apache-jmeter-2.8/0000775000175000017500000000000012165514773013435 5ustar ebourgebourgapache-jmeter-2.8/eclipse.classpath0000644000175000017500000001261712032647263016764 0ustar ebourgebourg apache-jmeter-2.8/LICENSE0000644000175000017500000042735212032647263014447 0ustar ebourgebourg Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ============================ End of Apache License file V 2.0 =================== Third party licenses ==================== BeanShell 2.0b5 ========= Licensed under The Sun Public License 1.0, http://java.sun.com/spl.html SUN PUBLIC LICENSE Version 1.0 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof and corresponding documentation released with the source code. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated documentation, interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1 The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters. (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface ("API") and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Sun Microsystems, Inc. ("Sun") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Sun. No one other than Sun has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must: (a) rename Your license so that the phrases "Sun," "Sun Public License," or "SPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Sun Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as ?Multiple-Licensed?. ?Multiple-Licensed? means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. Exhibit A -Sun Public License Notice. The contents of this file are subject to the Sun Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. A copy of the License is available at http://www.sun.com/ The Original Code is _________________. The Initial Developer of the Original Code is ___________. Portions created by ______ are Copyright (C)_________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the ?[___] License?), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the SPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the SPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] ################################################################################ HtmlParser & HtmlLexer v2.1 ====================== also JUnit v4.10 ===== http://opensource.org/licenses/cpl1.0.txt ========================================= Common Public License Version 1.0 Fri, 2007-06-01 17:16 - nelson THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. 1. DEFINITIONS "Contribution" means: a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and b) in the case of each subsequent Contributor: i) changes to the Program, and ii) additions to the Program; where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program. "Contributor" means any person or entity that distributes the Program. "Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. "Program" means the Contributions distributed in accordance with this Agreement. "Recipient" means anyone who receives the Program under this Agreement, including all Contributors. 2. GRANT OF RIGHTS a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form. b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 3. REQUIREMENTS A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that: a) it complies with the terms and conditions of this Agreement; and b) its license agreement: i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange. When the Program is made available in source code form: a) it must be made available under this Agreement; and b) a copy of this Agreement must be included with each copy of the Program. Contributors may not remove or alter any copyright notices contained within the Program. Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution. 4. COMMERCIAL DISTRIBUTION Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. 5. NO WARRANTY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. 6. DISCLAIMER OF LIABILITY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. GENERAL If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation. ################################################################################ jCharts v0.75 ======= jCharts License ---------------------------------------------------------------------------------------- * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved. * * Redistribution and use of this software and associated documentation * ("Software"), with or without modification, are permitted provided * that the following conditions are met: * * 1. Redistributions of source code must retain copyright * statements and notices. Redistributions must also contain a * copy of this document. * * 2. 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. * * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to * endorse or promote products derived from this Software without * prior written permission of Nathaniel G. Auvil. For written * permission, please contact nathaniel_auvil@users.sourceforge.net * * 4. Products derived from this Software may not be called "jCharts" * nor may "jCharts" appear in their names without prior written * permission of Nathaniel G. Auvil. jCharts is a registered * trademark of Nathaniel G. Auvil. * * 5. Due credit should be given to the jCharts Project * (http://jcharts.sourceforge.net/). * * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESSED 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 * jCharts OR ITS 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. ################################################################################ JDOM v1.1.2 ==== /*-- $Id: LICENSE.txt,v 1.11 2004/02/06 09:32:57 jhunter Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 JDOM AUTHORS OR THE PROJECT 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. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ ################################################################################ JTidy (r938) ===== Java HTML Tidy - JTidy HTML parser and pretty printer Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. Contributing Author(s): Dave Raggett Andy Quick (translation to Java) Gary L Peskin (Java development) Sami Lempinen (release management) The contributing author(s) would like to thank all those who helped with testing, bug fixes, and patience. This wouldn't have been possible without all of you. COPYRIGHT NOTICE: This software and documentation is provided "as is," and the copyright holders and contributing author(s) make no representations or warranties, express or implied, including but not limited to, warranties of merchantability or fitness for any particular purpose or that the use of the software or documentation will not infringe any third party patents, copyrights, trademarks or other rights. The copyright holders and contributing author(s) will not be liable for any direct, indirect, special or consequential damages arising out of any use of the software or documentation, even if advised of the possibility of such damage. Permission is hereby granted to use, copy, modify, and distribute this source code, or portions hereof, documentation and executables, for any purpose, without fee, subject to the following restrictions: 1. The origin of this source code must not be misrepresented. 2. Altered versions must be plainly marked as such and must not be misrepresented as being the original source. 3. This Copyright notice may not be removed or altered from any source or altered source distribution. The copyright holders and contributing author(s) specifically permit, without fee, and encourage the use of this source code as a component for supporting the Hypertext Markup Language in commercial products. If you use this source code in a product, acknowledgment is not required but would be appreciated. ################################################################################ Mozilla Rhino JavaScript v1.7R3 ======================== MPL 1.1 at http://www.mozilla.org/MPL/MPL-1.1.html MOZILLA PUBLIC LICENSE Version 1.1 --------------- 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. EXHIBIT A -Mozilla Public License. ``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is ______________________________________. The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] ################################################################################ XPP3 v1.1.4c ==== Indiana University Extreme! Lab Software License Version 1.1.1 Copyright (c) 2002 Extreme! Lab, Indiana University. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. 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. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Indiana University Extreme! Lab (http://www.extreme.indiana.edu/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Indiana Univeristy" and "Indiana Univeristy Extreme! Lab" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact http://www.extreme.indiana.edu/. 5. Products derived from this software may not use "Indiana Univeristy" name nor may "Indiana Univeristy" appear in their name, without prior written permission of the Indiana University. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED 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 AUTHORS, COPYRIGHT HOLDERS OR ITS 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. ################################################################################ XStream v1.4.2 ======= http://xstream.codehaus.org/license.html Copyright (c) 2003-2006, Joe Walnes Copyright (c) 2006-2007, XStream Committers All rights reserved. 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 name of XStream 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. ################################################################################ activation v1.1.1 ========== and mail v1.4.4 ==== JMeter includes the activation and mail jars under the CDDL license V1.0 Here follows the original dual license for the activation and mail jars: COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 1. Definitions. 1.1. Contributor. means each individual or entity that creates or contributes to the creation of Modifications. 1.2. Contributor Version. means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. 1.4. Executable. means the Covered Software in any form other than Source Code. 1.5. Initial Developer. means the individual or entity that first makes Original Software available under this License. 1.6. Larger Work. means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. 1.7. License. means this document. 1.8. Licensable. means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. Modifications. means the Source Code and Executable form of any of the following: A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; B. Any new file that contains any part of the Original Software or previous Modification; or C. Any new file that is contributed or otherwise made available under the terms of this License. 1.10. Original Software. means the Source Code and Executable form of computer software code that is originally released under this License. 1.11. Patent Claims. means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.12. Source Code. means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. 1.13. You. (or .Your.) means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, .You. includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, .control. means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants. 2.1. The Initial Developer Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. 2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Availability of Source Code. Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. 3.2. Modifications. The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. 3.3. Required Notices. You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. 3.4. Application of Additional Terms. You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients. rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.5. Distribution of Executable Versions. You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient.s rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.6. Larger Works. You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. 4. Versions of the License. 4.1. New Versions. Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. 4.2. Effect of New Versions. You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. 4.3. Modified Versions. When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. 5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 6. TERMINATION. 6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as .Participant.) alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. 7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 8. U.S. GOVERNMENT END USERS. The Covered Software is a commercial item,. as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as that term is defined at 48 C.F.R. º 252.227-7014(a)(1)) and .commercial computer software documentation. as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. 9. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction.s conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys. fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. 10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) The code released under the CDDL shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. The GNU General Public License (GPL) Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. One line to give the program's name and a brief idea of what it does. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. "CLASSPATH" EXCEPTION TO THE GPL VERSION 2 Certain source files distributed by Sun Microsystems, Inc. are subject to the following clarification and special exception to the GPL Version 2, but only where Sun has expressly included in the particular source file's header the words "Sun designates this particular file as subject to the "Classpath" exception as provided by Sun in the License file that accompanied this code." Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License Version 2 cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module.? An independent module is a module which is not derived from or based on this library.? If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so.? If you do not wish to do so, delete this exception statement from your version. ################################################################################ Open Icon Library Licenses ========================================= Open Icon Library from http://openiconlibrary.sourceforge.net/ Detailled Licenses information: http://openiconlibrary.sourceforge.net/LICENSES.html ============ Packages used by Apache JMeter ========= open_icon_library-devel-CC (Creative Commons and Public Domain only) open_icon_library-CC (Creative Commons and Public Domain only) List of licenses used in these packages: Creative Commons Attribution Creative Commons Attribution-Share Alike Public Domain ========Icons's sources used by Apache JMeter========== echo-icon-theme (echo) link: https://fedorahosted.org/echo-icon-theme/ license: CC-BY-SA 3.0 License link: http://creativecommons.org/licenses/by-sa/3.0/ formats: png subdirectories: open_icon_library-devel/icons/echo Oxygen Icons 4.3.1 (KDE) (oxygen) link: http://www.oxygen-icons.org/ license: Dual: CC-BY-SA 3.0 or LGPL License link: http://creativecommons.org/licenses/by-sa/3.0/ http://creativecommons.org/licenses/LGPL/2.1/ formats: svg, png subdirectory: open_icon_library-devel/icons/oxygen Tango Icon Library 0.8.90 (tango) link: http://tango.freedesktop.org/Tango_Icon_Library license: Public Domain License link: http://en.wikipedia.org/wiki/Public_domain formats: svg, png subdirectory: open_icon_library-devel/icons/tango ============== CC-BY-SA 3.0 License ============= http://creativecommons.org/licenses/by-sa/3.0/legalcode Creative Commons Attribution-ShareAlike 3.0 Unported License THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 1. Definitions a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License. c. "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License. d. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. e. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. f. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. g. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. h. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. i. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. j. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. k. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, d. to Distribute and Publicly Perform Adaptations. e. For the avoidance of doubt: i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested. b. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License. c. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. d. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. 5. Representations, Warranties and Disclaimer UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. Termination a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. 8. Miscellaneous a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. ################################################################################ apache-jmeter-2.8/README0000644000175000017500000001314512032647263014311 0ustar ebourgebourg A P A C H E J M E T E R What is it? ----------- Apache JMeter is a 100% pure Java application designed to test and measure performance. It may be used as a highly portable server benchmark as well as multiclient load generator. The Latest Version ------------------ Details of the latest version can be found on the Java Apache Project web site (http://jmeter.apache.org/). Requirements ------------ The following requirements exist for running Apache JMeter: o Java Interpreter: A fully compliant Java 1.5 (or later) Runtime Environment is required for Apache JMeter to execute. o Optional jars: Some jars are not included with JMeter. If required, these should be downloaded and placed in the lib directory JDBC - available from database supplier JMS - available from the JMS provider o Java Compiler [OPTIONAL]: A Java compiler is not needed since the distribution includes a precompiled java binary archive. Note that a compiler is required if you plan to build plugin classes for Apache JMeter. Installation Instructions ------------------------- Note that spaces in directory names can cause problems. - Release builds Unpack the binary archive into a suitable directory structure. - Nightly builds Unpack BOTH the _bin and _lib archives into the SAME directory structure Running JMeter -------------- Change to the bin directory and run the jmeter (Un*x) or jmeter.bat (Windows) file. For Windows (2K, XP etc), there are also some other scripts: jmeter-n.cmd - drop a JMX file on this and it will run it as a non-GUI test jmeter-n-r.cmd - drop a JMX file on this and it will run it as a non-GUI remote (client-server) test jmeter-t.cmd - drop a JMX file on this and it will open the file for running a GUI test Documentation ------------- The documentation available as of the date of this release is also included, in HTML format, in the printable_docs/ directory, and it may be browsed starting from the file called index.html. Build instructions ------------------ - Release builds Unpack the source archive into a suitable directory structure. Most of the 3rd party library files can be extracted from the binary archive by unpacking it into the same directory structure. You can use Ant to download any missing files: ant download_jars - Nightly builds Unpack the _src, _bin and _lib archives into the same directory structure. Please note: To avoid unnecessary duplication, the nightly source archives do not contain the source files which are needed to run JMeter (for example properties files and scripts). Any optional jars (see above) should be placed in lib/opt and/or lib. Jars in lib/opt will be used for building JMeter and running the unit test, but won't be used at run-time. [This is useful for testing what happens if the optional jars are not downloaded by other JMeter users]. JMeter is built using Ant. Change to the top-level directory and issue the command: ant download_jars ! only needs to be done once; will download any missing 3rd party jars ant This will compile the application and enable you to run jmeter from the bin directory. ant test [-Djava.awt.headless=true] This will compile and run the unit tests. The optional property definition is required if the system does not have a suitable GUI display. Licensing and legal issues -------------------------- For legal and licensing issues, please look the files: LICENSE NOTICE This project includes HTMLParser. For detailed information about HTMLParser, the project is hosted on Sourceforge at http://htmlparser.sourceforge.net/ The developers of Apache JMeter are grateful to the developers of HTMLParser for re-releasing htmlparser under CPL V1.0 HTMLParser was originally created by Somik Raha in 2000. Derrick Oswald is the current lead developer and was kind enough to assist JMeter. Cryptographic Software Notice ----------------------------- This distribution may include software that has been designed for use with cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See for more information. The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code. The following provides more details on the included software that may be subject to export controls on cryptographic software: Apache JMeter interfaces with the Java Secure Socket Extension (JSSE) API to provide - HTTPS support Apache JMeter interfaces (via Apache HttpClient3) with the Java Cryptography Extension (JCE) API to provide - NTLM authentication Apache JMeter does not include any implementation of JSSE or JCE. Thank you for using Apache JMeter.apache-jmeter-2.8/res/0000755000175000017500000000000012032647261014214 5ustar ebourgebourgapache-jmeter-2.8/res/maven/0000755000175000017500000000000012165514773015332 5ustar ebourgebourgapache-jmeter-2.8/res/maven/ApacheJMeter_ftp.pom0000644000175000017500000000370312032647261021203 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_ftp Apache JMeter FTP org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_java.pom0000644000175000017500000000370512032647261021335 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_java Apache JMeter Java org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_junit-test.pom0000644000175000017500000000254012032647261022516 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_junit-test Apache JMeter JUnit sample test classes apache-jmeter-2.8/res/maven/ApacheJMeter_mail.pom0000644000175000017500000000363412032647261021337 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter_mail Apache JMeter Mail org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_components.pom0000644000175000017500000000340212032647261022573 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_components Apache JMeter Components org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_report.pom0000644000175000017500000000364712032647261021734 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter_report Apache JMeter Report plugin org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_native.pom0000644000175000017500000000371112032647261021677 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_native Apache JMeter Native org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_monitors.pom0000644000175000017500000000415412032647261022265 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter_monitors Apache JMeter Monitor org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_http @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_tcp.pom0000644000175000017500000000363212032647261021201 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter_tcp Apache JMeter TCP org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_http.pom0000644000175000017500000000370512032647261021373 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_http Apache JMeter HTTP org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_core.pom0000644000175000017500000000305512032647261021342 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_core Apache JMeter Core org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_jdbc.pom0000644000175000017500000000370512032647261021316 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_jdbc Apache JMeter JDBC org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_ldap.pom0000644000175000017500000000363412032647261021335 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter_ldap Apache JMeter LDAP org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_config.pom0000644000175000017500000000252112032647261021654 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_config Apache JMeter Configuration apache-jmeter-2.8/res/maven/ApacheJMeter_parent.pom0000644000175000017500000003121212032647261021677 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ Apache JMeter parent pom Apache JMeter is open source software, a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. http://jmeter.apache.org/ 1998 Apache 2 http://www.apache.org/licenses/LICENSE-2.0.txt repo A business-friendly OSS license bugzilla https://issues.apache.org/bugzilla/describecomponents.cgi?product=JMeter http://svn.apache.org/repos/asf/jmeter/trunk/ https://svn.apache.org/repos/asf/jmeter/trunk/ http://svn.apache.org/viewvc/jmeter/trunk/ 2.4.0 3.1 4.1.4 2.0b5 1.45 1.45 1.6 3.2.1 3.1 2.2 1.1 2.1.1 3.1 1.1.1 3.1 1.1.1 1.0 1.1 1.2 2.1 4.2 4.2.2 2.0.8 0.7.5 1.1.2 1.7R3 4.10 2.0 2.3.1 r938 1.1.3.1 1.4.2 1.1.4c 2.7.1 2.7.1 2.9.1 1.3.04 1.3.1 1.1.1 1.4.4 1.1.1 1.7 bsf bsf ${apache-bsf.version} org.apache.bsf bsf-api ${apache-jsr223-api.version} avalon-framework avalon-framework ${avalon-framework.version} org.beanshell bsh ${beanshell.version} org.bouncycastle bcmail-jdk15 ${bcmail.version} org.bouncycastle bcprov-jdk15 ${bcprov.version} commons-codec commons-codec ${commons-codec.version} commons-collections commons-collections ${commons-collections.version} commons-httpclient commons-httpclient ${commons-httpclient.version} commons-io commons-io ${commons-io.version} commons-jexl commons-jexl ${commons-jexl.version} org.apache.commons commons-jexl ${commons-jexl2.version} org.apache.commons commons-lang3 ${commons-lang3.version} commons-logging commons-logging ${commons-logging.version} commons-net commons-net ${commons-net.version} excalibur-datasource excalibur-datasource ${excalibur-datasource.version} excalibur-instrument excalibur-instrument ${excalibur-instrument.version} excalibur-logger excalibur-logger ${excalibur-logger.version} excalibur-pool excalibur-pool ${excalibur-pool.version} org.htmlparser htmllexer ${htmlparser.version} org.htmlparser htmlparser ${htmlparser.version} org.apache.httpcomponents httpclient ${httpclient.version} org.apache.httpcomponents httpmime ${httpclient.version} org.apache.httpcomponents httpcore ${httpcore.version} oro oro ${jakarta-oro.version} jcharts jcharts 0.7.5 org.jdom jdom ${jdom.version} jaxen jaxen org.mozilla rhino ${js_rhino.version} junit junit ${junit.version} logkit logkit ${logkit.version} soap soap ${soap.version} net.sf.jtidy jtidy ${tidy.version} com.thoughtworks.xstream xstream ${xstream.version} xmlpull xmlpull ${xmlpull.version} xpp3 xpp3_min ${xpp3.version} xalan xalan ${xalan.version} xalan serializer ${serializer.version} xerces xercesImpl ${xerces.version} xml-apis xml-apis ${xml-apis.version} org.apache.xmlgraphics xmlgraphics-commons ${xmlgraphics-commons.version} javax.activation activation ${activation.version} javax.mail mail ${javamail.version} org.apache.geronimo.specs geronimo-jms_1.1_spec ${jms.version} JBoss https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/ apache-jmeter-2.8/res/maven/ApacheJMeter.pom0000644000175000017500000000243212032647261020330 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter Apache JMeter launcher apache-jmeter-2.8/res/maven/ApacheJMeter_junit.pom0000644000175000017500000000331712032647261021544 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . ApacheJMeter_junit Apache JMeter jUnit org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/jorphan.pom0000644000175000017500000000256412032647261017507 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ Apache JMeter jorphan library apache-jmeter-2.8/res/maven/ApacheJMeter_functions.pom0000644000175000017500000000340012032647261022414 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_functions Apache JMeter Functions org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/maven/ApacheJMeter_jms.pom0000644000175000017500000000370312032647261021203 0ustar ebourgebourg 4.0.0 org.apache.jmeter ApacheJMeter_parent @MAVEN.DEPLOY.VERSION@ . org.apache.jmeter ApacheJMeter_jms Apache JMeter JMS org.apache.jmeter jorphan @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_core @MAVEN.DEPLOY.VERSION@ org.apache.jmeter ApacheJMeter_components @MAVEN.DEPLOY.VERSION@ apache-jmeter-2.8/res/META-INF/0000755000175000017500000000000012165514773015364 5ustar ebourgebourgapache-jmeter-2.8/res/META-INF/default.notice0000644000175000017500000000025112032647261020201 0ustar ebourgebourgApache Tomcat Copyright 1999-@YEAR@ The Apache Software Foundation This product includes software developed by The Apache Software Foundation (http://www.apache.org/). apache-jmeter-2.8/res/META-INF/default.license0000644000175000017500000002613612032647261020354 0ustar ebourgebourg Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. apache-jmeter-2.8/checkstyle.xml0000644000175000017500000000640212032647263016307 0ustar ebourgebourg apache-jmeter-2.8/bin/0000775000175000017500000000000012165514773014205 5ustar ebourgebourgapache-jmeter-2.8/bin/log4j.conf0000644000175000017500000000334412032647263016067 0ustar ebourgebourg ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # Set appender specific options log4j.appender.Root_Appender=org.apache.log4j.RollingFileAppender log4j.appender.Root_Appender.File=root.log log4j.appender.Root_Appender.Append=true log4j.appender.Root_Appender.MaxBackupIndex=0 log4j.appender.Root_Appender.layout=org.apache.log4j.PatternLayout log4j.appender.Root_Appender.layout.ConversionPattern=%-5p %d{MM/dd, hh:mm:ss} %-20.30c %m%n log4j.appender.File_Appender=org.apache.log4j.RollingFileAppender log4j.appender.File_Appender.File=extra.log log4j.appender.File_Appender.Append=false log4j.appender.File_Appender.layout=org.apache.log4j.PatternLayout log4j.appender.File_Appender.layout.ConversionPattern=%r %d{MM/dd, hh:mm:ss} %-5p %-50.50c %m%n log4j.appender.SystemOut_Appender=org.apache.log4j.ConsoleAppender log4j.appender.SystemOut_Appender.layout=org.apache.log4j.SimpleLayout # Set the appenders for the categories log4j.rootCategory=INFO,Root_Appender #log4j.configDebugapache-jmeter-2.8/bin/shutdown.cmd0000644000175000017500000000210112032647263016527 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem Run the Shutdown client to stop a non-GUI instance gracefully rem P1 = command port for JMeter instance (defaults to 4445) java -cp %~dp0ApacheJMeter.jar org.apache.jmeter.util.ShutdownClient Shutdown %* pause apache-jmeter-2.8/bin/mirror-server.cmd0000644000175000017500000000234512032647263017504 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem Run the JMeter mirror server in non-GUI mode rem P1 = port to use (default 8080) setlocal cd /D %~dp0 set CP=..\lib\ext\ApacheJMeter_http.jar;..\lib\ext\ApacheJMeter_core.jar;..\lib\jorphan.jar set CP=%CP%;..\lib\logkit-2.0.jar;..\lib\avalon-framework-4.1.4.jar;..\lib\oro-2.0.8.jar java -cp %CP% org.apache.jmeter.protocol.http.control.HttpMirrorServer %1 pause apache-jmeter-2.8/bin/BeanShellListeners.bshrc0000644000175000017500000000224212032647263020746 0ustar ebourgebourg// Example BeanShell Listener definitions /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // ThreadListener methods threadStarted(){ print("threadStarted"); } threadFinished(){ print("threadFinished"); } // TestListener methods testStarted(){ print("testStarted"); } testEnded(){ print("testEnded"); } testStarted(String s){ print("testStarted "+s); } testEnded(String s){ print("testEnded "+s); }apache-jmeter-2.8/bin/mirror-server.sh0000644000175000017500000000224012032647263017345 0ustar ebourgebourg#!/bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # Run the JMeter mirror server in non-GUI mode # P1 = port to use (default 8080) cd `dirname $0` CP=../lib/ext/ApacheJMeter_http.jar:../lib/ext/ApacheJMeter_core.jar:../lib/jorphan.jar CP=${CP}:../lib/logkit-2.0.jar:../lib/avalon-framework-4.1.4.jar:../lib/oro-2.0.8.jar java -cp $CP org.apache.jmeter.protocol.http.control.HttpMirrorServer $1 apache-jmeter-2.8/bin/heapdump.cmd0000644000175000017500000000205712032647263016471 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem Ask the JMeter client to perform a HeapDump rem P1 = command port for JMeter instance (defaults to 4445) java -cp %~dp0ApacheJMeter.jar org.apache.jmeter.util.ShutdownClient HeapDump %* pause apache-jmeter-2.8/bin/jmeter-n-r.cmd0000644000175000017500000000352212032647263016644 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem ============================================ rem Non-GUI version of JMETER.BAT (WinNT/2K only) rem rem Drop a JMX file on this batch script, and it rem will run it in non-GUI mode, with a log file rem formed from the input file name but with the rem extension .jtl rem rem Only the first parameter is used. rem Only works for Win2k. rem rem ============================================ if "%OS%"=="Windows_NT" goto WinNT echo "Sorry, this command file requires Windows NT/ 2000 / XP" pause goto END :WinNT rem Check file is supplied if a == a%1 goto winNT2 rem Allow special name LAST if LAST == %1 goto winNT3 rem Check it has extension .jmx if "%~x1" == ".jmx" goto winNT3 :winNT2 echo Please supply a script name with the extension .jmx pause goto END :winNT3 rem Change to script directory pushd %~dp1 rem use same directory to find jmeter script call "%~dp0"jmeter -n -t "%~nx1" -j "%~n1.log" -l "%~n1.jtl" -r %2 %3 %4 %5 %6 %7 %8 %9 popd :ENDapache-jmeter-2.8/bin/jmeter-t.cmd0000644000175000017500000000332612032647263016415 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem ============================================ rem rem Drop a JMX file on this batch script, and it rem will load it in the GUI. rem rem Only the first parameter is used. rem Only works for Win2k. rem rem ============================================ if "%OS%"=="Windows_NT" goto WinNT echo "Sorry, this command file requires Windows NT/ 2000 / XP" pause goto END :WinNT rem Check file is supplied if a == a%1 goto winNT2 rem Allow special name LAST if LAST == %1 goto winNT3 rem Check it has extension .jmx if "%~x1" == ".jmx" goto winNT3 :winNT2 echo Please supply a script name with the extension .jmx pause goto END :winNT3 rem Start in directory with JMX file pushd %~dp1 rem Prepend the directory in which this script resides in case not on path call "%~dp0"jmeter -j "%~n1.log" -t "%~nx1" %2 %3 %4 %5 %6 %7 %8 %9 popd :ENDapache-jmeter-2.8/bin/jmeter-server0000644000175000017500000000251612032647263016716 0ustar ebourgebourg#!/bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## To change the RMI/Server port: ## ## SERVER_PORT=1234 jmeter-server ## DIRNAME=`dirname $0` # If the client fails with: # ERROR - jmeter.engine.ClientJMeterEngine: java.rmi.ConnectException: Connection refused to host: 127.0.0.1 # then it may be due to the server host returning 127.0.0.1 as its address # One way to fix this is to define RMI_HOST_DEF below #RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx ${DIRNAME}/jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log "$@" apache-jmeter-2.8/bin/stoptest.cmd0000644000175000017500000000210212032647263016542 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem Run the Shutdown client to stop a non-GUI instance abruptly rem P1 = command port for JMeter instance (defaults to 4445) java -cp %~dp0ApacheJMeter.jar org.apache.jmeter.util.ShutdownClient StopTestNow %* pause apache-jmeter-2.8/bin/proxyserver.jks0000644000175000017500000000245412032647263017323 0ustar ebourgebourgþíþíjmeter"ìºP6»0‚·0 +*‚£>i áU%e}h>øº‰@€êv+A¬U¦0`HgƒÞpžˆ‚_]’7†qÁãXJÈ<†!+$ug6—zdÉbZ°QÌKÜ'÷þ#Á„Éè÷A¼Ò Á+ÝN’O’m¢0S)ÓB.:€9ŠÏÚ× í m‰jÛÿÐL·Á ;,j:¦P0?Äëô0ˆ\ u˜eô˦ Ë”ÀLï=ˆöjÏ Ø'öXo^ãÐͯ#,OëP2Ýs.·çkBµ~ê;5ø˜!ÏM!›-˜²?•Š“Á6pæÎÕ×Åh,ID^;¯³Q:je'=|_1M–neÍaG1ã4ÿƵSBÒRuí$§_‡vE籩C£íeË´—î¡uø$¾°˜‘Ckl•l¨[“_UAm¿ÒÈa b´ß¹/;‰+¹zß­ì*õÖ§[s!ÎLKS‰J51)`ëèf), ¦ú5Ÿ)—Ǫ8ßÄxÞ1åLþ»VÏÌEÃF€é–Û@ϱD]p­ѧ÷ á‡òÇVÓùi‰øÈjÙ«yø'š ßW¹‡DQ¦¡›7ѧ€ÙS®7p¿Ú‰”êWÄ…EöÎßP*[·˜…Úß|±ˆB:XÑÒbòòÅe!àvŠMdeêÛà•È4ÞòìøðÈ€ Ž9O|E2+ØÑŠF±wMxFÊZ"˜ØÚØt¬Ð]…·˜àÒÊ|/«§Nª1p ¹ÌðfµÈ®d–=37”8n¥GùVäa6>Ú” #É]åÀÈt~Y?ö Œ˜•wT¼ NFFÙ”èd– òï9 =Í;È22¹Æ¨+G©ÎóÎrÜ„ìd)oM4u^ Ý %ñ¤’¸"Ÿ:e»N‹õ:PíFþò‘àX.509*0‚&0‚Jz Õ0  *†H†÷ 0Z1 0 UUS1#0!U Apache Software Foundation10 U JMeter10U JMeter Proxy0 090805224229Z 140804224229Z0Z1 0 UUS1#0!U Apache Software Foundation10 U JMeter10U JMeter Proxy0Ÿ0  *†H†÷ 0‰®Ê÷u>ï _cÍN¿ý½µrèñ«§¦Ë0fwÇÛßÚÁÑØâj•qÉ¥Yݸq;µü~öe=rCæ3ÊÏ,Žÿξ²þÌ ê‚¥Ðö2Q.ÿu‡?帠™;ì`ëMLookAndFeelClassName() # LAF can be overridden by os.name (lowercased, spaces replaced by '_') # Sample os.name LAF: #jmeter.laf.windows_xp=javax.swing.plaf.metal.MetalLookAndFeel # Failing that, the OS family = os.name, but only up to first space: # Sample OS family LAF: #jmeter.laf.windows=com.sun.java.swing.plaf.windows.WindowsLookAndFeel # Mac apparently looks better with the System LAF jmeter.laf.mac=System # Failing that, the JMeter default laf can be defined: #jmeter.laf=System # If none of the above jmeter.laf properties are defined, JMeter uses the CrossPlatform LAF. # This is because the CrossPlatform LAF generally looks better than the System LAF. # See https://issues.apache.org/bugzilla/show_bug.cgi?id=52026 for details # N.B. the laf can be defined in user.properties. # LoggerPanel display # default to false #jmeter.loggerpanel.display=false # Error/Fatal Log count display # defaults to true #jmeter.errorscounter.display=true # Max characters kept in LoggerPanel, default to 80000 chars # O means no limit #jmeter.loggerpanel.maxlength=80000 # Toolbar display # default: #jmeter.toolbar.display=true # Toolbar icon definitions #jmeter.toolbar.icons=org/apache/jmeter/images/toolbar/icons-toolbar.properties # Toolbar list #jmeter.toolbar=new,open,close,save,save_as_testplan,|,cut,copy,paste,|,expand,collapse,toggle,|,test_start,test_stop,test_shutdown,|,test_start_remote_all,test_stop_remote_all,test_shutdown_remote_all,|,test_clear,test_clear_all,|,search,search_reset,|,function_helper,help # Icon definitions # default: #jmeter.icons=org/apache/jmeter/images/icon.properties # alternate: #jmeter.icons=org/apache/jmeter/images/icon_1.properties #Components to not display in JMeter GUI (GUI class name or static label) # These elements are deprecated: HTML Parameter Mask,HTTP User Parameter Modifier not_in_menu=HTML Parameter Mask,HTTP User Parameter Modifier #--------------------------------------------------------------------------- # Remote hosts and RMI configuration #--------------------------------------------------------------------------- # Remote Hosts - comma delimited remote_hosts=127.0.0.1 #remote_hosts=localhost:1099,localhost:2010 # RMI port to be used by the server (must start rmiregistry with same port) #server_port=1099 # To change the port to (say) 1234: # On the server(s) # - set server_port=1234 # - start rmiregistry with port 1234 # On Windows this can be done by: # SET SERVER_PORT=1234 # JMETER-SERVER # # On Unix: # SERVER_PORT=1234 jmeter-server # # On the client: # - set remote_hosts=server:1234 # Parameter that controls the RMI port used by the RemoteSampleListenerImpl # Default value is 0 which means port is randomly assigned #client.rmi.localport=0 # To change the default port (1099) used to access the server: #server.rmi.port=1234 # To use a specific port for the JMeter server engine, define # the following property before starting the server: #server.rmi.localport=4000 # From JMeter 2.3.1, the jmeter server creates the RMI registry as part of the server process. # To stop the server creating the RMI registry: #server.rmi.create=false # From JMeter 2.3.1, define the following property to cause JMeter to exit after the first test #server.exitaftertest=true #--------------------------------------------------------------------------- # Logging Configuration #--------------------------------------------------------------------------- # Note: JMeter uses Avalon (Excalibur) LogKit # Logging Format # see http://excalibur.apache.org/apidocs/org/apache/log/format/PatternFormatter.html # # Default format: #log_format=%{time:yyyy/MM/dd HH:mm:ss} %5.5{priority} - %{category}: %{message} %{throwable} # \n is automatically added to the end of the string # # Predefined formats in the JMeter LoggingManager: #log_format_type=default #log_format_type=thread_prefix #log_format_type=thread_suffix # default is as above # thread_prefix adds the thread name as a prefix to the category # thread_suffix adds the thread name as a suffix to the category # Note that thread name is not included by default, as it requires extra processing. # # To change the logging format, define either log_format_type or log_format # If both are defined, the type takes precedence # Note that these properties cannot be defined using the -J or -D JMeter # command-line flags, as the format will have already been determined by then # However, they can be defined as JVM properties #Logging levels for the logging categories in JMeter. Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG # To set the log level for a package or individual class, use: # log_level.[package_name].[classname]=[PRIORITY_LEVEL] # But omit "org.apache" from the package name. The classname is optional. Further examples below. log_level.jmeter=INFO log_level.jmeter.junit=DEBUG #log_level.jmeter.control=DEBUG #log_level.jmeter.testbeans=DEBUG #log_level.jmeter.engine=DEBUG #log_level.jmeter.threads=DEBUG #log_level.jmeter.gui=WARN #log_level.jmeter.testelement=DEBUG #log_level.jmeter.util=WARN #log_level.jmeter.util.classfinder=WARN #log_level.jmeter.test=DEBUG #log_level.jmeter.protocol.http=DEBUG # For CookieManager, AuthManager etc: #log_level.jmeter.protocol.http.control=DEBUG #log_level.jmeter.protocol.ftp=WARN #log_level.jmeter.protocol.jdbc=DEBUG #log_level.jmeter.protocol.java=WARN #log_level.jmeter.testelements.property=DEBUG log_level.jorphan=INFO #Log file for log messages. # You can specify a different log file for different categories via: # log_file.[category]=[filename] # category is equivalent to the package/class names described above # Combined log file (for jmeter and jorphan) #log_file=jmeter.log # To redirect logging to standard output, try the following: # (it will probably report an error, but output will be to stdout) #log_file= # Or define separate logs if required: #log_file.jorphan=jorphan.log #log_file.jmeter=jmeter.log # If the filename contains paired single-quotes, then the name is processed # as a SimpleDateFormat format applied to the current date, for example: #log_file='jmeter_'yyyyMMddHHmmss'.tmp' # N.B. When JMeter starts, it sets the system property: # org.apache.commons.logging.Log # to # org.apache.commons.logging.impl.LogKitLogger # if not already set. This causes Apache and Commons HttpClient to use the same logging as JMeter # Further logging configuration # Excalibur logging provides the facility to configure logging using # configuration files written in XML. This allows for such features as # log file rotation which are not supported directly by JMeter. # # If such a file specified, it will be applied to the current logging # hierarchy when that has been created. # #log_config=logkit.xml #--------------------------------------------------------------------------- # HTTP Java configuration #--------------------------------------------------------------------------- # Number of connection retries performed by HTTP Java sampler before giving up #http.java.sampler.retries=10 # 0 now means don't retry connection (in 2.3 and before it meant no tries at all!) #--------------------------------------------------------------------------- # Commons HTTPClient configuration #--------------------------------------------------------------------------- # define a properties file for overriding Commons HttpClient parameters # See: http://hc.apache.org/httpclient-3.x/preference-api.html #httpclient.parameters.file=httpclient.parameters # define a properties file for overriding Apache HttpClient parameters # See: TBA #hc.parameters.file=hc.parameters # Following properties apply to both Commons and Apache HttpClient # set the socket timeout (or use the parameter http.socket.timeout) # Value is in milliseconds #httpclient.timeout=0 # 0 == no timeout # Set the http version (defaults to 1.1) #httpclient.version=1.0 (or use the parameter http.protocol.version) # Define characters per second > 0 to emulate slow connections #httpclient.socket.http.cps=0 #httpclient.socket.https.cps=0 #Enable loopback protocol #httpclient.loopback=true # Define the local host address to be used for multi-homed hosts #httpclient.localaddress=1.2.3.4 # Sample logging levels for Commons HttpClient # # Commons HttpClient Logging information can be found at: # http://hc.apache.org/httpclient-3.x/logging.html # Note that full category names are used, i.e. must include the org.apache. # Info level produces no output: #log_level.org.apache.commons.httpclient=debug # Might be useful: #log_level.org.apache.commons.httpclient.Authenticator=trace # Show headers only #log_level.httpclient.wire.header=debug # Full wire debug produces a lot of output; consider using separate file: #log_level.httpclient.wire=debug #log_file.httpclient=httpclient.log # Apache Commons HttpClient logging examples # # Enable header wire + context logging - Best for Debugging #log_level.org.apache.http=DEBUG #log_level.org.apache.http.wire=ERROR # Enable full wire + context logging #log_level.org.apache.http=DEBUG # Enable context logging for connection management #log_level.org.apache.http.impl.conn=DEBUG # Enable context logging for connection management / request execution #log_level.org.apache.http.impl.conn=DEBUG #log_level.org.apache.http.impl.client=DEBUG #log_level.org.apache.http.client=DEBUG #--------------------------------------------------------------------------- # Apache HttpComponents HTTPClient configuration (HTTPClient4) #--------------------------------------------------------------------------- # Number of retries to attempt (default 1) #httpclient4.retrycount=1 # Number of retries to attempt (default 1) #httpclient3.retrycount=1 #--------------------------------------------------------------------------- # Results file configuration #--------------------------------------------------------------------------- # This section helps determine how result data will be saved. # The commented out values are the defaults. # legitimate values: xml, csv, db. Only xml and csv are currently supported. #jmeter.save.saveservice.output_format=xml # true when field should be saved; false otherwise # assertion_results_failure_message only affects CSV output #jmeter.save.saveservice.assertion_results_failure_message=false # # legitimate values: none, first, all #jmeter.save.saveservice.assertion_results=none # #jmeter.save.saveservice.data_type=true #jmeter.save.saveservice.label=true #jmeter.save.saveservice.response_code=true # response_data is not currently supported for CSV output #jmeter.save.saveservice.response_data=false # Save ResponseData for failed samples #jmeter.save.saveservice.response_data.on_error=false #jmeter.save.saveservice.response_message=true #jmeter.save.saveservice.successful=true #jmeter.save.saveservice.thread_name=true #jmeter.save.saveservice.time=true #jmeter.save.saveservice.subresults=true #jmeter.save.saveservice.assertions=true #jmeter.save.saveservice.latency=true #jmeter.save.saveservice.samplerData=false #jmeter.save.saveservice.responseHeaders=false #jmeter.save.saveservice.requestHeaders=false #jmeter.save.saveservice.encoding=false #jmeter.save.saveservice.bytes=true #jmeter.save.saveservice.url=false #jmeter.save.saveservice.filename=false #jmeter.save.saveservice.hostname=false #jmeter.save.saveservice.thread_counts=false #jmeter.save.saveservice.sample_count=false #jmeter.save.saveservice.idle_time=false # Timestamp format - this only affects CSV output files # legitimate values: none, ms, or a format suitable for SimpleDateFormat #jmeter.save.saveservice.timestamp_format=ms #jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS # For use with Comma-separated value (CSV) files or other formats # where the fields' values are separated by specified delimiters. # Default: #jmeter.save.saveservice.default_delimiter=, # For TAB, since JMeter 2.3 one can use: #jmeter.save.saveservice.default_delimiter=\t # Only applies to CSV format files: #jmeter.save.saveservice.print_field_names=false # Optional list of JMeter variable names whose values are to be saved in the result data files. # Use commas to separate the names. For example: #sample_variables=SESSION_ID,REFERENCE # N.B. The current implementation saves the values in XML as attributes, # so the names must be valid XML names. # Versions of JMeter after 2.3.2 send the variable to all servers # to ensure that the correct data is available at the client. # Optional xml processing instruction for line 2 of the file: #jmeter.save.saveservice.xml_pi= # Prefix used to identify filenames that are relative to the current base #jmeter.save.saveservice.base_prefix=~/ #--------------------------------------------------------------------------- # Settings that affect SampleResults #--------------------------------------------------------------------------- # Save the start time stamp instead of the end # This also affects the timestamp stored in result files sampleresult.timestamp.start=true # Whether to use System.nanoTime() - otherwise only use System.currentTimeMillis() #sampleresult.useNanoTime=true # Use a background thread to calculate the nanoTime offset # Set this to <= 0 to disable the background thread #sampleresult.nanoThreadSleep=5000 #--------------------------------------------------------------------------- # Upgrade property #--------------------------------------------------------------------------- # File that holds a record of name changes for backward compatibility issues upgrade_properties=/bin/upgrade.properties #--------------------------------------------------------------------------- # JMeter Proxy recorder configuration #--------------------------------------------------------------------------- # If the proxy detects a gap of at least 1s (default) between HTTP requests, # it assumes that the user has clicked a new URL #proxy.pause=1000 # Add numeric prefix to Sampler names (default false) #proxy.number.requests=true # Change the default HTTP Sampler (currently HttpClient4) # Java: #jmeter.httpsampler=HTTPSampler #or #jmeter.httpsampler=Java # # Apache HTTPClient: #jmeter.httpsampler=HTTPSampler2 #or #jmeter.httpsampler=HttpClient3.1 # # HttpClient4.x #jmeter.httpsampler=HttpClient4 # Default content-type include filter to use #proxy.content_type_include=text/html|text/plain|text/xml # Default content-type exclude filter to use #proxy.content_type_exclude=image/.*|text/css|application/.* # Default headers to remove from Header Manager elements # (Cookie and Authorization are always removed) #proxy.headers.remove=If-Modified-Since,If-None-Match,Host # Binary content-type handling # These content-types will be handled by saving the request in a file: #proxy.binary.types=application/x-amf,application/x-java-serialized-object # The files will be saved in this directory: #proxy.binary.directory=user.dir # The files will be created with this file filesuffix: #proxy.binary.filesuffix=.binary #--------------------------------------------------------------------------- # JMeter Proxy configuration #--------------------------------------------------------------------------- # use command-line flags for user-name and password #http.proxyDomain=NTLM domain, if required by HTTPClient sampler # SSL configuration #proxy.cert.directory=. #proxy.cert.file=proxyserver.jks #proxy.cert.type=JKS #proxy.cert.keystorepass=password #proxy.cert.keypassword=password #proxy.cert.factory=SunX509 #proxy.ssl.protocol=SSLv3 #--------------------------------------------------------------------------- # HTTPSampleResponse Parser configuration #--------------------------------------------------------------------------- # Space-separated list of parser groups HTTPResponse.parsers=htmlParser wmlParser # for each parser, there should be a parser.types and a parser.className property #--------------------------------------------------------------------------- # HTML Parser configuration #--------------------------------------------------------------------------- # Define the HTML parser to be used. # Default parser: #htmlParser.className=org.apache.jmeter.protocol.http.parser.HtmlParserHTMLParser # Other parsers: #htmlParser.className=org.apache.jmeter.protocol.http.parser.JTidyHTMLParser #htmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser # htmlParser.types=text/html application/xhtml+xml application/xml text/xml #--------------------------------------------------------------------------- # WML Parser configuration #--------------------------------------------------------------------------- wmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser wmlParser.types=text/vnd.wap.wml #--------------------------------------------------------------------------- # Remote batching configuration #--------------------------------------------------------------------------- # How is Sample sender implementations configured: # - true (default) means client configuration will be used # - false means server configuration will be used #sample_sender_client_configured=true # Remote batching support # default is Standard, which returns each sample synchronously # Hold retains samples until end of test (may need lots of memory) # Batch returns samples in batches # Statistical returns sample summary statistics # hold_samples was originally defined as a separate property, # but can now also be defined using mode=Hold # mode can also be the class name of an implementation of org.apache.jmeter.samplers.SampleSender #mode=Standard #mode=Batch #mode=Hold #mode=Statistical #Set to true to key statistical samples on threadName rather than threadGroup #key_on_threadname=false #mode=Stripped #mode=StrippedBatch #mode=org.example.load.MySampleSender #hold_samples=true # #num_sample_threshold=100 # Value is in milliseconds #time_threshold=60000 # # Asynchronous sender; uses a queue and background worker process to return the samples #mode=Asynch # default queue size #asynch.batch.queue.size=100 # # DiskStore: as for Hold mode, but serialises the samples to disk, rather than saving in memory #mode=DiskStore # Note: the mode is currently resolved on the client; # other properties (e.g. time_threshold) are resolved on the server. # To set the Monitor Health Visualiser buffer size, enter the desired value # monitor.buffer.size=800 #--------------------------------------------------------------------------- # TCP Sampler configuration #--------------------------------------------------------------------------- # The default handler class #tcp.handler=TCPClientImpl # # eolByte = byte value for end of line # set this to a value outside the range -128 to +127 to skip eol checking #tcp.eolByte=1000 # # TCP Charset, used by org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl # default to Platform defaults charset as returned by Charset.defaultCharset().name() #tcp.charset= # # status.prefix and suffix = strings that enclose the status response code #tcp.status.prefix=Status= #tcp.status.suffix=. # # status.properties = property file to convert codes to messages #tcp.status.properties=mytestfiles/tcpstatus.properties # The length prefix used by LengthPrefixedBinaryTCPClientImpl implementation # defaults to 2 bytes. #tcp.binarylength.prefix.length=2 #--------------------------------------------------------------------------- # Summariser - Generate Summary Results - configuration (mainly applies to non-GUI mode) #--------------------------------------------------------------------------- # # Define the following property to automatically start a summariser with that name # (applies to non-GUI mode only) #summariser.name=summary # # interval between summaries (in seconds) default 3 minutes #summariser.interval=180 # # Write messages to log file #summariser.log=true # # Write messages to System.out #summariser.out=true #--------------------------------------------------------------------------- # BeanShell configuration #--------------------------------------------------------------------------- # BeanShell Server properties # # Define the port number as non-zero to start the http server on that port #beanshell.server.port=9000 # The telnet server will be started on the next port # # Define the server initialisation file beanshell.server.file=../extras/startup.bsh # # Define a file to be processed at startup # This is processed using its own interpreter. #beanshell.init.file= # # Define the intialisation files for BeanShell Sampler, Function and other BeanShell elements # N.B. Beanshell test elements do not share interpreters. # Each element in each thread has its own interpreter. # This is retained between samples. #beanshell.sampler.init=BeanShellSampler.bshrc #beanshell.function.init=BeanShellFunction.bshrc #beanshell.assertion.init=BeanShellAssertion.bshrc #beanshell.listener.init=etc #beanshell.postprocessor.init=etc #beanshell.preprocessor.init=etc #beanshell.timer.init=etc # The file BeanShellListeners.bshrc contains sample definitions # of Test and Thread Listeners. #--------------------------------------------------------------------------- # MailerModel configuration #--------------------------------------------------------------------------- # Number of successful samples before a message is sent #mailer.successlimit=2 # # Number of failed samples before a message is sent #mailer.failurelimit=2 #--------------------------------------------------------------------------- # CSVRead configuration #--------------------------------------------------------------------------- # CSVRead delimiter setting (default ",") # Make sure that there are no trailing spaces or tabs after the delimiter # characters, or these will be included in the list of valid delimiters #csvread.delimiter=, #csvread.delimiter=; #csvread.delimiter=! #csvread.delimiter=~ # The following line has a tab after the = #csvread.delimiter= #--------------------------------------------------------------------------- # __time() function configuration # # The properties below can be used to redefine the default formats #--------------------------------------------------------------------------- #time.YMD=yyyyMMdd #time.HMS=HHmmss #time.YMDHMS=yyyyMMdd-HHmmss #time.USER1= #time.USER2= #--------------------------------------------------------------------------- # CSV DataSet configuration #--------------------------------------------------------------------------- # String to return at EOF (if recycle not used) #csvdataset.eofstring= #--------------------------------------------------------------------------- # LDAP Sampler configuration #--------------------------------------------------------------------------- # Maximum number of search results returned by a search that will be sorted # to guarantee a stable ordering (if more results then this limit are retruned # then no sorting is done). Set to 0 to turn off all sorting, in which case # "Equals" response assertions will be very likely to fail against search results. # #ldapsampler.max_sorted_results=1000 # Number of characters to log for each of three sections (starting matching section, diff section, # ending matching section where not all sections will appear for all diffs) diff display when an Equals # assertion fails. So a value of 100 means a maximum of 300 characters of diff text will be displayed # (+ a number of extra characters like "..." and "[[["/"]]]" which are used to decorate it). #assertion.equals_section_diff_len=100 # test written out to log to signify start/end of diff delta #assertion.equals_diff_delta_start=[[[ #assertion.equals_diff_delta_end=]]] #--------------------------------------------------------------------------- # Miscellaneous configuration #--------------------------------------------------------------------------- # If defined, then start the mirror server on the port #mirror.server.port=8081 # ORO PatternCacheLRU size #oro.patterncache.size=1000 #TestBeanGui # #propertyEditorSearchPath=null # Turn expert mode on/off: expert mode will show expert-mode beans and properties #jmeter.expertMode=true # Maximum redirects to follow in a single sequence (default 5) #httpsampler.max_redirects=5 # Maximum frame/iframe nesting depth (default 5) #httpsampler.max_frame_depth=5 # Maximum await termination timeout (secs) when concurrent download embedded resources (default 60) #httpsampler.await_termination_timeout=60 # Revert to BUG 51939 behaviour (no separate container for embedded resources) by setting the following false: #httpsampler.separate.container=true # If embedded resources download fails due to missing resources or other reasons, if this property is true # Parent sample will not be marked as failed #httpsampler.ignore_failed_embedded_resources=false # The encoding to be used if none is provided (default ISO-8859-1) #sampleresult.default.encoding=ISO-8859-1 # Network response size calculation method # Use real size: number of bytes for response body return by webserver # (i.e. the network bytes received for response) # if set to false, the (uncompressed) response data size will used (default before 2.5) # Include headers: add the headers size in real size #sampleresult.getbytes.body_real_size=true #sampleresult.getbytes.headers_size=true # CookieManager behaviour - should cookies with null/empty values be deleted? # Default is true. Use false to revert to original behaviour #CookieManager.delete_null_cookies=true # CookieManager behaviour - should variable cookies be allowed? # Default is true. Use false to revert to original behaviour #CookieManager.allow_variable_cookies=true # CookieManager behaviour - should Cookies be stored as variables? # Default is false #CookieManager.save.cookies=false # CookieManager behaviour - prefix to add to cookie name before storing it as a variable # Default is COOKIE_; to remove the prefix, define it as one or more spaces #CookieManager.name.prefix= # CookieManager behaviour - check received cookies are valid before storing them? # Default is true. Use false to revert to previous behaviour #CookieManager.check.cookies=true # (2.0.3) JMeterThread behaviour has been changed to set the started flag before # the controllers are initialised. This is so controllers can access variables earlier. # In case this causes problems, the previous behaviour can be restored by uncommenting # the following line. #jmeterthread.startearlier=false # (2.2.1) JMeterThread behaviour has changed so that PostProcessors are run in forward order # (as they appear in the test plan) rather than reverse order as previously. # Uncomment the following line to revert to the original behaviour #jmeterthread.reversePostProcessors=true # (2.2) StandardJMeterEngine behaviour has been changed to notify the listeners after # the running version is enabled. This is so they can access variables. # In case this causes problems, the previous behaviour can be restored by uncommenting # the following line. #jmeterengine.startlistenerslater=false # Number of milliseconds to wait for a thread to stop #jmeterengine.threadstop.wait=5000 #Whether to invoke System.exit(0) in server exit code after stopping RMI #jmeterengine.remote.system.exit=false # Whether to call System.exit(1) on failure to stop threads in non-GUI mode. # If this is disabled, it may be necessary to kill the JVM externally #jmeterengine.stopfail.system.exit=true # How long to pause (in ms) in the daemon thread before reporting that the JVM has failed to exit. # If the value is <= 0, the JMeter does not start the daemon thread #jmeter.exit.check.pause=2000 # If running non-GUI, then JMeter listens on the following port for a shutdown message. # To disable, set the port to 1000 or less. #jmeterengine.nongui.port=4445 # # If the initial port is busy, keep trying until this port is reached # (to disable searching, set the value less than or equal to the .port property) #jmeterengine.nongui.maxport=4455 # How often to check for shutdown during ramp-up (milliseconds) #jmeterthread.rampup.granularity=1000 #Should JMeter expand the tree when loading a test plan? # default value is false since JMeter 2.7 #onload.expandtree=false # Maximum size of HTML page that can be displayed; default=200 * 1024 # Set to 0 to disable the size check #view.results.tree.max_size=0 #JMS options # Enable the following property to stop JMS Point-to-Point Sampler from using # the properties java.naming.security.[principal|credentials] when creating the queue connection #JMSSampler.useSecurity.properties=false # Set the following value to true in order to skip the delete confirmation dialogue #confirm.delete.skip=false # Used by Webservice Sampler (SOAP) # Size of Document Cache #soap.document_cache=50 # Used by JSR223 elements # Size of compiled scripts cache #jsr223.compiled_scripts_cache_size=100 #--------------------------------------------------------------------------- # Classpath configuration #--------------------------------------------------------------------------- # List of paths (separated by ;) to search for additional JMeter extension classes # - for example new GUI elements and samplers # These are in addition to lib/ext. Do not use this for utility jars. #search_paths=/app1/lib;/app2/lib # Users can define additional classpath items by setting the property below # - for example, utility jars or JUnit test cases # # Use the default separator for the host version of Java # Paths with spaces may cause problems for the JVM #user.classpath=../classes;../jars/jar1.jar # Classpath finder # ================ # The classpath finder currently needs to load every single JMeter class to find # the classes it needs. # For non-GUI mode, it's only necessary to scan for Function classes, but all classes # are still loaded. # All current Function classes include ".function." in their name, # and none include ".gui." in the name, so the number of unwanted classes loaded can be # reduced by checking for these. However, if a valid function class name does not match # these restrictions, it will not be loaded. If problems are encountered, then comment # or change the following properties: classfinder.functions.contain=.functions. classfinder.functions.notContain=.gui. #--------------------------------------------------------------------------- # Additional property files to load #--------------------------------------------------------------------------- # Should JMeter automatically load additional JMeter properties? # File name to look for (comment to disable) user.properties=user.properties # Should JMeter automatically load additional system properties? # File name to look for (comment to disable) system.properties=system.propertiesapache-jmeter-2.8/bin/shutdown.sh0000644000175000017500000000206112032647263016403 0ustar ebourgebourg#!/bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # Run the Shutdown client to stop a non-GUI instance gracefully # P1 = command port for JMeter instance (defaults to 4445) DIRNAME=`dirname $0` java -cp ${DIRNAME}/ApacheJMeter.jar org.apache.jmeter.util.ShutdownClient Shutdown "$@" apache-jmeter-2.8/bin/jmeter0000644000175000017500000001002612032647263015405 0ustar ebourgebourg#! /bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## ============================================== ## Environment variables: ## JVM_ARGS - optional java args, e.g. -Dprop=val ## ## ============================================== # The following should be reasonably good values for most tests running # on Sun JVMs. Following is the analysis on which it is based. If it's total # gibberish to you, please study my article at # http://www.atg.com/portal/myatg/developer?paf_dm=full&paf_gear_id=1100010&detailArticle=true&id=9606 # # JMeter objects can generally be grouped into three life-length groups: # # - Per-sample objects (results, DOMs,...). An awful lot of those. # Life length of milliseconds to a few seconds. # # - Per-run objects (threads, listener data structures,...). Not that many # of those unless we use the table or tree listeners on heavy runs. # Life length of minutes to several hours, from creation to start of next run. # # - Per-work-session objects (test plans, GUIs,...). # Life length: for the life of the JVM. # This is the base heap size -- you may increase or decrease it to fit your # system's memory availablity: HEAP="-Xms512m -Xmx512m" # There's an awful lot of per-sample objects allocated during test run, so we # need a large eden to avoid too frequent scavenges -- you'll need to tune this # down proportionally if you reduce the HEAP values above: NEW="-XX:NewSize=128m -XX:MaxNewSize=128m" # This ratio and target have been proven OK in tests with a specially high # amount of per-sample objects (the HtmlParserHTMLParser tests): # SURVIVOR="-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%" # Think about it: trying to keep per-run objects in tenuring definitely # represents a cost, but where's the benefit? They won't disappear before # the test is over, and at that point we will no longer care about performance. # # So we will have JMeter do an explicit Full GC before starting a test run, # but then we won't make any effort (or spend any CPU) to keep objects # in tenuring longer than the life of per-sample objects -- which is hopefully # shorter than the period between two scavenges): # TENURING="-XX:MaxTenuringThreshold=2" # This evacuation ratio is OK (see the comments for SURVIVOR) during test # runs -- not so sure about operations that bring a lot of long-lived information into # memory in a short period of time, such as loading tests or listener data files. # Increase it if you experience OutOfMemory problems during those operations # without having gone through a lot of Full GC-ing just before the OOM: # EVACUATION="-XX:MaxLiveObjectEvacuationRatio=20%" # Avoid the RMI-induced Full GCs to run too frequently -- once every ten minutes # should be more than enough: RMIGC="-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000" # Increase MaxPermSize if you use a lot of Javascript in your Test Plan : PERM="-XX:PermSize=64m -XX:MaxPermSize=128m" # Finally, some tracing to help in case things go astray: #DEBUG="-verbose:gc -XX:+PrintTenuringDistribution" # Always dump on OOM (does not cost anything unless triggered) DUMP="-XX:+HeapDumpOnOutOfMemoryError" SERVER="-server" ARGS="$SERVER $DUMP $HEAP $NEW $SURVIVOR $TENURING $EVACUATION $RMIGC $PERM" java $ARGS $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@" apache-jmeter-2.8/bin/testfiles/0000755000175000017500000000000012165514774016206 5ustar ebourgebourgapache-jmeter-2.8/bin/testfiles/HTMLParserTestCase.set0000644000175000017500000000124412032647263022272 0ustar ebourgebourghttp://localhost/mydir/images/image-a.gif http://localhost/mydir/images/image-b.gif http://localhost/mydir/images/image-c.gif http://localhost/mydir/images/image-d.gif http://localhost/mydir/images/image-e.gif http://localhost/mydir/images/sub/image-f.gif http://localhost/mydir/images/image-a2.gif http://localhost/mydir/images/image-b2.gif http://localhost/mydir/images/sub/image-c2.gif http://localhost/mydir/images/image-d2.gif http://localhost/mydir/images/image-e2.gif http://localhost/mydir/images/image-f2.gif http://localhost/mydir/images/body&soul.gif http://localhost/mydir/images/table.gif http://localhost/mydir/images/td.gif http://localhost/mydir/images/tr.gif apache-jmeter-2.8/bin/testfiles/jmeter_home_page_with_relative_links.html0000644000175000017500000001603112032647263026506 0ustar ebourgebourgHTTP/1.1 200 OK Date: Thu, 24 Apr 2003 21:15:26 GMT Server: Apache/2.0.45-dev (Unix) Last-Modified: Thu, 24 Apr 2003 13:26:51 GMT ETag: "31a620-1b1e-6ee17cc0" Accept-Ranges: bytes Content-Length: 6942 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html JMeter - Apache JMeter

About

Documentation

JMeter Resources

Community

Apache JMeter

Apache JMeter is a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

What can I do with it?

Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.

Using JMeter

What does it do?

Apache JMeter features include:

  • Can load and performance test HTTP and FTP servers as well as arbitrary database queries (via JDBC)
  • Complete portability and 100% Java purity .
  • Full Swing and lightweight component support (precompiled JAR uses packages javax.swing.* ).
  • Full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by seperate thread groups.
  • Careful GUI design allows faster operation and more precise timings.
  • Caching and offline analysis/replaying of test results.
  • Highly Extensible:
    • Pluggable Samplers allow unlimited testing capabilities.
    • Several load statistics may be choosen with pluggable timers .
    • Data analysis and visualization plugins allow great extendibility as well as personalization.



Copyright © 1999-2001, Apache Software Foundation
apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseBase.all0000644000175000017500000000113312032647263023037 0ustar ebourgebourghttp://localhost/mydir/images/image-a.gif http://localhost/mydir/images/image-b.gif http://localhost/mydir/images/image-b.gif http://localhost/mydir/images/image-c.gif http://localhost/mydir/images/image-d.gif http://localhost/mydir/images/image-e.gif http://localhost/mydir/images/sub/image-f.gif http://localhost/mydir/images/image-a2.gif http://localhost/mydir/images/image-b2.gif http://localhost/mydir/images/sub/image-c2.gif http://localhost/mydir/images/image-d2.gif http://localhost/mydir/images/image-d2.gif http://localhost/mydir/images/image-e2.gif http://localhost/mydir/images/image-f2.gif apache-jmeter-2.8/bin/testfiles/XMLSchematest.xml0000644000175000017500000000153312032647263021404 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/SFFTest3.txt0000644000175000017500000000003112032647263020273 0ustar ebourgebourgeins zwei drei fier fuenfapache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/0000755000175000017500000000000012165514774023172 5ustar ebourgebourgapache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/halfbanner_data/0000755000175000017500000000000012165514773026262 5ustar ebourgebourgapache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/halfbanner_data/2011-na-234x60.png0000644000175000017500000001636512032647263030620 0ustar ebourgebourg‰PNG  IHDRê<(*æØPLTE!"$&&!,#*$5'67*%"+'$2-*3' 83+;75="9K2s.e7y3f-V'-Y#9A=;G1=W84H1.d%-i"8y$6h:7y96t"/PI7nL;sf;;E;5CrIX"HI!WU$Vh"Fy#Dp&VX%g\$wN#bf(j}%lj)uu)xl0zH!H=CJEBAJECKIHQMKY?FFLWKR[YUS\YW^[XUUXTQNb^\hVRmPJc`^|lAMVdT\hT_pZgyXdnfdbiednkiligqnl`hspnvsryvu}{y{yxhpwˆ6˜8¨<„"5‡'9›!;”%;‡8;™3=¥"=¨/?‰H=•R?ˆH¶@ˆ"E–#I‡#W—#W•9D©$F¼"D·#F¹7G¨#Zµ"U¼"Uµ#Y¨7G‰&h˜&f„*q¨+cÌ"MÇ$GÖ!JÓ"KÛ!IÙ!IÛ&JÙ(JÇ7IÝs—FCˆTH™VFŒRNºGJ¬TK“yK‹qHºgU°jQƒ~|’ZdÜBNÝHQÏQQáWTÏkWâkWÉYj–…KšŽM¬“U¡–jͲdÊ­béÐoñäpÖËeao…_m‚bp†dr‡esˆft‰mzŽivŠr’q}‘p|‹ožwƒ–u‚•s€“x…›yƒ‹wˆ¤…‚ˆ†„Љ‘Ž’Ž–”“˜–•ž›š˜˜˜‚ Ž¡Ÿž†‘¡Š•¨’œ«Œ™¯™¥·—¡¯¥£¢®¬«©§§±®­¥­º¡©¶¨²½µ³²¼»º¹·¶²°¯Á¿¿ªµÅ°·Â´ºÅ¶¾Ê¥²Ã¼Ã̼ÆÓ¯ÁÏÅÃÂÈÇÆÊÉÈÎÍÌÅÇËÄÊÓÌÒÛÈÎ×ÔÓÒÜÛÛÔ×ÛÑÏÎàßß×ÜãÞáçäãããåêçéíëëìèççìíñîðóòñòõõöñóõööøùùúÿÿÿþþþüýýûûüø÷øðïï‹ÈóL pHYsaa¨?§i›IDATxœÔZ\W·ÿÏl£,m—" Ð(»Râ*X1l)¶hâ§&æûÅè—Ä’äSS_Œ~ÑÄDlQ$–XEšŠ‰¢(A¥ˆ¥ïRWvÙÝywfA±E_Þ{çÇÎÜ™3çž{Μ{Ú ÌÎÀ#@ˆ(ù‰²´î#LÉ@†±;ìa!,tb}m—¢]M*Ç}¾Ï}Ô:èa*{ÛݱÚß] ÌÚÙ ñJÊÝîäBÈ[¾ü6}5 ã#lö^í4·k…E¨¨Í´³È/B3ê-Ô±·´›–¼¨ï^êñbQf: Œ¹QÈMl<ûRßT不#?ßL®8ÁñÞûH±£¤Kå0YRïTÆGÝW©¸O,M®¶ Õ€}é g(î£Jü\¸~³#0uìÍçÅ–Ê߀ݰAb?2¡¥NÂx,;³ÎqÆ?íM¿~ÖJSÖB«z»e,÷ß`_×]ÌðN¿åÑïð‹]„:Çñÿ›üzÿ4ê†÷–7qñ"P\ŒË—q†ÐfwEžïýr6œkz”x8ÌÍ,Þ;c÷Ÿ3v—º¥ngR«0Õ8JÅ}/ým@¶—È@ä%¤ät š{)G+iÂéU­¿Î…xâž»Fb$ åÅ b'U×mz‹ í ª=m.}žD½µâÀù¡Ý4{ÀT…(M2²BŠûHa m9Îí]AY²Ò˜Ðo­·6 c§]KbÊ)d¨°9dˆŠCó¸Ãé5KŠª\T’äF­½‡£Ÿ³UÓQK­ÂqQñ¡u“ŽŠì–òh›|$…`©m½l*垀T£v¯rÙ¾5F ÙÔÄâŠBéí>!-ãË”Wwdy ׺i‡N‹›'J_ÇôÇp½+: ì-JƈÉ6$¨gF…‚¼¶Ç/Xuñ,Íû€dΤÜVT<†”€«ù"lMO¹Z'k”Ÿ AµK‘D`Ò¹vÆeCdÕ’Þœ›\TvMÄFÊ‘œ*Ç[_åýó—lKØg1]Y7ë“ãΧƵ[²§F:]Jmƒ³a‘¿ÀUIîÏ›™vDa•äÊÌ4âÓÞº›%ÑkÜWÄföå-2´Âø…ÃX—›º.uø1z˜pÇ‹^”[ Ë22ñ¸kÛwˆvs#½H2©>×ã³Bõ¡¯§^~ÁÌ®k&y$œ¼ÅP.ŽbaŽaôå]¡7í¦sx¦¢)º£áì©fûåéÁ¶ª3‘‰¦}zÖHK¦Ñ·£Œï}ÊtY~e(\,ö ¸prW‰z)N¶¼"ñ¯ÞÚ›‹#¾}Y„´N¿-“›ªW…WuUá’Ýõn’‚: Ü”ë=ˆ‹ï ûQa›u¬%¿M wûZ(ªô޳¨û™LιººlO\â\'r•‘A㟞@%Ï7/X|Ü¢´Xo¬JwöH´U?1˜¹*®u# Ê<õ„Oùì“ä¨öSs<ÕòWÞ 7 g/NïÙ…ç©÷Oƒ"?ÏWöG_çgᚣ­¨H"<^¦eZ\Ìõ^¿Æï^9¾\6ÔÌvòTÙÅÊA F œž…+À)²\R¨“ê+íº^ÓF•¹àA©¥ü#lƒÍÝD(ê•Gž¨w~V=s\YþíÉšÊh¯a4»â=R‡„Û>05üÛ ‰\ø§Gp>>fÏ¥U¬–¹øŒ‰ krõSp g¹Ñ iÑ/Â"—Öý «…FÊ«ve®™~ãO"ìûsÁÓvÍiŠcñ5¯üäZ-Ë `-¿uGMŠâ8¯”§‘•¼$çZ›òÕ¥â!•ÂÓ³‹»ÙˆÖ¿sZN8´ŒsµÜCÉð'^: ”¬½” ½Ÿ@`˜ö8†ÍÎ MÄÕâªP¾86«Í%'IJ4ëYÂù–j¶aâ0Kk‘æøò¤MV—=ïªeëUVWRs¾Þ6’Y¶»ï^D’&0 d½rÖNíØC¾•7?úÎ~¼š)SyÈ™Vßôj¡S¿O²§¶ 5‚Ozü>Gb),ݼÈ[°¡ÀÍ“Ù01ö휯ÚMý((âÇctÂ^¢Ë$"U·Ý‰®®`x 3\&2~Oô7¥–L„¢ðšvb‚q#AQµÄ¢Öµˆµž¿eÎç‹ç~½X¢Û<ö¹¸‰㙎%dþg¦[@#zuÑm¶Á鋚[y+´`½u… Þ­U-¤Nx%-ùqÀäëÙ¡¢DÞÑ0™]Y›ÄÍW\VŒ1ÙÝ÷O.ÈPOAØn o’Ü[Æåz§ió[cL¦bk'­RgAbªíI:A[L`2]Zô]Ëê–UàgÛß¡PÝç`TÂÈ„:x Úç>äB¿ƒ“ӫëîªUÈOLçUk#¨ (ÛÈÚ¢ópà¿€=*Õ‰wç4õ™VåßÕxÛÞ¶8ºثP&l,3 í(Äoãâ0Èö†§šä>88N/”E5@Ÿ h ÜÏÀù¾jDq/ÑÓùqc¬j;äÚ Ó›Ïè .Ž¢Г; ÖŸI¦;E¢3 ¹<õ ÁŸÄŽŠ4.ÛçÓæ¹Ì§gH/ŸHù÷3kÖ°e¾[ØólP›«Œ ¼àñ|Øš¹ÖMôÑv€4µMÜ”èiº®êû¹v­ïèœØ/,ÌÈ´à$`ø¹è¤./tEfüŽQå;â=/‹[!=0«–œž‰kƒáÊK‰¨­oÊK¶2°™ ¥…J†p Ùù9K5”@_ÌE9Þòóú6¤µR%†þ‘ú—ýÏ5ejµÓYrB÷4è3VP0I‰=w”Ã: C Až‹³sÞï#ð‚µïµ¿ÊÔÌuTÒ ‘R‰rðÁIÍX®xAÓ` "§J².׎h!´DGéÝSpÕ‰ƒ$‰%î¹A`‡câuPŒ0•5«ÿdd<Ñs—kÇ{ÖWö€KE½OPñ=–«Çr HPÎõIF´XÜD¡IÞ0qÿ9þ‘ b.z)._Iûä§!Èæ9p­äG$^ ç¢ÇŽ03—›o‡™³âæMã÷ˆ!9ýõ ÷0?LŸ Þ6¯ý­a)<~I ÏUó2 C<Žëy}[Íe(9þu÷xÕs‰Äg3wUË4Ò¸—È,Aßq㲡ÖY¦¢,dŠx­<9×jÿl9Ì~ï}:‰¹ëزÞP»#zïøeçí;ãžÑ×ä·ñmóöÊ¥Œû줄2KÁÒ©*…dtøVÝ“s•U91Yîx¯r‹ÇÏY¿­¼Øßo_Õª¥óÍ×d,%»dŒúÌ ¼±ßºÀÖІÅkÈ;¯B?féþDZy€+P•Ý '}´)±£ÜÙøÚŠ‹Ý©×¤¤°="ÜÍ奡\úIÌËä¿ ænP<ÉD.+H&K¦›1dÆ;.<‹fÏCMÒð–˜6 YcKãˆ?t׎‡ëæÕ?MRu»õó¼µóÿ Úb! DG%sÛõš¡ýSÌr²¶ Äg7Òy_®_˜ëêfg7çLwà ÉÎÑç4­´‰ˆH9–*’ØkÜæTÏ1t-uùtå¤6Ä zJÕqïº7®t"ÙÄ^…’kц‰aÉ2Xûò½ gn~S”аAhÓi¬¾1f.•6çü²ÞX™öJ€ÝSqå¼Ä²ˆƒE˜d#9CÛ# ÃÀ¢V®š· ª·Q㌢ìÚš<_«9^u¬òªS¿ŠÙ¥¾7Ó ürý"üž^j³4wšªûÄè8ôhdÄ)mNŽ)CüÍëô¾Qµ7»å{•ÚQZÝ݈…UÛ,ý‹œ;XІ?/ܲ疧¶ÑÑ$Yžd¼Â”F TŽ‘®[æ1._¼£ë†©ù]–б´!é‹çÃÕ [HúÍD7jt½±|úwº1‡U©²…¢^®ÛtÓ§Nf0Y5Â+n]éF?»æœu1 9ÙOÆh ŒÅ—à9=_Ò^íKöt¿~¡ÿ/³ÄÆÂcý^:e,¨Ó—K¶šÈzj•}CÃÎe9“®Ú.ùþõšJ»í s‘\s›r®+-¸‚ƒµm"òuˆ„¿ÃÆ!ꪰœ$îí½ÿt¸ .«ˆ°6–ϰ,QºLJ`MÆbmý6 Jø¡všâá)jšÿ¡ÿŒ&HMv£Š<⢚Éá¨Û]NuóQËT?êÈø¸1¹®6leæ„FsæB³Lp¥‰K܈9s€˜×ØŠ˜·MÙ¿›‚Ú‚×)VÈjÎõâF! ÙM JêÌ®ùàÓ7ÿSj™^—Õ›x‰£’H .\€w,¢x35@b•ÿ¢ Þ™-Y1íìÙRóvéÞ&%ƒïöwÝk3v‹ØûZ;Ë€£ó~šq¼ÜsÂá ñìR‘~a©Ö8÷‡(°ÚÅs!z•Oy‘¡˜„¨KŠà‚‘K³Å§ãbôµ¾<šGܯáV˜Éc¯{–¿ûg“]êÞe¢h~þ+Õ*¡B±µÌÚaIݦ=¹ë@×â긖à~-J{«8¢:.#y\a¿d Žqº-å,.ŠU_Ç¥ÉlBDz¶Â\î@Ê;ŸÝ¹ã°^˜pNØ€åGìaà0k6·.sEÊ'S²ÉÜ WXríBr¿éW×s…Å£¢á€%åKsÈ=Á}pñ;Âì Züôýÿ½‰(˜Žxþ³ZÊâ¡-õÿ8ljgKáÇÇ>)í¹áÉAcn·”?Žÿ— ¦­¨ÉÉתÂH.ÝŒøÞÇIýÀtÓ½1cÑš1Ñ´yÈ&éáïMõiªÄ [þÕ®ø†Àôä]ÎçmDÍ Ÿèë«•Î¥ ežC~Ÿüþ±7:‘—²šÞtÈxÍH)œ¿.1(NЯø4Y\Brª™ûí÷ÓŸ I1¢X_NRؚݤ ½Â<G®Þ†G1w!£ÿ^AÛŠª °eqÔ¡¥=m0!&f¸G¹¬zcgRkd ‘žDjOà®#EòG11‘üξàÂoXOóAâ9B‹¨©ÊIfIÑ+~ôȓĥÇ\K"èb|4:AZµôª¸dÑ\cíׯºÄ´›%u˜kð×–äñ\ Â…ÙÙæä¸S?#Ä£.«OñWÏ«ùøW¡EÔ¡÷š |a«=¹Ñ0½¡žz1ьܱ:Ývî_'‚ÍnÜÉ”Dö:Ó¥ÑüŒ—LZ˜ø®Ï/ZËX™]°¹oó,]›¿ÈÑ(yËH$¿·µh“…¨LPÚfLSÖmQ&‰ä¡\hSû3KÝ;>_xˆ¨NåiøÒBi¾¶ú}Ԥ峛~•?êV˜9(ã–á®éZcTl„hêñHb1ÙC˜'n“=1p¢fþãD›oåÅ>¹V>ÕíSÕ¿´"Œ;'‰œW~Û)IâXÊŽ¸ZóÝ*¿\BÁu€ /44¸50³þ¢E1Ó> àg¶U·<ÖN¡¤§-sXª4²ÿBÝEœëeÈØoÀ³aØ}T«è^ù]²§50yæqjÐÎæ÷p#àOæ~Qç7v¼Nh¹q¦×ª|Ú™S|–óhÔ B;:_5à X¶˜$«Þ÷Ù £Â£îVÌbcštõ'ÀFÛQ°6þ4׿É\ˆcFDù“Ë´Gª °ý< .üìÿs™…Ù€wUø5ˆ­¸­Y+{sú7«6n ýòµ‚!Ë3»ü˜§ÀÞýn)ôÓÅæýØ«Æ~ì]fÌÝšhÀ÷2mÄIó,ëù>ü¬H凔ðxx”×w%›Ú D¥[HãÚú½ÎÎÒ‹w%ýh?oê6;È›ÄÞPì½À³«“¹ýø`¼-›A¿òyM9ש»À7 ÕQÄÏ:ù?D.zTüoíQQÕyüû»÷Îû)Î ÂÄÀ@¦M¡£àê9ø:©]ûìí$7KF°ÇMçàpŠ2W;Q×S ¾\þôÕêE_¦AH…;‡ ÊƒRÑ“©pã²TÁ½^;:?Ð ?ÿŸ]ìám6gx眠Á¶È¢ññÞ¨°½êý®ÑxüÅèÝa³eònî;©])å·Ù¹wyúlõÕÌÇà“ÒÅ»÷­¼ÝÑq²eNT5÷í±m5öÍÕ ë ¾iPÉq‹ÿ9ÎXw ÎI8ÏPÉ€<¥Úôˆë…RÙDSD–²¹fKE©:åM÷Kås}Ñ«Ö×¥<@;þ Å¥µìW‚Çï \´¬UyU¶j|àÌ TÇþëȳ¶}¯?Ö/l!éÁç7Ñ«ª7Òp8‹©²"Òb„ΰW0™abéYõ ,#gN†RüržÂØ:%2ÍSHšPkžçA—ã`p ß²S¯K©ÁÝT£+*^Tÿ%:âNÛp4AÿÛXì­Bp𻋋¢Isî"Od .ˆ¹jˆ«Ü†¨ÞË4±šmYH4ñuÏy2"Qp§qŠk zå8|/Uð+ŠBáOÖ*?ßÑ»àJtQ‡ìŽ©u–°œWóz¢Lše•[+sÑkÛÐi\8®fi¦°0,5d…—X8À&§qBò®ä¸&‘ê'¡ŸŠÝŸ®T$4&QCBºÉ‚%¨F@š³*=Ñ>±Rdn“Ž^Ã4X ÑÿO@|G „w¨#–ž7̧ëÅ«àŒ[¸&¢šFHvÜ' ›Æ‚\áiЀ•·½úúà©úÁ–¤ÃÙÁæ] ¿åóäÖÞÈîy¥W£æ·i·,A}¥c¶µÀØ$•ëY'‚³;k:#¹¯õ8%È)ÄæX‚§­Œ—D4?ìñ¾=ÔQ´é|z$¦ñ|ÚÜ0Ì $¸þM‚ƒW㉠ p†°´GÈ>Û˜àíã•nþíôGÔ-,kâ¶\Ð|yS¸ÂDzµm ïÎjüqTýøµÿ#—µâç\¢Ry¿HU <\è€( £µäH–`í&ë’4xc;È+Òß,€ÚÜ-ƒ÷VÁ{¿³Ï›Š˜c›F°wZ ¿² >f £†åZàÜé{Ìñ™ƒ‚9lm·Î3Œ´p‘ì[BgŒè}>í¹•ñTƒ,­¬G¯t89þÜ š6§Å<ÝÕ8#"–Û1\óï÷xˆnû‘£:s‹µå¼‚ra-x‰fYú`•3G$Å ÙBZó„Gv–4d+_.ÆÚrSïè@+Ú¿›»©b]ÛK"Ÿðé¨Ì¥Kpñ_B‡áw¾–LNz8^/âRæ +1ù¤ÿSÌÿÏ×&k÷Nßu™Ó©Ç÷¯ë«Ù "'`NÿÏTg`c òg¾@!¬àÂJö9>Ëë¿ä'|@&À3¼Ò5ß'‰¿³,ÁL`•¡3Ï\×ÈñM]vv_ÞóMò•PßßG~¾£~SñÃ*ôÿËöíÅÖÚGIEND®B`‚apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/scoping1.png0000644000175000017500000000760712032647263025426 0ustar ebourgebourg‰PNG  IHDR¸†á!×M pHYsÄÄ•+tIMEÓ 7»ÚçtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí}låÇç8MìÆIÚ„¼Ù΋iÒ:¤@pZ¥%m–…RÔncÚ&EP$„´6i ReŒ ¦‘­ª6!´Š½¦­ ¢"Q ‚Ín´nmט9oNÒÄiÇq'¶o<éõzw¾Ü]Î÷ú|TE?~žîëïóÜÝï~&Ž9ÒÙÙ Y  €§ÞÅß,ÈÆàñùÔžV±d©_*Áè…¬©c$äJ(~õµ—Q¹½½½½½ëÆp … !ª;¤’S§N¡—ÇŽvœ:uêÕ×^ÆZÑ;VvAGŽtÒ_’$)°;O½ëØÑŽöövzå±£x³¢w˜¢žáÃIDATBA*ñù|>Ÿ@g§_¬V¸oïÞ}@鹿€-mKËm¾å÷ «¥…`´¤÷ƒÞb·ÁHƒ{éñù|--DK á“z¾ˆÄÑ|÷ö©±…Uûý$:œTA2¨¿Ÿdˆ³FVÙÌJÐI(ÞXi£^n¬´IÛ  ¥Ò7½†þWBoÔDZž±G€@ à÷“t•0.‹ñè\WZwÍwo?×Õã©FÔ´èK*ó×ˆí³€á)’$ ‚èìô$ŽçŸo¾AÉd¡`Xì~–½qA5üËõ)zΕ‹CŽ‚´B)°¯P0|®«‡ó­s]=‹Ò û@ ©œÝùIDAT1ηŽ"| î= %±*Yv/ »Ïœ À™“!ôUžëꑼYÛ­BòÁÆ*‘ ÷E,HKÃn˜™M Jª°Âå2Ø'´Cº¨"ö²"p{A_¶°V¤Adº{ŒVŽBÙ S·Sv×ÄÞ}Ìß=Ö²ÝëAvÂOè¿×å£0…â÷“Â7(B˜Ë¹$co…‘g?ë9s2T\˜áø?9Û<÷½§å£0òÅSï Ã?ëA§Çã/³Û;Ú8”I·Èæ(Hè ì}g„ï ñþQÈ&É …Æû.\¹‘Nsl‰…öM^÷Vß&å'†3oº¼IDAT¡£²P>þè‹ë#7xÄfç{¿¼Öûåµ gÉcïWlbê;JׅߣB³w'ûÝÞ«çQá»O¿¨Üœ0,äЍûD¼ËÖºŸ½þËøòĵþÞùÅ9FƒõvGÛ£‡›·m­ö”Ë>UŒpdŠ„0J¤€ÍuÍì·êî¬- §PÖF¹Þ^På*€å…Oª([9—þòÓkç/t€·ÑÛvxcPúKtë[ÆK…œ½QƒÊ{MRËÈ¿ô 0JðûÉ€L7rÎ_èö6zàê•«@× :TòŠƒúXJŽ«.ÙzRÄ_ ‰Ï37(ˆÞÿIÛá]ÞF/ÒʪП5AuÏÒRIDATúKÆ“(™j8»¥+ƒ®ž!=ÓÿŠ} F-äwÉa”ëíÁ¾ÿ¡r­û¶ '”…0ÖLP‡“§@•yjDEž!„·×,r ea”ps÷JíQ8¢ö ôÎmM¦~x´ÂØ©ˆ=ØÚ™Er%¬,=̳›óº¿ùÌSòLî&ŒY1 @l?zY;ÖˆüK¥±ßž¥'K0<Ÿ}ÈÙ5œK•¨3®qÔ¿2K‡±ôœ¿Ð½ó¡Vy‡ {µdPÊÎTàïA°†o”*dñ¬G C¡qTÈtÖCo“ Î3Ȱ{ o¨¡·d׬ڃØ!è•ÚGeG wŸõ£2}éAP%ˆ%°IDATvÒ}Öߺ¿_ŸU‘¬Eø·©Äår¢—œg=¼ÿaY‰«û¬ÿ;/´É:M5Ñ‹‘P¨ì(­û[ºÏúËJ\0q#ì»mõþ л­û[T™!¡²Pª=åH”\8ÁëŽê¨Öƒ@-+€œÁ‘¡¾ÑÏþ>05·¦î-ñ=àu8 dëÝL¨/”쟛œZH,ÀÜœHÿLц¡æmjÏK—¨zœ%†‡F/÷Žô|4”XHS•ŸŸRqJºÆ˜ŽÒùÆ_£c–Xl>ßZŒ<+HÝ DznJí™éc:Êó?8°OååÞR ›Ã÷e²1å­×;Ë6î; IDAT¶æN]v¯H²¸4ÿN_®ªóÒ1F I’':Þ¾£¼ä‘ÇZ'·MuývÕ?¸ß]ã-ðÔsUTTÔ¬ÛìÜTïÉÍ•¸{åyDÜaéyååŸZ£[=ÔôÉé!‡Ã1uçGÌIDAT{Ê]n'çr#’†ŒÝêÝ åÄñ·,S›9Ôäï´X,ŸîwÖ”mjð8«z#€MàšbNkÑâÒ#œßüâý²üm[¿^uñüpŽ5'?udKeU™Íf[ýà ®QT3£oGɉ×úvÕ\úbÔš›3;?оiýú|»Ý.ªþ¸FFp¤9Uzw”±ù Z,–âÚ™æG«*å‡CíI}; I¦'Çg­Gܵå÷ÜÛ„U’=tì(?~áã4‘Úà™þö³â~º#;JYc$rŸ{«D tì(X"J¢c¡Ð™Æ'Çb©¥tÃ=ÎÏ?¹RZaO¥ÓJ K“f“IDATË«JÔžšA0‚PFú§b3‹¨|õâ$äòÒòÀd*œ¥}Wë½ÕjNQÿèx‚ Þpy˜¶±±"¿¼ÚQ»ùŽ g)üùScj†B[Ž"6eÆ@pbq.‰\d6°Ä‹Go%Ý?qüCß0Î#†j¡!¡HÈ(9™³Ùò`vvîò¿û&#Ó‹ ’$;¾ßYRº1–ˆÀ¶'áHÃ^é*ÍêüV„"!£ä@p‚*ÏÅâs±ùDb)M¦I’´–h4ö£×^8qü‹…°ÛmýÁN¡°=LBÊQ·…w.¼gRî\˜l´"„¨Œ’ñØ"U¶Ûó“Éâ´ªëIDATd*•"ÂBé4™\^~óø{_;°¬ÖœñÑvìD:Yº›c€¸'nf…Ä.-'R÷í¸•æ——“¹V+J¥ ‚‚H.§¨Æ¿Õºj‡”£0þ² œ1‘™b%yI²3GR5™þò ÄßíªÿùühËQÄf”¼øÙJ>•Äòb^~^*•&ˆ´ÅbÉ]—›J¥fæ'ÒiÒb!’©Ô»oü‰=Î#ÊÒ©–Œµ)“Oñ ÎöBâ/ùZõ#’ÑŠPHñ%+ª‹ÆW”ñÑ©âbÇ||!ÇšCD,1y³Ûtt&>™¶­çމ¤»;k£Àù’bíßZþ€pæ“>B‡fIDAT§›hE( >£dr)7›4o÷ž>ÍôŒBG!AXæçg£1W-_Ö Y¾yÙydiÚÚ£dúsbwäE£±¥Ä,'ÈÝ­;këÜEEyùëJJ6455|ò‰èÌìž'š[šjÙ=Hó€U?ÅhÀ¸”0¨äHCŽ"–¥…ÕÅcƒÓ{žh¾zqÄfs;«\·önÑ™Ùþð{¿:SÛP^å.c÷ Ößâ|&ˆ³ö»c+Ù&'v ¹Ð±P`KSÍTdæ¿û4‹Ø$’$'Æ'ÃCדÉdͦ²‡öpüÆ ‚óÿ5py›XIž©fˆ§O›$Q%£I%IDAT­¥Gî¾Ç³¥²ÿ«¡‘áëãc‘FŸ321u©÷ê.õ-,,Ö7ºZ÷mS{ŽF@sŽÂ8=BóöÍU®ÒPpdt8òë7ÿò¯Þ+ŽB[Ã]nïÖ:WÌ™ß4²cUÍ EåU%8ô$«è~éÁ(ƒA3JfC EFpFIxéág”dƒ… Î(É v&8£$'ØQ˜àŒ’œ`¡Ü‚“Q’}çO¹‰ªÊ ¤ÈŒ’2Æé¼GYAlFI6™b †0j£9Šv2JrFn³ËzÁhBQ1£$ç3zÔ'f_z”É(iL-”µd”ä„n* <”¥$æýÞ¬=£¤(²¤2‚T3IDAT¨ æu¹2JòÔ°£õ›WÒ¼Ž‚3JŠÂ¼Ž‚3JŠÂ¤Ž‚3JŠÅ¤Ž‚3JŠÅ¤Ž"D"8’ŽI…²*8’I—~p($ì(Lp($'ØQ˜àPHN°£0Á¡œ`¡Üb¡FºÈ e ÉÞ£¬°öPHOFFv(¤Ž‚#æ(ê†BòdŽd‡Bê+8ÒPB‘ö„ºŒ?®ÍuÀÖœ.¼aö¥GÉPH’F¦Íbj¡È )=Z‹¡–Q¨ ©¯àHó:Šì¡&˶r.V¨sÒŸ Ie’ ?m}ŠOidÀ?âxŒ2º"o”‘ð6YdÜR¨WÚ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”Eæë楕|ö‚ºÜcèÛ®¬´i¸K³´ˆ AB$:}JÜ¡ÎÓ³Ð×[;aØà c¤9µ¾Ã÷}WÖêW- |Ùç_hùÍK·]t´)¶Ì‚ûl-•¸Â•ƒÁÁ#ÑÕ*ö4ÕÇ3H!öÛkÞÅh±ƒÛÆíÁ#ëªá7J£JônÍÔø7Ë“ú¢;åªK“¤IK…±³;vmVÐÏjÊšK½Í¶‹j–o´V'´{3˜l4µõ¾÷Ñgß›²êa~[ÖS­d²ÿ€ƒ jܤ¤ÒTH+äœüäÊ®,JÒ |ôÔñÉ‹ûÀ9ο22“n›,m9:í©tî…Ñ÷KœÖ¡Ï—=–™Æq¸ùØÉpwàã¸Mg:Q.&ĺýtåu³Y 3×b±¥ÌlY}ßt7vS·kìJ¿NÒ¶ý)§ul[Uåïs‘iuÄÚžx»à…âJ‰P·×çÛª)Û;BÓîÞöÐëÕsPâsb5Tž1™²4g×Ôhl¸ú,6¬LÙ4Æš¿Ä™,Üœ\`ë«yD-*(Ûœ€pò¬y©…4UFãžì¹¹ÔŶ²™õ®ªª©¥{[ìÀ}…†„^Æûߪ’K’o›“Ò­Ó'd-–¼'¶!ž8¾u™6zê‰,”5Å­Êü¡¶íq¯;žÊ‹ƒ)¡‰±½­ÌÐMÅÉ¿{9+•S ¬"`XZR’³•ùfº|Õý“-`!À.A%¼®G>GÉ`V{?kx¶=6º–­åQ(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(ˆFAEXÑZ.Ù¡loÚí²eK2e;6D™ŠJ}×T¥¥#=‡aÀ«µ•¬Hð€ €ð *Ö½Ðq\…¬õe¬Î]Þã§d[— Œ)¹$6¢ƒ°$¨¹Ù#·¤5³"u¬ßez–k>6:Öþª'Gô‚ lZuûÅâøü8̱)6)oÿé˜`'(#v²BIÀ?uE4¹œvóW¦ÄÞ×”Eó­737¥Zn2NWq–ÊœòCj*ÿÚ"ñBe«C)-'è*"²TΆéíêø˜‚KÉ–Ø`¡Ç‘€O§Ÿ¢-(×Qzë«®VËšâ¥D©mðBGË)RÚMMغ¥Õ½99µj·€•aæ^a :çµhŸíDV>°]ú‰t»Ã‰¥½õZ2çfméjD¸Ù+S›·:PJNÍœ qëDXúnȨ6ø«ˆÉšRÉJBˆX §ÌçQ¡ïXhý¨oú¾<‰Ò›’†m¬=1ÂÊ“Û)HÈ$žOE¨ê/]µtâ«mÍq‰R"Ûá „–R¥´š"œ±uK«zrsjÔ+nÿ*Ã̼Ât'ÏjÐ?Úˆ¹ëþ¤õEL¸ÃÑú…Ql…¨ÏElÂad%Èí¬ò´rTO$÷¢(™Z߯OÛ˜ ¾-–’¢“%¸,¤º¬ç[18ÂqÇ|ÑÌé¼×7+êôæ´Ù;{*v<ä¶–Ö q”¬$Aƒ€xç9à‹xQˆ”D¢%(‰DJ"Qˆ”E§½¡?˜ö?×M~ Õžz‹úª¯¥¿ÞÖOïŒ~"j‹¦…Ptdó1ÛSä}) ñŠ"žëÂ’4M¥µ€RíÙ¤sÿIÓü(‹«¦Pãĺ4l$ª:¹æ(Šª™m]/÷˜î¶“áÊy½EwÏ·ÇoS!ÀØÏ¹ÄOoHíáDVMA1zOÀ·ßöcí]sЉiÝGJP‹+ä}TE¶(‰DJ"Qˆ”D¢%(‰DJ"ÓÞПÌ{릿êŽO ½EýUWÒßïk'÷Æ?5Ež0ºzôïò?E“ÕéÊÝú¯Çz´—§®„±¦,³¼”ã¬(ý¹û¨Š8Äiå%òqš"ο+ÜgÛaci÷&ÖG¡$“ûMb_yÐDÿÍ›üQVkîaZß,È-“¸8QÇbˆ°ìš[ò;Ò"íOnVü¿“»ÏTE³t{­5¥P·J—$¨ãuLê.ˆƒ!QßÔ°‹ˆÆðÓž&ÌöÜS¾¼÷¨Ÿ,l =À_k•#"’Käi6è.ªR} :tÃ%™’¦•µµGgpW©#ÿݼ³Qø…;3]Ûo¡[ À11²NWlz©Ý7Õ=#«ç¢Ûb¸My¥¸ÊNÝÅ<)>¹ËÐf¦Šª)^ca¹ •FULÏi4e¢öׯE®Znƒ_î[ ½¦0¤1%Ýͽ$•øE¹î±±G¿Ä3ôjÅõ² ·F˜»H½éÈ·l!‡ÜOÆ–Õ¹?X>„`ýµé}Þýe°BTÛÕÖ-¾:FK’ñçÞˆµœ´7­/æÉÓ#·àÒÂdÝŸËP£ œÝÖpïê;×Ä[u;‚@QʱÉõÚ"¿Ý!é‹­ìFT£oˆì¯ wb ¶ƒÏ'ûkå×Ð.l¼Úïµ –ÖÍ‘ä^š§rò¯¸)I^ÓwEß4¢òâÛ“¡³!hOd)h )î{GÙ^ÁUÜ®!jÿhWaŽOçwBÀù]ü£“®QUW4¢Jï@žþöÉû– RgŒ.ž ÚþGè²:¡ý9[¿SµøïV’╪ñÈ軲2¸oûÂ~ æþ*ˆ¡¬ÄϤž^R[ùœQ¨OúŸ2xx÷*ˆ—Ä“ T@$&êÙ?/Í("—ÑS¢Á¹²ìÙMFh²±½Õ„'•šü6¦¢¤ÉˆyEúwa4²áÑÔÕÆ×.ã_+¸j 8$” 9‚Ý6pú´‚¸¬c‚j9éœìÎuµêæ3v»móXÓºg²kÙ–{ÁvDH¤´eBRVJ¥n-¨q¹G/Ë$Šáíªü¿E±-`êγ¶µ¦:+ fµ0Ÿ Ë¥´çS‹øs„ãÌúzW¥ñ^4§³=Âó=7þ´j‰:’qQZméyE–òsñ3œð00|è‹Ñ–‹5ªÁkf×f·±) C, $숳è‰D]"³:ˆR¹™ ©¥T¨`þÃDÚ¯)[´ª,“¦Øî,*…¥>òPù‚>F³ä¸6]…&I# ÑnêµÓ@ÛSjzÅùbÞÖ|‡¼'çnv¡žÝ±Ÿ¨T±Ë¥ŠÎ­¢ÌüíT K¯5TµL¥ÚÓk¶[ʼ©YpîV7-JÀÉàc€ÚIõ#îŠJrÇ-ÉÓ›3²¯LKR»ÁÔ¯"¢0‘ûsöTP¶îº½‰L#ƒ'2¬ú£¦ÿé&¹©ÿ-{¯ƒ =ßÝ·îÚµ«víãôñŒyUåÊ«q¶ôŒ­<ô¹ :ҜَíŸ,úÑšéù°9NÝýôG;±îû7qýcŽy¢.KÓÔß5‚u*ï‚",–K‡ÂIÝ»xõôò¢(é×~œØ,S-Z‹W[Þj[›¶¡`¸•1„¤¨ç söW‡ÈÖ\me40I;ƒ"i$ôZžï¯4#Ðä@³ÏŸuSClE •ç¥ ÷î~*ŒØ•4 ;áªÒf \éDF" ë§Ãª©ÛzŸf³ÜÄkurPŸåŒ‡6xgФrG~AmDÌ@ÈÌÑÆOãûè¶ßÂ5…Ñ9®¶àn= ´ïðV+¿´>¡zÍ2Þõ²ÌäwÛSaÈ¡ÇP¦È))# ŒŒyõE˜´ò>ÍŠÝŽ…_¥àÉd‹ÚÈû7¨ þª•dê´«5‘1fÙ˜ßÐ|¡³åÈÚ¢“Ÿ_¾¶ƒªË= „‘ç·É$à¹#p¼ã!ûÀ\_¡×M}:•tÕ.7ζÙL|ºäu¹½dz àÇ—Ÿm˜E}kƒâ»KEí×Ì-Š^‚ž9#”ûWsÊà:°Ý×?]Џ5Õ$Ø›fu§zV’u§°—øH#)<Ü×CMÃõS´:à_nç§b±jxE­þe<à°øIסî¢S¡À€„Z÷Vå‚zZ·-•£Œ Œ’yò­º~Ñ’ÌûµÆÚ ]<Ô4¸Nd•sæaè-cÞ÷Xn®µ§­ °õ³ßŒ¢—?°«*'wÑ?¥š»?I.iCòå°#.Ú wת¥}š®¡õn–Î6¶èÓ^Ý«j¨A»j„Çc¶Ã/¥ .xœm œLöó­ª * &ôÕS4‹\;A¾â×+G âfaÔ®¢óyuÜ[U¯îлEiKXeÀ¦WÛh#öqU*8 †W{šAiÂÀÜjuÛB±*ø‚¦vˆÁÐ;tQ«™¨'¡ÖcÆu-âíÇ`Nsõd£&+‹U±ñÑA’;çÔjï¹¶—–a5“‚Ó~«&6•»Üì©RJv68䩎>ꆣ­ª{§Äg½Àq[Žvä ‡E~“©©}­aE³æôf:Ë­tÝįað'1%!Ðܤ¤«ŽR¤ÃëÇ•pµÔæ’wC{±ê9,úú(gu<»˜:‚®Ú_©:ïOÞ!3yºI•nk”EŽàa‡ÆÒ‘´#‘‚älUÊ—³´íþ§°Ç¼Û|PÃÀ® ¡hP8RH>`äW n¾)jú‰DJ"QoQèûf£R$;º4æÆÔIlsEëÝQ¾0õrš­ôçÝÔtTy½(¸>J2ÈõsrOÜýõ_Ø8lVÀÅap÷ÚWm§¤ Æt.lÖБÝ1Ó’~ÓÛî¯B̨_Š4å7â® Ô+L£òA½[á)„x‹eO§zGé+œóê…J\Ȇ¦ÁcHù&~gjUAÏhš´‡no¨$e;X$9Æx=½{ãµF*#p%ºÛ±ZÏÀq(Ø$|&ÇnM½TÏÚgHFJÿ'Zn36çãZCmžqÜnýÜyâ¢mcÒciqèªëx[-ìÞ·ù\þ\ì´Õÿ¯CÔ¤¿J­vÇ2†‘m!e´ã¹Q*õýÜWºvÕU¸{0Z<—g‡p…#`ö•­/¿6:àzh{i­2F£Ôò#6n:Û´§ne­KHãéÈÇö†qšÜ“ƒêçŒJÙNSÓqÏ^ßEqØW‹òqùÇC}Ôqir^|2Žû`…E8RyÆÓèx¯”| Rd,×pëÏ¿uÒ@i!k›J\7iµŽûyõXû-‹Ž\iÍá%ØQý•wœçλ:>‰âímÈñ4ª3bTF+µ×nŇ—üO#­ï}V“ìèPñd8¸Àü'‡ãŸ¨Àïßš¹SS¸Ë9yÿst½ÏoÍdKÄ”Z2W’Ϻáãoo+i}ÖúŽ<Iy·cï'*Z?âHú*ç½Z—¢.Jæ5ܦWvpäz,©x°ÒIš[láÜr=× :ÞÒ€§á¶–‹£cñÏ!c=ÇÏ“õÕS„R‚ÿhÐ9»Ü_—ÆýÕzž/×};-›ÄÇõú¨‡µæe¶¢äe``íé<ºþõ]lÆÕ”3ÀܵíIQóú³_?ˆãõ->ÍŒ”ô½·Ô^×=þqC‡ÖÕekZNc§sºcD_f-µK˜”$çâ*äg?å5ð¬J¬‡ÕÔîrîN×ò–Í? UÊFk »/¨¿ä¬6ÞÙÛ2_Ÿ%Ç[ae8'ÏoX‹ /tï.±æzy.ª‡ƒ`9äĆ“òÝw5¦íVë?vPB“¸ˆ‚ž~ꯒו×rüoÅN)Síòåûjðzwc^¢¶ß”Ê—½¯¡¦Ç‡)[BB”{ ØÇésš•a«‚†Ò„„¤yD\¨‰DJ"Qˆ¢u¢´ék‹ÕîZcD`d©]ÔqÂ@ó'’66—9}óf¯ë•¿R)Ø.j5éËBñ]b#ˆ\§ÚPãÆ~p’“…¸€Ü~'ˆHLthM7ùéožºs6¿ ewuLV¨ÑðžzivêË-•Çq«kï4¶ÂIØ Rß|•$€;Äò£Ä&"wœ¤nö‚ ÷ä; æ÷ìƒ$ˆ ¿‚¯Î¿X.qâ\íšGT!sò¿ Fr°)YáÁçŒã¢Âj±<&g5•1{MÇ«~ïMú’´©qzš@œäu–Ç÷ÒË[Ë»ß[—"e²ÀëC… wáHpÀ¤pO~Üf¿~¢Ä›=+j䣳ÏÞn>„\üÖ›q\eãí4±e_`mÛŸ¢úÔr«¢UÖÄgÖ€§’œò¡Øsó⯶¾³Ú‡ELƸxùwéõW#™Ô’\¹ÖX8x¬ð ÛŽãË犪ùq'74•- iÐåp;}TÔÜ3ˆJÓ<“µ¿zäòåÔ.kÑOs/êñä¨e)%kXóÀÁÉôÍFúz×ékwia½¯ç¦÷Sž¨¥÷œt7:ÚÿsÐÁ ‘ùÉWw””â­¤îñúý#óª_ÃØyjO25¹è:ù¯làæšY †ä Üÿkzžë½ŽŸÛÖó­ªC¥Y;²¡ˆãn?Ö_‡5ðÌ> ¶W’Oœú¹Z¦àÈæ{š{ÿ´w<ÝÔ ÌgJ´³"<>Ó›kÄpŸypãöüÕs&³5—kŸïÙj·†pÑüȘ\Ñ ¹>û­è:ù¬Æ X`lu«tw=Ù¤¬£%÷–<ÀÇí¯Qc}1±¶àtÜõòWãÁhiÀ{c µíâyä;Yd‡›m–¡Fm¼DG†9}C¿Ïh9?mzg±¹ ÛÌéOšºhZ)¢h÷¿îGÏ(Ôú¬…MKN…EŽVÔx,¥#>#ÊÀþ gæj…_73~jèŠ8\Æû± ­îó§ËA~W+ê]u’ÒþF K8£€]?ǹÇÌW6þ-‘Á¡¦úéߺœx D¯bqêãøîHî[-Ê–Ê­¼„É}jqÖ’w­)R‰(Ú9*#?çƒéXòc•sp Ó¹ü»¬Ùqj8iÝ’—]®Í&öó#@ÆÒ½Öz“ùE´I J^º6Ym˜ùÏÎõ-CË϶c’ú©šguš]Iü‚ã13cóý™»Œ¢ü›ÏÕß½–Þ³{4Z}Þ:uMõÙ…·ƒî3oG»!ÂÚ ²Wð1‚;zöž *™×v–×nÿÈ×qu`-s¬.¶ø-É`Ò:oL%ïÈvˆðÜ|…<òS— `,òxõ5¥L‰¡‘‹°$•ò¸¾Cry•9R¨×Ú"Qˆ”D¢%(е­tm¯\éµÙnªqÝâ4ãx%·6©![H)P A¨e‰²°±û/Mqi¸Z}Ÿgy6‡Q"Û~‰sZR Qq†”§¶FÏ=ûòsƒ[Gðºé¼ô僧›%›lkòKK^'x^ðP¥0œ‹;Ôäùb°¹¡­Ž@om6¸^ú÷76S á¾U­nš­×ûª<}11ž€€—¤4ÌXÉa8J¸N6ü vó“šì°ŒÂØØÃÞ5¹Úý{žånÓWá” Læ™dèEšßž¿%Èû?õmå¥ÁÖÚ‚@ \á¹±ÀÂBxû{ü³ÐωÖNn_cË·—E¾xÒœ>í„í½ÅÇüE¬ß™UY½+ê]²Þë²teÍl!Y,ÇÚ²áï•«vH'Ð ÖLßêœÚõÓ×™ZŸâŒ4C`â×(“þ÷ý?÷‹4ê|–S hkªX)Ø­¥ (a IVRœr2yô"¥“®µ™åä:/ â|/1ÎM€¶ƒq¥šÞêN§²ÉGJº®ùl/CLl4?4ÁRhÆ@ÉÝÉã·Ϊ šÂàIò×ðüÕÁÅxtnbo…ºå/Ôö¶žk"/Eú«p2æ—ʶ-×ÞBèÀÊ‚JAãÉÁÎ+ܵµ`G¹ÝÄÝUwáÏq28’í Ø‘±û­ØØ\žË2/Bºªô–›AÄ GŒ§ÛHa vHÉÆsÝÎ+ãjªâa1˜érvò^gâª;Üqu´÷E€èÀv<‹Ž½–oú¼uEô©— [ÐìØŸµ*>ªPI*Æx¿¦+&Hjä:ÉûòT¦ãx_FÂC¶öÿèî~_œ»žËÚÙ3#©ÛK¨Ø±â6–»0IÈÁ=¸ï^@ç {Eš8Ö¢ùŒ`,ÐÐtÛ}ü•Ä{,Û µê·Ð¤ ¢¤%'Ï“€}{óߊ 20,\Oï÷¢¢þ0¯qŒ»XmåÜÞÄî±²¬q%)cXºÄogÁ%ÆøØIÀ$ç$‚q÷W¯á± ‰?ï¦Êq^!—+n–ä;w<ÉÕY {4hæBî7‹ÌÙHIB^iñ!'(çžO^}·¦kKr^úëªÌ—Ä%xy”‹ h­PºÒÈ0ÛŒ4ŒY(oe)N’¬ä¨•¤H÷⮣i¸hºÌuD¯nW8‘{ïϪ¹Û4ÞŸ²´ÛV‹$(hm@b:Q´z (/}J•¯¨˜¢%(‰DJ"Qˆ”D¢%(‰Š"Qˆ”D¢%1ó¢%(‰D_1D_qDJ"Qˆ”D¢%(‰DJ"Qˆ”EÿÙapache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/style.css0000644000175000017500000000245112032647263025037 0ustar ebourgebourg/* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /*Shows the value of the name attribute when hovered*/ /* Disabled a[name]:hover:after{ content: " #" attr(name); font-size: 90%; text-decoration: none; } */ /* * Hide class="sectionlink", except when an enclosing heading * has the :hover property. * Used to hide the ¶ marker for generating internal links */ .sectionlink { display: none; } :hover > .sectionlink { display: inline; /* Green so shows up on section headings too */ color: rgb(0,255,0); } apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/halfbanner.htm0000644000175000017500000000061612032647263026000 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/jakarta-logo.gif0000644000175000017500000002061012032647263026224 0ustar ebourgebourgGIF89aù0ç:5:[Q,‡{Dß:³«N¿JñÉ[£%·.•#Ñ;Td-ð×\‡*÷T@™5Mðá]~ &æSI÷|J†2Em¡/èàbîîî¶V:NÈ‘v_ "v8:\I’ˆI®¦bK>–T=çÎbÐEöòŠ[]_¶ivŠ•N &‘hk<5¸±[ÚÙÙ:Jf.Y¸xP.--c*]î3t2¡–YbF2}FöööÝBvh7˜Œf= Sö£Q¢,F¶®jÈĈÜ,Tˤ„îæj¢‚IZxY;>¥´ºfed¥:o{ƒÁ=Y6ÊEîÒfúúúL#4Rm>>>c&`Ú$Ako“pQ§šeÝ9Xv6S{oFááà/ IÎvЇGC7$2 DlùhF 08¤*["4” *ʦ¦ÒÒв²°h6M¯o^’~^¼)Qž%DŽ-Oª Rö›WÌixì<Ž":è5R4g‡ a–¤¬TTUºº†•S„ÚÊj––•€[_MXIJJöHAn0ééè¡D3µÄÈþþþi"^®¢jƒ?qË´˜vP‚`lpìxJÎʘb 2‰œ¦‚*Q¥H” \Ö>*0’&R°W~ 2Í(Vö1¹›‘õ4>´®n.UuDvljh¼SQ5W{(9ï»ZK)PrSoèiMvvvò>àÍ˦¦¥³AKN 6’fV¶Œxòòòî~Ftt¯gb0"5h7ie,<‡HgÎ~††|N| f~>F”T[$%a:dÄ»¼¶¶Š·|y€€º¤”ÐÌÆ†1p a` N{c_ô$>u¢`…††n[Arrr¬®¯?TiDvhú‹KïµTX"b AP&&&μ}ù3žžê)Ju*UY8e¾J„$`!þ+Thanks to Brian.Ewins@i-documentsystems.com,ù0þ H° Áå4\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠôè…ÍÈ“(Sª\ɲ¥Ë—0c†œá¥¢—‰^¤xL¦ÏŸ@ƒ J´¨LCePô”¨¤'"ikñ1Ó‹…TOª‹ÆuiVƒÇ¸FS÷µ,A b£a5›Ò‹KâElR.Qº=kí¨¡¾VjîyÑH >¶«(^¼8QÑ@–cìÊècº¥dر¡ŠÝ0¨ÂRÃM/³@Žê¬˜O4“'_ˆPS¤¡7S›%3ŸÊ _¨P²&ŠgJö&²U @Œ5ê©Ñ©1@øð½X‹xàìïRþù]ˆeÑšQ†þŽ'Åõ£YŽBò2{ÑÀCz™í>¤ýôl€oêHÁÐ]å ¢Ä#*çÉP³CsÈàa!¡pÓ 7ÜÒŠWÝI!☉hàc‘é¤CA/Äó‚ÉöÝgDý—|ßÕ6|¤­4fvdß}˜‘’!£D“$wÙØ]<½a&@1º´F<“ìÍ#{4ˆ@ùÔ…PœC—\’F…Ôa u0AŒ,E胈_ýHÐcU "^ (Zý8[]5Ò‡’!é4Š#¡ñÈR4Šzd_ÝtSŽ ¢UÙÝž•v·Š¢Í ñÁÇ$“ðÑ¥4þ‰¬áÌpØp@þ@Å `áWàQidÃ+ô|‚9àüUVztÙ(Ï`¶D":”À‹®@D÷™gÐ,äêfˆ4ÝÄ#A³\éJ7ÒăêAƒn:k¬ëä ®¸¢£A%M9鬑³ýÛn<ïÆ;¯@’T.¹éÐ"º®¤ó°@W<‹ð!Z1»"_Ǥó.Ç0É}Uˆ(P9³×±ÄëŽÀ«Hóo"R[².'ðÀ3dÃݤS›Ì0rÉw²¶˜€‚rR ‡ (LÂe"­XbIöÌf=ÈQf—ÜÑ\dƒGuܸÉÌþ†Ü0ã‰\FQ ¨ã%B"iêp­†`öóAñˆ¦Íl§3›"óG‘g"† 9²@ÿy1¹hBœÜáÇyDÒÌ+ Žttƒ…=bƒÒ·­ì²—¿þÍÉ 'š2¬¤ŠÆ1†”MÅ®ŒFÄ40½¨  M€£0‡q a½èE)̦¿P$cš`ÄÎAÒ Àá—hÎ%žêàáá  °9}N>Á“ÖQÁD„æ[«ë¤AB¨ lÑp cÔè9HÙe6a¡<ņ2àRÏz”@PXñP4^¡htäÔ1DR€ÐÜ ƒ :ÊUó;KXB Õ ™½Ð ‰[¡C˜ˆ­!ш=ƒÅ\áDÌø®‹õ”ÞQ¹Vž‚Õ¨Õ[—žÅÿØ¡y X¨>Ì@€ˆ#¨„~Œ£É…ðh ]° µi8þ€l ÿ銂ôÕž€V0C$G8Žeã¦'™¤Nu) ¨ Å膟ŠFp‡…Å ˆY²·jc4PãD¸åá²}³Ù ¹9̬â`j5È«EXÊR4ÊYÈ,ë :uwÝ+ˆ ÁUjŽS}\áƒ)wˆNÌ– íÍé@¤†™ƒ6±ë…°hÞ+Ù¸ìdNÂ,½VAáÙ`ÒpÅhWÌyà"m6z! ~¤müØ#Û@R”é PduaÕ 6¸‡*È LÄB N I³ÓžbkÖkóþ$¼zK»P­Øl¼âWˆN4Égþ‰\Å@.æ\92LÚ¤ÌU0¥h`Ÿifw\lãß*a‚Ðõ ^°%‘öŠÄ¬å¨ñ² R-ÌU±cai8ÑLšÍq»Qâ~Î`óà@8ð jø`ãÀB°Œ`°Öΰ%ô7‡9|@¶P8@ Sƒ¼ÂWG&‡² ì­oàÈ ¹„:TÊ•LÍvÈv1™½‘sÂQCBEü&¢Îr†¯ìB=öœ•H¨,HUKØßËÀ¹à¢Ç]ÂA,¾ìbAÄÍíz¢»|T'¿£'ê³Ä¥Äâ>`Às`ޏ8.2ŠGFô‚µg›ÕþΠ Røªw@išLq7V¼ãw«A x¢­ˆ²YôM$D=ÍMœ\¼<šn¤ÌÞ_¹Ó{îÙð!IPWÒX"‚ØÚ½ ®8úžë+BòZi6BD<ªNh:TF#Ë: t6F1ƒpÅÆžˆUˆæZ¶ ³¦eWgD=êd±O¼•ŽvQ»¢{pÅ#š°Y!,!ÚÐs禱TØàÀP ãf‚Ö§G™p‡ÇaþcyuÀ‰A~€2…À!îñŠW8¡jhµ‹²åF#UïMÏôTgDlÃüæ½;N#þÈóS|®—AT,úÀþéBæ×{ëÁ·˜Eã 2–»wóÏà3ƒ‚ðŸv¾/ÉØÝÒ osÃW÷Œ%¨à¡(Ѓ0†0 y ’·û0«¦j‡ã ßpZÉ Ô`ÇÁ0Âc{t¡²Çv ` ¬€,¹p—PÕ‘d2 ‹° ÆÐ 9W€DQ`%TÛ–26Õ7 5cî±tæ–Tô^ôï—DÁ‡kQg|FN91Vnݶ9™v…mwv˜Z/|æ—svt×]à'%æsæTôAñÇ÷8µab¸/° ¬òªòÐ;a Xà4þ˜ gep óðýPq7߉H@ ãPò #W¹ÀQp)… +À.øð`d5` $  ` að D,è S¿¹w ê`ƒååéc=&4‡¢mzD¨Ô{]5Ø#à^!Ðs^\ˆ€3F¯BjÝ wûõ„Ô„Œa…mïÆiuwT,Ä„mµn@$Tß&0"ˆåIGxäØfO£CŒ\VpàHý€Gö` Ê€GzÀD6PþGVmÀ )Ui`Ë€@vp´Çµx¾ PÖ ɇD¸Aa(VõsœSºÁY ¥0ò”¢‘M%&n¦¢3U0XjíV)X©•àÁu=‚Œí—ÄÑ :µQ†£ÔOU 1óÅYfw|Åt—l·BÑ@Oâ$ýQ–U@Eéq|Ó— ‡˜³Q}y†la+ñ ®¢(Ð%5¡Ð ³b ŒÐ Í@ òÓ yB €¬Vqщ_à§SP½ gÀ6õ€»Æ‚„¦àe6ð“ÜÃvd°ŠN€7}sáþP‹°‚¶·»Ð£Dñƒq|81F÷Ñ÷˜À‡Xî–pú§…Í':°•ßjDtwëÒž³¡o㑘씳 yúö}kf ŠFÀG˜Vè÷8ÞètCsE®3Ú<IFÕ ^`JP  2 **npùp¤Prà –àY Ô€ ûР ó  8Z—X >ÀHP ‚¼– ¯Åbr&à |tæ`Ôaœxp9`.Xrà ¬@p‚÷ ddPúÐ#‘>œyau1FlÀBP9`w ãUh@Ó *{„þ[¨]gVÏà)qÉÔ‹ú¸B|jo>5¡@CO a,T•qTzY³@D=R`3 Ij…¹‡ù;‚™Œñ†!épfð ÁdÅ g( #Ÿ ˜˜õV¡¢“ð&: 4’xpÓ L¤0sÀ,€£µ€ y0>Ó00Ѐã hkfã ÁP Éà’²»6+À ‚¹àceò 6ŠGÆÈ'$çЮü°}ó ²'YžP‘ s,±]³ M)·±F±_ª¨Á87a ûªDS2éÇ8š~ñ° R2³3;†2c·þ}šmvš±ç¦IëI&;²l±k€²{Ô5P@à?cpõ  ¢àš4P Õ Š0¥@$e°Óµ¬6 ÕÀq¤…S6s`cÀZÙ H—@š [p¶’&p#ï   õ@RàrPx÷ Sd@@c°¸á=¸Žû¸Qi˜A±;X2Ä!­PD[™`!p$Œ­VµÔµH€ ²é£˜¡€X‹É ø ŒÀQTP µÐ ü0¤˜ b« ›pº¢+ p¾`lÙÂÒ Ì@W@èþP‹¹` –ðÈ Y@×° /ð@)Ѹ•{¾èk93ÀYs‰¾("ÇàÇ0´/ˆ¥50xÐŒà Îð´ÕàP[ ¢À ˜ˆœ¥pj>0 X°Zz —84p²ÅfS‘,Ðk|t=¦+¦  éʉ'•Rc w³!Ÿð›½ÀQm mÚ°G–ÄP¾¥ê¾8Üpêù|9¼Ï"¶`qPgðÕqG†ÿàš ¨ÀÀ:ú‘˜àºêƒ ¨€ ºicÕ r  e…à :†Œ°Z–Pº°¶erâ‚[@qsôq¹{hà¹edL@]þa¾=<ÈŸ¢žBP„ŒÄ@¬ !pP¯à‚z@ þðPÅ:*ÅÿÀ‚ ó`ÀÐh¬‹µ¬… ²[ /Ö›æ  úc¨ð´0°½l“ p RÞ0 “8ã` và[¹Àº’Räpnà5øÃ5DC¹‰Í_1 2 ÍÒ씇€ôpÕA p¢œ`µ`6k|‘¢°»º[  µþ;Õ€ ó0 ‰DÚàf¯6 IZVð<4ð€ò  (i\à»p› ¼ ‰` p2!¼Œp¸@ Ö` ûÐjð¦Ú4%ŠÈ×<Ò$]Òq dþ÷ Í.ç‚™°ÕàÀõÐkü­–ÀÍpÎP‹ ® ®Ù ,4 €¡ŒDÀp hÓ Õ@GÁy¬¢c+Üì?6ГXq>` Äö›¬ÕcÀ Ÿ ,3• ÷ð5À Ö Äpíp Q '€°&×z½×E0„pôÀ àDÀ ,P™`çÉsà ¸v»6êZzÀæ0ö€É\[ ó`óУ›æ-J} Zûóy² ·;rJk T’à¡°¯€ œ¹°7|ó[°Ñ[¾ $À?ð×p ] CC Ò|þ=ÝÔmÒ†° ´Pù  „à ÷ðàù[a2£õ0Áv~ÀÙö& Π] 0 Ó,@Êpˆû VÌJjf@Xà»fi@ !9‰æðcS‰ã0i°H¦Pzô$LVJÙ7p•!Ý'QŽz[²*è8T/¾ê`$ Ñ˜#aÍî‹âîÛ8)@ Y¸Œ°d‘Ü cPà68ÍqcP¤ÀÞ*έ®•ß6 ,PåëlŠ  Ø fðß÷!¥`X; ¯6;6H‰¸°Èvd‚ÀÍk&‡pÊR‹þá âP7•`ë`= A`k@žQù¥t~Vœ Ú€°U€\ñõ›.–sÍŽî¾lÐé(a ìP±P~Ps°Õq þ`—p9@@ ¯9@lO¾´T>~°´šcö XP Õ  Ðßµ0@1@· ÔG]ÚÞ2¹0¥Ø0  (Õ Љ7F ¹`Ø¿)€â è°FÀ 7à < ³ê{é3é$1•*ð#Ñ 6Ÿ.Íú~¾BÀÌ*q  à @ô@ v !LÞ '5Š&ð@ð‚ðJ ›þü°cçM ÿ€kŠÐksÀÓÕº`£¸€ Iêf ðŒ bp o±ª¼£ Øž 90Ê0xDwpÂÕ±Gp À• ë°)ÐQÀ •Ðîëpk)ép Rãs¡šÉÁôhÙ :@3Àð<÷ á x9y¿:À2tBK ÅДo4Å0U€t-‘á«À€"¯aÝ€}bö‘£ ø«@¹^ ³ A(ú‰¿ø¿UŠ*¦:öR“…`á'so(âìÆ°Ïð9RPe ® õG„4‹À@„€@þps3ÄÕ¬Íñ&Õ±·Í1³^z& š +¡À¶9 ´ª¹å,ð¸ ?\Ð< xôÓ ›0€ V@¨€ Ñ~  y™)S@Aî ²'8xœÇ£„„8… „¸ Tª´H /‰<~R$È*Bø¬I€È5BF¥‹'¤BÒ¥3R!Ý^Sd7³Fz¬òâh¢Aé–z”’ŽO´‘(Ò½XƒbÆÈnT¡4Rš´c/\¹s”€hB=êàfGR^¾8VÅÓ‘«Ø¬y1*ÀÈtf\4X䨲gÝ‚¤-Þšr«D–äó¢°º‘êf¼þЯ̾!©œ/ÀJ‘F¹Œw¹ àrr¦[RZ÷î£^NÑqC‚$FjÔȆî½pðàyÇ„«ÏñdsžÊ¥KÎ3‘¦@& @isà@=Ršø±ç£Y³qh,9K–‡Ã~0šYP™<¾á€š/QfTæÙgLn1˜2 °Â2„pgàÁ#@ ‹v@ñ."‡\ám)8óH°.‹«*ŽÚÉ(¤, I CÒ‘i$R$)ˆÔ­›Qø2¤¨¡–Œ†Ýfè&-j)tk²È9R©ÒÑæ#)ÊÀò(*EbÌéÅQþ ¤!uLDy‚ENóÒ#ž9Š:¹ò(>Òü²Ñ¥|\C˜7®ùá‡Åœ36G¥–^zQ†zQ*¹šº€fÛ1ìâˆ.Ä a‘­ú_ƒ?ª‚Q¨ºþ£ŠºÅE—…5‰½¸ ¿ÎÒ`(ž¶:ê¬%؈§'+?þ7é… 6Î")ˆ†6ŸÚàh¨ÿÈ{ðŘ䥂ODó4€hŒ¢€÷ãþ&(‚Y~$ñ¢Œ—ˆý΂K9†8@CFp@ ôVƒy!àÐÛª:Ñ ¸ÕàÈ0Ž& 7~8q¨Ž©:Nàä¸Äs®°‰ñ4à§ëE3`xîРzÀÎC,tËɰÁvEŽÿØÃ8¨ˆ½@t„DÁ#BÀ) á€ÜÀƒ†Bð»âÕo$ òpd>C}éHíKD󔉩 AÊÑP<6ƒÜ© Ò«B=²“™$€˜"-É— LQ Í>±=’x’üJ9~F0&¬Lüê’™@šàDÕØ—^З#yÁ "þ‰7°ª<¨ÄM±B ŒpÇŽƒŽ;0C¡¸T €p½­ÐDhÕŒS&\¡UÊ`%œ•.êÌÅÆamn68ÇxLð„9Ô£¦àEP¸ ë@ XG±¯­P”u©‚4F"…npo|¸¼Y]2’¼,åà’ ¦<d/TÙ *wâRàÉtcÚ¤G8É›60I S(v$FÍô”"Ä+ÿ‡¥V&¢“#É,ÞÔ#PÔ©-mÔ@" !@m‚e é/Åú|AÂèZ°_ЃÌ0ÅÙ±ƒ* £òŧìþº®0p7M•¬šðg=<`‡nâáõ8@.Æ™œgq Àƒ©Î-î ÁB€Jdà ACê‚!XТÉKD4¡ƒ©’4jR¨-OÓ¡)«Úƒj"^=?% MG4À'½´|V…J[ßÚt)MÚWnÑ !dÏUÈi'§@ÒÀ”c À ¤0 (ÕLÒ¥.P9‹2ŒÂ(^(.ñX™Ó* 'Rx*©z\¸¢»‰˜Å –Ôš[B%|Hw¯’Àv¬6©!z PÁ^Ü!³5„h tó‡@:èñŠþ\ÊgëÄâ`V –m3¸1d˜b;¦è&,Ïñx€Cf9¶p7Sˆ#E@%Bà ð` Èx‘­ò«ŽÂ’6(V¬‚BùMÄNÑ®Ajì·!)ƒvAR†2/¥u‰ ´½'}de©j(ÔQ›R ©GA¡*´écì¥Gž1¡GÚ2K˜4ª\EËwM"ñxP†L[4§‰ …é#-X$¦ÕçIcmITHÊ¡Q ›7î>ñ†]„:±8Bòcz„a8d8DÞj`xL‡䈱[õÃÂÜágÈñ vþ¯HÃs ˆ*H@fñ€LÜ Øri+‰nרuyÔÇ–§5/xÕ‡*Í3t`ƒ·H ¤n¤Ð¾YT¼4:ðx<ª°q¾\<ã“Ôs£Ö{òGi å~ôtH´Qçƒ×üKÁlE$ޱ†n£N‡) Í:Feª–ÆéÔ‹VÜn}½‹ lš[¤U‹ QEcá6Ô·ýêùgévMMMMM ê‰Â%X(²E«öÀôË];÷8pàWÏ?‹ÚE4‡ã±uk-û¥ü§·â’¼];÷ÔÔÔ°;wíÜ#3ØEùÜ!\ZµN§“~`r»Ýµµ.¥ÚýÎÝ«V=t?œ¿ðÈxD«ªºÃ¯»\²æªª"8#ÙvèKü1ˆiœNgUQUE¨~Þ§ÅZ¹hIoçHØÁ.EË‹i¨†¶àrQœ7b>¤ÎTè¶¡¾mfvórfv’º—~ç°õÇîaÿ­Âs;êÛ¸ìãºÝn—‹b«–³¿)!èGëè8¦rÑ’GëŠKžP´&öG<Ý–îQjM°‹;„KQAµµ.·{|3þ©§ªä¸bε¡¾Méó?ð¥{¤Ã æ.öÁÈÅjt¸—Ö.û¥LC õm'ŽÖ ^:q´à~EÚå KŽƒ¼Äñ¸ò׀藫RÕŽµæµæòf|òfý‡îYüÉ› ÓS¦@ÛÐׂc~ô“Ç4™ A@á—ä5Ô·}÷Ébz;¬ëÜ%þ˜];÷€È¹<¾¨@øáÌíVó}oä÷"ˆL¢’º#Ÿ–†®k—šn¶ß"I÷#Å>·,¡sîä/ Ñ9±î±?}y³ý–ÄßÀðù³ßœ?ûMVnÚêßž´…!ú'Æ÷è™wéFeÙrþÕóWNÓ-m›¼5!F@ãWé9‡–†®W^xc(Рボ«Ó쎵n®\¼° 8SÍjó¢¥ÇU‘öC+rþìJþ¥’ysU‹¢™p#Lû™fOÎÉË€ÀȸÏÎÊß;;{ò›ÓgN@YyÙÚÍ÷q&e¿¤¶iøÕ‰ 5fÒ(ý– "c\:í\.J« ÚÓgN••—À•ËW€­]Z:ÚŠUö\“9/ÂAû¡Q" s\š÷Þ9B;Úµ›ï++/£µvn=Ý`¿ädÞ‹õše+•­`‰)8–Ù+ý„Ac«:ígš=¹þÚ º]”ÇÆ-ãb9q‚Œ¼$L[¢G‘ª$¦?‘fÂ0í&žÆ˜W9ÚåOÊî ‹ÅìHh—é*Š5B´ô¸ªÓ~`sêÑ'ÑfqpVÅqJíàg}¬Ð8T`´«Ô£H„ Q‚óÍ— ¿G0´P4£ØìˆRbüÍN¨púÌ©å÷®Ðv ögóϼÓÄÒTL¼Ãšhí*Ȥ¥¡‹nˆí*°Çˆ!ø¤"Ñ'5§‡=’ßÖ‚Ò)؈ béq[ºN}ê¢ÛìP†q·§>u­x¸ ¿?CØh/\ù^„Vm^^.ýRpWá½wŽd¤åúÔõO¯Õt™±mäh\>lÛ}KøW2Òò=.Â!–Â…‰ø•‘¯ ¨Z„OŒ…«“yá£í0Õ x‡z:}¡1rÞ]¹_|v9=Ë"Éi)™9i±^- /ÜöÆ^_ÿ(ݾr®‚~*0hêñ@VnúµËÍ%e±\"b¼!-õ·òйnufVbf£hþ¬¬Üt8ü‡b±4$ºèÈã*=çÐTß=:¤½ì€××ÚÜÑÑÑm#ˆm;oÿòÈÞÝû6}Ï<ûhƒ^„«"í§Ï3˜””ƒ—þv­ÇÓ7:â§(jÏŽÚ´ô™>¿Ö¯ÝÐÖàIvسóÒ£º~d’Ñ…pU¤ý4Õw3íAßРoØï#)’¢(aóz}?{þé½»÷Ùl„ÝžÔXß.(\¾WqnFÎxÙ>ò-kž°dt!\Ei?C¾Q¦m·'ƒÁP(D„ H’ /ï~{Íú•×ÕÑÏ·À?¥Ã˜í ôøp&g+7àݽlÝ ‚ ññ@A(D „˜Á¿¿"¬AöùZ~*»!˜rÃÏÿaúŲ}ó‹ø ›z$± νfBGWiÚϹÏÇåø£S§†B$A6›-aJB(êî&IÊf#‚¡Ð¯_ú€?ôÁBæ#˜6 ˆßCp<§!=Fp¢°·˜ ]WEÚOVAjgóxÐÕÑ;}ºcxh$.>Ž Ÿ¿gÂ,éíêñô%MK›D~~}ÄQ°ŸCä^Mâß«(2V}¯±Ð…pAyÚOp,C*—”:Äõ©)Ž‚° x}yERG4ñL:чN–1 è(Æsr‚ØS½^ߘ ~ªzÅò¢Ùù©©ÉS§¤¥Í¨¨(߸a·`åºÊÑQiEß‚:ö.édÌI 7MײÑ×!EÙ,W/6w6÷­\Wyå\;IRÀígoÿ@cCk(*š—yïJŸx‚;ÿwãKÁ¸“½Hö¶±‰Ø1(^æ’`x-q£Ø2Ìà‚~B”Vözúß?xÒçJN¶ôEQÝ]=m-7ƒÁ`áÜ 1Õ‚x";ß÷‹%êÈü”›HÂ¦Ì [Ñ`3¡£PA÷TßU\šÝx½¥½õfW§§Ü™ëéî½pþÊÅ ×FFFKÊóV<´8ÖkD¢‚¾BuóvuÜj¨oïhõôvûüccŽ”¤œ‚Ye gçâñsÓbàP!3' ÞZ c‡ ˆe1p±ê”¥0pKa†7Üg/ xçÎ/€î›Ý‚mÈ/ÌŠå*V÷¸Î¥‹ 9Ù.ÑFÕê‹z܃ûß ‘äê5Õp£¾©±¡¥úåm-]ìv’#cßoûÞÿ¨çü1®î°¨ÇݲõQp8ì0§¤RR§qÚ~w=v DÂ`QËfä÷Ç«.·úÇl}‡Ž¿ëÜ<‡˜õ×LÏ×u-Ì€#Û—À#¯œez³'¤×ð{džj‹àbä—s‹±¨pl_ê!Ÿ;÷çίN¶.”1¾0''ìþ¹Á“.JO‚+E~¦ÓV1Ḵ¢piÊ0–ú1À¸z×$üâ›àsLšaAæäTîøc´W%¡ï°=l 2¬‰­} ÿ4œÄzÂRÓÖ¯›á¬s¯ŒYŽjÃ"¨Z‰Dù~TÎG¼àqGÁ9™?bwIXqñ ¾OÂÚÑ Sy\9¢—ó¡Ï¦æØ®ó;úÏÈÊA…#”cSPôŠŒðƒr:')f–}i2ˆL%\90îó…ŸžXRÿÕÉÖ…¾3y—[Ó_}ëÐñ×›ç ‹« ¾®k¹ Î-èÑvÑx ü V:‘œÀWfp< zÝ IŠ IjYEn¬¼N·oïßvñÈö¥J D/ÉGДDÐ)gjþÁ»¢÷ägQá²…¸ø65Ñ&™ö‚æGÛOíå†:h1Ñ0© a{Ø÷J˜’?»Äxþ‰ž¨î²YQ¸´j³ ܰrUües øŸ¹—ÓOÃ> ›x#ÿ*0üNƒý’s£àxþ-|ScØ=aW¨!¦ÚUs¯&» CدT¢„åΔ~è£j¥™L±²±œpi!ò¿Ååv[,'\š°ŠDÉê‹ 7, ×:>ÿ¸©·g()%4ï[iÎï”9ɱ^r®CƒÃÍý]-#þ¼çiìOÑR¹¸<ÖëBncÅí0iZ[:.o¯ûS‹„d:¿ø´EâdòA{µ/ýŸ·Óæó 'ÆOŒ»É¡E@ƒ½±^r'èqïà©Y?2š—r[µ@Ù’†<´jbÐãÞÁ«/Ôf,Lè½”?.Y ¨éé‰sœÂ? Ä î8EíÝóڬ̴V¯èYÜ{ô7ãU}îy8¿°,¹¸$Ÿ)}Ž6ì±Zþ%ö"ÿ‡„Ñ`¨0®ÚW³s3V=x_§/11©|E–¯-^¾¦„­ZìƒÒ‘ÌN£ÕY*ƒfã(… ðÂ/ÿ37?û¾Ëúz}S¦Lmk혿`¶-\¾¶8>žû¡$¡0v: çªLIñog^²k 4½¯¥1U¨ ‘½#qþf÷Ï_,š¿lù·{ºû)ަÆÖìÜ´¼‚œg^›§ÎuñsWòoç¤ÇˆMAcÕ‚É„«âdÙžŸ¿”à-[vo…§«755µ±¾yöüܹ%Å áŸÆ8gd9‘.g°„ž8É<’L±–~ùì¿Ç{KÜTñÙ¡‡ÃÑÞÖ‘_œ™—ŸË”B±?˜~ILÔ¸”¾WÑæÃºÂÝ»ûU[ïü6U¸êšm6Û±C¹…sç;ÉaßÅò{h"q1OÑ3¦ äó?ÿõNFââ…—sîtk\|œÏ;ôÈÖÒ윌¤¤¤È³?ÐÙY„¼,möȰ 9M‰E=nÜP‘ó¾Â _vÄ'Ä ô­¯™;mZ¢Ýn—oA"%DrW¤i8JÓcä˜5õ¸MÃnh¶ÙlÓ‹ú+ÌÉÎÍt8±^”(±JÑ3õ¸Eöt ÄÏlÏ/ʼë[zV-Xþ9L+zÜ{úI„f÷ýý“OÄz-ˆJ¬èq3Ê=qð£m¨ZcE‹’5V.›ïPO§/4Fλ+÷‹Ï.§gÙC$9#-+þéK ·½±××?J·¯œk€ Ÿ Œšz<•›~írsIYA,—ˆˆ`Å—¦¥þV^1×­ÎÌJÌ,pÍŸ••›‡ÿðQ,–†„Ç$WéNgS}÷è`ö²^_ksGGG· ¶í|Œ³w÷¾Mß[Õ"‘cá±uk-ûeXíöy“’```ðÒß®õxúFGüEíÙQ›–>Óç÷ÀúµÚ<É{v^zTרÀðÂ¥Uët:N'¸ÝîÚZ—´v›ê»™ö ohÐ7ì÷‘IQ”°y½¾Ÿ=ÿôÞÝûl6ÂnOj¬oç 7J‡µU?¹ι^`xáÒ8Ϊ*\.Ê®õo”iÛí‰Á`0 a#’¤‚ÀË»ß^³~%ÄÇÇuuôGuå gÃ>f{8“s–<àݽlÝ ‚ ññ@A(D „˜Á¿¿BæÔbù6œ“ròmØ –° ö·àb$–ʹטÄãºÝn—‹b«–ãv9‚>÷ù ºáŒNMœ ‘AÚl¶„) ¡P¨¸›$)›†B¿~é9 È·a_•ŸÀ#h“ß#8QØ[ á…KÿçÕÖºÜîñá©§ª¤ÿ² R;›Ç€®ŽÞéÓÃC#qñqAøü=fIoÿP§/iš–¿¨¹8$,(ŠŒUß« /\Wj”Mp,C*—”:Äõ©)Ž‚° x}yE™š.VN¦|LãrŽlKcwLõz}cþ1ø©êË‹f秦&OMœ’–6£¢¢|ã†uÞþ•ë*GGý¥E®SN¤Ä0Í1V\ËÆ W)3ÓS² ¦w6÷­\Wyå\{RR~nNÀíoÿ@ScÛÛÿýIѼ̜ü A#ÏÏ¥QšÀ#Ó‚àJøÉ7š#íNJ€ҊÂ^OÿûOú|CÉÉv‚–"EQÝ]=m-7ƒÁ`áÜŒ{WV Þ.–o£n˜| ü±Á—2“„ *¸§ú®âÒìÆë-í­7»:=åÎ\Owï…óW.^¸622ZRž·â¡Å±^#"ŠyÊE©£«ãVC}{G«§·Ûçs¤$åÌ*[8;¯Ð„Ïdf¢¡CfN½5"Ö CcuK£mˆ‚{&®Æ`ÅžÉC-ÁŠ=“z\ÍÀŠ=“ z\ÍÀŠ=“ z\ÍÀŠ=“ W(Uì1Ê1n¤Pã{2ï¯^ÆTì¹|*nùÚâ{.”øqsMòÀ´Íö1PúƸ‘b¦Š=zV*ô¸ã`ÅcÂ+ö.O·`¨ WìÑ¿j…«Wì1„jC˜¸bçNÏ Fá*†®ØãªkŽOˆë»åÛðCí+öð/ÉÏâççÈÌ)’è×!(\Å`Å=€1®b°b@« ¬Ø£Ðã*+öèô¸Ê@Éêô¸ˆ!A«÷Ù ÞÁ¹ó‹ ûf·`ò ³b¹J“‚W=Î¥‹ 9Ù.ÑFÕF ô¸Š9¸ÿ½I®^S 7ê›ZªXÞÖÒÅn'92öý¶ïýzÎCáFô¸ŠÙ²õQp8ì0§¤RR§qÚ~w=v ´èq#bä÷Ç«.·úÇl}‡Ž¿ëÜ<‡˜õ×LÏ×u·óÑl_ ¼r–~ÃÔù§g”¦fÄä\z\ÅÙ¾ÔsuÖ¹?w¾óÊE9ã srû}D²æ[1i;ÑÓV¬~=®2hÊ0–ú1ÀBº½&áߟcÚÐ * 0'§rÇ™ñžŒŸªÀ?].!>ÁdöK‰«‚9a—½÷ÔaõŸeæ•€YGµaᨖ†“‡#öî”…`êŽàKùÉ?3ò&8£Dg´A ;oGìC_Œšc»ÎᄂUꎘq±K*$ûÍ£Ÿ“:(\0îó…ŸžXRÿÕÉÖ…¾3y—[Ó_}ëÐñ×›ç ‹« ¾®k¹ Î-èQ1Käâ°ÀqŸŠ ê*9ÎTA’ @’Ô²4(ŠÜXyn9ÞÞ¿íâ‘íK9F”Rw¤-Ž—9˜àÆêQŒ W1l!.¾ @EM´I¦½ ùÑöSû@a€A‹ƒ†“º#&M±Á‚ãù¦¤‡5+P¸Ê U›]à€•«Úà/›KÀÿ̽œ~Áç³°©;ìh’ …ï<$ÎïäÛgwrzø3 Î"ñÏ™pWAšì* š€g Pº«€ª(\ÐBä|‹Ë'ì$r0T@ ‰™=.V¿11¦.V¿17æÜÃê7¦Ç„«ßXz\¬~cLèq±ú0•p)¬~cÌ#\ «ßX óĸXýÆRèÎãbõ¶@‹ ;ábõÎt*bøPÁÄÕo Œ-\³V¿ÑO†ŒnÑ]¨ W¿‘¸„ÐØãÒÕo.|ÙŸ7Ð?´¾Fûê7œô¦3¬öH~†ŒØ2/!`h‹Õo¬Œ=.V¿±2Fõ¸XýÆâÕãbõ‹cT‹’µ8Fõ¸ˆÅ1ªÇeƒÕo,ˆ<.V¿± ö¸XýÆÊØãbõ+c`Ë«ßXílƒ=.V¿á˜•³Ó`T‹Õo8“Š­Ç¬èîGï$Àê7|ƒ|,’1¡/‹Õo$`¿y,®ZЛpe‚Õo¤ƒ+`à‡3¬~f^c`ábõÎæªü¦q1ªp±úØ,âwõµ« ¬~ƒòá «ß †ô¸4XýÆÊX¸ˆ•1êÃbq4‹q_Ûû–ô€Ÿ<óZÍ… Ú÷µ½o=^³.ìÔ.¢„ ÿûG¯Y—‘1‹þO>ùCæo¦ÿñšua½2‚ÈDKëuÆ °iÓ¦M›6}üñGô߇€?üƒ š YŒ[µyË–<øZ©l¶lùAýÕæ’ÒB­æB-¿€X´Àùò‹ÊvÑT¤ÐHßξÉ—ŸV;³b84Û‹Ü¡j›B¹)DÏh*””nذáå_€þ×b_¥;ùˆ$„p).Š|³˜`yeu‰:H¬®Òê7%¥…õW›Š)U)Ò 0‚c˜~þ`±ùi6ˆN®Šï{Õy\‰>¾Vð’¢$Î9FDŸh*ü¸uÁpIs¥BGÌfÂ}#ÿÒ[$¾¾R©Çå+OŽÕ!Ç,†@3á–”¾—àÅñ—Zy\ö怘ž(¡Ÿ2VL Òc]ã]Á\±«‚—890Òö%,ÈY¢ ã"Ö$ö1.‚¨@ƒ‘>8ÜVï {dñµ½o啤nÞ¼)Âé4.LhWz ªÑÜúA æœ!†…‹.bHP¸ˆ!Aá"†…‹.bHþ3^ÖØ–{IEND®B`‚apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2_files/scoping2.png0000644000175000017500000001165412032647263025424 0ustar ebourgebourg‰PNG  IHDR¼®5ðl pHYsÄÄ•+tIMEÓ 7bÌ.¢tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíL[ç¹ÇŸslÛÁ@B Û\ 1%m™IÕ†’Òi³K³Véî:©ê&¡þªJ÷Ÿ[i¹j+…nj²lS:íN­Š6MբݻiÕt×$j4PÒªÝìDÊ]’5l ˜€‰Áìsÿ8ääpÎññùéóëý(Bǯ_¿ïΗçyŽÏsž#T :<·HDÉ% i½ƒ€«1¨@Å Šò¢!ƒ01 ‹&:<ñý÷ß%ûúúúúú†Ì‡h0¢Æ"súôiòåÛGûOŸ>ýý÷ßEº1vÆk Ã^{m€þRx¤hñ½}´¿¯¯ÞøöÑ~ܘŒÚðùIDATM¢! …B¡D"‘°XÝ<òµ'Ÿ|æ1¸rõ/ îìÜdÏÂaAsuvbŒžôqÈ·Ø}ŠÀážB¡Pg'ÖÙ‰…¤^ƒ’Bé¸ÿ¡äÔrÑÎá0AžZê@2äá0Á"BYøa š‰Ol¯sQ/·×¹¤4¤jéçžÞBÿ)a4êãH[Ò`Æ4‰DÂa‚®ÆWp¯þÛ‹ŠÌ…ÐDhñE‡'¾þJ€¼äž¾|Ýçí£ý€Ò²Ìw ‰H å|a”qO’‰E§o^½5y;ŸçЮ§ÂÝôï 5—~a)—ñIDAT´Íù¿¸5y›§CzaéÊ—_]ùò«Þê§Ÿ{¸d C𣱥9wé7äAG°›ýî•Éƒï¾øféÖ„(†Â1ØûV±èôONügfm–Vïnu{z¾Ð±oï®@­”Õ ÔAIK#!U”TÃî¦ö[-­÷RŒQL42SE·ºËë}µ°¶¼a«vÖl\Ÿùç¯.^€`[°÷…ŒIé/É[ô ~-É95©JÏê…c2UÂa"¢Ð¥‹—ƒmA¸qýÐuCž6e…Â}®RΫ+TyÂÄßüË,1’ß~ôÒÀô¾p Ø$uSúó7äýhd°IDAT%ãéœB-œÃÒUBWÏŒ‘é?Å>$¤¶4’SE·ºË‡oþ“h•p¦¹˜È 1Ð…hd¦Šö¿sÒ‘ v=Úž˜NVVVŽ 5íö6·‰‘/Ïc+Љh@Fªè{ïþÈžÚsðHû§gbÝÏÕONÄýZŸß1iÎIDATËé’ä,OÁÑŒŽŽbz”À?v Oî~êH{xh ÇñógF¼ 5Í­§¼¨m`ÈT ßA&ôci$ð‹Ÿ}TãÜ·÷›õ—/ŽÛì¶t*óük{êêk\.Wñ€€ÜMQݬƒŽ,Xl™ÆÐ†«_ÄíÛÂ|æp_óÖ­N·Û-jþÜMF(R ‰-ÍÔèRÆp¯jœï8X_ç­õxå¶æ^~EÜ/ùèËÒ§¦-aÇ«o"Åh€Q- [.¨ªhÉ0ª¥AhˆQ-Lø¿£C—ÖüXT4PxÓ•méIDATG±Ò¯ÄpXW4ÀºmŽay›ÝÊæÇÒ¢a@Þ.@Û[‰f”n±á‰† gYŠKJ~ ¾Ræ‹¡Kn¨óÇù.uzÔ›Z>ª¦p Ñp#6²)TW–§…‘ŒLÿY´3{jÆgUõ­¦rO<0¨úe1Û)iá<(4 Ogjpª]íhÌ<¢)Í=ú‰aÃæ2iŒ(PùQøÔú ÌÍ#š’Á.°m@¡•ÖCý,¶PL#ò”Ða<-Œq”]eÞJc¥Qv± ›¤ç¬d$°Ïë)ÚR(YxgúK! P K‹F¡½…,‡uEƒnhKÆ¢¢Ña ` “‰K`IDATÐÕB4H4јÁ=-¤2³SéÜj¾õïçŸ^ß±ÓËç·UWÔÖWk½4sbxÑLŽ$Óó+äñË“°ž%ÖV×Fg°Ó»ãæõ±–à.-—h:Œížb÷}¦9Ù¾ÓY»ËÓ¸ûžÞðûÿþ_-–fftdiÄÖ§žYY\'­ËB*=>Çgp {óè‹TŸãÇ~~ä_ͳ}‹NЋh0ñ%aç‹.—¯ýßÍÙÄÜÊr– ˆþ¨Þ±=MÀáÞoLDåwo‡ªë·º &¾$ìèð u¼˜Î,¦—²ÙÕ<‘'ÇðT*ýï¿qüØÏqs»]#/¸ÎIDATÓœ¢aÛ6±w‰Å–B>¸ð‘É:%@¢!U6“^¡ŽÝnçúúz.—Ã0 ǰ|žX_[ûñ±_ÿËá'Àn·MÇçÙ#pæ=©ñ«7_G=ÂBÒ©Ö²¹¯uÝK//­¬­­;ìv —Ëc¶¾–£:?÷힢Òó‚ÙÙ“ôžœKÎvÎ{ÂS?ùÓ@ù—Áø¬RèÈÒˆ- {ù³=/³k+eβ\.ayÇ[¹\n~i&Ÿ'p[ÏåþëäïØÓ¼ûÕRfŸêÉ“s)Ö–ÉæäïÃ9QÑ(….DCˆ/ »sWåÔØ†Ó™Ž'«ª3›˜små® K·.…RxRèÈÿkæùÿŠŠ„$V8º ˆ/ »¾šƒ;]: ž9ô%ž ×–VRi_#ßn†ŠüEê$R)Í2tӈʥu{ÊR©ôjvÖ²Äã=ÝMþÊÊò2ç–êêmíímÏ}ãÙÔüÂÏv¬¬d÷´7²GfŠ~ŠÑ`ž•0©TH_{Xòlþþ·±©±¹'ží¸qy2Ÿ'€»q_j~a$:ž[Ï5¶Ö>úDÏt$œñgœA_$½}œB±ŸL(¬°Ã)žZ†JkzqOØÓÞLÌÿϯþœNgÊËÝùK#b`¬›IDATfzv"vk}}½¡¹¦b pŠ$ò%𦍉xÆT‰ê¬:rOØÿø=u#ÿˆMŽßšžJ´…¼‰™äÕ+7þvõæòòJK›¯ç™}Z¯Ñ„èË=I›w:~;:<O$gÒÙÕUO…«~×=Á½M¾´›·*Ø=QÔÖW£Ô™Rbl÷„Ð3Xe]jôfü³?&g3®Š\ëƒÕ¡G‚O¹b£óˆFA2‹KScóÓ±åì2,Þ¶%Fæ+·Å:öµi½.½€Ü“ñXüÚ•É¡cÙå<ÕøùÙ˜†KÒÈÒlbàäSSx:½ä´WÝÝ Ë/&µ^™ž@–f¯¿ux94¬ê;IDAT“+³UÜU ¸ËƒǼ ²4›8ub f¯#yÍ¿!ÀˆªÎ{C÷P5%H4q¼ÿƒ{j«Ÿzºgv_òÜ/7ÒI÷ò7Ë-~zgö]ÉÒ-T Ñl(æT·ö±Ç»fsN§«­'w}ÐÖÝØ¨½ñ®ª·õŠiN¼÷S¯¿î@O×\2½eKÙÄx|÷}M¸#ßݸUs¡üišÆÂT–FZuÏcïü°±ÉßÕýðìÌœ§Â3:2^ç­öíªÿÞ­Î1çã&Ë-7•h$|#ÜÿÎIG*Øõh{b:YYY92<Ö´ÛÛÜp8ÄE¾œÏ‘˜@œXÚ=*ΆùIDAT½÷îì©=´z&æñx&'âþ@­Ïïè’,‹uEsüØ)<¹û©#íá¡1ÇÏŸñ6Ô4·<žri‘Áª,lJ3&sOÂùÅÏ>ªqîÛûÍúËÇmv[:•yþµ=uõ5.—Ké}Wë‹E--Ó:Ðpõ‹¸Ýa[˜ÏîkÞºÕév»E ŸÄÉμTé ÎÒcQK35º1Ç«ç;Ö×ykÑ^𱨥!ˆüìô‚}û¤¿±öÛ‘bDaEKóƒ7Îç±Ü¶ÀÜ˯ ½à¥`EKSÓ–°ƒ½L]ãP.€dæ¾á˜¸9)È\ˆÌ„^IV+.lÞÒ¬òª€£!2â$xäÙªÓ¿(ÐeÀ¨ï+Ú>Ïýç‚Ì…ÈLPRUMé@ÿè#ÏVW¦zzãû¼úÊQ@¹o’†>âîîæ~&s,B¼³ºñÆ60Õ×;49v'¥´V§©®/’)åŸIDATk²T/¿a®¤SIŸ}òÏɱ; ¼ÿ•/o]ùòV±©ð{Þ·l†!xfŸtö‹ÿ#6šë[ã÷^¹q‘Øxú‰—–Ï&/Ž“¸Þ³³ Lý÷[ÿã M€n–²7W£mè@ó¦&s•5ˆeDHŸÄ#s—ÈšÊæø]5µ÷’‘XLIIfîæjòŒ¥¼Z±~á’Á—ŸßºøE'Ô7Ô·ØN™”ü‘Hdðš*íh±ISôЩH8N"2wÀjÅ»º©vñ‹Îú†z¸qýÅD|—ª‡ò\Ë9oæ“’gpûÝPŸŸ$üéÿ®¨ýÀöú†zBÄøljIDATLKB~ÄŠØ ¤<€•¨…vX²tÈ’b˜‚22ù/×çÀ2}ïÌÝ\M^ß·ÄvEÙ¢ H1'DYÚû¾6bÛ -œ¾f†)Ø÷5‚))ÉÌ]¸bÇâ$Z؈)~Rr mh•h1Q¢%®j†zÈé“xgîÂÂêF=G»øEçÁ>&Œqw¡XEq!\Ç‘Òò”$¯n11qýÍ1¬n)‚²¬Äk"¾…v5ä4c¢Ù%@š¯q“¡¬n¿èlÝÖ&ìd¯[•bÒO´Á<) ‰Ÿ\Æ’ªs7–ئˆDçnä>‰ =Ÿ‚ ~J ¹g|Ë’#p‚Ü( Òé“lS´v^áIDATg¬Ä6yu#ˆ9¤Î3Ö¶Ý-èJw†#¼’ØÿΕ–šˆ´çnúðoúÂÒÎ3Öÿx±]P3Ó‰”\Q á3ÝØCöIÓw蟆Ó–òI™O:•wc ˜žhA2iVRJçèïúûÓáSë"µ -÷×kµy‚ŽXL]߬bØ5e 0{Git寴5ojH·]’%ÍWRĈm¼÷ÊØ…OlÁ@4ÖxéŒ-&I ú¤Ž·O¹'^¯?'«€xb3/²°è¬3Ý–I ú¤~¼7à‹d+ußÉp…Z‹î‘¥ ú¤wÞêÐ7©œ½e  /(ʹˆ£”IDATÇ¢J«]GRJÂqüøÑ_­6îú^›c“óìûÓDû–ÝeåõyU54e0P*­PHGI8Ž?úN‰ÉðÀŽ­ûLNŽº¡-r½SÙÚ^µewyVÍ¿¥Ò ˆtâ¤·Þøµ©¬d{ÛÖ§wÅŠìÑ‘ñ5k+ªhk{Õ’2ÒÍyÚÔX~/Mç“#`¸hyäµ_TT–mm½Ï1=£Õi‡GJL…¥fãO~UËã매Æ"×ņŒSkÜG_{[å®ßº­Ñ>åÌÏÏì®\cª®©R©x†Ø O&!!úÕí×™å®{hã¹6­V;6:^Ve(-3Ñ®h¼ÁI8¬£Î IDAT”·’ŽyGá\³k£õ°B¡øìÄ ©\_][¥Õæ-éE()‘,—-䜑q«{~÷›õ9›š7ö\Qf)½nßcÏוõjµz郀E*-§n2GÄ>Ié«°l/¿úÏñ,•Òãòí=T››£Ñh8 œJKÉÇE2b@Ä>ibÈß Ã …¢ ÂÕü±ÄdÐjµé6J¾ˆØ'áxÔ1åÉZ5VVaX¿¡É(½ˆÕ'ýüÅÏ¢XdeÕÌSÏr{Q"EˆÕ'éìJP=÷’Q¦ VŸ„4”iˆUIdí¼z寵«}À\MCiÛÛÒm£\ȬÕß¼SãwúÇÆGìÎiop~^«SÍ«ë›*KËQuÊåCÄ«[ ƒ±¥"¥q¯nˆÌA >‰ÕÍM/ÒQ’€ º¹<@«T7—È'-ÕÍå òI‹@usyƒ|Ò"PÝ\Þ %-€s©››vù ÍT’¸×Í]þû£™Š“¸×Í'QêˬY )Ÿ”9usi7ˆß–’RRëæÒ>*$UÑÐ"ëÕmyêæÊù*)™º¹´ÝR†<͸œÈôÇ—|Ý\Nà2¨ž+SŸ$TÝ\†–øDØõÕ'zIDAT=ã›!ÈÔ'¡º¹‚#SŸ„êæ Ž}ª›› äè“PÝÜT G%=ùô¾ú‡¼}ôs7§Óyòäɾ¾¾å±JìÈNI~¿ÿÔ©SÇŽëììŒ5:'ý¶™I›kÒærNú‰F‡ÃqþüùÇ_¾|9=¶Š ÙÅIN§³««kÆ ………—¾ør˶ÍÏ\›š°»ÝnÀ!+K¥ÓéŠô+[iœqz T*ÕÉ“'Íf³ÉdJ·íì”TZZú³ŸýÌáp¼ü£—û®õZÏ^‘c4–””͇‚u.€bdxôwïÜúúúå™ÙɽûöëtºtžéÈNI`4FãsO:K«+IDAT½|ýÚÍ\z㦠uÍÆ®üËÚs±µuû}[6m†5ç>ýÒ?·¶ºz_ûãÛÓm¯8]œÃ3XSW·­ms]³fýÛȰÇã&öîjß|ÿ¶–Y¯ÿÛëi5S4ÈTIg?¾X¤ÙÒd®]x <œs{ÜÁùï ¡Þ»­© 0¯ÿÖ@üáØb@ÐzEñŠ"?N¦Jêï¿m26–ÇZ<^÷ÌŒÓð‘»UU›=m`Šrxìy#E¦ŠBF O%Ýêp8§Û, €Âá†aN§szÚk¬i0+³ð@À¿ä˜‰êÔ’;,Y•6ÞÉ(5ER7ËìÛP((ššÖ €ì¾ IDAT ]»vM¯78°?Ö<±·¶"˪´ñýÅ"#˜’XfßFñ(J£Å²Q¥Ê:}út___·õŠ¥e¡\$Á€Ãú’¨¼Z«Ò.r\Ýrr²sÔ9ÿñ ¥}ݺuÄ0ìýÞ±À@ÿh4‚¯È^‘ü¤8‰D}h—H± )ŸÄ’|]¹¬üæ[}½uµk+È»*++Ÿyú¯×Wf6ÀÈÐX®Z«Ó yY’9ôoÚ®}’Á´ª¾¡.à^ø¼kr”Z;¢¸ÄPS[7¾ùvxpLoXm0­LrFBbT ä¨$غ£¹¥Å2p{øÌ§ç‡oORöºKÚvIDATþ¯­7{¾úÆ 7Ü¿£)Ñ l Ö’7ÈK­žEÙ¢ŸW7‚}ÄqÜúUcÚ¹qÓú»ï‹íê<×e«¬¬|ø±­i´P\ÈWIðè»V®ºúïÞ|Þuê“¿ãQP*:]¾~µ¾yã†m»6¤Û@1!k%@ë®Uµe.—ËçóE£Q¥B¡ÉÍ-((0™W§Û4‘!w%€É¼é&y’èAµo¹‚”Dª}Ë™^`Õ¾åòI‹@µoy#Ÿ„aXK‹EÓPí[ÞHÁ'aöüóä¼/ £Ú·¼½’Y,‹ÅÝÝÝVbJ²ö­„o¨±Dô›Ì0³IDATJ"°X,--X­x7CÂ[PíÛä‘Hœƒßë”’¯}KÀ__ûVbÕp%⓺»»­Vœ,#ŠcZ†Ú·ñiµ´‰¶ ù¸¢FôJ"¾•Žkw÷²ö -ì¿¡jßÂRÙ ñ¢”Œ7"½’`qGà’ÍC®}Ûú¨1¥µoEšuĉÄI,ß¶NFðÚ·,‘ªs’‚OâAÚkßJ¯®D|W¯}ˉk¤‰=¨öm*£OŠ×Pw7ÏÛ,ˆrôIˆT GŸ”$Ì%sVϤ$>X­4r!ÒZd RO(òíIDATq†aD2‚4nìó)Iˆ»´¾J& % FLLòtKHIBBÉo¡Ep1®ä4B’Éwè*€ÀľTÚ½äz¦)š:yø™‡”$<\£%6)Þ‰Š0Ó–¦dî?5åX~ŠD«Û,+0 ›oÚu'ѢƩ³€u›‘’R¬•äo‹² ‹_7@i¤‹0/ÃRÒ²B‚Ä{‹D-)²'ö7™YPœ´LßJ€ÂÐBGXÃbŽ0I±"Ÿ”fؤx/™ôMñ^iÉGJZ&žRbóS|V8Ã8l:“? òRO¸8HI|ùmZ’8#Ã{jl@çna@JBƒÜ9b«ŽIDATW7Ûç˜ðF棵ëM—Î]/*ÖD¢Ñ•…:ƒ±0ݦ‰ Y+ilÐéu-¼ŒûFÏ„ƒxh>4ä°@±©¨ïúpM½9&Šù®n¶þ;¥UTdzª8Ç`ÖV¬Y]l*€¿þùÓt˜&J$⓸ÖO꟞› ~ÈãöŽ O+0ì¥Wžˆõ9~äÝý?hO…µ’D J¸WQž±ÏªÕ9àñÌö~Óç°ÏÌ‚8Ž=ÜQX´Ê´ÀÞö}£ö<­¦¤´(¥öKÑ+ ã^Ey¨:¶=ëõÍzýÁà|â8®Àn·÷§o¾xüÈ» ¦Ñ¨ûÇh•ï¹ÞKgÙŸÇ[€´³IDATM4ö#ãÂÕ½’8UQöyçbÛMN8ŽD"†)0,ÅáÐùÃ÷÷,åÔ¸+~Úä²T\±QaS©EÜlrÖBÁÈÆ­÷Ûÿ\(Vee‘HÃ0À°p(ëüè“mKHÎÝŽOf%o0¤ÀÒ¶ÓÞ|eŸ‰Ëœ•ËlåØ%‘ˆOâZE¹§ë[b#šËÎÉŽD¢U(ªªH$âòOG£¸B…#‘ß¾}2~:rZcüÞØªëÉËÕë°I®eîC;Ñ’‡,‰è•„s¯¢\lΟ^X³¦ÆZ¿/ ÌRbæ :îu»|ûŒ:—¾œ2Ù%ʹGý IDATâ`Èî “|òÿ—StÅûX€’€{åð|îvi¾·þÄ ª×Ñiu¦ðûç=åµM†Ãáòjý¶Í‰FH”±Êœ Ëœ5Ëi"†Ð1ŒIDAT1Yjœ:/‰DV7lÙ±¾ª®dð¶mldrjÂÞ`1Ù§W¯Ü¸vµ/˜«i(m{xSºmô¡bºê..ÿ¼SãwúÇÆGìÎiop~^«SÍ«ë›*KË™mD<2]ÝbŒ…(I仺!„Eî>‰@ØUu o¼ëïCN‡O­‹Ôn(´Ü_¯Õæ 6z¦‚”$0¾YÿİkÊ`öŽÒ>èÊ_ikÞÔn»RZÝ„dÄ6Þ{eìÂ'¶` k¼tÆ–F“– ä“£ãíSî …×ëÏÉ*˜U^€¼È:À¢³Ît[¶, Ÿ$/üxoÀÉV꾓à µVì"Ÿ$ïÝ´¬"IDAT¼Õ¡oR9{Ë4^P”s…óË™ÅR’à8~üè¯V w}¯Í±Éyöý…ìÞ-»ËÊëóªjÊÈãoÓ.Ÿ¡©))Yp?~ô“á[ö™œuC[äz§²µ½jËîrÚ×|KF=dPœ”,o½ñkSYÉö¶­3NïŠÙ£#ãkÖV*TÑÖö*öo‹§Í|%osÍ…]~OZ€_íÛ#¯ý¢¢²lkë}Žé­N;48Rb*,5ò«Z†o’¿Á27ß@Jà[ûöèko«Üõ[·5Ú§œùùùƒýÕkLÕ5U*Õ!6?Ad²Œ­n¼yãõ_f¹ëÚßxîÃÕé®IDAT„M«ÕŽŽ—UJËLìW4‰”ćãGÞQ8×ìÚßh½0¬P(>;1h*×W×Viµy†2™Qé(~÷›õ9›š7ö\Qf)½nßcÏוõjµšß€ )¶xÊ^r"8È'qFé«°l/¿úÏñ,•Òãòí=T››£ÑhXNîàw¡´@\ŽlÆ‚|g&†üÝ0¬P( *\ÍKL­V›n£ÒòIœÁñ¨cÊ“µj¬¬Â°~C#’òIÜøù‹ŸE±Èʪ™§žýaºmÉ,O↾Á®Õs/!Q‘²OJE,ÒP"$«$ÙfÁ¦ i®nr΂MôI2Ï‚ÅIDATMôI2Ï‚MôI2Ï‚M’RR’Y°ž”áHGIÉgÁ"%ƒtâ¤ä³`ã3\YVE@ú¤4fÁ2tKQì4’qJâ‘+ll,`¢ˆ³Y2Cô«ÛòdÁâ$VJˆ[I)Ê‚e8CÎ)·º±Gð,ØD$_VˆØ' ž›¨H-ÐeÇ"(ˆØ'¡,ØŒBÄ> eÁfbõI( 6Ó«OBY°™†X•ôäÓûêò~ôÑGÌÝœNçÉ“'ûúú–Ç*9#J%ùýþS§N;v¬³³3ÖèœôOØf&m®I›Ë9é'Çùóç>|ùòåôØ*D'9ή®®Ým¸IDAT 6^úâË-Û6_}º¯¯¯ÛzÅÒ²ð>äH$‚‡e%ÑK†ã×&NZ‘¶¶Äººåädç¨s>þãJûºuë<ˆaØû¼?b€þÑhqBý/IDAT_‘½"ùIÙäà&*Ä.mA¦ù$öäë Ìeå7oÜêë­«][AÞUYYùÌÓÏx½¾2³F†ÆrÕZV'àì̲ˆ_Ú$/#¯O2˜VÕ7ÔüÁ ŸwMŽRkG—jj«àÆ7ßŽé « ¦•IÎH胀ë¢2¸ V%ÀÖÍ--–ÛÃg>=?|{’²×íôm½ÙóÕ7½áþM‰‰Ï¸’Èä¥-ÑCNñÃÊáѱ®nû>ˆã¸õ«Ç´sã¦õ;wßÛÕy®Ë64VYYùðc[Óh¡|Ȭ;¸ü¸x®çê¿{íöi·ÇGA©TètùúÕú¦õk·íë7*8IDATÚnë䂸}Aë®Uµe.—ËçóE£Q¥B¡ÉÍ-((0™W§Û4!%€É¼é&½ü?L(ÙtaòIEND®B`‚apache-jmeter-2.8/bin/testfiles/Bug52968.xml0000644000175000017500000002613512032647263020063 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/GuiTest.jmx0000644000175000017500000013544312032647263020315 0ustar ebourgebourg = jakarta.apache.org server = jakarta.apache.org server false false 0 1 false false -1 0 continue 1 Assertion.response_data false 2 0 1 0 1 WorkBench Test Plan Components Assertions Assertions 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 ${__threadNum()} == 3 false 0 0 false 0 username password category color user1 pass1 cat1 red user2 pass2 cat2 green user3 pass3 cat3 true 60 false 300 300 100.0 300 100.0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 0 1 false false -1 0 continue 1 true 1 0 1 false false -1 0 continue 1 0 1 false false -1 0 continue 1 false 0 10 1 false false false POST true false true false false Java / / POST http -1 / / POST http 80 false false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser org.apache.jmeter.protocol.http.util.accesslog.StandardGenerator false 0 1 false false -1 0 continue 1 = 1000 SleepTime = 0x3FF SleepMask org.apache.jmeter.protocol.java.test.SleepTest = 1000 SleepTime = 0x3FF SleepMask org.apache.jmeter.protocol.java.test.SleepTest = 100 Sleep_Time = 0xFF Sleep_Mask = JavaTest Label = 200 (or any other number) ResponseCode = OK (or any other text) ResponseMessage = OK Status = SamplerData goes here SamplerData = ResultData goes here ResultData org.apache.jmeter.protocol.java.test.JavaTest ResponseCode=12; ResponseMessage="Buckle my shoe"; IsSuccess=false; Label="Sticky"; // FileName is the Script file name // bsh.args[1] == "quick" return "This will go into the Response Data field"; the quick brown fox 0 1 false false -1 0 continue 1 Select 1 10000 60000 true 10 5000 true 1 50 org.apache.jmeter.protocol.jdbc.util.JMeter19ConnectionPool 0 1 false false -1 0 continue 1 false false apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseWithMissingBaseHRef.html0000644000175000017500000000151212032647263026167 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/AuthManagerTestPlan.jmx0000644000175000017500000001757612032647263022606 0ustar ebourgebourg false false 0 1 false false 1 0 continue 0 http://localhost/secret kevin spot / localhost /secret/index.html GET false http false false false false Java /secret/index2.html GET false http false false false false Java /index.html GET false http false false false false Java false saveConfig true true true true true false true true false false false false true true false false false false 0 auth-manager.dat apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2.csv0000644000175000017500000000042412032647263022516 0ustar ebourgebourglabel,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,grpThreads,allThreads,URL,Filename,Latency,Encoding,SampleCount,ErrorCount Download embedded,200,OK,Thread Group 1-1,text,true,,90110,1,1,file:testfiles/HTMLParserTestFile_2.html,,0,UTF-8,1,0 apache-jmeter-2.8/bin/testfiles/sample_log1b.jtl0000644000175000017500000463136012032647263021274 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/RenderTreeTest.jmx0000644000175000017500000002641712032647263021630 0ustar ebourgebourg false false 1114154647000 1 false false 1 1114154647000 continue 1 Sleep_Time 100 = Sleep_Mask 0xFF = Label Recipe Fine XML Test = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData <?xml version="1.0"?> <recipe name="Black Pepper Shrimp" description="Black Pepper shrimp dishes is very tasty."> <!--COMMENT TEST--><ingredients> <ingredient index="1" amount="3 pounds" description="fresh shrimp, unpeeled" /> <ingredient index="2" amount="8 tablespoons" description="butter" /> <ingredient index="3" amount="4 tablespoons" description="freshly ground pepper" /> </ingredients> <steps> <step index="1" description="Wash and drain shrimp, and place in a shallow baking pan." /> <step index="1" description="In a saucepan, melt the butter, add the garlic, and saute for 3 to 4 minutes." /> <step index="1" description="Pour the butter mixture over the shrimp and toss to coat." />Content Value of steps <step index="1" description="Bake until pink, approximately 5 minutes, turn, bake a few minutes longer, and pepper again." /> </steps> </recipe> = org.apache.jmeter.protocol.java.test.JavaTest Sleep_Time 100 = Sleep_Mask 0xFF = Label Recipe Error XML Test = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData <?xml version="1.0"?> <recipe name=Black Pepper Shrimp description=Black Pepper shrimp dishes is very tasty."> <ingredients> <ingredient index="1" amount="3 pounds" description="fresh shrimp, unpeeled" /> <ingredient index="2" amount="8 tablespoons" description="butter" /> <ingredient index="3" amount="4 tablespoons" description="freshly ground pepper" /> </ingredients> <steps> <step index="1" description="Wash and drain shrimp, and place in a shallow baking pan." /> <step index="1" description="In a saucepan, melt the butter, add the garlic, and saute for 3 to 4 minutes." /> <step index="1" description="Pour the butter mixture over the shrimp and toss to coat." /> <step index="1" description="Bake until pink, approximately 5 minutes, turn, bake a few minutes longer, and pepper again." /> </steps> </recipe> = org.apache.jmeter.protocol.java.test.JavaTest false saveConfig true true true true true true true true true true false true true false true true false false 0 apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseFrames.all0000644000175000017500000000016712032647263023410 0ustar ebourgebourghttp://localhost/audio/clap.wav http://localhost/banner.html http://localhost/home_nav.html http://localhost/main.html apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2.set0000644000175000017500000000057212032647263022522 0ustar ebourgebourgfile:HTMLParserTestFile_2_files/halfbanner.htm file:HTMLParserTestFile_2_files/jakarta-logo.gif file:HTMLParserTestFile_2_files/logo.jpg file:HTMLParserTestFile_2_files/style.css file:HTMLParserTestFile_2_files/http-config-example.png file:HTMLParserTestFile_2_files/scoping1.png file:HTMLParserTestFile_2_files/scoping2.png file:HTMLParserTestFile_2_files/scoping3.png apache-jmeter-2.8/bin/testfiles/Bug52968.csv0000644000175000017500000001131112032647263020044 0ustar ebourgebourgTNP1-JR0-0,200,,TG0-SNL 1-1,,true,1,1,1,0 TC-NOPARENT-1,200,"Number of samples in transaction : 1, number of failing samples : 0",TG0-SNL 1-1,,true,1,1,1,0 JR-MUSTEXECUTE,,,TG0-SNL 1-1,,true,1,1,1,0 TNP1-JR0-1,200,,TG0-SNL 1-1,,true,1,1,1,0 TC-NOPARENT-1,200,"Number of samples in transaction : 1, number of failing samples : 0",TG0-SNL 1-1,,true,1,1,1,0 JR-MUSTEXECUTE,,,TG0-SNL 1-1,,true,1,1,1,0 TNP1-JR0-2,200,,TG0-SNL 1-1,,true,1,1,1,0 TC-NOPARENT-1,200,"Number of samples in transaction : 1, number of failing samples : 0",TG0-SNL 1-1,,true,1,1,1,0 JR-MUSTEXECUTE,,,TG0-SNL 1-1,,true,1,1,1,0 TNPF-JR0-0,500,,TG1-SNL 2-1,,false,1,1,1,1 TC-NOPARENT-FAILING0,,"Number of samples in transaction : 1, number of failing samples : 1",TG1-SNL 2-1,,false,1,1,1,1 TNPF-JR0-1,500,,TG1-SNL 2-1,,false,1,1,1,1 TC-NOPARENT-FAILING0,,"Number of samples in transaction : 1, number of failing samples : 1",TG1-SNL 2-1,,false,1,1,1,1 TNPF-JR0-2,500,,TG1-SNL 2-1,,false,1,1,1,1 TC-NOPARENT-FAILING0,,"Number of samples in transaction : 1, number of failing samples : 1",TG1-SNL 2-1,,false,1,1,1,1 TNPF-JR0-0,200,,TG2-SNL 3-1,,true,1,1,1,0 TNPF-JR1-0,500,,TG2-SNL 3-1,,false,1,1,1,1 TC-NOPARENT-FAILING1,,"Number of samples in transaction : 2, number of failing samples : 1",TG2-SNL 3-1,,false,1,1,1,1 TNPF-JR0-1,200,,TG2-SNL 3-1,,true,1,1,1,0 TNPF-JR1-1,500,,TG2-SNL 3-1,,false,1,1,1,1 TC-NOPARENT-FAILING1,,"Number of samples in transaction : 2, number of failing samples : 1",TG2-SNL 3-1,,false,1,1,1,1 TNPF-JR0-2,200,,TG2-SNL 3-1,,true,1,1,1,0 TNPF-JR1-2,500,,TG2-SNL 3-1,,false,1,1,1,1 TC-NOPARENT-FAILING1,,"Number of samples in transaction : 2, number of failing samples : 1",TG2-SNL 3-1,,false,1,1,1,1 TNPF2-JR1-0,200,,TG3-SNL 4-1,,true,1,1,1,0 TNPF2-JR2-0,500,,TG3-SNL 4-1,,false,1,1,1,1 TC-NOPARENT-FAILING2,,"Number of samples in transaction : 2, number of failing samples : 1",TG3-SNL 4-1,,false,1,1,1,1 TNPF2-JR1-1,200,,TG3-SNL 4-1,,true,1,1,1,0 TNPF2-JR2-1,500,,TG3-SNL 4-1,,false,1,1,1,1 TC-NOPARENT-FAILING2,,"Number of samples in transaction : 2, number of failing samples : 1",TG3-SNL 4-1,,false,1,1,1,1 TNPF2-JR1-2,200,,TG3-SNL 4-1,,true,1,1,1,0 TNPF2-JR2-2,500,,TG3-SNL 4-1,,false,1,1,1,1 TC-NOPARENT-FAILING2,,"Number of samples in transaction : 2, number of failing samples : 1",TG3-SNL 4-1,,false,1,1,1,1 TNPTA-JR1-0,200,,TG4-SNL 5-1,,true,1,1,1,0 TNPTA-JR2-0,200,,TG4-SNL 5-1,,true,1,1,1,0 TC-NOPARENT-TestAction,,"Number of samples in transaction : 3, number of failing samples : 0",TG4-SNL 5-1,,true,1,1,1,0 TNPTA-JR1-1,200,,TG4-SNL 5-1,,true,1,1,1,0 TNPTA-JR2-1,200,,TG4-SNL 5-1,,true,1,1,1,0 TC-NOPARENT-TestAction,,"Number of samples in transaction : 3, number of failing samples : 0",TG4-SNL 5-1,,true,1,1,1,0 TNPTA-JR1-2,200,,TG4-SNL 5-1,,true,1,1,1,0 TNPTA-JR2-2,200,,TG4-SNL 5-1,,true,1,1,1,0 TC-NOPARENT-TestAction,,"Number of samples in transaction : 3, number of failing samples : 0",TG4-SNL 5-1,,true,1,1,1,0 TC-PARENT,200,"Number of samples in transaction : 1, number of failing samples : 0",TG5-SNL 6-1,,true,1,1,1,0 JR-MUSTEXECUTE,,,TG5-SNL 6-1,,true,1,1,1,0 TC-PARENT,200,"Number of samples in transaction : 1, number of failing samples : 0",TG5-SNL 6-1,,true,1,1,1,0 JR-MUSTEXECUTE,,,TG5-SNL 6-1,,true,1,1,1,0 TC-PARENT,200,"Number of samples in transaction : 1, number of failing samples : 0",TG5-SNL 6-1,,true,1,1,1,0 JR-MUSTEXECUTE,,,TG5-SNL 6-1,,true,1,1,1,0 TC-PARENT-FAILING1,,"Number of samples in transaction : 1, number of failing samples : 1",TG6-SNL 7-1,,false,1,1,1,1 TC-PARENT-FAILING1,,"Number of samples in transaction : 1, number of failing samples : 1",TG6-SNL 7-1,,false,1,1,1,1 TC-PARENT-FAILING1,,"Number of samples in transaction : 1, number of failing samples : 1",TG6-SNL 7-1,,false,1,1,1,1 TC-PARENT-FAILING1,,"Number of samples in transaction : 2, number of failing samples : 1",TG7-SNL 8-1,,false,1,1,1,1 TC-PARENT-FAILING1,,"Number of samples in transaction : 2, number of failing samples : 1",TG7-SNL 8-1,,false,1,1,1,1 TC-PARENT-FAILING1,,"Number of samples in transaction : 2, number of failing samples : 1",TG7-SNL 8-1,,false,1,1,1,1 TC-PARENT-FAILING2,,"Number of samples in transaction : 2, number of failing samples : 1",TG8-SNL 9-1,,false,1,1,1,1 TC-PARENT-FAILING2,,"Number of samples in transaction : 2, number of failing samples : 1",TG8-SNL 9-1,,false,1,1,1,1 TC-PARENT-FAILING2,,"Number of samples in transaction : 2, number of failing samples : 1",TG8-SNL 9-1,,false,1,1,1,1 TC-PARENT-TestAction,200,"Number of samples in transaction : 2, number of failing samples : 0",TG9-SNL 10-1,,true,1,1,1,0 TC-PARENT-TestAction,200,"Number of samples in transaction : 2, number of failing samples : 0",TG9-SNL 10-1,,true,1,1,1,0 TC-PARENT-TestAction,200,"Number of samples in transaction : 2, number of failing samples : 0",TG9-SNL 10-1,,true,1,1,1,0 apache-jmeter-2.8/bin/testfiles/InterleaveTestPlan.jmx0000644000175000017500000001703012032647263022471 0ustar ebourgebourg false false 0 2 false false 5 0 continue 0 0 /site/news.html GET false http false false false false Java /site/faqs.html GET false http false false false false Java /gump GET false http false false false false Java false saveConfig true true true true true false true true false false false false true true false false false false 0 interleave-test.dat apache-jmeter-2.8/bin/testfiles/BeanShellTest.bsh0000644000175000017500000000064312032647263021375 0ustar ebourgebourg// BeanShell Test initialisation file // Used in unit tests i=j=0; import org.apache.jmeter.util.JMeterUtils; getprop(p){// get a JMeter property return JMeterUtils.getPropDefault(p,""); } getprop(p,d){// get a JMeter property with default return JMeterUtils.getPropDefault(p,d); } setprop(p,v){// set a JMeter property JMeterUtils.getJMeterProperties().setProperty(p, v); } return 9876; // used by source testapache-jmeter-2.8/bin/testfiles/testquoted.csv0000644000175000017500000000013312032647263021112 0ustar ebourgebourgA|B|C|"D|1" a1|b1|"c1"|d1 a2|b2|c2|d2 a3|b3|c3|"d3" a4|b4|c4|"d4 Previous line is malformedapache-jmeter-2.8/bin/testfiles/GuiTest_original.jmx0000644000175000017500000014165512032647263022203 0ustar ebourgebourg = jakarta.apache.org server = jakarta.apache.org server false false 0 1 false false -1 0 continue 1 Assertion.response_data false 2 0 1 0 1 WorkBench Test Plan Components Assertions Assertions 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 ${__threadNum()} == 3 false 0 0 false 0 username password category color user1 pass1 cat1 red user2 pass2 cat2 green user3 pass3 cat3 true 60 false 300 300 100.0 300 100.0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 0 1 false false -1 0 continue 1 true 1 0 1 false false -1 0 continue 1 0 1 false false -1 0 continue 1 false 0 10 1 false false false users.xml POST true false true false false Java / / POST http -1 / / POST http 80 false false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser false 80 org.apache.jmeter.protocol.http.util.accesslog.TCLogParser org.apache.jmeter.protocol.http.util.accesslog.StandardGenerator false 0 1 false false -1 0 continue 1 = 1000 SleepTime = 0x3FF SleepMask org.apache.jmeter.protocol.java.test.SleepTest = 1000 SleepTime = 0x3FF SleepMask org.apache.jmeter.protocol.java.test.SleepTest = 100 Sleep_Time = 0xFF Sleep_Mask = JavaTest Label = 200 (or any other number) ResponseCode = OK (or any other text) ResponseMessage = OK Status = SamplerData goes here SamplerData = ResultData goes here ResultData org.apache.jmeter.protocol.java.test.JavaTest ResponseCode=12; ResponseMessage="Buckle my shoe"; IsSuccess=false; Label="Sticky"; // FileName is the Script file name // bsh.args[1] == "quick" return "This will go into the Response Data field"; the quick brown fox 0 1 false false -1 0 continue 1 Select 1 10000 60000 true 10 5000 true 1 50 org.apache.jmeter.protocol.jdbc.util.JMeter19ConnectionPool 0 1 false false -1 0 continue 1 false false apache-jmeter-2.8/bin/testfiles/jmetertest.properties0000644000175000017500000001523312032647263022507 0ustar ebourgebourg################################################################################ # Apache JMeter Property file - used for unit tests only ################################################################################ ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. #Preferred GUI language. Comment out to use the JVM default locale's language. #language=de #Paths to search for classes (";" must be the separator) #search_paths=null # Netscape HTTP Cookie file cookies=cookies #File format for saved test files. # JMeter 2.1+ uses a new format for JMX and JTL files - using XStream. # JMeter 2.1.2+ has a new shorter format for JMX files. # Set value to 2.0 or 2.1 to save to old formats # # Save test plans and test logs in 2.0 format #file_format=2.0 # Just test plans (jmx) #file_format.testplan=2.1 # Just test logs (jtl) #file_format.testlog=2.0 # Authorization authorization=authorization #Working directory user.dir=. # XML Reader(Parser) - Must implement SAX 2 specs xml.parser=org.apache.xerces.parsers.SAXParser #Classname of the ssl provider to be used (to enable testing of https urls) #And the package name where Stream Handlers can be found #These provided defaults can be uncommented, and they will work if you are using #Sun's JSSE implementation. #ssl.provider=com.sun.net.ssl.internal.ssl.Provider #ssl.pkgs=com.sun.net.ssl.internal.www.protocol #The location of the truststore (trusted certificates) and keystore ( if other than the default. #you can uncomment this and change the path to the correct location. #javax.net.ssl.trustStore=/path/to/cacerts #javax.net.ssl.keyStore=/path/to/keystore #The password to your keystore #javax.net.ssl.keyStorePassword=password #Flag for whether to output debug messages to System.err #To enable it, set the value to "all" Note, for it to work with #JSSE, it needs to be done from the Java command (i.e. -Djavax.net.debug=all) #javax.net.debug=all #Classname of the Swing default UI #Installed Look and Feel classes on Windows are: # Metal = javax.swing.plaf.metal.MetalLookAndFeel # Motif = com.sun.java.swing.plaf.motif.MotifLookAndFeel # Windows = com.sun.java.swing.plaf.windows.WindowsLookAndFeel ## Let LAF be picked up from default ## (otherwise can cause problems for Eclipse JUnit GUI mode) #jmeter.laf=javax.swing.plaf.metal.MetalLookAndFeel #jmeter.laf=com.sun.java.swing.plaf.motif.MotifLookAndFeel #icons -> moved to program code #timer.tree.icon=timer.gif #listener.tree.icon=ear.gif #bench.tree.icon=clipboard.gif #thread.tree.icon=thread.gif #control.tree.icon=knob.gif #plan.tree.icon=beaker.gif #config.tree.icon=leafnode.gif # Remote Hosts - comma delimited remote_hosts=127.0.0.1 #Components to not display in JMeter GUI not_in_menu=Remote Method Configuration,JNDI Configuration,JNDI Lookup Configuration,JNDI Request,Default Controller,org.apache.jmeter.control.DynamicController, org.apache.jmeter.protocol.http.control.Cookie,org.apache.jmeter.protocol.http.control.Authorization,org.apache.jmeter.config.LoginConfig,Header,org.apache.jmeter.protocol.http.config.MultipartUrlConfig #Logging levels for the logging categories in JMeter. Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG # To set the log level for a package or individual class, use: # log_level.[package_name].[classname]=[PRIORITY_LEVEL] # But omit "org.apache" from the package name. The classname is optional. Further examples below. log_level.jmeter=INFO #log_level.jmeter.junit=DEBUG #log_level.jmeter.engine=WARN #log_level.jmeter.gui=WARN #log_level.jmeter.testelement=DEBUG #log_level.jmeter.util=WARN #log_level.jmeter.util.classfinder=WARN #log_level.jmeter.test=DEBUG #log_level.jmeter.protocol.http=DEBUG #log_level.jmeter.protocol.ftp=WARN #log_level.jmeter.protocol.jdbc=WARN #log_level.jmeter.protocol.java=WARN #log_level.jmeter.testelements.property=DEBUG log_level.jorphan=INFO #log_level.jorphan.reflect.ClassFinder=DEBUG #Log file for log messages. # You can specify a different log file for different categories via: # log_file.[category]=[filename] # category is equivalent to the package/class names described above # Combined log file (for jmeter and jorphan) log_file=jmeter-test.log # Or define separate logs if required: #log_file.jorphan=jorphan.log #log_file.jmeter=jmeter.log #--------------------------------------------------------------------------- # Results file configuration #--------------------------------------------------------------------------- # For testing, output is changed to CSV and variable fields # (timestamp and elased) are suppressed # This section helps determine how result data will be saved. # The commented out values are the defaults. # legitimate values: xml, csv, db. Only xml and csv are currently supported. jmeter.save.saveservice.output_format=csv # Define true to save the output files in TestSaveService.java #testsaveservice.saveout=true # true when field should be saved; false otherwise # assertion_results_failure_message only affects CSV output #jmeter.save.saveservice.assertion_results_failure_message=true #jmeter.save.saveservice.data_type=true #jmeter.save.saveservice.label=true #jmeter.save.saveservice.response_code=true #jmeter.save.saveservice.response_data=false #jmeter.save.saveservice.response_message=true #jmeter.save.saveservice.successful=true #jmeter.save.saveservice.thread_name=true jmeter.save.saveservice.time=false # legitimate values: none, ms, or a format suitable for SimpleDateFormat #jmeter.save.saveservice.timestamp_format=none #jmeter.save.saveservice.timestamp_format=MM/dd/yy HH:mm:ss # legitimate values: none, first, all #jmeter.save.saveservice.assertion_results=none # For use with Comma-separated value (CSV) files or other formats # where the fields' values are separated by specified delimiters. #jmeter.save.saveservice.default_delimiter=, #jmeter.save.saveservice.print_field_names=true # File that holds a record of name changes for backward compatibility issues upgrade_properties=/bin/upgrade.properties apache-jmeter-2.8/bin/testfiles/Modification Manager.jmx0000644000175000017500000001041712032647263022662 0ustar ebourgebourg false false = .* true request.job_id true request.job_id .* = opjobadmin.action.inspect true request.action1 true request.action1 opjobadmin.action.inspect /xdx/admin/inspect_job.jsp GET false http false false 80 false false Java 13.231.197.158 80 apache-jmeter-2.8/bin/testfiles/AssertionTestPlan.jmx0000644000175000017500000001435612032647263022352 0ustar ebourgebourg false false 0 1 false false 1 0 continue 0 / GET false http false false jakarta.apache.org false false Java </html> Assertion.response_data false 2 false saveConfig true true true true true false true true false false false false true true false false false false 0 assertion.dat false saveConfig true true true true true false true true false false false false true true false false false false 0 apache-jmeter-2.8/bin/testfiles/OnceOnlyTestPlan.jmx0000644000175000017500000001437012032647263022125 0ustar ebourgebourg false false 0 2 false false 3 0 continue 0 / jakarta.apache.org / GET false http false false false false Java /site/bugs.html GET false http false false false false Java false saveConfig true true true true true false true true false false false false true true false false false false 0 once-only-test.dat apache-jmeter-2.8/bin/testfiles/cookies.txt0000644000175000017500000000020312032647263020367 0ustar ebourgebourg# JMeter generated Cookie file domain TRUE path TRUE 0 name value TRUE FALSE 0 name2 value2 c TRUE d TRUE 9223372036854775807 a bapache-jmeter-2.8/bin/testfiles/SFFTest1.txt0000644000175000017500000000003112032647263020271 0ustar ebourgebourguno dos tres cuatro cincoapache-jmeter-2.8/bin/testfiles/jmeter_home_page_with_base_href.html0000644000175000017500000001605012032647263025412 0ustar ebourgebourgHTTP/1.1 200 OK Date: Thu, 24 Apr 2003 21:15:26 GMT Server: Apache/2.0.45-dev (Unix) Last-Modified: Thu, 24 Apr 2003 13:26:51 GMT ETag: "31a620-1b1e-6ee17cc0" Accept-Ranges: bytes Content-Length: 6942 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html JMeter - Apache JMeter

About

Documentation

JMeter Resources

Community

Apache JMeter

Apache JMeter is a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

What can I do with it?

Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.

Using JMeter

What does it do?

Apache JMeter features include:

  • Can load and performance test HTTP and FTP servers as well as arbitrary database queries (via JDBC)
  • Complete portability and 100% Java purity .
  • Full Swing and lightweight component support (precompiled JAR uses packages javax.swing.* ).
  • Full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by seperate thread groups.
  • Careful GUI design allows faster operation and more precise timings.
  • Caching and offline analysis/replaying of test results.
  • Highly Extensible:
    • Pluggable Samplers allow unlimited testing capabilities.
    • Several load statistics may be choosen with pluggable timers .
    • Data analysis and visualization plugins allow great extendibility as well as personalization.



Copyright © 1999-2001, Apache Software Foundation
apache-jmeter-2.8/bin/testfiles/HTMLParserTestFrames.html0000644000175000017500000000172312032647263023007 0ustar ebourgebourg Main Page <body> <p>This page uses frames, but your browser doesn't support them.</p> </body> apache-jmeter-2.8/bin/testfiles/HTMLParserTestCase.html0000644000175000017500000000215612032647263022446 0ustar ebourgebourg
apache-jmeter-2.8/bin/testfiles/testutf8.csv0000644000175000017500000000007312032647263020502 0ustar ebourgebourga1,b1,"ç1",d1 a2,b2,"ç2",d2 a3,b3,"ç3",d3 a4,b4,"ç4",d4apache-jmeter-2.8/bin/testfiles/HTMLParserTestFrames.all0000644000175000017500000000012712032647263022610 0ustar ebourgebourghttp://localhost/banner.html http://localhost/home_nav1.html http://localhost/main.htmlapache-jmeter-2.8/bin/testfiles/SFFTest2.txt0000644000175000017500000000002712032647263020277 0ustar ebourgebourgone two three four fiveapache-jmeter-2.8/bin/testfiles/sample_log1c.jtl0000644000175000017500000074747412032647263021307 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/HTMLScript.html0000644000175000017500000000232012032647263021013 0ustar ebourgebourg
apache-jmeter-2.8/bin/testfiles/testblank.csv0000644000175000017500000000012112032647263020675 0ustar ebourgebourga1,b1,c1,d1 a2,b2,c2,d2 The previous line is blank, and should be treated as EOFapache-jmeter-2.8/bin/testfiles/XMLSchema-pass.xsd0000644000175000017500000000230412032647263021443 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/GenTest26.jmx0000644000175000017500000024250612032647263020451 0ustar ebourgebourg false false continue false 1 1 1 1337361781000 1337361781000 false continue false 1 1 1 1337361769000 1337361769000 false true false 1 true 1 1 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 false false , false true All threads false false false false false false false 4 Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest true Select 1 5000 true 10 10000 DEFAULT 60000 True 2 false false false false false add 1 false true false false this thread only throughput 0.0 0.0 300 300 100.0 300 100 0 0 100.0 false false false false false Select Statement false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser GET true false true false false false false true false false false false GET true false true false false Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest Select Statement true false false false jms_use_text jms_text_message 1 false false false 1 true jms_subscriber_receive test.RerunTest testRerun Test successful 1000 Test failed 0001 An unexpected error occured 9999 false false false 2 false false false false false add pop3 INBOX -1 false false false false false false false false false false false false false false false false false false true false true false 1 0 http POST true false false false false true true false Select Statement false 0 false false false false true -1 0 0 omit false 0 Assertion.response_data false 2 SizeAssertion.response_network_size 1 false false false false false false / false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true 2 2 false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true continue false 1 1 1 1337361784000 1337361784000 false apache-jmeter-2.8/bin/testfiles/monitorStatus.xml0000644000175000017500000000264712032647263021625 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/HTMLParserTestCase2.html0000644000175000017500000000011512032647263022521 0ustar ebourgebourg Empty HTML Test apache-jmeter-2.8/bin/testfiles/InterleaveTestPlan2.jmx0000644000175000017500000002257612032647263022566 0ustar ebourgebourg false false 0 1 false false 8 0 continue 0 0 / jakarta.apache.org 0 / GET false http false false false false Java /site/cvsindex.html GET false http false false false false Java 0 /site/bugs.html GET false http false false false false Java /site/faqs.html GET false http false false false false Java false saveConfig true true true true true false true true false false false false true true false false false false 0 interleave-test2.dat apache-jmeter-2.8/bin/testfiles/BatchTestLocal.csv0000644000175000017500000002002412032647263021546 0ustar ebourgebourglabel,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,grpThreads,allThreads,URL,Filename,SampleCount,ErrorCount Setup 1,200,OK,Setup Thread Group 1-1,,true,,0,1,1,null,,1,0 Java 1 C1=1,200,OK,Thread Group 1-1,text,true,,10,1,1,null,,1,0 Java 1 C1=1,200,OK,Thread Group 1-1,text,true,,10,1,1,null,,1,0 Java 1 C1=1,200,OK,Thread Group 1-1,text,true,,10,1,1,null,,1,0 Loop5 C1=1 C2=1 C3=1,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=2 C3=2,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=3 C3=3,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 If Test C1=1 C2=3 C3=3,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=3 C3=3,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=3 C3=3,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=3 C3=3,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=4 C3=4,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=5 C3=5,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java 1 C1=2,200,OK,Thread Group 1-1,text,true,,10,1,1,null,,1,0 Java 1 C1=2,200,OK,Thread Group 1-1,text,true,,10,1,1,null,,1,0 Java 1 C1=2,200,OK,Thread Group 1-1,text,true,,10,1,1,null,,1,0 Loop5 C1=2 C2=1 C3=6,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 If Test C1=2 C2=1 C3=6,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=1 C3=6,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=1 C3=6,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=1 C3=6,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=2 C3=7,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=3 C3=8,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=4 C3=9,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 If Test C1=2 C2=4 C3=9,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=4 C3=9,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=4 C3=9,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=4 C3=9,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=5 C3=10,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-1,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-1,,true,,0,1,1,null,,1,0 Java 1 C1=1,200,OK,Thread Group 1-2,text,true,,10,1,1,null,,1,0 Java 1 C1=1,200,OK,Thread Group 1-2,text,true,,10,1,1,null,,1,0 Java 1 C1=1,200,OK,Thread Group 1-2,text,true,,10,1,1,null,,1,0 Loop5 C1=1 C2=1 C3=11,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=2 C3=12,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 If Test C1=1 C2=2 C3=12,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=2 C3=12,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=2 C3=12,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=2 C3=12,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=3 C3=13,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=4 C3=14,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=1 C2=5 C3=15,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 If Test C1=1 C2=5 C3=15,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=5 C3=15,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=5 C3=15,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=1 C2=5 C3=15,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java 1 C1=2,200,OK,Thread Group 1-2,text,true,,10,1,1,null,,1,0 Java 1 C1=2,200,OK,Thread Group 1-2,text,true,,10,1,1,null,,1,0 Java 1 C1=2,200,OK,Thread Group 1-2,text,true,,10,1,1,null,,1,0 Loop5 C1=2 C2=1 C3=16,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=2 C3=17,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=3 C3=18,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 If Test C1=2 C2=3 C3=18,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=3 C3=18,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=3 C3=18,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop3 C1=2 C2=3 C3=18,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Module,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=4 C3=19,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Loop5 C1=2 C2=5 C3=20,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If once 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java If once 2,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 Java If all 1,,,Thread Group 1-2,,false,,0,1,1,null,,1,1 Java OK,200,OK,Thread Group 1-2,,true,,0,1,1,null,,1,0 "HTTP ""Request,",200,OK,Thread Group 2-1,text,true,,127746,1,1,file:testfiles/BatchTestLocal.jmx,,1,0 1 1,200,OK,Thread Group 2-1,,true,,0,1,1,null,,1,0 2 2,200,OK,Thread Group 2-1,,true,,0,1,1,null,,1,0 3 3,200,OK,Thread Group 2-1,,true,,0,1,1,null,,1,0 0 4,200,OK,Thread Group 2-1,,true,,0,1,1,null,,1,0 NAME USER1,200,OK,Thread Group 3-1,,true,,0,1,1,null,,1,0 TG1 = 3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG OO = 1,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG Loop =3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG2 = 3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG1 = 3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG Loop =3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG2 = 3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG1 = 3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG Loop =3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 TG2 = 3,200,OK,Thread Group 4-1,,true,,0,1,1,null,,1,0 CSV_VAR=2,200,OK,CSV Test 6-1,,true,,0,1,1,null,,1,0 CSV_VAR=3,200,OK,CSV Test 6-1,,true,,0,1,1,null,,1,0 CSV_VAR=1,200,OK,CSV Test 6-1,,true,,0,1,1,null,,1,0 CSV_VAR=2,200,OK,CSV Test 6-1,,true,,0,1,1,null,,1,0 BSH Counter: 1,200,OK,Bug 48943 7-1,text,true,,0,1,1,null,,1,0 BSH Counter: 2,200,OK,Bug 48943 7-1,text,true,,0,1,1,null,,1,0 BSH Counter: 3,200,OK,Bug 48943 7-1,text,true,,0,1,1,null,,1,0 Post 3,200,OK,Post Thread Group 1-1,,true,,0,1,1,null,,1,0 apache-jmeter-2.8/bin/testfiles/test.csv0000644000175000017500000000005712032647263017675 0ustar ebourgebourga1,b1,c1,d1 a2,b2,c2,d2 a3,b3,c3,d3 a4,b4,c4,d4apache-jmeter-2.8/bin/testfiles/ProxyServerTestPlan.jmx0000644000175000017500000000475712032647263022717 0ustar ebourgebourg false false 0 1 false 1 false 0 continue 0 0 true true <html 8080 false apache-jmeter-2.8/bin/testfiles/GenTest251.jmx0000644000175000017500000023624712032647263020536 0ustar ebourgebourg false false continue false 1 1 1 1337360547000 1337360547000 false continue false 1 1 1 1337360522000 1337360522000 false true false 1 true 1 1 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 false , false true All threads false false false false false false false false 4 true Select 1 5000 true 10 10000 60000 Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest 2 false false false false false add 1 false true false false this thread only throughput 0.0 0.0 300 300 100.0 0 0 100.0 false false false false false false GET true false true false false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser beanbasic false false true false false false false GET true false true false false Select Statement true false false false jms_use_text jms_text_message 1 false false false 1 true jms_subscriber_receive test.RerunTest testRerun Test successful 1000 Test failed 0001 An unexpected error occured 9999 false false false Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest 2 false false false false false add pop3 INBOX -1 false false false false false false false false false false false false false false false false false false true false true false 1 0 http POST true false false false false 0 false false false false true -1 0 0 omit false 0 Assertion.response_data false 2 false false false false false SizeAssertion.response_network_size 1 false / false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true 2 2 false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true continue false 1 1 1 1337360555000 1337360555000 false apache-jmeter-2.8/bin/testfiles/HTMLScript.set0000644000175000017500000000017512032647263020650 0ustar ebourgebourghttp://localhost/css/wcm_style.css http://localhost/scripts/navigation/hm_loader.js http://localhost/shared/images/spacer.gifapache-jmeter-2.8/bin/testfiles/Load_JMeter_Page.jmx0000644000175000017500000000273212032647263022004 0ustar ebourgebourg jakarta.apache.org /jmeter/index.html GET true false true false false apache-jmeter-2.8/bin/testfiles/HTMLParserTestCase3.html0000644000175000017500000000014312032647263022523 0ustar ebourgebourg Empty HTML Test with mixed up tags</tattle> </body> <body> </html> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/BatchTestLocal.jmx��������������������������������������������������0000644�0001750�0001750�00000371402�12032647263�021562� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.2"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> <boolProp name="TestPlan.serialize_threadgroups">true</boolProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <stringProp name="TestPlan.comments">Batch Test using only local resources. **N.B. If this file is updated, then the expected test data files need to be updated with the new length of this file**</stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <longProp name="ThreadGroup.start_time">1172922900000</longProp> <stringProp name="ThreadGroup.delay"></stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.num_threads">2</stringProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">2</stringProp> </elementProp> <longProp name="ThreadGroup.end_time">1172922900000</longProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.ramp_time">40</stringProp> <stringProp name="TestPlan.comments">N.B. The ramp-up period is set so that the first thread will finish before the second. This is to ensure the test output is predictable, whilst still allowing testing of unshared counter etc</stringProp> </ThreadGroup> <hashTree> <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="C1 - per user" enabled="true"> <stringProp name="CounterConfig.start">1</stringProp> <stringProp name="CounterConfig.end"></stringProp> <stringProp name="CounterConfig.incr">1</stringProp> <stringProp name="CounterConfig.name">C1</stringProp> <stringProp name="CounterConfig.format"></stringProp> <boolProp name="CounterConfig.per_user">true</boolProp> <stringProp name="TestPlan.comments">Should increment for each TG loop</stringProp> </CounterConfig> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop3" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">3</stringProp> </LoopController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java 1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java 1 C1=${C1}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value">SamplerData</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value">ResultData</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">5</stringProp> </LoopController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Loop 5" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Loop5 C1=${C1} C2=${C2} C3=${C3}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true"> <stringProp name="IfController.condition">${__StringFromFile(testfiles/BatchTestLocal.txt)} > 2</stringProp> <boolProp name="IfController.evaluateAll">false</boolProp> </IfController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="If Test" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">If Test C1=${C1} C2=${C2} C3=${C3}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Test loop" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">3</stringProp> </LoopController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Loop" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Loop3 C1=${C1} C2=${C2} C3=${C3}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"> <collectionProp name="ModuleController.node_path"> <stringProp name="-1227702913">WorkBench</stringProp> <stringProp name="764597751">Test Plan</stringProp> <stringProp name="-1948168983">Thread Group</stringProp> <stringProp name="307399011">Simple Controller for Module Controller</stringProp> </collectionProp> </ModuleController> <hashTree/> </hashTree> </hashTree> <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="C2 - per user" enabled="true"> <stringProp name="CounterConfig.start">1</stringProp> <stringProp name="CounterConfig.end">5</stringProp> <stringProp name="CounterConfig.incr">1</stringProp> <stringProp name="CounterConfig.name">C2</stringProp> <stringProp name="CounterConfig.format"></stringProp> <boolProp name="CounterConfig.per_user">true</boolProp> </CounterConfig> <hashTree/> <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="C3 - global" enabled="true"> <stringProp name="CounterConfig.start">1</stringProp> <stringProp name="CounterConfig.end"></stringProp> <stringProp name="CounterConfig.incr">1</stringProp> <stringProp name="CounterConfig.name">C3</stringProp> <stringProp name="CounterConfig.format"></stringProp> <boolProp name="CounterConfig.per_user">false</boolProp> </CounterConfig> <hashTree/> </hashTree> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>true</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>true</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>false</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">2</stringProp> </LoopController> <hashTree> <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If once" enabled="true"> <stringProp name="IfController.condition">${JMeterThread.last_sample_ok}</stringProp> <boolProp name="IfController.evaluateAll">false</boolProp> </IfController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java If once 1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">BAD</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java If once 2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If all" enabled="true"> <stringProp name="IfController.condition">${JMeterThread.last_sample_ok}</stringProp> <boolProp name="IfController.evaluateAll">true</boolProp> </IfController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java If all 1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">BAD</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java If all 2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java OK" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller for Module Controller" enabled="false"> <stringProp name="TestPlan.comments"> for Module Controller</stringProp> </GenericController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Module" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">${__P(module)}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Zero Loops" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="TestPlan.comments">Test zero loops</stringProp> <stringProp name="LoopController.loops">0</stringProp> </LoopController> <hashTree> <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true"> <stringProp name="TestPlan.comments">Just in case the loop accidentally runs</stringProp> <intProp name="ActionProcessor.action">2</intProp> <intProp name="ActionProcessor.target">2</intProp> <stringProp name="ActionProcessor.duration"></stringProp> </TestAction> <hashTree/> </hashTree> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <stringProp name="TestPlan.comments">Runs after first thread group.</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1194880755000</longProp> <longProp name="ThreadGroup.end_time">1194880755000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP "Request," enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol">file</stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path">testfiles/BatchTestLocal.jmx</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <boolProp name="HTTPSampler.auto_redirects">true</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.implementation">Java</stringProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> <stringProp name="TestPlan.comments">N.B. The file that is loaded must have a fixed size, so HTML won't do as it will be different on Unix and Windows. We use this file, which has eol=LF - but of course any changes need to be reflected in the expected test data.</stringProp> </HTTPSamplerProxy> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>true</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">4</stringProp> </LoopController> <hashTree> <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true"> <stringProp name="SwitchController.value">${__counter(TRUE,COUNT)}</stringProp> </SwitchController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="0" enabled="true"> <stringProp name="TestPlan.comments">0</stringProp> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">0 ${COUNT}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">1 ${COUNT}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">2 ${COUNT}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">3 ${COUNT}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> </hashTree> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1226668173000</longProp> <longProp name="ThreadGroup.end_time">1226668173000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true"> <collectionProp name="UserParameters.names"> <stringProp name="2388619">NAME</stringProp> </collectionProp> <collectionProp name="UserParameters.thread_values"> <collectionProp name="-1314400416"> <stringProp name="81040838">USER1</stringProp> </collectionProp> </collectionProp> <boolProp name="UserParameters.per_iteration">false</boolProp> </UserParameters> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">NAME ${NAME}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>true</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>false</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <stringProp name="TestPlan.comments">Once Only Controller tests</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1242238972000</longProp> <longProp name="ThreadGroup.end_time">1242238972000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TG1 = 3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TG OO = 1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">3</stringProp> </LoopController> <hashTree> <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TG Loop =3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TG2 = 3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="false"/> <hashTree> <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"> <stringProp name="TestPlan.comments">Does not work currently - should only run once, as SC should be ignored</stringProp> </OnceOnlyController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TG SC OO = 1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> </hashTree> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Zero Thread" enabled="true"> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">0</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1242238814000</longProp> <longProp name="ThreadGroup.end_time">1242238814000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true"> <stringProp name="TestPlan.comments">Just in case Thread Group runs</stringProp> <intProp name="ActionProcessor.action">2</intProp> <intProp name="ActionProcessor.target">2</intProp> <stringProp name="ActionProcessor.duration"></stringProp> </TestAction> <hashTree/> </hashTree> <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="Setup Thread Group" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1296159999000</longProp> <longProp name="ThreadGroup.end_time">1296159999000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </SetupThreadGroup> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Setup ${CSV_VAR}" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> </hashTree> <PostThreadGroup guiclass="PostThreadGroupGui" testclass="PostThreadGroup" testname="Post Thread Group" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1296160031000</longProp> <longProp name="ThreadGroup.end_time">1296160031000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </PostThreadGroup> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Post ${CSV_VAR}" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> </hashTree> <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true"> <stringProp name="delimiter">,</stringProp> <stringProp name="fileEncoding"></stringProp> <stringProp name="filename">BatchTestLocal.txt</stringProp> <boolProp name="quotedData">false</boolProp> <boolProp name="recycle">true</boolProp> <stringProp name="shareMode">All threads</stringProp> <boolProp name="stopThread">false</boolProp> <stringProp name="variableNames">CSV_VAR</stringProp> </CSVDataSet> <hashTree/> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="CSV Test" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">4</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1296160584000</longProp> <longProp name="ThreadGroup.end_time">1296160584000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="CSV_VAR=${CSV_VAR}" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Bug 48943" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1316002322000</longProp> <longProp name="ThreadGroup.end_time">1316002322000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/> <hashTree/> <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true"> <stringProp name="BeanShellSampler.query">SampleResult.setSampleLabel("BSH Counter: ${__counter(FALSE)}");</stringProp> <stringProp name="BeanShellSampler.filename"></stringProp> <stringProp name="BeanShellSampler.parameters"></stringProp> <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp> </BeanShellSampler> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write XML" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">BatchTestLocal.xml</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Write CSV" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>true</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>true</responseHeaders> <requestHeaders>true</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> <url>true</url> <fileName>true</fileName> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">${__P(CSVFILE)}</stringProp> </ResultCollector> <hashTree/> </hashTree> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </jmeterTestPlan> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/GuiTest231.jmx������������������������������������������������������0000644�0001750�0001750�00000206641�12032647263�020542� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.2"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="GUI231" enabled="true"> <stringProp name="TestPlan.comments">All GUI test elements in JMeter 2.3.1</stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1210207165000</longProp> <longProp name="ThreadGroup.end_time">1210207165000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Controllers" enabled="true"/> <hashTree> <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true"> <stringProp name="ForeachController.inputVal">Input</stringProp> <stringProp name="ForeachController.returnVal">Output</stringProp> <boolProp name="ForeachController.useSeparator">true</boolProp> </ForeachController> <hashTree/> <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true"> <stringProp name="IfController.condition">If condition</stringProp> <stringProp name="IfController.evaluateAll">false</stringProp> </IfController> <hashTree/> <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true"> <stringProp name="IncludeController.includepath"></stringProp> </IncludeController> <hashTree/> <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true"> <intProp name="InterleaveControl.style">1</intProp> </InterleaveControl> <hashTree/> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">123</stringProp> </LoopController> <hashTree/> <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"> <collectionProp name="ModuleController.node_path"> <stringProp name="-1227702913">WorkBench</stringProp> <stringProp name="2113393429">GUI231</stringProp> <stringProp name="-1948168983">Thread Group</stringProp> <stringProp name="-46680009">Controllers</stringProp> <stringProp name="-1591803190">Simple Controller</stringProp> </collectionProp> </ModuleController> <hashTree/> <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/> <hashTree/> <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true"> <intProp name="InterleaveControl.style">1</intProp> </RandomController> <hashTree/> <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/> <hashTree/> <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true"> <stringProp name="RunTime.seconds">321</stringProp> </RunTime> <hashTree/> <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true"> <intProp name="InterleaveControl.style">1</intProp> <stringProp name="SwitchController.value">7</stringProp> </SwitchController> <hashTree/> <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true"> <intProp name="ThroughputController.style">0</intProp> <boolProp name="ThroughputController.perThread">true</boolProp> <intProp name="ThroughputController.maxThroughput">111</intProp> <FloatProperty> <name>ThroughputController.percentThroughput</name> <value>100.0</value> <savedValue>0.0</savedValue> </FloatProperty> </ThroughputController> <hashTree/> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree/> <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> <stringProp name="WhileController.condition">Condition</stringProp> </WhileController> <hashTree/> <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Configuration" enabled="true"/> <hashTree> <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true"> <stringProp name="delimiter">,</stringProp> <stringProp name="fileEncoding">encoding</stringProp> <stringProp name="filename">filename</stringProp> <boolProp name="recycle">true</boolProp> <boolProp name="stopThread">false</boolProp> <stringProp name="variableNames">a,b,c,d</stringProp> </CSVDataSet> <hashTree/> <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="NAME" elementType="Argument"> <stringProp name="Argument.name">NAME</stringProp> <stringProp name="Argument.value">VALUE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </Arguments> <hashTree/> <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true"> <stringProp name="ConfigTestElement.username">USER</stringProp> <stringProp name="ConfigTestElement.password">PASS</stringProp> </ConfigTestElement> <hashTree/> <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/> <hashTree/> <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true"> <stringProp name="FTPSampler.server">server</stringProp> <stringProp name="FTPSampler.filename">remote</stringProp> <stringProp name="FTPSampler.localfilename">local</stringProp> <stringProp name="FTPSampler.binarymode">true</stringProp> <stringProp name="FTPSampler.saveresponse">true</stringProp> <stringProp name="FTPSampler.upload">true</stringProp> </ConfigTestElement> <hashTree/> <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.value">Value</stringProp> <stringProp name="Argument.metadata">=</stringProp> <boolProp name="HTTPArgument.use_equals">true</boolProp> <stringProp name="Argument.name">Name</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain">localhost</stringProp> <stringProp name="HTTPSampler.port">8080</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.contentEncoding">utf8</stringProp> <stringProp name="HTTPSampler.path">/path</stringProp> </ConfigTestElement> <hashTree/> <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> <collectionProp name="AuthManager.auth_list"> <elementProp name="" elementType="Authorization"> <stringProp name="Authorization.url">base</stringProp> <stringProp name="Authorization.username">user</stringProp> <stringProp name="Authorization.password">pass</stringProp> <stringProp name="Authorization.domain">domain</stringProp> <stringProp name="Authorization.realm">realm</stringProp> </elementProp> </collectionProp> </AuthManager> <hashTree/> <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true"> <collectionProp name="CookieManager.cookies"> <elementProp name="name" elementType="Cookie" testname="name"> <stringProp name="Cookie.value">value</stringProp> <stringProp name="Cookie.domain">domain</stringProp> <stringProp name="Cookie.path">path</stringProp> <boolProp name="Cookie.secure">false</boolProp> <longProp name="Cookie.expires">0</longProp> <stringProp name="Cookie.path_specified">true</stringProp> <stringProp name="Cookie.domain_specified">true</stringProp> </elementProp> </collectionProp> <boolProp name="CookieManager.clearEachIteration">false</boolProp> </CookieManager> <hashTree/> <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> <collectionProp name="HeaderManager.headers"> <elementProp name="" elementType="Header"> <stringProp name="Header.name">Browser</stringProp> <stringProp name="Header.value">JMeter</stringProp> </elementProp> </collectionProp> </HeaderManager> <hashTree/> <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaConfig> <hashTree/> <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true"> <boolProp name="autocommit">true</boolProp> <stringProp name="checkQuery">Select 1</stringProp> <stringProp name="connectionAge">5000</stringProp> <stringProp name="dataSource">variable</stringProp> <stringProp name="dbUrl">url</stringProp> <stringProp name="driver">driver</stringProp> <boolProp name="keepAlive">true</boolProp> <stringProp name="password">pass</stringProp> <stringProp name="poolMax">10</stringProp> <stringProp name="timeout">10000</stringProp> <stringProp name="trimInterval">60000</stringProp> <stringProp name="username">user</stringProp> </JDBCDataSource> <hashTree/> <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true"> <stringProp name="servername">server</stringProp> <stringProp name="port">port</stringProp> <stringProp name="rootdn">DN</stringProp> <boolProp name="user_defined">false</boolProp> </ConfigTestElement> <hashTree/> <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true"> <stringProp name="servername"></stringProp> <stringProp name="port"></stringProp> <stringProp name="rootdn"></stringProp> <stringProp name="scope">2</stringProp> <stringProp name="countlimit"></stringProp> <stringProp name="timelimit"></stringProp> <stringProp name="attributes"></stringProp> <stringProp name="return_object">false</stringProp> <stringProp name="deref_aliases">false</stringProp> <stringProp name="connection_timeout"></stringProp> <stringProp name="parseflag">false</stringProp> <stringProp name="secure">false</stringProp> <stringProp name="user_dn"></stringProp> <stringProp name="user_pw"></stringProp> <stringProp name="comparedn"></stringProp> <stringProp name="comparefilt"></stringProp> <stringProp name="modddn"></stringProp> <stringProp name="newdn"></stringProp> </ConfigTestElement> <hashTree/> <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true"> <stringProp name="TCPSampler.server">server</stringProp> <stringProp name="TCPSampler.reUseConnection">true</stringProp> <stringProp name="TCPSampler.port">port</stringProp> <stringProp name="TCPSampler.nodelay">false</stringProp> <stringProp name="TCPSampler.timeout">1234</stringProp> <stringProp name="TCPSampler.request">text</stringProp> </ConfigTestElement> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timer" enabled="true"/> <hashTree> <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true"> <stringProp name="filename">file</stringProp> <stringProp name="parameters">p1</stringProp> <stringProp name="script">script</stringProp> </BeanShellTimer> <hashTree/> <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true"> <stringProp name="calcMode">this thread only</stringProp> <doubleProp> <name>throughput</name> <value>11.0</value> <savedValue>0.0</savedValue> </doubleProp> </ConstantThroughputTimer> <hashTree/> <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true"> <intProp name="groupSize">12</intProp> </SyncTimer> <hashTree/> <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> <stringProp name="ConstantTimer.delay">3001</stringProp> </ConstantTimer> <hashTree/> <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true"> <stringProp name="ConstantTimer.delay">3001</stringProp> <stringProp name="RandomTimer.range">100.01</stringProp> </GaussianRandomTimer> <hashTree/> <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true"> <stringProp name="ConstantTimer.delay">01</stringProp> <stringProp name="RandomTimer.range">100.01</stringProp> </UniformRandomTimer> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre-Processor" enabled="true"/> <hashTree> <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> <stringProp name="filename">file</stringProp> <stringProp name="parameters">p1</stringProp> <stringProp name="script">script</stringProp> </BeanShellPreProcessor> <hashTree/> <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true"> <stringProp name="CounterConfig.start">11</stringProp> <stringProp name="CounterConfig.end">33</stringProp> <stringProp name="CounterConfig.incr">22</stringProp> <stringProp name="CounterConfig.name">REF</stringProp> <stringProp name="CounterConfig.format">##</stringProp> <boolProp name="CounterConfig.per_user">false</boolProp> </CounterConfig> <hashTree/> <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true"> <collectionProp name="UserParameters.names"> <stringProp name="2420395">Name</stringProp> </collectionProp> <collectionProp name="UserParameters.thread_values"> <collectionProp name="-442416642"> <stringProp name="111578566">user1</stringProp> </collectionProp> <collectionProp name="-442416604"> <stringProp name="111578567">user2</stringProp> </collectionProp> </collectionProp> <boolProp name="UserParameters.per_iteration">false</boolProp> </UserParameters> <hashTree/> <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/> <hashTree/> <ParamModifier guiclass="ParamModifierGui" testclass="ParamModifier" testname="HTML Parameter Mask" enabled="true"> <elementProp name="ParamModifier.mask" elementType="ParamMask"> <stringProp name="ParamModifier.field_name">name</stringProp> <stringProp name="ParamModifier.prefix">prefix</stringProp> <longProp name="ParamModifier.lower_bound">11</longProp> <longProp name="ParamModifier.upper_bound">100</longProp> <longProp name="ParamModifier.increment">12</longProp> <stringProp name="ParamModifier.suffix">suffix</stringProp> </elementProp> </ParamModifier> <hashTree/> <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true"> <stringProp name="argument_name">JSESSION</stringProp> <boolProp name="path_extension">false</boolProp> <boolProp name="path_extension_no_equals">true</boolProp> <boolProp name="path_extension_no_questionmark">false</boolProp> <boolProp name="cache_value">true</boolProp> </URLRewritingModifier> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Sampler" enabled="true"> <stringProp name="TestPlan.comments">JMS Sub and JMS P-P not available (JavaMail) </stringProp> </GenericController> <hashTree> <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true"> <stringProp name="FTPSampler.server">server</stringProp> <stringProp name="FTPSampler.filename">remote</stringProp> <stringProp name="FTPSampler.localfilename">local</stringProp> <stringProp name="FTPSampler.binarymode">true</stringProp> <stringProp name="FTPSampler.saveresponse">true</stringProp> <stringProp name="FTPSampler.upload">false</stringProp> <stringProp name="ConfigTestElement.username">user</stringProp> <stringProp name="ConfigTestElement.password">pass</stringProp> </FTPSampler> <hashTree/> <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="" elementType="HTTPArgument"> <boolProp name="HTTPArgument.always_encode">false</boolProp> <stringProp name="Argument.value">Value</stringProp> <stringProp name="Argument.metadata">=</stringProp> <boolProp name="HTTPArgument.use_equals">true</boolProp> <stringProp name="Argument.name">Name</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="HTTPSampler.domain">server</stringProp> <stringProp name="HTTPSampler.port">port</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.contentEncoding">encoding</stringProp> <stringProp name="HTTPSampler.path">/path</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <boolProp name="HTTPSampler.auto_redirects">true</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re">match</stringProp> <elementProp name="HTTPsampler.Files" elementType="HTTPFileArgs"> <collectionProp name="HTTPFileArgs.files"> <elementProp name="path" elementType="HTTPFileArg"> <stringProp name="File.path">path</stringProp> <stringProp name="File.mimetype">mime</stringProp> <stringProp name="File.paramname">name</stringProp> </elementProp> </collectionProp> </elementProp> </AjpSampler> <hashTree/> <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain">server</stringProp> <stringProp name="HTTPSampler.port">port</stringProp> <stringProp name="HTTPSampler.protocol">https</stringProp> <stringProp name="HTTPSampler.contentEncoding">utf8</stringProp> <stringProp name="HTTPSampler.path">/delete</stringProp> <stringProp name="HTTPSampler.method">DELETE</stringProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <boolProp name="HTTPSampler.auto_redirects">true</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> <stringProp name="HTTPSampler.implementation">Java</stringProp> </HTTPSamplerProxy> <hashTree/> <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request HTTPClient" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain">localhost</stringProp> <stringProp name="HTTPSampler.port">xxx</stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <boolProp name="HTTPSampler.auto_redirects">true</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> <stringProp name="HTTPSampler.implementation">HttpClient3.1</stringProp> </HTTPSamplerProxy> <hashTree/> <SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler" testname="SOAP/XML-RPC Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="SoapSampler.URL_DATA">URL</stringProp> <stringProp name="HTTPSamper.xml_data">Data</stringProp> <stringProp name="SoapSampler.xml_data_file">filename</stringProp> <stringProp name="SoapSampler.SOAP_ACTION">Action</stringProp> <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp> <boolProp name="HTTPSampler.use_keepalive">false</boolProp> </SoapSampler> <hashTree/> <WebServiceSampler guiclass="WebServiceSamplerGui" testclass="WebServiceSampler" testname="WebService(SOAP) Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain">server</stringProp> <stringProp name="HTTPSampler.port">port</stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.path">path</stringProp> <stringProp name="WebserviceSampler.wsdl_url">wsdl</stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <stringProp name="Soap.Action">action</stringProp> <stringProp name="HTTPSamper.xml_data">Data</stringProp> <stringProp name="WebServiceSampler.xml_data_file">File</stringProp> <stringProp name="WebServiceSampler.xml_path_loc">Folder</stringProp> <stringProp name="WebserviceSampler.timeout">timeout</stringProp> <stringProp name="WebServiceSampler.memory_cache">true</stringProp> <stringProp name="WebServiceSampler.read_response">false</stringProp> <stringProp name="WebServiceSampler.use_proxy">true</stringProp> <stringProp name="WebServiceSampler.proxy_host">Host</stringProp> <stringProp name="WebServiceSampler.proxy_port">9999</stringProp> </WebServiceSampler> <hashTree/> <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="domain">server</stringProp> <boolProp name="imageParsing">false</boolProp> <stringProp name="logFile">log</stringProp> <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp> <stringProp name="portString">port</stringProp> <stringProp name="filterClassName">org.apache.jmeter.protocol.http.util.accesslog.LogFilter</stringProp> </AccessLogSampler> <hashTree/> <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true"> <stringProp name="filename">scriptfile</stringProp> <stringProp name="scriptLanguage">javascript</stringProp> <stringProp name="parameters">params</stringProp> <stringProp name="script">script</stringProp> </BSFSampler> <hashTree/> <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true"> <stringProp name="BeanShellSampler.query">script</stringProp> <stringProp name="BeanShellSampler.filename">file</stringProp> <stringProp name="BeanShellSampler.parameters">a,b,c</stringProp> </BeanShellSampler> <hashTree/> <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true"> <stringProp name="junitSampler.classname">woolfel.DummyTestCase</stringProp> <stringProp name="junitsampler.constructorstring"></stringProp> <stringProp name="junitsampler.pkg.filter"></stringProp> <stringProp name="junitsampler.success">Test successful</stringProp> <stringProp name="junitsampler.success.code">1000</stringProp> <stringProp name="junitsampler.failure">Test failed</stringProp> <stringProp name="junitsampler.failure.code">0001</stringProp> <stringProp name="junitsampler.exec.setup">false</stringProp> <stringProp name="junitsampler.append.error">false</stringProp> <stringProp name="junitsampler.append.exception">false</stringProp> <stringProp name="junitsampler.method">testMethodPass</stringProp> </JUnitSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true"> <stringProp name="dataSource">POOL</stringProp> <stringProp name="query">query</stringProp> <stringProp name="queryArguments">v</stringProp> <stringProp name="queryArgumentsTypes">t</stringProp> <stringProp name="queryType">Select Statement</stringProp> </JDBCSampler> <hashTree/> <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true"> <stringProp name="jms.jndi_properties">false</stringProp> <stringProp name="jms.initial_context_factory">factory</stringProp> <stringProp name="jms.provider_url">url</stringProp> <stringProp name="jms.connection_factory">conn</stringProp> <stringProp name="jms.topic">topic</stringProp> <stringProp name="jms.security_principle">user</stringProp> <stringProp name="jms.security_credentials">pass</stringProp> <stringProp name="jms.text_message">message</stringProp> <stringProp name="jms.input_file"></stringProp> <stringProp name="jms.random_path"></stringProp> <stringProp name="jms.config_choice">Textarea</stringProp> <stringProp name="jms.config_msg_type">Object Message</stringProp> <stringProp name="jms.iterations">count</stringProp> <stringProp name="jms.authenticate">Not Required</stringProp> </PublisherSampler> <hashTree/> <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true"> <stringProp name="servername"></stringProp> <stringProp name="port"></stringProp> <stringProp name="rootdn"></stringProp> <stringProp name="scope">2</stringProp> <stringProp name="countlimit"></stringProp> <stringProp name="timelimit"></stringProp> <stringProp name="attributes"></stringProp> <stringProp name="return_object">false</stringProp> <stringProp name="deref_aliases">false</stringProp> <stringProp name="connection_timeout"></stringProp> <stringProp name="parseflag">false</stringProp> <stringProp name="secure">false</stringProp> <stringProp name="user_dn"></stringProp> <stringProp name="user_pw"></stringProp> <stringProp name="comparedn"></stringProp> <stringProp name="comparefilt"></stringProp> <stringProp name="modddn"></stringProp> <stringProp name="newdn"></stringProp> </LDAPExtSampler> <hashTree/> <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true"> <stringProp name="servername">server</stringProp> <stringProp name="port">port</stringProp> <stringProp name="rootdn">dn</stringProp> <boolProp name="user_defined">false</boolProp> <stringProp name="ConfigTestElement.username">user</stringProp> <stringProp name="ConfigTestElement.password">pass</stringProp> </LDAPSampler> <hashTree/> <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true"> <stringProp name="host_type">imap</stringProp> <stringProp name="folder">Trash</stringProp> <intProp name="num_messages">-1</intProp> <boolProp name="delete">false</boolProp> <stringProp name="host">server</stringProp> <stringProp name="username">user</stringProp> <stringProp name="password">pass</stringProp> </MailReaderSampler> <hashTree/> <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true"> <stringProp name="TCPSampler.server">server</stringProp> <stringProp name="TCPSampler.reUseConnection">true</stringProp> <stringProp name="TCPSampler.port">port</stringProp> <stringProp name="TCPSampler.nodelay">false</stringProp> <stringProp name="TCPSampler.timeout">1000</stringProp> <stringProp name="TCPSampler.request">text</stringProp> <stringProp name="ConfigTestElement.username">user</stringProp> <stringProp name="ConfigTestElement.password">pass</stringProp> </TCPSampler> <hashTree/> <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true"> <boolProp name="displayJMeterProperties">false</boolProp> <boolProp name="displayJMeterVariables">true</boolProp> <boolProp name="displaySystemProperties">false</boolProp> </DebugSampler> <hashTree/> <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true"> <intProp name="ActionProcessor.action">1</intProp> <intProp name="ActionProcessor.target">0</intProp> <stringProp name="ActionProcessor.duration">1234</stringProp> </TestAction> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertion" enabled="true"/> <hashTree> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"> <stringProp name="-1513171730">must match</stringProp> </collectionProp> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <stringProp name="Assertion.assume_success">false</stringProp> <intProp name="Assertion.test_type">1</intProp> </ResponseAssertion> <hashTree/> <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true"> <stringProp name="BeanShellAssertion.query">script</stringProp> <stringProp name="BeanShellAssertion.filename">file</stringProp> <stringProp name="BeanShellAssertion.parameters">a,b,c</stringProp> </BeanShellAssertion> <hashTree/> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true"> <stringProp name="DurationAssertion.duration">111</stringProp> </DurationAssertion> <hashTree/> <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true"> <longProp name="html_assertion_error_threshold">0</longProp> <longProp name="html_assertion_warning_threshold">0</longProp> <stringProp name="html_assertion_doctype">omit</stringProp> <boolProp name="html_assertion_errorsonly">false</boolProp> <longProp name="html_assertion_format">0</longProp> <stringProp name="html_assertion_filename">sadaasd</stringProp> </HTMLAssertion> <hashTree/> <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true"> <stringProp name="MD5HexAssertion.size">abcd</stringProp> </MD5HexAssertion> <hashTree/> <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true"> <longProp name="SizeAssertion.size">44</longProp> <intProp name="SizeAssertion.operator">4</intProp> </SizeAssertion> <hashTree/> <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/> <hashTree/> <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true"> <stringProp name="xmlschema_assertion_filename">schema</stringProp> </XMLSchemaAssertion> <hashTree/> <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true"> <boolProp name="XPath.validate">false</boolProp> <boolProp name="XPath.whitespace">false</boolProp> <boolProp name="XPath.tolerant">false</boolProp> <boolProp name="XPath.namespace">false</boolProp> <boolProp name="XPath.negate">false</boolProp> <stringProp name="XPath.xpath">/xpath</stringProp> </XPathAssertion> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post-Processor" enabled="true"/> <hashTree> <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true"> <stringProp name="filename">file</stringProp> <stringProp name="parameters">p1</stringProp> <stringProp name="script">script</stringProp> </BeanShellPostProcessor> <hashTree/> <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true"/> <hashTree/> <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname">ref</stringProp> <stringProp name="RegexExtractor.regex">exp</stringProp> <stringProp name="RegexExtractor.template">$1$</stringProp> <stringProp name="RegexExtractor.default">DEF</stringProp> <stringProp name="RegexExtractor.match_number">12</stringProp> </RegexExtractor> <hashTree/> <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true"> <stringProp name="XPathExtractor.default">def</stringProp> <stringProp name="XPathExtractor.refname">ref</stringProp> <stringProp name="XPathExtractor.xpathQuery">/abc</stringProp> <boolProp name="XPathExtractor.tolerant">false</boolProp> <boolProp name="XPathExtractor.namespace">true</boolProp> </XPathExtractor> <hashTree/> <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true"> <intProp name="OnError.action">1</intProp> </ResultAction> <hashTree/> <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true"> <stringProp name="FileSaver.filename">prefix</stringProp> <stringProp name="FileSaver.errorsonly">false</stringProp> </ResultSaver> <hashTree/> <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listener" enabled="true"/> <hashTree> <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true"> <stringProp name="filename">b</stringProp> <stringProp name="parameters">a</stringProp> <stringProp name="script">c</stringProp> </BeanShellListener> <hashTree/> <ResultCollector guiclass="DistributionGraphVisualizer" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel"> <stringProp name="MailerModel.successLimit">2</stringProp> <stringProp name="MailerModel.failureLimit">2</stringProp> <stringProp name="MailerModel.failureSubject">failed</stringProp> <stringProp name="MailerModel.fromAddress">from</stringProp> <stringProp name="MailerModel.smtpHost">server</stringProp> <stringProp name="MailerModel.successSubject">ok</stringProp> <stringProp name="MailerModel.addressie">to</stringProp> </elementProp> <stringProp name="filename"></stringProp> </MailerResultCollector> <hashTree/> <ResultCollector guiclass="MonitorHealthVisualizer" testclass="ResultCollector" testname="Monitor Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SplineVisualizer" testclass="ResultCollector" testname="Spline Visualizer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </hashTree> </hashTree> </jmeterTestPlan> �����������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/Bug52968.jmx��������������������������������������������������������0000644�0001750�0001750�00000324125�12032647263�020061� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.2"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.serialize_threadgroups">true</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true"> <stringProp name="CounterConfig.start">0</stringProp> <stringProp name="CounterConfig.end">100</stringProp> <stringProp name="CounterConfig.incr">1</stringProp> <stringProp name="CounterConfig.name">counter</stringProp> <stringProp name="CounterConfig.format"></stringProp> <boolProp name="CounterConfig.per_user">true</boolProp> </CounterConfig> <hashTree/> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG0-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332605004000</longProp> <longProp name="ThreadGroup.end_time">1332605004000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-NOPARENT-1" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNP1-JR0" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNP1-JR0-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-MUSTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-MUSTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG1-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707267000</longProp> <longProp name="ThreadGroup.end_time">1332707267000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-NOPARENT-FAILING0" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPF-JR0" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPF-JR0-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">500</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">KO</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG2-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707428000</longProp> <longProp name="ThreadGroup.end_time">1332707428000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-NOPARENT-FAILING1" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPF-JR0" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPF-JR0-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPF-JR1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPF-JR1-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">500</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">KO</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG3-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707466000</longProp> <longProp name="ThreadGroup.end_time">1332707466000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-NOPARENT-FAILING2" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPF2-JR1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPF2-JR1-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPF2-JR2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPF2-JR2-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">500</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">KO</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPF2-JR3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPF2-JR3-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG4-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707571000</longProp> <longProp name="ThreadGroup.end_time">1332707571000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-NOPARENT-TestAction" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPTA-JR1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPTA-JR1-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPTA-JR2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPTA-JR2-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <TestAction guiclass="TestActionGui" testclass="TestAction" testname="TNPTA-TA" enabled="true"> <intProp name="ActionProcessor.action">3</intProp> <intProp name="ActionProcessor.target">0</intProp> <stringProp name="ActionProcessor.duration"></stringProp> </TestAction> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TNPTA-JR3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TNPTA-JR3-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG5-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707571000</longProp> <longProp name="ThreadGroup.end_time">1332707571000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-PARENT" enabled="true"> <boolProp name="TransactionController.parent">true</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TP-JR0" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TP-JR0-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-MUSTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-MUSTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG6-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707571000</longProp> <longProp name="ThreadGroup.end_time">1332707571000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-PARENT-FAILING1" enabled="true"> <boolProp name="TransactionController.parent">true</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TPF-JR0" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPF-JR0-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">500</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">KO</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG7-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707571000</longProp> <longProp name="ThreadGroup.end_time">1332707571000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-PARENT-FAILING1" enabled="true"> <boolProp name="TransactionController.parent">true</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TP-JR0" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TP-JR0-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TP-JR1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TP-JR1-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">500</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">KO</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG8-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707571000</longProp> <longProp name="ThreadGroup.end_time">1332707571000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-PARENT-FAILING2" enabled="true"> <boolProp name="TransactionController.parent">true</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TP-JR1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPF-JR1-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TP-JR2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPF-JR2-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">500</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">KO</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TP-JR3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPF-JR3-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="TG9-SNL" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">3</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1332707571000</longProp> <longProp name="ThreadGroup.end_time">1332707571000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TC-PARENT-TestAction" enabled="true"> <boolProp name="TransactionController.parent">true</boolProp> </TransactionController> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TPTA-JR1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPTA-JR1-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TPTA-JR2" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPTA-JR2-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <TestAction guiclass="TestActionGui" testclass="TestAction" testname="TPTA-TA" enabled="true"> <intProp name="ActionProcessor.action">3</intProp> <intProp name="ActionProcessor.target">0</intProp> <stringProp name="ActionProcessor.duration"></stringProp> </TestAction> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="TPTA-JR3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">TPTA-JR3-${counter}</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value">200</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="JR-SHOULDNOTEXECUTE" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">JR-SHOULDNOTEXECUTE</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>true</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">Bug52968.csv</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>false</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>false</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>true</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <threadCounts>true</threadCounts> <sampleCount>true</sampleCount> </value> </objProp> <stringProp name="filename">Bug52968.xml</stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </jmeterTestPlan> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/TestDisable.jmx�����������������������������������������������������0000644�0001750�0001750�00000052043�12032647263�021126� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.1"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="Argument List" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <collectionProp name="TestPlan.thread_groups"/> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <stringProp name="TestPlan.comments"></stringProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Disable" enabled="true"> <longProp name="ThreadGroup.start_time">0</longProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="false"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">5</stringProp> </elementProp> <longProp name="ThreadGroup.end_time">0</longProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.num_threads">3</stringProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.ramp_time">0</stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java 1" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java1</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java2" enabled="false"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java2 - disabled</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Enabled" enabled="true"/> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java3" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java3</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java4" enabled="false"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java4 - disabled</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Disabled" enabled="false"/> <hashTree> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java5" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java5</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java6" enabled="false"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value">Java5 - disabled</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> </hashTree> </hashTree> <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </jmeterTestPlan> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/Bug50898.jmx��������������������������������������������������������0000644�0001750�0001750�00000012212�12032647263�020050� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.1"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Bug50898" enabled="true"> <stringProp name="TestPlan.comments">Duplicate IncludeController names cause NPE in non-GUI mode</stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1316699696000</longProp> <longProp name="ThreadGroup.end_time">1316699696000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true"> <stringProp name="IncludeController.includepath">Bug50898_inc.jmx</stringProp> </IncludeController> <hashTree/> <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true"> <stringProp name="IncludeController.includepath">Bug50898_inc.jmx</stringProp> </IncludeController> <hashTree/> </hashTree> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>true</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>false</xml> <fieldNames>true</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename">Bug50898.csv</stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>false</time> <latency>true</latency> <timestamp>false</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename">Bug50898.xml</stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </jmeterTestPlan> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/HeaderManagerTestPlan.jmx�������������������������������������������0000644�0001750�0001750�00000011450�12032647263�023056� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.1"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <collectionProp name="TestPlan.thread_groups"/> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <stringProp name="TestPlan.comments"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <longProp name="ThreadGroup.start_time">0</longProp> <stringProp name="ThreadGroup.delay"></stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <longProp name="ThreadGroup.end_time">0</longProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.ramp_time">0</stringProp> </ThreadGroup> <hashTree> <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> <collectionProp name="HeaderManager.headers"> <elementProp name="User-Agent" elementType="Header"> <stringProp name="Header.name">User-Agent</stringProp> <stringProp name="Header.value">Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)</stringProp> </elementProp> </collectionProp> </HeaderManager> <hashTree/> <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.path">/</stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.use_keepalive">false</boolProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <boolProp name="HTTPSampler.image_parser">false</boolProp> <boolProp name="HTTPSampler.follow_redirects">false</boolProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.domain">jakarta.apache.org</stringProp> <stringProp name="HTTPSampler.monitor">false</stringProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <stringProp name="HTTPSampler.implementation">Java</stringProp> </HTTPSamplerProxy> <hashTree/> <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="File Reporter" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>false</threadName> <dataType>true</dataType> <encoding>true</encoding> <assertions>false</assertions> <subresults>false</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>true</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> </value> </objProp> <stringProp name="filename">header-manager.dat</stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </hashTree> </jmeterTestPlan> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/proxy.jmx�����������������������������������������������������������0000644�0001750�0001750�00000005143�12032647263�020103� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="1.8"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true"> <collectionProp name="TestPlan.thread_groups"/> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <stringProp name="TestPlan.comments"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <longProp name="ThreadGroup.start_time">0</longProp> <stringProp name="ThreadGroup.delay"></stringProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <intProp name="LoopController.loops">-1</intProp> <boolProp name="LoopController.continue_forever">false</boolProp> </elementProp> <longProp name="ThreadGroup.end_time">0</longProp> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <stringProp name="ThreadGroup.ramp_time">0</stringProp> </ThreadGroup> <hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/> <hashTree> <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="HTTPSampler.domain">jakarta.apache.org</stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.port"></stringProp> </ConfigTestElement> <hashTree/> </hashTree> </hashTree> </hashTree> </hashTree> </jmeterTestPlan> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/GenTest24.jmx�������������������������������������������������������0000644�0001750�0001750�00000232777�12032647263�020460� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.1"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan for 2.4" enabled="true"> <stringProp name="TestPlan.comments"></stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1337360263000</longProp> <longProp name="ThreadGroup.end_time">1337360263000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Controllers" enabled="true"/> <hashTree> <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true"> <stringProp name="ForeachController.inputVal"></stringProp> <stringProp name="ForeachController.returnVal"></stringProp> <boolProp name="ForeachController.useSeparator">true</boolProp> </ForeachController> <hashTree/> <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true"> <stringProp name="IfController.condition"></stringProp> <boolProp name="IfController.evaluateAll">false</boolProp> </IfController> <hashTree/> <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true"> <stringProp name="IncludeController.includepath"></stringProp> </IncludeController> <hashTree/> <InterleaveControl guiclass="InterleaveControlGui" testclass="InterleaveControl" testname="Interleave Controller" enabled="true"> <intProp name="InterleaveControl.style">1</intProp> </InterleaveControl> <hashTree/> <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> <boolProp name="LoopController.continue_forever">true</boolProp> <stringProp name="LoopController.loops">1</stringProp> </LoopController> <hashTree/> <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/> <hashTree/> <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/> <hashTree/> <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true"> <intProp name="InterleaveControl.style">1</intProp> </RandomController> <hashTree/> <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/> <hashTree/> <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/> <hashTree/> <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true"> <stringProp name="RunTime.seconds">1</stringProp> </RunTime> <hashTree/> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/> <hashTree/> <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true"> <stringProp name="SwitchController.value"></stringProp> </SwitchController> <hashTree/> <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true"> <intProp name="ThroughputController.style">0</intProp> <boolProp name="ThroughputController.perThread">true</boolProp> <intProp name="ThroughputController.maxThroughput">1</intProp> <FloatProperty> <name>ThroughputController.percentThroughput</name> <value>100.0</value> <savedValue>0.0</savedValue> </FloatProperty> </ThroughputController> <hashTree/> <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true"> <boolProp name="TransactionController.parent">false</boolProp> </TransactionController> <hashTree/> <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true"> <stringProp name="WhileController.condition"></stringProp> </WhileController> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Config Elements" enabled="true"/> <hashTree> <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true"> <stringProp name="delimiter">,</stringProp> <stringProp name="fileEncoding"></stringProp> <stringProp name="filename"></stringProp> <boolProp name="quotedData">false</boolProp> <boolProp name="recycle">true</boolProp> <stringProp name="shareMode">All threads</stringProp> <boolProp name="stopThread">false</boolProp> <stringProp name="variableNames"></stringProp> </CSVDataSet> <hashTree/> <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true"> <stringProp name="CounterConfig.start"></stringProp> <stringProp name="CounterConfig.end"></stringProp> <stringProp name="CounterConfig.incr"></stringProp> <stringProp name="CounterConfig.name"></stringProp> <stringProp name="CounterConfig.format"></stringProp> <boolProp name="CounterConfig.per_user">false</boolProp> </CounterConfig> <hashTree/> <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true"> <stringProp name="FTPSampler.server"></stringProp> <stringProp name="FTPSampler.port"></stringProp> <stringProp name="FTPSampler.filename"></stringProp> <stringProp name="FTPSampler.localfilename"></stringProp> <stringProp name="FTPSampler.inputdata"></stringProp> <boolProp name="FTPSampler.binarymode">false</boolProp> <boolProp name="FTPSampler.saveresponse">false</boolProp> <boolProp name="FTPSampler.upload">false</boolProp> </ConfigTestElement> <hashTree/> <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> <collectionProp name="AuthManager.auth_list"/> </AuthManager> <hashTree/> <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true"> <boolProp name="clearEachIteration">false</boolProp> <boolProp name="useExpires">false</boolProp> </CacheManager> <hashTree/> <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true"> <collectionProp name="CookieManager.cookies"/> <boolProp name="CookieManager.clearEachIteration">false</boolProp> <stringProp name="CookieManager.policy">rfc2109</stringProp> </CookieManager> <hashTree/> <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> <collectionProp name="HeaderManager.headers"/> </HeaderManager> <hashTree/> <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path"></stringProp> </ConfigTestElement> <hashTree/> <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true"> <boolProp name="autocommit">true</boolProp> <stringProp name="checkQuery">Select 1</stringProp> <stringProp name="connectionAge">5000</stringProp> <stringProp name="dataSource"></stringProp> <stringProp name="dbUrl"></stringProp> <stringProp name="driver"></stringProp> <boolProp name="keepAlive">true</boolProp> <stringProp name="password"></stringProp> <stringProp name="poolMax">10</stringProp> <stringProp name="timeout">10000</stringProp> <stringProp name="trimInterval">60000</stringProp> <stringProp name="username"></stringProp> </JDBCDataSource> <hashTree/> <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaConfig> <hashTree/> <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true"> <stringProp name="servername"></stringProp> <stringProp name="port"></stringProp> <stringProp name="rootdn"></stringProp> <stringProp name="scope">2</stringProp> <stringProp name="countlimit"></stringProp> <stringProp name="timelimit"></stringProp> <stringProp name="attributes"></stringProp> <stringProp name="return_object">false</stringProp> <stringProp name="deref_aliases">false</stringProp> <stringProp name="connection_timeout"></stringProp> <stringProp name="parseflag">false</stringProp> <stringProp name="secure">false</stringProp> <stringProp name="user_dn"></stringProp> <stringProp name="user_pw"></stringProp> <stringProp name="comparedn"></stringProp> <stringProp name="comparefilt"></stringProp> <stringProp name="modddn"></stringProp> <stringProp name="newdn"></stringProp> </ConfigTestElement> <hashTree/> <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true"> <stringProp name="servername"></stringProp> <stringProp name="port"></stringProp> <stringProp name="rootdn"></stringProp> <boolProp name="user_defined">false</boolProp> <stringProp name="test">add</stringProp> <stringProp name="base_entry_dn"></stringProp> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> </ConfigTestElement> <hashTree/> <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true"> <stringProp name="ConfigTestElement.username"></stringProp> <stringProp name="ConfigTestElement.password"></stringProp> </ConfigTestElement> <hashTree/> <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true"> <stringProp name="maximumValue"></stringProp> <stringProp name="minimumValue">1</stringProp> <stringProp name="outputFormat"></stringProp> <boolProp name="perThread">false</boolProp> <stringProp name="randomSeed"></stringProp> <stringProp name="variableName"></stringProp> </RandomVariableConfig> <hashTree/> <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/> <hashTree/> <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true"> <stringProp name="TCPSampler.server"></stringProp> <boolProp name="TCPSampler.reUseConnection">true</boolProp> <stringProp name="TCPSampler.port"></stringProp> <boolProp name="TCPSampler.nodelay">false</boolProp> <stringProp name="TCPSampler.timeout"></stringProp> <stringProp name="TCPSampler.request"></stringProp> </ConfigTestElement> <hashTree/> <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </Arguments> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Timers" enabled="true"/> <hashTree> <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </BSFTimer> <hashTree/> <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <boolProp name="resetInterpreter">false</boolProp> <stringProp name="script"></stringProp> </BeanShellTimer> <hashTree/> <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true"> <stringProp name="calcMode">this thread only</stringProp> <doubleProp> <name>throughput</name> <value>0.0</value> <savedValue>0.0</savedValue> </doubleProp> </ConstantThroughputTimer> <hashTree/> <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true"> <stringProp name="ConstantTimer.delay">300</stringProp> </ConstantTimer> <hashTree/> <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true"> <stringProp name="ConstantTimer.delay">300</stringProp> <stringProp name="RandomTimer.range">100.0</stringProp> </GaussianRandomTimer> <hashTree/> <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </JSR223Timer> <hashTree/> <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true"> <intProp name="groupSize">0</intProp> </SyncTimer> <hashTree/> <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true"> <stringProp name="ConstantTimer.delay">0</stringProp> <stringProp name="RandomTimer.range">100.0</stringProp> </UniformRandomTimer> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Pre Processors" enabled="true"/> <hashTree> <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </BSFPreProcessor> <hashTree/> <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <boolProp name="resetInterpreter">false</boolProp> <stringProp name="script"></stringProp> </BeanShellPreProcessor> <hashTree/> <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/> <hashTree/> <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true"> <stringProp name="argument_name"></stringProp> <boolProp name="path_extension">false</boolProp> <boolProp name="path_extension_no_equals">false</boolProp> <boolProp name="path_extension_no_questionmark">false</boolProp> <boolProp name="cache_value">false</boolProp> </URLRewritingModifier> <hashTree/> <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </JSR223PreProcessor> <hashTree/> <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true"> <collectionProp name="UserParameters.names"/> <collectionProp name="UserParameters.thread_values"> <collectionProp name="1"/> </collectionProp> <boolProp name="UserParameters.per_iteration">false</boolProp> </UserParameters> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Samplers" enabled="true"/> <hashTree> <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </AjpSampler> <hashTree/> <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="domain"></stringProp> <boolProp name="imageParsing">false</boolProp> <stringProp name="logFile"></stringProp> <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp> <stringProp name="portString"></stringProp> </AccessLogSampler> <hashTree/> <BSFSampler guiclass="BSFSamplerGui" testclass="BSFSampler" testname="BSF Sampler" enabled="true"> <stringProp name="BSFSampler.filename"></stringProp> <stringProp name="BSFSampler.language">beanbasic</stringProp> <stringProp name="BSFSampler.parameters"></stringProp> <stringProp name="BSFSampler.query"></stringProp> </BSFSampler> <hashTree/> <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true"> <stringProp name="BeanShellSampler.query"></stringProp> <stringProp name="BeanShellSampler.filename"></stringProp> <stringProp name="BeanShellSampler.parameters"></stringProp> <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp> </BeanShellSampler> <hashTree/> <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true"> <boolProp name="displayJMeterProperties">false</boolProp> <boolProp name="displayJMeterVariables">true</boolProp> <boolProp name="displaySystemProperties">false</boolProp> </DebugSampler> <hashTree/> <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true"> <stringProp name="FTPSampler.server"></stringProp> <stringProp name="FTPSampler.port"></stringProp> <stringProp name="FTPSampler.filename"></stringProp> <stringProp name="FTPSampler.localfilename"></stringProp> <stringProp name="FTPSampler.inputdata"></stringProp> <boolProp name="FTPSampler.binarymode">false</boolProp> <boolProp name="FTPSampler.saveresponse">false</boolProp> <boolProp name="FTPSampler.upload">false</boolProp> <stringProp name="ConfigTestElement.username"></stringProp> <stringProp name="ConfigTestElement.password"></stringProp> </FTPSampler> <hashTree/> <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="HTTP Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler> <hashTree/> <HTTPSampler2 guiclass="HttpTestSampleGui2" testclass="HTTPSampler2" testname="HTTP Request HTTPClient" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.connect_timeout"></stringProp> <stringProp name="HTTPSampler.response_timeout"></stringProp> <stringProp name="HTTPSampler.protocol"></stringProp> <stringProp name="HTTPSampler.contentEncoding"></stringProp> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="HTTPSampler.method">GET</stringProp> <boolProp name="HTTPSampler.follow_redirects">true</boolProp> <boolProp name="HTTPSampler.auto_redirects">false</boolProp> <boolProp name="HTTPSampler.use_keepalive">true</boolProp> <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> <boolProp name="HTTPSampler.monitor">false</boolProp> <stringProp name="HTTPSampler.embedded_url_re"></stringProp> </HTTPSampler2> <hashTree/> <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true"> <stringProp name="dataSource"></stringProp> <stringProp name="query"></stringProp> <stringProp name="queryArguments"></stringProp> <stringProp name="queryArgumentsTypes"></stringProp> <stringProp name="queryType">Select Statement</stringProp> <stringProp name="variableNames"></stringProp> </JDBCSampler> <hashTree/> <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true"> <stringProp name="JMSSampler.queueconnectionfactory"></stringProp> <stringProp name="JMSSampler.SendQueue"></stringProp> <stringProp name="JMSSampler.ReceiveQueue"></stringProp> <boolProp name="JMSSampler.isFireAndForget">true</boolProp> <boolProp name="JMSSampler.isNonPersistent">false</boolProp> <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp> <stringProp name="JMSSampler.timeout"></stringProp> <stringProp name="HTTPSamper.xml_data"></stringProp> <stringProp name="JMSSampler.initialContextFactory"></stringProp> <stringProp name="JMSSampler.contextProviderUrl"></stringProp> <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> </JMSSampler> <hashTree/> <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true"> <stringProp name="jms.jndi_properties">false</stringProp> <stringProp name="jms.initial_context_factory"></stringProp> <stringProp name="jms.provider_url"></stringProp> <stringProp name="jms.connection_factory"></stringProp> <stringProp name="jms.topic"></stringProp> <stringProp name="jms.security_principle"></stringProp> <stringProp name="jms.security_credentials"></stringProp> <stringProp name="jms.text_message"></stringProp> <stringProp name="jms.input_file"></stringProp> <stringProp name="jms.random_path"></stringProp> <stringProp name="jms.config_choice">jms_use_text</stringProp> <stringProp name="jms.config_msg_type">jms_text_message</stringProp> <stringProp name="jms.iterations">1</stringProp> <boolProp name="jms.authenticate">false</boolProp> </PublisherSampler> <hashTree/> <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true"> <stringProp name="jms.jndi_properties">false</stringProp> <stringProp name="jms.initial_context_factory"></stringProp> <stringProp name="jms.provider_url"></stringProp> <stringProp name="jms.connection_factory"></stringProp> <stringProp name="jms.topic"></stringProp> <stringProp name="jms.security_principle"></stringProp> <stringProp name="jms.security_credentials"></stringProp> <boolProp name="jms.authenticate">false</boolProp> <stringProp name="jms.iterations">1</stringProp> <stringProp name="jms.read_response">true</stringProp> <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp> </SubscriberSampler> <hashTree/> <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </JSR223Sampler> <hashTree/> <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true"> <stringProp name="junitSampler.classname">test.RerunTest</stringProp> <stringProp name="junitsampler.constructorstring"></stringProp> <stringProp name="junitsampler.method">testRerun</stringProp> <stringProp name="junitsampler.pkg.filter"></stringProp> <stringProp name="junitsampler.success">Test successful</stringProp> <stringProp name="junitsampler.success.code">1000</stringProp> <stringProp name="junitsampler.failure">Test failed</stringProp> <stringProp name="junitsampler.failure.code">0001</stringProp> <stringProp name="junitsampler.error">An unexpected error occured</stringProp> <stringProp name="junitsampler.error.code">9999</stringProp> <stringProp name="junitsampler.exec.setup">false</stringProp> <stringProp name="junitsampler.append.error">false</stringProp> <stringProp name="junitsampler.append.exception">false</stringProp> </JUnitSampler> <hashTree/> <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true"> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> <collectionProp name="Arguments.arguments"> <elementProp name="Sleep_Time" elementType="Argument"> <stringProp name="Argument.name">Sleep_Time</stringProp> <stringProp name="Argument.value">100</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Sleep_Mask" elementType="Argument"> <stringProp name="Argument.name">Sleep_Mask</stringProp> <stringProp name="Argument.value">0xFF</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Label" elementType="Argument"> <stringProp name="Argument.name">Label</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseCode" elementType="Argument"> <stringProp name="Argument.name">ResponseCode</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResponseMessage" elementType="Argument"> <stringProp name="Argument.name">ResponseMessage</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="Status" elementType="Argument"> <stringProp name="Argument.name">Status</stringProp> <stringProp name="Argument.value">OK</stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="SamplerData" elementType="Argument"> <stringProp name="Argument.name">SamplerData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> <elementProp name="ResultData" elementType="Argument"> <stringProp name="Argument.name">ResultData</stringProp> <stringProp name="Argument.value"></stringProp> <stringProp name="Argument.metadata">=</stringProp> </elementProp> </collectionProp> </elementProp> <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp> </JavaSampler> <hashTree/> <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true"> <stringProp name="servername"></stringProp> <stringProp name="port"></stringProp> <stringProp name="rootdn"></stringProp> <stringProp name="scope">2</stringProp> <stringProp name="countlimit"></stringProp> <stringProp name="timelimit"></stringProp> <stringProp name="attributes"></stringProp> <stringProp name="return_object">false</stringProp> <stringProp name="deref_aliases">false</stringProp> <stringProp name="connection_timeout"></stringProp> <stringProp name="parseflag">false</stringProp> <stringProp name="secure">false</stringProp> <stringProp name="user_dn"></stringProp> <stringProp name="user_pw"></stringProp> <stringProp name="comparedn"></stringProp> <stringProp name="comparefilt"></stringProp> <stringProp name="modddn"></stringProp> <stringProp name="newdn"></stringProp> </LDAPExtSampler> <hashTree/> <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true"> <stringProp name="servername"></stringProp> <stringProp name="port"></stringProp> <stringProp name="rootdn"></stringProp> <boolProp name="user_defined">false</boolProp> <stringProp name="test">add</stringProp> <stringProp name="base_entry_dn"></stringProp> <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="ConfigTestElement.username"></stringProp> <stringProp name="ConfigTestElement.password"></stringProp> </LDAPSampler> <hashTree/> <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true"> <stringProp name="host_type">pop3</stringProp> <stringProp name="folder">INBOX</stringProp> <stringProp name="host"></stringProp> <stringProp name="username"></stringProp> <stringProp name="password"></stringProp> <intProp name="num_messages">-1</intProp> <boolProp name="delete">false</boolProp> </MailReaderSampler> <hashTree/> <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true"> <stringProp name="SMTPSampler.server"></stringProp> <stringProp name="SMTPSampler.serverPort"></stringProp> <stringProp name="SMTPSampler.mailFrom"></stringProp> <stringProp name="SMTPSampler.receiverTo"></stringProp> <stringProp name="SMTPSampler.receiverCC"></stringProp> <stringProp name="SMTPSampler.receiverBCC"></stringProp> <stringProp name="SMTPSampler.subject"></stringProp> <stringProp name="SMTPSampler.include_timestamp">false</stringProp> <stringProp name="SMTPSampler.message"></stringProp> <stringProp name="SMTPSampler.attachFile"></stringProp> <stringProp name="SMTPSampler.useSSL">false</stringProp> <stringProp name="SMTPSampler.useStartTLS">false</stringProp> <stringProp name="SMTPSampler.trustAllCerts">false</stringProp> <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp> <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp> <stringProp name="SMTPSampler.trustStoreToUse"></stringProp> <boolProp name="SMTPSampler.use_eml">false</boolProp> <stringProp name="SMTPSampler.emlMessageToSend"></stringProp> <stringProp name="SMTPSampler.useAuth">false</stringProp> <stringProp name="SMTPSampler.password"></stringProp> <stringProp name="SMTPSampler.username"></stringProp> <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp> <stringProp name="SMTPSampler.enableDebug">false</stringProp> <collectionProp name="SMTPSampler.headerFields"/> </SmtpSampler> <hashTree/> <SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler" testname="SOAP/XML-RPC Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="SoapSampler.URL_DATA"></stringProp> <stringProp name="HTTPSamper.xml_data"></stringProp> <stringProp name="SoapSampler.xml_data_file"></stringProp> <stringProp name="SoapSampler.SOAP_ACTION"></stringProp> <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp> <boolProp name="HTTPSampler.use_keepalive">false</boolProp> </SoapSampler> <hashTree/> <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true"> <stringProp name="TCPSampler.server"></stringProp> <boolProp name="TCPSampler.reUseConnection">true</boolProp> <stringProp name="TCPSampler.port"></stringProp> <boolProp name="TCPSampler.nodelay">false</boolProp> <stringProp name="TCPSampler.timeout"></stringProp> <stringProp name="TCPSampler.request"></stringProp> <stringProp name="ConfigTestElement.username"></stringProp> <stringProp name="ConfigTestElement.password"></stringProp> </TCPSampler> <hashTree/> <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true"> <intProp name="ActionProcessor.action">1</intProp> <intProp name="ActionProcessor.target">0</intProp> <stringProp name="ActionProcessor.duration"></stringProp> </TestAction> <hashTree/> <WebServiceSampler guiclass="WebServiceSamplerGui" testclass="WebServiceSampler" testname="WebService(SOAP) Request" enabled="true"> <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="HTTPSampler.domain"></stringProp> <stringProp name="HTTPSampler.port"></stringProp> <stringProp name="HTTPSampler.protocol">http</stringProp> <stringProp name="HTTPSampler.path"></stringProp> <stringProp name="WebserviceSampler.wsdl_url"></stringProp> <stringProp name="HTTPSampler.method">POST</stringProp> <stringProp name="Soap.Action"></stringProp> <stringProp name="HTTPSamper.xml_data"></stringProp> <stringProp name="WebServiceSampler.xml_data_file"></stringProp> <stringProp name="WebServiceSampler.xml_path_loc"></stringProp> <stringProp name="WebserviceSampler.timeout"></stringProp> <stringProp name="WebServiceSampler.memory_cache">true</stringProp> <stringProp name="WebServiceSampler.read_response">false</stringProp> <stringProp name="WebServiceSampler.use_proxy">false</stringProp> <stringProp name="WebServiceSampler.proxy_host"></stringProp> <stringProp name="WebServiceSampler.proxy_port"></stringProp> </WebServiceSampler> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Post Processors" enabled="true"/> <hashTree> <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </BSFPostProcessor> <hashTree/> <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <boolProp name="resetInterpreter">false</boolProp> <stringProp name="script"></stringProp> </BeanShellPostProcessor> <hashTree/> <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true"/> <hashTree/> <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </JSR223PostProcessor> <hashTree/> <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true"> <stringProp name="RegexExtractor.useHeaders">false</stringProp> <stringProp name="RegexExtractor.refname"></stringProp> <stringProp name="RegexExtractor.regex"></stringProp> <stringProp name="RegexExtractor.template"></stringProp> <stringProp name="RegexExtractor.default"></stringProp> <stringProp name="RegexExtractor.match_number"></stringProp> </RegexExtractor> <hashTree/> <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true"> <intProp name="OnError.action">0</intProp> </ResultAction> <hashTree/> <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true"> <stringProp name="XPathExtractor.default"></stringProp> <stringProp name="XPathExtractor.refname"></stringProp> <stringProp name="XPathExtractor.xpathQuery"></stringProp> <boolProp name="XPathExtractor.validate">false</boolProp> <boolProp name="XPathExtractor.tolerant">false</boolProp> <boolProp name="XPathExtractor.namespace">false</boolProp> </XPathExtractor> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Assertions" enabled="true"/> <hashTree> <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </BSFAssertion> <hashTree/> <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true"> <stringProp name="BeanShellAssertion.query"></stringProp> <stringProp name="BeanShellAssertion.filename"></stringProp> <stringProp name="BeanShellAssertion.parameters"></stringProp> <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp> </BeanShellAssertion> <hashTree/> <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true"> <boolProp name="compareContent">true</boolProp> <longProp name="compareTime">-1</longProp> <collectionProp name="stringsToSkip"/> </CompareAssertion> <hashTree/> <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true"> <stringProp name="DurationAssertion.duration"></stringProp> </DurationAssertion> <hashTree/> <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true"> <longProp name="html_assertion_error_threshold">0</longProp> <longProp name="html_assertion_warning_threshold">0</longProp> <stringProp name="html_assertion_doctype">omit</stringProp> <boolProp name="html_assertion_errorsonly">false</boolProp> <longProp name="html_assertion_format">0</longProp> <stringProp name="html_assertion_filename"></stringProp> </HTMLAssertion> <hashTree/> <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </JSR223Assertion> <hashTree/> <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true"> <stringProp name="MD5HexAssertion.size"></stringProp> </MD5HexAssertion> <hashTree/> <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> <collectionProp name="Asserion.test_strings"/> <stringProp name="Assertion.test_field">Assertion.response_data</stringProp> <boolProp name="Assertion.assume_success">false</boolProp> <intProp name="Assertion.test_type">2</intProp> </ResponseAssertion> <hashTree/> <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true"> <boolProp name="SMIMEAssert.verifySignature">false</boolProp> <boolProp name="SMIMEAssert.notSigned">false</boolProp> <stringProp name="SMIMEAssert.issuerDn"></stringProp> <stringProp name="SMIMEAssert.signerDn"></stringProp> <stringProp name="SMIMEAssert.signerSerial"></stringProp> <stringProp name="SMIMEAssert.signerEmail"></stringProp> <stringProp name="SMIMEAssert.signerCertFile"></stringProp> <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp> <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp> <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp> <stringProp name="SMIMEAssert.messagePosition"></stringProp> </SMIMEAssertion> <hashTree/> <SizeAssertion guiclass="SizeAssertionGui" testclass="SizeAssertion" testname="Size Assertion" enabled="true"> <longProp name="SizeAssertion.size">0</longProp> <intProp name="SizeAssertion.operator">1</intProp> </SizeAssertion> <hashTree/> <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/> <hashTree/> <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true"> <stringProp name="xmlschema_assertion_filename"></stringProp> </XMLSchemaAssertion> <hashTree/> <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true"> <boolProp name="XPath.negate">false</boolProp> <stringProp name="XPath.xpath">/</stringProp> <boolProp name="XPath.validate">false</boolProp> <boolProp name="XPath.whitespace">false</boolProp> <boolProp name="XPath.tolerant">false</boolProp> <boolProp name="XPath.namespace">false</boolProp> </XPathAssertion> <hashTree/> </hashTree> <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Listeners" enabled="true"/> <hashTree> <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </BSFListener> <hashTree/> <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <boolProp name="resetInterpreter">false</boolProp> <stringProp name="script"></stringProp> </BeanShellListener> <hashTree/> <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="DistributionGraphVisualizer" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/> <hashTree/> <ResultCollector guiclass="GraphAccumVisualizer" testclass="ResultCollector" testname="Graph Full Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true"> <stringProp name="filename"></stringProp> <stringProp name="parameters"></stringProp> <stringProp name="script"></stringProp> <stringProp name="scriptLanguage"></stringProp> </JSR223Listener> <hashTree/> <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel"> <stringProp name="MailerModel.successLimit">2</stringProp> <stringProp name="MailerModel.failureLimit">2</stringProp> <stringProp name="MailerModel.failureSubject"></stringProp> <stringProp name="MailerModel.fromAddress"></stringProp> <stringProp name="MailerModel.smtpHost"></stringProp> <stringProp name="MailerModel.successSubject"></stringProp> <stringProp name="MailerModel.addressie"></stringProp> </elementProp> <stringProp name="filename"></stringProp> </MailerResultCollector> <hashTree/> <ResultCollector guiclass="MonitorHealthVisualizer" testclass="ResultCollector" testname="Monitor Results" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true"> <stringProp name="FileSaver.filename"></stringProp> <boolProp name="FileSaver.errorsonly">false</boolProp> <boolProp name="FileSaver.skipautonumber">false</boolProp> <boolProp name="FileSaver.skipsuffix">false</boolProp> <boolProp name="FileSaver.successonly">false</boolProp> </ResultSaver> <hashTree/> <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SplineVisualizer" testclass="ResultCollector" testname="Spline Visualizer" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> <boolProp name="ResultCollector.error_logging">false</boolProp> <objProp> <name>saveConfig</name> <value class="SampleSaveConfiguration"> <time>true</time> <latency>true</latency> <timestamp>true</timestamp> <success>true</success> <label>true</label> <code>true</code> <message>true</message> <threadName>true</threadName> <dataType>true</dataType> <encoding>false</encoding> <assertions>true</assertions> <subresults>true</subresults> <responseData>false</responseData> <samplerData>false</samplerData> <xml>true</xml> <fieldNames>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </hashTree> </hashTree> </jmeterTestPlan> �apache-jmeter-2.8/bin/testfiles/Bug52310.csv��������������������������������������������������������0000644�0001750�0001750�00000000174�12032647263�020026� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ComputeIPAddr,200,OK,TG2 1-1,text,true HTTP-Request-HC31,200,OK,TG2 1-1,text,true HTTP-Request-HC4,200,OK,TG2 1-1,text,true ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/TestAuth.txt��������������������������������������������������������0000644�0001750�0001750�00000000535�12032647263�020504� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Test file for AuthManager # Format: # URL\tuser\tpass http://a.b.c/1 login1 password1 http://a.b.c/2 login2 password2 http://a.b.c/1/1 login11 password11 http://a.b.c/22 login22 password22 http://a.b.c/ login password http://d.e.f:80/ user pass domain realm https://j.k.l/ jkl pass https://l.m.n:443/ lmn443 pass https://l.m.n:8443/ lmn8443 pass �������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/Bug52310.xml��������������������������������������������������������0000644�0001750�0001750�00000002061�12032647263�020030� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <testResults version="1.2"> <sample s="true" lb="ComputeIPAddr" rc="200" rm="OK" dt="text"/> <httpSample s="true" lb="HTTP-Request-HC31" rc="200" rm="OK" dt="text"> <httpSample s="true" lb="http://jmeter.apache.org/" rc="200" rm="OK" dt="text"/> <httpSample s="true" lb="http://jmeter.apache.org/css/style.css" rc="200" rm="OK" dt="text"/> <httpSample s="true" lb="http://jmeter.apache.org/images/asf-logo.gif" rc="200" rm="OK" dt="bin"/> <httpSample s="true" lb="http://jmeter.apache.org/images/logo.jpg" rc="200" rm="OK" dt="bin"/> </httpSample> <httpSample s="true" lb="HTTP-Request-HC4" rc="200" rm="OK" dt="text"> <httpSample s="true" lb="http://jmeter.apache.org/" rc="200" rm="OK" dt="text"/> <httpSample s="true" lb="http://jmeter.apache.org/css/style.css" rc="200" rm="OK" dt="text"/> <httpSample s="true" lb="http://jmeter.apache.org/images/asf-logo.gif" rc="200" rm="OK" dt="bin"/> <httpSample s="true" lb="http://jmeter.apache.org/images/logo.jpg" rc="200" rm="OK" dt="bin"/> </httpSample> </testResults> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseFrames.html���������������������������������������0000644�0001750�0001750�00000001467�12032647263�023610� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Frame test case <body> <p>This page uses frames, but your browser doesn't support them.</p> </body> apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2.xml0000644000175000017500000001657712032647263022543 0ustar ebourgebourg GET file:testfiles/HTMLParserTestFile_2.html GET file:testfiles/HTMLParserTestFile_2_files/style.css GET file:testfiles/HTMLParserTestFile_2_files/halfbanner.htm GET file:testfiles/HTMLParserTestFile_2_files/halfbanner_data/2011-na-234x60.png GET file:testfiles/HTMLParserTestFile_2_files/halfbanner.htm GET file:testfiles/HTMLParserTestFile_2_files/jakarta-logo.gif GET file:testfiles/HTMLParserTestFile_2_files/logo.jpg GET file:testfiles/HTMLParserTestFile_2_files/http-config-example.png GET file:testfiles/HTMLParserTestFile_2_files/scoping1.png GET file:testfiles/HTMLParserTestFile_2_files/scoping2.png GET file:testfiles/HTMLParserTestFile_2_files/scoping3.png GET file:testfiles/HTMLParserTestFile_2.html apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseFrames.set0000644000175000017500000000016712032647263023433 0ustar ebourgebourghttp://localhost/audio/clap.wav http://localhost/banner.html http://localhost/home_nav.html http://localhost/main.html apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2.jmx0000644000175000017500000001451612032647263022530 0ustar ebourgebourg false false continue false 1 1 1 1317685259000 1317685259000 false file testfiles/HTMLParserTestFile_2.html GET false false false false true false false saveConfig false false true true true true true true true true false true true false true true false true 0 true true true true true HTMLParserTestFile_2.xml false saveConfig true false true true true true true true true true false false false true false false false true 0 true true true true true HTMLParserTestFile_2.csv apache-jmeter-2.8/bin/testfiles/HTMLParserTestCase.all0000644000175000017500000000137112032647263022250 0ustar ebourgebourghttp://localhost/mydir/images/body&soul.gif http://localhost/mydir/images/table.gif http://localhost/mydir/images/tr.gif http://localhost/mydir/images/td.gif http://localhost/mydir/images/image-a.gif http://localhost/mydir/images/image-b.gif http://localhost/mydir/images/image-b.gif http://localhost/mydir/images/image-c.gif http://localhost/mydir/images/image-d.gif http://localhost/mydir/images/image-e.gif http://localhost/mydir/images/sub/image-f.gif http://localhost/mydir/images/image-a2.gif http://localhost/mydir/images/image-b2.gif http://localhost/mydir/images/sub/image-c2.gif http://localhost/mydir/images/image-d2.gif http://localhost/mydir/images/image-d2.gif http://localhost/mydir/images/image-e2.gif http://localhost/mydir/images/image-f2.gif apache-jmeter-2.8/bin/testfiles/Bug52310.jmx0000644000175000017500000002450312032647263020033 0ustar ebourgebourg false false = false 1 1187292555000 continue 1 false 1 1187292555000 jmeter.apache.org 4 vars.putObject("IP_ADDR", InetAddress.getLocalHost().getHostAddress()); false GET true false true false HttpClient3.1 true true false .*jmeter.apache.org.* ${IP_ADDR} GET true false true false HttpClient4 true true false .*jmeter.apache.org.* ${IP_ADDR} 100 50 false saveConfig false false true true true true true false true true false false false false false false false false 0 Bug52310.csv false saveConfig false false true true true false true false true true false false true false false false false false 0 Bug52310.xml apache-jmeter-2.8/bin/testfiles/LoopTestPlan.jmx0000644000175000017500000001461312032647263021310 0ustar ebourgebourg false false 0 1 false false 1 0 continue 0 / jakarta.apache.org / GET false http false false false false Java true 5 /site/news.html GET false http false false false false Java false saveConfig true true true true true false true true false false false false true true false false false false 0 loop-test.dat apache-jmeter-2.8/bin/testfiles/Test Plan_out.jmx0000644000175000017500000014312312032647263021404 0ustar ebourgebourg = jakarta.apache.org server false false 0 1 false false -1 0 continue 1 Assertion.response_data 2 false 0 1 0 1 WorkBench Test Plan Components Assertions Assertions 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 ${__threadNum()} == 3 false false 0 0 false 0 username password category color user1 pass1 cat1 red user2 pass2 cat2 green user3 pass3 cat3 true throughput 60.0 0.0 false this thread only 300 100.0 300 100.0 300 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 false saveConfig true true true true true false true true false false false false true true false false false false 0 0 1 false false -1 0 continue 1 true 1 0 1 false false -1 0 continue 1 false false false false false false 0 1 false false -1 0 continue 1 false 0 10 1 false false false true users.xml POST true false true false false / / POST http -1 false false / / POST http 80 false false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser false 80 org.apache.jmeter.protocol.http.util.accesslog.TCLogParser org.apache.jmeter.protocol.http.util.accesslog.StandardGenerator false 0 1 false false -1 0 continue 1 SleepTime 1000 = SleepMask 0x3FF = org.apache.jmeter.protocol.java.test.SleepTest SleepTime 1000 = SleepMask 0x3FF = org.apache.jmeter.protocol.java.test.SleepTest Sleep_Time 100 = Sleep_Mask 0xFF = Label JavaTest = ResponseCode 200 (or any other number) = ResponseMessage OK (or any other text) = Status OK = SamplerData SamplerData goes here = ResultData ResultData goes here = org.apache.jmeter.protocol.java.test.JavaTest ResponseCode=12; ResponseMessage="Buckle my shoe"; IsSuccess=false; Label="Sticky"; // FileName is the Script file name // bsh.args[1] == "quick" return "This will go into the Response Data field"; the quick brown fox false 0 1 false false -1 0 continue 1 1 50 org.apache.jmeter.protocol.jdbc.util.JMeter19ConnectionPool Select Statement 0 1 false false -1 0 continue 1 false false apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseBase.set0000644000175000017500000000100512032647263023060 0ustar ebourgebourghttp://localhost/mydir/images/image-a.gif http://localhost/mydir/images/image-b.gif http://localhost/mydir/images/image-c.gif http://localhost/mydir/images/image-d.gif http://localhost/mydir/images/image-e.gif http://localhost/mydir/images/sub/image-f.gif http://localhost/mydir/images/image-a2.gif http://localhost/mydir/images/image-b2.gif http://localhost/mydir/images/sub/image-c2.gif http://localhost/mydir/images/image-d2.gif http://localhost/mydir/images/image-e2.gif http://localhost/mydir/images/image-f2.gifapache-jmeter-2.8/bin/testfiles/sample_log2.jtl0000644000175000017500000537103612032647263021135 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/GenTest22.jmx0000644000175000017500000017710412032647263020446 0ustar ebourgebourg false false false 1 1337359410000 continue 1 1 false 1337359410000 true 1 1 true 1 1 1 100.0 0.0 ThroughputController.percentThroughput true 0 1 , true false Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest 10 true 5000 60000 true Select 1 10000 false false this thread only 0.0 0.0 throughput 0 300 300 100.0 0 100.0 false true 0 1 10 true false false false users.xml GET false true true false GET false true true false GET false true true false true POST false true false http org.apache.jmeter.protocol.http.util.accesslog.TCLogParser false testMethodPass false Test failed 1000 false 0001 false woolfel.DummyTestCase Test successful Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest Select Statement true 2000 false Text Message Not Required Textarea Use TopicSubscriber.receive() false true Not Required false INBOX -1 false pop3 false 1 0 0 false false 0 false false 2 Assertion.response_data false 0 0 0 omit 1 0 false false false false / false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig 2 2 false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false true true true true true true true false true true false false true false false false false false 0 saveConfig false apache-jmeter-2.8/bin/testfiles/GenTest27.jmx0000644000175000017500000024215512032647263020452 0ustar ebourgebourg Test Plan including all test elements in JMeter 2.7 false false continue false 1 1 1 1337352661000 1337352661000 false continue false 1 1 1 1337300621000 1337300621000 false true false 1 true 1 1 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 false false , false true All threads false false false false false false false 4 Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest true Select 1 5000 true 10 10000 DEFAULT 60000 True 2 false false false false false add 1 false true false false this thread only throughput 0.0 0.0 300 300 100.0 300 100 0 0 100.0 false false false false false Select Statement false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser GET true false true false false false false true false false false false GET true false true false false Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest Select Statement true false false false jms_use_text jms_text_message 1 false false false 1 true jms_subscriber_receive test.RerunTest testRerun Test successful 1000 Test failed 0001 An unexpected error occured 9999 false false false 2 false false false false false add pop3 INBOX -1 false false false false false false false 0 false false false false false false false false false false false false true false true false 1 0 http POST true false false false false true true false Select Statement false 0 false false false false true -1 0 0 omit false 0 Assertion.response_data false 2 SizeAssertion.response_network_size 1 false false false false false false / false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true 2 2 false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true continue false 1 1 1 1337352666000 1337352666000 false apache-jmeter-2.8/bin/testfiles/testheader.csv0000644000175000017500000000007312032647263021044 0ustar ebourgebourgA|B|C|"D|1" a1|b1|c1|d1 a2|b2|c2|d2 a3|b3|c3|d3 a4|b4|c4|d4apache-jmeter-2.8/bin/testfiles/test_config.xml0000644000175000017500000001575212032647263021237 0ustar ebourgebourgJMeter { config.dir=@webapp_path@/WEB-INF loginText=@LOGIN_TEXT@ urlBase=@URL_BASE@ altUrlBase=@ALT_URL_BASE@ altLoginText=@ALT_LOGIN_TEXT@ services { org.apache.service.logging.LoggingManager { class=org.apache.service.logging.DefaultLoggingManager log4j.configuration=@webapp_path@/WEB-INF/log4j.properties } org.apache.service.classfinder.ClassFinderService { class=org.apache.service.classfinder.DefaultClassFinderService paths { @webapp_path@/WEB-INF/classes @webapp_path@/WEB-INF/lib/giblex.jar } } org.apache.service.webaction.WebRequestHandler { class=org.apache.service.webaction.WebRequestHandlerContainer default_call_page=index.jsp betaweek=@beta@ requiresLogin { add_todo update_time_lock_pref update_manager_notification_pref add_site add_commit update_site update_full_timesheet Send Timesheet get_time_report } loginProof=user initActions { set_context } autoActions { set_request clean_session } profileInterval=500 } org.apache.service.webaction.error.Redirector { class=org.apache.service.webaction.error.DefaultRedirector exceptions { InvalidLoginException { page=/@appname@/index.jsp msg=Incorrect username/password. } NotLoggedInException { page=/@appname@/NoPermission.jsp msg=You must be logged in to use that resource. } NoPermissionError { page=/@appname@/NoPermission.jsp msg=You have no permission to use that resource. } InvalidCredentialsException { page=/@appname@/index.jsp msg=Incorrect username/password. } NoSuchObjectException { msg=[[! The system could not find the resource you requested. Please check your request and try again. If the problem persists, report it to the system administrators. !]] } InvalidInputException InvalidActionError { msg=The system requested an unknown task. } DEFAULT { msg=An unexpected error occurred. Please check your request and try again. If the problem persists, report it to the system administrators. } InvalidContextException { msg=You've confused the poor server with your use of the back button. Try again from the top. } NullRequesterException { page=/@appname@/EditRequest.jsp msg=You must select or enter the name of the request's requester. } TimesheetNotLockedException { msg=Your timesheet needs to be finalized and approved by your manager before it can be sent. } } } org.apache.service.authentication.AuthenticationService { class=org.apache.service.authentication.ldap.LdapAuthenticator ldap-hosts { @LDAP1@ @LDAP2@ @LDAP3@ } users { mike=mstover { password=**** } peter=plin { password=**** } } } org.apache.service.template.TemplateService { class=org.apache.service.template.velocity.VelocityService runtime.log=@webapp_path@/WEB-INF/velocity.log file.resource.loader.path=@webapp_path@/WEB-INF/templates file.resource.loader.cache=true file.resource.loader.modificationCheckInterval=60 velocimacro.library=menu.vm,jsp.vm,sql.vm,news.vm,timesheet.vm components { pmService=org.apache.service.JMeterBusinessLogicService userService=org.apache.service.UserGroupService } } groovyService { class=org.apache.service.template.groovy.GroovyService path=@webapp_path@/WEB-INF/groovyTemplates components { pmService=org.apache.service.JMeterBusinessLogicService userService=org.apache.service.UserGroupService repo=org.apache.service.sql.ObjectMappingService } } org.apache.avalon.excalibur.datasource.DataSourceComponent { class=org.apache.avalon.excalibur.datasource.J2eeDataSource dbname=@db_name@ } org.apache.service.sql.ObjectMappingService { class=org.apache.service.sql.DefaultMappingService mappingDirectory=@webapp_path@/WEB-INF/mappings packages { org.apache.service.dbObjects } profileInterval=500 } org.apache.service.JMeterBusinessLogicService { class=org.apache.service.searching.DefaultJMeterService } org.apache.service.PreferenceService { class=org.apache.service.impl.DefaultPreferenceService preferenceSql { Buddy List=Contact { sql=getBuddyList.sql } Group List=Contact { sql=getPreferredGroups.sql } Note Type=Group { sql=getPreferredNoteTypes.sql } Project Type=Group { sql=getPreferredProjectTypes.sql } Milestones On Timesheet=Group All Sites=Contact Manager Notification=Contact Timesheet Lock Style=Group Commit Scripts=Group Projects By Contact=Contact Projects By Group=Contact Projects=Contact Programs By Contact=Contact Programs By Group=Contact Programs=Contact Applications By Contact=Contact Applications By Group=Contact Applications=Contact Tasks By Contact=Contact Tasks By Group=Contact Tasks=Contact Sites By Contact=Contact Sites By Group=Contact Sites=Contact Todos By Contact=Contact Todos By Group=Contact Todos=Contact } } org.apache.service.PermissionService { class=org.apache.service.impl.DefaultPermissionService } org.apache.service.notification.NotificationService { class=org.apache.service.notification.DefaultNotificationService mail.transport.protocol=smtp mail.host=smtp.apache.org mail.user=jmeter mail.from=jmeter-auto@apache.org mail.replyTo=jmeter@apache.org bcc.default=james@apache.org email.active=@email_active@ mail.smtp.connectiontimeout=60000 mail.smtp.timeout=120000 } org.apache.service.UserGroupService { class=org.apache.service.impl.DefaultUserGroupService superUsers { mstover plin sebb } } org.apache.service.domain_event.DomainEventService { class=org.apache.service.domain_event.BasicEventService eventDefinitions=@webapp_path@/WEB-INF/eventDefs vmFile= components { pmService=org.apache.service.JMeterBusinessLogicService userGroupService=org.apache.service.UserGroupService emailService=org.apache.service.notification.NotificationService repository=org.apache.service.sql.ObjectMappingService } eventRetrieval= } org.apache.service.DocumentService { class=org.apache.service.impl.DefaultDocumentService url=@webdav_server@ proxy=proxy.apache.org { port=8080 username=******* password=******** } } cvsCommitService { class=org.apache.service.impl.JMeterCommitProcessor CommitProcessor.delay=5 } } }apache-jmeter-2.8/bin/testfiles/XPathAssertionTest.xml0000644000175000017500000000014112032647263022471 0ustar ebourgebourg 1 Print Error Network Error apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2.html0000644000175000017500000011635612032647263022703 0ustar ebourgebourg JMeter - User's Manual: Elements of a Test Plan
Jakarta JMeter

About

Download

Documentation

Tutorials (PDF format)

Community

Foundation


4. Elements of a Test Plan

The Test Plan object has a checkbox called "Functional Testing". If selected, it will cause JMeter to record the data returned from the server for each sample. If you have selected a file in your test listeners, this data will be written to file. This can be useful if you are doing a small run to ensure that JMeter is configured correctly, and that your server is returning the expected results. The consequence is that the file will grow huge quickly, and JMeter's performance will suffer. This option should be off if you are doing stress-testing (it is off by default).

If you are not recording the data to file, this option makes no difference.

You can also use the Configuration button on a listener to decide what fields to save.

4.1 ThreadGroup ¶

Thread group elements are the beginning points of any test plan. All controllers and samplers must be under a thread group. Other elements, e.g. Listeners, may be placed directly under the test plan, in which case they will apply to all the thread groups. As the name implies, the thread group element controls the number of threads JMeter will use to execute your test. The controls for a thread group allow you to:

  • Set the number of threads
  • Set the ramp-up period
  • Set the number of times to execute the test

Each thread will execute the test plan in its entirety and completely independently of other test threads. Multiple threads are used to simulate concurrent connections to your server application.

The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of threads chosen. If 10 threads are used, and the ramp-up period is 100 seconds, then JMeter will take 100 seconds to get all 10 threads up and running. Each thread will start 10 (100/10) seconds after the previous thread was begun. If there are 30 threads and a ramp-up period of 120 seconds, then each successive thread will be delayed by 4 seconds.

Ramp-up needs to be long enough to avoid too large a work-load at the start of a test, and short enough that the last threads start running before the first ones finish (unless one wants that to happen).

Start with Ramp-up = number of threads and adjust up or down as needed.

By default, the thread group is configured to loop once through its elements.

Version 1.9 introduces a test run scheduler . Click the checkbox at the bottom of the Thread Group panel to reveal extra fields in which you can enter the start and end times of the run. When the test is started, JMeter will wait if necessary until the start-time has been reached. At the end of each cycle, JMeter checks if the end-time has been reached, and if so, the run is stopped, otherwise the test is allowed to continue until the iteration limit is reached.

Alternatively, one can use the relative delay and duration fields. Note that delay overrides start-time, and duration over-rides end-time.


4.2 Controllers ¶

JMeter has two types of Controllers: Samplers and Logical Controllers. These drive the processing of a test.

Samplers tell JMeter to send requests to a server. For example, add an HTTP Request Sampler if you want JMeter to send an HTTP request. You can also customize a request by adding one or more Configuration Elements to a Sampler. For more information, see Samplers .

Logical Controllers let you customize the logic that JMeter uses to decide when to send requests. For example, you can add an Interleave Logic Controller to alternate between two HTTP Request Samplers. For more information, see Logical Controllers .


4.2.1 Samplers ¶

Samplers tell JMeter to send requests to a server and wait for a response. They are processed in the order they appear in the tree. Controllers can be used to modify the number of repetitions of a sampler.

JMeter samplers include:

  • FTP Request
  • HTTP Request
  • JDBC Request
  • Java object request
  • LDAP Request
  • SOAP/XML-RPC Request
  • WebService (SOAP) Request
Each sampler has several properties you can set. You can further customize a sampler by adding one or more Configuration Elements to the Test Plan.

If you are going to send multiple requests of the same type (for example, HTTP Request) to the same server, consider using a Defaults Configuration Element. Each controller has one or more Defaults elements (see below).

Remember to add a Listener to your test plan to view and/or store the results of your requests to disk.

If you are interested in having JMeter perform basic validation on the response of your request, add an Assertion to the sampler. For example, in stress testing a web application, the server may return a successful "HTTP Response" code, but the page may have errors on it or may be missing sections. You could add assertions to check for certain HTML tags, common error strings, and so on. JMeter lets you create these assertions using regular expressions.

JMeter's built-in samplers


4.2.2 Logic Controllers ¶

Logic Controllers let you customize the logic that JMeter uses to decide when to send requests. Logic Controllers can change the order of requests coming from their child elements. They can modify the requests themselves, cause JMeter to repeat requests, etc.

To understand the effect of Logic Controllers on a test plan, consider the following test tree:

  • Test Plan
    • Thread Group
      • Once Only Controller
      • Load Search Page (HTTP Sampler)
      • Interleave Controller
        • Search "A" (HTTP Sampler)
        • Search "B" (HTTP Sampler)
        • HTTP default request (Configuration Element)
      • HTTP default request (Configuration Element)
      • Cookie Manager (Configuration Element)

The first thing about this test is that the login request will be executed only the first time through. Subsequent iterations will skip it. This is due to the effects of the Once Only Controller .

After the login, the next Sampler loads the search page (imagine a web application where the user logs in, and then goes to a search page to do a search). This is just a simple request, not filtered through any Logic Controller.

After loading the search page, we want to do a search. Actually, we want to do two different searches. However, we want to re-load the search page itself between each search. We could do this by having 4 simple HTTP request elements (load search, search "A", load search, search "B"). Instead, we use the Interleave Controller which passes on one child request each time through the test. It keeps the ordering (ie - it doesn't pass one on at random, but "remembers" its place) of its child elements. Interleaving 2 child requests may be overkill, but there could easily have been 8, or 20 child requests.

Note the HTTP Request Defaults that belongs to the Interleave Controller. Imagine that "Search A" and "Search B" share the same PATH info (an HTTP request specification includes domain, port, method, protocol, path, and arguments, plus other optional items). This makes sense - both are search requests, hitting the same back-end search engine (a servlet or cgi-script, let's say). Rather than configure both HTTP Samplers with the same information in their PATH field, we can abstract that information out to a single Configuration Element. When the Interleave Controller "passes on" requests from "Search A" or "Search B", it will fill in the blanks with values from the HTTP default request Configuration Element. So, we leave the PATH field blank for those requests, and put that information into the Configuration Element. In this case, this is a minor benefit at best, but it demonstrates the feature.

The next element in the tree is another HTTP default request, this time added to the Thread Group itself. The Thread Group has a built-in Logic Controller, and thus, it uses this Configuration Element exactly as described above. It fills in the blanks of any Request that passes through. It is extremely useful in web testing to leave the DOMAIN field blank in all your HTTP Sampler elements, and instead, put that information into an HTTP default request element, added to the Thread Group. By doing so, you can test your application on a different server simply by changing one field in your Test Plan. Otherwise, you'd have to edit each and every Sampler.

The last element is a HTTP Cookie Manager . A Cookie Manager should be added to all web tests - otherwise JMeter will ignore cookies. By adding it at the Thread Group level, we ensure that all HTTP requests will share the same cookies.

Logic Controllers can be combined to achieve various results. See the list of built-in Logic Controllers .


4.2.3 Test Fragments ¶

The Test Fragment element is a special type of controller that exists on the Test Plan tree at the same level as the Thread Group element. It is distinguished from a Thread Group in that it is not executed unless it is referenced by either a Module Controller or an Include_Controller .

This element is purely for code re-use within Test Plans and was introduced in Version 2.5


4.3 Listeners ¶

Listeners provide access to the information JMeter gathers about the test cases while JMeter runs. The Graph Results listener plots the response times on a graph. The "View Results Tree" Listener shows details of sampler requests and responses, and can display basic HTML and XML representations of the response. Other listeners provide summary or aggregation information.

Additionally, listeners can direct the data to a file for later use. Every listener in JMeter provides a field to indicate the file to store data to. There is also a Configuration button which can be used to choose which fields to save, and whether to use CSV or XML format. Note that all Listeners save the same data; the only difference is in the way the data is presented on the screen.

Listeners can be added anywhere in the test, including directly under the test plan. They will collect data only from elements at or below their level.

There are several listeners that come with JMeter.


4.4 Timers ¶

By default, a JMeter thread sends requests without pausing between each request. We recommend that you specify a delay by adding one of the available timers to your Thread Group. If you do not add a delay, JMeter could overwhelm your server by making too many requests in a very short amount of time.

The timer will cause JMeter to delay a certain amount of time before each sampler which is in its scope .

If you choose to add more than one timer to a Thread Group, JMeter takes the sum of the timers and pauses for that amount of time before executing the samplers to which the timers apply. Timers can be added as children of samplers or controllers in order to restrict the samplers to which they are applied.

To provide a pause at a single place in a test plan, one can use the Test Action Sampler.


4.5 Assertions ¶

Assertions allow you to assert facts about responses received from the server being tested. Using an assertion, you can essentially "test" that your application is returning the results you expect it to.

For instance, you can assert that the response to a query will contain some particular text. The text you specify can be a Perl-style regular expression, and you can indicate that the response is to contain the text, or that it should match the whole response.

You can add an assertion to any Sampler. For example, you can add an assertion to a HTTP Request that checks for the text, "</HTML>". JMeter will then check that the text is present in the HTTP response. If JMeter cannot find the text, then it will mark this as a failed request.

Note that assertions apply to all samplers which are in its scope . To restrict the assertion to a single sampler, add the assertion as a child of the sampler.

To view the assertion results, add an Assertion Listener to the Thread Group. Failed Assertions will also show up in the Tree View and Table Listeners, and will count towards the error %age for example in the Aggregate and Summary reports.


4.6 Configuration Elements ¶

A configuration element works closely with a Sampler. Although it does not send requests (except for HTTP Proxy Server ), it can add to or modify requests.

A configuration element is accessible from only inside the tree branch where you place the element. For example, if you place an HTTP Cookie Manager inside a Simple Logic Controller, the Cookie Manager will only be accessible to HTTP Request Controllers you place inside the Simple Logic Controller (see figure 1). The Cookie Manager is accessible to the HTTP requests "Web Page 1" and "Web Page 2", but not "Web Page 3".

Also, a configuration element inside a tree branch has higher precedence than the same element in a "parent" branch. For example, we defined two HTTP Request Defaults elements, "Web Defaults 1" and "Web Defaults 2". Since we placed "Web Defaults 1" inside a Loop Controller, only "Web Page 2" can access it. The other HTTP requests will use "Web Defaults 2", since we placed it in the Thread Group (the "parent" of all other branches).


Figure 1 - Test Plan Showing Accessability of Configuration Elements

The User Defined Variables Configuration element is different. It is processed at the start of a test, no matter where it is placed. For simplicity, it is suggested that the element is placed only at the start of a Thread Group.


4.7 Pre-Processor Elements ¶

A Pre-Processor executes some action prior to a Sampler Request being made. If a Pre-Processor is attached to a Sampler element, then it will execute just prior to that sampler element running. A Pre-Processor is most often used to modify the settings of a Sample Request just before it runs, or to update variables that aren't extracted from response text. See the scoping rules for more details on when Pre-Processors are executed.


4.8 Post-Processor Elements ¶

A Post-Processor executes some action after a Sampler Request has been made. If a Post-Processor is attached to a Sampler element, then it will execute just after that sampler element runs. A Post-Processor is most often used to process the response data, often to extract values from it. See the scoping rules for more details on when Post-Processors are executed.


4.9 Execution order ¶
  1. Configuration elements
  2. Pre-Processors
  3. Timers
  4. Sampler
  5. Post-Processors (unless SampleResult is null)
  6. Assertions (unless SampleResult is null)
  7. Listeners (unless SampleResult is null)

Please note that Timers, Assertions, Pre- and Post-Processors are only processed if there is a sampler to which they apply. Logic Controllers and Samplers are processed in the order in which they appear in the tree. Other test elements are processed according to the scope in which they are found, and the type of test element. [Within a type, elements are processed in the order in which they appear in the tree].

For example, in the following test plan:

  • Controller
    • Post-Processor 1
    • Sampler 1
    • Sampler 2
    • Timer 1
    • Assertion 1
    • Pre-Processor 1
    • Timer 2
    • Post-Processor 2
The order of execution would be:
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1

Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1


4.10 Scoping Rules ¶

The JMeter test tree contains elements that are both hierarchical and ordered. Some elements in the test trees are strictly hierarchical (Listeners, Config Elements, Post-Procesors, Pre-Processors, Assertions, Timers), and some are primarily ordered (controllers, samplers). When you create your test plan, you will create an ordered list of sample request (via Samplers) that represent a set of steps to be executed. These requests are often organized within controllers that are also ordered. Given the following test tree:


Example test tree

The order of requests will be, One, Two, Three, Four.

Some controllers affect the order of their subelements, and you can read about these specific controllers in the component reference .

Other elements are hierarchical. An Assertion, for instance, is hierarchical in the test tree. If its parent is a request, then it is applied to that request. If its parent is a Controller, then it affects all requests that are descendants of that Controller. In the following test tree:


Hierarchy example

Assertion #1 is applied only to Request One, while Assertion #2 is applied to Requests Two and Three.

Another example, this time using Timers:


complex example

In this example, the requests are named to reflect the order in which they will be executed. Timer #1 will apply to Requests Two, Three, and Four (notice how order is irrelevant for hierarchical elements). Assertion #1 will apply only to Request Three. Timer #2 will affect all the requests.

Hopefully these examples make it clear how configuration (hierarchical) elements are applied. If you imagine each Request being passed up the tree branches, to its parent, then to its parent's parent, etc, and each time collecting all the configuration elements of that parent, then you will see how it works.

The Configuration elements Header Manager, Cookie Manager and Authorization manager are treated differently from the Configuration Default elements. The settings from the Configuration Default elements are merged into a set of values that the Sampler has access to. However, the settings from the Managers are not merged. If more than one Manager is in the scope of a Sampler, only one Manager is used, but there is currently no way to specify which is used.

4.11 Properties and Variables ¶

JMeter properties are defined in jmeter.properties (see Gettting Started - Configuring JMeter for more details).

Properties are global to jmeter, and are mostly used to define some of the defaults JMeter uses. For example the property remote_hosts defines the servers that JMeter will try to run remotely. Properties can be referenced in test plans - see Functions - read a property - but cannot be used for thread-specific values.

JMeter variables are local to each thread. The values may be the same for each thread, or they may be different.

If a variable is updated by a thread, only the thread copy of the variable is changed. For example the Regular Expression Extractor Post-Processor will set its variables according to the sample that its thread has read, and these can be used later by the same thread. For details of how to reference variables and functions, see Functions and Variables

Note that the values defined by the Test Plan and the User Defined Variables configuration element are made available to the whole test plan at startup. If the same variable is defined by multiple UDV elements, then the last one takes effect. Once a thread has started, the initial set of variables is copied to each thread. Other elements such as the User Parameters Pre-Processor or Regular Expression Extractor Post-Processor may be used to redefine the same variables (or create new ones). These redefinitions only apply to the current thread.

The setProperty function can be used to define a JMeter property. These are global to the test plan, so can be used to pass information between threads - should that be needed.

Both variables and properties are case-sensitive.


4.12 Using Variables to parameterise tests ¶

Variables don't have to vary - they can be defined once, and if left alone, will not change value. So you can use them as short-hand for expressions that appear frequently in a test plan. Or for items which are constant during a run, but which may vary between runs. For example, the name of a host, or the number of threads in a thread group.

When deciding how to structure a Test Plan, make a note of which items are constant for the run, but which may change between runs. Decide on some variable names for these - perhaps use a naming convention such as prefixing them with C_ or K_ or using uppercase only to distinguish them from variables that need to change during the test. Also consider which items need to be local to a thread - for example counters or values extracted with the Regular Expression Post-Processor. You may wish to use a different naming convention for these.

For example, you might define the following on the Test Plan:

HOST             www.example.com
THREADS          10
LOOPS            20

You can refer to these in the test plan as ${HOST} ${THREADS} etc. If you later want to change the host, just change the value of the HOST variable. This works fine for small numbers of tests, but becomes tedious when testing lots of different combinations. One solution is to use a property to define the value of the variables, for example:
HOST             ${__P(host,www.example.com)}
THREADS          ${__P(threads,10)}
LOOPS            ${__P(loops,20)}

You can then change some or all of the values on the command-line as follows:
jmeter ... -Jhost=www3.example.org -Jloops=13





Copyright © 1999-2011, Apache Software Foundation
Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are trademarks of the Apache Software Foundation.
apache-jmeter-2.8/bin/testfiles/SimpleTestPlan.jmx0000644000175000017500000002141212032647263021623 0ustar ebourgebourg false false 0 1 false false 1 0 continue 0 / jakarta.apache.org /ant/index.html GET false http false false false false Java /ant/antnews.html GET false http false false false false Java /log4j/index.html GET false http false false false false Java /log4j/docs/history.html GET false http false false false false Java false saveConfig true true true true true false true true false false false false true true false false false false 0 simple-test.dat apache-jmeter-2.8/bin/testfiles/XMLSchema-fail.xsd0000644000175000017500000000221412032647263021410 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/jmeter-batch.properties0000644000175000017500000000207412032647263022665 0ustar ebourgebourg################################################################################ # Apache JMeter Property file for batch runs ################################################################################ ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # Ensure log is empty by default log_level.jmeter=WARNapache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseWithBaseHRef2.html0000644000175000017500000000156012032647263024722 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/HTMLScript.all0000644000175000017500000000024712032647263020625 0ustar ebourgebourghttp://localhost/css/wcm_style.css http://localhost/scripts/navigation/hm_loader.js http://localhost/shared/images/spacer.gif http://localhost/shared/images/spacer.gifapache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseWithComments.html0000644000175000017500000000233412032647263025006 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/Bug50898_inc.jmx0000644000175000017500000000747412032647263020717 0ustar ebourgebourg false false Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest apache-jmeter-2.8/bin/testfiles/Bug50898.xml0000644000175000017500000000041112032647263020050 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/GuiTest231_original.jmx0000644000175000017500000021234412032647263022423 0ustar ebourgebourg All GUI test elements in JMeter 2.3.1 false false false 1 1 1 1210207165000 1210207165000 false continue Input Output true If condition false 1 true 123 WorkBench GUI231 Thread Group Controllers Simple Controller 1 321 1 7 0 true 111 ThroughputController.percentThroughput 100.0 0.0 false Condition , encoding filename true false a,b,c,d NAME VALUE = USER PASS server remote local true true true false Value = true Name localhost 8080 http utf8 /path base user pass domain realm value domain path false 0 true true false Browser JMeter Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest true Select 1 5000 variable url driver true pass 10 10000 60000 user server port DN false 2 false false false false server true port false 1234 text file p1 script this thread only throughput 11.0 0.0 12 3001 3001 100.01 01 100.01 file p1 script 11 33 22 REF ## false Name user1 user2 false name prefix 11 100 12 suffix JSESSION false true false true users.xml JMS Sub and JMS P-P not available (JavaMail) server remote local true true false user pass false Value = true Name server port http encoding /path GET false true true false false match path mime name server port https utf8 /delete DELETE false true true false false Java localhost xxx GET false true true false false HttpClient3.1 URL Data filename Action true false server port http path wsdl POST action Data File Folder timeout true false true Host 9999 server false log org.apache.jmeter.protocol.http.util.accesslog.TCLogParser port org.apache.jmeter.protocol.http.util.accesslog.LogFilter scriptfile javascript params script script file a,b,c woolfel.DummyTestCase Test successful 1000 Test failed 0001 false false false testMethodPass Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest POOL query v t Select Statement false factory url conn topic user pass message Textarea Object Message count Not Required 2 false false false false server port dn false user pass imap Trash -1 false server user pass server true port false 1000 text user pass false true false 1 0 1234 must match Assertion.response_data false 1 script file a,b,c 111 0 0 omit false 0 sadaasd abcd 44 4 schema false false false false false /xpath file p1 script false ref exp $1$ DEF 12 def ref /abc false true 1 prefix false false saveConfig true true true true true true true false true true false false true false false false false false 0 true b a c false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true 2 2 failed from server ok to false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/bin/testfiles/HTMLParserTestFile_2.all0000644000175000017500000000057212032647263022477 0ustar ebourgebourgfile:HTMLParserTestFile_2_files/style.css file:HTMLParserTestFile_2_files/halfbanner.htm file:HTMLParserTestFile_2_files/jakarta-logo.gif file:HTMLParserTestFile_2_files/logo.jpg file:HTMLParserTestFile_2_files/http-config-example.png file:HTMLParserTestFile_2_files/scoping1.png file:HTMLParserTestFile_2_files/scoping2.png file:HTMLParserTestFile_2_files/scoping3.png apache-jmeter-2.8/bin/testfiles/XPathTest.xml0000644000175000017500000000035212032647263020605 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/test.tsv0000644000175000017500000000005712032647263017716 0ustar ebourgebourga1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3 a4 b4 c4 d4apache-jmeter-2.8/bin/testfiles/Bug50898.csv0000644000175000017500000000024112032647263020044 0ustar ebourgebourglabel,responseCode,responseMessage,threadName,dataType,success,bytes,Latency Java Request,,,Thread Group 1-1,,true,0,0 Java Request,,,Thread Group 1-1,,true,0,0 apache-jmeter-2.8/bin/testfiles/BatchTestLocal.txt0000644000175000017500000000007312032647263021574 0ustar ebourgebourg1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3apache-jmeter-2.8/bin/testfiles/load_bug_list.jmx0000644000175000017500000003337412032647263021540 0ustar ebourgebourg = .* true bug_status false = .* true bug_status false = .* true bug_status false = true email1 false = substring true emailtype1 false = 1 true emailassigned_to1 false = true email2 false = substring true emailtype2 false = 1 true emailreporter2 false = include true bugidtype false = true bug_id false = true changedin false = true votes false = true chfieldfrom false = Now true chfieldto false = true chfieldvalue false = JMeter true product false = true short_desc false = substring true short_desc_type false = true long_desc false = substring true long_desc_type false = true bug_file_loc false = substring true bug_file_loc_type false = true keywords false = anywords keywords_type false = noop field0-0-0 false = noop type0-0-0 false = value0-0-0 false = doit cmdtype false = Reuse same sort as last time order true issues.apache.org 80 http /bugzilla/buglist.cgi GET false false true false false apache-jmeter-2.8/bin/testfiles/IfTest.jmx0000644000175000017500000002360712032647263020125 0ustar ebourgebourg false false 1 false continue 1096150006000 false 3 1 1096150006000 false COUNT 1 100 1 2!=${COUNT} false Sleep_Time 100 = Sleep_Mask 0xFF = Label If ${COUNT} = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest Sleep_Time 100 = Sleep_Mask 0xFF = Label Always ${COUNT} = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/bin/testfiles/jmeter_home_page.html0000644000175000017500000001606212032647263022364 0ustar ebourgebourgHTTP/1.1 200 OK Date: Thu, 24 Apr 2003 21:15:26 GMT Server: Apache/2.0.45-dev (Unix) Last-Modified: Thu, 24 Apr 2003 13:26:51 GMT ETag: "31a620-1b1e-6ee17cc0" Accept-Ranges: bytes Content-Length: 6942 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html JMeter - Apache JMeter

About

Documentation

JMeter Resources

Community

Apache JMeter

Apache JMeter is a 100% pure Java desktop application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

What can I do with it?

Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.

Using JMeter

What does it do?

Apache JMeter features include:

  • Can load and performance test HTTP and FTP servers as well as arbitrary database queries (via JDBC)
  • Complete portability and 100% Java purity .
  • Full Swing and lightweight component support (precompiled JAR uses packages javax.swing.* ).
  • Full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by seperate thread groups.
  • Careful GUI design allows faster operation and more precise timings.
  • Caching and offline analysis/replaying of test results.
  • Highly Extensible:
    • Pluggable Samplers allow unlimited testing capabilities.
    • Several load statistics may be choosen with pluggable timers .
    • Data analysis and visualization plugins allow great extendibility as well as personalization.



Copyright © 1999-2001, Apache Software Foundation
apache-jmeter-2.8/bin/testfiles/testempty.csv0000644000175000017500000000004712032647263020753 0ustar ebourgebourg,b1,c1,d1 a2,,c2,d2 a3,b3,,d3 a4,b4,c4,apache-jmeter-2.8/bin/testfiles/BatchTestLocal.xml0000644000175000017500000013143412032647263021563 0ustar ebourgebourg ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData ResultData SamplerData GET file:testfiles/BatchTestLocal.jmx SampleResult.setSampleLabel("BSH Counter: 1"); SampleResult.setSampleLabel("BSH Counter: 2"); SampleResult.setSampleLabel("BSH Counter: 3"); apache-jmeter-2.8/bin/testfiles/sample_log1.jtl0000644000175000017500000463111612032647263021131 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/GenTest231.jmx0000644000175000017500000020602412032647263020522 0ustar ebourgebourg false false false 1 1 1 1337360144000 1337360144000 false continue true false 1 true 1 1 1 1 0 true 1 100.0 0.0 ThroughputController.percentThroughput false , true false false false false false rfc2109 Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest true Select 1 5000 true 10 10000 60000 false 2 false false false false true false this thread only 0.0 0.0 throughput 0 300 300 100.0 0 100.0 false false 0 10 1 false false false false users.xml false false false GET false true true false false GET false true true false false GET false true true false false true false http POST true false false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser beanbasic woolfel.DummyTestCase Test successful 1000 Test failed 0001 false false false testMethodPass Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest Select Statement true false 2000 false Textarea Text Message Not Required false Not Required true Use TopicSubscriber.receive() 2 false false false false false pop3 INBOX -1 false true false false true false 1 0 false false true 0 false Assertion.response_data false 2 0 0 omit false 0 0 1 false false false false false / false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig 2 2 false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig false true true true true true true true false true true false false true false false false false false 0 true saveConfig apache-jmeter-2.8/bin/testfiles/HTMLParserTestCaseWithBaseHRef.html0000644000175000017500000000153112032647263024636 0ustar ebourgebourg apache-jmeter-2.8/bin/testfiles/GenTest25.jmx0000644000175000017500000023646712032647263020461 0ustar ebourgebourg false false continue false 1 1 1 1337360672000 1337360672000 false continue false 1 1 1 1337360420000 1337360420000 false true false 1 true 1 1 1 0 true 1 ThroughputController.percentThroughput 100.0 0.0 false , false true All threads false false false false false false false false 4 true Select 1 5000 true 10 10000 60000 Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest 2 false false false false false add 1 false true false false this thread only throughput 0.0 0.0 300 300 100.0 0 0 100.0 false false false false false false GET true false true false 4 false false org.apache.jmeter.protocol.http.util.accesslog.TCLogParser beanbasic false false true false false false false GET true false true false 4 false Select Statement true false false false jms_use_text jms_text_message 1 false false false 1 true jms_subscriber_receive test.RerunTest testRerun Test successful 1000 Test failed 0001 An unexpected error occured 9999 false false false Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode = ResponseMessage = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest 2 false false false false false add pop3 INBOX -1 false false false false false false false false false false false false false false false false false false true false true false 1 0 http POST true false false false false 0 false false false false true -1 0 0 omit false 0 Assertion.response_data false 2 false false false false false SizeAssertion.response_network_size 1 false / false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true 2 2 false saveConfig true true true true true true true false true true false false true false false false false false 0 true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true continue false 1 1 1 1337360665000 1337360665000 false apache-jmeter-2.8/bin/jmeterw.cmd0000644000175000017500000000176512032647263016350 0ustar ebourgebourg@echo off rem Run JMeter using javaw rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. set JM_START=start set JM_LAUNCH=javaw.exe rem Only works in Win2K call jmeter %* set JM_START= set JM_LAUNCH=apache-jmeter-2.8/bin/stoptest.sh0000644000175000017500000000206212032647263016416 0ustar ebourgebourg#!/bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # Run the Shutdown client to stop a non-GUI instance abruptly # P1 = command port for JMeter instance (defaults to 4445) DIRNAME=`dirname $0` java -cp ${DIRNAME}/ApacheJMeter.jar org.apache.jmeter.util.ShutdownClient StopTestNow "$@" apache-jmeter-2.8/bin/examples/0000755000175000017500000000000012165514773016021 5ustar ebourgebourgapache-jmeter-2.8/bin/examples/CSVSample_actions.csv0000644000175000017500000000000712032647263022042 0ustar ebourgebourga b c dapache-jmeter-2.8/bin/examples/CSVSample.jmx0000644000175000017500000005356512032647263020346 0ustar ebourgebourg Example of using CSV DataSet false false false -1 1 1 1226457982000 1226457982000 false continue Top level , CSVSample_user.csv false false All threads true USER,PASS Sleep_Time 100 = Sleep_Mask 0xFF = Label Login as ${USER} = ResponseCode 200 = ResponseMessage OK = Status OK = SamplerData Login as ${USER} with password ${PASS} = ResultData Login OK for ${USER} = org.apache.jmeter.protocol.java.test.JavaTest ACTION none false Sleep_Time 100 = Sleep_Mask 0xFF = Label Action = ${ACTION} = ResponseCode 200 = ResponseMessage OK = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest ${__jexl("${ACTION}" != "<EOF>")} CSVSample_actions.csv ACTION , true false false All threads "${ACTION}" != "<EOF>" false Sleep_Time 100 = Sleep_Mask 0xFF = Label Action ${ACTION} = ResponseCode 200 = ResponseMessage OK = Status OK = SamplerData Perform Action ${ACTION} = ResultData Succeeded ${ACTION} = org.apache.jmeter.protocol.java.test.JavaTest Sleep_Time 100 = Sleep_Mask 0xFF = Label = ResponseCode 200 = ResponseMessage OK = Status OK = SamplerData Logout ${USER} = ResultData Succeeded ${USER} = org.apache.jmeter.protocol.java.test.JavaTest Sleep_Time 100 = Sleep_Mask 0xFF = Label Action = ${ACTION} = ResponseCode 200 = ResponseMessage OK = Status OK = SamplerData = ResultData = org.apache.jmeter.protocol.java.test.JavaTest false saveConfig true true true true true true true false true true false false true false false false false false 0 true ~/CSVSample.jtl false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/bin/examples/CSVSample_user.csv0000644000175000017500000000001312032647263021355 0ustar ebourgebourgu1,p1 u2,p2apache-jmeter-2.8/bin/BeanShellSampler.bshrc0000644000175000017500000000376412032647263020413 0ustar ebourgebourg// Sample BeanShell Sampler initialisation file // To enable, define the JMeter property: // beanshell.sampler.init=BeanShellSampler.bshrc /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ //print("Initialisation started"); import org.apache.jmeter.util.JMeterUtils; i = j = k = 0; // for counters getprop(p){// get a JMeter property return JMeterUtils.getPropDefault(p,""); } getprop(p,d){// get a JMeter property with default return JMeterUtils.getPropDefault(p,d); } setprop(p,v){// set a JMeter property JMeterUtils.setProperty(p, v); } // Define routines to stop the test or a thread stopEngine(){// Stop the JMeter test org.apache.jmeter.engine.StandardJMeterEngine.stopEngine(); } stopThread(t){// Stop a JMeter thread org.apache.jmeter.engine.StandardJMeterEngine.stopThread(t); } String getVariables(){ // Create a listing of the thread variables StringBuffer sb = new StringBuffer(100); Iterator i = vars.getIterator(); while(i.hasNext()) { Map.Entry me = i.next(); if(String.class.equals(me.getValue().getClass())){ sb.append(me.toString()).append("\n"); } } return sb.toString(); } // Interruptible interface interrupt() { print("Interrupt detected"); } //print("Initialisation complete"); apache-jmeter-2.8/bin/jmeter-report.bat0000644000175000017500000000442012032647263017464 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem set JAVA_HOME=c:/jdk1.5.0 if not "%OS%"=="Windows_NT" goto win9xStart :winNTStart @setlocal rem Need to check if we are using the 4NT shell... if "%eval[2+2]" == "4" goto setup4NT rem On NT/2K grab all arguments at once set JMETER_CMD_LINE_ARGS=%* goto doneStart :setup4NT set JMETER_CMD_LINE_ARGS=%$ goto doneStart :win9xStart rem Slurp the command line arguments. This loop allows for an unlimited number of rem agruments (up to the command line limit, anyway). set JMETER_CMD_LINE_ARGS= :setupArgs if %1a==a goto doneStart set JMETER_CMD_LINE_ARGS=%JMETER_CMD_LINE_ARGS% %1 shift goto setupArgs :doneStart rem This label provides a place for the argument list loop to break out rem and for NT handling to skip to. rem See the unix startup file for the rationale of the following parameters, rem including some tuning recommendations set HEAP=-Xms256m -Xmx256m set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50% set TENURING=-XX:MaxTenuringThreshold=2 set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000 set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution rem set ARGS=%HEAP% %NEW% %SURVIVOR% %TENURING% %RMIGC% %PERM% %DEBUG% set ARGS=-server -Xms128m -Xmx512m %JAVA_HOME%/bin/java %JVM_ARGS% %ARGS% -jar ApacheJMeter.jar report %JMETER_CMD_LINE_ARGS% apache-jmeter-2.8/bin/logkit.xml0000644000175000017500000001301012032647263016203 0ustar ebourgebourg false format.log AT: %{time:yyyy/MM/dd HH:mm:ss} PRI: %5.5{priority} CAT: %{category} TEXT: %{message} EX: %{throwable}\n false prefix 1000000 false my_log 1000000 apache-jmeter-2.8/bin/httpclient.parameters0000644000175000017500000000275712032647263020453 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Properties file used to define additional default Commons HttpClient parameters # # See: http://hc.apache.org/httpclient-3.x/preference-api.html # # This file is enabled by setting the JMeter property: httpclient.parameters.file # entries are of the form: # # property=value (for strings) # property$Type=value (for other types) # # where Type can be: # Integer # Long # Boolean # HttpVersion # # N.B. Other types are not yet implemented, so not all parameters are supported # # Examples: #http.protocol.version$HttpVersion=1.0 #http.protocol.element-charset=ISO-8859-1 #http.socket.timeout$Integer=10000 #http.protocol.reject-relative-redirect$Boolean=true #http.authentication.preemptive$Boolean=trueapache-jmeter-2.8/bin/jmeter-report0000644000175000017500000000731712032647263016727 0ustar ebourgebourg#! /bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. # The following should be reasonably good values for most tests running # on Sun JVMs. Following is the analysis on which it is based. If it's total # gibberish to you, please study my article at # http://www.atg.com/portal/myatg/developer?paf_dm=full&paf_gear_id=1100010&detailArticle=true&id=9606 # # JMeter objects can generally be grouped into three life-length groups: # # - Per-sample objects (results, DOMs,...). An awful lot of those. # Life length of milliseconds to a few seconds. # # - Per-run objects (threads, listener data structures,...). Not that many # of those unless we use the table or tree listeners on heavy runs. # Life length of minutes to several hours, from creation to start of next run. # # - Per-work-session objects (test plans, GUIs,...). # Life length: for the life of the JVM. # This is the base heap size -- you may increase or decrease it to fit your # system's memory availablity: HEAP="-Xms256m -Xmx256m" # There's an awful lot of per-sample objects allocated during test run, so we # need a large eden to avoid too frequent scavenges -- you'll need to tune this # down proportionally if you reduce the HEAP values above: NEW="-XX:NewSize=128m -XX:MaxNewSize=128m" # This ratio and target have been proven OK in tests with a specially high # amount of per-sample objects (the HtmlParserHTMLParser tests): # SURVIVOR="-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%" # Think about it: trying to keep per-run objects in tenuring definitely # represents a cost, but where's the benefit? They won't disappear before # the test is over, and at that point we will no longer care about performance. # # So we will have JMeter do an explicit Full GC before starting a test run, # but then we won't make any effort (or spend any CPU) to keep objects # in tenuring longer than the life of per-sample objects -- which is hopefully # shorter than the period between two scavenges): # TENURING="-XX:MaxTenuringThreshold=2" # This evacuation ratio is OK (see the comments for SURVIVOR) during test # runs -- no so sure about operations that bring a lot of long-lived information into # memory in a short period of time, such as loading tests or listener data files. # Increase it if you experience OutOfMemory problems during those operations # without having gone through a lot of Full GC-ing just before the OOM: # EVACUATION="-XX:MaxLiveObjectEvacuationRatio=20%" # Avoid the RMI-induced Full GCs to run too frequently -- once every ten minutes # should be more than enough: RMIGC="-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000" # PermSize is a scam. Leave it like this: PERM="-XX:PermSize=64m -XX:MaxPermSize=64m" # Finally, some tracing to help in case things go astray: DEBUG="-verbose:gc -XX:+PrintTenuringDistribution" SERVER="-server" ARGS="$SERVER $HEAP $NEW $SURVIVOR $TENURING $EVACUATION $RMIGC $PERM $DEBUG" java -server -jar `dirname $0`/ApacheJMeter.jar report "$@" apache-jmeter-2.8/bin/jmeter-server.bat0000644000175000017500000000630212032647263017460 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem =============================================================== rem Enviroment variables rem SERVER_PORT (optional) - define the rmiregistry and server port rem rem JVM_ARGS - Java flags - these are handled by jmeter.bat rem rem =============================================================== REM Protect environment against changes if possible: if "%OS%"=="Windows_NT" setlocal rem Need to check if we are using the 4NT shell... rem [Does that support the ~ constructs?] if "%eval[2+2]" == "4" goto winNT1 if exist jmeter-server.bat goto winNT1 echo Changing to JMeter home directory cd /D %~dp0 :winNT1 if exist %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar goto setCP echo Could not find ApacheJmeter_core.jar ... REM Try to work out JMETER_HOME echo ... Trying JMETER_HOME=.. set JMETER_HOME=.. if exist %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar goto setCP echo ... trying JMETER_HOME=. set JMETER_HOME=. if exist %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar goto setCP echo Cannot determine JMETER_HOME ! goto exit :setCP echo Found ApacheJMeter_core.jar REM No longer need to create the rmiregistry as it is done by the server REM set CLASSPATH=%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar REM START rmiregistry %SERVER_PORT% REM if not "%OS%"=="Windows_NT" goto win9xStart :winNTStart rem Need to check if we are using the 4NT shell... if "%eval[2+2]" == "4" goto setup4NT rem On NT/2K grab all arguments at once set JMETER_CMD_LINE_ARGS=%* goto doneStart :setup4NT set JMETER_CMD_LINE_ARGS=%$ goto doneStart :win9xStart rem Slurp the command line arguments. This loop allows for an unlimited number of rem agruments (up to the command line limit, anyway). set JMETER_CMD_LINE_ARGS= :setupArgs if %1a==a goto doneStart set JMETER_CMD_LINE_ARGS=%JMETER_CMD_LINE_ARGS% %1 shift goto setupArgs :doneStart rem This label provides a place for the argument list loop to break out rem and for NT handling to skip to. if not "%SERVER_PORT%" == "" goto port call jmeter -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS% goto end :port call jmeter -Dserver_port=%SERVER_PORT% -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS% :end rem No longer needed, as server is started in-process rem taskkill /F /IM rmiregistry.exe :exitapache-jmeter-2.8/bin/jmeter.bat0000644000175000017500000001012012032647263016145 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem ===================================================== rem Environment variables that can be defined externally: rem rem JMETER_BIN - JMeter bin directory (must end in \) rem JM_LAUNCH - java.exe (default) or javaw.exe rem JVM_ARGS - additional java options, e.g. -Dprop=val rem rem ===================================================== if .%JM_LAUNCH% == . set JM_LAUNCH=java.exe if not "%OS%"=="Windows_NT" goto win9xStart :winNTStart @setlocal rem Need to check if we are using the 4NT shell... if "%eval[2+2]" == "4" goto setup4NT if exist jmeter.bat goto winNT1 if .%JMETER_BIN% == . set JMETER_BIN=%~dp0 :winNT1 rem On NT/2K grab all arguments at once set JMETER_CMD_LINE_ARGS=%* goto doneStart :setup4NT set JMETER_CMD_LINE_ARGS=%$ goto doneStart :win9xStart rem Slurp the command line arguments. This loop allows for an unlimited number of rem arguments (up to the command line limit, anyway). set JMETER_CMD_LINE_ARGS= :setupArgs if %1a==a goto doneStart set JMETER_CMD_LINE_ARGS=%JMETER_CMD_LINE_ARGS% %1 shift goto setupArgs :doneStart rem This label provides a place for the argument list loop to break out rem and for NT handling to skip to. rem The following link describes the -XX options: rem http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html rem http://java.sun.com/developer/TechTips/2000/tt1222.html has some more descriptions rem Unfortunately TechTips no longer seem to be available rem See the unix startup file for the rationale of the following parameters, rem including some tuning recommendations set HEAP=-Xms512m -Xmx512m set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50% set TENURING=-XX:MaxTenuringThreshold=2 set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000 set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m rem set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution rem Always dump on OOM (does not cost anything unless triggered) set DUMP=-XX:+HeapDumpOnOutOfMemoryError rem Additional settings that might help improve GUI performance on some platforms rem See: http://java.sun.com/products/java-media/2D/perf_graphics.html set DDRAW= rem Setting this flag to true turns off DirectDraw usage, which sometimes helps to get rid of a lot of rendering problems on Win32. rem set DDRAW=%DDRAW% -Dsun.java2d.noddraw=true rem Setting this flag to false turns off DirectDraw offscreen surfaces acceleration by forcing all createVolatileImage calls to become createImage calls, and disables hidden acceleration performed on surfaces created with createImage . rem set DDRAW=%DDRAW% -Dsun.java2d.ddoffscreen=false rem Setting this flag to true enables hardware-accelerated scaling. rem set DDRAW=%DDRAW% -Dsun.java2d.ddscale=true rem Server mode rem Collect the settings defined above set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %RMIGC% %PERM% %DDRAW% %JM_START% %JM_LAUNCH% %ARGS% %JVM_ARGS% -jar "%JMETER_BIN%ApacheJMeter.jar" %JMETER_CMD_LINE_ARGS% rem If the errorlevel is not zero, then display it and pause if NOT errorlevel 0 goto pause if errorlevel 1 goto pause goto end :pause echo errorlevel=%ERRORLEVEL% pause :end apache-jmeter-2.8/bin/jmeter.sh0000644000175000017500000000253412032647263016023 0ustar ebourgebourg#! /bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## Basic JMeter startup script for Un*x systems ## See the "jmeter" script for details of options that can be used for Sun JVMs ## ============================================== ## Environment variables: ## JVM_ARGS - optional java args, e.g. -Dprop=val ## ## e.g. ## JVM_ARGS="-Xms512m -Xmx512m" jmeter.sh etc. ## ## ============================================== # Add Mac-specific property - should be ignored elsewhere (Bug 47064) java $JVM_ARGS -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@" apache-jmeter-2.8/bin/jmeter-n.cmd0000644000175000017500000000351712032647263016411 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem ============================================ rem Non-GUI version of JMETER.BAT (WinNT/2K only) rem rem Drop a JMX file on this batch script, and it rem will run it in non-GUI mode, with a log file rem formed from the input file name but with the rem extension .jtl rem rem Only the first parameter is used. rem Only works for Win2k. rem rem ============================================ if "%OS%"=="Windows_NT" goto WinNT echo "Sorry, this command file requires Windows NT/ 2000 / XP" pause goto END :WinNT rem Check file is supplied if a == a%1 goto winNT2 rem Allow special name LAST if LAST == %1 goto winNT3 rem Check it has extension .jmx if "%~x1" == ".jmx" goto winNT3 :winNT2 echo Please supply a script name with the extension .jmx pause goto END :winNT3 rem Change to script directory pushd %~dp1 rem use same directory to find jmeter script call "%~dp0"jmeter -n -t "%~nx1" -j "%~n1.log" -l "%~n1.jtl" %2 %3 %4 %5 %6 %7 %8 %9 popd :ENDapache-jmeter-2.8/fb-csv.xsl0000644000175000017500000000356212032647263015343 0ustar ebourgebourg Priority,Type,Classname,Method,Field,SourceLine , , , , , (start:) apache-jmeter-2.8/lib/0000775000175000017500000000000012165514773014203 5ustar ebourgebourgapache-jmeter-2.8/lib/opt/0000775000175000017500000000000012165514773015005 5ustar ebourgebourgapache-jmeter-2.8/lib/opt/README.txt0000644000175000017500000000033512032647262016473 0ustar ebourgebourglib/opt ======= This directory is included in the Ant build classpath, and is used for optional jars that may be needed to build JMeter, but which are not included in the distribution. For example: Doccheck and svnant.apache-jmeter-2.8/lib/aareadme.txt0000644000175000017500000001071412032647262016475 0ustar ebourgebourgDirectories =========== lib - utility jars lib/api - Directory where API spec libraries live. lib/doc - jars needed for generating documentation. Not included with JMeter releases. lib/ext - JMeter jars only lib/junit - test jar for JUnit sampler lib/opt - Directory where Optional 3rd party libraries live lib/src - storage area for source and javadoc jars, e.g. for use in IDEs Excluded from SVN, not included in classpath Which jars are used by which modules? ==================================== [not exhaustive] avalon-framework-4.1.4 (org.apache.avalon.framework) ---------------------- - LogKit (LoggingManager) - Configuration (DataSourceElement) - OldSaveService bsf-2.4.0.jar (org.apache.bsf) ------------- http://jakarta.apache.org/site/downloads/downloads_bsf.cgi - BSF test elements (sampler etc.) bsh-2.0b5.jar (org.bsh) ------------- - BeanShell test elements commons-codec-1.6 ----------------- http://commons.apache.org/downloads/download_codec.cgi - used by commons-httpclient-3.1 - also HtmlParserTester for Base64 commons-collections-3.2.1 ------------------------- http://commons.apache.org/downloads/download_collections.cgi - ListenerNotifier - Anakia commons-httpclient-3.1 ---------------------- http://hc.apache.org/downloads.cgi - httpclient version of HTTP sampler - Cookie manager implementation commons-io-2.2 -------------- http://commons.apache.org/downloads/download_io.cgi - FTPSampler commons-jexl-1.1 ---------------- http://commons.apache.org/downloads/download_jexl.cgi - Jexl function and BSF test elements commons-lang-2.6 ---------------- http://commons.apache.org/downloads/download_lang.cgi - velocity (Anakia) commons-lang3-3.1 ---------------- http://commons.apache.org/downloads/download_lang.cgi - URLCollection (unescapeXml) commons-logging-1.1.1 --------------------- http://commons.apache.org/downloads/download_logging.cgi - httpclient commons-net-3.1 ----------------- http://commons.apache.org/downloads/download_net.cgi - FTPSampler excalibur-datasource-1.1.1 (org.apache.avalon.excalibur.datasource) -------------------------- - DataSourceElement (JDBC) excalibur-instrument-1.0 (org.apache.excalibur.instrument) ------------------------ - used by excalibur-datasource excalibur-logger-1.1 (org.apache.avalon.excalibur.logger) -------------------- - LoggingManager excalibur-pool-1.2 (org.apache.avalon.excalibur.pool) ------------------ - used by excalibur-datasource htmlparser-2.1 htmllexer-2.1 ---------------------- http://htmlparser.sourceforge.net/ - http: parsing html jCharts-0.7.5 (org.jCharts) ------------- http://jcharts.sourceforge.net/downloads.html - AxisGraph,LineGraph,LineChart jdom-1.1.2 -------- http://www.jdom.org/downloads/index.html - XMLAssertion, JMeterTest ONLY - Anakia rhino-1.7R3 -------- http://www.mozilla.org/rhino/download.html - javascript function - BSF (Javascript) jTidy-r938 ---- - http: various modules for parsing html - org.xml.sax - various - XPathUtil (XPath assertion) junit 4.10 ----------- - unit tests, JUnit sampler HttpComponents (HttpComponents Core 4.x and HttpComponents Client 4.x) ----------- http://hc.apache.org/ - httpclient 4 implementation for HTTP sampler logkit-2.0 ---------- - logging - Anakia oro-2.0.8 --------- http://jakarta.apache.org/site/downloads/downloads_oro.cgi - regular expressions: various serialiser-2.7.1 ---------------- http://www.apache.org/dyn/closer.cgi/xml/xalan-j - xalan soap-2.3.1 ---------- - WebServiceSampler ONLY velocity-1.7 -------------- http://velocity.apache.org/download.cgi - Anakia (create documentation) Not used by JMeter runtime xalan_2.7.1 ----------- http://www.apache.org/dyn/closer.cgi/xml/xalan-j +org.apache.xalan|xml|xpath xercesimpl-2.9.1 ---------------- http://xerces.apache.org/xerces2-j/download.cgi +org.apache.html.dom|org.apache.wml|org.apache.xerces|org.apache.xml.serialize +org.w3c.dom.html|ls xml-apis-1.3.04 -------------- http://xerces.apache.org/xerces2-j/download.cgi +javax.xml +org.w3c.dom +org.xml.sax The x* jars above are used for XML handling xmlgraphics-commons-1.3.1 (org.apache.xmlgraphics.image.codec) ------------------ http://xmlgraphics.apache.org/commons/download.html - SaveGraphicsService xmlpull-1.1.3.1 --------------- http://www.xmlpull.org/impls.shtml - xstream xpp3_min-1.1.4c --------------- http://xstream.codehaus.org/download.html or http://www.extreme.indiana.edu/dist/java-repository/xpp3/distributions/ - xstream xstream-1.4.2 ------------- http://xstream.codehaus.org/download.html - SaveServiceapache-jmeter-2.8/xdocs/0000755000175000017500000000000012165514773014553 5ustar ebourgebourgapache-jmeter-2.8/xdocs/usermanual/0000755000175000017500000000000012165514774016730 5ustar ebourgebourgapache-jmeter-2.8/xdocs/usermanual/build-monitor-test-plan.xml0000644000175000017500000001722712032647214024141 0ustar ebourgebourg ]> User's Manual: Building a Monitor Test Plan

In this section, you will learn how to create a Test Plan to monitor webservers. Monitors are useful for a stress testing and system management. Used with stress testing, the monitor provides additional information about server performance. It also makes it easier to see the relationship between server performance and response time on the client side. As a system administration tool, the monitor provides an easy way to monitor multiple servers from one console. The monitor was designed to work with the status servlet in Tomcat 5. In theory, any servlet container that supports JMX (Java Management Extension) can port the status servlet to provide the same information.

For those who want to use the monitor with other servlet or EJB containers, Tomcat's status servlet should work with other containers for the memory statistics without any modifications. To get thread information, you will need to change the MBeanServer lookup to retrieve the correct MBeans.

The first step is to add a Thread Group element. The Thread Group tells JMeter the number of threads you want. Always use 1, since we are using JMeter as a monitor. This is very important for those not familiar with server monitors. As a general rule, using multiple threads for a single server is bad and can create significant stress.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, "expand" the Test Plan tree by clicking on the Test Plan element.

Figure §-num;.1. Thread Group with Default Values

Change the loop count to forever (or some large number) so that enough samples are generated.

Add the to the Thread Group element (Add --> Config element --> HTTP Authorization Manager). Enter the username and password for your webserver. Important note: the monitor only works with Tomcat5 build 5.0.19 and newer. For instructions on how to setup Tomcat, please refer to tomcat 5 documentation.

  1. leave the base URL blank
  2. enter the username
  3. enter the password

Add the to the Thread Group element (Add --> Sampler --> HTTP Request). Then, select the HTTP Request element in the tree and edit the following properties):

  1. Change the Name field to "Server Status".
  2. Enter the IP address or Hostname
  3. Enter the port number
  4. Set the Path field to "/manager/status" if you're using Tomcat.
  5. Add a request parameter named "XML" in uppercase. Give it a value of "true" in lowercase.
  6. Check "Use as Monitor" at the bottom of the sampler

Add a timer to this thread group (Add --> Timer --> Constant Timer). Enter 5000 milliseconds in the "Thread Delay" box. In general, using intervals shorter than 5 seconds will add stress to your server. Find out what is an acceptable interval before you deploy the monitor in your production environment.

If you want to save the raw results from the server, add a simple data Listener. If you want to save the calculated statistics, enter a filename in the listener. If you want to save both the raw data and statistics, make sure you use different filenames.

Select the thread group element and add a listener (Add --> Listener --> Simple Data Writer). Next, you need to specify a directory and filename of the output file. You can either type it into the filename field, or select the Browse button and browse to a directory and then enter a filename.

Add the Listener by selecting the test plan element (Add --> Listener -- > Monitor Results).

By default, the Listener will select the results from the first connector in the sample response. The Connector prefix field can be used to select a different connector. If specified, the Listener will choose the first connector which matches the prefix. If no match is found, then the first connector is selected.

There are two tabs in the monitor results listener. The first is the "Health", which displays the status of the last sample the monitor received. The second tab is "Performance", which shows a historical view of the server's performance.

A quick note about how health is calculated. Typically, a server will crash if it runs out of memory, or reached the maximum number of threads. In the case of Tomcat 5, once the threads are maxed out, requests are placed in a queue until a thread is available. The relative importance of threads vary between containers, so the current implementation uses 50/50 to be conservative. A container that is more efficient with thread management might not see any performance degradation, but the used memory definitely will show an impact.

The performance graph shows four different lines. The free memory line shows how much free memory is left in the current allocated block. Tomcat 5 returns the maximum memory, but it is not graphed. In a well tuned environment, the server should never reach the maximum memory.

Note the graph has captions on both sides of the graph. On the left is percent and the right is dead/healthy. If the memory line spikes up and down rapidly, it could indicate memory thrashing. In those situations, it is a good idea to profile the application with Borland OptimizeIt or JProbe. What you want to see is a regular pattern for load, memory and threads. Any erratic behavior usually indicates poor performance or a bug of some sort.

apache-jmeter-2.8/xdocs/usermanual/build-jms-point-to-point-test-plan.xml0000644000175000017500000002416712032647214026142 0ustar ebourgebourg ]> User's Manual: Building a JMS (Java Messaging Service) Point-to-Point Test Plan
Make sure the required jar files are in JMeter's lib directory. If they are not, shutdown JMeter, copy the jar files over and restart JMeter. See Getting Started for details.

In this section, you will learn how to create a Test Plan to test a JMS Point-to-Point messaging solution. The setup of the test is 1 threadgroup with 5 threads sending 4 messages each through a request queue. A fixed reply queue will be used for monitoring the reply messages. To construct the Test Plan, you will use the following elements: Thread Group, , and .

General notes on JMS: There are currently two JMS samplers. One uses JMS topics and the other uses queues. Topic messages are commonly known as pub/sub messaging. Topic messaging is generally used in cases where a message is published by a producer and consumed by multiple subscribers. A JMS sampler needs the JMS implementation jar files; for example, from Apache ActiveMQ. See here for the list of jars provided by ActiveMQ 3.0.

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Next, you need to modify the default properties. Select the Thread Group element in the tree, if you have not already selected it. You should now see the Thread Group Control Panel in the right section of the JMeter window (see Figure §-num;.1 below)

Figure §-num;.1. Thread Group with Default Values

Start by providing a more descriptive name for our Thread Group. In the name field, enter Point-to-Point.

Next, increase the number of users (called threads) to 5.

In the next field, the Ramp-Up Period, leave set the value to 0 seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will finish starting all of your users by the end of the 5 seconds. So, if we have 5 users and a 5 second Ramp-Up Period, then the delay between starting users would be 1 second (5 users / 5 seconds = 1 user per second). If you set the value to 0, then JMeter will immediately start all of your users.

Clear the checkbox labeled "Forever", and enter a value of 4 in the Loop Count field. This property tells JMeter how many times to repeat your test. If you enter a loop count value of 0, then JMeter will run your test only once. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.

In most applications, you have to manually accept changes you make in a Control Panel. However, in JMeter, the Control Panel automatically accepts your changes as you make them. If you change the name of an element, the tree will be updated with the new text after you leave the Control Panel (for example, when selecting another tree element).

Start by adding the sampler to the Point-to-Point element (Add --> Sampler --> JMS Point-to-Point). Then, select the JMS Point-to-Point sampler element in the tree. In building the example a configuration will be provided that works with ActiveMQ 3.0.

Name Value Description
JMS Resources
QueueuConnectionFactory ConnectionFactory This is the default JNDI entry for the connection factory within active mq.
JNDI Name Request Queue Q.REQ This is equal to the JNDI name defined in the JNDI properties.
JNDI Name Reply Queue Q.RPL This is equal to the JNDI name defined in the JNDI properties.
Message Properties
Communication Style Request Response This means that you need at least a service running outside of JMeter and that will respond to the requests. This service must listen to the Request Queue and send messages to the queue referenced by the message.getJMSReplyTo()
Content test This is just the content of the message.
JMS Properties Nothing needed for active mq.
JNDI Properties
InitialContextFactory org.apache.activemq.jndi.ActiveMQInitialContextFactory The standard InitialContextFactory for Active MQ
Properties
queue.Q.REQ example.A This defines a JNDI name Q.REQ for the request queue that points to the queue example.A
queue.Q.RPL example.B This defines a JNDI name Q.RPL for the reply queue that points to the queue example.B
Provider URL
Provider URL tcp://localhost:61616 This defines the URL of the active mq messaging system.

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your JMS requests in a file and presenting a visual model of the data.

Select the Thread Group element and add a listener (Add --> Listener --> Graph Results). Next, you need to specify a directory and filename of the output file. You can either type it into the filename field, or select the Browse button and browse to a directory and then enter a filename.

Figure §-num;.2. Graph Results Listener
apache-jmeter-2.8/xdocs/usermanual/build-adv-web-test-plan.xml0000644000175000017500000000716612032647214024000 0ustar ebourgebourg ]> User's Manual: Building an Advanced Web Test Plan

In this section, you will learn how to create advanced Test Plans to test a Web site.

For an example of a basic Test Plan, see Building a Web Test Plan.

If your web application uses URL rewriting rather than cookies to save session information, then you'll need to do a bit of extra work to test your site.

To respond correctly to URL rewriting, JMeter needs to parse the HTML received from the server and retrieve the unique session ID. Use the appropriate to accomplish this. Simply enter the name of your session ID parameter into the modifier, and it will find it and add it to each request. If the request already has a value, it will be replaced. If "Cache Session Id?" is checked, then the last found session id will be saved, and will be used if the previous HTTP sample does not contain a session id.

Download this example. In Figure 1 is shown a test plan using URL rewriting. Note that the URL Re-writing modifier is added to the SimpleController, thus assuring that it will only affect requests under that SimpleController.

Figure 1 - Test Tree

In Figure 2, we see the URL Re-writing modifier GUI, which just has a field for the user to specify the name of the session ID parameter. There is also a checkbox for indicating that the session ID should be part of the path (separated by a ";"), rather than a request parameter

Figure 2 - Request parameters

The lets you customize what information JMeter sends in the HTTP request header. This header includes properties like "User-Agent", "Pragma", "Referer", etc.

The , like the , should probably be added at the Thread Group level, unless for some reason you wish to specify different headers for the different objects in your test.

apache-jmeter-2.8/xdocs/usermanual/glossary.xml0000644000175000017500000001007612032647214021306 0ustar ebourgebourg ]> User's Manual: Glossary

Elapsed time. JMeter measures the elapsed time from just before sending the request to just after the last response has been received. JMeter does not include the time needed to render the response, nor does JMeter process any client code, for example Javascript.

Latency. JMeter measures the latency from just before sending the request to just after the first response has been received. Thus the time includes all the processing needed to assemble the request as well as assembling the first part of the response, which in general will be longer than one byte. Protocol analysers (such as Wireshark) measure the time when bytes are actually sent/received over the interface. The JMeter time should be closer to that which is experienced by a browser or other application client.

Median is a number which divides the samples into two equal halves. Half of the samples are smaller than the median, and half are larger. [Some samples may equal the median.] This is a standard statistical measure. See, for example: Median entry at Wikipedia. The Median is the same as the 50th Percentile

90% Line (90th Percentile) is the value below which 90% of the samples fall. The remaining samples too at least as long as the value. This is a standard statistical measure. See, for example: Percentile entry at Wikipedia.

Standard Deviation is a measure of the variability of a data set. This is a standard statistical measure. See, for example: Standard Deviation entry at Wikipedia. JMeter calculates the population standard deviation (e.g. STDEVP function in spreadheets), not the sample standard deviation (e.g. STDEV).

The Thread Name as it appears in Listeners and logfiles is derived from the Thread Group name and the thread within the group.
The name has the format groupName + " " + groupIndex + "-" + threadIndex where:

  • groupName - name of the Thread Group element
  • groupIndex - number of the Thread Group in the Test Plan, starting from 1
  • threadIndex - number of the thread within the Thread Group, starting from 1
A test plan with two Thread Groups each with two threads would use the names:
Thread Group 1-1
Thread Group 1-2
Thread Group 2-1
Thread Group 2-2

Throughput is calculated as requests/unit of time. The time is calculated from the start of the first sample to the end of the last sample. This includes any intervals between samples, as it is supposed to represent the load on the server.
The formula is: Throughput = (number of requests) / (total time).

apache-jmeter-2.8/xdocs/usermanual/jmeter_distributed_testing_step_by_step.odt0000644000175000017500000037017312032647214027645 0ustar ebourgebourgPK•¨­@^Æ2 ''mimetypeapplication/vnd.oasis.opendocument.textPK•¨­@$òvœœ-Pictures/10000000000001A9000000FAEDAAF777.png‰PNG  IHDR©ú,ŸH„gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ØPLTEù Cdu¿¿¿,4???]Š£!2:[‡Ÿu®Ì¯¯¯ŸŸŸ#)9Udm¢¾e–°ïïïS|‘ßßß)>H Kpƒ1IV‡ ÏÏÏë C·Ë Û { ;/§  ___s +/// &— S» c› « k[oooK<<<‹ OOO¨¨¨¥¥¥‡‡‡xcccZ```~ºØÿÿÿýîFJIDATxÚbpCÃh @£15T@ÆÔP4SCÐhL @£15T@ÆÔP„SnÔLTw,ÓHv@ÆÔPq@¡Å³+µ3MBb» €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €Fcj¨¸ €pÅÇà‰‘ç>€ÂS<|(úxÅYHŒ<÷î<ÅËËÇçʲו‘Èàeb^vpjaI€€²Œ®®hÒtH³ÃÄ}@¢Ü@¸bŠ‘GTˆG˜ƒ‡MDLTÄUÈà`åÅÆ#ÄpupåaD‘¦}H ÷؈r@á‰)Wbbfgsu`b €°;DÀÕCDÌU”Eš.!1<Ü Î}„'¦]Áˆ‘ ˆA6¹h +Ÿ˜¨XÀÕÍ•C˜—Iš^!1<Ü Î}D8¦Ø\9À6q³» ðAârÁÀpcD•¦gH q÷ˆr@Ž)Wnn^aW>n6`A 1J„›* 7^Wiz†ÄwH€(÷î˜Üý•‘ç>€ÂSB܃»g9Ý@££ICÅ}4SCÅ}„3¦8xÁ]ipWš•Á#$ì¼~7d˜Vó¡ðh七×uP»¡‹ûgLŽÜÜ¢®ŒÂlÀ^>È0a0âqsC„„¹¹]árpB‚÷‰1Ò/¦Èq\%6÷ζ7Ð&F1W`Ÿ Øöö €¦²¹êJW>vnˆ¨À&—ƒñèѶ"Ã}`=®ƒ×}p•XÝ@¸bŠÔ²gäq噲(ꚸº °1r€Ç²@@p*åÑ!$Èq/#ýbЬðƒ©Äê>€ÂYú öׄÜÀý4Hñ ¶IŒ‘—›QÅ&WzÇYî£cL‘å>„J,î ¼1åÊÎ*?aÚ¡±´ –X6¦Hu½cŠT÷!Tbq@á)Pndƒi—¥Œ®7W4÷Ñ;¦Üw>÷A|‚Ã}4Úó*î Ñ˜*î Ñ˜*î ´˜Òf¥ЦIHŒ`÷Ðè/CÅ}„S,ÔT ‰aã>++’Ý@äŸE&ÈÅï>8„û ‚\œ¤k JNãä”Á4¸ã‰‰“,eçû1 ʸÔ1Evò †I #4¦ø¹8É®2ˆò33É*tGdLQRÄ@”2SDÔ”µtˆ:çÐòs¦†à`Œ)Ê[_Ä0xœ2|cŠ’ê ˆaðdïáSTªÈˆºnb)Z¥_€b”ég¸Ä?뀢úÉöT)“‡GLQ7Ù-î è†ààˆ) *WD›Û"¶!8bŠú!@´º×c G™<¦hÒ½ ÚÝÀ2p‹Ž)y €hyWÎ@2 hLѬ0 †¡W 昢a @ CØíƒ-¦h›.ˆ7…Ñ}ºq`bŠÖõ2@ÑåN7 úŽ2 DLѾ­ @ Ã#Á pLÑ£ˆ ºÝ“HÇQ&:Ç|@ tMyüÃ/¦èVZð+%èStŠ zßK¯1 ¯„Dÿû|i_\Ð'¦è=½@qó2­G™˜†EzC40wdÓ¶7O‡òu–ŒЀÝfNÃ2žiè: ¼wžf£L4©[}@S4e¢aL àŠ€И¢‘Ï™hW àŠF€à˜¢IiB›˜âàUÂ4à1åNýQ&¦¡’ùI4bŠÚ­)êÇ”Ä X @ƒ#¦¨[0 êtD. ÁSÔ\ÔNÕ˜4ŽhðÄõê¦Áç$*€L1E­† ÕbjPmb ÁSÔ©˜K¨ hÐÅe£LœŠŠŠ.@ÌIaep퇀„1En©#¡È‚rî–Ù™kðàî@ƒ2¦È*A3CPìhÊ›ÈÉ9ËÉ™Èk‚¸†f‚tK(´4HcŠÄéFAU`´¨˜Ë2 €¤±© PT•Ô¸¬g Р)ª ~P<É3`csP\ñ“”>ë¹]4ˆcŠØôÍ©ìæf.ˀȚº¹)›;cõ4¸cŠˆQ&P†ÒÐgÀ ô5ˆÌVƒ³z‚€ì1Eh”‰_ËÍMŽ?¶©’}Ðà)¼…’„¥›Š>! ¯â¦,1D«'8 ¡S¸CRBÙMS†0ÕÀUƒºz‚€1åŽ}ºXôiH2$QÅOfM8H@ ™˜ÂV“h¹iQà¨ÒâŠÕЊ)ŒÖ™™›Š ±@VÅMu(VOp@C*¦P«&77câ¾›ç¬žà €†XL!2ñ[º™0äPªª¡R=Á@ ¹˜‚2)_IA¦›ÂÁ¡æm€‚1iÚ’TöAË?Á!XìA@ ͘^VnòH-;âZò F…Óô1@ Õ˜âWvC›QCqi\™Ê~è{P@C5¦,Ü4{K2²²22 2 ¬%+Í « . ¢¤eeP3•ƒûP4TcJËÍ)¤¥Ä¥ÔôtÕÔ¥t¤Ô¤”ô dA´$ƒ›rL¹Ù˜ !S‚nn’¨1¥ÆBâ zJÒºâRÒšÁ ­y¨â&1Tc €†hLq¹™3 Æ”8¹‰‹‹Kc L3¸¡ÕTænC5¦hˆÆ”›5Ž˜RfP’Ƙƈ)#7›¡S4DcÊÐMGLÉ(HIIªéÉ€iŒ˜’qSª1@C4¦ÜP£@ZŠØÞ¯›ÿ)€š1Å„ÒFgPÒÓ!6¦äݘ†hLÐP)yò€¼ç)€¢ã~¨M?’Ô‡hLÐÐŒ)EÐz$Ið?iIð¸´ß‘”–O@ë0( Q3tc €†pLˆ#EAAO‰A\]J] Qê`ÄSP€Áh¨š¡S4TcÊ„AJSâ ² º’ J ÖŸ’¨I¨«Ã £#­b2A¢5C7¦h¨ÖSò ²â ˜Rc7ØQ,àÀý'7%)qII)5)Pƒ¤Ö¢©1²1@C¸íŠYu5]PDè(@**pL;² âºh1V3t[é44cJÂM Òâ ºIQ˜‚ŽØ‚3"¦ j4†lLУG‚’¨L7€ ™ƒë)q5]Ii=PóBOR\RôIí1 €¢1¥å¦Ž)I)7)Iu777)pÅDLÍM<”¤e@JÁjô‡î@ јR%q¢ã«:Tc €†hLq¢ü 4ܸ†jLÐ)~77Y2"JºŽl(€ªë(lîoìÝX†jD¹ÐP).7M2bJsè~î4TcÊÝeqqÀç&ª!hÈÆ”™JsÈ%@ Ù˜â·$¹¦²ÊYÊ €†lLk*Òš’*Cw ÐP)N.~§èåÝ´†pD¹ÐŒ) ð®OAe’Ê?G·¡»~hèÅb—— í?c77'N¦!S4ÔbŠ“im‘ª›±[²eÀ²‡Òl4@C*¦0Z•ØÝóÀˆÒ‚EõÍX4tb XêaÔ3 S“ˆ)UN£¢ €†JL1qb]Q :‰Ì„ˆ¹7~Ô2tèe,€1Ì8‡ÀÍÜÜ4ð÷«dåÝ0g¥†^Æ !SœøOŽàRvs“ÃsÞœŠ›2æ6@ƒ=¦$§}A77q%i¤ ,ù‰m¡ f@ƒ:¦ˆ=àƒÓt^0f+PÆDÅÍÍ‹‚ ;ˆ@ â˜âä$~[è nMS#DlÉ›€â6$8!5T2@ Ö˜"9ü˜T•ÁçÙkȃ€˜­¬J\\‰Œ@ƒ2¦øÉ :&Eeø Ê,ŠL4Lô4ïõà¤d3“S½‰9à €[Láë:Yô*qé hpÅuÒ5%´«ÌhÅ”µ’4…®œ1@ƒ%¦¨y6"Óàq @ ’[b9©™™¨‘½]LÐ ˆ)ªWäLƒ,SÐ@Ç? ÇTšÑd €6¦˜8iLTLFƒ'cÐÆ5ºN´©A•±hÀbІCÔÏ, €&¦$h:@õ™wÚÒ$€€˜¢y"e‚n& ˆî1ÅIûôI›Õ,±ˆ¾1EŸ1P¦¡ZàDǘâ§×¼ Wˆ `Æ ºÅýÈDãô60 €èS4ë:Ñ?¦Üê:Y€¢GLÑ{6•‰)îsŽDó˜’ ¿§è’âé¾` €hSS¨Ó)霱ˆ¦Én`JôKìôÌXÄ0LRÜÀÄ=½ @´‰)þ]’Eç „N €hS=îB÷64]2@1ÐÀÕ=–9½Ú"Ä0Ô¦˜8‡ÊŃöì>Š2@Sƒµë4´b œ±È­=5¦Ü¨ ¨`L#Ù}4SCÅ}„SÌ®ÔÌ4 ‰ì>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€©¡â>€ÂS|ƒ;$FžûWLñð¡èãd!1òÜ@¸ó//Ÿ+ÈBv^WFn ƒ—ˆyÙÁ©…$Ê2ººr IÓ!Í÷ˆr@áŠ)6vF6Q!av661QW ƒƒQ”dDÀÕMLXÀ•‡Ešö!1lÜ`#Ê}„'¦x\AˆQDˆ]@˜ÍÕUT€]ˆ(Â"ìW71WQ^iº„ÄðpP€8÷ž˜bt#F6 Ùä¢B®ll<|b¢B`W7Wa^n$iz…ÄðpP€8÷á˜`såÛÄÍî*À5JˆÈ CÂUHŒUšž!1ÄÝ Ê}D8¦\y¸¹Ex…y\ù¸Ù€)Ä(nn¨($DÜx]Q¤éCÜ} ¢Ü@¸cjp÷WFžûGL qîžåt@Ž& ÷ÐhL ÷Θâàw¥9À]ihVp°óBúÝaXy –ãã£[Hå>858ÝÇÁÎÎŽÓ}„3¦@ GnnQWFa6`/d˜0˜ñ¸¹!BÂÜÜ®p9QQzõ,ÉrŸ«+#Û`v£(n÷ζ7Ð&F1W`Ÿ Øö Àæª+E\ùDع!B N›\Ž‘ƒÃ^m+rÜçÊçÆ6˜Ý'ƈ§ô \1Å jÙ3ò¸B‚ž4Ì êš¸º °#4–’Š€»9`OŒN!Ažû¸yسû¸¹Ýp—I„³ôì¯ ¹ûi‚l“;#/7£ŠM9 û„8èTºã>F!vº•~d¹—ØÜ@xcÊ•T~2Â:n ´ –XÐb ΣOHê>7`õÀ3ˆÝ‡7üoL ð€ò-£,Ÿ€ËYFW1!vQp‘C”.'ÊŽ'MÐ $Hu;;xžhкO”>¶á>€ÂSlnl®ÂnnÀŠš b3Ã03À ›ˆçùè‘ÃgÎçœó9ç3çõy¿Ïùœ7Â<ýƧFö>KæM …B¡P¾R‡–¿þ*”Ýo¦B¡P(”–"N‡JªšhsP( åÁH‘‘½BhsP( eàAÓþ¿è•7›Û¤´-( E/²Î^¼/ÃVÞcžp1üÙæ*É犨ED¡P(zq)ýbÌúù£y7÷þ±¡txˆ³ñg{öÌ…¬}ì›<ŽAzZ™™u¥Yf`æódõ€]©V)¢ZD¡P(=„Ò£hÙ¦Ÿ½øÅG ùÚgaì/'ŽÕQ*³.™,›½ßѰ®ôÌÒÃä@«¿R¹áŽYÏð³jº×`c(ã¡Vd(ãÙ83‹.rù%½”Þ‹ e¨RW.¾]RÕØ"!ˆghhhaåä?ÂnÌØ ?ÞK!ÏPo#LÈ¥s™u,±ðòµ®—Üoâ™´’T]ÿ«´¡ ›YÙø¹"—3²jdØÂs¤e]yYM#ð ݇t1ÒqàÇ„aK‹ŠÄ•µÍm2žÀÐÆÞÁg¸S·u¾˜™­šžÓ,­RÔ"óUœ%iÌ;vB'„«èX¯´õþÝs9ñG}ÌVÀÔÞÉÉ.nbø¡ã|¸vдŠ:\ƒ… å~½‰´ÜÌÑ€±‰)ÏÔŽû !¤M'é½J¡P†&µ%·›í…ïÍ ò°3æa¶º¦áÖ_ù;/TIïÝY¯p[%–Aáõ¸÷ø1·~?quÜØ?›–ê{ÿù)#×Â=neÄ+~Áí‚&Œ|Ì3÷Â¥·ÖÏmÌ»}0ýæ„'¦úØ ¶Æ´c™¿È‚‡«ûÇfo\¾>fâè7¹¸X´55]¾ü×·'n ~ëƒd x*fÎr;ƒÖú¿ò'ß2=dÖãÒyÜ»±TË…lù=sùúÈ'Íø`é2iÿ'¯ÇÿêùD°‘Bþ¼p©Wê>Œw»íÿd a%&¼cÆ?>yÿJIs図½ƒ½UÕH»UäâfæâæùduÑõ[æMž· åñx7oÞôòò­­­AAAJYÂT‹(ÊPKïߨ4ûù œ›WR‹y®N¶!þ¶ÿJ)4ïäqÜcêd/#óGǼ9¡ÅÀθåóùÞ"ïø)w×ÿÙÄW¤ñôx£‚’kwÇ´˜=7Löõþ´:SÒ1Û¢œ+O<7s©È”•6]Î-sî4yò㣜®¼¾§l|ÐãHÅå+2Er–±u7¾ï?oº–ôIñX-Òö{QeYm™‡­³±ÒÆ;•R˜˜¨줇Wjg_eG®Ë2‘éê¿û¼ñßúž´&„üüÝ9‘ £pt5WdÀ +cc Ë …¢¢"—k×®YYY988°¬L"‘³,K§š(Ê„•Õ Œ‡3ÚšJwe4a¶tp åtóZµêÝ®^DüÚû#'|÷wWcû²³é/‡¿9g…‡±ãh×–cUJ k¸w=ú?Ƥ­`õ³/:L_àñß­Ufª™²5b™Û¿D¦„ÀæÏŸ®• ŒöüßS¶Þc&±{JeŽTU¤µ”uÛ¬5=Þ“iì¥y!cÇøþÏñ¿VÍ]çhØxïòš­Õ¦&<ÿ?A§Kô¸R·ÇE§þw:ü½žÂQÿŠfTtáì—qf|µÜåR$‘²näÒ©SFBx<ž‘‘ Ä0LeEÃJImINÿ5ýèùÀ²©/†©N¡P(C‚ìd ·kØáÖ¦Â]»ÖÔ4WüvÞþÏk>.fP}Æo«c¶Uî6«` 0ò쀥aÁ0,&cÆi5;”¹Böžº©Z¯{VÖ<„ ÁÎ$]¤wq%Z/¤¥ãsrÐT|·¤•åØ{ 3‡ž^)&DÒÔjîn®¸^sg¾´…Å<Ò.Ej¶BÈý©§®%¿{áëЯsê‘€iI]mî8ØÚ¸·1·šå8Žax@ׂS(”¡ja k`bVww÷{„ÅÌϳ⠞2…ÿÔj•þTà2N\Ê#¼å›@k}#°YyûPÌ·h,/pBµ\ËÛ[ D¤R™·ÿˆ–VdcΨ½È°Óô-ØÜÚLV¦åB~n'–Ã7µŠsoY eÌ>Ñv‚–ú»ßŸª×ãÒ:þÉJkóë,¿yÆ™¸\Öèbûwï%ÿ) 墓]½SGÅÚûÅðV3ÒÖ6>A|>ÏЀA @uÕ7i=B¡P†XVw»Èôç÷牫KkÛ -¬¬xˆ6£ó{ >Làñ‡í\çpŒÍyp<¹ÐnØðæüv)ž…úë?yþ÷1yiEÄè¼Êfà» í]Ìx¯ÄýjigϨ/`6´CE¥/o°Ôz!V–‚û¹­àbdf²yEmSKÕGÿ¹âçîìnÔP%®?(1îé•Þ(~9zŽ%•_=ŸÜ¸ã½0{ÿÕ¢CßÝkñ¶3Ò*E2øí<}OˆB¡P‰¹ ñôÍ*oW«7†à²ÒÊÔã—J¼xâÛ:ŽÏ=«ßI;•åæ÷Ìh“–Ɔ´ãY»En‚[óqòò=½;µyÒèˆÇ\D>®ÀJË+«ÿ¸XjhïÄh˹³ôv6|Vû…¸[Aá¹ gÖ`5ÒLÅM'߃®¨¢–Þr …¢eìe›ïU45·Jd2ÆÀÈØÎÑÕÑÊn_»ÞÀS¡·­!ä]»Þ¤øK«ÿÌ)¯Kj.»}³¢•á[=æ/¼}íú;ïEr¯é¼w]ƶ´ÆÀÖÑUhoÊ•¨–-¶ª¢ü^M}«„Ä™›[¸:Û1ŠVçÞ¸ÛÆ2ÛÇ8ÇW'éQçBpëü¢ºæ6L€á™?àQw+7¿YÆ3tóJròï}ýñB>ºòŸŸJÜGZt¼ÒæÊ›¥ˆ1ù0bPÛý¢œ¢:„#ý}Ì:NÉ¥èNy ½á( eøëzλ )ú°Äq$§7ƒiSeÏáå'ÝÇz™‚>ÜWíécÁC}^݃ŽB¡P ÍEóð˶5b‡€'<Íšë뤞¿eåîÁ@?îAG•ˆB¡PO?¿O>Jnd‰‰ëˆ6†ƒyø5°n^‘ñll3O`hãà:ÌÖ¸ŸjK­" …Bh†‹DËØk`å`ý][*E …ByÀð}Í«~;r†6…B¡P˜ÀþOž¿_]6¶v´EžøO¿°²Þ^ºÐÚÚš¶9…BtR¤cL[ä 40Y[[Ó^¦P(TŠ(ŒÜ«—`Fíe …B¥ˆò€¡½L¡PµÑut´—)ÊCfrþÓ‰k0ŒJšg>;3ṳ̀5ûaîçg׎… ŸN”‡z¾„Ö‚TóäôU¡„ˆ÷¼ñü—¹ `,ZýË× Ýúr+ ÕÚö †„\Oû"W¥5D/ï˜áÓ75ìÌ*RíµÆ€Kž ¥7RDƳ?;ýöX•ßíØ3gÞà"#.!ƸWR¤­ BÚƒ««DÐo+*ÀâóŸM~ûw˜£VÃ.Ë*Ù³ì…/oøýãç ]!%{–ý3c‡®§ë~9½lŒ'ÌK\ì9©q_äü°Ë;qñ𾨡V)"%IŠ&Yà¥{–½°fâm®}:¿Æ [¾½Sð^jMÝmË“>ºc)Ê@J·W8Á*¿[B.|>åðÌ?O®y:$ ¤$yù‹Ûn2ÏúçÉ5ºîZ R–uˆa°¯¯Ÿ" ¹ |rbÒÙ§Þ9Ä0 |{2ѱDBŠ o€—›Æ8G~µF.«õWV€;wÖÆãoEí-ðOxçàR^øìÉØCœI1ë““¸Ë¹›´ìm71öþßö®½ø8k)&µKTÇÏOÎ*9óÇŒ=ž\d‡t—¢ ?}y“ažye¾3!œç¿òÌÖØC_þt>òí±Ê‹ŽÎߦ¸–H—‹\³([þ E§({¡½Afm<õöXÕ;G5+®YHÉžå/n¹)·Éô¸yÔî?5;´=òFÒ¬…BHµAJ•GHí;$¸ðÙ‹[nø-ܼ߰óÙ¬Z Â>{çÃDl8v`ì3Ì…g¡§¶B;~Ö•·ŽoˆÀ ssûËÓÕ]ý5*€qÄ'1Á„ŒÅi7<…Î.㈨yÎòž¹ØIkt!-û×/ûbSREȪ·æûëâÐ?Álì 3»°“œ»ª‚ö#*×<)cŵ¨¥z'ˆ3Òn`1)˜p§ÜHË+NÑÖ,òÞwE²>÷Œ–;gÚ´u)œ Ûi‡êri e@éÞAÇýV7]Â=•‚ n¾õÏ “²nz 0 äÞc쬳›E[A⻹JOZW…Ê?ëãúZ}ìȪÒ}ÿxyG^Ê»+Ýüržs'õ'¥{ÿñòö<††¬¥P"¯g{éƒbN‰Œ|Ã;åëÃïÏ"~<#eý…rž³ö“¯~ýÍÒY;t-1håÚâ·ž~ú·^ËûµÿkŽ3!D[ýƒV~üôá÷¯ºÀט[‡×?M>:4^­YœçnúøîÓï/õ Æ3Ôh¶¡î ä6éÌé§~Móz3Ìcò󎙿œÙ´ÌþéçEø—œž,ÃÓV ç¹ÿJqÛ±~é¬oã§?N‰Bò“Ü 'ÿùô7·Œg|¼2ëmÕ–W»dyK¾?ë0žñᦹÎ*Y©7 &—¶D¬?Âuø¾±VÞºß9íy’nnÈ@Ьƒæ¥Q(”­|ó/·}ÅíÌÝ&‘Òx¶þ÷ÀÀl‡š{õRÂÚ×ËÊÊô”®K[g¿f~xpeÐÐò\ áK£P.º™+š;w®æ9û÷ïïóz XA›ãßÐz|uÂ×½Ï\Ç^VòÛoï·{ößxÝE廽4×kP(”o55·ÐxvüüÇ@ZEÅÅÅ´Í)Êൊ¨—üQ€ö2…BÔRDÃ< Ð^¦P(ƒZŠ,--i‹ <­Þ¤(磻 NÑOWŽ¡@h)*(( -ò@øî½)´(ƒ¥¤cåHQPPm‘@ÊI¨©©¡-AlÐ1ò¤ˆ›ÐþöÛoû»Ô… &%%ÑRxÓ‘28ùæ›oÕoÍÊʪ‹Ciì{ÔÓÓs`JÑ¥×´¯ {ýõ×ûõæ¶¶¶¦¥(¹Hço(ƒ]nìü­u»èf(*žžžýWŠR„ ”nWí¾þúë.æ-…BÌè{W÷÷¯@—Wèï}°¡K¯Ñ÷Š(ÊÔ(TŠ( …J…JÑÐé¼Ò½Ñ‹wä1€±Ïò]["]è&iƒ²§ R„Xþ}å°QìeGHí/[k´% ¤ö—­w.!.ã|b‚h«R)zÔzMK@ñ>)ˆL±ÿC‰ôÞ½ËË—3&'"âÆ¸q×׬i.,`Úž+Z¶3õèѣǎÅAâæLBÉܶ)SçnêÁ)ݹ—usí£wVŒþtå˜Ï¢=F!DHíÏ[îäèÝÚV¯¬ýÏ—!£<‡öT—ƒZ7±å)g¯éae]Ê̾œÕ½¸!lkÕêlßÈcˆ•m ·h&ƒÔþjÞ_Vf¦€€°˜Æ0˶´¶UTU»¸8ûy ïMÓ\¸pÁÍÍ !!@íÏ©!€ÊcÇ ÿïÿÆÌ;â½÷øææ¸¾¾:##uÆŒ±[¶8Ϙ¡c«¢ÿqçΆǬZó®€Ç€²mă€+@Kû”倗»3W)—È­1„dnž›Â0 ¤ÄNƒÇVCw„;'"15&qÉÂìáÝw+ž@™—TN ¡ûO÷å¬õúm˜5ÓѾ=î°Ü¾ÉÚz÷ï+‡ùAÝ/[kC[e½²B‡­L¬Œœ¡õQh:„àÚéÖÓ?7›;4L~ÁÆÃ×BçðTTo†¦U¤‡e_Îzwm\wEJAz7—[&÷+/ó±…ôàF ÷011V;xøä™â¢»öÖÖö6V=n[;;B€aÃ0H…Ƽ¼ëk×>>õ)›ÿ¶Â| ‘µÉ,F–•ŠŠÈÌ4 u)ânÑݘ˜˜¿òóCÆO²41âZ)~‡ 5„PræjÈÄÙ’’;-_éšC(dõ±ÀÉŒ\TBbÒÒbHirôâíc7O<¶:˜Ó;&%ölâñã!íÊDu¨ïi­¨2 °Rí8«çWz€ÂGÔþ ¾ŸER{½Ûü k³|¬^ÒÝD0‘ÉHMûç±¶º"^åm{¶©ùÙw[­l ©Q)Òã„ÂÂBGánnLU˜D€JM˜c<11ˆD< »S6º7R¤¼¥B*ÓÓÝpC[VÒåï<_¿?ÊÇfôSç7Ðzáw~CSuV–î­/“É0Æ Bs$ó/}k“–ºš[¼í¾kË|gÍRJ“£oÏc` ;n4FŽv­•µ0ÊZ¯Ÿeû"n¥ƒ€Õ++†ÁÑ+i…Ž/xå&ãàŠŠÒ;Ù6FÂ:Ôì k2°ÑbhÖ—ƒZÄ¥~oiÛîŽ_?¹×Åù¿ì73±t”Œ{.ÄGÀü~)¨¦¦F,K$ÍoKJJ†±¶¶F}gaß¼ySµ ¸ÿûùùõU¯õ\Š!ÐnqÇx™c°çË sø>’Ö‹|C[@¦z]sÛÅ…ÒÊs­Ì“(ü禦¦ë×;86*+*~þíÀ0¡Ûk9#Ü…ö6Ö=kY†a!ª&ƒPMm-#‘˜ƒ‘qã½C„8=~çü‘ûG?prƒûÕÀ´è*«c__Bb€‡f©ÒÎ@€ÂÍæÁþc¥·¶Ëü-‹¦ÅÌ-*pVïàÒ½‰ÛsA´|gTÑâØƒT„ŒüGÂ'‡+ü_hŸ.Òá,«¢{¡C?Ê?øM÷¸¶õnNçËðv0Æ©¿s 0rr´Oÿ_ Ÿ/ ˜¢)ÆÖNºŽÖ½‘¢ÀW–Îÿ<ÓÌ^`œ´úàs“læDŽ·ïc3¥®áõÏ>xaóy¾‘é½Ò#ÛÏ¿ê2ÚÍÖ̈¯âé*..ÖªC ‘H¸™}¥Fׯ_gYV)BÊW®\3fLŸôZ¥!¤ÁÌ ÄÍ{ ƒS+„›I&ŸÜ(Èûø/Á ß¤Ž´¡ØÜÚU*™ššñyL@@€ê·ã;¥e#Ã3©ß±»O¹s £ß3zŽ#¨ƒI¤Ð$c™¬­¾Ü_Žwz<üÞTq3$Qï6üò‰Àx2žî· Æ!IJ¸E"KË.ÔçVËÜ]ôü–ù.AÖÙ†wWWw@n~Q„¸€êꆢN3S;…Ò—Øû~jsçmW¡}1·Õó³j×Ê—-è«mVÏϪ]ûsÅ»úhÛ¤Eú¿£YØ»€“‹¡[+*¨e( {•1µlcŒ1˲Ü/‘Çãõ­a% m!f¦mÏœ¬,-Ú˜úÌ,߀wþºF2ÜØ`h*áÙØ×B“/Üί(˜éoïìfinj„úÄÁص©©‘M/‹»ví˲jö÷™LöçŸ>öØcFŠ8{)V)l" B`@«lYð36\¼V?2@H@¿5 ’æûMÄ¢Ñô1#CÃÜÜZ¡cÇŽ%2Ù‘ŸòmÌ’HqmÅT}¥ˆ›¿a"Ä ‘•¥%ãíÝtå’©íß—>(Ü÷ÉO€ûñ#&œ?õ{}]®ŸH÷@îGÅbÜÒ&›0J¾Ø(ZšëO¬Í*B(du\Qô´iy ØgÙ.N–Àe~Üò‹·+'Voœ—;-_$&/%vl8:AÝ®êx ]¼ÐǶ‘§Ç§+Õ|Í}´z!ÚJŲêÜN²j?w(:è¤RÉñ£Ù¿Li$ƨd<¸:RºÝ©ÁÄ¢]‡$É•+W*++ œœœÔžAû@Š0‘¶°õµ km0–Ö™˜Ü·*íϪ»™§ÆÌ ñ±5aûÆdaYY[ƒ¤Ø¤Ñ˜Ô8Ï—ÀïçËÆøâ1N K#~ïüuÕÕÕ%%%]ëªBlmm{\ÜÕ«W1Æ„SSÓªª*î ÛÁÁ¡±±±©©I&“]ºt©ëÜûEŠ2/] ;^)? £\ ”ªD)AæÈÀ¶±y¿¾+¹ ÛÖÚ"a›yŒfäîîîàà ™ÌØØØÒܬ­µÙÊÚ˜eñº&ý½+¸ àtˆa„x<ž[llÝ /Ô¿rúù ¾bá m UÇTþšËÈ ìW­Ò×*’±¤U";]®_õ\"·¦Ev<$æèѵ4O¤¥Åè…2@:$kûíÇ+.NæöÆàh–pú„›ý5c¼=ÚÚ$äæÍ›åå剤¹¹Y«IÔK)©¤µZkYp0*)@3˜Ûp{üv¯räü§>pžµHj‹0 LìÛLŠe¨Í\ÐhåÕRT_\^ýX=v³ãY;Ùz\@EEE[[›@ àñx‰D p>*©TjhhHQ~‹1–H$=–¢+W®pûÏB,,,†±µµ­ªª²³³300°²²jlläR^¼xñ‰'žP)2ÎÙÙ¹¼¼œ{'Gé£S“#¤X·¬wOJë[%PC¬í-Í$µw®=ÚÚPA`ÆøÆÀ7¾©ÀÌaêÔ©55uƤ¦©EF0´6ë-EœGQU‡8FL˜cõÅ ¿]aÍ Êxø÷®š72U«W=õ”Î`³,pV‘ȽÂÒnçï– ë IDAT€–¹¢éÓ§kH·²¨¡E"e1'E5Õ÷nÞº]__ϲ,÷[lhhès)bÛ¤÷s¥È‚i¨f|‰ƒßÝAIskC³ØÜÅÍNØ”tÛÁ…õ™àkÚóö" k•Þ/‘2|ÔP fVÍîÖ˜Ô]¾ãyÐÖ¸ÒØ£énÍÈûm^uåŽY5yaÃ-«‡M2&&zÂçóÍÌÌd2§7&&&ÆÆÆ|>Ÿk"cccŒ1ÇãÞ“ÑŸe³Nç×ܲ67s¬*ljµ€ RÔÞsvt¬qóÆצº0À›ìÄ«¯¯—ÉdJç¿……E?XE­­2lT2`Àªï²-æX`t×Ñ À\F’ÖßßeÔÜ1Î=÷ϵµI›Á؃“0áÔ«Ÿïq¯ÑIì”»ýjy w2®v)*»½«râOAcõÕ!åðÕÒÒÂM¶µµ™››7773 c`` ´ø|~_I‘D"©¬¬trrRg‰DÇ5ý»l ¢|-Fõ#î¦gnÐëß;÷e>(Þ¿ ˆÄÀ34˜Yšp·‰Èœ?íÖØ\ÄC¨¥¥':ùË= £Ô!î*lmm§þío÷#" %‰¡¡aˆ‡‡mA^Kõ &œmûáÛË»Ni´Šy”ÁÉ…Ûuƒ§“qÏN—´’ê›V®.Ny—êì=ðì¶,ÿ¶E?³OŠ\®Ëü·•µ8Z™åžp54©Tjddäããcooß÷V‘LÊÞPøû[ëXž à ¸;ÜfHIÏ’m4k,VÕ˯#%-„˜"°6uò'¯$/]µvjË/†î†Ó“7ã±ì–§—ÿä` éGZ›ô›£âÞinn677ohhàå»(Ê7>ÍÌÌX–mjj24ìù¢ µí”TW@ØØØ”——siº¤þÚ©zå8õ‘ofƒÚ7`zbµµ6±ÒÖö×cP×.>dkgV˜'32bšzh)M"åuqÿ7777776l˜L&cYÖÈȨPÏ=è0‘;è(”‡—Ci—”ºœÎcø¥W­¤#ª<žl ™jokÛ*áŠ0GKþoécjÌ3Ì­Ä‚ x<ž—————êtWÙ^XE2™êé~»Þ?=&€‘Ä›Ôöb…7ÀÀçÁ,À?ÿœ?uöןñ: vŸ)€E“†;Ž÷æš n‰õÕ!n€âñxR©”[JÀÍÖ¨Š÷¹±±‘[ÚÐK)R~¶µµ500ÀWWWÛØØÚÙÙUUU=0«èü…Œ ã'"„ÈWÏ£jA‡©"} è¶VY›Š}£ž‰úßFFÐØÄ¬¤YïU±ð†) =6r•V…òð’úIDoNÏ<ÀÖµÝóµ>þ¤ƒ™™© ÀD†Œ¦sC´dBÀ”Ç)±±±quuµ³³ëâ)»WRÄ‚À°ýt© Œ,y&æH`Ä ·™lÀs.¸ì;’ÿ·ÐÞ¼lD "ŸG¬Ä? f,tn9ÐlùøM¿³ÝÍ£W33ó–<9¢ò ŒŒŒX–U]c-“ÉLLL µµÕÈȨo·¥ „ÔÖÖ ‚ÊÊJ‰DÒÖÖæèèX[[û çŠBÇwpp¨ªªBª²ÃÅ»E {£'O-RVÚÖ:[E†ÜÔ‚>ý÷¸SU UkOõ^–ee2™L&Cˆ‘±úé ÆX&“qŸÿï£;ó}cŒÿ•\I‡<Ê$/望«÷ÄÙ|DÚŸÍÛXÒÐÌ: ЕJÀ| h$ruõööîö¾7#,bXÓ>u ªCpc—ƒzÉËxa>˜0ÆL޶M+Ûõ&hÊLkË’»cr ïõä*jmmåÚA"‘Bš›› ¥¥…³‡$ ÷&Iï¯%((èÒ¥KÜ#µL&+--åÊ•J¥b±X9x"„BBBZŠB÷îÝCÊ ÔÚGs¹« 3F=¹tOI[‰2ÃÎí¥ù£–V–áêâ²T»а”¸u•••<¾ ¼ºjä/ýžÀXV*•rŸïß¿¿>.^"‘¿÷ÿÞWmp¥\Q(C¿½À ¾Ú>憼D¦ÁnÃb¹š"‘¯ˆ¯Ã9½‘",à à ŸáµëPÅ]ó[?‡¬™?ëï/Ûöþz È+FŠø|,å³’¿¦rß>=k]>ü"n34÷hvGGG±XÜÖÖÖnÞ)Æ™ÖÖV…'R>ª8::öR²³³U…Mm˜e&88øXEªÏ탹2Ø‚<îA¥ÈÐÖ¯¥&ÇȈߵ1¤ú¯‰ ¿¾©oh(•J ôÙ)|tjíË}J¥¥¥¥|¾ÀÃcØ…ìË®®VVúíÁ²¬Lq‹BZššd W5§@R©”3¹Ìè˜E’jQ—šššŠÜ‹&RÖKB®®Â€¾n;µõj=ËÊÚ¯ ¹_nZwyö³Aa[ß9²0˶ LˆLZ}ÓÜB¶È)@úý¿–<3â¾À\+o‘ÅåÒakk‹êv·N‡„Baïw[ TÚF=Ð!èïe H±ãŠø(6_ =œ,²ó ûëÀ×BWcíVÍãV¨®ðkkkµ¾ Û•U¤íº8iii©©©3&àLF†»‹«µµÞ;ݱ˜•*žM!2–•±,’Hš››UuˆJåQ£´´T&“±À"Ä …½ÐÚÇViE2n­0,Ëxì ¿÷ãÞÑ·—fokûó×»V'®46sž3Ç÷r~Ã×ófÏð‘6ÀæË`ëëN=Ü?“ŽºV#N‡z0puë©SÕ¡®7Y «HnGñ/´¿YÄ@Ϭ"ñ 0ª¾þšÒÞRÕ!ÔQ–¸?ÍŒ1–6”••é%E¨£kNU0Æfæf§ÓϹ»¹öì]eD µ¥…{鬭­M*•´´¶° ª:$“É´®¥Å)C>Ÿ/“Éø|¾«›«H$Ò]‡z)E·Î_œ¾x–”­ôÙoŽï§«åí÷û×) bø|>…øØÚ¼¹þðóÿ¹H‘&fkzoæ¥B]«‘R‡úpgnUgन—žÇ®‘H$&¢%·NÿÃÉëØ†01†Z7­[Õõ¬›1Æ­m’â²r/w÷?V¼µfÍgŸ~jfjÊçóÖ¬}G"•`Œ¹Wù”(ý¼š:´=WÄ)!¥{£7gn‘‡mÕ+ GT466Þ½{—Ú¬¬¬ô]jÜË…aGwêï D™µ¿†•?ujÛ_µœ»qà`Þ`f0âÙ>½/ÅÆÆc\Y©eÑ“ƒƒCïýr}HKÑã~òi¢^5«ŸS‹emݿ盓³,!XF!„%˜`A@cÄ „#߱ϊD"Ý ’H$wïÞå¶Ñ´ŠÚ¤²bq‰ÏOKËžÇ1{áÅE˜à~ò fq^^ž·Ë:VОT‹n Š+S._ž¿cGžší•¹),.…‘˜ҙ©«¬¤ö*SWÓöxK\¸?î Â"Ä*û·jMIGö‡ŽÖÖÖ–––ñãÇwök¿JÑÀãu\¾KEˆÏx€>6ÅìììUˆ¼’¢à±!Ácõºô2 !|>ßÞÞÞtÊsÒ ó¸í`•c7W¨üíZ†QnŽÀmtabbÒÙji­ŒÛF:;:ô¾^|é¥_z©Ûdk·^Ñh· (Î0)'`gêÎŒèÅÛ·ÿ’¥É+ãR˜ˆÄÔÕ°9<.n¥ûέ‘.ž›øKx\ w.BVI»Å¶x{.ÌÞ˜Ú¡nY›oÏ-ßøÔ‰Øí±›'¦Å„t–’òÐagg7wîÜ~Ô(C\Šz&0z™œ††††††½ÙÒ|È0`Å1Žˆšï àî{ðlæêà`(Ë8‘‹ñì‰Á01¥Bë¹#ðÁƒÏf®n¯¤F•:ƒaä1j]ä¯sež=^îÁî^¹ùE¥$ØY[J Ô(C¦×µhO*5JMݹÌ3LJlôÞRm]CJ“W†……‡Ç¥0Lߕ̹UÈ-*Ñý¶Ó¹J…¬ÞµÜc&oGTxø¦L¢ªOq\¹E%]¦¤}z× èÂ9ÊÀÀï×Ü=Gº­_÷á’%KT®_÷a“F„\Ú÷êÿ»ÔqÇLŒÃ_ù÷ Ÿm0£–aЪýóü³÷½š1ª§$ª;°qaèú|—½¶ð¡‘·¤=z´³oé:Ê ’¢ÿ¹tòbLyÂüo3‚ôU£ÐÀ°°OÀå«¡»Å Íÿþà|¹„è'Ÿ2óåoWø D®mÛ´Íï»q¹Á¤o[5ˆx\\ ø,Û¹%4#zñö\u&\3Hygñ¼ D¤sÊ R# eèÞA§Ô!8y±á¿Gzò,'?~â~YKχàÊýÛ—ÌŽ_:gï5¹S¨êèšø¥sâ—ÎY·dëMœµïÕÿw‰IýáÕmymëÒQºö.™¿tκ%kÎVÅ‘­y•û·/™½nÉÖ¼A²í|YQ>ÌžÈ×\¼íe‰ËDp0vsV{_2)±g'¦î\æƒqÞŽ¨i‰·k¹r·'ÊÃî)ħ&F0)q+“K¹ 嫪Ngùƒ"ÜäÄN‹Vºæ43á¶:zô(WÕðB\%߸A£\ʃU#Ú”A-Eœ}÷Þn^¥,éHÁm±³±òOgãžMR–þÍéÑ|œøjùþß«!äÒéÝÃ_þvÂw¿oø~¥/<ïßuíÊ»'.Ÿªü–³À¾û=ñß/V~ó{•|¸<üÃ7ðÜ¿$n¦u¡jÓ=LJ\xxxÔŽÜÙÓbB@#Þ6ä)£»Ê#58»{qŸ·Ìwvv÷y VBJ3Näb11 xbƹ'24#Ãv‘?GHLZbf˜¼Qáaa›º aÇU@Ý#St®ˆ20ôd®Hó-Ô.ÞýL;rŠóÎq<>ú‰´#§ÝYÇ•ÏñJKëMûì}¯f Ö> ~~¹(eGÊνχDºÈãmçvðkéf¹¹º‹TÕH{,T-ùkÂE:/š{P›ž)Ê/ßU´8ö ý=œ:D¡ œ¨Û›4å s¥é¾l¡à¶8íÈ©ÎL%}Ýtš|8çºæqç ñ8íNî©'m¸½ý`ï$çùqË|pîöÄäRÒu¼í.°³0á"ŽwÿƒtN¡:Dyt¥ˆS#µ:ê¤X()þñ]üñ]÷w°jäõlz†[¤GˆrÑÁú×>€˜>!4/~Ðy‚!gß±…?¾67îÕ ˜|ø‡=3Ô• 5›aò¸.‘[#pÞŽ¨éÓ§w?[£wbJ\xx\Š2L8q\¹Ê¹Ÿ.òG(du$N›6}úôð¸e¤sµL² xõÆÙ “;mg¾ˆ[æ°Y­žšåÒ_ã Ô!:WD QN5 øçßï…N¶Cåt:Fæ4†S Úú6ˆÿjz›ê7ý¢·DšnºGs;Ô‡. 8åQ`íÖ+Ÿ®£ªItêˆÒOô×+®iGN9MR¤y’î‘J¡ 6……¥0Ú-ýºj_ùf[‡&;}™ú¡ ¿6þ‘ »7žn–Ó P(Ý*ͦ°0}½¸LÞŽÅߊ£ «há3Þ}ëžjä]¥­O¡ r>û.Iw§\LZZŒŠ™2À†ˆªáUš¼2jG<›¹:˜¾Å6¤¤H_ž^êùÇwV† nÊÔšæµUÏÓ P3ý19ÔþΙb*åWÊ©”ê²áè„ôéë¸m¥âÂSttô9ÏŠØÞÕ[ê ¹Ö±ÕÁe{Û(|}ô~xȤÈs¤[ÁmñÓK=¹ÅÜÙ9šiÖ¯ûh0=4+åAU€I‰ ¹©éPÏ‹ ¥{£cS|´¾9„dnV­£ñ¦vÖæð¸P&ÈÛ±x³»ªdR«ˆÓnW÷?ŸÒݹ×O«Ô9Ê7·(”Áƒ¾»|éBÖ/ÛóÆgÙέ‘.$sSx\ŠÂ–uö `Ðbô„Û:¸ûä[„(þÂØgy·lA[jÑòÜ¢†ÒäèÅÛsUÞÔf˜”¸8•U*•¤«>)ê1E·rî”—Tc¬å2·0! =G¡ zÍé`¯drzÅY Á#ðÁƒ_TÁήî"`òRâÂSÔ¼v= k—B!1[ù;»{uÜ„Ô܆òJR%)Jݾ¼¤º‹ õÍ—/ä]¾çäj>wí? ¥_é¹¢æ Ãörwæ¶’ÚÑ‹wä1LJÜô½×땾ƒ3°ã6‰tÇ^*EGÎîæ><.š¤ùíåÜ3܇¨çWÒΣPF0öQ¡¥b¬¸DnM‹lO¨ÓÍv{ §CÃhQ¨©>wœoÀð}²­IZ™Wx¹¹µQ-©‰ù¬é‘‡¸{:íŽ!äzjܹ*oí‰^Þ1à ‚ŠUdµþL ·ôÈãÉ5±Av¨_Ë:U¼û€âœ6xr DHEöW» ßì‰*èTî­#gJ†I¿ukñpŸÁøû©=»áû«!K>Þa¥M0º»üöd„\Oý¡dÒšJ]לlGÈÆEb˜›¸c8B„\?²®ëâ&Íýx±GuÚÿ>?R8Aïû§oçŠ øùå>·ç¥ÄMOQÞäš‘"&† D7”·#*|{ìÚОÛìã#Â8I‰ŽN ’0d¥ˆ ›tà–¾ÁÈMMÌ\Ü@Ú"¿íœä+¿/œÈ;sö$ˆüD³"'«œŸ¯E'2N Lsf$®€mÙY¡ýYˆÒ.Q>·ë¯ÀþÓ¹Gà}¯ýïó_*ÀSÕp)ÜûÚþK à è·æû+ŸšHߊÜÔóW)ü^U1¸ÚØrƒ£cÐò—53á”IiÒqöœj%÷þ§zº!îX®–ËL+™ôò›?ü’“–6Ö;Ìj­_"¤"ÿ*<ù\XGú"—arÚÛ!ÛnVÉ©C®Ï&<Þ“2níÚücºJfLxüvü—\Ϫ|îæ!ÀÖÉz²»cŸÏ!—È-ÇÜ5÷éÑ„[eŠsO¨,¿îeÖž·ºöFGíÈ£bð`aú5÷> F®É™³'E~"‘Ÿ(÷Fî¡äÓºž&ޘѮ ªÅ»£ƒƒƒ)2ƒƒƒ£v‹UÕ&0888j÷-ìHŽÜ¦iiÔžs‚NQ’ªË« $kîì[ªØsÒË á̾}9*‘éûrWÅ,´ÇøÞïoúf­yÞ NýšVK÷¿ÿ#zyǪ—'0—¶üt¶!ÿðÄU"ŒUU§³ü¹sï`˜ô}q/U)Š«g‚ÿŒ ß®Nøš«Lλ ÛЧïË \³1&R£\M“è”Ó3Þ¾B€âÌüêAøó¹WU,WåŽM¡zQgnÂ’·6¼Üµ9‚xâ3UŸ¿þÓÙ Õ;}_NણA¥U‹ðd4ŠëLÒ²s÷ÏÀ8âbÒÒÒÒb´š/Êxó\2µƒGåtH)`[ÓÒ”‰{Pœê·í¹mtAÈ%r+—óÌšùt9åá°Š”ÁÈ`éG'O^løÛ ]ÏmjnÐâˆûõ§ßT¡Ü¹ £ÎH^¿ö÷ìl7ñî¨ÀLŠƒœÄžù{öNØ¿[ºÈMÕÆŠÚ-Þ¹È #AnõˆwGÍ琢(.¸95´ËÒåÒ¤022»xR`Ò÷¯O²ê­ùrçÌ­Lpµñv²¨(/¯%£,•Þ¼y£À O˜÷f˜%äØT—ÖX’Šü«Oòö€@>“sõZíK Ç‘fþªæÈðùßÎ…×ö_ºsfÓ²SÝ‚¶Nvj.Çy£t²üÒJž|n1BÈk´ç™’;7oVM|''Ÿà Ú¼Gâ¾”Û‹ ä®WdòO\•÷ý%_¥;iÞ¼Q9½|rÛ¿>».\òæ(:ÞQ]º#751»}+Ÿûì!ìð"‘R{t!ŽÈm;¹€›‡7¨” ɵ}Ï€ñ¼b7ÎNšóiÃ`»££AsdÝk›ãߨôy¦ïsz›ŽÅÉ“}%Ÿ5¤P9Ýßf¼xô FÞ­ƒ®Ÿßv<00˜a‹°Ý&ͼõlp0Æó"#“W¶ìøE k£æ3̨5k#Û}íYdoK~6øsνó¦v_Pè¿»Û !ÇÀ°Ig~L?Å=€O\7·òµý¼¿ùU?ŒNãæÜÊ×öÿ¸,E@1 IDATso™ äøÜó7?ÿ¥}îG#å£4BþáÏ•ÿ/îõ{œÈuá¹A žIø+“rLßWâ(¦$}_¨-!ÓR.B 2KÔAŒ}CìT\½V;~ÐM!Ÿ—W'¼¬vä­ ÜGùòkPYŠÝùŸ •]|P+N«äߞ̇Žx”AŠ®ÅüYÚãJõ F«ßxßÍÍUs1÷â¿&Mœâ<Ìjˆ½ßºô£“t;TÊ ääÅG£[œŽ§ô+Ì`«PQ|½•VZ …Ò¯Pí¡ ƒk·…¢‚Š“‡å1€Ut“&Êíª“‡³¦Ì ò{ÿP( •¢>Cw×§CnnòxWZWÐýúÓo¶n'g½¼|í? eðpøðaÚ”¡`M™|òp–ƒ­TV‹oßêࣻSüpßN™9¤vq×wM…2œ¼xRß÷Š-ZDÛòÐK‘»§#§1JAêL±†žw®¦¦†ÞŽ”ÁFæŠøÌ­° P)ê­€ÒùÖ›•{šÜ*MO¹s¿ªÉØ‚õ~Ì6(TdnnFo eˆ¡u0…JÑ  ©±¹ìnmEQK[ 4VóîÖZZ=âGo …By°0Èu•æ\.9µ¿¨­¥}C´s‡‹è@¡tuvQ¨UÔg|ýéº2¦¡¡ÙˆoÕÈ» fìh@¸ñ>½(”® ïQ¨õo¬}æƒ7~7äY´ëÆØ|ð†&¤>7õpN=·Ž…ÿÌp? .ePö”øüžŒb D8~áX·NŠ‹/$‰Ý´% D|!é\±â¸0tÁ8·®#Àvš•^iúíÖÍÜ<-6‹ A*GÎNìmôUýH Ô è¼­¶'î*zž|å¾Úû˜JÑfó'_;îçå"ˆXÙy 4n²±_?•=õ„Fr–7;¯=r¹æmÚÅÜ•]¯³äˆúÜÔ âð±®Pr!é\¸C E“úG g.X`ѾKzÏ4À=tÁX7„ˆø|Ò¹ ]ŸŽÛ¸çÜyËŒÝ<ÀÚ£F'õ’œÎNTlá/Þ5'!ƒ*•"ÐÈÆ¿°w´>¥*äþ‘ä[;Ÿ)&2ó)ì6ÔiríêuBy›f$®H蘾‹¯Ô‡¸ú:°´0ç† ¿ã”ÏΊÏ%RÄçÍ(F@„¡ÏsS>e»¿]NN=5ªúÏrƒ¨¨£+F¨( Æ/äÄþuׯ[†.pÕ)SW7w©¿‘zøz=Bœ‘Ä)œ2«’=%œ\qÉêÀRÙÅœ•F„B÷¾¸ÆÇ+b˜”Øh÷][滨¨g0)C‰G$¦Æ„ îàA˜½q#ÄÅ¥€Ï²[B3¢oÏÑò]["]8ß@éÞèÅ;òŒ#6[ Yò³z"xâÝQs>Ïa:ØI ÁÑûÔž)“¡+CªCð3Õ¼?Íaµæ7yÄÍÀãS÷Ü1çÓ†Q¤t¼a†ºmvvu›>¹ê^‘‘±ß&Íòœ1Rê¡S#uùJ¼[ëc¯›; T|.)õF½2’´ÛØ…ã…„¨:‚êoÉ(FÂÐ B…¨8ãÈz•LŠ‹!tA¨¡úë7Jè½ÞFQ}üq¡c©zꊊ!ô¹çÆéj$5Ô×¹»¹BCnF±pæÂ3FÕåäÖË#;¨gEH}nÆuËñ Ž·¼ž‘[O!õ¹9EÂÐ Ý OÖäôt®hvbb“·cñ欎7¶ŒÝœÙi>%öìDîxÞŽ¨i‰·k¹r·'î-%²6/Þž+Z–¸Lc;f«/âÝñ˲³²²²·ÁŠy¼–„°%+++++;;~<„Ægo›×­CO|ç–zÜæŒ„xHÈÎÎÊÊÊúm |ºSv&yw¼ÃAÊ£!EŸ|ô¥«Ðyò” 5÷ ÅÅ¥>£†3LJܦLm7ž³»WÇGl\ÌÇ8bã–ùÎ\šÜ¢B2Ï/÷`w/È/*ƒà˜´´´´˜˜Dgƒ§PñP(ÖŠLä£D`<$¨KUh¼ÒäqóðVñˆ¨D‘¦<œ:ÍäJºxûõƒ÷þé1\8aÒ¸ªÊs ó;…Åή¶nî.±_x£®î]Õ@®:oÕ¼M÷µæ÷¡Z¿µæ·ìxîv-.¸v : Æä6î¹c¹Å ÅçR-f†kiœO…ºúzpb °°°¬«o°ÐËXo_¤À¸®Ê¹"E­G2œçÇ-;±x{l´û®¨öË/MŽ^¼=¯G‘æ&%.<†Ó§ž¾ú^\píÚ>õ bn‹vnK f˜®çq5F MÚg…;‹XFy(¥¨»-|øÞ§‚:Ñ„‰þ÷*î[ZZÞ¾;ÜÇuÄHO@Ðÿõíâ6å¾ÊHˆ:#^¤ôGv‘B¢ðñõI犴kŒ……%€ªYZh;;NéY¸ ápF®[xût‘g¹{î¹qÄIK7÷sâ’±nn:i¡k½¸ÈÒÂOí@ïg$zX !ô ˆÜ²SóGŸßÛ•âÝQ+`[vVhŸeQ† ƒî£÷?ã×ùNŸïìç"ssóq©ÐÓÑMèÚ¹Sn€ O€x¹‡:tjd²ÖçóGnÈ]m%âb„Zbaa uõ ʡСbq‰<™¥ÐMeL¬«oP9®¸ë³ÈoÆÂQõGöìIJJâü¨¹ç’.ôÒ#ê:v<œKRfÛé“J¨°øpRÒ¹:nõB¢Q–9Gö$‰¡Ot½|¯¡Õ»–‹rssåJŠrÀËÝYoU }JÄ0);÷–)~#™›ÂÂÂÂ6eêÝÎn“fÞÒÍw뎸&W€Üû'¾s‹þB†’U¤?ØÌÜ÷™¶À?ëÔ]—úsáÌÅÃ<†»¢Zº-Ú95!0êÎï;…Æoû÷GmšÅcCo¤&%Õsn‹Q3åÏÝ¢PÿâÃ×sŽì¹ÎÍûÍ­ÿ5#cO1†Îðë`üg$åÔ#B„ãǺÒ{½¿l#·q ŽS;òÜsòžV®ºîb¶Ö¯4Œ'íY! ¿Ïùi¯Ï¸ÁÑ>.‘[6M‹U(ÓÆÙ)q)±ÓòE"`òRb§Á†£tÉÇ%rkbQXÜŽ¨é;ãÏêâ÷Í@ûËFí^µyÛ²B¹GÆmÇç$xèg!…Æo;ülðçxÔšµ‘É+ak6õÒépŸ @@ñÞ W¹ßný‰×ä0Ö%ûL1bPC]Ó³¯û:»8˜˜˜ æ>XúÑÉïÞ›Ò‡û+sÓ×(½aíÖ+Ÿ®Ã}Ö% øáÇ-Z4væ¦Û¡R«èAÂkòš<,ëÔ]¾€WSÝ0çÕ¦¦Fƒ\‡ô")©Ã†` ÒMY(ý>¬Ó½(TŠô£ìNó%¸Ë0Œ•GíãÓ]œ]Í͇Ôj2µGsbœBéT‡(TŠô†\UQïì×$ôðó˜?Ç£L¡<‚ÔÔÔÐ=Å©=–§bÄZ{Ö,^úíW åQ¶ä¬­­ét•¢ƒƒß½Ê‡×VR¢PúŒ‡t®è/ <ºRDEˆBé ƒ6e`hP( …J…B¡Pi†Ô ºu+?×+ý†­kè@¡t}¯ˆB¥HoÚƒ´ê\|Т5 xn£@wd賞êu@q½ò`¨qX[[ÓF R¤‹ÞyŽä"™e0ˆ¶ÖÖ¶Ö «ö›)áÍ£f!Þ5çðÌßd ÅΊS½\ôU@qÍ|(*EùS*!õuµ÷Š¥×Béus\kdj^kàÖ0ö53kËîžnÄgç09 ÆáA qšÅA%š@}nj’J¤pUÉq…îsè×’=jÈ•Ár·Ç·ê…w L®M gr;®’ú©0nºyG6ry_×ÌG~¼c°peLñœœz‹Q3Â-nìÉ(VtV×_+FˆÆ•§ f†à²…²ª²÷n|¸ñþ7N5YNÆ­¦¦F<ÚJ -7$6&&ÖÜ»×Áš-kàð™ŽÛÃg$GíÞ˜ÑéÁŒ„À„ ñî¨ÀÀ@îˆxwT``pppBF×Yu@k@q•o‹‹!tÁŒQ–P×E¤p­ÈK.œ+FHº`a¨Pí©\-0¹"E}±¸ A\\u×op ÄÅ H¡c}†¤QÔGÅÕómÁ¹ܮ×Z° Ôòúá$±Û‚¡îíñyµÅíµpáÂ… GÕ·ç£+=Þ³€ â0}úôéÓ§‡…­L.¥A„)˜m«øJ`ÁÛ¿4ù#aƒ!a°¬¬ä¿óNW'gìüÔ{Ù¢ÐE˼; ÏHXqkíïYYY p8¹ËƒÊ öÙÙñ¡ ÞxæïÙY¿­¹µc·¸«³Ôé" ¸ß‡çÍõû÷ß|óí·=Øz2•Û\t[LcÔfw»Ý'OšÉ24-±oŒ4AIFÑûgƒ©þ$]þÏÌŸËþ¯ì™nwþƒiúù_üíñ?=ñË?½üÚ7Uÿù®»Bë×§K¢SN݉;ï#Ow Íô]ºtOR¬ÄžH¨.~íI…âÉ×Ο¿2—îUÉÓèé§¿×°Žg˜¹dzþyvÙó~Kž>³6ÕlæyºõÕWtýZ ¼AÕ°Žç}ÿý”,u‘Bñì>¯ýç›o¾õ–¸/—õdþó‡Ï3·yï3O?­’ê¸xGl~–m7®2LµÎÚm_ŒŒ–§SazPø+ƒ3Ȇææèˆ*“eˆˆçƒNC³Z­ŽfLô…N§!:Dãùé¡“‹eYÖej Ǥ°¶ÈHnðcîcdUÁH}®(‡’¤ ÑNú§o¿¤×ë­V«L&c¦ÒòS"*§ôIDï¼£xGøŠ#Ï•j¥ÿ‚4ýâË[®P|?R““ ç çææ®}DòÍ{7É×É.|˜»æ+Èjc˜ÿ?tµ ʼn’®giYxΖþð‘ßÑÆÔq¤iT$ùÛ Ó`v±Ëx/ µšÍ™Ãª ÿ?β.Ó”å¤Cfì´ùíú–É®£G»-6›eT5¬­Ê`™j†ñuÚ|òî¦I“Í4Ô8ѧŒ®|’ã±Ófñêú”½'¨Å4FmBI9ÏOuÚ|Ô60NPžŸþ"£¢•ûæ7¿944ô /455-...»üµcváÔ™à°Î9©¶yëÎðÉs°'rV-é“ âW™¾*M¡xÊO· âÂlP\ÆÄ ÈÃSP×®Ç-–¦˜|SŒˆæææ„g6ÕÈæ«‹çÒîN) ‹V©P<ÙzËÂW—·pÎ-2ËxÏ«uÖ Ýô`³ÙÅŽ™†E+œ ËÚ•Ë×Änÿëÿ›ðd–« _~­P(võP䪄¤Oæ¶*€;Š¢½»žãÆLÆèÕÓƒƒÓ<Ï0Õª&9˺¦¼DÞ)ËÊ›TÕ«÷q]¿ct>ÃÜ"š Ä/«èÐpÉeոģ¢œû¹/k]2²Iùdn«¨ÜîAÇTë†OʆZLv}«ˆˆ4–ñ>†!¢jÕh6›[]DœÆ½faµ„×o׫íÄqš“½ŠÔ¹¥5wOvÚìúV§ù©û;¿Sÿ£‹e‰ˆ#y·Y[Íxñ P¸Á´áï^ø—ÿüãnÑkÿ6JDIÛß?Ìáb6ÈÄó/ðúK£ì ¤¦ßzîááh&ÑrSGï½÷^GGÇùŒ{ÐåJ"Q¥í.H%Û¹¢cÇŽá ´¢èGÒ/ð÷¦çðHYV9ÔÑÑ#ÒŠ¢_ éøAÛ²Ë î¸ôr–—¹¢_ þ¦ãmë×ß'ü!¢çŸÿaô¿Ñç;~жìÈ 0*Ê‘@ûöí#"­V«Õj]®w…ÿŽŽŽщ'„e ©èƒ£ÏHäN$<5vÚý,q\}÷Ña]5~#}­R«Õn·;͹ý^€$FE‚Ë—®êõÏÑh<"Ò럽|éjŠ×];¦×‡oCzí˜~—èqäár!„FBi“IµG×sê 9Øs@È%G²DHÇùÞ{;Ï?‰˜øGÓk%Uߤhï–»ì.Çh»RW½‚F– «b’¬)†©ÖZLcÉ3&ãZšU®«ÕÌ!€‚Éã ºž¹†„Q‘øOú×nÞºówÞNɉÇUt‹¦–Ðu9göœJ<vmöÓX(%T}§ ÅL˯*­¹«žóÙ,Î Ÿe#K\x¤¨Š‰kmI¿~žŸ48çڼS.–dIò•¤¨¥™ ÌG^^'«F;rEù[õáÍ{ær™+"ªùîÞ®aïwk‘êÀaêÙ®žK?ªQ8³çTä²§Q¡P<ùÚ‘×ÄÖ“v¾'ÃÅòŠaªµú6–õ  Të¬ ç·ëÕjuV×O /t™[[Í®hUŒÐÚ"'_tî'ÍúFÙk&KK‹Z­n5»¸ú®£ÃÚj†Iµ’„mEMZZZÍ®ðäH8‡0Wú”˰¯(+¿üÍûž$¢Ô¿<{1í^ñ 7#Ëð|è¸èåˆ"œ’.÷ŽØýløžªvs&dnŸ¹½äX¥Ì$¦rcïtÄ}‹ˆnž¾1¯ªmª”èm0Wˆ"Xf\ýè%Áô 0^18ƒáAEüÀez02 œ¦ÈMá\,˲.SËPdm‰ëIR(® ïÒ•,Ý–x?NCúAÏG3]–®zŽsŒ¥Z¯Çó‹.—=Û³¥ÊsCœ:<±Îžfn±^M>BúÖÆ'þpcòÊ7.W|÷Ý’ýfÃ\ Š ¢ Ž#¶:½V¡j’ù&=óR}k>¿ñî= LÅÎúÐùÏŪ¢ÝP»›/ΰ¥!Ù_¦ìñGË\®/ªÝpî ˆ"I¿=%Y(. ‰ºÛ‘Þ#¿d³è÷Ÿ…÷—ÑŽû+¼ŸÝÂw,@nîÂ!²-÷ŽØý~Ò·Ú£¯žôµZ©õ‘ó|輟NúÉéð×tQ]¾#Å’#ÖÙÓ CD<_þœa˺ýÁG‹͆³}ñå·¤;0Â=èQ‚Ò*Ï9ÆuÕ Å.”˜ôÌK.‹nž¾1¯Ú~HQ&|ù¥÷Ò§oïØôpUì7>²_ôÌ—ÞÙ³Ûjû¶–­ÿììÄçöo•è7r t‡@úJ«PÜ;b«Ó 9$Z•äÎÑñüâ…ËôH]슃{ë*èrèK>:…VÑþ%½l_¸ñ†§¬u÷ÝD´C]Kïúq17 Š@êJ§P<:K—Φú3[E}SÊš:¶‹/Âf*7öul\ÏVî7Ö —*0[k_<Ž{m対è2LÅ~ãvÉ^Ì P ÿ¡òQ(YA¡8HS¿õ܆²O…st(ŒŠ 8=P¸l 8G¡8`Tˆ"XKp:( œ €”²š+Bn¢Š×ߢН~-VæŠ %œsD~¯E%mmНb‹«tšÂKZ­ÆAD,c­Š#oFˆ¢R0I«P\|7¹À¨1Õh)úøcîãd [ŒŽ™øM.ÙgáÝDÐih޶ÄòA§Áà¼Î}œas9¤O#Ì¢"¤](.ÞI2;ºääKÙž¢€Ü;dr±¬Æ2~ÒÜ$^8Ù>Ç×FÌ{&}䳑6H!E†ûiÒsE€(‚5V(n 6š¬)<Í8/0CW/ÛDá—GžOºÏáÖ¤'ÈóÞ›Ÿe…n$aùðmûˆ" ñ‡»eܢḄOR–u™[Í®Háwf’—|§ŽÀ”ëWöMŒ;ºê9–u™Œ£«Q#wÞoù}V4j8Ž|ëä“wYºê9nÌ1:O×¾¶F¾q²æv»qQi(ڻŵª›dòðå n·{b¢/ãâ¡hU$M¡ørë Å#y?É÷9zžpjhjLÞ¤RhõmD¾IÏèÔXä4&¬Ja®E¶ ÅSmTÙØ^¹0Ÿ1ÑF¢Å·XšbrEc¹\.áEcËúívWÚݬÇC˜+Dˆ† Ò._fLG>»¾Õ!ëÖp\ì_¿QE{w=ṋ̀SÑÅRí³eõÇqõMª*a3]õ¢/a5r pŸr(/ºÒ)‡µ¥ßzîáaáq&…⯾þÖÁþá;r€Û¡@ºtÉêݦ—Q«)‡¹"L/A0Wˆ"@$…‰@@‘aâE€(@@a®E% …âëtˆtñŶ˜´ñ/Õþð 7‡/M.D_:><{q¹çùÐñá³ýÖsýÖs?É`ùbÁ\ Š…âá±ûÃG9¸9 2·ÏÎÜN6)3†a*ö¢Î®Ú ”IDAT9dxøM9Ý[¶ßë€(‚µ6`B¡øªŠó|pÔ1m<ʶ{‰ç/\.{¶gK•ç†8ux>4b=ÍÜ:b½šfÄÃó‹|R<ºá>[¢¤…âù+÷ŽØêôZ…ªINä ¯2 Ÿßx÷žŠ¦bg}èüçqƒžvCín¾ü9Ö†41óùwicó·¤û­‡¹"@ Åó[(. ‰ºÛ‰ñ–±ßRÜ_ND;î¯ð~v+Û•ô‡D˜+D P<Ï…âÞ»ßo×·ªÕj½Ý·Œ³$tÞO§]Ÿô[ϽèºEþPªsqÉ/Rü `pgnéS´wË]v—c´]©«~ûb§¶ˆ(³ÏM29‘ø“=M¡xüú— Å-¦1_à:QÞêê’ï³pžÐårM ј¼é¨B+k³™Æ&=£ucm} “É Ï9ÆuÕ Å®È˜ôÌkµ™ý{nž¾1¯Ú~HQ&|ù¥÷Ò§oïØôpUì7>²?ÉèaÌ`T´6 Pdx8Õ2R€¹"(Ч Å‹…â M9Š#º£"@ÀsE€(€"à 7@¢QE„¹"@@‘a®E€(È?ÜU¢¢¥vÑg4–ñ>%#Á×-]rŒÚÒßYŠH­V»Ýî4 à €QH®P8jì´ù&=óZmÞý"Ã\`Tawx¡¸wÄV§FÎÑ Š@ŠîàBñè,Q\ôªšêSLeÀù)‡Bñ¢C¡8HS¿õ܆²O…st(ŒŠ 8-€(D¢Š¿Wˆ"(2ÌAaàW\%áù—?ÀADÓë/=Žƒø EPdø½" üªæŠ %ä ŠQ€(€"Â sEP¸‚NÒx~z¨ÅäbY"â¸úî£ÃºjFxrŒÚ²m·ƒ¼¼GWf_tÝ""ž/ΰ¥!Å;Âó¡khgšâ׳ƒn%,/^ƒ°pú-F^2{ša–Ý=D¤ø :6µ Œ÷*†çƒ£Æ¡éá^d|é½ô³Ëÿгå¾d‘ö‡Œ¸Åx>4òî¢æû5U¦læe˜ŠýÆŠÈÂô¬á¡†áùÐñáô›«x¶ R‡tÒå±ùY¶m <ôa˜jµoé0ˆçƒNC³¸æŽç§››ÕƒÓ±'››§§³*܃Ôq²xá2=±wC|Ížfn±^½Èó<:><;é½ô“áÙ‹¹ðϯö[Ï¿"¼ƒ¡ãó¸…è&Ä/æç Å\ ŠJücnzjŒ8NÓ¸Ü È;ÔióÉ»,]r3 y‰ˆa”}n·{ÜÑUÏqc¦X½7˺LS}8³·¿¸Y¶¾"nàÒn¨Ýw*,t–j_5Ö¦—0LE»aãoœô.Šžù¬â•ž-ôn,iÄ›x­\²¹¥B¿>üIÎYˆ¹"( œ »‹¨N¦ÕùfA^QýTª’ÕùDËsœfgø ª¢u÷Ý¢÷+tÜzU˜¼!†Nþ„b³8í†Úëìd]}ä4]Åsêr¢[+Üœ Ddl˺̭.bYò®UGæ™ü,K,KŽPž”m¸wñ¿BÔP™é ¦b¿±rŠ)%†©h7ЈõêEÖ¹ü\’x‘¼E€(‚•`ec¹\®)o¯R™fÁM29q>øj:žŽZl>’w;ôNÓŽf¾Þ£²·ÑÏÞûâÁý±é¢• -Îß[ÖœãþTì7>²?.œVº;¸èçiÉR´w×sܘÉè †?Q¦/7`˜jU“œe]ŽÑyÑÓ×>"ª“Uá(æ×}Ší‡]|åð'ýÖsÂ| ÃT´?AÙ^GÀó¡ãÃgû­çúß=²7‹`Ë`s¡_‹v/Û r0**ùº«uÃ'eC-&»¾ÕNDDËxÃ$|žT묖@³Ù®WÛ‰ã„ᑲw Íev™Zfärbý.S ýÔýÒ¼¼M[kŸyÕ(< _~M¢K±S7 -æAÂæ–' Š û9FÙ71ѷܓʾ wüBŒ²ÏðÑ_-Y¢RR«Õ©þÊívãø@a`®E% yR€‚ÂÀe €(D@R¸ Š È0Wˆ"@ Š ˆ0Wˆ"ˆ+Ákn67£‹•à­v[šÐÂ'^³x[ùÛîÚ~®Ìö[Ï-{“7¡ø.é±Ðåz§¸üÁ\~ÅUŸq…/÷ŽØý,Ë.{;p˹P| ´ FE I.çùà¨c¦ËÒUÏqcŽÑ †>Ë"ó_(€(‚¢~̼PÜ;b«Ókª&9‘oÒ37aY«V(¾ÂÚïüÁ\ Š ÓÄŠŠÓL n4S%«‹_>U¡¸0$ênWD üÈ¢UW(žf±g{Ê ± sEP˜+º#~ Xy¡¸wÄî÷S¤‰ˆ|“ž V‹î½´².'Ô~ ŠÖBЇg‰ãºj&ü¥±Óæ›ôÌ#‹Ò¿G¹Šç£ö`Íÿfe*5³¬ß7 ²²ÔK¶|*óÓG —L%7ÔÜPAÌ}ßd‡a–s~Ü™a˜6‘ÎóÑ#‡;çžõÎyÝ÷ûž{Þè¥Ò³ ¤\kaè¯Æ¬ùzÛ P( ¥÷AaHx°i[Yƒó43'¿…sÆÓN¡P(J_(PZysˆ³ùSo~¾ä× ìA í …B¡ô…aŒYù)©n¦ÝA¡P(”>ƒ fN~@¡ÝA¡P(”¾³¦ü#þÅWßji“о P(£H¿põó}GŽr7ïÿÙöÃ*qÙ¨ýC¡P(FqíâÕ•kçŽ0çÜ=ðû'¥ƒÃÜÌû8Û ç¯´bíswÄÄ1 2¢ÐÊ´ô-R+¿'Bìú¬¥ª D%ˆB¡Pº!¤7fQ=Ù^¼puóGó\¸Úuf^ìÞñãG(B•é×,Ï<äbZ_z~Ñ`b0¿ÏZ*W Ü1ÇiüæªF{S)‰©”cïÆðlôä²÷b)½)Ê@¥¾¼ø~IuS«˜ Ž©©© ßuøPÇ‘£C>þø„ì}Â}Í0!×.¥ÕˈÍ»úâ’Í3ë¡Âa|qõí¿JÛ°ß1(ÀË!¸žš^+Å6>ÃlëËËj›€cêæ5x˜»5Žó=&ˆ¬´°°¸²®¥MÊá™Ú;9û ví´ÎWÓ2TÓ³R¥µ!…­RÅYâ¦ìSç |\˜¹Š|u¹¥¢—2+âŽý˜©ËÏÌ(jf¸6ácüØ~Ðî…³1áµ>h°”[¹˜0¶À³°äX:²_!„´©"½D)ÊÀ¤®ä~‹“àýY!ÞŽæ,«©m¼÷WÎÎ+Õ’ªüµ ßTb¹äÝŽûàY3æÞognŽ`ßZSõÃÏ©Y6^qË¢†ò¹¹÷s?KÊö˜OÖ•ko¯;œsÿÈÅ»ãFMö³GmM)§ÒöæJC«;Á–ݹ~{äøo½èîÎ7ikn¾~ý¯oÏÜ úö‡ûÅàÉ•³–8šˆþšÿéŸ wÒÔ°wH?òqߦR- Ùò[Ú’µÑOXqÀÖ}¡OÞˆÿÅgT¨™B„þ¼r­ -õÄ)Àž‡>Ddâu Gò­óÇ'Zf/n©|k}†o¨¯)BÚm wO+wÏá×ÏÖÞ¾gÝìsïØÉððp‡s÷îÝ!C†ðx<‘H¢T#L%ˆB¡ D°äÁJ«=o à¬ì’:ÌñpuîðeržµŽ»pïɇ˜É0‡±pqù×[ãZMÍÛd\.×Wè?©`íŸÍ\EÊ¡O5Ë-¹•ß4f˜ÍÌÙÒ¯¥Ô[’ŽÙfÞõÜôEBK™¤ùzV™ó`׉t½ñƾ²±! ×oHÉeŒƒ—ùƒás¦jIŸôG¦¥!m¿V–Õ•y;¸ñLÒ”_)ž……êÄNºØRG§†;²Ü -WüÓïÍÿ6üø„!dÏw—,ü„<Lˆ¾ç@& â››‹e2@PXXèìììîî~ëÖ->Ÿïìì,“IÅb‰¹¹¹L&£‘(Ê€D&­ç™f´5—$îJmÆ lëìèz÷VêÌÜ.Z¤øõ®ð†ûîŸ&æNe.¾r¸8ò­YK½Í]Fx´žªVJWcÕí˜rÍI[îŠg^r1™ú¬÷·V[©f*«-–z~)´$6m8v®NÊ3wÞ÷O:øŽœ ÛW*uvá1 ê–"¢R™ç&­éñ¾4ó!š =ÒÿاÿZ>{‹iSÕõU[k,-8Ãx:—ÑRÏÇ…üï\äûÓ|_ÆÈÌTxåÂáV÷1V\6w¹‰%²Ž^5rí?Ì"„p8333@ˆa˜ÊŠ F&!uÍdÿÅ_.ž¼\6ù¥ÈÐеÓ) e`@£´ñ~­l°¥`×ǵµyEÕg/ÝÉmá«.C#²ö9°ìjv›ƒc[Y €;[îîbž“ÛÞæ ׂà6å‰%–nÞƒIáÕÍ/Eš˜Ù ’µÃHUPj­\C!Xµ&z•JÅ&8ðþÝ$¶³âÉT…‚ˆ¬\éJ¾\{CìM8Êd\3áB[ÊΆ`W[*‘ñü¼¹í¼ÿÃë~îVqkùÚßjƒóSJW—Í ã²¢"ŸA­Eå5ç ›þ¬ÍÈ«¬kµ*”p›°­}‹9Wr74b˜§‡»‡‡'&÷è•J¡P Ḛ̀ٿþ}~v¸—¿›­›‹mÈHÛà ¯w?<\«b ¨Ú mõ2ÆÄD&’ûÆ*d„ yv@ˆÒŒàð&cÆi52”¹BüqWµ^U&|;„àg=éÝ=ˆÖ†´ª9 €æ¢‚‘Œcâ4d5tµ¥˜q³ÈÚËZÑ^k7®¤U†9ÔAÔÌ-„דOÞÚÿÞ•¯?B¿Ìjl@<¦‘g&ñ°äì`ï%2iÍŸµÀ3x Ãp€.æ¦P(ÕÂb™‰…U}ÁîÃUD†™?žÃçðž´„ê´ª†*p  g®eÎ’Ç­@ÔPÈðø -oŸŠ¹6Må…®¡Ö[Ù*‡ˆD"õ>´U„ì­õ¹™êLߊ­í¬¤eZ²§\e®‰TTœuÏV`.eFùÅ8òZ ¾ÿ£Áˆ¦uüS&©Ë©·ýæi7BàzY[°»eì?}þPè®Onæ×B!±N+9+‰¨Ëa—Ë15a@P=BõEÍZO§P(”–Öß/´ÜóÁœÂâšÒº6S>Ÿƒ‘¥¶`n4§ƒaî kœ€¹›5NïÏs4¸%§]€cãˆþú!{ø?ý,^^5"»²¸^'w+Ϋq¿Ø::1êK‘MQ¡®ôå¶Z·å=È»™•Sئ¥uÍ­Õýp#ÀË%Ôˬ±º¸áˆØ¼«-Í»SôJÌ,[*¿y9aÓŽ÷#œ¼‡¯ý®ªÕ×Ñ t­Æþõ2}¿‡B¡P…5¯éÜÝj_~˜§ CpYiå‰Ó×J‡pŠï8-ëºEÏOù#Ý3àé­M)§Ów7º=y÷:æã:ÄÿÜî-FD=æ.ô󙤼²æ÷«¥¦N®Œ¶œu¥7q´çÊ´7Ä‹y—®œ÷ =ÈÚÛÓ^Ü"aݺbxKqÜø.&2qýº¤2o'Þ‹¿š'ÿì¤cŸjä³â ù¾p…uôJ£P(-S®¬¥ °¢¹E$–J3sG¾)Ü¿u»QF,¾~¦}ëv³âO,©ù3³† ·å –²ûw+D —ÿØpÁý[·ß}?š}½æýÛRYk+aL\<N–l‰jÙ‘UW”WÕ6ˆÄ2@Œ©™™µµ‡›#£¨aMÖ‚6ÃsxŒõnéHt7„`Q~Na}K&Àp¬ ò®¿—•Ó"å˜zÄ™9U_<Ï™‹nüpøs±×0ž-m©Ì»[Ú„3áð¡f j{P˜YXoØp?+åΤùåµô:£P(”>à¯Û™ï)h]‰Ë0Vfú%’æÊzŽó+OxbMNXw°ÆÇφƒz*º/…B¡Ÿ~´¿IF,<†µ7íÏÓ¯ °uEê3±-ž©½³Ç óž­-µ( ¥¯,>*s¯ ß;ˆ½T[ª@ …By8pý­«=~žv…B¡PúZàЧÏ?¨©{GÚ#}OüçßôYYï,šgggGûœB¡ôR‚1¦=òPŽ雂ìììè(S(ª@”¾&ëæ5˜BG™B¡P¢<è(S(”þ¨@tEÜß:Ê åѰ¹üùøU‡F%ÍÓÎO=3mNAÒâw·ÝÅØ?æÛŸõèî|ÇÚF™0¡]™:~~bFÉùßó1ö~bUlˆ#2\®üüï» óô«sÝ!à6÷Õ§·Æý÷Ï—£ß­llLLÎ6E[¢Ý¯²Ý¢ìùQŠAQŽB{‡ÌXÿÇ;£U¯Õ¬Øn!%û–¼´å®Ü3ââQ»r4þÔÐöÊ I³> ¥`Ôæ& Tnµìàʆ—¶Ü XòÉ’8üî†+Ø´„¯lx÷(ÃD}rêtÜdÐ(HèÊÓŸFaŒqÔ§§W†©Ÿ­«¤°ñ3a޾;iIR‘¬cqêõ'$ìí3gRRRNý´ÄãÃïn¸,“±`˜£ïžæÌÛa„%½õîá€%?JIIa° RHÜ©Ÿ–À-ÿÓÙ QMy5„wj1ÌÅ»°pùÊy.ûǹL=62Ùås‡ã¨ñ¡ŠC¡ã£0†ÃçT›BâN}Å0w·üï !a=ßa‹’ÞŠ=ÊD}rêÔ'QÌÑØ·’Š”£¬Ù-2Ùå /m¹3?9ÕÞ]½r:½ Õ¯^µ¦a …ÒW0ê uØ©-yÍ”)O>ùÅU¬âbQÝÔ•Œ¯ž?>‚PäcL EKAæÆ~ƒÜ qøh+´ãgC {ûô'Q˜aîneŠ¢QÕ_£G}º2”‚qqjÊ[‡æ`µ`Ž›üÄ#ç¯êè =ŠrhíâÍ“*–¿=w¸!^»±ãœÁÁÕÒ2òt䬯 Ú¨´%tBÆŠ¶¨¥z%§¦ÜÁ8jB(aO¹“’Z¬8E[·ÈGÿ½¥û¹f´\9S¦¬If VjHÓ(J_йŽý‰~rry{N&¸ýnÔ?3Lòš©ÉÀ0UPŒ±›Á¾md)Ýeú •6Æ­²âÔñå¥ÿõÊŽìä÷–yýôï9n:êOJüë•íÙ  XK¡D^Ïö:Ò5ÄxÜœÄà{q›3Ó2òæF½µ¡Cmõ×_wÏw’O¾p5&$ I»Ì0ðTx!X³-þ7- ~%È;D×)jÝâúÌæϤmŽ|ÿwæÈšMáÊ!èÎs í¤Þ ‰­'U å‘{DˆkØ$†ù}×ÁãýZ "$$< æ÷‹i8msüï £íá“›ÀrŠ .S&»ºé_Še2Œ1N»ø;ðóŽŽúÜO¿Ø;ÖAgbcŸÙŽ[8ÁWýþZ5Ah¸o”<¨üƒ–k¥@šG/öÅøè®ƒÅ2™LV|p×QŒ}G«´%§¨DÑ]>®„hô¼–+ábšüÿIa®êÏŠ´tKð²§c,—n?Ò1 šuÐl…Bé :y#•P<óWõŸw8¨úÙmöÆuO}ðÍ¢¨oãi'Ç„z' €aŽ}0ã˜b¢œöqrLpô›¾É_û`Y÷ñ´äµ¿k ÈmÖê7Ͼöõ7‹fì0´Äe«‹Þ~ê©{ìÊ+ß×ÿóå,7Bˆ¶ú‡,ûø©c[ûT®¿?0÷Ž­}Š|tt¬Z·¸ÍÞøqÁS,šñ ÆÓÔhö¡á ä1áüOÿø%eÈ[ÞŸwIÛ{~ãb§§žâ½™]YP§­n³¿LöܵvÑŒoã§>NŽ Aòøì g?{ê›{ ÆÓ>^ÌŽ¶jÏ«5YÞ“Ì8€§­Û8ÛM%+õnÁäÚ–¨µÇÙáÿ7WˇÃð+§=OÒÉ šuÐl…Bé в·Þü÷¶¯Ø½±ÛÄÚ#}ÏÖÿî›I³n^KXýFYY™‘ŠumëÌŽÁôuG–… ,÷Ôn…2žÍž=[óœC‡õx=ú¬ G‚Mñoj=¾"áëîgnà(+ùõ×ÚÝwýošÖSùN¯Í% å¡Ù@Í-­´Gúž{~ïK¨¨¨ˆö9…Béw6õ€ÿ £L¡Pú£Ñ}ûÿÐQ¦P(ýQlmmiô="ߊ«}R”ï¢ÎÒ§ÎçËFÒN ô‘åææÒy(|÷þ$Ú ”þÆ¢ÎÒ9Òw B{ä!|jkkiOPútN ô±Ï¨¿ýöÛÞ.uÞ¼yIII´¾ôB¤ôO¾ùæ›~õ[ãóùz ¤¹«¬OŸ¾)EϨi_ ÷Æoôê5mggGKQr•>›¡ôW ¹°ûò·Öé:š4«øøøô^)JíéƒRô¬¿Õ¹»oœB´ ¥?cìUÝÛ¿CÞ% ¿÷þFWˆB¡P¡¹ŒBˆB¡P¨Q¨=òcVz fþŽl0ö[²kK´;ݸ¬_ŽTnþ»Éõ@ˆí?— Ô±¿!u{·ÖiK@HÝÞ­ù×÷1~+CÍh¯Rú›Œš–(Ý=R"©bçûGIUÕõ%KNŽ™ug̘۫Vµäåõ±ülÏ.ÞyâäÉ“§NÅAâ¦4BIÛ±1ÍàaêÂ)éJ¿»úŠÙ»KG|¾lä†ï@„©Û³%?ÓèÞæ¿ºtÄg/»@jy&)½sY'Û)Ô¨a¥_K˸žÞia Â|‘›S‡!|‡`_át&]¨ôÍì¿øV–€€È0Œ `™¬UÔVQ]ãîî0dpwzäÊ•+žžž1j¿+ETž:•÷ÿ7röì¡ï¿Ïµ¶Æ 5©©'¦M½e‹Û´i±<æ_ùùù ‡Y¾ê=‡eß2ˆ-[6€–þ))Ì€!^nl¥Ü£·®$$mÓ”Ød†a 9v ¬?µ"ÒÙ#ì9Q‰'V†!6Ù˜¹~=¼÷^Å(”vMå”0ºtOþ®D·ïÃŒé.NíQ}åÖLúÖ‚.õ{·Ö¹„‹Ž¦š½ºÔ€ Gøfn ú;tBpëœèÜžkçÆ‰/Ø{ûÛŠÊÌ€²ŒP Œëéï­Žë¬$ Hîà–Óâ@ÀâAåu.v” 0@¼.Ô{è`o sµƒÇΞ/*,p²³s²çw¹GLLL †A à š²³o¯^ýøä'탆·ååˆ9Œ´Mj4¬¬ì‚Qii–!E¬\¹ò¯œœ°±l-ÌØžEŠŸŸB„!´?í¼Æï3lüLHNNŽ’£ô¿!¶âÔz`ÕE®%a+SRVÒý1ó·‰Ý4þÔŠPVæ˜äØ ‰§O‡µ •ŸžGTQmÄW8þó˼Aám#êþÿ 1f„ÔÝî4¿¼ºt?þ z˜&R)©­ýyª­¾SyßIÖÜòÌ{"¾ƒ)U ª@n^^‡Ã!„°ó5;•*ŒÂC¥Ì)Ïœ˜D#޽ãrK†að0¶Ò¦&&¢6QiiI~~¾êñòªšgŸžñß}‡æDM551ér§0 £U®¯[çjiÆæ&ø×òœ½ßÔŸÜo?yÞ —\»ælnžºzõ”={ ÉcüåÆ/ý|ý$R)ƒ²g(´!Ð5Û„­LI„ˆ¸äì "·ã¨NôÃÍk@V‡Ò£ÖËňòpáG†2·Öý¸­ž8¸¼÷Âß›±µIvéׯ¢,\œSÎ8Õ[Ô «ó™Æ à;tw.ë?4‰E bÂ33éÝ›‰šššŠŠ ÍãÎÎÎŽŽŽSTô!ˆ}ÚCØ/d jB¨ 0ö €)‚6F†Â"07å‰Û$...ÖÖÖª_6gÜ0552!<ãÎÝðÇFtG”ÍQJ!¤òâEOÜØ–žtý;Ÿà7âúÙxòò¦EW~ã66פ§ÞéR©cÌ Äã1ÇÓþ2¶†a+SN¬`×#$ÇÆxíÚ2×M³”Òý1ó·g3 0 Ð=¯û3GQeÚõkl_wÀ.^࿺tœ¼‘’çò‚Ï@î2Ž ®¨(Íϰ7Ô£gi³ h«©UÌe†wâ{[;ÜV0öƒgziª½]œóKî!+ [ñ˜çÂüx Çí•‚jkk‹‹‹Åb±æ·%%% ÃØÙÙ¡ž³§ïÞ½«:ìÿº9j]W B´›@ì1FÖœ¸Ò\Â\®ŸXt•kêÈÒ¨¦¶]'©¼$bž@‘{š››oßîཨ¬¨ØóëáAÏ;·2‡z œìíºÖ¡ ÃBT ¡Úº:F,¶03󦪣…¹>™ùøƒ“ºzƒ`Z USŒ±¿Ÿ?!1ˆÇA3Ç Ség @aÐÁ¡S¥º{Û}î–õ…Sbd–¸©kéÄíY \²sAáüØ#Tú„̆ƒOU ¡ýQgñ_ˆyì…ã(ÿ0ÕûÖÖ‚LÝ êu0Æ'~½ädæêâtñÁ\®8h'™Û¹:IwG‚_]4÷‹4+'žUhÒŠ#ÏM°Ÿ=Ö©‡’úÆ76|øÂ¦Ë\3˪ÒãÛ/¿î6ÂÓÁÊŒ«âéù)**Ò*? ‹Ù@”=%B·oß–ÉdJíQ~¸qãÆÈ‘#»3j]T „"®1ƒûL1\EnBîòÄi\r'7§ØoøB Æ=°‘4YÛyH¤BKK+.‡ Rý6((cœ_ZÆ33=âû‘Ž2±v v xÚÈéu0€Rdnb"•¶54×+ñ®GVÝ9á=fšxÁ{{?åYGÊ1ü*Á#„d2Ü*–¦däs…¥mŠ)|~Ë\w„ ýB2ÀŸ—€‡— +§° ÂÜAuÁB¡ÎÌÔN¡ô$N¡þŸÛç¿»í&´¯Ææ??£nµ|%‚±’Æ~FÝê=ï#i âVÉÿNþeãä®î¦ž"”[h*ˆx±´m×`Œ±L&c‰§gˆH‰L ’VbeÙüôÙÊÒÂõ'žžáäeÚSmD ÅM¦–b޽S-/|ÿ•û9¹Ó‡;¹yÚZ[š¡ñ"ê—5²··ïfq·nÝ’ÉdjÖû©TúçŸ>öØc}ª@¬õ€ë¹!0!ÈC20·ä]½Õ0,H@À¸eâ–ÍĦÉò13SÓ¬¬;Z£G&Réñ=?û7¥‹%¸®b²± Ä>›aÚÃêßÖ–ñõm¾qÍÒa¤ÿËæ|Ÿä$Àƒøaó.ÿñ[C}–I€ÐðÛ=ö·$øµM:.P¾~(zšF¬ÍB(lE\aÌ”)Ù Øoñ.VÀ}nÜ’3ó·+­X?39.9vJŽPLvrìøää8u+ªã)t=B[B>ÞŸ/S?²!†ýÈ!†¯búðu[Eüös¢N"Ÿ>™ñ«É¤&bŽÊAÊ›Ã$Û]-lÚåG,߸q£²²ÒÄÄÄÕÕUíÖ³I«¬¡¤¢FsI½…ŧ'Sþ¬.Hûcäì0? YÏ(2™´^V‹$آɜԺ ÎÃo—ËFúã‘®<w[3n÷œr555%%%úåGU„!].îæÍ›cBˆ………¥¥euu5{cíììÜÔÔÔÜÜ,•J¯]»¦õžT ´kWÃGUªÃ(—3#¥dI52qhj9dìRl"kµŠe€­¼G0 òòòrvvÖLfnnnkmÕ&jáÛ™Ëd8¿¾Ùx ¶¬ü0 ƒ‡ÃñŒ­á…ÚÓ7Î=ÂÃ7lÜ ­"¡úÔáÊ_²©‰ÓòåÆÚ@R‰%÷Ë«ž{ô֔跭ݕI_&K?—S{ÏÎÚÊ¥:¯YdW$ ®«rsq©uùæï·&{™0À™èÊihhJ¥J¿M/Ø@"‘›5€0ƒšY«5晸X´X€{` ¤áÁ¡³GºuÝ ×Ö&is3 fL¸?^ûbGèЪ&×b׬í7Ë[`°«y{aÙý]•ãöm¬ü(§¯ÖÖVÖÏojjÚÖÖfmmÝÒÒÂ0Œ‰‰‰Òâr¹=¥@b±¸²²ÒÕÕUiЉÅb—9ôÊJ‚ˆòuÕwƒØ?˜®¹8oï6ØŸa¸ xo€ ÇÔœgekÁ^ÂrùœgSK!¡ÖÖ®xáä/å0ŒR~ØV888LþÇ?DEååå‰ÅbSSÓ0oo‡Ü\£–ØLXvÝ;Kô§´YNg:JÿäÊýzŒÁÇÕ¼k§‹E¤æ.ßÃÝ5ûZ½“7ž$+˹…ÐÏE²'„÷•µºð-̲Îx˜š€D"133óóósrrêyH*‘=P8õEõ2Žà (l?$¤c+k2)ÖXvj”GBZ ±D`õ‰‰Ÿ¾ºÑòÕ“[÷šz™NyLÞ§2ZŸZò³³98_<.j6îùûšGKK‹µµucc#;É(_&Q¾©iee%“Éš››MM»¾ÎBm¯#ÕE öööååålšNu¨‡w&Eª®7Vtä;Í öWý™®Am¢f™DÔþZ ÒïÇCŽVyÙR33¦¥±‹6ÒR¶‹ý¿µµµµµõ Aƒ¤R©L&333Ë3r_8Lä^8 åÑåhÊ5¥® §snéM¾dhµ÷Ma“Dâ¡s²ä?9VÑ~–æÓ¬@2S‚‰‰ ‡Ã2dÈ!CÎ ^»aI¥ª§ó¸í"”÷àÜ`˜fb_R×%Ú— È>ûsî䙇ßxÚ_àÊÛ}>^œ0Øe¬/×ÔŠw¯ØXùa'(‡#‘HØÕì“Uía?755±«º©@ÊÏ&&&ãšš{{{SSSGGÇêêê¾¶._I7v5cM!ÖmŽÛ-]ÚÝÅÅ¥¸¸¸­­­Ý˜SÌ3"‘Hán”Ï*&&&...Ý¡ŒŒ U=S›f† í;HõŽ¢}WF9袙:´Öfš™qõ›>ªÿZXpšÛ¸¦¦‰ÄĘJ‘§֭ì‰DRZZÊåò¼½]ɸîíáÁç·³ƒL&“*® BHks³Tá†f…G"‘°€ª(S-¢R[[[‘uÕB"3Áb„‡‡ (h8×°ÝÓºµ²K&“¶!Ž) yPnY}æ3!ÿ|agÏy«°LÖŠ0!RIÍ]ké‹®A’ïÿµðé¡x–àQyŽ.*—t¹„P§{"°ò#º¿'Bpp°Òê‚ü@/­D@ŠíxT4G±Eé⃠Ç!þZàa®ÝB yœoƒê›€·®®N뻫úl míbÅ£µµµ¶¶näÈ ó©©^îvvFï>'Ã2‰âN„"•ɤ2‹[ZZTå‡*åïFii©T*• !Ž@  ÒõþiÛ@D„¤R,ª0-K}lTÀqoíÙ¦998ìùz׊ÄeæVn#bWÎò¿žÓøõ‘ì™sGrì%ͰéÙ%°õðí ×.îiÉNGúEˆ•Ÿ.L\ºãTåGÿV½k)ÃÛ(þ…ö7‚èš dï=¶n)­+UùAÕˆýÓÊc `s^YY™Q „:úßTEcÜÔÔdemuîâ%/O®½QŒˆZ[ÙwÄÚÚÚ$q«Hd"3illT•©Tªué'ÒM¨p¹\©TÊår=<=„B¡áòÓMºwùêÔù3$²Ú¡!~]7¶—ZèðÛ×É b¸\.…ù9Ø¿µ6¸9§ÿ|Q‘fåÖ‹Ýyæ„Ò/BJùéÁ½± ›^W nzõ#‹-„ ïû—«36°ëLx`au&žZ·ëÚèbŒEm⢲ò!^^]¾‰x{Õª ŸneiÉårW­~W,cŒÙ7ï”(}¸šò³=KÈ !¥b6¥m‘E5*ÜPGéW455°3ŸÏ7v­p7—xÜu´·ˆ²0k}*gòä¶¿þj½tçð‘ìÝÉ'ÀÊdè›3ýº_н½=Ƹ²RË:&ggçî;ßzžQ Ç þôóD£  mœçJ&sðz¼Ê/63ç–ÉÁRB!2‚e@Á "`Œ„sä?ú¡PhxAb±¸  €ÝÿCÓj“H‹ŠKü†úØÚv=\Ø /½ˆ þìÓO± ggg›˜˜°Û›cíIµ8áú"J·2å’%9;vd«YZi#â’ÀQ‰)+Ãt ›Ú¹ÊJj¯Ò)umoÄFÕc*ì?¬²•ªÖ”tBä‰D­­­cÇŽÕõÎi¯*Pß3ä´|/‰0¿±=lx9::ö«Ht½«@a¡£ÃBGueB¸\®“““å¤ç$ãæ°²*§l¶Pù˰ £Ü€݅ÂÂÂB×rg­Œ݉4º¹8w¿ß_zùå—^~¹Ód«·ÞÐè·¾‹ÒÍ0Ég`物1ó·oß›½2 J÷/‹Kf¢O¬€M‘qq˼vnv×ynâÞȸdö\„tVI»}6{Ì\¢CÝÒ7Íßž%\²þÉ3±Ûc7OY¦+%å‘ÃÑÑqöìÙ½1—Q¸uMWŒ²+MMMMMM»³—ø€¡Ï¢tcµ`®€×€¬#ÒV„†BYê™,ŒgŽ€ñQøÈ‘3©¥sÙðZÏ…9r!mEh{%5ª¤ †‘G€u—¿†•vá ñ õ•SXJBÝ´¥¤Ð¹Œò¨£–Žp¿¡'v.öà “s TÛÐÒýË"""#ã’¦çJf}€*d–~µ\%„ÂVìZâ‡1“½cAdäÆ4¢*KqlY…%zSRþns™hÿÃ<.\È~ ½¯BnŸˆÛœ¥²…šð•ÓüP?¨XEÆWkÏ—°‘⼟XâH÷DxTÙÿ抄¯ ôÛCO¸B:TzŸažk׬[¸p¡êAýòCȵƒ¯ý¿k7¯Ä8òÕÿ,õëÒ5ª–aÈòCs†g|-5°«ö%›“8ß2OÄmÎüq—oâüÁ=]gVê2aÂ2gåç"Vx©ÈøjWÞ[Š–IÊ¥q'v.BÖö½ézŠPkWÆŽÅŒZqj}ÆØà}ß)˜±òóÝû“ؽ:Œ}] ÷~±½›¹òO{7ó®­D ¤ìâ7çF¬?üqâkå‡~«&„kçv~åÛC ßýöÉ÷Ëü™Ð9ÿù0D¿¿®ª¸|b¸ò[ÖÞJøî·Äÿ¼TùÍoÕòŸÇ±¿çþs8q½ E˜õÍð0­]¼ycREØò·çgW÷ÒÀÃÞ×ÕÊËë5ÄxÜœ9ààêÈ~~+ÂÖÁÕŠJk©È¹™‹ñ8__ß`!Æ7oÕi´NOþ,ƒç~;;3Lþù‹¿\óSžþþa+ æWœHx² ^šz& ã¨ñ¡¡ã£0Î:“ZJ{\{´*7¯!º3”ÇzgÓ¹¦ÈJ³¥bé L˜^854_ÕóªfÊñ?XËã#F¥ÿÃgØËÆ[Z™›}-nöïGÖ8¢9+S×¾>;dù¡¹Aúï}Žýôú ÀÞ¯­ŠÈPµ«¾Šý¶„a0Ž p˜þjü,G„ˆ“§+=ÜáÁxÜœÄà{q›3Ó2òæ*m†¹xhíE`V]l ÊŒu © û\µüù¿<÷ÛåsXOÝŃ_¹/|+B3R}ê_ì­b`Àô‡Öß1Æ §=ˆ»›æqU§™q—ö"ÜQØŠ]KræoÏÎÞ± r‡·eà(ФQÖg¯6*·™4ÊÚð­t™;¹÷‹»´Nþ8§Ý)´ìão£/&<½½üÛ%SÝ (?â"¸Hðûw¹ðûw¹ììÁ.ˆï‚aãÓ캃lB”ëÖ¾þ!¬\ê‡B!sVÂ?¼AÈÍtÞO¯ÏŽ{-&ûña?õÑgpDL`˜|vMüšÙ!¸ê÷6Å¿Ùù“س~Z¼ù§‹8$æåñ.òÌŸ{Þr•ÏuôäÐðÈçàhÜ›âßÜüÓEì1oá[|„Ô2ɇÀÈW'0ÌŃq‡«ìÊ…]jõÔ,—þû¿ü°¸GoMŒÂÉq‘‘qɪAÜÝ£·®Ÿ™µcAäÔ©S#"6¦CèŠõ3&9vÊÎ!0Lrìí‹ ,‚´S§NŒŒ;¢ÖÎÆ¡BÖŽ‘Óè…ôHÑ!J÷ß;“²^8‡°Ò O]CÄ55á­“jÉ^|[¨é‹£;“R(‘³W¹˜ñ—Õ[oÐu½kuÖÿÆÊhÊtÉG¡P(ª@ .tn*Ý-§@¡P([ ]=ïißžõA5qnÒÞ§P(ª@=ÏS‹|~ÿ.—oc ÅÍiZÓ¼¾üy:,ÆîuD¡ôg¯ž¥@y´Èg˜gîýâ§ù°Oƒ*2´¼²vÍ: 1ëT Ï~)ý3žòÈÛ@¬´°{xýù¤á¼^ZoF¡P „®Ì4Òj¤qÍûŸu™ÂÜŠ{™ùå%5kY×omc1T( JGŽB¡P¨õ$']./Ñ÷Š|cCËõ+Ùׯd»z8DÎCÇB¡P¨õÇ/ìf?<.œ ùíõ¬óì‡Ï/£ƒG¡P(TzŒÈÙcüƒùé¶fIevÞõQ“ZK ëS£ òòqØÃF~LV‰ÛOv&¤ô@ÌüÙlˆ°!Åz©¬íYíá/ûaŒg’›ÿnr=bûÏeƒuÔ„º½[ë‚ô$è˜OÔ«¥WÍM¬¿DÅ)ù×÷1~+Cͺ7ZÂÚvˆÚ®Ø¥ T7Gïx¼Ó ÕÏí†1‹Ñ^-£¡M0 ª”¿‹ ÄJ‹ßàÇ5¿æ;ôÊOjBðÒƒê¾çl͘|&øôäŒøðž¬ij‚Öÿ½¥ƒœ´é„ÞæwHFHÝÞ£¢¨ŒxÒNç~çñ_ˆá+ëËF"DHÝž-ú‹ã¿ºtP@]Ŧÿ–g†tR+ýÚ“¥-ÈBþÁµçKá+;"a׿Ÿ’Ž^ zy¼ !·Oü3¿á#D²ÚüSÒ÷_êÌ®'CV*ÏwL_‘ñÕæL˜0çãùÞ5)ÿûbï_ì²ï¨[ÊŒ‘°kóO[~v^Çî|¨¿ÄN«JéU˜Þ.à¿Ç¯%¾·è£³ÆWµ´°æ;d˜ïoÁPö?Wg«³®œÉÞðÑ×>úúèþsO ÏÈHOOOOß2ÏÙ’žžžžž‘?¶Ïº35!x)°å²E‡÷B!„”î_ÁnþÈîÃÈîØ±1-mãÔ©S§Nºl))Ý¿,"""bÙþÒöÉ,mc› bcšª¥¥ºk¤fþ*tØí!÷è­+YùQÍD¹ƒ$ËÆ4õJNž»F£\-j·3gqâb?ŒììÉݾ3¦»t”Ÿük¨þ‡­™„R·gKþ™ô»ïlÉÏìZýó Vo½±'—íÀº=[òoãZeªŸ;ÉŸoæÖ–²Ao—#ÄXM™î¥fØC„†O[2E>‰û 1fMuš!äŸÛ[>O<§¦UÕE ßÙ {Ø1¶ˆ"£·£€ƒ»“FF]%vZUÊ#¬@=á[“óÎ „ÂaÖ, ÒMñîÁÁÁÁ ©ír‘ªz°x÷‚ààÐÐPEŠÔ„ààÐÐÐà໋UE&844tÁî|-ìØ½MSu4 jÏ9Á ¨De…90s÷Ʀø7¿\ó  ¡á£gø@ÖO‹7¯Ý’©C¢äATBwêJy¨;¾›[š´ÿåç_…ÂÑgDOdEȰüö/‡„ŒŒŒß|v´ÏûŠƒñáP¼;þØôß2Ò]uo«8r‹*#cqn¼\ƒR–¶Œôôô8¶_ãÇ—{+zr¸ÞÒ3âÃU2ÉØKõjÃ$ÇEFF.Ø‘5s}ÊÊ0Ö’¸p†x…z €œÂÒö(ÝQëW„²ÑŽ1ŽZ¿e®ù8«°DwpeM瘮üYÂV¦$Fa†É6h3|ðÌòJ`çØ™³äùPE¨˜ìþ)AÀ 1Uu¾íÙòçê­7ÞÝVp Õÿ¸íæê­7X ‰•·Ôü3µÊ.åÿsªm·+P÷ã¶›«¯˜½×Yiâä(Õ Sš)ê/Îb˜ÀýZr[¿YþÊ8eD°õsj7_ô‡žê"FV•Òôõs Ã#|[ZXÝ¿—Ã~ötxhFôDµ½m狞àéí ¹êåúqëà3¡_`<§À“µŠf}žÉ0Ï™ à ©§÷GOŽð|qqôç§.T2ðÉÑKOçͧë4Œ£ÖŸaJì‘#ÒV„†µGéNŽ‹L†QH6]Á•u)_{þj#¶2åÄ v=BrlŒ×®-s53éjxævhGv6,ˆÜ¡¬ì™ÔÒ¹sÝú×ÏÇÌÅQTYß3#Ä!Æî‹â?¿ ön-È\6( +^ÁöuŠå À>‚“7Rò\^ðéáö+Cåfý´83d\ Æ™jαêSGæ _ýfšŸsºÜ­ÁB|^„·=ên¬ý¹7]“‡‡ïA©èZU)ýZºáK$­ú.cD¨sØ’®êC“[E;=S‚ OÐþÓ©ñááJç[,}~‰0yGòÎχE»³!qVç•atF>ÖL¦–¿¶©Ç}î–õ…Sbh“±n„gn7€ï<Á®²S,8“ZÖ¿$!³áÃàÓcÃ_hÔm‹ETæhÑÅúð_ˆyì…=)ÿ0ÕûÖÖ‚ÌeƒzÜÇ>_™Æ® Hpuí°Ü@ñß(£ªC,y '›÷œåÂ4yxx¾ú‰%jÀÊ«t¦u©ª”~ï…ër„o]^¸óÎ>÷ò3½ £~ IDATSÙðÉÑûO«»Ä|½=55FîŽÓðÂy¾¸8zÿRÕ‡F”zzôäNkæ67n±ÎÚž¸¿”(ïdr‘wvÄ9…ú>Zô™š3mt¾4@Ã|a½s«ÿ[÷Øt#ôÌÀâäÉöTTõ΂¢´Q&Êdÿ´1î°ãsÖ¿_óºþx¸š±ä!,x°"–¼üx\`ø**N̯®¨)­b—A¶Ùi‰Z«J8^¸L awÛ5vûg=^¸^"<~ÛéààP†Q¬¢öœ0ýÞ3¡¡ωŽÞ¿4¶eÄ¿˜°zÁ¬àP† \µ:ºÝ›×žEƶ„ÐgB¿` 0grç…ÿ§³ rŸ»`掸ä퉷ÌuÞšX·cÁÔÊåÚ!?1.2@ù˜ r|fþö "·³ë4òWC…­ˆ+Œ™2%›}yÂoñ®-sÝPÏdÅú™ÉqɱSr„B`²“c§À''Ç©7J­\„”Ð’¸48üI¿íYYgRKçúÛOùx¾LýȆö£|ý4¨¬¥ÖýgóE%žjÅiµŠøíɺê…S]ÊÌÀÅCk/²¯éxC¦Ê;:í/ÙrûÄç†9¿qñy…c홄Ç;Íp0BüñkfW¾~è§ÅY*¯õ¨ºû²°àù…oEØB‡-ÕN|y¼ !U5A£ªjï'Qzñçc`”îã–vyÏP£"|ÀŠ7?ðôô°´°r÷tQõÂåý5aü$·Aüö:ê¢ÎҸȔ~Âê­7èΤFqöj#ÒÝO½p] 0·BN- …B¡P]úמ…¹gÉ_@Qõ±L/·¢ÎKŸ4=tÀoÌC¡P(Tº‹áþ7V~<=åK´´®…ûåç_<ÏKeÉ :~ å¡sìØ1Ú Áš4=ôì±tgO¨¬)¾¯ƒ#.¿è/`¿4=”…ÒИñFqöêÙ_|‘öÃ@P /VZ”:¤K¨¨ ŽBé=躣ˆÿüÚ A@±7¶ÒÃÖ5xšäÞ+½˜œÿ ºÙÜFæû˜CH¸ÐÚÚŠ^Š*‹:{=€¢†ÖõÔGRz榖²‚ºŠÂÖ¶VhªáTåÕÙÚ>@/ E‰êÂâÕ[o(ÿÜð]¼³hžžs;öâ‹/>tûiÃwIT˜¿I;‹ K3¯—üq¨°­µ}“²KÇ é@¡èŸÍi'P¨ Ô-¾þüp}ÓØØbÆå7qn€•l Üô€^Š>ô= U ÎysõÓ¾ù›)Ǧ]~€0æÖ¸ßÖ™†¬Ç2Ø=Nl†O °¡Û„ôË‘*¾¼/µŒ7ÚSg”îâ+IÅžÚR|%éR‘⸠üÙ1žúã«êÌʨ4½vé¦mš ëO)ƒÊ’¶iÊ…ñ}L=!8X3\ò¶Ø)¸C æ9òÍŒ{jbª@‘MŸ~íÄ{)k Âw4ÂÓ¸¶T/£Ô„àÓOfL>£ù[&3]º¬=¸æÕ©çÂÕ'?·ëmYá!¤!ëÄ•âÈÑPr%éR!x}3 E“†;Ç ¦?û¬Mûþ›]›ú½ÂŸí‰)¾œtéŠþÓòóœg?ï™^ *o8ññÐmÐs¢býâÝ f%¤Rá¡ ¤{*'ë×mvrq˜9©:ìÁñ+Ùãc§  ­|†u¾Í%‚p½—²ºhQ^© ÁK:¦×ó•úÌÖP¶6ÖìŒc0mŒòNAÑ¥$PŠPñå_R‹Aøsc<•÷Ô…à5|x}ff5¡zÏN-.‚ááÂŽòs©¡Â$;½c(¶^û¶mø³eêáéÅ@îœ8v»!Ö$b…M™UɾV¥Ødõ`«bÖ&#WO´qÃwI]sÄ1Œ<¯÷ë«çêd¿JMXp¾øE¥'8ZO^Ù#Ç6$]*Ô.-66¶ª"dk£}2ÔuœÒ ²ñÀ±Ô,ÏÈöGAœå9æ¹çÆtÐ$-i<½.—Œöô4H=Š mmÔŽtÿiC—ŸJ(÷í‰;…0d|·Â·<Þ0>AÑ[vjþHÃã32â»»¸ x÷‚¥°-#=¼Ë·°Ô ÷ˆóѸõþSç?µ§ÐÚÚº¤¸Tàãâ)ðÐíyëcÂã ^î}Ÿ½_ëmòåãwäþ´’â"„bcc õ ÊС¢ây2[§ÊTXßШr:];×FPÀ´y Ç÷íKJJb¥yŽ —’®tÓíé1z,\JRf«ó%\Pt,)éR=» !a mæñ}IÅÐ#^¸n¾„PØŠ]K„YYYò†„o×.fjÁã IÛ±1Íè~öœ0ýža·{ùÅ]0°‚ä.¾âü{ô2l £Xÿá&æß”g‡§ÿQÀápNìÉ›>÷`/ssó~TKÏwNN^ÿÛÎÃã·ýç£6Í[àÑáwN$%5°¾›Àéò»laøð¢c·3ï»Í>î˜ÞðKjê¾""ŸÐÁÔ)JMÊl@„ÆŽö ×zoYBžcæÍ£vä¹çä#­\6­g µÖ¯4L%íY!›€iÏh¯Ï˜þÑ?îÑ[ÖN‰URgáÛu¡œÞÀ³ôüþBcØàâìrƒv×Ùœméáìâ¶ÓÁ³¼³‡Âã·}&ô ¸juôþ¥Á°5ƒºât_}¥»;Uî·[æ4{vÏ8_„ÔXßüÌþnîÎýy z ¢ Ô§8TUf:¿¾ŒÊ…Òc<¢Ïh”qª@} Õ ¥7ì Ú ”Þƒ¡]@¡P(ª@ …Bù1 Ö­Yö…Qé?ÙºŠ^Šèû@ª@†ÒÕØˆÝý­Qº{p³ºoBT·£t•OCå‡ÅÎÎŽvU Îyñm¡Ï06N(QFah‰ÚD­6üök(á­“:³(Þ½`Ö±é¿=Ì0†º£tS™é_ôT”nÍ|(ª@æ=)! MõuUE’ÛG ô¶5®3³´®3ñlýº•³mg÷2Åçe2™ ?áaÌlšQºAeÿ†¬I*á·U•ÆJØÏáÏz”ìKU‹ê­ NCØ]¶UÞ1Ú·6’¾šš¤pDšÛsWv–(¥;¾J”À-´vávÙ¾}šÜ 'ßž*Ú·O£ˆ¦ß&þ‘ðˆ¦ýû÷ïß_v;ÚNºüd!=A«ÕjµÚÊJ£3€ˆ^ÈŽ tø‹_Ü»æÏþãyç+k7~õç÷ñĹÿ’þ—r÷»{^z)ÕÂnÇ¡­õšúÆ­1aîîƒÍ—ÛNx<žƒtÒ™rb$~l¬CCSÇ:Nî91æùõ‹—íǦR-/EJw(~ûkr‰2ŠßæùÛ·gˆç׬YC¡Å£ŸÁ¤} ³¯¯zá6ÃYDÂü‘Sæ‚·';¤™Ò°,Å%p‘"´¡˜“¸‘ôGüíOßë­wÞqû£í¤kaã@|Àiª2÷Se``ppðÔ©v²tÊìc CMèý³dÿÎÿ'æO9ÿ—³ÿŸëœÆÿd*~ö{üOý⯼þ‡ …ºçžàÚµ© Ði§~·†ÄùñáÉBÊ{}£>ÕDŠÂ yÀ¯?­R=ýúùóW'S-•¸íÛ÷½²5<ÃL~8ñ§×y/îÍ™."œª6mäyš¹}›®OùsË4ekxÞÑûUää˜íÂ)Ý™ø¦þë­·Þ~[œ>·vÒÿØáuOnܳß>b¹ö‹§×æcÙšÎPž)Ãê­­‘lÓÑ®pߨk4¾Œv ?2:|Ài¬¬ŒôŸÒ™‡ˆx>à4VjµÚHi‰,èt#2ží®2»X–e]æªPuZ ÷Ûº>æ>F‰’šÜÇJÔYf!"ÚAÿôí— ƒÕjU( Ãä[~BD¹”ºÑ»ïªÞÞqäîÐhûèçOOn¾”î%<“&Hû.NNNN}DþÜ{6(×(.|蟜òæúEO0L–ÿ¹T)ÝD Û™›À½`s?sHÛ·é'Žtåª? 8í.Vgh¡îêöv£ÂaÕ‡þgY—yÄrÊ¡05Ø|vCÕpãÑ£M–›ÍÒ§é©-HcžB†ñt7ؼʦΊa³ÍÜ]>ÔªŽ4>LއÛÔ`³õzô­ê–STeî§!ù›çG»l^ªéNžý-Jú@ öÍo~³»»û…^¨¨¨˜wþ©cváú˜à°Þ¾r¶qóŽPÈ}°9|é,áÄ8±]©t—J‘Òô¤V¤ !–[é‰)-ÑTïÐðÒÔõ˜ÙR¤}o(RÑää¤0eC‘‚an_¼8™rs²©´D)݉ډOà^D™œq¿óÎÛoO‘Ÿé†-í¦y>àörœ®\E¤*×qœwØoÇé:[TT (^÷Ô(JˆÈëŒ.¦žG(~D% •¢„ˆÆýâÆ µ‚Ô?’¬[ò.³©OXŠaÔ­CCCCÑÞd]hñî½÷Þµk×~ýõ×999© ÐoNÒžƒÑûß4†6{‡pK\QýÁ6ÃÞ*–-{±MOW…‹d‰&Î)A‡OïÜ©bÙppZK%KéNqêØ°ýá\ÿ…‹ï¿³¦ìáü¤ ›ê½aûÃkü&ÝïæÛýúEgÀÄißkÖ¬áùÊÝXô a5eküfÂoa)Rº“¶›À-j!£´fû÷ö‡šy≠c£–úû@×ýÞØ ^ÿu¢‚¥ýXͺګ]IJ5Î0ê–£Mã 6ŸÏn¨¶ë,­jT Å)))±Ûí999÷ßÿ|óÕ;I'Õ;Æê…žËΛ I'j:Æ4ñ5hl¬#®Ù¹MÍýÿ!öì“èNÌÅœ˜ù·o"Y;â·±×‚ŠžøëýO̳LìûÛY|qR]^C.—kÄÓ¢VÇRR(‰ÄEH©XÒñÄ %q^pa-ÜñJ{Ë õÖ!ýhWe»‹í7w—‹\…K×Õ+Sâwþ›ŸùÃÿÄM̰ÉÐýÓ*•jg3…o4H8qaMÜUTuM¥×o6Eníêåy†)ÔT(YÖ5â!òŒ¸XVY¡)\º³|¤}GßtšåŠhÜ;¯ª¥SÇq¤Tâf9ô2uìg^ ZÓI:qaMÈÔž Çê{N)º«ÌvCµˆˆt–V†!¢B½Õâ¯lo¯vq:Kä6„¥jßnÐÚ‰ãt§ZTÉËUm{ÓpƒÍn¨¶qºŸ ~ç·Út±,q¤lj¯-d<ø¼Çlü»þåð/þðû›Dôú¿õQÂlÁ÷Ïp[¤ãùW>xãå'‘©rÓf=wÈøh¤Ñ|ÃB'Ož¬¯¯¿+ÿ’ñ\8‰ P ›Üƒ]Éd:tìØ1ì4Eúyç‘Ô3ü½ù99˨üÔ××c,*ÐÏ;Ôÿ fÞyP„2%É8Ð/»~]ÿƒšµkþÑóÏÿ0òßÈôúÔÌÛOô2#ž½{÷Qmmmmm­Ëõžðß¾¾>":qâ„0$yvodŠLÂó>SƒÝÇÇ•6íÑâ{ã«•V«L1þ°’} Á•K× †g‰¨/ Ï^¹t-ÉrSÇ †ÐA§ŽvŠ^‡_ÎÇ='ù-ô$‚;Óm"“Æ%Äq:ËÀÀÀ€EÇqýfIV2JIÊÍ«ltÄä¾ jeU¡?EùUÙ…:ɲ.sUô‘_ ™».ñvSû€EDz>[/|² zB«¯]¹tm˶M/¾dÞ¾ø’Iü/Õ’7ï¸<1ES—wlÞ-z½Q(ÍtxÌãñŒ¦æh ˆfc[\&NïsüÍF"ršTªt0ô0ÐùÙÑFNl¶‡«‹û }ó‰1Ç3í9%˜MªÃúګ«« voMg¤‘"%etJªhQ+iûuëEDZ¬Ïn¨NvÙmÞCm0=ER ÈÁÒæ,ü*\²TlJ’dºeÛ¦+—®½þjð6ò"íëpÅWiAó]²wüfªø*í1…ûBá¾RóépŒ©>î9ÓÇ v:8ÖQsÎ}pçA÷X‡FÈÏ~÷iÕëD÷ŒpÍ/ÚHQñÖPrû´sëîø'‰ÎM*§ëReîïmQE.ˆ-(%ƒh–¸ö㎮ºuh E¸Rç2›GÃù• [ÈA²«pYT <–TèíÝ»W¨=qýž”I³[ß|ú 9·îîÊ‘#Q!HÅyòäŽó[Õ%¶áHÑZL~ö2RÕ5)]v—£¯N­/\DJšÑ, ÚŸ‹a k{:ýUæþÄ¥%í˜%އ¥,?R“ð*\ódY\Hü/õ²7ïx÷Ýw…ënâ×1¹×¢¡¡9ôÇØîÓñɦ&.GkQ\~v²Z˜ÎlÒ*¨mo,å¼6‹3Àg˜€S3’D³Ä¤¤¤nŸçG»ŒÎÐõ4ψ‹eÃ%$q#Ib`ÆýÓáÅK…CùT %wxãſɲ…Œ}wOW¶ç»Eq¯‰HÓq˜šw†ÞR÷a4c»O‡ïDpšT*ÕÓ¯o /m'åXNš³IŠa k 5,ëî)(Ô[-:Îg7hµÚŒn€tµWW·»"Ñ,BJŠ’¼‘qí3Œº¥,UUZ­¶ºÝÅ•6í©-d˜dÄ­+bØRUÝî \ŒËÆ@Ú“[šù@ùeׯØú4%ÿÒÑ–m›ð`ʦ| è]ãÈ?^ 2ÍÈ”„ßZÄ8 -BódÙaº¸{áàníq3êÖ¡¡Vìº ã@9=»ÑX¥ð\8X}(OÁ <Û¾¦ðW­Oœ87ÛÏ;mÉÅ1-”X}H¯¯u:ûæM^(Ú’«××â -qÂ΀XìHßT XT @‚å"¤ŽjEºFyylXÀi mXe¥1’$ÑŠÄ'±Ê'••¿u£«çÒð­ÈF÷L\L¹Uü­]áyx>x\´8*ÈEV§t{zí>6ôxS»9 0wÎŽß™³¯’–"&}ËStdp†ˆnž¹1­)®È—é3Š0¨@¸9ãG Àh—Ð;1:¡.Dl7e´+Ü}é¥ðƒÚ\,˲.sUw¸µøöE¤t«È3·‘¹ëo§ÓiLÝ…âù@Ÿc¼ÑÒXÊqý޾€\Sìx~ö•œg›7¸oˆ‹ Ï{­g˜™#Ök‰ûCßZÿÔïo _½ñ敼ïïºO¶lT ¬—…)Ýž^[‰¡V¥©Py‡ÝÓr=4Ÿßxïþ¼2&oGiðüçâ•Wg,ÞÅç>gÜT–è¬ “óäã9.ׯ{iT ãáÉÊ”n¡ÔT§ ç ùd[‚>ý,¨z(—ˆ¶?”çùl±¹»@β4¥ÛÓk÷ùÈPm,=ìÔÖÊ-ä›çƒç}tæò'gBïé¢6w{’9{­g†ˆx>÷9ã¦ítçƒfuºug?úâËoÉ·„çÂ*P–Ë®”îÐc@_ÈPôÞ‡a÷´ìJÐÍ37¦5Û©r„·_z.½yæÎö] wWÞÓcDS¾ôLœÝRܺ9gígg‡>_w`³LÿøP~@ÚË<Øò—])Ýž^[‰A(?¢¦dw!Žçg/\¡ÇJ¢7Œ* ¾¨@°R0¨¨@€ € RÃ8 e#¤t/[˜B8ò.ºÆ„Ázɶ‡¿u£«çÒð­È²Áã=çÛxžï9Ûf=×f=÷ã4æ_)T ì…”îåàéµûB C ps<`“¨Æ$-- “wÀôØ!㣯êr霵ø[T X%Ý#¤t/YJ7Ïúã‘„¡L³Žx~ö•œg›7¸oˆ‹ Ï{­g˜™#Ök)ú7¿ñ­¯ü–|ÿô0¨@Y|xÒ-eJ·ÐjªSÅWµ´}úYPõP.m(ÏóÙL¦ý'ùw€0¨@Ù )ÝÒ¦t{zí>ŸÝP­Õj v_¤ª¥]B‚ç}tÆõI›õÜK®ò“]pK|ßì;@Ró±åOUפtÙ]޾:µ¾0”¢í^¿"¢ôΙJ"ñ =EJwlûs )Ýþ*s¿×H²T¸ÄÛ,\ t¹\#ÝÔ¯¬8ªªUÔØÌýÃî¾’þšòV†Ig‡„F€úB†¢7Y »§kkÓû}nž¹1­ÙvH•#¼ýÒséÍ3w¶ïJ¸»ò˜; ô(F€} 5¤tK’Òí鵕„ò#ZWºâx~öÂz¬ä¾È”JòèJðËpõc˜¼º§(ù³_Ü õŸä|76Æ(Û!¥{ÉSº##@1•^SQšdx,ÑAÉ©¨ßV‘ýÝ™üõ­õëײùLÅÂÝÌæâׯöŠ=d|4Ù”©_ÜRVP`YeWJ·§×îcCÏNyÀ8 A‚¾Â]–ÒÍó>Çx£¥±”ãú}ttäã@€ ”õ²!¥ÛÓk+1Ôª4J"ï°!¨@°Â‡';Rº…PS*œNäC @‚–-)Ýž^»Ïg7TkµZƒÝGD «#,?Œ¤Ò-wyJwhÈ1 ,Âó>SƒÍ;ìž®­-ÀÑ_aô²Ý]žÒí鵕" âP@Fîâ”îÈPLÅÕT”&¦€»ê䆔n§6ë¹u9—… qHéô`Y¡¢*  €Ôð} @€•q ¾‘* Ï¿òv Á xãå'±ŒV¾2„¯ø€¤0I¡ü*  €Ôð} @€•q î…“5ží®2»X–ˆ8®´éh¾&öSM¦!r É1º:ñ’k†ˆx>÷9㦲$G„烽ÖàŽ3ͳfâæ· ÌœzáE&Î0̼›€ ±§€ÓÔ`óRMç@‹šax>ÐgêíiQa×ÈÆ—žK?½’÷Í›LT'R~¶ˆ™çƒ½ïÍê¾ÿHE~ÒÜ[†É;`Ê ÏLÏ)cžïI½º¼g›Qx@¦pN¾<½6ËÖt†:: S¨·¶Îíôð|Ài¬§ÉñühWe¥6¬k4:±²²kt´+£\;H^Ef/\¡§ö¬‹-?g˜™#ÖkyžçƒÇ{&†=—~Ü3qqa;üókmÖsǯ G0x¼gâw+² ñë‹ÒPŒ*PvžÝFGú‰ãtåóuy<Ý 6¯²ÑÒ¨¤~s·‡ˆFÝ:44888àh,å¸~s43›e]æ‘ò¡¡V\¾[ ³_ÜÌY›ÓM©3ÞË{µy½-0âU<ÌæÏYÝ\Á_þdÁ%ã@ )\…» Q‰B¥(!òŽû¼ª0r2*P”yEósœ®—ñ–U^õ®ûDÇ+xÜzM˜!†Îþ„¢#4yuÆâ^ëÄpIiøZ\ÞsÚ\¢™En®Â*HÙ“e]íÕ.bYòú¯†Ç|,K,KöDrÖ=0û» •å§»Ãä0åH2\Ä0yuFêµ^»hÜ´}!Gâï;ØŽC¨@° £.¯!—Ë5âiQ«S̸A¡$ΫßÇó>‹ÍKÊ&‡Áß`îÇÞ”êå<¼…~zò‹‡D‡‚+8;ý@Nå·'ï€é±15i±›ƒç´Ÿž± dKU×TÊqýf“3:‘ŒvÅßAÀ0…š %˺}Ó¢É×ý^"*Q`/JëAÕ¶CϾzø“6ë9a¬…aòꞢLo àùàñž³mÖsmoÛ“A=KcuÁ_‰6/Ó_åÐÊÖØ…úžSŠî*³ÝPm'""e •aâN#…z«Å_Ùn7híÄqBgHÝÒYãjw™«Æ•Jb}.sýdð;Ø¥’¦ÍŇŒñS^3 /C÷O“è^êäocº/¢R¼ˆ[Ýü½"T HûìÆ¨[‡†Z盨nŒ‰Q·ÆM"ú«9M A<­V›ìGƒƒƒØ?°<0¨@Ùeäå$…;PÏ…T X)T @@©aP²—8k®²Ò(< .š5·Ô¡dBظeñº¤[ïê>FW'Ú¬çæ}ðš/—p†èCáúô6é`$…o¤ÊøÔ¶ü)Ýž^»eÙyÈ ! Néž)>€>ÈÉ2§tó| Ï1Þhi,å¸~G_ù»ŒÒ§t ÁJœÝ–=¥ÛÓk+1Ôª4J"ï°{a^K–Ò½È,mé`P`žBIé¦qLߥ@Q;²”n¡ÔT§ ùP‚–HLJwŠÙžm~$BµÜ0’Â8Ð]ñ9bñ)Ýž^»ÏGá ""ò»µµˆ¸K)ã”nB–6*ü-gJwhÈ1 /dBoM 6ï°{%(õ1ZHJ·YÚ«õÓ3vl-_J·§×VbʨM\ˆ›ßR¥t/2K[:ô²õ#ö²¤t‡F€Ú[Ä 4¥6¯wØxf#Ä<‡iA)Ý©{Eòq @Êâ³›ô)Ý S¨·Zç?ë^x-ZW‚@‚¨„ ß]T Š ,•×Þxâ@:¸’BùT @X"’…ç_ù;dã@€ t—{ãå'±`euú׃m?"¢[·nQ~~¾ð‚èQì®Â@¼[·nái€ +ãÇÏïÏÏÏÇ~T @OîBÿôéõ÷ ¼‰IEND®B`‚PK•¨­@iò¤I(&(&-Pictures/10000000000001460000018ECE7063DE.png‰PNG  IHDRFŽܲZgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<þPLTEù ¿¿¿,4Cdu???ŸŸŸ]Š£ïïï[‡ŸÏÏÏ!2:ˆˆˆKpƒ¯¯¯Ù»»»S|‘m¢¾4ªÍ1IVŸœ¥ßßß '''u®ÌZZZ‡ 9UdDDD#)e–°îî¿333ÝÝÝë 000툈™™™  ×è)>HÛ CÌÌÌwwwË ·ªªªÛÚß…///UUUŸœ¨___fff/Éèò$$$"""õ»»;s •’Ÿ— Öîõ{ ííïñùüOOOååè oooõõöãDDüî°ÊÉϧ ®ÝëB°ÐjÁÚiiixxx444TTT°®¸á33‡‡‡ÓÒ×» [+cŠ˜« ÷ÌÌS]»×kAAAÂÀÈð™™KòªªæUUÜ› –––!!!xÆÞÞ""‹ “ÒäNNN &äôøOµÔúÝÝèff ëww…Ìá»ãî ¨¨¨olw•••<<<_\fœœœhhhfdk´´´86;„„„%%%†OMU;;;YYY?=D GGG{ˆ~ºØÿÿÿ~±û"#°IDATxÚbX9„Ë #=]@ £ÁH @C,Ù– ˜èŒ4ŒT4ŒT4ŒT4ŒT4ŒT4 ‚Qp#@ ƒ`dø` aŒŠÌÌÌ<`&× .‰å\ôF€ÁÈÁ F®å<²Œ4¬ªff`PÊD0ÐpFéÂràt©¬n¤e h#43‡œ6„ÉæÓ?hXÔÔÌ\[SÐph7Êr + l0Ðp(™™åu6¤Ö¦s0Ðph7òHÀÓ¥ö#@ ƒ`”ÖÔ††¤„ìej€íF9Ù®bh£¶¦0ÇÀ#@ ‡°F_†ÞÁ@£#5|Øch‚nÉ €†@(²ãFİ-Æ^z5Áh°#{" Ûb®á¡Wr AŒìâöì„Fx†m1ÖðЫé@ ƒ<ÅØ ”á¶¥W €y(r®$Œ YU9“tÊÕ4¨ƒ15±#—&—"3ŽI:5Áh0£¤.j(bO²@€s.†>¹ €q0J®@ EÂíF,»´éÒ †AŠå¡v#Ö]Zt)hÐc f(l7bÝ¥E—&8@ Ö`dÅŠÛØwiÑ#9Ã` ÅÄ•Ä#R»ë.-zT2Ä0HCQr%ñÁˆ”¿W¬€´}‚‘Mp€”ÁȈ=q-¡6!+µ%¹…Ñ×ðÐ!WÐ` FN]졈s =°Ý([& lE¢/¥C €a0rŠÕ®$%yx“Òš²+ÊhŸ«ˆa†¢8;IÁ(¡ ËÔ ÊFb9ÆŠ2Ú7ÁhУ(îPÄ•©¥a™çÂ<š—Ž4Ø‚‘Ýw(âÜzIp_ Í›à4È‚‘]¼q”ðL{#0­KG€bd¡(ƹ’Ô`ä€ejÜi«ˆa…"Ö`äááá9|iÝ AŒµøCk0 ‚S#‡Þµß4NŽ4˜‚c˜–¤Î Þ`¤q €Q0J® ”ó(91¶¹ €Q(Ìx”#m›à4h‚±œp(Rv~#MKG€,ÁÈJD(RŒ4m‚Ã` Eb6Pvš(-KG€b$¡(¹’æÁHË\ @ƒ"9‰ E`0Ö1 Z0ƒ‘–Mp€ Áˆs˜3):ÌŸ†É €A0rŠÅ«’‘€Y£ˆrÒÌÄ0BQœ^‹9i—hÀƒ‘=‰n¡HÃ&8@ t0â¦:É €8ÙÅ“è¹C’fMp€¢o0ªØ ‡¢']@«6@Q;UTøVò«€Xú**+ùW®ÔWX à×_É­¬¿¤béŠ4ËÕDí`äv0P1ÑX©¡l Ì½rÅÊ•2ü  ~enk~Ø Ž.C‘fÃŽDõ`4X©aÁol½ÒZe¥ 4¡ üü2+¹e@©Š+èŠ4KŽDõ`ä778¹¡Áзq°0–ŠÊ8h@C‘•î¡H«ýoDƒ`†•÷Jeþ•2À`TXéÀ°PŠÉ¬4+X Ù®?£ 41 €hŒ+ ”•5Vê+ËËFn `x‚4”• T¬%§ °ž!r€qÈ´yˆ– PâLàíúÃ&9Ð#‘ŒC¦é@Ó‹á¸P¤Í°#@ H0=À8dr5@ D0â^:d›àÄ0¡(>°ã!4HŽÄ0¡È>°ÁHƒ&8@Ñ=Q¶ë›ä@ôFÔíúÕæ¡ºˆÞ¡(&ºràÕ“#@1Ð;9A(R¿ @ô ÆÚÁŠÔo‚]ƒ‘þôôÊÕDÏ`”¤ï±½ôl‚=C‘uå TÎÕD¿`LL¡H홀¢[0²ªP¤vé@ t ÅÄAŠTn‚½BQrå TMŽDŸ`d|¡HÝJ €èŒ;LK&8@Ñ#9ÅòVB@Í\ @ ôÅ£u €hŒìƒ4©Z:̓‘¾ë@ª @´FüÛõ‡Mé@ ´ÅA24Fã&8@Ñ8u(R±t ÚcÜàEêåj€¢i0Jv îP¤^ €hŒ’ƒlP‡†É €hŒÑƒ?©Ö ÚcùEªU2D³`d¡H­&8@1Ð,£W @È Z…¢äÐE*5Áˆ6Á¿¶i¤”ŽD“`D\Û4Rr5@1Ð$c‡N(R§ @ ´Eqö!ŒTIŽDý`¤çv}ê4Á©Ðc ªã XJ÷ä@ TE±¡ŠÔh‚ÕC‘så”'G€¢r0æ ÅP¤B €¨Œƒg(›àDÕ`ˆíúƒ#WUC‘uh†"åÃŽDÅ`Œ²¡Hyr ê#ëEŠ÷¿õB1qå&€b Z(JåP¤´Í@T FÞ!Š”&G€¢N0Êu ôl:U‚q€·ëS§KQ8UBQœ}È#e¹ €¨Œ¢Ã")k‚åÁ8ˆ×Ò/9ÅÁ8¨×Ò­ @ð`ä'¬–k(ŠíúŒüÊ+"6%Cs˜–úMp€‚£ŠÍŠü ÜÜ +Uøõù¹UV*ps+ðƒPåçææ‡)A×^;ŒB‘’ä@`ä~Ln@  ä8XCÌÈ ®´‰Ú@• éªÃ´To‚$ùeV¬àVá–1Ö0ÀlŒWBYüü¬QÑ 6Â×6”&8@AËF`€Ó”A§á‡ðd@!Q©Ò ƒÜ’CyhŒº¹ €‚hÜÐ4Q1†ð¸¹A¥#""ÁTù° Eò›à„Fc–#°l‘+øU@Á(íV©bÌÀ17üB‘üÒ € Á¨ 1n Ö'Ðd§oa*A…$PªeàD ¦D{™¬úôT.ggÔàÖ.XdÌ­ˆ¿¶i¤4ÁwŸÔ7ÆÖ*¶rh˜–ÂÛ‹h˜ˆô¡ V“[Já]Z4¬dˆô`ôõ…Ó²{ùÒ=)¹Ù–Mp€"9ÙWô€B‘Õw…‰݃‘’{i™«ˆä`ä]á ÎÎke²Â—u25‚‘¬&8@‘Œ —ôM4YaÎ:cµt F²JG€"5Ù­Xé5@#µô FršàÄ B˜4{Ú\”Å`$§t †e¤.Ò”É`$£ @¤ã²ÁŒ‚ÔFäÒQÚ˜'  €†A02 P;!¹Z”ÕÊÑš7a‘çÄ­ €†A0 (233óP3MpvVHú;A$(­p…$@ ƒ`ä`¦v0®ì¶‹W¬HóLQe€ÃÒT  vch#Z€B‚”’`d—†WY5"a 3W@ÐpFéÂràÊFV› ÁÈ L‰N) Xª'0I`Öä4 ‚‘Gš™CNÌ”¥8S³[Sb&N  L‘ÝE$@ ‹šš™C‚‹Je#;°fÉUeÀRÊV`LCÐph7Êr + P'9MVø§0ª…ÀŒª €†CÙ(ÈÌ,G*Ši† „犨ƒ„4Ú<ðtIY# EUb@éŠòÈ:h£œ°¦64$)«b€å"‘¡Gäò €†G»QN–UŒï bC‘!wE3R} @à %x´5…9jnfò‚ÑkÅ CâÓ sDû €†CƒGX€C¢Í+ªIEU¤ê €FGxYÚ‰$¹b|œ €†×³âŠšÂä#ãŠ:¤#Cá ˜n€V#<<²‚À¢RX˜œ`dY‘Jb(2è Öаáa–§N.2‚‘%1Wc§Âá4¼Fx4…™™¥5ÈF+”Äè‚Zeë¤ãLŽÐÒ €èŒœ^4ááæoA2ªöf”ÆŽ¡ªŽŽ¡!ƒ!HÌH‡AÊÈÐ1b#UÔFÔCDÇ`ä ˆ\a>HGxXW¤!ž‘”ž‹[¶‹³‘ªž‹ž{º›;ƒ;¡*忢ŠÚ—z €èŒ¢^æ+"Di‘©ÑGxÈi~[­ðD F’rÏ6 s6Òc`p 3Ê– ¡¶a¹ €èŒ ù!“NšðŸ#Q;0À`”b#)= ã  BïÊ@zÖDû`„¬=ã¥a#¸\€š¹ä„Wp ’Œ¢+V0`Æ0=Up0Ú1„b£'´'@´F¥b+ ¯„•Ç Ô°”µŸXGx4%€54¤ÝlŠ;‡$##ZŒ .¶¶î:Î. †¶zÀ²=S -p€¢q0zMź¶k€Ec \^Dè«á¨bx¤—sAÛ²ä´åWä¢#Ñ-p°DóL-êå»b…¹'í2533—8۲Š̲d#J “mKô€tÏ@Ñ¥ŠáµŠ\Irñ¨bCä@™°ôraè°-°kÈAzã»"“<à¿£@Dg™ƒÂ–)d£Ä€¢có›ÕÊugû  •ÊÊÜÜÜ+ùeVjVÊXÈØ8hð+s[óŒ\Š+¸ #<Äïýà#¸É£& ÍUp?ÛTRêÀŠK#hßÒ¡#@ѹOZD®PX©aÁol½ÒZe¥ 4Œù-¸WZk(ð9Ü2ÀTJ8y ÍFfíåÀv¸´0Y©ÑÐ*îÎz¶ ªn¶nzà JÕÌén¶¶ aÎ@lmÃ@´”³ˆ F€B FK%%×eJJJffJJñ0A%%KZ MÓ&· (ø@ h0®o—Õ·q°0–I;h¿¾XSk._ÎÁEF0f†éšŽÎ: éaaRàf"°Â¶² Ý€a¦£¶#Àá™­ bËFpÊ Ô`\¹2?(²r¥"$”hŒÀ°Rà^©Ì¿œÀ b믴P2dVsƒ=ú-¨È,,ÌAFM°ÂS‡Œ+T\@)PÕ ”uu@íD)—ôl#H—”"°¦ºT:¼¦ ”`4[¹Ò4(ª Êef t ‰üx¥  ¬+0‰ùPaKË ¥x ±ÌÌÒÒ E¤`\i ¬¬±R_YF™[ÅAÆFÄ–ÊÊ*Ö 22Àz†øÑoAi..måäµA¡“®çâ (U[wH@‚Ñ9ÌÝYU*[ =ÝÍ"h0jÙè·reòÊÀ•Þ¦+Wš¹¥]!!¤áë½ÒoBØo¥iòÊP x ª yãÜܸ¾‘Ô‹…Žª”;05BCŒR æ8,™"‚Q Ô¸„õb5óABJ Âo™)0@LW&CÂÔ,\¦+ý,•,ÍÂ!®!À LfzAz#bØ–ì`ä\á lC`vVuƒÕÊRà²QUÇY(¤ [ O*’£UÁ}jÈø7@¡#(G¯Ìðåk`x›Yà²L Ð DÎjð^ ,O3ÐlaùkxLV‚ƒÑÝÙÙA Ô_5Z Fˆ˜¡ÛŠt0×e…X©3PC!tÜ €Pƒ1œAi2” ž<—Yæû“*BXsqè²e¨‚¶0ü5<¾¤ÍQ#õ!M8€Bk7zƒÒ°ž^éº,t¥wHrh(¥+n¥ä|`¤„V‚TJ+í!TÁ[˜Gö´Ño⧪!§—¬ ´`L‡ 0÷CÈ”4Í€œP0 Îð¦fapˆp²ÚFj Û²“>K ™„.œ |½WKhu‘n€›š7ÈÂXÕÒ?A³ªr<®áñE*#v¢Ú- !?ÁÊÁ¥ÉÅÅ¥ÈLáâ^RV“!ƾaË&hèÏSsÈrÅkx"Q‡‰\ [ã@Ãjº9hx‡ƒœUÀJ†ä䘋˜/ aµ¡ƒ‡k9¬yÁ¸Ò|E!i¡hˆt,@ «  Ê…G–Ì`d\AâxÚ Ä‘%4¬6tp( ³¸,yÁ¸2`…¿IYÚ±Ú €†Õ†Žå<<àLNæÚoVЃ×Ð#M.аZ˜^& iûŒ¢&Ä)¨;Œh8,¡6!+µ%¹…™ÉÝù‚ص¢†þ¨û‹hX,¡¶å`ËD­H.rƒØêYQ¨J\ŽfAÑ@áÁØDÖ”%;5ñyEš½´½n+h8djMX¦U6Ëy(ÙÁ Ú{I Ý£ã„Š+h8djiX¦¦Æ! ¢æ+V8áKÕþ+š1Nê a±õ’º'Ÿ€ŽHHÅ¥e+V˜c.H áP6Â35•Κ-LŲEµˆ&ØÖ¯ÐpèÅpÀ25uΚXÉËÎ:p³,7¹Ö6¬.!#õÈ(€"1û]0òððpuΚX 9͈|„ÌŠ2§\O(t¯ËÄyP @‘Œ3æÍdÁ((N\Ô>17Àyi«‰/žƒˆÄ`œ¹bÅœÅ]ƒ²3(@‹óy!K~Y œ8 @$žßسb–Aä +Æ•ïi¢Db0²¯˜"ÎÎÊ,$†m0ç3GT.@‘zš¨¹¤X¨VY¢Ã2‰:iÙ1U €H FùHÈôìò‘ô¿Ó›ÁOŒŽŽÁêŽ+AxåÊ,uuõ,]¼²±‰Ï1xe0P0¤°Q €H F΢°»‡åIˈÄÈÇ—ÀÇÇÄY+‹ø@ he__ÂJuÏ1«H–dÉ'-ñvÅ ‚‘¥¡ ½`È©¯,h*^YÅ´2ˆ/ÁQÝ1ظêA`b Â’"€"9­|W®Œ ËŸèp =+R0ªÃq°z10é“aIÓJ RPTdðñµ® ’ƒ‘´¼t€®"£ýH§##0ßJÇÖŒAÀ¢ €È8Ì”cäb<ÚßÐTZ!#_q85·Cƒ±(¸‰¯ª¨¸©¬ €H¿Z|»xÒ0¹2k?=[y¹˜¯ TÅCXU³¸z0¨ J+ ÒƒQ¼âbØ\`K\Ó; Úܶn t0H4 *@¤#4ô8Åć](’™-@‘#ð0¸hž¼~ 6@\¬Ì8ÜîÓ¢à¢o€¢ä~ê¼iPKËn%Æ•DÑ5߉ŽBBZÔ6’‚>@Qv[ºä º<ú„kiy@ƒÑC È®·¦K; ˜$‰BUÐ31® /§{wÆ'G¨AH¨ŒíB  %$T¿²ÈmñÚà*(èN“ˆÂ`\IïÛÒí€áîÆð¶J`øEåiyEøeì€Ø¦‚‚~ é €( Fvq{º6Ã}"€I.ÇŒ>Z•@^T¸P”0SeTP¦‚žyz%@QŒ+Ù“èÛ‡]8£„rÚ£„¢€á–Ì×À`•ÀÒª‚ž‰q%@QŒÀîLCÑ£&Ê£ŒBB•áÀ$¸²D¬¬c”–L=ãJ€¢<éÛV BBáà`_D¥P(ÃRá *&®‚üA 2@Q!Íðhz¦G;;5ˆíì|ÐTÐ)1® jã0¸8]”Âö@Q%WÆ õp¤ÔùD`vg8‡tb¤´3@T Æ•qbœ#81® j#»¸ØÐ g§x¢ €¨æ”!<«@yÁ@T Æ•¢bC6)Ÿu ê#°;7DC‘òè *ãJÎ!:«@…Æ@1PÕ=+b†`(2Ra…!@1P7^‡b3œN êã€-’àĸ €¨ŒµHj@«i  jã-’À~ Õƒq¨-’¢Na@TÆ!Öa§NY@ÔÆ¡µHŠJ- €¢A0¥ERTJŒ+ˆÁ8„IQ«y@ ´É*+ÊGTž^ @ 4rÞÐèÎðR«2 ã@,’Àĸ €hŒC¢;ÃHµmD³`¤û"©LŒ+ˆvÁHïERdô©ÏD»`¤û"©LŒ+ˆ†ÁìÎÄÿA  Zã ïÎP³I@4 Æ•¼t]$50ý@0 Çøàm†SÕaDã`Ä‹¤¨:Û@´ Fø%ƒu‘/U[D~0ª€î„^ ¨À¿ÈÐW€Þ½$DÚERÔÍ$D~0r;(€/TP6°YºK†rk ô’@0 ^$%:ÜãJ€¢  VB.ä¶Y© Fè­KÁô`íÎP¹Ä ‚‘{%äR@0Œ[a—‚hÐÝŸìƒo‘#•3@QŒàK!Æ¿tƒ¥?äÖ@è%Òl‹¤¨½( €( FÈ¥€Ê+€E¥0ÌÀ·B/ ÓÐîÌ ›U¥ö`(@Q©Á³‚`3|P-’¢z[ €èŒƒ«;ÃNõ…FÄ@/§G¢p¤¾KˆnÁ8ˆf¨ŸWý‚qeÞ`éÎÐ`í @Ñ1Í")”.Ä@ÏÌ48IñÒÀDÏ`$‹¤hQÕ]ƒqPÌ*0Òb  €èì‡ïÎФÝ@ ôöô`Üœ4µ º'†n†ÓÆv€¢{0ð")QÚX@ôÆíÎÐ(+Ðã@.’b§Ñî'€ˆ`ÀYZ•ËÄ0 ibÀIÑj+@ H0Ø")^ZÅ@ L0Tw†fm-€ `˜ER4KŒ+h ‚q@šá´³ €,à`\FÚ­Þ  Fú/’¢áŽy€À`¤÷")QvBh ƒ‘΋¤hY†Ð@#}»3´LŒ+h@ƒ‘®‹¤hZ¡ÐÀ#Æe§é‘,4ÀÁHZw†’Û‹h{° @ t0’´HŠ’»´hÛH FRº3ÜìÆKÛ2 €>IX$EÁ=ƒ4î1Ð FâgÈFF7Ph0#Ñ‹¤ÈFZwßhP#±ã’Œœ´î-РFbI‘Œ4K ÁŒ ƒqiŒ¢4Ÿ AŒÄ5ñ£ Á`¤ýÀ&@ –`$j‘ö`d Œì´?š €M0³H {0 (233ó@BTqÅ Ma ´`¤Ã(;@ ž`$¢;ƒ=9˜aÁÈ# Ìà¨ÁH‡Ä¸ €Q0®”$t0.¡*†Yœ:¹Pƒ‘§íÐ` F‚ÝÁ(½‚CX\Ùh 33Kk  #=fÎhP#¡ƒq±#43‡œ6˜)ÁÌß‚¨U /=†hp#Y\553‡Κš.Ó¸4¸‚‘À")íFY.aE\ÁÈH—Y3€dÁˆ‘޲Q™YQgCjmx0ÒgM@ ¶`ÄÛÁÑnä‘€§Kmô`¤âqnø@ º`\É‹»;ƒ=å„5µ¡!)!‹ž©é´À €_0âi†ãl7ÊÉâ¨bDé´\ €a0â^$…=%x´5…9jnfD0Òkµ@ Æ`ĹH GƒGX×Ð;½î  AŒ¸I‘<ÂC·¥48ƒÇ")’Gxèvy @ Î`ÄÑ!u„‡—n „h#öER¤ŽðÐo9/@ Ö`ĺHŠÄú%Æ•4hƒ[w†Ä:®- ÁŒXI‘6ÂÃHÇ¥¼4ˆƒ³;CܬùMÏ;æh0#ÆÁ¸„FxPRc'=·mРFôY\Á¸\€š¹ä„Wp ‚ƒq= @ƒ;ÑIááÑ”ÖÐv#°)ìbY˜Gc@ƒ<QIáªbx¤—sAÛ²3ƒô4ȃu‘Ž`dæ§@`»QVX‘YV€þÁ@ƒ=QnÇ1P&,½\:lËìr,§0РFäƒqqu™9.Z¦1 ÁŒHã F .Å\ôF€ÁˆX$…ka´ÙȬ½Ø—€š €†B0»3„†m5µæòåPSÐFØ")Bö‚ŠÌÂÂQSÐÐFhw†Ð°írAi..m¨bhˆ#d‘Û‹h h¨#ø`\BöØŸÐÐP Fpw†Ð°-–Å't4d‚´HŠà°-æâ:€:Á¸’S·›Œ…yô4„‚q%c/)öt F€JÁˆ£ŠͪÊñ`_ÃC/@C>9¸4¹¸¸™65ÐÐO²@0À™ €†A¦F´—s†w¢O @à íF®å<²Œ4 ‚ÑnU.<²Œ4 ‚ÑnäPfqÙF€e#¢ÝÈÃÎäôF€Áˆ”¿W¬€´}èŒ4 ‚QBØp„¬lÔ–ä€æ7@ ‡*FØn”ƒ-¶" l áÐàw¥…5%d 5ÐpÈÔš°L ªl$–ó @Ù@Ã!SKÃ2õÀuh£ÏÀÏÅÐp(á™zàæbh8ôb8`™zàæbhÈ#È ä\ @ ù`§F®,høt2hxõ©,h4©h4©h4©h4©h4©hˆ#Ù§ÐÓÐ FòïD - !Œ”ÜÐA[`§§+!WIEND®B`‚PK•¨­@Dggézéz-Pictures/100000000000024E0000010AD422FC8D.png‰PNG  IHDRN kMEsBITÛáOàtEXtSoftwareShutterc‚Ð IDATxÚì]w|TUö?÷½753齓„’BïUŠ¢¢k/ëZņ"º»¬Ø Š}-?Ë®ºŠŠ@Pšô:$!$!½·é3ï½{¼d2IfR&e!{¿Ÿ|àÍÌ}÷Ü{ν÷ûιå¡òÒ      ¸àòòr?ÿýŸ;©R(((((ÕUVÕHWÿÜV  HXúø“T) Húïš_[òà_ ¼ÎD•BAAAA1 ¨®¶¦úŽç¾Xòà_JkŒT(€BÕAAAAA1½ºYw­¾íÞ‡MVžê‚¢ß´NÀÞñ#F‡ª®ül¯ü"‰Öê]‡òXeÐô±ƒ¨¹XM‹NdfëøØÔ´X-÷¿Ü»¯8¯¨GGÑ2}rõÃUlöO[_.”¢êçl÷ï;bÆÎÛèŒÉcÔ ¡UÇŽŸ6 rM”TŸ~«i{ž;”%nxåkCî]ë ¦ib»ÂcÇ ljzHÇ…ì9삨¹{½¦E'3ãîš÷j¤òûw9 ɱ÷ÙN—æH± X™ßôñqWxï¾xøX¡Uä”QÓÆ„Ø?€Ê?aâÐ&å[êr÷­•®§MË!÷mç6ÕQ®£è!}ÑZ:ÈöÀþ£ïüãæ ÝâæßOœ8¦‹Ã_ÕñLõâƒeûîÿ &§x÷M ôBá”Û籎mÈòK”¤ÏLzøÚ¿¢¬»ß:šþÄu],¤;cq³ {?(›’BÍÝ»5 ŽÜýCþˆ,¸#é»wKbFG¹Ësgë‡OÚø¨7XE·¾”Ówl×s%ä9>mÙõ7xqƺSw¿SFJ¥PynÿcdâPKý¥lküÆW#¥[n_ù}ú„1®Ø®[¶sò4)–EN¨·®Þœ!ÞÆj½¯B`‘)Ö7„‘yvï÷Ê( 4V”ä–ÖÌ6‚X…Báézì„cz©ó8­H‘YHl¾ËfÈÙ±ÆMHW9 œn×ÔRWxð|%BÜð1#ýdLÃåó'Š ç9nl‚¤;°¨/°y¿­Â¢åŸùÂÈq2L!¶›ìïþ²üÿ” Œ¡]!/>Þs…€£ MDL}y15w/›[Šj3/ZãýfÉÎZÃCåŒ;NR¹eÙýMVSxDÎR+´ŠRV›¸üâÅ¢F£Å&ˆdr¥_@`BtPÓ°OÄòâââÊz“•F¦ÑjS“;ÚÅZY°'߀ypDLB˜Vº¥½Úóqý1 )Ýû»ÍFqTñÅúëžhõh… Á.òwn;„]¦Y' ÞºÒ²:£gäÐäP•#Û9`zÊeæ:š¯ÐÉ/©=Xé'„³gÊ ¥¹¦€ˆç¯KöW±X¬­×_¼”÷呾úòêæÇKJ(8÷Ü 7%*™‹¿þqfì˜yC|͵Õ_üëP–gäsÎìÍåçæ¿öC~ÜȘ¬#™O­¾q¸ŠÍÝ| {Âèé ¾ÈjعãØ÷ùBÚ ¶A ‚Å 'Ϙ8üáÛBC½åV£ñäÉKÿüãb꘴§þ¾Á†¦=yݹEwé®WO0ÜÔYéóGµJ?bT¼¡ÌIEÖÿzlÉêES4x…NÚø*Àƒ«þ3:MÙ<ü:’éFM#£ØB¾ñÕ©D´­Y»ù²†Qš¼ñQ_›©êáWNħÅ;²¹ºÄX:‡@_{Þ,㛾Dœ¬fÐ÷٦ǞwRÈÞR¸£ ¿ÀbC5wï›{–û¾Øò|œzþÏ•'Í!ƒ<ºÛK™Í+q¸Š%DÜ£#S½¸kgy/?h ¬=uøxJ.Ͻ99ù‘ŸO…‚Îpòtî§ûŠF dA¼pòܰñÉÝ26ÜGIlÖËÅÕ/ý˜mŠÙüYC¯$çÍì:òŸ"<"\ãÔF#FÅs]s¬1™bé(Õk¥åVyôB_™ÈV†ìmàü)'ù+yÝ}Îl'Êä)“œæÜ‘&\Ü´÷üø1s’üjï\‘<:Æ£¯.4\>ìäîÚ¢sµÆ˜‹¿m7n˲ÙÙÙ±±±2™Ìb±¤¦¦ÚiS®»úùº UšïJB€³rJ0ì—>Ìï­Œ­‹Çšèé“c•"fuPÐcO0ËýUV‘ã¸ø¤øUS WŸ2Ú§)ϯÌ/={Ù06ÎsÁÂÂÇw6zÖÙ?=úO×ÜŸä!òÆ“Y僂'O54øôƒ?–OE€Tž<-4'¿HUݰf9IÿÃ%VtRë¯EUå åÑ~!2$ò†ËU<ÈÔjÇLܬ©€îôGY¡‹“<žøsÂCßèþoŠ!ä»Oª’d­;ˆ®Ì2xžjÎÕ*ýB¤Ÿ‹tñ7Y …g-Ìðv…{Iá1ž2» s‚‡¬FóÝÃÔܽone¢è˜âÔÉa–íµ8ZÝ–å[f"ã,ÛPP8oªÎ~»#xêÁ!#GÙ6c‡’•Œë 1ñþ¬^wª´äÊáqþS§¤F1;WŸÐ˜rÇüéš¿$y@cmc Ï al<¨f›œÎA3¦Æ©°!¥ÜãšSO­ùùB¸°QÙ„a!®½– hýå3êØñ׌нx0íö¹¹©nô~Ò¯Å.ÚÀý_šÛÛ4î–YN £i3sâ`_Ñ`Æ @û]Gsury«T6QŒˆˆ(** ={ö¬··w`` ( 6¯R©DQ¤S}¢Ð(S bX¥/}}ȈØ+04}hpvóLr›ñ“’^8"‹›ðéŸÃ䪀òýîÞT2ûáë‰V 3僧šúêsK¿ÈWkþ×ß$ŸuSô7ïÕh3ëK„ð·’<uoü¶·A©üÛ4¿ø“ÄË„À Žc±”‰á뜦Ç?SŶ¯È˜‰¿}±ëÒã W) Õ'—½Wë¡f‡%‘¹œªîFMÃG%íù÷ÞÙÏω‰úÖRQÉ ¢#û7™CÇj¸6¹×ÛÄZt…V™Vú•脵ƒ”UG.ªCâÚ‘ÞQø QAvAJ–ÁÁÔÜ}anN-7”˜@® ÁB!¡ŽRl¦âçš4ÌÈ|ÒFDµe;"^jÄo'zÀùÍÅ5åV|Bá{‡¿°ËزTÞ©’ÓG ÏxoÓÇ:ÑS«RɘðÑžŸê–šdúíx¹*r]’œým÷óûÔ2Ìxø¦ŽˆÏ:w©)G¶jñßÔq>ßþu¦ 1ó"äkKïwe#[`Œé4€)Øê?Ì3?vwˆ×ô!¼¥öãBËèæ_ËÅðwœå?E™»ñó]—žp°ŠðòHW…9Ò, ÚÇÿ±§XE@lJ¤Š´§:/¶!åÌ={”BX–U*•€Ã0U••ŒÈ“#Ùpà?¶N)Ÿ~ûì´´Ô6·S\ È_ÐçÖ‹ƒ|<"¾~1¬¾^_P\³ûà…|“·ãj8"¶ØºühŽÕÏßZ^ ¿í® Råå[!ZÅpj‚­ö+O”z„D"EGOoŸ-WzF‰Ö½9eõšà4@–­\´Ì¡`“üdïl>™è8D‹&8ÊUú}Î+â+g[š¾2lX’¢­Õä›5åEYB4÷/s¿x !TÃÚÌ«­O™Ð¾kØh‚¶ñ¢h«=âÉ™¯öëü¢Â•õm yþÄ©^Q¸ÙHZE ª¾HÍÝ'æD†`+"8¶ÁRœUõÃÚiÒG‹>ÿ¶WóGŒtl!¼±H:2D†¶ý3ߌòu¥íþŤùßnhTv¨äªÂÚÈÑ©/LŒ P¶ð'÷!¢E!}|g_ÕÈ‘# =–yØ•PzôœÎo°¼*·ˆÇ±rFáÍiĨŽmÔò ì@v„`ÇÇ~Ê…gG,¸ošœEy»2­dˆý§lz”çm^]èº0ûJ¬M†Ë<]å;*ʃ`‹ÄΖ¥@ÆåÅÅ1ÓÍŵ{‹ §êOT5˜5E4Œ8­ˆ¹MÌ–0–ZDV¥wkŠ ±-ÚHms}µ!oq›e` g R  ðâD½ˆ=8SU]Øøa"¯Û¨çFɘ†v…$½¤ðV‚~ƒôÔÜ}an,ò¬\ "oDHî8º:õ'Û ¿u…i÷† nýó7Ãqà›¢2nÅ)™/ßš wŸ:PbòŒúÐd/@m].B M¢›2´Ö‰¬‚í—z8ÉßjÀÙC‰ÓÄ2¨lná<§b0!€Ú:ïΘ¡ÈiÓÎnxöÈÇÿ@ÿ¹N¯C2F/Sòa¾uÉ~¾‘Õ­÷u÷„§Œeè^…áÕa›(Wk ¿ÝT @DÌüß‹7x³²iðEƒ«fÜÙÇf„¤†?2s»d”,º"Fæ BEK“ã< EÁ!óÙœŸª@†Ï ñÛ-ÈWË´mcHá2½k}4B¹“Š|g„`‘ÃÉKIÖE¯•ÀŒNXê/3ë ?ߣëFÕZù†¼F¯O® !N–[SB=Vü9þ¾/ÊR‡†¶Q…§’=]e[èÅùÆ+ù]<ñ‘WÖXoIÓ4\>Ìx!€@l]ÈÞRxeM¥]­ÔÜ}dn[£Íg°XõÅŒÌÛ±.Œ<,!¤pá³™ÍLßÔᎠ¶•Ø”/…+!Fíàœ1œêþ(îÝÁ¥’YFìX´¼ºõ¢F ÆÛï6”Àcþz KÅäáÒf–­U5»n£´ÅªUßo¬šqghÝåÌN®êZþZ¶U/¸T®à‰ËÄ\+wÎGΩîÌåFBHDꊀ!O²O0¼Åʱ â8V!g@P#BÅÆ¦ú(®²e)Bcn‘Çw/ÜPTR[Ö`Uxz{³ˆñ snŒv­çªY.êË•u  Ѳ°kCÔ S^…C‡ðôG—¾ÈöçõÌžSe.2" TÃÞûܼü˜¶Sß Tä*}…ÞËiE¼½duYUjÒ×=Ò`4×üã‹ÓC"ƒÒ"•úšÝf›ÊÝš\(¾{éu^,ª8sxíÃGÏψöDÒ–O«ÍñþJÇ¤Ê õå?j!Nínû¥ ÐÀúÎÒp{¶ÕjCb!2϶…|þ³šž+Ü/"¸®¤E¨¹ûÈÜúZ[ÂMP¼¯RÚfxdä¡i)¡N½I°6–ø&¤¨D°¸øù BÓ¯ —Ýp_ |äµÂ;¹.Mî£/-bX嚆eñš‡Ù— "(ü,kÈ_’± Ø¤ýßo3M± %4ÂÏ[m³æç+4^`Ò¹ªµ< ¦+6"[ Ñ2ÒµÀ´&>¤ö‹ä%"–#Vƒã/1.Û€:H[ØÚvµðN,¼óʦ¼°Á¾2æJ³8=“¢ß|Fr%73ÑjÀÉ£c4&î÷m‡/zGF3}Ö/ááç·=ÀÿÈh-ÓÇCë dI¼ÈÛŠJª·l?qÚ;2‚CW é›¼ºü²::Sôò/\0ˆD6x°¯â /ªµ¾ §ÄÄʾa!¾*ªpjnjâ® *'»R…Jíâë°ÙîJ¤º¼ÒZ:(SPPPP HÐ&Å@§ºDmÍ/¿ï£Š     È^ÝÆWo©«­_?ª ŠHuv`Œ©F((((((ÕQPPPPPPª£     ¸2©Ž®Ã¤    øŸóê9üúÄe›Æ!͵o웼oÒ²°ðÍýÏŒ#¯Olº‹Ü?Ç© Ç<¥½%”’ºåÝ,0NzâûoïÍó{KëF ÛkãÚ×÷.‹ú´)8 m£ü~¨ro©ºÓbü·ÊIAAq%S!/xcïÓcÆ…1ûö= ½¢H 1Æ=¢:g‚±¿ý8"hôÓÍñá7&?ý+\צ„Ê*ýqñ­ï^òØw݆)ýqñk‡>êêí]¯ŽÛjqÔÆh8úÆä§7.{mÒÞÞ,a[‰¥?4«ä¦P(ûqñ­Ë&æJúq]È#­5ßbÜá6ªîTó¤—Z,Å@¢:é¥;Œ „ysêòMpík»—†V )ݰäö÷³Œç¿¶{Yׇf§‚ì²¶0 NLÒœ@„£R^ýcÒþiË·0 ›ŸžLº(‘¢‚ Œ1F!‹>\ÖDÛíÊo/€tïüWv==µhà5X¾¤”GÞ˜²b‹äÍõIRu X¼üýlŒ—þûƒ›ÂÜÒ†ƒ†ím÷²Ñή—.Í{¿ûâàÈ¿ÞÍf˜kï½1„!7Þ{í{+¶¼û¯Ã‹žc¯¬cæ‹BJj±kÞ±<’Z2ÿ•=Oql9íËIJ\rûúì&Ÿ²§MËi÷±½AèÓm½QPP\`ÚP];8<;ÿ²U‚#oܾþÂ%//›–¿qwNá#o,ßÂ0ó^Þ±ë¹éÐN(´'w½:cŒç½ºëÉô¶w»’”>q0Ì–åS—üP,¶×¶ü„¤?õÇ;wîÜñÕ’DŒ7-ã°(J`˜-Ë÷Nüã§Ò )þáá囆,ùjÇÎ;¥o¤;És;¾Z2.¬ÿ·»Ú()Ê€Ó q­ù‰ÅÃ{7Æó&¦5•6qưi¯cew’çv¼{ëºBˆ³ò§>úâÜß^ømõÜüÄD`.þ¶z.ùÇ–ñmÔ²ðí ç¾pÿüO0žÓ&A{vE-¼sî'/üþÑk¿¤¿µ0eÑC‰rÿüøšƒ?ÞêLDwÅIx+#|ý¼Õ÷Ïÿ0žûbÆÒTÔô–c)ŸÝ¯Íýä"ƒñœM‘¬í¨ù6UnÒä óÀsÖ¼½0Ä!«¶åÄ$sý¼Õ¿Kæ€Ä‡ži2GwuEÚ}loÐ'ºj_5 Š´tÉâwßÿPz³ÕÆSP´ã’Ì÷¼ð\³fó£©+²7€«FAAáˆNæê.\Øþž7öz9úMÐU§Úè;…¸'á—_^h‰o_y|ÐAá;UWûõ8ß«3šÌT#Ù«£³œêèK|(((((8ÕyyyQPPPPP dªËÏϧ¡    ÈT—ššJ5BAAAA1©NZ–òÏþ³¯¥Þ|óÍ?üðC?HyãÓ>—ò—»oß±ñßFcÞÞÞ$Hmƒê“êóJ®i?ÄØbbbúGÊ•`5ç+0|ðÁ¾“úÉ'ŸøøøôŸ”{ïèC)ÿ÷¯˜ Í@ÒX§K“TÛ ú¤ú¼‚õÓwRì$×R:]Ûßút¹Ù ¾¾¾œÊ~Â2ý´5x`h¬+NLÛ ú¤ú¼Âõ90p%Xmàï«ãz F/7J ªOªOŠ«ËjŸêX–RJ¨>©>)(Õ lªëw¯nËÑÞ™é?:æ³QÒNNAõI­vUP"bþûÇ0nÜe«ª<»jeÍþ½!¡aLC=ž8yðãO©»<Ûs–ê-¾ìÏF™±uSeUåÜ9óƒƒCÚÿzöÜéC‡úúúÝt㟺›sÁåü††.…ò½½}E÷ò#Âúõësssíãââ–.]J‡fJu“êŽg;qòx§92ûy[B ,C¼ýRâ“®! w£dgr.yk<1Œ `Q4[¬•5µ¡¡!CbuÕ«sÀæð‘ƒ×/\Ô>Áé3§æÍ]°{ÏÛvü6{æ5Ýʼ®®nÂø‰]IyäèáÞè™Xx(..ùìóÏu:}j¬»Œ IDATjjz¿<ÉÌÌY½zÕŸï½7**XN†C‡æn!8»×²÷;“6P?ùVßèDÏ.¿žêó‚ê¬<ÿÏãÛÃ=#Rý†D³ýJu'Nö™ç:«ülÚÅ?꺪“öçQ: ™…<(Z­Vµùò·ÝûŠ‹ |||½»æÕ9¡:¥\æççG0 b9À“söée£¦OóMf-ȳ±Œ`¼’“ãÊËwßú§E²4‘Q]‘[XTøä“O^ÊËK?ÉK­”4‹šûy3B!@5Í—²Î‹¢øû¶ß»®¢^—âöPrùrÁìY×x¨5y¹¹²ÎIêøëþ{C‚C|¼}'Ošš››íÆÈV«¥ãd …²ça„Ó{ÿ“ñų“ÌÞcãÆ&'·z®š0axIIõÇo,SÕ&J•Ǽ?¿:rÊŸèÐÜ¥QA õ•â©ÖÆ"¶*7@4š®Öâí§ TG©ÎŽÙK—/\¿ã2ò»pêúñõ·OLdôäE[Ý`°,K‘ˆš†Q©D†ÊÔÌV¦"òEˆõõôßÃ’³"ŠÂÖÝ’)är‹ÕRVVzùòeÇï+ªkoºvþ7?n¼aÞ,…¼sÑé\ƒÃ0N©îäš5ÁJ..$â±Çó¾ÿ¤qûßé7GÝ~aff Jµ÷±¥×þº©+åÇ¿õö[ ñ ¼ 0Ù5‹ ýBˆAÀ 877WEŒ»Ñ,:•‚ysÙ3O[«kÂV®ÔŽJéTŠÛCI£Nçï`6›'Mžº{÷NGª3ôssn¹ù6Q•JeMmmou!QJ,+àž …„àm_­šŸPÉ=¦bÔ‰~~±±ñ-.? „Àj…ŠŠxEhbºç/¨Üöõ*Ju]„Ù üE_œ…Kò*˜€FucRÍeF_ Þ~'€i°YÄ0D¦”÷í Nmmmeeeûïýýý¯jªx‘· j…)bÜŽSÙúÆÜ›ÓB£Õ*™»^·©ÎØ€‚é‘A„¬Eã À(Xtó5xØ*…Ìf僂‚´Z­ãƧ ÅÌIãN\È7rxç5d—$†³WÇÎu„ª±Þzü‡“ŸÆ¤<¸ªnh‚ïði‡×ýÝräWNo¬:rÄi†N­+ƘAH&c~?v©ƒÄóÇÄ cŒ±ý}¡½ …A “H…ê`Á¦)S&ÿü —2¦c)n%*•jÓæ_æÍ½–|äØá1éc›\ºƒûÆ/"˲»÷ì’4¤}»Î~}øèÁŠŠò6ÑgBÈÉS™m9cN—¸SàM†F™ÌïxÝÏ¿ÒØÐøÖ[ož>}¡M2­V³bÅJ_Ÿ—Ö<{cp¡±®†æG׸XÒñá^ï-p•R+Ç••e—Oø*#‘)P0ʽ›š>4ñܶϽ|°µpü 7 é£1ý\IÞò7jÔ^A¶±JO12×'‚êëëKJJl6[û_KKK†ñññA½÷ÂáììlGHÿ2¤¯¬†}¹h@“¦>($K¾9T;>Ê<<ÚÃ_Ã*UÊ~¤:B´8uÒw,FZ œO˜ýÀ%Ø,G9… îEiÞÌW°0SÑìïŒFã¹sç­ª¬üî—MQáΞàëÓÉÓˆ9C„aBˆ£KÇ TßÐÀØljQªôÕ[VW¤§š}ùðïuÛÿuµÀ˜ÍN3têo%&$Bƒd,Z06ÎÑÿ @B!€ ±ò‚(bQEQÄb7¨®c)Y»ŸŽõ-»q?ÖÄOäù½<0å詎¥¸=”Ì™uÍ¿¿ûÆb1 áÉ#~Û¶E¢ºŠŠòššê ã&‰¢XYUI$ávóóóµûs¥¥%ËŸ^ÙiBo­{½{ñR‚ VðóõãXöÅ_¡m·á8„——·ÉÖÉXÒ‹Tw±¤ñïM#ûø«”ç0ÆÛ~9–¬  8ðï޳%Ϥ©*Ÿ`®ëC¼ÛÒSî½ÿÆ7idš´žØü§I¾×-ÐËnV£þÁ7þ~ëºÃœÒ£ºì÷ß;.$}x¸ŸFÉ9Ä\z‡çŠ‹‹òØl¶ââbè-¶;wîœ(Šv’³_œ>}zĈ}a5b1×^€±ýk³‡ºÆ×¿ö’¹PgIÀq!6¿Ïî=A¸Iu!Œ1BR,PšB †` Œ““l™íG.äç•$ »ƒw·ÊÄ답>á¼äá¡áX&99Ùñ×äädŒñå²r™R±oÛç#üë’kCR‚†\ëü9ÝY¤7`[\ºfÎSÉå‚`Ñ òîÕÁ£fW_Ø=vŽížúï_‘©YwuþcŒEl¶ ;Otxâ°Q%‡«[Þ•SÁ¿nŠßvÇ!ó|-†{'“?ŒqÇRÜJ4mB|â/¿þtÇmw †Q#RÚ?~ÜÄ}öLŸ6S™L¶gï®?ÝtkÏ"6uÍf¥>¬Ó5v|‹§g^M…’Éd)Š\õ·þÍÌÿ{û%Ï€PU„[P~åPEÄŒ¿0^-«©0Æ¢(J=‘eÙÞÕ'ˆhÞL4Ö”kwW•½²íÚù‰ÉÉ‘ŠÞª#ô ëP/·áHn^eþ5ÃB½´JÔ+í¡cžkÃv¾¾¾=wöìYi¦ÀÑŸ“þáÔ©S#GŽìuªÃ6³¾Ë5X HäZ/³Åb ÷UcO=1•ä žçÙ½…ÖîP䡿õ}Í>!ƃŸCT²£guqɺ·&Åfª3OƒÇH¥B‘•uÁi0z̘1D~ÿî_‰†ã67TNwEu‚sªif‹i&9‰è¼½¼˜øxãéã~#ïø{ÁÏÏ“¼¡nuÜÍkïùU×xA1l¨Ð5ª³wZc³U˜04Âa`$„H_‚ B,¶&¯cLp÷¼:§RÊs·&ÄÿôÌpè´)ÀÓøúC`õ˜Z5æÏJéIWœ2yÚÿ}õyVöùȈhÿ€sçÏœ9{ÚC­Q*T„“§NÄÇ%h4Úžô:»W'bWWÝ®Žý¶­[·:ËæÌ™Ý·ž·íÚ~âùTQ¡ X8ǬW{¶ðœÍf;}útUU•\.nóŒÛ T‡ ou Xô*¾Q­® ˜¶óTMá±=#¦'ø©ÅÞq¹DQhëÕ©”gƒ_—HÄ#‚ež¡^J®gñÌÚÚÚÒÒÒŽyΑí!~~~n‹;sæ Æ˜¢V«=<åÖÊkvlªúÏFP<õŒÓ ;ð·‘Xlü‰ÜŠ‹Hˆ‚»9W×^ ßpþß×ßû™ß¼ckõ+8=ô˹I ¯„1éXJ‡æI'ÿ±{gbB’N§7vâÙó§#"£!,Ë”•—Þróm= ÕÖI4d§@VV–«º$&&õPâܹsÛäIˆ¤uÜEõ.g\ÌÉ Ö_¾:¬ PA¼ä°·fk.ÍÀ€Õj ÙÙÙ6›Íd29uézªOÞfiKƒaÊRàL õ‡ˆ(qWn9[wczp/Ͷ†" ƒU], «VfðŽ5éŠ+jGêp¸?ëì+s[@ee¥Õj•Éd,ËÚl6™L&ÅØxžW(„û¯c›ÍVYYé6Õ>}Zjç„OOO†aüüüjjjüýýår¹···Á`R=ztôèѽ٠D"WbÁ@ ç>>J.¬6/ÜMž><´Ï©nLúØŠŠ iOš=†Ù†îPóŠ÷Îbƒzâॱ5\>»»E_I`F œ 85p2MàôéÓëëU¤Þhiixw˜ E\yNÂà =ù¤÷;ïè9%j ÆX\õi­­yêÉÔ©Ó»ÀÄ‹"HþVR¤›«9ÐäÕñ"Æ¢(¢ÝyPm+Å¢/‰â>Û}´þßIc}åÏ)<}|7d_?zÔðÀЈN¥ôphŽ|!ëüþûFL•Éd …R„ÐïÛ›2ijÏÍæh qôêÖÂ>©ÐJqôêšyŽY³fõ5ÕÙס´*˜ýl†ýË®Ri/Å)Ü–"ü®çq]°ñ©U1þð€-"Ò›m¼ˆ%ª«¯­Î¾˜«ÓéDQ”ú¢^¯ïu}ŠV¾.‹GžŒ¾V”q¶À!…fY©©1Lo*ц†ûGÈ &$z¸ß@ ¾®”g8¤o·)ÒçïêÆ“—c6û©ªTÑÆÂú¸:klcEÐñúœƒ¼j£&%0ju÷FmŽÓh4‚ H|¦V« ƒJ¥â8NR‘J¥Â³,+EàzÀÛ-ÓrÕÕÕr¹<44TŠ'UTTH>C§"Üñê0–!VdN>ØÊZÌ…3CUs®O˜ûó©SÛm†QþCÂC„¾ `VTT „ÂHñ˦CvòCî“bÈßPf½\è©àd§—Ôk}½µÄS™ Ƙ·ñú†F}©y_î›ç ,ž¸Âdf€SóÃ…³¦³e)MX`¦ë¤5™þþþž~ú@T”íã½òòd%"È嵃]œ2í¦ÅÈ”J¡kT„ 1ž—þäðHÞÂsöõ)‚(J7v#€ÙZŠhÓE™Öå^º´òc¶±¡ú•ÅÌ pù'gG‡Ä a¶ Jé¹2mÊôïøvÔ¨BHb|RüËù>Þ>NPéfǃڦ D±½¨öµaý³é2)©§ í$¯®Ù“#„`©ÿëtÁ],Ü}±¤ñÇfò˜H‰a£E ^~d†€¥fà…wõ¤‚ŽRøv‹JEñøÞ¼ú‹>ZMPMÑâ Gx°5T‡ÕŽxhëÙé‘rØÉÁ¬N§Á>9âééÙ^Å"`¥`@ µ…¢Y‹eÊ -€ @ ¡C‡òºº§‡.áv[%¢ÕÊ›@¥Ä dÖNØó—7?J\m. ÎúàL…«jC‹Ês¿®šðMtÚØîòœ}6›ÍÒä…B¡°Z­Z­Öd21 #—Ëí¾Çq½Eu6›­ªª*88Øî\Úl¶.®yq‡êQ°a9#*¼øò€(ÛÓsâgOоãÙ7ŸüÑ ÎÌœžZ¸øÚ±¾}HuMëòA¨åŽ–=Gm¸ž:÷yÈ D†á ygA «PÉ4^j©& !‡÷†LE,Bfs÷˜7Q}AŠ}ïøùùM¿óκyó l6›B¡HŽöÊ/òöñëbôRš|ÿ5O/éîŒB·Û¥ À}@Yªßwÿ+šúÓý×ÔOJ–/~[[Ñx 6¦âÈ¿wEJÏ©N£Ñ&¾ãç sÝb2™4mÕùs³o»³W¢w-^ØâÕ%%%µsæ KÏ› 32¶:¸sxöìÙÒ…N¯ëJD±‡ú4XÅÂj!€1ÁDLD Q$&CL°ªçjí;)6 ©Íö ÎÉl ˆÆ ’Åò¼³Øý«Xœ’zNö~¹9È[­Ìú#L¡žç•JeBBB@@@ï{u/Ö4χXEV ¸ ùFO¬¬—h—¸ÿXFxž˜ ñ@à™m“_½wÃý?3Ýü½"R1sd“wœ0Ï}ø›@5øÝb»K?‚ ˜L&­V«×ë¥îoß+eßñ¬ÑhDQ4 …û‹nÚÄEW¸øúúVTT8Nõn/D=Ø¥†5]ž¾(ýÙëÆ’¶ÕÔêE¢ç±mð„ƒ—/þïÐÝó†Æzv¾ÛÎ30‘cÔRb·¦c¨PËñn²lµEÞÒâ4¡ŽC ÈÏ_S#(•ŒIßWç<€i/.ãÈÓÍÿjµZ­V%‚´ñ9'¿XèÖænÒZì.p·–¥8HYrƒ1zð„EeÌæÉ‹o?¶^“WÆ$Ƈ#€6…Á}À”´{ß%“îÜé“c'LÊÏÍ©¾˜SøúëQÏ<Ów^]ëµaÿ%îösb×Òœ9³ížœ}K"!¤ºªº¯˜ñá^mö=ÀÏÏb†0ÛK?ËÓ,JðP±Š, QÈår–ecccccc]ž=jŸ‚àx»Œka»‚º½ƒ`2(mñ¤¡;Ži*\xíÔÓlzðÚĈ`Ù·û à¶Iƒ‚ÆÅqJ­ìbIwyN X–åy^Z*"Í–9’œtm0¤¥+=¤:ûµŸŸŸ\.Ç×ÖÖúúú* ÿššš>ê'wí^ôð=±±ž¾ÿá@oÑ¡E‰–:¨±Yeƒ§¦H™þí®²±1†Ô__DZ½Gu‡š0~"Bˆ@ÓêK`ý:h5U×݃Õ"Xü³¶™´ý¬T‚Á(¢ÍäòQ»X–âà¡¢vlgïiö !DtËßê~óÂnH™–\1eú]·<ôIaPüÒCÜ _(žƒÄøH™LÖ¾$¤–¥˜‹ŠJÞ|³nóf³Ñ8{èÚc'v¹1bÌèÙfó¹ó*>úÈwÁ‚ðeËT‘‘îö:»W¢(Øm”`wçì^B DZ<Ï»g;ÕÙyN `–—— F“ÉÔE3õDŸmæÆf?›aïÛ^½„>Ý~l“Øh­NL²Œš¨ÑxlVªd6­‚+Aj¬Hxâëëæïïß—Ð#ªA¦h¹@éŪµH¦dùN–³!ù'ãÄñwŽëÉf;‘±ˆ K¼Kþ5(J,lÞdò•Í ÈÞ~æØ±œû¦ v£#Èd2¥R)m‡uÿjµ,‹R©ìÝõP„††™LVUUe³Ù¬VkPPPCCCßÍÕeWÖ}ôæ§j@ë§ÑZ—Çs`ô©µY,¸Î'¨¾ÀRÒÐ0, "¼¼lÕWr-cµ0"oÐzõj]ˆ7ïÈÖbcÉåÁ³b£gJîÌÕUWW#ÇQóñÂL«;wT«Ž±YKíº*‚ƒ3 #³Ed8…«±+¯š éHxö i®Á`¨ªªb9YiMMø ¸nQ(Š<ÏK×uuu«Ÿ[e³ÙT*Õó}¡MØ=,4´ªŠk¨¯—Ò‹¢Ð-)>ʪ÷žµüï_í9A´rÝÇOÛ¶ãÖýæÎMOOO¯««ë–÷†’úÇ/¯_Ÿ@HµRyÙ`EHÄ8âÑGap \ʯú׿X†)#ÄO£‰„œõë• >cǺ×µÏnjBHBB¼cü’aXieš4ÿÚ3¯N´ó\S“`‰ät:ÁÐùîž^ÞlàÀñWî\žÌ ®Í9!Z{k’GÚ¥½1"–q(Ì%%&q]8A«'úÄ3Ã*[x®²P{ñ»ôe7ÎÿóÝ~½aˆ6`xÄq˜çDƒíÀté×¹óVÉ`Í;Ï­XÜ™ *))±Z­-îió8c±Xš#µM½[.—õíNœ8áHœm†Y†aÒÒÒzÝjÁžV¡IhIƒžc˜`O ‚U4ã 6=Ñó ïÓ `‹µŠP¹‡¼ÎØ4¶·ÓîÁ¹Ëe’VéKdÁ0 ÓÎlù§ûPø 1ë°MmlÓwòÇë1¯W«9³3œÂnïöT×þÏö$']ð<_VVf2™£££J++5Þa­Wû|:&!ç¥?BˆÙh´šÍÒó!„çy“ɤ×ëõz½Èó’£"ð<éæã‹Èê¿(Þø`ó¦ýD-Þy¤¡¸š{ôMs\\Ü]wÝå†Ò!\ºtßþ;…ekF4cFн÷ªd²2N›œœpûžÃ‡—ét*™,èÞ{ÑŒµFc Ë–ûïnºt€1æ “ÉzQKs“ÎÀqœt.ùÁCûÝf;ÜŒF]cyyÙÙ³g¤M:®²²bÝ»ëæevÁí¶>Û·%é"2@91ѧ¯x´ Wp\»µõõõ•Y‡Õ¦bOC¶Ö˜ëeN5˜ëÚI‘=Ñ'EÁŠˆKê*Ô¾iúw§'øõJ} Á¢hF˜¯ÍVZޜ̾éÔqj«Ê€â ¾¸‚wO„ŸŸ_DD„¼ 'ÝËåòˆˆˆžì—’’Â4{Ãm&}X–í”çܳÚŪz« ž(©€ÌâÊ»¾Þœ_ÓD ,C€`@!TJ„TU†/ÄŽôŽf\PûËRPó‰`Ò#6‡ÃSˆ›“uþ±3.mú8"LåÜ«CÐþ{oOÔh\CCƒÓÍæ¸¯ÎY½¤‘Ål6××7Œ‘¼÷Ð!¥W„ÖÓw3r$b‘o~¶"„¢(ˆ"²ÙL&“ <Ï Í°ò¼ôª^BÊJŠ».eú„¡ŠØ¥'Ÿá؆¿ÞY®V+,7*UšÇ{Ìl6»!ŽÑÓœ—¯ä8ÆAsæ\~ì± ¥RâsÍ5V«Õwî\eHˆÃ|óMô»ïVþø£’ãL—.ueá–¾¾¾ÇŽißy¤åÿv—Ža„Œñ'Ÿ~è˜8À¿³/Rý=为¦:$¤éŽ/æhll¨¬¬øçgÿœœé'7öƒW'í§Ž÷úóÚ-à°B¤óíO”•• ‚ ‚ˆ‘œœìjÃx/{uÄ‚[*å‡FŽòÂsO îݪøù}÷ñ×O¼ô¨J2yÆŠ'¯K<™§ÿxs΂†s¾‚ ÖÝ´ÞÛt.9ØÇ=)>>>ÐñÙ`ÏI){7’éèÏu|HJO¬výð¸_Îä>»qw¤g¥Þ”Y\ù؆?>x"¢\1 ‹”ÞHác²ê†ª GùL‹ðˆ ñw9“åþ[È[^„ömuÍ;ëp/€é=^Cuº³öà¢#ϡִ'}Ô¨0æ«dåååN©Îå\]ëÐ¥ãØ16 ­fÏþƒrŸpOo_±û3$ˆ€Ål–< «ÕÊó6³Å"åz½Þ‘A0[ÌV«Eçõ:]·¼ºYÓÆðæ’——OÚ½ý»I©>‹V©CÃB BHÚ¨Ô])îœV‡±µ¨H'“y*•<ìë{Îjå.,++k:|Á‚¬“Uª’ðT*u‹­XoµZ%Ç«+ãõ è˜öï?uú¤4ç·$„°,‹Ì5ªkªNœ<ž4dhw+Ͼô&›Ë]37…V³¶>šÛäóî#ã¤Ü®R†kt8NŽãÂÂÃ’’’ºÎs=ÔçÅÃGgÝ5Ÿë§¾ñËšñ}T»¡ñC~ý8ƒA ÇÉ9¥'øù>¼ú2Èòþ8e?+èÉ÷ôd^!Ô1ÛÙy®›JY­·¬¶zÎø:“eë…ü µÒí JkMÀlˆ#Xå‹M<NÝ8.rá„ÈQ!>žŸ¸Ömªëaä·cØl6uÒ}÷>(vÑFr¨UÐ wzT&ˆ„tKõÒ);«írY…Ú7ÒÓËGt«w=µlÙ¯¿®ñðà8N¯×/{f¹·aŒÛ0Ïó&ƒÑb¶ð6/——••uêlV‹M°êªNšëÎEGØQ:mñ=”ÒÝF)¹Va·ÜRòÅ~J%«Pœ-/ggÏÆ×]×ÐЀE®½–””œÝ¶-ÔÓS‰PIccà]wY­Vû15n7Q¥ ø2Dzœô¤i?)¸´¬ôÜùÓ#G¥&Æwõx0–“{h| f!-´1ìoãê9k.Ð`4^þ}MuíË®R †ÂÂBièôööîîRøêsû×[úº‚!µ²ebÞôéÖK—̇.lÚœómÆvÐÈ?´ ¡çR|}}1ÆUUUí ìù)Ͻ7¬¤UtËl3/ @ë÷f¾·÷Äg·Ï óPT×”ˆ<²1•‡£SžûóÌ1…F)ï|#w7¨nÔÈ”W_©[ÅMKÓÝ‘Ë/rTuŠóyû±(‚i™DA IDAT?Á"@@0ƒ#†!D…Ç\oßGÜ•¦Éb½”™aX§^• ŠJ|Bb4Z/ì[o¿ üÚ«¯bçääÈåò¦Ã'›aOYZVf³YÀl6€Ö³«"øcÓßÞønÉ­Cÿ½±¤ ¤ñî?§ÈåæJén£”†àà§Ÿ.S«ËöíÄxLœ(›?_:á šgȹgž±&&Vîßϱ¬v„àÅ‹»îÒuiDZ=âϲMŽ(âꚪsçOO™<-!>±[Õ™ÿÀ››?[nj¬i­ .âéJÏä?­žãd}Gu‹Ål6?ÞÕ&ñþñ’û ±»šN™IOÐË®¤¿¿ÿõ ÖÞµšV!×*伈‡‡üpßÂñQp|wƵ÷ß ,òÁ×Ç'vãµuÝ ºô´1éicºUîn d„Žã<¦þ‰ŸpCó4Œ}ßnKè†aûá&ÒA8jµÚÕj~§±Ç„á£;z]¬Ââü]ÝÛuÜ~Ç·ßqG§ÉV¬Xá^þ2¹â›¯>ˆŽ¿¥ ç±tQŠR:j/êñÇñÒ¥Ò*gi«=¼)½[²„]ºTb#»íz¢Þ˜˜Ø?~¯}™ „PYyé}÷>Àuÿù!c ³@x³Ùl2FƒÑh0ôƒÁf³Êår¥Råá¡Ñh´*•tÚ»‡B¡ì“-Ïþþþ .ìçA“âj¤º¦QŽenÙÊ ÞôéÏnäãþ²”¾pü …B¡èù’¡N©®¯±åh~?H™8ýº+¤Q"‡CD@¥RõCõ§O9}êÌ>ÊœãdZ­L«õü/vr ªOjµ^ëѾá~§ºù£ch£¤ ú¤ú¤ T×iß C Õ'Õ'¥ºNu˜ö :”P}R}RPªkW O>ù¤d÷”íL]úAJ§r µ ªOªÏ+YŸùùùCÊ•`5´tÉâwßÿ°®¶uàããÓ[{ì;@}}}?HÙ~º|ÖˆQ—þ‘Òq»Hmƒê“êó ×ç€ñê:®KÿXÍ ÕQPPPPP $pmØ•j„‚‚‚‚b S]ÿ„†)(((((þkT÷Ó®LªŠÿ:ž¾ÿf§ß¿ñéT9=¥: Šÿ:Éùøø ¤ y Š+”êÖ>ó`_HÊÏ-€˜¸pªt §Xõú']™-våóQPPP¸Ó?b(ÏQt—Ãè") Š«‰ê$ž£ èm¦âêëëéäÅÕAuù¹%/¾ü‚t}ß}÷Ýwß}”ù(ºîçQߎ‚‚âJ§:‰ç>ÿüséãê•k>ÿüó_~²EA}; Šž£oW`ÆÄ…¯^¹æ¾ûîsürõÊ5NÚZ›òÈÏ­_Ú‰ñ ïŸX5ÎÍR´Êð†õÇW;´6e×t÷3¤èØ—bÒu(ýAußüž¹û¨¦ŽÖÞ9'µ»l7.eÆŒ9Sà䙣Ðùâ”q«NœXÕDQÝ%$W·,Z|Õ¸&Ö[;íÄtjø«ÅŸ£ªÿæww¶™Kô6jøèºr³û…-ùöž””´´´µ‡Z¾HKKKKKKIY{°É{ûù‘ûïíitú¢¶Ô˜’–––’rÏ·%öoÖ*ùöž”””ò¡èй: Š~¢:‰ç>}~ê§ÏOµì:òsK|CTö¾!*w'êJ¾]õÛ5¿ž8þ˲‹IÄtèË×ã×?~üøñ'V‡q«N¼CǡΒËMßÚƒ<~üø‰‹óW5“lxd¬=qâį1Q¶»2|;ª ŠžÀ¹ºßO•µùfÎÈPW‰wþ¾GŠ^J5|ôÎß÷ÄÄÝÑ}±ÅùgÏþ|}Ú›ßP ãV½¿+--톦èdذ4ígÀC—ýúå8€C­<Åë^?Ï0ß0 `Ñû_ÞáÑñ@ý¯ÎÕQPPôÕM­Ý}Tÿ?vÛ?v@lí]:Wß»µ|Q[R·êøñ{¾½'åžË¿JôÔÕ[{Š_†Z›²‹¶†+П£ÙW'q˜­8tVéKûEΜΨíĸvßHûœ~´ו|ÆÙ]Âã·I—«V­ß’¸ýý:WGAAqESìü}@„ÞÖ>¼ÝEš)ô hŠü9·yŽcëf®È`Œç½²ã‰t„þuhW‚ã—8añ×ëo ýŸTÅÿ,úê`0É¥ëÄùË®  è=š«;¾_â&cÿñ«›®Þž1cÆŒ·Ò;}>磻–þTÖK¹ýwëBAÑËTwóµñÒ¾ºÞ‚=CµOÑEßÎ-¦Ûl¿Þ|Us]ñ¼—¶mÛ¾}ûöíÛ·}¹8cÈ**¥m‹‚R]Ï1÷þðöTx{* ì™öðÀã·PP¸‚ÝŸs#†Iȱý›ã„Å/-NÀ6ïoïFR¶áѳfÍš5kÖŒG7”‘² ¶r8:Hàè4}Ý|£ô±é®·uO¢ã½Í‚¤$Ãd<7{¶ËÄ­u„ÈXHŠ s,˜³¬ëxìm{©ÝPFÚ;jŽen»”ÿôé+Vº¨ ÅUIuÒôÛÜûcäÅòˆâJÓùöÏщ:Š^÷ç$Ÿ.ƒa`Á=7¦›–ä$†Iȱu3ïú(§©ý39Ý3ûûÇ®$PôÓÒÙ÷|”Ó<FÊ6,½ëûG&ã9Gæè\¢ã½LÆ ×aÆu¢˜u+2fÁ=-sufµÝÌç2ì¥ÊùèžÙok¡Û¥s “±bæÒ6\ØFEÿôÕ²‰Ã¤SQ"OMëú®s ;¤¹:if7™n3³`bBèÆ{|ô\ÆæýÇŸLOo3â;®X9öö û€Þ•ÒÈþÑGÐ*Í÷ä0LÂâ/ß[J޽=û¹ ؼÿØiéu%CHZòåúC’è'+«¨ ÝøÄŽW`æŠÍ°ÀqqÍqׂœ<Ï2ÏÍή1NZòõúE¡-É\e•Ö|ïæÍ Ú”yó—?Ý’vc(BÒ½xÞK;ŸLoþ5çƒï/z2Ý©Š$'µM]((®V¯®'(ʯܱéÈ7e|õÁ–ö?óÇÙÌKÔlÔ·ëÍÑËy¥Ñ:mâ<Œaó—voƒ²¢<ÀøÿÛ;ûð6ª;ßÿfBÚð’B ¤HVD°‘¦[‰VEáËvSU"Ý‹·õŠm heûY{iXUÚn/¥R´5Y»Ø*ZÕÛõf{倫ªÆ/q m‘"ºM³ÂfÅ–)MR(omIfî#FÒèŲlËÖïóøÉ39:sæœ33ç;ßsÎÌ©5 $\y‡CCQF`¡j‰V›=®A'Hf¢ó%HŠÎ>}Ül1ÝŒù ˜y ¼h):—7©´ù«ò&;ÔÇö›šä)¿¦vs«AÖš«+ŽÑgþóõ¹s9"¼ýÇ÷^þÕÔË¿šº®êêÆ;?‹ço Sô{uóCnI’´2@’$LMæõz¦wa.‰X-¼21kŸk¡€$b)(ÁŸG’@å|Jå?P–|ŽwÈa~¨½Åin§ºº%Åhp$%ˆ9ãWÞ*BJ—:xÖ?ÈlÜ,Ý™ùëË‘ç™ CSž¼Jðs Õ9šŽ&#¼Ý‘É@LÇmvg¢ó ÈÕ³ž7¯®Ôš2´$arr%ÈèœÆ>Ú©`;ú| „P×ëˆÖ›-=âT›•3ÏiÏÑH›ÕÂ)ó+‚”åÕÙxçg|ç൫/ÛpÅÔk/¿y>íïòË6Þ}ç=¾s-]%PÌ{uóÉHÊôú±±±ÑQ»†¢ 2˜g}…J $9å<J4ë)¯ZçEKÒ÷ÊñSZ‚lg`\C/¦énÞåS;EÇ€I ^vÂKÞ¤HÒgîáä™™À" "s_fè´ª|Ý•õµ"ÈZvuâê@í 7gþ´µF7+¶3qø`VgMý6µ·/\7¹àÍó’eÅó€MÞ~˜=t‰ŠÞ.¿ÒM‘$hRZ[¦Qöù’}˜ò&S­×9å³4$úí(­Vëõ²F*o^xöJŒuåK°J,rjÊehtPµµRŠš"}æz80v7û“3Gj…}†ê{ÑF‹«¥GÌÌ%É–”œU;ÎOÀ̬ég)/ɺã£*³,x‘#kÁÕýë³Ç~ú³é{>ºÐåË/¿ìŠ­5’­5’-›?Áü]·ióu›6À¯&§yøû<üýŸ{žKÝ)¾Ôj(Ô»—ÚËYµu¹Ød­À—94ê\Ñ÷^]`2ZUzk+WiéÃdÜŒPß;`ªMÌ ¡4öñUº$äŒUHÆyf¯äM „:KüWªÖ8ÐÛk1I3*ä@ù3©èµkHŸEÝæ‰Ñtî¤(JcukÙNc’¶/Eiã¹úTyË‚ «ÞÕýë³ÇØU˾ô6À±Â×FÈÁóþ£Ò›¤ùï|Q[A»Íöt}Âil²#uÃÕ.60±Lkb­×¸G¤¨mû“ËáÅ·=ð@Mæ\}æ'¢3”LyoJfÒ·6Ù‘êýÓžHÍú¹¬èû&ôYÚ÷±±Nö¿4²OîïK´ËÁnµcóEPtNLtfé$äý)ï ajÞõ}cìÿ„<ÅÊv Bâ¤Õo4ÎX [­æ:D¶paŽÄduJ£sÌÅî}øèÑ—ÞþÊç Ý÷Ý÷Þàé¨üŸ<-½IÊÊ[ä¿#…I§Õº8Íd6ˆ‹J"*f™V4Xg•Í¢äÊ ›apÖÝ,ØZ¡?RÂì aÔÔ¥âÌÉãú:eΣǥ/žl2[ §÷óŒÀp($‚€MfÜYYbWü{u0D|†F§‡#µó-o„’A¥b¹§¥<ûëXÚ_¶˜—_vÅ«Ó3¯NÏœ:“þ"«m_ÔßÆØ»B÷ûm©É Œ ÕñƒwÉåw<~üäÖÊdry»'8≋™¨Ù¸GSî’‰d]n–³£‘ÙOY§gsUI,Ñzu¡èHíµKë|Ë¡äGDdµººÛoÙxô¥·ï}ø(ûß}6…™‡òÁû¹Ú‚B{/ ¤xÏ%$„Žñy¢€Mv¤€Ý7Wo÷ X•ñ$²Ì[A c©×«ËÛXHaiXV¬®Ü"ÈJºº¯|~Çí·ldunAuï¾÷Nfàóþ£wù®¥É,¯ÃªÙ"Ê3FÇZ=é)ˆšzO«ap¶àq Àô©YÆHrSö¸˜äRb¢ŸC)WǨÝÑ—Ž2 Ú‘éÀd¶·lþÄ2Ô…ÒÚD&“'g‹ˆvîž¾K.§¨½z½§Uýak³m¿aLN’Ûد‡“™I„ûmò»ä€‚½uù¤Lì 6™LÛ÷÷ë÷°&R¿¬rù NÌ b)Çê© ˆv“ñÑþÇΟ; ŸÛþ¯eÆ{ö×±¢?ÙÌt`¾Ü]Çýÿ$U]~ÙBÑÇÓyêÌÿìTÝ.¸þªìïÕ­1*« ÔÚõ8sí¥i;“1yKÔŸ‰ Ȧ?÷Ìlðv`¦ÅAÖ0‹Y¯A„Ky}-%zòwGGââv`2ìTÅ}áÑ‘Ðí»åàí”ÖpåNj)î½:A•‘ºÂ».‰âß’åù?yzÓÕ¢£#¡¿6}ÏßÚ¦ˆ±º‘‘¬7AÊÚÕݾ[~t$´éj¼qnöÕé”>Læ;æ×Ûwã‹·èíøinnÆzC¤|¥N\ýqFÃXÁ˦ˆ33¥rYÌ{u+>i_“@”ºùûß¿òÊ+_{õô µUŸØZ½~ýú¥Ï¯>»Ð0?l†çg›ÙGZý"„)c_¥52 d†SÃkã¡y‘ßL!¡®×­7;ín)HT4²;# 5¹ ѳw‰U‰¥@E4ŽLu™tyȇ凓ZIMþµrK±õ±¹z»¾×]È3;hh…þpH™í¡­ð¤@Ôl«6ØJ&òvD2a v`>üO\òÖ ºOŽÿ{tãÆs³±ÍÕm®ÊÞi¹Ì(­6°Æ-2{Ž6WoOtýØZ9˜Ó§fãí—'£“(½]r÷§Î€X•”j½:‚Pt ˜¤‘H$0€D,X°j*wIIÒ皻üÓRþP*ý5]?p:]™'”˜~rwîžÎ8é¼;ž9y|{¼›qöÔtú…”-©\bçŠO6ɶ£'9*8’è¢WÖé=L¯-§ß>6W‚RWއzÈóµõºO†~yš$ÉÑ­êúMŸ¨©Þ¸ñ ‚(›·èDÍîº#Ì,5¥µZ¹óÓDͶýÓ­2¹\îªÞŸw Oî‘ÉdV°õ듚™¶/û"T;ćM˜(«rZJ ¿“Bõ½mRùZ’ô™ëÝ3R IŸ¹¾§À÷í„ú>»†šrØI˜¹ãsfrptɰÚ5(Jœ;+ìÎ<¡Ü@Þk‡|Ⱥ£ÒÚ_sð.¹\.—Ya·žÑ!¥µ¿¦+1c„7©\­ñäÃàlÖõýÃÕ.f²¥«z8áú˜CÊåò=]5ýüV0%W²í&ã£ý?w>5Y>S[ÚÏ.΂Žûƒ¾Ÿ¬{wËöÏÃÏŸ!Hâí·Þ½ëk7 „›.»ì²Õyv*ë}#k×ã̵ÇœãŽÕ1Ê—Û䌌477—ÃÊ…~îyvÐàÞ’ÞÈXtjx­"Ïšz…|Ý»[vÜv}è—§/Y¿îçÞÞ³ï—_¾aÕê’ôvkîÛ`œ #ÔÞþpsöÀ¢SCdJÝü©÷ŽÁi’$¯ÚòæÍ BAÕÇ7n܏𠤴†+÷)yMSi ‡­^«²F¥Ž¦©³¿û£à¦w7o©þ«Orݺux‚ÑÏ­lþñ<"J])±™F)ââG«ÿÐrï—ñ¼® ÿ^ÝÊæWgE”º³é¦ß¿qbÓ}m¨sèíÊ%çxú¥®Ä,Rär|“á²lqq½:AJ‰U€”³ŸÃz@¥YË0#^X‚,’55ómÿ@ßx¬ o‡}˜‚ ÔÅI.2^ï¬û žþrÇê2++APêšÿ^Z½U4M³½üóŸþôç?½ÿ‘«’-…íoDz¥@¿ñÌcæç>åxDµ‰(óÂÒô±Ãû¾uŒŒ÷Bïø»gtÛ‰5s*ÑÏ!‚R—Cè?¾óÖ›¿?óÁo½ûíFêÍ —o|óC¢·?sßÝte¾GãsÿõÜù*ü×ëªÁÊáØá}mO¶ÖæÿDõî¿þAk-AÐÇû,Ýý…í²ÙXVï{u‚ Ô--ógç'ù`Ý]ˆÁ¥°àƒ«ÿò°¿uÕ&êÁ?zíµÙ÷ùW~_ø»}¿y楳õ{®I4ñ¬ªjÚwÝà¦õÏ ¬ðá}mŽÍæœÝ÷<ÙZóûáÇÌ?˜#IÖreÙë[ÇH’¢¶~ÑñÈ­×ÆÿÜ÷0zã™´Dxø¤RŽ1MÆgkSók¿8ô*sư²9¡¨Æ{’%Šç?J˶ᓜl¬:oGÓÁžz³/þqÈZÓ@¯^Hà= ÈœÙÿ»ÇÖdÝ3÷zÞ´ùí}˜ pü®|ãK|0×οõü\ô%Õö;Õ¢<÷Ûdð´û[¯7ÿÀöÄðÝð\0g Àȇ»ŸüÙ§ÚjàõîSŽŸ}Ǿïõg†ÏÒ4ï^±C÷”×öİýÉ/½ñøð9í}ò¡Iù™ÏL„ÇŒŽÿ[ð6eöø#¿¯Ûž¶wÞðóÇ“9Οٞ¶wÂÜá´ü;~øí¯r²±üçq‘ëÕÑ1O{½Ù ZûèèØØØø¸ì….Ö³Œö=ߊw‚Tˆ«Ëñr7ïë̉‹.lø?ßiò´ w¾ðÂ¥×\óö›çAoww_ù»7þxÍ59¾=}lD±£jvìþѱ°nûÆýœxn·úÉëàêú/)Ù`÷=VÖÆÞ89uÌrç/(ªñÀÕYöb}E5n¸:%Sé‰\“òëÈ¦ï¸GÀP€Ýêúëâæ¯;Àæd›ØÀ)ƒ¬&=ÿ+É"ÇêB‡œS$©µÇW '¡¾¯“ý5Ø­¶øH 4ö‰Nk½ u8Àbñ@­ÑÝ« ´·8# ea!q€Yè¼½Å5ERT|ÉrvG“iÆåšb,¦NbL' >s=ÄcÆ<í-Ω¸Õ»õ…†oxAëïhÄæ AÖªÔñmÇ6;ÀvøÖç¾i0úúúÄb1Aµ€+s=b;ñóßyŒù?SÙ¢ M|,-qÞãÆ}Øß^>¼/7‘ÌŸj |ØÆíqÍÐUAÑcu4ô{JÎókÌÓfñ‘ûhô4Z,mbwŸ>~™‘¤Ïì·»Åí-Î)—¡~Ò80`²·8ö!e¯NP@!A„zZœ©É±kÒì4÷¨)evœ÷¨;ÐÞât é;ã`´“UÄg´ŽÑ¸BÓtðl¥dѬåWÈ?ö±õôôÜÿý»víúÓŸþ”7þ¹ñcº™¿{n™„›ªGNü`Úý­D_%o` ±cÛmñ8g¯² ò%Âgï×à?Üáìñeùm€éçL‰–,ÓXòo¦Ðt,0¡(J Wi(*2ˆ%(Jãèƒ@,a¶{uX‘è\"…Üq•ˆåb ÌD¹‰tfGðú³uZ’¤ÏÜ>ÄìEŠÎ‰‰‰‰N£Œ‚R—õë׋ÅâwÞy'_ 8ÿʯàSuR£¹~õÒYš&Á­_»ïõî;¬÷ºOWžÀÎÀ/¦aIDATLj A÷Ö{÷|ã«}SÙ“ºñ3¯ýø¾;-ûpÛÈöõOƒlo'üh_ÿMg&¯v›îüÛo|癳4Í÷§àë½{,ÝpA––7n`º‚r²±Ì,r¬.;sÑHjGÆJv_‘>K£ÅG’ Jœ ¦ZŠ"§\†ÆÆî à!Hi¸dmO"‘¸\® 6\}õÕùZꦉ‡é9ÛOÝ ôñ>KõæÛ²ÄÝS;ÒÔB÷”W—–lFR×4´50¿·éî€ímžÊš'JÇ=å\¨ï›Ð3C‰^sŠ“‚ (uIN¾:›òç÷ÞëülÑ rßÔ¦¨Æ{žÜs çMn`qIáU˜Å¼W'o2Õz^s»81[$ØÝ  B¨Ü%uMùü¡9ø}$)Ý¥D©Œ+‘Hß=Ô¤Ðçiftw&: N\y‡Cã5{¥b!ì®Çi)‚R—Êà¿DJž&¯©Êæ´ŠHj©Éôj«ˆ¢½!Ô÷Ž‹{êÍ.C£ 4öÑN‚¡¾ÏU[,>JcïÓ—xY¢xú.Cƒ ˜I˜ò캨³˜&[œ.C£31ß2þ" HMa#… %hÛMÆGû;î,|jx—N~ö×±e[¨lEÀõê dé.k×ãÌµÇØ¸L?ÇÌOÉ-{###ÍÍÍkò+ø L)\Ä)k?‡õ€ J²–Áõê) —`0¬íîÙÕîí4V788ˆõ† È2IÝ÷?Ìáï̃'ÉFqëÕ577cÕ!²LR÷=Ç›¿ªÍÕ)¡ŸƒÄ”A.K2V÷d÷ÓÍ_ÕnÚt-ó÷Þ»ý— oþª6¯óC*«C¤|¥ŽÑ3سgÏž={|¾Ÿët:ö_&ƒ y½Ö‚ å(uðê+§ †{`(0îyõ•ÓYö›4g›2Îvb3›ÌH‘Éår™¬Ð$’8²$,Ù70©8–væ§¶í8øÝ…~§C´¥æø‘3"€3'O'àùÙæfœ9y¼¦NT|^ô½!«rvаǶ%lUâ™_%~uA²vu[o¼¾¸•uzÏ‘ŽxöîÝ{üäf[_§Lµh¬» Ød¶Àì A&“Él/¦Û9ÿá„l¯Þ̺G™L.—'RII$Àã9<ÑÒƒcu‚”»Ô½úÊé­7^ÿÀƒíÌx°û—kÏÍÕÛ§OÍÂì©éíÕuœíÍŒò´B8 …û¡5©5žV+ØÂápØú9®© ‡Ý_Ú žv¹\f›»YÄühÙ==ýÀ´‹íÔL$2\íJÈXÀ檇B¡pÒ òDC–ÔÛa= ²Йã+‘¼ï_o½ñúW_9}ð»½ÌÙüÄ»0·œ„ÝåNpYŸŸÝrvD wgM¸¿Ö#«R  ïkXœSƒØÂV6Lß²*6™-¶*Μ<~üð]òƒµ—é.M&"ÚR'¥;⩉.If4¤ô÷^‚ HñRWÄÇDW·gÏFäÒœ\NåSÖé[ØÀSSgetÏͧ8¹ðŒŒl?^“°Ô„Yuì á ]¹û9Ô9AÏv`¶žÙ–æê¸¹÷Ý\½ýðáÃL—%w›3—2|—Þèv‡ëޤ÷/ΞšNŠ^"\ YJ5VGÓ1O›Z­nóÄh é`·Z­îÆyÚÚ<±ÔëâqÔÝAzå—_þÌÐÁ†††µºû%ê%öèÅå„·†Ùr5pXÌÂë9òÆ-ÎÒÕai+ YWWý›O´žÙ¶¡·ná®D;woë‚Ý;EiÛ ´ö‘Éä$IQ{ûÃ9]™Ò›Læúú3FO»ü0ìí)yÒÉjï Œ†”³·#¡XäÔTt@0¯?Ø!WÌE#•H[¢]Ñ91Ñ™hC{êÍÌú¨+¾&øB3SDæi:ØcöRœ]nIVEQ™æ«a–Ä’~¡žzóR,¼žYœ¥:/¥­4dµHÝÖ¯ï‡ðÝ‚´-CëšÝáfží¸‚…­éš¦äÿ¯Ò@ú.™épIÛ.$RbJ;V'WiÁçóúC Å|`rŠ$IðùC „ü^­ª#) 0›Y%Õ Zv¹T|æz`2šŽ µ·¸¦H¦™Nk@Ó’rŒwÈa>3>ó´·8§âKÒsš{ÐflsRÎÌLF:l~˜œ¤Å€`·Úâ#€ÒØ':™™gv±4ú¨Ä‚±i9aírŽz`ajx¡F<-e6cL}´SAp3LÕÖJ³(=qgGA™Â=‰‹jî^e ½Å©)±´ýÒU²j:0‹Ÿ‰ %Ÿ{Y%®¥(˜‰Æhz.Ñh4àõ‡h:‘Š«÷é3ûUlDŠŽq‡†¢¸ S¨§Å‘íF)xÍ=ü …s“ÊŒOÓÁžg´öÑѱ±1îsÚÓôÌäN‡7ó1O›ÅGj죣v é³´ybÙaͱBꦃ~¯V%ÏW6ÆjkUÙj˜ñÙccc£nc-EyÍ=L`¨Çì#I}tܲ+wq‹Ã=;9*„‰ÆqÊe¨·ƒeÀ$…ˆÓ>Äí-y¥!«ÉÕµžÙÖ'Š™‰ «+â Î/~Ÿûß[®¿Ê]Rg$c<Ƹ ¼^¯×jOÂ.‹€Ó™Ö!ÏÛUå÷€D,K"3Ñ-Ïìc“â/`[Òvñ@¯N¸¸GûÂÓ¡éX`2BQŒö¨4”×;ˆéŠÉ@õóÑ©¸)gæ-> ´ÖQåJY –DʼnÎEÕŠ«RÂóÂ9;ü"H&ˆPG¯N! @$ï /U¥¥]±Èj’ºÅŒÕ!×ÛчyËõ—¦>Ý3Ãu>xµª¨ŠJ"3Ñ0ÃH P‰7Ð$ …µzéñ EÇ€i¦Å95å24ºØî¸…B,8¹hšÛjXóIØeÉ!¥¥qŒ«üõf/;zš%ådW-IÅ-ŽD,(úã¯ÁR^Õ™EK»\‘Õ!uW‰)fžÑ߆xàððpZ´ï9~(Úz%ž„—’¿WÇ ×ù|>­½ƒ å.©kjÊåšÒÚ;˜R•X T¤ðþø„Pß7¡gF‰˜éò¢Ê•™NÎ\U‰¥©Þ'Ù} %¯šŽ¸®9ûÉi2I}.Ÿ{¨I¡ò¦LÓ±!»3R“Ûm1{Kv¡•°B–ââAJôx±‰êõ:ÑÖ+¿çøaî?ÑÖ+õzž$‡Ÿ+m#SKQ¥aÆÊ]µïû*¤5„™è|Ü *wIIÒçš/ÌxåŠ/ïph(Ši^ B¡ÒÆÄ AåÍ o:…dÞù}$)Ý¥,®û´°z˜‹F ²\ÅXKEœvOŒÎ’2cjŒ)Nö+¨‹¯ÒU²J\£vX¹È")z¬.KkªÜ%uF !ñÑ»ü 1AuÓd‹Óeht2ó;ô}ö¨Úâ24¸ ytÂŒøÌK¦i¦@j²ÄGËäM&©×é24ÖMÊéÍ—v‚hZ:ù3oiôP{Ÿ¾èÎKžr¥×CÈïÕª: šq#Ô´.‹ÏiRöêøRVt8´>‹Ï\?#•9ŸS*o2Õz>K#Øo1nOXº )M¥!KñÑn2>ÚÿØùsgààSC`Ûÿ5¬dù±v=Î\{iÚÆŽÕ1&¯þÌ—N¿ƒå@°[íW7 ‰ %„Ä*@Ê\¯nµ“ö"‚ Ô!H:¸¦Áj‡ „ú¾>î«Ö‚R‡ éàzu‚ Ô!èíAPêU ŽÕ!‚R‡ ŸC)ˆK° ²¥ÄïÕ­ð )ç{¶’¾I°ŒºRˆ8…€ ccc£nc-EyÍ=¬h‘¤ÏìW1áS.C½,&)Dœö¡Mç8 ‚T¢Ô] úÇÜi.ÐŽúHòƶ¯Ü|˜p’þ‡Éÿ5zôn¾§ÿ}ß7¼äþ_8ö Ô!åK©Ö«#IŸ¥±1¯‹¢é ß ±\,€™h,™¢4b xý)‰0(Jãè3á¥qôêLœHt.çQ]]!Hrø›jÕç¤ÿïès÷ ØpŠºãÛŠ.R¹}qâEÝñõl'ŽÕ!«ÀÛ•v¬.·²¤ÏÒè’d”I=&ó´·8§HH6Ü~!ži¤‚¥nAñiš¦(Jû­g¿.xÚhj¼­þá£&Á„Ð/RMŸ9Iüh”:¤LY‰÷êªÄR "é"MdžìÎHMnC´Åì]ÜQ¤b¹pqa½4 ‰±:úê;¾Z÷Ø×G­] ß×? Éð ÐtUÕ¯Ð.ÒpZ Ræ~n9HBå.)IúÜCóDŸ‹F@",éQdÍKµÐ?:áÞ.Ì:µ×oJ ¿H]¤ŸÞyIþü?ƒÔ…àQ”:¤|)ÕX]áõ}v 5å2äØ#E‡CK’>s½{F $é3×÷8²ð£ Èšç"E/ô IßwïTù~çÿÀM_éÔ]CT"Ú5wô½š|Hýå‡|D»ÉøhÿcçÏ€ƒO .……¬֮Ǚk/íqv¬Ž1y…ôg¾túý[®¿t­VÔ#OüoR¤loá}óá‘'~ÚÜt÷2ä Çê2¿‰ •À…NK)ìÀDÊ”y¯Ae¦ˆÌ"þÐÕ!å ®W‡ kßÕQË1V®Ao‡ º:Y p¬A*Bê–e¬¥)k?‡:‡fYÛ,O&JR¾àX]ŽjÁ÷ µÁø/†Qê´/èíø«+YÏmËs œ–‚”)K·^‚ •º:dmú¹—N¿uˆ JRî=V·†¿ † H`&² ¼Ö‚ (uÈÇêA©CÐÏ!‚ Ô!«œå_¯A”:Ao‡ J‚”«C¤TàËHYû¹LC“‡ J²vÈö^]E}þÑÚõ8–‹ŒåE©C*ÑÛUÚG ±¼Xd,ïbÀ±:¤LÁ±:APêŠðsK}šv«»ƒ4]’hED.YAbž¶6OŒ¦ÙŒ,©ÔK·)r™çdË«nóÄ’!Áîb¶ÆÊ¼êè`7swéÜá1OÂV ó Ô!å ¾W·æ¢‰XHÉd[j7ƒc|llllllb¢SÁùu1?äö‘>÷Ð|EüÈd€}¸ ù½Å%BŠÎr½6è`w½_Å\À*=«jt°»Þ-vŽŽŽºÅîúî MÓÁCN0ºGGÝFpb$¼§%ŠR‡ ·ãsH Ä}^†POÜqlMÇÞ(K8ÏÎìs%”»füŒoLBÜDÉUZ¯ùï‚PtŒ;4”Æ>:::jg6&Ø"0q„úÞq ØëY Ì^L©i CA K"'¯·$¶yë!£ÈY*¤J,õú—Xh:6äž15ÉSüåM¦7£ñtÌãž1ݽ#Û)Ó:zuL…ðVMÇ¢3ñ†U 3hs•wÙ‘«$“M‡üÀµï¼Ùcw)ã!ïph ¿˜*J \†+\¨3$u:ÔcÎÝEK(:oж»Å ðe¤œ)z½º»z³$€Š'Ê\4âøFÄghtd¼Äí{{‹kŠ|>¼õàïH3O!Ô÷Mè‚ÝõíC½:!Ad)&ç19e»@x*„ „º^GO}}Ijì£LÓ³4–Î0!$i7HÔ‡BºN…P¹ ìy½^8˜„]!QÐ)ã«ö¤ç)ïJ WIÜyqTþ<Ù›‹F$*Á"oå}žStŽCwCƒ4v‡v&Z•÷Öv·D b{CÃJ²:¼Ýröa&'q(1`Û™è<(„Ìv•XÊnhí½)º²œõŒ€)=mv°ôé…±ÄFŽ&Qköϲs‘ðTHÜ(LLtÄ<í-=Á .‘¥ó’S¾FR3CMr@gÔ êT~§Ä0.€¼§Œ^@åð—w´®i×óv7aèåÎ^Þë“^ªkc±j76ÖÉhX½DÕI •Ö¼+ç£3Z&蘧Ý-è…Cõ`ÕÁv`"eÊʽW7$&vÌGg’ágKb¼j>0)Q)‚ „Ê]3þÐ ×Õ\4Âø/v#»õñ{ã…ËV̼xÍõ‰zù½Z·]± rJc©8$ÎC! E“iÆÒh™15|Êx*‡H ÀüÛ»²åÍD ¼$i“x³Ç-ð÷}m,ý“hÌÓnæLQQIœö¡MÓtlÈîdÊÏL¹4ôê¸wº:ýœ×Ò÷¥qŒwt8ü†FUk4i½æz80v+€ÖáKcc"šŽÙE¨ïSu«,$»»|™o~:‘Š›’¹:£(cœ‘Rd)f^´Ž±»¾ÞB’T­q 7½¸|b3 qŒ.¥›1Y:2ŒŽÉmŠÉuAãt‹£SyOAðTŽc¼CÞáð××7d­Ñ¨…h¶ÔVÄá„Pß×™iÚx³'×3»Cëõç-~aׯ]áip²†™ŽÍÆÆF¨5ôÅm¨[<Ы E“Ém04ºˆv“ñÑþÇΟ; Ÿ‚ ûÀ R>°_ÆãÎqÇêØY*¶ý_«œ¯(=òÄO˧¼Lw–j)[ó²*o.oqHÜש¨œ"¯öSŒ®Ao‡ Ex ÖÉ*¥)SX?Çû­çŠZʧ¼ÊÛ,úå“ÿï—•SÞ”²?ŸØ,m%à%R‡ ŸãQÁÊéf·v=ŽåÅ"cy ÎÀDÊü&‚ (uH¥x;¬Av`"eJޱ:€€MÖz˜LyP£¨½ýa«2ñ»¼ý0³¹·7dU°K<Ù#uÉ´ÿ"¥&qšç‹ŒåE©C*ÒÏe™{©´†ÃÖlj4;hh…ÞpH`v7‹rîßÏu˜<1=hP6‹°þ—¡”¹ª‡C!Ìd6¨€gŠJ+r9•;0‘ò¥¸±º€»«¦Ÿ½§”Öþš.w €ýfŸ©é õYl3xdz¿y¦5ÛöO `‘±¼(uHE{»…Ý_}÷áQY§÷p“Ü]5uÊBc#‹n=5[Xó,ÚR³ök½ÒŠ\^åE©CÊ”åýæì kz¿A JÃþi×à,žYC Ô!kÆÏ-æÔÝUcŒÐ‰šØ‰‰ (u²<5V—љѣÉgé<äávy‚öäÇ5xOÀ¢¬ÓOŸb½óì©é<狌åE©CÐÛqï0ÃþéV[Bì¶ÖxÏdNK×J¥¿¦Ëý"Vÿ’6„5]V¦£xvÐÚUS§Ä"cy—|Ù)Sr¾W—Q³»ß&—ÇfÙÛÊùîÀì kz¿Íš©—YŽT§]?/ã%ݾ¶Î¾ü·b2á.yÂMÆ–+Â~誑yzÑHd8Tq5 iÀÔ(vG"baÖkTl=Òc™;*^ø{w׋½cöïÛÛ®ô¥ãýGÖ‹½=Içûvƶ Ôb÷‰Ø·óƒò­‰©ù£Y<ø<ürјÅq4j6çó¹=ïØBN›Îp8lê§ù„ݼ]”H_·òÜ&󦚎í4³¶‹é¾óöÅ)…I0froÑИ®iUÝO÷¶ˆûéѸ3*÷¶ ÝxU½oõv¼b߀Ƴ :9o~€‡úÛ‡÷K[Á¾caÛQ¹’G{³iZû !ò©bã zºíV«Û4×…Öó­Íç’ÇLš»[›»Ôws‰‹ LhÐÎiB ‹Ý£™æ†‚P:´›æqÞXyIÿýÃûwƺlÌw7¶x¨b.%#Q 9í5%‹„ŒsÁLö˜ ­v>·Yø›ÝŸfM§ÒóJ›Ât:Mp}p<ëž³ùw•H¾Ý † B‡Å]]t£ÜØ9ó3ÏÊÛ¦"`“¹§>(4”ˆF…Þ«qTû‘C#Þä1ÅGå*Õ‰Ëävû±‰Ï,L#(Ó‘ é´¤…>Š% Ò… „RZ Yek[8UMÔPØ &«ü¸ ókKobÃEã2˼ÆkU3¿1 lM¨Ë,¹¾º|a"h~›˜k”ÂEã–ÎD@P™5 ¸¿Èž4šÛû_‹Dr&ÉOl^Bã{ õC¡¹Ñ +$±­5e!¨B <&Õ&]ˆ™þÀ¼]zŸ¸Ü£ä„L>… Û8±’¶%LG¿§’kSÝ1TnzéOã$Œ“Òùƒ#I—ÙA mê j\pÑø -Ù?fè7TÒ@„^ÉØ…G› F‚TKíeoAPhäcJªÜ\µÛÖ÷šZs“ߦ÷i ®¥éä­¿¯0ò‹“•N<N%fÙ¸(]_X¦× ¤*J¯‘ÆfE™Œ9p\˜þcåYa”dAȃ ‘z­îDsX˜ð–Ù·Ÿfö™AO„¹«øop×q¢xESxÛ‚xLÃMYúì!}¼?Ÿ£øL›ø\­6xï|C"èžFíoH½?´¶:ö¸ë¶'O$¦þiÄÔù†,ept¿!œŸF½oHÃÓˆ ÿ ‰ÀiFƒoIO„ñ¾:9xlØóžJȘݛ3>űð`ßôÊ—÷]•NIï¼î€øŽC¢'_¸^O ÀM½÷aJá!‡e+¢îtÑà1õ¹{€ꉥO7uÞ,BÓ=ž8@‚ÇAáŒò2Ä’Ñ’…)M9—…zÚôø5Q1Ÿ,€¿p tçBB›P_– ¾V/½ÃcCï¨Ø°¡÷Wdžã€÷Ó*ºÂò¢ñ] ¾&«ÅÉ%sŸÇ·w {LÝ/S)’г21¹ú+ïYhÁ:eK®Êhîí+«ÃßÚì ÇŸ­£œhCï¯v¢ãê–z•Œ~±Æl"$CÒÓ âÖ7Žin×à1 bc–] ”µZŒ´†=iŸ¬½+1—yo×ðßV2¡¥?Z~’`{»ʶr¶q²û¸†aÐĵý\ËÏ»Ìo»GïpÚ#½r-õ*SUî=àD®Å@—þSwߘ*ŸWÚeÝfBòßî[‘PLá©d~I̸” B2í=®Ï£‹†dnü¬ågdåÛóÁ#B#? xˆ§ @ Jïái+IU\¸%™W¸šJÆÂÂõØOŠý§4(æ½ERó­k½ÌC ,Q—Ç‹’n¸w{ÑPYþ:@]kÁô¡® "ÏyMèc¤,W^­Ð ]K-U*ô¯ÜL)+QãñÓrï«ÆìVwøÈ"à^«íD Ÿ{DW"­Vm"Md-GŸÎDjëøƒZ‡>v»¬iW,Dïh/øìžù™5èc¤Ä<Äû0tÃ\Íå'Ý Tr×nÝÝ,@-*9°THÐŒ]¼iÎf!ÁÌÈ ÃìL °|:†'sîáÁΖÝ¢ê‘Óms?€³vµSVž1ɪƖÝk9hªOÆNç”ì<-+Ý“²òäšé’ö“²Ò?)+O®™Á)Ùé@fzZvÎOËN¯õ´Æ6<%;Ý'×Îr›ý4üT¤žÂã}ÀD»5˜¨ÁD &j0Qƒ‰LÔ`â0Ñ©ÁD &j0Qƒ‰LÔ`¢5˜8Ltk0Qƒ‰LÔ`¢5˜¨ÁD &޽LÔ`¢5˜¨ÁD &j0Qƒ‰cÀD¿5˜¨ÁD &j0Qƒ‰LÔ`â01¨ÁD &j0Qƒ‰LÔ`¢5˜Ø&šß> o‘_`w3‰D1K‰Ilá q,ýŽü `™° €(ö„…Ëm¯ß4”<®"Ÿ.,‘Ä>™•J´•rkPÉ[ßOT,õÛü‘Ï£ˆÝf/?Ž üz4‘—æci–ª+•Z´Óð}n—ï>° ñ%èSòq3Ü2Ar³È/@›,JIG[¨µsNÊŸ^Þθ"j&$èLErêö òP‘™˜“X° $~Ì#D¥ :Px,|A2…®§h“¿hó&s„°TÆg$ž1¸¦øŸ¸"A2bw¡µ&äΘûÅ>ˆ´uüX‰¾â/œ^»Ó ûÃA ø}ôÇÐ8Ø2J§q 3&.Ùœú¾""DrÖ‘‘8‘!¨ü§0ïfé{ #éQ\Ÿã‡èQ²¡QÉ8dqU£i²LÞƒ™ðµqΟgضð’8­ôwêy¨rff öáÙä턈z‚©ô%ÿ±6  e¨úg–ö—ø^Þ| v.ÄNðç@UÅòú¹ƒñ^d±8\oy«ý/óZhr©}Ñ…¶Ôuµç\V?³…H´´rm¤ï @y·kÚë³†Ž™Y¥Æk“üIJX‘€.H(b2ò x§Ä×&ø‹m¬-oy~†hˆü­ßCˆ¡^*…ÇÎYÈ[€EƦ-¨€ƒh p('<DÌ–ñçvÆ–ÁŒ*•à'O d©¯)‘½ÿ*#ПLäûè÷%‚Åaç ̯ÐÊ^¡#: ¥í ßD!`,•ÇœÆÌXr‰Ã/²Üd³¨"'¼Ð¯ ˜H´?ýk±~9”¾»òR‘NuièB2±âEÄVßr?¥°fh÷ ŠÃ{³ô•Z=»ß=Ç›šôo=|SV+›~UÑŸº6šI6™r‚0SM§Uør®†æ—×W¯^^]½ v‰8íjæ¥8¾ˆ+»Ñg~Ñ`€¤¼ìÒ ñ‹†ß jÞ¼±ÊåBvúË—¹ˆs´RÌÔLB¾˜.ªPò2I{쇇àNÚœ C¼L\Dgªè”L…ð÷E7ôØPjž6ôÀ¿ÜY7áHÍÜõ•ÕØê6_kchEw*:ù×?ÿ§à¸D&aˆñ] ]ñͧ·gd=Ë|péw{Mxç”nÐa‹3ÚÚ )6Þ0û_õì-“—2bP[(D|Õ“î içv«ã¬‡4çàÖ훟篮_ ZýÎËW¿KH[jyµ>lî×yW|Ë*››C+›µR ?¶ºÃΰ_V ´©ºSŒ»³ì„?4RãtÍ1Àg#nr¡‹=0ʶU¯´Ç4&ÏVna"OBþðÜ&0TŒž˜uÄ*ƒ‹bÑä •>%4Š vÂU<úß_%ûü_)–ûïÏ0“Ï%$›b鸰aÿúçÿ¥Øâî *Ÿ!©Ã: ~ŠãÇ5»,¼çRè)CëJ ¡"E‰ö}†h~YØåpäÝÇW«8i¬lòà´Éç ¸y›¬äpw…G†QÀ ûªX.Q hê„yÔX°‡ÑŒ™à2évµe@ôPo#êõ/ œŠFÂi#ݛ۫·¤`0DÙ' @ÖˆÆ3›¼z /FË.ףϻpë÷~üû«¿]Ýýøó‡WßOãŠáü3Zâ#ûÛÎ^±Œ8Šwp5§IbæDj27¤q%|‹ºOL/r’Z+›Ý¹"õˆ¥ÙÙ…5Ai—ÐËÌÒ † Ť­ÌÁTSw3˜àÂiìüs*²TdÈóôxoÉ–lòb 3&©ÞšÍ,[RÈ D\˜púç8±Öqøß†ÿ3­M§{–1°Á4Æøü 3ß0ŽöAðƒÆåª,Šƒ.œâE»xÑ)^t+RØ ®©e¶TMóêRc0ÌAs áß,¿° ƒuV0˜GÊÙ‚-ôÛ!‡ƒ ~¥ÌÁÛëefwØ_ÇdíC1Y»ûÊ`²ÖÕËn»ýúúüåï„ÉvÁª M[zjý¶"”}˜ (' ŒÉ—o ¨GÓõÕåb @“¢©y"ŠÐ+ÂëÀK“ÃÅèšÆóÔ ,Æh ð„EԳɬB(þ„ï \•Ï–;¡O%5¨©mN!„ÚuÌ0Kø¯ô­·`£,ÐDŸ?MÇ*f’ Ó§ÆAYÐ}ê­¢P{¦ƒÖÏr PÇe€uzÜcãd:ÍL†+•° ëÈÍÓkz-,†ñ\ઘ./³•¬<ÔŒu™*ÉS7Äo\Y«l=Ë”ÈW>TºÂ¾gɳ=juK¢V{ÿÂÑqìΰ÷8Jõí¾SR9vŽRí¿¤d{ÐwzNß¹ú£Ôú¶M·Óé8Ý^§SV¬u)ÖúKÐ,„  yjbU‘"´b>71Þm<¥ZÊ«˜è´Ëï§_ÛßœÎW¥ñ}‡uo›ä\tÈíççëâ´KV‹»‡;HšÆ{ëÞðúzÐþ}Ò8ÈuËÆf϶λ祛ÝC.Ü›å=Ô$l¡å -;€â‡«_Àc%x\ÊÅKäWÉùŒùAÕè0÷« Úí²‹²}=áâêÝI¦]¤buÞÌ~#׿|ÚÙíàjË’çE Úof ÿ=8è;¶ZÖ®öýÕö |,ÇÀy¨ž¼”cíì´‰kØ»Y)’Åoöà²(ÛßÛÕÆ[á?Ýâ`]»º®Î&ÿð>3K]Ù)­(?Y¨p_jÎÁëÁi¸ç/´g'æ³H€ÍÝ… ¶o“+íÂèU:$èÿØ$=焟Â!QB9"ƒ¥ÎzœìPT×rZP¼Š¹^QÇÓ#Ŧ‰ží˜‡Têƒ.±p…¿Õ•+B}Wž§wa‘A¦D"QäG×XY¾¡[€“Áa³8ŽFÍæœá6(Ôù¶Ófºôjªæ×WýîG1¿‹Å'îÒ5¸4éÞBîìöÀ,¢ÞAe vçõŽHÀ­§¹dM–V°ts°HÓ…kÐjê7 +–öíYø{‹ë ª'b4U‚õÞ†äé|uFŠÇüôA(Ð4ü6è ³8ƒØ(–3Y‹¸~»éÅÌ%W!¤Ô¿q™˜Ôÿ:Ç ØÌ‡Ìy ó4ð#RQ°VȶG²p\¶ã¶D;=gÐm ûí2 Ú?ˆÓm’‡°"æW2ÂÔ xÈÍqcÄ^BnEô³eK]]婬Úo„Y›ƒ™.)šÏ=šÏ™Ù‘MG7;t)¦¶wU¤0èOMfò5¼^w‡(nJ„‡”ÓJŸ!u°¬Ð¬PV¢¤_X¼Y¥ªA6¨w¹‘X17Ô»G°•.WE: Íš>B3 ¢*ˆ©ÄrNe«ïy˜„:(rgúÈ<ÐìhxHÆ <÷F¡v2Ké«Çé ‘Cx61!ÚP¾ÿš-2àö}º]‰—˜Ì[A&rv@€æñ#ó~ÄS+¸Â$¿×‘S=G†cük Ež.¡X¥>ßÌü«ô< °—Ç% Ré!üU³ªÕDrʹØ%#Zþ± ^/¯Ì_¸dWžp<ÎbazŸ—ÿPKÖäO½¢¤™PK•¨­@ layout-cachecd`d(XÎÀÀà& $@À—O”Áˆ›x8X$aj˜Àªæ 00ø°00Lâc`8)—b’\ UZ@PH¦] ¦¼¸ð30Ø]—Ȱ¨å­*C¸Ðt^¨v; PK >Sv«PK•¨­@ß=<1ó manifest.rdf¥‘±nƒ0Ew¾Ârfü‚YŠdh”¹j¿ÀCPÀù™’ü}]ŠÒ¢UÕÑöÕ¹÷Èùá:ôìÍ8êÐ<{ÎŒ­°îl[ðÉ7ñ?”QîêF=O,¤-©p*øÙûQÌó,æT k!ɲ ö¤ŒC"¦›õú[Úñ2b,·”¨#VÓ`¬_Aáꪱ"š:Šq4v!Zlš®2 ƒñÆK»ãìc~ÅÉ|¯ø³¦'íüòì áä*Sð ­"trø5MþÖú çð}øj"Õã'ôÔõæ.#ÿ*ƒu³•ù15t¥êe™´©Jÿ]µõÌaýâ2zPK•¨­@ styles.xmlÍZK“Û6¾ï¯P1•½A53±¤õL©M*U¶·*¶Ï)ˆ„$lH‚€zø×§ñ"A”hÏ$\úCw£ß€æíç"Ÿ ”•Q2_D3R¦,£åþ1úüég´Š~|ú×[¶ÛÑ”l2–Ö)%ò’1ƒÍ¥ØâcTórð bS₈L7¬"¥Û´ñÑ-ʬhfS·k°¿[’³œºYa;{ñvºd öwgŸ¦nVX°©¿}Ǧn>‹íJYQaI{ZœsZþñ¤¬6q|:æ§»9ãû8Y¯×±¦6 § ®ªy®QY“œ(a"NæIì°‘xª~ ë«TÖÅ–ðɦÁ¼*ŽûÉqܘ&=`>964¸ëÞ»lº{ï2oåaÄ'«ø=õïßµ±À‹©²¶cª”Ójò1 ÚßÏkTUL‚ju—‹Å}l¾{èÓUø‰SI¸O¯ÂSœ§ÅY2à’ˆU˜:4W‡åüsR1.EvÓ XgÙ¤×Aùxz)ªƒîy–¡ Î] ©ŽŽ”œ¾‹:•óºÖ=è2tk‹5i Ä éõé·XÑ*‹ø¶2{ݬ µ‘—B$™"Y^`91×EJ ÍÔpZ²Œ¡nɘe»%Ïvsø=¹F²cÐDv8%(#i.žÞšÐ,ÏÌwå¦Çè>°'Ñ 2ÝA š_%Нïÿ‰Õœ>û@NÿÆÿñ0f!šuX*,Ú“’p ñ\°Œð²©¨L!åwôL²[ ½«SšáÙG°éìsI¡Ý’QÅØ€‚Vúsª=Ck·Qƒ>ƒõçm]Ê:Àº!<“u(¼qÆx©ÛÚcôAnþÑ¿`Ž VfÙi<`8X5/“=F¡`©èœýfY…Ã¥‡›Ë“T‹ÇòÖ®›yÐ!#;\çvJtœ­š{Ž«M#‡µßQÅ¡‚pIA{5+mÄ7GSSOûÓ“ân Ö2‹ù"ñnîÝm ØAã&Y$ Þ©` ApöÿZHãzff¡Æ%ß·o‘íì½XxRعîP‚Õ{Ÿþû'u‹= %õž?À޾ņO"&Z¥º†šNßå?5|G–¡À]ƒvù—ì?#¦‚ŒÚÒ6¬e–`+{·Âyåþê#°¯s ýlÙ¯\Sè6N¸šX€ÄÛxøÑ´]Ì-’“TjÝàrSsõ =ÝÛFïÁŸbƒ~ìï¢Ì’[é¥QóÕ3Å-ëôZbÐ8K¿ßôl‡ÿæñéOPKwìÏy3)PK•¨­@›ÈÅc33meta.xml OpenOffice.org/3.2$Unix OpenOffice.org_project/320m19$Build-9505peter lin2005-07-09T10:37:37* *2012-05-13T22:04:43en-US68PT08H24M47SJMeter Distributed Testing Step by StepPK•¨­@Thumbnails/thumbnail.pngÝyUP]Ô%'Á].îœà¹ØÅ-¸»{ ¸ÃÅ5¸Cp‡àîîÜݾÿ«šùÿy˜ššy™š~é~اÎ^ݧ×^kïP$ 2>2 PJLéýÞ …øáýÉT( ŠA(ö ì–~’ ŒÙ׿wj† Iñ Ñÿ[ü_ð¹ð·cJ—z|ÏJV¡H :_"®!•VS˜!¶ÀC<„”†ˆ§ñiütÅ®ÇÑ Â=k=zÛÅõð2îa·»EB:Š/âõêŒà»”áŸ<¨¾@èhÈ\*8xYä1ÿà²Ðþ`ý_$¿U:ˆ(]\âCèèò¼–ó£N_bŸ=Ýæå£Næîx8·“ï ‹l}t*õG£ä/•ó‹63#]%ÔÓ¤jK´ YXg‡D®';•…zPm´|ÏTp Ë/©Ÿjâ^jú# Ë"ÌÅWáeIîF=·)û{Žç#ù‰-aˆX·â%+xà¹pì$7ù6ò³ßßïþä^Ga;šƒ}Š07¥œZ&´.Vwt¸i»Âù˜eAò¡¶j5Q_¯Ž—²eä)—Q³Ç#—‡"©2íž¡ ½óÖßv"Ç…rÜ4Øèï´BöŠjC‹õ»5}™\¾xmàéù´_¢2q½KDB îÌv›ÍEŠl§CFÛ•-|=ås;Šk>0íqÀ¡‘î«»-IZ£JôYãƒ*|æü`/†K¶=»s»ö”>Æq®jæͽ@ïlk§)±8©aw³‘YÄ ]]‹•ñ}‘}”{Z%¡ÚF.v3Unñ ´Ø(…ª\B®L½f'|Í ‡5K“‚ëq¹x/œu©ý}^í+ G±Û‚¶ºŸ…²*ÂøT+‰¥•z|,–ß”®0àhIöLÃf ôùÖ†èí9Á]Ô–œn× Ó¬‹-kXQ{R wJ,ŸžCrp(‘§¨ÚÁ×js©†ëh„¿Ì•z.ö2½„ŸB£7ˆ¥íµ<ÎjT.~eje½,Iºšg§Ø;mMð¤FŠ6šu µô‡'æœnx:.pÖ.Ô?Rû®ÿ;/ØõÞ{²à`×·§îzwVVÛØ·¡z•¢BÀ‰ÄÔr:ïaÃçågÁ½,âªbkIâ¸útZW%!*˜JsUŒf3Z;—Ú~Pœ’ë¥ñòj¶…{äP5k‹ù„ë …JÂ> UOcÕ"ç ÿTw4Y®&|ã zÈ>k*‹ëʹ‰is[_]ù-XˆG`zv:_¨‹{¸¿ßQüVLËØFµŒiíb²^a-i¥ûô—[ 5-.ö+Ü}À"Ã#å9Lîv¡?êªû /Q½MoÃ5Ë×¥¼ÄÀ í>_ûHÏ !!∉ ÏšÍ>§toGK ¯ó¿ wÊú™ïΊ´~·?Ì4”ñ¨¸ËÒ¿>ÎNÆ.³ßp†ÜŠÓŒlöOÞ×<ŒdUÆvýôÁx+·K»gÿ˦á<@sÖ´žWpÿûn¼ßóˆà䋆åš;'‹_~íf‡Yî€âæÉ¤ýyÞOådúýM{q»Êê…]­Xo:ê)öÝí*¯BD™[«íÛ°Öiÿg è†ðºÛõOqÔ uhE¯LsòûYG÷]+í4†g¸ºMt'…Žm§ÆÈoâiþPºôJZÕ©åÍ¡¦?/m’‡mÐ[~¡ÐÎßÒ¯8ôf¼ oî_Lasê6TÌQ:9“°à¼à˜^'h=2_•Ø<ê.¾Ò[¶aÀÈ •îÝ"ÌðW{Ï_¾¨Nzçú,éšú_¯oÈ»_Ú¶$ž•fM?¾´­PÌùö`¡ÆŽ‚Pã(>ºq16æ"uVtšþmÎß*E=¢_²{-®Ë>°~þX’Móìë©¶õžäürÐoÊ,p呞µ©ÃæÍÖ”úûDX³{_›4Þ‘Þ‚äêtõøËä@¨å!™*@}3Êë凼IÀí)ŸciéyföU¥±`‡-n£Ç$ðMeÐ…u–(‚æÃë5V¿•^…ô¼€zM¸nâÈ~Wå×ËÓk„[®ìh/Y•¶Í‘»ý*Á†Ç˜öô¼l|wœÉj¾ãâ†r6îø€-UÈ“­ºÛ^ܘ‘Üôј…PPh»›,¸ô˜äŠŸb»9BªÔÐûÛzrbreb%pÅ<ùá$} 0ǾûêÐ}˜…¡Ó“¹­éµ+Ïo0Ö\«¹™»+N[ÍÂÞ"ö-h•QÂÁØ\ÃÕ ½‡úDÏ…Ý·g=ë© Ã+ä ¦:ïè¹îêâää…íja”ÿ9épab+‹•Ö¿JÜR£p€orÀý÷öîË ä~úyP(Š›žQ‘kô ¸öQÚÒ;¯'«Îš)£YwÑwœ†JMà¸Dœ4¾ÀÉ…uí‹éÞÀh¾.q RU^ñe+F•˜¹g¦¶x *yUxÙôC!“M-ŽÍç!¥•ø†åvÄÅÍ“`o'tW1PÜ©„§CwÚêÑþí`·½ýJˆé°çM3oÅó yûÒÿZ-<7ÏV³2MlŠ;?ž„¨1ù©Y¶åùé1R[~RÒ)_í/p§å.D"N–Qä–mÛT’—²»ï$&NZ{ Ž–€Úhê¡á³ØA"µ7‰—sDÍ­ˆ—Ò5Ž#|9…߇áD<à\n£µ¹× ºÛÐÈCÓ¢6ÂáÞóä¸â8¹F-ò»®ßBƒî_ÏÉ*@-T j!oJ®­¬ð©ñ=e“Ù&ˆCŸã4.ŽÆ]}¦ fä¯Þ>\wM6Ù¾šaû*€müÉžù6>toò XahÍy#ÕÃös×çwÜ~Z¥¼›Y.+~€ì„õ¢Â!Å’Ççä‹$fß³;ã3¸j¨S¯Ü¶éÙ½{ÉM²º|Qk- .9£Õƒ? y$>PºyD/Z¢¥/¦cH®”uÖ{–(NUÉd ŸæsIèŽÄK´eP—¹œó^AQslÌ:VÅž>wÚEÜ|ï=s=^`=l/Æ;/b_ê]%løQί–•Ê_—àÁL$0«Nf"b>W%õî¨èãå>ÖžoÓÑãHÝfÿ®o\p>ä’¬¼>mšWˆve²>‘ÓIxÓ)©¾›ü ëtRÒ¨÷˜X*s6nŸD¿â¢k{Q¼W¤s2àj ð/þ1>·Y§h⤓4(Q‹Ã@4gi8HR²DZ=b-ö½+ޱñC×0VÑ=\hcŒ¿­z3¸DYÒÙ­›üÎ:È–ÆÈº3®âgg˜0:õÓ þ˜:£Où a˜”â~Å娲bîvrWj‘ŒšMË*-¿NáìÍ?àãw¥” è&Nö…¶Rä*‰­m5³W)D UíÌ!nœõ Câ|„´†^ˆ‹¦d[ —ÛOk“çð²T Mzº¨µÂ=gKþÀüH*‹kß9 D¸¥˜ú¥xÎ U‡<=f„ÛaÁ·ß¥ÓP/¸Í`m üwáGuÃAg¤ªÞ-7Hv†ä-˜2J»ÔžOû*tÉÿÊÀœªZ5}T—£ˆ…3FBa¿äâeU[¬k‹cef†O¯‚`,Ö;äÑ€É ’_±)Šmlœ\û_<ùÐb÷±PØ_ðîâzŽízD÷æ5ª…›Ç?>y."¥5RGë¶ÊíGy¬Ú¥}5‹MT;†h™p´â̼>¯ZwÅè"_É.« yœ‚Œ{h.WVß¶Ng"[¡5Áç‚dLS=ýgf×aA)¼ô¹@145'➦¤Ç«vÁœPXó³ÎEêfýØaÖM˜†‰nö¦8½¸c±€Åš9^ÞμY`—,Ô]¸zm‰ܢߗaáOÜÅXo¯[âÎaÉ„¶Š•žÁ“ôå,_²’óQ‘W9Än<6¹ˆQ*“y[¥ú(ì´ímX²ÙËÅÁkjŸ8Š$£Ó#¤^­j$œ‡r/{>3M˜ÅD*è´%Ò=î÷þ)[T›8BÀv†ñ-sø ¥ó¾ Htàë%Œ&_ªœ:­ ËbwCޱúå/¦¡3AU‚Ù¯Zà,¯Õë…þÙYûÔ¬0ÇZai•YzØê˜‡’B®eåó§œ"b½Ùr]ˆv×åÑßg-u‘¿€†%Ì8ï…¥2e¶bع´=xèf\3%œ~f<þ( ÚÔó½xsq¨X^(S}b½ø31Θw&õD;&J?¾± ­ÈwàÀ¶ž{çìÝEI“Pd ”㘱ÇS)“þgb’ÂMiX¼t•Ø–H>1¶:·K¿Ó3¡Áà1ëD^ó 6qÍpÓæD”…ä[U—%©¶p ]N® *¨/g´þ’@¥ @> ÿ¢äZTˆtƒ7ª¢¨ûÌøž%-:uT€1HSÈŸðð1_7”å-Ô‡û‘4œ?RÃÛµ“Ô»(-ššôÖá&Û1ú¨JJšêð¨÷ q?ÝZíw÷Ç;ÊFòhznTÜ[®!d¹ ¸¸Ù®q”¡z™š.õI×WÐ[cXòúÊ­Ö} Qê¹£Þ²¹=ÏRѳIªøu·Uèb£fèÁ^Ì)Üjö×ý’®ñMý{kÕÅ~ÿÄÛV¸‡zá78Ú-à¥ÚžH M‘uô¥çŽ£‰N„ÑÕH¦‘2z'ÁÐ<Õƒ½S R:êUy¤@qvAN‡ð‹3’]ɹã3¥$[#°÷ÖÙç#ßb‰ÎåªCé/ Ž»ô}™ÐªX}ò8ú±!¶ü³ñfãÑ™†&oZÄ¡…sqYT´@/s{„->T‰=çlBy]¸»7¹ˆƒO´òϾEýÌùcÙ»í—Õæ”¯û‰Qr+B^)lw %|¶€dÔ¨h±e¾:r­|£>ȅÞ1ìcÅž*rl²Í ¯äª!ª¥¤ºœàÎ[Q¶±¾Ý ñçV7o¿±®ëFæ@Òâ#~þéL&äEx²œ"i™4OŽö,œ_*TLÊZ“å^_ž‚‡O?™\»á|7TªÆšÞÿPÙ§Ó¸ *iŠ–—á6;JËÔÝiô@G?ÄÕkÞ©•!º *V‰p¨Ä30ã–$dÂYã#Á$Žn xÍž×:žo’éÉ/‘ûL—I€Ú4cÏÓ`_ê‹PUÛé½=ÎÞ¥‘È+ï§ ¢=•ñØ'kÙ;:Ѩ³3bëmlq^œÖžÿ 3GÑgyòËv÷PϪ.ÞÜlœœm;kù儜ïÛß…š÷Rh·îJ!T!‡–÷ÕJrpjÃê#â×jQ‹"®kqáM¬X9n´ëÖµÿ^â|î®/~dîØ`»\§wbô­ØKmÙWÁãI&ª,ÇÀøz˺°P>ó÷kÃèj8ˆ¸SMÍ£Ùý7Í$òsa:ÇÛ·wâçÇ5‘?PŽEÞEå%ÍàÛ¾µhϽD¡–Ɖ×M–»«3•-Ü)k½^À‚Hø?Ï­}•¥óq?ôy[ÊŸÕP; ¸ŠítÒeG¯ò¿w3ptʩ͓ÑS1{ßÍaйìPùKun²Á/ Oê³ ¯}LZOÙSçeÙéÊcÝ™äl·õ·Å®ù![pÙ‹àË€­þÒõÏæÚ Å6\Ã.vµš’}Ï#RI y(®‡y“ûuÀK)^߆¼ª HÐð']Þµ&q”rJ\ùì¸Ef@V0?¨È`O¤Eéï÷­ºeÏ6?":ã:xeà¤t²çõW/âÁ.»M-¾‡Í¾I—å–éÂ[ÂǪw;¦}FkKF±ù±œ&RG¿ÐEÅ 0|)—Roµu±ù)E?3‚…]ÝÙ i¬ä– iQm³Ëº%ñÊÝi[Ñ(Æ3 ØáŠx¢<®{ãa(þZ§jÂnO2±VZ-‰&š8îÁ“›Ä£»_^1ðÅ—K. sŒþ~°º¥C‚ï”qWœ’—ÞYûvÝ|±Ê?OUGª·÷F·BzÇ¿8M*y»XÎÉ p~úf@ïAç¶ýò Ÿ:N¨"»ÃAjø§+xüÎ…¸ºæÜ©ìy-Ø^ØXVãñ SÂ|I ÕRœØÕE»‘¹ÉS^ù_,®H·—*pŽ¥çÀQY}A4÷ôB  ç¬âÛ¯µ©a£JoÅê”Q¾šÅ¥AØuQjk†M¾ýf©æëÉl1±k¥1Ö˜åTŽfú6ŒùÎ[Ñ; Ÿ…‰7q)N’â ‰ÄÊê]4Í—ªÎ/IbÌdÂæð“…Ô»”¬ãÇÑðÛvމ¶Sž×HÎ8º¼Kó•VÜÒ h#~€é.(±|¹F“ m(а&ÄdÒËaØêLµŸ–Þ‚`ß­òW`ÚýÚ»êƒ*Ãdf ‡˜fëÔvîèŠ!™òÚCFaØjΛø®öˆ·B1‡F²è¬Ø¡Xü²ß) q8s¾Ù‹‰7¬­h)aIǶ*lG­œŒenÜžç't}ÆBqˆ%żÆJ²;è•r$IH %ØAúVËùÈQ›RˆÜŒžŒ„GO˜Ê ÄFñ;AIYn'mðW£Ã“ÌzmI¡Ÿ€“iB¸9ö+HmT¢ §|jµð?¯9_±¿3ÓŸyMµT|ä”ëÅ“ g™\7¦¨õ%bÏKΫ¢ºˆ/6¼áÍ">«Ü»QHà !iê®*_´^SÙª|¾ü²Ë3©a)ðV}ièóåýèLOSßé8n»âÄ ºrÕc~ÊžC—¦¯Z©VbÓ…s”9æ§¶­Çzá±90Åì†^Å‹Á.àÈX€aó`hÑçÔW™†>‚ÞùÏíôRÈeƒ&6 un¢†Vâm R¿M‡¡(ƒ“uWkŒ±6!TæÊÆ»â‡&Y늦ÎP‹.&&#h*–é‚’ûÝÐ3ãy•³rNjÉ]½\ZK®WhÌAEzWùq‚©¼¢EεyX:óá—*AV:ä©¶Á­¡Ö3"›#d¾^Ŧãê%}çPC2ätb’iír÷,q{ñÜg·Uàl©ÂqÕ™4TJ¯Vt9Ê»Àï¢ ‰§ÙÒ;@ Š¶ÍáŠÜùŽ˜ø·R_y©òR[m°ØÊ„×W(ŒV¶¨}µ=Ÿ¨.L¦z­%Žâj+Ëö€©à&Åò\ÊrHä@ßþ\¾¹vXt£Rá}„B%—±EÙ3€š–§ô—n?:f¬¥ëkQbÉW¢¡ï”’=麫Ón!Í@«CƒÅZ¶÷ÝÕh¨cE«ù"ËBÀ#èHR™¾À|²ÙJ^Zí‘ïùCÊtbš“³÷žÌàYçîû­Ì)÷4k÷`2Ûä|b"UU<´Qz>Ü:/Û¿Þ½KOkäæ±+®ÀëpÓ契™ µÙ­ð¯‘Ûr²tÈî¯èW²Ô>ºf[]Ù(Rµ—×Å < MÜU~5çæø|È‘g÷qÃrÔó´{À™)EU¼²,,D!¿-QÄà)ÉÍ–ÅɲH L7ÎÌˆŽ”åqÏ–Ÿ"¹];‚˜âÞšR Œi$ÊžãpÍQy%Λ£÷Xaáu_ñ6+&y±M–£M8jÍŠÜØÜ½ð½„ù\ƒ‰ñ+Ъ—/çÞvI^ zÖL°­ ŠLÇvpJ—–Uä Ä« Ü Iº5SX°~â< °X+”|Ž‚¦Ê—”q2ª& ŸŽ/c¢*Rê‘Γ÷±„"ǚʀ+éÃDFK^§»½ï  SÃH7 ³gµìû3X€³L@ÕÞ?¬¶¦Úoøòtå¼å9¦®²ˆ{:þ3°wKOðÆ}3üÎRôCð¢ê—Ìhmâ÷ ±Íoê[!L£{(?_‚wÕÓôågf;‹ÆÄðI“uåR¶š²f‹¦jUqªo‹®Ã};ÁlOxTFÇW…ÚÁ«ƒÒt˜ó¤ê]ì­€dìFm—EÏQ ôå¨3DÛÚóšøL›9ç¨=™åɆSÿʼץí%êìa”“gÌeu-8[!>QsÎ ?MOžŒÖzc…†{·o=©#4Õùøà¥WÂVrˆÙ_n‚Óø“yhLïPí¶mvíçOX•Wõ¶}Íšà&ln7‚9ÚóÊ“Á+ìš=¸ÑÌ»¹f˜WÚŽûÿñQ u®õÒ'Õl:FJ›ÎØU±£ˆ™­·ꪷúùAÚ;[¦Ôü)„·ê% Ÿ)M$s®©v¯™Î7À="bMFÄáÏäý:e²¬K2îpÀ–U¿“{¬}«p°Y™­à[R3)ÀΧ Þšp• -j­0‡ö¢Þ>òˆJ]—°k6ˆœmÐ#dØÙ,4Ux¶¨VοT¤0ÖßmÖt—:‡Çjk4ß0ŸÕ¾sÔ#¡áåó¿x_†ÿ̆×˶¼ºÙÎ ŽFS1÷ë×Ì/õ¥¦7“`]äé$,˜ö¢«ZÞµ³_ÌSñ’xðFͥɪҪ,,IÓ ½ùCû?#’d.œ$«ŒT-ÓAÿ• ¡`J,Žª[‡ûîMcžªinžç“¿ÈŠD%Z†§ ^ýB­µÖSþGû*B?W¶I£‹¿½'wÑO aÌ™%.8¥øê÷\ŒUo ¬©¬£xV'Y8^;ÿh›Àß8·wÕhsÜöòTÆrŒö7ïâgeâ/Šîš¶ÅþîÐPål·m32Té½fZC ŽÜöuÇ Ìõú*3ü#Óh»òÆÉ‹²Þ´]ÝJͶ`~µƒÔØÀåÁÅk¦hSü; ÆgFS‹ÁÔÌY½Ûe}à)ZV»‘ËýÄžßÁCË"×ê[Ù©™_kSïÞÖ/ñÆ$Ý¼ÆØæñ »m7õ‹årï›|%Áú¨ãIllýfp‰ 7Z,üݧŒè‡WF/zƒŸKYî)W‹ã*  4%I=È-ñ«oH°½A»çvÀ;#+M®tW,±65Í„?I-[ÿ3IhA½[9í$’ŽGLQð¸ãoþ·”‡;Ÿº >wð܆pÛ‹×›O‰ìU0')mŒ,Øή×Þ4Ô3ú öÎcæ‚x¸ ØŠ‡Rµ=®¼˜;(pá·.ÛËœE3A záò·¨÷¿hËf3ý-' =gËÇ#>1N“)¬À™Qþ§Þ8½¯”ÇÐk¸ñQ2®«š’ÉHªQn¯3jG6uj±PªÎ„NÕ8÷ ¹«µš£Üu1/4´ÃšŠ*i5>in8®|ͽs%½ ^CÞÄcãó*’IZ¢hI4¿iæ¥JÑ 8–?A“p:P·âá!eF™{6Žüëyâ’Õi§‰éf|iÙŠ«žË+qœÍ°èmf¿0¿v¬æåõwtfy#\"´ßKöyoR°úh}JúD¹Ê„Í0xâË“ƒ&8ž…¬¬è/$åUX5Š"žë/…•œŸ¸ÖÇw;Ð09ö_3H^ÈŒÉ]vÑÔtpð²e‘¸‹‰,–‡ªiiû2–.š ?,;ÐOàÈôùlް›'5ÜG `6ö¦~b ~¬&Q˰í´ÇÔ#ŠT‚¶/oV8mÔz¤î¥g¦~"»¡Ô»«>:¼äÚ©'õ Fo#€-~TEYD*±3Ôâˆór´2JýØO(±ô¯ª¿¤€8(®#ãyÀ|â mÓ”¬¤úE'&3jF”IâÞ>|Ê”@òcéóð9Þïßl½Ÿ~­ßŽýÕ)9;`Ÿš.l-}“{_³ —)E©#÷k5©(F»Ì– .+úÑœO‘ýŠ+“ß@•…‘[Vò,)¥ ôÃyWKý­?Â)áiØwQ`)¤&Gª|î^"ƒ)[u ØÊd†ˆjLF=l ²•ðµ*ᜋ,sÀp^ÆÝñ¨À#b„¬»‘¥ñV-¶D„EX˜î@·sþð_jâ»ßRÑ|ü³-1T¼«ófåÕjþÑ« ã¶,'td\jä>É«ï7$YVÛªðýí#L´½»ý]Øz)GýᜠÇnÑõ€°åd’||ÖÇaˆ0™¹¶í„‚mÍL’Ę¥Ê ݳæô³Ú;W ë vH‘p⟺_¿0þ½Juïð !äÒøJ 2Z–‹kîÀ(ˆ»>>PÖ­erqL¶wZÑ£U¤Ê5vöH»Œ'äh~ZNdóÒéñîO±ôm­©²ÖlÉ{œ?I 8,«Î²‹Œîûýoûþ ¢eÀÜ¿ú3ã¤"¬Tt”Ü­#rf àŠüG“—mr(×¾Ûì;Óå··RÓŽCá^ q'HX{¥y¦¹ÉWiÙ¡ø8VuÃ×òR°ð|’CiøjdˆŠð“ ¶O‰Ba\»—¿­x‡H)èpò]+Þ"ÎçF· trZåC{cÂL©ß×bð$}•ÌUÔL´‚n­Í™‡‚‰ªþ™†*€CÅ&[}ç͘T¯åí=Ãâ"Γ٠@#¶Ï¹°6½gÃr î\ºcÊÚ+qbŠšBJò™¾Zy…ëÌ«è8nÝÃûæž·Ö2‡¥\ Øí [£G¥@!¬ÇdÔ(£«qòÒO(ôORŸ8ÙGé&“/Læ&ÄòÚ–€<3«Iü$t‰­\3'¥¿éžë¬y‚æƒoØ"ë „ßÆÄîïfµ”4AµLübXq2ਭ±ñ²¯ëXwÐkÑâ¹ žŽ|—Ÿƒb*v£…z¾$L›«àO§GL”pîÃ.é¿{ÐÉÑ3ŸØv”­ÚØCEr@ø:çÄÕ´!w‰ö…m„ò~ÌrÓï|)öìž±@˜39¨¶2}#G×Àb§öù}xÒœcªŒÐ üFFÆó3ì-O½UàáY&«ìÑíâ•ð{”[–£Oxx˜e:!³Ó¿(=¯yìÈ…nì):jú ˜‚_êËï˜ ˆÆ¨À,`.?ÂÕPÑd¨Ðz»‚¦*èÖ'SÁ%,,e¹ý”Ñq—rm¹'V–ð UDÃ`ù<…¥tS9Ò¬‰!,åôáå¬ì[bÖQ¯þKï`"é7mµ' P `heP-+’rPz]zÈ>°ö0Êdx›·j ÀÈø$tר}OÞ€îwÓAùˆRUºÄïGE¤œ¤ûlÛÞ]x‰kì옫ü2÷Y.(0µZƒ?¥ÅæœC)ë3`QS¨x¿¦;ìÅd¾öy]vÓ}=“vÐð*ìiá­îåL*Ö²!ª¡œJX̃vÊæÍî_&ÊÒQQäzz$¾†j<§7×µûžžQ言}ÝDÙù-õôlÚšìXTÕô¿_eµù~VUìz.Dc*ò Ӧ‹QƳÄT§õûüi»/‡ È)×…ŒˆT*ÂÀê\•j>Ϙ8vߨ˜¿£V @8’“u\Xë% Ë0}=]Ìâÿ““ТS‡XGÕÕR'Kî8’é2C ;}M)¾éÉ×2?y ÞN£åg1TÖn¤UÚ·È—˜U’Ñ"7 lŽ)pÄûáG5»T¢gIO)®Eä{Œ:Ã+}4 Æ-–¥•æ<ÒM\Pâ ©)JeœR`*éï =w/9Œ jb„=a0&eI—Ä5Jmó1,°½\0·¦"$.:Vs!\‘u¯ä¯ç’þ;ýÃ8IÛY7£Ôoò³Ñ s°"¹s}¢ê°[µ|(ËÍìWy6/°ÈܼÀö­ùö8¶*órÆQE\M”¿g~Æë >ËpRÉw”¹fpfØPc;ÛÕ¶F”J„îÅQÌÃéR9â †p†|dŒì5C‹Â­eÓDæÀqÂOW3#?óx±¬WCÿ‚NÀ8^ R„Õà~›(ÏÚÉaêÍЊ°!¤36ÁÄþüÁêÏѨËîlQL”îG²äÓµ…òy‰¶3mS$Pb¿ëîãó¿¼Æö¦;\þx‚£¥üz6ÕìËùaC'P£=þJ÷ä\ÃA1=Ñþã¨÷¥Œ³›Ô ^ÇÈ¡yIiÎn™@¼‚º?\§?cWâ_<øÔøÖÝ KK¢컲ÜB%¸§à¢æmÞ֎Ŭ‡7ÑCw拽Æjž³N‚ª{ÆÝzhÏ‹÷»ké“(d!Z_»ßjÆíÿ‰](ÊH´'ÐþkÀ<°„Nƒ@;‡—‘6ñ¢Ž$8ͨÑÊL¸M0}à‰ÛE íßmÈU¯Úžia("`¬ââNšÞ°Wö?à­Q~ F¹L¾üˆ5ÄFr=A_—=šY iYìöÕ$³´xÈŠü7iãNfp„¸ÅÍòBãƒËÙks•Ú–mšJ—¿ÿü'Ìé3³k¹¡õÿ5€ä7='IŸ’+{¨÷ («ùîÿßPKw]Bd*…,PK•¨­@'Configurations2/accelerator/current.xmlPK•¨­@Configurations2/progressbar/PK•¨­@Configurations2/floater/PK•¨­@Configurations2/popupmenu/PK•¨­@Configurations2/menubar/PK•¨­@Configurations2/toolbar/PK•¨­@Configurations2/images/Bitmaps/PK•¨­@Configurations2/statusbar/PK•¨­@ settings.xmlÍZmSâ:þ~…Ã×;,•]e§TAË›ú-´G¨¦I'I)øëïI‹^/Â. dæúA†69'9/ÏyNÂÙÏyHf dÀÙy®øÍÊó¸°ÉynÐoää~Öþ:ãÏÏUŸ{qLå%(…CäNg²š½>ÏÅ‚U9‘¬2‚¬*¯Ê#`ïÓªŸGWSeÙ“9 ØëynªTT-’$ù–ãbR(V*•Búö}¨ÇÙs0ÙVU6ú³*Îù‡"=![Lª¬dY'…ì{îh¹ÈO¦)åjïvxß~íl© ûÈ Bm›£åc½´óª¬ÎH>¬–[7ï¿s†8Þ@ú<ʽ¿Q‹ßPÎ&¹Z¥|zR<+|³½è6<«µ²­ýäŽ_M× >>ù^<ÝOø“éúe”¬¥÷¦l’þL¨ÜZ|>$Q>`>ÌÁÿj¬õA–ÎÁô‹íLÞòW–*•´±u<—vw寨+ž–O÷ˆëMéR´*åâñ®re0¦pøtIÅIðT²»1StîgŒ:WЇëM]<ù~²c>qöQÖjÐM¹P{áR›,x¬Nã­æöRúQ—I¯sþz°äþj—ñÖ^ÚÑà-Ù ž¿!ðÁK_óð3Èlz½Ä­õ°Nn_Y³± ëôŸ”X›RžtÎÔ5;„y@ú©ü.‰@4{ âÕt?D|Ø~æ¿»çg4ÀÆâµ‡†t»ÄHute°ZjP!Fv¥l•~ìÝ7 ˜-º1óTœÆˆ)븠É"¬nã`òû׀黂+„€«€~ˆ¥·‘»"Ÿ¨uÄg?èM­âpNØŃX›³DBù¤0"¹Ú0¹ú»`MïÛƒùÔ+ ½phµìEç¢SOìÿÝß}qx?x‹Z§Øy|¸¥ÞkD}§˜t^ì·ÛÑÉç¡#ÛîØìþãû¥mO{úÓǽ°¸Í†õسç«/ÈèÔzzhUz [õ›·§‡ë›§‡{å]´’ÎÛ0v ŽÆ>Î!£JÜÖgs#j9áíÌkRê½Ys',N½ÐÆ¡‹d|øæ7‹tÌî+'IÚ¶ìØÑ˸4Ÿy¡K½+—wû- õ¿›ÃÒÓ(©|~ï‡ôå©o%­ß»—·³1s)\ºS¿yy3h6ØÓð6‚pP¾ïëMžŸï*—a¤†à1UÐÃÂF‹• €wb!°f_Ett;< ÛÀþ [ˆã Dæj$HtÇîÆ/]nbåºt¸œ¯Rݬ|”¿Ëå¹®Et1 ´QïS,Ú]"H 뽈xÚ²ü:%BÙ±âèk'Œ hB*Äzh!±cªÅnãp â{Ú]ãJ¨êÏ…÷¥ºl­mN|ˆÏ]˜¡g«ž¶UO¡c (k@}“ÇmH(r©v¯™¿M…•Öe3¿N {•ÈPt„9„z15JålƸJ5l&-;v£i¸<¹0Ñ ¤Ëoùí×nnûtÈè&"w—¦œ"Xë¿åê:–*x^hÇÊQ ¦ÂbBëÈëრÁ\ÓÜËRd Z²MÆ@/–gÑL‡¹£þ’¡v=ë`ë9Ášš´Öî˜ËMlØÚU7ßFõâT>*Yǧl×XlÐT gswÀæc<à—s왉o$Ȳ“Áe„Í›±žVŸ!â´š™]q úžåà‡é.š˜éS#bÓ`ÂÒ{ŠGÈn“Eé*ð±Ôjä2…Å.HPš©ØJ ]n‘Ä5¸‰êþÄ÷“‹{¾M N¼×‰àñ—†æ04Ó#ô7¹¾‡{îb¥/§Ú0ú¨ ž4ȯ?œƒ-bË{\ÑÕ#3hR>&ÕR;Á|ÇK·ß6ÑkÑ ²å®ÙÌCì$p¨hÐEzFkI9¥$’ž@8@©Îacbšñë›ví«ôâcCÙ¦<É#¬sëèÙ±·Ï.e—G”(æ¾4hŸÏâ¶ ·uúmúìiزx¯Sv« ¥layout-cachePK•¨­@ß=<1ó Ë¥manifest.rdfPK•¨­@wìÏy3) è¦styles.xmlPK•¨­@›ÈÅc33™¯meta.xmlPK•¨­@w]Bd*…,ò´Thumbnails/thumbnail.pngPK•¨­@'œßConfigurations2/accelerator/current.xmlPK•¨­@ãßConfigurations2/progressbar/PK•¨­@àConfigurations2/floater/PK•¨­@SàConfigurations2/popupmenu/PK•¨­@‹àConfigurations2/menubar/PK•¨­@ÁàConfigurations2/toolbar/PK•¨­@÷àConfigurations2/images/Bitmaps/PK•¨­@4áConfigurations2/statusbar/PK•¨­@/|I%|T$ lásettings.xmlPK•¨­@x›×Ý "èMETA-INF/manifest.xmlPK)<êapache-jmeter-2.8/xdocs/usermanual/include_controller_tutorial.sxw0000644000175000017500000002371212032647214025276 0ustar ebourgebourgPKÔ J3á¥19mimetypeapplication/vnd.sun.xml.writerPKÔ J3”<æõž ž -Pictures/10000000000001A30000007601F137BC.png‰PNG  IHDR£vêsk‹sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ< IDATx^íQ²Ü( ³—ÍöN¹SÖ)Wy‰BÂ6àž¯}3Pƒú ¿¬çŸ_¿~ýà@`o‡éxAØ›À½Ã#:@N®P€ °=L·ý  @MÇ€ ¦K°È„ô0]ú-$ €é,2!B =L—~  `º‹LˆHOӥ߀@˜.Á""ÒÀté· €¦K°È„ôú¦;årÔNî_{=æfååw˜”݉îÁpè {è+ì‘T¼ÓÉØµ­gm=²œcSº†Æt¬@ÀO`sÓ‰*즡ªªò³Æt¬¸ˆ™î2EY1‰yT?²«- ò¼iZ¥Ð2š>r¶1"Õâ1ÑX­5ÿ³™3ºÖl:ÀöFL§†ÕÜnÙÍÎü+ùµPJ5Ø·Þœµ[(ªûNuV§Úí¼jº;Qo¿Y ÃMgÄ®ºiÌtBaÕ»§Hé<•5 Q–jíz:צÓÖ#êštxṩŒ˜®dä¿¿™ÝI5áËÚG/˜ßtL²[¥ŠSªý;À¨SmM‚…Àƒ0Ýÿ0£Â5JKÛ}˜îÁLWðøJÓukÕt­Óh÷ ieâ£êÝ·PMWÎS¥v±Ði ^4Sl\%VA×t§ta%Þ©šB¨êꪬ¹Z%›–”îM«°ì­¬ÅÐåG¢†u޲`i6<%jºÄ.z7t¯éβ®tÙ5/!¸²¥¾J—‡­:±j:m1Ï;å¸lßub÷ø¬'\\ž=®‘D+xX1‹\ˆéÞM÷Ľ»Lw:®4ÝIìªGô§¥¿„ Ëk ò­šÎ(|ìšHkë=ÓéÛsݱ†•½ˆ¤™¦Kì¢wC˜îòšPUWdºè]UCœlºÒÚ"iÒ©UÓ=n:=½ý º¦{7Ý÷î5]YÁ‰â.j:'íɦ3Jíçñ³uj®þAÖYÓ ü1÷‘jkN'˜Î™4‹ø˜éª~,g5mŠûeenWk·RdU©½aºªdçhhÂ(˜.šÀ´w˜®ZÊ•çÐê½9ã*û†Ótú¯±ÂJçÎ7íƒê >ÛŠ÷[GZ=“kòžS°1ÊÍÓ9ó–fQü?sR˜Q\0]4iï$€é\H£903oi%€éæ¤0£¸`ºhÓÞI`iÓ1¤|ìnê #:÷.Í à'°®éŽ\e¶#àß¾´„€“ÀÒ¦sÆ@3@6LÇö'€éö_c"„0{ØŸ¦Û‰Àtì@`˜nÿ5&B@Ó± ý `ºýט!AÓ•hrBô_âlY>†×y‰˜êq•~Gt{6ëßI†f€ÀÛ¾Øt7T•—x³û¸Ð·—‡þ!GÜ5]Ëee$”Ô}`§n`”Tú#=ôU”‰Ù¶®½ÈV£s†öÈòÐ  ðgLw /D?çÇVæ±äØ­éʯö&çÜG6%@àq.Óýû÷ë¦Dª5ÿMÀo:qWîÎéU”u­*UpãG@àU†½¦kù¥k(ÏIP”BÕ3fë[5]ë€ÙR’˜¤q>­Z¾Ûíã¿ è‡~·éì5j:}ᥰÖ1³ëÓ®Ù[=°/!W |Øtúæ}{«%£®ƒNˆ~yN¯w ÒW•Î!Ï×t—qZÇ:­?ûÞŸQ(éôÙ³:ŸjYçñiÙÿyïÓ+Yx¥¦ûxTL€@IÓ± ý `ºýט!LÇ€ö'€éö_c"„0{ØŸ¦Û‰Àtì@`˜N®ñO^X•@TH«Æ1o^1LW1Ýo^XÀ±SI…dwe½8æÍ¨$†é0ݼÇHwœÚ0]è’—Ä0¦»“}\;¦‹ZÓYÄ’üó—‘‚0¦‹ÀtÁ$£ù0]4Ï©é0݉˂0¦‹ÀtÁ$£ù0]4Ï©é0݉˂0Ý*¦3·ûEߟÀ_$‚ HóIæ˜NdñùÜì/}½UÓ…žr¾,;L7)q&H`¦é®ôü¢E+ežéŒo„è~yÍ1oãû/g¨~S„_¬˜.˜€4ŸD೦k%£ñm0gÒéž7ÖHíOšÎœø~™²lÆ,[ê«® Ç~aºI‰Ë0A+˜®ÔŠN4#O«Êk½é¯Kì–ïšî2t†QÜÙÑ ß¿@žú".LL@šO"0ÓtÆqªU©é|¯V!âÆŸq8»ï»wM'¬ßж*Ä®ø¦»ScºI‰Ë0A3M§ïÓUœÂzeAsær÷ôZ¦êØ!ì N¯Õ»žcÕ_õª±ß ˜.˜€4ŸD`}Ó•÷ÖÅëH{p,a¿ÀtRsÖtºÀöCÄt“—a‚¾ÝtÕäµß¼YÁ|òôZš¾ú§yèœ[í߯¹£%¦ & Í'˜iºî}ºV¢•Ù*Ž®ÝK´5]H(Ë6Æt“—a‚æ˜nÙĘØ[5ÝÀT¼Óæ“`º¨.0E ÓMJ\† Àt˜.JÓ“Œæ ÀtÑ<§¦Ãt $.SÀt˜.JÓ“Œæ ÀtÑ<§¦ë˜îü·&¼ °÷¡l?æŸ|3_Äøn°ÊÎYà÷7S€@@ÈtGc8žÄ0]tçÐø>˜îûÖŒCQϘîè… • rüâGÈG•O{@ -L—vé ‰`ºD‹M¨HKÓ¥]z‡@"˜.Ñb*ÒÀti—žÀ!ˆ¦K´Ø„ ´þVìÕ¤Þ¡ËWIEND®B`‚PKÔ J3ÙFùn11 layout-cachep-F¢ x!êP ZPKÔ J3 content.xmlí[ßnÛ6¿ÿž‚Ÿ† Y–Äq{X›u(¶ÁâbÛ%-Ò‰ÔHÊŽ{µÙ^nO²CŠ’åZv›ÙNQÌEëHäáùŒÙ«ïÒͨTLð¶Ú¢<„ñéÀ{;zá_xß ÿwõÿë7ÏG¿Þþ€ÄdÂ"zID”§”k?\ÃOtûöÙÍËçÈóƒàMFùKÖr×£kT¼_»UäÁ¯=äüZDoxµ‰9èÈÕe1;ðb­³Ë  F,ÅtÚívP¼{nÒ‹d;½¥(É5}Ð[© AEŒÇàm)Jr"ñ|+µ!Ÿ—ôQQÏçóÖ¼k)Ã~¿ürw¼2Å•. ã÷éílIÊótLåvM°Æ+~Q³ió³Jå(Ær»ÿ,ÅÒ#]òtII ÆÆ ¼^Á¤ýxu³tŸL·27•}‘dÙvÍ ¯Ìþ(ÁJ ¼"ÜØJ U©\, ª÷ d´Oh”¨á•uòrï§W#‹‡šˆ‚b‚S–,Ê /ؾü&Áès…ÞrõL×Y}…3¡¾m -&V óM“‘H³„>¸iペ][Œì|:#;ÛŒlœ\Ùy”‘ÝŒt$ S«7áçbÿéaìï|.öŸ}â$/Çæ”McØBÇ"!oz±ªœn^»ê™†Õ]ÿñ®;?Lêt?“ԙȵ]ÀÏ"µÅþK’FÆB²w N|Øò^,¨ôÖg%M|ž2)àS.xX¢„e°9ÒHÝf<ŠÑÚç72àù2ÉSÆ17'„ö—nÌ $ ÙÚ¤¤ö6•”òÚû8Éëë§8M1¸¶b—é3^a½ Nu“ ˆ+ë³h±¢‚Y“¬xªLŸµ0(Y˦U0gÚñ’ ¡3š”Q±p“fÜêj_ëa{mÉàxî)ÔIbXï«äO«>8± í!Ò–?8ÛOðT™3bÐy»öÏÏLD¬yÛ~„9=¨ Q‰¨?¦@I ={«ç“ZÒ=€%Ý~·÷ô–œÀ’³~»ÿô–œÀ’ÞEïôé-9?€%ý‹Óó§·¤·wKÂVxž=½%°¤ éõô–ô`ÉYïìtá°}Sz½ÎþJ¾6ý1à sGppGppGppGpPÝ#88‚ƒ#88‚ƒ#88‚ƒ#8øÏƒ`ãå71dá| èï9å »W°>XèH˜Ê¼ðE®Æ©ïÜÓv&¸áe’äJK)¸Ñ|'f£òúÃn\àqg&×îšVŒF¯eë@êrâ%’œPôÜ|+%’l‘ 'Ž[¶…A§R¾yv8Š™Bð# ©‘v¼}Ã7(NDZb‘BbbߘS*ª”j¡Qã8‚dž1©Œ9¢X-Ð/i*HÉï ƒ¦J#Ë[è¥6j6™Pó"ˆFv± .Â.DžÁ0(TëQ¾’€â›*X'|ï«4¦iº…+ çf¡D`bÍÌ—¯õ™9Ó1ÂI‚˜..ý(¤°!R'hƒj« ¶Gà•\_Ô†—ÖŠïfT¹ÛIÚ 7ts!ïÇÔñe¯›»"Ú8M¤HÁ©–ÐÃZ]„¯¦ÖHæ\³ÔxŸ¬ªæú‚%wR«âY‹ÿ½ƒµüÜ­Øm.™µz‘P–‚+È´Ì3W$ ŠLщ*¾ %¿Ïë<¦ÆN½á´¾¯w P´•TåÊtþ²¯ì#'@hžGÔ…$‚ÛR莺ì¥{–G F,²¢‰4…'h©UÛDí7m^ ÛmH'Иh!rÄ)%&?¬éà~œ-U…^ µ›ƒx@áL™ièèÿQ\‹X åkÖ ì#;ºry¨ü5† FH_/2ºzh6½tè÷´Õ=/’f8v×ÌÂV§Ó‹q+àÏ81— ­Ùûî—±¤“÷Å-‹t™„íÚŸðûnñÐ;o‡/ÂnïÙóVf/ßÛµ…JEo/ÇRÍ MÊ! ¬±JÁo DKL¸Ý¥Ã è*`ÐAËCÃÌ2›~&¢fg4µ)—C€ÊìMs6sãpÀ¨’`‰­ÌH ˜j¾¶òįŸÀê í¾m²kM¬9¶êZ[ V~!løŸhÃPKðo¿£b07PKÔ J3 styles.xmlíXKoã6¾÷W¨*Ú-ÙÙìÆiœšì.È>Ð$@{¤%Êb+‘Eù±¿¾CR”d‹’“x‹^šCs¾y}‡ºz»Í3oMDI9[øÓIè{„E<¦lµðÞ£ ÿíõW?Þ~¹yøóë;' ÈeÌ£*'L¢Rî2Rz_»ûxãù(¾„}Ѩ « ¸}¸õÌïÛZÉ7Aðî³ïùÆÜ$–±}5`"då¥.üTÊâ28xá­—Y†ùí× Z{¯.ÉVŽ¢ ãåÛaá±À›Q´ãŸð½Ùl&›3œÎçóàû»à=9nbÙf”ý=ˆ×R eU¾$b<,ñ/åzå2n\7!G)ãüiDËÈY|„‘³Ø‚!Ùt Á‹àõ¿Ow-}"5®M~‘ ÅxäâÛÚß;-MÕ&*6&QV^_iÛÏüf8‡šyÀ)ÏñÔ÷n Îi¶³?W¿«"cï³Ò{dN*é›ú¼üÕ5ßëx(¨Œ€Ý5T—ìÿu”CÑŸ`ù8ç,îÛn%}#D+ˆ ÑÂàž”Í¡Ù|&ïwcÊÍêÌÁè‹" eT/™6hƒI‚«¬nŽÖháJà"¥Qé[p! ž…¤±j1` Î ‚–@PYàZJ¹ ßÀ)Î~8™N§¯(‹R¿Vö"'š°ø¶{h·e“HU2椊xÆ¡‘IQ‘=fleI¿x:S§Ö2ÌV^Á1 ˆWL `òñ¾gá’b6p;XåÃb'#´Î¬ŒqÖ(Ö~]¢ÖÄó"#[çYÓN€Óm#u9v Õ‡p%¹Ú! ‰Æ„ëC8+Ò&½‰KA0ÜB¥„’o|o•jgsàhágÉeSšpAB ó¢TÅX­ÍÒ^µ?åÐ+tŒ®3ð-ýµT¤»"% K 'ÁY¹¿W)$Ç”!5" mfáÏz ¢*Ó# Ç1iäŒCƒÉ©|f=‹de n@ ³ä­Ç³co‹ÅZ'SNÂÉ«ùì¼ÛËöOE|úÁxÁw ÝTå=X±h¯Ä^ùÛMÉpYBq«á5¶÷roÉãÝQƒ°ÐÌæÈL×§ãžåX¡˜‚ 7íê’KÉsÅ\xqf˜kù9ÂËðþ’zù×9dÊÞ`'-êŽÄÚQ9¶®öé“ðø.‰ÔoÑùë½ùÍÅDm§Í8#‰¬e  ó-Qéy÷©¯­µÏ|5˜‚M!+°— Ü9.¡ßìõÓ"Ÿ\òZcCcõÕìbÒÞáz=%t•ªÈ§#9Y«®èm;®7’ .¨ô‡‰éÐÑ(fÔ·³Yoôud“±yÙ¼"›{ÐÔð³m23W@û±§†”¤° 50á„oöX°S;Z C«hØÙü à lÊ ÇU¥4ûnªÁ¬Ã a7gvþsûxÒПBýç»ÅõmC°zäèA7ÍÎbЫ¶îú…V ð üêEeiôÒq…Úí”ûõÀýµÿúPK'§"q²’PKÔ J3þõq®ˆˆmeta.xml OpenOffice.org 1.1.4 (Win32)peter lin2005-10-10T14:18:53peter lin2005-10-10T16:06:40en-US14PT1H47M54SPKÔ J3 settings.xmlíZÛr£8}߯ðò:•`'ãL%žjÀfâ[|Iâ7ÌDHDÈCœ¯_ ÇÞ‰»YÛÔnm¥À æ´hõiI/¾>…¤ôó8`ôR«—µ¦.óê_jãQó¨¦}­ÿvñ»Ý³FwýF‰Ýß.þâ1wb*Žb,„ÔKý±yåX%íH×{¦½Tï˜q_×í‘]Z]Û/•¤!]otµ’¶<ö„§Õ/rÑe/iüeÕ|©Í…ˆ¾è:“vØŸvŒr¹¬¯®µ—žH@6úI’''©nåüü\O[ת.£÷ÿØ}¥¢­}ðÊk›¾¯»\¿X©¿‡ê}J/·) å›ü p²yK-ë™×ú©£‹´u‹XF²% B«ÆÉ©q¡¿Ey?ò¾YÐåý`oOÌ3»\=©í‡ÝÆ?Ïìt¥Z=ù¼øpÎ’kìÉÁÖQÇ[fŒŒ¨V|w·ÑÆÈÃüflr–Ä2ò Ý#ïa©É˜(Þ’CSpÜa>üQˆ¢£€zø {oÇ?›4é32ðåû¢Èñ¶º ®ÜSWü܃PydªŸ«•ÝasØbTOwŒöI3‚Nþµˆd•_çñ^%•ê^Ð&‚…™^>û\«í†=e,I¤í`›3¾»“h¹‚ñlØŠqº#“ã!&ØØkryc2gÜü•™yÍ/dÏV“åû¦ÖÕÅ‚#!'é2Ç‚çõG#$Ã`!·˜<Ù— F\cµˆÀÛÙçøWrm3Ž<$²2ñ:4vƒ–ó!—‡¹ÅˆãX­‚Ö©†Ò÷c³ÜÉw­¼Óä’“8Œˆü]Ô0÷Q„¹24Äb± aE†lÊQ¹Ê–^„³Ò÷PÓC²JñSÊ®VÀB°ÕÔ{‹É´ÆHQÎÁ<3zPŒÏªf@_jõÄÿñI7æ‰Óº&®!§·¿;ò“Že>Oo¿EÓÛü—µÁŸ¶&ÏȈˆgA¥gCâ´»Ä q“Wª7 °À__7¡9ËóÃlЩ\÷&‰j7™k™ÓÛ®¤Ã¤ìØãjÇß5&Kt3y~m½ÑpÆ– ­AÛ>ÿ¦|ö£Öœ)€©ìé÷5K¥Ø}ñ:¤cqmn®³Ä´|ã¦Õ8¾NàXmc_b7’´ãÓ ¾­+Yë4smÄ5ÎÃiH~LsûñZ,øÕjÃÌUÜ[LÚ 9‡Vò÷êï”jÏö¡‘Æ’³ ©Æw{zçšÏÝdzƒúù×Äî<Œëùök³d¥Ð2ÇŠFmÀ6»ÙûÛœñ`mQ¯ó\¦W,¶ öÑÖy6Àò“3ަŒ2îá·LoJWçkÂ÷Dv`<ß\øOQC[äAìBÊ¥Â5¹æÊ1fRÔXL¸°VÉT5tVµ½høã$¡ã—¦¼V*°‚ö 4d) «‹û¸L©vXA]øu𠟣x†³yxBt“þG±#ͫշÔÂ5÷ñJ4¦¦ é;* üüïƒS£É7Ÿ>¨WnEªwl‰$ú÷ŠD~'ÏnÇp³5“_PKƒÕ.¹5ÍPKÔ J3á¥19mimetypePKÔ J3”<æõž ž -DPictures/10000000000001A30000007601F137BC.pngPKÔ J3ÙFùn11 - layout-cachePKÔ J3ðo¿£b07 ˆ content.xmlPKÔ J3'§"q²’ #styles.xmlPKÔ J3þõq®ˆˆ meta.xmlPKÔ J3/Mö9Xš" »settings.xmlPKÔ J3ƒÕ.¹5ÍM$META-INF/manifest.xmlPKïÅ%apache-jmeter-2.8/xdocs/usermanual/ldapanswer_xml.xml0000644000175000017500000001434012032647214022461 0ustar ebourgebourg User's Manual: LDAP answer XML description Dolf Smits

The extended LDAP sampler was built to support testing for very complex testpurposes. It was aimed at supporting the LDAP operations as close as possible. As the results are not passed back in a user-readable form, I invented my own xml definition to construct an answer in xml encoding, so the results may be parsed with regextracter or alike functions.

The global structure is as follows:

The operation section defines the operation as it is sent to the LDAP Server. The following tags (with a short explanation) are used

As the response code, the official LDAP error definitions are used, so this section contains the error message as returned from the server. A succesfull request always returns "Success" as the responsmessage. The following tag is used:

As the response code, the official LDAP error definitions are used, so this section contains the error number as returned from the server. A succesfull request always returns 0 (zero) as the responscode. The following tag is used:

The following tag is used:

apache-jmeter-2.8/xdocs/usermanual/test_plan.xml0000644000175000017500000006117212032647214021437 0ustar ebourgebourg ]> User's Manual: Elements of a Test Plan

The Test Plan object has a checkbox called "Functional Testing". If selected, it will cause JMeter to record the data returned from the server for each sample. If you have selected a file in your test listeners, this data will be written to file. This can be useful if you are doing a small run to ensure that JMeter is configured correctly, and that your server is returning the expected results. The consequence is that the file will grow huge quickly, and JMeter's performance will suffer. This option should be off if you are doing stress-testing (it is off by default).

If you are not recording the data to file, this option makes no difference.

You can also use the Configuration button on a listener to decide what fields to save.

Thread group elements are the beginning points of any test plan. All controllers and samplers must be under a thread group. Other elements, e.g. Listeners, may be placed directly under the test plan, in which case they will apply to all the thread groups. As the name implies, the thread group element controls the number of threads JMeter will use to execute your test. The controls for a thread group allow you to:

  • Set the number of threads
  • Set the ramp-up period
  • Set the number of times to execute the test

Each thread will execute the test plan in its entirety and completely independently of other test threads. Multiple threads are used to simulate concurrent connections to your server application.

The ramp-up period tells JMeter how long to take to "ramp-up" to the full number of threads chosen. If 10 threads are used, and the ramp-up period is 100 seconds, then JMeter will take 100 seconds to get all 10 threads up and running. Each thread will start 10 (100/10) seconds after the previous thread was begun. If there are 30 threads and a ramp-up period of 120 seconds, then each successive thread will be delayed by 4 seconds.

Ramp-up needs to be long enough to avoid too large a work-load at the start of a test, and short enough that the last threads start running before the first ones finish (unless one wants that to happen).

Start with Ramp-up = number of threads and adjust up or down as needed.

By default, the thread group is configured to loop once through its elements.

Version 1.9 introduces a test run scheduler. Click the checkbox at the bottom of the Thread Group panel to reveal extra fields in which you can enter the start and end times of the run. When the test is started, JMeter will wait if necessary until the start-time has been reached. At the end of each cycle, JMeter checks if the end-time has been reached, and if so, the run is stopped, otherwise the test is allowed to continue until the iteration limit is reached.

Alternatively, one can use the relative delay and duration fields. Note that delay overrides start-time, and duration over-rides end-time.

JMeter has two types of Controllers: Samplers and Logical Controllers. These drive the processing of a test.

Samplers tell JMeter to send requests to a server. For example, add an HTTP Request Sampler if you want JMeter to send an HTTP request. You can also customize a request by adding one or more Configuration Elements to a Sampler. For more information, see Samplers.

Logical Controllers let you customize the logic that JMeter uses to decide when to send requests. For example, you can add an Interleave Logic Controller to alternate between two HTTP Request Samplers. For more information, see Logical Controllers.

Samplers tell JMeter to send requests to a server and wait for a response. They are processed in the order they appear in the tree. Controllers can be used to modify the number of repetitions of a sampler.

JMeter samplers include:

  • FTP Request
  • HTTP Request
  • JDBC Request
  • Java object request
  • LDAP Request
  • SOAP/XML-RPC Request
  • WebService (SOAP) Request
Each sampler has several properties you can set. You can further customize a sampler by adding one or more Configuration Elements to the Test Plan.

If you are going to send multiple requests of the same type (for example, HTTP Request) to the same server, consider using a Defaults Configuration Element. Each controller has one or more Defaults elements (see below).

Remember to add a Listener to your test plan to view and/or store the results of your requests to disk.

If you are interested in having JMeter perform basic validation on the response of your request, add an Assertion to the sampler. For example, in stress testing a web application, the server may return a successful "HTTP Response" code, but the page may have errors on it or may be missing sections. You could add assertions to check for certain HTML tags, common error strings, and so on. JMeter lets you create these assertions using regular expressions.

JMeter's built-in samplers

Logic Controllers let you customize the logic that JMeter uses to decide when to send requests. Logic Controllers can change the order of requests coming from their child elements. They can modify the requests themselves, cause JMeter to repeat requests, etc.

To understand the effect of Logic Controllers on a test plan, consider the following test tree:

  • Test Plan
    • Thread Group
      • Once Only Controller
        • Login Request (an )
      • Load Search Page (HTTP Sampler)
      • Interleave Controller
        • Search "A" (HTTP Sampler)
        • Search "B" (HTTP Sampler)
        • HTTP default request (Configuration Element)
      • HTTP default request (Configuration Element)
      • Cookie Manager (Configuration Element)

The first thing about this test is that the login request will be executed only the first time through. Subsequent iterations will skip it. This is due to the effects of the .

After the login, the next Sampler loads the search page (imagine a web application where the user logs in, and then goes to a search page to do a search). This is just a simple request, not filtered through any Logic Controller.

After loading the search page, we want to do a search. Actually, we want to do two different searches. However, we want to re-load the search page itself between each search. We could do this by having 4 simple HTTP request elements (load search, search "A", load search, search "B"). Instead, we use the which passes on one child request each time through the test. It keeps the ordering (ie - it doesn't pass one on at random, but "remembers" its place) of its child elements. Interleaving 2 child requests may be overkill, but there could easily have been 8, or 20 child requests.

Note the that belongs to the Interleave Controller. Imagine that "Search A" and "Search B" share the same PATH info (an HTTP request specification includes domain, port, method, protocol, path, and arguments, plus other optional items). This makes sense - both are search requests, hitting the same back-end search engine (a servlet or cgi-script, let's say). Rather than configure both HTTP Samplers with the same information in their PATH field, we can abstract that information out to a single Configuration Element. When the Interleave Controller "passes on" requests from "Search A" or "Search B", it will fill in the blanks with values from the HTTP default request Configuration Element. So, we leave the PATH field blank for those requests, and put that information into the Configuration Element. In this case, this is a minor benefit at best, but it demonstrates the feature.

The next element in the tree is another HTTP default request, this time added to the Thread Group itself. The Thread Group has a built-in Logic Controller, and thus, it uses this Configuration Element exactly as described above. It fills in the blanks of any Request that passes through. It is extremely useful in web testing to leave the DOMAIN field blank in all your HTTP Sampler elements, and instead, put that information into an HTTP default request element, added to the Thread Group. By doing so, you can test your application on a different server simply by changing one field in your Test Plan. Otherwise, you'd have to edit each and every Sampler.

The last element is a . A Cookie Manager should be added to all web tests - otherwise JMeter will ignore cookies. By adding it at the Thread Group level, we ensure that all HTTP requests will share the same cookies.

Logic Controllers can be combined to achieve various results. See the list of built-in Logic Controllers.

The Test Fragment element is a special type of controller that exists on the Test Plan tree at the same level as the Thread Group element. It is distinguished from a Thread Group in that it is not executed unless it is referenced by either a or an .

This element is purely for code re-use within Test Plans and was introduced in Version 2.5

Listeners provide access to the information JMeter gathers about the test cases while JMeter runs. The listener plots the response times on a graph. The "View Results Tree" Listener shows details of sampler requests and responses, and can display basic HTML and XML representations of the response. Other listeners provide summary or aggregation information.

Additionally, listeners can direct the data to a file for later use. Every listener in JMeter provides a field to indicate the file to store data to. There is also a Configuration button which can be used to choose which fields to save, and whether to use CSV or XML format. Note that all Listeners save the same data; the only difference is in the way the data is presented on the screen.

Listeners can be added anywhere in the test, including directly under the test plan. They will collect data only from elements at or below their level.

There are several listeners that come with JMeter.

By default, a JMeter thread sends requests without pausing between each request. We recommend that you specify a delay by adding one of the available timers to your Thread Group. If you do not add a delay, JMeter could overwhelm your server by making too many requests in a very short amount of time.

The timer will cause JMeter to delay a certain amount of time before each sampler which is in its scope.

If you choose to add more than one timer to a Thread Group, JMeter takes the sum of the timers and pauses for that amount of time before executing the samplers to which the timers apply. Timers can be added as children of samplers or controllers in order to restrict the samplers to which they are applied.

To provide a pause at a single place in a test plan, one can use the Sampler.

Assertions allow you to assert facts about responses received from the server being tested. Using an assertion, you can essentially "test" that your application is returning the results you expect it to.

For instance, you can assert that the response to a query will contain some particular text. The text you specify can be a Perl-style regular expression, and you can indicate that the response is to contain the text, or that it should match the whole response.

You can add an assertion to any Sampler. For example, you can add an assertion to a HTTP Request that checks for the text, "&lt;/HTML&gt;". JMeter will then check that the text is present in the HTTP response. If JMeter cannot find the text, then it will mark this as a failed request.

Note that assertions apply to all samplers which are in its scope. To restrict the assertion to a single sampler, add the assertion as a child of the sampler.

To view the assertion results, add an Assertion Listener to the Thread Group. Failed Assertions will also show up in the Tree View and Table Listeners, and will count towards the error %age for example in the Aggregate and Summary reports.

A configuration element works closely with a Sampler. Although it does not send requests (except for ), it can add to or modify requests.

A configuration element is accessible from only inside the tree branch where you place the element. For example, if you place an HTTP Cookie Manager inside a Simple Logic Controller, the Cookie Manager will only be accessible to HTTP Request Controllers you place inside the Simple Logic Controller (see figure 1). The Cookie Manager is accessible to the HTTP requests "Web Page 1" and "Web Page 2", but not "Web Page 3".

Also, a configuration element inside a tree branch has higher precedence than the same element in a "parent" branch. For example, we defined two HTTP Request Defaults elements, "Web Defaults 1" and "Web Defaults 2". Since we placed "Web Defaults 1" inside a Loop Controller, only "Web Page 2" can access it. The other HTTP requests will use "Web Defaults 2", since we placed it in the Thread Group (the "parent" of all other branches).

Figure 1 - Test Plan Showing Accessability of Configuration Elements
The Configuration element is different. It is processed at the start of a test, no matter where it is placed. For simplicity, it is suggested that the element is placed only at the start of a Thread Group.

A Pre-Processor executes some action prior to a Sampler Request being made. If a Pre-Processor is attached to a Sampler element, then it will execute just prior to that sampler element running. A Pre-Processor is most often used to modify the settings of a Sample Request just before it runs, or to update variables that aren't extracted from response text. See the scoping rules for more details on when Pre-Processors are executed.

A Post-Processor executes some action after a Sampler Request has been made. If a Post-Processor is attached to a Sampler element, then it will execute just after that sampler element runs. A Post-Processor is most often used to process the response data, often to extract values from it. See the scoping rules for more details on when Post-Processors are executed.

  1. Configuration elements
  2. Pre-Processors
  3. Timers
  4. Sampler
  5. Post-Processors (unless SampleResult is null)
  6. Assertions (unless SampleResult is null)
  7. Listeners (unless SampleResult is null)
Please note that Timers, Assertions, Pre- and Post-Processors are only processed if there is a sampler to which they apply. Logic Controllers and Samplers are processed in the order in which they appear in the tree. Other test elements are processed according to the scope in which they are found, and the type of test element. [Within a type, elements are processed in the order in which they appear in the tree].

For example, in the following test plan:

  • Controller
    • Post-Processor 1
    • Sampler 1
    • Sampler 2
    • Timer 1
    • Assertion 1
    • Pre-Processor 1
    • Timer 2
    • Post-Processor 2
The order of execution would be:
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1

Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1

The JMeter test tree contains elements that are both hierarchical and ordered. Some elements in the test trees are strictly hierarchical (Listeners, Config Elements, Post-Procesors, Pre-Processors, Assertions, Timers), and some are primarily ordered (controllers, samplers). When you create your test plan, you will create an ordered list of sample request (via Samplers) that represent a set of steps to be executed. These requests are often organized within controllers that are also ordered. Given the following test tree:

Example test tree

The order of requests will be, One, Two, Three, Four.

Some controllers affect the order of their subelements, and you can read about these specific controllers in the component reference.

Other elements are hierarchical. An Assertion, for instance, is hierarchical in the test tree. If its parent is a request, then it is applied to that request. If its parent is a Controller, then it affects all requests that are descendants of that Controller. In the following test tree:

Hierarchy example

Assertion #1 is applied only to Request One, while Assertion #2 is applied to Requests Two and Three.

Another example, this time using Timers:

complex example

In this example, the requests are named to reflect the order in which they will be executed. Timer #1 will apply to Requests Two, Three, and Four (notice how order is irrelevant for hierarchical elements). Assertion #1 will apply only to Request Three. Timer #2 will affect all the requests.

Hopefully these examples make it clear how configuration (hierarchical) elements are applied. If you imagine each Request being passed up the tree branches, to its parent, then to its parent's parent, etc, and each time collecting all the configuration elements of that parent, then you will see how it works.

The Configuration elements Header Manager, Cookie Manager and Authorization manager are treated differently from the Configuration Default elements. The settings from the Configuration Default elements are merged into a set of values that the Sampler has access to. However, the settings from the Managers are not merged. If more than one Manager is in the scope of a Sampler, only one Manager is used, but there is currently no way to specify which is used.

JMeter properties are defined in jmeter.properties (see Gettting Started - Configuring JMeter for more details).

Properties are global to jmeter, and are mostly used to define some of the defaults JMeter uses. For example the property remote_hosts defines the servers that JMeter will try to run remotely. Properties can be referenced in test plans - see Functions - read a property - but cannot be used for thread-specific values.

JMeter variables are local to each thread. The values may be the same for each thread, or they may be different.

If a variable is updated by a thread, only the thread copy of the variable is changed. For example the Post-Processor will set its variables according to the sample that its thread has read, and these can be used later by the same thread. For details of how to reference variables and functions, see Functions and Variables

Note that the values defined by the and the configuration element are made available to the whole test plan at startup. If the same variable is defined by multiple UDV elements, then the last one takes effect. Once a thread has started, the initial set of variables is copied to each thread. Other elements such as the Pre-Processor or Post-Processor may be used to redefine the same variables (or create new ones). These redefinitions only apply to the current thread.

The setProperty function can be used to define a JMeter property. These are global to the test plan, so can be used to pass information between threads - should that be needed.

Both variables and properties are case-sensitive.

Variables don't have to vary - they can be defined once, and if left alone, will not change value. So you can use them as short-hand for expressions that appear frequently in a test plan. Or for items which are constant during a run, but which may vary between runs. For example, the name of a host, or the number of threads in a thread group.

When deciding how to structure a Test Plan, make a note of which items are constant for the run, but which may change between runs. Decide on some variable names for these - perhaps use a naming convention such as prefixing them with C_ or K_ or using uppercase only to distinguish them from variables that need to change during the test. Also consider which items need to be local to a thread - for example counters or values extracted with the Regular Expression Post-Processor. You may wish to use a different naming convention for these.

For example, you might define the following on the Test Plan:

HOST             www.example.com
THREADS          10
LOOPS            20
You can refer to these in the test plan as ${HOST} ${THREADS} etc. If you later want to change the host, just change the value of the HOST variable. This works fine for small numbers of tests, but becomes tedious when testing lots of different combinations. One solution is to use a property to define the value of the variables, for example:
HOST             ${__P(host,www.example.com)}
THREADS          ${__P(threads,10)}
LOOPS            ${__P(loops,20)}
You can then change some or all of the values on the command-line as follows:
jmeter ... -Jhost=www3.example.org -Jloops=13

apache-jmeter-2.8/xdocs/usermanual/build-jms-topic-test-plan.xml0000644000175000017500000002501412032647214024350 0ustar ebourgebourg ]> User's Manual: Building a JMS (Java Messaging Service) Test Plan
JMS requires some optional jars to be downloaded. Please refer to Getting Started for full details.

In this section, you will learn how to create a Test Plan to test JMS Providers. You will create five subscribers and one publisher. You will create 2 thread groups and set each one to 10 iterations. The total messages is (6 threads) x (1 message) x (repeat 10 times) = 60 messages. To construct the Test Plan, you will use the following elements: Thread Group, , , and .

General notes on JMS: There are currently two JMS samplers. One uses JMS topics and the other uses queues. Topic messages are commonly known as pub/sub messaging. Topic messaging is generally used in cases where a message is published by a producer and consumed by multiple subscribers. Queue messaging is generally used for transactions where the sender expects a response. Messaging systems are quite different from normal HTTP requests. In HTTP, a single user sends a request and gets a response. Messaging system can work in sychronous and asynchronous mode. A JMS sampler needs the JMS implementation jar files; for example, from Apache ActiveMQ. See here for the list of jars provided by ActiveMQ 3.0.

The first step is add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Next, you need to modify the default properties. Select the Thread Group element in the tree, if you have not already selected it. You should now see the Thread Group Control Panel in the right section of the JMeter window (see Figure §-num;.1 below)

Figure §-num;.1. Thread Group with Default Values

Start by providing a more descriptive name for our Thread Group. In the name field, enter Subscribers.

Next, increase the number of users (called threads) to 5.

In the next field, the Ramp-Up Period, set the value to 0 seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will finish starting all of your users by the end of the 5 seconds. So, if we have 5 users and a 5 second Ramp-Up Period, then the delay between starting users would be 1 second (5 users / 5 seconds = 1 user per second). If you set the value to 0, JMeter will immediately start all users.

Clear the checkbox labeled "Forever", and enter a value of 10 in the Loop Count field. This property tells JMeter how many times to repeat your test. If you enter a loop count value of 0, then JMeter will run your test only once. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.

Repeat the process and add another thread group. For the second thread group, enter "Publisher" in the name field, set the number of threads to 1, and set the iteration to 10.

In most applications, you have to manually accept changes you make in a Control Panel. However, in JMeter, the Control Panel automatically accepts your changes as you make them. If you change the name of an element, the tree will be updated with the new text after you leave the Control Panel (for example, when selecting another tree element).

Make sure the required jar files are in JMeter's lib directory. If they are not, shutdown JMeter, copy the jar files over and restart JMeter.

Start by adding the sampler to the Subscribers element (Add --> Sampler --> JMS Subscriber). Then, select the JMS Subscriber element in the tree and edit the following properties:

  1. Change the Name field to "Sample Subscriber"
  2. If the JMS provider uses the jndi.properties file, check the box
  3. Enter the name of the InitialContextFactory class. For example, with ActiveMQ 5.4, the value is "org.apache.activemq.jndi.ActiveMQInitialContextFactory"
  4. Enter the provider URL. This is the URL for the JNDI server, if there is one. For example, with ActiveMQ 5.4 on local machine with default port, the value is "tcp://localhost:61616"
  5. Enter the name of the connection factory. Please refer to the documentation of the JMS provider for the information. For ActiveMQ, the default is "ConnectionFactory"
  6. Enter the name of the message topic. For ActiveMQ Dynamic Topics (create topics dynamically), example value is "dynamicTopics/MyStaticTopic1" Note: Setup at startup mean that JMeter starting to listen on the Destination at beginning of test without name change possibility. Setup on Each sample mean that JMeter (re)starting to listen before run each JMS Subscriber sample, this last option permit to have Destination name with some JMeter variables
  7. If the JMS provider requires authentication, check "required" and enter the username and password. For example, Orion JMS requires authentication, while ActiveMQ and MQSeries does not
  8. Enter 10 in "Number of samples to aggregate". For performance reasons, the sampler will aggregate messages, since small messages will arrive very quickly. If the sampler didn't aggregate the messages, JMeter wouldn't be able to keep up.
  9. If you want to read the response, check the box
  10. There are two client implementations for subscribers. If the JMS provider exhibits zombie threads with one client, try the other.

Figure §-num;.2. JMS Subscriber

Next add the sampler to the Publisher element (Add --> Sampler --> JMS Subscriber). Then, select the JMS Publisher element in the tree and edit the following properties:

  1. Change the Name field to "Sample Publisher".
  2. If the JMS provider uses the jndi.properties file, check the box
  3. Enter the name of the InitialContextFactory class. For example, with ActiveMQ 5.4, the value is "org.apache.activemq.jndi.ActiveMQInitialContextFactory"
  4. Enter the provider URL. This is the URL for the JNDI server, if there is one. For example, with ActiveMQ 5.4 on local machine with default port, the value is "tcp://localhost:61616"
  5. Enter the name of the connection factory. Please refer to the documentation of the JMS provider for the information. For ActiveMQ, the default is "ConnectionFactory"
  6. Enter the name of the message topic. For ActiveMQ Dynamic Topics (create topics dynamically), example value is "dynamicTopics/MyStaticTopic1". Note: Setup at startup mean that JMeter starting connection with the Destination at beginning of test without name change possibility. Setup on Each sample mean that JMeter (re)starting the connection before run each JMS Publisher sample, this last option permit to have Destination name with some JMeter variables
  7. If the JMS provider requires authentication, check "required" and enter the username and password. For example, Orion JMS requires authentication, while ActiveMQ and MQSeries does not
  8. Enter 10 in "Number of samples to aggregate". For performance reasons, the sampler will aggregate messages, since small messages will arrive very quickly. If the sampler didn't aggregate the messages, JMeter wouldn't be able to keep up.
  9. Select the appropriate configuration for getting the message to publish. If you want the sampler to randomly select the message, place the messages in a directory and select the directory using browse.
  10. Select the message type. If the message is in object format or map message, make sure the message is generated correctly.

Figure §-num;.3. JMS Publisher

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your HTTP requests in a file and presenting a visual model of the data.

Select the Test Plan element and add a listener (Add --> Listener --> Graph Results). Next, you need to specify a directory and filename of the output file. You can either type it into the filename field, or select the Browse button and browse to a directory and then enter a filename.

Figure §-num;.4. Graph Results Listener
apache-jmeter-2.8/xdocs/usermanual/best-practices.xml0000644000175000017500000003762512032647214022364 0ustar ebourgebourg ]> User's Manual: Best Practices

Your hardware's capabilities will limit the number of threads you can effectively run with JMeter. It will also depend on how fast your server is (a faster server makes JMeter work harder since it returns request quicker). The more JMeter works, the less accurate its timing information may become. The more work JMeter does, the more each thread has to wait to get access to the CPU, the more inflated the timing information gets. If you need large-scale load testing, consider running multiple non-GUI JMeter instances on multiple machines. The sample result files can be combined for subsequent analysis. For testing how JMeter performs on a given platform, the JavaTest sampler can be used. It does not require any network access so can give some idea as to the maximum throughput achievable.

JMeter versions since 2.8 have an option to delay thread creation until the thread starts sampling, i.e. after any thread group delay and the ramp-up time for the thread itself. This allows for a very large total number of threads, provided that not too many are active concurrently.

See Building a Web Test for information.

See Building an Advanced Web Test for information.

Refer to for details on setting up the proxy server. The most important thing to do is filter out all requests you aren't interested in. For instance, there's no point in recording image requests (JMeter can be instructed to download all images on a page - see ). These will just clutter your test plan. Most likely, there is an extension all your files share, such as .jsp, .asp, .php, .html or the like. These you should "include" by entering ".*\.jsp" as an "Include Pattern".

Alternatively, you can exclude images by entering ".*\.gif" as an "Exclude Pattern". Depending on your application, this may or may not be a better way to go. You may also have to exclude stylesheets, javascript files, and other included files. Test out your settings to verify you are recording what you want, and then erase and start fresh.

The Proxy Server expects to find a ThreadGroup element with a Recording Controller under it where it will record HTTP Requests to. This conveniently packages all your samples under one controller, which can be given a name that describes the test case.

Now, go through the steps of a Test Case. If you have no pre-defined test cases, use JMeter to record your actions to define your test cases. Once you have finished a definite series of steps, save the entire test case in an appropriately named file. Then, wipe clean and start a new test case. By doing this, you can quickly record a large number of test case "rough drafts".

One of the most useful features of the Proxy Server is that you can abstract out certain common elements from the recorded samples. By defining some user-defined variables at the Test Plan level or in elements, you can have JMeter automatically replace values in you recorded samples. For instance, if you are testing an app on server "xxx.example.com", then you can define a variable called "server" with the value of "xxx.example.com", and anyplace that value is found in your recorded samples will be replaced with "${server}". Please note that matching is case-sensitive.

If JMeter does not record any samples, check that the brower really is using the proxy. If the browser works OK even if JMeter is not running, then the browser cannot be using the proxy. Some browsers ignore proxy settings for localhost or 127.0.0.1; try using the local hostname or IP instead.

The error "unknown_ca" probably means that you are trying to record HTTPS, and the browser has not accepted the JMeter Proxy server certificate.

Some test plans need to use different values for different users/threads. For example, you might want to test a sequence that requires a unique login for each user. This is easy to achieve with the facilities provided by JMeter.

For example:

  • Create a text file containing the user names and passwords, separated by commas. Put this in the same directory as your test plan.
  • Add a CSV DataSet configuration element to the test plan. Name the variables USER and PASS.
  • Replace the login name with ${USER} and the password with ${PASS} on the appropriate samplers

The CSV Data Set element will read a new line for each thread.

Some suggestions on reducing resource usage.

  • Use non-GUI mode: jmeter -n -t test.jmx -l test.jtl
  • Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
  • Don't use "View Results Tree" or "View Results in Table" listeners during the load test, use them only during scripting phase to debug your scripts.
  • Rather than using lots of similar samplers, use the same sampler in a loop, and use variables (CSV Data Set) to vary the sample. Or perhaps use the Access Log Sampler. [The Include Controller does not help here, as it adds all the test elements in the file to the test plan.]
  • Don't use functional mode
  • Use CSV output rather than XML
  • Only save the data that you need
  • Use as few Assertions as possible

If your test needs large amounts of data - particularly if it needs to be randomised - create the test data in a file that can be read with CSV Dataset. This avoids wasting resources at run-time.

The BeanShell interpreter has a very useful feature - it can act as a server, which is accessible by telnet or http.

There is no security. Anyone who can connect to the port can issue any BeanShell commands. These can provide unrestricted access to the JMeter application and the host. Do not enable the server unless the ports are protected against access, e.g. by a firewall.

If you do wish to use the server, define the following in jmeter.properties:

beanshell.server.port=9000
beanshell.server.file=../extras/startup.bsh

In the above example, the server will be started, and will listen on ports 9000 and 9001. Port 9000 will be used for http access. Port 9001 will be used for telnet access. The startup.bsh file will be processed by the server, and can be used to define various functions and set up variables. The startup file defines methods for setting and printing JMeter and system properties. This is what you should see in the JMeter console:

Startup script running
Startup script completed
Httpd started on port: 9000
Sessiond started on port: 9001

As a practical example, assume you have a long-running JMeter test running in non-GUI mode, and you want to vary the throughput at various times during the test. The test-plan includes a Constant Throughput Timer which is defined in terms of a property, e.g. ${__P(throughput)}. The following BeanShell commands could be used to change the test:

printprop("throughput");
curr=Integer.decode(args[0]); // Start value
inc=Integer.decode(args[1]);  // Increment
end=Integer.decode(args[2]);  // Final value
secs=Integer.decode(args[3]); // Wait between changes
while(curr <= end){
  setprop("throughput",curr.toString()); // Needs to be a string here
  Thread.sleep(secs*1000);
  curr += inc;
}
printprop("throughput");

The script can be stored in a file (throughput.bsh, say), and sent to the server using bshclient.jar. For example:

java -jar ../lib/bshclient.jar localhost 9000 throughput.bsh 70 5 100 60

Each BeanShell test element has its own copy of the interpreter (for each thread). If the test element is repeatedly called, e.g. within a loop, then the interpreter is retained between invocations unless the "Reset bsh.Interpreter before each call" option is selected.

Some long-running tests may cause the interpreter to use lots of memory; if this is the case try using the reset option.

You can test BeanShell scripts outside JMeter by using the command-line interpreter:

$ java -cp bsh-xxx.jar[;other jars as needed] bsh.Interperter file.bsh [parameters]
or
$ java -cp bsh-xxx.jar bsh.Interperter
bsh% source("file.bsh");
bsh% exit(); // or use EOF key (e.g. ^Z or ^D)

Variables can be defined in startup (initialisation) scripts. These will be retained across invocations of the test element, unless the reset option is used.\

Scripts can also access JMeter variables using the get() and put() methods of the "vars" variable, for example: vars.get("HOST"); vars.put("MSG","Successful");. The get() and put() methods only support variables with String values, but there are also getObject() and putObject() methods which can be used for arbitrary objects. JMeter variables are local to a thread, but can be used by all test elements (not just Beanshell).

If you need to share variables between threads, then JMeter properties can be used:

import org.apache.jmeter.util.JMeterUtils;
String value=JMeterUtils.getPropDefault("name","");
JMeterUtils.setProperty("name", "value");
The sample .bshrc files contain sample definitions of getprop() and setprop() methods.

Another possible method of sharing variables is to use the "bsh.shared" shared namespace. For example:

if (bsh.shared.myObj == void){
    // not yet defined, so create it:
    myObj=new AnyObject();
}
bsh.shared.myObj.process();
Rather than creating the object in the test element, it can be created in the startup file defined by the JMeter property "beanshell.init.file". This is only processed once.

It's quite hard to write and test scripts as functions. However, JMeter has the BSF (and BeanShell) samplers which can be used instead.

Create a simple Test Plan containing the BSF Sampler and Tree View Listener. Code the script in the sampler script pane, and test it by running the test. If there are any errors, these will show up in the Tree View. Also the result of running the script will show up as the response.

Once the script is working properly, it can be stored as a variable on the Test Plan. The script variable can then be used to create the function call. For example, suppose a BeanShell script is stored in the variable RANDOM_NAME. The function call can then be coded as ${__BeanShell(${RANDOM_NAME})}. There is no need to escape any commas in the script, because the function call is parsed before the variable's value is interpolated.

Often it is useful to be able to re-run the same test with different settings. For example, changing the number of threads or loops, or changing a hostname.

One way to do this is to define a set of variables on the Test Plan, and then use those variables in the test elements. For example, one could define the variable LOOPS=10, and refer to that in the Thread Group as ${LOOPS}. To run the test with 20 loops, just change the value of the LOOPS variable on the Test Plan.

This quickly becomes tedious if you want to run lots of tests in non-GUI mode. One solution to this is to define the Test Plan variable in terms of a property, for example LOOPS=${__P(loops,10))}. This uses the value of the property "loops", defaulting to 10 if the property is not found. The "loops" property can then be defined on the JMeter command-line: jmeter ... -Jloops=12 .... If there are a lot of properties that need to be changed together, then one way to achieve this is to use a set of property files. The appropriate property file can be passed in to JMeter using the -q command-line option.

When using JSR 223 elements, prefer script file to inline script as JMeter will compile script (if underlying language supports it) which will avoid parsing it each time it is executed and will highly improve performances of Test Plan.

In this case, don't use any User Defined variable or variable you create directly in the script file, instead pass these as Parameters to the script and use them this way.

Variables are local to a thread; a variable set in one thread cannot be read in another. This is by design. For variables that can be determined before a test starts, see Parameterising Tests (above). If the value is not known until the test starts, there are various options:

  • Store the variable as a property - properties are global to the JMeter instance
  • Write variables to a file and re-read them.
  • Use the bsh.shared namespace - see above
  • Write your own Java classes

apache-jmeter-2.8/xdocs/usermanual/regular_expressions.xml0000644000175000017500000002320212032647214023541 0ustar ebourgebourg ]> User's Manual: Regular Expressions

JMeter includes the pattern matching software Apache Jakarta ORO
There is some documentation for this on the Jakarta web-site, for example a summary of the pattern matching characters

There is also documentation on an older incarnation of the product at OROMatcher User's guide, which might prove useful.

The pattern matching is very similar to the pattern matching in Perl. A full installation of Perl will include plenty of documentation on regular expressions - look for perlrequick, perlretut, perlre, perlreref.

It is worth stressing the difference between "contains" and "matches", as used on the Response Assertion test element:

  • "contains" means that the regular expression matched at least some part of the target, so 'alphabet' "contains" 'ph.b.' because the regular expression matches the substring 'phabe'.
  • "matches" means that the regular expression matched the whole target. So 'alphabet' is "matched" by 'al.*t'.

In this case, it is equivalent to wrapping the regular expression in ^ and $, viz '^al.*t$'.

However, this is not always the case. For example, the regular expression 'alp|.lp.*' is "contained" in 'alphabet', but does not match 'alphabet'.

Why? Because when the pattern matcher finds the sequence 'alp' in 'alphabet', it stops trying any other combinations - and 'alp' is not the same as 'alphabet', as it does not include 'habet'.

Note: unlike Perl, there is no need to (i.e. do not) enclose the regular expression in //.

So how does one use the modifiers ismx etc if there is no trailing /? The solution is to use extended regular expressions, i.e. /abc/i becomes (?i)abc. See also Placement of modifiers below.

Extract single string

Suppose you want to match the following portion of a web-page:
name="file" value="readme.txt">
and you want to extract readme.txt.
A suitable regular expression would be:
name="file" value="(.+?)">

The special characters above are:

  • ( and ) - these enclose the portion of the match string to be returned
  • . - match any character
  • + - one or more times
  • ? - don't be greedy, i.e. stop when first match succeeds

Note: without the ?, the .+ would continue past the first "> until it found the last possible "> - which is probably not what was intended.

Note: although the above expression works, it's more efficient to use the following expression:
name="file" value="([^"]+)"> where

[^"] - means match anything except "

In this case, the matching engine can stop looking as soon as it sees the first ", whereas in the previous case the engine has to check that it has found "> rather than say " >.

Extract multiple strings

Suppose you want to match the following portion of a web-page:
name="file.name" value="readme.txt" and you want to extract both file.name and readme.txt.
A suitable reqular expression would be:
name="([^"]+)" value="([^"]+)"
This would create 2 groups, which could be used in the JMeter Regular Expression Extractor template as $1$ and $2$.

The JMeter Regex Extractor saves the values of the groups in additional variables.

For example, assume:

  • Reference Name: MYREF
  • Regex: name="(.+?)" value="(.+?)"
  • Template: $1$$2$
Do not enclose the regular expression in / /

The following variables would be set:

  • MYREF: file.namereadme.txt
  • MYREF_g0: name="file.name" value="readme.txt"
  • MYREF_g1: file.name
  • MYREF_g2: readme.txt
These variables can be referred to later on in the JMeter test plan, as ${MYREF}, ${MYREF_g1} etc

The pattern matching behaves in various slightly different ways, depending on the setting of the multi-line and single-line modifiers. Note that the single-line and multi-line operators have nothing to do with each other; they can be specified independently.

Single-line mode

Single-line mode only affects how the '.' meta-character is interpreted.

Default behaviour is that '.' matches any character except newline. In single-line mode, '.' also matches newline.

Multi-line mode

Multi-line mode only affects how the meta-characters '^' and '$' are interpreted.

Default behaviour is that '^' and '$' only match at the very beginning and end of the string. When Multi-line mode is used, the '^' metacharacter matches at the beginning of every line, and the '$' metacharacter matches at the end of every line.

Regular expressions use certain characters as meta characters - these characters have a special meaning to the RE engine. Such characters must be escaped by preceeding them with \ (backslash) in order to treat them as ordinary characters. Here is a list of the meta characters and their meaning (please check the ORO documentation if in doubt).

  • ( ) - grouping
  • [ ] - character classes
  • { } - repetition
  • * + ? - repetition
  • . - wild-card character
  • \ - escape character
  • | - alternatives
  • ^ $ - start and end of string or line

Please note that ORO does not support the \Q and \E meta-characters. [In other RE engines, these can be used to quote a portion of an RE so that the meta-characters stand for themselves.]

The following Perl5 extended regular expressions are supported by ORO.

(?#text)
An embedded comment causing text to be ignored.
(?:regexp)
Groups things like "()" but doesn't cause the group match to be saved.
(?=regexp)
A zero-width positive lookahead assertion. For example, \w+(?=\s) matches a word followed by whitespace, without including whitespace in the MatchResult.
(?!regexp)
A zero-width negative lookahead assertion. For example foo(?!bar) matches any occurrence of "foo" that isn't followed by "bar". Remember that this is a zero-width assertion, which means that a(?!b)d will match ad because a is followed by a character that is not b (the d) and a d follows the zero-width assertion.
(?imsx)
One or more embedded pattern-match modifiers. i enables case insensitivity, m enables multiline treatment of the input, s enables single line treatment of the input, and x enables extended whitespace comments.
Note that (?<=regexp) - lookbehind - is not supported.

Modifiers can be placed anywhere in the regex, and apply from that point onwards. [A bug in ORO means that they cannot be used at the very end of the regex. However they would have no effect there anyway.]

The single-line (?s) and multi-line (?m) modifiers are normally placed at the start of the regex.

The ignore-case modifier (?i) may be usefully applied to just part of a regex, for example:

Match ExAct case or (?i)ArBiTrARY(?-i) case

Since JMeter 2.4, the listener View Results Tree include a RegExp Tester to test regular expressions directly on sampler response data.

There is a demo applet for Apache JMeter ORO.

Another approach is to use a simple test plan to test the regular expressions. The Java Request sampler can be used to generate a sample, or the HTTP Sampler can be used to load a file. Add a Debug Sampler and a Tree View Listener and changes to the regular expression can be tested quickly, without needing to access any external servers.

apache-jmeter-2.8/xdocs/usermanual/boss.xml0000644000175000017500000002370512032647214020414 0ustar ebourgebourg ]> Martin Ramshaw User's Manual: My boss wants me to...

This is a fairly open-ended proposition. There are a number of questions to be asked first, and additionally a number of resources that will be needed. You will need some hardware to run the benchmarks/load-tests from. A number of tools will prove useful. There are a number of products to consider. And finally, why is Java a good choice to implement a load-testing/Benchmarking product.

What is our anticipated average number of users (normal load) ?

What is our anticipated peak number of users ?

When is a good time to load-test our application (i.e. off-hours or week-ends), bearing in mind that this may very well crash one or more of our servers ?

Does our application have state ? If so, how does our application manage it (cookies, session-rewriting, or some other method) ?

What is the testing intended to achieve?

The following resources will prove very helpful. Bear in mind that if you cannot locate these resources, you will become these resources. As you already have your work cut out for you, it is worth knowing who the following people are, so that you can ask them for help if you need it.

Who knows our network topology ? If you run into any firewall or proxy issues, this will become very important. As well, a private testing network (which will therefore have very low network latency) would be a very nice thing. Knowing who can set one up for you (if you feel that this is necessary) will be very useful. If the application doesn't scale as expected, who can add additional hardware ?

Who knows how our application functions ? The normal sequence is

  • test (low-volume - can we benchmark our application?)
  • benchmark (the average number of users)
  • load-test (the maximum number of users)
  • test destructively (what is our hard limit?)
The test process may progress from black-box testing to white-box testing (the difference is that the first requires no knowledge of the application [it is treated as a "black box"] while the second requires some knowledge of the application). It is not uncommon to discover problems with the application during this process, so be prepared to defend your work.

This should be a widely-used piece of hardware, with a standard (i.e. vanilla) software installation. Remember, if you publish your results, the first thing your clients will do is hire a graduate student to verify them. You might as well make it as easy for this person as you possibly can.

For Windows, Windows XP Professional should be a minimum (the others do not multi-thread past 50-60 connections, and you probably anticipate more users than that).

Good free platforms include the linuxes, the BSDs, and Solaris Intel. If you have a little more money, there are commercial linuxes. This may be worth it if you need the support.

For non-Windows platforms, investigate "ulimit -n unlimited" with a view to including it in your user account startup scripts (.bashrc or .cshrc scripts for the testing account).

As you progress to larger-scale benchmarks/load-tests, this platform will become the limiting factor. So it's worth using the best hardware and software that you have available. Remember to include the hardware/software configuration in your published benchmarks.

Don't forget JMeter batch mode. This can be useful if you have a powerful server that supports Java but perhaps does not have a fast graphics implementation, or where you need to login remotely. Batch (non-GUI) mode can reduce the network traffic compared with using a remote display or client-server mode. The batch log file can then be loaded into JMeter on a workstation for analysis, or you can use CSV output and import the data into a spreadsheet.

The following tools will all prove useful. It is definitely worthwhile to become familiar with them. This should include trying them out, and reading the appropriate documentation (man-pages, info-files, application --help messages, and any supplied documentation).

This can be used to establish whether or not you can reach your target site. Options can be specified so that 'ping' provides the same type of route reporting as 'traceroute'.

While the user will normally use a human-readable internet address, you may wish to avoid the overhead of DNS lookups when performing benchmarking/load-testing. These can be used to determine the unique address (dotted quad) of your target site.

If you cannot "ping" your target site, this may be used to determine the problem (possibly a firewall or a proxy). It can also be used to estimate the overall network latency (running locally should give the lowest possible network latency - remember that your users will be running over a possibly busy internet). Generally, the fewer hops the better.

There are a number of commercial products, which generally have fairly hefty pricetags. If you can justify it, these are probably the way to go. If, however, these products do not do exactly what you want, or you are on a limited budget, the following are worth a look. In fact, you should probably start by trying the Apache ab tool, as it may very well do the job if your requirements are not particularly complicated.

You should definitely start with this one. It handles HTTP 'get' requests very well, and can be made to handle HTTP 'post' requests with a little effort. Written in 'C', it performs very well, and offers good (if basic) performance reporting.

This is worth a look. It is a library (and therefore of more interest to developers) that can be used to perform HTTP tests/benchmarks. It is intended to be used instead of a web browser (therefore no GUI) in conjunction with JUnit.

This is definitely worth a look. It has an excellent user interface but it may not do exactly what you want. If this is the case, be aware that the functionality of this product is not likely to change.

If you have non-standard requirements, then this solution offers an open-source community to provide them (of course, if you are reading this, you are probably already committed to this one). This product is free to evolve along with your requirements.

Why not Perl or C ?

Well, Perl might be a very good choice except that the Benchmark package seems to give fairly fuzzy results. Also, simulating multiple users with Perl is a tricky proposition (multiple connections can be simulated by forking many processes from a shell script, but these will not be threads, they will be processes). However, the Perl community is very large. If you find that someone has already written something that seems useful, this could be a very good solution.

C, of course, is a very good choice (check out the Apache ab tool). But be prepared to write all of the custom networking, threading, and state management code that you will need to benchmark your application.

Java gives you (for free) the custom networking, threading, and state management code that you will need to benchmark your application. Java is aware of HTTP, FTP, and HTTPS - as well as RMI, IIOP, and JDBC (not to mention cookies, URL-encoding, and URL-rewriting). In addition Java gives you automatic garbage-collection, and byte-code level security.

And once Microsoft moves to a CLR (common language run-time) a Windows Java solution will not be any slower than any other type of solution on the Windows platform.

apache-jmeter-2.8/xdocs/usermanual/jmeter_proxy_step_by_step.odt0000644000175000017500000212740612032647214024750 0ustar ebourgebourgPK¯9A^Æ2 ''mimetypeapplication/vnd.oasis.opendocument.textPK¯9A±õ Hœ>œ>Thumbnails/thumbnail.png‰PNG  IHDRÆg?ž>cIDATxœí]\Iß„ÐA: X±l¨T p6lg;»¨÷Yïì½{6ì ¢Ò¢‚¥ V¥w)!ùfw’e =¸ÿßÝ2;ûæÍÌæïÎÛÙ™÷h, !A‚  º$:HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3Ú‚Rǧ÷<ÝýFÜ?FmPWkYöÏ8í³ÂÂÝ{ º)í-¢TIú9ã°âô‹ ‹3U9ýµÞ«ñÞó†Ì‰‹øüäWÀœ?yÏ~“µJ%¥Ÿ²‘ü¿ç‹,¡L©®ù'¢ÖöoIkkãã™…›KF:I'ž—tÛ_àÖPT1³A H#ëô[© -¢TÔYE†ÏޤCr[Œ kgUýf{kiöÚµŠSö\Ùª»äãàŸ—Ž^Ê*Lz¼ÖÊ9þ¹dÿª‚ÑçÎ_zqOCT(é9bM4ÏPI¬ÄjÜœ­É'—?š:5ÎSCúΣO—–BáÁ?sôÇO\«2ƒe_¬¸,zºÊû!?¾Þü£7^»y¼Ì?öÝöÜ1c#NHn¿¥ê?söý¼Ì2ODù¥ŒöõÒÚýÝÆËV§Ë÷Gôg?KÇ̱ÈP1dwvnIuÃz¾÷Ýužrï û›ÿîáâÅ×ÞS8e~µÏ5\¸ôt…Å¥Aóï-x.éB)Ö“¹½¶¼N=¼Sª²8öŠJ¹µ{¿MóîЧçáü™:½'?öÜgÜ7K,:)àø²Ç]éëONì_ütv—^c<ÞŸšq1à"²ÓÒÊDí})PÊgÏ®¾N¢EêÔr>V°ÉÖkBXoÊQpzq[XD9]†2æí®ÿ!;maÙaVª’#®yt¡QǪ®}ãavþžáÚê¡;¬=Ž;ß&]õ»zBö¿qñ·ÿýCCkõsÏ£‹0ˆ¸\þõäÊñYü®ß"w>¿º qÍŸ’lã£w^Ï*] Â’í;nÕ°›Ã·'} ñ:€éQ;¸Ü%«ôÜÕkRZ½­Y î#)áMœ–õ”jÌʬ³+çN[ñhÐp–Ç÷³Ê ™?Ü,Ìœ·ËâÙÑq/FlÒê"¢èd°Ð3tÖ Êëü¢ì¤ ñ¢¢/±36Íp»÷XÁzdw1”F1ÁAiåâ¶ ×ôÇçOé”AKè9Pïl«ÌŽIÄ…µ•*þ{]o…s§lr|^qJ$ÒulOæsvíÉñ§`¾ÛöYKo…GtYõoÿëÛ]g?Ø6ÉØ.<>Â˾RÆÃ– ܾ¾Çò™CM‡(hÊv1Èþ»º ¥‚×™Ø:ííçÚ#HäòqÊ ÑiÌ¥{DeºB=äÏÙcªFv;uåðÔI.Ù!×cWà-'êiñÕ1À#¥¨ÂJ OÅbIgÃùòbýÛ,¥i‡žÈÒ(ˆýçi {Óà°JÏœçŽþqIÅÎ"çVëù'ä!8.ÇÒ†“ÏŸ>Ô,Ï„#ìžb‡þ™¾œ]PwMTÆv:úuž˜2§v„ßÅõà¬yèaãp¨(Yæ1`°Ñê ó¥E`Áíϼ±¿“°ãÙ³ê*./ÞEЉbÈþ‡·¨èuð?—€¿.{‚cVñTöùÜã°åµõtzðçoæ±÷3ù¢¨•k?Å»N*ŸôtvóR$ø ’R$ø ’R$ø ’R$ø Þ)µ# 286[údœ_Ú†tÿX5[C˜ÿýî»n“ú",B¡°ÓàbWœÏθ9—G¢D \ÚjWKl,øüÚ‹)×ç4Ú©¦T÷õÆ‘díéc+à9ÌÊÌ™ÓÏÕó9ëˆ}ÀŒ'^½ekkô|m½£©ëO·™(8{"ÓÛ£›Wó¼]þkJ_êëW[Ë3x§”§Íçé7Z½¿³u¾Ðíò@:ÕÅÝq„røÿ‘ÖºQ®×º?ü¡›ù2¡Ÿf|ñ3DÂua©wHϼœ[±òÖò¢@ÃûË! Ý3™žZ^5ÍZ7fßU††žx¨Sï‹Boé«ÇºNþ#óÕõnÎÖº/VíÊ+ æï˪Ď[°Õw§—M½X 5½ôFx7Ç4))c¨s@n(í¦/sàW»—@E I4Ih'…6qr5&–Õ«*EúÉÿ’Ó)E«À«ËŽRíiðë(óT]Ýmè`t@j†úcV »Sæ–ªae -½‘ ‚ÄGLRUWƒú+o?„D‚ïɂ췞u¼ìw…‰~2=ç,.Œx ºÃÌÍ+Ðrɾ;ÎBSgÞ$ðr©Ò]2÷³·bìЇXgï¹n²°; !™úÂbsÞIƒ¦ …Á~¸o½fü²§…~1jš‰ÝÇõýÓÜøCUMl-èW[Sª²(9?å{vI¥ŽbÚ»R,«±_ Ê:ªå ¢¥™/T"¯T–Æ`Q)41‘ªáæ]ïd…?NV)ÌùIMc"HDX²JA§–U"…i…ú2¹ªÔŠê¨UåHÉIõRCµ!Öz Ì1ÍÌ*T!h”ÿ%2)<öûT™bšœÔ—‚´Ì°r SD<«Š*ÞS5#«’©$LU¼L§˜*¦=Š+a!ÃU6?7)f÷s0*W£ºÄÔB;™ L9u<š :Ø…J-¥PðNm«ÐņõøôêŽòe¤2<»L ÓÏähÈ}L’þ•}¡L¡„(šð펰hIÆ&ÏÔÇ]þ yÇjM1ÌN/é:Ù35*vVL~ë‹6Þó—iLyp kª:Vús ±4U3üéù¦2=ß¼V6¹S< xã6Š>%X'º•©.®Ù‡¼¡}paê)8´SdEnÅÊ*§½€ùÄa¨õÝîï¿éâÔ CÅÑ¡¸*`oÁaT­¥MûÑÕWás‡ù7¶OÝ í*„c®åÜ…vU´w·ÍDZÌnO½Œ¿”T=¢iN°]p;LES²TÖHxÅ¿¡õ[B–Ë~E<ê¦òÙ6FcÓ P¼¶ìªPT7ï6Ÿ‚7 hnÔÆº³ÑGRŒ}ç s{R°ã¨…GèH—P`EЃ7“öíçÝÃo\·–B+° üÐæ½dñ†pu¶M)mšP%>x#%ât,°Nw0Ìy`öx.Û.gíªGo©t™ÌÉ'óÅÙ½‡Ê±ÜÇ·Z•g˜G8‚ ”Âó“å«-Ž]…›k4)ÔÂv•+«Øj ÑæÃ-3hüå™ëfL(mÜËÍ(Qqš¤-õºKHqàúË% ëµWj«˜?ÆŠп¨”ä@…P34ïò¬B¼ºm,p¯ÀƒTTì×·Ü*`EÁR°ã ;Ä®´BWX4ÂàÍLˆ‰S%C¥T@+0 ÕöÕ¼O.á†pu¶M)Å60{‚3x³mãÁÕK½Çû$TL8C;fByvùÄa`æA0ZÍ­­ —Á-0bYcÃŒ­x‚¥BFjsl»„c¬ ÂŒ¿±ì:zÕ©¶]P ]‹Z9=0ã¦>KHXrÀ5Kð°ºÒv5‹sµï)Ò˜…fnwDG¬‘ޱã5»FLC#ŒûwÁ~5‚¶z;ËZÝ–ªÏ>hŠÝÀˆFX[¢å=ª¯å­w¯Zü¢aQ¸ÌÛ†§ÎàÕÚS‹<Ìã‘hWàRÀî N•3gíó'IÙ‡EÏGó6ƒ1·±œá¿»ûl`úAš½¡÷€±\nŒÁ§Û¼Nó¼÷…:ÉÅ››ÿõ‚·é­7Ù…L ½ÎÈ‘h%ðN)`÷èJôЕùò¶œ&É€æí·O¨Y‡Ë©fý¡ñHœ‘Ë}„ËŸuPSš`›×mZëEM]ö?8ÿ¦f¤Y$6®b÷%TÏcŠj^:‚”j_àRÐîC0£/zO€ú¶åƒ„©ÐÖÃeÜeÏòA³wpõtœÁJ­Ó<§”ceáü›îf´{jn Ï'Ñzà-e¼ú_ôèüì9‰N’R$øŒV¡ÔË¥†W‡­×n 宿x§Ôó3#¦ÝsvÏ>Žx½ÜÚS–xiè¡C)"Äœ''†Ï pvþy¾û'juiŠþggL]|œ,§r_ŠX¨ï¿öÅöõêa Ôj‰6ï”ê3B…å[žúKYÛøÝCeß*¿ä¤åç>´Øa᪫F{%®ùë²è¯/"Û½ÿè¥oÚUòõЉ²Ç¤‹¯xzÐ@kó!Ú?þ}¦„Ý-œÕåàaÕm}E…U¯üQq>²Ô+öÄÞÉz£ºIÇ_Ÿª}ÁlCÙß—ý òDÃɉIÃþó_ôDnº³æÝóÓo²âßùÖhˆ œö_¶WJgƤù Š‡gŸŸÂVµiXÔ³Y³Iä&Ñ,´hà“ÒµaªŸþ éýÑø¨ÄIKJ«Çü…»&+f!ȉoy¼O–`²Ç’´Èø«¼Fª~ŽP OU Èl\­»ÍJLOKúN¢>ðN©O/² ÂîçWŠä>Ëc¹—$Å"ˆñ³‹£ë ÷Ý‹ÍYæ1výŽKó­§÷×5%>0pÁÚ94 ’ü©(36CIOÅc¥Ý%?_9Ç—6ýsµâøõwb÷®w®:h%‡.#NˆÈ(LŠx_Q˜ýö{qyÕ«Âr¨üS%SÞ°GØÕ Áɨ}sÝã¾Á¹¿2£‹+Ýñ9 FF°  Ô UÍ õðí.’ €wJ ýäûlðwÝ_×ÐÓÍ Ð£çtÃ2(rïGxдÇߦ±Ó“Î$Àãÿº6ü™þwÿJºu¶½|Š Ÿõ(møû:·éT &{Ø‹%AOÐ?S0=÷‚Áa¹šü›Sã8¢¬‚S/¦ AóÜq £}M"\|ySÐM ÑR´/J‘è )E‚Ï )E‚Ï )E‚Ï )E‚Ï )E‚Ïà¥Þ>ñkè°Èç’‹ö†9µžûMwÓZÛgWàÄcÎ߬|åLŠ^2ZùC%j§¾ý,>€ÓñB¬¦çGˆ_Ý€.Â+üzø¯d‡?_þ!¾à§«ñ”Aïÿ™5ø Qƒó ó…}ÂgSºŸ`tª(|þExˆ®xÝýª½¿„Ÿ2+3ÕDº/ûò³‰.(ð}˜øªùŠ¢ÈB†ý$j´¡$ãEÅ•¸Å´&ŸÝGuÞÒû{qÇ©…‰*¾´¾ý¢u®ÝÎf5²>ðN©oá‹?õßo&‹Ît{ùêîp“{ w-â Éñ—@æ;Ëm­ht\]ÿã¤)¥_÷ÛVd‹ÙºjûëEód<=NõƧ•¼ ëx°7¿—¤…9É›½‹µ™!+rÚSÈ#h@îÛÌÑÂ54 õØÊ¬ø~-k™ËõéÒ3®}ØçC¥^z®›ªçè—q=”¸/ô¶¯.„¯¸à/ŸùNi@ÖÝj¢BaeË^» sAq޳Óõsô[ö>LlÕ¼ÃæSñ§O2Š…Ÿ÷ýQ¦8(YoÞu¿Äïb½˜ñ_Ä)Uå2½%ü˜Ýl‰±}&~©ì1òs—Y”3[7šžë åû\õ¯’¹·Â e'qÿ-èqÇiô†£Ð•HyÎDØ/(üõQ7ذ÷ßÃ=ŸÄý±¸0±W‚{ŒbÈs5rä<û6¥…Yvä™Ù&Ô'Âô‰q‘ YBòU߉ ÉáÆKfeöü[QÚ zŸŠï+ä<è)·8l=¥ÿËc—SŒM#ì85Ÿ7'æê¹_÷ÓJLA¿™OΊ؞’_A5˜ ýFV¾§Ÿ¡üµ¥¦¯Ä|ëø q,$E–F-ýЇ!¥ÑCÞFáÞ ÷Uæ0˜¸{“5ËóŤ«=X ˜Šo¢æ*Ç7à‚!ìt5Žz÷aÂUóy +Ù¼¨TVCî©‚ÖGe á ˜oc7x|Zý#Y&ÃnãÄìÝB–ÿ³ –K/T¶î­‘äÿ%GXoƒ\ú;(ú±Tƒª#„yÌ%î¿] î8}Êb»yôƒ¥+‹ö ã ë£Å‚ ÿ‰÷V Q‰íd~éÿW#y#ï”Òsfëvºÿ‚àh‚~^é 74rm¼<ã2•3ÕÁÄQ—¿^>à¨ßoÔ:,Ë; ‹4Çye_ãâPïãN_‘¡ž¾ŽnX0Ù„~ý þ`Æ¥¡OEÚÙŠ‰ó]äaK,nBßèÆ7®}¡p'$R½¾Æ–T¶w腂툢^q§+g&\5ÿ#4â“­éôñÝ`”A;/­ ÃûœÆœC*ók Ù§Ã>Îx3Pù“€Mîì6öߢ®ÞqŠïÿÄVñOA»IÙ ÀöêA¼¸0W;ÏßAj7’7´Gó\H¬ÇÀMQŸ? 5[ÓLt57™.è64­×ÎV¡ÔómCUW=Ó§U»©é%àT’hÒRÝm7­¥Ï<ŒþÃâò[G¢ã‚?”â²"•ºwÑÂÞ¹¢½C  YaÙÍøaC²@kú¤I29ö=Œo(uï2Âp tÜÆŒï;ÑÖ0tç à8Í„/­"!ð‡R\VdnFñ›w±Aåš2EãG©PIi·iáqßG¨Å¹šêgôëðô¹¨–-5£¢+Yˆ(ê¨ä»ã´Æk$ÑnÁJqY‘J˜o“~Hµéª9ª$_f¹šmâ $àâSDuìnö6aÓꢣ¦šs»¥#ÑÑÀ;¥2£“ó™Ã'¢oBÏ7ÞdGްG Äå~N††Dç5L ÿ›={Œ×UèWnùåO—«Ûú|”ÁúÑ]¹ª®í!˜_ÞpI´¼Sª°Dñä‚QJu`Ê…hÅôw^M½Þò¢pzöí'î£wâèìÒuB,쓬Gô[ýÊ­ï]ŒÔô[gãyÑ¡pjH]‚ANî•«}æþÉv÷–úg'n$ZÞ)õ#îÀc~J7bõ¦>ÌÐ?òIÔ)K™þiùÔ.˜Ïµj½ âÂìj÷mÐoô+'Tº‡Ëo]N%KI˜Âe¨Õé!äT»{{Áö+G¢íÁ;¥L×ï1å¤ç,±A›aÖØ 6ã‡à>׎W»á":!&ú­Ó‚~å°‚\ó“Hí龺<ã9µÝð‘hc´Ç©ÎúPúØø¢ÀÆtC:)À`˜¼ÿ<¹±oÒD†OD—¼øw„È0»:Îzg,ágy.«XîcÝ ‰õ)¯3D—ï>R†µÔiæ×gã#u}À‡9Íú°ß°ó¾†TÕå î¬ëÀ¹^g=ÂJæM¸*Q\I“†2oOù…û$õwêÛ½Ç dŒŒÍâr†’ïþO3 ‹I£‰æüÌÊ0t0J Ë,xK+©2“jÈ'úp†¨ÏÆGj3ÿöƒhãòõ}“‡ù¬Þ¨ èb–¼X|è»Xø2„ŸU̱W„ŒŸ¹ƒd’ B¨J&½-bßá¨Ù1Q$‹¤ä¤¨Uhó˜ç.çNê×ë`B¾2¶á}e©¾0{UBeQ…°‚†(ìä“_Š1jIF–Ø ø’Yn`÷?Û}n{Ænð?èÛ éö±ªTOX§p\¯¤Ê*{I‘ÔÂeéªñ11Ì‘º?${:±o\qàsÇ/¶²Ê4áàbÝ•\ñÞ)EOë7D]ËÅ ßæ#:2Ýèð¾ ûn/‡¯©áÌs= àXîhúfµ» p„àâ>oFB-\¨ó›|Í|è´¹v~C±4Üyß"vƒÝªëdo“¥eŽÝ–®­|§ qMàª7ªˆê¼¹ª²}'8ÁÖ#÷ØËê7Óg§»ô´{€O˜·Üö·Ñ•pÉÃI÷ÚŸ8¥¢‚…è-9Æ>ïaç䀭SÀV€´cUQä ws}Q®Šx@ v¯žõ!킡ݪ¶<Úg\{+>òWp´íê:zÞ‰±t¥P‡ˆ¶q©Ýul#†(BÒCGðÇkÞžjíO}Š•m\à¸>ÈýZüa¸Rñæ…¹÷Çë>ÿŸÇÃcÖ‰3Þ*ô™øUÔäÒÇí „DÍ‘&=øt`ð‡Rµ‡v!Ã÷ýg›ÂqâŽDsV*ê}‹ÿÐ-µoOýÇ“d¨•å?ʾG{™§}ì'oX¢#Îû»‰öþPªöÐn‡ ƒ4>®/ç¬Tµ5!è(n ¯aæ ³2Û·÷àã‡ò¥=$ˆö2mHV<¾EQЭ Á€R“'On\ˆ?`kk;gN[GO¥.^¼ŽwîÜ9ÎÎι¹¹¡¡¡6lÈÌÌ<{öì¤I“vïÞݧO(àêêêååeffF§Ó---Ï;wòäɸ¸8??? çÀÛ·o¥Ú¾/í¾¾¾m_©(•——Ž€0pêÔ)˜¿zõj˜¸pá. pøðaöññÇ7Ðý!+W®„@HìÙ³&£¢¢¢í+¥ÔÔÔŠŠŠ`ÚÛÛ{Êö¼¢œœ\£´––n´,<Ã/5EDµ_¾|ÑÖÖæ‹ZÐBƒ_j ÁM¹M‹Åj\ˆß¥ÊÊÊÀ±¤¤Dœr AË_LxCûÛØ8­b2¿º(êÜÌiYYÙòʪ_%E0íÕCkBÜ+Xö¦Ï5g'tº¨v‹‹òÆ+éBB4(`¹6 xw$;&“I¥RñfcY-¦ÁK{ÃýWfï_‹ŠŠU¥º's‚p5,,lŽûtÏòÏ»uuõKÏ~íulö¯caa¡¢¢òóçϼ ÁÌð €R¿~ý’’’¢ yÌ]FéÞ sÞpôR9(ÉñòåKbYEúCxÊFò¿¯gâ20Qûø„«úoÂ<ÿØ8ôñ“€Ue`P½ØÈȈ¨ò ò 𩺅 kw_„ùæóö›s†wBHí•ýb¤¸]! ^„óŠÊ¢±Í×?®³å0 Oˉæ!'Jeb€iðk{¥¹Å-ÛDµ¸ªÊÓ-QÛð¥ú4ã–\‚(uûaÌŽÕÕ_ø£K¦î¬q7?_èǯºrssù¥J àÙ¾–——Ô+°`fσâÒ­ªíXˆ>¥Ïýª±ÞrË´ŠËA1 8ØÔºåuA=Y©Jª0'çgº‚Ššíyê@äÏèŠ#Ïš™Oþ×NþÇ3¥zΗ‘W,/ûen?3‚~è|:¹ã¯žûŸ 0fUUUÁ»çòåËù¢¬¬ ^ÀÛÀÑ£G[Ð3Áü£U““HÕ‚¡xDcRÂ7pì¥ÛeddÒÒÒÞ¾}û8µ¸%u¦õ×™ö8²Ž žF±ç϶+uÙ,'Õ‰3fÑh4@—]»vœÝ»w¯Y³fÙ²e?~ 9ïÞ½¤ÑÓÓÛ»w/x>±˜PÇŽ{úôéñãLJ rºuë´]¹r~½æC÷:5Ú#¥ÀÏ~¼G8q¢ªªJCCãׯ_ðÓrÓÀDƒ À'pãH Ìv¢6ȧ””ÞûÖú¨¨¨ìÐÜî(µúh<‚ôÇŽòÝG³_…ÙùM0Ï-…YêêêõIÊÉÉñÐBÞJµ% -¥Þ…õ²QÑV@»£ xfµPÈÀÈWËhK´;J!Ø‹ØâÅ‹UUU322x°‘›X¼Ù5¿uø8.´GJµü=+&&fݺu@xVuïÞ<®€A¶yóæ8::š˜°} öÖwV´GJ?ÞÁÁÁÃÃXècÇŽåAƒ‘‘ä%qR #ÎtD´GJ=xÀŽPÌŸ€)–””dgg×£G{{{ssó¹sç.X°`öìÙ¯_¿ŽŽŽ† ‘ù‹ÌÌLeee%%¥¬¬,pª  ““Ã%2ãââÀ#“ïµ·´GJÁµl...ׯ_‡GðbYRR’°lÙ2`iÁ·ýú`…¦ñ%ýF£Gn¥f>#ä‚­Ò¬-Sgf'C{¤\˘„EDDàD$JÃ|hâ'öùiØ|[·nm‰òƒ ÿÑÜO„õ<%%%ù¢ªéh!ŸŽöH)`žs NW¦§§¿ÿü³svvxJÁ §~ýúíÛ··¸×ŸxóÏB¾-ÜÃÑö|êh”‚æ9¤‹˜G=ü%.!‡¨Í§¢¢"iiiÀ?@MðòØÍnW°¨ö{­êlDóÜÕÕuàÀÀŸ6m¾;ÙÑÑñÖ­[³fÍÂ7_üVZÆð°×!~ºéaº1©¢Þ9g7iå®”º|¶6@)âÂó:A4Ïñ/ÿ8ŸŸl 2xá™3­Ù«¯öü9~†ÿLÛÿ÷¸Ö|í}Ÿ2ú·ð‰Ð0šN‚F%O>Áˆ:Ñö•¶;J‘èè )E‚Ï )E‚Ï )E‚Ïà¥ÇWgTŒ‘Á±ÙÒ'ãüÒ6Ô©FËxwúį¡Ã"ŸK.ZØ›}¡žP$Úx§TEAÒ• SÏ¢þUÇ÷”¢çiƒ†îØhõž*\Ò§äáá7¼|uw¸É=‰Î¼çº9ð‹ª“k •1tÍ9/û]ÝÓt§R¡òëŽh!x§Tн¤Ì¤ØW×ÔM3j41*D†îà •¡o!q:¿‘Ã`NŸ™ %$ßW„2l¬ •’Ceä1X:2Å49)*ùÀjOàR\mžÞ-|BšO‹ƒ£AXZ+d¾r¾Ìh5©õx¨ ¤F4=4à…‚àh2Aþ€1Bª½Çf–ŠXÚl• 9ÕžÀ;¥¾y{gÌ`{ÈhJð´:#§ÁxhnRû—?ùëà¤Vø²ª’*!Ivd°·§N– 5ôËÓøßXv¤m{ïM_oyöAwÆÿ`@äé6…ɇ—.Š [Ú@㉠ëx¾m¨êÊG^ÇYF?|…ÆgK+ü¬½ÞOÿœ³Ì%jÀ†Á—¬`7=5ðY{&¢pvPù‹&â–ÿF)¬]„~íLÖž>v°4¡Å‰7£o¼Sªä{qE¶«¸†ƒ§Åì Ä#§M´5ôÝî#®Äœã¡•çÆ~/›1:ì·‰áËâBó•¤*~æè±ÓòºÛ{×ü!)[|~¬Ž´ZXYä·±Tºëš³Jwɼä;õ´ ='êÇÔû¢Ð[ZÈâ@Æ‘ G"ô(Xn–RebÖûGlÄç  ¥îÒ‰‰â=VÙ‰ÌøˆÅûSÖÞšéÚ¥²FŽŠ%œn²ÅÏŸ$e= » ÆXC 榠!Õkð˜ì¿×ûæëƒKHhªŒiÔ¶kJ}Ó>ùÞòè‚Õð þþ÷»»Ïvð43åK|ÅvÞ)ۦy{I²÷òFƒ§#§Ub§búo?ÃÈi«ÒÿèO›Å63î|œ†PˆáËZXçÆ=RRAŸ"SÌž?•ŒùZlѵ:ÒZ*•*”#U d²¾w2iÛ¹“ãç{.÷Q•šâOQõ‡¹åâX¶ÜGh ´ÏŠ: a@?(’[\IÁªx…Æ^ë]UþðW!jä!HhíåJ¢1ÙÀÀKN7cª¾¼-§I2 a÷íj ÖØœ^ü:ñ}ÚWJÔ#´Þ‡Ô„gßTŠò¡|Zvªx-Õ¬?(B¡Ì¯_TààRÌô/eöô7×B ž¦U3rH­z–¡OÞŒÆþ¸5°F+|™üÀ‘A㕨7UË‘XPއËóÿ‚#¬AL‡¯NoTp¾m Þÿ¢Ö Â6˜­F°kŸüŽX|6¨Îüú¢„A´îr‹ik[Qy}XsS•6mìc­­gÏA÷²³2©Bä¬}§…~Z&“¹ÿ¼w£«¦øÏ=§WÍmÄ> ~A”b1™æ@q¦•1ߨØ8::?½žŠ¸ðo»ÛÞ³Þ$«Ú‚yJ#ΧckÃó Ë=OX |b%üxà×ÕfÈ|r1ü©„EäÏÀùDtW'œ&Ž÷¹÷ å5þ¶¥DDE‰§‹w±÷j^:ކÁp[´*(.æÌ:tÁ<™Ö©:ül.¸È÷á€ã½à`qìÕ¡6Ÿe! "Ú‘™œ™“6j䘽ÛNõ›0ÁsîÄgï…Yd¾ä8¼z>5KŽÂªˆØ¸èp‰_•B¢4J’OMG;¢À“§WmšK48ŸŸÀ‘"bÂG>5$Ÿš™ç823Q'ÊÊJ€L0§)#°î/e4±F½þFþ‘Í +žýîCüV+@)%öÇ£¡ ·A)…性œÈÆßþ ÷ÆÆ®‚ÇÚªŽ¥°kRzÎ_¾£yž<› ß³·BjáÕ×,ÖJKK&“J§£žûj ünäÀWûi„{Áßò “êäà8¶*Ÿpý¸ÕŬÌ'Ò¥?…B¾ˆÒË\53û•ú á<á*Y,aL¬Ã £›R~?ìµ°P—lé§èFù„pXB¡S§\W‚ŸÀ±'6ûU›"túÿˆ§Â±Ä'¤£SêÈÖåàwlƒŠ2rµ¸aÐÆžÙ:6¥Æ›Y1¨Ìà eæÅtºKãêª+é{g°ßbÂ>™êÕ' gÒ¯°´lîüö'ŒeHG{ü4žRèAàç¡PíètÞ•à|h€O<°¡‡Ëš…O)¤­~.yÝ‘€—ÔŽ»¾â0Ñ€¹ óÇOšòà®wí|žZ-tlJ™™Í 9nmQ!Œû3Ü)—®Ø ñ ç“püµÂÚñç@?ËŽÖ½Ÿöö¡ºÁ8ȧ2f™pÈa\ª¸–yÿAð„ñìÑÌl?þ^ ìˆzõ‡_¶°K§3Êòã2XúØwÿ›§ÁñÊö36^ElN¢ßÎcËXED”Æ5½Sf–ã©,FÛs±cSŠNÿ;¢w6ÛªùK¥ŒýsL×ǧê8GÕ¿«U ±:3¬kˆùÄ¥& ž¹Ø€M“5ÖBŒ±4UO|Â%WÀ‚bÍà@pà=k+@ʘ˜˜fl!:6¥Úpô™è2ÿWÎa¥~•YoôöÑH³Ÿ,Ö ¥+ÑNŸ{"øÂ|kðžÁ%IcRA&c2­CwÒ)C¦,Ø–ÿ9<8Ø×ÒÒ^RµIÆë: DÈpÙ±)§ Í̦ÐéÞffÇéttÏr+Mêi(‚#àq¦T0XÍvÇø„`O ñf!!t íìBK aɼ±`„ãéˆ*¤z'¾rۂ盆"€O4Χ÷ò‚Ì–tª5б)§ Ÿ°ã"˜ÙJ¯T‡Ï]ã»ò!ô´…6C™M'o!-{ëltlJµ%àc/åöÄ0¯K‹àωO/E_Y¸þÂ'·c>:ÛÎɇqf’4å&Q[ø@"2¥xˆ¦ÔCq>Eæž¾+±‘ç7¶GǦԌhVæztÇ%¸û•, )¯@Díš? ±úht iÚÒë›RtúNâiëñ Aé;N¿Ÿ+¾_X§V¸^jú=ýÇ0× SA˜yrçRÙ“ðqßýå ¿²1?\§êñ¸ŒËåD›¡cSŠˆÖŸðZìµ)öwÑ\µªÆ<î¶`±¾|G´Ô9ËØ®Ÿ7îŸ3ø’vpÚ~Òçò#yrxØXF®êäèä .Š<‡Æ ¾)€ˆààKKüÃߙȪyCø9Ýèëz= #ÎÕhì‹§ñÄ:ë§›R\[êÌ Z-<ó 0òHp°.¶Øw"“é‹8âx`Ày¦¾HÕ6«Íè[Ç›cUŸyD1 3³æ,]%ç¥:¸¦£–ð¢ƒÊ¨BÿÀ#q}Ë•ûA3&Xé3™àô~Ðý Vèl*Q ¡RAâôaÿ*ñ‰V˜p¼YyËY¸åä :<¥Ì̬èô «ŠB‚¿ I õ¡P¤íÝVú^Ú2»SnƒKnË7_:¸5…ÅšciylÉ„ÞپщÛ¢Ã>7¸ü¼6š²I•CGÊÖ`ôI\o|µm²ºÅ\¸t"uò‰´¥xü ø„ԲП¸2ŸÀQ“BŸ>ð|âv†æò©é`±œÍ—+õ¼wý‹Uštÿ,à4|Ò€UuÙ–³‰Ïn¢{äc\Ö«ŒM- Þ.L€?üÞäÛõ“m¥æñ žR¼È§¶óÝ5jßiÞt:|”R(¢bì@ '88(ømÁ¯Ò"˜³÷‡„øY@£m 7 ­V”iãfó€O©JfùuDdšÿLÚ„+;ÍÌ6ÐéU¥é…ªaî3weàoyffNAA—h4 pªú¿› ™ltI¾n3¿hoð<}âvß·yϧìùsÀê£ñÆ,ÖÔ%ùÒNÀ'˜ÀŸšÝ-çOmúÉÚìþ AÐëkÜÆ!nèJs®5wöÚ ‚C‡§”0UÔü™€.(Ú€½ I¨¡¯:æ—BÌQø{Ðé>PžýóŒ@톄B° ê瞸ÁÞ@ü‡ÔZëÈs#­­­ñôgK‡3%›ÀJXb¹.¾C;Þ˜ þm¤Üž¨9ù^öëÓ_ÚÃKø¿ ï]§¬C§Äàª=ÖÍe[M瀵? á ž>}:Ï-çžR-A¯‰^M&Ò¢%Ð!LñëRt¹msìßà8*ößÜ¿º €|ª–ŸWï¢a~5¸¹ø­)ÕQÐþ?Ñ(•PX©ÛEØçÃi­àg²ŒŠ– [Ô&½gùê–Q¨âøºu|Ì23;~þÆlME4̋Ű´ß±ÈÑÖ”ÂcÈü³vß•·é² @‘VPPÀƒúlBj]m!: ™6®‘D£3 |$ÚHJ‘à3HJ‘à3HJ ¥ßKòeDÕ¤:ÉoÁ{7Êrb^ýP7é«ÒÏþ5éº8\Gº‘õ\!Î3J«T%„f1ÒylO3Ë÷çcf˜àaÖ!`ÜóZˆ‡D¾ñ&Ë8r„ýÞfÞ•ÆA þÃÐ[¾xÓÕ|xÃ’õh_'Ú8¼;ï”ò™÷¤›‹Cß•FATµe´¥…Ü7èè0ÁøeÁÐÐ+ô‹QÓLÔè>®ïŸ¶\!Îçö±=‹:Oú"Ù!ÎÃ1±«öƒ"BaA@¦·¼h£‘Ùµ™CÌU¦\ˆVLçEÑÔ ¾'á:ÿëoÓ1Zo² ™0gaÅ• ˆ¶’ë­XyÜû\ \¿DE¤—WÉõ’t”;ø{̾«·=¯¹ýgn© ÃÐß?xê •Ü24ÒPyûavl”jOX|9ÔÕãKh7Ç4f¥]Ä[Å~ò?„ät4°x÷ÚHXïí-¾²*±ÅÏPª,üUØç¢=žmÄ'¤%”RÓ—¦F¿¹®?hšQfZR\IbÁ¨è0áOÏ7µÑèùæµ²ÉâaàŸ[nÍç•E"0Ð9–Ïÿç½T«€bQÇþðO˧vi42;Àà ýñ#ŸDÝ‘2±”É}Ln®f¤Y$6®b÷%TÍéúô:ZÄ7ð³Jiް·B D{° tDS«ŠÂ´BÝ~²@ ~?uÔ%Ó * ’ðÿ²'Ë0UËS MìØÕ%{ÇF„%«äèÈÓä¤B|’UJóŠ™ÅXtûJÅ´GqØ-òŽeV±¨š˜H(sï‹MßfàRã¶»#ˆ;Lû ]î­}ŽîÜò1ÊùQ N$Ú!Îáæ#­â³Ånè¬ ' |£‘Ùç ~m†Á¯dƒ·€ƒ„îf—já-x7×ÕÜÀR­·ZUh¡9ÕbE/?Ó†L8Ç3þÌÖˉώU§5ÅpÎCð²ÍÒfë»jcF·gŒJ"ˆœù}¥ecÓ×uoZü1 Ÿn7ÆÐ5)hÔÝ´c˜—ìîºù9Ô–Iޱ4nÍméí"ÒC',kª°½÷¦Æ…8XºÐÔŠ—6ñ Þ)uã⪊Óç¡wBE“m ÁÞÉõlPÙU8º;l>…ÛÀŽ’À”y–Fék®úãnš€á_K87àäBUh.åÜ…f™¦tÙ¯P7WóÎO«ÎÞ)åà65Ø?ŒÜà1‹CÂ’‡#o­]‚Žîy nOøå§1Ô†Èø™;Hæ³ãÖjÓA}ž–Ë*Ȥä§}+æMŠm–ed¼¥•T™I u€Õg$–Pª4áš±ÕÔ®ÂèîHÜšsÆüZ¸Õ–¬ 7NNµi‚ #®.B¨ÈðZ1Ò'ÜÜÂs I¼SJBe²,­ž4QZsǺ`Ñq¿¯óN)yÑÆ…Zv·n|G Ý÷ðþ#Àª¹µËŽ’R‚ǹsç®]CÝ`œ>}ZKKkÍš5»wïæ’qvv¾yó&~:eÊooo„¿ÑI(…ð _½z$&&æææ¶k×®>}úØØØÀÝ·àÒ©S§ÒÓÓEEE@¾ ›ÜÙÐI(5~J\²mnn=ƒ :yòd7ï·B'¡TmÊo ‰NB©¬¬¬GÁnÏž=«W¯9AAAVVÕ"ÀsËÓÓ¼™GEE½ÿ^__ÿÁƒÇŽ»}û¶ˆˆHjj*Ð`hhxñâEwwwÁõ£3 “PJII ð $ Ÿˆ|B°½¹x,!À'pæh` ’O-G'¡Tmôƒ`[¢óPÊÏÏïñãÇñññÐ6ov¸té’ ÛõÛ¡“P <‡\1à9ã0°I¿-: ¥šâ‡ŽDÛ “P*00ððáÕ••²²²ÞÞÞÀ÷ñña2™3gÎyò$H >œN§§¤¤@ó<11±wïÞMÔ)#Qí4 þjjjß¾}“——6lXpp°¥¥¥‡‡Ô¹|ùò¥K—»-$$¤Î¸Âøû‹Åúþý»ºº:Hmû÷ï-œ:u*Ôsÿþý–Ý£SQêСC0?ÎÀ5æ0süøñ]ºtW›Î'€¯Y%xþùùù€p탸8Zèõë×ýû÷i@©¦¨…|B°É ¼Ù°màýtÇŽMoa{C§¢TÀù„£‰d xêàÏYYvø2È'À'\~^lx©o’F~JÕF§œfl蜔"W ŠRsçÎݽ{7É'Á¢SQêìÙ³0µÚ¯ñ$Ú‡R‰y5ú2ÑqZm™ÞrŒ¶jN‹@ºÙh/X7o²¤t!!Ú´o‡¯¡o^ßÄÛ¹®«zw¶ærßz[ SQêß3·¹rúô3‚Ü"Ñfè$”Z}4ž+1 A¡“PJ puu-++1bDrrrjjª„„\· ¿±€£¯¯/“ɤR©p ×ìÙ³ÅÅÅ Fnn.¾ètË–-àjzzúÕ«WÏ;'Ðñ$¥x‡—WÝѶá7–¢¢"[5Šp¾äìÛ·ONN®¸¸XJJ þûï¿ÌMî´¨£ƒ¤Tk¸Z N˜ùÔ)ñ[SjõêÕ`0Zºt©±±±££#86«øÞ³Þ<,Y9þü°aꪪ>~ü*mnñößšR{öìAjºÌkàÛc Ú²Þ6ÃoM©â÷YU×,”"Ág”"Ág”"ÁgtxJÉËËÃÄ›ÛltlJuÜØ=›R$Ú!HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘à3HJ‘àFUù·À[y1ÞŠ“”"Q¯þÛÙÓ¢«­æl¯«×(z–3)4WI)5@)Ïý>É`&âdo˜Èâv$Ñ”"Qíõ‹Í1@¢è¼£…/P $¥HpÃÎìdñVœ¤‰º!Ò…—GBRŠßARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸARŠŸñ" °ÈøíIEND®B`‚PK¯9A layout-cache=‘½JQ…¿›lt³ãFñ†@Š `#66±°ÑÎ.•`!K ­)Äwð""ˆ ø6Zˆ ø6*–zn¼{/ìÙË93gfîxxô?=è.‚î%aq.xX†ÝÀIbù(B¼_’ ·Ëðۆà ÜJÚ &n|Æq9dÆH>—º¤Kð:IÆÌJêÖà¾þ_ÉJ2ãGpÕ‚÷w…úõÌy‚È4g¿E]Ï;)h®A:¢×ælúj–î“•Úš†'ñýŠig1y Â-™¥>¼Îè_uRNø¦ŽšˆDvþM ½Ì¢ f ©ÁnôªÌ^ÕI2eCU½î‰RÏbÛÁN–è¡aÝvjAÇ%'™cèžYŽºxdvð¨èó޲U8аPKE@IM,÷PK¯9AìAv6v6-Pictures/100000000000019F00000109BFAC7E03.png‰PNG  IHDRŸ Ä¿½6=IDATxœí \ÌùÿÇ?ßo‡)Z,*+G‡mö/×Ú0¹:H—#K¥”P[¬.•rT$JIåXVˆ„È®eW¬kíOÄ.Ö±µXÑZ‘Ìü¿3“éÛßùηéúz?ßïç|?ß™×|¾ß™ù¼TŸ={†X‡jKÐ$€ºÀN@Ý`' n°P7Ø ¨ìÔ vê;¡R·ñãÇSäž8qBTF¸ÝâÐ †Wu³ø`á®Ü|øôÅ[Uí®}M>ýlØHç1fÍ&ÍÁ‡5wã–~»ØûMŸP[õ×­ËÄ_qŽó˜V!Ð( *u#O‚ZÕ<îÿíwq¼ó$ÿeÃ{vVG¯ÿ}òèΫ?íméèP2Ê™»=ÿõPΡïºr»âßwš½LGLúÊßÑL ÃÐ{Y,*:þç÷Ûwåýpùvù¿µu*É{{³hÇþãg®Þ®x‰u40þ¿±ös]Fèa¢fy|8óþ„©ÕÕÐìÿ8.ÞSÍÛaux•?ïJÉ.ü¥ì9¯£¾ÉˆqÓæPY»6’6®åº=KÌñºF4u{öûŒøç$*Fð«_e(úùwžTkèõ1nãèa;X#W{ ' ·÷Æxí8xò§ª°N,'¹.œ=BC(娛SÐFÑvÕƒ_n øÍ™^ßø½ ·ùûü\ŸÇ½ºÖáëâš÷‰/î])ʼtì‡E‡RíßëÅYßÛ Ôþ÷ø ‡R/œª9šçÊo–÷îÜrçðKÂ\ôâîå­— ©ƒüî$¿1‡‘´Q!%àw%+CÏÕÖüöé­’‚[?þ%¦0ÚJ¥®A.WnÃÈ%lëûÍnþømÄ×cŽ­µ€²PŽºq5&.]=sÄ€4jÿ¹U´tqòÃÊÔ-hºŸ¨€ç±‘ßlpþ¿þzÚj*”£øÒ6È?~Ѩþ=:i ×•~Ý;?"w£×]ûÝ}„eF*N„¸µ¯ÿ-??}^Ì¿[3«‘ò"<Œ6®©_bÈx“ÔkžÜ8±* ¥G²9$xœEU¤É€_„ò¥í}íÞ>¹Q´jIJiIXÈ‹âµ:ïëÉO®É‚ÄPR —ÃÂ^¯Ö‘[…PŽºÙï °N¸Ô>2±[‰’ç"D̤êÕÍí»…ãÛ5˜ž¤åϤ~Ý챩a[ m&þçñþ>½3«àô¥²G•5\‘&ÅW·Ôóüêþì?LÄÔº}j¿Á?…“B¤°ûÚ†‰äÏ…É•’oþE¬Góº/ц¼/¥F€…ISÅ[¸†Ð7r+ ÊQ·ùíÉ{݉8^CNš£.^弌¦pü¶p£wâ`@Bz? ÒÒÒl¯†ÕTÞ)ù.€\}ÁPtêÚ¸¤À(d¼1ÿ¾ÛÍ«6’gy’¨,ZkV°ìúÓMnøyLjbÐM»½*Vûºê)­€?Cß_‘Öãg¾Â*@(ôHYܸ~º*¯Ÿüþóžå¹’!mZœgÄ¿ïFjÁrÝQ€6-¦nš¡I“//>òkjðÜT±,¡Œ­üͽˆ2|¤Ìê=Ø&âjirÀ¬ä÷ir>/À0ËÄŒ¡¾©¿<(L,ïUV­:)ü—†=r±¡Ñ«: w||t Ò«î'ù»&‰*I ¿±9pÖæú¸ŸFÅvR0äÓbê†aïϼ÷@ÑÙ‹¥÷ž¾Bšô7·´õeÝEbÏUß%'î>qíÑîý†NpñÙíV_]uDÜþ¨)Ù…n=çvìe2lœã¼¬W9~2=6÷³Ÿ Ÿúùâµ{Ÿ½jwÓ7êo:ø³ÏGŒ’SWuxln|AÖÁã?ÿïîÓ7ê]zÎqôp°P­»UþÝ:^ÊΣg¯?|‰iÜ×|ÄXçä`'±v²£çe8YrãῸqX®~_T…¯ƒ€ò¡«n²~¥ 5œHñóLÅpÌŒÀ13däb=lüãmüëSf7l ë@Ý`' nÍG›^ƒÚ n°P7Ø ¨ìÔ vê;¡R·cÇŽ5[ÊEÎÜÍÍ ¾U@›Dþ•ieee3Ä¡( û[:Z5mø¾[lðü–€ÖKV7 @Ý`'ìT7KKË‹/²£˜AKÝ„¶\Íàyãq’s‹ÿ,œÐÉÄ–Wœ?&§ì9Vr³¢¶cŸÁ_N™¹À}D— ><˜»á¯â#éÖtÁ(ŒHÈZÑ4ªz¿ÓÔ‚ £vFêâoÿyõ‡½hD^K‡ ¨[7γˆ[À‘ôrçŸÄ {ËåâZõ6åàí;Á€4Å‚©jw`ÖéÙõß+ª0=sÛ „|ÛïÝíC)™y§¯=xÕîcÓÑÓ|Ù÷Umô ñ¯‚øèÌC—þªýhà¯øˆ©züDB,³Úyò·Gÿýrù2Bo~ɈظïÌ—ÚŸNðZáØSP÷]寻ãâ÷œ½õ÷ÛŽýF¸.÷\gðüx|pRþ•gšÆã¾Š–ÚoùœÕÕ—=,„{šÝú w «“6‰ÞŸ­IÍ¿øõ´´_°*£ó¾Y©E»ÄƾÀ áY'Ë^w¶°_lÏ@êÆÉ´NpMû›³ª»xVÉ ÷ØÌ)Cz©U]Or \_òð³âÕ]E¹=#÷e˜踭üú9¹ïÐÀâ‰Ó·ä'/(^Dä¾;ìî·é1朔“Þ¯úYk}/©Û=E¥‘æX6t÷ŽÅ½;Ö<,ös˜R4µ„#Lwº3ö`vX/-~ûµßNô¾µlß¾˜>š/®fLµ {y%_1Fø‰Ž^Ÿ³ò#MîóÒƒsf{Ú^Îâóë–?‰É=žÖ =<1õ˜4S˜5¿£Õ2£"÷þ*óMElná&akœu#/|-ÇiuúÕ1¹ùQDùNØôE‰¿ÃÑ€Ô ëÕåT¸ÇÑw‡'ŠeY…ÕÙµtHL¶Ð…„âD¹+†ë¨ð]@·Ûüíi7¡ÃñÕ-uCÂñOm ë8v-Zë^‘¸MáÛè5æ¾ÞŽà1}øÿ«p6¡oq¦§,Ùë}™õ‰Ïc.ÛôåoêYøf"‹h´r=±S²Wä-¯k暉â¢âû`­Þ^}yœ!?ÝpüºÈå–R¦oç‰fßo‹n ŠæbäÞW}Wyy¼¨µekÐ×Òçƒ"¢ãêzµ”(ïIk,àƒD±ÏL­¶:àÓCʨïvnRÖ±ó¥÷Ÿ¾¬!tJv…\À諸%ÜîÃ߯y8QŽ'L9*xŒåpbëkBÈW¡À$é_¿©ãU¢òÇÄcÎçŸGòp¹õ}·÷¯NÊ9ýëݧÕ\Á~Ý•xBËëkr)EŒ†"t!3Á¶èŠRjïÅ…5hmµÔÉŒ«ß/(I]>dS7¬£ÿzý¼%ž‡É—d±>ɧqÜ3uÿ´>T±çŽ3ÞðŠ|ŸNòžÝdÊ$ ”aJ¯\È}LBhì… VeV¸¬þ8£ Û¤[G 5ì¡¥eyüx$M®+%}^¹ÌùþŠ Éï}¬@.íêöŠDÚÕ‘Ë%ÄX».ý&¹:©÷bA8ÈDáï» Ü“¶hbH9úø3»ØcAu)pŽDœö± y‚÷øÌÖã`ýôޏŽX¼ÜnyÙ+ÝÁö1ÇÚ+q(€}ÐR7±Ù“ÑÆbò>næž&}¡$Y¶Íäm à 9^+8^rû¥@ìËn²v%¾§jæšæ*ÖšŠÕ¤œ…¢Ý0GQ-ÝIßdNú¦n'f†ôoØáý샒ìƒä‰P—IA©“$ËuqÏr¿lW_«ÏŒ˜Ý3b¤v €ìü%@V·ÊÊÊj•7—ù¡ñé-´Úªºy:éêêÂoÈ¢­ªj­‹ÐJhÃê@¨ìÔ vê;uk€®®nK‡€ru€€ºÀNèªïÕµ‚̽Gºv÷ŸZÕÎ÷5”µ¸I#k$­Ä×€–‚–ºñ¸çW:†œ®”ºÓºo‡Úв³¹ëš:2€Æ@KÝ^,9S‹÷L‹™Ø¿üb»mü¶ ³x¼ÚÒƒIYùgJU«÷4eç¹ØÑL¶eŒRle„p‘Zg#«éAa.}1Q:yÇ+ËY¿õÈÏ¥ª0ÝþCÇMttšb®ƒ`–,…–º%]ä/ÔÒWJÖ»ƒnKÒžkúf´ïú$ÏÙ#5 Í™^ß,µe 2rmeÔg$îšeª~/ÉÁ·0Ý;ӥؓ*IÍZã›zá_¥æ¸õQ{v÷ÊéþÈü[… €6-u+ý5¿¢zo+¯^Ÿ7ÖW€V -u[dÎ^E«ï FâYÖGèBŸò÷Ji ÜL¨-c蔑k+#«Y1:ØGíœ\Y~¿¢üÞÉoVd/ó*^.¿mZ꦳&ÆjbØOóWO °6êøöÉ­39 6~YD–¿{»ã»ÞFä?ȶëú8?‚_ØÛO¹!RØÊP`Êå–âøå×< :훳¾Àê¨ÆzË*@¨0>UVBKÝ0«¨Üu¹™û„ÍLxZ«¦ÓÝÈÌÂF¥îž³_¿k¯ŸÝ¦7=LÆ{y8)ùÂÌleVúŒX¼»d™-ߤY¨\IÖ¼ï2—¯¹üÇ ž¶þ‰v>Ê€V]%´O[DüI¤cšÃf‡ ›-¥ ËåÚÊwµ¢·95(¬3ØÞ—ø“×ì~‰;‘£n{öìiž8” •º¹¹Iw)hýP©زÐvûn°P7ØI‹©[+ùm3‡Ñ"G]{nóòÔc×ýÇÅñðf£•<Á€„¹ºñxÿ,çüŽs¹FûN¦v¡ü9TS?ÕZð©Üú_Eqa®âxhÁ‰1Zõ«N5gÀ¼ÚkÙq[+ûûŠVG½îú†ébš­wàƒ¥s·ÇA„´!þ×ÿzŒ¶uS¬vk––ñ½àQ(m-ÂõyYåøìôƒ3 Õ_>øíÇ[*àƒ‚¹º= ¼O(›–êiµ÷¢Ýú¢¬§2·çýpévEî ÉÁykf Óɳ†ëJÒ[“¼>%9ékUÊnSaE®ºÞàI>Q¾£;ŠQ¬šIÝ5¿îùIœ°·\.®õQoóQÞ¾ VäÕ\Lt\vô5næ·cƒC+tJ…ÔNùÕqñ…B%ÆŠVïHÚ{’Ü#%Xùˆ¿> …aUÓ1´´ ÜI§EW?;} º`z€ U”L¡ùÄ–:°@ãa¨n<ÞÄ‹­ÓúiQ›ý[ðo¿‘à´½+š?/þ.wtضU#zâ¯äFúI[K’ŒÜ%0%×§$W—ºV¥Ü6É´÷ÎØ;µë“|ÔçG ç¨#«fÊêš ä„{læ”!½Ôª®'¹®/yøYñê®õ£W{5Ù•/mC튳íF§/ê èT2B)c%¯÷öîv¸šêªI‘Tê#2H0\<-`œÍP3cc³!F:Íè¬~*õô‘a|€ *’Sä> )h<òÕíŸÕäÝÏ Ûóÿ»ø‚˜|”ØÓOÔC󟽼ò ­mYû1Yø&l´à¸‡åÌT¹]È]“æú” µI&ÚÑ@TìÍÎd4'ÑX5“«0WáFçüï.$ 'ÊÝêúuÞ üÿ–f¯²é"LQÊ ÔR ·÷¸Y¦º2¦½t:]ïZ›}µêú©ƒ×O“,®ö¡ÙÖjtZ ³ú©ÔÓ§”dP‘œ"÷IH.,öB­¹[¢‘¸ô’¸Øèµ¾±Ý;±'šSþ2è *´ v ŒR$¹K`Ò\ŸR¡6ɘ5øÿ$Bü—‡ÜU3eÁ»›”uì|éý§/k„W…Ä€‘ œãKz´ûøÎ¢”ƯÐ)·S äön,CÚhvªbá—3³üViYÙõ vžü«êtl,²Ž¤ÓÕO¥ž>¥ ƒŠä¹OBraÉWÐH˜\™òxçBßðï¤ü5›SóàMè9^¡†MF(¡3b‹XR¢Ð˜Êj“L©àêé}±±ÂD¹«fÊ"Ö'ù4Ž{¦îŸÖ§“*öœÃqÆÞÐÏLqvòÛçç3(g‹­ð­»ñ+tÊ픂¦;R„.÷`Iü±5?ÉY†PÍè¬~*õô)åW¢Ð“P:Œî»}QKÌúî+NÕ&T.ëü{mÄ÷è„5ò^Ú'7áÞš˜3‡÷ÄŸþv(f°s²äZ’d¿¦dû µ~ðÁ¾©uÅÔg,&Ò\5S²ëÁ£¦–† ·êv¾Ä¢QÄ«ÔØ{Oì?ö¡I.±Ý„UÃ0f+t’‘Û)EÀŒ{§Ù©[DƬ)_XšèiáU·ÿÇO2ŒP4l ¤ž>2Œ°‘ç¥Öv(`¢n‡c¹ÄE„ùZQŠÎZsäx{YÛªØlÍRÍØ–›¶pjÔ[= [ðÁÒÖ’$Óø%0%ÛW¨Íê4Û4ÄUíbn·$z^Ý=iš«fJv¹Ñ3vSÎæY“7Êž>© É^úÏô„Ðú™ûç0[¡“ Ne̸wš׸s<­8«âYÕžº^oË) ç,4V4l ¤ž>2Œ°‘ç¥Öv(`2Ö¶ÅŶ S0í dÉÒë1¶Ámoɵ$®OIk LÉ]Šö)Ú¤Ó ¢\5“ºkÜÌ--<ÜgR¾C-úJ¦¶©m6ZáÈ’4ÿiukÏŒE^â+X S¶~+ëùÁ{u­ sïÑŸ®Ýý§VµóÇ}%E-fC+Ñ21Œ ¯öZvÜÖCçÊþ~£¢ÕQ¯»¾aú†aV#‘ºº0—«|"o/ «Ÿ~p†¡úË¿ýx`c&üU|Äãñ1Ýš³ÏVAóŸ&P·6ñ¾<ŸØ°´´$§JwñâE"+4>]òÝïÅò3µxÏ´˜‰ýøÓ„v=Úømfñxµ¥“²òÏ”>ªVïi2ÊÎs±£™i6!„‹Ô:YM s鋉ÒÉo›’Û’‘Ä;-y—Ç{wûPJfÞék^µûØtô4ŸEö}Ui›‡ŠFF*²Ffå#¾¯…aUÓ1´´ ÜIL2`ÞùIœ°·\.®õQoóQÞ¾ $ÆŠ õÌ"H‹çYÄ-àˆÙ³ÊŠ›+ÆúUµÛvl±Æ»Ÿ4anAí¨ü':}IBqêé>+ÔõOò‰òÝ¡5&©Áƒºµ ^¾®U( é"ÿÉÒWJÖ»ƒnKÒžkúf´ïú$ÏÙ#5 Í™^ÿdPŸ‘¸k–©ú½$ßÂtïL—bOâ9Dç…$YQ˜ÎåJ%¼;ìî·é1朔“Þ¯úYk}/©Û=E…¢ 1(F@ƒú¡ÅÓÆÙ 5366ba¤ÃOÖ1–œpÍœ2¤—ZÕõ$×Àõ%?+^ÝU”ÛÞ}ÃWS]5ºWšœLëׄ°¿9«º7H—5"ÓÆŒó)˜»Êæ¤c!mèË´úa´N‡$§^î³¢½wÆÞ©]Ÿä»x¤Æ8w8R8Gй¢,šú4I Ô­mðŸŒ'‡¬t‚Á£4qCÉ›Ÿ!_é ßÃô§F£ÔàÊÔd4}‰¨ÀÚ¯Ìt1Œ×סB„ö#ä)­)È®¨&µ|ê† "’Om ë8v-Zë^‘¸Mñ¥Ù¢Y,‹w­ŒÍ¾ZuýÔÁë§øÊ«ýEhv„µô ¬Â\…¯)t!¡8QnÜ,S]Eœê±.¡Q]N…{}wx"9]ÖP`X¿°të}~ð›s Çññé¡ýéN ŠS/÷Yíh Êz³3Í ¤ßoSŸ&©Áƒºµ þ{#CÝd¤ Cè,B¿#d,‘U$x4©Û3<oƒõÏcSÁ#†i8Î¥§ìŠuÏ4¯AkG±Nl}Ú!„Q7Ù#  ¯¸œ™å·JËÊ®_8°óä_U§cc‘u¤Ô¼۹IYÇΗÞú²ÕYJ_!0V\k¬¶:àÓCʨÕPôYîÎ=µ³çrÝ—öV´·Pœz¹Ï ³ÿŸDHukâÓ$5xP·6@§SBÆwn.ÎÛžüjÚ8Q:±ûêMíž½û¤~ä´È½ŠVßA;ŒÄ³¬:ŽÐ „>åï• ÒÜB™Î¤Vĸ„¢U×ðxêüÜ›ä¬Éå!”XT4Q¢‘‘š+kd@{ °$þÆØšŸä,C¨LV±>ɧqÜ3uÿ´>T±çŽsÄ5¬£ÿzý¼%ž‡É-Q ïÒ’Ä´ís]عèÒÌdKæs7ŠS/÷YQ*¸Z|Ÿ5–~§Ípš¤êÖf¨®yG<¦fK‘…Κ«‰a?Í_q<-ÀÚ¨ãÛ'·Îä$ØøeYþîíŽïz‘ÿ Û®ëãü~ao?¹˜r¹¥8~ù5ÏBC±Wñ¤Þ‹óRîT/6¬¹¹g9Ëg©A^ÂÃàŒ«;fꌪ*~¿|:/sfØn…Ú§IÜ"2fMùÂÒÄ@O ¯ºý?~’a„0KòkšZ*ܪÛù‹¨[¦?D7ÏQ™¼GRJYCÁã] ^v«î´+fZþ$·½Ë‚®\÷)†1;§^î³"üàƒ}Së²Ôg,¤ß©&=MRƒukÞýø_†´™l/J<~$Éþ2$¦b•».7sß°™ OkÕtº™YزÔÝsVâëwíõ³ÛôF£‡Éx/'ùÏ„•>#ï.YfËA ÞÌöHŸ_¿¿ÈǶ‰O{pNf–¹=?ÞsÿßoÛ÷èoù…C ý–£‘®qçxZqVųª7¾îðÞÝ>”’™wúÚƒWí>6=Íg‘}_Õ÷Ó+ÞùIœ°·\.®õQoóQÞ¾„3/ïßÓ›#Ó ¯>©Áéƒáš½8q(a6º‰P¦ŒHjK&eåŸ)}T­ÞÓd”çbG35LQ¾£;ÔE"3~YÓ[òûy›¢)^YÎú­G~.}T…éö:n¢£Ós:2M¥nê3wÍ2U¿—äà[˜îéRì)Êjï¾a‡«©®ÿuûߦǘsRNz¿ê?_§÷ëÇ=×7è7Âé›Â*’§´ænnnnäÝÊÊJ¹UL¦I<â8—œeLzµ<Ær8±õù‡⿤y·s“²Ž/½ÿô%_ËYW„%Š&uåͨ#ΘTµõ-ì–ø-ì%+’")m“¬zu3kðÿI„©ã—ì‚Цâ\|6úkþ¶zo+¯^Ÿóçtbç2t¯Lé(œÞ«z2By% ”(ë“|Ç=S÷OëÓI{Îá8ãïo²Y ÄèBŸò÷J©» yçžhó¸x› nœIƒê³ÆÊ_Q(šê`µsreùýŠò{'¿Y]½<Ϋx9Rü¤ÀE ›×g©A^ÂÃàŒ«;fꌪ*~¿|:/sfØn"«FP@SKC…[u;¹–¿›zÑÞÚˆüÙv]çG(%÷vÇw½%·©ãíG.~ðÁ¾©uYê3Ê_S.·Ç/¿æYhH‘BЦæ¬/ðŸ:j ±^Çr„ j§”CvÓÂê†s23°Ìíùñžûÿ~Û¾GË/lR„Y‘=c7ålž5y#.þÁh;ìåÕQéésmSh}fJu÷œ•øú]{ýì6½Ñèa2ÞË#À©ÁàT§yئ!®js»%ÑóÔåÆ/ÉJŸ‹w—,³å i3JЦ’¬yße._sùâñø˜nÊ ¦¹ù^ð(&m¨M9~Iáß»8Ž,S‡µœ·!† Kû9]¼ëû :ú¹AÑ%ÂPÝ‚´¸qžE܎ؼbr éÿ$SÕî>À¬Ó³ë¿WTazæ¶A ,p±F»O‰‰‘,³+~-ÁÊq $¬¥¿è˜cÝ^QC¼û˜¯è$y Äveµ¦ÐPËj¤Ó sd{½fÅmt´?³A€FÂPÝ8™Ö ® asVuÏâr©¦ =#÷e˜踭üú9¹ïÐÀâ‰Ó·ä'/(®_}·ñîSdd™]¯4Æ/¹–rü¢cŽ•É7äGºß%ëŒÈjM¡¡–R;?¾)DM&Bké¬Ë8«?ªTºôò¥ÃÜ%®ôk€ Õ ëÕåT¸ÇÑw‡'JdªQT\1\GÙ#´ØŽàoOø©F¨^Ý”ë>%×ìŠ-åø%Ë‹Ìo‚ÇÞ Ò¤ŸY­)4Ô²C2$…Cë-¤î²ô]Í‹òÿ%Î÷ðÄÙ ]¹µ@Ì?3µÚê€OK )—T·º6y<®Dÿ)aZÂí>‚iy8q}È#—Q®û”\³+´”ã—,s,2D…«ÝE¨}šô3"«5…†ZvH÷‘¢¨¨wêeá´.kµÅb´Sáêðæê†uô_¯Ÿ·Äó0ùæÆ%^?Õ5<ž:ÿpS²ù>,ß,åºOÉ5»b@K9~É2Ç"3W-æ¡ÍoÐÁuő՚BC-3¤7›ùªóè ”4TßCõ}·›ç¨LÞÀ#¹º8#´ç¥Ü©^lXssÏ2fÍ6Þ}ŠŒ\³«¦CéŽ_ṯLÂÕQtíoQ/ÐjþÝ}Š3"«5…†ZV#/¢ˆkR\=¢î[)tnq:%„º~iÚS“ûôÖ©ä¯Ðø|ŠÂ —F©¦ážj¶ÃçF}ŠGúüòøýE>¶…ˆ¹[UãݧÈÈ5»j:”îøEËkd’>wÁŸœã}g…agDVk µÔFx¼s>l®Àp¥ ûgCøô¿Vªõ4>qÕqߨ (ü:{û5ÚXLÞÇŒ\ÂÓ\äV¤³-†BîS +Ê4»’{«»µ9~Ñ1ǰþ›ç©ÛnZV¼Ê˜âŒÈjM¡¡–ÚHYhØ?8®>7¥ßûk[:Ÿ*t9w%ñ'·Уuý P 3ž˜Ù’¯*†/¶-¨ÐòTVVÂ*o€ÒuZ˜ O']]]Xâ P: n@ËCÌÝZ:€…€ºÀN@Ý`' n°P7Ø ¨Ðf€o ê´%à‹#}@Ý`' n°P·ÆÂlùrŠZd¿¾¶nG 7~𚆎H°Z¿zÇnŸ|:ÂÞÏÛ¦[³Ú/I¾f;¿ þ uƒAc}N4h9)!­Á¯¯9i¤7 xh0œ»ñÍj_ÿSºÁíëqç´lNH[`¨-À?'|æ%$νo^¯Ï eÔЯ¯íÎÚhÂÌP(jbþ§ F#VWÕèb¾ˆoÀÍC¨NÝd¹ØÑ±û#—³ûSEÛÁpÍ^œ8”0]ŽD()hy×ÀCO†» ¢ôñ#Cá××บ ’aàãGðàTæö¼.Ý®¨Ñ4Ù#Øol7Šc¡ˆ„]!xMsuãq_ÿó¿ ü-£pQ¢,;!ŒíþИv”î.ˆ(}üÈHúõ‰Aa6(„ß»¢ùóâïrG‡m[5¢'þøJn$B©ÇB »BFÞ€ †êVÓJõ‹-[‰Òe¹Ø al÷Çúíð¸ÕN,åo ‰¦4…» …i~}  0ÂÀÇoËÚ?ˆ¬oÂF &Ú=,g¦R E$Œì ö:0¿ïVûòþÙuscÏž^q)t·à…‹ÆväK!Ég¿TkA©íH"lYU[ßÂn‰ßÂ^ÂĦp¤ðñ [¯¯fƒBøø쌢},‘0²+¼'xTÜ(a~eªÚÁà‹ˆäÔq +–eÔœôTÇ0 ;!ŒíþÄÌå^Åñ»<ÞûOÙî!þGŸCmɘ)4…» …1¿>Iäš 2ðñ#²r:ÓÐ Q®S¢ÔH˜Ø6Ö¤Ó8O,Ìdƒr¸/¨Üsc*;úHµûÓ P[u§#µK”¥Ûõï„^Ü*à_WªÛ…Êm‡&Má.HáãGF̯ |ü¼—öÉM¸·&æÌ€Àá=ñ§¿ŠìœÌÌ)‘]!o@ Cc¿ÍÛ}½r¾q}ÁO($…‹}¤Úý‰ÑiñþÕ=ÒsŠV¸o}ú iêšMœ?Ý{º¶¢íÈ¢)Ü)|üÐЯO¡°…0ðñS±Ùš¥š±-7máÔ¨·z¶კ:%*jWÈÌPô]á|ë Jcÿ0Ý¢ ;útÞ´1¬ƒ¥s ¥³q*T@!Ë;r …» …_Ãb üú(ÆJVü |üôÇzFŒõlXž®SbÃPÌ®™7 È@ø%V«£ÅýúšðšP7 -Þ€}Z‘º)ëF2Üf+à (D+R7 xôu€€ºÀN@Ý`' n°P7€!ðÍ  •ê0¾œ´f@Ý`' n°P7Ø ¨›Ò y—=ÈÓ©©#º)—E^rœ7ný¶y"€¡[sóÿR÷êZAæÞ£?]»ûO­jçûJŠZÜ5æµ4˜»_‹hs«ÈöN®ý%-xíž³"Ñ3¾Ið¶T‘“ʤmÌÝxÜó+CN× JÝiÝ·CmEÙÙÜu-”:h¨1«ØæŒLïäsŽÞßÏÙw8át7ßÓyú Ë¹Ã(Ó@©(MÝ(ŠéùþÊvV~±<äL-Þ3-fb?~V»mü¶ÉíWlFÇùX”.Y˜Ž½|]«øÈI‡æ  “êĬ‚ÊœÆùUâK‹Oؼï.F›²¼´ÆÓ¡r„ êöþ9PËJå¢4u£6*¦öý•물ȽŠVßA;ŒèãZS]Ãã©ó_«7%›•ë|¬(o™ª›$rŒ,'f ÓžŠ³K––ýYA\–ºµ`lG­>Ä ô Š^„¾IA¸u:(¥©•Q±<ß_¹ÎÊ:kb¬&†ý4Åñ´k£ŽoŸÜ:““`ã—Eݸ3B{q^Êêņ57÷,£y ¦\n)Ž_~ͳШ{åÓ¿÷öÒÔM!³d 'f|^ú.±Ì¿œúÀ¹¸ÜòJddŠþ"÷Üß3í>Aw / «Ÿ~p†¡úË¿ýx`ccE£Ôí¥âÖë+ñ]å- ;¨â˜Ž¡¥]àNrîƒS™Ûó~¸t»¢FwÐd`¿±Ý„éÂkF.Rëld5=(Ì¥/ßý„Ç{wûPJfÞék^µûØtô4ŸEö}U1aÖ¿§7G¦^}R#î#vù)ëj”¢q²cŽÔº´¥nÿ)®nƒú¡ÅÓÆÙ 5366ba¤SgÔô®hþ¼ø»ÜÑaÛVè‰?¾’‰Pª0K}Fâ®Y¦ê÷’| Ó½3]Šù¦ñï»ûmzŒ9'å¤÷«þÁcÖZßKªÇvOQ!²j¶;ÇæÕjún+°ûèI¾‹Gj59.W¾‰'EãBÚ»oØájª«Ö„~ 4†Æ©Û…ÕmY¼kelöÕªë§^?Åí/B³#¬ùW¸[Öþpü›°Ñü)RË™©¢Zk¿2ÓÅ0^_o„ Ú_ÝR7TåC¿<~‘m!Ï¢Ù8m‚æž»ù‡¬¢ÈÕë1Ö“œ"ö} ò.†á†¯/Év0¬“µÿzk)]`F.ái.R{§Ù8|ÚR·c‡ó”€ra®nðóxZ3°ìÔ vê;u€€ºÀNh©Ûž={š:å"_ÝÜÜÜš!å"_Ý*++›!å÷Ý`' n°P7Ø ¨ìÔ vê;u€€ºÀN@Ý`' n°P7ØÉÿ(m¿= ¢\IEND®B`‚PK¯9A£å핦•¦•-Pictures/100000000000035E00000106F50EF8E8.png‰PNG  IHDR^úøÓ•mIDATxœìÝ\ÓØð—°Áî½·â@ôÜ‹%.T¶‚Š€" ¢‚" Cdˆ‚ ¨€E@Ü@UÔs‹zwzçöï8ç‰âf$ÿtPJÛ¤¥²ý}?|JúòòòÞKòòkš¶òïß¿G $_Óµ„†€BCÀ¡!àÐð@hx 4<’CÃWR°.ÿóôýwL­I«v;wëÙÛÕÆ¤*W{èééñ§ STkܦ“æ`ió¦ P۬@%’’7V™®ºÂúåݳ»Ôßõ³¿Zh(ÇÉâožþ}Žú;ü8師FM׈¼fgg×tEP‡I 3Ü.Q¡Ð¿m΃Û5–/þòߡw®Ÿ?±¿z*WÛp/²¤è[Áë‡çC–EýSxx-r «ézT ¡açÑjDG öÛ¦ò [vHý/»d(öb•`"w:yMBzöå;/¾ª´ê;ÌÀÜqVÏ;©[RŽ\úëÕwÕ.ƒ'Y¹ÍÙˆóÎlEóSÈgúórZ£Ö¢cßßôÍÎÐT(-+ëäÿNïØsèLÞý—ŸŠ‘·"Xˆ7ÉJîQö^0ùÒVÎSBÞƒu\‡¹O09Uvý¦ (S„žÎ"‹þÉÚ™zòÜÍû¯>c ;ôúMÇÈÆ|d3L°[öÚïLÏùýïgXãžÚ“,œ­GjTãë­Ã‰².üõèí7åf]úŽ00¶:Pµ\ BÍ¡ú™ÿ~7.@BCE´¡Ù-\g©;¨G_íQ}šâ"·Ö„äÕXønçM½¼•µãÆé«r?þ$qœRððbòsòÈq;%ÙòŸw¼gVñ—7¯޽rªðø!‹²¦=‰·\RöSÑc6wAvOÞ.9‡Žá'>pyB¢±~‚ĶDñ·‚×έe?‘_,~3dúrV!Î{þñɬ„ë'θŽ5R-ë4sïm¥“ÿýsv·ÏÙÛ'Ö —cg K.ù¯ºXÌ+¡èݽK™÷.¹xÌŸ›Als*‹„ÐÐ0Ééô옛OíßvŠzªÐ]ÇÜ`Ôˆñ#»7 %–…è¾(ÒϰW3üÃM/Ë•àE·Kz8E®¡R°÷×}g{åîÛŒì–Ê–ôa÷QüýÓËË&ó?m‹GüÒìNŒòØhö[f䨧$ùe<1ítqÀ"Ë çÄdäu×÷ˆ@Ýbz3µBðÃ(ìÕÉ÷±IÍúi ;.°8Ìet6•Ñ÷üg·ö/ð9eÿØ(©KÙR½mXeл¹RÑÛ¿³ÖºÆÜÉóöþÈ V§f}\ÅŽ ‰>N¼ô2\òöúÈ Q§kBeáb!~†„¨k234CûJNîÉ=;νŋî³öÜgíŠjo¹-Á® ?:T¸»èý8AXÓA+²¢&æÅðRškûáÄQ1ÍRò“äëÜ]‰™¹×ï¾È/$J¯Ø¡Ã•…†–{õ”ÊbY SóX,w:†Ü¾î›•—*;é”g!Ž£1ë[VìãÆŠ-›—=‰;Ͼvyk“»í¦ò¹^…#´™ÿÌ9rFÎZZjm\£ƒ®Ä!äA¥l¾Ê.añF#á רŽèšPY$_ðÃ;ü6Éz¨áÔÛ'³®ÜýçÚ‰ÜûÅÏöÙ'Ù±¬J³ æ'É—E2¼`ʬ4ÃTûc¿E²åé=+è 7"äÇ…ÔÜBÁÒæ*Š4Ê(¢é¦%oY+ßzF5ǰԵ%Ô2s¼TDk.(;;›$Š‹¾¾v;k‹÷öÅ7×y|Ô ç]Ï»L³Žß|:±ÜL„bºÊ}r­4I$ÃuææT i¿òÃÔûM4ë7Ù8]Ó7ôä\–c‡† Q„¿"ÉVüëmßâEW,‹a¼NIàúã2ç÷»ÄŽ -ÃvšônÙHIŽ$ßèëÏ*MAäZ †õÛ<™ßøgñ=´¯kÌ6'使ÊI¾‡áòŠ ZtýÍ*dO‰þ¬]è†Ç'2¶!§üae!ä•5–ñÒãI„¦—=Ëâσ‚ðª÷⡚šªŠV˜ÿèÒÞ¥(¥±v2L~ëzöûˆtªÂM6Œ«Ðz±–s—¡]øÃµE(˜sÏq<ÊÊEþî×»êôiÝ/ú–ÿæÙÿó.f§/ Oã/¸iÉ¡®ì{  ßþ“½6ŠÝWÚ‹¸³£Ó7P”kfW/½^‚;J¬O3‚x‡ã§ò‹Æ©Ë‹~T@B¿O%Så  ŸÆvpPÏÜZð4r±E$~õÅ…”€¡ÈæŠw4s­’&o믲×ç[àÂ3ˆ@=bzVxÕ硈]èÊ&-g‡bª«"'ç-9z+ÖÝ&V(§`¸Šÿ½y™ÿÖCœ ú¯ jÌ}ÒxmÀI«¯Þ‰^j]–â¿¶±ÄÊÌEh=BÁf“‚9Oáó(„Ðp½·óõ·þúçÁ“o ¾#ÅF-»ö:Öh¶ñ Þu)y“½ëɘ]ÇÏß~þkÔº›æHéfÑî¦U_sž¶kw»EoHÊþãÅåV݇L4wØåo)å²Ã6wG6_â8ÖB†+m³'£]Çѱ$´ÜqÞ¤^’š8pÿ¬ó×îלì??ñ@Î¥¿ŸÂÕ©úZ8Í%_úî¹üˆ ƒa™‰é'/üõøÝŦúÐ7¶®%/¹n19þé·ÞW¸¥$„†ýÇQ 0L©¿Ù²p³e‚‰F—¬D/_1§T4?†µ1XfPöõ‚Èš±4AdGybi!’[è!ù(¢‰¾,;»\Ã1¹Žãf-7‹©¨¦Ã-݇Ó¯˜š–Ñbê¯Õà-ØË>|¯=ÓŠ$‘öc(õ ¹RG?óÆ7Ž#­(3)>€Pïý¢¡!|ÓžcMV¬¬øm†õÑ/b!¬êÿ˜|4µÜ/Q „†€BCÀÞ8q¢Úꪥ¥e~~>Ý\ W ©…+»> fìÛ·9ƒä7”âÊŸZÓU¨KÜìL%æ©Ã÷¹/¨é*Ô ùùù³ÕáÐH)<>UšËj T¡¡žžõH¨ºgÒÃ1ŒŸ’]¥•“JaÞžu[Òsÿ|öE¥Ë‰3çØ™‘ü>zÓÖÖæNàÊͺ 8×ÛÕ IÕ®îÚµkU¸Ô ¸jˆ óy£زê*#‹SSìN.ܳ¬o+åÂ×.g홋†dÖt¥¤ÂÕJ¾ÿ÷à”‡å¤4ƒK&5]#üê*º©¡vYD¦>÷¡ òò$}ï"‚ÀÕšwÒ=}¡ãĹ0ùF­zömüþöƒWX3Í©ná‹´pö²dÉýÃ1 ‡rÿxöU©uŸ13\ŒºÉK}m2ðJ7 ÎiK«^ãçŽç¦ ]'ã?¥&R\&xn?ûTQÓ4xÛÌ»žñ§ŸÈkZEosÉP’+)4lßù{¯‹viáf?ç-x`åÔ5»rþxþ¹ÖÁ//£oå_hMqÉ;ÕO\ýå”›öœ†¼ↆ?®ÆûD¥œûûs£þí|ŒÛ–Ö?eÙÄÕ‰9w¿7Ñ2Zên Î+àCV„WlƵ¨­¶Ñ¢µËôÕKós+óç‹/$Ž£Òë”pí *ê'L·÷~­¿¶•ð¬KÙs‚¦ j§Pp;ÒbYÄ¥çƒYÁ-øsÛú¥Äk74ÞþòöEä—r¸ËÐdKš{ô"– 5·äȧMo0³È´­Ý¿±µ q¼."iŠœ”µòÔ@.É}tti®ŠK·ˆi•|"Xáî²±óÌOº­IÉ o-Ÿ`žêœg*M†‘Gýý#Òš«î¤Ïµ¶›š—ÈëÓG:éÉÞíÔä¾kM8„.Mç¤~÷¸Ör›Ø¸ñ®®DÊnܧŻ Þ[™’ØEõãÍøSWëäð‚@“›ãf¬i‡žŸ^3c⦱—+S‰_Ãõ=^<¶‰J?å3Cý¨+ËU…*ƒà eH§¡!ÖtÕš¦§VÛ/9b(4k¸·w¢I¿ee£+á…òçúŽP—CFm§¦}ØÓ31"¡#±CÃØ¯Ž{Ùõn„a uBPÈœW¶ )ŽHº{õŽ'~ˆÚ`ëqçC“Áº3mWXQ–°HüÜþìûúúûã¸Î¶Y½SÓZþM£¢)i2\ÚïUZ’F_‹º¡hî󘕣Úq&T=C´Ö|îK…i…«ÏwIˆ­ÿvC‚0ˆÊÊŽØð!0Ï {²™–c{½ÜYþ¡ºÙÿ;ꆮY¡µ-ö£ž¬Ý[ì—§ÇM×[ï·’J_î/T)UìÊ÷MÇgnðzY.4$ïŒLì陋Є\¤Ì»ñµ /»Þ0¬¡N ™ójÃ4Å‘¿xȼ¾Fv[ˆÐ1„R²ÛЧìõNßßüû¡}‡î#M=FrÓáz!—T¡á0„Î#ô¡^"³²8½yÏúr©H«,4숆©q§»°§qÇqD œç8ç1H_?¨l‰Ã•…†}8¦J=â8A׊0—Q‹¢Ïû/g/¨Øiøt{_û¡rt™~AR…†.ZèüMüíì*†À%UhˆÉ _spýÁ„”Þ³Ãß+¨·êÚWË€3KqNZ±g¿Ó´M?”ÛôÖ³·]jZÉ_£ë'Äc ;2ÂìR_©´é¡=Ö`zŒÄ¥F.Iº´rª>* û"'{<×å=üH6j?ÈpšÃÒÊ­'@]'m‡© œéBý‰¤cªÃ¬½‡Y‹YDð:ÜÏLcÞQßÞWßžyBO™úo7-—Y} ‘#õ'©€_üPà‘îÛ·¯zêjShhiiYmõ5Ž)4ÌÏϯ¶z€÷ „†€BCÀ¡!àÐð@hxj 4ÔÓÓCµþ—‹k°’Å7{ÆžøãÅÇ© Ö¤Nt]U…ZW¥u¨= T'CÃM::™8>'+ËÃHòµ¥î¬·H}gNZ;öÓÝúú»b‹µXb9uâ -[%enZ¨÷›8¾*3{œ^ÑeÅ"?ÌÓ5ËbÙˆVB˜bÖû4rZhЫ”52¨ôÖÕ’uõƒŒ¡¡m”ùí¸Ž¬µ*ðþÇqTàõíjŠÐõᨓ-ݲµ<¬q§9ühæç»«hí34~ŽØYTádñ÷ÿîl´\~ ô¢šA¶õO®K"¡ÖUçº`Ç$’14TñPDÅ(ø-:Ðâ‡ÿ#‚ÐÓGÙY>_QŒÚ»`N¹*Üœü«S\‚ïëñg ^`#É’û‡cåþñì«Rë>cf:¸u“Ç„¯f‰˰ y7-bÛÑ w^`=†è›NÑTG"öÄ^ç_Iš%,EßILÌ8wçÅ7Ŷ½GO³[bÜW¡|ÓØùq\pAº«RvI1×Qïô¡&¯ÜTÓ!"!d-±dòò$}ï"‚ÀÕšwÒ=}¡ãÄÜN&?ånöÛzìæÛBÚuÑµŽ³i{I03&ߨUϾßß~ðªk¦9Õ-|‘.ͺdîIàW 뽆]ŠFBŠÈ°› ruų³®’þ¡Ø t+—]eÎÆ}4ÊnÅž­KŽÌqÚô3‹LÛÚýÛ[«Çëò'’¦È‰­…`± ®sŒÍAø¼Ø4Ë. ïßÈ=°iîæ–@"±•d(©ié–®qTÒZ¼=df»ô:žf"/qA±¤î¨´#¨E² m9$ñý¿¿6²§º®–¦äKÙs‚¦ j§Pp;ÒbYÄ¥çƒYÁ-¨ôÂfA‡ŠU·gNkþ6ÃÜ6ö›èºèZWn;Jꥶ~)ñšÇ ·¿¼}ù¥îÇ24ْ潈åRÅ= Ô’CÃ+ÿ+wŽÚ‘eLFD]Âÿ؉¶œÅñN«•±n¸ñÕHbÏM'ˆ!ÓËjÕGCºË0±_!÷²ëÝÃê„ 9¯6lASÅf,–aÁ§ìù꾿ù÷CûÝGšzŒ(CAšZ a,Vôæ÷T ¦·WÁ°ö3üQ¬{~l42q•¡HúŽº¸)Å5§éü²;åÇnÙ2@š’‡{[p'šô[FÅ]èJ8µ¨§›ö µNú¶nG‰½ä;B]!´šöaOÏĈX„Ž ä"¾tIÚ+´óu]i GKª«†¢¥`¾T™DûÓ¡ЈJ hFXžðÛ#©/•+‹ô’úí¹ãœÇ }ý ²´Ã‰ ‹eX0ÌeÔ¢èóþËÙÓŠ†O·÷µÊ¿&Äë’$¤¬¡¤ieq{óžõå?ÐÂáLåÈ7è0Ö':V×ùÕÊøÂ;ª+JrˆÎÅq»ØÔ™]ËcôõÍðÒü&p¢ºò­“…Ä^Âj…WÆ2ïr@ýóßk8Ø¡Tö„OOnB'yäξö61Ô‡ îàxÞwRK™wVvXÑáPøs÷ø›;­4A¯äåJ˜í$±(†çFd.ž1º_‡^;D(!%î"fíÇɘGß–t,ügßJé+IW óR‹ç(ÜSä“ñ,yZ‹7>TŠúB'i{ª"í-óÍÿ šb"©( ë½±šó<Åí¥]T¦’ 9ùUՔ刂ûåÞÀ]l©˜µ¿X°u²©Ü^’†Ì»PÿüÌW^ÏéJìˆãK†•& ð@h-A´§ýÞ#—$]Z9U•~\×OˆÇvd„Ù¥¾.RiÓC{¬ÁôiŠbX0r¹7Ás]ÞÃd£öƒ §9,å¦Ûn]ð2,5Ëaê1Äô]*¢•¤+y)Å9ixÄžýNÓ6ýPnÓ[ÏÞv©©ìý/MGwÐàõÒ\ZkÑ™ý}{Ñï(cCÉ~QvA›Ò6[MŽÂ…{LÉ6ÙóÛš­[m¦ÆüÔÓTn/ICæ]¨d?éb˜r‹U>e|vöx¡l¢ŸLidê¿ÝT¨X¼£¾½¯¾=óÚE‹eXP} ‘#õ'Ú„®æ«ãÌ%–/ZIº‰kšê0kïa’¾:P¨i‚O§¥é¨]§Q»â?g#´L#ŠŸÀP2Þ×ruœ¥Ø1¬ñ„Å$}Í9CëJË¡í%º® û r%ö$ð‹€ßP®Ïl„~€„†€BCÀ¡!àÐð@hx 4/<>µ¦«€xnv¦’3 €¹¢*ÚÀêcš *4¬AhH+È}AMWaùùùÔc…–Zh3»ŠêSÿlÙ?„@mcZ…TtXƒÐ€º„z¹,˹Ÿú‰¨U`L«RPÿÁ0 ¨O`L«RPÿ)ÈKþm¨+`L«RPÿÁ+l@}cZ•‚Ѐú†QP?HùÑÔºøózÜ´ªcZ•ªœÐPOOzÌÎÎšÔ ò0ŒÖI?9œÖ’Ѹr«áboÍœ!jÛîJYQõ«ÇM«tµaL+9·Þ9<ãú³ÏŽ_»vM[[›J¤&jº^• b¡!÷Tãƒ@¢¢b¢¢‹ 6”;A˜r“v½†èYº-×ø½¿§Òc,òÃ<]ã±,– ·dኪZ´í®9\w¦åø.µò>*òëÍÌÄô¬ =~û]¹yç~# ŒçO ZÝUUS®ðºræ’¡idñÉ¡Û_¼ûú‡œZÃf­Úwܺ1°*êVÛÈ0¦!ö>|ã@ì®Ì3yß)6kߣ֖Е2×ÁwIÒU8uU·Ưl«md¹j(zPÕÎà ÀUT"ãhuö÷K$Y\ðgÀÔE‰7Ï´:fZåVì—U´ö?‡ÿ”•}²ä{þÓGÖyÙü#òÀ’~;äª=C+YrÉ×xÕïÅã<ãÇtVýúøì&‡àeG¯¯=â÷›\µF‡ ”d[°öt&šv{þÒÄ—¸õÖôY??ûó쨪¨X-$ØF|ô]OŽöØ~@¿GƒÂ—ŸM ’yl¤dqǪE%$⌖²U¬ªü7”‘dÉýÃ1 ‡rÿxöU©uŸ13\ŒºÉs†<Á—qRhÒu¸‰›·y7ÞC^ž¤ï]D¸ZóNš£§/tœØAd)L¾Q«ž}¿¿ýàUÖLsª[ø"-œy¥üšd­8 â*}Ü:‰~l**™B%êŒ!˜‡uöIýŸž{ûÙÅvšcf8,5ëOt$®;. BNŸM’¯­Fý‹Úî?—ÖÃ~5Ìǧù} Ž‘ÿ$¯=táö³x“žC&N2›=e€:âË÷26ħåüñô«R[ͱ&‹—ÌìY«Že*n¾“™˜qî΋oŠm{žf·Ä¸¯§†$ùå|œoì‘o ËÞùâ’$IÄ\G½—{GLNY£ópëØÐ£G—¬™Ïòk„Ê­äÝ´ˆmG/ÜyQ€iô¢khl:ES ¥ŠÍNrXã8¦¸^WÛ“G'ém(DývçllCm/2K_7„@ö,–…вW­ºXŒ·Ûê­Û™]²bW]ï­»Ï.¸àåý‘,R ‘!½vâú¤¿.ûù{±Ä„ÇŒ†8à 7'5Á)ðó¹Í™×Þ~/;̹³³ =7´ÖÌXµC)92ÇiÓÌ,2mk÷ogl­B¯ËŸHš"ÇÏ 8kë>ŠO"§;Ûº0ÁœeÇM¿”='(aÊ v ·#-–E\z>˜Ü‚¿T[¿”xÍã†ÆÛ_Þ¾ˆüR÷cšlIs^Är‘f¥üjŠŠI™¤NŸþg?i¾B°•¹[gõÕPÀ¨Äâ´‹7¿WuÞ›:½ÅÛƒÓÄ,ºHäî7•'É%ˆ´ù©h¤ÒÇåÿ"%EôÂó?2¶ñ·Íì·ª ”E ±ÛÈBøÜ-Ç,º(¾r57Õ¶¨oµŠâ SÇÈW˜ùÖýñ=¾ž57xþUüìèX.I·tû ê˜nÔâí!3ÛØ¥—Ðñ4ö¸Z´ÇÔ?½HÑ.>äåëT“ EË¥A-’UĈiy#´‹BÈ[hÖ:ÇØ„Ï‹M³ì¢ðþñÜ‹‘fÙg* ã÷Ïhñ6ÃÜ66ЬÁÑcsE 7®N‰î´Áá釳(s,BÇBØg;ssÑe7_e‡ ž’:y"´]‰EÈ“ŸF7¤³›†K».f_*/4äR™³q§EjO›Â°‰E33o#‰dhÚ„N#´dæR]ƒ!}{õê;H««zYCB| Q’µ`~ØcbŒ÷öµ#ÛâonôC(V|"ýù”®±té2Å@†1-â {^Ù™,éfºŒŸAÑ*n§u_Å'áÆ 3¶Ø´1>ãpâÔï'Œ¤fQ‚õáN&¥PqAÒAÓÖ¯S&9l+ÌCm¡úÓ­54Ê ¾Tb~‘»ñuð{Ùõn„a uBPÈœW¶ )Žü !óújP/»-¤Æ „Râ#ýy¯Y›ô[F­]¡ÎL¡ü¥|G¨Ë!#„¶SÓ>ìé™A OGr‘f¥üjd¾jÈû{,kb±e¬`9³{7Àxï¤ÄD¿£ºÕÓÚÉ“X+£u(Æ%?&¢h¦5;D§.þ{°„0\õ¡5®È7ÔûKÑÆôWTX0|IEˆ|Ê.¯IÛ¯ÿþï}Çö]F­Å]Q܆©bÝm{©`˜òø (ØüõúME“\~²7*Qôæ÷T ¦·§jØ~†?ŠuÏF&®ìY;~°g™uRŰNæþ(¡,~B· ¥¸æâ_ú÷â<^Áé%õNßßüû¡}‡î#M=F Îõ7îÀ¯Ã]Ñhî2ÑÄŽ«]6MFFÇ¿øG}Íq9Á>wÍS-î­õ]Ê¥u˜ÃC7¤s1¬Kúw{¿ü14¤;s…ZõÑ(¿-S6±hfæm$‘ M[f‘”|³àö©ôÛ§ØÇi£±«’}&ðߘÿõ–‡T£<¼ÇpÞŽk£=;–.‘á|J×XºtŠb Øv™óر„(9ôèG0ž€9}`ˆìLÕ6¡¤¢’²Ÿ¤ª ÷iôöïTÞ&åÖÆ4m[^>§’Ø¥¸‡Öš+ç^C:Ç9AúúAei‡*‹Òúp1L•zÄq^×÷F&ž¸|çé»Ï…Ü ¶Ý,¶#{5îtö4NâT>RÊ•ð«‘94L?‘K’Ä·‡ë­œ$[e[ÒåÏểê¸Ó,ÎcWΘK’ÜÃúxQ ':Y1͸žôòÛ­Û™Nú¢TŸ¯¯ò¨9VÈq+æç¥k,]º E1aL̉ï–ÝE¶8ÓÆÑP*#ÎŽ-¸v±AÞ)ÎtO^ýErâ¥od¢…­55VíÊ“:„І¬¬~4oãâÒƒ¢sqÜ.6uf—ÆòØ}}3§]J´‰+àWS\"ãÊœ1…NNì«ò_×—èˆ-“ dÎ t§„ìC½°&ÿâ¤p3 ~݈É÷ÖÝÄñVd1ÒÆ\ŽJ ¢ï2²¸„Uir`ôįŸþûúÙAaÓ½×Î:Î~;U—s:YsätocYæ¶T… ì{0ÙÑgì¿ÃIã]šÒãTþ^tø'’|ëó-NSâuÎÇKG/ÓÀhÍ®Éù/Ÿ¾zù$Ç#83Ù3ÔžUv%òç½ÅÒ:èˆ.Î0®Žë<ÿþ£…[p„£‘nbïdrŒNß@ëž K“ž³µ f;¤ ’f]̪ù  ›Xó6’H¶¦Qx›žÚÔ߸©š9ú+©à‡—NP¥}+$IEv'ÿ#¸u–<ˆÐ¹ò-¡K¤;ŸÒ5–.]†¢È0Ø D—ÿ@Q]„g1Œ`\Ü@NìÚ…jÂ}:†þÍ+ð¦à,îvùZL(²£Æ;ÌÖÔXµ¡¡ÃŠ‡ÂŸ»ÇßÜi=  *xõ /÷PÂlï$æ¥ 9ªjÊrDÁýŒ _8•m¥ÔcŲ^5¤d_5|´‰ý·,Gpzž¥Ò™ýE¡™ÿ‹žÔâýQ/*¥á|çÒ jË;¢EgOD GŒ(F^M‰™rqÔ1P‰ "EöçºéÍ´1=Ûõl¬úœszRä.;Ûµãñ¨g‰×7XTGo^¿tdÛŒÉÔ¬YÓ¨S6Ú›É}q.áiÕYÜYfíÇɘGß–t,üg_¹¯hY¸¢ËÁð'ëÏõ\6¢-þîÏÃÍ¢Å&2œOéK—.CQ dÓT׬՚éuÍi+rùˆÎ ŠßÞ»’6vÁ$a³:‰³æZ*¢ <ü4ưٛt/ÁYTˆ|'~±m_ø0e9s c`•ªÚÐ×OˆÇvd„Ù¥¾.RiÓC{¬Áô‰KùEÙmJÛl59 —å;-e[)õX1!ã«LnŒ…ðF­ûOèl*XŽà4f‘¾ ­?tÀÁ6î‡RËÞ#çØÏ7’ãgPõi‹ì_"y?5• ÅòÈ@-|ó3øŽA;Wn¾õðÙ¸uÿI:6˸³ÈñۃѶ´c!î_*·é2hÜèɱtuøôç‰Þ¬¦8'-سßiÚ¦ÊmzëÙÛ.-½u]Á:Õû“OÜ–yS£ËcDÄ4x½ÐÕ5=EµÆÍÛtí7w•ǬñÅ]K‹œ@îMð\—÷ð#Ù¨ý ÃiKç~‹³‡ù¦šÓ\ýç‹ù øŠaÊÓ}>DeñmÇäG ËLLOóšþ_¡bÓNšÓ\Âm§ ªà7×H³.f2¿¡,ý]ò‚6±(æm$‘ M¡üèd+ñÕû‚¤b³NÚSœç:óÞó·ÝºàeXj–ÃÔcHx‹ËlK”ß~0ÎyÆš¢fZSmW¤Id8ŸÒ5–.]†¢Èrtc×ì‰8¹{ÿ‘5[ÞË7nÕ¡×à‘œr˜G0ÑÕIže‘æôÙ')ÑÚf .4Ë4ráëÈÔÜ%“N#áY¢ÓÇÀ*R±ÐîpLœÆ0¼£¾½¯¾½Ä¢Ÿâ}-WÇYVhER®€_SIÅ_ao? z°“%œ72¸³Ê—©¬i¶JÓL Køï¿4Ùµý@Y5:¦²¶ ”FQí3Õ’úY¥ÕX;ç±å>ÊÀ-D¨ÌOÝЇaªÃ¬½‡‰û Së´~,çI¾ÔןCì÷bwFí”}8€9Fœ«>ÐÈ‘ú«H ¥Wٴǰo6ëØþ^LMËh1õ'UèÆgºuI«ÉpiMš3] Ã&Í̼$’¡i‹½ÖÒÍÂºš¯Ž£ýx{;;‰‰ çSºÆÒ¥ËPnåzöÔŸh9´#ÃØÂ8ì¨jÏ׿|ÊŠ:üç›°Þ¬fŽëׄè 䢫ü†2õ_5¼Ê¢$œ÷2ý­ƒÊ—‡ÇW°Ÿ  lX,›®—0âÛ“4Ûá8=¤_ÂWSë:qäPåV©ö¨ÇM«tµLóM:¿ÀhXåÏÏr8‡ÿpÿÚ_g> ¨ÿjÕG7~[mGqþ«wŸ¶;»Ê~GæçäWéd¶—%|£jüäºÜìL+³6µI=nZU¨ýcšsÇöx†ßù÷»j«^ƒíMLš×þ:óAh@ýWLÔ‡ßn®Ú?¦5üÍfÑoïd1 ¡! Ö(©;¯V@"Óª„†´òóóÃãSkºT‚Úÿ ¤cZ•‚ÐP<7;S ÷’³Pëeˬé*@¥1­JAhH+??¿¦«@%€ÛÛõ ŒiU BCÀ#Uhxåߪº ÆI ‡vT©†z€o( „†€BCÀ¡!àÐðÈÃÏ.ù_üg‚W…m…€€€€€€øÅ{A'pzqßP† †€€€€€€€@Ð 5~¯¡žž^vvvÕ寯 ¨‹àÈ­7ªySžªS•„†¿ìNLÝJ‹Üuôâßÿ~Ué8pÜd3«éƒ4jºRU‹$‰=ºz;мì+Ãjº:µu\´ZŸµ»Y/‘ïô-Ïr–ú}Ô0·½.¢;Ør;R‹S&ß°Y‡^ƒFM4Ÿ=®^i•®JÜš ªŠKÞ_ºêÀ]ÔÓ8hƒ]OöîD¾ ÓµÖÈ8aÛ jÆÑv¡ªiZõ¨žqFp-ä‡3¡ÖÉí"6ïp4àÍ–oØ®ÿKw'ýf¼MF’‰ºº ,–uUW¬Uѹ¯lé%ÑœU·)áʤ3I;çh?];WÖ11ßyËe§çF†,êÕ\©ðíã¼ÜT4hwõ׳Z•lÚ,@[7•X-½I’–K¾çØ*sÆjd9½à VÝ=ÙH‰¡íuQÕìÔž@’%…ŸÞ<Î;fcõü`’U£ºñ¢«ö὎û:o?¶ŽŒ™<¯k6I~O™wbTBNÅ…H QõûÅ[!Ÿ\awqÔŽX£6ØŽÒÎ$Š ž_²™•¦ŸeÊËw$ M©k}[eç>Ú^ªFÕt2/Îÿ+=:&ýÊ£·Å º ™¾ÄϪÎ;’ÿ—¶6xß¹‡ßÕ5'Úû:oÌ;sü¸™²íÐ¥û_öž`å¹|Jëš¾"E’§åügc}^=ÈOlž ù(qJ_uvUå[veæ5Š›N×|j¬‰·¸÷Òs…žÓ¼7L~¸÷Â3¼§ñº v]K3,/Ú?µßQÅ7÷o=zåáx«A­—-ÒmYEÝò=(SÎ#ÇŒLÐ ú¾ÄW…$’tõ¾Ì±•çmÇâ]•ìœYX¡ØzR LX¬¾ÿì?¯¾f±XtE’ù¬MkâOÞþ¨Òu”¹Ç™­ö܃§î'Ì‚Í÷9=°ÝÚóäÝš ¡Q8k:wÿÄCMìv3 OÊúãUqÓž¬ü–OnZ«%%†¶‹Ýî7æëä縷äìï£õ½Çdoî_sÕ&ö`ç¾âç>–î¢OGûn;qûƒJ·ÑRŽarJZ÷g·­KoÁ3«äHÜÞÞŠÜ+öp›×¢FèzJ’ÎÄ­ÝqâÖ+ÔjÀÄy^ãÔÅ üÒRÚÓ^Q Ù!4¡Ùäû­mCXíj¦½¯NF‹§Ò7P0Ðä?¥ëV'ö!¶|Ñý³Jýo·òÕÜ” êå6®Ð¨ýoäo/è¹…F£=sÑó$ùõÊ®í™W·7ß×˨mU·HÔç¾t”¿—HR{¡®¯{ÎÎ^®kõ'þ 5• TSh8uEöЉžM”É÷»8¹ê³¢xõ›{äŽ]+Z£—¿‡Ï³ˆqÜ^™J,I³t{èŸàÙQµà¯Ýó¬Öay6®žªŠ"‹tô'±ßÓÁÙ[‚óÿ¨¾ž¸CËE­:tÝmtŸŽMU¯0349a²m¿·ÂƒÕF. N-Z‘°ß“¼í3sA¦ˈ›AlÿðÑu”÷òí}cRÝ»«cO.XÐÖ*éò㪳Jk}¨É ¥UÉõñÙ«äuÖ~³õQåäø´O~ ÇŠSi7¨ý“ÑÛ·-m£*ÏÐQß·XöÙ•Þ½º´aî„37¿Ö’·_ý|bjñ S9DæØ]r=¨Å“ÍæÞ ¸M Û«þ{nå\«3“¯öšV>†¶‹ÝîcxMßëtl– úžf}Æ-éF«/LìÁÎ=û Ž ?â-‚Þ{ìH oþ=bsUìÝal7zP(¿·‹?Ü*«•Eðzúm³yàÏí{×¶áôyìo'UÅ.Åe‚ÐŽE ÑN„ŒIò‘‡OÁ’ƒ«¹9|tÇ©” ‹n¬cXó9BèþYu>ä†Í‰RòN_5TEx‡$Š ^\F]¹OIòvÑûg;‹=sÑó…»L½î¹nKðî¤üþÖÁ5m®†v•ÖYÚsß·8Ú ÊŒßKÖyãÔÆÇÑñIœ?o5_ÏJî,´)+7¨¦Ððø¶¥¥“=gl@1á­ã>_á3¦={`m?Æg…¿î&dïN%ÆÆ}ôÌß™ÞTÓfÒ GžÕSUQ˜‹êÿï:®sb•^é¦d²\Äæ»/òã¶ÔõKî}Tï?fÊlg“AÊ죂¡ùÍûh`ÙÇÇ7wkDM÷÷@ˆz9Å Åö]GiPCÌÛ—ïZª¶Óè2Æ®JâB¶7î·Ô#"Øk¡îáþmm‰Æ‡6ZþŲCº7ËÏ6 õa¨'eÝâßÚ”žYé:**µØ+gD[v¶v#½<Ñ™ææ×Z6ns[·¦|×5ФŽ(qÙ69èÈn”BÛqkQà<„êChÈÐv±ÛS2Oª3ÿ´Ef—hºó¸|íŠxèv!QÉ…+r¸‡p‡±kVé‡Wp==ú“;%vo{¸Õ¡Ûòøç-Ác\èéÆôâ9c;ðúÇ=@7 9zˆ]ŠË*ÚÜuÉÔ©¨—EÌÆ›õoÌH yïêξû0xƒ]÷jÝIèŽS)(ÝXǰ:æsDM±ô?1õ`ŽP\ÈßC¢Í¼ƒcy©Ï| ÛnSåô˜Ø3Ý8µë»[ŽnvzËA–Õ²I}îcØ tD{IeÉjyÝð¯†nT/¯»ÜacèR• TShH>ÊŒÜzøâí§ï¿œ„²Ýe,œŒDˆ½[GèÈĉa$A  ¾Ô® »ï+z(Q‘yø—öþty0Å~FNÔ"¾üû+péì–¬ccóÛqŽ k$8ã_ùÄö]G­Ø¾"aÏŽÀè[OÕ†™:úØhWɆ~²ôaÛÈžÜéžÛ>\úííŒúGµ¹çò™ÜÝu¾×&ª?S=) ¤ë¨3-)Ë5 ¡ææ×f£ÆýivGÔ””ÕÌ̃zï[5^àÝdÞ[ŸÅ__^ ¶¶¹`}`$õ4ßûƒz ïÞ}±g.ºqþB‹«»Y<ÒŸûÎÐoP:¢½D½®ŽëàúÌmKûâõçzEøŠYªrƒj Ãì#[lؽ¥{ó†Jò8öR_.ÖY„ôË&Çq§tsâ„ví¸oŒÂã(E_Ÿó߈J Že±h«‡«µÑœºEΧÚ›/‘Øþá£ë(¬ƒ—-I||fìàkÃó"ã'‘ä_K_£/6úe ˆ¥‘ûa7ö}gu#—¾ï›Äy¹Ì´Aßy§ë(jÀ»€Ð^®óüüµj?‘–Úª…Ez¡E ³ÕtMªMÛé¶ûµ…÷;¬u,ÈÔ ~;Í«E TX B;õJŸ Iþ^=®Ü!œ[áÒo¡–¡ÜI±{;&îp«m„>¿)øt4§SJ?¹šËëCqK ¹îÕhMv sE(©½¢"šÏy³¥ZCC:Ò4P H²ïî±ûüütc±çºò…öϪÓpܪ a榫¾%MjQ~§•Wm=Ì}˜ÐH’üâóB1 }é,qg.ºq^‡óÒ˰ª["¢Bç>6(—`/QOÛ¬·x8#eÞÈâÁíŠò›²rƒj ß#Ô^YEMIŽ(øß¥ärïÆ†ýÞgÙðÖèåňyÓ#ÜÄÅ‹4&®Í‰]8ªKùï/ÿ9Ÿ1qñöꩪ(ößÌÒݾ›µRîC'Çr¦ÑWÖ!)3ÇêÔ\±øýƒ3þHy!7¡ù‰í>ºŽ²‰>¹Üdt¯ ˜UÕ’Š7Z —Ü? >È -;ÉñÒ1¹„ŽGMÖ-œºw/*wXƒ¹žBè:Êe¦ÜÔuz.Ö ½º´1˜ÿz¨Ví'RÂ0Ü,›eVÓÕ¨tm»ÝÉ‚ ïç€0´Í!lfZÑQúcÕî`@ßȪ¼ªº˜ÈO)=„åïºÌ·|Q¯ú‹>¿ytýÈúyÛCí¸‰t{»èáV‡>Kë:]nêš³}VŒjƒþ=·.Tnúai–"Ÿû®|±àèHv'›òî>ÜqÕÖU&t \¢ˆ¼r_„Žn£ðùéå’Ç:bÏtå íŸUJu¤{êÚ–®ß¶o4îP¶F²ä뛼„sF‚âuã«û”žRÅž¹èöüÅÖJ“V³z¹ë¨ôßýZÆTC£Ø*rî£Û Òr½Ä~›Â>XYgó4ÖŸw¦Ð¦¬Ü` ªBCÁ›N¨ö†XúÛìxúU¹MŸ±fÔö›ÏŸ›Øël uÐÃoûNôL^È»VÞ89æà¦­Ëcnÿ[Ø ç£Ù}¦’}ò~­½ 'ÉÇ« çfпފÒWJÚîqãÑg…V݇èù§ð^Ë14_"±ýÃG×Qaƒßlö³úýáwõnÃçGTþ%CÊ ŸBà STýô 'Ÿ@Ù†HÅË$"Ó“*ê)„®£T“Wlô[fìW Úu”E,Ár¯P± –»Ý¯-<¢µ-‡óe7Ê&; õo™lXÓ5-Cw°{Ïìdbà[Ä{WHÙ!Ù#Êo¹ñj×m™ˆÎÙI,™< B^­Eû^Z£goß9®!oÀ¡ÝÛE·šBw¯!çýž›×®²XûµìoàµßQrHòs¢íù‰»ý¸_„$x÷¡Ì5¯:t —´<ÏÏÝtír­úëÍÞŽó¾Òn¬c öAW¾ÐþYÕ”‡¸¦†o¶´Yð-n âm'®Ü¦÷8×–Ô4}¹”Ý^"öÌE·ç+ÎM ܾ.Øfý“’ì|«mt¨Ð¹O† *ÚK\Cbµ<-[Ÿ\Ä{*´)+7¨’ÐPtŸ“×¶[»½lL\65[0gœ‰p &ßkæÒð™K…Òkê¥p£­,Î 3X²i 2r¦þDÒ™›Ï<ÝÑÄK´øè:ªÙpkŸáUûõ¡†Ù,¡+ù˜¢+›W+ËAp–t”®£0¬‰ÁÒ(ÎÒ$™y*΀¹ØÚIìÞËO`XªÎan»Øí>dkHi Ödqö¶ª®cÅÐìêÖ¡IG†iè-‰Ô+½ÛÈËDüVæcØÜt{»èáV#ûŒ”-zJõ®S˜®È§Ïû¡íɲöóï>¬jÌ ¡;~éˆ5™´æþ ‡¯ÿ[ܼßDû0Ÿ͸«þp2Ì=2ãÆ{Õ^ºóhpìô»Ó3Ý‹3»)Q“ÝfîÒ y]Î^wYÇÿº“Öƒç&¢H3„Øß‘ðf¾ßç]yý8s»ë9óΚ¿N[Ïÿòõ®aÈs÷'èz¦î’b›ÍÇ^Pª‘êý$ºí%õv|èf÷Ÿÿ¥I~#Äþ°rííiÕ t»¨ƒ¥“’2û7 ²%Ϙml“סÚ&ÝÑ*%þI³äZ¼wdúù»oñ¶CìW/›ÔŠ3_üÉ¡/¿oñI½p¿¨ƒsX i{ÚÔbÒì'îWÑö-ÃZ³'[sÙ~_ûº6LÊe«_E‡îŸÙyèz†‹þ±’Ðd)/ì@Z%ŸV¸»lì<ó“nkR²È[Ë'˜§:ç™Rs‹w.¼·2%%°‹êÇ›ñ3¦®ÖÉ P§B:¡·ƒÅfãÎ2}¤“žìÝNMŽ¡Æw‡$í\Ò©aás–Óô)Y3.±¿Zö{ÔDÏ·OƵCÏOùÌ8Q~<·Ò™ëX ×´Ë ñÓm\-´¸_u‡P´WrBÄj„†3¤×O#PË5ÜÉuwÐÒÇkíÝŽÜü¢®©;×Ë×¼'ý×é>²äÓÓ³ž¨ïW;éz¦î’¼M_- ¾7¯Ú+V)è¶—”Ûñõ:ó{k.„+"?±¥×âž‘æP­Ð@g…PìÓBWöÌYÝwZöÑóR­;ö…ŽVé”4—,Ø<`w¶o/ ¬àáù$W„ØÑÝÉ÷ǃÅ{íO îªüîzò „vWE‹ªš4û ÁÿEv6 ± “rÙTÑ¡[tç¢ë®ÒÐðK Û§¨‰,?·ê_×Ù6«WcjZË¡iœ_'B>æpªØLË1=+ B´‘ ÙbVŽjÇÏGS‡î㺰ÿ+vÐß„<¦s.2xG¡žnGvzG½õ~žÚ¿Ü…C^ð]Røñå_Yè>Ï>ïÆþež»ÔK€²\mºÇ¢K¯Þf:Nxa÷Ù„n>ÕM:¸²zs=ÁÜÌî·¼øNèWê.î•{Óöÿ÷F ]ÏÔ]’¶)yÌì²Ç™¦Õ[©JC·½¤ÚŽŸ¶M¿à“ë!rÛO­îiÕ tö»æÚÎ5 iÎÛ®}Å2{óý(»¥{ÿBšVQÛœ{UI+*Dôh•ŠÀI“:S{óâMkµMºë”^U¢;ù®ÛòÕ7oçÍ¿ÖCæÕɸI·Ÿ„@6›¯îŸ¯Õ½½¿¡¯Ò/[S*:t‹æ§ Ñõ /4üÏ%_#JÌ0Qzޱà4ŽáNB(mèP?’ƒ è~í‘!›àA@W‡e“p¼€;•…gY:,þr¡!œbãvZ¦ëƒµ– 7öíäTw½,ÛXÿòû.½®#îï¶7?­w8qRéË"j¼ósʽN>Ô9i¹#ÄþŠÑ_§¸¨Ñ(üð0g…ù¤ì)9ì_^¢ë™ºKÂ6}·Ò»õî¼:ûŽÝö’f;¦MÏô<~˜.0¬å=#Í¡Z±®ß’„Î/Ò¥Žµº/Oc›ÖŽnécІá3·;çÙTac¤#z´JCð¤éÀ?:!Ö#äÚ“†c¬—‡.Æ~/Žîä{¡•UÑŒê%Í~Ò%qïß`› ·?4èoè´ ¡cÒ/[S*:tÓî<"á ºžáↆ_–=SÜØ±Â ˜„Ε+b.Â)p­’6[¹ë™«ƒ禪ɼgõá—Ä~µ ¹SEÿ@¡ÜKå?bîÀœ^§}½n²ø‰íÑDc€Ž8"Ëåâíe¿NðáŠêÝ'…"#†¶gê.æmzÊ<ÇâphT¬RÐm/i¶ãº/ш²7S„nò©å=#Í¡*Û@wÉ*¸ñúëÔ‰Ö¡£””çM°š ‘ÈÑ*…ò'ÍÎSœ§8#âÃݤ –Ëå±QšîäkˆÐIÎ}—ušTC:Ök¶ÿÎÙÜ#áö´C½ã+°lÍ©èÐ͸ó”…åËß3üe¨R«ÿÄC4+^û•Ë›ý¶êX’ëøÍä¾>¿}:9hš{â\ <û…«†1g+§‚uð´’éuZÓ{L[ôâÌ_þ‹!Ánº~0 Ï\e1¾O[UâݽSÑó^7}TL{—9$LëŒgÚætØÊœ^w½Ìt›¦­§^.}x\÷11WSl¹×ÉmÐà=Üô_§Ì#­6Û£µ2úôò¯cn¨•7®gê.¦múÁÇŒÈS­¹Êý4ºíE—.8Ê w£_­ïºÍ*ØYº§nŽÏ\/ŒgŸ˜¬ywÆrî>¬ItG«äsVù“¦IXæêÙ:ýZ+rN†ÅÜDº“ïÊÊ×ëë«Ï½×P{^-ü#ɤÙO,¢OYî¢öãß?­µSY}©ó²5«¢C7]~ºð@šžáb‡†dèä)æA‰fÛ¹ ìæ³ûŽ3µã¦¯[4ÌZoÈòBÞðD—MPEë ²ìdà:·:îÔzêÎOC,3ê_§Å ûoãj“E·òÚöa¸ö¤céU£áânº­˜ôu5kËþ Fºô:kªÿêÑS÷ÿÖ‚#×®±?•§½wÓž®“œ|oª©ç´[éËê_¦6~½qÕÌœ[ïåZt4~ÆÎÃcx³éz¦ÖãoEù¯>`Ú¦¿[¶Oø>Úrj'ºíõsÛQlÏÔ.Òªè>Řœ2:νíBðîên 3Ú£U€ØýVè¤ûÛëp·©§ï}oÒk¬S<ï;‰èN¾JÙ‘›W{ÏôXÒÙÐ%¬–™“ ‡?_d›~³¼.¿oÐcÄëƒû'óﱨ•§ƒŠÝtùiô=ÃÁ ã »²ª•ïC‚ã&Í´|_‹Uq«„V©n¿ùp¹/àŸM°Ìòu@b_û–ª1É#a’ïIà,1ùé¦ë‡¦£l¨?1sä‡.Ú˜¾HúôºŠ~›Ê ˜š<_4ýWéú}ƒ®gj;úmM»MGžÈYrj'ºí%>®uBéb{¦–¿YË7¤¢]C§+çþ݇5îh•xþ:i6c2Fô‹¯ÅŸ|Rí1ÚQ¶*W·Šþ‚ù[ê/‹Õ_&ý²5«¢C7]~iv*úžac‡†öyeûñéB%Õ¿ò Ö ठªŽðo(kël¾òPTÔ,ùUa[ŸšÎDOw­ «©úÔ¡øA@@@@@@ èù ÷5]‡šDíÐÐÐÐÐÐпx è„ÒÈXø eðË’=4”þ›+ú‚üü%gƒí×fþñæÇµ¼¼ú÷Å„µ`h¸YKK!/OôÓï2ûÙC]S ³.'6S¨¼*Õü¯z∛‹¯Æ¹‡ì;ÿ?ÔqÔ,ð…ÚrÒëªyv$8ráþWÕÎuMW˜öã4‰®gèò×]t-ú—¿óÀñË¿©u0~†ýŠYZœï¬â÷L½y•%´­ ¢O^^é—÷>;±iã®#îh 1sõ[ªßÕµ¨ø1.ˆ>¸ž©e~¦âÒïDÛ»îùiZmܿ܇“ëõ­©Ms¯87¬®&Ñ¡;Z1î·•~â®3¤ÒÅï'Òt{íÂ8 qñ@¦± ÓQ&ˆG&×+³%?]`B!.¤'þôvÑxáé¹)GÂ;£Çvf&òcL¯³¬Rò笳 jÛ€xs3ÕaÎŒ6y™¼ïkÛ3 ùë(ºÍJúÏavàÜušÊ}~|z¥©¡FË•v‹Ð¨Q§•ÛÐÏ´2xßô‹ 3g›¶54-¸Òׇ¹{– ýdT{ bǸ4yhz¦vù™ŠKO°Jìš~q6Â$Á9Ï¡ï»fdLHË«ñ¸Ñ­‚˜öÛJ?q×R é4û‰4Ý^‹0h< íÀ(ˆñ(+ sƒÑ¸‹ì_*É¿•¶ïü½×E »´ð ³Èûº'ÃÜ#3n¼Wí¥;¯ìËôK®Å{G¦Ÿ¿ûo;ÔÈ~õ²I­„ ¤ü›æŸpøú¿ÅÍûM´ó™Ñ 1®ˆ}àøo?´×{ubÎÝïM´Œ–„ºpŒ¹_ÐïNÏt/ÎìÆþiÈn3wé޼ˆ® gH¯»Ž¬³+l=xn"Š4ãü°v¥å¯ýèZtl=ÿ÷@Õ»þ¿½s‹¢úø òšE¦ùŸ¥d!¢˜iÈ+ø ‚bŠÔ– ïÞÓÛ*:¿±$!½ôôÅ«wþá ö……DtžÈÛ ‡†±e±yÛ×$Õ_4wIhòÊYšÒ˜Ôyâ` Ô„¢sÓ’7RˆéÆEúšZCÞ0rù ¹®•ö¦Píš Ÿ[^ôÖ«ƒÐìwÃØØ[ ãÿŸ°Teç5Æ-`Å/`·õráüOBWrÒ¤.ˆõA(HŸ~B Nw.ÒGáµc;±åÑÉÄâ¶LÐð£–3šÇu©ÎŸ]ó:’¿PU¤Ó2ôÊ3 êih 5°M†uNâþÒ'9éZåv(™,ñ×€‰"}àc×}œ ª #,Ó“ RŸ{Ö#aÈçx‰Ö àÈXmm°PýкÓ[%ó¬œD ¶æçÎÉ>;·8&˜wÉtº é]ú#‚$u·• €Ôrjˆ†O¢.i$ŠDwy>ö’ŽÎ@Íg÷ýïÎeâ¢ýß_[m¸nî(øýÔ†hñ÷ç”ò¨ÅæSõµ‚§²Dú Q¢Oÿ6>ªÿ’3Ô!ÏSDm3—ÔòH7³·Gépï\9™± ,ò9™£?=ðKžý8¸ZîU5f[2µœ¹Ü,g;¦èÄUeX•£,ƒ*Ï\P5rM¯ˆr™7I <¼ùC^‹Q~½CëzvÇfŽŽ„Ì4Û`næùb/£Wàö…\O˜þ•Š”ëŠöqrpC•a„ezRAª@×Ìö¿TkÆO«K„³· fªToí:UIæY9‰ ‘íkÖªû‹å¥pb!ß>óV*Û®úÊ¿Ã&Ï ÈM—½ Ô¡(z"Â>âòc½w?Ž?üR÷.ÒgÈžu7-ÊyåÅ{F½5ÛfÓ1Ñ—&Ó²ìöjÛÍ0fŽûŽ2ñF”œ±ØÅžâýaQ!žçp¸¾þ5´ePå™ ªFYÓo¥E:U]üKsä„÷ÌwšK¿ü˜ôæsÆí𬽱ÒRã=Û¾² øåßᆖûr„·V˜e…û8T„eÔ‹žTyîÃLç“J%ž:’g*»6Ô z+¹~+•ge1‹+v%¥û¦4\o2åC¯lB®íW™žµÎ)¶éÙ8›Àµžg‡†VHGø³«èn+?¢åPö2þÐ0· ¼I¿`Ñ4e¥—²Ä»ëŠ£§žíš<Û5Âxw¡ü•¹>Is%Þ·)uA©ø+ÞE}¸ùDb»Ð=^ªv]^„b›Ñ ŸãÇû#çH“•iûWÒ—3TS¢,Ógš^ ¶÷rä½RsÚòä¢åÒRfY@Ñ>.Y;T—o5£'DÉœ#¥%ñìCUC§·Êõ[©<+›ˆôŸâ™í)#×ýÀóþÝSY]@ug:~‚î\ê ²Û" |9½$8ÆûëÑûÓæîóÜ/ˆÁ`0 F γåÑý5”1 ƒÁ`0}Œþ‘)_¨Zƒ-€-€-€-€-€-€-€-Øúo óUµª„çØØØØØØØ/¸A42Æ”1 ƒÁ`0B˜44ì3¯$Ä`0 ƒQOÈCÃ,#£ŽOÏG`=¸‚P‡ž|ú ‚øMW$ƒ?=Ÿ–´·æ7xsŽûšÔÆš]È™J+§ì˲õuƽkáâ¿Úeª JR–árßæp (äÌeÜjGã°ëbß誼ú"n;D`‘®)ÒۜʊûâP]ãa`ºÀ'*Àl°òµï tíäׂN;¢®ÙÊ)ÉÝUöÍwMÿèŽfæè³ÚÝHK Uê)t‚•"î§ Ÿ ¯.¡GZëmA©[Œì†Ÿ>ÇÔ[UBA§E(ý¿ï'M´Ã÷ÄO®Ý–Vp¸öʽ‹‚b‚­^íêtJ+yršÉ6©¬G–å‚óôUz‘:Èo©º…+ª—NWz/ržÆ90‹RÎX<Šï±>MôÜ8êenKC‰ß§Ž¯sÊù/r’0Ëu?£ƒÂ·¿¢äÌe!ïPn¼¬§[^!ÚN*Þu"SS”·—Z‡ÔGì-ŒŸ8î7c»[—qêTÿ’|díµ ÓލkºÞõ[¿4qìpÍ¿¯V‡»ØèqNØ(§Z=€N°R$ÐåyäOØ_·›2Û9Åñø·ÀñàüRŽÊÇ…@¯E¨üÿHšH‡ï‰Ÿ´—»\aÿEriÂëÚ›Nµ ¬Šz·Zò@i…S$µ®r”ÖëžN€ëø+‰ïùñ6ŠçGìü¶YËÐ%!ÇérÄšÜêký =2rXÄImçs×o-þïÏ~ç#Ÿ¸õ G‰ÜWr±9ň2eáv ª.ýþè¼àMbÙYRÛødŒ5+%Þe4ñy”§ÄæºðÇÓW¦~䓲Þq_øìÞÅÂ䔽5Wn=dð¾[DŠÏ»ˆõ¤_Î\·¨sšÈ_q¢SEüûuPoJ!g.‡½E›úÓ—æCú"ÁâÚd¸\¯n¯Õ–9%g”hb{ß=k3{=½òÌENMQޞݥöÿ¬ª5l²ýfˆY¤Îë'¡jÑ“v¬ø\¼RêÐ Ö)á(XPW½ ¬ t<£Õ‚uƒ½:N-JÉÓë“G[Dœ4ŸÕç®Kß_sù¶Æ(“}¢Bl‰eAä'_T†UOPß?iYówÇmª –%K Æ…h­hh«pR£¶žxhø}8×ðÄé“ý:<ŠŽ& ¸2o™ë1ö†âãqCç»–°8.¼£OwÛ¬¸^\?^ç~C®£]”9'n(o8(õ@Yn1â˯æû‹Ö½¡«)¥CÛëÏ~^»¯4Xá`7Q~áå…»VÔ~ãD€Ã‚ãŽg­xÂ÷ýŽÄÆn.{E‡ÛúÓþ¥K¼í8ùŒ^ÿŒ.®¦M4‡ÏÌÁ3È͈X*`£Ø=´€`J!ï#4o†W7H ÿ Ž3Ý#çµ°(9£‘´À­D×+jSµ †^yæ"·¦(oO3vEcªÅ„Áp¿©2Œ»^ÏS…Ðê³ÝmÇŽg›¿€II=RQ9Щ¸BÎC¸br¶`Å䯀ûgÕ.úu«E:“æ*߬i»+£'ëõ{ÐTSÀ= ’/*Ã2’Ã÷ÄO‚à«›|؇ 5´Xº6Úubohß(­ºÖV&©É¡¶žhhø[pûèb]™“s—¾3Œ÷ß;±æ9ð¶bìyƒ:Þææ-­ñkŠ#Œüóø‡âä„ZŠb™ásÞ—#é¸ãq4ÇVpkRƲN¯ÝöáxþÿZc¬¶ÁþÐðì¾µ¢ãzSÜò ™ç7²jô1„ƒïgí÷oþp|‹¯ÅʶOp™g²ÎR¯\!¶Pò¾Àír‡–øÚ9’ÒŽŠEß­95\¦4JÎd¤,ð0Ç¡výé5èIdò-Æ@5EyûÔí™#Í\-Öó+pu¬2«§ö–¢Ý¡ë>ÛÝv$žêpûÇžQÇåsé+…yÅä{©Æç>©ÌjÜê¼ç0ôؚÚ¬”Z(D7[„”4y™úŸ–ß[ôuÇ 30ÝUB%_T†Uw$¾'~R ÐÐlQx |$´\Ès]ä=““;VizÓ¥UWÚJ'5Ôð€ µõ„Cû÷ô¶ÊI–¢;îCÈÛˆ­¯JMLb:p¹òŸãR#w²GÂå]jRçæ` ÂÍÆ’„ôÒÓ¯Þù‡+Øï'W¾‰¦Ö7Œ\>ÏO0ZlþüSž‰nv6Öb›¡äL‡Û¸ÛǵÚòP¾­Ô×¢;áëôwsd]%g,²(u(øæj`ˆ´AÕåí5޲÷·6Î5t<£Î³-©ûlOÚ‘—9¸í­MU«]m+TY>eŸ't‚•bN¼bò“’yKLörôrŒ¾œ¸¿.¶˜:ídq<•Xzt¯EÈI3¶,6#oûš¤úkƒæ. M^9‹ÿ,•|QV‘uøžø oX`"é›°òÁ(  D©úÓ¥UÚ¢’šÌð€ µõˆ¡á£ëZio*\ [ósçäÜ—çr;H4d1‰Aœ„6dzBèíš Ÿ[^ôÖ«ƒÐìwÃØØv ú ¼vl'¶ü2Ú ™¸QÜ– ~ÔrFó¸.Õù³k^GòêK:éZåv(Yö”œ¡Èµ@âý›0Û8V´KžàAa1&‚ª)ÊÛ£nÀûɤ¹†N<è}µiBÑg{ÞŽZC l“aÏj74¤¬ºèÎz$ ùü/Ñz«­ ‚‡`ªBwZD2q[ÀŠ_ÀnëåÂùŸ„®ä¤:ù*”aÕ¹ß?ñ×€‰‚jqG ¥µ¶]%µÎájë ††O¢.i$ÒÔDx舙‘…Af“Fh>¾ñcuÑFû°RÜ üöQÇ<Ý~ÔÅ$Ô!Üw ipÅ”h+b&„ñ2ª—ŒÜåuŠ—ttj>»ÿëw.ËɵÍ\\RË#ÝÌޥýsådÆ2°”J<$Ï>Tvm¨¡Ó"r[S*inŸy+•mW}åßa“çä _b‚J¾ eX•ƒtøžø‰ñžmßGÙüòïpCË€}9Š?6U(­ÐÚÊMjÈáJëñ‡†¹eàÝùË–g\®ð‡Êäø‹Øî?Å-2Û-Rê‡úd’x§übäkJêÀC÷ÿÍø#Ë“w5MYé¥,±|ÝÂzÚú3˜ás<ãxäéo²2mÿJúr¦BÑŽïåÈA†’3:žÜ7<_Ñš"½}¨UpºUðsÔìy€®üZ ÊÓiktÜP+èT\Ñ@7(à)LjgªT‹tÙšRIó•¹>Ise_|-?ùÊͰjKÏ:Ê4§-O.Zþ|4|~ ´Bj+7©Ñq*ê!hèÃéô/îï>¢Ö]uÀ`0 CNšå!½†²±yŽiø×*QƒÁ`0 £ZúG¦|AÞ·qq‚æ‚ÈU飤,ð‚-€-€-€-€-€-€-Øúo óUµª„çØØØØØØØ/¸A42–~ ŒÁ`0 ƒyaÁCC ƒÁ`0ŒòÐ0ËÈh‡ãÓó7B÷à Bzòé/â7] þô|vXÒÞšßàÍ9îkRWkv!g*­œ²/ Ë×6>Ö÷®…‹ÿj—©â*]?º-­àpí•z3Å[½ 2ãrßæpÔúE¯]‚²@+§$wWÙ7ß5ý£;vš™£Ïjw#áZr¿–ÄÅï:~éŽÖ„y›<§1ÅÄm'Xä{5ª<Ó|@~{¡û~'¨2hKªt‚•"î§ Ÿ ¯.¡GZëmA©[Œì†Ÿ>ÇÔ[UBî­P¶ZßOš]9-·ÚÑ8캆BœÊŠûâP]ãa`ºÀ'*ÀlðsUºGÈÔ¡mϺ9U: ËrÁùBW×R2"0tßRu WT/->œ:®ô^äQ!¶¯Q\ÿÅäLÀu‹:§‰ü…':XÄ¿_õ¦rær8Ñ[´©?}i>¤/8ÁÛiYówÇmªàˆ–%«HæTî׫Ûkµ{MU%²@ÅçâÕ0‡N°NGÁ¢©vvî˜E¬Ñ>+pg£ñY¨gö÷ƒx5| ïµMè4«B®€×YÆj„@ÁºÁ^§¥ÎäŒéõŠÉÕ[i"Nš &ÇGgvDg–Ô6>cÍJ‰wýkÔ»4±½ïÆžµ™Ê%» JíÿCZN}‘Ú¬£&§FÊЖ:¼ˆ‡†ß‡s O >ٯãèh€Ë!ó–¹co(>×q1t¾k ‹ãÂ;út·ÍŠ+áÅÅñãuî7ä:ÚE™sâ†òÆpR;¹ÅˆC.¿šï/Z÷†®&…dVùfMÛ]=Y¯ßƒ¦šÂ €"êë÷m\-L›hÿž™ƒg›±T6ÀFq¾Ón€)…¼Ð¼^Ý@l&þÁW7ù°7<jh±tm´ëD©ÂÇ™îék¯‹%Y@Ldz‡ÍßFÀ¤$b—+±*{?àn`öP£û^Í h/¹}_ :eÔ:ͪP ó®˜œ-X1¹1 ä~ÄYµ‹~R½•IS¡äضÃú³Ÿ×î+M ÖPØ­Œõ·]¯l¨MÕ‚t¹!ÍØ©Ãý¦ÊP0îÎZÁÊ@n(´ív7§N¢¡áoÁí£‹ueNÎ]úÎ0ÞïÄjh˜ç¸OÂÛ6аç êx››·´Æs¬yw„‘ÿPœûRË Ÿó†¸B2…”tžp'|þnNòY 𢷽µ©jµ«må‚*Kžd|þßèÏù?¶¾üŽM@$@…j4~~tÓ«â]´—Lß—2êfU,ЉWL~R2o‰É^Ž^ŽÑ—÷×eÂS§,ާ+CÙÞJrÒT(9WF5z—R‡òˆoQ ÅÈt„Ç€?Ù{Ž[gï9žNUW)¨u¡m·º9ux!††B®k¥½©p5lÌÏ“s_žËí Ý«D“¸Ÿ)¡Ã .÷€èCÿë,5n+~ ¸­— 纒“F}ý^;¶[~mL¿Àûöèpd¬¶6‚©~h²½µk$·"ÉÑà˜`Þ%£I¼fÇŠvi¼¥³#DÝ€ö“I³÷xf?©D]éª=mìæ”áE04|uI#ÉPñj„‡Ž˜YQd6i„æã?Vm´+Á½ÀouÌÓíG]LI"´à³Êæ¬ù£µ^­Ù±L\Ê9¥ÝÎk¿à‹Ÿí3o¥²íª¯ü;lò¼€Ütj5ú6Ù³î¦E9¯¼xoÀ¨·fÛl:æ/ºkdZ–ÝÀ^m»±ÆÌqßQ&þˆ’3»ØS¼#,*"D’Ãõõü_åïÙö}DmÀ/ÿ7´ Ø—Óy?üŒÛáY{ce/ÅPPÈš~+-Ò©êâ_š#'¼gæ¸ëÐ\âhú¤†÷µßýõò¤Ù –Ø÷´žÄ¨â·0H¾úéÕÈòŒòT{!û> T ˨t‚•Âîa¦óÉ¥Ó.ȳ•]jP½•ŒÜV“Jš %Gm¿Êô¬¨uN±MÏÆÙ¦¨÷«Œzä´¨Žàx4ñZô:ç¸Æ{ g0Ó.ñ‡ç®ös¥mOº9u:à sËÀ»ó§zϸ\á„É—Cl÷Ÿâ™í)õ‘C}²I¼€S~1ò5%uî•ï%Ú ³–|e®OÒ\Ùw{v}}Ô6s>Ç3Ž÷GΑþ&+Óö¯¤/g*èvÔœ¶<¹h¹œïå¨~:Éóe”o¼j²Ý*DÙZ)t[Ë÷jŠ>Î @µª}ɵ¦SF¡Ó¬ŠºAçH9F<ûPÕÐi)¹­&•4JŽºøoþÀ¿{*÷6оœNG€¡VÁéVÁÏE?å Qk„¶Švs²œ:ð‡†>œNÿâ>üà#:z?_È:`0 ƒ¡'MŒò^CÙØ<Ç4ük•¨‚Á`0 ƒQ-ý#S¾ ïÛ¸8AsAdŠªôQRxÁÀÀÀÀÀÀlý7†ùªZUÂslllllllÜ€ K?PÆ`0 ƒÁ¼°à¡!ƒÁ`0 Fyh˜ed4€Ãñéù¡{p¡=ùôñ‹‹Hz>;,ioÍoðæ÷5©+Œ5»3•VNÙ—…e‡këŒ{×ÂŵËT¢JNeÅ}q¨®ñŒ00]à`&XWm1¦‚´€nµ£qØu RM-‰‹ßuüÒ­ ó<"6yNcŠˆÛNªÕPmŠ*¯ž@k+¿Ï*âɲ>Àˆ8@GIEÝO>A_]C´ÖÛ‚R·6Ù ?}Ž5¨·ª„¢•S’»«ì›ïšþÑ;ÍÌÑgµ»‘Ì GÑ/BÒD™ˆÒ,Bº *IŠvù.- u5zµ£ †¤¡aY.8_èêZJF¤†ò[ªnáŠê¥Å‡SÇÁÕƒÞ‹œ§qÌ¢”3â{¬O=7Žz™ÛÒPâ÷©ãëIJ’¥Ö!õ{ ã' —›´.ãÔ-$NéÃA2( áx‡rã5`½XðÛ ç­S³ŠÍ -çs]Ü/Ôì›®µ»ÑpRq|ˆfyõ´²vè>Kדe|€q€Ž’Šº<ü ûë¶qSf;ç±8^ÿ8œ_ÊQù¸‡{á]¿ÅñKÇ×üûju¸‹ç„T ÿ’&ÊDTf*Cç\å¡h—§p… ê`Ø94<ÖõÒ=?ÞFqàüˆß6kº$ä8]ŽX“[}­¿¡GFË€8©í|îú­ÅÿýùïÁï|ä·~á(‘6’ïà–SŒ(Sn·¡ êÒïÎ ^Ñ$«ˆJ»Ïêsץﯹ|[c”ÉÇ>Q!¶¯Q\ÿÅäLÀu‹:§‰ü%D':XÄ¿_õ¦rær8Ñ[´©?}i>¤/8ÁÛÉnƒRûÿ–›äɪLKe‚²€€&¶÷ÝØ³¶1³;‡açaçŽY‚÷åëÏ ÜÙh|êÕp\ D˜e÷Y9>Àˆ8@GI…]¯³ŒÕ‚uƒ½:N-JÉÓë“GÅçâUž‡N°NGÁÇt'M“ã£3;¢3KjŸŒ±f¥Ä»Œ~Ž5zîôÐD åÕʰu0 ¿çž }²_‡GÑÑ„—Cæ-s=ÆÞP|<®ãbè|×Ç…wôén›W‹‹ãÇëÜoÈu´‹2çÄ åá¤vr‹‡\~5ß_´î ]M ȬòÍš¶»2z²^¿M5…AEÔ×ïÛ¸Z˜6=Ð>þ=3Ï 7#b¨l€Ú¢ÚÀ0¥÷š7ëˆÍ4c`W4¦ZL ÷›*CÁ¸s-)¹ë#,ÀãV¢ë• µ©ZC*Âè׹׸ÛÔw`D…Ú”Y è³tj-×è(©P ó®˜œ-X1¹1 ä~ÄYµ«udz‡ÍßFÀ¤$ENêLš %ǶÖŸý¼v_i±†2ÀneÔè¹Ó-1‰.=_ÖÝNjÔÁP44ü-¸}t±®ÌɹK߯ûïX ó÷ÉCxÛF±‚ùCÃÍ[Zã9ÖùGùçñÅÉY‹™¢Xføœ7Äå:á)óOËï-úºc†˜³Šº¼~F8ø~Ö~ÿæÇ·øZܨ¬aëñ—y_:K½p…ØBÉû·ËýZâkç{S·gŽ4sµXÏ_dž«c•Y=•£,Ö´<Ìq¨]zô”¥äià™u~ßr£Wàö…\_€Ç½­çóFÑ6e–P}–V­>Àˆ8@GI…yÅä{©Æç>©ÌjÜê¼ç0ôؚÚ¬”Z(ñœÛÏ8öŒ"8IIS¡ä˜¸ãq4ÇVððOÆ2fŒ »i"FAíù²èIR£†Â¡áÝÀ{z[‡Ëž,ºã>„¼­¡ñˆØú ÔÄ$¦C—7Õ«E1r £t [›‘·}MRýµAs—„&¯œ¥I_¾‰¦Ö7Œ\>ÏO0Zìž`ÀÍÎÆúC 9Óá6îöq­¶<”o+úºTãð'{Ïqká\CÇ33ðd,Ætd-PêPñÍ!™¹ì0>ot‚çü[_~Ç&  ¢w5U´Û”Yè¢ÏRÖ匈t”T,ЉWL~R2o‰É^Ž^ŽÑ—÷×eÂS§,ާ+C^Žç¶·6U­vµ­\PeIó,rÒT(9WF5”I÷LÄ,¨=in%5ê`H …\×J{SájؘŸ;'ç¾<—ÛAºW‰,&q?SB‡A\î€Á½ÿu–·€¿€ÜÖË…ó? ]ÉI£¾þ ¯Û‰-?€Œ6H&nJ·e‚†µœÑ<®Kuþìš×‘ü…¤¯ZQ7à€ýdÒ\C'€“2§vZŒÑȵ@âý›0Û8V´Û9Á£ßäű»~´ÿú­Ü^ÖVÉÐhSFY€^Ÿ•_k”0"ÐQ²{î¬GÂÏ/x«­ ‚‡`ªòÐÐj`› ëxñŠæ¸G2q+’mŽ æ]2 ÅMÄ0ºô|J (˜Ô(ƒ¡`hø$ê’F’¡—:bfdEaÙ¤šoüX]´Ñ>¬÷¿}Ô1O·u1 $uˆÐ‚Ï*›³æÖzxµfÇ2q)ç”ò¨ÅæSõµ_~žv¡iÊ#j›¹¸¤–Gº™½=J‡{çÊÉŒe`yÏÉøé_òìÇÁÕr¯ª1Û’©åÌåf9Û1E'®*ÃRrfi „iLµœ0Z±A;£,Æ\Pû.n'7z|0^·íK›¼_Š:;²7µUж)³,€ê³¨Z“Û匈(%éT„ª‚ÍlÿëAµfüÄ´D8ûp»`ö¡*qM¯ˆr™7I <¼ùC^‹!ä]ç)ɤ©Pr ÷h\1%ÚŠ˜kh¼L­ŸŸ L„‚¹)å½( (é§þа#ùDtgrހŻ‹’Ò}S®· ™ò¡‹W6!O\9k‰åŒÐvaxB##¥ƒÕ‘õß…ùY¯½­ñút;¯ý‚/v|¶Ï¼•ʶ«¾òï°ÉórÓ©ÕèÛdϺ›å¼òâ½£Þšm³é˜¿è®‘iYv{µíÆf3Ç}G™ø #JÎXìbOñþ°¨ˆI×׿àx4ñZô:ç¸Æ{ g0Ó.ñâ(ÒbŒeé“bÜ×~÷×Ë“f/Xr`ßÿÉ>nTWÄoa|õ²MQåÕÓ(mQ}¶GžÌˆ8@GI…ÝÃLç“J%¦]g*»6ÔdM¿•éTuñ/Í‘Þ3sÜuh®l¹"•4JŽÚ~•éYQëœb›ž³ LQó¹{(!; T:ç*E»<ÊŠ@2ÔÁ?4Ì-oŽXòŒËþH˜|9Ävÿ)n‘Ùn‘R9Ô'ëÄ 8å#_SR€áQùQ¢½0{aÉWæú$Í•}·g××Gm3—ás<ãxäéo²2mÿJúr¦‚lÇ¡VÁéVÁ2b´Å˜ O&—yÕ*d»Uˆ25R¨š¢ÚU^=-€nGù}VÑZKÊä+I¯"(ù €s¤#ž}¨j账ܖ•Jš %GÝü7àß=•{›ž8<½NÑÛ<¯.ßËPCþÐЇÓé_܇_|„*­<È:`0 ƒ¡'MŒò^CÙØ<Ç4ük•¨‚Á`0 ƒQ-ý#S¾ ïÛ¸8AsAdŠªôQRxÁÀÀÀÀÀÀlý7†ùªZUÂslllllllÜ€ K?PÆ`0 ƒÁ¼°à¡!ƒÁ`0 Fyh˜ed4€Ãñéùë"{p¡=ùôñ‹‹Hz>;,ioÍoðæ÷5©+Œ5»3•VNÙ—…e‡këŒ{×ÂŵËTq•®Ý–Vp¸öʽ‹‚b‚­^íBÎLPhå”äî*û滦tÇN3sôYínD¼³êÁ©¬¸/Õ5Þ¦ |¢ÌS~€Ú öv©À‚’Sy;“|à×’¸ø]Ç/ÝÑš0Ï#b“ç4É>Ë­v4»®Aý:7ÚS+è+EÝO>A_]C´ÖÛ‚R·6Ù ?}Ž5¨·ª„Ù[IP¶ZßOšÝéæÒHwtU%]9ƒ¼./? Q‡è² ihX– Î@µ6逡ƒü–ª[¸¢ziñáÔqpõ ÷"çiœ³(åŒÅ£øëÓDÏ£^æ¶4”ø}êøºp­äör÷+ì¿H.Mx]ûqÓé¯VU•œ± ,à^x×oqüÒıÃ5ÿ¾Zîb£Ç9aÓ—Z‡ÔGì-ŒŸ(\]ÚºŒS·PÕ• áêRÑœBŽôvFùÀo+œ·NÍ*>6c$´œÏuq¿P³o:é0Ç;”¯ëåž«°ÅÔ :ÁJ‘@—ç‘?aÝ6nÊlç<Ç àßǃóK9*º·’¡jµ i*ÜÍe‘×YÔd8H¦ g­" u:P—éžN€ëø+‰ïùñ6ŠçGìü¶YËÐ%!ÇérÄšÜêký =2rXÄImçs×o-þïÏ~ç#Ÿ¸õ G‰ÚOòÜrŠeÊÂí6T]úýÑyÁ+šduQIb÷Y}îºôý5—okŒ2ùØ'*Äö5Šë¿˜œ ¸nQç4‘¿ãD§‹ø÷ë Þ”BÎ\'z‹6õ§/͇ôE'x;-Ëcþ.à¸MÑ2°d s?JÎ\P¨ø\¼òæÐ Ö)á(X4²Û Ôþ?¤Õ¥yå™14T”·3ËÂÎÃγëèÏ ÜÙh|êÅ©¯‰í}7ö¬mÌlùCCFC'X)è xe¬ö@¬ìÕqjQÚèLΘ^¯˜þ=3Ï 7#b¨l€Ú¢ÚÀ0¥÷š7ëˆÍÄŸ øê&öá†GC -–®vH)ï#, ¦ãÙÃæo#`R±›f ìŠÆT‹ ƒá~Se(wgyLF€òvfù _ç^?ànÆî[‰®W6Ô¦jAŒJ4S2t‚•BÎC¸br¶`Å䯀ûgÕ.úIõVzt&M…’cÛëÏ~^»¯4XC`·2j¤lh&5Tg‘›@ÕYg[ T@£b¨Ëˆ††¿·.Ö•Ñ/wé;Ãxÿ½«¡ažã>yoÛ(V°¢1h¸yKk<ÇZ Ê#ÿ<þ¡89Ɇ¢Xføœ7Äå:á)óOËï-úºc†˜‹È4ÕècßÏÚïßüáø_‹•5l=žà2ï+@g©×®[(y_àv¹¿CK|íb¯ ¡Ù¢ð@øHh¹çºÈ{&'w,…¼/ iâÎ=·Ÿqìი©Û3Gš¹Z¬×àËu¬2«§ö¾¦½ÊÛ™åÉÓÀ3ëü¾åF¯Àí ¹¾…æ8Ô®?½F=V€Vt‚•B޼bò½TãsŸTf5nõÞózlÍaMVJ-B¶·Ò‚”4Jމ;Gslÿôg,cä¸h&5DgA%Pu@Ž3 j hÈÐA‚ºŒphx7ðžÞÖá²'‹î¸!okh<"¶¾(51‰éÀåA5äÖ“¢¹ t [›‘·}MRýµAs—„&¯œ¥I_¾‰¦Ö7Œ\>ÏO0Zìž`ÀÍÎÆúC 9Óá6îöq­¶<”o+úÒÇ‹w1&Ä}rV>…”PÈ™Ž¬x±ÛÞÚTµÚÕ¶rA•%ORãð'{Ïqká\CÇ3ÂÙ™}”·3ËÆçïñNðœÿcëËïØDTòR‡òˆoõÙ!½`¥X ¯˜ü¤dÞ“½½£/'î¯Ë„-¦N;YO%V†²½•䤩Pr< ®Œjô.tü¤‹Î"“@ÕYg@ÕÐP¡ƒ ubhø(äºVÚ› WÀÀüÜ997p¹ÜÒ½Jd1‰û™: ârˆ~=ù¿ÎRã°â°€Ûz¹pþ'¡+9iÔ×aàµc;±åÑÉÄmö¶LÐð£–3šÇu©ÎŸ]ó:’¿ôåÑ_:$Jõ£–3¹£¡5ÔÀ6Ö9ðãKÔ 8`?™4×'?Ù»úö(og˜ô›¼8v×âXÁöö_¿•Kˆïß„ÙÆ±¢R=§„ºA'Xu/ÐõHòù^Bõ82V[ÁT?4™ÞJÉÄ­Hr´8&˜wÉhèø ½ÎÒ™@Õ)g@ÕСC²,UÁÐðIÔ%$Cŵ13²¢0ÈlÒÍÇ7~¬.ÚhV ‚{ß>꘧ۺ˜’:DhÁg•ÍYóGk=¼Z³c™¸”sJyÔbó©úZ‚/?O»Pƒä¨mæâ’Zéföö(î+'3–åAB>'stà§~ɳW˽ªÆlK¦–3—›ålǸª KÉ™¥¦Ùs3Ï{÷É=aúWÔr悲€kzE”˼IúááÍ*ØðZ !Ô‚Ð#©–†@kã16hö¾Î½ÊÛ™ån'7z|0^·íK›¼_Š:;’Ëý‰ô•Èèæ#W°;®™í=¨ÖŒŸ˜–gnÌ>T%¨ÞÚukJ&M…’c¸ï@ÓàŠ)ÑVÄ\CãeêrÃL!èø ª³ ¨jA9ª¨€† äsQeøCÃŽäSÑÉyWì.JJ÷Mi¸Þ6dʇ.^Ù„ÇÔ[UBZžFk¢³,#£Žìkkú=èè ‰Nª‡[íhv]ƒä*ÔKº<¥Ã›(ð‡†È—é·fXû5ïÙ»aÒË®u·Î¬ã?¢{VŸ».}ÍåÛ£L>ö‰ ±}Mp¼í|îú­ÅÿýùïÁï|ä·~á(áuÙYRÛødŒ5+%Þe´²«ÙzÒPA%WšØÞwcÏÚÆÌîêQ.9åé¤êA54Lú6M&íOÞ$d Ïh]U5p+í£VµÂCÑE1ŠÒñìaó·0)‰ØÍب-:¦Ü(ÓnÈûÍ›áÕ ÄfâO|u“ûp㡆K×F»NÈÓŒ]јj1a0Üoª ãî,©¾, FÊgú$®¦M4‡ÏÌÁ3ÈÍh eançúóÀßänPß¡!Êcéx2ª0:ÁJ¡@ç!\19[°brc@Èýˆ³êýŠK2=úûp®á Áúe«|³¦í®Œž¬×ïASMa?Ó?Ým³âJxqqüxû ¹ŽvQæœ8~ZnÛaýÙÏk÷•&k(ìVr-{DO:‚ò‚$•\ÜJt½²¡6U bHBŠÀ%·¼Š@"¨††x£A Á24úÕëåÞdš£à÷'½FUCâ1·ŸqìáóˆË¼¯Ç_¸Ò=y_àv¹¿CK|íb¯ ¡Ù¢ð@øHh¹çºÈ{&'w,O>u{æH3W‹õüÅç¹:V™ÕSU¨òsFÒ²>Ó÷>M~Ö~ÿæÇ·øZܨ¬aëQ”OžžYç÷-'V£÷xÜKŠv ”ÇÒñdT/`t‚•B޼bò½TãsŸTf5nõÞózlÍaIæ¹^†~\’Ó£ n]¬+ØðOËï-úºc†˜‹îmÞÒϱ¤üFþy` qüñSâŽÇÑ[¾\Æ2µBÏ:B'ò‚$•\%<Ìq¨]zôÄ@dàB”' NÔ!‚jhhð?€)^§£š˜Óä}eôNañ)ù£¯x7Áá å1ôá¥@n{kSÕjWÛÊU–<É$€›¢G"Ð 9Óá6îöq­¶<”o+º_Ä‹w1&ĽwV>…”ðvjþdï9nm œ˜âxF&—ôY ÈúLŸESkÈF.Ÿç'­vEÁñù{|£<çÿØúò;6‘½¦c7@y,OFõF@'X)èÄ+&?)™·Äd/G/Çèˉûë2a‹©ÓNÇS‰•é úqI¶Gß ¼§·u8q4¶,6#oûš¤úkƒæ. M^9‹ÿC…¯JMLb:p¹Dá£á½R»çBO:*H¢äª¢Ô¡<â›C²=TàB•' NÔ!‚jh¸z$¬ú£º ¯¥£‹_ôþ:‘&Ùr½/Bõ4ŠÀ(‚†ÖPÛdXçÀoc?€Œ6H&´e‚†pn¢rFó¸.Õù³k^Gò’nøk@‡D)áø¨pÀ~2ib Ï’'{MU%!×b¤|¦¯Ã‹fí]é7yqì®Å±‚íí¿~+WùZu”ÇÒñdT/`t‚U÷ÝY„!Ÿ_à%E/€#cµµ!À@•CC…â’d~r]+íMѱq Xñ XÀm½\8ÿ“Еœ4žÌÀüÜ9Ùgç6Çó.AO: ƒ$uðT ‰÷oÂlãXÑnç/} Y^E  TCñ{—Ý3*ßýÑ$ÝGGã>ùkÙÉ7‘¥¿]qÖ)NVçoÇ™ gçR|¦k\Ó+¢\æMÒoþPÁ†×bùœÌÑŸø%Ï~\-÷ª³-¹{rær³œí˜¢W•a)9§Õ4Û`næùb/âÞ»'LÿŠjAè‘ÆTË C •÷´U ôse”Ïô=\RË#ÝÌޥýsådÆ2°U_Kpgð)! 13²¢0ÈlÒÍÇ7~¬.ÚhVÊ—û4 ®˜mEÌ54^Fu¯]åô¤# ‚$J®ZÈ;r-P U•è‡ÊÌèÏ̉wIüßcÉs?É<î…6âÁvÛ‰w é¦.hŸ}ê?É_ì«÷û´Ôެé·Ò"ª.þ¥9rÂ{fŽ»‰ÆÚ¦eÙ ìÕ¶›aÌ÷eâ/†ŠÊ‹]ì)Þ¿"ÉáúzþìVã=Û¾² øåßᆖûr„ßg&^‹^ç×xô fÚ%~ã µŸ#(  |FÜ ‰ õD”æÙ³î¦E9¯¼xoÀ¨·fÛl:æ¯O]>}RCŒûÚïþzyÒìKìû?Ô“õå±´<Ñ ˜át‚•Âîa¦óÉ¥Oɳ•]”åé´¦ÜÝ‘| ":x±}æ­T¶]õ•‡Mž+|¾7`qÅtß”†ëmC¦|èâ•Mȵý*Ó³¢Ö9Å6=g˜¢æ“‘{ÒPA™>ÔErØ@"$††²ab ©w¢©7 —ÿ¸ž#}wZ+–S/ÿ²ú ŸãÇû#çH“•iûWö\ÎTÐ~¥9myrÑrñP«àt«`å*Õ« ,€òæöÄçUÓW­B¶[…0nccSRR"ý”øƒõŸÌn‹é³2óàOwO—¶ƒ‘æÓÍ`Æ“=k@ö„ªÀQ?p™(±ä·mÒÁ¨™-‡ÎˆË˜ñ°EôIh䇟˜·jeÜž9s&ü ·ñ’Ñâ¿­’žÈøÃ‡‹=‘î0õqÞc4…h½o«¤‡™ ó›XàEh[Æ÷íÛ7==]ÓQ`ÚÑO(9Iÿåõ‡·ïWÀ¡ý-?é¯ÐL0¿ù >ò¸ýÛŸ÷…ÃY˜…Ò å%Y#s&Þæ¯Oxß•úGM/Êxˆ`ã¡¢y‰Žoïþß^¿#·³(_Ûb æÈ­}uoeÈØãï³?Píà-‡ª¦'2þÐê¡ðgÔºÛðá‡#˜æzûަ¢‡p¶()o8\¶þøÏ]†ÎHÞÑ™ßVóÝÎØWd½f9÷;kõÒGb9'~¢?3LÇ!ðÀz,’I÷âr‰³ÿ¤µ©Ñþ ¢åÌâ¡ËÝÉ5î9aÝáO0”‰£5(©é¯ÿž/Ñ2ò-'²Îpi'´ ±Ø»{NUhF‚§Î(úäڵͶ YÇÞ$‚=6ÎŒù<âÂds^ÙÓŸŽEp&ºœ?¼º‚{qpWég{qªŸ_·+š½ˆh\Ý~Áçßmÿmœ’ò ;F‰È1Ú€šêx¸ºÃ5^ôPFŠK@v†^¹Å~Å¿ {vHÓ•0f~Ò¯™æ½yKFwÞ#F,8)wþZŒ:x ûøü‡OqÓ÷/ÛrîîÓ¢zS0¾0éSGw6‡ÿëÓ}|Ç £%( é ^™Y˜Ùd ^ÐþŽ¢yßÀ‘ôô^-½¢Ó¾y•q/ýá¯iÓ6žZ÷}RÙƒÈø ;{ŸS·ÝmLX¯ûö%j·þŸÅd6*0FÛPà<=LôÛ÷oá€DÆ×çòÏ\=”5?Ùþlz’ߨDÞoé ¦íN?åk[÷ß­ƒ«FÅœSRo¯ 8(ÔË÷-‡caÛ@Ò ØØ•Ëe×ðüLÓß…ø›šƒŠ'gÊCÚê<=¡jˆŒ/-¯#EB2ì"Ä£Çç¯Iúß°ŒŠïL‹ÙG4nsKOˆŒ{×`ã1pFÊaaã4ßÈaþE L…Nþ쉙150™ë0=~š £õ(vž^  ¹«(Ñ×ϽIÒGÖb/™² ¯© G§&´hs ‰Ù"©³¢?»MaÀ–¦cOŽI¶F¥Kï‚¿ÃÒiÚüÚb™—MÖ?¯†+¸Øc0­A±koÂÇt£~Ò† •¬?U8C‘6¼öæ½(wxäÚÎÊnçU=@ö™µx²ÊçÅ`Èh[MO\tóž8eYÀÎîC\l¬UWžaèM›kz"›‰o^Ý~R­4Â`”C×Ó+Áó¬‚'Ï^½xÍåò¤Ÿµ´2óðvíåï¡þÀ0ô Í¯§W”é.£CEyõo¿þ ÿ9:ÛŽ;Pmah@›Ÿ§Wšë? 6|½¥Ÿýíï‰é“¨/& -PŸGV!àâíÕ«ËÖä=U …ÿfÿV][)ÑÁÜÌrtðß~½ÜÜ4!F§ÑRMOds÷.¾ÒOyvë *—ñmç ÄnCÝBšž0^¹üDQ«¡¹™…“ ?¹j„×9Ú Ïoþúý¿?þtnx÷ð=ámñ½Zo5TõžÝqäÜ·éÿs,Ýß :wÚ[õ‡¡&M¯«¡40ãaºÃ¿ÿúþÏû6µ*ÀóÍÃg¿‰Þ»qÖFgkF]aÎï·OE‚!4Fmš¾5Vêj(è2æô± â <Ì{‰ÅžŒì´ ×ü`|µ|Lü·½¨zÀf#íˆå!57£’.e›ô¶ 9×ÝI'ü.±'ØÌ<O^uA4Z‹IkooY´åûM{¿ñŸìŒyÇDØGúÓ 7ŽEõ_òEzm—°•‡V›"æÅÈF3šžºÕÊ›Ì'O‰íή-NÌ‹²œbº ]sªÃŽž^å`Ê$vD€òf„/OŸ{é‡÷슯L‡š+©µ'D|ÒŒ‰K˜}á»TûÂËáãÆd_éEºË]cÏýÄŸ4,<#økê¯#¢Í5}k¬† éÈU¤é‘PÏ{¤ëïÈt_Ñ_¤é!\“öŽv‹²Kè^°v¬ô\<DA‹3D‹·ø¤«óAj˜Êmì>?€‹2^Bó¤q‹8Kñ…cԤ镶yÕü¤©ÈµU>H×_G±H;"™‡!ñÿ–,3ë^ƒ­‚W‘8ANÚrá—ÐL.—åoV zâ;2(ƒúÎÓ+a5$!oÚ¤é!Œws¯äÕ¡èÊ\äPoŸ [wqßìa=œ-Yõåÿ‘Mº®i¨Â¯ç¡…e›3«–¹ƒÜ›óÄ;7Oê¸A/XÿÐÒóôâHÈ¸Ì m»évD¤‡Ðç«dÿȈ€uð@v;¨Û™¸¯ývGÚ¶ýÑ;Ë*7°ëúÖ°¥»o!'õ9—°pöиß [Ï÷&—î™97h@C§¡Q›˜(ꜜ³~ÜþlòWXÐ+‰Ö]{œdgoˆ>r¿Ÿ’8_‰týQ±#"=„À4xõñàÕÄö\ô‰Qóþ«à?y“ ˜ƒA~Gæ åGn->ˆhîß}è?-ùhéµ70›o_þŽÅå h™‡}†Žê‹¯DÀ(„Z¯½!ÎÓSÈxgâ!òìÍécìm]`ÏióF«2J­_ìÐz´QÓÃõf3Ìi¸]ø:/óI‹ Ξåò‰gaODˆÑu´NÓCÅBd³(õ‘`mƒQ-Õô é*K‘t¹þ{>¶bT‚–^OÁ´)Ú¨éUÅÃ_ÿ,/«ôèî· _"·!®5%Fh¦Wþzã®……Yee5Ù6Îx}C{5}k8zà4‡Ë·Ÿf>ËÎzôn`ÞóñmSKû½_–œý¦ø·8éõ zjúé³'N=iiiVQQÝÕ³3Lt+kóšš:ñíÃÇÿëäá­éHuÎI³6\ú³°.ͦ¾—6ø*é¬é!5§nöý+·®žYròæ ÿ ]þp(zp繨Å¥àÏq[ßKâC°àñ…¥|'žÄÙµÁ2ïvðÀ¿èÇìí=IœŠHS"ÒI¨²º‹ÜÚ7Y÷O,¼è™²FÆÈâ í”dvGñA¶º¤é©#PöB—SÃã4z”oÚNmû€´9ü>ŠŠ"UãwhsBߥì­>H§"Ò”ˆtª¤î"_•1ͽúŸ{ædÓ©äÈâ í”dvGéA¶:£é)BËvt{“yØð¼wÀï<ß nE¸óX¼y,+Ãd(ýz²ÌáØÃ[(§¢¸)±ïgM» „mSw‘ldñÎH;%2HÑ^â1 ƒlSè£éEgo¬òÏ—ÃMÛ÷áÿžI¶™go0t…nš^Q¡¢s¯ñ/ðiÝ4=‘ÄÈ+ Ä‘ÛCoè¦é…lÆéŽ¡¦Ç`äB7M/AyYUñË N=·[ç»·þ²s4ãp¹6¶VN¸,‚þB7M/΋ì7¥µÄößìðgc¯¡¾áYqÜvt¶{òWާ·›&CÄhjzÈóÌ׺Ù¹.¢½£ ðŸ%ÌxøðÜ™o–Çá»ãé)tÓôÏ2 k+‰Œ//«ÈÍÉÏÏ/d2 VNõÙ¿w|¸~Ý C@OM_RTijʯ_S^^™ñèIqQImMÇKˆÙok×¾¢Ž/oÆŒËË*²°4ëèb§ÙhµÁ>§âtè%膦W¨2!\æEÛ•U•Õuuõ\&=“Á,+«ˆMš—y&“affšù™ôñòµ>u^»gã‘Ë?ÿSjÒuàøÈ• F(vû7ÝÊÝÖ íš^ÑÊ„Uµ¢m33“ÆÆF‡Ã`0 ¼áry )ñi!c†Ág Xù¥dã¨ßË×Ú„Ëø88Á>ùбD÷vÜ×™?ž^ F¨ãÂtE«5½¢• ê8~Cº‚¾¦º¶¡¡ÑÐÀ€Ÿù\.“É FcGÔyìûCy“y¤cQñòÕßÛtú~^-hºb‘¤N`‹Z‚¨²„âjáÌâ¡%Aõu³6^niçÛéßøŽl%x`ïÕlÅ ‰Gb ÿ•â‡Po‘äPšF'5½Üʄ쟅÷³¯k¨561†ùWy˜ñ†F†pÕ/­.„K>”7ðƒºù+Y3QñòMœsúÙë»ÜÍYÂÈ궨%(Ï(]ñÑøì…²vIá‚ãVˆv²x$¦¶ÿ)Qü¬0£øPG4½¢• ݬ_æEKAþ›ví,««jX,¨p*ê„>)[VZpMÍIÍü½|±y`ßws±ÉêŠ×”ë”.¸¦P´Ë>°6LÆ; Y<È*‹â(QüÌU(>”6 íš^ÑÊ„õœ¦â|À·¿÷É“’k¹•¥TøÕÕµåe.IŠ{ù-ÍÚ‰¤– Ú»„,H>!Ÿ¥L\’,O!ã‘9¹Å¥!{‹:"új­Öô@ÁÊ„f–Æeeù,ÓÈØ¨¡Ž440;çYÉ›’Úºz sóŽ;úöy«´¤|X¨ïá—¼zv–1/ß0÷Böɰ.fMwX@Ö ”@nYBiÖÚù×^œaWta½ƒ¼{4pÙØ-Á"Ü­¸Åð@vm°@ÖS‰‡@†‡â r]…Ú€NjzÙ´·³rtk÷2§¦5<œ55uuvr!Ö)¨pàϲÒògÙyiû®vîæàäJ^Ï[ˆìȀ뉃ø®ñ^܈{Ó¾[ê!ñj³ÓbdÛå¼p ¡§šž°ÊøÞ*~õ¦Î]\‡,.,±´²|–ÛÑÙÖÅÍiÅŽnäÙwÌ•¶‚®n7ëÀõ9'ý=aû¡›Iàߤw>ÜÃæ_Ù(·|5'ÉÔRæC¤_QzŠ®Ñ—DŒÞcwc¾áÐ]}/—ÌxéÁ¥m‡²_¸ú¡¹¦—¶R—7 «7–y èYTðÆÚÚ:;3§KwgOwCCyG®öçÔ0O¾«És“985Ô¿ÝcoÀÿÝË-ßGɉG6µ´ùåWDMa>&m[¼_DðH~8Û\zh ¶CÙ/\ýÐ\Ó+j5±.n‹A™Wðøž·N>ëô"/ßÕÝÁÅÕ™LÄ‹s(D¡,ÿM>>#ñm‘UOnù>*N<²©‘Î@i¿"zŠª¿ä5±S\Ù/\#ÐYÓAÞwpPìÚ›ñÛ™oº¿;±gú‹uãdö¨ˆN»¸™ššRØûó½`æCÅãDíÄý{œx Lô+¢¦(ز+èäE¥k†ŒMó¿aCap9¥ µ=ÕôHî>foÒ¯×D'ö¹,VEYÕ¸Ù^ì©e<i;Áô‡M¿m—ò7Wè€bþ=ùN¼SËéW”žâIb(;öÎþnp3þúG3F&üe¹§Ü3’2l‡ÚÍ5½°ª:û¿Ý ®ñ†¬’×a‘ææ&fffw?¶ LM&¯úÂ"Àh <£]‹€òœxâS¹æC”_QzŠn«ìoÚ¶{ä—±”^ ™í¹­þÍ5½¼|Výä0™ÌvK}ƒ::;XZ¢îªAÂT±;xùÝà?W}·˜ª7Óh®é…Çã”wìQåÚÙ½Ï[=¡¦Wz(öý* £Z°¦²~Þ .ƒcã^Eé¶]kúØ÷(*̰Ÿµg<Áš¾TÒÛiÖô €í‚´kzJ`» =Àšž*Ø.H°¦§ ¶ Ò ¬é)ÑFvAê&#%zr~HšµáÒŸ…uél¶6¸™´Ê[HgM¯Y»`k"oýP›¢Ï¼wã×ÃvZíâÅY£q»`ëiÍP¸§Ý¯h®é5nÂûkgÿIkS£ýI­z5ßíŒ=påAÖk–sÿ±³V/ q”J˜G:~S;`2û‰Ü†ü›:oÉéµ]ÂVZl ÈvGÚ ÑžCÅk j‰·P5½zì‚‚„ãT?¿0nW4{ ±êÍŒù<âÂds^ÙÓŸŽEpRz(i×r|Q»„rXî{î'þ¤aáÁ_ûÈØ9‘t£µµÇ[H[M¯q» 7}ÿ²-çî>-ªç1k ?«V½5Ó|¢7oÉèîÑ;`Ds Ø–ö?icr|2š'[ ÀY»#€ÒJÔÔo!Í5½Æí‚±³÷÷9u+ÑÝÆ„õºoßQ¢>ÒV=¯è´o^eÜKøkÚ´§Ö}ŸÔHÙÿ¤ydã#‘ž”lw¤PºQ‰Z‚Úà-¤¹¦š¶ àojf *žœ™)ê´êMI½½.|à P/ß·Ž…mI'¨Øÿã“Ñ<©ã%v—F%µ5â-Ô_MD¥vA°'>dÆÔÀd®sÀô˜ØD#Òª·Í-=!2îA^ƒÇÀ)‡¥‡B‚ŸŒäœõã†ðd“¿òQbwi¨ÔÔZo!m5½¨Ð.1“xrLSÕÕ(YV=ǘ½!-4.™ýO|9¾ £àÕ–Ukeï.{(>j j¡·æš^ Thl%Øþ×FÐ_Ó+Š í‚­kúf°]PÀš^¶ êXÓ·Ûõ¬éÛéÖôTÁvA:5½|°]6`MOl¤ XÓS…ÕµÁ1H qß Í5½ÞVTzRM¡æÏ$m5½Æí‚¬.ˆ!ƒæš^ãvA Võ÷vF'¾ŸW š/`¤h8D›«o¬›µñ²ÀåxÿÐTᘨ¨H¬-РoP¯5=½« fLœsúÙë»ÜÍÅ®¢n8”îùhü öBù ©õ±å»¡Qß 5½Æí‚⨹º`lØ7Á]¢ uÃ!¢ a¡Èp¸¬ “Úú(/…Þ®ÖC[M¯q» 8ê¯.(ýLjºáP¦¯ONAB¤õQn$´oæšhÚ.H•WÜàæ^È>ÖÅŒ)k^êŽÁµv`þµ'FØ]Ÿ';l”õQ>jó 굦GB›ê‚>gw-œ?<áUS–ºc°÷ùÄÞQÄ›õ¶žË•¶´õQË|ƒtÖôJ@›ê‚À(`Éþ+KH:S4¶Ø6Y{"d-¯®àî’÷ šT8**ië#阚ó ÒVÓ+®.(ÁÉM¦µgÐÒ‹ï¶õ\mý5½¢àê‚2Ð’«Z Öô-ÀvA=kúf°]PÀš^¶ êXÓ+¶ Ò¬éÛiÖô”ÀvAš5½|°]6`MOØuŽ6òÑ_Óc» MPÑ[J@gMí‚´Aåo)m5½>ÛÅWDÑ6ÚÈGad*þ=ê… ¥Cî.÷-ExQ•%ÐkMOo» ¤‘b‘@¹þ=ê… ‘•I”õ–J ެÜ(Í5½>Û‘ |‹ÊŽ_¡B…ÒÈ)“Hö–J{Q•¥¡³¦×g» “Ëå X¥+DF>ŠEeÇOÝvˆ Lv™D²·é9”.¢ˆ„¶šè±]p›3«–¹ƒÜ›Íî>¤‘O%E©Û‘ÉÜ]·Y¹Q½ÖôHhc\ºgräÜ  †Fm`¢p@”‘J‘@¹P·"“µ;…*‹"•% ¹¦WÚØ™ƒ–¹µ\ø ‚´†!•‘©ÄOÝvˆ LÆîdUÑ!¡*7JCgM¯Ø.¨m´Ñ뢳¦Wl¤=XÓ·Ûõ¬é[€í‚zÖôÍ`» þ€5=U°]`M¯Ø.H°¦§ ¶ Ò ¬é)í‚4kzù`» úi£Òkô×ôØ.H]zê‘ÅvAÚ Ú×EgMí‚D@t² R,r(þîœ<[ú—¤§šÛuÑ.H±È¡ø»÷éæâcÑ\Óc» 4° R/rHÍ5=¶ ÒÚ.(§È¡ è¬é¶ ÒÎ.H½È¡ìr…zªé‘`» Õˆ[¢6» E›Þ=‰Yškz%ÀvA鑩į6» õ"‡¢wOâ@–æš^ °]PÛ~]­/rHsM¯(Ø.¨ý¨ä+?¬é…`» >€5} °]PÀš¾Ø.¨'`M¯Ø.H°¦§¶ Ҭ驂킴kzª`» ÀšžØ.¨~Ö'Uyé¬é±]&¨Î.HsMí‚´A‰×EöæÓ\Óc» ­ì‚ü›:oÉéµ]ÂVZlJúbeüÔ_M킺h„,w=÷ß.žüµŒ1e@[Mí‚ÐÀ.i®·€³2^/škzl¤¥]Pº~ rL2h®é ï?©Ø.Ø.¨xøj­.Ø\?ÐqƒŒ1e ¿š ¶ R¸%ê¬.˜œ³~ÜþlòW>2Æ” m5½`» ôÈTâWsuÁ«-«Ä"Ç$;uCsM¯Ø.¨m¨üuÑ_Ó+ ¶ êXÓ7ƒí‚úÖôB°]PÀš¾0Ý£ÖÝ}™…‘ •ë8´¬é„é¦ét€3—Ÿh:åÁš£ÐMÓ¯\¢Pÿ¤Ý·Q$-„žš¾ÙÜDÂþ‡Ñh«é§,õv÷tˆè2àºÚÚºÚ«v6¢nëçÞÔL|B[MÓ½¼²¬´(·áñ× ÿ±%·ÔÄܲÔÈ¥bÀ, {kYûVÜ»uüÜoŸ–Õ™vèØ/dÊokµE®ŸFñkrp…ËÀÀÙŸ¼í$ãrå§Xè’ʇÕtÓô/‹_nÌÚÒÀjØ\’øW‹™Ð`[Ÿ ’6”µ³ç.[fÓ¡Ù¾ß.]Ÿ¹}δ.–Fõe¹¿ÿyýcà}H±+ÌH·®ìŸ­É«Î½}x‚¦ÃÑ^è©é öì3´brÒ*iRti¡E}=ðÀ=3P¬ yË–#GÈö}ÄaýºZ³àzijÓyÐ;síâ«hn,š0èÄ•__të¹±_^ò)¸Íðè?wÓ/&•D.\¨í|Î\?ºi¯ÅS†Ÿ½þsnQ`M_w0Ü@ Óx¼ŠS‘‘ž‡Nù3%—sÓØÚ{‘ð“žÇýëÛ=»ïý™:|ç£åÄò‡Ò'íÆ£ÇácW,èm"³þÞåmd–YxŽ ]2ËLj!À‹âjÀ†Ÿ.•ý’4.izÂ݇iùã08&&ቓ¿ZpiÉÏ?›ÚÙU”¾! bÛ6ë‚Âr;;ב͚ä·mîb—þ>ŽvŽ^ƒûtïÀ”å§-ߟ•²ÜàÕžµkgçÌŒ›³mx¾7aÝ‘1‡#)và¯ÓzÔà4üýDO¢Åuç^[W&.3÷55©;räi#{XVÁeÒ@Ù놦W‚¬Ì<‰–ºêš²7’H,¼G‡ÁRíÌ^sçíhrªþîÅ“¹-·ƒq@Lt@“‹/ ±àŸ´©±òì0f–'2`ñÎÌ~’úñ7LÀY)³$;;O\1¾E ÃhИƒÆ i?yÓŠÉÈÉujú[ÿÖtªDpBÓ´ç¼/§šÐPd«zjúO÷+Ò]¡ÎšA…Š‚⤕苦Ç`Ä¡­¦W¶G`(BCM¯4:jÃPGš~ÇFÒK\¯¼Y)Óv´¹¦‡?ef¨Ü>8ï1ê¤ 5ýgÛ.ÀŒ··^µRXXyèÐgÄOQ;ìƒó£fÚPÓ™Æÿžg¼€+W¾!~ž;Ç¿%ú¥K—DÙÁ¨uhúÌr¦OÿßÑ£ŸY.l‡Ïzzuj‹yê*ÑiÃ,U¡˜¦WºR_oÿ”M WöÛâççÎfß—oð[³’/ø6ò’Ÿ_&›­äý ˆN®¹‹wÀ˜âg Àç¬ôªš^éJ}p!‡Ë¹‘-ðC3ÁxþÅ&7Ï1¿é â?€›¹›@Ï[JŒ&‚X•yœê¢¿OŒš6gû³ÖŒ†ÑQ(izéJ}+|Êú”M»à×-–hDb²Þ¼>¦ œ6yë¸=¸[ïƒúNBµy¢àÚàÚÛ[m9Ç~ÓÞoü';cÞ´IUÛÀùëàÔ…¯ç_^Ø|›yñó­¦>è {ÒÅñ@ý½ÑI§ïçÕ¦HÕd§ÅHvÃh+­ÒôÒþ=¤¿‰XéEÉ-#Ë%q‹ÿm`u}\eØ‘1—‚óÀw.Ç‚87þ“—þ0ûÂw©ö…—ÃÇɾ",š$QÔßß:v“Yò½…-Í ‡ë<ãêEb›¬Âžtq¼Œ‰óoN?{}—»¹ØM¼©×ÐÃh4½t¥>Š>¥Wz‚'åWÀê¬ßû­`­|Y:³ Ä퓞[RÃÜàúî6vˆŸ€0}%jâí~÷£?RÙG{4·—gNUÞÝÕaÜ^øíP@^aOº8^lØ7Áݼe kèa´ªš^éJ}ós}ö€ eVzwÃsîÕvÚ¸˜ltû'©z-Ç«ùû]¤ÃM¢&ÞÜ]¢ÖþøÝÚ@ ¿ËÜ%0”Œ¯WØ“.Ž$lväÝ0Ú Õóô0щŠÛ ºÙãšóÞd×0ÅWz`ºÁ¤vÅjëíü#W›íÖW¦?1Ù$,x¶ÎQXe®ðëyÀ!‘lVŸ%W·' 7aí¸ñ¼çT¿¼¿0§¨WØÛàæ^È>ÖÅLç}szŠ:ÎÓCmWz°IøP¡•tYþ]³…8ßy ëé¬U]„ÏøœK X8{h\‰ï„­çeݼҰÿÊIqAÁ‰)·øÆVBÓs™¦.½G|zA(c¨WØó9»3háüá ¯˜L|z^QÇõô­Ðô6;¤iÛÿxÍ-“ ˜ƒAò™¬&žI`½š‘Wa¯yÛ(`Éþ+KävÃh1m~=}k4=ÓF(pí—›·FÓc0*§m5};7.qùä ¯J‘õÒ%I&ìãâ©Õ÷ÆÐ‰¶Õô&Œÿê«srM$0ãaOÕNÁÈ m5½x6_ÿ=_‰[Rb0mV{dË˪Š_Vpê¹Ýú8ß½õ—£‡Ëµ±µrp¢t¯2 Fm¿ïÍ‹ì7¥µÄößìðgc¯¡¾áYqÜvt¶{òWާ·›&CÄèZ}ߛ癯;u³#r]D{GAMK˜ñðá¹3ß,›K2ƒFKï{ó,³°¶²‘Èøò²ŠÜœüüüB&ƒ±`eóý7Æï>Zs1btmÔô%E•¦¦ükeÊË+3=).*©­©ãñx 1ûmíÚWÔñå͘ÑayYE–f]ì4/FgPŸ¦WÈj—yÑveEUeEu]]=—Ç…IÏd0ËÊ*b“æÁežÉd˜™™fg¾@&½„u•x(º˜^.¢Î\†‰ƒ÷°éëÞwEL!»ƒÊ(ùþÀ–´oîþý¢Æ¬k¿Qã§EMî'«:"FjÒôŠZ «*jEÛff&‡Á`@yÃåòRâÓBÆ ãGlÀ*È/¥‰èc€tsK7òrk_Ý[2öøûìÐÊì ŽüøŸ„ãc=;×ü÷ë/§ƒ~ú~ÖÖ M¯¨Õ°¡Žã7¤+!èkªk ø™Ïå2™LÀ`46pDǾ?”7™G>X«aš8I€ó@’Ó-;HZ¥lO·;2àzâ Cعñ^\ðíš²sÞ¿<˜i$®|•ßè »lÿf#XìeÏ÷j™9zMK >Aâr$ø3¯Ê•ášÄ¾(,›þë·r û¼§Ì½Z8-é‹4½\«!ûç§ÄF]C­±‰1Ìw¸ÊÃŒ742„«~iu!\ò¡¼„ÔÍ_‘ÍB]ÌÈ‚WWp/€™Ô;ˆ[¥m]£/ˆ½ÇîÆ|á»ú~}<ìÏý¢þ›ù…‡`çÇ^x*±¥QåÀ’Áÿ0¥÷?ggÿ Qþ‰çÉ\Ž¢ÊbüF^¿Œ´^ø_î°ëžöRÁ›¦Å¨IÓ+j5tt³~™#-ùoÚµ³¬®ªa° Â©¨+&Úy3_²­Çq6r©µìÔk`§^`èÈ ÃÎúÍKÏr—cs¬{ÛùEæÄ‘Úí%F–¿ÝQÓyz…¬†f–Æeeù,ÓÈØ¨¡Ž440;çYÉ›’Úºz sóŽ;úöy«´¤|X¨ïá—¼zvn»°[ÊÖX°?dWÐÉ;‹J× ›æ5Â.ö'Â矼kqwî•Òƒ„Å¥-ý ¸_WGNɳ»ûx›h§ârøe¯y“¿ýüÛëÔ@ê{Ñ­;OßÞÎÊÑ­ÝËœ˜ÖðpÖÔÔÕÙÉEx¯AeÓ²ÒògÙyiû®vîæà䊨$¬=HÛŸ$†²cïìçWꎿþÑŒ‘ÉYî ,Wî5ó›g“Æ6B rtŒñ¡½‹×ÝÏ,7tðô¾öò"¢’ËÑixÕàO@øÝ&ÑDÝIK´÷Ú¯žÞ•ž=ú}EE•……™ ãù Ïãñ Šóž¿jllìäa0Ì—l2ë ò!õ>Š"mkì¶êÁþ¦më±G„G™ ºƒ¯ãÊDäD6ý&}ÿI?!ÏåHD°’Í^©ð^´E«¯½Ôç·ûÿf>~ÞÞ¶+(Ô÷‡kòó^—õèÓvÐtŒª4Ì5‘rk£©¦CÑÔwíVCßþÝ\ì²2_äçH9ÿÇoYZ™vóqõîÕÅ¥}Î4èÏ*«=h¦ÇÁÉ_:Q!Ú«é1˜6B«5½8ØjˆQ!Zz==Ó¦hµ¦Ç`T =5ýÊ) õOÚ­d1Œ.¢3š^!,8²îç*A%ë϶‹£ÐSÓOYêíîéøcòˆ+ uµµuµ5Víš=GëçÞÔL|*—7Tzjz˜îå•e¥E¹ ¿ù-¹¥&æ–¥F.fYØØ[ÛÙíþ›ä»‘}Ú½¹%+ÜoyûÌûªÈ-¡ÃÚuŠX¿0p¨ êÙ¼ÐZO>9ôÔô/‹_nÌÚÒÀjØ\’ø_ï›Ð`[Ÿ ’6”µ³ç.[fÓY´ÙãHØ#¿?5™“ÀwÓž†^÷P]N†u…éq£ÆÁž¦’1•‰A€þ• §¦'ØS°ÏЊuvÊI«¤IÑ¥…õõ À÷Ì@=°.,ä-[Ž o²i¾vm£ßîFöÁÛѸ;¦1î!¿¢Ts~HÛí8óüúÍa³û1ÜoÑNö·>ìòóse³Ç!ç`Û÷ €iè¨ùngì+²^³œûµziˆ#h™£ÒÎwÑOØŽÜ].’¦AT`èFBg4½´ÃPò{+ƒcÒhž8ù«—–üü³©]Eé*¶m³.(,·³³$*,­«ßâ× öØðzñáNGÙ-Í{»+Ö,oÇ ~Œ*1¯‹úÜ ,8zþL6¯®ðA<0Z@: 3c>¸p'ÙÅœWöô§cÑœ”ýþ·o} Ý]„¸i™ÛP·ÐM¯Ä×±}6ðÿ× ¬¼zúôé»wïvssƒµ6’`³ì[ƒ{~zorøÚ'#â^È©=Ï¢ìv.KÀßçá ¾¤nâí g‡~Ò³êA Ò%”õg¥Þ˜@> X3Í'zó–Œî½FŒX@5eE(½»¸i™ÛPW ³¦Ѿ}ûíÛ·Ï™3§¶¶öÚµk&&&ò÷1+p‘»¾xå¯Rv» þ`hÁž*nÌC‹)¸þ{sX`<âx X’9U9ßDO¸;§¿é€^Ñi߼ʸ—þð×´iO­û>©?ldr¹Ÿ¥ Ù¯¹;ÄMƒÈÀÈ܆º5½†††ööö•••”’0Æ}áâ7%Áås¶tM¤ÝŽkT5å3³üþSw˜ùͨ¶8M::˼SØÁü¢³·÷$pJêíuá…zù¾åp,lH:'°9³j™;Ƚ9OzØ®\.»†çgÊ Û]QÑÀm¨3š¾5tíÚ555¦»­-å«”»}údÝÇ=Ï ív]æƒÒÓGÛGœK'GÈ¹× ß¡Í }—f°·ú Üæ–ž÷ ¯ÁÆcàŒ”ÃDãÒ=“#ç hè44j3%FÜ6Í7r˜Q¿ì!rwEAF·¡hz%ÈÊÌ“h©«®){#ÙHŽE;Yüqó©”Ý€6;¢iÛó2Éý’ÄÏ·0‡_`'Ð1$foˆdñqæ åGn-oš0]bL§èÏ®FËÚ]v<ÒѯýòuÚjú[ÿÖt-…žšþÓ}Áò;5£Pg Ð MÁH@OMÁ ¡­¦Ç`È §¦Ç`dƒ5=FÁš£G`MÑ;°¦Çè#âšþÿYÏ–rÕ-ûìIEND®B`‚PK¯9AyLö 66-Pictures/100000000000018300000104351EB642.png‰PNG  IHDRƒE³Ï%5ÛIDATxœí\gÇŸ$ L(CEP`Q+´ u¬ŠÖZðUA‹£¢ÅÅ«( "îQ•Š£î…Úºkµ¶òV1–Z¥¢¢ e 2“÷’ !¹<—\ ü¿.—çyîGóã¹KòÞ›7o€ZÑÛpRÝ5 ëè©»¤·záŒÆ7=-‹¸µw´iŒÁÐ&þ»~O£Ì‰ †`Nxp€ê“ˆŒ!†lH8©â$"bhUlä²¥ÑÄò´iÓˆ[b&GÈG•IDÆÐ¾}ûÈi™ADA U&7DèS!1šCýû÷OIIQwHI¢o¯Ü¿y·„Xðr7ý|„›Rá3ÈuèÐË¿ýy1¸nMDƒìJ¥Â‚.\È‘y,ËC¦¬ŽþÔ–ù4)Ô$Çpá¾²a„„éCœ ¹ôqÿáÊ-…Å!Ò³Á€¼òWÉK}ü|ÊýLµƒ *¨IDÆPÂr/â68æ&q÷óJ GP»†â»Ä2±¦žgg5ì]´úÈíç¬.^SãÖv¬{wc[Äž‹÷Ò_s¬ÝýC–/ð±"'>ä->ÈØVƒ£òGˆšDD/X»MXæÆ"לœçµ(áVfË^ãbö-ÀªOå(‰âëDW~Ϧ¬ѯ#]cbDžš‘Ó"{ÇÉõ¨ìÉçSó^¾¼Þ¬*ýðc¹S‰•ÓÂ÷&ÝŠ³1æ=ùùpBLjôQ0™âWä$G]eöª){~ÁcÌö0î—äÊåíæì¿±ý»ÞsÒÆ…ÜðzT€²P“ÈËÝ”˜³!ñ]9¹CîDõ›-y„žÎð9SW§ ‰V9‡­ßÚÝ¡ÇðásŽ)D0ëA-Ú; ùêì甇x)»m8sçI^%Ÿ-_”Dñ£:?º4!H"h ¨I$¼*TŸ+ÖDÜÐ]®ÿPÙ0ªB(1%¥·ôJ§°Cß¿JMN¹ÿë¡ µÇc~Œu—?ˆœ¹RÄŒÝ}__eßÖ€óºÿ‘âõ&¢Ÿ6»Z©‚¨7˜³3"}nÞ½‰D©Ä2†*3¯N]JHŸgCÜÖ>(XY0ÚÐ }r6ØÅ¬âßë{— 8&Åߌ 8È×É¥Ÿåa¿Í(ö(±²+Ç}Çw5TîšN.Bn†F-QÉ㓘7š¼Ÿˆ<)#c¨°¸‚\)^‘j”¹òMàpàÈì±ÿ’ZÒþàð]äÊÍv)ÑÓ#ïeUµu8uã>ÑÊ —éCÜòªØJ½ô¶#ÊgêdÏ8žµÇ”DÄ)W*E5ïlNylÅé³:ôMyÓ"jްœ&G˜-µÎÊ'|§õÚMǰo.…1Pz¥áèUÇF¯­ N‘ío€€&C5IDNˆä“þÏ«¡JN‹ÐðI0ºó—̘ð–ó§ G@ËPÍœèã`ûK émZµ$–³JïaÛ„Ì›¨’m }¨ ‰ÈÏvaD¾ŠŸÃM•mCzB4꣰hª™‘C¾—ÚîwoÕžÙ õ¨Ù¨ÿ<=çqê³W/^óx|ÙGM[9ô°ííæÐô…Д¨3‰®žû‘Ar”—ýöë#⟕µÙpÿMVMŒšçDW~>J.¸ôð”}ô·‡·É…)ç4]M49êL"bšãԻ˦¸¥U¹žþVVþ–ÒÀØÈtÔ°q.ïõ¶³·TK…4 jž‘Ó½‹‹ìCŽÝº·õ‹¡ÆSÄ‚|'©|²}ÞÅPìPó[äyn׌!=­M9•Å9ÿÒm4¦v¨Üïf!K‘§mBëÓJÙ£Ìk³$×mÔj v45¿ŸHÊÙ1!òôðj¼Íaí´X¥¬óé8·é1ýƒ¶ „ûÆ$û•?l=´ywضßÒ‹õÌ»ö²àëëØ:ŸÙè1w†WdA[—q›Îö!W.Ø1qz¨÷€ªN^Áë/n—±zÌ`Áë¸Óp‘ÐrÔÿ Xrîµ3²Â77R^ÂÇJ`™Øi±JYd8lù‘aËÉåPü{ŒÝ—ÿ† ¼Ã÷zSô·ìA‹¯/Ý ¬kß=t×%ü$ ´ u&17/‹žx’gg$â ÑÆkdøÀh1ªO"òýDL cÈÆÆš¼‹}íìÄá$ 3¢eЬQª¬RãÏ”:…:çDÄL‡ˆ"hˆåÜ×Yi¥>û,SpÝ—|”h©– hÔ™DÄ 1â<§f õhÄgñÅg^W~Ïó,è ô*>:‹6$Ñý_ÿ,.zëÐÝžXÎ}•‹]&°íd¥Î* G’Èm@Ÿ¯Þ111zû¶Œnb4™fœDöœ¨áñ†ûxËOÒž=Mîý‘gÖóÉeCS‹ßœú>ÿ·«D ¹4ã$š2c¾øc¦¦F%%e];éÓªµñ»w’ËûŽüÛÉ¡‡º+mÞÔü²æüŸ¹)\.ó^ Ù”¢'‘$ïŽ_ëÿwfE%»àص£n㺲Úÿa™wïÖsqƒ¤ˆÛ1›~•ìEy¶w±FZ,âÆ<–e!SVGjKm#j€ôÍ»{®^#ö±5 tq ÚG=ÓŽÝúÿÅ—~]å|Þ]ØÉ¯þºÏ\_µ5€$Í8‰ˆpÉã­áþôòî™ò„cµtêÈèýò´²+wy寒—úøù”û~@^EnJäȱ¹ALjhUÕ”¿~úëÑ9Ÿšr{Ó¶<‡Pr}cÒ\“ˆœãˆ©l}!Qùè¯xT½F¼Œ2s/A ¹„Ÿm¬jØVƒ£òG“DÂ--Ü#òEH˜DXq­„£önÂd±ç“Œ¸îïnl‹Øsñ^úk޵»Èò>Väć¼ÅÏJ8fÎI³ïý“ˆ€YÐÍ~ObY».¾ÈÚ»’5ÈYïCh—D²ÂY1â7=Šc¨;;¢èq+XNô ýÙ$ü¦ØîzÅ·Eë’CÌÏÅäÁ¯ÈI&‚fšœ¹÷¢P Ñ÷Gbŵ µb°Ý§…ïLºgcÌ/zòóá0„Ž‘'ŠÏŒ ¾Dh"BØ‘e‘µëÊÒ]¶Hµ:ƒÆ%“÷X3<Ï3íê²ßÂñÉþWÁµhï4䫳ŸÓ5 nyB⯎#×`ŵ µbð݃œÃÖoHíîÐÇcøð9Ê>ÃYrF–k×eNÊ´K"&ˆ'8qa?¸{Û ®•ülów¦ù¤á¯]Û.¸b­ÿž·Ý½[ÏŸÔT _;Ëo¼bN:ˆ5¥߇KÊœé.Tžaŵ§‹ÅŠe±ÝÂ}ÿ*59åþ¯‡‚Öù1Öé”oE(XÎÈ’`íºtö[Yê_$ í4Ë$ªƒÇãó„·ƒÍÐß™ÄS˜Ïçù»üû×ï=Ogž`ù÷’{æü•´@ f¥¼vÖdpŒ;ùíÝ“äöwK/q-ÖQ‹Ëb»OŠ¿0p¯“K?ËÃ~›QìQbeWûŽïjHóʯüMúÝ£sÏ9n\!gdI°v]:û-‰d Ø"5ë$^-ù«þ:„P/"‡j—W‰—Ñ¡‚6ÊžÓ©ׄõÑý¤r79cŵXG-V,‹í¾Ù.%zz佬ª¶§nÜ'Zä2}ˆ[^û" mlíä>4ôä±Úΰ#K‚µëÒÙoekÀ ¨ù&yѺƒÝ}"a† Ízq ý>Îñ#„*–x [I®'Á^´–㜕½Ë¼ ]öÐ$îPáN\+é¨íÿMm¬X×ÝÊ'|§õbXǰo.…)¨J ÜÈ’±v]l‘â^’5`‹ÔL“HüÚY«ì³ÅÄ¿Úå»ÄgÔõHîkghÍ2‰”=Ïjv1oJtf™Dd²`?À!‰ÂhÍ2‰HF d4šq 5hC•æ¿,©©äuëk}çúßæVF5<^[³V–ÍÔ]ŒhöIôâé›’Ârrù!÷q[]Á¯ª¬z–ŸG,[Y›?þ;ñ‡:K@Í;‰ž§½îÔÍœ 1í¬ "þ™1DÜ=sòûÅ‘ð¥Î Ñ4ã$z––[þ¶šŒ¡â¢’ÌŒììì\6‹5géDq›µQ;ÇèÖ—Ç@s¤'QAÞ[CCb‹ß¦>xœŸWPþ®‚ÏçG‡ï63oWR!8;=Ê/+=ÏÄÔ¨ƒ¹z«m¾êBqåÍwÍGƒ’èÛ+÷oÞ-9yá±—»éç#Üä7&&Dâå·%¥oKÊ***y|‘Dl»¨¨$"v1!b³YFF†OÓ^`“H-j׆?Ÿ_ÿ°cmâ…_þ)4è:pìô¥s†+÷¹(€¢)IDƹ,\¸/?ŒJKÊÅËFFÕÕÕ555,‹8;ãñøÕUU£ùŒB<ª§ÇÉÉ.¤§éÕ® MÔ¯†E[Ä%^e߆÷:íö‰yh8ˆ~€f¦$C ˽ˆÛà˜›ÄÝÏGÈk_UQã:¸+y‘è]YyUUµ¾žž Žx<6›X¬êªqcÿO½øù´c1Q»V&o ‹=q7«Õ~®½üæ†/7œá¾iç:vá¶ð§‰‚éÆéÅ££^ð¢ô—+)„oMòdçä<¯E ·2[ö³oá¡»£ìjLÈÚ ÒYI~˜òãðÜa­„w,œê|c4õP6AѹR Æ ‚wˆ¨C€2hJÉ"«‘¥è¹¿A”W»b×ÔúuÀ·Á[MD?9lv5ƒ XÀFq%(Öó¶¹›@S°Ô èQL[`„¦$†ÑÍ»7‘(•`dÚ²¨(›Ãa·hÙ¢ª‚ïíåù4ãYÁ›‚òŠJcã:¸ôíWXP<Ä×eß¶óN½:ËЉÚu Mzz̯‹Qí÷…ÄÔÊ^s¿›…,WaGÆ aå³Ò;üâèpó¼++ÁG<ùo¶gº‡}+^~Úí+‡ /1©‡DŽR–á %³ ,”DJÑμ••]›—DÖ<ä¾04´µîhCþE'NЈۢÂâgO³íºÔ¹›eG[ Eã)R»žÚæ=wöÐèWUlÑkç3=æÎðŠ,hë2nÓÙ>ØA±BXùô9»ªOðgQFýƒVóx¸A·^^úuÜò‰ÿ}Tlè0hlÈÖaäjõÈQÊ2D¡d”¥¹&S¯Noò Oø±¤¤ÔÄÄHC‚âóù¹9ùYÏ_UWWwr°ðâB7‚j×ów_œ/¹ÆÀ;|¯7åº õ¹-!„E¡T­ªÌ—ˆ 1öYyÔg%¿"çÎüõð¢U‹as6›C]«¨¬Î•Z°ÜAê+’Ì€²4ã$"xß»ïow¥ýõ¼Y==Ž·¯ËO—dg½ÊÏ/hÙ²EϾ‰ê®Qi„_²Êníè½àÜGꮚÍJ"òýDJáâÞ½£yzÚ‹ì̼=ÏþñÛߦ­ »9ÛöèÝŦS³|%&€¢YIT?,;šŠš5ÚD4w´'‰®üž-ÿÍJ‘þ8û—‹ÏÞä—¶ªéÖÏÌmPSSÅݨÚ“D*¤ômÙˌœçï*Þ¡·¯9yO [·}îò^Ou×Z $•ÌçÙ/3Jo{ί©ûüÔËDЈ@I±{ý…¢—ì’’2½6o9kLjú ïíuWZ $‘3ŽŽšy¾%§U] ðÙ†¦<5WZ $‘[âv[ôÖ“j+Ê ¿¹AW7ÚOó7¢jl¸æD‘€|´$‰”2Ïbáóùk£·¶·4ûh¸Wþ{o®ìÙißiÛ©‡‰½£-¦o“kK.wrŸfõ鮢M7@…hC)kž•EC[:X[~è=8?¯ÀÀÀ°§WÍß79ž£ìßÙIO”øÛ¿Ea9aÓ?!Õ¸ih ´!‰dͳ¤]„„É'Hâb¶YÛvðø`PÁ›’-ZfefwwîòÏ/ψ$"?Ùƒ¿ãš+´¤J aO|9diâOÏõÇF'ŒI[¼,ñ§ vñk÷…÷Ž#ã]¥è\™‰Yñ›Æ¸hqúZÙM<Ù2$qÀ•Uƒg ÕɑÓƒn,p ìíÓCáò-´ vä¢ I$ÒB+çMQË×uîb;Øs`~ni+ÓgO3;X›ÙØu\²µ} ìÚ‡BeuÍËÛ„ì¹²V/cçDÿߣ·$\‹Eb?ü|k8WðùwYï*EçÊLÌJ³i-V_+»‰®aŽÚa~u¶þßíý/¡Æìà²Zù;òц$’5Ï2?;‹^¾^¿¨Ç`^y9oZ·ný4-£KwkG{}}E—¨÷$ /0Þøx?GOÑq›ý~¼¯½`¹ç"„>@Hð„¤ó®Ša$f¥Û´¬‹§¯ÅmÂxô¡ÍQ®ÁÈ!îþ cÙ¡Xhåï8ÈG’HYó¬˜˜È zENÃÆöº~ì¹§ÇYÙ¶ö–6¶Öt†$IˆGÁ¸/°¨Õº¶\›[鼫b˜ˆYé6ÅÊêkñ›(}x±x(#¯Š¬Ñà’Èßq6$†Q{Kå>w¶6j ûM÷Æ÷J¹•Ááp®{:2°Sç.v††† zï߉¦ÝW¾N¬wURçÊ@̪Ħ±úZÜ&rvûl÷>vë˃ý¹] lË`p9ZP-I"eÙûõa ƒ÷zïȽÉÑã”•Ž™áÔ¡£³BèÐ64å~íSÏcü¶G¬wURçªXÌ*µi`õµ²›x¼Ê—qkw7b1êÊSGÄ üßbG…/Ò˱Ѐ²èhqJ;»}Љ˜ éés ^—øMw066022bØýðf49E”ü²[¹“Ëx!¬"瘝ÎU¡˜UrÓH¡‹§¯•ÝD·e÷v×.·öOüŸ?£}¡³Ðb—!­ùèh½|Vve°Ùì6 ]†uì`mijŠûâ&K|Ç©›×·Ð¦ûr‹Éðõª€6¢£IÄçóòsŠ;ô,µílß·_/§þ_[ʽ{U……€n¢‹I´zÖU«¦­}A`0£oþ ±ÑÅ$²è™—›j2b4]L"&öXhJt1‰öXhb ‰¨€=šH")À j’H °Ç€Z€$’¢‘ì±Ìõ†õhYóSlÈšóæV¤p¹šàQÕ,P´$‰ÔkmHå j]ØÉ¯þºÏ\£MÛ.€|´!‰Ônm8 êBÉšC mH"µÛc‘ðo>‡ ¬Ý&¬Œs£5·¾»±-bÏÅ{é¯9Öîþ!ËøXÉEñ´ÒŽ_»±Ùï‰å³=ŠŸ5ÿ`Jy¿¥ ˆ"ºîXÛ,^AËHh+¨feц$’OÓØc…)PSöü‚ǘíaÜ/¹uZøþÀ¤[q6Æü¢'?Cè˜ìP²Xìøâõ”ŸÅ¶g~lÔ/ uØwÎrºc7$»’™ÐV PÍÊ¢ I¤v{,/e÷¢ gî<ɫ䳅‡TðTÇš[W9‡­ßÚÝ¡ÇðásŽÉ…pžVìøtÔm4rB§ätÇ aeW2ÚJªY@Y´!‰Ôn˜±»ïñë«ìÛp^÷ï?RÜFÖÜêvèûW©É)÷=´öx̱îHÆ+ëi¥‹ìFéºc…°²+™m)€jPmH"¤n{l.Bn†F-QÉã“ÓÄ-°æÖIñ7còurégyØo3Š=ÊÄ‹ŸŽºZ­©GwYmªY@>Z’DÊ¢R{,Úå3u²gÏÚcÊF"mÈ•Xsëf»”èé‘÷²ªÚ: œºqŸìPX°ãÓ—±zÌ`Áë¸ÓÎõè.‹b¡-ƒéA5 ÈGG“H…öXÃÑ«Ž^%º,ÏÜjå¾ÓGêº Vr;¾o쥺I˜âîò‡ HhKÛT³ct4‰Thm `ƒ¤³I¤B{, G“ì± ièb=4 ]L"°Ç€¦¡‹I¤°Ç@IDì±Ðô@IöXP DR€=Ô$‘dmJ4ÇŽY€9Z’DêµÇ6ð SŸî*×6-.mH"µÛc›þ©¥Bq-hÚDj·ÇŠÿÎ+ö¢Ê˜X)fUfªV Ûleò¶°Øw³ÊQÝÇÜúgñ®Ø²«1!k/¥·w&‹ÆÄUEc•4²C´!‰äÓ4öX1ò½¨²&VŠY•™ªµnÓ©ãg_›rêÊv{c‰OÎ1÷Ïʶ|0v w.Uz‹­ŠÆ„+}4@# 0C’HíöXIä{QéL¬b©Z%6‘…v³7¦ÔÀØ?+ÛrE®Ø?» ­ô“SÞ„«¨¥ ;hC©Ý+‰|/*‰U U+eÓ²Ó6æþY¹š×º±UaM¸ +¡Y€D’©Ûˬ‰UÒ¬Ê@Õ*µé56(4éé1¿.FlyÛe.]iŽf_~qt¸yÞ•YòËÆ™pY‹–$‘²¨ÔËç1~Û#ÖÄ*iVU¬j•¶Í:ŸÚæ=wöÐèWUlybVæÙ>gWõ þÌ#ʨÐj/B^Ù²&\ÐÈõEG“H…öX~Ù-„D'& ½¨X«¤YU¡ª•b›E-<æï¾8Ÿ¦1Cÿ¬Ô²±ÏÊ£>+ù9wæ¬W{eW•¬ —vLÐÈŠÐÑ$R¡=ÖÍk[h}¾î¢~4mVøz?»µ£÷‚s5ö¶€DG“H…öXîÝ«*,L€™Ðôèb=4 ]L"°Ç€¦¡‹IöXÐ4t1‰öXhb ‰¨€=šH")À j’H °Ç€Z€$’B ì±Í5/U´i•ŒhI=VKPÑ!m.jA’ì±Zƒ) ^´!‰tÙ+ù\¼Œ÷º2™‰Î•¡…[¶»ÂCŠQܾ»¶*8ö¼Pq[×[fŸl’8àʪA‚3ëêäÈáÉA78P~‹à·Õ´!‰ä£ÝöX,X¯+³‘ë\ZhéÀvWpHeO XœªXqÛ5ì€ÀQ;̯ÎÖß㻽ÿ…#Ô’ü¶êB’H—í±X°^WF#+ªŸ¹… ]wùû…QÜf‹·;ÑJú4}hs”k`0rˆ»?ÃXvhðÛj ÚDºleóx5 ç3%âX¯+“‘ÖÏÜB‹-Œ®»ì~I‚Uв(?év°ôá}Ä⡌¼*rŸ . øm›mH"¤ÃöØ ­O+]d2¯ÕÉ^±^W#+†¹…[˜ÜîJÒ(+z1ëøÈöyCÅ+q;˜³Ûg»÷±[_®ìÈíR`[ƒƒßV-hI)‹ÖØcì˜8=Ô{@U'¯àõ ˆóº*™Ì-´ØÂäu—Þ/ù8ŸŽs›ècÐ?h B¢·2ÈîàãU¾Üˆ[»»‹QW¾˜:"nàÿ;‚ßV3ÑÑ$Ò{,{ÐâÄë‹EwEͰ^W…#3©Ÿ¹…[˜œî”ý dë– ‡-?2l9¹J{l»-»·»v¹µâÿüí#ømÕ‚Ž&Øc5 mÝ/€!:šD`B“ì± ièb=4 ]L"°Ç€¦¡‹I¤°Ç@IDì±Ðô@IöXP DR€=Ô$‘`mz´Æ‘ˆÝÔ2DK’ì±Z‚òû¥ÔÑSöP7R èH¸(…6$ØcµmÝ/@!ÚD`% Ò&{,*»²ö‚Ð{7a²¨»Â£'ìAmŒÝñá³Ù 5x­4 ¨e‚6$‘|ÀÛí±Æ.áÎU쇕•½Ê9²±ÅH…¿¬Ç–j™  IöX Z`]‘+öÃîB+ýäï‚r¢„ƒ=LŠ¡1Ø­c=¶@PËmH"°Çjµ=V‘Vɉö HBW å€(ܺ¬Ç–j™  I„À«uöØ•æhöåG‡›ç]©ë®ðèI‚=’™ì‹Â_ Öc«ÔÊ¢%I¤,`eZ±4MfísvUŸàÏ<¢Œú­æñ"äìì{$3Ù…¿¬Çµõ@G“ì±²#3©¿Éì±ÈØgåQŸ•üŠœ;ó?Ö«Ý…GOìAl¬p_¨ƒã¶ŽõØ‚ ¶èh=VÓÝ/áKììÖŽÞ Î}¤–’€¦DG“챚ŽÌ]L"°Ç€¦¡‹IöXÐ4t1‰À š†.&‘BÀ M $°Ç@ÓI$Øc@-@IöXP DR€=¶éQ•tU…òV-V5ªÁ/Êl-I"°Çj lÕp4*7›¸mH"°Çj õØ/­‰!G’ì±dAZeEèQü¬ùSÊ»ø-MX6Ìvg1]1eP{¥}âË=ç$êñ¿ëÒ Ü³Žâ!jf¹¾7“Ëí‹PêP×/·qpFh»««-—;†æhcwJ²$…ÿ'0QâJx8Øns؃€ýURh$®6$‘|ÀÛí±‹m#Îü,°²ú¤ûÎYΘ˜]eËéå¸Hæˆs褈1é?™C®8JÁ‰h‰W£Ãz·ƒ Œ+‚o£dϜè×/Â鎶œbò%®$òaý~•$ÃÕ†${,-°ÇÔYY#ç!tJÎþRwgt•ËbËíÕ:nnå{Ñeþ‘F¨,:ºrî½Ö”q棇gbϯsÜ)¯Ó(%½…sämÙ’Pr/ð²ZEJ\ÊhrŽa½•$ÃÕ†${¬VÚce­¬Ø1±Èö•|žÓ•AíÅ™º³ëôŒÈ£hzR›\uœqnÈ+gG)/ü¾É¤N<·4v!ùsÕ,Ýt;‚B%.e49f[æ¿J $ÃÕ†$BÂ0ú|„r]À«|ùMg%¨³²Z­‘3¦, ®Ø2°½~Û{ÖÄ~@z(;'¢Eé¤oŒ¶r‰ßÜä­F®SËLNˆ¢;Ú²;%‰Âÿ*q)ÈÙó_¥BT"ÃÕ’$R°Ç2­Xš&³ÇÄe¬3Xpµ5î´³œ1eÁ]î¾WÇÝ¥ï/Dw°—»ÌF…'=…Ëž‰Ö…ÍEÐmÙ’Dáÿ •¸”ålŽù¯²id¸:šD`•™IýMf%W^’žÓ`ÇÄXVqFWI°eÐô2XÊå.•¢¶.7°vÙñ‚¤v’þh_¢Wï+ü?A¡—B÷Ð]”ÍÕãWÙ42\M"°ÇjÚº_Ct4‰À h=Íë=Ÿº˜D`MC“ì± ièbA€¦¡²$Úº6Q~ƒyK¨ï' QM14iš¯Â6F`QA}³9‰ˆ! ‹öäÝÜܼààé ß·âõD#°¨fNDÆŸŸq;VÈŋߓ·gÎ>Äwþüyq$PPÙu¢´2¦LùÏûÉè‘„XO<êèÔIUÛ¢Ð4Î:µ›ñ@‹Á$Q½M¬}œÝ6®SÚܺÁÕÕžË+\^ãºb)7Jøžÿó®®i\îWÊŽF"v#ðôŒmzxŒþ"*d€.¾JÍêó³Þ&VbÊCL|êQÁgä•†Æ $T×ΰ¿ïŒ¢>#3ס^×ë1šrþ¯)Ë{xtdÐÌî7  €F…šD²&V†¶ òüËÏÏoãºíÄݯÍ•|”\‰Å`µqex):aŒ²bx=y›î¢ÏÜQMt™ñ*ÁÃå77|¹á ÷M;×± ·…(\'cSRó÷ÞÉs_Ͼ°Ä³îƒ¬,ò?v¿Ú6xƒ*ƘY™¼-,öÄݬrT÷ cŠ7“Ñq€ŠÏYHûª$X+9''Žœè¡b‰þÝ„ÐòÊÈ·~‰£ÏËB7lßG‘v‚SÇ/øiFÒx‹Ü cÆŽà^©£(ÎSTyw“ÿ:£¸«KúˆÖÔ ñ¬§^:G.Ó9=e™©ãg_›rêÊv{c‰O¤1w¤ Ô$’5±Ê1@KRï9BÃ& ÅÑòôßß[ÂYú²pZ)ŠÜŽ&Þ>¶<ÅûÙ3!;ÿ](j6B¢L¡8O¿þè‹?â¹$¾/Z4‘©)ͺ³Üï³›sðBôNOY!fDÚ5ÎÞXºP†ŽT”…šDõ6±ÎÎtÞRë3'Bh^w44#¹¼ÓÚ9È`­Ý?±e+kœêÞ±-qÄ/Qœ§¡Û“‚WÞ¾±ÒÓ@úޱg4*Mì ¢wzb…˜²g_ ½™ÔÌÙ‘>ä·ô(õÂÙÛT"Œ ¶Q~N„ ×”/YÞz‹àuÛ-­/Nyl°NäNŒ©uzæ~7 Y®¢Ówþ¥-±C?Š^s=ÒC2ŒjÊ^Þ]ØAä=æÕ56(4éé1¿.FlE{@ƒQÙkÛÄ©1'BëDw•š¡.ËУÈ÷uÞÀy²¬‹èç3=æÎðŠ,hë2nÓÙ>ôC }÷¥Wc#½‡­Úx}ª½NÄcÚôþß$ÑYsƒªó©mÞsg~UÅn&¨òõ½NDàÃåúÔ.»Ý“Ô÷x‡ïõ¦\’¡sžxF'߯4¨C‘Aµn¹…ÇüÝç+l€*PY5ä::>‰˜|ƒ3…†\'@ÇQÁœ¨üýU§·h˜håùóç)͈66Ž­¾9´$ѸqcOŸ>£Ð”FÄѲá›@ûPÍu"Ɉ¹ò{6Ã7C6Ù7õ£i~_ Mù„zqQiþË’šJ^·¾Öw®ÿmneTÃãµ5keÙÑLÝ¥ÐèhD½xú¦¤°œ\~È}AÜVWð«*«žåçËVÖæÿÎpìa§ÎhLÔŸDÏÓ^wêfN˜vVÿL‰"îž9ùýâHú/ñ ™£æ$z––[þ¶šŒ¡â¢’ÌŒììì\6‹5géDq›µQ;ÇŒR_4:jN¢‚¼·††‚ω¿M}ð8?¯ ü]ŸÏßmfÞ®¤Bpv6z”_Vzž‰©QsõV @#¡â$RÊý` …Å6hÓû+¢p„ðACi@ÄÙ¼ICO]ùåE~Ùê}ßñ+“/lÞ{/­ÈÄq„ïüç¬WÇ'ÝìyðÓÞúDãšWýV^þ“cÌÞ=–`JÅç—Ÿ>Ý1ḻn†õ ù½×µ5‡Xcضó g"×óyÿ°ãëä?³Q‡~±øƒŽ,É2óÊÌYV¿Ùk#ùßõÓ×~oÅ(§YvãOPŠÆ½N¤Ð<Ëýå ¹PQUÞÒ %BÄ|ˆˆ!ýúÄü¨°,—˜ggD:ů?M·æçbràó*ŠþÚˆPó ÍŠžÓÆ@à—ÍŠXýϘÝËšÿ<{cıœ,'|ã3ír›ƒ#8GâN÷Y¼â£çŽÞý"`¶°szØ=¶Ê–:Ñ ™àº9tž»³•¹¥•Óû}»·g Ã%'jQñg–ÌnS“}.jÙÉöM PºÝwímópííð—ƒX¬W+ôjøAU¡Ê$RÖX÷ÇŽQg=­L[±Xì²²ò⢛ΖÔþªCöZ“m¥ŸÏËmù¿éˆÅGYÅ5‚(`ÏžÚÚwÏËO¾0Œ¹Ôyk,,c»^6vhP_¯A÷¦G¢O:·j„fî=g'âXì SM|ã_Íý-¾o+œj)욃ŠÏΔ2Ï™¶,*ÊæpØ-Z¶¨ªà{{y>ÍxV𦠼¢ÒÄØ¸C‡.}ûñuÙ·í¼S¯Îª-Uµ´C É9aÛÝY†Ú.D‚Ù\Þõ…{®<öqÉ–•KÎÚoøÄD0-òIœÿÝcCîÐ +dY·÷̨až6æz¼â¼?#äN®´G;N?øj´³iÕ³ç7öûl§l_ÇåÝWÜy€Òm£ú1ï‚:ßOÔμ••]›—DÖ<ä¾04´µîh#úŽ2áßí¢ÂâgO³íºÔ¹›eG[까Fa»æ¿N›–Fï+2v99¶;±æåàgÇB숙¿Ä?<ö[×UYƳ¦ø&šnŠÕÇLLfy´¼qfåÙ2Þé™[t\ÜÈõ–[†³+~^Ú»Öî“hdÞækÜËÇE>Qµou`Ô 45¿³Ñ©W§7y…§üXRRjbb$Œ!A ñùüÜœü¬ç¯ª««;9Xx q¡Aöõx9w™·QvV‹A£— -±¦ãÎ…Ô.°L>ÿ]+Çö£C±2é1Êø'³žÅvð Ùè"µ’Z«å'û¾ûDÉ^ !¨ÿsgï{÷ýí¿ž·3k£§Çñöuùéòƒì¬Wùù-[¶èÙ·3Ñ@Ý5ªÁeoža¯YßN6€+5 …ꓨæY÷îmÌÓÓ^dgæíÙxößþ6meØÍÙ¶Gï.6ñBuó Cýs"ËŽf "ES’]F³’H)ó,8O@kЬ$@7$@ý4ã$Z:g£Ríc¿þª‘* 4ã$2©éüñ[ΟW ¤'Á¤=ì– >ŸÏªý`gEyyEù»VmÚŠ›­½¦žúTJÿþýSRRÔ]4 Í;‰0ƒŠßæeVýõÊþË”Wh`lZØÂ¦d@ˆI[‹ÖmÛÒôûw‚kÄZî ûº5鮋c¹'?UÅžH $Îê›w÷\½&°sÇ£ΰB² g€Òì“èeþ˵éª8Uë ²‘!~7Q•YåS»¦¨oÑ¢¶íÛãú9$úý;âGô³wíŠAO|¯8¨î‰*‡W‘›9rìÁ@nJƬO B`>h8Í>‰väìÒoÅ95éX«Ø a…¹&••,ÄGÉF¨µÎÍå/Z„±W®¬výºš;Gxª¿¯Ž¼oŒ$Ÿ´5ì]´úÈíç¬.^SãÖ æ55³\ß›ÉåöE(u¨ë—Û¸?8#´ÝÕÕ–ËÅgÙ--Ü#òE(? Bïnl‹Øsñ^úk޵»Èò>VH:8(!BNsÈ[b=¶»Bˆî§Ž:xýÁ‹Ò{\.¶0üJh4.‰ä|Û=ö­Œ5¬ƒjƒ€UOÏ9?ÿ—_ ÍÍK ß T²ysëœÜbssSÚMùêê:ïõœf½ž·¯Ó®ôçRŸ|>5oáåËëͪÒ061;q"Z¢ÅÕè°ÞíàãŠàÛ(Ù3ç0êõ Ýø¹÷¢P‹9´"4-|`Ò­8c~Ñ“Ÿ‡!tLþñ!ÒG2›”í.ff™ßË, 9t…aW@#¡YIT·M¯u^#øÑ­xù”)S¾þúk;;;‹ÕvM,±Zþwô8î÷Mž˜Š¾sN Lö9¾ƒòè’Gèé Ÿ3¢{Ä"žŠ6óÑóÄ\g~Åø›ãNyF)é•(k„]*êuý€hEsØú ©Ýúx >‡iŽˆ©w÷Ä).âÏc î€FB³’¨!´k×nË–-3gÎ,//¿|ù²â>ÆQ‘ùÎñ#Vç/ýUfîTE<]SRzK¯熼rv”òÂï›LêÄsÛ™ÁAcbÇ&¦-5¥߇KÊœéîL; SØ¡ï_¥&§ÜÿõPÐÚã1?Æ á;}Â)ÝÙƒ'^_\»Áʘþ¹&¯»üzdïâ÷¿ûÐ(4ï$:ºé¡ºK@4ã$úï®aÊ4Wª1MJ3N"´H"Ô$ê’õI€ú$@ý@ ~ ‰P?D¨H"Ô$ê’õóR§žš-¬F‡IEND®B`‚PK¯9AÆÐ½ØÜåÜå-Pictures/10000000000001F70000022119791551.png‰PNG  IHDR÷!ܘdßå£IDATxœì\éÇg;h–Ø]º;T <»À>»ëTÄ:»»=ãì¿­œ¨¨ H˜§("`ÐÝ,lÍügY\—-BDåÞïùáÞyç}Ÿ÷yÞ™ùí»ïÌ΋ÏÌø þ“„Þûo%‡¤î±d®+ºùêúѰ´r4AÕÐVÁs Ë—®\‰Ç@Ñ×>L+ÇTMLtÊ3>ÕòTLú,Û™ËJÜ}à6aæ,[¦Âý°kÿ ´.ó·“;i=?º/²ŒMï=}jmyÕÑÂïÿ@ÕÒVW†¸ÕŸ?e±aDÇuÂtO}^MòîýA„503§by%…¹e\‹¥ ¢UX»´w÷g6O¯ÿÌIh‹ð“ÃÎÜŒ.BóG,^jMÁ ëâH8˜GÔP%àÍGL÷dÈkëÝõ‹/2sJØ|,NUG›JTqù}¤]£Ž5Ѹ¨<‡¡Ðô4ù…YÅlÂz/^bIÁ7÷)èIÀ<‚ âÛ3þþQ®ÚeÁŸÊ·ÓýßÖmâ H³.‡/LÏ8!žŸ\RAª‚Œw±ÓßÅÖíä/]{R”N ü'"ý¿ú/õöͨۊ«S!ˆU÷ECPýѽ' ¯ÖÞÕ¥)”5Ý¿Qg›©×ï7%Øú&vl:-ª UÖ%Ë (ãN ÚRšH.ã@г‡ož5êXsŒ«Ö;XÆö$šÜVïg ‘¬ž´ONnš)‘ƒçq9ÂÔü7ÉÚV /is¯Ð:,:þ¤¶0åÈŠ¢œú±ü‚AógÏ@¹%¬æ¾P\Îâñá&Æã°45ôË14ih7ê6ÇéÃˇ×ïBUþ]·P‰Ï.ªþ^Π9 _RQø*¬‰åm]=aA…¾ ¬Ýìæ1»Z6 ªîaïTVŒÖçñy˜Eï;9©©)¼¼G*ªþXŒ@ò¿ ~-øœò7)¬ +ú™+á ØÁlgdH×gP/®‰0a¨¡ãüìÏŸ³ Êj8|,ž¨N£™›êQq‚32æyt)V5µÔ¨ÊË)®„±Dº©•žŠâ]¨ÁœŒ Ô ‹ÍÃHšÚ:V&t¼ð Gø¹™™™ù¥,6”UT:9˜gÔð¬¿xË©Jyuíê²iS ‚b4M»Z’gr‹œ'#.¡ÛäL£l>—‡` º&]Wmç8;snK»GÅ@Ž9¬À+„ÏJMþ˜WÆÂ©†fæ¹IïªaDÝÚ©£6 Ý[ž—õ>»¨ª†ƒ`p$IUno®õ]Î @Û‚©|¶Þ{ôì`Ý}Ô…»n ôè&3GT–§ò2eúEè³aÎTT°<>†LÀæf× Fª«ñ·rÞjj ‹1Õ4 ãï#àÇû~ì¨Ä#0?0ðñõ7lR¥iöv31e¨¡™ñ1ñ®½œ81˜jD«:1)ãLpÝÉ.=úµoÝ,DêíÇï :ö·Õ&pkÂý{5F²ßËÛ夯œïäî8o<“©NdWWÇĤOuê`‰‡øè.ûnsÆvÑ× #ö§ÌÂÕ§žÏÙKYpÒª1{mø<Ûÿj@ÀHáÈ–·:&)WDŽ޳g;zììë9˜<·1fØ~öY^\^ÄÅ››Àȳ‚ܲ\cƒ€ás«>pn‹…€žÅŸâc[àdÝI ÙAÇCl!`0j:êúêUÙ•è’œ^diŠú€d%ÄÊt{æÙi÷2Ù|5E#ò½zWœ3lƒ„ÆRÄ%ŒŸÔùrñ#¼²ÄåËsl0œ”’]ãôè4W{Úž»aS/xüZ|9ÎõÊü[¯.¨¸ •]\ßÑLt—¸z£Œå%ź 0žU¦öôs^\^Ž”•ò¬mUssYÊT™D¾»°¶W™%ù‚À¯ Ÿ[B¤Z ÓIË´Lí°u笤o¤Äçæð ÷Y ~v~þÞá46IÕàÂRWª¦Á|Æ›ýõ§AmEÚôq0wqÓ0 ;È€V#o׿lT+Ñ&öíºUÆ#Pt®¯ëC³têÁ¿þc´¯NâãîG¬~\F%ÀX%ÍNN–÷O?J[<ÜO—TU³ôP±‡…0¢~IËœÜ[Á¥iˆ> k]Êîg%kÝi½\õrá°X)óÞ$Ä屬5YY<ý=²ÜîE~têQšO÷ð¬k¹C_E^†Wos™™¨ ÷ö'רÙšeS_WI ˜a1»:{ËùçÕ0š„Õt˜®vtpI¶¤Çòž=ÜDB/ÝD3%ûŠæå9\¾D3Ù¥|XéöA‰ª¥¢„Çâp£&•–pÿÚ›VQ“Éæ°銀_¯ÁÉÁçñ9ܯ›œŠbezGaúLrµS甘·IìN¶d¬±£ÿ[¸+÷Õà ÊKÉæ"æ$ I/:å¤w)ó ºÑÇR¿‘KÅšîA#Ä‘ „éý œH ¯¶&(iq¢bx²ž½Zâ›XQR[¦Lwi“¼|.Gù«ee}˼Ç}Óô~sbÚiiRìLìm.î¿õ„OP¦w’çöKî×.ºW§Èaþ×g(¤½¢rô„»Î%U;9;½{ý¶œo­Vwƒ¨ó*ß—òM4” ÎoÒ+-­ü˜Yñ,ñK].É_Ѽ|u-GA1é½hE Mþ÷ù3¹36eKÀhÁÆ8FL1æ}rUU%ÔCð8<Œ'såݶüzàÔ8¬Lq-ÿ¡,nŒ©;§xRûåíBMF&‹ç`¾NžÛ‚ë°T«u§ß×<ñÝÍrRÐDÃÂåXjYÕõиªª*¼Šæ¶%½ XOOµ›7«Tè²Ý.$ª+AEî5æ0‚ù²© ëÐJužµ`HÖ&äEïjhÍPcèªurRëè`¸býí FÒà—_a‚×Ïð½z+>‡¾ÌÑ»vrnâ°‚*X,†Ûð¥#FŽ–;cC×·SÕ¨d⠵ɬµìMµÞ¼+NŒf“ȉÇãàðx¬šE-øzØnÀàÔÔyqwЏC´ú{þžõäú›wµ0¬®EëÝÅäå‹äêZô3@ pS­¨‡ãÈšÆ6$Á‰õé]5Nö$„ wUåe ÑÑGM\J`DÀ \.ÏÒÞœÅ!T×·µ¨»öÚ§I<‚QÒ°dD‘ÏXÁ≼ڬ¤Tµz†W©Îo‘“HƒKàý‡ìƒ Ÿ½ÉˆùPÉæ"/Ü ó,^YžÛ5µœ¤{tÅK¹!«( ‚hb¢•Ò¡Øxu35Q ‡O¤*—¾t»Pð•ÆžÙ䥎#ôQ‚þáò•°8ð+ƒi8có:æHâÅï¾ …¾SÁc\ÂόԌ Š\•Ç@$5Ó#cÖŽqo5#]Uã~j}»±ƒdh¼ Ná×`k» T*ߞз4ºxì¹µOws%ÜÈQ½¼GÂ\CÄaøÜŠ‚ã˜ÔÏgSí¦XR=&2Ï)פ«£§"«4óH‘Œa‹™iªÌ#¼ŒÓ)öÓ¬¨ rL)`AxCm¦2nꪫÔª“I¶3l”œõ9Û¹¬ˆ‡7ÖUçwÅT—R’T 1ÉÊÚ®û”U×­>ùuøŒ~PÑ´9Ùà¹õê²b ;ÎŽhšËå8a‰ððrÓÊL–ç¶¶6Y½MçKaùK=ÝÖpÒ¬öSP®ãp©ÏäÖ,--R-Œ±‚ëáW½ÿ¬zyWFVqN›¤ª®ŽC/oþs\—Wå¯ Vt÷µá´;ªéœ„ ‘î7|ÆF†˜+z’Òy„Æ» U®tG÷Já¾l+=%*q̳ ׊èø"m“Gq…$p:µ#0x }®ÿŽÐž6=muõÕÉ8„—•[ò,ú=]I§QÃ/„ÖöqèÌÐc¨sjX¯?Ÿ½“fhežÿÕJ“ÇòDmÓ¨K¡¬Žƒœ™6VzŸ›WP|ïeI›N§Óž\ e¹; éÈ4 ©S9ìé™$e5Š®nþ³›vuC úšV-Üpš†nnÝ'‘—€¡¾î±[ñî¶ K¦*M‰Èçqss‹=Ž}€7° á 3kynSuU>7t¯–G*Qè°‚þ!é^=Aß¹·¹š{ù‘ƒ' "c!^ ŒÅQTUQÉE–zê®úD,çæ„>z£cf„•|–ðË!ñ¼¼“£½p&äåˆ*J}E¿}%Ô,GææFã-lôÊsHgbß(«bUÔ¨µL-÷è])‘¬F í ,QÃÆ’úêUjèÃ7µ‚ÁÈTuM-¦–2z¤M¬ÌâÞ¤> {Íæò±8‚²ªºž¥ª;ö;6Þ¨ä#J–V4"D³ß°ázuݦ“£‘¼]V4¤i–ü.ýqdL-‡a°$2YEEU¡…žãÆ–ïãÒý»xOQR²23ä›jŸ<ÿh‹Ž`°8•Îâö[椠¢Ø™¬FÓÎÏ*ø;ñs5«–Ë磽B¢Pi: smr]1¬±¥l·±Rî9;˜"p­‡Q7äye®ÁTü‰3ŽÂ‚Q©0­&×ý`ìuGÕ@I[wæf4ê!‡Ç72EKWÏPƒ.Év€èѼ¼½½­ø¦ÌHÖ36HååÝDURÒáÚfÝ~m”ÒÁØ€–•Áý]PJ‰ÓÕ·QV×·^Û'¢6CO›Ñ ï˱ÆÒèz4ºŒ]fövâ›b› v¡5u™è¿ën·¢~hè25ÄvÕϪ`HFæâ­KØo™“} JÓFÿIdŠ“ï¶”{:,Ï+VnâÒëÂhLBfOv°üÜ©äCB0OÃA Š¡±±|¿0±|^IÜä÷Ø”TB²~û )Ë ›S×6PVÓa×V'ñ>bȲ5Ɉ܇'€!ð]ÁQ”«²r3¬ í¬ô‰¸´¸ìI\úùˆ|K#põµoЯ¿ ù ø†¾uWu5åFË—•We%?G« ›7//G Q $ñpŽß‚ª®RyÎÚ#ɵ‚} <‘¤¢¦a`a„`{§ŠUK%=z‡Ý ÌjZ´0›ÃcÉz¾¾Ñ±<øaTtÌTtæ‹õ?Au [SMiȈ±M,ÏæòÐ* óÓ>w‚þ*?#ÅeUßR]8¹?yú,¼µJÑÍÇ­ä~Py‡„36AÛÇ–5V¿ ÙY™'ŽG@¢yy´K€Ê@{¨<´g€Ê@{¨<´g€Ê@{¨<´g€Ê@{¨<´g€Ê@{¨<´g€Ê@{¨<´g€Ê@{æçRy˜Wºeþôó¡ÑEUµŠåõ>µÃïf¨èû~zë÷£]k F˜é?.gwÞýìÞ‹ÆKäºç›Tž[vbçþÀÇ©\,ÕÌ®ã Ñ3WÍè×bƒŸgì |‚Áû ÷ÖPÖƒJƒ¾Å½Öb­£É¡œúE[08‚º¶¾›çˆ€ÍËm” ?Ö±F în59¥DËþBJD J̺^}%¢ Í++åx«z×:|{Œ2t5£ ^Ïû!4ÊjðËÑr•¯)â>ém‰`¥A,ŽHÁ³’¢ÃÓ²¿EåóóѿTI—NnC0÷Ïiõ/5,…Úl›,YE™È¯­.ÍûxÿÂÞgOsÒ£a[ɸk‰`Áˆ-«þ€×ŸO¦jŠÿ9›¿oŠ.õÇ:ÔÎø–³h"-?Ã6…J<GY¸çü’±=Uð˜ü´W×ÎÝîExå§¶œ|ž[NQ×ë2`ä†-ËÍëNháꎛ.ôŒ9vîÞs6™1véásºœtµXñ± -Pw’¦uRÔhƆ[è7cñÕ¨*ÓaÁæãgvM­áv?ñê–—1º×–IÏçð{_}{ÃCO´éy+îj7z}‹›¯t{±ë\è½iwŸlêˆð«ÏïôÿûZhZv•fè1rúŽ5³Ôñyñª¬ ëέ՞ӎ&W|ºr»x×pY¶q9ág?øÓqüI,Aãr|œ'ôlS¿¡ûbHÝ_'Ü`q£mMŧx}~óª#×â?æò±†¡i§ž³Oî'áð\k£kE,4Q?¦%Èy“gˆ«’w\¤©ø¼õýx¥‹»–[}t{Ü”=nõÇ—_}i÷ÚãWï§db(švºß»ö7êš‚üæÆÒâ…»`^Ùþ%ãFÖ’êO0Å]ªy'­ìNÆ×ÊkEæÙ"ϸ‡e¶kDÂ5à?H U¾¶øÎ±ôr4a>ùâš îÂL]s×?6¸ Óï¹þQK´²·ÉOJùßžgÓã_žPÆÕ_Q±&gX¸ZèQÿ}Ÿq:À»÷èÚ6öæe/ÓJ98¢Ž½ -Sõ))½œ#jtà§J1X“R¾}j,Ì—á™ôèú ñ;&ÆÖ(ë3„EŽOî±*$O1ðèç™ñ<üÆÿçÉܸ« ^ÖBèÆå…¯÷Û¶ýC—‡dη÷õ˱c1ÜŠë§P‰—¶)ÏÃÚâ[ƒ|÷þ‹ç@-Bmzâ›Ð;/ )4²w0yñúc-@1±µTEsHL£ÇEœWë.¢5,Wý¹ìѵ™Ÿ8»ë ›ÜÃ?$MÐLlôÈÕ±‘·ø„꘼üæÆò-1Ö‘=£bJ‰Ê\]]‚ Ö$·ü ×!}ÒÊt ÑV$ÎyÆ8¬ p@‚ª|MIý˜½Ë\{{ / R‚&ÆžyvxQùû fÝ–T~Zòr󉮺Â2TúÔ¸ˆmxn‰CŸ{òMQ๴fuúÏGŠÖèGaëÐ2O&w~7CXž•öHB)šù÷ÓcÃLr¢69xï—n‹“/óˆKTÊuk"·†_Sx½x0Ì‘çGê+±Ëž0ͽr­»R4}¬EfíŠÌM†Û`^m-F7UŒÆ ¥‘åWþä“WÎ[õz³ÛÓÌâÃÖ“Ïú8iÊêC¹ö¯ç#…6àÜÙšu÷ÂôLi ~×ï8ÖMݪ™mzÖ¯‰Çåk@üÊ•h]7 ÓïêIÁõ¨©z»5µt­•«à‚PÊÝ®ùôFeéQx,$/¿±Ô–·0Ưp»¿úpŽ^ûÖØrœ`NOš{Ð%qÒÊèä&œZbg‹ã V8Ðï2'XštS˜Xÿ›úWÍbB•Ï+8 A™Ð51ù}¢`THÔ1§àÞVÁ595ŠmV|¸+L¬éoˆþeöô×"*âHç1²Æ¤BLÇ­E¯+4A à _Ý@‚Ìv6ž-V柕ò.xæ°X ¯¦cÐÅÓkõÖâŸ' + O¶¸t~–÷‘ô¢Z’zï íd6Wš$×Co»ºÄKùÅ·- t Ì:¸š¹l”™¼¸Åm6~\D½]±xõ­Ýéxnµµúª„’À5O×^R_oç𼄺YO}yùÍE‰ÞÂE˜OZiDÆCdk þ]5=ÁJ‰Í>è4å¤U¬¨ñ³Eñow€Z¬òÍaèɆ&^‡vºË+¦à;$Y›$L…ß4eMƒÈ¶Yo=ùe´× ´!„S·%*ªXªH™Â/Z8_<ÇT“ ÉAñãÒÆ!ùá—¦ÕßÒä×|@•TKþíV™¨öÏÂ.<ø*>ùCJÒƒ›ÉawMÒ’;)7õ¶mS¾Û‡ú?€ŸmÕî6–Wk«Ñ¿¹ýЏƒµ#3¿™±|kŒTÃúÅdlƒ¬Y]‚¦Ÿ´Š[‘y¶È3þ-P‹UžL2ÛLíxzyÚ¹ß78õÛK•€ÉK‹¾vöæÂ›Õ­G@PZlíìC ËÓ.¾¨ä¢›và Z쨪Ùz„&6‡eh”µ¥˜Û` ¯GÂåqøEÏ ¡ÞÌÂ×Ûjù’— FlâRÃÆõAx*Ãæ/q¦ ²ο·NÛ˸üš‚¸qÅá×=îÿ-ïa§Ÿ1yÜÁ¤à¥ÒxÈgg”0z¬Þé)ÈãWØXr*¯ÕH+ Ž(ø¾³K›â˜8|ö瀷Eû0·¢‚û5Ÿ“·êß‚}öÃ…vþ8ñüŸ?ŸñŸ*™t×—ßüXœ y-‹Q­~Ðe:ДV0M›CWlªéþã´|ÆfÍ­c/{Ly[R³ßgÌ_ ǯåŠåÂUgÂÚ>;Ö‡ç\žÒ5ÖÁ:71x«ÛÛY§ÅÍQu&Í·Ûx$¡ôÊ”®¯,ô³?)á°Õbö9µfGæ$ì÷Û1!ê ƒá#rÇZíñúîXó0kË€.‘žîªPUÒ› k“rf©ÊŸói²«òÃG¸kGÌG?ŸŒGùß^cWëaYÿn›{Ýûè(“¦{ˆ/ íì´Þ¦ƒ‹©­&/®ÃÇ`IC5d|…gö£CqE¥éKzö=¥¦ávûÚ†&—¬Vð`,Žò*ã£ñ—'7Žt³\Zá›9kS¿=¡™Q뼬ÎÙ2ɬ¤¤ÏŸó ¨:eæ· véµÇ(ï¸|§ƒ.í@kµ¢Øá¦øÓr•§èzÞ ?¾ãÀû‘©™|¬’…]Ça¿Ïî]x)Ji«ÿ©ÓâÈêúýŒZ¿u™Ì9šÎš»7Y3]J,«U]~êêß3ºTó!‚ZýO“†ž9í=î;¯?&¤WÌ>ö÷|©Y{qæ_ˆRÙ¹æÔõÐÃîAcËNÓ'õSÃË¿yÛä…ÿîÈï'—¨6WyÉøÀ];/¼ýÏâ‘Óú¿pS‘¥Êó£ä4ê7×èw‰¡oKù’‰ƒûdß=ÔdLeØ,>ìýtöÝè÷ oß5h “¨xqÝ+ô¯ªÉrc±‡ó.³_=ûqIÒ†DÖÔ¹ç£Tw­9~5$õSRUӾǡ yùÍ…ƒmyŒ ø]ÚVlE©fø/óMw_ J Ö\°^Æ. ^mÆêC3VËØu3=K|óÞÇlQºÛ‰—Å'¾îr?÷ºX¬$»¿ýÒÃÝuªQüîðÆ:ÿÍF]¸—¨ÒñDð3Qa_¯|L/.¼ÕV‹¦mjnî`ïD¡Rðð­ZŸ6ÒVTâ òò„…hkk÷ÉÔÓG3³³2£"ï O/¨!0ço:é3ÈX˜»bŸyÐþ{oÒL—‡†ÌÔ6Å©zÓÍzp—C/0B«$žšè¹!ÿIò=ì­±îJÙ©ç„M ü #«¾÷â·;€w|€ŸŽ¶PyT»SÞ§ á-¯@×îî÷ƒo;8:K«<ލwÊÏå·…ËjS.×/àù…ó“ü•ìpêf¤µü¨ïd/OvúëC8H’ص«g?9ê@ˈ:ì6¦i|Ò0-r]~À”+wu6¬¬àžŸì*mЍÜ1ðèx×9Þ“=Ÿ;ÔFŒð¸àF¬Ï¶ƒ°¨Û±ìª9zʨÂ×þ9XËõvš­ÑUÐÊ´…Êóa¸¨°€ÁÔ“W€Á`~þü ‡—–hÖ³N[nw˜uóóyocQ&—•¸",gÉÓOKÁ*"ë.ž9i:xö6ß:å‡ÞýÀèºQ¶aÏÍ÷oÝ7l—+ºÉì}p|gC4AÆ¿—gÊpÈžõîΓGïR~Juø¡€nºh<Ùlk'í=›cæén¯zhè}Jâ~ÚäîkS””] K ØØ½Ç²…Ão‰2kK‚y2ÇTU¸ITquS%>I,“Vyæà¯Kª:w×)ŒH ÊÓû6ÅÔÌ3—OXô¹@ì½ßKd§ßöaK­ª9E`§®+Ùø?§¦mM[¨<‡×ÖÖÉÍÉ62–\ÃZˆp Ë]¦ÕlÂÉŽëlf\LÿCrFÁ–>›/3#I|umª<-,‹‹CàŒtOïKšÝ:[¬ñšø’ùÉ~ˆ†÷:Užçðci •'ÖÖ6/ž?•§ò/ž?qquãq¹ò,`pª‡vöíæ;g\'X˜C¡ ÆcvžøT¾Â\0Í©|õoçÏ/kÀŠ“qý 4ÃJ˜‰Ì×ö°’( ÀÌɛήóŠ›câfÏôÞš¾®^æ1ÄmãL§­ #dÆØ/»ß¬Þ€¶¤-TžD$ZZÚFE<êÙÛCbodÄ£ÒÒ2''窪JFŒ½Žºÿi¹$šG1lâ)¶;<™kÇø¸ž]cN)ûkÉTŠá˜ERÓ5(åŸVm¼¢?«yLàæƒ9¼ãÚKP`êÎ2ïw£’–¸à¸7ÎXuŸtrÌŶÂZŽË} l}#œÐq²?ºàg mæå! •2`Ààû!Áéii½úxèæÄ³23"ÃÃ*«ª¦L^+ëaù6°”=9O ¤|É™tî^Î’Es‡º—rÈŽ=G>Ü&óî­óš“¥7Ö¸ø$‘umüþŽðÒ¦H—‘iª(z÷¬k…'c¶¦'™\¼´ÀÁÛ+dØÛþuÈ4ïiÚ¾ÿhøwT–||~Úè·¯x^—¡;}朘èW!÷ïæåæ ™tÓÑÑÙŵ3‡ÃæÊš®ù|L/..Bs´hÚ¦ææöN*Oø‰¾UØ2é^¼÷7TùÑŽü’ìíhºøþ½)ßÃ8Ÿ“»ô÷ñן&q0Ú9ñßnp¥½qÒÆˆ[^Æùß5Šï„¼XÿqÚH[Q‰/ÈË¢­­=Ük$SOÍÌÎÊŒŠ  ¼2xð]†.Ÿ/{EÀì‡ÓÇÝé°&òá"ÛFÚâlúôÏÁãÌZ9€Ök¥m<ü®H„ ±i;d$b®úšÎ¸=ÿzœeTl ¹…¯õobÿ×(ÚÁ9ø…h •G`¸ª²*<2ÌÕÍ­g¯>¢|S3ô_TÄ£°°)ÓgÁr¹ðÄÐË!éÐvhÑÙ6ðö'‡Í†I‚eM~^úoØÑÿ»/~YH¥Ï5ÕÑlz•–õØwâ{€†ù£]ü¤´…ʳk9éé©t:C\âEôìí‘kmk'ýRbvų«oÝ»4ÇÞùHVÕ|ýú5ÿF˜é«Þ}wΪþj·eÒg¼Lsœé¶;«ú£ 툨ä˜û9 æäíð]x&øY)‡ìÔkÄö#[;¨ËòÙ™kgÍ>ÿð-^ÛrîÆÓ¢|®9³qɡˡ™e\#{÷å»qÒ|0ÀN¢™ÅꪳÎn^~ärȧB–¶±í„Íç\wÿ&QWÜ ô÷Û¥»L‚>O/¨!0ço:é3ÈX˜»bŸyÐþ{oÒL—‡†ÌÔŠSõ¦›õà.‡^a„VI<5ÑsCþ“ä{Ø[cÝ”²SÏÕGįp1²ê{/~»M¼é¸K[ïú_bf AMË©ëØ;çV71üs6y‰Ïu žÇ­:îpwoÐËdIî–ó+† "â±?̘wéQ,Úá³×Ÿ:;¿»pŠL¦"ntµœý¾‚&Ò´ F÷«ñA}ä_‰{0ßFhAúØ¡™0·pËlŸ“÷^"êf"Å£Pì•‚0›Òqwl½òsÒ®¡åsO²÷º?÷ß÷›ÍÔѺ6ú&ó¢Ó3•›fG1—no=ïûÊ“«ÝµÈÒ'<à?E[¨<ªÝ)ïS†»¬R×îî÷ƒo;8:K«|Ú™uªÖ«;kèî쯷rÝ«ùËøœñÛý„¥ ¿ ŸŸ<à¯d‡S7#-¨åG}'{y²Ó_’^8ðì„!2Ü.>:f„ÍÝ<}T9¯~Xti¿­qŽ^¼o£CŒÚ3sP_§´—Ò­È,fEÁßYü›ˆúžc×Ümt Óß¾fÉðP‚ص«g?9ê@ˈ:ì6¦i|Ò°º«4vmÀ”+wu6¬¬àžŸì*Q¹càÑñ®s¼'{>w¨áÿpÁX32ž7laQ·cÙUsêV²-|ퟃµ\o×`,Ì­Žé¿øÀò“Aº˜qËr^={Û¬ðGôv]À¬k·¶;Ñ“ƒWõœ5dbÿX&wrô°ëe½¯„ŸÐÇåï7NØáòÜ1òyªá²î£×¦DôkôøŠ÷˜‚3åÝö©]}÷‡ú¿½á?oN½‡vNSÂlJòj’¸å½^Uq\•‰IGTÌTž\ü ­VgåŸ)AÔfê*5=ÌMG„¾ ×V÷½Iºùüº‹X®Ð&*χá¢ÂSO^ƒùùó'^ƺ­[%õ={M¸­Ÿ–Õueÿ_U\SÈá²W„å,yái©Žn®»xæ¤éàýÙÛ|.Žó‹ÌõÞÕÝH‚ w\š{µƒ`å?>ûóì‹©Ç’zh’ÐÍ¡óÌøËdõóü« ‘Wìb·Ú9WÞÏ Kë T=:Ó¹ >Ó»]7Ê6ì¹`£ùþ­Ûâ†írE7™½Žï,X±„Œ//(Ã!{Ö»;O½{Hù)ÕᇺéB‚ͶvÒÞ³9fΑèfðª‡†Þ§ÈØ}Èc%r1”á};1(xH[Ëбéá7Šáàƒ^Nt4a=x³öô©<ÖJ­ ÔζwÛº0P 3Øø?ß3v‹ä¹¡ÅÇWÔc*ªÅv´öùOè‹&Ì–ž_½Çõ0@ìÆ{½’ÓO·¤)ˆ§Ø Ñ$I(;í¦sêuᢿ‡ôy­vÊ ½­Ìœ§„Ã43Lþÿ–ô¨yçé'U ñm³ºwuY²XUÖ‘,ÆûÎ:hZÅ`A?ê6¿W…‡»è4±ÙÚ’`‚Ì1­¿‡FTquS%>I,›R6߯#T˜y:éSOV0ÂÍ6¨/¦¢?•„ @5E,><ÉR_Üf‡Är¨áU*¯X­å]6Œ,²Vo¢·B˜ƒMDiçî:…)$PyzCÅA ¯ù™g.Ÿ°èsØ1z¿—ÈN¿íÖ ZUs(ŠÀN]W²ñNR´FOvÞÒÝÖÍs`ß=úŒÕO‹€mbø¢í.:^.‹ÃCC€1øIt%a.Uw,ç#Ï –w…¨Ç…9è˸C´ àQÅ÷6Ñ+é0›ÞS\´–Kå:<¨Öú»óʹ¿Uò—¾<õÁp¤GsÃŒßëõ*Ë0,R#Ÿm€ÿm¡òx^[['7'ÛÈØDfá.–|ÆæåºÓ|v†9“Q¿ Ãê~· ð™h²á`’ýtN=‰-uóíOŸÔO­2ÕH0 0X¢èÊʼnuÖDpµ'æäëi¼bUYw¥o>›/3#I|Ñ‘ JHyZX‡Àé,žÞ—*4»u¶Xã5ñ%ó“ý ï)tªd«âîû±“#ï‡E= Ú»`ó֎ѯ¯Pš~£`*XÁ¿²ÜÐQ(ôÂj2·¤zL.X±&0Ò6Í+é0›xþ XÏ·ÏŸñ¿òTŒŠá2Ùh”ûxnåõ}Çɬá–D˜ ï¢ãÇÏÞý°}´•âFÿÚBå $‚µµÍ‹çOå©ü‹çO\\Ýx\®x&¯X~?kÚÕàé_}Üê·ƒWij¦ØS úD\vn Tw&sY ÅÜú™tT ^ýeJ¡ ÆcvžøT¾Â\0 æT¾ú·‚ó§:ޤl!ö4WsÙu»¸v8M0Î. ©¬›&¦hy‘±;·Fî«›ú§A+rŠ‘µ¼HØ’ÊÖ;hÊ«+MÆõ7ÐŒúë3$2_ÛCòZ•š†9y3¼·v^qsLÜì™Þ[“Â×Õ †¸mœé´Ua„Ìûe÷e7ŒÁ;õ‚þóñ[fj`w §jn“Âo4"iÈšƒÑ?ŸW=]0c± ® c^ynl2’û8£‚®P@s½m®W_ÝkÚùƒ¢a?³¶x̽ýz&“3Wãºë®*Wž.êAoŠ«€öMÛÌËC*eÀ€Á÷C‚ÓÓÒzõñÐ7Œ2²23"ÃÃ*«ª¦L^+õ°ü-¿‡:®»( ¿ÏÿÝdضƒÐ¤ý]¶_4qº£Å9 sÌÊ£šõî‡Öé[×Áv–âû9lÒ¹{9KÍê^Ê!;öøp›Ì¯ñÓ.ßJŸ1×Ùæ¸†ººç¬CZFóí~°‡¾òÀò‰+r+”´˜.îýÖQpÒ­È+6dè†õK¶ÍžYÊÑ1¶´õœt] Oœ×œ,½±ÆÅ'‰¬kã÷w„—6EÚ[™AEïžu­ðdÌÁ£á$“‹—8x{… {ۿΙæ=MÛ÷ ÿŽÊ2îÈáôÔÐcv.-®æëš8-?ò Ÿ©éá+ŽH&3¯}œ1oto<ÍrÎÆË¤¹Ý•°yn( ‰ÇWœæzÛ¯D4±Ñœy6Ó_³gÕ}mU·žs‚èž_ï¬47LÃþ†¬ì9¶Jð“ih ËÚ?môÛW<¯ËÐ>sNLô«ûwórsÐL:ƒéèèìâÚ™ÃasN× Ì Ož%eÇyMdÆš:ƒdÓ}×#ö}É_5:O˜P1y÷ùHQy,‘áwøšßáFÜÑŒ·þïþÖ/›Ûgå}©O¿rúO¢¼D+òŠapJ36Ÿ±Aa݆ qí¹¾§aæöøOâ›2ƒÒrYšŸ»T´©ÛÕ¿ ×ÿën„—Èâö:"ûaV2mÈù†ÈØÑ´ð%6—¼I_"Çó›éYÂæö !ÛëÒìÒÐ|ÄCDV’ㆮ»ž¦ˆ;(çøJ´«ÀyyŠ¢Û9ò›iêùACƒã ¿¤‰ÊŠ‹ Å÷61LñM‹‘›sGnVì6à?BÛ½=†ÏçÃ0ìÜ©“«[,Ww› æq¹,VµÌŸ¼Z‹Ò’’Ôÿh®q¢Ôñ¢,åLD~‡îv†µ…©|}4í–:þWŸ ¡ii+. ¡ø@siÛwR"—Ñþéà»ÒÝÞ¶ŒÌ˜w8Hÿ³¼æ—ì_:q^fBPëØÇëÆá%×i§|o~¢7AÌ3| ‰9yj[4m}Ã_ùþh/€ÿ@å =TÚ3@å =TÚ3@å =TÚ3@å =TÚ3@å =Ó¶o8€a6›Ãas`†0<O á‰D"¦©‹I y´Êsj9••ÉÉ >¦¡9Z4mSss{' •‚'€o퇽ÍBß¿7Å¢ñ¢à;ÓFÚŠJ|A^þƒ°mmíá^#™z‚Å0³³2£"ï gÖxÑvŠDHlÚ‰˜7¾@hÚB宪¬ susëÙ«(ßÄÔ ýñ(,,dÊôY°ÔB"™°Ù0‰ô³¼]R&ý7ìèÿ£}BÚBåÙµœôôT:!.ñ"zööÈÎÎNˆ‹µ¶µkÖK‰ã.mY¼ë‰™%5-§®cïœ,ØÀ5g6.9t94³Œkdï¾|×á1NšVüxu¤{€Rvê9a„_ábdÕ÷^üvštáìvgUBt¡ý•s?‡Ékt¥½qüêK.÷6ž}ø–ªïºþܹþ¸Ç³g¯{œ˜gì6òâ•=FR+P£UÞ.ÝetðyzA 9ÓIŸAÆÂüØû̃öß{“fº<4d¦Æß…g‚Ÿ•rÈN½Fl?²µƒ:‘Sõ¦›õà.‡^!X:ñÔDÏ ùO’ïao•]ËúS¢ÎÙäItˆøŒ êyܪãw÷½Læôçn9¿b¨ "ûcÀŒy—Åâµ-g¯?uv~÷ /ÞûªÈt´˜¶PyT»SÞ§ !{¡"”®ÝÝïßvptnºÊs«cú/>°üdÐ….fܲœWÏÞ óï/í·5®ÃÑ‹÷mtˆÑA{fêë”öÒŠ‚W\Ñ`Ø¢nDz«æÔ-§YøÚ?k¹ÞNSfáßî',m8A¡ Ñ¸3z¬8üh-#dç”%Ã|ºip&í9³Iµbýèñ¿¯Ÿøt‹«th±kWÏ ~rÔ–uØmLÓø¤aZäºü€)WîêlXYÁ=?Ùõ¯d‡S7#-¨åG}'{y²Ó_"*w <:ÞuŽ÷dÏçµ#ü.¸kFÆóäD×âþ”î¥ §°Þ® ˜uíÖv'zr𪞳†LìË$âNŽv½¬÷•ð‚¥_ç+¯[Q]ž Å´…Êóa¸¨°€ÁÔ“W€Á`~þü ‡otÍίðX‰\ exßN TLµµ - ±?Ͼ˜z,顇¦`eΡóÌøËdõóü«zŠ+âÉf[;iïÙ3çHt3xÕCCïSd,¦FVaÉè6ªåpàϱ‚o0Ó6\nx%y¨“`½.ÀÁcÛH–ÊÓ»]7Ê6ì¹`£ùþ­Ûâ†ícö>8¾³`½\2þýаœ%O#<-Õ¦.ž9i:xö6_=eÃ!{Ö»;O½{Hù)Õá‡ê‡’]«ôgS0|ÐËI°Ì´õàÍØÓ§òX+µ2P;ÛÞmëÂPB?d7þÏ÷ŒÝ"yn€sïέ¶YÝ»‰J6ãyJŠÖèÉÎ[ºÛºyìÛ£GŸ‘£úi°5E,><ÉR_¼d‡ÄrHL•dVDóûm¶dЪšCQvêÚ¸’ÿsRPXÅ2™ sðTKôï@#ᦊ¥ Ÿ)34æ`QÚ¹»NaD  TžÞßP˜Y[ÌC9¦õ·7‰*®nªÄ'‰e¾uCõ™g.Ÿ°èsØ1zÿ×å¡eF×*ýÙ´Ýu¾$1$\‡‡†cð“ê³F¡êŽ¥â|ä¹Ñ¬¶€8¦Lo •ÇãðÚÚ:¹9ÙFÆ&2 wÁ°ä36†[Ú`§”cÉuC~ q÷ýØÉ‘÷âží]°ykÇè×W(,”¯K”/ ²*ê°4»u¶Xã5ñ%ó“ý ï)tª‚Ââö…b¿|†1b[rn5óÙ|™iœä$>FæVyZX‡Àé,žÞ—*²£k¬[šÔŸMÓð{¬à{:4ÊŠò¶Py‰`mmóâùSy*ÿâùW7—+‘ß‹A}øð´ÖY¸‰ð+¯Ô0<¿,QÁ;õ‚þóñ[fj`w §j®»sktá>ÅËXKUÜd¤Šê˶q¦ÓV…2cì—ÝW\˜ˆÅ ¼z­¢h5­Ñ&“qý 4ÃJ˜‰Ì×ö°’(@¡ ÆcvžøT¾Â\0cé|õoçOAæäÍðÞÚyÅÍ1q³gzoM _W/óò¢SØ- úS¼¤7…¬9‹ì:ŸW=]0c± ® _ä¹!8: ¥´…Ê“ˆDKK›  À¨ˆG={{HìŒxTZZæää\UU)±«ï®É û¯]t@sÖ€NÄÚ‚[GVd ŒSC Ð]ÕyïùGuxß®L BêãóÕ0®§* O6?1ÁzÆïãœmïëhP[œqç"mÖ6/YdSfEá.Çå¾¶¾ÇNè8Å…íô¨çnGä Ð c šš7Ú,Ê?­ÚxEVó˜ÀÍsxÇÿ´—(€§Øîðd®ããzv9¥ì¯%S)†cÕM×ÜYæýNcTÒ÷Æ«î“N޹8ÃV^tâ4·?ö€ªÄf£1¨vºènçgwb…àîëÜÝ‚ûEG´Œ¶™—‡(TÊ€ƒï‡§§¥õêã¡o ˜bÎÊ̈ «¬ªš2uz­¬‡åµ:ú…ýEò?°­ÿæl>^ÙÆµÏñTº G §†³siq5_×Äiù‘ý4r0h÷ƒ=ô•–O\‘[¡¤Åtqï·ŽÒ`¢C^E2Í{š¶ï?þ•‰Š »Z§?n]ÛUXŠCîç°FmÎkN–ÞXãâ“DÖµñû;ÂK›"]fÒ¹{9KÍê^Ê!;öøpÚ^QôîY× OÆlΘ7º· žf9gãeÒÜîJXŒ‚£ZFýöOÀë2t§Ïœý*äþݼÜ4“Î`:::»¸væpØ\©é!Ž£|oò•Î'Ó†œÿgˆŒ XÒø•ûÐò<‘[á%²¸½Žx7ZXÅhäÝç#mt{ü'QO±,.*mêtº”•*Û <ÙtÏÕð=òM $2ü_ó;Ü Œ–ËÒüÜ¥¢MÝ®þ¹þ ¢§¹ý)Ñ›KÞ¤/‘ãùÍô,a sû…íuivièN>â¡N"+É?: E´ÝÛcø|> ÃÎ:¹ºuÁâpÁ]8˜Çå²XÕ2òJÓÒV`M\1[…Ò’’Ôÿh®qb+M¯ÿTü„Ñ•¥œ‰ÈïÐÝΰ¶0õ€¯¦ÝRG%Âv h‡´í;)„Ëá4ñ§O­®ãŠéno[FfÌ;¤‰o‡Otü„ÑÁü’ýK'ÎË,@jûxÝ8¼¤ñ: ù€7AÖ“˜“÷£] 1¿ÑZü$щ£iëþJÆ\h]€Ê@{¨<´g€Ê@{¨<´g€Ê@{¨<´g~F•¯®á„¿þ”[T#p㥠ÝÅ`ZÊ}:+Qd¼’¤YüŒ*óY‡¦ÚÓÅóGû?tŒ›ü!ÿqlÆ€.æßhêgTù¬‚ÊnÍ0,Xêü7AÐÊT÷êýVX³mßpÃl6‡ÃæÀ0ŒÇá $<‘HÄ`$V™€±þà2Ø*³Öm§òœZNeEerr‡éÅÅEhŽMÛÔÜÜÁÞ‰B¥à <‘ùþ²Âá®æá î]Ÿhñ£ie`nþšiãŸ&r0Ú)IÁææ.§â2û¨·Ñk~Ûk¯?!m¤ò¨Ääå? ÑÖÖî5’©'XJ4;+3*2<0ðÊàÁ#tº|þ×Õï„«•OZ©ËÖ§W¿È¯îgc™^Ã]ýi²®Ô²vßj‡ß+2îÍŒ·~yƒF&@8zPt‰ßqŠlO³KC¯Ž6nZòFÌTÛ_¯?!m¡ò WUV…G†¹º¹õìÕG”obj†þ‹Šx2eú,XÖB"ÊÆf‰{@÷ 7Kâ×fâ;@ÐË6pûÛas`Ò·­˜úý(yY@Ñm¬­!ÜÜ{à¯o·Ùôx=Vï\3 |ÚBåÙµœôôT:J|MMͦM›nß¾æ:4  goìì세Xk[;ÑK‰ëå4l×§nöÒ,x¶æ¾íâmo7½Dê@sÞŸXãí~bzBÑr8u÷Vº—ë®w5MX~Ì.dïÝ×)¢Þ´uç 2Fó'Úªüû—E½ºu5cNˆJýCOYž¤ÞÉÔþ»E;ƒ½üPPƒgÎX{b^ca~Ü’=¦w>|›fìr}šú•‹/ÝVÊ%;¸_»o‹£‘[Ó¿ã—=Ïv 1B«¤œ›4|[Á½7ÁØ»ã­WJˆ=[ß ü ›Þÿ¼[kGoY—w¬8y=4£ˆE3²½öŒ¯ææI7$¯n÷±öI/… I¦_Íž|—Ñ[ÄgÜ4þÈwx-Ë)_^ÜctdН¾Š¼~“ˆw;æ¢t7FŒp8”] ùv5õ…JŽÉIŽt³_p÷ÚÁW´fyþÍ'#ðŸ£-TÕî”÷)ÃGV)B%ú¾}û^¹råÌ™3hÎæÍ›»vw¿|ÛÁÑYLåëþB¯¼¦Ÿþæý #6¸ ´ù]Åé¿Gmì–áVÐf®?ngL¯ÉO<´dîøuÝîmì"¬¿yõäó7×8Ð߇øY0ltß:'´Û@´ë6åÙ‘Q¾>µ¿fÒõ¨]v´¬§GúMò4z•0FäoZ3îÜí «*¹Wft>•êpðr¸)µâŒß”IƒØ¯ŸÄ+u8»œç¢Qc{=µ©œ°.læ…cž?p;~©ûé쪩LÁ"®…1«s±–+¬5%Z¿¿¼ß¦‡\íb¥Sô16¶FàÞ•¥ÂÉé‡!’õüÝç¾Yûï½ßPƒ|v†•¥+Ræ¹I#n•õ>y÷—ÿ—Ïï|…/«ß$âÍò ôEõúïì@Gý71qg.ä³–ê«ÈsRyèvÙ7¼n”­ß}¾ŸÙ}{ânvèq`d'Á¶d\ÚÚÈÜùÃ{š«£›+O:o?ôXÎÖùLeý»ÿìÚaþÄ=ý*N«9¸´‹` 'Ùluí¿v¾º×Ý|°î¡ÁпË^‹wfmúÒi“î$zÙi¢› ]¦ñXIòjV?ðX [ÿÍ_ób‹ ] ËïoŸK®>Š;A<^eBs»±ž“µl;vúYV¼~~Úfuï:uíÚ5yåD)ñ!#UonOÂÖ=ieÈÖ×ÝwíE JHìŽhQôÅU›þz™ø±š-X9GdˆêÒºé|Icô‰¸l‘²|ù'ÏÒ°¼8ô&¢|û.ÚESH ò:} „ù5¥Á|™b\›¯ìê¢B|‘R>¯NÂ&½|ÎÙã:¡ãÃ#Dvúlê?rkw$‘ý~[B‰ßßNM×ßdÃÈl+uñ|Å Éìéè»0?FWI˜CÑKÁùJt—D¿‰Ç )ìFDÊÒ"Ïé½·]ìÝï‡߉¶Py<¯­­“›“mdl2hÐ áDtý+ÜÃ_Ÿ±aÁU,xR¤Í´š¶lky¡ò“N:0·Nåa¬[8ê÷åvKß;ÕKG]©:k[gKºH݇‹0-Ü„ù‚*h¦°n}Cu“îÝôkrÿõ[@Ñ[¤áÝBáæðÞŒÅ[Ï”ßôS†*.¯ùWWTQ[ •«wßПØÃ<þö–“y¼]>v»‘¢v±d›µ½;¦,qþ+À„R~fÕLŠþ¨™tetoèªÑ‰ê#Ïë„ç^¹ìÒkþ¹ÑG'ÕOh[/ò)r[~á\i"Ý.–dºÓË|Ťi–6º™kzû¶ÆyBo¹ Éëñ~ýÅQìV¸êî›`y`—lÉ>2ªÎÜ~“°¯ -™Ô«÷"s=ÕÉX‚º†ª¨Wt‘<Ïs#ü–Ÿ(þß…ãrO8 FÛÌËC*eÀ€Á÷C‚ÓÓÒzõñÐ7ܬËÊ̈ «¬ªš2uz­¬‡åÅQÕÐÎÄ‘Œ/íúcñÒ¾xuUMó©ûÆÇ̺©Ø—NëÏõ=»OÇÿ©i2‡ûѸõ[Ëì Ø­8^vk]¿?“I:Ö‹>T÷¬§£Žçùù¬×»”K¶ë6ìTÐT‹cöúÞ,Üûx# ‹~šüur~¯‰£"F÷®³@Öô¯µ=)u·eö› ºÑmÇjÆŒžnX²}\|h£]¤vqbÌ›Ÿn±rà§¥~ûŠ'àuºÓgΉ‰~rÿn^nšIg0]\;s8lnƒéšúçå…& ú’%›'¥çˆÊ˜ûóö°?E{G&¯æ<{‰Õ=óQ¸‰%™l8û`×ò‹†g óåÙ™™<[ʇ:!Ùxýéëú,Ñ.¯»p祅;„¦éìŸâ#*¦åº2!eå×Z/™Åíºk„Ü=,õw¿#¿û5°)³!ýà´!òÉ—|,Ñ@Ô¥hÿ¨+Ì.{pFÜU‰ úM¾¼nT2ðºê%rL¼W›ë¹‘÷ÍxïŸèÀON۽džÏçÃ0ìÜ©“«[,N0q+¸{Êå²XÕ2¯X3f£6…ÚÔž(/+I[Ë3zì¦óC¨H;÷´À¹³!»(õïUËÔm–ØRe¥¿mûNJár8¢Ÿ>).™˜–Ý”b­áWKAZß¡]œ*Èô);®«a1?$:>¯äDÀ”?³ a¢ªƒûð“;Q3ðKó3¾_‹ÁðÛð)ûŸUÏR¡ïðÀGDR†0ñ£”UÍjñõ°Åâ9@ã€ÜJ2ø3ª¼¾ŽÚ‡ŒBSíŸ\èà;J|zf¡¾®Ú·›úU¾gÃG¯?GåÃ`®ü'AǸ -eÓo´S]Uõ3ª¼…8ÔÝêG{¿<×®^ùU­ÂB_ òО*í òà î×6‚ÿþѾ|w0X,@ ‘H­b ¨|ûä?uI¾Ö••ïAMM͇ô´W/ÿ-((àóùWø‰Y¸ÈçÚµ+òöâp8 M [{+k+>¿®_ òí“ötI¾7¨¬èèêtvíâèìÔ*²Òêp9œì¬¬¨ÈÈ~ý0õô1¿ø/ix\Áïÿ—.ÿSæ^.—ûñ㇈G5µht]:§ / P PùvH;»$߆3> FÓÑ640üvYiuØγ§O jii¥¤¬ü«ŸÒŸ?~&d¾>Ç[XXⱸ§Oû}Py€ ÚÙ%h uéôÛ·‚,\ôª<Ãyy¹::ºíé|Fê·WÏÀ ¸¸‹Å~{C@åÛ!íò’|oLLÍòrsZEV¾|>SÇv¤¬ª)ok­¹V òí“öxI¾/8\«É  )V=[Ç8$T°ºNÿ~ýZ½! òð@ÄæåCCC׬][—‹ôkm¡*ÿßâ@ë°w‚&™ƒ-“×=¸>̨µŒÿŸ½ó€o³¸ÿÿ3ôhK–,ɲ$oy[òvLg° ÒÐ¥f) «6 «…Jh)£Z ´¥ðc„,Çq†myg,ÙÚÏó$9ŽmØÖã%ß;~Á3î¹ûÞÝ÷>Ï=wžü™sãò¤Ä¿õÖ[ß~ó ¹}ã7T ½ªü³cŸzCóÙÆ‰#ÇoÌøEÕ]õ…W‹ƒg§n¯T¶°~’z[ݹ £Xp„ê§÷ì{ìú,×/0C^\_øÀWÿ»Ö×OñæþÙÔ¨‚ßþr§rÞ œ VCýó<úÉÑ3ýc¸L™vÞçî¾,Öyêë?=øÌ[Ÿµiñج‹žÞÿ»œ æ»2Ñ—/++ûûßÿîü±¹±ÿþ-[ܬ«<7`öC•÷Lã;ö­s»äÑŸ=ÖxÕ\ëØÃ‡­€†¸‡B™äíU’þ‡Ï÷¯Æ-£…ÿ}îþÝ—ò²ëîUNÿèóØL8ƒ±Dçµ€Ù2“Fá²!Ì·msã?7ìø{ƒúÏÿü"^L+úï¾_ÿj[Lnõ6!£õË{n{é‡'Þüpsíãgn¹éâ{*μ‰Á³ïÇÀ<ùÿ={vÛ÷Û Üõ2+;[ÈÉ RyBÔ*•sKËÇÈ^ÈÄînÓXŠ˜˜r#.ñÃOþòŸwî}&}Ú…nÃ<¤Š(}ðÑŸ½r ¸>êCo¾¸çžw¿<1df¦¬¿ò…ןKÐÍúâœøK×¼vòµ+í•ï\ŸÿtÏñêÈÿý4ïQNGí{Îø ÛHfxÜæšÔ"ªŠ·ô¼üÀî|]8df¨×þä·¯>“@·§…ýã…‡ÿúñ¡–þ1qxâΧßyp“¬æ¯O>ôÑ!MC;Áå\ò‹W^ØHssÓÂÍ}/Þuß»OÊ[ŸþÛžKý$Tññ ÷ÿñ_•mƒt¾H½æÚOÞ~ä›ËÓ^éÐA÷®UÜ ausí×Te@-n7w»z8frCÖí×ß½Ft7Dç$wµ]ÜŒLðuµ6îÞG6§Û¿y²û­‡ÿñIÿ©Úû=uÝ?nÞ’Fßýç¿ÿ9vósÚÇ•³ ïš"1KŠºeE©¼ïÀ4¤oÔû{S”>ñè/>úêµUaºËû7fý¹ZýΧß۵ÙsãUù¦†³¯Ñ¹éŸü庬۷ߘ_¨6»rï‘»þ[ªdÒ¬W¼ˆíÊy£C»‚KÆÓwvo'ûTR`Ç—åÜ×ÕÓqÖ÷Ì|ðÿ.{³Fõ—D³GÞzèÿí¼ÈXQø A_ÝwÉ“‡/ìÿWN¼´¯¡´ÄÑ*­#¢;žy]%ë®üã¯ï¼æ‰ìoö­vSóò­«w½ôÅáeŸ>±ë®+¯ÛzF†¡nÂG¼ü¾ý÷þå?[eÑv-,%/ßôyɯÁˆÍ2ã¼Ã¿ãE®Ž:MnZ7yĆB—ö…_\~÷ï·ìx"œ”~¾ÏDSÜ-ç’½«ûÇ®úeŒ3 ¹ˆUøUtOÀlû¦èùyWy‹ÅìŸ*ßU°C$žrDés¤„™|.ûjÐø‹ë"fF¾áO×­ #7˜´ºvî.8–+ wŸüàÝ·£.}¥ãù= nØe/?•—zãµ/]¦}‡ÿ“×Í‘’hLås’—÷•ÜþúZr÷ËGŽ„m‡‰ÀLqÒªURŸ3Yƪ÷~ÛuÏ·G6ÆØýïÑwß|7áÊ×:÷ÝØ{Ïêy ìU Ý~©,Å>éþ{’œWK÷½õ“Œ+_ƒÜ©¼(é÷íÜDnDýúoOýQù^÷ØQ‡Û„nê,0ëòMéÁ,$‡F«}Ï`¡™äð–±JOMj<>6-ª\ÚG6¾ðÕ7mÍMT20ÈŠÈžøä+5³èJ­8Ç£OKdÓÎTÌ!¼¤/ï·#6âÔÿóÇóÓA%þ쩎¹ÇÖ}⺠©ýgàÂÞvû^Ê’Ìó»Þ*6¿ðùæ¹çeãÐW¤=·Dòœ»/3‹G/¬ÖÞ÷™ 'îŠL ßwúÃûŸ~ãdE£Þd%wQz°ÛheÛÎõÁa,šEk7Û<%ôë×ü,ùÅik7mÛ˜“»áª«6‹00o±lpux}û»^<|¢!¸B•KûÈG®z§VùÆÇŠ£g>åÁk¯N8{8ÓóNfÞRä?ñüͲ«®Ù1ó=§â¯*q"&­kÉîƒ*OÞ3þ÷jŒÐƒÂ#™è¬Â Œiáa·{Úú£í”À[ƬŠs—ˆ’žLD"× ÞYý0!Üþ‹`öÜóà^9õ0né»ü§©üËwﯓ 8ú¶’Ö~èö:„~^©aû Åž‚±>?ýó~{üįîzñÅ´ã…ÿ B¿LðÜ(Ü{¸KCXZà–Á»þY~íá.’»ÊûÞüá½è§ÿV÷Õݱ4®Ñ™!DzrÌÊOàÏ6¼ÛD­ëökwz2Éh4P’µöÞ>ÿTyj¡±C| Ã]Jƒ÷f³öÁh{7Ù¬;]4bþM‚}7wß¼ý¹U~º£ü¶[¶?Wõí“ã ¦?¿3ê—ÅÚJT÷S<É ¼„¿üNËÈǼEwæ´Î|_|3ð' ä¥ýÕÃ9Flœ˜†´™¬Gn½ˆ‹Ú[íÀ™Ó¾'äÈ -yÝ¥äß=ìNŒN{½Sÿd8Ÿ¼MV°ªûRÇÕá½xø4è¼Ôª˜ Œä#,2é·â›GÌ0Êß)fŸú[=ôœ}lÀj¨þ|Àð‹K1:«ðî…£)÷B|D8Pù‚ÆJ|1_þÄŽ{³þþx4køÏ»ob…íØåx˜ýâþíeÂkªvg¢–ÿ¾—{ÃÛ;>¸9ÑyUò{z÷ü•0Ú9>±Ðqä¡;ö÷þ¿·}¶'~ßFÙo~_Æ[{•,í›ÞÊ ½ú.9…¸º:z×u7'¼þTn¬¤¯ñÇbCê ¹9|²¿°ã¡¼±Î¢ÝjÈFícB£={õ3Þå›V èõ'þ9Š#kìï '(Øÿüòû®-&Š …î;A€%ˆŸF’‚ýÞçÇ:/2,0O•KûJ—ß#øçÿ{pËk÷ʼnÐSŸýá“ãÞìÃw=³í_wßú·üwóíoFÞL“\üHT Ì*¼ûTd\^«Ó•_8nxï@çî]w\ž7df&¯»ò“#Ï“}öþ3/Ýúï¾·Kžµ¿Lψüà_w©·_uðŠ·Iì2Êmÿ¥dÏÿ„{Ó¹ãó9ÆþŠS§º(±çgï|Þuÿî]Wo$íQç]ñáß:Ÿ!.yé˾}¼t×5»‡Ì’ð„Ÿ=óÊÿ¿?ÜuÛ®­a‚‘ò¶ý×½éSB± ú#¯_ÿòCc¶ õîWä ì*ŸóòcŠŸY“öÌR7)—n=Ü•¼×ž ÙùdZâ#KÝÕr”B—ö…ßüß¿Œ{ž¼wçEƒc„4RµëåÏaïd„]ö§7xfώǵ¶˜¬‹ßýúwΗßgÞ•…yÇÆ?Çå¯.¬½zꑼ÷Î6¸itw­ëqרf’¢“4Í“wºìáýÿ~xÿ”0âÌûzºî›Ø•fïííÚ{þ4a­³¬}ûÄåÎ/z<å]˜]'«wM؃?ðÊ¿p £œ›ý¦Ç§ŒÙþ›o·Ÿ_ôàºæ'\#ümqíäK>®jô’3ðÒ·?¾ÔÕB^øUŸ~w•ëqÀÒÁ“ûõpÈ¥!ð¯þªð|>º4U`üä}o}²ÏÝ©‹wýŽüó1¼Î}áàµýûo½åço_M&Ó›o½u÷]wÍÒ|o©ø¡Ê//Db7oì ô÷ ÖÜ{ÆQ™³øï™N¼xì[²Ü™øUTbB⿺óϯÛo¿ºó®®¿žÂ>¾öå—^ÚF®*q˜)ûÕþÏÜþÊX€šSÅĈ͆ ëÉí+~r%¹ýÐCÚwʯ*;»Û0oLš}ݰ~=äTüõTJ<T û"øù¯’­_·r,ôFu*@åýEqªÝàߨl6ÒmÛ ø¡K{}“’( cbã–r ° {ñuµ5ÿùø£í×^k2™Û7ø¥K{úò0yphpðÔ©¢ü­[}¯ òþ FÇâbãɆqà‹ÏÿÖó&X²àR4ƒ¥Á—]qET”rltt±ÍqƒŸ¹ô=»î%ÿû·wÞt{–¬Q h݆ !!¡¾WÇ?ߨ¼Ã0ù —¤R#x paH‡1›ÍKSâ!¿si“Ñxïžû½ °:.»ür ò~‹ÉÁb[P†?¹ô‚eD, *þ Pyðg€Ê€?Tü òàÏ•¨¼ßbžÁkg0 sù±Ô(¨¼ßb6›ËËJ ~ðEÑ59y]|ɈV»†9yHQõ̱ÿ»*bÚñ?¤+ýú뿈Yx“–#6s×}?»î?UfXÒÛ©¡0æÉ±Œ*e™º`•÷[‚8yòÄ“Ï<ç\il2ÃÃß~úéu;w>óÔc¤ÊO;{SlXÛÝ_Ý•8qäí¬˜ý +~/Ï{žM*øÍá/w*½K¼ìj",ê=SZ?¿ó?å±ß—~"fÒÛ–Y3C—øPyÆf³¹J|kkëÏþóÆÆÆØØØ%ø=mO¿¸ÒM&œÁXB¿‰÷Ñži—œêc߸`Ì–¥Vþ+ ò+ ­V{Ýu×µ´´<öØc999ŸúŸÙÆPþ¯gýûT¶ bâ”ìŸ~ñÞc}éûÏì~íÃCmÖpUÞ¿ß¿#eŠî¾(é¥vt÷ÑÝ“ÜÕr”<ˆ[úž½íÞ·œ"Ê;ž}ÿÁË# ©OÜnÓšÌCªˆïû}äg*lè5`ò;ûö½—D8—>øÇèÏ^9P\õÀ¡ƒ·_ÜsÏ»_ž23SÖ_ùÂëÏ¥ èf}qNü¥k^;ùÚ•áä%•ï\ŸÿtÏñêÈÿý4ïQNGí{Î$ÛHfxÜæšÔ¢9—Ãd{pË2°®½æ­ñøñ±ÕaÑy_”½œ*žÉådvß™à¼ö¿Ù±·Õ AÐõ"1$ËýXóÙFÜÜíšS/1T¿þØž”Õ·,qÞe¿|ý¥Ý¢¯@éKù»º„'ãÉ"úû¾^ÿð`sߘ$"ñçûÞ{d‹ÜSà ÖÑ ¨¼ÿ3::ÊápœÛûöíknn~øá‡ï¸ãŽ9De-ÙöëWxû³®QZ†;OŸøÑyüëû¶>Wžö—¾N¢Ÿùìå[.ÙœR*ŽuÞ»¶|]qŸËãyÙ 7eïyåÐÃ?þwï¯n¿ìúm¥r:zÁ´¦QúÄc·|yü/jQë÷ûWïØ¥©ºBÌtô}õÚª0݈åý³þ\­~çÓïbØÚ¿ì¹ñª|SÃÙ×èÜôOþr]ÖíÛoÌ/T]¹÷È]ÿ-U2iÖ+^Ävå¼Ñ¡¿]Á%ãé;»·‰}*iÊMkå0aÏ@gQRÊå÷vˆYäñ¡ªgZˆà#Ž[ÈL.'³3aÆÕ…µa÷ç^扚c[GÞ¿ñ"ל¢ãå&{^t¢»Ÿ{39J6Ö]ùû;o»bonÁ kfîs.W—ðdü¿Þ²÷ àå7þ— íkøñìØr:+ÿY •÷sÞÿýýû÷ÿûßÿ -,,üàƒ6lØp÷ÝwÏ-6ëX¥fýds†Œ”‰8,&™‹Ü•oøÓu«ì+N0iuíÜ]p,?V@î>ùÁ»oG]úJÇó{ܰË^~*/õÆk_ºLûÿ'¯=š#%ИÊç2$/ï+¹ýõµäî— Ûþ},‡ {DòÕ»Ãùûߨݱ7…Ü-|ê@pÞ>> ÏðróTž–±JO9õƒú¡{ÕÎ-Yð ¿Jué+ÐlTÞ—òŸ‰ñ»D=·TwëÑ꟪í7ZE°<õB9õRG+ òþO{{û5×\C ýSO=Å`0ž}öÙ9GÅ_{cê³¹‰«ó/Þ¼víÆ«¯Ù*ÆCÿ'c6ü†ØÉ!Ó*µÐ…T^~ɹ~=LaÑÚÍÖ ¦å&’K#'¶SsƒúŽÕ@]e‚·/*düÒJ·GÏèÒyY«ùôã•ÃNE¸åÝßŒÙøOzú™W®šˆgë Wì¾äÃkßc¦Ú'ÊŸùGŠïå0aÉŽ½i¯>ô2´÷ï„mäÑ‚žKg“g~¹'¼çÔS }Eüú‰× Êõ&{¥Ë.˜Ðd|,ÿ [ÂÿL8±+^0óœ:™¡ÿ¬€Êû97Üpù߇~8;Û.%7ÝtSxx¸÷KX(l2O>2dæãi¦¿ôuéß}}ôûãŸýá®}Ï¥Ÿ9û‹°«seg”>»V„LjudWŸ¶lŽ»´‚\ªÍds»2¦-'»ÝÓÖm· ÞÚ0fUœ»D”ôd"ñ¸fðÎê‡ áö_³§›>ûr˜lOȶ§ðÛ7ü£ÏpQçS]HÄcñBÈþNÔL/¿îsê6ÜÒ·uû}ɼuò_‚…}ë³Ê5Ì8!;>–¿ ‚¹ï5ΙùÏJ¨¼ÿãúßüæ7äo¿ýö †_/c9rz"Õ¹KØtõdùÒñÓ0-eÃeä߽ߚôj§þIéULäwÏéûcŽÔc¤d‡ «ÇU.Ýã’Öoç¿dÙúŸbèæ8çöÁïz$›â¦`‰.¥Á¿{³Yû`´½?hÖ.1ÿ&Á¾›»oÞþܪ?ÝQ~Û-ÛŸ«úöÉqe‚éÏïŒúå#G±¶Õý_Ïж– ÆN|$ZðÆkÕœÒÃòM`9†ƒXâ™^î /9õ„iøP«Éú×pQ» ý§OÍ6Q_ʲKx Æ]Å@^|µjø)uàLâœÂ üg%T~EàúO?ý4l‹#oþý÷l{b׫·^”A7öþßë¶²w.%Ov¿õòÿø?Ùœ-bµ?¼?Š£ëø 3úÍŸÇßü³©o¼°99Ô8Ðvì‹D·>•ˆ99Ú$û½Ïu^$d"X`à…›Û´\ƒi›yæ£[7F—|²ïOÖ¿þF5-•øb¾ü‰÷fýýñhÖðŸwßÄ Û±ËñhÿÅýÛË„×TíÎD-ÿ}7.÷†·w|póø¯’ØÓ›¸ç¯„ùÐÎÈéIúVN®|<ó¹»÷=:Ö»óûŒq;gs¹[¼äÔt~n y¥ }ïºÐ±Ž“wÿ¦œ”Ð&çÄ—òŸê÷1w\}cÒ›ûòâ$}%gFÓnÞráœÎÐV@åýEMF#ƒi— Rè·m›ò&:yŠFsãâô‡þ™±÷Õç·íë°Ñ¸ Yÿzðwj¶}ÊÅ‚k½ºãw÷ ŒÚ¤‘)¼~x«ÐÞr.yéðËÁ½úÀõvpÄò̼­O²¦ä½ödÈÎ'ÓAXjç›”0ÞCZÓH}üí¡ÿ>žyoSšðð[Ç®’¸©Þ;й{×—ç ™™Éë®üäÈó¤qýg^ºõß}o—ÀD1w¾ñóÓ×2«ç\þ‹Kx vÙ+‡ž~j÷ó·ý¤mÈ‘xÃsïÍ$§3ôŸ•Py¿†á59y¿}úq«Õê6)ñÙ9y»U䓯Ùóù5{\3E—½ÿ¿ËÜÄ…0®{èäŸ{xáWUxõÄî šæÉg?mhwnì.nØí=­©Ð˜Q/üíËSN‹¡ËÞÿï‡÷O #μ¯§ë¾‰]iöÞÞ®½çOÖÊ1Ëú×·»Mt¶å0ͻٌÈÖžž9_>AÖï j&Gà.§Þcˆ½fï‰kÎgüúΧ1m{s.ÈÅ%<ƒQÎÍOÿõæ§§ôx¶þ³*ï·pù]t±ë ¦@&“Ù[€©ˆÄ׃ý}³µm‰348X{pïKDå\‡È€¥Pyÿ…ÀGFF¨ÒÿÝ-¹ªÄa¦ìWû? œñ¯@€% PyÀ2ÆË@„/TvvÏG´þÇ<•?€Z€Ê€?Tü òàÏ•¨<ø3@åÀŸ*–AXÌöŽ/¶-óŒ †¹.ç97€Êû'+ªI|‡ZY™ ÃÐ@G{›^¯Ç—¹W¯ÎÎ-*,ðtA.¢ ·Ù(È)PyÿÄŸš`¾¡\V(Çb6ë´Úæ¦ÆèØ8@¸ØæøŠÙlÿ¬È•×ìp{Öd2õ÷öhÊK¢@2³ÎÀ¾TÞñ³&˜oÈ'¿á¡¡††Zªd…rLfskKs\|‚ PäöCªË‹‰vû%AE¥29‚ åå7oñ±:Fõúe_^Wü¬I€`‹ÁbR"+óã:ÝàOþLöû«§³B‘H7¢%³|Låã>ôŸ"Là—M0ß(‘•yb¥ <’=zJ²|Ͻ{€ ø'+­I|‡Ôwà6 1¹/ß×Û ÃXDy2@å`1  ‰5|úúzk««"jÓ*¿²húþpdvV¨·µ@çaͱCúø¼Œ`6U‘~ áø#éïëmkiÙ¿Õl6•Ÿ%)ú•¨ò¸E[[QÝ; µØŒÁâ ÔILöt¼ûø‘:FêÚ,±§ÉšQ‹} Flž,"1:Äe9yÀÌhøîðPtN¦‚³Ø†<â£Ã/Í*&lúúŠÊî¾a³`p!ʤˆàñÎP_£¦®¥Ë`%8i\²JÈ@çÞmšÎ¾¼~D·:'×l2’Ûªä”ÎŽv±Xb³Ù¨ÉA¬D•¯“8MƒgŽrÔŒŠÃU ç¼–!—{›¥‡¬ÏPöxlM( !C:‹³ „¦fµ}s¼ä¨dqJƒ«Š*mªµ®¯ÓYbÓȃLqR†ÇiàYàÉž0^N@¼é]óp{eMÓÐȨÍ1® #î',A}p„Àœð˜q‰\ί=yì;QD( –KèKW‡·Û¼xøDCp…*—ö‘Þª¢V='9+…K'ŸéªNq7äPÞ-šòRO§Tê”YFæ‘•¨òãÕ¡DFþ…GÅV;R§ Î òrü‚Ð’ÒU{¿„ÅÆÐój£Ó” v»gí30„Ùæ¹IZŒσ×éÌaúJ“)<ÎÔû‚{{¦A¦S§5ü˜´œt1C­†Ú»nÒ ³·¨í{HÂšŠžÁÞÆÒ†zAîºL ôËOï©Ú]ÂÒ‚ Ìšv­,{s£ÃŽNl;T×:º*’Gº¤ÞŠ“OãÎzNãa³ ï6Q«Íšœšîö‰Ñ` *w+TåÏ#4¤ßìòÍ OÇ=Eƒ²¸\ž—(&…¡º¶1K”ãy· [ñ(®}›ÀMågjÊÕÁºÉuÙñç'g—U÷!-W™=ËŒ]Oö ˜ ëšu–˜IÓ¼¸¥ÏˆÙáRgS5ùžã$Ì“1Ñßþ¦Ù`‹eÓì·‰%úà<®ïµ¢§°«˜°¿û3­[p¦Ééèp«J´ÏB6]Å"e’[³ ï>QÈ`›ŸüLJdŽØ6ýÉ’†y°€ÇA`ÛH_{­Á"V <¿Ê:¦ÓLDBcóX³ì›À(/^̬;[ÇA­­%(Káx˜í«,Áäë¢0±ªãÛJ[©aã퇧TšiZ!b•|ü§FÆþŠŠ&sFVšåàÉ¢©d\ÍÙbnr‚ëœ} Ò`¸yР±lơʪ‘‰®Êœ²™ZšºiRq CFÛlèxƒËD;zúAdÁ°çŸË/>iUL•KûŒ0Ã9XG‰FœÃ¥CÃ]õÝf<&Ô>ü/=Q^Ò&ɳá®Úb˜.æ`0„Í*ü"f/ [q­ˆ¬Î`ÒÝT]?fÀ ˜Áæ…ÄfÄ’JXÝw`©(:q>ñšM©³ž/’§e+Ê+N·àO$KÏN„íýâúòN³z}¢½ƒ³SÒ#Ÿ>Õ¼AL·Ë(B—+èš,–n>7醇„{H‚T91µåeEF Agñ é0ÂÎRG••t" ã„'‡jK:}L†£½%õAgó#Õ¹b‡Ê UñÌâê‚c•0²„^³ÌO5iUL¡Kû‚rM–MSUy¦Àlƒ¤Cª²Ãs ¬àõ˜¦NSTk8Bij¶ ™SxWˆ©ß±™'NxsÅ©<ùH§ŽŒ›ñq ÎÛì5JOâ6l’ÂTª³”SÃÐÑù[£'vÂØü­±“Îz¨>?%ËV¬ÉWxµÆ+‘ë¶DzµÇq K ZYl¶ì¼aò-ñ®NËozþ6/ !ôà”,7ÅFcË3óä3Ë `qðäðžŸÀPùÅ6W©S¸<ÞÄ|G§×•_º¬ÝrÑb›æ‹ÉkEq¸¼He ©ï Óh¤t–b¾cKi³¯.†a£‘²×䌶•÷OY€é{€?ãø’]Z.=m­.JªcÃÏÿTÞ„ÇãŒh™,?+¦¡ÕóøKsQ@ÿti¯«{êõ”TÇÉo?*ï‡Ð1zXdD]m5ŠÒ„K¹ƒX R248X]¥IËÈ¢pÞBVšKëFFêjªÒ2)¨Ž•øÛוFÇd2‹Éª©ªÒéF–fï °t@=euJšX46:ºØæ¸ÁÏ\zu¶ýç~‡|áöìxu¤RT@åý†Éf ’ÊCBý¾× ÒaÌfóÒ”xÈï\Úd4nß±ÓK «ôåý“ƒÅ¶  réËPyðg€Ê€?Tü ò`y@ª•ÅlÿG,ólfŒ †1T¬ð TÞ_YQMà;ÊÊVÇåW\±ìË àŠŸ5 ÀÌb1XLJde> p\§áñüÉŸ ¯ß±ŠDº­ï?K‚ü§Èøe“Ì7JdežXidžª,ðOVZ“ø©ïÀm–)ß—ïëí…a{×›òd€ÊÀb@8FmôõõÖVW!E&2ª×•_Y4}¸?2;+”;Ö;¤ÏËfS9àÇŽ?’þ¾Þ¶–– ù[ÍfSiñYòˆ:¡ÿø£WœÊw?¢µLì"4á¦MGq8qÃVäô·ãáa„ÁæÉ"£Cãô0C¾;<“©à,¶!øèðK³Š ›¾¾¢²»oØl#Aˆ2)"x¼3Ôר©ké2X Ž@—¬2Ð9„w›¦³/¯Ñ­ÎÉ5›ì˽ª’S:;ÚÅb‰Íf£$_÷Ü»gÅ©< Ÿ”¦wJ¢A0,bçîHõÙÚ1YfºÜ¹Ë¤#døU†Zá¶¡®ºêŠBšps›ç…Âà8 ð<ç X fÒ(ÜB6„ù¶mntŸj PgdsðPgMEYG´E‚!†žÒ²†ØÔ,1é¬)þñdÙúõiÈìûÅYáQQŸ¨DP4$,ÜJ‘Ä;Y‰*ÓØ<ò‘‰]+ †aÆ´³0Êâpìwi/³§í`wÛXD|Àô8Ý…©9vh$ZÍénìÓŽ²”ÙYaô¦Š²öÞA ŽðE²8u"Cp«öä·…õºDÇ@‡¾õì©:Óš ÙPÏé“Õ´M›ÒÇ ¬GŽˆWoŠãÓ©*7¹Úã8ak¯«híì5˜­t_Ÿ®”0õÍUÕ½º1Ð…Ò0U’ƒÝÜ´È8ÊÊÛ{‡ŒŸ%e{IH×Q[ÕЮ3š'Td¦Åõ}Ód´BšïhHwçoÚœKUfÔâÖá=Uôä†`±:ôkéUqŸÎÊUƉöLÉ”éÕ »Í6Rµ›«zØŠ¬P‰½_•’Ñrôxè%†ƒÍ6¼›$ Z•lW¢Êû É´™‡ÑÕT)2Ö$ ØV+ÑYr¬EÏOÎÊc£–¶ŠââB|ýºd„–r¢ì”B¼Ž‹÷Ÿ­î ÏÜÈFaBš„h~h5ZØö:2k+M07†Gë8YXiÌß²Á÷¼t–œpµ‡TîÞŠµ½XBr–Ç0jµŽVIXéá ©<6Ófi*/=S-ÊNpó{+]}‰P©ÎŠftUU””çod"°Û„ ›ötEcdÊê!·µƒZòrò6¹$ç^˜pxOMm-G&W1….í !R¶¦½Õ ˆgÑà‘îfFM°všmÁaãC10Ê“bèPŠÂfÞ5ʼnqùye…~áÀ4xúÈÁñí€øµYá3œŠÄ‡»jûÌ6…ÂËúÂÓÃ0DÉr½?‹Âúê~cd^žÈqWNOk;z²Ù˜ɤ±¤ª˜ÀoKÏÖYZ±àde ý["0ʉ  7×iÃÔöy˜Þª>¦, !„Á¨ø†‘MçÖž̤éÔ‡®É—9˜ ¦ó¹†­ä9¯dJâÒd?5@ ™®ÑÒù*¥BBn°•éu‡:L¶(ºÁmBaˆŽ€P©XÀ@aˆNgqø®±–<çÞ“GE:º) F›þH•Kûˆ(1;¤¤ àè!!Å—»*‡‡Â¸UGö¶¹´ó#.\Ñê,sï†IïØÌ++Qå'Ë£Œ ¿b`T®Jp瑞Â0$ãro³ôõÊ/p„&Ð!ÅÙBS³Ú¾9Þ‰rT²‰8%‰ÁUE•6ÕZ××é,±éöa"¦8)C<÷¼OàÉž0^N@¼é]óp{eMÓÐȨÍ1® #L·Ñ2‚&úà 8á1㹜_{òØw¢ ‰0P,—ÐÝ –&®o5¶yñð‰†à U.í#½UE­zNrV —w7T.ânÈ>2ëCx·hÊK=R©Sf™GV¢Ê»ŽË{‡”n¿+ CÝ+‘§0ðôð°Û=ëhŸ‘€!|lÌF0ÏMÒb¼x|¸NgÓWB˜Láq¦ÞÜÛ3 ‚0:­áǤ夋j5Ô~w¼Ý}t“f˜½EmßCÖlT ô ö6–6Ô r×e¡_.xnî«Ý¥!,-¬i×ʲ79ú7ìè´Á¶Cu­£«"y¤Kê­8Ù!t†ÔÛp›mx·‰ZmÖäÔt·§HŒEY[‘#6³FY\.ÏÇ0(&…¡º¶1K”ãy· [ñ(®}›ÀMågjÊÕÁºÉuÙñç'g—U÷!-W™MMf.d‚ɸ®Yg‰™4Í‹[úŒ8‘.u6Uóðï 9NÂ|Q0ùýÝáoš ¶X6Í~›X¢oaÎãêð^+z K±Š û»?Óú¸'»„r::ܪ‡í³P„M×c±…H™äÖì»O2Ææ'?S*¿@À(/^̬;[ÇA­­%(Káx˜í«,Áäë¢0±ªãÛJ[©aã퇧TšiZ!b•||dÉØ_QÑdÎÈJ›'{`ˆ¦’q5g‹¹É B®sö5 DHƒáæAƒRIJ‡*«F&º*sNÈfjiê¦IÅ l³AP ã} .íèé7‘DÀ.¼xø4¦U1U.í 0 ç`%qr — wÕw›ñ˜PûðcD¼ôDyI›$C̆»j‹aº4šƒÁ6«ð‹˜5¨üB"OË6V”Wœ>nÁžH–žÛûÅõåfõúD{f§¤G?}ª?xƒ˜n—Q„.WÐ5=X,ÿÜ|nÒ çÏ’ UNLmycY‘ÑBÐY³ÜOïÉ£¦9Æ´*öÑ¥©¡ħ®‰ww*(JEþùÞ m­-!¡a°cÇñŽö¶°ðªn‹ee©ü‘ƒÜß¼íâ¶d&X,æÑÞ*-Á^¸øï™scZ£[šmmq ÆûòüAmuUL\<¹[]¡‰Ž‹GQÙü©Jge©üòò°“Ǿ± Ì0õ*·¿2–Ë«Ñ- |>¡ò‹m8®R§py¼‰PÂÊRùåÅÚ--¶ `¾˜¼V‡Ë‹TÆúÎ`0F*g)L&#PyX¦Í¾r¸\†Fj^“?Ÿ x_Þ_Ad¦ïþŽãKv9@he¸ô´µº(©ŽöÞ> ò~Œ <dDËdyùä0­v˜ÇXš‹ú§K{]Ý{T¯§¤:Ô1Ñ@åý:F‹Œ¨«­FQš00p)wÐKRJ†««4iYÔÎûQÅJsiÝÈH]MUZ&ÕÑ?8TÞÁè˜L¦`1Y5UU:ÝÈÒì–ˆ£§¬NIK‚ÆFGÛ7ø™K¯Î¶ÿÜïÐ/Üž¯ŽTjªƒÀq ò~ Ãd3Iå!¡~ßëPé0f³yiJ<äw.m2·ïØé%…Õf_ý“ƒÅ¶  réËPyðgp òàÇ€¾<ø3`ö,È>©ÅlÿG,ólfŒ †1T¬ð úòþÊŠjß¡PVæ ƒÁ04ÐßÑÞ¦×ëýàMÊ¢ÂOgáò¸!Š°Ðˆp›Íל~ô¯€Êû'þÔ$ó µ²2XÌfVÛÜÔ'Û_1›í_¾òšnÏšL¦þÞMy©@HfÖxÎ\~Å@åý?k€ù†|òjh¨¥DVæ“ÙÜÚÒŸ ùÁÚG%lµZ]Ï¢(*•É­(/߸y‹Õ!–-ûò¸âgM°³X “Y™×éFxüògÂëwl„"‘nDKÉOÀü§Èøe“Ì7ªde>Xidžª,ðOVZ“ø©ïÀm–)ß—ïëí…aû åÉ•€Å€pŒÚ8èëë­­®BЍMgåª|ͱCúø¼Œ`öb² 4}¸?2;+”;®Ì"æáø#éïëmkiÙ¿Õl6•Ÿ%)úe¦ò¸i¸±®±·Èh¶À4O ’…E)Ä”iÖÜè>~D3j±oÁƒÍ“E$F‡פåKÃw‡‡¢s2œÅ6à~iV1aÓ×WTv÷ ›mƒ#Q&E K_£¦®¥Ë`%8i\²JÈ@çÞmšÎ¾¼~D·:'×l²/÷ªJNéìh‹%6›ª¬-'•·™z‹~(ÆäÊÄT.›AXÍzí@wÍ)…xÓ[‚ã‚À“ÐTj!„Û†ºêª+ iÂÍÌû%Àòå‚ï ²!Ì·ms£«øTûh€:#›Ë€‡:k*Ê 8¢- 1ô”–5 Ħf‰ÙHgMñ'ËÖ¯OCfÞ-βŠšøD%‚¢!aáVê$Z^*ßr¦Ì _›•0Qd|A <<Ú¹Mà¦¦Š²öÞA ŽðE²8u"³¬9vhD©bu7™l03<>-"ˆ=qICYy{ïqÂâ3¢¤Žã„­½NÓÒÑk´,~`db²ŒO'ZÍénìÓŽ²”Ù«"x“mƒQ‡c¿“sx™=m»ÛÆ"â¦]’Fwµ·jO~[(P¯Kt tè[Ïžª3­Ù õœ>YMÛ´)}<ÂZpäˆxõ¦8‡1”à©Ä%PÑÚÙk0[é,¾<>])aꛫª;zuc¡ ¥aª$%»¹i¹-RO é:j«ÚuF3B£ó„ŠÌ´¸þ¢ošŒVHóý éîüM›s©Ê,€ZÜ:¼·6x®!X¬ýZzUܧ³r•qb=S2ezuÃÁn³Tíæª¶"+TbX‰JÉh9z¼aÔÃÁfÞM’-ÈJ¶ËFåÉç£&½Eº&Êå®8®5%'Zôüä¬<6ji«(..ÄׯKvž©© ]µVŧš ϰ7l ¢ÛŸ¡tõ%B¥:+š=ÒUUQvRž¿‘‰À}•'GIéä-Ñv7”àoZÏAí1éjªkl«Õ[ÝИ|ˆsnO¾¤³ä˜«…- -9äDùD²Ž‹÷Ÿ­î ÏÜÈFaBš„h~h5ZØö:2k+M07†Gë8YXiÌß²Á÷"õTb½'j{±„ä,!aÕj­’°ÒÃRyl¦Í4ÒT^z¦Z”àæ÷Vn‹ÔmBM{º¢12euŠƒ[ŒÚA-y9y‹\’ó/L8¼—68¹!´™\ź´/„HÙšöVƒ"žEƒGºkp˜A6=ÂÚi¶‡ÅÀ(OŠ¡C=F( ›mx×'Æåç›e£ò¸¥,1kÜ`›±éØ÷5Îí¨u›#0Cu¿12/Oä¸gF§§µ=ÙlLŒtH$#Pìè³D‘1œ††z]P¢ýNKç«” ¹ÁV¦×5ê0Ù¢fMǨjc®ÈÑ ŠP‡¶®2¥‰™öxDÉr½sJ£y{Á‡»jûÌ6…b| â‰KPXïÉB–TøméÙú K+œ¬ ´KF9±ôæ:m˜Ú>Ó[ÕÇ”¥!0„0xß0²éÜÚ™4úÐ5ùÎ'&ƒÉw„çE+Ç^˜’¸4ÙE PB¦k´nŠ”î¾j¡R±€AÞAét‡ï{¦ Îy‡÷äQãmÐsÛ¡Ê¥}D”˜RRPpô‚âËŒ]•ÃCaܪ#{Û\Úù¾%E´:Ë»aÒ;6óʲQùi ŒÕ9bò ±¨ð4¹k³ô¥ÊÏB hÈÎâô0fÐùŽ!?aÐA]åç#l6ànî²Dé7'§Å'+É©òëÇ›Ï=ä¨3‡«ÎyíÄ%Þ- MÍjûæx'"ÈQÉ&â”$WUÚTk\_§³Ä¦Øó"NÊϵÔ&áÉž0^N@¼é]óp{eMÓÐȨÍ1® #L·Ñº©ÇŒKär~íÉc߉‚$Â@I°\Bw7Xš¸:¼ÕØæÅý´ª\ÚGz«ŠZõœä¬.în¨:]ÄÝ@]x·hÊK=R©Sf™G–Ê#˜†ªûǬÁŽÁƸ\ŒÀ§M^Ãn÷ˆI>“·áIÓ¡Î-ÂñµvËE w3¥0êQ†èIé*ýîÃbc“‚¹\âÞBëhŸ‘€!|lÌF0Ï%ñâyðá:9L_ a2…Ç™z_poÏ4Âtê´†“–“.f`¨ÕPûÝñv÷ѹ©ç=$aÍFÅ@ÏÀÀ`ociC½ w]&úå‚'‡÷Tí^ÚÎR€ Ìšv­,{s£ÃŽNl;T×:º*’Gº¤ÞŠ“OãÎzNãa³ ï6Q«Íšœšîö‰Ñ` *wËFåa”ÉÅÚ*ñÜ× k“ÂP]Û˜%Êñ´ˆ[‡†­xw¼p ]Ãй‘²þ]Ìs‰`"×5›g÷ £,.×c´Þ-$ŸHÊÏÔ ”«ƒu?’ë²ãÏ5$NÎ.«îC Z®2{Vö\Oö ŽhÖYb&Móâ–>#Nd‡KMÕ<<ä{BŽ“0_LþEÄDwø›fƒ-–M³ß&–è[€ó¸:¼÷68™¥XÅ„ýÝŸi} Ü‚C0MNG‡[õP¢}аéz,¶)“Üš]x÷‰BÃØüäg ËFåIÂ3ÔÝÇKNœ¶(Ã\6²™‡{Û ûM†Q^¼˜Yw¶< 5ŽƒZ[+JP–"‚9ž;ëXU}'+TÄé®m1ªhr £µ‚W^r†—œ(æ±p‹a §–(¥ûÚöba_eÑ&_%€‰UßþPÚªH ·§TšiZ!b•|ü½ cEE“9#+mžì!šJÆÕœ-æ&'¹ÎÙ×€Q †› JËfª¬™èªÌ9!›©¥©›&20dt°ÍA޹.íèé7‘DÖ“®p¼·ÁÉL«bª\Ú`„ÎÁ:J4âä.îªï6ã1¡öáLjxé‰ò’6I†˜ wÕÃti4ƒ!lVá1kÐòRy”)]½vuSmcSe‰Ñl…itž@œ˜±Vδ+Ž<-ÛXQ^qú¸Gx"YzvâÄ–›jéª>¡Ñ! ^TJ®wÉ–$æÄ3*Z*ÏÖ­(ƒRóý&·š‡ëË;Íêõ‰öÌNI<~úTð±ÃH„.WÐ5=X,ÿÜ|nÒ çÏ’ UNLmycY‘ÑBÐY¡ò‹m8®R§py¼‰P²Qù9ãe¤e‰³vËE‹m˜/&¯Åáò"•1¤¾3L£‘âY ÿWyX‚L›}åp¹0 ”½&?PyÿA…™¾ø 8Ž/Ùå¡•áÒÓÖꢪ:€Êû!0‚ðxü‘-“åñgåÀ4´Úa?`i. èŸ.íuuïQ½žªê*ï‡Ð1zXdD]m5ŠÒ„K¹ƒX R248X]¥IËÈ¢vÞ*VšKëFFêjªÒ2©© ò~FÇd2‹Éª©ªÒéF–fï °t@=euJšX46:ºØæ¸ÁÏ\zu¶ýç~‡|áöìxu¤RV@åý†Éf ’ÊCBý¾× ÒaÌfóÒ”xÈï\Úd4nß±ÓKj«¨¼ßbr°ØV”áO.½*þ Pyðg€Ê€?T,‚°˜íÿˆeþ‚ÍL€Ã0ƒšÏ•÷OVT“øµ²2 †¡þŽö6½^ïoRx:‹ —Ç Q„…F„ÛlàWQøS“Ì7”Ë åXÌfVÛÜÔ'Û_1›í_¾òšnÏšL¦þÞMy©@HfÖØ€Êû!~Ö$ó ùä7<4ÔÐPK•¬PŽÉlnmiŽ‹OŠh´e¯Z%lµZ]Ï¢(*•É­(/߸y Py€ü¬I€`‹ÁbR%+”Cà¸N7Âãø“?^¿c#‰t#ZJ~æ?E˜À/›`¾ P%+óÁJx${ôTe¨€²ÒšÀwH}n³°Lù¾|_o/ CbIåÉ•€Å€pŒÚ8èëë­­®BЍM¨üÊ¢éûÃý‘ÙY¡Üùˆ°æØ!}|^F0›ªÈ?†pü‘ô÷õ¶µ´lÈßj6›J‹Ï’G„” ½Ÿ¨[na‡¯ÍLïˆsyQp¸arù•…5]¸:''ˆMóžÖ, ÆMMeí½ƒá‹dqêD>fw]GmUC»ÎhFhtžP‘™×_ôM“Ñ i¾?¢!«Ÿ¿is®å4S3ÈL¶×U´vöÌV:‹/OWJ˜úæªêŽ^ݘ@èBi˜*I‰Á°Û8ÊÊÛ{‡ŒŸ%e/ü(FY޽ëÊáeö´ìn‹ˆðTÑ5ÇD«9Ý}ÚQ‹ÕѾ–^÷é¬\eœX`Ï”L™^Ýp°Ûl#U»¹ª‡­È •ØV¢R2ZŽoµÄp°Ù†w“$A@ ²’­?¨<„°é0<Ü=DDJ& ùHÕ¤·­Žš|.ˆ ¢7uÖëÓhÍz‹tMÔÔ±c{¼"ð6͉º8%7[ÄrpÊÌ1+IØtÕýÆÈ¼<‘ãöžÖvôd³11 Ñ* ( Ñé,ß­Uƒ'Pð±OfD`&M§>tM¾ŒO'3L§¼h%Ïy%S—&û¡¨JÈt–ÎW)rƒ­L¯k<Ôa²EÑ ¾ä°´Á‡»jûÌ6…‚åÉ£"™ö&Æ%Ëö@£MïQåÒ>"JÌ))(8zAHñeÆ®Êá¡0nÕ‘½m.í|碈Vg™Cx7LzÇf^ñ•'á*òdQÃ##ÚîºÖ†Æ¤¼¼¹w¶ÐØ¡ CkmMK`JÔdw›V°ËÝ‚ÎOJSŸ’©>[oŸ\l–²bCÏÝ{šP@C†t–H‰\ί=yì;QD( –Kèî†D˜â¤ ±ëáYãÉŒ0^N@¼é]óp{eMÓÐȨÍ1® #îg"A}p„Àœð1¿€¥‰iðÌÑC‘‚Qq¸*AÀ°ÛÜW´Så%,OQQåÒ>Ò[UÔªç$g¥péäÃzCÕé"î†Üê»ES^êé”J2ËÈ<â'*9fû…ù[qìHfPšNê|uߘ•ì¼OÙm¶a".‚‘Šš>ƒUJw?ŽÐ%™iÂS?ž*GW«Ã'+kZÁYÓËÓØ<Þùþ©uzvÙCÖlT ô ö6–6Ô r×eοð¹šá‚0:­áǤ夋j5Ô~w¼Ý}t“Æ¿¼E½hùP= )ÝÞ‰A,6†NiSÂÛƒÑ%]³aÖ´keÙ›ƒývtÚ`Û¡ºÖÑU‘<Ò%õV‚ÆUBoÃiQÈ`›ŸüLÁTž°éO–4„ȃ<ÛFúÚk ±c´$þî£ýlÞª†º†ºò3ö_EÑÙ ™:vºdcüÕY¶“§ËŠ4=Fä)­™#OË6V”Wœ>nÁžH–žÛçu£½%õAgó#Õ¹b‡ê UñÌâê‚c•0bí 7醇T›{3H‚T91µåeEF Agñ é0ÂÎRG••t" ã„'‡jK:&¿”ä°0xò¨iÌŸKû‚rM–MSUy¦Àlƒ¤Cª²Ãs ¬àõ˜¦NSTk8Bij¶ ™SxWˆ©ß±™?üAåɧ¤È8udœû“4¶8>UïáR”›ër<8osð¤]º |Ý–pç¶—´<]N"LÛ°~Â^„©Tg)§@èÁ)YÓ.rÚ/ÏÌ“Oì²kòHÝ ‘ë¶Dz5Ãq K šGŽ,6[v¾œä[â]#ŒÛ°uò%éùÛ¼$4Ãü– ®îíÄ“GMs j]š*Z@|ê·B¥"ÿ| ï…¶Ö–Ð0Ø1„ãxG{[Xx…7¿Pù9qäàO§6o»x!-VÓÚÝŠnkÄx_ž ¨­®Š‰‹'w«+4Ñqñ(J³X(ûÊÿÊUùí^À"Ú+|>¡ò‹m8®R§py¼‰PÂÊUyXD&¯Åáò"•1¤¾3L£‘âY  ò°L›}åp¹0 ”½&?PyÿA…™¾ø 8Ž/Ùå¡•áÒÓÖꢪ:€Êû!0‚ðxü‘-“åñgåÀ4´Úa?`i. èŸ.íuuïQ½žªê*ï‡Ð1zXdD]m5ŠÒ„K¹ƒX R248X]¥IËÈ¢vÞ*VšKëFFêjªÒ2©© ò~FÇd2‹Éª©ªÒéF–fï °t@=euJšX46:ºØæ¸ÁÏ\zu¶ýç~‡|áöìxu¤RV@åý†Éf ’ÊCBý¾× ÒaÌfóÒ”xÈï\Úd4nß±ÓKj«¨¼ßbr°ØV”áO.½*þ Pyðg€Ê€?Tü òàÏ•¨¼ÿCà¸Éd6›Ìöß’À0 ¥a N‡WüRÚ d+ ò~ŽÙhÕé{úºúc£³ØqD. a²˜´¼°*(À ¸²?C ÙÐÀ`]}5“ÉŒKHí«–k‡†šK{Ϫ’R%"›Í6í*Ü¢­­¨îÐZlÆ`ñ ê$&bïÞÚ u5 }ƒZ³`°ùÒÐÈè0éD¿×fj¨mè²/¢Ë` %²ÈÿßÞy4qýqJ áR•óìñÈÐÊÅljN†*вâÞ–zvpÇçðÄö>ôÑ3³÷hǤ‘…¼Šü¬´ÈØâÎ^²™gÅ=Iç¹u à0É ”¥:ÜÜè$.‡}ž‘…¬íêë¡/Y†IZª; y•×Xx\~~A¡… ™P(½?>6ÛîäâÔ½»ƒCtä»Ì´TcSS¿v†ITT’ÍÚø»²éâ߆S—e,Ù•ò*RȰêêã"‰'µ˜:zÚÐÃçmÙÖ òÇW‘†U—ö.Õá&S[űª’ ‡ÑŒ˜°ø,Ä£sg#ñl÷ ”%¥2ýùóDj÷îÞRûžÞùO¿CÛû³²uŒ½“Uhì‹©Y\^¥C©#Ù|™Å„ÉXŸW%4¦(–˜Ânï£þämx$±ƒ‡•¬0Ö/‹ãg${,íLx÷8“/2äÆñ †øá¤›Êq_ß»-Iƒ¢h^ؽtçn]¬å… ÔÚ3ò'K3'bJ„Pù¯ ò ™J6昤¥|Ä´,¨{wl‹ìÓWl!--ÍÆÎ^(4” ë’à|¾"2m´ÈiÑÉh€³T‰øÅ‰¹|‘½="’­µÈéQÉH€³l@*¨I I Ž'Ïgaï^ÀD7óÊ’ßLÔ¶cS“ˉ¥y4CwI 3Y˵c@mÊ—OŸh{upfªÔz#ë… ÔÚ3r¹éاIígÞ4 ò •Ba³ss²’ízõîƒýI÷¦¥¦p«ª,-­ÊËËdBEåÏÞ$™›rô´µ`HTš—žP%0t×ÃvYµwÏ|ô6ì êhmÊ Àå…Ù qIL3OkBZ·wÏÆö¾Ú[›1éd!·"?+5Gd'Û_Ä4íÐyö<êös6m ,9Œõ’¢âD<“ÎÕ{!˜.'éx|®¥ ˜ý¤gäöª»g0"£ŒŒXt*IÜ.OfZšƒ@þ+¨¼æè º‹‹G\|LYY©µ­­Žþ˜®¬´$ùÃ>Ÿß¥[·^—p¦q´áìä¸÷•U QÚæŽíMñf^"Ó1 ýû„¤Ø7iXXIÕÒ6vô±·ªîá‡ï ôOJLJŒ|‰¿ûCaè™x8Ê YǼƒŸèÙ‹w¯a¢¯KYYrP ]!áC¬m«šŽåž! Š£Rx|!L¦é³­ý\å¯d€¯  òš ‰L2`³ºšöLMþ”PRRŒmÔÕÓ·´²¶±µãñ¸‚úÉÆÉÃÆII† CgoCg%Å鎞õ» s{qdV)zV]{[I–(«ŽQ0£{Ÿ~ $jpo}4Û3ÎÞþŸ>ðÕT^ÉDÂ5·²²±³‡‰xË-‚"B ¢¢\.VýLܹuCÙ®^}¿i”Ñæži&ÊÛ¶^|•×|0Íðùu^ðiE¾dÑi[Ï4“/Ù±€/  ò É•M¨<h2@å@“*š PyÐd€Ê€&T^3÷Çÿ¡ÒÖ¶€ÆÁ0™L¦R©ÍϪ° ¨¼fRUUõ!éý‹ðç¹¹¹õg©_,D"ÑÈØÈ߯£§·—HÔÜ(íÍë—@å5ŸŸ‘žþðÁƒ>}û™š™C˜ PIMùxÿÞ]–ÛÒÂ’ß¼w³ûT^áñùOŸ<î?p££““ TP/,,-9œ+—/Íùq^3U^(•×@PÉÎÎ222¨)6¶vÙY™0ÜÜé_P*¯™ˆD"HL[š‘Hl©'j@å@c±|["âg-ünì?Obù;73ª­Íšˆº«üùNŽÓ‹&^x·««‰d˃o}¦çlíÓðr9ð‰’Ék÷oܸj¼ßç2·.©Wfÿéø0â‚!Ò:%€¯ TZlÈLÚ?3B¶Å#7µ ší»ëʾˆ "ìüæE hwJœo§+›€ÇC¨Ôæ>©OAxƒ3ÓÖÈàÓI?³%@cQ÷XäÛ.ê½yso¥êg!· ágo þñøµ§E|šW·¡[÷oöÑS5“èføôÇN®g/ünþÏñ¤ùë}—º[G,ùÕþÒî¯ßÛ.¾}kª~ý¬øå¯;;è¸÷ÙÞ¡ø\1ÇÆ÷\—ó8î|ùÛÀ•Z '%ù£¢ÒöVN½nDmõ`I ­¹‡Ï2$˜üu©»2kå,ùo¶Ëgò$Ð<4!–'RÌŽ-oßûÇEÜø³4¸N<jb¿qÇ.>p`” ž8¬'/éÕ^bC™Aº$8¯¢ú¹vÄê•“Î]ßëoYV*85ѯ~V¦ï…ƒcýf ŸØ3̃:4äΜóv4’pð6ò¼Î‡2Êg˜1±|ò^…dÂŽkÝêÄì#Â,Œ¹ZÚ¸Ô€µ²–$ØyaVNÆ«–r Ð`‡½U{•Çpžö»ãViSN ·–nTÆ,¹›¹àIhOG=luÍéãGmìÎØ,V^ üçç7^/äN[‰iÐocý-±)QYV–w® ôž8jÇÀ’c:Cö®ìlŒ% Ñì6·cïÜøfÆþ.Øêµw,‡“»ÉѰµRK´uÈ¥†nþþÆÍuø:`”gh‚ÊÃdÖáõ]ýX:ä²t#·ðšEgØêHV)Ú~t(cŠë«|öÓ±FÆøkÅ(Ìè;c×?¶d;§¯¥*YM=~ö°C÷?)¾/w“æÙgëàýWTí}Hæ%¬Ž,\ÿ‡WçÐpRK0Ìzm½Ò«qþ_-ŽNºš òvãŽú®q™r:i®ü¨5 †ÞÛþÝãÁ#+kZm‹‘*׺£8«’÷wÓDIMªšÕÂr[ã [ÿU8;n9ª?|‡¡Úy(.¢ž% $&ICT"êìý¥WçàcÚUáFg A¿þX²Äoá—½x^Ê_æ¢WÿXÃÂÅ¥¡Gš d…ð³§ ßì¿äâèÈéS‡o޽¿¦Z!Ê–1¶ß¯¸KN{ã¾èæ'íWÝZPÑ•ǰv0p™ã‚—Bº-¾J¢»nëiºzô|¿?ÛÓ‹,˜L·=OY£|ƒ4ÕÕEÃßéŒ]О(8Ü)`ÂÑѧ§¸JŽò\œëü?”{ŒMsŠ#ãÎÒ™ûò¯ü{´ '¾64¡¦ïÜÓß{ÂzÍ– 'od.˜7sP`ŸæÙuè…;[šÜð¡0«ü—;¦ýwôÍ&¼ ;Õæô™9ÇÝü¶/7Æþ=;ø_ý_¦J/=©h-7?:<<«©ç¾:Ô[åG„%ŒYµøæPAþ!é*L1Y¾ïïåû‘ƒ”­QeWfeØ~aNÖBéªq§Ü¬Úݨ0¦RÐmÿpeEûmÿ©"ê[b7æjÎeY@PTUžeÈn`oA~^«YRŸ¢Â„[!/Ö1A¯GÐfPt¼ÕXåÛVÇ&Àݵ˜f2kß%´`LÊÏELfv[›8@å@c±¼ÆB$¤¹³¿€¶B$aµ¸ùù•×L æpL2ÒÓ,,-?|y$H☘¶H¬T^¡)»þwó–ž¾¾ƒ£S‹D uÀ¢øÄ„øþ:7|Ô(×ÌÜ@,¯™)d'GgLëo\½ò{Îá–š#´XXÆ1æ <ØÖÖ®²¢¢ù•×@ ÂnôÜÜ=`tåÔ ¬þòùü‘øÏÀÊk,<1mmhKT4–ªÊJ ò É•M¨<h2@åŸ]¾v·ºyc’C[¢YÛ”-j PyMæ|'Çé‰E²[üw<Ê%‹ëÀ¨½N[[ñYØämûdÙׯØ}¦üÓoìZ~äö›·ï²Jø7’3üµ«gËTįÿié¹»¯ŠTŸî#vØàÆ$cÛOï\yæòí· ©(Ͱ}Ïáw®tÓ–Ÿ`GYžeÉw—,Ù|ói4—¨íìÓù¿‹ÇIAX•¸aþò¿ï„çU"¦ö¾“ý2ˆ“êyÊrý×àŸþ›ZŠ8û÷ßô¿]F4é®­íì> ëöhOÃö›à»øFZ¿Ð¸?ÝYMuêg¨¼†cè½íŸ_ý¤«Z¦VmhÌHßuÛú¶VY<B¥jÎë ‚’ ‡Nƒñš5«Îü”¾tísìÒvKZÙÙÓ†ô#¾¼ Û~èzÒ  ‹B¼E…ñÛç/ÜG˜¶IÅÕ|æ¦SKY+séýÜv¤—ævdÍ%P´<³Rî~2+e.Rf͘•?•ÙGfÉlT¼ÙS´ôÕ¦®VøÒÂ'~± ÚŸ2ÛDëÁ35©¼Î>qê~ø#o½5•øÉ<1îÍ[áµî¶©’U¯v% ×ãŠ]®êÛÞ[¶X||ÑvÓ¿ó+äT^Yž²ìY~Ãnܹé}ÛaË‹üù›U· IÅëìõ°Õü7©æ?YR‰ ØÏ/{5rÎíïžïTð@aú^88ÖoÆð‰=Ã<¸¡CCîÌ9I<¶KPÆš»ù°§­IevÌöÙÓ‡<ÙZ]"·Mé²dß½Õ&·~™´`ðüÎúü ;oÐ)];jìwkÇ?ÙT}»±zÕÔkz°Rîë0º»mTì`Cšlé7öÙésðôM#ÊËK;§öïåõ>܉NJ:;°ó¬œŒW ¯Š§&ö;çqìâFÉÁà‰Ãzò’^íÕ±ü93£z¾ÆìGÛüÇÿ®¡ŠkÀ-RJ¬öÉÊIç®ïõ·,+åûOqйû‡Í‰9»f)6n,ª·kVNûûòV/Nܵ]§ ß7”BTèÒÞ7£6Øb£ «f¸H "Â_×Ô­Ñn˜¤}^{=»®¢ò*"™e¨ò;›d»ìÖš2¤ë£¨l=[¯+ÒÍ ÛþÛ§Ž'Yg£K|{qd6ßL¥K¦,¨¨ôϼÊS«¯ô$ºËýñÕ Â|\å_lyî8g±Ü!uíGw~;ÑeÝÅnúT Py 'ëÉh–LU ~ý‹-î\è=qÔŽ%Çt†ì]Y3m¡ÇÒù’%ÎÖÃÜì&ÔÈ™¡ÇžeßvǾ_¿rå_?Xž‹ä…7>®YéÑcËUBÊsöŒòÀ·[v³Þ~÷æ-‘ƒ·×¶‰x)ÓO'нÓCm š½gÊ›Ua9õ0£ºùûzöÄOš!¨ŒYr7sÁ“ОŽx]súøQÛ»3¶›1©Tü×Î+x4bòþa;BÇX2Uôan‘Ð@¡ØªiÐocýñÁAi¤ìd·¼ÛÒÑD =×ÿ|ÜmžŠ6H°ðÛ0/¶à<`£üû±ìÊ寅Ê\ÚØ¬VZj7ÙER¨:{Ðö/:<äð\c ÷’8ú.‰*‘MƒÝ÷,œzÛmÊ)&R%ODPS)ø8wÙômG—n7 ?·fÁè@Ãè˜!†ôž;nO×ÝÏÞ’J&aÓ WþóÔ"7ÖfAe¼Aµk5ÚA~]Š/¡ü ¯ò—­3¶«œý §~ø]8.vü—û¸ ¨¼†#×.oÌÑ’,L=~ö°C÷?)¾/w“îÍ{~ú§ÕûŸD~(ç °U"ÅDºË´¿­dÄpÄ>¿±ªŽ˜´µE¼´Údl¤ËÞFy¡ñBméUù*EÈGsY }bJ=ÌÌzm½ÒëÓ§óI3¸…ׄ(:öú*EÛ¯ƒåqL±DpQaÑOý&í88Nþ]4à Êék)M†@¤ 5_Ãø[q¾êf`°j! *1/lÀ¥ÍJ²Ò4ÉÿïÚþ‰¹[m£Q—~óD½—Qs,p^7º÷kÛIák»¨š%Š·§ë·gÕ8ü'â¸òÜí“–ÛwÇ YïsmÉÀÃñö¿_<àbH ¿¸3xè`רû:ŠŸ¯6òŒý©Ô€¡¬ÚûQ9ûyE÷†®ŒøýÝ¡/ùy Py §~»¼„’÷wÓDIMªšIš³y}†/ô\qäÙ™ ޾Vyê&»Ž§¥éa²ôgŒ×X $³†¢Òd"žHá²Å¥$&3ǘÒÄJ¡¢’½õ×NÿøÍ-BŸ×¿U½Ä†ÝRÅ…©-6ò3×)A›îÒúYIh‚‹äÐqt1lPQN:Ä2Ö9šïöì\};‰ŠÊ6Žív¦ò›'×Ö¨ÈcÀ## ‘ÝYÚæõÓ§o|S„ §|76ô¯A®ø£û¥¿?øÝrÕ‘Ä{Án2˜Ìp"ÃP\@¨¾GU tÜðkvâ¡ f½6KSÖ·¿,ãXneæPÇê ¹H„Üêéæ`µ61|F£lø¬•ÿÁn9§ ßì¿äâèÈéS‡o޽¿Ó!^ñíTžðÑÌþ’Ÿoþ‹ð&äœúÏk”êðÖƒv:ñ Ýp þeó˼_;ºq¦iÐYHÐ/‡?–,?:ã—½x^Ê_æ‚/Çÿ9;ø òwįú$Uõ… š[(TšÁÝ~*»â¼Å†P™{ Ûz¢5E+w)†P!ªð(e4ÍE Ñ7Æo/Òÿ›S$".Û†ŠÊ7}×õDn—‡·7’wMši©säùG¡:^¹SÌ5è£"U<…e.W”ðk*DÔÇf„yOøÅ[VÅ^*¨š2¿:òOJï‹®’d í×wØòèa™4«oºy¾¸ÝÕ±±6|V€Êk8‚Š‘QQÒUšž­ƒ9ãê¢áïôGÆ.hOœ?î0áèèÓS\):º$x÷“ô®•Ïæ.‹Ä4¤±Å•|\±þœù´îöo.lü-Sø¿eun#H4ûÃ㜧|7ÆûÐÖ^žÜ‚´Ð«§YÓ¶ cÑ2î,¹/ÿÊ¿ò}Ý"·N[Õþü)U##Ýu[OÓÕ£çûøÙž^|`ÁdºåèyfÌòÔsß,üwö©g˜ÉP™B?­e ¸Ej›²Bå²"3ÜÖu4Þ &è|2+e.Rf›ˆ—“XÊÍÇ'²ÿM×";ºQàízL÷v·ÒM¸²ì‚ïŒÓð~åÈ–q]÷¾`ùkJ~Bl¾87ìÚ)k˜²<¿Û3qà9¿\Ðû¶½éós«¯”ŽþäB¤Òæ:Ƛ°°ÏÁ%.†Ägÿnÿ§€»z²œß”å)›fÞ¦oNÍš|¤÷½ñž”“HFVÙéñËžýS¢•`'¹Z+±ŸjîâRëLûµmíTí6Ö:•×pòß. ª]µ{õú¤ÇÓþÎ;úfÞu›jsúÌáÃn ~Û—m}sï¼É³{œ&ëê²f÷bü…ÆçýóÑ¢ó?·ŸK3vY~$t[þ:ÑÇ;9K÷,¿$«TËд}`Ÿ5t¼Aƒ›žU?ò÷/Þ4î“ 'od.˜7sP`ŸæÙuè…;[°ò^. ÷Œm¿§&YÃÝ¥©JÝ"k›ÂBë3õïKÉSf jOb9ÎX–:3@K|¥É ?²ª ¾’ªrúÊ\¸wù˜5>®+`ºGVÊÝOf¥ÌEÊl+J\tK²UÖ0ey²ýW^Ý&Z¼î‡mYå¦Nþ›Î>”ôÝ ¹ñwÕ¼•sFô,¬D9¶žÁ{nþh£#ç7eyʦ±rà÷ ~þqøò‘S‡§ïí¢@„÷·ë:.ÓßÖ4`ÃßΗPyMfDX›;äd-”®w Éͪî?ç82äéÈé®ñ™ë$ [£>J7’èŽùyÒU£vgÒj³&ÑlwþugÝò¼NZ ]©c—þŠýÉÙd7æjζv>žZ³¬¢0Ådù¾¿—䀘ͰKÃõ‘µMÙ²2·ÈÚ¦°P9› bÿlýóÖVñ2¯èö/"´‡.)W3Íl­ož²ÓǸ˜”^S¶b—j[¸Vûý:+Å.Rf›¡ûù ÒÛŒÚòlÔ¹IWöû’EÖ0eybt˜´úá¤Õr)º^ÛN\ÙÖ¤n–ܼ„=Áó ÜJzþS¾ýy·¶¶N1_²mŸtÈôÕ=äûS©#@å€Öî^8~VZ.JÖõí>ìü¾ê†“q ؆|ɶ}V¦/üt"u¨< ÅkÔÇÀ5øþ‹à¶¶ðuT4 ò É•M¨<h2@å@“*š PyÐdZUåQáñø|A‘ˆ$2•D¡P ¨¹à@!­§ò|.¿¬´,..úCrRx\ CÛÖÞÞÃ݋Π“Èj|W¡ÊÜ¡ÂÏY2~ÌÙG1|ˆ•|ÝȬ]kŽÙôU¹hZI[1‰ÏÍÎùïî-6›=dØS3|ìéŒô´‡î_¸pnÀ€¡Æ&Æ"‘ü¤2î|ï9æªÏÏîÌsýdA›œë²¥+ÅuàÔ^ç³–øårmöÙ‡‡ç iæ9Ò„úçÉùL®žìh™6÷æ]™_ÔQ?‡}.¿¿>ˆ-Ÿïä8=±ˆ€OµA60³ë÷íÜK¿•Œ¸ŽíZmt(êR÷æÛ´­¡ò(‚”—•ßpׯC‡®Ýj«‡­ö÷0ôÞÝ»·&ý0 áV¡¨‚Iή|l9Ì#vïV¼­`mè»n[ßÍÇC¨ŸS:›CÁ³gº­QõÚ¶À¤õªŸo‹»Zlß]Wöu@E¼ø§M[úc™oÀï}Ì?}ðåÑ*Ïãò“’8Y‰—Ò5¨GFFFtd„³«›€/?Ï ¯ôé/É—oœ™áî½?½|¶yõÌ CíÌu®¿;éT­5®¦œ)áï=§vØ‘^F˜Û‘5—@ÑòÌJ¹‹ð³·ÿxüÚÓ">Í«ÛЭû7ûèásB.u·ŽZu¦ýõ'î¼e˜û­=y²/ñÑôékÅd[wqúÜN+ñ,nqûWŸ½ñî}:J7 øýþ X$ø¿~nr¥È6# H剋÷Ÿ½õ1¯’mí:nãɽMeÏ+úíÂí6—~ KÊ­"›ÎÞpt~kÉöˆ%¿Ú_Ú}ãõ{ÛÅ·oMÕ¯o9¿üugç÷>Û;Ô ;$æØøžërÇÝ€/¸R+#ᤤTTÚÞʩר­uÆWh[.Š\ñ?ë».…Çñ©æ37Z2Ⱥ&È/;c¸¤ÅFÈK^9eÖ™{$¶ãôµÇNÌ÷,1ÄR[á7µÐœ)w¾¿N7ÖÕ²¼‘¿Y‰næà€—âèì>tÛ‰7W2 @åêIk¨<¦Ýñ‰ñC†W– S@àÍkW<<½ë«üûãktœWùëÿÒ×léš³4t§Üûfôº7ø§&ö;çqìâFÉÁà‰Ãzò’^í•Lï¹mJ—%ûî­6¹õˤƒçwÖçOØy|ƒNéÚQc¿[;þÉ&|NjAkîæÃž¶&•Ù1ÛgOðdkÇú¥Èrõ§Þ!·ôvú;ÐÅ8/éí«JvF¬^5õÚレԇû:Œîn+™!bõÊIç®ïõ·,+œšèWßr Ó÷ÂÁ±~3†OìæÁ rgÎù;I8xy^çCå3Äóå½ É„׺ÉOX£Ð¶\ôvÍÊi_Þêʼn»¶¢ë´ãûFŒK°\0þåêøP|6/ÕȬ$ó££ÿStîþa|¤YcJ„ŸžëNö|?h´«e¹)¥I“¯¢Â÷ÏþºYÌí5È´TIgv^˜•“ñª)EŸ™ÖPy‚äç嚘*TÞÄÄ4%å#‘¤ nÞÛëÄ)l¡ÃÚïÓ;--=×QyR`AeÌ’»™ ž„ötÄçôZsúøQÛ»3¶‹¥ÐÐcϲoñkÆ÷ëW®üëËsqƒ¼ðÈwÍJ[®Ä*ï±t¾Gµ‰œ­'†¹ØMØÚ±…ܤç§ÝûÖWX3Ž©·¢dœ€=£ÄQ¶e×9ëíwoÞ9x;^œiÐocýñi‚i¤De–[ܹ6Ð{â¨KŽé Ù»R<£&‰f·¹{çÆ73öãóÊ_[qÇrø1ZÝéîÚÖ°‹,ü6Ì‹ƒ-8Øhÿ~,»r¥¥¶WG¯ ËÙònKG|FS‹õw›÷É/Hz¾Ú:äÆºº¥,WFöÓ±FÆâÖFrä`ƒ<ÍÐÍßÿsÍd 4“VyúªjGIùdåéûÿ«4Iô7–µ-æôalYþ"o_G#‹å^¢è Ûê‡um¿:”Ç1Å!0ío+ÙNbàSñ~cU­ÚŽÚ"^šd9ïùéŸVïù¡œ'ÀV‰”OL)ÀÍÿ—‡ óœå§u–Ãt€tÙ;À(/4ž@ÀUžÓ×R˧?{Ø¡ûŸß—»k§öé³uð‚þ+ªö>$óVG®ÿÃKÛ.ˆ(u5dA%¦ó…JO¼ð‘&p´$« ãoÄù ;Aö| Mpu Y® Cïmÿîñ”çœZ=ûÒÅ'ÈOƒ˜#Ö¬×Ö+½”îÚ–ÖPy‘ÄfeefXYÛ(L Ù… ò}lÂ×ü.â¥Ú›ÖTxÑ[~™p*¶(Wå÷ΩR¸×Î"o¢@2kâ‡Àˆ ¯Ïð…ž+Ž<;ÄÑ×*OÝd×ñtCå()°>"žHá2‘*w7£Øò’÷wÓDIMªšÕÂr[ã [ÿU8;n9ª?|‡ÑÛÕõ2¢àÑø§ià›’žoÓ]ÝTËéDHPT§y°H„À´Zÿ“.ø´Í.›þ>{ѾÏ÷çèÑP£ ðÅÒ*O¦’]ž…=Q¦òÏ·÷ë d7¢¢ÒÅ7Ó¿ÿëÚ5¢ âmK¢*'¹3ÈæbFVÁI¼½2º@PÝ L!TX]§é¬$è—ÃK–Øã,¿ìÅóRþ2—OÚRxÅ·SyÂG3û3ÅmDù/Â¥»dK‘…f8Œ oÛ[¼Ö£¡IÜSÿyM˜â$Y¾õ ‡ÝÃI.A–#üì)Ã7û/¹8:rúÔá›cﯩV&ˆ²eŒí÷+î’ÓÞ¸/º©¢mÍtQmæ`tû©ìŠðBeî¹JQõ7¢ì›’¥ ®n¦åÝLwî<#¬®nQCEeçr«Lz*hu!kyî`1mþN»í*f|Q´†ÊS)GG—K—.< ½×5¨‡ÜÞ¡÷ŠŠŠ½¼¼ËËËd·ç¾X‘N0[×­½6.s®¿tùù”+ìG÷6ýaÍï%wB´ ¥'–Ì’ž†›ãä•ÐÌ~ú4˜l`ອ§éêÑóýNülO/>°`2Ýrô<3¦ŠfSttIðî'é!]-*3žÍ]‰i‹¢Rj»o“hv‡F;Ì1ÑíðÆ@'vÞ‡7/+|¦ô–K>®XÎ|Zwû76þ–)üß2w¹$ºR˯.þNdì‚öDÁùãNŽŽ>=¥ºÓ·çâà\×àÿ¡üÛc\M•ØÖ,I!3ÜÖu4ÞñǾ«çí1˜Ö¯…›{yÿ’TÔäØ …‰»l^Zá:{oÊÏs­p#£¢¤{uìœIOBfîË¿òïQKZ“Öi—'Ðô~ýܼu-éýûnÝ{˜[à ²éi©îß-+/Ÿ4ùn½Îò——ß1òÛN¯{ë=û;›Á[~#LØÝqëŸýÇÿàépRŸe:zéAƒ ÕÀ½kÌǬñq]Ó=²RîN8y#sÁ¼™ƒ‹ø4Ï®C/ÜÙ¢zO "ÕúæÞy“g÷8MÖÕe9Ì>4îÅø K‘=jàîÛëÖ.Ø2}HZßÈÚuÂæ“õsöþùhÑùŸÛÏ¥»,?:ŒM¯ŸF¡åù/wLû;ïè›MxçrªÍé3s<†»5øm_q4ÖðïÙÁÿê‡ø2) ÏH¡mÍq‘,Sÿ¾”Þ??HýYœ!Íö×B­Ù¾bT¶dAÛjÄõ°Òô0Ådù¾¿—ï“ÏGv†Rݱ ?OºjÔîLzÍlÆŽ#CžŽ ‘Na) ^'-¨Y†ˆZSÖýoÊ:ež¨6~ç_÷w*7I™å†íædÕÎ8lÜ)$7«Ö<*Œ©tÛ¯´ÇªBÛTqÆÅ¤tÉ‚ßö'ñ5‰TK©ë°“Úúç­­âe^Ñí_Dh=*Aù7%—\ÝXËåð|e¤â)XG„%Œ¨»eéÓ„¥Jvá´»š3FaN@ÛÓz£ÇˆD"A¼ÛµóëÐ&âí¯Š‚ÊÊ …¯¼² Ùʲ’e€„¢Â„[!/Ö1Û¦K_qüñП7Kn^žàùn =µ‡Æ 5iÝ1)QTÀç×õI!@ÊE€»k1ÍdÖ¾K¤¶î^8~VZ.JÖõí>ìü¾Ÿ>|~Ôx$H5E®=¡¥ˆÉÌþÙªŽkðýŠ@@T4 ò É•M¨<h2@å@“*¾tİñ(òéy Ô†Éd2•Úbs)•_:UUUÅÅEÙY™åeeŸN­ÎÀ0¬¥¥Å113·0‰Zæ’T|ÑøüòÒ²ô´/C6‘Ø´‘–ÔW˜Ÿ­§¯¯««ËWíÒ†*¾hx|~ffš§§‹m„ "¡°Ñs¨Ø5ŒmÌab|\L`× ¯H忪V9à+AÅh¬Ö———ë°0…W8æ•æòåee0Ü2£•¨‡ÊWUUäg¤§a_6„P0 cj3ÍÍ,-¬­>ÙÕz˜H åG®ÕT°“mA¡S•ðùe%%“?Ø;:ééé·µ9 À¢ò⢢¤¤=–V¯Uhš@ _G ßâ¨ÊóøüÔ”NÎ.z,I ªÀ¡Ó©tZtdd÷^½Ui€VEã±|ÄM»¨x¨s”HÄ…( &B¡°¬¬ ‚ ---lcóíWÔ@4Q)++ÕÖÑhººze¥%*5@£„†cyPPUY…©“¡…eˆ©9AòHO ¨ªªÂ´ACCv (+-50hhff C=t´Å &Ç-R»+++±à]WWW’¡Iþd2‰BÑÅV ‰D" !µHÇ5B=T|å Ê[l¸\.¶KWO“r¾@IÀÃy<úŠaú®§¯/ÉùJzêÔT¨ŠŸ¾ —k``  Q!XÒt#n—Q(TF&“Ž0 áGD¢f>ÈMºw#Ï®KG+fs2‘pïúó oŸQŠÊõ@¡0—–•±X,|RiÁøâ’b¡ÑÒb0Èd¾€_^VŽ%`0ºººØUB ~£ª~,Ÿz3¢\ÜŒAÓÈÜÞÍÉú”1-xCðYï-€ÊuUËc<™DÆãw†áÒ’Rˆ± ªû[W”W`,øh´æ¥Y,˜WEÏ«ƒ—ŠŠ* ÓßF½ê±¼è Ó’=;?o'Q ò@]áñx Å£x‹Ü±?–LçAT'KxT|±Pð¼&Òµ˜x S[×$!¥$«Š€©<*J‹HNÏ©â£t]–½»©.Eî@á&E¾MÍ. °®¡™‹·».ï2Tþ!::=»´¢Š@¤p¬<<(’n?Heü›×é¹ÅUÛÊ¥ýçqL€Ê5@¬Îò/—ËÕÖÑ!Âß§ÓhBm2]üü<¾@Px3*ùW7«êÈ\¡c±|®1äаÕÜÈG‰¥zí™T¸$+1âé#íÞÝ™D¨úz!Î$ýåãå:^ºj…)Q/^<õòÆäR¬]}u´h"^YRÄëðhV€~J{ñ$½ÊÀ'À‡q_‡ Ðj>Ÿë€ÊuE BŒ¢xs ¦ò†,–ì^ …ÂápTÌŠW~ûA,Þ‰“¯‡ ºß¥—{öìbHÁcsš—eòÍøBn;vmK**‹É«²íÚÕ‰· 9¶oŸzûI2×Ý–FÒv°×–$¢Ñ\|MCÃÞÜü±ô±ù\‡ Oüq+ÃÅÏ6ó~t‹¸¢€Ê5@(Öïç. H$‚ ûäñxM{wRˆ¢oW=DÄËJˆÌÍÌã[°nªEßܹ.›R»¸Š¯Káú.ÀìrÓ± Ü„ŒÔئ¥K‚ó +Í iü⌸ĔⲠ‚ÇéL­I™kÒM`B´[!~ÆW‚€Êu‚!A$¯¹búŽ)¾2•Ç’cñ>™LÑ×׫?ÂD¤‰Ûå™L_ßÜÐçqÖZ¸:ôèMînƒ-·Ž¢üW¯c´í¼:x³¨d¢°êýã° ib¨69üé¼› Py (j—‡!¢P¬ì(Šh3™yùù4qÓ¼ü¡(š““c```llŒ }~~ž±qÝ–´:™8Smg#ZĻΖ0!éC1ÏI_~ldq>L2‚Ié•|k~Ù@„Å%BÄZ‹(âçpÔÏ‚MÄ;è£üâ"Iþ’ôy|[ü„ä kÚø[ÄI *ÔZXThld," …J¥êëëËFË…L&SKK«²²’D"ry||(cåƒçè9Ú‰E¥ó\M™Ño´Ý ´é¿ª(/“lîlD©="2X´obt<DAzl‘nbI#DH-âÚÐDÜ¢¸„2(Io¯O}“ªïiM"3bã?(T¨¨¢€‹ÜKJK¹Ü*‰, ؆좢¢¬ìl,®ÇváA4Ÿ_RZ 3ôôôªª*± ªª¸$" » ÈæVÊWoÉ+­øôØÜŽÞþŽÔ¸´¸·‰‰D¡P°X^2Q”D4$j×åë‘x‚Z¨<ÃÚÚ:¥¥%4ºò@€RRR¬­£«Ê¤€ {RÊ"‘oËýª¢F5Py ™bic˜‡]ªõ ¾žÖ4@ƒÁ”½¨°0.6ʧÇk81Vë++*Zǰ/„:5Py2…lbbF§ÑãccËÊJÁL߀‹ïÑ=¼| ÙF +8v7Ïd2±4t£ÕÌk[ª*+™ÚÚ-¥uj ò„HÄ6265·< 1à“qóùŸ Ò±»y¬î¿OŒ·µsLô¡ÙT”—HJÄ®Ÿ¼ÅQ5Py <1mmhm°»yÇ ä“âËËË5ûn߸¸º{° [ª‘JmT|Hîæ Y†&ÝL¿†»yoqT¨<PÀÝ|“*š PyÐd€Ê€&T4 ò É•M¨<h2@å@c)--*KèÝ;@å@cùfà` ò É•M¦é*ˆðùÑ _ÃÄZD$ÂD"¸"ZPË‚ù#¿ )¬ñ…î"‰6Ò&6yªÚ&*—@ ÈHOŽŠ,**jbÉj ú:ºÎ..–ÖÖd2¹­Í|E€Z¦L×?Ó² bß§g”µŽ…mvå3Ò×r³7¯4bÙ°›(×M9 ‹/òrs_¿~Õ½{w+;"‘Ø´²Õ¬¦¥$'=|ð€H"ZZZÁ}²€/PË”QX.Ê/(y“<¦¯¯ƒ¥1¦ƒ­fgë#c“³.Ü{G!“tèz,fS~MQyì2âíÛ={ÙØÚ5ápõ‹,ì‰DrØ“ÇÆÆÆt†V[[ø*µLùåHD|ÊwýÚ9ZsZͶ‚L&y:Z`øÚã]ÖSyŠZZY7åXõÄÜÒ²øzqÐÛÚÀרeJˆÐ¬Âr; £V2ë ÀÁÊ8ër8vâM;¼‰ =‚hö-¤X¬!!è×ð ðÅj™B°ýX2Ín¨‘‹èÅžiâáÍê7¢ºê={ö4ì±H$R1=‰DêÜ)°ƒǦšh ¶PðŒŠ´Rï@Lâúq™LQ1½P(ÜýÛN ò@Ã`J‘—Ÿ£p¯±‘‰›‹Ôä.x_1gþ‹ØóW˜8€Æÿ“\PúupÜ8³w[›ÖhZIå±(“ø”ô0„ýƒaìw‰?j§’|b%° 1¡oÛ5“ø¨˜w ¥W÷~õ•Û…%pwõBß(BÑ®³O×Ïè©E£ŠPHˆ`JO(­n:z¨ü'€PrrÏo Jsqqk5“5ñØH2™ìâäZQQ. äH$W'÷˜ ôª’˜–okf@„«[üuµhÞ¦òˆ'$ðDPOo‹¶5¯É4]åQ1:ûÙÚ9ˆƒy<¯Žé ’‚4–—æ ÚÝ_9Êj¶16>’Dª–ø¤Cÿ‹Z¼¤Î+²ä¾u‹íÌ™®ŽîqñQѱ®Î%ôMП†¹û2iÍÑ»LG«³F°ø]€øBT ¢{—/ÀKE©ucyú”ø‰XžFÃâŽ,t³=ëú’'¦;·`ž@‚ ML\ªK$þÃá#Ö® ²±¡À°H(”üUðxÑk×a)ífÍrÆ"ú¸¨wQo=ݽ¿¡ÿÒª$æ¥ÿ†ß|žXÅ«n%ÆâOTÜJ#D"û„°Ïâu}϶uÇf {{'–ÄòÕ}Mü8œÇ/“J/–gÝŒ—rN¥Üí#Ý:ÂaTtp^ܬÖ1øˆ&‘ˆ.Nn¸Ä9ú~õ? !"Š ’H”J$:‰qk×a èÝÞ¾{óêÍ‹ö¾þ²YU¤?Y³bÓ¿wž¥TêrlƒŽ^¾z©­­N­õ©äò—ø¯’' ßsÑ®%11ÂDAqqç‹e\ $p³¶–;¶,ù~ÈÒMC_æ–#¦^£§-Ú4w°¤¹GN¬Î‡ô·;éÐãg“¼Y­vjRZ©'¥I㌄è÷3¸¼ü‚|l»!ËЊ©åÕ£–E%V?Z½ •Ù"þ×°5‡5ÊTà ¡þO7;'³W÷~˜Ä';ö~ÕÏÞÚÚX5Æâw,%"A¼DÆ‚*!qÍ:‘±™9ÝÓÝëÂÅ¿ÛùøIó©H¿ÔÎuŒ°ã„ Gÿõ°2(ÉL¸~úß-ù£Ëg>%ÅçÕèlšCznéÜW]ì̆ôp¦’ñWÚÿ°_ºwÁ®Ë|$¨·ŸÃ² =òKÊe ­È¸èë1–Ø{öþó›í HQÏ/]8ú¿7G^G¨#VèŸ {N;’s<<ü[½Ö">×Ê-6¸Ì—æå=›>ÃÈΡûÆõ:úØo²¸ ?zÙŠK;v÷8q\‡mØ4? Håá™;N]K)Øx…ì;6Þ×P.ÍOVú¯Vì³ÿgû£ÄœJ’Ùüg—±mZ¬* …‚wóƒý 15‰;¤¡R™Çt“zLèQÔF(Œ Yi2i‚6S‡/¨ó„ö—Ó‹¬g¥ÜÜI“ÄŸ.n{[\-ÆüºhÖ‰ËoRQ†Q·¡3~?°Ü„'ÂjÐÛux_Ú|>,†Gµ˜·óßUÃñ„"GVÍÝuêꇜ c[É;ϯýÆ\•*Ù†•Ó©d&ƒŠy» ¤s*,ÓÞµ«ÿÌ›9éç·“ÅÛœ\½=‰æ]&ÿ²lÀb{½šTȱ9?ž©:ý:l¨Nœ$ð×¹³­Ýbƒ}„MŸé5q²K§Îe‘‘¹®N˜îëÄÆ-Zóèá½ñ†Ý¾U}!l$WguZáwüâ7cÊóó›ÆuëØ.'Î…!‚¯—.žúö¸7ûã½îÚÛ§dŒ0ÃÔŒêHEI(ŠK¼¸¹]ÒV#Uy $qgo¡ß$QyAŻͱEc/¥Õ}‡”eƒ!#(aÿzÚÇÞ´2+rãäñ=ƒ»Eì ”$x½táœë÷vûšÆ\\à;.èûÉæâ¿Ó:.¼f°ïÔ 7Nnâ«ðJ<¥ŠU²MøãVÄ©›£ú2ô÷™å!&µ„B‚È0L"P±"D%â˖Ƙî'¦å™±õ¤"/¬ŒÛ[8òá"²Ìc㎫‡î<¶>jñ ±¯Á¾)þK/“ο}ÔÏ’Ù')æÇùÁ­Ý“2úî]¶¥¥³·ãÆ´ü¼§ƒ¿Á~coß·³±uómö£ÇooÝðîû²2 —T_<”“ˆ›<áD܉Œç}Xx“âðùGfýj°øqÖÕ>òŸL»þΛ-X÷Þæ¸mÍÚˆûÀ»W5C¬æ¸Ò‹Õ‘5WL>ŸW§Deû¯ƒtË«¥#Wf±de™Tˆ‘mÙôíÞæñƒŒð)°$⬰ïÏt ¥4[Ï.윻|¾OcÏh”Õ2LËE¾ ä«»Í@PÌË„óâO‚x„K¡HȤ?~¾?\(àñù „É ;9{ÅžGï’ʹxøO¤šJk»‹¾4K )¹¼²Dô'Aç;hÉVX«d‹{Fx<&Þˆxà3¾!‰`ì%˜ª£$¥“!þKPìj hTrvA™GWb¶Ä{"Ü{uŸp'c :¶“MÓ, ÞÛíä|J›öljNùÆ?}… ü‚B¦¾~¹¯×“Aß 6JO߆á./^ù÷ïÁÞžÚ(7/OÚÙ«~þd-kéj‘.™.ù]ãN_X¡ÔùÉV?þ¨éZ‹â!†Pš­ˆ+RX ð… °–aê† ¸P$Y†dzGJU^ÑK¶KºW inTÝ^0´úFré–|D4pž×ª“¯Ï÷0Ñ×*OYgîsJZƒð(WÆ$ñëÿâ¢åzF¨V%[Ö3*²yF÷ã×#Î^Ü«“%‹ñ1·¢‚'  bq‡„0Aü‡bŸ"ìA$²®ýÀ…ð^íl$…н·âÚûÒцuÚ{ÏåT±z9KÒÐÙ½ïœëÜ¥ã÷Óha‡g´á°sÍi±iâ÷„ý,`˜«ß‹ç# ÅWHe*ÖÛˆV÷¼Di¬txóúç9{ë 9]“F²–rö:ÍI²|í~¶QÍW|‘(¨e|¾“oL¶±ªR%Pa¸NjIkNŒâm4„…òXè+àת<‰á¾ÐQïȬ]¼ç›d#Í”JýF WølÎ&¿?È}öŒ ÷²¢¬I(Je Á›vFnðªí&¨z•l*ÍÊaÒ7žŽúëN<ìÐÎÙœý6¹¨§—1‰H ÁYüI"B$˜@„ •\arVÑÙÿÞiÑHúVË‘î´ÄQïÐÜ_ùᛤMó¹á›.T®]î*µŒi;8ôáÎ]fÑhöLl“€³¥Ucy –aY~žNa‘kNá£ï'w;~ “ôÐñãÜÆŽ!aq¾€gÄ6†Jcùz=)«7iöG'¸L5ÂçèöÞ^–ÜüÔ{Wþ4œ±m„!½æU‰”|\²ú´ÅŒöoίÛ!<ºÂ¨<à‹Ea-`j-`Áýæ ×n°àñ¨µéëTLâSi4³e‹!˜ÈãódcyŒà »ÿj÷ƒïв5sǺYè•d½¿õ×Ñ‹U‹_Ô%Á;¦­ ²¨L:sQÀ¨åë!®}v‡Ç8NòÛ±-]œò’^…W¶›ÞG¥*Ù²žiÝ̳hÿ¢bëÎ>JX¼óŸúÉXºtS–ö˜ž®]¼¬2¢ôÓ¿¿þá;Å,ºyÞh[RÌ“K!ËvzŒ;´ÀV§& ~Ž:N£þWÕ¹×O½i´ÿ¶ŽjŽÁM¦µcyeMaúý¾®nD*åÒ…¿°Û?Ÿñã½:u†<Îýý˜Õ²Åå±¼¢½ê-~½÷+gñîcf•j±Íüºô]G'ʺ[’Ú{Íñ¿VxÏ¡»†<œM*ø‚QPËŒŒ8/_?÷öô5;V$BR7l´¨âÖîU"ñìÅ G§Óé÷Cï:;×¹se˜{yqýš«¦Ì,âê[wýfÄñu¾0•ößùgþAÒÓ5tœstBø˜d¬5©úu´÷ÞúÕó6NéŸV(0¶q¸í4¶QÅ*Ù‚ži,–ƺǖ ZyäÁå{/‡÷l‡myðÛÄÊ“]e˜ yöLççU;~üöx^±ó±öäš™ý¥—C©Xé{NxxÛ©ÿŒ4Ú•5›ishÕql0<ûô¾·}§ih¨i·nnƒ‡xX[“H$´°ºq+ýÞ½ >ä€Á¢šÆD¹üG„'¨»1ð·¥[ êwË÷`rF¿K –¦A Dší¯çþ*“ ±§´ k™§›×ë×áOŸ?mïëgôíh‘H”¶i‹·Vè±b‰g-˜g0r$•J¿ÿ.“ÁìÙ½·¼T™l>°¹^¡Ž£V=µJºeBîÉÛbÓ 2µærJvõ*̘ºþÈÔõu2Q©J6•æ·ìKТ‘wÌîyàÒë£çC xkËVúò¦¤UYÙ±Lë §‚vÊ™%þ¿œX¶Ÿš˜;•ÐF‚ÓÚ-6òÿóäóï&X|LfwlǬ¬À²)+ÊÏ?þ{Ÿ×óò%Ùeó××7h Û¢¢B•l&´À­"Ðj(«e>>~ÏÂÞ<}ìïço8z¤%¯Ý€Ö<ÓBñ‘X`ÖOs F R©÷Bï2µ´{÷îGР°¦ù-6ˆøì) Çv³1Ñ#¸YPP Ù+Qx¢,Å>Éd2 «ßU%%%Íj±!¨æe¯¶ËvŒ®1§Ï½;·n½ˆˆÌ/À{Ô±,.1dˆ8KDš-ËÅ~£’å¢Â‚mQýûVÕlà @ñÏÓòŽ~?}üèñÃþY#‡kˆÕT\È”{÷îjiéôïÛ_Ò£¾Õíÿ|4«" Å=Ž$H–½-µ–w-*,ÄÔSs‰´“Å`‹Ø'"Q(µ›£qÝúµÍPy•¯¥ùùùØUó$ÇÈTº±û˜q ‚]`1Gcššš6¬±lN!hP8Ð|”×2L˜<Ü<ž?}ðè~§ŽT*M<‚ "–zD¢Þ½s—F¥uéŠ%&˽O¨î4/–‡ê Ž GAD’Lçe:V'ÀP;õ077kF‹ÊO?°d¶¶ö»vo—¼­§ ˜7mmíZªé PS”Õ²Êjª,Í­#£ß9sï!/B$#`‡‰Ä+cŽ»ÅÅ%|>Ÿ!¦õOá3¡ºþ(Sm,0Ç#ô°‹¢HŒø6¨ÿ¯‚zˆvöv͉åUõ²££µ…u£²Ç¾ì@ut+Ðb(©et:S(¬ŽP©”þ˜Šóø0âž xƒ‘„‹…‚Åòt1x7MªM-JsfÃ¥5¿¬6!;;«5ž¾bî311ij)êê\ ù4P˰(“)Få¬4ª*5ÿéëW‚©‰iU»ú•W”Õð‰sÓÀn„Õî© @ݵL!„]á0ÏTá¶Ÿ÷ªu!(vÊM›æëcJJ“T‚ôôô òòÙF즮†æçëëà#1­¨eJ !fF^™…‘vÃ)5ìd9L ±)25­¿<&zxx> {âß¡£!ÛÖè+*‚ ùy¹/Ÿ{ûúR(ÔO´ –)ƒ¥{¹X]~ß¿“ƒ¥±Žfßê !5§ôzXb'³)§jnaÑ•‡‰°‰‰©»‡ÇÛ7¯KKJ¤¯ªj$Ø-¤®žž»‡»!‹E£EóaÚPË”aÀ„Ëôt|Ülî¿IÉ)*‰4Û3°‘>Ó×Í–m Ëb6¥Ñ8==½)*A‰B¶µµ533 …ÿ ÆÎ—L¡ÑÁ”R€ÖÔ²RZ’™4CcCHÃAx •¾Ìn’Äc˜˜˜4½ ‘Df4ë= à Ô2…`ÚÇÖ&bmmˆð1ùã1#>’“Ê€Æ2bØ ò ±Ði4 ò ±hkk•ÅÔ´©#@-* Š¢@å@c*š PyÐd€Ê€&sîÌéj•ÏHOk[SÐâ <Wùysfµµ%hytõôÿ©= ¦y¡òIEND®B`‚PK¯9AŠ"Ý_3ë3ë-Pictures/1000000000000315000001FC298C8D44.png‰PNG  IHDRü(«>êúIDATxœì u@J¥6#F8%Ó÷ÞEbD‘“‚†?S"‰#LQ–™˜’¶ùðÙ!A3 Ä7 ´z`ä h(Dë'®x"a'R$•Pˆ­™^>Ëêݣ߭ëI"+s¥OcŒ ± 2?åþ±z¬óñ©ß5¬q …ñO@ƒ Z?Qâ)&Àžoì9Îé9K?­s³ô OënÒcƒÃ¢"°F˜BG³áÿ;?«N3yߊðs¿¿ÈÿBàlûý5ÎH•üÓTNvä—¯¤n-y Ñú‰í$Mü8)’„E;±ó‡J*¡*:˜œl];ÓÌçȕܴ?’Sþ:â¶ùdð/›úÑ¡—Z3o_Ï“77k*1ÞÙÚŽææ·áüeàx¥D- ˆ±æïHÍ”x7q´”XPâéK&ë·«1/½CõÉcu!+S n…Ü"’Ï{ônÿùùÍhÿѾ§ÉÌ™Q‰ÁSûoÖ»—ö1§íhÓOdfW&3µœ°Q–,V)¡>Ê*ЍäéiS{€l£P@ýi”õŸ¨i;J<½ÿð™Êä&8¤i!IâÐIL÷^·éûái%‡ºùFR™Û “ƒÜ×þU¡iÒÎÖœL·ÞîÃûäWàݾ·'pì—Á¡L½A³·’ÂL2ç€tñO£F¢)½qã·•nvÄq†øðøÖ¹øÄ»÷gWÈ©kš˜÷èÓÐ4{˦r uÓXëg²‡— ¸š)d¡€Os‘CPuÕfætØ%¨V^§±¾{ÇÖIÒõ‰½ê#†ÁÚ™Ê6œ˜°“ë‘Ìß–ÙlÕÀÈóÑ‘¥‹=ÆñêŒÊÙOSÉ·ÎL³o åÓXú‰|¢çåãÜA@}"þ‰w §E3IÁ¼½`ñ¡to7vñʉÍôÚ) O%ùo^þwÿ÷„“Íí@«A\ý4uB7ño»‡Œ‡ h ĤñF¡Þ?¸tæÒ/¿Ý{–[R¥¢oa7öûÅ“-å1V%¼®¿þåÐѸÄÔg9%•FT¡— ÆÛ°ŽÄäͤÒ'7x>wó·ÿ2?`m»ÛޱÈÕNVV 5ÑXãOc<Œ¯Æ¼ÔPW$ÓY¥ ¬ã¹tz#õü4öúOS}wqÓ2\Ý·ìwtõÌ”š·Ø«˜™óNò6!˜÷C'þïÖ—ê©´âW÷bS®%.¹é\­Hîx=Cˆ]¡²4ïÅÝK‘wþr5nË,QõÇêi)T)*NON§wòøM–±‰¸â‰Wý¹nòTr®(xúçŧ¿_þ{C|ÐÇ “)Ò0šî]|÷ø×#kMÛpm3×@˧Qôµ[ )¡¨õ Þ¦¦ñ×ñ_„ÄØ ŠÆŽb*Y±ÉÅ®{G¥ÊwOV,È*ŠÜ‡¦xs+x\´jÇ´oºuP—gP9%,ñÔsqØ’ÁÝtÛ*¡OE™NÎ[{~—gºó1cªÎàK·¨Áfå§’œ¿¦ÌÝPƒf, sŠüIñÄ´ðÞ¾f”yG…/ùÿÝØ¸lÏ# çû8‹®J üÿÀOÕ=*Väÿ—°ÑgÏ£?ý×ß Õ¨n'úS…i¾pûŽ<Rýý‹omÒÙ …ÐXãO”0¢Ö7¼?¬açþ„Á¿0úWBÓ\^ Q×r>¹Ì‘4’ïhîŒ"æ P~šy|Ñ(ÅZC,QwX£Avû¹ï®m+7¡½ä_‚x›ôã‹I)OÞ}arU©‚Xú)ò/VóÅ;œ{°“äµ{8ïX¼Ça“T÷uÖ1ã½Çwêßá½×éÑšÓc2éíšêZò4P,Úùm] w£Z%²!@ ¡±ô“Ôd¼|û4íUî›wL&Á_ª¦®bbn`ÝǤédƒÆ…š§Ì{Ö‰üã_x³f+Ômò—S8þŒJäør—’M8O)Ç,5/^û òŒN?9#t˜¬QŽÖ«ÐÔêp²ÐSxr*x‹ â¿åѵÎ( ‚gùZ&-K?%\ø“TN4J>”Ýûë ù¯“^{çþMæ 4vü“OD† xgÉ󅑯à„ü† ‰FZÿ'K8Í ;<Å\[]‘Ay5{GöEèg¶çš ôNÎpB‡/£Ûî—òŽOЪî”7²›Þa[„~Ü#ge]y&³¯Ì%ˆNܶå1ün\Ghb] ¶ôž´(Z–~"¹~ç'*ÑÛ|0é½ÿnS‰ÙÓ5O€LÐ×ò†’Pßù­>#,tÔðŠò¢¼Ìÿ¥þqãܲð3¨z$GUUEYûRôòÏãËx›/ì‹~NA»|.v]3ÊŒÿôøÆÆ]¼#Uü0–„Z^\™V°{¦û o÷1}Í µÕ•å°ÊO Är¸úåž ûxQÆ t¡®<Ù2ÒT“ñ)ÿùï?­>ÏïÒî¥q]YñO<lŠ{ÕZ-K?98÷7³î²-tOiEÞ“ô{eŸ>Ö© ª¢6nÔäÞ}­ µ›ÅC UÓÒö¿Sùaç¸Ô¥WDú͉¬SD ¥à~hN2Šñš*` ¡¶‚z9®½ÿ(bÙ¬ˆê<‘áf»=fá^‘gÆG®¯Û«(Ún î;6àïÚ=2±¾AÛR' h\Üÿ!cçâ;¹¸„ÿ·wù¬½5˜=CÚJè @sÒ²ô %ŒºwéÍ_dÚ­+y”N<ýàás±þî5¥e 1hQ£Pfµôô^'Ï&ÜI~ôª  ©t4ìfm;`ð0ÎTšÞÆ#¾ÛÝxøæ³R'Ó¾£§/ø1¨fg!LÎnËéÀ÷œˆ¿ûô=SMß¼ÿÈÉs¬!¢Ó.SBÎ÷ùýâåŸO~ø*ï=Ù«º¶A×n½úô³0è[«­ÜÀóaœ»þû¿éŸÚY t˜ì>ÑFŽ3['7åøVbÏWï¤e}ÄÔuL¬íFLœáW÷jŸš{àìÍ?ÿË*Á5ȇ5ÃûûAr°x­‰F×OG¯§$Þ-9}é©}?5ñ·F¬¡¦6ºú,TQÎù`í¤ÅYìà¯_žÜ¾“H&Ì-ÌÇMÂÛŠT3ü¦šEßT<¿rõJ¿O^—2U;tíoã8khͦwàRÿø'a+ ÌçͤY²ct¶ÿn¹ýwBJ1]ÇÅaŽ‹kr\k›ÂÚ š0ˆwÑÌ™b,Ž)u±›¶ØnšÐ t«Ú8/&ÿ sX±Ç´åáÓ–óf:óYk?`¦ßØb€VLãê'J0ÊŒù<Ò+h‘†kyå·+>|wx•·FUö…@ÿÓCp¦7HùBU_ÞÞ\¿æð¸sÈœLÿЗßF¯ÐîÃïÞÛõu¡y _K™·Ó¬5!'î ðkÿáŽ÷Ö5C6…›Ñ<„ãÚ^Ë÷²:Ýêÿ¬Gx7ñ;ÀF¡š—V½û2—ÆÕOöýÔï–x'rO%Z)› çÆ? D| å1PO ÃR9MFˆ£ŸŽ±Ð¨^¨æ§LT6§z@!–~b>>vôøµgÙELVù¥ŸÎ"÷0¬½Ýth_¼KrC²¸CJ¼ž*Dvº,SƒCÐ!R\Ñ<„šN"$é½S_;½þðõиú‰íÄ ’4~\àüÝí;‰Ó\& ¬/jyC càxͧš<+V"4?ú‚aí5Úò“QàÑéºê ø{Ïï¹ùX¿µ™À@g? Ùì;²¹³o;­m‚£»0&³Š ¤Ú#JÕ„™;i€‘' ¡hôù;R3%ÞMD-%4ów„«1ÚsöŸÿM°T«xõÏÅ­½¾c­OSŒPEeyTšó³·æÔv(æ·>ý5‹ÿA )óõ#òÛv××Ū‹–2£¢üÝ+aò˜òGšœ.¾AèRf¹“>zw·V|UM§íVÔÿñ~…@üÐ ´¸õŸx©3wûNâàAö×öš±‘QKŸ•·í7hæ*Ó}®}dд+LmÓѤ”YJeêoXa¼Ùgý!¥.£ªW:¬¦çãïsîò…À„g™å ÍŽ&ÇøØ©ÁÆ̶­:P¬j2ÚeSw*sܲqQ[¿ ¨Ò5¿!/nåïr#¶.ø§BwÄŒ ¦ øÀ¿*` ¨?-N?e¼|K%„ÝGÕ¹„fÅ xO¹é:u0Üd°çÖÁžµì(òõäË9qâÔÇ”†L^?d2u2Ið* Š“&[Lé¦0`ªj×Á­zí¬ÞÎbtM}½IV 0 ˆÄ? EËÒO¤0J¼Fmñ^kþŽ‚;øDÖ±m [¸!ÝÈÓµk×É õÒú‰ZÿI(ñ¤¯¯G ¼ÿîÔ±8­öúdM7¯q ée‹v‰©?ÒÅ?Íœ +eµhYãOö£mIaDÊ#2÷.ëÙÓZû¿Ê|N©R²f³xØ¢8}éiP›nܵ3„U ÿûE< ­£sK„Y´•à³Ó²ô“¡±6%Œ¸*J 0yÇEü±=h±2^É-òy ñ°¾¨¥é'Ä–Pä‘;7wý~¶øKnJ´8§ @ ;ÁÝø€l¯dZ-N?!j~ €†G6õSÊ_?4énL¦óró¦I :wjN/û~jÍíÔj‹€V„lê§>ßôø%á÷6mT>~,––ñ@³ SúéðþSUL¦ÃØadúųWé/3†œ•ñ–7­¬¦µ÷hÑ™+÷@? 2¥ŸfÏ›v ꄚšJIIYWS#R3©·U-/ÿÌ›>püygóæö´¥°ã‡ùäÑ'dŸDEÐ5jy¼qãFs;" ¼Î·ê2ƒLé'^ÊOÞ°}”ùù ^tâÆO}&wÅ:>ÐÎÿ;)ƒ[!nù7äqâ¶¿x[ÙÚÚ&''×9%bvÊ­ÌÄ”´Í‡Ï šaP·§’ïÐ}˜kÈFW#)œhâýÑ5~ïpœÉÔŸ·Ñ¿ †‰nM)ÍÅÔåÍ+ˆ²‡cO^ýíaú»J¹v:&f=w.•ÚZË=¤W-Í%h-È”~"%Q>scê¯9wÉ´£~g]±Ö;à*ª:êJX&ë”ù)÷ÕcÏHýN°Aæç¼äµ£'ýèšê&Žó~+)žÈ¿8žuú=š£Ù(€tˆ/¡‰„Áü+xòš¤/ý}#nÒ¦2÷Éó[Ï·f$H‡ìè'j<‰Ë—¶ñqDÔXùuO*7rÓè5²´b‰§Þ¾çË\©“]BÎ ÐOì ŠZýÖ"4!¶~ªz½"äøí ¬‹ýœÐÍœA©ò<6]LW²uÛ~7Æ…Ri5?EѹdòcðŠ«Ì¢è·h'Ø‹ JŸ^ÚûkÊÓÒJ¼Nš"hpê#¡¢òѹ.Ü~ô¦\AÏ|°“ÇÒÉ–òìAVòe|'j]äå{ù_j^Ƨ½2Ž=—˜ò,÷‹fÏqî~Þ#j-É[¼zÍíJ\/jÃS–YE]+Gïƒ"{§º `"ùv]LñõŸn‚qóù§áx¤±,üRT=»´'6.éaf™¢ŽÅI –8›Èñ9ƒhå#H(‚V Ÿ®ßÏVÄ]0“+žºãkŠ“È#+ýrÀ?/_ýƒú³óåÖ|¸ÍÉGˆN<‰?[Gñùí¤<šKS!ïï@¤°ˆ:{1kN¾ßµkaí+^2é kê23mêÊä…Ó¡ ~úD‰:'2O‘ߪÓì¼N] ý\´%تÅþH­ºá{õ/¦üØ ¯þíJþô=ÿ…ÛŠ¦©%TÕ¹™>QïU¼bÏ9kåÇMs\ö'ºzf ëÓ¬âèÔ s 1¦h¿==e^l…` 󿆥3‡øÜh§‡çÝ;¿¡HÞ ;É)8Zc"Yï ßm?:ËBáÕΉ^ñûçÇN¿åAªaówÊn;ϰДÇı,À™ËnÞ»ó°i;Ïì7-OtŸê•"wíØx†@û4€„IiúIœUÅÅœ‰ã27Áÿž¯à¢:ñO™å¶b"…ŽfÃÿw~–° ä‘©ã•0™ÊYõ¥Ï{ŽSN>),ý´.í§¯„þø½h½³d†Âq¤¾¢#Öiš:VZz:y²JnþR‰pÜy`' k7pŠßÆmDS-Šˆ½…äk5x¢2†|„"ýŠ"#ÐVѡϬ¢iF*f4=Å®ha_è ²Ú*ÿ!†¬ßº¶.‘u*üÉ> ’Ot½S„~o©‰a„É|„â:ÍcÙ2ËB³z„I¤e~"wä’MÖx˜«c˜ÚˆPê–»}ï%Ð> H+ÐOâÀL õ¹Õo˜+þ©äŽþ£Ì3Þ¸±›?.ßw˜áßI/ª*Ø÷ß4ž3"ç×È U¥¯¯øLŽËœßÏ’•CþF>˜œÌ³…ÕùKþ$f2«bÿººä`FtYQÓ5ÑažÚ^ð9ú?lAž>aWÐáT4æmESÔów ìcõm´ì·ºAÚ£þ îÌ=ê!ÌÂöq°ð.ú#t¡ç™IÒ;…ûˆa*ˆ€ÈÞ 3q#Ò2?WÙLJš¼KÕè'3ñÄ >€¤Èˆ~ªÉ$˜ì£]{ô(“Átîýüßûæ,Âd¥ï—˜ï_ôoÜrÖGLûïš †jg§èýq6>ÿ¦î°B(Ü ¹E$Ÿ÷èÝþóó›Ñþ£}É߬(°ZŸurtÇüø…܆Ó {VºÂeÞ ýwç·L÷ã*YS¶.ØÁÍ­ÜýŒØkŠaÝzŒPBìÍ™_ò6¤)€§>ñãúŽÐ}ôˆW`Ä–9êaÆ!DþäºÍmÆÇtç>Úôî*A︴ã="-óC>8„¶'$XÕc ÄHLé'vÔ*]ñH5QÞÀM[¢#o^³êH:ë×ÐØÄ„Ù.OKÝfirø¸÷ºMßO+é8ÔÍ—3•`y6´»ë `%[7R¹P™Ë÷Lw_8웊Îöa½`õA$AþæÕ [¾HÊ(ðŒÎAW Ÿ^hĹÇw˜~;o@»’?öò¶£)€†¥ž7ß-vS¼~´bí…ÌNZyÖ’9󽩢E³¯©Xw1ëø„9§„Y˜¿Âø|ø«Ínw_>P/øçÒ†^Ó"x+hlÞ0`ŒÿoóÖ]Z6¼«ZEþÓÛg½Ð÷Nƒ“ùÇS?6JB…Ž–¬0Œ Ïò‹¹صg;ô!÷yjR\¬‹ÿ1‘þpñÒ!;ú‰ !×1L!uÑðYo’Ðýɦ#ú¼jJú—7ŸB`¹€•„ŸŠ_GX|D\êv 3s :ìT»ªò¨€ã£¨oÛØê&V¼¹’J{¿â·ÿà$á¸îœš}ñT映/™'Q¯ar£·Œþõëµ€=ñuo²£)€DRñÄ{õe¯àv&ßvô¤·ÓîÏJºæ£<Ý—Må|”É»žö/Yµïû t/c†cô¹˜ƒç£}XÑÁf‚{@¯Ú0Æ€Àó[ÏÇž:ëï^P)¯Ñ©«¥#»ˆ¦w‚Ø-=öçÊ H¸d‘Â2îƒÅºæqúm…²n7Û¡Ž÷ˆt†‹HñôCØ~ñ­ÀW…Œè'îýwêÙç?ÿªÓwgŒ†7ÑÞ×Úéµ)ºî7êJŸêà S3sö3ŒNSÍ‚°ow SéïêßßU`‘êPï­CÙ£6‘ãààÆdvhÍ`„ÇÚt‘ݘj¯IKÈô^§ ÞSõ©A§ÒUß2oÃðΞë™ÖÑïø$í•©¹asºØpx'6· È,šššÍí´PdM?e<{gÔ½#%›¸´ë¤„ùOOäé¹ÓWV®](Ä@+#&À¾¹]€ú?huÈ”~zõ,ïÓÇJJ<}(.É|‡cØâ53¸u6­ß3iê¸æó±áù;hbdJ?åTVV">|LûçiA~ѧòÏAþ/ª}‡v%ŸYówÆ9e½Ìo£¦¢£ß¡y½µµµ…U )©ücïêÈkß”2qüÆÔÊæ ²Îdš UТõÓÑë)‰wKN_zjßOMäf¯žåqÓKJ?–”}þü…I0Iý„cxqqÉ›½7­ßƒã˜ŠŠrú³7õ©iÈ#Éwè>Ì5d£«Qƒ>!€ae/Æž¼úÛÃôw•rítLÌzî \*µµ-þgïãøoØ«J¹Iïf2-D3I'àÈV-Ähu´\ýD‰'*ÍN¤ÐK¨Ò’OÜ´ŠŠReeeUU†a8†1™DeEEøúÇNN–ÊÉ1Þf¿f‡%e˜Ÿó’׎žô£kª[=:@<€@æ_Á“×$}éïùãp“6•¹OîœßZƒ¿°\ñ$µt%Í ¤£åê'JUTTÊËɱD“‰ã8°ʊ*nå‰3‡1§3…Úµú­EhØÉcédKyŒUwˆˆ‰äÛu0Å׺ ÆÊÇqÄ3TÃ;fC¥w¢ÖE^¾—ÿ¥fhJ:aAUÏ.í‰Kz˜Y¦¨c1dÒ‚%Î&r|¾arêº[¶-L{žûë`=Á7|¡ .~óº ŒB@“Ñrõ?×ïg×ÉqìUkÛ»”;Ï©ÄçŠOŠJФtÂ0–x’W¯ªªz_–Çd8Ž‘š*r˺žˆÏy"…EÔÙ‹Ysòý®] k_ñòØI]Sç™iS¼oÌ>s}·±*ƒÓ(mÊò_çÅý¥•wiêÄIŽ©ñÖTþü2§Ã§üµ•YõÒ¦®L^xñ×1 â§OÔs@»E‡~Þ‚ž‡ ž¹Õ/Õ—ÌùgÒªÔÅtM@VÙIþXÀÑEUçfúD½WñŠ=笕7Í=rÙŸèê™)5h ßm?:ËBáÕΉ^ñûçÇN¿åAðTqtjй ˜ S´ßžž2/¶Bj·«.»yïÎæí<³ß´<Ñ}V¨WŠÜµcãÜ zëOÅX_3ù`NÚhý©KV·ÆLÙwÆ/bá­%â4—ô¡‰H(”–«Ÿìû©%Þ-áÞØLžÖQKuèdØ6ç5gVîmv¡††ZYi9CŽaXÉç*Ÿ ˜ÅïK ò‹”Uå…Ùá„@éxF%L¦rV=Aéóƞ㔓WŒ¥ŸÖd¡ÈÉÆª< ²Q”“¡B†Î‘(С TþÁÙ½µ«ë¬ËF{Çé“uôÇïEëù{gIJÙTNv±ôÓº¤3ÚªØö5t6SDbë¤×—îGjXl¬@¦ßß~°á}×ð mD¶jú#t¡ç™ñ%°æœ3ö‘:¦F?Y°¦Bq\ød}5”ª~›÷Q™ögÆUö1ÄÁ!¤&ïB5¨3Ë1Î/cV'XA„˜Í%}hâ?œ@RZ®~Bl EmŒ%Î.o*jŠÅÅÙ ® ¨Pñ™f?8ýõ«¢Â¢OŸ¿´QUÕÑÑéݳ×û¢#&ØÄî¼`feDcŠ¡ÚÙ)zœÏ¿©;¬ ·BnÉç=z·ÿüüf´ÿh_òڨƥŸpê¢R,Ü -ŒÏ:9ºcÞe/¤½A åÀê:ùñâ.๾ò¾öæ'‡ù×½D×fC5Rg©N  Â|ðß®4M±fªåi÷^"3sÑͪ1ojñøBOk'”µùúroUÑmš‰%6èÎ}´é%:ܵnÑp„®#ôGéðúÆï§DÍx¿€´hý$í:¨w2ÔÈy]D*¤G)YÊÊzºúÔ˜ Æþ¸)~ÿáUzÖ{ãºiëh‰²gd»<-u›¥ÉáãÞë6}?<­¤ãP7ßHªØòÌ®a‹½GåVàœøqËs[-žg¿¶H³÷ämçÿ~µ<ÚÇÝuP°’­Û„\Äy\=ÎoèáñÝ @[·&s8Mh¢FH˜L¾ »Шœ¿]1Î[Ç g=òêª}†²Ä“_Äî1lQO2ám©ö)dQ¯:Í1LÕu¦ÚŠ#™¨¨÷̺ ýeÜ€hlÞ0`ŒÿoóÖ]Z6¼«ZEþÓÛg½E‹Ý¯­X{!ó„“VÞ…µ¬Êó½ëÓ×¢ÙŠWT¬»˜u|B‡œSõ1µ`…a\x–_Ìýî=Û¡¹ÏS“âb]ü5js &óާ~"l”${Bá-Ò!;ú‰Ä̪saþûÓ‡~.))mÓF…-žXÚ‰ ˆ¼·Y¹•••M´ ï-ÌïÝmøˆ¸ÔìfætØ%¨vU…AËöÅ/ãÍQæ=ÌW¸AÊ£Žâ|6/L®S‡·rMZuìúŸÆ®'>¿ý}Ù¹:æC5ÂFhìÐ* _Á|_‘”fâ¿ûÕ´k½à78Ö¡‹ºëÞ¾åŠ'Œ1 ðüÖó±§Îú»„TÊktêjiC݆«àv&ßvô¤·ÓîÏJºæ£<Ý—M­×§™¼ëiÿ’µQû¾Ÿ!zi(úø'Ü!6‹=t!ÌãôÛ eÝn¶C'îßéš/°[zìÏ•º$ O 52¥ŸHëyïî“gÿf´k¯!'Ç>Á&éêÃì¬Ü‚‚"EE‹žFd…æöQblmm™L¼­é°åFŠSŸ&j„ çI'ˆ†‰œš[òù%Ð0QÊç;=ÖÝÜSjh ±•‘Ÿ~k?¥+èéÒ¡eK(Õ^“–ÿøò1•þ®þý]4©£ xOiŠ0Lu¨÷Ö¡ì1,‚Èqppc2»ˆ4.ÄÞÙÁsƒ'}5ai1›×9UŸtpª@×hZº~’bÜÞýºëêwxùìMvfþ¾ðsî=RSWîfi`nÝE¿³Ð°ñ–Œ¤k>ÑD`LR3•!Ö7ëãshB¾,¿ò§\Ѻj2˜ËÓîgØ aMá©DV¡/ÏÑCrµ'æ¸CSQzøDɈ¹Ö£ |ÍÁWY‹Œô[ð^S2/öΚ©ß*—¾¸º‚u>4¸¹=j~~úé§ævZ(-]?I‡¶n{ò_s{ÑlÐDLCè$NìyY¾´ó—Ç?­äm%uüÐÄà=Í— ¬+Wž,®RÐPéÛר†ïÙM):úA£¿ /ãò³ý,¿W%Ÿe½5¶ÿ^.m±÷ß51!&·/ KÎü¢¦×}˜ë¼ù®"£$eŸ™3g6· ÐB‘Mýô•C5â¾^NØé„âQÝ éâ'€¦ÃpÃ^† ëÆ…#}G³Àê4¯„ª#§:OèÅWQ`ÞH^¶B:õØ8ÖRªEQQQs»-YÖO×ïgÓ/¹)/Ÿfÿÿª° TY½ª[¯ö}˜«©µÜ_íB£FºNˆš.° ÄO€˜È²~j@J?–å¼~ÿ6£üs9úøŽ‘Ÿþ¾­fFï¾ÍíÍè'Ñdfdç¼.MºATÕlAõû5ÐOð•úIûÂ.çà%%eJrÉœ6U=ÆüXØÜžÐL€~Á|¿ ó/*2ÔkÄ +«ÁâIð•úI;B÷iY˦p” FhtPêÚVñ€æöjJ¢êÙ¥=±qI3Ëu,†LZ°ÄÙ„Z]ŒwvT{'MnAT>:·óÀ…ÛÞ”+è™vòX:ÙR^HóÆ4Ð`Ȭ~:z=%ñnÉéKOíû©‰³ý0?AlÚÙQ»ýHû‚¾…×åQùGt6oclj   s›­vjª‹­­­¤‹^òRÏæ Ôùråß² y‘E^ϪËnÞ»ó°i;Ïì7-OtŸê•"wíØøš`Pe·‡gXhÊcsªÎÍô‰z¯â{ÎY+?nš{ä²?ÑÕ3Sähš@«@6õ%ž¨4;‘"©„b‹§:zÚC‡Ùä)))[ØW=Jd g+ß}]Þ` ÙÔO”x¢ö~ñN$Oï&rKÅÙ&4x—žÎ !Š K³2³»[vyüÛ+R?aB7» öF‹Yò©f‰LœZ2|õÁ_3ä-'ÅL|¶Òÿ௯qó)›øÚ²íT=ˆ^rüvÖÅ~NèfW#Vª!¢t_ªôìÊ  •ö @+†WQñSarêº[¶-L{žûë`=Á7|¡ kX‰f šô‘´ è%ÔUö1ÄÁ!¤&ïB5úÉŒï#‘7'}4çœY²d_>+÷ë¬,‘çЌȦ~¢çúýlòH³´f`À£.vƒûä©©«½JÏÔÑk¯o¨»jg7áâ‰$òZ˜Ê— á¹ÿúf¹×Ow¾´#æÆ&ôdÓÐY;}SYŸ /fÍÉ÷»v-¬}ÅËcC&tMCj&Þù;þ Tþü2'}T\˲ƒÞúS1ÖWÇL>˜“öZê’Õ­1Söñ‹Xx‹µ†¬3P_4jBqmOH°’jŸÄáäG.Bÿ!Ä }Dõ&µŸÐrMýdßO-ñn‰Gp"÷Tüù» €0ùbs»AVùo Û¶m›þìu—îz&¦Æòò¢Æ÷Ç üò E9™ª‘LWàøÀ¨ñƬ´Å „†P¿ÀV=AéóÆžãÔ%ŸŽ9uš «ppvï€êÈQöðbìÉ«¿=LW)×NÇĬçÎÀ¥¢: ›øE< ßOX7PƒœÉ·™^ËJO˜‘]Fˆ¥Ÿ¤˜¸,Xažåsÿ°kÏvèCîóÔ¤¸Xÿcb6_ì¦xýhÅÚ ™'œ´ò.¬%s4æ{7¦¿ÐDȦ~b«%N”Dâ)xm¸\±Ù¨IV7Od vÖ}“•m`¬­o ',à‰—˜(ä!@>!5Î_Þ4ŽWR© ò#?9ÙZ¸Yat„7!˜O^“ô¥¿oäÃMÚTæ>¹s~«HÿÖA03dÆÿó!½˜©ÐVŶ¯¡³™"’D' ³ÐzéÌÚP•J³·$pG•#Å Ô×ÍüîƒÅºæqúm…²n7Û¡Ž÷ˆoYÁíL0¾íèIo§ÝŸ•tÍGyº/›*›ß;À׆̾ŽIÍÔQ[²ýï6îÀ »œb•œôšÁ`$œHíÚÙ¨‹¡²²8Sò‡ö¢¹)’ûn…Ü"’Ï{ônÿùùÍhÿѾ§ÉÌ®Lfj9a£Œ «@Oñê5·+q½¨ cLYu­½REbÞKÌTèÐkì‚@¯!ªÄ•±£¶AVGnîÐÅ0‚HpÊDž·nÍü± óÁ»Ò4=Æš¹k2ª>–§Ý{‰ÌÌE7kP - œGá|b¨ž3P2}Ô)F;;x®sð§!†©ôwõïï*q¿Ð‘Yý$)ÑÇ´”úZOÑM½Éc”—Nœg¦£«%žxBèÈ.4;¥ú³™`н¸¦ÉáãÞë6}?<­¤ãP7ßH*s»[o÷á}ò+ðäädèÙ™L~‡ 5&ŠDßK~¸Ç°E=É„·¥btÚ§E½Ä´ ÃÔsJ¶Òú‰£Ô¨ÏÎÉI¯åäEïJœÜMTU•TTTÄl~l;rIæÈ'¢, ¡~Tšw!ÁiÌÌ%è°KP-kº>±W¹·§ª@¿>ÂŸì£ ù$ú^â É†Ü¢Ï?F ÙËwCÎWKƒv•Ý\r}K™9Ï¥éhtÈç>˜o…ÒL¼ów¿šv ²ühA†©ç ” â ¤ô‡œWe)è5ŽãFï{ÒÕÑÓVSSݬ—ԚЧ>öû,=ËÖxôGèBÏ2ã+y/±e­¿7ZŽ©,_­peÓ—ËKÓu^á8“9ÜëkúêmØ’Ï/†‰z¾Ó“cðLWQCSˆ­´Ä´ÐB Ÿ$'-Ñ €8€~â@Ì‚·t,J ŒŒ{ö²b0¢Û!õnB:&KlÐûhÓKt¸kÝ"‘÷“Y=kŠFP™Ã¢ºošûìåü}8‘¯‘4+ß–_ùS®Îè]5Ìåi÷3l†°$± AdUúÕ7á×yšx‡¦„YÄô‹¯&V¥i\äêáÒܾ4›7 ãÿÛ¼u×£– ïªV‘ÿôö™pGïHŒ{‰Îežú–S¤ðÝ"N®þ¶IÌqçpÖR„6«á5ÓÌà=Í— ¬+Wž,®RÐPéÛר†ïÙM):úAyž0 €˜Àw! -‹ü¼4-ÏE² žH0Æ€Àó[ÏÇž:ëï^P)¯Ñ©«¥#»Hä½ÄåQî¢S®½µ“OÐ\ŽALiÁ†¶çÖ–0™ÝÖ*5ùãjƒa¸a/Ã…|qáúŽfÕi^ Å/§„YÄô q”Ó˧ٿſ*,(UV¯êÖ«}ŸæjjmšÀ7éÀT{MZBþãË~/1…ÐpÛ!]AFÔ`òøêý$¥Ër^¿›Qþ¹}|ÇÈOßV3£w_‹æö«‰`–¿:ã~‰ÉT˜ªÑܾ@óúI4™Ù9¯K“.dU5Aå¿_ûZôA|rtòÄÔ»ÿaóâ0ø ŸD±/ìRq^RR¦$§ñ‘ñÌiSÕaÌ…ÍíYC#læÔàoàô“æûMœQ‘¡^#žH\YMì%Æ-@?‰`Gè>-kùÂ4Žr"ÁJ]ûÈ×Ǭ­­-ýâRÔ iYýtôzJâÝ’Ó—žÚ÷S›åØG AlÚÙQ»ýHû‚¾…×åQùGt6oclj   s›­vjjC¬ƒÐ€¦ uÂÝÓšÉD †=í'{-cX¿;@Ãfë…¼0;Ò!›ú‰OTšH‘TB±ÅÓ=í¡Ãì ò‹”””-ì«%238º³œœàëFì>Š|RIJš€V ùO0˲n,˜¾}N†õ­0A?]Z€ÍV H(ÙÔO”xŠ °'Á‰äiâÝDn)•OOhð.=AC–(((fefw·ìòø·W¤~„þT%öF‹«5­­-ùWI¯Ï´õQ>}ØMÊolðØt1]ÉÖm;·MùÏ»Öìÿûå;†^?gÏ€åc;ñ›J?â»"&)SÑjrð¿o0®ý^Îáâ^hÍ`¸Š¾ÃîŠR×#‹x†‘(Xzˆ¨zviOl\ÒÃÌ2E‹!“,q6¡ÙkH<›•Îí) ¥½ (»í8<ÃB“½å_Õe7ïÝyØ´gö›–'ºÏ õJ‘»vl¼ÄYÖ²yn¦OÔ{¯ØsÎZùqÓÜ#—ý‰®ž™ÂúجJ˜77,9ÄÿàF;=<ïÞùõäۖƇÍ^‘7þ}ä™™Æò…é÷’Î.FÖGhòiºæ÷S˜ñ ’"›úɾŸZâÝ®¼(*( L¾ØÜnUþÛ¶mÛ¦?{Ý¥»ž‰©±¼¼¨€ñý1hGó0“÷­?÷û‹ü/ξÈ,ý´.í§¯„þø½h½3Us›¥OXxZw“ƒà7E5ÎH•üÓTNvùrí#ËÕiØÊ|¶¶^ü"ˆÜ¯…C0ËßÜXÁJõ^Ï›¿e–…fõ ;rG.Âñ5æê¦6"…ºån߇Æ{ÕÇfÄÞBÒfðDe 3ø6EúEF )äï´/ôY´Êû¥këIïCËž†Ñ§¼ì÷†¦vSWÙQ]˧éšßOaF€–IxÌinÚ×cj3z"“4Ùå•MýÄVKœ(‰ÄSðÚp¹b³Q“¬nžÈì¬û&+ÛÀX[ß@OXÀ/1QÈ£Z󬙷¯çÉ›Œ5•ïlmGsë`uþ"dæsäJnÚÉ)qÛ|2ø—Mýê˜"©Þ&†ã•¼ö“N<¤ñ"ÈŒÿçCz1S¡­Šm_Cg3E$žN"˜ù«£˜jq'¶¢âPÄ#3ïðCM)x9u'ïEú¼Ef<¿ ®²!!5å—¬ŸÄ´™À>šsÎ,ÙGò‡KÄ\aŸ ®m–Ƈ°%ƒFÜ ú+­`4`¢ç:Ï~ š|š®ùýfD|àRÓ@}µ»»}Ç“sµxÕô¿¢¥ë±‰/¯lê'Ä–Pµ³i&éøÙ¸/ì>rŠUrÒkƒ‘p"}´kg£.†ÊÊÊb´>´ÍM©>ÉC¨²Š"*yzz.·F`'´0>ëäèŽùñ ¹™3£ƒ§ö0Þ¬w/ícNÛѦŸê˜e_¤Oü$Ä_cü+˜L\µ£‘õà‰ó½F Ïàeñ¾š% 4æƒÿv¥izŒ5s×dT},O»÷™™‹nÆÃ;.kwÏ;­¥ª³^>Ië`:§¥Š'$ögè8„âÚž`%ÆKQL›ÃºŽÐ±/yÄÎÅí©âw#nÎÎ%âôÕr¤!ùí¾Ä³îæ£TNxôßñDåÃ[¢/ýñäíg†ªZ‡N÷ïØ@5ø£«WÇ¥å\@zšþòʬ~’”èˆcZJ}­§è¦ÞÎdÈ1JŠK'Î3ÓÑÕOdTwf ±œç틉äÛu0Å׺‰»Ai'(„N€%I{×￟ÿ—È+Šf¹¼ Ÿ8ä¼*KA¯q×0zß{”®Žž¶šššøÍ]Rl­¦†2%0ƒxv~çk=Ê(øø…Ô@ì¼{T‘ø!š Ž-Bw4LÔGßwzr žÏGjh ±•–ñ̶91ÙÞ: q=æJð:obh¾ù‹0 ïìà¹ÎÁ³Amªôwõï_wN€ƒÁµ#<ÄôA£—³ùOì|š®ùýf¤6nMÁ{3 8jÆ!vxøŒpÿ·;ÕÊ6¶Ý}}”ýÈçlt¼9ù )žÐ°¨uÝM1£ãâ@w[¥ÈÛçÇœüV+ÿÂt÷È ÓÚ\‰Ÿ­ ~¿?UJä' ù{è„–NZ6Ò±¯¥™™eo›®¬‹,xf 1'QønûÑY ¯vNôŠß??vú­š¿øw {!}94-$®RÅëàE§ŽlË%½VMyA?q fÁÛ:¥FÆ={Y1­~6JàgJÈ‚ˆ$÷ˆ<=ɸ­öÞÁa^­õÅ¡(Ðhp¾,¿ò§\Ѻj2˜ËÓîgØ aMá©DV¡/ÏyRêD¤ñMaJ]fÊßßñ¤ä-C?\žD@4ÂÆ­)xo¬ýíp¿Zuy o¾°±m 3õß?ü׉޳&åŽÚÿƒi=>|hîmyÛcÐdCnÑç#Ðìåâ÷[*ùüʰE!'îHûù\ÚϬ[ªÕ‡þpbípÁ7ƒ7ªó$¡ß[’Ï2a2¡x„N#T£ŸÄ¿VØ i÷Ñ/uœ—È7Ô—ô‹¯&V¥i\äê!ãû¥|aUT•ÌÏ.,á-BaÁd>ÂñÔO„çíÑ&€øà=Í— ¬+Wž,®RÐPéÛר†ïÙM):úAgµ›*'Ž”¸´olo€fÜšÂLr53 z">iûšœZú‰nlÛxµóçsp&Óm…‘¤½Õ‚æÞF‘·=ZÖú{!IôÓg‰¿à6ž[θä<}ôäIÚݳ?ÞÌþ‚†¯X¹Q'±`1ŒÖ‚ãLÞ"1ï„¥y!Ýà¼d4ýåýÄBË"?/MËs‘Œ‹'’õ»2Xû¥´©ê0æÇÂæö h…´ðÝZZ;MvyA?‰`¾ß„Àùê5≄À•Õ˜"Z £€~ÁŽÐ}ZÖò…iåD‚”ºö¼D­šÖ»yШ´ê—D«v¾Å"³úéèõ”Ä»%§/=µï§6˱‚Ø´³£vû‘ö} ¯Ê£òŽ6èlÞÆØÔ@@æ6[íÔT[[[Þ}W$¥žÍ@6 ÙÝhH±߬ ²©Ÿ(ñD¥Ù‰I%[<íÐÑÓ:Ì® ¿HIIÙ¾êQ"cð8ã£;ËÉ ¾nÄî£È‡µû ¨¨?M¹yêW H(ÙÔO”xŠ °'Á‰äiâÝDn)•OOhð.=AC–(((fefw·ìòø·W¤~„®!Fì9Œ³7¯ã ‘‰SK†¯>øk†¼å¤ ˜‰ÏVúüõ5n>eó_jý·ªÑ+BŽßÎÀºØÏ ÝìjÄjB5D”ã«@•ž]9¡¡Ò^!hÛÝ“Bœm19õNÝ-Û¦=Ïý€u°žà¾ÐGbo§J³*ÿ¶© ýè›P ²©Ÿè¹~?›<:öÒV!0`‹Q»Áý òŠÔÔÕ^¥gêèµ×7Ô]µ³›pñDy-äßû7@ÃsÿõÍr¯7žî|?hGÌMèɦ¡³vú¦²–Õ1kN¾ßµkaí+^2é kêR3ñÎßñW òç—9é£âz\†–  Âv÷¤ ßÑVoý©ë«c&ÌIû­?uÉêÖ˜)ûÎøE,¼U³jŸÈíTéwBEµ·MmÕ€„I‘MýdßO-ñn‰Gp"÷Tüù» €0ùbs»AVùo Û¶m›þìu—îz&¦Æòò¢Æ÷Ç üò E9™²6¸7]ã£Æ³Ò+BmK´ê JŸ7ö§.ùtÌ©Ó\X…ƒ³{T?À:p3™˜‚šv—vÎÞóµþ#^¤Ð!*Ó:ÿëß2 +ñ6ZúMͶø×o‰à«~wOúm× Ô` gòB¦×²Ò“0f$B—ªÑO"·S¥ß I¾o.2ƒlê'¶Zâ„@I$ž‚׆Ë›šduóDÆ`gÝ7YÙÆÚúzžx‰‰BäRãüUàMã8g§Ã ò>9ÙZ¸YatDùCÊ¢òÓ»G;fþïì–?To_U­q ˆwL[z¹ØtîÆ­þ½ôT‰’Ü÷nÇÅ $B?Áï`€‚fwO‘;Úvf­w§J¥Ùkú8Yà­#r;UºílÙH±onËÞt )²©Ÿ[BuÔΦ™¤ãgs༰ûÈ)VÉI¯ F‰ôÑ®º*++‹ÑúÐ^47Er?í[DòyÞí??¿í?Ú—µpjW&3µœ°QÆ„ULN©½õÖÎÖÌ8„Xú‰&žƒxrf[ô•ß½ù€ivë;rÌä©ã­5hšpG¹„B} ^_‚kmtéE}Çhè[›i9L`+ÞS˜¿¸ÛÝS䎶¼{ Û÷Tävª4;¡Êð^)Yý$)ÑÇ´”úZOÑM½Éc”—Nœg¦£«%žxBèÈ.4;¥ú#–`н¸¦ÉáãÞë6}?<­¤ãP7ßH*s»[o÷á}ò+ðäädÄ„`~z÷ïVªk•CϱÙ+ò&¿<3ÓX¾0ý^ÒÙÅÈúMò3—^èìJbÿú÷ê“)ËßI@ý¡ÙÝS¢m…!r;UšPeO  Ÿ80Jú 霜ôZNžQô®ÄÉÝDUUIEEEÌæÇ¶#—dŽ ÊHáÐJó.d 8™¹v ªeM×'öª¢© Îú5QPrC÷í㨚xŽ V¹†Ñ§¼ì÷†¦vSWÙ‰lBÏö±;Ÿ?<Ÿ×°)@Íîžíh+ ‘Û©Òì„*€x©ýÄ!çUY z㸆ÑûÞ£tuô´ÕÔÔD7«Æ%µ&ô©ýÆ> %˜ek$ÈOÆÊw¶Î ¹“´.å‡c¬õèâ9– Zq'謴‚Ñ€‰žë<û1è›Ð3¡Û=GȬڟ:·|s_~›á ÙÝSÌmé7:¨x3ivBýJ”ÇÝ×åÍí´P@?q ¿Â Þ~б(502îÙËŠÁ`ˆn#„Ô» èX}kc8tmDäÈE¹+c¾ÜôPÀ0šxŽ6Î?Ž+ÊÉÈÍyusÕ¦‹'Voñ¼µÕ#d‰-ºŠBž #fJ1Ögù‚P`™},íC é×Y¼øúýÄ"Ä+‰Ui¹z¸4·/ †™ï0DnY§|s-kùÂ4Žr"ÁJ]ûÀÚÙð•"³úéèõ”Ä»%§/=µï§6˱‚Ø´³£vû‘ö} ¯Ê£òŽ6èlÞÆØÔ@@æ6[íÔT[[[q¶XF=›€lP³)hö´ŸìµhŒ¡´[ùÒoר°}µÈG ·»€tȦ~¢Ä•f'R$•Plñ´CGO{è0»‚ü"%%e ûªG‰ŒÁ㌎î,''øº»"ÖF. ~ ¡ ¿à fYÖs÷Ïɰ¾&è§K+ì«… ¤C6õ%žbìÉ£Gp"yšx7‘[JåÓ¼KÏ@gÐE…% ŠY™ÙÝ-»<þí©Ÿ0¡?I‰=‡Ñbö>xÜ$2qjÉðÕÍ·œ3ñÙJÿƒ¿¾ÆÍ§l>àk˶Sõ zEÈñÛXû9¡›]XM¨†ˆÒa|¨Ò³+' 4TÚ+­ WÑwØ‚Â]Qêz„bëNå£s;\¸ýèM¹‚žù`'¥“-åÙïMâÉ™mÑW~ôæ¦Ù­ïÈ1“§Ž·Öà/ÑB ì«Î¾,%¼w’ÌŸcÅ%¦<Ëý¢Ùsœ»Ÿ÷m‚¨zviOl\ÒÃÌ2E‹!“,q6‘î-]¾ð®ø)ÄH@B€Ȧ~¢çúýlòèØKWX…À€-F] ì÷/È+RSW{•ž©£×^ßPwÕÎnÂÅIä´0•/7@ÃsÿõÍr¯7žî|?hGÌMèɦ¡³vú¦ú¥/fÍÉ÷»v-¬}ÅËcC&tMCj&Þù;þ Tþü2'}T\Ë­˜ªs3}¢Þ«xÅžsÖÊ›æ¹ìOtõÌÖÚf¯È›ÿ>òÌLcùÂô{Ig#ë#Üí«¥ Ên;ϰДÇè{¯J˜77,9ÄÿàF;=<ïÞùõä'CÕe7ïÝyØ´gö›–'ºÏ õJ‘»vl0j¼1+m±¡!±ôÓª'(}ÞØsœºäÓ1§NsaÎîPýëÀÉ)¨iwéaçì=ßQ[Æ#9~ü"„-êÙÜ^4³üͬTïõTNÄÞB„ãÁ ”1ÌàÛ éW¦°ÞS¬r £OyÙï Mí¦®²«g_[fYhVÿ|¢é}_è ²h•ÿvì”®­K$™¹#—Ì\ãa®Žaj#BQ¨[îö}h¼·Âòiºæ÷³ž—dS?±Õ'J"ñ¼6\®ØlÔ$«›'2;ë¾ÉÊ60ÖÖ7ÐðÄKLò Ÿç¯oÇ+©T©„’“­…›VAG”?¬ÑûÊOïí˜ù¿³[þPu¼á*ªÐ: U놷ÑP2ë¦ål«®$a˜sëÒUÔï9u'ïEúTfûhΩbÉ>Þ ~“„-´0âNÐÿXêDÁhÀDÏužýuJÒ…ÏE¦éý ûdpm³WÙLJš¼KyÑx+,Ÿ¦k~?Å¿0ø’"›ú ±%TGílšI:~6îÀ »œb•œôšÁ`$œHíÚÙ¨‹¡²²²­íEsS$÷3Ü ¹E$Ÿ÷èÝþóó›Ñþ£}O“™]™ÌÔrÂFVAL09¥öÖKº…˜q±ôMoð&§Þ©»eÛ´ç¹°Ö|ÃÚàHHì…z2u¤w¾âÖ GvŒi#ç"Í=7OwGLaÝõT?“ù±¨$ùVzà'ëMƒÅÕ­_íúŽÐ±—yÄÎã¼€Û8þ8®('#7çÕÍU›.žX½ÅóÖêúô%Qïã:Ðmîyu&ùÜž`Å÷âæ­°|š®ùóRÐ<êk×®‰ºð•"³úIR¢#Ži)õµž¢›z;“!Ç().8ÏLGWK<ñ„Б]hvJõG#ùÕ&n¿&‡{¯Ûôýð´’ŽCÝ|#©Ìín½Ý‡÷ɯÀ“““V‚ùéÝ¿;X©®TM…ÞúS1ÖWÇLþ?{gWSúÆñ÷œö½Hh—ÕPbl‰µ”1”1¢ÈV‰"kS–(”ËÙ—¬ †Æ?afb²$•Ð.ÚÎùŸ{ÏívëÞsîR©®çûÉí=Ï»Ÿ«s÷=ïyžøìÔ[hÕ‘36I#'î<º(jvÒ|ĸ÷Âj«9š–¾ŸpñÄ1ôjqŽ#ÓmÔ÷àÊ3bºdÃq­Ö:ƒÜ ÏEe Ç”…üðîØ¹×)9 :ZƒFuÒš÷ÿ±ŽýÂÏO°ô"G‡1ÔjæÌóR¹x "øÔËÃn¹§‚)‹®/Nõ´ˆÓó¾r´1µÒ×ÊFè4B*´½A<Äñ”¤½j}çÈÒ»Ïb‹áÏׯ¹Ñ% Ÿþöï3kzxDù.6=ž¹(öþ>Ïî­PQΓ”ë'ã¦d-“¥ka˜„]2Nžõ´¶çl)î²5Ô•±²$ãæÓÃn^_ywùAŽ?¶}4f”`Ã4è´'“ÔIA$maÜ{¡½f1úòÙÐÒ…s—¼FºF[¢î€zó!m:uº •ŸþWà&²!»]’ܦ…Í˦ÞÇ3¨¨M}º=ÆÎ¡~„ìÚî¡ñî²ô%œÅÒ;…Éïà!ÞµËãf.3WºÌ”|´Lv–®…ÇÉÔõô’$Þ¾.jßí½‰¹E÷6 ²ßcJ¹s©V5M‚£¢‡ÎÍY[~Å[ÃXöaÐàv\¨ ÓÞ S]ô J:|{qÚ‹JnMTáÖÛ 3$A”–ܽ’¥Ôƒ÷tÁE”3ºË#5…Zg[Ø®N’™¤1÷w¦Z  Ÿ8„͹D`UzùžÞSšz, †uÝlм2f{o5D,û0$eïþ?:™6/› PÀtœ6Ö³;€‰EQH ÓÒUëÒ¹ÃJÞÙî3ÝìÌÅçëÎ~ü@p”ÿ°}fgÕÝ»”•fª°ú‰ƒA·7¹©3çÊ›x¢ia<¥ÎþÀ²CXö^`ؘ0•Èå©„®^mªgw€H˜$¦ªç6VÏM¨¤°Ýx¸Us-@, Ÿ8H¢œžþ—õ{âó¼·ïÕ´«:÷hݳoW--ÍO06¨³ ÓÛÊ7°ììŔfßöÑ;1©Îþ –î åúI"Þ—”f¿(xñ¡ì*y§ðæYŽ^†]¯nM=.šÐOây™‘•ýâýõSdUͦò?.€~€ÏÐObعéLa6^\\ªª¨[¢Àq<¨Yõˆ’¼¦Mè'1ø,r ñ9­¢ ]#ž(H\MKbãÈ ŸÄ°yÃN[¥¼Tžr¢ÀH]}ÕŽ=•št\|:hoþd>r«Ÿ\¼{íNq™ÿõÖš:¼§ -$¹>tK›¶­‡º zÛ+ïâÞ\ÚÞo„‰YWM‹N&"êömSR¦888Hb… É«{¯¾&s/Ðü!Éw³‡z¤ã8At(uutó^0ÁZI¨))µêØwb`Ð$KŒe`ͱ«P#Ÿú‰‹÷³¨×á=㤆¬ØhÞÁ¤¿cŸ·¹ùZÚZÏŸ½loÔÚØÔð‡-™ÅEô4;EȺBw残ë_¬uœ4ö~èæØËëPÚ:§©[SR¹éS§¿Ytá¦ÖOï™2ÒL‚÷ï„ ÐvŸR7cTXÓÍ’L÷Ï¡„ˆNÄø€ó‹süÓÉ„ŽÜ¿Áõs¢¯ üÛ裓-”òžÝ»~l²ÝÏb¯:ëå·-óØrtW§×fLÝ0ç®â…ƒcj<’¨ymÞ÷u7=¥Ä$)ªŽO^S >'îøXƒ7'=fDûßFçN¬¹–*y`j7åç[ÆÍIÜå7)É›e`ÍP -ò©ŸõÖºv§˜S@ª-P¡+6)ví?ÀæÍë<g_tèbdÙÉBII܆ñ]±ÈWX>¡·NZÔ¯N‹q¼_Ì NºÛb„"ÄÑO?¤¡g³Fç•¥ÞŽéuª3ˆŸf·6?òÍ£€BGm"-0“H}4+¯0à:Åu»–ÁyÑ5ÿ˜›U`bÚ©¿ûýéLöèÍ9Ç—ywÕÆ0­!ЯœÈhÌ~W§vÓ“lsUÔŽ<ª©ÕãLÔ0Ìä«P½(?: M\È/°á[kª)ÒÒ¡D„òf-ùÔO\µÄÛ%•xZ®Xh5l¼Í•ÃŽc _ef™X´561bÚð$Hl ò!Ÿï·²`Ç+éT¥„’“m™›e*Ð^쀠…s/°!Ü8˜J›G¡iÙ%÷P¢=u¸iþ€ÙQ7C¿ç eó¾ãf®œÙ[Å~žÛ`˜‹KXMógªÑOVïL¿Ä}íÊ;²æ¾^¦¿ÑÐ~u1Lq¶mñ0 ¬™‹O -ò©ŸWBµi›År“N˜õ!›ñ¼.C'Ú$_¡  péð³žfæLÕÔÔ$¨½wúî®ôã ·A^QÉ'¼íZ—=¹²;hD çi—Ž‘ò´WØ €ÜC’·–—QeyºÔì**[~‹Lì‹ašcC~Ÿ‘“ýüÊëN^ºqfÒR*ŸÉ>¡“E^ºdSï'øœºˆÐ#„¸MrmµvPᢺ`XsÄÈ€Üê'iÙuÐ@µ—íDÔ/Š ß›eÕÞÐ@2ñ„Ðþ­hÚÝê«&IHì\Órß!¿•ë¾uN-nãäM#½ìf8÷|S'''‹,òÏÕàJ',$EëцüÙC<žT_E—Ñ´ˆÓó¾r´1µÒ×ÊFè4B*t&»ïbӓᙋbïïóìÞ åá;×îêŸÂw4gÄã¶jRÓÝ`‹&¤ag‘³ëgòPÜÒõ)é…¤¶‰ÝH7_º “w‰‹ÅâöžÚäðºBͰ³ƒÓðqÛ™º^íÛÁÁÛK\](y¡ìut5qà?·meª†]‡Íœáï.þBÊ4°¦ÄÈ è'ÙÏKï¢8ŽëšØ 3loÔVKKK|µj¦¤Ôl}ê9hmÏÙMy—¬º½rÂòß+-Ù3°ƒzé³ß¶ù® 8wwíÙU_*€„Z®II®µ-˜öfþǽn±s¨¡ZLv ÃÍ\f®t™)Ü‘°†Ðvwg,ƒaê}<ƒúxŠs¦™@ ô’$Þ¾.jßí½‰¹E÷6 ²oíL¹s©&…˗ߪÄw íÀQKʇíÚÿÛ¬?–&­ã|›¯å¥FY¿Ç(ß95¹›6$t“SÇ· |V€~â6çUéYä{zOiê±4;þÇÙu»Ô\Àd¾¡yèN4B5[VÕ|bùÊàÍ©I3¢×xhžKœÆyBP¬›‘¾mE=<„QÀç€l‘<@?q0èö&7Õ`æ\yOôÞ(‹Z¶9: 4–$PgIòSD’ïfõHÇq‚èxäJtëfÿ(I} YùìÚÏ ‰¿ýïaF^%®©k`lÖÉjcë’>ð™!Ÿú‰Otš›¸+­„⊧ÍíÚ: îÿöM¾ªªZ·AU¯)8޶è7ÂLQQôy#·@ 9\š¹úo<@‹TQ"…„Ê ¤Äâ8.IÌEñmw`MIþ³ÙcÁÙÂNß­ý1¨‡‘Yœ“~ïÆÉXŽb¨F>õ-žh/pÞ«¯Q‡×î\ãçJânÃê­F&í 웟W¬¬¬’ù2«‹u‡Né'Œñ[¹}šÇƒÇ_@¢Gæ;/ÿ-CÉz|hì¸ÇK‚â{w¸~O ·ª»‡º‘u4}ÃzOsNº"¢u˜P:÷ØW„œd=CЂ\["_^ºtáÆ³ŒÜ¸vË>6†uï M¨[’¬Ê¹}øæí䬷u-,û¹ëgFûãà—GœØDŠ_عÏêmˆI^ µdU'¡„Ê È ´“†¯âû˜ÊŒ€Lt·O’ïoƬŒ>{ïM9Î/LIcÉŒEY‚G±´ÃÉýs”KPAàmÌmÇùÌaŠaüöW¡Xº¤dõ‚ÄbÜàÇè)=è,]cëÁ“­ 6Xw¦¢Æ€Xƒe ¶±Z"ò©ŸØ¹x?‹zÞé@ÈŠæLú;öy››¯¥­õüÙËöF­M ØÒ™Yuú›E.lj]ñôàÀññž)Ó)Í$xÿN¸m÷)u3F…õ8 $îHHCxŸ9á} •Jr¦Ý\‡:¬£Ô€ðý;òvÐ/góPÿÅ>óÍÊÇ[—¡°cfŸ§$¸Ó"ï! 9£wܼ¹íDïuã%©¥8xÑwƒ:ª+¶ì=±Š$Óýs¨yˆñ!;æçø§“ ¹×Êî¡Ç+”½cOMlû:a⬸ ~-–,5¯Íû¾î¦§Äi‡%x{;·/{…ű3V*JÝòu@ÄíÌžIë (Y#|ÿNl|*š­×9!°‚º³1Á‘3¡¦°¨`Y4«å"ŸúiPo­kwŠùù¤Úºb“Ra×þlÞ¼ÎÓÑÑyöøE‡.F–,””Ämß‹|…åŠqëÄñlÓi1Ž÷‹cÁIw[ŒÐ@êÚN%HCÏf:Î+K½ÓëTg*?Ín¸>{¸Û>µô+Þå—´omdßk’=SÉk§ß"9ÒB ÃTíüѱ âS ¨Ï×ü†uTÇ0ÒС›]Bh¼Dµ†pj5â ›  qµ‰´ÀL"õѬ¼Â€Gè×^ÔÞ2ê­ö0§Îƒù¤PWd“%‹fãÔnzÕg%x{;}ƒxoG+›J/¡;áTÃ"'!6>ÍMîk—êCþ’ ¹Ø1ˆ –E±šá± 2Ô’OýÄUK¼-PR‰§ÕÁኅVÃÆÛ\9œá8ÖðUf–‰E[c#¦ O‚ÄÆ oò U»TLãx%¢¾FÅ''Û27ËT ½ØÀgÀD×ûÏÝOŒãxØÇÛ|Ñc¤ïÀ.u—hþᾞò=_c»ŽP¢ÿ¦(™Äi '%­%âIìý»{%ÔY1Ž0¦Òæ‘FhZvIà=”ÈQ«´¦¨¾F}!X‹%‹ÆJàì±bi‡||bËž >Ìx[RŽpúîÞ=¦YˆOEÓ¡=©Å_Êb¹Ø1ˆ –E±šà¿ ”fš:\º*ëC6ãy]†N´I¾þBAAáÒág#<ÍÌ;˜ª©©IP{ïôÝ]éÇnƒ¼¢’OxÛµ.{rewЈ@Ž îH)H{5Œ©4ªýü¼¿,*Ì}[ðúöÉ„ëÉ{ã®ý Þ¡¿(½µ&ÆXšØDbkÉbÅIÞZ^ƹ¥•åéR£#Ê–ß"ûbØ0®.ù—§oþ¬È’% Kð(–vÂ|£®ã¸wtÂx E¬ÀÅÅÇbãSÑÌw@7RPXÚoÅRJŠ1ˆ –E±Z.r«Ÿ¤ewÔAÕ^¶ Sn¼TPT(.|?n–U{CÉÄBû·¢iw«ÿHBâo–ûù­\÷­sjq'¯ÀhÚée7Ã¹ç› <99Ydhöûupcƒšj¹Ü•!ÞÎ’v‘ƒã/ÊH3Þßå  íþ:‘{ì¿ӇtÑD%…YÒþ8Ùç›uìíËV«!Ѷ÷«Á•8NXIŠÖ£ ù³‡x<© ¾Š.;£¹ÓTÎï¯Xy:ó«~ö‘‚õX²„a ÅÒN9÷U]CU(z|j¾`V7‚xˆã)I{ULl‚è¬[;`ô²ßü–œÞòýP«6Ê¥/ØGÎ2‘Á²€–è' ïÍ{4K¾þBQI!ÿ]±Û K Uuuu «ŒDS’y¢d)uïM§ˆNcVSB÷M ­Õšá¸ó Kvÿ¼:úÿœ´JŸo|»jÈäß9߉Àyв|ÌMøÃ~rtûâæ‹O^}Dºú}1Ú“¶Ùãðõ¿N„úòka=C¦bÇÿ¸½÷§›yUÊúm-ºõ«»GÙjµ$|fðlpÜvƒ.ߢ»ÁMH%ÂÎ"gW%Ï„ âà˜ßºFÕ]ùaɆ%xK;«¶z‡m;ºcêè­BëN«}û/8x{‰« ª¾îIŸ ÿ >y&>!1Ì;*·LA]§½¥}÷ÅŽFd°, ¥ú‰GöóÒ»èŽãºævà ÛµÕÒ’" é””š­O=­í9»Üe»1ë*yl0ïéß«Þ78ËïЂ`út´«utLý•Qè7}`- †áú='ºõœ(¶#ÁCÉkÉ1®II®µ-˜öfþ1 ÓpòûÑÉ“&Él/‚è 6Kø‹Kð(–vpëÉ+b&‹¶¶{h¼»¤]ÔíQý 7?êGD–ðÈYÆÀTEØßl[ Ÿx$ñöuQûnïMÌ-º÷°QP½URî\jÀÉÌ(T¸fMþà­¨tþš5ÅhŽ.ðsYü ˆòËÂâßE"*È1³ân.sÿÒTí}úùÅœc§Õ’d5TÐ$€~â6çUéYä{zOiê±4+µCfþtÔݘy é¬ (^]£ŸÄúAônÂâ|EB*È1a–ÿFÎß”ü²\˨Ë`ÏY>ž’d5TÐ$€~â`ÐíMnªÁ̹ò#ž88îê&‡¬+8ŠB З?;"Áé‰õƒ"èÝ„ÅùŠ„þTcÚ8y¯uýØ#KVCuÑœ»rr è'ò¦œ¸`˜ÁšyÊ.Û¼©KŽòüյ爫õƒ"èÝ„ÅùŠ„þT€Ù‚| Ž`¨+XhDý´e}<{?Ôõµ 4,øØ¶y?FbÝên—Ð ‹ó©Úòóó›z’ÒXú‰O“¿#¶ H¨FÃ:Ä$%‰Ì’Ð ‹ó©Ú&¼!-ŠFÑOq‘')ñd`І>ÌÍ}ãí=#66Ž~åÛ©2 ¡š ý Ð°8_‘ªɦ¹5‘ZE=ØØý—ÐJÂ!!iÇá`Ø:a…ÄÒL‹8=ï+G]<ÿêèoÖÄȤ$NÄŒª‹ÓG„g*zl–ûUgŽN \ÐÏû÷™5=<¢Êös BÃ/î°›Aî©I3v”jÏL<æ¡Ä>’±#]©¬ÅÏbXÁÒ!îɸâªKçûc,óBÜ@]‚±&c7 d@Bký‰InnnÔëx.‰‰çè×ãÇ9ÁpOŸ>ÍR@ôcQÐÎâE”_ÿ.’úSI°Å„˜ýâÎì[䡾2ÝÞâLŠ[º>%½Ô6±éæëOÛYä¾ÂðÝ{cãOÄÌý*¤BßÞuÆŠ){]GøÅÏm[™ªa×a3gø»‹¿fªÌ8¼ôCÈ®]Ó]·×ý¾!r`$yË÷"éÖ~RÌ‘RN‚‰†UQˆ¥÷?=þ÷Å´ißîÛ·—L‚Pv*·“•Y#uÝàßÉš°—f8_>ÖyÇwÊ®{ß-OKZk%(è%t9¨ÛcìêGDËlrßdˆwðïÚåÕûxõñQ˜e$¦ã+«µI-âw’|7{¨G:ŽDÇ#W¢[7ûGFXnƒJR‘‚ 0e­¶¾è?ÖÏgxÛO4_™‡ |bÄkZ<Ñin⮄ª“•ÙãÅ„]É\k4è1߉J^>ŽŸ3G!ßPÉ—‘ÍZãC]#«Jß<úy„—ÏÌ”¸ú´ö¹ÑB¯€ü‘ŸŸÛx¢:3æä¦sã»áxz`.ŠoÛhChpB/T~|÷póäïm¼¥1ü²¨uH@.X¾i— µÄë'Z<Å®„¸[ ©Ã©Ã%jš¾CçææöãÆmÔá÷‹k-gÓF‘¨†i”¾GG4Pæj¢q}ÓU…–j¬Qåd¼>?üxJ^+ûñ‹¶:qmÇ–¸†ütåïWïÿÇEWõp÷”yïüÎüàX£ÿá=ªË<ؽ8ìÐ ¬Ã éÖ{šóZKX0hqìõ—*6VïYô%÷kGù­­ ×¹“ùáü•ógûëh4½Ýõôô·7,,ûÇ32¨K§†¯âû˜ÊŒ€LtЄ¶³ÆwbÌ'Š1K;œÜ?G¹U®ÑÆÜÖqœÏœ¦Æo_p9GÚxS˜¢jkÛù%!â$Bžì-ΈPÖï1Ê7dÎ@MÞø+ß²çÔ‡¯>(uutó^0ÁZIT¼,>° õ)‘íJ–{XïgÕ± ïa(\Œ^âë$ÁTÓ`ô$¡åÁ%nñ®§‡e¢_ÞEÁ¦œÌÔ‰¿Í:ùkŒAî÷q㇧$òÜ:ú”ºí;ÔV­:rHùˆ±Õ7\úá ž¥æa4ýü):>uú›E.lj]ñôàÀññž)¼‡W´š»÷×èÉ&ÇÉ?.J äöëwyÚÑ‹Û,4b“hTšÄQI¦ûç éDŒ Ø1¿8Ç?L舉‰ïÄ’E#'Š%{;·/{…ű3V*JÝòu@ÄíÌžIë (å!,A¤7Eßý³™“ê¸BÂÔ|bùÊàÍ©I3¢×xhžKœ¦Ì©u|ò˜õ9qÇǼ9é1#Úÿ6:tbÍç¯àyåôé‘íoJ¼~Ô[ëÚbþ—êP¤ZFæõ'êÿZ’ˆV<½ßë…¥Ùß½GÁÛФÿqóVd¡7SUJeF!~ñ”Pü4;Áå䨡¾bRöu«±ðªÞgþ±Âí›kó’QG?¤¡g³FUïo§ÎO?ÅŒ6× ~u¡$Qê+•\–‰¢'XhÔ¨p19äQ@!Ž£6‘˜I¤>š•Wðâ^`Yâ;±dÑƉb ÅÞNß ¯éD+›N¸„;áTÃ"'!U¼©š]PŠN;wv—°…Ð ¦jfòU(Š^TöSšÆñOµ#3þq&ü¬üè(4q¡Èó´Äë'în'Þ(©öû½´ÞŽReYBhA4äÅ­fëç"Õõ¦ÿ®+]UeUãÍ\àÉOµ¯ÝÂìmž'½WÝøu•£jí  cÇP”ïJ͆:¢¾ÅÄ''Û¢ºhV—ÆñJQý²3î– „GSióH#4-»$ðJ´G¬ñX²hãD±ƒbi‡||bËž >Ìx[RŽpúîÞ=¦YHoêòåË•%7œvóúÊ»Ë:HÔ‚u­ßWâè§K܃®µ²¨9Õè'+O-‰îßQš‰Š$ÕÃwÛMR) ¥ºÍYúõ'¤¶Võã+t6s6ŒëmÖIœöŸêF5:ku;4;1ó—mrÏÎAm×0µ ÐÝÿüæuC††®½<@PBU•fßY‰p/ú(ÜyE%Ÿð¶k]öäÊî Œ»2×£Ù'Ÿvë ^×¥ €’öª˜Ø.˜À°®›M‘Wæ‘Àlï­†â[Xqü呯 rOSiåoæÒÆy^*TŸzÉuIÏÉÒõñcêQxØ@ó¤qýgʺÿ‰bTJʨêtÏšGê(Tî\g«QAÃ?Tu ½uCD0«)¡û¦„2¶V“Và¿3Ñ_l±fYù×á»ÏÜJ{]¦ ¡¥ßÎÄl×fÆ…ºÚã'PK-ÎÛ ðéiL?M…ÿgÄã¶tùÝ ¶hB*v9»²ÄwbɆÅ;ÄÌpA„bk[·…¡ß)ÓF©Ù hldûCnDýTŸýO@}HýÎO6î¹ëø7fÊ%/ÿþíØVùëQ˜†¿Ð|fÞnÙh¬~ÅÙ©`o¦©ˆcºfn? æ ûJ1AiîCýòñÅI—9®½H2Ãcèô<¤·ýJBDHâ.…¥G ®°{ùkÜÞ“×î>Î)×ë>zÆ¢“ë§Òv¦È²z[!R«Ž}'M²±¶Äèí&íhÄîs<|U„éuî5tä÷1¶ºÂÕàó%¾SC…~‚R@s£QÖŸtM‰-ëãü0ý’U “ÜéÓ§ë£ÊwÒiŒ|ætGè*B ÆûÞËÚÊÊÚξ£n>å+Åj«9š–¾ŸpñÄ1ôjqŽ#ÓmVVyF"w),=Jèp…¥XÕ¥YßmzF Š_ÛßϽwb•Ÿ(Ï.µZçmEù›ÈS»)?ß2nNâ.Ÿ¸IIu]«³x»Y?'ú ¿>:ÙB)ïÙ½ëÇæ!Ûý2¼M 7°Äwj¨ÐOB hn4Š~š0aü±cÇ)yÄ^ŒOTÉÆÀgÎ’M_燾_”úëñÔ_9þBµ–vV¢sEúJia‡&>Ø»¥ÒÓ_){ñ„pûˆvHbw),=JØK±Ò©¬‚šr䋡ömþ4b½­løÖZÃHK„J@H(4 ³·› ΋®ùÇܬÓNýÝè/Ñ»ò K|§† ýÔüCHÁ^¥ÏÆÚÿ$(Œ.ÞÏ’Ðå&Ð (ØÏÜxtJöÓÒRïûéJVÑõ°0ä¼ ±øJÑ^3„}ùlhé¹K^# ]£Í1Kè.…¥G [`)vŽ{à(Íëm…ö«ŠaœÀ>8N·ÀâífÓü³£n†~Ï›²yßq3WÎìÍè¿Kqÿx=)*|ÿ6»¸ªœèÒÃø÷Ë©úíÔ«B¯µv[ÃÖM=´¥ »8P?ƒ\m¯¸,A(¶3ùJÁ0ÕEß ¤Ã·§½È¡L“U¸÷ª$w—ÂÔ£„-°£²N tC)b½­à¬ƒa÷v£96ä§ÑùÙ9Ùϯü°îôá¥g&Õõª È7ÍT?½z–W\ð‘N?¼›I½V–‘åÏß¾¡ÒíÛ¤¥>ïÔÕ´)‡ØŒ™;uŒ“CWS} ¼èñ?“Y0Åâ+ÿΊL›—M(`:ïI` Ý¥°ô(a ,Å|[œ¾~Í.ýŒð·ŸYÓÃ#ŠÝEŠTÞVDÀêífZÄéy_9Ú˜Zéke#t!ºL-Yì‡ Ô¹jq'Š^³Y¹2 ñhŽú)ãñ;ó.mhÙħU;U„¨-J¾9"1ÙÅÆtÜyÖØ‘šj&H||÷ÏfNªã ^ãÌãd âDbäøeQá§ *TK¤qõÓ ÞZ×îózS‡ìŽÈÛ™êd¿àÝ•{•§««Uúþƒ‚¢†aÅeoi;I…ïß¾ÉWÓPbj§Îþ'FNÕ"r+çïOL•¼@ü4;þ’öŠ,ãfªŠéØhB]ôO!¤áº?2ÄÞÓYn¸;K¡¾¿Lô²¿òާ"ªÚ?=wñíº'G×3ê긧>ËzõäîÖÑ‘ÝÏ_ àôðCz6kT±á"ƒ¥€| • õñÍ!!üë C/PÒG4b²7àγˆÔÄ¥f”¢ÓÎÝÅŽ“5ˆã ª%Ò¸ú‰»Û‰·J’ýã•åUˆä¥ízw=|øXÚZÔÿd¼´ôcQa±±y#Þ~{ùY }íC @õ¬Þ?º‹0½xC]Ê•ÒZ¶ÝÀÞç¹gœ†d·C)"£€h™Ùö1³Eƒ†Op>jï‡8«nTíøää-«¯Ñ÷F@nüJ ¹ $ΆT¾9dØa#‡‚©62D4b²7àγúGj¢¡ÞñÊ’Œ›?N»y}åÝå¹b˜eœ¬AœxŸªÔW} g!®A ™Òè÷ï(ÍtíÎ5ÄÓRbP×R),ÌRPÀ•U”+ÊÈÁƒŸ½xžŸ—ÿ±¬\SC£}ûövÝ{ä qµÛrÊÊÆ¼±_V·C³3Ñ&÷ìÔv ×özç¨mƒ_Ÿ_°²ÿØý=Ï{ê!Ô÷gw¿a‡ÿÐücvâVáFÜ‚÷|3¬WÇvªUùÏÿˆFh m·A^QÉô¥!??ÿSÍ €ÏÙ"1ÙpçY=#5 ¢¨iê=tnÎ’Øò+ÞÊÆ2N¦©a¥™>”“¤2§Ê¿’O¢BµDš—ÿ§VúÚíLu³_äS éáÝL55#Cczãþ.,(zþ,ó§‰æÛš4õxÙ°>þã€y³çëÙMˆ8Áùëþo͘”e×wv¦’!}§ßÐçö’NHkéuû9zûS”E4²ÏU%vÇ‚Õw)µíÔsȪ3¼ˆ+–ûù­\wUiú'œŸ+2E4b²Kµó¬q#5Õún6E^™G³½·²“ijý‚“ÛŸ~X`VþïÏK˜:žSƒ@s¦yé' +³¼7 {-.~¯©©ÎOíD’dîë·™9•••f–œí˜ZቀùPò2Ò6‚Tî(`èô¿Õi±ñ·ÇÒÉÒ6ví–®±Ù‘^/EÔpf5%tßUØü@ã#[D#&»T;Ï5R“0í"¬‘Ç£ÔÙ¿£SXÆÉ4µ»feoJ¸ä뚈êÈbŸD…j‰4;ýDÑop÷{wÒÿ“Ѫµ®¢¢‚³«ýõóeeæ¼}›¯¢¢Ü­»9U ©ÇØ0p6¡ê.?^Y¯ÖÔC@&òóóÃcšz Hga“l˜ìRí…~’a³]ï.†ÆúO¿Êzùfgøñ÷ji«u¶6éjÛÁج‰¼¶5r¿çä›@ow==½°E³šz <Ò |†Èö'ÜןhÚ¶¦~šzÀ'Â-x€Z:²ý7_ýÈ Yù×á»ÏÜJ{]¦ ¡¥ßÎÄl׿5Ú#­{õE—OÃ1ñ^ï–ú„åúÛ¢¨›æÊÉ-o€fBs×Oïg±»Ü„IýÎO6î¹ëø7fÊ%/ÿþí˜Ï^º)8wØšOµy„åúd$ñòÁËÄ¿‹žÊ:ê½LÇZqžÖ‘\'Q-<½›qþŸâ—%„ŠžfïžÆc¬ày)hîú Õ¯8žZìÍ4qL×ÌÁ-à'Á\òÏQ.Ak´1·uç3g„ Jsê—/NºÌ OH’C§ç!½íWº ‚)”0ÄFïKÄi—:>WXbT‘dñõ«v%ÞS^÷q–àSu6,‚³0Eív]¬uòRŸäaú¶®á³íq¦hÊ›Ëû›1+£ÏÞœKu”.Iç" ăG[Sõ¼GYÍÐS¨*ùzï)²ê*¾š` É£ŸµñgÜA¯,.ýç¾Ô-|æ€~’Cº#t¡ãý‡ïemeemgßQ·æ£úöe¯°¸1vÆJE©[¾ˆ¸Ù3iÕVs4-#|?áâ‰cèÕâG¦Û¬0¬òŒ˜HU‚¸Ä9‡ôÚem»Zv–Uå{=ÂNVªÏ‰?íÖæÍ©I3¢?ÔÔ$‹F†°\ì­:k{~䄸ìÔ[hÕ‘36I#'î<º(jvÒ|æÈqEVqÀ=ôx…²w쩉m_'LœW!í\$äÄŠÑ~í­pΕ´5z:q¤Ï¢¨ü×Ms»S ?k•Ý©ÃæönáèíJ·¹¸gIQGÓÁ Ä€tÈ•~Z:÷G©Ê¯‹ú¾‘FÒ´,Ùôu~ØáûE©¿Oý•ÏRÛiùá`g^T¦¾A_Ó‰V6œXwÂÚØ>ÂM|°wK¥§¿Röâ7áö$6R• Xëå!­]1ã|ÕÙ‘‚v–UÛ”×Éâ×’´kéÃr±³²Ÿ®‹P<•æ¤ÇcD4BgšÏr9ÓÜ[Æ™‹‡¹:†™O Eq5:bIFhµÐÒ­™ïßýÖ©cè Ñà÷ÇMÐz‹®.Û`>OäJ?iV}!yá…¿o$M‹‚ýÌG§dÿ÷0--õαŸ®d] CΫ¨,òñ‰-{.üù0ãm G¸p‹ßã¼h¯BŒ¾|6´táÜ%¯†®Ñæ˜ÅFªªCßÝãðñ‘˲ké'–UI"²xHص a¹Ø1ãø}Ñ Ó\0$N)^CÆÈ…-¯™Zÿ¥=ì8 t“DƒÅÝýûƈy›((•¨ÁÝE¨_µlâg"Wú‰br@W‹NœR’$±ê²Ë>~ÐÖÕã ›-ÏÏ[!®[9Ã.ÔÏ WÛ+.KJ£ía¾Q×qÜ;:a¼…Ž"VàââAk S]ô J:|{qÚ‹Ê49P…{ö¤T…iÍ‹09¹Ðû¬àn&–UÎ\uU;‹‡$]Ë–‹ÁÍ[ÂÁ³˜N =¥óÜW\ õ·´s‘œ¯•–üœÓ~„~G=¢äCêý û ªN’™¤±¯‹:û«W˜Ü{),=ñ¶ýP=M¼²ä€æÇçðl,Т‘7ý„¸Ê©¨¤°àÍËŠ΢¬´ˆU ­eãâ/gjêèèé1Ô{âa¿l}Ê‹ËSwû%ëR¾vp¨¿£KNDo)éwì¶ÖÓ¼ží±198vê'‡®¦úxÑã8&³`:«œûª®¡ª@=>5_°þ?:™6/› PÀtž(*RÍŽi £7“x‚b‰Q5o²ò¥_*³øHÔµLa¹êË œ;MåüþŠ•§3¹êgY!õ\$ïÞu>ÊßG5–U*3/ý²k×t×íuÇ#Iײ…åª,'PÉ3!¨88fç·®Q²ÌEr0 7ía:[h_¸ñp«ê´ „–ST V}:Xõ‘yÀg ¥TH²²(uÓDÿC«n¶K:ϹS/ÖaŠlúTÐÌ‘Cý´ýu´’¶ÂÑɇµ×y,,ÈÕ,/ljn©£r¤“›K.^ŒâãEVÔXµªÒ>ª2e.÷¤TFVßåìƒqà¯?U=ؽ8ìÐ ¬Ã éÖsÖªæØ÷òII¡>ŸR‡ØÏßš’dÐ6{{“””q"ûÀU z#4!/Ñ "ôá×­Ëv%þïé;£Þcg®Õ®Öj§E2oÙZ¦,ÜzòŠ˜ÉL¹½“ê\±X"@ RçJ×qk­vXbTa˜Žó¼çy"³Äw-[X.¦‘K’f9¦áä÷£we$³]\¼¢ƒäs€†)j[/ ¾_¢òqô»Ã™\[é‹„¿¸U«$³¯ÁÅ0)µêØwb`Ð$KLòZT @ ÐOïg1e‰t­Y…U©Vªº¯™tlîiÿßWÓ×/.ÈC£Pqd¤ÎëÜ"}}-Æ®Üöw´_ðnîöÖ½[°Çl_JíÍ*éS§¿Ytá¦ÖOï™2),SAK*ÑAÅÞùeÞ7Ð-ÇבÍïL=e¹ÿ AÊsDè»À½ž'¯o0Ö Óo\ˆÐa1'h6ÌŠ»¹ÌýKSµ÷éçsŽV7õˆ !ÉÊâ·qRú¼]v‡) ‚H_$””¾'ÖWˆò7‘¦vS~¾eÜœÄ]>q“’¼%©¥æµyß×Ýô”x^@‹¦¹ë'œ¯·æ®¾Ø¢•ýVL›6-**ÊÔÔÃ0½µë(³kÝN{ÇÜš”ŠÎZ§zÞõKÝ;,?¤¡g³FçQ§Ž’;ÆþèÑ êÛ—ÙÄkŽ:†’Ÿ–£@‘Oyñ¶@µŸsisƒh¥—õÂMá©],¿àâ2ÄSK"ÌòßÈù›’_–kuì9ËÇÓ ©G ‰À.(Ý©»Òiv‡)¨öŽlë7’û"ë+d÷ÖzFZú ”ˆPBÞ’ÔÚ8µ›^C<üÈÍ]?Õ‡V­ZmÞ¼ÙÇÇçãÇ.\PUU_G#$øí—§Èeao—þ)´NUP|r²mmㄞhÐëíï‰À»š“͈ž;^( ñ‹êÖä’œœ\õþŹ…N¾ôémÍØ ÕÂýçrRo%ßýs¿×ú_V_]×›2âQ…W–K2w Ihãä½ÖÉ»©GwÿQú„³xs`êÕégœ«Ã~­zö+¹/±¾B¸¾á8› 'â!a-+O€ò¬Ÿh””” JJJ$ÒO÷“±ýäPã½)Â.á6È+*ù„·]ë²'Wv¤¾» …eÊï'Ç©oᔟ²EÝ~z©æÆÖ4ÌÜvï:i¿ðŸ”Í6 N޹¶Ú½Oß1Vv=Út‹Dë~¦ŒÔäñûÅèåeÔ ÃÕ-}9‹7¥[¸Hh£h‡) …ä¾HÄú vJ"I-FÎõSÇŽcbb(åÔºukIëtþiÌ«¿ï&"Çrß!¿•ë¾uN-nãäͳvðCGâ¹iÇx£‚IžúìØÇn uHM‰°Ù`¤irèŒàÿeVèYö™þãÚ°}Ҍك¿¬0ä½ ¡‰’ΠAá®?q/VøÚÂâ0¥¡`òEÒ âxÊGÒ^•§{dóÒ°F€Ï9ÔOOgÖ±”•~(Ì«kdF34eƒàqÍÃn˜Õ”Ð}SBë”÷LIá?ZÖéLJŠÈFŸ˜Ã‡œLÂØ`»Q;FÖ©Ž÷]eIu‡ ãO@*x;™µMìÆLüÞ6²8L‘ºe.Â÷û˜|‘¬öí¿ààí%®.üZ²ù iX#Àg‚¼é§Ÿ#‰/HË&‡)’ì|b*#hgòE¢íï^ËÂâ+¤NG‚‡’×>r¥Ÿ–G×õuËŠT…xÈ•~ø€~’CXÂQÉMÒB’ïfõHÇq‚èxäJtkiž²ié1¶E=Ol¾åÃíÿÖ%—~@â£ìÈ1 Ÿä±á¨ä G©É LçF¬ÃñôÀ\ß¶©ÇSH’xùàeâßEÏ eu‡^¦c­8#I¨“ê#2²~º™÷_~•‚ŽfßÞ&£:+‹¬Å¯rà¥ßøu·Â1¦î¨á=½›qþŸâ—%„ŠžfïžÆc¬ r3@³ô“ÂŽŠüs”KPAàmÌmÇùÌa‚Ò܇úåã‹“.ç 3<†NÏCzÛ¯$tASX(É{|ùkÜÞ“×î>Î)×ë>zÆ"¿!m…CJ±ÄŸ’- U22¨!jø*¾©ÌÈDMxgCT\-–s+Ø#¦¨Ý®‹µN^ꓜ"LßÖ50|¶=Ît’Mysy3feôÙ{oÊkb ‹ÛUâÁ£­©zÞ£¬fè)T•|H½÷Yue3;1§r ÇZ+ã%¥)ÉOPgQ®;ø¡¬‹wDòÃègm|ÆwÐÆ+‹Kÿ¹_¯á4O@?É!ìá¨n_ö ‹cg¬T”ºå뀈ۙ=“ÖYm5GÓ2Â÷.ž8†^-.ÀqdºÍ Ã*ψ %¶ÇªK³¾ÛôŒ¿¶¿ž{ïÄ*„xž®CJ±ÄŸ’- • $™îŸC ,ˆñ!;æçø§“ ¹ÒDd\-±gØhÕ‘XÛó#'Äg§ÞB«Žœ±I9qçÑEQ³“æ3ŸdN,—Šî¡Ç+”½cOMlû:a⬸ ~›b§ÉçÄŠÑ~í­pÎø•´5z:qÔÉ¢¨ü×Ms»S ?k•Ý©Ãæö`ŸK;ª™¢¯Þú­5ú8׈§œÿ¥ïM)ÉÇU¾ÐyJWœ^mâ´aK¶ÿE—áw'ØàÑÛ•ns :qO¯¢Ž¦ƒˆ'äÐOr{8ª¾A_Ó‰V6]FwÂÚØ>ÂM|°wK¥§¿Röâ7áöía¡Äö¸sC:ÕÂA¹ 0†S¢ùµCJ±t$[@«Z< (¤a›H Ì$RÍÊ+ x„Nq¥‚äqµYÙOWE(žJsÒã1‚š×Y„泜dê0jo5—Õæêf>)ÅÕøP–ðTS$#´Zhˆ7‚Ræ·NCÕüÓZ§Nš*ÿÕt³ß’ ®¦•½Ì®ê4´ëT+ÞÂØùVF g*£üœ CO§tµî…éþÝ=„Æ õÂ|.Z$ Ÿä–pTäã[ö\øóaÆÛ’r„ÓŸ”÷8/Úk†£/Ÿ -]8wÉkD ¡k´9f±a¡ÄöxŽ[ÀQÔ8CJ±t$[@+Aî–P9ÆÆTÚ<ÒMË. ¼‡í‘4qµ1ãt§A§-¸ÎcHœ:›$ma<É%Å¡:âá‚mJxª)ºI¢ÁâvÀc¤¨ p†ù"¦ŽîÁ4ôœœôœ¨a|·hwúT«N´ÝËB…S½µ!†=@â”JÔ¬î"Ô¯ºGAÝ 7€~’O˜ÂQ…ùF]Çqïè„ñ:ŠX‹‹ýùŽaª‹¾AI‡o/N{‘C™&ªp?z% ÅÔ#Õ „nˆs·ÅÒ‘l­øä­åeœíYYž.5c([~‹Lì‹a’ÇÕbêQ¸w¦“Œ¸'ÒIÿò$ÔßRM“ÏWŽJK~Îi?B¿£žQò!õ~†ý@Î=2u’̬ •xÕEîfý¯o¿vÐ3ÕDÅï>pv‘U£ ®º`w‚‚̽—ÂÒoÛÕ3ÑÄ+K>H2Ù†¬%m -ýñ[ ñý$‡°„£*羪k¨*EOͬ…çE¦ÍË&0÷/aX(–}[œ¾~Í.ýŒð·ŸYÓÃ#JxÌ,Õ74ÕÕàJ',$EëцüÙC<žT_E—ãjÕ–“²B0KòiâÝ»ÎG™çÎ¥ÅV)ëª÷êeaϵÏ쬺{÷ƒRB:Ͼ&åÇN?L+ ÔtÕŒè$yE¦î¿´öþóÅÉ„¬¬˜ºžæ Øÿ$🜠LE·}'ûAç~ë¨Ó(Ñv›ÄJ}th¬ÏÐOrK8ªU[½Ã¶Ý1uôV¯S ÃÆ„©D.¯ $DØèêµ ÃB±ô¨0|÷ÅØø1s¿ ©Ð·w±Bä~f–ŽêšêlpÜvCÍSuºlÑ„T"ì,rveŠ«UXN²’gBPqpÌÎo]£êfI>M ÃM{˜Î:ÆÃ­BªÓ‚š¦Ž¾©s¨ÛÉpF'Ã:M Wç[ø Áîê ϪO«>"Ç´l¸ÊV¥nšèhÕÍvIçG6F/ÍÊ ¨"€ ÐOrK8*ÜzòŠ˜ÉL¹½“ê\*XÂBIØ#…Éïà!µöt _’X:’- פ$×: joædŠ«ÅÔ¬$i–“ŒaN~?:ùqÒ$™íââEª³$:ÕŸ.\hê!|δgÏÆ0EmëýŠÊw"ÄÑOì®7˜|y°8a÷‡Â¯[§–ä@¤BpmI¤»þDj•”É늄µ¨º†F¶kè'ø¤ÌŠ»¹ÌýKSµ÷éçsŽV7õˆš“'3J| ±IZ}½IVÿ»“Òç-Ö²»Þ`òåA#Òù»¦Z’{‘‘îN()#|ÿN6¯+bk ú|Ù®9 Ÿà“fùoäüMÉ/˵Œº öœåãi ¾ÎgF~~~SÀ.(Ý©»Òiv×L¾á¬š˜zuúgÄêzƒÅ—Hç#,þPXjIîDf$ww"›×±µ¬@<5'@?’‚a¸º¥/gÕ¤t BýÄâzƒÅ— “ó&(,µ$÷"3’»;‘ÍëÊ'˜Ѐ€~$…»þÄ"€O¡-,®7X|y°Àâ……ú::‘&w'Ýâ!ާ|$íU±ú æLh@@?µl¼Åmöh(xûŸµMìÆLüÞ6²¸Þ`ñåÁ‹?êéè¤Ö¹?ãÆäîdµoÿo/quá×’m0 2à“ú©e»bPSøJÐ;°NGÛ¶Q(¸sê×—“îÙxØÓö—Ï­úëÔ^[¡ìÍs¿Ý¿Tlèá¬Á¯…[u³Ò|Ÿvúò?Ég”L&ö¨û?‡L;wõïÈÂÉÕ®uÅ³Ä )Wßb\»€~9,ýëtÜ/çÿëÙ»JÅVí-­ºo YÐÔƒjHòÝì¡é8N\‰nýI¾%6ª¼83dÈV·>vi³võ×颅.R b~R’kcô(€~’[W›ïå9v7PÃ0²%›^"ô!ž~2u´¡j}:†ÞÞFh¿V¿®ºJ¦cÕýs“øï¨Gß:Ý%ÿõa˜ƒ}U S±pB)?ŠiE[òÿÍ™ßò1 Û -kå‰ô“Ü´ÿ© ÷Ô¹¯$m$ß>ºó×ó×ïË* Äû:•'XË ÖïWÂÍfp_“M®±=GôÈ…K—ݨÄbÖŒìĹ>¨Ú ÷‹§³H²òáñ-{NÝxøêƒ²QWG7ﬕ¸—Áp¼˜¢v».Ö:y©OrŠ0}[×ÀðÙöx2„²~Q¾!sjV/êŽr ª \£¹­ã8Ÿ9#L…ZFÜO_Á2íhÄîs<|U„éuî5tä÷1¶º’•@J­:ö4ÉRÄÚRfuµÃ5|ßÇTfd¢ƒ&¼¡2uÊ8˜ªÇg¶Ç¼þ×ËR•öÝŽ÷?ÖRQÔìø0Ýðªï¼‡(†­(øšŒkK}*¯¿LV\=¸n§Ls©³ÖàÍIÑþ·Ñù£k>\ŒV‰µ=?rB|vê-´êÈ›¤‘w]5;i>¿ŒšOì/_¼95iFôÍs‰Ó”iûíË^aqc쌕ŠR·|q;³gÒ:ƒšZ^›÷}ÝMO©î5gýœè+ÿ6úèd ¥¼g÷®›‡l÷K2Tåo"Lí¦ü|˸9‰»|â&%y×i™$Óýs(m¡1>$`Çüâÿt2¡#÷¢ÇÔ)ã`ÎzùmËÅ<¶ÝÕéõS7̹«xáà‘³c¿WÏyaX¿0´¤âeà+´ß˜ú‚‰ãH)¬ŸÐÅœi.Áxåg…áO³ò~”Ç÷' ‘!ošÒœ±Oè'€C÷UQICeï].ðÇ£B7+÷i·¨4Þ©—pžvêÏ︑’=ò‹vj¨¼8/;ã¿láÞ9È·¹¯¢äŠÚ‘‡p|õ85 3ù*E/ÊŽBò ¬ì§«€Æ"ÄY¯ æ¤ÇcD4BgªÑO¡LùÕË~ŠBÓh{ß ¯éD+ÊrÝ Gh#¿ÖÆ©ÝôD}aã.‡ëšÌÍ*01íÔßý‡þu÷ÖTƒ¤¥B‰% TW?¡G…”¶hi™Dê£Yy…Щnl2Ù£7çPƒYæÝUô†l@¼r"w¢1sÄÎN†·@ì¼ìÂ5Ñ‚Ò,ÿç(¡Ã³…9Ôe^3ÜNòËE‰ixìo"•ÿÄLâˆ']÷­ûhKž±ô“Ü´ÿI$ºý~ïñ?NüÍðŸH½|2‘˜²ž™cá˜å¨¡Ø½¿Ó“/œüH*¨é´12ë,z €G„n"ô!+¡¬KÜ×®¼#kîëe„j>¼Í8+¼‡Q,8iœÄ) B 6b]ë7õŽ£ŸÈÇ'¶ì¹ðçÃŒ·%刻å¡{‚µ¬®W›æ˜u3ô{Î'«²yßq3WÎì­ ÉP¹Bˆ¡:âlÿ!„[¾XBåGSióH#4-»$ðJ´gé”É~žÛ`˜‹KXMógªQL³¦þóB]Ô&| òüÿ%×ÿ¤ýcW¥˜æÂ…''H²VûbßD‘T=в ¡©ŽÚpØ×š®Õg¬Aý$‡0©¥:vÁC¼­ã©Z«“E]õ,{´ì)ÝXh Ì·G7ï£uOѾŽu³œºˆÐ#„¾à=äÚj}wÜ3ÀäÓ„ªÖ½¦:ïÉ•0ߨë8î0ÞBG+pqñà}þŠCslÈO£ó³3r²Ÿ_ùaÝéÃK7ÎLZ*íP…!É[ËË8÷1³<]jª•-¿E&öÅ0¦N™ì£:‰Pä¥K6õþÔ¯ç¼çnÙÍxóþû„ï˹ l–¢ª0Í#(Íô¡œ$•9µþ¬"ÛH¤Å{Íýù-R¸*á{‡še­ Ÿ1` }CNüx"îȱ )áo+•tÛu´¶ÎÍRö:º8ð‹ŸÛ¶2UîÃfÎðw—ú“åCÌ ×D(¶¶u[úoóøª­ÞaÛŽî˜:z«„ëNÕlq&Å-]Ÿ’^Hj›ØtóõG 1Ô³aÂqÛ º|‹î[4!•;‹œ]™:e²ã.q±XÜÞS›¼^W¨vvp>n;S׫}û/8x{‰« µ‹¼AÞdðcG‚ç×êG†íÝLs™±kVö¦„K¾®‰¨î;%Û˜Í-y?Ü}X8ÏBOYª3ö ýˆÓè1~>õ#dÇÔûxõñQEð“ž)ÍdA·½“WÄL9öt{ŒCýOA²¡2ÇUÈ›$¦½™_©SæÁàf.3WºÌ; m÷ÐxwÆ2õœWu#­c’’Ø[`œKÇI+b&‰lVÂ7‘ý¿Gõ¥8cŸÐOÒú @:@?MFK Üô€´€~ÐOŸìq”êS½ž-@Kô“BëáÊêÚFlû?y°…b³pØ rè'¹%éòŪù÷ή ›yâ¯-ÇÐ>ïa}ø{wUÕÿü{/0‚ ‚¦ ˜¢"H.QOæ–Û˜Êâ ŠhA(à¾â†Ž n€H`©™ `à‚&P’–Öówù™’>Tú¸V.èã‚xïFfapã~Þ/^—;çž{ιƒ2Μ™€ZB~ªÏŒL­ßì6&)vïÀY{#Ï_hIO?ËÆŸËXýùÞŸ ¯”2ÖíÞé?h„·»kÅ[ëò?G=â8ÖüµV®=‡†„}h¯ò‘CS\"›ÎƒC…õ²Pû4"ž\´{]ZVÁ©K÷4wî5<4ÂËÑøåøÐ"¨[uõܽj;Ï¢ÍW…þc~¸m{Z9÷ÎÚü¥êŸì\ã ¸¯ÎÎéþoÖ8hÏ>ßúŸU? ?ÕL×(¢Ét((ªÊ¡åaIyÄŽKÊðkmrãü‰‚Ìprݬ8t47@’æÞ¥¥I陸‘SV½üvþ²Ê·ô7 IÝ>Ìö¯lßÀ¤%>{sÆŠª´üxOÀ„µ×ŸøŒ”¶÷úÇ„3Þ¿Å݈àTûUÏ'Ç<‡^øòó·¦çüðï‹7ÊY +Û–mb£ÂŸ]ZGŸÿ¼Œ#[‰¤ýóï]¡½DÒ´ÿÜ¿RÂÏû¬S`!#? âï’ŸÔ\”m¬Z=¸~õ–}ÛîÞ³º+u‹©ØiÒqŠô×ý²’(Vy4z„½ÃØ ‹¦¤é7%ÒØ)UZNŠ+!–ÔÁ’aõ‹¡˜€’5ëÉ]ý}ÿà•ñ¬W<‹ÜS·mòüé8ŸÈ=·ÛŽ_º*ªóæü’?NÊJ%zù‰þvžeÉ-é½\æ½äwÉûÿû7í{÷EâÅ@~‚ßäÛîêVDôø4ñpôTY¬µê64xAð»²)"¾è›ø û.¼ø÷Ý2ªøÐǪ'º<õ=¨j~Ú'ßJÄbIeÙn"ä'€W›a«HÓ3tJÒBõÙ#KªTSÞÔÑKÅØøòÂñ²^¹/z£COÏ È.&*m*pdÒ¤M·¦Eù:VÍ%wGæÜamW%î¬8dÕÒ¥ŸKÕ~U¯ˆ´¯…xªGMk!žÌùiLÑ‚2"ÖuAce‰îuꃬQ¿Úo¼À•<Δ-(¢}íHHŸàØÙ¶§†?,¼mr³øbIñ…¼YËvm›œ?[Z. M,`Ù ¤ôá­3·ÄbŸ*Ÿœ]HÔ©â»T?õ–‡e­9p £Àft„ ¦«4f#³€¸#­M4ÿ¢Ð¶T€ã4Ô×Ñ‹Âã~“’o5 KÛéeûW–O`Ò䣴/ã£ÊÇAѨ5_ù;‹.Ä ËI IóͪÒBB4±PT'mwŒ†+2x-DµƒI“Å'š ²îHw_O ²æýjm¼ÁÙ߯eiD1ºî—zù©>ãÊfÚ—Íý›³òˆ_ÐH½ÂØÕ»Â‡õìhïdÓ¨˜h—ôÿ¢¼L¾mhnjÄ•e«}Þ:Ѽ—v ³½ž=ŸdÿÙ&ªWaŸµòòôÔ“ÇtjB¥%¿/ÈJµ¥î.^ CVhëïl­ý¯,íKL tâg7ˆeµS¶y3)‘>š¤¬3ÎE:Þ1„(‡(¨jd9,ß*W)çrT[•+2x-DµƒùU¾m¥R¢»/Uô«½q•áòS½Õ¯ß‘yã×Z´é8vî¬Q}4®ì‹ïË6{ùñ?nó–v]y†NV”/L’¬ÍøÌHB•y§'î'z$gÜÔÕsRôøª‹Ç¥XqZ*“öeöŠ ôkÌZ´së=pèº:¼:x¡j¼*@'SÔÚ— T4mÑa@pàdïš=2ì¿æg®ÙýEzŽ$(ñúC£†›;vmßñ-mõk¿B—ñvܧÿýåÓ#ü×ݦھjÓ¯¶ÆyþHè/Ä‘}Âû5{=€üÕ¨ýªKïè/¼«iSµDGLßyɾéî…a¾7&ê½1N¬Ò®Þ¾å9AúU}#¤s-„ŽŽô ôûl¼ÈãË¿£æžË_êT£u5íW[ãçæFýò¢×µÞK­‘Ÿ^I¦£÷åŽ~‘pZšÿ*}2NB~¨ä§W[Ðâƒ/zPc/ê#_­R~™!?½ÚRç}ð¢‡P—ð'¼Ÿ^y7oÞ|ÑCä'€šA~¨ä'€šA~})>2¯ãC~‚Jø_ÚðåçnMÏùáß…o”³V¶-Ú:ÅFiøáçÌà_\|ù©m±Ÿï>rîÚC#óF6¯Û9¤Ä-y|N÷ƒÇ1¢FÍÞ|«»×„ÍžíÛ‚ ùQù©Rÿ-äâP{<:Î'rÏí¶ã—®Šêü†9§ä‡²R‰^|~2Ø™ñ“7³cRvŽrݽôë™ /zDu@ú{ž/ðOaœßÔÌØ#æs5}Z Ôä'¨ÆÝÅ‘9wXÛUI£;+æ3¬Zºôñsé£8Êó‹v¯KË*8ué^ƒæÎ½†‡Fx9Ë?M9)"Å‘I“6Ý>šåëÈè=ùÛÿy°8êDZ毵rí94$ìC{†QÖTý+QG˪_!b©«ƒ…1ËX9¸yNÙ¤qYDctß!ü¹ŒÕŸïý©ðJ)cÝîþƒFx»»Z龪ÜKUï|- Ö?ÈO‚£ço–§þ‹l:]ÖËBxŸ R ²¨ÕIóÑÇ{&¬½ÎøÄg¤´½0Ð?&ì˜ñþ-îFÊ ¢Qk¾òw]ˆ–“’曤ÏYfqG:[›TüÚ9š IsïÒÒ¤ôLüÈ)«^~;™­ô1[ý¡½Ú–¤Wó=QäðÉý¾ãâääÒ¥k«Ê_q§ë×Ý w¤ºî4â‹â3GháŽÝó}´>czâ§ùú×ÑxEê—ÿG`¿Ð‹…¡?ЮÞD91IJä«ùã“xîÁ?§ãd{mæU{‡,KÊ#v\R†_k“çOd†“ëf}î’ßçêw¾Žëä'ÁÑó7‹‚YHêöa¶eû&-ñ±Ø›3VôœG /ƒÃòmû'7•_)8“âJ¤ês‚:X2L£~1P²f=¹‡)OçbÍ0¼cˆôñŸ((HŸ³bý­UþfëU1ãÒ¤ãiÏôËJi£­¶e…™+FÞ”l;Yzæ»g¾“ÅËÞs·Íïkòä¸ i·à}+#ò"úBº?_¶?œá’ˆöEè_G÷)/¿õÚ!äµïÑ ÷ò"¾]- ²^㵬r”qïõë;U{‡\”·jõàúÕ[vöm»{Ïê®Ò˜®{@ Ö+ÈOõV• p%=³(D°7c»aÑ”4ýá¦D;åY^R݈ýNä$¿©œxPØ'ßJÄbI廉*«8Ë· ÓPºeYNϳœTÂ_ôMü†ý?^üûn™lFæ„¶ÑVÛ²‚Q×àØŒÑÅÿ)˳ÒañúשöŠ”—Ï4œ2[´wYÙžÈóÍ/Hï>®o˜ö‰!é¦üîÅë>–.Xplî·jî=>M<=U¶/jÕmhð‚àw•N뺴ÑÙ`½‚üTo©¯WÐó7‹‚ËSß󈟄(Â'É9Úì¤áè¢,¢5tÔò?«©¼Ú³TIB X6()}xëÆÆÌ-±Ø§"rh¢ËÒH×¢½›ôë×<ñL¢såœ41Ü/ãy‘¬…³º¯HãÕU[§FWÔ'¹ý²ñE†¬g‰¥îÓÔW\¨2¶°ï=?1©ÿÄ’™©eyAÒKÐq‡Xx-Ú4äfñÅ’â y³–íÚ6;68¶>÷€6Ú¬Ÿ§F¿³ åKäߥú=Û‘À˪ñ²¥=†ÌùaÂÌ]ñSû;½&º÷_Õ£¡3ì³V^žžzrã˜NM¨´ä÷ãYi££¶èn³Fg•É· ÍM¸Ò¢ìÕCÎWȲÇð]M™µì7?Õß½·[{s¶´è´¬Èa¾âÑv–_÷çýH‡²³[gêuÕŽ+Ò åêáÜò„ÕuvõÜ Ó!Ξ.ï˜V”ÐB×2võ®ða=;Ú;Ù4*&ÚEÔ@Ñ‚ž÷€ú¯­ÁúùIpjô;kÞÎK;†Ù^Ï–ýNšø|G / †ý×üÌ5»¿HÏ‘%^hÔ°qsÇ®í;¾¥8ÊŠÓR™´/³W¥_{dÖ¢[ïC×UÛfÎZ˜$Y›ñ™ÿµYšÅ¡Ý#·é!¦'óîz¶ü¾éŸß&ço(¹QúÙ´rsŸ8vbÅôZ`Ê'Å+Ò„zäöI¡ÚÑqEêÆ4tIãóïp\»ù¦zµÿújòùí̧?RvwH|_þë´ÙËÿq›·´ë2È3t²¢\Ï{@ýÎ×Ö`ýƒü$85úu?9Ð#™8㦮ž“¢Çcñ8€p1 ßòœ ýÒtˆaÄÁ ÄÁꇪ¼â]õ¦þgI±.~ó’ý4ÌÒ;ú o}Ç£*|ÎRm‡˜6¾ó’5¿ÆMulµÙ×qEšß«Ï­Ñ^jµ¤‘–§ªœÅX'( tÜ!V½Â¤_jåzÞêw¾¶ëä§zHýÿžÁ¿³ð–›/wÿBFànŽ ©Ÿï¥ô*B~xyñüƒžÁŒe{÷¹ËÃmð&|/ ä'€—Ø⩀—òh†ÿ®Ú ?Ô ò@Í ?½Ú‚|ÑCä§WXê¼^ô^jsW¤H¦"ݹyó¦²ÐÚÚZysejºt;-È[ãéÚ ?°HÓ46!3¼„ŸÔù,^¼¢Úò³ëÅ€ÁÀ« ù „B9ó„ð`¾üüÁ­é9?ü»ðârÖÂʶ¥C[§Ø¨ðç?ÕDW¨“,¢l–ãQ£fo¾ÕÝkBÈÀfÏöý–¥^]ÈO ˜y0ÏŸŽó‰Üs»íø¥«¢:¿aÎß)ùãÄ¡¬T¢ŸžQæ6Ë—?ø§0Îojfìó¹cžE/P ?€HÓêú'ÐÓÝÅ‘9wXÛUI£;+æc¬Zºôñsé£8ZeBH‘løŸ‹£qkþZ+מCCÂ>´—p›jeNdÓyp袰^*Ÿé¦¨À‘I“6Ý>šåë¨ï P•¹ƒ§vcÓ¦®DùÄeÉòÏ?.Ú½.-«àÔ¥{ š;÷áåh,3.cõç{*¼RÊX·{§ÿ Þî®VzFyW¨ÕÖ ¼lŸ@X0 `€„"–¢:éªc·q¤³µIEÜ9š IsïÒÒ¤ôLüÈ)«^~;™meåÔíÃlÿÊö LZâc±7glåÇ“‹F­ùÊßYt!~hXNJHšo~þãä¸:xºçüs:N¶×fž¢äñž€ k¯3>ñ)mï ô ;f¼‹»‘ôÐò°¤¼uccæ–XìS¢ž($êTñ]ªŸê!–1ð98†“Æ”ûeÉkååé©'7ŽéÔ„JK~?^•6:j‹´æØÕ»Â‡õìhïdÓ¨˜hQƒ Æ™ã Yöø¾«iE2ÓÖ ¼lŸ@(°þ À` û¯ù™kv‘ž# J¼þШaãæŽ]Ûw|K[ý… A’µŸùI¨2ïôÄýä@d⌛ºzNŠ/ÒX§¦S>)^‘~ Ô#‡4wZ#¯¯v!ŸßÎ|ú#e÷`Åi©LÚ—Ù+‚Ò¯=2kÑέ÷À¡ëÕâûò_§Í^~üÛ¼¥]—Až¡“k4˜Å¡Ý#·é!¦'ÏHjk^6ÈO ˜y¨ ¦á[ž¤_©/Eb]üæ%ûéhMãê¥*…ÚÞz@[9ÓÆw^²oµ§èÙ,c ,`ÖA¼@¬~–Ug¯0é—¡ƒ±ôŽþâéßIÚ„— òÖ?@@~aÁ,ÔòÖ?¼ ðYoP? ?P`æ ê òÖ?@@~aÁ,ÔòÖ?@]A~¡ÀÌÔä'¬x™)>“øåyÞË6x© ?°` À0|ùùƒ[Ós~øwáÅ嬅•mK‡¶N±QáÏ$ŠX#ÅqŒ¨Q³7ßêî5!d`3?u¸F"KòÖ?ŒçOÇùDî¹ÝvüÒUQß0çï”üqâPV*Ñ ÈO Ò(×?ø§0Îojfìó¹c^ÔH@˜Ÿ@(0ó`°»‹#sî°¶«’FwVLóXµtéãçÒGqT9!¤ ˜¤á,ŽzÄq¬ùk­\{ ûОaªTæD6‡. ëeÁTÎ)*pdÒ¤M·¦Eù:jXbŒM›ºFå—E$ËO<ÿ¸h÷º´¬‚S—î5hîÜkxh„—£±¼qþ\ÆêÏ÷þTx¥”±n÷NÿA#¼Ý]­HmbIã<“r̪Gµ5ü‚õO†I( b)ª“®:fqG:[›TÄ£¹’4÷.-MJÏÄœ²úèå·ó—ÙVVIÝ>Ìö¯lßÀ¤%>{sÆŠ”‡D£Ö|åï,º?4,'%$Í7?H[<÷àŸÓq²½6ó%÷LX{ñ‰ÏHi{ÿ` LØ1ãý[ܤ‡–‡%å;.)ïµÉó' 2ÃÉu³â,Ž«æ¹?i`RÏU:!@~aÁ,€Ë·íŸÜTÎǨæ‰Xgk•i¤nQ#;M:N‘V¤_VJ«(F°7c»aÑ”4ýá¦D;Ey(fœ‹´Þ1„(‡(Hs~ª\eÜ{ýúŠd—WB,;'¨ƒ%Ã4êC1%kÖ“{˜ôÐEÙq«V®_½egß¶»÷¬î*™ÔìîÓÙ ÔÈO Xÿ`°nD‡ˆ~'r’ßTÎǨrR O|Ñ7ñöÿ\xñï»eÒ@#/;¡ZÙå©ïyD•ùÉY¾e˜†Ò-ËrÚ†$CùÝ‹‡W},9\°àØÜ-n²Â}òC±XRYq7‘,?­ˆèñiâá該}Q«nCƒ¿kô¤NÅC!ÏkíNΡþC~¡ÀÌ€Á"ÜèÐq’œ£ÍNzÕ—„&°lPRúðÖ™[b±OEˆz¢¨SÅw©~ª‡XFßWÒ[Ø÷žŸ˜ÔbÉÌÔ²¼ à !Ê"Zsà@GµF,¼mr³øbIñ…¼YËvm›œ?[ZÎpÒÌt¿ŒçE²SÎêÙµŽA Ÿ@@°þ À0—-í1dÎfÚßé5ѽÿê®_&ß6475âJ‹²#Ô+ÌÛyiÇ0ÛëÙóI¶ài¢Ác˜qöpyÇ´â „:Ã>kååé©'7ŽéÔ„JK~?^•6:j‹´æØÕ»Â‡õìhïdÓ¨˜hQE >DÛY~ÝŸ÷#ÊÎn©­#gŽ+dÙãø®¦ÉL[ƒ ÈO ,˜…0Ãþk~æšÝ_¤çH‚¯?4jظ¹c×ößÒVaBdmÆgþCªÌ;=q?9Ð#™8㦮ž“¢Ç‹4ÖÑÓë«]Èç·3ŸþHÙ=XqZ*“öeöŠ ôkÌZ´së=pè:Eµø¾ü×i³—ÿã6oi×egèdEy`Ê'Å+Ò„zäæ¡*,í¹åèL1=Yõ¥­Aä' ¬¨ ¦á[ž¤_©¿«$ëâ7/ÙOGk߈²J¡¶7«¬RÎX'( †u/«ŸeÕÙ+Lú¥Vδñ—ì[mG–ÞÑ_<ý›C[ƒ ÈO ˜y€º‚ü‚õOP'Ÿ@X0 ðbá#ä ~@~¡Àú'¨+ÈO ˜y€º‚ü‚õOP'Ÿ@X0 µ‡üBõOPWŸ@(0ó ŠÏ6Æ ýà™B~Áú'è&¾üÔ¶ØÏw9wí¡‘y#›×íRâ–¨V“â8FÔ¨Ù›ou÷š2°™ìãJÏæïÎÉ?ôóéó7™7oûvŸáAãz7cmå·~Ý›‘u àØ®Þg­šµry§ßðàaMm£ªÍù „³Pµtfüä Å옔£Dw/ýúCfB• ÒP—?ø§0Îojfìó¹c¤…!_ÿw¬Wð’ЖMŒïþgß”ðDÉw¿9äǾ©­<|Ïÿ‚½gúÎx½!ûÏ‚…a+“~Ì5Éßå¡Ï‘Šà9@~¡Àú'€:±ø K],ŒYÆÊÁÍsÊ&õ:Œ±iS×¢|Ⲉdùikôø'­Û{®¡Do:6—èkmå›gû(ËÅ‹iåúŸ´#½òÓS³eç2V¾÷§Â+¥Œu»wúáíîj¥œ'{ª&ÿ¸h÷º´¬‚S—î5hîÜkxh„—£1ÃʼšG&MÚtûhZ”¯#£ÿY„TWï ?P`æ  Nt"úž(røäþßqqrréÒµS¥Ï=øçtœl¯Í< MÜÚ,ÿÖGŸr®üΕ£Ë¤;Æï/5`´ËÃ’òˆ—”á×ÚäÆù™áäºYeÔŸ¿{¼'`ÂÚëŒO|FJÛûýcÂŽïßân¤¬ µæ+gÑ…ø¡a9)!i¾ùAúœe·q¤³µIÕ»^uÈO XÿP{3WŒ¼)Ùv²ôÌw;Ï|'[êdÙ{î¶ù}M”*WA÷^¿¾S•Óùß-ÅqF}₪-¯lʲï’(GF{Q¶±jõàúÕ[vöm»{Ïê®­fR\ ±ìœ – Ó¨_ Å”¬YOîaÊ 1ã\¬†w !Ê!J' Òç¬Xgká©B~aÁ,@-u ŽÍ]üŸÂsçÎü’¹)ïjiDB}*+äææ–ß½xxÕÇ’Ã ŽÍÝâVy.÷{úääÓ$ê1ãë(W¦ÚriSÜ£[ÿ=´ä“eßÍõ^~¦Ú”UuVDôø4ñpôTY µê64xAð»Fkî“o%b±¤²l7Qer–o¦¡t˲œžg9!<ÕSÈO XÿPW¤¢E{7é×®yâ™DçªT0¶°ï=?1©ÿÄ’™©eyA"y†¸÷ïu³v^§×†-Ý0ñ_ ••µ•+°&V­ú̧e#èV¢†§üªcáµhÓ›ÅKŠ/äÍZ¶kÛìØàüÙk!Ê"Zsà@G-‰‡ÕT^íYP_!?P`æ  NøÍOõwïíÖÁÞÆœ--:-+r˜¯^a:ÄÙSÀåÓŠƒZеoŽ‹=TFC“×x·e•Õ´•‰Ù2¬w—7_3}|ûÏC‹dEö³ íØÕ»Â‡õìhïdÓ¨˜hQE¹3Dzìñ|×'ï‰:Ã>kååé©'7ŽéÔ„JK~?^•6:j‹îö ; êä'¬0Ïß#Ù:'3ÅÍ÷Mÿü69CÉÒ‡¼È¦•›ûı4žøújòùí̧?Rvÿ•?˲T˜60åI…ÜÜ\må L¾úrÞš“çoñf6-Ûõ5Óo¬›Æ^T_æ¦þ·ø¾ü×i³—ÿã6oi×egèdEùâÐî‘[ŽÎô+ÏbÅi©LÚ—Ù+‚Ò¯=2kÑέ÷À¡ëª½s ; êä'ÌBÔÏ=üëÿEËö¬*žö Ÿ£õupUâ c ,Ðöê}måÖ]‡…K¿tŽMŸ6­:{…I¿ÔêXzGñô¯†aÄÁ ÄÁÕv¤zSÿ³ žA~¡Àú'ôà.²jù–8ptÄ{/z,/ä' Ì< ?“( ?€`ýÔ ä'ÌB@í!?P`ýÔä' Ì<@]A~Áú'¨ÈO ,˜…€ÚC~¡Àú'€EñáŠ÷“TÝÖ}=»–ŸõUÀËù „3OSÄ®ûÖü…6Ê¿öóûQö‰uÏ9Fìî×/e]2ÄYV|t_:I<â ÇEäç{<Ï‘€!?€`ý@­úä{>³#K-<ÿ}Ð!"¶Úsdê6`¹Ïe–ѯ3nRrEÉÍ¿J‡ÂÎu¯ó¾´ÁÌ ?°` À`ƒéö’%7ûÌ“¥–›K–Ü¡Á,íW­ÀÿZ¯^ÈO XÿPKS4ÊYüCTFO:|/˜rgñSùéhn€$ͽKK“Ò3ñ#§¬>zùíüe¶:|¼'`ÂÚëŒO|FJÛûýcÂŽïßân¤¬`·q¤³µÉSñ…aÞ—4 ™.M»B›[]™r™eÉDò¾ZÊY–”G츤 ¿Ö&7Ο(È '×ÍŠCWµ²ÁW¡L?å'}¦~s›ZÔæêàUüB™'€Úê™ò.ù-Zv+ƒÝ¢míI£Ÿ>Þ-j¤b§IÇ)Ò\A¿¬$ŠÕÑ^R\ ±ìœ – Ó¨_ Å”¬YOîaÊ ±þÎÖj©HªËJ мwuòJóü¤"Öbeõje«V®_½egß¶»÷¬î*M´ª¦W¡P~:ÙWž¬¼6Öòêà•€ü‚õOµÁ0¶KÂEâµAAD¢ˆÅ¶O?öóEßÄoØÿsáÅ¿ï–Isƒ¼ì„î÷É·±XRY¶›¨2a8i‹VYr!·nL>Ë/Ÿu“8²\ÕAC­=>M<=UÖ ¨U·¡Á ‚ßUNÿT<üñ¬gG{'›FÅD»ˆ(Ê}ˆ¶³üº?ïG:”Ý:³–W1.ì«ë,ÛuÚö=ÖÕÕÁËù „3OÏÔ„ ÉÚŒÏü‡$T;có+NKeÒ¾Ì^”~í‘Y‹vn½]§o¶«Úp>°,ǵY¥eyw|_þë´ÙËÿq›·´ë2È3t²¢<0å“âéB=rÔÞ€Á€«(–×<¹Ò{ÀÊŠÅŠòZ]¼ôŸ@@°þ À0Ú^`¯ZκøÍKö«¶šê>ðâàâ`ý{T9·©Æ™0Õ­:{…I¿ÔÏmã;/ÙWc³\…¶¡Öæêàå‡ü‚Y(¨=ä' ¬€º‚üB™'¨+ÈO Xÿuù „³PP{ÈO Xÿuù „3OPWŸ@@°þ êò f¡^*  Wùý$_õñƒÁŸ@(°þ À`Š”Àußš¿ÐFYø÷Â~~?Ê>º¤®ÒCfESRLj5{ó­î^B6{¶Ÿã‹,%(ÈO ˜y¨­CŸ|Ïgöad)„ç¿:DjWcÏ4mHçËüSç753öˆùÀÜ1Ï®/ä'¬¨Át{É’›}æ5‘îß\²ä fi¿ò(Ï—îŒß}¨ðÊ}ÑzzEŽp1‘‡-ålG&MÚtûhZ”¯cå!iÐQÖQÅѳMÒñ!tƦM]#ˆò‰Ë"#oóqÑîuiY§.ÝkÐܹ×ðÐ/GcE(<—±úó½?^)e¬Û½ÓÐowW+R›XÒ8ϤyüZ„zù „³P›² Q΢à¢2zÒ¡àƒÔxÁ”;‹+óÓã~“’o5 KÛéeûW–O`Ò䣴/ã£ÊGѨ5_ù;‹.Ä ËI IóÍRm\¡TsIµmšÄmélm¢õ‰9ž{ðÏé8Ù^›ymî ˜°ö:㟑ÒöþÁ@ÿ˜°cÆû·¸I-KÊ#v\R†_k“çOd†“ëfÅYWÍsǯ£AxÕ!?P`ý@mõLy—ü-»•A‹nÑ¿¶ö¤Ñ*?»A,»x¨ÃØ ‹¦¤é7“é£IÊ 1ã\¬†w !Ê!J' RjÛŒõw¶f´&›ÊUPÆ½×¯ï¤ØOŠ+‘¶9'¨ƒ%Ã4êC1%kÖ“{˜ôÐEÙq«V®_½egß¶»÷¬î*™Tÿ¨ÑÙ ¼ÚŸ@(0óPK c»$\$^$ >¢ˆÅ¶O—òm‡Š[.òm.QeÖq®h¤¡t˲œ>=VÛ¦“öðDò© ò»¯úXr¸`Á±¹[Üd…ûä‡$b±¤²ân"Y~ZÑãÓÄÃÑSeû¢V݆/~×èIЇKž×kä :„WòÖ?ÔëõYÛµAEÔ6Õ³êÒñ¾DßýFô–ìV¡¼ì©%J¬Î¬£QµmVËØÂ¾÷üĤþKf¦–å‰fQÑš:ªÇÂkѦ!7‹/–_È›µl×¶Ù±Áù³¥å 'ÍL÷Ëx^$;å¬þ½kkêä'ÌBÔü™œŸ¯ñPx@ƒo¿z4?ûÒ6OÛëÙó¥%V!jÔ¸3Dzìñ|WS¦®Ú”¹Cœ=\Þ1­8(¡…ΰÏZyyzêÉc:5¡Ò’ßd¥ŽÚ"­9võ®ða=;Ú;Ù4*&ÚEÔ@Ñ‚Ñv–_÷çýH‡²³[gê?~m B=€üBõOÏ”( c1»ú«í<×>4mÑa@pàdïš=Ä,í¹åèL1=Y…]û6^_íB>¿ùôGÊîÁŠÓR™´/³W¥_{dÖ¢[ïC×)ªÅ÷å¿N›½üø·yK».ƒ)^‘~ Ô#Gç6¨_[ƒP ?P`æ À`ÚÞ@µœa¾7&ê=Mo±TåtÕ›ªû–ÞÑ_<ýTÿ6ue¬” Ã:ˆƒˆƒÕϲêì&ýR+gÚøÎKö­¶#õñkkêä'¬€:ü‚Y(¨=ä' ¬€º‚üB™'¨+ÈO Xÿuù „³PP{ÈO Xÿuù „3OPWŸ@@°þ „¬üÈg³“öŸºò?Žesss }˜ â-@U÷AÈO ,˜…0_~j[ì络»öÐȼ‘Íëv)qKžiЇs)ŽcDš½ùVw¯ !›Õøˆ_-Ï:ÄÄFeždÙ¹»r?0×õA4 ä' ¬0Ø™ñ“7³cRvŽrݽôë™ ϧ_i’àËüSç753öˆùÀ\MŸäzû^¾U†'Ì6Õòfž ¶ø K],ŒYÆÊÁÍsÊ&Õ£üσÅQ8Ž5­•kÏ¡!aÚÑ9ïþn²3òsÊ*ð}ú|ƒ¬×奷'®h÷º´¬‚S—î5hîÜkxh„—£1£ub‰16mêA”O\ÑykµµÀŸËXýùÞŸ ¯”2ÖíÞé?h„·»«©ÌfIq"›ÎƒC…õ²PœÂ—îŒß}¨ðÊ}ÑzzEŽp1‘zê,2iÒ¦ÛGÓ¢|uudÀØ””Ý©ÎBé^ê?û§«ÉšeYÕöµMwé¸ PB~Áú'Ãt’O]DŸÜà;.NN.]º¶±ª|4=š IsïÒÒ¤ôLüÈ)«^~;™SB+{qåfN<†eèÊŒ[ÒGnûµN S¾;`ÂÚëŒO|FJÛûýcÂŽïßân¤­kž{ðÏé8Ù^›yŠ’Ç{´¶°<,)ØqI~­Mnœ?QN®›•M™…¤nfûW¶o`Ò‹½9cE²ÖvúMJ¾Õ0,m§—í_Y>I“Ò¾Œ*E£Ö|åï,º?4,'%$Í7?HGG´šj‡§ó§`[mûé¸ PB~aÁ,€f®yS²ídé™ïvžùN¶&ɲ÷Ümóûš(Žv‹©ØiÒqŠôÑ™~YIÛ|uúèÿ¾Œ/3Ù¤xÆ_Dl×Õ¯Kë$Å•ËÎ ê`É0úÅPL@Éšõ䦱ßÊUPÆ½×¯ï¤Ø×ÑÂEÙq«V®_½egß¶»÷¬îª­E°7c»aÑ”4ýá¦D+-%~vCÚÚâ¡vÊC7“é£IʳbƹX3 ïB”C”N¤£#ƒÇ¦MµÃSÒøSЧ u5ú òÖ?̨kplÆèâÿž;wæ—ÌMyWK $ê»Pzˆ/ú&~ÃþŸ /þ}·LñôÑ ÙÆrI?nHîžè{“&μFõ_b)+Þ'¯!‹%•Íï&ÒüØœ››[~÷âáUK,86w‹[5-¬ˆèñiâá該}Q«nCƒ¿[9kâòÔ÷<"Y~: ¿Ñá©C¹D•ÅY¾e˜†Ò-ËrŠBm<6mªž‚ÖŸ‚Ajô3,ä' Ì<Ô†4@´hï&ýúÀÃ5O<“蜢\šXÀ²AIéÃ[76fn‰Å>Їo†1>Šò·qî¿%Ò"¿i ä h†e­9p £~ëiŒ-ì{ÏOLê?±dfjY^ˆat´`áµhÓ›ÅKŠ/äÍZ¶kÛìØàüÙÊ£…ò'"åߥú) û}KôÑ[•‡¨¶Éj§¶Ž ›6ÕOAÛOÁ05ý òÖ?Æo~ª¿{o·ö6æliÑiY‘Ã|Å¡2ù¶¡¹©WZ”¡z;~2}½æ\x1ÇÑ”+ÏCgØg­¼<=õäÆ1šPiÉïÇ ²ÒFGmÑÑ;Ãtˆ³§€Ë;¦%´ÐÕÂØÕ»Â‡õìhïdÓ¨˜hQÕvæí¼´c˜íõlÙÈE£&* Ã|ûÕ£ùÙ—¶yV² ™Pí¢­#ƒÇ¦àÌq…,{üßÕ”©Ñðtü `ÀÏH€Ÿ@X0 `€÷Mÿü69CÉÒ‡¼È¦•›ûı‡&IÖf|æ?$AmƃaÜ% ÖÌ}$ ’!Of2XqZ*“öeöŠ ôkÌZ´së=pèºjðújòùí̧?Rv-Ä÷å¿N›½üø·yK».ƒ:ö–,e~âøTu³€¸#­Mžº»4 ÚKÖØ¼(ÈO Xÿ`˜™+FÞ”l;Yzæ»g¾#â8ËÞs·Íïk¢±ò‚÷­ŒÈ‹è éþ|Ùþp†K"ÚCT™Ÿ¢GØ›1ŒÝ°hJšþpS"R¥‘¤¸bÙ9A,¦Q¿Š (Y³žÜê©“|û“òv·¨‘Š&¥]äÒ/+‰bµ¬_e÷¸„£ì©´þ–m5¯ˆqdGü;žûê$ËrÜ;CŸ®ëïl­ß“‰Õ^²þMÁs€ü‚Y(u ŽÍ]üŸÂsçÎü’¹)ïjiDB}j¬ì@Ä0æŠýÖ²}–—-âUë¸<õ=¨j~Ú'ßJÄbIeÙn¢jóÓoòmwÅ ¾è›ø û.¼ø÷Ý2i4‘—Ðv¦ž•¥—3Ùš|oÓÖ%;‰³Z,{žp± ç·áf–X²šlôtÄqÒ;ñT{Éú7ÏòÖ?ÔÃ4lÑÞMúõ‡kžx&Ñ9m5Y•‡yVËC~¡ü9Aùw©~ê†e­9p f+ÁÉ_سâåo’ÐÄ– JJÞº±1sK,ö©ÈEšè_ÙzÑlb`9‘¤…lx¶KÍé“£òÚSmj0Ú§xÉð‚ ?P`æ À`~óSýÝ{»u°·1gK‹NËŠæ×¦Áy;/íf{=[ÖˆhÔDõ ¡3ì³V^žžzrã˜NM¨´ä÷ãYi££¶hk{({ýݲ¹sVñ ) ËäÛ†æ¦F\iQv„j}gŽ+dÙãø®¦Lµ•«zÛ—(]¶3¿½¢ U´1Mç¤;C»UíÚPÓK† ù ëŸ ó¾éŸß&ço(¹QúÙ´rsŸ8v¢Sm¼Ÿè‘LœqSWÏIÑã«.—bÅi©LÚ—Ù+‚Ò¯=2kÑέ÷À¡ë´µÖ¯ß‘yã×Z´é8vî¬Q}Þ|2³0!H²6ã3ÿ! jSI‹C»Gn9:ÓCLOq먬&  ·ý–|ïIA§YDK9ÎNë[¨Q@.^8ä'ÌB |ÎRm‡T_A¦Ï¾¶’*… Ã:ˆƒˆƒuL÷+ùY¿yÉ~YzGá­oå*Æ49?ÿé’>¹¹}ª›j‰út\2Þ°à%„üBõOPWŸ@(0óuù ëŸ^8<õò f¡ öŸ@(°þ ê òfž ® ?€`ýÔ ä'ÌB@í!?P`ýÀs6`Àzò‚;ÕýçÖé³kù¹]¼´Ÿ@(0ó`0¾üÔ¶ØÏw9wí¡‘y#›×íRâ–¼¨Áìî×/e]2ÄYV|N _:I<â ÇEäç{¼¨QÐ ?€`ý€aÎŒŸ¼¡˜“²s”ƒèî¥_ÈL¨i u8Uã>—MXF¿Î¸IÉM%7güJIJsÝë¶#0óÈO ,˜…0Àâ+Ò|B],ŒYÆÊÁÍsÊ&å!Å3Y œÈ¦óàÐEa½,ž|‚o•jªO~UœB&MÚtûhZ”¯£ìž\´{]ZVÁ©K÷4wî5<4ÂËѸJk}Kæ•M»Æ§5cž¿6µHÚŽñâ>U;âÏe¬þ|ïO…WJëvïô4ÂÛÝÕŠÔž}«r“ÿy°8êDZ毵rí94$ìC{½/G¡¢wí×R失WòÖ?¬Ñ÷D‘Ã'÷øŽ‹““K—®m¬žŠf!©Û‡Ùþ•혴ÄÇboÎXQµmŠF­ùÊßYt!~hXNJHšo~´ðñž€ k¯3>ñ)mï ô ;f¼‹»‘ê‰ ó¾¤Í|tiÚÚÜ’èÊ”Ë,K&’÷ÕRÎò°¤g©î _¯Z¨m¿ÊM†aÄÁ ÄÁÕ‰aš&ççëîÔª³W˜ôKýÜ6¾ó’}56˺øÍKöÓxHÏËQ¡ÖkÁÔÈO ,˜…€ÚC~¡Àú'¨+ÈO ˜yxðTòÖ?@@~aÁ,€nA‹¾è!¼Ÿ@(°þ @¼ÛèEàù9øËÃND~¡ÀÌÔä'¬€:ü‚Y(¨=ä' ¬0ÿø?¿¤gž:{áÎ#VdfeiÓ< T¯Ï†{9ÅÍ Qìp5lÚÔ¾sgOïŽÖÏéS~½O’¬>ÝÁ3‚üB™'ƒ]YµâÈmöÝðÕïÙš<ø«èÜá¯_ôˆê€4ÁðÞýïæ´´ü+M;J<_ôˆàU‚ü‚õO†Ù+ýOÃ’ƒmC–e6sé2B¢eÙ m×Å5°xÓŸèßÄ}O$ËO<ÿ¸äè¶ÃGÿßÕ¿[µv|ß{Àû¬z_Æ[¾íãéñ¶©üô¬â¿:|äDñÆÖ­Ût6 ‡£‘ÚYª0 õªC~aÁ,€Þ úh»dEû.Î-ìÞ|£³­Eå³]§ë\K¿ãÞ<”°t×K§hÔŠp‡Ÿ–eœØ°µÏ²Ñú×ù㸻gdoãûÿý*5õ«/ÿr™2¾‰òtã>ÓÇЦ¡1s}Mð×ÿùÕ¯4ñ-¢_¾ –¥žêϕݽ°Y¶×,´¢ähÔö=7¨ûŒ‡²ÿ›ÿE沋FŸ¿gTÙ× Ÿtkzçè´Í9Ÿ§˜½1@$;ëÇ™;öÝ1¼ðÓnMî‘Zyù,´‡ÊYOFHHNõòÖ?lðø3·í¿òà¢#Ò/i`jèè»Â³³òÄDǹ.êK´K¶ï,ÝïGÜ¢ˆFë_ÇqTÅ’y«±D?SÑ—DS”§èצ¡|²çµ°ýSÙÖ-e®£OgÉæÌ\ÅZV¹ Š}Û?²bÿி¥©kРÖf cÚe2eFÝÉN§÷F*ÏòìÞ\Ä0MÞŸH9«Ë¿ÛF¤…y{oKÏòzÿuå¡{{¿¦cÔGõòfž ƶñQÔÛ—/¹ôÇŸGöüçÆ½ß·§Pç°'Ç+&Zx^ÃLTS"†1SìÛÈöYiÔ`kR‡¿œŸ{àð…K%÷”SEñ9ÕÓ›?‰&Lƒ±[~h[‰Í –å¸wúi-“$ë¹û%Eóö=–],OP§å‡öE…X@T™ŸÞ¨øÞZ¾ý™H–ŸÎ*†QõPe~jŽðTï ?€`ý€ÁÆÔÊ®£ô«}·¶ÿ‰Š'ºPq@öì݃rž7–E„óê'²*ÑÕ#t×Ù»nÛï,ûþ„o¿ÞˆeîÄGM¯š¿T8Mtø6îÒ߉™ÒFÆjë±¢/³×ÛùÏ>8gÙ/v–/.½„ŽD§ˆ>Z’ÜRˉW‰ìdßÿ”ßzWQØN¡Š‰ZVú—Ž~¡@~aÁ,€R6í|ï_nv¯72e\)’ÙV,êJtœ¥ïJö·}Tò}ܳèý±|+25eø»%?-¯¦¶ÍŒNÜ„ÿ“',;ßê㦵ïkôå?vÜ>ª)}0âõSß\ÏÜöã~í-èîí«¿û)ë½QË”õ³,yßæÎ‘Ï¤ûF½ý…ýûŠÎ,Ïþ©D¶4J~ÈtŸ¶_縖ýïCÞ¡&¥^aÈO Xÿ`0GÑÅÓ9Gß(-+çÙF-Z¾ãÛÝãMÅ¡ž#nï8ð[bx!iŸªÐa{³ò VL8¨cÞé †}0Æüÿ¶Üç8{w‘^í7þ¤ -;_’x‚teÞ^äÏìüéè—›ßx,²iæèæüþlÕÊåû­ÛGÛøwG{¬XøeÔ¥³ùè¡¥ëö”[·n/&îi¤©+¯A·œú&Z@±ŠüÕ…üB™'ƒõ9IÛ!¦ù‡‘š_ã¦j³Ï: öˆ\m•Ú½Mt˜lÃÍ´<Wå,ÆbÖ¤'oÈÀ0¬ÍÛy¾ý‘ƵõÈ0fmúÒ¦¿^õÍzMø¸—¶æá•ü‚õOõ÷ðʱ¸8θóøF/z,PŸ!?°`  ãù‡ ÑÑdæàâ;¹oc¬.‚gù „ëŸê=†iðìVa­¨B~¡ÀÌ€>ü¾ý¢‡ðüüå a'"?€`ý€>ð ZÈO ,˜…€ÚC~¡Àú'¨+ÈO ˜y€º‚ü‚õOunÀ€Òmnn^õñË‚ü‚Y(€šÚݯ_˺dˆ³¬xG%¾t’xÄŽ‹ÈÏ÷xF*b É>ž˜5jöæ[ݽ&„ lölßÒÉ€,¥gdõòÖ?Æ}.›°Œ~q“’›(JnÎø•ˆeçºÓ3 ÒÆùòÿÆùMÍŒ=b>0w̳ëË0ÊËÇ<–Ð ?P`æ À@}Kæ•M»Æ§5cž¿6µˆ82^ÜGvP57ðüã¢ÝëÒ² N]º× ¹s¯á¡^ŽÆÒS¸ñÀÝŸßç¯ô÷»J-¶æm²e˜#ýúÍgYoD°šç–cÓ¦®DùÄeÑÑ‹ìйŒÕŸïý©ðJ)cÝîþƒFx»»Z‘Z¸Ñ˜u”3IO]‘–õQejJ–uŒ\û!x9!?€`ý€æ}IšùèÒ´+´¹%Ñ•)—Y–L$ï«=º?Þ0aíuÆ'>#¥íýƒþ1aÇŒ÷oq7"&¬—KIø÷Üž{•D"ºu›Ö7~${†®_˜öœÀsþ9'Ûk3¯š^ˆ–‡%å;.)ïµÉó' 2ÃÉu³â,Ž«&‹Hóz®ÒÑ žÌâ6Žt¶6at\Ç!x9ý©ëLOz‹.¹IEND®B`‚PK¯9AòDXVënën-Pictures/1000000000000286000002691676812B.png‰PNG  IHDR†i¿údybKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 2;Ï¿Ð^ IDATxÚìÝqlÛ}'úßœ:@‹-Pø¯R·ˆ€«%Šü±.é^ö2AdŠ„1%òzÅwëå+T¢‹4%t© …Ä63þËhÅKûÞ,ù*]‚mツQǹKæö–¤h¥¹t´0ï‚ A­$ŒMý³…±ØMÜæÚgÞCR#rH)ʦ¤ïüƒΜ9çÌÌùÍ93äÀˆèµ×^{íµ×P/Ž{÷îÝ»wF É×®]C¼7oÞ¼wïCEL„d„dh9Óç;E)'æ"9òÆ6ÃvAèžþVáµ{î¯ÊL?®s.œ!¶¶Q%1阇Ï×WçÍš•jWmpæL)Ç=’¬-šýeg ÐK>t¶j©…Då(f>"L¨‰ˆ192—(+ ö0C/y A°/‹Ë}»ÔÍ †-m·²‘ R5Ê•Êa›nGs¨™_DÿX)ßIV‰11š_¶ ­Â–°{Àñî%›æ"ç#̬(å¸ËårÅËŠ¢42¡ÖûöWn·Ûívk&62!—ÛívÅËíËq—Ûí¾øæúC.·Û/ï÷t›i†2 ½î/ç¢Ó¦=YYnŸ"¨ 6×ÞZWwn/^ü³¸•LÍåŠcÿ@H>L³‘]ŠÈŒ‘Õ25êÌõì’'ªµ.9+Ì’æ 4crdn)ÓPÁ<¿ºœáL–Ô(ØÈ„$™ñ™àß®ýûK³V"Ê•ö‡Ä÷¶·jŒy×­Áîôö¬V™¥…d;3L–´gÚÜ Â¯ÿ›+µÎ:Ô•O ;7Àñ2xàš1YòÈÝS‰3×Â8ŸY”zÞ±Õkf52&§R·Ëw’5Ƹ-.ÛÕ~°$×’w*¾e» ˜ç¥Å­…d.²d‰Ín%«œ¬ÍÔæb2’k ‰+Jc{«Ê¹·ÝÖ²…׃» ©Z3c3ÁôšÏ¬~U¹“¬1¦NiÞ–+•Ã6éäVid¾“¬V÷WZ¾“¬ròæM#¤†ý½äCá3ÁõÍUŸYyf>\oÅ$E)—rÄùÌâåf,µ]^œáœr%µG+˜}«1/cµ””ª1æ5Sk÷}›]ÖÊTY/ë†:A0ûÖŠ…B!*r"ª¥ͱææÚÅfLµ9EΉvë{ú¹̾À•–dÆÈë»Ù±¸¥8;Zÿ&ÇìL²ZcŒÏ/Ûú¬¤š xR'©÷f›:×ÞþÛ²ÞvzI–ÕqÇP¹møÔ½ä‰é(›}«›±öÏ—9c›«>³ (ìÒBªÆ¸Uo6ÍKÁÎj©…¥lówÀ&Ǭ•ˆ¨ý3$Ý~mxs=8³:çb4ßïX»Á“ˆfj]¯GI ŽE´"¢«W¯âyɽ¨¿®’µûò-ÀXܼyóÖ­[gPýâqkX›Äâ1)üÇSßx¼´ª1"êucÀ¸ —Ü“úï>T — € ÉÉ€ pzõ»ãzccpÔ>|Hå÷ûQSGjgg'›Íþ]ò“'O^nFßyï}l-8Á>º÷:.²r勨`pRÝøÅ^i3‡Û»&B2B2´ ¾–¬(åÄ\„b›ËvA3¥äÜ Û…ù¼Âí•ów/>¸î88eöÁÅ­óo~›8·àüõµÓß}pÝAÛ+š¯^_­hm¥Ü†ñ–«¹®Vö!¹·\$ñÂc°!9®?xp]/fÿnéDDäkÆÙG·Ÿ_ÙÖ „g‹G·oÒ»*ˆÃ§žÑkÆäÈR¶¡(è¸Ëån‰—•öD—+^.ÇÕé¡LCidB.—ËÊ4”Ö²LÈåv»]®xYQö—:¸Š#wî7_1:ÃöÊù•íG·çÏŸ?¿²ÝœrÞf³µ>=ºh¿§í•óoÜ×NÙŸ~û‘úþg?þ¡ï¢C7TLY³öûo#+v ­Ù·Öw©óÙ€c’½Ñ¨Èj©…Då@U°/‹…B!ŸÎpž‹$Ú•19RrªÓk©À\”¤õE+U“Ñf\¯$’Uk0´R.r0ÙêÑOvtc¢þ ™7¯Óʃ\wm¯¼¹såÃJ¥òá•7ÕxwΟ~—Ô÷n§èÝôÿ}Áôeînk£gjçÊŠÿœúÉqýÃO¥ÎŒ¯Dn_ÿqðA¥RyÐJM»öÿú_c׃¯¼ÞOt;ýö+A¿Ðw©8½d²…ÓÁ&KjW¸“É2}pçb,lS§s.ÆVçMê<Õúc"E)—rD4m±Y¦‰h·¾G¶åb±X\î;6žY²i-eF/x3©ó×iE?TéÎà{7Ý ¦´}7ã úÏÑ9mØu\—Þ\¹}ûúÆ¥€ƒˆÈ¸²“jÇ\5zžÓôÂýé+tý¼&.?úhƒ>õI5µ‹š€®Y»6ÑG·S;WþÈa`)˜`CüUˆi^ n-$#K–õ@{¢ÒÈ,-$kŒcć<`²ä‘‰15N›/á;x£ÕöÊù»£Ü7èž-ßÈ7u9WRŸû•wœkÝà+ùýçÔ8~ñzççüéþí•óÛ¦ýçèg?þá¿ýû¶¯©'7ôúE•œûÌ%ºþÑ#¿ÿÜ£6èÒÊ' -'"$ ‚y~5VŸ‹$£i+M;‰¥‘&«d]Lê ‘Üë²X‰WÅØDÞ2vHÛéKW|oßݾîhÆtÇÅWÞLoû¯òvjçÊÊõ‘ü¢ïÍ»?#:GŸüÔ§}«é'çüÁWΧ·ýï¾ýJðÁ9"2²L¬á~—,öðú¢µZ­6'<®W‰hÚb¢!Ó1;f­ŒÉéì^³·ý²nïã¢/£Ž?ºÊ´¯7o¯¼IA¿ÿú빎À•»Û]ƒÖ#ùÝ̧ÕçsŸ¹´swð½XŽÀ•%ÛÒÎu€ÜàRp"B2 fßjÌ»¡c^ÆäÈ\z×JŒÉ‘¹„Á˜jö­EE^KÚ7]»ºs\÷•·?o³Ù>ÿö+諾Sõ7M×Ô¼¦Ü¾>|î3—vÞ|³=5qX½gÛf³“Ú}ÏùÓﶦ÷¾Súœ?ø:ÿ­KŸiZ &“@DW¯^½víZ÷w~¿žu;¡ûëh¢7nܸq¨ù¢²N`ßTÁ á¸þñŽH~òäÉ;ï½­'ÒG÷~p%{ö,¶=Lˆ_ûµ_C/`R $L£׊RNÌEdƈˆó™ÅõUŸY@õ¼Ð^²ÒÈ,ÍEräæó…BasS¢hbÒ§x Ÿ¸ 0dH®ÜIÖóÆÂvA "A0ûÖ–Õ÷DTŽ»Ün·ÛívÅËѱW¿ eJ#r¹\®P¦¡œ‡ˆ¥‘ ¹´ÏTn/˜É„Ün·:s»¯}f³šZ3o®ø}~1ŽqHV”r)Gœ‹N›Î·LH’™Íç£"“¥P¦±Ÿ4“#%g>œá¼– ÌEIZ_´R5Í6ZAqà<•ÄB²j FƒVÊEmâ[$åÓA+U“w*‚`oÆDÎ9c›a» (J9±¬¶zöÅâþ9Àqí%÷ŽÖí­j3ZÛœ"çÕ­ív¸å\Œ…md²L«ïWçM&Ë4Uë[)ôŸG= š¶Ø,ÓD´[×&˜7© R®Ô«ã˘YjFwA°/‹ˆÍpC2ÑãzõàM¸[™,y$™±¡{x}q†sVK<žxƒÕpÌC² Ø^bL.Uº¿œ²XN°Z¦Æ™½)‹•8G|̾µb1*r"ÊE¸„ Ǿ—l»¼8Ãy.²Ô¾ëª—EÌŽYk3ZWJ2cÖY‡y|ÃÂíôÓÙ=ƒñ›h·~p^[8&rNV‹·dÀ3ô»dÁì[Ý´$æ"©€'EDDb4¿,Ddö­Eë.IòÈD\Œ®ùÌãÍ_3ýTÀ"õÖ-[ïø=/-n-$SO’‹o^»çþjó‡Ôd]”æÍBÛ&–@DW¯^½víZ÷w~¿ÿÉ“''¯Øøk˜7nܸqãþP`" $L„×’oß¾:8R?üá„d¿ßj8j;;;Ùl¶_H>‘7vLš§OŸ®%L„d„d@H@H„d„d@H8¹!YQÊq—Ëív»Ýn—+¤>MY1ðXbe˜G÷šYQ™PçÚG.ž£ Ç5$+ÌÒ\$GÞh>_(67%Š&^XTS”Fvi!YµÓƒ×Þt;> ‚}¹X,—í‚€^–3#/Y¹“¬1æ†ÕH&fßÚ2u‡ÅrÜ%ÉŒˆ¸-.Ûµ_Õ³KRªÆùÌâúªÏ,(J91‘YóDAŒæ—í½Âäãz•ˆ¦-&Ò®½­S5ƹÛ Û¨¢¦ÉHŽÌÑ[…×ÚþØž!G^íûÅÅÝ”&cj WÓá33ÖjµJÞØfØ.J#³´¬1FDêÚàÅõ’¥\Êç¢Ó6`ÎF&$ÉLŒæóQ‘ÉR(ÓØ_7“·HÊGEÆjÉ;•v‡µP(äÓÁÎs‘ž_A°;½Ä˜™[ê²®$’Uk0´R.’¨‚=¼9WãåvAûQ7|63–Z©ªfŒˆ*‰ˆÌ˜ÍoJ³ÚzH,$«­¡tµà{ÉS.]ºd8r7¶·ªœ{6"rŠ<—ÛÚnÌÏ›ˆÔ>e`ÞÔœž+•öýxf²LUû&n_.FÉ%ɵTÀ“lÅWõ\hÚb³LUwë Åf²RZ³LUs¥rØf£½ú.q>c™ÒÉcrdɲ¾:onå¿»Òzyøð!¸îxJc÷¢ÔAÝÖØ¯–:¼¬Q­?&ê#÷Ç#> cöåb>¬S7ƒ¢©#%LŒ \aÆÉµõðúâîB²VK<©öH;žk Æ ~8cŸ0¬Ž˲\ª„íö>ËMY¬{”VË”îŒVË”z8š¬’u1¨/Dr2&æùÕX}.’kFß)‹•xõÀ ô‘Þs&˜}kEŸz½<I87ÃvAÀs-À¸Ã>œÑvy±ÿå^5^:f­ŒÉ¥ Q¥$3fu˜÷¯¶îÖ÷šÓiÚb„^QδRއ2 uÕj VË”féì^発:FóÒu©Ò¼¨ÜYá˜ÈyÏ€AFɂٷºóRNòx<©;J©Ì¾µ¨ÈeÉã‘d.F×|fí·[Ñ9$s.ÆÂ65ò…c^ÆäÈ\zת޽¥òÁ–(:7çv»=’Ìg‚íK¹êk©€ÛíVé$æyiÑJÕTÀãrÅ+dÒ~4øÃ-5èÊ’§äŒ‰œïŸ¸\n·Ûã‘rd]”æÍ¸½ F ¬DtõêÕk×®õšcccÃï÷c$v¿ƒÞÈ,-$«ÞXǺFsóæÍ[·nAEÄšßLsëâz؆:€1BH6JýÍô2*Ž;€ ÉÉ€ 0‘&îŽëwÞ{ÿUßW¾ðö!8™!™ˆV®|ñXÔÝ“'OΞ=‹?Q€±ÀÀõiéÐB2 $Ã]KÖþϳJŒæ—íGôì£í•óo~[ýOiþ[W>LûÏíc[ú6½¾Z¹îy~€cÞKæ\Œæóùtpàó’;ÂyÜå2ü0ÄG·oÒ»*•J¥Ryðî+o~e»ySŸú R©T>øTê|kê°óÿÜd²Lk>•ã.·Ûív»]ñrg .Ç/^Œ|u."3¦>ù>¿?(<ÿìÇ?üô§>ÙúôÉO}ºõiûîΕµ|οreçîöHóœ˜\)ÉŒ‘×i„F&$ÉLŒæóQ‘ÉR(ÓØ_“#%çÝ»±·6c"看±Í°]8Öí¸þî+o>pûm¯|þÇÁæ8ôöÝÌ+¿Ù‘>÷›¯dÔ;ìü“e”ß%3&K™ˆøLp=lS”ÆöV•s¯ÓFDN‘çr[Ûùyq.ƺ-lèA‡Ž‹>Ê|í÷m_#â¾Õë³5ìüÇ=$wôtåq½zpŽjý1‘ép9Û^I}êÕsÍçWèAß[³†`¢ŒåGPSëÁ VËÔaÓ<8àì¸èk P_ôíüäQkú£Ÿìø.:F™àÄ…dA0;f­ŒÉ¥Jó³uÖaÖ¹Z¬FîÝúž‘»¯?ù©O ¥­Ûµ_yûúíGDDn_û•f„v~€É2žÿ¸6ûÖ¢u—$yd".F×|fÝÈ=/-n-$SÏ»Ïû€¼ÎùÓÁ•óçmêïŒëËû?3v\@+6›ˆ~ë˦£ÍpœCrŸÛ²ìËÅÂò€™³o­è3¼6Çõ®÷ø¦R¹~èù&þP!Z&ñyÉOž<Ás!ù%ûÊÞ8{öìÊ•/bÛBòËï%cÃÀiƒkÉǧ—|ûömÔÀyøð¡¡ì÷ûQYGggg'›Íɸ² p¤ž>}J¸– 0!’’!!’’!!’Ž…QΨ(åÄ\Dfáœs1¶¶ ÂåU]o޼Gº€cÓKûr±X(òù¨È9çb4Ÿ/ Åâ²ñH©(å¸ËårÅËŠr¼ªì09?¾¥€I Ƀ¢N#r¹ÝnmàQ™Ëåv»Õé÷ù}µŸÍ˜™KtħvÜÊdBn·Ûå eŠnls·ÄËŠÁUåø~fÔµïO‰—ûd£=B Íyw‘/ pT!¹’XHV­ÁhÐJ¹H¢¢Æ§ÄB²JÞvgú»ÞŒ©=ì^£ÐŒÉ[$å£"cµäJÏžz:8Ãy.²áš ¦ƒVªv/HDL(’³Óû=ûF&$ÉLŒæóQ‘ÉR(ÓèÌF+5A°wç¼»ÈÆ—P ¾–¼±±Ñ1åÒ¥K½»ÈåRŽˆ¦-6Ë4Qu·ÞPl¦V|Š,YÖWçÍÆBçb`ÞDäy.—+•Ã6›î|&Ë4QUgAË4Q5W*‡mÚà§(í­*‘×b:0…s¯ÓFÍÕmm7æçM=R³.òÀeu«N›‡’ÁÛ»ü~¿öãÀ'(3&K™£jý1‘Y°‡×w’µZ*àI‰Ñü²} D¥‘YZHÖ#ƈ_îq½:hJµþ˜È4ÔhÃÁ"_¶£nàÚÙÙÉf³F︆[¦,VâÕÎYÁì[+úÊq—$³\$áÜ Û†Ê¬Õ2ÕÙ7md£É*YÓúB$7DZSëÁnu÷”®Õ [dã—‰ W,œXOŸ>¥±_K³cÖʘœÎîuk ÇDÎ[oÊb%¢Ýú^¯Ävë{D•’ÌM[º†»Õ®í´Å4Jµëmç¹Ti®Î:ëè;º~ çý‹ÜY€¶ñßÞeö­EE^KÚw ·ïŽöx¤Y¥y³ ‚y^Z´R5ðôúQÐVtÎ#Éœ‹±®Nµ ØÃ1/crd.½k¥¡îa6ûÖbÞj*àiçPͳ,y<’ÌÅèšÏÜ?¨wä¼»ÈÆ—Å.ÍADW¯^½víZ¯9666ü~ÿ‹_Å_‚À©róæÍ[·ná5&™ Ì“ú›ãel8MÐK@H„d„d@H˜HgP“à÷ÞG%œr_ùÂhÜN­ï?øBòù¬Û‹J8î¾WÈýéÿá þåßü·Ó¬þãÒ&Bò$¹ð¯ •p|ÝÿéS"úÄ¯à‚ ·¡mýÆô’Æ !F† 0Ö|ÿÌÉè%B2 $Ã!a×™,ê³¥ÛRîø8r‚nxYyaE8|þ{•Åå eÊKÙ.ã-œÀ|†ð:%›¶-ÂAtØ^rÜå’Yç®Ã¹øâl¬>SYÍ ç3‹ë«>³ð"W­>ÎÙF•cñhgu5sI8_TnÇøP/¥‘YZHVɡ킠(ìR¢¼:tAð4n8j?ãÇ´­{GG;^¨ëŠÌí]‰ŽãÁ>Ü©Ùr±X(òù¨È9çb4Ÿ/ ÅâòØKÛ¿#¢42Ks‘yÕ lnJMŒp¶uìº;J#Úï&¶{ÒLÈ5Â)g¯ËñÎUìO‰—;«®×öÝn÷ÜRz·oç2“ utsÛ˺B¡P-R¹“¬1æ5-A0ûÖöw¼>9Ô®®Ýº1&G溼­‚è¦6T5ê¦ §($?ç#¼zž‰Ž£­êú(štÝu…c^ÆjÉ;ÆGïÐëÓ†t/Û}°÷êµk›ƒ B¯a³þ9ìÓ’+Jù¿|ýë4®ëŽ uh´O«ÝÑòv4j«ò˜¶Î/F"‡8P”rb!Ymœíæ’XHV­ÁhÐJ¹H¢Ò/‰½ú.y}ldB‘œ5˜Þ_E#’d&Fóù¨Èd)”iìŸÐ19Rrª³U™11šß”fû2y‹¤|:h¥jûP¸¬¢”K9â\tÚt¾íŸCíêÁÞŒ©'”ÚgmAú¤¦«WýkÓD”:µ!ù³¯½Úç50$÷jëŽ(rŒ|}Ÿß¥{csŠœS®¤.eðÐÓmCº—íu°kŽÜžÍÎa„ýFÅŽŽ>-¹ Ø_ý£?[HVÏ­ …B>œá<Ù£FZíŽF­UçÖÙ÷~XƒÉ‘¥lCQ´µA4m±Y¦‰h·ÞÐ;$“%ÇHU½±â²½×‚ŠÒØÞªM[Lû'Û[ÕfmÛœ"çÕ­íö*8ca›:[}—8Ÿ±L™,Ó}‡­ó¦æ<¹RYQŒ/Ûë4¨;V×s0­U>©õ:WЭÿvšpú®•ökãî½^³mܽ§sØ3Ñ£Ž‡9‡©ËaôÐÓmC†:l6Y#7rxð„£K>âÀõ`}˦[ƒÊ h9($öðúâ 笖 x<Ú»´“%$3FÕúã…Šæ£ÝûGׂëÕŽE»¦è¯Bm?–ã0ËÏá¦6°þá4\ÿCá£îyþ¡ð‘‘ëMÿQGƒçЇjܬ–©ÃÈ#,k°ÙoóÒ·%ÿ_Õq†dupÜ£6LÃWÁ˜µÞ: fßZ±9µ†"¦,V2v]ßvyÑʘœÎîQ§,ÖŽ¥º¦4ŸJìN/1&—tNåÇ›ÃaS3^ÿpJCòÇÏyvãµ3d7þÑàµäŽ“þÞƒÃãGv­W,ÉŒÑ´Å¬Ûø q ]3uè”õæïnÉ¥Qý¨Lã»–ÜÈF“U²ÓQ‘óÊl¼Q;Ù­s»tÍÀ©î²­«¿ÍÐމœ«™³cVhûaÌKÁ^MF3 EwAu"Ñn}ïÀ”fmWJ2cÖY‡¹«\Ú¢jnû,k»¼8Ãy.²Ô¾ UŽÇËŠb0‡]›u¿Œ33\jCÕ?œÏž+ݯo}ç»ê·ßúÎwug²­{‘ãH)J9ɵ;úÃÈFÛž»Áf§WÊêâjÊz‹ïÖ÷:N8ôÚ4MKNôøþc/yðyS¯*èѨõk7iëlðoûr1œ©¥n·Û#É\Œ¶¯þª·Txàe¬–ŒfŠ¢» Ù·óVSO{¢:›,yÔ̬ùÌ}B¦,yJÎØ°§eê®ÙYÁì[ÝŒy©™7·Û]r6ï0˜ÃýJ­TM<ºÕ5TjCÕ?œšÌu_ßøðî7>¼ÛëÛ¾g¢î²>ÒÈa¤%7þëõ¾–f;f]\×ÜÇ3ì¡7ð°í°ivúäÊv¹™rڲؽøVtÎ#ɺ7”è¶ä‚`uî"ˆèêÕ«×®]ë•¡ ¿ßÿäÉ“g7]?öRÊq$s>cµVk5ƹøVáµ{î¯jgkßä,F£9B9î’dõ‡w­_­52K Éc½nòjÿVˆÄh~Ù¾Çu3)M0ëõKbíZº3ý^!÷‡þË#,ûw·ïè>/¹£­ënXú4VícªÆØL08Ll‹¬íæZû[áîöª³ÙìjÉuÏãÒ¸±Ù9Ì/¡oÞ¼yëÖ­QB2ZF_Ø IDATÞ±;å!ùÀŸ!Ì×Wç͸" Ç6$ÿ»?xc„e¿ù­÷uCòÑq‡ÿ #-ùÄ6nGÑì>$ŸyiU`]\ÇOD 56®?ùxéžñ~ñâd´äGÑì>Í3ǽ &+$?Ÿô|Ȧ-ùÑÁ“ ÆÛKæ¨@Hxùž?Ç]÷€|üÝÿéSTzÉhÜN¡ÇÿóBòù^!‡J8 ò‡¨4nÃúéîBò¤xa?~@ã6žÿÓK›9†Š˜ÉÉ€ € ÉÉ€ € ƒŒþï]ï¼÷¾‘Ùð×-'6=j&+$Ñø“…þ3üÅ_¯£ŠO$lzÔ<LVHþW¿:ÊâŠRNÌEdƈˆó™ÅõUŸY˜„ºP3–#ol3l„öÇ· ¯ÝsUͰÖóç¿}A(ÿ k:çb÷"b4¿l®KýxøÌu]¶é‰HQÙ¥…dU?Ÿ½J1°tý“=ê]åEî¥ÃÖ¼öpÓÝ£‘÷€“’ýW?¡;Ýf³U*ýc©‘YZHVÉË«¡¨‘]J”W‡;~^ð'öåbqy˜†@QÊ÷ˆ8c›aÛ^vi!™‹$œ'¨™èµé«ÜIÕcr©¶ÛÇ—¡#J¶Ç&nïǥ曻"Us‘ÉßG>À_âv‹CÝÞõ¿ÿùY÷Ëf³µ¿Òk9“5Ƽ±æ‘&fßÚ²ÚMŒ»\î–xYQ̸ËårÅ3™Ûív¹B™†Ò>ëgLŽÌ%ÊŠÒž­çûr¼5¥‘ ¹Ün·úñÕ±É2=|W²#Ÿºõ£>·”Þ5ÂÚhdB­4‡­ÝM¯}õì"§wƒÑà ç¹t¶¡ ,…þt£ÉêPbßêºx1òÕÞ»œº®r¼•f¼¬Í|ÇÞÛ'cGZów3m»B¡¦Œ3·?¶wÅF&¤ ›O­Cµ°¡LC-{»6ºwìî¼³†5¹­g—´u«{øëÔ2ïüó~öó~ö9竟s¾Ú~ODßÙ,©»O~K9â\tÚôOo …B>œá<Ù?“·HÊGEÆjÉ;A°‡7c"çê‰ÿÀ“hÆäHÉY,.Û¡’XHV­ÁhÐJ¹H¢ò‚ê¸R’#¯Óøù~w>{ÕO%‘£ùMi¶ µaSg!o4Ÿ/ jý »éû¼zõe“Óy›cÖJTÝÚÞkç¶W)ô§IVQÊÝÔ8°ºîÞ½Õw—kdB’ÌÄh>™,…2 m [$åÓA+U“w*½2vä5¯Ú«ïµwEÝRÜ£Á<¿9ÏE–2 E)ÇêâšÏÜUµÕý¶– ÌEIZ_´R5Í6¥{Ç®­ûodB‘œ5˜>PcÝu«{øwÏct¿8f!ù_žýü_žµßÿÞœ“ˆ¾õïªÓÛ_²Oɹ˜7‘Í)rN¹Ò°ç³œ‹±°­}B@4m±Y¦‰h·ÞÐKŠ1YòxÜn·Ç#u_?®r™,y<Iæ3Áõ°ÍàºäSS?ŠÒ¨ïç3–©Žé=Shׯ~s¹”m ßEhoâ^¯^}ÙÅË6A0;f­ŒÕÔàÙ»úÓ &Û§€WW¯ loU›'š6§Èyuk[›B`ÞÔÌ¿fï}‘5¿¿+RUo¬¸lïUê¡ö(A°‡×­TMGDû÷wÕ‰Ú¯Œ£52!—ëðÐ@˜”dÆ:[Í1¬v_òù¨ÈùaÖÕNJ·÷Ð]ÝùÔ«ŸÇõ*u7UFJª¶§3œ³Z*àñ´‡‡Úô}^º}ÙT­– xÜnw U#¢VèêUŠ~¥˜¬nû”zàŽÑ›šO¾)¼„šoîiÑî“Ú®R·G fŸ´h%"ë¬Ã<êÅi~W бý àØ…äŸñ5MÀßd6Õ)íWwcäôcr©¢×׉&«d ¦ûB«ejôüNY¬š09ä€á ¤“O£õ3LI³o­XŒŠœˆ´W Œoú>/ݾ¬:ðX(òùtp†kÇ®GlÍû&«[@½‰‡Ü1¦,ÖáöÒYó¶Ë‹VÆätvoøÃAæVÿ•ªÉhûJíÐ[pðŽÝUÃÉ:­ÃsþñóæQôWßÊ«µ/ÝVa¦uýIRŽ«÷Vô9uÝ­ïµ®ÈN[Ì‚Ð:Dwë{û‘^ý¨^%êÑ;Q6ÛMÒ„ê‘OúÑžâh >TImá˜Èù°ç:ÝÛzÀ¦¯ÜINÚ¿vÓ2÷.…þtƒÉö/ v¢±ê:°Ëén¯R¥¹—ì2¾ š×0ÍKÁ®†OÝR»GU õÀfóJíBb¤›¤tüŽÜ옵êVþHÇ—ý à8†du líkߨ08†&˜}«›1/UÕ‘F·Û]r6UŽy“#sé]+uÜl¹óHrûž ˜ç¥æE,õnIÛåæÇ´e±O'Òì[‹Š¼– ¼è›®‡ÔÏ^õ£žâÈ’§äŒi >°¤í›N=)GÖEi~¨Ç¡†OÛ—{„ÇìLë²k¯Rôšn$ÙÇü~w{•z`uuïrÝÛK–<IæbtÍgîÛ/|q5¯SŠ€—±šzk•n©Õ…{Ô}þ8r•œ›ËvA0ûVÕsø«ãº;v…Lµmö­Å¼ÍFãðGn¯2¼ü.]½zõÚµk½æØØØðûýOž<é˜þÎ{ï_òþ~ÿÔ7ræ¿ýðÃÿÉô6=¼ôšoþ…@ëv°é4”Ž‹›7oÞºuëP²‘ûõx:aÓŸÔš?ðçzÖÅõA7œËH| ʧ®— cì%ãÖ€‰€ € ÉÉ€ 0‘ ý.ùöíÛ¨)€#òðáCC!Ùï÷£²ŽÎÎÎN6›’ñ'!GêéÓ§„kÉ!!’’!!’’!àX83ÚbŠRNÌEräm†í‚ÐþøVáµ{î¯Ê¬3Ò?þÛ„òº¦s.v/"FóËvA³®Fvi!UcDÄùÌâúªÏ,Œ½":JôR6Æ$äŽYHîEìËÅârïèÒ=]QÊ÷ˆ8c›aÛ^vi!™‹$œûß6²K ɪUÄŠÒÈ.%Ê«Ç5bõ:•Q?¶kN¡ ¸6Y¦;'=®W‰hÚbRC¾Ù·¶¬³¸Ëån‰—5àÅ].—+^.ÇÕé¡LCidB.—ËÊ4̓ɄÜnw{zWìldB.·ÛírÅËJgâí‰ûó72¡V~4‹HD À2cŒÉ‘¹Ä}~_ûQ¡¹ Íûî|¶Ëî …B­ù{å’GR)ÉŒ‘×Ùî ‚Ýé%ÆäÈÜ’6vªÊB¡Og8ÏEíĘ)9ÕéµT`.JÒú¢•ªÉh¶¡™g‹¤|Td¬–¼SÑÉHb!Yµ£A+å"‰ýÔÄ‹ÅåήÿB²JÞh>_(Úßv$"öðfLä\¸À.h?êöû›ùL­Tmç³’ˆÈŒ‰Ñü¦4;0p\ ¸ÞØØè˜réÒ¥vÀ\Û´_Ù—‹QrIr-ð$»£—É2MTÕÌϹ Ûˆhš¨ÊÅØê¼‰*ÓDÕjý1‘©5O`ÞDäy.—+•Ã6Û.r¹”#¢i‹Í2MTÝ­7›é`âºEˆ,YÖWçÍ­ù^‰×ʧeš¨ÚÌç^}—8Ÿ±L锽#º›&ÍÇÉàµd¿ß¯ýØ~‚r»{׺&:º>=E5*çÃêM^û!Gid–’5Æy60à,1ÒÄr]‚`¯/î.$kµTÀ“ÒÞžf<ÃŒäÌCǶ€ ´³³“ÍfÞÞÕÃ/‹ ˜çWcõ¹HNmJ#MVɺ˜Ôu6@VËTç¤)‹•xõÀYBÿ+³‚Ù·Vô•ã.Ifêíi¶á9luåÁ./}ÃÀ@OŸ>¥Éÿ]²¢”ã¡Ló°z¥¹Aõ;‹†íÖ÷Z N[Ì{ç‚`vÌZ“ÓÙ½¡µ…c"çj{$2e±¶Ö®óÑÈ©Ióâz©Ò¼¨Ü'pŒLzH{X¢èÜœÛíöH2Ÿ ª£Ö‚`ǼŒÉ‘¹ô®•Ú7-Oy+:ç‘ä^׆;µ¨Èk©€‘»—Û·@{ƒçI $zÉ€ G’ ÞÙŽ{¶O$l}lTò„Tò± ÉU×3Âk`²ÿêWÏôéP»'ÄËʰ5c|cnidB®—¾£ÜI^Jí~ë÷ÉÆ‘nñc´õæ¡ 4¾g*LÈÊ4”#=0_äFya-ÞPþp±a¹X, ù|TäœsQd#„«±÷žeÆ“#s‰ûü¾ö£v»f2!·ÛíÒìU•;ÉcÞX³·*fßZgYºöõF&äÒ6@ºéw䪽lv)JRLäü0Eþø9á50Ù_ÿÕOôé.¥îê.‘‹$†=xF>ã.ªUî¤jŒ1¹TŒ%isÕgë&î{`õÑq¤-^ÿý¡OÑØ8ZõL§ê”r¼•zÇÂŽÀv˜½Yìá͘zŠÛ _`´ÛfLÞ")«%ïTÔ*+åˆsÑifJ,$«Ö`4h¥\$±¿5ÓO­TMÞ©täJÍF%±P¬Î›[áÚ@ûÙ×^íó*$ÿï~Öÿ5ì.ÑÑsjŸcÎ-¥wû÷TÊñÖtˆ¨ož«^¼ùjשOwf²éÝ`48Ãy.mtu#Úï»Ïç:V犗;³]Ž«_…2æqÐ>žSÇË:'jÝ{þþº\ñûü~G ÃÆ7™î·Ùlí¯Œ'Õ]]CÍßY–Vïl¿¯f¸h/w?TË1ÚPâ7G¯œô*”~<.9‹k>s«9íQ±†º+ýLݨvŸ?>°Khöã¥x‘-^¿#½oÚÛb}}}º·o%‘£ùMi¶ÿ&Ž”œêù£n:L(’³ÓùB¡p÷nì-½3°Ž3ñät`Þæ˜µU·¶÷ŒžÞ©©52!Ifb4ŸŠL–Ú±¡Õ|:8Ãy-˜‹’´¾h¥j2šm(Šz"\(Ôr‘D…lá¾¹Õ­X\¾À.t¤Ðk¿í ¡nâÏ9_ýœóÕö{"úÎfiðÖ?X„^ÕepþvYš›jo{«JÕäµì{Û[Ô§h³*J9±¬¶.Š ÛÕ׿hŽ#êåÄ`#\Ï.Í•œÅeûÀžÉ€îÊÁ0äy`—Ðî#‡’#mñt[’Žª»>m.ë±&Çì ç¹R…ˆ×iÖaê »ÛÙ P´ÊÔqƒ—2DƘ,©'Uµ4tTÜIVk©@ûd¢O¯nØë(|Ô=Ï?>vàúçÿò¬ÿ«ÏI’'ªzcêq«{â¢(ú.q>c™¢æ‰KïM Ûú¤³½U%š¶˜ Ö|#›Þ]¼lëlè ŸünoU›C)6§Èyuk[{ ÛÔâp.ÆVçMjÑ:vŒ¾åíX—~Ñ ¤Ðç4Ô`°/¥Åë¿Séöô~Ãüc ÉdrÌZÕ¬4껆šËÛØX-SD‚`wzÉÈõE)‹•F¸ˆÞî0i¯Ä|Çu÷uâìÆ?jgÈnüã×’ùŒ÷õ>IŠv=tmßÇõ*¥ƒÒêbU-ð¸Ýî@ªÖnè /ßµºavWuÀÐðˆŽNцHaøc°{ë«ïÿà÷>GDû÷wm}í±0luõ˜_m¾«õÇT)å¬í±Í=z\¯zu¯4MÚ~(öðúâ 笖 x<ÃÞ4Úæ6'aÎÅh>œá¹ÈRÇ]ºËѪ{`¶"z¥k9”q‹7ôV\/Ž-$«g:T­?ÞÛÞšvöŒ4VËÔ![ÿH©v·õ>ªvë{D•’ÌM[ÔAÛåÅ~`o+Çû]hÐÉéìÞð¹›gÏ•î×·¾ó]õÛo}绺3ùžmÛåEmµŒkûꦣÖê]duh±P(äóéà ï?DÖc#vïÃÆÖMVÉLÑé\×P)=ûnýöÇ¿Él{ÇþHÕ¥?ÿþér¢”³Î:ló/Quk;[Êyûm²öCÁì[+£"'¢aï8Óæè“ã•cš_y©š\h¡g… NÐj™éÀ<°Kìï‡ÚÄÓâ5w-,П—lrÌZ)WºSŸî<‰íŒ…Ýí7+ ‚y^Z´R5ð¸\ñ ™´ÛinEç<’¬:̾Õ͘—ªêÉšÛí.9ô\;µ¨ÈÕ!èþîÈÕïà}öœë¾¾ñáÝo|x·×·#t¾÷³MóRp†W“ÑLCÑ=qÑŽI¨ó žçu¥cnv÷ œúTî$§í{DµCdj~Ô¥æç@jí<”*Í}x˜k´º²ž¹Õ+Úp]ºÞÇ Ñ¡õý_}+?Â(ËÕÕg~›ÓKD²,«SlN/cµTJîâ'p?´…c"çÆÏäFÛír53©¶·O_´9ªw¡ö³­”S¯µõ© vu‡z˜OßdYn÷‘‡ì#½ÐÏx—¬½øÿWý_ã ÉÍö GÝ­Aw,4Ø:Æ~Û' ;µb±}†Òñ‘ˆˆ¦«›Ý§0Ú!åB¡ Þ~¥M¼ûnuûrQû«>3ëec wö?ãʯ#ÆÙ?ÿx«©w6én_uLB–<%§ÑŸé¦cö­Å¼Í³¨>g`í‹UÝ\Õ!2ÛåæRiËb;?Ý'RjdÉã‘d.F×|æ! c^ÆäÈ\z×JêݽrÛ.ïÁ¢ÙºSèw°ô> nýµol¬}ccح߽ɌWWÏù§,3œs>Ó¼(n»œÑ|œøý°}·¼Ç#åȺ(Íu·Ý›Ã¾\Lgš7¬H2£í+º9ª̾ÕfT^Ê4”^Ò+Amx`öÙ»Õ]B{v3B(y1-ÞP]2uñª|@D]½zõÚµk½æÞØØðûýOž<xÙli!Ù¾âMãø›*"zç½÷?ëöæáŒãúŸ¯Ipÿ§O¿WÈý»?å?Þ¾ù­÷ûü9Ü;ï½ÉûûýSØÈ}€ÿð›dÝÇ ñ£ [rœ˜Í1ÉmïVòÍ›7oݺufLUßÈF“5Ƽ#œŸ1µWº|‚ŽX#]Þlä>@kxŒãñáŽAlý‰‚Íqj+y_,._`–‹ÅbqÙ./,pªCråN²Æ˜7Vc ˜}kûq¨oõžã厘”ɄڽjE)'æ"2cŒÉ‘¹fDW”F&äR;­)F—Õ™šÙîóÇ™«Ý§WÊñfbz«h¥Ð™ÝÄ%§£—Ü+‹Y.Ǽ’v K9â\tÚt¾mdB’ÌÄh>™,…2ýõ1y‹¤|:h¥jòNEìá͘È9çbl³Ý+‰…dÕŒ­”‹$*C-Û­c¶ lÊ1ke¬VLD´WßµÎ:Ì­e›«ˆŠŒÕ’wš«î•ŸŽÄÕ^²n6†-f¤ä앜Tƒθ±±Ñ1åÒ¥K}£uc{«Ê¹×i#"§Ès¹­íÆü¼‰ˆˆ8ó&"Ë4Q5W*‡m6½`O4m±Y¦‰ª»õ†b3¸¬A&ÇìL²š+U–íöÇuš½ljÕZ…Sä¹\s•îü˜,û3¶õª|8y>|h($‘ßï×~ôåÇõêÁ Õúc"ÓPw&K™jÙöøp;¾ê÷žMŽYk²º[o(SõÝi‹ièü˜Ç5F1¨˜5'ÒÎÎN6›=cpîŽ0,v§—dY.UÂv{ǼS+‘6*[-SCdlÊb%^=M ^Tûr±¸³€fö¤ÿï’Á옵ªczßÚ^R¿U¯jh§3&—*ÓÍŽY+cr:»×Ú;qßœ"•ÄB=°Ù¼eg!QV4³ÉC0ûÖbÞj*àÑý]íróºHÚ²(r®>ù,yJΘvºÙ·y-êWzDzQn]Kv»Ý/þY<ä*97—í‚`ö­Æ¼ŒÉ‘¥lCQÐÌžH]½zõÚµk½æØØØðûýÇâïÑßyï}ü:L¾ëoÿÕÊ•/ÇÇN ™="7nܸqãþP`" $L„“ö‡šOž<ÁSÏÐÌ/ÝûÁI É_ùÂgÏžÅu4³ÇË_ì•6s'°—ŒM €föxyúô)áZ2À„0ÔK¾}û6j àˆ<|øÐPHöûý¨,€£³³³“Íf‡d\68R¸– 0A’’!!’’!!’NrHV”rÜår¹âeEéø¨¾wkÄËJ÷"½Òì^ð¸Xð±,5ÚZàä÷’9£ù|>9ÏEÆãDsÁtp¦÷‚}N&3¾¼´|X&Ë´^×9^V¥œ˜‹ÈŒ1&Gæ÷ù}íÇVndB.·Û­¶Ëq—+~ŸßW?f2!·Ûír…2fˆU™Pk¡·cÕíºýj IDAT¯ÊñÖüñ²ÁˆÞ½Þét­·c¢£\n·{n)½{`E5§;$ïÕw‰Èë´ Âp VJ2cäu^`–‹ÅB¡Ðî7WÈÞŒ‰œs.Æ6ÃØíGuE•ÄB²j FƒVÊE•ýÒ29Rr‹ËêlŒÉ[$åÓA+U“w*Í »¬’7šÏ …öœ*A°w¯«‘ I2£ù|Td²Ê4Wz×zÕt"9k0­³Þ~õ”ˆÈŒ‰Ñü¦4{pº~ ÀÄüpÆŽ)—.]2u$LDÜ+.Û‡8Gh/8\Û:úÍU)(J¹”#¢i‹Í2MTÝ­7›‰ˆˆ8cš49ó&"Ë4Q5W*‡m¶vä^²¬¯Î›ÅEEiloU9÷:mDäy.·µÝ˜° Þz÷¶·ªD^‹iˆ§(ú.q>c™:P?º5`„îM “àádžB2ùý~íG#OPæ\Œm:Ks‘\®TÛŒ÷’µÐfàid–’5ƈ1âC†vƨZLd0Ò ‚=¼¾¸»¬ÕROJŒæ—íýsþ¸ÞqšP­?&2½9ºÒb©iÝ@ÞQæ®íbgg'›Íž18·‘0ÜÅvyÑ*§ätö²Ýg-—ŠÒÈF“U².¦õ…HÎÐBS+ñêÐnürª`ö­}å¸K’Y.’p¸V»:M‚®^Õ®÷ÀŠºr8ð<£o?QѦ¯ŸŒì ªN¼½lzwQZ„!Ç^}×ë\E)'¢$mnšAid–îTæÃáÍÍ•œ›a» Ø5ï‰h/­6 vA)Çç•Öƒäs‘è⺚ˆR¾×úhÚË.-Ü)χmTID(º™·|F;©?¸ŠJ"²»¸^ð™™ÐÂþ*tu®È.•Ä‚šÃVdPL(mY/ÌjlŽ×Ù¬UÝ’zÉ]ÑHòxÔ¾]”¤5Ÿy¨¥æ¢$…mjD\^ó™ÕH©é:÷è˜6¶·È2ÕêšçJ­î£7¶:oÞ·­û NY¬¹Repþ¥\Êyó&"2Í4«ÐÕ¹"uq§Íh%ª%šu˜šÃ á˜w@I½d€®h͇í‚ÐÈ„îXLÃ.Õs™1"â$:û-þ¸^­ÊOŠÈÀÌÚ®°y~5–˜›s3&FóËvabªñq½:í4­¤€ §—i^²,%ʶp÷˜°Ánbv)B±Í‚]P”rb®Ôwö)‹Õ]=°.ƒ½GA°/‹áFfi!QÞ1·LY¬ãJ§³¤pH¸€cLìN¯f¼w¯¾ëuv A0ÏK–ô’Á;®u»ƒÖæí^}wún}¯ó½ ˜³»FÆŸ‡×^…ÝéÍ¥³{D´—MçºÊ;°;n™î3B¾[ßkž…äôj¸’hO?º’¢— p<ÙÂëõ¥9·Äˆˆs1¶9¯‡Ì¾Õ@|n)ûõ¿ø$QNòÈêtÎÅØ þ¨ ØÃ±’'àIñ™à¢7™£Øf8+Í-$,›a»`×¼̾5gÜ¥ÉOØÈu[íØ¸ËwUX…-+Í-¸SŒs1¶i¹Æ:²'öð&%æææÈº¸ó.”ºkXŒÆ¼¹æôî’¢Ç|ØSL"ºzõêµk×zͱ±±á÷ûÕ?Ñ|ç½÷W®|¨ 0F7oÞ¼uë®&ÂÐ×Ož<Á#Æhć3ž={Ïg#õጸ˜É''$o¯œ_Ùnzt; ýØæÃ¯!Y ¿6ÛÒ·Ù·—l¶óÛˆèÜg.}zç'e^\H>çO?¨¬¾þúë¯ÿÖ—?xöŸ#5&ÓÆG…òó6›-pûÑöÊù7¿Í¾ýf3*o¯œ_ÙÞ^±Ùl6›me[r¾õ!¹W7õ©ÀõÀ¥t;bŠÉ™7¯Óʃ•¾Lo§·ÉqýÁ»¯ó×ß}pÝÑžáMZ­T*|y'õç¸{ñÁƒÊ_ÞyA’{r\OûÏÑ9ºPÆdß»júÜo¾¢?ç¯|xÝ¡ÎðÃÿ>½ÒzÍÉC20vÝÏ+¿yN÷=Bò‹ÉÉcŒÉ?þÙ {“6B²¡ß,ûÌ¥»Ûçw\÷•·?»·àôíyÉŽëFúÉ;émr8Îßã½ãúƒ}gØohí§¡—lŒ¶Ÿ GÐK6“ýéë¨b€# É×ßþ+ÔÀ}tä¯|á ÔÀ=ÿ§ãyÉ“!!’’!!’’!!’’!!’’!!’’!!’’!!’’!!’’!’’@ãÌ˼óÞû¨8€qùþƒ ’¿ò…7Ξ=»r勨>€q¹ñ‹½Òfnè^ò“'OPwcôôéSµd€ € Éå ªà¸;v¿KüÊÞ8ÖùGaaà†FH8½þôÿð¸dõ/ÿæïŽuþQX0¸¡’N©Oü CþQX8î’ÐÊ#ÿ(, $À¸Zù3òÂB2 ã…Ž# É€ŒÂB2LP+†!ÿ(,wØ3N‚ŸñÑ^¿üø§ûGçÏŸÿó>~®÷í½?;¯óm¯éF^cÉ¿š›ÆÀÌ&Ï#¿&|cýò£?7X{‡|i·×ùó¿ýÉóŽŒÙ:G½ǾW£— pZCòóå¿|=ñ#ÆØÅï_ûíW;o;RþœˆHyöœ,§¿°ü«àüÿüÚ÷#¿#вýöï~éK¿³ó¥ÿüŸÞ˜ú,Ò'Ïj"Òëjš'~c)ÊöÛ_Êòvy¹ò1)GQ^åñ7ƒÿ×üoôú×JêÆzôŸÿ$ZúëÈÚÏØ3áw¾¼}ÿËD}²1ö½î§^2À) É#¼~ù¬~ç½ÿ¾øö—þ ç¾÷ÍŸ<{Þšþý˜ãÂg_{õ3ò×ÛTïéC½Æ”…k2ðŒÿNøk¿ÏØþŸ¯o·‹öÍ/\øìk¯:Ñ{ÍrX¤c†_>ûþÍßýRŽ1ÆþþË¿û–ºˆ^"/¥°ãßXÚò^q:œŽhéã{1ǧ#zïûÑvyï½uᳯ½úÙ×^u¾õ}íêÔÙÔ¯¾øÍú/ë·¿è¸àtüûoÖujéû_ÿUƼ_»zž+?çÏøÿßÞÝFEq¥ûª&÷Ãý0¸¼š84/Çhn5sOH#´¢‰¼E ÔÁy™I b‚Ñr׊“4"èçzˆq|A0!"Šg4¦;œ³ÖPGLì\“œ,—ÌZ“µB×Þ÷C5MStC7tCÿߪ]Ûª]ÏÞÕöîªî­ÚòA^8ãŽgd¸Z«d}úô‹ë×F9TkÛþ›3/,gc„*®_¥m“ñ;Îïj¤d€9{ášOd1|\ùðK›Ã×>¹‚¨³±Õl+7”äèEq“¶åBAœüac³Ü£Å[ñsEáOnbŒê¯´ ²A+7”¤Uv®|EûÚrú$¯¤}ô.Š ¬Räžæ²MŒ1–\Ôœû¸D®*™–Æzýd9¶÷K-Wò—ˆ‰b}^ó“òêÓ/ý‹NܤmùB›,êÞxõt¯½å;8ñÚ£Œ]¯Øs€çžÌYN×*œ¹3ÈÃþiÐðçzb,Y>ÎIT¼Åú&éí/´É¢ØUy¢}pÌr§¡Z¥È×®.·Êqêö•Èï E3}÷®FJÀ(ÙƒQWíñ¿¼¼#ÂÊŸxj¥(v_nµÈåwzˆ±° @6¸(d1—\—O×ÀQ€4jÛ—:"z$0n%7^ Ó¿2þõ¿7‰"=º‘•-'vý™BýþÇåÏVFVÇ]h¼ âN+ñÆP~r²¸²½NšO×jX¾øÁ‰¼%VGl¢¦ ºVã¾Çžp}Ç®ÖÕ¡måÎC¤>½öðMZñ‡/Z^Úßä,N—1LÓ¬áÂ5ÀìHÉ̳ÅxòøâçŸ^ÄåU‰þ㺢xýËö^‰©ÕI?o7²¯ï¿,Šò¸ÁU¹§‡öNüãC«Ä­íUo}ÆXb~ÖÍùüÌù^§»¸Ø PµŒˆz,}lŒJ¦¡±>;YŽ}¨Xµ7¿ÝȬÆ+—Eñ‘u‘ Wlæêµã²*%{ cMo½Zß+É%¦÷KMVi¼ªz,}¶CÓâ`‡C+Ë]‡j1_'¢%‹ry Ÿ¾«‘’æ(‰q÷«ÔûùŸnÿÓµcá‚'b–0vëφ>‰­Ú’½„±æ±W£JždŒˆãã®Ê=Z&¿¼0"QÔ—>»39æ¹gó/-Ë>ôéq[U 7ÙÏnÿ1cgr̯’Þ똼‹=æÑ0®JØ›ýu}üJ¬\â´’)n¬OO–c‡Œ^•›ß| ö¹zÿîͪћ¹z=â(‹Rßþ´du}üJìÎä˜É1W£lgjìªÚÞÛðÜ=c‰¹¯ª¥1ˆÊxÄ o'‰¢^»ùßî,#QÔk7ê”qúî]=åæææåå¹Ú¢¡¡!==ýÞ½{øÔðOï«Iß±}¦D{êÌYÅdï3+~4Ö×87ßšw…’öŸßûKA˜¡'ÚS%%%¥¥¥¸— 0K.\#~4v¶¤d&w$1«0·fÍBJ˜ ¼xé ñ£±ÓMQs1ƒˆ8I|nõR2À¬xÍðOyë\ÊRV¤d@JÀÀ ñ£±€” >þ”Ÿá·'¥¹t{U½d@J˜Åpá¤dð M_Ô#~4’`šMò ‘ˆ?_ï@J¤d¤d@J@JWÜúÔ©S§ÐS>rëÖ-·Rrzz:: ÀwnÞ¼YWW7~J¾wï: Àw~üñG½d?” €” HÉHÉ 4ÁÉ97–Çåë(IÛ”!Ž«j2•ÇåëÅádŸXܸ7BPìâªÎÑ;Îô.Ý.Æ]uÂØýìõí`ö’K,nlll,NdL—_näܳ«w-s½#çÆ²ØØØØ2ù_«¾Î¯;–Ü®‹/^¼xñÒ¥½È—0E)y²C—:¤Àø!eFntŠ¢>?®ü+ö•ãêP’î¯ÍŽw’¶e±±e_±¯äÕÚÚìøøøØØìÚ~[ŠåýµÙCGT¤^Å¡íÿd,Ú¾Ìè^^·…Wf´ÕÐ_››]ÛÏùˆÚFÝþ×€Ó?JâãããöT÷8;ÐÔü½~œ’ïš{ˆ()ÚãA¡©E/Š”½Z\½÷Ò¥‹/ÚÇÍ&Rç4i“/ÿ®W;®Ê2•gíÛU¼+Œtùå¦áÖŠúü–hû UõÍTÐX½+Œºž1Ù’nÆÑnJ’G´Šá¬ DŒ>Vmv^L,nl,NõÙµýã6NT)ÚDÆtù{jû97–e˜3/U¦ª¡¿6;_¶«ºÑ£Á´©<_/ЉÅMF–;ïðCãßKnhhP”lܸqüT/ê ôDÄ’´—öFxð7‚}Çe»Nä¨ãæn·Æ Æ- U‡.%êî1÷su É7qêd,13%(t)Q·®Å˜£VÛ3÷žÐ)ªñ2"çý†ænÆ’¢ÕDÈtºfCŠ“‡ÛeKç9'²z2ŽVe&]¶ëD…Ú^QRh §ó~s1¶,4hD/9í• Œ>¡0½Üýkõ3×îüÄ&c‰Ú¦è–¸|®Å˜£v”<úÑ'Þ_»'ãè Q$Q$æajEê6÷¹™ã„¡LyãFUfB•Ï—õ™&t›ûˆTn´KP¥d5gVÝÛ Já£js‹¼×R§‰\Ñ*üh9€ÿq÷7®ÝOã¨wd…é«ôÕu;"RU‹’óþºâ£Ý–UiÎÈ×¹µSPh±î)Ðý©‚*µòRª±,¶@/êòË£Çyt9(4läà=,4Èí¦š»‰Äî£ÅµšŠT•शIqÒ„-ð?“úkAˆˆN"QÔW×Ý%¾õ«È^)»–±î£Åö‡§¼4 #¢ó]'«‚ ÒlŽmBÔ9ÚDÆœåWçÇj1Ù:ÁaÈ;Sy†9³Év';£Üȹ\›C»œô¹ü¯òÍcŹh1)ʽÐ0e&þxWÄÞKÕ»–ݨʌO(гÄâÑ÷ŒA•’™$Š7Ž×É‹¢¾ !ÁéÅ®rŽ6IõùqÕ=a$?êl¢À”‚¬0ê®ÊLˆ-S¬9W¥V'2966¶?ºœP £°¬å]aAP9=–¾ Aî„J×óNYvlKtÓÞAP¥VÈ ÜS×Ϲ*µR›Ô]•™à4rõÛ¡«C³s,_Ƙ¾ ¡%ZëX>á~€©'Qnnn^^ž«-ÒÓÓqµÀGJJJJKKñƒš~))’’))\yÀ£­ß;Vƒ.ð®¶Ž.S2½ù2úÀ‹üýnK“î ì‰_òð¢IM;Þõºf"Îåq-öéSí«j2•Ç O‰ÆØ²¬©*A±½³Ú†÷rc®t¿í“áV³™ÚÝìO/n HÉ0—%7¥jcY\q¦"%Ðí½x힌rãXÉÛ–¦ 3y~ˆá¶ÃŒƒ ×0«©£“ºÍ}íºÔžûk³ccåiU³kû‡†¡úü¸ò¯ØWö×ò̧œ÷×fÇ:΅ʹ±,¶ÌØ_›[öûʾ*Wh;бÌ锵އs¨0Ö£éVymöˆx²å ìGGk?h™"þ¡5–Ùº¢ÜäøGƒóz£d€îÖU÷dì’Å]sORô^y\LMM*ÛÐùŒ)%'§IKCÃÖ‡×Dt·®ØœÙt1BàÆ²¸rÓÐòºüâ¬r%ÜØ:´x·nOÆcJŽšLåùTÜÔ8zh+9#a*ÏïÉ:q1UÕ_›1|ˆ±ªÔ ­-ž»uÕ¤­HUÉUeÈÑeÖqêé¯Í®=qñ¢JÎÍù”mëa§­Œ’ˆˆt òx®˜ *SUíWL9j9#î­LUÉ™Òaèì|0Êû Í444×µ “´)ªát;´:\aPh˜®ÅäÆx—I™)D˜’épçm·[…ˆ½ZÊ/«­-nÞ°C=\U´ÚÝ•[·Ac»ü¯ÎÑ&ÓjÀ(€È~?µ¿6ûLh §{)² ý)F‰ÑcíÞgîîÖg&T¹±±ãPX•R¡-‹‹Eoægð"yrF\¸ð Hɳ'%ŠÂ‹ öµÞS™Ž«àû”Ü{*3\­Þs^<¿G­Ï<ÕKDÁë6>vóÛ^ô-ÀÔ¥äàôêSÅÖ­[·®Ü÷IGuz0É9™¾ìkHm(R«Õj{·—÷žÊ W«ÕÃŶ¬¯ÎºXz§ïJÅé¤d7Nv—åöáR²äd¤äÉçäÛçÿV»Ûþ –ármjŒÆe-Ã×µ{OUá^2 %+Üxø9xÝÆ›Cw‰Û§©_R®V«Ã«–ÔjƨESx„v‡«ÕêBÚˆ{É0‹Ml¾dMa‡ÆqòÍji4N¶N¯îHw]§âuG!õžÊ¼Sˆ3HÉsÈÉe( ß}^”gÆÞzD™Å’ÝËÉéÕ…a+‡ÈHÉ …ÿ½àE_¶~=‘”ŒÉ’¼ ó%ø¤d€Ù“’'?_²C †"µZŽIŸ`Ž™ä×½§2“uŠ$Òyõy¶r_}uzpðº5|ÛKš`÷ë±?†m(ÚM& Î `”ì‰ Ì—LΦ@6…µÙ¾…|~7†È€”ì9çKv5²@šÂŽ#[ÙÖ#…%R²§NÉ®çKÞbñ£ŠkÓš˜ÔÚªS½$O¥¬¸ª €”<ʤæKÎÀ…õKªF<_­)<òèÁdµZ|ðÑ#…ÈÈ0‡Lý|ÉŽ¯ƒÓ«³3bž(À(ÙëÇÉàƒQ²»9ÙÙ|Éà”Œù’¼k‚ó%ïÿõ6ô€I?ÜÆ|Éþ))’üÊD¾õÞ±t€·´utyœ’÷ÿzÛüùó‹Þ|Ýà-þ~·¥Içñ(ùÞ½{è;/úñÇ ÷’üR2R2 %ø•Ð3ÝŒû^¢â§òg÷÷*çTcç2¯L” 0¼òÂs3%ÔŽŸœÑñ£±àæ‰FJ˜£þÇÏDÄqÉ>›TIDATÆÂL‡” €OyÄÆR2xëSþñ£±€” xaàˆÆR2 %£±€” ~ô)ÿ€ˆøÑX˜éðΘ ­lbËOƒw>þçðððß}9(9û×ÖwÂü««rw¯Ä/ v0n0“‰y‹ŸŸ¬Ÿ¾ü›½7ÉÅñ|…‡g~ü­¤̳ãë3èõw5FÉs5%KüPàí•w‰¢øÉ¥¶¼'¢”qÎ$""n•Ø  Œ[>eñË0öì¡¶üHAàÜppÍë¯GÞ|ýÜ· cì2FÌr%õ´U®sÖŸ,Î _¯cöö2>HÜíå}§w¥ý¾“¶j‘OVï¹ß·|˜¿š†³ ‘û _í## ¯¿ë¦¸~Œ’æPJžÀò“Õ|æØ_²¾¾œ±úc§¿µJCåmZÍêõk£ÖýæÃ[ö)×å-^ŠŸ3‡¬,2çÐQìzÿ#ƒ½i§½zýÚ¨hMq«­]#vQl𓵭dÍë:QÅO÷­yWÞÅY%ÓÒXïŸ,Çö¾­‰Ö· ¶j5«£5Å­mÅöö¶¾»zýÚ¨õk£¢ßms<œ¼™üO/Ÿ6ÿd>õ²fu´æÅÓf'½ÔöÑï»E1éPn8ン2Õ–òÂw<#ÃÕZ%ûëÓ§_\¿6Ê¡ZÛößœyid9#T¹pýÚ(m›¤ˆßñp¾xW#%ÌÙ ×|"‹áãʇ_Ú¾öÉD­f[¹¡$G/Š›´- âäë˜å-ÞŠŸ+rcT¥m Z¹¡$­²så+Ú×–Ó'y%í£wQl`•"÷4—mbŒ±ä¢æÜÇ%rUÉ´4Öë'˱½ï\ji¼’÷¸DœHë󚟔Wïœ~é_tâ&mËÚdQ÷Æ«§{íÝ(oöʼn×eìzÅö˜<÷dÎrºVyàÌAæöOƒ†?×cÉšðqN¢âµ(Ö7Io¡MÅ®Êíƒc–; Õ*E¾vÅÐp¹UŽS·¯D~o(šé»w5R2FÉŒºjÿååVøÄS+E±ûr«E.¿ÓCŒ…²ÁE!‹‰ˆ¸äº|ºŽÒ¨¤áPÛ¾ÔÑ#á!‹‰¨çŽÙ*y´Á ëm¦¥±>:YŠ>”ˆÛüÛœ¹æ¶KŒmŽ gƒáë»~©ÅÞK¶Í…,–_N[(¥ë³gÊé?)^3¶yç–_ȇ&Ý•v‡C+ÊÇÕ¶ŒìE3}÷®žÜK˜%)ÙÓ]¸ñä±Ý”¹þØPÉË­–gÓ‘åÛn"ZøÐð¥BIbƒ®Ê§ç^²2[ÉòxHbƒÄ‘(~övÂg$ŠÔ}Û"±䨖ñ6¹BÅ6 §£±>:YŠ>µ*×0Ü]®ºÑÉk×Gqyi2¯‡ºPxMÞó‡o‰"‰"1'q5Ó'ïj¤d€9Ê*yvéŒó>ý‰[™6?£l«o¤¿Þtµ751†îðq+¹ñZ˜–ø•ð¯ÿ½IéáÐ…Œ¬<(h9±ëÏê÷?.¶2²:îBãm wZ‰7€ò““Å•íuÒ|ºîPÃòÅNä-±:b5]е÷=ö„ë“8vµ®m+wê õ鵇oÒŠ>|ÑòÒþ&gqºŒaš~` ®fGJfž-Æ“Ç?ÿô".¯J,ð×­Åë_¶÷JL­ÞH¢øy»‘}}xÿeQ”Ç ®Ê==´wâ—ÐX%6hm¯zë3Æó³žphÎçgÎ÷:ÝÅŪeDÔcéccT2 õÙÉrìCŪ½ùíFf5^¹,Ь‹\ȸb3W¯—U)ÙKkzëÕú^I.1½_j²JãUÕc鳚;ZYî:T‹ù:-YôËùô]” 0GIŒ»¿X¥ÞÏÿtûŸ¶¨ <³„±[6ôIlÕ–ì%Œ5ˆ½Uò$cDÄ—wUîÑ2ùøå…‰¢¾ôÙØÉ1Ï=›iYö¡OßxŒÛªZ¸ùÈþxvû;“c~•ô^‡Ää]ì1Þ€qUÂÞìG¨ëãWbå§•Lqc}z²;dôªÜüæ±ÏгøwlVÞÌÕëGY”úö§%¨ëãWbw&ÇìL޹e;ScWÕöÞ†çèKÌ}U-Yî4TÆ#^x;IõÚÍÿvg‰¢^»ùP‡¤ŒÓwïê ˆ(777//ÏÕ ééé÷îÝç€zïXMúŽí3%ÚSgÎ*&{ŸYñ£±¾Æ¹ñøÖ¼+”´ÿüÞ_  =Ñž*)))--Žd€Yráñ£±³%%3¹ƒ$‰Y…¹5kR2ÀlàÅKgˆnꌚ‹DÄIâs«¯’fÅÀk†Ê[çR–²"%R2^ˆ¤dðñ§ü ¿=)Í¥Û«î%R2À,† ×h, %€_hú¢ñ£±€” Ól’_ˆDüh,ø üzR2 % %R2R2¸âÖ— N:…žð‘[·n¹•’ÓÓÓÑY¾sóæÍºººñSò½{÷ÐY¾óã?î%ø ¤d¤d‚i'`Ræ/X0ËZtï‡pZ£d¤d˜V¸p Þñùg÷gtüÏlž‡“HÉ0œÖ]™¡‘ÿ*é)ÇÕšššÚmÛ¶ÍŽ†L²áHÉ0×%'ÆÏİëõgÇG¼Óû¿¿rð­sß<œöÛ¼§ˆåà‰ÿzó¹0ê:•u¸•Öí>ú\˜à^&àïâƒ||íþ<9s>ÐÝxµ7!2ˆú®Ö´™)tͶÈ`a&e5ÎCÖlŠ¿íj°'ñËIÝ£VO`¤d€±HžŒ’9ýµÿ" ^ø¿¸$q¢ëöíä¬óOÙí¢(Rë‘,ÚU¹s9uÍ®húzUÔ«Gv„§®³Ùm´n×núCåaB×M‡]¦¡é÷‰h^Àωˆ!`ÅÓQöá¦@–¶²'›Þö³‹@DÛ ×îS¨&-mÛ¶mÛ·G…ˆ!ŠV BpÔöíÛ¶mK{zeçæ¶«½ÜÞE–¶Þà;b6Œê(¤d€É¥dÆç!ÁADAÁ!œß·ô mÉyÈʰŸËådîuZÔ‹áܹs:±å{ÍD4/ (`Ýp̬Ýãüó€yÊ Y„ÿ8HÉà‹”Ì=]–¦V¾Sú73QlûåÍßILb¶üÊì›}w¹rïî‚ý0Š¢\®ØÆÉ.ž,Þj~pÔö´´§Wp×)J¾¾íàþÀ€_žJÎC4išÑ‚ÅpÎ`9rAŽÜ¸*€sa ó¹sí½Î;“t]8{öœ¼# %ÀŸÈÂFfg…3Fæ»ß1.1âòWþWé»Ö“µZ¼ñÍ]ጠ•ÜF¹êÙâÕÁe@XšÎ]äÚå8q^@€ÓŠ\•O© «æ ‚¥³ûoöà9±_£–¯0 +žÞ¾]‰Èñ¢´ãµnõû4oåÓšiú#%À\JÉs±J]ŸV4ÿ·üúúvˆ"…þb>ãV¶`A(õ÷½|!úû¿š‰H5¾íã\ Û_KSìâéâ1eoû….Û°¸¯×"C95Àv‘÷o¶„2O,½}¶Íæ… ïüÍaw?Pþ¿Çã‘ü~OWëéÓ§Õ²¦ç-.YK¤<˜Äº{zí¯N«0Æü~Fó¢Hâõ¢ŠWP‚Ý'‘iÅ¢V C¦™ŸL+žçM3 ´z <ý·zÝ]qñF]TÌPcßÍ=Ý¢Á¤ÕEËgkpÃ1M«÷íôt}s¥­@jzf¼)éA qöÓš{gÌ*¼³q ÿÖ忯§3ÓÎý§q‚uªÞhp½»ãªãËi™iŸ7ý+-3W#'›16œ§iõ¢Óåèqµ­Z:1¶ûÏ'ú=žD‹5ì£ø%ìÞüšì®~'«£ÇÝ=mêÄ¥óT÷Ôö}ÇÇt;[×–ÌOJ40‡ûZ‚9Jö¢ë»Õ›òôw¸¯¶»]mkKŠK2°•oßwŒãxÄäp_ò²»duÄÆ'žmj(˜9Í’h°•¿µ÷8¬[þ|R¢ÁÕéþ¬©--;O¶ãȘ¦< ôº¯v}ݺnùü€f%™l/¿Uy*^4L»é’²]£Ú÷ýf•䢗S ÆÔ¬7÷YûRQªÅ´áç/0ˆ1W\]ÛÿPmJÍâT‚lGŠéÑ´;.®Y:/ÕbºâêJµ˜~xõÅyoøIŒ>1œ¦¥Á×i3ŸjÏ€ïÂW®Šý{wã˶ì>lûÙO<^ŸÏç ïbzÔB-Û8º.x^#MZ-ðüÀÀ@ˆ.·Ç4H4€¤´¬|ÀÓ×7¸žÛ·¥ò8ÇÁ’–bŠþÝp\¶ýyÏëHÓ£f^¶qDQÖÙÞ×}yë †8gÇ5)愲• 7¿wH’X|brˆ±hõ&*ÎñÔœÿçñ¡ ´4ìƒm¯j\º~gè.×sõcEæ÷ô|sqÃÊ…&ƒèì¸Vþþa({eAŠ9aýòâ_¿w(Z4ò‚&ÔêMŒB£‹ù¢Å!I’6*v,ÇËÖьݽË!:öº¯æd§§˜šÅ¤'”¿ØþÊ‚sÂ3O>ÞÒÙiHL 6"™–!ùñìŠ?} p–´¬1vyqÝÎ{å^»Äˆ ç?pæ|[|òd1ÁhßüûC9Ùéçÿk™”¢;™–!VŸðÄ´ü±"‡±‹Fm™”s¡»×œ1}h±ÌÚ¨˜ ÝßZ&åh‚Ü %Óã1­Dß©S;–,£¢é‹È4™&”…@~–±lñdš ¥â9o¬ºs"îÃJdøÎ ™&Ó„²Lm ¯È(¦iõ&È4A¦‰GÚ4UdÓ™&È4ñˆšÝ9‰(¦iõ&È4A×ÓÅ4ñ(˜Öétz½žfD©ètºAÓn·»­­fD©¸ÝîAÓƒ!==fD© ÐSÀ‘™&Ó™&È4A¦ 2Mi‚Ldš Ód:’:>ºŽE¦éúî"áÚã ƒÇgZL¦‹æâ¯ÔË|ÚV»òLWUUÛ5üùôø¥qG½F@*,¯µå†Ò|µ’×< žçxm¶àÚíµ¬ûûa¬±bÎ/kTÃ9Q’ ·|\šËq2·\]û;?M¹÷žNr;¶R›lûÆMÇ·éöƒ«ì5ªÂò¥¨˜k·¯²VíZô›õÇ;|Òš3ï¾ &å,û±ðÕÛÂ4 ¨üÄÝ­€ÓÑœ‘Ÿ,ä˜O¢øŠŒ±ö†“Í’4Åš¤X§HRóɆö Ï=jœ;TÚ,àÆõ/[¯·\ä87¯(\Ùöýþ gꪋòŸ¡<=–ˆaµ°fÍÍ' Ôª¯÷ó)Å€S«âÛ¼Ç;öyS×?€7VmŸ;øs¦¬ ºÌ0ÖXW]”_z_'¡Šläº}ù uôŽwã¢âô*A íMŽyxѨ¾´Ñ—ñFÇâ¸\[m­m( /[VàØ"_@¸—2­Kîó$t==ŒäE[•Z÷<‡àý«aâ ÑÜîøÁx‘]®ó>¨¡-Ö Õur9ÅÕp³ó’Cž$BL§X3\r¸—ã€LëßbÎ7ýB-‚Ó{!z¤¯îÌX{z@§÷hU|SÙ÷Td`vžåa:^Ms\rÞìL•ªÅᜎ•*óŽáü·Ø…cÚô›ˆb8¸*ã]{â!±@4´“=¬å ü·Âx•µcGãðú  (_®„v:šÆýœ$bòtò¢]去}n –Ë”-õ«5ijNç…jpà5àNÕ§É=õkج=áÊÓ¥ù;ž}Ö>XL½öÇZÙbêL]uQ¾-ˆ¼±žd$¥¥¥¥/ð6aÓ¸¯ÈrmµÙ‚îõ~þ©¸$*À×ø‘øº ¸ø³6UóÀ?øYá[lrm…xOâKïó$£<¾/K¿Âko.óy÷Á¿xœ€6È!=œ®OÈ[ò“tв›®§ÿ?ø9[1gkÔ£Wa,ÚµëáKŸOG dšLdš Ó™&È4A¦ 2Mi‚LG:jõg›¶í=@s¡TÏ{SL+œõ/¿0Ó3gdmJbÛÞ/#£˜Ž”€&ÓÊi2MWY™&È4A¦ 2Mi‚Ldš Ó™&Ó„"Q¨««£‰P$õg›6Ýl?uêMEñ? šƒxL÷IEND®B`‚PK¯9AÃ(ÓéÈ^È^-Pictures/1000000000000290000000DBAB9C9BE9.png‰PNG  IHDRÛU×6^IDATxœì \ ëÇß™öRB²UHˆ¬É¾&E–BYB¹Th‘¢r%I‹¤HD¡ì{I¶][×v“ås¯ÝUH!ŠÒ6ç?s¦N§³·œêäù~2Þy×gæœ3¿yÞ÷y¥ ‚øòùBÃ¥é†6á€`€‚ @¥`‡FÇ6  >ÜífðŒ‡ï<xØ@S†”ê-Zäææ6´!µ…S°=‰£™WÏ3É­vW qT`ùÖ ÖH"ÂûÐ¥û×îå“1ƒ”çP­ÚImªod4~4~ðøaê© Ü‘ÕÒT~L×L`òmzŒè7[Sô*¦øÖH4B›¥Ö$ÌÀýêj6bŠô«ç™ýû J¾t]hf–ÖŠÃ÷¥*$~fÝ^5ÑüÈì´9u[9Ðø1l$!‚M«uôš1äÖÎÿ¹;o|5j'uºe;Ö.&cjØ%^öh·gà‘›o±Îco°îDÅþ±ÕkWâ_¯>Kudn¿fùĶ´Moyë=.ßv¸Bæq 6YŠ |‡3}£\`tLì²1žÑ×3äzYøïñŒÕÄr 1~6JµÇ°/=|Ï3¾_{~™I—šî§¡lí®s«Û(ÉËy r<.^ iUòêð¨é{­Ó‘ Ý÷Y'\ÖPb|{™rØ¡c¤H qÍEoûE¹S˜¥Ê Þž1u›k𠹦¥ó¾?6¢!#­6y¤¹×Àr ‘cØH4B{Ì eÒ«&}kÖ®yæ€ßØ5s²Š^/š_¾GšM öZ=×Ðôî:}F˜˜8Z åC#ÙÖºcWœšÇ‘D¤îô ¿õ2§˜3ë/ì¨I”Èÿº“R=œ¼ÔW×l ñ¾5ÁfŽX×dÒ©ÊüF¬™ñ£««Ù%íMMí]5R×õàù¬ôÛ©÷ï´ÙpÜÿjÐ Á•ð¼½íì{üJ€v y©ÏXñÍÊÿ—ÂñÒj 4B` ÉEx—8)Ò×î]Cåâ-´ZgPó°/D¿r Ö ·‰Td 4;´²‰H=e׿UÑ‹+»½'¸Së,YE]óŸ1dèdÝþýÚ6 CAGÉÈ.‘VÈÐW¨Þxs6BåPþ³X½å@“ül$”º›î §Õúk^É ”“®Žª3yDgÿ§µA¿MÏo=ÚÆ=’Ž ÓJõ³õù+³¤…Λö”GÚô·; §¯Ö$óíë&.˜;2˜è0bþ&òN zÆ’@ÍÆ°·%à¸CRÒt¬üÁØibG‡C’’úUÆ51ÙCS““jc§±±1¹½|ù²à •H˪´ìб{Ÿ!FÓguĪ–5€:G,/Na:К,‘tàñ«êdsÊ-¦;×oÿ\¿*qm'ºï˜È9®ÜÞ5æ‚«VT˜plJ@y¬]*wx¿Š¤S3ßÚ¶Jxv¿BÓ»TD¥Ÿ@§ƒóÑ•Šøg{©mWÛ:±¶”çe¿þùwóôE—Ä=SdêÛê±6í^ æÕ¿YFÕt² –Ô` [n•²-)þ‰v•? XJm‰þþÿ¸¡Uå9 ƒËH!—%ó× ,ï–QVRð53ý²ÿꘌÿ¶D )nõcõŒH‚=cJ7Ñ'‡‹Âw©ÇuXˆNµýlÍm@/÷ TÞÑ}8ƒr°GM¸9! ]¹ŠV¥ã÷þGÅ»jUe<:»çdÒ­¿_åÊ«ië oa;¥Ÿby:Ý«œ”té¿«û%\K{þ!¿”G'3ƒQš~ÐÑíàkõuˆÚhÙçÈ€IÉ(µê:+ 8u‹X§¶Ú¿6?¬]YDÞÔ3hîðî­åK??Kò\‘™¹YR} )µ&T&{®›1¤›º2*ÊùïáÍSQUZä_€:G,÷´Óo4ÓzhX·ÝéPcjö¶ÂjY´¤ôëòÃÐ!fÇ·Gg2¾ )Lá(-¡™ˆ±ô’q)/eV©Q—n1ïÔp™6½Í·,Ýn²¥î@È‹•Íꈳ±/¿ùçý]öžqY¸â¸U{< [‰ÔÏüþŸ÷ ԙʕBµþh›‡í¶ªY²BIÓX{æÇÝÆÓ·Lëfþ(bB‰tçÿÖ$ª†yG\Æ—›'ݦëpKÏáì• (@Ó¸:¯Þ¾úø,ýMÖ»ÏÁàNUVQÔé¡Ù{€Ný4jâgk3•ùÏs™==NEL7dÆO4BáWQÌ 4³kòUJÞìu+ ÑTXIîmGè>{Ô|YÞmÆYxÆãÑ?ă·ZWN:#J‹ò³ž^ pßþò¡ÏI”LÚ]>‡‚ãÏÙw)°ïµef(¦wn2·V|ÌZ€:§ vÒé;¤T ÈŸWðàîSò¯m‡V&æCêÍ0 iP‹w‰OM„]E‘¯&›D žvt4¶´‘üŽØXÈðÛJõHLc+c€)âIÌuf*Hbn«¼€ˆß-˃žfo¼‹?p˜¶Ç¶ _Ã¥å›kô1BÛg’ButC˜y'%èšË³¥bX•«Á¦ýG‹ÑþÓÞ Îi\¿±K)Gé@ÿ#¹SüCßô£ù³œëÏ& ©Pã1l Ã]Ú£ëY¥ÁEGßà8Rñ’c †){I£¥Ä›½e›~Rñ+¤ÙÌqºúmu=ÓÅËX·µlqο—×o¥ÜðŽ"5Úr¼¬lÀì€YÇÝ,¿®;´b„2oée0ÊŠó²ž^ógîõ*oÝ%]G~§6¹õl§Œ—æfg¼ü'íöåx·Ð8Q XfŒ®&£Cs¶uX7cHwõf¨èsfúí„3·ý¢ ÎiD‚M:ͺ½;oÞþ£$ûéë?¿sdPRTždlÑ`o-í6 b! éÔø]âÊ^RÈ…ñ|ýœ”\ouV|÷%ÔˆðÉ€8©Ä«Z±i¾ÞàÄ5=‰p›Q‡Ø@¿õÍElknè'³qæÚ+—ÖZ~]qÀb›JÍæžtFÙ9wP\>)mÙùG‘ "9òˆø˜¶âÊ3ÓŸÈ:âv–=Þ ó€¢ 6 ­ÄÝ;÷çNêÚzÑTÍÔZÈ‚›µ@|5b¢†~¶î"„vâ·© ]?¶xó‘hÇŸøŸÔ³OVUßµI <rfOü¥[¿þT$ÛªS¯a&¶Sõ¥«ñ˜2¦4ÂóäzÙÙ^‰?înšã”1»+çs؈z]‹J[íÞCŒ-m§”*cX¯e±{ú?™”’úäͧ¤ØZ«[oƒ¡# yÈ<ï¦1»GúœŒ»pãÞÿž¿ÿŠT:õi:c¾èÆP·ˆW°]¢VúŠ=û¬Z+}!Ê™nÖ^ƒæ’Âò«[[õògÀî^}z3åèѳÇ$‹Qì¥Hù䮪Aµøq\øÞøäÔŸÊ”µûNžë`3¼•ðb€8©ÍzØfyù²%xÜWÀë´1%}ó¥äïT~/âæˆÇä»%$»ñÏÀ·u©Žcæ,3§­s6µlé4˜×cZ¢ n£`ÓjM‡™ûÕÒl~jMJ5øçÉ?ä–]³YÚÜÀŽïÛ£E_\wl°ßС9V”ýßÃkÇmÑð„³`ët шQ°iµŽ^3†ÜÚù_#wç‰üòðßâÑõ}âp»cMj6‡“Í×Ý=£¯gÈõ²ðßã1˜òÚIQ?¹rʺWþ÷îÇ_ii¨ìÑnÏÀ#7ßbÇ,Þ`Ý©¼ ™ |‡3}£\0ÝýÂËvAg^ËØ„ñlëÖÌ£úgÒ,Ê:Ût6Ë;U[•F^ u OûÒRºÇV÷Ñòåy¸ï<ÈÀa»AnRv6[ím¬À£]@(°6’K½Ža_zøž#†ß;U”›=ö’wÒ¬òà5K¡E”jš5-÷ý±½iµÉ#­|¯ÅfûOx·Q Þ0õrÞ‚‹CZ•¼:%Κʫ­ b´_WW£é–Ëo,Jø#J=û쌩Óǧ%öp+5½âS¨FÍf¤ŸÓýØvÀÏ@B£`¤LzÕ¤oÍÚ­Ö+ÏèYf¬1lžˆ®ÙQ“:)‘ÿu'¥z8éhÑ‘{ç÷gyñ¿?E¯MŒ/ß#O %ØDêNÏÐø[/sŠ83’ìµïÑŽI¤3¬1yò5çl !B,£YÃê,§™½Ñ5ïQ”™Y•–y$Zç„Ði‡PÙ¨Ï2æã¶@õ¨Í6@ƒ#FÁfŽX—cWwÒÏ.ñ›)×fÎåéÓ §YùÿR8^ÊŠlÇ–¡„”ÒÔT×kÑξǯh·—úl`0qü_OiäÿmfN2cuhól´jå/wà ¢Œ4” æóÊ K!Õð­hÄÛ%NŠôµ{×P¹xW]âb"´²‰H=e׿UÑ‹+»½'¸Ç’‘Ù PP”CùÏb²r®k‹3Oh“èÀ³ªQÇÌ<'ûœŽ\4¶ge©â¼/ø5ê_QUö9GÔ&€Žœ‰PÈóžÚ(ãr•7lT6Úv}ð/ Œa ¹4®ç°Ùáè'Ýë‘#ƈ¯9ýGœÖý66=¿õh÷òwMl_7qÁÜ‘ÁD‡ó7!dEGê `k=Â_ÞÀf BsyÔ¥í›~0l§ëÖ¯ò¤Õºô»<â ÏFõâ7XºhŒOn‹þ›Oõ¡#—oŸeë`8¸¤ã»„*% þ/pêpjÒYðIÀ®9àg ¡4.Á~ûê#à7KœÎ#ôÝ)Ït±ï²ÂœÏ}aºsýöÏõ«§0%àØ”rÇÙUäW0^sÄx vàýð˜Ò koòO˜aHÞÐ}·¡{Õ<øÐ•{¯¬,ß±®ÌßÝ!òo— Ã@¢iD‚M*ñµ‹åúÄÞ%NÃr¯ÉVeñ7ÔÔ-:•ÌÙ M€šùÙsžy mõG#l-í6´³d›'ÐÔŒ&9†豨¡M žhD‚*Vëbuw_zø¾ZïZÀüp$šÆ%Ø Và9l$—&(Ø÷ï>Îûö]§»6ÎÎÊæ&ÑìØ¶!­ð³PÿËÜÁŠò :MP° îs5éV³fŠß¿ð ƒZÿ‚Ôr ÛØØ˜ÜŠ—Œq cÅ4ø"Ðqúú¥¹IÑ{ßÍõçN;]þ.Þ²0ýZiiµ©¿òź2*ôM¬õ˜ÄmÄGÓìý»N”„ÉDC2üòù›×¯ÞŽ™ùö#{XAY}ǡܸóŸ$`ÿrÔ‰o„ød4¦Y–¸~`‰› soÛ;üÝ6„V1wJâëÓjßíÅßþ»áe1éि¬k_'Õ¥éöüE3÷DSVVÌÏ/èÒµ)Ò*Í• ‹ØÃ{޼è¨Ó£¡-•lÊnÙ¯?ó8»(5­JÐHz>k?†í®Dl´K"ΘÐN6;Œ»M¼KWjÝ©÷È©‹'h±9â4˜´JÛîzÍ¿¤¿ÈÊÃÔzOquÐÇ©²Œ²çg·Ç$\œQ ×®ç¨éK\Ìu¤Eôã'†H{{ú„P‹¤ßŒ%Z¡Ø´j¹S¸ê´ì¦µt¦¯I›½"O§¾C ÌÖ/7QeÆr.ÐÎâÝOË R^'ƒ¦T®VƒË6ïìý},:TÔyÆg–_ÌÙûïK[÷š`â3M®àÇŸ;×n½õ¼Dk¼sHÀ M:öý™^™à¤é6;…Ç/<É(*Æs]>:À¢ ÖúQ›œ¿®¿eeHX>˜ÜNÝ|—½‡¨Ð»ì m †•™ÀäÛô;?Ðo¶&gžò HF­»¡uàzëN58¸šÃO5ËQZ¹}7#Ë%.f]¬¶Ñ5Ö4éî5™ºµ¡Þ¨¥Ÿm36tv¨÷G“õ\}4w.ÛÆLî¯!“—>{ùæ;™’ƒ*ûŽ;øžˆî}ÁÔbï‡ôÛÈ÷ÄÙ^ɦ–;ã<"’©5[ËÎÙ8mËÆf†ÇíêZxÍv^°ã}鋇'K‰f”a¸ÜŠåù(R}ñG½Nèý=3%µ@ùnÈo eæ(5ù=+ðTâ6 ”ù‡Ï4“M#î­P¤ ÏxeÌ[C©²­â´Hk»ä‘»®:ȱ7Ã(Í{›²©zÑ»¥M?[yâD€¶â·‡ÑÓ¦¬1Jó§oÅÓ‡÷/ë¤\œ™ì4urÒ´;&ddÑÎñKÿñ:ÔEþÓýcžnšŽ`“œC¬O»ñáÞՌ޳£ŽíEz`Œ¥.<•†;’Ú%~fÝ^5ÑüÈì´9¼+$вS}&L?`f#Š õeUÙÏϯïuž1[9í¸!ßœ§º]SµnXêä9l¬Õêu­þXc{¡ìœ)GÒPïÙt e¯å¤KŒî‘Z¹‘•ºv˜ª2Gh/ö¡ÂÓ1"¡sô"ë‘[²Ž{ÙõPÁ0e£`l“¶M¦–keŒ|è%'ÇÏè`ËOÍU×Ïý‚ÐúÏ÷”wFÑÖ)õM3îH;oò]©¿­(oþö•#Ø_zèmáWè–7]«2’uÛJš×Ê; 6‡} HÏ\JOMß1éû!ÿÍtÒ~1̹²Z&ÛÐïSÉûrgÃ΂µi»RñíþvU9ÏÌpÓD›ö˜Y7OD¨\µ'ʬ}ZºžFÿ!½^”Z÷w?%.kpù¶ÃÉ«!yuæ!ØÌ rêƒ|šŒS°Ëíö ®”|+ÑÎ S÷ ‹Ei3xÖLÇñl•1ä; ˜éå:ãkdÅ.» ÜFÖø”‹B]ͺ{*>=ÌëCÁfÞ&õx¡€ Ù­C²ÎôÞËy r<.^ iUòêð¨é{­Ó‘é3V¦:œ¹aªö)qÖT­ñ,¾Ð}ŸuÂõ` %Æ·—)‡]:F÷Ø ïŽ–'¾YÍàY3w%ÌpYÁÛ³#¦nsMs\7Gqn#…ØVkêä9lLyéfÍW»s8[dà’ˆë8n;]»¹4öÕÄd&ŽW)Å>æÍ=þ=‰©aII½¸’D£Ç.õWv)Ðü䎡 •bû½} K JBȬ| Ž«<œªy^Ú‰›š8Ê]Ü1k.¸”’ÆH?”;¡1äÞD²Ú{÷†Šl"yƒs‰y @Íhì‚-Ê›ÎDìÜf±0Éû;ï$nw°ºP'’m­;vÅ©yü2[¢}TRùÃ6¿?E¯MŒ/O'?Jq×¾G;&iÈ#¤1yòt•ã]ÜFÏ5$4½»NŸ&&ÎÕBL@Íì©;=Cão½Ì)fàÌ B›ƒÚYCêÄÏîµc¾Ô¤- 6M.fn•䥈¼ç§«wH–xj%„fzD?ÜoÝ·%ÊËz‘v=!f®÷a$òÃc]vkdO{ßÿsDZÁ°GÎvd¥zYIð¸Ò××9†í+e•·"™î£Ã&OX\v~§e»*Ieî­Exù8ÎÊjƒW'v5ì¦&U™~õX ™Gœ W.’ê–¨·Ö„Ã6øí€à#€ƒÆ.Ø¢Àr—ƒ]“jRcØù)O2Ô¬L>»¼št&3ÐPë¯ëo_–•0g‰Ÿ1B]X2CÙÿλZ$d,¤GÅ” ´75•{ÜãøŸôÌ¢Œôs¨`>+’gq]׃ç³Òo§Þ¿{ÐfÃqÿ«AƒD=€ŸáÙ ¨™¯E;û¿ ÝB^ê³ÁFò¤æFÖˆ:|—8&o©·É?•1¾[í·Åí˜7i+‡g-¸IL4³ïtˆ]ìÇ…öÝ FŸº½zUhîîLXÈ2ò*ÄŠ]lj«èq1 ÔÛÅÔëj7À,𢻢 ª¤õÝÎï0Ÿd[v&f5À]~—‰+hô1YP~ß&37ñà±àðE!3Ššë™a%Ø@¹%—Ãw¬ñžî÷²¬³©K,àÕ¥)v%Á ˜Ûá­Ð“ Ré ¼ÿ‹¿ö T Âó{ìrþ;a95:È1K¼ÞRêh¶{W‚¾ëßi[z!Ú ÙD¤ž²ëߪèÅ•ÝÞÜ©%˜ÖµE‰™Ç'´ÎIt`œ‰PÈóžÚ(ãråè&ÏâVQ×üg :Y·¿6‡ÍÂPÐQ2² A¤2ôøtº?¿¼ºwtéé®Oñ¬™l„((Ê¡üg±•ýÿ|*š>àg ¡4Á~ó<ûç÷RZ­ó¾ågü÷þýûlÖzÍfå òÝ>}Ƥ†³hH` ‰¦évnÎwÒ“FyyßÓÿ÷ìSNîÏÂ"ƒ±nET+µ–ùET—ø”If™¯rš)+¶ÓPkXkEZé²Q²\â¡ö¾5£àñ™˜ãþ|üús©tËv:º}Ã×-«C ëWú@"h"‚Mº×¬ð÷üßó ŠŠŠ A 6Žáß¾å¯ÞàDº×8Ž)**¼~þާ`—/I„dÔºZ®·îT–×^ö>'oß°÷ìŸÿ~•ï2dºí*g“6õl€Q›1lq×ßÂëzñ÷Ècuš•f=M9µ©Î-àGìù?YaEEùÒÒÒ²²2 Ãp #FiII¨ï‰SÆ’©ÒÒRßåW%]DQvªÏ„é¬ÓlêÁòÚŠeú c?õàèÃÚªÄçç7O,C&õ´°´„Rc?ûÛ*¯›¥x‡¨Ó®ÔRcrí{wÚK'1¥OâÃ÷œ¾ùä]¡l‡#Íì–YèÉ`T6ÚÇ¥Á¤UÚv×kþ%ýEV¦Ö{Š{¨ƒ>.b£ìùÙí1 ×gȵë9júsi®&ÈÛÍ–]†Zº{ÏÒÁXñì~6ãiÜæÝço=y—‡µè6pœ©ÅŒÉ½Uøâ 4Á.)*0B‡À.,øYRR*#-M©6Aà8Ž0¬´¤Œ•yª•!1‹à[.§>È¡É1»ìÑnÏÀ#7ßbÇ,ÞPîvßÞêtâ^æOT±òÕÏk¡.¡ñi_ZêO÷Øê>šê›§œ×“+§¬;påï~ü•–† /Øy-o`Æj½‡9vÙÏèër½,ü÷x f.‚Yäo¿á,³È½è¹Üêž<ÿªÉiÆ*Ìu]ç µæcGt§½%+ç4˜W%<àuŠ8«jÔr ;œ<÷8òÒá‘ToåõUÑ1&Þ\='a¦m¤Ût!βòÇÕÁ÷Dtï ¦{?¤ßF¾'ÎöJ6µÜçáì"bž²s6NÛ²±™áq»º^³ìx_úâáÉR¬â²sÂÍë)û&|ªcâ®Å1³’íHõå–á Ž‘Wþ[dœ•¶Ì—×®Ÿ\Šz¬ÁÙ þiì‚}éá{~IãûUy…øý”t ¨ä§œ¼©Õ¤wMªµŒ¬ ém-È&]mÇHÜ'¨IFQö_ë¬3½÷rÞ‚‹CZ•¼:%Κʫå5-÷ý±½iµÉ#ZÆêÓO[*¨È&QáÏÏŽ&h‘f¿¨b0ŸJ8àyŠ8ªj Ôr ûsËK¯QÄŽ/Çý§j*`˜æ4?é‘,+WF[;LU ™#Dyä>Tx:FD"t!óDnÉ"›ð²ë¡‚aÊFÁ(Ø&+l'š\¹¸tðoz-0Œ¡³¡D„b²ãyo©j§ŸÙï¿jju>ã÷át<øÖÐøiÔ‚Í!Éh«ÕüÃåÝßQUU.øQ(%-…aX~Ñ':žÁ ¾}ýñ)'WAI†_=åÃØí죒,è˜ßŸ¢×‹&Æ—§“§‹R#¯Li¡­ÄVpÍ{e¦Eº Zæ‘hB§éø½óû³†”×¾G;&iy4&ï@¾æÜ­GMêDÕÙ”jò2J öÚlV‘Häk&âÙ`w°̯xž"Žª µÃ‚P Bä]¡.WRsÛ£|O¹%õ¯R°;"„aåßm*Œ3¨ž{%‚ó\`nML+KœE¨R°{2·¦HnqœoRˆË‡ˆ¿TAÙNC§Ú¯µÔXî¨L£lÑ)-.c]ýúêqìØIŽ *ʤg‚üÌû–¯Ñ‰¯Ž¾fÙÿλZ$d,ļð–“šÊíZb‚b*/Äíxçá.MѬü)/¡AŠå8 ÎGAÊ<’xÚ#° >W©„~§¨¼ Oýl}”ò½Bû»p&EèBÿ Ô‡Ú{ÂŒ3fÏ€cϰèy&!”€PXRR/Š  ™ùº“r?¼ÍúðæÊïAgŽ­ÚhŸ¼J”‚48MD°•å¾}{/%…ËÊÉ–1 ÇŒ|ýß›Ü/¹?‹Š›))µk×®ß~_sóŒ¦èÇ„ŸÖíÕI@URJÍvïJÐwý;mK/„B{!›ˆÔSvý[½¸²Û{‚{,™g½rHx}̬³"^^Ê¿-rHÌ<>¡uö9GÔ&€gÍë*òä$Šúæ_5ätñÝQµœKŽ<3ŒÛ?ÒÓ<Ôx—ímâÓó›'|™ÃØ¢ØCÓ… Ò ú <.÷"VÂó5Bj9†­º!`¨©÷Ÿ‹Ö^ŠrÛE¹$çÙ͸ÐñN{Ȥ¥6r—•øœÎ8f¦ž}ڇʼةn_â©•šéýp¿uß–(/ëEÚõ„˜¹Þ‡—êIOp<í'C_¾üó¿ùÌÒi#{iéª)@è Brt–q$fÕ†´—ß*šýMÍ–¸Õ­ˆ&"Ø$º½:~Éù»ïüüÍš)2Õškƒ‘ýñSæÛ¬ÒÒÒŽ:ê#ÆöçW»báF iF̦;×oÿ\¿ªYeG¸íL¬r©“7tßmÈ1&Ì) Ækޝ¡Ã©yØ3W†•&úèË(úxËÍTšÇ3‰º±ó&cgÎXaö°Âí]c.¸òÈ ´’Ê̼NQã|¶»–ïÇ”úMw!ÿ¸â1Å!ÖÞC¬ya÷YkÆ0¼£‰ýZ{ÁMpìªÌðÛ[õþDµŸ¹#ù'¬!MG°I†ö}pïéó¿ß¶l¥*--5vŠþõ ßgf}ú”+''Û³o'2CCÛXm oÞÕpùéq mKSÞ%€„Ò¤Q3κ·×P{õüÝûŒœ¡ñî9G×à ž'ûú~·ˆžÚWU9s=„ðžyž$o¸ýø=j7dô’•£Ú—׿b9øÈ¹{Ÿeº´Ûh®G­ É(¹aKäݧY¥gõ„¼È‘ hü€Ÿ €„"ª` x¥ Ï÷„Ð6K˜(4'mœÑ»h„\Ê¢è¯2JsËB[Û¥*t7þ¸Î3oÎþßTËÞŸ^ç;jÏL:>Vy¾Cø*ônç:ßhó=‹È˜ ïµOؾj…–<^¹n4w6 1cØH4" v ^ÝUcÃF FÓK?¾èmŽ;~ýîYÄpIB“™£Ú'¾ »áíe1¬ÕÈ@´Ï›Tjº”ƒiOU¬RJ/ºz¿õ8ëØ¹2†v‹e_þÞê{ÇtëPr÷hú²à~yÒE.l»aä1Œ¡Ij°B”ËA¶c´äÙšà™ hÌ€o €D#®.q§ ½í(½&6B¦š( ëAi›ßM19+õ—§ŠÂ­PV*›f2X¡U¥ÔdùÔ àð'áËzÊU‰Ç¤[öY޾Û"D v)B‹wŸÖªZ–„f “Âq‚W»‚²Ã@r—`o×L'5[~ÛØêzØ$²‹åJ£6+º$ÃJ.ͼ‘v”£“f´DÑ·?ºiñí–7jáÁ¯)»UKwø»n›¾´‡l¥Ô2ˆÂ¯éaŸNïZk£í'ÿ·bŠžrÉ›ÿÙÔoÎ~În¢of.¡!‡s 7 I€Ÿ €„"ÆY⤇*æbWËÃFíœQÆ–9méðjüýªiíÊS4ׯÖݼÊoÏ7% sƒº ¨CJÏÑkñ&׈y[œQÅ6É·Ða¾¾übÝÆk‹ILdÔ²ç…Ͱ P›¦ÿÚža>ûr‡Ç¯%Ã@¢it³ÄÕÉl´Ç°"Ü›5ñ›Ú•:å÷¡SªæçPPÖ®l¿þ;xd¨¬ ×i¿idÕ§»Ù3³Â˜ìÀÉ+÷N– hÌ€o €DÓǰ@LÀ6’KcÖbÏ>«AP¿t³ó¿&8ùÏ#âQ½ œç¾ü’ê^°Uµz®$Ýïȸ<òÌÎNc2F׿uÞz}½fLC›µ…¼§o²DŸ`SB°Q÷‚ma1ýäÉxRg#ÕšÌYç­×3й 4 à›,éÀ'ø+ –.ñ+q ÞÐÒPÄž}&¬»$ø&€D‹VÕœ1ƒ”Ú¨-×îåÃ7Y¢!?Á†6¨'@°@Á »Áزz1¹u ÜY­$ê ø¡5ÆÆÔãC—/_nhC$캇ÁøzÈËã3Ž„Æ¢õÞ͸€†‚”(õ‰3Bv¾«ÏPœù®[y£kã¦fõ ¶»­F"Ò58¥¢‚ܺȊ¡¢Ã^„ ¬ªVß1ŽÎ¦Ü+'ÑÙˆáG“}ÕX‘Ÿ|¬þÄQ½‹4£ôñ±»ÏÞ~ú±HJIY­­fÇ][½‚ºñ‚-¾n"ÕšüÇ3c¿¢-Ú`Cô+> ^¼ÿÌסSÅðfÙPonn#éÚS­O',áäçìò‹'cDAæå% Cüí¢É»›‹®2N2åœÁ¸jw“¹|1Wëâ&}¡Ûž¸õ®ø9e¿güïÆÉ­õÓ®øÁ®{rwg‘_OS¼ä‘»û#ò¤—1!¿¸?žÝqãþ³¥8GIPçˆ~Å'O$…ß"ÖëúR FÙ‡?¥Ü~ðáËOéÚ]†N3¡#ÅæˆÓHZI½Oÿ‹µ¯F?YyÖc)wRßú)­ª­3l†ñ°Ž´ŒŒ¤¤‹7_¿Íþ‰«´ÖÒk„qßÎ*¬k£ý­â ãŠÊtò_ä|-ÀTtzO_aؽ8û ái6Ïä¶¶öš]c0\QÃd# µFi¾ÅðÌ3} È5\Ó’ ç䣉8ºÈJe¿àðõ¹½êQú$>|Ïé›OÞÊvè1ÒÌn™…ž óÜrgfßõGÝ(èwl&cª Ì–`%‘Ÿ×ó³Ûc®?Î(k×sÔô%.æ:Ò\uAÞ¬æâžÉ—Ç3K½9nÁÔbû•Øîˆ¥n«jvÃ`dœÈ%–J3‡;ž8\”»1›±Iù)–]v¿p—™èç8¤eþ÷ƒ‰Å¬R’@ˆxÅ×[6èJðS¹Ã,ZV‰gü¹òÄ…|™‰¾C[æß&¿±¡o°KFH±2à£=쌴¥²GîHIÙvjPP5ÞÍÀ¸ã}üÜ4Üs±KÇâG>{O½•Úa?„ªæ3V†LŠÜ’EÖée×CÔ‚Q°MVØN4Ù‘»Îv›û#ËGûÂK­Ýd>xæ·^ú›ÛV«†:»Žy»»€üDUíÛaµEê(ìSÑîOr÷)3CÅÒÞÚì¥$€8Ý9Óq1ÄŸüRE°ÿen«~cï"T)Øt)^ˆšÌÁ #K&‹¿™Û ÞK.TÆ]Gˆ?Ë)ýž˜C9xë>ýL—Œê.ųn²€FiZQ‡£@‡Õ¨0N.rqž'„ÑPÄO{ÒYm kVÑÔ7surÖà— ÃÔ–Êšl³³CHÖÅ_]˜nére`Ibn{”ïé1·äA¹òÌÌŽ”¾ýƸ¹ž=yú4ýÞÉWÞç] Dc}É$úc 41 ¬Ì~¡J¹­¬S%Àˆ˜tùœ_«óʈ@ã˜cÕ¨¡îÁ®KŒ‡ ¥Ô¨IÞ¦%[X±¥Ûž3vtŰîÌËÜ„˜_óWì$@S­®TLqŽ¥ÚÕ[®±O¯èÆã;˜½^‹«U/„“Ò¥ÁU‰ü0'»Áyß²?}ýx'!özê¾½£‚ìj܈Ұ÷ÑU«¸D<À†ê }87ßÑu›ÝsÔ5Ú¬¶órÆ"t ¡êCí=aƉzçaŠí»c¦ô¾b²²Â9B“J@(,)©—°Ï…¼Çò˜ƒ’Ýñ|ú_y‡få.Ç,"z uvò(’ãD»åÎåóD~DØïþ€Î?B®ýÑ(éSˆÓ·>.¢†ýv°—uK ®õ'ã¾GP¥?‰Æ•ý÷Zéé[Y‹†¶¢¿±ò¦VuÕô‹¶OeŸ¼øï£îÍÐ÷oïÿyz+aÈÊéÜsòÃáê›)d3]XYºH[‚ /¦ÿ1:ÊÕðê) Qñç6›ß²Óh‡®ÙÁ°ÎQÉÉuRÕR¹K‡J|Ng3SÏ>íCƨ.v¥ •Oô¼É£ zh©)áyÏ™ }è¤%žZ ¡™Ñ÷[÷m‰ò²^¤]Oˆ™ë}˜g=øB7t$ìéÒ–/ÀkPC]‚]—<:Nµö *ß̬¸@­E¿†úJOØ8¡8êÆÅ5Û9o9$@R³k=&g>GëÜ‘ÌÊ©q¡S°ƒwn®ß~®Xº…vw“i&#EíšÞÜ€uó°ø[wöHùR&«ÖFÇ ç°Ut’U?tçÒ–K/ÞýDJª‡õ™TÞ onÚïØõǧü– ÑžÆæÎ# ÑZÚ,n³ù Ë›<²6qþøæCÇ̶É·ïaloë6C$å&ÿêRTòž¬/yE YµN“ç;ëÒI¸IL4³ïtˆ]ìÇ…öÝ FŸº_=69P.lu Br“*üéjÕPW€`×%ý‚v÷«ƒ)­t­âÀ0e]s]s$@ƒÀ! ê»]Ùv1L¡Ë¸E]Æ /(T`xh'†« °4`ÉY¡ËXCò;~”Ó‚QÕh‚;^@£ìÙø…E,αËm6¿¬<Ÿ¢SÝœ5¨_˜_ †)±öÂyë"ܪ¥^ëù%‘ŸWGûµ&ö"Ö9(1™#¶º5Ô Ø €`€‚ vÍ™7~@C›µåÚ½kðM–hÈO°¡Mê ìZ‘››ÛÐ&@ßd‰ÆÎÿZC›Ô Ø5~$4Æ Rž ®ÝË ‚]s¢×Œih ¶À}'H ص:€ú±Ã¾²ÄÁ½~³„ é€`Àƒ†U&FÁã31Ç/üùøõçRé–íttû†¯[VãÚš’Ê’Ç"âp/¶ÍŠaK«(°!$¥Ô¶Co#C³‘­¸Ö½1›ø`”=»{òñ¿oòKpYUµv6K\ê­uq‚ €Ø©–X2ˆ»þ^׋‡¸G«Ó¬4ëiÊ©Mâ³Mâ]³ùÁRqnQOÆ0ˆŸ¹÷ý$ÞŸÓm¹][~õ‹’M¼Ûrû>héæ!ê2?sž?M9RoM× ØT£ôI|øžÓ7Ÿ¼+”íÐc¤™Ý2 =¦ Å`üH‰ZyîANqå6<{’3þˆÙ—píþó¬â}'Ùz8µaoâÛ*¯›¥x‡¨Ó®Tµrí{wÚ+´uöÅž $Ó²ËPKwïY:+ž»g›ÝH5ó?eÏÏnI¸þ8£@®]ÏQÓ—¸˜ëHsƒÄàÜ×^³k †Ë·0XŽV£—‘­=‡[O‰:£ì߇Rn?øðå§t í.C§Б°ìþ#ÕÛ-ÒXcdÚv½´Çé.–!…ë=U1ŒÁ¸îµ—@Ó—™r´{>—Zรº"ŽcŠmôú[T.WM6—uçXÊÔ÷Ÿ~J«jë ›a<¬#½ì)»mA("T€ÿ¶m.$ÛR[ÕÃˆÛ¢Ö ®³'¦zYXwÖdUµúޱpt6ÕªéNS{û5ñˆxâÜ·¡­¨K"v|!¯•þS50LsšŠôÈŒ@–ÔR^ûЍ¤™1¬Ó,?Ã{}ÉÁ/Él¿{bþ.ÚÌäÈp‡¹å¥×‚Z§ þM¯ééîN"B±Ù 8–óz¶¨øm ­™›È-Yd/»*¦lŒ‚m²Âv¢ÉŽ<ëo(ª;\-Qôõþf*¤íPƒlF]+ÎÉ•óßÈh>¬­,†µæŒ7œ?‚FXcXÇÉ.ƒÂ#R†ÜÃq\w©}ò3uün=\Ü{îß Ô-]oíN\8á䱋ï~¾|~›ü#¯ÃŠ:³BÌúQJwíÌ'²9SSmò#–ïï†Nz矎ECfsÛÖܾ; z~'¡lØtéo{(Ÿ]Ó^­Z5ˆ l±@õ°™——, [ð¶wrˆfC[Ô ‘ñ(#ñy¯¿²Í j™ëÊ!Ñ„™A䬊"Ô¥+~Ò Fɾˆ'ºN}†â |Y$æ¶GùžsKÞPºÒÿ‘ô.Oêï†óÌíHþM A(…é'éV§ušžÌ-†)’['ø7B¡ËvmZ37˜Û@“Ê^Wt¡JÁÖçµ[ÄûxîIgµ®ShÛaÐܱfmj­Û9ù—Ž)ßÓfnï"Ä\G³­í âÞ½o8ALšÀ¬“›?^:åRéÍcYj_È–hÄëìâ]-,½'}Ë|‘•ñòÕísϾ¼8¾ õ£>”¿™.x/¹P™ý:B•r[i›’K7Âéß¿¢Š¦ÍŽýŠ4hšª^ â[\`¸¢†ÉFjÒ|Š¡#w'šx—®ÔºSï‘S;N oÆÓ¸Í»Ïßzò.kÑmà8S‹“{«ò{0lÔÄ£¶¦·°›¨kÛBªì{aúƒWH·‡ðbL0¼µ[ˇÛ?«/S«ˆzõ4]­ëÉQk’±]BèŸrA~ÂŒ«ø¢25ìßrÍþ¿&!t ¡›¬b\¸è£”‡(èÚߥ­Óà5ý-­™ò@HO/,)©W½ÿª×MÄ¡Y³uc~[> ¤Aí½bÆ ¦“Ï7’Î5Öߟ?ú|òÜnÔÖuîxiKƧˆ“8é_÷˜Ïï³&½_UÍ^ä_÷¡]Ÿy‡#ô†Žï…Ðc„,¢4„}^&;a4zvóq~à8õ}½1‚]¯Ü¹l3¹¿†L^zøìå›ïdHR'ã78F^Aøo‘qVÚ2_^?¸~r)ê}çØ›Ða3@¬œºY2É©.SbeT”Œ¦Ôšt¯Y[ÒÏ&Nzr»Ó:÷ã(®n©ž¹3«Ô±­45q¦4.±tŒƒB½D­Xj#wéP‰ÏéŒcfêÙ§}ÈÕÅNt’ó|¹ KÖžÉ<2EíÉ5üjXì©}*ô͆€›Ý—ë€úßÙ€~3#Ø3¨njêý碵—¢ÜÆvQ.Éyv3.t¼ÓÁ­  'A<Áñ´Ÿ }y¾×ÙÔ¼ÄS+!4Ó#úá~ë¾-Q^Ö‹´ë 1s½ µ§–4™1²qceÿ½VzúVÖ¢¡­òoï cäM­å–<‹Ûû’6¶›?îÁš•÷÷nÊ\ïNi¤šg_ÂéNMiÔœÅ[¼vˆ2Ø £f[eyìç»çT”ú:iŒEÛǧ²O^üwQ÷fèû·÷ÿ<½•0dNÏz°ñóÐõC9;?g‚× q‚-.Dá»ËžT¨¿/+r¨wyçIË^Ë©·{¡m$wßRqª~f¿ÿª©ÕuøŒß‡ó«Vè° VRòçºæÓ"ÍÞ%~£k¿1<~\˜tû%ŠóۮhƒÐ»§wµCÅ6?¥N`ŸíL넬Mœ?¾ùÐq'³mEòí{ÛÛºÍ(?RëXï|Ÿ¨¿M‰ÀyWÇDjüî=ÒÑ{OE9O[W¢¦?Åv Ç} &5tÝ©M§bNœôžú©TFµm=ýñÌ$­ ÀÉðe‡ï¬œb‚ø«] jÆMb¢±˜}§Cìb?–(´ïf0züÔíB©%MF­I¤Æ…NÁÞ¹¹~û¹béÚÝM¦™Œ¤|¬}!™HÚÀ}y•µrÒ£õçOì}½|¡6éøŽ±Vzt¸ ´&Ëò®SGöí߉wR¾ä—2påög ŸÒ™N¬›‡Åߺ³ï@Ê—2Yµ6:=‡ñžfAeÆF›I:C"éܧŸ®V â[,З9iM}3W'g :’ñüTøž‹wŸ¼ýô½áôíâ2Â!"Åo¥»²†Nµ_k?ˆ·Ó,tØ +¥0¡0‘ÓAZŠ­ÓŒv¾SÚµ­šˆ~_âÔ.)¡¤ÏÂÆ»f?aÀ0Å!ÖÞC¬y&)vÚ4šé—2LLl¢3ÏÚ4ì|ŒMÔúMw!ÿªÑ:Gì»*3üöΔYôšÙÆw4±_kb/Ô˜çSÔBcª›SôlÜI¦ÐeÜ¢.ã8s¶[°{9+òT— ©•iÝP3Ô—*ðé”;›ï´òóR`i6ÀRD³µýwsÔUÝêl±Àóç¸$â:ŽÛEÆN×n.}51™‰Wø!ÍÌט”ûámÖ‡7W~:slÕFûdÞ7n 8lL)³òhV» j]ZHß Ó¾ÕEõŠ+2™% Šx8f°;ߘ|g+™‡[žæ”ÒUlj⢘¯ƒµ~¼¼Àì^íßÐM¢èÝý-7Bº_#¾Ó+ ØõG1s«¨$/Eä=?]Åw˜¿ùÌÒi#{iéª)@è Brt<÷Ø[C ›4xß.(óüù§{¿•ɪ*¨­ÏŒ·ï&¿{÷£å!.ýÙŠÇjÎm%nkëŸ@Ã\BR3Š•;t7´^´ØZ½¡-š FÑV??¤ÐQo–ÛØæMíNWD@°ëß­vÛâvÌ›´çá Ë8³jCÚËo Íþ¦fKÜèxî±·6X`®ÕOËs2Ò¯Ëzç»fóÔo¬y·g1ØÀ´m·~´ ¾n¨&W?ÝÎì:FÀØ®gµ&ÊŠg’j?sGò+ž{ìMÀ°¿&óÆhh€ºáÚ½kRA°$žÜÜ܆6; Ø €`€‚ 6õAéí«"/>~÷ƒÀqK^ÖXÔî—¥–½Ä}s@°à £àñ™˜ãþ|üús©tËv:º}Ã×-«qm½O>ÄñÕg.QôâR°¿'•¦‘\jëóº/ú2Øu»Ôoí©ÙY¢K—UTQïе÷ÐqÓ­ µ÷ }Å6<`wý-¼®q<0V§YiÖÓ”S›jSáUæ–¥Ö5–·F"Ò ˆèššÊR¿É—/•ýÌ}ûàÜï@ûSÃO.£_õø«}@°àÁ·U^7KñQ¦]©+£\û^ãöÒI F铸ð=§o>yW(Û¡ÇH3»ez2Ì (»L ™–]†Zº{ÏÒÁ¨xæû‚XnVÕEc¤D­<÷ §¸Òù®ÙµXÀú³ì¶aÒ*m»ë5ÿ’þ"+Së=Å=ÔA½8ç¡1iœ~6âµÔ/G_%ê"~¦²jý&.Yç8ª½.°h§‹Ãrr›tiÙDã°bÔëà•-í©•ë’LÆÈ>9y6ÏR$Rò-:µŽÜx~üïç—­[˜ì«‚8–æµH±`û9à^þX“q¾ºvŠl  7¨ˆ‰ðT„pä¥Ã#©,ÞÊ5ê«¢cL¼¹zNÂLÛH·;èBœeåÅDvNØ¡y=eß„OuLܵ8fV²àAë’C3üâKdí¢O[¶ùk¹(¦¤Æf ]¶ƒï‰èÞL-ö~H¿|Oœí•lj¹3Î#Â!ÙE”âÕ=4ñQ-Íæ‰‚Í–ý³{¶`¾_ègª°8úø4õœÓ³l#f6;Ÿ8ŸZ-Kèébo‚ã,Et [òöÉ’èÌh„ƒ©û¹Y³„ÚŒé{#ä†nnEÈ›#‰ç"Å‚íç€×òÇ“kf§˜Á®cØÆ0Yå6û 7wZ<¾Mݸ½F0J__;›xã¯'o¿”âÍTÕ5:vÕÝè½´Î-š$w˜[^z"v|!/[þS50LsšŠôÈŒ@–•+ÿ¦×‚tGt“W8„bò²Òˆ}ET…3;)bX§Y~(FÐ’…Ü+~²#týÙµÃT¥9BTožŽ‘CÈE”âÕ=´ÆÏ¥~I6ÎëÙ¢ÂÑú™úYh±’ŠD ùÔzZBO{ho›„Ì/üðÛZpÅåÒfêîÐ|¡(G£ËÜÞâN¼H1Oû9à¹üqMí Øbêb*ýùùÉ«'7ÞV™×¢}â„Áø{ËÌeç¾u]¸~“w¿JŒü¬—n&D#$D°Á·h†P«¢Hv’˜Ûå{zÌ-ùµ©¼¸÷dn1L‘Üâ8!´-ú;×»|¯Ì¿¢BןíÈ\”k3ßõËÀI§‰!bñêšø¨ÖÔ3Ž¥~itÙ¤TègªWåÿ+Q‚'ôtéòŸã†)._%{>¨øÜ²×íÞ§’ë(’_ós;œ;Að"Å<íg‡ßòÇ5µS,€`‹ LZ¾Uoòž= Q‚-`¼‡ßè ¿"B‡Í¾û/KÌÇÕ7EÎíG¹T5ô ­ô y–bß….q€ÆE¥Q;›!ümÁcص\¶fŹ—Ábª_ègZe;%м µêmæê·°|ÆVµN÷YÂ0ù%Íã}ò ¢›¼ 󌌌e•š·nߥ×üÕ¿Ï1ìÌËÇå·H±ûÙ°ü±èvŠl±@~K¿¿MÙ´ 0åúÚû«P‘Æ{ø¾"âÇP„n² @²ýÌ‚oPØSù-R, öHË‹bgý‚-.¤›iö‰ˆ眵2ºøŠ,† ïá7úRã!"t3 >E¹§ ‘?3‚éÂbC–ªößš"Ô‹bR¼f ÖRøñòs>óhÿ†¶;Dá›8Û³!;5Xµ¡mDã±[Œ`X-ZÈ&ó„û»­í÷ð}PDð°Yó õ#&yÝpZy&|Å8ÝÖ²ÿ±§ÎDè8ÎØþªpYÇâ®ÿ™!êüæ’šQ¬Ü¡»¡õ¢ÅÖê m ^ŒŸãÍì1•î“WoXªÖx§Ô4*;A°ÅKÛÍzhæ?é¢Ó#Œ÷ð}PDð°†ö9vvolb ]Dv‘”bóv:úÝ{•?0c»kчؤ%SQ ßê uKëÑvëGKÀ3Í¿ b5Ç0ùúy¥–­Ô›¢‚]Çp|´X‹­¬ã=üF_:l†)ö1s"ÿx%u™µ&Š÷ËzÏW`$lÉÆÎÿZC›Ô ØLˆså ’<"±ïM l@°¨ð¶yh(@°kŒM®÷â•:ÝàÔ~l@rÁ®9ÑkÆ4´ P[xÞwò\É# h(@³Y@°kEnnnC›õ ÷b¬4˜´JÛîzÍ¿¤¿ÈÊÃÔzOquЧ^Ë#`UY?DHt@³M@°¨|OD÷¾`j±÷Cúmä{âl¯dSËqÉÔ²!V•¥Q°Ù²vÏ2÷å”Ðì_ljÅÚaªRÈ¡½d؇ OLjH„Î!D ¶Ð%b7ÎëÙ¢AW@I€ZÑ‘¹>&Öf¾O—ã8bÐ1B—ˆÕµ®à^ÿ‚€`P+p6ÅŹԷÆKĵþ5Á@ŒX"¨ Ö¿, Øu£àá™=ñI·þ~óS¾uç^ÃÆ[,œÒWÜ àWDÀ±@ µþ•Á®cewÖZ¬þ³t̪¨=£:+¼¾±mIÐòó÷ןó,š HÜòÀï™l~aKÄ‚ö@µÁ®c¾­^}»רå=®3%ϲ]Æyï:xcÑ-/ïoÉAª¨ê³§„¬Z¿‰KÖ9ŽjÆÞñ‰UÉ´ì2ÔÒÝ{–Üü*€`×1;þBG«:±EuZ…ÐRt/¡U¬8…ÅÑǧ©çœže0³ÙùÄù²H„'Ve焚×SöMøTÇÄ]‹cf%ÛÕÛq v“ÊÜjW‰ëÌ–RŽŸ…–†iNóC‘E"ÐüåH„'VƒÓka Å%"‹6À¯vc€ÐU„^!¤[÷º"¥½*ÿ_Aˆl¡O¬ödn1L‘Üâ8Q·–ì:Æqºúmxƒöu®ˆzDm س=A¨oùÿ$Ft¤Ð'V¹r~@°ë˜æëýN\swq`rÔÒQ ÞÜØº8“À‡¬oΞmM|ƉiêÙ§}52íLGÖì‰UŽõ”ï vƒI <rfO|œ—ÍÿÛ»°&®,ÀwFˆŠŠP)íŠAŠZALUÖZ•"- ®"A塨€• ÊKH¥"o| EYÄUk©"*V!Z‹[m¿­ì® -kY]|„¢D[Ë£3;I(’L&*äüÎÜ{sîBŽ“ä\2~jgŒ²b±#3‚ØÓz×t=åyða0ŠÅŽJ^Í4BÅ*E ak6ÌÞ3‚ú #÷’WõŠUš¿OL  Ÿ‚„ ô°rtïÕCˆab9å=¯Ððù–Ïö¶G]ÄÔ7ðg°õ$ìç ~Ù@?BÝ]Iâ—»åkWgd}PÏìb¾œ1õ äl½ @ÃÆ¸¥£ t=¡<Ô{£\$IÀŠwÕ}†˜5EÙK*kî=eXØ:²9ë½ì yçbÞ¡S_|{³¡ÝtŠ{ÐÆ0—×hÖ@Öf8ûUͽVÌôÍ·]ç{ù,d™Ðµ+žZÎ:Ñ)ÈÙú 6@C>þë²I¦†¢4¦tW]MbùEñ[ŒBóŠ<Íœò âE_Cç ½EY¿]X³z×-bN\þ6 ¼±ª8!Ív„ò*¾ŠWègmØt«êòÉÄ:BÓN3µì:Ñ5ÈÙz6€I<½W#:š–(Ýž¾r’éï×»JwÕÕ fÎÞ&*fÊ"f÷&¾Í¼äEuíÛYGumŽ›#~ý{ôô<ú5Ô‹â™XýÚx¿…i9ÁÁg³ƒd Eí4SË®SQ´6@!É3ÀÆL{vTXøé.©g¼•AÌ â϶]g’M|© JQÖ<+>qì–f »"ß]—s%ùCÑ1ÃjÖ¢à„àƒhÚi¦–]§¢ º—×z6@!³‚Ò]u5ˆéŒÐy„¾Cè-Ñ™dß¹ÝÓ#TÙ}®l Ã=“»7 ë„·+6o/-ˆMÄÒ´ÓL-KQ‚l­Ÿ až•f»êÒ‹|þhG|Év×&¾&!a’®ëâŒÛ;R+'rg[àoœNê›C³†ÀÌ҈Ŏ“-mÌF*Eh°$Ž¢vš©e) ¢;­õ$l-“<ÝG8|*H4ën|˜èâ÷7Áo t±«.# 0Ï<úY{OÛѶsƒƒ¢}º¯Í;pÐ 7¿˜¾8©ÃÌÞ#hëTÚ5d;“Çòbw\¯{D3§Íg¯¦o§™Z–¢ :!ú ¶nT®¹Dž|_RRB^âTR'/zI¨ƒ&1ÈvÑìªû 1fúÇÍô—?žé‰wáô¯p &S=C©•Ûi¦–]§¢ h$lX€¥¦6¿¿õê¸95õ1Z€£Ï»{i FåU£þ|…ŸÀ;Sõ —n§`€„­Ü„eIÁ_Æ:¢Êà/ÐÈî㔞„­´hUºÊ³ã¨OrQƒ“[âýÚ'¼×äu¨À€ [7÷Ï@~IÛ[ QR zçSG´BªSiÑj¯jÔCm¢’P_+# ³ZšŒòbU`À€„­fžÁpÛÃá ĈL1ïý4µÒ¢Ué*OÉ+f¬®³·ÔŠ`À€„­+¸çÞ {87Ñ„\vß÷›©U´:Wœ˜¿ïÊÙ74Ž _ƒ„­+ö_ Û¥VÑjxààsG:Jïó0ߪqý$ì@­¢UCÿqãùûVyäô½R×Eñ+€—$l-STi*ÝNS0*¯u˜SØŸÄû,‘¤ÐÍ-€ ÞPÀ »X“wå#Ÿw,‡þ\wNüŽœR^ôŠÐ É>°™rAÂîÒÆŸ¹ëïwÚGXL|ßMˆ¿ù‹^øÈΤ8}µöǶAÃF˜½Î»ÿãÔ½([¯AÂî^uâlsâ(€öT¯Ž>(Äý÷-ËxrçÆ—'w¿è.³õ$l€)÷DàÛn€c&c§³¹‡¥{ɯ¸Åu>ìU+–ã¢Ð?YÊì­‹¿>ÑndSõ ­˜ËcCÆ:{¼Ï‚a6uÁÚ¤Ð9ÃeJÕÚÁWÛ_ýËr¶~‚„ c B—Z¿$ÚuÞÛv66vÓìÇ™ôäÔkåiy §1l­Î^ÆÍ¼v÷‚í=¯ÔX$Ïe›ï•/¬¾ŠŸž,˜ï½¯pcÎ:Ad÷˜¡!¹Ÿ-6P²4ˆ—ê;ülY £ÏÔÚÁWAÎÖC°rlÚµ¬9­à­Õ‹ª/R—„±Ó–‚xgCIטּe’ƒW&sEÛñ}“Pz÷mf› BžåSÇñ¢ã%ÁCè B= ;ÙËr(†1'#ÞÆ¶Ã9(Ûgjíà €>€„ c}pzá ájjk«¿9y¸â~ëå´4äœHu‘7‹³~þuMýÃ'íTN¯’¾íXq9¢äØZ\HâÔ8RzŒ]¯+ê›°ÕÚÁWÁ嵂„ ÃŒFOœN}¼çÁªpÛ„P­¤=mmÎeçðN,±i€µ¸¹ùâ½7õÁ¥R)® ­ÖˆŸuÿKq‘;ïÒ€l­Ÿ aë)í¼BùìÀ㟻r¡Ót[K³axëÍ‹šÆÆKºÚÅŸ† D´Þ,‰T‚ÖÖ¢;Ç›7–ˆb2–‡Ë€w_4½ [ËžõêóŸñ9¤g’üi«oŽĸã¼QpõÜÍòßó|ÁÁ†¦Ö6’af5}ax`¸¤+q7'mOáÞ•î»ñ¾Ûåªî)?ȃƒQ,vTòê¾ï8C°ó®­õ$l-{þÕ«/C½¬öD7Ô‰“Ž×mhDù¯i9€„­eêV¯2Q­kX3#(Ÿ'@Öûº~ЄLÿRqb""Õ¡ª8#M%k¯UÑ»s1ïЩ/¾½ÙÐn:Å=hã©+%íÒ×ÙÒÇ$ÙYS”}°¤²æÞS†…­#›³ÞËÎP¦|–@†¯Œ›å½!néx9WÏw¹õÔW5l­ÁÏüÎzî]ô ³k©µ…™Î~Us¯3}óm×ù^> Y&êý„ ‚„­eêW¯Úì¶BõG7C÷bZ¨+KË=6ÖyZIªÒ•V²*öÛ…5«wÝ"æÄåos°À«ŠÃÊËéŸÿ­È/ŠßbšWäiþà”o/ú:WèÝsOc,Ï:ºrãvö¢Ð²ý!yK}7q#ɺè*£Ì\’ÄÝù¸!ºŽ<1Nœòw„ò*¾ŠWègmØt«êòÉÄ:¢Á úHØZ¦Aõê2§!ïÊîô6Æ< ®,í3_G*Ô¡*QÅ4Ãöí¬£º6ÇÍïc5zú žÒï@ÎÞ&ê&)‹˜ÝU¶Í¼äÕ=`ç*;S #LJ T†Ð „dv]ýŽûˆú_Ë«YÖ3Ë ­izÄý•LõÔ‹>™XýÚx¿…i9ÁÁg³ƒJ?ð2'´Ð $l-Ó¤zÕ8Õ…p/?“üKTø¦©+K×TcQ³Ò:T¥3ªfØYñ‰£:ß â϶]g’*[êº'a‹3¯¨d‰^¢&d#TmxBõŒÉC[eY @á“ U¨Ìž:Ýù+ÉŠÖưšµ(8!xFß' `@‚„­}êV¯bØË‘ àZLíÿ¨&¿ ƒÅOÿª^‡ªhF#Ð £ºŠªDh®Ü[ÊãŒÐyê"¡·Dg’*Û^·VT˜+A’W·´‰^•¿ïïÖs³¶-WɲY6Ü3é°{³°¾Ax»bóöÒ‚Øô`A¬ÊK€~ ¶–iV½Š¯ŽFDzj#„¸t•ʨX‡J3£Šh†…ÄXgÜÞ‘Z9‘;ÛxãtêTßœIQƒã×%í‡ÈI½ƒÏíˆ/¹SÀ5 Sã;x)¾“ºî\À3•44¯sñý¡3þ*wF™¥‹'[Ú˜"TŠÐ`ɘ>/«ÓŸ@ [Ë4«^Ű…iƒ³¶tP (Íý÷ PëPifT1ͰAó4ÈÍ/æ‡/Nê0³÷Ú:¡”µë?¹¶Éà ÉË‚Œ€Â<óègaì=mCFÛÎ ŠöQãnv&@8ÎÚÙóÞo“,äUM¤AÎÙÎä±¼Ø×ë‘ÆÌióÙk£U ý$l-Ó¬z•2£LÐ'õÑÔ¡ª8£Š•¬ô1]8ñ.½Þf쓜ïCÍh¦ÜL9¡údw¹—¼GŸ¯Âøãî&S=C©5#õ5`ø?a#k­ÿ€[IEND®B`‚PK¯9AR­\ÅgÅg-Pictures/10000000000001F5000001324E0C1690.png‰PNG  IHDRõ2lÇÞJ[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí ÜUÓúÇÿ©4iH*)"šL!Š®2”åJQŠH·«tÒ¨L‘¨$É™*¡¢ÒDJI‰ºi.Åÿ{­{—mOgxÏyßsÎû{?>ÇÚk?ëYÏúí½ëÙÏÚ­'Ï?ûúB@ŒC ϶mÛ2nPB@üßaÂ@! 2ñ{F^V J! ÿ]÷€B Cÿž¡VÃB ×# ~Ïõ·€B C¿gè…Õ°„€Èõˆßsý- „€ÈPÄïza5,! r=â÷\ ! 2ñ{†^X K\€ø=×ß@ E _†Ž+%†uèСE‹}üñÇ ¸òÊ+K•*½Y'N,R¤HëÖ­£o"I! „€0~oÓ¦M¾|ù¦L™bŒ?žòý÷ßÿÐCm޼٩ŔᯟþÙ[ÿÌ3ÏÜ~ûíÛ·oçLW©R¥®]»Ö©SÇ)I_FRãÔµ×^{üñÇ;²­|ðàAFííÎZÈ©’%KwÜq×_}5¼’¶fÞ¼y÷Þ{ïÅ_\´hÑýû÷Ûúh Ó§O§ËïAVE£J2B@äN|ˆ,"C‡…n»ï¾û¾úê«ÇÖæ0Ož<¿ÿþ»·¾lÙ²Tò Ù-Y²ù & >œJçŒÙ»wï¥K—Ž;vß¾}>ø ólö”o»í¶üñùçŸ÷íîÈ#1bÄÎ;¿þúë'Ÿ|òÖ[o3fLÅÏ;=;w.T¨¯Â(+íŠR‰Ä„€ÈmÄÃïåÊ•30Z¯X±bÁ‚ÀùÖçÏŸÿØ?þ¦Nºzõêß~ûí°ÃþýGНR¥Ê³Ï>ûÓO?…ß}÷ÝèÑ£™EÊ—/ÍÕªU‹ú5kÖÀ³ñ9çœóË/¿ìÙ³gÈ!ÔwêÔ ¶íÓ§ånݺ•)SfÀ€”}•¬Zµ ÿì³ÏxcèСÃ\€at„a7ÜpCÏž=k×®M[ç_Þ¼yyù æ„N`2ã=†(Ê Aƒ¨ñvñôÓOÏŸ?ŸSXræ™gvìØqÔ¨QtÊ+ÎÉ'Ÿ|Ýu×gƒlæ”ùóZåµü²ú¿BàOþ°Vÿ¯´wï^HÐüA+ÿ«Žóÿxýï¼óοÿýïjÕª¹Èøþ[¶l™WzàÀ&H‚·K†Sxôf÷ðÃÇ—ÿöÛo©ä JK|•ð6@´gäÈ‘¼ ¼úê«=zôˆ^¡é—Õ`^GŒ›ïÛ…Ë<Þ<oiXš¦ .(³ny”ILtG ¿'px„¹›7o¢ß¹AƒW_}5Aí^x¡mÛ¶¥K—FþòË/¿é¦›lC`)›8 DɼoÏš…_¦û½Š¯äO?ýôO<ñ¥—^bþ ’ÎJ©Qþ6`;z÷Ýw)Iç7¨ +L× "é7Þx#ŸÄôêÕËÆ”8åµÙÙДVYîm¥! r3âïÙùNœ%V‚0õêÕÃÏ}ûí·gÍš…ÛËç†ßÿ=¤ÌJììÙ³g̘ADž‹5’¸Þ=!þþýûf1õ¾Jˆ˜#Ft¶-V¬S‹Æ‹'~²bÅŠXµ¶ð믿.^¼˜¯b{ì±§žzŠï™„8ëÛ…me ¦(ðâ‚A!º63¯Í®¶N«‚,w5Ñ¡B åøooø¤z6l.ÿ=÷ÜCŒèhß¾=^6K¦;>>´Î2cÕªUïl.$ž>…G}´eË––²¡o¯˜š·t^qÅÄXX5hH`pÍÌ™3½7¯wÞy'_ypoÖ¬ßqòa;b¾]¸š³ÄÊ×A¼%°²ŠMó9 2¾6»Ú:­ ²ÜÕD‡B@<Û¶mK}øäœ¸³!Sc-î0‹¢L|‘BìbÒ¤I¦ÞdÙ“?ï ¼J˜Ep¢ag—0.<“ =ºê#z»p5aZ2‘wÂ÷Ì^ÌU„Øìlî´*Èr§¼ÊB@är|x0ñRpпò]¹5#ò*!pïŒÝÛóï˜l9¦‚· Ws»¬ÊüaO…Øle(8­ ²Ü)¯²¹ôà÷‹ÄÎεÇIB@ä*Ò#>“«.‰+„€H)·¾šQI‰B@ˆßu! 2ñ{f^WJ! ~×= „€ÈL¿Ÿá_fæˆ5*! „@î@ ß¾ùÇ÷¹R!i„ñ;cåßLæìˆ‡›–³¨w! „@š"ßSaTƒ{ÿ¹yd*Ø#„€i€ÖWÓâ2ÉH! „@̈ßc†L „€i€ø=-.SœF’9ä­·Þb{dò¥D¯‚“M’¬è›HRD rü½M›6là5nÜ8³å!æÈž1a„ˆ¨;Z²°’¿ô /4jÙü4~l¡N–m³Å1Øq—?Èã ¯ùÖ_uÕU¨b[`€°½0[«wíÚÕeª`§õcŽ9öˆw äÔ¡1Œ]…!îråÊ]tÑEl…ïÍTnÍûðÃImÈžõ¾éJ¬˜«ðÚk¯‘ô•½õ]õ:B ½ˆÌ¼?üð?ÿùÏÛ3Ï}ÈнhÑ¢nݺ‘5tÛ¦Þþ"@Þm’êÝu×]$ȆLí©l(˜4~з·/rû1É1ã’dêî»ïþú믙n½b¦æ“O>9í´ÓjÕª$^bFxCB ˆ*>Ãnã|ðyé\ã>“µU«V$Å^»v­9KÞj’V“<¯]»v]ºtY·nÝ›o¾‰CݳgOrìrïqxÉ%—P{ÕªUT¢œ$JäEru‘¼CÒwÔ©S‡¡­Y³Æ·übr’╬F€ì€ä–:÷ÜsaìÙJ,oҤɀ ß÷Þ{ÏÔS¹zõjSæaÉ’%”}5àeÿýï?ï¼óÈ … i¡V®\ ¶k³ =öãO:é$rNŸ>ݤrõj&Ç!9qÆÑóóÏ??ùä“\æ†AƒÙ•}4½¸Ìpi-QA”E *~'¹FGm™ÎŒ'oÞ¼¤OêׯßÂ… I;g*¡h~¯]»ö7ß|Cð–9þøã?ûì38ÒõíÛ—wÂSäP…CwïÞ½aÃKš¾x}úé§°•ù "e߆¾•túòË/Ãt¥¯öê¤zÕ«W7C† …_ýu²G‘ÖT’;ÑÁ³P'$n!¢¹ÍñMÂUF¼WŒ9’Ð »;vìˆ Y‰ 1‘aÓ‹ï//47±r¯fhýŒ3Îàí=\>½"Ãeâ¥ßß(ô5ÒœršÁTç2Ò×U !RDÅï$Æ»å–[ø·NðÓzX Š!P w,_¾Üž"¹ÒСCñÐáŠLªÝ»wç,n;¿°ÿÖ­[ñ‚kÖ¬Ù°aCâæøøL!LTZ%Þd1™?±z¢¯aýâ{â‰':ù.$0-‘•Y„<ÚF-sclР©õ˜H´M=qí¥K—â}÷‡L™ B²úùj@ž?f>\uc ™cÉ/ærøˆˆ/6øjF \ ôp!ˆöT¬X‘$Pdëþâ‹/Â5sÖi†×ȈÍ% „@Ž#Uü+Ï>ûl²B“uÚ&´Ãÿ?~<Ë­D](ÛÌsÃ;&´õÓ‚°CýñÇ)Ož<™¥? œÅ—7 be| ®k}ÕW,šJhO:¶i¸]­xà s7SÖš•ÆeË–±ªiB(3.~y)Áþ(£ó¾Prß}÷ñ*¶ÄÓÙeIÈ! ™H¤ÙÙ–ÀÑûï¿Ï›!{¢IÎSÑ”ã62å’B DËïô·x1vðš?uêT³GÜÙD£1ÞD ²&v|2dN8á„ °ŒéŽù ªÅçÅ‘g —‰ŠÏ‡à÷áÇû®ñ®]».™ïvl\ÛœeÚ£@+X•‚¯êyáûEÂå„õayœn*]ª¨ñþñ&T¦L¾u¡ þ\¶9å¿üòK–¸^LK®ï…\F:[Q¶føéÖ¡)…@Tñc1¼ÆrœµÞp¹¡çÏŸO|™ 7[ßB½zõpöÙŸrÖ¬YøþóæÍcm_cù Å·INU’ÜuÓ¦M“&M‚ì„Å ì˜aš8;®ýQGõÊ+¯@¯, @£– †ÞÖ3°¯¾Âd•‚0Ëßþö7z12–/_Þ®WûŽI…pë¾xðÕìlÈú*˜—-[–`=˜c•9ë5ÒÙÊšák¤SRe! Røëùâ*1Ãhܸ1ñ1cưd‡«Ëú!Ÿ|D3ÂbÅŠáã̲2É"ÞC=D0‚æøFC¶ÉÀ‰=zôàKØ f}’Tœz–.í×¢¼Áðñ(Ѿljâã–Ç{ ÄøJ/›}5€/F—^z)Ÿñ8H^vÙe¯¾ú*àxG t¬yðöäÂ"‡ù†ÒW³³-ë÷‰nÑœCyW0!x¯‘ÎVÖ _#’* !‚æ×Æ¿æ‹òˆûGîØ±ÃDÞYu$FÁ?½‰~xµ°! ‰!MØ?2Õöc¤DoLÅXnþµ¡|¸7ò5õÐ"ÌëÅÄ«˜(…‚Â>%J”°5Ѽš­ìÅ¢;«9ÈHÓÐi†×H§r•…€H5bˆ¿ûšnÈSæ_·úÊU_5èlÊÖ{Gêäz§Ù¯œ‡¶ìÕ`ÙÖÊð ·Òž *x5;%íÅrj2Ò4tšálåT«²©‰@Vù=5G•SV±tIŒ;§zW¿B@'iÀïĈ”åÃyÍTB@Dƒ@VãïÑô‘EþIN5¨¹B "þ{.¼0²B ‹üùÁF©¹B@¤â÷”º2F!0Äï ƒRŠ„€)…€ø=¥.‡ŒB@$ 4X_MØXÿ§Häü ý_LF@þ{&_]MÜŒ@´üζˆìA¸~ýz³mdn†LcB@¤‘ã3ìXË‘/¾ø"ÌÎXlÎ>$¦àðØ ‹ýRRÐ0™$„€È~"³!;³—$ûܲ]-;‚‘c|³ßЈ=’×›\K6 lDy ! 2üNæ òHׂü«fgs2Zðg@á,YW­ZÅÎÀçœsN‡Ì^¸P-‰#N<ñÄçž{Žíï¼óΕ+WR&]ïÞ½M6»hd˜KHê;ê$š@¾V­ZôK]›6mJÚhúå°Fd&BŒw 2TÔÞXד? cÓó¹sç’P=ÖÍžé™}]5:! „@„ø;y-ˆ¼Ÿzê©6m……Œ¸ IJIqóÍ7“ßcÚ´iäÁ0gÉÕGê82ùÁ³8ûä”`’ ÷lK"é(eØ—ýì9NnRzÅ%‡âQHRÈdÓä6â9‰¶¤³ qàùçŸoLÂH¼~ïDeíQA!IDðßÍnæ‹/öޙĤT’¢_Hæ%K'¬j$ Â@ߤ…[ÉéL8‰KI¸ Átä'Ož|Í5×°œ‹|y£L°;eº€Ê]j9Äâ6„†|ðA²ß}ýõצcÄï^¸T#„@F"Á‡¾ù"…Ð6G–*UÊ aXdSIÖfØ3)~ q4“ënröRvr=!#^zé%fR¼²JÒP§„€™‡@ÿN'É2Ã0`ÀÒ¥K È@'6ÁñÓN; —|Þ¼yÄè Âàn7jÔ/;QÕ«W|r|º3kÖ,&:b97DyµjÕˆ&­X±‚…Ì#âOD¨uëÖ|óC膆hèҥˢE‹B”è”B cˆà¿3ÎŽ;B‘|‹Ò§OáJœz¢ü+ÿþýû>ÿšÃúõëI .tÊÂìÈ‘#xàÔÒÝ]wÝU©R¥ .Z¶lùå—_öøãïì³Ïž8q"¶aXõêÕYt¥Õ®]»Xìå7Hƒê…€™„@´ù›}à¡óKÐÜÂÞ¾};¤Ÿ@ÏÝ…ïÎ;é‘`º«Þ÷žiŒ…8òû÷ïgžpIjÿ :B #ˆì¿›aØæ»u/ ð©·25^‚Qîän¦œäÍ:!6è”B ˆOeƒB@Ä@˜ÿ>eÊ”84ª‰B@¤ñwg # • B@!þ»ù—«1é’°B@¤Š¿§Îµ%B@D" ~O$šÒ%„€HÄï©s-d‰B ‘ˆß‰¦t ! Rñ{ê\ Y"„€H$â÷D¢)]B@ÔA@üž:×B–! ‰@¶ò;{:²!{DóÙÅŒ­€É¾QRB@!„@<üNk6…7ÙPIGÒ»§Ÿ~Út@Ú“‹V ]Ĉ@Jù­1Úž™âáWDüž™W]£B@ÄÌïdÎckß;v»$!0qâÄo¿ý6IÊsZÁ˜{®uÄ‘r3³3¢Xæ ÄÆï伾ꪫ:vìØºuk’+e3mÚ´¹âŠ+Ø›ÌôûñÇ7mÚ”,}ÙlFÄî°Óæ ¡Œ‘ü‘ͪK—.&©a¸ö×4›ã‡‹Åqö²Ë.Û»w¯³¡­aƒÏ'Ÿ|Òy*ÝËɃ1 i¸XºŸãÆv™ À‡¶œ¤gœ„ï¾û®í%÷bàwH‡Ýw5jôÆo@ôíÛ·Ï~˜ÈõðÃg¿Yé±lÙ²ä¢êСûà“ <>U7Þx£Í#è,G¯=™Ù¸üˆ¶‰³æŸÿüg/h|VYc2£à„43F2ЏolRo¶k×.Hs:>ãAcÉñú¾ŸÙ¼y3i²Y®%DSî?c=»À=š;›ô\9³#<6‰<ãŒ3`4²i“¬cÀ€&/J¤åëÕ«WĆ÷Þ{/»À;1bwÉ>ø€ÞÏ:ë,gý¨Q£è‚œÝìAÝu×{챜Ųu“Š„°ìQ|çw’?„2¶÷îÝ›_d|mpjfV{ôÑGQΖÅd‡¦ÍæòÎzítj@{ø›:uêêÕ«?üðÃgžy¦sçÎd¦uŠ9ËxÙ¤&_´hÑ…^سgϱcÇb9›ã3O0Ë–§M›F¦*F|UÞ ÈJÈ… FIn«U«ÖªU+«–[gžy¦=¤à¬yüñÇI¥rå•WR϶û¼Ÿ½ùæ›dÁEù5×\û2ºþú믾újÀ„ù¿þúkz¤@N ±Š,..£¶eË–¯¼ò `rûÇ«—•¬¹gŸ}¶ÉÉÎ)Ìðš¯0=2dò­“©l± .©ñZnm0ôÜwß}d #« zxñ¢Kœ–“JžÑ‘RkwïÞÍ52bH:!uiμC× 9ð2ñaáÉ…+&U2÷¶7ƒ[Ð3Þ©S§5jôéÓ$»uëV¦LîvÊÑ<æ|<$sW"6oáÜÅýÏ_xï©|66~g$Œ–hK…Lk¼J¦£Æ›LÕ9l2£Âï4!­6!cNEÙЩĖñÖyVq¥M /õ„¶ñõˆºFàõÊJ†"Ú`hŽ×s£‡ç!÷l¸Z×Y¢7Í›7wUÆqHôÀ¶r–m%. 14{è,¾øâ‹ÃkœgCʼ\ÃïÇ7è9%U!Na[Æk&ÊdªèÚµ«­wìÐ|…™;™ãqáYkq¶r•#ÆåÞµk—ù´¥Sï›!`\x@„éyÛ‹d{*# ®;¦‡Å÷v¢äzÆÍ)n< xû÷ïw ÇTf yœ-cCDîŠIyª ÇŸaYJÅ£! Åz#DÏÉÛ#aßY³fA¸ç>×8yÕÅåAæÐ¡Cõë×çl” ]zÌ!ÌÂK´=…ßG™Éyþüùp1¯áQ^þˆ6ð‚ÂMÌ ˜í™Eðù|Ⱦ7Xb* Ø.k§1µ=l0Mœejð›¸S¹éñíš-׈XŠ‘‡†˜ëÖ­k{ôÖØS xµDX67 Ûè³µ*HÀ¥™…n»ÇNn!¢ÞÄý¸…¸|VÒ;4_aÓ#ßt2â³·zL!È0k 1FÌà&OÂŒ¼nšs)Å øû￟%–™ Ì›MV uu‘¦‡Ñ?,DáÀ ïõ­ ÁºžqÄ`î|Äþýûs•ƒÕC\´åõ Uèøø£*¾§5Ȇì¯ß¡Œ‘#G²¾Ç÷ï¼8J& @ĆuK<#â6,²p·ë®ÁàÂóب11‡èºô˜C–¶x\M™€o…¬ °@G‚eV&}[¹*#Ú@hÂÜL¼ðY3 .%±âññöãôû¢ÑÀ—$„Å@ag™CÞWˆR 7ÙT–mì˜É¸zõêÎiÉ[ FÆ,ŸÂ¼ÄÁY$€ãL½µ*HÀÕë“8¼T2'a…ƒ‰¨7_8ؼwh¾Âôá²æÏW.è(W_æ0È0k q•‰4^zé¥×^{- ¹¾82zþõ¯1·ñ^Ï‚4aÞú³©¯µiWýÃÂeâS]ÞãÍ^ÐHÏ828Úü²ðFs"øA­‚ê Ëp¡‰¿ó`‚ TÅ÷´ÙýõyxÓ éÇœE*&[#Ã|KÐ —ÖÄd ñãðè _:+£)ÇÝÐ¥œÕ-Ü@*qâ°0šÈµÕÑtrK9)Ò¶MT}$Âw,â¾$2`¢C¶LHŠ)‡Y—3|¯=|`C.¶§¼5¼R@ÐP¶•‰XÖ6lˆyk•iëÑi//"fŒ!Có ÍÜÌ€ÀzOHGœŠhK,¸,Ìázx.˜N˜ð轆·MÓ³ý†>Á]j ÁwQ>,(䘢۸n\܈×××*S‰mÜ!v1ÉTF|ü½ #>­Þ&Iªq^]Óc„'ÁeÇÄëª4‡L†¾õ+ãnèÒlÙ›Æu*âaDâбÓX¸­mèßYF“YÈ|FÄÃúõ¦Sg ‘t¦.^)=Åd’—U^ýöòÙ1aß¡ ›pH/æTDÃX9Q2hÐ X‰¾p?ùNrGØ iHÛÜp*"¼¯óªQ,DÀ×¶ˆˆÂ?¿§ø`r¡y|ql¾X»w' g q3-øâ;Õîòh†2êä"DÉw>¼+ð/æÌb}9!M^×Ò,bB@ü\Éæ5|·Oÿî?Xæ_KíüUSbÏ.ÙD -y¶.]»íÕ9K“§_šS8ŸÖìRlñ÷ìµ-×õÇk®ÃHNÂãï)``v˜RO«¹"Y¿gl¹¸=6¹øâkèi†@Z<­1|™fðË\! „@îF rüÝl<»QÒè…€é‡@„ø{JŘÒ]Y,„€È^œ£þ»S4{ToB@!%Ï|j,„€HYÄï){id˜B Kˆß³Ÿ ! Rñ{Ê^&„€Èâ÷,Á§ÆB@”E Â÷3Av³á8›ÚOãIG™=¸Ùÿ ÞV¤7óͺ@úæÛo¿M;iÂN³lNIW¢5ú2ìúË)6æ¶;¿{;Jj ûß2ê¤v!åB@D!`¶")+$ˆqäI ß›b›ýÁÙOÕdÃrÕ“’a~ÉçIÊäI ÄŽµ®á±EbïÞ½—.]:vìXö€&O®K ÙfüM¤Ɇ¾Ô…B ë$˜ßm¾JCë+VtmÙì[ÏßÇþñGÎÕ«W“ê̵?P<é¢È¥`óC‘“,EÌ"d†ƒ|I$á1bDLf52E°+÷!C¨'á=ût÷éÓ‡r·nÝÈwAÎOʾJÈÅ“ž7Rc“TÃèÃÈ Ø³gO’7ÒVB@TF þø; ƒ Aó!fqxýdGäŸS‘›ÑEîhÆ÷'oÑH`Ô¤IjðâÙïׯ/ƒ†|©Çµ'©Ûõ×_O™t¬”)ðGrA“.2•f’RòÈ#¬_¿žWÎ;“:Ž&¤…#3y0àwSó¥úB@¤0üw6œtoS¸‘‚’”Óæ,ùÌ\b1’ú–ìqL„éIëêmûå—_v§þâ‹/n×®… Ði‹-ȉ ù’"™„ȤõÁÇÝ&&2&;³W›­ñU‹šÉGÖ r_˜É†WȬ¾6’«V! „@* ß1‘ü«NCíŽø³„ËÍ)³¾ê‹© /!fBÜÃÏ1zÈ‹+=pà@$!1&NáÑ›5^âË“^JÞ¢ìÝW oD{È$Ϋ™šÉì«ÐK”=JL!mDæwL±œž$³s7oÞƒ^‡ †ËÏ=÷#zàÚ·o—Í’)䎭³@ZµjUãžèñô)<úè£-[¶´” }{•üú민% óŠ+®`)•U£†|žO¸fæÌ™){9e˜BÀ"aÿwoB?Û2E ;wî$b^´hQkë´,Š2瞈ʤI“Ì)sþu’ï?Pò*a!ŒÃ`Õš.<“ =ºêu(„€H5¢Š¿§šÑN{¼\¨P!§€-û®Üš³^%î±{«D O,*!â¤=¿‡àËÎÎÑIB@d™Ìï§žzjæ]0H!%é´¾å$&„€ ~×m „€ÈLÄï™y]5*! „€ø]÷€B 3¿gæuÕ¨„€âwÝB@ÌD@üž™×U£B@ˆßu! 2ñ{f^WJ! ~×= „€ÈLÄï™y]5*! „€ø]÷€B 3¿gæuÕ¨„€âwÝB@ÌD “÷N¯+Fª¬ô28]¬½è¢‹ÒÅTÙ)‹€ø=±xfIÛ’%K²Ô^= :””ŠžjU\€ø=µ.óáeª§–AélÍàÞ7¥³ù²]dñ{VLxûÆM[$\gú*üð½7:w¸6ûÇ>=9ŽVj"2 ñ{*^ÍÇø§OE[“iÓÂïö¢>^}L”#é6nZ$‘ì;ß«S›ìë,ý{¿§ÿ5Ìôˆßsü §H¤‹¥”#½dÉ’ÙÌïÄøpË2ƒ Âȱcdž7ÑÙ¬#?_r£ˆÜ·P'v(P R¥J]»v­S§Nôf;ïŠè[IÝüo½õäþ·¿ý†A2œrã:ôvZ°`AÜ”çž{îä“OÎü~àÀçŸþÅ_Ü»wïa‡öÛo¿•(Q‚C/VÑÔDú(MÐyÎ9çtèПÈÐÕ¯ÃãÇïܹsÆ ]ƒÕ¡/¿J:¿s½¸ÊæB¯^½š›¡G\_nHèžkkï½ÄÞ»"èNØ´i÷97<·Y¤/¾•ÜH!·ñŠ+\wuÄÇ-Þ™\…wÞyç˜c޹å–[¸4à̄ǟ<è$]ϵ÷fÈ 9¯xôzhåºÓ’åþðà ,˜1ctÉ|xÏ=÷€ãñÇÿÙgŸ}øá‡Æzdˆb#sê©§B¦=ôsT”÷íÛ×·oß_~ù¥_¿~ ?xð`<ê#*iˆ<±uëÖ]³fÍ´iÿù°žåI.\¸0ü^¡BjòæÍ ­ÓéÂ… Sï•Á†Í›7#ÌûF~ñÅÌO<ºè´Ad¼ÝíÞ½{Æ Dúh«¿h€ßíÏlòŸ‹cJàí˜[”oïªU«Æ›™¹9'Ož|Úi§Áþ¾—ØuWÝ Ô÷éÓçÓO?%Æ}ë­·òIFƒ†‘Ù²eKømì²VfD![.¼3×®]Käþ1äîÄ?äù>×.À³HAÖ’˜ôxï´dùïØÇ2»À•sæÌáwذaÚG}Ätd­GæÁ$¸ÿþÙ³gsŠ¹Ôže†`Ñ£E‹5kÖ>ÜÿuëÖ™Ù5\yHC.ä!Cã­@ñôU¥JÈýСCgu–隇:If _#É/}ñ°a$ïÎÍš5c¸æ¦õ½Ä®;'H /W I“&:u2šƒ$£øyï+—1˜íº«é:üqË…w¦ù”ž—3ïësíÂÿƒ>⮈×ÎiLLTæ½Ó’Èïa¸Ÿ°•»¢$Ìç%5–Œ wdŽ>úh~™NüNLœJ|(³f‹|yjø WÒõqÈ ØÆÔý‡²¿üðŠ@üäã?晤Œ…9í9€¨;î¸ãøe€L?L \Z:¢ÆÛ2üyÔ¨"—3>ý½Z6=Û%M¥KÌ%~ÈU&ªV¦L^7Í ‰üQGKR¿ÄVs˜©GsDIsÏX±‚÷¾ ¶§Â·\xg²î8‹/îØ±£EÉ‚®fÐsíjž rªŠI÷NK"¿;­ŒX&Ô…ŒóàÐ@yùå—ßtSlEÅÑÐr=o„Òn¼ñF>àéÕ«ïbÖx+ck(˜ÙbãÆ¦’YùŒ%x§ŒÊYAÀKÜ/¿ýA«‹Î±:9ôÊØ³ÑX8!x$~‰í]$f& ó²hº’ 2 úzkŒiâ:´z|7{6÷pËxKc¡‚ø0¯nÎÇw,àY¡ §1éñÞiÉŠ¿;M )3áôüüóωNòišŒ•¯W¯«Û³fÍ‚7çÍ›gîK+Tˆµ!!WÞÔX’"€ÅK:jqâæÏŸkS"vDSÆÙ/ñYØÛxù`n`¾mÔ¨¯NgÉ.]º,Z´ÈY©rýîýï…7ç˜&¼g© Që©Kì¼+‚Äl=·:<Â’Œ­‰òž‰Ò`§14qRþ¸åÂ;N¿ì²Ë@fÀ€K—.% Çê ŸWõŽã9Ï 9/wLz¬ÍöNËa~‡_ýõ;Õ->)qŒ2Ÿ+±0Ëâç<À×KCúé'—Œïa¬ [¶lÉìÂ'3gÎlܸ1³:_M±²Êz)WšëM/Ng§Ì™ýû÷'|ÏKÆ}÷ÝW¿~}–×®ò®]»Xpæ×U¯Ã úÍ÷¿ç^ŸÍ¾§¨ ÒG}È%vÞAb¦ž[%¨¶mÛ>ýôÓA’qØælâ4†z×!5á[î¼3‰Ìšã“ÖÀ¯½öZ>]¿~=¡ª8®‘ð¬PóšÆ¤Ç{§åÙ¶m›S«ŒïÌiV!\§²~È¿+á%ˆ¯MÐO@#dqiçÎ Îw–±vSCÌ`.1Áñ;v˜È;ÿò…§Â|ïHïN—1H²¢â¹»ä]‡@Í÷×ìÿÎþÀÚ?Ò€Ãþ‘ì|mÛ«\XEs8yÊT³+VïÞ Kìº+BÄx/4‹RfA’ÞÂA|"Ì?^øo¯\ÆØCßÇ •èóˆ#ø÷z|Âàí—v}I‘ýÅú }KxAíx‰«ðæÍ/ {†ì©è¯‘ib7‡qS5 >=æNK‰ø;ÓŽk0®C&1WM”‡15tšaÈ^`|g_Ng½WÒuV‡q#p(¡ÎxÜfÐÐu3XU®»"J±…V³-ðOI þkD~wã:D¡³†WÉ÷ߟυsùŠœnþQŽÜ‚®¦pœðr*n r©OONò;/DÖ/v F‡BÀ"pð·DÓ­Úô*ðO¢²h°ïãF’¿,jVó”E 'ùPuÊâ"ÃRÄ.–¦Î¸²Ù’¬}zÉ’%[·n$¬z! „€H,1ûïeË–}â‰':tèðÍ7ßL˜0!ÈšÛn»­]»vAgU/„€ÉF f~ÏŸ?ÿ±Ç‹'~ä‘G®^½ú·ß~5jÔM7ÝÔªU«®]»‹§NúÕW_áéßpà +W®´c˜;wîõ×_ß­[·5kÖPÉ! ,°*! „@¢ˆ™ßé˜ÀË;ï¼C²¡jÕªvØayóæ½îºëúõë·páÂ矆 qÄ… †¾+T¨`lݲe þ~ݺu!÷iÓ¦Q¹{÷î 6ìÙ³ÇèW! ˆ@lñw:Þ´i®úÞ½{K•*Õ½{wjn½õV~¡ûÊ•+/_¾œr•*U ÷C‡uÖYš¿ïÑ£ÇÌ™3ƒlݵkYò$ z! „€ˆ<Û¶m iüöÛo·mÛO“m†ª#! „€ˆ Äøï1u0eùˆ(É! ‚HLü=H{Üõ ìÄ  !  ©ë¿ë ! „@VPü=+è©­B uH€ÿÞûáÿì9“;ÿ†Þrrî¸F-„@ê#U~‡ÜÇÝ}nê3vºwN2ÔJ§B !d‰ß ¹/øvgBL‘! „€H ñÇßEî ¼ R%„€H8qò»È=áWB …€‰E žøLDrïÛéò];þ“†ûðÊ”¯|Åõ·T¯•3ë‡Ì›7ž1&eiB@d?1ûïÉÝŒ¡dé²ý†=ÕòêN߯ûúžÎþÑã°Þrw·¶9Òµ:B@ä8ÉòmóåË_áèªü÷ÞkSÖ­YEj§©ãF}»fåöm?Õ¨uÊÅW^Ï)+~Dúg¾ùÂ3]úþèÝ×}eÊ”«x\Í“Þ~åÙÂEŠýýÖ|ûåŠw^~¶d™ò×u½ó¨2åгéûuϵáÛ5¥ÊV¸úÆUkÔ¦_é÷_=þÞ®KïªÇŸè•ñðëýï¼úÜ׫–*\„É©Aã¦9~…d€B >böß£ï†ØÈÇ￵cû¶ÊU«“†›<ÜÐú ·õ_¹lữ>gôü´yãW«–½ýÒ¤N®W¨pÑ ™K>™7ëãŽ?‘·'†ÞýÉœ·>®&,¼ä“9èÙ¿oߘA½wïøå†Ûû³ñÓ£þ­×>µQ±G,\ø’¶J—«è+C[—/ŒýãÆõÝþ1äòö7—.÷ßÌàÆTý ! Ò dùï?ÿ¸©w‡KöïÛ{DÉÒWwºP®êx¿;ùwÙ •׬úóŸDï9èáâGü'5kLB…n0’9bñü÷óæËw[ÿh^¶àÃÍÖÑjå’ÙöóÙM[V©~´Žk¿iÃÚŠÇW°Páß~;tJƒ³‘Y2ÿ}_NYH(øËömÌ[6o¬ÖtÇYý ! Òdñ{‘bÅ/¹ºã‘¥Ê)ðGî×§Œû|ñü­[6ÿvèPÑâ%,^%J–2äŽÓ$sTéò ¢Iž<‡•-_9ÿáœ9C¶þü#§ÞzqÒÛ/O¦/ÿáfu×vA!DƀζzL;lâÃ÷ðÖË×tîY©Ju§•…€i„@²øøõç_lÀï& ~Y»Îç·h3êž?ÿøƒ=e ÑÈXagáÈ£ÊpxÞÅ­/o×ÅYO™9ÃÔ„È8›œTïŒþ5'ÌzcÚÛ/OšòäÈÞƒužUY!FdSbÿ¾=€R @ÁÏÍÛ²éû}{wø# ·©hdœò¶\ëäúEŠŸ?{Æ¢fò~°|Ñ\ºàl¥c«úæ‹ÏY5 ’±J(£gÁ`ßÞ=LB…‹+X°°ó¬ÊB@ôB ›øýÔFçVªRmêS±²Ê×20é”'‡»ŠFÆÕÄÂÅ7õ¾—ÕÔgÆ îKÛ)OŒø÷Ö-œjÜìRbý#úw_øá{A2N…‡þ:cÚ3hèÓé2–dY˜užUY!^Äœß#Êïß}QؽkgÆéÿøIDATŽ6§ˆ,\„o(½bÑÈx[™š=»v¡/\¤¨S¾hñ?s|ûÊ8åqö=p€ùÀYé[~ròbí鋌*…€H’÷›!wNA¸¾TF#ÔÖ—”ñëò¾2NoùÏY£²B ȦøL:B#›…€i€ø=­/ŸŒB@"C|†È»QC^‹¯=-Pen:a1ÉMƒÖX…€HbàwdS5)§‡ô¸Ô²R\†@lü.ZwÞBɆÊB@¤Š¿§Ú‘=B@Ä ›ÿNŸ5Ž<˜˜ž¥E! ’‰€ü÷d¢+ÝB@œC@üžsØ«g! „@2¿']éB@äâ÷œÃ^= ! ’‰€ø=™èJ·B ç¿çöêY!LÄïÉDWºÓ²ò~ÿý÷;vìÈúPžþù)S¦d]O&iX¾|ùªU«|G4qâÄ—^zÉ÷TPeM‚TeF}Ìß¿gư5 ! “&Mš>}ú/¿üB¢Ç“N:iĈÑ´ ’™1c³EÛ¶m]mÚ´Ù¾};• ¨T©R×®]ëÔ©ã’ɞÃæË—0NèÙ³ç7ß|óòË/“ª~Íš5ݺu»æšk:tèÀX† ’7oÞ^½z 4¨dÉ’cÇŽ5tòœjݺuøØãhâUh/A‘"EÿÚk¯=þøã½bÙPãNÖ»“ÿžu ¥!3ÀmöÙg5jôÆo@ôíÛ·OÞ8Ë–-ûÄOÀ}â„ ’×QˆæÛn»­]»v!±ž:ñÄwïÞ½víZ~þùçü~ñÅFɲeËN9åÊ=öØý÷ßo*ã0 Ž&¦/ïïqÇ÷øãƒÀÇüÔSOy²¡&Ã1Ö&l®Î†Á« !lÞ¼·ýßÿþ7Nw¹?þLïß}÷ÝèÑ£¿úê«òåËó@ÖªU‹z GqDÓ¦MLJÈa5¨ÇoÅëÿñÇÏ9çœ_ý5È;Ο?ÿ±üM:uõêÕôK.~þùç“O>ùºë®ã¤íåŒ3Î`¸÷Þ{ñp}e*V¬·>÷ÜsE‹½óÎ;W®\I™ôîÝ›_ôx‡@¿Œˆ~o¸áüîÚµk{e¼ìß¿Ÿ ÓgŸ}Æ™œ.¸àdìŽ0ýrêÄNÆ¿ÓÅ?üÀ¸ ¿3 p8p ×£gîܹ.H­þè›øŽÅê1.vV©R…Iý§Ÿ~2•¾ ×”w»={öð:‚|§N¸è}úô¡ÌËJ™2e @ÙW €¸ s ‡oüøñ;wnذ¡1&Ž_ùïq€¦&¹¢üä“On½õV¸ÏŒyß¾}}ûöå©îׯ_ž¦5€± ÃÊóÆÏ?ÿ|¨Üi ˜Q½zuÞx}aF´Y³fáœá¥Ä%Œãì4ÀœõBêle“ ñ:UQþòË/ »S¸øâ‹MœÊ·añâÅ£¼¦F¿¯ÞƼй†Ó¬Y3^AÀegL‡â÷˜à’pîB X±b<ðÀ«¯¾JpÆÄk†ª€/Ï| søá‡Ã\”Ò¥KCî”á5Ãã‡øãF äÖ ¾Á=NwÁ‚y'àÝœ@°‰qÖ¶=ꨣ ¹‡È„ÁšÀ¹L餉!Ø^Bd¬èdÚ9r$þ,õèÑÃ;R†oòAèƒw,î…5dÛWHÁ iˆ°9åm2§¶£>š·"E&NżèÛðÛo¿¥•w¤NUβ¯’h C†?§ª8Êâ÷8@S“\„ÏØå—_N ’Z±bôÁ੹馛"¢"cÞÙ¡c¢Õœo+‚-Í›7·§ð»‰ÆÞxã|=ÂG&6`(D#ã”·å!Ø×‹«‡Âé§ŸN Ÿ¯™ðx«àuÇy–2!x¾ŸýñF pó¢ÃËÍ®]»¼þ»ih pé 9ŒØ$ʱðöРAƒ«¯¾š,_xá>sòm¸téRŒ º¦Ù8˔ϵ66û*áTt‡cÔFùë~¥Š²™Ä„@Æ#€§I›È aPÂÇ=¾p½zõð¦ß~ûmB 8×óæÍã3› (à>HmöìÙè!RýGôjЉ#Ox—èÑ˶¯hd¬°³4|RÂAÌa’qê!²Ìœ‡mLB¼èÀγ¦ à¶sçNÂYÔð ¹ó ¨yÑqÉ; p :Œ¦I4c±ú¯¼òJBd,±„ñmrM¹=ðîÁ¤ÿþDºŒN_%AÐ9‡Ã­Õ¥K—E‹YÛâ(ˆßãMMrÐ:Á9;vìÈ—é„ʼnBd¬X²I܆/&qZí·^P wüAhÅ4\WãÊyż57& ;ÌÊ*Žt0jÔ(—X42®&æ0h-[¶„y ³Ìœ93HÆ©ÏpuáŠ+®`q•…YçYS.Q¢qÊæ+#óQyóî4À«Ê·&š&ÑŒÅ*çBó 3‹¼Ty¯uÈ5å­=>ú(VÙÙη÷ èœÃa"ä­‘_k[…<ákúø)¼§0«£š\Ò¤ÕV~8PV“4E€çœ7qžsòvŽŸÏ”•¾emâà‡ïÙJ&yç_?aÌâŽFÆÛÊÔø‡Ù‹¡…È8ï°˜³2+e—Ñ¨Š²‰ïx£Ñïmh¯)Ó?þy„ÑÃLÌú3^µ^%AÐE9oÞ;¼Bª¹Â帴¾cžÑÌR§¯’ðJ»¬ áIF#ÔÖw®™ÌWÆ©ˆøsÖd±ì2 mQ6‰8– ¾¼ ƒ®)!µè•Aåp‚:rÖ‹ßh¨,„€ˆÛo¿=±+¢1ô…¨ø= $"„€ðCàÔSOõ«N•:­¯¦Ê•B@Ä" ~O,žÒ&„€HÄï©r%d‡B ±ˆß‹§´ ! R˜×W‡ûïÆx©2Ù!„€~ÄÌï(Ü;òÎ~}©Nävú }BOn¿ ²qüñð;æñ/¬²ÑHu%2 =>u9Sx0Š¿§ðÅ‘iB@d/ìivÉÏÞn“Õ›ø=YÈf]/ÙØÄÊêa7pò«ÙC„€ˆˆÉÙ¸ß)ƒ>ÜYã,¿õÖ[¾»1;eÒ¨,~Oé‹õþûï/^¼8¥M”qB … y‰«œ»+³]³I¿—ÂV'Ì4ñ{ L†"R…±1¬óî4½°_pØ«÷ÄnñüƒíÂÿõ¯±_+ àÙtL¡W]uÕ+¯¼bZᘰûëe—]†ŒÙ=œú‡~øÍ7ßL†ñÒ)r“N:‰=ŠI*b,!öBb<³A±ïCd &5•I²H Ï‘É"ëûÙ&)X¿§àEùÓ$ø»“]¶ÿ¬ú£Dzâ»ï¾›¤q: -ÍY2Q<þøãø&¤`ßpr··iÓ†<î47ieØOœìšÜÖ;NiÕ¨Q#³+·«  @€ŽÉ ËŽöf,8ïçwžIëûÙ!Cåìßky²ŒåûÙ&)X¿§àEùÓ$’@’Cœþÿ¬ý¿ÿƒÄË—/϶±$ê%]¤=Åfý08IÑØ¿”2¹cêׯOŠvù‡ÓIHT·n]’‡p Æ¡!2d±T†!2››D†ß̓¢ á=AAò©Pç÷‘©`z.±çú¢‹."‘™€ìIoÏ+'ÉÖ®]kÞ›Sv£pÜS¶YíÉ»FÎ0»²„óbµ© 2vð¯^½:ÌnrHáܘÁ=DAP¤ã$~ºš)TOæ3þ^{í5cÓ×_=dÈ'Ÿ|ŽîÓ§O”†ç!JCäÝ$}޲•Ä„@ дiSRà’/×®¬Fó‘±óԘŪt|‚ŸIƒ»—$p7Þxã²eËÌR*oš$”)S¦ ‹E$ÿ47_ÄaÏGfêÔ©&ªhó:’¾Ù¼ºFÔ !¦œ{î¹ëׯ'Û¨å÷ˆQ¹råŠòpñê¼{÷nô¥2&â÷T¾:Ú†BTÝ“R€›gø°—$Ë/¾ø¢3ÿg›¿–å³îJØ/j:tèpÿý÷›óãÆ{÷Ýwÿ*«#!Qàz³EðcŽ9Æ ,âCt饗>óÌ3d'ªSªT)Z=A©ŒTÌùµ_i hèXçøE%]¯I i3,Gi뫬¾&6gf”]KŒíùôø¤ÎmþñÍ ËWÞ´æiô)þž:7[l–Øœ¿6Ãr”íñe¢””˜Èl¢ ø?ž xøç]»û^xU ˆèñ‰‘…@<üNß½:µI”Ò#rz|rÛÏ©ñj}5§W¿B@ä" ~O.¾Ò.„€È)Äï9…¼úB@$ñ{rñ•v! „@N! ~Ï)äÕ¯B ¹ˆß“‹¯´ ! r ñ{N!¯~…€ÉE@üž\|¥]!Sˆßs yõ+„€H.â÷äâ+íB@œB@üžSÈ«_! „@r¿'_iB@äâ÷œB^ý ! ’‹€ø=¹øJ»B §¿çòêW!\ÄïÉÅWÚ…€9…€ø=§W¿B@ä" ~O.¾Ò.„€È)Äï9…¼úB@$ñ{rñ•v! „@N! ~Ï)äÕ¯B ¹ˆß“‹¯´ ! r ñ{N!¯~…€ÉE@üž\|¥]!Sˆßs yõ+„€H.â÷äâ+íB@œB@üžSÈ«_! „@rø©¹oº2HïIEND®B`‚PK¯9AŠ<êç'î'î-Pictures/1000000000000304000001A722C49350.png‰PNG  IHDR§†ŽÜíîIDATxœì`Ç•÷·£w€{;EŠê]T±š%Ù²;¶ã$—ޜܥ\ÊÅéwI.½Ü¥óùâ‹[lÙ’,KV±Õ{'E‘"ÅÞ½cw¿Y€„Ø@‚T¡D½Ÿ(r1;óæÍîbç¿Ó–²ZÌØ þøß¿Ãî¨Ø’A™™™_ý×oM¡7w˜~1„”PT9Ž)õàŽ"ˆ¡¨r8ìSí ÀFC™™™è7ÏóãÆ†9«—”ˆi‹Ý­ÝjTsòt·ÝG€ÛõÇÿþÝ—¾ü5›­/^ŒÆŸËÏK%"©˜NR+2SÅj)­Uæ™Zº]×Ín­„UËè;é4À­¢ÌP¼f¡Ú6Ïì’ …Tt¾®³¥£Ïæô®˜•ùÝÿÙw¾ùU‡Û—¢”H™ÚkÍ*©êú ŒÃÿýü§ÍþpÚÆÏ|t6´ßÀ8Œ#†ÄRɉK/ý½nâü”TyÀlî´ëk_& ü¥W_ÿàÖ×Û=EéÊDºØîfüöç']A±zõW>¿`ª}¹uð<ÜŸ`\ÆCz•ä·¿:²¬´ÜnÅ<̆ñ&Kýœr•JFo}äf—g†Ll¸À]Mì66½îh †`|ÆC¿üã‘/|fBA„Y\L]> Ã=jGçE­†1›­«Vù•éÙwÖa€ÛJ¿zàù`Õ±÷ÎV7Xœ–$¥d<óÄÃ.„_:ràÜ•†>§’ªsJf¯«œ#&p{ÝËØÖBK ¾úÏ[Qê¿üüg–·üó_^¢dºÞÿë '{ÅÚ5ÿòé¹ñ’£/ïzýdk·Óå q¸T¡É)š½neƒ »:.ÚêJ¯ÍÅá´B¥IÉšûðº™Q'ãYãc…1ãW ñümíŸôÊÕôáý=3+4áÇr¼Õjoӭݲëùæš ¡ßþ*ëN» pÛàî‡g^þ@ƒ°îšTcPPÁ®¦Z–ç‘Ê8ûúóû­Ìž‘ãhm®9µ¿­—ýüó¥ieÖò]ë ±ŠP#RB(mÃ5Çâ9ú¦ZÁŽº,YŽ—Eènjç¤úlcò´4·WŸÚÛË>¶:-ì«}ñV¬dXëÏóŠ«éý*ϬRi¡–ÞÕâÎ8 ]Q%IØ/vñª³® ú˜S¨º«â'§—|ôsk$„×ã1¹øæë§Ì}U'ùU†|MÈ7Zš·uë )´úxú'Çp&6ÃÄŒO¿ ‡‚ÃvÔÔZY.uçïÂ"©^!£’|ìéL[_è¿jp:8±˜&I.èåG&¸áú›RXt[swÖD×ÍJŽÞå(E2‹Â»¯DÃwþá×;¥­1» SdóÔ¢w;ö˳ÕLPšÕ©áí§}Ÿ‡åq‚©ãîö±’7žy÷ð…kÎ gC=(wB4SFVy¼u¿ýÅ/äJÁ”R4ka‘bgJ‚»4ŒKÜ–!½Ž& ×sY냙 nÅëkÝnk·…1žâ1Ф8J‚g¦C;–†6¬ | æÍ›=8FL¢]Éåjl¿ÏY×~%èc”Ku³®s-­—¯ ºŠ–•‹p>?¹ßvüí“WÑvÞ¼åF¹¯ëÔsÖhö8¥ÿÈS[Î^®ëêí³õY›ê¬ÍõuªÏ~J>¦3|´©‹ŸfãÁà¶W --/yAã ˜© ƒxN¡¾4Gþ²µæl@$¦iQ8$)ŠÐæûákÀô`ðl2‘.ÃZÑö»Ú“†6övF&ÖåGÂ9fFÅ|£$í¬¯Ò©”JžRu\çj¹aV²ÄÄ ÈÇOXP$ÅŒaŒäþÆNô'¥›–ÌBMõÇcÎða§O–¶defäsàO¿ÿ³— ÖxCËÇtfPià. ãW Q„(¥Ð¥eyƒY•ªL£2k­jÍâÀö}­š“â–:ÖGø+7+àkÀôBP”´xyöéÃM®Ö#ÛþT¥—S!‹Åñ¹/>KIŠ–e:Òì:þêßZ³ÒDXÈÒÝi÷†?ù…2†Ä)I©Œ<âa=趘š/'ÅZ%¹Ï麽RK…õØÈøÉE†, kçYïëN¤Ò޳ Ž˜7!Óÿ{þ˜ÞhR+$aÙËòH4Í‘¤h,gnîÒ0cM­ÿÊ×4ÿþ-÷\SÒ{»mÜšÀÌ‚T™”y|Snë<çÙjK’!;à2Ã× €éÁ°u†*6=Éœ:v±®Éæ°h‰!}Ù3{3 ?z¹®¹³¹#•ÖXV’ÅD÷aÄlsÄ@³d4 ¨P0‡ì~ôq޲¿µ&^rJ>këÛs×Úk.Òò×­2íÚ×u§ô…Ù¦î^kS¯ŸÃHµ!µt^eC ]c:+ Ü¥`ÆC™êsßìÚù2•W”êè½pé¼\I(TR°a³Ù6;K_3¦Kÿé“K#·5ºxA%ú¹£]²`eÉðEªû÷U<ó‰ŠAAåÏ|¼|XŒøÉÓgW~töì¾XØ¿ƒ Mk|hôüâ[Ûú©Ï @\ÆY:Ó´õÑöwŽž½R_‘™¦ëh µu÷êÒ«–W øŽp¯3ŽÂq<--ýÃ'y¼žP¨ ÇðEb‘Tº¦iPBLÆCQD"ý %Àô !10]1À} †^ýû‹SíÀÔ ˆ¡'ž~&à÷£ ­N?ÕþÜQ¨Á¼^ÏTù0%PãG˜¾ C0Œ€û hà¾Ä÷5CÅt“pŸ1tÌÐTyŒÏó~ŸÏï÷s,;Õ¾Ó‚$E"±D*Áq|ª}¹C@7Ù½Ëé¼ÞÐpæô©žžnôp{ IÒh2Ο¿°|VvŸŠ!è&»¥ ÕÒÖÑšžš®­›±ã÷û;ÚÛ|íú É)©÷Tî0ǵµ¶¼ÿÞ}RRffOµGw‚Éw“¡šÞíöƒAFDËeò›¬ïÉÎëõøýA‘ˆ‘Éd·;»›'\®¾ QkÏ]<]VZ!‰'mÊçó=zdãæÍ™YÙ‚Ѝ!>ù²Ó—ôŒ £É¸sÇŽÏ?ûÅð¤ÄÒÁPˆç8–åxž#‚¦i†a(ŠB].ªºPUŽoÒUGÐ!£îbZÊ´3É–!$Ml6›N§ÅqrÅír«TÊÓN·Û-‹Õ*u(²XÌZ­ÓÛšãÍàr»/]>·há2µZc·ÛŽ;4§bŽB>ÉC„®¦î®NƒÁ•;JˆÀñ¡ŠhˆŠJŸˆÂyŒCŸ¸¨‚f%`l²²s»:;„ºe‚]F¡pÈçõ¡ Z.•" ­Påƒênô`Çqz. ºœN­V{3N"ù²@ÖFÝ‹dƒÇíF’+S“ÑHÖÙív½^œ@ªH*•ôôšo· µ©Ltˆ †¤žžäÀÝ©‡,–Þê«5kV=À0"§Ó®P(׬Z»wßžÒâ™III“³‰ŽsP?ú §0„hhÃP4ÍÐ ¹)qAèò#=KkãA’ä$Ƨz½^”J¥R!yÀ €Â#-CèÐǾ¾>dœâ¨x-: UBr¹åÍe0H†¡]‚òxÑCî&CJÈf³ œ ÂlÕÊ>Ÿ_$ßî –¦iŸß/Tí\Æ$£±«»Ë 7Ü|#Û­¥­½µ­£eýÚHº¸\ä*ú-—+6nؼçÝw<>wVfÎÍåÓB„ÃéDꊉ¢eƒ}|>/º8ìv‡D,V(‡¢s‡G{ÊnÎà~!ñ Ãï÷£È*¡Ù‚ †BOîD´u),ô—±H©5>b–»‰Gs¤ºe™\ŽtHwgWKSÓ°™ÙÙÆädYD¹½žqûË&ÖM6 „’PÕʆ%ð‘V¢Û]Å*är³Ù¬ÑhE"ʉŒdcrggRwºZwÅç÷­]½! û|†y"çÀívI$Ò6íï]‡ÝY^V>9ûƒ:Å„-ŽåÐÑðú|؈Î/¤…Ñi4{º»Q$"Q¥A§iªÇ_ŸóeÇìM+3Ó)»;\¨;^ù¿ìÍOÌ”Mà+puû+]%VÍPÝ>¯˜>$V¹‡B!¤´Z-f…AB8í/‹4Û°¨6‹Å¨²æX´C{‘BUØä”ªX œ”ËäH ôtuw´´*eòHýåÇqí-­HmSRP4—Ë…ja´1†Í t3E•^oˆôŽE”P `³õÝ™î*$'QFQ=„Ž)ré¡”””ŽŽTåO¹ ‡Ùó—ΩTêËûý¾`0€Î}m]Í…KÊËf¹ÜN‘HòÀêõ'N=|ìðâK(jrcÀû•PtÈù;о‰\h—B©DW^¯Ã9!/¨¦Q.>6`¹tú|{·%æ©B«3ÎY<_JL™lj}ûµ“Î@t›b$ú”Ü9 fÉHï”èè]’,ݼ:%Ò{øÍãŽâ‡7 mUF6¯`ÆH^½ý•Þ™WåÜÞŽo¦HpètzކK£zÉá°‡YV&•Ñ4 …Ü.©TªT 7–è ìÉ5 õ+!¡wLPBí--±PBQ£¨î£I²½µÅGzH¡P8œäÚˆg6Qƒ\ïëë3’"ýˆQ%äG!wràÊe×ÛÛ‹Ž8ÒCÈ%’’’ÚÑÑf2%O¡B¢ðØ©cEEùy…^¯ #äØÉÓ'\NǦõ›ŽŸ>Däü¹ó}^w(X´`iuÍå=ûw­©\‹J1Ѽ¢Ê'ªƒú5PäwDEbDÆH‹E"§Ó‰>1 ƒû@",Þ`¸³{öw3és—ÏVJé€ÇÑÓÞâçø›C,Ç“7aA¬[T¹È€6‚nëÅc'OzpYêÍøsû`¹{©ç1¥bAÊø±&ÆMžkîiP-CÓ AhýFµªotƒ£=v»N¯§)¡ŽFZe`z?91 „ôz˲½Ý‚1L´bëŸ05éA¡"zm““• ewww¢b(žg%d3$’³!¤„ü_ŸÕ&´7à8’D>¿O,«T*$•„áÕ»×ë“J$jµz¢R éJ·Ç¦Æ>*3t>¿UðHT †žž^^'‹B “’šÖÖÚ–œlBÛ‰gÔP ³œÜ †Ç9vàÐþ•ËW%›’].gTpì;°W,–,_Z‰LU.­0Ÿ ïïëŸY†Î6[¬>¯I%bƒA/%$,ÇÉe2‡Ã1dä\ØÚâ ¯™ŸémQ(TzSFÿ>>|ýÒɺÆvO“iL%ó–djE(ØQ{ö\c›ÍéÁ(qRzþüù3E³çß|Ù6s‘¢µºÓê”—n\S(¿~éÔµ¦v·?,–k²çT–¦H#Yú«hè0óŒ2NeIú((N¡gˆHWŽR5+½êpw† bˆç¼WNhlï p„Ö”U±hž–!ÇLûÅý§¹åWÄ$rÕ>k•®ýBc§•”Ê—U¦Ý'ëµûd†ìe• £ Q –T'{ãÅ3ÕõO€ Åš¤œ•Ëgsi ûöòe궪v‹ƒ%e±£ÄsîKG6vZ±:oöòD¯œA î&é^×Þ×kDĵºZ$V²²oŒhFJèzýµ’™eѵ±Ssµú•kõz½Óé@‡ÈìÞ³+3#³|æ¬h”ÅâEK/\ºøÖö·Ö¯[â´¶5§¥¦/Y´äøÉc¬^;¡ã[R(6} i¡p(ÜÚÖ!“е%ȼ^okk{FzšH$BúU˜\áÎ =Ü")¸¹Å̧ J§wWÛt VlPIkkÕ‰}ïh}XIá|P\0g¹F! ûì5'޼δ~nÿD9Û…³¹+×Ï×ËC!®ýÔÛ;˜9‹×$©%~§µo`j‚­ê¾dÑê2…­åÌ©cïæ<þ¨$~»Ê¢¡Û+Méoj:¼çšC³xõ&¼vúà¡=ìÃ[–àñÃc´œß{®•¨Ü´Z7 ’ìU‡“f.Y3KÚU}ðì†Ë™¿bºüÞ{G.ÎX?G¸t,iUí(¹ •yàTuñÒµK J.èµöZG–nlûy+×ÎÖJmgö¥Æƒï6y’–mX*üUG÷‡nb¬Þ¨î%¯}¬xh7Ù6v‚>û®·Þ®÷†ò¤ÂÐo=ãÅÕåjPBp×j„‘º…|ï{ß©„$à(•Jަú}~‰dÈ{ѱá³)’¨ìðùüC˲ Ãôú¼:Lçñz& A5qww÷DÅ­%NS«0¯ß‡”P4 ³Ï¢Ì,Óê´ÈxNNÏs~¿0M®wuueddŒŸG„ìÜH¦Ô^­aY.'WÐCõuךš‘Wà÷û´ÓÒÚ¼jå—ˉô:VoïÞ9wöü9¹Ã¢U”Ï’ËeÛÞܶnÝ:…\ÑØ|]¥Vuuu'~d°!£¤ñØ_tFÌ‹T*¢ 'iwœ“Ë$f³%9%9Nò¡fqQåüÂCgÞÛvUªEÓ`̘1C-"yÖ}²Ñ±à‘&‘ Ò Ϩ}å¢Ù»Õ䘱þñ,И$•HcÍ'"Í¢™¹‚¸Q”®¼XýRƒ/´ËápˆhY1LŸÕ"Kl6ÎLtñJŠ$;ÊÅårѤÐ<ƒ²°ÛlÈ”Ãádh…ƒÁžîžŒŒ4T¸@ @‘B[Ÿ-55eBÙ¥¦g TW{µµ¹)²$T)¡œÜ<·Û•¸£!¥£«S!—7·4<ôþÊå+FÓ¨ndgf‹EÌÎ;/^œ‘žy­®No0LnqÏDN5ºøTJ9Ïá0áHÏïõùcÚ|ܦHUÎÜÍ™¥–žž>«µ»åR]õ•ù›6§âMaž?öÆJUkaɘßÜpöBM¯Íf…Ë '¤±’Ôþû¬¿™å±BÕ(}—Ò´XÍL()ÂËŽrе ¢c†Â~WùãûÔ>¸¢ˆ ÀùÊ~åDÐCšíÁ<ÕèáX¤Î¶_ÙwÎ#`k¥Š"gsƒ A’*ïON+ižõD·)i”‘¹âœíÅwß|+9-5ɘ’‘•*Ñ6†}±QÛ–‘ÂQŠÏŽ´¬€ÄGC"í‚ ô±}çß¿ì'÷âðè|’çfžÝw†]¸™`—lY+F_ €)'*z¾ÿýïÿùÏF}}}c(¡D*)ÝÂaô›ÆOs¡Pèö-hÇ µ\8’Ðûë"¹QÏ ¼q! D …I‚ £?ñË2~Ë0lY§3 ­A$z¢ÝR))ÉíƤ$¥R‰dRKR©D­jµZ”I¯Ù"“J'±¸¤L&s¹]6»C,EÇ:)J‡Óaíë“HÄ*¥ )¡îîîôŒt’¤ IÒçóöô˜ÓÒR'4f(JZF&úôúUB^¯gBÊf–^8wþzS=ËsÈU~ÌžI‚búБ#<{(oFÞò%K&êð7®³¨â!):à÷á“:ó"ªS}±u‡§ œR2ÑOAiùé7_»|²7e¡bË?$ZGòœÿÀ{'5eË7T¦H*ä¹øÖΆAv†QÇ0ƒ£ú3hÌPŲ¼7wœ5‡ Ôc.IÎ ÔÕ^owÍÎ:Ÿ|¨7„ÞïÔ„J:Z.Äœuæt·uuw·]9ZuY¿qËêÁslûÃJÓß´,¬ÚqÃe"N‘ Z®ÖÜøöibÔXc»7ˆÑs|DšÙ*ü•K6¾ã4&ÊÊ‘Ü ¢%¦‡°HÙ¤Û„¢ [ÇqѺi$†â FÑlv»ÏëCU¡F£™Ä̧ظ lðsþàÑÓÃv ¼‹s¦KB7¬È4®zÈïGzH”–šÚÖÖn4&é" Žlˆ0±ò ¬È„D•jHˆVƒr¶û•Pz:ER^¯å…ôPo/RB)“PBQ¢zˆ¢éI(!„D"]´paKkÓ¦um¶¾cÇ<ºõ±ŽîÎÇŽvvwEªNoX¹beZJê®ÝooܸÉb1_¼pqõÊÕÍ+2Q¬¿§5ÖÝŠ®?‰Dâõ"%ÄRɲÂåèóù‘<ÅEGœa .¹ˆ“:šèô(q‰_ª¶øç&Iïç‚í–_W˜AEªÂ€¹wT3d$y­=Xé&»y¼,§eàØ¥zW°D)œn.d6ÙR5C1£‡GŠ´ù+VŠ÷¼¿‹¦¶ÌLk©‰a$XÒ1sÁ5¦ ôSTVöÖ«¯×zóä7¾ü² QñùËí6=ÒqÉÛofÌP<÷"=|ý»©8|Tï*²'Îwân«ºtÃÍyÀm'&€nR a 2:¿)…Ba±XP­42ª {z{µÉhDu7Š6‰î³ÈìýVŸ6$‘Ÿ&ÚM6Ö@ëˆê1÷ê4:a¡?¯55 é¡V“qbÓ¸& RBè6#=ƒ$)·Ûƒ\Bz¨×lNÆM37Ó(—šž,x<îI[0[ÍYYYH²íx{;òä½û?ð'’ ÆèÞú†º}ûö=ýäÓ=fóŒÜ<©Tº}ÇöÉ8Ü¿db¿Âê,$I››[¤R1C‰pw¹ƒ ''+a ~ÿe1Ü*ëx÷PUnN¦^­$±°­«á‚;˜¼È€“Š…9ê‡hÏOÖÈÙ€»§íº¨`~m¤qüjg¦Iööž>Û7ªªÆIå‚,Õ©÷ª—ÌMRIü.‹5¬Ÿ‘"sô²†½N§ëï&«'cšˆÂqõœÙ¥÷ë–ÏV’ÁºÓ‡(yN¡”ƱÑÃcÖ$Æ’µËÂ{޼M¯ÜRhLÔ"±’ÆË%ì««i¡ÓS’¤ áìic¸‘ÒB3Qû¥©0J/¬5-/¡±ÐõSgnfXN<÷T2ª±µË—Ê8ɈÆ9°ƒÑÌ,óo;Qqk²ïôâ“L‚DdP"URÖ¾>c’1æPeJ3ŒÕjÕh4ÔŠÅj‘IeR©ÌãñRé÷ûY–%ˆQÛ­ã"¼z#²vuzfVGkëkzÃRÒÒy¼±c¬ÉühʦiÚhHêîéÑiµ"‘Øëõ "¥§e´´¶¤¦L`×ä…BýJˆ"Ýn·0¼Úçë5÷¦¥¦2Ì-hx…nê%)áPäHW¦Ð%ÙÝÓdH²ZÍ(}¹\ÞÚÖ‹Ž0¹Œ¢Ãä˜Ç#ÃÓ²²³zº{,}6L‰+ÉÉIÎÈ@„D£· á„4SC¶^9[åò°ÑÊThGï•`z"‘HœNg à§(:̆Qõg³Ùº»»år…D"FuO0´;ìR‰ )¤èü$¿?@ÑôD•BÄ0v‡M©Pé d¹£­4$FT ™RS´z=IV¤Ãdc=O¬__ÐCII]=Ýz­)A$Jär™ÉhBð6aw8ÒRÓH’t»ú•P¹'=U˜=~[óMè" áÈ­X0øÕ¯ýÅg¿[f íG‚$̆B“7ÓB7VÛD¿ŠÊHO‹ÆèK0†Å–¢â¹~5úøœ.ªXTT1Zn8™U¶ý VfU¬Ïº‘ ûƒs¢³·>9495£bÙŒ¡–‡Å©|ì©‘Ùflz<Þ´@$ÝJ­)M8|pvʬyeÍŽSªÇŸz&öQ¬[õ裱$ •4N.KV3½1Aû±£„ôSÅŠ ±³ó?4ÒæÈ£—´|ëÃÛE}°(²AŠFw–g¯Ú”û˜È€w„y㢬‘6˜Þ¨Tja sr2Çr~Ö¯V«…÷¤zÜ==½M‰EâÔ”4Š¢Ër8÷ôt%'#„夻݆rÔô¨~ëlo'xþ†ŠT‹œ°öt²V'¼Q)¡èK,Æ0;±w“!šNN2vvu!»Q=DR¤Çã¹Ýï&s»\)ÉÉ.—‹¢…Ó½½½éiiÂÒ“wÇkG#↴P(ô£ÿ(ª<" @!$“#£ëÃÏ}ÿ¹¨4‰OÂóÈ)ެ:Yyœ …å>Ñu[Chpäèè"A„EµQ¿ˆ‚·Ö·…` àì8cåå[Œ£Œà^%±*C,bÐOWWgR’° Š×ë¡iZ¥TjÔj~ âs¹œ¤ÞÙÙ¥V©…%'U!³v»ÃÖ×§R«´zzÜïlkãW8nJIA»·Z"ôºqÞ :±·Ö óÏ#³·•JeOoV«“J¥N§S˜e Ñ5²©êæ‰fʈ‹Õ*‹=¯ÅlÞÇq·/Ó ¹Çq\¤ÿ‹GºçG?øJXt\ц"¡5ˆçò?¥i&.é+¸óQÑËs‡.ˆžžžˆÜ¹±ãx‘èºS©TBÓ7dÙ¸µìyó!Rš¿p-3Õoà’x¡ÖhhkoO2&14ƒª¿@0ÀEçpáÂËY©H¯N¤ÇJ®B"é&¼B2Èf³Yûú4µF¯WõO]¿ñ°}u§ÅbE• !)iܼ&ÖM&¼~v`XŒT*³Ûlfs¯0ØA¥¦þãøíxOY4S©DŠJŽž>QÁär™°ìrdÈÛ”iâ %äõzuZmõ•*¥RÑÑÕÎG‡iñüõÆF¤†êëë³²²šZ®óýã·øÆ¦&J…® ‰D‚Š“H.$ADGœjㆠb<¶¸ô=tcÝM‹zÄ ,¾·ž-¥Ã€{Tó’Ð#,+‘Sƺº‘î‘ÉdbIäMõ‹þ‘0B•8ÚBÏçR©$jÀI Â"U¡\.·ÛV+ÒCdäÆŒé¡$³… ­VÃîD‹ÃĺÉ(’D?ŒP6N†*X•Jx{ú‰X˜±Lå2YTNÜL9ƒ®Ÿ×[PPøòË/Ûö£y0^«Ñ–—Øÿ¾ÍÞ[ ý×ët‹,F©D “ÈÕ†Jk4%w´·åâXl‚<ÒFøÀ)¥ièÆJ ƒ| i¦Æë¦”Že¯aQdôä*kVë<.wŸÕ*<ÆóÂ2nAŠDb¥\Ž$c¤0%†‹¾e|‚°ldrËJÄ"—ËÕÑÞŽõ/=ÄÌ™ÞgªR²‘½dDxasbÝdQPÝ,Øx»«Ø)Ét|"²L,‘äÏÈÏLÏ5Ê¢ÃGc‘‰ˆ(.ˆÙñ¡HjÉÒ¥ûöîU«Õy… 6&ÁÃ>~“€i R×êjßøÇk[û€ÏïO¼ž%)г’hƒfY¤ýx*>¸CÞ–0qQ¨öd#í"j†ã¸~—þŒ·˜DÛŸÆÍh¨a “)•HD Ó¿ôADÏ“Ð<™í5n|Š"óò †yg×Îîçÿ2öÊQ0iPõd2™6mÞœ““ír8'” ê˜@ÿÚdUé5Âo·ãkr~1²‰ ¿ÙÖš± ‡B¹3òKJg·9#à>‡cY¿?0Q%tO3™n2`Jðù¼ègª½€ét“p_ÝdÜ×€à¾&Ñ·ÖLK e€ûš!bèúõú©ò`J"†–,«œ"7¦è&à¾Ä÷5 †¸¯1À} ˆ!îk@ p_b€ûCÜ×€à¾Ä÷5 †¸¯1À} ˆ!îk@ p_b€ûCÓµ~nª]€»ˆ½ûáØ@ M6|úgbCÁ³_ú—©vî"¶~{‡ß\·ûO_‹ÄÐ4)¡Ï}êãh£«Ï;Õ¾Ó«Ãf¹#S$¡SIï Ïl^Œa‹QEOšD•P‡Å3ÕŽÓ¤Búœžš3Œ_‹Ý]{î½Õ)H¿Ö¨k³ؽ­pÎ*´­UJî Ø@u9C÷ß§Ög+¤¢sµ­]}n·¸²"ó»ÿþ³ï|ó«·/7U)“1§¯]ghCÀ(\;y¦%ÀRâÌ• ’§Ú—›åܱÓÿòíGÊ$dí¶Ý?îÌž—<\E ÛÿÇiZ¤ÖêfÌH““øDóBJ¨öÒÕÕ›®)Ô)‚ 9ýÎÁ5Ë@÷*xäK`ÒÊYnü.ˆ(IZEm$a´zº,Œˆ¡iB¼>²Š\ùñ‹/¿T·aQ~Jª<` 6wÚ¿õµ/“þÒ«¯pëÆsõn™\žHp¿Qêìʯ<¼UEyú.~ø7•óïy=ƒ08$VØþçv{¯Öµþß;ÕÉ%#õËòd|‘äíºÆ,|¤ÌÀs¡“—Ú|!¿)Iø·llãpç!ðþ ’KXˆÄF¯üav86FªW/×BÌÈàÈ#C[CÓ.ΙN×I¾ó»#ËJËíVtA„Ù0Þd©ŸS®RÉè­| Ùâi² A #vQ×ÏvµµµõؼFÐr…bÎÌÂý‰g;[[Û{íÞ@˜¤EZCRA¶‰Â1Ÿ¥öÄU'IkW,œb:vÆÃñ9óçd‰HgSõÙv/%ÉX>×/9¢ëÚµV‡Ç ³(~¾ÆÝÝiuqcJÏ)HUD‹?¡s4Ö‘€ð˜™`mF“Œ´ð»¯n5ɳ?ß18—xv¿whn3ÿÇëµå%ÙW/T—/-ûì“))j&àñ\¸Ðð—÷¯dp­ôìí?5<íüñU kûéK§‰—~üÆ -­X¾ýYµÛrá#¿ïÒá½#“—Wä›®e,ŸùùA)˜Óé¾p©þŽ´V”e¸:뽆ôç¶ÌÉÒKH޵Ú\×®ÿï)KIަf4gµáʼnsoôÚªžúi=A` \ûõ¥*©.kuöôñ³ßxNèb»¶óð•Å Öé,'|ã\’ÜÞ82/-ëZò¯|H#t=KµeÛZiZëÒ£³úÔÙ/;QãC㹜>{]±ùÞïÔk­\yš|BçYsÇ;’¹ ‡€Ü\ËЄ- Ž3®$€úÁ†ª«Q-Œˆ¡iÂHÙ‹žâ›ë,ŸñÊÕôáý=3+4áÇr¼Õjoӭݲëù椙¡u‡F!`t†54_¹´àñõ/’¡«Ã¢fÌH÷8Ž·T;ç?¾þE26ä¹pµ+)Û´|yE‰éÒ§þÑK²Mfd¤©Fþ„Uœ‚”J;§DúÖ)Ï♂î3½$ïšÿĆQ’¿Þiô¹sòõ¤Ëy±Ã‚1â²<}åŠ9™ÄoŸí¹ä¯|ºǸ«uvŽL5éæ•ê~ùNS«¯utg^ï”-Úð–¡áŸFï¥ÊY³tê¶û8‚ Y¯ÍrÏ?ñ7_A·­S¬O‘lØÛÜð9Â4Û1ÿƒÇv,ãƒãÏØ¸ÔØki·³EI²õ›*/þàÍ;6ÁsÔ@²£I.G7Ù ˜† èI´ aí:£XˆŠ˜ÁDÍЖ¡Ñ-<°b!J?X¡@´kT cbhš0²C´×\íµËkéîäÞn +»º¼r)-‰÷ì4û}¤«‚ÑB@<†ÊO›ñëH-[µçàsGìRš#dZT£^l£ptýúç{Ûô$éõï­Ôå—/ã^?æ³w„æ§ÒÄ õº2¥5‡yÓ<]à¸gsdtιKŒJÿĨÉÙ×ÛŠg¾óûr²J…DBió—päÔÈ8cX@icz( úˆ‡ec†î#‚!vXHo‡åd;Iõ …nî=ië ýáW N'Ó$ɽüÈ„…$‡xÎ#OžÝþÍ‘ÞY³ÊE8ö»‚Á¹IX·ݦ¾òÍG¿2(ù2}*Þf =›,*ª¥UlÈõÇ&ò[Yb9©&qž íp†åÙ™ñ’ÿ¼¥vöü9ßYša±pŠÑðvÕÛØl,ýÅ¥Úl®¦6ËÁã5õ6BnšÏÚ‘öÀâ°ì°+?VX'Ä n—»¦®õÅ]×KJò›/õ‹¡®s—z•¹™²€£¡U2;^^gún¬KІ\£³…-×±߈¦Q”œ‹u×u„ø"\¤¦ä|úDÏÑ‘îQŽd£WFÁ¸Al¼ŽÇœhÂèw-ž…Q ×Âi‡YCÓ„‘m€9M4®ç²Ö35ÜŠ×׺Ý.Ön c<ÅcIq”84Ñ6Oà#í*\d#ö†B¶ªĮ́µZgí öˆÈPnX)ym—Zާ’ù¦µ3³QŸ³Þ‡Ó¢xÉI#2¾¶& m?xñX»W™QòéåªHÿ^˜-þâo<´(£0Y•lTÍ)WÍž™ñ¯ßßnM‹ë õÜ(ˆÔ1<}ŸúiÊ‚¤i…J“^Qbý‘½½!JBpƒ3GÍK÷ >`c¥˜c Ź93º38ª…114MõDÏzXsùïîy¦¤÷vÛ¸5™©2)óø¦ÜÖyγՖ$Cö{UfÜî€8 »4Œ¹EG_Ýë]Z¾ivJºN- ¯·‰ä*SnÚá—÷z—•mœ•RTб¡î^ëîÓ"ƒ‰Àp#½i }LÏð<·ÃÁb»=ôÉÈÇmÖ°ÑDˆr ã%Wómß{Gñ¹ÊÌ™óòå -¿|Ãú'¢ó½qí>\kÉOUÏKcžëêìÝû޹ΤÜL ÏZØÜ=¸lci¡±WÞHkŠï9î³³6FäQK<þ`C΄Î£×Rlœ#IŒ?¸¹JÐȉ`1†­4°~ô-¶P^Vµ€6â… ³0 †¦ £Ê^†Vå?ÚÕu–Ê+JutŠ^¸t^®$*©?ˆûÃá÷.Û± þ€x¤–”ìþÙ›/„8’I./Ö£ %+?¯¾êú7]ðÃAId²‚Ü LÏ­½|ýˆÎb8!‹ ej²Ý’ŠŠÏývÇvá5xiy ƒã»ã¡èÇ2ôÕæD¼ä¦wÖ7~þØù‹Ij“:ðÐ×=8NU”ó¬÷…·Îz¼È‘0zðcĽ15C#âã;C˜ôÿùÃ7\,/KÏ/Ð1îüá…º7oféhiÇòܵ}ïC ²?òèŽ%Ó•þà¯{ú?Š0í„ÎQ ïHÂDl&Wt¼Niiñ‘9ìVYˆyd³Éî+â•É’BÅí;/žÍ¬«ÈJ×µ·†;zm’*cZ‘\m€ÑÓÀØ$GßÁ1p©àc ú‰EèO"´Æí ðè¾è I_X[¿Ùö3¹ÜRl¸>K3Šdde óv\k¹¥%CcŽ]Ø!ÄI7/YVþ¬áñ'êX¢ñó†|œØ9âÇ:’ÐO´U¦»ÏøÔúÞ>6bý詵0 †¦ ñe/®6¤ËUI¿çj¸ ãâBQ¦x!IÑðä$‚?Ä>ðà£ûv½‘V¸H­’ßîp·×ž@IPÂh]s7XCÓ„±O4I‹¤ýS˜Š1Ü^¿T̬ÞðÈÝÛÚK‚"‚aïÀª?wƒ…114M€fàöáñ´*Ù¦‡ŸH0~ FIî6 Xœ7퀚&€n+V»û^·›’6 C÷<… Ë[ï™j/àUš#A M¶ÿô‰>ë(g€ímùóÁ‘á †¸¯1À} ˆ!îk@ p_b˜ÎPgÏRÇOµS@xîÜðâÅS펈!`:C;&ýá¦Ú‹)Àÿ¥/JCÀôÇQ4×V¶tª½¸C¨®žÑ\>6Õ^ÜK€º/x{û›SíÀÔPZS3ê4ûóVLµ/wˆ¥fëìXC}Ýùûïæ¿é¡­“Hbè~áÃûäT»0ôZ±7¶y“Y6{ª]¹Cxè“èwiÙ¬ÒûìÎÿ·¿þer A p_b€ûCÜc¼{ªé…=W;íizùG7–n^2cª=€Ñ ;ZÂ}õ„"ÖÄ{_:p7bî |~ßµúšÎ®Îp˜å9Žþ€þ¹±Ïãqo~ð¡üü©vÿ–ñ›œÝ¶õ‘Õ%IYs·ão^¼P×ý>KÈíq÷öö Ÿ®ž.¯Ç-W(tZCqQ‰V£½Ãn‹ßÝ"’eÜŽú’çy§­I¥Í¹å–'G(°;m.·Ëçñx¾P0€c$B¥T§¥fÈeò©vð–Á‡}Ò`ÛÖ§Ÿ:|äP›ÇLÉ“¢áá ‡ x(©Ž É©õˆbt3mh¸V×Pgµ˜ùèg‹ü‹2xkÜ?&£qfÙ¬Òâ™ð4Qêkµ}Yéì º`(Xsµú=o¯ª\#‹oŸ{·œöš?ô\9µè ¦Ç÷nÚs²ùÉ+Žœo¾r½;7M·riñžƒ—Þ:\÷ðò‚ÁÉY–½RSÕÝÛ•‘ž™]^6 U|.*†‚ÎNÊ~%+3³¶¥Qž±pª½ú1ŒO]ýÕŽŽŽU+VK¥²1¢EÒà€ˆr²m·ÛöØ‹óXiiÙmó÷]çþ|`ÿÉú0ËM"9Aà+çÍxî“«2“5·Ü·‰Òmî.-UwýJ8N0‰Ûíinl~ì‘ǵZÝK/¿øÔ“ÏÜ+zˆçBíW~?wËŽÚ£ÿŒá¬)÷Éhøm;7§,k߉Á½öýÍ?ýû©Ã§¯ed¦ýéÍóƒÅÏç=~êhvfΚ’u,öú¼[/A]]ííO?ùÌk,YZ·¹Çíl䃶®ÚÿRsaO(`õ;¯õ\Ñéö„äk4Æ–ÍûÒ•ËÇÚw<æ(ý¹ë¿Rw½«¾¹¦¾ê #Î.ù°B›Ïˆ5´HÙÛv¦¡úuKOƒÓËÏMêòaHô\¼|ž¢È²’rt.¦øýÖ>3ºž)š¢(Æd4¥¥¦_­«ycÛ«[6="—ßcMD„»eÍÒù2¹l÷žÝ>60o·V[áñ¸„²ø-ဓó9$¾ë>ñйêOSí2pCÀø\©®Þ¸q3I’¯{p³ÏÇ”N¤YhàïÐ6¢íB(¦X$Y³zíÎoÞ1ôÍ_¿Å‹5_úôC4=™KݦÏ]jøòn{ãW¿å¾%‚Ïï»Þx­»§ U$èã¾÷v'’ #©L&— Êé»Ó–lLy`íºýû÷nÚ´åöz|‹@— Žó$¥-^þ§êBל1¢‡Z:mÙyÙ­=ûÎæ´$å·?²xÓW_ÉÉÍ8×눥õûý‡œ7gF­u{œŸ' xòìI»ÍñÉ}Z&KÓO"Yz“ÍÎéìô´\{«úeS`”–§t ÓÓsò*ÎÕ“'C¯Ÿ,,^»àU<ï?QÃÿb‘¤Î-ÍpÏÎ-­oh­¯ ¿Í†|¯‘‰I®Åó:^x-[®N›êòaHKOÏLÏêènCçÈçóÛl}n—›åX±Dø§TªÒÓÒ‹ KH‚ܾãͧžüнÕ~Ìc¸ËíR«UmÞrðÐA’·,™›’’B ‡*ÿè‡?R[{•ãdù³a—ËI‹Sí2pCÀ8°,kw:ЭÊð‘$…nNU5UKúzg¦ggeeGUЕ«Õk/ LOÍHKˈh®®þšÍnEɦ“)…¡Ú]¯5ôšÍwÆùãUÝ_úÔ‚v[€åü“HŽîaó*ò~ñ_Õ›¶<(•¢›µ2 ÝÎÓÒÓПÈotû¾å>)¡´”ŒÒâò‰&´ÙûNž>æt:‘ÛR‰, ¤˜R­–šš+ÅÅ%·ÃÕ[ªí]{¸ÀõâÊßÕü"ºÈŒ¹O¥&)ìɤýòoöýák‚aVÄÐ<VÊû{U‚Áàþ÷÷ή˜£ViÐ¥‹ãM2,ÉîÛ·[!WþÓG>NQwéM‘¦)(§?0G«Ã.vR¥E•r©ÆÏe¸ü’KíÌ+g8¶¿uStì vô Éó"ôÈ5Ú¬èGóîÅ”¢´¼‚ì™È.gÌGÝéúä7OÌøºî’ÊUS,†Ú;Ú‘èÉHÏjëhnmosÚyyùy9…­=eÙúúúì¶kµ5m-- ..,(ª®ªnjjÊɹ[Æ9%Ǩ›“ z’¢Ö­]ßÙÙií³66Ö{<^‚$ÔjN«S©Ô"‘ˆõ†ûú¬¸H=Õ.7¸Kï À݃жi–ˆ¶lãnµöþÛ7ž£hêù¿>£­>Ö>ó·¿õš¢ÿòüŸžçp»£ïÛßú.MQþŸX ?F^·œåùü§×çßL¦Èíóïá_ÿÔ¯‘ôÁ„ƒ <ä¡*6ò—¸užŽNwORB|÷z}—kì˜"šQ$CbšÈ1*šŸ‚j}NðûwîÚŽÄeRùÆõ›þ뿽‡ÄÚ´4ìêâ¼»Š+SsðŸQÍÿìc ¾ÿü‘Y³‹Í½ÖG¿ñÚ¬|“I¯TKˆd­Ð؃ªÛ}öäåæôI`@,£ƒàt:þñÚk¥¥3׬^;Õe ‘,ÄúÏòá㟎ä _6‰x?Ú B)©åb£V.Ó.è 0Ümu[¾PXJUMÇ'aúÉç¸þ7Ré}X˜‘«¦¸›ìôéK—.ï³[›[šNÏÆuÅbIl/zRB?…ù…ûì=zôȺuçÌžsñò…{K á"¥£ïšL¦p¹œïÝMR¤Z¥NNIA*'1¯‰"Ÿ­¥±¥µ©¸¨43#‹9[xY¿=àìæÃ~©±„–ÞÞ‡+` @ ãÃGÅŽè"#+ƒ¢h±XŒ£«(0;'›")ᇠòcç®ww½»7·h&’J?üÉ/ׯ]³iÃ6|`Ñm¥ÀÄS$ò&ÑÆv§Ó©T*cÈsTàÂd,ð{½Žžb‘þC Zý"oód¨ †ÙLƒtp8‰‡2@àÇ<&%Iš¦šÄÑo&²ETlSS£X,4™¤§ JŽ1wV‹ÞHð‡jÖwÃ%%•¿ºrøËåÙØg·ÎþÍ«§æÏ+ÎI×›{¬­.Û¹ÿ<ë¸îpØO9‰ªŸ¬Ìl‡Ó&IÐÑëéîù¿—þ¶qæŠYwûÒãF'ú~³gq«¿X&~ÑúÃ\·ÝousS5i¥Ýí«ií †„+' áºaSÊøB!ô—K¦²]Š-­-[4ºæöë ×·<øÐ`%ÝC*W¬üÃï÷û²³söî{÷λ:!Ðs"k«Ç|½£àh…÷?´ek}}]cScNv6º9ÔÖÕ]¼|¹ÏfÅ1B§Õ›ŒúüÂBt“¬»vÕdLþð“mÛöºÑ˜R0.º™¼øÊ+IeLu™î_@ ã­’9¤ xTE±hÛ`0 •ÀÐ 7h¼½{Ç“?-—+F(ŽÏçóú¼èAI@¤;xžF¢$ï²ÈJ2ÆE%ê)4œQ‹û0œvômÎb?kà0ª‘ò£T3ö×£yùyƒ~P·t9:³ë ¥‚ TḨxù/®úÚy.úƃ_øÏwV/-~rcÅ«»Î¤hÄ_ùì‡^xñ¯éiË—®èµv3´ àËU—ÞÚ¾í#Ï|ì^i` $iNåI¥‚Vðû_F²Æâ  mŠÆX6ÜÕÜh³š]v›H,Q¨Ô©9y2… éÓÔæn«F"Ÿâu™Fà„ÃîHI‰Ûg'bDJ…Êïó«”j–c·ûyãf`}¶ -¶|Écèþæp8Ðw É ^sïÜ9sοP]sEj˜Á¨ó ):ô<òÚÍ–š«oUÌBÌîë³Ò6Û? …P1mö>ž»§¾ŸÓCÀøô‹!–E ie‰ö¡ ì0-´š¨ CÑAÓ]]]Q%„@’Âf³ÅÆWßIç£Ý|ÿúbÚþÉÓ%Wëjv?tŽ›J¥ÊË+‹EmÞúÆ›ÿ@aný€X,ýE!ý€O?Nà4ÇE ‹£{4’Dw¦™†bHBvå(ßÅ8ò©¤|¥Æ 5´8Ì+Ü8„*®\{(îééõz„­Ì¬ÌHiöÝ WU)K8/ÆúÏâ8ɆH\R²üçÕ‡¾ššƒmÿù“Ÿøá[§ÎÕ)ÅÜ¿ý󪶶æü‚¼…ó–´uµR$)ËÞÿ½óÎás_BÂ}ª‹’(YºÓ‰§êÙn'ÙpårO{Ûã›–=´æE9i5 mÿûÖÑýGV,^®ThÑÐæ¥R±Ëa¿xòèìâœ~î™…y×[zv¾á^ÞcHI/˜9+Yë°8• ÍÔžˆ¬&”PD¡õY胾Ë/W‚dÌ=fô˜$‹Ñ£ zdjni®(¯Ø±s‡'„J6Sƒ†HÓR ¦Ï‘ò®ÔŸjïìܼi³Ýn“Jeöù¯¾úª2s”•€;ˆ!`|¸ˆ@õl,d@ 1(0vÊܿ„ÀhüºÚÚmo¾Æ…*æÚÚ«<¿a -æÎò „ÑÓÏýçSÇN…Cáp˜4í_ø ‡„8<æõz£c›<^·X‚TÑv¼?€´=×"9" {:ÇÝ9a‘ë#ãCþ,ÆC!?`<‰S4EøuâÖ & còh‡`tt–×ëIKOÜ2ÄÝù£3ð‘ù9„'äèŽÑ\¸ d¥•¿¨:øU#οñ³'ߨ{ö½Ï×Ö&s<[˜Wì÷<{ä½uËg?ÿãÏF-”f–dxÝîwŽ^%)Z+±Øb:}J‹ÕºöH2¡‡¸G&‘"…W”¶}Çö‡·<¤Tª.\<Ÿ›“{áâEo׬uL!’DꂵÎú}—/_,›Yîp:ô:Ý?^߯Ë$w‰f½_1ŒO´eˆeèžÝ±k÷®={£Rà3_üòƒÖ=¼icTRDFX @ ª§yƒFùû?ýU¸­Enm‹Ìå¢Óìïlo r5üÛCéì–è‚ÉÈÈày¡nX  ÅñxÜïîÛ½õ¡GÑÞ·vl[·vƒT*‰n3}H¡¢ bR$u'ÅЗÿt‚¢™˜’‰H)“%eHhNLs"š (‰Ã®ïpØö0ÛÉò˜J¨dÌן˜åóùÛÛÚ‡µ ݇o è;ºr¡f¥FÊó†‹pçÃ]8.Yù«êC_EÇÿÉŸÉÒqçΟ޲åa{Ÿ=99¥­­eï¾½‹ùÿúo4}‡šînuq¨ûjAfÏžªœ‚Ù ›ªOoúØžy¸òÁÕs}`[{ïöw§çhôM ‘¦'—¬\sìä‘ßüuÇê%eZµüRMÓË;ž¸Ô8sÉê`˜ËÕ^¼ÖÁÌÈ.šÚrE¦–Fž©"7€PdSÿÒåY™ÙJ¥Òãñööt'Ï]u'ÝFbŸˆâÃ,‹D %>ˆåÂQyé&ÃZäó{Ñ]lËæ É&ÝɧPÚÏ}öYžÞÝñÊÔôtå %4ô#/‹Ÿyú£¾€m8\6¤B¡ Úï¨!IA Q4K³‘crgŠà÷zÅ äI‚¥R•î™VŠdÇy»£Qv6²3Z; )mPI“ÔÂBµÍÖGtjzÊà–¡»¿j áêäe\Ðȇj ")æHFγNž³áœlfå¯ÏîûÊ;güÕ®|ñ ÏŠDŒÛëEaÊNRK Df‰Dòe¬ß¢úwOöÙܵBŸ–U¸ ’Ç eÉÑ\ºd•Ì}rªJät:_üûÿ^¸pÞëõ?y\¸dyþ£ûpl¡hHt#räè,r¹~ê3Ÿ˜5«â#Ï|T­¾{g¡S2S˜íA%Õh´µµ×ĺ”D9N‰F¤Íilº>Þ|Tâ•«V9µ[¢Ë‘¨ÓèñÒ· CÀøDZA¢-CØÈ‘@,ËFUA´› =Ž !Ÿ––†¾í$%̽ÏÌÌ óÁhkÊ®’‘ÛHÓDÛ€°!GÙZ‡üAôƒ[yÞãõ ©'ôKEžb=ŸDâFE#pœ"Iaä8ËÞ±rÐ8Ç臑˜Í¥¬nSÊ%¸ÏÓn±µYݲVKª×O©üoŸ­ô8m=æ^©8tµ®¶»»¤á…¬þ–¡{J EœÅqÉBaÉ™]Ï–,ûŠÊPÁs.ŒótÙû~söŸzm¾¬¤j¥Êæ°ú|þîÞnS’±¤¤Ô K2ÛwnÛ°îA…âž©]i²Æ~árWeQÛ«'²:,^­B>éÿgï<¢8Ú0¼{½pp½÷. 6°÷òÛK¬‰£‰½ÅÞ{ï-5&±ÄXb7öÞE  Ò©G¹~»ÿìíqœp‡€ÀA˜'Üý¦ìλ3³3ÍZµm¤Â«DQR†˜BA]mùàNR*U %&—+årŠ•G° “&‘«²ódR… ÁÀ‹Šª™ïÕ›.Î^¾&|[cÅèС-›·úiôX²—™Î Ó¨4í,¬ä­§~ºàHáô¬`C©$îYucmÁý‡÷÷ÿ±âø‰ÆŠB)¨dyòœ•(!x@ÿwÞ –éé n™– ¦qéIꡇHP`—÷‡„„‡ïf¢·FUm9¤$P A¾ !b\-q’#TªÎ¸¦›ŒB¾Þ£‹Ô¯……¹­­ ز±±IH~§“º:WbHZÔ+fðñ?ð©kê „hý’™˜˜¤g¤›Í–K†ÑèôÒ'©DX4ò‡rè(Hâq¹qIY¢|H`p”ÍD¬-X–¦ŒOiÉ2™…LÆb±sDÙ¦ÖeúvÊ6Ïþð³‘Už(7((ÈÓ‡8:9ÊsÞ‰^¯e½Ð~¾— ò AnÎ_ ¶ÍÝ[¹uZʵö«ê(TŒè&k‰¨Ò0e2б©t^@Û¿ŸïþL1ñàMdP×P™ûåøÃ`Ïóמ¾ýfïò•øýèÑ£ƒ u D\·{×^—¯^ ðt°w2v„Ê„©À†æ<¾}}q“Éû¼S²ÈG´úkM :¢³KCzä³SïÏge¼•³<¦wqÿç©ÛñG®8^4èØ–Ÿ9£ý–Ó,]Ýê9{¶2NLÔZÝ@ä½?<Ý“ž¢¤ÓR0”83´¡•㸤%T‚’ù쥪I}ÔVND×CžD"é™xž(ãCJMëÆµ çYG'}|uÉJÀoîC+¡eBV6R†•à0™H(4…¼%^¾|YàÕŠkéRõVC R³Ÿ šÙœB~ZÓO[ZYY=dccûîpá™ ‹b¦RâšÅ+P'*cíŒDä‡úÕ—Ã%<1™Œ-û|eh* gÐ(,•à²T£ÊçÆö7mÒ üÀöšu+úôiÈ3±X=‡ËåjÞJß]Á9ö¡ÏnŸŒˆyŸ“'ËÎÓÌܼ@ýzA#×ô‰ÿAµIt“abÏE1)¡R²Ü}}?|HrÚ„â`ë×^rL ž¨@Ø´GÔÃÍÀÛü¹ ,šOA)õêÕ“Ëe©$G”ãïðî}Ü…KçÚ´lW³'"Ä…Ê ýßùüì×cxuìJÄ®y=?÷p²¸Ÿrñí9pbÓˆ›ëãクebáÓ¤Ñ7^½,¬¼ŒdàÖ{úŠ”M|(-@£b5oBï¢Q'M“E‚ǽÁÔ"Y¹iÕ<1¨à¡#4EÞÄcY" ŽTylÅ`ð„à‡Ù¤¶hÞìô™SÙI/ͪÕtˆP AÊŽcÚÒÄr]…Ó“Ž%?1kÓ"„ô©G¤(¨j4›ÍáPP “Á䚘˜°¾¶´cÄÒl‚%D£-V=`*õr¹ê!Õ_þ|÷í¿®’É Òö_xÃáp€"Üüû¹Ô´4qxÓŸ0ùÄk&8ñ5ÙM ̬ÜTÒ Òqò ð¹Û/‡µl÷:~á…ž^î6]Z58qæz·à‡*ÙT…7hÖáÉ n¾jÅêÃ^´xaóæ-œI)‰æfövö—®ü;ð›!Æa”%Ê(qj”")È/HHHTÈd¹¹yÙÙ9YY@7 è’"ˆè'Sa…»ÄœŒj1„I$âìðxžˆÅbcÇà Ji¾(îú÷ljÅùR™„Ã5 i’švNš|—nÕ¥—ø–SQ€g½à1‘   6››”œ +žQšå¹ˆ\„Š“Ý\\‚@¤ÄqJÊÇ”äd/>>”Ì·™9P  († eBw ¡n/riß®eãÐK—.ðÃ÷£3sÒ´>K.[QËq€'/Fe2˜.—IÿZ1,G ת¥ ÕýR’\ l{yy~Ñô9W)b±XàI/Udfe*U*…BŽÒ¹˜Á6üš‚zÄ4†Ëžáª4”^¤Þ¦mQÏÓfÍï·/^ºogÅÿ©W03i“Ö’kù½4{·JG¡*Bš‡=º¹œâ4ÌÊʪU«ÖÆŒI™ÉŒú‰ï:L¥’'?›èÙþ™±Í© ÄIIÉ ™,?¿@$ÊÍÉÉ)oËp(È/0v< ‚)eÞƒììœÄäD;;ÛömÛóùæM5vqr~ÿþ]–è83x05å[Ì4·8n^~þ¥Ë—¢ßÄsÌì%oâ–™]@#ǧÅä è|®J£™˜ð(T; ÈÞÁÞ„“Çá°µµµe™hÊ•Nã°¹@CèšÖX jÂÄÄ„J¥1™Lð ¥Ó4UCˆ ò+PÄ Ô4 „\Íjè³–¡Ø¸2BtbRüüÀßÓo~;hBcuêÐCkz˱˜• ËI<„+?˜ò‰õu&WBÚ5ñ?í®$ÿÂíºZ˜› „?H³¶`Ê÷Tš¢a³†÷o­'¹ «~û+†Bˆá˜4þéncÛR9p¹g''™Œh233/s˘—Åãr8àε ¹&Õ4»ix4»ûäB¡r-™¶MÞ|xlþø±·——……ÀÉÉÙÆÖŽxD‹2Ñ­N¥3ˆ ú£_GaJìýû÷Ö>­9fF›¢ CÒÀÕSãk×aÕ8"ØÜÙóø”‘¦uk×l(æNŸr´·îÚº&Ioß²ñù+·;·V©$†¿v©¨W¬Ò|ZEÁ_´ìý  ÆÉ•Èv"b ÏÂUçÔÛŠ»àðJ+¦H¢Òñ†Íý©õ[àwHáÔQ5³ZÈäˆRòD)¯Ö¯ ªLÝÌn@ggg™Tjff~›C6á…½c…-CÚn2x8ðLyàùÀá°K°!—ËÁm[Õ‹¯G"JãÚ;¿ykkk{ú̹´Ô5´wtxóöµ‹“ËÝ{Þ¿7áš4jÔˆª^ñ9îIŒ™½¿±­†@1) ðlÊÍÍu xŸópó®”0ɪH$±Ùìª~ºq€Rp¢ëL{ žªÄD&å‡BQŠ¡jºqÈáçä@ °¡»MXîíõå¼à»6Ïxq\Ø÷Í}‰†1”x¹F”¹ÝÚ„(¤¹éÏ›y´©úTõvxvÚ3—™šâ¸ô1‚ßCùn-Ý:.®\k+ukf&ôÅq±(#oEŸ"ÁЍDi‘¦B_ÇrÒ_ò-½‰OQ|¡йé1aÚø@KfyÃYÝÈçÞÏçNôs«˜_yº–”«?4z.xöå³cõ'~yñëÒ w7­À‰ÅbTáp*‘ZŒÍFˆoŽèÖÎþýÆ,ž90¤¤·š`ª!dÙÏO_zöVD¦DeaíÔ ÉŠÍËU2ÀY7*«|‚+ö­ÇΈK=ûA^E—€ÔL ‚H>]îØì{IPÏ+vú:[*Å™1Oî_<`Pëˆ*º¢LŽ1Õ1꥙\¼x‘Ü~¶ðÛÅïzß߇ܵ·¨)£’Å/´o6ZÒoÖ†ß|ÌòÒâ¯ÿcÌüˆ[Û›Û´ ò÷Â;Ž=^í\‹ŒÝS)¶›¿¢]M ç+¯9º©¦,xpbͬŸ{˜4Žçö™î7H 1U/Ó:~sݼӚ½s=m¸ÙI±7/ÎP`U!†ª9Ü=™ùirsG>ò!½º® ©@1!Ø9`R¦Ãðg/¤~í^¯AØ€‘“Èm“ü¹âç_NÊV8„MZ±©o¢îQz9c{À…Mg¿‘1ìX¼oJWçÒýGNYë~fë¿Ïâ\'Ÿ]žñ×Å—qI8[Öå»M«&XЪBQüý5K!ŠL† ¹ûz×Âaô_])}?{èè¿oŰl|G-üe|'"RQGVMÛx(:1‹a*lÒïøžÙ•hâ¶ÁSsœ†==¼ˆIšàåÓ°y—Ñ b°‰)ÒÖÿ<ùÏ ÷²åÌÀæ=–n^Ì'f Ö›øW»Õß”œ‡Ljn? ¡sß¿¹P®¼+yzÅ¢#Ͻ·þ½øØ©?Æ5h¸+9”½æ{"pÑç“VºžÞ~?>]B·Õ¦­!w]tûJpLüçªY»Ž\ü!¶tö°xïô6¶ CK§’1Ò §\i‹Tj ²íÈ%u½fýqr¿ÛñßãÇ- .vƒtÜד45îPŸŽ+„±‘;ÉsAô[xú†²ªž¥ÞXëM¢þY“Ú.䯽ܫ D•îØæäÓ¥‚ò¯(xv<9â±¥yľ›gh‹Î…¶é/oz³¬¿¯›éÉ'¿z™“çÖwqv'z¢½‰¡t(–›×—ó++F$³½ð$½E¸‹­í{Bi¡/ .WDÇf’n¦vÖÝÜTngú¡ôjiŸú$ù^Æw4³e[ph(¦ú˜žû•H¦þº¾q¸ƒE|f–ïlJ£âªè7éÏÓ•ä¹^®æþvl•JoÞ¤?ËT!(êå&°e™ÐмéóW™ñy˜!c _CD)y³áMN÷ÓcéÅæýA5Ë5\šÑuMTðæßNûX1žœÙ4¦g— ¨Û^l¢ðD.Y0âàñ¥AÖ¯ÏÏoÿSÏÛÒ©¥ù_º`ÈŸ'7„:åå*v ~\²=ÐÍVœ½q☾ š^]Ö¸úbkðê/VŒn2gÏíu®ÏO­ù~T{·§‘دºMÝ6içÑ}Ü¢Oî=¯DKâèÍoD=Oc~.͈.¼ƒ#þ·ûuÀÎ#—=8¹¿Î1 “4êÞ&ò¼dâ·91ñó~„rå]ÉÓ+FÜKM½f‡šY-og?wé“Q;ZjE.Y4üÄÕÍ‚ÄÛ;[ îàöäyWKV)îz97µËÂKf«¶ ó±N{!%õfhé1*WÚZÊ_TM@ùtJ†D3—’î ²oŸÆ‡S·¹ŠŸ»Ëô±dƒÝœ×+p›³ê*ßP1.™Dÿ[AŸÚò×”ü‘v„6MXBñœëgQ‹©LúàÔcå˜Ö´Ï†Ê›Þ,+½éP,7•ÒøÊŠ ßÞ\^“®PÝÏP5vgDGi¬ô®gíÉ–]yô1§Ö2ÔQÎO˦øØ¸ÑÑx¡t˜\¾ ¢zœOè*Mõ&#S¢¢1õü<¥'ßh&àx˜ÇØûÛîß|{nMY6Qýô/™ø3? D%ûP®¼+vz…Y³ãU›_‰¬áüo“[ÎÎUÝ6¥jžÙ6M×÷V×âŽÍ~œï¾¤mו!¥¸—TãÆ?Ù7€¨öì¬më©ÝË[œÊ›¶X1•_pù£+/dI‡ôw"to­/ºIý N¼{Þö™A,X{éë°Åd’굡$Z\ßróªç#7eûßùWzü¢T¤.¥ÐÌŽ¬1pÖ0¯Öõë7 ï=d€¯€i¨¼ýÖDª×žRЛÅ ±Ü*+F$ÁNôäDsì§Ø{±ŽÉEÔªe˜U¡êÀ &ÉU¥û·îà¨uLtxÚâ_îGÅçˈ¶b*æÊ"§‡R®îЫèYݶ…Íþ;¯Ù+ú Zݺ~ó6[‡…·êÕ«€^ž¤Ùç”8>ÒU£Qè¼Ð†<ƽW"²Â.™øÅN/oÞUŠÍùÉ¿\‘ؼh(Û<‡ÛqÖÌ’¾±‘æZ¶]´>ë5¦ß| !¥¸—DšyR†ác½Íй—·8•7mÙ}+± ¤ÝÿÖɉX‰§pÚ\³2DHºëÞ ºô¼}Î&dÆ\•»èÞ§Îçš”kCIÔnY·Ÿ{Γl¸B—½]ò2kþ¾  ÛïóÍÂÇ=Ç>¼s?òùóë§×îÚ´}ÃÍ+(úË›Ôó¼^{JÁP:£cDcñ¨ªÃ"â.PHó’”fùÔÛ9*MAð™¦ËL!ÍWáý/J:>A)@©|x¬iIbñMÂ=yÖ&4ºZ™áXÑ%Í.Ú.À È2µ/ >ûŒÆàÐP¤uóÏ!ÄJ4ò•@1A˜üVTtñ•„üÞêFx ÍÜÇÇ\%Ó|f…ãÄÝñ>ÑJߣ¥~ö¦^sº4ÿT¦fˆ%¦HïöÍŒÀé;oüÑÂÚŒ›Ÿ¸Ê¿ùáJVi”ûê(}ÕéGƒoý{íöÝ3›'¬^]ÿö½z#X˜üÖtÅåļîCCú_vK&~1Ê›w•Âã%ûU²Ä×ÂA?f6ï,òïprO%+ª ʲmÏ“ä+ŠS™Ó¶RË€e½å‡×…¢†•“³9«hܱö)†]»ØØv‡Ò%>.ûHqžéE‹/ĺDÌ,üæúQ¼–Dez=7ï9Äú«>¥¤2…MÛt¿ÑžØ `ùäí7ê/oùÉçõÚS¬GWJ‡bTbŒ¬÷›tºb–ë áÒ¯dä*o†ì±gRSR%ˆzµB©üòd9Ås³²b„RšXR_?K}%ÓN¡2º…X˜Sóså;ÓÑê+*­¦ƒ«äbÌ׉®à± 2³H»htŽ =™(&wYê!ù¥ ’‹U8?K!Ç‘(ÕŽÁ|꽜ÏÔŽÒ°1¯Š!ÁO×o6:¼¿hú}ýœ…˜8ãáÅCÀCEi,÷m¼~6$hë²6ŽÒÌÄ›çþŒXj¨£Œþ¦a¦4ʶ{É3š9ˆSLžûTOÕÕ2\]?wÕ1»aÍÝžŸ^½9Y¹mš_AÚ¾Í'yÝÚ4¶1cÄÞ=P€QšóË=P)Œ;°úŸæcZ .˜õC_~.ñiýïg¤omo²¬µíÒÁSC~ãÎížþÛ±ÏX»Ò{òµç8{óc{3•nn^¾¼+qz¹kúô'ó’ûùÍ볋Þú}z˜Ïžw"áØ`w°#J˜¿â¨ÃˆîÏO®Øñ‘H[Ò“!÷’ÐXn[úxLø½ïöEá^ÂôøgO%ÁCà f¨¡ÑØ>åJÛª._¤Ûì5“V.”¤÷¿¬é@4TŒõ&Ѱ6¶àPÀä‰éõ§ïÁågú¹VØ¥4¶ý°MCûumèïÎF$Ï®šŸÛncåb ¼é·§OÛÑK÷çž›i‚äý9{\YÚ‚Jæf¥ÄˆÍ7ç"ªÇÙr¡¥x§°hlM»"˜­jèËKy‘«@(Þ>æºÊú]œ,Ø×¬•ûP3DZ©”Êq$ÐŒ‘­¤±˜á^ŒíAŸcŠ›iŠÁ¬¨ìT±ŠM  –½ÊTÜü(oYO˜ù2;9_I¥Ó쬸ÒÄì÷ŠÒŒ| P A86.ß9ºaŶ3F'eæ1yÿæëþ¼1À†hàí´êüjë9Ûg ›“šÇ±´ k;—]Úƒ«,þ©LçSÆŽšÐá/º_à>jÛÀ'Ãþ©Â–çê³wd_>åÓÚgÚŽKÝ…li–UìåíCÖÏÈ«¬\'o:ßÖ¬2+B®}×Ë7­^±ué„¡s¤<¡Sx‡ž;çÖ‡í=ýqÚä }ZgËYͺ>¿´ô:#lý<ûo—4©?e¼s¡¼yWìôòFä̼kÂìÏû?F}ãÒoívdð:°4{gΉEáS‹Ò–ôcÈ]/]ÖM_öóº±}'g˅ξƒ–ì-%CK‰Q¹Ò–J¯Ú2ðElZ.¦å7ÏbùMuÓ4_•ë’IDº³=¿µœ~Òlf°‰ÁÉ_„J·îåÇøgÛâ•ï’%ÕÆÅwؼ½ ú¸ †ï}½ö4Z¶¿ÓðQ ˜YØö™ºÝâŸ_¼tÉܬ”¹x²¥¢¬b ˆQÝxHJÖ«çi¦–}Ãy2–œ˜)Xkýˆ³²1š“?¶ë`Êsѹ­ül+#F1’bJ8fÆ¥ŒSoaʇ‘© Ý$%]S¼–PìDQZÎÉ´íîÛëÙšï$ézû÷fanâØ«ØŒW±Ÿ‡‚ã±ï²À¯¸Y†| P A H ';ëí¥O”ÎÏš”u Y ç¿#ˆ±€b@ê­ë‹X6£65¯’©ÞÀ/FcÅ©&Šu|ÑR¹D¼ÿ¯u©ü÷b1P A ©Ó@1@ ¤NÅ@þû¸&<ípc‡±­¨&<ß=0¶ µ († òßÇ3þ>øÛ H Š!ü§iÒ™1ãþësöü×iÒ²¥±M¨5@1TWø}ïnc›@ FÂËøÕ1Þ¤$"ðÉ_6 ªü¯GÅç†@ ä¿ C@ê4P A ©Ó@1@ ¤NÅ@ : C@ê4P Aj(´ÇiwïÛŠ*Dª 3¶bRS¡Ý¹ÃY²ÔØVT!Ò‰¡‚@ šCÈ74;¨YV®$!UT •ÛœŠÃe1œlø¦l°ÍydyÇØA DCMv½f—ºL¥¥Æ¾y-‰ŒmHYñL˜váî[oO_"ÇŒmTÅášð|¼<®?{¯Ìû„~xç q±oŸ9el»ôC¡ ¾®ý¾1¶QúÁ0,#ýÓã@iiаa-*6†ŒrÄãÇT] ÛR­@1T'xåëïÏb±òórmKYáJ¥t¡R© ÎL‰Ã0ÜØU . S.'?ÉeÒ=DHº<žÖwqÖäS{ÃK¹Ê¯};EŒÜ½­“cåO6ó”4² .ˆfÈP%· 5òòêõé4“Ê ¤æ’â…@ÊCuCµš4ýÙ–5;Ïßz’œ‘KçYúÕoÚçÛÑß´ô¬fó²µD§±D+Ôc†P½_“Ñ8ÌË‹6O=¹„Šê†R–+U&ò2Ï©;€šˆ¡:²cB“~øûÔ>Zo´Ùí½íæÎ&å³£Ô¦¦uÍ‚ïO>ñw×òYÒñTûЉqŸM ²ôߣÕ+DŠEǧSwÌÕ¤¶H7RÓ€b¨® ·ž|ºÖ­íI`·i‹7y;Yª ²^=»÷ϲoû·¨ªåâerŒÉ08}ßg%…Í'„ÐÁˆ¶¡’þ-C¦3­Xv'e~¸öÒ'ŽIOîZsøüÝy*;úæÎîèÍ¿÷S¯ýiÈòAÍ—#t¶×ñ­®}&e^9»øO2»÷ä;ýœàhÎíѾó7‡Ïr0Eƾµ+OÞxž«¤{‡¶™4g¢/üoìÝéÕðéN×ÜŽNtö‹qa‘7~™ºôœbÍok‚͙Ц¢E¨ñÂáCÚ>³ÏÓ¢Ühø—O©H˜zD¸hÿòúZŽÃבÒKE©Öi.ÚzÖÂÖµ§ Ô4 ª+àúf‹ÙýÝô,ûÁ÷ÿ˜M×´¬¸ÔkØ÷Û1¤g“Z;o÷‰kÉ9JG¿Æã­ê`Ü…ך²ÞÿÒÎsOßÊvÃçmŸÐÑ©tÿ/Æ/s;¿ërä;—qGW¡G翟‚³-w´néæêÆ¢"Ã0­xáj¢5Õ3~šNÄ.úÞôòuÒÓ«™T;Ìpgíè=o}ç®ÚéjA‹¾öDZ£¼Îl²ãÄwý:GŒØµµ3ÑM¦’¾Sæ)VøsèñGâ8Žœ§ç’ñÑÞâÌ“"œ×SÀA™ýÓ‘÷ž‹6íqbåÿ½vΤ‘òsͦ¨¯òfÛÖîk·Í °-ÈWî>B^¿´uâÚ«ô ®óçÑKÖÌê–! ×êMdqmÍ>qXíR/rìb—ó»¾ËÐl¾Ÿ³ñ§öDj«äÉ+'MùëÆ šÀcøìÍÄiêÔ{»wEÉä½Þ/|kJ>òs·Ÿ:ÇÿÕóã†2«,ÅXGã8øúxóYJÁ8¼~Ážã×2Å'ï~s¶Oie£[*Pij½¨GÛ5A©òÚ7nõ×í~z£_2:Û[…^}äïnD2(>mž;ëÐŇ٠f`X—kæñ¥”[b¨®Pò¥Y%‰ÝòVÔõȴ⩤ô¸2·ï†˜ u¿üåeI¸°sâ€>/z°©àØË•Ë¿Ýûçü«·—–ýoÒ ~Ï®ÛЩ¥ù_µ|À¯‡V5pÈÏS&î39w½¿‹µäÓë­?O¸¤áù¡:fâÚ-D3é"Jt,•˜šlbq鵨yoßÅWR–¶µÓ8I OY|.aÎ?»šµ`‹~3zýÕyëóŒ5 ­ ˆ) —|æ_±¹‹,þ‰Ê´°Å¡Õ÷ð¼ÒïÜàû±D!Ž[ÿ0}Èþ½œˆ±8?®X|¢ëø?S' µ"Ÿ†Îêäg‚âp¨D vfݘ-ø›ö/ñæÒJL¤,\ÛO§Ó öY› ®ÓÌ£NíC^ëg‘too‡=oßé,`5èïäÝ'Ö:PÒÖOž«ÂȦ&EžžämyäöØV¡&=ÜË…¼š¡Ìúb±A 5eiLÕS0.Ìê³ô*Éú=M¼„ï^>—jâ¦-9é±­Ztß—’?Ì– ÂI¶ì#ê1ÝÛLã­dôKDG·ðüõcÿ½±¾[~?éÆÉýmÞØ¡=eO®®¤6¯d!H]Š¡ºBɪK*º¥ÂñV\ò8í·­×‡&^y8Ê"kÒñøuw63#úz:[6doèòÇŸö4#:¤ìÛ/ïâ/'z´›eG=x M<Ñ2»ÿ6á+z×·þ¹&TŸñ£4£c¬„ ¶vi6p>?)1f¨Ðn¢5ÅðRõ8JãÏüýú•­7E-çŠÃævï ëÕ'.ih¥ ´n~fëþþ ôȼ'5›ï?|Æh1öíË“É6í£rÑMDýì9¤g:' KˆÏ%Åe¸µnø±NŠN³ýåè7¶ÁÛŠh+ì'Ó•;ú´E‘‹uãeÝ}ÍÁ®}“á3ÝvmÜÓn&gñÝ´©—4täÜX°ë»Z¯ C,%yµWTÉKɬbFèHÚƒ‘^E»c®>šlOèE=C1õŸø¡Çîôô#Zžl„Ö…ÁjKßÒ}^=ÁŽõ‘ß­&†I]Zzáë&&ªñV2úëFÑIP¥äÍ‚[©?ý§¹»)p›¾só¡ƒw¦Ì£–Y%Í›b_ÉCÎ!HmŠ¡º‚B¡(î¢T¿Jp@A¼Sù]mŒ)Òzõÿ 8æ}:-Qac랥h,ÀÄ"ÔL –(––î_ØÂZë?3âļµ¿?zõ¡@¦Dˆæ+ò±J…J©õ¦Ræáên25zke¢NtìºÀggï…çh¾ZÇœùøå+¥„ÍYä¾K÷¬Egò? ›o˜LÛv¦Š£é—“ó›t²ÕõöÙÕQ;…AÑu·lÔVtìøéÛ‰Û»è3•ÄE©1#úž0 ##K§q"îD¡²0Y«6vÚ£¾¡‚Œ{¯óÒÓ0„2ÀŠEº3-û2)+UDV* &/^t•ÙUÌà’Å Ä ÿ¹¿. *Š»9øÔ_0T§e>Ü•S,¨b¥¢Ùìs†.Í[rœ._3}³W)ÑW(üu£ƒèžüô @¿¶gj1BL÷£3°dè5O¡(>® ÔA ª+”|ÅgðÂ)èºë‰ù]Õã|Q ßï’±ÍWâDUzýi„N) ý|‰ õ`•ÒüS(éSf¹ØwÜÚÓÛšXñ9É[›v;¡i Á‹ÆëžNŒ³)E (Ü™“}·nIG_MC ƒß–Iù}ïËìiÁÅkwŠKµ¡™zô’åL¿}ÀÊ¡ë àØ)X°ñŸÃ rÊz+Ž:œTô÷£ÉùÜxÀ³²àå‹ÅpžFsáŸi%¾W÷u«Í¾ýùG.{ß÷Ílõæ‚îÒ"Ú† •‹äºÏQbE›,˜T¥=ª’© ó€JGµÎ4:J4¤¨†’·pĶ: gVñ6Ð2DçØ{{{ó©·`®ªR2g‹JÀÌk’7%lÍ«ìocWàfû Y_ˆ¾NtÂS8ÒL'B¿6޹†@ P Õ!Š?ô©,×ÝMÌߣ8ñ3-æ g[tdRvnyž¹8ÔÒ@hºJ ¬þå¢É2Õ‰¡­¸ê)w²žG|n›žÆrtuérȶ͜ú›z¬V±*Ëa^g—E³fxÍ›ØØÓZ–“öøÖ³ÞãÛ˜1ݬÙgn<þf¤Ðù|.ݤ?‡¶évÚбÖàD‡¾ž&bYt)ÂqÔÈrÇô5þ‹pdå]·€iÝ~ 5»d ¹+¨ÿͯ‹ÅÃüÀYµo`=éP".ÄF+öÍ›O‘É~'UÁ©L©U¸¥Ö[òÙHd æòk÷Óán,3ÿåR¶´£ZÈÊD7òÕ­M¥$/PK8á‡ØþRfKaCÉ^ZŽh·Yĵvìy#šækVšg”>»»ãä•·i)QÞ?þ¡xÉ胣ºÑÑ mÞ†Šî<˜;Æ…è&Sä?š/çÁÓ—e¥ÄÔ- ª+è}¾sÁ™ÿMïü}Þ„¡]½-1qÖÓë'€;‡‚PΫ{ºO7ÖåÌæ¾v²¬”»WNZ šÙI]ûê¾y“¡—Ñ?Ê£R~}ôqBc[IêÓ9Ë_!Kg±nÉæ_õBhé5/Š2§Ìh6`îU¢qi6eÇË͇7ÌÙ˜QÀ6³òn2šILÿ\Æh«™¿ ì³…Âô¸tî೟+oQŒ¼·€Žš:÷Ã×-µÖ^®ë’­ékW/Ÿø½HE÷¬ßzÝ/ã©z•[á®mÓá»fˆGÎÍݼ§»OñêŸø´¾èÃ8M³D³¹}æY?wp«@º,óâïË“ëuílµI‘—´zÃ)›AM]¢.lÙ—ªZ=Æ‹ÊbÍl(\3ï@ØÆa\D|hÁ ^JòzÚ²ÿ¾x/µ¥)Pff¥eÖ‹ N -OЉy¥uaò\mÙˆþ‚á´ò.3GMöZýs#w‹ÌQÏ%þ›[—ôìóã­—ü‰(vûìCý’ÑG?Ž ipÙ:7ÜzÝè…õ6Ntaåþ¾h Û®ëkNQëãçæÁ–!‚@1TwÐûÌg [;³{Çæßv.žž’•ÏàYx5^¼ýD/!¨<6óþ\ \¹w餥Ÿò86õ6ŸÂ¤jû†ðÏu@ýS.6eö€4SS —oWöz6á|aOŠ;q¢5Õ¶¿h«ãn6çúÕ9E>Qzç廬_±TàÚ´Ùú[ÝDi¹ùÈÕÂ]:ÛçúÕ+º—£Ð,GÌ\=bfñ¤œx䌮7Ý]§6c.¶£×f—¢y† e‘yÀ˜ÃËè«öí¼9UIçx…­þc¶7‹¦M¿‰«sήï²à-Sè9vÍ_-€¾AúoÝóaúì­š™š†Z$¸ùðZJò6\<Ùv܆mVSX>Oï4”YÅÐ[l€[VÔò¾ý‹\œ{ì=³¸¾¡‚ÑvÑŸS7,Þ:cäG‘BààÑgæ½¥ˆaÖéÁ’óüqºŽ<ÖýbÑÑ ­÷Æý©‹ÌÞ7GÁðkÜqס”¢5Pô˜@ P Õ ½3-ëMZ¼a’^Ï(£ûOóÁ¯Ø¡Y—në¸ûÖ}ÍnÙü»vw¢Ë8­‡^&“‡Fž»9RÇ›v° 9»4Žþ¤¬ö YŽù<ŽâÓeä¾.#u}êæ•é8û¡ùŸ¢0ìglÜ?£ÐqÖ€Çä!CÉ˵ï´ÿD§¢ dV1ƒõ›Î'®u.áXjÁ`˜²bÀ”Ò<«]U¯%Ê&K;»¨Þ苎náAi±K¶]R<̓@ u(†ê µ÷¡¯ùš¬ÖÚ¯‹z5R8È·L}4x¡×ª¶MÿÕ«ëº"Qλk#•öWBº5nô!HŠ¡ºB­«N yà¥Î3TË ~þ5S3¥ä§XÕFµ]·wûö¹L«!‹wñ)h±‹1ú¤ŽÅP]¡V'„Á–qÏ[‰eY/Éi‡j;­âb-c-­^=DJæ5ÀŒ 7ãe_µ]÷Òýz¯hÜèC :Cu‡ZYXÇßÓÓÛÒʪb!@1TWüÝc›ðUä劌mB%PÛs@j R‰äý»¸¨—/êÕo`fn^ ªCü7ôD­fTK¡`૘¨&aÍ*p:C@j7 ÄÇåäTìt(† Ôn( Žã†Uìt(† Ôi ‚@ R§b@ HŠ!@ u(† Ôi ‚@ R§b@ HŠ!@ u(† Ôi ‚@ R§b@ HŠ!@ u(† Ôi ‚ü§èæd}C$k¼ñá¥á^ƶ@ µ(† ¥¡(xû˪õGÏß|ðI‰rÜBÿ÷Ísèdl»4œnì>øU¦0ðpÜíšb@jP A "N»Ò¹é ˆLئP™lº8úÑ•·/“jŽ*Éñ· *§0˜Æ6@ µ(† YÔePB*{â¦CÓ¶äÑÐÔ·ìÿ‡<Š+E¿.¹ç襸9,s‡¦û-[5ÓC”(²¯*dÅáVOwì;{OƶøóÎõ?5-ý®*Ø¿r殿þMÎf[:·í÷ýú…?šÑPòÐ5sw>÷:1e üC›]:±ïGO»#ébp4ýÅS>aÒ‹´Ìq^NºÝd3@ u († ú‘džÚ+žÃŽ,Úœt´ñl4ai#r{Sÿ¦ó¯¤ ¦O _jôË ¿¯¹s#öuÄ^*Jzx¶`p‚g#/öý7öÌêÞú›„nìRíÜtÆùÛ±m§v w®Ý2ë^´2æøxàÇà¦3Ï'€ K7?{VÁ³ëÿ(ñ}®An÷ÇK•t¶›¿·)8Ê  Åbñ5FB ¤ŽÅD?ÒÌ“äFÓ1%Š?ýDØøÇƒÿs½ùéф¼'Æ?X±/̆ôñù>æÎjš"ÍÁÆ7_¥Øý$³[{C‡ÚÖ»”Š¢»ßïëÀ•åÜ:wK¾2ïPúÈØQR µXpâÌ”Ö`#'ö‚ÌùçBzÌ™Çò›7ôôÜ}¥‘©#@1©Ù1'È¥À_¾×Ц¼iwseQ'‘Bá6t(E†µ'›‘/—$‹µ§—<”Íø¸ã8>Âß~„Î…Ž½ËmžwœÜÞ1¶¹aæÑ²Œ„@ HŠ!ˆ~X‚@Š€{Û_ ë›òV¼_J7¡f3Uû¿|Ei“&ŽÓ ÄÝ‚ä}ùZ¥S1#!RG€b¢¶ ûü±¢·¿õ_|`êÀV¦tôãÛGG~;>qÙJsŸ^rx›{1qGWgÑÛ?ïåÉÁ®/ÇŠ]ÎÜ·Ç•¼žã¦Õ·$œpùý“{ü\y4¸Ö5à0fçÝS Y–›ëÖŒ Š/ƒvU²lýaV¶‘ùOÅÄ Ïþú lHD¦dÃøÞ'ÒYT•DÑÙÞ—!ë¡‹Û¬˜5åàFÏ‚|R¢^à8Îsê¹¥±uŮű¼¬ýŠ9—’–¶ ½Ñ¾…)’ýänÜ'éÛôÑÖÖß®è´fÖ…Äëó»¹ï÷·c‰££ß'geS)ˆmG$2=;vBX«_ùæMΟXöY˜•m$@þ“@11Ǧýå·v®Üð÷¹ë¯?©P®W@HÏ!cÈ£ÿ¾ÇY:cÏß—ß¾xÉ2wìÔ¹ÿÒÕÓµ_iU€qÝã­œóëßÿÞ¿t¡ó\¼CG~Û‰O#Ú~ƼgºjÎο.¼~˶è®þâñŸòKŸ;ÃÏ=|û2â Ûܲd˜•n$@þ{@1) :×kü’ã—è9„Òø£îµPÏ¡Ó iº»—’ÒÊr¥ò†ÍÙ8¦Â¼|üh4ZéZ´hc¬XüWb@ *FgºÅèè½{ô¢ÐL&›ÉdÊdR©LJü‘É”JéÅ/Ò™ŒÒ=´hÅP%ŤÆÉS§èwðf”f$^4·®wô}jsV5\zš}ôòÛçz»Võj kþrùÒp/cRƒ€åR~p¼p¾E¥B!Sª¾Ÿ±ƒÅbÑiT¦bÑ©T*-¿ `Îè*•’¢D ¤ÒqKö²˜L*Wb¥R‹'tU(•8œº±²bRiˆSî-]°îÔµ‡ÉYS+—{O=9XXnóáôèƒÏ½îF²(UÖ¿[&µ* ®fŽ6t›kµûÕÙ¶Æ6ä¿ÆRÇ[s®ý;È£ŠüWìC”¥TâåŒ~‰î:* S©06›Å°ôj褲 fP(T¢ aEGFðø|°}ýÚ•ž-1GxÏE-ó)öÞFR((¦RV‘:8 ÓýA»6wwªšàk4P A*qÊÙ°úß) \´ã°Ÿ£ynjì¿GöŽ˜ñôéÞ°ò•q/•kó£»µ…zÏä×Ý»¾Þ<© c1)_R3%¼6 Ñ0„Â0 }¨ªšÚ¹c'E§3 NW*• …@üUU*ùÕ«×âE|‰\´8[”<7æ—µÛo<‰I1¾¥§_ð¤ÙS¬éK¾o:=±{SGG½»®-ÛáNܺ¹|CÊaCïqÙ.#_Ÿ\É"oCß&­ºÿ Fˆn¯+'ŽÝ{úN–‚ܪ÷Ú_V50c"꾆ȹ{‚ήûçAŒŒá0fõ¡YÝ]Á{óˆ7Y2Д_8ÙM¦”ÆÏ>êÀ•g4Kï—íÿmTã¡OÞÏsâus²6½sÀ‡Oˆ—P02âÃtþ³™[}8<¤ÜèÓíü˜'ïWz˜á˜ÄÓÚaìó“íL %މ÷-ž¼õÐ…wŸÄV®þCWœÛÁœXÒ²\Eï‰ÀÌÖÙž{þ6a[6ëþý®Ó4"{",·ú÷¨„L:ß28|à… Õ&é¤\Q(W^—ânȘ’m´ºõê¤<ä§PÓŸ·^FÊ ½±Ór±w1ÿ†l.åC夼i¨7ú%/g(Øb%¹ÐO™ïŸa!—T*ŽRså“xð¦Iá6ê§£‹_h òŽIÏì^ý÷¿wSó”¶î †L™ÓÞ‹ÿ`lŸ •ƒÚ­Dèl¯…®º»çÏí98°óƒA;7us!lí×á툞·ÿ¸õNA·î=nÅ·-퉋ʒv.^òïã×43—ž?.9»bHçßÏ ·áÆ^ؽþ÷Óñi"×ܳ^§ K~4NâV(† •€,ç2xUéìÂ+yH!Žžz9eÚƒ;í¼ÍÀî’¿~ßíØi}òÚŸí‰V§nÛúÛ‚ ßn+){ö¤Šç;é DÎËÙwÒÖD¯ijn{Ç処íõûEÃìZïܘ¸±9Œä¾ù5öz[ b SqÛ~Øê0ûnÚñ¶öÅN± Üé·›Æý dJò¿§LìÇp©¨!«”’ؽu#v`ñ~ï`kWŸ}ï Xø…«>Ñ>hö” MBØ®û³OÇ !†¢ä(»Wû†v 6µ:yZ³”@Ê…ŠåuI÷9V™z9&)yÑâåD_ìJ¡t›K¡d91d¶¡4$ùâ-PzÖhK8Ï”^®Ä,Ý*H•B¥PòòD§÷¤ÑégÏœª¨… B§@&ÏÉ—šr™2_ª:I…ã1zÙ0£787//ŸJѼtRöf4Ê‹k/•Ó>ÞÜ[?j¬ïÌå;],èÑ7~_6~¤×É÷üM§ç#vo,ì+¶[Œ·;·öZ³eœ—åû[›F-Û9ì˜N=5cü•¼†ËYdMÍ<¸ìç|õj#@–MXóçù[:*óÓ£Ÿ¿ªºÔ«" ‚T-Ò¬SJÿÉÝ”Üeð75eÜŠÊ!+asëB¨3“š 3¸04ë4†Ò¾³Õ4·plr¨ã¿xuÛΚ‘€’ÿ³wM$]Þô„Þ{EÅVŠž]D±€]OAÅ‚`E±a;<»ž{?XÀŽE)Ò›@úþB ! ¡ßw\œ™yó¦ììÛ™ÙÝÜÓ¥îXSÁ£ß"µ. úƒ*o”qdKSIB&vÖ ø;‘e—u½Tc_— õ}Š9‹âö&t• =÷ ‹Î³V ” ¡ä\$$Ìz|ÄÉöØ×_°Q $Px—I9ÍÑ;„:Y8º tëÙ³Ÿ×( ^úú‘P„†µuípqÊÐÛ^¬©"K'!¾d%P»ŸÔ·ùÔy H[ÕÃÅIk˜V@“#¸º‡Kï˜û±hù;y¢Ë×Ì(2BÁÚ_EYQEžÌàpY,.ƒÅæ°¹8ŽÉb‹>ÃcBp½ú¸ñEáJáóGþ±xÈq ++këöûúÃL…Âa¤¯½šüWôG%Þ‚¯‹WГ»^ç®í¬U¥Œnµ½Ø¯¶KP/K Ìaì2G}!—î«’¾+!×ÿD€­¦‚èÌXã{idÊ3†’ص§S;u*QSÕ6²üå–ÚÀšŠŠ+·òZr±§MLœH®æô‰ˆ÷­J®¦lŽ€›@­Xî@QÞ5&1;O‡\Ç&S¼@\ •DÁÚÏ6sÒ¡‚8E£94šÉ(5FdFñ©¤B·±&Rè]Ã'ACɹˆKÈeeõàràé©>ºªò?SB—çKޏõvâÝ+7ïÆDoš±*ÔñeÂ9©ëGBD‡ÖÕÖµÃÅ•ègêEñ™Ve'¢tö“JÖYµû‰ô}¬FVu’ÅVõpqÒ¦Ðô \6‹ÉwjkéêéëáÊG®ïßS8\Þ E£ñ¶Oã<‚ç`͆²ƒbn\ù>#CC¢¨®Ž^•(Cׇ{zûâUbbâó;Q§ÕÎå®Zã–ÌòS>ÛA…‹Iâ°ª’ y9^¬ó(Û)VÒ"~”ÑK9wQÁM™È'*õ£â×cVA­OË=S=½;ww²sèܧoWe¢gQkŒ!  ÉÙ.°TÙë·•ùh YàÈK.UÒBÄ­ßõµ0È‚· Á,Ž{TÄ ¶Q©oTµÁx4ü`FÉTÞ2Ršùo)§bÏ!…šQ†XñܬÒ79,{‰hêž4üú5ñYÛuj• M]lÔìfÐsF\Ùl`æ;óŽuÖY¸g["ÑPôb_EYÔ=©øu[Þå‡ÚUﮕ ¡ä\Ä%¤ç_O¡³û T(¿@fÇ=®>†#:ô‚ý-X²ÈP§mDÚÏÕÚõ«1Ehš¶W"‘™bð8TðYãZ¥ 3Q_J…³¨Ú  ¦†+!¹4…š ´âEÒ<.^8ãܳ»ª*oŽ3ùÛW.—K£Ò?>•ŒgkãðxÌ–jï`K&“óóó±ä“¦Î¬ŽCTi×¹ö7|ì„ÍcFìßøªËBžuuøòM5¢q\®Aù›¬«Ä zË7SWxÑòûL®Ànjnå÷Ax/ÂFð>ºFô‹ø×ãÅÃg/_Æüvè€ÕžƒëT){Œ! i˜6â¤ãÇ?Wøy·3T)ü‘týdÔ¹²ÀçûºorÕ[2ÂßéèJ ZÁ޹¾4£ÑóêZƒ¨ fo­é®:r‘íþ ÞêihxÿÞÛ]ßwé޻ˑ¢} ¦‰ìÓDšE”ÕÄÑ^önp³7¦ç&ß¾pTcF¸ø©,Á´6âŠ@Qîå¤H ¼”¸Ž·èn1ÓþÃòÚS$ß…iæ{¼-§g»oK[­ì¤çñ¥§»‹ÕPr.âŠ6LÉY™ˆß›º´—aiÚ£™ Ø•‹_’±{ÃY¥ánÝõTI‰1K¸„ÞÊäúÖ˜"ˆ­¨z!^‘™êÙÊ<'m€*@¦0Ž×.|ÁøjjRé\3‰"ŠÆô1‰Ù5J¬­¤)ДTÚx<þê•ë|7•BÉÉÉÙ8ŒH$I$ˆ'àðŽgpp¹l¬ÂÂB“uúÔY~Ey%1¿“ÛÒHñù?ÉJ½ÉøCGÞæÏ±SŠAÄáPZ•\È‹Öø§æÚ›G"+:ãÐÃ×sè5x[Ðèy7è\ne4‚yìÏËÇgôÐQ§³J§éJzˆ¤µÆÐ4È }üT}ÕŠÍK§{¥çÓ•´Mz ð<°ª#vh±[ésfMÐ-E±ï5â½ð†½Bqú™Ë_&MîlOT·œvŠ<ÕIϳ†ºm8>hÌk“ƒªzc‚¢ÔO»ˆL>(âÎVÀˆùcdÉkêwvñX-'mÿ—P?• O–?Í¡jíÇeFëº ¯Sà·3—ÏY3eà÷<–¶©Í„ðc’5”œ‹È„ªé­ÈŸ.Gˆ*Ê–þQ>ñÞ§ÞúŽNâµÏu9%\3ûÅÿÜñ(»w}ëGdšª­Å)#2Óž¯6ðZÚÞr1žf÷ýõ‘¥D0~Nú=itJR_µë‹Pv+.¹”…šœa#Fs*'¶“’cîÇb&Z1MSn}ð¸(‚ã½·š@$vìØÙʺ=? _1ãÂf¤Ì^qt€«‹™GO|ru÷Ÿ]X)ú‹Ü×-2_<»“¹³ðÇ‹ו‡ú÷T¦˜jQ¯Å<ËqR$ãIJJòBÞºG‰T³)¶j‡—î0 òÕÄçž?BæÝ”¢e¹çNÜ“wéÔ^]‰ôýÕe:ŠwPàõ±÷·D\¡¯[ÄKÌ)[´è/«¹«§ñ,ïÏûWH± ]îÙÔµÛ@Àš yCçõQÎëk…ãɺ!»¢Cv ‡oü&轘’ÉwtÙ—TH ðÝDZ›ÇÿÛXî¦ç_[ÏAû•¿ ß~.v{e’%£sEÊGðÔqÁÛ±? E§’¸"` ½þ± ÒMVèT¥mmF>ù2²Ò#ÈOšZ3†x ëÈEL¶£–ÅZVåõÍ^ƒ”/ »8D„~b„,|²PTqD¡¾m-.\œ2"3U4ñºñÄ«Ê+ºtâãKh\qIê«¶ ‚Ý@œ¡ìĉJ^_­„sšÞZRå’“¢À[Ô;9a˜#õû—©.[SC3w²³ó°@Uµ6æ6¸šû"1/_ލÞËŒtïÔ?‡Ò²\‚š®é )+&÷ÕÃŽ:ÍÞ鯾ãôŽ¥‘¹%T-+».“Èx,ÜvÞtÍe»'݉£´‰>)äå/z ,¢¡‚Ëd|ïÀÐMkÖÍW12m )|*…§‰Ú÷¸ËŽn)*CUõ̽ìpT c‘é¹IïÞ—V¬»¡ìwoßÊ•°øÞŸß?}HTã¶š—1ü2|Øw;³£³­1#ëCÄÜ9j¶‹äI²V @Ðê65CËJK™,æõ«—&N˜Ä`1ø3D:Úz*uÏžÝÊÆðdYAQU^A³„ðåðã¨^SæyM’ÈåJ}Ç`5óâÒtz¯ßÝ[œ×kÿY¯ræ~øRéÆX}ò"ß‹'éN_¾mzy «8î8í O$Ñz‡õÊ û5º5zh¥¼Ü…òÅA¾·ý’ƒ'äË0†€_.'ws€÷Œ”,.IÙ±Ÿçù] d­€Tðß+]+ÉÌü‘ð*žÃæZÛØ\¹~M]M57¿@]U%¿ Ãáæäæý,*221çpsÈdyž)„Ñ)Â;á:°¿Èðó—¯5¾ %)W^äY´7Õa¤œÝ¾EÑt¬•ððáX0†€_µv±/e­@ƒ¨e0°X¬÷ï_kiiÉÉ˱Y,%%Þ󡪪ª\.ÇØØO °XÌâ¢"5UÕ”ä$ÛööÕëemó—Ä=Ma±p8…gv¬ˆÈÊçå-;ôZ9ÏûÿãSf` @³S{ú„Éd~úðÎÇÇWM]Ò7ì˜ æ·nÛÚuæ}¿ Çÿ~™Ì EcïÍ»½Cþ¦…0† ¨m4 (—ÃåFî’¸{¿‘„Åå[B"EŒ!h^P­ýä™Dî9†^V&Ù¶Á왢¢Ê›=j=_ýŸÆ4?µÌ<¨®®Ù @SÆ4üMÏl[F"G†ßïcš þÇs ŠKXá’È·´lSªÌl0† ¹§ð^˜–]üákº¹‘ÿ+}¾´eàpÑÏ)?âߦõÐþ˜Z‹Æ4Jå_‚3ÒÕ¸ø=ïÁët˜ª ‡h*Óz;µ#ÿ÷PV:€1ÍÿM‰Æßf*«qP˜ ¡%g㌾ÄËJ0† yÑzûû“µ€XÀ€æ‚Ó¹33  îx@%çuGjjÀ€æ‚ãìŒýÉZ  Àà·Œ!~kÀà·Œ!~kÀà·Œ!~kÀà·Œ!~kÀà·Œ!~kÀà·Œ! ápÙ¹«§O8xýIÎO‰Ö6;õJ•·*Ž’ÑÒÔ× 0Ç`#í{… §ˆø›“,e§2Æ ‰ÒŒøk¶^ø/.%»€¨ nÓ¡‡_ðWsþѤc¾›Î<Àäþ>RYA_Ы@Âg=¸|7­¤YÕã0¾oZtôJì÷ì"MIפM‡N=öo[Å?zѩ͸¹ší'ÅöoV5€_0†±%wîîÿÎÆÜd9ZYAVüí³Ozó€¿#øãVö« ¿àøÞÜOŒ¯ƒ ÷þ8{Acèì§ŠâÉ”&Ô0r˜kèÃLÌA¤Ê#ìŸ_Þ>ûúþM•1ÔJKÙrrpvüÀpˆeáÀ˜%D¤l‹¾0¾»YiæÛ ‘Cö'äF/ýcüøä—.–«RаhE)«•”WW¥â{ÍÇ]¨)m„…‘à2ÕÌ1ìxïç‘û/?bÐtÇîÚ<³vå”\÷×î×?§åÓ4ŒûyMÙ¼âO"NH=”[ºòqæðØyóÄøÎx„›ùõÍkWøG§šëÌ.ÅÙ¯½•”y!¯3sˆ?÷†þuúfRFUÕ Û¯5ë[”=ú¬;Ýãá†7žL¾ñ8Ìñˆ¿÷Öû/¿ÿÈ-cãÔuMûyNݲ|ª§ «äÝ¢‰~Çq׳›udRçe,çý/®Œ0•¾@kŒ!@4¥9§ŽgðæuÚÍ?†YB˜CN»]Ø™uû-¦¡\Æš£_'·ko^øôs!ƒHÑ·µÖÄ"üüú¾Êkd¤ˆ¼®;——ËÇ¥Xt±4 =NLŽ ÒgtÊ`5Ú®qÝ_M!Ò ûõwMypûôö GïØïÏÎJ‹Ãixƒ‹f'¾Münfe¨®mjç=ÓŽÔÔÖÎìÑÓ/t6‰fÖ®­BÆã¶Žê¶ì¿tžbÕÞæÇ»7×mxpïóÇûøö Æë°±/é ¦ºx¾z·³µ¬úÚwEʲîÝy|bkà;vûk»b‡–» Šz›‡Ã“ôi…k}\ð\Ž nRh €1ˆ†‘{•ïèìe\(§å¥Eþ3‹Éùq=ÃçÂeãqöƒ.%ËëκÏ)_«é­;9)ï„Y™:Ö?9¬=ÏrûÙÇ`f‡ÛýôñHyFAŒ¦ñà´ÿ–þ›=uŒ&­FbyßôN#þ޾5 ËÖªª~—}Æÿ¹ØÛÅ;rîš]ùž!óµ÷ïñö •fÆ,!Ì1æpÜ®A&…‰‡ºÌ)NŽž¶¿»N…H´ÓäsÖŠdVϸ Šù°Qƒ˜óãG1•x`¼WÄÛÏǶ kO”þØ¿ãma丨¡fi÷VZÙR¥WiÖ¿Òh€1È32AÈÚ4⋟̲´Ò|ò),EÑÉíô' Ä<󵨶%ávã~ÏÇÎ^}ÿ69íþ¥#1—O¤Ä~\d«V;¯ü÷Ñ|G¨‡ö«léÓMqáÃ"ÆÛèïH¥1d6vf a€ýÞÛ°$òlj³J³4û-LºÌ÷®ìϳõ{-Ó$oËfr*3ªG™Æ ŠZ9‹9žœJFW¬=•fÌ*¿äëxè6I.TÍŠýÔd\ùBZŽÃæú Æl£&ÚŒpàƒýaŽü/Ü»ùXÆ:²þÝ¢ÃÎ2•°sG±­b•»èëÚ‰ëcŽ¡óÖï ŸûtÝ‚mï”+(WáÀ,ŸZ¹H]@¶€1ˆFNsÔhÝy'2JÞn{¤Ç¹ñÎæ¥?Þya‡pxJð8ÓfÊWÕÚAn£([q˜ÿ¼ ”ùø|”©bíÈc&õöìë쨥@"S)ørÓ„@%ðɼ?F~…d«á˜ḏäÆ÷ÈÆ…ŸŽ<*æMù´nX%‡«¶” Þ>æI#k^1 sܸ¸²êr›Ár s¬¾ù}×@“´{«sXÕ{†êU@æ€1ˆeÓ¥M{ø'ÓSg ì4‡Bá0™(Šâpøá«.»©P›)S9­qkÜÂBn¦†ºvºçÖS ùùîÙä,ú§ìJá9g—÷]ŽÞƒ9(T*ƒNGxÖ ~Ì|+þQ]$!;ÿóœî½÷*«v½½fUß°e·ÓïòÒÎ*ýík¬8ŠFö;i‹ÔDÍÁAîs˜™Cæ…v•ûq1¹ZIí þíVîx›÷ïøÎñ–†iIÙò| ‡Û€"2Œ!@,JæÞq/L7¬Ùzþ¿Çß³ ÉJš6{øÎ šèÞ¼¯ö?ñHq]ÈÞS×ß¼ŒMÚvšêÛ_™ˆ¯sóú ÓWn=Mø‘SH¢*šÚt7{õˆ½¯¥­­¤¬,Z>KøUøY\œ””ô$þqff&GFöÐì9§Nw»ÑTSS³±±µ²¶B°† ur¹yyyFÆÆ²Vä@ßР  €ÅbÊ$w0†@4 :=5-íÞÝ;ýûëêàd4ñÂ.þ%ú(›õíë×ÛÿÝR×ÐÐÕÕe³Ù-«uÀårauLˆDvω¢¨lr—I®Ðú)£ÓÄÆ 4ØÂ²­¼‚‚¬Œ¡ä¯_ø‘c@lcnA$ccï{Æ´NpG¹œÇ}|xŒ^VÜexHç!AÍ¡ÀŒ! —Ãù‘‘®©¥-CK¨ ´qGõ ôsr²e®$MÈ{§1r?[tfin}`½Ç2>Ý\€1báp8¸rd­Rn‰}I @Õ–&šƒì”„Ô7ÿéX»Þ»yÎP:D&‘eóÌùoCð €r1[¨zfèúد‡»»ì4 yx<ÈÞÉ=#õ“£)±0ÿ‡‰Ã /k¥þŸc~P=7nÜX¶|yy(êö´z$/s×&?ãcÎ×'½Ü×êéj#”¡ެºèЬvÿ&€1¿•ƒ)f íÝ»÷ÎíÛ˜Û××m}ö‡™0Êëdì;&N3?û£¬Õ©¦É[h¥ÿnm앦õËå4+cZØuÇqY45“Øk‡Û÷¡iÒ±^ÂÌÕ¯,z3ݪ™4üÿŒ! ið1ÓM™}ëÞ¼vU!{:˜l³9üú¨‹¬T mgrçúXóË1~žËð“_ª¼FýO=ŠêŽ9Ò®o]¶ÿ¿—¯^ÿ(bžÿð­“bÅûUOl]qòòÍ„Äï(U½cßa+×[+Š~õjÕÌPBBÂÁƒ) æÆ;wîtss“^ÃÓÍ&'æu‹ˆ¿>ɲB2§¤³¾IbkÇôºrUq0‡£)kwõ³uÛcª´Ï'ŸŸ~òuÛ‡o/hÒÈÒ+Ö4^±–ïQÀïвp8Ò‡Ø#î#fàäÔ/ ù׈‹_’ú`EðÚè[¿ç–*ë˜õ4*hùâZÔfRïx;íñs§ÞHÞÕWŸòß@3ŸÛÓŸ l¦[ 0† )Q³=¾µ ßMV2á;XE¥mºúÃËnΜý‚‘÷^O8vÞb{ NÞ§ˆ…Ažƒ8ïî­-·|Óöïüùóx¾r7…BƼ6V‹DÑÌâ!¥üܸ,yYm´Õê¥U ÐÅè .•5€&@ÊE®¤8sˤ}ÏÅ["½Ô…6ÒVºñþ¨UÅÌRS}ê‹äE ­ô_n1‹ÞúàsVIÏ?ìÀ‚A5Ö n¸¶ O-FfvRš‰åísÒïq™ëæúí»ø Eqè=bã?ë;ªPš¼¤Dšq»ví„M¼‚‚¤4s¿PøÍ+‡+ö–‡ÚyD%3–SDÌÁ`CMS 7êíCI7|Žg‡{kòN¹¶èjûEŸ.©a iú––åSG–VaC7¸óA„!‘õY9«4FIÑs>óár?Á$"»¸¦|¿#xî±+¯>}GhÎC¦ìŽX¨Nä Ê(·tÿªy;þ½ö5«T˴ϺcKÜõêìKµ×0}^þµÝ"zËågŸÚ,¾sg¶5_BíU^ Y¡Sfヌª´™þoÐSDºŽ-²õ*rcrZ'Y_2Ü^eu™p–¨ð#73¢‹g{eMMqñ7 œžo23ùÚf*ß\±n×½ßðy_K„¢aýgOÈŸ›_NÎc™Ú÷Ù¹o|G ,ü]Ä™/¼LLAå´z ›±?2H£¼¿Í5V}¾ôËÓáŸ$š/yôp^M¯ß.ê©S.%,üZm.3}õÌ©{ÎÝÏeR;öóÚº?¢“*%ûåd3÷Œâ¬«X„´;#LÜ/Îy—µÉBÓÊPQmîÇì@ÅÆW]ãchvX%Ï]ý·,:xéxWsvAzüƒüð«}Ö$8î9qËZ›ü$zã$>ßž[Ѥí“/—„̸þhFʽíŽ#\Ú|ø4L³úÑS÷[Õ\Ô88ÖuÇ{»C—b-å wŒÜ“ž’°«Éß ›÷v¡¥I‡¦îä6jõúÀ6R‡ó³Œ@Tç_üjƒ6ݽž¨´a aPøkï ]Øô/A/ £ÿ5í'f¾äÇ»Ý·Ó DmKYŸ#Ÿ|1šç4æÉʤØþBñÅuDLS²Š4æ¬ßgßF·ôÇÛõ3¦üñ—KÜÆnXä þ}‚®ªDDE»Xëd~ñ¤Œ'¡Î¾T[1 ýáå’ IgnD:±ª$ÔîQ¯Â|{,Ü~;Äôåé iSúû¦½Ó'¤éØ"KQ¯"7&w ‚r¥Å7¹Âl DËò.Ⱦ¿êaèðˆH6‰X% aïó½cSkŽê¦Âï"º4³ÛŠWœ{ÐN›wfí¸^]3?XËY…šó#Žu0×+Íx½fâø~ó{½ÚæÌOò|ñ©—îEu3-*d I#R ¯ìÚ}ª_YÆE¾ÆkGöy:o}çðïÍçmå ¶ÍôôèÂÈú´OÕr³ ÃãbfWEòÛˆ% ¥»¾"kTK2vç ª3u]sMœ!@³Ã*yËÄц»uÖÃFd-M#K{,Cÿ6ùHâÞÏwû©ñ–·‡úà øaæÙ~úRŠÕqÙ1ÊŽwcÔkv¨Å–5k_ÛÒE¬¥ïÜJ_÷Àµ­ æ]}âÐÃþ›Ó6ê7婨ÕÕ;Ü­•¡jÞ·—Û–¬2°äÍíPi^RÄeeþ5ó–õ¤ý 1Ñ›nf£ËÊ)_º†°Âo¦] $Y.ë  ¼Q)ã¡·¦6Ä¢ S·Ó¸ØMÝ…"4 >Ev>"›Ò.x¾ÿ°žî¦#žV[ÝØeŸ§ý›8ýÞç1v¼Ù]½ êK’õ×ë9Ήw׫¨TÇ׳5Úo[êóÍoÐúQ¢•[§2"K!}‘“;Ð )-|ýy†¼¢Y)ƒXT¦I$vAp=t"Âì¬c©ZÛ ç_ç¢è@S%É’9ô¯>?L‹sWçu‰{gF¨Æf\r7´_¾¸â$Ô×Ûzz”I¯p¤ÒÒwšÐ7Ѩ¤,â°ñ;aµÒÄçä×ÓÞÕ_Ÿe•¼™}=õ¯„gVª˜wݹ“‘½Â¿o 2l7\ƒñ:ïxwâ²±iúdMÇ´+g æŠñZ0†€fGNsôÄ¡NŽnÝzöìç5ÊCƒ„/Ë=]ÊáŽ5ÕŒÙñM!"õ¨­?¨ú<ì謙uçv•™žw¢3ÛT dE§nJ䘷Mk ™Œö3á»ÚÛw²çXu[z,+xœ–œäT(§híØ/ÌÆÇ,í!6‚žÿ¹Öá#GÕKO?WÒêÐùè²'}þÞ EB4;l*ß3„üÌJڽدŸÏ? Çg Fh@}ŠìüC"›2ëñÿ%Ûc_ùIçÝ›(º¼|sÏйè(¶hгR퇰êSŸ¢ºv¹=T»)¹¬¬¾CB<=ÕGWUþgJ¨‘ãaQ5£Òõ%‘:‰ô¤~t/#Žw©253¯W‘› w ‘°ç¯¬èNAò\‹©d2•ƒûB P(rŠrDŠ‚"õKrL~î C´¯È„eW„ˆ[¿ëkaoY„Y÷¨ˆl£Òèr‹ågêqì·c­(APÎÏð ýg;ߺZ5M":&‚ÒËêmñHÀbÊʼUCõûS'âÙ»Dƨñ¹Ög­nf››©Ý”ôüë)töc¿|1;î1ÿ(UÝ“Š_·å]~¨]õ¦`šºT}©ñú ö(ñ’ëVFd)êUäÆäÈÑ{þÊŠb Sf˜O#e…o03 ¤—É+i‰83­TŽØÍ‚D9Û–*{gnaÄ­% ØÊyÉ¥jÆråOyñÒRy]"lu\掚]¢,ïjrUCѬÇÁ§Ïļ%²úÙ1¼â?[Ü:Í™4¶3·"#µÁD\Xä—sŠb­‚Rm?£,gøåMfæaÞ±.: vG$Ò — ÀþßpÛ2qV¿%~[ÔfüщLÏ:·c~2¢wp(o¹¡$c÷†³JÃݺ멒c–p ½•ÉDšE”ÕÄÑ^önp³7¦ç&ß¾pTcF¸§Fïïx»ëû.Ý[xw™"R´oÁ4ÁþZømñŠ gôµxqfåÖtvTp{!•l åž¿“6@•F «©ÙlrÕ[2ÂßéèJ ZÁ޹¾4£Ñóšt cæ¢u<\Œµ󾽨¾d­Š¥ïøò52#åÃçbzîÌýõÃ[šIÓÒZ‹„lœØo×Sõ¿MÌMü[.ÁØÊFôüP“îBx·•=¿}IÂ)ˆ¾ü³ËÒ1GIö—í§ª:Q¯Ñ.DZ½ëSd7àªÝ”%Me"~KlêÒ^†¥if&`úò|Í÷x[N6Îvß:—¶ZÙIÏãK;Nw—ª/5RD¸G‰Þ«!MÇYŠ)=ëSd½ç´<"g†èÅóSfµ™Âb䕿%Òuðx"“^ÊåðÔ¸8<‹2%œøóÏn=é8¹ã°âþcÚªf|¾~2ê\Yàóý=*m!”@5ò±žèåÙ!j£›½='åöE^—¦Èëo›ï_ÚÛ°4õ០_!ˆ\ÕÌ8c8dì¹×e¡Éìx¶œyyFüsj˜_윒+Ø1g<ÍÈ;@_;DVêå¤H\x1%0Ì7«4ÓþÀ-ò:S´I80†€ÿ74Cîî&E¬u]Ê&)Øtîõßf;9Þ¼ž¬“x-Âs]@N WÇÌ~ñ?wMV­­šØ7îd=›Ó©3ÏA¦©Úvw?öï&Z­y«úÖ§¸n€ˆnJÓ[‘>3\ŽU”5,ý£|â½Oó#Ùq;sùœ5S~Ïci›ÚL?†H×—©?R«G‰‹&2µKA Ö¯ÈÉhq„Ï_zñ“üäiFæ%1K>Ê+™RhJ(Ê-ÎO•W⯬£8‘Ë¡K8ñå †ù2²V ‘Ö¶¨°@rœÚˆ«Ï.[â’DÅÛ Ä4eÛQËâG-«òúf¯á;pùé¡QÓC…´©»/ )&NÿÄ6ŠPŠy1%SzeD–¢^EnLî@ #ôm2”SZ2M]«[AA&£ø…²¢M^ ³„²ÒrY j4E6»ŒHVd1óˆdMɃœA°½=Âje7?!y~µÕB´ ûŠcéµô±×ÒªŸ¬P~üð÷©ˆ˜6zÆ'y 2øcOAÁžªÈ8’NpäÙàȹðƒ¯}È« !É;ä‹ËBV€14JÊ’6[^h†Q5ÍncmóçÌY‘ïÄÜ3gùùŒߪj#¼L†§©ïÎýêK–³Q×ñ$àòˆD|ú÷û\&GNA‡'äg&h +-JÀ‘{–••ÊÁãkLϪªŠÙÍÏÏk¾²ü¿ÆÐ€¹ÓÜT-“õîÝ s: s/^¼ˆçcZ;¼3XÐO¢9Êëý]–½&ïÇu-C·ìÜ‹H¥RäU8lzaÞ-C…Ÿ…ŸYÄhI ‘H$‘H˜=„ýâ*Ÿ°ÍÏË•?7ê CÀ/‰„µŒÿOî,{÷êÅì0Çÿ%ôÛ5%ð"ò¢#GñPIÑ%‰{‰6…¢C è“å-~–dÊ« ärñôÒol嶇÷ 'ßÂãñ˜IÔòêÿ€1¿(ÊE¹Õ¯èÕ³'/[¿O´ D>A¥RÙl6Šö¥Ó{Ðé1 úã2úËüìk(Z‚ eÅ9çqd'"‘‚Çáðå‰Dì÷ÿàþ§uƈ» 㶃£ŽGëQ¸_€Ö‹¨'Õq8œ¢¢¢‚‚›Çpk‡Ãá¢(Eù3@˜Äwðg†Àj>ÀÑ`£‘Ž®^zêwC#i?ÎÐ|H~´¾°°PC£Ž§NÞ@A,‡Jñ"i pv7/` €h¨ª³‹Ëk×”UU-,ÛÊvêEü`ŠæçåÇÅǹ¹{°XR¼I€–Ç—””àñ­å‹¤­.—+ÃaŒ! …JiÛÖŠD"]½|iÔ‡Swšf`öœìwÿ¾="bc‡ººF¯Þ½õ ˜ŒÖòÉCøàðx•ÜÜ YëÒÚÉËËSSSÇãdóY=0†@4üEú¶VÖílÛãp2»«cÐéóJˆ€¢(›ÍKZ!$"©½Ý£‡±N]»cö G’Ö 6ˆåääÄÇ=îС#YâraóÆH‚Íb±e½üTVZ*[hDQWOßÖ–þâùÓ¢Â"YM0·r‚Šªª­­­ººº‚B2RJÀ€f‡ÃÑh4s }}6›û ÅÇáHª¬,!Œ!hVÈd ö'k-I€1Ào CüÖ€1-‹Åd±Øð9Apx<‰÷AZ²¬ž·cZzYYjjê›7 ùyù²Ö¥µ€Çã••”­llLLL¨4šLtcZ6‹•••ýüÙÓ>}û™˜Á'ù°Ù¬ä¯_ïÝ»C$LLM‰$RËëÆ´LëÕËç}ú¹™š™ÉZ—V‘Hjca‰ý>ˆ½¯¥­­¤¬,Z>Kø A¹Ü¼¼<#ccY+ÒÑ74(((`±˜2ÉŒ!h!øŸ#…·/Ö†@ r8YÕ CüÖ€1Ào C@PVVŠý'9‡SVUÃÃ7›ø½AË‘µ"3W¿²èAÌt+Y+"ÀšzýíÛ×1÷@ º;»¸{ hðØ7¶7º>ÿÖÍI–BnY±ÐJÿÝÚØ+#Le¨C½¨—Â-Yÿ\M6KMuŸgß–)6¡L3#`”×ÉØwLœf~öǦ•<ß{Ô‰˜w D“üéÄrïeû“2‹¹åWqíÎ'?ÝrGZÇÉøÿÁñvÚã?æ †tûûMsÛ%ËÍÔî®x|Ï·¢ùìFŒAÛÊàI®ÖC@€Ýå<|»bu…"ü1‚‚‚sçÎñö^½r)f U'a*«‹~¤bGbº¯¶\3ª Ô…íP/Ô\‰ïmgrçúXsÙªT›¦R¬õ°š$ŸŸ~òuÛ‡o/hÒÈM« &ùøK³‡oΗK掚ó·ã®ÿõ5Ã!È“}f~«ˆ&ØU€F¢å¸ãêînU^9ƒ–¾C¾c` gÙjch8NmK(%%eܸq_¾|±´´Ä"ÂcccøîçA£‚“<¯Í÷ªS[@a@ýC7õ—µ­:ƒK¥àe­ܸ,yYm´Õ¤O"¥ò‚’9Œ´$:kmokeÞ¹)O®N]¥aÔ^&Ãü$S;;;Á@FQ¼~ÏQx†Ñ›]Â3^¦ÅZЈ(·dïRÿ-‡/}É,Ñ6k?qó™• Pnéž?7¾œœÇ2µï²sßøŽX¹ƪςwšŸÞó)³”¨°éøâ¡fW פ!“mˆ“²B‡’üøuæW?¸?­-–„ËL_=sêžs÷s™ÔŽý¼¶îè¤Já‹z¹êˆÃù°3Þ1(†s6G/Á{gÒ«ƒË¦¯Ù÷:9‡¬¢ÕÁeüÓk[¦&› 0†€æ¢°°p̘1ÉÉÉK—.íÞ½ûÅs§kÇÛµoÏw(“ d]¾å–í[9cÛ±k)ù,“ö=o‰ôvP—2Ç…Vú¯—Ÿê|yåþ›/ä ;‡=ÖŸpò”¥1o3Lºz<½Õ˜J¨ÌbŽ„,rþ´œ™•¹Óï±|uÖ³oëÌU°„Ú~¯’çé) ¼Á"+tÊìÝ—ãP•6³Âÿ b*A8¦[Â’(»Ë›ÎŽg ªâ ò~GðÜcW^}úŽÐ4œ‡LÙ±Pˆ¯¯bJÇ.ûºÀkâÑ»ïh:6þa â)p4Ô?üÐÛ”\’²†C1׎®@Ö>n¸¶ O-FfvRš‰åísÒïÕY{ "2/Aί>ýãÌ£3Κ4É‘k+Æef¬›ë·ïâƒ<Å¡÷ˆÿ¬ï¨"l×–)½¬_þµÝ"zËågŸÚ,¾sÛϤÎzà0R–Lžzðæs¢FÛYa‡$×OmMêì§;›MNÌC1Jʈžó™—ûI©üÙÖUBD&”\Åhì÷bJ¦à”à2™¸N.MŸl¤­tãýQ« «ÎRS}ê‹äE "»4ÿ? +v¾vp‚µ¯ûT·öe7Ýæ_í+f a‡¢§u]pYmç᫽Ûéd}z_¾áÒÌn+^u>pîA;mrÜ™µãzuuÌü`-Ç‹ÿ|q଻/8h~»½Ùv`'óä4ÏØïÁmÔï-|××¢vÖû<·¾sø÷æó¶òÛfzztad}ÚÇaöóÅ ü®ÜÞÚQïݹyÇõž4è«6ó…óôðÿ;ÛÂUöøþ³¬¤¦Œ! ))))‘——ç»×¬YóíÛ·   ?ÿüSz Wú¬IpÜsâ–µ6ùIôÆI}¾=·¢IÛQÂ&ö Úu•îµõãgœÝC•1!âp˜rÑò^£–ûÆ­ï"M*s™…Ýã2»(ßïx£h®sä²Â¡ôǾ\TeºvE_…ùöX¸ývˆéËÓAÓ¦ô÷M{§O&HþriðŒèËtß_\Ü}rE|AåYEsÖï³o£[úãíúSþøË%nc7ÁÒ(&AW+'ôXyôÅŽ6/ήëëÜæãçrï]ý·,:xéxWsvAzüƒBõé~ë㢚k7Ò4È‚°JžKÌ =å®2Q2¾k}/3¯?Ö -ˆTöÚ·º§.»±ù4áÈÇYqé>¼‰C=G^3}õ9øá`Zœ{ùäúˆ€½3#Ôc3.¹b^½^{Æ:hb“¾óÃ-ÃW¬|å¹³«8MX%of_Oý+ᙇ•*æ]wîd¤F¯ðï[ƒ y;ÞŒ‡Fꨇ9l†m6"ìú'½$ˆöš‰“ÙßI3¼´µLÚvhÎzj~ùÞ´>¼sçÎS§N>zôèØ±c½{÷ö÷÷—^‡þmò‘ĽŸïöSãÌCýwNÛaü0ól?})%hØíÓsL^»,Èl‚ñéÏCË‹UËìz®¹€¬ï"MDšõuêŽ7ù‡ºjï}’p`èVÿë˜Í‘vý‚‚þ,yBÅqí·-õáí!5<¼A7êGiˆV®áFƒwz:ð2ëÁë ñQXüe5÷ÒÚϯ˜"×ÓÝtÄÓÊc RóâW§b’K§ÒfÃò1=1‡îÌ¿F^Z³öµ{ÐG&Ž6Ü­³v!ÑÒ4²´o’YVÉ[±y¡œCóÝþº¡~-þ°ƒoÞARdQ°Jß-¸•¾0îk[Ì»úÄ¡=†ý7§m ÔW¨Ž#…LÉrôúDŽsâmt“#§ÕY˜¨Ew3–½Üâl¢„]>6šuÜ6HBýÔVFÊhõU^Q‰$e’P»“K>)$#²É?J´Z´w\ù§Ú@ÑÖ«h…Y'/íÐqÅœEq{“ŒGº äU9¸àÈ–4b ƒ-Y¸¦‹veΘBÀâ )Ÿõøˆÿ’í±¯¿ü¤óîÝ ÝÚ”¬˜d ½ªo×Üûèî¹ÿAn³÷Ä¡NŽnÝzöìç5ÊCCâ&eí‰,ˆœæhqy½Þ4øÉw㻎´“¯¸NKˆ,zÞlìžÙ¦b'/YÑ©›9æmàE]™’åè0’¾0Q„0èB”¢Á*>XBýÔFÊhõU¾¾õV/jwòÆœÔ"›¬ñ£„Ìa±Xl6K(k¢œ¾•UÛê ”É`ðþÍ}sñ;“ˆr¿¾Ë/Ö*Ÿœc2Ùå¿t·º3tì÷s^¡¹FÇÆÂ9(ÊþYÊ€A/ÅrcñùlFU8A¹,ž·B>æäTÜûqQ„“÷Šhžbôªp^ ¦Ü–ÿÞûÞ¹|óîý“a—.ï”ð&Zû—²‡Àš ì7((¨[7Þýëĉëù ì„Å~³ó„NféÁW'äÃ$œ€¯|Ç¢”YXûÙfN:Tð§h4‡F3¥ÆˆÌ(>•Tè6ÖDT^<ñØ  Y8ŽPã%KÜš(¹¬¬¾CB<=ÕGWUþgJ¨‘ãáú*Vï Ä‘#n½x÷ÊÍ»1Ñ›f¬ u|™pFÂ&|±Ÿ—žëÈœÈö_JÚ8ºòAâz*VU ¾úÈ-‡@%H_¼±8BõNe™Tþ–-)ZÊh P^ú$  v'—²OâjfZñ´…¨&“kô(Ñ ñž!´ò€P8—™á;(Ô)øò˜W“& ZŠ5$EÝ“Š_»ùM^¨}õf)ªº' ¶:.s‡³R‹äãOÐi–Öå;?´\­°¼H8ÊæVgŠVèFULÄ…E~)²àM2‹ã1B¬U*b ½'©ÂKpè3û[°d±–Å–Ôâ0“_é1C0†€¦„oýõ×_ØïŒ3ꛜÆ;™×¯‰ÏÚ.êdn¤ÌBÍn=gÄ•Íf¾ó0ïXg…{¶%2ð %½$¦1úÓó¯§ÐÙý*”_N²ã7@1É |?õ™\1Þ¼“¡Õ·ÜòÀ+‡°E†:m#Ò~ aØ%e£ÒPRAÄä¥î0ùÜYÍÎÃ{++Ä-h,9²ņqëw}-»™Á6*Âʉ’Ù9ÒÔUm ?Ÿ[6\V^-W‹Ë÷ I¨AM¤ì5µ’®—¤¾HyRR©eHy—d•¾ÉaU쯪Ýd«µ›}”hnPT„уÁúùõÕ«„*/Uµ¥¡Üù¹ƒ_ªú´ ‘y>ÊÌÉûï“ÓÛ¨möx[N:¶Ý¾u.VZÙIÏâK§»›GùXOôòìµÑÍÞˆž“rûâQáž4,³Âo‹–3œÑ×üÅ™U[ÓØQÁ¶˜í åDßNí¯B#ÕÔ”*m!”@³Ù䪷d˜_—£+-ä vÌO3òЗ¯0‚jC˜ûgú?Î* wë®§JJ¼°„Kè¥D“£çÎÜ_zåÂ^4N‰Ç€]¶-߇ôr¥ïò]Ïÿ;«¹k[JÀš¾=tîÜ9##Óò’!Ò,¢|¬&Žöê°wƒ›½1=7ùö…Š“¹©Ô“2 Šr/'Eb॔Àu¼åv‹™öþˆ×ž"ùf´1úS”œ•‰ø-±©K{–¦=šˆ‰"RIVL²ŸWПÖÛüEtè†TVTpû’ŒÝÕCX oë­,üº[C¹ƒçï¤ P-.ë. ¸‚HÎK×eÎÃÃ?;ûº(ž‰ è©[ÅÊÇîþNØØM+Ø1×—f4z^͵q2ë+Gʆ&ɵ[ç¢2ë×cs’½³ƒå³ZPeéúCM­¤R¾‘Iê‹”'…·»¾ïÒ½…w—)"EûLã_™D6Y ŒÍ虡ìó«CÌÇ]½6)fò‰¬ý¯×Qp(B1=~r¶ÍÐÁW‡¾é¯E¼ãöêåsÖLùã{KÛÔÆ7ü&s`ÄíÀ­ó¼dÉkêwvñXE«ø(¬ÃŠy'ƒüßQµmBĎФbá.¯2ðZÚÞbžf—~OP7ßc·ÒæÌš6 k‹bßkÄù{áx¤*'ÊûÅ‘´¯Fx†ÍÍ)áj›Ù/þ玻 ‹S’ñ&.®¸Â‚â²?~¬TÌà{‹>¾Œ®ÝzÞÄ ÆÐ4N¡òÖ³1{ÈÃÃCð(vˆH”ª³ Џ³U'0bþ˜ª“yµ\÷R)³ð³Q™ð”ñ§ï-Uk?.3Z×mxóéO šÞŠ ð™ár„¨¢¬aéåï}ZdLÉŠIPÀ~ÅþÜÁ~£¡§­,W'ñZ„çºlÓ)Âò2MÔ² ¬ø•:ÐjÁápÝ]BW-c³…7óÁ,¡.=Å%ïyôÕ÷*ž:.x;ö'gáë”…¢Ü‚lüV#­mQaA•W»ÓÉÌ/ud!ÄÐë«Ò“: JÊ )ùŠdábã ÐvÔ²øQ˪¼¾Ùk X ŒsÝ*HSrìâÚYÖ°¢‰×'^uʯ³ âò¬K¯uÙ^ëÊ¢# "¤ž¬²+:d—ØøâRŽP JS˜Ýþï­ð* 3*>¶ ®¡…4‘¦?tÙ—$¨””ÊK‘DP2j,ØÍºýýôS¥[°«Ô÷¤„Hk³ý\lUŒ%£ùu%¦Hw ·Zx¦—[w<ìnGMôû“òórE†‹Í‘÷?WÊLOÀšeU5w‚_Û ‹Uã %eá­ Â×u€ÿ?ÄìªM^nŽh ˜P‘:Óß0†€&CðV0}ø AEíjVÖ½ù†´¦5©VCÐrðVÉÀ.ie€1-/))Á~e­H«ƒËåM¾}_ZÀ€–‡Ç«¨¨äæähhhÈZ—VG^n®šš:'3Œ!h HDR{;»GcºvÇì!®oûþ?EÑœœœø¸Ç:t$S…_¢Ñ2€1-‘DÔÕÓ·µ¥¿xþ´¨°ˆÃáÈZ£V@PQUµµµUWWWPhÊw~JCÐàp8fna¡¯oÀf³àñ®*ð8‰B••%„€1- ™LÁþd­P0†ø­c€ß0†ø­c€ß0†€æe¡•þ»µ±WF˜6 -‡™0Êëdì;&N3?û£¸hÛ]Ÿëæ$K!wƒi!¡^•ÖÚ6¦ÕZ?–šê>Ͼ-5Rldœú"en˜äùÞ£Nļc ˜äO'–{/ÛŸ”YÌÿæƒv瓟n¹#­ c@«Œ! ± ìBeuc‘‡v$¦7Fròùé'_·}øö‚&Ü9õÅv¨j®Ô’96AmCÛƄܹ>Ö\¶*5žÖ_hØ|ý“|ü¥ÙÃ7çË%sGÍùÛq×ÿúšáäÉ‚>3¿UDûµ:6´$` GTŒá»Ÿ Nò¼vr4ßk¨NMh„äܸ,yYm´Õ­cý躩 gÙ~-m›:ƒK¥´êï=5 ?KY(AÉFZµ¶·µŠ2ïM¾òäêäÐU@` o×¾=ßU L&u«¼|¸Ì¬Ð)³w_ŽCUÚÌ ÿ7hoñå–í[9gÛ±k)ù,“ö=o‰ôvPLuº³ÙäÄ<£¤Œè9Ÿùp¹—™±n®ß¾‹òX‡Þ#6þ³¾£Š¤wuˆŒŸ“ð§Íà̬äh,Búý1Vƒ¯Îzöm¹ ¦…¶ß«äyz ‚« ­ô–DÙ]Þt.î=ƒlP¥?›þ%hÒô£ÿ½$j´ýsÍÁÓ„VU¤ÉHB%°Ë¾.ðšxôî;šŽØƒx™& õ?ô6%—¤¬áÐc̵£+µ®mÃS‹‘™”f"dyûœô{âä‹”S«öD´ÚûÁs]yõé;BÓp2ewÄBu"þÓ¡?œWjg&íç'D¹¥ŽºÆ.×Þmí Yg+‹T¦vAÄ5=Ö:/ÿÚn½åò³Omß¹íg"2;#eÉä©o>ÇkVØ!‘½E\‘E®­¡Èh ëÏB…º3ÛZr—”\Åhì÷bJ¦à”4[š&l¤­tãýQ« «ÎRS}ê‹äE "û•4@æ€14;¯Â|{,Ü~;Äôåé iSúû¦½Ó'®ôY“à¸çÄ-kmò“è“<ú8|{nE«î#Ÿ|1šç4æÉʤ؊»Ùƒc]w¼·;t)ÖR®pgÀ¸Á=é) »$|ãXd|‹¹ÌÂîñ?™]Èïw¼Q4WŒ9ò YáPúc_.ª2][¾¶œ—KƒgD_Þè ûþââî“+ôßãùÇÉü¾gîï7 üØ4Ý«ÍJ%MF*áÕÊ =V}±£Í‹³kÆú:·ùøy Ü{Wÿ-‹^:ÞÕœ]ÿà…PŽî·>.ª¹v#R~n‚d9ZU¤1gý>û6º¥?Þ®Ÿ1å¿\â6v3±Š=ÇíDöߣ5iXÂüw+¿!:wí4$«äymejDBÓ¿\4éÌH'ãâ"ÖÕ‘ÙíÝÿpJ·“÷öãÓWOV»±0ÄÅYäÚŠŒ&(¿^ýY°P‚BD&’Ì¡'«jÛŸþöÃ]•73ôHdëòsÕ±ël2qˆlJ }àó±þ]æeäe¾ªS2´` ÍŽFûmK}xû7ÍoÐúQ¢•;ùHâÞÏwû©ñÆë¡þ;§í0~˜y¶Ÿ¾8!¬Òw n¥/Œ{àÚVó®>qhaÿÍiõE¿¾]||ë!êÔoòuÕÞû$;àÀЭþ×1%íúýYòßM4¼ÓÓAsX^gˆÂôÒH~¹á݆nz˜Mc¸öß…ûÚú ¥"ÒêȈCÿ&¡TÚlX>¦'æÐù÷ÂÈKkÖ¾vúÈÄц»uÖîLZšF–ö’«]œü#íßJ#§v«-3R´ žoÇ?¬§»éˆ§•Çdc7²B§&JÛ"?Ž^æ€y°ì’Žóz¥º XÑL%u+#¹éõúDŽsâmY“#§‰ÌîD·ÂEw3–½Üâl¢„ Æ›NÍ:nT; qqD¹¶’RF«o¡•HR&iµ;vNÌjõD5¥„>@Õ´uê¢Ó0Í ÉchvôUn2Å‘-iÄ»,÷t)‡;Ö´ÆPØñM!"~Ì¥ç]`£èÌ6Û?ÉŠNÝ”È1o Ä] $ÄŸØY3àïD–]ÖõR}]‚Ögô)æ,ŠÛ›d<ÒU¤(MíJ'ΘBÀô§ç]äâˆt+¦‘ätÆÈf×N(9#É•`èÕ¡*нîžûä6{Oìêdáè6ЭgÏ~^£<4H’v“ˆ“/×w´4rj·æÌz|ÄÉöØ×_~Òy3Š.?ʘe·.Ü€,;ŠrŠ‚d¾Ý½ÎVTfÝÊHnzÝF’ËKo{ƒfU$W4˜BÅ×ÎB\qEBÊhõ-”ôI@íŽÝ€³ ‘M)A ÛÆ«n Sš0†€f/°…‡ \AQÞ•51;O‡\߯8 >)ã[ûÙfN:Tð§h4‡F3¥ÆˆÌ(>•Tè6ÖD´ˆšÓE\©?­(9£zWŽqëíÄ»WnÞ‰Þ4cU¨ãË„3Úâí! ò¥‘S»Õ¸¬¬¾CB<=ÕGWUþgJ¨‘ãa~ƒþk¸SzÊ*û#}YÎt¹µª´¬G¡D7=J\ÞâÔóXVïBÆ‘IøÚýGB‘‘2Z %}’P»cKÙ'q53­øðº¨¦”kø™- C€  ©{Òðë×Ägmw–vžœ¦>„ˆ[¿ëkao€Y÷¨ˆl£Ò€øjv3è9#®l60ó‡yÇ:ë,ܳ-‘¿h(íKe¨jƒñhøÁŒ’©¼e2¤4ó_ìö·v4ÉI®„ï§^ “ÛòÝ7ïdhõµâ¹pD‡>C°¿Kê´HûfRãIiì޲ÑÊ/¿.9"¡ç_O¡³û T(¿ˆfÇ=®ÎWÎf‰…Jäö÷ò/®ë¹n“+·$¤meQÊÔ,ˆTM/.;ªÚ¬±Îç– W§•—âjq­=CââH*²€†¢‰£¾ý¹aIê‹”MfH!¤f”!å]’Uú&‡UYŸµšrµv½Ït ` 2€H³ˆò±š8Ú«ÃÞ nöÆôÜäÛŽjÌ÷Ô ‰Ob³ÉUoɧ£+-h;æúÒŒFÏ¿@ !>E¹—“"1ðRJà:CÌk1ÓþÃòÚS¤¿y%ÉÙ®é®:r‘íþ ÞêihØå¿Ö=ºäŒ$WBÁçÀU'ô§õ6º!•ܾ$c÷†³JÃݺ멒c–p ½•…_Wck(wðü´ª4YMM´üþ¬ÃuÊ EÉY™ˆß›º´—aiÚ£™ ØÕ³êèˆ]ÖÌ\\–5öAçÊ&¨»•ŪfA¤jzñÙµ[ç¢2ë×cs’½³ƒ8á¦"ɉŽ#¡È‚*K¬‘Ô·?7,I}‘òÄôv×÷]º·ðî2E¤hß‚iü«ˆÈ¦” 0õæÂiÛr®^<Єú@ƒc ƒ"îlÕ Œ˜?fAF‘¼¦~gÕruôÆ Çn¥Ï™5m@·<ž׈ ÷Â%¬%HŽïg£2á)ãOÞ¼Žªµ—­ë6¼^úO?sùˤéÃí‰ê–3ÃN‘§:ɉX|©## •`¿bî‰`¿wTm›±žZ´²\ÄkžërJ¸:fö‹ÿ¹ãQþ¸ =ÿ^m൴½åb<Í.'ýžHùø²ºåˆ„@5½à3ÃåQEYÃÒ?Ê'ÞûtÕQݾa„âN¹TÛ ó깊:[O­ŒPA¤lzqÙM=u%iÒ´v‘j**®3"5¯ªVd EÒPB͈£¾ý¹aIê‹4'f· Ç™`mrPUCoLP”úiD|SŠHÏ~ŸÑÔê@chJz}õ½fÈÆi‚Þ‹)™.ÆÐë *Ýd…NE…‚G…ˆÓŸHk³ñøËÝôükë9h?Q/=’œ‘¸J¨ÈtœëV@šúc‡ÔÎBP[E¯O¼ê/'ZŽþ×ný³RÆPÊ ¼%e`“²y¢Kƒ’ %&Ù,)%¥ %…Í “Iʪl¹r³ˆÂ¡£Ãí’C¿Ïg:ÝΟßsÎsëû*YuKaî¸0—ü>|=ŸW×6]–Jé}õ•³•ZHÖ§LÍ™õ¸§¦YØmþåÝ£äŒÙçw•±¯2nØ<´_úä!ð«ÄTâölý𪣻­ñ®x¶41ÞÐ6Ó^Wóõeü=b*ñp³898vQ|¨©ïìéÛ[Ê{"*$†  ­ÓG§ÓyOÀC@hbM ¡‰! 41Ä·ìloå=À¿ÔÛ_È{^ˆ!¾kxd4ïþ™õµ¼GàBC@hbM ¡‰! 41„&†€ÐÄšBC@hbM ¡‰! 41„&†€ÐÄšBC@hbM ¡‰! ´GA‹ØÑGQÁ’IEND®B`‚PK¯9Aœ)JåÃÊÃÊ-Pictures/10000000000002D300000265C6DA0734.png‰PNG  IHDRÓe—ébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 4ÆàÿÐ IDATxÚì½{|×™ÿÿÌ„4$- )$`aŠ78 ¡iĈT“â‹TVqI°^-ñ~ëU›&­×—_íMÙU¤öÛf[)¢$kwm«Úlš®–îºlW&¡ê¬ã+-Nõ Ê…PE;`Œ—¹3¿?Ž4I#Y’¯’Ÿ÷‹¯ñÑ™sŽÎÍ|æyžs‚ ‚ ÈLA@B)Ë—a_ Èôñ%åZÉô?ùaç 2O86482<¸ î\ÏÜË` ÈtðýǾvóÍ7Ÿ;wNòÓgžÿ-v‚ ó†ß…•‡€eÛw¦£žáã°úö|ìrd¾aÞñÜÍ7ßœŠ:Á¾B$ç¹úÞð¾n7=ÝÕ ì@æ31’"‚ ’ÛL¯ò ²Aæ-1ΔsçΡ{ATÓ(;~úôÿ%Ç>úè£>ŠBAHØö‚ ¨<¦Ev¼ð äÏ<ùO/¼ðÂOŸþ¿(>-‚ÌgLS¹«oÏÿÁ“ÿô裊ðä?% øðX”µ»é(1Äq[Úüfu†­ˆ*pK‹Ï¬öX”}%™ˆ “B˜ä‚!¥‚ òæ×/Ø»ÿ"lܰè_YŸ®øP+KK¿òexíÍý0qœ©Úì÷›ÃŠ!]}è}‹Ï¬‹K±¿/92‹kÊAæ3t*²öî¿øë—dPQ÷|~Ã_N~œy3GÛ J%Ã0ÏxÃ0 Ã(•–?…m»k•Âçñª¦D«T” Ã(•†öQ!Åâm7(•Ê$å ÈäÀ8APy$„ÈŽç¸ñùnþLáãŸÍ»^øó³y×gä1ÚnîÜ´Çï{ñ‰AÑ çŽ5->ŸÏçóûÍ_µÙß¶%¹_fôè ¾äK"%böû}>Ÿß_=lŽhpÕšÁâ÷û÷¬v ø@¦ Œó@d>“^œÇ˯‡bR¾ò…„Ë®÷¾üâj!Üóù ½/ÿaõíÿ'ýF>xp÷Ã̳·å8@>¨Ím} Ãl »R’àªgv·ö‰=N5€G¬g ›w¢iŽÛR osVæ@þª50Œƒ™r0ÎA$™òظaÑÞýûÉ^áÏ$:#Þà‘(=£UÅô±Cmöù í¥áè¢R=QÐæÎM{üÎ|EÙ‡ã™0ÎA$™·å_Y¿qÃ"Av¤a:|x´÷å?H~ÔûòÒ÷¹¨Kô®> çG~¥³mÍg¦n‘5«paUdÆÁ8APy@rñs¢ì¸||ååã+ÿ÷ùaøßç‡É?’˜øP›Û –„’ð‹p|(ÃÔC1i,©gäß¿i°ža”Ê>лj•–?áX@f Œó@d>3ÅëyIqùøJ8ÿþ%’(„9t+|e"¥áWÇ¥ ·’ i©”Nɯtú*É¡ÙløÒxæød À8A©_I¬÷å?¬Ô†åïºäù2n#‡Ì72‹óàyos™Ñ å¶žEŧ?Ý}ß+š'YZÚ„Éqº 3Øzð5—còp…Õ;[*d¢JÅU§˜y†á½MZ+þjªÙn‚ b¦~õtbðHÎðÛïb×#ó“ìŠó ƒŽªfßtdž&B®:AvM³Æ²f/ÏãÀC¹ÃÄ6¯}uMêSZRáƒkÞÄ~Gæ3S>Ã…¢T½½ä?dÃDÈÓYl$¹ê Ž ¸¼ Œ¤Ù ­Ì3Ï{wÙ@Ó:kW£ŠŠ|Ùr2·^i¦¼Ä¿~l5,¾ñºÅ7^÷Á5oÆÿ€Ç¿·»™‡ÖެˆóÈ«0è8.ƒÌ<ïm*---mòò<rÕEŽ…4F£%†\u¥¦´É+èm*Õh4%µ¿|¡®T£Ñ4yÇíá2ë\!)cÇ銱&k”91\{¤®øÖ–”ü¤)…JS,­´´ G>‚L£ò ¡ýØêO­<þ©•ÇO}t(þ‘äÌ[kGV4•çCõF–¦A!_‘i摎z­ÁŒ„ƒð!W½(:„¦YcY½+ÄS”¬¢egu!G³&ò°¹êL,ÍVÿºõÑMÅ pŒûqNzúƒ4]nˆ)¡(UQyB rÕWÙ…ÆÐ¬I,tÄ­¥¨ÏÜ‘ RE±šTšzi8ì$†©0%’‚¬U*½xj=5’í82Ã%½·š5iÙøTলyѵÐWXcJ4š(3yèÓ4ëpDyd¼»ìAšætÖÞF±j˜Ø }—Oߨ¢(Y…©¦¿Êî6ÖËmÅýöŠpiÝèŽøqx>äép\¹`ØÃ4쬪rà +¬v¶ê÷ ß.{¦IJ8 Õ=àm`h-rýÞŒWêÝepPn¨ÈË 4ö26É02|ªçw¯þÚÁþ‡ý÷ñÿvÿºÿà#xÁ´|Ì\aõΞ½ŒÊ83WX½3òèåyï€8®°fkX20[k 9ÜÄ>AÉô-¶rš:LŽ M—ÛÂ¥ –Œ°·Ë¤5[%Ÿè%Ó·övww[u†°ƒ$\».,˜"Ç œ”n-%Ó¢*`iÊ‹¢¿Kª¥!2½6Ìèzéÿ½{â½$.¾ÿÑk¯_{5¸|ÅíC_Ä+‡d#“YÏ#þ:+:¥j#×ôä™9Ng“˜d[ Ï‹æÉ bÝ j´êÜ&–ætV"Ö(EåÀ²î_£Jåpsœ¢X—¼mªÆÞîÆpÜ«ÝÚñÅYk¤¡iàÆßÚ˜Jè3KZ¥!2甼<ÐNîQÜÿék}äÀ°µ/’ÕÖŽù½ŒØÐÈIPÈÉ‘¡èÏxo“‰¥€fMME]ãâƒ)Òqn·{ÀÛn€rCŠ–˜<â© Œœ€•Àq…5;c 3 §Ü†+uº¶Âˆ8ÐÅøwÒ+ AAµÏ‘vhúâÓ?}ö–E«oXø™à;¯½ØóïÓ7,úúCß|ú§Ï¢ÁÉjæí¾-§Iо+¶IB%Æ]!W½ÑÍq…ÕÖêBŽsë]!^8wk‚¦Y“ÖÄÒ´tˆGx^Ipœìp’¸×ü¸ÚSo°Ã`bé(ÿ•~i‚ÌE›‡|õ2(üÜ=ñݾ¦îQ­#y¤ðX”µ»cVTä¶´úKú•}%~ó”®…î±H–é±0õ»…ªÛ¦¸R-Y³µ¦Ðm²&MØGA a<ê°Úƒ4­¨6éU2uM?ñ’¨#>‹°wÿÅßþn0­}nàÓ7|F–¿ >ù8ü†±üÖðÜWûƒûö€âNŃúD' ;¹ÄÈOÿÌt¤Ç¢¬…6¿Õ’„y¾o %Ó·ôÈ…e×Ç'’ð¡Žú*GætV2%¯ÂTÝ_å:ªê!¼"{žºXaA˜×*i¥hèÙ)¯¯ri±‚Fŵ§¨•ª ÝŽ q%™”† ùù€Vÿ8s/–m߉Ïñòë¡ fÆÙ!ü™¢øhøîÿÍÏ_¯ûì¡è6 Y†yÇsäg%L£±vI.¸Ü„õ3 ˆ­@$[ؾ}ûöíÛ§K­Ùñü7>ÿß)òáGH¦Ùñ þõ(îTþH­ŸÏ®Ø*ŽÔ—¨“Öî7«E…øÛ VhK‚fw‚ÅçóùÛÖ숴ÉæmœÇ¤dGÄ“zl)‚ s–™‹óxùõPLJ"SʧoøÌáÁpÌûª•%þH0rHY;¡o#&ƒüUk`861¬î~˜y€ã¶È[1v¢iŽÛRž>—¾Ä _Y­ßÑ—ví *Ô%úÚ>YØ;£¯&ç©Kôµ}áV!9ÎpI[vD(‰bKAå7,Ú»ÿâc?Ù+ü™–ˆ„” ÞIÒ냰›%LØ âÌ÷X”©ˆŒ•«×¹D:"A*2ï™çq™AÓcG H®0]Þ–o|eýÆ ‹Ù‘V„©¤·eßÀÞ¯ÿŸ‡§§±ê½«/Öõ±fU~¼¶ ²¢6ÎÛ’_Y­wÕ&rŠˆ*òô¹Æý3ƒGG`´Ý .ÙöüDåDrÁÚý€ È|f½-ßøÊú½û÷’ƒ´NLâm™&Ôæ¶>¥’üÌ¿Óàà Ãq[ôzW­ÚüæJË6Ãf%CÓkŸØ¦÷ÚŒáo³03Ï[J&®H9,J¥ÖmÛÓ¦ß,˜Xô›ÀÌ0‡D9‘\ ã}[APyL#1Þ–}{ï/Ú˜ªŠˆzN‹ÿŽcò€hR®`Äpú*É¡ÙlŽ$ùÃIP)]³ÏgNÚ‰ŠbEùW·ÉAË:\™ŸÌ­ãÈA¢¹-â<’³ZPv 2o™+6‘áS{;Ã닽-Áà±·Ó·q“x%Óœ!ÞX‚ähí@™^åAóH";òóW?%ç¶ü÷¾xë’ü½¾¿­y¯’¥dçÑÙÙ‰ý† HpäȘ;6›˜½¾[—äÀé÷FF9\Ž?äÓ›pB?’Ýd`ù¨¬ÄA²ž`0èr¹æŠò¯^F$… ? ”yàjAr–ɬç1ëÓap>0‚ “dߟÀÜ«Vð¤d¶_ ‚Ìe²=ÎCrk'Aùñ‡¡}ÝnÜeAfÜ·Ay΂û>^}óý üUáj8ýîiÉcXyÛr¼öÈl3\™ÏäšÍcý½Ÿ€Ï|æ†$Ç(;Ù×ó@É›‡ó¹ÿ¾ÊqZ]1 >úÎðHqÙý£#§ÄÇ×/ºÕþësÿóû³¯u¡ò@f‡ÉX;xÞÛ\f[O£Š¥ õ4¨¨™Ü8>~CDEÙWì/éWÖ^f8nKk‚ô6¿Y ‹è£-ÑÛ6FJNžaj¿W¸®HóAå‘Ãw¾þ‚ã7‹ÝpñâG·¯zgx䯛>ýñÇ—ÄÇ/üבÛþJ‘ÚÍ4áôêÕ/ÞGýéÿMt{¾EÎäÝ3õ{ëÚm{œ•ùÉò2õ»Ó¹ã½)1É}[ÜÆæ—)Ao;¾” Æ·‰m7l¶x$ÆÏ„¦„ÑvC-´ù}8|dúÉÁÓwu3ΞKí]çùAûïÞ?óç[Þ8óŸÿü–áÅ¿¿÷Å¿¿7Å;©ÏçóùZ¶p[Z|>ŸÏ÷Úk­­q‰~¿ùKá[døW­Å{÷LôÑô‰ ÉŠô‘6WoN²¹®ÇR ->Ÿ?“}¢ª‘(ËG†¿Xš5Öw„x>ÆÒTZª‰Ðäå…ÄÒÒ&¯·‰¤×¹B|ÈUWZZZZç ñ‘sC®ºRFSZÚäåùñ³¢«˜vòW­I5ƒÇ¢´xFÛ J¥2<Ò<¥’a¥0ðFÛ ãƒÐcQþk¿8e<=ò8>|PrKèÑvCtÉ¢Úï¹Çh1DÿˆFÛ †öãIÏRâ¯Aå‘_ãÅ¿¿÷ÌÛ·øÿxR¬0’p›l:çëªKô©|4ÚnP*†݇Â7PC{»eü–}óJpîh»ar³ûSض±»6Ù=NmÞ³©Ó¹mFsºp[n² ZÀÇU-nÞp'çQnµêè £ªÙ¥’)Ucoowww—³ºãÜÆfA7Ð4k("éA‡¡Ì ¦5 Ø­aùâk®²ÕÖj¸ÑÅÎ(£G%ýÒ\µf°øýD{,µƒÛöø|¾=ÛÃÂ>¿ÒÙäx´ÝmοÙPY­wõyÄ"Á1¸Í1û©Í{V;”±Z|´Ý<\í÷ù|þHiâÚ_{Íf®^³Ã)ú;w¬©®¤’žåG» ‚Ê#7d‡øÏË7±Â±îÚ‰×ûúM&»çû»ãŠqÕ3õ®é¹‡Ž¶;\áFÛÍ›öø}/>1èßî<–Zhóû|> t&m@ü¹çŽ5"ŒÚìoÛ2¡£$ÕšƒÃÇ% Œ9=lûñû«‡Í‰­$ã†"ñ¹Q Ãîd¬a˜gu!Íšˆa#–¬\½NßâœàGš_Y½FéôT–ôíXSíÏ€TÎBùLÖ{[îùþnò¯k´îüíÛ»FëN¾pkɲOU.èXú‹cßí©;Wð³®Ñº_û.{mó¬6Vm¶€9ì÷²ÃÀÊÕëÂ)K­È|=xt”˜„Äøs…7¶¶(·sÒÛ²¥6b¤NX ÀšU±š!¾UIoÎi4,—™ªõ<(JÕ°³F 'FP ÏK[Ĩ‹4Í:;N†m'³a:‰ŸU‰ÞE"o&q^VWVš£b-Ô†mƒ}ž8OK¼"_¶g öM¤s‚Ì[(Ðêgîe ÁvP³µs[Zõ¾ø÷÷¯üTU|›·ÿXႬöܵ´R{¶½kXý–8]ÈŸ8ÚcŽ€kcäæÏ‘Ÿ•8°CçA„HrHgggeeå\Ø«6vŒÃß‚Ì?þñŸzê©Ü™Û’'?%¥£ðºþv¸d,ŠIÏÙ å™6Ý!að@dFÉú5L¿É¡Ýï‡v¿9ÞGcÓ³Gv¨Í~¼9æ ‚µ÷mÁ_‚ òÈVÒÛ‚ÖdÉö]jÑZƒ ÈdØ÷§¹ <ˆ’ –‡ÿùÕDÙ&Ì€ 3Ãä×ó˜Ý–çB¨‚ ³Ä? íëvçÈŽqJ ÔÈ\³d£å#‚ s‡±±1ÈÉãdÎ2Uëy ‚d/¹¦<Þ¿ðáðÛï~3DQ”§7pøÐ±·¾s*ô^idŽØ 0NAT¹Ã‰wþ¾pùcîêUøOÜüÙ›®\ZpùCêhðÌ©Ð{EŒà%Gf-ý€ *¬gäð{ù«—Ä$~vùÂeòE« oY¾b)tüö÷xÉ‘Y-‚Ìgr$ÂôèáÓc\ øOÀû.? …NÓU÷äV!í){Å×ÄKŽÌ"¸žG|‡`' ÈüaáÂ…¹£<ÎùàúëÀûïpèààÙ3çÆ>¾Äóü?}ÿ_—,ýìÅKgà«n>ó™E7äå/+ÀcQÖî¦Ã éÜÒ]XºyÒk8{,L}xmŽÛÒ6½ËAO]³ç7Ù¾ž‚ ÈäÉoËÑç…ã.~øÁÅ.]ºÌñÇs<À… ?ªš¦n¸áúwŸHPŒ¾Åçóù|¾–-®ÚØäImžœìPÖB¸Á>Ÿ?í¢<ÜÈj–À8APyd=^Žo¸aá•+W®^½JQÔ54Ísü•O>yö©}õ!X°àš³§ÏO$ JÆ7_m7(• ÈžÒá=-E[PJ¦X<£í¥2f/YCûѸg|æ¨b ííq*a´ÝáÒKoýšbcjwÓ»k6 ¾)b;'ÑA¤-™Kv±×h4¦´´Îâ±?Aå1Ó|réªò¾rüñGcŸ|råÚ €‡«W9Š¢€¢®|rUÈüÐ#“—6ÚîpéKÂ;m›;7íñû^|bÐÞdÛcq¬Þã›<–Zhóû|>ˆl%®Z3Xü~’MÈcN—D‘Ì{V;"Ïl¥vpÛž§>nbœîHÚ˜pùj³¿mK”ƒFºµÑ…ÄõS\çÄ”ƒÄ3Éõ<ø«¾Ìè†rkWWwwwO ¬Ísm_{¢JK›æZÃAå11/¿Jô/&§ÿ•!rp铱ë^GÑ4EQ4M_û©k)Š:ÿÑiŽãàÊÕ«Ž®µ¹ê†a3X"ÏÍãÃ>û0Ã<üìÁƒÃÇ<}®5«ò£žõ}꽫/ò Ö·9+óãòäWVë%ªŽdÎ_µFtJ5I“>E’‰3^~‚$+$^ýÄtNL9È[;À·Ë¤ér[ƒŠ¢€¢dúÖFr Þ¦ˆ-¤É+¼Mä£:Wˆ¹êJK{I*y€çC®ºRF#H áD—«N0Àð¼·¹ÌÈÒ4M³Æ²°*"¥Eì4Mû¹ý(M•Ç\ä+_%ù'ι\~“p|*ô—Å‹À5 ®¹öS×^¼tö£+ç€ç¹ çß?{ú/×úÚ’8–5ûFc}sì%~åêu Á 27;g®“qœÏ{ÜÀqº"FâÓ«ÎÄÒ:kW—UG³¦:׸:§iÖ8PÔå¬.丠ÃPfÓÎìÖŽPäÙ?a_s•= ¨¶V+Àmlö‰ ïS—³Zû.E©zl:Žã8­§AEQ<ïm®²"všÞÞq©„ *låÊå«ywºgƒ"8üç‹—Î~pù½‹—Î’ÄÝHQôG½ábþªeI S›-`»â_ù“¦ˆŒ‰„‚ÇRëJS[H’_Y­— ƒM¥1’b!Éì!È´Z>¤DIÈÓ‹¦HÇq~ *8Ngk` O^@Ž[*òòä­“ç!¢ @ÎÈ `hD\¸¡"œîDf šfõaCQªÆÞ^” ‚Ê#‹¹aÑu.\¼|é2|r‰/ÞxÿªÏ­¼é¦Ï\·ðSK–Ü|×]w>´¹üÂù÷KÊï»tÇ]«&(.¿ÒYÒ§4´¨ÍmPk™,¥¤ƒ>!¿Ò²m°VÉ0Œcõ¶Ô\'¢6ûÛ€¸‡Òl ˆ2Jq¤XH|W 2mû¶œ D'ˆTÅ”Ý,hÖ¤5±4Vá¥jØYSÈqtÐaÐj›¼èaAùN.¬çñÙ¥7.—/>yì\Iù=ÿ‰ë¯_¹B–@á\8ÿþÑwFwþâW­Y&[y«ôcÔ¯–úKmöûͱ9SIQǪeø¸2&8³èX8ÅcQ®[mj²Ïg–ú"I#:V›ýþ­MVHLiâlñå ÒÖŽÌdE©ŠÊeÙ_ƒJóá ¹@,>òSÙðrp°%bhI¹å2}k¯ÞÛTjbi·±¹HT‚ hóÈVî¸ë¶ën þÇÙñâ‡EQEÓúÔ™¡ÃÇ._ºœÿ¹%E%÷dÉ Ïk 0l3‡˜ÌzÌÖšBŽsë…ÀOoS“—ç)J¦.VÐ4;àð °4­(V˦îé.”ïì8™¢L‰ÎË4Øt ¹ '¿ Ú»dñ‚×—ßóÇ΃¡ÑwÏž=wÝuŸºóîU_*¾;{¾M¼ÕAËP2}K¼¹Ìè0h ³v5RÈô­Ö‘R“IËp:k«^6µm—ï0h@¢G™Ä2¥ÂTÓ_ew´vN÷t÷}¯hždi8PÔ˜*d”Ç‚Ìg(ÐêgîeÀ²í;ñ9^~=3—d.s*ôÞðá¡ãgþrúâ¥Ë—Ýx½L~‹bÝçòo[†™yÌ;ž#?+²]‹°o‹ 5M®B:;;+++cNÌ p9W™WüøÇ?~ê©§䨷Z&[²L¶¯.27Á}[Ahì™IpßAæ9 ° d†ÉÀòÑÞÞŽý† H¶óÖ[oM—òø¹íWÉ3|Ïø-¼ÈZ>aÈ<$³8œŒ-Ed266Sçñ˦+-¿õÖ[È?xì±o ÿ é•–OhAœã<™çL}„)›7oÞ¼y3Ëþ¾¢¢BøŸ$ yd~2åû¶ ‚Ìkå‡ß>f0|:¢ƒá›‡ß>–à¼Ñvƒ¡}4r¨G'Âc‰ÝC$¼¨R™jéŽ é1mû¶ ‚d Äyüúå{÷_üíï7nXô¯¬O½Üϯ]ÿìÏÖ§Ù˜üUköÈ8>|ˆ>ûF++óáøðÁ5%“X>\ßâ3«GÛ ›-«p?wdVÁõ<Aè e9Þ»ÿâ¯_>b¡·ßq[f­v^÷ô¹¶lÙrpø8DmÕ.0ۃǢ´xFÛ J¥RiùSŒ…Biø¯ã¢”u«W’ƒÑvƒRÉ0L¤”¨B<ÑEÄîÅ*‘ AÒã<Aå‘";žÿáÆç¸Qø3¿}ìö;n{âêÉŸOüC½ø_²3W®^7xtF®[]":^I„@-´ù}>Ÿ¿ jÇý®Z3Xü~¿ßü%±<è+ñû³\õ £4ƒ%¼ïÚh»¹sÓ¿ïÅ'‚&RÈžÕŽˆªðX«÷ø}>ŸÜR"‘ A2³|`? 2?IoVí˯‡bR$·t¹ýŽÛ¿}ìÙŸµ?…ƒ‰ û[V Ã&ƒú~p˜÷®†M†üˆíñÔöyÌj5€>f+×£íXüf!Mßâ3«=¥Åã7«Ž<¸ûaæYŽÛB|;ã…ä¯ZÃDxô¹Ö”ÄnÚŸ AÒ ³õ<Aæ‹òظaÑÞýûÉ^áÏ·Ž#6Í›7ÍcçH*DÔ%úÚ> ¸Ö”˜‰ qJ €d¸:;×\QÑ b¥Å‡ȬY;Pv 2ŸIæmùÆWÖoܰH©G˜Ö_cóÿK~îÊÕëvïÞMü+âcQHTèGúj§Ó_Òë =:8®A"å$#Ål’ÓçÁóÞ¦ÒRF£ÑhJKë\!^H,-mòò|ò“ç™03χ\u±µgü-Rl ‚ ¹ió âcïþ½ä õBÛVª=¾vaKIú6È¿ÓÚ°éþü˜cP›Ûú”J†¦9nK›?©ÍBmöƒE©t|ÿ¥jW=³¶´ùÔå$4~¤˜ Af×òÁ‡\õUö”ÛºTÅó¡ŽúfoK3#ß…çCõUö€¢fg‹^6^»Š¢$µEs™Ñ å¶ÒÔ¨?)JÕØÛÛˆãAæ¹òÈŒÛ︭ ÁÏR’qÒ£Ò鯔8 ¿9Vb¨¥ÿT›ý~ˆ=%¾q!1Ç©dCT™Ž8ß.{¦Ë­á‡=EÉô­o8ð6•šX8µ·Q%þh¤£Þär\aD@x›ËŒ,¶‰ê¬]**Aý'FP Ïqí‚(qiŽÓÙzð‘2i`eðt÷}¯hžþ2!"×Ô 9D ä KÓ\a¡":&䪯²iH’êAYgºVËpn ‚ÌkÇ”š¼nà8]ÑD&Ž«ÎÄÒ:kW—UG³¦:×x´8M³ý`ê²êh:hßåb~èîîîrVrœÛØœÈBQª¢r iÖXVãgñ5WÙŠjkµÜÆfE©zl:Ž#²`½Aü§¤J7ÌY­€iøš,Më¬]=¦â(kJ•=åÖ®®îîîÞÞF”2¿lµÇ×¶Á¡Læ¶ H®Câ<2Ø®³³3&eÓ¦M) ”§?ÀqåE é8·»ßª¨È CE^8Ý=àm`ÆÛyò€@ÒÂU½V(5±A‡AkÈ"‰ 䌼 04♼4¿r¤aò€€{ÀÛÀ0prd8®P¾B¢m4Íëå;[*d‘öÇw‚ ³È‘#GRRd1´˜Lœ‚ÌËG—ÊÊʘrâM "‡…â9D Œ;/h¸ ¦jìíj ¾•ð³?/"LZhzÂêR&ʹ#6½4쬪²ƒƒÖ!¸‡bz AÙ% º\®)¶y,–s?·ýê{ÆouÝñh‰{öì‰ÉösÛ¯òo¿ ¯2ߘ|œGŒÚ Ζe| *U’óVÈÑö…|…dF…| ѰÚ ¨qFªŒîFQ²ŠÛH™Ñ+ä àQž”i³BÉô­½zËâ66õ4¨(*Û‚ ÓÇØØL¹·E¯¯p¹:~nûUòlù·ß¤×Wà5@ÐÚ1y˜­5…n;yÖ2‰eºXá²¾XšV«e‘C#'91ÀÒ4ÈeÅó㦅‘¤µó¼·¹~d+qpøXš†Bù QÎŽ­*½,Z œ•,þÏTô͸҂#gal:·ÑHW!2˜ú8±¤xùõPŠ‹M’øÅU‘ ™™KƒÄqœG’wý–ys™Ñ¤e ‘sD¦oµŽ”šLZ€ÓY[õQW¿ßZž„ÒÀ|ƒ­œ5±Æ²!…è`x6Фh0Ô—•…'•V aáC˜l"«0ÕôWÙ…ˆñŸ’åK(­›ÎmdMZ°Útî°=F<‡Ei<ÔA¹Zýã̽ X¶}gÊA·÷/|xöäÅ«—¹5w¯øSÏŸ—.¿á*ÇݼäÆe²%¨ÿÅ??öãt”içêÕ/ÜNù‡£9NkˆÎ¼þ{/U¬£D…ÿHò£©…?ØúƒŸw‘ö|3ò]w¬E•Çìsôðiáøƒ‹~pñ£K—.s<Çóyö©}õ!X°àš³§ÏO{ƒîR«’~Äó:m ž~Éþhù“¶yžçtôw¶Þ|nÏYžtþ×­¶gî¿ó¡Òüûã[ð–ÇûÀ߈͵~Kãçþ×ô½ûdÄ rò•çþøyÛï~jýö»/í9 ázm¿2~ù^xówà½7þ÷nXJQÉO!MÅq?‹8ìAæ-ÓîmI²ÒFÌzþW†ÈÁ¥OÆ®[xÝÕ«Eq4M_û©k¯^½zþ£ÓÇÓ4uåêUÇW‚"ÈxRÒooç<Þܪo?aV&ý顎ݾÍK#Õú㦵†ˆQ¤É4( )Šºõ¡¿{¨õ?´þ{/UÜJÀÝ㽬Ö­<ð΃ºÚ˜ê©uu?ý7õîo?3p÷3E·R¡ÓÃÁ«¯þPÜr7ô»,‚-ÿ¬r ß½.þöwEw’æ·¿ÄÀô³æ±ŸìMž¶µ¾‘BQy½…ä;êîÆN@Py¤MêkU-—ßtòX؇r*ô—Å‹}ôáÇ×,¸†¢¨‹—ÎF Ü…óž=sîúO_;mM×.É?JÝeñÞ»ïpÜí·.‹ü}ˆϺ‚§G{Gøú-ù)jý–_Âîo·Y»`d´o‚L-ýd/ŽÃ™ìmì•ÇôråòUˆ<ËïÙ øÍob­7.º‘¢è>{ÿÂÅüUËæZ?RÔúµüèÐ[µ…ëˆE]Al!§_úïWxâ—Þ¶´͵…EQy÷=¿xîpï÷—&r|œ}wõÊ"ž ZÚ˜Af‡‚äˆò¸aÑu.„®¹†þÔuŸúä_¼ñþwŽ=÷—sc—.æÓŸÎËË»çî/œ?÷~Iù=/üËž;îZ5»rá©Cßþª™¦9NûÍ_*‰ìø…ñŸ·=³”¢îûÎÊ_|ûûglÏÝJÁ]êåM°Ö¼<¦aî.ÇÝþ í¢KÖžzÓ/@‚ HŽ0½û¶¤ÅÛo;yì\Iù=ÿ ŽãxÒ<Š¢àÂù÷ß>~õÊÕUk–•ÜsnvíÛŸ~él~Í7×§˜ÿ·¿ܸaVdvÙ»ÿâó?܈6™a[ëçädß–9´zúwÝvÝ Ôÿ8û/^ü¢€¢(Š¢hšàOŸ:3tøØåK—ó?·$^vdá¹':%AAd2·vŒûRñݯí~kä³K/XpMqù=ì<}÷ìÙs×]÷©;ï^õ¥â¬  ¨¼¢<‹#AAå1'¸gC¡,éðá¡ãgž{v÷¯ýyÑׯY»R±îsù·-à † ‚ Y =Û´L¶DýåÏë¿Qúøß?\güº¡æ«šò/¢ìHÏŸ:`üŸŸüw¤fúòü[/?)ñi¢t!4›¿›Úðó6•–––6y'1Ò-„ä×h4¦´´Îâgðç6ÞÔI~wFƒÃ Aåd'ƒ/ï;AÓô+ƒ¸02âcòï{{U),°Ë‡\õeF7”[»ºº»»{zL`mÎàÙ?%ši’ ø@æ' rãk¤¾dY6’d±Qž?åï=qÿß~ííßu¨·÷Þ5¥‹Ãkª¾Õeúy€¦¹Q‹Ÿ$JGDâ£Áò¯™ëm*5±4p:ko£JxÞ7—Yšæ @Êm= øšËŒn(·õ4ñ1~.§ ¾]ö M—[É%Ó·6&©”Ôè†òšš!‡#Èq…5;[*ò|¤4°Æ2ˆjƒ ŒF •J~…Ä?ÆPG}•#H mª—/>º»»q¤!hó@²Éàñ‡å_U®YwÇJ€ãÞ¡÷ÂÉGwÿ<@ÓŠ¿u4~=êv™(A¦ÖòrÕ™XZgíê²êhÖTç Ï{÷5YšÖY»zLÅIÎ5ºÕήîîîCÏ{ÜÀqº"&J€¦Ù~0u9«°ïòQ”ª¡Ç¦ã¸eCÓ¬q ˆTš¤4I|ÍUö€¢ÚZ­·±Ù'®Z(-‚Ê#»!/?°–¢–|~5M}ûíÓ$ý/ïÇ­Zº`Éò¥¢ü’é2Õ#3äé„õS¤ã¸@¿'Äó<Ž+”¯È“$> @ž75•’O9Ng¨È WêHäaá8­™°4©Ú½n(3òWMÊD„°» « ûN…¦ê}‘„So<ß­7Á™³Ç`Åg—Äœ(A’‘·åÄH :!0r /œž\UÄ;ÙJg®4šfMZh:­ªÑÛ‚ ò@²Éàq£cýR*üç/~ð‡ãÞ¡÷J•(,Ù”°B®?¹òŸ+‚¢TEåÀ²ì€¯A¥šÂJ'ÿVÈÀ¢|7©„®¢ì@æ!èmÉbƒÇ–•È;\(ê®5* ³]H`G$t:‚L©ìŠ’©‹4Íø|,M+ŠÕ2Š"º¤“€Dç œ”.œÙZSÈqnc½0™ÖÛÔäåùD•N -T”niB~gÇÉÔ; e‚ÊÉ2ƒÇ—X+N¼éÕ-wê̓çy~Õ[oá¸ÀT®ýž‚ã„<‰Òd2²ƒ¦Y“VY`£ÉËó2}«UDZ&­ÖÄr:k«><ûŒi°é8Ž5iŠlº#P¦oµ•­PZÔ3^¦o鱕C8ƒF£( ›UšH+T˜jp´’skÓ*MÈt$›²AÆ}0gvŒCñØOöâŽqȬ3µ;Æñ!W}•=Pn›p¶êüwŒCr²cÆy 2sëy§¨Ù‰“>dþÊA™ƒ,WÚˆ óŒó@Adæ@›Gvð¯¬ÇN@f—½û÷b'Ì$Ø HŽqäÈTÙÄTEö!’TVVb' 9F0t¹\¨<AðeAf‚±±1À8AAfT‚ ‚ ò@A$Á8l…¬Èä†rñU3V¯xÇ µ«QEáÉ14MêË{G­ÆÖìlÑË2¼·Ikb€ãtOwß÷ŠæÉÔGxüÈÌ 9ÛÃ’K Í‘¾‰7•–&Ù{‚ãtÖ®®.gu!ǹÍÞT6åœÒ 3óhLéb…\õeF7”[»ºº»»{zL`ÍdHð¼·Ùè&C«··q½¡±····1-Å@NïîîîîîN÷Ü™º)ö0‚ ò@æ®Pp¹ê4Mii°'rÕ•–Š·òž¹êJ£S"·KoSI‰ñÉ2#KÓ4ÍË’>Bòä¢h"4ycË$%©WÜráåuâ s@|øvÙƒ4]n (J¦oä{›"ïɛd¸Š/ºI«--mÚÏí?Â…1VZWW—©*M>òI;ë\!ò«‰úMÛÐEñ ò@²ùZÒl?˜ºœÕ ØwùÂ/‘Uö@äeTxô5WÙŠjkµÜÆfŸ¸ã@Q_Ÿí雎ã8N7Ú7ÀÒ4”‘×Óîîîx+)“T¤^qË)JÕbÙ<ïpÇ銤6` ¹êL,­³vuYu4kªs…R¹èÄæsÝ}ÍF–¦uÖ®SqÆß%ùÈ'£7è0”YÁ´³F»µ#ÄóÉOœüÐEñ ò@²ŽÓ*òÂv÷@Ô³¿>|rF^C#ÂG§³¥¶ƒy1ÕšX®°:jÓ¯ˆDÜ*Rfòz%[Žd¹).äé„E S¤ã¸@¿'³‹Îó¡‘!à¸Bù ‰1?2%÷©ŸxäçÉ ÈqKE©%0r‡.‚L5ašËP”ªagÍP•=t´q((M³&- 4Mî­y髜˜W:²éy¦¦Kþ`ȼ^dæ™D䉑@tBæU ÏKodÆ+ŒGàô ]Œ3EPy ¹%>dúÖ^½·©ÔÄÒncsQO+ä àÜ Ó}»í°Ú ¨qFªŒné\S_/2벃¢TEåÀ²ì€¯A¥’¸â  ùŠÙü6Àiº(;yz[æLƒMÇqä¾OQ2u±‚¦YgÇÉä·Z€¡‘“SöJšZ½7™5k³µ¦ãÜÆz!ÓÛÔäåyáŠøÂ!AŠbµ,£¨¢oHQ$à#£BÒ31tQv ¨<\C˜ ÕšÜ ¨1Uû¾LßjÕqA‡AÒNnµ¦m*“(JÕ`+§iÖXæR@¢Àþ ë͸ÈlÉ dú–[9-™2P¶ +Κ´ZË鬭zÙ$Õ3kÒÙt\Bžç!9ÆR30tQv ó ´úÇ™{°lûöÈ䱟ì}þ‡qû(dvÙÖúÆ\‡$¢(PnëmTåvo層G’clß¾}ûöíç HµLª¢fgj“°™ƒ ò@$  (Ucooã|úÊxÝ‘ãÈ‘#¨<Aæ(•••Ø HŽ ].*A¹†v!¹ÇØØàÜAAfT‚ ‚ ò@A•‚ ‚ *AA²œÛ’ÝD-¯ÄÖìlÑË(’è†ò˜ídg½a3Y5ùú øf½+²F3áòÞâ«,†ãtOwß÷ŠæIìùIö0‚ ò@æ˜ì ËHC¹­«AEQ<ê¨oö¶Ìþ⎉–îh.H(|4&É ¬î%y¥6̳…¿P| HŠ ·%‹ñí²iºÜ¾×S”LßÚ(~BtÔk4šÒÒ:²‰¨°¡É;žXZÚärÕ‰3‹ó—ÖÕÕ•– Û_ñ|ÈUWšdë¬ä ó6…ÛPÚäWÓá}ZØNÈæõ6 UÇ—–TÊĶ\²LDühÌP} }áÈŪs…ø«®´4z¼ÍÇ«“q#*dÆí ¼wÀ §+J`â i¶L]Îjì»|Âjwww—³ºãÜÆñídã3„·#×Y»zLÅQ¢¹ÊPT[«à66ûÒjXÈUgbiµ«Ëª£YS+”¨Á¥jè±é8Žãtâ7išfE½½*ŠJRš´VKÐrq™8´¦éÑH:™Œ½ ÃPfÓÎìÖŽÏÏ竃âAåä§3TäAž¼ÜQï‹$1ifž ÇÊWDå' @ÎÈ `h$”ò›(χ<ý°(aŠtè÷§'kptSm Ì„¥%Òj’-ÊD¦u@Úr}9Ngk©È#×:0r¯‚Ì'0ÎcžYJB®ú*{¦¦Kž÷ÄH äyÒï¯&- 4M²Të'eŠŒœÈËðÛdRZLËópLLÄL"ÌÏ«“¨‡Ÿyþ·8üãOþC¨<²ŠR•˲¾•*U“C‡ÕEÓ0RetgXó ¹¸€.QÔgÒ†­+ÄrA!_‘y¤[šDË1®cÎÈŽyzu’ôðšrHŽ12܇Ê#«a¶Öºínc½<2gÕÛÔ I ÓãfŒ‘t” Ùˆ„¢dêb…#È:;¶ªô²´¦Šœ;àk``€¥iE±ZFQ‰0D[ œ•,¾…é•–JˑٲvÌÏ«“¼‡7Üv=B$Çè_|-`œGv›=dú–[9-™20P”lö)E©lå4ÍËœC æŒ$T6 6DZ&í@‘MÇûfdúV«Ž : ‰¦·$i9—5iµ&–ÓY[“>c(JVaªQ@ÀaÐJV”Vi©´™Ù1?¯ΧEæïà ´úÇ™{°lûöÈ䱟ì}þ‡gqËìðúå¶ÞF^Žy˶Ö7fwηÞÞQw7ö’clß¾}ûöíèmA ñ:¤Šš8¿A™4¨<„+T"‚ ÈTq‚ 9ˆô2²S=#^ Y¼ mV)•‚ 2eû唬ˇ\õeF7”[»ºº»»{zL`mÎàÙº•‚ 2·ß“(ñ.Eñ[Û‰²zçPRSAê[5‰Á]™ÉƒqÙÁc?Ù‹€ ó £[QYD{5@³Ödª“;…iä4ͬ½½*ð6…·[jXÑQ_HøÒI³ýàìrzê«ìö]>}£ D[5%:7¼+L°+“d cªkè±hc¢ Ä_$Ii’}jlÅýF»±¹H˜ˆ'.Aå¤Áó?܈€ ügŒï]Ù¥¨¼ˆ€"çv÷{BäsñfF1Û-%’ám’@^pxN¦xn"“CòÆU'ݪè]™¤KK$‰„}C#!ž‰é•’6¸Ž‚ÌcRÜ¥(ÙvK©U‘Ù¹€»2!©ƒq‚ sŸrEt¤ö<ʲ©M³¾énaº¥­+€ãt$îuJbiT‚ÌEÄ, M^~V É:4ÍDY†FN |™ºX~äûÆw)J¢ HÐFfª"ɹÌÖšBŽsë…¸ToS“—çSlaœ¶ÿŽÑI¯4!¿³ã$þ*Qy ’ûwÍ.gu!ǹ͙M"˜’BrI|ØÊÃ;‘y)îRD”AüvK©h«¦¨g<îÊ„LÜ·% ˜õ}[ìÛB¦G’ øÈñÓÝ÷½¢yÒ å6`ëi`àdG}•#HsœŽÌeÈ Ey›JM, œÎ*ÞEh<Ó%ªŽl?¤Ç³©(J21ªÀHEã¾ÔÉÉsÓ•’[ÇÍî¾-¸U2Mà¾-‚L)¾–¦AW¤¢à•Ø©žÒ3Ó*$Ñ4Ë«.fj|u<ïm®² ÜÖ5®$!µù«‰ÎÍÌò1Gö­Å­š™½-ÙÍ,.cŒL|u†nk}c[ëßo9z(±í—çÏÿF*îݦH:ÏŸÿMËÛýçæèõ¥iÖ¤ÕjM,WX-<®D3$£f<ÂÐHHª7&*„L³Ô1L‘ŽãýžÏ“ôè ¨ «£iÖXßS{Lb¢ŠbÚ“¤Àì…,uÚÝÝÝÝÝÝÛª—a&‚ʉ}2¥¹Œ1.W<“œñ½½íÕ…ÿPûùuw?S¿j-E%R 7/ox~Õ}Îx÷¤zUñÍsôI0>§ ñ㊦Y“ÖÄFf<¦_ˆô4K‰t©ê(JÕ°³¦ãè Ã Õ’VÉÄÄÅ>¤¥ÎÍ„9bð@TŽâ¸ß IDATÈÄ$ZÆXr¥äýÜþ˜åб§Qòco†7-»eܰ~WëÑÔ…_µ;ÄóD…ôûÞNnÏ-ð½wû‡ßýõáÅßX]ÖöÇ”ÌxL4Í2.=Au”LßÚÛkÕq D°J%¦:ŸS²@”‚Ê#‡ŸmÞ7„m©¼@Sª†›Žã2…CÒgìÔÙ…·.÷ÿâ­u«Öó7}«î¶µáÎ?ÿ:¬"æÄWmáÆ{²ì©¼{ÇELÖ1%3M³$é’P%«#Ó7bÄ„81Ýùœ’¢ì@$`„)‚Ì‹µYlÆH™¾Õ:Rjr4ÈXû† 1iYñ4K™¾Õ6Rj2h“¸êÈ”™pì$(jL2ŠŠ ¨Œ$&©(FúKž;…²cÿ±ñG‚ä'΂ÊA¦‰…Ë–Ž>koN㜈G†ž¿é[u·Ý —ö¾:¦Ó-{ýÕSg>7Í$&±1…DUcowãtŸ—’j‰ ŒÉœäÜ©âÝnü!!9ƱáATY YpeÙ_ƒ §ÜϹ«³ð®Ûa{ç©»IC.PÔâGê¿ðˆ(åŒïèë·¯j\½ðÖ#¯÷¾³ì‘ÕØµóˆï?ö5ì$ǸúÞð¾n7Æyd1‰—1V•ñ|G¯‚œl¹bdj¹…¹cǽc?k{S˜UKQ‹·>$Â4%ȹwíYH<2wjVÁïƒsvV-‚ Hê Í#›_¬eú–ys™ÑaÐ:@gíj¤("Jn»Ã -¬®Ñqvwø•ZVaªé¯²; Z;Æ™ÎÀZ½jG]lÊ3õäpñ#õáTŠ?ŽÊ|óòÆzHžA•2³Ï¶ÎfJ¦oíÕ‡ÿÐë%ÓAdÆAo ‚ ‚ ¨<AAå ‚ ‚ÊAAT‚ ‚ ¨<™*x>äª+Õh4¦´´NXZfªkÉÁm–5 Žd~‚³jÉ\vtÔWÙŠš-zÅó¡Žúfo ®“†ø˜Ì¦qÏ<ÿÛT²áZ¨Sö<*Af‹#(çP”LßÚÑ»©YàNÞžÍ å6˜L,V;[Ôžú*{íÎSS3äp9®¤K*G6Ÿn4B­’7Iññÿ=^•<ÿüÛN¦Óöüd@o ‚ BÖé§iÖXV/ö³»»œÕ…ç66 ^šfE$=è0”YÁ´³F»µ#$ÊÓ¦.«Ž¦ƒö]¾øz}ÍUö€¢ÚZ­·±y<)¼··1»Œ.“q»|zá‚äÿHÜd‰X‰Ü[º½’;åÌ¢.Ýž'MÕˆhòf½ë0ãq‚Ê#.üt{Ù‘ ¯ÎðÑm­oû¶$¾ˆç“ŸøÌÂk“ÿKx¦o—#HÓ4;à›ÒMS± iDãΊÖ̬ç9Ngíêêê²ê¢yv ‹TÞI’_ô¶dóƒ-䪯² ÜÖE ÎèeŸCœñ½½ýð⬽MØ«–çÏïj=¿®î¶µé\ øræªÆÞ®âþ`õò-2Š"ƒ3HÓ@ÓÀM}¥4Íš´,Ð4‘,yÙ’¤£Þ$êÛñE׈ôÿ‰—Ñæ‘ÝøvÙƒ4]n âe~9Þ¦ˆ-¤É#`]®:ÁF±Ž†í%¼·‰$c÷NîV2öÖaxpÓ²hÙqôuìUKìý¾·'2‡Ä–37¡(YE‹MÇqDð|¨Ãj€¢ÚiÕq“Ó ùŠØ¤rEøÝ±»»;ë|+S(;àñ+Éÿ%¼w*u± Ðï‰l^M¶¶ÖY»zLÅQÙ¤§R,Ï{›«ì(_/ÉD˜ÈÖ×g{ºÇ¦ã¸D*!äª3±´ÎÚÕeÕѬ©Î—Ц.gµÄ…—¨ ÓÛó„“#CP^”ä['¾Q™…ŸÙ´œ÷6Uz[õ²¸ï’ÜÑï!õÓ×Û!WÑ­¨vFõX|ßJ¾*<·ÀTYýló¸ãtERÖå‰':EÉÔÅ šc÷É‘!E±Z†V“É2vêìÂ[‹ŸÍ‹·Ö­ZÏßô­q›Çù×aÕ3õ«’š@bË™sÆXA§úXšŽ…¨ÈÓô9)°@3##–uvœÌöQ2IÙ^º’ü_"ËDÍVFøíÀó¡‘!à¸BùŠ(7Y¢ô‹ìÕwļÒÄ$NÒÆó!O |KdŠtè÷ˆK0Tä…Û/ráI6lšz>b«Ój Ž@¹M0ÉÄëÄ×B"3E©vÖ( à0hËœò :*G'À—ØÓˆÿ]'ê[É<7“~ÀGD.Š’~"'zžº¸ãÜ>81Åê<ìÃa±výuYý(JÕ`kY™F£ÑšX®°šØx)JÕ`+§iÖXæRÔô\ÚýÖ2­‰Mô¼‘é[­:.è0h4šì]äcò²._á’ÿ“´L8‚A‡A«Ñh Ž Dî‰ôbj:2A±ä¹XÈqtÐaÐjIX¥d¢èÙlb#~´t í‘´„$m˜®žÇyXã˜â¾u²>ï"J¦7Õ(`2ïÄü­%%§ØÃ™‚q9‰ô/0á}#O]¬°†FBüŠ‘¡ŒßS1 —-;}ÖÞœ–d$âå½é[u·Ý™Q93*>dúÖ^½Dºª±»»1&qCoo$IÕ(u¹ZZĦob §jì.>6Ã<á“+é9³Â¡ήp CxE–~ÏÉŠŠIüð“«—… ‰p›‹zTŸÈ?Z Ê“’Žª\!Wˆo}®:‰ÑÓ°iêyÌÖë`[Uz¤÷­%2‹¬tÀnu©%&¢§t­ö(jœ†‘*£;Åδydñë&™Ð(C¾B–訯ˆ˜¯!0r⤧¿ T§âê,¼ëvø}ç©3éÜ8)jñ#õ_ØQw÷Žº»‰&³ry¤<®rÉÿÅ[&ìáÉ$öŒˆo)$È þV#NO±ØñçmƒMÇq1÷"qbj~4rs9ÿó Ÿ>à »êR4H6lê{^ü®Waª.äv«+ÄK~ëÄ×Bº‹|ÍU#†žp¤EUfSf$­,Q½~RHu>*y³µ¦0XDR¼MM^žŸè(áDÏS+À=°k¤ ˆÁŽnaîØqïØÏÚÞfÃRÔâ­‰0L9¹­§gk’d–’–Í_ňz ª‹ #YrKaMÚ"›848Qz*Åžàö“™ÿZ­É ŠS…Œ¢„åĉ‚¢d¦pLC|r:kÒjM,§³¶êeIßò¥Û0=/ñ- å4$Ñ’ßšè¡ø>ɼŸ;áª+(êiTQ”LßB¼œéG®HzH}ÓÛ2}«­<@|j“qtR Õ?ÎÜË€eÛwð—<yì'{ŸÿáÆsçÎIþx⋌¨D³Ë E ;ƒ‹XG˳hñGd†ÙÖúF¢qˆLGo層;yžgžÿí¦ò‡“çét¿ˆkxO93ÙóáÕ"©ÙÎöíÛ·oߎq¹ðŽ(éÞŽs„ Ä:ÑNzúã³¼É :Ý/b'ädÏ‹ß*9EÍÎÜZ"•Ž- Òt9ºZ${@cF÷|’·JTH6‘h(S‰æ' ‚ ÈTƒ¦‚ ‚ ò@A•‚ ‚ ÈdÀ8A2'f^7DOížË…Ï:fJPG¬m‚L²s¬°ËeZë [(':k2…Ï}ñƒ™‡ ÍA)"O^ ÚÕ!~-;ˆ,‹$«pº§»ï{Eó$KÓ4°Æ2H¶]¤pž÷6•=é†r› ŒÆð)’uEµÓÙz8ÙQ_åˆYF/ºI$]2’-Ð7Þæd‡ä¹éZ>:;;qL!9Æ‘#GPy 2u%ùuE*Š ¹êL,­³v5@³Ödª“;[õ2ž÷6WÙPnë«zl@žÜÉ×Ï/^!››X{{U YI7º5;Ç7Ðò6UÙŠ[q¿Ñnl.êmTI6I21IE jO¢s“[>$ÅGee%Ž)$ǃ.— •G¶’Û.ð¹FÃGÿ½‘g×&xñüù]­ç×Åeàù±½¿9 › ‹oŽ<ϽÛÜ ßxdÙ-sl©YšfMZ¸Âê Ù9“ãÈÒtE:Îíî÷„"›¡Ò4k¬—ïlIu›Œ˜Â|a[B‘]:¥ê ¯Ë+ì€ÅóÞ7Èy@`h$Ä3Iš“˜üK 팾£$¸P=’{ŒÆyd;»À't®#“äŒïím¯.ü‡ÚÏ Ïòüùߤ³åÙ¨öõ¡KBÊÙ¡ópûâ[æÞ ÷dvww÷¶êeÙ÷RD`äÙ•jgM!ÇÑA‡A«mòòƒt]éã:ÆÄÒt’&%hg¢Šb®ZÚßãL‘ù*œ O^ ÒšÂ]¹ê"饥Mû¹ýÄ^B6$$âƒçC®ºÒIî@ˆ抷ÛÆ<~WëÑÔ²W-Q!ý¾·“o?»týò<Ï»‡Âhì­Ã µë¯Ë† ›k‹ˆlANÉô­½½VS.š¨®¸tX!WˆtLdG\É&I%&üR±â#Aåd'Ä^^´ÞÐØÛÛÝÝ-¶‚ŽgᆻÞÐÐcÓqœ8üÍ×\e(ª­Õ p›}Ø©“cìÔÙ…·.¿ /ÞZ·j}”Ûåüë°Š˜C›=¯+<ðxçÝß/Y¼6¶ô£(™ºXAÓì€/<8Åj±¹‚ì-†FNNe]$]\¬ÓÙ!QSt“$'üR©ˆ²A#L³^9ƺÀ£¬ èœIÏ’.pî[;½,NÅ€qç_-þÕ‘ ¬^üç#癿º-[¾›Lßj)5™´,§³’H̨í7AQc"£QVaªé¯²; ZûD3AR¯‹¤ÛFJM­C˜cBr: ‡0ÛÅߤíLXQÌOIò\”‚Ê#GˆŸ³7>¦#¯zª†5CUö`ÐaÐ:’¢†uLÄ.ÃþÍœ…Ë–Ž>koN㜈G†Ä3F¬#Ÿ[Ìüþü!  .^7÷VH²£¦ª±·»1¥Ì‰¶,”Ì/™_W¢ô¸”T«HñKåö£‚ʉt…:¬ö(jœ†‘*£;úÎN–"p›‹zÄæ ¹¸@&oœˆÔ#sá]·ÃöÎSw¥3…¢?Rÿ…GâKÕïþ¬í˜L]ø^A²ŒóÈ1Hø}0“PLçzr8’·0wì¸wìgmonk}ƒ„‘RÔâ­‰0M«¨¥‹eüu_(¸{Am9öª­j°•³&ÖX6¤Pde , Éëq.p4~Lör¬^µ£.6å™zr¸ø‘úÅ‚UC8–.çæåõ˱?Aå̲Èv™«»ã<ÞRs®'r–#‚ ÈTÞAAPy ‚ ‚ÊAA•‚ ‚ ¨<AA¢Á¹-‚L<ꨯ²Êgf>6Y¤Ü åÙ;ý[£Ñ$_@½³³Ç’c9r•‚ S„o—#HÓ4ûÿ³÷þÁœççÓ½Šªî¬íI–ZÐD¼†$[^ ™|Cε°›°ÌQ% ¬+ÙæÂ`n<ܱ®¼¥u ´”%²„±Ø[]ÅX&[¢Л¤Ý™„ D ”'«I± ´lçf¤l®X±ôöýñ6  »ñƒA>Ÿâà‹·ß~ûEÿøöó>ïó”*QçªK£¤ÜZ|<øàƒxZ!GŒjµšÍfQy ²YÐØÌÔ…Åb,%f6çÝjš´V!]Ž!ãB¥±¹´®²º’¦ÔˆÃ#¼qš)¿Ä²,H±YÐ2½ém49N(,{ôb%®¥ÓUBœáõµ Ý´c‡M|\¾|O-䈱··èç ÈH ©ÉPÀ=5í‹Û»M+ÅBJ¿ËåóùBaYÕ]…PI,¤d×¢°è1–¨h ³¬+yŸ}6þøVœ#ÄL%4²^b9!—8Vâ#Ù†¾…"ð¹Ì¢ äÔFŬc×Öògr¬@å1¾o™åÕ™™933«å‚t´F[ÐÆqÞ×oôê¥³É ZÞóÁ¿ò´u…övºëëKheë=ÚÃ~ áyw3ûOU•štXÚl´7ÞQ¨(å’“·cjuí+B¸xw~îleB8¯Àíå‘‹ÛúBØ“ –´³Ú°c‚8Û2Þt˜¦c³5Íž<4CÌ w¿‘óãÊwW¾wò‘ÏݪåªU”+É+ˆÜz‡åuTS”+ßÚã~ýƒÓ7hítÿdjæE¹²ñ-øTäƒw0Œ¢\yzÍjwÝ=Úà‘®V!äK7 äâv#°3žèz¸¶ªVÓ!_šrˆ1*ԤeA®ïØèM”¨Ã²‹>\¬ýLmÈ!…æŠcÙªfO6´ahŸ³ÙÈÜÜÜÌL$ÛP,ì´¤¼:£™UΓóz[ËjY¡²CbY–•b³ º•¢4²‘™}ZbÆÙ"µ÷ò÷àþ_¾¹]v\z‰y“檥VŠbå»Ã¾ÿÚÙä…§_U4›ÇËä²¶ ýgÃö»{¸ƒÇb&—Ïçóù|.—YtmÂ…±“…‚Àcê¹aT8áp!ܰÓ4ñ²5!³ùõbÔ1”‚Ê·—#DoO6ýÕéÌ·ÀiJÅ‚F6]ôÑR(,ŸfO/ ù|>—Yt"ÆpG»æàͦí {oüäºwŸl3KÌGNÝ­œx¨e„¸ò8õäÒ)kÜœ¼ç?¸°ZÙÓ_ùýWN~õs·Â·ZÂB¿‹;Ùºv×£‡C´‹aÇPv ÈÕg[Ž#êÌ7x9"Šb©u»Íßh·‹2€ßÑm¹¶9&dã­Ú¦íåZ½¡¸í8 ÓÉIßÝ?«´+O'_{‰Ž/}ío@Q¥ÃÉùÈ©ä¥â¤³9çrò¡¹o^kÓNc3S óѶóbjÚ™’åâöÎÇoùÆÜ%º~\a>`oN v€=˜ê3|:4—VçÝ]ò"À‡‹ ©tÈ—"Üãù{õߪ›ó> €pB2h·ì¶qPv *d(Fü×5ƒ®_‘Ȳ@¬,+úi{ûñú®»ùƽ];nèw†9yfé†3&î sr>É×.Fn½}‰@çzMÍÜ>xúl&“…ö`²¤Ÿ»†,¼ˆ<Ë…ürGA[M}ËpºýÛ®Í;öeöATÈÐTJˤÃÎ0L[÷P*W›eCQ›BJW8ª/ÄDó­ˆÌ[‡S†¹îΟ‡•soÜyf¿Ž-®ìíÞxÝÌý9yféCgÚµÑè{ˆ ‚Êãø (åDL$à§KÆãõƒ(Öê»1©Ó8Q«ï‚{§·R¡3è)¹Vß]o™tØ Þ)PÔjt«tUÊlÎ{‚öãù‹Üä~ÿÿüÒ:&Mî¿r6ùÚCƒØ-4s…¢üìý¿î¼©oYÉèvgèêaÔC” ×’³É ÿ"È!á‰È]¨<Ž5êŒWx}­5cíž»ÄT:äs.†9’ê0N…Y5^d¯` ö`2^ŸáC¾tso4î—x)6[s¹€­ª1%õsðñ­¨§kÚþ?˜ÛN=é,yr‰~T×Á‚nM¬ù¿mæ ]‹»ë·‡Èµå©GïÃA@3?öÚ<Ž/=£n´MŠƒËê 4ý2´¶æis#°šïœA÷,çóË E7Fóî‚ôƒ¦#GT‚èë‚ ¨¢_ùOý<63µEa±K‰™Íy·3PË~GœN—,Ëà§Qû ËÝPIÌÆDðÇã‹A|+ê†ÝÍ¥5¨`3ܟŶ4ÍpB.êVKXPà zFQÝ ¶Ë§T•eý‚úÃØƒÉem§ZßÏßûB3Ý Ýݲ‡Ñê„õtºJˆ3¼¾¦åI€úæoTŽŒ ÕŸ!Ú¯†6A®… ùÝ7ࣿòïÒѯü§óøoÜÆ~À'ü–‹M7À¥o~é/^¿í£¿ñÀÍðü7¿y±u‡b_ø.üŸ¿µüÀÍðê_ü¥ZnQù›?lakcËGe#5 ¸§¦]rq{·YœˆI,Ë ¹-~º­ºI9°¬+y …eÃT )Ùµ(,º@Œ%*ÛÒùù|>—Yt"ÆpG·â!z‘aØ þáTÎk9YëÛiötÇî4»ËJEàsDzÕÔFE¿mø\fѲ¾9Há„\.—¸ö_ •ÇјÚ\)eµ¬ð~{ÎÑâü+ÒÒÿ±pÅä4P”—ÿ® ÿü}ï¹~øC­&!÷þ½ï†ÿõ=7@ù¯¿¯(Ö•?þñ;ŽâÅÞØÌÔÂónš‰e«Tz(J£^BœŽ ›cRWß°\{6М TL:ÜŽI¨ÕŠb½-€I¡NXt48ès«3ŸƒQÿC¸½! –Ê­_Ÿ lj}]9rUÎÉF6ÉöùûR¥¹¹¹™™ÕEAåq\æ ÂÂL+ :GKß“èÛþXdž¹Ó÷Ûó7Âî<óõ/-þyU±P'ü¥5™eáõFÏøáU>äôžm©l¤«ÕtÈ777JW@.n7EŸ¾±³rc3ïã%–¹¾c¹-õpõÑÊ48üݦŸÝ!ׄÝí"LOÙÍnì»õø½Ý–°­¿júyQsˆÁT«ÒÈ.-¤ªê\;g8)«Måê'nÛo€½æhõsÉíŸQ|_ñqãì¯=>ûýÍOÿñKìů¯¿OX8ÕYå¦oòú½zÿ sA;På±—ª‡G&Gè5›’‹Û»€mŸ;Ÿp¸€Èmf#©(M!%ƒ+œ Õbbß v¼Šxý IR©õxzuïݸx]‹GÌvQž ÙLt§Ä/,{ Ëöìå7Ñæqdô§©À¤S­ŠRN,¤ä¦­B3BtÔdO÷Ä­þÅzŽA,8õñßr·Øohª€ÿ÷ïééæÉÞÆ²/¼øÂú0¢ Pyì­ zxhþ’ú ú §«]¨s†þß]Þ5’´))³¹Û!Œ¶5´…L8\P«ïš6Ø{>ììË@ka¶©Õw*%‰eaÒaÇWšƒàÀN]ö>ᄜÐ1Öf û1*ñ‡e%Þçó…Ò²‰ÀÔOµ²¬[ÚÔþÝÿ¤,‚4O­þøK‹‰ßùlâw>kÛ#ñ;Ÿý½/­]„Û~ñ“3'†anþð'ço†WŸ_]¤õOz¿ø+w“ÿÙÿÕÝB7UkÙ¡yxè mSÓNBè„‹;ç‘x_Éçi=àMÊ;°“Gªéƒ§ ÃmÆûYVŠÍfj.`Y)6›¨€-À‡] §C>º¹aƒmrÇ\ÛŠûAä}>‹™ÃÝi­…Y/8… ÂöfIl¾èšÈK½p¸TÇ€|> MζŒ;„pñ-oi6&Š¥rÔ­ ªÉ«9Õjg<Ñõpm!U­¦C¾´~±SGÍþÍ·í3,È1…†îøXWùm­Bã t F_òsÿ è ôv6bYù( ¯=˜Lv?¼“…`ó?5¤ÒÈ.AËð©å†l/7HéY.ä—;ŸúÆmz–óùeñÒêŒqƒÝªÂ(oega÷î¥üÀdhmMÿØko“b^uÒiɵ8oQÁà‹ ©”Z ÚíSÓ®tUÊlÎ{‚vZ•ÇÀ=vIiíw5žj¥w«òê /±b,áÝŠº™å…Aæh9ôAˆ+¼Þ| 0+ßO›Ò|ãuNOÙ¬s äOóRJØœZ ؃I¡>çCsiØÙùŸQyz Ì–H‰Æ91&ºÍIÙ®š€\«ï‚Çn qœbª)\:E‰(Öê»1‰eàÏ‚ `1~Å7+ßO›‡ö`‘¦PHöüu:LVš%leeeeå/ÑÏãhÜ}ìŸe«)a³a4Õªáðùx\a^ €Ø]“aì·m;2Ÿ£uÏ«[ea‹ye{ý» IDATAä¸?³Àü´û7|åìgpD!?öÜSÞwùòe är6yá©GïÃqÀ+9æ÷'"w ½ùÊÊÊÊÊ Î¶ 2ø\DdŸ ò@d€—rAPy rèM¬g“ø—ï;Σñ—yqŽûWCl˜—þäó?`øÕÙä<ÍT‚ ¦Þc>yéOð4@T‚f/î‚ ¨<AÆžf®¸1ο¨QFÑÇSFPy ‚XqîÜ9„Qc™½ ²‘®²,{ˆ‚ëS(ô/†ô™±iX«!¤†ërµ¯ýW^y•‚ Còàƒâ Œ–‚ùÒ!š:nQX,ÆRbfsÞ­Ô¬ÄétɲÜ|Ж«{ðÇã‹A|+ê†ÝÍ¥…t•Õ§§¶ØV3WpB.êVKXb³ÐÜo£»Áþ„B熚t‡két•gx}MËÙKAá-Y¦vt<òÆi¦üR{ßð; ×~µZÍf³¨< ìq T6R“¡-÷¸R²\ÜÞ Ð„4‘='䢛K r«ºI9МÕ%¡Pð@yu!%»Âñéb,Kxé#ÜpÛ¶4r j …èVÚí •„AƒÆìÖkÐJGg¶!ËJEÈä„ /¥6*Áe4²^b9!…„ç#ŽL²™ÿݳÏzÐæq8¯ý½½=ÀèéãŠ]cµŒ9îϯsåéµïœM^8›¼ðô«ŠeµKüá^ö€L-<惡–X¶ZÜÞ¥åõâtLØ“ºú†å-¹¼¢”K"L:ÜŽI¨ÕŠb½-€Iaó¦ÔÝ`w5–•xŸÏJËþ¸f®0Û.°ÛËb©¬(ŠÒØ.Ê„p^7Ðr¹¸­¯Çw‡Tã !œËårGˆK”ñvˆ8ù©Ï}ð‰È]xÅJ| (Aú1x¤«ÕtÈ777JW ù¬Ý©Ë0éèô1+ÀK, r}Çr[¥‘ÌÌt$lê£Aû– )‰þ7l?:=ê#¨<yCÊFf´$pšdffµ\^¥’H¶Aï#33‘l£uñ—WU;ÊÌjYkJ«£4²‘H¶¡¶Ù¹ÄÛ=ïÙýö?¦ƒvù‡«kß14„è¿R”+ÉK/1oþ~òµ‹½6DŽƒÁc1“Ëçóù|>—Ë,: ÈÔê±O&.õí%ŸÏ ˳ŠÒØR2¸3‚yJÈþtχ],+e6wØÐå˜hV6*GPy ‰ÑŒé¢°è1–¨è_)b%o.³è$¤šÍ À¯‡] Ó · ›=Í +ñ‘l£Ãº»»]„é)»å^.ÛÇu¶Ÿìý@Qöž;wåC¿~×WífM‹4oëm_ýNÌGNÝ­œx(rë c±!r ©ÉæY©¿$ÆãõËJ¥ŠêœÑ¬c\ÞA³)íño½­¡-„Š€Z}×´A3l~ÑIä”m(–Ö껕’IJ0é°3ŒV¹TQË]Í›R· Òú† ò@F÷û 8cºé4-!\|-`£S¶r}ÀlöT«B+ÐOŸºH;{oüdOúÿù¾±ó“½õûUÏo‘#nðÏ·9.ئ¦ÍËÓs„H¼¯äëMfå؃I#ÕtHo¼4Ü–a<ѸŸe¥Øl¦æ–•b³‰ Ø|Ør:䣛6h¦{!?ËVé›Å†EaÖÇKzZYâ}>^"œ ¹—v¶ßÞ7<¸¶e¼!„‹oyK³1Q,•£nÍDɲï“ 9cjë«1ãÙS›ÛËQK•¨·.û½îÝÓÚ‹C®ìíÞxÝLÓò©ÏÝzGógj¿Z|Õù-rL`{0™ì,´“…`ó?Ý’h>Û–¢´ÊÕB=žåB~¹c§&mz–óU© huƸÁî–ÕÛìØ°y L†ÖÖº'_,ºm2P*d”¸çÃ.)-e6ç=A»:c*·-¦ïOîO8\zñárL4­¯’$• ú½Ëj›{A ùÛòm÷ÜuÜü€óÒÿþ­wÜÖ}G6ýªç·Èñ6Š´¢‚Wx½i0+ßO›‚Êia ð‹Å…TJÈN­íö©iWºª ‘ޮ膥JÔ m³§@U’$¿í¨<è^Ž•­ãë_{îæî:s›*ÎnŸ;õß“Î2Œ¢œx(rëíºÚ_ÝÁœœ¿ÿÊÙäkÔÕ£ë[T{ˆñ‹¾uù~Ú<$‡† ò@ÉÝÇùÓ¼”6§Öö`R¨ÏðéÐ\Z TÜꆼOÐÏžÚ¦¦)Yn÷ ïÞ ?ôVŠ3K:Ó»ü䙥“f›0·zr©Gƒ‚ ¨¿köÙpCóéR‹ ]A1×¶ rDPšájffVÏ“ój EiųÁ‚ÊA£ðÈïïÑ~U€¢”1‘F£*–O³§— …î˜T¨B•‚ cÉÜÜ n«-… 1ÌžèÕΓ¶ð¸åUµ±¦2Èf#Ú.š-˜†ÍÕ7Îû|6³>”M¢ñêcþ¢FAT‚ r™EÈ© Ãx¢[qŽkGãŽj§Ù ‹“¦ÜØ­×ô‘(YV*Ÿ8–­¦6Ô¹asõS›‡a7 »jó×:¦8‚ C€¦‚ …Í1 ‹¥rÔ=\ÀºfJ,U–=ž:LÏ·"Þ©JAbWŽºÝPч͕kõ†â¶ï[tDã¥ÍÚš}Ђfž;wî`ÆO+äð³ŸËá•W^Aå16<üØs8ȸ E¥> m!¶©iWJ®ÕÊD½ÖbÕчÍíó÷Á<€q+X^æŠÒØ\ZHÉþƒYÁNDö»»Ž“8!·ìaO‘AÙÏåP­V³Ù,*ñà©GïÃA@ÆE ÷ŠÆ£K¥ê;»Pœô&ͺ ¥W!ln_1/_¾|í½²‘®²,+•*QçªKÑòjª$fcb,áµV@rìçrØÛÛC›Çqù±ä*CCï×ê»à±PÍ65íJ¥JþIo ½f­¾ îV†R€Q…ÍmëøD㥩ã…Åb,%f6çÝ:Ó¤4²K ©*tÞ´-*Í¥…t•Õ•4ŸÖqxä‘7N3å—X–)6 -• {–—Wgx‰ Z~JZ'®¥ÓUBœáõ5-­n_ÕÞ%Ã#Ò÷¤ý³NvÌ}QÒuÞlðB=$ ‡)‚ û¥Ï¼ ÕlSÓ.Eðv¹Š˜e(í'ê@]I³`ðHM†î©i€\ÜÞm>qR2ø…\.ŸÏSgXÃBèåHûì³ñÇ-Ý„Ù/±œË +ñ‘lCßBxÍãØê(vë5h¥ ëî’Yç{ý¦ŽÃõƒhó@d8µÑE·¿¼ Õ”ÆvQn=Štô›¡Ô´?Œi¬^¦wzÕÕ1„<Â|”a˜©iWºZ-nï›–•bKŽõµ€Þß¶£°OGZ‹leBhªj/GD±¸Ý´B@Ëã¸û‡S=iˆ?®ÙK̺dxDüX¨m‚¥±)¤ª,ë÷b6ÔtµšùæææBé*ÈÅ톢0Œ'ºvÂVÓ!Ÿoµ¬¨€®BÝãŸ—šŽ´ƒ°S—Û lNÈ ! –ôV¥Ž.Yt~PY<’vT‚1«‰=˜,äóyýJj«@óx‡Ác1“Ëçóù|>—Ë,:‰6áÂØƒÉBAàˆ156šQá„ÃEÿÃÍ>L8\ímé#ûÄ=v±¬”ÙÜÕÚìî’á sv¨•‚ ȱ3x¤&CšÛ&u‰eÙª*=è#=çéPúÂæVÚSßB^Ô껑n^ªTJËêþõ-À/:‰œ² źKí÷xýjÇ*‰¶º=;o82*dŸïCåÕ™-Kêz9zð|Ûl”mjÚIˆ\ÜÞ!çéåïóñ"¸Â|ÀÎ0Ú=A_}øçZ» ÓÍ%Þçã% ɡÖ1Œ=ò³l5%l6Œ|{Í:ïžW;–q„9BŒ[Öuþ¼ÑÈàétx`Àü´û7|åìgpD!?öÜSÞ×½ª–.“]áõµ€ v7›ÿô¿ª A†ãlò‘»pF>ª†W:‚™keeeeemcLe#UeY(`g˜ÖËÄFt)¯úI»eQAAF *q…®I#„k- p{;\ÇJ»5À¢|AŒçq”é3íVÿ‹ò¤ž|ê„¡xr´/ðÿú"*cJÏüX²OÐil01$rä¯î/ÿcãù¼ˆÊc\¡+Í$I—>ªR’X8¯‡a Ö¸˜§ÝÂ1‚ ÈÁ½ýâŒ/îù°“1³ÙPEilfDBœí ðjõݦ"™tPGÔ>–õS9¢ºÒõiú¸vA´yŒ1Œ=¸¶åHÌÆB¾4b!º(̪© õi·ê3|:4—ÖRA"‚ *¤ñÁX§¶ê3í–qn­ÓæAd8p¶AATÈþÀ´[ÈÕFóB¿Ÿç¹&# ô§Ô7;ÐϪ¯l¶¡a9ž<¨<AC Íéªú[AæUEiÐ| 4 îÖÂÁ%tíùj„Ò•‚ H'»àF»ÚAcsL-:2!h’Õ²Ez„º “•ö`²í§¬o.õL¼°ÝÓ&,”F6¢Ë|yžœOÌÆ$–eY)6›hÚi,*—Ë«(hPy 2–ìà<4C}xžJ„îLÔ–Ïçs™E'!b,Ñ™K¡™bY)6»Ô=}c˜KÁ,ñ¾­/åÄBJ¿ËåóùBaù4{:ºç¡‹ïÌvˆ®²¬+yQ.£ò@d,Á{÷Þ©Y‰÷ùfc är4C=ÍܤeB€Z½¡o·Ž€––‹¥²¢x– GX¶J3ËëÍÝ•{ìn[Ú4kÓbïuU_Aå Ș3ñ õóX×xŸÎ¡è /53!@sæÂG {ÊÇåB.—Ytë¿ÅîöÃx¢ëa'!l5j?ºýìýjtÏAa@ÁqðØ!.c ïVÔmœ ¡±)¤dp…3¡úBLìëÁo¬Åë³1±G§«˜x±“…`yu†—ØæÑígï˜#m‚EN³§ÑÃô Ù­×@ÍÁd’ ¡ÍoÔE)¯F²ª‘ƒ&XPS;™ ”>/ ;çÑg˜Ró? ¸÷è*‚Êã˜Ò´u·-îWÊ«#ñ š‹Ú»Þ­<á;¶µã`#‚ û•ÇøKù°SLI’ä¢úÆûYÔn°-‚è9wá GûÚå•WPy›ÕÔ´+%Ëœ·=ø]Ôž®ª^ †›ÒÜ ’$•*Q(Å$–Òï¶È1çÁÄA-ôó@Žúµ_­V³Ù,*±‡¡ñÿ Ë¤a&…ú ŸÍ¥.QéÎXàŽÆ91&ñ>âœØ zؽ-?=èÉ xí úyŒ»àð,ÿœ¢4²‘}>6­‘l6277§OfiQ¹\^ÅŒn¨<AÃJ¥$±¬+<š=íõÓT´KúlÕûGQʉ…” ~!—Ëçó…Âòiött+΢7¥Ðì ‹Â¢ ÄX¢Fˆe¥"ð¹Ì¢ äÔ†ZnQ9Vò ËhGAå ‚²;5+ñ>ßl „\.´€g¹ p„e«ZùŽÊûIϲRli³a²mGv¨Õµš„p¡€MµÍˆ¥²¢XWŽ£K;*AäB'ärëáïó­–Õ'·g¹Ëe¤C(ÐÊÔb1¨9a<Ñõ°“¶šéöe"†x©™]¡åÔoe•‚ r(°B!b,¡Y2ÆX‹s„Œð‰Î؃ÉBAàè÷¥cÂáê_ß TAå ‚vë5p9ìJy5’U•’IJàrLŒtWîhœ#¤Ùì„õú®*w¦¦],+e6w{ë˜A*#¨/‚+Ìì Ã0öv¬ù”؃I#Õt¨o’*#ÇŒç1®²csi¡{5ÿ¨Ì˜W¿ý¶ð£fVÙHWY–•J•¨ÇƒçËU|–ëǃŒúp|"L˜]º|M½+÷¬pºUØïî,33 œÆA›rø1^ͯ½¯PVËJóí_5Z(l¤i¤í^dß³ý^[E…òªÚ±_ú¥ØÛÃt¿&j•gV˯’ÝÑ dS¦¶(,: 3-·»Ž(øâ5’g¿ö;õr8OΛ0ÿ½:vmqÚô´LžN­vŒì´°3FóÒ›]ÊÔú¸•2~¯A†«ùé M>ŸÏe„ˆ±DlSÓ.–­·w`w»ÓSvËùí[oeQ¡‘ÄD×b&—ÏçŸ}6þxWx=l„—XNÈ厕øH¶Ñ:_¢trQš5ªuƒVÙ¥…T•ee€ÛËQK•¨·.Ó[së÷IÐ\doïÕ¾Íh+›Ñ«d{:wÓ']•MöbfðHW«ò¥µ­Õ''º®-¤ªÕtÈ—æ„ܲÅÇAÐól1³ê ø{Ÿ6öû;йڱդ¡^é¾Ê|ðAÃV =‡' rø1;û¡Z­f³YTã ]Í_Ÿ‰ô¶®46…” ®p&T_ˆ‰Í›¸×’$• ú½Ëê[à„ÃDî‘Yª³}£­Ú'¯ +L8\Í×ÀÞtUî{¹ êá‘ÉíªKÊæÒBJ.nï‚vÕE®¼:ÃK¬Kx1÷ÕU§çÙbynö{ ÚôhgÔ#—/_Æ“_ösïííúyŒ)Šéj~ãw/º_’$Íâa½ÈÞ¬ýžKó +ÐB-€®Gú’ÎJ•f–ЦcJ?ÔdˆÊ]Sª E‹R`ozjNŽÚôì9Ýú‡ú`F{T Ó]ïë´é:ý ÏLMÄÓo©c‡¾œî½½CY ˆ¨<ÆÔÔá1\ÍÏ0žhÜϲRl6Ssæùo›šv¢ÎC7±XdoÖ>ô±4ß°‚=˜ŒûåtHÍ%Q[Gx€î$Þçã% É`_&sÕÃc¾- =p¹¸½CÎwG)Ài?Äf¿c÷Ï:t èÖ8£} zÚtÓq®vôÙ=¯î4ãs„èË„H¼¯äëË1”‚<ÂÀü´û7|åìgpD!?öÜSÞ‡Zäðp6yá‰È]8#U¼Ò‘£}í¯¬¬¬¬¬ ÍAAƒ•‚ ÈaG$ðjdK¢3W{òè€s Œä :"7ª…l$’Ý©™EP;T‚ Ⱦ3ìÒlLlÆUÛÚâAH\ÃÇ XxÕÃñµr „ÔÉAzµÓøìé«4hôs ò@9>T6RU–õÇÕ¥¹úl`™j \^¥_E² õm\K¤`?¾;˜Ç¼W#ǛĹ?°Æ…–‘û¯^Í«½™¤¢¼‘‚é)[g¸ý®>›™1 kû‡V¹ÏÑ8x{ *AClðPÊ%á¼nƒo­S ÄJ^šH¡šÍ À¯‡] §„Öƒ\/p,[¥ñã»30”u•õ1ïµîƹ?°f°ŽÜs8ئ¦]ÀVÓê7•’èšž²uþ¦ý's°øE¬* €ß;Pƒ#‰cpCAº Ö©hˆúI™pñµ€ *“².˜l3~¼æ¸-. <´7hð Ûçþàs tu ßÈýà ¬EÿÆùÓ¼$–*ËO¥$º¦×í Ó­NæÐõ‹X¨ÕDL$à§GºÏÑ@åq|yêÑûp”ÂH;ûK5`öÜêÎÀ`ŽIœûƒË`h¸Èý#X·¦ä $º¦×mý Úh~ØÝÌH,ëÚl9û TÇ\å*ž|ê„Qó>ÃG»šý õx:¾UÌøÖ¶ŠQ†â£+νû`s ˜u`èÈýûØö„¡‚éoÐÌd_Did…”ì ¯ëÔÌ>Gc”×þ‹}•‚ C‚GŽ™%É=vŠ)1¶äX_£Ïãòê*D£Æ>5íJW¥R%ê†VÌøA*µú.¸wJˤÃÎ0ŠÒÊÀP¤óîhœc¢.Í«l¤&[OëfSm.ú}Yw ³9ï1fKåE­¾ {‡tØïÀº©ô$¿í{Ð<^?ˆb­¾ °“ZæÁ~‘ÊFJv…×¶îñºö¿üçó"*A†pc®m9³±ts‚rËZ6ƒú Ïû$€ábÆ…Ùt•Õæûi‰—b³5— ت›…Çó÷š›(ʉY5U ÑŹ®cš‡‡¾Ð65íLÉrq{çã·|cî‹ûêÑth. ÔÔÝi™°øpq!•ùR„ë8Æý,p¿¡_°YŸÝóa—˜J‡|ÎÅ0GRZÊÏþêÒÁ²ê™¢ùÏö»öiÆ8Œž>oBS9T`ôô«4ªv¥Ó‡Ÿþ8&mFðÚ§ÑÓÑæ ‚ ÈþµlÉÛ²Ú¿n¨hØÙù'@?Ac ü°Œ~!§*’øoþêWÿ#‰±ÀTcÒ]¥<4Â>^ž¢”Wûu7\*!25æœÊ«—Î&/œM^øüÚ¥‹æÝS”+O[W¸üÃÕµïôlAä°cwÚ<ÆWvl.-¤dWx}-hg¥±¹”(¯~¾V[·v@ÖÊÔн€pÌøqå»+ß;ùÈçn½©µŒíÊFòÊ"·Þ1Èx*¯^:ûíë‰ÜuNÆ#2æüù`ôô±¥µÎ tyº#üwäN¤Y&‘ü»aY)¶Ô嬧;©è’>Ì.ej]Æ ë} ”©¡‡ý£WºŠî$ZùL$ѧWè£çF=Ù{ù{pÿ/ßÜ.;.½Ä¼ùûÉ×.* µs+ßíeÙ{îÛ{úvAÆ ‘÷ùè-÷yø(*q…®üfY)6»¤ŸgéŽð_›>w"Íšh·Œä¯Ã/[M/t}k–Ô ’ˆI,Ë ¹-~ºÍ–Ñ{_dj°ëtfIöÕsöÞøÉuï>©ÿÉNÎGNÝ­œx¨eó¸ò8õäÒ)KHg;‚ ã†zÏ,:o8ñ¿ òc<Ë#,[M‡|¯ã6ÇdûG¹¾C“P;IG$¨Õ àŽf¬Ä·;|Фœ×M—­«‰¥Q¯!NÇD[úÙ—ºŽÞm˜fÚÂôÒ™À昤Ÿ×6mL†h?=ß'}wÿlÿµ{ºƒ ‚flþÄ…¿Bå1öâ#—Ë,:‰þÁL'|>^[ÅDň¥ ìÔå¶È6,+ñ´fÇS¹ý\Yt1¶´ÙRÆI :怺MVûªl¤«ÕtÈ777JWfjPšàÀI[M‡|¾î ÑC`0Dûé¹1×Ý|ãÞ® Ø1åÊcÙÛ$ IDATÓkßiwJ¦A†a<^¿XÒì»õZ3S®®ŽÝõÑ€¦ãÿcÛkñúlL¤I€Œ"ü·'ð.«§‚A$ë]¤„Œ &½ÍmIjÐc_Cdj^v –¡ßQê´ëîüyX9÷ÆgpÑ`˜“g–>t¦]ÁÜwÏugϽqç™›oÄÓACŒ;º^_šãYPç îrïºàOÑæ1–(Jyµé( •’IJÍg¿ñ»û„Ã’$i椆”Ñ™2,Ält=ì’e¹}ÛREÝ;Mj yŸ”*ªÛD¿ûªl¤&CÁöL .îhœ#d_ ±ÌÍÃ÷Üœ›Üïâž½¯~ío4Üœ¿¨‡é"æ¶S´/|íµ žúÇób×ùDw8;ïsU¹~ó65Ú£IÔ€ºgA ŸFúÜÑ@A ÆèM8˜,äóy½OÃx–»üóPyŒ«]+ʃ0;;77çã%â\\_ Ðg4îgY)6›©¹¨ j¢¬(¶©i'!ªC{0)p¤šõ³pƒ±×âþŽm%Þçã%}R÷|ØIˆÄûJÞ8GH?ûÒ<<ô»£–‹Û;ä<½ù|¼¨Kp°¯¡3"ªlêy_¢!rב»47Ræ6Õ¥”aNžÑ uŸûl9nÂQ½\Nðƒ¨¹–Si ÏkëaÏÍû–里Ζ٥٘ØtKÜÚâAHØCZ)¯ú||-<U£ 0Œg>\ãG4ƒ<~0À¼-‡ÌÛr ¯˜ìÒBJöÇ Ë 3Î&/Ü|Ýßá8Œ–7öÞ×}¥w'XQÊ«Tñ–=ßÒ³·ÊªæîÇó÷¾ ¥XSó„UÔúqˆÅ€V ›k_…õtºJˆ³.¨µ ­ŽUËÍ~ÒR ]ÕKÇ.:ÆnÈ 9]ž÷ö¡Ðu^³PÒúf»ès×j5|+ ú˜ß÷3\†å –WgèÎÆ(uÎ>¯ýçóйj¤íŽ£ÞI]áõ}¥r<|þápF~Oï«̓*–ÊQ·»ã^HÉàçZO2ÏVôÒDPWž …‚GQÊ/´·Í²R29aÃÇK©JÐD3Œ'jÔ²†¶ð> ÏGÍ2ªî"³½´êÞ]PF€óš\‚Zçàt¡°Ü|[ N`nË£°Þ54W×û½n†a–Mïg¸ºw¤…«okÐëg%)–ðŽ×{Î~®ýwþþÕçó"ζ ˆz'¥q>òù|!´ã¤2žô³]]ynòU(`ÓÄ ëóa¼ð¾mtùúà»0è¼n%¼õQXﺹº¾]ôt5¾ß餎x¹þ8œ¥x¡"‚Œ]ÞÖWc ú°˜-¼BÄXù©­Y·GݸyƒÃ*Aä@ ËÙ&Ý–9ÆL G@‹Ï;BqÓ7t9Ý0Méšõ%ê ùÅŒ ÷ ßÇQ´ºÝoã}ïȪÁ,ÙCå ‚\¥œˆ‰Ó%й>Mkõ~†×ê»mâ†JZ®_snѲÙÂû>{@—Èõ¡œ,vE¢Çî˜ÔDUtÁ¡vdÔà€=Då ‚Ôš•hÎ-Ÿ]áu£ÕZ ýt†±ø° dã4 F…Y/éÅ{^m!ãkïëÖ-›-¼ïK؃k[q?ˆ¼Ïg1Ùa¶BÞì(ú=Ñ8GˆXªX7n=\ý÷öKâ =<àªÚ1WÕ"‡³É ODîÂqù¨â•>›PûâÞ[hd—R^·VKûßQ#YHáâÞ#|í¯¬¬¬¬¬ ÍAAš¯ãöàÚV|2µqUc—)Jy#5ß3Ù1*0ž‚ rTtC3lƾñ\Õõ³ TÈ¡ƒ¦UKWi AçÈMvW»ý!:“’0lîß:‚n¿zé Ò› ('ŠÜz‡i|ë+É+°¨ÐÞÎíðfG}} ´²õ[-_þaâ~Ø`˜>ë#‚ ò8Ö²#%»šqy›K‰òÚȱW»ý©l¤«,ËJ¥JÔ3&ï ?®|wå{'ùÜ­7éËÁo«¦(W6¾µÇýú§oÐÚé~:yféd³2|*òÁ;FQ®<½ÖCМýöuDîº ‚ úyŒ)m ´ÆL.{¦#­åjYQhðšf²G¥‘4“ÜÒ¯L¡·O¿+¯j9$WÏ“ójœŸòj3ã¥A³Ý…Z€ l6bŽ’¦”[„ˆ™VpFzdÝÙ; íZ'iýH¶¡Œ62]C§ßvnnn&‰è"YŽ(ÊÞË߃ûùævÙqé%æMš«VQ®<½v©Xù.Mc;Ì)ðý×Î&/<ý*íÌ•§×.½L.k»Ð6l_Qöžûöž¾‡‚ ¨<S´`;ZÊJ­œ†Ïe邸 Øôçw·‹Ð\X_I,¤d×¢°è1–¨ôÓ>4²‘˜èZÌäôyYVŠ•¼ô_ÃfÍöŲRø\fÑrj£bfðHM†î©i€L£•¢‚f³ì'C&í$™j:4+¿vœ6ŠÒ=tTOМÛâ§Û:e>z°÷ÆO®{÷É6³Ä|äÔÝm“W¾§z¦Ÿe˜“ó‘÷¼ñV+{ºâ+¿ÿÊɯ~îVøVKXèwq'{C×îzôA•b…g¹ p„e«ÆËôu©èG¹¾C“)P;MË0ép;&º¶O[莮£-I7lÖb_=38PƒGxÞÝŒM¤J¨–˜è•¢¢³“6Ç$ý¼°iCc2tÍ<NÇDGyÑ듾»Vw¤Wž^ûÎÙä…/|íµ—˜7¿þµ¿9›¼@-"TRض//k{9ùÐ܉QKÔdrQQð²Bä@?ñ¹(õ•bKŽõµ€]Ÿ&›e†üif¶¬D½uÙ¯O†Ä²ï“€eéÓ×Þ«}[w:낾Y›yao*éjB¾t³@.n7;㉮‡k ©j5ò¥»jóî:Ë8†–£wÝÍ7îýè ÜqCÿv¬“g–n8câÂ0'ç#°‘|íbäÖÛ‡ÒÉK/©Ž#ÔMuà"‚ ò@€aìµx}6&ÒÇy35@8ª/ÄDµŽÇëI’J ýÞeõy6áp‘9ë¥íÓxÉVâàYE1,ìçyÙØÌÔ39º¬¦é÷ZÜÞ í4EE°¼:ÃK,M9½XÅhè:Ìöq»îΟ‡•soÜyftŽWövo¼nfÈóä䙥i×F÷ÝsÝÙsoÜyææñBBäÁÙ–±DQÊ«MGQ5ò¿š£ÁøæW$I³xh‰2›»ý·O·²Èaجõ¾¬ ©É¶š×pÂ¥=EÅ~0:}ò*}ÆŠ~Žè&÷ûŸ¸gï«“&÷ƒ™Ë§…¹‚Μýƒ+Ä!´çî˜ÛNÑ~ák¯Uð¢:ü—|ËŸÚÔûptUu¾>ü]µäOó‘´Ügôz´y ‡ÖÔá‰òõ¥ÙÙ*Ëq.Ò©O4î—x)6[s¹€­J±YˆoEÝSÓΔ,·?ŸíÁ¤PŸáÓ¡¹4ÒöúnÞ>؃Éx}†ùÒ„pçïíè›a³Ý…î>î_›™Z˜ê mô@ŠÛ;¿ås_¤R€4STìwH ‡.çĘÄû@ˆsbËb1zmöHgÉ“Kô£ºtkbÍÿm3Wè*X|èØ˜Š^O‡þ‰ØÈ.-¤dðÇsQsЫÜ sèäNóUIÌÆöoLÝçxÙG`Þ–Cæm9Dw¼°ìÁÑÀ¼-WiT ¯t:¥hè̤EüÓä¯ö` ‡kétUТr<±<ž¿÷…¦ NÈEݕĬjíÓmÕÙNÏǪ¾\}¨w|ŽÏKà\̬Mm/-¤dÐäK¹Ï:úž/{Ú6|ä‘ÿñ/oNÔ$Qyu6ãÐ^¨¬;ivÈ-ϰ½b~˜úngW;‡Y‘`Þ9ˆ>5ÿg(-»ÂëÇ/«$rÍÏÀ’„p^£So õê•éªøÓìé®eùîèVœ#DÿDnA¾Ö+Þû©c¶*^ÛðÙgŸv±l•®dÛ­×\ÍøÆìÖkà÷šò ûéøtŒçpíŒ;¨<¤Ç‚ÞÑòù|!´cÜ-䉒>׫[WîLÔ®[CÞÿN)=üÑÏŠ÷!VÅwmjÚIˆXªÀN¦§lf2ˆ÷ù|¡´fà´8äö÷Ð^£h•‚ 2zµÑá«È²ïã¥æêîžO8ëÊ4¶¯Ö¶Ïr!—Ë,:ÉA>P{÷ܦúÇ7”F½f¼Tž*!'p„tDê8d†ñD×ÃNBØj:äó í‹:ªvPy ‚ £A¿Àª‹ ‡‹>)û1Ô÷®¬­-_Ì!C·Íù!ýè¡Q²Þ=W—æÉõÝíâ¤×r¬Üóaýâ5ãCfìÁd¡ pôó;ÿÄ#j•‚ 2Üóáßý£´ÏõêýU6\–OWå«ké‡]ïñúÕFô ÔG‡Uпv«‡XÚ¨Oz{8lÙü¢“È)!ÛP¬Y¿°¿¿ÃlOÃvŽ<¸ªvñ±;NÀ›/ÿí0Ì{?òÉO>ðÀŸøØ×+JýÅoÿ ™B­Á²RøœÀ±l5µQÑo[>—Yt¬/7`·^¿—Š€Jb!%»…Eˆ±DEÕ )¹i˜)–û‘ ã‰nÅ9B4…1\;*äòÖ[oÀ‰ëßÕýÕ›oýÀÎ^g8qýõí9Ã\ÿÞ[N0ÌëåÀADC!\¼#ݽÍ1ÙU'°ÛËbIS$j9­¯+ïP6¼Ïç ¥µ¯T L:ÜŽI¨Õ:‰[Úlì{ÞdTí ‡œmoÔyõÝè–©OL˜T{ï=¿àx}ûõŸyóÄ `ÞzýÅg@«üúö3êÒ•{ 6¿þöM½õí‹þÌE\Ä‹´xò©gpFÍûú1tÏY´¾Õæ)XÈè”Í–·4ÅR9êÖ,,+ñ> Xäú€ñD×õ…TµšùÒt®g¨{ÚhÚAçµÿâ__Då1Öšã½ùä'?ÒU~Ë'oi¶U`Þû‘øˆye«–ßû‘O>ðr¤¯œý Âhyø±ç ŸÄ^?H’TªD=kQÒØR2¸Â™P}!&šÕs9&îš{>ì’ÒRfsÞ´L8\@äN š ¶¼:ÃK¬Kx´Q_7·®vpÂåÈ\û_þÇÆóy•‚ Ãpùòe„ƒÁ=vŠ©>žå;u&6¨w~U«ï‚{§$±,L:ì 3è<†-À/R)!;µ´Û§¦]éª&DÚ{sbLt9&š²Ikõ]€˜dl‰™p¸äZ}^[½Òm‰Æý,+Åf35°¬›m9™…Y/8…ôÙÆùY¶š6Šb&ŽTÓ¡¹¹9º V þáóñ"¸Â|ÀÎ0ªµätÈ—q„9BŒ[æÕ:33«çÉyÃv#uJ€/øi÷=n@óéaåáÇž{êÑûð9<œM^x"rŽÃÈGuäWºÞ/ç,k~í¯¬¬¬¬¬ ÍAAƒý<AŽ, ãY.–q T‚ ‚Œ#¸ªAAƒã³ýÚÐÛþ?~ WÕ"‚ 2ÿÓÏ ï!ú3,hó@Aä`”Ë0€ñ<Æmõ¼†>Íôp‰§Í¶Â4Ö‚ ˆª<þ3ô-hóoÚ<ÎÆb³5šêÚA«¢<öcó`Ñæq„h†/TS`wX)”F6Ò4t¤¬–ÛŒõÍ¥¹¹¹™™H¶a`äP”F62ÓaeAAމòúïgp¶å¨Ñ•»)ʉ…” ~!—Ëç󅲇Q"ù|>—Yt"ÆZQ–YV*Ÿ8MÇtPI,¤d×¢°è1–¨àÀ#ÈUEÿ"¡é~ý»A÷Ü«ö.ÑöÖÉjyçû*_-[wƺ9²Ê㟱Cÿ¡ÍãxÁ²Rli³Ñ}_°9&Û áB›…Ž)‰0ép;& Voà½AH‚46—R²k1“Ëçó[[<­wB8!—Ëå®ù.¡(å„üÖV>ŸÏ [M/,m6ú,Ï,ºÄ˜^”X@ßdè[MOñ„¿ã¸óÓ·‰ö÷O?}á±Ø­ãÃþwÏÿô}ý! *£HWjG†ñD×ÃNBØj:äóu¼ Y$ ²Ö1<ÝP®ïà˜#ÈÑÊF c&—-²±0Œg9T3®Ñw ¹¾Óg¹mjÚ}^àÖÓ»çÉùÄlLbY}»îI[­‘l6Ò1ÛkQ¹\^EAsÐÊã¢ÿ{€_y¢´ý—/üÕ_”VÿlþÖ=ý×ú;ÕÔÊ *#F¥•»ód& #Ð|jl )\‹Á0¤™Ž¡)­éÛ•6wƒc M:ϲRlvÉÐ `·^¿×øÂ4K:oP¾S—]áõóÌuOïžfOG·â!šG<˜OÚª³½™EÈÚl¯EåXÉ‹w¡kª< ¼ýùé;ämrOôw•eÿö÷þË6­ðOoן~øôÿ~ïG¼S o¿ƒ6#…¢”1Ñ:¶;çiÞbÚ^žÚ©ÕwMu ÃØ§¦],+e6wqØä€ñ,ްl•æ”׿볬Äû|¾PZöÇ ËžNA²™‘XÖêL:ßQÞ–ìÞ Ú‡|¢›Nï6ïWf“¶êl/KtÎÈ¢²Å¹ZÊãmEÿGŒ·µ’ÿâÿAüÉs/þ”üôme{åÉ‹w|6þ›ï‡ÿöÈÊ_½C•ÇØCï5êmÂ^7J„Ýv+W˜Ø¦¹FŠÍfj.Ð[A (ÌúxÉ쪶“Gªé.oAk">r¹Ì¢“t<Ý á„œ`ìžÕÈ )™rËƺ¼å{.p¬Ä÷éçÑa˜1œÞ5¹}õ;i‹3¼‡ÕæAÞPÞ1*ù§·_|^€ÿÍöá[N@íµ7 Œç1¾XGìhÿÖ¸&ãYÎç;‹OÖìÚ—g¹Çh!rÍ.{`-^Ÿ‰r}@g¸tχ]RZÊlÎ{‚ví݃úvX;ÌÊ›-y9"ÒöíƒvÏL‚åÕ^bÅX»Õý3áp‘[“/`®pªŒ„òÐEêlË;f3…Àûo}÷;ä§ –ýÓ/ûþXäWßšÀÙAñAQÊ«š‚·vùgØü¢“È)A]p[^Í8øÎIÃrE)¯j+iMÚïŸöéÝ ‡ Ô™Ü'mq†÷°ñö;Šîš~Í¿ò_l±,üœãFo¿31ñ~ äþ/ŠÅo|ë¹?ú³Ï¿[´y ‚Œ‘©Ãå__š­²,çâúZÀÎ0zÃØ!š—RÂæGþÃ-߈‰,˦C¾44£»¡’0*÷0ž¨wunާMiíw÷„e%Þ'AsÛÇó÷¶™RfctÅiNïØ|¸¸J‡|)º¯`R¨ÏðéÐ\Zë•)öA*#W_yèmDiÚ<ÞfE9ÿÔ—þ”€?¾ûíw€íC½ý»om|óÌ~e¨‡)¾à§Ý÷¸à+g?ƒczyø±çžzô¾Ë—/ãP ‡„³É ODîÂqù¨^éJ#»´’]a3€ y–þöCÿB§<Îÿ?¿òÈ_èB3ŸÿîWïѨ¾6ýdž¥"õ¶ûþ)»º‚6ACŠf?ÐäóÑ{ÙxúoÏ>ÔyâÂ;:CÜÿúÙ¯ÿkõsj58Û‚ rhÁÔÈ!D?Û2(DQPy ‚ 2í6ÁPÐÃAAx{Êm‚ ‚ Æ;ûR€ÊAAA”Ç>ü<è"\Tc‰~Å|›œ$maþö¿ ü£jð8þL¯^ú‚ô&(ʉ‡"·Þaš@üÊFòʺ*(ʕ䥗ZA­A9p¶å˜¢y¼£>8´ü¸òÝ•ï|äs·ÞÔ’Æ ÃüW>yféCón… rUÙú³?zÛW_©¢ò8²ÐŒ @8AËZÙŠ àtºdYnêÃrwç{ycsi!]eGhV9ÊÖeïåïÁý¿|s»ì¸ôÃT’¯=¹õvxs#yåæ©½om_÷©ÏÀCd\øüà ½í;ÿêóyó¶AÙ/±œ£Ù&#Ù-¯$bËrBn‹ŸÖ×7+o¯³’]‹Â¢ ÄX¢‚ƒÜ‹½7~rÝ»O¶0æ#§în›1¹ò8õäÒ)4f –*¶¼:333¡yXÔÂòªu¦èæV«4˼öyÀ]7²‘®]7²‘Hv‡œ®Í«×[dŒ@åqôîSí¢LçuÓl“D.n7EQõâtLØ“ºú†å÷…’“·cjõÞFÀIßÝ?‹£€ôu§f«©–⯔DëútB¶PXÞy²™ª­ZÜn¥jÛÝ.ÂôÔ{zÿí_½ž#¨<f§.·ÈõVù¤ÃfX¿»¼ûÞ'ñ>^bÙfƒˆ×Ý|ãÞ® ª¯<½ö³É g“>¿vé"Ê;DÅåtKÔ  4²™šËIˆÞ`0×dµ¬tX -z“I«ryµcÛÔ´³ùöBkn¤`zÊÖÑ>5ŽÐt›.º?wôÖÚþ¡UÖux€C@Py ÍF­¿k ŸçZß&!œËåóy|éã½íº;¾uîr¤.¥ODîz"rΠ:&C!¿–&~w»ÓÓ“íF‚|>ŸË,: c ëç®ÙÌ)ËJ±’·óê¶MM»€­¦UƒK¥$º¦§lZ!±’ÁßÏýa Þ¶* €ßK[ìTÈÕæQ©TªTJ˺¦§ì Ã0¯h9uìЮmÃrÃ6é釛Üïâž½¯~ío4Üœ¿~?ù3iÍœ6¶‹0=å0¨c2[Ú¡ÌfN áâ]ÉçÆù@,U4áa˜¸Že¥ØÒæó°}ô¶¥lb¢Ö½AAåö`RàˆÄû|¼D8!´«÷®hœ#Dâ}%oœ#­P0fåÝmVÓ!k¿6¤í®}Û©s›êRÊ0'Ïh…ºÏ&†´ n¯Øjz#±‘š :¬ldfÆG'Cû¹ï4sêör„Îõ” , ㉮‡„°ÕtÈçëž@éTövw3#±¬?Þ¶¤'Ç\U;îãT–žåB~Ù´²ÒÈ.AËtiRÞÙ²a›È±åܹs8£ÆÊÙÊ=vŠ)I’üB ¢3 46…” ®p&T_ˆõp=¥3§rÛÚxë÷j•$©”Ñ*Ø D0c& Aº˜_Œ%¼[¦–‡{ J#+¤dgx}Ùà }Èá¹ö_yåTÇ }äSâ ¯7ofåbÁƒ>ˆƒ0Z =g)K¦¦])Yæ¼hËI¼Þû]Å>5íJW¥Ìæ¼§i íËÞ"IMÑc^-çĘèrL4õŠ(Öê»1‰e Ü[¨l¤dWx]gäîCríW«Õl6‹Ê $¦åbÁåË—qöúµ“…`×+>Ãx¢q¿ÄK±ÙšËlUŠÍÂãù{ÍÚ±“B}†O‡æÒj¾…Þ¯n/GDü^w¯Wp…ùuqχ]b*ò9ÃI‰ƒ÷–ºt°l:äKƒ.;Ä0‡€Žkooð?í¾Ç _9ûÓCÈÃ=÷Ô£÷á9<œM^x"rŽÃÈG¯täh_û++++++èaŠ ‚ ÈÁÊAAƒýž®à@ IDAT<ƃ‡­]ÏA•2Bžzô>¥0‚ ¨<ƒýÎd?è—`P´µ}n+‚ÿ*ÕGcúy 2ü³¼-mØæ7z_Zú!Ì@„ ¨<KËJ±ÙÄyr^ÿoŸ9EÏ“óôßl627773É6T%ÑþÔl×ÚWåÕfýÕr‡ vO øÝÈFf"Yš¤ÕZ×Þ ³°‚.mììR¦f´#Ì<€ ¨<’ ¸£[qŽ:gqš=­ÿw œ¢,+Ïe] §6*Ð+ý)Ãxº÷ÕÈFx‰å„\NàX‰d=aìµ8Gˆ[Ê6¥¼ºP’A;Ã4²‘˜èZÌ –œ™æ\ä„Ü?Ý^n<r^Ô¥?Õ=þí†û’xŸ—'$Mò§³¬Äû|ô‰õK¿ôØjd¦äÝZö0Œ=¸÷³¬[Úl(Š=˜ŒûåtÈgØs÷¼ºëŒ#Ìé€{>ì$Dâ}%o\_>ô84™ …üšvÙÝ.Âôô¤îk ïÚnï]½„ÈQ·Ã/Ø€Ýz ü^3ÿbkÇa #MG?‡k9< ŸÇÑ„^óáøt1–Š%¼…eá-¸™œ°áã¥ÔF%hTAÌ(–Õ‡ªš¹ þð,òË…eÝCE÷¯Ùg“Rï}u>ÀŒÚ|´UÁ³œ×mßÑÚi}·õ»ËÛ÷eÝ·>Œ?šÛìÔv¦yG=ÕzÍ0ô®Õœy ½wÍÞX¬›Š›¤£oùíúãôncá_Ü¿ãp÷浃 ÍøÚ£/p>¯Yw;®y¨ÕFïXê-ÉíåHË‹ È¡Äíõ[Mo$6R“¡@›«±wíP Ù!œºï$,+ñôÖ$×wšŽÃNBØj:äóiaTeTí ¨zÞ·ß—åcJi–nżÚz‡ëÍØ­WO±è~ƒ Ȱݘ‰È×w·óV'9|Zdºë¡SǼ½âqÿŠevªWÝÉŽy¢*£òÒINÊ”¿–eYËçYkëÁåìðä GÃ7£ÚÞªÕ¿é»éwttttt϶ìÜ@ ž jøLAyH´³bX £-`ä<.Gu6Ø€G=‰Fh·½hØÝ¿ûçž¿€ÈZ„iamwW­ãvÓïþ×ÿX<“N"ò€V`"$~÷7 ;Æ€Õ󨆀mH׳ã½wyiã[±|ƒ±4ç]Ç'yìǼ°CÝô 1&jÎOîÙ³ÇøVÌÕúò]ŸZ·¨'NU|ÕŠOöÙGG‰0Ú`±/ßõ©={ö  Ÿï‹‰°ÇØÍè}Ã×ë­Ø§ÍãK$Â^¯×ã 'Š«{ÊgÇÊeOùõޝ.¼^5šÉ%ˆ«˜k˜ÍމÂÉ¢¸Öš«¯w¡Üt,ÏX`¤jH’½orXlke”oÞpNËêïZ(Ì Ö| ˆ-Óã¡®N‡Íx‘À¥É| `Ö Dp‹ž57~(¦É!%$S22žÝçø¡˜VþsoÞØ–1uŽ¢)ÅÏX>6oá¨ÊüJ*¥ø™ 'Š«}ƒ8>’IÇ×+¼º­aLdÜ©x¨‹óüT¯BÑã2ibçÛu/¤ëÙL’8÷»ÊŸ¾…Ý2<;›N§Åµ’‘q#Ž©ÙJ5[6ÄŒ:â¦vF‹XÆÈv`À6Ú+G}>_ÿ”™v-Q§Ãéè$¢…BÑÔ}FgŠk³œûûƒ6rºýœS2“Õu]/ÎÏi¥®Úéös®ÍÍg•Ž·9:‰Äñ5 oPâÜ?2äWäÜ?2´‰«k…Åv\¨TþšþÐÑYuLE+5n "Ir¹ÉLΗƒcÓ1ö`ÔœùƒŽg[퀀s¿’R*ºÃrDUݳ$¹†ŽtqÎòSý>ŸG¨o± ­}C+,6ì`ê^Q-ŽÀšºy4§Æ¿aÇ'Š‚MswÄ{ÅèUï¡BÿP¼“dï›è/Ì<«!ò°æy@ËÞ ÈŒ©ñ™%""êpÈ""Y3ö!Ùû&gg?'"ó8²££\B­÷ë5 ¯]-°Î…$Éåcjf½Á]/Î(1äP\ñs^÷¸õZÌ)¾ÉÙt:½æGQr ¯ýo’\Ãýþ¿@ä€Ìì¶`4Ôŵ˜’(ê’dïî1"ŸAGüœ¯í; KD¹ŒÊu:ì’d”ɕޗ{ºíMÄ æÂW£½}Ûºr¨˜·Q‡Hö˜§<Öm%üÔmÖÂB+µ÷§ôhøæ–OÅh €¥0Ï.sm°V2+ ‰Zi›@ÎÀ:XÏ‘€u0-‘€¥0Ïy€¥ùD`Ìó@ä`d;yX ó<‘X ™hž®aØÔã 'Šz»ËÏŽyJå ëíp{ÿ_dÇÊÿcçùyc/ÜÆûâ"€K ó<`£aÇÌࡘ&‡â©t:}òd””ñ­èÞİ©”âojǵíßnít=;IІš¾…Ý2<;»•{ó"ò€v@¶6hÍ®ª’dï›vIRE¢b,«‹Ôˆ‘Ñ‹‰p8QÔu2eM6Ú×R©x¨‹›ûZ1ÜàóEUVþ3^îõs´XÐngE`U#­°Xëœû•”b õN”$×Ðñ.ÎY~ªßç[o.ª*2©sõÕ¼BÂ7WfkR£I[îY×kpD€llk’dNŒø9=™®g”˜Fr(®ø97zn14“Ï$Ë#&D¹4´z`b-ç™15>³ÔàDÉÞ79;«ø9Õ‹*;:Ê%Ôz¿þmÖ(|ÕXµ~Mj6iKšopD` Ìó€æézv¬¦Ìu½úDãŸ/š$y 4÷ßsJ¯/ªrîrš/­F}¾¨ÊýÊdŸ}0«Vá­FéF¢2iÆä˜ukR¯I[ø_k¾Á/ßl"òõÝí¼ÕIDG߃h£û>!~­Þxã "Ú³gøÂ Bf¦}œ8qâàÁƒâôG=‰™"»ÏáÉŽ=x{ÅOÈŽHÌŒ÷F’0$ÝýSz4|sË§ŽŽŽŽŽ"ç€l€u®DXIÌóØqŸkê+a £! iÈyX ™@äVÀzˆ<¬ƒl"Ka=@ä–Bæy€0Ï‘€uí@ä`)Ìó€ Ñõb"ìñz½^¯×ã 'Š:•ßüÊÜ*ÇX³ÜÐÞ¥ÁÅVÞãX¶ô¯ÅDØØÂ¦¥ú"€Ë2Ð|g<3x(¦É¡x*NŸ<%e<«ëbñ®K²ª± k*¥(éÂæ#I²;:‰±|i_ù¥Â%3¥s Z§£j–Õv@‚ÈjÀ<Ø 5¨J’½o²²—]ý:;&RáD±”>¨Ê‘$asî¤^~¥™þ»¼ÅZ>6«ÎˆŒeu±Ÿ‹Ê˜±ûZõ1e:Ý"JfrD´4?—g¬´Á,Q.“ ¸æ›õxÆÎóóâÛóü|ŵjÞNÅéˆQy ÛPÙ»»bßÔF©"bLdÜ©x¨‹óüT¯BÑã2ib×Yã˜9Ц¿.TÈŠirH É”ŒŒçÖ¯ŸÓíç\¤%Dú!N‹:$#ã9rñsι_l&W}Leßßáè✠E]_,h~¿_"º^,,ÈÆ¼âfÍ)IrU\«ÁíTŸˆ<v3Ìó€ q Ï*~ÎXÞØð½æa¥½émŽNñõDÐfst‘V»ÇômæpamÂ#›IQ§Ãéè$Ý+5×mí[w,êœË$î¡RUsKósÔÓm[{³ 5¸fNDÈ|Àe|¤RñPgL ηrŒ€15ꋪŒ™C–u”“bˆÇ'N¯4<¦<ÕCÍŒg’·“:2-ækLòتÛD» æy@k$ÉœñsÞ¶tuìÂÐáW'65‘˨ŒQ§Ã.Iº^œQbÉ¡¸âç¼NbýcÄTUUn§$Ù»{dÆòSSjÀ½Ñ,ÅÆoy Û—9]ÏŽ’Šn¾FÄм…ÂÒšp¡"¸éî‘Sã3KMÖm<’4\¬™ kîþK×­{LeÀÐÅ9ç~iغ{º8缫‰Û^s­Þ òص0Ï6’êp EIéíõz½¾¨Ê»BÇ'‚öM|vŸSz}QµÞD{ߤâçù©þ·0¦F}>¯×ëóE“òÀñòtÎò£.j¤7¾ ‹Y±ã9²£2ib’JŽœÕÇT^ELõ0,ñmã`¥9™¯•Õõfn.Í6ùúîvÞê$¢#‡ïA‹´ÑýGŸ¿Vo¼ñ†ùýG=)\D ¤™Á—'NZþ)=¾¹åÓGGGGGG‘ó°æy\‰&°Œ˜çÑ®°SFv½[T®XHc —ú/Ϲç/ ò°š˜ç±ÉŒº(ã»Ì]B#Àö·™¿<_ÿcñL:‰ÈÀjmÉ|lÅl€-ýãóæ›ožm°æy ò°ô³&g"°ÖóD`)d>àr†¦Ö1žjÁ<Ø¡ðT-ÀNÒÞõ<àr ëÅ™ÁCSyFDœw Ÿè³Kõ^]«ÔI¹M®[*.ÓdóEõbbP¡û¾yÝ÷¼÷µkQÔöV¶ÚçïüLËçþǯ§j¬Ö–õ<ಠ;Œ¾_׋3ƒãÙ‰¦ºäͯ&6]›Êççæ—úúìâÍ¥ù9ê‰v0û-M†E϶¿·\Ñú<+˜D˜ç`=Ì󀦭ÙÜU’ì}“Ã.IÒõì˜ÇãñŒ%a¯×ëñ„E½:‘ ŽÉêzƒãu½˜{êí©&¶ŠÕææÅ~¹ºžŽQO·Í\¸H„„=¯×k”SóêÆ×Þ²±ìúÕ6^½\UWÏÊŽas8 "–_LBä`-¬çM¸bO×ÁêØ‚1uŽ¢)ÅÏX>6[·´ÒññLšq|nüPL“CJH¦dd¼ª[wL,?U:<—IÊ=ݶÊXaüPL£€’J¥ÓéÙÙá)‘ÒH§Ó©x¨‹ódd¼A”°z°â'" ¸EÉõê̘ɸWÚy\)µüéDÈvÀöåžUüœ±¼±ù»ñOœûûƒ6rºýœS2³îýÒñ6G'‘8^׳™$u:œŽN"Z(×"Iö`€ˆ’™œxØkõ댩‘Á™bóÉQ&èzv<’äÜ?2äßÖ«³q lßœF[¬‡õ< …à#•Їºø†{÷æ0¦F}Q•1Ò ‹Õÿ¼Ùdkd<ˆ$É5t| ‹s–Ÿê÷ùªP*#‰b"ìñøÄ›°4W Œ¬™Ý²Na»FW`´™Ø$Éœñs^·£•­Üá‰sƒcÄ'3žIúk>Y#Ùû&gg?'¢Æ(º^œQbÉ¡¸âç|ý„G1¡Ä´®P|Ø%5_gØÚÈãJÖò 9«ažlˆ®gljR’#—Q[a,–Êïw:ìï€ÅÓ+Œ©ñ™¥‡9Ý"RU5àn4–áñs.j(âQÃÜxÄ”ÞX3gv]¹é˜&Dƒ¶Ö¶ÎÅen¼þtñìCûö9Möí{øÌÅó1æç:"d;`;§:\CQRz{½^¯/ªò®Ðñ‰ 9˜Sz}Qu3óì}“ŠŸç§úë=Þ"B?çœûkÆ(>_4Iò@´TCç™´©~_Ü1`¤7$É54`LôÆd1y¶nŽDLéƒ8æê5UgغÈc…›_+Dœühfþ_Îþðtfì¯hæ‹·ÞùÂJÅa¥ƒuˆ$"òõÝí¼ÕIDG߃6h£û>!~­Ì x˜×óH3)'N—ëXÃàRÀ<عV¸ÞòK¤Bó°æyÀFézqfðÐTžç]Ç'jîÙ¶-kžï5ïØB~%eÚø vªeÞúrõÈyX Ùh!ìˆir(žJ§Ó'OFIßYÛ”ˆMeS)ÅÏyãml7åŒy<ØÃÅ›Éyˆ ‘€¥Ä<´4gÍή’dï›vI’¹£­ýuvÌëõz½Þp¢¨aÇã 'ŠúšNz½c¼ecÙÊ?ò‘‡ÆÂ¦ã³ccOÝæ"ªDØcÞïÍ(<‘{½^£d!;VªŒg,[jdÇ>ò‘È}½•±ÆûÏAÛ"ÞòKÇ^µÈ|Àv&öšgLôš{âÆS#w*êâ÷܃zdÆò…E"¢¥Â‚ÜÓmo°wÝRaˆn±¿]nüPL“CJH¦dd•ˆx`dvØ%Ò™$u:œŽN"m¡PÔF­úƒ6"·Ÿ'“ÉLvÈ餥ù9ó€ÛI¥÷çæ‹Á`Å]€•N>ûƒ–Ï}åå<"€Kí@Ø >RCbž©tŸÚ¶þ¢z11x(–gŒ£šQÚº{䘶P(ê……ÒxPí0è¤;Ó‘„6•"ÆÈÕ"Æ›LÖ9¶Üfþ‚­üö•3é$F[¬þ¥Å<Ø(I²'Füœ‹~wËý8£Ä4’CqÅÏy½*u÷Ȥ—æç:Ý 31Î2cj|f‰ˆˆ:riæi:ž®}®ìè(\ë}ØÁyX ó< é ;fÌÜÌeTÆD¿+æ-–(7¾æÉÕ6Y3³µ[wLÉÌt¡Ó½Î‡- uq-¦$ŠºYLˆÙBa©|§»$gr¥÷ëL(ÊBa ?5ˆ<ÀÄÈv`ÀšKu¸†¢¤ôöz½^_Tå]¡ãAÑï: ȤMõûâŽzi‰M]w$À˜é/ÈT÷™z$i½Àƒ$Éì0–3Xí}“ŠŸç§úÍ·sJ¯/ªš'pˆƒÕ¨ÏU¹_™ì³×.?Zj<[»~°‰È×w·óV'9|Z î?ú„øµ2–K¯˜ç!’Í"'Nœ8xð –]ßÅO¾pìÁÛwб˜ ¢•§Žnª(=;ÞIR§lÿŸÒ£á›[>}ttttt9Kažìb.Hž±€O—ÀÆàÙ«á Ø$ÉÞ79Û×¶Ò\ó³ÃhVDÐ^›\Ïã»ßý.ÚpWó¢°œ8q¢ås_~ùeD–ÚL¶ãàÁƒhÀÝmö¡ShØþ6ó·(ŸÏ' D–óAµ|î›o¾Ixªà’üÞb=¸l!ò°Öó@ä`d;yX ëy"°2Ð$]/&Â'œ(®.®ápb‘ŸóxÚµR¸®gÇ<¯ÉXVoÓ-d[®ç†Î­¾¡Þéõ ßL…‘À¶ƒy°!åýÒòsó«;¡-ÍÏQOw»exv¶îF¯-ûǦRŠŸódd¼í]ïF;u±¼X“÷(N§Ó¢þëï… ˆ<í¨fëîéâ\››;Öêzv:F=ݶŠ^\dGŒøÉñm8Q4gMŠÍuÿ%¯–PN0”¯¸ZŸš†Ø™Ee̼ÿ\u9õ"ãëD"ìõz+ò@J‡T¤s 3ƒ ¬yû°IXÏÀR-¯ç—oè!Çòù©é\pØE”Ë$åžãU‹æÆÅ4y`¤g.‹Œ»g‡]Ý=òT>?7¿Ô×g§¥ùÔ9˜ñ IDAT94m:rIÒÒüõDíõ2K…" ¸Eª ºd]ÏŽŠiI­îî¶n§,I®¡“#dÚ®f9ë|VfêÅSñùÁC±Øt®¯¹êŒ¥ÙÅwÉȸûdi'ÜRÊ´/ªÖ,°úöñ#¹™Oçž¿€Èà’e>0àÍõšö``*ª&3¹a—KvI2÷ôºžÍ$‰¨Óátti …¢î´9:‰òÚÜ|1\œŽåc¤frCNgq~Nëì·Õì×£>•ˆxyûÙÚ%—Ž :ŽOí›ËØP9œûûƒ6"G'‘–Ìd‡œI±9:‰´ºý<™Lf²CN'­Ó°öË~ìæów~¦åsÿã׿8“Nb´À:˜ç­pºýœS2“Õ³™¤ÜÓm«×…G}Q•1Ò ‹ÆYZa‘r™¤RB]œ'ã3K´XÐjï/˹_I)åkéõJ–$×Ðñ.ÎY~ªßçky.j»Êi†Öñ‰»Øxl´¦a/{o¹‚µüº‚I„yÖg;аÑÚ ÆÔÌx&èï³WæîpÈT1§rÍYrO·3Ø Òææg2ÉòHJÍ0çÀ€Ì˜ŸYªW2Iö¾ÉÙYÅωh3sQÛUÎ:a‡^œQbÉ¡¸âç¼îq²££‰†Åäf"&!ò°Öó€–²"RUµf²¢üŒ.Tž%÷tÛ%Éé0–ŸšRkô°&¶`4Ôŵ˜’(êõJ.•?4âç\tØ"Ð!Z(,QnF‡¿¿Ÿ—þSô‰ˆì¾áð¹Ðäÿý¼ç¹ÿ+Oéæªÿ&±ú<"«á h’$]ÛùÞÎ,¾úâ‹¿z¿ûZñæï_ÌÒ{?·‡]{Ç#ÿû޶^Ntê×Ó…Tôñ ß>¾·Ýü†¢Iz·¸Á–cØ"_}Îøú=ßîN"ÒI,ÔAï ~íûA#7²RµÍmAä`#Û°šô¶]W?óÊë?ùéïn»æí’¤ë?ûÑ3tã½×TôÇ";rf‘•£‡_™“%â__|ïßq_kdM>úÏÛ›èÈ+J}¿þ›“ßylú׌UÆ+´¿êkSØqÿ75Æ}*J¥jW•󮦪T¾÷ÿNO}›Œû­¬d­šÃæ-¯lb SÌó¸$Ù´lÀ;ÞsãuÄŸüÑKDDôÒó®su¾£ò¨WŸzàôk7ìÿì§®¥3O=uA$K{õÅEDôÛŸ¾ø½þÌ?ÿ\×ËY“÷Ô ;~ûËß‘kŸèª+J.uüM¿Nû?þðÔБÿõ¥G>ÛL§.Iïö)_”97â€ÖÊ10vö© ûÄYÕ•¬Ysh‹®·üID–ó<ÐÐ$IºvŸg?]¸pˆ^½pæÚª A×öR–ˆ:þlï;¯"¢_þòwºþ¶«;ˆèõŸüôwºþê¿Lÿš1ÆÎ¾ôéúë ?y媫¯©Ù—?ý@èñ±'_w}ñKÁw×+yµãÿÖìï6½k|Ëåp~Û'?yS½J6¨9l6çÁõ–_Èy ó;ÁÞ}2ç”}þçúÏ^ÊÞpã×ÔëŸ~`BcŒ^+¾aœõZñ ºðRö†ýŸýÔÕœ_˜ý=ýú7¯íß»·v_þñ‡Ë×Òë•,IïöÝ{àjÎÙâ“ß~ ôÏù{ôv•Sûöë¿ —0çÁ1ÃÀb˜ç­õÐ{]¤ýøìKOÑ×ǾtUõÄÕW]GüµŠÙ ¦³®s}n¯çÏ\ÓOe³ g;.¸öÝQw\ã¦[?zƒöìÙsgïx—ûÚ:%“tUïgéýùÌÝOÿ˜‰¹¨×·vkUå´4£F%u½vÍ¡ ‘Ç&æyèXI ÙØ®¿i?i?>{ÓM7Õ MĬ޳çÎþªæYb€æú›ö3öê™gÏ^{ÍÕ ®õ¶Û>·¿ƒ¿þÌÿùñoôz%—ÊÿäeÎé:ûžrxD´øÿ~K¯>UãiX#DÇÔ+§¥È¬F%×6có£-ÈyX ëy@+öî“ù™ T{”„ˆÞî¾ï㿺ûég¿6þ¬é!‘wدæüu*Ðì½cǙӯÕ¯1úì}žýgþñìéïÍv~ÁS]²xtEÄœnøð§KÏÈ\ÿ¡×f§ÏŒ…®þË2Ÿ¾P³äOxñ±é3c¡Óü¶Oyß¿ÞÿÍêrZPóök· lÚÉgÐò¹¯¼œ'"‰ˆ|}w;ouÑ‘Ã÷ MÚèþ£Oˆ_«ŠPÃXÏC¤@0øDtxòìÛÜ©ó8¾¹åÓGGGGGG1Ú`ìÛ€ÈÀ:˜ç€ÈÀRXÏ.s˜a `5ìÛõüÍïG#Àvvêü)D; Öó€fS4ìnˆ<,íTí€îzèy@;a=¨g3+ì ˜a `5<áˆ<ÀRp€ËÖ•ø(°àWv½sÏ_Xyˆág, `1üêÀeâë,žI'%"ê”÷ýͧ?†Ø:o¾ùfÍ÷ßúÖ·¢qà2qêÔ©Ó§O£À:ÿŒ÷u¸1.ÞJIEND®B`‚PK¯9AÝ0iæÃŽÃŽ-Pictures/10000000000003160000011BD531D4FD.png‰PNG  IHDRÈÝ…ŽŠIDATxœì \MéÇßsÚK)K¨d)”dIfl Q¶ ¡ ©SÖ¤ÕV$¢P¶±Ê¢¦f,C–™Âdû+SÖÈ•sþçÞs»ÝîrîRé–çûÉqÎónÏyϹ÷üîû¾ç}_¾x²2hÓ–¸7¯_!„0\Œ(Ö· ED’õí@C€´@G€ÔðwäE%$Õ—+P§ø{Lj‡{h…?”xÒÑÑ)..®oG€Æƒð±P³ê¢°GyÔ¶c'ƒºÈ„²H"»”´P“nÜÒ „z«©« ÷ÿ& éã ÐÔºZà…î¿£õÓÛ’/´‘»Ã!GI3,ÂxÏŸ•«šó¾¥µ›mŒ6¼êôWA¹ŽqßëwrŒn½Ü‡ö~YŽKõBß–Q3¦Z­%ôN_Oi3露…>|8Cèùóç¹qèýzGgÈ’{ÇÒ.^»y¯àÕ»rE-]CcÓî½ûtlö­ÜhÀ(–””ÔQÖìF¦¶\Ù1GÈ·¹Ø†(~„™L Ý35´š­õ(ÿ­£øÇ'éÍO<3_‚ «ÕìÃÙ‡s¬×“À œ h¢!rñ›»ûŽW*Jþû7›úËHv,*@ÎQTTª« Êé&(fÝ+²‘²! jˆ c¡x›s䪵I6H"ÓkîîÇ8ÞlÔÜÅcû›è7SFŸß¿|öèî­?Ó×·w Emm £N´ï,ù‹x’ðAáN-æ’SwmQooŸL>ùÛ7óŠÞU7è:`ÔOsÌ”0Ö˜hO\fyÛ„$n­ûsFYeŸÚ»'7Óoœ½8ïdœc¥(ÉòÎCˆ¡â㋇×NÆ]ûµìLÊdV¶ä×ËKWÜ CÑ»ÇÙi;²Ó˜§úõÚ4ÿ„Ѳá&¬±P÷ίÚÄÛ^%ˆÂ¼µf'ç¼ÚìâþÐÇ}dSÃVZjŠXÅç’W9ÜývSX‰½½é#:ÐòÓ÷× ë¤£ðùåƒ?.=.èÒf¿#ÖX(ž,çHZkõÜI([Ǿ&æ6¬Ýò±üÅýÇ7?}þÀAC]sôp§^}Ì ;¶ª†Ž¼­‘§¾¡«šÒ^^Ú'¶—<™;9†›HˆKøÝ­ §m­ÊèÑTJ_ê ¹“P´6êÒ¡—`P§ÎFÔV6ý´ÜÃ!"áDÍÝû–9u„\µEaX7¿¤=MϺžûäÕ'¤ÞÒ°³¹e?«!œ>5ýU¿øÇFï?çÙÕÖúŒ˜äµ7´jõ!LqÀº¤½[¥]û÷-¡i`Úw˜ÓÌA“ÅÚaBÄñÞž8õëŸ×ïJÔ¼äBí¼F† Í1…vƒ§,¡…¶]µÜdÃÒÐï4ŒGL]Ý…6Ž^0:~ý”_õLÆ,CÈ›yJQìz¯¿Ëõl&‡wªÅÿÞ€¶( †È£„zúè9½#ê<:ŽØÙ5ùf4à=äîóÅÁpc+ÏõVžÕòQè? ?çÀSä<ȉ>/|ꕮ㺎ë¦ÜÏ~I?ûêqpó9Þ1•‹]Œ¨Š¯?>|‰,I±P@­ wŠÒFÏÒ+ÁWëÈ£á6AQq°„5^i‘­ýéìÙ³uäÐ@‘; Eë'}úPèyGö§è67 bºyþöÖ#|ÍWI'ÿºT§³GØE>K@ìmÞCê_u‹ mjÛ+h$¬\ß.€ü"wjðKJQ ‰Úñº ïßjË ?É@méP*f½x(WÀР4.ÜÉru]–G‚ ¹“P†[ÑÚˆ+¤„½x\àÍ2 qw² dÒ;hü{¿¾}à‡ÖF²uÒÉ<‡gC$éä¿]T| õÛÖ]î1kv1Gð[2£îJÿüƒf}»5åâµ÷õí€Ô(ªª¨ÔQÖ”~r™9FlPQ48ÿùûN]ä›Bé']Ý–ôá‹/=<Üé-×NÅ@ƒCÑzè°£GÖEÖ´Nrp`- 7žMZÚiz{ìØ1ÊxâÄ ®–ê…ËgSÛùÛ¤ €†ÈðáéíùóçëÛYàu¾AŸ4&êö¼¼{ÿ›>ý§={vÓš‰ÊN…v2iWGE[ZZ^¿~½Ž2ÿÆ¥ÈI¾Ý·,à5Ž„Á¬UM0X–(u.¡4¯_­@~ºs"ñð™?î<~]¡Ø¬±I˜?™s“OÝCy%o.@¢Î'5ènÖ{ýºÞÒ¦Š²°è˜M/d²ÊbåÒì¶8aa‘—ý³lžPr‡Þ!5 LÚ{…xþ(ws:Ôo×Sú‰úÇ ’Þ¢:õí𠹊ªE¤Ò $q5ÌiÙ¥²¾þq{‡7©(ºŸu|}ÝùV€Š™©[ Ñɤ]Þ½ÿÉÐ× ÎCãY éž?†ŸnB¦P»ùëP· 5ñ‡n1"¿~zy÷à·ÙžÙ‰5ÉMž)ÞQDÉ'¥‘xù¢xÇs´¨5m'ÉÿžÜúû?Và|I‚ Ö©‰Š"ÉŠÜc1;S3sŸ•*ë›Z9xø9™)±›Z©Û8+~eÜ©›/˪nc¡ý_ù¿&îN¹x#¯¨L§Çh÷›jó̽[º,³×Ù‰•­Š^7;Ÿ]bK§‹ !R3£~ü'c\»`¯“ 9‹®Š¯y'·$¦\º“ÿI¥M×Aã½æ9+ 8ƒ$¨(:ïÈ£T”ƒƒÃúu›©ÃŸÍå ¥BQÐ(óÿˆŽh ‚0¢+±ášòúúI#\•üùbÔ¼¨cÙošYŒØäoͶYZZ]l²÷ÂßÏ>þ•ÍÉèks_ûœ\b¥ÎÍ£ÿá=+ãÜÞ±(â@æS¬Ãàk׸¶çä–ä7xQÂ¥|•nNa;~d‹•]Þ4õ‘kŸÎí¿{ü‹?´ú†$óSßàμœ^û¥xÝ r½.û[õëyÿ3W ¥Q¡Þ}›½¿âÿKZ7CÔ2«¨¯Ç\æÇ¿U÷N<æ¨û2ÅÙ=nÁt&yëÛ¬|ßÄÐcåÊ ©Z=Oš0+±\xé³fF>&îZ5@qóx0Bq¼b¨Ï7Ž–KW:ò”è}Óº*?‰ë¶}v⤠J ˆêÈSsÛ¸grW%L’œ…8sÊÍgó Ì9&y{§Ò‹îÓÖzßP<»Œ‚Ðü2 „:wë?QABç´¤[¡¸R‰A3ñc„l@hEYЇ]ö'† _ öß@AìI¬r&,ü}Vʯñº/NN;Þ.;ÍœN4û“Þ#­Ô*¿>Ê®mp\§¾6}IwŽ¥ª/Пq&•Þ8mÆË€³g#›—?Ú?hü.×lÎë+šùîþuziå²> ÛŸ]®ÏùéÉç6wÔ¨ú‚­þÉúŒãHkQK¬µ³&ÚÿñcR>òaWÝ…ß*Ž;öo­ŒaÍúû¢´ ÜD A WÄn}CÝ«acÛªaXÛq¡(. 8.M˜Ï Úý…äÜ^ÃÚO E‰K…æ°míC*Ú’ÀA†¬Ÿz–Sãø"\ao…)(¦ÒiÖþd¦ƒa¤ñl„ÒJBȃá\ÖMëªSÙÎ$6gAâ6QI–y˜ja˜¦ÍZ´Ö­(zã-4j)$” ËÜ Eý(rF‹ÓЊG·ú,QXZøvæG´Mú‹¶â?ï`¨J -Ç8âƒG íšÞ‹·->v˜×íøì=]«,œ¦£¯ þ\á0åâÜŒÁÔÑ’ûèñ¬Q•ÃÝ© áH¨øÑí5¨ÿºPªhB,m´¬Å9uÔ¨î¨`´zçéŽOÔ/hmOVe´˜¥‹¢_}Ùq…±*‚žŠ¾rÉÜŽ¼©‚ .¹#/½5å™±·ç©üèÿ(8?ªPwQ9œfo­DÑ¡,„ d"Mé4ôW†±Z¾qœ] }#6gAΰ·¶¶U¶“UI(Éô4A€ ÔmGžO¾Ù”#K+B~]Íÿ.n·Æ©®1¼·úSðW“ª¹Îy¾Hî^T9›]S<‚3 ¶R­  a`ŠŠíL•SÚëúusÄO“ÊØ8^!¬\¦hõIÞJ©`õA”¬÷ÚȵVlÎ#·v°.ÝC¨!öêƒx2@­S“áäC:‡Ð]ŽDÊeÛ*±UÅ=ŽŠú[T£:ŽP&7™ó,PÖ-´úÚc$Eé4¸¬­>bs„:‘„¢ÓÓ»Õ © ôÈFÝJ¨-ms(¥ºy¨ô­PHm•êç%+šnd×ÙØ4mú¿ªëÔè °ÖhNZÁá-_œòF­ÂEå ÐcÁ™«m†…®º4WE}ýTxm%ÂÝ裨nÈ-öúq^Í¿<¸°#p„’¨ W 9)9tP—çñÖ·ãHê—o›È…¾Z´ác¬çŽBtú6šßÙ R¼—E¤þù|V¿fï/oåMǵK _Ç›ë¦rn_yPjþ!Ý©A”E{¶ä;]åÌ/å+O°oQxd…¨f/êx<êÉšðÌ. ûëã¯þ>ÞÓ9–7‚öšð~#ÿ˜µò\ü‚¡Fšå/ÿÍL޲óÙÉ\:] "dz?“ª"µŽ 9{-2L‰*H¸µÇµG3TRô ûRJâÔÀýbýáú d¦ÎßÈÛ‚rÐ:ΡT­P¨C º¿2Šž7ª}”ÂCÏÀœ³cëÎ58¨X§—Ó†ã"Ûê)”~Xš¾:hÈððõQåX(W3èn»<…Óag¼ç€ÏÊÕ? ÍyßÒÚÍŸH/fÉ›†Ìõ± -*ÇqùœŠâöaá¸ÞŒªµóÔg£UˆÃQÏ!Š#Ö(‹ÿýìŠ-iü2!jiõï›eôó^Ù-9 ß°ï°Ãæ/ªz¦Ã=ÝLä|•)¹&¾Šßö“},Óm¬`·c§b®ãñ¾ãBÊ[XØ»¯èY=¦Ð/äøúã‰GŽNzU¡¤ÝÚÈÌÂŽÄP:a^üö_Ylo‹D«rÆm°ÄÝ©‘IÏËÕô:[ZÛÝ"Ö. Ÿ &ÈéylFegªÜï]õ’…êÿCø†ñiUèåL!ªÀL¦†î™*2·ª}å ¶¥-­^é¹zÿÃ@cñüʦiâ`â($!CÔ ¢ð¦Þ×5°¯«Ð kŸõÖì¶’,´µu#ˆBskkãdÃ4ÐÓè9~õ'Eé|EðjM Ý5‘)²ä9óîcÞÎÖs¥­§Xgdcyäöšgù  ³³–MüÑPíãÃ3‹XÇÖaõíQ&"`V}»ò‹üŽ…ã{Ñó"¯ç—iêwâ:k¶«n}{Ôˆ½Í{èv±ž€oM¤oi“Ô•„Ò6$bÖìò[2#Ýä÷’'NðE£âtjZG>ðÒÒÚc•5SÀLŠÁõí|kdûµPWÊÉiüÑ£Ç(…ÄÒOTÌ:òá{`šÔ뀼qñÚÅúv¨Fqqq}» €:ìÈmôm€/; F48êv,P×Àƒh þAS|$ î¹xí}}» P µ4à—õŽŽŽŽ´I@B5x #¾= ¡ø^ î:zòÿŠ?“8>?bÛÆå³QW›¡©Å¬€¦âòÖ¥qgï<ûHàøùóçéiúaBy¹$ò ùåß[gÏþs7ïÍû LCW× Ód·i2çvfoÆ3±r›‰ªŒ«ÑR‰9‘M²i8*•äIÈOwN$>óÇǯ+›µ16éâDzWÜ9´nÇÉË÷ŸQÐÐlѺm»íYK—ž´±Ù„ãfGÓ7jq–$KæÛ:åļŒ {Þœiq@ \Y]KW¿“y¿aã]†tT¿p²ÌªB”Ï5,NTÉÆºÀ£·p|ù‰óƒ5`Ñ-9$r Iü}2|Óƒ óáÞ¦újož<¸¼·&æ±·\ý$³ú‘ÙT+H¨¢Hâj˜Ó²Ke}ýãö5nRQt?ëøz:(gæ‚…¸ëöcSÚ)Èÿû÷£›hû˜åø¦ÕèïEÅ(¾m)^ô7B”(#´ˆŒóç¾~.~zóÔšÀÏãwbŽúuÃÄ«(ÙåsM`¨"Ùø½åê'h’C@B §|Þµé7õk®Ïz”*¶èÔÍž³Z I~-üc_Öå›…o>+êt4ê7nø@cö—·¡ˆ@ŠºÝ{MœõƒƲã8âi°ám¹!ÉOy§·^úëþÇŠª_ü²I%Ê·¢+‡²®\ÿïÕgEíŽÆý'ïßð áêšúÆjï¼|û Ó26ÿóN¸äÉùOMݵE½[º,³×ى削^7;δaϨsAíš(â˜v;K‡…•2wHˆbÄŠ²<ÿçdb+ #Éç?ç±Ü"²Uý\ãÖ¶[rÚ/dfF°m'¯Ž² ,'\£e{s«±³½Gbwýi¾Æ!¡‘ù é3»þóNnIL¹t'ÿ“J›®ƒÆ{Ís4V]œ$UD’¹Çbv¦fæ>+UÖ7µrððs2Sb{Å»Š6”šõ›à8ɘ]ûvåÇ[.I~ÌŠ_wêæË²ªÛ4Ö·$rÊù¬çÜ(=!A䋜y¯4*xN¿fï/ûÿ’õÛê5P·ð°é¨P´?nkVÖæã?¬Ï<øékF@Úå Ü6Ø{`ów™?ï?_!³Ûä•Àçޠ‹fÏkWv;h×ÑÕO¶zö­òMË%ò§™›VxŸM‰œÛîê¦ÕÉ7w²zª$É¥=5I«¢b®³®Å2c!A=Øí%~ã ³ëcfbbÖËÂH›%0¬„ Z\žïÿ ýb€Ð³…”&PŠè/®m ³DhÊÜ„P m¹rÞ-"qL/¥’œ˜É 7\)è±ZWÔð ¡‘%ô™âë)7ŸÍ/0ç˜äíJ/ºO[ë}Cñìþ1 bG#1TÑ×c.óãߪ{'sÔ}™âì·à :“<¡êù«<%zß´®ÊObÆz§mŸ8)ù¸ò}C•+{$¤Nhõ>€ºr#8 7RÇ0Ro"BY¥#$f¦ßŒŒ2*C‡AzT†-¬½Ñy¦žÞÖ AåqñÄ+*«‘#;ªa˜j¯èhàûÔ$Ôw27‚½™&††"ÄZðʾ+µoƒˆ#ýŽÐTI’K{jµÂöV˜<@‹#'GºU’ó뱜_"-ë凂†*QA½¢š ¿Oÿ-x‚’:<ž_DIŒ&Q½$(Í„½ý“{Ü/súͺ-¤¾¥Ðµ(„Ö‰J,IdŸã6Qõ¿ÌÃT Ã4mÖ¢µnEÑÛÐo±N3TQìÖ7TžacÛR×´í¸PP‹&ÌçFXû“™uM©û* ¡$„ĬP»û +CçöÔÐ~R(J\*Ö= . Õ©õ.y@® I"ÿv~Úß%ßÊMÕ-û:š¨ ‰¥ÒÿNÞŠÓîºÆJ™Ú›y;ü­Q”}“:wZ&: ô¡çµºÇÞVÚ;²·Wª’Pt%Bkô )¶,:öœ£NÌ‘™lþaoÏz©²]B¨J5g9¦Fï·`í㔋¸ÄÉ¥=5IÛ|Õ—­×Tª^,<×%O-ü7÷þýœkG÷^ø¯äRDÌ 3]¯EÌ~ûfÁ=rÍ’bD ­õ¦’¸s—½@yÇcvž½šûôÕ‡2Ä©§›¢RJ™ÁgºÚ#lm#ª¢ŸDH¼„b¨¢tö¶òÔÍØ[êÇj•„êÊÞb˜:b]SBlYô/]sÎQw±ñ:$T#„¡Kž¯©‰¯—]0 ‡·ïnÊÑñe⮣ðõCiÎÍGÈD¢çá˜N]cï¥ö0w@knk-ôѨ;WkÈ0#´ý1:S„f h¨ÎlÑSˆëèÛö#o\Ê‘È&ìçve†y²ºÌ¢Bwšo Â^ßý”*y­ I÷ß< ”u ­~„ö ¥žýz],©¿Áöæl#t¿ÒnÝ ¹¿üøsÒÏe” im,‰ó7Ø/ÇYÍ¥"¼b/á¸G\ÒøŽM±·¶¶Î¸èÔ$,ÊçÑ¥ ž.í`v†*ŠÐ9ö Æ;¹lÛpÞÒ^Óál©w£¢þ–*-P‹€„j„0tÉ#V“µÏ*L:Ò€8žY>Ú§ κŽJZ½­Yú) ö6wéÛƒÚñ1SÙ‘ó9·'_r ÓpuÑ\ôK~9*îåÒ]¯Î^zª9j3|:my¸ië?¾®¦m4*Þ=ÉËÜÛÍ!„ 6TùÞÅŠÔ?‹fõkþþòVÊ¢:Ò¥&eÙ U¾{±âÄåçž}uÞþ¾µ&Y vj}çø‹£gïͰéÒ}x÷ßÝû¦ô²ºN“·&ˆ"ÿß²ŠtTÂáSÚkÂû ücÖÊsñ †i–¿ü739ÊÎg'ä”0mŒµ¥©a ¼$݈Ö.ˆ›°mt[4íYÙŽ2Î>#ÄÖy«—¿"´ícVrÖü)coÕ5Tˆ’¼Ôy¼ñ»D.Žg&-T1±‘yaðÙk‘aJTA@­=®=š¡’¢Ù—R§îZœ„U4×Måܾò ÔüCº/RYiÏöa® f|§«œù¥|剂ö- ¬¨IV@M Õaè’g£ô­êJ!‡ |Ó²‰·#ï÷NF¡ƒ…À±ÜЭ=X‡¨æò«Ÿ(0…ž+~Î>{6{ÏÒ ï+põæ-Ú™vc) ‹²Ç~¹’¹jË©2EŽ]lÇÙZ)ˆÉŽ…a‘#K·\:³bËiñsð0…Âz‡LÃŽýye÷Þ¬7_•[´2¶ìÚ_Š¡*²%wÙóÐ¥;ÇC½„º$ Écb ýBޝ?žxähàÔ¨WJÚ­Ì,ìØAýU‹ÏØYô¦ä ©Ü¢½åßé¾<}Yºëç‡8NFëùGuWÃÆf¸²FÓ–zFݦ/_2eH‡Jq¼É#bsòÖi£7 4(…y ðÛe±½-ªüùÇ™ŸqÛÄ,qwj¤GÒór5½Î–Övc·ˆ*NÂ*RvKÃ7ì;ìã°ù‹ªžépO÷kôðUrM |¿í'ûX˜2ª> Õaè’gùè$)¾ÇC,©ëK¢!âÄÏ}Ež&º ±Åùòñ¬ù@ôxÿ«S[È·ŠR5é=–ú°cjFÃf ’„Oð2a˜z‡€.¬}’|HB^¥9ªg…·è=Á¡÷æh¢ö%LÎw¨6ÈgÆ ¡®Õ˜FÏñó¨?~ûÜe«˜RaÍã32˜sfnüÆÍ\VÄ obÔšºk¢¤‘yað™ªÿv¶ž+m=%)Ž?­ˆ*¢î®¾®}]…$á;wÞC† Ó°öYoÍnÉ"ÉB[[7‚èÀäP7€„j„0tÉc%›JËHR™õp½WÞ5eœ•ÒâƒEmF´0ÒQ >”æÜzj1ˆÕ—§N’å¤G)Vï¡ã6P‘äÇ=‡ÞÛÌ4AâËv=)ðm/jÌÍ÷ÆÞ³Ù£uo¦òéåµhÖ±YºZ N™•˜µlâ†jžYÄ:¶«o¾G@B5Bºä:Œ“[•úµ+»wp1o*æn~@~À{˜ÎC§Oßßõ¶zŸ>-ØvÏΪ;vÜþD`Ìïå==•÷ð³Ÿ4¨«¬¿ÌòïSåö¼oÌX½Ççãöä¿*SnÖÞxð„ÁÚ׷G ’ã{Ñó"¯ç—iêwâ:k¶+c/) ”6 H¨FC—¼ûöY…‘Ié^öiHü¨@>Á0ܰ§áþaâÈÀÎ$¤rŸWEñ)ªvö=¹?W5û™GÕ‘— ­îNNÝêÛ ˆ–Ö«¬ÅLH…‹‹Ô¯¤€„jœˆì’7š´"~’Ð$b»ù î˜f×»¾]X\¼v±¾]€ú¡¸¸XÚ$ ¡ døþ¨G@BH H(©  5 ¡h`ÀbDÈ ¡G¸K_óÊ©¡*Yòú$?Ý9‘xøÌw¿®PlÖÆØ¤GLˆ_y…àB PÈ#Ü'¨à®µˆ„*Š$®†9-»TÖ×?nïPã&E÷³Ž¯ÿî€< €¯¨âm¬ÂµZw1kú&çAQ ÖÂÜÞ?jŽk Y’üšwrKbÊ¥;ùŸTÚt4Þkž£1½_[×÷)Î$QQï–.ˬÀõãÃGvbÕ›Š^7;Ÿ]tIVä‹Ù™š™û¬TYßÔÊÁÃÏÉL‰§z…ªaÞš'R3£~ü'c\;od¸‚À7àÚÿJ¥M €~ð‘ó3#væ\FÁGNvË9a[r@ìœ Öô²_O¹ùl~9Ç$oïTzÑ}ÚZïŠg÷Qà&WsÛ¸grW¥ïwi#±**æ:B8Zf,$èë1—ùñoÕ½9ê¾Lqv[pIžÀy¸S­*O‰Þ7­«ò“˜±ÞiÛg'NÊð Ülw„+|~h§&mP“o6jbo3¯š×XÙ_[9"Äj bíLj8„N!Ä’Pq‹Ž/ó0ÕÂ0M›µh­[Qô64Æ››|Ý´®:°Ö2#WØ[a Ån}CUoØØ¶jÖv\(Š (Ž‹EæW†+1d»ö'3ªæIãÙ¥!”„ðKà ò H¨FŒZhÜ$‘;?íï’Çïå¦ê–} MT4RIT —v¬¥5èýŽìeIÇI[ΰ·¶¶U)N"Tõ6ùbû¿ú"”…Ъ®‚ÒÙ[SΑB\ ÅyÊPw`¶]Ù[ S§¶8.$ \A@> թɨB¹EÏQ^!Þƒ4ÈÓ£†G—¡n¿\بGýX$Óm‡­%gFÆäz95€‚¸}wSŽŽÇ(w…¯Jsn>B&¦â“ÕjòÎóÅž¦£JA(:=½]˜wnKœ9Îü6ç‡RÈa?ÅiÙÄÛ‘÷{'£ÐÁÂ?àBshÄඉ XâîÔH¤çåjz-­íÆn©o§äÉß_Ãú…_<ñÈÑÀ©Q¯*”´[™Yرƒ”Ý’Ãð ûû8lþ¢ªg:ÜÓ}ÁDÎç¾}VadRº—}Â%÷*Ìk€ßþ+‹ím¹ÂäPŒZà˜*ÿ¿€ÐBL}áRåÓ«ËNù=nóÇ b¨÷÷ôô•C,©ëK¢!â®Â}Ež^º ±Å–„9È ‚yQsD‰ÚÇ0¼­çJ[OI2Diô?ú°cê}]ûº Kb4iE¼ðFk¾šç=Ôšºk"_py$T#D¶Q 4”©GU mßeõ̼G³·áÔOÉþŠ0¡^g¥´ø`Q›-Œtˆ¥9·žZ b©bu’,(' *ßëæ»L¼ T¢r$$T#D¶Q 4+ŽåÇ Ržâ˱lOŒ>†³šâ-–Â=SÏà=Lç¡‚Ó§ïïz÷UY[½OŸŽl»ggÕ;n"0±ïå‰Êx6Bdµ@SïnÅææóCg*s2ÄT½Â› zOƒT¿ùùÕÁ0ܰ§áaâv&!•û¼*JPQ‰ÊPF-ЈX`9¡Ó¨}¸&ôâH(@ˆÒ'Éî' ByìZíúöäP€Hò³ƒ'¦ÕeÌò5s[@° pÕ…‡aªðÚ0ð @j@BÀ·£âòÖ¥qgï<ûHà¸Ìmüôª¦ÐEP¿€„@Ná.}MHYÛ°Ç`'oß‘†5{'´.òl¸Pµ!á3˜wr*¡ Q0ˆ¹žy¢aÊš­:tàè3Û®•¼\f™B‡WV×ÒÕïdÞoØx—!Å;¿.ðè-_~âü` )Ö½‘ÙO î €\C=HâSÁy¯™QÑ3žšgD¶•Ï<(’«($zUQp ë™­âóëÜ.?]wYÃî¼èiWäŒóç¾~.~zóÔšÀÏãwbŽúu§ÈcokK?õH(ä W7°]‡¢\Qv0B‰H Q„õ &¿æÜ’˜réNþ'•6]÷šçh̰‘dyVä‹Ù™š™û¬TYßÔÊÁÃÏÉL©2Ïü_w§\¼‘WT¦Óc´{€M+ÈûÉvœþ3÷Y ¦Ó¹Ï°‘Nǘk3ÙE-ÄO™HˆT*JZëYx4EÕææó(A‚ˆ„XŠ©2É÷—¶oO»õ²¬J…ЧÀ'æx¥½:ÜzÛÆ£ ªÓ¡ŸkܺÓvKNû…ÌÌÖb(Ž•{¥‡j¾]eXN¸FËöæVcg{0ä¹ÖÌRU¨Ÿ5¼%  @CEÍmãžÉ]uØË~=åæ³ù擼½SéE÷ik½o(žÝ?F¡Fys™ÿVÝ;ñ˜£îËg÷¸WÐ™ä ¬¯Í¯é³fF>&îZ5@qóx0Bq >¬ñŽ»€ðŸâ’]:*½y|óÒѹÈü;CÑ‚~ŠÊDrêTEII|~ýÏFÖžÑ ÚÂP™e»#R*Ô½wphù2u’{\)oV!\7K{u¸Ý‘Ö fˆÐ”¹ ¡@†â„f{å¼[Dâ˜^J%91“n¸RÐ;cµ.óépšaÍo @@B5Bjw´ô²7tbo‹]5OÎ!‰Ògç±özóÚ×MëªSycÇm,¢~Ü/ó0ÕÂ0M›µh­[Qô64Æ»&yÆn}Cå6¶­†µŠâŠãbÑ„ùT浩 %ƒØŸ,=Ë©qÌ> o¹ Ù­-¯uýZTšÝÏiÑi†¼ê'$ñc{4B)E§§‹Ì+yžC:Ç~0vgå²mùÅG(“{,·&Ž!{G>-*|raÉꇖ®óÌXÊ`g(ZQ™HHݵ1Kž³bCë Ø¸a¾E‹Ê.x(cCeCè,åpÀJg”–‘¤2+Õ=Þ ®ŽtÜgm­æŠ-ޝØK8î—4¾cSEì­­­3^9Ä‹át˜©3Äê»CT§»ä£jkÐ Ç3ËGû´1a‹%-ÞÖ,ý{›»ôíAíø˜©ìÈùáÛ“/¹îÝ‚mEÞ­)ÕK’Éiƒç¨}ó“¨}¼¦D$ÜÚãÚ£*)z})%qjàþšä9×Måܾò ÔüCº/Rƒ(‹öl:hö¢ŽÇ£ž¬ Ïì²°¿>þêï“á=c|˜¾áÄÜqVÝ MZh"t!:Qv†¢•‰$ÈO=†™n4DnGü =6é1]PßiÊgTðVg„ãä–G¥~íÊî\Ì$ÃÕéJ¹8žý™´Pe’AÄÖy«—¿"´ícVjŠ-Ž2öV]CU(ÉK­¶8<Ãéð"ègMn‰ï²âΡu;N^¾ÿü‹‚†f‹ÖmÛmßN‰Ðª1#t‚¨NwÉûÎ¥tÔ.× ø>§eoGÞïŒB ù€cŠz^ê·b^´þ¹BÏî_Uï%ÁL6òn›˜€%îNôHz^®¦×ÙÒÚnì–æ©ì–†oØwØÇaóU=Óážî &rªTÁnÇNÅ„]Çã}Ç…”·°°w_ѓч˜¡äÄ¥k²¾#µÚöéീÙÎP´ ¢2‹üè'šÖÌóÝœ9 Ô •©üӑ僷mŸa¿…^÷í³ #“Ò½ìÓ W'Ìk€ßþ+‹ím‘躲±®¬Ñ´¥žQ·éË—LÒ¡²ÍIò2x“GÄæä­ÓFoÂ¥8^ý”ù–øžÉ™¹`g!îºýØ”vÊòÿþýè&±I@B5Z„ŽB`èt—¼ï\ªA'@­c‰P‰†ˆ“=Sôxzè*Ä[]š&üWîÓ&=¥¼ûLͺsµ†0<àƒ0 ogë¹ÒÖ³VóTïëØWÄ,Emm<‚l<$ôA»§£7õ'±¡hA?EeR‹0‹-¡3BÉ-¦³‰k`¨Lê·Û`ßõƒ}9‡¼ƒÜ1£I+â' -K†«£51t×DI—¼8¾„¸™ËŠxᙈ>ÞLýü·Dã#ìu1E»&Š8¦ÝÎÒaá^Ú.b@ kÚP¡o†NwÉûÎ¥tÔ:㬔,j3¢…‘Žñ¡4çÖS‹A¬¾ .’ƒ÷0‡ NŸ¾¿ëÝWemõ>}:Z°ížUwì¸ý‰À$™ÂÀb²ú¡_JÛNm^×Þ4GN.Ž8t«$ç×c9¿²fÒ²^~(h¨ðI%èiG@B}_0tºK> .’ƒa¸aOÃ9üÃÄ‘IHå>¯Šª¨°¦#}ÍÐð·]@EÁÂs]òÔÂsïßϹvtï…ÿJ.ED ¡ÁB#ÓÓŽ€„j„0|¡0tºK>@ÂA'ЀÀ0u½.–Ôß`{ó ¶‹º/*&=íH(¾w\‚¦±¶45l¡—äýÃ2µãL™!8 …žv$ß;ýU‹ÏØYô¦ä ©Ü¢½åßé¾ô¢=B´ÐÓŽ€„à{gî²U¢‚„ haM; @j@BT!j% áR[×´Öï ¸Ù: ¡S–¬jê.áó[ðaϵðN. ¼I)köìäí;ÒPØT½$ùzÎ0ç‡8NFG.Ä5—`:_¹Õ%uí?1à`F0wqô*ØÆå¼NËýž €œ"Ã’U€´H®¢DÁM.J"ˆ²S’øTpÞkfTôŒ§æ‘m…äþÂÿ!{;èÿíjUOkJ­«:‘5™³~#akM’üÍ#1.¯ÔPÈ)¢–¬¢!¯Ž² ,'\£e{s«±³½GÐÍÕVLSÔjÝŬ雜E%X s{ÿ¨98_B¹EÏQ^!Þƒš´pä×¼“[S.ÝÉÿ¤Ò¦ë ñ^óJA ü'~ÍU”Ì`¸ºí:劲ƒJŒP°ð)uhx)~Œ¯xº°íçÈ,>Y&Ø$&ªÙŒ@JÍŒúMðœdL‹ ÖJg;S3sŸ•*ë›Z9xø9™)‰¸Ä¼y ¶½qËzg uLpÍ5±žðù/È(ô.<¼xÈŠfÔ~qxø{4 Ggy#HòÁ,ET*’ü˜¿2îÔÍ—eUJ­òŒÿÇ$ wÈm;<ðµdÍ•ón‰cz(•äÄL^¸áJAïŒÕºÜPýà# ægF:í*̹Œ‚œì–1r妊ۯ9Uë©ÍN8dáÖyï‹<$“Œ*•.A©v¡Ë™Ñ(O‰Þ7­«ò“˜±ÞiÛg'NÊ`-M¯t¦îxÌQ÷eг{Ü‚+èLò„ª'£¨KÌÍ¿âV¬óÏÇß!=nÐ;“Á1±žõ_…+5ÓB<L¶B™žQÓ• ߇U“PÌQ¥ˆJU¾obè±re„Ô ­ž'M˜•X^uFßÁÇ$T#„gœ¦¬ÙªC÷Ž>³íZÕþm*Vë/LJûý¯Ü§o*ð&Úºí:™¬ œ[ëžæ%«úN¦wšu[H݆èZBë¸iWö×V@Ží¢öƒXûã1"¡SUI¨P'C5 k;.Å|Ù‹¦/äs ncÂñe¦Z¦i³­u+ŠÞ†ÆTÍá¿nZWïi±mi‡=‰…$JŸ_ÄÚë,$øîÂw8ŽZFwÄÚF·@³Þ¼[x¥vå _¼Lk2£.i<¡4„’b‰z¥³°±m¹wBq\,š0Ÿ›ŠùWü?‰¥Ÿ´'nÚÃ52ß™¢ë‰Pÿ…`µýä²úm2 y‹~> ¡-¬qŸ_çntùùèºËvç]¿±$ùÏFg¿Sï:Í\µ>°§¾ù¾èáÍÌ”„ÄH(9ü5 Ô KV‘yÇcvž½šûôÕ‡2ÄYðñ&oÚv¬‰[4èýŽìU‰HœŠGòÆ1«öÿê<ŸgØÛ[Ûˆ*ÛI„ªž& üÀEÂ`¿XM sPÔjká0ßÇ×@0ÂMÿáXAí£õÑôÂþ7QšEe8çùE’„$ÅÑÒ ÃÔkd' ½Ò™)' }'PçX%\.ñ×» Sý’Þ"ÕQky™qº±ÄÞ™¢ë‰PÿÁ0Ýð¹Ê¶›=(í£›¿¨ê™÷t_0Q¢Çb!ûÆ»5qxÇB—Åpg2;&³'R!Û‡!•’kRàû øm?ÙÇò5ú Õˆ¡>¢žf­Ÿ‘uiååû-YF†ÎéÈyçÄf…þÌÚWnßo¬çJϘ“0Ó¡L„ dRéÀà é†2ß KVáf.+â]„ñ>œD틲ð1 ogë¹ÒÖ“9Ú÷€$µ'ªN$É‹}F†}u ¦µ‘›3š´"~’Є‚Ë™ñWý³V:ë+l¤(³Û¢NáÎdvLrO$¯gA»„ÉSa˜†µÏzkv{IÚÚºD‡Ê Æÿñ Õ˜Qlbh7Ì·hqBÙe cèœnâ²wtqáÓ¢Â'–¬>qhé:Ï Ö»2÷gϳD™Ù(â>úÅDH¨ CycVbÖ²‰?ª}|x†ýr¥uX}{$#×þW*mP 3ÝhˆÜ ŽøzlÒcꜞ¾áÄÜqVÝ MZh"t!:†$Ì]ûMW¯8zÙï>‹OÄü<̤¥ò§ÿñ†2 e Æ÷¢çE^Ï/ÓÔï2ÄuÖlW]ñiä’Ú©I›$Tã§õ3ä|7gÎ(u CçtÌPò@âÒ5Ùß‘Zm{tðZ@Û’0wícøAG£OîJJ‹ðˆ}ñEA½ic‹.Ý8o½2 e€º¦Ñô#@½ÓÒÚc•µˆIª; ¡!|LgSÕÑÓÚ=½©?;CÁ®}þ´êÝ|¨?aA¢‡2Àã @BH H(©  5 ¡¤$ÐÈ•7º$rJÕ"ERÖ6ì1ØÉÛw¤¡¬K–2?Dk·¬†uÖª ÁÚãZVo±µM~ºs"ñð™?î<~]¡Ø¬±I˜?©Š«-hŸ‰3‚[p¯‚m\þ`MËâìû$r õp"‰Oç½fFEÏxjžÙ¶q”%'H®¢DÁM.J¤Š²‹­m’¸æ´ìRY_ÿ¸½C›TÝÏ:¾¾&®Ö™³~#a«=’üÍ#ÁÄvß3 ¡w0\ÝÀvŠrEÙÁ%"ÖÓ«"÷XÌÎÔÌÜg¥Êú¦V~NfJôƒí~ò†§ÿÌ}V‚étî3l¤ÓÄ1æÚÜf±:‚eñµ²°ü¢K§Èÿ5qwÊÅyEe:=F»øØ´"ɯy'·$¦\º“ÿI¥M×Aã½æ9+Šö–É.ºh!~ŠÈ„š«(™¬m^Þ-]–YëLJìÄ:A½nv>»¸¡äÕQ¶åk´lon5v¶÷CÑ—€¶sZ’R3£~ü'ÓJHäÕdz^&îZ5@qóx0Bq_O¹ùl~9Ç$oïTzÑ}ÚZïŠg÷Qå-ƒ¡hA?Ee"H=ª(b®³Úx– ½rÞ-"qL/¥’œ˜É 7\)豚µ´ˆÐK@'Qž½oZWå'1c½Ó¶ÏNœ”ÁšS›áê²p¥fZˆçïÉV(Óó"jºráû°jJ”W 0¤*ß71ôX¹²GBê„VÏ“&ÌJ,çf%ÖmÞ;¨#@B5BxÆ`Êš­:tàè3Û®|¾;boGúö¨o/j’(}vž½‚i¯`Ú»õ Âñ°±mÕ0¬í¸PP‹&̧‚ž²ÂµÛ~ñßÛ¶†L\2 †eѬ›ÖU§²e‚¡ômkRAK±[ô,§²Þq‹(ã2S- Ó´Y‹ÖºEoCc¼¼eg(ZÐÏV… Ò{‹¨Ú¦¹ÂÞŠPP¨_àdz§Y·…”6F×¢¨³G".Íڟ̨Ê!g#”†PB,Ãpu„`µýä²úm2 y‹~¿ÎÝèòóÑu—5ìλַG@í@ #ÖÞD[Õ¤³®£¥–ª”_” KZÑmE­¶ó}| hc:{kʉbÆÞžGˆ¥$"ç œ›ú3ëY¢Ü¾ßXÏ•ž?oQ°,žJf(ý4ûÀªz¶gØÛ[Ûˆ*ÛI„¼¼eg(ZÐOÉ«BÂ&(Ááä5¡¶iú"”…Ð꤂ȼã1;Ï^Í}úêC¥$ض›tÐK@Ó•½Å0uj‹ãmd¸:‚`˜nø\eÛÍ”öQž¦[ý£Çàƒ ©èê6ç¤îΛ•X·M@?Õ= ¡3˜¢jsóye "!–„’°ûSÔjÝŬ雜E%X s{ÿ¨981CÝŸ8̧_”qÞŽç©ó°oΖ I]!ù @r(Dćâ÷×3‡|6_m%©Dhˆ}ºEèBw9O•\¶s7q Ù;º¸ðiQá“ KVŸ8´tgÆRÁ$/KªÒG#t¡Lîq¥‘úF§§w¸ùEy+ÊÎP´ VE}uá‰-wžʺ…V?B{Œøƒ"¼b/á¸G\ÒøŽM±·¶¶Îxå`!¡—€öåÃpu„‚;ní´Ù#uJpàIÎàƒ ©†³¥Ò=ŽŠú»&nuH¨Æ I|~ýÏFÖžÑ Ú"¶û\?øH‚ù™‘N» s.£à#'»eŒœ°-9 vNÆ<$r†É¦öhúÓ¨_[WCϽ¥¾ 7S¿*NJ1È Ç5›7{QÇãQOÖ„gvYØ_õ÷ÉðžÎ±^‹ S¢ níqíÑ •=Ⱦ”’85p?ƒ·¢ì E "*^äpí5áýFþ1kå¹øC4Ë_þ›™e糓 *cGP×PU JòRçñ¦z Ja¸:BÁ°ñBƒ¼b€!•ït•3¿”¯Ü¸ðŸROÎ`Ó1Ѝht—ú*j Õj[ЮN’å¤ûmgQ©f%f-›ø£¡ÚLJgد.Z‡Õ·G@ ¡9fºÑ¹ñ/ôؤWÓîs†qøÌè@ôý¹…Îà´9Co}{›Ä0Mmµ.;¬´äÔvßíNž{²úÔçR‚%†¸]u‚vÏΪ;vÜþD`Ô¾¨TÈÆ÷¢çE^Ï/ÓÔï2ÄuÖlW]ñi€oH¨ÆOë fÈùnΜ?PêÀvŸ3ŒÃÀ°1*ÑËËR‰]Ùæ½õu(•ƒ©ê88ê8Ä´Ø™„ˆN€üÐÒÚc•µ‡øx@}ªÂ׎élâ$ì>µÏ<䇴 ¾x @ƒ$€Ô€„PR @j@Bˆžëf,l舺Žp}Ù Õ°ñ»Xß.@B’¯ç s~ˆãatäB\óo2Gë÷ó@¥ÎTÂÓ¬®…w…rIàMBHYÛ°Ç`'oß‘†Â..ùéΉÄÃgþ¸óøu…b³6Æ&=bBü¤*®Ž Op0#¸×ø*ØÆåÖÃF:Mc®Íd'¿æÜ’˜réNþ'•6]÷šçh¬È~ò‰jDá}ðóî“dE©™¹ÏJ•õM­<üœÌ”²"R3£~ü'c ŽÉ5WQ2ƒáê¶ëP”+ÊF(‘/ôÝÒe™¸~|øÈN¬:TÑëf糋b¸ A\ȲëÑN‹Ï|ÆÍ|öl«WýúмU…Þ…‡YÑŒÚ/Fáèlµ‚®Ž² ,'\£e{s«±³½GŠ»UþßÞ™ÀÕ”þü9§º¥H‘½’Òˆ4HfÄ•Œ¡¬EˆA-ÔØK*²Õ”ˆa,3FY²dɵŒf˜ùÛgBc~Yjl‘¥Õ9ÿ»¹Ýî=ç¹Kûõ}¿¼®sŸåû,çÞ{>=ç9ß/¦M¿ËJZžxìú³²J¥&·ÛRŸp5þ{ šD-˜©lP4Ph:7¨€wi;&"xsà›‚ \:ÕBpUX3'ñ "¿MLó4×zyÿú…Èf7&ýñ)~ŸñiÉ–ÅçgL^;çªæÉ½#4Äm5™²þ‡ Ý µ*/9lWš=ç%½Ò“rpdëg‡=f$]F'ÒÆUþ–r&Æí™Üó ~ÔœŒäY)ã¹Þ˜Ž5êQEaˆ¿Â_ÔYÚ™! säž ºâF¾~ê¸g«ô¦܊$ÁË›eDøüš6]ô9š/~³¢Š„ºœ9%*eD/c­¢ìø Á±—õæ®®ŒÐÂøQÁÔ*ßãy°œã½-}\›ÿRÇÍL)W¼Û’Ÿp ¦ @CåNðk’D­âÌ “8#4óåëà;(½?'ÿb`VòôÉ+SËþî‹û k°¥'®/@$¹Ô»«>A4sZ‹ÖN)ˆÛ‚FÌ7µnr7CÅ6Z%l~É3µb”I‚0‰&& qóÄÖ~kÍ3Ewž…PB©yc:Ö¸PvÛ“\hªøq¦ zn¯pÙÜË‚W&…; rOÐÖ ß~M~¹pߪ¡-e-Ëý¨Ta@òÈ3bõ«4ñ }ùÓ4©j¾}èáA‹îÁ\þ_äléÃ:ŒPÜéÓÝ«}!qDèBwDW°Û‚´*b‚dj‚­c úº…'·Ý@[”u­þý`!…9 rOPÊ&w¿ý~¾=Ò¶¸Ê.Ì(ûQ!Gn¶Üè}Yns“ÞIå›p$½Sǘ7×$^¹¸xU‹0~T0µ†¤Ò]‘Šú³:ÝjP4HÎ…Uðþ0?›h(L(œíäñOEØ9”鈦Æ = »©•Q³|„Ž ¤-,Öî»ÐôpÌ£ÛnüàÕ£**øçÚ…Ã)“B÷2¶Ü¢n“äµÚV‡áj0EûÔžò°ô‡ûÜZ?Mã¥Ìò“;¶ŽÕ; p ”ƒ5+퇅þ:sù©¤ G‹fåÏþ¾˜3Ôo;ž¹'ˆ´šõSÔ‹‘!ñã£Úé#µÓ\© â¯!uJâr³Ê¯ºz:Tѽô@G©å?UûÄîòåGýèj”¿Yuº Ô ¡Ôúý#Ûžþí¯ûÏJtZuêÞoèØé®=tᯠÑp,ŠB$i³¶ò±5ƒµ6hl6u 9ºÆ;Ò?¦,Ys-÷5­oÒk˜›o° [:é’²HÙ™íú_y“öŸÙ9 µ‰­é¾ýçî½¼ÈÕ1) Δ´d잟ýÜ6–ê´ï:ÄgF»üR¶ŽÕ/ Y?ñ 4ì#}(eÿÐI1Ï+´ ÚZXÛda΂"'ˆÓwé¾…/ÆÅ„L4IIj*™¥ÔGOøï¨i›'ß@*áêSKË+5ôMXÒ–o]¤³j°Û€â€„RCè—— ùµbÐ’¤í;龿ÿËFßÕÁǯ®:þ¥¨( qàÊåºVM!ô׋¯ø=GÎáý“©Å–NdGŸå.>² ÉÊ}÷Èî¬eB·¯Wh_/†>K™’|ËֱƣW'¹)Ê–”…Ðë9&÷O&ý,(x‚šý>s(C:æ£ÂfŠ-´ö\–ä©Huk„žƒß÷‚55šÎwq™BQäv» åF H(5äuHÈ¥ Ò89Ô¹_0q,œC“wÿ2󷥡¯¹«ùÓWqIÂ1êùoÄœME~Gr."ëȨmf¦d-uÿҴɻ܂'VÔw>i@B©!›ÿ¿ w‰™D’لЉUî`m2kÛÏ£[?K?#q¥GÓãS9Hç"lŽL€Ú&ªóݸÀè+Ëšuè2Økæ,¯ÖòëµH(5äŠàÕ¼JZ'‰‘cMÅ~SJw% ©ÁHç"lŽL€Ú¦•ƒ÷*øÕm(€„RCì:‡Ð¿Uœ©Üÿ˜S‰u•ÿÏ Ä—Pr‹0:2€O PjÈœÞèÜu´æÚÙécÒƒÕüW»Ù’Ån#ÔCô?'a¢\ç"ŒŽLàS$”Ò|ÕŠ>ß,û}V7)` ™îû¿l˜õˆ"íW®j.YlÙÁ‡ûG‹ü¦p&ú Us."S ÿÔPj¡Ù/êPô‘íÓ–N‰yQÆiifã3íWUÅI3\“¥ÙÒÆm^ätŽ0œ‹€"€„RO=Û‘¼¸2ŒËBŠ;‘|‹Ébk!ÑÉÊV @#n 5|–1Q f*[$ ”ê\ÞàÒ¨¼YRpŠdçSœ"étW$«Pâ˜ö4vŽÿ0S™GU0*Õbm#ìÕÿ'n¸‘8ñy¸“ç¯ü0, ­·………ÊV õ)_i QàDqņÜGØÒy)4õþQ¦ïô˜¸iy6Üh“êt£þ¹8ó}`°(ÌÃ9ï‹|Ç€z €F†ä%™ÎI‹Ýzü·Û‹ÃÏú8ë>ÂÆ@¼ÈQ¥¤JÁ‹¬…³°«¾ŠR‚Ô5vY‡b¼Ðµp„R”ª‹95üÜß¿q -§(R¯•™Í€Q³æ|m*7o.lOθñ¬LZàTó\ƒ^¯\Y8xY ÞqáÊ•oÐ7$:YÅ>K—ð±³Øò.+iyâ±ë’Qê£Î6@q@BЈY3'ñ "¿MLó4×zyÿú…Èf·øV‘äBµàErk5™²þ‡ Ý µ·¿´zTQ*ƒ?5—3§D¥Œèe¬U”?!8öò£ÞÜÕüX(e;=¢WèÎÙqÄ­• ¼U±‚‘¼s¼¼YF„Ï/¡iÐEŸó¨ùòà7+ªH(¶. a‹ÅV«|{äÁrŽ÷¶ôqmþK73¥¼¦(H(1yü³’§O^™˜Zöw_ÜŸ­¤jÁ‹äÖZ7¹›á'ãoVÙmOr¡©âÇ™‚p¹½Â•mjìC'ZtæiiôG ï\ñÞnÜSÆ«µb”‰8¼•‚‘Üs= ù ä±úUŠx…¾üišT5Ÿ­KBØbg±ÕJØYʈ‡™.A˜D)•ñOáC[g€„ øÕ섬Èïø—Ž™ý(Ÿå>_h0–T-x‘ÜZVjq)Rp JvgwuZÐÔ7±u›çço¬l£˜SCß;¿ýäï·óž¿å &AÖua ®àµ«¨¼5’ šçš Z¯ à¸lôæiNàŠÖU cº$„ñ㇩%œQíÏkp Ÿ,1ÛR•­ €FLÓ‘»†æçä?8³xõ‘}KÖùp—0–T-x‘ÜZj@}Ý«f»˜Så›p$½Sǘ7×$^¹¸x÷ 9"t¡;"Ñq[Aƒ BŽÜl¹Ñû²Üæ&½Ñ Ó%Q]¦F1µ†¤Ò]‘Šú³fòiN ø´˜{$`ô€î¦VFÍò:‚¶0½EÝ&Ék%´­Žè*¢Zð"Õj5"Ý(1˜SS&( «§£AÝK”¬àÉ9ýsEXúÃ}n¢ðVŠT‚è”Äå2faº„S˪ö‰ÝåË<úÑÕ(ÿ²š  ¡ÔpR¨’÷nd?½ñŽô)KÖ\Ë}Më›ôææ$L_áÛîÞË‹\]ĵT ^¤Þ!õ¯æÔ„oðŽÚ˜¶yòð ¤ôjöŒ}KŠ#’“§¹n’ΪÕsé’jµ´¼RCß„%mùÖ5¡NHJ}'%@#‡í/™nÐsäÞ?™2úî‘;Ü«¤¨¼HñZê £W'¹)Ê–Tª"æÔ֞˒<mDsÇ€XG¦àW*ŸkEŽéæã‡ˆžƒß÷~ücšÎwq™BQª9@Y@B©-x'%J9QÍ P{ÌLÉZêþ¥i“w¹'O5:¬¨ï}r€„R[ðNJ”rR$@mÕùn\`ô•‡eÍ:tì5s–Wkùu€$”ú‚uR¢”ãê8 jƒVÞ«¼ë»Ÿ4 ¡Ô¼“¥‡TÇ ¨% ¡ÔŒ“¥‡€øtð^q¾¾»Pê ÆI‰RŽCÀ PÛÀe»á0è‹fõݨkÎÿñF…Z ¡>Q”rH€Z%Ú¿‡øxAÂMáÛÛ.NsiÒúèéõ:•Š Ÿ• !,QX ]Q鸜¢¹Ç囜œ“$ãÒéf'§C$¹ðôé!Y1NN§HòûÓ§?'š¾éâ2Ÿ¢†s¹óð=‰vr:]µ–dIÆŽÑ%ó\\³)r#÷”~Æb¶¥JzR¶³³»rå ¾Š‚€–Å ¥†(â¤D)Ç!ª9 €êÐuEVüñ­6PÍ›ãrÌÒ鬅æ‡b¬Yy±Kp¿äó?®ìé‘0EûÔžrIÖ³üä¶Žñ‚ÍÖ±×òþ*á„u¾ÅHC ¡…$@]óU¼ 5û̾Dÿh¯ÒN;6Ç嘥S¡[·knÛq(ÉtD¹‘­ëŒe=âLI[AÆîùÙÏmc©Nû®C|f¹ËÿåÄxÁfìM_òýQÈtC?%Æhgg'yPSkQ@=BÝÙwàè¯O Kh’œµE5#ëCfñ^U®(H(@!À PÇÄg›§s\w> É᮲’\ŒÁxs–„Íq9~éÔÄÉ;ÌÉ»jyݾ^¡}½ cÝš³zÁfìXNHè ’äLÛdùQ/*²þTgšIö’,N(ŽdŠBzm;Ø8 vÐRF(W)¦Û²¥iÏžnîÝ Ê“+x™"Ì¥¡ÁiÚ¬¥q{+ûÞƒ¿h¥!¿ó'vq“ä×Ë·XéÔL@ SµH(@!À P÷èL:‘9I~1õÀj·‘Þ±_›Ù.Õl鼚*)¼¹ëðÞž}ìÝ–Í>ý¡ôíÿv§¤pOÇètr«áÔ&ÁQITiÑ‹Üó'voÛ}éïñ¡“;È[R½'x­)ýÔ* ¡………1ÛRkÁðgµ`“‚Ô1´ F‡CPn"B¬Å4´›všŒÐÿ!êB| EÓ .ï˺|åÉóMóÎý܇ôëHŠB‚¾ûûèæ_®þý®¢R…œ”˜“|‹3øðôé“ïç=-!õ[uîÛý«!=:é‹WÈä®ñÚú­º¹MžžµagÖÏ{Æ{éašã[D®Ò·»~ñ»+(Šà4o×ÞÚqЈ¯Z:†ŽÆ~2ŽH‘ó¥Þ„D'+[$@#c¾·»¡¡¡äCy5EÃ|"¦ÊÞ>ØÍ?jã+J¹úó±—¨ÿÂYËn†í8°:Oc³O_~h©™óOüNi}9§o‹7—çïÎ(“4EQ,M°ÌØœšƒÈ¾sbú¶×z[p;'k5ê´Z|;RÁdDgÞÉŠF·÷"4Ó£ÙÜk#Üæ:t4Ò,þßžmÛöì|f<½~8b 2ŽH‘Q¨7*|¡@B4> ë¾Qe·=É…¦J_]å™Ï–Û(EöžPü1²IÛÏ&/9¿tõ›+VÑ$ˆîÝâI•IÆ2»³­ºƒP>BÆüwÿVÉãß÷*© iM~­û’9ƒ:ýü¼¿,zýôù«ÿ.N½pe玫•¶æÞVþk·‰r›“âø¦}ÿd?¿èÞm›‘Ä›øÐ¤x‹ûpðÔ̈P@=R³žÁ!¨1a>¾Úùâôþ—c&¶DƒÆ¶½uèé“w§9uiŠÞ¾~r'ç·Ã}'ò—UœkÞ¹@¥ÿößLûo.m–4b‹Ð5-(un]^pn½dÆàög÷·3nÝ©i“§‚µ"ްJ[Š* Éÿ•Òµq2ˆ*/zùÏ…Œ]¯(½ã'ëÊmNŠ‚WŽŽA¿-øm‚ÑD¶Ÿl#”$”BWÜÚ·nëÑK9ÿ•jè53jkÒ1yýJ5k±M¿˜íì‘K’e±ÿL¢¬Óê’æ3-Ðêû ×Ñr[¢wÄdâào—wîÊzùcÔ¦³]·~K„Å4†Ä|]²ù—“Ë6eHû8öõþÓwn#é,ŒAÏžèò©õ§þy\‚ô :õû|¸ÈEØÈa=÷]¸u(’¿ÃmE-vÉ, m½¦-Û;Îæøe«?#˜æ¤põ}üð™ Ñ~çI%†#‰l?ÙF( H(5${zÐö|Ò+ùàÄŽœ·ÿüåÀõkQ–š—SOçç ~³H2wþS´ƒu«ð©S;Îê f§Œ^ä¦([_Œhºx^ÔÇc‚4ê=έ÷8ÙZ¡gå¶Àê£÷(É=[D»¯]ç~ÍØÆ` ÇÁ¼²éý¦ T´óŠ7'U‘ìøëÜo˜°GÒˆl?ÙFô‰£Â$”²â1ïk‡l;6Õ$ ƒŽvnÁ»$séß¿q -§(R¯•™Í€Q³æ|m‚rÜý É…ÜÌ¡ütž‡ó´—ÈpÓ™Ô.ˆºwtSÊá ·¾×n×màßÀ‘5eÖc0-ÒôE,à‹=<›²óðù«÷ Ê { Ÿ±àðšÉÂt¶Ð³4]qû`üöô‹·s:tàæ=w¬µQ­V…´ZXØ›:¾3à ӣà<Þ¨ô|5ß%Uä?B{MD]ÍI‹Ýzü·Û‹ÃÏú8ë>ÂFÅ n€ÚPþê…†éÔêpjðéÐ9„æŽ rÚÇÚÊʺ—­…A¥D¸œ9%*eD/c­¢ìø Á±—õæ®¶Ú`†¦æÅì¦\¼H=^øŠ$‘éF+‚¨8:ÅoãSÂ#>-Ù²øüŒÉkç\Õ<¹w„ô³˜?SȦ؇Ó3§Gß§†îXÕ¿ùôú¡p¿ÌLü¼=ç%½Ò“rpdëg‡=f$]F'ÒÆU~Ú9ãöLîÆy?jNFò¬”ñ\é­”4TÀÓXÍcÇDo|S”K§ZDØš9‰gùmbš§¹ÖËû×/@6»U8M@£$”²(zBaÔ¾EÙgfŸå?´¡ï²/ÌQä>Ä>TôÜl‹îÁ<‚þˆAh]»Ø^hÜÍñ^AZù Ÿ!DÚÆòƒ-$®/@$¹Ô»«>A4sZ‹ÖN)ˆÛ‚FH‡ô¨ L±-ksyY‹CšòL{»I‰rg aóK^•£Lš„ÉèH”¸ 01›'.°ö[kC‚ ;ÏB(¡TÞßÞÒ&î¿æéÈVqæ„Iœšùòuð”ÞŸ“Ç10+yú䕉©e÷Åý:+Ô¨=@B©!¶>ëÒ&åÿ};''û»Î<)º…ÃyYô½CñÛOþ~;ïùÛ².F®ó_ôW:QÃ3E¾Ÿç¿è?D!ç•wÿBŸ%Q..Q•æ"$-€0-*hSì¸àÍefà´àµ«èµà5“÷[*. ÐBü𱈿ՉÁŸÊõùoy9ƱüÇ¢Íâ: ©ùoç_G|tÑ_ÍNÈŠüŽß7Ž™ý(Ÿå>_€K@}˜<´w}wêšóœW¡H(õ„'Úw±ãýäjsÆe‘Ø[”oÂ’ôNLcÞ\“xåââ!ÔQ¡³`"â0ç¼$ÏùÚ‚›VÃ:ŒPÜéÓÝå=ÆÖ¢‚0ÅxY‡ºˆÐÆšL8"tJàæsþ»Û‚´*µIlghúRH)w×/—Êj¥!—è {‚h:2b×ðÂü¼‚üg¯>²oÉ:.ó£4ÐH©×çÐè ¥†x†m›<ÂÁ®«©‘YtOà·c˜0K,JWOGƒ*º—(Y‹œ„~ŒË ȧ(BGÒ–‘Úž… 4v@B©!ýtþ=•ÄÝ^𲨔æ™ÙðŸêo%Ì ßàµ1móäád\ŒĈ(í¸rž$ˆþq‘†tIÙF¤ìLöNý¯¼IûÏ솎ڤT‹ ZÀÓºu»æ¶‡’üGG”ÙºÎXÖ¡¾ýçî½¼ÈÕ1éΔ´d잟ýÜ6–ê´ï:ÄgF»õcQ"I›µ•ÏÙ¬µAc³©¨cÈÑ5Þ‘þ1eÉšk¹¯i}“^ÃÜ|ƒ· (‚ø©ÉF§8íìì„W®\©ßžP€„RC–®bË"­=—%y²å~‘Á•ºdÙÑÅg¹‹Ê-b,H^ ñ ™8y‡9UÙñ­ï¹ÃcM·¯Wh_&wqRWeÆ‹´+—ë*5 ýõâ‚=GÎáýSÒr£SõHã+¡r )ÔP4hôò…Ú‹ÑÁ˜†JžÏd×á FC¿G_qió’Ä“·¿£H2Sž;˜: Þ;P³€„ A#×ËW“)ë˜ÐÍP‹¯{XŒ©îùLÒø§Œ¬[ ‘]ýÖ,mìÇx6×$$Kò P„¶A;KÛAãü¿Ð\”K¿¿u$åç¿Þºÿ¢B³E»ÎV=â#æÊ6§`±º§.BKÕèØ×…¸A’!G2éá‚ÀÔj&˜d @ÃBj/”\/_ë&w3ü¸{ÍÁ˜ÊžÏ$’p3O}()Ì»~lMh”Ï¡[ñæJ>N+X¬(ÊŽôcxV[î‰a¼Dšú}ÅØ¥ÊúÎOÜ娹iEANÖ¡ïe-+X¬P³ú ÆÇ~Nð*ÖOõ®fê½5 H(R?²r½|YI\¹YŒ©êùÌ ô;:†ì½×ºøøÜˆéÜp}É\‚ÐÔ·ž‹ÐYT¶!¾„z½déÅ ²CÒÊa–üYÕnß}¨ßY³˜bªÅnÂd5´ÐR5;v~ºàÉ!q'«öö]VÒòÄcן•U.PÉŠq¼Råe㆙„¸d­Fâª_@BР‘ëåK6cÕ÷|°A؆"„.n@(T2w|sw#ÿÈHôÔjü¾»µ¥åÄ«Nì&Ƭ†ZªfÇŽßüT¾Ç=ò`9Ç{[ú¸6ÿ¥Ž›™R.™KQ¸o„Ô n¦¸a­ån½ªþtÕ; ¡7P{”òò…q0VÏg¡“ß$“$vDLN(<¾,x•§ pŪ»‰1«¡…–ª¥±3÷vg)ß ‡™.A˜D)R.‚µ0u¥np3Æ Ã·^#ª{@B5n¶-Tß]€šDö¯¥¼|aŒUÇ󙂈Ý>ïPw¯U‚E öBQïÿá¯ì™|nÚQG^b_„²úç£æbS¬:±›³Zh©Z;#Â¥!Ñ»ÏeòEß2Þy”­+yƒ›5n˜±»|ù‘G?ºåï_&™åÐÏ$½éßâ¹Ëîþ´o7¬¶§«Þ à é÷ˆ¿«©‰d¢“ÓŽ^óVí-ºO Y—Ðë9&÷ON£lÅT‹Ý„ÉjP¡¥DFênìz~ß;Ö}h:ßÅe EueYŒ_–4ž±{²=ÇÄ «ƒéª_@BT—˜m©õÝ‹á3©÷ÎCFp Œ?w™1)°o½t¨=f¦d-uÿÒ´É»Ü ùïVÔwê“ède«€„j PKæ{»F-˜Yß©dŸˆäJoÁÔ‡¨Îw㣯<,kÖ¡Ë`¯™³¼Z×wê¾Â ¡ÔºâÖ¾u[^Êù¯TC¯™Q[“ŽÉëWÖj‹¢˜Yº 2!%|ËÖ¢é³=rI’¢,öŸIl©ÌCŸ‚h[p3Ú¿G}÷BÍcÆH+ïU ÎÙR}¡Â·$”’==h{>é•|pbGÎÛ‡þr`CÝ´K¾{:de›ºiM‚§ósÛI2wþS´£î;P·Ð4õðæÃŒ?‹î¿¦8Íuíú˜Ž´ÒFÊH%ž…¯æøëÍ÷”¶aÓ/zX$”²â1?D€mǦš$aÐÑÎ-x—d®l0#”ãîìWH.äfòŸü é<çi/‘á¦3©]… %Å|=j÷iꈋ”3L $š~sasxrÆ É MkábWIò(87`=_ÍwIyÁÐ^‘…œ´Ø­Ç»ý¸ˆ0ü¬ó°±î#l 0ó&•‰ÐÔoÛźùËì Š#×ù1³mI¶ 4…5à”âcQêæ Ù†ÞßXÍ0Ôøð¶8ûú¿Èª«üj’®ÜN¼ßjÖ(ãNúdÅ›÷ÝPÚJ é!ˆÎ=wLóÐ>ÖVVÖ½l- *¯ÖLÁŒ¬6˜¡©y1»)/’@¾"IdºÑŠ *޲’Å%Å1fBLè.«ÚVIÇB*Ûéu¸BwÎŽ#n­ž¥Ÿ‘X\Y‹=v•$4T€(ÔܯÉ£–¾^o¾úYpSüí߃wàg­½5»$Ê¿§¬…´Ënþ­-³¤Ù¼©è'¥ ¥†,ŠžPµïFQöÙƒÙgùÞ\ôBö…9Š13jÛ »¹3¾Â+H+á3„HÛX¾Â’…hÑòì²'>&™Ž „´qO™T–¸–¢Mß ~Í|­âÌ “8#4óåëà;(] ÿb`VòôÉ+SËþî‹ûK×eby? 4!~tô0þñ‚JDèB˜ DØ€SJM£\® ´BfK(›$oäýbi9ˆù ~¡Q‚¡äVW­3Ÿ, ¡Ô [Ÿui“òÿ¾““ýÇ]gž]ˆŠBŽáÌH¥5<óXäûyþ‹þCr^©ÏOÆbÄ~ë(rLÜÒü* ‰Ë%BÁ¦¯ÏË|ƱƼc³¸hjþÛù×Q†-ïmtàW³²"¿ãWá˜ÙòYîó…ü…ŸŽw)ÂcsÛšäÍ-LÁDƒÂœRvñØ!”E£ÁònNì ©!q¯PR-ñ:w¡~•“8 PPê Aè¶ïbÇû7ÈÕæŒË"„r„élÁŒBgÁDÄÝwyaÎÿ xIžóµW_L)æv›Äšžç}Lrg&’£@`UÍ¡HÓ4})¤”¿ñ뉗Kå>¦ÒKt†=A4±kxa~^Aþƒ3‹WÙ·dw ›)1’¹d#4a¢AaN);xFÐZôSA»¯, 5¨·ÅÙ7òlòU¨.M?*§µDMHíµ’\gräÐóvΆ&MÉŠ·Å€z¢âÒæ%‰'o=~G‘¤Ê O7L@B©!žaÛ&p°ëjj¤GÝû‹ŸÔ1L˜… fDNB?ÆåäS ž&Ò˜Rltߦ9¾5ÁcUúÆ2W˜áˆaì§²î]Å 5œ>”òÂRž5–M•¼øk=ÿÈBtCãã î 261Èè …§E”ºAF؆"„.n@(Ó£YÌ\± G £AÕܻРj 8|"(å…­<£åÊQš[¶ˆîAcÜ‚`£ÐblcP5g(2÷Nü&·9Y°sÅ<<54"€PPc@À)àS@Yß(W ²dffV¼ÍËú~ZTÖ…åWCöÚñ1nA0ŽQˆ®q4MI¦b ªæ EánÐþr›“BÞ\1O `$ ÊúFÁ¸aD³©©CXB¢³Á¢meg¼9q âŒÐIÇ(ÅÓÅe4Íá׺+™…1¨š3i® "»Ûœ˜¹Â OÍŒ`$ ÊúFÁ”gƒ º®7ESퟟ。=Î-ˆÿdÎÉ™£x ô3Ioú·xnDz»?-’ÌÂds†Ò¢n“äµÚV'ƒ¨Rþy«CžS®ñË›ÉmNñ¹Å GÙ~Ö†{@H(M¿Gü½ÌM„o•õ‚)¡m¬5ò¸“=ûW”þÆ-çÛý!ï·09F™‘<3?:õ´¯kRÂÏ›3”¾ýçî½¼ÈÕ±o*wrÂÑkÞª½E÷©!‹'wÌ\a†#‰l?ký $À M•>»É?2ÝýQÖ7 ¾¼)]Bn'`Ü‚D³Aþßò½ïFçgYŒ_–4ž±-ŒA6g(úî‘;Üí¼âÍIUĹMaޤÙ~*âÞP P+ÎCFp Œ?w™1)œ±@@B¬p¥•J ¡+ní[·õ襜ÿJ5ôšµ5阼~¥šµ¨,4ýb¶³G.IR”Åþ3‰-• ÷ÛØcN-H¸)7jžÜ*â”â˯¾ò¾ÉÄuOãýžPjHöô íù¤WòÁ‰9oþùË ê×¢Ò<Ÿ+ØžI’¹óŸ¢mê»?Õ€¦©‡7füYtÿ5Åi®k×Çt¤ÿ¥’T1*ïÉ®¬—~ÐhÞÔþ “o>ã0ÖWÙóï'úõ°" ¶æxÝû÷jÞ‰¿Þ<|Ki6ý¢·ñ+x5$”²â1O) ÛŽM5I £[ð.É\¥‚[uA[$)Å[|x6eçáóWï”ö>cŸSÉ-ŸHX‹5KÒ…´ZXØ›:¾3à ӣà<^õ|5ß%Uä?B{MD³¡dô¨*›U5õÛv±nþ2ûŸ‚"ÂÈÆu~Ìl[’m’MEcy—•´<ñØuÙx^˜aJAݼ³!ÛÐû«†Þg_ÿYu•-¦ IéOÛ´ 3æoß_»òú¬¾üßÍÀ.áQWn'Þo5k”q'}²âÍû¿nT«{ PjHAôï¹c‚œ‡ö±¶²²îekaPyÑS*¸UÅQÖHR ¶øáôÌéÑ÷©¡;Võï@>½~(¡DaV“)ë˜ÐÍP‹_² “%„31nÏänœñ£æd$ÏJÏ•öNÓ¹A<ÕÌÿ`éÜu²•hyìD‹ó|8¨° ôÇ'uí,Û Û¼ë’i…}.+ ¡Ô [Ÿui“òÿ¾““ýÇ]gž]ˆŠBŽáHùàV †v´x\P`S?­$îRa’ÛáÊ Aè"þV'†ÐQ×ç¿ååÇóŽÍâ: ©ùoç_G¶HÕèQùÍé ÍN_h’7›´0åJ¸ÓÕFdæsI›ŠGѲC(‹FƒåmˆŸØASCb†Å:FJúz††¼n—¼X°5w²•¥0}й6¿zËöqÉCR-ñFu¡~[””nêH(õ„§'Úw±ãýäjsÆeB9Âteƒ[)Ú‰­Ež…C]Dh¶:¦!¹} ±}£éK!¥ü­ZO¼\*ûPr‰Î°'Õ¢GI¶(Û:&ÊÕTº+RQ*5L1£h-ú© Ý×F†ÔÛâìy¶ù7ËtiúQ9m¬%ªÎ¸J–5gŸO°34mŠÞ¼(æï(ûˆ†¼ê’ÍIj2÷>K=oçlhÒ”¬x[¬H !£Ú3¹ýIÞš¥âÒæ%‰'o=~G‘¤ÊsÒ§$”â¶mò»®¦Fzdѽ¿øIE¡£” n¥`h'L‹³šŠy°fåÅ.Áý:Ïÿ<º²§G‚lŸ1 )^Š™sa$IuÞÏM4&Îvòø§"ìÊt¬•èQ˜IöŸª}bwùò#~t5Êß¿L2Kña’=º¢GÇçìxýc Û§¹­ Ýç3­[o¾§”s7àkRvàÈíœWTݯ¾¶T¼"[sš_Z{ÿþ¿Ã©Ožº†M¹À^(u€íê%L§ÉÑÕoÝÁÒÆÞyŒç`sÍJýÍæODüdï‡c`ÚcÐØ9þÃLe„»Ô£'Œ}ÛÉ…ÄÀ N³6>ï?ÒoÖÐ6J¸Y©Uðs(÷t³±.ôÀ ’ 9’9HO‰ ?*÷³Î ¥†ôÓù÷Tw{ÁË¢Ršcdf7ª¿•0KÙàV †v´¨1tëvÍm;%ùŽ(7²u±Œq{3¦!ÅÃK1r,Š÷}'mÖV>gg°Öͦ¢Ž!G×Úˆ…™d-¯ÔÐ7aI[¾uMP"h—Ašö4-3ÆC­">KÊ)‰#õÖÀ²ý ËöR¦d«‹SÄ’ÍIuϪo'+pdý)ÁÍ<õ¡„^wMh”Ï¡[ñæV.¦bý‰ðŸÆ¥Þ?Êô7-φmÂh¿Þ¯”5à%/n¯÷üîÀºKzC3½ê»GJ€;Ý,œ¼Ö”~j8€„RC–®bËR6¸&´“‚-ò0qòsª²Å[öKÑðRŒ¿³®\®«”Aýõ₊D’4«È1.Ê¡çà÷½ƒÿ˜¦ó]\¦PT§Y M54L4t ;Ù{%®;>tññ¹Ó¹áúÂt6"bRרeŠñB×ÂJQ¤­»Ëü²4ÝvœœkJÐyñ_O;R1`ùk€0Wr}B5—(4ýæÂæð䌒ÎG„`ݯ°Öb„ÐÔiiÈ$ˆ:Œ— Æ…c”ZQpøŒþ\Äs"w‡ñt³5Ç·&ÑUúÆâù31ŒýTÖCM ê”™)YKÝ¿4mò.÷ÄBþ{‡õÝ£ÇÉ“'ë» Ÿ2íªS™° E(]Ü€ïçO¤:t Oäì{dÚª¡gƦñôœ´¼‹%‘){¹UÍ%JÙN¨Ãºsvqkõ,}üŒÄbE bj1BS%/þZÏ?²XVMãÅ<¥ƒŒþ\xS§Ô 2©ÓÍÖ£Y6Ï/˜áˆa4¨š‡ITøå uJTç»qÑW–5ëÐe°×ÌY^­ë»G OOÖ…R ¶á®8_=Â;ø¿‰Þ±ûCSÅ3Nô g3*¹bÄ»j„eh²ã/¾çý¦ž%IrHrˆ%‹,SÍ%ÊÆ=ügiWŒ2iB&£#QâE bjaFDi:lÙÒ£ÚÆµ”¾jþ\d¨rº÷Ì‚Ø=¿`†ƒ§ú#Rá—$Ô)­¼W9Èx®$(,,¬ï.*sGð*ºzaü‰* M}[·y~þÆlFEÌ—L¡ÎîÊ')jÊB3ÖÞ¨æ…+xýø„µ‚1µdá¨âm^Ö÷Ó¢².,¿²×®šÆE—rš®âÕcP5.2T9ÝŠ{fÁx~Á OõG¤Â/H( †¸*ˆ/>€¿- ïODøNå}âôÕy»H’ü‚Dì ¼:)ÁŽyJ5—(ލë¶Û ÄÔbD³©©CXB¢³Á¢meg¼91îŒÐIãÅÓÅe4Íá׺«`oUóç"ÄéÆ7'Æó f8xjfDJ ¨.T)ÿ­Õ!Ï)×øåÍøIX"Õ¦o-X”MqÜ÷¬“þçÏ‹æß:óýçÑ¢n“äµÚVGt WÍ%J€'çôÏaé÷¹µ~š&™…1ˆ©ÅAt]oЦ<Ú??ß{C{œqÿÉœ“?2÷@èg’ÞôoñÜŽewZ¤`oÙü¹ÈÎ!# §[™ÙÆx~Á GÙ~Ö†‡¹€„jÜxWw〢HíI;9 áè5oÕÞ¢ûÔÅw,Bàý‰T§Ý»!A7Çs÷¬6á³wrºûž ¥w¹«»®ðí?wïåE®.âî©æE{ƾ%ÅÉÉÓ\7)á|S CÛXkäq'{ö¯(ý+ŒqηûCÞ…oa2>#yf~têi_× ¤DoÙü¹ÈΡ,Œ§ßœÏ/˜áH"ÛÏÚðP#P›mËÕw &¿ &lWSÌ8¼?oá1뺊ËÛl1í8wšðXß=r‡{ÕUr‰BÍbúƒu¿ÂZ Ó.a¸Aœ€5Þlÿ÷ƒüEo%5%a1~YÒxƶ0Ùü¹ÈÎ!¦óŠ7'Uçù…}8’Fdû©ˆ‡š$T£öÞ@Ý @i@B@cBý"Þ4R@B( H(¥ È!55•÷êîÎð& ÔPjˆPÙH*jPj È&¨=@B}BH®Nшà4kÓ¹ÏWÝ[ŠËÒÓÒ.Ó4Mhhëµhß¹—]g‰8Gº4¡Ý¢£Í;3m™H4M½È¹r+÷ÉË÷¤ŽA;Ëž_viÉ ÀPqió’Ä“·¿£HRå‡ï„î7áÙ½Z$Ô'a9p¸M+W¤Ÿ}x›{½»‡(júÃVöC,Ûék”>ûãø/7N¿iïá¨'®EZ;»Y5}—s$ó¯+GµLÆõ”þäÐ9ÇÏýY‚Ì\{µ,¿ŸqòÚ¹çÄX×. ¡@`» Ó)Drtõ[w°´±wã9Ø\³ò‹OÓ/f;{ä’$EYì?“ØòãŸUbÿÚ…8¦=ã?ÌTæ.‰bü¿ú:}ޤ߬¡mÊ ^¦È6Ö…¸A’!G2é)+Få~*Jm‘\s’¼©7 Gë&A·à)§‡ý‹HB™è.¿XEÉ‹Ûë=¿;°î’ÞÐL¯ÚO‚›Î ^kJ?µH(µ…m/T+Á+Ap¯´0‘~~ç[þ{õ®´‚B¢¯÷KÉZ­«üÿXÖlžàõJZÚ•Ê´„€O ÃNö^‰ëŽ]||nÄtn¸¾0ýQ0ï·ÔóÕ|—T‘üí•I©kì²Åx¡kᥰÙ'4uZÚò ¢#Ä—P4ýáÞÑM)‡/Üzø^»]·c|GvÖü|Ñô› ›Ã“3n<+«T!Â5©õÉ·8ƒ9i±[ÿvûqaøYçacÝG؈WÈä®ñ0N[s|kÑY¥o¿ãZNQ¤^+3›£fÍùZ¸b‡ŽÆ~2Žˆ­ÿ ¡>9÷'eý³€ º:ºv5Ô&‰’´´cR¥ž"ÔNô?²: ÓÀqãÚÀþ'øT!lC B7 Ä;à©„Ü D¡æ±c"‚7¾)Ê¥S-Tú‰ ©’­çY,¦|86ÅoãSÂ#>-Ù²øüŒÉkç\Õ<¹w„/«l§GÔá Ý9;ޏµz–>~Fb±¤)ŠbîÆàš9‰gùmbš§¹ÖËû×/@6»yZD©dR“ÃÖ£ÙË™S¢RFô2Ö*ÊŽŸ{ùQoîêÖøáˆa4È8"EFH àóA𪩥A ÒwÎÈøíÎk7+½w9—xǤeÙ½{é>¸Q|ñZþ°ÏÛ6Aeo^æçýý—ÍWÙ’¨/V‚×ßDïî¿&IÔ*Μ0‰3B3_¾¾ƒÒ»U©@SÅ3òz…³­Ü¥é°eKáqâúD’K½»êD3§µh픂¸-hÄ^ÖÆ=e¼¬£Lš„ÉèH”¸ ª=-ÆV0«ìf%OŸ¼21µìᄌ¿SRI•ÉÁ4'‹}èáA‹îÁ<-„þˆAh~8xjhDŸ:ÿaBoüŠëIEND®B`‚PK¯9AKV#8).).-Pictures/100000000000025C000000F6FA86C2A8.png‰PNG  IHDR\öŒfÎF-ðIDATxœíÝ \÷ãðïóè¦\ªeËý~ËoŒh©ä–k‘ ©H)—.”P)¥"!Q’¹l.‘’¹l¶Ñ6¿ñÆÌÜÆÈl#uzžÿ¹ÓSc¿Ìcš?:èæ•¶à<9–=±ú‹¯tù³f&þÊ ŽÈZ9°ýðûœHBÒä2Œò0+Ûæ{P`ì—uÈåÝG¹“¼Ò^¨‰t^•ïËyyyr%ÎÎÎjvZykPoÈæÍ=5˜˼¸{"T´Õ;RZ8 b²düÛBaèo“IP³Ã´µM‡{wnBQ‡®"«¦=HÞLFùI+$LíböúªhÕŒ®Â¶ÝlB޲Q Ý1}¿ôá½§–Víº.¨Îè6>޾b¬eCвMÒBJÒ6‰ó«m¨t›WÝö¶8b°øn«…Í'ò‰(¦¯´Ãõ;Ëäf"=¤â)þÇ “T-VÜÝÝewKJJë°,£X(\$ þ¹}vµgìÙ¢å—ì²á7'I¦ê5±ìã2ßnkn ë9)[ó¾¹rûÏDoëâ²ïÕïó˜ø5ÖÉ)¶²ì0!•¡ØIásÂ.âWŠ2¾Ò4wš‰ƒæl8$jhðþ€±>Ë}þSýZ*_üÚ™Ûë*~®#«E¥s8"~µ­¦)÷/+÷T¨d&—Hî¿]UÍ'xŠAØ‹a~ é_Yö.Enчu½åûmd5dÙ†4‡¹m)+ð6àskJé¯_Æún(¢iï´}ã­›êQOœÜhù›bªŒ$ä !ÉùùÝÔž ­¬f£1QÛG–Ü¿ýàþ­‚Åq‡v‡%ø†UÛ•=!Ç ù!=D{WÄeŽ*[¨šƒð\r9Su# Âe,+¾ì?ËÍ$_~&•ÝVu‰”þÿ!ÝÃûžâ’Ñ®G¡û¯¦»thJþºvHô!§ËÅšÕy­™vgoð}ïu5h™øÕØÄ¨óìzn ì¡. s…¦‹KÙ>FTU%¾¡V“î„lùáSžæäÙƒ_Š‹f~±‹ï4¦¯90ζ›U§fïrˆCÅ:Š£L3<¾³|Yîï»]š?Ì]&,1íÏwh©Ù¡Ö9I·âcÎt\øQ+úÏÿŽéå¶A¶‚!{h6õæ‹ymÊ~þ|‘ì¡wƒü=Ù™Hië¼½x‡bÓyûâ,Ò³ó—OËøó91nÖ¦ëðYgOl¢´rË5]‰Ûÿ.Ï9GrIJd©’×äE®óŽ]Ÿ½qêÈu +ľçí:¿h´“´OÅÚ)s •¹-7Ñ{ßå -:Ø 66•Çi¿’bÏ~–_|ã/¶‰eïá.¾ ë(Žn0-{½fç—õ/,:;úx-pÕüWœ ËØª·%+gÓÜqQåÍúŒöZÚëõ ^é³î'îË÷}”È_+C¯Ýa/¢ÒÓ=G§ÊÒÖ%x{ñ~k¦¨F6n mÜ”•Ë9Êl´@TQ‡îê¾t“ò;[M\£³\«)¡(º“Ïr'u•+‘Ý5í5ÆOø¿ªfYåèÆý="úW÷—)²©˜ƒåPïeC½«ª@µ´tÓ$¥CPTSû€5öJUy‰þŸÀ×¼pŠ„"¡ÀA(pŠ„"G­PLÚ²¯¶çPïÔ])Ɔ̪ÕyÔ;Ÿâ[¡@·áž"¼‰y}E6ßúJ!øQ|ó•–HŸy@˜ÐÇÞmá,{3Ji¹æ\+£fÖ}‡NYèeÛDÕCîäzÓJ¨Oƒáêx†5PÐ&É»¿ ôɯg¢}§¶?æÂ£Õó?9å?9¿ðè°Ú%T¡ }zFæí¢Hü4BÔ E®•q³ŽÃWÕÓ …¢ ä§R|{ó‘ ‘u¿±ó"§v£)ɲRò*ŒR¹]á+˾üaתŒƒç¯?oÜÙ~jXШ÷(nµšà”´çôÏžç wwIÚ•éàŽöS#ƒF¾#ª&øag\ú‘oo<¦[övöX8Ç¡…ì • ÷ôÔ¦•Ûò~|@ZötžîkgZõ³Ü«”eŸ»}UÖ¡ïn ZÛÍ\>¦•\+¥+c–ýëä†åy—Ÿ6lg;y±´BUW@­5ë€ú*JŸÜ<M U?hN¡Õ ÑJ‘øJvG‡ž ]±5Ì܈ýëÚá@ÿùN…ëZH‚Pr»¢N²ÝƒoÌÝ’ÖÆøÙO;fL\ÖTrÈç–mVÆ cîßóZïMëg[š”Ý;³húÔS#},,ŒÊꚺ/¤½)õìÖ7û—’.;CÅá^lœó0,볕äÞÙUž“Ò><îg¬â•Z¶Ý5üÚüŒÌˆ÷žü˜EÈFu.×Ë-“cŸ,Þ¶7é=ñÐ'_=AVŨB@›¤7Æ.6׉_+ó¶}–~î,)<–!}Œ¹YÇqÉ$5‰øj»JÛôWXÁLjÖFït÷L&I$l…äP|À‡2k¦õs?j#ÚÕoe·’ÄÌ D”Of„”>ºÿg ãÖfÖƒ½Ó•!kíAhÁ+Q?VC¢BV8¬#~‹UÔW:èºí¥ÁÖ¢ò½ÝÕJDQ«Ýe¡ƒ-¹¡Cc’ª½ÕB(ðC3L˼J–-cZzT¸ŠbÙŠ²§7¿ŒòýònxÿŽjõ©ô÷PØ›‡RÒ}ùö“RF\ Ög€ÇùÂÙ9‘c„ +çÖóõší^E5¡é¿%Û¡Y¡™;·Åløñ¶IW¿ež6ÕÄÄBVîÙ’BˆªPT:è—„({öy5NX¹7„.U\j!ø±'ä8!£+ ò*[¢šµwNŽÏt»_§þ -9‰>)Í“wlnÿncC=šºïä4;À0 ËÒÒn_ßu dp^ž²Ai5fBY óæÅ2ý’=Áw¹ga¬|ׇ³%¤Hr TD¸9˜ßIŠ 'Üð*Žš0Ì3–mBIî>^—–ÛršW‹ñ"i¹Š+P-„"?“ F-+è4ß¶­¹AÙ“g’S Ü(V£¨~©íû]&û»i8ÐB,š6`žýv~wå¢H¸à;ÿ‚ýȘRº0ÇÌyeAÚìAÖæz¥÷>{`s@–úƒzn84ѶSs}ª°Ã Å rÃÍÛ`tÔé.¡ƒ,Ƚ3ñ ÆÖàL< G,-ìbׯðñ¥œè^Gç𢻠¶úÿÜþæÓÊë8QoTì¹. ¼GîŸKJ®krŠüyï‹Ù‘œ2wݵ‡/ ›wøpDLöTC¥5›¯øÔµ.]*ï5’*>,U³Ê}Yœç¶ÛÏ,º qæÄLIyÄŒ¾þ‡-/çú‘ÛÕ›°;5g}zPêå{e:~4æ“$^g—Ø÷áÆÈ©çn”š¶0sÂ2Qa¸†s÷„m\¹dòÊ?H‹ÃÂ÷ø5ä5œ„Áô}1Yñqž«oUXÙ{/ïõúQ»]AÅ‘!®+7hÙÃñ“,rØCRnä»{ñºÈ  QÏŒÛÚºo%g¼%å5¹E~(ªÑ€iKLSrH.í¨FÑ…Ç””«n%¥gã½2Ë[º»p4WÍÔ#a—Ge5¹]ŠÒë4~AÒøäur£TµÛl€Ç²¤j Ù9ø':ø«hAdWVi9E™ ˜¹bÀLå­(óAëF½*&meæ8/ÅqW>QZ®ü ¨CÝP,))Á³2@·©ŠfffxPè6|| À©‹P´±±¹pá›Ó€R5 EiPeôé#(.ž£Q[€7桸Û+£ÃFÑViq†ÿuï ¤ï~2g‚ÖfPÇ4ÅÉl¶/]"ÜX²ì²kªÕà2à4™ ü» îJŒÎ<|ñžàÝnÎ>‰ËÆ5- á^%ëEáöÞ@û°¬Ó· º»ÆeŒ¿¶xËÉ[zݧnȘÛ^ãi¨«ŸR÷:”øûøôWtg†þ—œï®¬î„«ýv}:ïýÆew ýÇŽÊwÞI„ŠŸú²SwçÅé_]8dƤãÁQ{óW°?ÙOÚ7·ØUóy¨§Ÿú}×uc,)<Õ5ÃOÏÌI«-Ë&ýF Û(©üiˆµè§•Óz²xlå—Õ½nËôæÂ=¢izhÆ”N¢G}ô‰? ¡µ®Ÿnõá¶Œúødöþl¶Î¬$ð1É}G±r‡ÊÍ&4ý¬ª>­¸ŸMe·iú_'  ¾šþöékŸ¶I6ø=ø_’e¢fc†aÕ| @íãŠÕýEUôËÊÉj}µþ܆Óÿ²CL‹ðFÐòï # Y®VÎÅÏéïáØ/¨Œà¯àMÀ/«O¯ Þ¤Ïî#[S®•t×Ôgãa%åUm#; ViýkÞüŠ‹µÝ%@À‚pÔ Å%‰éµ:€z§n({ãÏç@ÇáãSB€ƒPà 8EB€ƒPà 8EB€ƒPà 8EB€ƒPà 8EB€ƒPà 8EB€ƒPà 8EB€ƒPà 8EPLÚ²¯öæPïÔ Å`oW33³ØYµ=€z¤îJ±¤¤¤VçPïpO€ƒPà 8EB€‡·ôÓ‚½]ewßÒ³¨ ¹+P„"?³=?©ï)ð³9k—bá[w5¡ô (…PàG¿]ßSÐÝ8 ­C(ð£q¢g¡uE~ôõ¨úž‚èÆYhB€ÝXcéÆYhB€݈Ý8 ­C(ð£¯W‹qbcc#|½pá¯C¨Õ³£Ý™×*„"?åFƒV,û猯Ñ4Ãt<òÍöf”ª[z*†Ðlt­ô3 ÿ„¯ ¡ MÌZXvè5hÄäNmÕ¾7Y툒þ¿>ÿ-߉iB€Ÿò Bñ¯0…4}Õﳫ¥ÊP¬zÍF×b?gÏ}UñâÉíâÑÁK¦ì)Þt,´›Ê€ç;¢¶NP3E~4{×¾ãKˆ&úÿ®/ÿÍÿ·ò½V’r–ý»hýâM_\|TZùy¦d‡jNã~D L[÷Ÿ¹9ù CPŽoØì“±Mij­¸–›¼%»àÒí熭º™0o|G=™¼|uRÊ« ü‘¤Úàý…¯…§¿R§O­C(ðS.`ù6aÙ_&Ž]’âó÷=ß«å_X‹ßÜ_nµ"»Üxîîœ1Ít™•ú\:„ŠCõrr Ù^1„ø’¢ÄrA´pWëê—ò€š”¾gK‡'§L›ù}zÇèr «ª–÷å9gû Âj+×ìÔUA(ð£Á‹½2ç/š&ï¦Z2VñÍHÀ“§A?1{»ˆBqýö—„¦—º´Ö#TË1ñ$5P:„ŠCõrr Y¶£øçIɦä{ÂÙ†xujHQF'“¸I¬^_>"P®¡šÕ$ª­¬uE~4ˆ“KÁÿB[$¶¶µHjMfÞû7øBùá¾ÂC§ÄÚV0åŲ]d‡Pq¨æ´Š?‰’”ä‹wœ'TÖÍ)¯˜+×PÍjÕVÖ:„"?‚ ~<²ì¹è—ÂL$fØ—–¾ ýZp¢E $¤ˆ+¬pÝø*f¸!Tªû³PlÈ^Œý8_Râ@È1B¢¾8ÙY枟ì(¼ªIT[YëŠüx®±Ø¢% M3ÖٻךKJžÎ·ó»)H<É|6„š1Ñ è€ áÐíÔï>>.;„ŠCu² ™—%w/Þõˆiê¹ØDÒÕ'óÛ[÷ûŠ­“Ý{™’go\<ÿEƸÐÝr#ª¨Öža®Óô÷ÿVt7â"°Ú>µ¡À€á·R)LdMwˆ4•64‰ìN¦]f l]h½¾¥‘»³<<Ó+ÅTRSÅ¡šÓ¸ŸÉ£ìõŒMÍß³îèáëfoÉ+êŠý8+Ždd]’óG™‘…uo;Û‘i²£H¶UT[0sPôÞ¯ã܆ ··,T§O­C(ðSÁse—Sh'úÉVH?÷3Y›µ_ÚUã½Vè¥t‡jJƒ~²öŸP(“9)BZñž;Ä[qICéˆUUk8:*n´üôªª\KŠüÔêJ¥ÎèÆYhB€ŸZýE:£g¡uE~L}~™¶èÆYhB€Ÿ XcéÆYhB€ÝXcéÆYhB€ŸGÕ÷´@7ÎBëŠ<{»Ö÷´@7΢6 8EB€ƒPà 8EŽªPüüóÏëlõ®ÊPtww¯ËyÔ»*C±¤¤¤.çPïpO€ƒPà 8EBQ§8:: _Oœ8Q­tïPT|•-‘l 1 eиÅ=ŽñŸ=¬¥´aU‹›S«žvüæ·¢¨šL©îi<ºôô¥Tu©VVŠÂ·rVPúøÊZ÷ ý _› ;áÁ»9óüÎ ß™IÉž·»&ZÖÆ$ßXB€úR[ŸRzFït$¤0 ኢæ´qk§’äAŠ# É”²ßŒpŠ(gÚäÝ÷»ÛŽíç,\DJWWÒõ™b‰¨-[qýpjæÁ¢K¿?7|¯Ëàñ¾cÚéQ•KX)Ù„¢oÞvÀÄàˆIíD•Ù«Ùk2Ž|uåî3ʬC?‡á\Gu7•m^Åè‚+R¶æž¹r÷…A«Î¶.Þó&tÕ¯n,ñóò¡þgõ\²òæYQìígÏCÛÔÂÈNÂC¿™¹íà©‹×”™õéâ?´…âL¤ûú|þ.Ú™~ô‡Ge´Üp*.€Î«­Pd™ÒÇ?­mµ]ª­>ÏŸ˜›9ªwkýg—S&/\sþN߸æÒ “¾û+–U|1ÍýCÊ-%;½ý‹S^SWù]ÔËÛ5ª´BÃik?ÜÅL¿òÝß`JòΩ] n¥Œõ;š>;sR¡·°0Þ/­€Ð3ҲݭõŸüú}ÑþÒ}‡ì$•~À}þ¦§Æ~™Æ4tÐÍ+mÁyr,{¢Z¿cä&;ßCž+‡LÈ&"ùxÓòŽ¢>ógÍLü•‘µr`+úá÷9‘„¤ÉµeåaV¶Í-ö ÀØ/ëË»r'y¥½PÿBè°*ß—óòòäJœÕì´òÖ ÞÍ›{j0-–yq÷D¨h«w¤´p@ÄdɆy·…ÂÐ!ß&’ f‡ikš÷îÜ„¢]EVM{¼™Œò“VH˜ÚÅìõõЪ]…%l»Ù„%d!¢P¼-:bú~éÃ{O-­Út]Ë}þSý**_üÚ™Ûë*~®#•‡¢’{ŠÖaÓ˜/·ß§fZèû\Ùñ«m5#sÿ¾rÿL…JæÃQq¡ðu¸ óªùO1{1Ì4ý+Ë~À¥È-"ú˜®·|¿¬†,Ûæ0÷Á¢-eÞ|nJ)ýM“Xß E4í¶o¼uS=ê©““-;L•‘„$$9?¿›Ú3¡•Õl4&jûÈ’û·Ü¿U°8îÐ°j»²'ä8!ÿ#¤‡hLþMU`/Îß.\$þ‡&ßn¼øÉÑÄ„g”CÈ™ª;¢a¾(cYñÅÿYn>ùòóᨸPø:\Ðy¼ï).màzDºÿjºK‡¦ä¯k‡Dr¸,Q¬IQ×Z‘iwöß÷^gQÓ‰–‰_MŒ0Ï®çÊêÂ0Whº¸”ícDUUâju0éNÈ–>õèiNž=ø¥¸è`æ'»øNcúšCãl»YujÖø>!‡1T¬£8zÀ4Ãã;Ë—åþ¾Û¥ùÃÜeÂÓÙþjŽÈ²—B]f \wÆŒÏá¾gQð¥‚Õ=(jv¨uNÒ­ø˜3~ÔŠþó¿‡cz¹mmèFÈšM½ùb^›²Ÿ?_${(ÀÝ @v>RÚºPo#Þ¡ØtÞ¾8‹ôìüåÓ2þ|NŒ›µé:|ÖÄÙ›(­ÜrMWâö¿ËsΑÜA’¹fê¹Î;v}öÆ©#×)¬Wøœ·ëü¢ÑNÒ>Kh§Ì-Tæ¶ÜDï}”7´è`3dØØT§ýJŠ=ûYfX|ñ¿Ø&–½‡»ø.P¬£8ºÁ´ìôš{ü]Ö¿4²èìèãµÀµÊ+/w‰~^²àbà¾cv ŠòÙ55×uç‚ðŸ ã:7–±UoKVΦ¹ã¢Ê›õíµ´×ëýx¥ÏºŸ¸/ßwôQ"Å ½v‡½ˆJO÷*H[ àmÄ;)ª‘ÛB7åGårŽ2['-P'UÔ¡»º/ݤüžV×è,×jJ(Šnãä³ÜÉGAåJdwM{ñþ¯ªYV9ºqˆþÕýeŠÒÓï¼²°PÚ¹ç‘BOé!ˡވzWÕÕvÒÒM“”DQMíÖØ(=Tå…Ðyøš7B€ƒPà 8EB€ƒPਊI[öÕö<êº+ÅØYµ:€zÇããS|4è6ÜS€úçèèÈë ±ùÖWB@ Å÷\i‰ô[ûióúØ»-œeoF)m"לkeÔ̺ïÐ) ½l›¨z’\oµ”jŽ®f¹’ºœ°¶ x“¼Ý JŸüz&ÚwÊaûc.FeuMÝÒÞ”zvë›ýK I—¡âp/6NŠy–õÙJ rïì*ÏIi÷3Vçd{¥Í û™ÿÑ) Ii¶Ç©à\ÑóÕ˶»†_›Ÿ‘ñ¾Ñ“s¢Ù¨NW/·LŽ}²xÛÞ¤÷Äs8ùêI±*.…мIïŸ1Œ]l®¿Væmû:,ýÜYRx,Cú¬r³Žã’Ij!ñÕv•¶é¯°‚?-‰Þéî™L’HØ É¡ø€-d–Jëç~ÔF´«ßÊn%‰™Aˆ(Í)}tÿÏƭͬ{§+BÖÚ‚Ђ!V¢~¬†D…¬pXGü+V“»­(ŒUÊpÒÖÿ yrò.Ê{«ë§ÇôD[·½4¸ÀÁZÔ[‹Þîj%¢¨Õî²Ð‚Á–ÜBc’ª½@((A3L˼J–-cZzTøvϲeOo~åûåÝðþÕêSé-7öæ¡”ôÃ__¾ý¤”¨õÑß1B¾pvNdÅaÃʹõ|½f»W§@QMhúoÉvhVhæÎm1~¼mÒßÕo™§M5Yp†…•{v„¤¢$•ž`Ë öÆH#æp‹Ë/ QöŒójœ$$°ro!\(ª¸@((aOÈqBFWä2T¶E504kév¿ NãûX‰>)Í“wlnÿncC=šºïä4;À0 ËÒÒn_ßu dp^ž²Ai5fBY óæÅ2ý’=Áw¹ga¬|ׇ³%¤Hr TD¸9Xý¼0ûºÕê4¿g‡ã¹„7'âë(L¸áUÔ7a˜g,ÛD<4Ë^—–ÛršW«ò"i¹ŠK¡„"€“ F-+è4ß¶­¹AÙ“g’S Ü(V£¨~©íû]&û»i8ÐB,š6`žýv~wåZH¸à;ÿ‚ýȘRº0ÇÌyeAÚìAÖæz¥÷>{`s@–úƒzn84ѶSs}ª°Ã Å rÃÍÛ`tÔé.¡ƒ,Ƚ3ñ ÆVs öYòâ'3Žô®3|Çg—™¨OxŽXZØ)Ä®áãK9ѽÜSe›Ì3 áEwl-ôÿ¹ýͧ•$p¢Þ¨Øs]xÜ?—” ]ÖðRÈA((aä½/fGrÊÜu×¾4lÞáÃ1ÙS •Öl¾zàS×BrL¸byí¦ššŸ³Ê}Yœç¶ÛÏ,º qÆÃLIyÄŒ¾þ‡-/çú‘ÛÕ›°;5g}zPêå{e:~4æ“$^g—Ø÷áÆÈ©çn”š¶0sÂ2Qa¸†s÷„m\¹dòÊ?H‹ÃÂ÷ø5TÚ­â=Å ³¿è“Q`$ZÆMüt¸“ß3zLß“ç¹úV…•½÷ò^¯wb·+¨82Äuåã-{8~’E{HÊ|w/^4!ê™q[[÷­äŒ·¤¼†—BB@ Šj4`ÚÒÓ”’K;ªQtá1%åª[IéÙx¯Ìò–î.ÍU3õHØåQYMn—¢ô:_4~yÜ(Uí6à±l€©šÂpfþ‰þ*Z(?Á~Ÿö“vbp"Cқɀ™+ÌTÞœ2´nDЫò€a¯Ê)3Çy)Žó¸òð‰Òrå—B3ê†bII ž•ºMÝP433Ã2@·áãSNMCÑÆÆæÂ… ÂŒ>}ÅÅs´1'€z¡y(îöÊè°ÑG´UZœáÝ{黟̙ µ™Ô1ÍCqò›íK—7–,»ìšêA5ø† 8M&(ù‹NájrïBç¥[ ®–š÷3/!d˜é«òCË&Eg¾xOðn7gŸÄeãšIZ”]²þð%ƇN[q|­›d1 P«jðñ)Eq_ @‰¿•HEwfèÉùîÊêNüÁ.'7ª5¹s2jœóú!çŒ$å®öÛõé¼÷—Ý)ô;*ÜyÑ—¼HñwBîñÍäîé•c×ì;{ÔTƒOý¾ëº1–êšá¿§gæ¤Õ–e“~#…m”TŽNp·qHˆ íO"%埆ØY‹~X9­'‹ÇJ¾Á'n‡ ¶ØÎRTnõql 9¾LãI¨¯Ÿnõá¶Œúødöþl¶Î¬$ð1É}G±²C妣0õ‰”ìt¨,oBÓÏ$[' ¯,·'¡u¡¦¿}úÚݾ6É¿ÿK²Lª2²rÓQáøk„‡OÂ=UEôuêu_(Jÿ£ =VÑ?.+'«õåk. ?Ù=bp+r÷tÌR=sªGY<¥Á ¥§º†ÙоyveD Ÿ &-ÿñþ0² ‘%áòðÈîVævõ¹Y¯11Ç(ÿ&Y)ãà¼è•!>CƒŸšt:csÔW»“PŠ_(Vÿ§¼IŸ-$ÜG®¦õ”˜]SbT÷&³ûΨ𭣸ûŠÙÇÖ¸ðš$€f´þ5o~ÅÅZèÅcÛw “û6/¿}2z%qûJ =Tç ýîÓø¦G øé¹y¯áK/6ªïéÀÿ ê†â’ÄtÇ6iÿæïY:Ïÿ©âã5@}ê†"ž:ï ýø î½¡Xq:Îgå¡K_^ÐÊoéh¤>Ÿ§(m›0ßðüo¶6Ó¯ádj¢>Ÿ§(ýÃÄ\B¾F"@}«‹ç)Võ|DÉJQøJhºŸðU/¨5uñÅóàÍWÏSÃóàM‡ç)pÞˆGG¼ Šœºxž"¾ïÞ uñ+MÕÅó¥â7?_^<¢½hó½~3vH W~&ˆ,v7jã¸:rQŸx­ñ¬4VÏS”Ê#d‘Ba!!•{N„Ä‚P€zPÏS”NÈqBƼ^8”|B¸ïm:ÔpJš©‹ç)J-še4`ÁÑ®Ë$÷mfl†»7RÐ3òcñ=ÅÈîgyŸ€6ÔÅó¥ }O¤l\1>úFÅÃmÄ…Æ!y1IÃÃï“÷úºÄæã·l ~ÔÅóe¶MlýÖØúɵygDpÚˆ`^о:zž"À›ß} ÀQ7KJJ’¶ì«Õ©Ô/µB1ØÛÕÌÌ TÝÆc¥X«ó¨w¸§ÀA(pŠ„"¡ÀÃ[úÇiÁÞ®²»oéYԄܨ B€ŸÙžŸÔ÷øÙœµK±ð­;‹šPz”B(ð£ß€®ï)hnœ…Ö!øÑ8ѳÐ:„"?úzÊŸŽ÷vѳÐ:„"?º±ÆÒ³Ð:„"?º'ºqZ‡PàG_¯ãÄÆÆ†TñDw‡4P«g!G»3¯UE~ÊŒ­XöÏ:_£i†éxä›íÍ(U·ôT ¡ÙèZég@ÿÿ_Bš˜µ°ìÐkЈÉ3œÚª}o²Ú%ý}þ[¾Ó"„"?å…â_a" 7húªß=fWK•¡Xõš®Å~ΞûªâÅ“ÛÅ¢ƒ—LÙS¼éXh7•ÏwDm fŠühö®}Çÿ–0Môÿ]_þ›ÿoå{­$å,ûwÑúÅ›¾¸ø¨´òóLÉ*ÕœÆýˆ˜¶î?ssòA‡ ß°Ù'c›ˆg[q-7yKvÁ¥ÛÏ [u21`ÞøŽz2yùꤔW:ø#IµÁû _ O¥NŸZ‡Pà§\Àòm²¿Þ# 1M»*$Åçï{¾WË¿°¿¹¿Ü:jEv¹ñÜÝ9cš?:è2+õ¹t‡êå,ä²½bñ%E‰å‚há® ×Õ/å5)}Ï–/NN™7ó;úôŽÑ äVU-ïËsÎö…„ÕV®Ù©«‚PàGƒ5{eÎ_4MÞMµd¬â›‘€'Oƒ~böv…âúí/ M/ui­G¨–câIj t‡êå,ä²lGñÏ3’’MÉ÷„³ ñêÔ¢Œ>N&q“þX½¾|D \C5«IT[YëŠüh'—‚ÿ!„¶Hl%lk‘Ԛ̼÷oð…òÃ}…‡N‰+´­`Ê)Še»È¡âPÍi#ÿ$)Éï$8 N¨¬›S^1W®¡šÕ$ª­¬uE~ü>xdÙsÑ/…™H̰/-}úµàD?ŠHH!W*XáºñUÌpC¨8T÷g¡Ø½)ú1p¾¤Äc„D}q²³Ì=?ÙQxU“¨¶²Ö!øð\c±EKšf¬³w¯5—”º*$ç2# ëÞv¶#ÓdG‘l«¨¶`æ è½_ǹ no?X¨NŸZ‡Pà§‚çË.§ÐNô“­~îg²6k¿´«Æz­þÐKé*Õ”ýdí?¡P&sR„´â=wˆ·â(’†Ò«ªÖptTÜhùéUU¹– ø©Õ•JѳÐ:„"?µú‹uF7ÎBëŠü˜úü2mѳÐ:„"?:±ÆÒ³Ð:„"?º±ÆÒ³Ð:„"?'Žªï)hnœ…Ö!xöv­ï)hnœEm@(pŠ„"¡ÀA(pŠU¡øùçŸ×Ù<êÝÿO]ĆЈ… IEND®B`‚PK¯9Aß°· æ•æ•-Pictures/10000000000002D9000001300A5C8A8F.png‰PNG  IHDRÙ0íŒú•­IDATxœì \ ëÇß™ö"eWÊRÑbMü¹ö¢¬…ˆ,¹T¤ì·,I´!"…’}Bt¯nY®K–{˾\Y²ï¢eæ?çL¦³ÌYÚN§çûɘy—ç}æ}çœù÷}g^å·o^#„0\ T9ÊÕíµšb-s¸zý€JÂÛmŒÐp¸æäèJ…èêê~øð¡ºØ(£EB|¦UFî?£¶­MšW†qÊ’5[)!"6™¨^ Ê¨ô~"@µÀ'2 ƒ@n©\-B ¨zÂb3ûù(!B…@/€R‰Z„"Á+ýýRûS§N¥¶Ô>tÕLO*K‹ÐBdûöít×­B(Er¨F w@©,-B JvÐÝ!<äMˆXYY]½zµº½ª^yCŒÙsæÚù+_¨~ÝêN´ë"•iJvô°´±±ëKí_¿uI0ƒ•‚RÉQò‚¶L`êM̬'‡Ž3Ü$ @€Ü¦ExB„‚»sMZ9‚¸úãÑýg;tK=“&61OFTFÇ ñ#÷Òâ!ûÆeޝXã€üóEä6-B ‘˜¥ý¨­[Ðyêp¢¦) R¿™ïÚ§Bd£)º¹mAȾô§X«~SBWMjÉ Ëû}ƒïÖ俽SÒïæà¾tþ¦tç½.epõ¦=r@ˆ_‹P¹©ëwqZ=· F‡žÓoALZŽZ;Ç í>ÿÃdñ' w@‘n¾È™/øBì:é‰Jœz& ¡¡»FZ›LªDš‡§¼ñ9}zMƒ‚G{ûŒŠ›”9… œê½cRbZhs-òÓÃŒ½s:@é1*äÏW—ü©¬‚1Ü\Eߟï5bãÜÌÙtàÒú3wü¾=XÓÛy­O¦· žrÌ[Ø´H¿nuÏ_ùâtžwÈ¢<øõfÙºFÝE§ 9Z|DùÌÑ"Ë\,æ® ËjkÜ¡—­íÌbpz>j#Sëß&òEW·,;zñá›|çÚ/Ö"ÑC[jQÿµ¥THOê.&­Û€ü="r ›áΑeî*%8DÍá†÷•VŽ wõjû²¦swŸÌͺtõÚ_»]V úce7v#,ý%¾Ó¶t8·Ío7g…UçèóAcº÷fÚ¹S“½öáhå~*Ј 2óHK éæv¼F¨‹†¦úrï°á@a€Þ9¤‚ß/BÍÐBäãçŸt o§˜¬ÆHš9°Æ;÷y-[ù«uÖ—F}]¼£èÀpë®þ?+Ð5î>eíöâ@—ήÖ]ÞàR=†³)`È” ½C ý^“×R"G:瀚€lóEÈ{öìY^z¿Ú‘ÄòóÔ£Éç¯\¿óìí§eíÆ†ÆfºtïåÔÏ¢ªÜ(CÅ¿ëŒÛíaÀÓ!3„|-ŠíáW˜é„ÀË„5â½yÿ½¹±§æJ`°l ÆðàËCÝ® fW¢Õt G„†ÈÞ=gÖŽ;8^PøùŽLê/5Þ©Ÿ\È)j!¯EèNvÝɵ‘²kʉ óE˜ rÕÿ!$‘î1kÇc¯?dÖ¿˜ê×WE?¾¼yþèö‹)«Û;j/âµÈ˜ám$|F¾*ݪ@k 9•×;òñæñøã\¸~?÷K‘fsóžC~åh¡‚qæ-Ñ"&%åÌìØ“x>óþË/…Åš†,¸“²óð™ô÷s¿bu Mÿgã0elφ¥³ÈÛ©9{ÊZ[XüÏvìô‘íÕ°â䇋{6HþûîG²®YÏ£&³;Yºœ"„ÕÚýsÛãÅF4uõMºPJë„Íáï7o?’rñßGoòÔ¶¶øÅÎÑux'MŒ™‘O®1éýƒÁî;ž»p;ç3V¯­Õq3'õÔ…—÷@­¦âûE»µ>óHG[Úöío¡iÜ猭ðr€…Ê~¿Èï ¼ýÏ97Om™wŠ]úùzã<íÐ{f’¸:â·Ôü’á’OO®§Ä^;}~öñ(‡’»{†ç}„¸ ¿½~xåxÔ•ßóO%Žã˜%‹.-vZzŽEŸg&oËLfwrß9ޱÁžJw2…?¾¼ükôÔà/ÛbÐ8*äÓR?Jˆæ^á¾Í©æ¿¹}vżMÙ8Íqîv"[’Rþ´„#DJJT+xs;eÅÜMÙ—ý|?¥†ê”äÿ•B˜Í_bǰéç÷)u¥ŽØŒ(*ß/B‹ úýª†7úWìøŽ(_[K¨šêU *õý"çÙÑ*ÌìƒPä„’*Õ"ÎûfT+óÓ?:ƒÓKqs£ëƲ¶rÃÚLýO’¯ÒvmOJ»v÷ù‡|‚§ (EÁÑ"Qq²ÏZïÐÛɡҤƒÃúY›l7±8IÏ÷ªæ³BÌáA‡7ÿÍWbûâ¯RÞú–¤Raq€ffÄH~ W¢Z$6#ŠJÅk™yúèÕ½¬'¹Ïß)[W[ÓØÌ }ãªw P*¯wdšó¨)õÇó™A“Uù³ü%ÂŽß§w^ú¹BKœ[l–þ,;œ:bÓ"í¤Rä¡åš,©D:|Ud‰×!Ìh’ü!hyP™#Ú‚ðÁ\j ò¢ERŽ]¦TK‚/Ÿ¿_ÿë.õ×T¿­C÷*s P *{¾ˆ:c† ùX©LÑ .â„üRRúŠ˜½±ü2G„8¯Ù9Ú¬‰¶šI¾¶µ-]Ω+B¿s-8”æHawrœ=Úy¥»½oxã’B™³JÙ¶Bèá%¿Q… ðÂ\’lÊË›#èÆ„Fð[°b÷ÅF^´Å™ŒýôNg³Þ‚±×o§Ó;“Çά:ŸEAß/âÙ¥¤¡@Ÿ„µsmÌ›ÕÅ ò>¼Îyx;óÒÙ£óÂâQIƒ––¦† –ÿáÑå}ó˜ÙgtE¿_Cæ&ù4å̹svÅfŠ J³C-’f½ÝèìúÐËupW3Ã&ÚÊXáÏo%r¸ ú㺰»xÒ #”„Ð’“wW0ÑUúñæÁÅý‹]Ú8'ш3_„aÁj†¤µ€""/ZÄÖ¡»iûVëB7}+x}÷ñõï?¾ò%ÐÒ¬;t cç®í [7©šŽ¼­G£¹$bh朓7£|¦DñEÑ¢#¨šrÅxŽÒ·€P½àÀNvþ7²#çMŒ, 3+ìÂcf,ñŒú;'9jy2©â¨·"¨ë¥—-‘Àº®¨Gxxè$mýü4bÖ¸^&!.á·7ÏŸ¸¹ÔÑ! ¤ž”¾ PÈ‹¡ EFÛV£LÚQ[Ù„È7û˜¤ò»W•–JB®zG0¬ÝœÃÛ;<’’q5ûÉÛïH³‘a›öV=z÷/.Ñ_±Û;2|ïÙ[Ϫ75é:h¬Ç®ÀÒ 0åž«ìÚt ùʽDÝæfÝ8NÝî?NL¡­F‡$t¹˜tâ÷‹Wo=yý‘*U»‰QóN]ºõÒY&¯ò/! k’¶=sñßÇoª6hÙî[G×–ÊÅ#2Ê£÷­%7í:•‘õì+¦Ý̸}O›N‘>üµ} pêö#ç.ß~öסNkœ×¯½”á^¨ÕT¢Ùs†³Æïáã÷¤Zãqº@êè5çhŽ‚¼âo¨¦‹þë»éç©3s³¡Ž}˜¹(e hªZ´BÁƒ“§N¦ü{÷¿o„VC£î–vûvЭz7&åŸ/"ê«BÙ,¯jÅ”Zô?¿ßx±˜žÝ¬5v³JC&•5…Õï5yi/æ Μ%x-,¦Þª§Ó¬žN"°9¬eé0‹úå°Z§ùaNó™Öôpöé«>PJeiZˆÐûÜkRÉQPB„R!ÔÎíìÛÔ–)Gx²£z»+ÈÜèÕŸìæ/˜=£©&–ÿ97++u!ê°µºühäªG`RYZ„"1KûQ[· óÔáD‰ ùöý+BBÆbíMdv‡Pr„¯kD¯N‡ì;qåŠIW·ÕœlJ¯Ìq¶‰?sáùÛï!ÛODvê¦ÈK·^ fÝûz,ì£WÜC%#¤ÜТûÔ¡¦œŒäô£«6_ÏUoië'´¬{þ'Z„ïQüNk «ž¿Zñ¬•)4ÿÒñðmßÿTÇÄnØ‘7YÓ4Kc৉ºt÷&yÑ"†­›Ð"ƒ§H„4HšÞ&[(¥W²œmT,Ôâ#äý[,È‹A%ëôòÆ_ÎÜx!ùëѤz‘Z†îSÅ®dùÚ¨FäH‹"nèjp%@£hZäÚ_·>újܶ5µÿ:÷µÐ} ƒM«ÓËòѯ[ÝêvÊËù+_àJ–xkª@u¡hZ¤Ëÿ:ü‘r±Nͯ_¿‹Ú¯ÑB Ñ";·*"Û!ý©ý‡÷Ÿ<~ô´ÿ€ÞÏž¾bîkÔm¼yχø“o¯§€yAA´ÈäiNÛ£Ô­«ùåËw#“–”þЮ§•—÷“¹¿}߃ÆfÕíiõ³~Étj;7d‹TQP©Ñ—4Óù}"ÂÀ©íÙ³g«Ûé`º]CO¡jP-Â$ïàY«ìœŸùø‡g÷wq4ÂÝlòæï´§¼‰óÿGmG¬û‹™ËÊÊêêÕ«|‡ÔVÂBy‰ L½‰™õäÀqüiŠ •†mûO Y1©¥ 'ÇI~ÜãëóÇ ¢ù´~u0XÔ¨[©„÷Ñê½é’?ïÝ8}úßÛ÷ß)Ä´7nn2Îe¢ÌÖäS@HÞô½“‰ ÷Ñ 1"ä÷[I±O]¸õø]¡rýfƦ#æÈl DÕ  Z„’oˆ™¾¼òGN{ ҷГè`ž:áS*¢9‡ÄÜK‹‡8ì—9^¸Aâçë«þƒFíš”é"‰Rðq-%D¨ÿqüÙáhŠn›€ò ù-°‘ªD’øçxð†…íz†˜ék¾òàÒ®Ê󭑪-*ä6\e÷r’ø+ÈÑ7-¿»wÔ.kã:…¹w3ÖVMÑ@yP-B÷sðȯ—ŒP± ¢²ìná Þ>úY´ã‘ÎÞ •å ®Þ´g B Ñ"Üj»ù#4 !®)º¹mAȾô§X«~SBWw–ä v[™ôXÝÊ%üJÌZñÕCL>lË¥¬« Æ N¶½B ЧÅä·{Ç7ÿyíÞ·Bœ/ KT8å‘#$YôòžŒK×_¾ÿ¡¬ÛÚ¨ÇȽŒ•¸$ùýþÉÍiße^ÆB‡6ÞßH¸péï§/ÞÕ1ig;Õºs}f?â6<"ðz3gµ×ç˜UnhÒnxØÒé"h¤¬Õ¸Cç1Óºéa¼pÁ¡¦“,–Yª"÷òŒËW_¼ý¡¬ÓÚø—1i 8ƒX¥XùÚ¢0ûhÄöcéÙÏóTõÍzÛ»Íq´Pá:À× Â.AÈ¿†Øú®Õ¨eûÞ#¦{2,9ñœßcw$ž¿v?7_·ãPW/›âW\Òö ¤RߨÇho¿±Æüõi±oz!®<Ø„¥¦×ÎÎ+N*·™Æyá‚C-Ìsd±,º‹îß›˜v+ç»Z3ó>£"ÃùóÕ%JjLeIðúï¤:“>z8qÊŸÓ§×4(x´·Ï¨¸I™S¨À¬1 ¯ÎHúsp÷ÉcGHX,™sèõ)ÒrêéyèdèÏ«_“ks¯ì¢³Þ§þ"T†zv¯ÿå²÷îä|^.–(¨ d¾’:õEeÈò=ê¹D]«aO°Í½”¨¨¢TŸäK…¸írÏ^ >¥ÿ¶÷l¡P ĵ€]G_æî“í¬‹¿ýïÂ&„–2œ}@‰y4DXŸ)Ké4x_7›ÖJ¹{£6gdlLè¶ruš¢Æh”ûûLíg¤©ŒIbYˆ3—ýžxz.˜>»EþMÿ¸#+Ÿ*mvï^š…iŸ™Û¢è¨óÜèšž±G¿ItršwŠ]z7ÑpY¿sœ¹®Š.Ÿu ‰Ö¹¹Ê笈qó×]~Ö%uecŽý”iS×<&úøÅ­è©¿¾ž°¡(:‹êøð=ÍUŸDŒðLÞ:=vlªŸÍˆ«œFô5–ÅmAã”5FÃeßGŠjØ×Ý ÔBZü3*™Ýø. 8½I+ë¥| s·Bט`)Æq ‘&†‘zcÊ@(¡Q,çâhÃI,¡eAÎ'½¥² ÜZÃÔ;ÏCGü¾;Œºj¿ü0¦Ó·äÈÍï)‚FPŒ DQ>¢"Ñè¹¼d«'šë–u@ÐE¿bŸë·›O£+aTVêpKèCÊþ"¿>Ün=« Q¼¼¡¿ZP–IcJä%#t!~-r™»&EÄ»-Ö8æ9е,HÔú\*‹¯›™6†Õµ E¡.¹á[Ð0O¡ökò«E$„×É:7µ[Î|‘/ͳs:Û¾;pv#gîªJ×þ†§=}XTÀ}Žæmå9Ã>†B'(úößɹމ9Ó»YpB Š»zUpŽ Æ÷?¥õ ¢H´å§Û¾SItÜ9_¤ §5Fáon»‚̩ûÜÍŠ¶fæb‰€Ê@æq;ÜmÙkõ/„&ñ¢J&‹›ˆ²ðwÛFt­z„ЫÒR$*1¢(m€8¶HÑ…p3î1b- ò/w{ÊÏãTiXB¥Z¤™d÷0 ÛB°K …»-y(Ñ‚NEÙã%0p@Ðy?!bû鿲Ÿ¾ýÊ‘’ܰëtÔIî¶·0g̹[ ÓDœz&tçŠÁ”QbÝkœ óÅZ„n»[ÛÒ°ã•jÁ:Tlj¼)… H‚»íÙeçP7q’$:?ø÷†ç†Npöo|1Û:óßÄùœöæ{ަÊPÒja¿mk¢åÜ3×·C(¬r‰¼šàÖ¹ÁÏç¶ù ò¦Ä8 hŠf$?;8¨Ñ›ä¼ŒN­¹ÿM¨M’¼‘XÈé™ü¼Öc=/´pã}r³ †µå~ß½Dˆ»äà#fF–(¨pÊ3wµkµx|–ºëÜ.º/Ê¥øo"t¯ä^!È#´õ1:•‹¦ ˆ–ÒipYïb- B}oÜBhtptórÜ®ÊÓÖáÖyÎQ67Œÿa±„xD¦á¸[ÔáQ­ë)cmmð’‘ô¡Q?1Ó…[ϳ-QÆ ´òÚi$µÛ27¢ Bc"Bá))íj™æ…‚h`z¿àßÝœO+I–ìóö-ÐîçÿqÒH;²SÑXƬ ´šŸ•¹ÎÂxç>¯e+µÎúÒ¨¯‹wqW¤Å‘Ð.®“z©[¹PÒb8ÓX×ý•ú®bïfIÉøfkæÏÔ¦¾Eºo{‰NÞDs;!›>Êw2ˆc_Mã Hofæc‰€Š¥œÑ °V½s¾ðØÅÜi=Ðתú`g:ÊÆZõöù¤K¯Ü»ë~üSäeÜ×QÿfÂË3û2›9vÒÁ><»¼Í°ïbf)^­ü7=ܰùß™“Ìši~zr?}W;ûöÒYhJ¹8þßO²…šÈû –û96½•ðúÈé;SlÚÖA_?½¸}÷bb÷ñ+Åúãœm1ËEíÌžÿc9ì¿>æO…èL÷’Ö=7MSK]‰ø|ÿØlfÔô­ž¬ No;ÿ}üí?ǃ;9EJhVgUpÁ~¦-;=ÏÚ¨nÁ›{éñav^ÛevÛœ ²q<ói©.²e°ì±À01ì™OÌ“:ÖGŸsd¦%ÆNðÛ+ái*Š Eèé«Í ¯QÃÚæÙó4tÃÑdB?õBiÿ2Ãi„N_òt®èCÉÓˆJ€Û$fÚp÷0Ó ;'–Mª1pé¾ôh¶UlI– ãÎ-ºœØÍƒÂq½)¥«{hN1F+Ï£Ný•­”ýç饛’ù–a‰€ DÚ›óy:¯Ò€°áØîËé+6ÈWÖmÝÖv¤mïâ‰~JÖ ÎÛ”vj馓l—1nµÜEéHÆ¥Cû‚¢‹´M;ØN7,›Sêd¿ô·ÌÓ§3w.>÷¥×lа…Y»â"D–΂ÃàNÒn%z°Ô€ –±.±£/ïØ•ñ¾Hµac+ó_³gaRþ'«U]âƒðu{zÙoü©®g6ÐÝuÞ1·Áù"Ë7¸…lŒßI¾‰ðó#=¡Öêwv´ïìÈR:¦nÚeõ'Eé|E05úxMéÖXrËÌ} Ãvmße´Xgʉ¨[/UáÝ'ùu6§E0‹(#¸…óÒh‘=@6nþ6e¦ŽòÙayÒÓê4j6õ'»ÛÌCí1qcØKn™¹O5b [÷e¶îb©¡„øL“*}×"ÒŽ¶Ô8!"¶»€]§3‡ôéP_íû›+áœc ©‡ ¨@>|ø Uú¯Ehm!ôµîLÄ& æ2BïñÙ¨9oóUë·4î7ºß€ÕíRPãµX‘*펎Ø_gD‹Ô*&Úu©n ¼œ¿r®d9j‹êv¨íTЉXÇž`΢)•QníAÚ¡8OàJU†¡„ˆóÔabÓ€‘¡õ€œ «+ÝJñ¬EbÃ)!Ò¸q#úðõë7nn®11±ô–N¥9"31KûU· P^@RÀ£âûEhÁaoÏyØ—ää“ôöèQÎpIII˜PáT¬‰i‹Ê(q­‚rTM)”ŸÂK›G¾õüã,KÀË@š’øª±ºÝaƒÙ.µªj4•õM‹.kWK=I>ÌÒ²uf&½Øö Ëe‹3¸ $YZÞÏÌüM6O(Ý@ïÊZÍÍz ÷pÿ<=ò ùýVRìÁSn=~W¨\¿™±iLj€92[[íwäŽ/I:ÛOKÆ…˜ï/§‘“{›l7Z*—„Y˜öÙ«±b› D-¤RîÊ&¦-îßùO†Œ3-P¿ûhgÑï³Gñ“-QÀxj7g5jw®<þÐ}dÑ÷7·÷r™îž+6 ÕIüäè›–ßÝ;j—µqÂÜ» kËcðî–w•ù§H·FÉå¾jdRáMÔB*kŒ†’#ööökWo¤[0‹K E=D+ßû:¤…žæÄº+h|7Tø]+Xýã|Øì°£™ïë[ŽòÙàÝ—feeudáð€]çþyþíïÌÌbCEÙÛ&Ìzçu|QoMžqŒþ‡—¬ÜRtsÛ‚}éO±Vý¦„®šÔ²ØÚá9ýĤ娵s Úîó?n¿Lþ¥ sWºòìÂyC3w{ó' Ü|Zì›^ˆëG6á|¬ÔôÚÙy¿#€$ ³Fl?–žý>fÄ(»Ìäöt¦éßíwòk¢Q²¸eþ•u«5CSu()¦!ô§œ:Fï?œ8åÏéÓk<ÚÛgTܤÌâ‡z–ÖŸ¹ã÷ÕèÁšÞÎk}2½¹åzfck-Æò™‚É(?”ÚÇ‘¯±¨¢£Îs£?jzÆuhü&ÑÉ5jÞet*~té—˜êøð=ÍUŸDŒðLÞ:=vlªû‘‚=c¨ºÅÝäÕáÑÓb dv»è„‹×Æ×˜SDüV“¼ó®C=¯)ŸÞ;¬ô+Cù¡˜ö§;ƽ̺„–:Þ.uðè-ñ>‘3RgK’]ÚS“Éå{YUÖd.ëwŽ3×UÁ$±,Äq•Ì´T1ⵈPµÁŽÌý"Ô§Ã -LFKÝèºHiñËS¿!ÿhìßܸ¥/P´½¡:¥X¢P€BŪ"nrç& ‘—2åëf¦aumBQ¨Knø4Ì“—`Ù/:JÈúº¢öý9û£0" ¡Í–$»´§V•TY“­žh®[Òó!Ö² b+™i¨b*eŒÆ+ÇbÊ’¥_¡9m‘Í—~´X5©¯2¼³òûò"ÓÒ·¸2.’·×¬¬…'%º-Oÿ}yoõ²JZÍ{¢ÃêGQ¿€â®^m/à@’Ô8^(¬\¶dÕ Ù*6$IäÜÌIþçóãO„j=M«®†¦jHbÍñßñQ:æ«z«RûÓo4 ^Gl®j¡;B=@ÈT *…»5+>²àn)MPzû¡€`gdÇ ±eÑ‚¢äK ƒ˜Ä¬’ýwbkRv¡Òû\ ŽcÅ¿hZs—Œ'q/ù›]ÚS“„ŠúReMfÊ b- "¶’MAˆT•¢E6dQrD}£µôý"Hc…úEKë­çLVÕ]_/yò=õÕtTPS4#ùÙÁA^ŸðDM‚EYPê8ïÔú•6WœóïÅ”#Eß_^Y†pú(¬r‰¼šàÖ¹ÁÏç¶ù ò>,ÊàŠæhFâãö­4eœ†_° Ùòu~ð œ &äâæí YºnCL]u•оæe]„LÍÄg+Áp˜‰yäcÛÛ£g«njÏ÷ÒŸ§š˜m‰2n •ÐN#þ(k„Î t»X5dsÃÊ óãRÞKrïOwŠåÈ?²ºÌa(B‰…§¤´áÓ7A?¥Ê^!Tàç½*›LrË‚ˆ­d ©¬çh6¡,´ºøPª~ÔÊÝ]F¿¤e˜ÒCw¿VÅ1G×öš5­ŸÿÝÎŽëØ~Ĩt[œ²Ò¿ÿÀàµçüPÉ|×hÞÁvIbñXŒñÎ}^ËVþjõ¥Q_ï(kñúÏò² Ì-Àq¹}­Ë-âL”òÙ«Øw-•JBzÁP¯f¦8§U´µºôåŸÈ›¼íš™©/ µmY?BfvâËNý"Ÿä\wÁîœô¡³s=9þ.ÖYÜc°ß…iËÎDϳ6ª[ðæ^z|˜×v*j–‹Ú™=þÇrØ7~}ÌŸ“xºWyÊš9YíÔî‚eIÏö oøòÐÒò˜òX`˜öÌ'æÆÎIë£Ï¹2Óc'øí­Ôìæ‘ã™?HKué´b?òÞd’œ— –ËÙF@¥"_ÏÑp’™9¤d¿Ké£1êý½·õ盚Á'x‡ê½/¥ IP f:!pç„@‘ÖJ÷U{ÍÛ’_·ç —ýÆŸêzfÝ]ç)×7˜Ê¤Ã~_ü£·ü:-öM/Äõ£ƒ›p¢ÔôÚÙyÅ•X(Ì>±ýXzöóḯ›™6†Õµ E¡.¹á[Ð0O^öÕÍua@) ýÕ‚ª4Òx:BÉFˆ£E¶„>¤ªz‘_CN}êYMà"\T„ܸ'ŸÊ4Â@à F¢(^”ؤ¹ÌÝ “"(ró{>ã¢"Ñè¹ì§# æ#Ö² pA²ZDA€ASņ$‰œ›9Éÿ|~ü‰P­§iÕÕÐÁT I£9DY¨¹´à,Ó£Eï·æ.ÙCâ8ŽH:äwbkRšã8B¥_ý¦µø{ŸF†±sîÃ4©-ŽtàIî¶·˜¬Å÷ê:d†¦r·fÅGÌ(±-HÓ¡ „P *PdŠãÔ)—*¡§# æ#Ö² pA²ZDA¨€ASÕ††xxöÑ"OžÚí>·^úÑ@¦Ø%{jê¸j95€‚¸y{C–®ÛSW]¥¢¯yY×!S3ñÙ*Ô‚¼3¾»qïñ¡%"ž’Ò®vÅ‹B¶I ‚õŒ¸U€P:B‚¢nöu›ÏË'IUNö;Ì(kî}ý6B8GÙ|f%iÁÙ–(ãZùí4⢌Ÿá7^ÆG¡§# b- $; E„ò šjL98²1w°6Ø©ÎÉäÉÃ"[†{<Íöø%õE(9”úÉ€Æ _]¨Ò †z53Å9ßb*ÚZ]úrd„OäMÞvÍÌŽÔŽ—…Ú¶¬!3ÖóaAñX`˜öÌ'æÆÎIë£Ï¹2Óc'øí­n¿ä‚Š9}Aë„°'«‚ÓÛÎÿEûÏñàNN‘ÌNÄÉMòæ´È¿³!3j–³jÊÁBÿc9ì¿>æÏŒ’°uV÷ìwaÚ²3Ñó¬ê¼¹—fçµcÜEíÌž¦qé^bOÇœ ²q<ói©.R4È`.Hv@‹(å4 t4äEý܉&Ïo½q(r8õ-pÃ÷s³Ï¬ã¨‡©Us€p(©$ðÅHëæÍŸ&Fý„¨…ZP`pÛØ,vDZ5n‡_hèµ±êk7bSu;%TøcJvÛ¶+ÇÄ%DÏPÐÐr¸ëR>-ìºuÚË5‡S<†'#þ‡eÔ\,ΠغuÊðMüQ¶ ¦Ô# amBì¡#~ÂÞªè45²°´ãF©ºÄáëöô²ßøS]Ïl »ë¼1âoyA=çì½¼p¸-]W2X† ’Ð" ByM-Êü¡ù˜æüŪ'W柘ó¸Ù'kÏÚt“C¬¨ö%Qq­0^_Y‰ÑLw™ ®j‘Ђœ xõ®Qû†·°u_fë.‰q@(,ïwá;4°qó·q•3»4ZxÇ*†Õ³žµÎz–Ð(‘-ÈŸR«Ó¨ÙÔŸ Íî“üºO’…åt´ÇÆaK,¹e¸ %´ˆ‚PžAS*¨ci” Ø?ºíÊ©÷Mß‚S?ezz >ÖT%#{«,ÜŸÛlPC#]%âk^Ö§–}8òR“$ŸÍKžäk&f—‰( Õh¡<ƒ¦KæY¥:~fqhóu£ˆ¡GqNÇ©åb¸Nª¼£ÙlôìäÉ»qŸŠTu4»vmmÉ wo£¾mÛÍï&öiQª¸Ç(å4Í‹våííçNU-6ˆ©{×;êÿ… Úø«WùùeÁ0ܰ“á 9©ÍíLJö™rDPšˆ²Pí€Qd4¥9ZiÕ‡óÁua€¨4@‹Â!òžÄ»'Õ¡:Õí  È€„@’?ììÝ1í¶Ã–¬šÕ:E€J´H­FÔè †©Ãcf@ÕZ€ê´PmЫbAG, ³6jUÍ€@Žà­×HHUǰc?GÏ™ƒ Ë÷$Weج¹Pµ!áíMÂ{aM¿e’ßo%űýXzöó|ÏDsÕ'#<“·N›êFY•Û.ÌažñòY—Øa›«|Ί7Ýåg]RWšnh‰&? ÛMØNÂ1ô|ÁGG†M1¬ð¸D×FÄUÎ:ä¾Â–8ÛÖ†à)‹µ,ÄY«´¦ZDA¨Øqò¬éøDÞ»BœCyÏÏ.àìu^Î _=Ñ\·äÂŽZŸ‹pÜ×ÍLÃêÚ„¢P—Üð-h˜gylFn~OÙ a a#Q”χ¨H4š³®õ–ЇTÔ"¿>ÜO–žÕ„(vžrìé´üñúÅGC“žcõ¤‹ÎR´ Ÿ¢ŒT*¡¿ZPÆÓJFè0BnB“‰mæ‰Hž±‡ß8z§~»ùœÅƯ„Q–š­ëŒFßÜQ8ižÊËo(ea¹®©$>Ð\æn…IñÍ!amž²XËX¥5Ð" Œˆ+*$IäÜÌIþçóãO„j=M«®†¦jH2ÍAoGÁ3—öu“;"³M½:ôÀåôË‹VÃÊÚ–ös½f6gF™2¾pOq·!¶¶!¥ñÇ®E$´™ÂÝ–,alÁÝR¢œsŸ8É=è]Ö,‹kf÷š™øg_µeîËÜ»)±„³-è§(#’#à sîÃ4©-Ž¢’‰mSwM–Œäý„ˆí§ÿÊ~úök>â®Ù‰ÐuÎF;؆zöDà÷¹3¾B¬-‘4ÝÊ@èå’€3b›CÂÚãQêË îþ—K9{«qóJèÃlK”q­|„vñG‰m kC©šFæ*­)€©gmŒD 9Ë6 T* éC½š™rÕƒŠ¶V—¾!ây“·]3³#µãe¡¶-ëGÈLþÕxnülKn¡gSJ>’da|ra¿U~ÇÃİg>17vNêX}Î}™–;ÁooylÎrQ;³§ÀÿXÎûƯùS!:Ó½è¨é Z'„=YœÞvþ/úøÛŽwrŠdñaòº¤Y#{·34mX÷%BI©ÑvD…³-ˆ(#’P±Ã¯æ‘ã™?HKõâÛ¤ÌíÂ’1Ÿ›@SK]‰ø|ÿX™%@ñ©óоð»³^š?—ÊUÁ=û]˜¶ìLôDX“ûb¯Ê|ø‰Ô6è<ØÞc{8KÑ‚ˆ2"– ŸäÑsÎÞË ‡ÛòŒËÜ.,—op Ù¿yâÐ Å4¥`ذµð%” ZÒm ¡˜R€„µ ±‡ŽøM{[¨¢ÓÔÈÂÒŽ%Us°Ô† 2X®ŒK½R‘ö‘(Ð" …Ðq‘ã¬Ò 9K50T8Ve¨¿8ý0^_Y‰Ñ…Kw™ ®jií\ïeÌ‹¯f)‰¦Ö­˜‡ÚcãÆ”ÉÈR'‚' aɈ[8/våj·äT>»^œ”ZFͦþÂ%nöÚêUçRU©< í#Q E ¡¥¨qV$ͳÂVÊ9#{«,ÜŸÛlPC#]%âk^Ö§–}8Ã4š$ù¬€l^ò ß f— ¦ÞÊYåÆú»_^)5Ó„F ‘ö‘(Ð"ŠË8«¨!ç *¼£ÙlôìäÉ»qŸŠTu4»vmmÉ wo£¾mÛÍï&ɼ–ã4ìÎ3˜Ð ²½ –#í#Q E–qVQCÎ8 T†v2œÁ?'5·3 (Ùgʡҫ×fÍÌJr i‰-¢ ° ²Œ³Šr–j˜HûHh*i‰-@E"í#Q E¨N@‹P€ ¶ S¢`^pT E#ÈÂ[Vo;~éJZu65h±u}pu;¥PP7T ï¦Õuë%¿ßJŠ=xê­Çï •ë736í0Gfk j E#²¦ÎÛþŸ´õèøª_sþùóȆêöH‘\ŽT=$ñW£oZ~wï¨]ÖÆu sïf$¬­n§€J´rDÐs„pdÙ¢Ž2Žé´°²Ÿ¿‹+¸¤–!÷MJôo_LY»i[‹zï³ä~ƶî6ÃçKC¨6ì4Ä#À³O1±¬éÅ´€jøOíòÈ’,Ì>±ýXzöó2Ë‘¢£Îs£?jzÆuhü&ÑÉ5jÞet*~´2{Øú¸Ê£¾ÆÒ•K£:>|ÏDsÕ'#<“·N›êF ¨ïf;е,Ä™ZsT  Ež'Lµn“Vz:xM·kRñ±¢,||~ÿáä?ÿÎ~ú¾¯£Ó¸y ÓÕ~³*Ü@!Y¸f܇7>gý~4ëwÎõ¬ÝwÉk:VpI-„Vóò.ûEG 9 ÄùíÏÙ…Q@¨T‹:j`˜ÁÈ@åósW$š<ŸÏö5½(VO4×­Ý+DFn~OUQÐ^M~ˆŠD£ç²Gш­ÿËÜ­0)"Þxè¯TÓÆÓJFè0BnÂÌÃlG±–ë¤b-¢Pp: ¼Ë^ïüÛ‘Õ—´ìΊXø¼Ò É×;Í9ñÉdꊵ~ôµÈ/¹¯§'Æ $F‹@@£dé¾:~ÂË{Ùwïf]9²ëÜ‹Ïi!!Èz9±¤3o Ζ´èýÖÜ·-‘8•Žd¦±(óÿ9„øï…,kzј*Ê Fæ] wkV|D×$ej.{3ˆ¥þ»#”Ъž¥)—Æœ»Å0Mj‹ãûY0ÛQ¬eAjÏuR5€Q40eõí©_©ˆHDˆ£EXÆ5É»ñë¶¼˜ýü3¦Û¦ë€ÁŽc†µ×aÉ"tð•É× 9É_ðÆk£&t¢?‡:Í-ú;[ôš –„BÝKôÚZQý†·?g»¡»t¸Ð%µ˜àŒo\Ä ›; ÄýŸÂF0Ëš^ŠDy>kÖAè6B8GtME#¶þg[¢Œhå#´ÓHŠriD5zyÎHµä:©2@‹($ñãÝ¿ë9{FKé–qÍUžQçþkT¼sk•÷¯§™…ÚïfÉÂ2øJ³!3Öë'zùz‚€Ï-À†³ÌÄa}­Ì jáŸïÿË jáOG ]RKZ–Í94²ñëc›ªã…,[̲¦—ÂPNÑ?ËEíÌžÿc9ì‹kRgº—Ø(±õ¯³*¸Ç`¿ Ó–‰žgmT·àͽôø0;¯í’Š9AdãxæÒR]ä— –kÃuR•€Q(Jg(÷ݲ¥X°Œk>åÄë´üñúÅGC“žcõ›… î¶­€?Œï>•rŸ% Èü¢þèLtêöÜ÷Ÿ’ª [Z ›9yfqo½Ð%µ¤%/Úux4õiÐÞ~nàTþ‰“ˆuM/Å@Z!Â|*„ΫꄯÛsÐË~ãOu=³î®óÆßJX¢hÄÖ?¦Ô# amBì¡#~ÂÞªè45²°´“̸P‚‰ᙼuzìØT7–ËFÂëAæÓaÚ¯m€Q#ߘjÝ&­:ôtðšnפ6^ÓµŸÈ›kfv¬n/*’È{~vg¯ór:$ró{„ãA# 40Ì`d Šòù‰FÏ¥¢žrâuZþxý⣡IÏ1‹z–³,šÕÍuK~é²”¾%ô!µÈ¯w®‰žÕ„(*0j}.èëf¦aumBQ¨Knø4Ì“Å[Qá,E úYΪBï­ÝsÀÊñ(à#úßþÞh#’Å·{òù¢ÊÚU[2K2¹ÌÝ “"â«.ôW ªêHãé%#t!7$¼d>¦ýÚh…‚ÓsXøã]özçߎ¬¾¤ewVôÒÝ@‚Rœÿ0¼ŽŽºi›ÆVÚêR~gÕ,BkkemKû¹^3›Ó)Ü­Yq î–úåÊùö_3»×ŒÈŒÀß8_ëª-{Œp_æÞÿ׳Teј2*™¥ô“܃ÞeÍžânClmCJÃŽ#äÉâ­¨p–¢ý”¼*$ì.°ÆÁ³Tm7ºQwiÕÙAË^x,¾¥ ‰bR|÷!IBTÑ,uȤ;B= êAÀ‚ت3çn1L“Úâ¸HOh$¼D!ötLk«A ELY½AûÙœï"!Ž‘pSÖnÚÖ¢Þû¬¹Ÿ±†í‡{‡Í°Ä‘ˆWetw̯ø‚Ô³vÜ4OLyt7;Ü’ ñÒB) ’ ¾~ør5õqÀö+{Kz¯­‰½MZ#t¡Ûq×ZÌæ†_Àuv ýðòiîË'ç­L:°xµ{êâò”%UéCJ@(w\H}ÃSRÚ \ü¢¼ÎR´ V…TãV¸Ãf“n÷‘IŒ=ÿÌ߬¹7ì²QÅ`u×ÏË'IUNåÜU.K2™m‰2n •ÐN#þ(±U‡ËúÕ$U£ÐHx:ŠÁéÓ§Å'bZDÑ ‰ïþ]ÏÙ3ZJ‡ˆ¤Ô_~(¦ý©ÁŽq/³.¡å‡Ž·Kúœû 3-1v‚ß^oE…³-ˆ(#L¤@ƒa­¢SS¥­–YΪ) ™Q<œ:ˆ“›åÍi‘gÿBQå²Ô!UÁ=û]˜¶ìLôNâ8ŽH:Dä°¨v° 1ôì‰Àïsg.|…4 X[¢â€ró!mz/©å'ݹV¥Ç.IlõÂöä-¦Ù}’_wa“ t:9xRáÚcãÆÈR–`Ké6nþ6neÓã-lÝ—ÙºKî­¨p–¢ýeDDÕ3œÅ7 «g=kõ,aQFc—F•À¸È:ä7¨ÕiÔlêOÐI«Žy(xÙHu=0Kx:µð!^>@‹(Êu ûúGF ˜™»0&ÿœ›*†‰¤dŽ˜ ŽžŠÅ0uŸñ(õÀåwÿË¥¤‹³·7o­­bH‚øþéëµs/T:µ§C†)£Ü¡mé«i(•©mÁpM’|V@6ç>.(*@µZDÁ0³õ†ÈåÙ!ï—nôÊ;HÉ2,ŠO‡ö…ßõ’ Ðü)Å}­µjL´*ñ‰¼IbX]¶mZ-³*®íîSZ?ódå‰yÜ·5ðFaÃÝÛ¨oÛvó;Qû¢rT  E“¦ë,Óí¬б^å¤dŰa!jáK R ZÒ R«ÆD« QrS×µwеH)ÞÜÎ4@t.€j´ˆ‚À7܈énàH8H)zŒ“m˜¼[r*ß8§äC¼€@‹P½€ :-@uZ€ê´€D-È35½Õ˜þ×ôs‘ Ð"5· óÕíT"$ùnƧ‡8NF‡ÎE5¨’—æÕžï}êL%?Mòû¤íGS.þûøÍõF­Úýbç8uxGÍJo‘ª,—ü~+)öà© ·¿+T®ßÌØ´cDÀ™­Õž ‰°˜ÃR¥-RóˆYÚ¯º]€òÂ&©_{SBqÖpèýÅ5©2§Ê À· åYty™ã’ …ýGoïÓJóûã?7z¬œòÚŠËÿW™oì­ÊrI⯠Gß´üîÞQ»¬ëæÞÍHX[±EÔNB|¦I•´HDÚe‡ ñlþSJ‡hy(‹.|:ÿÚk@‡“wã×m;y1ûùgL·M×ƒÇ k¯ÃNÝ?¾)61íVÎwµfæ}FyÌv0Væö²ðV‘äCT9IfØ~,=ûyžª¾Yo{·9Ž*¦¤RߨÇho¿±Æ‹cò€$räÓ’%— ñæ[ý´âœŽªÑ¿­»ÿœvÑ×ïSêJÄzî9¿ÇîH<í~n¾nÇ¡®>^6MXZ¤ËE…qbÈÀð|Ôn÷¹õzF’)¶B äžš:Ž¿¬Å¾é…¸~tð`Nv5½vv^qÅF¤ot^¸à…ă d±, É/檡A‹ GäÃy¹Ô÷{½u£æožý%wÞCò°÷;w•gÔ9„ÿïÜZåýãëiGf¡ö»Y‹N¸xm|9EÄo5É;ï:1Ôóšòé½Ã”xei¸¬ß9Î\W¥ô ]Ô÷xÑQç¹Ñ5=c:4~“èä5ï2:?ºôûSu|øž‰æªO"Fx&o;6ÕÅ19A¬Ùü7¥ Ñâ–Œ –‹š…®D!´˜&ôÜ‹R¦M]ó˜èã·¢§>þúzÂr„¢Ä¶HùË¥Áða‘-Ã=žf{ü‰’ú"”Šp²_ÄUNY¾ÆBN_†F§êSԅļØÄZâŒ4sM´òÄíùŸ¨ÛF£ðÖ˜AxC4íý§ù·Ñ1sNÌSÎF§å×/>šô³¨'CTxÔú\êäëf¦aumBQ¨Knø4¬t ÛÕÍu%›Œ¹ù=e*h„†Œ DQ>¢"Ñè¹¼¡¿ZP¦HãéÔ}¡Ã¹±8VS¸Êݶ.ÖŠSŒÐsßúª±E~} 95¬g5’â[¤üåòh½q(r8õ-pÃ÷s³Ï¬ã‡©BÎñ2w+LŠÈØè¢`^lb- R³|Z9âº÷Wê¾Ñ|]sj¿e¸>šüò«÷u”lI®™ÝkFdFàoœï_Õ–=F¸/sï¦Ä~Šk0ÄÖ6¤Ôüq„J¿¾M%þîNánÍŠ,¸[ê‡oé̓+–8 & Î4‚嘜 ¶3ß ¡?zDUTiØã’˜R„žûIî¶wYƒb[¤üåòÀ4ç/V=¹2ÿÄœÇÍžpæA[{ kíîe ô LYÅÈÖè¢`^lb- R³|Zy$/-ùÉù ûb’méøÏ%—ÈäVÇ!`×Ð/Ÿæ¾|rnÑʤ‹W»§rzìE…E(¡ð””våþš¶Fè B·êÀ9Êæ†•¤Ç…!Ê1y@’Yž]Ð×Ѫ'hG«’ '+9[«ÌdBϪü„ÒËV“„-Ržr™ôn»rêýGÓ·àÔ%ÕÓ[pb ÅlK”q­|„vñGÉÖè’ Ö² x1Ë' Eþð/¤~`JÒý{çÅÕ5à;,ˆ Ø@Š‚ Qó‰FI!¨`¡(Li ±EfEElÑü*H³`#†ˆókÀ`ÿ°€E# ëÌ¿—eËì좖ó>û ³·œ{îÝÙ½‡™{îá%TÏqðºÅŠ>NÚ£™Éù¡GZšév¬D(!U^Ié s“,H¿¼kÆÀΨ¦êÖŢ܌iQ{Ŷ<€ Êpüâ;ÒZMÌo}¨êñ=õÑy÷÷¹u{’ÍNÑ–ÚIе84—7vZ?tÌÒó‰…i¡£ŒÕßÞûmCÀ·MXÞIjÝ€…}r’î­L8Ó?b¸>þìÚ¡„A^©4?‘æ´Û„^É“ˆ±Ù\Ÿ,ëHñ“öÊ[—¨³³cާ…Û›t¬zãLV’sðv$ï‡N}!ñC²Ls[lÅ¡¥v€OÅáDá¸ÕªFgíUVȽ”H<Œì]SìÉŸ3"W^¼ýŠÔ2ìâÎ+#)wÊHÇ2væ­ñË|\ßA¯Ÿó„M’šŽ1woÉ"W'$nªfødÅãÉ{ö»m|¯¦g>Úß7ÜSú§$ÅZú~˜òðÄœ5ì_•¬Å>IÏë]Œ­ÜÂ’|ÝÓp¬UrÞ¶]9}GNZÈÄØz]kWߥƒh"Íi·‰L-0¡Svôk‚è­&¡Œ’mlÎÚœŒ£¦%=c©h÷0±°væfÉ÷¡S_HH^É2]Ìm°E„–Ú >!®……®MS0­õüßsíAãƒØ/‘Z’Ò1 7ròqòmHt’ÐòŒÛá)± †©›5l†…D ¾•¤XÓ°Ê~‰Ï¥è;¿h‡&Ë9)>‘OÕ®ð'k3гvÅ8¡£äG˜Æ Iaì—Hº\:õ…$“ä¦W  s[lA6|†î 1±A£4¹ßOšžëbýøZ'Dí½,ßCÁ˜°ªµlëHl¦G~‡€ôý»=Í›ìËLðÒÏu¡° Ôo@`‹(4=òkÓ|]Ó¡ÜÅÊm^Ü,/Qá=×€“%k¶ÊTlÅÚ#Ÿ‡Øô=×)üø©ßí‡Ä³e*¶mxê§x´“ÏT°›í¤Ëlª««e*¶­ˆæüX·ŸúæÀ%šCÄßê 0FÇ1>8À¹{XÉN¾½šŸ±¿àìÕ»ÏYÊ{šš L‰+·4¸®þÀi/À hÓÀü ¡oŽ îÈ“¬wÏËÖ{ÿppõ9 ç“â¶.oMÄùx÷ÅEuÃæ3wÛ›j²ªÊ‹sÖ¶´R€À  ø¿)Yž•¼íÈïek0~C]Ü=ÇYióÿ‰oRR®ø4k¡¶l!ÉdŽ`Êj]¬Â*DD.B ¶y~ŒST=Aà]­FNúÖPúÀ¾.Ú¼lëÑËOëp¡&H’U–²=ïLÙÃZ†¾ùH7¿¹î*"1e­ý-:½(½UUƒéZ¹ÎOšc-,êUäâ3,\?-Á¥/§ºªž¥sð™ZT[ìu%zPH–D{¸Ìè¶mŒ•AÌSÿŽ™åÝGåÅÝKEC‘ÕOìßkÑ{éòÅ7Z«ƒÏú]S訴§Ð7GHâÝó¿ÖsÎL–òKNú$fŒÜK¥¦4eJDrɃ!…+ºñsÅlÝN¯Ä\–zÐŽ|·®ÜHµüò²½ç¥½TÊÈßíi®—/3¼dy4ÎPúˤ[¸¸ï¨,=‡–8dYèâ±%kAêœBá v)81›ŠéˆÔVDÕ{]ñ¼ ¤J£Lû¸Ìh¶mŒ ÎAÛøÝ“G/ ûŽðüq„¤’òÅ7Zkõô:ífÀÆU#Êv[¶ ä§ÛFMát¶Œ`ÏÔè$öÀðsÅìÆ=uìŸ`ÀDÁ/Ÿºù…PV53yÌ㈮­„Æ#ĹÃÍ9Ÿ„L„#$l‹”pâLé­ÈïBð2*Yž̒Ò3e*¶mŒ5a_ÍI-Žûó«Í0¶àãÿ¥’Ø’òÅ7ZˬÍ΂м)Â.ÆzSQ¼öûÄ⢘?—ìåF• oæ¤l?v¾¬âÙŽyÁ-xI°–Ø-äÍŠX–?!&‹­^ã\nÄ‘¦Á;ïÃ݉€ÄÙ “¢ C¨¡[MbÐmE¦x‚—TÉ¢(öe>½(8šãcw­®¬¨ª¼wêÇùû"WûFŠ-)_|©µ™– (kÚE§2Cª¥×òc`Xb`jŽû13'õ餌½trò›.Û;°öÜ9û:B_pÞ• eÎj²fBP uTŠ0kT|­¸ƒv™ˆQ€~+2!U²(íá2£Ø"´1f&ç‡Niih¦Û±¡|„Tyé¢ Ç/¾#­Õ~Üå‹o _­6„k!1Ì|½!òyp`~¥ß=TÇMT×PS"jnæ ?%‘D¨7ãÄ~VtÞý}n ‘(³|Tï©ÌÒ–UIÚ+l]¢ÎÎŽ9žnoÒ±þé3YIÎÁÛånEôºÓ5Ù%+üe&`‹(¼gºÄˆÿ+\¦ËO|¶ÌÁû,ç¿•ö° P$ýD¯Þ{òçŒÈ•o¿"µ »¸†óÒãGÌÝ[²ÈÕ‰_K¾øŠAî_ƒÉÈëz霳(ï«eü7fmž>v.ìÆBªï¾ÈÚØ­[¿wÝ$\‹á“'ïÙì¶ñ½šžùhßpO9§'LÉ66gmNƃQÓ’ž±T´{˜XX;7£ÑëJ9$+öe&+`‹(gfŸ&~ƒñÜçNûá¬'€6„¤ßzÁtíAãƒØ/‘2Zžq;<›¤È߀~-ÅF¨³˜Î~ná½4Í›N­¦ÛÉ>4Ù^\œ S6#j˜¸½K$…ž ø,0A“ÂØ/9[z+z]‰6-‡þp™ ¶ˆB1½JH¨þfigöyuBÂk4GÇø¹2¹³“ä?Åi1Ì×wºgÈ Ø" EDLÇ£±þ¿EeDgüEb"^Ç7Ú"2¹³×ïñŒË®gø¥çytœé1;£ž¾ Ø"ŠÅÈ­_"ïØ/³PìKôŸÿ‰¦ dÊäΞºó=Ç]ÞËXÃŒ'Ç¡ŒHúr€>`‹(Ö-!”á´ÑÏ!FX|·¦ÏMdrgç=®´jx÷…Lr€>`‹(øøÍ}7úÝD}ÓÝ„—­ÊäÎ>šksüÝ`Ž\“[P¶ˆ¢a½Ó ÅfÉäÎ2Sµà§ú˜ü?»êVX*·„_ü¯-­­°EÚ2¹³«ÌÈŒz¶å;×Táû+à4Ÿ5!‘M¤^á¿%ϸ8ű›ÌÂÚH\pT¾»£¤ˆe ;¡hãÕ§ÇN]A.……ìôÇ¿ÿ6é²×jQúÃqÿo“?»v(aWêû]cÆí©×Îàî^5Ùwó[-ÿ£½T¨5y—î⺟%X‹Ÿ%I±—‘žpåe' F`ýBÜ‚[kÛØØ\¸p¡B`-Ø" ]drgÇ0 »àµvÜI²ÒÉɇ zK•Íå«bÎÿþ˜sŽüÙV®‡€’vB£°¡•œ·mWNß‘“21¶^×ÚÕwé y÷Å¢ØÎK¬b$y.ðD à Ãeè#Û <ù$ ´ `‹™Q¼Øó?†þ¹]°óÞ.¾¥5 ë·yÃu糨%å…ËÍ(ö¶’dKÚ Ú†6pð‹vðkZ^ž}±(¶ó«Xù’¨ç8Îø~S߆}®Ãø ¸Ô²´ZÅšÅ-ÆÖØ"€DMÿ^¶æÂýºŽúý¿™1;`F·–Öh¨M+89Mz1ÅÀlya+ššÂß‘ 0FÇ1>8À¹{X±N¾½œ¿=ûÄïÝ}úN­koËáÎî³\ªÿÛš“o¯ægì/8{õîs–r瞦fSbçÊ-­Ÿ°E‰tµó[nç'½ÿÕÕÕI陟Zj?Š<Î.̬wÏËÖ{ÿppõ9 ç“âîµ&È%1îKβ¾ŽLÛ>ª·úÛ»¿m \qäÏ凗ýGéß3GHâ|¼û⢺aó™»íM5YUåÅ9kÿµÖ[œ%k¶ÊTl€¶Á|?OÁ嫟©kW1eµ.Va""¡[„ÜŠÉ:£‰‘‹Ï°pý´—¾œÂªz–ÎÁ;dê¬àèñÓEµ4íˆDÉ’»ƒÔÈz•‚-Ðf¨®®þ÷%‰wÏÿZÏ93itï/9铘1np/•šÒ”)É%†®h|ŒË˜ºnÏôŒ{)‚Žn Ș\ȹÃZ·Ó+1—¥´#ß­ëӼɾÌZ~ùÙÞóÒ^ªedïö4×Ë—^‚ ²<g(ýeÒ­ \ÜwT–žC˲,tñØ’µ uN¡p¼ÍÿåÄ4H2ŽD(ýÁD¨qÿhÁTŠÉ:C” 5›ŠO©=¶ é R%‹QFÞR#ë… ¶ ‘ÆU#Êv[¶4zbÛFMát¶ŒàlÔüGB«ù¹«¾³ÐÁ0Ò4¡£e"ıE6î©ãD–˜`Ðà &Æ!æ~ùÔÍ/„²ª™©Èc¿@Ìpm%4!έ…hÎù$Œ`Û‡¶ExËzû4Ië-Ó€`È Åd !H ÷(ΑÞY±£'‰&±;¤IEî~ZÀ$ÂþGœõ¦¢xí÷‰ÅE1.ÙËõ&&oæ¤l?v¾¬âÙÎ,Î-xI°ÖîÃÔÙG'x‰¼MÍŠX–?!&ë$B“¨w£Þy®W‰³&Ef+x¡;™5¦Ýý˜Óˆ`È Åd !È0„ŠºÕD¤vVìèIBP©’E‘»ƒŸ°E*”5 í¢S™Ž!U‹ÒëNù10,10µÇý˜™“útRÆ^:9yáMZàâ&0{îdy½!ÀU™PÖqá¬&‹ŠÎ'h:} ­¼‡vöþ˜toçh3GR ÅäyfŠ/£wÐ.1ÍÑï¬LH•,J+‰é¶ð¯òiÝÒÛÉ Zf¾Þù<80¿Òoƒªã&ªk¨)57ó„Ÿ’H"Ô›qb?+:ï>wSÚè&Y>ªÇ÷Ô fi˧j§åñCÇ,=X˜:ÊXýí½ß6< pÛ„åäPLîÚ+l]¢ÎÎŽ9žnoÒ±þé3YIÎÁÛåîì‚(Ãñ‹ïHk5‰Fƒ’[IL°E’uußêm‡Î•?~¯¤ÑQ·‡ÑÖõ Öâ¿`yäó9Ž^·qœ Lœbvà€d>ƒomKAåÓ˧G²òº^:ç,ÊûjÙ¿ÄY›§Ý€ ;žP@±)­|»ÜŠSž˜³&{vÖbŸ¤çuŒ.ÆVnaI¾nƒ%;ôR(&wÈ LÉ66gmNƃQÓ’ž±T´{˜XX;7£³ñ#æî-Yäê„$ÿ Ê!ù3ÅôõÛ¶ˆ‚P:+|{%>cköT#Æ›û×~;¸AñZåÓÛ%Oæßæþ¶âøíùOÐŽîŸX< `|r÷ÚA’O¯Ð÷ ÓÙÀOÀ-¼—¦yÓ©EsSZš»ÜRìÃÛDš†õøPöK|®¸ŠÉ:CDA“ÂØ/Q™òlé«å·ÃSŠr cs:Høô¶SârüǬ4•qLÛÈÆ-b·`®èN¨ÜÓ1¸_Xx’c©“d…—ã÷/ΦS™ý!ÉÝœf‹ëM´¢,vÿ—Œ¹¿þy³ªNgàXß¹+§óÒ%íd,‡Ë¾è0>ˆ¨`÷J#PùŸ4VEÄ´× AÕò¬ämG~/{Xƒéôêèâî9ÎJ[¶OØ" Â@îÒñ¹“‡Z˜™Y ¶6ÑnœkÅí`¶ÁͬHú‰pšcèá—8Ž 7šaëws©-JuX—ZìÉٳÖÜ%FEíX>Br)gY°d÷úi²»ì I ÉÛáUlc¥Sò¤ØˆÍa¯«Âo“™&\kfeó¿cfy÷Qyq÷RÑÁPdõ“ Ø" ¢5Sª÷]®)ý%»ôNü-»%û¢íUx¹bwè™<y\ٙš®R¹ð)B¸urDÃÝ\j‹4%PÛ²ê6;ëǨQÜõl¦1¥ŽÀ'pÙ¿ñŠmu]×3X§‹f¿xqåq½ë*8mãwO½40ì;ÂóÇ´>€`‹(JÖþ«³¦UÞ(+//ýãàîSjŠ‘ý2D±€V‚1öäḷóB=FrLÐâ$Ku7—Ú"M ÅŽpߌ”ešï²iþvN¯ä^ìsãuúhfå›ù—ÐQköÛ5a_ÍI-Žû£ÃØv‚Œÿ—·yù[Dq`ϲzýmد¯]­N9-B¨œ—.i' S[0î+YXþ¿*v’÷|Uîóúîæ’Z¤)¢;+¡3R]ãh¦Ë>Iž[òž³æÑ §Æjï—œ#Úb˜æøØÝc«++ª*ïúqEþ¾ÈÕþ…‘Ò m!5$ |VÀQ¼£Ó§³³17ÔÕÀknþÅI2jð’§Ø ŸŽ~^WZI(âûg6šîæ-Ò”@Q,`aŸœ¤{+Îô®?»v(aW*µ{}s÷'8ÍÂqÂô@!S‡—P=ÇÁë+ú4:if&ç‡Niih¦Û±¡|„Tye„–°P¿(\_ÜæFÌÆ¦aCÏ .P—lµ|ýeÇ–VP~ý㵬UÀQ†«Ý9žV¸½êEÍ{’¡kl3.dfHÃÖÃ;`ظDÕuKêÙskâØ· hº›S´HSE1%çmÛ•Ów䤅LŒ­×µvõ]:Hš{}3÷'8œH ·ZÕè£½Ê ¹—‰‡‘½kŠ=ùsFäÊ‹·_‘Zƒ]ÜÃéKèÐæìAx&ß"@VÀQB/—”E±›/ Mîæ4[¤é°N݃_´C“å¥Ôîõò¹ìóq-,tê…Öz~AíAãƒØ/%·éùµÅ¡é¤B¥‹ñW’Ëq½9qÒ°EhHuÒn*]¼¸üŽëòÅI>ë—°ó·+í§§¢€-@Ë#º^Dª“¶`(sIþár;®ÿ;qÒ[9¼éq<ö‘’z—.†ƒ¹yZê(Ô°ïo\>vì¯ë7_¼faݺõê;ÅgºÜÒÚ›ñ [€–GôQˆT'mÁPæýÃåu\ÿw⤷ Ø3+ùáý›ÿý”‘Qx"IÍ2Ñ­e•ù„ÒHâÚ¡„ ·XV£ƒÍõ;°^Ü»un·ôjÀglZ#2E?—äÞ|Çuq¼©jöžŽÐq!Ž-B’ªJö—\xôì²vÓឣ‡ñÝæ_\Î9{Ðìké4Ë~pgvùʳ{ŠÏ]ª|ñNY§‰íÄÑ_™*qËóï¾ðà˜>ä?7mþíÏÿ°„—Û‹>ÅàA en_ öœý¥ÆUïíÍ#›‹þ[.(AÔŽy·cÃïj¥Ï©¥¬Û×Ò5ž—ESaÁvùé’”üØ;‰’%A1Ú¢ò)ä´fÀ 5"““6…xs×$Q÷æ7èA÷À†”’¨ý‡_  ÂŒê®Dï8¸¢Bi³ÿ0΂âÏØÝÙˆþ3¿¬ƒ?ûßÙM-%Ï.:PðZe̲9¶_Ÿ›ÿÓѤ{ØæÀ¯è(³`Ö×&êÊÜÕ?'çœ'TÆÄ ëüº„]¸ŽB7ÜnŸC¥ª½ÌÍÅÅs¾\1‰#¡pÁÑs,ÜiYÐW]^ùaïI–غ'oq¶£'®ËÒm—mHzF#Ø;©’Å(#y´Eå·QÀi{À®D@{@&'m ÿðæ8®Ó„ïÍË;i»»Œˆ¥qÕ>dúÜ~¼ó_óŸ!wqéÓÃÔ‡£ƒQ¯ó2Ñ0N¬‰¢¬ì,ç©CºpF»{oû¥ìÄSG^±ÇïÁÀ°ÎÃCÐÑä·G~F_5º½¹;˜¨ütNf ¦PÏ}4§"©ç‰P1÷ÉÇ),äì1í6J-A×.Eü.÷(6·t…ŵ+QIÁÞI“, Åh‹Êo£€-ÒöH_úuK«Ÿ±æ5}'m$Í?\&Çu9œxÌø‚ý_>Q[u3kiÁßæÝô÷çZ#ÜÍ QAT`AcÁ"„8³ã5î›~M…üÍ=ölxׇ{“»¢ÏOx1ijôµ{«9Oûû{‡þšèÍ«G×ËÏ6u»¤»þ•œÊã?_ìé>H«~P²ÍÐ.ÒÑžñ÷¯¬¼ß«fÛvy}n3»˜š‹Ä F)ÿ]Läýþx6gEÅf9´u°g\ÿ••î±ÿ0—¿I”ÐáûàÞÑ›noØüWÈ óž¬W÷nžÙméËÎ’Ia>=¢ Çÿ÷ž4R•h4È!™b´°Eétšm‚VÜ­J½„b¬±!±Ó±ìßKvî.~ñ¡ÛÝÔfÀð†h‘¸Í2¥ƒÅçüŸöAËì §C„”“\±ŸJÎ,ßt¸NY§O§‰N#%®ÖTþvõ·ui¿[ºé¨° M”׸Ôn**Xºé•LiÛÒ.;vqWä©×,\½‹®‘¹eƒæ3Þeо¢«9qœ¾’\ZäL1Ú Ø"rR]]”žÙÒZ4Ÿ~bS…fSLóÇy÷cÁ0\wˆ‡Û±;vwìÞ¤.ÖÁÄq¶‰£ôV¸…;š_`6^Ja¡Š‚o1L½¿Û‚þÜPHòiJTAˆó–a—T32ýI§­°àÛ£‚¿EU˜¾ä¦Ý‘8Ú­Ö‰wÉš­2•[@æûyêèè$.˜ÝÒŠ4…tÍÛ}ìâ˜Q_tV}ûôuœ÷²Díš¬ß °E€†·ù7D Ú"°Š¼Õ2AïîIæ®ûÏêM¿öøÚ±KKkÔ¾õ«¶ˆ‚@²®î[½íйòÇï•4:êö00Úº>ᳶȳ!õ'sGãNÿ«‚$ŸÏqôºãarೋ,ËËÛƒõ³ õÊš-­´Z_¸»á.½Ð:[DA(¾½Ÿ±5{ªãÍýk¿¿·Ï'»&úÉè±»}VžÌg"ðÛóŸ ÿ¾ÿ.$IÜ¿rÿ赚»¯F'u›¡†ãÍT‘,6[Â?+ þz}ÿ ¡ª£ùå^㸀Ítç!-­ 8üúǯ²V[DAˆÈÙÌØÚHSÇ´lÜ"šDx"ÏqŠª'\£«±ÕÈ Aß rOÇàj|aáIgN²ÂËñûHgÓ©Ìþˆ¸yhSFnÑÕûoU{5)0l¼©²„ó5ˆÕ~'ˆ|'!o{’d•e§lÏ;Sö°–¡o>ÒÍo®»… Æ ñºhó²­G/?­^âN’h6ý ¢‚Ýa@åÒXÐÞ†mÈò¬ämG~/{Xƒéôêèâî9ÎJ›bÜÃÃbÊZ=ú[tzQz«ªÓµrŸ4Ç—4€† }ù§8-†yø’`_xw\è÷…Ä•ëJuüƘùê(}xS[zé23—^MPÂ…2æÝ®zõÖÂY¯ßþuYf €bÏ›€lý¯ñi„æN wtjaff1ØÚD»qÚ+9铘1np/•šÒ”)É%†®0Û`ŒfV$ýD8ÍÀ1ôpáKG†Í0ŒuÈ'xãÌ+%kkßÚ_}§¯ úSùØÞqâ½Îœ2쓦$E=vZÞ£Iú‡lïyi/Õƒ2²Çw{šëåË /AYœë­n§Wb.K=hG¾[×§y“}™µµÓjš$o‡W!uJž±9ìuUøm2Ó„;ͯ bžBøwÌ,ï>*/î^*:Ь~’:zúˤ[¸¸ï¨,=‡–8dYèâ±%kAêœÂ0ÉØ^¿Ç3.»žá—žçÑýq¦ÇìŒzYûB“œ3õcƒ{šáœ>ªhi ±ã˜ R¯ðkB²O‚-T·•¾K $*!«„åÒ­/w””;iÚØ!@klaÑš)Õ‰û.×”þ’]ú ûŸ`BËnɾh{^®mTÃnÁ-#8×ÿHBhuÏäÁÈãÊÎÖŒp•Ê…O­“9s}ÂñÅ~æZÖÑaZåSµn $¶]¬Ë’Ø.¿,õ-øpØE0=uó ¶ø 0Ì`bb.¨f¦"NÀ÷{ꄲøµè6}=âÛr꺮f°NÍ~ñ*â:ÊÀÉ©à´ß=yôÒÀ°ïÏGн˜áÚJhÅ0µSQá¾’…åÿ«b'yÏWåNccÊEh݉–ô7`C“ rçù\ýaÐqnHîü\ÆMÍÏ:!œÕ¦IòÜ’÷œÅ1f85®õx¿äyÔÃ4ÇÇî[]YQUyïÔ+ò÷E®ö/”¾A¡àbÑ0’×¥nt ®9rMÖ¾ÐgâH•EÿWÕó[]%âMméå ëQsN$Ô“½TšZ"xçÃs¨RdγžŽ:š8ëM-€V@{pjCM»ÙNº,+`‹(ÞÑéÓÇÙÙ˜êjà57¹a¢yYuÜ£º†šQs3/L°>+ý¼®<´’ PÄ÷ làBÃܤ Ò/ïš1°3ª©ºu±(7cZÔ^ŠÖ-7ÏT»žÄ­‘PÕã{ê£óîïsëö$£‰v@Ã^C¡ÞŒûY‚Y|h5}:š…ã„éB¦/¡zŽƒ×-VôitÒÍLÎ8ÒÒÐL·c%Bù}WŠ ™©ZðS}LþƒŸ]u+,•¹/´Áš‡¡GŽ”ïxõ¡­>thknº?µmÛ®¼%0©\”ÿcáwþ¹™Õbê:š_;Áz@ ü•Ý1:vïýňñÁÎÝå·­ÿU·ÿ·Wó3öœ½z÷9K¹sOS³)±så–Äçla¸Úãi…Û«^Ô¼'ºÆ6ãBf†˜ñ²–mðKܘµyúØ ¸°ß †KT]·¤ž=e'Žýø/5ŽeìÌ[ã—ù¸¾ƒ^?;ç ›¨[ÇÔ|˜»¯7¦0|²âñä=ûƒÝ6¾WÓ3íïîÙp±©úݺõ{×MÂúÐiúp"pÜjU£wŒö*+ä^J$Fö®)öäÏ‘+/Þ~Ej vq §3zÔP  ÊŒÌ¨×Ñi[¾sM•§/ôÁ0Üpá‘5©½œÍb?ž š#¢¦ [‚Ù°ÞfÃäVh§°'`’õîyÙzï®>§á|’*º½Â?¡4>$q>Þ}qQݰùÌÝö¦š¬ªò✵Ÿ£!àS¶ˆ‚ºx¹¤,ÜÂ{išÄ8_-ú1`OZFNþ1NþÔ- ýˆ˜lh"Ãԇ͈&îW Ã:Ù‡&Û‡ŠÍ’Þ´ka¡«P-­õ|]´b¿hkNçœb1LÃ.x­÷ŽIV:9ùDoú}€6¦¬ÖÅ*Œ³Ö‹ÈEˆó­ºO ú ‚T:›ØzÌšlŠñÓ%=° ã`OÓUþUäâ3,\?-Á¥/'KUÏÒ9x/‹b»94çñØ$K–EwDåSÈQÀ€f1;£x±ç ;üs»`!ç½]|KkŸ’x÷ü¯õœ3“Æ‘A5Ë2¦®Û3}ã^Ê„ £[2&ú±gS:O:¨ìiºÊ§\à,)[l*F>ÅvrhÞÁgý®)t¸ ¶¤J£Œ´îÊWlÀ€f‘hú÷º°5î×uÔïÿÍŒÙ3ºµ´Fð)i\5¢l·e‹à³?ŠZ«¾³ÐÁ0Ò4¡£e"äG³9j{š®ò%Ü£8S„j»94_=}€ÎÇ;R%‹"µ;‚ò°E Ytµó[nG÷wÚ'Ožd½©(^û}bqQÌŸKöÚðs¦’$Dkq·ûá<«Eœ@ b H‚ÚÁž¦«ü0„Šº…™ˆ|ŠíäÐÜLÀP*Y©Ý1k†[ FYÓÐ.:•éRµ(½î”Ã0‚=I×Ö‘$ƒ3Yþ-ZEÔ7ž&Ôö4]åìQñe´âÚe"œE±Ý@35—*Y”Oëùߦ[†™¯7D>̯ôÛ ‡¼Ú“›îÔÎ5ªûûÿÑ2€ Êpüâ;ÒZMΩ—¦«¼öÊ[—¨³³cާ…Û›t¬zãLV’sðvD¹Ý@35—Cò§õüoÓ€-H§G²òº^:ç,ÊûÊwëìÊ5™']"aov âGÌÝ[²ÈÕ ÉëBÓUS²ÍY›“qà`Ô´¤g,í&ÖÎÜ,Ší𩹒?­ç›l@ B“.¦³Ÿ€™L^š6™N-Á·Zžq;<%¦sNßUÓ4)ŒýI—¼Ý€ÜšË$™fwÞ‰W°EhIÀ %[DA YW÷­Þvè\ùã÷Ju{m]Ÿ `-Ê I>ŸãèuÇ ÂäÀ)fYVª·õð R¯HP#µ ?¥¶äÆŠ ok‘ô¨7r¶ˆ‚P:+|{%>cköT#Æ›û×~;¸AñZ”™'óos#ÈàøíùOÐŽî-­O3 Iâþ•ûG¯ÕÜ}E0:©Û 5oÆ ûGÓæ*FT<Ú]üâFõ¥Nš¶_ŒéÇ[‹_eÏßN h†c’šc«wçÏŠ‚¿^ßC¨êh~9¤×8³O•€vØ" BüCΞÇÖFšÊ8¦mdã±[0—E·NîhG| hq˪Ûl ?FâÞг™Æä× ¯@ÑT¤ÇŒ¸ñŠm]u]×3X§‹f¿xqåq§Ý ÎAÛøÝ“G/ ûŽðüq¦“!iÙoSw¾çD©ð2VÇ0ãÉq(#’/“æP³¹€P¼È ž¡ hüÖ×$îëÆ/5Ïn:g—Ÿø½Ño^ž.¿òC_Góéf 7l :ëÏóg êª¨ŸïL37mEÒ3šKMiEòX4lAÉÚuÖ´Êeåå¥Ü}êQMQb"²_ÆÎ"oæ¤l?v¾¬âÙ›:„ófKœƒV‚1öäḷóB=FrLÐâ$ÓŒø@Ñân‘âô ¯@ÑT¤ÆŒ¸4ÿ ;§Wr/ö¹ñ:}4³òÍüKè¨5ûíš°¯æ¤ÇýÀ‘Æ0¶àãÿ¥˜[BP‡É8È܈l¬Ä|!(“æP³±A¨˜DßH[};U_YI`„ù ièØÙ騱Õ~÷|Á¶ÛÓÍúòÒ}ú¨rªwÑð+H‚f»W"4üc‹‚6€TÀQس^öëkW«SN‹*ç¥'¦á¸3sRŸNÊØK''/Þ\‰aj ¦¢Â}% ËÿWÅNòž¯ÊÆè‡HÔ"[BBg¤c hHªÔ1#HòÜ’÷œå,f85êð~É9ò¨-†iŽÝ=¶º²¢ªòÞ©Wäï‹\í_I!M´EÑÖ% 2âB7b×¹&S7ùL©²èÿªz~«k¢£D¼©-½\a=ŠóD$Ô“½>†»ÖD”•¿<›b£c¨‰^?¯å¬ºùˆ’´ê‚Í 7žC•"sžõtÔ1ÐÄYojéè´i>¡£Y[÷YCM» ÝiÀQ¼£Ó§³³17ÔÕÀknþÅI2ŠæeÕqêjJDÍͼ&Ûâ³ÂÑÏëÊC+ E|ß0yÒ ‘@ÑbÀÂ>9I÷V&œé1\víP ¯TQ)jn˜†ÓÑ,'L2ux Õs¼n±¢O£“öhfr~èÄ‘–†fº+ÊGèx|P rÈLÕ‚Ÿêcòüìª[y`©`ýnâÍÃЃ#GÊw¼úÀÐV:´57Ý¿ŸÚ¶mWÞ²yÛÔÌ/+ItÐVÿêÛ¾ô+JjNù?~çÿ—›ùèQ-¦®£ùµ¬QZ³ß>ùöj~Æþ‚³Wï>g)wîij60%v®ÜÒÀ€hqÀQ†«Ý9žV¸½êEÍ{’¡kl3.dfHC¸ìeü7fmž>v.9ÃÆ%ª®[RÏžŽÇ~üŸ˜fˆŠ•œ·mWNß‘“21¶^×ÚÕw©Øµ” 53LÃáDá¸ÕªFïíUVȽ”H<Œì]SìÉŸ3"W^¼ýŠÔ2ìâN_²$(YeFfÔëè´-ß¹¦ gÑï&†á†ƒ 爌c/g³Øç‚ö­ ôV»¯žo_=!Q¢Õù)üÁæ„Ô3ÖÛl˜Xݶ …ß~ËNÛ$q>Þ}qQݰùÌÝö¦š¬ªò✵-¨Ð|ÀQB/—”…[x/Mó–”ûåÑB¡š(ZdcààíÐd=©¸ð ¢¦Aìo¢ka¡«@­õü‚ڃƱ_ÚË&ƒb1LÃ.x­7`'IV:9ùDïYtƒk(<ÇŽkiÚ3=ŦRøí‹>•à!É齉+>CwИÀØ Qš"Ïiz¹¿Š\|†…ë§%¸ôåd©êY:ïø(U–²=ïLÙÃZ†¾ùH7¿¹î*”ÛðÓ%u 5ìA Q²$hîM€ZÚ¶ûÈú[>;³3Š{þǰÃ?· rÞÛÅ·´F­oo‰æ2ð¹)ŒÿUl:õNBHuzgÓ! }ÿÄnOó&û2¼4)¼ÉM/÷” #i±©5>d{ÏK{©”‘=¾ÛÓ\/_fx *ÈòhœéD·`Û’žÑ4Ùƒ@šd1ÊH뎠|CÖo4Ø"ðÙI4ý{]Øš ÷ë:ê÷ÿfÆì€ÝZZ£VGuuuK«C½S€RÞÙĹvÀ0ƒ‰qˆ¹àýîT43BHM/÷îQœ)‚R7¿à¸ÐO0à7TÍLEóø¤o €àR%‹"µ;‚ò Y¿Ñ`‹Àg§«ßr;ªŸ<h…Pøí‹BíôÎâÉßS Û"4½Ü‡!TŒÐ-„ÌDÔ8Á=~\;Íkè$BƒÔí܃@ªdQ¤vÇLA 9[$¿}Q¨Þy”qŸûpÿ²q-@ÓË=Ì_F+î ]&ÂYöGèzÃN>¼†š¬Ì Þ€©’E¡ï´€-ˆÂo_>–fß?0±Û“<ŽÆÔÑ4½ÜµW&غDs<-ÜÞ¤cýÓg²’œƒ·³³B}Tï©Î»¿Ï­¡!í€`©Š ˆ2¿øŽ´V“h4È!¹¹{´'Ài{øIXhð ¡ðÛ—Ú4_×4D(w±r›7KLthš^mlÎÚœŒ£¦%=c©h÷0±°væf1|²âñä=ûƒÝ6¾WÓ3íïî)}š‹1woÉ"W'$Ù¥EÉÍÜ› ]¶HÛ#}é×-­|JÀ¼nPøíËêô.)E(‘¾—;¦1hRû%’Ž©›5l†…ÞjyÆíð”¢*MÉ4»£xN¼Íl‘6 8 Ø"´$`‹Ÿx$P¶- Ø"´$`‹bÈÌÌd===eÊ9[DAà™‚€¹´ ÀQ(ÀþÚ`‹(8‚÷KH„1:v7ú•e—†}ŽÉûYY%$IbJªõLÛ˜j ÄMàÕ%1ÕÎFV#mŒUEB*$ñ¼üÂÕÛ^¼eájÚ=ûúOÿ.r‡{@‘=š®E&9ª´Õn£]hqÀi`}Gµêªôò¼_î—^²ô²æ¥ß¿gf;ºoO-¥÷Oÿ8òÛå¯õ¼ì5øµp G73ÍÊóOþuáŠÇ á«…,?rúÚ;ÔÇÎup—ú»G]<ý swí¶($ëê¾ÕÛ+ü^I££n£­ëäõÉghòíÕüŒýg¯Þ}ÎRîÜÓÔl`Jì\¹¥Ñâ€-¢PÞ|^3r`·Fvf› ÷ºƒPƒ-b8Ò’wÒ¡Û0„¢g%‚Á3‡›k«`X'³áè¯bâÆÑ [¡æ.\­EfcÝU ÃTûØ¡‹Çk¯\Dým>W÷ø)¾½Ÿ±5{ªãÍýk¿Ü SõÏ7µ“Äùx÷ÅEuÃæ3wÛ›j²ªÊ‹sÖ~¦¶€°E IëEºrÆàI^"ùìúWï=~ùÏ{¬¼¬Õ­É߇¢b+¸Ç YYÓî!¶(ñì/=ެ4•qLÛÈÆ-b7/$689"ˆ¸ÂB[’|âãèýéýß©ÝÝ0윃C4Ž»?†cü› ¼$rûáþ/;sýófUÎÀ±¾ ‚º #Jg[ùQ“M…oµ¾Š\|†…ë§%¸ôåd©êY:ïhÐd•e§lÏ;Sö°–¡o>ÒÍo®»… ÷÷¯†p±ê æ%RH–I~¸yhSFnÑÕûoU{5)0l¼©²ˆ2nÉ€-ÒN»†£ø—kUfnïj®£Šcï²² •z‚Pφ¿lôE%qMQÝa(:ÐÜIáŽÎC-ÌÌ,[›hs¿éX‘w1ß‘ÃT_-y„ ô(êÚÒé“=ÍAMøæˆàŒûáÄìYkv,¡?¹”³ !&/‹1uÝžé÷R&Ý1¹ÐOH±” #i±©?d{ÏK{©”‘=¾ÛÓ\/_fx *ÈòhœéD…‹UGŸõ»¦ ÐQÁèH£ÌaŸàO0¯”¬­}kõ¾*èOåc{Ç)‰•ßÎ[¤ýò{TVQÂÐûç×O‰øýú+73ÊϱÏñ¾CE ¬~ïr홋•._ôè€ê^¿¨¬¸ñ—ÕH×Ï«7ÿ ‹ÖL©NÜw¹¦ô—ìÒ_8F†–Ý’}Ñö*¦üÃTx®2!×è;E-@ ‰1µh}~%Ž#Û”iüs²eÕm„ã?F2äÖ³™Æäg­úÎBÃHÓ„Ž"”‰°-RÂ=Š3EPêæl±ñ :`˜ÁÄ8Ä\PÍLEóè dõô:û"U²(ÌõUì*‹ý̵0¬£Ã*´Ê§jÝ4.H¬üvØ" …¤õ"be7à쥛˹&áË@”žÌ-E$ÆÐ19I÷V&œé1\víP ¯TšŠi¯L°u‰:;;æxZ¸½IÇú§7Îd%9ogg…ú¨ßSwŸ[·'ymµ‚¥ UO9$.4ÌMz° ýò®;£šª[‹r3¦Eí¥ÙÍvØ"€†«Ý9žV¸½êEÍ{’¡kl3.dfHãSíD}4­1¢¹+tb(„…ôµÅŠŠ1woÉ"W'ôq‰¨’ó¶íÊé;rÒB&ÆÖëZ»ú.D[1LÉ66gmNƃQÓ’ž±T´{˜XX;s³>YñxòžýÁnß«é™ö÷ ÷”>͉ª'Š’q§Œt,cgÞ¿ÌÇõôúÙØ9OØD»—í °E1„.^N‘‹uÛ-8k÷/(šÃ'u-ϸ"~ ü¢ü$U}Û¤uA“ÂØ/‘tL}ØŒ¨a3ÄT¡.ªžhÓ4% žcnääãä/UlZ°EhIÀ %[€–lZ°EÚÍŒˆMQbmÍlácdKœ¡®ÕM¿¯•­ã$ïoú(Ãf@kl…¢ðäñïª+.^•èŸs5åà\ÞÞÃpßhµ€-¢h(©éô¶Á\}ÄùÇ#scg.ÓBMŸ¤åYÉÛŽü^ö°Óé7ÔÑÅÝsœUÃV‰äù1NQõkt5¶9! è[Cíœn½0t Œ %ºÓ3I~¸yhSFnÑÕûoU{5)0l¼)ˆ´!ZöÉl;.,Ø}E °EÌ: ¡ptfBQBY+ƒ˜§þ3˻ʋ»—І"«ŸxY%'}3Æ î¥RSš2%"¹äÁÂÝø;¤ïŸØíiÞd_f‚—æ‘£3B’?ö ÞøóJÉÚÚ·öWßé«‚þT>¶wœ˜¿´rxóœ(Š1ó "uF'ß^ÍÏØ_pöêÝç,åÎ=MͦÄÎý|͵OÀQTxa#~ͨà´ß=yôÒÀ°ïÏGð³l£¦ðN:[FpÂaÿ‘„Ðj~nœ»a 3˜‡˜ ÞïNE3#„$3×W!_ìg®…aV¡U>Uë¶ qA€¶²lçs'Iœw_\T7l>s·½©&«ª¼8gmK+¥€€-¢¨\çGˆf¬ ûjNjqÜal;Á?ÆÿKέ òfNÊöcçË*ž½©c›ܲ—+Z4ù{ !a[¤€{LtrJlL;„Ø" €|\/¯ÒÙÄÖc~ÔdS ‰ÜMa[0$É*ËNÙžw¦ìa-Cß|¤›ß\w ¬±°X£‡$ÿ)N‹a¾ô´”F¿u¡§É’ÚâW‘dr½Š\|†…ë§%¸ôåÈQÕ³tÞÁË’ÚµM”ÛœLƒ& ŠGä¢ò)ä´`‹((&pŽ#CEs4ÇÇî[]YQUyïÔ+ò÷E®ö/Œd§'¦á¸3sRŸNÊØK''/oR± ¡ Ù8ˆJ‹P.BëNœ°„5" è0¦®Û3}ã^Ê„ £[2&6F¹ëà³~×”:*œßÙÞóÒ^ªedïö4×Ë—^‚ ²<¦‚ÿ[Q¿Ç3.»žá—žçÑýq¦ÇìŒzZ—ð4Yl[|sDÒ r!-6“EÝ5±JR4GÐÄ"õ¹ üVØ"ŠñžãG³bÉ3BÛ5%¦£h™Éù¡GZšév¬D(ŸmèóÒë¸Gu 5%¢æfžHøK„–fß?0±Û“¼hÄùŽ…ˆ\h˜›ô`Aúå]3vF5U·.åfL‹Úûé:@kaÕw:Fš t¡L„­ÕÓè|ü‡$uó „ãñ øOx«™©ÈcÞDz*b…§î|Ï©åe¬ŽaÆ“ãPF$ýÖ%?Mß5%Ü£8SDjר”E–AƒÔGä‚ò[!`‹(£ºê™XÎ\òãÔoz‹»òRìÉŸ3"W^¼ýŠÔ2ìâÎK_¶Á/qcÖæéc7ÝùHmš¯k"”»X¹Í‹›%¼p• ŽeìÌ[ã—ù¸¾ƒ^?;ç ›>aïh= à1L}ÄqB0ËLà—ç÷hÞðŽ÷„÷$Büiµa"É&x7 ¬Þ}!Së’Ÿ&‹o‹ša#tëãYñxòžýÁnß«é™ö÷ ÷l˜w|·Î®\“y"Ðõ(~.¬2#3êutÚ–ï\SÅ?2¦@ìÓdжâGÌÝ[²ÈÕ ‰»Œ)ÙÆæ¬ÍÉ8p0jZÒ3–Šv kgi]£€º9$¯ä¶þˆüÿhȣњº$ÔIEND®B`‚PK¯9A™ ”Ž|ß|ß-Pictures/1000000000000437000000E929A7BA01.png‰PNG  IHDR7é¿TKÌ[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì]€UE÷Ýo»{6èiP0±»?Åö3¾Ïnñ¯bw|Š¢¨H*ÒݹÅvÇÛ×ýÿÝ7»—Ëë÷vYv®øvîÜ™sÎüfîÌ9sfæò/¸à½(ŠE€"@ P(Š@Ï@`Ö¬Y|§ÓÙ3„¡RP(ŠE€"@ P(Þ'Ÿ|"r8 ŠE€"@ P(ŠE€"ÐCà …ÔJé!uAÅ P(ŠE€"@ PJÅRj¥Ð¦@ P(ŠE€"@ ô ÔYC°RvíÚ%‹ˆ|üñÇJ¥rÞ¼y'»4_~ù%vÎ\}õÕ`Ä l¾ VQQ6_» _„@jkkE"Q|||Ù»¤RÂàj–S±jB-#MO P(ŠEàô@ BÎçëõzÏœþù­­­lüå—_~Ûm·!266{YÏ ³É¸1ºÞuqé\vÙeP£¿ûî;O¦6› º57qÀð§Ÿ~ºdÉ »q† ²pá€YBJÐIXX4`:ôšk®éׯ_H„”ØjµÂüöÛoÍf3Q«Õ7ÜpÎ|þép‘ïd‘ý3òó|a3/^¼˜¤yÿý÷Q–W^yåÌ3ÏôšëŸ’Ó«04’"@ P(ŠEÀÏ-þIÀkŠ˜˜˜·Þz‹<‚þŠd~ø!ôWnznØ+‘`"¹Œ"##½Ò$‘\n¿ýöºº:VI †\(°RfΜyÏ=÷455ÕÔÔxå )ÿi:C¶oß¾<òÈŽ;Þyç“ÉôÚk¯ùçÕ™§0Ò`³]yå•pUÁðxûí·ß|óM0½âŠ+üuCž[)~r¤GnPãÖ-Ưÿ§n‰é-E€"@ P(ŠÀ?‚@ßésÅ—P(LMMeÅÂ\û“O>‰…Rÿý﹑;vì7Þ8zôhJJÊ}÷Ý7`À6A0OF õòË/cÒäÉ“1ßä 2V€o¾ùi õzÁ‚dZ@^ÕÕÕÈû¿‰®‹õ*?̃444À§qÝu×åää€þwÞ ÆkçÙgŸ…Çšýþýûù|>"! ‘aíÚµ˜ÚÇS ‘ŸŸP0nøÀ+33ó³Ï>«¯¯'ÂÔ——ë)o½õVÈþôÓO#Lä™1cFì`¤ýòË/ …þŸR©”—/_Ž¢Í™3G.—³……$( nQFOäÙJ<•••°|€ÊŽºe‰DâGN¤üúë¯÷ìÙƒôóçÏ?û쳑8¤‹àƒ,ÄüÀ/b¼V(!KÒ{-ZH|ibŠE€"@ P(“‡”:ŸVŠÝn‡ó¼a$$%%!PUUe4¹z!˜zààlyüñDZôÿ™gžùꫯ.â –-[†hÌ&L@àù矇Ÿjkii)ŒŠ„„”`Ô¨Q?ýô2ÞxãÉÉɬH\²ža,ñ‚ݵiÓ&¬^{ðÁsss‘Æ—ü(µ×^+“Éžxâ ¨Ú>ú(ChÀ%%%#FŒÀb³ýë_ÍÍÍ^x!HiµZ"$Æ [ºt)ªOIüÄ J`ž¬Ä»øâ‹ Íòòrx™X —••Aª0Ø‚0a©¡ûôéSTT„2¸"…miiAaW¬Xñúë¯3Æy¶R,Ëý÷ßrÇwÀ†Dٱ쮻î}¤ñ*'œuƒÕÝØØG å·GÈ‹ÆF"a+" ˆôÕ ‰ ƒd^‹æFœÞR(ŠE€"@ üSø³R c_$ƒúˆtVD®*‰0”~³gφ^ SãPâ‰çÍâ?uü‹/¾@ØB˜­‡Â -yÚ´iØH€H¬}b•KBL322`ÒÀŽ;v,"¹"‘4^ax`¦¾ ;wB{†.¾äÇt;ˆ@GOOOß½{7ËÆ –EEGG¯_¿æÄ”)S`)v$ Ü/¾ø"–±­[·îÈ‘#lF¯"yF>|»€/nb-7»×pØì€3¸ÀiÃ% `a¥wžÂ£‚²ÀTƒ-·fÍHïy’pþ %À%`W¯^ýÛo¿Á $&«§œ¨V0jkkƒfêÔ©HÆ•ÄÏXAþù'‰)@ÓW…’d, ¯EódAc(ŠE€"@ PºŸV @Ç:.ÈĪˆÄ-ÑóØ04uDbJö X°ÍžÕãÿ(ôXeD’!#ÎŒBvŽ#D²LIbüψdÁÊ¢çž{îçŸþàƒ°¨løðá^åÇ& °yóf< œÆ ƒóˆ[ëÇ@³ÿþ\ !Nʪ0DB¹Ç/.VÚ€d‡póÍ7Ã%wÄ€#‹äÂ#–î ;,åC‡±dq{ðàAü爣àð#!L5Ä“Âl.$#·¶â²³³÷îÝ‹%sÄ—œwß}7\4/½ô¶ÇÜ{ï½ðä€ThgìÞ!éQ_8Ry­Pijr"=Â~Ф4E€"@ P(ŠÀÉCÀçŠ/èÇÐV c®Jê†ÖŽ4ØÉ€Z¬”l6Æ€›Ö“-ˆÇ:"X>lè—l6쟾ÛSxi pcÔh¯òc†þÿûœ$8ðꡇ–+Td%Ûc¸ôÙ$’ÍÈMã'Œ9~¬°ºôÒKqbd`Ïz†ÅRð<À€ì,Ù°ÙÁœ°0K@ÐæPñ±î‹]DÇ'kÿpàá‹_ !ÉHÅa1yR°o¹7 ã<.ì¨Áâ=8ëà¡"V±p<±4!žâ×k…’dlqHJéV4O4†"@ P(ŠE ›€ÚæÓJáªt\±X½‘ý»®1wÇ–{ÁÀÝvÏÍë5 ;dûöíä‘J¥‚* ¥ù¯¿þ´=ü*ÐË¡wº1Eb(Ù°%öíÛ‡=!d‹¶WâÜHhäØàÝðÐøÆ$È âžòco2bCùÆ¡vc½¶[à–P#€<3H€Ó°-– »‰ßSZ®ÃÈŽ½.ØšÑÏ´´4¬¶‚YõÇ`›[Õ„Ç!Ø`0„àÍÀî|”ñÝwß…l8€=®–˜ÂhÁº;‚xyEñ 6`p†Í3zôh–(»É ŽX‡1sçÎŘgÜQB.þ$ËÂkÑ‚aJÓP(ŠE€"@ œl Úù<‰¼‰æç&7ahêØ ŽýøTRÂÀ£®pØ—[.?·°C°C$(((K.¹«wÞ{ï=|,Û$ÀK„q 0üØ&8äŠ}ê'@N BØ'°©p¢. ÜzÊ?~üøßÿ«‰`ÁN€ †bk8!N€–ÿðÃ#Z>âa¡aå7g˜Äü}Ø]°Ü X™çÏG}´hÑ"ló€ ž€„Á®‚éõý÷ߓݰ֘,qlAùõ×_±Ïµ ω÷Š<@°!»ç0*E€"@ P(ŠE€"ÐÛÀ—÷B^lÓÛ0¢å¥P(ŠE€"@ Pºùî{7s¥ì(ŠE€"@ P(Š€Wð ~ð[Ͻ’ ‘ŠE€"@ P(?´´´øyJQ<X¼xqû÷R>øàÏÇ]ƒ¯ àÓ]KÓ“å≉ÿ æy.37 m\4†)ž! )A¯Â_Å œ0㫬ÝÃ¥'ô*ÝSÒîáÒðìžœ–”¼×§ÓÈë¿NÃèÇh–ÞƒÀñ¯:Þ|óÍ'¯Øï¿ÿ>>¾ú”K w'b¦µR­Q<ƒ„+`2òô*Ý \zé»§W醒¢:ºKÁ³j­÷¼ï´¤awe4cïAต‚2w?Žr µylÄŽ´m„TeÏà ˜¸·áS"AÏ©µS®€Bö<éx°²‚L@ë4H h²ÞŒÀ VJo¢7—=˜¾²7ãjÙ)ž¡"æ?=ÅÓ?>=ó)­µ®­—Þƒ'-i×¶œž@­÷ÔiO@û4“Z)§Y…†SÚƒ„ƒšï<Oߨ„ó„âjÿtZk][½OZÒ®m9=Zï©Óž€öi&µRN³ §8´ 5ßy(ž¾± ç Å3Ôþé<´Öº¶zž´¤]ÛrzµÞS§=íÓL†.´Rœ<§ÇòxüS#kCÃþ'Ÿlܰ!'477;ÆË¹óNEvö)ZœàÅîLòû²¥uõuçΘ•””ìÉqßþ=›6oŒ‰‰½øÂK=Ÿú)=VÒÚÔÁ…QQÑÙY]¼çxáÂ…………¬„¹¹¹wÝu{ë?Ð<ýSîO)ž§b½ÓZëÚZë<;FޱÑh4žnþ}‘Z.0ùÏGÁÇxå²ö‡—SÒórGÍaél_ù™D`<õ6†º¤¤n4;k1¶nüòðŸ‹Ì¦¶þ“æ=ï±ÎÓì™%e˵qãF­V+ E‘‘ˆÏ¨vNŸ/€’‡üÏsâæ/Ÿ—•–Èœäõêá%õ*3ì!°R¶ïضs×ö€² øŽØ(Sr¼N(pFÅÏëwŽ“' ˜Ë3ÁÞ#EQ*%Z¼ÓîpòÌÿv»Ñd®klJIIîß'Û3Kð1[¶lIKKÃ+ƼTä#™]o[ýªU¥O=5dΜ¾O‰¥¬×¶[«’ó³1l ì’²NF`ÿÊ7[ŠÖŽœ8Kà0oßü]TÊ€¬s;É(¼’¶¶¶â°>26#¸à ºPÏÞ°aæé  ‰$rCš.Ô'F‡áC³~æpBSs@„_ùfó«wŸ#dT/Wx%õBˆFõ>X)0QZð¨XœN+ÏzÐaXcuÆ:yŠæú]"Gœ•?’ÇûÏèõißì,…Bîöè¿ÖU”—ÅGGÇÇD¹= þV"‘ÄÆÅÁp˜¡/9{éŽÙ¿`Á°)“c 4—[„›Ù9hPnMÍúk¯¹m›2==Feåe÷Ýw_Qqñȱ"2b£·–5˜Wœ¹˜_ÞXtè€Ýn_¾by0ôIš.çvrìXéô³ÏQ*TÅ……èßo·ë7üœ”3qÂY……‡¹‚ »ã™Í&ÿ‰¥R™÷~ѶŸîùû¿òÉ G´1jTBîèAƒ²¹IÆ\YÙ°è•ûå-›Q­2¹ræõ/äÝA6ž\ާS£™Íæl©³ï^eÖ” ë ãízÃ܇LQ±Ò`ŠIñ ¥ž–&ŒZ›~׃s®:Æ=¸{îØ–+Æç'™~²ëK5ÓI&“‰aèÙ™™™0WºúöÒÒR³Ù šà‘žžÎôþ¡_¬¨!emjjÂ\8²ÔÔÔÀ‹2hÐ £ÑFŒ# FKVV„ ‘‘‘­u…!_š $A ´Z­†j ó·C† ©¬¬´ZmÍÇ6EGFØdÇ­”Öº"ݬJôÂ+¼’†*s¨éK63fÚÅÚ¢åÒˆäAÃ&l_üXÆÐYa8JË:¼’îÞ½{îܹ˜À%tˆšÁü²³¢®ÆÆræƒOãM™2… &;ö»ï¾‹µZ­CgݧJígµ9Œf+:sÆJqò¤±ÞdÍ‚§Ýj²Å˜¬N¥Ô{Û¯¤ÁÈIÓœö°RHùÑÏ¢§C;Cï† ‘l¯ƒ˜_­¬ŠåNÉE|aLDÜZ¡sŸŸéॆ ŸT"1™MÕÕUB¸ykš.>oÖ—?ü|Á̳‘†û(¤0Œ¯VÊ®gžIRÊD¹ÉéwßSüÝûš•‹c¦\’yÅü²;äòM LûöÛ`aÎìµ×_ËÏË·bú Sty\¹¦ \øBüŤ^{LW ÇTDGÚÀrqXÕ 074¦>òˆzØð€\ÂîA4mmq±ñö&L<믿Vs­N{´ðȼK.Gé0CÙØÔ¸`Á¥ Ã!I‹Ú m˜Ñ .«÷T˜ë\ñùc³Îˆ¯³ØÖÖ_ßfïÓ'Ï•šmï°—xµµyÒ”‚‘#yu+¾xŒZ)Þõˆ5êì—h+9*‹kñ…¦_ã1¶Žë‘Ô[DØíÓ±“§³˜˜Ù§X&ñ>Nwch„uuužÔâââ<ãÿ©˜0jÍfµ[-6…Ô>fÕîÃZMá%g¤d&(äâ.u«°& y· >“xhí]e¨ £Æœ·N§#Pà·¡¡ÝWvvv•žÐ/1ä¡a@xŠ`,!0þBx9 ¿ £ÓëaW4”îIIÍPD§…$¸ÀÆ}äMbŸ.b±1x^±­$-£C¤D)ìµÅ;â“R#ûzò £¤žDNB ßa](ÑÕì”wtýg‘éiE»Þ7÷§ðÌ•ðJªR©~ýõW­N7nÜxh‘r8ë°‹ùçòð»Ô FOc;/%)‰ÛÔƒD-Í+P¡ªá­CóR¢¤‚Úf¹¡&W lb†5¹…yRXgšáÝU^Iƒ•&;½ÊJA+$ X0½Œë} ïŸoðuX»ää§ó1<Ú(š«™Ï3†œƒ™2—Kų511ó1Üìú{¤Ré´ cv<Ì~ócÍòcOÞüÆÓ¦-¿ˆ´ú¦í×¼¦ … 9Œ . –o+ò#̬Q¹˜ƒ@b\P”ý¤t{€‹Ó™Ýz3C*ßXºtÒ¤‰?- åŸ º±òÃùÒ_—Ì<÷ŽŒv˜ËÆþûâð¡Y!ÞþÊâÿ•ü¬RD&ZF_:2_,‹E~r„ùŒð© LNEÐJUUú7Ì—sÞ·$!ß>|˜ä!U@~û÷ F’84–›¶Æ®ã› ª–ÄäCZþ—›šÆfg)ãTB™¼‹VcÁ‡Å $VЧ~±²*;`ìÛ׋êZA\©=Šè”°ÐCe ™Ðéûõë*Á0ðD;Áš+8pE†0ØŽb³Y<»PÄŒˆ’I”(8ÆŸ={ööI‹lk¬ÊéwA¨‚Kyyy||<¥kkkÃ8èäÙb~„*R__ê0땉ýØ=v,×4”ëšê2Θ⵭†QR®Ì(ÑK/½´jÕª¤¤¤'žx¢  OÑ’ÿóŸÿÔÖÖN›6íÁ$þ%n®€á>£/?°sÙÐQS 5»ÛÊ·æ ¹ù¯'U)*»ÍhЖ«¢ú¤à™ Ô’>ýôÓcÇŽš ÊK¸Èå f¨uí[ؾòǪŠÂ´„H»4^"ÑÂD)Ú»qç¦U ±ÂÛr/p £¤\9—,Y²k×.¬‰:tèÐý÷ß·ž"€å|£G†©†]äe%—ˆgxØyíâñ6¬úzäøs…æÆòúuQ™ª™—ÞºåÏeš†Ýc¥©2YCˆÛV#ßúQ«ÍÁ·;ùV‡Y¢Ñ‰8R\»GlŽ0‘Œâ²Rðv`ÿ<4¿cMÎAi’¥´O¢Ôbs&DˆêZ­?mo3Zaí3¢‰½ûQ˜G¬S†½z+!X)hýèï\ÍoÓçâ4K/ÉÄ#q[¶‰œKŠ+óÞàà…¶Äª­PG§Ymý”J•H(ÀòYnà¬U׈eÒu+>×ìäKÔÉÃûŸÇM0 ™ÉÕn¦t˜+r‰Äf3µéx×<¥áàŠ¬Ñ3,×>¬ý'´ûžãUtA„ù9‡Ñb[½³ÔHã¦c­:wd iÍ’.†Ò¯.Î[qå3¶š-9ÖÑçGJZ]¶.a÷ *•:?¯`É/?^yù5z‡ ±qÓú±cƯ۰vÊäièLÑÍ­ý{Í¥_懀X_ ÊêCú¶6ƽà犈ˆôó4à#päžÉŽåWù<žÌ“D/‹±­_¯,ŠˆOá%¥HÓLü’ºÒô©7 ”‘·Ú±@ËÄ[@^LŒ‡žuO§Íi·ð¬F§Ji~Þ_õÕå/¬8oVÁ AROFáÅ0-ÒæÐi¥J‹0&¾Edã×wEåˆ"â•gO½@èÔ+~n+ûu¾åš²_x!j®¤á•–]”%wŠï‹9w¨h\_Ém#l”©]»!êYHEäÊÏØ(.ïzf!¦îø™DpÙ¸ø½ýõe L&x×OŒ¹czÜkˉ>ˆ™Y.n8¼’r)Ðp¯E X+MíŒÑ$Ïc¢0A„ƒEâä§Zy±v^¹R¼u_[î t'Ï‹’çe‹¡YïŒÐ)‡Ê¤ÒC‡z]x=jÔ(,¨ZþíWºí«£µnJ¨V „…¾À¼Ä®7™¼ÍQ‘‘‚¼<ýžíÊØ¡W>]úÓÎâÿòšϽäÙÍkiÓ”ôÖ;Ïê[°<ŒfÛ¸é¤È.%…yO™,—GÅdi÷¥ ³º3èË—šÂeùy?.x‡·i!>Bÿò-<³ò¬úQ×.éA&Mœüéç:| #=+..~ÿ½{÷íÁ~z™T²»vïÌË͇1tá¼$d})X?æju^Òp£Â.«K.[¶ŒK„Q}3fL÷Œ÷Œ [OR§tŒÕjY³rçÉY:§œ_˃±¿7×úN’VqÜDbyåúúzL9c…†Ûô)~gðd¦ö¶VžÍ¤•[5 EsüäÕ»˶­2gd~¬"deÑk`²Á¦±·`6S¡“;[³‹-¼_6× )p IG¤DÊDó@ÓÅJ$27ïU6’*@ Û^ÙÈP{÷îeº §S¡P`¦¼±±·xõ°Ã“Ðw¡‚ïØ±;°ýP£Ö°,Éiä;#ÁŠoÕ9u6Ú(‘ˆ£àïhÓúáÂ#‡‰‚ ’rAC…z˜ì–ï¤ Ž Ïq¶FOâÀ+úÎäï ¡æ/ʼnÏJKK‰ÖÊ%Šïj•ü2xà±PRXú‹¶b|B|ÿ=k¾LP˜ ’ÄÛ×¥ÉI©™'’ p.À‹´Ábd-*ÝÛ*Y6`Àð£KŽªâ´hÞÞ¢6«4!&!¥aÓOkÿÎŒâí;TÇ—%Æ%ex¥jI {Ùe—¡°W_}5ZlJJÊ?þS„t)Ìâä¥Kq‹Ó ÞrTô·ß~‹ñ*ƒ¯È¸œAê°íQ類ç&WHD>ûì3·ììí½÷Þ‹pPVʶ[ÇŒË .Ëí9I˜5Xœ|¥“¯æKbu†ŸC=†Øi7›ŒØååPe q,¸ÄpÈ ÊÐÑDªUf“!*ZÍû˜†9‘)¤Ë%3³sò&ã/aÚÃk.»¬eÍî¿ç;vG$óÌuÿm\µ´þ6iü=÷ɯ"ölv§ÉbÝYXë'ãÀ¬xb?0¹BÜ—âÉÅÚzàœ˜—ßþÉúëzL 6¼ó°HËÏ^²œs²¡o`êΗNö ÆOüó¯Õùýpzï˜Ñã÷Ø“ž‘ šèܪkª°ÞÁìSD"Ò‡m¥Àh$íd1/Ž ¤ öa~Z F/VÏÞºuë™gžÉ•“§ÖìN‰Ì!ÀV`ü“ DJ¬^“)E©MÅiqü‰S§pé‡föEh4èLp@ÐAy!-~*;K6}’‘¿0‡°/k½ ªŒAÄÓ‹Pñ,++ƒFîh(šD,ÝSþQü°*8S°"¹ž_Xßp8³prF¬Hk€gGœ¦²+¢xz½Ë‚ \°o %,ÛWõEÌÐò-ßhò×76‚Z²ÂÈ“+Šw¯Œk12šmüd•M¤°›ôm‰—óB-)‘ö…^€æ0lØ0ÔïYgµiÓ&T%š(9‰ó ¸ÍÉÉ~ÂK/½«ÂæJð…mªÞ²é—y¹ý“Ó²SZ·­øWE²,:J©Ø_[yC^Í‘7nzfðÄRsÏ’fx%Ôp••W Íb50G$‹ÑjJÇ/;ð8H‘Ød¨S\ €¼B¿eÑnµñãT‚&=s´WZ,Ó§)¤Œƒ€˜îKaá;裞zê©¢¢"4K¬é}ì±Ç0Eå«<òÔ¤‰'º%‰›÷òënaÞ ¬l6€ÏÊ„«ùã-æEp³T' s‘_W0¸§µ 'Úµ8£ã#U–ÖcûÖ¯4i™Í Œ'’óD žH)V%L™2¥¥Eƒ©J½Ñ†aŒœ‡ŽTxå\RCzæåïëê;nܦûî‹zóMí’Ýv¯1–×¥¨aZ'l¼÷Γ'wäð—è\®|âKé—qBŒþ‚ôJ(ð¥`-Ò#ŒŒHs{r1i+3EýµµåÝŸœš–ºO•FDÇ,><÷ÌaƒRÒr!Rq8„ì“Óǯ߰nØÐè×p4°™Tã/_ùǤ g…FË[êŽå+p¤÷¥=‘Üä¤ ˜a Ö×—Bºh:Ï>ûl.G_áðàl—g‰3B¹›þÐïld'7Ó³›òY‚^asÁø5?p4'éÑMrAœÖÃdçk´Fb¥´45>Zˆ50PÉ»eΫÁÓn¶6²ò#Ú&»XdIè_fW4©ZC¥:%-.]ÿ}aBŠ=\ÏîØ«H'D:ᨱ6WY"¾¶•§Š2dD?­Ðì:–ók¬¼^ž¥/kÉm6÷ÑÔ&no925;²)sB¿ÒRBq‘@7P71ï š.ºx9`-@ñB<²"„]j"ÆïˆžÏçÈK²ã‡ü`W4ŒÌL#èc@<Þn’Æ'•޾ÎOÏGèÙÄ|¡:‘œà0 MƲi)òsóÏýi÷î•ݰ¸þiÉîÆ<éøIMMŒhll)pKÂèjðÔö Ÿæåå¡‚pÔ <Ð\P”IÕ౤ւ$E’Ü1NˆÆðuð zC¶úh[£ÃÉW ì¦zƒÃp„•ªÓ£¢„Òd²˜4u!Y)àD6§A¯w°d£6l½´aßþøãžOƒ'ÂÍ‹v¹·ná ¬´yÆDbïÄg}\ÿ±F ó>»Åõ^¸‘âVW²¸eïB‰8!B*ï¹½E]¥v2§’`Ìbr«ÅªmÕh«Œë _Ý_jŠpÔŒÌ ¡»Î!,¤%ÆIû¯k³\ãx`Cf¦eÑ¢Èâbq¥'‘4egNœxé-·`ø¢LÌÈÁî@ÀÊXL رúyQÅõÎ2%Ä‚v—UÒ¾7.vK[¦á¢¢G 5­ /Ü*ÈN“¼¿qjRVrnÿ!Ø Œ7Ükò¤)ß}ÿͰaÃAª ¯_aÑ‘’c%ÑQÑ^?H`„å.®,ð1Sž$;{ú¹E|Çg¿Nœ'F¨_Š‹& þ2ÿãÂ~eFÒøùEJ?Oý?ÂvùWîžf…áJÇ ¨&¨8¼çï˜Êœ¸Ì4¦Qý{Ñÿtü?år±ÚÝ¥í$XÛÿ.n9­V%6–êM¼-Vž¥µ!91±%aÈ-ËöMÉx‰IBr£Ü¸_ÌÜ{»3xòpJªÍ!kãa5OÆk*³Õ±¬,‹ ˜ä¥ `mkþyÏ€9C˜-Îa]p›­ž\æàÉÏŽ[{ã«ïÑ·A—T™tè½µÌÙÙIò¦”òšÂ/êÇ}™uÆèPM"z/Œ€LÃM >(Hô âQzÑÄ—dÇ/tPèÖX‰G€‹1®N40N„HàtœN›Ýfqà{äÒHkMY|¦åyÓÇö˺ò¡W îûÁ¯Ø±cʈ²[ÏÝ©]7èϱ‘Sì¬Sˆˆ Î̳@í†j ¨II'L—àGR T .¨þøP b)ô&0QÈ×߉½F€—<‚ÙIóåàqB0T<ÁzÛ¶møt ”Z¯ÓkÄçT6l2©RL˜‚ç5ÅTîm2˜eb¾¶¶’¯Tb÷³TÚBApÙ¹s'Ž,CaÁÅ`Ôň'òŽŒÉPk4m2‘@S_'Q(M#Jmµ˜¥"¾¾¡ž¨%2¥÷z µ¤08ï¾ûn‹5áx/P_ððüòË/øŽ3œ*ëׯŽãÇÇ-nLo¡ö!6^ Œ0l ü Xû¸sþwF]µ¶ùhé¿oìX§×4‰ÌÙ e6CƒÉv4R=|ú…×W;¼î‡™ÙƒoÊ;ãÀŸújIÝÎøÒêôb§NvTÏ‹U ˜Ó½Ô8é ç} ¢UÌI_rÁÍcoaIE¯vL l7/9±RÐÛ ÕûR0ð`›>,½…§’ñ¦(Í6Þûµa°"s1ïW¨%õN…Æž4pò!º‹éÓ§Ã[Ž ¾Xø·Þz«×Wæ=^7t,nâ„D„›W%ó·Ð ¨ñ /3¹œ8 ƈK"1à„ó¿ËMÁed¸iÿÇÉÙäef3ÿÃ#Í„„ÌP*«"Dƒè×ß¹ùï4¡Žs£1œ_ è’•1R0º3l\åÁª†)W]Õ&aLW!€àȦñàñšÀ3Òf×ò,|S£ÐplÊE#:t6˜€Nc“ÖîÔZ–¾ã6¸øtÓ53ä&Dx_èIÖ3útVVL Š§`˜"0QÐù™RFò‹&ŠôHãIÊ ÌÄ3À…ªÁ-k¢ 3—ˆ \0™Æ'iüór{:sæLÄ`Ò'GC~Ìv>µlIQ%”JiÓ™ ¾¶²%.II«Q§—*å›XÚ±7„ Lhÿà‚_QV^…Æ\Ùl‹S:,°ÞÍX`æ°ñE zlÁ†KÕÚÖÒ"S+õFg\r†›Ìä6Ô’¾õÖ[P˜Râ?{wac«VÌ>ÿlš‚š…sê ²àÅ;Å¢Ó¼þüÓZ½).*rÊ9³à-Dv,nñ*‰g¤\•‚æù·yõEÕÄìÜÇÌ×›™¦ˆwÑnÞ/°ËÈ‘|Õ½»·­_ùÙˆÜ÷eö¿\(òþ>†ZR"1±†“£U+p~o㹦!óiDÂX jaÖÑ®µ×I]^Ï"ùˆv„n­—ñ¥0Z²ÐŸa€ÿ°“~L_ùGk5& ´5ÄðÍè¡ÞZDíðNÔ#–Ëåö ôY}Ç]tËaÑ8uPí­Hî^¨*®ä¥D7a|q ¯¯t“+ñ¯uE†¶ý{v7¡¤ðHÃÑ#e/¿œéÃcè–×Ï-:?_¾"vÇ/C£_?Í WEkW€vɳþÜâ"· õ ~DeuO,²r;tøÞ«&î(n]·i/K$ãÞ†öäâ•Bx\°`§zo”µocÖ$ÝÈ)ñ±±&KßTô‚•U«.ÊWÊ…ÒCm<¾] œû¸.òzJÒäò Ù‰crE2µøhe¨& ² -Pµ^ˆDá"ahºÐ*ð(ÜWY²Ì×…¹TÚ?ÞA˜( ‹Y¬¥éxîï/—Ž¿tœg»ÖüuÑm×öé3îù·%D7ä„XžÔÌk´˜m²ÖU¹lä7kªGçèFäÇÄ(ñ ’Эtï(”çwQ€0Zlý¤D.º| ßKVˆ† ¸À!ƒ¦Í)b{& æûqúÔ/¼.Ð÷ x¦GLx"12aßò…¶fmÃÔI—ˆÄ—c“ÁÆïžé×/g[îÇ>/I¡„9‘“ëE#ñ*Œ[$™_0MCCÅþ5ûçáë,GÊø p¼LŽ]§jyr$ï@ixÅÉ6£9)9Í{jIáÌÁŠÄåK¾1|HFŒëÁ×/ÿyàØ© «¼ÀmgÍœp¦\Ä/oÖ"ËðI3ed ý¶K_9cÞ }ãNfKÉ+ƒÊÄšL³Ø²[&>6zü°þCÎÜ·mɲŸé3ì¶ü3îÝm•PKJÄCS!3&ZñþÅBi<'xQܾ—¢– nŸÀ´®£µv¹àø L1ÑáEÁR1 ¾\Ê_»ÂßT¾rÉN}›Ñ) ,Ø‘‡*hÃàÐþ⸱ %)·xzÛC@IØÉžIè&$¶{=ÿüón‘¸ ‰7;ŒpoÙpVÊæ-›Ææjƒø‹6 :L€´ºöPX-£ÍÌñЏq¿—Éð¡\γ[°b#´ ´ˆ¨ì/)ùm/ 6¹à £a½¡‰ÅŒ@ÇÍ´€yY.“ÕNšrõ¼[Þ/«¶æÆWàŒõ¥À™À,'Ùaâ»´)$aFæ–Bñѱ2ÊœgÙƒg쬉‚îjjªp²Fz_º'"¹EyëöéFìEa_€/2“£]r¹qéš,‘mKísCA?Ó°I *•^ ø,-Xv%+-j©‡OÀ*œ8 Õî´2• º/[³,6Ðl³†VANj:†«,Ì:Rt,x@™¬øb#Ø?Euv|4~~‰€×\é¾Ï*>UbÈ¢!T7Ó+9·"`î6+fóÝâq<·¼z¬ô}åKÁGÄÑÙa ­½2Í”1TðËüë°X˜†ú…V3Ç+ââá› _*vè¬ötòý-eóJ‚“‹}Š[„ÙHôP0NàBÁlÌNß. <ÈH2<õŸg|­³G²[n¾E«e>Л‘Æ H˜Ú ž á’Ss÷m—ÞúÐGK­ñŠºw|ùgÔÖ’¸G½aÆŒ <—PûJVÔšÏ>«zã«56"BÅkÕTìÛ§[·¥¤§HM…¹`Z½úÀß§Þ{oòµ×²ƒ @0— ‚äL #Ìܺ裟¢²õ÷^éöÈi5kkmµÀlØ­:u”^«hK޲F$›úÊc}Ïî“I¦zÝ2ú¹eû|”ú+é:€'Z#™B†Ù€â#Œ a` ÛÆA¯¼r¤¤¦à¢óâÀŠ=– hWY)h ›••­ƒsªž@¼û×·…cffjYÙ1žoÑcMxJr¬PОêÝãµhl$¸ÔÕ×çæ®z‡9çd¦—+Uˆ¥µ-ú¸…"Z%âã p³u ÛÑl–´”$gMC~®¡jËÁÑ^V½&Î\žÕ÷hU­ðàS«#-­¿FjÇPxûí·£øøFÊòåËÓâñ=ƃ;ÿ†te³¿v_,bVl0‹óaÉ0ª ÷+¼’z§EcO°:PÑèá mL£ '$‡¦¸qós´cðDÜh:o¥ ¹cú¿¸Ðñ 0óV0óÛé&@ [EŽÅ\Åô‘š°câMp:øF“sBhú}äs‹î¹ØŒlï<:\Œ˜;ŠÄµM¹}}ö¤n„É-Æô $Œe?úbzâɳé!3¿Ô””úzQkK IˈM0.Ѳú·ŸöàÓŸ¯ÝéTKÚ=`Y¹MôÆÿp„.4‡‘`—ðz–Í›-\FƒL†¨)LŸåH¿óN^ß^QIýW_¡»„‚«RåØlG.Ä΃èÑ£–Ž›€¨J¬xlûBL~~žKw"æTwæì#¼i @2rI†²¢† ãLÁ;d‡}¨Nçý*.}"7¦SaŽyÖ):Ý•ùªáûÖíG`v0…å²~Ê3Šþ6á ÅvάLUòûôa V «3x:àÊÁ§ÎD¡ì¸¥®L}ôÛ‘÷_8ëúkBÛ+ìURfðw};R`Ň8V‘]g)âñ¦ÄçÎ|¸\Ì{æÍGßpÝxí“U^IùŠ„ãWKfûvö ½ ÉŽPvy±/‚þãa¨` ѤIJ¶“$·xËÎ8ã ÿD¨µ¤ìÇm÷¢T¶j¡"!\œ6³]ÏDcå;Ï¢Å5ºU*¬PKS$JI³9áÅöþÅr=EÑý|VV é8 IDAT"0ãŽñŠ `ñ‹¤?¼ÄIxíãI|qA jŠ¥‰IÔ¯ÎÇiudáÆ ÃÅG%>hI`ÖêMÖ~uvDëâg'&5;øq±ª£•õÉÑJ¹T ‰Uñ™iz&—ܾ}­þ0;ÆQTbÊN2KxÂè(YS›^*KD|…BnÐjS¢ËêšSbÕ8¸¼DÊ8OR$&Ô–3{öìÅ‹šp–½f¯®µ1J­]¿Ù˜3"C„“U M0Íê°ÛF÷U4–QÙt¶Ò CGŽZ[jFv_’ø‰Oí{þ¶ßgç_Á׬uàÀN‹ _³;"ŒúVuLªÃÙ¿¾¦$>{zÑÞ­•e5g]öWR¡–”Áö3l7Âùi8Ä .rÆÓþ™ î¬Ö®¡‘èïÕÝžT˜þLî÷^Åð‰wÆ9~™K(F/çZKƒ¿ÌüôÖ3ÃI€õŠØnäš@ÄInÌŠ/ïWx%õN‹Æž°¸_Âz¨úØÙˆ}\çœsŽ×xØ”2oÞ<¯"OÄ-;ó!ßWP¾”ãÙ£„ .ûЭ2¯MO\HÛߨr@Æì’9nŠxdíxäú«PˆÚô&‘TнGbŸÈÍüsIŒDnPÃ,&β²2·ìÜ••šŠ³|Òòöƒ­ÃJÁk‰EPÛÈû‰_„Á¿¸`͸F*'¢0P!£7zÞã°´äñ¥¯¼óëÒõ1 ‰íÍ;Z+Äw¾j=f¾W¡r ¯©ùæëáBa96†^xabt´üë¯64ô4(å‚ j–,)z÷ݼøøÄ+®°·´4ýøãð˜˜âo¾ÉJâÓ9¬x8‘ âŠAíµ?AgŠæˆ$&±7á«1ŒiÆÅX%ÌÅì•×»LVX* ¥®®öƒ>˜•´Ã?YdöŸ ˜§hDƒÉˆ—/ˆÞ¸¥=ˆ³í6:ÝŸF"õbx`!MÝ¡­ «]â`‰JMM4h`0& äï žÌ÷Í|¡ ß<ÃqÎæZ¥f×ì¹#®¿ì‘´®BMð­¼ÌM‡Õ¶Ë“Y?^ZtÃy}›qŠ:—Z„·|iEmûüE|Ñû4l™À¬‡ÿìè1ïÕSï?£ÛÓádz·ö¥% ‰jaÔÚÑú˜%;+놧%{ûï‹æÍȉ‹râ{u.Ó°q¬Š\Æ @õÕ°*ú Êb†¥P.˜èÛ1!…à8è7àÁ ®o¼t¸H'’˜PDAp ‚]´$+?\Ò_áä4¬”8…'¸äää 1 DX]vtû*Y}éW˜>¬¿]`Š’H¬vKBŒZ"âÕ7¶e¤Æ;ø! ¦\šŠ6 Ïä/úaïÜqCLKœRÖØ¬ÍNØ,¥ÕMýû¤hp ”¯RbœLæøhµHæsg]¨%ÅÇÿøãíõ¼ £¯“Ñlâ/Û°·¨¨èÃ?ä ùÀÌŸ?ßѷϹsçÄÈœû*ÚÖmÛ§TŠ›,˜0Úƒ ÎøvÑ÷>w§\•dç&óFFÌ43Ž)½>*ëŽý;Ÿ˜rÞ%Øš"ʰME¦(QÇo¨8h—:·¬_¡3FdzK£sXZTºg×jI‰lŒþàZ|ˆ¢EÇwþÛ ,üC€(Kí°2öU¶ðÌo¸—›±N\ÓQ ÄXýÞ®áñùC3$°ˆ#ø{+ì}í.çÉ»p§CîÃ+©wZ4öä €.èµ×^ƒËÝ ¯ zL] 8ÐÏ+ 7ñ1ƒéãv¬•B²‘fŠ—i–.WÂÿøa^òz¸±p“5VËÐÖ¶ÏE ‰9D\lŽçï¸Uáóe8ÒP.ÆXHV Ú­³ ·è}`&ªÔª¿7lÌHKÅäåq¾A‡à5¨cä@?‚ÁÎh2Iì¬{æèeŒ&£Çà²Zµ®ÛÍ„wöäQVcåóNøkå·FD_ô˜"%5íÁÈÇÐ츂äF¸Ìååmbq„L¦¹é¦A11ûÍfÑœ9PF žÂÙ³ýüó ¹¼ò¦›¦  «Ð€ƒ^Ï­ ¼–=;+ÿÜíÞ³ Z&V Yè…ÐÄçªÏ={Ò74Öïܵ½_ÿnyÞ¦;ö=÷Ÿ‡ 4eï×Å©›ÂÀ=Î;‰PbAç­;ÆjÁ  íîN‹zG«ÄojZ*N‘fF¾ ¯ÎàytóÖ³¯žeµ·ôñÊ’gÆÍ3´„òúÿ²èw¬ Ç—ÐpçÈüؘÛ?Æÿ¹ûòJ÷½½¡3{`Ðü*¬‰Ò…M%Hƒ¤£ˆ'ü £ÖŸ1¶Ù`Zv°ä`-s0Èm,­j2˜˜Ï\[ø"§Cã0X¶ÝŽÉ˜3.cXrt„«¯=o7è0ÉötJèͰ2Šiœ©©è¨1CD‚ž’0̯«´ý³óÊ¥ëÔ/l¬'§B/XJPdqž¯¯W# „v*`ÓaËù£æ²Ÿö †^6 ?ž*2yÙÌV[EeU~ßrØK0=Ó\vÅåØiýÒ‹/:ìŽ#GŽ cr©ÔŒNO.6KUu5ÎöÄ-ÖháWÔ·o‘rßKŸzåÛÛ/ðõÏ•¥•šk®.‘0Ÿ£$L\s'.NArA^Wò`˜^‰ÏOzàj…¢zÝ:,ÈWŽ/ž5 b^PÁ¬9~E ˜ êÖ¯‡1¡7.éÖ[Ññax@Þ`9yKJd&bƒ .„±€^˜(“&NÎÏ+ð–Õ{ä™uÓ«¿~ô AÃ|‚u%õ„¥]r™*zâ¥Ã†]LžD9<öƬiA;;v¬¯ï6úå”óϚ5¤D#óá½éb¦©ºv¦Ê?øa? ¯ÖÔR þYíŽÁ)ñßß0gj^&Øþ×ïçÍ¿@V‘vßÍ/-ð¾Ä?l9Ñe‘^‹P † Î*@‹EÏ€R ‡¥3& (»qA ˆÃPÉÎÎ&|q˃DrÃó8N˜RF%f R¨£Í†6k¶AßR§o­mí'ЈE‚ú&\E¡Aà" o¶\›Üw¸:&Ñbh3gb1^OR]¥ç‰ùM¡¸Yƒ•g U"“­M$®‘Š…:©25“±O| ))±“†?£j ¿hh- Ù+{¶Þ%UL³·ìÛ¾G <3ªà™" ƒžâ¼ ¼d¤<å ¯¤Ðdn¸ñFOj$†ë]SÒn™÷Ëøñã}eñ½gØH®vŽÍ¤µ`î€ýÐNÛ]cáñ[‘ ú ³ Ïë^I½’¢‘½ VÊÈ3Fá@ ¾‘‘f$Ž ‹·º‹ò¬K­ã.€ž\DáFtA¶—Ç-Âè °®Ô×Q¿^¹{ýX&7erbh“ ܼløŠ+¯Ä?öÖW€¸§}=õ/–H¿üüãô¬¼yÌB÷W\ÎhøÝj!óž{wÝ…Ê‚}ã¥Cê‘éÊo¿]x×]HŒ HÝH)´»œœ>ï.zyX^$?,W¯®©ºáº›Ð¢B#Êãõ5ÿ`u@5q-9Öé±q^§Åÿ0&ÑØ0â(•kÔ• UJ©."WGíÁÌM6ç½.Zõœ9sÂ.6Å3lèþÁŒ©5±PpñÐ\OK?ü©ÛÊý2¤ï¢„-zÈàóvOÂE(–E%õÁç¶0ýgÃf“ß0éZdf‹ ­BžˆïŠ„ Wr1l ¤\L'2Gñƒ²Qgƒ1Ô\7Pªh+Þ4dä%"¾ÍbÒ™õ­b½NnoãÇùãÕù’reëò0¼^ÐXPT yPâ-–´ÄøO·®¹Z?4{äÿE& ‡ß Z F¾† ^IásûꫯX²\"^È ¨ü¸¡CCöÍ7ߌSÌào( 1Ì£á0*šë,Mh(&]+]…}âùUU6LòÂ0C7‚\ÁÜÑ[Š€X)lfö•`cº$²xçq…·¤Kd8µˆŒŸr~— ^‚ºÃŴ蛺\0O‚SΚ†žñ]Ç>³¦VGt’Zxxv’éiœây*V.­µ®­µ.Â]6ÓkKDb‰¢³·€ °ZLˆáqø¦‚93*%¿©¹íg-(¹©ý†»¨¤~ytú!>¢º€R|üY¹ý+ ^I±æÌ™a° > ì+,ÅWY‚Ïâ?ex%õO“>í%k¥ô8zg1iÒµõNñ¤xv-§"5útm­õÿoë ®‹-§G#£¥ø ÛTþA(kŠE€"@ P('· Ù®·Rˆ‰òñÇ“2<þÈ3ÃhùÇ •»æ$¨å“‡,¥L8Ù`Âí>Ù)}ŠE€"@ P(ÿ]¿/{åa™ÀƒÂ-büï¡ÿîÑœ˜‘ÏÏL”«3;œ¼š&ë5/—r‰ø óù<§ó„ç‡?XÛbT «š¬}Xy Ì8ÿœøÖµhöÒÑŠÀ©€»/ÅÍz*ÈNe¤P(ŠE€"2]o¥@$c†O:c»ön%1þE›÷\ ĨEÛö;ïßE³ÃzîÓ¿_-¸þ•Òâ37ák_)­j´þ÷ºÔ›gÆÝón…ÛSzK8… ^j¢œBUFE¥P(ŠEÀ+gŸ}6âW®\éõ)yR¬B¶ Vy |æêåkY~¡Î¬~x^’ÖèøleÓ¯[Z‘ýÆsâfŽŒT+„ÿùªzÝ~Ý=s£DÿwgÆÚ}ºç¿­q£o³; «LsÇDqã_žŸ–“,UHüÑøãú<šÜ§‰›€žÿŸ¿¸·4Lè.ò<Ú^Þ‚·÷p¸ç‘ðƒÿ·—IƒÓ—î|Ú–Œ"@ ôˆ‰‚â"àßP9)V Œ“˜d9‹6ˆñ¿â‹MÌ `×SW§Ì{¶Dk²¯x.oùPÀ¿wnâÄGZ´6ŸIûæ’ºËΊ¹ãírO_ŠJ&œ6,âꩱ_­iæ’…qÓeP–üõ[Ó‰•‚§>q7 SÂC¦mKáA0Å6 D§q£ý4.+-E€"@8m`MRBÿ†Š?+eùîj? Íšâë)œ'd¹I@Ü)9¹WúJï+~X<·ÌŠGØ$Ãû*¶Öï,6|zÖÓ_Vï,2øÊHâ_½9mýÝ#Wm>¬ã¦,©1ÃDÓ_•#áÆcQ ÷–†)a#@ÛRØÐÌH± M@ P(ˆ€›‰B$ôc¨ø³RÙ)â«ð¾Îò Ã’%ƕ߶2 ½ð[ZkAà†W]:)úÿîÌ|ýÇÚÿýíÏ®¸å­²²:& ÷Jÿï±>ïüÚ°¯Ôȧu\4h¸3жÔôh^ŠE€"@ PNKü¯ïò,r+Å3ƒÿ˜"¾v¡¸â'…´îkG¡>V-Ây_»:Ü&bN•oþlÆj/8Cˆ•¢ÑÛâ"Ež+¾¼Šzfª¤ÖüÕš¦ÁÙr‘€‡%dv0àñÎ:Sí5=¤„„À_[µ´-…„Xð‰mð‰iJŠE€"@ PNiºÒJ!&Š¥"ˆ,û°äŽÓðÛª¡Ò ±Ý·¨â½»3+ê-°O^ù¡î”oÉ)¯·È$ü'¿h_öåšæoLÃæ“–5t°óù÷Ï=mwœÿdz¹‡*L‡+M]šôœÇž{Ÿ™éŠE€"@ P(ŠEàä#ÐeV YèEL”Ö¶öCÙ@{A$ðfø+S³ÖÖçº}Ü«vµ­Þ݆Šñˆ|eÂý‡£TÂVÝñÏž|¹ºéÇ -vû L)˜¿ŸKá!· 1Ó>ª’ tF¾Ï"¹öà»%¥·ŠE€"@ P(ŠÀ?‡@W~{ž¬õb-“goór 2Ò{&ø"Ã8ijk7QH.®‰Bb &‡Ùz‚•âŸ>L$À9Å!}˜ÅÍmkÿضv™çS_ñž)iL¯E`óê¥;7¬:IÅ£6Ôtß—…šêªöãÓ ]Â矾xñâ.'K~ûí·ß|óâMMMåååFã ûßü¤§(ŠE€"@à"Ðe¾%Ž.uÏpÉáÚ©~Ý)žYþñ˜_¿^Tt`çè©çž2Û«0û·¯ƒ)5rÒ¹nO}Å»%£·§.oH³zÉ—5å%º¶V4Ëÿoï<à~¬ú?žŒ¬PöÞ³dS*Í];tèÀ<»uëF—Ç{¬@/¼ð‚í~ÅWŒ5 èyä–@½>B@! R2·¶8³yŽ8Ééß­v¶I4¿b¢’¥øfþÛ~x™÷?CQâŒØ9×sR^¾àGös•kÄné(Û9L÷Á¾Ý»ê7½é¼ رÞ6P!M"Àf:Þë:°o÷Oß/^¶cþŒIFÎÞ?vÂ(æNýºD¹*P”ÿ µ^³Û; ÌûfìÐ?ÿŒu¬:ÿüŒ*7¬^:oÚÓ1èÍœúÕÇp‰–÷uiÐì–<pÍöðÁýÛ~Û¯P,Ï ÿxåœ8~ÌwzÎ%\5»·#å+X„ïu+… šlwìØ©Q£+,3Ê–-[-ZôÑGÕªU ¦Ñ½{÷}ûöõèу­ïÞ½±Ñ¢YÆŒ!'TÎ; .Ó±OŸ>ôm×®—»wï6•ÎïuëÖaV³fMCQœ·(;Ç…0îÊ•+!æöî»gL7oÞÌ´M_ºìÜy&t¡éŽ¥ò¡Oo¾ù¦K¾.…€B@¤LÊÎU½ÔEWVÊO&Æ++¨^êbjJæÏYä¢ìùseÍ=Kö 2eÎèf%î³À„¬ÍГcþÁóîŽ^ÔÚªFß8)Z¥áÛµý÷[ã$;g®<ù _³tA£æwd¹ ëAœ vl©T½^µËÿÁ|6ýºÜÄ ªOŠ9KfšA#BLžðNY»üˆŠ]$äö‡ºgÏ™kõ’y(LªÖmP¨xéÒ«Îú-~çù ûÇM±NŒ‹òüm}ìñCÐÈÖ.}äÐÁ½ì¨T½n† îã6“'o+)_9ëW-ñó±KðíHôEd˾oÏ.ÊIñx¼öÚkx§ Q¨Ø! 'ìò/ºè¢iÓ¦áæÞ¼yóJ•*Õ«WoôèÑ6l(S¦LçÎiLžûâÅ‹Ci(C 6nÜØ´iÓ›o¾™Ë °(+ÐhOC/[µ8~üx©R¥LwÆŒPƽîºë®½öÚ)S¦@?}ôQ_zc¥eË– ¦„²èرcta>%KÆjÞôB@!öHL–:o¾:<£ÇŸiÞ EÝ]>ÿÇÌY²Lûz,³âÀ˜ÿp£¯R³þoëb·;Š”pÍ6¨ÞÕL—ih|èƒV3÷ÅPîž6;»ñÍ‘+…úý{c=ïçüð5ü„BÆL™á¨SfMúg’ý»wúóT¶ì9¹ô²Yo|Ó]ß>jâ¸á šÒ´Õ½°nÚÛÏŸçÅŽk½®°`Œ9qÜÞ=uêd†ÓöK¾r|§gúÚ%øv4m2œM;»j;¨-$ÛüùóCQÅþÞI*òæÍ E¡ó-¾Ñ«˜€]Y²dA¯‚:eذa?ýô~ù” ëX¸p!-Ë•+ÇwÐÇ8ÃXMÍð–YµjÕĉ ý°ãnݺ•»eËÆÚ×¼._bÂA©g&Æž £2.ׯ_/–—n ! „@ªF 1Y åÎûý£`YŒh“Zˆ »œRJ”­œ3Wìn&Ç…yÍþaÙüa)fOy`o¬É[ îÙ8žn»×ôÖS©OF !Ûèh`¹0wì>»Fý&W_6\/ç¼é©©qeSbpíÛkôfr«LåjmK•[0óû¹S¿Á‡äއŸqmüø±Ñ2•ŒˆA#´âÄŽê¦h©òæ–WŽïôœÂƒ:RÛÑ#‡p¶ñ¶75I­a­Zµêر£jбcÇ>øàƒÄ{úé§Ñ‡p ‚Á·a ü8 Í€ÒØ.¦ë@[òã?>üðÃx›¸î:/ wÂÅTB‡ 1¹sÇþ€ð1ñàKŒbj\ß¿ýö5—\r‰«^—B@! Ò ‰ÆRÞýs(JgwìØÙ¡ÃC‡¾o¾m=mR QÙ°j »´koi‡‰—yÞXËl\³ Û˜"%Ë;uÕâ¹(¼é×G4L&¨>ͼ.Zˆ¤ÞF3bÉò—dÍžcÙ¼™ù ãÇžïı£ÜÊ”%˺ y3yWÑ~½Ü]½d~ñ²k^uÍâ9Ó²dù›9r 7hWp\1 ÄIfïÓÉåRýŠÆØ›;z¤Pñ2Üò•ã;½‹òýÍxÌ·# FÌ7flf\×w2`[»vm¸¼C0Øô¯]»í„Ir‚Ö¾‘à¶p饗âL¡Áüùó÷ïߟ/Ÿ›\QÓ²eËqãÆ=ûì³48Ù»e.q‰ÆÌš5 s/ ·Péà oh6fø· ~ÁìäßóÉ ¡¾H‘"óæÍ+V¬X¸âÅw\U ! „€H-¸ÍÓ2oCEn:ýù曯[·nm¿M%Â-]IÈ@¾}_~ùeŽ}oůrù/³Ë]RÃR„T©yçÊËù ŠR§ÁõGšúÕØü…‹]˜;VÙÂ'¨ÞÜÕwÚC ¶Ñ€–5[öw?‚õׄO‡‘zMÈÁ}{ÊW­¯øaüR7–­\ €AWÐHäÙS¾ޯǻ½Ÿ$ÂXýk[zŸE­«¯]·r¾XÜÂÞˆüx¿ï³d,EXûêk©÷•ã;=—|ߎ´A±CL3«¨qöJl/¼ðÂ_|‘_¯¾ú*©WpVÁ[½Aƒb ã7kûÑ£G ùE¹ãŽ; 'ƒ Â@+ˆ!<ðÀ÷ß?ăˆ^¨hðr±QÈœ«ÃÞìù矇„ ÃÁ*¬N:´7 èEð_-Z´Èž=»³ÄfüøñO>ù$Ê–‡ŠÀ§L•…€B@¤L2<×'6°Lï®g­ìD'.Ü‚'¾½ / Kyà‰–kVn\¼lþˆxßw_»Ë.©U¾RI_] ÖÞ#GŽdC@Gb‰>÷Üs„à¤|Ûm·çÿø‡W «c‰¥K—r ië ôIO.Ùs¼ÿþû®ø¤¶¼çÕ½ÐYMùø±£i˜Ø²ÎöAõÎ6*§U¦Î=w)J40ŽÂ‹wsÛ‹)Ô,\9t€ÃD£ôÆÄœ@ß’5[ %Ò/?N&\X«vg¶Ëpr´4yòÀqÂŽH!HŽwzÎ^ÞŽh&ÉêØæ§à9®–¾—`;ôߌ‡ºoƒ„T8p€eæÌëÞc>㑲wï^è lr5š¨Ç5ôù¬™Ü:tˆèÆ^Ã0g„CE\màEXŽñq¶¼õÖ[±#ðsîgïì˜6Ê]ß^Ôç±ËÒÆZ´ ! „@úA Û ÅD"&¢WŽ 2æÈš)gÖÌÆâ¿c1ÇcNà¿“§b 'cË“'Œ·”„,û+˜(AEú÷©WQ7Æ”–‚©V ZÀR8hœ={6Éâ*Ͷÿᇠ*W4Ñj;"… zg•…@<ð CQE°,+0è Ì”)3ÿÙfÞ®/V1È]ví.Ã-Ó%HŽwz®!\aøÑS—¨D¿D©â’i( •hZì-¼ðm9¤tXñ icn9…ÛÆ!G*´1~ÿ¶± B@! Ò$‰iñ@¨JâÚX } ЉyæÚ”çÌ™S½zuN¿ûU«bƒÑ¤IhŒ‚lkÇ'ýÙ¤I“ì BpâˆQ„­a«Á9¨1ºÀÎãò+¯¼Ò&@@È_|a« Ò9äƒO60ôŠR‹’lSJÉ‘çÅrJž¡æ&„€B Hd] _hFÿ>o1˧ºuvÎÕT:kl–‚=7.ª¤5 Sˆ«ƒŸ(ÉhC°4*° r†Û0*1ø&×^¤öÈ“J40ø¶ÒÝHîß¿ÿ’%Kî¹ç,¼±ÁèÔ©òiOziÜfà?2dHáË»šöúB@¤Lð]I™Ó¬„€B@$X ®)A£úº¬@Q *–ØB[®ƒÄgz‘é§UþS&ðIÖ¨Á>ûª«®¢1Ù I¾™1vá/½ô’“¢àÿJ@ÏÁƒ[±ÈÁМ;×\s 6â|HñÆ]‰"¿Q£F”î•6Ýs]œ­Ôì(*‹ÀÔ¹Sõ.Y4·¶‰+PÒ„€B@‹@Kñå!á+‰·.±¨SÈQ€u86ÙåÄj 'Q¬¼6mÚd­´Ñ~`ÓEpOÃR\þ£’+V83£á7O¼îÝ»Æ ¦_¸ã3ß˜Š™µ§XÊIä•kFÑwºB@ïRºzÜZ¬B@!脱”x öØæK·ÌªPl!Q8Ðßu×]Ù¤1,…´Æß¦±k×."{bÊõõ×_cæŒÃ㔌A|¦Y³f8Í;}a—-[Æ%cÄ…ؘHbÎŽ” óåªÑ¥B@! „€çDf)ƒŠ/ƒ¨d}«±á'Ñû¥°ø† ¢$1–] |]ýõÔg̘w’¯‘£šñÉ'Ÿ„ … ùÑð9ÏЬiÓ¦tÇóþ_ÿúFe}ô¹süøqrOÍŠ"©-« â€èn¼¡SG! „€B@X™¥à—‚.å¼>gäÇI—BÔNÜELϼyóâìng‰;ÊÝwß½{÷ng&5WG{ùßÿþ×tÄ}ÅJ0¼êq£‡ê Ǥ€ø«×ZÈJÇ—.…€B@! „À9A ‘YJBüRÂ×JÄIQ‡܅œ˜T!mtK!o>üðC\àÚ´io !‰¢Î ÎwÞÔÆd“ä×2ÊÔ.ArT/„€BàÜ"È,%!~)ç.’{ï½—ès^ù|ðAÑ¢E½õA5„Žpå#7-ÉD sÛ‹àï¶—)¤4ù é—DIAwã]ïœNn„$›»‘öôÓO“ožÐäÑy¦_~ù%IⓈ¥ôÉ—¥`. ùôÓO9‚÷zi˜ÒçŸÍZÔF! „@ D ‘YJBüRR :š’HúöíËæQxC­Y³£D¤®`Á‚ÑËüñÇñ¹² I]ÉG>`ÀS^ÂÕ%9/Ã'4“D'*ñ›†ïôå™úJŽ_%Õ¿ýöÛo¼ñ¾ûî#>;¡yÓâ'J½„€B@¤¥ä)qêÍW‡?þLûI•žwÍ™¥9sÀ›*Ú+Ÿ;%¬\sɆ‘ÌX†œ ?±Áµ ^7pà@6”… fM¾QZ._¾6²xñbŽÃÛ·oO‚tÓ†r"k?õÔS—\r‰kò˜D+VÌY‰´úèe—]æB0üÒiÞRwãŠÀ¼»¯Ýw"æÏoŽU ¼÷ÅúÌ™2T-›»N勽¢>š¸±b‰ kÿuë‹[ÊÉAcoË䬠ÁhÞ¼y¥J•ØC£¬Ø°aGàTâ ëhÒ¤‰Ùwâ>‘={v¨ˆ Õí$ûévíÚQ«3fŒiÀV˜í5Æ`\vîÜ™oš/^|Ñ¢E”q•Šà›AŠ!.™Œ3°|£&6ÍS§Nå»_¿~‡†¥À|Lcï̉ñÍ-v·(dpÌ@™€€šˆ“§M¼?ÌÙ —/°L/C×@z€Ö T…“²ÉÕ&èÒ ‚iiŸÈ´iÓ|ô>&“- }ÚÍ7ߌ 8“Ëc¥“4—|C-  ojì¸ô¾p…LÏ94X9ã•s¦àD”Œa–TôB=K Á>߆<¦ðwÀ88A?ìêPÄa·òÁÐ;îÖ­[iS¶lY¾Ž§e…/…GPLvJ /$Ýq]Âç& B@!舥D€ ζù`Ô¾bÅ ¶˜’{ Ç©‰èHÀY¬× =Â𺌚á_¯?vü¤a)GŽÅlØz¨fÅX½÷S±ä…ŸþðÛá£1Ù³fÚ´ípá¼Y3g:k*æmŸ<5fkH¦ÑŽ;:GÄŸÏ>û ÷À1ÚÜ Ùô³½Æ³Å)ÄYF Là/OÉŠƒvîš=·±;xúƒa˜³WH9hæ!]B&Ò+œ¢˜Ž^¸B¦çœ¦SìÚ12„ E`½“AãD¥×ÈÛ2úߢÙð>&b á÷Zct ë@[òã?>üðÃáÑHóÐk…ÆäÎ}F©hb<@•äÍ9VR@ᔯ²B@¤aþÙwVÐêî»%Ö/×õKqâsÉ_îÉ“'cSQ¹reþ¢³ôÚ÷{-ã]Fð¾†òæ˜ÓgHUE„¤\±œÓ~ÙyQ®ØMÛžýÇÖÈŸ+Gfß®™2ž_¹d®¥ëö×­rñâ_÷^VîŒý½oãd«¬]»6§Ôø=³Ëd¼víZ˜&[˜U¯^FAü Œ”Ì|8Mç=\ºt).ÎÞ}jøœÙˆÓÍYv¨\² ÅÏ—sÜÍæ=wjKÂúÎÜå¾ï”¿ÉGCQø—å…+hz®ià7¤7("_ þÛiC`/ yóæ±4Ã+ìÝ|gèû˜à«œ•@`x7æÏŸ) qUrN€š–-[Ž7w#ˆ Ê;زqRš5kæ^œ› ÒÁ߯¼NhÌðoaÉØ€a[h»PHR(œ©,„€i7º^™3«ÿ>UOYâÎÙ –áeàÏsëÖ­Ù=° ~­½†ãœÎz-ã]¶øAfè†×íPÎ??v_ñü ´¢À¥i¾cϱY‹wÙ®-®*’)c†jåóL_¸–²bÃþkë{s/¦wá…☎q^ì\bÅ.“ƒmöÍØ²¶òåËã.oÒ¢E lx0ãsà 7ØÕEShР1¾ÐÉÀpÐ<° %–^Ô¼Òï½÷ÞìÙ³ñiÁ¦1zòã;ó–ÉGCQX;Ûq/\AÓsMƒ°°µï¿ÿžý=]pÕ 0€Å¥,׸-m}¢|gô˜î¸ã´j…Üu×]¸¼;ÕAv2øÖÃxÑèb.H%' 6 ™mCwŒð ¼]¨ïxÁêÔ©cÚs ªFêÂñGg¯$…Â9PxyðàÁá tW! ’ΰ°½ ògüF‰«.%Ãs}b3šõîú7ƒ“øz{uè9uè¿Tç*ðžç9‘:± ᨛ£h¯á8tÁ⟽&ز‰4FäDö%ÌÁD²Μ˜ Âü/œsò ¦sµA1ÅoçÉ…sPo™§ÿDëüÞzÕ! „@²!À_[2Ø£RÔïc|u´øÖÊΕれ9²f ×¥Lž0ÞR¢ùÿí¯Q²-2 ÄfÎD@2söµïç–×2Þ´·§ž¾f詇8ÕEkö¶o^zÚ‚e‹Ænî×þ~°aÍ£'n„¥¸d¡3†Rvæ¨\ª”ºð³~»þò@ÿ Û8™ ^6Âöѵƒ4S2Þðñ›ž¡(ôµgÑäà£Âvœm: R¬Þ&zùÞ™‡ôMÈäCÄr+.ß鹦å ѹ‡O#w½3ô>&ÄšHå³´¾|"¶´ï€³¥‰à¬q–“ çX¾esúã{K•B@! p˜•@&qÕ¥ˆ¥Äí™úŽCE¼–ñÈuÁûš¡‡ìâ6­tÙºJé\#¿Ýp"æTãÚ`ÒÜm›¶.\½ÂE Ví½¤ÌÙ€­é¹³‹&Ö0Î0T…Ѱ:Û?í–Hnˆ®)í®/+K9PDT%ÅaUj*„€qG“¢„üq”_JÜ!K_Ãq² x-ã‘ê2‚÷z ˆ¥Ä{w["_R:W¶¬™ŒñSÇ–eœáånç¸._,çñ âäh’¾Šäã¦Ï'}-;ŠÕâ°E«tÑDP¤‹Ç¬E ! ¢@ ~ç.ÁÆâ¿c1ÇcNqÖ|â䩨ÂÉS®f\J—âÅäl ‰™Ï^œ.±«ÃÉØŽã²bìûñmõZÆs>MBqcOo‚œ’³Âk†îB—Ñ#@Xaۮ⼴õ*! „€B@¤:ÎnòRÝÔÏá„} ǃ,ã]ÆÜ^3ôs¸ -„€B@! R ç>±] ESB@! „€Bà" –rÁ×ÐB@! „€B@ø –⊪„€B@! „€8‡È/傯¡Ó&éÞáÇɟe /Fd~ýùçŸI$J`Vr¥“ê„°€UªTñ¶Œ¾† uÄhÓ¦Mô]Ô2©HÒ‡B–zÞF²q­â?þ ;dB^Ô ÉªB@! b)Ñ ¤6B ¡Ž}á¸qãLq"Ž“ÑœËxÈ5kVÏž=o¼ñFrÕ“Ÿ¾W¯^&Kz”¢H%NÞqÛ¸mÛ¶÷Þ{ï—_~‰df)111®4çvV®¹æšï¾ûÎYRÒÑyˉ h”-[¶]»v*Tp¶Iô2àoÛ¶Í+öƒ>HÒ‡òÍ7ßø²”'Nð¢Þо¨Ð×Ï?ÿÜ;CÕ! „€HRÄR’^ gxë­·&L˜pÓM7±+%ÎÛÆI§?tfΜILJzÈhc|þùq3Ý$îÜ€Ìè6`]ü&ï^?þøöíÛÙ‡Hˆ’¨D#*dç-ƒ áÂýõ×÷Þ{¯sçÎ<¸$%*$Ö„b1‡W^yeÍš5:7¹ ,èœX²•Yï·ß~ ¾ï¾ûx76mÚĬ’mt $„€BÀ" –b¡PA$¿ýöÛĉIîÞ©S'“©Ìé»ï¼óÎòåË9´nذ!IxLbW6ßyòäa§>tèPnqÉv™ /ßõ®^½vÊëÁk†ÎÄ«ÈÂzU”(Q¢K—.†ú”ÁÊ;.ö}o;tèÀ‹JÆzºð–(Pà…^°Ý¯¸âŠQ£Fí#<òÔë#„€BÀ¸ÁúŠPeR À“SLŒ." _´hÛ¯ˆÍÔà"°~ýz¬kjÖ¬éMÚŠ%X÷îÝW®\ɦ ꇰ IDAT–6ï¾û®™ê–-[/^̺Fì/MŽÑ«®ºŠ, Øß7hЀͬÉЫ¯¾J¹cÇŽl@çÌ™Ã-ßUÃ^Ø^óa3íjpôèQæ³oß¾=z0ÛÞ½{Ã%Ì(ÄLFèÅ_¤{ÅŠ™áôéÓiÒÑ»ŠzõêA]²gÏÎ*Š)⚃ë’-¾«Æyé4 èä„EÍ;×*pÀ‡>¤d­U«<Ð)–rõêÕùÞ°aßA æ¹yóæ Ð(Ï›72Vy†~ø>DDùÙ±c‡ë £sÚ}úÐ36„ìÞ½Û;‡uëÖ™ÕW;ç"ôÞÓ6Âé²sçN[m^!þ!@a€Þ ¨F! „€E@º …OÁÚ©³ƒ¹ì²Ëî¾ûn¶e>íâ^dF£ð¸º%Ä}²ê‘PöìÙƒsXî’ÅÖŸ-]óæÍ¯»îºk¯½vÊ”)lã}ôQ³M„'  ÁG‚uˆ }Ë—/C èŠKü„ó~ä4kÖŒ[HfÇéjc.ñŠfkN™ôÕW_ílC/2ó©T©m Ût?´ÁÀ ó$¶¿S§Nå»_¿~„€ç »ànHGï*J•*E! €wÎÉDSv‰š6mšïü±ÝB¢xñâì•­dvùl—]©WÍ]ÔMÜe\=&”ü8üòË/P)Äb¦%öùóç£T1r¼Ë·£G,õµÓŽ~½žTÓ¦Mo¾ùfÆ…Yy_ó¢:¡04@6SµãòÜCÞÛ uñ Á”PÁ“yÕ™4/¨±ê…€B # –áÀƒ–Ý»N¸9¦åOl„QÜÆ`#È"?FáñpKˆbŽj’˜v®h¹änݺ•^3¾Ù’ÂØì²Ï&¶5|CQ(°½óî)©w~.\È¥aÎzo™2yë©áÍä3fÌ Y²dA¯bZBiŒ' н>·˜°¹ÅwHÇ8­Â ´…è}胦:hذaDEƒÈQvîÂóæÍëKQEŒNŒª'ä1q~ò|@Qƒnnƒi™YBB–Ô×NÛvßõ2CæS®\93+ßoó¢ZMm0fÃŒ½™¡ÍvÜ@|%›J7öl•QƒŽQ,%.ÝB@¤sÄR"¼6°ƒä([jkºÀ ×œ­ NR9[ŵ€ý ¢½-½fôváFáAÖÞN·+J……¯‡Ðxbpž/_>çÜ áÑ›J¶Ñl¶ÄÙ,š²ÙðQO¼VLå°-¦M«V­0‹ØØÙ #ò.äGIQ¬(ßiplÏ¿»| fO?ý4úç̃ʓ&Mâ–!! {<øöxuêÔ±Œ9-ìâ|UgAcÅ»>úõB0Å0h Ú x¦k\ó¢âøôðÇ¿œ”;oÕ®]›o\¨'OžÌ{ÅÄ̆ÒÙÆ·׎êc_´téR Š|R%EqŠò†ñïâŸý7,EGÐîÙ ƒ}*Ê÷ߟ½¸É(ò˜ð²`ª;N ÷!3XéPf„©½ ‹äÛҘѳ] ™ËÔÄ×(Ü8ïúONµ©l½Ð°A5‰}ÄÕ¿8-,‚wÀlæÐ]@q9Ç 0~ËB Ch&8ÆìÙ³[·nÍY~Ûá› ]æ¥qG”d<ãqmÇŸ ÉølX¢³™·׎-Z´`ŸúÄO|ÿý÷^iÔDIQhéå;   %Àœm'! ‡PDßA 2è'ùÇ‹›vž?Z†<&TXÀÅ¿h¼íùægö_ù‰^ýz™ÛwÜá‰cÄxQ i€˜÷•¿?6 ™sò!€Ð‹–„ÿâ¹à}äì…~füøñO>ù$šÓç-•…€B@¸Èð\ŸØ€B½»ÆÍºÃ%%µ_vè9uè¿’à\ ÞóìùøkJ˜WØV^8 l”D ðCmÚã¿n¬>‹jÙ{q¾ÔÛ-2`‚â‹2£ýë_×_=±YÍ-×Z£p¼¢«V­ŠË2·Øèéí·ß¦Ì$9ñµ¡LG}Ÿ+º¾½È÷]2óÍ¢-ᛟKÑ[º ^årÐ~°ûä-帚½ žñP (ûºšñŠ2C³GwÝ ¿ŒSGþ½°ÅwA$?[—(ï4Ø óÏá@Ív™]{Ð@!õ‰ò˜BäÇûV”ë5¹#Z£™cÈD£'}ò ÉǹûKœ¦Ñþ~:Û„”yúCzĵÓG! ÎX"*“í¨™êq,|ƒFÚv´øÖÊΕれ9²fÊ™5óÁ£1‡øïXÌñ˜S'øï䩨ÂÉØòä ã-%! ÿßþŠX‰*XØ8b¼Á$ÞÆ°†¯!8í9£Å¦â³Ï>Ã<ŒhnƒZÒ˜M€Â"…G´ö¶¢TH™°÷=™f¶lÖ>gÔ 8]ÀZÑéÁc9·Léã×7N]êÄøhz¹Dy§a( uBú&duûF¹^ÿ ¢4^T¬¿øDlé ˆ+å‹KˆëI¹î†\b|h~9£¤µ!¢ì- ´PÄ» ã í( -ñ.ÃxCg;Fƒ!FÚ!vÚVTbÄR¢Bò¶Ûn#>,ô¤!³†à “;“þœ“Üs1i0v¾-±rAÍ‚Ñ?ùh]œç”Á{aܸq…ã½J§Q¸µöf&.kï¨Ö Fé"“̢›©èIé০%bë?ý•]d<4{¶¯ B@!(˜è)‰"*¢ù¥D„(¶˜iA1¸ÂVÄk¸@Ù‚ÿ-·Ü‚ë¼9ÃætÓÛiN3z×ð!Fá!ÖÞ.!ºL·ðÊA•o¸áQ”tû¤Ø…ãsee¦ØjbB@!¢.%ìq˜lߦE“ÓSÆ ô .Cp ½ 1Xì9M/|[rÎ=|øpcFïKnŒÊ00ÃßeŽû>S8mìÉ„96}“tIÓ¥B@! „€Hˆ¥Äÿ©9Ùˆ‘‚ù–Ó‚ËŠö¶äVˆqvQx¸µ·N! „€B@!øôËÕQN£`Ö¿5KùºB %#@8¾”<=ÍM! „€p"P0ëê×4wÖ„”§÷7>#–‚•n !‚èÛ©š qiûèÕ«¡Çß}÷]ïÝt^sÍ5×|÷Ýwá $gÔöð™è®B@!¸ˆ¥œÁsè¿%.²’–>ð¥»$[Œ‰‰W^yeÍš5ÿýïÉÀÃeÁ‚|þùRiú¿,ÑÿžªB@! R9b)g LÎ^¨$B… a†œ-ZÔ•îÙ³gžæGíÞ½û¾}ûzôèARÞ½{Ÿ:uŠz:âßB^ÑZµjåÈ‘#A QIc+Òr„€B@ˆH—"5ɇ@¶lÙ0˘1ãÔ©SùîׯßáÇg̘ …IÀaþøãæÍ›WªT©^½z¨Y6lØP¦LneÊ”éÍ7ß Iš|kÐHB@! „€H0b) †P„@â!€YDy8«/^ô„€B@4ƒ€XJšy”ZHÚG þü,²U«V;vLû«=½BQ”tò µL! „€.ÄR\€ø\þù矜acQ“/_>ŸÛªÉ…@íÚµsåÊ5aÂüãïJÉ’%‹+–\ã'÷8¢(ɸÆB@!bK {'Nœøøã?ùä“ãÇã¦|á…¶mÛö¦›nRèØ0Ôt/Éà Ä¥þõ×_õÕW¯gŸ}6­²Q”${$X! „@*@@,%ì!‘×büøñwÜqÇ]wÝE¾ . tìØ±Ûo¿=¬›î  ®;Ÿ~ú©­q–¿ýö[SŸ9sfç~½jժÆ ;pàþ*D+6mœ­4„€B@!zK |v[·nýꫯ²gÏÞ¾}{£<Á€ýâÈ‘#Q§àâL¶ ’T\qÅ£FbËøÈ#°q!-ˆ©:tèPbÅÒ·B… cë†E¥Jè}ÝB@! „@êF@ùRŸ +°òªV­šµïÊ;7þèR6mÚD7“¤‚ì5kÖܵkq`© ÉhAÖ ’îÕ¨QcõêÕ:üÄ]7„€B@! Ò=Ò¥¾»wïæÞÉÎ%J”øõ×_m–z4*}úô!8ÔeÊ”)hQÈ_”Ñ}Ëk¯½vñÅÏœ9¢â«²B@! „€± …»@æ ªV®\é¼±bÅ .Í- \‚¢P€½ð½~ýú;vPðÍhAY( wá6Ä £ B@! „€^ÄR¼˜œ©)_¾N-Nžúèe—]×¥'Џz®Ú“•$ªçjt+„€B@œ[ä=üëÔ©S½zõø÷WÏt†@Á‚‡ Ò¾}{†’ß3~«O!ñ:ù{AT’P(„€B@¤¤KI OAsH y+}ú3vìXïœ:uê‰'žÈ“'Oýúõ!-={öÌ”)ÓÀ׬YS¸páǼJ•*^\" AWóÎ;ïA›Ð 6„ñè¼lÙ2²‹^qÅO=õIH½ÃÑñã?^¼x1ÝéÛ´iSæà[Ið:ߘ¹sQ$<õ ô®+¨F• dT/„€B m# –’¶Ÿ¯V—²ˆ‰‰!^á*W®Œ¿Q  $­U«¥{÷î‹ëÑ£ÇðáÃ{÷î=räH’Á¹Œ!„9rä‘Gí|úé§‘ëÔ©ß(þñÇ­[·&ÐŽ=ê;Ñ :ôÊ+¯}Û†‹ðV"Ðw æé\TgÀ€^ÎåD,‹¨D„H „€B@¤=ÄRÒÞ3ÕŠR(h3 Pvÿ]ºt1³„œ¼ùæ›`˜6m,¢yóæ•*UªW¯ÞèÑ£7lØP¦L×b…̘1ƒÜ£¹îºë®½öÚ)S¦|óÍ7øÀÌ;—ì=7îСƒè;šæ°ÿþßÿ½I“&†#‘¨Ô[9gÎßL»(ß¾®éR! „€^ä—âÅD5B I n5*ŽW_}UI¹råÌyóæ51â¶oßNÍG}DðëqãÆeÉ’eß¾}Þy„ ÃÐ¥lÙ²|cÙÉ9qâÃÔ_rÉ%V ïptÁ^ }NŸ>}:wîü믿9ÞÊ Œ|»(_vQäC%Pj&„€B -! ]JZzšZKŠFó'gJP×\óçÏOM«V­:vìèºå¼ rñÅÓMˆé‚þåÉ| "ý¨4.+—^zégŸ}_BÉóÖ[oÑÅ[4•o Þ¾öV4Q”hPR! „€iéRÒÞ3ÕŠR%µk×FO2aÂW`³fÍÂ==®+Á¿C_|]¦NŠÂäòË/G-cëÉ׎à Îñ¾Ãá¬BƒÃ‡·iÓ†„?Ù³gg¾•V k ׄ}ûºÚ„\Š¢„€£[B@! Ò6b)aÏ—ôxîb¢c}òÉ'Ô`·ckT‰‚¬àÅ_$:ïÛ½÷Þ‹cçÎq•ŒÎäùçŸ?yò$ <à –±BL=¦_¿~¤lÇäÌw8ÌÃ>üðCF¿å–[Š)rÿý÷Ó×·2h ׄ}ûºÚ]Š¢!£z! „€éY|E~Ê?ýô8¦)çÓ‘;¨…ð @¸-OÝy®ÊªU«6Œ\¸sà±½iàR³fMŒµÈ ‰&ļ´¦õ£F"¼XÖ¬Y³eËF¥ïpôåm'|04Æt¤à­äVÐ@Îùõ5’õ-„€B@ ÄR‚9SOÔ#lZæÏŸy=8|ÐDä"sÛ7ã„+_qc_ýulo5j„3û¿×^{î¾}#ÌF·Ó–$d­èd|»ç-ïpp'½1}+¹4sˆ ¾Î6* ! „€BÀ‰€,¾œhø”±™!MÞôéÓ¹GðVBÄrÍQ7—&ã˜HpA .ÈÓG=ù"-ZÄñ³±ÝÇ€7,pÏJüVî†ôå–>B@! „€B # –ဓ@T0úÂÂs¯ ØPt#hHL‚ ÒGàÂÜ5ù"HïÍ%ê—«®ºŠàN=öXÁ‚Mƒ¾¦¾…€B@! „@ºE@_‘ý•W^9sæÌÿýï¨DêÖ­‹ç€éc3NŒ3†ÌZl‚ ›/báÂ…Üòææ éyBj!„€B@! Ò4b)‘/)èFˆ}DPW¬¿l‡ Œ¶…’%KòmòW<ý!Î5ÑôuÊQY! „€B@¤ÄR"?kxEõêÕçÍ›×°aCgk›q‚Tßdõ^»v-œ¤X±bÎ6+V$X9(H®·|ùr<éOK4}rTB@! „€éù¥Dõ¬ÛµkשS'\ç­ Ž1Áä¤K—.dë›={vëÖ­QŘèIÑôuŽ¥²B@è +É£oÞ’È–8g†·Iô»œë™˜4.ÉAõ®fºB µ# ]JØ´™P‰ð1MɈgûøfœ°½L³Ê•+92cÆŒK–,áo]L½o_+Y! „€Hùüßÿý_ùòå/½ôR3Uì{ ŽÂ™TbÍüÛo¿5 ^ 傺¾\¹rø=† 'åÑ]wÝE4ßãQI0ýB… ]vÙeá½Âï~õÕWÿüç?1p6ûá‡8wÃuÓYùÍ7ßQÆëélcÊ“&M Ÿ0"¼{÷Aõ®fºB µ# –’OЛqÂ)} ч/¾øbþz-ZÔäó¶ ÂûÚf*! „@ D W¯^÷Þ{¯e)Xö¾üòˉÈR päÈ‘5j xh륗^zðÁC øñÇýõW»…f}úô!,~YŠïp«W¯~ûí·‰¼Õ€i°{÷î:ÀÓ|Û»*9ÑK¢‰¹Ò¥©±”$p}ûöåü ¢‚ïŠq¦Oò!5@ÊCàÖ[o5ÖXýá¼ôè£ÆcÓ€¼‹Ká^±ç¶æšk®ùî»ïÎí4ºH 4iÒfbf‚2ÿé§Ÿ&=ë-·Ü47H‚óoÍ{ï½Ô2õÌá…^ “Ø?þñ# ÍÄ£xñâÑHNº‰E3ºÚ!ò_J’?#´%8ßßpà Î?I>ªHy-gÈ!íÛ·‡µŽ1"®|üñÇï¹çž ^ $öÜÖCTÎí4ºHsçÎmÓ¦ áUªU«†&Ĉ¢pß}÷QIÐHbÜ›ÊGyäÝwß…~PàÀAù¹þúë$íý÷ßg÷?þ|âæclL3„:ÔÄÝþýû3%²x-X° Hõ$ã73HñcLKç7¶g×]wÝèÑ£må'Ÿ|rÛm·qÉ(Í›7¯P¡j%;Šk™Î‰ù¶Gþ0äMÆ„Œ3¿ÙlÁO_äm„€H-ˆ¥¤–'¥y¦z2gÎ\ºtiv-œƒ®X±¯P2~>÷Üs-[¶¼ûî»!0Ö9£‘çŸÞÔÿý÷¬|ìØ±kÖ¬AƒÅà²e˼Xx…Ãj8æ$¾ê𢠱¶nÝÊXÌŠcQö.HƤ„„¤7ÝtÓC=ÄLÌXÞ)Qï[4k>¾}½ëQñb¢šÔ‚ÿ¯½öZŒ¯¾üòKb¨˜iwìØ‘_̱(<û쳦{`,»PA ?4ÑêCÖxõÕWókpòäIÚx¥ñïýŽ;à‚–•6‡oØ^ýu]øI)P Ào¼aê½r¨‡EàÙ‚ó <„MK×7Ã}ýõ×&Wغuëp¿¼ùæ›iS¸páW_}•KFyçwL/×2ómO¯>úå3Þ5õë×'Yµs¾3÷EÞÙKe! Rb)©â1i’iL¶  {öìáx’2^¡+W®d+@NL´9L5ë4hЦM›^yåxB‘"E¨$¾\ž êÂéÊU«VíØ±Ã¬âÆo„Éãtn}<‚Váá;_iÙ²e㇂òùòåÃáÞ+䪫®‚? à_–ñ]ñ•…˜†"_ \ùí²ºÚ-3¨=š~!«T©‚‡'N/NQHó9õ^ä©ÔGT‡€{ª[ƒ&,RìK0~À–݇‚ØŽ³Aáo3&ìZ¦L™ÂÙ'þ*p>÷ïßÏ.€Ù²”*UŠçˆì0|ënÚð§úÍ7ßäàvÆŒ¾ca±mÛ¶Æãðjº°…btfÅ&†íg¨ìPy§„%†·2hQfv>¾}}×¥J! ~£Õ‚2UX=5fÎ舋áßõ3Ï<ÖÆÂ-ìµÌ¿n¡@Û@%F›¦WÄo´0‡pi!B0*3w!NüK¤ì;+£µˆè>Ç?êÛo¿ âõsÔÂÙŠ>a´C3Š©ZfP{ÃîèK~9ùå—:uêQ|ûÎÜho\ÈÛ.*!ŠKIEKSMÝpĈM9A‰£À§94;˜ g¨¨>Ø÷çÏŸŸ#U¬2ˆÌóùçŸ?ñÄ(^"®Ü%Ü´ÇjŠB÷w,SÏ|¬üíÛ·SF3fÌ lЫ0=ï”|+ƒbQH³óñíkçà*ȇÞˆ.Sè6>ü¶q¸ÄgŸ}FÄ-þác¶ôÀæ‘É£o´îæq] û~È* :&\šÝWçü;E©k—4UÔ,DúúðÃ<ÈÁ Í ^øÞ ZiÔ¨¿$ü”õ5õÑ´X\PÐê8EùΜ^ä½TB µ ‹¯Ôò¤4ÏTfNVaeÌ08dI(LÌÂÐip¼š;wn.1Ãg}¢ ±+wIÚJSp wÝ ËpF±í hÕª¶ææCTîúNÉ[4•o Þ¾ö–³ ŠâDCåˆñŸ~úɘN±³gkλmæI=vY\:ÅXN¢–lРÞ ›7o¦ÍáÇÙÙG¹(¬1/^ŒíÑÌðiÎA}åpž5Èrû IDAT‚"eذa¸Ã±º~ýú9»8Ëè]ù•ÀÅŽß ,͸eB @¦OŸŽfØÙÞ[iz–ƒ;DàçÅÅî|gŽ|/òÞAU#„@ÊG@,%Â3b_ˆN9âl)Á·£”Ï1grÁb"ßáœÞzBGn­Itj1kÖ,r®M:%1Ð]°Áw…í íˆÃÐËÌ -K—.Å÷#®³ ËÖ3"ö@˜  –Áú“tˆÓãý÷’o¥èZ”k¾}]m¸Eñb¢š”†ÀÃ?Œƒ:^~rõbî…‹—™$†øzQ©9UL%îg¸ŽPÉ¿µš5kò.âŠÐT ](’¡ìûïã!Íw8_98÷V‹8]ŒkçïÛîÄ?jÝ‹„Ãz©ÀëókSêÛ=¤= X b‰“9xð`ÎnræÌé’à;s_ä]u)„@ÊG Ãs}bv{wí˜òçšt3ìÐsêÐ7b è‚Ãb³pÃ1~°²u5Hàeôò ÕÂ1?Çq‘c<Œ†M—øIŽ´e¸:´mÛ6üOWP÷4\ßõíE¾ïøó÷•\εcôEX-cYÁ–…8¤ÉÄ’æ•Ãþ2Æož`BÌ( +eöÀ%h½ÞöüPà~ƒ~†(€å'1¨¯wæAÈIP½I„@ÿ÷Ç5¸¦yÝ’Ù¢‘ßoè§–’B],%4_–Ÿ̈9b›ˆE,÷Æô%”£i'ùÎ^4Âiƒ#¿ìü±iÏI9-ŒAN”‚š¡Y"Ò%ÒØÂ¢ä ùË$! ×±”%cPÁßoë$jZ¢0!(ºWGv üá7æ¾c1b±Cãˆ×Çþ€Qœ»+ß)ùV"$h +ŸBP_g› ²XJ2ªB@!rHK‘÷|àsÄÜ »7Œ² þ˜¦˜c:ŦŸ€ô(°‹…íáI€v“·Ó,Ì]8' ±\3ÜXŠÎÁ‚ä‡÷B‚oH qŽÛÙY¢gÇS“q™?kÉ}{tÏž=ÙÝšÆ$‚ϰ ,Ž6lˆg§1&f’´Ázq‹KtýÎ9›2ѨXVX)æ à`ê)¢†¾ÈlÚ´©·¯j¼€¹·Òââ-¦ñ$ñ¶²Æw,úzÅz ’ï”|+4sžA}mTB@! Ò'òK |îÂ?döìÙèRœ ­0;†œM‚(®FSÀ<ÆÚÐc$!ÁH×7ï„ÏW~Ä^¾ 8“ve½ð¦× [¼ˆÑi’ÑŽAZt´FxTIÆÎÖY˜4iL†•”í­è3`Ø.*! „€B@/b)^LÎÔàÑñÖ[oáÝHD´ &8÷ -ä¬ n,±qI§­¾ŒhÐ]¥ ¢¸™;1¿˜¼øwâŒèÓÿó•±—o“õ‚„Äx(¢!Ù…I¯†„©ºŽÉ‘Àdh†1Ûc=Æ‘9i:˜¹™ª˜×^{Í(Uœ¡ŸìÌQ‘È= ®œ|ðã$wÑ8±^$´ŠA]Š#Û]! „€B@!±”0ˆØÁ“£—„\lÁûöí‹õ»y¬¡ðW¹çž{°¼¢žþð ØäEd†p%XówdòNüdܸq·à…ïÌ+?b/ß&I…3ë…k ç¥7£ø!¦ ^’Æw³:g_ʃƒ1èQìð¨P½Û°pBãCä~ýõWWG] ! „€B@(_J Ø|í»s‚À²¡'þƒ>H”XÄ ¼¥§M›†³ ü Âf‚Nþïÿ#Â=Alaw®B‹-¼òU#„€B@! @@,%ð5À!ž¬܆ŸÀÈ…³,çx´lýQàÑAÈ/œÑi†:eÔ¨Q˜~™xYXs½øâ‹HÀfŒ»8‡wÂÉR|åÓ2¼WØçŸž¬&=°Éz ÀIÅgz fBcÒt äaip*,µ7šð~±….PŸþ™ú–-[•±È$˱Ÿ‹îg}Ìä¼…h†S!‚Á Cîê–B@!ÔÞ„dGI4Šò¥Äë›/…zvظƒ£¦p9 “0Ĥþ%)w - zBÞ¼¶e|„ô2Ý}x³^Pƒ–æ`µ…h2ZØÆQX‘o–(»§fñÈ—’VüK08'ÿ¸Q¤mzôbSª¥í•juB@$~.‘¥(_Jq쎔SûaÛŠÂe4I!Ð~ØŽ®B|š…ô2B|¸Ø-½5vÑLÞ6޲ÀŠøDÙXÍ’ÂÐÁ¢r- ÖB@! „@"" _‰¦D <3#GŽŒÐ.a·ñ¤²zõêE${™Š &!O*š°¦*„€H«ðÇ˧4­.VëJ9ˆ¥¤œg¡™¤q0$I(±ˆŠæ~-QÖ—a²­¨Áƒÿç?ÿ±—©« ¢×çÅÛeœÓLGêLäñ¸ÊQ{! Òxâ§jW )R¤fÛ¶Æp:åO˜½TA$òžOœ5Š8 ΂#\ÁšI­S­Z5 ä>þøcjðqjß¾=3©÷­$&ÛÀ׬Yƒ؈±ã¢€ñÚFŒA>M¿=O=õÁåzöìÉÝ—^z ™d#Ñ ’ˆ´žŒe\ªŒ(¹€¸Å%Á!‚æ`æœlßÌŠØ É6\j4ÂoÊ‚©}-š¿I@»víÚ¶mËã¼Jn7²BsØ‘ÔãJ¾ˆéR¢JÍ„@B@…ž›‚([qƒ Ú´iÓ+¯¼òÐCqŽe꽕$Ð$šg]=zôà/JïÞ½a#4&ð4Î'ä¨!Æ4Eá$„†¥QÜ%N4Íl@÷•+W>òÈ#„§ûôÓOß}÷]3màHân“u‡[As0õÉümKæASép¼äœ%¡“KYÇ^äòË/'R9OÙ, ’ÌŽ„ÈæeÊ”ùé§Ÿà´øàÝyçæ.Ñ xå•WŸM ÌgÖ¬Y©M[_Ú™1cÆ~øÁÜÅùÞ{ï¥ìýÅ0 øaáãСC\ÒëöÛo7õÞ_ S¯o!@¤K9 a¾¥º Ö¯_OÎL{I…‰ÎôéÓ;uêDLg~ôIʉ&ô;³>ÿü؃ßÊ9sæÐ’ƒ®J•*Õ«WoôèÑ6làí3eʄ󉉔E!î3J×dèNÀ:º“‚“øÑ(vø»ò裚ÙݾöÚkdüœ9s¦Iê;—L]¦@ » Ôbp;=RТX#µÑÝwß}ß}÷QÏËCJVraÈÁ[ñÞ{ïaÈëã%Û/'oaBÐ×µnÝšDT/Z´¨¨‚i~ùùAøàƒ7nÌaó·Ãû‹aËß2s@vøðaN¸¨ç…÷öWA$±”3è ýw£„ਾBÀ Dw'Nœˆƒ+š¡áQ0ðG +òêôéÓçóÏ?'¹ ¶:¾•äߤ/:“1cÆP`ãh}IãÌÍLÌø'@¸D¾ÙB{òçÏO ßP †8™6Þ‰QŸüY|Å slö† rë­·Þxã¶cÅŠ¡(PSÒ4ÙJÔq4.]º4æ‚Pêá!¼f¨V8+…µRÃv„ ¶¤‚ÛŽ*!f€¥p®Anþ¸ Må¯KóýÅZ²ï/FPcÕ 8! –r.R‹œ½PI$(7Ø b‘e(êޱ1ú‚¥0öWü‘ÀY…?¨DÈê[iú¶jÕŠtœáSãdËÛÀ46æf`hQrçÎímik|'fï&OA%8c#Ç{‚iŸé‹;ç£Ï=÷ö]Nif;B-˜»ZØËm·ÝÆ%߯IÉÙQe! Ò %K–Ä[C_ÒRcʺ‚~1‚–¬_Œ dTŸpÄRŽ¡$Ì;÷È‘#ݺuCSašâÈÎÙ6T7¬nªW¯Þ¦M›ñãÇc¯E4-ÞJ¶˜XàL˜0}Ö;Øñ×Å›ÏUÌäÉ“—.]ÊæÒ™»ŽÄÖ×̽ø#Ä‘9'èή5øÎÁÕ&©/EQâð€0ÖÂÆ ¼KœŒBZ~þùg¢TÙ±D‘Œ;ÊÎ;!±ÐTÛìàÁƒY³fŶÐÖ¨ „@Ú@/”ýë_ ¨\¹2+ ùÅàD½=§]è]±5¾¿i­âœ# ïùsþ4´»mœ-EaÁP4ÔŸ8qâÃ?Äañ–[nÁ߯wîúV’Ç“ðM°<hÖ…­¤»-Z@]°ûþûïwùÓBÄIv¨¨bp]àð ƒ.gWÙw®6Iz)Š’xyÜo¿ý¶1Çô C/ôuo¼ñ>'°åpÉ… B­‡6 76‘0[Ÿ:ujxGÝB 5"À¶$6„}ø/8ø5 ‡µ)õýÅH8hÎ) Ïõ‰óC~û8¹d›¾ø¥Èâ+ÙOÃu}{Q<Þ%p¢âDÆ·’s‚•3gNgcW™—>ã²ä1möîÝ‹Æ&D‹â4g›sR68Ÿ“¡Sé Dh@ù䙢U‹¸ X44;Cß·(bw5H¥ôè;$ïRéƒKôi‡übð7Èõ׊Ñõ‹‘è å äç‚Iò‹±{÷îÙö\ƒkš×-yÆ–$¤%·ú ýÔþFêûp¸tW$p/mð­d6Þ?Þ)†8ÓÃ^¼íƒj‚æÔ^õ)( s#CŽI’qž,@"6S! Ò$!¿¾ƒô‹‘&_ƒs¾(±”€ãL0ùçjþÅFh¼·IeÀôlŠƒämàTŒÄ $¤›èÞ½;ªZ¢µ ͳ‰ jå˜iI·™!h†½Eú®\¹’¤, ÝÒ»ïÆ†bãC†ò-[¶Ýœ² ªåX¨PH÷Ƈ¾&º(>ƒ Ú´iÑiz衈ÆfŒ>gÎŒÍLÊbã’Ul ’©^ˆ¨'~.Ä0¸0+$ ‡Ê(gnĺ¾!$·7)^²PŽŠ%/ä? ·5)ÄRví=VªpŽLõ»PÔ¥B@! R"Ú´>6Ód¯Y³æºuëP ØìôeÊ”)^¼ø¢E‹èvßz4ð4„ïlРq4è *UªT¯^=Ò«mذÁ;êˆN:¡±AsbïÒ—öhK°7{ì±Çˆ§+@8 4dPºùæ›ÿùÏ,XÐt‰f,Ô;äDOBN@>0 ò ÒMód8‚°._…˜)÷£oß¾O=õyß $ýúõëÒ¥ ·˜›ià…~‚vùÍš5cEqš¹ktçåùçÇš­Å.ÍÝ{Žýß´ßíwñ9Ï¡;Y¹ñÀÎ=Çœ¢TB@! „€H9Èâ+ìY@Ð|þùçC† a_Nöîܹs6 7wcfÁg`#$GŸ@nïºuëÂ=0mB4ÉÑŒÓ9–]èU|#ß XmLã—à’m8Œ:—0¤ˆäâ.9ÑŒ…ÆÃ…Ð`ð¨À‚à - +% W¾k8̺L‚BX TiÇr…¿>°)/D .ä> ù«Õ™ÿG3sW{¹pÍÞ¹Ëwcè…+<•GŽÜ²ëhÝ*cÖ•+G&§RåüóÏË›û‚õ[Ÿˆ9•9S,3Ÿ·rw•R¹ò_t•¦‚B@! „@ÊA@º”Ï‚ý79˜›4iÂæ{éÒ¥d_;v,›{8 JÛ™”a40&UdC£†¾_ÿõ©Q£†mï* |`ßÂÄÔcF冹„Á Hy󿥽ßÌ×Ó âXdGÕË¢%x­Ñéý÷ß¿ûî»qz!£¹‘ïo_ˆŒÇŽYÑÁÓŸ(g2Ekö¶o^ú’Ò¹¯©Sˆÿ(pI%]ˆG\²Pvû—òÅsæÌžiÞÊ=!“ÿ´§ äW# ! „€B …# ]JàÂ)&¨ELL [Iè z*é5kVÜåÙsc4U@G¡Žé“'OF‹‚mj×®¦e„ ¨DŒ ;õbÅŠùŽs¸ÿþûñ1w¡8²£–Ák…9 p¨_¿>* |Öñ¡‡o jþüùÄìÊ—/_4cáBÃT»uëft tÁþjÞ¼yð‚ ã¾N›6m ^d%÷aô•ÆÌŽ+ ‹ƒ&õKœPrÍ¡Jé\#¿Ý€z¤qíÜš4wÛ¦í‡q©w53—x¤´mVrì÷›Y½‡d)¿ï»„`£å¢(´0…[ÌpŠB¶þñ£(F¾‹¢P‰JÄ—¢$d,FIDŠÂL¼¡YÂK‡ÊPB<»”6 A‰áRé‡pÌ73yoŸøtNë} Xj…ǃ‰ÚŒ)‰ ‡ž-63Ìyç…4&R\ê¢(¾_iýÐú„€B@¤ØuDéZ‚ ™sÍb)N4Tç ‚1Ãí³Ï>à ]ÌT ë l‚%`5GL…ˆ³ŒSãˆÒÎaQ”s¾†B@!(x}¿£+¿”hPR!NøÑæ³bÅ §DÜHÓ|øðaâA£t²ñ É°É?lõÞÀFm&à5Þ,ª&œ´Sˆ³§ÆÎŽ)ª,Š’¢‡&#„€B 9.%9ÑÖXé}ûö=óÌ3¢N¿ýöÛºÿþ˜~•/_Þ†hѢŪU«ž8ý¹á†ˆ@€U±­éˆþôÙgŸ ÊÀÕ‰¾±FŠ*ˆ¢¤¨Ç¡É! „€HfÄR’p —N0¡·\‹·• ½¼ñ ‰40|øpÔ)û¢oÕªU‡ æŠÚl…ЀÔ7vˆˆmK„€B@!ÒKIiODóI¿šwý.gw(·MPMœ Q½B@! ’±”€ã»LpX²Ø :ÄñvRËãtRYóc'N]ù¬oÕÑã'³fÉåöQžºuëÆf½uëÖŒH4'šoÙ²…-;̧V­ZP¯Xzy+‹Ž›6mâ»F_}õÁ ˜Ì_ãŸý?*˜Œa)”-K4hСC‡^yå(Y¾|ùÎvð+1 Ú!† hapñä!Þ.†dÓ§O:y¡£’¸ºPÁ‡zhݺusæÌ)P •Ñ£ „¤\±œÓ~ÙyQ®Xó=û7¬‘?WŽ0ó­Sþ9öûÍ‡Žž\¿åáÊ(ÅoIDAT>Iå]ו8ߣDÚµ÷X©Â92e<ûÔ(â§CϩۨB@! Ò'^~ì_¿ºg××óæÍk`K |=àäÿîիׂ P<ùä“F™i¡ëâÅ‹/Z´ˆ2û{välÍIsædçÎ 4`à ÙhÞ¼y¥J•êÕ«‡VaÆ eÊ”±ãùÊŸ;w.:–ÆÂãlL>rb=M›6Í+vóæÍÞJ3LÕÄÅ_}ú€yɃîíî¬Á¬‹Q¨Ò@áXr,‡øëƒùœº… rßIÞLóý%ï¼…köÎ]¾C/œÚ©0”}—ékÑš½í›—ž¶`GÙ¢9¹…¤aÍ£'n4,¥xìT¢KÁ/¥d¡ØrÄ>ô®–å‹çÌ™=Ó¼•{®¸ôŒò1¢$jE±Z”$Bb…€B@!ÌXŠ’={öÝ»Îú¥0 ±”Àgó7¦JxtÄÄÄàG@?@%²fÍŠ»<{ë#GŽàí.ÏxÐ'OžŒ0ÚÔ®]MË„ 0£B7ÏaG^¬X1;ž¯|t5lÓQÈøò ºì²Ël— ±ÇrJp–10c x·°¿‚h¡)Â_ë2œgàc0^gÇx”ˆ^.èp\1Øê@jp¦Y4+ªR:×Èo7 èh\;Ö•eÒÜm›¶Æ¥>š¹¡cÙ8†–¿ï8|uµ@—‰Ypê Œ*Ã̲ù‰ ë¯Þîÿ£_»úê«-Eáöµ×^ûóÏ?Sß²eË?ü°ÿþ,?~\nÜãx¯Ž/tûÞ{ï¥Mßÿû_“|=h™Î1‰8|Ié\Ù²f2¶\[–=r4&{Ö¿½ÒΨĶoެ™ž¼³¢½ / “yú®ŠÄœ<ùgîèR@† LÈ]_ Èú¨ø ÇÅÅ·^•B@! „€HÑì1‚v)»¶oݾy-åç%k E¡ÌN튉Y•á¹>ï29ŽiƒD$dê©¥ïö£ðr6vÿÎ9;kÇŽ(7Œ!–½…O¹ñHÁÔŠ»†–Ø»®qºØG¢1pÕs$Ÿ[Lµƒ“?¸ºûŠõ­tuŒÓ%3DYgˆS¯Æ^èÐÛ`ß…·ý’%KQk‚§Y ‰¾"+9 xÏÌê± Ê¡}½çm_óÖ(Xl¥ B@! „€Hù@E0Õá„ÚÐW™<=‡}{ðl6:é9PPèXÎõÚûÈ Eá³([TÙâÉG”‹y…ûŠõ­ôö¾†ò‰¾}Ä–^èÐa؆‹?t„~v)m}Eg˜¸ ’ôŸÂa³|wÎ’&„€B@¤CÀø{CQ0øÇÑËgùá‡fèÑsöd0_“n©B2,ÅW—’*&ŸÚ'‰¶„—¢‚÷Žq¦Oí+²óOH$b+$ˆ„Dä±V‚ B@! „€H]dªóÈÿêkðýÍ%6IEND®B`‚PK¯9A content.xmlí]Ýnã8–¾ß§ <ØA÷"–õo)ÓÉ ¿Ý5HUIjz/(Ðm«#‹QŽã¾šwØÛÝ—›'ÙCR’eK¶¥ÄNªj]@%1?žóñ’úëó$DO$aN:š¢v‰<êÑè¤óùáºëtþzúo?Ñá0ðȱO½é„Di×£Q ¿ԎرÌ=éL“è˜b°ãO;N½c“(¯u\.},ú’),‡«‹ÂåÚ)yN›Væe—êâAóžEárm?Á³¦•yYPj¹ú6­üÌÂî‚Ö'1Nƒ)žÃ z<éŒÓ4>îõf³™23šŒzšëº=‘[ìåâiŠR¾×#!ᱞ¦h½¼ì„¤¸©|¼lY¤h:¤±jpŠ+³ÊžFñ4Z£oŒ“ÆØ…—§×ð›O¯á—ëNp:^3'Nï#dŠoXH&Mûâe—Tå%AÜx˜²t¹>¥´•W Tˆ««ªÙ“ŸK¥g‹Ï’ %I©¸·±¸‡C¯Ð8Ô) Êi=(Ñ%O¦ð¹"Øš zOf…™¿¶éÿüxsïÉ/ Û wƒˆ¥8Zh&á“°v¤V/!1MÒB1ÃæfK/d§“pýrç¹yÑQâûµEA£K^÷) ³?-ÙÃÍxp{¢PÜ€„ù*)ÊfÃ!Ï1I>r t' ”à ñq©ö²ML&Ï͚〠þpµÅ•Åá1f¤u:x¸ëñ¼.w `ô²žJ®Pïœæ~O®Ö+†àÿºCì‘®O¼þ$íW‘Œäg.÷Içék†*/2 ÂyžÓém®3õ£{1ô9 À;“š¶þŒcÊþRSVftP©‹8H=0OO8 Ä\n s­ü¯húgs`½¦ñ,k©u™×‘v%î£ô_79uýcŸ&‘ð•'Od”€ß{ù^",îWºX }"3t—5UÊ•r5ˆÜ¹hgP,¬(O_ß5›Œ½¦ëKò;þûT¬Áµ)•i  6g)™l“©·Î8eéxš‚VÓÀëŠv «%~.àV+úʤŽq‚G ŽÇy$ð€øÐ•µ®)åŽ?o¶¨ÒÁ<“$ C*8x‡Á¬,øº¼Áß§, †ó.– MÎhneˆC&ÇVuƒÜúKä¾/îãÄ/$–„.©}Åj5—ÌØ‰dMtš)²™^Û˜w&ÒYð¤kNœ.Òf$ÁÙhè/•îÏÁQ^¥”)kåÙõu9½ÉóúÚEQ¿ù´˜ßÇ´4°õ} xC;€Þ2pÄ2X­Í/€“•h®IûûÔd”ñ†í‹º¬ß¨Ê6¶­ëeõ¯oà¥K»ÿ}ÏO‹™¨WusM:_¡&yÍABðcw@`ÏG¸P£=ÛN÷UzÈŠ„[.p£}=`k® MÝ2ôoR/âËÛ•a|“Êx _« ó›TÆëxÿZeXߤ2^Ƕ¿úxkíuG–™¥8I›é¸é¸^D¸!˜f~ÑÕ/_Lú¡âYx'k#ï¾+z¨ÿòî@Cä¢"1µ‹qÕ âgY‚‚eUª²iüAù‘C7¦ì¤ã‘HœnUr.!¦"ƾë¥îK/zƒ è†x9³ÀçAUÅtùBå#Ý${‹‘é»X¦GгØœª7,o6cŸÃyÛ¡˜{ʛόµÏáèo:{¯Cyó™éïs8†¢¾ñpœýÇRßlî>‡c¾ùì,|÷3žMO)» ™Ðß™Lä â$í>aAº4ã@1ã@1ã@1ã@1¾uŠa|}C·ã@1ã@1ã@1ã[§æWH1úŠq Šq Šq Šñ­S ëpëâ@&dâ@&dâ@&dâ@&¶‰ÞÚ—NeêÏ‹¼ºbÊH—ÑaÚå¯sèŠ7<ðǯ’)É #ÿ˜’hñv«j¢lÉXây—NÓ0ˆH7Ó¨šV²’a8eiÒˆóU=äoâz]+ð竹”¯›]L]­Öâ*M»5:§g’1AûHR€#@èyŽîSws˜EgMÆZ1‹Ôçž>Œ€$€ƒ¿ á4%“8…ŠÈ3 /ˆP "g쥈÷É/¾'™HòiLJ¦ kÈHÇ”‘oA–:B4‚0›£žótД„A"–"è%Bè@'º»• þ6Æ©ø,‡îSX=P0HQB<šøLd&\£ dfüMÈÐ Od$y"‰²¢¡qøãÌ"ueaŸcxRô!xN=ŽO–µ:n¤w¾ù;0ÿ¤Ã?h}×2ûªª»uô|åZu󱡷sú3åcþ)·*QµÔ4ù·WWw_~ùõãUoD9¡ü)‘DÌ0GÚ,HÇ[[ü}ÂËÎoâ/µF#ô[ùtÆDÃÍšYmá&ˆ¦Ï½ÏQð¼˜Á^­Vjéž„ü¯þÏÇÜ-`î_ÿü_ÞGKš²£Žîø»’ÞcÞúj§\-؇ÿrŒa5øˆ? oU×Ôûó(ý zÕúá3@ýXND?ó¶Ê*Ý0¶E†qñM§xl`˜@‚|‚ \@<û-RågñÜËá#oL“n:ÉòÃO£ãÌÃi†b6÷€†¡AÔÀK§ a=M-ý3¾üãÊÕݳþù™ª)1X嬪”ŒüYû<ùšܪŸ' œ‚Ý:éÐè†bù¸ÄB+§+¶¦²îuÕt ÛÔÔÜàð‡Aç¹÷O »«áï»9 ›ƒ²+xA£a0BWòEæYâ/·èNZitI†x¦ ÂkQioE¥^ƒJ£*-½‚JSqL«ŠJ·-( Í¿5íüÒ2´KóúòíA©9¶­º}Õê¿(?DÂâÕâe/¿?F÷Âu#^ ÀõßH<«Åa–¹ Ñô€ÒÇ N»Òq•×—/—>ÿñøå‹nhºûE³û®«š¶ar,8óôJC¬rãf6£·Nn1øZ>Ìà'‚à#ð:w+öì›Í±ßWC¯ƒ¾^cµ¶Ø×®-ùÛÐÍ+õB³]uØ—j[ÞÄô69ÃÆ§™k=}ÉÚ.;{ÉYaA!ñ C’£Â¡ßÐÍ‹"K¦Þ•9¯µ›ýÙÍ‚'71œ: ÇYE¥V zúmÁ£_ºxTõ̺pΜëw0œvßÐmC×ÞÀn~‚Ä#ØÒ—þMÏa9Þ‘ÊVIoÏE?„9ÂIÓXnÇ$t¥‡ÿD£® ¸™ãgeÏ/÷OÒª¿ºæVèš5ÐÕ ÷™‡05UâŸùk>}áýÈVû5”@5jí´F¶›ýqy~vî^¸çWî;ðT­oZ–ë:oí}¿FU´ehÌL+à[ÔÁ4MŸAÄÓ>ßÝ [µH"AøyáÔ'PNA"´1 Âppî•3Šd®ìzý\åþ=à_–A˜Ø¢"nNk|ÇÕ’¿ºç[Ó’a΂Ù Ÿ&ï„£6ÑU1mwG®âг¨U™­aäØŒ\àÒ¶£éçïbÆŠ'7lÅïšÃƒ¥—š®;E11PšÓi‚ ñÃÅÅiGu_@ªÑùÂé‡8ò˜ljŽdøaI2"1?òL/`ä͈d\™ {ŒÞu³FŸ¹„ü;É£€/®Æ­ªìfõ`¥Æ80©ªã˜u Po³…‡ÌW XSUaøC>E借AU}Ån¿,ÁuB'òЀÒ pÁRaÅ_ùAô¼¹_ á¡Nôüçê0TSàÇŒ•ħ¡ á[þi,:¢±8uÚýPJAbÁ"ŸøÛŠ•Lñà(§`ŸH:ƒ½`–¼s!.råÝ“,øˆ•,fDpR²™»Ó@û=¤Öä4ƒB¨ÏÒ&R³V÷¦bô+º¯82qÙ°Z­ÃÊÀ½Dt䬯ë¦kX{­¡_eÀ‹‡scOcXc"çñ#ަ8Ì,—?q°Ÿm>§_ ·< äßňÄ÷.ÐO`'ÂÏð}XϳÝãþ,ë~)ºR‡cʄǦvn QéPšoù`;é–kaIGuT®°Ý/¸|¢> ÿäÎB™‹ã}ŠùK©æj'5ÛÉŠU·äÆmLÅ\ð]¾äVÖ›£XZ%dã*º^sŠc·]nÚµ]ØÞX}Ý|Éæ¦Ýt×É×\9ÐKÿ_ )qØ#D¥7“b&Àgg[”‚c(,ÚÒ¹°7¬¹è²ï‹ý?ïÃ¥Ó»ž< ì‰u+ÂmÛG’7&j–ÛZ4Rskom7*Œƒ‚L‰AóôGRD·]ÅxÍ:àÐGCðÆ\w%¢^ì¸A݃/T»À,*¡ˆ%úZ\*â—‚6‰ÐЕl¹ÐvõsüJWkP–Û°Ë`°Nà* sä%LA+›*ÑJqI̓ÿ¼~f‚ù]4}¼€{Í·ÏxhÉ—‡Úˆ.¿ŸI~{$*ˆ×˜ùB‰ Lá*† ¬Ò 6q ~T¥Õ}×îœNóÀ€«¨¶µêOmEujâ­¯êhŽŒ.iªiXÚÕ¹mêïØŠ³‘DŠÄÎQ†-þ–Z¹æR˜´y„\£ÂüHè`žÞ4£Y)ƒÖxZ¾­‡²°õÏ%[ãsxT¾™w-®L΄püæL`??Ϋüë’阦Ñ×-£Îã­<ŽVÝ€VÍwb¨Ê=­½±´⦅N&8™£;ññbÏ+—4,}–ååaãÚ²ŠÂûº£¹¦ù¢ãåöóÑÞ\¸-∦¢F•kvM8ºu4Úв›$׺ë\8—æ¢ÑbÓº:ýÒ„óÆdˆl n ³ƒ%½ÑÛîó¤Jm>5`´m­jÉ-»fgÔ:À«^Ës*MÓ®Ý ûêÂì¿Ç5 ÕÒÅÅ­º•b¶Z)ú›Y®rOòyMȯü.… ¬}ôy>Ó·[°4Ôæ±Õ1ŽF;¹+½Ôá ¥1º Ó¨4í-¾`õ›¯/GéW}–b«u—èZ3%÷:cJîùõÙEÿJ5¾ÏóÏ©ø‹Gf‚™!¾~Ä(É4B|Ó²àöâ!üˆ?s2ÆqL" h÷‚ —7ü©"¢ ’æ­¶šÎa¾ÿJg”?ýÂŽ[QϪ9{溺eªuæÌjeÎÀÕÞÀïá:Þɲ†f/Ò$„e|·÷Õ{.žŸû)¶’â¶?WX¥t°Ëc‹I…IˈóÂug—c„­C`”‚pQ@å‘Î¶ŠœBûÜ8/Í{ÁÑg¾ã )}úð(îÍör¯³_výjs³¯X•`K1êî¿·¾ÇbXW™ý²¯-õêÚ¹zŸ{,[uüÛ8ɲCÕ"6sû7ñ5écq€&­0_ðØ?¦`2[² ­£ìÈë¹TªÍß0u—ZÜ=1Û­FWô~¿k}²¥žÉЀj›Ž~~¦»ú^ïýöJÏÄ.>ÉÇeóO>õ¦üÂk—ïÏà÷éÿPKFsÃ&èÉ‘PK¯9A styles.xmlíZ[sܶ~ï¯Øa¦}ã’\I•´µ”é´MšÛÍÄr^3‰ÝEBÜ‹}n$H‚+ZR¢>Ô/·sΠß}{¬ÊÅsA½‹²e-0ÍYAèö.úüð]|}{ÿ§wl³!9^,o*Le,ä©Äb›©Xâ]ÔpºfH±¦¨Âb-ó5«1u›Ö>z­E™Ílîv öwK|”s7+lo/zœ/YƒýÝG‡¹›lêoß°¹›¢Œ7,ÎYU#IZKB»‹vRÖë$9ËÃÅ’ñm’ÝÞÞ&šÚ*œ·¸ºá¥Fy‚K¬„‰$[f‰ÃVX¢¹ú)¬¯mªGÌg›I4òªØogGÄ~;aš|‡øìØÐà¾{/Šùî½(ü½’» ŸÜ$€¨ÿúð¾‹^Í•¥°=SåœÔ³iÐþ~ÆX«ªÚ`T«»JÓËÄüöЇ³ð'sžŸ…ç¨Ì[‹³*d4Àe b¼WaêÐ\z’óUÂq͸lÙÌ/P`U›^;Y•Ó饨ºåE„‚: ¤z¼'øðM¯þœ·ÿm¢AmH q!C2~J-V%’ØVY¯²¯¢{WÆ7 Jøå8.p^Šûw&ýÚå…ù­Œt= «P- Ϥ"åÉQ¢äüþ÷MN ´ø„¨X|¦z ðú ª™ø[kÑÂQ™Cví'Ú4O(`ÕœÔÿ¬¿Ç`z‚Væ–ÔãnhñSÌ ¤ñô䇜’ Æ©.õwÑG¼åP¶ÿýž£9Tþ¾Ú=(‹ø°øÉ² GåˆÈWWíï+ ¹õiÑâ@„x‰èâ_ÑÏÎÁI‹x˜Ö'!qõ”NÉTq²ëfätºxƒšÒ¢Ž³ÕqËQ½#yä°öw\s(¯\p憭°³ZêòHY¬~G 5§­ÅBñƒ`e|¼‹ÒåE^‰§QÂÃÌ…cQ£&¾xÇ8ùgB¥‚®n΂÷J¿| …&5—ëàiíUÂ9Dîb3CKÞxÑQ#Ž´å|»’‚Ǩ‘L‰€!fŠÊz×&µÖâ‘cã© ÒQÔŒ T« ÀßE%åc/<-°jÌêªáŸå.Ú RàÖ³Ð!X-TüL«Ý•ޣÓ4ƒ¨rªž³’qk (zQ/ i¶ª¥^+Ý6h K˜ê…œ5Trˆ†ÏŸz'Qûb9u»­m,Gûr<:’eå(”Qyòˆ°Ð>‡Åaó̶x¨Bp >‚Š–ªŠÔ­=2)Õõzx¶Òìãþ£Â«Œ/9 U¾ð!S>û¼ËËÕÅù3·A¬‡ª‡–.ŠgÆ‹¡E÷²+J£šÚŸˆ'jiA[ºÎ²èJ£bòµŽUöÏÂql‹ì9ÎÄÍ,ß» ©;p‰÷ªÐeçbcn‚g#ŸeWîÖ˜lw¬,¦½¤·xD³Ë‘Ã{;÷Lìnzÿlÿ½‡ä9Ž9“t¥b9ӰÖÍ×ü;Æôß«GД£óÕB?Ý›‡e}%mï×nîÝ9_† NE&ˆ¹Þ,¯o¯º!PžjP7ýá É“»³ëåÕíp7WÑáYÕSæ—•~ðß|M¥øÒ×Ü?Öa£òÞÕð©òþu>ž,ùƒ2‘ÚyÚ¬©p¯€‹3ɧëD:¨æÆ$–ØN¨3¥$, ¥[³=üÜ•¯è_¢ù½bBÎíÏ/¬J “ªŸNãpWt¸EÔÎÓª9%Ób>ê3ÙÆkXˆ° ¹ÀæŠúAUŠuµ7ßñBbjáCz"Î$нª~“Ÿ›´w o ¸y}1I#XIŠ Èê‹—ººO ¬¤î‚<ß³ÿ¢ÅÇZØ3ýú½y%9iÆk¢xDóã±)ý~êí·ë£çÕ¿Oîßš›y½ðïÔî¹.†îZ³zDàj¦%w÷"hvÚÞ5¦¶¼ Oã&¸±þc(ѨG= 7`0ûA-ˆÕ§KCZkL5°Ø­=•FS¼gJ]½‰Ô‹7‘zù&R¯ÞDê_ßDêõ›H½y©·o"5K_[l2.cVÕ#´ º!Û†ë·ÀEKˆí´±C‚frÈô£¡?;Mþ!2ËÂ|íÙ£²Áj 2‹NŒˆ»»„~qö÷P7GÄŠŸ{žlúâ¹£:¬WH@‰•Ì>ò+NêtUŽèŽÒyr˜4ÛôÑ­wÍ ·L:s–x#-Мëÿê¤Ê—÷ÉQsë¾4ª!xBw„©™áÃÏzZ±÷ç§®OæcHI¶TûÐ1üµ’lNp£ [`y`¼pÖš˜¨´û`N‚lè«_WY ôÐ;à­2{Ñuë;û^Þ^NºÆŠÏË&0²ÁÎ8Ü$‰ôî…À«OÔ÷lj»ã`Y9{´È­†SŸxßMFÆ:¶‡S[÷ÕÜvïÖ6é2Ín:!îSüˆÁ¯0Yš0h£ò,ñ'pND… Í&ÆÍ:Œw­³º÷*ÎOS/PÂnw‡Ýa¤>Xè‰o·8ZÒà|à[rä¯4è¯4®tú÷•jF¬þŸ/Ïÿí0 2êÀ¸â[‚íý>à5ųÆ|×èg›cíZg×%TsqTÝug³8\â\jà¦×pÕb¢ûk;õxðûÄã ¿söQfÉ­ ²ªýéø)# 惠 V~ó˜8 ÿWóûÿPKe¬½ ª.PK¯9A settings.xmlÍZßsâ8 ~¿¿¢ÃëM—À¶{ ³íMH ¥ áWË›IÉÖ±s¶Ó@ÿú“t»-ìöÏ\Ê8’%Kú>)|û{Ó“'2âì¢PúdN€ù<ˆØü¢0¸§_ _þñÏf‘Õ€ûi LJP —È|œÉêêöE!¬Ê‰Œd•‘dUùUžÛá< ¨·ñr¡*I-²ä©r8Mcö6­%½ÆùãÑòú½_\â+.¶ï½´¯Ã›²|+ðÂ[ßrñu}Ùu{]²¶/@€ü8¤®.¤‚(èÿ‚­],b¸ON ”ú\|ÿÑE;¹›1®rÛ·ÄÞa¡Ëï’9ÔЈ¹à){ ÇrÓª‹®‚ÓÞùÑ|u0­Ì”†zœ¨¥v™±óî .ÌXSòsÐø¥žu—$ \Áã>¨ô-ðÍ [Å _Îj#bY¸œg×­°×.B¿›ùضB0¸T¸t™&  Öß²¶C4$Q »Ä –ƒ0wÑÝl†ilÂQM†HÕ¸@P]ǺɜExCh@ÀŽtäIÜ]º~ÿƤ"ûg:¨?û<þ»9Í:eñ$1c%È=ß`'hP>%ôjýþ ­{4w©Ò ÞBŠH" 4™EÚ®Ñê Üs(—&²h;uß2Æb¸÷Hí¥È¡øD5štôw?&”"[”]ÀPc iâ—/†¦9}ŸïIWãzÍr œ®ŽÊd¯éz¾ÿ5èÛª¯P«©hÖÝú¯ZœÏÜ%‹Ý‡þÎy‹C x¢MTXÃèÓ”!ÏACõÃNºDf'4ˆßãšL­"s÷«¶ã¼o9‹ï~JTÜõ#«ËPKz|ù,Ʀ%PK¯9AX N4jjmeta.xml LibreOffice/3.5$Linux_X86_64 LibreOffice_project/350m1$Build-2Apache JMeter proxy Step-by-steppeter lin2005-06-12T17:58:092012-09-25T22:56:36en-US69PT8H18M48S* *Apache JMeter proxy Step-by-stepApache JMeterPK¯9A manifest.rdfÍ“Ánƒ0 †ïyäÛ&Ú¸®¯^Úój‹•¯j~ š*!–eI—‡Ü^äeYЬE‘xE‚«%yL,Ƽ‰ ­FåÌD~ûªåÌTs¤uИz÷ =‹itP90;¥¿‡v 0‰˜´ Ó- è{£´ÈÓBŒš¤€®_ƒõÎ š‹€!®8~c»+Ñô¾[Pó¨-ý‘ÇbV$>KGç³øÎ-<üj#–<^¸Æ?E¼ÈËm„—;Þ;qO'ï#wjùj¢OPKŠñ²ÿƒPK¯9A'Configurations2/accelerator/current.xmlPKPK¯9AConfigurations2/images/Bitmaps/PK¯9AConfigurations2/popupmenu/PK¯9AConfigurations2/menubar/PK¯9AConfigurations2/floater/PK¯9AConfigurations2/statusbar/PK¯9AConfigurations2/progressbar/PK¯9AConfigurations2/toolbar/PK¯9AConfigurations2/toolpanel/PK¯9AMETA-INF/manifest.xml½—ÍŽ›0€ïû×*`0%YÁç¶àuœÄ„Íjóö%ÝMÕ¦JÔÔ\ü7žoF3 «ç÷¦^¼ÉÞ¨V¯=èo!µh·Jï×Þ¶L½çÍÓªáZí¤±ÙÇd1ÞÓæs¹ö†^g-7Êdš7ÒdVdm'õ¶C#µÍ~•ÏΤÏÕ…ÈÛ<-¾x;UËåx¿?~I^vÜÖ^pMÉ×v#·Š/í±“kw]­·£Xð¦·þÙ`ÿÒNßÊwë÷ØðršWÍUmû1õ;½¿bƒjø^§ó»(5?¶ƒ] .òï^•æýñ>Äw%ìÐK@pñA¦‚å4©@øxïþŒãjFcƒŠ¥Uê Ð2BqE£Ä¦áìuư*p„œ¡Yr‚$Æ1tkÏ&PDRš–Qä R<˜@œà¢ÂYšåS¬ŽRTäˆ æÌk2OÊ"/%EEÜ¥ÙëE à,Í@4¡ó!‘0v†Fe8§YLq™ƒ$t–á!œ2¢ŒCXF¬tæu<RÀ0ËSLQ£’Ìi6¾³˜¦yêìqEáTHAEÉ“"ÿ¡ŠVÛSË2¶VWŸš™àt|—^cµ4W+­ÛÊÇ+n¤åW:ïùývwC¿5J}»›A[½Sû¡?«0(àBÈZŽË¶ÄÐ÷nìÍ O&øƒòÅ¥†|üö[°ù PKV!Vä!Q PK¯9A^Æ2 ''mimetypePK¯9A±õ Hœ>œ>MThumbnails/thumbnail.pngPK¯9AE@IM,÷ ?layout-cachePK¯9AìAv6v6-…@Pictures/100000000000019F00000109BFAC7E03.pngPK¯9A£å핦•¦•-FwPictures/100000000000035E00000106F50EF8E8.pngPK¯9A6©3Çç3ç3-7 Pictures/10000000000000FC00000111F9C6EC47.pngPK¯9AyLö 66-iAPictures/100000000000018300000104351EB642.pngPK¯9AÆÐ½ØÜåÜå-ÈwPictures/10000000000001F70000022119791551.pngPK¯9AŠ"Ý_3ë3ë-ï]Pictures/1000000000000315000001FC298C8D44.pngPK¯9AòDXVënën-mIPictures/1000000000000286000002691676812B.pngPK¯9AÕ·ƒtÝÝ-£¸Pictures/10000000000000A30000006482BA292F.pngPK¯9AÃ(ÓéÈ^È^-ËÁPictures/1000000000000290000000DBAB9C9BE9.pngPK¯9AR­\ÅgÅg-Þ Pictures/10000000000001F5000001324E0C1690.pngPK¯9AŠ<êç'î'î-îˆPictures/1000000000000304000001A722C49350.pngPK¯9Aœ)JåÃÊÃÊ-`wPictures/10000000000002D300000265C6DA0734.pngPK¯9AÝ0iæÃŽÃŽ-nBPictures/10000000000003160000011BD531D4FD.pngPK¯9AKV#8).).-|ÑPictures/100000000000025C000000F6FA86C2A8.pngPK¯9Aß°· æ•æ•-ðÿPictures/10000000000002D9000001300A5C8A8F.pngPK¯9A™ ”Ž|ß|ß-!–Pictures/1000000000000437000000E929A7BA01.pngPK¯9AFsÃ&èÉ‘ èucontent.xmlPK¯9Ae¬½ ª. ‰styles.xmlPK¯9Az|ù,Ʀ% M’settings.xmlPK¯9AX N4jjM™meta.xmlPK¯9AŠñ²ÿƒ Ýžmanifest.rdfPK¯9A' Configurations2/accelerator/current.xmlPK¯9Aq Configurations2/images/Bitmaps/PK¯9A® Configurations2/popupmenu/PK¯9Aæ Configurations2/menubar/PK¯9A¡Configurations2/floater/PK¯9AR¡Configurations2/statusbar/PK¯9AŠ¡Configurations2/progressbar/PK¯9AÄ¡Configurations2/toolbar/PK¯9Aú¡Configurations2/toolpanel/PK¯9AV!Vä!Q 2¢META-INF/manifest.xmlPK""Z –¤apache-jmeter-2.8/xdocs/usermanual/build-ldapext-test-plan.xml0000644000175000017500000003760612032647214024116 0ustar ebourgebourg ]> User's Manual: Building an Extended LDAP Test Plan

In this section, you will learn how to create a basic Test Plan to test an LDAP server.

As the Extended LDAP Sampler is highly configurable, this also means that it takes some time to build a correct testplan. You can however tune it exactly up to your needs.

You will create four users that send requests for four tests on the LDAP server.Also, you will tell the users to run their tests twice. So, the total number of requests is (4 users) x (4 requests) x repeat 2 times) = 32 LDAP requests. To construct the Test Plan, you will use the following elements:
Thread Group,
,
, and

This example assumes that the LDAP Server is installed in your Local machine.

For the less experienced LDAP users, I build a small LDAP tutorial which shortly explains the several LDAP operations that can be used in building a complex testplan.

Take care when using LDAP special characters in the distinghuished name, in that case (eg, you want to use a + sign in a distinghuished name) you need to escape the character by adding an "\" sign before that character. extra exeption: if you want to add a \ character in a distinguished name (in an add or rename operation), you need to use 4 backslashes. examples: cn=dolf\+smits to add/search an entry with the name like cn=dolf+smits cn=dolf \\ smits to search an entry with the name cn=dolf \ smits cn=c:\\\\log.txt to add an entry with a name like cn=c:\log.txt

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add-->ThreadGroup. You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Figure §-num;.1. Thread Group with Default Values

Begin by selecting the Thread Group element. Click your right mouse button to get the Add menu, and then select Add --> Config Element -->LDAP Extended Request Defaults. Then, select this new element to view its Control Panel.

Like most JMeter elements, the LDAP Extended Request Defaults Control Panel has a name field that you can modify. In this example, leave this field with the default value.


Figure §-num;.2 LDAP Defaults for our Test Plan

For each of the different operations, some default values can be filled in. In All cases, when a default is filled in, this is used for the LDAP extended requests. For each requst, you can override the defaults by filling in the values in the LDAP extended request sampler. When no valueis entered which is necesarry for a test, the test will fail in an unpredictable way!

We will not enter any default values here, as we will build a very small testplan, so we will explain all the different fields when we add the LDAP Extended samplers.

In our Test Plan, we want to use all 8 LDAP requests.

  1. Thread bind
  2. Search Test
  3. Compare Test
  4. Single bind/unbind Test
  5. Add Test
  6. Modify Test
  7. Delete Test
  8. Rename entry (moddn)
  9. Thread unbind

JMeter sends requests in the order that you add them to the tree.

Adding a requests always start by:
Adding the LDAP Extended Request to the Thread Group element (Add --> Sampler --> LDAP Ext Request). Then, select the LDAP Ext Request element in the tree and edit the following properties.

  1. Select the "Thread bind" button.
  2. enter the hostname value from the LDAP server in the Servername field
  3. Enter the portnumber from the LDAP server (389) in the port field
  4. (optional) enter the baseDN in the DN field, this baseDN will be used as thestarting point for searches, add, deletes etc.
    take care that this must be the uppermost shared level for all your request, eg When all information is stored under ou=people, dc=siemens, dc=com, you can use this value in the basedn.
    You cannot search or rename anymore in the subtree ou=users,dc=siemens,dc=com!
    If you need to search or rename objects in both subtrees, use the common denominator (dc=siemens,dc=com) as the baseDN.
  5. (Optional) enter the distinghuised name from the user you want to use for authentication. When this field is kept empty, an anonymous bind will be established.
  6. (optional) Enter the password for the user you want to authenticate with, an empty password will also lead to an anonymous bind.

Figure §-num;.3.1. Thread Bind example

  1. Select the "Search Test" button.
  2. (Optional) enter the searchbase under which you want to perform the search, relative to the basedn, used in the thread bind request.
    When left empty, the basedn is used as a search base, this files is important if you want to use a "base-entry" or "one-level" search (see below)
  3. Enter the searchfilter, any decent LDAP serach filter will do, but for now, use something simple, like cn=john doe
  4. (optional) enter the scope in the scope field, it has three options:
    1. Base level, Enter the value 0
      only the given searchbase is used, only for checking attributes or existence.
    2. One level, Enter the value 1
      Only search in one level below given searchbase is used
    3. Subtree, Enter the value 2
      Searches for object at any point below the given basedn
  5. (Optional) Sizelimit, specifies the maximun number of returned entries,
  6. (optional) Timelimit, psecifies the maximum number of miliseconds, the SERVER can use for performing the search. it is NOT the maximun time the application will wait!
    When a very large returnset is returned, from a very fast server, over a very slow line, you may have to wait for ages for the completion of the search request, but this parameter will not influence this.
  7. (Optional) Attributes you want in the search answer. This can be used to limit the size of the answer, especially when an onject has very large attributes (like jpegPhoto). There are three possibilities:
    1. Leave empty (the default setting must also be empty) This will return all attributes.
    2. Put in one empty value (""), it will request a non-existent attributes, so in reality it returns no attributes
    3. Put in the attributes, seperated by a semi-colon. It will return only the requested attributes
  8. (Optional) Return object, possible values are "true" and "false". True will return all java-object attributes, it will add these to the requested attributes, as specified above.
    false will mean no java-object attributes will be returned.
  9. (Optional) Dereference aliases. possible values "true" and "false". True will mean it will follow references, false says it will not.

Figure §-num;.3.2. search request example

  1. Select the "Compare" button.
  2. enter the entryname form the object on which you want the compare operation to work, relative to the basedn, eg "cn=john doe,ou=people"
  3. Enter the compare filter, this must be in the form "attribute=value", eg "mail=John.doe@siemens.com"

Figure §-num;.3.3. Compare example

  1. Select the "Single bind/unbind" button.
  2. Enter the FULL distinghuised name from the user you want to use for authentication.
    eg. cn=john doe,ou=people,dc=siemens,dc=com When this field is kept empty, an anonymous bind will be established.
  3. Enter the password for the user you want to authenticate with, an empty password will also lead to an anonymous bind.
  4. Take care: This single bind/unbind is in reality two seperate operations but cannot easily be split!

Figure §-num;.3.4. Single bind/unbind example

  1. Select the "Add" button.
  2. Enter the distinghuised name for the object to add, relative to the basedn.
  3. Add a line in the "add test" table, fill in the attribute and value.
    When you need the same attribute more than once, just add a new line, add the attribute again, and a different value.
    All necessary attributes and values must be specified to pass the test, see picture!
    (sometimes the server adds the attribute "objectClass=top", this might give a problem.

Figure §-num;.3.5. Add request example

  1. Select the "Modify test" button.
  2. Enter the distinghuised name for the object to modify, relative to the basedn.
  3. Add a line in the "modify test" table, with the "add" button.
  4. You need to enter the attribute you want to modify, (optional) a value, and the opcode. The meaning of this opcode:
    1. add
      this will mean that the attribute value (not optional in this case) willbe added to the attribute.
      When the attribute is not existing, it will be created and the value added
      When it is existing, and defined multi-valued, the new value is added.
      when it is existing, but single valued, it will fail.
    2. replace
      This will overwrite the attribute with the given new value (not optional here)
      When the attribute is not existing, it will be created and the value added
      When it is existing, old values are removed, the new value is added.
    3. delete
      When no value is given, all values will be removed
      When a value is given, only that value will be removed
      when the given value is not existing, the test will fail
  5. (Optional) Add more modifications in the "modify test" table.
    All modifications which are specified must succeed, to let the modification test pass. When one modification fails, NO modifications at all will be made and the entry will remain unchanged.

Figure §-num;.3.6. Modify example

  1. Select the "Delete" button.
  2. enter the name of the entry, relative to the baseDN, in the Delete-Field.
    that is, if you want to remove "cn=john doe,ou=people,dc=siemens,dc=com", and you set the baseDN to "dc=siemens,dc=com", you need to enter "cn=john doe,ou=people" in the Delete-field.

Figure §-num;.3.7. Delete example

  1. Select the "Rename Entry" button.
  2. enter the name of the entry, relative to the baseDN, in the "old entry name-Field".
    that is, if you want to rename "cn=john doe,ou=people,dc=siemens,dc=com", and you set the baseDN to "dc=siemens,dc=com", you need to enter "cn=john doe,ou=people" in the old entry name-field.
  3. enter the new name of the entry, relative to the baseDN, in the "new distinghuised name-Field".
    whne you only change the RDN, it will simply rename the entry
    when you also add a differten subtree, eg you change from cn=john doe,ou=people to cn=john doe,ou=users, it will move the entry. You can also move a complete subtree (If your LDAP server supports this!!!!), eg ou=people,ou=retired, to ou=oldusers,ou=users, this will move the complete subtee, plus all retired people in the subtree to the new place in the tree.

Figure §-num;.3.8. Rename example

  1. Select the "Thread unbind" button. This will be enough as it just closes the current connection. The information which is needed is already known by the system

Figure §-num;.3.9. Unbind example

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your LDAP requests in a file and presenting a visual model of the data.Select the Thread group element and add a View Results Tree (Add --> Listener -->View Results Tree)

Figure §-num;.4. View result Tree Listener

In this listener you have three tabs to view, the sampler result, the request and the response data.

  1. The sampler result just contains the response time, the returncode and return message
  2. The request gives a short description of the request that was made, in practice no relevant information is contained here.
  3. The response data contains the full details of the sent request, as well the full details of the received answer, this is given in a (self defined) xml-style. The full description can be found here.

apache-jmeter-2.8/xdocs/usermanual/remote-test.xml0000644000175000017500000003576212032647214021724 0ustar ebourgebourg ]> User's Manual: Remote (Distributed) Testing

In the event that your JMeter client machine is unable, performance-wise, to simulate enough users to stress your server, an option exists to control multiple, remote JMeter engines from a single JMeter GUI client. By running JMeter remotely, you can replicate a test across many low-end computers and thus simulate a larger load on the server. One instance of the JMeter GUI client can control any number of remote JMeter instances, and collect all the data from them. This offers the following features:

  • Saving of test samples to the local machine
  • Managment of multiple JMeterEngines from a single machine
  • No need to copy the test plan to each server - the client sends it to all the servers

Note: The same test plan is run by all the servers. JMeter does not distribute the load between servers, each runs the full test plan.

However, remote mode does use more resources than running the same number of non-GUI tests independently. If many server instances are used, the client JMeter can become overloaded, as can the client network connection.

Note that while you can execute the JMeterEngine on your application server, you need to be mindful of the fact that this will be adding processing overhead on the application server and thus your testing results will be somewhat tainted. The recommended approach is to have one or more machines on the same Ethernet segment as your application server that you configure to run the JMeter Engine. This will minimize the impact of the network on the test results without impacting the performance of the application serer itself.

Step 0: Configure the nodes

Make sure that all the nodes (client and servers) are running exactly the same version of JMeter. As far as possible, also use the same version of Java on all systems. Using different versions of Java may work - but is best avoided.

If the test uses any data files, note that these are not sent across by the client so make sure that these are available in the appropriate directory on each server. If necessary you can define different values for properties by editting the user.properties or system.properties files on each server. These properties will be picked up when the server is started and may be used in the test plan to affect its behaviour (e.g. connecting to a different remote server). Alternatively use different content in any datafiles used by the test (e.g. if each server must use unique ids, divide these between the data files)

Step 1: Start the servers

To run JMeter in remote node, start the JMeter server component on all machines you wish to run on by running the JMETER_HOME/bin/jmeter-server (unix) or JMETER_HOME/bin/jmeter-server.bat (windows) script.

Note that there can only be one JMeter server on each node unless different RMI ports are used.

Since JMeter 2.3.1, the JMeter server application starts the RMI registry itself; there is no need to start RMI registry separately. To revert to the previous behaviour, define the JMeter property server.rmi.create=false on the server host systems.

By default, RMI uses a dynamic port for the JMeter server engine. This can cause problems for firewalls, so versions of JMeter after 2.3.2 will check for the JMeter property server.rmi.localport. If this is non-zero, it will be used as the local port number for the server engine.

Step 2: Add the server IP to your client's Properties File

Edit the properties file on the controlling JMeter machine. In /bin/jmeter.properties, find the property named, "remote_hosts", and add the value of your running JMeter server's IP address. Multiple such servers can be added, comma-delimited.

Note that you can use the -R command line option instead to specify the remote host(s) to use. This has the same effect as using -r and -Jremote_hosts={serverlist}. E.g. jmeter -Rhost1,127.0.0.1,host2

If you define the JMeter property server.exitaftertest=true, then the server will exit after it runs a single test. See also the -X flag (described below)

Step 3a: Start the JMeter Client from a GUI client

Now you are ready to start the controlling JMeter client. For MS-Windows, start the client with the script "bin/jmeter.bat". For UNIX, use the script "bin/jmeter". You will notice that the Run menu contains two new sub-menus: "Remote Start" and "Remote Stop" (see figure 1). These menus contain the client that you set in the properties file. Use the remote start and stop instead of the normal JMeter start and stop menu items.

Figure 1 - Run Menu

Step 3b: Start the JMeter from a non-GUI Client

As an alternative, you can start the remote server(s) from a non-GUI (command-line) client. The command to do this is:

jmeter -n -t script.jmx -r
or
jmeter -n -t script.jmx -R server1,server2...

Other flags that may be useful:
-Gproperty=value - define a property in all the servers (may appear more than once)
-Z - Exit remote servers at the end of the test.
The first example will start whatever servers are defined in the JMeter property remote_hosts; the second example will define remote_hosts from the list of servers and then run the remote servers.
The command-line client will exit when all the remote servers have stopped.

In some cases, the jmeter-server script may not work for you (if you are using an OS platform not anticipated by the JMeter developers). Here is how to start the JMeter servers (step 1 above) with a more manual process:

Step 1a: Start the RMI Registry

Since JMeter 2.3.1, the RMI registry is started by the JMeter server, so this section does not apply in the normal case. To revert to the previous behaviour, define the JMeter property server.rmi.create=false on the server host systems and follow the instructions below.

JMeter uses Remote Method Invocation (RMI) as the remote communication mechanism. Therefore, you need to run the RMI Registry application (which is named, "rmiregistry") that comes with the JDK and is located in the "bin" directory. Before running rmiregistry, make sure that the following jars are in your system claspath:

  • JMETER_HOME/lib/ext/ApacheJMeter_core.jar
  • JMETER_HOME/lib/jorphan.jar
  • JMETER_HOME/lib/logkit-1.2.jar
The rmiregistry application needs access to certain JMeter classes. Run rmiregistry with no parameters. By default the application listens to port 1099.

Step 1b: Start the JMeter Server

Once the RMI Registry application is running, start the JMeter Server. Use the "-s" option with the jmeter startup script ("jmeter -s").

Steps 2 and 3 remain the same.

JMeter/RMI requires a connection from the client to the server. This will use the port you chose, default 1099.
JMeter/RMI also requires a reverse connection in order to return sample results from the server to the client.
This will use a high-numbered port.
This port can be controlled by jmeter property called client.rmi.localport in jmeter.properties.
If there are any firewalls or other network filters between JMeter client and server, you will need to make sure that they are set up to allow the connections through. If necessary, use monitoring software to show what traffic is being generated.

If you're running Suse Linux, these tips may help. The default installation may enable the firewall. In that case, remote testing will not work properly. The following tips were contributed by Sergey Ten.

If you see connections refused, turn on debugging by passing the following options.

rmiregistry -J-Dsun.rmi.log.debug=true -J-Dsun.rmi.server.exceptionTrace=true -J-Dsun.rmi.loader.logLevel=verbose -J-Dsun.rmi.dgc.logLevel=verbose -J-Dsun.rmi.transport.logLevel=verbose -J-Dsun.rmi.transport.tcp.logLevel=verbose

Since JMeter 2.3.1, the RMI registry is started by the server; however the options can still be passed in from the JMeter command line. For example: "jmeter -s -Dsun.rmi.loader.logLevel=verbose" (i.e. omit the -J prefixes). Alternatively the properties can be defined in the system.properties file.

The solution to the problem is to remove the loopbacks 127.0.0.1 and 127.0.0.2 from etc/hosts. What happens is jmeter-server can't connect to rmiregistry if 127.0.0.2 loopback is not available. Use the following settings to fix the problem.

Replace

  • `dirname $0`/jmeter -s "$@"

With

  • HOST="-Djava.rmi.server.hostname=[computer_name][computer_domain]
  • -Djava.security.policy=`dirname $0`/[policy_file]"
  • `dirname $0`/jmeter $HOST -s "$@"

Also create a policy file and add [computer_name][computer_domain] line to /etc/hosts.

In order to better support SSH-tunneling of the RMI communication channels used in remote testing, since JMeter 2.6:

  • a new property "client.rmi.localport" can be set to control the RMI port used by the RemoteSampleListenerImpl
  • To support tunneling RMI traffic over an SSH tunnel as the remote endpoint using a port on the local machine, loopback interface is now allowed to be used if it has been specified directly using the Java System Property "java.rmi.server.hostname" parameter.

By default, JMeter uses the standard RMI port 1099. It is possible to change this. For this to work successfully, all the following need to agree:

  • On the server, start rmiregistry using the new port number
  • On the server, start JMeter with the property server_port defined
  • On the client, update the remote_hosts property to include the new remote host:port settings

Since Jmeter 2.1.1, the jmeter-server scripts provide support for changing the port. For example, assume you want to use port 1664 (perhaps 1099 is already used).

On Windows (in a DOS box)
C:\JMETER> SET SERVER_PORT=1664
C:\JMETER> JMETER-SERVER [other options]

On Unix:
$ SERVER_PORT=1664 jmeter-server [other options]
[N.B. use upper case for the environment variable]

In both cases, the script starts rmiregistry on the specified port, and then starts JMeter in server mode, having defined the "server_port" property.

The chosen port will be logged in the server jmeter.log file (rmiregistry does not create a log file).

Listeners in the test plan send their results back to the client JMeter which writes the results to the specified files By default, samples are sent back synchronously as they are generated. This can affect the maximum throughput of the server test; the sample result has to be sent back before the thread can continue. There are some JMeter properties that can be set to alter this behaviour.

  • mode - sample sending mode - default is Standard. This should be set on the client node.
    • Standard - send samples synchronously as soon as they are generated
    • Hold - hold samples in an array until the end of a run. This may use a lot of memory on the server.
    • DiskStore - store samples in a disk file (under java.io.temp) until the end of a run. The serialised data file is deleted on JVM exit.
    • Batch - send saved samples when either the count or time exceeds a threshold, at which point the samples are sent synchronously. The thresholds can be configured on the server using the following properties:
      • num_sample_threshold - number of samples to accumulate, default 100
      • time_threshold - time threshold, default 60000 ms = 60 seconds
    • See also the Asynch mode, described below.
    • Statistical - send a summary sample when either the count or time exceeds a threshold. The samples are summarised by thread group name and sample label. The following fields are accumulated:
      • elapsed time
      • latency
      • bytes
      • sample count
      • error count
      Other fields that vary between samples are lost.
    • Stripped - remove responseData from succesful samples
    • StrippedBatch - remove responseData from succesful samples, and use Batch sender to send them.
    • Asynch - samples are temporarily stored in a local queue. A separate worker thread sends the samples. This allows the test thread to continue without waiting for the result to be sent back to the client. However, if samples are being created faster than they can be sent, the queue will eventually fill up, and the sampler thread will block until some samples can be drained from the queue. This mode is useful for smoothing out peaks in sample generation. The queue size can be adjusted by setting the JMeter property asynch.batch.queue.size (default 100) on the server node.
    • Custom implementation : set the mode parameter to your custom sample sender class name. This must implement the interface SampleSender and have a constructor which takes a single parameter of type RemoteSampleListener.

The following properties apply to the Batch and Statistical modes:

  • num_sample_threshold - number of samples in a batch (default 100)
  • time_threshold - number of milliseconds to wait (default 60 seconds)
apache-jmeter-2.8/xdocs/usermanual/jmeter_proxy_step_by_step.pdf0000644000175000017500000163637612032647214024745 0ustar ebourgebourg%PDF-1.4 %äüöß 2 0 obj <> stream xœ…XÉŠG½÷WÔÙP­Œ\+¡(èî |=àƒñÉ–l„d#]ôûŽ%×Ú†az:3cy[ŽºÂðýòuPøãA!êáÛ‡Ëo? ÿ¦]5|ûûr¹8†Ó5 / oÞÂÓðòñ÷YÁ2êYéfeèÃ.#~:úê—ÑÏ*0ÁD‘wÕw¼º3i¨dã±àú‰¿>/L`fõ–×™“¨A-£–D—Ö,¨Òýñòîòüry¿gJ¬ÑŸ¬An­ ™¡Ù1‚gK,Á¿†LA%c ª2 ÜL…š·„…d&”£I[(ÞØF¼ˆ5¢‘?Ðb›YîtÎRÍÙPí %3kôÚ¨íšxÐC¢vÔPÎmB¶LYG5ÿ€&8šŒµ)»,ÝÍ#›E.Ç7S ")"’=4-žox »ÖEÜ´„¹ê1º÷G†`{ÓÐzäz!‹½ªQH»ŒÓܾ…sW»‰ øòé8ˆ‚¿šu1ò„ã@pº)9œoÒ‚¯'jF{ò}á¾ y¿XæU!…äÝH&¥`3kM˜Ö÷R|í£³…h^Y ]¬S…!£qºl$ÙØYƒ²1ñ^j€Ü,…¨…s…èl92RÕ tSÙ|®Žh%vJŸ$­!dÛfÝëc˜t[ÉÛ9L#IìY ´“°r;qòZ`y}õëÀX u1]¨$/[/s¯õƒN¥³G˜ƒÖ¦]ÆXv·.ËêPС۲2–ÛÕ ÞéNžöOÆXE4ó[klFœn@Rk%I¯ˆ y£©“ˆ¬£*Ð_\I?š>pfp<ƪ Mˆ`¢†)–%WiÂlSJ Ê 例ÿ ÷ƒ±Ï í®­_ÒÑž7ÚN‡‡-òóT·6·çZgÐUM0iXJ,#·|‚-ÒbË£=}Þ^­6Û¼}f‘g¹°Ëvžîmª¦GZ*X`§ÐUÜæãÛå•Ñ`—k“Åø8{½Ô)ÎF£8m¾L ÃÏWgL™iSѬ` Âkì’eçÇå£ù:iŽ)ØmôI›iR¸=n§9<а‘ŸXVG*yU[—#¯øÇ„4×»u—­íMéïCÚð®Eà’_o;3r²JJO6Œ½p/ï'êpä–67Εjà ¨}Sòk›ç¡tC‰=-ü"w†ÃÓõºiø$$nÞîáÊåûV†žüº·œršŸ) ÅòµÛ2€ÅeåöûòJöîqI÷¨oQ]$Ù謌9¿4œáÿõ¬›Îqûåºæ¦ª~âÙB½£l¸†zsDª5=º$Ó¿€ÀâþδÇg&tÚCï<9³Ñž}_Z!š@(éÜ5ÿ²£]Ï gËñç—Ë›Ÿ¾Øáé¿ì(v …@ãé—ùç!ÛðSVT8)thåøŒžµŸ/²")±PŠÌÏÃ?6-àÝe56 0!—U5eVC«!\d•áµ2;5œÕdÁâ5¥—Né Ю5-ª­ «+:7m¼°±fÿ_³íåE7h(À4&c 2Ü4SïlãHÀ¡c˶ET^lw€1‡-á_CäCÓîቱ9«hs}´ýò#[ôßáï'L¤Ÿ  ×ô¿å/i…Ðúà×”¡=ƒÅ Ž…AV§ ½†–ýœƒ…hØ»•¦4?±Þã§™èvsúÓ™µzëàÌ©«áÝ)Ö+Šöèˆ C@¯Ë¡ MWBº$>h©åšüNQp”6]JƒYb­³E²šx%IEÿ —úN\±Ð‰Ä’Džò*)ÁU!¦ï,dš,ÞrxeÕ²J°:ia"´A¹ÁßÚÖ©»ôPö-¨x†­ÓªùkÖ–¯­8 ·ÿÜëq endstream endobj 3 0 obj 1809 endobj 6 0 obj <> stream xœì]XW׿ÿÒüü’M,1jŒ5jl[ì]P±{AÅÞ»REzï"½7é½H_ÊÒ–]ÊÒìüg÷ÊfÝ2ì. €÷õÈ3{çÎ=÷œ™;sÞ¹ede100000000000º ÌÌÌZ100000000000º ,,,Þa```````````tXZ[¿ÁÀÀÀÀÀÀÀÀÀÀÀè6¸fïø £Û`ãCÛ¡“˜˜ˆ¶õõõ­¬¬„?Vl˜ššš˜˜ðV@l477çææÒéôW>™[:àÂÂÂÒÒRñò ÐO Æ— #»&~X¼xñ hhh DyyyvövGÀ¥HOO+ÃÚµk׬YÃWi}}½¨ê R]ºtéÌ™3A—¢¢bGjÎt ÛóçÏ?qâDRRR'Öuuuàpä… ÚØØ466¶{ §ç;ëJ wÅŠìŸ>BCC ò–zb````````ˆŠË6v/ø":æ³ÛPVV‰EEE%%%ì òñ=V$p)¢R©\IAÛœؽ{÷òåËEÒåC4~ýúuƒA&“#"":^.tÐ-pø–-[RSSÍÍÍ!ä>pà@'Ö·oß-ZZZUUU—/_†Ÿ&&&ÄGqyžó¤|J ’Âþ‰HJHHAþN¹b100000000º¶¶¶ ü€"@®DˆNOœ8ÁÎ!ÚNOOWTT”‘‘”ØØX¾ _EIII«/X°àưwõêÕ\066–’’š5k–¬¬lLLŒºž={qì±cǪ««9ÓùÖToÞ¼yáÂ…'OžÖÀY'Ož¬\¹òùóç¹¹¹Ç_´hÑ?ÿüsõêU¶[|||Ö¯_¿}ûöÄÄDQ½±sçNب­­?þ† PúÆ/^¼ˆ¶¡ØS§NqÖG|jþQSScûYP=ÁÛà@”ßÅÅET_q^9@µàäÂ)npB9¯X¾¦a````````tØØØÔñêàÈb!''‡q;×6F[¶lDÑþþþB´É`0ø–)H',xyy¡D( "L++«ëׯC a$—R`  ÂÞÞÞEEEBꂘyݺuÊB!'£DAõ¿uë,--}îÜ9v ¢^³fÍ•+W †ŠÁ^uuuwww {(p+( 8(:sæŒð®@‡ïر#//ïÑ£Gp¸ŽŽJ'@Ô¶¡|ˆóÙùÅVÖ!ÊÆ™ÜãããÙÆîÚµ ø×ìÙ³ÁKuü<Ï>)•••à=t6Q ü%®ç¶mÛ€¶DGG{xxÀ_Q}Õ3løJ tB¹®^^Ó000000000º ¬­­üÀ9UdùòåìDó¸¶ÝÜÜP8 !«¦¦&l'%%ñ-S"ˆÀ×° ¤¤)¢C!çÏŸG ¸oäää€F ¯¡¤¤dÿþýP¾”””““S»õ/((€@‚XvþùçH„mOOOÈ|öìY.s JÏÏÏGÛk×®©zœn¿víZMM JG$m#’ÒquÀA 0,ÎD0}}}Qpê©T*;=%%…ÁãyöI¢yÐh:¨9T œ ÄPP=!8ò©AÙDõð ù6 × :¡\W/_Ó000000000º R­æÅ—,Y’ɉDb'B˜Çµmhh1„‹Rm â[¦ E.r¦@È £Ÿ«Yà­ •…WÄFUU•™™T"›ùÖ¿²²RUUUVVVZZv±qVÀÈÈ´´´ä2‡³æB¥~~~ wëÖ­t:¥CUÐ6”mÛ¶u\hA«p&B (ªç*b~Hwvv®æñ<ו´¥C…ágvv6A=½½½¹‹âãã…¯|5Ï•l Êñ÷÷tAò½z¹LÃÀÀÀÀÀÀÀÀè’RÉ(äMÜ´i×¶““Äx÷îÝã[N»àUˆF Á6FƒxxÕªU¼€Pâ[ñ”.^¼Z\]]ùÖ%ƒŠŠŠÝ»wCx+àèèy .sØP4.R­àðí۷Ú®««‹Ò¤ìÚµ 6€UAÔ !}ÇÕåææ¢¾¼¼¥!Ek|¡ÎÂQwCVVV%çÙÙCØž\¹r%T›·(®zhhhÀÈpáÁu娩©A!À¼]|¯^.Ó000000000º,--iüQܲeËx!´ãÚ†°ÂÚ 888¤¥¥¹¹¹%''ó-S¢E‹ù¶!""‚B¡@ä a0(eeåÙ³gIá­À™3gÐDéÒÒR!u…„„@™©©©IIIëׯ—””Œç[p nnnîââ5™;wnII WrrræÏŸÚÙÙAˆÌ•Eã»±:l€:4*!!~ÊÊÊÊÈÈ€¢;wBä¿uëV^‡ˆ¡NUUÍúƒÕJJJÈjváH)8¶×­[‡Ò¹<Ï®rÔ!..1…£GÔ³¸¸ØÖÖ6==N¸qß¾}¢úŠóE¶øøøº ¹®^¾¦a````````tXXXTðŠy!Ìã݆øb~4“Bz¾e RÄù”;v@¢¦¦&„â¢kkkC@ $…W)04 x‡ºlll '›7ofÛÎ[2™ à'ÐK—.¡Hž«`U+W®DîÚµ‹+ŠÆ…w:H Ú†õ/”——i‚ zÞ¼yööö@ V¼C”  †L€ØžÓ™è]è»-(Ëóœu‡¬X±yøÀÀ}ê N†ÌÎõ¶mÛÂÃÃEõç%Ê&).H®«—¯iݨ—wrssóòò:«´üüüÂÂÂv³A\VV&|±EEE pï.Þúçää  ‰TRRBP¨­ðu¥¥¥]Q2…BILLLOOçJ‡H~ãÆå,!×^ÏÃ.ð³Ú!'x^Ä* ‚ ’Ø4 ŒÏ sss fðo¶Žã“)êàë®sˆ ul¥(’ï"íqÍÛEw6 HJ ?¸»»ûøø|îZt z±i½fffEÝ@R 000000000000º €¤ÜÀÀÀÀÀÀÀÀÀÀÀÀè6055mÅÀÀÀÀÀÀÀÀÀè2000D”÷,w=@ÖÒ=µ¼'ħ©CoÒ‚ýÙ¹Z¾&u=>™–îpÖ>¥ŸFKwðç§Ñ‚-í­–~ºÐ£·HÊ;àBêRÊÇZº§–w„èM–böD-_Ž?Q8Úu`ÕŸ@Kw8kØŸëOÜÞ;WË—fi—6Œ^ )oY@R×)âlXKwÓò–½ÉRìÏž¨åËñgo ª»ÃYÃþì,àöÞZ¾4K»N Fo”7,ô¦æ€µˆªå !z“¥ØŸ=QË—ãÏÞTw‡³†ýÙYÀí½+´|i–vŒÞ )¯YèMÍkUËkBô&K±?{¢–/ÇŸ½)¨îg û³³€Û{WhùÒ,í:-½@R^±Ð›šÖ"ª–W„èM–böD-_Ž?{SPÝÎögg·÷®Ðò¥YÚuZ0z+€¤¼d¡3.ÔFM%ó/?ôˆÀ‰ž›ûlëÖ'ÇGJIE¡ P–œÜéZ„ħÔò’Äu°{l­ùPDÊâ»7<"ôÚ]3£vëÀ«%ùyÒ³ ar i©ðþ¼yóæNÀOaŽê¸?;|}vEpP-ª–îpÖ°?¹ðüùsôçÔÔT¾|íîGºhó¦‹Ô øjq3¹ïgÉ™-ðÉð§¼ZºÃ•ë…V^ùôŽé‘ázŠýB¬U:EK÷´” ooo'''×€8÷gIÏ’=àoH²WH²wh²OØsŸ°dß°d¿ðd¿ˆäôì‚v-í:[0z+€¤´° èB € ³]QS¿mnzÙ×]9ÀóD|´U-ƒÆUŽ·¸°Ø„ÔŒ¬Ô̬”´ŒçiiI©i ÉÏãc<¼£ùð‘´øùùedddff±@úÙL„ëêZýüsŠ¢b‰‰I¹ƒÅØ8uï^‹_~Érp^Ë®;çÍ•Y0¾«‡—·Ÿ——ïññóòñ÷öõ÷ñ ñõcŠŸ »—/d†C”O(F--„ 8kÀAéjED…[XšòÍ £÷0=#MGOÛÑÉžoKƒ‚›…ChXˆ Â…ñ'BMMu%½$9)ñÈ‘Ã@L>¼­­}6à'$&&Ä£<™@‹Øþìt[’R[ˈð ÞÙ–ÿH9%%¶¤~ §åËñgo ªÅ8ktú-;‹Èð4RUëЮ?KJJbccÃÃÃ#""àoBB•JU‹0þ¬©©©jCu5ÿû†0ZÄn•••l½‘‘‘h1Øàà`Þ½”b²‡áɂا¼…´Û 8Ë¢á=l-…9)®ºÇò“üØù)%…Æg2BmxµtÏöluêé•¿S¥Û+Xœö<È¢ãZij´°°ûLh@f8DxK¼¼¼´´´ „Ș„¨„´è¤Œè䬘dRLrvtrvd"){¶HS3rùrão¿¥¤¥ ©eþ¼y®Î.jªj”ª††¦×õ,i`Ic3È›-ošZÞ4¿|ÛòêíË×ïèµ/4ÔÔUï?øgÑ"ámét-Ä€à¬YÛXdçJKK--Í¢¢#¹özz¹?uv¤P(©i©°Á·KƒŸ1I D²ÄyÂ:LRBÝήïw|é× J›ç^º¤bh¨Æ%—/ŸU’— Ç–~}f]¿7>ÝCôg§ ’”šê:­:'®s¼èìÜ¢’eZJy…ä !µ|9þìM$EŒ³6Y~Ïúo×*§œ ¼æSYͨáß3ß>ˆý iÀüÛÛ111ååå"iiןðúɰ¡ÔÔÔÑMÛŸ2™\ÈBtt4‰Dª««kjjbÝWk³²² nð$¤ÓéEEE9#Þ×ÏäTYA:o9Ä­´ä°ÅÂsõ `~zzzròó ýP›K9™)ìC2½ Ž‘âyµtÏönrhH†ó±˜c“ æ'Zn39ôku]P!BjÏRWWWŠÞ¾yƒá58‡A!ÎÎÎÂ[ŠpêÔ©¡C‡Nž<ùÏ?ÿܪb¬¤±G-LþvÐæ››omº´ã^؆k®®»¸ö²ÏÒó~” >œÓR±Ý…ñÅHJ Ä$nqpW/..†¿¥,@äYözy|cÅÝæj­¦†’æ¦Æ†jïæªûu5œåù MNÖ——ø1,;444XØ¿ 8¼]’B£Ó+à?”6zanm]ûÊ•.?ÿ” ¬øþÝ;²½a’Â’B[cØ۾ݭ_?§eË„Ô"3w.È>Å Ƌæ7mò‚›8¼}õæÝ›·ïʪî? ¤¸oá‚…ÂÛÒ®–Ɔ†¼ƒ2ä䉉Âhi"ÁYÓÑÓ†Ç\ùùfæÆœ»JKK4´T)”R¸lrrs õùŸ3ÑIJuu[pa„„>T¸0þ¬©©¾(÷sØí1O®Í9sRIQQASóA` ;K<‚‚@<ƒƒ=µµÕöíS„ ÍÿÚè r? Ò"¶?;ݤ”W:ih$ŸZ©²Áû¢‚KKòÓ¢„%)=Ÿ¥4jF¥‰U OR Œâ¸m¶{ì§$)bœµ ²;ÏS߬ó¨qεÄS–±1%åt±:UüÉf(ðd hÚ†H^$žBìOxÈÄÇÇ£WÙ€ ’ù !F‹þöQPPdn’¸666Ö××Ãvcl4ÀOˆ`kY((,¤Ñh!Ž÷Ó|ò­A+-¨¸c×±ÀTT߀¶«ªhîF*I¾¤œ<6G r¸çú€‹²uçö¬$ÍñPœú¤ð«?‘œö9]œ㦖•dïa:G ¶ÒKáZõôô|lo_\RZXTRC+®¢WR‹éð·¢´²‚RI+«¢—WÑ©U•åPˆ‹‹‹ð–"¨¨¨|óÍ7}úôùÏþ#¹]UÉ8_Ùªpùý\ò@véç¯Q'¯R%¯VËY£ž’ÊÇœ–Šê% )è1I)**‚@´¤ ¥,ªBùÀT <{A»ÖTcÓô¢±¹©©¡:¨¥êF}Mg9í?è«© ©™YT* îoÃÍÇn§yä|Ÿ0sÚ%)•UUìÆ‚RM~üÑ÷ûÿ‹œûC²ñ8¶&-þÆ>¼á?ú{¯ÿüŸÙ€Bj™;gÎìY³öì-¦Õ ñŒÉ%wïÞSªê÷ïSRÜ«°`þ|ámiGKtN†Ïòô»ëÈ“'[÷í[Ø®–„ 8k¦æÆ–¦ðtƒ«ÂÓËÃ/À—½ËÞÑ.:&]9F&úá¡¢ž56IÉ瀽 p͇jm¢®¥­Îñó_qzê Œ@%½ByÙ×ÑÆ=¥T]S õ£Gìæ$B|N+?îØâÿd‹ØþäÅö›^’ûí@`CÈCº!I© Òt/FŸ™uVÎûÜŠ„3³(w¶çå¤ KR:èÏCŽçÔNšD‰`O´@ ž–pÔí2hÑòŠ(c¾SK»‡  „††ð¤Ã^âõ¢’”˜6D³€ØP»G¡òÅ8kÖo=’ðËÑÄaç³'h•­Ð)?b’n“žK¡–‹8‹ÀŸ±±±@ÂÂÂÀcðž °R€D$$$ðBl© ‚ß pà)P8– %226À“"Ù"¶?á êà‰WYY <­³²²ÒÒRSÒ’Ó³ž—P _P©Ô²²rW7÷´ÄPw½cÅiü_ø´ÐâããO4â ´H¤ôôô´ô”ŒìÔJ)9ÄõÑ¡ìä0•ái‡妺éÌóä«¥ƒíì={öìôéÓW®\ §%Âü„DØdé3«Óöç&\Ž&éÍÓ˜œj¯h¤ü_;ÕÖw¿/-L$(@‹¨–*++?yòü OU Fm]me©Ä¦ú>G†mœ|£i¡F³œaË~›—çÝ^«¾1Š|Ϩ©¤\¸p¡oß¾?üðÃW_}5s‡újµ¼ÓÖ…Ûtó• b²V=§~Áõ‚µLY§Q‘ÉçÆÇi©¨^ÂÀ’ÒÈ1I)..†ÑžRZÂîI)/¡Ð+hºÍôMµ~Í…Õew›«tëͤn÷A_á;·ÔJ"Îfa·M®žc kë'Îa1qêôsóùÏÏjW ¢{Y´•Á¢³ $Â.Èpè°R4!IÛŸ¼zâ“TîTBÒÝH Ä-Ö®®ö¾OµsN΢ž™Sl}•’ðŒB§µÿмãþ¹Nî4yøíºQ·kfî¶Q7õÎítKó ‹ÇïZ}½æçÛM#.’_r·õŠÏ))¯ª©iÒ —ú@ÌP„ä)"‘”ˆˆ(0„ÎîH$>•/ÆYûsùú-ö?mq´7xJêÈky’ÚÔ-úwŸ’=Ãr³s‹Eà~þ»Ðø«ððpˆ]á/"_@^€>°ÃZa@àO(u¤¤¤°§ABáhhY»>äÕ"^+xúô)0xdí877îÉ”ÒòÒⲂ‚âôŒ”rfqQINnÞ G œt6¸XN)â[âVàêêZ^^ÎÖRTT ”\XXìb¡¥só°«áùÌÌ,//æ›–„0o£û'í¥q7ÆN¹BT³dÉ’›7onݺUZZº†Ø€Ÿ±7d 8\ ¥55ÀSLI}¬b±ÖS{¬£ÖÀ†²«A¶’ñVhÕRDR @"“Ɉ¤•PÞÔ—´Ô–¾`Pj«©u5´z½¾¶²¾¶ª¾¶º®–ù>V<’rõêÕ~ýú 0àÛo¿•Úýp•YN«àºS©¦Ý=©Î)®6ŒÔø$†±U§x½fÑ-¦Ä’’d‘¨^ÂÀ€ÖÚÀ1I;ÚÅ¢'¥h¨Ü”Ê©Ô ŠÒJZRÍ®‰~ë5C3!üp}Mb-ã£Nóvô¥OFÔz ‹t9ÜÐøBÓ €¶èÄ$mc33ƒË‰N‡ž*gGYsÒ.I©A«} (¬ï/ÀžÇ?þüƒÄ3) ’Í8¶2‹ÉSrŸ\H’“*aýý÷Bj‘š={׎»wî*¬`4½|MÜ“ÂhhΧ2€;À!sçÌÞ-ޝ½MükËÚ? ´XªÀ©Ÿmׯ&—×ki ñCÁÍÝE[G³ªªª¨¨(>>ÎÛ‡ùrÌØÔ 3+£  . -Uà2‚'°”·'%7/WMã>âÄ<¥#$E@e>”{D$¥#þäBO')´rº–U´ÙÓ8×ÈRψ¼S'R,ÏV—38'Í‹¡Ó?Ìã«¥#þü}•¬rÖðk¨5LÑ®]}7ëø9ÇÀp!:q„·” $eÛJ•â¡ E½îomú†+Q7Ì"ãârJÊ*¬À‚¤´ËP8yŠ B„')c³é ×€%¤‹Êã¬[´l•ÖL~Ùè0p—ßÀ#1ƒÏ¥ÿ¥S¦ð¤V׋áh+Â(5b’‚úMÀ.à&ÈLÔ[„6„×BàO(º€¡dgg§¦¦²ç¿°g” ¯E¼Vꊋ‹!¦í%Å”„¤ÈÀ(‹à‹ØøPr^AjêóLRvtT¸êù(› –—äH)¼…0„X”îö %--  ÉÁ1V¡I6‘á¦çCMOêŸ]îç@-+²Ô½jyÞòòÆÌTîN«¶w¸“¸¹¹M:uñâÅ#GŽüñÇûí· 6¬_¿6à'$ª¨¨@È&hbKSžYìûÑþîo“á5š(§£7óîóuò|Kñ,E$î–€ýÛ“¢Ø¸R§åŽï»š*çPöÖ<¸‰GRnݺõË/¿ 2ä»ï¾›«¨³V½`»^QvyKLÞ‹ÍŠ€˜È>,òL®Ìy!û°XîaÉFí’¤\>ï8-ÉE I©g˜¤@¨ äh³¥¡P™`NBÐéUô¢úó÷¯2ôô®³V÷â3Ö”àö’où}™ãP?/ãׯßÀ. žQ±qW•E©ýr÷zk¹ i—¤ 6Ëd(Ð`˜åESSl:HJz|#¼zÚûwï ]¯¨KTF^yÿþ]Ì‘‰žÿ“p˜9SH-³fÎܾuÛŽmÛÉåÕÕõÍ5mRÍ”¦ªº¦JÚ4Æ‹ŠšFjuC.¥zçöpÈ)iám¤%3ÉåMâ_§þ1bĤ1ÿ{nù¿X§Õ¶ŽÎ9¥UÄZê Ñn ª¥­BxN™[˜„…‡Ú=¶A´ÂÃÓÝÓËàXKy{R ˆU×|Ð.Iœâ‘”Cm$ÅÁÁžW55Õ”ú“=š¤Ðé4{+ßùöÍ;µÎxÚ:Õµõÿt_>ýèÎwˆÙlmmáá 1_-ñ爎$ =™=üRÑ·ód4‹v˜ÐÏ?Ê2ÕpK —ÕwŠ¥@RÆÉ/SN|<}Ø•üqwÉ tËw”_ÒNzâOÊI%S+…è &)þAPÝ.CaóÈÏ·!I èBô$666==¶!Þ†¸îÌÉ£»1¤:•/ÆY+³håÝ~ëÍnr´õéÀÝ^CöG ¹’5Lj~Ê®ÚÀ °sHJdd$ô…z‹PO $BH/ÒX,¢!^Ø ÜA‹Ø$ET&''gddÀ)ËÍÍe.k™‘øÌÓ)R)§Ö¼ ÁÖ?íTà3—ÔôìÇz—ƒ,΄X_Ô¾´W÷æQAuÔ @ËsÀ:Ð’žžâñ4ê©ÖÄÝòÌ3ë‹~æç]TÔ¸²?3›ìb¡lu9Äö²èºu„Æ3ô#í¢”9sæÌ˜1CCCãÂ… »víúßÿþ·uëÖ»,Àü„DmmmÈÙ 3"¼¥”¢ç¶ªƒ­‡–g¬( ›:©ôÀŸ †÷ìóMJ”ð“S:b©———™™™ššzY9µ”R^_C­eŽ–§UVU=ù0”½mfü¤€Ó†:lذ¾}ûÎSÒ_¯Y¨êUYQûÆ7µnó#`%Lb¢lC¥Õ½9ï@Ûô¨t³Ni Y IA éŒÏÛø®×u…< ¸r€¤ ©mÄ$ÅÅÍ™EI¨¬îDO¨¬þ Aa¾Ï ™¨Ýá-‡¸9ÔTUd|›k9$2.öíÛ·eòö¤^¿~‘™yîàìLÓAiF¿x¨þ#’xæÖ±¢ØJssKKËË—/#½¿þúé%Â6M‹–“È8*A:#Aº>Õý Ïï¾ ¶³RËLIÉ­ò[¶mÙš]ZUVUOÜ“RHeŠ+!3"5{¶ð¶ðÕââëÚ'õðüø±cÇüßpƒ­¦œºö ,&¹]-u„h7ÜMLJPÓ¸_YI‡+“D"=yêÎZU¦€x ±¥÷¤ArssØ=)±±1|%&†ct¤ð²ž¶•D+…!)ô''Iñê$…^Ya¬îïe¹Ñ­ys@«Rhë8§Öå–¤Âò2¸{@£†ÑÚÚnDPï4÷çˆÅ«ƒ‡‚pñ×FÆ)f¤Ž[J.,»vá¯{¼‡‹z6}ÔÍ|)­Y‹ÚS&%Vσ#rsHùíD/Ä$‚[ˆl, ADNøb`Ø@üíE½-‚fŽCR vï ê€@~Â_؆öLsˆ· ´ˆqÖÆJ/\¯ùƒ¬éÀöƒ¶¸ V r.käýÜÍwc4c3©D‹¦pƒÀŸ àC°ˆýú ‹æÎC¼-¼¢n(0554Â6” ¤yOë´ˆêOWW×ÄÄÄ””DU²Iyê–ë­R%ý‹vúï¶N—Vw\éd¤épÝ×ü‚¿õ5ç{»| ŽR(|âv†àVZÀ:¶–ÌL’–í&«ŒY–Ûbœï»©Ù^wº½ÍIcŸ‡ƒÁ3Û«V—|,/?½·ÓMû`q÷RiïGŽ&¢ªªª«« î½~ýú/¿ü2jÔ()`~B"4ÈÙ 3"¼¥r¦ŸÍ½cÝÇSÒeYŒòÿé›´!ƒJFŽôéóUø‘ ¾æã«rèWG,ussƒôâ’R +C«•²gÚ¢×°h({cc#ü‡ÌpˆH–ÔÔÔ~ÿý÷‘#G~ÿý÷ Ë>,>bY–C}é‘TؼT^§ˆ‰ºO”›®•[tË@2‹®î…,Æ3Ÿ @+vïÞ ä]ZZúСC … óÁƒÝÝù¼© #´Úf¾‚H Z”ƒ˜¤3¿Ì1WThåÿö °Çi0›Hu ‹¤Üå-‡¸9TSs“´¿ÔŸ“Ñ\ánh{#À憟Ý?ÇG~Φ~îöðÈ3"2úúqñ:â´<¹.B`Ï@$…Eç¹Ê«W¯À4׳gƒ¾ýÖëk ÷Ÿ$Ø+†èFÚ>I)(úcéܵF?­7$g7h·÷Ýèsß×rd•ì°eÜ´-°w'ÅÇ’Š!D‹üæ›ê²2¾ZH ܾ Û­ÈÈÈX€YÄÅÅÁÞøøx *ηaH öà.Px lC5P_A¤Ê㬙=“ÖO²ƒ¡Š¨÷ÃqßÚ¡¶ÅÔꇾÁÖáqéYÂŽ!ð'ÜÏÁQüV÷‚¨žhBª`ú³¤¤:ð$8ÊÏÏþ"fWPP{EÕ"ª?áb@ è)3ï¦ÞRÕÈ¡—"F^ÿãNäˆ+:Sì‹r¼æôH9Ðú²ã­m®ZûÉ™üç€ j %::!-éYwŒVj:N{ªy$ÊñÆS=å³3w¶?ÕØgygw„õ§ºÊA6—îìtÑPJOà4(v{‡‹vüøñ«W¯ž?þÊ•+-Z4yòäÍ›70à;`~BâòåË!dƒÌpïÀE‚öîcµÔòö=ŒFúàó߯ FŒÈúuˆW߯Óu&г—6”]¤¤+¸þáf4£´°^¿ŽÜÙÐê^ŽTf(Fki ·4V½l¬~ÙÄxÕTûº¹þUKÃë–Æ×-/^¿dNW‡BîÚ$8%½ÞR€––ÖØ±cnjӯ_¿™l|T¬d‡>e³eŸ1EÁˆ²C¿,«ìeBAónÃòmúLÉ)ød±O0>/€S@Ö7.`/^”“J¥ÊÈÈð% ”Ɩ×|‘”˜¤À]õšT°úOhÿÒ“Êߨªbƒ‡¤”&™¦YLI×–g6¹Èq^¹ÏºÊ°ôí´gÛ¨A[Ë䋼dÓmÿ‰Ö—7\©n‘¦Ò¡ª?…>èg©2Ix- I©g ŒD£¼CA‹Š¿yóÌqÕÓsœ<Ù¯oßàï¾ þá‡'S¦Ü9vŒwaO-OŸ¾QV$…LM/¤ƒd°þ"²’šOKɯxN®HΣ&åQQþ™’’bkIÉ!3’’íÇO™pÆÚWàŒÞòÕ„9Ã1:šÍPEà^4 žÏŸ?G“èç Z—¸]BÜîÿ1€¡°÷Â6œµ8ÒÓù|„S‹0ör¦ØÙÙéééÁéƒúgdd$Ä'k^výþtà¸#þ.ûÒ¼°D°ÅyOƒ“.ª{žh*yiï/-æ?HCP+-ººº@Äà‚à¯ù}ƒ[»žY÷1>íetÊéÞ.­ýïìt×?þÌú¼§áIwÍýŽj žÚJyYÜ_½¯½ãû믿֬Ysûöm555ˆ®•••ÿøã#FÈÉÉ b6à'$Â.ÈÙ 3rFâö^^š™“êê7¨îС1?÷óÜ'Óñ»Â˜¾åÉ¿TfüÞP$ÛL¿EŽßþXmPŒÿåêj=ų”ku¯ÆM/éë¾;T7T¥á¯k Ô_l0hR²n9ëòòÿ+ƒð7o_3_GïSºäÆýÁwbKutt&MšôçŸþüóÏ‹›ÉëPäu)¨Çd«n™’i™yXíóâ—Jæ´Ô† ù$…ØRŒÏŽÌÌÌ3f°9ÅáÇgÍš%è]Š‚‚B a ë )hí b’¼ u›°¨JNcw  >4Q b:1HJŠ•4-T¾2|;HH—ìàÈãy{¢×õï}oü`pd¤ðZ¬‡ok‰ `(Í3ÀÛ·oëêê€B6xÃã}×U$[¦O&»~ƒ"ù÷ ñ´È­_—æ-Ÿáðëô)c‡~y÷×ä'}KŸ4qâº5k…ÔRC!o2þ¾¦Õáæ T"4,䉾N»‡[ÚFRØ©¦WÒy礰»QP´!I‰æ )Ìù'm(¶¶Ö̯ëЀŸ—%?O@$%ФtÄŸ¨ëD߬çKÖñÎÓöÊÓôÈUs˽ç’{Û)çºcöUûlË⎓”®ÓRN©´½CòxÈPÛYdy%ïN\ÓÑÇé‡2~|T¾6°õÇ÷ƒ-𦏶j؇888O»xB)ôE¹ÎõçRK¯þKR8yʇq_¦M–ºÑbûHÊpé©ËïöÛ`<HÊÖ'ƒSò£f¬–nbî“KF?C$$H}%š_ñ›MTGFFB>ŒŽHDƒÀ Ðjºhº7ºfÃ_4œo9Âöd 4Ê =õEõÄ$EŒ³öû´)nõ[§1xÍ yKŸdö*e³6*+“~»Q9JçÅœ›™‡´|brŠÛYŽØŸ OA=Sè°Ô‡O:8ŠÍ\Ð_AßOÆŸpRÐ÷ÁÁ™àCv:\íhò>ê´‚¿@%ø– ¶?ÖÖÖP°.)1))1õÂåÃ{®ŒÙ{ýÏSÇÖÜ=.g®®âc¤â¡Ôîꦧv=QUdq+€V ^rrrRÒs{£ûª*òÖZ*>Æ']~|}ó“û;¬ïî1U;åetÚSÿ¨Í•MNª{îï¤ETKUTTfÏž}@QaÌÐA?õýnøÀ~‡÷íÝ´iSÿþýÇ·„Ø€Ÿ» dƒÌp‡ o)BÚ¥Kžß}²tLNà×y_!’R•9¢6gì‹üé¯*”^PïEy¬rО¦UUÉg™ñ,åZÝ ÂZeUëûêÖwŒÖ÷u­ïë[ß7´¶¾hmmjmnÒÒúž9T ™«¾F‡{`bKáþý÷ß@â€â-=f±U¯|›³»d»>u»õ˜5TöRå1¸É.#ÚãŠÝÆôb~ë„sZ*ÈŸŸô¿ÐÖÖF?oݺ?áùÂ7óµk׌Œø|ÌZ¤BØ`õ¤¼á+ˆ¤T³Ð.I¡#U¡A¨XYÅ\ýÃ2B2>,Ð**I‰3šR¸ŽÊ– õ‚eC´á,»“}œ/ôÕØõ‹ðZ,’ÒÈZ¬B_4Ê‹“¡ÞµvAtá‘l™:eÊú5kÅ¿§MOK€ù?õ9ªKL;vìÞUßPÜúÊþ3hä￯XºLx-Õ„’¤¤\¼¨§|Ô×˶á/l§ÑÓG`)")5¬{² xvOJ\\,»…Ý‚žäpŠÅ")ãIAcƪ«+Q ‹ž”S©”òòRaHJGüÉ;Ë.¼ô”EzîE+g¨ÊS-.å9™>/* 4ÔÕ ûÄQÇô>†õ;BÞ*…¿ëÕªù4Ú5œ œE¾°ŽûsÈTÉ%WpŽøâå)6sŸçbû“œ_8|öÔÕªýÖ2I ”¿ÍyPrYýË·Í–¡Y °‘*!‘ÙçA³õÛíIAC° ¬…ëž 'u t„¤°ûPv¢Q^™™™° Ç IRÄ;k‹¶¬Uºô §ð#/Io>v0ê·c©¿]É™¨V¼Ê ò¸AêcÿÌœ"je¥²BìϪª*¾cà!=ß‘`|y ±?чnùîB -P€ú­Ð #p5oæŽøÓËË ,bö¯Å†y> ˆ R=²ÌS÷°¿±²ÆÅ=wÎî1»¾Çòæ–p{>óIˆ[Pè®zl©ÁQ÷GG´.+¨žßcq}·ÅõÍÎJ¦§^ÚsÿÜÓk»-nlõ5>#H‹¨–.Z´HVVö÷}å–HŸ”_vPnéäaý·Éoúé§Ÿ`×|`~B"ì‚ 2Ã!p ìÞR6Ìo~KÍ9JŽú‘ERþË")¿×åN¯Ë™øªDò-uÉÛš³ŒâáOçÛÜû)ÚïbuÕGTE¼ÞÉLMQ-…Çß´ñŒþIbÝŸß›(JÛ^½wÁØY#üꫯþøãeË–-_¾6à'$î‘õäâf“}s 3ÂáBZÊ Gí‘ùI[ ÆI)ˆîS–ü3”ò„EËêH“ßPæ¿£.zG“}Ss‹žwÊâöù’ñîl@ ÍÌÌ ´ƒÀ ~ï^Ö¾{Yÿþucë›­oš[ß¶0‰ÉûW­ï^ƒ ‰Õa£ÎqO !¶BM™)S¦ :tÅ ë]†´]F´Ý Æô=ÆtŸÔ&EÓÊ•ûÌ*÷›U)šUí3«®à7ºÓRb|^À툳äÆð31‘Ï µäääU«Vu°NÀ•\@kä+ˆ¤°Væª$&)B|¸Ì8æÈ× zÂ@£n>LIƒ¤„jŒÎwžý¯¸€H éL;IÍ_™þæÁÖ„×Â`‘æ@¯»Q¸ l@:äA €òYf“@Ë_'­\¶ <² ++Kf®ÌÔ)S&Mœˆ2ïUËÁ­SÞßQÚ2î±s¦þXìÚWíäP¸¥À"ª–JBÜ®³> üý÷Ì¡Cóÿ½ä?@œ¾þH üE?óY{!ää[¥@R€T¶æÕG£} )ÀPØ3PX`~š ÚZ÷Μ_ -U!ýÉERX\üÃø.*•RVVêææÜÚ¸ÚÛ%)bû“¬Õ½*”Í{IÑ8õL祦ö£‡rIEՇ̵̉ˆ§»µN{Òªù„x ¢'œZ:âÏ_§L_w—Ïœ`( À&:b)”á3'nTï/k:p‹óÅÀ¡r—½CA$%æ êàè'-Ä«{¡wïˆ>°ù{u/4 ¨ã$…Áâ)œó5€•ø¶ÁÔ“"èpT¾gí×3ê¯éò(µv÷ ÕëXS~vû:7ølúD­Ò-«5Ü+žWótõKRÀie¬å àæÂg7ð'ü…½ìmÄÑ]†¯¥¢jæ‚zO„{5‰D‚*¨Jl?òðð`ÎgÏÈ())ÉË#ç;ëž³¹.çmpØêæf««òå,ίöÔVÔ;·6-’ûð\þ¤å‰“ÓóÔô'‡L.o29nzuãã[Ûuά·¿*箵×ðâëÛ;,¯È›]“7SY馩 sfMZ¸ÀEqEµtñâÅó¥$—ŒüJiÅ´3Ëÿ8/õŸ­JÈÉL?~ü‰'rrròòò`~B"ì‚ {'ÿß•ýVÿù=‡ i)'ÂÜÄyË”¥¯Ì‹øOnØ×”„þU™ãj³Ç½*ÛT¼©*mÚ›òåïhÞÕiÅz,xötg§XŠàîîéôÊJöjÃÌp…õ¶¹í,û,2‹:p`bb²páÂiÓ¦ 6lÕI[ &¨ÇDÄ´Ê8¤“CV•ûÍ«ö›Wï·¨©ä×UÂi)?1>/ÈdòÌ™3Ïœùп¹ÿþ9sæðãjhh죃…pHJFI-_A$ ã"&)V"zÒ6¥m?›ž°¦¤³»™¤,%=ž˜m?‰% Éœ¢±ýëG ÿQÛù בöIJs3{6 »ušCmØ–26ää†FGó]ê™@Ë„ñ.Yôx”/]¼dÁ¼ù+–-æZËfùE NŸ2ež4a‚HZ¶¯›þ&kÏi…qÀPþž48öéÅoß>1´Ð !ÈŸ¾¾>£Få;j”÷ AÏN80öäÉX=ø Û鱬<òóB`)¸¦>ðØ=) FM[2ºùÑ![mm-\¨3¥¥¥El’Â9¾«¬¬¤´´ÈÅÕ Ñ“ÒÒ)³]’"ž?ù‚IR+N˜õ$’B«¨¬ä·ZlHj‘‰s¸ŽsŒžs”±K´·T%½ÇVÇý9xâÔu7ûËäd(›]'.;«Ëÿc"Â[Š$eú„ wûË Úá>hWÈ@(œMR¨qßHrÔ@?ÅëI›¿0_rDèøwR¬wbœ$… À†ŽEå‹qÖ¦ß2`“”ôÂRñ‡>ˆÙ+·,½6`ƒÉ/ì杻z%kŽ)ýÔÓ:ú‘aU<#Iˆý ;x ­6 ·ØÎÍeö¦ÅÄÄ€áÀJàa”­ÆŒfУµÔDò§ -hd D‹§I‰‹‹ÇñZëååa­½½½©…µ‡åýdë—æ‡±¹.ï«­¨}fÛ]ù C%‹kr9Ü8\þ¤l|¬y"ÆâÀÝ#+‚tX_•÷ÕQ’ârw‹¯Ž‚õím†çÖyjìÑ=»Öåž|€Þ>³+²YIÜEbˆÛÞ!È‘‘‘¹¼kñ…%Iþß•E?hï•ܺE~ûöíœÙà'$Â.ÈÙ 3>üøš÷Or¦¿½Ö@:Y™Ù7'ô?Q?TfŒ­ÎšQ—=é]¾±h{y’ÔëMRÄÖ§:ãª*¹gktäΗ¨§§§‹«+k6fmëëúÖ7­o›Zß1'¡´¶¾fÉ–0ßÁB!›;¿˜oi133[ºtéßÿ=bĈ5*ލe¯ ]Á¤JIO˜ EÉ¢æ€ãã %ã ÿÅ»8-%ð'ÆgÇéÓ§,X÷(hÎÒÒÒ7oÞä›mïÞ½p§ê`!œ€˜@®æ+ˆ¤°–¦ KRªkÚ†x¡^h9n֊ܬ…}Å )1O”“†fYȲú]°Œü ÖL1Pêó`›„ÆÞ߸¾Õ.Iaq”AÝ(°+??¿¸¸äÅ‹ÆgœË°©eܘ± eæ!ñõõ•‘’–’œ9_f›5Áù…§Æ¦ ²‹æ/˜6e ä\¼`áŸãÆ ¯å¯?Ç“<¤îýÊÔID|ç«õýwß~×z×*ª!ù3j×Ί±cãþ9nÿþÄs粇 óøî»LssØ•eaÛé°ò@NÈ/’?ƒ‚Ñ%Æ^’Iiö¤À” ‘eøû,$HMã¾þä")TjYy9è );#11ÖÇÇÃÙÙ±•ùIÓ’ÄÄø‡”¹U*L÷ ¿¾‚σÝ676{=Ü룾]ÿºPÓCîwwøëîµ¼±ÙGm»›èÝ›Ég °xí\ºœ…;WÎxß²|t[^~3D×\Ÿ¼Ÿ» dƒÌè(®Î\aîlðì)++{ª?-=tUIŠ4³3%´/%~`}Á2Úó‰¹3Þ1®ÔÏÆ¸J>ÕD¥ðM*ž¥\«{AÓúºNB–ñí¡Ú_O×OºÚ8_­q½þ æœç—ü^é‡[y…LÖè?ÖF´9¼+W®”””9räšs®¬©(F|éÕeS_«ûÔ)˜2z)™Wïg __qZ*ÈŸÝp—"%%5sæÌcÇŽQ©|ÖA€ x=Áøa áB+!€¤ ï$¶KRÐkëß b¡Žù-Óz&A~ò‚ù¯éE“$%/ÉÓ÷zŸ “þ,À-¦H~æûÓÿ½¿UB}ïï999Bja ’ÒÒÂERØÝ(ð“Á\‰%éõëWÏÂýŠ$Ö2zÔ¨¹RÒH|||¤fÎ’œþ·ô¬Ùˆ5xzzººº:99ÙÛÛ¯]½fþ\™)M†œÛ·l;z´ðZNì“+È 7GrŸc\ï÷I¶ú±ß÷_õë×ÏÅÅE<-|?ɆÀÓœ9µ&„öïOrvö:´tÔ¨€‘#ÑjÕØ†H‡½rJKLŽæÕ’ü<)(8€SƒüzÀùâìFçúJ\xœbna"¤?¤œ`‘eÅJÖçyˆ“¡“ñüÉìîsØ…ôgçBT-¡ÙÚÚZÙXY[[‡„„9>¹ãþüeܘÕçȪÿ¼^kØückÎðçíÖXKDläßk§Îݶâ¢YXe%- –,wÙ»”ÅPØ]*¨EP÷M»$ÚN»<1+Ia|<î àCó\ZÄ8k;Lœ€§7‘Õ{<義Äð—ZS;{ÉÆu÷ú¯7e.J <äPò‡B¥ï‡«ù§'fåñ=Û®?¡i,@ìŠfôÀÍ$!!­N€Öy†¿èêWâ]¦¦]òÕ’˜˜ˆ¾ê<Ú‚¯¯ok ¸{£¡eåON¤ÆúتûëìT=¼4Úü˜Ûía†û /®{n{ÄùÎfÍiŽ' 'zÍøÌ#èñ=Û›-/m7?îvsG„é~‹«²Q† v·6†™ì ÔÙª«`rq]¢íQ_mw7?wP&xˆa)¤Ÿ;wnîܹӧOŸ1c†‚‚B*¿‰» dƒÌpHO¸EÜÞáqaZA"ÈÇÔ^s-ïxAì¢ø‘¹Ï~¨ÊÓDÙ[3«®ø²¯åT'ƒy‰ 1á;êCTK¹V÷zûþ=£®¾m9¯–ÖÖWœ}(,z o ‰“÷$D²ÔÊÊjõêÕ³fÍ=zôš ^[?,íU¾Ý€•ÛL¯kYÏZ×ëÃ00E3¢–ˆ,⛣[!//àcñnnn‡ê`!"H ú|¼$…9…Õ…‚ k„Wˬo#61?(IVÿäúŒhoc4¿Õùî_yø]§hÏÏËßÜÝ(¡ª0nûBja°H ×·Q8»Q€¹IÌÎÉ  Í#sEH-cþ5cê´Ù3$A€)̘6mâŸN›2¶áÞòøñcˆÐÌÍÍáØ%‹Ï–”œøçȹvåªQ#EXNÙËN5'Ñ6ÊýÔ£¿Vþ:æè ãÇwD •‚Κ÷°a%ü‘ü믱ýûSFö6,èèQxþ&±|ìXÀðá{!ä„üP<£E¤Ç )pî¸Fy¡>”{jwRX €‹0&.ZH-l’¢}|æÉŠÀDIàí¿C!&)bø“/jØ+°†Y s±¥Qµ@èeii <¢2áŸVâÏ«¥§¬øXƒJùÖX œ©2j9µ¢¢²êõ8mZ„Ä7h]/$Äó_Ú ªíñ”v Ct’"Pùbœµì’²•Ú6ÀMþ{ôNŸ#·a$ƒR1û¹u7l4ùewЀ-~ýw™ï5rKË-&ä.Œ?àj„lèšd?…wu¯ððpÞÿ…÷'§¸U²;§Ð : ò|É»Øþd£¦ºŠV^’ cpi}’‰r¬íá€;»b-Xߨm°×öÖÆ|7å—ëõÔ ª*iPrªç=Ãskâ,NÄZí¼¿;ÒLÉñÞ– ­í.êÛr]”#ÌE™ï|{Sœ‰¢ÕuÙgåþ„¨ãí]È·ÙÚ;4.f çš›———•æô°'iy b+Mœ–1æ%ý&5m»“Ö[ݵ^žž 2Ã!\ë'ˆg)×ê^»´¾iØRûÇ…ú¥ZM‡ìZÔ^7¿ühˆî%±CBâ¢h$¢ˆµk×JII3fí•€MJ6?*ݬS*¯CÙcTfÌØeøaEâÔÔÝFüß™sZJpF0zÌÌÌ Îü”¤”³@LRD‚¨$.]/G}Ë#_ùÝð¿)œÜx¸SâúÁ…ŽŽŽBja’È»òÈù¡a‚Fy £Å@OÔï#§Lœô÷”©ÐÆíÛ[YYYXX Öéééikk«««Ï™-5uÒ_cG†œÀk~>\H-´ ª‹Õ­ŸÓAKíÔV8Xªv\K9!xë÷j`)**Ñä š:dˆoß¾6 ­ÿŽfß°Òa/äœ ÊÊEEEð˜æŠ·E%)p¦*Y“Û¡"h>T#s¤á UÍûÀP¼}¼á ôâ2Aüè¹(70àÚ¨¨ûã¢ïý+Q‚äþ8ïË£.È ä­žxþì\tC’Ovhª@RH$’HªêO`(QßúS–Õ â)0ÂÕyyyQüÀûÙY^|J’"ÞY+© å”–å––³ó†b‰£¦H­¹úÃ&½~ËoO½hñ$¯¤˜Jk‡³ ïO¸qNé-oû=çaø2†(þäÒÂ`ÝvØZ š9wÄŸtUWUP 3ãžé©DØ QÝl|ÄïÑNÒÓãQz»íïÊ“l&zë0jDÝ«««ÊKÈ©‘!†§ÃíÎÞÝjqÔYuk‘çé8ã½Oîɧ[v×Vzf´7Ñæ@„î.Ç{òÖGâ]îC•éuçö\‘”°°0oooGKó;“þ¡’¶Tž,ˆYá8Úüöfú*À& dC$…kFFG,õññ173{¤£ÓÐØXWßÐúîEë»fæl”÷¯ZߨÀFCC")ƒîÉÒÇÏ™3gÒ¤I#FŒXzÚm½f!È­"Y­"¹‡Å µK@˜ä…É\J·ë—øY$ì9ÀÀh”2]¨~\£hÚ•àg¢­#­ .kœX vTFíè\ÕóšuÿàŒ{û§ÝSšv_iê]¥©÷÷Oy°òƒ}“T÷OTUšð`ÿD m®Õ‰ŸŸZèƒü1Ð’PYÙ9þAÏx?''’-=]ÝÆ ûuè¥K—nܸqõêÕ+W®Àö… Îqà÷á#~<r‚L?^H-.öÆ“ÿšhxgó¼™:KK!øZ ÏS ÉW¯†,\¼`AøåËp###Ñ´ýp`#äÂ…™g $\º‘*µ3zRXn‚mz´¥¹¹ùžÚ]Ô‡#êY‹ò³¹°iȉ¥_ƒ_òU›ü‡G>ì:»á/{m JåÏND7$)Ð耡 YÃbhùrüùièçÑÒ‘³F¯ª6 ‰}÷ïRüså,Þ»Ã;FX†ÛÂm èÜÁ"""àoll¬ &wПœ«‚t•vÜŸUtj!)!;)8=Ú3ÖÛ4Øîv´ãµhƒÝOU·†i{æÌú.·z¥ +.;105Ò=ÞÇ8Ôîz”Ãõx“=ª;Âís7»æx?ÒîbŒÑ^7õm¡ú§‚íùêêí|p+KIIA_)òt³¶¸ýcf¤Üó@ië{}m-tyúxì‚ ‚ ^úÙKÝÜÜD}uìéÉgÝ6bKÁƱc™_ˆþù矱Yù o•*yµHþõüµL)X§Âä/ÛµøOhâ´´×c`ðH ……v>ñ§Q9Á÷pAÍòC“¦tnÅðhˆ‹‹CŸˆd½'DŸT@†ÄÄDÈGñ};ñÙob]ªÅÓÙ*íy\çj¡B¥>yÈúÞayyyqqqQ €÷1]ìá‚|Ä"ùÓÙÕIUý5¾¯vç¾ú]+ Aë £HGIIqvvVRR|xø3÷'OìlmÍŸ<±õðpö‹‹NKK!“ó¨Ôr‚1Õâù³³ÐûZÁ—ãÏÞDRºÃYÃþäºkÓieÅ”ü̬8R¼_r„GŠ·^N¦À¥½B´æ³(WeEEYa)9½03.5Â##>(ÚþV9td‚.ÿÄçÌ ‹¬TþŸNèAí¼¡ <ì ˜rµ¸õ¿§†s#‚,!2!‘Hœ@U!>!ŽˆÄ³4;;ÛÎÎîqì8`Ë›6X[[sÍÞm×RxdÃ\]]ýäÉ“***ç˜_Ðñ9÷ÐóŒ†ëiu—SªOU4\Îi¹]Òñºfà{ÃÐÿŽiƒ{pFF<ñ¹§¥í¸ƒ@RJYè& kù,ZJ Ñ›,Åþì‰Z¾ö¦ º;œ5ìÏÎnï]¡åK³´ë´`ôVI)a¡75¬ET-%„èM–böD-_Ž?{SPÝÎögg·÷®Ðò¥YÚuZ0z+€¤³Ð›šÖ"ª–bBô&K±?{¢–/ÇŸ½)¨îg û³³€Û{WhùÒ,í:-½@RÐ$‚ÞÔ°Qµ¢7YŠýÙµ|9þìMAuw8kØŸÜÞ»BË—fi×iÁè­’RÈ‚q×5¬¥j)$ħ©CoÒ‚ýÙ¹Z¾&u=¬ ÷hégíÓXúi´t~-ØÒÞjéç w1z"€¤°ÀhïÛô¬¥{j) Do²û³'jù¢üÙkÐMÎZ¯A7ñç'Ђ-í­–~ÎöƒÑ3Á&)]Ïðbô<IùÜUÀÀÀÀÀÀÀÀÀÀÀÀø@R>ÁxZ Œ/Ÿ;àÅèy’rIÍ ,ÝV5ÞÏ^1,X°`Á‚ –®ÖÖVLR°`é¶Â`Mi$ )hNâg¯',X°`Á‚Kg oØ$¥«–tÈ£€´›mÔžôn+]ä b°[%îIÁ‚ ,X°|!Âh[t®KIŠ ¥“ °)¢$­;Á$£»—¤põ§`’‚ÑÍ!IéêžDLZ?îL!æ)Ÿ†n÷“Cdð’”ø,ýPï »3Eȉó\$eôÞôÒÊWÒÊṲּ̀¿/câþ̦–w3Ž‘`!^ôÚ7|{RÖ^#Ð.†î;Vp’”—ó ä 7ÈE´—l’Ò¹Àøb¯¥®öí— LR0000z"¸HÊ ˆGRüSÊ „ài‚ÆzµrÌ'îLDR6Ýί®cX Bc¼Þv¿#33Ššaû(A$%¯¬Å" jǃB4c…MRÆ)fCQuªxùú='Ir¼ðµÔuÀ¾ý’I FO'Iáe(\ó8‰óK(@4¸òüu0õ°)Se¢É)ˆáÀKg ¾–ºÔ·˜¤|±À$£'¢›ÔÂKL8…ogŠð䢋¤ƒå‰‹wN\¼-|:–^,¢^KGÏ^?uõAUFŒ+PËÒí“ùJÛÚÓÚ'^$ߊDR´µµá'VDÜ> ôõõ 2ÉäÔÔÔòòò.ªÀ—LR0000z"º IáìF$Žjô8’²e÷þ3f=wCP†–._´d¹ðéXzÀ…Á•Â÷ZZ´dßå,tûÊÌ_¸|õú.ªž¨Wàu-Óõ›¶Á†¤¤$g­ qùªu^½kÆ›¶ïµòŽÞ·¼7ºÕ«WóõmFFÆâÅ‹7oÞÜÙÁò¬Y³Tó¦ÓéôGÉÈÈ@fΜ çÏŸßEuø¢€I FODO!)ÀPzI1u Ÿ5köl)iölüE 1Iéõ‚âaξג¾C€ŽÈʵ²_ËÒý´ö‰ï>$妶ÅÌY³TŸØ~*’ jìfÙ-;…÷-ïŽD"¥³°uëVÈŸ˜˜ˆ~VVV~’råʨƵk× ªªª’““»¨_0IÁÀÀÀè‰i ÏO0'ñ^AÙzIQ¹®¾tåšý'ÎCàqßО®aî²bÍú92óö:¹`Ñv(((K¯ö{{v q¯ÜZ¹-ÙÂ3š‚HÊu-ÓÅËV®Z'×J‡è}óNÅ wuþ³DËÒí‘׺[¥çÌ…Ìj&OP¸Æ€;Ì•™¿e—ÒCk”(è T3q‚çÌ•Y¸xé¥z¼u[½~ã¦í{Ñ6Iá[ßêq™À÷À{Á!ˆ ã[^’ÂÆž={ 3•Je§ ’âéé¹nݺmÛ¶ÅÅÅ¡ô]»v?~ÜÁÁaÅŠ@jRRRddd sTTÊ,cÓ¦M .TVV¢¡yyù ÀÞå˗󒔌Œ p¬¬luu5o ¹ô“:tèÐüùóW®\ùàÁ:޲ÉÉÉ]¸pmCµ¡œ‡ÛÛÛ¯Zµ T{{{‹ç÷h`’‚Ñwoâ/rJ—®îÅ^mXø2”nNRV®•=qñ„XÿìÚŒ¾låZÉÎÜPß{ø”¤äLv(((K¯ÎñE(E ’„bÙªµpÁÀ®m{þ›>W查Ëw8`Á" 1ko=²A¾_äQ<¢ì掮ÍìÙR;£]À€ ` ×4Œá/WÅŒC@û¡Ó—ÑO’Â[˜Ã·zœ&è;𭀉K(è=xò’¾•¤¡Ø¸qãõë×a—ŠŠ ;¨Áš5k._¾ eÙ²eÀ üüü€€_@üâæÍ›Àn‚‚‚¤¥¥Ïž=‹„lÀe,--¤Ìœ9“—¤xxx€¢Û·oó­!§ÞÔÔTÐ$8Ë­[·à(ø‹²AÉŠŠŠhê¿}ûvÎÃwîÜyåʕٳg/]ºTÔ8¿G“ ŒžDR h´ÚæÆ–×ðolyC«m”ì²úôâÚ䂚ØÜªýYzEW̱'BP`ùÐÚÂräÞÿ6mÚÔÐаnÝ:„+++% H僰N§ÃÕyóæ‰KŠÃ½233‘&==]йvíZuuµ¼\!g žÆ3õôôôúHC¤Œ5JÜ t²CaõÍÑÈP¤BÈ@ÄuDÊÆÕ;µ~ª;£æXN›9ÏËÛg”i8~=2^Á‚U÷¼¸äÔ-K‹2I® Z<‡õ°Õp/F‡Á!Ÿ•¼òÞ,ìaðñ=űjK\ý×ÞX8"$ÜÃ×ü‚öjöÀ” ;†ûâjhDŒ| ¯´?äHÝÇ0tx“jÇB¤«ÙQ¬žÙ-hTÀÇ×ß/ Û¶§ïýD8܈<>#ãžÂòðððºÏÙ³g!ÒÒÒ¢££q*½³Èɹ×DÒraŠ"åĉH“œœ,Å@b F¨y¹{öì§P%8½yó¦AS¤HÙ7oÞŒô‡¶ØÇðP¤BÈ@ÄED 4H{{‡öáš:EѱÜýÁeøT/Æ¿úꌹ8^™>ÇÍÍ-bì\‚‘{ÿ"†(\Aµxë¡8¹[#}ÿDÊ¢´mÈõ›¤¦¦’×lEdRò*tT˜"E»þáHñog/F‚°¨qfË8xñ¸*N¡PÜÜÜE=aÇÛÇwü¤5;ŠÕÛ+)ŠøÃábżjmÛck‘’››‹\©©©¦¦:„HèˆÎÎN˜"â‘+W®D¢‘r‘¢Óé jïÞ½+bÔDŠ<«W¯§¡¡¡Ð&mmm£Hy饗hhhðôôT)óæÍ“DÍ "…B"® R¶¯? ""¸$…vÛöØZ¤466BS>‚ÅT¤ˆøââb„###­ñù)„2q‘"cŒìz)ØI¤¤¤¤üñì_^EÇòÅ—¦M~õuÓ1ö^l˜òúœ¥nnîÃ<úè£ÿë_ÿzòÉ'ÿñXRE‘rëÖ­?ýéO?ýéO3224òÚÕ±ä1¨ŽÞ—–®{Ïae¥fd[®PöÚY¤¸>vÝ›Òõ¡H!„ˆëˆ”žÞtJŠHÙ¿PP™™™‘‘‘O=õÂeeebØ©S§~ñ‹_<ýôÓbO‘å…^عsç³Ï>{òäÉžû"åŸÿüç¸qãòòò$‘‚À/ùË£G"PPPðüóÏ{{{gggKFpi ;–<\ç`_²kÛf‘‚]aa¡³ká4(R!d â:"EÈ( !IÌF|iˆ”ÖÖÖ¯~õ«ÿûß_}õÕ3gÎ|ík_knn^²d‰÷ÍRRRòÙgŸ¥¦¦Nžûì³öövü5¤óClû’ý`Ûf(R!d â:"Åš9)N„αìKöc ´íÆñhµ“ñ­[·nÙ²E#Á­[·®\¹ÒÜÜl§ 8 ŠBˆ¸ŽH±fNŠ(Îq}ûRXXØP%®^½Ú'ãò]È¿þõ¯MÍ®Y³¦Ÿµ·'j•W7bc“ï©i5ÜÝÝM·Gœ:uê¸qã,´£ñ™Úu×Åððp-oooOOO÷õõEp_øëççg§:8ŠBˆ¸ŽH±fNŠ¡H!¶B±/ÕÕÕÕ™0a¼ÇŠŠ qÚ'¿=>>~äÈ‘Š—à×Þ§¾¾¾ÿ7`4*¯†ðùMc¬ÿžšUÑ¢ñ™:E¤,Z´ÕX²d‰^¯ïì쬪ªzÿý÷íT§@‘B!W)‡åZ¢>)­/ζP¤[¡Ý—¦L™O²¥¥EŠ©©©IHHðõõ…[[ZZ*"˜>}ºŸŸ_HHHNNb¶mÛæéé9lذ¨¨¨’’3³ðŠGe ‡|ÆŒÙÙÙ£G† ÷x@@À¬Y³àÁŠ4ååå±±±þþþK—.E‰Ó¦M“òΟ??+++44 ª««÷î݋ʠªpÎ5j. ÍÏψˆˆ‹‹»xñb¯•WCz7ÑkÛÊ›K±zòjhˆq#û÷ïG @?~\­žòÏTˆ³F"Š ¨ø1Á‚ø˜p´\¤\½zÕÍÍ-::º««K^C³r¡¤Es¥¦¦¶··‹d111øÐEÕFúÚv…"…B"® RzîëíÃJEÊ€¥µý—¬¥­ÓY5‘è“HA`äÈ‘pOœ8/N£p2á"¿…ãzôèQá¾B&ÀÄï ×W¯×›™oR®‘D"ሆ‡‡'''#2%%yOŸ>íåå5gΑ&22iöíÛ·|ùrxì’÷‹¼'NDJT•™ÜKÞ\jÕ3«üóˆˆéô¥—^zñÅå­·yófX;|ø°b=Õ†{ÉÁ4^±†ŠSNNRJË…)Š”'N Mrr²‰éõ–Y¹{öì§ø”qzóæMƒ¦H±°)ì ‡{Bˆ«A‘â4DJdd¤à ÿrT4nÉ$Å!è¤ßœ)ׯɬ\öÞ%¨¤eV"R1qGg×̵%Ÿ´Ü{±US÷ÉÆ}ÕvªUŸDJnn.NSSSå)ׯ_«“&M1p°Ñ Í*ÎI1õ-:$Fjuvv¢Âû-++CdJJ ÂMMMèÒ–‹µškˆµÊ«Ñ§‰ófÍ¥V=³j@¡À3«õâAŠïï믿.¿‘yóæIž¼œþ‰Å*~L/ˆ\¹r¥Á(6)):S``àÝ»wEŒšH’gõêÕâ444-ÐÖÖf0ŠÈ4ðìR)ÚMaW(R!ÄÕè«HAXí HQC[¤tttdggã§yòäÉ•Aã½N"PÃO¬áÎÝöÝù×òÏép €SÄÛr>ú°ôÞ¤,¼d¯õ¯ú$RàZñD'9xð`]]ݱcÇjkkqýíÆ¸ŠKÒdö¹sç"ïùóç…KiJ¯"eï޽ț™™™——/ÝÇǧµµ=ÐßßßÛÛ{ùòåèÀϦHQ¬¹AÝ?ר¼C-[‚X±¹ÔªgV 1gûÇüî»ï"üÎ;ïH-€åââbÓVÈéŸHQ¬¡âÇ„f‡d@Þ¬¬¬7Þx‡âê^¸ ñŒÂó’)Š<‹Äü”ªªªÃ‡#ÍŒ3Ä%1ó·Áb*R,l »B‘B!®FÿÞ¤¨A‘¢ˆ†H6l˜ØzN 4ðÆðà ñn &hA'ý£©¹cϱkçoá@§"þc}ëŽ#W¥££³‘jSwU 0Ó³÷6¤¯«{Áñ‹ŠŠo à—ž={î+4¬›››pËËËEÊ’’ø‡HgÕÌl¯"6Ñ]Å€¨Å‹Ksrss!¥áôÂUFzôX)¯¶HQ¬¹AÝ?ר¼å(¶­Zs)VϬø æÏŸ/fô@/,\¸PšD&šÍ…Kr|ðZ­ú'Rk¨ö1mܸwçååµyófµ%ˆQó-[¶ >\óëå"œ9s-†4h´ÄÄD1wÆ`T²xÖÁBNNŽ|NŠ%MaWðé¯ „âTRRRæÌ™Óo‘Â7)ý@C¤ÀyØ·oßéÓ§…¢8hÜ`Á$µAò¤ß^ªOÝU¹4ã"¤c R¼"ii묩ûD:ººï‰”ήîYo—^¨¹³~oµýjÕ¿•âà655™Æ´µµ!Ržê¸Ûx;ýàÎ;"P__/ž­««ëì¼·$fôϤ¤¤¾Ú”×\k*oÐl[µæR¬žY5®­­5{³)9öHl×—žòÊ?&ÐÜÜÜÚÚÚ«5Ü‹N§«©©éõŒËÓà)'_ëÃaM¡ >ýk„BœŠØ’€oR‰%sRŠƒÆÚ“4fþ±!«º]Lœ¿v8Ý 2q^ðî¡f¯/=}ÁÒUpûÁÀZÎ:66Ö××7""b¨qa1&ÊeqdÛÚuCÆ…‹4>ý¿Bq*üãÏœ9Ã7)ŽÄr‘¢8hÜ’IjƒäI¿9ùùÄ÷— ®ÐX‚Xp©¶éµ•ÅvÝNe`‰tˬ¬,§,*ÛWÙ¶'OžDË8¦,ÇEš‚KBˆÓùë_ÿZ\\Ì7)ŽÄr‘¢8hÜÂIŠƒä‰5|ÒÒ!Úé6ž:³6F–HX°m3)„âtþö·¿Y/R¸qŸè«ó£8hÜÂI}ÃOt¤íÛv0C‘B!N‡"ÅñÐù!¶‚}É~°m3)„ât(Rb+Ø—ìÛv0C‘B!N‡"ÅñÐù!¶‚}É~°m3)„ât(Rb+Ø—ìÛv0C‘B!N‡"ÅñÐù!¶B»/u÷Ú»råJsss¿‹èììüàƒ/^¼bÅ X+***--í·5ÁÆñ4°Òˆ½lßS»~([·nݲe‹F‚[·nYÙQm E !„8ŠÇ3Øœb?ÔúR[[|N__ß¡C‡º»»ãoPPPÿŠ8zô(²/Y²¯^½Ú×½ö~¨ ééé'mØ'ßÜÜÔÍ,Fã{ªmÊBL[fĈ‰‰‰/^´Þ¬6aaaC•èÇ'Û'ÂÃÃQ´<¾½½]´£úùùÙ©}‚"…BœEŠã¡H!¶B­/%''ÃßKII©¯¯ïì쬬¬mÚ4yqp}G%”üáššš„„¸èˆ‘’¡”ùóçgee…††¢ˆêêê½{÷¢ÂH 7[;£ü.¶mÛæéé9lØ0ÜEII‰bKJï´ÛVnJ±ðºÇ0kÖ,8Þ¦uËÎÎ=z4ÔYËìÙ³¥ÿîw¿Óø˜åŠÀ³a„óòòÐþj·¯È”)SP\KK‹Ù‡"ÏkVmËïD÷ÀUÜ©\¤\½z5::º««K^C³rÕú-ú9ºŠ£Ú¨€iv´ºŠ>~ü¸ZS(B‘B!N‡"Åñ¸ H±|@¸M¦$[¡Ø—à²Âÿ\±b…<}[[|<8“ðý–-[†dø+.ÁG…?9vìX(ÄÏž=‘—.]‚/ŠSø®Ô‘‘‘p÷íÛ·|ùrwwwÅ•#½( bR¤0'yäÈ‘ð3Oœ8‡uþ*Nœ8qΜ9(nóäÉ““’’ÎÈÈÐÎ(¿ h8º¨îB¯×+¶¤éØ'¶53¥V””$8}ú´——nAºk4Wxxxrr2„†™HŽ¢áQk|L.\@Ú axìÒð¹¹sçŠ[ñöQ)ŠyM« …bùý"´Ì®]» R»‡è¨è<Š54-O'µ~ ËS§NaÔ}Æ4;ºÍ¢E‹<<pνîsöìY‘@ò|X­5äP¤BˆÓ¡Hq<"eÒ¤I㢯~~~‘‘‘"^q8pWÄmøj)5Fãk×émùo=±+Š} B¾"¼2Ì. ×qõêÕâ444>^[[›¡ï"¥¬¬LÌÍG¸©©)  "%77FRSSå ´EŠFF5‘,¯ž„åçMM)VãСCbX¾ÈЊᇯY³Æ ù1íØ±Cü-_XX(ÂòWTûˆËïâ‘+W®DODÊ»‡è¨wïÞ1j"E£Ax饗hhhÀ³NQ¤Ì›7O5B‘B!N‡"ÅñhˆüÂ~üñÇ7n”FA¨ z‡pˆˆˆ€9zô¨Ð#Š)5Fãk·äÿ“Äé¨õ%¸søpÑIà+¢G¡“,Y²=}@Œó¯ªª:|ø0ÒH’³¯"½ ÃÛÛ]A+ºÄbÐÎéûˆAŒ’‘ÆÆFø¨èŸ¬««;vìXmm­Á‘¢‘Qñ.æÎ‹¼çÏŸž­œ¡/AljJ±{÷îE‚ÌÌL|Å g|||ä¯9L[ßM8óøÆÁ“‡Ü3ÇM©}L555BOˆA_¿÷Þ{Ú¢œþ‰Ëïuƒd@Þ¬¬¬7Þx¢¢†uòäÉxˆáÞÅ(¹HÑh1ó%;;;>>mhú¤ñøCXúŸ…P¤BˆÓ¡Hq<½ÎIC°ºK3)Ç%èøÞƒ¨ Wè¢= œ"e@ Ö—:::Þyç1Û >üå—_®ò™3g `éææ–˜˜( Þë«H1ÿ¯ ç.+âÑÓä51Û'<¢¢¢ÄU¸¸÷ÒȨx%%%pS‡ÞŸunMÛš™’Wž|ll¬‰‹/–¦fÈEŠÈ…ïZDDDrrr}}½tUícñÝË\$$$ é<»Š”>ÝïÆqkQ›7oV ˆŽºeËôO©)L.R4 ýrrräsRP%dAü| ÖŠP¤BˆÓ¡Hq<"%::úÃ?ÄÏ:~[;;; êcï à!ÇàòåË)ÕDŠö€pŠ”A¯;Î×ÕÕ]¿~½[¶1üaµw –㢗₞“””ÔoSptÅK»fÔëõò¦PC»mÍLÉ«!v„1›ZZ/·¯Øäc²Þ/””ÆÚ %u:]MMM¯7«Ø ZòµA¤'>)Å­ÚàÓÿ_B!Nå¯ýë¹sç(RI¯sRÒÓÓáòmٲŠ>öÞ`ôÖ¯_«"—ZJµÑøÚÂ-éMœŽs—³Žõõõˆˆj\%X ¸zhpÁ¥Â‰åXù¤Â§ì#¶ƒii-7xëÖ­S§NQ¤8’^EJkkë¨Q£¼¼¼jjj•·´´dgg߸qWqIl¢§˜Ò 9_c@¸ÆHoŠ×Á¹Ž4º\aaaVVVŸw(P¤ hNž<‰ÎÙïìøôµ !„8ŠЫHâ $ƒâ ð777!¤UGékŒÆ×®1Ò›"Åu #m?ضƒŠBq5(R@ÿœŸFÙ p±¸%) š£ñ»U„+Žô&.iûÁ¶ÌP¤Bˆ«A‘âèü[Á¾d?ضƒŠBq5,)–)rèü[Á¾d?úô ãñðŽùÍ%„b!–ˆ¨Œkš-<(Rä¼BÇ’Øö%Ç@—•Bq.–‹ Ü)Räб$¶‚}É1P¤B!Î…"Åб$¶¢¯}©¨¨¨´´Ô~õyX¡H!„Bœ EŠpúXkÓÑ#)aaaC•¸zõ*WVí£qõ£Hqö“ƒB¼P¤8áXb=Š"¥®®®ÖÈ„ à{WTTˆÓŽŽNwûöí~úñ5BÇ©]¥H!„Bœ EŠPt, éÚ}iÊ”)p¼[ZZ¤˜øøø3fHáùóçgee…††ÆÆÆVWWïÝ»7$$$!!2G¤©©©Á©¯¯ïøñã¥qbÂHvvöèÑ£¡€ìvsEzߤx•"…Bq.)€"…ØŠ¾ŠÓá^Nœ8qΜ9H1yò䤤$„322 ÆÝÄ"Eí*E !„â\(R€¶c‰®««Óét}v³Èàî"¥±±1000 ààÁƒè“ÇŽ«­­5<¼"Eã*E !„â\(R€šc ÿ0==ÝÇÇÇÝÝ.œÃ;wŠ©Ê„(bW‘Š‹‹£¢¢Ä[†ààà‡x¸—6)„Bˆs¡HqjŽeJJ \Áµk×677766ÂQÄé¶mÛlêm‘‡ Ç Doljj²w)® E !„â\(R€¢cyýúuww÷áÇK¯NÜÜܼ½½¡Y ÷7§Àvüøq‘Lc'‹üüüˆˆˆ¸¸¸‹/ÚÀQ#®ç79ŠB!ĹP¤8EÇ‚bèСӧO7|ñÅY^^n¸¿9ÅäÉ“-Zäáá1băæNþþþcÇŽ]ºt),Ìž=ÛŽq=(RE !„â\(R€¢c™™™)Æz™FŠ]ö>øàƒQwŒ5JÌ/ñ555;Yܾ}[„ÇŒc½ŸF\ŠÇ@‘B!„8Š èX~øá‡¯¼òŠidxx8"««« ÎVÞ¼y3â>lÉNáF¬pЈëB‘â(R!„çB‘âK½^/TF{{»ˆùøã!@EŒ©î˜7o.ݼyÓ’,(Rb(RE !„â\(R€šcùöÛoCqÌ;W§ÓÕÖÖN›6 §»wïW¡;|}}³³³‹‹‹ŽŒŒ4X¶“…$R¶o߃ò€õ^q )Ž"…Bq.)@ͱìêêzçw|||ĶPûöí“®Š9)qqq¸äïï/&ª,ØÉB)ï¾û.ÒìÚµK°Æ#N„"Å1 ÷B!Ä©ôP¤ØmÇR¥¶¶V¾ã¼¤;ôz½|‡Gîd18¡Hq ¢ !„â\(RìJÿËA¸Í7éŠÇ †{B!Ä•¡H±’þ9–'Ož,,,ìk.òp£Ö— iÅ@ooïØØØsçÎõøMŒ p›W)R!„ׇ"ÅJøßob+4DJhhhUU¾tp¿úaÜ&F BŽ©]¥H!„B\Š+¡H!¶BC¤ˆõß@pp°§§gWWW||üŒ3²³³G]QQQSSÝáëë;~üøÒÒÒþ©­­MLLôóó IMM•о~ýúôéÓƒ‚‚’““£XH&²çäähDªdVż–0ô>jíììç.!„Bz"ÅJ(Rˆ­Ð)ðÞáxOž 'ÆŒR¼¿¿vv¶N§;wîœbq---HpãÆ \Å¥iÓ¦!¯b¤ZAfõQÌk!\‚˜BèP¤X‰öÞsçΕbÄ(—_|Ñr_‹ *ú-R@qqqTT”xƒ¬8Ü«W#gΜ 77·ÄÄÄÛ·oKñ¡¡¡Âø”)S‹ƒ”@^dtwwŸ8qbyy¹Á¨žä‘™)/żÖC‘B!„¸>)V¢-R†.Ʊ€ &P¤ ¬+Ǿ©©ÉÊjÔ××KÖ½^ßÜüÀ³B^2"Ò,£b¤FA–䵊B!Äõ¡H± ‘2nÜ8¨’‚‚ƒqc__ßQ£FÅÆÆŠŠ;M˜íQ^^ŽôþþþK—.>}º4â¥×M1È@„CE !„âúP¤X‰†HY³f··÷¼yópºyóæÙ³gGFFŠ7)j;M˜íô8Ý·oßòåËÝÝÝÃÂÂ4ò’EŠc H!„B\Š+Ñ)ééé³fÍ‚Êhoo;vl^^ž$RÔ6¶0Ý'"ÅtU%(!R,Ùƒ D(RE !„âúP¤X‰¶H«­nÛ¶ÍÇǧµµU)j;M˜NÞ¿?Òlß¾]œJ"Å’M1È@„"Å1P¤B!®EŠ•h‹”»wï 5ñÆo R)j;M˜Š”²²2¤IIIA¸©©) @ˆK6Å ŠÇ@‘B!„¸>)V¢-Rxíµ× )Ž=j0)j[˜Š”®®.ooïåË—ÇÅÅùúú†‡‡kä%ŠÇ@‘B!„¸>)VÒ«H)//ßµkWkk«ÁD¤T6¶0Û·"77wôèÑaaaÐ#¸£‘— t(RE !ÚܼyS¯×ÛÊZWWW[[›­¬YH{{{gg§åñ„„"ÅJ¬t,µ7¶¨««ÃãÔ`T%Ð#III–ç%ŠÇ@‘B\„íÛ·ãÙ.ÖÖÖâ‡Õ†ö³²²6Ù¶mÛ| ÓézÍÒÚÚ8dÈ'žxââÅ‹ÙÙÙEEÖ~_233ÿó?ÿÓ,òСCùùùf‘{÷î­¨¨°Äf¯óññ™;w®åñ„„"ÅJìêXÆÆÆúúúFDD@¡à/‡u=ÜP¤8Šâ"üä'?Y¼x±túþûï?ùä“6´ÿ«_ýêç?ÿùĉGŽù³Ÿýì±ÇKMMÕÎ’››kZ‡˜˜˜•+WZY E‘²jÕ*è Ó—·nÝB ¯\¹b‰Í^+F‘BÈCEŠ•ØÕ±lll,,,ÌÊʪ©©±SÄuÐ:(†öy{{C·ž;w®Æ;::ãmbÜÕÀíh\¥H!.‚DÊôéÓ¥Ó·ß~û‘Gy÷Ýw5²À÷õõµaºUDŠN§û·û·C‡I1iiix ÙªPŠB(R¬„ÿý&¶BC¤„††VUUáK÷;!!¡¯–ãããGŽ©xÉzã.ˆ]jW)Rˆ‹ !RNœ8ßþÇ?þñÍ›7E$áááˆ|öÙgóòòDdllìªU«ðÍEü;wL훉0zôèçŸ^Íd·¾õ­¯~õ«Ï<óÌÆ…ñ5kÖH¥¦¦.\¸U6lØéÓ§5j k/¼ðê )¹bbb¤S777Q(JñòòúÎw¾ãïï/•bv›¦SL12gΜÄÄÄï~÷»C† ÉÊÊ’â%‘¢XsÅ–'„8Š+¡H!¶BC¤DFFŠppp°§§gWWWmm-~ýüüà à7º½½]$(--…K âsrr³mÛ6dSURRb‰qˆš3fdggÃ¥©¨¨P+ëúõë(+000(((991555ð"|}}Çš¨UI-R­ ³ú(æ5eè}ÔÚÙÙÏ]Bî¡!Rð……OŽ/#¾S­­­"N8¾ pÑ×®]ûÜsωHxÝ?þø’%KðÕ0›.)+W®üò—¿ÜÑÑ¡hí“O>ùío‹‡œóæææî]z„¿ÿýïO›6­¬¬LìÛ¥Q+±1ñ•+W®]»6jÔ(E‘²ÿþÇ{¬¾¾aTᆆ„wïÞ]\\ÜÒÒ‚ÇHtt´âmšVL-ýO<±bÅ <ô&Mšôío[ܵiFÅš+¶))I„oݺ…ú|øá‡¦ÕZ@Þò„gA‘b%)ÄVhˆ”aÆùúúÂå5jÔåË—óòò^ºt)®â[ Ç^¼A2á €p1b„b¡rã"?ÓBѨ•Ƀø9sæH¦ U³iÓ¦†††uëÖ!\YY©X%ÅHµ‚Ìê£v¦P¤Á3Ï<3þ|étÿþý-" '_/}éK3g΄¦@ ¾ pªÝÝÝ=îSPPЭ9ÉB.R „¯fM[¤HámÛ¶=ñÄjvðp@d]]H¬&Rª‡J⋌ZíÛ·OD"€oî Fþë¿þK^ºÙ©%éüñÕ«W›Æ«µ€¼å !΂"ÅJ(Rˆ­Ð)ÁÁÁø!>}ú4~4“‘‘å={öˆS§NÅéÍ›7Æï,ã4..N(Co"Å̸áÁýzÔÊz÷Ýw€û!™)ñ[ïu±ƒb•ä‘7e¶¢AS8Ü‹  Г¥ÓÍ›7ãëcšàرcð®ÓÒÒ†ä‡Sm:Ó\`¹Hikkƒxíµ×4¬õU¤(Ú¹qãÆ£>*Þ\tkŠ”²²2d_¿~ýw¾ó±—JEEBnn.Âï¼óN¯"Å’ô:¥ ¦ñj- 0myBˆ³ H±Šb+,™“"ÈÉɾzõjqêîxqÚØØˆ}$˜4i’ˆH/¤X¨Ü¸áAQ V–ˆ_¸p¡” ~bRSSå¥È«$Ô¸)3‘¢fP‚çÉ€`ñâÅ_ÿúס廎½¯¯¯4Béøñãííí]]]â;%"ýüüFŒDº{÷.¾Ý–‰”æææ¢¢¢   ˆ1ïCÍZ_EŠš_þò—±±±z½w÷‹_üBM¤€ÿþïÿþÊW¾òꫯŠÓ'N@tTWW£A`Aʨ&R4Òûûû×××wtt ¿ýíoË›K±æŠ-Oq )V¢!Rº›sݹsÇÂæí+Ú߸q#>,k ¯›âÈb[,)øés4ªªª>ŒÓ3f ¾¥¥%;;?Öøµ ˜6mšHe¤9þ¼$d4Œje‰x¸(Q§Ó;w…¢ÜƒÖÕÕ;v ýS±JŠ‘j™ÕGíMáÄd@íõÈ#üä'?§o“´ÏûÓO? šbÔ¨Qb{·QÈŒ1â‹_üâ!C¾ûÝïâ+ÖÝ›HñG}*Jáw¿ûðÃ5¬õC¤(Úyÿý÷ÿýßÿ‘Ï=÷Üš5k4DÊÚµkQÉS§NI1aaa=öØ~ðüxA\ˆ¹ðýÔÒÇÄÄüô§?E=üñ#GŽÈ3*Ö\±å !N"ÅJÔËôôôàà`wwwøK/¿ü²…-l9–Û—ÿÚL·ÕèŸ5’’’PgÔßV,)àÌ™3!!!hI77·ÄÄÄÛ·oŒï‰tŒ‰'–——‹Ä%%%°€ÄYYY–7ûÄËñ¡¡¡âµÅ”)SS\\ §KÄ ž={V±JjõT+È´>jy-‡"…¸·nÝ***’fpH4‘§ojjúøãmUº­¬Éí´··÷Û2ÚD¬Tv×H?Òß¹s§µµµ««ëúõëb¾žå5WkyBˆƒ¡H±EDz¶¶Ô¢E‹ð”ÆO™oCúd¿Ãl[ N'¹‹V‚OOOooo±|¥Ml>4ôcè`}}½üåbð +O,þIÛïê)–%Ì67?ð AéøÝïµJjõT+È’¼–@‘B!„¸>)V¢èXž:ujèС¯¿þº™¯µdÉ’qãÆÌš5«ªª 1iiiQQQÒ†ò÷ZÕ8È_q¿‰^í+æ2)Š Ìv»o«!v©‰µw²ÈÏψˆˆ‹‹»xñ¢bÚ¹sgttôªU«Pÿ¢¢")¾×/œßä(R!„ׇ"ÅJËŽŽøêðá.]º$ŧ¤¤À?}ú´———X»µ  É UDäÊÊÊRÛoBÛ¾Z.I¤(&ïv!ßVC² ½“…¿¿ÿرc—.]ŠøÙ³g+v¡ &lݺµ¢¢i,X Å÷ºóÅ`€"Å1P¤B!®EŠ•¨9–Ó¦Mƒ+ÿßìÕ<h1ž r#00¢z¡¼¼⥩©Iq¿‰^í«å’$†bùnÙŠµ’í,p*F…!>>b˜P·;_ (RE !„âúP¤X‰öê^;vìððð€ga÷;---::J‘’ HIIç_XX¸|ùòY³fÔ÷›Ð¶¯–K’Š ä»]ÔEŠ…;Y„‘WxÕªUbM Þegg‹K½î|1 Hq )„BˆëC‘b%½:– .„ï——wèÐ!àçwvvN™2ER¥¥¥ˆŸ7oüüãÇ4÷›Ð°¯–K’Š ä»]dÛjH,ÜÉBQ¤à®a*l¥‘+V oBB‚”@{ç‹ÁEŠc H!„B\Š+Qt,KJJ²²²®_¿þÑGEEE¹¹¹UWWïÝ»W¼³€ €»îããÓÚÚ*ÒÃ¥Gš€€1]q¿‰^í«å’äƒbùnÙ¶’ w²P)Òø.Abb"jŽš(î|±}ûv//¯Ý»wËv×EŠc H!„B\Š+Qt,÷ïß/¶Š€þâ‹/ŠñQðÀcccň¦Å‹‹·'"ý† púÖ[oIäûMôj_-—©|PL ßíÂl[ S –ìd¡(R’’’æÏŸo#dNzzºâÎbÚ®]»ä »ë€ƒ"Å1 Å³‹EŠ]Qs,ÛÚÚÄ{ ³xiƒøúúziý^5äûMôj_;—FùnÛjX²“E_±f狇ŠÇ Ú™b[èB,„"Å1б$¶ÂÕúRQQÑC¹4E !ö€þ!ÄB(Rƒ«9–dà¢Ý—’’’Äè8»Ö¡££C ›áX ¡4®R¤bèERRRþøÇ?:»ĵ Hq )ÄVhô¥;wîxzzz{{‡……©Á³žøøx±}@§ÓIsŽb‚•ÚUŠE¾üå/¯]»V:}úé§[ZZœX2à ?0¨HHHX¼x±t òÃþðïÿ»<å7¿ùͦ¦&V (RE ±}içÎÑÑÑ«V­‚ï]TT$Å—––NŸ>ÝÏÏ/$$DÚ3T1²¦¦¿)¾¾¾ãÇ—qA•̘1#;;{ôèÑ+V¬€6lXTTTII‰tU¤¬­­MLL6SSS¥éT"M~~~DDD\\ÜÅ‹5êà0†ÞGñ*EŠ"=öØ×¿þõ[·n‰SŠÒWè *Š‹‹Ÿzê©Ï>ûLœnß¾}Ú´iŠ))RˆŠÇ@‘Bl…F_š0aÂÖ­[+**àx/X°@Ї.€:€"8zô¨$=ä‘ð6GŽsâÄ‰ØØX‡®®.ƒq@—XS:99ùÔ©S*PbAi¸W[[²àä̲eËPüe!¿¿ÿرc—.]ŠøÙ³gkTÌa 5A~•"E‘¯|å+3gÎħ,¼I¤L™2ÅÃÃã¿øEff¦Hù /û¬H —còäÉHœ’’òío;77÷ÿøtÊ•+W„‚þùé§Ÿ>ù䓈Gú7nüùÏvâ­Ç@`°'@||<øâ‹ÿo(>1„Hyä‘GÄ£àøñã¾¾¾=F¥#bÁEŠc ÃCl…šHYµjžçIF"""àxggg‹KÁÁÁbóü(¨EfddàÔÃÃÃë>ò=t ê"Ed—¶ã™:u*NoÞ¼iPßG±bƒÃ½úD þž:uê?þã?à3H"åþç𠦦¦Š=F—> èøÄEä°aÃNžbD^¾|ùK_úÒ¿þõ¯M‘ÒÚÚúo|ãÂ… ¦–?ýôÓþóŸ½â è BðˆxòÉ'ñÈ•N5žßúÖ·ÄàOü¨ ‘¢øÄ ƒŠÇ@‘Bl…b_JJJš?¾iŒ ééé!!!,îîî'N,//7õˆ<GEE‰W ÁÁÁŠÃ½JJJ"##‘ ++Ëìê™3g`—`*IZšXQ¤¨ÕÁE HQD)=Æo>òÈ#)]]]?ûÙÏžþy|Ž¿úÕ¯~ÿûß÷hŠòòò¾ÿýï{yy¡·ˆtƒÓ§O;á–ˆc¡?0ùË_þ•±aÃqªýÄxë­·~øÃ>÷Üsb ³È"bÁEŠc H!¶¢}©­­ ¢À’HƒQ>àÇBÛ ^¯ïVÙŠ¥¾¾^¼déwÅ\Š”¾ò§?ý©Ç8Ô\¬ÌÓ+Ÿ}öY{{»´6)$Ð '†â|b B(RE ±ìKŽ"…{@€b!)ŽAñDóÖÖÖÞ¹sÇvî•ÍØºuë–-[œ] gÒÚþÀÒ¸-m½fAš¦æ»Õˆ"ÅA Å³‹¶=zîûeq§Ên¿½§jõÎÊ®înàôdÙmµô×uÍK3.¦î¬X³«rÖÚ’’Ê{ÔŠ"Å1ðM !„â\(R€¢cY[[ y²hÑ¢öööºº:1IÙ¶Àù‡døýï/Ní-Rîܹãéééíí\jÔêé‚"eCVuGgwÎÉU×ïâ@§ë³ªwuuÏM¿pêÂ禳«Ûì-Œ­ Hq )„BˆsÁÏqEŠQt,O:Éðú믛Í2^²dɸqãfÍšUUU…˜´´´¨¨¨šš‘à^«.\ˆb|}}Ç_ZZ*ÿ,àü‹Õ0òóó ŠH¤ÄÄD??¿ÔÔT%‘åâÅ‹±±±þþþ¨„ƒ$Rz- ìܹ3::zÕªU(¥¨¨HŠGúéÓ§‹²rrrë)‰”øøøùóçgee…††¢&ÕÕÕ{÷îEF”)§ÖD ¼¼\Ô|éÒ¥(NZÒÖ’š+r¦\¿&³rÙ{—Öî®Â@Zf%"—_iL\y®£Óî;§S¤8ŠB!ĹðMŠPt,;::ÄÎàpž/]º$ŧ¤¤@Sœ>}úbΜ9†ûâRE$@.øð---#GŽŒ‰‰9qâœs¸ñ]]æ2œxì#FŒnll”D dÒÃÉÏÎÎ^¶l"ñWdAøó»ví‚pww"Å’²À„ ¶nÝZQQƒ ,âãââPg„£Gª‰)I¤ 8qâDÜ;ì ãäÉ“Å(²ŒŒ µ&‘‘‘ÐAûöí[¾|y_k®Æ»í»ó¯åŸÓá@§j)ӥÜr¿¡Hq )„Bˆs¡HqjŽ%„ôiÓà~{zzš½bÐëõpªá`Œr~ûèÑ£á`———Ã3ojj:rä2nÚ´©¡¡aݺuWVVšÙ‡Ã¿víÚ¼¼<\7ož$RD ô‹Á8sj€qN'RŠìÒp/Kʪªª‚4€„QsioAØÇ]ÀþÔ‚™H E^()ŒŽŽF ¾¾ÞLø˜5Q]]ˆL}­¹MÍ{Ž]+8 ÒŒøõ­;Ž\•ŽŽÎîü¢›©»þO¤\¨i¼©oµ¼ Ë¡Hq )„Bˆs¡HqÚ«{íØ±ÃÃÃ9¼n¸ñiiiðÌ¡D9bÄ‘,%%vaaáòåËgÍš…˜ŒŒ Ä ×}ä³Z„HA`úôéH¼xñb!RDÞ={öˆdS§NÅéÍ›7!”À§&â%Wß’²Ä¾KIFÄ¢ììlq â(881qqq—/_–7‚™HA}D%Μ9öövI¤(6Ñþýû‘`ûöíý¨¹…—êSwUÞ› ¿«‡1P‰Hƒq ¯šºO¤£«»»¬úÎk+‹Û;>Wa›²kÔ†Y EŠc H!„Bœ EŠèÕ±\¸p!|é¼¼¼C‡‰qMS¦L‘DJii©xÇþøñãˆÉÍÍELjjª†YI¤@€@AˆÄ!R„Y½zµH ‰ÔÖÖñ+W®4µJ®~¯e¡¶!PO+¬X±¤ëׯ‡‘I“&)ÖÓr‘¢ØDeeeˆ„”C¸©©) Àšk°!«º]Lœ¿v8Ý 2q¾£³kö†²‚ó·Ä©‹ˆ”¢¢¢>MÃ!)„Bˆs¡HqŠŽeIIIVVÖõë×?ú裨¨(7771INuff& Ü~ŸÖÖÏG …‡‡# Üo1Én`` N‰hñŽÌ ´ô¶mÛ<==‡ WRRbPY®YÉÏψˆ€0¼xñ¢ˆ×Hœ ÁXQáˆåÎúÍÐû(^¥H!„Bœ EŠàdg ‡YÌÙÇ_ˇu ,ú=ÜK¾tuu5¤D@@”²ÚrÍ0âïï?vìØ¥K—¢mgÏžmP_Û‰ÅHÂäädi_×d¨ ò«)„Bˆs¡Hq) ±±±°°0++KÚõò¡¤"¥[e!h¨ iqµåšaBF Cx̘1Ú‰ƒ‚‚ä/]ŠB!Ä•±P¤ŒêÃÂC2N‘" H!¶¢ßoR‚6)jË5› 7bab‡Ã½!„WÆB‘ÒWƒŠE ±Ö¬î%_"ÊE„Õ–kV)–$vq8qžBqe,)þôS¤È¡H!¶BC¤¾OYY™ÁD2¨-=wî\8êçÏŸ+(.׬(R,Iìâp bB!Ä•¡Hq)ÄVhˆÓI'N4˜Hµ… KJJ"##‘>++Ë ²\³¢H±$ñ€†"…Bq.)€"…Ø kú’ÚBÐz½_sé´OË5?4k;›A‘B!„8Š@‘Blû’c H!„Bœ EŠÐp,ѼµµµÒÖ„6ÇÞönZÛ»LO[Ú:-Ï[ßÔ^oñÖó°ÜÔÜûvöŠGA‘B!„8—¾Š”¡*H?î)rÔËôôôàà`www4àË/¿lsGËÞö-')) u@}ú”KqÅ*‡qªìöÛ{ªVï¬ìêîÆNO–ݶ$oÓ'íÈ­Å€vÊëºæ¥SwV¬ÙU9kmIIeƒvzŠÇ@‘B!„8—~¼IÑP(†û"åöíÛ=)÷Qt,kkk!-ZÔÞÞ^WW'æÛ{Û·œ;wîxzzz{{‡……™Î}è犔 YÕÝ9'oT]¿‹œ®Ïª6MsSßz«¡Õ,cK[ç¶œðW ¨ÑÕÕ=7ý© Ÿ ŸÎ®n³w7r(RE !„â\ú7ÜKc³f$†Byûí·{(Rî£èXž:u ­÷ú믷µµ™Æ/Y²dܸq³fͪªªBLZZZTT”´‘ú½V]¸Ä$$$øúúŽ?¾´´ÔBûׯ_Ÿ>}z```PPPrr2bâããg̘‘=zô芊 E³Š‘"c~~~DDD\\ÜÅ‹ý½;wFGG¯Zµ õ)**’âa5ñóó ÉÉÉ‘g4)(kþüùYYY¡¡¡±±±ÕÕÕ{÷îEFÔ L­é@yy9Òûûû/]ºÅI«ïj·8S®_“Y¹ì½KkwWá@ -³‘¦iN–Ý>wùwí]›ß¯i¸ûù pŠHÅ–)¿Ò˜¸ò\Gg/ÂÄŠÇ@‘B!„8—~ÏIQÛ í·ó–C¡tuu!ËöíÛ)RzTDJGG|{´!œäK—.Iñ)))pûOŸ>íåå5g΃q¯p$ƒT ¾zKKËÈ‘#cbbNœ8'î:Ú¼Wû,aaažžž°väÈ‘={öŒZJ!<<š®»Ü¬ZYÈçìØ±ðÿQÐìÙ³ý½ &lݺòi,X ÅC× †GU” ¦"a«‰'¢M`'Ož,F‘edd¨5ˆŒŒÄÝíÛ·oùòåîîî¸}ƒqßíÖܹ۾;ÿZþ9îÜ5»e&Rºº»7í¯Y½³²ðR½ˆA§ˆìRz…tìœ.ug…b£©¾ÄÃ1‡“Ÿ„BÈàÆ¶ç+++#bã…Bé¡H¹Ú¿§M›7ªÁìU‚^¯‡ó GÚ`”ðÏG†-//‡ÞÔÔ‰Œ›6mjhhX·nÂhü^íÇǩäÀ Ä>€(aE³je!c@@ÀíÛ·Ex̘1ò{¬ªª‚4ÐétãŽ|||š›› Æý¸;TìÀŠÁ )¡¡¡È ƒÑÑÑÔ××› ³¦«««CñâÉ`ÜæCˆKZ45wì9v­àü-˜ÎmÏ:~}Ç‘««sIxÿÃÒ¥»-û ®‹ðþêîÞÏõ±¾)¥££³;¿èfê®ÿ)joêÍi`#-}+Íl"^ ˆÃ’‡!„Bˆm±¡H©¨¨X±bÅ‘…=÷ç¤P¤4†è ywìØáááÇÞ5Üõ´´4xàP"ˆ1b„H–’’Gº°°pùòå³fÍBLFFbÆë>гNÌì¿ûî»È•™™išÆt>E³je©mógʪU«|}}“Œˆ7;ÙÙÙâRAAApp0bâââ._¾,Ïk&R¦N*¨ÉÌ™3hoo—DŠbÓíß¿ Ð¥J ‘bIë^ªOÝUyoVû® ÆÀÿ½"ùèãOjê>9xêWo6KÕDJK['RJGWwwYõ×VKƒÁ6eט 'ÓÆ†"EÞ?)R!„âDl%R.]º…òÉ'Ÿ˜ÎI{L‘ÒcÁ>) .„Ïœ——wèÐ!1~©³³sÊ”)’H)--Eü¼yóà«?~1¹¹¹ˆIMMµÄ›•ìçä䘾Y˜j E³jeõ*Rp!PU+ ‡@+%$$H ׯ_ã“&M’W»O"E±éÊÊÊ ‰‡pSSS@@€)–´Þ†¬êv1qþÚ]àtÃçåsR ê"ENGg×ì eço‰S'ŠƒÉ;é”"…B!ÎÂ&"ER('Îý¿9))E‘RRR’••uýúõ>ú(**ÊÍÍMLo: (àÞûøø´¶~>þiàfÃ37ÝûÀÀ@œ|Xl˜‚; AÝÜÝÝ'NœX^^.wÂû$RÔš.77wôèÑaaaÐ#0cIë >i馻wOåilBSsGƒÅ;?J8fNŠAý»Ïƒþʇu \l²L®šñ…¯éG!„â:ˆµ¼Ä<yX¨•ÿ÷›õÖ;Q)N¤±±±°°0++KÚ ó¡Á®"ÅzË„B!®ÉÝÿ?ÅûÞ1 endstream endobj 7 0 obj 43004 endobj 5 0 obj <> stream xœí‰_GÞÿÿ(¹åTPäRGQQ|4ã…Šâ±!*4*Êc4‚aQ„à…TTŽH"+ dQ™Ùd“Íåï³Ôcÿ:}Ñ Ã ´Ÿ÷«_¾jª««¿]]õîêfœNÛw< .\¸Xn±B!„B!„B!„B!„B!„B!„B!„B!„B!dÌ ^ºtiûöí{öìiooÕ¶ÙÙÙyyyã!ä-gúôé3gΔ>8p`Ê”)×®]‹ŒŒœ¢ kæýõרJ¤ýüül6Û­[·ÔûW­ZuïÞ=×ëÿg``@3_Š„……­\¹²®®Î¸ª²²2NOO‡«Ñ£ »›7oÞˆQBˆèé½µµµy˜  çáÇâ# ¦™5¡ªY³f544`FŠU)))ê}AûØäĉ(ššêÚcý?’““g̘¡¹ †††âpîܹóÙgŸùûû{zzþƒ>À±ôöö:‰\ïQBˆèé]ÊY¼x1rž?®ØPªbbbD’ôññyùò¥b_IIIöá˜ÀK…›ššp-€KáºÚÚZ‘ ©âZ„‰ñš5k–/_.òããã7oÞ,Ò XeP ¸MÀ¾"""Š‹‹‘sìØ1æååScÜgΜÁ1þå/ÑÛEVVnUPµíß¿9ˆvîܹÁÁÁ W:ã˜%½«£RGN!£†C޾aéÒ¥cÔ;¦ñ………XµpáBõ¾ÛÚÚ²³³Q ''™¨³VðòåËð9l&. ÈHO:ab )*AAŠ4ä *K£££¡Ê²²2!䯯Æððpè·¼¼¼££C¡\ï˜Æ#NÜ’èíâþýûð3Ê 6¤Q,##骪*__ß 6Äl—é]•:rB0Œ···í âá³ÃzÇüNè,8…B•ÅÅÅòêJàÆˆˆaTékö555ˆÅpíPG(jÀ&ÑÑÑ[·níìì”ÖjÆ)×;öh³ÙÄ•íÛ·K>ЋY®wyTz‘BÈdNód‰ÞÞ^1û•ëÝ>ü%½ÿ¤®“adªKvttˆ¿íŽ=NÏž= \p2bÌzQéEN!–A¡wB!ÖàúõëUUUB!„B!„B!„B!„X‡Ï !„Lf ôþšBȤÅXïãsg0 ÒöçÂ… .,z^8zw÷B&%z^¥Þ !dR£çUêB&5z^¥Þ-À¯¿þzéÒ¥;v™ßê³Ï>ëè迨!®AÏ«’ÞÅk,¤ß6¯¬¬œ2eÊ7ß|ãb½GFF^¹rE û“O>Y³f ‹/ž=Œ··7âé¿ýíozù¢ªÐÐÐððð#GލÛD Z´hQII‰+Nƒ9D`aaaÉÉÉgÏžýý÷ß Ê߸qÅZZZšššÌï%>>þöíÛc–âfÌè>ÿý÷'¦Þ%,X ©bu>ªºvíÚüqÿþ}\¹›ˆ0'ôèååõâÅ §4µyRSS/_¾¬Î—Á777ÇÄÄdddÔ³wïÞìììÑî]Ò»^„I½ûúúBéååå ½§§§Ï;788¦mhhbº¸yóæ‚‚‚Y³fÙl¶ÆÆÆüü|L8SRRZ[[EL&ñÑßßÞ¼yµµµÈAå±±±‰ËôŽÄO?ýäçç'¯VQ ¿¿þoooùß~ûí²eË0«ß°aÃ?þ(eâXp/€ÖX¿~½ØˆãéwÞyí£W\ŠÛ4ã®]»ð177 >sæÌ¸¸¸ß~ûM˜ZòÉ“'z5ËõŽû´?n£p‚¤/Ҙ׻:HBÈǼޡÿ)Ã@ïçÎÏ[/^l^便¥HgffêíÚz—žk"ÈÈÈ€-Å·SZZZp3200 / ù{xxH3üeË–Éõ.eÿúë¯h˜S³Áo¿ývúôi4ïÏ?ÿüzØ«—.]Ò LÞ¸‚o1‡×«YÒ{[[üßÓÓózø»\ïŠ _ÿYïò0AB&8æõ>ýôSIïùùùH`¼c¢ KL:õÅ‹fôÞÝÝ‚I/¬ÛÚÚZQQ‰4þµÙlW¯^Pzõê ÇøzXnsçÎES¹}ÿý÷¢ðÌ™3ÑÐcYYÔ'={Ç%¯°°7p¬Ì©YÃ/¿üòôéS$ gl.27lØ ÷MÑÿú׿@ŠÙµ^l’Þkkk'.¸á†ëÔ©SzA¾–é] C3HBÈgTzùòebb¢Ð;, !‹Ôâ‰Í¦M›ÌèÀ±±±âJÞ¸qÃÌŸV]¯wPYY‰y¯øò$܈ƒ…TaH—(€»&¤‡V’ÏÞ±a`` Z%=÷P×UbŽÈÁeBl‹Â˜Kcò¬ Æ•¶bÅŠ‡J«4c“ôŽ«OJJ ÖâfÆFT?Ö RÒ»†f„ Έz7æÙ³g"Âá#–—ƒ DOOq™ ø¿VÿùÏ*žNà£xŒ/öþzø‹—˜÷š©á»ï¾Sü%™cMnF¤Ý¤: u„‰Ìõ>ÞL@½ Ð;!„¸=¯RïÐØØÈ¯…B&z^8z·ó¥\¸pá2úEÏ«DïÀÝ@B™”èIuâèBˆ¡Þ !Ä’Pï„bI¨wB±$Ô;!„X ëÝÉ&„W¡ç@êB&5zTè}hh¨½½ý«¯¾êííu‰ƒÇw79!„¸=JzïëëËÎοôîé鉧M›æB‚3ÅÜÝä„â ô(é}ëÖ­PzFFFggçàà`}}}QQ‘ÓŒì<’““¥ãî&'„W ç@¡÷ææføøxõ[PÖ®\¹2000"""33SúA`˜vóæÍ³fͲÙlùùù(“’’ÒÚÚj¾LSS>âÆaÞ¼yµµµÒ†«W¯.//ŽŽNHH¨««Cæ±cÇ|||¼¼¼bcckjjƒò«V­±#›`­æKî!Äzë]¼A{Ïž=ê}}}0gpppaaá®]»P ÿŠUÓ§O ILLܰaòáá… ®]»V¼¼Ïd™çÏŸc6Ž+ „ ÿc_/_¾Í™3gÇŽ(¼~ýzdâêŽ`àðŽŽäÀü¨’/++—é!înrBqÆz?}ú4”(½­IŽ0?kþÃ+ÔŠù³d`ÌÉ{{{q ðôôŒ‹‹C¢³³Sþ¦Ë\¸péC‡uuueee!]__/6ľž>}*Ò³gÏâB ½ïñàÒ€xŠŠŠDH"iüëî&'„W`¬wÌœáÕ ¨ `ŽUgΜ—.]ŠOž<±›{߈eDýXåû†7nˆ çÍ›'6ŒF­wPYY*ÞøàÁyäînrBqÆzooo‡`!I$Š‹‹‘ÿᇊ˜Šcޏ³ô^ZZŠtff¦b¿z‡Ïå%»»»<ˆJ’’’¨wBÈÛ†±Þ‘€Àœ綶¶²²²ôôôçÏŸwtt® çÏŸG™Õ«W›T·™2sHHHpppIIIkkkEEEss³Þ7n܈m«««q‰Ax………?F%¨aùòå(€l6ÛÕ«WÝÝä„â FÔûÀÀÀ'Ÿ|"¾÷–,YòâÅ ¬º~ýzDD2=<þ|ÆŒñññ—/_¶ÙlâIô¸páBÌÏqQ¿ùZ000€Pl|ÿþ}‘i\[TTÔÖ­[ °Õ¾}ûÄ&¨9f6Ä=‚‹ZB&z¿0™˜˜úøñcŸêêj¨«Ö¯_¿}ûv¬½pár:ÔÕÕ%žäÔ××Û‡½ŠË¬‹ô† /Í·%º»»—/_ŽU¨Y<ç1¨mÚ´iöáëBHHfãø½{÷|}}{zzÌl¨yŒ„2Õ¯DŠòê_˜Ü»w/l™””Ôßßb& m–––bmnn.Öb~îûõkR>Œ2çÏŸWïthhèäÉ“Ø÷°™Ú@FFŠÝ¼ys÷îÝâÎÂä†îøNBq2Žé]_QQsÿõ¯ÅGH>((9âmÚ<Ò™™™Š­ä^Ý´iÊ̱¥¿{š©Íá0!Ä2¸Xï„B\õN!–„z'„KB½Bˆ%¡Þ !Ä’Pï„bI¨wB±$Ôû„%mßq.\&þâî2!pûYÐ<#Ôû„§ÉU¿|(ßΑ¯¯/b(//·ÿùÔ§§§Ï;788xÍš5èrRU˜” b‚!^öJoÐÖŒA.j+W® Ć™™™âE!#Æ)×»ô–Üøøøø”••¡5`BÅŽäz¿rå š(,,ìÀÈÉÍÍţθ¸¸cÇŽIéß~û 1à:ûÞ{ïáØ7nÜøã?ŠJ>úè£ÒÒRy7øôÓO¯V”ç`GEEE":1Û°a‚?|øðÐÐÐ;#=â`Eo¿ývÙ²eAAA(#ö(Q© ˆjÑ…PMÑEqã””„!¿{÷î?þøC*¯yhš…Ÿ?¾víÚ4Ú¹sç4›Q3r¨gÕªUØãœ9s­fäÝÝÝè3ØzÝúõë¥bšl1äzWtì—/_š,{öìAa///Œ‚ššÅ(0ã8¡΢XBB‚xá¦Éa.ôŽSƒ2‘‘‘âmnf„ÎfÅNaÍfÔ L Ôƒ«*ÇñN:õñãÇêÈáytƒï¿ÿ¾¾¾L~U7²ÅPè]Þ±M\ ¡MÀU¿ÖÁ`Œ{zz.]ºTÃãÚä0—@þ¶mÛ¼½½Q¿Iw‰÷5ŒV·ãÄgïhp "/®¿ÅÅÅȹpá>:t¨««+++ iôyû›ghâô¡ ýqNÑz÷îÝÃXÃ0³¡úÔïß¿ÿâÅ‹âªê7l…Ó$Ý÷‰ûÇÞÞ^t<ô L,‘èììÄV[¶l1^Bì ýÍ>ü7eôI1K1N¹Þ1QÁôõ óÁƒ¨5à_½ƒþ†é‡HÙ—.]B=Szô!O£°4{Ä Y4û„†»ƒ…ÞÑ2"P]]ýzXà8„/^ Ìöövt†ãÇïܹS•^T«¸¡P³bÅ ô+“‡&Æå±áJ¾VÝŒzI@æ¨F|DWGSDþÃ?À0ƒø˜ššzþüyÍ&µ$r½+:¶ùÁ‚ö‚Õ7лñ0—†$ÎÒâ*€y»8ZÝŽÓ¿9sòäIôp´$Z@\ÝðÑ÷ š/¼ÃìÅnÞ¼‰©‘¸«2¹¡úÔ#©¶Ý¾}»8õhÜà´¢éÒ,ÊKýù¸ÍGS;é¼ëÅ ! HïDmÒë¿ã”ëó³gÏb6(z—šÏÞqŸ8¢Þ¥Â˜!$Í>põêUt`ƒ…Þ¥:1ùú믑øé§Ÿ„Þïܹƒ†J~ƒô¤EŠJ¯€ÁÃphg3.4—ôŒHïÐÔ…1ÃGoüÏþ#¯SÝŒzI xCúxàÀõë×+ªÂüD^F®wu#[¹ÞÛü`Qïê1n7Ô»ñ0Wpøðañ’h¤­ng<¾÷Ž¡–ÁE³$233Õ§IÞDµµµârŒ|ñàË䆊Uâԣψiƒ8õçÎ7bƒƒƒ‹/6¯w½$Ä;d?üðCñ“ô1ñ§óz—Q3¢ÞEB‘–F¿Ý»w¯fÀ0©««3È1¯÷––4îÈ»¢Ò+ §÷¶¶6qC÷zø¹‡¦Þ¥CÓ,Œ="6§æîD3ê&ñèÑ#Ôcþo€¯‡¹‹Ê«ÂôÆÃÃC<¥ùý÷ßq_ é]ÝÈÖCóÙûh Ú—½±£9ÆíÃz_´h˜lã¾Àa½ÃBâºã€‚Ô£Õí8Kï555#±±±èä¸Ï ÁXII î‘+**š››5›(** › ¤øƒ‹ù åÍ.N=øôÓO¥S{p$NŸ>Ë ºÍÔ©Sa!»‰ó®ƒnOÄS¸††Œblˆ!/ã˜Þ±›Í†™žb+c½ãŽòÈ‘#"SžFá?þø?þøî»ï’’’®_¿.ò!@\ìDš={¶|r«Î1¯÷ß~ûmîܹ8?ÿü3ò¿ÿþ{ETzzÇÄ“%$péGs!´6nÁN:ephš…±GÞ¸qã?ÿùO¤Å«›Q/0)T )¡“c§p¦ˆØ:rˆåƒ>@z‚)++ÓlRKb wóƒg k«««_Ò0ãöá‹„_XXˆ³ ÕVïb[œ5¤¡/ƒá/vÄÑêvœ¥w¤EkÃÒóçÏ—îÂÐbh.± vÕ»ÁÁPE;wJ9&7Ô<õ/_¾Äù§§ §é„„q7‡ ´Éó®ƒX%""BõÊ•+Ÿ>}*ã˜ÞÍüiU­÷;wîà®3dE…áÕ9sæ —¾ÿþûB\þ‘< ?c•¼K¨sÌëi d45öÁ¢UEIyTš’Ä)ËÈÈ@â×_MIIAa,.h1éšêCÓ+ŒÉö…!Œœ¼¼<½fÔ LŠ|õÕW‘‘‘µŸŸß±cÇ4#G€¸þçþçæÍ›8Þ+W®h6©%1лùÁ‚‰"¶E1\IMŽq|Ä,ç7 · <œAyÜj!Û¢3 y´#ŽV·ãć3¸Úâ§ù÷D83Fó5}CÒ¤íì씾‘å¬P§z¦á\Fì00汊´0Ï/¿üòêÕ+½ ¡)Åß4Õ9+V¬í·Ö1U–®&ê5  Å/Õ`phê‚¡¡!ñÝžÑF®bÁTÄzìÃO pey­Õ¤–ÄÌÿZ59X õŸ,yþü¹Þÿ‡2 bS|;Îî‚,©w2~8ÖaÌü第,ñ]AÍœ=zSHÏÆwý·ÓÙ½{÷ž={Ðhâ‰ÈT7²%™¤?Jàt¨w2*ë0÷ïßÇld,Ý£©©é‹/¾DOÆ~hã&{¸‹/))yðà»cq5Ô»€z'£Bü,¿Û_ À…‹ñB!Ø'Øh¥Þ'nœbw” »OŸ!Qï„bI¨wB±$èBȤ`Tzwçã$B!£dô³~B!„B!„B!„B!„BÈ‘ÿ¤98pàÀ”)S®]»9E ÖÌÿúë¯Q•HûùùÙl¶[·n©÷% ®ZµêÞ½{®=ÖÿÏŒ”B&>zzommmFürþÇÅGh\3ÂoÂmhhÈËËê””õ¾ }lrâÄ HMMuí±þÉÉÉÒKº !Īèé]ÊY¼x1rÔ/VçË_û*½]]^ )) ‰ÁÁALà¥ÂMMM¸øûûÏ›7¯¶¶VdÖÕÕáZ”žž¾fÍšåË—‹üøøøÍ›7‹tBB‚x·^%Hà6ûŠˆˆ(..Fαcǘ——WlllMM£ÍF!(ö;úñVô±èÓxñÞ«… ª÷•˜˜ØÖÖ–999öá÷¶`. i_¾|>‡‡ÅEA¼ñÔ©Sл§§gdd¤¨Dó5ëz•ÀÿÑÑÑ|YY™p~cccxxxpppyy¹æËª!dr¡þM‘åz{{ÛÞ ;¬wÌŠÅ[ÑqGðàÁÅ&Ò³wi‹x]¸p:ÔÕÕ•••…t}}}{{»ô¢UûðË»õ®Y ê‡ó1W/**’ßGà*fÐ2„2¡Qïš?hà܇3¡¡¡gÏž­ªªR—âââ®\¹âëë‹yõàà 2sssQ.1¾o¸qãFqq12óòòLê]³äWVV"$ñnnér£Ð»[~M‚BÌcFïšÊgïšHÏÞsrr°í‘#G.--E:33S^rFæÞ½{íïY‡åz_´h˜¨cf.ô®Y‰ »»ûàÁƒX+vmÖ;œo'!„L"&”Þ_¼xbŽÝÔÔý†„„—””´¶¶VTT477÷÷÷CÝ(_PP°nÝ:LË%½‹gò………ÉÉÉP½Ð»f%ˆ Å?~ŒµX%ýqvãÆˆ¼ººÚÌ[à !d‚3¡ôàa1£ÆäüöíÛ±±±â™<æÕâ¹Jvv6ìKÀáÇågòóó¡÷€€€ââbéá PW«GDDxxxˆ«€ô5ûššĉb¸v˜k˜é½8•S†ñóó³Ùl·nÝUfzŽyôúULLLrrraa¡Au0#ÆV__Ÿ••…c¿|ù²^k뽯¯—K4‚§§'þ6mšÃµ¥38·#™á-Ñ;ÎŒ3FU×ú§OŸ:1ê]kfïèo³fÍjhhÀ”£;%%Å|„fzΨ0Ð{zzºqE0&cknn~›õ¾uëV~FFFggçàà ®wEEEŽU5–ÎàôŽd‡õŽh7oÞ\PP€ƒQccc~~~DDÆNkk«TfõêÕØÊDFF~ñÅR=RïmjjÂ&¸¶"Gzb¦r½ ±Çòòòèèè„„„ºº:d;vÌÇÇÇËË+66¶¦¦9GsçÎ ^³f F½fQ•¨dåÊ•ˆ÷¹ýýý»ÃGT¢MÔ»×<{GƒÉÑӻؗt¡D`øøäɃÝé55õ®@ï­ªÝ>–ÿµŠÓzöìYܯ ûÙÿ|î N±¼Wè;~ü80‰´G“}FŽÞ³w½n¬þ¨7ÜÞægï8jû‚ Ô«×êÎà˜‚Ôa˜¬GÝÓŒq™Þ7mÚ¤n=Ü'"333S½#ãÊ 6Ôk[ p‘>wîÜ”á‡<ƒƒƒ‹/–ë]*#¯ª¸¸å?üðC‘Û ÜPànÂ`wšPïj ~sFîö1þæŒüÙ»ÉU=êžfÌxëwÄ………·oß–1)òîîî܃”””´¶¶VTT +š©Ü`CͶݸq#¶­®®ÆéËÏÏW@Ü¡Á§NúâÅ EyU¸i0BéO®š»C06›íêիꦦÞ½wôýKsn×[ëD½œby¯Ð+&òƒ‚‚ÐÕ¡‘[·n™ì3rÌè]ÑEÕ=Vs¸Iz×ë™Ö;€Àqø ˜·µµ•••¡q7Úq­hð±(HÞ¨êQ÷4ãco½£<™éÒ¥KêÖCWŒ²5ùpÆ`CͶ­©©AoGÉ‚‚´':¹8ãÛ·oGSEEUׯ_ˆˆÀ*•+WJ_˜ÔÜÿ´j¡÷'½¯Xœ¨w»þ)Vô ½bÈÇôOôFÜ”‹ÞÁ¨{¬æp{›ÿ´jþ¶ù'Ÿ|"þò–,Y"ft£×êwXAŠGUº§0®ÿkU>³ÐÊíééq`£ÚaHWzöì™HtvvJ_ˆR”Q€’Š+蘒ÞÕ½·|ûËxü¯U½S¬èÅÿ)Ò|ŸÁ؇aÌü—+E0ÒGÍá†ùêÙ³gßÚ‡3h"Ì[ZZÔ£{´ãZÑþ+HÁhë1óßo]£wb§Þµzo~fw`™¤?J ÇÖ­[SSSŤch·ÊÊÊÔaîÞ½«·áÛ ÷·“qÕûÕ«WoÞ¼9N•O:¨w5BïC,ÓûØqx¸QïV…¿é2¨w5BïþþÒ…zwâ%n‘GÚ›,º»=¬õî2¨w5BïwŸ 8°PïNÄ=“uÜÝÖzwÔ»¡÷šÖ~êc¨w—ÁWik.h/¿yáÀB½b õî2$½sqâsZö^Bô Þ]†Ð»ëŸdZwŸXB&(Ô»ËMMœŽ»O,!êB, õN!–„z'„KB½Bˆ%¡Þ !Ä’Pï„bI¨wB±$Ô;!„XêB, õN!–Ä-zwûOQqáÂ…‹cÓºKïîùuB±Ʀ¥Þ !d’blZêB&)Ʀu–Þ³³³óòòL¦Þ !dì›V¡÷éÓ§OÆÏÏÏf³ÝºuË`Ûù†óæÍ£Þ !ÄeŒVï³fÍjhhÀT’OIIÑÛ099yÆŒÔ;!„¸‹Ñê=&&F¤CCC}||^¾|™žž>wîÜààà5kÖÀüXuìØ1¬òòòŠ­©©‘ô^^^PWW‡L|DË—/Sï„âtÐûÀÀ@aa!fï .DfFFD]UUåëë»aÃä466†‡‡CøÈïèèÍ™3gÇŽØpýúõÈ•”––Rï„âtF«wÌÉýýý¡å™3g>xð@ZÛl6éL|||XX˜|CØþéÓ§"={öl$†††0ùÇ¿Ô;!„8Ñê=44ôìÙ³˜«?þ9ðó¾}ûâââ0u÷öö–”®Ö»ôì=jƒRï„2vF«wéÙ»àܹs˜Éçææ.^¼X®w\¨wBqcÔ{~~>ô~úôé‹/ÂçS§N}ñâò7n܈üêêê¾¾>=½WTTØl¶«W¯Rï„âtƨ÷îîn(&OHHؾ};›6mB~MM JâcAAžÞù§UB?F¥w=ž={&ýýýR~GG‡ú/§#B½BÈØqŠÞ õN!cÇØ´Ô;!„LRŒMë.½ÛùR.\¸pÛblZw½ŒÏÝ=B™ôk–ïZ%„KB½Bˆ%1£÷e»¾|kלBq:#êŠsë³%wB½B&/Æzn¯ëøþí\¨wBÈäÅ@ïo¹Û©wBȤFOït;õN™Ôhê}D·…üß·}ýübæÌϯ¨q—ï´Û©wBQ£Ö»™y;ô>ëü—_ýõЧüüä¥nqûÜ„EÓÂfRï„¢Æa½GDň4Lïíís÷ïß­Ù´svܼ€ àeſtù%§¬xïãÿ- qîF£^™¿¬Û’uüs\2p/pþÖ£Çφ͌ÀU£ò^»(sáv3>úMõŽ·}~ùrv<ŽýzzzÍŠŽûüÒ]Í2ê /ß[²bµ@ ê?tª”z'„X•±èýN»ÚÄì}nB22×¥íÎ-¬¹þÕ·i{?þï+Bn6!2Ÿ:CT¢WFÀ½§¯°SÌùsNò§Þ !VÅa½O =x¢ópL›‘[nÞufÆ´ÜËË[².JFÇÛDÚ Ì‚äe"ü¥+× QÛöRÒ;æðHc•·¯X>+ûR¡w½2ò°ä]Aä(‰›ùU‰z'„XŒ±?{ËáÏ.ˆg)wÿþO[ÒM½”1Öû'gÊþûÀŒ}Š0 w¸Z¤õÊ(ôŽåæ£Þ­{³Qx΂…Ô;!Ī8K…0÷=“ûùP®ßÔ©Õ­ƒ »”1Ö;„|øôùÊ{íÇÿv©¼¶ù+×nB™³•wjê•‘€ÿ·èRÝßQ%“–üõN±*ÎÒ;„3g¾xèñÞ¦H¼³n³Â®eŒõŽ¥à‹ÚYÑqâËö¸4|vñ2?¿twÖìXädÿ\¯Œ"€°™ÀÓ3~~RÑÕÔ;!Ī8¦w½åÆ£ˆÄõ¦žÚ'C—Ñ[àç›ÍÏ™UÝ÷ž¾2.#_ÄTßÌî¨wBÈäŹz·ØB½B&/Ô;õN±$Ô;õN±$r½ËßRävµN„ÅíïŠâÂ… ƒeTz—^TävµN„ÅYo}"„ñ`Tzw»Q¹páÂ…‹É…zçÂ… K.£Õ»qyB!“êB, õN!–„z'„KB½Bˆ%¡Þ !Ä’Pï„bI¨wò–344ÔÜÜüìÙ³±WuôèÑ#GŽŒ½+ñå—_ÖÖÖj®ÊÎÎÎËËUmlò6C½“·™œœœÐÐPOOÏ)S¦,Y²dŒµEEEEFFªó§OŸ.Þ2ãççg³Ùnݺ5Æ9ÌÀÀ€kKII |ùò%Òuuuÿ}±NV–XµiÓ¦´´4ûð±Ï›7O3Å*31›ÜDt ðªU«îÝ»ç@%NÁ¹§Àê¼µ`Ò±oÛ¶­¿¿¿µµõÆc¬Ð@ï³fÍjhhÀ̆Ǹ#ÇHNNž1c†+„Ìq8>DZÚòåËŪ™3g#ÑÞÞþôéSÍ̸ÚM4Á†¸°"Ô'N ÎÔÔT*;N?ÆPïä­åÚµkÿ}áã»ïöõõÉ󛚚``˜Dz°€¹zõêòòòèèè„„LVE>ðFPPPzz:œ¦§÷˜˜‘ÆÍ‚f¼(?wîÜààà5kÖÀüò½†‡‡ÃEze6oÞ\PP€KvÝØØ˜ŸŸ˜q‘Ò;„cÇŽa¿^^^±±±555Ƈ)€|Ìu1ãEýB×rªªªÐ€'OžDzݺuÞÞÞ84\7‘±Kj \­nR ó›h‹â$%%!188ˆÃ‘N‡æ†òsŠ–—®Yñññhy‘ÆÞ±Ê uÓ)GÄåË—ÕÑ: ê¼µà6–€ˆ0*ïß¿/2Ÿ?Žù2ÆÆ8Ʀxø?`¼Ï™3gÇŽÿ¾&xýúõ¢:t¨««K<|¨¯¯·ûS ÆûÔ©S_¼x¡Ø‹Ac½ë‚x6^]]Ý××gæ0q£QXXøøñcFIé/Œr :´ª=þ<>îÞ½iùÁÊ+” ×¤ Ìl¢w,ŠS ‹6œ9s&æØMMMšœSñLm’œœ Õ ½kV¢×tòÃAI›ÍvõêUõQ; ê¼µ ó‹‡±ÔüùóÏœ9#òoß¾ Û‹UðªÁÃûð´ÁH‡.>lðpF¡wŒz mqç¾}ûvéa¯|/eŒõ®w¸œ! ä@\fDDD q„Êô¾+顆¶¶6û›§Uéééòc—*T`Fï&7Ñ<Å)¦Ðð°˜Qcr®¹¡Þ9ÅzÀaJg4÷®×tòÃáŸV W0‰Â\Kñ§LFhOO™Jz{{żz´HÿU¶³³~v¸Œš‡€ƒ•ÿ9oÄÃSýQí×ENÜÄü)qCéœ*.Ù˜–ëý¿$u%zMç@ 8õN!zèÝ‘M ¨wBÑãúõëUUUîŽÂA¨wB±$Ô;!„XêB, õN!–„z'„K¢Ö{Ú¾ã\¸páÂeâ/èý5!Ä!8|ˆ+qLïc»' ä-…ÇL¨wBœ‡Ï'77·©©ÉÝQ¸êÝDDDlܸQúXYY¹lÙ27ÆCƇ‹Ù¶m›ôCj|ëÖ­zåcbb0ÐÆ?® õîF wOOOé¿LLLüè£ìÖû¹sçZZZ p˜üÎ;"=3**ª¼¼]qÊ”)èŸ×®]+++ ?RºbÅŠ¼¼¼îîn$þö·¿‰­PFó5jd<àðq=D‡鬬¬={öˆ´Þ zÇU ººZdbX‰×jhŽ É õîF ÷ÆÆÆ{÷îùøøÀóšgsúôi‘FÏ<{ö¬Hã†ôÒ¥Köá¦/S@™õõõÍÍÍÙÙÙiii®<"àðq=èðžžžâõ˜ÉK&—P "=½[oQïnDè‰;wbi¹¤÷ .¬_¿þÝwßÅÄãÔ©S"SþØ0 àîÝ»öá—‹ ½£Š× >øà7Ò[‡[Àð9qâDmm­ü·Ù‘ZïÖAÔ»‘ôÞÓÓºl||ðàæó_ý5Ò©©©&õ^WW‡9Ìßÿþw· pø¸Œ‘yóæíÚµ+++KäŒ8ˆ wñ¼}``i¸Ýz#ˆzw#’ÞAQQ,-Þ¡yåÊ•°°°þþþ¦¦&ôÆ£GŠ2ÆzŒ‹‹Û³gxé°ô^0ôpéµõd¼áðq ]]]ÞÞÞ~~~ÒwÚGDIII'Ožìííݲe .лÞš¼PïnD®w’’"ôŽéDrr²xW/f#¸µ¼ÿ¾}$½Û‡¿6`³Ù°!J¾óÎ;¢äš5k¤¾MÆw±jÕª¹sçJGDÅÅÅDÈÏÏÏ—þ´ª9‚&/Ôû„Ez ¯ô2e“`&#¦ÄõpøL(Œ¦Fšo'·Ì¢Þ q">dâ ©wûp/åÂ…‹ ‡—-ŽéBȤ†z'„KB½Bˆ%¡Þ !Ä’Pï„bI¨wB±$Ô;!„XêB, õN!–„z'„KB½Bˆ%¡Þ !Ä’Pï„bI¨wB±$Ô;!„XêB, õN!–„z'„KB½Bˆ%¡Þ !Ä’Pï„bI¨wB±$Ô;!„XêB, õN!–„z'„KB½Bˆ%¡Þ !d’òÿƒÎ\å endstream endobj 8 0 obj 15572 endobj 4 0 obj <> stream xœì½ûSÉþÿÿû÷¯™JR“—"P Z‹x§o‹XÜuTw\W9®7Tnºwoë"¾Ñˆˆ"²F.^6ˆI¦©Ï÷ó>çìyßžC}gz’0ÉÌt&!÷y=ªKgúÞÓž'Ý=݌ӱmëæùùyÄ8Y3øƒ ŒÃ œ  @ 8í³Bµ§é 0 iä~QÏ0`À€‰G LÂV&±-0`À€ ¡qH)¨ùð`y=Åš0E’xÚ3YA-r,PSP Ÿ€¨0‡ æÝ j^$¥@AAà˜‰€‚âå(( òˆÇ |ô(( "  XáTRRÂ+¨ H) bHÎâÍ{ *PP@ ØÃ¬ xÕ4ï= " ˆrë <ª áVPón%$Öä“F£‰v€pᣠæa ì36% ê­'eﲆ½â-Örü"?ÕÝ}™5~ýk¤(E9ÿ|T”6){}m×{?žÖAá@‰‚òȧ E« æÝyüµB‚Ö6Åý÷ï?gwRÔ÷‹Lˆ}`f((^8‰¯Â=Í»{­|ÏWÛ|0·T­HÓÑÆ¢Ï;ߺìþùkóΕYI:mê²­Gzf潇°ä#ü¿e§ÂPQCÞÆ£Oþã±™èü´0UKg~Üôè?J‹ İ ³¶é Ô­§Ó>†ð ã§ðæ‹É•CùH ?VQ‡Fíÿú÷‡ÿ~ÓAQ­¼å*Šêy÷ÿçßÿþ×Üë;ÇWJôð?ÿš}°“¢.ÈxþðwW)ªÙãºö—·ÿðï¿¿üš¢+Ì9#À:( (QP‹™Åãõ’XA)†òÑ6…å\¢(š·?º.«b_ÓñÎ[Ogÿ#P!VcX²vïÅI_Ïÿ9ýéÊ%-%ŒŸ½þo—ÇK ^€uP@8P¢ æƒ]I΋%I¥PDù¡Šz.åíÃÌØýßT-IÛ=,P.BËÏ)ªó5úó+ÄœKŸ9>¿yb X„ƒe j>ðP¼Rúî³{¼am<×¼Q"¢|Ë›õ”áøÈìŸþ÷ÿ¼ì=\È[®:u÷ óç‡ùŸºEQ«xË"Šý§Äš%²‚*¡¨§þüχÿ÷Õù  X„ƒ™ik8?ÖÄ+¥†Í}¬a-ù ¡ TAÍÿgübmq¶A“´´êÌ€“·›é9¼¥ E«Ñg®ÜùÓ?yË飥ÙzЏ’\ÂòŸ?ï]™ªÕ$ì8ûTb’uP’Ûkxú ù/48”dMýømÍÖU¹éÉ´†N2æ¯.ÿì«ÓWîG&‡ñΫñßä ø(±jå ¢ 8B²*ñ3ؼV°ªP\€Œå×aRPÂ(9³û“o@Aa%äë ädFLÉrfsÿ(#³¶ýÎèkë,㘵Zþ6|ûÇ3uÒ#™O€ø…UM yË”((V>‚ÂMÈ×A‘ÔÄÝŽ¦ª ŒI´Vo\VZÓ2`GHè!æ·îoªÖå¥Ñ ñ ûPWSåÇùÆ$.9ý£ _œ¼ñyýNŸ¹FˆèÔœ¢-ÎõÏ ÈòKsÕº¬œ^X^{º÷²‚²ïÂ_›nêg’óã'ÃÖ»í+Öd§é5tZÖêOêÚMVäðÜøë?zO×–¦'ÓÚ”%k+ݰ2k„OAyDkx±$6ž³† L„|?(²‚“ÞâzmÌô™2CŒé3ƒï„Eµ 4Éõ$_©']Ñ"gÏFM`óqGñTÓb‘Ͱóf-ʰî“ç‚VdS <7ÉÜRšòYˆ¤ æg¸°¦D O@ù~PrâÄ%’jºÆßÛÇô«Á¶¬%ê½<ë~¸?>iwzNnãÔHi»Él±:Æa}3ÚÓÀùÌy"N…qØÞ>»Š£ý’·™ØŒ”Ö·öOÙûÔxëzЬ Ò±‚² žØ(LÑa¿Ç§H•OxRMxn®˜×óaÓ9K±CøT¨Âš:Mdo<áuPG=ÇZ ôÐ4ã«[vˬ覨UîxƯÝõñ²tƒN¸£¬+Ú]8x«pRµ’TòÊ[A “&g¸Z&EŠªö¤¨dÂsã¯ÏKÄð™\žbTPï,³·~táTOlj_ÄæÊÓó'o ©Ó]5 O„×AÙ¼TC,좑£Œ‚òÛBš¤KÃÁ§½Ò&+¨¿à Û­Š”8Ãr)R”ÑÐg !›8fB ±O¬)¨ÿºöPR8‰ ëS2!uš «&á‰ð:(‚¥\À/° ¹*?§Æ7÷ilr†›JCè¥0*~ ªÍK´‘”c?ž2Ëj)JTI†«eRôŒA鱇߅¬Å1·JİK.ϱF *¨5«×òæðÁÓbãq J ^E°” 8U…õLé9Óó·³NÆa›zeºÙõ]m©kc,HN OØfÖòäZ}Š0*÷ª¤¶q«ƒ[S4ÐæoB}Å8NjYí¹CÏþ°Î:Ø_¿Ýjy¡$äS¤6¸V1ÕáÈ—w½±9¹•Y~Ø—J‰c¦Ö¿çC9¬ƒ nˆ55gñvl¬ÝP²‰5½ä1åe›¯]ºÍú‘KH&èªIx¢»”A‚ÐÀ¾4Ò<ÝóM$Wä¸QøÞ˜h´e³è{:Ÿ€²vü²Y+úO»ù†Ã5¦d?cT³o TÉÏø€¸! « $ XíDOóDÅvÑaR/á‹Ôâ‰ð:(‚%AÕ çÓ+ßÕl^•ª×jõ©9E>k:cä½ËuÕ•å%ë(]JΚªæë¯}¢Bü|´rMf’Vg0./ýâDÏ¿ Š e½qº®²8?#•Öhé”ô¥kÊ«Ntõ™­þ3¡¨Í×ßÜ}sáT‘×,žÇ'Ìâ)ÖAá Æ”ÏkÉ‹'p‘ ªwôÞÞ­«Òh ½d˧mã-¯¯ÌNÒj ¹«ê=þ{v•¤ht™r+ɹ€ß/_³4YGiôéÙëjj.ŒK':ÜýÉÊ%Ü–+÷ã^I~³³fiªN“T°ö«aï•ä%i:mRÁç°’\° 1¨ ø=É%gñ< J{’6dˆLÕÄ#° ±¦ XiÔqâñ,o<ûA±~$ETÔE(¨X#$ë þ ÞÄš‚b¥kx½Dø÷&™Iõ˜²ƒwÁ€&|&}>Ä/±¦ øñ%¡ŽÞU…cPb€p-96aë…#€FÒÄš‚šÇ"J¨£$:×AI*¨°Lî@–›€²2ÃCƒ±¦ …D}„ ˜P™yPP±G(( bz>uì«V²YlîÕ Û¿]¸õ ˜x7  bPP@†qØÃ¤ Xd·;ÈDÔb&1 (¨Øéÿõv8Ô¹o¯²ÉsË^ççç{þÚƒˆ PP`À‚ŠM@A€_¤ ø‹|L›7¼%ïTÐ,^AñçêLhMdߤÃJ˜f>b~ Ÿ‚z=>ÙÝ}9_ Öžu›‚b{˜pD•Tä (¨ÎÞ;K(ŠÍEœê‘ó Lä¸]É)¨ÐJ…@cCÖþ¶º-EK’tÚ¹lý¶ý‘L<„…((ðKXÙÌË(¨ÃuÙ}}ˆÚ÷×åuŠúFaÄÚFㆢSó?ÞÓòè•Gy*‘„¤ ºr<åMï&†Œ¸iEFAbzwÒEmùþ‘e†±O tÕ,&˜UP„¨@A€_Â:‹œ‚úsE¿æ/ûØø÷üåû$jýŸ 3 © ø‹ÿ|ø‡ýoç(ªTyq”§I ª9€Ò×è8Řþ‹Ç¾³÷^ÍÖ•©4¥à× ˜që TA!ä¸voIÛZu)yÅ{Z칦®*Í6x5cÉØžu®\—›JkôÙ¥õ?û$1QÎÅ7ŒJ]˜(¥ÑgUžzŒ|ì}ò#´ô³ø!ç£öåËŒ´†NÍ+©ivHeFN&‘]AA€_Â:5—BñzÉg"4‹÷.™Zñwîb*…ZOi†¹Ë¨äwØõÏ»‡Ës Cnùá~·¤b;É”ä%k)jÞ£m>¼hY™þÕÀ?æ…j‡UPcç(Í_Ü·æ–ªi:ÚXôyçÛ…Ø&:?-LÕÒ™7=rýÏPó–ü$ å‰JÚ[¤SP½W“Ø¿ž©Ôo{/éñÅ÷D^[§©ôµ7Î÷<8Vk¾ÈN`À„Ј%z  Êq6ƒµO9ožflæsÉìuz‹ƒwšmÖ³·†S£V§uô¤^Nx8/r"§òªù½Ãië;¾Ò'‰x|I((Bê|†#;35\Ë%A5É•…·In¾o±#…1‹¯Üh³¶qpÒaÿ1½ÎétÊÅ/÷„åž3((ð‹rE0>ž95?ßGQÙÿþ§„Úÿaeœb¯;(ª»åRù×ßýùï?ß]Ë£ržóØ «ý·Ù~ðÜÎÿÏð‘ìN=[°ñ@QKÿâÞÔüUÔ¡Qû¿þýá¿ß°)´z<¯ýåíß?üûï/¿¦¨Ã¼åX>•×mùû‡…\Jz‹² ª%‰+£‘zú6Fµ¸ÔZü^ø ªÎÞï…o1‚0!4‹WPûp[íÇò!þEïãj°Ó—SŸœðhÀÞ~H<4öàò@HObÀådÅN:¹²ð6B‘æ7fñurÅäÒ ¿PP°H*¨€XìÔüüWÕ3?œÚøçüŸ©ÕŸ×R_óNË)ʭئX-Ä_±=€Mœ½=žB¿ð²q]}øûÔ@%•~—¿+¤ü)Šöxþo·oåRŠšòΤ¤·ˆ!§ t\‰ŒÅZèbW.]'ï¤Å…mwɤ‡Â·Á ˜ùt!p¥ÇmÕî’ vüË5ðN´—Ó¬œð0`o6yuAƒ"¤Î'Áø›z“³ñ³øZOyÍWòùé‰ó ç ø%| *³ïÿ v jþŸ«(Ãäµl޽ž+ öþc%µúŸ¼« Üb‰UP®]4ÞK’ØÛæo3 ûÓ|÷ÿ¦¨4þª€¢ž‹Rzö\³ ʪÀ[ÄTP½ç´ªn–F0&êFÜ´UP{¼ÆjîjDcP÷\N·å„‡ß1(Kç!DÂ!uŸ ª Æ,¼®ÇA¤ ¢\Aɹ‚‚¿„u ŠQÁAÍO¨Ui“øúmUH&\.c9TAÏÔ¿þý¯÷×ó©ìg¼¥XA±ÿþÃ_¦$ÕÝÿÓÛÇ؆ª(+Ý7ë)Ãñ‘Ù??üïÿyÙ{¸P›çz,ŸÊ¿:ñû¦"™ ­ ¾Æ’)Ïä±9‡Õל4jÝÁ/vú¥õæPsm’ð]Fp&„FÜ®UP3G¹N©­fc3ŸOa¯§í¼Óì1Î)­í™™&­ƒêúˆû™T^3O9œÓ¿›N¯ñI9{*Ø?E¨Š®a‹qXÇ»ê—ùM  ÖóÓ‹6$éPÌÞ)`¯éÆ__Ú‡mâù@÷ñªòÓóyÂWPPà—ð)¨ùà×A±ôP”ö‰ëš›cêñ¸üi:¼!G¯Ñçl8|WzˆiáöÏZ}rýƒ v3Ð%ç—ìöLÈýgübmq¶A“´´êÌ€SÛÂõÿÜÿvc?lNò)$Ô§8{¹—v0è¼¼ÿ1{˜»î½»wËÊä·x²N`À„Õ”—¼AÖ›ÍUk²’´”69wýîÓýÂoñ®Ö—dé|‹÷SÓÎ5ÙÉZŠÎ.k}‹ÇE5e:w`sa¦^CiõƼµûü¦NPP“g* Rµ„ü(ÙûQ0O/5îX ’’»¾²éâ½ ¹øø%6×A~S]À$† Óžäî•Õ…!Y%°õ¿À€#iæcuàPP`ÄVAþù·I;cŸnÏåÔN‰ñ%@ 0~‰ÑuP€?@AI ZõêjÓæ¥)ZŠ6æW»þ†ø9?à[`À¨Óñ{™‚êD±~XŸ‹ON”‚“¦,"' J(ƒq'@•Ä”‚šw‹(²ù´ ¯PP±Ô NbMAáú: 1ˆúè=¡^P!e  TFÔ{Z0`Be¢>“†7e  UR Je”Á,€‚Š P'A¿OAAÅ)Ð׉(¨Ø1Ыê”Ú€¾H "¦ :ŽV/M7ðG^:¡/h“0{øC¯;8zÊò’u¸¹Î…b“y€((µ}Tçõ¿Vm)^’fÐjtºÔÜÜ5;#Vá—ÑÞkƒ–=âƒfbDA—qB¯‚¬ýmu[Š–$é4´!sÙúmû]öŽþÕk³¹³hèdcnañVÞ¾?íâÉ…ý¸Ðd1Þ%¾Ã'f>ó”FG§dä¯Ú¼§¹û‰CÑ.^A‹ ¹<{±ëóOr%3Ü£O!*ñ« |BÉõ*ˆéÝI³u±åûG–Æ>56ÐU_À; à³Ë¾s03OûÚkò\Aº±.*úÃÉEø¼Ân_uäÑN›e´§y›NÚ¾[¡-*äò¼˜ä(84îÑ' €‚R  €Ä@NAµ¬àÞ içGÄN½Ã5Ûò3’µ”VŸ^´voW{ïˆP¸‡5èäœòm­#DÃG>ú¡³w ¶bU*íçdm%ölÞšöW.ÍJÑjtúŒ•ëj»;¤ò¦Ñ¥¤-+ÉÉ`½itÆ•¥Çœ\´€”0ˆ\¯2QÎ=™¼a U“‰_ôŒ¯B¿p‚‚Z6޵BãÜ-ý‹Hù(æö®€Û'¢êÕs6”.yÉŠ-õß›q >¥&{V˜gœOç£öåËŒ´†NÍ+©iv“SòˆrÜ?»·$m_º”¼â=->gF»ëTŸQTyê±trÂtšº~¨4Û q‚6  Ô(( 1SP+ðk®©WBAuÔ¤±NúÚço>8Vk`¯“j†…ª@WuéLÏãsçwà—éIý#¼m«¦¹P_\?ß3øínZNŠ(±ïØŸÉÝlÿ¡¥çÑw_rb õ€Wތߘ:.×ñ×iGLÝ_áLV* ®¤h*(OX¹^e®‹!)5ÂO6Q©Å»o¿|{dbÁÏ=ç”û+¨ç9œ7ýq ¾ à¢UylzªNÞ2¿·33oîíæœ6½” Hö¬0ÏŽ.ŸÚÆÁI‡}üÇ<ö:§ÓIHNÉ#rœÍ`RΛ§›ù\2{ÞâÆi82`±3Sõ¸àM’É og›9•h85juZGOêAA-PPj#ˆ à7˜¨·ÏI$‘SPü’ï)µ;}…:{¿ÇïBUðµËi;iý*¨u8ÂzW¨²R áu ŽªÆU/Î@µÐÛ·½#½÷ùë#Üõc 78£4¸’¢…\AÑ8W)yà¼ÓXf\ ¡(ãÎn;ï„S8›ŒQöúI:ç'eP"‘‚ràxôbŸn§ ’Éž湎_}ä7{]”$GxDû°S¿+NŽsŸ0Η“;é$“ÞÖàï¸BõAï½x@A© V,€ß`¼€c6=ý²ù^ùÁ»Ÿ4· ÍðörJÉÇþi‡iãõYþzâúÝÒŽ÷aÍ­‚ƒâ?Pjwi‰‡ü W¨ |f¾ü*(­W„Cr‚D‰=Ÿ7!ì;Qœ7ñu@ÁÉE TAyl‚ƒšÃ¯þ±‡}—Û~žÇv¨ínûÇFN¦¡¡TîÂøX*ŸÎ¡{8’O]·Ãç÷mZ‘•BkÜO†ý_2 Ù³Â<ë%ž?-—œÂGÄÇiw ;ŽÓ Œ“ñžÔ“LNxK{E8KΠPPj#ˆ r?IŸ#|­Xeßœfq¦µ=³1Ó°*$€‚RA¬XÐFç@AÅ'ëLv©Ê*%öúØs»{“›ºWo*mx¾Li?¨kwn^—™Js»%-ÉYãhêì½ zcvšû&-}Åš/þÚ.5·¥\AuöÔl]™¢Sô-žØwTÚ½"?ƒÍ´Ö™»þ‹]§LÊ”Âà>·-{JÒ“d³­ÜVWN™ÎØ\˜©gó¥7æ­­p¢ÔUo^·,˨×áünÚß6äì…Þñ˶©¢72ž|¶)îóÂô¼¢òÝǺGûA1÷OTiïÉ5ÞiòLEAªVhCð,„g„˜§—w¬ÎNÖRtJîúʦ‹÷&ä’Søˆ²Þl®Z“Åí?•œ»~÷é~»Ô´Ýœb…ÐÔÕú’,=|‹2@A©`Ç Røk¶£ üZ˜Er jN¤ <Ú3*å¡B¯FKžµ6˜Ž¿Žé1¨h÷úíü¨ç$ò¾ð;ÜËÝ £‘ø”ÚbÅ7ÆLig]³çƒ  â¼ê¿jfrêÎ5×ìö:Ós»—j_Ïá¿^¿­ëÿ~ ¡÷ÛT7ú<†×AEØdîl9zåQGé›ýx?¢u·¢ž%PP€…‡þmÒÎØ'†Û¹ÉJjçx´s߀‚RA¬XhÂÃSµ#VÆ11Øœ$TMä)~ vÀßâ™(¯ã¾Åkw‹÷¼kh[ƒÉ3âäñ/þï“^׌w=÷bù[¼›M_,ËLÒP:CÆŠ•Ÿ¶œ’ZËðT¼ðêjÓæ¥)ZŠ6æW».7C („mù œyPPqK+ÐȩʢtnM‰‚bDA¹ P+0¥6 ¯ƒ û. ä@¯¨“àvž·@_$Ð’c¨ @€‚RÐ׉´äØêP'  Ôôu@b-9v€ºÔ ((µ}@KŽ .u Jm@_$¶døb4|@¯¨PPjú: 1lÉæ@A…ñc$í‘bío«ÛR´$I§¡ ™ËÖoÛ¾\Aý”Ú$ä– ïÓð!~¶²ûô2½;iŠ¢¶|ÿÈ2ÃØ§Æºê "–+7  Ô(( 1TA‰O#âÑrÛ3W¬Í3ÒZ>ûãCwÞBÎGíÊ—i šWRÓ:ìð>×Uµg³Š .WåÜ6¼yÃ_#ä¸voI^*MéRòŠ÷´ (?6—‡Òè3Š*O=Fs255„¶åßz:¨™·€‚ƒÅ+¨¥7,ŽÉïøë<öúm ÷^¦ð~9œ¾jœtØÇÌc¯s:ÂàÉÍ÷-v5Š!ÖAœWî8›Á:¥œ7O36ó¹dö:½Å቟¢´>É ¯ G,vfj¸ûl{s%5„ƒR±°bˆ}‚ë"ÉâÔ(b™â¯s× ˆ6ï§¿ý¯¸Ôæ²o—j@¹‚¢ñ3tH=¨}Ø©ßõxMøñîóÄOQŸä„×®PVìS'öÆ5„PPj#V,‘Ÿ,üôËæ{幓…ÛÜ' Ëõb{¹¢Åâƒä5ïGOy‰ß¿´\äªÂG>Í5Å?^»KÞØ…ª _§ð×l«“«¸9©:'5„PPj#+\½“!«¤þê{îOùNN‹QëÇ\Ýã% w{2ˆ–„ §é~éñ±¡7v;ÃØ&§n_}ÀÛ+WPr1D‹Å+(òu=~ÿH½ýUþþ_®.,eÜ3Ì‘x†{¼Æ îjcPüHà¬Ëi “È j7  ÔFÈW,°$·^•#¹ª—]vdÛÙSÁ顊®a‹qXÇ»ê—ñN3Gõl<©­fÛ«œOa¯§í¼Sî‹jG¬Œcb°9I¡‚ZCݱ-4Q¨A Ü€‚R!_±Àbòrªá®­5øz¿¡ó8øXzùªu&»Tå {öúØs»{÷ r1D‹p+(„˜§—w¬ÎNÖRtJîúʦ‹÷&ä"W9¤Õ•S¦s6fê5”VoÌ[[áê:²Þl®Z“•¤¥´É¹ëwŸî÷´.4rª²(ÖxÍÁñN5y¦¢ U 5DPPj#ä+DNzÞ©ÛÀ…úèÉil¹KR›CnÉGAyªÉ3*塊¯1( ’@]ê”ÚíŠ^AÝõrÚË;¡g«¸[ü‡$Ua¢™!¯bzÁ¯bš™œºs͵Ši[é¹ÝK5‰¯É1D xkÇP€:¥6B»bWPÉgœèîO´²r S6CcêIg>tl ¼Žû’®Ýý%Ýó®¡m &ψ“ǿ̷x1D xkÇP€:¥6B»bA¸P¢—×]žÌÖ¡ž4<*µúLá¡ÞÚ±Ô N@A©Ðöuä™È¾SPË-¡J<À[;v€ºÔ ((µ1ÅLÿv:›¢(ºî5 @¡ÞÚ±Ô N@A©È((„l¬½Ö¸ª¶{2Ti€xkÇP€:¥6 ¯hɱÔ N@A© èë€ÄZrìu¨PPjú: 1€–;@]DGOCY^²ot$°{h¥6 ¯¹–¼°½¥¡Ë7Ö]4/z3pÄ¿ˆ_Á~ëBx8‹ØRìD~ÎoZ:5wUÅ—]ã1Td•âʹFG§dä¯Ú¼§¹û‰CQ櫱vº2Å„*o ¦((µ H Èomö1Ög]yÜÛªìÙ"Ó Gœñ‹øÍë·.Æ£ð9/xsØ^÷†Ispe  Kí´YF{šWP•¶o@ ×,nôIœ7PP‹”Ú$JÞÚýŽG*– „ƒ9µ(_f¤5tj^IMë°äŽÆé¸voI^*MéRòŠ÷´ Od~Ö}¸r]n*­Ñg—Öÿ4NÎzز·´À¨×j ™«·7vºÆ•µ—OZ"Ÿ2‘øE‰òºPâJxÎòެ؛Ñ}+ÿ0Ñ»+õ%Ù†À,´vÄÏ™\jæö.ÿÛ'ÉÉIF‹zõ¸ìºä%+¶Ôoö®kÉ=×ÒÛ$T ((µ H ‚VPÉÍ÷-î£9¬¶qpÒaÿ‘ôÈét.6γ¬MÊyó4c3ŸKf¯Ó[¼“óR!¶òªù½Ãië;¾’œ‡]‹¦ùÑ[‡ÃúrøÆ™ÏrÉö„¤Åù”‹Ä/â7o´bl¯û«9o…&ט3Gh×ÃqNóG¨+(J+™ j' R#4€S¯ò›œ8Úžª“·ÌïíÌÌ›{»¹H6½ô[¹kr‰9@A©È¬!÷!@ì\ÏIÌâM?çg‚JŸ † »Ž_[â:ûnÿ ‹ŒsŸ×IÜ&à$îìôƒ÷/‹‡•Ü-ãzÿ°ùµMDΞ´8Ÿr‘ø%P%ö/t•´?gB´]õØ].ÂÃÜ#z8/eÌXµCîý|\rà8õ~“#DëŽdƒßâÈ]“KÈ JmDfõ¹">øé—Í÷Êr緹ϖë„öˆyµ±a\8½…ýHÝÝ&šËw•¼µiã²òº r³,zÊkN¿zèÄiw½íÂ×™;Ù¼!ïÛ¶åj\®†*o9Éö„¤Åù”‹Ä/ž|zlB;%ùœ%:Þ›¯ìàŠÓ‡„O@òaÒ¢‡£ñRP)ü5ûK:Q;•¡{8ÎOý&çpøü¾M+²Rh;û¿ßâÈ]“KÈ Jm1÷1'?á®|%€Â'@˜pšî—zc·3ŒmrêöÕ¼½Å2~Ò´_p:(=a _n•Ä[[ìTß>~×ñ§÷XÇ]¿1(rÃ2öäÁíî:Ï.²=!iÉ"ÈENFU8fñf¡™ÜÈIã,.5áaî=O$Z.í¬ËiPèDí¦ ú25‚uP„ä|VaŸ§OØ„EaqÈ J®D€  ÔFp JnÂ]ùJ… N€0ÑRgº,2bƒÇð·¿]ÚrÐ4'êc¬¬þ…ÃÕ';ÎÔ™:•}‚>B¢ œ]¬ ÝøëKã°M<è>^•³È8gŽrn¤¶šmŒÍ|>…½6ž¶»“ûˆûùT^3O9œÓ¿›N¯!ç!¿¦½oÔbs ÙWÝø'YC¶'$-Χ\$~?Š(*(–œ–X7Æ5HÂÃä×A Ž'’&¬FjG¬Œcb°9IèDí¬Ç±Ý±Iÿ@<‘33–ßnâoñŒ ßâ’ó)uN¥ãëïí£³¹ ‹#¼ç3è&¡ZØ–ý'ª×f'i)-lÌ-,Þêq•kÏó  â– Vñ™pW¾@á‚ Ll¬3Ù¥þ°*%öúØs»{ÿm5rÄ´ﺃžß/=ýãC¢ bž^jܱ:;YKÑ)¹ë+›.J}`œÖ›ÍUk²¸.59wýîÓý^ßâýÔ´s N.»¬Áõ-žl&Lm [‹ÒõxNkCMëD¶'$-Χ\$A]…,ë¸þ$åç9âÃä¾Å;X’¥—øœª,J§5RN×Î䙊‚T­\Yx{n¹irz^QùîcÝ£‚?FÉùDÈÜ?QYd¤©ÀŠ#¼ç3„MB%°- {ÎÇFß9˜™‰§}í5yWPP‰G«GîÊW(\p„ É1¨9‘‚òL­zF¥<#TÈ6ZzðovÄ\8h:f~× _•ÆñX Õ`[~&?ñ*ê]}Þw¼%¿ßÈ<(¨¸%ˆ¿ îsŠW(\p„ ¼ê¿jfrêÎ5×:¨mu¦çv/Õ$¾öpû+ÓCC¥‡^G Ã~‰Ç·v¢u Xtl ¼Žû¯Ýý-Þó®¡m &ψ“Ç¿¤‚Bo±öû-1!ƒãñ­¨Äc]€‚ÛòwËŒ 3,eÜÙ-»øßodTÜ„‚"L¸+_  pÁ ($ßÚ‰ Ô N\+uìaßåö£Ÿçãñ(j;ï*·šeTÜ}@KŽ .uâûÍ2ºƒT+VP{@AÅ9Ð׉´äØêP'lËϪhºpkxüÝŒ“±[ãÔ2×*Sñj~¿‘yPPq ôu@b-9v€ºÔ Ûòëª7¯[–eÔë4”ÖY¸iÛ“°š…ÛodTÜ}@KŽ .u{’« èë€ÄZrìu¨PPjú: 1ˆ©–¬òOãcª.BE¨ê4ämCå-¦¥6²¯Tˆ\K&S>TõR—Tù)M€ƒpG¢—o¬»h–;ð½)â÷9¤ŠÞ(ÛÅ—ÕE²Èx—1alÔv¯mr_o§TÕ¤ƒ”Ú$r-™pLUøPÕëF\Ø ÁƯOÄXŸñgw–IœÝÉy/ðÈ­‚ñ(+¨Eîl¸EiÚeÏ1^èr* J  Ô(( 1kÉrÇTñ ^=~_è’—¬ØRÿ½Ùûà]-mÌ+®X›g¤µ}öLJî0b?”!«¤þê{©s{r>j?P¾ÌHkèÔ¼’šÖa‡T*ñûzç? jŽ{È¿ãz\.™Ãg9\H=Ks~ržIÆ0'? æSL.>£¨òÔcÆàN7+ÉK¥)]J^ñž–»|ËÅé“É–IÈX@9ñÉ¿ø©î¥(ªòÞæJöf¯’ìùME.BSוf$rާŸ((µ‘¨ *v~S@dkÉ„cªXzªNÞ2¿·33oîíæ¼mzÉÛóígé ‹cò;þ:½~Û‚ûÿB?É-O§ÓæsÉìµþè¬Ð‰¿vtä°×ÚÆÁI‡}üGn¨$§ÓëÄíäæû{LœŒâ·XL)(„FÒY @¥?A÷SñňàLQZÉå’3°Ø™©áZ¶‰wâO7K9ožfl|KHoqC «X²€ÓÁ4.o¹rË”{~s"™qlèû¨Œ×Ë5#E¥]C>é’³'—Š\¨ÙfNYNZÖÑ“úøýù€‚R侎ïaèÔÜU_v)ý¹ÓrŒ^nÞ]öQ†AGéè”ÌüÕªê-`ȵdÂ1UBØ?Þ±ëþ–÷<ʽA¦øëÇÜ5£å^sZ¡~#dÒ‚6¿:,᮸¼½ÀÞ„Þ†âü|mÞÆo¯âƒØ\XIÄL?çgñJ%fñÐ` ç”Í9fru‘2(TPÉ$ä’pÕ£‡ÕñNüéfý^-aŸ0”°ŠÅ1;¾4ríÊøå}F"ÿR-SîÉøÍ‰dþű!ôr›£j‹…ý „Úüù*(röü¦âª†ßjÒª/~>  Ô†ß¿‘Ãöºÿ3®ÝjšÛ¼¤ûaò 4PËýmVt¼×üvÆÉA|ÿò‰Oá bÀÂhªÜ1Uhøü¾M+²Rh{™û?ïÄß2‚©áµÐÝÕ·Ûqp½Ð‰¿Ö{Ÿ ‰½Ñboñ‹§\›HŽAñÐÆeåu$W’ßÑsÏ?ÿw\McXhéïxb ¨þš•ÇâÊ'ÇHMÔòUìÝ è|ДÉÉ'ÃÞ¾aï·eÊEè7'’ù—ŒÍÙJ³¢Ž•vt›ÓǿŽòP´W¶gÅ%Ë?PPjCI_çþSÂ辕˜F[ö–õZ!sõöÆN÷aÁrA|~âl¼ÛÉý|²LÒeø„"w€@b£d>Ú瘪*Ü9Ÿz”‘·²üÓúã.'ùe ðvSðÖŽ .u Jm@_$Ð’c¨ @€‚RÐ׉´äØêP'  Ôôu@b-9v€ºÔ ((µ}@KŽ .u Jm@_$Ð’c¨ @€‚RÐ׉´äØ!Që¾ðÈ€‚R‰Ú×jÃïùD¥¡Ë7Ö]4/b«ò;4´iÅ âÄ©.š™ äi#k[Ý–¢%I: mÈ\¶~Ûþ KºHåÊðö×BË×Û)Ðf‰((µ H œ‘m}ÖÅjM•= :% *TiÅ âgásñÈO1½;¹]y·|ÿÈ2ÃØ§Æºê ÎO‚‹¢Ò.#Ï^y—S)PP ((µ H ”Oô;~-wß:îŸÝ[’—JSº”¼â=-žcXÑÖ½¥F½VcÈ\½½±o+Qž–8,!u–g݇+×å¦Ò}viýOãØ¿óQûòeFZC§æ•Ô´;ˆ¹%ÙË'-‘O™H|J-| ‘?YØçi áO†Ê–žêÕ〺ä%+¶Ôo&VðÉP}FQå©Ç!$[;â<ïe]å¼Í•ìÍ^ŸÒÉåŠB(„¦®*Í6HžÛ+›m¿­ Jm€‚ƒ ”ãl{›rÞ<ÍØÌç’Ùëôï´‹;rQÓüè­Ãa}9|ãÌg¹âØJ‹wJn¾o±#¿©;/ra+¯šß;œÖ±¾ã+9ÿ9¬¥¶qpÒaÿ‘rÉét’s+gOHZœO¹H|J-,{L)¨¢ÓÉ…ôT¼e~ogfÞÜÛÍŰé%o/Y|І#;35\‹SlâýjGœgt-•¢Œ×Ë5#E¥]C>¥“Ë!„P³Íœ²2œµ:­£'õ´Ù·À/  Ô†‚Õ#Z:5wUÅ—]ãð;R#Áõ ‘GÁ,Þôs~®§Ô5׳¿[û]'S›pkßÇ;­ädCÆõþaók›dl’Òâ„ïqBê Øéï—~¶¼âòÏŸ_ß@έœ=!iq>å"ñ)µr%FòJ†•´?m!4.¬äˆ„ø9lào%«€OqÀõܬؿŽw"ÔŽ8„^nbjµÅRÍþ·ù%òUPr¹"d€ª†?{ÔªO˜!Ûâ–ø”ÚðÿÞqØ^÷Æý²4Í‹m^@ÌÀÖ;gêïí8>|ê¿ÞÚäûI¹>!Ö”•’·6m\V^wÁ3»¡Ç¯»ëõaǯïô¾m[®û¼EÃG·¼þ0—Ë!-q@BêìäS)zÊkû§É¹•³'$-Χ\$âR+¬‹@mÈ>%Ÿ¶Â>¿oÓŠ¬Zã~¶ìÿ¼“dð~©:%ÔŽd)œ­¬²3YOmNŸ¨¹"d€ŠöªîY…Ù–«€((µ¡lîƒÿcÇè¾U4u®åÙ®X›g¤µ}öLJî0îàk0Jçæ ºÜ~ÌÜ_¾éCœ“¢@@ð¿tÄ0ïÞ¼½|Ú´éºÄŒƒÐ§rûh¡ü­ía×PÌ]`(†³qXÆž<¸Ý]‡íwùì*v"¤.9R-ä>7“Ê­œ=!iÉ"ÈE.$ò³x,e\aóG$ž[~§OØYQ‚, cP’·äÚAh´ˆëâŠFqaT„\2@ÅAÝsU÷m…Ù  Ô†‚¹Ûëþj®ç,4ñN~§Î—Þ°8&¿ã¯óØë·-¸ã=à .³cl9÷[nfðÏüù.Èòä䀠þÒzYZ7꺞~ÓÒ2¸ùàÝOšŸüôy|úØ»†°°‘ y‚PP3G¹5!©­fÛϧ°×ÆÓvÞ)¿¦½oÔbs ÙWݸõÖðöëù ›tRP„Ô]q‰V^3O9œÓ¿›N¯Á–¬%ÝøëKã°M<è>^•Cέœ=!iq>å"ÍÇ&¦röThY­RÑ5l±3ëø`Wý2Þ©×fÇ ö¾}t6W¡d ¡v-!W„ BÍãª;­í™™öYEÈ6(¨ `[þ_gTÜ¢pÅEW=vÿâwê|”8šâ¯s× ×QZÞÜ ô¶”»®åzò±lÎOÙ[DNoŔֹn{L'Í3v†™~õ¢´nÌãSÎ^.Tä BA!d½Ù\µ&+IKi“s×ï>Ýïù$mÂÔÖ°µ(]ç‡6Ô´>qÙOž©(HÕ*Ëœ©³<û©içšìd-Eg—5¸¾Åcž^jܱ[¦ä®¯lºèþ,N.·rö„¤Åù”‹„@L)(4e:w`sa¦^CiõƼµ®7æþ‰Ê"#í=“å %®‚€!ÔN ¥#äŠB(¶7¾Z_’¥—t’ͶòÇ xà[~€‚ŠSüöuŽ÷æ+;¸Ÿ^NŸ×ê!>SçŒ`\šQË­Á@Èö'´>±¢ñ\îâóìGá 䯠¶Ô™<ƒK¼¬â}ÊÙË…Š<ðUiìu³¸ÿ-ŒvF˜ÅSÊÖA=Èä$Mã,–4 §Îå® k0œ‡9§5Cø³šo\Su áY5e™¼vfaTÏ!Óy³mÚ‰||Ší·Õ™ž»?s»FxkÇP±Fá៛´3ö‰ávn‚Ú9í%&  Ô†ÂñöœŒY7ƽ"NË]Ö` ÔÉHÂþsÁ-™.0Â5^Tß¿ãøðIÁ·xÈfioªh0yÖ8¹´–Èþy×Ð6|+é•I¶d ò@]į®6m^𢥏Ï{ª]†PPjC¡‚B–uœ°IùyNñÔ¹Ü5yùÇ-¯2ó  âÂ{âBK~–ý’RÏÒÜÛ*gá%‹¶ì--0êµCæêíîZeí‘óQûòeFZC§æ•Ô´;¼ä% ˜Ìùî+ë¸voI^*MéRòŠ÷´ Ø¥¢¢4úŒ¢ÊS9cÑŧ˜sÑ8Y¡ß±Y.8QÎÕ~Þ°„r&Ô‚ß âüÌöÕ$q‘·Ž‰ò#ÛTÄEØËê»Ê?x›?*Ù›½>…E½z\:]ò’[ê¿7+h*„PM]?Tšmðû…æ”(¡ •Ýõª²ã¨ BoŒhΈ±è"B‘ƒâ¡ËÊë.H®$'ŒAjÁopj¶rˆ‘ÖÌ„¦"Y(g++ôŒFÖS›Ó'*4|~ߦY)´Æ'û¿0¸dS!„¢½Š6«0Ûrõ¥6@A‰dKF¨‡–z)ôxÖ„8,cOÜî®Ãö»JÙ×ã¨ä´(·Ùã5ÄqW#â‹G.ÃQD\ÒÈÏâ°”a ="Qk„Zð[AÌÐW¬à¡ Û-R†ÐT$‹€Ðh'ÉŠFqaTU8ªS'ì¬TB¡¡©BñcP÷\E»­0Û  ” Jm€‚iÕ%ÓJ‹ÇƲ ªnî‘_ÓÞ7j±9Ðì«nüЬáýÈÙ;»¸oúèÆ__Ú‡mâù@÷ñªÞIü~YÏϕؤÇ(fŽrëOR[Í6Æf>ÏÍ3OÛ%£ÞÊe,ºˆ_¬1¥ ³§BËŠ“Š®a‹qXÇ»ê—ñN„ZPRA³7«Y}®­ºeÉBS ´°¸!u¼`#zûèl®BE5{Œ+ZZÛ33í³* ˆ¥6H߀[Mm+Vg§é5ú´ìÕÛïZaˆQ$[r~O >Pš,ÆÚ£ƒ½ž0µ5l-J×ãI  5­O\Þäìbž^jܱ:;YKÑ)¹ë+›.º¿†¿_&ÏT¤jåÞwYo6W­ÉJÒRÚäÜõ»O÷‹?õßÊe,Öˆ)Å‚¦Lçl.ÌÔk(­Þ˜·¶Â5šD¨…ô¶«„½Î8jžó­_Ù¦ha™û'*‹Œ>C©’Á†Bhêj}I–^Ò)€ˆ¥6d×ß:oVp?¿ÊG&f™Ù‰‘+¹Ùm½Îí´•£©±ÔE¼à^.^íŒ$  Ô†\_7±/üñ>šÏýÖ6yýIÂC²J꯾_øóMѦ"â L hà­;@]Ä8…‡þmÒÎØ'†Û¹ >jçx´s” €‚Rr}]µè„†4‚Å«¼ Jny:íœæ÷KÑåün*"·  ¼µc¨‹çÕÕ¦ÍKS´mÌ+®>v=bG%<  Ô†\_—†Ô¬—‚šÁ‚ÇÈßòZÈäµ_Šk]«ßMEün`oíØêP'  ÔÆ"Ç ¼÷KÑóN~7‘ÜÀ¼µc¨ @€‚R²ë 6p*h©xT¹×:¨»^û¥ìå”o* ðÖŽ .u JmÈ~‹çøe³–Ûëä§'oíŒý퓟¸oñt[{œ^ÃGÉgöK¡ÏðNÊ7Þ’Åh-€ ¼µc¨ @€‚R¤ý ¦î´Õm]¹$…ÖÐ)KVn­kûÕê»= k’Ž^R\wy¼m(( TÀ[;v€ºÔ ((µt_’ˆ)à­;@]ê„mù¼þ È̃‚Š[@A‰A -pøP›‚‚¶ðÀ”Ú$ÊO!Ûê?¢ Nuш0EihãòuÍÁú¼HB¡«,Û_ -_o§ ÆlË"Ô<(¨¸Em-‰J  J ðòR‚ø)Eø\<ÄXŸuq;÷ReÏ‚Kt‘„RAQi—”^N¥@AÅ  Ô(( 1XÌzز·´À¨×j ™«·7vâăsÁžX¤0Tœ¾(Å™üÉÂýŽåÇòÀÊV çÚ«ÇÑê’—¬ØRÿ½yAÛ¼»R_’m<œ7Ⱥæ-÷RUùoóG%{³×dz\–ÍX©ë‡JC[5 Jm€‚ƒÅ(¨]웊Ò4?zëpX_ß8óY®\ØàN,ò*¹ù¾Å¯'kˆ_¦q¤ UÃÒSuò–ù½™yso7ÿ¦—¼ýÌš½M9oöœi¥$Br]ó®èZ*E¯!–kFŠJ»†|ò/—%Bó#„šm攕áÔ¨Õi=©IAÔ ((µ H £ Vr *ãzÿ°ùµ6¸‹ü†ŠçƒÉUPbÄ~äÂJÚ fú9?‹W*;‹'—(¡j„ äÀNøÛ=8T¿àL+%’ëšwEèå&¶1V[,Õì›_"_%—%Bó#„ªÁ¹½ã Õ’‚¨PPj,FA½oÛ–«qMd>ªh¼å” ܉E~C-¶ðQÅG“ÌEv Ї6.+¯»ÄJrBÕ áóû6­ÈJ¡5n?ìÿ¼m„gZ-¾®=®ÎV6z£‘ Öæô EÈ¡ù).Ȭzm˜€Ý Ô(( 1Xä·xÈa{òàvwFtø£0Tp')ˆ‹ùY¼€²§°jª°Ó©ÇvV— ‹0Ô^cPwCR×W„F‹¸AÑ¢Q‰0!K„æGÅAÝsä¶zm˜€Ý Ô(( 1XŒ‚ʯiïµØhöU7VP5¼ýz~ŽÃ¶ð îÄ"å¡âqþãHAª¦×~Ç Öáí£³¹ÂP¶&nTjë™V‹¯k%'d‰Ðü¡fqkŸÒÚžÙ˜iŸuP‰ÝhÃ((µAîë`s ^P¾öFhÏ_O˜Ú¶¥ëñlІšÖ'.É4y¦¢ U+ô܉EÊC%q¤ UÃÜ?QYd¤½'³Ü¡Þv×}¼D/éd]+)8!K„æG,ÈÔÕú’¬DÍ€‚R~lNÄ 0š;@]Ä#îåâ…ÑÎH Jmys’€6 nãP¼µc¨‹8¢ððÏ¿MÚûÄp;7ÁGívŽâPPjƒ¬ È›“´aHp€Bà­;@]į®6m^š¢¥hc^qõ±ëoà¯×E JmøQPÄÍIÚ0$¸G@!ðÖŽ .u Jmø]óIØœ$  C‚ÛxoíØêP'  Ô†_EØœ$  C‚ÛxoíØ­ 0`Ôi‚{ƒ‚ŠSʱ‹N@†·ñ($ê='¡¹pë 0j3e  TFÙbN´dÃà6€ (sŸN5¨åÚ[±M⨠Ÿ&*×àçd¶+' œ6`§¼öˆv±¦¨}~sBØûZ.cÈVÌÝê†ü>%Ÿ^š Â^%êï20`"o@A© 9V`ã ¬xºÎíMm’ö ”Üvå„Sg×GœÏÊkæ)‡súwÓé5¬åÌQnÜU¸‹µñ´ÝoN{_Ëelb'ºè¢ÑPP`À„Ö€‚R‘TP°ñz´Œ[Å—Õ#ZŧPAÉmWN8}öSÓÎ5Ø)»¬á§qìßz³¹jMV’–Ò&ç®ß}ºß.uìœï0¯ìÞ×’C¨g WÞåÃ2‘ ñôÒoBÒ«Dý]¦rÓq´ziºA‹Ç0ƒŽ„oQ/KPPj#’ 6"ƒGA±ØŽãa¨Íþgµ€¡Íxê;›Ïáë¥å”øì±Ñˆ0+XUZ°åÛc½#r‰º¼%-ÉZýÙç]Þ¢eÈ*Å•sVkH3æ­[[}âÛE™_…µÓÞkC•7PSJ ((µ•Y<+BÈS Š`ã×gçÍÁæú%œÒ(ü…°³çÁÉ“›± ÙõW­ßòú¸v\7}ûí¾LŠ¢’v|-%}.nôIœ7PPJ ((µ H<@A)í¥ùCn"¬ XÓÙ{ 2å’vöbo)îÛá¦ý•K³R´>cåºÚî·8éì½W³ue*í5*™ïøå#<ûåºr’tܬköÚ/ªO™.ˆFÞü–ºãx:—ÿµ÷ÈÉIFÛy ÆRZ:-ù'G›Ý#Çs-¡T‰TnØ–ÄïeTÜ H<@A)$|½Šäû%º ªóæÐÉ“›8oÙßóNû39·í?´ô<úîKn+õÀ0ïÔVÅ*¾öÆùžÇj >º‚¢¤%!ÂUÜú4Í–³w;zOœoÙ^’I.¯¤kgï%œúF¿É‰£Ý_\_×9Ð~sèÔ©­\$E}~‹#wM.‘š ŒA© PP@â *º”‚f Ø ¤Ñƒ¿ð³xÉÎây t¸‡_JðTW ¾íìíÅZ¢šwZ‹¾r9}/RPzÉŒ"ÌâôFZíÉîc?j?P¾ÌHkèÔ¼’šÖa‡Ôh !EB BDNèY÷áÊu¹©´FŸ]ZÿӸƩØ÷Ïî-ÉK¥)]J^ñž–Ÿc8\jôE•§K?¨g9xåêY¼Kγ…=lÙ[Z`Ôk5†ÌÕÛ;á$å§ *ÚAÈFv3Pr ªšŸ{J-ÞuèxûåÛ#^ ¡§êä-ó{;3óæÞnÎÛ¦—¬åØr.H3–@è9þ¸xù öÚÑ'ë'öñóØëœNg@)bj‚7ç%ªh¼%1( (¨èô{âPPjCÉnÝÁú!‹¿­ÂÒâÔã ;«!E¨œ‡9§5CX-|ãRõü§@¾DóI‘ƒ0u‚· Æ öxAÝAâÁAzh)E×ãÎrXÆž<¸Ý]‡íw)z.€2@AE—xß#‚”Úëë²*š.Ü7ãd얇Ǹ·ü²¼S/lŒãí£³¹Bý€P§Æõñ¾æ‚[*8»¸ïÑèÆ__²!lϺWå”"!/ý&ïÍÙõaå5ó”Ã9ý»éôÖr=ÎêÛ‚¬Æ6s”[-ŸÚj¶16óyn>ÎxÚ.ö&¾u=Šn,™VZ<6–•XPusÉå×´÷Zl4ûª?®%1Ë v>€‚Š.  u JmÈõuuÕ›×-Ë2êux£‘ÂMûÛ†œ.¥ÁÜ?QYdô`ñ¼…§®(ý- BÌÓK;Vg'k):%w}eÓE©OÏ)bðÖo¤„žýÔ´s vÊ.køiœµ™Å“ ò Mc±ÔÁ^O˜Ú¶¥ë¹cÍ—m¨i}¢(fPP a[µ¸eÆ8ž>Ó“óhö ‹ N@A© èë€Ä#Æ @A@Ü Jm@_$b¥pw/~ÌJrc±àv<G.((5ã㥎ž†²¼dþ ã¹ÈmÔ3 ((µ}xˆ”ßݽ’›ï[ì.Ù#·±X;ž‰#—C JõqeŸ­kô ©›wZüTp6œbí<©0•]2·´W„³>¡(*…¿fë‘áœüaax\!”Úëë ~+¨Ø'‘úÌ`T_¦FvÔ´ð]l)ÃÇMŽøQPoÁØDpŠ©ó¤"\v~ êž+ÂÛB'-·VP;ër$+(Âaaá~\!”Ú$  ¢K@ Š™±üv‹g”ü™®á^‹šÓ¼röTpïæŠ®a‹qXǻꗉÓ"x îÀ&‚SL'á²Ïã"Lk{fc¦}ÖA5ábÖŽXÇÄ`sY ÷ã !  Ô(( ñ]${÷B”dþ–±ïF:9=¯¨|÷±îQ©ý 8¸“ö_ì5e:w`sa¦^Ãí•·¶bŸä#•óÜM§˜:O*âeŸºZ_’¥—øœª,J§5þ?Ó›#Ç*@A© PP@â *ºˆ{Ä̼¼µ‘“LÆžh=a ܸWÑF;#Q”Ú$qª øÀˆ{n¬ÉXPòÅÉ;3á݈<…‡þmÒÎØ'†Û¹Ù7jçx´s5Ø–ÄïeTÜ’x *Cµ@Œ Š%ÚAÈH¼^ ðêjÓæ¥)ZŠ6æW»þFÁü‰ ŒA© ¹¾9úOT¯Íææ–édcnañÖp·=׺ˆ”K‹üø4¸P½)ríóSh Í_š$¾r›x€‚ÔIp=Ï<(¨¸E®¯ÈãäıÑwffâi_{MÞ¢—<«·ŽGCAx2P0žø !Ælzúeó½òƒw?inšáíåz©–˜‘¾ß~ËÅPq|¤ÓC, *º€‚Ô ((µ!××eò;œ02{ÆŠ0Bh(bÃt¹< s·HúçD:4ʯCºR)*©‹œˆäŽPöð#„Þ]©/‘<˜IaÒ,Ïr¸à©gi®\9ÏJú°eoiQ¯Õ2Wooì|bã“sá5–Õ®X›g¤µ}öLJî0„èΰì!SÊË¢§é~éñ±¡7v;ÃØ&§n_}ÀÛ+WPÎÿ(==><áp°1¼}ßçŽ!]@Aê”Úëëªù)­Ôâ]‡Ž·_¾=2áõ²–<Àhl9¤‹.ôŸºüÅñÐ(!¼Z@o>eÿÝü»¯‚"~4s„v99§y§…PÊ’Fh$ë½'è~*¾q‹“]Ü­¦ùÑ[‡ÃúrøÆ™Ïrår.¼^zÃâ˜üŽ¿Îc¯ß¶`½t€ü爇L),‹BZêL—EòØçTößß.m9hš“êNÕ™®Åê‚PPÑ N@A© ¹¾Îy§±Ì¸0BQÆÝv±7áFèm)w]ËyËæÂ–á£¬‡F ñ¨…_–P”á¢!¡~ ~´Gää ¥0i4ÈíÃFesCO£™\”A—6XÉ)¨ŒëýÃæ×6¹ö/VP£ÜÈÛý˜»føíyÉpŽxȔ²(dcÉ.¥„={}ì¹Ý‰½‰{6†·“äQtQ$¦2£B@Aê”Ú ôuYÇö]n?úy>¿Äz»Ë^æ#„lŸq:á+Ïå.>çß°„C£„xÔzWÇ^”y)(ÂáG´ÈÉ'”ߤïàíàòñÀã†w(ýÞé}Û¶\÷Žp†*oÉŽž ¯…³3’ò'@™RX…HŽA͉”g¢Ð3*åKßÕ™~h°˜-1• P'  Ô†’¾¡;ø}Åß0ræœÖ aòKl"ŒçÞ2ŠÒwm‡}!rò„R’4B=´”8éñ¬MrXÆž<¸Ý]‡íw‘s®äšð ‡L)|Œ Áë ^ðë f&§î\s­bÚVgzn÷RMâkûÍ{¥ç^NâuP“S1%Zb*3*T„qô4”å%ëpt$ÂÞPPjC®¯ËªhºpkxüÝŒ“±[ãÄÃ2×K–p€Bמš îw=áÐ(!^ñØŽiݪ†·!~dk¢}œ‚¤Q7–L+-ËJœt7—ÿüšö¾Q‹Íf_uãrÕs®äšð ‡L)|Œ Áßâ™(¯ã¾ÅkwI÷¼kh[ƒÉ3âäñ/ù-ÞÐÍÑÚÃwËöo;þä£٠3r@AE%çâ… ÁAZ:5wUÅ—]~ZVÈOÀ•sŽNÉÈ_µyOs÷‡¢ÌóËV¯L1þ½*˨©à¥6äúººêÍë–eõ: ¥5dnÚß6ätý– ±ÜÂ3b”þ–dž|h”ŸxFÖy)(ÂáG½í®ûx‰äÁL ’îÀ)žœº5YŒ{àözÂÔÖ°µ(]ÏÎUÓúDö+BåׄH:dJÙcæ@AE›¨+¨9nèØöºÿ3,HšÃšb@(QPì…ÓfíÁ§-§íS2ì¬YÜè“8o  ‚”Ú€ñö˜™ PPÑE¡‚ hSIÿä$ÜgÝ·²ûvDñɳwüòJí‚¢ñÆïóanã/š·O’““ŒVîYŠã¹–ŽPÁ¾.((µ *Ö€C¦(¨è¢PA´)Šœ¹$c{Ý_Íy+4ñN„ý@;¢`¢ÇOŽPnòØŽ¯ÂD8õ*¿É‰£•{V„ât#¡D€PPjT¬‡L-PPÑ%ÐY<%›¢Èù—LÂEW=vÿ‚ûvDÑ>ûõ)!B¹]PTP|1õ~“#Dëó¬Å!+(%ûº  Ô(( ñ]”(¨@7E!ì"™„ã½ùÊÎgNŸKAö!숂½¥¸òŒ¡!B¹]PTP÷pœŸúMÎ7 ü³"‡¬ ”ì뀂Rÿ{çãÖÄ‘Æñ)Oà <žZyÄ¢ÏqèµÖ§B±ö½B©×Úzm½{ ½*?Š m½kQK[¨!6ÆØÀ¡±p(H²Ã¿Ðçvf“°ÉîLf7èšìûyx|fwvÞù‘8ûÍììû‚‚rPPÆÂ£ ´:Ea\O«¡é2¬ÁZ׉4bøùîEò…»Ëš’g±Œ¨zAѦ Fʬ²}PŒêR 2ƊѶ‚¢õ Êl€‚rPPÆÂ£ ´:Ea\O«BäA%.µoaø‘öA©zDi#õ÷¬‘ũޒ”Ý Í ÊëRкèJÖ÷‡É»xöÍwñÕ¥ôš1VŒîÈÓÊvòøu@A™ PP@î ÊXTg•ø›qEÒ¡V§(ìë¤.ãöa;Åßo0ýàwñš)^D<çªKmVµ,ºAš”`g}eI»ñbmE¥Õuï·xeþ Õ¥dùK¡wGžV¶“ǯ Êl€‚rPPÆ¢œU°öèÆA,ìCFµŠšÂ6  Ì(( ÷e,ÊY¯«Ø+|ðùØZ¬]€‚ô Êl€‚rPPÆ’í³ ((@  Ìm®C‘ñ6½¶Q±ÙwTíÿcÆ_®4<ûµ‚ÐBulƒkµV7MÙ>'똔EgV‡®ov>= ÊX²]A€>@A™ Ú\7Y¥B»÷qDX[üe¤ï£ŠŒ¿\ixö5jù+{/+5†+}Þ‰,üË©Ž‰ºfYøb<²0mH9Ÿr(øæ>ýlòЉ[:ëù2b˜1™´:œ.âtšvØ<ÏÈýæOqóêÏy.Å›Ç ((c˜PPfƒ6וI¾GŠ«-­Ñ£økœ8ݰoG‰ÍZ°½æÄ·8Љ5™4q¯¨Yr#kÁ¶ê†ów)m(Ç-,éÆ/>[Êg6Gƒ#b”ò‰<ìz¼þµ »-OìÚ'Ç6£«Ó"[!´ˆéöÙpT¶XD?h9pýº·­Ûu¸ùöY—(~ƃ¦B s5Ž»rãÊ„²ykñzU%PPÆ 0'  Ìc®åÄÜ‘«}ÿøËNiûô‘Øy­áœ8k,$Bj J~†QQÚRBòC=eÛÆˆ·½‰8™#ñ& Ƥ,žˆQJ%Õ¨L³y#5†×º¼ÿP«®Am(Tâ! { * -Ô8܉k¢ÉÅÙ J.–>s8DIËYªÕÑe,  s ÊlðÌu‘{ñËÒ¡Ö€VìèQ<52Ö ägñ‡”RUP ÙÔÄÉPboRºˆQJÅN3YZƒšˆ)¨QyÿP“}P¤}PkÁå±ïb;œ³aÕÄVPGæï£‚]úïlã­¸R8É«“ž¨éùÕ$û ‚Ë  ² PPJh?ÍžF©\%2ÔR[Q”Of9ÝFžê‚‚2´¹îåú¶Ë7ÜþÇkQ!¸ÓŽ…Á®ØMVk@+F8'ΣW~‡¾ó-G¢«^ÝPûÀ¨ˆ?¤”º‚ ’iO q&°‡ªÜGžˆQZc×ÛñÞ§/΄„Õ”}PœC½{Ïw²}²ÎßÅë‹¿ì6{Åu¸Å™"x6Ò)¨E÷Üé³o6ß:|ÖÝë”×Д¼º”湆½ÇOߪm?|îÞåøû}œ€‚2ž¸xÊók¾­xÛν‡Žu Ü‹$éjš#Ùϫ;û ãKýW’FãŸÒvk”¬ãy¶’{ëO]ÑøvðS…ÝÙ´7 i¯ìµe!ý¥|mÛòϔ٠ÍuަCûv½l/È·Zò ˪Þúø¢+û’k hÅçÄY£ÈÌ·mï¼J,l¯m‘½‹'·ÀŒ{ÅRJõÿT?éìþ ,FUp?™¾ú7ø"FiUP¬ÈVhùú J /¾¡Îy@A‹>%&¢¡€wˆDÔ}ñ¯ò¥Tš#‘DA$¬Ì\!Kßµ3 ûË;~£[ô|!~«¿Œ#C…Ð$¹-6Æ©ŽD’oôÚBîlí]r5âD£[ñB‡„>_(kg°Þ+þ·]õõÉÍ2 2J©ö ¡ùñ&\o•3ã¤åyJûlƒ4G.´f«æ¦|ÜiG[nŠæò…ÑZšÝ#NôÍ<¿‚ÊZ@Ae#¿^o;ôJqž»ãljÔb&瑾ՀQd¬ $÷±Cº#™X•žâÕPŸâ©,8xÞÅEH4„£^êÛ¸ú|¡#¥ÆcYN¹Y†AF)F,¶Æ»ñI@ŸqrY¡ê'Â0Hsä¢QA%}ÜiG[ÕfŠËFwØ ŠÇ5 Ý3(¨,{ÀSñ|þÛù⿯Ž´‹õùBù iÁç–<‹aQŠV/BÓexå¤u”bÿn\rç»ËšâlíÅ‘‹6%û¸ÙÕ¥d¸|at‡­ h=â”Ùä  ŒE·‚Ö÷‡ÉËYöØËYlG"™((„ƈÙNùÑ£¿‹*Íò†$-^—|þ‡dQ¥tùB µáMG%½¾ò}Q,Ïbd”bôèA%nó¾9Ä6.íƒR5ÞFz}ܳ"D§:^àl-Í‘‹r U¯ü¸56Ãå £;ò´²<®i€‚2ªq:àþ²ýOÇ<lµL%G~ût**­¨®{¿}ÀwÄv$¢IA¥Ô;}ë§¶y¢Óþw¦PÕåô¯F…õ…a¢—ƹ¾ÁÉÙŵ¨Yñÿˆ³–奺§a!¼8ÝM,D” ®~|0ú($D{pºÿŽ ã ˜PPÆÂŽêB;o±æÛŠ·íÜ{èXÇÀ½HÒO'„ª‰°Xªd¿ª;pˆû/}ôˆ´ä²<[ÉŽ½õ§®øŸ£Ÿfl•’vph4‘»¶œÑJ‹‡¨ ÊlhÝ%¥ý±˜×ëÒŠ“²8BÉúV^êA¬Ô’5$Ï’Ò7.\ÓÞØeArÙˆŽ/$`r@A‹>%&¢¡€wˆ„š}q3Ô¬òW&TP¥?UAá „•™+XiÔÎ0ì£Hh~ü($÷rËàQPôÁ¡ÌlõIÙ6PPie6ô­A ªÏàæ§øª¯§«“!¢’tW4&¢rÝ%·Ð/¸ùÈOMžPPÆ¢[AI£/a‘s$˜83SŽÅ@I· Ÿ/ŸQ-ˆÐC²Ê´›m¡r™=~ý¹ï“º]v›ÕVRqà£^w$>¹á8¼'l/LVaŸnðNׇ5•ö‚> stream xœ…XËŠå6Ýû+¼°G¥§ ÆÐ}o7$» Y„¬’™„Ð0³Éï§’,Y¶›†;–ëuªtª$¡ÿ¯ûÞ+üó û0ëþÇ×î—Oý?ñ­êüÙ=?:çÇ© F×?þè?¿êÕß~]Ì}Ìaýíñs÷òè¾ì šé§eôó:/J+¿ åÖaZV»¨çÕ ŸÑ»¾­ƒG©šÖA/ P9ꢡ!û/ø•+zr¯ÕLÿ܃A^³3Ô ‡ÀØäUô9Üó;C.Bùf ‹D`‹Szú˜{Á<‡PåW¦ÂI˜8wþ¹ñk}/Êc…­½¦‚hMfìcR‰±ÀRŨkPê#ƒÚ‡À-9ÄÉ;çF{°Çdøøû„~&>5”˜ë(9ÔuŒ‰\ÕppE&gà †ƒ0†=­_xó¯h}höŠTDj¼rÁ <1§,ÑáÅñ ´€[‘2ò]/V‰¦°PôÏ7óPv_REfVw•ŠÆkmißg(b£ZÏ2›Qí[Õ̬àÔ’©æ Û|˜¨¥<ÙZ,¤ób3â] ¤*ƒm(Ø9½4Ž£²ˆpƒ}F%C ñÇÇ Ä£æ³.edǤ€Æä—€°CŠÌ‘‰(™G7eë[´ÛÞJ>Û2-Eˆ-#öL?ð|Õ¢í_6¨ÕhvŒæ@S#œ¨žæeV Üÿ¨éŒÕ£>¤«ü^¶Þ‘1U¼_¬^e(Lqœ›£J ³J ?I -ur ý6Œ‹ü€»{RIí¤&H åqer‡…T=Öé4ŠV¨`¨Kð ŠÜÊÓcÎå¨Ù’æsP[žšÔÃx2 Ó”¡rÒO¹Ê…€6;Ÿ •˨¶c¤Ì;༾!~M;˜j3C:‘ùL$ßP˜©åMžØ—çL»ó—46zj®2bòÍ`KÞÉÊI½9›môä;Èmà€?çªPl{Ø ÕÝÍÇùÐÚ kÛ¸t.ò¾ýXC,±vYóøFmºM€$ˆu‰\Þ‘ÏëõñxbºÔ˜Ø&ùzRw úO«àb–&Heë¾+Ú*ÔüÏãš:*ä^Ù:Šš)q»í¨xï¸nª0'˜USeÏû®Ú¼í»Šñ‰ðŠ ý°©¨.ñšËÜYG•}_Ê p“6ÇEùs¹Ú†¸îÔf÷/;UOal® ±¹ß&ÀuËé`š»Y$î oôÕm͹íògÁ®ï.šŽoùö o#ιq\L`â8˜š:ÞòAç/ôl¯XHtÝá\à/> ä³"㿊r¶9ÖàøvÅPžˆúŒÎÒ»Õ7gúE¾yÎú_zà?ÔmGúáYå Ž[Æ?¾öß>E™³t7>“Ùø¬Ç'‘ÙÉþDö©ä žEŸnfÙT|oã;ôKɈi»èë÷÷îóOï`úû¿=%‘“&0Ðôïè·>¥g±â²ò¸"bÓʱŒvã­“íËšäñ­ÿ«ãœã øœé9ºèE'¹·Ó”Ós„Txª\‹™8O+„ ú"³®VÂ8@?íÊS®RÒu9ŠŒ[üÇÿuRr <Þ£m˜è0ÇX¦äËŒ§’ß0‹ÔŒq#ÃpÀé2 &ÌC¤Æ„(·%Ë åÀ,cK²Ñ"²Ì¶,¾x2}/€c±$Á FW®þÒ*°Œ>%e¼2~Êzâ/ív-äÖ΃”å9ºéE/… •Oá;Y °Ò_BLSˆä¶ÂÚäQäØU!wp3Ù0í ·• ,N‘{wÅÇœ³Š¸áy_ ÔÌbO^Od4=™YF:±ùaNdÈ:äo`)âæ‡ò’s<ɘslGúSô9çZÎ!œ™¡zâ\Ë%)È+·A¡&­€eŠd¬I¿iŠÏ´[èDç0ÍBV—UtÕ‹f C« t²JðJŸU1Na’ã q“M‘iWÝ:̦DÕ–p+EU¦¦ M6gü©K°] endstream endobj 12 0 obj 1503 endobj 15 0 obj <> stream xœíÝ‹WåãÇñé9»{f9\ŽàAô iG#ó䵦ú-¯‘ZI·/ùó«ÒÅK)iHšÙ×è«â% “B1uaYÜˈ•F™åùÍÎÀ²»3³wY‘÷ë<çÛÌ<Ï3óÌø=ó9ÏβsãàafQL/€F Þb"„UÊ)œUújM‡lÖÑlçjw‹”û袊[d9É!¼„žÌ°ÉDy±d¢² {\—VøÓÍReÖ1ÂÎeŸ³µf²¿ûüÖ$‡4òÈD#bÌD…,;Õ_®YÇÈ;—å j÷Gµòíê[Ö„™Ï¬ß£M!-¡ ·¨{ó~·óå…Ór%‹”3yîê›ež¸Ì?Ÿqܬcäë3ñHù޶t»}}—O¾è¯zêb,CÒxvMR¶X7éò¸;öûg “v{ƒgUv¸CR2ã­S·¯§i:ŒJ­j¹PXª¾»êñ8/6Þ¾¢0–Käyo¼²%ûƒ–^Ÿ«åý,e9¯Ú¹c„1x?™á_-û¬¥Ûãu¶×o.Ö÷Âj¸Û¾·¤Á‘x{µ‘ª"\"ãöêhÛcÉÄá ŽT~VŽûyâ ¤ö¶iŸÎ3øìT™v©·ý± IS!ü3£:u0²|^í¾!¸qcМHÛrj°±6ÛµiUÅþL¨¡©å’+êY¬UÞ0¸Ããê×Fîa Ô½í Äé21ðj¥n$ª—Hÿx(™ÝØ•ª{¡ oø²ìÓßÉ•OwKÝÿ=vR}"ß±QH¹ÓV|øŽÜôÁÚ§fdK1ø¹Ÿò_³=ë·ØEȧ…jw)rwŸQšwïX\hÜUÆôÒMG fRfGwÆ;,³ ;FC†º7W”L̼n¡ÿ@’n$ª—èŒ ú;³FËDýöùê³9Uò9‹É”M–¿É÷Ϫ6]zðgv8}÷0åêq·žít+9!; ƒ8Â~Ö«ÝOE{Šg¸%lUö8ÚÏ}óum…zâËcÙaèìì„%æy¢aUÔy¢ÕÙ­×w&¸ê%ÝHU.Œqf™Ø¹Öÿ@j|u£ãºÏwÝÑX§¬Jë®jµawòóSý·ÙÙí)ÈÄRõ޽ë¼Ëç¹úÝ{…Á-ŸP«þç¾™ë·xk¦úǹéØEe®Î¶Sµ›Ë'™4BMY½³¾ÙáòÈ×®U£mµ~¨ú£÷½ãÿvP·-.Ÿ«åƒle9w›;òéGƒ·fºÿÐe[z<ÞÞ Ç·•„5¨T°æ{§ÏÓy¦*3¸ÊU)…$h·¦—Æ8³L”åîúm«ÍÈÏ´ aËÌŸ±hõöú“‡†²c¶ÿîýy *˜~ç2ÑwzKYQ®$ ¾0Ùµ½tjŽ5òYöýøÉ¦%M̲ )»ð‰²Ê‡¾2W&vß±áÙ¢<»úÙî‚Õž3˜UÝùeUyIA¦UX³ Ÿxq[CŒß;5Rë§•KKÔs™8ƒî{§ò÷[ËŠò$‹á—K¯ÖV<9ÁnXez‰`Œ3ËDÆ2 ™€†L@C& !ЉhÈD4Á™¸²r;…B¡P(}‰1Óò[¬Œ¤Ø31usPF2Ff?ªöq!ÀþÞöëý [F~Ñs¯Õ:d³.aÝ{e?_y¨+Ê+Ûô¯-ˆï’“Àá!™¾È™¨-x\WšöÍÒN³.†Ý=ÎK?.ì5q €LLæ(1"ÀP,™xC}5›Ùf]Ìv(Ë^Ç©meÅ2mBÊ^ZuÊ7ü.ÚÀ‹ÞŒÞûÖwìÝ¥³òì{þ앻ν˯eçK³'eZ…ÐV/Ô¼2or–Õj/x|åG—›yŽ¿[6« ÓfÍž²pãþýPu‡ë<°qÁ”l›-{Ê‚:M^„X0<¨,;ÿûÎâ¢\»5{Ʋ?E¸ªÁ«êËïædX¤¼âeÕ?F½É ÀP,™èÕæ‰C3¾3ÑÛ{éÛ= i¶*M_s é’Óãó¹ïŠÙ†{ [õl'–Ô6_uûÜ—ÞÌˇßùn{ùËv§'°*UþQiæéi;P"¤ÚöEBT5^qy}}Žs+gD=}çz›X\×Òãñô´Ô• Ûg„.fí{'C<³ï\§Ûçê8¶e–¾—áÞ\›$±ä³Ö¡CO·M®@2ÈD0ËóD…/|ÙßóDKF~Q馺Nƒy,_b‘áÞÂV+„Ø/æ_g…x.ÐìXÐŒIY=;ܬKˆqÚò¿„Øtèt›Ãa´Á«Ë„¨ÞÏ^!VDèbvЗ„Ø£›ÍEÍÄC]Ønv’A&€!›׃nà²|]›¶¬Ý–eÙÛçhÚ3G,û6ÖL4Ü.ŸÛ¹vÑôüLÛPÈZ Û‡­Ú•Ñ(¬V«ÚGˆádñ…f¢áNä–šÊeó‹ò­öi¥oÕ{¢ŽVÂ5@.!¤]̼“Äz)‡l7»É À2“Ú’‰;…xQ[}2øUžX¤=ÌJ,•yÐÛ í½n¯frûpF’n¡««…¨øP/–UYöu6mâƒý„.tžX#Äò‡6;èʈóÄ!º†ÑØ®üC|b4O4»É ÀPï&I<·¯é²Ë'û\—›ö=+¤ÊÁOÃîù3Eî©Ä3q‘[¾s¸}>wç‡_Í 4›'ÄN_ Yت»:O¼°ï»K½Ÿ»û§“{+¦Åluê+5§.8•¾WÏm|Z,ìpÎ «xþ³V§×ël­+ÖŠ(Ï ·÷½mÏîo¾êñ¹:Žoy,¬ö€$JêÚœ^eL?|þ²ØÞ»Ñ&Ê?oóºíàÒáç‰fW d"’åî#ÿ.+)È´ kfAIyÕ‘Ùø3R¹»THûo„>gŒð82Œ§¾òé©96aÍ.œ³zWk YgÕ‚Iv‹Ùª,{ß_3oJŽd±/)÷Èe㘭^:Rµ´hœÍbÏ/.Û|«•îpŽýëçOβٲ&Ï_ÿ©#Ú÷N ·ËrÏ‘7Ÿ›1N²fÏ\±«=¼öÊÇ«fdX­Y“çUÔ\>ô¾uOäK)·(ô{§ÆW d"š°L¼ÁÛ1( …ò°—3q¤~’€´!ÐŒ@&Z,–” 5UûÀP’™È©j!þ­MŒÛ£ €û!áL¬™WÝü‡šSÍÕó>ùgƒµÆ‡ £BâóÄßص|¥’S+—ïþqàÞ½;eÂrÒðJ›ÞC•O=’mµfLz²¢Î;¸1 Ð̱kyÑ8É>aÁ[Í÷®î}±8O’&,Ø|ix?©?†$ž‰?î^¡fâŠÝ-J&Þ»5GHmF‡PÚØ+O8úÿüûîo×¾RZ}ØÖ,g«üÇÝ_[Ÿ¢hÂžŽ›wÿêoV–÷¶ µÿìtnuóÀðg§Êï#"¯ËàJ›Ÿ‡×~"7°=¬ÙµÁÅ›ÁËBä¶ µŸ'ªBrª+O<â‹Ò&hÕl»Ù2™¸¯’ÌÄP­’xò–n«i& ñI320òâÊĨ©Ô`åwÂ[šeâSB4Üúǰ™y©ÍÄ{µBlüç^l™Ø_ýÌä ‹a䑉€‘—ÒÏN[„¨¾£àþIu&0Z‘‰hbÌD …B¡Púc&š5à¡G& !ЉhÈD4d"2 ™€†L@C& !ЉhÈD4d"2 ™€†L@C& !ЉhÈD4d"2 ™€†L@C& !ЉhÈD4d"}&*ÿK¡P(ÊC\bÉDÅ=v1f"c™€†L@C& !Љ —ö?HÉŸ¤}ªô^x‘‰ §Ü]]7~]Å0Ó>ªô^x‘‰ §Ü]½¿ü1ºŠa&¦}Té½ñ"@O¹»Þ¼ýçè*†™˜öQ¥÷ Ä‹L=åîzû¿FW1ÌÄ´*½W ^d"è)w×;ý=ºŠa&¦}Té½ñ"@O¹»Þ×ß ¶¨â­ŠÌ0“f|yª‰p?$<ÃúóŽû1!”h¢Äuç®Y3->â­Šw–”ØYh›=gÂÔÇK×mý²cÀôDyÂ'È<Ò"á'q·ºµ ™ÖuǬ™Ö ÞªxŸ¦%vüÚïn?¶µH1nCÓ€é¹Ä;ò„Oç‰ c³½Ð?IÌÙi÷Oµ /¶÷ßò|mÁÄLa µ*-ß; @Cÿ\–z‡Fû{Óž Í•,RÎ# ÖìnõÝúCßѬ™%TÔ}ò½SH»Äþ²Ïs³=O™U‰ñM7Ïå . hUÎwü)™½ãçîýÍfk‰µ*-Ÿ6ÏÍïÕ‚Wh«}» •Uke³Cþ­½vв<ñãÛúŽ16‹Ú˜¿O€´Kì`zÏøML¼¨,7æûç}YgnkUÿR2ÖËþÕ^ù-¢V¥åwlÂÐ+ÿªfb†¶ºVí¾ÁÑ^Q«^×wŒ±YÔÆüŽ ¤]b¿zØî¿·þô›²ÜÕêŸïûI­JRoûZåé×r!jUZ~ï4l]žF5¤–k«vò¯Z%é;ÆØ,jc~ïÒN¹»:®ÿW¹ÒwÔftoÿ¤ïW¥¶\­:¬._é;­Õj#TÅU 31ý„ àÊ‘ þ)íÕVW«£ýBm„Ž16‹Ú8É+/2ô”»ëϽ¿ÄU.îUCpæÕÀ–¦™jD,·m””Åìíím=îÛjÍ"TÅU 31ýÐÑÙõ¿ƒ›§ù¿wºîó¦VÛ±kšR+m<ÑØÙ¡óZÃ×u¯/™Ö1r³YjÖ:nŽ¡q’W ^d"è)w×ó=7ã*覆úâóý-íçç¨SÅÝþåîkï­™;Þ2‘lf^W1ÌÄö34õØ2ÇÌXø|å£]A'ÕÝ_¿«rQñÄL«°e/~ãÿŽvwŒÚ¬ióâÂlkŒ“¼ñ"@O¹»¶uÝ]Å0Ó>ªô^x‘‰ §Ü]è”GW1ÌÄ´*½W ^d"è)w׳—}£«fbÚG•Þ+/2ô”»kãÏžÑU 31í£JzÊÝõô÷è*†™˜öQ¥÷ Ä‹L=åîz¢½otÃLLû¨Ò{âE&€žrwåá8‹^x‘‰hÈD4d"2 ™€†L@C& Ù Àc–‰÷cFrî éeQL/€þþ¼Å2D«”S8«ôÕšÙ¬£ÙÎÕî)÷ÑE·Èr’Cy Ý¢32‡& 1±d¢² {\—VøÓÍReÖ1ÂÎeŸ³µf²¿ûüÖ$‡4ò’ÌÄ‘?4™‰‰1²ìTg|¹f#ï\–/¨Ý ÔÊÿµ«[lYf>³~6…ÔO¬ §Z²ìýnçË §åJ)gòÜÕ6yä ¬Ù„Å>¾¨lëÙÁÆò·Õ«æM͵[-ù=¿i÷ÉNÃSÐÝsú½Us'çH–=yÎÊêSn£ù¯á%j\,”S^×âo/·¬³)kÏ7jU­µo”Í.Ì‘,ö‰óÖÚáßBwm¯Õ­Ÿ;1CÄu¡abÌDÙ§Ì—ù3eÆq³Ž‘w®ÏÄ#åÿ9ÚÒíöõ]>ù¢¿ê©‹± IãÙ5IÙbÝt¦ËãîØïŸNÚí nœUuÚáIÉŒ·N9ܾž¦5ê0*µªåJ$)Sßï®z<΋M‡·¯(ŒåyÞ¯lÉþ ¥×çjy?KYΫöÄÒQ½Meþƒ¾Ð(7–ûÊ›Ôò~2Ã?°²ÏZº=^g{ýæâº !¬†;ï{K·WO *Â…€1ËìWàbÉÄ!•Ÿ•ã~žxé½mÚg§ó >;U¦]ê A,CÒTÿœ¨NŒ,ŸW»onÜ4Ò¶œl¬ÍvmZU±?•Æjhj¹äŠzkÕ£7 îð¸ºÃµfƒ žï÷/ø»LöïdEóà87¨ûÜ:‰Óeb†aÕJÝxU.ÔÈÿð Œ0³û^õ½ú_ »á˲OŸ‰Ê‚§»¥n‰ÿî:©>‘ïØ(¤Üi +> |ÇFnú`íS3 ²%‹üÄOù¯Ùžõ[ì"äsBµ»¹»Ï(Í»w,.´ î*cz馣s(³£»ƒÆ–V:ž»ì«R÷ DU`TêW”LÌì!¸JÒ'PáB¥å·`$éïÀš½&¯Þ3›Q%Ÿ³˜LÙdù›|ÿ¬jÓõ f‡ÓwS®wëÙN·’ ²Ã0ˆ#ìg½ÚýTlOñ¶„­ÊGû¹o¾®­PO|y,; —°Dœ'ê·ûêg+ÛmÏØ”ÿ-©÷i£Î­þ‹o½>xÐ3ÁU/鯍Šp¡`Ì2ËÄεþGQã«×}¾ëŽÆêÏÕïÞ+ nù„Zõ?×ðm\¿Å[3Õ?ÎMÇ.*;pu¶ªÝ\>Éì 2qÊêõÍ—G¾þs­m«õCÕ½ïÿ·ƒr>lqù\-d+˹ÛÜ1ž¾,7ÌUÂMzµC¾øº2ÁOjYæ­™î@ÙÁ–·÷Âñm%a{¨T‡±æ{§ÏÓy¦*3¸ÊU)…'PáBÀ˜e–‰²Ü]¿mõ¢ù™6!l™ù3­Þ^ßcòÐPvø'8"ûó¡Ÿ‹še_„LôÞRV”+ ƒ¯Jvm/šc¼E–}?~²iÉc³¬BÊ.|¢¬ò㡯ŒÆ•‰Çwlx¶(Ï®~¶»`õ‡ç æSFGw~YU^RiÖ¬Â'^ÜÖá{§a'øÍÓþD¬¼¤Î鮼•¡¬=õÖ¾õÓÊ¥%êMœ¿A÷½Sùû­eEy’ÅðË¥Wk+žœ`7¬2½P0f™e"c ™€†L@C& !ЉhÈD4d"šàL\Y¹B¡P(”‡¾Ä˜‰iù-VFR왘º9(£ ™1f?vªöI"Œeú[n`Kà—ómùEϽVëͺ„uì•YPü|å¡®(odÓ¿› ¾HN‡‹åE)<"™#&r&j ו¦}s„´Ó¬‹awóRãÇ {M\™8’G$`ÄÄ’‰7Ô7¯ ‘mÖÅl‡²ÜèåqœÚVV·£ñýB1»Ãpoa«žíãÄ’Úæ«nŸûrÛ™bùð‹Ým/ÙîôV¥ŠÃ?*Í<=mJ„t@Û¾HˆªÆ+.¯¯Ïqî`匨§ï\o‹ëZz<žž–ºRaÛàŒÚE#÷m•¤ÍNYÑ»=#¯Æã¬¾w2Ä3ûÎuº}®Žc[f…u7;q×&I,ù¬uh Ãón“K‘Zd"€±,–ç‰ !^ø²;¾ç‰–Œü¢ÒMuÓY¾$Ä"ý…­V±hB$Ëg…x.ÐìXÐDIY=;ܬKˆqÚò¿„Øtèt›Ãa´Á«Ë„¨ÞÏ^!VD:ÁÐ9æùÅbB­×{`’ôv¶å%!öèfsQ3ñÅ1Ô¶›]ŠÔ"Œe6!®Ý·eùº6mY»˲·ÏÑ´gŽXöm¬™h¸]>·sí¢éù™¶¡µ¶[µ+£QX­VµÃâ ÍDÃÈ-5•Ëæå[íÓJߪ÷D­$„k8w\BHqœ`W‘Û_bçЂ÷¦ïn6æ°1¶›]ŠÔ"ŒeÊLjWH&îâEm9ôÉàWyb‘ö +±LT¦?o7´wöº½J˜ÉíÃÑ DHº…®®¢>†‡z‘WeÙ×Ù´Mˆg öz¸ÐybËc?Á¯ ÄÔã²ï`¡XvQÛ²2â<1Gˆ®ác5¶+ÿ"ŸÍÍ.Ej‘‰Æ²ÞM’xn_Óe—Oö¹.7í{VH•ƒŸ4†Ýü;fŠÜS‰gâ"!¶|çpû|îοšh6Oˆ/œ¾@³°Uwužxaßw—z=>w÷O'÷VL5<ŠÙêÔWjN]p*}¯žÛø´6XØáœVñüg­N¯×ÙZW*¬1?OìZ#lU.ÿóD×öL{µ[}žø¶]<»¿ùªÇçê8¾å±°î$QR׿ô*ƒûáó—¥ÀöÞ6Qþy› m—?O4»©E&Ëd¹ûÈ¿ËJ 2­ÂšYPR^u¤G6þŒTî.Òþºja;4ËDO}åÓSslš]8gõ®Ö@³Îª“ì³UYö4¾¿fÞ”Éb_RþG1[½t¤jiÑ8›Åž_\¶ù„W?*Ýáû×ÏŸœe³eMž¿þS‡ÉU”Iâü–À÷N+,Ó«{ë9òæs3ÆIÖì™+vµ‡M¾òñªÙVkÖäy5‚ǰoÝù’EÊ- ýÞ©ñ¥H-2MX&Þàí …ByØKŒ™8R?I@Ú‰h’ÌD‹Å¢-T ñŸ2÷E™X3¯ºù5š«ç}òÏ!jG|ô¤NâóÄßص|¥’‰+—ïþqàÞ½;eÂrÒðJÇžU%ã%K椅•Gûƒ¶÷ª|ê‘l«5cÒ“uÞáAy}þÄL‹”_²ò#G`* À}•x&ü¸{…š‰+v·(™xïÖ!µÂÿs;Ë¿îºu÷î­®¯— éÝÀv{å GÿŸßýíÚWJï¯´í¿¿m«NtûÛ_;¾R‰€‘‘øg§s«›†?;U¶xy]‡PÚ^û\ˆuí?oÿEˆ\mi_o?B&FFâóDUH`uå‰G|†m†×„È0è´j"¸=™Ifb¨VI±Šç‰€’ÚL¼W+ÄÆîé2qð{§ç¿~äFÐöà®A«¾ÃçØ-Òø’•]"'ùÓ ª”~vªØ"Duئä&zŸ ñf݈Uª3Ñ@™8{ÇY×Àßw½úõ2!^ˆÞ€¤=˜™è¬{ù‰DÀƒod2‘÷!|1f"…B¡P(}™y">2 ™€&ÉLŒåý‰üù!`TH8SøþD‰Ïc~bÐ<ñÖ™m/<6>ÚS¼j÷ÐÆþ¯ÞzfZŽÍ–3í™·¾êOù›Ä31æ÷'2ñm™bÉ‘KýwþpÝ1[Ûxû ›x¡¾ËÿvÅ®úra{óö}9O¢Iü³Ó˜ßŸÈÄ—…8¨«]%Ä¡áµCB¬IÅi·Ä牪XÞŸhú"Å{F„°'z*$%ÉL eüþÄ@&VÄ4O\ÀY¼¸21±÷'?OÜš!–¹Üÿ×?}ßïxBÛx»Ò*–}xžh­äy" =R›‰†ïO þÞé©-eŹ’5gÖšÚž¡¾#o<ýH¶Í–ýÈÓo|iðÙ+#"¥ŸÞ‹áý‰< R‰ŒVd"š3ñoQ¤P(ÊÃ^bÉDEº£€û.ÆL`Ì"ЉhÈD4d"2ôÒþÇ)ùƒ´'íW ^d"è)w×kÞ[£«fbÚG•Þ+/2ô”»«ëÆï£«fbÚG•Þ+/2ô”»«÷—?FW1ÌÄ´*½W ^d"è)w×›·ÿ]Å0Ó>ªô^x‘‰ §Ü]oÿñ×è*†™˜öQ¥÷ Ä‹L=åîz篿GW1ÌÄ´*½W ^d"è­¼Ïïγ¨â­ŠÌ0“f|yª‰p?$<ÃúóŽû1!”h¢Äuç®Y3->â­Šw–”ØYh›=gÂÔÇK×mý²cÀôDyÂ'È<Ò"á'q·ºµ ™ÖuǬ™Ö ÞªxŸ¦%vüÚïn?¶µH1nCÓ€é¹Ä;ò„Oç‰ c³½Ð?IÌÙi÷Oµ /¶÷ßò|mÁÄLa µ*-ß; @Cÿ\–z‡Fû{Óž Í•,RÎ# ÖìnõÝúCßѬ™%TÔ}ò½SH»Äþ²Ïs³=O™U‰ñM7Ïå . hUÎwü)™½ãçîýÍfk‰µ*-Ÿ6ÏÍïÕ‚Wh«}» •Uke³Cþ­½vв<ñãÛúŽ16‹Ú˜¿O€´Kì`zÏøML¼¨,7æûç}YgnkUÿR2ÖËþÕ^ù-¢V¥åwlÂÐ+ÿªfb†¶ºVí¾ÁÑ^Q«^×wŒ±YÔÆüŽ ¤]b¿zØî¿·þô›²ÜÕêŸïûI­JRoûZåé×r!jUZ~ï4l]žF5¤–k«vò¯Z%é;ÆØ,jc~ïÒN¹»:®ÿW¹ÒwÔftoÿ¤ïW¥¶\­:¬._é;­Õj#TÅU 31ý„ àÊ‘ þ)íÕVW«£ýBm„Ž16‹Ú8É+/2ô”»ëϽ¿ÄU.îUCpæÕÀ–¦™jD,·m””Åìíím=îÛjÍ"TÅU 31ýÐÑÙõ¿ƒ›§ù¿wºîó¦VÛ±kšR+m<ÑØÙ¡óZÃ×u¯/™Ö1r³YjÖ:nŽ¡q’W ^d"è)w×ó=7ã*覆úâóý-íçç¨SÅÝþåîkï­™;Þ2‘lf^W1ÌÄö34õØ2ÇÌXø|å£]A'ÕÝ_¿«rQñÄL«°e/~ãÿŽvwŒÚ¬ióâÂlkŒ“¼ñ"@O¹»¶uÝ]Å0Ó>ªô^x‘‰ §Ü]è”GW1ÌÄ´*½W ^d"è)w׳—}£«fbÚG•Þ+/2ô”»kãÏžÑU 31í£JzÊÝõô÷è*†™˜öQ¥÷ Ä‹L=åîz¢½otÃLLû¨Ò{âE&€žrwåá8‹^x‘‰hÈD4d"2 ™€†L@C& Ù Àóÿ‡xy endstream endobj 16 0 obj 9031 endobj 14 0 obj <> stream xœíùWÔÈ÷ïÏï?óÖI÷Û݇åÐp8¬Üàîà⎠¢3 ã(ƒ ÂȦsqGQEEÑˈ¢,JÓÐK˜;3Ž:wМ7Iu7éÎÒ¡é@žÏ)±RËS•¤:ßTU’¢(Š´Ûh7 @ B^@Àz è5>.½Þ–8U:±Æ?é8ùôœŠ¾#½œ œ‡^SÊÐÝÕO;…Œ€ ®ö,­×㡘(åõĘpó¦œzMñ„ô€)¥°^c±½&~ÿÚCA¯˜BPJê5-ÓiiiX¯ÓX@¸ Cp<œr—oÐk¦ ”bz5šrïbƒd†ØüµK£A¯˜BPÊ÷¯¹šX1ÙU”ÂC¯)˜¿`*CyÓëS×/ÙÓD;ÚãÃ5³¤è4î\×Ôœ§×ô„c*Q,=6…4AÑ wT¿ó’P0 €š $õÚ%Ö>K6­×”sHûeâ³’Jè5óßçƒw×#ôã8K˜¿@MP’zešï— îVSN½¦ýòÇÃ=•t¤½$kv˜VgLÙ\Õëûp³p}jTVš´ú`Ý åÞ=7øBF~)Lå‡q…ôTmHÕè"ç?ø"w·Àæ¯PÔõúÚÓ'qÁăáç‘3ù]lÁ}3ík³|ú<òçëJ„Êpà„êÞþñ÷çÏŸ†»n¥ fô4øåÓÐ=º}J$ñÈ_o/ T芥÷ýÈç÷/÷#T ³æ@€óר J±ñp¬Î|½–ÙÅöPÒdºëë!ì<´ *cg~QÕµ§C_D2r 2y ÃŒùÛO÷y&þü¨xCê ƒqíÓþ? G\ÀTæ¯P”2Ï›aiÔk™’í!»‰=J62Øqçrå·Y3¶´ f3踡ª.òã-û6W Çh¹×:Ì_ &(ïsuæëò‘M·±£C\~ìäH¶‡>¾^ˆ E†>Žüóß—õÉ8pÎñ¦×ö#ÔÈûþkÍÁ)µ}˜k–Öë4„Îöü2òû«³ñ ×êæ¯P”¿õ÷£±.ï]Ù@;:{¸n¬zM}é<½cQ´JÈ:ÑlÃaƒu«C4„>2uý÷pàÀ¡ôh=’|ÞL ðÃ¥í©¡"8q]ièµ:ðËüu;óIºBHò×ÔL£[øQv2%oœ?IlÙk‚QtcLòâõ{Š/wŒ³h?V¿C) ×¸sÍ×h®“?‘ ¾á—ùks*£×ºG]n}”"º~_ÃèuŠyœ?É1ë5‡¤JË8K÷W%ð;”zÍí\‹¹-_} z (Š_æ¯Év=£ÂÉ®SûPâRöïÆQ½6%±Êþ”23dêõh m–þ×m׎%±½ûã,]& ×0ñP2ôZú¥-äè5-Ö ×€Òøeþš$ÏyŒr`GÈ×Û¶²á5®p‘£!––êüÌÅñÆ ­68|ÖÒ­Ç.wy–ÞÓT™Ÿµ8ѤÓèIé9%Í·þÎúÒ¼u Œ-¡3ÎZ¾»ôz·üìøJ½vI6í°4ó,² (¿Þ¿ÞÎ ñ5V‰Hò+‹ oÉþ$DüÂÞÀ†gÛ‚EÚ®fèFGÎ1HûUÍ‘‡´ˆä&v—c’ì¹°-”ÉhÌ©íuËèªi·šÞô]D~›#Yߦ¬ôŠÆön“ÕNÿº­n/“&æ±[éA9ÕÍïèú ¼º[žHpFú7³µ5îªnîè²Ú‡ú;[/—l‰•™¿C) ×þÊ ãÁ_ï_“˜¡j”ÁŒE“ù¬ŠÕ°]Åú‹¿=‹ñkîªj6Û+/s^.c-obÉËô@Æá¤ùú7l÷6dsÍk÷Afq½Ö¤]¶ã4[@טM3‡kd·‰[½çlÞÜÈZ8È«žÌìø*ôúm÷ÐõKN¯«ÕøüñkŸkL7üõþ5IV±JTAû[FÅòð¸=› ×¶ÒþŸXu;ÁÖ06dÀM¯X;F¼‰%?á‹ÃOð§ö–>° '5k·š{Ÿ7•¥°é»cÑkÂ}@ÛìV=+7žµ`™öš¿CŒ^ÿrñ¾ LóÒçúÓÍ_“$Ý{¦Ñµ‘æYŒgá cÎúm³9k€ü5ˆñ¬°’žýër7E+ç÷¯ùÅ9ú×oªWã¯ãÆæß²ô¯y•ì&8Ï›meK¿ þô— n`¶Œþµœ@üHz=oî|ì öó+ôƒ¿ÞÇM§˜2šhìt…·h™ð½Öt6¼‹›¥¿ðµ°¼¹Óde毛ËñüõR·ùk~Y®p²÷|&;EŽB¶]zë9íÚ$IÛ`ïn•ãþu&ìgÇçQúÏ{‡lt¼ÿU{ËÕê#;ÒÃ%JçöoÂó×»Ï4ÿÚg±Ù-¦Wm¿T숗™¿CŒ^Sìxøºå;–¦­ K]nÙ’•Ï\§Óø\`ZáÇ÷Øo¡d°‚t“Óe>ÉŠÚZöoƒ[W”´^Y©á=¡­YyÙêö„6¿,n8Ùi3×®>ÝéåÑnšÐoMŽŒdóÎ0á!q‰ÒÝŠ–ñ|¸DvüHzMCëµ`çšVjŸÅšPìS¢ÊYÆ¿N’%.Á:Î⶯u…çóŸÉþ幫çD…ê]ÈŒÔU»OÞèí&‹…“æú¡x.{αÖÑ÷¯¹h Æøùk÷U4qëf{ú󑜕s¢Cõ>4&eé¦ü“—½“(ݳh²³¾$oí‚x£Ž@:ãÌe;KºågÀ¿PJêµk{a½>öíi,ÐçÊo`÷ ñ%íh½¦ÿb¿RsÛ#¯`o‚š ½þûÙ¹üõs£‚µ„!|öª¼Ê»v…*Hë_ &(ÅôÚ·µ³½ê5VjÚ J6ÆCF'Z¯ßæë¶Ô´½ýíÓÈ—¿ÿêºw&/Q¡ Àúר J1½æ~u\þÈ]ãá‚zÍÕh,Ù‚FøzÝSµ!9T£‹\œÿà‹+°ïìî´¸` BÌöH{IÖì0­Î˜²¹ª×-/B„!nù¡ÇÎ5:?4äÍ3j 1«Ž¿Ôë{:´Ö"¼wž…~l*Xk ±Ë n}¨<ÁY)ìåñU1­q^^Ñc¸ë_ &¨ ÔkÚŽ‡ãçrõ¯]3×zÍM,¿=ÿJïû‘Ïï_îG¨ÀUñdèÃÞ|3ík³|ú<òçëJ„ÊÜíüõöB…x£#%^éÿøùcÿåA½ŽCˆ9&…Ò¦âkßÒ¦Þ^ŒC1Ïù•ç굫PÛ!bpÖ¿@MPSj<\¬Cí_¯ÿtxGҹ͜4ÉœïK¸Ò|~T¼!u†¿ë œ…óp˜õ:¡aNÑ®it~¡3GMõ#”À¯<7£«P„fIî=àæ¯PT@>o&8NÊ|>\bþš«€Ü4‰=çÙÙŒPUùqä EÙ\éi½vj^ßÖ¢L÷çËÄ 9jŠÖëxìÓ"äè~S ýèµL`þ5A)ü>טÖΦ$ÇÃÕë× ‘¡èÑÐÇ‘þû²¾ ¦!t¶ÿã—‘ß_w¥ïˆA‰uýŸ>§ºwéô;.>íÿãï/Ôȧß:Ä u™zW¢ŸáÀ„¾ézÿyä}_ý·ñpg¡(ÆÃeóר *PõÚ£MâçÃåñA¯©/§w,Š6A Y'šm8ìÃ¥í©¡"8q]i×hú {æ†iôÑ+ ?oFó¾µ*oå¬pÒE¦~õÍ÷.ôccÁÒ=¡YZÐä|ÞìsËþÅZMhrvU¯ÛófÇVFë5as÷Àóf2ùkÔHz¿o&8îÒëéù}3å^IS10 €š F¯i!®À˜P™^ÓкäŒ$qñ·¼ƒçúnĵÓ& „?][#ß!T#ÿˆ ªçèZòzã¬ÕùWDÖžó ÐkêÐëŠ?<^Ýÿvˆv¥G~¤ý=¯Mþû-¯÷îû¿‘r?fLiü;íR­Õ¥×TrÿçÜé¯é*}íÜøßnDÔሉé5ö|þû¿=×W#MÕØOÅØJ@ uè5 ­ËÿþƒÖeºMûíÖß<üË2êA¯ÇÉÈí¯Ó¢ô^¿[6“rYöïü5VçêP„‚ªqÛC¯Éz=»Ž›6xÆìUy?¶»wÃ11nQÆü8£NCè£ï»awä%m*v/K2ê]h\ZNY«UF/Þ¹ƒZ”íøHm3B3ºƒ7>l@º[ŽƒñÛ/W%…jµ¡I«þò›óy,È>zšLµõ†-—Ì”ç¹û¡0§ÿÓÃÒM " „!*-·ÆÄ±9P›¿"!D£1Ä,ÎýÙæÊûþnñ†¹Mhêö³ï¼%@õéu]úîgú%…?=7,¥5zÿš7îÚ¿î†K¯/dþ?Úydüê8!Wb¤ Š^¸£ú@  }ä¼­U½cÚ9? &šŽÐ…Å/Ì>\û拤‘¯:kûŸd©¢'R¸ý;ùzýwå ½®Ë:v­ýÅ>øúöæ,¯xÉÜ„ËÝÖ¾#ØGû{KXqßÓX+c5?p·Ïjé<Gûcªl²õšjÑ£•02-ümŠdtýc2´âhц†¾÷##ïû²öÛ¿\§C»ÿNÿûîÙù»íX šUôè7æË?¿÷5e cÞü§Êˆ6^{ýÛÿ>ÿmk;ŒrF?’¯ÏoêþíïÏ#¾ýeÒý‚Ã?¡uu]túæ‡å ¤ ˆ:ôšÖ_Z‘/¾¢ÿÊÑë'IõZlS*Íçƒw×#ô£húÏŸ,­›ª”¿w~AB¯™ÿF>Ú_ß*ŠB)RFtI ºtÑ“¨×”?æ¯iϺk8m#I1%%I+«ÅK¹‚ÛFÒôcÿCÆo§»´ipš\vùõŸÙ>5IþÊfß+]1®^SO‚Ñ;­¨[PÈ;ê]ÚJ‡Ùç£Pç±Ûª=0µíÀ>¦2œ#FoZê¶ë²Î¿u tPRÉïŽðÕ¦z…P¦+ý«Ñðß2bßn„.òΑXbQ^ãþ²K¯i¿K¯™p§^ãd‚bMùQ¯þ¼òp¼Wi/Éš¦ÕS6vº?4äÍ3j 1«Ž®Æ-nÔ/”ýÃÍÂõ©QAZMhÒêƒuƒ”ûUWj/>ÒÒqVÌ2ß{ ' qË=þ"QI‚7X!XIÿ¢Äü5£§osiϲ7½&[Oî\1;*DG°Ê‹ W¯¹Cèüát½3GucÐkêE8š5@Õ!ÔDo4"t•˜‰"\RHÛÿ8z`>"¤wîݽyÀˆ‚«ÝF¥9-í}s& oÂ[„´4†­.½žéÝ7ÝëÀ3.´ €¬×Ε̥Â2 XSBCß±‚Y6¿|ºG÷¯O‰¦ÿB÷¯7"ãÁÝ7sо6˧Ï#¾®D¨ vÄ¢Ä+ý?䮲-(…‚ÙçÐ}Ÿ·üýùó§á®E©»À ÿ ¡–…ŒŒüõöB…•ÜÁJú%æ¯qàí$Zñ*¹!Y¬àØc¡Å˜ìæFÉñç±Ù›sÖ2áþ`ßD¡˜;!è0»q…܉F±}®X^ÿ:‡:›ÿ{XVýlq åO×}&]ç¡Ã.öÃÉé_KlàA 뵜d´þŽÉ‰=o&}é©×LWƒ0̘¿ýt?ùè-Š+nuŽ+&súVt¯ ÎBȹó&i½ÌÞyhATÆÎü¢ªkO‡¾ð²Hî­×Q–¹‰??*Þ:àAb ¤õZ°’~D‰ùkHškœ‡d°›•¿šíÖÞ¥±cÕk[u"í׸ù’6`îyÞ\S”ÃO&¡×Ô»x:Yú߬ÿïtÚ?Ó<ùW¾e_wÍ_kòG篹G̱ùOÛwQhù9³gš‘¿Ì-Yˆpܹýït$ÚV÷ÂúaäËß¼{R›?KÊ&E}:n@ëë^ÿöÏ—ƒÊJ'@©®×.äÏ_ f÷‹^K×' ¯™µK‰­ŽÀD„žóRÒzí¼Ü¸Ìjr¾hû‡+P0;SÊ`ÇË•ßfÍÛÒ*]=·ð»:'a™›x3BU]äÇZlmÒ•ÔkÁJú…æ¯1¸éµýÎÑÌ£Î}X[¾^“¤ýé™ëæFk.$vafþéÛ=cÓkj(mÆlDsݵ¶×¬LÑjCV\µ;CEðH{Q,J?ÓOqo2µÁñKöÔô»’ÿÓQ½wER˜Ž¾A]´µô¶Í‹Mê}óÑÌT£N:g‡Ó è5Œ õèõš†›?¿¢ÿ^9YÄèõ÷?=Ó§Ó~F¯/tápZ¯ÖVÈ>\lS~‘mihÝXßë…ÈPôhèãÈ?ÿ}Y_Œ£;bPb]ÿ§ÏŸ¸ãá}Óõþ3­÷õ \‚Ùçozmÿ8ÂÌ8^ChLA¨íƒ@G–p>&G¾¾}$zôy3AËÜ}LCèlÿÇ/#¿¿:/]I—‡[ÁJúø~8*CzÍ>WæÐköy³ôÂ3ô_p‰Yì‰ÕkêóD”Éö±¿tžÞ±(Ú@%dhvöŠ>4왦ÑG¯<6ú¼Ùç–ý‹#´šÐäìªÞQSBÙë V%†h}dêúïïæJÖ#~%½§Ð¸…Ù‡¸ïs Yæfÿpi{j¨†N\WÚ%]I—‡[ÁJúø~8*Cz%¸²àZ—^,Ã~Z¯]~W¸ô#g úÆtø~ø0¬‚ Ü´qÔÔ×k=°€^ûÆ6¿Î_&“y|˜p¦º^õùp¥« ÛÔ> À´‚šúz|„lL •Á×ëauÍ_0­ Ô¢×à ^«hþ€iz ¨”é0 ÀôR^ÿþß÷݃]Ïþõ¯µÜxÑÕÑ×ù¼ghÀî=' .`þ5A©K¯M=dç“®{Ñfzv¿÷Ac'-Ù´‚w½xëÝ   `þÚ7&óœ ‰jôúm£ÈzMË4vÿbÙŸ{L¡ÚÌ_ûƤž4¤P‡^÷vY\ÝÚô²¦¢ñû¯Ïùæ§q Åú×Ó˜¿öÉh|y¯±]Јã3Ú„>rÞÖª^¿í…XYŸ±ß8’=?Ê@èŒ)ëŠ~ò¹&cM?õzxóפ½~½!´êÇ݃vKGsu^âX¥p‚½•¡½îh{ëÒëû7_|—{škZ©éÎõî¬búïÁÜS8öqóëÚ3·8—©údiÝ„P¥¿öBª¬ñÓ‘…B÷7tÙ?Œ|°tþR”ªtM¦º^û:ݳŒY¦$®•ä§!IëÒíiq¡:¤ ‰[´­¤ÙB’\ÅÄhtƸEóãŒ: ¡^¼ï†]~’´=¨Ø½,ɨ#t¡qi9e­V¡"è»Íˆ”ÌãIðÑ…;ï—lOO4ê5„!rîÚUB«vNêI@ èõÓ–דf—Ÿȩطù‡Ü 'veg†Ä7–Ð!.½¦S á.Ô‹P˜Ã;Ò^’5;LK÷^7vºÿn)\DpÖºúØT°,Ö@b—Üú8j°ïìî´¸` BÌö‡†¼yF­!fÕñÑ%·¸žžª É¡]äâüÎ5²þúe/ —Úü»ÐΈÔÇ£îõ\ Â"F<—Ð!ò45øwþz»¶u ) ×ÖÒ:*ädû€ÝÜþC0í/±ru0ár·µïöÇÑþÞF[Ñnùi¬•1Œš¸Ûgµtž£ý1U6nvÃÁæn‹½¿u›+Ÿ¯Â˜ˆ†(|Ðkµš^¶^>±)ô¦¬×Ž›’ÖkWÿºþç–Ã{«¿ÞZ†ç¯iOÞ¦Ò­Yù¿>61ãáM/‹ Î ç /tÿz#ÒÕàÀ7sо6˧Ï#¾®D¨ vÄ£¸šî÷#£y;bQ|íÛŸ?¾½‡bž» FU<ú0âJ“x¥ŸNÃ]Қ뙥÷ýÈç÷/÷#T€ŸG¡$^.1ý&´/bõáÁ5˯° à!ò05)øwþZÇêµUH¯w²Q·Ø(’lds'WÛHš~ìÈøíF75òÓä²Eüì(âW¶ˆ½ÜìÍŽ(¥ÓëTÆfDí­Öö.³Ø.Oâ)@š€Õkù šH—^W¹B;Z¦÷m9Iÿ¥•»ŽGï4v^ù©¥òØ%A#£ƒŠqÅ­ÎNk2{t„#L@¨ß=ïL„œÇ¨¡—A3'ͬÑ4&A½þÓ;â*ˆ6ë´00&½«¿½æVẌ‡Gðy˜šü;-ѿֳQ‡bZØã`à*¦$ýòÓè9Ùu¨ùÙ-s«ú®|M,á0e˜•qàš ô¦*Ðëþë“»½~ö°Û¥Ñ.÷Í®büpø¿K~¹yµUР‘÷}µK‰­ŽÀD„žóRÒzmrá+-mñ\ƒ.f ‰/ßÃõsÌšõú:¶ü!°/^ë#]®#.à!¬íãßùëî%ŒÌÅ?Ðëmnýë&‚׿¿?-¢YènÁC”¥õš©¡µ»ãñ½ë5¹l=7ò NêI@ è5iû½©®ýÙý^f†úΛ†K÷OUïÏ=¶{Ûáo÷•þXvåE›©åÆ‹ýë_eß_xg4‘˜¶4´î?¬ïõBd(z4ôqäŸÿ¾¬/HÆÑñ(þBÏ_ŸGóvĠĺþOŸ?½«GÑÏxÝÒˆ‡ókò,ͬ71Y®& +`ÇZd,¸ùzøïÏ#- ÎçͼÖÇåOA¨íÃé qyQê55¾ùkÒV—ÁŒPgT·v[ìVSçÝê¼$œfðžÞßвv³ÝÜ~2„ö‹-¾é²˜ßVHûun¾4Û­æžçÍ5EY1^õz!«ò7Ì£*ŸSÑÐÖm¶’C¯jX½ÎáçšÌs€$*ÐkšÎÿôÑÝgüÔÝ•þõq?û×ô¢m€v÷ovþ»´áÔñú;7ŸˆYàJÌç‰(“ícé<½cQ´JÈ:Ñì|qûï;ß-ÁC”ŽKcô„>fiAïÑ,öÌ Óè£W~ÞL &ïëvÍ e³´!%XmKCQÖœH=Òg¯/jp¾Ïå­>.ÿÀ¡ôh½cG<+,id4±Ð! @½ÿû×ý?ì^™©'FoŒ›ŸáèD“¤éjaÖ¼¨ ÒÇ.ÜR|Ëâmtz¬~’´?=s`ÝÜè` Ò…Ä.ÌÌ?-ôh·Çf߉ŒÄP 7¤§±|ïê”púþBgLZšSöX ž“zÒBzMs¯±½¦²éáí.º7Í:Ç÷Ão]m?]|­âÈ•¦k'»Ž>ñåÓÐÝUH{}²ë1Å€ï‡ûÆdž3$Q^ÓnbûÚÍ×þsæ‡ëGöŸ-=tQì3);h© KÙtjÒŸßšjÀ÷Ã}cROR¨I¯i†ì-·žÕœºQrðBÑ7?U½Ôpù~ߘ?üLuü5 PªÓkÀøeþzrw€ è5 Jü2  P¤×Ò4›*nbŽà¿Ì_”2z}ø›2i'V ÜX ~™¿(ôš–c‹Å*í%{Ò¥ôZMøeþ @ ü­×?|w–c×&íwýå†ó%{Ò¥ôZMÀü5j‚R@¯±'ž¥Üˆ€^Šóר J½îêì«©9/NÇRŠé5A Ê¥ø ,€Àü5j‚RL¯¥%¢×«ÚýÄ„…o9ʾÊúëŸTÒÁ>+)áiƒÃ“×gŸ~ z=€ùkÔ¥Øx¸oz}i&ÒÖb®¦51ëõ5šÕ3½Æž«ßœ©ù¡ù ×Ó˜¿@MPŠõ¯)v «³Ç¸„^×ס¸×Œç—`4 §½®KEúzV¸[kVωÒzãœ][M.é¬úvSBdKIëÛneLJ­¬xÃÕÖúÇo~:ÿ"ö96Û®g§'i´Añk¶ÕZ«üfuTF6wÕé~Gʇ—Ö΋ÑÈeJ0èu@óר Jž^K8Äãì_ÓÝj„6Óž+³Ñ’ÇÙ(ä1íߊж£]‹^jë>]"nº¤3t_Ùûï\›õ­uá YçFCF‡ÄQ̺›i®H@ËÏ<¿Üöîâå"„¹Çi½ø¸ÿbmB»p`É þ]ËÅ6·ÍOzPÀü5j‚’¡×cbœýkÚ­Dèë'¦uhÑ¥'=³Prí“fåà¨H„þí˜Ñn£•×%ÕOÜ”t%üìâì_¿þ±b% ©Á›QìÖN׺_tñΎМ"Ä’^0 €š ”ÑëȆÿã[ÿšvµ H{õ2Š~Aûk¢Ðâû3Qb·K¯«Gõ:Zp*™Þ¬;—¬ÛøÝ?Aý“.„B°?¡wöHìò‡;邏^0 €š ë_Ó’í[ÿº¾NŒAWY]® A±Hëœ\.‰@GÛ.·õœ.ŠAá7åoÖÞ®×o>ÄÎqö¯ÛÞTW­B„cè»bÒn¯?óà]Ýæý%„˜/|PÛ&Ðg½X`þ5A)£×”¯ó×lø4Bš£Ž~ô5‚wDµÖ|•:CKèÂRw}Û*Ð}æn^*ÏÒ¶¶šF½5Aá)›wÿâ´Öv{ûê9a:B7cÕ†òÿHq}ëÅŒ93´Èíy3Ðëæ¯PTàÍ_Ou7þcø˜¿@MP7=ÕÝø!à`þ5AÞüõ”pKö48pþu©×55çÅ–·æB§¡SNi½ÿ±€IZòTΠš˜`½¦œ’-íøbMMA½ö÷hL4Ð’§:pÕÄÄëõt`ÒÇLÀ; ôZ-,½Vú¨žºö¸©î %Ouz­&@¯•®ràÔá %Ouz­&@¯•®ràÔá %Ouz­&@¯•`üW9üɵ±Fç_7õZ?´)§×ø°Ov-Ðk%¸ÊUÕߘÁ~¹¡Äãõ|¸V¨ã2.¿]‰µdÇ'| ßW:Û°›%!Âx¬É/K‰=ò{µåŸAJH¯ù²è ;øbp³Ð×6qæòÜÓí$)V(ZÛÅ ìZ‹¸•áWL!Hë­£Ùó£ƒ4H£ 6Æ&/Z=…ŽÐk%ÒëêWÛ¯½@Žß´¤õšfVµ"z-Q%¿‹ôšozÍ?ƒÔõZ"ÄkJÒnzVLjò’gb ;ïTs’<ŠXAŠÒÇ”{¸í­Õ>Øó´¡"'n‚+à ×J ¡×…áL#Ñçh™v~Å^U;guj¨ntÑm×ïN" 8?:~ë’ÖëÍAé q۽ŶÈYLw]ôá)ó·WW¸wÃ×mB³lM™è]ë)!¢çïÊLˆ ÑZ}Dê‚5®>~Ué× fÅÑ¿-1zþÖìã§xÝg9EðÃ% u³® KJ‹‰ “ZcjzÑÃ1eçÁj î ×3HM ^3ü‚Ù4S,ãv„Pæò&“ÞØÎÍÎ÷» !IëÒíiqôR·h[I³Åy3ÀOÌ%’½Oh¶ Œ¤íAÅîeIF¡ KË)kµ Ù¤«Nÿ#ª¹Ú#ÖB’2-^ @¯•@ì*WU!ˆ9¡¡ß՟ѳžƒÎŸmy£àú—OÖÝ;¼ÃÀýÑIDçGÇi½®:»‚þ›ôoO½®Ì s´Ø«Ž”ÓÊͨÍ:s¢îá'×±½m^«Ä ©ÜÉ­ý©¤îÁ‘¯gÐÞÐÝãs˜ß±ª´©²îîÑ“%kÓ"ÅŒHÁ—('3~ÛXy>ûÃ6VÖ|ÃîZ¦Ìì‚„_1±”>ƒT€é5y‘îR/2¢vÑHw¶/’Üì|pán )b- CBN¶ØÍí?Óþð«Xb.Ùx^2tÑÆ}Eç¯?êMc­dFA5îöY-g™á‚˜*› ÍŽ™Œ‘BVôÉçÌ™E3“…1z­¢z]ÄœP#Ó­þ.”íh—8ôz>Ûx¾a廪þGî/N" 8?:Á«½DJÚ³3 !Ýwto‘›k!¯Å"´Ž›q¿#ê.¥ñZ%nHk<Ça¡žµ£¢9 Ûq¬æðO÷¤ˆí57%×/Q(Nö]ý£ªú;Øñ?$Xm•™]ð€ð«-¶ƒÒg×k>ü4byCHûÀs<ž.:N’/WÐû‘ÝÝMK&Zù’ô¢×-œ©p~ÈNöØÞbCH²‘=€;Ås±Ý8°Ä8:hIßB¬¯±à¨\ÖæÏ›¿²±{m’½éLì&cG4“kI/9& côZ Ä®r{µÌI4²ý‘ªÓQÌIÔVá( {~+?ÛûÜ_œD8p~t—úS2ôºêç,Ú“ð£›^ky-!=7£àSj\ÕàärZä61Ä×â¨Òi¡„#V¶¬°Üà¾H„KÊÝ#¾LÙ·Jb;(}©‰ê_ctƤe¹§$ž7£=¶2­tçZWnÒhùUÒ³ÇÖâPF {l ÒõwA’¦Žû ç+mŽÇϯåÚt?_:A›$iÞÄÜD}e";cÏæA¶&ò-Œ Ðk%¼ÊUÕÿ úÙîdªÐ¿7éŽß´¼ê5í¾¡{}ÚéëÑ¿´Ãý]HT)cœïªê‹ÊÏæíÏb ])fDz¯ùá…òwÁçì¤wPú R;.+I¶¥0ê–ÒÆª7»˜_,d›[ÿº‰àõ¯½ÖŠÍxƒÍ…7óðÔ¶ä-‡ [“x^ ;ªð­Í ò½Va½ÞÏœ&7úˆH1û€"±Ÿù—­Ã“ÔWÊ®¶îâþî$¢Àó£ã·+9z]U»ƒpÞˆâò :¶Å^vµXöüŒüMé‚°«ÜËÎ ®;uôÒÃÊKßýj‘c׸,OEcYÝ£ò3GØËïZËVoo­°Ä‹Õ.Q¨˜ÂúÝc“_m±”>ƒTàéµD¸˜_,dðž -k7ÛÍí'Ch¿±Ø"§VQù§®µv¾´Ù-Ý÷3Ç3é޲U'Ò›º7_šíVsÏóæš¢¬1›$YE8^Ñ%N9zLäz­‚W¹ ì9=?úë«:?›=ËŒ¿¾iûªÔ­àóá¢QàÀ)êäè5í&"÷{gwöòè0óÄsøìy[ÿ]!òš¶×ÆÌOPUÿðо-³ã#tÒ"cnÝè|Lºäh~úÜæñimhDòšÌrG¡%ÛÒƒD8~Ñ…Šeñ!»Ç&¿Úb;(})Uë5Iš®fÍ‹bÞ£Ž]¸¥ø–Çóáb•ÉÍ^¹ )ʨײç$yÅ®ò›ë-3ûÓ3ÖÍÖ ]HìÂÌüÓ·{$l^Ó³z­¿Æ©ÕØ,ÈôZ ¦óW¡À©ÉAKžênÊ}ß ôZ à*NZòTw ×jôZ à*NZòTw ×jôZ à*NZòTw ×jôZ ðo¦:Ð’§: ×jôZ à7¨hÉSú ‚S““8×èµOLú9Î_޽žÊ, ¹% × °FUz=Õ½V“½V¸ÊêZòTôZMôZ à*¨ƒ‰iÉãùâÓ¤#ý=®IôZMôZ @¯u Ö’ý+LcµFšn•ç®J™¤%t†È¤…kvMdéÙ']¯ù¥‹éµÇwP¹!ÄáfAˆÐÇ&®úî°øâ&^“)çªêþ±xV¨ž@„V™´hÒ%ôzÒ½ÔÁÄèõ˜ íõëu¡U?>è´[ú;š«óÇcPezíQôZ"Äkʪ«w óf0Šœ|E"£t2åÜ7á̇¾WUÜ®¼Úr¢²2kYÔ¤K0èõ¤z ¨ƒ±ê5IZï”nO‹ Õ!mHÜ¢m%Í®ÅH²¿v_z´ÁmÙAkÏj 2Ćê}tzÞ¹N"z–1âZV*”([("ô)™Ç’áõázµÌ÷“¤íAÅîeIF¡ KË)kµ UÆ¿úη9ÁzÍhqý5æ £XéŒÉ<Ž › õ@Κøˆ` ÒèÃSæo¯Æ«ÆäÏ£ïÖ4‹ªØÕZ«Ökú¿ó¶j˜Õ9g9–pýž`6óøf]ÚU SO—¿+3!*DChõ© vÔx,Jîh<ÑÿˆBg®+ÁLY¡ùõdZ<¤ ×“è5 ƪ×ÖÒ:<ädû€ÝÜþC0í/±â¨¡BfÝCÃñ6“ÍÔvL/&s¶3ÉÌU1óBû;«ÍÔÑP”êQÄ:ö’Û"´²°Dé¸ÃÁæn‹½¿u{áÍÛ\x§ÛBÊ´Ì÷[+Ù54Üí³Z:Ï2‹#ÇTÙÄìû þmÀÔÒk]ö™WW™F°«²ž¼zïðíÊie3žg×Î^‘_.•ñ,ÿ¶þÑÁ(¦UèòY½ÎeWËZ/ Ê©xáË ”9»³T¬MS¹+’©ÁÚŸJêùšéû‡în¬[[Ö*Vô«N…3£êÇdô: ¾Ê±­”Ðg.Ï=Ý.tÙÓoÓçìÀ¤#ýë ƪ×;Ùëá-¶U“d#ÛÔwâ¨6ê†#ªALæö²É~ÿ]èØV¡¥ã"šQ&6J+¶/8„{KàÕ2ߟËfùÙ‘åW6Ë^1ûþb¬zÍgœz]uõÞ÷x {–ôx¸g2•Ï™Î^ÈÀo]æÙ¸Î¡õå+˜Mvp{n› v ›`ýÉúG™lÆEBèÊ¢­ A£#<…ÌÞïX™=Í•ã(®žÍ¬[UÍ&v9“±ÈÈäJ`u_¾Ðë€ÂëUŽ´›žU3·Ühɳqþ6}Îø’´·7>ýºðö²=M_¶–· âp±_7œ´¿Z¾·“+C$i9˜ÛTg÷ÿU]>cÕk={ɲ8DÊÂ^² 8Jç5$&s6™Y\Ë$ú×¥ã"ìÞ±ÅB¼Zæûq.é¤Þøq•å ™Èþ5F›àíy3~2¾M-{+òwŸ=€z‡bÖ?\…{Êh§kÌy›Ž ‰,߈¯¬Ǫú»E¥Ûw-¤s‹s?_ZÁºUÕ·Ìeúõ‹¨¿ÊxV•³eÉ·zPȹʑä ö„ÎtÅ’õz|ŠƒgÌ^•÷£«ëMÞ/ÙžžhÔkCäܵªØuÏ=†Ó¦è”0Øï¤u´¼¶Xìvs_ÿõ ÷p¸½¦é<Ö¸«‹£×šÓ𔫭ƪ×ÛÜú¡M¯}Ûukë÷Ú¿î^Â$ˆ$@¢t ‹•."Ó2ןÇfiÚ±£7~ø–'~<\ÂI$ãGÍï_W~ÏLšhæhè¿Ñß?tÈè©$& Áªð¼û^+SU_ÅÚ Ç›iœâ¼Ö­r=“8º$бÙêƒÐëÀÁ7½®Ë:v­ýÅ>øúö&jÅK¾±Ï7<èµZM/[/ŸØ+öÛ”˜2&€’ÜÆó¼î0÷ÛžxóÉù–U{‡yzMZ;–äýjuˆ‚õDnc•u’o·Æª×ƒ‡˜{Îвv³ÝÜ~2„ö‹-8jè0VþÌlš¿®žÅ^/¶÷[m/‹çyAÚê2˜§‹2ª[»-v«©ónu^’×Ò%ô»Þ0“‚±c²ì¾#‰´_wàæK³ÝjîyÞ\S”#}ôÆßìÔÕëò :‚¿.»ÚR¸#ˆö¶=`uößñôù×n:Zß°”i ©NMoIwöpj…;×!ó¶m,üùÈÏ-•WïŸ(ecˆ:ëà½ìÅsÝ©£—V^jü¾øèW‹"ÅêVUptð‰N“ÐëÀAÆxøÀs<ž.0N_«Ù–°o²ÏTDÔÞjmï2 Zs!1eLËs-Bý)ö~n±±Éø¿¾G·w²§ïùô‚>%++ ¯Ob¸Àá$iºZ˜5/*Hƒ4Á± ·ßâ>~!/-J/ãùðsùëçEk.zÉ^ÞóጩþÆv¯LŽÔH£7ÆÍÏØéµt ½î;‘‘ª‘¨|Ëî‡ÂþôÌusÙ ‰]˜™š´¯SW¯«êïìÎ^f {̺ðÙó¶þÛñ|8sAÔ.û‰Õès9Zz+Å¡¹Uß³½™%"ƒái‹ÄD…´æìÐøÄ•ùùuÎYéú‡‡öm™¡£[•!2váÖÇ%ª«eõZ[ΩðØ,€^r®r:cÒ²ÜS£ƒÞ­'w®˜¢#œ·ˆôÿ8ê]ùšXÂh˜•qàšÛS¦\ûSfÀ Ø¿æéµk’ÂÕãvõ¾Is[úžÿXHû©=‡M“?—¡Ð›ΛÉd¿[<˜Vß7«º²ŽiWQ“^…èµøð•‰,Vj?ì±ØI’ìöHIZ»;ß»^“Ë^å6ŠY“˜2&vþúW<=Ø×ã¢cþzMnãs‹›Fóý.®Ó¸µ¥%}_×TØ+þÕëä‚KOú,vKOkE,Ó’× ôÿ2}ôº²¶v­‘éz§ý4¡ßL›Hz­>èu+µ•¿šíÖÞ¥±Ü”ñ9 mÝf+9ôª†ÕëΟw“˜2&öùðö}‡›—å2χW8Ÿ^ݲfo£«7íJ/øë#{ÐỺâ¦Ë¿zýêBþÊ„ Òãe®} 7–Ê3MôºªþsÅ NZ°ÿö¤WF9z­>èµýÎÑÌ£ Ìîõ4–ï]®gÇЗæ”=v\åøónSfàð埩Î4Ñëiâ@¯•®r€:€–<ÕÁgP ×JW9@@KžêÀT ×J¿@@KžêÀT ×J¿@@KžêÀT ×J¿@@KžêÀT ×J¿@LXK¶Öí]ŒWLöëÀühj*2¯Eã<õØr@¯•`:ÿF5!Ñ’IÓ­òÜU)3‚´„Ι´pÍ®ñ”?¥ÛoÇ›>\* >›ò/Y~A³¶ïøñí(9vÐêB"âç¬ÜVXóØ*õø ¨’¢€^+è5 ÄZ2i¯_¯cVüñA÷ ÝÒßÑ\—8ž‚gÏÚw "W×I¿êN°^{”51kûŽŸñè5í±™»Ûê gÓM2l§¿>ð8é-‡èµ€^ê@¬%÷,cä5®UàÂH’Ö;¥ÛÓâBuH·h[I³ÇÒÎ>‘>"%óøCr˜×5öX8£¿v_z´AàSB\ä„K,8Ë5®a>À–1?ΨÓúèÅûnØÇ”]z×…_kòë,÷œ¢Òò.¼]áEÖáâCÚ«˜›A´°Ã±tÑ‚Ù<&½4öë3˜j¬íØG¡U‰¥ëïaœ¿Þ±üzú Ðk%P«^OÌ5ÄZò:¶;Ü"Ô‘±–FÐQ!'Ûìæö˜õ’ÂK¬8 ·ÃÁæn‹½¿•]Íås£\F¸›C…ÌuÒp¼Íd3y,ÄÉEN¸Ä‚³8YÂånkßì£ý½%l%wËÌ.g×ÅCg‡Ç¡×Á…wº½÷zNƒKžØp”þÐ#—·ÃÅ-Âã(=šÉ4°à ¬žbWÂÊ÷¾’8I6³;’Å•^•X°þÆ×;–YOz­2æŒ4ºÐØ9_Ww*rr½^"HkÛùÂ-KfE´H« ‰ŒŸ»4+wüf•!Ö’ñ‡s­Bz½“ºåèq4²­Ý±Þ%n?ÍŽ(¥åF¹Œp7sðwò¹¤u™/X\¿Ä‚³8YÝi"û±ÿ!ã·3 ,#ÌìrvMQø»ïÃÚ¾8Š{3æõœ6ºE98ðz¸¸Ex%Ҕæße"É“¬ÝB+ßyær¬D¬çÇJ¯J,X±Ç]ïXf=ýèµxÿXÍ]·61'š(Tâ´J_"è»Ða̪±Eõí½ƒ6fe;çn€•AO|è_ãE]-Ž  …½špn–vo+G{lêÜ ‰µm9á ÎrëÆ÷)»ô®)Š«b®ÖöåWØë9uÒssI.~}¸!5ì ȬÇÅlÆ‚7‡¹Hò6›x?VzUbÁús³K¬w,§žþôZ äAá›p£sSt®GlæE,‹Ço„_·ë™Õ(Ü®d÷Øä¯{«ü#à½özNƒKG£tŽedå®a¡£D’æ}ÎÎì’/ û`÷“«ìóáÆÑçù¥ˆ­J,Qnv‰õŽåÔÓ_€^+œ1(¦Íè²:›–Ä\ØÌ‹×é!±Óê1ùèªkÓ5Ø5 z=½‘zÿº¿ñ‡Ý+“#õÒèqó3.’4]-Ìš¤AšàØ…[ŠoYDZ%š–ûõ°ÿB^Z”^Öóáü4î¦DœËâCvMþº·‰_ôÚë9u^Ðf,Ê=ß7ú|¸ÜÃ5,r”Ⱥ0ör4÷­xç‚À¯‡Ç¥,Ûr¸¦Mäýk±U‰%êÏÍ.±Þ±œzú Ðk%ðú±¾kÿysêcçWb®GlæeLÓC\Öó&=.P…`?ý‹»vÓ@{ÓÁy_š<Ù™2(}½&–ÌéžÙ­ýa?ÕꉽVyó×÷"™Žó!V7%æz†Ef^Æ4=Ä¿<Û"¬×øØ!G·ý.èõt&@ô:¹àÒ“>‹ÝÒÓZÁ E¢õ“]£)ÃÔÕkûÀ“âhúZ¤ËíR°Ó:þúOL=1 ×J s ê×DF7t0gYb®GlæE"‹ô”i¯_Ǽ翴¢¹Ódµ[ûÚ¸Ëgóîxd²[{î^OgD¯_]È_™¢AÌwL²×¾žÔ/gN-¦¨^“¤™6«1ÎÙQÓçwã\ÆYÿ «'ôZ dê5Ù½€ÑßKÃ’s=b3/Y¼N™‘¦[y_¥°Rº ˆ¸ÔeòŠQŽg¦„ë™ÐëéF€è5à3pÕèµÀoPÐ’§:pÕèµÀoPÐ’§:pÕèµÀoPÐ’§:ô§&'q®)ÐkŸXW9@@KVÒW{`ªC^û\åu-YM€^« ôÚ'à*¨ƒ±¶dxƒ ½V7èµOLú8pþrO¯ †A¯'郿ôZÕP ×>¯r0ÕÔk Î†ô½V7èµOH_å`ª0V½æ]£a¾L–1?ΨÓúèÅûnØq‰edùwÀ+Ò‡ ôZÝP ×>z ¨ƒñëuÂånkßì£ý½%Ì7ýÐnœÆëš°Á…wº-ðõQ¹Hßá€^« ôÚ'@¯u0~½n#iú±ÿ!ã·ãep¯k¶À§ÂÇèõt†½ö Ðk@Œ_¯í¬àòý8Ïk‚Àxøt†½ö Ðk@Œ_¯¥ý>¯ "}Ð@¯Õ zí ×€:PZ¯%Ö„½öé#z­n(ÐkŸ¸Ê‘¦Æò=s£Ãô„>,znÆžŠ&ÌЊÒz-±&,èµß½V7èµOˆ]åHÛÕ BDæÙG=Cö¡žGg3™ùº5õ6l ‘"5z­n(ÐkŸ»Êõ,gfëâÛFÕ™l‹gž±YáÖ§p1ÎþµÅ¡¼6J£¼¾©jwW®UÓÐk5z­n(ÐkŸ¿^Êhnþz™Ûüu“C¯›XQÞŽ£ä¿© z ø Ðk5z­n(ÐkŸ}>Üze¥!Mֹǽ»¥÷ñ9æùpíê:›[×8¸´Ýl7·Ÿ a^M-ÄQòßT{wÆë&xz­&@¯Õ zíRï_÷ß(Ï]:#DGèBf¤®Î-¿ÉyÿÚm¸[7cQîù¾ÑçÃ復 z ø Ðk5z­n(ÐkŸðù*  ×jôZÝP ×>z ¨Ðk5z­n(ÐkŸ½ÔXK漤@èŒ3—çžn÷—JØœnH_=@¯Õ zíÐ+Ô´^ÓÒnzVÍ|½-y6β”°9ݾá½V7èµO€^êÀ«^3OB¾`;Å3¹Q.†%?¥;›Ö;¥ÛÓâBuH·h[I³…cóYMAæ‚ØP¡NÏ;×)]ò~ÉöôD£^C"ç®=På|ŒS4\¼hzŠQnÑ|@¯Õ zí ×€:ðY¯ƒ ït[*&ñ)]ßm–FÐ!!'ÛìfüåÞð+޲Ifòf^hgµ™:ŠR¥ë°Ñ…z­VÓËÖË'6ÅJ‡Kͯ§˜…ð¸[ðôZÝP ×>z ¨ãáÏñØuú3n÷#~ŸÒõÙæNÖæ-·/÷îÄQ{Ù¨ŸÜ»ðuHe$5¢öVk{—™›E,\¢h~=ÅŒ(èõt†½ö Ðk@x}ÞŒFgLZ–{ª]üs¸ŸÒ§M÷/÷p”2»ëµDÞ•¯‰%±†Y®Ù¤Ã%Šæ×S̈BHˆõ0èµÚ¡@¯}ôPrÆÃ½FI|J×g›ÛÜ:¹M^û×Òu ­Ýï]¯É%8ó —(ZpÄŒ+Ä1½V;èµO€^êÀ/z-ñ)]ŸmÒÓ!¡e£_î5[œÅÍb”1ób{¿Õ6ð¢±xžtâs*ÚºÍVrèU ÁYO,\¢h~=ÅŒ(„„Xƒ^« ôÚ'¤¯rhm7°k-’¾+€ÉÂ/z-ñ)ÝqØ4]-Ìš¤AšàØ…[Šo¹=~.ý<¶¸è%{χ‹Ö¡§±|ïê”p=; ¿4§ì1).Q4¿žbF&ÐkuC^û„½FaçG¿ ~>^ Œ© ÐkuC^û„´^oGe¾Á!o2éí\½–xQ”p‡MÜ_»/=Ú€<Â¥í€L@¯Õ赺¡@¯}BZ¯É‹t—Úx‘¤¹h¤;ÛI®ÎJ¼(Š“qßî*d¦Ò ÇÛL6SÛ1½L; Ðk5z­n(ÐkŸð¢×äËt¯:»»;›þoåKÒM¯%^Åɸowæ°‰o87È´2½V ×ꆽö ¯OéØÊtt›î\ëÊmÃî©H¼(ÊŸæÖ¹½ :$ÓÈôZM€^« ôÚ'¼ŠlKa>|”ÒÆJ-Wg%^åë5î_ßvèõu™v@& ×jôZÝP ×>1Ö·`¸á/Šò³fæ¬ÃÊŸ™íó×2_z @¯Õ赺¡@¯}b.ë¥WôZM€^« ôÚ'&å*ç|¨,y‚ËT 赚½V7èµOLäU.¹àÒ“>‹ÝÒÓZËèõúΉ)˜”^‹ O2½V7èµOLäUîÕ…ü• !¤3Æ-Ê>\û0ü‡XK&­·ŽfÏf>É© 6Æ&/Z=•½öŠôñ½V7èµOT¯|F¬%7Ç1Ln{kµöÔHpÖŒæÊИ>Û;}½žÎP ×>z ¨‰–L’¦Žû ç+mŽgûÚh­#¼õäγ£Bt„ó‹¸ôÿ8 oÚ9ßô³ó¾ï‡ýÎOìZØìznöé³½ÓŸÎP ×>z ¨9-™$o°r…7³X%=þ°ÇB‹1ÙÍ×b9þ&‡^7±–·ó“é³½Óé}½V7èµOLu½öïo:_?§:b-9*#ÿÔµÖηƒ6»¥ûþaFU“îᨠVI+5Û­½Jc}ÓëàÒv³ÝÜ~2„öë ùÉÆôÙÞéƒôŽƒ^« ôÚ'ç­UßJÏŸ×ï×O’|‚ŸwB)ð¾¹¢ˆµäÜì• ’¢Œz-4†Èä»Ê[lŽa¿s43ŨCßÈ•ïÇ ÝŒE¹çû„ŸÃg{ 赺¡@¯}"pÞZõ­Dÿêµß!;]—ôÄNÐk™ø‘"P[å½V7èµOøë­U’l GtžjG²=‚y’6¼…‰}ÿTf‰^ß`õšŒæYMAæ‚ØP¡NÏ;×I¸#dÍz§t{Z\¨iCâm+i¶½6‹}DJæñ‡ÂêY ³S¡¥:&e̳Ñ=º_²==Ѩ׆ȹkTÁú&ãôZM€^« ôÚ'üøÖjÇL&K!+¸äóLøÌ_‡%ß?•Y¢×7X½&³IfŒg^hgµ™:ŠR‡½‡[K#hÈÉö»¿]^bå&3lî¶Øû[w°·.ùü="ÉGáìMËcòN(ëyäTüÌ&Qø ×j5½l½|bS¬DÛäz­&@¯Õ zí~|k•ìMgü;˜dÑLÞ%½Œ> stream xœì½ýWGÿÿÿû÷ŸùÎÙä»Éáæ8Ü@èñN©7Å*T­7 "Øl«\Öª¨Ü©¶Å»ZÄËÚˆ¨HDjôÂbµ”H²Ë÷ýy_½®öý}Ûr¾{â&»;»I’,¯Ç™£³3³¯™Ý™Ì<™ÙÙ¥)/Myg¢ R€èÁK‘Ý'ÁÓ¥“kùQ/8pàÀãHpzuŒÞ˜)8p1î„Rdv~p¼˜`Ü<Iüí/E"œT"g¾¥è *ÌpS"³sRdV¤I@ŠÄó*ExRXxij"A¤@Œ0R„Q %%%¼)áM,’ 4³Ê¤@,0OR„—³# F€CîY¿ü)#Ì÷¬ˆXÓ!AD»À|$EfáY€X/EÎÞxTvà6ãOÃAóÑsü”HW×EÆ)¦'¤)G¹ô¼)dHÈ,ªé|­Ðð¬@¼€‘"~¶a¤ÈìÜ ïWIØ"#EØÿþü}êÞV„ÎG˜ ûÀ³"ñFŠð DìW ?2;'E¿úš`‘ðÆÞ\µ|‰‘´~Ô1æ ûÏM[Wd$ Éù›>ïžš œT‘7øßYŰs&ˆ0ç¼wøÑ_þÑŽ ’ dÚ»©½l 6€gEâ…¤ÈÇ“A3ð«3³‚'WÕOŒi‰_W¢ƒCî?þ|ó¯—íµð+ê~õßÿóçŸ̼¸ut…ä‰ÁÿúcúþV„ÎÊ$~óïW—jòÇ®ù~ì·7þöüS„©,9#À³"ñÂ<-ÐðÂC,ETNŒ‰„„üÓ‘|àÈáµ{vÜx<ý—̉Bƒì¹„9}ÍžsãÁ‰ÿ<ñáŠt³ í3þù¾ññ<+/ÌÇc«¼ê”"*ÕH¢ÈCè©T²7SÃw¯µV•¾d§MòD9ƒA!Ôñ‚þý £h¼þÀ åÅ21<+/(næ õ)^r|¹ãŸwjÔHÐÐÿ²™NÿþæÿëyÏ¡>påñÛ/©ßß̾ùmâB+ùÀB„†þ#ñ\^Š” ôÍÄï½ù?¿|“ RDÀ³"ñ‚¶R„Ÿýà%Gý†›ŒcyÐ…*Efÿ9WSœi&–VìóòaS݇6æ%SÚŠ­³þ‡œ<\šiBØÇV%ÿóÝžÉ"1oË© Eô&ÏŠHî.÷#L£ù3<Ô†ïÿæ‹êM+³SI‚L°ä®*ßñɉKw¦„b4—"ü”ˆX~ú‡F <4yVDR„º×´Fð䕸rÍ¥ˆpJDÎí|ÿ3"À¼¢ù³"rãuLãøÂÐÔUþ ð´š¶[C/œÓ”gÚéø§í‡oNÖ®KYÈrQ”"ø»A¨‘"Œ)Ì7š?+‚—"£·Û«Þͳ$“%¿´º¹ÏMÓÂ4MýÔõYÕÚœ%ä[;´»¿³±òÝ\K‚ј˜²lÝ®¯®½ ~žO }sdrVáÆý§{§è· hÇ÷MUk3’ŒdbJAy͉ž_ñRĽÛ#¶¾—¢i¹4 vÞn;P±:s‰‰ —d¬z¿¶Í꤃NÄÜ7Þÿkωšò‚”DÒ”¾¦òÈ5®0,4—"~5Â8^uˆÿy0Ohþ^¼“Òì&jH Z ¡)ësðZ B…­‚ÁýjBp‚ä¯|fio÷{DhK-‡¹)‘Z¯ÂÐ/[`ïõ RT`ãûÝÞ·¢‹Ésß$K‹ˆòn¥" o´•"³‚×¼3®D Ð!À ù{EäFyßxšPÝÙ7òÚMy&¹×šÇ Êu ,µ_ßw{ý'Žof‡õÒ6«ÝáôP”Çùr¨»žM™õHœ åq=¹Ì™ý˜ÝÀMqµôŽL¸)÷ÄHoKÂK‘NŠ8°S"˜¾'ÌÑã¹ÃçˆÊGý'"Dbî›ÏòÚÓÁÖâ‹€¾Ñ\Šhun¨-N·0·7YàgEö ¦2hú)7(›… §‚ÀN™ÇGZ9ggäÒáíïæ§˜ÂWüùÌnçNo®×Ð-x)’ÊòK f/ð6™Úæ?¡DÌ}ãýg$,ì+3‹Ø‘"¯Ó?|7pöxwû±ïÅîÒYëÓG/1-NvÕèž~VÄ0¼zÄã¯[4a‘‘"þ‡7âÖ_–p§Oä;‰—"ãNùÀ©JŠˆ ,—#Bÿ‰A³"4í[ÆX`q#RäWH*±cRJf´8]ØU£{øYL Ü‰»¸‘ý²ür ¿Ûå3ëðø»JBÓÏ…¦øY‘Ö€a½/E<û¸ÕŒ¶ç¢LÕx›LŽþY—àgaç±å ÛåÊ Àb v¤ÈêUkxwèÀ ±óÇ‚)¢†~V(wâD' JO[ŸŽM{)kâ{ÿõÎ/kJ}ûjó¸‘ý¸mÔMQÓŽGWê’„¦æžÜhíqzØç.úZ•ž¡é›ÅœM”_súZÿ“_Óæ×ïv:ž©)ðè:éÑ:ß“µœñw:ú_º¼ìÓ+÷¿Þ›ŒÄ–ÑÚ3w‚,”ó"°¨‰)2Ë-Ðly¯f]ÉzÆù…‡ß•—m¸rá&\F‹Ó…]5º'ºïQ3²ÓtßÞ%¸%˜§ëq±´çZYè/+£‡š7ˆvÁ([`Ï÷ ¢4† ×<¾Y÷I‹ËÁPÉwØA‹šØ‘" Œ‘œaDF‡Ìb¥Ó×Í“ ˜?Ë E"gŸÁbäí}|éËê +3“Mƒ)9«pÝŽÆ3×_ûbéáÎÚ²œD#2&e­®jºú"Èýëw‡+W§%ŒfË;¥»Žu¿T”"ìY®¡k'j+‹sS“IÂ@&¥,]]¾­þXçM»S¹À·Zk7­Ì`Î$“ÒWlÜæÖ„pµeª÷DuiÞƮɒ»öƒO[­£â[ñ²ûØ®Òw,f£!!mÕÖϯ¾‹ù“"a|Õ——"_}vŽ×ß¶ÞâÝ€õ9ã)ÂüË‹“ï»îRò®¨H‘kß6oz· Ùldßµzç®öa" æÏŠ‘£F)°™')â×!!©E)‹Æ©ŒBX`)ÒÓSc2~°¯óa—íõõ‡¿^øîjÍ–l" æÏŠ‘RIæIŠ¿\£þ+6þI)"”¼#EÚ?Ù”‘`0,YµñÜ„?°ã³KÓ„Xý0ôöҼƒ1!wóîn§ð\„cZñæN߉=.”ç%Èô‚š>I)ÒdD+¬NIÙœ©­kÓÊ #a²¬Ü÷¹Í).¼ßÏxÎÔ”.! y;£j š?+DH$Y0)¢æ/zÿ¬ˆÿ)‘ )"L¬~V$çKÛ•GW®V#´Ï˜|ðæ…¯ùö¥è½ O¯ ½¾rí(B‡f9~z}µ§¡zþ°9¥~ù軡ÑsG³$¥H B]?ÉJa¦§RQÊÑ‡ß 9Î5e¢ÔñRÄŸ)J ¸“aTÍ"AógE€y"Žh‚¤HP!1Rä § QÑØ) Hø6K_šë«sSŒÜg>üéýÝgmHRŠXRDøÈŠ8Ó4)„²ðRDr)H5À³"ñB >¶*¹@êÜAƒyVD8¸ Ó¤"Ô,šÊ(Bh÷wÏ®>šèùéŸþôŒéô©‚Ÿ$¥È´ª×)Y€ ôioM1#“4 Ôí |!Ö0L¦ ETÏŠÄ óº™WýS"<˜šy•"mËqOÏ…×Ýwû>ÝžÇ.Ehï?F¯?zÞòY¦?ý©T”zlèšüMÏ÷ÛÆª_]z8Ñ34zé¦U.Óf)”â[ y¡ W_^zyöxaÀ?%,ШžˆbSŠÍŠ0ü¹#”"=CwölZ¹„$Èô¶þ“¼z´23Á@˜³WÖÞó§ïyÐYž—DÓä[eO<´|õÒD#"L)™k««ÏŽHgjëzE:»ãwÅ¾Ïæ[½ÞQ½4ÙH$ä­ùÄøØjÉ£!!ï£xlUð¬@¼;R„Ûªä_Š,η­bö#‡]5ºžˆbDŠ0£ýØ÷âÞùß+¤‘T#QW Eb Mžù;0ÿÌ«QÿÕ]^x`vÐðÉ$ ¹8ÝTMœ¢É³"Ì$ª°(ˆ)ÂÏx‰Øñ±‹pVDè„[¤Á¸t¼¨PïbDŠÌrjD(H$Ýâ|V$HŠ,LuÀ¼-9v€º´%Œ;R$Fòqø*Vû$Ä*Ð’c¨ @[@Šèž¨O»Nn¤ e‹^Š<xbýÇý×ãSŒ“ó3NóÒ.eÜÛkÁ‹w-9vH@[@Š00’c†ú?¼ÞóÇ/ЃӇƒ–;¤ -‹VŠ´üúÌñΉWÓŒ;õåyÆ?úÒäÐÿ²þÈøÿ¦öƒ8± tààôá %ÇŽ)hË¢•" Œäø¯™ÿf$‡õ÷?åùƒüå= EÇ,8Ô(pà´u #EâºI ?¯R„¿Ñ.EÈ‹§— EÉÑ]ºÿ‰©l²éë§æuŒüøtó­/½øtË-¿¹\ùÿ0.èt¦…ˆ Õø#CBfQMçk‰ú¦´Õ»:ÆBº¸·`:ðŽž[é±Y ¼ã=ƒatÎqÝoƒ‹e'nWr-YÛFªµŽ«¯ÚXœ¾Äl ŒÆäììÕ[2wÌéÞɺ˜•’"âŽ.ŒQI#3¡Œã´³·µvcaz‚‘ ÍiùE›÷…—c¨ù*ž¡©8bÑJFZ0bÃzåæ_5Rä§CùA))"wˆKóçïS÷¶"t^6ýŸ¸m;jWuBpR¤3ËÿcOé).†œ¸i-Œ Éu\o]nDï8em½þàÔ¹ÎÞÏÒöªÃ>][)"®‹Yy)á¨¤Õø«ÒMõl%™JÜx~À1E¹'†û:ëò _5§ƒÁ )ÂÏrø¥ã÷K6|NŠðÉ$uȬ†R„忲`Óÿ†ÐŸ÷½¹jù#i)üèíTÉnÖ­¶ÍY?÷ŸÅ{0R¤)…1U™QÊ÷o;Øž;Õ›V$“Hø‡‰b8p:që UŠtôت7ç¦&Á”R¸fOgÛÜÔ_GO_MÅJÉfd­éÓ=…yé&#a´¬,ùäfPÍËY KÎHÈxLîÂLA&f•on *0PѲØÏœÒ¸¯riF’0šRW¬­éj—*ŒÜoY².fC‘"4í¹{jOIsËI9Å»›ûÜ4-<ÅÆk§ÇÄÞ4dLL_¾±î¼}ÎÓ®C•k³“I”YZ÷íHeD˜R +?¤Å6GËÙJ̱ID©,¶Ð¸ør$-‹ý4íhÛ_žo! 29§¤ºÅæ‘¿‡q‡Î¤Æù“ù†J'©Cf¥Öb‚b%O‘8üëéû[:+›þ¯?ܶíˆìâ]‰¹ÿøóÍ¿^¶#ÔÂg£¼ï'~ÿó÷‰kK uR¤£çró§Jþ¢ç‚‰ó|>×;µV±âÄTsíL÷ý#5fa/„‰NC'üeñ!¡J‘öê%¾¶zÝ×Vªm|Të6’94îºz¦ûÞ;I¡¡¿ý`.;Ð8rÙÖ~µûÀ޼ ,–së›R‹›˜Üù,ŒUNv?<}f ›Ú-w-|¹íÂÉïUZ–¸}iìÁ_7w|ùq:ãMÞo“³¯².fC‘"žS©LxÒû$岟Ndü)Íá)‰Mwn‰±8ˆîª¯nØ_»©©—wv²÷mýs>Ü{¡€=¬¼líñ:‡o]á·cþ¼Ïá¦&l5Ü}nÛÜÂUb?-!E‹-i\\~ñ5*Zû=íì$¶¡áÞ¸Ç=òMãÏêðÊÙ;ô$ETÂH‹œÜc«„³"l&Ìéköœ—Η&ç„íÿø ÐÛ?å"ùÀeÍÝt'¡RŠ4'°,ìdÈÉÜôH³¯/ZÃeñ ×ÁvôœvA˜(pà4t’Ã&¥8¼HÔVÚÂG­å¢ê|QíB B)—l§ücT.A»TLî|Ÿú¢îqQ¹káC„jGѲØ_ÂRí;¥‡;e›œ}•u1ʳ"{¹ôrÃ=M[¹ìž"TrF„д‡3²Ž?¬çì('øsû|™:¹ôF±)’;×#%E‹-i\\fñ5*Zûk¹S.ùNyÆR/g?îX„RÄúgE$O'´\ ‘†Oðæ·ñ«ëˆ]þÀ<„žŠR2RÄåóNúÍz#/EêlöüëÎe° ÛØ!ì`Û|×a„‰NC4ö ]ŠEm!ØŒû…„~ÞB‹ü0™ÁäÎgÑ®´ª"¢hYîB„0ã&þî)ÖÅl(³"&®nß0êæ `–;EÎm;³wýòŒ$’˜»æ>ÊÌ…¸¤¤%µð!3+¢XlIãj®Hå úM•Hâ/-ŽXÔRdóÍ/ýÂüûý™£¬ùÛ×OL¥ŒŸ•"—_ðáŒyxµMý¹Cõid • -ÿä|/‹ùèàôïoþ÷¿ž÷*ࣇ³P^÷Äþ!\ 9„Ð'/~“ìÀ;zN¤z§½\ÿ³"à¢îÄM+T)"n«A³"ŸD<+r²€Óó­ 0¹X.w¹•–…þÁ)*ïžb]̆"EvLÜ&d&ðFª8#ÇŽº@;„É0³"Šfeì¹¹ƒRD}±…‡j®H¥e¡¿Ž;¥OJ2É]Z±h¥÷xªOŠp­–N6]`þ Ç<1B,¨™ýóVªäfFþ9WSœi&–Vìóú¢ÿsóÀª%S憯Þ>¶úgÿ§ï¦¥¥È§lÓE9VȉN™|ÊvV-[øB¾o¹ÞßT“ ìˆ0QàÀièÄí*T)Òú!ɵÕkþ¶jÞ= Œ2ïešñ}ܳ"õìŠ<*:ÙtÅÖ~õÆÁ]Ë‚²èè>]ÀŒ!¨ä£3Ö¶ë¶Ó_´)[1÷  ³¹á¦þê æêTZ¼î1ƒ-g}÷°ý;ëßN{¿8 ÷ëb6)2u˜}Ü4¹Åî¢\ö3IŒßrÂ-wŠœ‘ ~9왋òŒ œÊ&óv.ckªòŠ}ÂãüÙzbµØŽœYÚÛ]Áüa†*:m7åqŽÜë¬ËµØÂC~í–+xÉ)ŒxyŒŸløñ9s\£OûºŽVeá/-ŽXœR„Wí‡>a$ÇÃ+-¼Ÿ‘"~¿?ÿäjl¤p$;ð¹KöÅ·=^ÇÅåìobý=·÷l\‘d”ÜA#ܼ:¼‘j«w÷o{/s‰™Ý¦’²|õ®¿ wÐTo’nÆAMºé“]Ë—¦’2XV•ŠvমœÛºamZ2“„0&¤g­Þ¢˜{PÂÃæÝ%) ¸ò¨·x+>¸sy.w!æ´ì¢]Û[å쫬‹ÙÐvÐ8¯7U­ÎH0 CbvÑν’F„!Bøpêî±ÊB 8ë?ëÉ·[Wg&™YV/ØA£X6¶xÖÓû7¤™˜Ûc²ä¬©Øj±…‡ã'+ò’ ÂqÖ*- ý4M=¾Ð°ewIÙE•çîŒ*^Z¼À´(^T¨wñ.E´ÚA³*¤8pqçæ©%Ï=Æ™õ Œ#o[âˆE8+êšh—7R@Š€Ó‡Ó¶%§mm>|i ½ÛúÙ>vs+Z{#êG¤ -L‹ õ”x—"<’O¢†” ^)NNÛ–|¬qW~ZŒæÔå+>lÆ|øœd]Ì‚´cÑJ‘ÅHpúpÐ’cÇ´¤ˆî c bhɱH@[bDŠù¤ï"üá,f Óô´äØêЖX"ŒÒp»=xj$l˜*Nn†¿ØêЖ²hï 9ýÅeFiønn®ÿ_a8¨‘𣊠á/v€º´%¤ïÉåh „ä€ è4}-9v€º´%F¤È‹‘ñ®®‹¹R0áLìì¼IBéíëq”‹$Ðiú`ÁZ²§»¾,'‘ÿ„ÜŒ¦¯²ÔÁ[1yÔÔEÐmŒeðoF€Ø‘"x7+#E!tqÎíýË罊Ðg*  þW #29÷ÝÝÍÿ«þrÔç²`€ô¦%ÓÎÞÖÚ…é F‚4§åmÞIFÛø¯±OPüac“ܫˣ>Ì…Wñ)ru!´tƒÐ¶Ê"¼±1UG‹“‘"³JjdVFŠü¾‘/xïM¦ýœç½¯PÑï* )ExÏ_oþíþçi„JÕ_Žú\ "€>kÉ4Õ³•Dmˆ¿ÍÚ›«–/1’–Â:ÆÞZíø° Ù@¦½Û807+ó?ýMsä7%lA)è¹–¯ù®2HbÓ]‡›ViYìW¼ÉBû@$̇ ‰HgEfg?A¨{vö(zï÷ÙßßC«~›1 Où¨wš“>Œ¨à}Lûq Ng&¡âg!>ß›ß&ú*QÊmþ¨@ðqj„HâÍ¥ö.Eh"°’ÉmWØÃëʀا,ôW -0r-™ÿj¼Gj\ÛËEõrQ4må~¹¾ï¿ó-¹Ïå䢌Â(¿áa5gð–﬛xÉ!Á…þZþQ Ÿ©g\ê…Ɇh† ÞÿõSÄ`PyºšKS‰æRd¾«Ì"T;Š–Å~Å›,©¦€0ˆ)’vóÿ wVdö?+‘y¼åÏ0þ™<´çß+ЪÿðQŒ™SŒñm &Û`ߨ¿H5ïë¬àâÿ…ÐÞ—‡ÐSQîÂÄ~?#Eœ*’- Ú®°ƒ‰˜‘Ën}üqÓò·ßo²µöOñár’#(üq»õ½«Ó¼ôêíÒö×óZZ5„1+bâ¢Ü¾¡ÄÍ %f>ŠoÉ”Ò}Ð!`p/Eðá&°ÊÕ—Mìétü¥©ÄŸ…?dþfE4©2ÉEËb¿âM–¼: bDŠ0bƒQ#áÍŠÌŽšÑÊÔ%ãœl *@æQ_ÌpÊëžøãÏ?^_ÍE™Oø@B$E˜ÿ?ÛÇI µwLðæß®þ*Døò}Y„ÌG§ó¿ÿõ¼çPØšß?œ‹r/þûÏà\$ 0ß„±Âô+óý*ç¯Y‘ãµÞ-=:ÜÿÒí¦(×øÄ—ïóá*¥ó÷ø‘ÚÞÖqšòÞ¡áøëO®%;ÊØ–œ;(QÂÝß&dþžQ-EøY‘;>ƒ?ÈýÔ„×q¦ú¤n¬\aÂ8i*Ÿ¡™ï*“ Qi9¼› DHŒH‘ÙðŸaèFÈðÈçdàÖk|ün=´.ËD˜²Öº-=éñöð÷¾SbÝý?›y‰¹eºük-œ«)Î4 K«NöyÅÖÞúÿçîïeñŠ—lAãoIîGjFØ• Os­õ"\¹Â—¨ó‡?]ìßxÀ:#%QèCeuöæºÛÇ_F_‡Ì`vÐx»+Ø¥‹ŠN›ÃMyœ#÷:ëòù¨©ÃìãÉ-v岟Ibü–n>*<)2}„5¸¤õ‰‹šŒðYogã'~|î¢<®Ñ§}]G«²ð… ãô Ã"~ÉZ…Н%B)¢y•‰¯Kœ»JËáÝd BbDŠDò¬€'ŒvB0u9R$>y¯Öê–ª\¡ä`üGžº½\2ÉÙ’;uÖÒú±ù+dHàžzš°žÞ¿¡ ÍD ƒÉ’³¦Â÷×.M;¯7U­ÎH0 CbvÑν’›&fTKšž¸\W’aRµƒFœ&ÐõøBÖU™‰D&eU6ž»3Š/L§ŽŸ¬ÈK6Dþ+ŽPŠÌh]eâëç®Òrx7ˆ‘"‘<+à wV$‰÷3?F"ñˆä¬ÈŒHŠøµ¨žÄ?gBÿ2TZÿ¤¥ÞzôELÏŠD‹¹ç ¢](kuÄ;1"E"zVÀÆ ;ÿ þ´oQõH‘x„{Väÿ¬ÈÔøÄ­+¾gE6×ZŸº䇨?ÃýùÿEmïù š~ýÏõµCOcøY‘¦àÐw?»)÷¨­-›•"[G¢]¢(#uè¦Eý=D´•"]]Õh & “2òì!a¬°7r&5ƒNÊ3z¯)A(?Â[knýà‘¾òZvMÛÜš§ý›ë­þ9zñš÷{|+鯺ïÄòšæ—Ë–&ûê±mG®¾Œ‘¶ðÄH]º!ê³"³sjï@‡„M8+ìƒÇ+ SHBbA\«µfþb¨ @[Âx¯‘æR˜W Óô´äØêÐ"º: @@KŽ .m)¢{ Óô´äØêÐ"º: @@KŽ .m)¢{ Óô´äØêÐ"º: @„Ú’aŸ×ü1½Jxõ¥ƒZ†7Í€Y€ôdK&d˜YĽºæˆo£š¿‡‘Ë‚IÚÙÛZ»±0=ÁHæ´ü¢ÍûBµy$O_´¤ˆî)è|K^´}ø ¾·q-Ehªg+‰Úx~À1E¹'†û:ëòBÍ7Â2Ⱦh›1Ó¢n<ž ɉ/@Šú T)"îáy ì{R+ÖäXHaÊ|÷à-ŠOCÓÞ¶ýåù’ “sJª[lžÀÏ¥ §\â Wÿ9<D˜R +?|ûfÚ']‡*×f'“L”Ö};"y®¤Yš~u©®$Ó,ñFL -gÏͱIDÑ´çî©=%9É$2&åïnîsKµáåH¶ q ¢e©+]D fEtH@D.E–^sxÆ¿äý9Œ¬™VÐ~>§=‹944Ü÷¸G¾ÉaüY^áé‰MwîÅøšwñ¨§^Š˜?ïs¸© [ w«ù(ï…ö°ò²ýµÇë¾yt…ø\„ ’f§>'Òû¤wÒ~:Q…©A!˜/zN¥úŒS.ÞxJ³GñräÚž°Á(ZûUƒ)¢{p/~×tÁˆkÂè ˜È¥ÈÍ0Áû²~Šÿò#Ÿ¦–¡.ù¾Éu·^xºäൈDŠôùî§“»ŸF>ªž»Õ_ÞO‘1KFíæÎíõ™µ £05(„ä’IN˜ìGh¯âåȵ=aƒQ´,ö/ª RD÷È~OëS ¦à>‡÷øã¦;åØÏáµÎ}Oî'/—³-"—"MKúù4&0çÏõü¤œñEE™ EŠPRËfîV»¤HïgÚ¡0ŠnßíVYƒB0³"&‘q¿"Â\¾í©´,ö/ª RD÷Èu,˜š3Jê.¿fÿ¸ì`E *öýÐ.ìáW¡6-@C¼Ö»¥G‡û_ºÝåŸøáò}>\½‘³-"—"x×ó÷IPúëùCB|ùꥈd”â¬?[5íëOî £vL/ÜVYƒBel²ÜA‰d»EÆ%ç.ðW*¢Òò¢m Et\§É‚ibócÿB­éð4>øk-ñ2÷C;ËúQ£~&ã‘æZëE*¸ ˜ÆàwüáOû7°ÎHu’¢È|Kogã'~|î¢<®Ñ§}]G«²äŒ/*Äסñv.c»ˆÊ+ö wògë‰ÕA ¹Þ©fÐIyFï5%£\ì³"É-vÓ;IRYƒBhow«u*:m7åqŽÜë¬Ë磦›‚Œ[N¸/§ˆ+í--’åEÛ AŠè¹N#’Sk@T5ëwVsþ}Nš>þ?–F±EÈ{µV·Tå òŒÿÈS·—K&î ä,D‹ù–"4M=¾Ð°eUf¢‘IÙE•çîŒÊ_äD(Ež|Û¸u5w«3ËêE;hèÁã•…)$!¹Mf¬«öÝt“d”l AOXOïßPf"ÁdÉYS±w΂ózSÕêŒ2$fí<Ñ+¹Ï%èpüdE^²síê-/Ú RD÷„1+¢¸¬e⣺¸íuËà·KŠ`Á›Ó’"þjòÏ“øçLâkVXH .m)¢{ä:HLoDíñ5Œ'+ÙCîTáµ]ÚÂ=éñŒÒcj|âÖß“›k­OÝòCìÇ[ˆ0üÅP€¶€Ñ=²;h"X0M<õ6Š<äÛXAÓ®ƒs|—MÆÐ_Ó‹nÿ‹ýà‘¾òZvÿKÛÜþ—§ý›ë­þ9z™4¢ ±Ô - Etî½"á.˜ò 2½¸öâ¸`!†î^ÂÍ“¬z«3€ÖÀð;@]ÚRD÷hÛià—¢Ý{Y)òŽC«ìÀ ±Ô - EtÏ‚Ijò§™!²öL‰ÚÃ_ìuh Hݳ0R„¦]L¸Á²²¦k\«¼@ ±Ô - Ett€>€–;@]ÚRD÷@§èhɱÔ - Ett€>€–;D·.ô÷®ÑHÀ¿å5^)¢{ ôþeãÜ.r‚´¼ó^í9{Ä{ÉçÃfü"ÝÔ¼øo0’3ê.íìm­ÝX˜ž`$HsZ~Ñæ}‘XÓðnDý΄ HÝRЊÃM9Ÿtæ°ú¡ìI„yÍ‡ÍøE<À-f)BS=[Ù/‘oágŸtª\›L¦ÌÒ:î»o˜2К÷”æYLœ¶êƒ†Ž¹ÏŸÉ†Ëg-QN#Ѝ¯ aîˆ0¥VHK OÄéUžÈÆö˜¸º3&¦/ßXwÞN3ô§0:‚èœ;ݞʢ”~6JUÛ-gß)c“ˆRYŠw#¤6&>1Œ[u@Šè"€>[Š$6ÝuÌ}vÇӞńî{Ü#ß°ÓYÞHmžJeB’ÎØ')—ýt"ãOiöðQÞ 칕—í¯=^çðÍ£+ðeØÎ‹DÓÀ˜Çã|n»vrG6>“µ¸œrF[ꥈùó>‡›š°Õp÷°QœL±^Ä"<_¡ÝU_ݰ¿vSS/ïìd °þ98ü«%š¸O=ÒOÓÙðwž)šòƒù¨bu¨¼!µ19)Ò-: EtϬ°ÇŽºÂ#Œ®`Q±@3ù”_L)}"ŒŽµÜ8rÉ÷=Çg\û¯ÐæÞ€ÏGZ Áç#빨¯Y˜2¬`ÕBêÕ^›ý…KxŠ\8&kq9åŒ(‰éó•ÍÉ•Í(N¦xOÄ"<]e…Ò´‡‹ZÇúÇJY û]­áLöô²1Z½)’K&9a¢X*ïFHmLNŠ„tK£Hݳ0+ì Eb îcv?nºS~€ý˜]ëÜÇìä~òÂpšúå½ú‘€‰nÚýyíín*š}—¢¨f -ùåµgíRs×<¦¹/6úAˆÔĦÛ×ç»9›f>ÊÌE¹û|L^·nÎ&|±æe 7¼øpLÖârÊQÄ_Nˆz)B)­#(ÞqbaæDÚvfïúåI$1—†ùŸ»Q®¬*{ßId³ž¦¸Bªl˜YÅêPy7Bjcr¦Bº¥Q¤ˆî cZ{FjÕ.µÜÔàçlªZxæ ¯õnéÑáþ—n7E¹Æ'~¸|ŸW#EF¾²î¼ÀŸì+=朿Ҫ!ŒG%ÅQu\ÿܧÔC²¹;à/ÖÛ„Ò¬¾ ´Ç1üèþ]µœíøpLÖ’— gØ”z)¢&j{Oð#5æÄ*.êøÃQ7£h‡ð,ï!6ju?÷'Øg^ESBel²ÜA‰dê«7Bjcr¦Bº¥Q¤ˆî OŠH®±ÎÈ/7‹Û¶Ê…W`žh®µ^Mb0ÁïøÃŸ.öo<`u´g¸¬î™Ç×õyNÖZ;•WìïäÏÖ«ñeÈ­n»9äpyèé_º¸Ÿd5>“µ¸œrFߊ¥H7JÞr½mQ˜{‚©1'Vp¹´?c"ÆNeöxüT óÏÙ¹ÁZeÛ ½Ý¦¬è´9Ü”Ç9r¯³.ŸR_ø»R“»ç!ÝÒ¨RD÷„±ÂPÝ‚5ÖùåfqÛV¹ð ÌïÕZÝR òŒÿÈS·—K&î ?·îáí»[z(úŸÒDŠÐ4õøBÖU™‰D&eU6ž“ÚH¢Mçõ¦ªÕ dHÌ.Úy¢7`Í·[WsÙe–ÕûvÐÈ–aÔÚZ¿©0ÅÄ- ­«nyDãÃ1Y‹Ë)g$ "”"ã'+ò’ Ú@öžà¥æDêî±ÊB ¸Ná7rÃÄIÓ ˆÊ¶Á¦œ°žÞ¿¡ ÍD ƒÉ’³¦bտ!µ1¹Cº¥Q‡iQ!o†)W„±Â.·Æ:#¿Ü,nÛ*^yBrVdF$Eü?vÿ<‰΄v •ø§›¦Î°qFq ö‚ÅP€¶°}Qˆ›¡@ŠÄaü-‰Yc‘Yn[S¹ð Ìܳ"ÏøgE¦Æ'n]ñ=+²¹ÖúÔ ?Ä~??|bÝÕß_zðÅXþb¨ @[˜êf("ñER³Æ*·ÜÒâ/°p;hìô•ײ;hÚævÐ<íìß\oõÏøÓKJzl€ ßçˆ = Ã_ìuh Ó¢BÝ R$¾CŠ`ÖXå–›CZü€0€á/v€º´…iQ¡n†)_@§èhɱÔ -L‹ u3H‘ø: @@KŽ .mávЄ¶ ¤H|  %ÇP€¶À{Ett€>€–;@]ÚRD÷@§èhɱÔ - Ett€>ˆ©–ŒÙ€¶ˆ©ºˆ5„mc‘·õ€Ñ=Ðiú@®%ÓžÞcÛÖd²¯Ä&-ÙÅ› 0‹jˆ_i¯˜WhgokíÆÂô#AšÓò‹6ï‹ÄZ„WR$ @Šè"€>kÉ}9ìsõG†^y¨©ÑÇ7Ûªs 0‹jˆ_lLIšêÙJ"„6žpLQî‰á¾Îº¼H ‚Yx@Šè"€>kÉiü›‘¤>¸3#õ->\¸+Ð@ZrŠ+ÖäXHaÊ|÷à-Jœ™3Jê.¿–úæ3^D Þ…D\þP¥M{îžÚS’“L"cRNñîæ>ÿ×Ü0Q˜û/d´œm96‰(µÆ Sjaåñ‡ôŒL•‰-‹ýºo'‘RD÷èUŠ,Úßì¢E®%oã¿öž\¼ýàѶ‹? Ž Iâ¯hñá|ûYzÍáÿ’÷ç0þ±f6 Ú/L“ØüxÒ;i?ÈøM‡§…Q¼ó/Ÿ…¦»wL¼™ä(GD.Eör·¨7àNîUŒÂÜ!ü›¯ð…K}E‹â)š–ô Ó¸}c‡›;Ý$Œâý˜ÏxἤCfB—"ü- ¼“fÅ(Ìý‚™Q4N)­ªÈ…(ZûußN"¤ˆîQÓiÌýQ`™;”]Ó¤4ï)ͳ˜ „9mÕ s/æ•;%è§'.Æ«­ìÏ3Ã*ýç@ÐYøîÐ7j–iú×’3øCɯhñQêý·}ÃÍmÎòq2Ìg¼ôÑJÅWªÙ0‡ÀßɽŠQ˜û/ÄQÆZÈ”¸ÿŠÆ%K®FЍ´¼¨ÚI$€Ñ=ʳ"”ëEï6ö§T`å£0kšÛÙék¢i`Ìãq>·];¹#[ñü¯ìCîçyWff’ûÄeV4 è¹–œQÑxö†mäÕ”—r;aÛLþ}>Jò+Z|”zâ)»‹rÙÏ$1~òД8æ3^úh¥âKUŠLfNny{'-'ÜŠQ˜û/„övW°ëj6‡›ò8GîuÖå«4.Yò"®ÙÜrÑ’±!Y^Tí$@ŠèÅgExYõpN`Ö4W°R$õj¯ÍþÂ%´¦¸ *ל‚Öyýåñú§=g@Š,näZrí¶ kó3,&# æ´‚õûZû½¾æ$ù->J½î’^\{q\zìg¼ôÚJUö*‚[ä¼ÞTµ:ƒ}ùKbvÑν‚4²Q˜û=a=½CAš‰i&KÎšŠ½*•œ÷Ÿ¬ÈK6à{•–y;QHÝ£ø÷‹çµýÒ¶¯Îºéû)aÖ4_·nÎ&|±æe 7¼Š§àe[Eë¼A?d„’| ¦ð o~/´19¦.àþ/˜uãñdH¤H|¡îY‘ûiìtGÃ4' 0kšlbcøÑýºj9° {”'@v¿´á·3Lû&[îYÌ€‰@ŠÚ³"ºGåªî³€–;@]ÚRD÷@§èhɱÔ - Ett€>€–;@]ÚRD÷@§èhɱÔ - Ett€>€–;ÄÔf^l¦ƒ½ Ettà€>P|Ù8Biyç½Úsö>¶Ž´Í+^ß|] ^_|€Â^çUŠÐÎÞÖÚ…é F‚4§åmÞª…ÈË y:H•€‰/@Šú@ŇO:ÙO1¢²'aç¢FŠh•W¼ ¾' R-¹øö3“QÌIšêÙʾYqãùÇåžîë¬Ë µx–Aît"*)_€ôºOüÌ …ïÌzîžÚS’“L"cRNñîæ¾·_a{м§4Ïb2æ´U4tpoä# )/ñ¹˜Üžtª\›L¦ÌÒºoG¸ôÞ¶ýåù’ “sJª[lliqáòYK”SÆHÐU o¾.ö0ƒ|å¯|ȯ•ÌÁžÀû&_)ô«Ku%™fåWÊEaî¡þ{96‰(•·¦ÔÂÊãiÉ[*}Ÿ•,‡t9Šm5¾)¢{@Šú )â9•Ê&±OR.ûéDÆŸÒì᣶³Ÿ7"šÆ<çsÛµ“;²ÅÖBÊ‹JlºëpÓŠ¹{/°çV^¶¿öxÃ7®`Ó·g1††{ã÷È7ì”KV‡_Z¹pLÖârÊ ºjáµã낾’Œå ÍpłВ+´ð\LÙ¦>'}QÞI>J8@#d¬ˆãò÷PÈÑW8ý(Þ:óç}75a«áŠÔ(.ƒÜ}V´ÒåˆíÇ5 EtŠv™œ½²âãÎ=4i TÂè¢‚ŠšÉ§ü¢I©oÑd/7âôú>§håZ»ïóñ+Øñ7õj¯ÍþÂ%iML^|”ptÃä^ÏE}8Ör—|éŸqéëñ¥• Çd-.§œ‘ «AŠÐÏ×3&·9Û˜ÿ6<§¤¦l»EQRÄ,®ˆ ?æ !¹d’&Š·®Ïå䢌â2ÈÝgEË!]ŽØ~\RD÷(wà׋Þl#'š4hR@lÀÔ;ëêîl9j;þ1—|—%× ÄšDQÕ÷e¤òÚ³þGIM\OîöõänápöºusöÜ·ÌË*nü±)WL^â1¹›¹¨ J1¡€… .=‰/­\8&kq9匈¯Ze]0o 3Ú[,Ì´zƒ2Å”ER$‰÷Ó4%7vcî¡̬ˆâ­£”VUäBTVŠÊËÛk@ŠèuÓڼ·ÌªZ 4–œâŠ59Ò@˜2ß=x‹š;]bI”¦ûSØiàι4öTöo±”~6JÕò.üO›¦¨W/Ç.ž°®¿*1M-L©>à‰’×Îð¤ëPåÚìd’0e–Öù>([#ZåËÒT«/PѰï‹öð+‰¼ÊÙ¼rlÅ£Ò1 I¨hYìWߘŲð€Ñ= E} û—8=˜ÂŽ)è»Éœgp®ËÝÎMcó¹íÚÉÙøpO{Ó3î{Ü#ß°_JÊêð}»‡ï´›î:ÜC€8Äs*•ñ'±OR.ûéDÆŸÒì&3ÞçpS¶vlBø‚Eñ°%WÛ¸e²~Z é~î· MI^»÷B{XyÙþÚãuß<ºb[#Zåë¿®ÁwX#‰—9)r–[ïk”Ðyù ¯Òå’°±)ZûCjÌQ¤ˆî)èY)rýÎÊd'C†ÒØa"鞯ƒ]ÁŽì©W{mö.á)ráµÜ(sÉ÷wñ3n¼¨ç£øÞ[8á¥ÈÞ€BZ ÁG!ùd}¾('eÄ,º¨—"K¸«žSÜZ„¦$¯½ž;÷ëÀ!S#Zåë¿.ÚYÍ…ïsÒôÎà~Jb¤&¹(ÉÉ™ð*]®! ›¢e±?¤Æu@Šè"€>kÉ·¸¯åþÌu¹ÃÜGŸM·ø¨×­›³ äûƒtYEà />Ü„B$…âÞ”Û7¸9Sfa2Jj‚]®`Ñ%H‡ÌD<+"yífî\Wàøˆ©­òú»Ì¬eNðçJê ̬Hx•®¦i)ZûCjÌQ¤ˆî)èÉ–LÓݤT—Ûíÿ±Ç1üèþ]µÂI.¼Ž3Õ'5ʨ/„!»þŒ½MÈü+>”+p_©ì³"ëØ«^*~f£\â{šA‡’³"˜Ñ*_¡Ÿ~²’=‹Sƒ¨Â-™—£Œ“¾ƒE ¯ÒÕ4-•–…þsÔ)¢{@Šú@ZŠtqÚc…ÃâXÁ)“.¶έn»9äpyèé_º¸Þ»šO#îídwâ ?>wQ×èÓ¾®£UY|”¸÷.âºú[.é%›©Ã&ÆŸÜbwQ.ûv ÉrÂ-iJx(W°è"¶dË<ßo0 d¨úöј›r=ú–ÝÉbÜÔ하 :ôv.c/¹òŠ}ÂãüÙzbõ ¶F´Ê7@ŠÐ®ƒsʶlRZÿÐÞî &/TÑis¸)sä^g]>^¥ãRH–ïg9ê€Ñ=1øÉ–ÜÎuãÅã‚?‡Ç‹¹A¼ñZ[ë7¦0½8iÉ_WÝòÈ—L.œ¦©Ç¶¬ÊL4 2)»¨²ñÜé?«ÆOVä%ä5çõ¦ªÕ dHÌ.Úy¢WrËCС\Áb \¯2q«µvÓŠô$’ “ÒWlªmýÑ);È>ù¶qëjîæg–ÕûvÐÈÖˆVùEÑÝK¸ö³ê•üT =a=½CAš‰@“%gM…o‚"¼JÇ7¤,¶ÀsÔ)¢{bí 0¿;è¸.h÷^VмãPN hHÝ£ÍÌ%u—_û×ßÕíX¿7ÂFÇÃ_ܡ׺ &:‘‰˜?Éj_@¯µ €Ñ=>ëžØüxÒ;Éïd7žæ£w¬KnŸ€HÐëðè².hÚÅvk–•5]ãÑ.Ë¢¤ˆî‰ð ր쾇èw¬KnŸ€HÐåð§@]ÚRD÷D8+¸“ÝÄG)îX—Ü>‘Ã_ìuh HÝánìdßÃG©ß±RÐ þb¨ @[@ŠèžßxêíNvòÐ¥~Ç:f‡ˆ $`ø‹ .m)¢{"|€oý…L/®½8N‡üú"€VÀð;@]Ú´(^T¨w Eâ‹°; Ð@LÃ_ìuh ÌŠè"€>µ%Cž?¢%EIb&“õ Ó¢B=¤H|RÐr-Y®¡ªiÀÐÈÕ ¾Eøºàq7ÉÙ++>îÑò]aóW_´³·µvcaz‚‘ ÍiùE›÷Eb-Âr‚QH‘ø¦R}ªQÃ"éç#D|—ë‚ö¸^ôî`5 Ñ4¯%ÑšêÙJ"„6žpLQî‰á¾Îº¼H ‚ "º¤ "™¡4ï)ͳ˜ „9mÕ ÜSÖD ¾”a}Ô@åYq:¦ˆ ¯¦.æÞphñÇÒ=&.Ę˜¾|cÝy»ªûêR]I¦9àEFsQž»§ö”ä$“Ș”S¼»¹Ï-eÐ@ZrŠ+ÖäXHaÊ|÷à-J\ìÑrÖ~ŽMbGe.ÂbKÖ¸8PѲÔ-Õm3)¢{@Šú )²ù“—ùû|`Ìãq>·];¹#[îÜð>j xVbÓ]‡;^?k"ã”gE(׋Þmì-*°úc»«¾ºaí¦¦^ÞÙÉF­.j xV¤U‚tÈŒŠºð¼¶_ÚÂÞ“¬›sK-¶3{×/ÏH"‰¹{Åü/)òƒJ; þb¨ @[@ŠèžHÞÆÒ6öé#ìó!KZŸ¸¨É gE0v@%LK;N²W€ð()¢wä: 5R$¤mì4=q¹®$Cú ²v ÊÏ¢¯²oÁBë%ZfP+•kór/@ÃHhoç26eåû„Ç;ù³õÄê™p_‡…y‹—\ÁF׳¿2òšô .„õÒL²yíU <@Šèž¨tsϦ,p¾À"!@ŠÐùì cF·h…Q¥‘{^B?ù¶qëj.*³¬þÛ‘™p_‡…y‹—dÁhº;½Þwl2Æ…ø{i"xìURD÷,d§Qp軟ÆÝ”{ÔÖÆ¾ØmY˜|ÅFYà'Å]G¹‰‘ ýÑ*ÏBÒ¿›ùÒ¥œT4+½ŠŒèŠ.1[°HÀ¨zÍ)¢{²ÓøårㆥIÌŸ‰–œâmG®¾„çTù!HŠr,°ñϺ d “³WV|Ü9¢e'0"í´¶¨X•¹ÄD˜–d®ª8ÐvÛBɵ*íìm­ÝX˜ž`$HsZ~Ñæ}‘X‹°T E ©T@€Q ÓKóÿjëŸ@£=®½;XMB4ix9ó4 ÒÞëìË*¿¦¦G¿©dß7°¹Ç«VhR0šêÙÊm·”A;G[±&ÇBSæ»oQâb¾ÇÚÏz+<è¡\Bô,´°Ø‚…𽌀b”³ÖrlúGåÅ ïžd^R¢`Yªfü@ 0+¢{@Šú¤HtQž¡\/z·±ƒcÕÛ]õÕ ûk75õòÎNn .<ËüyŸÃMMØjØ(ÔÈGM}Î>”tÆ>é´ŸNpžS©¾(ÊÅG¥4{„—^sxÆ¿äý9Œ¬™³¼_\ìmÜ‹„é~.ñv¡Aáw.p å{B¶ˆŠáGñb%ïžXˆ  hYìû1„ñ‹)_€ôH‘è¢ø¬"«J ¬Ì_â܈¹NxVŸïíˆü\Š‘ÚÍν¾(«p@Ü+ŠBh¯Ðàûi­ ÞÿõSvç‘A\ž%œ©é)2E¦tx#B‘€)XHßË¿°ZòS¡Š+y÷䤈°Š–Åþ°/HÝRÐ E¢‹â¬ˆçµýÒvÀʺ9·Ôb;³wýòŒ$’˜û ó¿ð,Jj] ðsna”I…YlPì[嬈ðÅ‚ Á|/CfVDåÅÎÈë¹EËb؈¤ˆî)è"ÑEݳ"÷ÓØYˆ~¶¡Š¿Ž?u3£&íÀŒ˜ÂÃ]³ßFíE)þ9/7PŽ®cM-?+R.ûFGLÁBú^†G÷Èʠĉ*/VñzÅ!aÜÆ°/HÝïR$ì¶½Ö€hR$º¨|‡ó³× İ™W÷Èuiüz%=zŠß@Óý)ˆ9§Ó—€¶§² Á)ýl”ì6s•9*nTWLÆð¤ëPåÚìd’0e–Ö};B"e-ä­úbžd±•|Š{ñxÖ“·Wô yOižÅd Ìi«>hè€Ïÿi H‘èRÐ"ºG®ÓàGÉÅÛm»øÃàhÀP+ù€áwØSš8-A?MgÃßy6ƒÝf®2GÅêŠÉ¼ Xã•—í¯=^çðÍ£+f”hÂÛª/„¦S8=öˆ¾›ÌyçÄÌvöhóxœÏm×NîÈÆü P)]@ŠÚRD÷ÈuÞ[ e–· Y¶v¹ÅÉ„o ÇJY ›l8“=·lŒy1ÛÌU樸Q]1Y=õuàl ^Š„·U?àæÜcŸòB™ìdÈPk-鞯+X)’zµ×f¡ê³e@H€‰. Em)¢{03È?¸y±íðG¹üƒ—øÂeÞ@Ó®ìû¾“Éf=Mqƒ5f›¹ÊUnTÇ$3sQ®P¤Hx[õ…ÜâZËý™³0ÌÎÒ Ó->êuëælÂWZ󲊆ÓD@Ø€‰. Em)¢{Ôt4}‹ˆ3øC̼‡Ø¨Õýܰû™oxÅl3W™£Êê˜daÌŠ„·U_p ݤ”4êž+íq ?ºÿCW-!xW  E¢ sÿÁÓÖ…ÚAŠÄe2R$£¢ñì ÛÈ«)/åv<8—ù÷ù(Ìhºƒðí]%Îι˜mæ*sT¹Q“ÌÛ¹Œ5XyÅ>áñNþl=±zFi[}x[õýÐ]œöXáð‡8Vpʤ‹Í.·ºíæÃå¡§éânWµËrÓ/@L«*ÀhG-þ>Ó_òhv ÀÜÿ³7§•)¢{ä¤Hí¶ kó3,&# æ´‚õûZûçÞçƒyà nU™nøC0ÛÌUæ¨r£:>£'ß6n]ÍEe–Õ;2£´­>¼­ú~Ú¹ûS<.xCãx1§:Úÿ¨µµ~Sa #vHKþºê–Gª,Ç×ÀEÊt1+R8ÞÑ=rRâI)¢rw6áû6ºÄÆððv¬‹ËR8IRD÷€ô‡¤QÜðmt™áaìX—¤ÈÂ8¾FÄ~ý9Ý\)HÝRÐ’ÏŠ(îÎ~óTncx;ÖÅÆåнñ×s· é«v|Ô9¨³ºãêß«6§/1£19;{õV­ŠkWº¤ˆî)èÉY•Ÿ;&Âo cǺ⺌ŸE"EØñºûþW_m`ï±wáǵù”;®·.72­¢xÇ)këõ§Îu~ô~V‹ R¤H¼RÐ’RDýîììÆðPw¬ƒ‘;zîqU4whkÜW¹4#É@M©+ÖÖtµ÷¼0iútOa^ºÉH-+K>¹É§o¨Þœ›šh@SJáš=mséƒ4!—øNõ¦É$ —¬}J’ ³Ê7· ί¯¦b¥¤¡k^Î&XrFbªGe…ùŠ/Dæê,KÝ|Ù»-™iÔHÝRÐ’RDýîììÆðPw¬ƒK‘Žëý_}µž½‡™çù¨ö}ilÜ_7w|ù1ûNò~›/ê`.›²èđ˶ö«Ývä±ÕK˜@S͵3×ï©13þ„j›0rÛ…“ßû†×Ö*£/q·/1FŠ«.œì~xúÌ®Šwû,lc?#eÜuõL÷½/v’rÃôr®a4öHHÅKæ+ÎH|uŠ–Å~ÌÝÛRD÷DýÅ5àÀ͇ôêwgÏ(m iÇzR$è/ÓèvaP¦ô¬2¾÷ùܨ] âÕÜaGO7oã£J¹¨ã;ÿR O|éÏsé·sê5¢Ä)ò©/?icà£Örê|QírRÄÀ¿sIJŠ(X2_9)"¼:EËb?æn‹íÇ‚+)¢w¨bˆq$¥H죛>/EOûåï«×p­þ›oÈ3J÷»«•CKÚ9ÉYñD‡äT€\bŒ‘,íÚ ²³"' Ød–V‰«P_àP¥ˆJËB?ænƒ¢H@€‰.j¤㎦³bÖyv@l¯ç^̲åì±ï¶gýÛ‰cï§ñÉÚë¹'„‹N6]±µ_½qp×2&°õCö S͵–ëýM5 Œß¼{@n0mÙÂ?+ò½?q¨R„Ïμ—±pó¬HG÷éF ’ÎXÛ®ÛNw~ýѦl¡5fsš¡þê dlH–…~ÌÝ)D"€þ)]TJ‘Ž®Vc˜›YÏÃÃw.ÏM%¹?díÚ~ÜêOÙôÉ®åK¹(˪Rßš»û·½—¹ÄÌî9IY¾z×ß%·ø2ê¹½gãŠ$£ª4’¥íèé«Þ$m!X\9·uÃÚ´d¦°„1!=kõ–9 j ,2ôÊCM>¾ÙV£E…Ãÿ0ئ‘hH‘‘<òFô/Ehš²[Üt§üÀí÷›l­ýS|¸ÜO^ÎX¼ùÓ/X G;æ,Ä E¢ ¼­Ð"ºGNФñßÔ ¤eºÇÄM Ó—o¬;o§úSsN§/mOe_ÒÏFyÚö—ç[H‚LÎ)©n±yä?ÕÑ™ŒPB'?1"âiÚs÷Ôž’œd“rŠw7÷ù_•IÓ¯.Õ•dšnŸ‹R•5Ó,î…K§Ømq(ëÉÛ+}м§4Ïb2æ´U4t^¹Tr¡ŸÇ@ZrŠ+ÖäXHaÊ|÷à- sç I¹ì§J³‡šúœôEy'ù¨·g©Ëš¦S8áôˆ¾›ÌyçFùíì!Ñ40æñ8ŸÛ®Ü‘-Wr¡é5‡güKÞŸÃøÇš9ᱦ›X‰b>>äô:‡¾2…q-*i®µ^éÌ §3ÿþt±ãëŒTWp¼Öz%-4¯€‰. Em)¢{ä: ï­†2ËۿͲlírKT7íáb×±þ±RÖ_Ã&ÎdÏ-c‡ªZNÕ\ò}õ—¾^lÊ?ì~ŸŽùœ—¦…ñހϪZ ÁgUw‹¢üg©Ìš¾Ç~ e²“!Ciì)I÷|ƒì VФ^íµÙ_¸äÚ¼XŠ ±sA¼ÿ!ë§ ¬þ2Ts¾å+ðÍ0®E%ïÕZÝRBBø“güGžº½\2qWÀX˜š‹’ûìK´ˆ©Â,B@ŠÚRD÷`: šv?¸y±íðG¹üóœøÂmgö®_ž‘Ds2`þçÒ»v°îûNz$›õ|ÄU&‰ïâìüÃ.ýª–ñ”HÞˆÛ7»9#f>ŠE¥˜õ-îëf¹ÜT =̽ÚÑt‹zݺ9›ð1/«h¸!;Ÿ#ô ˜$›dn èZ¦Ã¸•HΊ̈¤ˆ È?OâW_ÖZ¿ˆ™˜ýcª0‹"€¶€Ñ=j: š¾Å |üa7&8êfFYÚ!.½‡Ø¨ÕýÜhþ™oÔ®ã;QšÌÚ¹“©]8õq›ÌŠìEùÏR“5Mw“R£|·ÿù cøÑýºj¹ðíø’«ñcn ?+rÇw-?„z-êážyÆ?+25>qëŠïI͵֧îù!öó¸¯ß)=ýËÐ8÷¬ÈøDLþ1U˜EH¥ˆð'£cäú½RD÷ÈugoØF^My)·ãÁvÎ÷Vü‡°Ÿ¹(ÏØÀ©ì€¿÷é·%–8;7hz;ÙÍ)dÃÏ™3\£OûºŽVe‰s °ã:b˜“|ÈÔaöÁ‰ä»‹rÙϰë)–¾#W#õV©Èšîâ´Ç ‡?ı‚˺‹-nuÛÍ!‡ËCOÿÒÅ]W5¾äjü˜8}„½Ì%­O\Ôdг"*o£J¸4öƒGúÊkÙ4msû_žvöo®·úç@üé%wÐô_ª9t»ì@ïæ£ÎL‡]Í)]äzÔ7ÉÙ++>î q·š¤A|ˆVÐÎÞÖÚ…é F‚4§åmÞ‰µË RD"ñ…\§Q»mÃÚü ‹ÉÈ}£ `ý¾Ö~¯¯Ó î«,´Í$øO¼Á-v Ó·M‚¦_hز*3рȤì¢ÊÆsJûP×Hšv^oªZÁ¾è$1»hç‰^Áš±®ÚwÓM’»N”³nç.¤xüm—Hs½e;ãµ¶Öo*LaDiÉ_WÝòHvïz?æÒôÄ庒Œp¯à)]ðRd†it½èÝÁþʈ¦H2Z°Q˜¦z¶2¿X´ñü€cŠrO ÷uÖåEb¤HH€Ñ=°ª³Ì=›Zí‚Ä E¢‹¢™áþ¸àš·E5#5Ôò ”ZXyü!ŽÑÿß³Üü\ŠQœLîDüÎz•{äùåTÉ Ì{Â(¹Pí(Zû1—#¶G€Ñ= EýR$º(Ίx^Û/maͬ›B)’Äûµ j%?M¥FŠàwÖ«Ü#™Á¼g ì’«´,öc.Gl?Ž)¢{@Šú¤HtQ÷¬Èý4vv¢ašjù™Šiß°{3j‡*Eð~•{äeÜ«‡%’aÞ3vÉC²¬òr@б H@€‰.j¤ó¿ÇTáæŠcêŠS<ÆëÏ&Eðqx¯þ³yüðet^Wô8<µ¯|Âõ„¬wöïÿp­ü×o§¿ž‹G¨=®I–#¤á‹7=üòòßQñì-Ó·£ÅÓH})d"†G­ÒÈÖ§³Ê .÷ÈŒ;²s¶ï>V׋ö0œÜJñyzÅœwÚ(`ë$ŠÒtÊÙã뾫Õû‹òh“¹°¢þÚ ÝÏ*ñüG3HωP(ÃT¼vt0µãõÚÓxæ<_Ql5g™,ù_o¼ì°?©Gµ£1rô^W* -ŠGæizÔ<דЖÙÉ÷á0ˆ#÷Åc—Ó“" W§7bÙ•…Ň}dS(Êáö}RKùÕ]Ñ:çñ3 _¼‹ÃÑâi¤ˆ¾€2 HãViœF"òœ¾ÒÒÝ?2íkÑkn yÃìòûñ³(Ù‘yþâì_P–f¬%¸7ÛÑõ¿¼]Õ|ÊÁcäÇRU}ß»ÈD‚³Ã-{VlPw”ôhÅs"â^lnz+W/¸'y80måO£¦æ© œ÷ü³íL‘<»\ŠÆP{È<+ÍH¢XnÎ#Á™f©ešÇépõËTÿ2Äþ„/û']v­&“"—]nßô\ðÃIÓüþëô™ÿz|¸q²å)Ë%õ"u'å¦Ãõàv¨)¢/ E€ÌRÄð¨U‘ÑÆJëÚïnвžì +üïæ{…?T ð”l¶å­ü€Z§<<6` ?Å·MB2éVÌGIfP<'"îN'ÐCT!ê ™ÉGÖr'D×{Ù60æñ¾ ©}/äR„|4†ÚCæ©6G <,µ¬ñQóü‡ÃVjë¥_y>|ýM8"é¾PS\ÀwÿþLSûdÕå'ßN²±ìßL£®’ÐûÙ Çs©qy@^¼å¨_E­B¤ˆ¾€2 HÃC¨4øvyöÙp÷µ¯w s5‹×=·êŽì.È¥MÑóøqúÐÔ˜þ5ÈÍ¡À×Bk¢ñ”‚G ¶R’"Ò+GIfP<'Bʨïüü;någQ‡e¢»ªŠ¢[3YvÙ‡:"äR„|4†ÚC^žÌ=™bEšKû£VìY•I‘Øø¹W$z_áðÄÒDⳓ¥ˆTuüÃáú×Á¢èN "úRÈ, E –JƒãFq£V |¬ÁíÝÍçþ0ß‚r>iS¹Š¢öNâ–úÄYã)„^é‚#íG3(Jޤ•ZùÁØü Æ7ûâéHŸ_?Mö¢%LxÈB¯È¸(EF¤QÚ5ž+òV˜+²¼} Nƨr¸Þ„äYŠœé{÷r!²‘ÿ÷¦ÂñL-»\HÝI ?¯èøcfÏY€ÙX¤!EÔ~¤AMé…Zµ°i)bxÔ*{Ó!ÏÜÇåö=»ŽZرµ²ãö®çmˆe>LµÅý–çn›Ä宦;ÑQã)‘Þ]ècõo€‰,ýîjÝ»ªô %8Ò~4ƒ²éÃÚc/vÅ·+“>t;k»‡g|!†[ù£ß{­üîR•"„‡¼rÍù¢ëuˆ]J˜+¢ñQ¯Š+h¼W®»;Ð šîè•7½“U ®å°šLŠø=³W¿?tùqÕ·žN+O£&E¤îŠ7ùpæÂÕÇ•—ǪZ^܉®ÊÑH}Ic‹Ý¥ër+Û¾%ÛD[òKÊ«.~þ2(f)² Rd Vi8NÝ_R`5g›¨,K~é‘‹]“QZ°O¾«.³&ôÄ2á Ê<´öJh;åà‘çõ½¦“{±…ÂÊÉ š¸wOÝ‘ö£¿ø=øf,¬•‡[8€UGö»º¾*ÛÊ‹ÚZr¨¶óE’¾-aÂCæ¸ÀýúƒfÅ(­j"ú¢ïi´Ýûè$ÿe£ŽÝò-³áÀ¬»·¾ø3—A-;H‘U"›ÕÝÐD禖ê]?ü[ý il o|ÔV»KÓP–‚ƒõ÷•¦{i\Þî?Œ fó(Dqó¤ýüA[MeçÚœsºΤË ÙÀ<±IÜ| ‰å”nGÑ©aHã RdcRd#Rzõ_.„Ù°ßÓÆn¨“sz—èÏ…ðVz‘ÆòÆ—¼Ú]¸žã|µYòväðaóµ¹)ËÛOà‚M*©¦}•{˻ĆG[ŒÔ‘â>r= Xºù@2Ë)ݎܾ‘Hã RdcRd#òÇý¦£ÿ–›E¡_Œ§®¤º ½á}Ic‹yãK^í.\w‰“·]&É-©)ËÛ…‘PÅ“:5ç¨NêHq5)"U;I-§t;rûFh HÀx€Ñ—4¶7¾äÕîB8º¤=ŒM™å¦4.o'ôŠ˜ãÖÎ Ž,òr*OjG~%©å”nGnßH€1< EãRD_ÒØ"@­ñ%‡‹íøclê¼<™Æåí¾J¼kдB²sq}‚#…¾ BQÕ®h´¬ñv@Š$RdcR0 Eô%-Ò“"9íÞòÞB;!ÓW—åÉ4.oç"ƒv4ücïõøÂ,œ›è­/¢–¯¡õòykެ­ ƒJ Ë…-‘CÊ“aR²¬ñv@Š$Rdc¡¸•7üÁßFÿ[úÐHeê[¤'E(zûGÿ‚ò ­ËÛ¹€«ãÒÑÒ|3_6³Õ¶Ï^µ|Ø\³·m†’ST~¶uLqKÂÇ…6{q^¹ŸD£e·R$"‹JXk"ú¢&E2ˆ±[^ "†ç3Tð™)¢/ E€ÌRÄð€ŒH})d"†¤`<@Šè Ô*@f)bx ÒŒH}ZÈ, E T€ñ)¢/P«™¤ˆáù<•F&Õ(H"úRÈ, E Z¥Ñ&ãS^$"À礈¾€2 HÃC–"™x‰’X)d"úRÈ, E OªRDÚOÒÚæìüaÀý~mscîµ]ou¶wÝíÿÕãn—ËÙýó¯3ËñQbvŽ}79Ôw§ÓÙæìèùypòkЃ&u¤ˆ¾¬“Icï]óKÞ¦uRÄð¤'Eœ®¹¥»òþ!£±Xï€û9‚qøŠê HsµOøÂlØÿ´[`äŽØÉôad>ÄF>N£pÏ36Õ7@Šè‹Z­Â1cßÚWˆv:§s¬E¥¾JÉl ´övœ Žu9Ž•mß’m¢-ù%åUS*[Ú~“f)² Rdê\!<'ž&¹"ô(¼‹£îIs½s½ÅQƒÒ(!<ÔÚʇgÄd 8Ùpªo €ÑµZÅmC‡Ä]ŸùȰËþWÃݵ¶´]dVŠp죓4EQÇîNù–Ùp`ÖÝ[_œvÙ´ûÕ’¤È*H‘M@z½"¬âðÊ»§úîvw8Û°¢ÀB"NÀDD‘ ©g4ãÚhŽ’Î2 EôE­VÉθgG]9ö:ÕŽB?O8n¾ˆTÑ<®.q–K8K¬Q6ųóºïjõþ¢<Úd.¬¨¿7—’2™·•Uß|®0æë?Œ¼Ø< Qǃä‡-Ä×þ]EÓUêç?„lèú¡Á%÷D~,EÆ«ï{™Hpv¸eO,™å·/Ì<°ài’ì.ؤRÍôoã£roy—Ø·#‡ou2Ò2(—O¸’ÓüÄæ4Z–‡™ž|8«qb ÏýlãÃ;nGÔì "†'ƒRä,$&Â,z7Ñ#—"í~^}ü­†¿x˜ožÃH™œ:Å_Ú·¨­­'ôЍ}Œá«DywN+H‘sq}Õú.’O~E£ei¸^˜l£$™@Š$RdcR0 EôE­V)°7ÝòÌ}\ްaß³ë¨ñ-y‹õíúIvø8_¡0±d—/–@ÚÚ–ãØÑÐZ£éÝ…ÒW?ð˜ÈÒï®Ö½«š¥´gñ²ÇÞëñ…Ñ^½õ%BÔò53Ÿ%¯ÓbCÞ[¹|ØÚª0`”´xr×-KÑÞb>L7þ6b™ÿ»¯¥fùÖŒHÃR0 EôE­Vqœ:º¿¤ÀjÎ6QY–üÒ#»&#’ çÑl®Ù[€6CÉ)*?Û:¦¸Î%iñä®5Z–†9Ž}õcã‰/ñ=æ•W7}?îOzk¤ˆá)"úµ Y@Ѝ4ãRD_ V2 HÕ`<@Šè Ô*@f)bx ÒŒH}ZÈ, E T€ñ)¢/P«™¤ˆáJ0 Eôj ³€1<éUŸ¸pŒÝØKÒ€ÏH})d"†G­Ò$eʦs·íü÷£çšû^0¤ízR¤°®€Ñ"@f)bxÈR„DB¾™ÁæÝE}Q§¸áp€Ö"úRÈ, E OR)"ÀŽlG$Çä±Ü3çùŠb«9ËdÉÿòxãíèî(êÚÙ˜¢²s¶ï>V׿— Øñb)8X_ñ˜ Ž‹Lu_:\b¥Mtží`m§GñèLH¤ˆ¾¤*Eôý²Éþ·„ý“RÄðh”"çÆ¢¢F{šâ15O}`˜à¼çŸmgŠb¹kn yÃìòûñ³(û‘yiö童Ȓ·#‡›¯­È-3=;øpVãÄžûm ½ãv$ÕØ„€ÑÅZŤªÞ-`ƽ'5ÈǺÇʶoÉ6Ñ–ü’òª‹ëêN{v"€^h–" –"fyì$E¶ Œy¼ïBªo…˜ý4»K<’Ò…£jå–øH©_Ädoq²†T_H`RD_Ƚ"òönSIŽ}t’æëÌcw§|Ël80ëî­/^?w)e)è…f)2Ž•Àß䱋]UE&J¸bÙeo;.8Ï­º#» ri%ÆòÿJ³‡EV9æhÆE§úB›"ú’ž¿ã&ó¶²ê›Ïs…\üïš'íçÚòh*;×vàœÓ­å|:Ž \©(´P Ö´{' %K?Ê œ€ÿ0>æÏ£0ÖœôÖä…Tt—öC‹bªããIï1ã€1{½oFe_¿««á«²­üï ÚZr¨¶ó…˜Œ}ò]u™•¦’õˆÒÛ8ú”Wа¯~l<ñeaNEç•W7}/Yžj€Ñ—ô¤›lÈ@@·ÞµÄST®æki^:.׊ÜÁ»ÚP²š/²!ôŠoMû#Jõ¡)š"Œ“op=)bx`Àx€Ñ—Oœ¶JngÏÅýÀ†wÅøYh }ÖŠ5!Í+ôŠŒ‹Q#ò(Å¡d‚/rKí«D%Ù9­ E·–Ò#Jé¡©™"Œƒ2HÀx€Ñ—u•"Ë×ÐL¼Îµá]kkXˆj­ç…é Ëø'š·Hó®\G¹¾èzb—犼+%|• ƒA!åñ .2hG:ÆÞëñ…Y&87Ñ[_’ôÖ…”»Ké¡©= Âø8H 「H}YW)ÂqÁ‡Í5{ ¶dQY9Eåg[Çb‹A¸é›Õe[i“ 0Çî×,0«Ž¼ $ %|-´Ù‹ó²í5pu\:Zšo6QYf«mŸ½.é­ )w—ÒCSËHßRäÿŽçâä endstream endobj 18 0 obj 29736 endobj 20 0 obj <> stream xœ…TK‹Ü0 ¾çWø\HV’-?Àf2]ho JOÛ¶e÷Ò¿_ÉN2™Ý¤eÀ½¾O²¾4ºgòóH&$2/ߺOï̯٠æåGwž:öC4a`3}5w÷d$}úþ9”Þfº/6c(_¦Ýû©{xUpð»ÕÀ¥G€L§‚,õÀ—ž] 2dDe€³0€-i¶i,½ -'fˆÅg”V…BÙÊ3e@…ÕÏ +r¥KzÄšw_\F!wiEñJ;Ö$ÔðüLRÀ~‚“Ž%d¼4ÇÜ–Œ%uõ:Úx{w­mƒƒF¥SàJsÙÞ„¥¹A'Z;.6ÑrQ{kb”Bé÷¶Ö±42bÚ’¶ÕŒ%*^½ÀÜpÝѺ™yp;ûVÈéç¾@ŒO*±WòÀuA£´pD§…Öû]eÚ ³ÿCš$ïÀÛb`™;)m54è=ªzš³i†÷4†¬³Æ#… ú­®ú«q* ºUðñ+àOkˆäŽúØuwžˆÌå·ih{ßÎÊ"(ÞD0$Âö†¢B]IÔj±F¸¦æ™Ãþã/©<:ç endstream endobj 21 0 obj 524 endobj 23 0 obj <> stream xœíÝëÏ$ÕaçqÿÉëXyiZóÖ(ÑZä~óÈhfðJÑ¢(Šäµc CÜæÁL6»–-Gkƒ{'æ²Ö޽ v=Í„ {g ^˜bc` ¦{†À00ØmUºœ:·:uë:Õýýèh¦»º.§.]¿:Uõt}à úЇn‰‚X$rôz1‰ ÀàHdB@"‚ÊD^.³Id¶X.Ý÷ÎïE/ZøôYŒMýh:ß/OTž´gÏkUM™µ¡k‡9þt¶°UɳçuÚŸOs7l­£Ð>‘åî¶žŒM¤›qTµz^›ü8!ª„Ô…Dx 6‘£r÷\zEµÔ§Ü¸–:Æ=)M쨿¨ËþÛŸ–B6î_ŒS;I^=ïÉ€Js^¯íŸ˜yLÔslÑkce¡ 3‘‹”4]v÷œ:ÏÎ!Ë U>¥ A„`ÚâNÆ–¾–ÂZt‘ã2'rÜ|¡O=§±¶ß°L4ªQƒ±W 4ž‰¬_´5^'m™ÈÚÈÓÄô©’¯††ð*Ë,æ”·Y‹r:_d/¤±)éo›Á<Ù…<@óɉ.âî/ýz1SÓ^ŸϱF!ØDvÜ;íî9ÿTï(G¼’z«òmÒrXÄŸè"ú‘£ÖH ’'h±^TÆX[ãD§¦=Ç_˜g­ÝÜ={VÌØ›ÒpNû”1ÆÜr×åg¿O›î6ׯz;&zP½a¬ÞØáÛ²DnÒF–F˜¼ðþ+åÄŒQ^µ@¢AlÇ5Æß–$òªéudAþCcã=]Ùt C‰ÈÆÖ·{^òSßúyòcn{Ùç^k|r’*ÃÖºº-'¸iêç™ó6»Þn06@à¶'‘WåÐtü=²þ·WJdÛ+Vº×Ú¸pj$²ÇŸ€‘Ȱ1x҄✶ß=]ÔE"W2þ¨Ý"‘ÝäѶ{ºhD $2! ‘‰ @HdB@"‚ÊD>ú·³³S™ÈW@Ïvww}¹³6yS·Ýu…B¡P(\®¹öº±$òÐ/ôhDmä¡="‘‰ @<y¹\Ì&ùáGI—¨Ãš‡”%ò©#“#§JswùAüoú„¦ÜÄÞýT:`ñ‘2Ò«^=t¨˜ÖDAÀV¨•È)‚ƒJäSÖ·ŽîR—WŽÝdª²‡®ô;vÀ(ÔJä¸7ï')œ'rþ‘üá"Á3Ñ=.~Ôp$~™Åzúôá‰4ª‰)èûMdóPÆ’q„N”¶öÄßѧ7}ã‡zäÆÝ½â®s<¢r«¹˜ú·¹)CÖûMÇ^vE‚U'‘Óxþ_™ÚÈYà–b:~—tOÓ\ô“ÅzÀÓù"é7P"GieÈØCœ¿) ódUs8y§L> ÏWJï'åxU¦iœzy¤â]õP€ ÕKä¤M+†D–ò´æë4™÷íçÀ¥D¶]¾šõàŸÈÙ¥[sZ{p”>Šß“r·”ÁÆJ&Ø¢y€r ½4HÖOÑ@® ¢º‰¼\æ­Ü"‘óV°ñü³ûµ¬®«Ò=Ÿµ6ª<•}Õ‘È"`˽fYé˜rq2»tì1±dkÀÙ ¯¡ª›ÈE[x:2ºVy??[m âñ&rœ¿ÇŒýªg¬-ã7žI·ÍEÝ¡ÁiÈ+Ó%ãâä³w"GãçÀ£,OG;Ø]F>‰\qYk69垬t×)\ G½EËP>;î3 4Í9NÏô”—âurŽ4n6‹óÏ{ç÷|y•ÜÜ•Ÿµ–‡K"ûÜk-_6ÝbeýcäèóÏ¥Ix ¿ÙµVd#À‚D^#µ1 @ŽD #Jdñ/…B¡P(Y®¹öºQ$rdèƒz4–62›- b€Á‘È„€D $2!ØæDòŽ:ʶù^ë¡—=€ÔJdñä¦ì¹BÓù~õsC6ô² àŸÈò3‘ã·ñ{Ãc‡åx²nèe@Á?‘ŃŒ£¨3öV<æx¶PÃ1yzr$nT§±ž¶¯}úY¥éŸ>y9;HœÏ§yƒ½Ü„ÏúLÆf|óÐË€‚g"»ÛžûI,ÆŸ%Á¥ãJ:Å”Åbœœ"pE„zô#â>~³H:&‰ŸX$¸Ô]î¼Úr—¡—=…ö‰¼Ì1KX9mKÝÛ¾®7òÒQA—=….¹óä5¼>˜ñ0­žtÖZ9å>ô² Ðþ:rÿmäbüµäJŠÊ+݇^öêßk]Üpµ˜¥縎Ü>‘óñ‹ÑV%rqÚПÎOsg HÿYi/»îµnÈ¥ñW^;ÎïËÿ€š;»aâ7»‰ @HdBà“È o;;;îDú€­PÙFk1‰ ÀàHdB@"€È„€D $2! ‘AûD–ј?˜Xœ¢m@w?•=‹"+So<ž• s-Y<Œ¸x6qüÞü€cð­y™N>? H§î3"”–‰¥ZÔ8RMé®çè3nÉÎJ?óùTo_̈‘[ÙšªyÛY|ZnÈÏöÎïÉo•C[ÅäºM¦ÓÒ¡Hrh °ÁÂl³6‰ì ÄÒGûI´Åo³èE”p+)ÝâÀKºçaŽDj€Û¦%‚^?_ô=/’1$£u·‘õDN+¶_Œa%øÔ ž‰¬?4jåÈË<ÕòðŠ£ÎÜ,µ5Ó*Z߆x5ON¯¼mZ¦£3$¸øÄ±Ð°©|c.ÊC£š†Zõë•é$°»Zœ£–Â7?ïmžDw•W*œŸÃäa^€‘ò|£Hd½»|¹ªiéÑFN»çMQ¯6rÊæ){è<‘å¥Áék@þg­‰l»œê9aé:²zÎÙ}Z;;QœŽ!{+¦(&”õ¬ß˜=1þ¹–cFò#cøÊÇmV ` µLä•vk´-@í÷ZÇw-+é–Æ«ô‘¸;Úð÷Èòùír®/g=§•”ÞÊãwÎfv¶0\Gnù7Ñ€mÖ>‘·“r6-‘ȵ”šÃœt‡D $2! ‘‰ @HdB@"‚0ù¶»îQYÛbl°`y_ùn`•­ÑZ÷Z;N˜÷>ÙNK ´Oäžpj°UHdBl"°UHdB@"€È„€D $r8n»ë …²åeèýP/_ªc)×\{‰ˆhuìýøU …2ö}—_zãíeƒyð•2Šrèþ”D„Øh‡®€VD"ÿbõNƒ²Ù‰L¹õc°ä‡S Ѹº¬ºeŠ>O©n6fýAÛkÐßLa“ˆD¾ÚÈÆ'²¾/âK$kÈÊòp©nØÎ¹ïD^g”ô4•åþ|ZZ2Ñû&“hV=>úh#¯s_×Ƕ]µsëqŽÆõUmÜF^Ãlº'±y;gÏD3®%³?±9jk0êI™DÑe¶PGÿ_Œ<îg:š¦˜¿žÏ§Ê¾Å8¬2#¢¶¾£†òäÊ;·r ³©˜_Åh'¶Açב»Ú× È¶s‹»,fò·leúêÉû}XýËn›u—Õh‡à®a1imO ø»¿ñ]%²r:Bì6=wÚ+mŸV¹$Gºs>pàæ›-qã“ȶôOºNç‹ä›«mÆ¥1ì—ú1˜ôRÚŠö“…Ÿ|}¢Ïä5.-íMÚ‡èõcÐk¢ëÞädî*“3.ayFc3®}1êãÄ–ÐïµÖO*Ê*ïµ¶íëz ŽÆ‡Ð{ç÷lßPW"—»¿zú\÷!•_[DzÕwYw¥jÇƹÎõÑFvÏšmÇkÛ§U6úôÚ†¼svÔÜ?‘“oA|@¡-tâû¦,Ë÷¦¯j1`‘ÙÅø‹.ËRŸ†CùPDZÐ^›‡õÝäQ®+Ë̇ò€U_¯E×Õë–›\Ó•Þdl•‹[Âö›]zûüf—ÿn°«àèêZVÈÎªÚæºÍþÄsT-§èšº¶'ÜòÇé0‘'ÆýgÍŸ¶‘;çZwv‰TýàÐ8fy â(:;x6 Ø¢Üo"¯\§ï†= 3.FyKíÙ×ZŽcÏßµöü–9>ZçkÛ2ñ¼Ž¼ö6²çþ¡õ¡Ž69eOþ‘ßéð:r~ÔÔ`›©½OÛ¼³ü'{bîÒÜ4]‰PV´œ³:ÛÁ­mÀZבåùÊWJy3óZòÆaÕIÏu[ÌÒÞjž¯+-}Fê^ªÐ#‰¼µD"Ÿyý-cqlû´ò:ò‚c‰ìùÕ“U~ µ¯méËn[¶¶]–»VùR3 ž,MËuduv²%ßù]I×ʲíxMû4×’éÎÙ±õ*D/Æ“¶µËW~³¸å&Cmäê·@l$YšÔ;.œwŒÈ+%Y\µ¿Èù¬ÉÃÖ»´”C2w ÕÉeUX®Õ›¾ÄHä­%ùùWßlP*ïµvo„GãChÿëÈò¹½ý¨õJKÃók( +ÙûFÇ.Ë]«|ÌÓù\<¾ãÍÚ¸°ìÉo9ü»]žµ«Uª‰¾Ž;^=Kr5γ"o-å`\D"?ûÊÅÅçï‘ÝG}탣ñ!´O"«ÃÝN›£ñ³‹¯"ü¶W¥ƒFûe p"‘Ÿ9»jPÖù›]]ÆñÙ“»sëc·3®DfÇkìF ÀŸHä§~ºlPF”ȵöäìÜ<ñ»Öá`£6€Häù·ó ÊÆÿ®5ÜHäp°Ñ@$ò©çÏ5($ò–#‘ÃÁF l‘ÈÿøÜ/yË‘Èá-…B{‰¾Ëÿ°ÿZƒ²Ù‰L©,‡þèOIä@D-…BÙò2ô~¨ƒ/Õ±”k®½ŽD`pœµ $2! ‘‰ @HdB@"€È„€D -y›n˱ê‡Â’6UûD~ýÂ;îÂÎa#±ê‡Â’6UûD~ëòw1î–ËÅl29˜˜L¦óýeg³ÔލØd2[,—òÛ½ó{y…eÜ|³©»qh¤>ÓoÛW¾WW}RÏýùÔZOÛ\TÎ{´[çÒ–5Xòò×͸)ŽQãíVûD¾j}ëÅ }·œî8‹$ŠÞ×þúôô½«LIÿý€ÜE™eÏiµ¬|¯«>gMäÅÌ‘ ÍÙ9ÚöÙÕ7Xò¥M1Œ¹¨äq6ŽüuÑF~_/bÇ(^ë»åè‹dÜm*Gò¢‡ü{7ŸOóu¹‰­îg̯ãÿE—8óuè>‘MC¹§¥×Ó¸|äî“éT;Ô1Œ¡´4’CyI:6ŸU/Ëé‘h’Óù"9DIVfÕ\˜»ûŽÖ4ƒæŽÎÅ%Ÿ ±­S±aÇ=ÌÊ*–·^GÅzZòŽMÑøuðÜ¢ò·ù¦¿—¾² ÅÌÆŸ§¨éÒÐ7lý ®.á씾l3kXþ~Û°N]\G¾ñ5Ñ_Gűs°MNnQæ_œø»”|©ÅîÎgúky'™|–íº³Ž¶êu–ÈRÍ=§å¨§ÒâÎpôîÊ”¥Ñ¦•‘¯zG1'r4Í¢®ÅÒ1Æî>£õ9ÊÕ]\ÊÛýdŸ¿IÖuTy E ±ä §kœ_‡º[Tz ”¬u½HË0?‰{ßWV¦/¾¼ˆ’ ‘êX¶¶~ó ¨}"Ÿyý­¨ˆ–_ä¥I"W6x ‡úu{K÷.û¦`=XÖ&‘‹‘Ô™–»žå”vmæ/Æ`\ƺUÊW½£.Xˆ–ì~aYrÙæÂÜÝ{´†ttôY\–M®¸„½´ŒÁ| ¸–%¯nŠZ¾<×5¶¨•ÔØ7΋çÓݳ´…TŸƒò{íµ]kÖ>‘ÿõçoFEÎÑ%/µY?•×G"£ÖX½®ÚÈÆ¥Z9 z=ë.{ÐÎÎê\~ÍW½£9;u©¨48ó­mõŽ>‹«Á&çÚ׸äÕ0u~jmQbüòQºjê/ Ÿ…ßrù{nWÀšµOägÎ^ˆJþ=oåRç:r~àêüîTµ_jiku$‘ õô]>®1˜«$ÖH­R¾êEË…¢%[žV{NÇhÝ3(wôY\¶‘×¾ä‹I›NMx5Tmßéâ²á&j¶X×ÖF&‘¢ö‰üä™eTD‹×J±ßk-_C4+}_Ò U‹‹z† ‘âmyO«~ÝÇó«`ÙXO[K'?ÂQvïÎ1˜*_ç j¾êEÍ……zQ®¡m.lÝ=Gë˜A¥cåâr_¤v\Gvìù×´ä-'lsíXæ¶žÓ¤¯ú^x¼¶Öse¹ŽÜ8y+·+`ýÚ'ò?=ÿ†»Tþ=rét¢ÈÜäöǃ¥;*‹.ú×ô—½Îç> óî=˜D6ÖS_>òŒ‹[¨cpœÃ¯ûWáuW½Ò’•×`Úœ´Ì…cî*G{Zú“pã½Æ¦´ãpNÞäò{} KÛp¡Öz¸ï%¿Ò·4±e‡†Í,«ž{‹Ú;:Zê—×uσ½ ìܰ•Õ—“«öy†Ò>‘Ÿxî—îÒòçƒ8§¦5¬z­sÉ+÷'o¤m˜GŒEø¿kM"‡‰_WÊÚ¾tik´þÝࣰ óˆÑáÙO„€D $2! ‘‰ @HdB@"ÿDýÙÙÙñIä« O»»»>‰ zåyÖôŠD $2! ‘‰ @HdB@"€È„€D my¹\Ì&‘Ùb¹”ßîß‹^Ô8póͦîÆA¢‘–§µ?ŸN²þ§óý¥¥R­(s4ˆêX¿>9[¸¸ûL²WùTtJƒ8yÛK`­' +—` …˜È5Ç£4«‹ž3Ñ=ò4åóLOû™Ï§r£[›£´an˜Çø­>ÉTò†¿q$r•“úìÛê)Ïûd:•`Œu„/ÄDN’4z)}ì8_-7«‹¨ŠÞeñW´³‹~âwÒ䔊%o¦óE2 Ôƒ^=ÇÌÚFb[nz"—*²éŠ÷¤Í;A cä™Èúƒ•WZUo—ÕMäb$In*udlúٚؽNCußyR£µ¨¼ÏH*ÙôZ>¼0$¸²×ÿÜm@];;;ž‰¬×‘õ;Ðô+àÅ-gb´Ò[ŸúË“·}›näî믶}h“ÈãµI÷$+÷`FŠDº. •šÃœ€ñÛÎD 4$2! ‘‰ @HdB@"‚Q$òmwÝCéª µncI使JÉK´@^zãí…D€`(‘‡šzhD"ÿbõNƒB"@°HäщüÆ›ï6($2‹D‘È/½× È,ytD"_z÷ý…D€`‘È£#ùÊû¿nP܉ÌÝÚÛŒµVǸǕȕOdnÆøXadz‰Ûk3B‘ÈW©Lä×/¼ã.ì6k?(¬Ž5p!7Hä<¼d½>ÙÐ'‘‡uú|ábÀè}g)lI2‰Iã…Ökù­ËWÜEƒ|0#D³Twɬçá˜ËüIÒ=¹²Áì÷±ô:YûŽj¬áwÛ¡§Æ«£Ã‹>†ä;”¶Yº¢1×¶RÖ¹ÇÓg­qy[oe"ïß“¹ê[yµÎçS¹!‰>0.UgÜ«‘j¹é-}Ú¶ÜÇudŸ¦·c'Pk“èvûñ[Ô‹ç7¨ïm»Û]e‡‰l[éÑB«\ûƒÔ¹ýÈ׿zj¿::Oäø]b׿˜k —¾÷x f¤«DÎŽs²S¾ÙºsD¡’kŽÊ·o#çáO>Ù¢OÜKÌ1òäÍt¾HìÔñï«ÝåñGï“1¶Mdùjý”…Ìÿ^ëäˆñ}wñß>§ò5™N§¦‹×ñÿ¢‹ù”‚8”Š8póÍÚ‘¶6“¡E¾‘Z·ýpN™œX³¥Á³]J±öË×>äÃiý8͸‘/ó½–¥æ§ßAÏíʶöÅt+×¾26×ârÏrúÅ)ïO²¶Y:*qT[:ïèv(æÃ½qö´:Ô·¦š¸ÏוH²ç*j\°^­•òH<¿˜åÍ[ÚŸuìuçú¦'•øj+ƒÿæoþfWmäýd‹=†XZ«U9ª¤(\i¹æŸÈJâø'²ë{çÈÒëtöíãTƯ,–6‰¬ü¡±-Žký=rrUå²»¸¶OéPD_¿yÇ4˜¤‹úsl'¢c2´|tWu°š )ûyß­"ß¶Å6¬lÛqÙî.÷~i÷’VÀ2¿zå•Y«ƒüÚøô”¯}±åè¯Ýk_îîX\¶ï…Þ¿è˜[¾´¤ÏZ˜Ûa›¯yûÕá³£3Δ>Â(LõOm ÖÕZ)GÀªæSÞ$ämÀ=> ¹§=ž­ahüT þ‘Ãé*‘åê-fþ;½"×Ë­“6r‡‰ì8ð°Áa³`ûÍ.=ŽëþfWôé™×ßr÷USƒH>n‘²Êo8Ç£6y*ÈûÅÎß–ó?ÒGuÃÜ›“ö‘õb·×6fúzÊ×¾X•ò ßµ¯Í‚ßâ²ô/öÞÉ뼚Ïä¬|é!ÌíPj‰×>ÙÛxu8vzJM*wÂÊR•—yUäz½¯|1³@—·ZQb[Ƚíñj§Òá[w–ÈËü€1½9ʵlMßeÇrë>‘³·¨yٸϬ›øíÛÈÆŸ­–ã¸ÁïZGŸþëÏßtûNÀ¼/jvÜâ?Ÿå¹ÌÎ*ã©©u«­®-¬Û–qÁ°q–¿ƒžòµ//(ïµ_ï»Póõb6‘Ol.f®/TXÛ¡¼îôL¯«Ã±ÊYæØ Kc(µaÝ Äsi¯Z}1‹m V”Øòöxî”ÞáYëUzg¶Hvzoåæ7¾ú%²á“v$=à>(Û”/ü­âŒ®ØäÃ9ëlšjå^zžD"ÛŽèÄöày¼§/çgÎ^pÇN |”Ûð¸Åt­§FY>_•7Œuðkô7ÏÄ×g­b úÆ©|=åk?ß«ÔZûƵ㷸Ìý¯ò£åÙ,o)ÇŸÍÕ šáo‡bFê†EËÕa¬Œ\“ÊpûbIõ¾˜+y“("¦ùßP¬sç~›~¸Ó{­ÅX£Å5Sïš3D¡’kŽªçß#×òÄòY­Ò Uʰùó„iOUŒ­Ö…QûQ½yA™"ÕxiÒ/;´ï §|í‹ »îÚ×—°çâ²õ¿’ÚPéÊom5 p;TŽ4zZù|É‹k¢ÞŽUª‰q¦ŒKuµ2\Í7.KkEdzrS9X>áàž Ÿ…ÜÓÏýM7ÎÚï|ä»LdëA£9 Ú=¥îDn¬M†F$ò³¯\lP*ùŸžÃ]*Ë¥k+í¸e%ŸˆÛ }ö„Æñè-G>¥ãð´£|0ž •4½\ÇQ Íˤü0.ÚgMƒ<ˆOãÅGûµ/ó_\¶þ‹5e9ñå¨I Ûaù¾ýÚ—õë®!Ï,}ákbœ)ãRÕ׈×1E€û‹yÚ±yk§4+ç¢Û…ÜxKÓ¿éÆoAã³ÖFʽgƉ6@"ËD"?svÕ T&òÏýÒ]ø™ ÀéßAO¬ý lÌêyßàBîðW4ó¿Æš™oÉ2‘7‰Hä§~ºlP*Ù§¬mNQ—ñ;艵”Y'rh y\¿kU–Èÿòoç”Q|…`;‘È£#ùÔóç‚E"ŽHä|î— ‰ ÁQ"Sò-Ø­A!‘ XcIdJWe¨•pE"°ñHdBàŸÈ ?;;;>‰|ôiww×'‘@¯<ÏZ€^‘È„€D $2! ‘‰ @HdB@"€È„ }"/—‹Ùdr01™LçûËnk8ÑbÈÂlïü^´L¢‹åR,ñzè:ÂÕ2‘—ûó©7Ëø}“èi[žÃöšŒŽ‘Ë‘Λ–‰LÔ*ŒÆñiÜlœ-D—<’æóiÞ¦.·²åpŸ”»ø«SzÛ;:9’H[ôñ‡bd¦IdcPëc¹£,:úÏæ"þŸì€mÑ&‘Ý-¾ý$ÔâÏ’Ó¹Q¶­¤ðŠ£N´¯“°ÖG•¼ŸÎj?>ÃúÔ6¯žxm¨^RíüXB¯cä¶vq­ÙÔ§Ø`ž‰¬?XyUqª6‹Ì<†ÊPwTIokk£NBÊôÅ,k,WO¢¨käͦmá6ÏÎÎŽg"+V®JäêHªŒ*ù¸*–÷°Fzo¢Ãl6Ë(²Ñ&1\¾Ž¬×§ÒŽÝì&!‘`ŽDnö¼v³c×2‘ó×óù49–›Î÷ÍÞ;¿g|d°ñÉÂñ ñ3Šåî飚*"̦`<YP]ü>ÞתXg7;v$r´ã­£ü¸áä]жÍCYébëŠßˆ±IÝã±-ÒI°©;ÿ6rÖ1‰áè%»Ù ÕUY{½Ÿ¯ÔúC%[¹Ÿt“Ù·ŸcaS0 >ב‹l²wL¶éÝìæé-‘õ/õ†2¶Ä}îs`S0 u¯#ï'£¨´õÉnvìk#ûŽÍMÀ(ÔJdé"ozššÝìæé)‘WÎ «ü‚ÅþR\ÑÐ/p(Ý+ÙTŒK­DN®«W~ÙÍn˜þye¿ p%]™ÎçÆî³E±±©Ï¿G>pà³é$¿Ñ:ú\¾šÌnv“ð›]0~³ A"CA"À Hd(62‘Wˆmœú€cW9ã Õl*€ôšÈîוã\îϧöžS¯;#u5˜‰ p :‘³×{ç÷ä†sòYÑ”Vzê'z¹K6òøÿt¨èÅ|>Mz›Î÷ÓZ‰ƒe„r õ¢®iÇÙÂs¾ôé–Æ#Õнó*M¦Ói©»ºÁZG"‹¦n’Sõy1SNn5W¶‘“÷ÓùBz>ÎümœˆM+)ºì'Ù¿OêÐ5_–éŠñ” ülDˆÇoÊgô%–g"ëV^Õ¹ŽœÇAÝëÈI:©íSŸD–Þ¦¹´ïÄXyeêÆj¬²¦hi<Ú€~'ŠñÔJÌ¡±ŸR•Öÿ n€ÏDV¬ì“ÈEx_íµõ ŸFöIä"Ù«Q?’&§ßZæ?žš‰¬[w(×AQ6ÚAà ¨´»»ëŸÈÍ‚IœÑ'r›%²Ô ôo#«íÍI*λãu5|Ùwl€ùŸµÖy•eVš¶Òe_ŸÓªÆ YÙÐâ–G»*¥véÚ®|I·n"ÛãÕ<­ZבÓu\G^å×…÷—Ê¡B~Yé®/@°Z&ò*Ûí»¯§a=Ÿ.ß5m»“ÙÐ,cHn&.ÎBgç–oWåû–ýÏZ—ï¦.Ý]ÔÇ1-ï{­G¶{­å‰Nçscwq¹ml4– dí´G"€È„€D $2! ‘‰ @$òmwÝC¡P( ¥Ûr͵×5HäA~‚€ ÖàI"‘k´Ã@•fg­IdºE"»ä‰-ÊcLO ÏWêß4¶b(ý é£àžÇ–ý×9<‘ÈÆÎ™ÈR÷èx*lu"ËVóë³ÿê54IäÈÆÎ7‘-ÝcÓÒ9m;'Áž6¥ó§Ê=O‡-wIF%®ž’¾•Ÿc.žHUÿÅÙºs*»=ÀØù´‘ó¦œÞ¿{låîù”²3"å;Ê|YVÏåAÙóÞ9¹ÀØù$òRœ€ö¸ ËpEëÕ¯lHý­!Mw”ušÈj ›&²aNщ `ÈWEKåIϰֻ\+uÌNÏ–.ûÊçl‹óºr“Ü8Ú¦‰\L¢ÎudĜב‹«ÎSÿÆëÈhD°ò;~ ·7ËI—¤ÍéìÖhû]ͦ³Öù]ÐÓù<‹¤ä¬m69éõJº3Ùÿ¬µ|Øs¥ÉÕº×ÚÜ7Ük9¹Ìпr¯µ>§ÍÖ V$2a ‘A³D^ñLF …B¡P:-<€4~#è‰ @ºKäSG&GNåï^9v“üÖÝsíÇ@@ºHä8}‹¿ì»éØ+iÇô•‰1Ok…,‰ Ø(µ‘O‰ÈìŒä$Oã$£<é-ê"þV]älÒé#"å“NiY “È€ÒQ"ŸJÂ8ŠØò‰kk$Çñ𶦋óÛrÈ&=ˆ·ñxî¼ó¦ìµ¡gF¯Ï;»‘¬„¯1‘óa•×$2`õz¯µ=’}ÙýšDl”~ÿúÉÉ$2%=ÿ=rùÊrÁ²úÙiGÏ$2`s´Hd¯L”"Ù£ ßÏåÙ^&‘¥÷ßì²µ’€¤ÿ_Ñ$’¨ÆïZ‚f‰L¡P( ¥ÛÒìùÈŽ>@Q“È ŽD $2! ‘‰ @HdB@"€È„€D $2! ‘‰ @HdB@"€È„€D $2! ‘‰ @HdB@"€È„€D $2! ‘‰ @HdB@"€È„€D $2! ‘AãDŽþ¥P( …ÒU¹æÚëê&rä*èÔîînƒDÝjpÖtŽD $2! ‘‰ l†Áÿp£n{ý™YŠ^Z~‹Id`3D{ƒ—Þx{,Eßw«þÌ,E/$2!ÚübõÎXŠ1¤¯3KiSHdB´7xãÍwÇRŒ!5x­˜YJ›B"¢½ÁÅKï¥CjðZ1³”6…D D{ƒKï¾?–b ©ÁkÅÌRÚ€í ®¼ÿë±cH ^+f–ҦȄho0Èoã7c ©¡+Õ—­šÙmF"Ú4»Þ»röÓÉäÎ'®üÊôé÷??1|jëÞ¬5Ñ þ¢%••iSç›NA­¬÷ž¸Óséµ,òúšLnzàg¿R*æ³vú^ƒÝnÕu‘ÈÀfhsiòíÇ>/ö“·?vÅðéå'n÷QŸ?yùŠO÷fWÜÔ_©@ööð½g¬õ©¬s›™êuf{ZY}̯¹Úg8TZY?»÷Püºnú®p·[u]$2°ß¾{áí3G>zòþ£ýСûŸ}ûݬû㳤E39t8þhrÇ#ÉG¶î-ïJmPQ¹NÞWìöÇ¥YKªZ®¼ô¶ÔC>kåAÔ‘ 2³}¬,y~Å .Þz,]>'ïÈ{~äöl™ öñ¼7ñÑ÷ž¹ðBR«Éá£/–’Éì¤ú‘¼FŒ¯Þ{8©[:Z[wy*zUóy믬ún·êºHd`34þ×s'î˜Ì;wñÌ×’½üמ»,ºŸÅ;¨Ïž¸|î¹ûnHöQÇ/^vtoù—› êîâcŸ-W@ér|–Ìщ¤ž³Çô`ìg™íie)ó+ÞÆÁ”ÍéÓG¥c8‡ï GÏ(½‰1ǯo¼ïi1•è…s*¶ô×bŠbÒò Ò»ÛªZLHZúlö´U×E"›¡ÙÏ@½º|á«ÓC_Ý¿½~rïЮŸ¿u÷ùÑG¯.OÞï£v¿·¼dëÞþ×Ô_¯@¹ªùëäÅô¾'——jõPaÑÏ 3ÛÓʲÏï%iÌÒâr-Fß©Ø>j÷Ú\ÕÊ 9 ¿Ù ™f?•|öøíË&7|ý‡çÞ:{îÑ[âýÒíë÷ºý/7¨¿^´‹4 Ò)Ysý=ä#Túdf{ZYÆù5¾íp*¶úxOâé¯ÿAq1º–ûتë"‘Íí μþV­òâk?ùò 7~ù©—ÞFû¢¸Ë‹¯=úéx¿ô¹o¿æõºî¤!U¿þj^|øsñ^÷¶G¥Ù)U¯\ÿŠl#hf{YYÚüZg?ý膯ÿ Ñ&ñíÛâLüôÃj÷•·M:ín«j¾ ¬õìo«®‹D6C´7xþÕ7k•Ÿ|w6¹õ„Ü副Üí6?ú•ç¢×ß¼5Þ…~ê»Å‹ÉdöÍŸ_tt¯UŒ!U»þ??ñ©xç™V@y«ÌŽqSÏ}ñúxþÅYG2ÌÌö³²<—a4†¨ùääÞl¯ÕúÿèèG'¥ûÍ[]ƒg¯ãþŤÅìÛº{TÕUÏž¶êºHd`3D{ƒç^¹è_ž}ùÙ/\ã~x¡Ôñ‡Énóú£'_¾ ^G{§O>ôÈ'“Ý׃/_ÈûÑ»×*ƪ;’g_Ž+P:‹›Ô\îçÁÏä§+ãzŠAä:+=È3˜wÑûYóÌö·²”¢/ŸÒìæ}(ÛëÊõõɇÔ)š^ßøÑëKëÂÖÝVÕx‡’à–9ö’ZÏž¶êºHd`3D{ƒÓ/]K1†ÔàµbfÃ)Ïœ}äI2~ãìjðÊx€í ~üÓåXŠ1¤¯3NyêÌÞÇ“D¾ÿÌùÁ+ãYHdB´7øÑ‹çÇRŒ!5x­˜YJ›B"¢½Á?¿ðÆXŠ1¤¯3KiSHdB´7øÁOÎ¥CjðZ1³”6…D D{ƒ'ž}},ÅRƒ×Š™¥´)$2!Úœ<ýÚXŠ1¤¯3KiSHdB´7W{ý™YŠ^Z~‹IdB@"€È„€D $2! ‘"€þìììø$òUЧÝÝ]ŸD½ò©s4ÂÊA¤ŽI G/³9Mê"øÞˆß”Ï-èË Æ¿k½ªs9‚º×‘ó6£>¸;‘¥·i"í;1V^™º±«¬Z6 :_ù°Yc<D›{®Ë¯ÅPb>ý”*¶þßk¸yþ®õ±äÙO2ŸD.‚Àûj¯­ý4²O"+ è™ÈÊäô[ËüÇS9_«¬}7«Mç·ë]pe£ä'[ž¿k}Ìô4FÏ`’§Y"K @ÿ6²ÚÒl¤âYdVš¶Òe_ŸªÆ 9¯·–ZÜòhW¥Ô.]Û•/éÖMd{¼š§U÷:²X€ú•_ÇuäU~]x©0äב•îúr¨e"¯²¾ûzqÖÓùéò]Ó¶;™ mI1†ä6ââ,t~ÖôvU¾cÙÿ¬uùnê"KõqLË~¯µ<ã|b6ä§ÄóEä¾×Zžôt>7v·’›ï§± ¡jŸÈ =€È„€D $2! ‘‰ @HdBÐ ‘o»ë …B¡P(Ý–k®½®A"òÜl°Oš‰\£ª4;kM"Ð-Àx%ÏpQ]j|2xþ¸Rÿ¦±CéÏFý¹6þ˜q/Ÿ6=É `¼œ‰,uÞ‰çÁV'²ü05¿>û¦µ%‰<,Àxù&²¥»clZ:§­Î$ØÓFhþ°T¹*ž [î’Œ*{ z2HúV~v¹x$«íµÚ'¶Æ¯qåŒev€¢×Ö¸ ”æOwMüjk4@"/ÏäÒB_½6rò¬ó¸cöàò<ו —>~’a2ÉŸ~.¿5ްr6E Šiéd·*¯O^C1*ùä|e"çKR ;‘º+sHdãåy¹h‡z_GÎÔ89kkz)"kiëYë?ï'ÍæÊÙ¬ÿ>/Î*ëµmšÈ†¹F$2€Q“¯„–.þÊÙ‘žU­w¹Vꘒ-]ö•ÏÓçrå&¹q´M¹˜DËëÈòs^G..uçÍ^eXý:2Ú ‘ŒZ~—¯áöf9é’„9Ým¿«ÙœeùÅåyCÉ™ÚlrÒë•t7²ÿYkùį1ÚJ“«¾×Zý{ä½ÓõîµÎǓ܂f¸§Z¹×ZŸëfksˑȄ€D ÍyÅ3) …Bé´ð4FBÐøiŒ C$2!è.‘O™9•¿{åØMò[àÔE"Çé[üáÛMÇ^I;¦¯@¥ÎÚȧŽDä vFrÒ >u¤âY÷8á㈗OCÿ¦cÇŽÐôl¢ŽùTÆQn–O\[#9JÞI­Å 碌J:ï}êHÑðžÈ€MÔç]ŽH._t.ÞÊÝó×rП¢ ØH½ÞkmäZ‰lìÀFé÷¯Ÿ¬‘L"PÒóß#—¯,’ëÅy¶–®#›¯.çç¯¹Ž ØH-Ù«¹*E²–¶Ù=Õê½Öæ×Ük Ød½ÿf—¹•Üôä³­Í ÀÈõÿ+𯭕Èi9y6y ØLü®5!h–È …B¡Pº-<€pրȄ ¤ç#KcH ÅÕ€íäó‘ù©LÀÖèùÈWM<ŽƒøÙ_Ó@l•žl|ä±ñÑl…žl|ä1‰ Ø^<™D „ç#“È õ|dã#IdÀöèùÈWM<&‘Ûk ç#×é€-0Üó‘yä1~×€ð|d …B¡PB(<€pրȄ` ç#óÇ”ù|d¶Î@ÏG–ÛÈi OJ¿tÍ#’Ûe ç#‰¬Ÿ¿Žºˆá*Î|°Az>²ã'¬…`à ý|d€ØÐÏGÖõšDl£žÌudJz>2÷ZP2üó‘À`ÏG%ü®5!àùÈ …B¡„Pš=ÙÑ'h b€Á‘È„€D $2!hœÈƒß“F¡P(Ê&•÷ZG†ûk-6Sƒ¿GkpÖtŽD $2! ‘‰ l†Áÿp£n{ý™YŠ^Z~‹Id`3D{ƒ—Þx{,Eßw«þÌ,E/$2!ÚübõÎXŠ1¤¯3KiSHdB´7xãÍwÇRŒ!5x­˜YJ›B"¢½ÁÅKï¥CjðZ1³”6…D D{ƒKï¾?–b ©ÁkÅÌRÚ€í ®¼ÿë±cH ^+f–ҦȄho0Èoã7c ©¡+Õ—­šÙmF"Ú4»Þ»röÓÉäÎ'®üÊôé÷??1|jëÞ¬5Ñ þ¢%••iSç›NA­¬÷ž¸Óséµ,òúšLnzàg¿R*æ³vú^ƒÝnÕu‘ÈÀfhsiòíÇ>/ö“·?vÅðéå'n÷QŸ?yùŠO÷fWÜÔ_©@ööð½g¬õ©¬s›™êuf{ZY}̯¹Úg8TZY?»÷Püºnú®p·[u]$2°ß¾{áí3G>zòþ£ýСûŸ}ûݬû㳤E39t8þhrÇ#ÉG¶î-ïJmPQ¹NÞWìöÇ¥YKªZ®¼ô¶ÔC>kåAÔ‘ 2³}¬,y~Å .Þz,]>'ïÈ{~äöl™ öñ¼7ñÑ÷ž¹ðBR«Éá£/–’Éì¤ú‘¼FŒ¯Þ{8©[:Z[wy*zUóy믬ún·êºHd`34þ×s'î˜Ì;wñÌ×’½üמ»,ºŸÅ;¨Ïž¸|î¹ûnHöQÇ/^vtoù—› êîâcŸ-W@ér|–Ìщ¤ž³Çô`ìg™íie)ó+ÞÆÁ”ÍéÓG¥c8‡ï GÏ(½‰1ǯo¼ïi1•è…s*¶ô×bŠbÒò Ò»ÛªZLHZúlö´U×E"›¡ÙÏ@½º|á«ÓC_Ý¿½~rïЮŸ¿u÷ùÑG¯.OÞï£v¿·¼dëÞþ×Ô_¯@¹ªùëäÅô¾'——jõPaÑÏ 3ÛÓʲÏï%iÌÒâr-Fß©Ø>j÷Ú\ÕÊ 9 ¿Ù ™f?•|öøíË&7|ý‡çÞ:{îÑ[âýÒíë÷ºý/7¨¿^´‹4 Ò)Ysý=ä#Túdf{ZYÆù5¾íp*¶úxOâé¯ÿAq1º–ûتë"‘Íí μþV­òâk?ùò 7~ù©—ÞFû¢¸Ë‹¯=úéx¿ô¹o¿æõºî¤!U¿þj^|øsñ^÷¶G¥Ù)U¯\ÿŠl#hf{YYÚüZg?ý膯ÿ Ñ&ñíÛâLüôÃj÷•·M:ín«j¾ ¬õìo«®‹D6C´7xþÕ7k•Ÿ|w6¹õ„Ü副Üí6?ú•ç¢×ß¼5Þ…~ê»Å‹ÉdöÍŸ_tt¯UŒ!U»þ??ñ©xç™V@y«ÌŽqSÏ}ñúxþÅYG2ÌÌö³²<—a4†¨ùääÞl¯ÕúÿèèG'¥ûÍ[]ƒg¯ãþŤÅìÛº{TÕUÏž¶êºHd`3D{ƒç^¹è_ž}ùÙ/\ã~x¡Ôñ‡Énóú£'_¾ ^G{§O>ôÈ'“Ý׃/_ÈûÑ»×*ƪ;’g_Ž+P:‹›Ô\îçÁÏä§+ãzŠAä:+=È3˜wÑûYóÌö·²”¢/ŸÒìæ}(ÛëÊõõɇÔ)š^ßøÑëKëÂÖÝVÕx‡’à–9ö’ZÏž¶êºHd`3D{ƒÓ/]K1†ÔàµbfÃ)Ïœ}äI2~ãìjðÊx€í ~üÓåXŠ1¤¯3NyêÌÞÇ“D¾ÿÌùÁ+ãYHdB´7øÑ‹çÇRŒ!5x­˜YJ›B"¢½Á?¿ðÆXŠ1¤¯3KiSHdB´7øÁOÎ¥CjðZ1³”6…D D{ƒ'ž}},ÅRƒ×Š™¥´)$2!Úœ<ýÚXŠ1¤¯3KiSHdB´7W{ý™YŠ^Z~‹IdB@"€È„€D $2! ‘"€þìììø$òUЧÝÝ]ŸD½ò}þie®•F·hqc~æøW¿úío›T›#@{ÿù®ýa£G>}ÿ{yLJŽÿø¦$mï:þžÜóC÷ï}8ë.ú‰‡ý؃¬óï‘EÎ*aª'õÙ$sã÷Ï^D}¯¤ìŽNºça]K÷‰,šþYe’üþ3EGÇ¡ˆž­éØÊ1í?„6¿ÙõË›·_ÿ‹ï]Žº|ç{OŠã5}›¹»Òm5ÿfWÑø-•†6f©ùgð²ý‰b¡ëÈzCþ­æqoÉ[­Ï¥>fKë›D&‘t íïZ?ôòùpÒàýðñ»zç[=9ãõ¯þþáèíÿŸŽ~Êok–nÿú©ò:¬WYjrúëü¬µ8ÇžZ/*¯•´wÌu4ÚÈ.$2€öò û_ßyÛ¿<ð]ÿá‡ÿR¼þ‹£I9~ûÀwÎþIÁòµ¬·$mw‹rGÑOiº¥›;»² M/§Q[º{弎œÆpPבËõ—Ú<”i®n{j“È$2€æò »ÿÛo×*÷Ýýðïå§£?üð—þú-¥{”¹Ÿûë·îû¯I^ðÎßûpÖñ[ÿ÷?&‰ü9Ë µªÑÍß#Ë'f勪Y÷<}ì÷Z?ø v's-'òª|€±Ò®•—ï'/òT™ët$Ò Š[²g¶Ì>‰ Bd÷~ë­1–Á³««?[î$‘Çh3f“DÐ^dGÿ÷›c,$òØmÆl’ÈÚ˃ìk¾9Æ2x"w…D5@{y}õÇXHä±ÛŒÙ$‘´—Ùÿxà ‰> stream xœì½Û³%UïÛïçðé<œq"΃µNEœØç~ãD? q"Vt„®f»Cè®Þ}SD €fº,[¶}Wkƒ`{C·µJY Já¥,D–Å¥-©„ZSh±µqwÔÉ™cæÈ‘ã–#¯sdæçU¹rfŽ™3sŒïüý~cü~ë·úãÿ?ÿ¯óο€……¥»å ƒ•WŒ………¥·åýßþ!<þßõ?¸ú·°°°t±ÌçósçÎͬ¼z,,,,½-‰öЄǹn8õÜKÉÒQá1#_+¿ðp} 0&<؃ð@uÀ”™§æŽs™ð8g(„L‡„‡P˜,¦ÅC“˜] Do¼ÿýïÂãý)(˜VW˹¢AxÀDèTx±q®hô@{ÀÔpÅxH±ð€éÐÅC¥Lu»nmm‘µµëŽÕ¯B¡À´ dK“ª¡ sÄxÀ„ ·9~ñµ'K²R£ÕýܧïæŽ{î¹7Y‚«!¬‡(äºÇÐ/ÄxHJ…‡TµµG"<ÎeÞ±†!^:ü¾Ôv!·&¤Iä±Ì²a˜GÔrëŠð‡¼ïðKÊÎ鉚™Yrˆñ” ¡7Ìõ@„¡ã\&<’õàMx$j •Ùÿ6ûF™Å#9v±j;0/3“! ùö€ Æ@RCxy⌶xš\ág9§Ä—=4y‡j¬)®ÕâÙ¦bɬ(k¹ ¤`Ax@sˆñtêj2ÃaFSxXeÀB:dž’2‹‡¾EZOTç ÂZ†IwÁ¥BcX…G˜öÐû}·°ÊÏqªðÐDx@ûã N[5ºCŒÏ\ñ ±$[äºX´‡U0hn‘5e¬Ü¥4ð#ß"ÂS“C®[Ävh^ÐÄxHº²!Æuÿõh²$ÅŠº0Lb<$ aî0ņº{ ›Vb<öö¶g‹QÞ³í½=ëö#gÌŒÉ÷”YøÊwHJ¥émlíOªž:pçžIª¦]ÚªkK:ª¹Ãµ\ù'ð€)ÐJŒÇ …ÇâÓÙ¶«J;÷ÉîÖ†õêV[+ ÿ˜Yᑨ„L„Vb°±µ­(¥i"ÇuRÀ¤N§[DªÜ’ŸÅf¨1¯%°4Ä&<^<õê×îûöíŸýêm7Þo.ÿxûÎÿK횬„c<úžQ*þå§æFUÉhû¼8 E5hˆ^^lû¨ŠÂŠ8DÊ!C½ä•±ÖÖzR«?%°4˜G&<¶¿ü¸Uo˜K²gíúôÌ cá±ñÞßË_]{³¹ÈO0 †ãQ¯J«cñP LW‚íj#Ž­Š¥ì†$‡¸$S…Ò`™ð8—ºZ>x`öûïÿÃd‘2C.pñýò]_Kö©]€þégAyÝ:A‡5¬4;¯å(áõ°ÚRü×"ý5¦s§Fi›ðHH„‡ÕÜ‘HŽ2Õ‘goQ,ŸZ–¶p”yì:õÔ¤zsŸÇ£F•JN0ªEôïª`ÐŽ­y¢ ÛÙKœ#Òc7j”] ™m…ð¸é¯ïJãüÃ×Åòíg’%É¿BŠÜÏ7ehª /áaIQ@Œ‡Ý¡öÔsÛ<æ`^M™¸+VÕb½9„GÀ˜b„@8 ©:*iRá!$G²¸µ‡Mx¼tø}‹¦ ˜|Vݘ®ïÏsÝÊd¸ï;ü’ZÔbãû6„Çâx»D?»–fW«°\_¬^æÏU룕˜«Ž˜°°RˆN…‡šá%<Û‹tµX…‡*6„ö°•a ¬ëÎÕ²ñœø ý#û¿PZ¶E–›êMe¸ì*Ú‰”ýlkEá‘—¬"=K+1`ÚGÏÂ#)G[Ì£¤ÅCFwhÂCݹ‚ÅC_·ˆ=6#³¬Y1e†GxTªŒ# Vb<&Žê=q…•À œ«ÅaâШ'™zIuÆÆÖvºqqÜŠ„Gò X²îfsV:|) t¹‘¥•¶ bõñ_þmHñÂ9­g/*þ*? `ªŒFx †ɺ‹í™ð»ÙTÇ9Íbô’…‡Þ„æ) cÖì)ÍŸÜ/Uáa[ÚøëR`ºÑò©iè(ý;!ÚŽñXèD8³†Ex(²¡âúR€ìº7ŠðpÅlœËv™ïÏÞ)[wÕü‹?Õµ³¹‡*Ô\=eŸÜÜQzÀD‰_xx¹›”‹MuœkÉâájBóŠ¿Ò´H6o®m4¢àÒ ã·Wàeú+“ÛCªªÿ\udË*i;ÆC¨i³È…‡´iX&þuE?ø"F:vµXiflT|ö±¡ò­ç̶zsìBêŒl%è(€i¿ðÙ-•–ðàÒ®מy³ìï.ݨ¢‹ê\h`=•‘-k`­ÌÒlVìiÐvŒG&3–Š ‹©dñØ•.†(<ïÛa뾺›ÅQ¾Õý㺊ªGL‘qIxŒ‡íè~„G¡M2Èý0©?X®æîkùëÍ}2¿8ÑšhGD¦´0k~ê Ñ~Œ‡Òb„sä“`á‘”#7‰dY»²àR+AÏÒ1oŒ‡a¹î˜ÿ´¹ ·jËÁ"Iué„0AÆ&<þìèCÿølòïýŸÿôBx|êî'ÿÓEÉúBxüÓsb{"<¾ûÏ·v>ªÅ¿§aÈ-†âkÁ¥ËÝRdz.ÌøÏ‚Sã˜9‚æXé˜_«eX´«ÉGבV+åüÔ¶ŠM‰.b<äölb=±ž~G #ˆpš9{$DxÌÓøRéjQŠðp¼JêËRˆÛ°EyšÞÆüƒ§É1mŒXØQ“cLÂ# "] 4¸ô¢37Ü•ü«m/‹ôˆš©‘@®–èàÝX£BKÜöWOÆw¿ü±ž¹.·Duœ£q äj‰ Ý4}2áÑÒ¨€N W €d£ꨖ®«  ÒbŒG'b¢ ¢ž¢Â,,,,5–óο`ÂC`‹­¶@\=¢yZs€ÚŒÃâ3Vá1fŒ@C<ˆð蔫GãÐQ 7ßxëÔÓ¯<÷ä™äºŽ}ýäs»/<ýÃç_=s¶õê„`Z<®lŒ@CÆ'wòÅ.ª àbd1M™ðxñ¹…´Ð„G¢7Ä"®ôúC7uT[+ÄxHÆ$<~òÜÏ¤ØøÎÃÏÜsëΧþò®Ï|üîßRHTèb<ü¬ò»€ÞÓ¨–ZªŽGžý§îûÄì¶k/ûÜ¡ßríe·ÜxýÿH$G²üèøéûŸxù¥×mx’˜´Ki†Ù %©·»£½jO b<ü¬ôË€¾ðøÉs?“Â㡯œøÔÇîú‹+¶>úá›7/ýì¡ËnùË«¾ ÌɧßÞyæ±ØÊ°&8ë‚–:¬Z „GMˆñð³Êïzg4Âc÷û/JáñøC'ÿöЉêH$ǵ—ÝòÑKoNþý›C·‹O?ú/ÿ|×#¶2´Ä¯zºØbrÙbLû–뎉ŒñÅ$­JÚÙbW^عPl1Sm^-G÷_¡2kÎ 8 )¹9® ™4­ÇxˆÜ²™¥kckWÏ!;,Vúå@ߌFx©ìÿt?=ÃT~da­y[~’v˦ðÈvVÎ-sY)‡XÎé¼ keòò5¡e¯­mM½íæèåÀ¹¶c<öv·6”œõ{‹¿-ùëW‹F²’~VùÝ@ïÄ/<<‹ºg"<¤ÅãÁ<öÉëîüË«¾ b<’•¿¸bëªK?ñ£ã§®–‡Ÿ¹ù¯îµ-ñ(öÀkÅ ³Ç·šJ´Ýüû”–à?i¥Ê„”XÛ›-Çx$=zrÓݺ›øtñ̶u °=-L$Kõ²´–„ì3_Ša“²gyàÖÖ†4¿ 2Ùžiir㑳G¤2Yé—}¹ðç•Ó{RxÜú™û“%Ñ»òóÉ¿‰äËî÷~úí§ï¿ûØm7Ýg+CéOsåÒã¯Dx¸\-= P;Ì”i1ÆÃoIØM{ÿÅg©~HDÀ\ñË,Êzÿ…@ºB(…€}„ªYü±nL…<0*ÊvSŸÈj«[VùÝ@ïŒFx¼ôük'¾µO~÷”rùøæÍbHËáÏm?ôÀwleC Q ®ýŒ-¶µ¬DÕ­"<¬‡ÏjëåË*$lÂ\-æ­@xXh1ÆÃ#<ödÇŸ UT¶7]¯VxAüdFe¥_ôÍh„ÇÞëo>üÕ<ùøOQßüñÑû¿åÓw^è¦^ýÉ¿þØÖ—¾pÿÉïŸ>öõ“É•~áS÷ùéÏle;M`Jê ÅÌÈâ0Á¥æ–Cô*Û†Óú+£¬çÒÅ*¦‚K­Aª¶›;eZŒñð Ö†e]yÞB\VOqµh~¢U~7Ð;£ O?õÂÎýOˆÓ?ý£ã/¥ÿž>ùý3ÉòøCOÞ:zûgüæC'V]Óêä*†G?1Ý[<òò+©µ’¢òÚö•~9Ð7c íüàžÛþî7ž;ùýÓé²ÌÕòÈ?¸ãæ#·~æþ‡|wÕu Ç Ý„AÒî<fÌçölÙ{b<š Y¾(¶LxäÑ!Eu´TDO\ 0UF&<N|ç™»?ÿõ¯}ùøÃ©õãÑ#OÝõ÷_ûÌõÿ}ëï¾ì˜7  [:ÇC³~øFµ4…òKã:dj6†Ex„àR€É2>á‘ð꙳ÇyòžÛ¿þ¹¿ù§Oüî[o¼ïèWé…WW]/˜(äjñ³Êïzg” *ÈÕâg¥_ô  kÈÕâg•ß ô kÚŠñëëë O~ü þ¥QS0Z‰ñXé´FGDWüìg¯ù´L„Vb<ÆÁÁƒ[ÿ·ÿ”è ùg²þ®w½Kþ«nG{Àh%Æ`t$<ÄÊ»Rþ¡ˆØ(v@xÀh%Æ`t'<ž{ú…{î¹÷]6’íɧçìÂã¥ÃïË&_d*QÖCç ÷¤i>í8¹H 2­ÄxŒƒáqû‘ã_ûp²$+!ͬþåœÃ⡦>Mó£½TÜZŠ;y¬+“|Pb<$¥ÂCªŽpí!]-õ„‡ìÛÿ_§¬+U-YSÓD®ÉÆÇô}ß÷¥Ÿ*ÂCÚ<²Ä¯Ê®y!Ç µ1²¯ZvpBŒ€¤Tx½a®{si˜‡š·Å'<–ò ý®Y> kªeùbÞÈÄC¾OV`¡à¬Â‘šwƾ€b<$5„Ç‘'Îh‹vHS‹ÇR9ˆ>_(Ùÿ«ž¹®¹?.„„3ì&fâ×’]»ø Æ@Ò«¥¾ÅÃt²\g1sx…ÇÚûÞ§Z#Ì=ÂZ€IwÁ¥çý_êZ<fVª®ŸsºZt‹‡aßЃK Ñ`W»xè'ÆC$šWSÏËj^{×þ}JwÞÛÛÝÚÐÏ^û*+C$p8m`t‡@Z<íQÏ⡤- ƒu—žSw0ƒK—M¢²Ÿ-jÔR`ànNzˆñH»ý¼¿NeÀb½á±·<½T;˳‡”€Ò˜Ý sõc<FE1IçÈã¤óÖ¶›ÝºØs¡¥gÛÚ>[[¦µd†(Ü!<œâAZBħE³ÌìÈÙ#ꟚRrUL­ÛÚÆFAq¥ H-°É]€.èÔâq®nŒÀ˜è:ÆÃÛï>ÚM{ðÅÛ³d%éÈçJ'¾è×ÓíR“, QÌ)®s =c:YÒ½7¶¶ÓÒbýSx,+¶›—0W„VHÝ *ºMb<ÆD‹1f‚éy°ðØ“·ì£=ºÝÈà2hxΕÛR,*Â~:³ò®sÙ.Dg*âÏM€²¾¾"<*ÑBŒÀˆh1Æ#ygµÂëöÝåës›çÂoUÈ+ŠÆÎû)Ú«¼Vaéxêý ›››­ {î¹7DQ$û${6?@ä´ã!„‡¹]ñ(3X<–Û¥a!Èâ‘iû­;´.<Ô»Ï N]-UÚÿ :`"´ãá®P‡ð¥ÚPbuß'f·]{Ùç}ø–k/»åÆëÿG"9’åGÇOïÜÿÄË/½nžèÁ÷X»ê†§E¯*þüä÷ÿù€t'Ø·ïâß56®;øâiÙG§¥Ù?jwyð‹WÉúÈkAx b<$Q Ÿ<÷3)<úʉO}쮿¸b룾yóÒϺ얿¼ê ÂÜ‘|úígÛùy"«ðpýYºO"ÖÂ>jSu,Îòžk¶»Õ>!Æ@•ðØýþ‹Rx<þÐÉ¿=tG¢:Éqíe·|ôÒ›“ÿæÐíâÓãþË?ßõˆy¢–…GÙG©y䪶oz÷b@ßâ#i‘²äÁŧK!!DÅŸé¦w¯ßtG^NAfX…GZÈš4³,k’nÜ·ïÏþ`=+[)Ù}ˆ*™Úþ¶Á1’¨„ÇÇž—a¥;_9ñß®¹õcÿþЇoÙüÐgÞ–Ë?—l‘Â#ÙÓ<‘æ Ѽ•…GÒMð>ëžâ#qºµ¬¯O–>¸¶ìè¿xÕZv¬Ô7|p©¬»å'J]-ïþÄñì¼Ç¯I¥…,G;ïŸxØY®”‚Å£Oˆñô#<Mý‰ðÿñØ'¯»ó/¯ú‚ˆñHVþ⊭«.ýÄŽŸ^¸Z~ææ¿Ò'>mÏâ‘ Ó+vÓæG¬%©–a!RÒH)¢kÅî!Î+òô±°°LjYuÐ>=p^9½'…Ç­Ÿ¹?Y½ñ±+?Ÿü›H±ì~ï§ßÞyúþ»ÝvÓ}Úá­»Zlb ðQ¸ð¸ãïYS(©E"u|&³p±rqpv`€îà9섌’¨„ÇKÏ¿vâ[KáñäwOI±!—oÞ,†´þÜöC|G;|å£ÌÕ’Š Åòîõ÷HŠåtŠ,IŠ þªŸ˜:<‡}‚ð€Q•ðØ{ý͇¿úƒ'ÿÉ"Šã›?>zßã·|úÎëÝôÑ«?ù×ÛúÒî?ùýÓǾ~2©í>uß™ŸþL;<áQ\ªšZN¤” ZHî[¹É—…E,ç}q1ÂÆHTÂ#áé§^عÿ bú£ã§tü¥ôßÓ'¿&YèéÃ[Goÿìƒß|è„y¬Ëtç¢E®–.Itû‘ã,,«]}‚ð€Q›ðHxlç÷Üöðw¿ñÜÉïŸN—e®–GøÁ7¹õ3÷?|ä»ÖW®%*¨ŽlÔ ÂƒeX £O0J" '¾óÌÝŸÿú×¾|üáÔúñè‘§îúû¯}æúÿ¾õw_6ç “¬\Ntº Zà o@x°´¶ˆ‡JÝÒð¨ÄÞîÖ†rƽÅßuÎ^¯æí ö@xÀ(“ð7ᑚ;Ö/¹áúßIÚ¿w_ÿéLE]±ø=øîõßQ†k; ‹¶ÈÔrKUá‘|°4J̶µý766Ü=x~¬Q²ø(ÙjmÖ̓ʷ¶6¤…¤h3)Öañÿò¤žÒÌj§hM­³µL‰¼ÃÖ AxÀ(Ax Ÿð¸áknͼ-ë—ܱT×X6/Þq½*0\ÛYX´EM{$¶T»i/¿Øº=KV’Î^l—²A5\h…¤ŸØ(~#ƒõ¤Rc,J'MU„!2E”i OiÖj§llmë§Ð¤—D½Ãæ§%¡àKsG*6>}ÍzÒ|ýÎ5_½=úX|¤ºT\ÛWÞDZD¸4{²ƒ—½³03,·ç6³W5[-ðpŸÔu"‹ðÐ̵J³ïl^ Â&Âc(8…GÝ!Þ–¢Ø(__yÇáÒÄÕÒ×êÓ5?©Yr½Òò71àZpµÀAx «ðPÍ·û¬–:‹¦:noÇâÒƒû,swŒÇª-–j‡WûŒð€Q‚ð vá‘Fw¨[To‹Œå+fŒ‡¶…E[ö7N[ã!VªÆxÌóQ-ùÛ³üÀð¨ Õïc½ª1by¥ž›#ð¨Ž9ÂF Âc(˜ÂC3w,7Þ‘më©Æ(X6\ÛYXJð(øûÜCBÔýÅH£ZÌ“ªÖjãPRé!ÎräìS$T*ͬv“ñ¶%¡ÀÌ¥,1,íÎ\ª0„Œ„ÇP@x°Ä°´"< h¤Q­´fãá£á1,1,äj鄌„ÇP@x°Ä° <úá£á1Dƒ°Z}’Üíãc}}á1hð!xû„Ÿ0J677ƒ€b€ç°OpµÀ(ÁÕ2hð!xûá£á1hð!xûá£á1hð!xûá£á1*åÈèsŠl3]Œ3“ˆGx¦s§Y)EdEñÌaî;Ö6y{ÕBú„\-0AC¡áš||™®«ý:¬JVÄÌêÚc>u¾¸†_º#OnßRøÉN á1J…‡\ßJócª?9e,5ß–P Å-YiÛ³}û0ñŸWü®Ôl j™j>PëyÕš>£=Vƒü6å—ðpå©W?µæYs}éVc…ÜamcÃ*wC„‡ÿɧ^ÔÆH€ÛÅ£kÞa„Œ„ÇP…63mä]?¾Ò­[Ûúž²wµx¤mu!÷¨òãW+ÓÞÀšCo¨> ±¥†åÍ“Y¾ôK×þ”òÆeg þ'?OV›ÔLœ%Ë&ÓÅ£kÞa„Œ„ÇP·xX×÷³q);,[Ó]3]x™ðÈ™ó|ùR—ןpz¦¹ðØ“ý±üB«|éÅà8£i3q—_­2=º˜ ¡P[xÌ‹®ÕâiŸçÁÂvçc-3¬_@x¬ž@WK¨q¬âzàá¥5±êðªO`G.®˜ ¡ÐDx„™ºøãÑï ¯&<”¤ž~¤ä¼¨0ûĪ1­ZºÕ1GxÀHAx …æ1ûÙ¶g>·È\qø[ò|»4M‡ìwO¡à9¯ËI„Ý#çñЬÛîQ-•„‡<…%UãázŸ@ó9ïùÑExÀ(Ax fŒ„ˆä9T‡Œ„Œ„ÇPˆ¤Á‡‰³Úç°`¾+Ž¥%%¡€ð€à9ì“änëëëA@ƒ1ÀsØ'ânŒŒÍÍM„Ç  Á‡à9ì\-0Jpµ |ˆžÃ>AxÀ(Ax |ˆžÃ>AxÀ(Ax |ˆžÃ>AxÀ(Ax |ˆžÃ>AxÀ(Ax |ˆžÃ>AxÀ(Ax …À©ªå¤è1dXóÌÖÞÏ©I6×\-æ,åž¹ÊAƒ\-0AC¡,9—šÙ-ŠÞÖU±ÊåÔº„G+„g§Ç¡uÙia‚ <†BõtäË^`+M©©YB´L^®ÕýÓÌozîZO,WÅÔO­YÃÔ:m&E±ø¿´4$™µæÖ2ažu‹jÏXIxØ¿…4“ Hójæ´Ú·cÞa„Œ„ÇP(ÍNký¨Ð¼3j© ÏÎR?hŒôÄ[Ûö\]þ¿ž<éf\ùIåI+e]·ÖÜ,ªëDli(<ÄMÎ3·&ßVž@~ŠßŽy‡U0JC¡žððøBRgj#7>û,; -]—·b™ªåˆâkæI¯]š}ç¶Þ¬qкð^ŸÊ·ƒð€ ‚ð - ù{Ó⿨²®†nWµ;#«ðh¡æãîښЉ«…oG¡ÔÕ"še–1-çÂcÔŽñp1ê ÕÎàjQÝ[­ÅÃRóqwmM0ûÄŽ…Çä¾꘧wûÈgXXF¶\ø‡—"<AÙ¨–<Iî¶9vÌ7†kña*65Å’µ¿OϤ⚥GýÔZC21Áá1’&ˆ…%†å£/’»­y1üyŽÖ¼)–¬“Ƨg’ø db‚RCA4ø«áÑ'©ðPçE)Ÿ§WÙÍ“b©tòXýXµVÞ„db‚rCb€ç°O áQ¹ûnk]­•Wx4:E+2©\?á1hð!xû¤®Å£[á1'4á1hð!¬Ï¡öKÓvè¡•BGi®–ðsÚùY1ÅR`ïo=V«™˜  ¡€ð€ðeGàˆH,¥•B‡X®O/®:ªEÚF²ôFjŠ¥Jf‡ý¶ôL*db‚Ú <†Âb \xdëy'’ñÔ‡:Ö(dnë‰Fc9ìæ #.m­'² \uˆì¸]w»RiíBz&è„ÇP@x@ ” ‘ûXÇ1žÚPÇ…Xmïb»æ•p¬ Œ¸Úü×´êZ2?]‰ð(L¯Az&è„ÇPðâ<<½Î] ¥ì?!¦¿¸èЉoºÛð½½ço²í°wêä,ÛžîsìÞS«ü~Cb<Ê"ó(Áê…¸¢ õ¨BÏÈJ­?ul¬ÆÙ¤ƒŽPxt Âc(¸„GÕ¹‹ñxöɳG]tãÉg ¿¯ñ}žJ—‹îz^”6;úr§.¥ÔâáÚhêX¯ñ®Ó©ž–`n¬p"[áÄìjè„ÇPp ÷¸6§Ç¼¶?*±·÷ò½7 ©ºØ‘Ö!6îMÄÉ¡ž=墜ã'gE ³ËPÇ&…”Y<|§³Ž×( ²xø Á£:æ)¡Þà›ŽÍ‡v±1ÔB‡#†Çâ1Ïü57_ýWV[xÌmCkãá9ª%\®z Á£:æ)¡€ðaÂòn)jÂcn }"ïõÓ@áñêÏÿÍ¿Ðýuw¾6¡€ð€°>‡Ùœüv'K¦+ ùaÉt“ãr«I¾˜î_&‡Õ„Ç2#Àvz ²ƒ™µ6fö+˜Ÿ _üêmÿâêþ2k•]¤ù%¥GÚù‹mU™ÂjÜyM[Ól ŽÏ Âc(N™N–Ø0sµØws'‰«TN×ø“–æ»ï`]¦$dÄV„Giëá™ÝÉÚýÕÞb›É]ãÎ1_g€Î¬|!¡P–$Nµ?Çþ$OvZ¿ð0ËY^œù>R0W²)9 Û²ËVK®ÒŠ«å¿ú± ôûÊLFÙW6W GŶž=´Xãapnô:Ñöí;pÀýP‰så28³}¹üw®:„PãÎ{„‡yÕÞ³üS*½ÅßÊÍ×î¡ßË©ZcŠ¿jmwxmväì‘RߨvÿßñŽw"<ÿ—¦ë—Eà ¨Ç&»Z¨ÁÞÞË÷ÞXH&›ª‹iµbãÞDT:ñèÙS.áa–³Bü.¿bS#ªÆbÃ0hXùîOƒc<~å_ìÂ#¹[‹[¥§«–MŠö£Æµ=¤XëWãú¾JhF—]øs7mÙ¤=lRµ„¼·µU‰w¾ð +Õ°^µÿ»°Þ¢å«’~ú÷àåÌw6Ü£ê-J?T”[À½Õöyç;ÞðŽaŒ¾·¦üTèrg±.v†&XêF¡CfG_víì)gU؃K¥‰C §^ý…1…ÇÒ.±«ßIU08d¤Ï²ä.Vþr·šVô~'šçOU‘ºU«¥C¬ñS«Æ×-uÆïÁâU»¾ ËÎs5í¸íZB^½Ò•'D7ËTzÁá1ª Ê/ ¢TEGRé“0áaY)gUØŸCÕX­v"B6¤fbÍ*"<6\öv›½w ®?ÂãéÓoú‹ðÈìíy'ÐA—ÞgW±óâC"-´æÆ'šWxT®¿µb!Ô¸óV5rÕ¥~FQ¾©Æm§½!7¿ÞýGx …ê£êà ígD‰´ƒÕER*<¤;FñÈ ÆÕÒ ãÓµ ?|áçþÅèþr»Ä<ÿ‘âùe$<<ÅÊ}¶gzƒ¶1ĉ֢ÅÃ_±î|~j›¡)Èìà4¤~X~9VèÜîQkU#¦jŒG…0ûI’0ÛNuGà«~üÁ¥k9«áÑ'Âãû§öü‹Þý1j'(›­/vm,v¹O±Í±n,u¢ùH<.ærçB‡K;ïð^Y¯ÚsÏ];ÏŒhÇ©K×õœ;b<£¤lT‹òêtYÔl6«do?æ0Ød‹\"<¬å¬æ“é“@áñø³¯ûµûÓì˪Í#3¶‹‰ØL#¼¶=¤Ø§R[fÀ·Œ¡°FAxÀ(Ax |ˆžÃ>AxÀ(Ax |ˆžÃ>AxÀ(Ax |ˆžÃ>AxÀ(Ax |ˆÏ ºêDÙ-†(wZøÊÙß8W Àà@x „Ä@éÔýþÔ¥.B'ÿ¯UxÌ)åúá£á1å£(!Ì)ìæF"ª#…i-ƒ¦zÎ'K\lðkn™S¦´°Ì„Y˜7Ò¶Ñz¢¼’Y}\ÇjH3ŽënëëëA€ð€(Ê<ü¥Y3¬%„.ý/²ë·žkn䕘§²a±e;Ÿ.¯R•<%ëžnFu!¹î6ÀÈØÜÜDx ‚þ}ëÐ 9V\¹ZÌÔ´{§NÎV—0.ä9ÌÒúÒj31– £pgÆÌâ¹<™4ƒªdl,Ͻè:ÖJ©ð¨ôí \-C¡ ß:i@»ÆŸVÅ“$.)dvôeן=SúZ7êý²â†R9ÐâáÚžÀ]—1î*•Ö³äD¶MJ]-e_Àð@x …pߺê1wµ¢.ǺÕý õ°+êbGZ?„ظ7'‡Nºá1bO­2f•\ÃW\ªxTÇá#á1Â}ëÚ§ªðð;Ö­îïÞÅñ&<,ë–¢2½!Ȫ¨$<æî ™©-—Ò"äiÝ8ªÅÜb­’«žž‹2c<Ìc+ð€Q‚ð •üÒ±VǺËý õ0]-óá!Ý1j;¶ÍeßÃ#a£°.mêrQaŸ¥Â£7zš¹c¹1O)Æ1M0hªaÍ*¤DZÞGµ¸ä·Y‡x@xÀ(Ax …jÂ# ¬®¶g|y"c(¢Ux´õ:P¬Ž ¿ððX<´í5„‡tô(¾žv\-Ð%¡ÐEŒGpü¿nñP,Þ‹G¯“XƉ?¸´Žð8ur–ØŠÅÃZC?>AxÀ(Ax …*£ZŒ(‹E(ÇšašHÕF­ÝRÐ'ùn¦Ë~‚˜ƒU“-æØ€Q-"L´š«E=]x = <ºFs´±°Ä¹4yÈCáâÀy<´à½Ì!²±µeˆŠ ×,‘e£ZÄ(áW Qýïâ@í¨&Ï*Ä€õ9„¹˜iÒ!z¡ÅŸ 7 6®áCü <&Âb`åÞ),m½éð˜4GÉsxû‘ã,Ý-¼é?‰@s1€ð@x <&ÍÄÂá€ð˜4G„Âc"ÐA X…ǼõÂE¸ò®}ð{þ,Ú²ÿþJÂc4óòµ>e=1ó}‚ð˜ˆpáQº L„ðдG‰ðHçϹðúüÞ=ÔèñÕä’ó¥šj*}‚ð˜ˆÚ/Þqýïä¿p?pè¸Pùs¹Ïƒ_½äÝkÅ-ËB.¹f=ݾ~ÉßËÊwî|í Šž‘Sÿ…e>¾m9Cpa&átþÀb‡nÙžwЋÿó9‡µYþ<ÇÊ:/g\Ó' ´¨"æ4µ“V·#J†A¹¿Üg+ÙLU¬m‡.p sNK«BFx „Ä@=á苹öÀÚBZܰ(kn•û$Í×ï\óU!]ÄvÿÎrŸøµ‰.I£¾èÉõܲ×, Öí¹¢Èø.+l/}8þ2—51 ´dj(˜ë6M˜usNäb03>,·ïÚO mážì¢„ÇP°6Gò²u*ùg1މ&Âcñ´¼ûúO?ø=ëQÊŸéJº§K½”î¼rEѺðXš;v—¹“ögYTbËíhnw%xRóEÚU*S­Àâ…”ó£VjC‹á‘=’Fn»ðŠ+ƒÀ#+G áa&ã>Vž·ZjP7çéö VÚœþHžRñíh.;3Õ¡ÙÁÞñÎw!<A¹ðpËK3ë½ZHøžáÑŒ•†Âã‹ψy¼è§ÓÒ߹櫥£tç•+Špá¡m±¿éit‡ºEõ¶È~\¬˜1êvó}T‹’”k÷éx ,\Ž#D¤ÄkSØ'UFŒmN?$Oénr¤n·~esC¼ã¿ð!1.y©þ"ÚÒ=`â/@6nÅôŒF¦dþ©„I¤ÔÕ"÷ì¼rEQ{1ßtÍܱܨÚ<²W[Œ1[{u»õ}ê¢hu”)úút¬K.H2Sª¦y\VÓ¹Ùv¹\-ÆéÄP­s„G¿$OéÖ–.†çÅoÁ‰´üF. e 7«êjQ휥¯¿õ¹š‡‰ 1ÁÌ¥ý p\£9šŒòˆm„íI $O©Õ¨å oží`¡PêjñÈK¢í´ÄÃë:ÜïŸExŒ„G„£—e›ßCÛޤ̕C{ÉSjϨÿ2«ìù‘v0\-C! ¸Ô)/íGeƒ¹§é´-îÂ/Ëõû”a¸ <"=ÃÌ¥¡TxÌÝòÒ6\¥ *,^Ãikž×ãÊÙXøÿ°xŒ„Âá1hŽ ÄsÝÁ›ñƒð˜4G<‡]ÆøAxLš#ˆä9dézáM‡ÈAxLš#ˆä™<òÄ™)/Iƒùðî+5–ä@Ï]åM‡ÈAxLš#ˆä™KÅsWyÓ!ræb£aãVxÓ!~æbáÑþ7=$[ähƒñ÷Û2NBä <&Âb#y&CÛ”t®ž¨:ëªõô9­1“uDÃw}}á13§GxÞôe¶¸í<=\¶]æÜØPg´mÏûâÅÿù¤ÇÚlžcUKEqZÂB:{ÿôƒŽt´úr‡­t‚eç̇f~ÌíÙ¾}uƒVhøîonn"<ÂbWKø„Ç2¹žÑ@¦ORÓ¸¶çŠ"묗™¶ Éà\e.kâΛà*0?V»úIµemE&µÚ"×â”t{–¦ªpuX<:WËD°6GxKcfoïù›툙n:îü^ÒÝN|s€ #£ \Âciî021©:Ä•¼Ékd(f¸»;ŽU*S­Àâ….˜ÆŠBM\©'óX—=Çþs„Gg <&‚Gx%NTEñÍ»v\ÚÃ#<"×$.p ,º#ï²Kºæ lÑÖ¼K¾ý³|L®,®DNù…h£VM*]­bë <&BUááñ–ng-Ø¢ÝZšL}žSÍ´›ýð*wæNU6ì:9»ñä³r=µ„)¢ï–}$ &Ù>]é•-AxtãMÏÍsŸ•£F×l&SfgHÎ[­ÀâµäûÛL7e5)Ød°x¬„ÇD(ÁÞÒÅî2ùlò¶îbÕ¬žSµ}- ë, )(Šl}oïå{oJKÐ?]õõ!<:Áþ¦§Ñêõ•”ñbÅŒñP·›}±Z”¤ìX»OÇS`~-îcÍ³Óæ)8ÆÃPA…VЄÇD‰ñ¨ë- ðœf¯¼ØAD’”:s'ŽCxäå[J>ÊJ(|ºêëCxt‚ù¦kæŽåFÕæ‘µb¤Šé¼P·[¹‘Ó{ì<󸬥c]rA"È5O™«E)0k=´¥ðذYV}£Zäð£nЄÇD(³xtë--ž(Ô™;q¬®3l£(<ìië‘€ðè‚&ã×4³géö&eö¾’8AxL„RWKoi°Åc.M¯³™òãbð“(vŠ+¸T 4õÄ jbáº]PCx&Ó°Íï¡moRfÏ <âá1‚K½¥%ÁfVϩܾ¿8b×ïÌ8®á´ZÔ¨ÕŸ’”?q‘ûÓÕ‚ðèfìøAxL„Rá1õ––¹Ís:ϧ Ò}Íg.Œ„G < ~æbáѼé?‰@s±§ðm­­ÍŽœ=2¸öxÓ!~æbCk|{öN€§ð¡LóË›ñƒð˜4GÉ3¹?KjÍRj¢íväìS…Iq“‹sΘ9I=“åšã»­±Ñ˜¶Â7ÓoŸ…7âá1hŽ 6’gR䡞ÅCŽ¢š+“âzr’ú'Ëõ̘]Pí™é·Ýûæ‡7âá1hŽ 6£ºÿštLtîÛ³Ìô4‘3óiUáQ:Ó¯(üp/ð¦Cü$Oi“‡|}}á1Ät,,Q-UÓžÎ-Ú UË„…A‚Á3Ynáá™éWÞÛ›~Î-³·šr—ázÓ—æ#S®léáÌþZ¯r³g qvèQ4Ÿš^ »òÕ„‡V´Âc" < 6ZÒÒ®- <Ìí2º#ï¾³þTu(äî*ccH m ™pá‘ ŒÒdG嫞Ýzg 9‰€ð€ØhËâ*Ö7]5wd®iÑÂUduK¹\Zó2ßJ»µÌQ¤˜k|ÑÂÅÊ×—=Ö;M@xL„Ä£ ìÂ#îP·8£a‹nmci ­?€Äã.<´Sx¢…µÊË?Ü‚ÄÞl½3ЄÇDðƺçæJT=ô£ Ì7]3w,7f}ìS…ÑÁ m”ÆÐªa·êœóúឱϥA¿b¤’¢(Ì*™•—ÛØÚ ‰>b»3Ð ‰àôüæ?t<#@+ <ºÛ&ÄÂc"¸š#ñc!(S&=ðŒ¯÷ ç÷ ÆPAxtÂâá1!g†™Ô0{îË´2@áш„ÇD¨-<¼ëÕBÓTühOXª.ˆŸä)mòŸwþAкðð çGx@¥ÂcÕ/Í Ax@ü$n"4‰ñ0ÆÝ— çGx@.@x@ü <&BQ-•2myò.YWÐ$€ðè„ÄÂc"ԘǣR¦-„Táш„ÇD¨Ñá1NAxtÂâá1.@x@ü <&ÍÄFòLzÄ-I=<ã×”‘h­Íï'ç4g\üÍRcÊtÏF‰€ð€Ø@xtAéÀùeyýµŽžüYy\[máQ©äª—‚ð˜ˆä™ô¤û¤1©G¹ð°å“5ÓHóˆko͉Pª*e[hhñùÝl)ÞJ.¶rUÿ£gêƒð˜ˆä™ô4Ý4&õ(JJú¹-ýA~”bqåDÈRÌ|7ž ®l …G /¦R®ÏÎäƒhÂc" < 6.í‚ÒÇLÅù ÚQ¥Sk#ëì–m!Px,ê \‚aÛ©pöÒk?ö0GxL„Ä1]Pjñ³ÿ©-ýÁÜp[”æDȽ½yl U]-š{ÈêBj˜¢Ýwaj <&Âb#y&=ÊјԣRŒ‡#ý  ²x”¢ôtmŽjÉ\?Îh–àj—ì\åI„ÇD@x@làjé‚ÐQ-™K›þ DK,tcVÎ2«B™÷$0ÛBmáaË*•ÇŸT:»ç²§| <&‚·9*†‰„— :áÑ5æñ°i,<]‚j›2eÌòp)B¼Z"$Û‚UxìW°Vɼ:Y=WDJíª6yòá1üÍ‘¤­Ú*û}aZ <ºÛ&ÄÂc"¸…ÇâGM!@Klù.³+!å%ÇHJ…‡ø—¥Ò‚ð€øIžÒ&ùyç_€ðná±ÐÒ•¹Ð[[ÚX¹ÒÁìÂH²Œ˜÷ ñ „U¿4ƒáñƒÅc"ø„GŽ•ê{(»s0{!X­l ü*žqˆ”Rá5@x@ü4|÷<ˆð^á±·4YÌä_³Wßäaƒ‘ðè„ÄÂc"ø…‡Œý^N©\e0{¥ð’ä™< mƒð€øiøî¯¯¯#<A‰ðPDBÁì2ÆCc ièç+ˆb<&‚_x« f—^1ÐÅslÇ3 \-]€ð€øÁÕ2úiŽ´ôŽ]€ð€øAxL„N›£Â´Œ^0]€ð€øAxLš#ˆ „GTš2]NñWÜh™Ÿ<4I Uá1.M·Èuò”šC-ý (#I=2 Âc" < 6]P.<ÔܲÁ©`KwÐGÙ«Éã²sé©èÜé¶Òq…to¹Z»‰Ð1‰€ð€Ø@xtA¹ðPR$dãß‹ù© @_Œ'Ãre%R=$w „ÇD@x@l <º 4ÆCÓæ€÷Ò9‡…‡jîžxÐžŽ¡4ÿ¾›á‚𘈠„G”Z<Ä´~ÉšòiæÅëЫºZŬÂÃ“Ž¡jð€Ø@xtAxŒG%G‰«4ÿFu*cGrÉ j„än€ð˜ˆ „G„ŽjÙØzêì‘Yæ -Z< —Åhæeéjän€¡€ð˜ŽæÈ2Š¿EÂËoÞ†´Þ ‘ä®k†(<úIÚäa®6‡:öDŠ0á¡Mô¡Ž‘)†”(#S²ÓÉÂ=éjän€¡€ð˜fs¤ý‘£ø=Ou˯цtÝìˆß€š7ZD4>ždÇ]W ·§nå *Á&<ì›ös¦`œ•¿’òGúàúÒò­GYý¿žü}ûX+ùù“ÿ>ÊFÛyf °Õ0»§Fæg'à§V’gRmQu¶1ƒü­m™üÁý}¹z˜Šõ'¹õqRž›ÖG؃ ²±ð:¸îê9„Ä Âc"X›#ë(~‰œáPF «Ð²mp}Hù®!ùªÖ,6­Ž:¡ï—² ÝWg-ðÌ _û2m¯f´Á´Û&É3éê|g{ðOþP#VÁúظñ-¥_«[EØÏU)ÆÃz^<’¬¦ˆdŒ‡¶Ýó–Yïê9„Ä Âc"ØG÷ÛFñÏ¥NHcësûö2àÍ)êŒq”oe )4‹ÕR¦0{üm÷¨wU0w¨W!eFV‚/áQƒä™4¿GóÏyÙÓâ¤ðGPÛÏ<ª¥ôÖž yÒ­-ëv1\§ôupÝUóMˆ „ÇD 9‚ØâbñÛñƒð˜4G.àM‡øAxLš#ˆ „Gxǯ•ûžz£ŸYqzN|ÐÊEYÚ…ø©V=¹£üºá1.p½éÚ¤d­§Hˆ“½ŽtÔ_›áÄê´mѳØPAxL„Ä£ üSºú__$vÖwç´CÉ´Iãµ¹GfÚ|ƒ‹ÿ·ÎxòŽØ7z§ëï.qƒ:™\vˆ>³œµÎ³ÁèßHØÔ1¥É  Âc" < 6]àÉNëêüùɱ?Égê«Ù>bl°9H5³¨ÎÃìü½%>pU`9ð¹lº~×,4µë/»ø¥Bº#pä¸gãñí\üNKïF8‰|Ñ,,±-M°rqEáQu¶½JSû&•µýÄ.Ø%zL|àÙ˜ÏhT6]¿qQÍê¯túBw„Ý´šßˆ¹³ûÒœw#œ†ï>Âc(\ÜlŠZ€ÖAxtAuáQ_`øt…× `Vɜܾ¶ÚY^WÅÄ® h‡*£Yý ½Ý\~ÓJ¿³&Ò\£ÖÇ7*=¥•ö×@x ks°B’gR4,-.®7ÝãѲţұvÁße«•ln1¨øÀU¥äž,s{–ŠÒ›æúvJ¾«J)N\~7ÂiøîŸwþA€ð€ØÀ ×®7Ýœyx{VŠ&<ÒUq èfù`á¡vÐU+V¸Øí ‰vË*ி“Ä ò*t³LÀM“8IðXüa¤(½á4|÷I7¸ZºÀó¦kÖrÕú±œ_À*<66tëÁž‘vAÆb WØoŒò¯˜r™ÕhwÆYW,DÛ‰´ïËw᪳sB~ï7â*YûZKïF ¸Z&ÂbáÑ}¾éµû˜8‰€ð€Ø@xtÂâÇõîï 'YÁÂc1¼ãïDx „Ä£ xÓ!~j |ûþ6Âc8Ù-§©1=›­ dªêJÖžŸÃ«þžª‘!æn{ÇOˆ)/.:tâ›îêíí=“‡S'g‡vJËé„G < ~š +.Dx ³92â±ÛÏÝàŽêXxTÏέðxö豋n<ùl!pÎ.0üÂ#Q/Z91€ðè„ÄOCáñÇïÂÕ2 lÂÃ5^}×%Ê2f<Mf‡×Š*&ð…|Ú0ÒZ9Ï•[!;ƒõVäëe)*ÌÑMjn»–—ï½ñؽ§4Õ‘[-„ظ7'‡N.¨2ªÅþgác>aÿáÙzzX1ö@W”4¾’=1¥ÂÃVa«|ùUTÕ<ÞÂëœÈ^ 1XAx@l <º tG‡º§:j#Ï[TÆb=\f®•°±µeõ˜%Ͻ£ZJ½ ÚU;]-ÆÐø¬úU„jñ‘ÎÂ}·Ë§”Œ?5sÞhAxL„Ä£ xÓ›Ó½ žÆU%Ä2![> ^ _÷—/ØV’¦åaÞ‹#òAvzT¼±QžÂŸ:!;vck[^‡sî ×%ä뙀Ég3öfRP·§¡èêpçÝK?}ùÞMµ°£Y-îMÄÉ¡ž=UGx¤–›Žç#-gy uÝ!QôVáш„ÇD°6GÙ€zGª#e ¼šØ]èYÂâðm{ÚWùZ$vÞ/kCþ‹ÅšåþÔ óÔÜ‘]‡sÒËQ¶a†‹¿äÀ¤¤]]Ìh·n®Žë7¶{îžÕÚ`˜#vfG_6wvxR–;Ë?/ºëy¹§¹âªƒ¿†á <ºáñƒð˜®æh»$©½>Gè;ùSç™å›±%SúèSùUžÃp/³Ñ̳)‰´lS®IÿjÏœì˜lÐ;Q‡0áQX—6 u¹¨°ÏÒ@áÑõ„G ‚ðè„ÄÂc"xš£Üà/(¾tù.ëü<¥å[&ð± ë´?ž¹€|Â#sŽä‡Û®ÔŒýh=“‚k¦&‡ð³82üÂÃcñж×ÒÑ£øzò"<"áñƒð˜þæ¨4À\ú f3e ÁÐq"® æ§®b+å|,ž:7w(å¼?êÎîj‡¬WJÍP~÷üÁ¥u„Ç©“³´ÀV,s%¸á ˆ„ÇD°—Êþ“bujd=£pRh–Õs¡á*îˆñP»`k±æÆ á±+¥’r,ÎŽªÂÃ~ëdŒ‡¦p4SQòI°™ÔuÉU£Â´;ì‰.«ñðôÂc" "³œhAxLmm––¶Ú1\6‡ö»x»Ê@uÏÎ˹Çã«ç5£8òªºFúgÛ7¶¶:qµ57ûûmöEaÞºl‹2t¨ì2Õ}Öôq.˜ö¤á»ð ¢9ˆ„Gx„´ƒâ›ƒð˜4G.àMïïgÌ <&ÍÄ£ xÓ!~æbáѼé?‰@s±ðèÞtˆ„ÇD 9‚Ø@xto:ÄÂc"ÐAl <º€7âá1¬ÍÑÞÞ¸ùæ[n¾ùV™yF”`åÚ AxtÂâá1<£‰<@x@m]€ð€øAxL„pá!7~ë[w¦6;¿õÂÞÜ0$Ç”î,KÞÛ{á[wÞ\â#áш„ÇD¨*<‘°Ð ½°ø¼p”ؘUØù‡,¤Eº³VrúÇßú¡¥4˜,.œ2½•‰µ]©Ê\'m7wjÈÙ!N!$ÆCÕæºv”gÇúR€¼@Cnp 5IÜ|9gÓ.;\xøsª6?;"dX <&B W‹)<„­#D¥˜ëµãWa¬ <ºÀ%étµiqówfCT²ó-Ù0]Ò$ãj•ä™K‹Kˆðð †ÎŽRá‘ Cx\$š£§ÒÙÍr ¾ûçÂc0ÈbC<“Ð.!1¥q©ÂÛÅ+Š`á±(Zøe”Ù½!¢¶ÍeZN‹.4¤á»¿¹¹‰ðˆ \-]2ª%,:ÂÜ'UFŒG¸ðPTÍbU‡èµUäÍ\Fƒ,L\‚¤P²«ˆ\-á±ðè‚Ày<¬Ý÷r7!-Ö66²!'b؈º%Äe£ž4?D®( ³2æL#Òo²±µå”LÙ>Æ8—f,vAxL„Ä£ ºxÓ$í‚𘈠„G < ~á±ðèÞtˆ„ÇD 9‚Ø@xto:ÄÃi'ÍÄ£ xÓ!~’§ôÅ×ߪ½\rùÕA@s±ðèÞtˆŸä)}yþoµ—üs„Ç  9‚Ø@xto:ÄOò”¾þæ¯k/—_y Âcx&RÞ¯PÎ_+”=p8?£ ?ÉSúÆ/ÿ½öråÕaP%ƒC£ùv£ ?ÉSúË_ÿ¦örõ53„Ç ÌYéšyîN%­%Zˆ­t>d)c¬)!H£0e]€ð€øIžÒ·óµ—Ùì#A*<*æ`Ze¤)<2f™Aa{™'ªãÇbáÑÎ\-FfmFqÓñ*“º~t¨ ëC¶ÛÞnk{‚Qt:$n"´"<´æÅZNÅuR8M„G” #gŸRó©¥"¤ìmÍÞP5ÓJÐö¡xhû0ªe(TÕbÿ³pˆ®%Ì#ÝÃ-cvÓß#ÉNý=ë.s#ý\é…=±ⵕO×öBvûZ1Vß®»rýÀ)qïâ»YÚ<¯½ñÈ5©ðxà_Y·<°øž.üÜ×n{ïâëz„y<†Bè<Ž×¼Ð’¨ÖK!-Ö662ffÈÍ·¸dŒÙôÁ¤@xtA ð˜«®÷ïˆB ©ÁT®íób쇿2æFÓ·kšÇ¶’{á±*´™KÏìí\µø">ú•½_š[”õteã¶W0eú0`Ä£ Â…ÇÜíÝ0 ’jȨ^¬;8¼RLH€o×2$?ðŠJwöÞTh-WË ¯=tpñEl~ùµ_¶¼÷¾óÚ/ĺ"7ßsùUA€ð€Ø@xtAPp©k4ŠÞMg#_ŸØB5lÛådî•&ÂÆe µšÛ<¶ž@ÿÎáwš“<¥§^ý…\~üÊC—/¾ˆÜóÊ¿.·|õ#‹'çê‡ÒOŸùÔ{ Ÿ~à2„Ç0@x@l <º hÛüº=!Ó O)ÃIL?…¹]kzoµÊhǪÃmœ¾Ý¬æ®`„ªgçξ°<¥ÏžyS.ÏœþÚeéq÷é7Ì?“åÑ›~/ùÖ~÷¦“âÏ?½ôJ„Ç @x@l <ºÀ)<SjôOò”ž|é ¹üè§G/Õ„è{>¿óÓŸ«ûÜye.×?tá1.0ßô|„H³4Lm‘<¥O½øóÚË]‚ðˆ „Gð¦Cü$OéÏïÕ^þðƒW <ÍÄ£ xÓ!~’§ôøÏÖ^|á1 hŽ 6]À›ñ“<¥ß~îõÚËïÿÙåA@s±ðèÞtˆŸä)}ì™×j/ý)ÂcÐAl <º€7â'yJýÑ«µ—÷ÿñeAà‰u×hqT;Ã䛳wüDòÝ%ËE‡N|Ó}÷öž¿É¶Cº}G”PZHÏ <ºáñ“<¥;O½R{ù/ôa„Ç ð4GÝÉ„GCž=zì¢O>[˜ÈÑ#0œ¢Âÿéª@xtÂâ'yJ…`¨·œwþAPCxä³ü)ù%•¬‘¶„Mêvkn²Â²·÷ò½7»÷”¦:v¤áBȉ{qrèÄ£gO!<`Žð€!ÐðÝ?xy<†AUá!ó\‹Ùe‚¡F–y¤”£¬ÛÍLÜ‹)Œ¶—ÉššâUBJSCvÍ/«IÉÌ‚ GY’«e(x›£Ð¸>Þbh‘0áQžE´T0¨ùÅÔ Ô¶xØŠ’2ç{=‹‡ßRþêyÞt-pÅu[ªÒ¼Y‘|±• MÀÕ2™ðÈ ó¼¿Î›—f-í\Ü*Â~®ª1ó´7£2<1sGÞÕ¹ã¡m7ïƒë®:Þt«ªØ‚ŠÁ«s[`­¬³¸+·[ãýE‰`—’´ªA­p3f¸T¼Ùã–ݱÇÐ)‰PCxøF(o´9” „ä™\>K2@Âöç¼,‹hˆ{Âõ|úÎåÕ¢:öíûÐlcMº–þ‹²Q-ê©õ¼«ÙvÑCÛ{sw/é~ÓåIé²ÐÅóZEWHàn`Œ®Õê¢ÞUõÛ—û¸B‹¥Kéè!ôÆJ@xL„ÂÃÿÊZ$ÑØº#íL†8Xüø„GnùIuǮݕ£ˆjuèåEÙª§D°˜F£UÝÍ­è„ÇDð{~U,ÅÖo; J?…‡²=ùkc미áÐ)Vá1O•ƒ\Ax€áñS_x¤^ˆðèMxœ³)„¬ÂÃÌC= d¬Ö$Úê´ç­Ï&äš•½aÌz$©-ÁàqH!<üX…‡ô‚}pá1OGÔ¾ãïBxt 1N©«ExF2‡Hn¯0‹ÑήsiÙ¨fñpõ*Ì-aëå'Rct‘CŒ„cuµˆîÒådQÁ«Yã…î%,ßN÷4úÜ‚ðØ-ìchB²S^TQI(?ÏÙ/öN·‹*öß-)<¼®‹òÔÄ~¬rK=ez›ÿ†„@äãḂK=¹à Ý_Öé !~³+;,ûÃ]¯ñÄ´K¨ÊÕrÜIí3U!·+…Øö÷^R ×m™ç+½&ÖoÁoe*¥7|è <"‡Ç3ª%·ÞKŠÛå‘vy…þQõ¸ûSKÇj¨ž×Ð6%¢Â¿î)<¤Ž‹*±NŽr»oÂË,½áCá9Äx@8þá´6cB¢Bt#ÿ¢#žÍÃEþc¿´XÕYã?0s9„ÄÒ.QÍâá(<´®‹š‡Y<\·Ô]f¹ÇõU„@äãáØƒK¥‰CxRô¾»Ð å T9aâÐ3{þmB"ý#8ÆÃ#<4mXâöÂ…¸j⸄Gé :€È!ƱÏã¡ÚÿÕàÑůml((²ÀH=50Jd^”7æÅ#rïRxl؆rxFµxœΡ1e{š÷M3©5ѱÝRçòÊ'Ï :€È!ÆÂèÌ¥“šÅ‘CŒ„ƒð€øAxD1Î@…L „@äãá < ~‘CŒ„ƒð€øAxD1Ââá9Äx@8ˆ„@äãá < ~‘CŒ„ƒð€øAxD1Ââá9Äx@8ö)Ó³¼´¶YÊ›ÎÙU©-ïjëók V–u“­'Zr²0wYß <"‡Ç–$Në‹“?Ûíë+ #Y‰=UJòç2»îvžø^M"ãʱRï\P„@äãáØ³Ó–eJÍ×Óg"/ª–-N&NuYN¤uÅÚ}›•QsÑjö´fj*7=¹›–B×,PË´›êŽÂÅ&ÿ9{Dü)V4;Œy9ÚáH” <"‡ÇêjFͰ`MêºøK¦dMvÏ%ù>‹¿ µ æo]°h˜,ÂÚÔ^±T8…SÑš¡oOë¼P³eU÷¤£E¹Xë}ÐRÄj—£5@xD1Ž+¸Ô̱îÏ,ßx}Ùc—TØ…‡W xœç®%Q‡¬&ÉŠÔÁ¹é­—ƒ;¦9€È!ÆÂñŒjɽFÚîº'pÔ)<2‰"í-šo¥pˆ±v¥Ë0Ù,3t¤'ØšYM4¥ÂC»„Gs‘CŒ„ãN۲ذim°wÊe1ÒMâ–}ô³d‘*"´C‹ô¨"<,—ƒðh rˆñ€pìÁ¥Òž zùFeð„+ÆCôòÉNÖêy:ý¹éÚ(ˆ3–Õ-<´Á,Ž(Y›ð(œËz9æ <"‡Ç>‡ê›"¤®ðØpòP2ý®–Â<Å8¥¤)ž%wÍF¥˜ûÏ’_iÁpQ"~Šç2/áÑ„@äãát7s).´Â rˆñ€p?€Èé4ÆCË2š…\-?ÉSÚä!?ïü ru71¢ˆñ”ÖfssáÐ)Vá1oã£áñƒ« r®î&ÆF Ââá9¦Åãê6b<`” < ~‘Ó]ŒŒ„Ä rˆñ€p?€È!ÆÂAx@ü0œ rˆñ€pìS¦gyiÅLã2‰•”ôá˜ÙOæbZò­§ÎiqF²v« ’<¥/¾þVíå’˯Fxt 1Ž-Iœ–d-ùÓ×#·Þk›yÖRÝaÏ"WÄÆ€HžÒ—çÿV{ùðÁ?Gxt 1Ž=;­­G–Û·Ra`MÞj]×öŸ+_®ØBr:‘מ͚ŽÍ\—iæÌd÷žµ”÷ölw‹ÿ0’<¥¯¿ùëÚËåW^ƒðèb< ««EäWÕýY¼ØêHsoíÁûgé^eù‹Â· •-»ø¥Bº£Ì9R¾Ã2ß½O¥ä;+×h­³¼@ó ]’§ô_þ{íåÊ«ÝBŒ„ã .5SÕ—Z6ª¯/;ó]Óè¡túBwX+°ØG9¼¶21wÖ­+¶:ã¬éä)ýå¯S{¹úšÂ Sˆñ€p<£Zrç‚×àPoÝôeO­vôŸÎ¼èjñ{OæUü2¢"ÎD;WŒ®ºùr`Iò”¾ý›ÿ¨½ÌfAxt 1Ž8m‰¨)H2¿‹·¿&—Ùl&ÖŽ>ó …œ1©nÅC쮆³ZëŒðè ’ÄD1Ž=¸Tv —GA`¤ÇxX{vsÜŠ‰8…iv°÷þY…åAT½Å†Ȭ3£74‹Ç¿¿ý­kTúEÿÅ£oÿO,«‚Ç>‡ê˜(Œ.Ytë®ÁÁÂcn‹!Ñëà»P}…ñ2YÍ7¶¶ F ¡””ÊQf ôiuFxô†ãñÖ¯Ý\Üùkw~õ¶òç¾õÔÛÄx¬b< œð™KégaUh£Z~þÖ7ÒGñÐÑ·~½Ü²sh!7¿‘ípêó …¹Ø‡Q-]CŒ„ƒð€øÑæñxíG®I…ÇoüʺåÅ“záç¾vÛ{ì#ÌãÐ5Äx@8äjøÑf.=³·sÕBf|ô+{¿4·(ëéÊÆm®`Êt€n!ÆÂAx@üh¹Z^xí¡ƒ i±ùå×~QØòÞøÎk¿ëJ”Îæ{.¿ áÐ)Äx@8ˆŸä)=õê/äòãWº|!<>rÏ+ÿºÜòÕ,4ÆÕ¥Ÿ>ó©÷>ýÀe€n!ÆÂAx@ü$Oé³gÞ”Ë3§¿vYnt÷é7Ì?“åÑ›~/Ñ!¿{ÓIñçŸ^z% Sˆñ€p?ÉSzò¥7äò£Ÿ½T›Çã=ŸßùéÏÕ}î¼2û¼þ¡ƒ€N!ÆÂAx@ü$OéS/þ¼öòG— <º…áñ“<¥O<¿W{ùÃ^ðèb< „ÄOò”ÿñÙÚË <º…Ç>ez–—V›<~´ ÏÕT/0\’§ôÛϽ^{ùý?»áÐ)Äx@8¶$q2—ë^öç`f+õ'ˆéî\]”’ä)}ì™×j/ý) [ˆñ€pìÙimýiy¸,ŸìB²ñ’«—Ð}4K…zà¾}š©Š(ùÄÈ!ëKvŸ™qÌôv[iæYͶ“§„K“ð•9p`­$Ï´Eò”>ú£Wk/ïÿãËBŒ„cuµd9å ±_xˆZ&‡]šN‚öÉO´$záó,7½Ð$ɺš¤ÞRIQN&Ò6¶¶ó²ðÅùEúÚlgy"±]œH« ÞHžÒ§^©½ü—?ú0 Sˆñ€p\Á¥fÚú”÷MÖå©}V EKlÏ,Á'zR{ÓX±· »¾Ze§‘ÛýçIžRÑjÕ[Î;ÿ„@§ãáxFµä¾‰’nº5á!!RðXÝ%kK?¥Ç×FQ$(ù;Ú¨-£/’§´Éá2@·ãáø‡Óv-6lv†DUøL"éN³íTwø+,Ü%™—$7bø®n)±°xÄ rˆñ€pìÁ¥YÐÅ2ò!ûSöÁYHG"Ä'<„(˜%ØÆÉ:”Ì2&DêâÎéåÇxèæ—A 7(€È!ƱÏ㡺<”ÈO¹}ck«W‹èý×66²á'GÎÑ…‡Ív‘×ÜZ "œl®–ütj™¾Q-Æ ÁîÑ)€È!ÆÂÜÌ¥ÚX•FEá+€È!ÆÂ–ðñ®­ÌGŠð €È!ÆÂ–ð€i‚ðˆœvc<`Ü < ~’§´ÉC¾¾¾Žðè”cýÆ3§¿&ן=óæ3§OþÝ{’?ïïŽ/þ´.zé•€N!ÆÂ1…Çüê%ïNZòõKîø^¾ñÿoï\V£¢0컸rë^f%ÌB²‘€‹Qd$^Æ»³Ìj¶cÖbˆƒ>\¸%‚‹!ºP¼$>‚5}©T×-eõT¦1ßÇ¿˜.¦OªC¥ÏÏ©Óɨ½0ºÿìagzÏï-¯oÔÏ&kë«åß° :ã„•‘#æiN©|bb6—Œâ$Véâ™â%ó·Ÿß̌Ǔ/»ï¿þÚzó`±|%¾TuùÆ -ôx@8ÖŠÇÊà´¸·OÕõp&RíA´UHy¶óA5%Véæön´–®÷1I¡Ç±i}CdÝ…ÑJ–v³,<-€hé8¯È‚€V*É¥]Ék&+J÷Ø-²:+µአ?ßËJ4ZÕÂŒcù ÆcodÜS¯WŸ¤mÕ”X¥ï>ÿŽÖÅkw1I¡Ç±2{æ{k"ÕfžAKÇËÝÌfŒ3—Ò]}T-•î¥ü²Y3©X…É^kdk b_ãa³4A¥ —ñ˜: ÷$]ƒ¨¦Ä*}ûéW´º=Œ@Zèñ€p\Í¥ÂlÈ$+’iá%ì =û;“ü¬ì³8KvnäNFkáÐ*dš¶G–y_)›D-Žåò=ÝÀè“Ôçžµÿ‰UúúãÏh]¸zãz< §ñ¨äP¹{¢'t­ýR?k,·lÄ¡^dÐÓ´á <[$E)æß‡5Ž÷ò}ÆÃzù´¤Î\b•¾úð#Zç¯`<ÒB„ãyœ6/Ytº=[-Bvtè¹uגּî1ÝzôÌ}5ZeÆYn6\{+jó§Ë$ý3GÑ«ôåÖ÷h»tãz< ñÈ÷MÔ²€–|͇_Ô³ Q=¬|ÓbcŠÒŠ5rå¬r£06“ ·!±<lÆñÌÍ5b¤gæ(Zb•¾Øü­³K·0I¡ÇÂñ€ä+9´ íÙ3ï›ÑÔþ3²º‹¡F“û&íÁÈÙ×Q~ÇxÎÅ2«ðk·^¾kÕ‘X¥ù]+N'NžÂx$…‡7—¢æK¬Ò:‹¼ßç=i¡ÇÂÁx æ ãÐpèñ€p0¨ùÂx4z< Œj¾0 ‡GÜÒçºZöãÐpèñ€prã1ïYøÀx4z< qKG¨ùª³È1©¡Ç@‚ñH =Œ@j\ÆC‚ñ€Ãƒi> stream xœXK‹ä6¾÷¯ðy¡{UzZкíHn 9„œ6» a&aç’¿ŸzI–»mOðXRU©_}’Ûœ û÷ð£3øÁv)ÛîýÛá—OÝß:kº÷?×û!ÄSßÅìñyÿ½ûüDT¾ÿõ y€³ñ .ƒ=ƒÂ®ÃgzÃÿMŽñl¿ß§òe•çtÄK£‰4L´ÎæÂ³*؃Žh#ªÁ‹ ¸mö&ëž‘Öf;¤;á$Üh~õ ÍöfŽ–<ýíþóáv?|YMGò''é°f’áÌpônB+d=ÒµÆãT§oDO^:0ê²;cɲTB·¦G£XMV·QÚ³ÄÒƒm¾Ð(ñ³Œò¹ñ‚´Y!Éþê…zc¯\S”vÕ›~Hdž’ƒINî£GtËÛ+Ì.Šf¤@cµ€0"A4ê—Së‚RXœÞT»‰ È«xæ(fÝ`$HrÎ.¤‰’lÂ:Áœ“˜G° f*™e$ýfåC8ù•Ò“úý¯m¬DsŠXIûKA£§\9߈7š§ ¸qOáñ[«Ö!’ö±ëã)?øc ùc÷µlh›`y{~pÞ3·]ä†N\.²ÖZËCú¸BÒe7R´©X†I²4¢Qyë””æu·µ¤¡·e͹“]ÏÚÃÛN›E¶\S'Ôõ³6.ù(õç…ÒW#B'­Ë“8Ë©°$Fs5_¼t'ÂÕV´#ÓKØ„ÊÎM”#G)„⇜sv€bñX«4–Wƒb¥ ¬¶Ÿ·ð±¡Žv[sð%,FÆ1S½ílbc_ÜJLÆûÚ³OD_%²‹­$˜ËJpÚÌÒÍ­J^µ‘>J•`ƒÎ wÔbÌ;pQä”PÄñ]G/Äkáqß•ë@˜† O…=Ò‘”7‰îeXímî "3pM¬Jh£Ëô¥8öGnî þ!±M5+˜¹w”.’ë{,y­-[ø}2|®ø.:—žÉ=†.Mü83ofš–7fŠ nÝ1+Ô'.ï øUuì?åÀRŸÌçˆ7;§íÚÒÞO”)Ê…¦Þx/C9ÜK’<ëÊhk¹àIÅUæ…Ž§Æ+r‰°#bV\@Pçs­…úÅ@Ô}QwÚϬÉG‘»ý~]SGÇ®ó5¢À–ïž™ÎÊêcJ¡dTêéAkëõµ´Ý^(6Çç£"ˆþN•ÖTù˜°Âm…–l="¼~øÉ%¶ùê* Í5’¾¼°"¡ˆóPÞ{½`ç‚€‚£r¯|²Úœ7 T;_Øìöw“wt.ösCôÄxoÞøjòé”VäÝ–|ì¸'y<’Šü—øå1íe-VÏ›„zÔ­ïߺïŸdÉE»µàuÒB_—‚͵]κäE1Ztͯ,2KˆZÿúvøüÓ›ÍÝôOGÞ×hs¢ˆC}›ý}í4ªpâAât{L""l¸èº×ÖÒk÷çC!Ê*Æq$’½"Sl#¼ê¦ôξ,ì,L‹š˜^xÔ ÇÛšKV]÷mZôµwÎCWã\ó{ýç±/Ýcá endstream endobj 28 0 obj 1413 endobj 29 0 obj <> stream ÿØÿàJFIFÿÛC     ÿÛC   ÿ§"ÿÄÿÄÿÚ ï>òÏVzÆ^MÖåòôòkËÐòô<½/CËÐòô<½/CËÐòô<½/CËÐòô<½/CËÐòô<½/CËÐòô<½>rW¬œ¼¾ÆÍýÎa§RrÙô§;Æosy×GÔòôÍòô<½/CËÐòô<½/CËÐòô<½/CËÐòô<½/CËР‹¸Ûnhy÷VZSuK¥7Q¥7Q¥7Q¥7Q¥7Q¥7Q¥7!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦·!¦ù݈ÞƉ÷z|Mèh²7%i­ÉkrkrkrkrkrkrkrkrkrkrksôiMÔiMÔiMÔiMÔiMÔSYÔÌ2æò¬Q› uaö ˆÌ¬úYxñVNÉE 7*;ju÷öâºÈ©åvXyŒÈSLLí–Y2å…–¤<`Í•‰‡R[çØ1c=úÉÙ_|âIH¹#2E¥Q¯ðQ¯ðQ¯ðQ¯ðQ¯ðQ¯ðQ¯ðQ¯ðQ¯ðQ­ùQ¹[@“.Lxþs@’fƒ—R†Ó›ïË-„•s«%&FQ„˜~Ä”a%I©š4Ì›y$ÔÍ/ÆEC´Ž3yÆ30‰0 Ì#/¬•‹d|À2ýÂ$xÄI?#—+ÌÂ2ç†Iˆe˜†&!‰ˆbb˜†&!‰ˆbb˜†&!‰ˆbb˜†&!‰ˆbb˜†&!Œr°yŒ±²˜ÂM\±Uy€IF¯h¯l (¯h¯`(ªå=ý_ÅãR}ì/,ù=G–Oݪ›ÏÖ¹ke5¬.qjU®2E&=‹[Þr¶zj7ÝŠ,S-}éNµ²Îµ„ûMg\ZÑôÆw—N~žG§‘éäzyžG§‘éäzyžGªùÑeõ†î–\åLΩóÄÚ,Ö÷ÍR.œ|?«E{E{@­Çûƒ×æâ?;{Ñχ»‚燻€áîà8{¸î‡»€áîà8{¸î‡»€áÿ;Š8ƒ·¥â.Ü8ÎÞ8—žÞ8Žâ®!ó¸#㸎#ç¸"íÈâ{pâ>{‚¸{¸,áîà8{¸îyéÈÛ»ŸÑÒ¸Ò¸Ò¸Ò¿˜Ò¯/o—Ããw’~~™ÝGùúp¬ð¼gêõxÖÚ>²ŠöŠö€ a,{6É]~–lžh+ÍákÖ ¨§°¦ëÎM…$Þ_,xõ¯X*¾ºn’ÆÉë_ön/³Û¯X õ€¯qªø:ë;Ç#Þþ·ŽÒÖ=ÇŸ½zÁUë_ÿŠy¯IÃÅ<{|ÝÞgçOÓ¾ODƒº½`*㸌9éö‚¿ŸõuËêrg×ôoÇüùêN5ƒ¿¦±#·Íò„7Ðý=aø¡^°kzÀW¬zÀkQåEÍÛF¥íìÂ_vÕ6ÉW¢o:ÒSzÇqÝý¡TZîåñ4è{êÈ·²Ê WÈû~¯¾z¦Ù¨ø½N×£o6‡§ WjÓ¾?~Q¼cŸËžák©m¿c!ÖÐ÷Í[åõæ;[êyy'`óëty8'½Ÿgù]¸ïèîÛý8õκ/:ïôy8þøÔø8õÇê[ËÞUlyž(àsöþœ°¯°ü7Ð r5Ȳ¢æí£RŠöŠö€ a/»jšÜ)4»üÓ<\ôœüê5½PJaâ‹Úóq†ÎšÖ¶Y”nttÆççC´:$žmY©×tqz^£ªB7ï1h|zÛv^1yéÏKrɽ1фҿìßG÷ â×>•ïœy:KçÑB¡]µ[í™;—3û§QçG­É͇ú/ä5üw¾su›O™i2YHÔ§®Û5?'Ñý9a_aøŸpk®E•7m”W´W°S }Ê©ÊxÅ ’ë$+'Ÿ"õD‹Úleë9%ÙQ ØuìªÏ:%Bö«Õ%j› ©/ñ† èÇ÷ÙdÂÈKÕŸŠ*ßo 0ŰUê‰ 9‡ŒyÄŒ^ “h§çîâùvçè<ÚÆ-±.¯‹m³i½/BùËÕÖì5Ü¿Çz¢^wª!z¢ª!†,ØRí£RŠöŠö€ a,cEš>SÛÀ÷Mm§óöéþí½ýÍÓ6¯å¬7§7¹Ñôû¯—ìÜsðùÐrÔŸžbD߸*‹Çíà{FñS3Ô à«´«6Ñ©E{E{@0–‡Ÿo5±Í-7W<ÒÃxös› Â/¡‹™nö?cÓÍí7GO?(Ù76.›ƒyo>µ¹·_3Ù¦IÜ'ãâó꾡ï3KÝ1L_/E¥»Ô$ï5ÇWųcÎô¼ûÿšÐ7klßXVÙg@®Ò¬ÛF¥íìÂX2~Lˆ‰b"Xˆ–<ú b"Xˆ–"%ˆ‰b"Xˆ–"%ˆ‰b"Xˆ–"%ˆ‰b"Xˆ–"%ˆ‰b"Xˆ–"%ˆ‰b"Xˆ–"%ˆ‰b"Xˆ–"%ˆ‰b³l&Ú5(¯h¯`(¦á™dsü˜ë%ŸŠ‡7nRçéññ®…¯æ™7]iª|¹Þ·®oÒ.C¯l&Ú5(¯h¯`(¦á™dBÊH*ËDi 9”`ÏAC™A>×§§¢´²`ûY„·ŸTn7×y/_¯%[ëêy,–Òê­¨j­—)ª¶¡ªÎ¼×¼~î°<¯l&Ú5(¯h¯`(¦á™dϰox–Æì¾väÙw¿™Ç?Ã×°Û¬jýw¼£ÇV’ºf½Õb7Ì5Þß‘ŽW¬ù—E¥ê¤¡¬ßáÛË~õ,ºÇ&Ç×cæòù]"TºÿW§*9§x¯ÔåîÅó3;ë“Ièó°äð{D6al0¦Ðg@Wð®ëÊ}G–üÝqþ“óù¡ï4|zë·^­m×3ìUiO¿jwÒ]Ñyñó¾Ç_ÅW‡6m”W´W°S ṗ2!~ý¿C;ëÒàNú8¾Žï£;èàSûs`çòjðæÂm£RŠöŠö€ a.æF³IM«Ëžÿ›Êë®ÿ's7ÖÚD 7蛪kô>#[sú7Ös?ULãý‚Д«Ã› ¶J+Ú+Ø )„¸fC™ B%ÞX«…ŠŠy9 l½}ZûcÔ9êcctÎ¸ØÆ¸ØÆ¸ØÆ¹6Û_'ˆ«Ã› ¶J+Ú+Ø )„¸fC™jÚÌŸºI½×÷95ÊÜ”ºÎÊæ›:Þë¬k—dåýCR³I±ó/ê-©-›kOq/õ¼WoV®é3ˆÖvôí@ÉKpZk»™š‰;½uc«ï4«[–Ên¸a¦¹¤Ç[WjìÐôíGnÍ ݃_›—Ýc5‡å½±õéÔ®ðXç“Y‹±ë[TmÚ[ Q3e×/¦mÕ^ØM´jQ^Ñ^ÀPL%Ã2ÈYf"¥**P«ÃtŠûp.âþ­˜µëåzÀW¬zÀWûš%‚¯l&Ú5(¯h¯`(¦á™dYK[àÙk/9%×F¼å›ž¥¤#WÎ;N^=5×.´íYìÖ<ÚÀÚòólø×E¡æ>÷ž½I]Îã•lÒí9MÎ[„Þcc¹¶ÙëZtuÍ{®½-ÎF²[—¥Aæ{E›Æ¿­ìÍ_ü囯ÃÎël&®vžu#w Kâý<ö8Üâo]•§n6„ !̯!NÒµ^­óEõ1»ÂÑæí·ÉÑ$Fç°ò ë-ª‹µ²ÕáÍ„ÛF¥íìÂ\3!Ì€>ýÕ%T¹R±Ë‘S’Ë%maôd[eEM°+K!u0A]žÕÙI†9¬Š›kTZ´}º¥M°¥] UÐ×ó] UÐ¥] _và ¼9°›hÔ¢½¢½€ ˜K†d9£µ9õ}Õ™ÄevGLðˆß ×ØzÃS‚îÛU†'çk¾ð·€Ëîjápÿ@&¸¶Ý½®xŒ~ìˆîûÚ¸Íè4¼~YÁ:.쓃V~Œ[Ã÷m鎜Grvå¡óîúƸLîÐÓŠßtÆsÇ#vÅœ ³[³° ¼9°›hÔ¢½¢½€ ˜K†d9IË +Ö ¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X õ€¯X ø7ÕñàJxsa6Ñ©Ez@PL%Ã0€=Ø€¯4*ð†Ú5?ÿÄ154@23 0P!"#$%`6ÿÚnÆÌiÆÀjìAi\‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",ŠàÃ²ÖÆë0DX",‹E‚"Á=lxîàˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DX",‹E‚"Á`ˆ°DA_Ð!(|ÄŽ“‘9é}Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ¤/ÿA‚o´ "œfÚ”S1¶SÎ:qŽ‘,{•|ãºÓ$yýç\wqn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn!Šj‚Ýk <Ók-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ʸ¦.§puj·V»ƒ£T¸J]~·ßPݺúârñ·¼E–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËee²²ÙYl¬¶V[+-•–ÊËeEW¤uWuWuWuWuWuWuWuWuWuWuWuWuWuWuWuWzÞ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢Þ¢£WuWuWuWuWuWuWuWuWuWuTgꮺ½:®«ªê©uzu꺮«ªê®¾–[[«Uc½kÕI’þ %ÄˆŠ Á¯†nÖâ#·ƒ\zàãÕñŽ'""Ùµ¸ˆ·màãÓñ[ÁÇ®=pqëƒMÃÆ=g¸8õÁÇ®=Y{\ëì«w>5€´åŽõGkœ }i&*D€—|¤k¶ÒF.çÅQºIFZ¯‘ŒrîR7£’q¯[d”cvÙ%ݶÈÅÛedãn¯-Ö²w+e#m\œbnF-ªß%åm”µVB.´åc©g)Òé»íºB.û9(ÍË¥A¥ŒIGÏ0æ\À ˜s.`̹€0æ\À ˜s.`̹€0æ\À ˜s.`̹€0æ\À ˜s.`̹€0æ\À ˜s.`̈1ƒHê¯þª·UYÖ·uô$z:™ßm;iÕ}¶GïX·¬[Ö-ëõ‹zŽbÞ±oX·¬[Ö-ëõ‹zŽbÞ±oز¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨²¨ªEµ[Ö-ëõ‹zŽbÞ±oX·¬[Ö-ë7ÿÐCxÿý7ø2†`õ–{1C»qQL ~ Ëeˆ2Äb ±Xƒ,A– Ëeˆ2Äb ±Xƒ,A– Ëeˆ2Äb ª(´¦(ýqXƒ,A– Ëeˆ2ÄP&o»^—Í‹eˆ2Âkkeˆ2Äb ±Xƒ,A– Ëeˆ2Äb ±Xƒ,A– Ëeˆ2Äb ±Xƒ,A– Ëeˆ2Äb ±TÂãh›e«]µ–¯nÑY¾´Ù¨Ø÷:=Œµ#s&¨oðu'‰~ûì9ȸcÉ0mŸ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜOßþÙµù¨ö­(ÿõsX‹bËÃh~8QìW´ÃLƒmµÉ1õ”>Ɖ:­± (ƒ¢ž¡K¶8ãɶŒRíŽ8ï05d‹od&ÇÆ£™°Ñ›sü{‹qn-Ÿ·âÜ[‹qn-Ÿ·âÜ[‹qn-Ÿ™r¶Üë%²Õ.î0^m§‰*û,üÞÕ[˜»¥"ëÿv¡¼ÁÔÕé’ÚêˆÝJ²«%µ’ÚÉmd¶²[Y-¬–ÖKk%µ’ÚÉmd¶²[Y-¬–ÖKk%µ’ÚÉmd¶²[Y UT»nº¥Ûu×mõÌ¥ki”mP«m¥ é} ²—fS»!µR¬º¹V,ÊvT–ëKŒ¥öÜU—«Œ¥öæSº…Ûm–™K-¡”¶Ì–ÖKk%µ’ÚÉmd¶²[Y-¬–ÖKk%µ’ÚÉmd¶²[Y-¬–ÖKk%µ’ÚÉmd¶œrÚ¯ìM=e—V¶ô¥m¶´qª7»ý{©u°¯Zìê†ñÿWÚÿ-#"ÌXßX€¾±}búÄõˆ ëÖ /¬@_X€«¬£í£wÑÖÿiÿ"¡¼Á•ö¨QY}Î9ÑšØØ†÷ë«ÿ÷;¶ÑnØ»©_ÓuÔ¶šfÏômj&ÿÁmÔº‹^x[o½«óÄ*Üñ„«}Îzìãý‡ìö¿äT7ø2¾Õ÷'µÛ8Vh¸VW ÊFò盱ÏÐëͱgéºÔºÞîVË“ Z;©ðïà[_O4›Œ6¿©ÑDZ͆¶ƒYEK)OÓ}”rߥ†¥~—a_¦nŒÒÚ6µç€ô¥+un·ª¼KoV‰K,ééJVêìãý‡ìö¿äT7ø2¾Õ÷jj÷зYÒÅÐ顯~\èvhtÐã8ù¶s²&ú<Õ„5|LXÒRßY2¡•^Hþšš½ô}<œ”ŒU5Jµ“Š‘²HwåN‘…¼‰Y¯IIf©:I‡:kR§ÈªÈßxÍÞdœ¡%¶{T|‰Ϫ&FAÔì‰mIúJCç]zF´vuÈ”iR X“ÎÈK”þ”Sî•&ÜÛò7ŒD¤‘DÉ”À–sõ‡‰ÔQ’åF¼ð –kŽ5,mËX±ÊŒÅŽ&›k¶ûlaº²Ãv³Ktïgì?dµÿ"¡¼Á•ö¨¸°Ùl)—9§‚zÖ#‡Û Bn¾FŒÈMé!n2º\rdˆäL ev÷¯€ËË€ò/ŒÊ]äz4,th×"¡Ã5³!„=ç4ð·|EïÎz$‹®éà±øˆ¡ztW7mðâÞô<[‚—¯<«·\奻mhýöØÙN4¨õôT%Ëm¡.RËJrÚìãý‡ìö¿äT7ø2¾Õ[Gš¿t¥ºRÝ)n”·J[¥-Ò–éKt¥ºRÝ)n”·J[¥-Ò–éKt¥ºRÝ)n”·J[¥-Ò–éKt¥ºRÝ)n”·J[¥-Ò–éKt¥ºRÝ)n”·J[¥-Ò–éKt¥ºRÝ)n”·J[¥-Ò–éKt¥ºRÝ)n”¥@¾`O¡_B0¾„a}Âú…ô# èFÐŒ/¡UÐCÕ5’Ë[¥-Ò–éKt¥ºRÝ)n”·J[¥&l«v?äT7ø2¾Õ^ý¶]“jɵdÚ²mY6¬›TÄ•CŒ³PL9Nrms“kœ›\äÚç&×96¹ÉµÏLR°Òw“jɵdÚ²mY6¬«(²¬ªÉµdÚ²mY6¬›VM«&Õ“jɵ[u/·ø‡üІñÿWÚ«+þräÅ¿cÖw.åÜ»”Ù­ +Ç4LSõe€Èg°¬!–Ëd€’ƒ²Ózp†ì†´–ïs¹PÖªS¤XÅÈ»¿Õ½ÛZ°YÈóî]˹w,‹7F.ÂØî]È/ÁüCþECxÿƒ+íUnè@÷YYÚIe­ÚeåÜqŽÞ݆8[Ç<Ù}ßôÞ5ûj#.ÛmèABb_%ðX|PA&(<¹ -ýª_ðízPË›¤‘®K÷·(mï\ù–÷øY«ÿéüÖ4Ñ$•Ì´H·4Óû}³päe)Ó˜ ‡äÓä_x@ûâò*Çü_j¯ûE)ôp!ž¡a:¯²Ðƒ°«%_•º*<ƒY0å˜rÌ9f³Y‡,ÔºÔh6ß dSOƲ£¶Ü`M6ÜxŒ·tP7Žå-l[ék–5 ÅÛM÷YHÈûŽ4ˆv ‘t1Ÿ¹Àxz0Õµnˤµþ!ÿ"¡¼Á•ö©¡ÚqÌAÖ ëuˆ:Äb±VÛm–þ»Û±Úb±Xƒ¬AÖ ëuˆ:Äb±Xƒ¬AÖ ëuˆ:Äb±Xƒ¬AÖ ëuˆ:Äb±Xƒ¬AÖ ëuˆ:Äb±Xƒ¬AÖ ëuˆ:Äb±Xƒ¬AÖ ëuˆ:Äb±Xƒ¬AÖ ëuˆ:ÄT1ЕêËþECxÿƒ+íPßwþ$?Âÿ‘PÞ?àÊûT7ܵN¤~Ö¥‡Mr J3^(PŸòDih­y!2È@dZ֤ݬ¡õ‹#鯤|F°bCùÐÿ þECxÿƒ+íPßrÕ:mù‡OÓòúŽºJVL¶4qZÞƒ>Í0Gütý‡¹§%¢ç€‘Y ÍgM¡ä¤ÅkM“f§þt?Âÿ‘PÞ?àÊûT7ÝüÉ.U¡„›Ÿ1ŽGQ®GQ®GQ®GQ®GQ®GQ®GQ®GQ®GQ®GQ®GQ¨i©¦½ü/ù ãþ ¯µC}Þ¥š8 0CE4“6ÑÉl«=H1¡+ë{í¶ïëÆŒ§éqËZ²Û©}®9kV[u/µ]$-¶z4ûo§mŸÐã–µe·RûvGÇ‚}#à)ªÛ¹]ª›µFÈREŽ«ªêšzǬ꺮«ªÿ³ôð¿äT7ø2¾Õ ÷z½±õ™· ü¸/?$Mƒgȃ}ä=s·š#ÎÊ-dÌUµWÓ¯:9WÉ9HϾJgúj`Ÿ¾Ý0rD3~¡0æä.‘:WPÈÛg¸àSL9) V™üqï=S×>Ð1Ì~žrPÊ4Í’EÀ\n<×Z“Ñm2Ý.ÓO^t@Qö}÷âA)ÚÅ…qnEñM²Û*èÀï-¨á&ÐDzËCË-Š ÂìŒ ¢~ž‹«t¶”·„ŽÆm»Y±¸ švð‡vѨôOGŠECG‘JˆÅV;]ÃÅ¢4{»#ãá|I5eâÚiçÇl¦„jÖ„«VÒ,j^Ìxì#âí½ àYhƒa›ÛvhõÖþüІñÿWÚ¡¾ïæN·¸(ùGDœqsŽ.qÅÎ8¹Ç8âç\㋜qsŽ.qÅíåê_@ÿ þECxÿƒ+íPßwþ$?Âÿ‘PÞ?àÊûT7ܧuzyµÄqT·þU²á×OfCfÛäÃhFh¦¤õ˜±ÒRÒ:.®ÍG±BeB Çg#™p“ÆæäÃtAMö¿™ð¿äT7ø2¾Õ ÷-h””tµN L¹ÅHC‚äMÖcéùKatw«Ç­²Óñ²ƒ)}‡Çé‚+¨õ|iåŸ|sÌId—üs¡#qLþd?Âÿ‘PÞ?àÊûT7Ýû²ún:vñd¿‹¬ˆ¶×’rB.HEɹ!$"ä„\‹’rB.HDÛ¶=o …ÿ"¡¼Á•ö¨o»÷,±éx——òâ^\KÈÀßKìL÷6÷ð²VÐ,²Ö¬Oê+“ýž”¶SÐ?Âÿ‘PÞ?àÊûT7Ýëi¯}Sf¥xVdu?ÔÃs`¨2Õ–ĹòÍÝ©œ¶åîTÁLJ)"ñCÌê'jgÄœÌq¯ [jJˆÔ²»;yÚ­³ °Ê:$ÜX$ƒ2 jj· .àŽìêFlq†Þ.ÇÝ—¢rOŽÞtèÕµDѤýä…! ÓÕÔŽ0íuTP®véêœpGv\Šƒ0¼tmî"㜩z€W€>ÛeO%¹ÁÓƒ6Õ¿ªµé%ªã¯:s ˆÀË|Å Oʽ¨!# ƒ.><ø¦#" `ûã jÈ×ϱ¦N.úR½e=ü/ù ãþ ¯µC}Þ½WZ£b‚“C ÈL&UjÑ‹K‘ir-.E¥”6÷"ÒäZ\‹K‘ir-.E¤/WJôð¿äT7ø2¾Õ ÷zŸ©€‹|)±ä N9kMÅÈr‚<{l{r€§œÙe»»ÛýžÙ%ªÉµg©§¶ ߤ3šï~½ÕŸGÍw¿^êÏ£æ»ß¯ugÑóF©±]kÖ±]kÖ›V²fy‰·úP4“~ëáO!´™ÂIäKCK™p혲Ppsdr{—ùê.ßz’›iƲٳi:ÓLJîa8õžßì7â;´úÏ7¿ ˜yT,€l…H äŒ4YÕ ^’^Q8hÛj×bà¨â, 0ðƒ¢œàì‚rÿ=EÛïÁFë.’¸/ eR:Ó—s?=Aç·ûMøŽí>³Ì…æHtB¶Ö'LeÁ8"L H·iDɽZ ‡YÌ&ø@o£ßÈ” ‰ß7½w/óÔ]¾ôÑiX¹AV îhŠí_Ïo­ª›ñÚ}g™fûÃcµ˜…Q¥m^µGKIÅõ/äƒñ,B§üƒ°~%ˆTÿvı ŸòÁø•V­R«ÓÑÓrl~æ‚IRO.Ò¤ÐúÕ\..o¬*Jý8{ƒYG— 4•Æ4ý =€¸ÆŸ¡G°Óô(öu.1Qu#ÚÐCÀ¹ ]dþÕz‚ª$ Ý =&úÓû›Zá eŸ¼Í'Ê\UZÐ6™ñ.*­NA´Ï‰qMk@ÚgÄŸW}Z æRÄ—Œàþ“ ”L¡tàœ›è@7Ñ€¨>)çD»ùóWïÚ~K1[ÿéöBi'/‰4œIô¡­&Ѐn²NuÆ”l5q/A› \eKÐfÃWRô°ÕÆT½l5U+F´_GHÆE‡šAÌD„[*.ßZ7ïÚ¡0¢ìüAÁ™fŽÕ þó¡–U²'W±4@–Ç;ÏÕË‚ð­Nè.æ~#üÇÿ_ÚèkM¡u3-A¸Æ@Fƒ¥Z¨u.ÛúUª‡Rí¿¥Z¨u.ÛúUª‡Rí¿¥Z¨u.ÛúUb«ChÑQ ‹ß9nè·xÅOg·Üšë†ù¥ ¦Þ‰‚ù'Ć´¿'6½ wÞäíX3.Ü?¬œ×£1rvxÀS²]¾TÜ·éö¦Ú ŽÏfL]½ÅgûÞŒÂß×€gò#{ß}ò~Ù<Ú.”/pæM6„¬Ò§Bð0”nFå¥:ì÷Ö‚eíêC"”n}(‹áZ$H”òL]ƒ6ú‘¹‰‘å”σ¡EË<¨Ñ¾Or:o¿üY£r!Eò…Òšèp*0f… Í÷xåÿÄ?!1AQð@Rab‘á "q¡ÁÑ02S`’±4Pr3BpÂñÿÚ?³P夓+UœÙªrg¥Fk‹u"g_è ÿƒ,l ø/‘/zº®«ªêº®«ªêº®«¨T0Va_ä¹FîMuéÉ1åÑ-Ö¹KÑ Û*ؘF Hq!]WUÕu]WUÕu]WT!RÚ•PR'îèÚ9±¢fêÇwV;º±ÝÕŽî¬wuc»«ÝXîêÇwV;º±ÝÕUEUEUUUUŒEEUŽî¬wuc»¨ÛÀZ¹Òžî<:SÝÇ‚çJ{¸ð\éOw )ñÿ‹ÝXîêÇwV;º±½Ôûeæ–ÇAh§²<”e:L5…î0·ä # á·ÐµZp×IÔSÍ1®¢} ¦­úl¥±Œý‡è°•Ƚ}¾‚£jºHÈ—lý=¿€«£ruÖ !_|^»’m׉ZÚ0Õ2ÿiþ n¡Ñ½«ÕÒæˆ Ðù-¼è –œç=?h¹­ ¿Æ¥mûbÏgäÅ-œòÔ>yç*FÕh{GM¾§'ÉgöüÑ}ror™û£ÃR 2\ã$ë:pu$]ßf¢ê ºç—{U_ÀtVi{`._Ô» ‹.6 ¶MSüOðSu†DHQë]Ó¬N‘™¢4l”ú ©êÔ°¶n ðM¦ÊMºÁAM®á«4ïVxßôônÇÕWð7':ê¾¥³©_V£6z¿â‚›¨t9•;})Ñ:gÑ•­O¡* ¼Ø žù_%ÎÇò¾>KÏå||—;Êøù*ßiº¥7Sµ‚5ù!è•$1Ä&ج·DÞýËfÕýÅ`¬»û–˹߹Zh²fŠSm3·ûPÉŸ<›‡bÚböÍÇè¾ÎI3ð=½«gë|Ñs…ŸÀýzì«Y¦žÀTä§FÈR/J•?¤óŽÔx÷£ÇÃÍ7·µoã`óNjýB“kVºýQó\ßFc?°;|JÀPíñ+C·Ä¬ß­VZtißḑAšaN¥±mG1 jÎÉÊ ç¢÷ d'g1Æ´ã&};õï˜\¿«r=úN´?Ñ÷çû[\úo¿L¬]§xðóX»Nñáæ±vãÃÍbí;LJšÅÚw5Vµjͺò#Ùç÷û¿É@ïÿ¯ÕûRÕ¢:{³iº\]¿D䵂|T®?¢@Él!m”D‚t¸»zMth•»õÿÄV  !1234’“"AQas‘±#q¡³ÑÒ @BR‚²Â$0Pbr¢Áð%5CáS`t”ñDcƒ¤u£ÃÓâÿÚ?K®¤;lZJV*滦,ª^\ŒZcU—ÝŠ÷Sª5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B5V7B 2Òà ¤¶˜ m‰e äR[Iª±ºª±ºª±ºª±ºª±ºª±ºª±ºÓka€·M1"ÿTj¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„j¬n„KvHû¢&JÁBXRÛQ@´¬âEÞšCì<¥–k5\Æ×í9žÍ^‚˜ÇªY‡-Ûq&‡/LI2ÄÊÜeeUwB®«qSöñÕ.Úª>©<ð†K®4ò]MjSQê4±1Š[nÑ!O¤á牬[Ž´¦BkåìŠõ'ž%ßSÇÅÒ¥6ÓøµW§®%[C®!’ÀX«¸²£Öc–— X¶“Zþ×Ô\Ò>—îˆ/µ2uYÅ ÅóÅœªR…cJ¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j4¨Ú*6£J¨Ò£j.6Aæ$F+Èbþ¥ÔŒWÅýK©¯!‹?BêBäm Q&ë„[^!KúÆ•‹KÄ)T¥M!6„º¬Š ÒèÌJÀÈCÐò3rr|Ñ¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµTmF•Q¥FÔiQµÝ’<#,eŒ±–2ÆXËc,eŒ±–2ÆXËc,gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÆ®3ýqŸëŒÿ\gúã?×þ¸ÏõÅʬeŒ±–2ÆXËc,eŒ±+Ù#ã |šåé*ª4-/NbO?ŸÝUÉXæ÷pJ4tn9EžI?Ò566jRûÝ-2ŒT$‘äÄZT¤ºGI@Š¢VYc¥)5&6jLlÔ˜Ølɰhi£‹K•–@éR@Š¢VYc¥)5&6ZT›vq©1°#Rc`F¤ÆÀIi“`¤ÿíÆ¤ÆÀI“5&6£­l@ÚT\@W)U¡µÓ¯¤½h©~Hy¼s¶B‡/žÿt"óh2R±¶†ŠÖª²i|!+QE”òÌ®¸p©NÖÖ2ÒUî…%5´N4 nÚÖ—JˆJ©|#ê‘FR«*o©„ö?Ò$­©²‹mÜŒ*‹7>«­Ù¨è¬JÞà´Þá¯|qªÆã¬X­ÙÔ¥<Ñ0àqeÄ8«"Ñ¥Ç$8ð'y(÷ÿ}±–‹JE¡KI7ˆüÏDâéþu[ñÃÿÿ1ƒ‘iK²å-(Þ|’øÓK Rè¨ôpr.Ë óÿN NÉ> Yðù YñùL8†Ôî-d”§.iÖC2³vR»JÆ)"Å.ôD²/0„6å²·Ê?áØ“èà•tæ6åTz’?¬WŽËoSÉ:ÿ}ðâDä±%'ýdûâ‹›•XèS‰‹jP#êãH±Æ$ì}[i¤]5(/®‘0©©E—ãr´&´Æ&,®nUc¡N$Å”ÍJ%'˜8˜)LÔ¢Ryƒ‰‹fP' -4‚LÔ©'/”LÇ%ªn®50šÌÊ99iº.›•Rç’úT§''”MÐJ&e_ªâD©©E—MÊ‹©s‰É fP„äå¦è±Æål䳌M 7+ActQS2Š­ ÓfP dIZiÎ5)oëcXPnzUµ{i÷ÂLô½?â¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêc^–Þ¦5émêbTKº‡±k+QlÔaCúð]–/hת*¡NÃB’zËJU^•spÊTä“—Ì#==ñžžøÏO|g§¾3ÓßéïŒô÷Æz{ã==ñžžøÏO|g§¾3ÓßéïŒô÷Æz{ã==ñ¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q¥Q{ƒ¾3ÓßéïŒô÷Æz{ã==ñžžøÏO|g§¾3Óßéï‰~Éó ¿dù†_²G‡Ìœx ¨Q)®KDÐWª¦-¼‘0¿®ð´ÛÌ.Še“Ô =Â(¦%•Zæ F¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèF¬ÆèEL³ìÓ2 ô-€„jÌn„jÌn„jÌn„jÌn„jÌn„jÌn„jÌn„YD›KU ¨NAÏñfoÿÚË Ž•ËY±³¡³¡Þ"Ö$šc1hóyãVct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct#Vct!À†ešJ ›Ø ©ý/ý ÷Ã9-.¢‘jÐh ˆCŠâlÞ”©„›¢ˆrIJèÉ÷ž&Æ2ÕŠbÓ–´è‹5”·JÙâ£ß t&QàÞrD¸̱$²ð¢–€­Ýƒ'›‚_²G‡Ì—Ú5í o< Ò&0ݵ[l4+—-z!nM(©XÂOÕù³ŸÂaAHÇÉ[KGé¨V‚—åÒÕ+ %’£ÓgŸý£Ö_’µ8•1‹Bù >q ²àJÕ+Ë™Yúi!T¯NA³0.­VÇÆÒüÑõa× iq®1‰J\—Ư͖è m%%¢Y/%»ªj#¥ä6¥°R„5m¼ö!X”) d–JT‹Ýx-ümøˆÂ §Œ8·‹!Å R.æ'a†CŽKÛ[¥¯?Ÿ®h2ªª‡[`Ú™ÅÊßµ¶Òîr’š‹IÍ<Ñ:ÉiÆóܹE<ê¯*•C °Ù-ÚZE^y4N„2Zq¼Å·.QO:«Ê‡åS*Ê%KiEÕå©T8—¶¹’Ý¥ÏѤIÛ`¼h)JCk*= ­ÐÊÓf`Úò“åIs¢Šæ„ù¹þlíiJxXL-Åʬ!"Ñ6““¾=(O↋±¢Xf&ÑÎn·BxÆ4¤:›8Öìýטu@ÿ¨ÿù!ó1A)k®Ö2ìÚ_“ûË Ø¡kÉâóqwÙ§®0ñ«Ù«‚_²G‡Ìœ&àkÚ&4‰ï‚Ûx¤}T‘º’|ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|g£¾‹ö–2(¹xôÅ¥L/ë—*®øªæ ÕÒ·*aGŒ®åœiåyú`ؘ-×-‡,׺KöB²„¹Jùà¬M(,åXxÔùÍbÐ~‹úáÎW|ZãÙ¸«jGž4‰eA*x)G*”º“¯V‚‚«­TXãõ1¼žèº‘puÍW0Vª§j; ÛzÙ<ë]bÊæ ÑõTíGtZã&Ý)kkNŠÁ@~Ëg*”IôAJfJ~Š] E„Ì”£ê%ÒtißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Æ‘=ñ¤O|ißD÷Á²ã*J¯)Z¹î÷Gþ—ký ©N¶Ti‘WwÂSn]iH¢mªúwESÅAé·þÑgšÖÕ®ºÖ+j^×N3ý¡I.0„«:ʯð‰*–¬‡÷Á/Ù#ÃæHíÙö‰ý¯~¶+NH¬fÌnLfÌnLfÌnLfÌnLfÌnLfÌnLfÌnLfÌnLfÌnLT‡ÀìŒ%iÈ¡Qú¼Ú«Ù«‚_²G‡Ì‘Û³íÁ2\efU&¿E1«3°#Vg`FªX–'úF©ÿÕWçÿQ_ ZD»$vb5fvjÌìÕ™Ø\u©v›T´€k;m¬`í´AâÜRb™qVUHՙث3°#Vg`F¬ÎÀYâm«®ÊŒjîoßU&ÛĔՙث3°#Vg`F¬ÎÀY³;5fv))a’S—Ɉ6dr\E}ŸÖèeŒZ…B¬ ⪒HNJâÓá–5fvjÌìՙث3°#Vg`F¬ÎÀ…2cœ©°"Ê›b½ n¾JKùñwwÆ1ÄK%6D f¨Etb5fvjÌìՙث3°"¦]ØI Š¢]“Ì|˜º5fvjÌì´†[B±¨½)Ÿä†Âh²iE] oMmSš™~C¾h—&]¢qiú¢5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fv(@]þ#7µW³W¿d™#·gÚ'‚g´ü)à™ìÕá=-Íq{OŒeâô{£6ÓÄK­*+HÈ« ŸÎˆ­¼OÅßJÖ¹boµq?"I‹HÇV•ýÅÂWÅ&Eyª\«ª¾–-ªÑó Ä›ˆ nÛk©iõŠæóƒ’£üK*ñùð‘}êÉšc\—û(lÿHåNKž¢–Ä<„®—,©Šä‰e¨ÕJm$ŸGË$(8ºÍÊ0ë-©\QjI(}ÄõuŽ‹âU¥ŒbЀÛ-'*¨)_ï$cߢŸæ"<Þÿ–âšúáY+ôGLK¿2ëNKº ‰tüÃúA—–t¨yN¹K¼üðó- S`¤â¨Rj:Gž$¤h’E¥b˜±ççï€+Z‡OM•€êÁSh 5ä$¨w^a.¾‚„$Ú¢…-t]Ñò¥œ?…!%ʼnKjUÙkdÃJ–ÁxæŽrx€¨þHJØ“°‹V„µ… _«Â{Txü€… ãTn]n¦\‘eYɸùâÊs•p‚Øm))¡Æóž|Ñ-Ù§ÃõKí÷Œ`ÞÕ^Í\ý’<>dŽÝŸhž žÓð§‚k²W„4¥<„bžç éÍ–1Ê™²>›ivåÝç…?ŽEKx»6‡Mk–&“—Ê ŸÀŸ‘Ðkê„2Íš"ÿ’¢Ÿø®dþ5G8þÿŠ1/8ÚT ˆ8Â.uµ=2BÁJ„ºM‚M¥‚ß-ViPò•}Ù¬-ÜN.Ýj„;wܬ6(€§$Tâ)‰Å82µhÙô ”ù`VûV>ÍŠøÆtg|ª˜c“þ’~WðÆoòÿþaÎOújæêóEGíQãò ›XI"—¦°Ñ~Ò^ Zq¯ë Ä%Xܘçò&èJÔâ—ÏEp»æ‰nÍ>ª_h¿¼cöªöjà—ì‘áó$vìûDðLöŸ…<*I‹–ðÕF‘ýò½ñ¤|¯|YlSžÙZC‹­”“yéù6ÜZ[GÖQ ùT‚RûÍÔÖˆpˆÖæwª÷Ç*ba^w ' »å¼£8Z²| ÇP$«¦û«w÷†4Ïï cÖñHZu˽-SN¤¤^â9I7‚#'Ê äƒaÇÛu@xƱ5¿_¾ :éB9Gò¬úja6 QKˆà=ª~XwÍÝš|?T¾ÑxÆ íUìÕÁ/Ù#ÃæHíÙö‰à™í? cK)Å7/34x¤Ò©²£f½d<[²Èâo<Û8yv,ç"ybeå¦`µÅsø`, ¦Í…²å†ßvcŽc$™-© HJÐn ÉAçêŒ,ø›qÊO)8·ÙN˜_›–0ÌËb]75‹‡(ØYµÏ}iu# ¾ÔÙa¹6’ëMbÒoÅZ!U .eé‰Y%-°Ém¤)¥K–ihUÜÜ8y´`ÅNM–Ú ¾ SˆUŒ¶‰¨ôtFJç‰e)mÚ±U5¨ÉXL(-‡$1Í&€yDåO¦Ò{¡™tÌÍ9>Ô²\‹4Íšßz­Òêƒpè‰t·3ÄÄ™šV) R”§+w*· >¸‘ÇM»‹âK)O’nýÒ ½1–½| šT“8R\5c‹:å› ©å&·_ý!†0J&š•Dª\„´W•I¡Æ+ ±Íß•uïÍŽµ*‡^ % R–¢¡ÏQNO®?(Î;—&ÝZU‘qÄ…xÆW(fQ¤6A©-TÚ¨É 8'f¸=¥¶”Pò×§$HI—gLjû‘æ´HW¢j×'Ê š¨V¿Gûë‰Z¢Ò–kj¹/„.œUŒô_ Ì—šÄ°-Ô¸hMzáEµ*¦¤õÒVR EkÊ®Nèåbën¿»XwÍÝš|?T¾ÑxÆ íUìÕÁ/Ù#ÃæHíÙö‰à™í? aLL6—ZVTª´4T²›žqNrz9DÝ! .ÂÛ-–Rr€+w¢QhÒ h¯Õ4¨õqivÙh ¼²“”[½Í´(bE–ÔÛŠB€è¨5æ‰|K±/o<›fªù%Æm‹8Ãhßg7ÍN¨˜B˜. ‹8ìcŠQ]“TÔ“¡-¯ÊÒұ˵vNUj!Ha%6•iEJ*RI&ó¦&K­+*U£\K©°¬sŠpÓ¢ª&h2J])RÊÜR”«99DÖèyO5lºØiw›Ò GŒ4‡Jš%Ì{˜Êku©ï€ëmÙXh3ZœÑÍ¥ )³,› ”:¡Éè7ò‡Ÿ…R‰oôuZ“[Y|LN.a»l¹‹Ki¯5(‹úÙ9ëóH6ùE”¥jMÁ Q@ed¾&-µ\yIs”o³“Â8ÊÛPzàTÛŠEªdµC¦1¥’Hw1VC•­ šÐÃê-+Ëš¸ê‚I¨5³ZVá|ŸbÚÍ-rˆ ¦K@\¯LNZn¼lYzóʺτ%å6² B¬—Wb£!³Zp¿0„Qçìã\´ÉuoZzóʺτJ¡æm¦Yiq¡SÉ#$c^l•Ù°l­I´ž…PÞ<ñ.ŒR’%ÛÅ6[uHPGEA©+4âL¼“jL½JÉPÖ벞kÉrÝ›5m墣 Ù"N#‰M†Ë+Sd'¢©"èfÓJ”ØB›uHUžŠƒX^5’BÑ‹X)!iæ¨øš»¦E—yG”,Ùð‰wl).0,¡HqI» ÐÞ:ŒOÎÌ¥¤ÍN-%A’JBRšRyûàö¨ñà·^WLT*ú× ºy+Ë ²ªYÉvHEù™±JÝÖ+kvKÄP+š™9¡ß4KviðýRûEýã7µW³W¿d™#·gÚ'ÂÚÐͪ)槪4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø ËL8ŒY5ä ƒ÷£ZsûôÆ´ç÷éiÏïÓӟߦ5§?¿LkN~˜Öœþý1­9ýúcZsûôÅó.~˜BãVR(<™ø£HÎèüQ¤gt~(Ò3º?iÝŠ4ŒîÅFwGâ#;£ñF‘Ñø£HÎèüQBmJ‰™Mcöªöjà—ì‘áó$vìûDðY¼ž„¤ŸÍwt¯tf»ºWº3]Ý+Ý®î•îŒ×wJ÷Fk»¥{¢aæ‚ÈME¦•Hª—§Z)y]˜ÓÊìÆžWf4ò»1§•Ù<®ÌiåvbŠ~_!¥–ëï:\Zjl´ªFk»¥{£5Ýҽњîé^èÍwt¯tf»ºWº/$t–Ô?¤\Pé ¨ÿHÍwt¯tf»ºWº3]Ý+Ý®î•îŒ×wJ÷Fk»¥{£5Ýҽњîé^èÍwt¯t Aý“ƒ{U{5pKöHðù’;v}¢x&?ðˆje™`¬˜×kßm¬-"’jÉÂ8¥Z±iµ]‘C,6¥²Ú”J¯)XÄØBYQ•4xb³}P‡[a¥!i IÅóA—ĵŽÆYÅód]­»[5v¶50ܪMŠÃE¶ƒiW¥4ú ŒÚœHqmòPMê¦ZBÛK‰Sˆ¥¤ƒz|ü –µå’€áM>‰$ÜZ[GÖQ à{ø )AH©' Š–Ÿ–˜s-†žJÉÅ[N6–¬VútÂh’Ú²)ÃöÕ÷ìœÚ«Ù«‚_²G‡Ì‘Û³íÀÿñ~gZL÷#_»ÝV­V‘#,ŒCm­É”ž.ò¥PáBè(E£}æœñ‚åfgdñ‹\^aFÒE,‚«GLJȇJ›ÇL¢Ó“JeK°º$[œ•óÒ0\¬Ì⬞1k‹Ì(ÚH¥Uq¨é†&XSˆg&V¯N©E|» ªS§ž¼ñ‡?ê^ûÐ×§ÄÆ ŠÒaö_ŸÐ}U‰6ô³2¼E¬Qœh­»_Jœ¡C›fmLÌ)r¨ L<€ ‹ æ¯=) ›æÊÈŽ¼ñÿôÃRøRœU©4!Œfm¡[týìÞ¸”ãíã]Nl”½}öç®$øíä·úúcøÿ¦NxGœýÅGäÊÖl£ò-• PzŒ~R̰ùdË£ÙÈEšøÃòò³Žñu´ÉqÕ:\,Út$¨’©'º0’RôÃã‹Ë ù¶’§¶o}q…䦫 gDÚÝ(´»ùdÍZ@aÅb— 9>ãJQ*UMª(ª—eé„ —óøª-ÆÍB2Ä÷`¿» qS¶D(Ä6PâM‹¹V¡—}÷Þw¼âƒ«+Ä„@æÊrCŽÊa)—p5åŒÁVU§”7¢ ›[Ï72Ñm¤<âœý f‹ÏÒ¯òÃ28BbÃx='N¤[PQªëX–™™qâñ’J‚ƒÊEº8@4—Šd¾0$¼ÄÛÍ´ó.­KK¥*q`Š Yr}ƒY\ÛêbÜÒ-¡Â’òª&¤xÈZÔæ*aÖ‚–jl…*cí+ïÙ87µW³W¿d™#·gÚ'ÿât@2íL“€ªwÀaÉv–ÀÿIH=ÐÞ-†ÛÅÔ"ʳ\´…4ä»N4¥Z(RôÃx¶oP‹(ÍrÒ ÆUŒq —1bÕFKâm¶œÙ@Êa´ 0ºVñN˜ÿ)™õGùLϪ?Êf}QþS3êò™ŸT”Ìú£ü¦gÕ IÁ“¿ž%妨JÀO)·SQM‰Vê’p¢Éè…¶Ô³-6æzP€¼ð¤"Q„!bÊ’–ÀtBÛnU”!bÊ’–ÀtzÏ|!…IK©„f6ZSæ¤ ¤"€h)P J…<ðKX>U²AI)e"îqV-6,¤Ó4uBìIË£zì´9^x•qÇÅØV03bò»èk^¾ˆTÌÂ} Þ)ÆÂ…Äšúá¥9.ÓŠjöÊ 7D uË2¶F”€R=Ù bÅD推! J%FÈ¥üæñ+ïÙ87µW³W¿d™#·gÚ'ò¶³ŒÊ¤ƒôS»;±»;±»;±»;±»;±»;±»;±R”ô$SõZ±Ð¡XÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈ÕÙ݈Ð5°#ÌT=qƒ{U{5pKöHðù’;v}¢x&;OŸù+í¯ïÁ½ª½š¸%û$x|É»>Ñ<§áOŒœ”¸™Â«)i+4Bi”˜›šü¡â4È.IÚ!]T<ù;âd-‰¹W˜—3X™–¬)mŽtßL¡‰¶xà8—jÊFQZĹó­´óÜ_¶¹ _A5‡Ð[š[ 9‰zm U–ÕÐL.I¹iÉù†Òà“fÞ,uÄÎ 8=õK"‰J›k– @¶®Vg\'OM?9iòÊJZ¹’“HŸ™[3L®FÎ:UÖìº- «ýc‰¡©–SXöøÃvCˆéOíï¶¿¼cöªöjà—ì‘áó$vìûDðLvŸ…<3’S[I,©¥,U ®PbzK LI¶ã¶qÑ<§áOÈÆL¾Ô»y-º°‘ë€ë.!æÕ‘hUAàl¾¥yEYBPÚ–¥·‚`©³P¤^)x4>!꬗—‹EÙUýÛjq)qÊØA7ª™iú‡ *·‹YmWdPËò”µ¨! *Q ’B’oB–µ!"¥J4@RHRMàŽ uã’¤L/Ò‘Ê >1á^-ĹaVdÖ‡¢miEµYM£Jž¥­AH©R’“x#õÓ=’¼"QÂyù®'úG%)W=ÖÇŠ"ðz9gÁ\—óyþ¿ -µ… äRMAù2ßôÇÄðýµýã7µW³W¿d™#·gÚ'‚c´ü)ùŽYÔÇÆd­£Œ§^dIÉ33Å¥Ç-Î(æ/êlrm'¨“èŒÂçf/ŒœF1·JKèB€A$xÆ CïL¯76ÀX˜ZUe6¬Þ^¸“‘~va¹llï+Œ(-eQ ·Zæ“ÏÍ<×&S³È Z댣‚Ϫ±"ß‹¹3=kñÒ—9"£šy¹†Û[…¯+>±e ]KV(jžzÖúÖ0KaÅ5jyÒ2檃LìÂ$ÿ8!¢ò8Ä ±nͼ·ªïLL»ÆÝzCa$¸· ªÚ’OÒ²¥Öþˆ’Áó/º^Eg]´£˜[O'ÍmÅlF¥çô¹ Âèœzc ªUnÔé(ÆY©N/'$øB±S¨ ÌJ.ŠN[êRéÉZjgÑÓ ›i÷Ö@“—HUÍ»äÅGAªÝØŒ(Ó/¥“+d2W<¶l Û)!w×/Da¶T[r@&Û†yHE»!TKt!@ÔeË ™™[ÎÊ—ÚCf^l§["ÊšçåyòÄÄÂ&iƧTß”žZBRK%›oO_=cÿ׿÷¢fmùǸÓsN6%Ãå(@ !)±ÔPßÓm3ïLMO.“,©Ú§1ETGѲG4~Oͪneç¦^Å»ŒuJJ’R³›“˜_pÍ̾ü˸·C(¥I(Y¥2s ãÏ™†ªé«áSËU»P±Dz7<=:ìôÃÓoɸ§ÆfôØ­ уL«¯=-‰+q„‡hš¢r ù5øyÖ‹¥§dŠ“mD/2ê˜À²"ra™7Ø[ĉ¥ÚZÀEnµ„šˆXuÕ>„¼ë(~×)h Ž®xüŸ ¼úìâÎ9J³s™µ<ŸD?ƒÙ˜qLþpC8ÇæT’¦mÙÆP‘Êçë¤L·2ëkH_“Jfú)¨€ó6Ûî1ÃËBËJ²JlÞ!2Ž¿0¦%ð£IA3 ´¦kKU®_ÂLKÌx˜B.áµ`XÙM“Œ¾·¨óGåÎ;*ÊKHeå%V&¤ŠuÃËÌ?0û¸5çTYXS‰ ͔䉥™”.UÙJ€Â.>§ š…'’šz.¿$Kb–âÒ¤%UqÕ9Ì9É=ß®™ì•áiR¨&óJÕ*}0ÂeU5‰KTòDVÒ¾¯¢LÇ âèTùP´Ÿ­é‰‰yw@QRF}Ô<’¡Ò7LL2ÆLŒé Ñ-¤(Ù¯6JóÒ&‘1ÆÍZ)qÐÕºÛšŠd‹ç¦fY$’årÍÇ“á´Lbí¸\(By©J]HbOŒ–”ý·Ò„ÚPBÂGW< —^RóèuÙVUÉ]qæË× ¸‡1ÉRR–ºø%¿éõáûkûÆ0oj¯f® ~É2GnÏ´OÇiøSò1s,50Þ[ (zàJ®M…K'#%¡`z!¢l…–èœÁÕÑ Pa°¤¨¬q9O¦,¦Q ¶\)˜• “ÏJ‹êrÂ$ßm¹Ô…©Õc›’I4æË -Ë´‚‹E6P+—¾2ä£ ™NG”Ø+˜E´%vi6…hzaä¹.ÒÒö)ÛóôÇâ¬ñ\˜ŒX±ÝüR1å61–yVz+ ¸¦Ò§­…‘zk–©”J²‰•g<–ÀYô—”a‡Wœ¶Û &@•d!¥ãHlQ éó\Ì£ Fjl(ŽøÆ='.ó–lÛ[@štG2Œ¯øø±o¾2ä£ ™NG”Ø+˜V- E¥Z6E*z`M*U•M űé…Ì7*Ësgº–ÀR¼æBXl!£VÒ(ƒÕÑ–BXl!£VÒ(ƒÕÑ– ÒeLÑÊðl[ï…Ì¢Q„Ì/9ÐØ´}0üÛ'`*ÐN!4¯NH² ÉH2üBW‹•[-bSd«¦0”!!H JE…8‰6â—Œ+K@®Ÿ=ç¾JØmaí R/ÏÓ¹f—o-†=Q«µ¤Ææ ÿ­çë‡Rì³.¥ÛÜ @6üý0ÐvFYÀȲݶ’lÑùüµÎrsî¥ý7CjÅ¢ÓbÊ œÑÐ;„-Æ$ØeÅç-¶‚J¼ðQ+.Ô² ´RÒA=7~ºg²W„K ,­¤&„ŠuõÔJšB ‰È–P§¤ˆ-:š ó ¡ÔK†Â丩§­'¢õW×70ãs º›%4r½êqPÊèå¶³WŽ]rÖ„ÖÿL1aºbKw›«–aµ¨8§9o-² ÊB…ðÛ/VÚJ•ä\R(Ö—Ú‹¶ñI¦@žŠz"X%q{›å®§¦%ÿéÏõáûkûÆ0oj¯f® ~É2GnÏ´OÇiøSûj`t¶¯i£,µYUCúF¨¿æøcT_ó|1ª/ù¾Õüß j‹þo†5Eÿ7âÿ›áQÍðÆ¨¿æøcT_ó|1ª/ù¾eâÚÓä”/Ipýµýã7µW³W¿d™#·gÚ'‚c´ü)ÿ’¾ÚþñŒÚ«Ù«‚_²G‡Ì‘Û³íÁ1Ú~ð6¹¢²§Ua¦ZM¥¸z„MCÒK#ã3¨Å®ÏL4ïd-çlÏ&´¾¥wr9²ôÆtàö›{” u6k÷ÈC|fj^YÅ6°·“péóuÀš\Û –VG‹‚ÁôÂ]eĺڲ- Ã’(”Ÿ˜i!N¦M‹xºä¬`Ñ0¥6g€RmQ8°y×Sp†‹“Ò͇…¦í<‘ltŽ˜±18à ³nËŽ›=>hKna VÜP)SÉ×$6—æ`¸h€âÂm¨3H›arÃ+ÉpLceŸna¼–ÚXPõ~ÚûkûÆ0oj¯f® ~É2GnÏ´OÇiøSÁp´¬ª§“"µcXo>†—XUx2bRM™0†æÛ¢ÝUÿGÓêù!k+&¬½á6þÙ<ñùjÛr/ùgYÄ%-X ú=>ˆÀ뙑SÒ­àЕªï¸óV0"×)6•}ûm pâÑ\ŠÅ«,MQ3M¡É‚°™¶CG ¼$d6ü®ÃLလÁº7M›­ù²z#òbz~ASÓ2î8–Z¶²ž‚9㠸昜oJ¶™‰zñ~E,‘ô(iÝJP̵/ƒl¸¥¢ÓauUNK«]”à÷q!¤q^+$….¾«¥E:`y¼!‚’ǶÁkh´ï= ryÌ`þ,ÚÝKSÅ×m!EH©Èwš0”ʼnÖÃÖ+Æ¥S.oÍHýµö×÷Œ`ÞÕ^Í\ý’<>dŽÝŸhž ŽÓð§õÈTì¾9HA¶¤Ýè0ܼ»ie–Å„‹‡ìʆÁþ(ÖZÛ¬µ¶#YklF²ÖØe­±Ë[b5–¶Äk-mˆÖZÛ¬µ¶#YklE¤(-=#‡í¯ïÁ½ª½š¸%û$x|É»>Ñ<§áOëf™…Ë¡•r¾êóùãüÆc¹ ˜Ìw#áóŽä|1þc1܆<áB ² šx@µ<ø© ­†eK.Y PQË}}ß±¦¸„ H²‘Ê!¬g(%K¯Xwøþ©à.´¨ùêx~ÚþñŒÚ«Ù«‚_²G‡Ì‘Û³íÁ1Ú~ü…Ê[ýI¥ÛúVȬM)Û+ó“’­VB•N¨“¢Y©©›DfÂsã)Ö9 L·AÊR°±PiqD`‰ŒE?8,"ͼÎB•Ñ~lH̽"%å&׊JñÖ”}*)Ó§¢0t¼¢q·PéR]rÅH§î˜SÜKü53XÌãyV­X­ŠfÚ»/£ƒöÃî'‚aÇ^ž—Á„ä»-) úÅU»£”Mž+0émLXM4kUk—˜C³Œa & 1'‰I+êôßÕ]™Ò–Û…"ÈJ—˜zGBºáË.cF%±nµ­ëà}·ž ÂN­"UË#"ÉH4ýÒ•Ÿ0É¥®yù~8ÉSîKˇ£`Û'Ô!å¼î:ÃëmØZ’>²yt)î%þ™Ž,fq¼«V¬VÅ3m]—ÑUù¡rS) šZ’šÜ@>ÖXvE–8•%+.LYrð RŠ^/éæ150©™)Y“.ã¸îUÊ¥ šdôÃr&Xº3`½Sp8ºdôÂËi2(uM…½E“Ešd¨<ñ,Øâø©•YjÄÒT躢ÓG$`©Fyk·I¥°¥Q&ê¤Vœð§¸—øjf8±™Æò­Z±[͵v_DL(–¥ØylTíê)çŸÖ?(Û£b^]£aĺBÛòUäß]ÐÑÂņŒš¦Rî2Ú”ªŽc\"Tñkn ¸Ž/6—²s*™ ýqĤ¥4ò[¸\w”‚HÐÞh{£ô„K%°¥%S‰õÙE9]ðü¼œ’_Dº‚uǬrˆ‰5¸Žˆ›S²êzQ8El)õ=ÊM\²(žp*9ámþ‰Cü]UšHz¶¬Ô7Ñ^¿˜Löjðà¢9Kè¥iKåâ‡'øŽRzÿÞ$åå 18øe.,T6(TUN{’baÃ…\˜n„¡(ZN19 iu"iŸÑ•ÅiÍ¥§ Õ¢s®ó@ZÄ©–²Ê› yI<én—÷ÄÜ“R‰ÅJ©ÇÖí3“[…2ĸ͈— ™E‘p+³n½Wz+‰(ã“ Â+”–j¡6¯=ÃlÌKbã\UጴJ-¥@ÒðnÙbP&ZÂæSvJóPÆäçPçbpýµýã7µW³W¿d™#·gÚ'‚c´ü)ùnBVd>†ñ%Ж–ۉ˺“q‡J(ò/:äóM¸—Ê«^J»š%L¤àfi‚ï/VÈqV”›ÉZRþh ˜x>ï:Ò‹º0{|x*REÒãMbyT²¡BªóZèŒ'&—V8J©«+ ¾•Ur ä¤JLËL&^b^Õ ãB²ÝQÐ9áLñßðÕLq“-ŠåZµn–ë›jüžž #Û¸žØüà‘xY[AŽ]š^«Ïæ‰7%§Y–nUVÐ…Ë•ßd§-¡Ì¨ãÍáE”Ùi·eJñ_XŽX¼Ä×f`´êÒ«Zª¯«ÕçÉ• *Å7QZÓ?‚GåædÂÃofçV·W®02e§ÛØ5²Ø[ŒZ ªlä´)*uþ310î5ÅÙ²+@.`!LñßðÕLq“-ŠåZµn–ë›jüž˜œ8Ìg|¿’–jÞ¨mn̵ÅÛu¥<_ʦÉu»'Da^˜S2/O8âØS\¥‹u¹U¹&‹LêQ+Çí€Ï-GnÉUoŽˆXfq™¦’› ,(õ¨×úã²Si•yM†œ5ŒJ€$‹ª/=ñ„›DúYDøÓˆªë`&ã\—dóÃós©a¹…¼ÓŒÛåRj)p13-ÓMñ«V2y@ºeê¤,JÏ¥¹5º^,­›J5P ®BkÍÏó žÍ^¢‹Õ­T¬½^xYÉPŸï× %©y§^C˜ÖÞ•-Õ¥ãP­j}pô¶Ç0•”¨²ÒQrÁÈ—Tkwš&_‘žL°™!N¶ã8ÎP´›Å.§$a6ÚžK áåjÅ¥ÖÈMƹ.ÉN˜ž™ÆZãJJ¬Ó6‰¤96â‚Û\¯S%9Ek eAJ˜jhÍ30¦ëNMš(W•ɯDN²¹ÓÇfKÆi-ÒÊ“fÍ\œž˜͹FÓ-ˆKnîU|ÉHôC½Š|UÃö×÷Œ`ÞÕ^Í\ý’<>dŽÝŸhž ŽÓð§õ¯-”¶â^6Š\QM )ÐcW—ÿ¸WÁ¼¿ý¾ÕåÿîðF¯/ÿp¯‚eM0€´‘hˆL³“l72¼ÖTà >ˆynØ–™T°¶¼â DA6Ášè¾è—–›˜m…¼ §:jcŠq¦xÖ\F0[î‚ìÃͰÐÊ·T"U·'X ™J”‡q©±A×_î‘Å8Ó‰)¦ÐÚÛ*½ŸT«¾A™eü%2ûoL¬)J]´“Ýý"q)J,¬9îŒëüy–N eŠÊË¥Ò… ÚJ’P¢2Žëâa¦™[#b[.£”MUDÝÏÕ2¢é’)±Këc%#+‰Ñ ȸ’qw%^N•ëÎõÆ p¦m‰yuÍ ñfBÖÝ]ä J®²9‡Ã_›Û`qidº¤(T©% #(î¾£/)†ðjBæQ~yäžjÒ—C(C§“¢Xt}+7$ˆmêμ×ZTḭ̀dZ¶Š$rG^ZõsĚʜ–œHje@rRXpWÎ-LaãO „-‰pš N´Íš‘jãk—Ôc 8Âp”ëî!–Ës2Á«`9Zšóß3VrVM,6‚Q,BÔâ\´’G*Í:9âLºÊÖ–ð’J]âå¥-3”žkîŒ/ –&1üpÌòZ¹Æñ‰W%DY&œÑ14—0ƒŽ)´¶£9.V—&¼ñ†›­‘Åš•• K¼‘ÊRÊMõ¯87]*I8ûí—YvV­ÐTæ¢GNQ’œ˜—uùeͼ–ŃYrV| á]<ÞjÂY”DÂå—0âÞDÌ­Õm¤¹ÏÊóåŒ8ZyÆ¡e–Ë…6€¥ÂþhrCˆ½ÇÕ„xÀšÅr,ã­Û·“2êeæ‰e¨Ì¡l½mµË1Ž)6H½47P˜ÀóÓr®ÙlÌ!x‰uV‡1E±R+O\9!Ä^ãêÂ<`Mb¹qÖíÛÉ™u2óFCL-/;„ñHH qÐnµqä4LM%Ì ãŠm-¨ÎK†EÕ¥Á ¯<~R´äƒÓOÎ&Ôº›d®ÐÅy¨ O¦0›6&±iâìËJ…yõ,¤Þ n¨7]t5*ã¯Ì¶-VŠšY R…Yãžz³¯5Ä–•;3,­¢‰‘×–½\ð—B‹â*F2—Vغ0¢d—š‘]f^STNb‚¨¿¥hžh’iMfªB“CZÃ’Eî>¬#ÆÖ+‘gnݼ™—S/4a$⪰»N$X7§×+ÍqîŒ;a‡Œâ–(ƒÊ¢¯§š?+UÅ”¥¾ÈKfÆ“ÈótßE3§†§ŠqIdºœX$”(¤Ö¼ã,)¶R·ÖÞ)v~š¬­*>›¢}åËÏ7+ÅåÂL²­ZK«UÉ"ú]u!§Cå™yà¼cRÁ8Þ.–±jð£ÑÍn¶¹Å㜴£8Èh“@*Ÿ–×d¿Æ tàßÎ’ì1ŒÕé»8ˆc8‰oÉÖKªºÊTØ,€®sÏÐ3 ʲÄá•mÉG˜“y Ù½´ú"âr*T”Ó‰z]-)™iÜK”©Fú-!C•Ót4™L¥¥5)âéx£Ê+é(ßßJSa*–ĺYR|’±…\äry\ÝŸœaÉfaÙt­6…¢“QSO£ÓÏ>aæÒš.mçP8¢â ë…+‰Í)þ32¶Þ“˜B”­u¾¦„ºrD£3…¹ÅêôÂT)Œºêw÷D¹"ÙtpÆ$â.þoD;اÅ\?mxÆ íUìÕÁ/Ù#ÃæHíÙö‰à˜í? ~NXG”bjÆn9°»=ð–eÙC §#m¦ÊG£ö£oY%%È­+Otdwt¯tdwt¯tdwt¯tdwt¯tcqjÆÒͼB«NŒ‘‘ÝҽёÝҽёÝҽёÝҽёÝҽёÝÒ½ÐãÔ!!ЧO¿‡í¯ïÁ½ª½š¸%û$x|É»>Ñ<§áOÈÄÌ©ô.¡7Jº IÈ ¡ŒCAÛX¬u\l¢ëE9 üÝ Z‘Ra3!‡XBïF:ÍTš\n&%¥TŒ˜ )#'&•ñ†¦š Kn €¼¼ ]…9daOP„ªÉMEh¬£äÍˤ(.X¤,œ†¢·p'•°Vö!Ä竪œ×pË…{¡”Ùé¡?Óå70­²±Tª”¯ ÄÓ€–ØmN('-¬%C!‡$¨¬jKÄóP•Â`¼ú¬6Ò¹M–£D¤T˜LÈaÖ»Ñ޳U&—‰á­ p©im ·KJQ4ø}JœZeìãÔœ_’$dòï7Œ•‡›Å-ºrÔ.UÜß?ûkûÆ0oj¯f® ~É2GnÏ´OÇiøSò0_ÿ‘cïCˆ›h>ØO!YºE_0á)™VåNo¼ Éq²º›WÛMK0YyÑ„ÅO•Z4—\hcòxN´Ó8%R¥nš4_)E ù²[Ë;js‹Û­qU2õz©“ÿ,þkÄ»k¢ÆÔYµÍ’Ý+s c(ó“2Ö«\[„âMýiO Æ”¡Åà™¥Ñ^‡ PþD¢LÓ)}±‚šä8*œã}"AxiVÛ89®*§kzê«v3®%%MØéÝ|é„O*ÐüóLGF`=Ô˜Œ$‰éÙIÉ‹™aJRQ`^Ò­ŠV² Æüà«sX¶¸ºˆ¡+Å ïV™:¢]Ù®'„0ŠÖÀ[ ÖYU Ýú\Üñœi¥Ëµ†œÆ)ä‚”¤×-y²Dâ^‘’d¥En°UF±b……–¹%Å®O M­æF)`‰–³EQû¿K¾øÁ-9˜©äT—’¨Â!™dHñä$q‘V«!U#¢¼Ù*¨š›miq+ã‰AB1VŒ² 7YZÎXf}J ±?;Æ&ëei Ù!»@ɹ¾x™âó²órêr©L£vnáPžR¼ñŠK ¸ûî…¬ÒÑ¢úSôy¹£6PËm"`' %°.Î6œÖ©–i‹ðB°³|\'0ŒW('÷mW«,a&&d°b‘'Ž–$¡ì´ÐÚµV?(?9,/DRîQF(fã·Zzbëx¿%ŽÅåÅZN3ùkXàæØzOŠË$€|€«ªÝôFSN¸Ã²éâ³R WÀ•bË#–«e"ªæ‘ f]8-©4K[aÕ5Œ 6•T²¤Þæ¾øeS >]J׌´lV±ù<'Ziœ©R·M/”¢…|Ù-åŒ Ûè.ÉÚœ,¶õöš´,T¢=QƒÒø³ƒÀ f„YU›_»jÌ [ ½‚ÿ;2™[I´‹$&ØE~kÕ•JbQ†‡P„–Û ¢qmy«”©©zP]—èFc#‹´©iwC(91ª U‘O£–—˜™\¤üœÃ% bE’Ûi7ò³Õ|~V4û·f´ÊW"ÍÝ7ƒtñdŽÝŸhž ŽÓð§õÂÌìÌ ¥—)»ÁõCRì¦ÃM$! èößÛ_Þ1ƒ{U{5pKöHðù’;v}¢x&;OŸ‘.L»D–ÓRP:#Vg`F¬ÎÀY³;5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fvjÌìՙث3°#Vg`F¬ÎÀY³;5fvjÌì˜"] Cj¡¯ûkûÆ0oj¯f® ~É2GnÏ´OÇiøSò%»4ø~×™ìÕáúÿ¶¿¼cöªöjà—ì‘áó$vìûDðLvŸ…?"[³O‡íyžÍ^¯ûkûÆ0oj¯f®ÿÄ+!1AQÁðaqñ ‘0@P¡±Ñ`áÿÚ?!pNÏwÕ œ²m!I¸³øOQp©+ñª!°U¯U´é¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äé¼N›Äf`@ÄÌE}À7‰Óx7‰Óx7‰Óx7ˆ[þ`aŸ ë:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñ:o¦ñäT–An 44…T úäÀô­íŒèÙðœN‰+hû@óJ)ySº-!Ð*#Àp Î Œ†®ŠV€¤C°ÀÀŒ2º€@9h$!/Ã:#¼3Q ´‡X;ë¡£k'\KTÌ€ü@6¢fŒ§o05U hˆÈƒ#J€ù‡ £!Bw…5®Aå4sJPX ^Dœí þÀ ©AäÀ&hÄX×1æ$Ø«Ds´3p•¿R»ÄüB˃n„id §Z¾u„Š øÁo>ÌBØ p ^jÌ™D™ÍK5ʧ¿¶×¯iÝ´#5 MÐ/5(’¼›¨8i¾XÝ!âý9)!cÂÿâU˜q ÓFŸˆI¦6@!½fªÓÒ<æ«eZ-/¼oäD3ù?†fÕ8d ÷xû"¯±µ²e¡Ý*Âu>‚¨uþBn)`ˆr#±H”ûèü… z'²‘9lQÞËüz vëBÙ‹ê h”aý!OK]4Êmü‘€¤w´!æ‰Áè÷O†† +4,é÷E,—a)ör?Òpz·³‚€%'¦]^R=®[ÍD¶ó¼¶.Ñ?ØKœÃAû9’± ìá|²-½œTlXÖh^kmŸ&c­Oø÷Pˆ'À H03ˆaþ…Ô";"Ëû™o¹Hö¸Dà$ÄÆ'ñ® HÑSdá1æ(5I…pÈÚÒ`ó2ÓÁ‡Ùα­Ü58vƒÔ¤r¦óyÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\ÎåÌî\Å NsDŠlkÐ$8ŒXÔÔ¹¦GØô7€¡¡Oî˜÷è¼÷9Kã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã °/·ÿ Æ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1ŒcÆ1™wï?ŸŸŸŸŸŸŸŸŸþßý·ÿCßíý‘Ih³†ðá®Êï\,à@GØ&A´Ò kLÀ,X'à¢ê‹ÿ'Iâtž'Iâtž'Iâtž'Iâtž'Iâtž'Iâtž'Iâtž'Iâtž'Iâtž'Iâtž'Iâ $ÿÊ.Žº‹BŽgIâtž'Iâtž'Iâtž'Iâ”ì·`0¥“ËÅ( Ež{„N“Äéhìx)ýŠÒL‘¦.‹ÑFoEïöþÈ€“€!ñ¸ÜtC¾aw¸ÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÏÂ!À䆎ƒr¬&c'óÄ8,Ä^ðlEƒEìIb‘ÄÃÝ#=é‡÷áôäH}£xQðÛÈ?yî½!å“:çØ³#ÄZHX@[)iDû€$³ @€T©´Æ‡ùõþЏ”âršÐ\]ƒ‡÷ E‰2`¸»î*™”›s¸ÍxÄ4<‡÷Q–¢Sû¡±$°¨O¶|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|n|np)X vOlé eP…ç)Vdvº@x ¬Áç­ž›GÛÊÆ¤¶Cc’yÑ~c Ú˜½>ÿoþ&ùÑC0Î+ô€8 d‘ ŽHíêåïöþÒøãP2^iÞ¸€ $ÿÎm‹ aö#Òa® kbNõÄï\NõÄþór˜LíüÎßÌ`,ÿ”S½q;×½q;×½qÀ@H@*ŽBÑ»€Fp.WÝ9Þ¸ë‰Þ¸ë‰Þ¸ë‰Þ¸„§H<‹k°D _"hÚ)*„5Pƒ(k)݉Càë‰Þ¸ë‰Þ¸ë‰Þ¸—ÈL íæƒ¬èT »§ýkû…mVûUÄNàØüNõÄï\NõÄï\D¡ŸÄ@?gü[‡Ê¶!Tï\NõÄ)M›››@Ÿ…=þ× ˆ´×!ñaaab’ù†$ÝO½q;×½q;×½q;×½q;×½q8dõ²÷ûiú¿IoöA¼ªªËoPµ5l¤ˆ/þN¨èMKÙi¬'ôGwvLV&gMà‚EoâHoНqÿ+@ h@P‘*%æ¿$~…§…ЈìºLöƒ”Â*€–ôÿ pJdXÉÀ‰µµ$Ö–u)’ÚÛÆ°¤ ”õPñ á‹ ³à‚QnƒYbí徯¾ºŽ°T¬íÃAb¶Z\(P¢ÉŸ`jVfP)ÂŒ ‡ÒE&e²>ÀBWÌÿö…¿Ùå×%N(5×ú†ºÝhìNö‡q—Ì&†Y,ˆÅê"íŸqôOu³õOåïöþÒÿõ~—g¾oèeY³Ä×½H‰ÔÌ!eEùÏþŒ(-DÍš& Æ6Å[:Êy{Eo Ï e0‚Ò…!Ì…lI³¸”6×Ô"k€FDf`º 1dœgBtß×D€˜S!_ýŽxŽu䯂Ô00áÞÏ„0 1‚>Á£iˆe¯a°ÿGúúÏŠÊŠ-L>tp¡Üá˺oÚÍÄ'õû¤Ñî°€œ« €(Þ¾¥BˆDÂ\—MŸc< u §×!QÊ6(fÿ¹¨¨·ò‚Fh'}#C´Xµdd[Ö¾‰î¶~©ü½þßÚ_þ¯ÒgPh£††ÙàOxqÁ§Æ Hh\ðOÿžÄ” à@¶c¸ú(§Êbç$¿iñ°ÿóa)|}¡pH{¦"áVä˜Z£bnFcÞ–DÁex}`¬,`-±Gid\Ç*àòíÜöƒ¢DY ˆáPëîÖû>µ3Rñ?Ò €Ø0?IÚÜ/¢…mörFÕ#:.@@7OübÁBð½üE @"˜tloo€J#‰éôOu³õOåïöþÒÿõ~ ˆ:Ävö~¦0&%‰,“¹0І„è¦>“0цJw$©©B[(€ß°1#1+‚ÜÆ®ƒÇ×QN“4a7ÝÂnÿ÷:ß3[ÙddS%e}eÒÒ “ ­v!ƒn&1ãéÌR5¾û„¢"Í ²h/xŠŒ†ßé`…2fªŒ@äó0²I¸-~²€ôžëgêŸËßíý¥ÿêäRBá5XíÖ°ª «" XäJxT¦â‚a-¥æ’ЫvÄиT¦â‚a-¥æ¬‹ ³˜I‹Í`àÈØ‚!›Ñ#oRÓè&PD²…$^ pTèœB$d:|‘Eô7÷…à¬RD+Rw‰“.9C” Š ‚úŽl\&¢‹½ºÖ ?B†^ˆ›_ýˆ1J‹  œ:›Aꡤ§¹"[¢#4©›r5,2ƒ8‚Ú/Ds¦Zd ˆ&‹¼úŸ!Ãà –NFQqÉÂXä.F„Þ º:dB2Âûsxš›Bò$ƒh¸š톆Á±–—6‰ [Ñꮆ&6HÇäÆE)2'qBêÚA¢ÛlÞ *6FÈ¢e=NF§ ’›¡Š…o쬼* \3…!¥ÉGöXG2e-WÎ$â=Ь¢ÁöDZ ‚B kè5Žˆ€™¢àTÓMNLè¦Wé°R Czg}K1®œÑ+¹6öŠÐ— f[iY:T+“W \Z©ÌcY‰a„¨½d?\Ô=ƒzM~»ˆh…ø°<Š€¥s¯L*üÄh¢¬+ÌN"À­EífÊX$)ñ·'†¯Iî¶~©ü½þßÚ_þ®X¤¾`ê>ïXtû26È• T$‘#öGò^@ƒëmA¢I0?d“9 €2aÚb±õ?дŒTPFÅ`¡qD˜“6d‰ü!€–\†ìA,4€ 5• 3$@ :zâÒúŽ£îõ‡=–Ó4 F¶¯>e.B Ô7jäi,\ 8€Œ,ô$"ý0õÄ‹ɼÀö±V‚0ãÖ¦õ–Ĺ%–$„˜Áé.G‡‡fDÁ!pM&’ciCap‚û ¸u£ï|-—“*}/BCTòbаQüxKm¾õh¥…q*:Ô„-ië­b­Q †Ó*+Ò{­Ÿª/·ö—Ý®¢È@åH @ @ @ @ @ @ @Ÿ0ãb;&;&;&;&;&;&;&;&;&¢Ð¸$݈úD @¥€Éƒ;úåïöþÒû2»iè~¾Ý»víØ÷Ê[,FiÞ{kÿ'ÈÿäùüŸ#ÿ“äò|þO‘ÿÉò?ù+ÙŠä¿Æ/+qá«·nÝ»˜C¹0z0ûú.Ý»víÛ·oïÁÿ—¿ÛûKéö«HÚMóZà§È  aÆ©Dñ081PŸv6ŠÑeAƒbQÁ'2@´² ëÜN½ÄëÜ@M9({¨´¼@—Ž"æ S™S‰i`a4cÒ';Ö¢Æ? `e >HSá…<h ’t4Š Ô ~ŸyÒ=9Õ2˜ÌfLýŠ>¾OâÓ/·ö—×übʀä‘‚uà¿´XÙ †+EÒ'Ý>Î ƒ1Pòf 5‰ = éFÂjÉ:bÓ’àÌT¼˜TûJ"–ˆ§Ü*o5#‹à­ü3îœÅB›Ó©•…p‚óè€ ¦ío(…¹òIý¡¢2û1„½š¯d5IÁ³€éß “ ü)‚*eg0»LKš¹þ¨.¼8‘°°ò¡{^@Dfð¸S]€â,€`Y,ZA8 k/m5‹V©! ºPÄhö½ûD™ò:9[cÀ´*`§¦Ò­Bâw8FR`¦x-)zý‚+XHÎŒQƒ/ïïˆ@jž‘ÈÚ. œõ8„ û%cN⊙>Ë+É„—šóµL~!·þ/2÷ûi}…èý´“^ýÁ@(AQÀ‚Ÿˆ@°?)d ’s¡G ~!6ŠFˆ lØAŠ$<ÙòNðeb~‡½ï{ÞqÑÌUÏõ#ž Ô?r) !,ÿ¨×Aj™@.X¾±™,‹5äÌÀ;IØcCËx}II f„.K  B/`vä“¡„‚ `ˆiIÙÀ™¨ Á¥ÝÅ|CM!e¨gH ð9OÙˆS ‚Й6–[a$Pú³É‚†6V0"ÉäŒ —¿ÛûKõ,æÅ應Øx‡‰Øx‡‰Øx‡ˆ4À€>Ãô/ 4Áýçaâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv'aâv!@…y?ä8Ù%+ØÐõËßíÿÏ_?¨eïöþÚøÈä‚SµcûÚã̸$›(ÞVâ gþGûÑ$v ±‘Ч¬¯C‡àR æeA‡=¼Õ·D@æ/"ž0n4 Óƒ®˜)‘(PñSC ÌÐmÌoÒCY/¥Çé›^kç³ú†^ÿoí¯Œ‡þH%;T?½ã-‡,¡Îpx…¯!8Œ®€9ñvAÍvÆî5PÇPoÑy–XvÈ €Ñ‘50qP=h¬ÃƒžÁðR%fk> X¤ëI|œÁ¾@‘ tÓÍéc0Ö e¿Ûùìþ¡—¿Ûÿ޾2–ïÀq/£èþ¥jÕ«V­ZµjÕÒ0bÝý½sú†^ÿoî/në$öe/vB½±€E4Y  Ä"óé-¸¬nWƒ§Ðª3x¸b‹?E1 aFPÛô%oP_ÔNÒX ’trEƒn!;I`2IÐAÉ ¸ôZ ²0H°òb½rʧ’X#hp€ao¹£^>‚v’Àd“ ƒ’,#qúÝ.èÂ@Éh‚À‹Ñ­ÂîI€ùäýàŠˆbAC`Ÿ@³æ‚ö}!S3ú†^ÿoî/ý@þ}ªÙZ‚À1lR Ÿd²# (0O²Ê;˜7ûc³Áš r Y0Í:¥[ ²öÃNСœèP¦Áª„þÌ0‘¡BŒ6kì 0…ˆ±1˜ ½ ×Hoˆ×!Q!›Åâ<¢0ìiŽB=­šò!î"Šm’ Þ°óˆ`,˜TMÊ•°/Dràl¡Ã‹Y>D;îS ØÖ&F^üg⤱b@#0XþÐh´’$›,j`4g~‰BË0'‚6BÀ$ÞHóe‘x "Ü'Ñ/(A¬Y.`D”M(A¬Y.1 YÃ4ãI´µWŽ l ­Üh¼at yÅy²“½ÝåÄ ™ÆÆG` ?(Y¸¤§}h“)˳0ô`YÔ  HÃ.ʨ”ÒµV]†ÎìD]BFX7\éÒ/Á-r‰,Pô '0&Ä6’‚…F°ÊëTá’o\f’ Ô€¼DzB;ÐA‚ £-%gAá_­Òî€)w0Z…½¦HË«5%ˆ%Úµ¨ –¹bAO$ÄÒ>eƒ/ÄeCD8=¦IêcYbVækì>e½ùÒ ì³,E” J“ZRqÍܳ¡À`‡uìFh“°sêÏê{ý¿¸¾5»¬“Ý?Žf¤ðªÈÄÆÕ m›–t,YÕÆýó$î Û$ï œ€2ÕUPîƒmP¦ÎñIr¦0Œ8P޳XM›óÁ(\h^ÂÆÃmUf‚ILdÉ*STLÑ£ÏÜ%YŸØvÈ Ä¦qJ×gyýdðô…C#ËJê¬F5æ 0K~.).TƇ€R/g$²Nó3ÙO°®Zà*1%51Ô‹˜’šêE̹,—âãÈ0~Z³ PƱ¦šŠà@ð@AÐíçHè½Ðà4@î°EÚ2¬2fÛÅ¢`1н„·u’{ „˜Ê4 O4"ã©"F ì D¤) 4Pl $h×â^WTLÉ“@p „|oñ@.aÉ‘’šãõº]Ð GÎ>ûÖ@¬c}`Ž©²æE,î1(É!À°X±b„,z¯üDªÅ5ˆè-. U‡! n ½O'¬•w^cq•`$Dƒ&Æ#Å+´ÅƒW´ôØ; ÁmÔ³]¸]~}YýC/·ÿ|dM+ÝSÿ£>*ЇÅCâ¡ñPø¨|T>*Š€û ¿EëëŸÔ2÷ûóׯÏê{ý¿¶¾7´õ€_Åù‰NíÖ¦¬3¨Þ/+© “Ù8V“Q+v㹨0—ÝmZ&1 ÿaÔ >bÆðEBJÊ4 ýà«Ê´² Ù¼ „®,4Ðî'“K¸U'V°>1ƒ ·ŽÓ6˜ÙöTt±–ê\É=ŸóLþ¡—¿Ûûkã¡öˆ~H„~ëÌ$h\׃ùý€þ î¼Ôö)UMÿõ@ MÇ;~ƒS1Ȇ‡:TGl´å”æ:V1/T|0 Õˆ8FÖ| dï$;Ü_°§ÊŸPˆà•°¸Ù‘t‡‘h €iwŠ2v‹?.0ÒCªŒ µŠ¹'’ƒzÿ5ŸÔ2÷û‚¾3gWYL{Êñ“Àþ0ÌyD¯Ô’I$’I$’I<åÅ\þ¡—¿Ûü ñ€%<š±C³éhÑ£@ˆe3XäÎÐ+»¼B*µþ†2d¬¥A`!}$¢h¢Æ6GqÇqÇ"Áª/ðã×?¨eïöþâøÅ—J#3™<Xæ’m,X $’^t,6]Ò—àÀb¡H¼Â&AÔ=ãлOØi˜»ËLiGbk ‡öc@U°pž™wˆÂ°cRÚ3[_ à2,É`UÅFpiXˆ†¢ÃÐS’vA?¥ÚÈ<XŸú¥n¶JH×Ñž8‚,•…æÐ/°§f²å‘DµéQaX1©m­¬0 ¤%ß7ÈF v#$À«• ‘i Ú%๠¡š°´½X­(±#@-G™9Ø`kÁmÃ1"A  v4hcÀ6!.0¬Ô¶ŒÖÖÐð˜[9ò ÌÏ?²Fa6;€†s ±H”õ\âÝ‘F0x(ÝC¤ã†ÙÁ¯tÛŠ˜:œ¡ª•Èt–PQiy˜LpH›аVRè\2‹#à(0ýŽ ¸˜Â“b7* ] HcïŒþwOy™¹¢°É E;„GÞ  F„б&Ã$ (áTWǃkÈJ¨FÛ€+›‚@ÅéÐb°ÒÑÜ™²c ˆ¢ïŠì¤7°'áÕÂ,&šêÍúµŸÔ2÷ûq|gÛÊ>B­–]k£-Õù•¸RÍøpÑ„ HK1Ò9. Àb—¹„àLçR„,€ bø!‚,¨\’&C€Ø;&ÁF5-ã´ú?"䩌¬šqÉ×ZÂe-3 ‘¢˜6¦«{lñLðÙlä­ s#WK”:=}  ù@{[×=×®“s*Ž\kPÒ€ÕælcRÞ1[Hþ˜: Wåæ,³Aq6É¡o(©DìíãÀ1¼%ÕF¨F¢‘³Ì@§DB$o09»F¤Šo¬Ï}ïfé7¬Ø(Æ¥¼b¶‘½'þb·‡§£¶ª½¨‚ Ô'|“‡»>%¾ô…I›>Ù!ÓuÃldß²2°Ø«‚À0,Êêù ƒ’ÊB,b`?ù,å¹å­#L{\¨‚²_±`;Vvãå¾ÍzŸð xˆc‡$lYT'¢ƒ›y ¼DG"d\¸@-6@Ø#! V -HC¯j’éæí§¤6%78’ü¤ yP"3³ lÝ@/è݈B$lÜ:pr›²W(?PÙýC/·øãöJPp@}>|ùòNîÑ‚ª“ý…4eY$°V@yiü6z÷"rYp6Îy˜"ãô”hÑ£F4c |àŠ$Ñõgõ ½þßü}ñ‡Ør@d“{ÏêjÕ«V­ZµjÕ¨Y‡5±üzçõ ½þßÜ_ê¼Õ nb"#,DH”KPHBcpoÜpð`4žq+¤²² ǤD„t×6!k&¨Á¼Ùë„lg—˜;â VÂ"®%Ù£º´j,iübÅX”:Y£š:›¹^½÷ˆsQmO6pQüOÏ%÷Ð)Š63ìZ ò+1i¸jŒ!$b$dhöÔx2ܲ¹bV„qÈÜø x¶ŒiE‰`ñ ÝÃt¢ÁAAU`4ve¡ìïË13ÎpŒ³ a ¯š¾†eĄƞ·ˆ‹"Ó &ëta@ ˜ÝÜ¡:?sSG@¢ËQ`-KhD&7w8Nž× à^ÑU`4ve f$t ìhÅ(áîÂ"Ïâ(Œ2:6ÅŒ bŒû¨¸Àh˜Š°3?­PˆÑ…„‰ LnîXºÙ¶4Û—×i_@ V(º¾¦Ã€! l‚+ÌþÀ”œ~Òä Ü>ðh"x°Öx0†½{Œº ÉdE~†2<›¥’°ßÄâÍ®2ÛÑ„s%Ð`:l¯[ð#YD„ ê%“÷X¦t­Äy!˜`±}‚‘9ŒÃt]TS…gRE£ÍQšz“‹S 4aŠ JHˆ!Š6>ñýóú†^ÿoî/Œ%Ê4áDrc iÁîhàj©@ ˜l‘4ˆ -Ú;”,0åÃUE@*ExÇ… DRŒepŸÊ:›¦!dy!& h5B™0“N -;Ñ.š½€Dmöÿ³…6¬Q ýå5à©°XU@ b±–« UQÚ4|°‚ 2æÚŠ÷ÖŽÞ#ŽÉt•RšÜ"&ÄX¢ß ˆLÙÈI ÁrÃPÂI «cÕÜY¿&ƒ«ÊŠt!IÚ ºò UÝé½@ò² ¼t­pèâ¼b… "%opE@8MÒt€k€ÊIDØ2àíJ1›QHÐqݳw‡cK Ô%ÀS!í°È Öc4¥².‹HB¢A¶`Ìþ' AÂ2—îsú†^ÿoðWÆ_m,¹({¡‰°©i ?ù¼þ¡—¿Ûû‹ã³”ñ;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½q;×½qY€ xý|þ¡—¿Ûû‹ãwû?—ï÷~¾PËßíýÅñ»ýŸË÷û¿_?¨eÿÚ N0à 0à 0à 0à 0à 0à 1D4Q  0à 0à 0à 0ÃWþûï¾û¬²Ë,²Ë,²Ë,²Ë,²J$‚C,²Ë,²Ë,²ûï¾ûç„8C‚9²§4qì6œ$h™,à 0à 0à 0à 0à Í$n#»K8³Ï ÷ñÃ,qÏLóË\²Ç|óÏ<óÏ<óÏ<óÏ<ó̲N8óÿÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<óÿ<óÏ<ó͘AA¯8ãÑ4ÓIPAAAQQ8³ÏüóÏ<óÏ+Ç 0à 0à 3È(¢AM(0à ¼óÏ?ê0qB/?óÏ<óÏ<¢|¹8ÊW8ÄZÃÐã fðŒ2‰Ÿ uà 0ÀüÿÏ<óÏ<ò…õ1o<ߥÿ<¶¼òð}òÎSô5cˆ/|óÏóÿ<óÏ<óÊ¿¼÷]ýZf|òÈ]ëÊnw]A=pRýóÏ<ÏüóÏ<óÏ(pó,þç¼×ìÿ׿9ïì¹ßß}Ï_=óLóÿÿü??óÏ<óÏ< 2ƒMþ±ËRÄ^°Ã$2à 0à 0à 0à 0à 0üÿÏ<óÏ<ò‡3îÞ#Š;Û<)$iÙ 0à 0à 0à 0à 0Ãóÿ<óÏ<óÊ7ÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÏüóÏ<óÏ(_†qEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü??óÏ<óÏ<¡ÿÿoôÿßÿÿ_ÿ×^?÷þüÿÿÿÿü 8óÏ3ðüÿÏ<óÏ<ò…ÿ,oßíƒÿ=ú9kßÿÿÿÿÔS´ßÃóÿ<óÏ<óÊÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7ß}÷ß?ÏüóÏ<óÏ(\µf'¶_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü??óÏ<óÏ<¡ÿÿÿÿƒ7ÿÿÿÿÿÿÿÿÿÿÿÿÿú=óÏ<óðüÿÏ<óÏ<ò…ÿO‡ã£œ‹ùâø"¯½T·ÿÿÿÿÿëûTÁÿÃóÿ<óÏ<óÊÿÿÿþÿ<ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿý,óÏ<ÿÏüóÏ<óÏ(_ó¨ Чðï‰õ1€€ôö©Á½ÿþâ·/ã»ü??óÏ<óÏ<¡àó-}ÿý5ãÿùÿœ|Ó½ÿÿÿÿÿÿÏ<ãÏ?ðüÿÏ<óÏ<ò…ÿ´×ü±çn9Ïí|ë­¹ÇÞ½Ï?ÿÿÿÿÿÿÿÿÃóÿ<óÏ<óÊüs 0à 0à 0à 0à 0à 0à /ÿÿÿÿÿÏüóÏ<óÏ ÷<óÏ<óÏ<óÏ<óÏ<óÏ<óÏ<òÿÿÿÿü??ÿÄ*!1AQ¡ðaq‘±ÁÑá0ñ @PÿÚ?¢ÃGþ@‚ÈJ ëTç/_²·wñþ"° ÇqÇqÇqÇqÇqÇqÇqü8ãŽ8ãŽ8ãŽ8ãŽ?éCüï…ˆ+ÄïâG¥KÖ®ó|4rõùÀf¾•ð¾QEQEQEQEQEQEQEQEýŸú'éHš{‚àÞøØÆÆ61±ŒlccØÆÆ%8â´¬ïÆDìÆû;òÚ%E®•.” 믈ˆ·n@ð¦$ù«±Ê…ÆtʶÁ$›ñP‰Ð_i+¬ °}ë·@6ÆÆ61±ŒlccØÆÆ60‡hÄÅ]mŒiÀ Þ¾Òš‚Ù€Õ³ÜÒ½Í+ÜÒ½Í+ÜÒ½Í+ÜÒ½Í+ÜÒ½Í+ÜÒ½Æü{—æ€÷4¸HÛ“ÜǸÇÓÜ$·'¹©ûfOp™·'¹¥{šW¹¥{…l”€’M³ñSø©üTþ*AÊ´”Š$l÷5¯sg/¹­{›y}Ä7u³ßÁúD1Â~Mè i1…°Ÿ$!“´w":BKwbаì†"RÕ1 ø©T›Àï­MáøÎVØ©W,?ÎWÒvç™ó*~åø{Ï)PU¼ËVw§èX¤CðAº,p;þ Tm#¤ZB¹ÚKýŠ-a,nºï‘$¦Îò¨£e[,×ePŠÓä0Ì@–òùÚ5lÁòKs8aƒre}>"¸&î|qPN}-X¤B@dÝV5äE+Ë4ºŒáPXŸE‘ø(‡äEë;ˆ „€ 7@Òß0ÓÓ¼ 7þv?‘¶ƒ‰+¬j×ãñœÑÓl5S5Ñ#´ Ÿ y-C †yBc1£q€ºánÈ!¥¶E¦Ò¿^K,§MyB’`kE´×™P‚j#SÓwú¤|E’‚Å™YÉP K"•‰ÛF*(³ZC”kXQB ¡—¢«…›b£.ªø³” AvÅJ!«<CØ«Š ¤E¶1óí×ÇN„Œ½ë@ÂÒ€²„“Ì“Þ(¢‹äý#ø~à.C‰*ìÝœe'£ß5Ÿy¨ûˆÍȤkP>?ŸõŸ¤Bµ¥[YBÜzø…Ì I @8 »# ‡ ‘p`X%Ûœ5]ÓMÒŠü`8iÓµE@ nÀ¡Ul!3ùQš Z^ø0¡ ½]€X^œ"á,¡Î‡Î°ìÙÔ<‡YQv~·S”¨ Ò=ÈåþsôùéêÞ_°P­zQ̀݇£qäkh¹‡ß’±¼òö@¥Y˜ò,Á?HþmøÙõšTü[𠀺ì5œå¤P*”hîóWwš»¼ÕÝåé‘0-XGø?HùU%ÛêÎY˜·‡ºåÀl ×èrÜ„ «4æ9BÁoëáŒçY?4Î5¾¼×«‰ o¿\D5{I<É+80­ºÂI·Éò9n›öæ¼J &¡æ¼g¶ý2í^o„Jó«¨å(±ƒÀVZ¬5ÑW4yʚзÐy- ¥5­c BÕ ö:°²ÂÏß"2®Þ´Ëùøý#ýƦ-ƒ´FÄý¬þÖk?µŸÚÈqwòÅT¥•þÒ>(O(îCÌ@´%ú2ưU¼Sé^«â@/™$¹¼m„]ÒÎd>CÄ"Kt4Ѐ’ßûÏÒ>‚Yf8ÿÊHj±Çqÿé61‰(ºËšÇÔ°ݸèöÆDÛCš=ÓÙ u `'nwêõŒ|Øñ4õ€Âê‹ÕY¬ÓÙ ¥ˆ­iBA`bz”»óU¬=Ãx«5ÜžÈ` °‡€ð‚ ÕÍ›ë/:Ñí*·df•l=øú DB¶ØA®ó^B^pÖq)½AΡŸKåÚ€žVú^lfI·&¹¯þÒ>…ù™'O¤ý#ø ¡kñçU‚„ÞgB+pÌ“®è*Ímä/€Ú"ܨ]Ïc ø¼>:Û[kÜSˆaÚ0;Gë|¬@žM ‘ˆëXc U\O&4$AО  æÅxìá$"×’ xâNÜcZCV5Nœi'¹&iiò¬&@¨Ó ;ŒP…ë25§¦ qL6jÉ¥ý€¿àY Õß_X@MãWòÎÙ{w¶C$Pvõ>ºÂ&ìr+:(*Çø?Hù$ `”%Îk\¿›Ô4 ÿ,5|®ýé$¡ð³ügé&Qhí1?°¦RÈ;–@v{æǺäH;ÆÙ@Txttq…|êí• i­øÐ °‹ P “­öÂYz´žù@@ Ë$õÖ¶ðxBz¿ÎBoÇ0µ¤½ZO*å°.ž ñ%ä¢2TË9dl€ì÷Ö ®ðGzî W·7ÑËf·¾ž3çAMó$ÒòqòO¼ý#þAúGüÿÄ*!1AQ¡ðaq‘±Ñá 0Áñ@PÿÚ? Šw”3ŒÈ%K*⿤Ð8ˆ¨+Wyål qšëÚWviÂ/÷+lQƒdÂ[ûD$ᦷöŠ«t´¨*_È~wqÇqÇqÇqÇqÇqÇqÇqǼYþˆ³á0*¤Ó¼C1 vë÷DÂ&0‰„L"a˜DÂ&0†¾ÀfÌO¸@¯Ýs\ÆØFBí.µ¥«e'€¯]ëvÍö€ 9;ðθɿO:EJÛÂÀûç/Š©ºÀû€U"ëŸ+/ˆ"&0‰„L"a˜DÂ&0„EÐk<¢°…ÙìQ)!à.zÖ>‚Ï…ívq_R²ÔÞüDýx‰úñõâ'ëÄO׈Ÿ¯?^"~¼Dýx‰úñõâhŸç«Ä¼ëñ4ˆfËßÌþ ™üM›˜í mÍâYŸÄO׈Ÿ¯?^!Òmñ6f6f6f6fê@æ` ¨Íâýx›Y¼J,ÍâSfo![ãÐYð˜!–úÔ ½€}˜,vÚõáÈ " †,PŽ e*dG¬ç«CâÒ–‹‹`ˆ=GEª€L´YÀw@„ªÞ€®lç€B Dï2WÛíÒÞ&ÅÈvD[¼K¯Fž1m!Ø;Ah·#¡2C ÷‹>-Þ€ jRïC¥#h ˜0£[V ô P n”¾ûô=n¬InpˆHò` ÅF¨¨@€Z A7]—Ô@ã06 VÎ÷Wb‚È™¢‰>•ÅKÀð´\EckqGio…6›×9Ž´¶`á¯MïЦHtñgÂ`¸ ã_ØÆIsÉö1¨y7È…é®àðåXB— cî!gëooA\0ÉÜ+Ó´(ºÀ(’»òŒšû°Æh€4á1ªöôØ0ÑÔ1hÄcClSk9U“r–”6äV¶év¶ö€ ß”$Ú¸³P+jØ3ˆ§ïhDÖ¿{B4bòÒ}Lè=âÏ„Ê$cp±™kqÊY¡Œ Ži®1ÀU‘Å‘Ý[#¾8Z‡wMNÿ»`MkãŽ6êÞçœ!m•8.ÑžÙyfõyge倸ÂÞ|ÒãŽ?QgÂ}‡i‘ŒÈVœá$È~Â~‚VÈI¨¿g¢>–Ðz£ýÏ„ËÞüõÖ€Zü‰.Ÿdg+êˆ}B_²IÞË„ àûW|$Õ´óW®42ÌhE¤bÐ…2Œ.Ìêà(-_ùÂ:±v#îŽÍ®T„®Þ…fz@µiïÎ!jíqþqgÂÈ|'Ð5{&ÚŸ„ΟÑ0!Wðºá £g™õ]²„¶ÑŠ3U»z9„Á|'Þ¯÷Yí›=­”>ú®¨P$UÛåÀóÙO²›e6ÊaD©‚(h}‚Ï„ú‹Ã:“^yAVB3–ˆ]⹸Æ(ÕÝ AŽ©Ý¯„€*‡2ü£ H§žÔ”¢ýº´K"nîÆZTYò€¬!2Å>µ«á4CfO½ð–JÄO»Þ ,2ïOXvÎ`«@>=ðw‘®Üaƒ µð~C”gˆ“ï{àÖWÍkq¸ »HˆB‹VJlö¸YðŸî^€¢*¤Fëï¾ûÁ«@h†…ÚÝ=‚Ï„úÌhr Ëk=±„ѵQÂŽm¾¸@šã<›è9ñ…5wx,)±‡6Vâî‚”]¶`)ÌÝÆ àðÌ6³ûÅŸ øA¿˜x*e æ(¢Š/`³á>©Bª©ò¦0X\S³•ümˆÀÙWÌ}>0@ÁjÍ_º®ó½S~œ6ú1<²v'n7‚ÆåO'ÆÀXƒÞƒÍï”$0èÚå.ìgˆ%óËlD@ÀóCíÃ" ëá u’Î"Öðò² ß߀(@Í+AyÀCX(3D  „MŒ„AW _ƒ )]Ræ9ò¶èvš¨×}ªÓ(zY¦x.ö >ð8ÿ˜ #´ƒæž³á>Á®Dý¡€·O¡£Á‰­Ô!šoãC‡3ÀÍÐ@V¿zçÌD¦GÔ$Ùj¢¸Õp8À%6S‘F¼x„Ù×GqC£êÄ`i¬pèQ ÇÐýåµ!!‹êB÷¥\uœ©û)¿èËÜe,!;ƒ_]+'w2ÍäZk´jRÍç¡‘ÀÂŽÃÊ«ÖjÝa Ïc |ößÁÑá‰åw<¬ˆKz¹¯„A¤c[¡ö >ê6B@la]v0…Cì!D` ¡íTqm„€$Ù$¾ŒßÄ,øO¨ F9€> m—›®r‹Z's$® B‹a¿ q n0*÷D<ò†©’÷×!„Àï²–ö-Çd.AZ¯W^ ÈK[;†óA"ÂåX#fK¶rÐ P¬Ì Ì‹å­ä°€æ7Ã]à<»ßHÈ»:ºÃµ´ºç”¢Ö‰X2JàÐØ9Ejóë3D?ÁÚ£QÝ­e@0ìÕvüâÏ„ÿ,øOùÿÄ,!1AðQaq¡ÁÑñ 0@P‘±`ápÿÚ?3^d ZX&’ꆀÂTÜ €B•Á©¸A%±4 :¿ÉÇ8páÇ8páÇ8páÇ8páÇ8páÇ8páÆÓüPEUd® ÙXRÆ v'ñýpáÇ¡è}QðpáÇ8páÇ8páÇ8páÇ8páèÞ:ø,KØ›çïäD Êó]Þ”ÎA2·)5m|{¦RE¯„öädOê)Êg£ß=ùè÷ÏG¾z=óÑïž|ô{ç£ß=ùè÷ÏG¾z=óÑïž|ô{ç£ß=ùè÷ÏG¾z=óÑïž|ô{ç£ß=ùè÷ÏG¾z=óÑïž|ô{ç£ß=øðj‚€#½""y`¤@s@ %h êW ç ppt3¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þs¸þq+Ȉˆ»¦Zc¯[\[Wޏ®íêl]q6½:ç†Ig<^ ®ï€™/Ì„#‘ E8Ûxö¼JÒ)nML*~/‡ qœëÝz A€(.û_3ÊgqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüçqüåX®7/È9ù? çäüƒŸsò~AÏÈ9ù? çäüƒŸsò~AÄÉV íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÎ×÷¯ï;_Þv¿¼íyÚþóµýçkûÀH(ósò~AÏÈ9ù? çäüƒŸsò~Aý`À«Ó‰¿?ƒœõg«=YêÎpzOo—Édž`Q8Lõg«=YêÃõìçË ïJ$µ6Ó¨!µÐßù`Œ|y8AÖz²iÉ%U:4J:\„i@!Ñø1@j`XêõOi¨ÄA&ž„ã6xÿTÅ!›t|€ð ™ßßßßßßhäñú¼f Ël szÏ”;ûãŸhŠå ïïŒïïŒïïŒïïŒå'FD9ßßßßßßßߪÖÔ!Hò>z³Ö]lü|ýâÎ} "îïO£bïaχ,Xqw·G›‡Ç=>ùé÷ÂlòÒÿÿf6EÙÒžo^O:¼ôfcè½m÷ç×ÓÌ?;i§£×ŒHù›uz¼g§ß#<Ä è<(Ž@Þú8€^BWx9Xš†¬-_O¾zG«Þº!3V€FíWSŒ ÀϳpºWMzdzO®”°Q¥Ø °©l…ÛjSSNÁ¼œµäc`Š”‡Pp«Ž¥u»@Öœ1Q¤#:£c³RL)yo7¨ OäÁ¾[3‚˜FU¥jcœà7jY4ä½Z1Î5%Ü`H¬äÓ‰Åmu˜жÄTVVÝwÙu¥AfÐO@Ò«<õëfoÐÖG;‹/Z-¢Nðñ`ªíDE˜7²âEžhxâ»m©¼³«a—ÌKÐC¡·¨oO7ýf*¯ÆÉŸW–+)C’· BiÇ|Ll-ñ£N,×ôœ­˜~°A¢F l0ƒŒwmF6\VÇ€ÿ æ4­CÃD3ý<®ÓÌpòþ6¯Ç¯UsÓïˆÑ Ö×¾"Ñ ”dêy¼å®ŽC ÿ¤½±ÃÄõJùtvx{bBË垬õbFK焳£&þ.º»N¾šÂ@ãÓ=YêÏVz±_*ƒÔ6š¢²0²€’wj³ ‰BtäUÏVNh“”%—§€«¡Á æ‘ñpüu/WðÃQé½6õq³Ëw7£Ęýte ÂEx¸. ý4@˜Lõá.ÍÆ(¦ó‰ äÀÞisTU¶‡ QrÞ£xÄh‡(ß7¦ˆn*5DZ ò0uê=*…vŽÏ:1:H¨žAÁæøç¢º‡º†’à3AÐàÄzt¦â_ ¦¼sŸAêAsÞe§OãPÒ\h:Îúüz_ðÂãò Lè$鈢ÀéÈ8'IÆ$ë'(b¾<ãŽÑðŠ P'$Œ“›<@V.Ѩ(w»ÎÛÆ< Šu^5«ëþ" 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ­š­ZÄ×lƒž¬å WO1òÅ¥ }M/ò8MX@t||Ù¯,õbB;G7!õùšy0R<+ž$\/sªì¯Šøç«8kÖÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÎöùÀIìÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÏÄ>óñ¼üCï?ûÁ ~s½¾s½¾s½¾s½¾s½¾s½¾s½¾s½¾s½¾s½¾ýWV­\ûÀ$&Xctª )D c#ís“¼Â8© †ÍsP&O½l4hÑ£F4hÑ£F4hÀ @«›Eƒp—BUŒtÿA4hÑ£FÍú}¸’!À*ºæž<¡`µT*¡Î8fì`n  »ýQ£žÙs7gE”N¶WûähÑ£F4hÑ£F4hÑ£F4hÑ£FckI+‘µZ®‰\³W«ß£r”%x¸ `ïÀwb(²¼ JMˆ Àžž>€/u¿Üg1ä[!ÅM6—Vf» fò\£|RÜd”ÔØm[ý¦¯%JN‚3“ÓSg ˜MhåN˜ÜuÖƒÜ2Uã=>ùé÷ÏO¾z}óÓ|ôûç§ß=>ùé÷ÏO¾z}óÓ|ôûç§ß=>ùé÷ÏO¾z}óÓï“s’÷dÆã tumÆ‚TKöat¡ 9nV@“p¹Ž  øÌŠ(s*!¢åpL¨è…À„"…·À& 6Z©]‚Õ-&š ×w DÈ×iwBRµ”A¯ ­‰^,(*-WVô3—Yê|êT…­–æÉK‹ŒÉ-JGŽ'hÁ2#¢ éÓecÁ(4#“5%iiz ¨Y!„ fÊ«š’´´½Š†Ô,„½ ’hÍÀTªÙŒ6¹f7I€º^"Í¥ü€N¶ºžŒ9ã%  .*kÁµÊš_3=>ùé÷ÏO¾z}óÓ|ôûç§ß=>ùé÷ÏO¾z}óÓ|ôûç§ß=>ùé÷ÏO¾z}óÓï†òD¡@TíC7ç•jH%€è.k>ÖöÁ&€’ˆúÓž˜Ý´R"Ht2ùãáþ="Oâ~Ù5ŽiÊt¼&×ÈÏ]ñÿ´5/RúÕz-ÅHÏ»®RS@SèžÎ ‹_¹iuOwžtþÈ/Uzy‡ýLƒqTQ›d.ËNGøc’k&Î8ôÈ9/aû9»‚¦7ŠqÎ|…0ššf€ª¥¨ÙÜ´@Ùßž™n“8‰9ÀAfS ì– »B4*ËË"ðÃYŠû0@Ì–Rè&—Òq÷†Y‚[‚M(¢8ÞIQÔ`ÓÈ+…3í5Ú9do šö'tUHTŠˆ_ØèÊ?Š<¨nôÞ*ÅkÈwþ‰¾L¿êgÂÝáÕ¤G™ûÆ7ì=s\WqŠÞÂ1a W(Zþ]ÿ87¨P­¥ÿŒÞ.à‡D\0?¯½Óü!ï̵B÷Ñ0ýR?î=P9  Ⓡ¨†²W!À#¬±Ãñ#Æ«ÿBôÉó¸‚ÒiÚýŽ&Ëòé¥ù‡ÞDÿÑ÷ƒjú~ÀeC:°4Fy__ã¼<ÿIöÂ?íQ+]"a!Ðд" hµûÄÔ,(Äi¤2ãúÕš´ìJ½5 Jê¥`(EHÔ8`Á†÷j ] “÷ŠÚ(»ƒÅ ùôóœ‰Ïû)û@±ª¸ûµÛße.ùšJëìð‰û†=0ŽN”ˤ|Œ˜ŠŠo@¸¬#v@pE wK¬ºGŸ `Eš5£õ÷¯ú„=ù–¨^Ù  y00ÍïHy¯8kò¸âêÞå ¯›†Bíe/?´_[dF ª·÷¦½)« _Ðeщ w<²ÀW@@ÿGï*c 02„·«¶Þ¼—øâäTÑèñ”$ÁêjuŸ½x’”kàs0Ö"bˆibg4Îtöˆtbb»«lÍaÇðg Þ¸—±/°` º‰a“(H›öŒÜ=G@\©ZG¦Q¯Óó!ˆ…%ª«µÉ3ôׇi, °ðþ3Þ¿éþ ÷æZ¡{ßQ;3  Ð£¬|øIN¬ 2ׄ¸×–(¦;!oИ1- €¨ ¯ q¯,QLvB®°Èí¼Èζ۫¹`­$Q¿Y–iIäpT ãi.Ž6Táb5±4#-é4sI Ó„ß! "ªEŸ­-6ae…a2^à–†´ExX±(:T;ß D‡Taoh¿"4"ˆ‚3»£pƒÑuØ3”5|&e%à§JýŸJØ&À€ '(<7roáݼû@8»2EÜ[lÉÖäÀ¢C6 ©GdA ¡§8%Jʉ¥Ò«¤ Ø@ HQȯ¤I £°¢#èa—ë£KY?4 Ë%4Õè ^à;š&´bÅWõYÚÑ}–ºNA¬ ÙiÒh+9ƒ[´–¯7F`ÖèqšÏb*"”qÿx— Ê#I¸zð¡ãVá¤h`¬ˆ+Å€WÈÒYÐ&Sõ(S¢¿î…ÑÐ,£ÚCsFà'”iò]©rßA1Ö3xÇÌATŒij  ´EP({Ò™aTˆH þ£ @> ¢N<,8FdÈ Ómf±öè„ä$õLèó7΀Óv››þƒ§N:tèµbmÉPi4Ô§çI²“]÷ @†[à1x€šá'^( æ?Ñ @L©Q«ƒŒ…è§ùöZ¡r]Çøÿìâ½4ŽD“Œ3/âDó3Õž¬õg«-g®™è‹REÄÀ×ÝRº†‹pH(„I64 Žk:@U%ˆ8NžTP–ë‰úÒ¥<-SJ],1EÅ¢–kË '¢ %hƒ"óžqyÊÞaB›3ÕžCõD¥T0iÈ©=Á €(*sÕ‰­7óÀÑ'JT4ªè 4%‡S°êÌõg«=YêÀU‚ ö!¤¢tÉÒ\"¦Ì6<†z³ÕŠø<_çÙj„’¹~rù1î"‚ŽHÖºßhÁFŠÁ"sÚ¥‚j¶œ‚ö žIG"hÀ aOzÖ ºÚEP‚'1HB¯f_>\iì«ÿm”»Â“ œ­äø¼à ˜Aº<!¶„©$›2«„¢’º‘KÏ6Aj$N¨.óc«[¶s r:r5Q•ëÈäÝEŽ€1ºÊ½œr ›E…  u©›CÖBÊBy„rc Aäð˜ItËj‹s`ù5Ø«H™3Øœrhx`Få-³È%(À_¦øLT ° aÎGœd±"”(TÂi1±QrI`(9 'z¤æf(D£Y&£wJÑ `áG5¯êœMSDHC ¤•©4 ì Ë•!±´FRoI-¡7”7˜í!ƒb„š*쪮Jñ?ùù–¨S—!ŒÊO(IÁÆH2꧈Á+5ƒV 0h“"Â⃦–‰…EUnðjÄ `¤X\X ´¨+E†;ËÈN\­«o\ëF+åz4þ3òß|ü·ß?-÷ÏË}óòß|ü·ß?-÷Æ×‡X“ðO¢ÉPèø’5&Ugs=-·"Û/b! hÜ) zÕN®Š2Á¯ZõUg‰{¶©T «‚æšÀèaŽ‚¦¢DQn&Ó ¹ª8Eˆëš VÞ|£& ‡37„ b8ƒBkk¬ND2V`áj1ü6]ãb[¹†âèý pðÇ¥"ø,UoW Ј€Hð0°¡à¨UmUqÕñÿ? µB-ô €!e]y¿Ð¡B… (TBìIVr¯ô’À …—nüßó4(P¡B… (P¡B… (P¡B… (P¡B… (P¡B… (P¡B… (P¡B… ÉôJ0*îv²òÃû¦Z¡m–¨C°=M³`âB¼»•é)ÈÔitG*¨’¡dƒÙ?LPèÊC Ù2EœR5+É…|9T‚!%™à¹rš¨uÖ!tH‡*:Í‘NL³Ê–ȯ2ÐlaƒÅ“$ìð7Öª,ñÈ[GJP)AÿË›eªìE“$йÒ' jCZù¼ h UÎ* Óû†ÔIGFÓ4’;ãœâü^Ë/zé‘£‡(ËGÇ›ÈUæ`õùžÔÅPltû›€Të"¨“xùÕlÍccbáµù4+Êa«JgéÈ4í?þ6ËT!Ý´¬PTSøÁ»Z7˜…ŒNdþ¥Ë—.\¹råË—‘š:ÊGÇO÷ÆÙj„>ß`D.\-e œU£ü?£u`'28³åHȨ”H‹úËxît웹Ùû&ò>Í” Å8úå%GÌ`ˆG€ÒÊ€«lÌ¿P2EædQg£ªÜrPäA ”îÄSƒ„)ß Ñ)€h¶!õ„4˜D P+­ÉJh‚Á*„ êaSàÓI( ÅaM˜CDAwAŒ.’åê5@&-ŒLnUZåµ£KÈ"×ÒĨ ’ £L!h˜ø„?¿ ÐkVQ+®!€I¶v¶uã€Ö0‚Ïïöª=–E¢É‚Y ž®ßfÙj„9Á³¡*næœÅŠEÛ°êâË@‚ƒ`i(žv0ºEºU¹ÓЦüÑØ¡Ä”A«°¸¨à *súl¥a@,äVãSDœõÈHëý‘F 1xãõ$ˆ ¶€pN¥^yIÎð¤AŃ&ˆY\ñ ðTñ)§ AæBÝk…m»Z΢ÞLEÐAE‰¦ªÝ¶P„»‡më`™e&õ`ÚDMã½qLÁã9ãš$ç¨BGXJõ@mUµmyÀ yŒ5§*« ÊÖ%Pv¸nZx@! l0º¸nZx@! l0º¸–ÅOi¢ŽúàÔ@çà(žµÞ<³`< Šîtaì8 ¤ÀML”Ë\9¢ÀÞ',€€Á !'Ð lrí_¢" Ä ´€ÇËmV 1 £s¦lù ›KÌ =.>Sÿx€A@Ž XÕ<"ÀšÁVH1Ѥ]kˆ]¦ò.áÝÁ†w¡j …+W­[¨­ ðþ¿"ì¡z¹¬W”\²‰Ñb&1¦^*-Ñ5+±øÔÖ€@у¢‹8äˆoH5 Êœ¡P9=@®KTu½úRk~–³RMLc0½’1 Ð>Œ;n²bè+‹šêA=[e$±iÞ}h kÙ'K“{Ê«òœm–¨C±¤$T4fÎÐmbËÍþ?©.\¹råË—.\°rt3,5*¬9“_ûÓlµBÛ-P‡G¨ÕJ–• ƒ9fˆ¡Ùué†Ç«¡CµBU W$gÀB‹iM´Ð’¢u“NÄ™²•±‘èæõžú¥Rxq¨Ãe®€t:ëÃ&V„ê†!<˜hí°v A鎉½;a:¦’àf’ù¨ˆlIœ"ÈÈk'qªvbHÀ(1Ó]8U5†ÍIJjõÿÉ›eªä§  —yHÞÞ6ʲòJ{CY‚ˆàƒpÓñ3k~†µÐ4»àaÉâ”HìfáFY‰)gµ©_$Ú8»òO§–È1 €,ã+… š^1ÝÈ}"“ xؘ‰œRê <<â§z¶Û@W`èç ‡’8Ä̘xÁØ"AaCU´ÕÆÛ¸kHÙ8ž ƒ‰É!Ù:°ÀÝ µóæÙj„:·z8aÚ2£"G´ºªª»UZ¯øµº1„|=^ s¾>s¾>s¾>s¾>s¾>s¾>s¾>s¾>s¾>s¾>s¾>p³Ó·ò‡6ËT!Ý™Ö*Ðòöëö^½zñ+P:lÓy7Ješ½¹¾Ù|0 (}XHµCZßøVÚŸE = €àÐ/dÛ¿`úGE¿é:s{óG|Ÿßeªô[ÂoÄe6Ü,µÃTXÈwýt&Ýz× ¦b‚Vtr” ÐøÁy‘¯ëÝD¥ÃÍ*¦IQ%ýý -6uX-­\À‚] ÇÙþK· oԤɔNm «¸‚Sw7 kèzDj–„wË*ÝÇÍ¢! 3¬.ãËhÚ#S­ýØ#~±\‘UU„¤ ð™k€Ö¤ÓxBÛH[Cdµ«˜K¡B¸âȤ½k0«Aýé´ü]DXÞ[ÂPf–¥‚ xiÇ V€@Ápxˆ åkDKÎNT iÖ‹ 6' À’t0ZÕÌ%С\qÆ—^@eÕT*.U¡ª/AT%¢)¡!›Ö*Bd¢Ìp÷Ù¶Z¡ÈÊV³^bu“dò‰kY¬2æ`Ë!¥zÃzá¢L êI§„6̪å<®£‡IT&–ɪi RD(CN,L á°ª#–¤¹£Dº+Ž ³üLËø`±Ñ-ÁMé_QC\aàï»Ú­ ,8‘±B äÈZ´­ÌRxÁ:. ¶ÐhêÂÏÒŒ<9–”´0Y&…XGF‡3å·„úõ/¡–Њ««R\Ñ¢]ÇP ðÞoæ¦ü/A6"ì dò7-Ê./™³:/ÊB±92 :ßD€‹„]ê6 äÖ‘çÈ&…( ŠÚû1cn¯H©5ÎZ’æè®:€gû-³½Pœ/0ãÑAˆˆ;ÑÕiW½ä ·3”’Ô¡DLÁ²*gLÔÌÑ\Dc „ ÷Õnª6ðâ%…!†€P+œ`ôâž‚‚ÁÉ^ŸäG¥'õû÷‹Ù'ÿ_-_”îÍHté!5©‘m °™· s!Gèy…Gîu­ ºrÃÅôs܆7dü”ÑÈTyyqì<Ç{gbAWXèMWü,ã:z ?îiÞù(T5oL™zÛ Zêm‡èÛz¢!Bí¢àœx…,©Ltø89,êǰtÛ–åcXÔŠ†Ã9 A…"èºrÄ*ðY»8Þ? ³V ¾ Ô GZ@½©`¢ c‚Ûé1JÔÄê ã¬¶ëGx¬Y¢W AÕ·aH,ÁJ鯤ðJc¨õ*’!€l‚’¹‰»&Ä&ÔÂ7)9B„#®A P¼Â(?0zÍ$sÀ€!Ú,E¬„÷LÒŠ ÄYF[L ‡:Rð= „¸¸4B ¹åоºÄa°¾Í²ÕpàN[ìs¸®åÃd±x3˜D¯IˆCjyÊ7V"´pTÜк~Ð`ÁƒÂ1#x ©UëûÁƒ 5Sš¢ì6Ÿ/ï²Õr¨ÈF  ›NDG!Ö‰T]·ôêïSø ËŒ$´KQЍÕrv"ƒÃf)«„!hÕÂþ€3(Þ”eASf+Ip”@X‚ìý¢èô%²›ýÝ ?H$†â‡ê§®ˆ*¨“D­Mx~ß-|%ˆ6<‡è7\:J T€ä—ÏxB´€©œ"ÂÔ8¯¦ãQ]›Z¿ ·Wx2ŸÀ8f\a%¢ZŒUF® )Æ ˆ:;«ÈÀU&†«àGò:Á"¶ ¾Í›eªìBÅ+Ô¢Gy:†/IÓ¨¶ã"óPŠ(ìÍÔŠh ñL”'¡#3p%1““í%t¥¸É¿¹¡µ½&Ì9å¹æÏ£$ñŽ Fƒ4ò]Y°#©¨oB'€(ɹMÉË×£€ðxÙ¨J(Ä3’žÐ®Õó¦Ùj„9B#m5¦HÄ*ïˆ@ß’ ¹««òÆÙj„;ßú²eV•zÿ—4hÑ£F4hÑ£F4hÑ£F4hÑ£F4hÑ£F4hÑ£F4hÑŽÿÕ“”#×ÿÕ ²Õ}Z²Õ}Z²ÿÙ endstream endobj 31 0 obj <> stream xœ­XÉŠ#G½×Wäy@šŒ\«@H%ÉØ·±> >Ù36¦ÛÆ}™ßw,¹Õ¦Æ`ÔÊÌX^¼X2»õÔ·î¥ñ'€Qq0êíK÷óõWÚÕêí÷îòè|8öÊsŒêñ›úx7 Å_?ŸŒ7z<ØÄñ—ÇÝíÑ}Z¨F8›ªÚ[«/£=i @6Ì4Ü5‘~õãÁÈŽÁ¯¤ù8ê0Ü ?m½çZP»aæ˜ {„ûøs­=ú•ÊÿŠõ0à¹>ã–¹Œpâoh€X$«èÀh;¢¬ÃµÓfŒÉZ% p=É$;‰È«ìBÑðèS^TKHÙˆ FGN'Ü{J+ Ç ,‚€•D<Á¬íØïDV/˜áðtäÏ9§3èåTö1x¤Î ÜèO ‡) ¸#*»uƨì0’e‰O51çnS)œÐ½%œŽý©¡uñ´Çá$É8O”S2%Ë3þ¹‚¬æŒÂUÒt”n—« Š ®•äTR`$QlJ]”Ázã&ÍX& C°°Ì”î7±²½Gšæ´ê¢#Öî²’ÇÎ_«}&”AÀÛ„Ì\)c‘0þ°g}•ªs{œ‹~Ü冤ȡv#Ësƒ±½Ò`W"vÒ÷4³ ñwi Tȯ¯ÆIömîßuZëçUáóâEý´"ÒD³I ¦Úä¤"ÔˆHqÅ]os’—Uƒ/r§¦ddDMÞëœÐcýÆ•ü¬i¦êÞ¨¬Ryr"=Pâ†á¥†¢çÒÀìi$e°8VÅáù0Ëçá1+=õ¾_³pŸÞmÓ¼Ö«H-Ò4ý/“Ã¥–õÐHgŽ."S¼ml°Ä>ÅǬ!ªï÷8²:Oý­udþNFÛ®ÌæeÖªÙJw˜(6*^¥GâÈê‰v´p’l6¾v.QˆIÙ¥Ëq®Â“’§E6ÉUK7“-Rdö\gˆ°p©¥É¥Ç“—ýèô(ÉÝ€¶¹zyóFŒ ZÛ4: ñê{S,wò¦Z+ 2kÙ¶©+»{Ù÷4³Öé'Û/)©|,ßRRň8ð â_…ÂÌ5eÆ÷åœÙErB,[ò8"bƒÍ›V ïê(Üú¶éf»fyOpŸâPäÛ3ÌapǼŠ%Ý*hó,¯° g{nnqçÅ>CI• 7úsæ"Trr ‡v:^¤°°¢)@‘² —¤ç%ÿˆ®××’úYb2 1¸Räµõsê‰ô(žWѪ(Þ«"mfQEØðSî±TñíðK­+7ì}BÍÃ&¿2Æöú-ƒ1ß#µV¤ŸOÉ~À?"E_n?#äZ;o{+¹2žò†‰ŸÏʵÕKí:é¬-&ÒCÊ!ÝŽXX6 õr¡}“÷÷˹ÑÝ,Z3”ózÿæ±ÙÐÝÞÛÒÃ5®ÚÃj 4¶]k:44ØËKÙéçˆSDÆo!ÎIhð>-ìUÞŸÔµ£?4}_z~Qßwå#¾´ÖòvOÞZÉÛK‘ÿ„[úAyˆǺz|ÍOÍiPùí‹úú!‰´»}†—‚å]«_Μ5hmû _Ö½Îgžå…Wÿ÷ »üúf½*ðß¿Z«®+ ¢ ‘àƒéÑÙë ö‹’•Õø`çIâ*}§Ð)s/¬ÈÆPäÄâ‹ú£ã¨\qá,¥0 Ë*R$'ðîdײJ°kyRËÆ³¹Êþ6²™³®‚ØÀÞàPK²Ú°g”¬b^àßþWÒ'E 7Êás¹WÆ¥=—QI¸£5iÓ‰'y!)å.§|ÏË¿;hb endstream endobj 32 0 obj 1365 endobj 34 0 obj <> stream xœìXÙÀݤAJPJLlŒóäNïô¼óìÎSïüÛ­ˆ…-J˜¨ €€AJw/Ë&±»,a`ÆýßîÀ8lŒ” ë›ï÷ñͼy½o~;ófØ),È/„|—\Û¹iíš5[lï"›>N»À&`ûîý÷ïZ·f '_î+_¿ÑÆÉÅiÿ– `ÝæäÎÎ Ç_›Áæpè!HÚ#¾É`—·íf°~È; '9À}ç–=Žººžru8¶eÝZ°ë€G4çЭå¶î¸£Ë)g;Û­›¶ŸG’àävb³hó胔/76ŸýÄ}Rá'tšvÃæõëÖoÝ»Ûæ€GNYŽíݼ^´k½Í¡ƒíR±fŽÆ_·~ív»£ $q=×…ˆëÙØÏ§'!ßù\,¿,Þ@ vŠ„Òlf¤NLÛýÀ/©@ í q sTìƒH„ !Òæ½C?x›Ö@@d$Õ½¸RP:âv3/1ü¹à| öÊÝr)ȹ€È šh½t2Kã”ÿEN?ä$Њ³8e©Eg|Ó÷_OkH*4 ëM’€¥Oú22E¢È Hˆä$Äôøeñ÷Þ™@®e½CàÌ]^Ówû®>ŸþÅ] ÃgBì»2œ¹çþß®1~lt×γ¡â]à\úÞ¢£ýÙKvÞF‰ òc¾ÌÙ¶Þ³lïÌvHvòc7¹’X¶¹÷/ûÒ jÞW½ÿ$êOþÜá_méêÍk@…qjå|?kõqpI5kŸÿ–«´ù6^¢yw²÷À¥HpÁúgªÍ9ûýV:'´ù‚´nå ’G=¿ä¬È A$¢™ ’§eg"’wöcK3w'»°ìŸ·O̹x:×Å>ËÅ>ûȾ¤}Ço¹\¸·ûpüž«¡2BÚ)«÷yû•Öˆõþáî°y@86^KO>ñˆdnv w~ÀXaç{>ŒÃ}^Uóñӛׯ²×ì÷;èÃZZwvJ÷‹¼“Z\Qý±òÍ›@¿egSqv ÿ¶ó=ó”Å)¯¬þø±¢¢"""e‘]ðÉld—ëc&»ì(«º²’žW0ÇÆ+üõûÿê/Ûz}>1¾˜Ý´JÖë‡Ìé;ïÖˆ¼þ_¢÷“©;½§Ùx/µäì—µóü3qÙÕ^¹Û[ºz´ÊøÆ©•“oÖâýÁA´rðUû¢¬ÜÃ#  Fô›y#x~ÿ¹GÛïæÐ…o«?~úðþ½°äù³˜Dàù6EæsHül 0óÙÀ|ªtÄê›HDò !š "ùœ¬ DòŽX8<`Z JÈ*زÿÞ¬‰alÒönM±Ýœ¼jqìïÖ]í³,Í~ýÓW:!¤rònÒ¬Qˆˆ bCg‰>q_~ìvú&×0°²ñÈÝ+ô·âsÚùEÏ+>ˆ<ø¶¼`Þ¾à%u¦úøáÓK~Iް‰vÔîîü]rwý}ä7â³å7‰YEùoEÑÊèi3ŽDm¼Ê9‰°ù¨ìjO³õ•®ÞcÖ*ŒS«eû½ïó«ÍBAEÕ‡šJq­€ä_Œ} l]Ù´Âèl>·¼ºª‚=}OH›$Hó9ìU+yt‚+v¬áшäAB4DòÙ™éˆäî3%ØqéþÓ§Ç.<[ð÷_F„n^•tÁ5ÏÎ&m몤™#fa4rH°tBH;åø­Ç Næ#^}tÂgÕ-:vï‰;q³& {C®ÌØ{oþÉ„OâÓÝÈs÷gîª×Ûçy3lîMÛuÿXGiÿúÍ¿köÁ8±Áþs8*º59s(’¿óÁ;sÕ–•6ÕÖwþþ{ O„»™²|—:û1ÕÆwÁA¿E˜)î…nÏšVÉ¥9ØÆÚ:ûÛ=+CϽ«ß¾ÍÈb;Ÿ÷_~!óÄxœj/´‘¬Þ©l…]ÈB%/]«9‡‘œÃ¯Lß}篋9È&ü"·Ç N°ÀzÕ›‚…¶¢ûãàšk™Ó³£·²Û| AšÏQï\Dò®þ σMì^Dò !š "ù¬Œ4Dò ‚Ëì<ú?Õ?ì§áaþôlëšÔò²jfÞ›­«Ó~>Å:ªŸQÈP‹§Ò !픃×a%¿òzv¯Ý¿ÿº(@ö.ÞåuÀ›¾`—Wv¥hö  úÉ´µþd> žïš6—£ê#â1 y»Ð %–¤³÷—_®ÝÎ{÷{犫—tä}ÛþÏ÷1gÚ%€ðE»>;s“Ó*¹Ð-]¢76õÝ쑘RÄ-¯B2ç̞ξÿs À©öü½w$ª‡_aP.º)]«eçøHÎËm½ì¼sgì¼ýòCí™ü¢s sö?ÿ€Ü,øX^þ2)éàæ·æßÌ6HæsLll 3KK^"Hr ³‰Hþß nˆä{çJ°ÚÁs€iøhëпŽÛ]ˆ;p4-.ªüiPÉŠyI¿XEýa7Ð,ÒÊ2D:!¤rðfvºfÆ¡È^¢ð}×’×:†ì»üYò‹vyÙyåÊô§È´gÓÀ.Z¥¤ä¥w!~úôénX77?TòÀoû¼h ®'òÎÝZß™ |Ñ®ÏùÏwôoZ%Á¦Do,=þtµsèòãAsöÜY`‚L† 2Bgô“Wís—ÂW~…A¹›ØZ¡’ÿk—¨fìôB%¿ð|ú>÷ðENwb9™Üçeâ$Ÿ>ÖlÛwÏæ­ÍǤ™ØßËC$È‹† oº€H$D3A$_^VŠH‰ràvêèA‘ÃúEíÿ7Æ?šÉ¼¼÷ˆuèPΚe铌›4*qH÷¨_g?”Ni¿¬ÜëíÿùÆkø¼]ÞÓvÞ^vòÉ•gÌ5'Ð)”§Wü§ï¹7ÿdü癬ÉÏÈ—|ý]³Æ#^?å;}>Óm¼wz¦¬w BËJ{:ÕÖgÞ¾{óíC÷_KÜbw÷¯„Wã¦Úø,<ROò®áM«$ØÄöÃ’cOãÓóœ=ž.Ùë=u§×œ#ó«E1y)!sŽ†Ê«ö†Ó›¥ª··Â \‰Ml­Ð¶„\ ˜n[oºfá¹ÄÝž ÿÛg†íݶw¦ÚÜ{!öÿCû{+¯eµù@‚4“> Dònåðo¼"qɃ„h&’?x;GšÉÓ®^’½}wj&«ô“øPyõºêšOÞîôESsÆyfç)3!¤bw=~þáˆÏP~úXý¹iøjªïêƒwÐ{š\ôžæó‚y{Ö3Uª|É×Û5kß÷\q†«Ós cs¼×¢˜Kwy­:tçó×ÒLÁëâ¯;œl~ú©§°<+>}g½ü›VI°‰í‡™;½™°ÔÔ ½ñÉÓÑgõ•ÌÕ‡äV{›Tõæí½‹_aœZÍÜýùÆ+¯øu5æÆë‚3asŽ$ƒïbn¾0&½ ™S!ŽöaÏþ;Ûnd·ù@‚4ßZÉï¿‘ À>0)/‘~ªªù˜WøâfãiR‘­GªÌ„ö˾+QsöºGp˜¥ïªÞz_SSXXìåûlÕéø73—î=˜ÿ¢êýÇOoß¼IHÈ^»ïÁÏìz¦:-_òõw-8¼l¿èYDvYeÍÇO55ÕEÂÀÔœ"ößÌZ¶ßçÔ»¼òý§ÿjªªò í¿‘²ô`p$ûUµXwÕoySwÜÆæß´JŠb:aóéðc>ÏrK…Õ>þ÷á}MaàêàE®‰¢73åU{ŸTõ¦íòǯ0^­NÅ-Ø”û¼òÃÇ—åϯ^ (?±ŸzÙoѹ¸'"³‹ù/EÍüøáŸ'¼r=pùÙ”6BæãxŸ‰H~¯grnJ‡ ’ ÑL$$ow3[&[.<ýßßÉ7=Š#C_¸{%{¥ÅÐ}ÃóÜýslÝ䥂´kö{¦¬vx4o¯è?}¦Úxϱ øçT\íÞkÍÙswêN¯é¶>‹‡Úxf!»€¬À›:ÙœÙÄÙ2\çôxî^Q†¢ÿè±ó_ᱯ¶¬ÌõNµ?,0Õæî<`øÚê%/=à;m§h„OÛõP:ÿ¦UR‚M§Â–öŸe{gêÎÛSwŠ:aµ[òçò«-]½/VX^­öz¤ì¾üt†—¨vz-rMC®).¾»æjæþë‰ËŽÌÞ}©áìýþ«Ýd4Òq~ÀB$o{-£ ’ ÑL$$¿ïF–Lözf¬wœ¿ñ‚MÂù³,§“¹ë6=[¸ËmËÙ0yI H‹°ÍáþÖð•¯^&eÄå–¼_ ”³²¦Û…´yÝ _?6òe6WÒòe !š‰„ä÷zfâ°Ë=i‹[ÄÆSO7Ùv>ÊöJ ~|Ò|vž}ºÖ3‡^ü¦ò½hB¦¬äù£ÄE{l¯·}Ý _•ãâÿÎÒ^éôlÛ¿©_DÍÕ<`„h&’ßs=|kì8ûtÞ>ѼÙN¯™{ï/sˆØu­íkiÀi<ò+ñ DI°9HH~÷µ |;€3ó3ù Dü;9ˆ$õß‹ˆäm¯¦C Da@$ÿßÿ­_ó?äQ(@ïˆäE·ìËJ!¢0d¤¥@ÉC ˆ¢%@ ”<(0Pò¢À@ÉC ˆ%@ ”<(0Pò¢À@ÉC ˆ%@ ”<(0Pò¢À@ÉC ˆ%@ Ì·)ùÒâ¼Í3Æè©+wèТÒëÁdS°¢a¼¥Í+Ö:ŒÕRíîÓæ5i×Àn„@Ê[HòÅù±‡ÖÍÜÓHM‰BUÑê3ì§­ö7šS«D·±àð$©¿N1wáúoDò뺨w¨[$ж¡ù¤…›£¸ü/¨Åít­·ÈP¯Ó?”§ëú" WÑÞ¶ŸBÃÛØ"݈|èZf[¡“[ªá–æK¾(ÇÛRG 1‘DžGN¿›S«€ÙÝ@&j†+ÍRÏ+âóŠ[¶íE‚FÅGŽwQYSSSJBš¬ÙuniKdŽ¥˜'j¯ ¤¤¥ZÚla"‹Sv~Ë~_©íHòÍ-Pò|š/ùUݵÄzWÙèz—[,òRN\à5ÿCö–3Olœ×ÇD—J&ké™M\´%¾n<#ÇàÃ76ÍüQG•¢¦cºüˆ??aÞ±ƒ¬=“/Îøk‚¥•¢ßuˆÝ¤^*¢¯•Ñ—‘½býZ{§a7Çûe~.ñˆ×º)?h*‘úü†B®ó¶…ýÌô•Èmƒî3×a˶k½ã½”çñ? ¤bîôB¹™Ëi~Æ­¢N£h{Ó‹À¦ÿ¦Á`SI{t¿¸\ÊN85|ä¼ihO#%2‘LU3é1`ÚòÓÒÕž­§*Ñ“)¼bœÏENò.äÛmvg5°ÒkIº ÔíôŽ¥ºPÉD% ½!ÖS…¥_ol[šÜF¤‡Ùî[Ûÿg$όڣ¾DO¬q É#V/—%y‹‚¥k(±ü”-Ýœz7^‰d­NfçoBo¼âd.³ù¢¶ø¬A"(u´Fã”×—éõ§ä…7¡-Mn#Úý7>E6‘¯T0Àšð¡KH^æ •×É2K‘-8™ãg%Áç«N× ƒ3O¾äÑI‰áTt³!’Ïä#êRêIÞP섟6KyÊ$ÑùVò?8DKÔ@ oܰ‹k¶ŠÎßrƒ×#{±’Ç>nQD;…DØó4·6°”øïaެÙé†H›9~óy¹·À×ß_t‹¡“•̬pjXÂKNdÖê®LÈÒëwESºn7è]:=Ï4¤bXJxIšäÚ‰)‰eæýÌÂgdýG»Ú¯xNâ}ñtìð&´¥ÉmÄ`ÍùÐq­DðK‘ùäOÓ*,ÝpK íꦡ¦j¢ WåÎ=.Ùr’)çß!ä;§=J@ J@(yQ` ä!D’‡@ J@(yQ` ä!DiÉ—•y……&‹•Ç`1˜ùl.ŸWTV ÿ¡ @Z˜Ö—¼ ˆ——“ëçsÏÅñÄ^ÛWÇ“þ|¹,¶PÐô×C DšV–<0|zRŠƒý±«î—9lVµxa³˜WÜ/9Ⱥƒ¥^E~mþB –V•<ƒÙ0É×H$D$V⬩š#8ÂTòÜ´:t`žN­¥4îVªD@æV.±è棽µ»;#á#ÎÄ!øY ŸuU&S5‡g`Þvšþ7EÕ¢¨¤DX¥F":eå·ù @ XZSòùlî)üé6ëÜÙSUU• QÉ— Y#4©?;ÇJIþó$‰ÈÌ·eH~˜}º¸¨*yô àøYå…Ù‘IJ$ª¡/£èsÎ¥¼Aê”塹IncUõfµù§ @ ´¦äù<Þã ‡·o^—'ù[7®&&Ä¿y]!‘•< éÂdªÚÀ‹?vA$/,ͱ쌫7DzGÖtM§N¡›M4z-­®A%“U)?s¬¶Ò¨]A.˜èX‹óZÙÛpÄÙUFêÃG•7²C äkÓªÏÉ—–rYlW'‡ˆ°iLJ…¸q­©®–ù%*ù²’‚Ÿµ•ÕTÉØ¯¦¿ß ‹O‹{„sãUI_}ÓYŸìœ ÏÃs‰$•Ë´‚òú’ÇÉÊcAO­n ù%¥B^‚¥:e¢}š„G¿@$©ˆ”'\Oõ@ HÛÒÊÿ %è94Wg÷KXLòÏP`ÅýÒyøòÅóŠW/¥Sa%H»>£C‡˜G(3¶ÍµÖS§¨ƒ',~Âý¥Õi¯¥?÷W¡´ûïöˆGñ’—™=؆Léxµn¾=lj¢sSü°ÂPM§]›”"Mëÿ¬0ùëׯ#ÃBÁyû¾Ý;`%*2¢ª²R¦á[ ™·$¥‚‘šÔé˜ÿÆ…@ o‡6ù²çåe¯*ß½§ñ5ÕÕUU•o^WHÏÒ´ _Còä,­ÿ!B ˆ<¾“ŸþJgòT’’¦ñ÷ä6o Èä;‘<|Ÿ@ÉC ˆ%@ ”<(0Pò¢À ’¿úïE(yQ<Ƀ(yQ< ä!D’‡@ J@˜6‘|Y‰WXÈa²Xy ƒ™ÏæòyEe¥ðí¨Ò´¾äE¼¼œ\?Ÿ{.Ž'öÚî¸:žôàËe±…A›w*iK »Í«ÑNÙcª9Ü1æ+e^ÂÏXlÝO…B$Q Z$Cy¿nôU[ñ•øŠ¿¹ i‡´²äáÓ“Rì]u¿Ìa³ß“g³˜WÜ/9YÉ$¦P ]мhWæ÷RÖîvçqFVzȃ«'n¥K§ÅRŠªÞy±S}ì¨duñA ©gE?_Ïeóå5*õÊb²’i‡WD»¡K!möÍ6‹â4ÈÄ£u¯8§Σªöå•Ô»Ù]œÿX‰HÚãE£¥Æ†\ttÄoþ™¼„ä•tÌ/‡d‚õè«“¨™üb°~t”¡vßy£SÒã‚– îŠt¸¼j` ^Ö }ÿ#Îç+ÑcؤÏäÕÌ:mq½•{Ñæg´†h+R+yÍlH #‰B°øMÁw~1Ñè®ÑãS°^yDÑ)–4¼™u’/9¿z¤jgëG²^ˆ ù~hMɳò{mwTWWË“|UU•ÍöÍ55ÕÒiÓQžë/’7ÕŽ¬lÎÖÚ©!’/.ˆ ÛcȦ€6w§KÎå"Ñö'³Mnêp6œSÂKR%¯ç¡1WuVï&QмhÀ®JDº0ºDqø’7ùå&ºio¡ÝkY ÞuŠwCud¼‘þ°-õìh>ëšÏ+ƒns|uK½‹ü$Ê-¢¹Iꉅõn7°ùÒ›’ï¹8 nW ¸ˆØ d^N"Nfr‘ðÂìSH‡Ë¬†XÉãt¶ÇðûÄ4û£®ÏKy` m¿£­hH­d6³áø§®ÊŸ³‘ѾÛg¶¦éN°çøƒ–ÙîF5S,ù8׿†ª›üʆ†ÿÞiUÉ3˜ “|DÂü´X±OÖQž¬7DòÜ´ÀÌâÏS²£µ”ÆÝJÍ‹øT·\Ë+Ñ2¯¤®ÜRž’øÄ2?ÝVúƒí"$J‘-?m'XÉHN¡ãKÞÊ%Ý|´¢·vwg$ü‹BÖ……Ï€a¨šÃ3xÅh„¼ð¿)ªE%%ÂÂ(5Ñ©îÕäŸ)å-Ú‰ªaúÛœåGO_§‹ëÜÀæKoJH~Ô…tøÔfÇåqÓ¶ˆ”âR´B CÑ¥“¬jH€•_º’ïÖ”|>›{ º†Í:wöTUU¥DÂ;ÓºDTÈàôOwÀ1d׸Žõ$¯‡'ùÏS¢£ãvj /#.6\‹C-Å”«A9IžÃ—qPK—"­VòÅ“ü0û(t3pQTòè\«¼F!ëyavd’‰jèËø| 45H²<47Ém¬ªÞ,ÙS© ô®Çî +¬ºiªu±¦ „ l¾ô¦„ä±·ýfÆÊ—¼¬jH-Kò2ºç$þW¤†­øb­ä4³¡˜ýà7½™ô§³´{І÷‚Nª¶i¬^*”5 ÌF5lZ¬[«G¥¬<%](ä{£5%Ïçñ=¼}óº<Éߺq51!þÍë l*äáò;AQÏ"‚OHÊ¢³”…T­ï¦!1Áå?@@$¿ËT=Š®swÆÕ»ÎÝ#kº|}¸ÓkoQñžÈì°(V™HXì'ã9ºz¥È‰&oº›VpvúẹÑD£×ÒÚéôXÆiT)?s¬¶Ò¨]A.˜èX‹½û´²·áˆ³«ŒÔ‡ÿÂá_* ï¸Õɬ6_zó‹’—œ®É©®‘Y ‰¢±’Çé ÉKÔ¶A’ÿR­dfÒðä³î$—)¦È=b¿éæ}6l&•/ˆ†7Ù̾¿_“¢¼å:|ñ÷N«>'_ZÊe±]"ÂB¤ âvƵ¦ºZâÊœ€¹de³¢ú·gꩌröÐí¿‘]\RZÌ´Ÿ×‡R'yÏ‘†Fãeææ2òDG¢Ó# Óßï†Å§Å=¹ñj?¶³ñ¯{Á5r™sèw3  Ä9×÷¡ª÷w¼ñ0=3#>ü¡ý¶…—Åߥȋve^/e«s÷žff¥‡ú]An¼J¤Å"º§¯¾é¬OvN†çá¹D’ÊeZA¹Ô±,¯Q zju[È/=»b©N™hÿù? xô D’8~•1U[ulÓ¡³a±)ôÜLÿK;ˆDÊ-ñ…@›/±ùEɃ•## uúÍŒI͈þk°™èÆk*[^5°Hßx•Ù8’—¨í%ßZÉˤ°Ò¤‚Sd¦<•H%«w^ÙØf¢›©7¶ªP5÷ûf~ÝãòmÓÊÿ %è94Wg÷KXLòÏP`ÅýÒyøòÅóŠW/%’ Ûe¬‡D`Ȇ¾j DÅ/¶î§®¡mÒµßÖsèœ<7ù¼UOC2‘P÷eƶ¹ÖzêUcð„ÅOäv2›Ï£{L;X_S™H¢tî1lçùðÚ] k¾ÄfC$>¾•‡¨QIZû츫E&îMçÈ­ ÉËû|q$/QÛ/J¾!µ’—ICÇ8°2 ’;rÅ·ŸÜ`piÓcÑÃÆ6»wá*UÏá‰ä³²ï‡ÖÿY`òׯ_G†…‚óö}»wÀJTdDUe¥´á¿O¾â?³” FjR§ûd´y¥á3n„0x¯iQÚäÊž——UT¼ª|÷œÆ×TWWUU¾y]!ï]¿C¾’ä™yôÀÓ³(*½RwÛ VôÉ}žæÒóÒ¢–××í¿­Í«ÔVH?#±´y !íøSÃß _IòT’’¦ñ÷oèN#r×@sC*™HQѶš¼<œê†@Z(yQ` ä!D’‡@ J@(yQ` ä!D’‡@ J@(yQ` ä!DiÉ—•y……&‹•Ç`1˜ùl.ŸWTVZòµË…@ ïÖ—¼ ˆ——“ëçsÏÅñÄ^ÛWÇ“þ|¹,¶P€÷MH»Cæ7 HkÒÊ’†OOJq°?vÕý2‡ÍB~OžÍb^q¿ätò=‡öòÅséTStT,÷E`CN˜w4›ìÛæ½‡ó ¿ïü7Þ\ó×î2Þˆ@ZÖ”|Y‰A£»8žŒ•~3TDXˆÛi—·oßJÿæ0”¼Lø¼¶ÿÅ`|ÉC 6§5%Ï+( ð¿}ÃSÞ;^oz^Kˆ‹©¨x%‘_òá§72Ó§IªÚ#'o@ËJ ÖÏ쪯A¢(w<á\ˆä+Ve&LrûQYç74òzÙ•a¹2#ßÖ ý­oäÍ>ò ]i¨6â¬ßº?~ÐP¦ôu>†É‰÷øe™2EÉbÌ‚^±tÝDïò>ynö˜¾ÆõtMî½–ˆ†ÿàtiþ¸þ5”‡Œ,ågnŸg­¯A%+iýuÉS¦è§zÜGæÊäù—“$ÏNL¤ª[& pZ‡ß-òš&ÑÒ"ñr(«S7VN¦¯£®ÕÙb§Gm‹„¼„¿' U§’;õÝq9}—Ìj@ ÆÒš’ç2Y®Î\[žä9ö¹3®•ïÞI$Ä‘|qþc%"iG@–rÑÑ‰à¹ØB×rþ'ÑYé‰WÎ'+™ÄÖ›ð—™PX§A&­{Ç7-pUµ/¯¤D^)'®ò ~S3Óß~Ö;1ñÙá9ÝTôþßó×+þañ&wRµø'Pº¯@ŠªÞy±S}ì¨duÜB$œªap&Pô›ð\6ßi‚‘ºñ$ïØÔØ`ìK?S¯,&+™qxE´ºÒfñ[¤åµî‹Ý‚Ó4ü3y É+é˜_½o4úêß$ªA&_ôívt”¡vßy£SÒã‚– î*zÍk [^5 HciMɳò{mwTWWË“|UU•ÍöÍ55Õ q$_Ds!’Ôë ¼„—¤J"^ÏûüžåUÕÇ{§aãÈL8ceÐm޲î`©×c‘Nd¬Óp ~3ûãÈ£»ƒÝ¿BjÏŸNY©wY#ÝW ‰É/7ÑM{ í^Ë‘ð®S¼‘Àâ‚2°=†l 8`swÃŒ7Ҷ寞ÍgÃoÝ»§i’|ÏÅu»JÀEÄf ó‚pp2“‹„fŸ$/¯Ã!HcA$ïyåßÖ<ƒÙ0É×H$Ä›®)å-Ú‰ªaúÛœåGO_§ DÓÔùé¶ÒoOlW/™ yáST-ŠJJ„…Qj$¢òFl9‘±NÃ)øm¤[í˸A¶ Ü›Yû $ZðÝ)Ò}%šÜp‰E7­è­ÝÝ GKä¦íY11ïò­¥4îVj]AÏ€H©šÃ30ÓA²[÷¥nÁiZ£$?êBºk¬–Ò츣î,´Tz×c÷†VÝ4ÕºXÓBÄ~9ü/™A*¡87H²<47Ém¬ªÞ,üÈX§áŠ}Ÿ°0D»Ïª“ü£ *:ÈL2Ì> Ý \Ô•<šUä?Ï·ˆ$»Vòyavd’‰jèËø|.·u¸Ý‚Ó´FIûNC ù™±ò%/ïÓ@ ‘|Å«—­ y>÷8èáí›×åIþÖ«‰ ño^WH$<;PO§Ï!t³LÈî¦Lu6^"Z©€¦A&®Nf ‹b•‰„Å~ }xMˆl­ìm8âì*#õáÇ£ð#ƒïô|§Ð¦I¾Ó§ÐÍ&½–Je%š®ÙWoºfxº¦”Ÿ9V[iÔ® —?Lt¬-ÁäŒßºÆö'¶¤7¿(yÉéšœÚéœO4ŠÖ”|yi)—Åvurˆ ‘6|xXˆÛךêjéG(é· Ä…ûΆÇÄÅ„úÙ̲ +™†ðÁ®‚¬c› ‹M¡çfú_ÚA$Rn‰O\¯/îCUïïxãazfF|øCûm /Ó ±yÊKX.š6¿@$©3Ì'\~dÏ‘†Fãeææ2òX8…6MòJúê›ÎúdçdxžK$©\¦”K©Òi‚‘†éïwÃâÓâao¼z,è©Õm!¿Dô슥:e¢ýç©*éÖ5¤[ä5M¢$6¿(y°rd¤¡N¿ù1©ñÁ 6ÝxMeã|:¤Q´ªäâzÍÕÙÁýÒ“ü3Xq¿t¾|ñÔDf°ó»Fõ5Q"ÉJšÆLuÏCÂytÉcëk*I”Î=†í<^›¤¤èÌö…½ºh“$M}“Ÿ§¯ˆ) ÈM(f…¡šN»/Fæ&Ÿ·êiH&'åÚ4É[öZús IÛ¸ÿnx4«ÊR~ƶ¹ÖzêUcð„ÅO¢léÁ6dJÇ«uóí9þ›H›âï™­kP·ÈišDHl6Dò¢ø•‡¨QIZû츫E&îMçà:¤á´²äÀä¯_¿Ž çíûv¨ÈˆªÊJy†omJ#5©Ó}2Ú°JT°ÖɃϸA Âòù_» äû¡õ%x^^VQñªòÝ;p_S]]UUùæu…ô, ‚ôsØ¥ÅëÆÌ£žžEQéÅ(nË;}_IòßHë°°¢Oþëó4—ž—°|¸¾nÿmm^%D‘hÉËPIJšÆܓ۶_IòßHë°0"w 47¤’‰m«ÉËÃ92î@ &%@ ”<(0Pò¢À@ÉC ˆ%@ ”<(0Pò¢À|Ë’/(ä]½}üò££—‚ ä;hÈP!%ïéô,“S$Ìç•B Èw`PdÆ€Ø&‹ô[–<ø c ¹¼Rùn2l_’/+ò 9L+Áb0óÙ\>¯¨¬´D"¸Tá•B Èwa;’¼ ˆ——“ëçsÏÅñÄ^ÛWÇ“þ|¹,¶PPïž ]œÂ’o„mÆšCE·y5Z;sá¸þ*d"‰bÀd&uèÐÁ=³ö*òMÑŽ$ Ÿž”â`ìªûe›…üž<›Å¼â~Ééä1zíå‹çXɳ K.=´|†‹F6,.§» Ú%qÑÀ¯ ÐÑL†°³cUt§‡¦ÐÓsØLNîÔé3Òy_¯¸uFÜbÑÍËÿ,ÛêÙæ|ã´É—•4º‹ãɈðPé7CE„…¸vyûö-ú›ÃXÉ«wí®Úi!ÚäÄ€%TáíEò4Vq›yÜ[Ú[§ïõ–ͧ½’‡@ ¡½HžWPàû†'(èÝ»w¶¶¶Ä X› ð¦çµ„¸˜ŠŠW¨äYB€Kwm“ÉžÝT()\$äøN–{Üä÷'rཫ†Z˜©PHÊšãæîLb ð%jC<—ü2TOG]Ó°÷ÆóñHøHM¥_Cr‘u@' is, 'Ÿ­"ÉG¡ñQ@þ–GܦêÛÅPOÛxà¶KñhøàãfŽé¯¥®Íã…ºŒUÖž„Áä0L•ÉK‚r$Šfr9‡×Ì6ï¤E"R:™Z{%Ê,H^?€Ž•þ‰þ3 À®›ô¼8 ²òÝ”P‘ä8Hÿ¶ç¼EƧ?ò»5¥»VÏ%ðÅjJÚæ®é`=èâJÅ ŠÉë"Y=ÍEâD²Šaáä#ÒÑÑ(4> ÈŸ¬ªç˜ÖÃoî§’ÔO§ä#áu{ŸD°ž–Utغ‹Z—‰îÑá¡Aˬ:©›Ì¡‹“‡_XDR2õÎ.ÌLöÔ&“V{eˆHQ'÷IJ"b}æQTûfqŠ%Š>3»§²öð“×=KHõõºbw%Ê+H^?ÜYÔS·¯'’!=/téåô°¾g„aG‹y·Ÿ&G†ÎÔU™HXÍÄé7‰öÊëÆµ]4†9Ơɱ½ÚØš?q´]'ý‰@ ŠG{‘<+±×vGuu5(ÈÒÒr£xA$6A`UU•ÍöÍ55Õ2%Ÿs€ª>4—+ ;û“¶ÅAzî3¬ä±$…,Uî8YŠè6ϯnW±‰2y5®¬äåƒ#y£Ÿ=ÑÍý½´»/zˆ„›üæ…æÒÂIÂú:²IË›[ê¾Ûº‹ÞàÍ ºw4›æ†æc?Ì ëŒ{ÈúÁzÝæÞ—(|( +iØ@œ‚äõƒLÉçÒBAÂñl$<#Ñ„Qòh{qºQžä›PógWÿúaÔŸmxÜA ­F»‘<ƒ‰•|ÌR_ò5¨äùBFäÁÊmåžÒÿ6ÖüãvZ®Xòû8HœØ{Î? DAfHÔÎH8Pħâu†ØQ†Ñu²BÃõ)¤M1,œ|¶ˆu„ÆGù=nÞYÒKËÜ©6Ü1 LÙ²Jb ÐhVšJ£®¤ ë¹¹‘@\Tá‘ >!!h%Yµw§4S•Dwƒ¹wå4c5"‘Ò©ëÀµ)ò Âéy’ý³pü`U IÓÀbÝé( íÍÑ œ~“È_^7&…ŸÒÝD$PTHôjck|r8IÉ´Í>¤hG’“¿~ý:2,œ·ïÛ½V¢"#ª*+±†G$Ocñ¿qv Šù*™3 †jP»žÒæmLK¾J îeæ·yM ï“ö%yÀóò²ŠŠW•ïÞÓøšêꪪÊ7¯+ÐY ÉKÿ·ŽôÒ†ÿ•$—œuãÄ ²JÏØ¼¢6iWü£ãN׃£’rB‚ïÏ¢¯ÝwKv2òÓî$ß@@»r˜¼o‘ä]cZ<[} IIÃhÅ騶jWÌÃ}Ì ¨$"Y¥ãà_–ú¤qÛ¼«!ïE•üñËÁ™Œ¢l&@¾[€ Ròž~±BR3óв<ù¼’ê鯘o†*(ä]¹¾ÂÚü5‹Ò&^½UXÄo¦ä¼¢oPòi&ˆäO9;BÉC ˆâHèJ@(yQ` ä!H;¢¬´DÀãås9\6KáÍäóŠšÙcPòŠÍwuD@šO‹Xå«RXâ`tÇÖM[7­o×€?iTNöîãcc^¾(oNAÉ+6ŠtD@¾6`8œ8ÚL«|=Šù¼¸˜èCvû€ú Š Û5ˆä?ÉYª««ssiçÝN3ô×uo¾nPò Œ‚¯MA~~Td0ÙٙͱÊ×\h8´ONJ|]Q4(ý‹åíkA%ÿQþÂÌË»êñouuU“; J^Q°#.­³0òèN'šc•¯°"¸Üg,Š1žÉ“¿TVV:9Ø¿_ÓäNƒ’W`숀Kë,@,`Ø4Ç*_uHoÝ´\t´u'µÌR'ù ·qq ä!2Q°#.­¶€a%ß "y‘âÅ?ºŽà/^°!Pòy(Ø—V[ ä[gA$ÿþýûêª*?¿Á⬠Pòyà®V½ÿ¼ÆhÁáŠÍp÷àž3p[0s¸´ò%ß:K­äkjª*+~ü9eÊË/`l"áPòò¸ØS»óholȃɦÍíËŠ™ yÛvqÍɹ!ë¥s÷Á›\e–øÅ8­I»–¼ý½§y³š]/¸4ei ä›9à·kŒ8×RCº¥–÷ï‡ÖÎlÑÝÄÔ|øO3NûÓÑ]A§¶ØËÄ¬ÇøY뢅•M‹]É×ÔÔT¾{8|èЋçÏ‘u°6‘õ‘<ø˜¾É—— ÃÃÜÇtVﲦn3äþÓYáaÌb!ÈMˆs\lLLäÇ?„½ñL鿇϶Z@ÉÃ¥iKÃ%ÿÅ/p |›’¿5spË%O’i…ùŒ»NËŒŒ»?¯áùëLÌ]~œÂefœX:¼ç•5Ÿš»ÔJ¾ºêÝÛ78À3yœ(GòõB´ÌJ§•¯Ÿ[ÉhMjŸÕpKüg¥¡ÚN—æëßQCyÈÁÈR~æöyÖúT²’æÐ_—È+¨æMª¹±‰k@¼ ¤´€‘á{í:’ <“oÃ¥I’ÿ<àåp‰AâL¾™Cº¥–Ðm?õýi7÷U 0všßSs«Œ75Ÿ>¼256ÚHŽFÛ0¨Ç¤SÙMˆ]ÉWUU¾y]C‹H¾¦¦Z!%/=»Þ’/åž_²Z”#wÌׯv×)µÇBqA™@ØÃ@6œ@°¹»ÎáGÆéÛòWÏŽæ³Î¡Ùž±2è6ÇYw°Ôë±ÈOôÁÝ^>jìŸø=ÐÉ×¼¥™Ì«=Ǩ©H›.¼×ï+YàÜã`f9Îáð"og·¾‹$2üO,ù+ŸÖFúTcifr¼ B^AïJn›ôb¿{/‘9”|.–-îö¶”Ç‚žZÝòKJ…¼KuÊDû4 ~\ˆ”'ÜÚZjNþ?ñýÐÞV+Â3Ù…ÌÔz7^7ŽëÖÚÈt~1?=&Ð#„ÿ¡Škaj|ü™(÷¼¸i}{7\òò zSì~ôÂLFAiiqìGccÓ§/DO Ï+óä²á=×>ÙØøØ¥Vò¯^ ‹8´ˆäß¾}%Þ‚’/ågl›k­§N!Q5OXü„!ò6=؆Léxµn¾=lj¢s“V€¦Za¨¦ÓÇÝlÁ§k>ÖNl˜7°—™I×Þ“mO}Q÷å‡7VÐÓØØlðèI'CEO×äÝ;f=¸Ïàá#­[t3Ì®Q’—YPeyÀòÙ“õîflb6dìŽ÷j/i+¸>S ®yá#”­¿4Sò2G¸ôÀM>oÕÓœa"P~#O×Ô¼J·]1}@¯®FÆ`@þnî tÝ6¦Ý~š¹6Zø®iñ± "ùW¯^ ø8´ˆäß¼y­x’W(J#5©Ó}2•JÁþ.­¶ÀŸ5h¥Vò/_ø<Àîݶ\Y+`YoÉ¿®€’o[äý¢ØÅÌ£žžEQéÅ(nÜË*Ø—V["yœûõP°!Hþå‹|^à†§ç¤I“8l¬€M$¼E$ÿºâ”ü7‹•¤¤i¼Á=¹± 숀K«-ðL¾uDò/^<ç"xz^ ^À Ø"’¯xõJ^ñP°#.­¶@É·ÎR+ùçÏ‹ P<¯_`CZDò¯^¾€’W<숀K«-Pò­³ ’^^V˜ÏÅ¡E$ÿòÅs(yÅyý_A~~[e¸´§åýŸ" éZÉ—•p9òÈç°[ä¯/ž—CÉ+È‹¼c££Úz,Ã¥=-ßò‹¼lH#’µ‹Ã–GzJÊU›óq ’× PòЇ€Ç‹‹‹>d·–“ NÏÚzDÃå[_À C ˜ììÌŠŠWm>€~H#’/+]¡HÃa1SΟ=Í`Лóq ’+PòŠGYi ¸FKINt:q\änÝ´Á 0TRS’*+ßµùèý†4"yy89Ø_u¿œ“ÙÌ‘ü)gG(yEåÍë p­÷þ} òEÀPyýº¢Ííw2¤ACZáã@$ÏfæAÉC ˆâŸ“‡@ J@(yQ` ä!D’‡@ J@(y…GÀ+’ùÿtXò9ìr°´uU!H‹%¯ðûß÷±Ù¾Y»m¶ùûÝßF?H%ñJ8”=¦šÃcÚ¼÷Ú %üŒÅÖýT(DÕ esÆ~íèCiGUýÚ@É+<àDh¼ªªJú§3^¼xáááQUY "HK~ŠŽŠå¾lÈ óŽf“}›YŸ­Æ#ÎÄ¡›ò$sÍ_»dµyïµ’.ŒQÑž˜Cç°9-›s+H^bH´xµ¿s ä ypº.møüüü1cÆtéÒ%::DøÖ$ßâðy{yâ7^‰äVôÖíçù5*ÐR’Ç)Jþ«%¯ðÈ”üË—/GeddtîÜ9°ÙɇŸÞ<ÈLŸB$©jŒœ¼ ,+)pX?³«¾‰¢Ümð„s!t‰l6VòÅù•ˆ¤=Y4ZjlÈEGG$‚çb ]ËùwžDg¥'^98Ÿ¬dS(ÈVúL^ͬÓ×[ ‰±m~&Q 2ùÅ嘃T^YX@&U½ób§úØQÉê¹…H8UÃàL`²¸øNŒÔ'y‡Ä¦Æ¯ÙIÃln‰8yê•Åd%Ó ¯ˆvC—BÚì'š&Åi‰GÓkg?hó¨ª}y%%ØrÛØúäeP„s¹HFÄJ#,i`rÐlM‚—õÒëÝ”×Rœ·ï¾þàqzff쯙=µ,Vø#á ”|sú_bHÈ‹ve~/eánwgd¥‡<¸zB,yy‘5~(y…‘üµk׬¬¬ À§Îá,X€:¿±’/¢¹Iê‰õ^ÂKR%¯ç¡!«:«÷N“ÈVZòfܬÝ,åPI›SØå˜ƒTfY€LL~¹‰nÚ[h÷Zˆ„wâD „í1 dSÀ ›»ë~d¼‘þ°-õìh>ëšÏ+ƒns|uK½‹ü$Êml?`ëØÑU«ÿæ§ÈúµŸŒÇ_iTr,XÉã´',̘eÊÚõJ¾9ýò¢ï\%"a]X½kCœ<5~(y…•<ûðáÃóóó'NœØ­[7.—ÛdÉ/Ú‰ªaúÛœåGO_§ D—öù鶤–ÁvÙJK~¤[<º9FKiv\^9Ö'²Ê’dbå‹n>ZÑ[»»3Ž–ÅMÛêÃ,þœ|´–Ò¸[©Èº°ðYWe2Usx¯þ7EÕ¢¨¤DX¥F":eåKÝÈ~ÀÖtÉZYgr¹x.ÈT‰¼*’Þ¨äX°’Çi)N¹]'ë­®DAJ$Q;#á ”|sú;$äEËOÛ Âóêú8y6jü(6Pò :]ƒx¾‹x±µµÅNÑË”ü}Õ~ëŸ`Cv™jšÏ¨;›-„Þõؽa…U7Mµ.Ö49ârø_8ˆðo¼ŽÕRš[_ò²Ê’ÈS4'l…n.êJͼNŸç[DB¸]+ù¼0;2I‰D5ôe|>…~¤NYš›ä6VUo–ì5¦$ ND©D‚+­€²„¢Ò£H<ÔðäXdI^FKååP*Èß2¸’Åà–R6£b6tN¾ý/Kò’Ñj%_,Sò2òlÔøQl äìWàyDòùõ_…,Sògêéô9„n– ÙÝ”)£ÎÆKD+Ð4ÈÄÕÉ,aQ¬2‘°Øï Ï=‚o ìY_ƒ$/U–D8ȤÓ§ÐÍ&½–Jd.,]Úwi¿G|i_ÊÏ«­4jWË&ºÖ–`rZÙÛpÄÙUFêÃG•ã¶«!ý íX»^Ú}×>¾<¦³Ùï·këÙ˜ä(XÉã´T^E4`Ë|a­-“.Œn¬ä›ÓÿØ!!/šÌéœ<5~(y…Gâéàù3fH¾¾¸U½¿ã‡é™ñáí·-¼L/”ÈÖs¤¡Ñøc™¹¹Œ<ѱöEÉË+ ÈDI_}ÓYŸìœ ÏÃs‰$•Ë´éÌ&i˜þ~7,>-îö&Ç‚žZÝòKJ…¼KuÊDûÏSL<ú"I@¤<áò¤û¶±ý íØ4Ï_”:Ž3¤’6Õ™ªQÉQ¤o¼Êl©¼Jx‰Zd⟰^˜î?B[³±’oNÿK yÑ®Ì륬cuîÞÓ̬ôP¿+èW™‘5~(y…§öŸ¡*+Q¥ …B¬áÁ®=»¶Ëü×°ó»Fõ5Q"ÉJšÆLuÏCÂytÉcëk*I”Î=†í<^›¤¤èÌö…½ºh“$M}“Ÿ§¯ˆ,àKÖ'ù¼UOC2‘€>B‰/y¹eaÍ ŸöZús IÛ¸ÿnx4›y)?cÛ\k=u ‰ª1xÂâ' ‘·éÁ6dJÇ«uóí9þ›H›´4Õ C5>v2û¶±ý íXðµ¢F"RÕJ19789Š„äe¶?‡Øó›zv441ëm9ÁÕ{uc%ßäþ—ò¢• ¹'ÖL7ÓU#Š¡Ü¹QãG±’WxD?kàwh\ÞÏ€]ý¼¯©nóª6™¯øUÿgïLà[©êÅO×Û»s7ïE¸ÀEvPAQäÁST|Oþ‚‚>ž,ú÷¹ƒ ¢¨ž;«‚ ¨xÓ$Íž4i“tK÷%]ÒìûžÉž®··½ þÿg2Mš&™iÒ¦i;ýÍçûég:99sΙs¾sæÌdN,tþڻ„º Ïãf¦l¿hVHžþ$Hà+Ì)üö™S³³…Ç™ûøZ60ë$‡ÍÚüÇ»kv^jo¯[u›¤ü’’hÀ:IæhmÕŽ}ç}÷Ñ Ïà&$¿™ÉÐ<ÉÐ<ÉÐ<ÉÐ<[ˆx,Â0¯Çíq9iÊf[ë›v@òôf[µ`í”Ä*ëŠßçÕiFåR1]ÏažÜÒ §øeP.ë5cS“‰µ”HžÞЩEëM©¬²~„ƒ˜I¯kòL]0àßê’?sf!/33Ó.‡­QÄóû<³3Ó«.4<¡Y‹ÖÌï3ê´k·Êú.4²F«É Óa:¿´äçæN‘Â(š¤(̪÷BH>„@òôƒf-(»uVY?ñÐå:mxJJ•$ù………S§fɘžžBYÎû&ð!$ÿâ ÏäéÍZPbÑÈ­²~V¤M•.Dòfí’ÿ׿þ’§4k@ÙX£UÖšUé”äçgggÒ¸œ·Ë‘¹$A³” |9³³0??;3MàrÚM-r™×ãJoÉdP´ˆ!K¡q—p_™öó™-©Ùô€­H¾œÙ™ŸŸŸ™™žI¾«£ma®¦§³yžØ’_5±£¯M&â0¹¬z‘@Ð֮¢QŠíF1[,7SDˆ,>ƪ‹%Cãö5¦pliÉ«,¥Ö³±¸m)Ð*k¬ð«8Äe|<âìh'›¿D"5,5‹Z%屸lf“¼Í…W>7;óó§g¦§:ÍØÂÂ<±>9‘0êµs§PG~ª$’ÿç?ÿ¹ %ß%` ¥í›Ãïu»¬†ážVw$J±½É‹dc>¯ÛçvhûåèÐŒz³§±Ž%Ïå$¬ŽÂ%¿b…'5„Í)y½œÃç+¬æw†èüe á“?Œm\6gÜlxê_Ð[UøÜì ÉOOOQ’_ñˆÚŸýl!ÙöDa’Ï Ð©oêu$’ÒSŒëzb!‡)qÅ£aU³ˆSÏe³-*w²JÄÂ)›Ñ“r£wLÁãHü‘¨_×Äã*—ö 5²ý.¬<(ù¼éIî+¬ío—òÙ\C,’¨Íx<Þ‘n¥„Ïg3xN[ç@8ÍåW©³©;d†@ 6z©wäÑöÉ…´>—£líE[¬Mœ¥_è4ˆ7¼¶l7 —|Þ Ov 3²a|ˆË ù.S1šîÿDù,FgòÌÕËgʺmÄöxÄÅcLn/6|nvæOÏ¡ž; ùÕE,F˰)^ØöDñ’ïà1e]ø,ªÛH‰zîºH8ªSrù…Íå xíͰØWÀ¨â²y®p$4 Y µ-¬‹¡ ,žtBŽv^ƒ(‹ùµR˜:Jž,=æN!+5Xê£Ø ãIÉ{Ñ5øœ¦.1[ÖcËå—/䨵&¿Ïc’£þ 1Þ•wGè¬Êc1FŒ¶`C}£fŒˆzòÈê$Ÿ®ðd5*«!dâ5VéRaë %]|êö¨ÛЃ’äAò±—u²Û³dénS®v­"|nvNŸž›šš¤$¿j¼Ún1ê‘ry-Ê–A5ºÐŒPo/Fò§¾š^.jT·Û¿ˆÎé\æÉáÔ9=¶¡GR×(¹¢¦¾>1[Ú¡MG«oâHUb]+mvYÑ fél‘·Pg°É“¥\ð¾å%CØÛÉãʳ"Låט A…‰®ŒÈv j¸,–?’=Š’ß@Š—üR…§¨á™ !‘sˆ×X¥KF,¬np˜ ›Œ=îĈ\ ýŽ–ÆÕÇ„li»u5ás²sznnjr‚‚’HþÿøÇ6”|"y]é0ëÆ†zZÐ2¦Fiòn/ìÆ+ƒËb ZÍe1Û{;¥øðEª2Gè¥G9É‹ÜV³oq¿w#>"Å2†îÃî.nƒ0Ã?Eƒº|wpòRˆäÉÒÍÙNrhÚ›„|6ƒ¸Ðæ²¹Y.æWçÉŒ° )I3é•qx^‡ªS£5†R@òH17^³+;=y%$l†jÄ áµ7âïCIÍŠ0‘sãµu™äóf<ê¶êGú»”"_ÐLx$¿uã5«ÂS謊± %®'Ðl¯{i˜¥‹f!~)6|ÞìÏI’„Aò¥B+b %ZŠíŎɧɬÛ³èò¡•[ß2d×µñ„Ҟ̛®¡¸y|@ÀRŒñHLɇk¢A Š0šj¿~½¬pÉSS-N °¾¡r$¿1¬nLž€z¸&³b¬â¯»ä£~Ÿg™´›úð»É¹7RP­.2|ÞìÌLOGÂ! J"ùwÞyg»I>qËmã:ƒÇíöy†áNtT:/ÙöÑo‘ŽzÜÎ4å#É…H>‘¼-%*m.æu,¿Ñ)ˆ:b1TÓ¼¨ëÞ>¶tÞµèr˜Ãªw‡{ø¥“§JJÈãI Ö¥¯(aHÂj+Þ+‹lJ.«pÉ“í(Š Ž{¼¾P0à0  kkò*ÆÒÌ‘(G° ÁÛÕÊÍZ$Ÿ ¯QY#ëo’1ùA1[ j±:ݨÖÕ­&c,ÙëˆG"¯s¸•Çç+c« Ÿ›òH~çÙçl7ɣ멑¾Eòi@üW bÉÀˆ‘j{æO?R´;—M¯P äÑÙ_zÀLžzÀ,ä@~c›SãíA{—Õ` .éõñ™B‰:ýo Ÿ®É›ždQ„ÇûZyø¯<Ä"ɰǧï“ñÙb!_&•ë-=EI>ïŽbA}‡\BüôL,nÖ/žÚ">­RÌA×¼ðeùY£äÉjTVÅÈ:Ä›äéšXØÑ×&E‰Oþ«Q­u¤?2«UÉæ°ìÇMņÏÍÎôôT8¤ $’×ȶä·Q%§¾ÓZ\ݦÙoÀ²¯5(gvÒ’á×5øz  Q7¾T’߆Ã5Å’w&òì:œÚ6nƒ0÷YjhÖ"€²±«äm)¥j,4«Ò‹’ŸšDnGX-殎6¤w,àoWʽ7þ’• VÉŸuÖY ùM þÐ>‡7h,úE4k@Ù€ž|9³“–<Ân5+››¥bŸÇ=‘ˆK"ùÙS³ yúA³” |9³359‰zïilsr.õxzKi$?;’§4k@ÙÉ—3;““XÀŸ ê½gþ[ɇMr<ý ¦ÿÃü¾ O °…ØäÓÿÑ©J“I>‹’ÌñzùµŸÉÓb"o³Q¿á)¶›y"ošUéEÉOLü>2¬fÓ!ù©©I<ýa˜É¨kñl3êžmxz€Mª$¨ª  ã÷yff¦7<=¹Ð¬J¯(y³ÑÐ(\ëá $®@òô#‹NN$ÜN;êü +>²gÛ€UTUÜ.Çüüé ¯½Û¡J’_ïñ(ù‰Hž®œšA×zï¼ó6¬ª*³³3^i·I•F)Ãá $?‘ˆƒäè!y´’ „äã±(H€~’E# yúAH> ƒäØüÄcцy=nËI{P6“¯8XS‰’„C yZ²­Z°vJb•uÅïóê4£r©x;7;óó§g¦§:ÍØÂÂ<±>9‘0êµs§PG~ª$’ÿ׿þµ %/’ŽzÜN¯I)šþW'çò=éñ(^6æóº}n‡¶_ŽŠ}ÔÌçJabÑhÙò’VGá’_±Â“Âæ”¼^ÎáóV‡ ó» C tþ²„ðÙIÆ6.›3n¶¼Nu /h‰­*|nvä§§§(ɯT?År3Ù§ŽVž@¨¦ß©oêuPÇ™ƒ¤§×õ(ÄBS>âŠGêf§žËf)ZTîd•ˆ…R6£'åFǑø#Q¿®‰ÇU.í%jd3ú]X!y,PòyÓ“ÜWXÛß.å³¹,†X$Q›ñx¼#ÝJ ŸÏfð8œ¶ÎtúËåW©³©;d†@ 6z©wäÑöÉ…´>—£líE[¬Mœ¥‹¬ñ†×–íFá’Ï[áÉtfCXv]ð!.ƒä;¸LÅhºÿå³É3W/Ÿ)ë¶Ûãur0¹½Øð¹Ù™?=‡zî€äWÇ%ßÁcʺ²/NÉ º”¨w஋„£:%ºLPØ\ž€×>ÐÌÛãÉð£ŠËæ¹Â‘hÐ(d1Ô6ü×åñˆGÀbh‹º‡í¼Q,ók¥(0u ”]áÉjTVCÈ:Äk¬Ò¥ÂÖ%JºatbŠº =(IžHu®¸¬“Ýž%Kwó˜rµkás³súôÜÔÔ$%‘ü?ÿùÏm(ù̾Dƹ‡Rò§¾}¥×‘ýв0¨n7¶-¶tNç2O§Îé±° ý;’r¸FÉ5õõ‰ÙÒm:Z}Gª²ëZiƒ´ËŠV0Kg‹¼…:…Hž,=èä‚÷=(/ÂÞNWža*¿ÆT°ˆ˜ÍPûCd;Š5\ ]³dE’ß@Š—üR…§¨á™ !‘sˆ×X¥KF,¬np˜ ›Œ=îĈ\ ýŽ–ÆÕÇ„li»u5ás²sznnjr‚üêÈ“÷—M œWòè8rY Tc¹,f{ïXÞ8ó†Á‡/R•9@‡,=Ê‘H^ä¶š}Äz<ânÄGB¤XÆÐ}ØÝÅmFcø§èbP—ïN^ ‘ `)ÆŠx$¦äÃ5Ñ EMµ_¿^V¸ä©Ç© '† XŒ_ˆˆP9’ßV7&O@=\“Y1Vqˆ×]òQ?Š¿Ï³LÚM}øÝäÜ©¨V>ovf¦§#á ùÕ±Q’O$oK „J›ËƒyËot ¢ŽX Õ4/꺷-÷cA-ºæ°êÝáÅ~©Æä©Ò£òxRƒuéÆ+J’°ÚŠ÷Ê¢›’Ë*\òd;Šb#C£ã¯/ 8 èÚßš¼Š±4s$Ê,ˆ…Cðvµr³É'ÈkTVÅÈ:Ä›dL~P̈Z¬N7ªõFu+‡ÉKö:â‘HGÀënåñùÊØªÂçf$¿Nl äÑÙ_zÀLžzÀ,ä@~c›SãíA{—Õ` .éõñ™BÉR’JøtMÞôàÄÂã}­<üWb‘dØ‚ÇãÓ÷Éøl±/“Êõ–ž¢$ŸwG± ¾C.%K"7ëOmŸV)æ k^x„²ü¬Qòd5*«bdâMòtM,ìèk“¢Ä'áÕ¨Ö.=)mV«’ÍaÙ›Š Ÿ›éé©p(HAI$ÖYgm7Éo5¢JN}§µ¸ºM³ß€e^kPÎì¤%?<4¯kðõ @ÿ¢n|©$ÿÎ;ïl+É“½¾`Ö—psjÛ¸ ÂÜg]¨¡Y‹ÊÆzH¾$mfUzQòS“Èí«ÅÜÕцôŽüíJ¹×ãF h;Hžöˆñ‡*yƒÆ¢_@³” èÉ—3;iÉ#ìV³²©±Y*öy܉8±$A³” |9³359‰zïilsr.õxzKI$êÔ,Hž~ЬEe$_ÎìLNN`&¨÷žùoI$?;;’§Äô˜ß·á)¶›|ú?:Ui2ÉgQ’9^ÍN'Hž~y›ú O °…ØÌyÓ¬J/J~b"à÷‘a5›Öx8ÉWWV€äéGÃLF]£ˆg³˜Q÷lÃÓlrP%AUU¿Ï333½áéÉ…fUzEÉ›†FáZ!ù©©I<ýˆÇ¢“ ·ÓŽ:?èŠìÁQ @•U·Ë1?zÃkïv¨Ò„ä×ûp’Gå’§+§fgеÞ;ï¼ +‚ªÊìì̆WÚmR¥QFÊp8ÉO$â yúAH­€äè!ùX, ’ „ä£ÑH€~’„C y6?ñX4„a^ÛãrÒ”Íä+ÖTb„äá Hž–l«¬’Xe]ñû¼:ͨ\*ÞPÊeb½flj2±–#$ÿâ Ïäi Z°Þ”Ê*ëG8ˆ™ôºF!ÏdÐþ­!ù3gò233ír؈ߦͮùÇP(*<ý Y‹ÖÌï3ê´k·ÊúA¼ÖÀj2DÂt˜2-ù¹¹Sd 0%y­ÁÌôHž~ЬEåa3¿»Æ“|AY^o¡\XX8uj–Œéé©’¼  $OKhÖ"€ò°ÉßBɡݫ†©%à”âUà yZB³”5Zeý Y•NI~~vv&Ëép»™[@ò4k@ÙÉ—3; óó³3Ó.§]ÑÔØ"—y=®ôFüéç3[ EOŸº% h#B–Bã.á¾2#¤q‘n@òåÌÎüüüÌÌôLÒð]m øs5=ÈóÄöí)ùfêTJù <ƒÏå*[Úu–U*«„F2ŠÙ‹O£±êÅbÉи}cKiKK^-`)µž-ÀmKVYc…_Å!.ƒäã÷`G“˜Ãä²ê%Ù¨a©™XÔ*)Åe3›äm,¼ºð¹Ù™Ÿ? ŒÐiÆæ‰õɉ„Q¯;…:òSÛPòQÌ(m`Häí“Åãq»Výh«„³ºØÖb¤X4šù/ªó"Ù˜Ïëö¹Ú~9:4£Þ õWÖ<°: —üŠž Ô6§äõrŸ¯°:\˜ßmR ó—%„ÏN0¶qÙœq³=àuª[x|AKlUás³ƒ$?==EÁ6”ü°„-”tç”Ø¢<ãÑÀ°ªYÄ©ç²YŠ•;´8} 2B£í’‹$‚¡PâÊLªób¹9ýo §¾©×‘û•¼)Œ…R6£'åFǑø#Q¿®‰ÇU.í%jd3úS‰¡¦@É“•X²Ú¥|6—Å‹$j3w¤[)áóÙ ‡ÓÖ9ŽEs#$+R²y´}r!‡‹_”q”­½h‹µ‰³ô ñ†W¹íFá’Ï[á©Ú`ª!,ûVÁ‡¸ ’ïà2£éþO”Ïbt&Ï\½|¦¬ÛFlG\<ÖÉÁäöbÃçfgþôê¹S°Ý$.Ž¸Ì“]NÒ_^ë”\¾@asy^û@3G l'·£ Æmh0&õ°ªy,–9&¶ó…µÖä÷yŒCrtòÅ’mK—P$í°9ÝÁ€×<ÒÁeó|‘(ùMïÀÅ g÷ä3ë|)ë²ç~…,…£ íÅŽDƒF!‹¡¶’ùõX M`ñA÷£× ŠÅb~­¦.«%O–s§Ç•, õQl†ñ¤ä=ƒƒ› |NS—˜-ë±åFHV¤yw8x,ƈÑ b¨ÏcÔŒ‘@O~YäÓž¢ f6„¬C¼Æ*]*l]"¡¤+F'¦¨ÛЃ’äA ?â²Nv{–,ÝÍcÊÕ®U„ÏÍÎéÓsSS“l7ÉGj”ec0œþõ F!tÆD§€áÔ3¶¡G’†DLÒbLÇ3.a˺ ÜØ–Þ³j(õ¢3²%´4‰ä€€Õfñ§Â›ó¦-£ÎGœú”Î^G ë+)Dh”\QS_Ÿ˜-íЦ£Õ7q¤* ±®•6H»¬h³t¶È[¨ËªÉ“¥\ð¾å%CØÛÉãʳ"$-R’Eƒ.‹ådbä7â%¿Tá©Û`fÛÉ:Äk¬Ò%#V·8LÍ@ÆwbD.Ð~ÇKãêcB¶´Ýºšð9Ù9=7759AÁ6—|<ôz\—™“¬H‘ÀZI!$’—­f_‚C_ªQ®¡P<¶¸]çÉ ßå Fƒ¹oö»ÓÈ'y*yÆažä²˜í½‹Ò̯P¤0‘¼NiÄGB¤XÆÐ}ØÝÅmFcø§èÔ£Ëw'/…Hž,=Ñœí!‡¦½IÈg3ˆ2á²¹Y’)yÆ#½2ÃëPuj´ÆP*H~)æÆkv…_¡ fÓÍ9&oî–ð… ³Íá÷8õƒ-¨é9 i>7;Hò½Ý*2¶¡ä‡kˆkPÇ{¹ä—>Â+˜e±‚)Æ–n5:»iÉgÞ%lÍ0R0ßMRŠ»ŠÄ}(tÒñz<ጮiæW(Rˆ»Ð…I=—ͱ‡2g¢È9õ}.̯kâóÚ /«b$Ÿž¼’Ç6C5b†ðÚñ÷¡¤fEH]¤$º­ú‘þ.¥ˆÅ4žÉo EÝxͪðÔm0³blBÉ£ë tÛë^fé"†YH†_Š Ÿ7;Äs’dD#áí&ùD¾¯iÉS_*Šš4é¯ Yéáš\#ƒ½¶<#ÿÔ’Ï¢ÌûŠÆ£Vn}Ë]ׯJ{â1 ëqóø€€•yžZ‘’×Dƒa4Õ~ýzYá’§§Z,œ&`1|!"ÂÌ+/ œ¬nLž€º fVŒUâu—|Ôâïó,“vS~79÷FêªÕE†Ï›™ééH8DÁ6”|4`È|„Òã´Ž´¡rÐ$/ŽtJ®@¨´¹<˜×‘}Ó‡ÇÒY‚˜ß2ÚŽ®.M©¯¹FJà7^E<ŽXk¶a¿ßmìÈ>“B$O‘Bs§@ êˆÅðs꺷-÷cA-J0‡Uï/öðK5&O••Ç“¬K7^Q„ÕV_ò(Ø”\Vá’'ÛQ÷x}¡`Àa@×þÖäUŒ¥™#QŽ`A,‚·«•›µH>AÙ3+FÖ!Þ$còƒb¶@ÔbuºQ­7ª[9LÆX²×0D:^çp+ÏWÆV>7; ù¼D1ÛJ!å³yÄsw-ízKú@¿:õø–|ùã[J­©W)æ³BxÄèIoÏk¤D,¢ì Ø\&CÀãµµwySO׬QòySr ¿±Í©ñö ½Ëj°—ÆôúøL¡Dþ·„OוX"ïkmäá¿ò‹$ÃÉûÎ>}ŸŒÏ ù2©\oé)Jòyw ê;äQò·$bqã°~ñÔñi•bºæ…G(ËÏ%OÑ3+FÖ!Þ$O×ÄÂŽ¾6)J|ò^j­#ý‘Y­J6‡e?n*6|nv¦§§Â¡ ÛSò«`‹ÿÖ>ªäÔwZ‹«Û4û 8P6àµåÌNZòÃC!üº_bô/êÆoCÉç>ô’ Å·®äÃ!Ì©mã6sŸu¡†f-( ùrfgzj¹aµ˜»:ÚÞ±€¿])÷zÜèBmßn’_5[Wòbü¡JÞ ±èÄÓ¬Ee$_Îì¤%°[ÍʦÆf©ØçqO$âÄF<@ÍZP6@òåÌÎÔä$ê½§±YÌɹÔãé- y€ šµ l€äË™ÉÉ ,àÏõÞ3ÿÉdÓÿa~߆§ØBlòéÿèT¥É$ŸÌñ ALäm6ê7<%Àb3OäM³*½(ù‰‰€ßG†ÕlZãáÉÓ˜†™ŒºFÏf1£îÙ†§Øä J‚ª ª0~ŸgffzÃÓ“ ͪôŠ’7 µ<‰Ç¢“ ·ÓŽ:?èŠúéS@•U·Ë1?zÃkïv¨Ò„ä×ûp€äiÏ©Ùt­÷Î;oÀŠ ª2;;³á•v›Ti”‘2<ÉÐ<ÉÐ<[ˆx,Â0¯Çíq9iÊfòk*1<½ÙV-X;%±Êºâ÷yušQ¹T¼¡”ËÄzÍØÔdb-%’§7tjÀzS*«¬á fÒë…<“A ø·:„äÏœYÈËÌÌ´Ëa#~›6 ?†òA³¬7˜ßgÔi×n•õƒx­Õdˆ„é0)dZòss§È@aàµ4k@yØÌï®ñ$_P¤×[(Nš%czz ^PA³”‡MþJí^5L-y^5 @³”5Zeý Y•NI~~vv&Ëép»™[@ò4k@ÙÉ—3; óó³3Ó.§]ÑÔØ"—y=®ôF<@E‹²w ÷•áÖN É—3;óóó33Ó3IÃwu´-,àÏÕôtv ÏÛAò™ÄB޾6™ˆÃä²êEA[» ‹F‰¢~K_[“˜Ëâ²™‰tpÌÏøb4`èKx,.‹!TÝýž þ¶j£˜-–›ÓÁÌýÍ\6Oï Rï+MÖ׎VžP4ºŠ¬©,¥ÖSÔW¶´äW‘_ ThT½¿dÕ‹Å’¡q{Q{)m•.ñˆ{°£Iœl׉lÔ°ÔL,j•”‡ ¤IÞæÀ« Ÿ›ùùÓÈÀflaažXŸœHõÚ¹S¨#?’ϤKÀJÛ-6‡ßëvY Ã=­î.ÞhÀÐÈfH[»­v‡Ïã4kú$lFs§–øúTÊfHäF‹=VýPg³´ÝšXniC¯ŒÛ 0z‚ÔûÊ$¿j@òHá’ÉÆ|^·ÏíÐöËÑ·F½Áw‹F7§äõrŸ¯°:\˜ßmR ó—%„÷÷Æ6.›3n¶¼Nu /h‰­*|nvä§§§(ɧ‰G¨4Ôþ< KØBIwf×=äèÇ뤯“ê䧱ز¯„ýø™7e騮[ÂãˆÌ¾ÐŠûÊ„Zòñh`XÕ,âÔsÙ,E‹ÊZœéÆ£í“ 9èš‚Ïå([{Ñkgé+ â ¤@É“%# kûÛ¥|6J‰X$Q›ñx¼#ÝJ ŸÏfð8œ¶Îp,š!’¼RgSwÈ„ @8lô–'¿@©(\ò™Õ»…SßÔëHhT1㺅XÈa.ûV)ªt©èà2£éþO”Ïbt&Ï\½|¦¬ÛFlG\<ÖÉÁäöbÃçfgþôê¹S’OE,F˰)žµ=âæ2Ov:²¬­â1¥6TþèÓ.gþŸrãÕ¸Ù8Þ)æq$¶@xÅ}åù:¹äuJ._ °¹<¯} ™#¶Ç“§‹1b´ƒê5cDà¬n_+å²yÔR äó&m7w y\©ÁâÀPÅfOJÞ38ˆ.^°@Àç4u‰Ù²[n„¨-ó…µÖä÷yŒCrÔŸ!²Ö’_ œ¬Nò<¦¬ ±!«Q¨b ¾ÞŸô#áìžü«t©°u‰„’®@˜¢nCJ’]¡ÇB\ÖÉnÏ’¥»yL¹ÚµŠð¹Ù9}znjj’|&^m·u2¹¼eË ];â]ˆh@JÉÌ3K„¢±h`}jÊù”Uc.›Ée1­ìy÷•ûõÜ’'N.é“{,lCÿŽBÑ †ËbùsF~²Zfél‘·P—F!’'KF<âÁû.Œ"þ°·“Ç•gE˜H¶åÆ6c*X•ºäYc~rR¼ä#N}úV¯#@v ‹cé¤PÚ*]2bau‹€ÃdðØ dìq'Fäíw,CcB61¢[tøœìœž››šœ $ŸºTt˜ucC=­ ¨ÌþÐ%/”t75ÔKÛ‡r‡Ôr÷•ûu‘tÔãv¦Ñɹ„ä#´ßôpG"yµÛjö¡öÒ+ãð8¼U§Fk ¥¬Ó˜7;Hò½Ý*2@òTÄ"èI,7®u¸FnŽøôR6£I5B:8“ÚWÞ¯gnIפÚÂÒGx[°ø’ëQ·U?Òߥ±ø‚fÂ{ë,ùìdä•|<°ªC0„×Þˆ¿ËædE˜È¹ñÚºLòë˜_ TuãÕëqy=žpêZŒâ@gUŒM(yt=.`{ÝKÃ,]Ä0 ÉðK±áóf‡xN’Œh$ ’§@+Býpüša¼CÞCzã5ùiVG}ù×XÄ£E~“wiVÜW&’§¸ªMƒª€ÅHÞíEUŽ—^òE ×Dƒa4Õ~ýzYá’/C~R±º1yêášÌŠQÚ*]âQ?Š¿Ï³LÚM}øÝäÜ©¨V>ovf¦§#á ù¥qËmã:ƒÇíöy†áNT°*^©¢½$õ¥ßë2kúÑ¿MãÄѧlF£Be²Ø|Éç!Õù¡ »4b6CÑ«¥ÞW&+Þx•6—ó:Ò÷§¢ØÈÐè¸Çë ú¶&N°4s$Ê,ˆ…Cx{)Õ˜Ÿ-òeR¹ÞÒS”ä×’_ œ¬Qòd5*«b”¶J—ŠXØÑ×&E‰Oþ«Q­u¤?2«UÉæ°ìÇMņÏÍÎôôT8¤$A³ß€e^kPÎì¤%?<4¯kðõ @ÿ¢nâ˜fÃÓ¶FhÖ"€²Qɯ®­Ñ¬J/J~j¹aµ˜»:ÚÞ±€¿])÷zÜøÛS‚H ƒf-(Г/gvÒ’GØ­feSc³Tìó¸'qb#H ƒf-( ùrfgjrõÞÓØ,æä\êñô<@ÍZP6@òåÌÎääðg‚zï™ÿ‚ä2ˆéÿ0¿oÃSl!6ùôtªÒd’ÏæxÈ &ò6õž` ±™'ò¦Y•^”üÄDÀï#Ãj6­ñp€äiLÃLF]£ˆg³˜Q÷lÃÓlrP%AUU¿Ï333½áéÉ…fUzEÉ›†FáZHžÆÄcÑɉ„ÛiGtÅGñ°( P%AUÅírÌÏŸÞðÚ»ª4!ùõ> yÚsjv]ë½óÎÛ°"¨ªÌÎÎlx¥Ý&Ue¤ ‡$@c@ò4$@c@ò4$@c@ò4$@c@òÛ‡x4‚ùýn‡Ói³;í¯ËÄñåSuoO d’ß&„˜Ãlíëîj ¸Ì“\&C*ôõx]îÈöžDJ 7 ùíò˜I«—xÊ&©ÕbŠD›ÅÜÒÜÔ(â»lö©É‰ÜoÅB޾61ûªH hkWaÑÅÎmÔoékkãy3%éàØò s¶ùℹÒ sÍýÍ\6Oï Rï«p´­<ód‡ƒ’!pv 2&ߨjÙðª”<í‰G#‹M* õ÷å~ªèW6ËæææË²>ê°„Òv‹Íá÷º]VÃpO«;‚ë%04²ÒÖn«Ýáó8Íš> ›ÑÜ©%¾…>•²y‡Ñbõz\N«~¨³YÚnM,W™¡WÆm=Aê}fêJ{,Fá’§}É É G³dò²ÕKIžËæðÙ ‡Ó¦êõyqÐ<íqÚp D"¸~ù¿?ã6°„äÑ¿hc4f3Þzûí3Y_ôj»ÅÈ\^‹²eP=êMŽGjÔ·4³/üÍ’¡h,BŸšr>%@*ã²™\ÓÈw_Y ‹ØMŽÅÝ)¹¥X÷+E²>BƒEI>³dò²ÕKƯÒÍn—ÃfUò˜BIWù«°á€äiÓîà2iÉzÏ'ù<ó‹Å£‡Y76ÔÓÚØ€ú‡Fh*Jº›ê¥íC±ö• `hæñ”øz,$a3ÜÄ}I“¸ç/ª¯8Ég”L^¶tÉdñ è0–ßv€äi×呉…v+þd‡ÍÌ”<1\ãvÚ[Í óTñÄ"Ý<¦Xn\ë „Üñé¥lF“j„t"µ¯¬í(rë¤>¹TÜA49"r+8L—µþ ‹! [2yÙÒ%“óÝ0*œoÿô$O{‚6<8ÐÑB~ãµ³Ãa·Zin­õ6ñE†ñngéíÅä§YÝÑå·cu8å]š÷•Ř˜ÝÔç0ɹm‹÷ãQŸ×ãJƒzò-F›¯0•e–L^¶tÉdAôäµÐ“ß~€äéO,æqºš$Bõ@î§ãc#-ò¦·ÏœÉzPõKeжqÁãvû<Ãp'ê+ªtÞ>ø¬—¤ô{]fM?ú·©sœø"ú´‘ÍhT¨L$[ü©?u¾Ã.˜ÍPôj©÷•f’ó¸Mè‹C$/j¸†ö%ÓÙÕg2[2Æä;7¾6e$¿ˆ„B.›½Y*ioQ8¶X4‚@Mý+—5¢ž*ªÙߊ…Fú:>ŸÍà²ê%bÉÀÈÒ(AÄgîk“‰¹ø½B‰¤qptùO~üÖŽæÅŸüðIòrŒˆØŒÖ~õ¾2‰G½|ƒ× θ&(Nòt/™¾¶&|_Ì“|.·]ÕO×lO@òÛ„©É‰S§N™ôº–f]@ÝT‹Éxfa!ǶP2½Éo&qÔ1?}úÌ™3ø Á 󨧚ûsÎu‚bVúm^2ëT°ž0`“’ 1 y’ 1 y’ 1 y’ 1 y’§7ñX4„a^Ûãr°µ@-7ˆåsiá’G±äi‰ßçíRµ?÷ôoÿÁ#?xä;lP›}î™ßt«:¦&k‘!yŸ’§á 6Øß÷˧~>4Ðï÷ù~?[Ÿ×ÛÛ݅گѨŸ]>ÑpQ’?sf$O?ÐµÞ Ï>=:2<;3ó¯ýëÿÁ ,[m±Û¬/<÷ Rôª=@H~nîHž~x\NtŇúð`xX`Ù¢Ë?þñÔŠßy'Ï”BHþÔ©Y<ý@’ÿÁ#ßA×}]Oa–Õ/¨ƒä¼€äa…KI$?;;’ß(¢AÝý·^µ³¦²ªöhicÉà –ÒH~fzKKþ/—8묳þ[¨Ko~ü¼ÃW3‹-U5ç¼çÚGþÐ\¶Äüù£;Ý5l²º]îÒÆ ’‡,%‘üÌÖ—|Ížº]G>Ž-nY…ä|à÷ƒýýÝ­Ïïc?rd… b‘õH¼òáË]U_ÔW L HXh°”Fò[ü¯HÑçæÕKvÖÜ]?FlÉ”|,¨ìÞ[쭭ޱüï6Gž‰žQ çÜÄMý½i_íßP¢õ¯Ûý¡þzß-WŸ½·î¿èÎUÈ£ P|ý†wí½à‹Ñ$ûôÁºKÿ»™PkíÞ£/7&$‹JóÖýÕ;Η»±€™y¨¦êÑFÚ î­®üvqÆÜ|oí®+‰äe¢xàÒÌ‹²]d¥Dýòõh yX`¡ýRÉ7):i ùXÈò¾Ý5ŸþËp¦äþ®êŠŠÇúíDÈ»ýû¤6{ô{Iò1¬ùµo¢~õWä&B­~vQþÔQýúãç¹îû^rö‰»_MGûòõG/ú‚XîšÃÿWcnâ3%O±‹Ì”à®á¡oþ<,°Ð~)‰äU|& $V†^¸µvßGÜ‘hZòžñÇ‘±á¥Aì›ö︅­É¡¢¢ _***«vßþõßǓۑZ?òòà¢3)£Šø{.¬«®Ý÷aN°u~­f×åh4âïÝ]Uù‚ÁK-yŠ]d¦¤@@ò°ÀBƒ¥$’Çô2zH>q~d_íÇ~?#ù¥A\› y$äÚç{{ºûúí%K#µÞô×áåΕMõTuÕŽªÚc"{Æ[ãbØû÷Ô<ÔaùÓÍ»ß7ñù$Ÿg™))<,°Ð`)‰ä#n=$ŸÀŸHütíî÷ýåßÞM˜3âÇ@~4¸lä§Ã5ËÉT+ET± þæ;nü±üw?ôÞoeŽùË¿zÙ±¼òõs÷|øw½yŸ)yŠ]€äae{.%‘|ÀÖLÉÇ£¾¨Û½«:óÆëÞó?ÃW * ¼ñš&K­dQ½ù¥Kö_ôå`4ÁÔ×쩹ýé®ôW0ëŸ+«vWTÖ´zò<Õ“Èwã5ï.²Rcò°À²M–’HÞO#É#Æÿ笳ÎÊx„R÷Ã/ÞzxOMUíÞko»¿Õ¾â#”¤’Ï•UñDuÍÙO·›¤TÕd™}éo=|l÷Á+ž"K|–äÉR›•xºX¶É’ßìÄB7쫽+ã׸e$ ,4XJ"yŸu Kþ,ÊecÓæ°Y›ÿxwÍÎKíáuùµ,5 yX`¡ÁRɇCÁ­+ùÍÌÑÚªûÎûw<,°Ð`)‰äCA $O?@ò°ÀBƒ$’‡,%‘| €äé1ýŸÏëÝèJ ,°¬r)ÕôXÀ’§ÄDÞ}½]Oa–U.¥šÈ$OKB68Ø÷˧~n6Q`£k+,°ÀRÄ‚Ú,j¹¨ýú™™éU{`ñ¯~Hž~ÄcÑɉĨèð Ïü]ñýà‘ï°U@mµ\ÍØÈüüéµx$O{NÍΠk½wÞy€­j¹³³3k4!yŸ’ „äÑ)$@?è1Ç+<ÉÐdq"<à _ø÷÷ïÛQ]»ëÀûnúL$†oŒøû¿óù[ŽíßYU³ãø7üìoy¦Ú¤ˆ3ÆOï?qxOUí®«>z·ÄäÏüèñ öÝ-7®˜þg?uíâŽNˆzüvIþð5ÏtvªÒ ÛH+ùú±U„¹Þ’be\`½%?òò÷¾÷Ä/^}õá,y~ûÊ®ø¢¨c`´¿å±Ï\pàò¯Û¯¾æ¶?ýJ“²µ‘ýò¿Ýuö%_+<ΠSrQ]Í-ý”/St(¥yþg„ä_ºñØ®£Ÿd)ºÇGû_ýÑ•µõ¶@qf2öÆÝUµG~ËTŒ¶ÿðöã»Ï¹3[ü(Š ×UïÔ`aêô3<ôÞoí«®Éå$ïä†!òD]õ}¯ÿöøÉÿnsàíÚ=ú¬‹bRÅB†kÈŠ%“¼;%Òü¡þzß-WŸ½·î¿èŽ`ê¯ÝñÁ=µÕgŸ{å㯭­úþ˜«ðì_ÿó«w\wäàžýç\þ£7‡)Š´áºw¥sZ»û}…DEVDÔø ¿Í”gØÛ‚þýѨsñ__'ú÷—zOÖ·¬ªûÐöÑÔ!£ŽQÿ©ãG¯ÿmnÈ;Ö}ð×=©û«*ÿ³?Ê3“Žî¾ôA±ñw館øÖ ø×$ûÜþ Ÿ NÈ­¸xß¹B{`?H(/d3ØjÞº¿zÇù¨ÂÌÌC5U6.ŽWt>ö$CÒ¢ÕëZ9Ÿ¿dÿåK‰íÈ »/8òØ+Üááž_}ᢇïüø%Ÿ|Kªê’|ú]».ÿ¿Íé`5»¿¦Â+¹FøTmõž7-øeo¦0ëï¿üÐ5÷ñZû Úá·~q_õŽãý~üüRÈܵ&ã…ÛÎÝsÞÜöÍ€biJôX(ˆÆ¾[]½ï•1w¢0É“K&ùwšLsíÞ£/7ãÓÇx\ÁßÜxìÀ•÷6õiå\{a]eEQ’ßqðÄëíz´Þ÷÷¯UÕÕÃEJÑ“ÏIQ“%Ï K„þýaÑêÑ ý›› “ôsU5‡¼‘h!q"®ÜUsë__úÜMWÚà=×ÞúŒ`œØÎ½ÿŠ—?<âD!Ãí¯å]å gšxÄYSYqoßÒÙá Gv½ÿ§Äúß?z·ží£Lô±¿ë³Àk H(3¹còi¥üúãç¹îû^rö‰»_Íû]Gÿun#Ö‘.¸“M¬cÖ7P<¶/ÖdõK×ïy÷7ÓÁŽ‚•ŽáéË\ú.Þ´0£ØÈ®ªJFÆõ×ÏÙóq.Þ`u ÝxóPg§d„}]Õõ/vÃBîfôï“Ú%Y­Bt!sÏ‹‹ƒ·ÅÞxÍ,–4;Ei¾ð³ÜT°ÎªŠŠgSÝZ¿ñ¥Ì#²"(ªKî—¥þ^XWý蘋¢H©%ŸYQ“#ÏÈ'ÖwÇ“F(qÿõ‘¡O¯øeæWÐUϧŽîzßÿ Œ3² wíØõÈ‹ì®ù÷ʪ=oX|ø§Qÿ£Ÿ¸¸¢¢ª®¶ªºîøïZHK!yt¼ÐGOé–.7~qÁþw5âë1ì’5³.¢ÏJÿÀïï<üGcÉuvgÍ®K]ùdV'yïø“;ξ53pVúƒvÎÑÝÇ¥ÎÅhAò@™!®AØTOUWí¨ª=&²/vc!Óù;ªïüß· vOiìQtO|„œžøûP‹§jµYyÛ΃w¦ƒ]÷ôR÷¯ù¿.Î’pš)OÆýWÔî¹úyf“V¯êlzú‡_~=9àI6&ßùØçnýÔ¯ŠJÆ ·»÷üÏðUCãƒÊô=PïØËû««¿ËIß[ E£‰$OQ,™iË»ÓDŽN}ñƒWÝ×Ü¯Ñ )¼öüÆ«—¼{àÍgž{¥ðì'2ÌLV¤õ7;÷ã¿Õ[,v›³¨ÈŠˆ,mQlÕ(ÿ{è@¼ÒÔ’ ýÓO^|“ÛÞ¡üûï;oGõ¿At3"?¼íxí¾÷ŸT´¥k#qêÌLYœ–æïUVízâ/"ÍØÐk?º£²z/qOÿÛ—Øwâ³ ÊíhÿŸú***ŸÎÎ,Yœ™aÆþ†?Bù4K96ÔñØÇwá ¹¥ÕµG\‹5¤éφk€2“{ãõ=÷ɬŠ'ªkÎþ»ÁK„1I©ª9ÈJÚxàµG.;vö±ã\vÍm/r¿± É_ÿGÎW>võΚªç]ý䛋ãçËnbF/?öåKß} ª¢jß‘ã»ëánþ8ÙÓ5Ò»Nì>öpQɈu?üâ­‡÷ÔTÕî½ö¶û[íx˜‘¿Þ˜U…?BIV,™iË»ÓDŽN#¡¯ÞþݵUûϹâñ×~–ìð«_¼¾fçÅ…g?‘9ÆBR¤žÑ×®¿äXueñåŠQ‘YÚ¬·g…'®JF^}ø’sTUV<~ö7âd;rï4$‡ 3F'¢ùùo_uÞʪšó®¼éwüÅñ·³íáÏ|äОڊʚs.þàþØ’[ndqf†Aœ|ò¿.<´»²ºîŠ›>/1áÍaô[]ý|b¥ôg’èM–:j‚vfEEñÈïÇOÜÍZ×Ý­šÍœ¶uåÙ«þû[£žŒU’JH~Eœ}ÏþMØf±ÚÆ{e}øÈ¡«HlÿÌágþáâ g3§m]yæ'Otúò?u¿%É%$¿"öî¿ïıÚêÊš®ÿôCä¯R€5’ 1 y’ 1 y’ 1 y’ 1 y³!’G#˜ßïv86»ÓîðºûÜ+}â­ÝyTn~WQÔE¥<‹%Ÿiò{ïºø¾¦¼À¦¥œ’÷8œ/þþ9ÛE&y·ÛõêË/Ο>ûÝîŸ_{èª_ Î\páç–™:²:~/Üvîžóîà¶hYóõì¾àÈc¯p‡‡{~õ…‹v¾óã—|ò-©j¨Kòéwíºüÿ6_ï|ìI†¤E«×´r>ÉþË–Û³ö’iž·î»´îà‡ÿÄkÑ´í’¿?“Oò5»¿–4°FøTmõbŽ´½vïÑ—›ñ÷W{\A²”kÞº¿zÇùr703ÕT=šœ÷-Ü[]ùíâIÐÜ|oí®+±höí¼i£(¢O¼Þ®Gë}ÿZUíQ}rÖ3Å—¾šID˜9&ÿ›¸òÞ¦¾1í ük/Ä癚yó‚;ÙÄvÌú2Õƒí‹ý^õK×ïy÷7sSâè îÀmÄ:™ylwTV|[E5Ã#ÚõñO,MÁðôå.} ™Ø~ág¹+¦ñëŸ{äºï?xÉÙ'î~5ÏË×½è Bbý¹k_ü_YûÍ›6ê"ºä~Y*d]<š”v^ÉgÏ^j\š½”Bòéü®¢¨W‘òLV”üâìÌ••Ÿÿé±T°¼’'›»6²JÞî(Lòog}Ñ;þ¿™bÿôÁº{eFb½ÉÙ;ÂKã½7íßq ï’!Üð§ÅÉé"þ^Œ›ºØ7+nÛyè³Äº¥éÅÛ¯»lÏŽbÄ ªöb;™y¼ã?BÁl”3ÑムÓ++¾ìÀ{~Ol/$åÉ÷ qÕîû°[ê Ú:¿V³ëò@4в³»ªò…Ôì~…™'mÔEtãŸÕéí¨ÀïÄ'›Ë+yÏøc•5áX:æÈ®ªÊ%ŸY†Åõ*RžÉÊcò×>ßÛÓ­’ó’S{< 7^-G9%ïuy^¢®q9_}奅…ù¬/ò>w!êGU¥—ŠŠCïý-ñÑ-g/SÇa*É/ZàhXôÀг…ÆB¦ówTßù¿oìž8ŠmìÑôäž+H>¼‚ä¯{º7ýoó]œ–|:I)GØTOUWí¨ª=&Ê|v1†½OÍC–‘?ݼëðÝyŽB¾´XD‰ŒE‹•<Ù‘ÊŒE½Š”gò…#»®úNkæ–Ÿ¿ïÄÿY¼üÉ4yØÛ~°¦ê \mîG°™)§äƒÖ"oj`1È$Ïfþ}X=tjv&ó[ÄÝÇxrÔ¡"P)^ª¨ª#Øûò»vÝÊ'B†}袚Pjªé~rÄ_ÑÿhpÙýOµÙ†!“|Àü´==!ûÈŸoJ›'s/‰â‡kÞõ¡—Òÿ~ïøÞK¿Òœ“$Ҕǂú›ì¸ñÇò?ÜyüÐ{¿͈YþÕËŽ}䕯Ÿ»çÿëÍÝoÞ´XD‰•$Ÿ=\cZ®!;R™ñ¯¦¨‹Oy&¯¼ïðÁ+~™QÙ\ÕÕÜøÊâÅ]–ÉÙŸ»pÏ»¿’÷#Ø´”õ9ùXÌãt½øÂs]ªö\ÃwªÚÿôò‹oŸ9“õ¥IöÅêº Ëï~þðÎ7yÉ—/>tõ÷\áh,ìxúÞ+jRê¨¿áØ¹ÿ­Þb±Ûœ‰ä½¹½ç†¯TfÝ›[QòQlxuå÷…chݯ•~äÀ¾´y²ö²ìÆë½—Ö¼þUA›Þ íh|+ï×Gö<òŠÐhÒÕÿê‹•U;_7û9j"Kù›_ºdÿE_Fñ§Y®ÙSsûÓKc˜õÏ•U»QºÕ“R¹¼i+¤ˆ+I­ÿú†c¯º¯¹_£Rú%<ÂÀÐý·^µgïã^õƒW»Ò#½žÑ×®¿äXueEêJÝ¿xëá=5Uµ{¯½íþVûÒSv+J1ðÚ#—;ûØñ .»æ¶¹ßH›'k/Ë¡Œxžùæ]Ú]™|Lñ1NÉ_ÿGÎWðV8ïê'ßÊMYÊ­Š'ªkÎþ{j¼Ý$}¤ªæ +yŽ xøØîƒW33=ú4êÆ¿}æÌÂÂü©Ù²ºæþè&½lxé­…u’¼ÃfmþãÝ5;/µSÞö]?œ}ÏþMØf±ÚÆ{eÉ'R~¸áE ÛxÕðF±N’?Z[µcßyß}ct£òeïþñûN«­®¬ÙyàúO?ÔéÎ_€ò’ 1 y’ 1 y’ 1 y’`«ECæõ¸=.'íAÙ b%˜7$ÀVÁïóêuã­ÊfŸCo$B^›²Ù ÓNM&ÖXh y¶á f6äM’€ÏsúôÜ™3 4fffÚãrà™õûfó͈Z8 y¶^»½EŽù} Hòss§he¹Uœ¿–rÛZ’ßV#r°M(pð…”yÈî§‘OÍn™Q–ßy'{²<KÞïóê4£r©˜Ç®ç0O°ÕAmY.ë5c+>#É‹øÔ?ujvû€²¼}$b&½®QÈ3tÁ€€ù}F¶QÄóû<ÔƒÏ)Éã/­Ý>l+É£k:…¬Ñj2D¡ O %Äa·*š¤ÔƒÏiÉÏÎάº*…ƒÁ æG×ÿ^o àD“ød3è¯ÏçEÛ'&…Dµ±l+É£CŒ®ìЩÃS@i‰E#¨uSÛlQòóó¨ÃOÁÄDCJ‡ÐúÜ©ÙÓs§ˆ1ü©É‰Pózëƒä€®(ùùùù™™é¼D£‘p84‡zí³3SÈíÓSÄöÙYü/úmD¡u­[­²¨6 yèAÁ’?|•K"ùôñØáôÔ¾%  M·ÛåÀ’Þ >ššœ@¡Ð_³É˜7ªÂшØ-ºÀ#!³#¡xîv<ô pÉ£>y.HåD×wjjýëóy\.W$ž˜H„#!‡Ãn6›¼^êÀONN†¬H,’†Åg;Y ‘PÔ§ÖOåÛW$y¥.@ pÉçnÉ@ •üé9b˜=“x,ðûOÍÎNNL Ëû}>Ô…Oêt:&ñÞû,bvf…I’0èõYñ É‹š´É;=6m/—y²ËÌÝ]¥Ôù)NRò±Üí yèÁZ$ü‰8>R39‹E‘Õ§&'ÒŸÚí¶x,–vûDOÄãz6Wò…-ýo)ërâë“qÃ`»”ÏⲘÒ&…ÙÉ•üÔDh´K.âÔsÙ,ek—/–XLÛXoK#ŸÏfð¹ÜŽî¡X*aSØP»TÀf…âQs$ŸÉ­)Pò§çæÀ³p:ì33ø}U„Ïç bÌO£‘°ÅlÒé´IƵZœq­f|\“YÒ VX“ë Ì©°]V ýkë‰d*‡Ç¬c*.›ˆ'Ðö1$y­ø®¡…'*Q˜ß5(çD“Éí~µÚæpáOýx¬ÝvS¯ƒ¯Wrâ6—/ö;z$<ëäp0š›5<ô`-’·XÌÉ_9%¦§ñgfPàÜ0…`ÆÇä\â$Zé1â£÷‰ŸÅ°Eâé`ƒV» Ë”üdÜËežñGˆ1'úw,”-혿‹ÇU¤Ãk°Åñà(Ê>H$4¦@ÉãJFÂY ú‰‰D,Çc&“õäsÂ^ÌIGÜN‡Ófì•5;#‘pÈÛŸûÊfµ…²cN´ôö¡X8”ŽJÉ©o1zÐJÀ:Ú&òÙ â‹\6'ž§wä1Ozò$$=X‹äM&Ò;ÍfõzÜd‡‚³I36jÐë±€?Wòâf± Ú„,F—ÉC< 寖#ù¥ÉGÂ> ›Ñ¡ÖùÌÓ›!ùúHFTH$t¦PÉOã?kÍÂb6#{ÇcÑXüÖé´¹aè3í¸ÆïóNN$Po_§ÕdЋpɧÿ5µñøüŽpкÙÝfOn„jK1êÀcÆì\æÉ!—Ø ˜Ñ¿j?èÁ­Z ï—"ɧÃüØbx¿Žƒ÷äý¹»É@Ö"yÛ…:ó( Ò8úkµšÍ&#ZÏ f4êûD‚x¹MP­Bg É}c(U#n¿Q%ä6ˆ4³]$ØÍcýíz–)y„FÁf»Óë²ô55„­è²!tá]t“ÍcRpY„äcͱrCþùGZx\t¾7Ï™§¾ÑyÑyß8ƒ‚‚2€ Š Hi)Ý¡@÷…–.ìÐBYÒ}Iš}ß›=i“6)tC}ÿôÒ ·)$þÏ÷ûÂͽçž{þ§çÿ˹¡Mª¹¶L*QÈí«z8ÅëGÉ;ÿˆQòâ«”|»ÅB¼ë~+-ý_û$•ˆa=Ïb2šª««*)”JÊÕÊ* èFmà ø<‘PÕú=¯ªµû„Ñ&ù¢£¹U‹×{‚ ÈÝ…ü×ÿ¹< é_¸÷¿K#‹EB”Û°A¨•½îp”¼3Äyó¹l¯÷A» ù/ò¶XÌ çÑè’¼N£áqY§Ž‰|xÝ÷z9ËÑת…ÕÚá¢&Hþdi‘×­ëa äÑ#ùV“Ñbn“KŰž‡;»¡~© AÈeÈh¹LÒÕuݵà^þÒ…ób¡@­j%@°—.–¹¾Áñ%ÉtÚ¬2¼´!â@FÛlÖ;æ>ÜËóyœógN ù<¯ë×@˜,l¸¾Áñ=É#2:!îå ¬çO–/.ôa @S©Ýñ玠äy€=÷ò$opîJAćAÉ#‚ø0(yA% âàäA|”<‚ ˆƒ’GñaPò‚ > JAć!$¯V)Qò‚ ¾!ùÜÌ4”<‚ ˆïAH6Pò‚ ¾JAć¹äM½ý[Å5jßG«1t^ÿ‘!£̲Û#j9Ú« oCaj LžL!wòŒPò0óhMÙiñ±1¾Mb\lvzZc]-„ìõ”GF˜e·¥µÕDèŽ_åì>R¶!ªÈ·ÙS²;­ì$…Cå{9ÉÃê‚ÍdN=  úúú~ðéÒÓÓ#ðޤ 55@à^O|d”€Y6"…¾¬FðeÊižTÓ×wÃÛ}¿·¥§§—!PB°çkø°¦ÐH$7V¹Y™R‰ØÛà¹"‹s33Ô- ¯ç>2JÀ,ŠZŽ6*½\ Óz»¿ž+‘ B†À‡5…F$yn¯|~uá\`¥‘+—нžûÈ(³l((LÍÆ˜Ÿ_Ã;XÏCÈø°¦Ð%ãí¸=] d™DäõÜGF ˜eCq•¡ÙUäížzº@Èø°¦Ð]‘ü÷¤KMmuô¾={öî"ILlTm] ùö=PPòˆ'q#Ë|  KòÞî¬GËý/y0|ooϤ Ü¥‚çï݈¹QPòˆ'!™e7nÜ 3i.»-L6*x&AîJ¹$Ÿ[ÖüÔÚä'Ö$-]“°duÂã«ìlK.»§uQîÉÃ⮢PI[Ôr•V©ÑµhõjA£7j &±Uß¡½Ñ¤‡Êpʽ17 Jñ$d² Î`5sùl¨öãƒSÙ<&Tx€<ŸH¾»§ô~®ŽO¡Ë.7Ë/PåeMòc1xþÞ]ÔuyP$¯TÉ(UC­:*«/›Ú (yd”sÇ,uÃB½ßðßÛlV‹¥m6[Tcó$Ï{Wò…¡·¯ïûÉװ仳);2+?=RùqjÕÙÅh“ü÷ýÓŒd!$?°ŒWkxX´ƒÏ[ÛŒmfS›híÇÔj6’'ß¾ Jñ$®³¬¯¯Åi0|#&:×Ï/w̘Ÿðócì²Zížçò˜L6 NñpʸQÈK~Xþ!SÊë…ËþžBlwu÷,]“PÅ”Iùìes*eCreI•xéêÄ»{QòåA‘¼J£¸óJ¾æ²ÙÒz%ÿíÃS–¥pFÞJñ$.² tÝ¿†g†gÆî+4IýÈ#ÆÈHÝëzH9{6/,¬($„µ‡ð<›Ë¤Ñ›îÏ»HI¯H†%áXÍ>É„…:±§§·wɪ C¾=²õeãÊ÷+ÓÎ4£ä]”›’XÆ÷¿oh5aénno³t˜Û;,íV‹ý±Ãli7ßVò¹ §Í}ñœóžŠ×ç‡EÞaØQòȃˆ‹,cq?~lɤI-Æ ôóçkçÍSÍ«˜5K:}:{òä¢ èQßutX |}cí ¦:”Moÿþá™SÆN»ðloÒvŽ<\6s¦dêTÁ”)ô ŽSwïj3›úúz ‹òœÛi—/ŒXñnÎéË ƒRvlëªß=ºòòÈ“Åuq‘’Ã’üÈ{"×´ýñ“¬Í)e4uGGü Í žx7q[JY»­K¢6äç¶+ŠæF¾úá‰+õ&µ ùÓˆ À߬Î$Ž:ɪ7óÃçÇNøE.Ë4’®º-y˜Hž”¼F×Ëx—™ýÜ3e«ÞѨ¶N+X])—œ[ù¿9/<¯‘Km z7$ßÛÓ‘¼ù­GfMùÛW2tÄ~çõþœ‰O'eýõß›7wæôˆ%;‹…äC@É#žÄµäüñ‹¥-×ÏO8cFËœ9°z`C9{¶ ?mš(4”?i'8¸iìX¨¦Ñ´ôööääg:·óùâ©S¹ÁÖó³Æõ¢vxdFôì¯çOþŸkvèºzôì‘ï¿úô¬é“Bç.þ²P8}í)[þöhxh€ÿØ9‘K?;%'™’ndÙÝ’|5SöâºC»ó›Ž×«Ï*9ºž¾A §‰ l™A¤jUêÌF³ízwoWO¯ÚØ.T~»&ÉqúW‹§MýåG×{jP]õŘ1cvóí2UOê{OŽ›ôë"AÛ{ë¶äaH=*y½ý½š¬ç–1Rö°X­çNK"™R ×›©±19Ï=ÛyÍæwCò¥kÏxbõÙ:¶B&,Œ^Áêèê»EòcCff5ia[\5>pRÆJ2”<âI·K~Ìéôé`uù¬YŠY³`C6caxÁäÉÜÖøñôÀ@¨¦l‘wuw¥gv4r½æïç÷vú¶³úÅÎâŠ:©BÉ®;ó—…¡‹×]qdPдy JØf­.¿Ö Û…«O{6ý\L)¯¯(Nè—<™”t#ËîŠä3ÎP_ZŸ–tš—yI]Ê?Å?xN~A˜S!,¸*<^-:S'¾Ø(¾Ú,–iÚZôæKMBÂðä»7%ßÕÁðó[Y¥ÔìÓ'D¾m+»¬ž?·ê7ãCŸ8-µŒ¤«Dq[òö¿–õ äµzuE~ö¹·Vv74ØV®¤¿üRr|ôøhæÿй~ýµêª3úïêÒcàù¡$?æ–BH¾Û& ð/ÖÛ~“¹“~VÖw‹ä#þpÒQ'~ñ´EïU‘ %x×’‡ýmm­`oQX˜xêT;ðT8e ¬áÁðì  ÆØ±ÍþþPM&_»Ö™z8ÙшY¾Ò'O{çEŽý^ðÔW´píÕ#½óƒ·‰Ûº¬¼ ¿›tÎg‘LI7²lä’ßœtþõO _î?-ÞQÀÛ[ÊO8#L-¥_eWˆò¯‹+E'kDçëE—šDR}IOi3ÅšÖ¥-XÑ0zYšŽA-þjzXdJ_¿¬ÆMð9¡hw»ŸÎÅ+’ïéé†iC‡äsó2¡éd)ãå…O?©R)Ô*eá“OpßøS[ùyŸ}´ çÚõNBòƒÉøÅÔK÷×ÕÕ:HzaNè‚ýpH/üòVÿ?±«툘üLB3ÑÂ?ÃC–¥Ð ^ùÇ¢°È$’! äOâ"Ë@ò7nôMz°7øív¦LGxÊ›8‘3a¬á ÃSû£R$tXÛSâèEߨ5¥4Ýv¶Ë+R^yjÑÄ ±D*ŒŸãÈ åLGµ§­¤«ô‚Ï¡NK»Õ¹’)éF–’–±aߩ׷¤^î=!ú,³³ˆUÊû¶µ³¹§ˆ‚™z–•usì ÷T5O¢2上òzÁ;_-ÄßA8é ã –óO Œ'd¶èý_MùÆNK§›ýüYŸ½!ùîîîÎNIÉë š¸„}­mF…Jš·W©”Û:­ t­F•š Gum|bìõ®k„ä5ã6çùãÎ{νúH,lèøŸÁ˜KÌ·^ú«ˆÉOÇӈ턇<Ûä8T±úQ<ÉPòˆ'q‘eçÊOõööèt°7;8”΀ xæ¸qŒÀ@Âð„äùŽÙÜíhÄb¨õ÷óûËUé­í[-Òˆ À×vå‹Tz$÷_ãf;2hyËQ$ÿ?Í-z¾]òÊöŸeÉ”t#ËÉË?·’t¬zÅú´ý'xËdÛ²Ù7oNoþ"‡¾³€±¯„™|Š•vž_Á9Ná •­©] 0¬ùöXÖ™âôvcŒÞ›’A;6m‚•åY阹‘Ác¿Ó1‚®xIò]6›•$Î’7¶Z4ДĕJÙyÍJ×i5©Éû­z­N ’ïê¾NH~P#éýãæ¼çìä÷ÙÿÜÏH ö÷[}^t륿š3ŠJlÃõTŠãЦy“®­ Jñ$.²ìÄéدR+sýüAé`õNï×;ÍÏ0|mÿFq¸ ƒQ½Û¹- ûåú6ëÏWrôiøY×ÞAìa¦=’wdÐòL¦£²]ò4¥ÅØäï÷QµÜ¹’)éF– H~þ¹-ê¸Ëÿy𫜦ÌËŠiôó4íE†ö KWÍÕÕóõT‘!±ÿ,]¨)«€á?ˆ.µZ;§oƒÑ[´Þì4zÒKÛ`ܾf¨œe¥n:2/(pÉ»IÖ‘õÖmÉÛÿZÖ]ÉwuuAÈ$qH>'7K*à˜j«®~ñYþïVhÔj­F¿âÅêCÌ®€Ý|´ ~|„ä5Ò?n¥Î{ÎôKžØÎ_½xÜÄÇâ ˹>­ºrÄ̤Ã<°ÿΤJÙ}èdåÊ£K—ôõõ:$O¾}’¼7;ä¹ôf÷ÎEÉ#žÄE–Y,æK—ÊΖ6õb‰°ò›…A?ó|Ó€á/~º…Τ‰Ä‚´ŒÔÂÂ<8ñ®çÔÝ…¼ä‡å×˜Íæ]¯|œ’7™ŒF£[áZm­÷ψyEò×®]ƒ ‰CòF“^Êc}ü7ÕÏ/rèZ­SñY´ªg—üv©QÝÒë$yçnýŸzçB²ɧÑÈwÛ”<âI\g™ÙÜv®ìLé‰bµ¦…'à\Ù±=ÏÏ/×Ï/ÏßÈõ÷Ï ,ßú ÞGNÎÍφSÜ›ùž„¼ä‡åŸÛ×ëuZ©TÈdÒôã”'×& |¡P(‹`?…:P“p¾·p[ò0WF ùN'2èuZç•<ñ±“—æææeÇ%ì‹OŒ=Z[SRÜgÿ  ¾ÞÞÇ{òp"ÉK¤_òT÷ÎEÉ#žäŽYfnk=uúÄÑÂ\™\ÂâÐ©Í M´ºFjmCSM}cu]CU#µŽÉ¡'¥Ägde@å»›J÷ˆáHž¬n‹ÉhЂÞr‰X$àóØ,f3Z|ær]mMMu<666ÀØG¡Ô„ú­&£·FÆmÉoÜô‘û’ïì„™C›µ7f7ø›ü7CݸqcoÌwp"ÉKx”<âIî˜e½N.“æÍÉÈ>,ñ„b>_Èå Ø‹Íe0X4Ð~l\LÊD¨•½žAw+ËnJž´n èZ§Õ´(R‰X(àƒjt:µ©±¡±¡aöÀ~8 u &¬9½82nK>fß^·%ßÙi#Y^ ‹KçÉÇ+N½žkPòˆ'qeª%ȇÞÜ\]Uuà`òW_±}ÇgŸoß¶íó-[>ݼeÛæO¶lÚôÉGQ{¿ƒ P *Ã)^ꎗ¬)tó£†÷»#y­&'3ÃbÁÅG \6+/;K.•x=÷‘QfÙPÔr´QéåT–Èëöìžôò:ŽvXSˆ|‚[’7êõ õHꃮÕhô:­B˜i‡Ò¨•Ê빌0ˆB(×—Õ ¾L>]ß,Ðj¼ßù{<2Z‚=_+)ôÚB„äKO»!y˜€­¶¾¶:;#-).6>6ƇûÇœ¬Œ†ºj¥\êõÄGF˜eCa2©|íñ«œïÒÊ7Æ”lˆ*òa ÀÝiå'®r©Ýp§ÐÍ•|Rœ’'0êµ*¥\.Ë$"ßF!«[”±×m`–Ý0½@®¯åh)LÍU†/B˜|¹Bîä!$_TRè¶äAûBòÑ1Q(yA߃üºþ‰’Gñ=ÉWT\DÉ#‚ø„äkª«Pò‚ ¾!y“’Gñ=ÉÛ?÷% âs äA|Bòö7CÉ#‚ø„ä=JAÄ÷ $oÐëPò‚ ¾!y½N‹’Gñ=n~ž|l !yxŠ ‚ø w™D‚ ˆOKúÿ õù» endstream endobj 35 0 obj 49110 endobj 33 0 obj <> stream xœíûWÇ»îýýüû×}þ€³ß5p€…²A"Gð²5‚F³Ô¿šË7ÞbLŒñ®D¼Dñ‚šD/!QTQAQQTAŒ—("hèSLMÓ]ÝÓ3Ìžç³j‘ššª·ÞTÓ/^€ŸùvÃn” /‚w¨µ6²â¥à3á%!‚ ŒóâÅ ÇUB0ˆÇWDLf̘! Ñ ;P$€>ž"Q|„þ‹"h@/­ˆäš Y,§èWˆäÝüxU!+¬âFÌ=iÅåPVÖ¬8íoááÒŒZýÅP9jÚ²Cœtø µI*ä¶1!zïÎĺAÜ–!êùOWgËåyD¿p€—P ‘¨?êºAÄ…Ð+D¬nüÖL)¶ò= >ˆ ‹™ôuæCG[Çù­ó’â"CC¢Æ}º)§Eè¿ ÒØF£ž¥g½D–ˆ„Ù[nvK-u™ 'F…„ÅNßp­Ûèa€!ʻլ(:Åû2A¶_m|Q¤P’É´¶ôÉÛ.ÛëšýDûÄÆd¢œ†¶w]]o_XÏ¥%q*v¿m½ÂVD4:ÛÞ4#Ú*½ûá©‡í¶®öê¢Tƒ™‚goÍDÙQ ‘ÁE‘B"&²ÅJ/DabcÕ–©qŸ¿!-3ïVk·Æ@yÀž±–ˆ‘.=X¯ìÜu#}aÒȈ’Çgõ׎Ž6©àU<¸Y-jWˆ j‘BOÆÝæu³µT^:¹ã‚‘ÑKJ¸µ*¿&Ê´>ï´1={*5*nÜœæ 8Z¿¾wuwHœí‹/Š…µHu±Ñ"Å…_3"Òn´vÚÞ¿¬ÎM(6&ï*¬yÖilíyDÉbã$¢ÒÎ~޾Í :ÚØÙm{uÿh"„?â!W>¢à¬™“Ï k+ò⪠ÝU—}4*Â9fÁb[KNêܱÃB,á±Ió¶tˆÍ[fŽ 'ÝÍjNclj¥IQ!–¡c¿Ük…àG<%DârH->òb|³TxJˆäË!­²ä³"€-!Òÿ½#BÄTBàâ)!’´ˆQsÔÞ ."Aö@+3x@…ZxJˆ<5„ø]ˆj[Ïž¸v`WÎþ§ÔåÏ·oÖ¸ `Pà_!:sü*WÔ…õt;@€ãw!š2ùC±¤®JWé]&&n;œ½lÖŒ±"ÉŽT>ùxÎñÃgY·“>~""îrˆIÛ*ä½§3ðÜÇãB䯓û¢íÜxPTžß9'–kÕ¬0!b?Ei:•uQ1VËfÖ÷Bô®â÷ ó&Ç µD ÿ`îêý—Ÿy)̇g…È=/#§B$J+\-Q胯…¨aÃа%Y¥ ¿µu¿{Ój½rxõX/%€ùð¬¹g3+Ýšq…H.>¢qƒ¨…HíøÊ뮘‘04„¨ç5ÏŠVàùÇ ù«§Ä„FÄÏÝUÍ¢+aôï'ü£SNÚY˜úÉèKÄèOR/tr’—ûTïš3eu~‡Æ¹Àx[ˆŒØÌJ+"iwH!DòÎÆWDjÇWÖ—QÖÚa_r­h{éç[9šÆžjììêl<9†+D DÏ5ΉbR*1»…j8ž@ñ·ÕÉË…Hš”FWj„À þ­™ÖHZˆÔޝ¬ñ±¬׊–ë;¨÷t4q…h4‘ô§»NþŠIÇ÷…j$£N^>Pš”h‚îÑ0¸ œÍjî­k4ø[3="®é™ aEËõeBÔ+&Í\!ºJóûoNkM:¾/¢D±JäX0 m<k†sã_ß»j3«skæU!âZÑrýc+ãilNãÛ®·Z·fBíò°ðeÇo5¶½ëlo_5WjM*…z”H£*ÄÆT¢õÖö.[{}îÔ~·f½“Rb[{}ö,Ë7½>‹\—Z®!-×E–;¼g––ÊK'÷o\02zI‰~zýoÍVý®YÞ™k¥«euËÍA$ƒ^ˆ¾È?ÿç}öóÔÏi=B´íHEøLVï¢cV± Ñõì ã¿5Ózi¼F‡Òôå{ëRË5¤åºÈr‡'ï*¬yÖicš×˜G”,6N"*íà,=,½{ìÏk.nÕ·YÍ,?F®•®–Õ­:n’ j!²oJ;„ȾY=³yëaöSÑ®³Sä[!ºÎ¥ùöUÏ¥–kHËu‘åoÉI;vXˆ%<6iÞ¶‡·l󖙣ÂI¤ãæ+4*aÚ¢-ò_ßó"ˇs­tµ¬nÕ9p“`𠑨-ûS×3Á¹~|ŸXgB$Õ¥výýêÀÄ©¾`&©yê·f „ƒTˆ\ý­™·Ó „A*D"Üýg—:A-Ds!øsÑ«—íµU-ÖŠæ!C†Ÿ»g­¬¯º]×ÚüÌùH@`!jª{^UÖ,/÷J›*®>¼VPÅ´ˆI“õ^ƒ7RxŠÁ.D Ö©QÓ± ±“²r§—²x„A-D­O$ñ))¬ÎÊ(ضîðöõG†È`*„Π¢²+µºpß¶–í_µhÏÊ…»W-Ú½#åw&A¬Ü½ÙTpêÖãÆ§ÎÃy™ÁûE­ÇWð%Dòn~¼ªVqÚ™-‡$!:²lÛÚëï]±0}ù‚]+í^÷Í>q9ÄÞ½VP}¥ œ¤×ÄÃ>®¼œŸÛ¾èøKX̤/Óθügp]MB¼Mà‘¤Bµ¨²´A¢«çïm^y©“ ¶Z± ýÜ´ò€øîÍ¢šìøAzB÷…«Ç®âÊ•’o}öÖfëxRuÆu{14GˆDýQ×µ¸U\'mSœ,ûỌµ_ÿÄîË–ÏßÕswöÕÖ" ëÉ "»²œù¸¾+Þ:71Ò"{’½³0õ“Ñ–ˆÑŸ¤^èì XtÅŒ„¡!âß¼Ðue•ºÌ…£BÂb§o¸Öûü›3«TC䜳ÐׯÔÍšù(¦°Èà$¬Dyºx§H òéXÅ v!’VD¹ÿ¸æ»÷ˆX…ݦ}³`ÃÝ›M=·f…Õé©p'µ÷qM¤„¬Úv[ߨÊÑ”˜ÝÐÙÕÙp<âoKã2ÊZ;lR÷WVùðÔÃv[W{u QªØx;ŽÆ©†È‰'ú›w,Zù¨§P**æQT´eå¡0Nà‘«·f-MÏ%!ÊØ~Ц?k—üÌ~2 KåG× ªN)Þ¿ó7HŸ-ª3×1DýÇŽïsvm$#|,ë£ïþÊ*¯ïÚ¤‰Æó|åh ‘V>ê)B$OX+ˆ¢¢å(+€qGˆ7«ëþ*»ì¢Šëµ’øHeýòtñWf¿í9sþ4ߕԸ+¢¦þ-2Å`×l¢< ×ý•»å"Õeas…謅–´qŽÅi>úó "Uœ:Êà%D‚±Ý!‘çO_æ”W\}س téAþ‰«»Ó¥¬Ü¹âÛ7®Ýûë¾S÷J›ŠÏÝ2dȾm'š=áqÁÇ5‘Õ½éê+9»>ÊN¤Qª€ýúhÝš©3©ˆ¥ñ¹M=CNã_Ú•ÿ¦˜Ôó5/ÞuÙ:ŸTå÷nV;͇ëݪ•07ˆTqê( €K ^!bTÝ©g qËš-~îÞl´ÿlºWÚÌÊÕóU¿íÍ?°+÷Òù2­.ø¸¾»´yv|8É7« RgŇ[Âãg¥ªöuðÜ_¬LÚs–'GÙ‡”J\CÁ“ü´ɱáóÁ¼´üÞ_ß;ˇëݪLX7H_gg޲¸Ä "Æ•‚ò¬ý…×/ZÙúÇ^Ïš]8]~0=/cû©Â¼ë^KÖ›t¿m½<—BÏú;|Á`"FYIõ‘ŸÏ=~³Ð¾:*Ê»sø§³ÛSŽîÝr\ë{ŒŽ}84zÒâØüÁA  ‘{´6?+¾P‘uàÜžMÇÒÖÉØq"ÿäÕÆz—¿r ð æ"À Bð;f"Ïæ\{¿9sË•—æïþ!·ðÌõ¶¶×ÎÇÜBÄ¥ýõ›ËùwSçŸ[3'_,e×ïz*8@„HÍ£†æ’"ëÚÏr%beûª\¨)Hßpâ‡ù§¾›u”‰Ï’Ï6²Ò#DsóRæAˆð"5+fg¯þW^Ÿ ÙËÖey P!R°%%}gÚÏò›²5sÏl_v1÷xñÀƒû—<‚1ðÇ7ðÐÁ4BäÒ“û\º»»×­Ø²wWæÃÚG7®•KBT}¯Öúˆ?¦kÑAaÀW™;Ã]ŸÚãBäR@ÐÁB䪗‘» mþeï¯uêo\«¸S~ÿÏÃ=›ÕO>xÿþ½æ¨=ã/ëÆEêÆÔ"°˜CˆÔîŽòb$Âú•?îÿùPmM}éõ;eÕ¹' ïÞ©^÷E(íAÝi½î„òçÓk÷5):,5׫–;…Ðþ{"MM3ξS¿çšå¬ÓÎ(0 ®ç¼~Å–5Ÿ()¬Û¹¢p÷ê¢ÍKΰµPGG‡±Ñ¿¥IjeüÚ䚬ʽ[ ¸°º05׫–7EkzTÔæû‚­äû°Q™/TGË ®e9 !®´B´'íàÏ)—ÙZ(}ÕÅÝkŠ6~•û æá›7oŒŽÏ$úQƒnv¯#Öœ/x&«rïVç.¬ý¦v¦<¯Zõ÷W‡ÌÎsûËãÓÃR¬FŽEËrB\%h…ˆ©PyqãOë/³’º(÷~UMËããÃmì5Òï~SH4×¥T‚|jÌAÐ Ñš9ùL‹öýPüç‘Ó¥7ËÛÚx¡Ç;kÏK·‡‚VˆVÿ+ï‡ù§3÷þ~£¤ÔfÃ'ÀŸ§­™{f圜=i½šÀ Á)DL‚Ø­™W“'8…ȰŠÀg@ˆ¸À*_!R«X| „H¬bð="5°ŠÀÇ@ˆxÉ*Öønô´]\7#.Üb·* „')žC ð%¦"ÿZÅ:Åù•5ë×uDGŸþct"ïÃÍÁ¥Äá(€/1‡¾U¬Ó+K 内©Æ÷#"à*æ"¿[Å ök‡È‘0{ËM=›ÖŽó[ç%ÅE††DûtSN‹:”…ëøÊ‹/=ö.!¾¬Þ57>"4fÊê|™£ w¸z"þì†ÜkûÍ_YàÁ D>°ŠíÅö¦áÑVñצ5™(§¡í]W×ÛÖsiIêPž)+7¾–ˆ4)®ÔÎuU7s¯íC+²¼|es‘ß­b»n¤/LBróU®MkÕ–©qŸ¿!-3ïVk7/×”•_Kˆ¤I‰&è线ª ¹×ÊЊ,ï_Y ÇB$øÛ*ök¢LëóNõTºˆ¸6­ [K奓û7.½¤DŠë*Ư%DÒ¤’é× %VŒ¸×j½åÄ· .jÀŽi„Hð«Uì ¢£Ý¶W÷&Jצ5yWaͳN›`koÌ#JV‡â^˜Üøš·f½“R|¥‘á:¡ÄŠ÷Ú~pƒÀWè´BäQ«X¡ãÄÒ¤¨Ëб_îµö]D<›Ö–œÔ¹c‡…XÂc“æm+èP‡â^˜ÜøZêQ½sΨðèÉ«¤Íjýá:¡5§îµð•#h…ȃV±Ö¯­yÐ*0@‚Vˆ` @àœB«XŠà"XÅP§V±ø XÅàK Dj` €)€U,¾B¤V±ø‘/YÅú’Ày>bà™α¯b!ò¯Uì¯w†k»ÔÎÅËÍÄ¥ôçX€W1‡¾U¬>n\n:SÎÅ !1‡ùÝ*Vþظ¾ ªÚvUa£jÌ—UæRû®xëÜÄH És0n6ËéùæÌ*•Ã-7+ ÛÛ>ÔñëôtAˆ‚„`"XÅÊE@ßUËvU jÌ—µoêÊDJȪm—=-gqÅlVÝóvS9Ür³Ò°½u’‰Â÷ž±@0‹ùÝ*V.Dú&¨Z¶«RTC¾¬²©Ç5öÏËâŠÙ¬ºçxž±$7+¾í­³LBÏX ˜Eˆ[Å:1sÅvÕˆ/«|j&DMÚ¥ºq·X™=ÖO[àÙÞ:ÍÄé)Òê LŒi„Hð«U¬ñ«Œk»*·Q5àËÚojvk–x¬îÌZ;¯q·ØŠXŸÛÔc6{zœ~Ú<ÛÛ~pãÃ3¨ Z!ò¨Ul7»qkÎÿwϳ]•Û¨:÷eío-+¼»´yv|8‘¾¼w‹Ús–'GÙnK‰âtÒæØÞÂ3¸EÐ ‘­b»ßÍu)Õà#kÙî·­—çRèYïÏ@ð ‘­b)4vÖž—n@ì;Ò¡Ñ“ÐúÓex” "XÅ8§Á*€€"8…V±Á)DF€U,>BÄV±ø‘XÅàc D ` €ï©U,>B¤ÀV±ƒŽ>Ç1á„¡xÓ¬b/ýßõSêq!r) „È#˜Cˆ`;¨‘¾Ç!2æ¢`¶Šå?kÏ5q5Ùyþ†-guž¬W×?¥?ÛŽüÕüll‰YZìð¸{_¼,fSâ#TW|NO„È#ƒ™Û*–{½sM\Dvš/Î-gµ„ˆ;\ÿ”ªƒWަ±†ülÛOLÝn„‡»ã&g· JŒd3[`! f«XîõÎ5q5ÙiþÆ-g¹‰i ×9.nð D½ÿ@›¤žÜd¢µ‚¦~L+ÊyÿW1’9Ìl}€9„Hb«ØP¢ÞuR›¼›ÚÄÕHd§ù·œå&¦?Üø)À3ÖæûÙ¶ÿžHÓFÓŒ³ïÔïÁÌ6P0 Áj›J´ÞÚÞek¯ÏÚwkÆ3q5ÙyþÆ-g¹‰éwá”VÆÓØœÆ?[Ù­ï[Ó£¢6ßl%߇Ê|!(ᇙ­ï Z!2UlWqÊô¡!Qe>”ºqM\G6¿qËYnbzÃû—mïÈ_59Úîg[­snﯙçøL_Ÿ–b5rŒ0³õ=A+D°Š 4Ìz\ÀA+D°Š pZ!‚U,Cp ¬b(‚Sˆ` @@œBdXÅà3 D\` €/©U,>B¤V±ø‘XÅàc D `ë{Ló”÷@~t¦9?:˜Fˆ`;xéwø®—KgÏÕS=ðàW'Ñ`V±ƒùá{Û*B˜˜Cˆ`+ô¯›À*Vxsf•3XåÙ“¡> êÎÜd¤bä£á›ÖÊPŸEX§çB4X€U¬¢n«ØÛq4άæuÊ= ¼ÎÊd'DêÇkZ+ÇÈÉ­9„V±Šº ¬bÇó<ž=ùJƒ{äµ’Qœ©ÎkZ+ôàôäÀÖB$À*¶SYÅÊ„è±ñ³§@}ä‹`à£ášÖjE0þïD«³Y1 °Š5—UlE,Ïmê1ƒ==ÎøÙ“Ã= òÎNE0ðÑpMkžR¸Ñ*Z!‚U,'²ü}f+´ç,O޲›Á–Å={2¸'AÞÙé±(ƒófçšÖ:=p£U´B«Ø@ƒ\Ýo[/ϥг~Hø "XÅ>ö=áÐèI‹JELo8߃Á*Öxd§ù÷âu«XÖ(Y°ÒèJ˜êŠSûVnêQ/RØñÞ¾ÇÂh¡âÑæÆpšÒ³\. §¡^Äj­a4M<•Zg[}PrœþK0ì«9ÓÏBýQ*bzÃùÖB«XEÝV±¬Q²`%š S]áÚ·Êÿ¯ÍMƒ3ʶh¥Ý£êÍJ¦6eœ#DG!ËBk_¯!K– l ªÐ?Û܃’/'¤äFp꫈¦s”rŒ|Ön8ßšCˆXÅö`*«X™B6K7&Wˆôí[¹ipG]¡äzA¨O¦˜«ê8¶Y4´u;ѯÝB÷A–|}­v¼¥u¶Õ¥è Õ¹gþ·N§sã£ÔÊÐø?{­Î¦"7€U¬*²óü}fË% VŠ¯Ô‰©®8µoå¦ÁÕü =wn(}Ľ êÂ(†"‹ìõ¢HVÖkܨu¶Õ%Çé¿§þ·r¸Ó¹ñQ*bªëw¾ Z!‚U,'²ü}fË«wÎ=y•´ÑÊÉIƒgß*‡›†Æ¨ÎuÄXשŽâH:¡wÛš@tDzGãl«JŽÓ Nýoåp§sã£tú¯bàηA+D°Š 4Ìz\~Dë–- Z!‚U,0=¢ÀV±Á)D°Š  N!‚U,Ep   ð ý¸~Ÿ~p²sâ)!b:óäÉ_úZàâ!úió1¦3ÒKVOLL”~ÊÛ¡E5ž"±’hç—þˆb@…ÈZUŸ•õG"ÖÎÞ¼&D¾ùâÖ úzƒ ®¹ú$»$DúEТT¢?zëkéûÞDz‰6< îS6"•8ýÛ=×4]!ÀK¨…È oéÖÌ=!êœJaŽçóÙÅþ«X}IÓ44TÁ"±Òm{óäÎOD3 †ri€GP ‘ÚíÐiiE$Ø·‰DÙQÜéÝš5 ¥Ú{*ÃhYì&+=N/ öw; S?a‰ýIê…^e²¨ NícîîI¾¾è  &D•?‘e[ïK¾'Çó]ñÖ¹‰‘’?5¬ï¢ p#B$Z­Ê‹bÈWDl!D´ŠýçÝ ZnûžbY}?‘øÕçÊÑ”˜ÝÐÙÕÙp<âNQ•Á©ð®dÓ¨ »*úZúîÎh̶VÇLZžj÷ËÊDJȪm—=…Æí8¼5sE$ë‰r!fw ³ir»PB)â[ãû <™¤ˆ5‹Êà4m}t·_‹£fko,šOà ÅWZžj÷Ë1Dý“äv nVÇæÿ/wWDBG2EÔÓ¸¬þb,-}“D“FNãû <™9¾ ¶ó²•o±¼Hvï&{ÿ5Q´Xsj—*Õ™5è8Z¿¾7þ‡xÙŠˆi‘{+"¡.‚’GD×Ûë£i"EÔ9Þ‘ <e'Ò(‡39×WðŸ’uÃ"W^êìßÁöæqñ²8æuj—ÚgšH‰ÇêÞȬº Dx  ‘àþ#‡(¤wùu3Ä~§æ ³ uV|¸%<~Vj!ÁÓ÷²³hYøÐÕWÞÊ~}:4ñãUYÒ]–3»Ô¾ú»K›gLJS¿ÍjN7À€ñìŠHpwÌxPˆ²Gf´„È%<°Gb<"DYYQÖ‡õøt“á!zµH¿@…\<%Dr|f3«þÊ7Š{Å7ŸZ޽zÙ^[Õb­h2dHñ¹{ÖÊúªÛu­ÍÏô'B BÔT÷¼ª¬Y^î•6U\}x­ Ši“&ë½îD("`Aˆ¬=R£"¦?bb'eåNîD("`ü.D­O$ñ))¬ÎÊ(ضîðöõG†È`*„„˜¿ QÙ•Z‡ ]¸¿oÛ‰ Ëö¯Z´gåÂÝ«íÞ‘ò;“ VîÞl*8uëqãSõD("`<.D.=¹Ï–C’?Y¶míáÕ‹÷®X˜¾|Á®•‹v¯ûfŸ¸bï^+¨¾RP®.^D‹E~M‰/-†‘:“%"z‚eyMêëÔiO•Ü¢¬…s¦ f 5uÙ²ßîAˆ@0àY!rÕ˨²´A¢«çïm^y©“ ¶Z± ýÜ´ò€øîÍ¢šìÃÃu„Hë¥NŸÜÒÚCûÿE´C«¿NO•E!4y×Å#ÅNß|pèXÖ7sâ!D ð¬¹j3{«¸NÚ¦.8YöÃwk¿þ‰Ý—-Ÿ¿«çîì«=¬E"ÖS1ܳBÔ#5eV¢(þò¬1sãâ1±‘¢ž·J²>MŽ µ„Ç$/ßTÒ³jÊX5=³^윓¹ bþ§dÙrª¬©7TõtŠ\[Úo}Çdî&gÅ•[zvṈ̃‘!¡‘‰_|›Ó¤H€þ‹b)þ§¾È‡SÂ/eMú£Ä´!D ð¶éÿÏ— ‘´"Êý³øÇ5‡Øí˜¸GÄ*ì6í›îÞlê¹5+¬NOU~1[º²Ôw[nQniÝážOšVEÖµ6ÿðÕGâ˽#hxÚõ¥µ·Ž¢çí‚P³füðy'šrs6DÍ8^Ö´m%žì•‹¬Q4¥L1QÖú#C'$}öý—Ëw¬?tët¯¶dŒ¡Ù‡oŸ,}tüdÑṳЭ½‘·†ÒÌ*#£ D @ðï­YKÓsIˆ2¶Ÿb…éÏÚ%?³ŸL‚ÄRyãѵ‚ªSGŠ÷ï<¡îÁ‘} (|ظùKsuöˆúu`-‡Êú:Çýf™[VJß»8)˜E“ÆÑâtûÊ'÷ò·’–ÃÖ*e¾µ„.ã.~.—ì9•²yÓì 4ìëri¥Ôç°D¡êrK·}ÝùÁ,V³Oçt„þݬn¬û«ì²Cˆ*®×Jâ#•õËÓÅ_™ý¶çÌùÓ%Šá"uWƒ0!:Ô'D£úP¼g8%ÅД ××>[ÍiÊ-ø„&ëOš[VL4F¬ Ú£REÛ†Qüé¦ÜÓL¿N!€7~}oÜËèùÓW…9åWöì]zâêî´C)+w®øöÇk÷þºïÔ½Ò¦âs÷† ²oÛ‰æGOÃJˆöŒ ;JO–ÖL‹§áâ­YùÂÈ¡Ÿg7å\:<-K”©ËK)4}k”eÑuÎrhø§i›Ž•gßhÊ)¹—±÷3¢5b{Æ ]š{øÚ£œKE)_å&›ŸLG7DИü&㣠D ð¯1ªîÔ³¸eÍ?wo6Ú6Ý+mfåêùªßöæØ•{é|™zl@ QnIÖgI#C-aÑIË7Ú7«÷}2!ýøî['‡,¸"-]h4g÷Œ•¬ßö|:mÜÐP²DÄÆO_¾&_ºóº¸ôÓäè0KØÈ¹ ¹ÃO ¬î_ÄXz¢Ì…Q"ø]ˆW ʳö^¿heë{qwöøÍBûê¨(ïÎáŸÎnO9ºwËqõ÷%ü~ýºZì›ÆC§í­÷{&"PxCˆÜ£µùYñ…Ьçöl:–¶þHÆŽù'¯6Ö·ê ñûõkšâ³O.#Dnà÷ë×4Åߟ$v D("àwMˆpQ„@ˆ~Bð;ƒZˆ–|¶Ñ¥â½´aP Ñš9ùÆ „€€e° Q­µQ¬wwwKío;;_ýýBÑÓBd±Xü^ÁBÄ$èeÛßõµ·k²×ÕìšÒºãÿ½ÌHªÿmaSmõË/¤ž*!ªù€>¨í×R;‘&Öxèz—œCb§|“ùpàñ1ƒi(ðL6xQó_Í_\›?çÆç¯3þ§_™õQÓ¢E/þúKÐXµ/§ÈÙëó‘´¬ÝÇ`Çq½w½}R²˜h¿'cº%•ÐȘ@ˆ¾½óÝ‚{‹þãÿüÇâÓ_>þmr[Æ„ú×Ô×}ÄJÛô邿­Yv¥½wÔß§QØ1ûí]ß5k+ß³àƒèа˜I_;V5¶¹Dâ³o•Ãix¥½¶è˜*´ìÂo'ŠÖ (ç·ÎKŠ‹ ‰÷馜Õp¥þ(Ö6ÜájBÄ^Ö]1#ah‘VbüF¼@ ‘ñ/‹Bôuå7ßÞþîß'çýïÿüÏ–––÷ïß¿xúäÅ_O¾YòræÌG‹ Ú{DÖ‰ô©øG­Ÿ}JãªÅFéš}LkKŸ¼í²½®ÙO´ÏÞÖNSz´«(œ†Rx«µ†Ñ4›*²#H7[}EaYÚ…d¢œ†¶w]]o_XÏ¥%)rx !ù»ÜájÔB—QÖÚaÓIŒÛ€74!r ùf5ãùóç õõõòk©'³º}îY×TÆÓÒ6G›tÍNìgµ&6!:*YZûz Y˜Âl ªPî˜^òJÐ XµejÜçßoHËÌ»ÕÚ-.¨ê\!âçæ£xùXö’›·o`&!bH´£>„VsâŠAlíõÙ³,ßT :{ºµT^:¹ã‚‘ÑKv¸¡D½«¬6}!â×ÊGë%71­lð8æ"¶(š6mÚÓ§O=5}<%Qâݾé"­™Fi7Z;mï_Vç¦Nt¼]F1Yd¯E²ú0å_ íDJgЗw´&ï*¬yÖic¢Õ˜G”,6¦­·¶w1!˪֟ID¥Ý:Ãuóá¼ä&Æ?|¼€É„ˆÑÔÔôìÙ3uOíï½^F‹_Ê^÷]¤ÝU—}4*Â9fÁî"In2‰¬Žº5è/¨üJï:7–æWjlÉI;vXˆ%<6iÞ¶‚Çâ”é#BC¢&.Ê|¨¢æ-3G…“ø’;\?õKþ‘òÏc!2RÌñ…FÌÊ`"<†ÔB0"€ßü„àw D¿!øÀï@ˆ~Bð;"€ßü„àw D¿Ã„èÿÃ&Ò endstream endobj 36 0 obj 11012 endobj 38 0 obj <> stream xœVKkÜ0¾ûWèðF£‡%ƒ1ìz7ÐÞ =”žÚ¤¥d[’Kÿ~ç!yíµ¼B@‘4¯ï›Wo@ý«^•Æ¿Œ ­QoOÕ—;õ'Ýjõö³Ú+ßl¢ ÆmŒ:þP÷F¡úñùk§­vÚ÷±Ómà@ÿ^§ó^{;ô¦ƒF{½ím§w²Ô¾Ã›C_ã‰îÍ®oÑ@;Ø¢:ŠÒ3xã/|£ k‡J°ïIŒ¸É/›º¾nÉ"$%mïÄ¡¸CQì›t_ËQb_ñd;t_Ç.çXÄgŠl@êÉß²kË4Bÿíø¹:«Çb2AoüE27hÕ2X¬XÉR{ÃáÉ.£NmJ” ”T t&óI¡ä2“粘x•AÓÒzÉÀJÆU MÑAl9yØŒ2!?SajVfà&AZ ;«Iu¬ÜXC^¼1lD­å¤BÃXpfŒÚ¤ªÇ½ç$ȺÍE¥þ€”ÜÔ·’.öC¶˜°º[ì}ÚïSª%í‚Á#(Šç‹áá2ðíåt» Ëâìè%®×ƬX"i~m‡]‡TP~i6½V\ÁŠ8'µ¸äýÆIUVæ¹"±—8õ‰Ï¡YÔÌФö¹ù<;ôrÖ½/%Kî-€óû|Ïãä¦ùØÓ„h ÃÅîÉô |W4Ä'ò_…¤#¸vR§Åðâ¶>?}rÃu¶Þ㸿`KAÜ.dÁ–§!ŒeM<‰Í=6Ö‰9$ž‹OÝXA£ñ5 &\×9úvùxn/¬Æs‡Ÿ‹ãï²~À1´Ð7vMßÃÆüïFýGü‡ú Ýƪ&D„„£m ¿=©ç»$sFcø5Q¡[ã}’xíñ\’¼*Ð ùb™m#6£Hó-º L…î§ÚßOÕý§“ÓjÿW‘0ÁQmGÍiùE%r‘~%È)Ò‰÷ži·$©äD>¨'_Ô¯Š9…¤@Að«–H]NÉ•M Bû˜ÃWrÊЦgAÈ4‡ÈNgh/xL.f(ES<ËÄS0KÏ‚ý‚GùWô¤ç F¡ns4Œ ·s_‰ŒÖvUf1"ÝB܉ÌFJNYöŠ÷f”BX:ýOwZ¬¦Ú©ï`ÑwÛ×Ð[;Í`¿¨L0¤}ƒû†+Dú$iÆ=­h3ó—i[:ä¶%çI]ÉI‰^A§6—}‚5ó7 !¦9Ä]ÞÏ9œÙM‚UsE4j™²3ýyj.™/X¬uÜ­òçs endstream endobj 39 0 obj 998 endobj 41 0 obj <> stream xœí}ùWÔHÛ¶¿¿ÁóëóþïsŸ¦?à êAàUÔyuõ¨ã8.ã¸1Á€;*ˆ£¸;Ì (‚Èâ ¢€¢Ø,‚€à†Š`ëØ¯št‡TÒIzMRשƒÕ骻*ÝW—WÒuõýöÍë·o^oH8J )Z*ÝÝÝEuãð–ÅyÊ=h2µ¡â¦à|0dö ç á <z‘§ìœ§†“ß­œ§ O8Oàað×yZí¸›óˆêóæÍ£9?o„üžVÛ0ÝÄyšçÔð¥žÐžÀ3Òóôjïîuž _#¼Á`ðöÜç)9zþd~ÅÛJPAC§&¢ùÌÌ¿PqØÞ€ƒ¬…ÚÓ¡À/(lvÌÙ稊õ6¤œ Fä¶ö|éïÿÜm*LŠÄväøÜu­ó'[úZ³0Ï~ùY¯¥¿·> QâÌ |Šõ¼3Ú†f8Ÿó—z§¡%Øú`ݾY¡?oNHÊÈÐ5 БÐÚ×8þû§Z¸û溺Žèìø¨þÑÖÐÂ$Pœ¹?¯ì–¦7–óiÏ¡îd€G¸f–Κ[—Òw¯¼®ÛQ( çàZ€ Ó[³}t^39ÊÇᜠ|NÞŸ—«äinZsƒ.èS§‹Ús8Ö0“îw™-_ß×ç%N£F%—4¼1[(Ko[>@}p:@å'Œöçü<€ mæˇ§"ç5'ïÏËâ<½žÓÜÞ±¨t®°‹\ÎSu§bæ„‚&­:zó5}¬37qñäQ~†€È‹?Ñ;öÍ ÑkXÌÁO9#GûFN^~ÌD8¯8sž’Ïyz‘çóœ]¤ {pr¿\γy¡²nénÂy÷ÁI=/~C’)œG„'œ'p+œÔór9ÏКÞüB6¸NêyYœ§X; P™‡!<»á¤ž—ËyWõ% P Oêygú¶6u]˹{297ýðe~ùûdñ£ŠÅ3!Ð<©ç÷½z± Ku~A-χ@'ð°žWÖ1yæŒïé’¸-…_˜g ç B-zi›å cÌû †áLùñ‡EÏ]CmO†@?P‹žG@œÇ.òˆíŠ ï¾mdC‚ÏÂ[z^ÁžLšóGvŸ¢Iþç…t¹[\ â<úK .gÞàôòzžó_ªÿLX1#t¤Ñ8ö»ÅÛÓo¿qÓ„à=¯lï½CÎÓlGK{*zšó­ #ý×eV¶¾ûløÒ×eºsnûd7M€@^ÑóÊ|…Œ¶ÁržÍsšöØ |Îó-~è`Ë…­ó&Žô°>Æy)œaúT°}æc`øâäz,çïøÃ//ñgÇÔ\’øã„@Cà„¯›1“gïð¬O^h3s{Á'׎€¯èye¾Bfg”<‡óìÆÒ×y¾Å M«êúd¡b½‡v 3 ÖL€É—ÛÌýæ¶K“°œŸðVà5á ŠBEd·¢P­'Bø#þäÙœg… 5á †à=ïm#´°sÀç<ß⇾`µÁz±†Á©ö—£Ëù ݬ¡Ù†tΠß…j˜ÄŸ<»#3(ÀTѳ'°Â[÷ç_Ãbµ :(ñ¾ˆžÇúA(ï!Ö0ˆ8oçm–ó7Œ°rø5«Ð ß…Bœ kFÛTîÃÒA8/^¼?/×W(¢mÜÊy¬÷k¬ ‡É¹mŸû? iªi‹@ÌÅm=_(Ëç5Bƒ2¡žgG@X5}0 ÎÔÛoémÉ›5LÛØ…p¢mË÷çsž³Î£ƒô})Apë=ÄÑ5ì¶Á~a‹Žà¯azË3¶/š:Öü‚B"—Æ.{‡Ô\œ¸ <À¾ ±Ä~ Û_?wœÑoô´èŒgîa, ð ž±\ÃJ÷ÛÈâ<ý=,VÛ0œ×ç÷°äË/¹ðâ~éœGdN?|™¯mèÂÜŸGmtH{Ây¹ð¢ž—zÏ$Íp‘û6t3̇@Õ𢞗z g3Ÿ_ègu¸ÎÈ…õ¼,Ðr]|ówþÖê€:œ¸ñ<~YaÑߦøå… ç³Vþ?T8ݱ»t°~C¢—šÓÚÀ2s=Û™âÏvþÁ³£÷g7ŠçÍÚpáõ?Їöùõ ç‡«‹/>E¥p¾*q '‚ÈÎ4þC±6ÃSâ|~Y¾ ]úÙ¹"œ·þc1¿i¸ž Ó‹Å‚ø(H&çuÎSšÓóôºÍpÕÎ[Û9O7Þr!ç­JM(Р ØVÅÚqDìQ—fT¤(s,ZÈ…"óƒpÉù‘ùÿib'éB¨WÏ‹¦Ãd‰Kx 'c8Ïb»`OMˆmð²üWðϤbm‰X"–N.˨hÃ;€ñ"‘qA¸Éù‘±§€¤« m=8,«]úd7ðRòXÛLL)ÿ`;ˆµ%bˆX:¹$£"ëâ|¨Hdvc¡d‹üÈØSÀNÒUЃžG®ç±Ý]ªmð Xz[²ÖÛÝNX["Öˆµ º8£¢y+ÀŸ"‘Ù±ÞI!o#vüIº š×ó4â—ýýý½|<ÉÊùƒç«棺•óY&ú8âü½ì4é÷m„Jo#Рr,4Ðà?fúò¤«²äMîÔËy×óróòÔT¶2œ/+ªÝ{ ±-ò[W¥ ¿{bOÒÏVÜlÈ>wľ½ÐÆ=—¦fŒŽ/0½ùl±|zYwU¾óBWœ÷e=/7çàƒÒfæêµøRÕo›Òv®ý ›-+“­òæ×Tt„áü6 ‡¥X»V3uVØXÎ_3Àº̹8œø¸R‚0‡B¯@uzž†ô¼¸wáÌÞç÷x`g‚Þô¼¬=™X ìÚºïXrƳ¦ç÷ï>d8_œ]ÛdÂeDèßpŠrú UÒ]þÐ.缬€žç¼¶õ¼Ü½÷| ~ïÇN77¶Ü¿[ýøáÓ¿ÏY¯ao\jüúõ«`¯ý®1*àƒ‚¡uÈy ëy¾ÇŠ]¤Dˆ‹ÝŸ~ülSCKå½ÇÕUõy—Jž<®ßµ,}„; $Ù=Bì‡Mé¿Nö™ŸP6`ÊøuúÿqsïÛã8LÌ'Év‡ã4Ä™ùC4î³±Ô–öki̘= œSåçLÛá‰{‹óZÕóâœçû 9غ鷴ãgMÏÊï<¨}Üx%§äAå£zD p •®±‰73ÛôþK¯i;@ÄÌKM=KÏTßG7p˜˜Oší?4߈5'â†èÍ™rÈDQÏŽ†ÎÈîå*68g£²ø‰=/Ïk›ØM ;—å4Ä}бÁ9œ?q¢ç…àákØm1‰ˆð÷Jš“c¯×<4]»róÑÚžžŽVx+޶×Úî¤»ê¤Øî¤5'âÓöþ³'À¼k_øÏÉó:lì&èJÏ+ë·uߎ¥9å%ÍG¶–Ý~sﺫh…ÿôIbb¯?’øiX¾õXWÛ¬'Áv'ch¬97DWÊèÑ{ŸR–òÍþaݼ³Åòú絪çôMM:u<þ6ZáS¶Ý8ºãæî_óžõõõIퟰŸáÝ tÍñÒ‡sÕ ËîçÐv7lhG7œ9‘?ÄÓí~ ómçþþâ\ÿx“”sòúç)Mëy}á–¶ýw•Äè¼§u /:¥w?°Ûîè+X,kªÎ€=4zÓórûîXT€hâ·Ò¿Ï_©¬xØÓƒûù icÈ‚Ô÷Š»¸ DÏ‹cûOù¿­¼’qìÏûå•‹×~z‹À… z^;_]”‹$½â±|DÏ‹±iÅø&ˆžwĨ:=ï ˆ7P z^1ˆ7P¥ z^ˆ7P½ z^1ˆ7P¥ z^Üä ”þÍ»‚––»æ…·Ö{à+~‡p~Ê"èMÏ{×èŽßD'¼~».¼þGê@îv²&æÎSšÖó¾ï tø&2¡pÞ€¿ÍÒ‹ðÎk[Ï{ÝHÙ~@Û8qá¾ 1_Þ§¢+"CƒŒ~£§,Ù“ÛÉeÀZüpñ™ è‡õÉ‹Ãcfn/`m‹Ævç„]f–@~þ$Ýa$Ô•ž÷º7ÐK_kÀúÖ—ÛÚó¥¿ÿs·©p(µë0¯ß…‡/´‹˜&ÔˆwÇÚýøåf ŠÌnà#¡®ô¼×½ý÷SVGŽô¶ÛëË«Û7+ôçÍ Iùºp¡°./ƒw!¿å·8{vVxŸ££™p8ïB“ ®ô<åmo Ï…ŸÜ¼ˆó홺t{ ‹ó/ħMá|Žgâð%jìºÒóÊúj#o Ò6YÍ},× v\éöÀêø6¯Ýê.¼2E|Ú8Ÿã0`ã»Ï$¨+=¯ ¯fòR_ní] Îdéö@ª7wKÔèAKc%@¨È´1>G¯šu¥çô%y`às×íÅ`¼æþ‘\½éy¹}IÞ@ ^¨ƒ§¯9)ô6> ¢çÅA¼ÚÑó" Þ@M‚èyo &Aô¼“ Þ@Õèyg@¼jÑóŠA¼*ÑóÊ@¼êÑóŠA¼*ÑóÊ o ê kƒHw½éyâ T/†¾ùu¥ç‰7PÕ`Ÿ¾‚óç¼Võ¼ž½ø]”Xמ„ÈŽç/Ùc(²g›Qä%Åq9u¥çõì ÄR ëÚ“Ùáü픂?1¡îâ/)?86'£®ô¼ž½Xja]{R";œ¿¬„ü‰‰'@zIùÁ±9u¥ç){öÕ¿‡ÝŒïÚ“Ùáü¥{ ±ï.ý%ÅædÔ•žWÖWÞÀD€8So¿¥·%oÖ¶Á¹ö¤¤ÿs8éCìÄD»ËxI±9u¥çôÕŒ7°¿4~î8t±:-:ãÓ ëÚsIú?éCìÄĺ äOÄO —“QWz^A_â ô58^zÓórûo ö@ô¼8ˆ7P{ z^ĨI=/â Ô$ˆžwĨ:=ï ˆ7P z^1ˆ7P¥ z^ˆ7P½ z^1ˆ7P¥ z^ˆ7Ðóàí4V½éyâ T/†¾üóÒç~â T5اïro ¥Q=O¼Ôðº¼Ó²_=]éyâ äÔ5à ”ž¾PŸûç‰7S×€7PzúB}êyŠx­Ð”7PzúB}êye}‰7Ù‡¼ÒÓ2¯ž®ô¼‚¾Äˆ‰ìKÞ@éé ™WOWz^A_â ô5àÏKNúB½éy¹}‰7Ð÷a™¾èyqo ö@ô¼ˆ7P“ z^ĨI=ï$ˆ7Pu zÞo Aô¼bo JAô¼2o zAô¼bo JAô¼2o çÁÛi,xPzÓóĨ^ ;}×å ¤4­ç‰7PÕ`Ÿ>s^.Yç5¬ç‰7^×€7¬O^h3s{Á'|NEWzžx9u xÑA&3 L¨‰)Îy­êyâ äÔ5à D™Ì€SEbêSÏSÄh…¦¼¬cÃylL‘u^Ãz^ˆ7Ù‡¼VmcÏ á5"1õ©ç€x1‘}Éh½†=²(,À/xÆ6æSŸz^ˆ7Ð×àò¼”Öõ¼\o ö@ô¼8ˆ7P{ z^ĨI=/â Ô$ˆžÿëZR„ŠgÞçAô¼8˜= ¤ˆUsžèy6çuÂyéyÚÊ$½°ûÎkžó”õü07“£B8¯7ÎkRÏ#&7™Úè:{WØg³ùûnNKÂyr^{zžæïfæêE3ÇŽô7ƒÃfÅÄœ©õ:ÇÄ‹m'°ÁÔäårÛÝ4„–8¯1=Os¾ãUDz»+ÝÿùcÚÿ + æ´GGw¿zE s>Úf$ß8_úüJEãÙ¬Ìõ‹Â½Îj)„Ì«l>wúg€ƒ„ólèDÏ#Îox¼iUmô¿þç_k®,qfFOÚT+ášõqÎTzæÎ¥„9 p¸³Z²ßw¦Ž*é»~i4¿ädÛq?‡2GÏXz¶Mbº €Á2g«WÆî5“B‚à?ÿþËU¶ùäUÕÏ… •íØ‰åU™FÙê•×¢çOò3E,cÔòxÌü`cÐäu eö˜å™K¢B†€1Q[ö”·s&``™J˜ÔËyéy‘ÂiLs~mÍú 6ýriÅÿûß_¿~í~ý²ûÕËÖõëÞÏŸÿ|ÍJ˜ó™q?§F.ݼ|Ëḳ®Tµç‹r~BÒí¿ÊÛ²³×„OH*˪xžõ7ªo“ØÀN×çÙy'v0½Fï,8WöÕŽƒˆKv~f†ÁÌ*¡uþ¿x) `ÓrÜ¡ŠœÊæSIá0ÎvñrlŒMº—SÙtê@Œ+âO@Kë¼Zô¼,°¯aÞ¾};qâÄ––¾ËIä6ïvyêÉÌø½{N…QkŠs>kðC‘WõŒ]0JlpålÂ̈±FíŒêu–YÛoo¿¤Üªvô¹Ø`0Æðþ2÷…$$ݲ=:Ìô7öŒm•“èƒ!¬ƒáü hó¾¯çeÃy„ÆÆÆÐÐÐo¾ùÆl6sZ:¼o“WUÊpà ׯ ›óXbHo0`CΓ슶¼ªÇØ^ôR?9·=¯øG˜ZÊÿŸŽnœ[Z¾=Ò0ç/QǤVa>gm§PÅæüÙ!·a' ÎS*Ñó²€å®Ü…œÏNZägœ{[ˆóÖ¥~Àü×ìÆWR'À¼Á;®•76.‰ ö7ø_¼úÇLËã1ó‚~A“×þƺ†]9ÞhðŽÜ²»sñ‚Ê™ußA×°ZÕóRŠŠ¾“Ê«jL›?~s™³÷Þù%eEíœ×žž×ØÞƒÁ‹Ð‘³µ¸$”Î9OiQÏ;ßä¼õr^“zÞÎëóÚÓóÎÀëæ#o¿WR¡=O@À†çõüþ¸âÅ™Ó! pëyDé—/_‰B{·Â“zþ÷½YˆÒÌCTˆˆ`þ²Ú¸žÔóˆót%b }n@8Oà>xRÏÓœ7Õµdfþ:Žž¥ÜÆyÎëº ž…@1œÑóró0œ/”çþ²×wÂfû>àl€ÝüÆXðÙ8´·ÖtÄÜ ©wó Iá¼C±žW§†Ñ6Ê8ožþ&ºZ€xuš®>‚Ùf~c,°œ§+–¾—˜/1”¬Q| Šõ<ûk‰_I0ë<5(éi†s䘶i ßõZ+m£`6SÁXÀÈÖÁgÍ%‰?N4Nø1ñºýC`àe»ìó$5rlÜÍ>ŠÍOÄùšßÁpÐþŸ;ŸöŽúRz`qD ¬ßöÇ4#ð(Öó|Îó¿ætqrGË;À6ôÏ—y°Å²ÆX·§Ð?¢Z3"²[ÍýæÖ‹!Ü–ÉÀËvG})ß65¹zèË:4é`—m$¡Üyü´w501³©—õ+ÝØf¾Åz^±¶Q¾ÎST@.E%ÁB3e^3z©:?ˆ§ŸúÀþkCì¥k^¶»¤Q0çɰ#¶š¥·íæJ[B?ÊÇO{7 €³5ÛŒÀwàÌýye×°!ÿ¥t§>EA`K)LœádØØ 3l9„çíôFœ·Ýó4ð² Yî¸å&Kü°žÿL׿Îcêˆóíšøœ¼?/ks³Î#Ú+[ç©æ@ˆÜ2X Ó °ÙöLM8ÐùãžgG@X5}Ïyô÷Ÿò]£‚bo™‡7°ô½(]Û¸sç1u¤m"²šûXŽç}NÞŸWÀyJ¹žGÈð³ÿ§Rá7(ul0'.0„/H,Á/ãCÍ7cFn¿ó™u¯Ò82â‡m™ŒLq”;o¨þåÖÞ…á0ìÓŒÀgàä~eë<¥TÏ8'÷Û(à¼3zž€Ày8©çeÁzž€Ài8©çe!3ó/)dFmPKç‡# ÀÂI=/4íÅ !<[ᤞwÄWHàxRÏs ŒóÞ÷6Õušª;FŒQZXkªi©{ÔÜÕÁýE2!xRÏs €óíÍoëª:Ø¥¶²½ºìÙÝâ:D{ô)0Õ¶º|žƒ‡õ<r9ßj²²šÃyDuºŒD|ì—Ï“@cP‹žfzÉ𼼤>3­øà®s‡âÎ`ž¬ó¡=_u§ÉFøëOOÌIˆIß»úè¶è£‡ãÿDlGåIE{ñå/Ú^;G cxKÏËÚ“‰y†óE—ªî<·}ͱ­«S¶¬JŽ>ºký z‘GÏÞ-®¿Sü»÷Æ Lcð ›sö9~ñ.CwñÑ ó&üÇNÿ9áܽnÇ]ìðŠž—»÷¾¦²•á|YQíÞØSˆðˆíh‘ߺ*ýÝ{’~¶âfCö¹ëØ BûͰÅÚô›;o¯8-Ø^¸«j„•yu/{-_û:ëŠÓ7F¸o,íÁ+z^®¯ðAi3sõZ|©ê·Mi;×þŽ„Í–•ÉVyók*:ÂpµÄqç­è#Ú~¨ÇŸÈ÷06î³±ôºñ×Ò˜à]ÑàwüËPÔaä¥áÃï*,–Fz†ÿÀ˜T7ÔºnL19êe›¶†à=/×Wˆ8Ϭóy—îßqéZÏ£ Ò9ëW% 1oÕ6%õ)‰ø¯q±r…ý,¶ æáÀç®;h?)Ø~xÃp"ÎÃØ›3+ä"ß³£¡3²{)ª4f7؃>Ž€ÅÜ ŸwKƒ¢~Ùœpðèé+/˜„¥‘™ÀûÕàÑÞ:ËV¿—ÒKcðŠž—«m:Ûß2œO;tDõ뎣¿ˆít©¹ÿünqÝåó¥éGr°A\²Î[åº!pü÷Oµà‡à70 ÷'b=Œè£°fý[ÒôíÙ ÆŒÁŸ±døùŸÅò®§åQYI~æ±s dÍÇ+diš€å@¬ÕýNõÅ"~[¤õÒ¼u^Ö5l[ó«ªÛ6ÎWßkbxΔ¸-)ôM›3©W‹®”cƒ¸TÛà!%ÖÃHõþ³'À¼kvMS:æ?£¨WË`N“ø Õ0•®9´4"”(ôyl‰‚1eÒ{i ^¼?/}ïýÛ×JrV—=³*ö[9eG“ÎÆÇÙºaÿîÇNŸ¸\[Ù^ZX‹”ü‰ƒ9Ï_bƒøçqÆ®”Ñ£÷>¥,å›ýÃ2l·`zvÿÙ;ã ©_x)*"&£¤®³÷Êbîn,Š8@whi´¢cŒ,, sìÿßHê¥!xñþ¼,¿IÝã´ŒÓW²hIRÑ6ø·½¶²•²¢º3Ç N&çÝ*ªŠà#œç{Ÿn÷[˜ßG?ùþâ\ÿxÛW¡¦Õ`ê¾w>aÙô±þà72lÆòÄlÆ…îÈÒHÏ` ìú%,I½´/î·‘›œâNñÃÌô’{7LhU,¶ý6ׯ<<•’D~Iþ=—OÒ{èk\~á“·g¡Exq¿‚„,Uåõç^»XQ2¸æßÌ|î÷k‡â/ÛwQè«(5bðZrÔÚbœ¬!p^ÔóÊÐÕñ¦ôzuæÉÂÔ=YIqçÓç\*kkérÜ“€`^Ôó^õ<WàE=ï ˆ¯@1T§çiÎ(†Jõ<á&§"q"þ-Azžæ|Ç«ŽewW.ºÿóÇ´ÿVÌiŽî~õŠXç{·@P1ëqQÄôºàa·~~Y¾ Ý•1}*5Lu:ÑóˆóoZUý¯ÿùך+Ë_œ™Ñ“6ÕJøŸf}œ3•ž¹s)Am“íIöı_“À?kP уﭳ, ÷ÿÔŒ…±ôæÈƒY¼Ð,Žõ2™}°f½OEVD†ýFOY²'·“×KuΊíÎ+é0‡ nbøƒ> õêy‘ÂiLs~mÍú 6ýriÅÿûß_¿~í~ý²ûÕËÖõëÞÏŸÿ|ÍJXÏ›¦Áú×ß,)õôA†8o][Ì´~LnÀH¸‰j]þ0›oxbì„/ËÿLá€T@nkÏ—þþÏݦ¤HÎ(ÜòÎ~Û>çÙAìİ}*Õó²À¾†Exûöíĉ[ZZØ×³LKü5lo L°®Ö5á°±ÇvŒ¡Ö[wàEe`çÇ`@dN¨æê81¥ü%°n߬П7'$eä?è`u§xu,ç±Ý±óá •êyYàs¡½½ýÍî/x‹ÞŸÿkÞ³ñç­£¨ €‰6›ešp”MªþÂɰ²F(`gnââÉ£ü !‘+Û Tý¥ñsÇ¡ëÒiÑÏøœïØ7?,À–ÐÛ]|>ü‡ø3ÅŸ¾ïB?z^JÑÆwRâЉž'{èAϰ¡=O@À†ô<zÐól=O 7=O 7=O 7=O 7=O 7ˆëùÿŸ1­ endstream endobj 42 0 obj 10696 endobj 40 0 obj <> stream xœì½ùW×ÿÀýùùùgž{ž„Ãr@{jqiõTÜ jª­­`AplâÂ"«¶X놊AÔ€ˆ(`4 ›@Y ¿-®­,ç™%&™™›!$ÂûuîÑ›»ÍM˜Ì¼rçÎÜ=ßÄÌÌ̦q2¼ì±ô `.põé§ô<Žáj}"­iË–-Œ>m¡Á‹w3Ö6ú8€Kõ‰Q¦ë(0(`a›ûÄ*èà 3úÄÅÝÜI&“-v—`£O30÷ pRôé|ÕÓ­GjÈ@F8‹åç\`†ž._¾B»åeBÌi‹b噦Ü'dSbù ÂÀRæ>.®>±îä°A‘ú4c¹~ÇÄ%â°Ø`ô‰úoêÃhý>„~ŸçV7æ>.®>1ÖÄK„tš±è—~ñÎVl&µùñ_x)£~(ë7§½¿Ÿ½o]°—ÜÍ7¿TŽÎX^‰78P +ÔØ’y‡ïÈ|:ͦô•}·Ö_®ú:ýÉ´Ô· ¸0÷ pèSÕó›€9…1Wîf8³Ç¥@ÙøOïztTcø85ù¦§¡"&q=B•¯&þšúøºû^Î:Áж N{´¡ó"…'ß½º†P6›ûå­þ·“So»N ”!±ç€;sŸáÒ‹wŒ,ñõIâ”Ø¬EˆVBHÁ$vf~¼ûpzNYÕó±i‘ŠÜ©º2ïU_º0`[xª9÷»u«¼åˆÛ>c.8É&K˜û¸×MgLIPŸ$”E"Ô*Tlr´íáÍÒ“ñ«6 VkÐ&ñ„ʺ‰“¤…³‰6—öìöp`îà"$>¸`®³žM:õý&)lœ R ÊFWz6!ïœæ±“ŸþîRe¬eן­é1}˜œ™|;T…Ðz&1 !Í{yJx}Ú‚Ð¥¡Ó“ÿ¼¼úäÀÜ'ÀE¸BŸ˜Q&F“RcªÉ@&2n˜«>ÍLw^HÜâ-óYŸW7ΤVfÄFúÉeÊ uû~S¿gG2£C”;u\ ñýCëüå2ßȽÝ O€Sæ> >Fƒ…[ÆéßMÇÒb áÒ¯ ߬[á«)|#6lÿþxîÕ‡ ÓCÀEúÄ =ñ•‰¤O‚pÊÜ'ÏÓ'S}ö—œi„ü·ØÅEúÄz w}\‡Óç>‰9†[¹¾3„©‚¹#(±äž¦{xÌdÖ½h¼{)/yÛŠ…ì'À’F¢>áŸN`ƒ}"Ý ô p)NŸû„×§¾šÒôø¯#}reàšè„ü:Ap „éÙå“ñ_…(fÛ! åéq_Gúxyù®ø|ÛgnvÜÆ‰–(óØÂ?4*6é\í(1[€ÐÝÊŽÿ*ØÏKá»bíöÄ\U/^Ÿ èKwÖšB¬Œ×”Ù½1$@)SoØ•\¢&l*b>7&Þ«ÊMܾv…¯Bî·ê˸¬›:\gÜékPd`L‰ØE„À8ý¹Ox}â³"ßÈ- I ²¹RF˜Ôß{Û^GC(ª˜#$>¶üϘ›%Æ+wÈæv.“zJ·£+¢¿½[Áë°×®ÊñYQ$·€ùÜ{‹dÛ+íu À­p…>Íp–h!Ã!ÀWãôç>‰™‰Ù|Êë: &ãÈËúâHZ$R¬ &ÿù°sÀ0ÎVØC©Ht‰Z«6šLÆáMe*U2ô)+&£¾¿åÝì1&¥/†JÚTTÛ9d0†:k‹6!¼>­ õI‡zÂt¸ow‹ÆáÎÌÑö>¶"B Ìçfnù«s¶-ììÃw À­p‘>9«î\7´<ÃÂ|¼KŽžû”Ä2"ˆVZ$¼¹ÒGm¥å Èn„Ö[Ú鼚yàë5+¼½¸ÏŒ57{€®^Ľ–Gáõi%]奵>q7ïð~‘-"´Ÿ­ˆ/æscâ…-|/Ög7ÄÝôé•nìî'çÏV–ž¾ÅWÏ«[Ÿö`6´<ƒÃÏfç>é­”ÀÈwoÌ'PDŸØŠm±¸kstõ«íŽàõé7ºÊ·Ã’ô‰ßa±-"ÈV´}"=¿eL K·Ò§;× Z?%7´<ƒÃÏfç>aÅ*þHÛÈ5ñKiÌ]r'Õm£Ô4‚èâ6ÅŒ>[©H1^ŸŒ?ÓWÊ‚Kºx•Òáý"[dGŸ”tná#ü–‹Z8 Ög7ÄÝôiã†/™q$—Ø\Ð'Ð'»,ðÜ'L¢XÅ¡xZf¢Ï©[ûÇÆMFýÐKmÃíòS‰ÑægDÒ6r¶±Ï`2éž^Oñã6e™‰T\×9l¤æÕÛ›ûDÕ›é6ÑšÄs7Zz‡ÇŒäWß0¬k—Òá¾mÂ[DÛÌ3—’éÆ?+kèÑS³±ýyØñ[F_>°ia;Ì}`)áVú4C_¼Û»#qÛ–d`e‰ Û·Æ\¿x—,#¶¡åþÓx6‹ûÜ')6Bu‡p—çZwâr ãÍ­s&¡ÉáÝ=gSQ´ÃÆ[1rÞwò˜›Fóh’!/PJ˶- -7ŒpçK wÓ'RŸ‡žHqÂ¸Ó VŸÈC´‹ÔÅu-ƒ>Í“žû„IÄ( 1þüê©„˜õ!þJ¹\éµíûô›̓æ\¢­÷ ˜?RìÀýq©>±î4'ƒ²«OŒ8‘ÁÆ 0V³Àú¤R%*½¾ý¹¼érãàí¦Þ‹7*÷†>-0NŸûÌÐ'<—êw¥<髿±ïõ‰«LŒAq;‰Ñ§ÒãßûÈåb/ ±‰e'¿_ä#CˆrÍÝýÑ‘>r/Ÿˆ=?Usë"$ó Ú¼§Ü\QõøâöH¹bÕÚÄ:A}ÊöBëÔªc»ÑÆË߬ö’)×ÿüKã0¿ólœŒ&F(¼|"¦?¶jÜ?ÍrÀésŸ€ùú€g°Àú$eä„}bg=Ùè·°ôѧðSן]¯H@èg6ÑÿhõÅǃÌË’ÕhÇÅÖ›šÁë7sÊ´Mz6X¡*B(•y™¿­<õô†¦ïBN¨ >­@èò3Q}ân´`%Z‘ÓtC£»‚VÞÇë»Q´Òê“tàO³púÜ'`Xrïlôɦ“}ºNû )By±‰åÉ FÜ;›ËÜ.O߱‹^YŒM\…ÐæÖ4‚úÈÑ'î,þFƒ8M!Š×'NÉÕ Ov¹O€‹pÛ©ã‚ïÈD‰wÞaæ>q…„[f%Bù¼!£Mýt£½âéêÙ ¶<©Oåf“y&¨O¿ÊцÚaÁØ”šmŠ”¢&QŽP¥9±›ï]äFAŸ¤sŸ±.>ë‰sñÎ¥úTò9ò:¤ºød°òa݉‘Lâj„ßé»ý´«èd[¾`%ZyZsSüâêÖ/¯ø#j®6 ©4}W«ÕbÍç4…V˜/ÞíB(¦¢ç¶¦çüÙ(«‹wlI¸x'˜û¸wÖ'›Ñ'2‘¹óN¬â<õI¥ypè›õ ™bUìwÅ/˜ÄŠœ¸¹Ì;l}r=[^õ¸|{¤ŸÌ+Hlê8Uñ÷œíWûz!™rEÈW ç;…7Úxy׺UÔÓ Öý|Ò2uüvYÂj/™Oä—Ç­§Žo ð’ûDþSÇ%sŸánúđߑE}€;âVúÄŒ,q%Š˜Üe8úÄ܇B@€‚ÓsR€?¸•>ÍÐÅ•(Á°<ç> êÓÂüQÀ¥ÀžìžÀß0¸›>¹Év—ÌÁMê,7pW`OvO@ŸèÓÒeÑö!@pV˜}r?¶‚>€8©OOŸ´¨ï<%ƒXœ Nïí³•~–;K=€>¹' O€Á#õ‰„ԤצG‹/u@Ÿ xF}rO@Ÿƒ'éSIÞŸ…gˇ^‘¡àÔïd¼¯gØ&þ¸¡'5kàÿ ’ºŸ;úÁ3è“{ú1£I¬>‘qVŸ¨t‹>1ÅÝiƉúD1P ¶ü[„ÌÑIm~ü^ŠÀ¨f‡¤ÞW§l ôò=ÛÅÖân£OÙ+¨¡'e‚5µâ›^¦zðÍ:âšÙÍ‚Á‰¿wÍUŸÂø°àЖproõò ßüS~ ,YCG£C¼­vcÁÖZ.gÄ}æ¯)C¢Sþê´ÙDßvª…ðFbN[çnÉ”+£âÎ66é6ýá&Úm™'ˆñ'%IÛ×*d ÿð- EF¡Îˆ9>ô 0¸¿>a[Œ•"‰AÐf„®ÓÙä Vx9ýqìÑ>„΋–Ÿþhh<€—™ÄÞõè¨ÆðqjòMO)BELb[м5ôaêÃÐÍÕ²¹èS™êšù»ùÿªº¨¤#¿X®ßÇSB¥L¼YXù(+Ñ›{ÃdA€àÄÀý~1)sÕ'cÁJ2ݯP;bÒkÏù’ñùF&k,[I¾ô>«ÖœQŠYÇøÅµ”áÄ]ÓLJ۪sÖÙlb/}í»Ð'ÌÖ™MxÿR§3˜†©M t±÷¤øf?Ô‰-óãÆRjœYžV?`4t^ 'ã¡eãbí‹}ÂbŸ3è`p}’RŒÔ¡9±©ãx_’¨OÔ1Sæ½êËC„7a.žÛø9q-šý±Œ‚Iü!Ë›ž›>åûPíRƒN¿úÓÃPùf}ú’ÞÐqÚ¦ÊT¿sOa˜,œæ¯O‡é}µ–v‚PÓßšÃLVuÏœU-f©t±?…ìˆAA0 ÀlÙD9k˜Îò{/L ×Ðì¶Ì'ÓU®š«´ÓURÅÚçúãúÄ"}î“`u§è¾‡LÉ·Ûd?¶™#jå•$õIoŽŽ°Íz!4iNœÓ§T/êˆø-B‚©#ªW“%§¶%fGzÌ=…a² @pb°q§ós×'%½¯ÌÎ` Á›ÉRXe‰Y‡7]L/®˜Ñ'ÌÖ™M˜ì]qK±Û2?®DV—)é* ü§ÇïƒX1Ð'Ààiú´§úþÕ—ä¿· s(}úíÏe4§ôéZ7“NêSSE‰ô;ïÄ^J/#R@³í}AÇz6!ïœæ±“ŸþîRe¬e²ÛBQdåÐǩ܋wï~;Eê—ê+A}*S“ Q½Ó^£O=ðw­¹êÓOV£452ÞèÓsÖ]1ë°;ú¤ÛJˆh(€ÙºM‡çªO[æÆSè*uBoDº>‰å‚>OÒ'zЏYŸè©ãÑ#ÙÉmÒ13 VŸf¦îE¢8zjºóBâæo™Ïêø¼ºqsöûê#äʘ3³SǧN|½ÒKî¿vY¿°> })\ͦä†Ó6u‚ò¢¢½Ì§[E·²}¸'2LN üýj®ú4šIMjò/ÒêMzm¡Ì50YcYTV@q‹Þ4‚›ûTþ9õ5‰»®2Žt¨s7Úl‚¯ÜMþA»Ëu“q¸³¾±q6?{Ü=´2A}úŽ>J‡]™}XAÙ•/蟱T\Us(vŸ—àw¢Y ¸4àõ‰‹ÙmˆáÛÙñƒ}äHî¶é`n-÷λk)[‚•î¼û+}߯_9R„lMåÝyG55¤>—³6H)Cre`ø—»ÛÝ:FŸòvGúË1ý‘Þ²õGaz~1mïúø…mŠK¿ð O¬ý¹Bþ]˜“øÁ3ôÉYwÞ¹-Òõ „%\ôÔqËTêµNoy™£O€Á3ôi®wÞ¹ºÛ èÏÎÕ§µ7ž L†¾Æ’0JŸö Œ,R ÿ.‹Ýp_AðŒ°0Ksô 0€>-]`fà€>¹' O€Á#õ響ßê:G»[Fþ÷¿ÿ5Üëènèlí19½{‹ œtÏöd÷ô 0xž> ÷ÏF¸¡C3Üò¸ÿ‰º“4(R¨º;^¹¢« ypƒÁ3 è“û±Æ·@Ó§WÝ” ÙèiMLø͉ä3.êí7À3}rOà1w4o¥oÏ·[¸¿ÛÀêÓý›Ï~;z1åû‚¤ïrŽ?›¼?ïØEÌЙûDÝõH­l„9"™2hãeýN~;ümÙDæ èà`ödb¸¶896j•—Lá´fÓžŸç³¡ý´8]21/p±ud]Ÿë¾ è`p[}bÝI¢Aµi^±úôø~ǯÉHw"ÅéÈþ¼¤ø\òß_’Ï3¹Oëz*.Ö 6b6™©†Æï*uú›ØÖ<}<±=™0©ö)B±¿?Ñš Cmuå)‘óÙÌ2îäx "–²tõ S ô 0¸­>±÷ãØÄÅxÞÐÇNWß|––Prô‡sÉßåýw–º~w ŸLaõ‰,)ØGiÞ"`ŽNjóã¿ðRFý0;$õoCvl„ ÍVùP“±=Ì[æ¶=£öÃlƒ—’¶„ûÊ¢^¿¯NÙèå{¶‹?úDFúʾ[ë/W}þdÚÜÄ»;GxUØeô XúˆíÉ}Û©ïWx£ÀcÃ Âø°àЖpòò ßüS~ÍêºìHòʨ¸³MÄkÞÀÑkÛµw‡*ŽF‡x ¬5ÌEJ:AŒ?)IÚ¾&P!Sø‡oI(j4 õMN=}÷—á ¹LòõÑ{¦9UÇ¿5‰à«€>†%¤Odl·<©Oìè“êjCVjù±‹˜¹Od$åû‚ãÓÛŸSïjºr3®nÔì'Ó â2“Ø»Õ>NM¾é)E¨ˆIl‹@á—uo'gë¶…¡ˆŠW¦>¼ºŽB[ÙƒKž½ŸdËDÞ"Ë Ý\-¨O_Þê;9õ¶ëBLbk0ZëÂ~,3 OÀÒGlOÞK5­ºb,XIfùjGLzí9_2¾"ßÈd1>àýKÎ`jL¤L¥s³ØF¸/Dz•T­³šáñaÍå|ôÉXJÙQZý€ÑÐy)œŒ‡–s‹­¾©3œbâád¼?Ÿîd’ÄêRÞšDðÒúÜVŸæzñnt˜`õ©äÔ-2Ötô`!ù/)NLhk|¢î¼õgC陂Ìþ² ÏmüÇœ¸Íþ EHÁ$®FhȺîgY>£!„V³ ê9e>Ÿ-3,¨Oo̹“ì†Èf--ŒH×'fŒ8vøÜŸ­nÿðC±=YAõŒBút˜Îª¥³BM73YÌž\gΦ³¼¸Yl#Ü— tƒ÷̵ªñšÄ·n<™™aenªî@*·˜† bâMTÜ$G$r‰Õ¥¼5‰€>€Ã¸­>ÍÌqêøPŸñY½YŸZšt¬2±áøÏ¹Ìmwäß¹»Q°ÆO&ßTl“ýØfNŒD¨•W’Ô§aëŽçúÁmås!âG¸qN³z‰úäØŒЧ¥y¶ÕªŸË~°ýHÍ®ìÆâ†Q&]L“lÒŸ—ªwTŒ1ñ¾ŠšèÒA—öV Œ>)é,ƒY$ ´Hx3YÌžl²¾àÅÛ¼TX58†×'|ºY]¤û¦à÷ŸSuü[“Æ^ƒ>wÖ§i³žˆñj*µ-û©ÙM{«o<ÎË)?‘|&駬“G ~/ºÕ¡n¸×ñ¿ÿý¯è·#ƒÁF8~¢Ù‚ö¾ c=›wNó؇ÉOw©2Ö2Ùm(âZß»©Ùºm¡(²rèãÔÇÁŠÒÂkЪŒØÅ;~OZ‚ÐgªaªÊí5õ 3cDìôas¸žëAXHÆÕ£sÚz “I?0t÷Ú#&]¢>ÄPVrmñA ´ì8¢i’“FlOÖm¥öäˆfþd5úT#ã>±%%ê3úôÀÜàÝùèS ÝTÐ+ÖªãßšDðµ@ŸƒÇèIç‹õ­çÌòö§ÃíO‡è‡;4#dx|¿ó‚êógUï?kë'S÷"Q=5Ýy!qsˆ·Ìgu|^åQÿ>üuG(ó;ÑœòA±-T)S†n˨ù Ð Åûê#äʘ3ÂSÇzò¶òçõþt BÁ6Î̳Óg¹¿À“Ÿ¬¾b²ýãr¯t3/Ÿ]iˆ=¢~-¤UD·fkŠ6?¥ælÏâ»ÓkÌwã•»©ËZ»Ëu“q¸³¾Äе”-ÁJIwÞñËX7ez~1mï†_9Rø…mŠK¿ð ßªÛ¼ÈÛé/wî·ô 0x˜>‘½æéëÏìx;6E¼ÔD§¶¥ªsºÝzôi±°LØ^»ØYd@Ÿƒ›ë“cŒ˜j[.Ÿ¿—ÿ˵œã–œ¾Q}óñÐÀØb÷ËÉ80c„¹ÁgÌ<Á£ôi)BÏ}jgæ> Ý»nžû´'YÝj°R&~ü5=ÌòkríïC1øbg²¦Õç>-0k3n<0˜ }%a”>íë\ì-2äßåDðH}Z&80c$˜Jl6ûê³}æ?wXxè;ï´G³ê¶'SwÞ•Xî¼k-oØ“ªfÇšØòü;ïv©ÌÓ„^U>pç;×ÒcVûÉõ8ËýY=n –‹ Œ>Ч¥‹#3FšÏÆE­PÈ&x¸bîHÁMô °ÁýŸ‹ˆë“sû¬{9R–ù(ëPu^šªæNÓÄÄûu\ œtÏöd÷ô 0€>Iáí›wõÕíq÷Rcª™ð¬©ÝY; œtÏöd÷ô 0€>ÙeðÕHc]÷Ñ]*ÖÈpêˆÊ)Ï8éžìÉî è`}“›~#-îV¶K¤2Üu’ ”>ÅVØúÎöd÷ô 0€>Ù%iGEÊΪYw¢Cvb•SŸpÒ<Ø“ÝÐ'Àú„'óDBîe»ÔØ;§¨®7Ì¿ñy'À3˜ëž ÷‡. 懬ãOJ’¶¯ TÈþá[ŠÖxçÞÃËO!ãÂC[ÂýÈË/|óOùuñê°„ðT}:_õ”yÆ2q¬…ééécI™gËúuƒÍO´¬>©+:t݃Âu¦~Aè ©»9"±:èàîÉ2^ƒ>9üÇÈ蓱4”,&O«0:/…“ñвq¶:‰oöCK1¬$Sü µ#&½öœ/_‘o+ KÔ'Ö6(Ú~-.ø½¯w ùIË íË«©©ãnö~úôI´VB¥óë: è°¬ÀïÉ K®ÿÙ2ú”L?P÷ªy©f9›TnuîúPü”ÃtõZsu5]ý°XaòDÂR ©OÜ•ò¸%}½ãÉY¥…庞MÓ‹–g]ª›5í/ºŽí©"µJ¼ÒtBEtŒõ2¢+= PE§?žî.;¨P¬ü:£ÙÒΤ6?þ‹/E`Ôeýæ*,‚˜2—’@ŸÏ`®úÄMá~_äÔóÂw¨Ë”!_½gbÊÌéòÓ²ÿÆ}R"dó)!¤àVç7ÈMaªÌúdqV-_žŸ9à1,C}b¼S=)!­¤ðÞîþÆGÏ;^ôÞ¾Qó\ÓúÏ?Xw"9P>ãêÓÆŠî¿ÿzÛ‚PÄÆ›º‰Éɉv2žÉè]Žj §&ßô”ZäËjôI¬@pÉ3Ð'À3˜¿>­¾©3œbâád¼?Ÿ>M'1eætùiYWGFŸRhÿ©Y‚Ü®>ýd5úT#ã>9ë½Àã‘ú4Ÿ‹wÉ éG÷ÜèyÙ÷ø¡¦£µ·òêýŽö®ÿþûÏ~Í<„,WŸ&ÌiÿrãäÏ7&¶–óËŽMäê“X=~Ñ–áÚâ䨍U>^2…wКM{~^àý pÜÿþ©ù듆 bâMTÜĬŽÍ”™Óå§e…}/$si÷»ô&£¾¯µîrN|(·:¿AnÊh¦’Lñ/ÒêMzm¡Ì5ˆ€%„GêÓŒ£SÇ$fîÔTÓw6¹¶MÛ}÷v]«¶mbâ½q'Š„N[â\}šá%r㑵òšâ–Ä]2ؤڧ ϱ¿?Ñš Cmuå)‘ ¿k.‚^2øù±ìÛPK[– Ó$~ºX ‹ÅüõÉDû?Δ™Óå§eÆ^ÏÞygz~1mï†_9Rø…mŠK¿ð [ß 7… †ogÇo ö‘#¹oئƒ¹µ6wÞ9ÿ]À‚à©ú43÷>OÊLÝu£±¦ïLRM^Jݯït´w½ÿ^Zíb„rXÇ’®O=›wNó؇ÉOw©2Ö2‰QiÞOc àõ©o;u²oøA-ñ&bä¼%åÚ õ#¾Œ1´©ÍüËý¢ŒzyÆ¥û$€g\ý0:§­¡Ç`0™ôCw¯=bÒ¥ë“X ‹Åüõ ŸÓå§eþí»ÿ¸%," O ù9 OÔ7Õôåy—Zwò€ª·§ÿÝ»wRë—!”ÅÚÓ4y´fbvõifºóBâæo™Ïêø¼ºq&m$3:D‰Ìe„ àõi/}²¼aÿ&âüç#ã#L–2sŒLoþŒjÍ÷­Oç©8J_¦W:Ü„üdõ“ퟀ{µšyùìJCìõk¡“ ` ‹ˆ«õiN—Ÿ–ø÷ú@ŸHwÒ6 ;^O†Œýª—=£úQéÕ/ trÊŸ~WƒP윺êb'­OF!}²{±Ú*+Š'ÐñŸ‡ ¢®žäNgÞeÈŽdµAèË=Ù‘ñ¬VÃ8]Œka±pµ>ÍéòÀú@ŸRcªIƒ*Jk¸úçmÍSíÄÄ„ý:" ¯ mù;\]:Œ>Ù½‰Ø:KÉd]ö¦j}þ4—N< (fÀ‚!6vd£O쟉bǦ–Öè°X€>Ð'†”Uiq·Ë þjnÔLNNº®WND줣ÛJÙND³ÀùÑîMÄ5VY‡˜,¢e=õRF_¹ÛmpÕ¾Hƒž¹ÔÎÌ\ºwÝÐ'‰è^Ž”e>Ê:T—¦ª¹Ó41ñƉ;†sO:ø9´„á0¥OŸéœµ9`}rO@Ÿè“Þ¾yW_Ýžw/5¦š ÏšÚÕ¸Ã,˜>™Fžå† „ÉÝ0ô8Ð'÷ô 0€>ÙeðÕHc]÷Ñ]*ÖÈpêˆÊ)χ…Ñ'‚ГéòÀõ‰—œµ-àú䞀>Ð'<¹é7Òân%l»D*ÓÁ]'É@éSlÕ‰}ž¦O°XÀžìž€>Ð'»$í¨HÙY5ëNtÈN¬rJãóN:€g{²{ú@ŸðdžÈ=“SȽl—{çTâÕõ†ù4+ã,àâpI8éžìÉî è`ðT}:_õ”yÆ2q¬…ééécI™gËúuƒÍO´¬>©+:t݃Âu¦~AHÒãìë“¥)Ð'ÀãÛ“gŸ¤dŠÀÏv$_ÐÎû¹®hsékÞ€Ãx¤>±îä°AÑîôkqÁï}½ÍOZ^h_^½HMp³÷Ó§O¢µ²*•Ô¾]}b›}<¼>‘Â4ÜRN9ÏÖ–ynËm.]ð+} ©OŒ5qãÜ ¥…ãÉY¥…庞MÓ‹–g]ª›5í/ºŽí©"µJ¼ÒtBE–ÌÏ[ïð™O-UÞW§l ôò=ÛÅJÑûûÙûÖûxÉý×|óKå(¿)²d_Ùwký加¯ÓŸÌnz8èàØÕ§×Ô ôwê3n ]`üIIÒö5 ™Â?|KBQ£àâŒslÓø°àЖpòò ßüS~w©å–Ëq_…ù+dÊ蔿:ñ} 犎 TÊeÞA¾M+³¬Y,š.¾i~Š4bn#|@ŸÃ2Ô'ò½àßNRBZIá½Ýýžw¼è½}£æ¹¦õŸ&°îDr¡|ë”Éw¯®!”ͼh C‘·†>L}º¹šÕ§õU¾šøwjêãëî{9ëøM‘%¿¼Õÿvrêm× „2lÞæ è°ôqXŸ|³ê,ËüKC©'l¤Õ —¨a¥Ð²ñù¶Y°’Lñ+ÔŽ˜ôÚs¾d|E¾‘É¿¸–ªwM;hn«ÎY‡ïÃD"Ë~Òo4w5ÞÌû> ŸŽÙ4¿ŸbØÅFÃl} ©Oó¹x—œ~tÏž—}j:Z{+¯Þïhïúï¿ÿì×ÌCÈòáM5ç~·n•·œ^c)˜Äϲ|ˆÃ¬>uf~¼ûpzNYÕó±i¡¦È’–ç›O²M1í/ÌŒüð>àþ¸ÿIPÂÅ»‘VæB[t 7«³c'ÓË2^5¯yÝNïÿ©óló°ÕÛjg‰íT:ëOëo¦ë(ÃYYQÛ¨íÖs«ˆ¥c6Íï§X#v}Z˜S-»/È‚}¼©O3ŽN?’˜AºSSMßÙäÚ6m÷ÝÛu­Ú¶‰‰7öÆ( :m‰ÿ€PY7ña’¬5Κ©OzsþˆŒ3£ir´íáÍÒ“ñ«6ò›â–dãLû 3côÉÝ ü}~,ûÁö#Ô‚¿Å–ÅNvÜtÂôrGj'÷ªA~I®©4-æôi»?Hk¶'Ÿ×Z_ÀâVZVµæü|P8¥MƒÙa t›ÞL–7¥·Ö'L‹÷„É̹ޟïN«ǧc6Íï§X#vÁ¸ÓkÐ'Àœducoذ$$jáÏŽmq?^OÕ§™¹÷ùxRfê®5}g’jòRê~=x§£½ëýû÷Òj#”Ã:Ö„. }˜žüçå¥ÖyÚBQdåÐÇ©VïÎÖô˜>LÎL¾ªBh=¿)A}bÚwà’•¢RÒ)^¾«¾ˆMù]‹›as.°´)i’ à"ÆÕ£sÚz “I?0t÷Ú#&]Š>‘tžQÿÌY|‡h®‹>=ìºÞJAÊžl7+…ö:{»âœÚüÉj¨Ffoô ߨk{úèîådºøțß‚Xãxð')Çô ߦÙ*ý.šÄ­Õ¹Ûr¬eW@ž^Çþï½`;ÅÆÚÓû¿ ¡ÖxWø†­Ýü ›åôw'ÁÛ’Ø™9UYøô‰!?çBá‰ú¦š¾Ü#òRëNPõöô¿{÷Njý2„²fG¨Þß8´Î_.óÜ[Ð=ë?ï«l+CbÎÌN­Ìˆô“Ë”Aëöý¦~ÏoJPŸ˜öÓ§Êø3UÚAƒi´çÁA*kg“.6}‚¿Iœd¸ˆüdõÞ`÷j5óòÙ•†Ø#ê×¼“ alÛšÒn4Ÿ—yÉê2ã"Û¯Sôi¼<’LQ¤ÝïÒ›Œú¾ÖºË9ñ¡óls4“ú­á_¤Õ›ôÚB?2˜k°lîsêëw];déPçnÄ÷!"¡¤Z£Ó‰±——é¯d>³i~?ű þá:}"ù¦s9êÓ›ÿ ±ó{]8eÑYšWFÓhßóê’„p6ËuïŽßòRѧþxAŸHwÒ6 ;^O†Œýª—=£úQûÕ,\@èäÔÜ»8¿¦˜1Â…8 O»é ´]o2ö?)ã–›>±‰®rO?ûí8ÉpôwÚ£YuÛ“©;ïJ,wÞµ–7ìIU³cMlyá“`ÿ2ýg[80è“{Âî9˜Qk±S­X›l.ñŠú™¶½ÍJŸ0#ÛänŸÍŒ l‰ÓÎÅr1w5Ú½áÑ:K‰ûø¬±¹#ŒD§7Ãm«¯”dþÁ¼ýoÅÞ³:/ö7üØÅº!üGß‘¼ÎÏUŸþã}š¡ç§ÆT»´3®À}2=<¨°Þ½™,±éy»#ýåÜ’'™€D@ŸÜVŸ0£ÖëɃ5ä9¼”›‚Ù6UEfyÅz‘ÿn¬6Íu[\0w5Ú½á±Æ*ëØ¦!O¯/^ýŸ`rs=AÜ£7,öîœÕy»Sü€ù#bv¤yŸ“>½^ŒôI"º—#e™²U祩jî4ML¼±_ÇÅÀIð `OvOX}ÂŒZóÏ2üñj.V?ÄôYrËO9&Eld› j· „Ç:‰®äÏ?ô5s“¾-.˜»íÞðè[0›¥È•úQҧצ“`;¿ïN?_ÕØùjtÜdÐ=΢ÎïkÌëùïÝYŸ§>a.O`v$}ºÂ¦óèÓ¼ ORxûæ]}u{FܽԘj&OÕ§óUO™g,“ÇZ˜žž>–”Yp¶¬_7ØüDËꓺ¢C×=(\gꄨ‡GÉ8 Õ9€ÄênuÒ‡Û“1 zºŽe¥Oøw úaÞ,è`ðH}b¬‰ç)-OÎ*-,×õ hš^´<ëRݬiÑulO©U╦s*¢c¬ÿ]騅2(:ýñtwÙ¨@…bå×Í–v&µùñ_x)£~(ë7Wa,À”¸”úxb{²Ø‚ž R±•+Ã7ïþ2zÏÄ/c³‚ªõ­Ê¢‹ŸÊ¬qâ§±àûú–¡>‘ïÿv’ÒJ ÿèíîo|ô¼ãEïí5Ï5­ÿü3u'’Óå31®>m¬èþûß©·Ý)El¼©›˜œœh'ã™LÞõè¨ÆðqjòMO©E¾¬FŸÄ —<óT}ZÒç#ÀÄödÌ‚ž¯í-b»ú¦Î8pЉ‡“ñþ|Úµ’¸eWPåî~˜ÅOÍ-pVJ]Šà ô 0x¤>Íçâ]rBúÑ=7z^ö=~¨éhí­¼z¿£½ë¿ÿþ³_3!ˇÇÕ§ sÚ¿Ü8B &¶–ó16‘«Obôöm¡ËËþaëw+ïtÉÞ®çFÍ•ìƒ[?_éí…¼~A¶Å'Ï¿YÀÃÛ“1 zr\ÄVC 1ñ&*n’#9·Œà ªÜݳø)S¬aîNt+@ŸÀaêÔ¬–´ÿÔæÀÎ ,Q¤\†¶YÐSâ"¶ø¸à ªÜb˜ÅO=c/Å¿ Ð'ÀúÄŸs¡ðD}SM_î‘y©u'¨z{úß½{'µ~BY¬=M“]&fWŸf¦;/$nñ–ù¬ŽÏ«gÒF2£Cè¥Ä HÔ'¤ï®ÝOÖª™,Ì\ŽÔ¥ Yö“~£q¸«ñfÞ÷av«à½ßѧž‡"W7è–œßg»Íž‡ØžŒYÐSâ"¶ø¸à ªÜb˜ÅO=c/Å¿Ð'ÀúÄ@º“¶aèÜñz2dìW½ììÕJ¯~¡“Sæøô»„bçÔUǰ;÷‰)â›,ƒ™Ë±ŽÒ§•µÚn=·5»Ó?Äv-f]HþJìK„¼mú,¥YÀóÛ“1 zJ\Ä·|A¬VPåÃ,~ºöRÐ'ÀúÄSMTQZÃÕ?okžj'&&ì×ymËÿÛáêÒ±;údÔ^ÝK_B«Í§Ì\ŽÁâ=a2s®÷ç»ÓªÆíVÁŸAöѹskyúäÇÄÉ“èÓrfáï!…}L ì}Ê @àÐ'†”Uiq·Ë þjnÔLNNº®WNDÚܧGAÔ°RÚ­1˜¹Ta£®í飻—“i·9À$:<ý£o;U1¬AXŸ˜Û ÆÌƒZõ OËÐ'÷FŸèIjìä˜Êüœ .íÓ‘¢O$í‘”Æ|ÕF‰ f.GDBIµF§7c//Ë8÷qcªl¢Íêž^DÆLª½ Ò‘¶•ÔuMÆ ·cétÝÄæa“±¯>Ûôi9ú䞀>ЧzÞxjLµK;ã $ê¡ûŠÒ!¿¯±s9úÔÅ©ßD­P’ª¸f[BÑSËyâUòvGúË1g"b¸¶$eWT0½h™ÏÊðuÛ¿KÉ1g5Ÿ‹Z¡Ù™»,<õ°KÐ'Àú$ÝË‘²ÌGY‡ªóÒT5wš&&Þ8±qÇ€“àÀžìž€>Ð')¼}󮾺=#î^jL5ž5µ;«q‡“àÀžìž€>Ð'» ¾i¬ë>ºKźNQ9¥ñù'À3€=Ù=}  OxrÓo¤ÅÝJØv‰T¦ƒ»N’ҧتû@ŸÀ9Àžìž€>Ð'»$í¨HÙY5ëNtÈN¬rJãóN:€g{²{ú@ŸðdžÈ=“SȽl—{çTâÕõ†ù7>Oà¤x°'»' O€ÁSõé|ÕSò»O2âX ÓÓÓÇ’2 Ζõ뛟hY}RWt躅ëLý‚õð(gy;XN:€g`wù!„dŠÀÏv$_Њ<ñU øb8w[KüB@ŸƒGêëNíN¿üÞ×;Ðü¤å…öåÕ‹ÔÔñ7{?}ú$Z+ ¡Òùuô XVHXüz¸¥œZ®mmqx+RôÉYÛZ*à?Ð'Àà‘úÄX7Î RZ8žœUZX®ëÐ4½hyÖ¥ºYÓþ¢ëØž*R«Ä+Mç TDÇXÿ!#ºÒQ ePtúãéî²Q Åʯ3š-íLjóã¿ðRFýPÖo®Â"X€)3p) ô ð ¤-?ÔA }fyi|XphK¸¿yù…oþ)¿Î`,"犎 TÊeÞA¾M+£Ÿò*³fNÛâ×Ål¤årFÜWaþ ™2$:å¯Nºüø“’¤ík2…ø–„¢F#¶·¸tñM ôS¤›w-fP O€aê³Ø¦zRBZIá½Ýýžw¼è½}£æ¹¦õŸ&°îDr¡|&ÆÕ§Ýÿ;õ¶;¡ˆ7u““íd<“)лÕ>NM¾é)µÈ—Õè“Xà’g O€gà€> V’/ý µ#&½öœ/_‘od²PË)ʲŸôÃ]7ó¾ã·6§m1Y¾ÙuÂîÖÇ/®¥êÆ]ÓLJ۪sÖQåKCÉDyZý€ÑÐy‰Ú -Ç÷V,³i~?űy×bŸ è`ðH}šÏÅ»ä„ô£{nô¼ì{üPÓÑÚ[yõ~G{×ÿýg¿fB–«Oæ´¹q„Ll-š]µ„Mäê“X½½E[èòr…ØúÝÇÊ;=Àg©œþ$\¼ie.¨E›/¨¦¿µæ%§ÕôÞ~˜ÉZG9ÃÊŠÚFm·^°5A0Ûb²8ãK˜­§ÒYZÏ›J¦¯šË·ÓåSñ½KÇlšßO±FlÞ5è8€GêÓŒ£SÇ$fîÔTÓw6¹¶MÛ}÷v]«¶mbâ½q'Š„N[â\}šá%r㑵òšâ–İÒ1ê»k¿§°²ìß³Waþ]ò`oNãÙ;ýzñÎb§?w;-Úý! £WbÜž|žÎ­¤-Â`¶mÞLÖ`ñž0ËZŠÞŸïN«ç¶&Ö̶ø1[÷¦³lþ(Jdµ¶#óSß[±țùýk„ÿ®?wÛOÀ­ðT}š™{Ÿ'e¦îºÑXÓw&©&/¥î׃w:Ú»Þ¿/­v1B9¬cI×§žMÈ;§yìÃä§¿»Tk™Ä(„4ï§1$êÓkê;L`-/Eç`pírE`øæÝ_†*ä2eÈ×Gï™,Õæ]Dà êA¹¥Œv%õ›wE•%º9Àa˜“a2½êé¿’«ÞYa{N´))=}±¸ø5—Ÿ¬aj¸ƒ0TŠQ×öôÑÝËÉtú»­ásùY˜­ Ž>¥Ð‰u";¿`oÅÒ1›| bKùLȿˈúÄŸs¡ðD}SM_î‘y©u'¨z{úß½{'µ~BY¬=M“G8&fWŸf¦;/$nñ–ù¬ŽÏ«gÒF2£C”È\F¨€D}"LúîÚýÔas­šÉÂÌÁ`j­¾©3œbâád¼?Ÿ>ê&™«‹Ì»hûŒêm¶‰>¤·®¢ª|ÖŽßà0\ù!ˆ®èd9>Ò“Ÿ_s¤fWöÓ¿z¶¤M:÷º¶`­…Ç}ÍT’YþEZ=¹+ú‘ñÀ\“‘PR­ÑéÄØËËôÞ›À¤o¢Åãž^ø=ÎIŸ0[/ÿœÚhÜuíq|¤C»‘NŒ$i÷»ô&£¾¯µîrN|(¾·bé˜Móû)Ö÷­ ¾e‰7ÚÀòô‰t'mÃйãõdÈØ¯zÙÙ3ª•^ýB'§Ìñéw5ÅΩ«Ž!å’uÌTÄ7Y~öbæ`0…5ÔÑo¢â&95”$gʈͻ ú£©x"uo ¡Êlí'ð›ÆZŸLÑÉæ—ªTõí¨ÁdyÙÜÆ–K«µð8 O1|;;~c°É}Ã6Ì­eo@ëS§~µBI_„Û–PôÔœ>·;Ò_.Öæœô ³u’–¿Ò÷m ñ•#EÈÖTów¦çÓön ýÂ6Å¥_°Ü'Ö[±țùýkD"î6J nèCjL5iPEi Wÿ¼­yª˜˜°_Gä´-ÿo‡«KÇîIÇ8¨½º—˜Ðj«#Vre™ƒÁ¼4чb~œ[?ï‚ ôßS–µk˜è £"?ŒÒe0›Flô)6YÍ+1NÅ”K«µðÀ=¤î è`}bHÙY•w»¬à¯æFÍää¤ëzåD¤Í}zDùLÚí3˜9ÜZbq̼‹ñ *kc}ËÒIó:ü”À1عOCºëy³sŸ*ª µú‘q¦$?}O²ºÕro;?wá}rO@ŸèIjìä˜Êüœ .íÓ‘xÉ£=’r˜¯Ú¨ó#f†}ÂÌ» ˆ2-Kä?ç-¾„Ùà0æ‘¢”Ú½9g8wÞz]IqÃîT5;¯É,Z¼ôÖò†=ôKÁÜEyG‚{2°¸€>ЧzÞxjLµK;ã $ê¡ûв¿¯±s0¤è~ÊG=Ý)«f7-¾9`}rO@Ÿè“Dt/GÊ2eªÎKSÕÜiš˜xãÄÆN:€g{²{ú@Ÿ¤ðöÍ»úêöŒ¸{©1ÕLxÖÔî¬ÆN:€g{²{ú@Ÿì2øj¤±®ûè.ëNd8uD唯çœtÏöd÷ô 0€>áÉM¿‘w+aÛ%R™î:IJŸb«Nì}ç{²{ú@Ÿì’´£"egÕ¬;Ñ!;±Ê)Ï8éžìÉî è`}“y"÷LN!÷²]jìS‰T׿߸<“à¸ÿžŒy&¹úuF²+þDv.š>y*øw GÀà‘úÄþž¢‘ÒÂñä¬ÒÂr]Ï€¦éE˳.ÕÍšö]ÇöT‘Z%^i:¡":ÆúÑ•ˆ P(ƒ¢ÓOw—ˆ T(V~ÑligR›ÿE€—"0ꇲ~sÁL™KI˜“,!0{rK(5ôä_   B[Øtâqþ¡èÈ@¥\æ´áÛ´2ËãXEÓ‰ñ'%IÛ×*d ÿð- EFë•vÅà–±4e|XphK¸¿yù…oþ)¿Î Ô’)WFÅm"ð[\lÞ¦  O€aêù^ðo')!­¤ðÞîþÆGÏ;^ôÞ¾Qó\ÓúÏ?Xw"9P>ãêÓÆŠî¿ÿzÛ‚PÄÆ›º‰Éɉv2žÉè]Žj §&ßô”ZäËjôI¬@pÉ3Ð'À3Û“ ¢yµb㊧ÄC:Òl•ÔKYö“~£q¸«ñfÞ÷aøtci(ù­‘§Õ —¨•CËÌk2þà›ýPg°² nO¸)Æ‚•dܯP;bÒkÏù’ñùFn1ï_êtÓPc"}Í1߱Ņ/Š\@ŸƒGêÓ|.Þ%'¤Ýs£çeß㇚ŽÖÞÊ«÷;Ú»þûï?û5ó²|x\}š0§ýË#¤`bkéy柫–D®>‰ÐÃÔqÀSÕ§zj]EB :i‚¨/‚_½ÙpÖQ6²²¢¶QÛ­çVKO¦¿GWÍ«]·ÓߦT&‹ùr5p&Váõé°ÕÂÙjgál¦X9k˜ÎòÂwlq}‡ñH}šqtêø‘Ä ÒšjúÎ&×¶i»ïÞ®kÕ¶ML¼±7îDQ€ÐiKœ«O3¼Dn<¡V^SÜ’˜ O€g ¶'ߣWQŒè m¤2BÊ{LÖ`ñž0™ù—…÷ç»ÓªÆñéJÎÏöÇ“…—%~ Ó”ÁìHº)on1!0Š%Ö±ÅãN¯AŸ‹§êÓÌÜû|<)3uׯš¾3I5y)u¿¼ÓÑÞõþý{iµ‹ÊaKº>õlBÞ9Íc&?ýÝ¥ÊXË$F!¤y?)úx‚{2AT*„œ§Ò"'„Q×öôÑÝËÉtúÙŠBé)tSuB÷îÍUŸ~²}ªá>‰µ#ÖáEãN¯AŸ èC~Î…ÂõM5}¹Gä¥Ö< êíé÷îÔúee±ö4M_™˜]}š™î¼¸9Ä[æ³:>¯nœIÉŒ¡w‹}< a}ºLûÒ:›¢[GÛÔeÊ["Jª5:½‘{y™¶‘¦ŒXúx9uŸ"í~—ÞdÔ÷µÖ]Ήe²ø ±‰¤{záËy£™J2î_¤Õ›ôÚBêòb`®A°)îK±Ž-.wz úX@ŸHwÒ6 ;^O†Œýª—=£úQéÕ/ trÊŸ~WƒP윺ê¸Û½‡ÕÅGvo PÊ”!v)©^ ›¾`®îÉ¥´Ãl˜Ýo‰Í´x”’ñ>uqê7Q+H‘Q®Ù–PôÔ\L, LÏ/¦íÝâ+G ¿°Mqé,÷¾ñõi ow¤¿œ›ÎÄðíìøÁ>r$÷ Ût0·Ö tµÎæ¥XÇÜÐ'ÀúÄSMTQZÃÕ?okžj'&&ì×ymËÿÛáêÒp;~{7uÙ#îRsߘi¬¯ùRuÑcj| ±eŒ£º' O€ô‰!egUZÜí²‚¿š5“““®ë•;éôí 'Üj8?Û5ÔÏöV?·Í“I¼ƒ·¤\dç“H{<ŽÍ3m`>€>¹' O€ô‰$5öNrLe~ΗöÇéˆtöÓW=¸7bDw¶*£@¾ùÏGÆG˜×(3ǘ,»Ç|¦ ÌÐ'÷aÑ—ïaáƒc§`ЧzÞxjLµK;ã ¶Šœth}³Ò§QÚv™—Œ©­\cžÈj÷ñ8‚Ï´€ù ¶' çX¢€>ñqnŸu/GÊ2eªÎKSÕÜiš˜xãÄÆCì¤#qôÉúÁ5J&ËîãqŸióôÉ}€¿°Ü}âãÄ>¿}󮾺=#î^jL5ž5µ;«q‡;Ðõm£h5îÓv«¹O5V®9ÄdI<èà,}è7UÀSÙ úÄÃY}|5ÒX×}t—Šu'2œ:¢rJãóAì@GoÅÈ’Çÿõ´ß`2ô?ý‹ºóÎë›Êq«#ß‚Ù×(2F™,éÇ»­ÛîK°a+½:w OÀrô‰Súœ›~#-îV¶K¤2Üu’ ”>ÅVØç¾úDB Ý+NþfÝ*?…Lá·jÝ7ÉÅ÷‡mŸh¾6§Xµ9ùÊ1çÇã€>ÎôÉ}è°Ü ÷yF~æ@Ÿì’´£"egÕ¬;Ñ!;±Ê)χtà3€[úä>ô XnÀè§ô9óDBîe»ÔØ;§¨®7Ì¿ñyúxsÕ'f^tÓðÈú´`ÀqØM ÷yÇ*zª>1Çæ°ìX ÓÓÓÇ’2 Ζõ뛟hY}RWt躅ëLý‚õð(gy;Xô ð ÄôIL“¤è(–”ÀÿˆpSˆž(úÖ„¢z„î.q7æs #Œš+Ù·~¾ÒÛ y)ü‚"6l‹OvŸîNô‰ ëNíN¿üÞ×;Ðü¤å…öåÕ‹ÔÔñ7{?}ú$Z+ ¡ÒùuÆÕúnÅ\õI¢€>9ð)áô©3’3ÙéÉúDu‰ˆ´Ä•¶tœº‰æá•Óß…ºI÷çúÄ…½ý–ÛÜ–k—ãÉY¥…庞MÓ‹–g]ª›5í/ºŽí©"µJ¼ÒtBEtŒõ2¢+= PE§?žî.;¨P¬ü:£ÙÒΤ6?þ‹/E`Ôeýæ*,‚˜2—’@ŸÏ`>£OeǾú<ÔÇ‹ZŠ7äË÷ŸU³XÌ%Ué?Ç­ö“˼”+×}•x¹TÕÌmɾ¡Û÷5Ï©ÖU5~ç1G•–PjèÉ¿@A}J¡-l:A Uñ¶zdœÝ,›Oï5vÅ(L;T®J)£Ÿâë»ê‹Ø”ßµt-~ûøMpyµÚP°ZX…[êƒMa›²¬÷:XkÑ}â‚×'ò½àßNRBZIá½Ýýžw¼è½}£æ¹¦õŸ&°îDr¡|&&ãèÓÆŠî¿ÿzÛ‚PÄÆ›º‰Éɉv2žÉè]Žj §&ßô”ZäËjôI¬@pÉ3Ð'À3˜>­G$²Ø‚šÒÊúÓ…ùßn «[ús•ôíŸù•ON[E™@R#·°Wüżʦs…{éóàOk)ö_̻ռè"4O}b?+ÑÇ¡Í+¨zÅSâ¡?i¶hÀX6eÞg5ÃãÚ3J®T`²˜¸oöCÁÜfÅ(L;$•ñgª´ƒÓhσƒÔßngwÜwÙ—ïèk”E.Pò{n·‚+d1Y° Ö¢úÄåü<.Þ%'¤Ýs£çeß㇚ŽÖÞÊ«÷;Ú»þûï?û5ó²|x\}š0§ýË#¤`bk9Oùf¹ú$V@ïOa>úLÊÏ\Îúó¾îú«”@•©Tôj?·ð sV=%—X+]µTÝinúTO= …PƒNš ê3ñ«7ËCýÝ3?†·š+-˜,&Î]³b¦«NFºÖ6î&¸0›à¢ ‹ñWKë¹Ý>®ÅdÁ2X‹<¸À†óM?’˜AºSSMßÙäÚ6m÷ÝÛu­Ú¶‰‰7öÆ( :m‰sõi†—ÈG"ÔÊkŠ[Sô ð æ£O‡·øËÌ?1¼B¶lÏn«ë%° ‘·°ÍU9‰µ]œ¢OlŠØQåž’ú":ès}5nƒ”÷˜,F6,‹@qM“ÅwÌŠQ˜vˆÆÂÃ;¿öSÈ,ÕÉÿØ—}¼u¯ð=·ÛÁ²˜,XkÑÌŸãI™©»n4ÖôIªÉK©ûõàŽö®÷ïßK«]ŒPëX2ÉúÔ³ yç4}˜üôw—*c-“…æý4¦€ ô ð æyç]Y¥:§øRʉxúÜ#V—G:.4XdS˜ûRz­¥øoAð¨B• !ñ¨¤OýÌÐг!Üåj&‹o ˜£0íÄÓYg›ú ¤ˆ:‡7Á¥o;U,¬Aª>Ùíƒà Y6í€>- Oó$?çBá‰ú¦š¾Ü#òRëNPõöô¿{÷Njý2„²X{š&¿LLÌ®>ÍLw^HÜâ-óYŸW7ΤdF‡Ð¿õÄ €>žÄ|ô)p{ú‘uQesñÅSô¹é[&=Œ>£¥VÌjOi*=ïeïùÓ7šJo¨Ë=½k³ðD)îKéµ–bà÷_XŸ.Ó¾´NǦèÖÑ6u™²‚±,j2R@q‹Þ4b;÷I<‹o ˜£0íì¦ÿÐ¥ídþ'aܬMÌ%?=!eVïפÚKú"ÚVR×9l44øžcúÀÄWÈ}r@Ÿæ éNÚ†¡sÇëɱ_õ²³gT?*½ú„NN™ãÓïjŠuI/­Ó'ækˆ¾íæ&v‹àë ¸'x}âÂ÷–üÓéÑVSwÞyù¯\»'®ØìKù?mYácU«LÕ”yôà+2$÷ Ûôãú6=¼>I¯åAð¨RJëÁæÎ*ä›iY-}Mßw-eK°RøÎ;±,þá³b¦ÓÃÓqQ6ƒcLÖ@ÞîH¹uD7a1\[’²+*ØGŽä Ÿ•áë¶—’#ÖsL¸)6+d>¹  Oó$5¦š4¨¢´†«ÞÖ<ÕNLLد#ò Ú–ÿ·û&†}BWfoû½â@Ÿ7mqŸ0Ï1mË|ìµsÊrÖ&Ü8êº? Oó$egUZÜí²‚¿š5“““‹ÝIàõéB(®—Ié#_²þ&úü™5¯í<×EÒsTè“ûÇôimÆg“¡¯±„ºt…öuJÉrÖ&ÜÐ'÷ôi>¤ÆÞIŽ©ÌϹ°Ø™x}"®û#x ¹ˆPÀu‚ûEÆ<ÿ„)Æ}ª æ¡+Ÿ£@ŸÜ'8¦O/¯¥Ç¬ö“#E`øæýYÜ%]0YÎÚ„;úäþ€>ÍRœRcª»sÆŽ>];Bûuºýä1]„•>ažÂãÞ´‹yèŠÄç¨Ð'÷ pC °Ü}Z†àõ‰ŒŒ) DHQ<þÚúwæù'üŸK˜‡®H|Ž `pøð8Ð'`¹á†ú”u¼ë0ÀbWŸBE=“9JÃYŠ)ƒyþ _Ÿ0]‘øÀ§l÷þÀrÃÝô‰´#ƒÁˆ`PóÄ®>aÒ1Ï?áWÇG¤@îÕD…‚º ¼S`‡´Ù9Åvõˆ„’jNo$Æ^^–qVÃØþxùçTɸëÚ!ãøH‡:w#™8šIýXð/š}æa`®ÁnOôé ›Zl–XÇúvR_.ÅMûëwØ¢eœ‡ñºô¨žŠ»é‰ )¶†Id €>͇E9Ð-­‡®KJŸˆ'k¨‹ÎÁ•¼‹Îõ©O]œúMÔ Ò}k¶%=e€†³ý–¿Ò÷m¤³B¶¦þÕI—¾¿‘~v¢oئƒ¹µ Ï<$ˆþËÉ_¯ú¹!Ø1‚¨\E½ßÏ%,Æ¢eÖ,é£ ,"n¨OÝ—/_‰‚L'sg\¦ONÿE¶ˆ[Á°º%úÐ`ÉAîÕä¿úz*¦a±»³4ÄÐCO§ôR ‹¢—âQÜ—ês7ëVúæb)m²ú„3"ú”ÐKü(:lYI®¡“ß_lØßhHáñõOùO>IljN[Y`ò@·Dº,9}ÄXD}"ˆž(úV„¢–Ä3ˆ'¥"ýNå ÿ°õ»•w.Üûu¸Û€c¸NŸXw’nPìÅ;ÇôéÃWHÑÍD©G ýÎD}Цß” >1‘éÉw†çŠ–ØÔœ¶²ÀÀïDÀó}ÂC¢™]púÔÉzEäê„ÃÌSŸÈaÔw×~Oy”,ÛÙ½³¿u`a ÷yǾ,võ‰½Ã&Ž}š¡§?1²dsýwñî•/úâ-òC›¬‘ŠNnC¾¯èÜ5ÛüeÞaÛ3j->Eîl—’¶„ûÊšaÅf²=ÝŠãuïf¸ªCêSÛ9$ûÍòR›ÿE€—"0ꇲþÙÖúʾ[ë/W}þÄ2úõoCvl„ ±M [@@ŸÏôÉ.‹uTi ¥Ž~þôuÕÐ6»¨“h–Íܭר 0íP¹*%=Räå»ê‹Ø”ßµœ)s¼þHZdʺÊ0Ýx Ý¸›CÞÁ[R® Îößø°àЖpòò ßüS~Ad‘,Án.Åu£O|}ªz>blªÌsôif¦¡#äÿnA?OFCd¼!æ±àma(¢âÕ‡©¯®‡£ÐV¦¹›—<{?ɾœù·ñ—Ï϶̦ÌîØhõocæ-õ®GG5†S“ozÈ-±…¿¼Õÿvrêm× „2˜Ä¶~Y÷–³ž`±…ô ð<@Ÿ±£ A4¯ æ·¯xJ<ô§#Í„ýE0YLœ»8f(L;$•ñgª´ƒÓhσƒÔ~gwÜw!q‘©Y£3é»k÷Sm®UÛmÁüŽòŸŒhÏù’qe昹VÁJò¥_¡vĤg²VäÅ>§ÆácŽë.Þ9>ú43s¡Ê™™´ãÃ̇hÃÛ™N9:Ád}†E׆HbbäΦçT'_æø¡ÍíV)æØäÛ¡º8´¢†yµ–óÐl„lá7–Òlâj„†¬;)Xl!}<ЧÅETŸê©'0 jÐID6ýêͧ{Ì¢N˜,&Î] ³¦«NFºÖ6î&¸$.2e3„ñM–~Ú]îJmÎRË8¦8LתµÊ:,ö9€>-0®Ó§G§ŽUÿ?ŽŽ>ͼ_¼Ðj˜úu$:ônÚðžÉ"õÉbJ¤>™€ ³ž†D¾œÔþºÒûç:ÎÕ=Nþ„˜X$B­¼­s ³qRŸ†%[H@ŸÏôiq;ªÜ£ŸÃÑA @5ê‚”÷˜,Ì¢N˜,¾$`V€Â´C4ÞùE°ŸBf©NþïÀ&¸°ƒÚ«{©*¡Õ„ݘ—–Nè,%·–u–·X'AŸ—êÓŒäYO ìèiPŽ>Íôy£õ+èxZ‹¼ûÌ9m¡(²rèãÔÇÁŠò§“È×'òßÿùù$?ü`]`ò¾!ÉÌÛíÙ„¼sšÇ>L~ú»K•±–ßo‹@×úÞMÙnE° èày€>-.‚G‚¨TiÃÿÏÞ»Eq%zßóg<¿>ïð®Zݬj–À±e!ð‚<*ÆDXñ6ƒ‰`$¨3à8‘£BTÀdL2¨1Fe " ;‚i@Ć®®âÌ™“s2ç™L\oծn]Õ\º¾ŸÕ‰»k_«hvصkoqa.Mt¢”’ ³”N9Å$êtïˆå8ÎuRÂôŒ»—&ܬ¬œ"¹"nwu'ÐÈ;ä£Þ }£)ëÒ:æ•E¨O/¢ŸûÄsƒ¢ìÁ¡®vr//ÀÏmÇ·d:lŽÌ-Çï¨.ͼý¹£Ì‘Tqï’… ’Vm~¯)tî×ÁOÊ 2mË^*>ÛáW–6þŸÎ?þ6Sü#B/Ù²Ôõin{ ô9ñô)¶¨ëSé<×yBG<ëˆM5 > ³©“N”òVgMxr IŸÜð˜Ï3ÚS—%Êoùy9#UH‘µíqŽPΆN¿1WRÝÌjóôñI1ÊøòõªÍóÊ"Ô§ÙÌ}FМ¥À´Ÿ*y-CX)™Nrf­)Ø1»Wd¢«q6³²-¹Un⃥¥Oó·€@¬^ª½JùE(›ù-àÆ È¯FÃt„M4£”¿°:kÂë”Ãvž*ÊsÊÇĨ±³…9)öðöÚdJÖ6γA8Ùä¯ôK6€¢W”_›yòÎèòõªÍóÊü-\ú¦6«O³™ûŒ ¥OÙBOr²ÿ)ÃNŽÍ9Kn•›ø`ÉéS¬»9f–cÚ:›:ÍÕ~O‹vß(Ïe¾7m1ÅÌ}ÐêèÒÄ»ó¬ú7¾rŽëI¶] $àÜ©äÁän!ÊÐ2):5F\&%b2žïšŽmÈJ¡mŽŒM´…£Vš¡UV(›#5¯èt¯ú…Ò\åæ~íÁM9N‡Ý–˜¶~We#¶HžS O±%:}ÒÙÔi®ö{ZüûFAŸ–(‹JŸšš.ñ"> ŸröÕY­Ž®D¼å”R°ïhMýåÛ}#az ºFÊÀËB–jâ?Ü£•Âñ—O^&E§ÆˆË¤DLæÿlPxÑU÷8ãŸh©Y7éæ]ÄUVOtx|ì3W1É*åé¬r³Oxk«îe˜‰!×õ³û³t~1Y O±%:}ÒÙÔi®ö{ZüûFAŸ–(‹JŸ^ Jÿwš%Z¿µr³Sºž•sO“O™LºF 7ºI— É2„¼›G…ÞÉà2):5F\&%b²#$êóðÞR_Ÿ"®²Òˆ×NP¹8ګܬô)õZ»Ë=lhW` èSlYê¤`–ŦOR”Ë’ƒ9Awsωû-—ëßk•8ùyWà¸Æ)çÝ/XÁ›Ü`–xk’†ÁeRtjŒ¸LJÄd‰$ÊkFŸ"®²ÂjÏÛÑYåfüÂÎ,[ µ‰« +›U†ã@Ô@Ÿb ô XøÓ§ÿøÛOžÁÉáïžÿæ7¿éný~x`lðÑÈÔsvΛ·t1ÒÑq\+‘‡tñ­Î)þãBÔ«ÝDþPƒË¤èÔq™”ˆÉ¢}2¾ÊŠª>é¯r#$`<îÝn*'Ç÷º.ÀЧØ}V#Îôib„üö¹ôõ}ÿÄw÷G{Úyƒâ…jøû§sÞÎ%‡VG—^Xu±Ù5øtÒÏú<÷O _ñ¹÷Ä(5R8®ÑxNßv1è —IÑ©1â2)“ù/­ ,úÒýŒñ?ÿ¾íÌ«ÓjK£HK3¾ÊŠº>é®r³ª´¾¥ßãe¸©šl’}ôKÖæ2øOõºP¡3¤Ù±ìæè°ñ¤OO‡A’éoMâë7„ß—4çí\rhutå%Û7ä¦; 6Êž˜¶fÛ»ºýÍÐY#…§™Ü±¢Í¡#—IÑ©1â2)F*úîÏU{^%Q›üYxâF¹4JxiFWYQµýUnFÚ.Ù‘·‚4Ú™»¥ôüC%CŸ ²¤GŸ O,9âFŸF‡}!erÝjªoûàØgþîóßHàÝ £O/ÐÑxDªO ½Tuí‹èåP®ô €¥NÜèÓ·÷<wjÿáü_U•5¼WR[¾÷ì{%gOýþϼ8ñ¯Ç&Ú¾~è}æŸó¦.-ÐÑøCªO HªîôøΣµöE‹r( ×ú´ð,ÑÜ%Úl+°hõébóqÅr>1ñè°/¤Oß\ÿöƒ£ŸUì¯;¼÷̻ŧËKÎ{û¼8ôÄÇö´ Ýks«bSÛÿÎf˜Pbʾ,#¿ìÒ¸zú æŒé¶³ïl|i¹ÃF¯È+¬ú¬wZ¹ø;:Ì"ûqŠnÉZk_D±(‡²p-,¥O1ÙÆHisë!¡žŸ¢ìtJÖ+…Ç.ÍÏÒfC¥‹SŸBîdРúŸ†ôéþ7ßÿ±üÞxqz¯äìáâ3üÿO”_ct<¹öY»j!ªú¤õV/Í¿~žìÚCQŸj¦×N0WÔ&PE·}?ýòë?ÿkr°­áà*i,ô ÄÒѧˆ PH3j­}Å¢ƿݬ¥O±ØÆh¾M#T>Çx‡Û÷ [õ¼V4 }Zd,N}’î”gd×¼‡Ý#¡Iãm׿­,­?úÖÇå{Ͼ[tZ¸·¯–?Ò'>¥j!s¦O§(§nú™üÁ±/oÌN²S”ðþç;Ç·f%Ú³¶oÿY8ðãû΃ÝÿWLüÏî²åÇJ(û¹ÿ™)õ?RI× «h-E=øEí$qׯ…>øCªOÆ ˜Ö]ûÂì¢Ð'Õ“5»‘æqóÎd(:³ßž)¼4q]gÄvjšì“£ÚlÕ“ÂVP1d©èSóÃç²—4=¯O¡Ñ§[WºO¹tìíóâÜ'>P±¿îíâªÇ&„›ww†ÎW_´\ùK'‹UÍ¢òö×LÝÛCQ5Ó‡'à¦×;õßÝÈ¢V]{úó¿~~úe6•ùˆûé« i¿x1z6}ýµŸ^¼èΤòŸ ýë*ê ù$±o|s¹ã•]‡ª>8ûéÍÞ[ýø u´ß}ñ‡TŸŒ/@1­»ö…ÙE9 OÊ3b#­ã¦f)Ò#³ßž)TÇz‡ÛK„dkÚ"¶SëÔH-vÕ¦j…õ  ÀâÔ'³7ï&'¸>Õø5ÿâ­éèsüÿyq_}ã=mƒ_ÞÝðÑWª…èû’A}"°$®|íà'cêU(ðG¼’4/STP†žQÔKÁÇ© ›©ÃnÑ„þ~”Jhü§ú¥ÑN_RhúûØ£ûwš›êŽPi'¦ÄckÈwôÚâ…WܼBÝšñ(¦#­}ajQŽ(ôIçO¶¥Åf-}2¿‘ÖqS³ÎôõiöÛ3É~p]ܬ]§Z§f“Ü_ž6£OØ *†l^”úôÂäÔñg#Ì·]}ú®×R¦Ðëwïž»ûSí_¾¹éR-dNôI¿F áõ)hS¼>ç,ýôçUT~µñvð¦]wµiôÅ f'UàѯôÅ E­C9õ(ØÑOl^Êë>ÅZúÅ6FZÇMÍ:Ó?2ûí™BÇ™q÷•ÝBi™-\ÄvjI“,†y?7®OØ *†,Z}zalÖ“çÿ;7ÜßÝf7uþØòÕý³5—~_þÑáwNþáhݧç¿þ¾¢»õûßüæ7ç?øêù¸OµE¢O™TÎgÿø×?Ư­âÿd#ǦΤ¤üñ‡¿¸Ñ‡èþ~Œ¢/ÝKµÕþ¢Ä/V•5Þœüéÿ¾øåçé¿)¡¨jñø“|*±¦O«£`é}Š-ª½JÔÛ©75ëLÿÈ,·g’ç¸{iÂ(På)PË*ÕS³ ÙíSöt×'­ÁúÄ3ø×±¶¯ŠÈ?˜xüàùÿÄ÷ýÏù×ýoÿT×rñô­Îo¾Õ*a‘èÓ‹ŸÛŽoÉtØ™[Žß!SǨ°ÿ¶ù¿ÄÈ¿}ù:ýûa1|ßIQkT+šîý¼jgÞ š²'e¬ß}üÚD0â×ÁOÊ  O þ€>Åu}Šj#­ã¦fÍëöLÊãs„ê6 púíÔ:µ*ÒÚ²¾ –éª^¦¥LÊ“Ò*,q£O<÷ÚÜM wzïß?A^=ïÚoº?9Ó\ÿá×wš{缑±ã¿~,Îüâ¿£É }ñô)¶¨ö*Ñmc¤uÜÔ¬³yÝžIyœólÎ+ù+ývjžZßé"þï][ØH²"åIi€xÒ'žo]CŸŸk½ýåƒ;d$ª£ù¯Ÿ}|ûÃßQ÷þ—Z«e.EHÿ“üV›Ú};@Ÿ@ü±äôIüܼЫ«Áæ£ûeY}ŠŽ©çlwûwM[kO\­ùÝçõ§¾j¹~ÿÙØT¬Ûµˆ@G⥥O<±îæô*Àj,æÑ'0OÄ_G§5À¬Ã’Ó§8#þzô‰ºÏ>-]4WhaÚO•¼–!L “œYk vÌîÃQ{¨äÏ">&l¤³¹f³—„mi ÉÒjmü}V#^õI¶,9¢ÕÑud .q²ÿ)ÃNŽ–õŽ=»}õžxܸ>ùÿÒ±éÌ k„aøFÇ[‚%, O±ú¬ôÉ‚hut%⬔‚}Gkê/ßî û¦¾QüQ³{ÜÇN>¹{@H¶mˆ?8𲥚÷h¥püåÇÓº»>IU{²—ÿÿöïåú¤³/Õä :å.FÍä2Vu[q)[. ¿tÝÃŒ}(†³ùðh-‘¥ÃúgªZЪÄÓýþ‰þQœ‹AjËÛ.+ÜX¶é ÿÿo/w¿ñ^Û´Zçpº¼íËYøÛ¼}Š-Ð'`5 O<Þüƒ©×ü5{aÐêèü­•›3c åÜÓäS&ã8†Än£›„p™l ƒl¨7*|½êìú$%¤ _¯¤¨ÄOü'•}©ÞQD…r¬:Š­¸T[ ÷ cnÏÄp¯fÅ•„õ/ O©¸^ Á-Qœ‹A~[ÞæS“i'À‡O>òùI2eçÀ—0Œ’m3sUc,ô X èÏ‘í-Æ_q¬OÓd5¹û-—ëßk•8§zWà¸ëÜ¡mkÓ“i[p þ_’Þ»_„7'¸Á,!ð–øõª³ë“”*pO…¶„é“ξT´"J–+bÕQlÅ¥ÚòPXzóQåF¤ÆTœËTçbÕѧi…>…î†Æ£B¦ôayÛ×[TƲ¨cA OÀj@Ÿ^}ò ?ÿþúkèø?~þù?þ}Z–2¾õ)ǵ’/ëtñm1ù?Ý;âãÍ€óH¿âýÇ…¨W»‰ü!`ú»>…–s7—¢ Ò#:ûR½­ˆ å2RuÔ[q©¶ÜHX犣OwçrÛ칇Ì}z,Î}š{Öúe`æÒÎò¶G¾0eR†E|7ïnúø‡þ12÷iìÙ¢2–EÕ ²xôIúÀü}zÔ'^œþö÷ó¼Œ!OÞ¹žìØZ.=gžïì)ÚÞWøŸõÿ'ìµ¥`¢¤dša^hŒ>ýô.µ¬Mòþ›eTÙOsp„€ƒýë>×~Šj˜“2µ:ºò’írÓŽeOL[³íÝ Ýþ@GÇvž*ÊsÊFlB›É0ÊÑ:¢³ë“Y9}ÂôIg_*Žm*}¥CõiµÈUG·—VË„u. Ç=»Z±1=Ús"Чآ¯OÓdÊßhÇ>á·ŒþTŒÒY)e¾úfôéEPŸÞùkiñ÷%ÿëÿý_ûoîöþiýßëW î´mÃ𯿿þú Í›w×hªæŸð?k(ú*¹h >ýâ®-^»i ¨óäØ3õª`\*‰rtð¡)šÊÿEQr _ÿásí£è&í_¼BQ7žþýþõ¯L·Ö¬“µáôi³æøWߎùX߈«^¸¯GíŒu‹–ЧØbdôiìÞ[ÂÇ;íª¥³RÊ\é“Ö"$ʼ:‹„ˆ‰Otx|ì3W1À*ƒ¹’ª;=¾¹™»ñªO¦Nçá8.;;{llL:<”R}êøOeT–0†4Iü{àXHWÖHnÙP-üœ¢¾xñ¢ÉFýÏ#”÷¢*ŠúNYðLÆì3®ÿx¡SààûÒ UÕ46?œúU’ý…" }ZlüpµjûKÉvJXs³ää5³;È€ièS¬‰8÷)Ø_¥žÎ}ÒY)Ŧ@«dýãZ‹(óê,"&îD‰h suãw9~>½PèÏ?þ˜žžþoÿöo?ÿü³,¥Æ“w¿^¥¾üõjBÂJuÉ¡¨GŠ ¿l¡’¦>¤¨O}ñë'ujÌNU¨”+òËOc×¶ØÞx¡S lr ózÊW.?à$PTpDëïÐ'Ç@Ÿb‹Ñ§àÐͲ¦P¬ÖJ)s5ú¤µ‰2¯Î"!â[Õ}9#æÒ?°¤>½ÐЧìììüü|¿ß/K©¹pÁ/Së¨Ug„tåI>•XÓ7õó/ÿüÛЭãkÑ#4外upÇ2>œì¡Ä63|Ô¿‘ÚýWí_9}ç ûó/¼j=k¦¨WăÇ)êwÃ?ý‹×¯[ O Ž>ÅcsŸžÁHV&“­”2Wú4­±‰2¯Î"!²ÄÒ·ÆsøúôBMŸx&&&X–U¦Ô^÷é?˨ý“¼Ÿ1Ÿ_?)+ÈH´-{©ølGH’)*{8Φ¨ÏÕ •èÓ‹µæPEZNÞ8þFN²ÝæH[·çƒ¶ÿdéþýë© ö”5%£Ð'Ç@Ÿb‹±Ñ§RÁalgÄ(•RæJŸ´!É—ú÷ÎhÎ"!:úd<ˆ? O/‚údäee3XZ@Ÿb‹¡¹OÂJ ï~2•RŒë“e^­EHÆÎæ¤ØÃGÆ4 ÑÑ'ã¹@ü}zM[Xú@Ÿb z`5 Oˆ? O±½ °Ð' ‚ŽÄЧ؂^X è“Ñêèt¶ š'¾F³pÜ“¼ÀŽ~yf—cZê“¢è”YBGžßì)|¯mþ$ú[ OÀj@Ÿ,ˆVG§³Õ<±ð5š…Ì MLÍ\ÚúD¶ ~x¬úîÖ÷„-ƒ/· ÖêdÇeoY÷À?ìØ^qçÍú> î¬ÓŸT–·u“í9´ÒðÍëkùö½? Í+¬ék 6Ï Ð§Ø}VúdA´::-¨x¸[2“´rퟺ9žî–— 8wª°ÆïŠn!Js+(ã5~×t¼hCV msdlªø³°‰òAŠ¢ÛÄJÞ†L¡…)u´2ó»™«¡¶—– åÓ@"vaqñÂײ´?µ×¶²:9x.Ϯݔ‘¨º­°¡KÍãoëÜT3ÐýÄçcYïØ³ÛW‰G§OGÊÛλ½^–¿ÙÔ¥_”UÞ&.<¨•Æÿ—ŽMg]# Ã7ot¼%Ø<ƒ@Ÿb ô X è“Ñêèt¶ â¹QüQ³{ÜÇN>¹{@H¶mˆ?8𲥚ø÷h¥püåÇÓº[A¬ÑÿÙ!ªèª{œñO ´Ô¬›VÛFJ§¢è6±’Âq}+ˆ>à:SH /h&Z{iIQêÓK×=ÌØ‡b8›Ö’ªë_dž©jA«O÷Oø'ú?rHK6x©yjËÛ.+L•ÿ0„^âÛo/w¿ñ^Ût$}úø½¶óž¾Á‰Q†“¦ùþ/}ûwgkewÍ=6”KZ‹´:)§ËÛ¾œÅЧØ}VúdA´::-¨¤pCb·áÑMB¸LH6!äÝL6´ÒÙ Ê`GH Ÿ‡ŸŠÉ¤ÛHéTÝ&VagÚ•,DeƒNýiBiÉ]ªµöÒR¶VîÆåž‰á^!ÌÚ…rìú™§T\å/ÐàiÉ/5ÏoËÛ|j~"íøðÉG>¿d˜HË|¸gž«Wû«êºw¾×ùA7Ê~¢O’ò>ØTÞ+-\P6o2X¯ª_é}Š-Ð'`5 OD§£ÓÚ‚Šs;´mmz2m îñÄÿKÒ{÷ ðæ7˜%Þ¿u¶‚2Xc")Á«¦OÒ#:E·‰•”V‡Pª ;”£UŒÒÚKK«µÒ•aý‹ÌC“#¾€#MIs¿Ôª£OÓ } ÝûÓ} ÁyŸl*w…ÒøÃ³ëë“Ô”>,oûš ÈR­N èSl>«}² F::ÙTÅä;útïˆÿÖç<Ò¯oÿq!êÕnbX„ÎVPkÔ}’Ñ©(ºM¬$í¹A«™ÉÐ|$µ½´´j1Ö¹ÈâèÓÝ€>Ý–F¿ÔdîÓcqîÓ䨳Ö/“‹v–·=ò©(“¾>íoþvÌϲþÑ¿>ÚT~_+»Òš¤ÕIñݼ»éãúÇÈܧ±gЧ¥Å"×'­?‘Œç2[Bt5‚%ôÉ‚hut:[P’ïè†Ç^–í©Ë 3ámGûmƒ_â:[A¬Ñiµð¶èK÷3Æÿüû¶3¯N«õH:E·‰U®‰øÒ:Oèˆg±©&áµöÒ’bVŸt.òÔIa¾Óò ßyÙç²¹O/õtàÉ;÷Ñ“[Ë…'ïꃶ=ºÔ½óH›Ìv¦#éÓˆkàøw·¼wgç®ó.V™FKŸ¤ÕÉš×}³¿ìøÍïµï¬yp1ø4ŸA O±%â¦-ew8Wåï=qm4únúè,„2údö¸Ù4`Ñ}² ZÎTlç©¢<§l4&”±™Üä¢Í¡#:[A¬‘ç»?Wíy•”±ùˆäÉ;i :E·‰Uˆr²c3íáÆ È·@ôö^ZRÌê“ÎEæ¸gW+6¦;T£ ]ê¸ú[ôõišLçíØ'üÑŸÎStBYx}2[>Xr@Ÿ,È"fú燯‰uCü§úO vDÔ§é™Ç4R‚oõÖÜÐZÄCú„lÕ…PtrE\áDÖ:AÍW[çÄŽÁÆDw ²ZÀœuŸ}Zº@Ÿ–"kŽõí˜õ¸ê…ûzÔžÁX·hq!~ªA¬02ú4vï-ᣛvUŒÒ_sCk±@ÕUGtBÑÉq…eXõuŽk­s¢ÌÝr+sI{sEÔ}ôié}ZŠüpµjûKÉvJXs³ää5³;ÈÄ=¸y["Î} ›P©'‚sŸ ®¹![ÄC,GuÕ…PtrE\áDVž þq­uN”y£[n%b®ntónÞYèˆ? O±ÅÀèSpÌdY“¥³æ†Î"â[­UG´BÑÉq…ÕŠ”'¨s\keÞè–[1x `n>Yèˆ? O±ÅØÜ§çä›=Y|«³æ†Î"2ÐÒÙB(:¹ ®p2}šÖXçD™7ºåVŒçsôÉ‚@Ÿ@ü}Š-ÆFŸJy°£tÖÜÐYÄCÇ"tBÑÉep…“Ùè“Ö:'ùân^ÉfUQ-·b<˜C ODu¼ðZ꯹í)6™û$¬òñî'ƒ¡çÅ4×ÜÐYÄCÇ"tBÑÉep…}MÒo§Ö:'cg sRìQ4&ºSsKÔ}ôié²Ï(¸ú[´ô €xúdAÐÑøú[Ы«}² èè@ü}Š-èU€Õ€>Ytt þ€>Åô*Àj@Ÿ,::@Ÿb z`5 Oˆ? O±½ °Ð' ²0ÝY‚Ù(¢ú[ OÀj@Ÿ,ˆVGwVÁl>ZÐ'°@Ÿb ô X è“Ñ×§Ù}  •}sô)¶@Ÿ€Õ€>Y³ú$:s¶öüŸ®u<™Ùe€û®V8~¦¶î§—ÿâ î»–«¶þ‹¿ôO†G²sìpwsÓÅóµgk?nøâF÷0‹ÍÁy O±eéê“ÕÖå^°ó¿ŠŒ¬¿@Ÿ,HtúTÛ6øÜÏN=¹Id©5ë¾ÖñhdÒÏ2ƒ_ QMϤ¹êº<>Ö7r¯Ž”À(+b»„7·‡¼¬ÿiŸn¸ÏF÷™Vú[tô‰›h¿PþFÞÊe 6:1-7ç» Ü6}ìû—ãžä‘mh(*ïÉBý‘¨<»9<ßr:c’¿¦Ç È 6ÌmE2 O V˜û$†Éï;ÇM‰cMÊìÇ’¨?Ks=äzL¢nH£Äpó™3|¸?lŒ$k‰î3 ¬ ô)¶hõ*{kMQÔŸöx&Yß³ŽK9 ß¼Å7˜Ú/g0fú4‡pÂÈ6*ïÇБóÈ6…Mó{v‹dÀúdA¢}bUo½ ß»Õôiýǵg‰ù “.À‹üRé’–PÌ8s§OÍÍÐú[´z•‘­Â÷i¶Kåû”ã˜Îºƒ³Sh*!9»àڶïˆvf¾–í¤í6GÆëG[Ye*1}cÅÕqÉwËA†A’V®}£âS·ZÉâWpØÞ»÷knÊq:ì¶Ä´õ»*ƒïl*es¤æîU—‡ï2…K‘RG )3¿›iªV¥šñ÷ÔÞšë¤mtJöÆÒó.Fãì”'+?ßÙÇ}-¨1•üãz0GxKMÞ¹°2’½Õÿ!j…•§lüŠ©þà´€>YèôIõí5"?O¼~Þ®¸çÊ1«ˆ£O!% b¾˜Чآիì&÷wºÕ~Á™ºT>*ùœû9ëuœÄ‡WÔîï‹ße/]÷0cŠál>|î.fw¼?*üFñGÍîq;ùäî!×¶¡°\ÕŸÊwñ>áÛßVÝ3Ê0C®ëg÷gljâ‰}æ*#-¬Rž,Çõ­ _ñ€ëL!¾à5ѪT³1 ™|-öÊ®1Æ7øE6Îlô9;å‘ÙŸW«Cøùf="ýü#¡a”£Õø…%ÅÚUÛñ‡¨u‚Âyµ½·\¨1š+fè“™C}ºBä§{ÌDzÞᮥ>Õu¹O sŸ¾Q›ûäj¢n<ãËðyGûï^kˆî3 ¬ ô)¶hõ*4Ñ'FMŸ‘¨öÀ_Xmä›ô%~©õó“qÏÄp¯fíÂw¢]š¦-,{©²ŽcHÔi.©ÎI¿× å§^kw¹‡½¦šÚˆš Q *ÍèJ¢2„A§þ4¡´ä.N¿R­ãå¤1W‚™’9;å‘9;¯Ô~>ü`EØy¹°¤ØDÖjQû!jea:Ž9…êœÇ:Ù(®˜q O$º¹O²db˜ì¸ö§s²pÊÒÎÔ^ø¼¹ß«ñä§÷ö——êëøT7|~­µg0ì÷ #@ŸbK£Oå |©ù¤ß¤â—+¹Ä*î‰áðì1Šs;´mmz2m#U(Ío[é‘ñ ;³l,‰« +›ý¦šªZ¾ˆ8J³ê{R€0¥ÑªT¿1R(Š6rvÊ#³?/Žë%®’ÒÍu“Q5g¯Z­s!5&‹b¥Y þe óß«Jš‘x°Å:hêŠúdA–î#Æh}Š-Z½Šg3ц>}z'lèãŽM1ôa$|',ûA1ª˜”|ºwÄ'L*ðè|Û*pŒgàÁ½ÛMå¤À}¦šªZ>ÉrƒVû¿4 ÕJµŽW¢:ԌԬ>Íò¼DÜB!‰g…ìn­,ªç"'NÐ%Íbð‡( ³÷Od &ì¾6!m¡©+fè“>øú[4Ÿ¼óß(¾# /¹<>ay“®K¹bÔäûÂÄà”ón/ëuŸî9ÏF ŒëSRÝLvúø¤UH¾.{Yf´§.˸>­*­oé÷xnê‡&›än Á¦ª–?zBm'tijnæ 5­JµŽû/ OðÑ•ß ñççyÔÑTSœ©U{>¹­^õÛy³<¯ÀÙ ¾d òÒ zEZçREšWÖ7Á2#]ÕˤY þ¥ál’eó¥Y M]1ã@Ÿ,ô ÄЧآ·îÓ³¶o_“æ°Qv‡3ûµÂÀøÇMܬ.~5}™²'eå8ÓîS»ï£¡è•å—Ç‚ÙÙÎSEyNÙ€²å‘‘¶ Gvä­à‚væn)=ÿ 8:d¬©ªåOGZI«RíÆ°?«Ü½>#ÉNÑÉYùEUŸh<ÈÆ3v¶0'Å®ufy^ÁBÔ׳2taûNå­ m*?)ƒ?D­Døiš¸bÆ>Yèˆ? O±eá{•Ù|ñ0{ OúâèSl>«}² Ð'@Ÿb ô X è“>øú[Ы«}² èè@ü}Š-èU€Õ€>Ytt þ€>Åô*Àj@Ÿ,HtÝ,gèdÇ0{ O±ú¬ôÉ‚hut¢ÆP¶:9uÕ+Ûß©nzÀèíd è˜W O±ú¬ôÉ‚èëð{=ý7ª×RµüêB÷Q}ó ô)¶@Ÿ€Õ€>Yˆú$ÂÞ^) FíSÆr÷knÊq:ì¶Ä´õ»*ïÎ,’ÏÝråg’V®}£âSwø¶®ÄôWÇÕ–·å8Oýá­¹NÚF§do,=ïRÝ«ЧØ“)ªåÌG™KãmžüˆºâíÝsR`ת{»°œ8}zÒT®EôÉ‚Ô'Žë "T¬ŒÝ'lËh«îe˜‰!×õ³û³B¹nÔì÷±“Oî²o’fOª}øÜÿÜýqv¼?¥,™iÈäÃöÊ®1Æ7ø…°/yf£?º(°ЧØ2Ș‰N{”¹æ\Ÿ8¦ÿrõÍ«S(þr¤­Z¿¥¸|ËŸ6ÜfŽë_#ôáé7#ýq:úÄq7W mXÓ¿dÿ@†>YÃúÄ}r(c× ûÔkí.÷°Wë̾Eš½-°³v›M²k¤´är²ÃÑ•@²Ç$Ù‘è>¢ÀR@ŸbËüM 0ûÕ¯æ–{tÒ/l\ÛyùÔÞ̹­Å¨>5“¡§mò­u£.0º«7² @5CŸ OKÃút—ØË^eìø…YÁMWV6ˆ8×¹CÛÖ¦'Ó¶à>ü¿Òì¾€ù´Ä̾A$IFG÷–ú[æiJ€¬7æ’ÔŠÕ™' }«SK mÓYwpcv M%$g¼SÛáS–`s¤æîUñ§{„ž-½M]TõDˆˆé¡ÉÆ^ÉƺuͲ^­Â9/Ù7™îQ½&‹è“1ªO-i6ŽNˆe<îÝn*'¿ûăÅD~N÷ŽøXŽã<Ê_½;}ºCrT–\AJ˜«ùêÀ:@ŸbËüM •:’TÝéñi~ËkÍ (»jÛ´jÃL]*N>ç~ÎzÅ2WÔ2Òd‰':<>ö™«ŒTQ¥¼{IÏ֩ѳ)Ïhz!"6f+iŒ‹3Z×,ëÕ*œã\$åVÕk²ø>Yˆ;éùö&fwÎ ³KV•Ö·ô{¼ 7õC“Mr®üV6<ö²ÌhO]–ʯ^ÛË÷?ç’ù0}|RY²ÿRŽUùÍ_†wäQGSMñoƒ¸ú[æoJ€–Øtsês¨Ä°Ö<ŠJÔÉ¥Uï!Ò³µ‡•yHš¬#5A¢”×&%0Šá­3’bv"DÄÆˆƒü>µêTëš«ze…sÜ”ôðä€>Y“<)´";oë“Mý“Í~"„NcºìasŸ"Ö5›zu Ì}Jˆ°x¢údA O þ€>Å–ù›O¾[½êâ¡<"†Uç T‘¢Êú&Xf¤«z™4—~-“ï “ŸSÎÏ”é<ãSmŒ–±pì­Ý4ò[ê;'–ë××§ÙO„Ðk̵°'ï"Ö5›zu Yèˆ? O±eþ¦Œ-ÌI±ëˆ26Poø<®ïtQÞ Ú¦2»@¿Ž›¸Y]üjú2;eOÊÊ?p¦Ý§qƒLËX„B&Úë+ÞÌ#…ÐËR³×mÝ[Q£•kö!tÃq=¹dݧ$cĺfS¯Váwƒ¬ûô²KcÆ×âúdA O þ€>Åô* †Ž¡Ç[chÕñ9¯7D`Õñ5W\ü@Ÿ,::@Ÿb z•cn5fñ×»h>Ytt þ€>Åô* ôi‘}² ü/¼âï5·}#0Åfè°Q÷9Ч¥‹ØÑO@Ÿb ô X è“AGâèSlA¯¬ôÉ‚ £ñô)¶ WVúdAÐÑøú[Ы«}² èè@ü}Š-èU€Õ€>Ytt þ€>Åô* "q¶ôôÉ‚ÌyGg¿`)}Š-:½ Çô_®>°yujb•@'§­Z¿¥¸|›§JÔÇ´Ÿ*y-ƒì¾’äÌZS°cÎÛ¶ÌlÅŸOJÖ+…Ç. ÎËF*ZÛÁ,Q OD«£S~ž ~Âãà,u O±E«WḎ²åEåÕÜrNúïÈ£Î˧öf.| •DÝqud Žœìʰ“#[êK³ç¼m ÉÌ>tŒw¸}¿àQ¶êy­h:.¾5 OúâèSlÑêUžîL#½M}4ƒãü=õ‡·æ:i’½±ô¼‹ ß…60*bs¤æîåLå uJÜ-ZIHZ¹öŠOÝ$±zJí’¥¤‘ p;X•(Yg¨;íÌ.(|-ÛIÛmŽŒ×¶²ÆÓh‘ü¢Q-ìÉ›?@b9î3áõ‘~›9n‚äuF¼ ÜýÚƒ›rœ»-1mý®ÊÆ»#¯€æÅ×(pÑ}² ÑéSÄ.Küþ&¦o¬¸:¾d7ÔKèSlÑêUöÓèÔ蘆LÁ*»ÆßàÙ|8³Ñ/F‰}Hâ‰}æ*#ßéUs%Uwz|35Þ(þ¨Ù=îc'ŸÜ= ”³mHšØ`{¤”“¢R ö­©¿|»od¦.ÒN»ô­¬o|麇ûP góáÑZ’å°ñ4Ï(tú}/ íLºJôé"is•žòq¬w¸½DH¶¦-âÙ'Ș­ºg”a&†\×ÏîÏ2x´.¾V‹è“‰NŸ"vYÒpRíÃçþçî“ø°ãý©è>cú[´zš˜†rtH|[Nb¯†G“oÞ#Ò”(qH$Á`®n [ã8†$Þ"M,M S²kåf'5ów"åÜÓä •IQ‰¡”ʾ±Ÿãy&†{…0k´Án7QJbßà¸säÔk˜Íœ]Ü,A炬š”z­ÝåöÊJÓ¿Z_«ÀE ôÉ‚èë“16b—% ·’µ‘d¥Ñ}Æ0ô)¶hõ*{H¿!õiwá (YoCQ´4«6Ä1—´œëÜ¡mkÓ“i[0ÿ¯Vb’eðF7p¿årýûo­"£:Ô®P™•LÃ*ûFVrëP6žÆÔ5% iV?8C’íS½ÊÅŒ»¯ìÒg¶p/Èø…Y¶@lâêÂÊæ™¿¦õ¯€VSµ \´@Ÿ,Ht£O»,1ì è“$sD÷À8ЧآիŒlú¬nu}ª'é~§Ï&O1I|ºwÄÇ‹çÑÿ×)Y Žk%½\ºøV&š t€]FäÁlØÔqß½"4h UèS=i.Ž»—&œB¥x ú„c<îÝn*'W`_ÔW@¿ÀE ôÉ‚D§O»,1|'ð»s‡üŒî3€q O±EóÉ;öÖnaó–úŽÁ †eÆú¥Ý…ÿR¦+¿ò²ÂCyM5ŇòtôÉx.žBÒq5<擎öÔeI䓨VïLŸ¦S²”ôª‹Í®Á§“~Öç¹Rèårï‰QU¤Ì²¾ –éª^6ú¤sF*úÄyÿòÝü\Ý‚d¹çé7 púdUi}K¿ÇËpS?4Ù$w ^åÅ×*pÑ}² Ñé“Á.K 'Õ¹½¬×}.YÈr|2ºÏÆ>ŽuŸ&Úë+ÞÌK'Ë$-KÍ^·uoEM Šc~V¹{}F’¢“³ò‹ª>1ð—ñ\x.F-ÌI±,YJyÉö ¹éNG‚²'¦­Ùöî…npºQß颼´M¥º¹ 뜑òô…&ÝXNldýSA$Y.γAHŸü•þi»pdGÞ ßÅ;s·”ž`î (/¾V‹è“‰öÉ;C]–ôW†¢W”_Ów`þ>Ŭ:¾há|‡„ÞøeO¬o@Ÿ,ȼvtªþ0ß@Ÿb ôiqÂ>ÿöL†°Tù0þŒc OúâèSl>-B8ÎË÷Ævç+eMc±nK}² Ð'@Ÿb ô X è“AGâèSlA¯¬ôÉ‚ £ñô)¶ WVúdAÐÑøú[Ы«}² ü/¼âï5·}#0Åfè°Q÷9Ð'¯„>ÌÒ¼ô­øŸÕ/ñô X è2TõišXS(}@Jlõiþø¸¦÷Bó)Ð'dÈôé…šGAŸ¢£OÓ¹úÀæÕ©‰ Tœ¶jý–âò¹­Ý Wؘ*Y+ËÌ> ”NÉz¥ðØ¥ÁyY£rQ¹€> C9ú$“%è2´ô‰ã:Ê–S•WsË=:é¶Ëì¼|j¯Ê>¼³! Š¢d}}šDÑ;ܾ_ð([µ©Zæ°1`Á€> sŸ0‹–>=Ý#l›Þ¦·Y­l,ˆ»å #9 I+×¾Qñ©;¸ifØ~š‰é+®Ž«FÙ©yE§{UjŒè?Ê·¦ôIh<7Aï ¾õ÷ÔÞšë¤mtJöÆÒó.&Øfî~íÁM9N‡Ý–˜¶~We£½’Caõë¦Q ˜' OÈÀÜ'Ì¢¥O{)AŸ:5ö ¿ý“ª;=¾™7Š?jvûØÉ'w*²m(,qíÃçþçî“ø°ãý)iTâ‰}æ*#S¥Uêqв«&3¥Oën/J[Ó&F1 ™ü[{e×ãü"›g6úŨ}­ºg”a&†\×ÏîÏšec´ óô ˜û€Y´ô‰&úÄ(†‰¤o»5äŠãâ[¤‰ÛHbŽk#Q¥Ò¨Ž@”8þ“ ,Ц tœ¢eÉôÃ:ÅRtqoðŒÊÉé_ 4ì1©èˆµN°Ôkí.÷°WVZtÑ*ÌÐ'd`îfÑÒ§=Ĥ‚¤ïœëÜ¡mkÓ“iÉH\",±/ ">åF±á’¦lŒÎqŠJ4€c£Ó'>ÀŒ»¯ìšÙh‰#x3rEÑbÔø…Y¶@lâêÂÊfÿ,£U ˜' OÈÀÜ'Ì¢¥O#[…/ô¬n£úTL|ãt!ΣL|' OwˆfT-Ǭ>Ù…qûT ä®¨õ‰d¿—&”V)–VAN§Ckxñ <¸w»©œœË¾Ù7Fµ@0O@Ÿ¹O˜EóÉ;öÖnš÷-õƒ ËŒõë;@!ñ†Ç^–í©ËR&Nªs{Y¯û\2¦Oª–cVŸªH¥e},3ÒU½l6úÄó8G(mÀà?þK9B;+¿âOÈ;ò¨£©¦8ðÔáªÒú–~—á¦~h²InDlL>IÖê3­Á<}@æ>`½uŸ&Úë+ÞÌK_f§ìô²Ôìu[÷VÔˆQJ!a;Oå9éð{^ÒÄ"½² üò˜ÆÝ:³úÄõ.Ê[AÛ4+5U,çÙ ´0ù«ir÷íág•»×g$Ù):9+¿¨ê“àq#mŽìÈ[áàíÊ™»¥ôüƒàyÆ3v¶0'Å.=¢U ˜' OÈÀÜ'̲«ŽkÙ 1ú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,±Ý2€…ú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì[}Zlk,¶ö€ùú€ Ì}À,z›¶0ý—«l^š˜@%ÐÉi«Öo).ŸÛÚ êÊÌž/”NÉz¥ðØ¥ÁyÙÙÄÈV/`©}@æ>`Í-ƒ¹Ž²åEåÕÜrNú…ms;/ŸÚ›9·µ›Ò'¡UŒw¸}¿àQ¶ê¹m‰²=Чxú€ Ì}À,Zúôt°õmz›ú -ñ wËAˆ’V®}£âSwø¾Àá£ÄôWÇU£lŽÔ¼¢Ó½*5†ÕÂMZœÁ·þžúÃ[s´NÉÞXzÞÅ çî×Ü”ãtØm‰iëwU6÷ü•y‘ª2©Ÿ F`i}@æ>`-}ÚK úÔÉééSRu§Ç7“àFñGÍîq;ùäîÁp¶ …%®}øÜÿÜýqv¼?%J<Ñáñ±Ï\eÄ‹ª´ªãën/’­i£˜†Lþ­½²kŒñ ~‘͇3ýbÔ>ŠÇVÝ3Ê0C®ëg÷g…J£(»²p°~`i}@æ>`-}¢‰>1Ša"éÛn ¹â8†(Êiâ6’˜ãÚHT©4ª#%+%( ”Qtqo°êrÒÎ+“ŽˆQëÛI½Öîr{e¥QT¢¬pý°~`i}@æ>`-}ÚC´D*HújÁ¹ÎÚ¶6=™¶‘ŒDQÂû†ã#Qi.iÊÆ„Ž3ãî+»…ò3[YÁêf䊢Ũñ ;³lØÄÕ…•ÍþPi•h6Ç×'­ÁÒú€ Ì}À,Zú4²Uð„¬n£úTL4æt!ΣL|' Owˆ½T-'¢>‘î¥ £@•S¤À Ro‡Ö8ãxpïvS9©tŸxÐ.d·OÚÓe\Ÿ´ K è20÷ ³h>yÇÞÚMóš±¥¾cp‚a™±~}µ($ÓðØË2£=uYÊÄIun/ëuŸKæÃôñIÕrŒèÏã¡® ‚ÿø/åV~3Ä×ìyÔÑTSx sŸ0 ô X è20÷ ³@Ÿ€Õ€> sŸ0Kl· `á> sŸ0 ô X è20÷ ³@Ÿ€Õ€> sŸ0 ô X è20÷ ³@Ÿ€Õ€> sŸ0 ô X è20÷ ³Ä‡>am`è20÷ ³hé“TH8¦ýTÉkdó–$gÖš‚²dd8;’õJá±Kƒ­Lƺÿ\Sº=/-)ÁF/ÏÞ°÷Ä•A²W‹Öñ‘»«Šò³Rh*!Ñ™½¾°üã6¯|Wƒ»º¨Å"Ð'd`îf1¢OÙÂöp'ûŸ2ìäÈÖúÒle2Žñ·ï<ÊV-F¥þáO·û‡'|ì”§û‚°±/µ¥_çxÖ¾3_vè20÷ ³ѧ4²p«²CnØ 7A†¡œÊd7B¢2 #ÇSuªÓlÆýÚƒ›rœ»-1mý®ÊF²ƒ°-œ`-þžúÃ[s´NÉÞXzÞÅ„ïeX³9RóŠN÷r¦rAÕ-Ð'd`îf1¢O%DŸ¨”‚}Gkê/ßîá”É8Ö;Ü^"$[Ó¦,ó”ª4rœež~÷Õ6þx›.VißGñت{FfbÈuýìþ,­¼LC&Ä^Ù5Æø¿ÈæÃ™~iâÄûÌUFYe0WRu§Ç§¢š`‘}@æ>`#úäo­Üì¤fFc(çž&Ÿ4ÙL]ÜËÉÍû±i/Í+½ø.ñøLQÎ}·&£™û´NЧÔkí.÷°W?o9ÑÂ+¤Á÷˜œÚiâŽ@”8ª–`0W·â €Eô ˜û€YŒèÓ4Qˆû-—ëßk‰¢vÉ’1ãî+»…¨Ì–0y`{Ïæ >Cï¼ä1r\ˆòô7m"uY¿UªÇÇ/ì̲d/quae³_+¯ƒšq ÒÒÄlø]9ƒ¹”Í‹ è20÷ ³Ô§×J„!]™Œãî¥ FT9´Ž‰¿T¤ GV¾wkBZˆÖqI-âÜ'ù4*#ú$dg<îÝnï îÓÊ[!ÎéR,’%–¾5ž ,N OÈÀÜ'ÌbDŸÒ «.6»ŸNúYŸçþIÁIrï)“ñ<ÎÔbÀ ƒ—v ·æ¨ü³.VZ²Öñ¬·Î|Õ3øÌGž¼û¼@¨%ç/:­Ò:¾ª´¾¥ßãe¸©šˆ>•ŠÇó‰ö´JCð_žû£+¿ò²ŒwäQGSMq¦jEÒ·ÆsÅ ô ˜û€YTõ)8Û'I|[^²}CnºÓ‘`£ì‰ik¶½{¡Û¯rWKÈèÙ dLþjZ1-*”R븧õ\ùö5N‡¢“ÒVoÚwâ‹oÏú©f”5c¤í‘y+¼â8s·”ž\‡êlaNŠ]š’ãØ‡ŸUî^Ÿ‘d§èä¬ü¢ªOÈczÊóŠ.Xœ@Ÿ¹O˜E©O;9Ôü[Á‚œ7bÕ*æè20÷ ³(õ‰¢l´3gãÛµ*| €> sŸ0K|ìy€q OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì2Oú¤µ$ø|0å/äY€ú€ Ì}À,ú{ÞQ»†¥‡wQ-bnÅ£lWW06³Œ'7F6Å£æ¤|- Oq ô ˜û€Y"èµü2Ž»œBÕ'eQ³i$×D“÷cèÈy¤%Mó».:”).> sŸ0‹¾>¤(ª( -?ñoÊŒ‚»å –•´rퟺ9•­„Ã÷Ûõ÷ÔÞšë¤mtJöÆÒó.&<‹l/à`®¯i¾r*w$æ¸Áá-ý5yVþýÚƒ›rœ»-1mý®ÊF[Gq6³9;°À@Ÿ¹O˜E_Ÿ¸/S(Êù%Ç󥓢–ÉɾýoÔì÷±“Oî dÛ4»2Ì4dòa{e×ãü"›g6ú¥É’ª;=>•1¥V‡0Ü”õˆèÓ#¡ÊѪ,Ÿ U¶êžQ†™r]?»?+”†¢ì²³‹ú,B0mï-jÌšåÙ…ú€ Ì}À,ô‰ÚÆÛA‰ÇSÂÿ³}ˆ“ëSŽcˆ¢l‘fW†ËÉí¿+A¤Ç$Ëi²nNÝ.¸®d!qj?~°B($¹KeŒh 3©×Ú]îa¯ìt(*QvvQŸ…ÓqÌ)Tç<ÖÉÎòìÀB}@æ>`}}âþó4o¼'ÐüÓ²;e®s‡¶­MO¦mÁ9Qü¿²ì²°#˜2_°2™Žë%®’ÒÍu§iéU»Å6~ag–-PEâêÂÊæ™ÁŠJÅÎò,„Ër¯*MhFâÁ_è`Ôgè20÷ ³DÔ'ŽëÏÑx8N Ç=É#uQTÞN]ŸFÚ.Ù‘·ÂÁKŒ3wKéùÁUúNå­ m*Mâ,l fv`Á€> sŸ0 6mVú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì}Vú€ Ì}À, ¯OK}ýí¥Þ~}@æ>`ýM[¨]Ã҃û¨Ù˃ÖN(³$´ EÙ锬W ]TÙºw®*R†ÁRú€ Ì}À,ô‰Z~9¸»Ç]N¡æ@Ÿ”µÌmQãnß/4ÞV='%kU4 }Zš@Ÿ¹O˜E_ŸRUô£xäÇ"þÍÁðr™Îºƒ³Sh*!9»àÚ_е¤ÛéR6Gj^ÑéÞ°¨iÅÆ»¦ÊTJKx!ÄýœÁ·þžúÃ[s´NÉÞXzÞÅ„œð~íÁM9N‡Ý–˜¶~We£Æ¿ªÊ¤Þ~Áâú€ Ì}À,úúÄ}™ÂKÈ—Ï—NŠZþ%'U¦.•'Ÿs?g½î“øðŠZFš=ñD‡ÇÇ>s•™©’F)ÃËLªîôøTîÊÍŒ>±Þáö¡Æ5m22ù·öÊ®1Æ7øE6Îlô‹Qûx%¤lÕ=£ 31äº~vV¨4в+ Ø~­Áâú€ Ì}À,ô‰ÚÆë@‰ÇSÂÿ³}ˆ Ó§Cä^^;Éá¸6¢‡¤Ù;QâXP‚4J6Xf7§>£I6DÑŽÁ”å¤Ì+2“2ˆQëÛI½Öîr{e¥QT¢¬p#í×*, OÈÀÜ'Ì¢¯O|Àž¦(§“¢è þépap-ñ´Ä'U1ËÉoØé„ –©u"¡XfÜ}e·PHf '-3L®(ZŒ¿°3ˈM\]XÙì•FQÉb˜ãXãí×*, OÈÀÜ'ÌQŸ8®?OQÉë'J#†wÂFŠî(GŠ”¥é„Í–©Õ`’ñ^šÐæÊ)RN)³CcØŠc<îÝn*'uíÚ…ìö©@3ºŒ·_«@°x€> sŸ0KD}Ò9>ù¾ƒ§œw{Y¯û\2vžñ©f×RŽ|"6­Þ±1^¦~ƒç%oJö_ÊáÃtå7C^–ñŽ<êhª)Γ­*­oé÷xnê‡&b;¥âñ*Ò°²¾ –éª^f¼ýZ‚Åô ˜û€Yf£O7q³ºøÕôevÊž”•àL»OínÝ´¶>-ÌI±GW¦~ƒ9ÏÁ^’¿"e²?«Ü½>#ÉNÑÉYùEUŸˆi»pdGÞ ^Ùhgî–Òó‚Oäõ.Ê[AÛÂîúi¿V`ñ}@æ>`lÚ¬ô ˜û€Y OÀj@Ÿ¹O˜ú¬ô ˜û€Y OÀj@Ÿ¹O˜ú¬ô ˜û€Y OÀj@Ÿ¹O˜ú¬ô ˜û€Y OÀj@Ÿ¹O˜ú¬ô ˜û€Y Oñ sãÈæì¤²¹Ì´ û¬ô ˜û€Y´ô‰cÚO•¼–!ìB'9³Öì˜ï–„öF¡ø*S²^)`-}J#_»¬úøwËA†‰’V®}£âS7ÇÓ½‚âó\ $àÜ©ü[jE·åï©?¼5×IÛè”ì¥ç] §R¬lã`R¾3øV³î~íÁM9N‡Ý–˜¶~Wecp/`éV¿TbúÆŠ«ã¡,ÓYwpcv M%$g¼SÛ!Û•8ËæHÍ+:Ý¡¢(Ú&;eÙ–Ä:Í‹øSˆX¾Öè“ÁŸQ|}@æ>`-}oúP)ûŽÖÔ_¾Ý7öez£ø£f÷¸|r÷€lÛpàe!K51.îÑJáøËù0Óɇí•]cŒoð‹l>œÙèWÖ83úÄz‡ÛK„ìkÚÄ(ö ’f«îe˜‰!×õ³û³¤¥%Õ>|îîþ8‰;ÞŸ ”V—Ê¿M>ç~ÎzŨµŒ4Wâ‰}æ*#rR¥_QmS=ë:Í“¡úSÐ/_KŸ þŒâè20÷ ³hé“¿µr³“šŠ¡œ{š|ÊdÇØ-Bxt“.’ dy7 *U.N¿!£÷˜¤?¢,J6TBÑŽÁÖ Š’z­Ýåö*Kk di#YJŨC¤´ö°¨CÒ\(q,A¿¢(Ú¦l§ôˆNó´þôË×Ò'ƒ?£øú€ Ì}À,:OÞñþ0p¿årýûo­"#QÔ®Àq×¹CÛÖ¦'Óâ¼EF8ï~AޜೄÀ[“äëØAÍhX0=­¬.ômÎŒ»¯ì²d¶ôI§„ñ ;³lØÄÕ…•Í~ii¾€øH‡´´ð¨Di.6ü^ž~EQ´Mõ¬Cè4/ì§£ñSÐ/_KŸ þŒâè20÷ ³Y¸€ãZÉ÷iºø¶˜|ÕžîññžÁy¤ßÂþãBÔ«ÝÂÝê[¨§QEšK#-‡ãî¥ V9Eré—À1ž÷n7•“Fî“–v' !wHÔA1ê°á1*lôIµIZEÑ6­³ŽØ<):?òµôÉàÏ(>€> sŸ0‹–>¥V]lv >ô³>Ïý“—xî=1ª|Õ6<ö²ÌhO]V¸ö4Šƒ!üÿ.¿‹ý—rø#tå7C|ïÈ£Ž¦šâLe²/úÇ9B98ýV•Ö·ô{¼ 7õC“Mr‡N,-©Îíe½îsÉBöã“bÔäûÂŒë”ó3QÎ3>Õ6HßjUEÛ¤ä“ËÕêñæIÑù)è\U-}2ø3Š OÈÀÜ'Ì¢¥Oå%Û7ä¦; 6Êž˜¶fÛ»ºý¯x¶óTQž“¿ÝÊØì úähá8öág•»×g$Ù):9+¿¨êÅ3hÓʡϡœä¯ôKi»pdGÞ Þ8hgî–ÒóÔž¡£W”_›yònâfuñ«éšVIYùδûÔîÖÉÞjUEÛ¤Œ-ÌI±‡+¨fó¤èÿ´®ª–>üÅÐ'd`îf‰×Uǵtè20÷ ³@Ÿ€Õ€> sŸ0 ô X è20÷ ³Ä«> ô ˜û€Y OÀj@Ÿ¹O˜ú¬ô ˜û€Y OÀj@Ÿ¹O˜ú¬ô ˜û€Y OÀj@Ÿ¹O˜% }šÃ5â~y¸?Á¥ô ˜û€Y´ô‰cÚO•¼–!ìB'9³ÖìEÅVŸû°ØèäÔU¯l§ºéch£Û¨›]N6F©ìá;¸RØËØù(ð¶šlfWn¤R¨Ô"ú€ Ì}À,ZúÔ‘-8ÃÉþ§ ;9ò°¥¾4{>jZŸø€ßëé¿Q½–w™å‡:Ôv…›}]"«É.~-Ä—FW‹åd?!o[HÔ˦Zb ô ˜û€Y´ô) ¹t°*Z¢Q±ÓÎì‚Âײ´ÝæÈxýh+«LC%¦o¬¸:®¶E/Çù{êoÍuÒ6:%{céy£&E2 ao¯ŠÝ5:ÂÝr¡„¤•kߨøÔM ±…£ŸX×G iœC|Ø»‘×µýoñÿ[ÿŒûƒS¸J .•}ŠÅZdYtNY«Á`ö@Ÿ¹O˜EKŸJˆ>Q)ûŽÖÔ_¾Ý72ãJ}z麇û00,ÇGk‰“–¦Iª}øÜÿÜýqv¼?¥,ŠiȬ²kŒñ ~‘͇3ýʆÉý‡ë u‡ŽÜ(þ¨Ù=îc'ŸÜ= DmRͨŸX Ç] UlôqL/N›¼“[ø¶OqÌfr•êÂ'©ºÓãSñCetNYY˜+ OÈÀÜ'Ì¢¥OþÖÊÍdhE„¢œ{š|b”R ú9žgb¸W³va‚]š¦-0Y¨”Vª,Jœbt%ì1IvDÙ0…>1$¥C™2µE5£~âð(öMÒ¶*®‚ÿÿË£7¶–¼íÿ#ɲÝ®OÝœžjJKÖ9eeQ`®€> sŸ0‹Î“w71p¿årýûo­"#QÔ.ñ¸R XÉ 2iXšÆŸÔv¤ÉÔŒ­V¶J¡OwIʽ·®s‡¶­MO¦mÁÒøU3ê'–ñã r„±'ç€à‡Cé|ðMrÐùƒVÛT¯ƒ4Vç”õeÌè20÷ ³Y¸€ãZÉ7{ºøVK ôÃwút‡uP™¬Bœmi¼E®O-i6ÉܧbRÈéÞ¯qœGß^t˯@KЯènñHRðÈ×êcMú×$â)CŸæè20÷ ³héSzaÕÅf×àÓI?ëóÜ?)xBî=1*:}Jªs{Y¯û\2¦O*“ù/åQ•ß yYÆ;ò¨£©¦8SÙ°PvÒóíMòäsæÉ»B"$ ù"F{겤å瓨Vè$–Áq¿ÈÒ@v®-AÍÐ'd`îfÑÒ§ò’írÓŽeOL[³íÝ ÝþÓ¡õÃÁÑ›•å—ÇÔŸ¼c~V¹{}F’¢“³ò‹ª>¹;¢lX ÊF'­ÈÎÛzàdS¿dÝ'¶óTQž“¿)&F-ÌI±Kè$–ÁqÞ<’¬>ØrŽ»Lš‘;aXŸ” Ð9eèÓü}@æ>`–Ø´&Ð'd`îf>«}@æ>`è°Ð'd`îfY}`Q}@æ>`è°Ð'd`îf>«}@æ>`è°Ð'd`îf>«}@æ>`è°Ð'd`îf™[}ÒZx|^™¿Šbr:`¾> sŸ0‹–>qLû©’×2–Ù);äÌZS°ÃHióä dÔ‚±™íQ¸±²gJÃÜV$ú—@Ÿ¹O˜EKŸ:²c9Ùÿ”a'G¶Ô—f)mžƒk"ûÜåý:òcÙ¨®‰ÓÉ5{ Lq ô ˜û€Y´ô) øt°*~¶pbúÆŠ«ãj[+Ã,6Gj^ÑéÞÐÞ»þžúÃ[s´NÉÞXzÞÅpòJ9îkšâÉ$Q7˜#¼¥¿&oÃ6á½_{pSŽÓa·%¦­ßUÙ¨±¯ì-wËAƲ’V®}£âS·™Ó «]û\TÓƒ˜}@æ>`-}*!úD¥ì;ZSùvßȌ҈Tûð¹ÿ¹ûã$>ìxJ¥N<Ñáñ±Ï\eÄUªÄ(¦!“k¯ìc|ƒ_dóáÌF¿²=­¡=Yˆ>=²PŽVeEû­²U÷Œ2ÌÄëúÙýY¡4e—BèíâšÝã>vòÉÝBÊmCú§‚i{o¹PcVÄs \´êNo~GÌ@D OÈÀÜ'Ì¢¥OþÖÊÍNjfȈrîiò‰Qâ‘¶À@P‰-•Fi…;Y&Ä¡1ªœxÚ•@ÔcuDÙ®+YˆJíçÃVY’»TÆˆÖ 2“z­ÝåöJ³“b¥oU‡€8Ž!)·èŸŽÓqÌ)Tç<ÖÉF<1{·b` ,<Ð'd`îfÑyòŽ÷œû-—ëßk‰¢v‰ÇEð$ÁG¢Ò(­0«vSÌAÍHZPÕhµÆôWIéæºSˆ´ôª•6~ag–-P`âêÂÊæ™ÁŠJÅJ³p®s‡¶­MO¦mÁ–ðÿêŸÿ^UšÐŒÄƒ-¾ÐAsÑ6°ð@Ÿ¹O˜ÅÈÂ×JL ]|+šÀ€>Ý!Q¥QúaÙÛ q’•aw†2ñL¢Pc†[µ4¡IŒgàÁ½ÛMå¤aûăvAuìS6wI³“œîññzÇyŒœ{ÿD¦P`ÂîkÒêœ ôiñ}@æ>`-}J/¬ºØì|:ég}žû'ɽ'F‰&Tçö²^÷9áž}|R¥–½õ_ÊJ¨üfÈË2Þ‘GM5Å™ªMå_ ê¼4(Ÿ‹%†W•Ö·ô{¼ 7õC“MrW±ŠˆMYßËŒtU/“f)$Q ùêG{게œB6ɲùÒˆ¬…:ç}Z<@Ÿ¹O˜EKŸÊK¶oÈMw:l”=1mͶw/tûU"£è•å—ÇŒ=ª*\ú–ãØ‡ŸUî^Ÿ‘d§èä¬ü¢ªOîʵ$˜òIž8¡Ê{©ëÓHÛ…#;òV8x‰qæn)=ÿ ø|_ß颼´-ìæšÅvž*ÊsÒ”J”~X™^ç\ O‹è20÷ ³D±ê8L,i OÈÀÜ'Ì}Vú€ Ì}À,Ð'`5 OÈÀÜ'Ì2·[°ø> sŸ0 ô X è20÷ ³ð_%xáeµWt¿,Ð'¯`îfá¿J.6?À /ë¼ OÈÀÜ'Ì}ÂËj/è20÷ ³@Ÿð²Ú ú€ Ì}À,Ð'¼¬ö‚> sŸ0‹–>5ÞøSáë«S6Ê–@'¥¥åÄü[o6¯™]f(›}ÙÊôõûߺԷÀµÇü"à%¾ OÈÀÜ'Ì¢¥O¿[!ì÷Fý݆›ÝgŠ·¦Çü[o6¯À4Þ¸÷ÑGÛ²ZøÚñZ /è20÷ ³héSÙB÷÷7U†hd2 }¶nBòòÜ™©Év>è\·©¦×xþÕx’&ƒEvzùª—ß|¿úVŸ2;ÅGóÿQkkHlã­„CT…~›ou‘¼ÉÁ·®ªw‹^JçÛàH]·¡¬©Aµ.zŪgê‚Q|®ÊÒ«R“ì”ݱ"﵃—êÕr)‰¹<à}@æ>`-}ZGô‰Z–÷JááâʆM3%Þ“¾•é“óm —ËÅðòm M¿#YŠŒ§á_ïT”7vÔßì>}z‡•×"ÍN—|vök¡I'Ò…vÒUDŸÊI›÷è)_ãÍî>Ú&$ËøTŒjx7MˆÛõyíž­äƒ)‡]au•~uîÆ½“e‰‚îííä*]οu”]?w3µ¬Ô¥Ú‹}Zd/è20÷ ³héSCÍÛ/-£$ã<Ékß#F‘·ŽPJ¥>ýñV_ã­N1|B÷’A!i¤¯Æ[.Rã«ÒìU¡Q k;Iìžs·úŠˆòh˜ÍœNÂoOKØHr•Ưn‘ÒJ¤¹Ž¢>%Q»Ä¨|’ëwaQ»U[xú´È^Ð'd`îfÑyò®ñVWM]ýÁCeëÓȨµI`-}J~õ}ÕW>¼ÒÝpóþÙº2AÒ¿£¶sÈ¿ÐÕpãNeIâ|èÓRÅÞ?uóUT•®Œ O·º7G^º¦¾,WÍJ!}æ§Bâ†#™|ؾû⩯z¾jûàÌ©7 Ò¤¹èÒ¯ÎßìþÿÛ»¿—¦Â8ŽãÿÒa“m(£-ÄÆ&©T˜´ ( Ò‘–0Â"½(vS¸‹l ŠÂQéFD±Ho½™ˆ™2pzü:ϳšó9;“G=“Í÷‹çâœ={~0?œóÝNj¤Y¼íñ¿Ú§É'¢²Ý?2Sê ¯8í0*·7ê°7Zñ PPûèrŠOñÛ½‘¶p É+~ø)ØÞq||î¹ÑähO$èõ¹çUì:«ãÌÄ ±„qÌ¥–}Ó"¯ÿ\MWºˆd•êï¤?Éûo_>ín¿ìóÞ@kôÖÐàû…òQEFS8öà]úð›wËÉ{W.¬Áî¾9ôYùæ]ùêéáx¸ÙSqç´Ú7â  ö ÐÕ¿:ž}$NÛÂÙNKàiÈF|Ô>º >e¦§ûC†a4Å¿žñÝ1âSC6â  ö ÐUïñ)ûý§ˆ8-½¯—Î|râSC6â  ö ÐUïñ‰FÓmÄ'@Aí ËúWr®µ@­ŸµO€®b|:ï]µC|Ô>ºˆO¸hˆO€‚Ú'@ñ  ñ PPûè">á¢!> jŸ]'ˆOů󻴟¨÷ý㔈O€‚Ú'@WÅø”‘OKéÛ6K¯˜Û}ò©(™×âÇáãQ ¯/½þðÕ—œyü°“.d?ÖnçÂNá â  ö ÐU1>™S2Æôl–^Ù쑟›r%Ï•BˆYÈo,&Ä<)W:8]$5Õ)â  ö ÐU9>™³>ÃÒ™3Myšë§¾YyZLsoåcòngÈçñcñçV Å!ûIyiN¾g=*†G×eל¼´•ÜW“ØÑiwäðPõUDׯô³;!¿×h½Ñ?–]Ú²Ïvà™*^>ršÐΟìVÛ¹s\E|Ô>ºœjŸæý"äD×dZ‹ˆ0ãŸ/v•džBFtyÇ~lvsßbÖq$»'†˜…„ˆL±¼iš[׬èeå±®-ë$¯'ìQá0rìç7ÄŠ] ÕW± ŠÙ<©•?…ÂÎúêÌD"ZšÍ0¼öÉ«WŸÐÎ)>µ¤–ïšÇî¼J\uâøôáJÌ endstream endobj 43 0 obj 47276 endobj 45 0 obj <> stream xœWK‹#7¾÷¯ÐyÁ^•Þ ¦ÁnÏ@r[0ärJv–™ 3—üýÔCRKÝnÏ2à±êýøT%ë#¨ÿ†7¥ñ/€Qq4êýëðÛ'õ#Sµzÿ{¸ÜŽIyÔí/õùT½}ûý¤Ÿ'sÒgmõe:}‹ò '퉦~ÍT<…˜é`IäÛ¯ÃÓmør×ø£wFaläÌêéàØbÉú!z:¡-ƒ89gòûH†ÍÞIÎÓ!i–Jx'´7£†«Šg²7NÐÒ“ÐçÌl¸Bèt8†„r‹¶ÉsZäP+‘yˆ¶ZfíY»Ub’Áe²™Š¡*'€“$×.s‡§UV’¨‘äÐMŠUÜL1'ýD2âuFËHvk¹PÖ„̳ˆm«`Veûùä0‘¸ ïî&ÈÞíû>ˆ4àg"˜)Æ k_À3±4‹èó!—ûޤÒmSùÜgJ®Ö |•Ìw¾ÃÙ¥ËéÚ*ºœ¸>A;s}xa\tX¢>W£©Ìûep_í\“¢Y@,XC4/¨8,ÂãÀ‚>ƾkÆcL÷ûF!mðê[qÊþ6–¾™Ç3ÄY{´+CNs[Àä–f¬Á»ÒBëg #·²Kü`å&AhñomOÌøw «ƒtÉf¹3ß ”3P$LÄ*5úÊ!Ég&Ñ»tŽï€5I²bÚ£KmSQ±\'ýl&MÖc‹·Jp1´ÄØ•‘¿ÙB²¹K4¦Ì.^0žzߨÏâu„IæÂ£úñ,ÙbãƒYâ`<†˜jÞ=޶SsoÐþò¼¬¨‚på •Ì@ÝÆûVÖœ]Ù‘©ŒJ^úŠ ~¤Lqû€â©ÆËî†$ßÔ}v᥈ôË2ùÓ̼ý3ÃâÑ,£uÙÜ?•ÞÀöó·ùêȪ٬¡51· Y~í«!Ù̹+¶‚ Ú×k7;y×sÌUäíJcÿLÿJ°lI‡-Ugé~ÅgØóã†[–ñ#‡>ÆÕ¾éB»ÛÅVÂÖ~-JçvKäc:óêÁãà‰+Ú¾ª>ÚòÛnp3aÜÞÌ~Ë?¾Œ„uG—‘Ê!‹_?óvi{©W^ž@ù2™ªÛòTPsU*êà,&äÓòØIT{Ù«‚‹¸07òÆîÉ{ ×Ôû_ðÊc‰£rZÓÆeP÷ý«úöIX¸ËIà>ËáÏ"‚£sfyswxoÊDF¦A›ÄÍÏ¢&NF«¨?_‡Ï¿¼º¨®ÿ*Ê¡æì#š3èר×6ꕳ³ÈÁ‰a/…™c '²ä´Ö^Ô?§ähLx²EZÉ©bÉêo‹ûAN5²ÆfçF”‹›.ÂæÐ$Ò¤8tWÑÜM¥ ©«\[…¾>›üWyÜÿÅÙ`ùˆ–âٮȞѻÇK¤GÐò…ãLºKSð*DòC¸NÁÑFÁÒQA&V2ÔÒj(Q©Cm¨/ª$E¥ÉEKÅ‘Säò9¡¬W,æò93b₾»**§lF‰\qá¬f»äTB[,v.Dµ8)f»X7y49ËU8ÛLºˆÖ¥[JÐ§ËØä±‡4l­·¨0*ÐQ ‰³tžˆÒù `¦‰ д~,­ßóñ?d§R endstream endobj 46 0 obj 1254 endobj 49 0 obj <> stream xœíœ{LSWÇï?Æì)Î-llK̲dñ/b²hŒaËÆdêæDʼnE†&¶Ê»†0Ôì¡Ã'¥<|l‘Í€nsø`<²é‚À¼DT„Z…Ò"”  íÙ¯=zÓÔÛK-Îs~Ÿ|ssÞ=¹îím! 3欈Pa˜ÉòõªeáªÅkÁ¡›>XHEC{É {9VÓµïd¸¦¢—…ÇüPÝ…a2ßWw‡n¤¢CÖÅ®ìİšEa[¨èOÖ*‹*nbX ¼YSÑ‹×(õg:0ÿÿì;Ù¼½¸zï‰&çF¨B#t¹›õñ%ýÑjÅÁò1;ŽœÎÔC à£—Ø”ºG&’SrËšâr —Uªs w½@¡ v4B œ~©è…«ûN]ÇÐ|¡¯Teé¯\¿ÕzͨúâU"“÷7@—ä”m…Õ‡J‡·{,ꜢœÃç!êíEP…ÆC¥•Y…5’Á/½ lkî/×0Ì‚š˜,}×m=çP€*4zý…"’r݉†.É)ß–¶ÀfŒ­pŒÍ.ˆý²@¬*³ô0@r"ø¥¢ƒWnÝu¢“Yô§"3¿Óhr>íP…Fèòîk…'~‹ÃÑ%´ÑݬmÅ”Yt‡–þAÝ!4B—»Yà—Šžÿiô×¥W1›3‹[¯è©-ÃîáÐåÝ×Zow ÇQ]’QÏùÆn3Ý!\ËP…F™)à—ŠZ½óx&2M_ßÚÑÖaŒJÏ£§ W;ŒÐ©Õ{÷µÖ¨wÃúpµÑ%)«TÙ…½–ºC(@e¦€_*úýÐèí?µa4ú =duÜnz¡ÕÏÒôÐ%3†IF~ ]ÔFç$í¯Tfš,ý0ÌpÇ T¡ºÜÍ¿Tô{Ë·d—\Áˆ ‹ÝEECaL㑟K§ÀÑ%23^Þœ®£rá•‘ÿyF¾XݤÕÁɉàEKf]Š®¾õæ¥æá©ùžŒ_©’ c"?Q½çœ®¤B´œx õص®äœzoŠS’uçAqxª Š–Ì˜"31ýÐ¥Z¸†‹ÓF(ÀeÐP4• û«´Å;7BÝYÎFÑÜEsÍIP4'EkµZwú€_*:--í!Â.à—ŠÖh4#»€_*:55uað+о°‹(:%%eaðKE'''"ì~©è¤¤¤„]À/˜˜xaðKE'$$ô!ì~©èøøx3Â.à—ŠV«Õ&„]À/×° øEßAØEkDØüRÑ*•Ê€° ø¥¢cbb:v¿T´R©¼‰° ø¥¢ Å „]À¯øÍ˜añ›± 6\DØüâÍâ¢ÙEsŠæÍ (šP4' hN@Ñœ€¢9EsŠæE[[r­mEO{ o¢­í#åïŽT„ ´|Ú{™Px=üÛ ÒRb»|døçןö^¼Ï7îÿµÅ³+º\0ËA€¦\~ä`ëÎ!¤í8i>òàÌkSŽ/öc6ÃŽméÑÆ`gf³ôàÆ¼°°¼Æ'zÇ´ˆˆ ™g]4œ'8 öSP®œ3™Áç_# _Õ*f×n}ÛV›xÿ×W|±%‡£Ñ¥<ì;ÎEDXm¶_ŽK©(9xð²f¤*˜4¤Ÿÿ„\Ü8rn¶µ>Ù»ƒ#:tœ‹ˆ°+Ú~£÷4ç²äà¡S¯Ú¢HCd͇Ó!¤n¡­6hèäË>Ú•xË•¹ÉÈØô|gP´µNñOÕ,Ò´„4‡\ Q·ê-Òôiœ3\5s 6Ú‡;¤÷7îÞ Ç´ˆ3¼‹îí¶þègûk©H½pMýR»j*iH‹`kœÜ_2Åb>ÙK=sgØíÑ{tÕº{§ýH«@ÚÒ!NrË‘.á^¥_õzŸíЭ#óãëy<‹¸Àªh‹OÝ}&Ã]Ýt[û$»Ü;1 F­„XÒo¯ÚŒÏÝÍ›j1¼µ%ûVßfeîºò[.ââ-£}Žî+[2tÖßn¹G }z´ÓzÒ§‘{°‹ûCþ}eK½¸%úS'ÿåîƒÕ˜qÁ“ÿú슖§'ãŇ­o£?1 ¤[ ½¹½ï·í·nÒåÿðꛦlï?~Ëã`þ+PÓ±ˆÞ¬çoEM–‰Q5ÅT9‘»òü Ú[0/¡ hN@Ñœ€¢9EsŠæÍ (šP4' hN@Ñœ€¢9A=/hQòŽV#þšE3¸¢™ÿ}4¢yøÃÄâøËÍ> stream xœí‹WGÚÿÿ¦:3szæp9<Üð„`â…/DMˆVÝDñÂbv®k|]ãý–Ëâ&jÖ5$†¸¨ˆ(^G_wf¦ »¹¸IØä×—a¨™î®îfh¿ŸSG»ëòTuuÕwª§™zÆÆ™‚ƒ ›'½íŒb¥1t°ë£?Õ¿òBI^¶à²¼s_¬^ÿ‡}§/ÏL ™€ýÄMìܵÎåž6Œ £”ß*ž©P”-Ó±ó½ß Š¡ÑaÿÿuùÑþ†åy3ÙN@æÀ· Ç›ë^*óf N··|iýŽ ¥lJÅÿ=ùǺE¥Ï“vh°«¥¹ö¥¹Þ,—+;ï¹åo¾{öʧ7+#ë*!·¸rÕÖCGèdêÿtWݢ—WQ½ißçÿä‹[p¬ldÅE‘R£<& ¾pìw5 Šžq;„g _|µáXû0+Èé7õøŸŸïÛT]!=;s Ö¾sÖÏk `ºá‹›–¼!6CoS~Ü3 Û×{⟠©<ÊÈÅ™¬ø ¹ïFÌÒpëËŽÄ0w*˶†°‰˜68üY i°ëÕÖð¤ŒK5púM·µÄQÝjÖ$Àôa¤‘šUßÒÑÿ0(†}Ýy´L™æ1¼ ½Ü? G ¾& ÅÒcí>ÿpHCÃ÷z[·É9‹¿ÒÖ"†÷o~¢˜ý½3°RY†->r±((‡ú/YLøâ–§ˆ›Ÿ»lã4xàe¶ÆÐpÿ%µFR=-HˆÀé·ˆåE‡â-¬à7 0}ðÅm+³Ü¢ô–2Í=l†æ‘xIyÃà‹}B^˜°Óz纗Êó<.¤FÌ®SŠaŸR龸ÍQŠ|+nlÕü¯5¨‘µÑ‚„dsúM=>¬ca½Q›Ó _Ü16¤ÑAÍzÉk nÑ‚}«xOÏ(ÅÅÔûˆ/nÿ£Y=lIÜ´ 6ª‘o´`ÜÊÒ€Ö2Ç`æá‹'Ò¨à›ŠV|bü¨¾Ùüc{ßàˆülHé]Ö”ºr;#GùâÚ¢<»«©ÔJƒ×Ô]¹¹• wØ Ã¿ÓZ>¢caQ›ÓMÊÅm¨N‘š¥‡ÚoÝ ‹¡ÀÐ×¾®ÏZþ¼iiä¯2Ê­ØÛ=ÅQÿWkÌaMM|v´£8$ÕqÔì;7JÛª›¤|Ó¡³]7ÿ9<¢b88ì¿m¥ÁËõk$Ë#ߘ5(Æç½×u/–¿¼ò×͹Dk™,:|)ÎB5¾s m¤\Ü(íØü ïÁóÖ ^* ]–øŸãÒÞ+5o<ã 68ôéJ§æm©såÙPd%Üïµb9ÞYò÷Þ–6Œ¦¼n¼­“ÿ¸âÆé?ׯ|¡(×ítºs‹+—¯o>|¶ça$•öµ4,+ÍvWNñ‚º]g¾‰3Eÿù÷µ ò³œ.wÞÒ7÷´Þ37¹T ÷쾆ڪ¹sr‡SÈÉ{vAõÚm{ZÚ|Ãæ :´á• ¥’BNÁüU[ŸbŸ1G.î«_ZöŒd×í»hõÛGÛ´]q¯uÏ›Kçy=.gVþ‹kvœ¹eÌn¬h/Ì: n[q@ù ÌZøâö+ÌNLÅ-ÕëÁÔ°¡y?'p$ÃÅ-Ý €Œ†# 7Àì…# 7Àì…# ³WÜÇ tÝÌÔHŽ€DÅ-²glÎ 1ÖÕòL¨˜ª¸éîmûkÚÅmð³Ýë—丞¼çW5ïg 1€88'n¯ôg–¸E‰Ó™tŠÛUE‡.ûé“ñ_~ü~ô›+'Ëf 1€88'n-¹„dµ¨‹·ø¿?w+î\ÙÒRåC_ìOÅ)xK«j–z§Ã]ôÒ[çÅHY¾vlku¹Wp¹¥Kêt‡,¬MÅíÑ™æÏæ8žâ—N‡'ã?Úº¤4ÛIˆñŸë×/Ê÷8<…KNOócaQ¶‹y•unü7jøñ¹æåÅY!áÆýºâxž”ôêwµ¦öÇ_ìXUžërå–¯ÚñÅcãk‰ø?ܸ`ŽàÈ*®n>÷øWëâFïýFúwåqk­{÷œïaP¹wé YåVÜeÕéÙ³þÐàŸÕãRéøþE ·ªyBÇ‹eékê û?*•Ž‹ß O]ÜÜÍüüïø·¾¨"ÂÑx×Û—‡¾WO~ÏKÖ»÷ø§ÿþîÝ“Mê#‚!T¾õÅÝàw?ÿòËc}-sÉ’5þÉ.¬ûrð»ññïÛï]Úþ\MÈ-ƒ®Ž«ýûí.ò›¶¨5׿7º–èA´ö/×មß]žb¬‹›tði!ž”ÉŽê‘™å¬:õR‰!õøº|,JKBœjÕ#ÞieµFém¥ø6N«,ŠÛדgÿ"Ä¿Îdk"¤uòìkBjõz(DÈ«êÑfBÎNÆŸÑ7q¦ѯµµo$ä cMF×=`jÿ;![ôZ ˆ¸Ñ ÒAu_Œ¸ÑîÛW<_˜#8&|íIÿ³âÆ>ÉjŸjÝ}q~Û“7ÝSéà&Þ#=HK8N¥V©!‘„o>úý«•…Ù®‰ö8Õh©©Ìj鉮¸ÕÒcT{œ5BܦÍïÑÖˆ’¸I\*—fáq6¦Nõž|} ()õ³IVŽ•âÆ®çS+nl¼Tu—^ŸH+´½½Cøi\£¡h©M„|:™ëïºâ6TFæúbbŒj׬ÜêÕ£gù×d|?[œ©ýSB6ëµ!Qq£wœ$Æ‘zrzüv@ Ý¿v°$Qq ·”IÇBÓ?îJ·:Nî®+Öf›qûéƒ|²¡õNè‡ñ_~ü÷Ãÿ=Óüœÿ*!GïÐùïýþ”-õÃy³ýÁ÷ããß?8¿^ÿ;·_¿{o.Yz¼kðñ¿ü2þ}øn›Qíß7;ÉÚÉoðœÍ‘ïܾHUÛƒïÆù鱿ým-­½ýMâúÓÖî0O)‰Š›DÏ¢q/ï©­ô ±O—ÖÅRñƉ¦×_,Êv!§dqmó—fFÜ~ýõç¾–m+ÊŸž‚ª7^мUïÚ½ú¹g\Ä™;wyãÉA¦ÔXë–ºœFoK%þûÍß¶¯žŸ/gVþüWÿðáÕǵ‹­ÛW>›ãrå<»rûg“ '~ò»%ÅYNgγ+šÏ¸qIi®@\9¥Utñc%©âpÏ©¬Ý{ÆÅOî­tõÀÆ¥e^·ÓáÉquÓ{z+¥ûnR†q{]Ù«­Ko³ÜÐÁ9RRÎaß#1à;”-ç±¢Á÷c%©ÏŽPêÞ¤”jÖJ–Ê:e#ñ]×î‡BÃw»Ïî__qÀÆX7u#Êž¸mV’.FÜ»´+ò²™ ¾w+y8dÔ"‘¤a%Ée$nóe›sÎ\ìö}0ºätß @ʰ"nœ•›êÞ%‘— "/V^øÞa¬äáxa‹èZf›úðèk%Žˆ)Ïs5MçÂ7lŒqó/“5anޏmˆY¹]Юܦ~Ìñ §`|q“[ò÷}uåË“ J;×Aܰ1VĆ[käÅš–nP ÷w¶4–«yFvʾæsøbÀwXö¥âÝL­¸Y÷ Þ.V$ñ|`RçÖkëõBtô듊¸ÕkK¥ûnR†q“õm¨ýÐÖ•ùnqº½¥ k"Ë3J‡?ÛU· 0ËIœÙ%‹ßØw1hö˜è±u2ìéàþš²\'3Ð~tÛ+•y’ ÞòåõG¾Òigºï eX·§„tß @ÊàÌtˆ`ö™é€Y –1[’ê;` û Û7#-Wjݶ¬4Û¥üUó WF2d€Ù¥÷*•ùBHå=½ßF±hGZjÇ^ÒÖ¦ÞŒ„,¤eÆ­UwŠÙfj&@C÷¬]X$ÿ¡·í-©¨ze*…¸¤¡ýeŽ Êú·ÔqãU»f›ù6t”Ê x§÷AH¸Ñv¬¾t*…¸¤¹Y,ØÜƒ‚¼x+¾“tr{í¢’\Áá.ZÚøq¿#5Oì¬,íxÉnGÉ¢kŸcÓ¨,ñ.iüäáD6Î&™üªå²ŸË?¹%Ä•]ðüªÆ}šŸ¤ÑѶú,¹«Žôñë²ÒœJ\L¯ÔèM¯”%_Ýú@L ÙqU[Ùì4îö¥ä*¨±8°u;¤ J{òäíÑò¾¢—s•ƒž‰»>Q!´ÚO|Cáá¾¶ÝóÇÌKMw¼ÔÝŽÒÈš©MmÁì7…©ÙÜ;G#Œ7ÉäW-ÑZ÷î9ßà8rïÒr›WÜe3ÓP{Ã3ò|_~¼ß´.‹=`Z)¯¯ÌjÏÞuÙÔ—&£JYÔçb’[µî­ÝÇN}Ù3@­XP«¶²Ù©îí‹`É^`Bµ1¦›Ó±`8wãÔHÚ)oBŠä[o¾ß´Ì;¹)!Þ5'ƒ›me³SÝÛÇ^fÒ˜PAmŒéÀf3ÇM4„©ãÑ:ÙçÚÈóne‡·;Ê]ë“?шû¼šäQnh q³¸ã¥®£xŽMmÁØlnÖKt“L~Õ´ûðæÏæŽ Òÿlæ2yzÖv1iÉmÈ™P¥¦}Å©][i¥ñ9épßÕ¶SÇvþv®újµÅf[ÙìT÷öiX˜PA£Žå l£zÁÌ 7J[½›ÞªÜÄ$Vnw¼Ôµcϱ©-x!&ÛF5‰³I&¿ê:¥àÞëAi6R¿v2Š]ðJòVqÌ?a<¹ 9ª”cÁzíÖ+5‚ÒóJ'&Ôlþ±îíc³%} LhZé+0ÝèˆÛIEÍæû£1þùŠÖ”ob¸å99µöo¾¡PøÑö} Æô¶Ždo®Å/µ§Q´ö96YTƒÙ'³ ÛGÔ$Î&™üªk”˜ã·¥b÷¯,ј£Ÿ­•> œuçÔõä6äd±R©Qƒ­×n½R–šæ÷Ïu÷? ‹AÿÕwäáQ~%¡fóuo›-é L¨ 6ÆúÀiA+nÇ•Y589;è`•ò©t\=½ùqóšÊÞ’E˶},g®Ý:’=¶¸ã¥ö4ŠÖ>Ç&‹ƒU §'ß–n’ɯZ¼¼§¶Ò·¸Õ¶ÿ~ËéxÎN¿.‹=`±Rƒ¾²Z»õJYÖ®\T^èu»ÄéɯX±åhW˜&Ôlþ±îíKÉ&TPc}`ƒ´`å{9Ò$LˆÈX n`*@Ü@ÆqSâ°%7€-¸l Ä `K n[q؈À–@ܶâ°%7€-¸l Ä `K n[q؈[F±¡y4¤»-™zfVQ· â–!¨ãÁ?úm4¤}„dÈvjØ3@KÞ&ˆ[& ÑÇ?èÎð Ã6¬ª,Èr9O~ùâ×¶L¥ V¼̽¾Ò¢­WoÉ%$«Eë`Ú¨+º^“>¡\[|ŠóSß—t¶ºËb]Úxέ·:*<…K?y˜a·‰Óx·´£|êý,í RãuÇÆëÊØèһšƒs¤¤œÃ¾GbÀw([:Î;R“T³žþ 8Ô½I™ÔÍlk‡á$Ä©[*t¼X:v6u†‚ý•JÇÅ裠Û3k•ž!¹UëÞÚ}ìÔ—=úît£´Ö½{Î÷0(ŽÜ»ô†\pÅ]6sö®Ëþ ¥•˜šJïýFúwåxq3ê J»k%A#¿é¢]uòA]·FêÒÆsn½é¨È>pãQø‘šäÞ9jTµ–¸MœÆs€¸¥åûŠ'RЊ›¯;6Tg º ¡Í1žÐÛO葤a%ÉÅ&±v´âfTn©¥%§#¥n+9·%Ñ3FA·gÂç›–y'=¥â]sÒ’¯diy ä_Îff?>, ΧR|¦ÔbWÐY‰ò˜¶¾7!ÕÆsn½é¨hIª7ªZË Ü&Nã9@ÜÒNô“VÜ¢o´¥8+7·’ŒŒ„ +>ªYÝo¼­ˆ›QABrÔcJE6ÉëŽYÉ)$Ñ3FÁð I:ÜwµíÔ±¿«,Èj£k¤Ý‡7¯x¾0GpL4UúßJ‡h‰¦Ò ÒAu_Œ¸qºBê´]ê2†ì²ø2Â(•sëMGEl’Û¨j-3p›8çqˤ»ÿKüjŒÑÀð/“o÷ÜqÛó1wÁ¡ùŒŽæLTÜt“œòÔs4R]'›Ô¨~¯’È8ñ×2Ñ3Ú`åÏ (=¯\~¡Ñ5Ö)-Ü{} (É õ[ï-lê¥rIŽ[ì ±m‘”äZå’þ]Ð&&Z çÖ›ŽŠ 1IªÖeºo§ñ n™€4®ßuƒá§^¸µF–•š–nP ÷w¶4–«I#;åoÈsøbÀw8G:öîÓ_ð³§‹•ñs> ÿÆ)جÜÔ3,†:we±Iá–2éXhúÇÝ€ Üê8¹»®xº{¦°¦ùýsÝýFÂbÐõy"”_1ºÆ%æøm©}÷¯,á‹›¶8 ›ŸÞqN,Õø]AéÅ%Òm~ßOï¾-¿þ~IÂÖëbáÜzÓQ‘}p2IØ>¢[¯Ó}›8çqËÔ¿x¼t{4Lÿ’µÚº²"ßí N··taMä³LZí¶«nA¡ü'DÙ%‹ßØw1hð°Ãžî¯)ËuÍnNAÚ³·¶2Oz®s0L´D¼q¢éõ‹²DÈ)Y\ÛüÁ¥éµ+•zÝ.©[<ù+¶í S£k/ï©­ô D§ñZÑg‰‹ïYD¬tÅ••²´5£¬Iþ¹Ã#­¸b±.½7¼õ¦£B…U §_lOëmâ4žÄ-£È¨_¯dè™éÃHB“ £nÄ €§œŠ[Fqà)ⳈÀ–@ܶâ°%7€-¸l Ä `K n[q؈À–Hↀ€€0ëBºµ@‡™w”3{]óÌÞ–`W´þ¬£ó4sÄmÒG6qÞy/7|àKÜMv Ѷâ@Æ’ –/nÒ‡o¶”Ê*·ìæL6̨=€ÌÇHÜ"K&‡{NeíÞëT›‘¾vlku¹Wp¹¥Kêt‡˜ÅýÜ­¬»\Ùϯjü0ºî¢ôÁéÆ%EgÓ6Jï(¦æ·$tùàÆ%¥¹qå”Vm8Ф:Í&žÂ%Ÿ<œl‰aûõ¶ñ­m¡¡)zõÀÆ¥e^·ÓáÉquÓ{—’¼[ˉ›gG‡?(uoR$¥™MÊÞuÙŒLÛÐñb)ÆÙÔ9 ö$/®Šß GMµÖ½{Î÷0(ŽÜ»ô†lgÅ]5~d‡ æö= ?òÊNZÜbZrpNĦPmæÅd>p#Z{ç¨iûµUõ•©©uD±ëÚýPhøn÷ÙýëK,Þ‡¿h`S&l‡²ê tX‘›ÔŬ͈¼ú:É|[ɼMÛiY¥$-WO7(¥.FJµ›ŠÝRK—Þ4jÉfMB6³™Ûc’êMÛ¯­‚/nSóeq›sæb·ï›[\{kQ´š‡”ç×XŒ¦'#RåŠ6³›Ä”„’úÙ²oƬ².ðÅÍb³7hlÆ­Ü.Ä$m4m¢âÆ1%×ò÷}uåË“ JíëtóbZÅ-ÜR&/«šþq7 †·:Nî®+V“j”É~ü¶”pÿÚÁ¶l YþÎ-÷ˆ/ |‡sR"n#;Ýq6½û‚læìƒ“IÂöÓök«X¬\Ñù€þƒ*ÇÔÜúcm½þ@ˆŽ~}ÒÁ<¦Â´Š¥âM¯¿X”í$BNÉâÚæ&^Š—÷ÔVz¢óJ”Òû'^*p'ð¶Ô4‰ÒáÏvÕ-(ÌrgvÉâ7ö]Ô[*T5œœ|[jØ~mƒûkÊrFÂ15Ð~tÛ+•ynåézyý‘¯Òù×zؾ¸= pD0{¸Aܰ%7ˆ¶â°%7€-¸l Ä `K n[qÓʆæýÓLÇÄ L+Ò L˯ªí1{70­@ÜÀ4a:ö n`Z¸iÂtìͤ¸ÍðoB­Û–•f»”ßæ[,2ó¿VH¢Æ‘wå]SÈÊ®ij’)]+å.öŽXÉ qӄ騋·Èæ9't·£œ"3,kÕÍo‡DÝfh™ù&Q#¥½òν…Ÿ¥ÏÕ¥ŸÈm¨èµÐ†¨¸ÅõvZ§°¦cOWÜ$^éŸõâæ0[³iÛ3 Ä휲l[‘f'2+”ÅÛ¹ÄÄ-­SØ Ó±§+n-¹„dµ¨‹7£ Êt“Tœ‚·´ªfa©Wp:ÜE/½u^ÔæIÚÏT\ûÜZñKé^N| gÜ·—7X×¹`U@ÿ£Çе„ºÚÐH J¾:ášQOF¸iBw¼±èн÷éß•wtħîTRŸ=ë þY=.•ŽïPŠleóLÝÏ‹©[+ε‰[º|{YqƒU­,G»92º#FÖêj##”v+UW›v5+n•sÜWVÁüš?´ô>Ië¼6€3µUtÅM:ø´€ÏaJ5âæÑJêq/•R¯ËÇ¢SžN6ÏÔýL±˜ºµâ\»‘¸¥Ë·—‘,ÖÓÍ÷ŽYK¨«ŒP:ê`<épˆ¡0þãÿêý¨Î‘µpÀ”0{FâFÈÎJªû´â–31¼E­¸±O²FOµS÷3ÅbêÖŠsíFâ–.ß^Fn°X–)ůň›þ1²–PW¡ôšƒQloKo²x†ç°¦cÏHÜ$.•KÚsœQ—a£‘‰Ùi4÷ùÇS÷33wÌÜZq®ÝHÜtOµ™§Ã·—©¬NgÌwnœ;bd-Ñ®Ö5ùÎÍeþç(âv›ù3<€Í0{q£wœŸòjL³rº©gX tîÊJNܦîgŠÅÔ­çÚ§(n)÷íeÅ =ó¶”sGŒ¬%ÔÕFF"oKÏš¿RŠ[Åö37†þýã/ãOBwZ7»Èú@Zg˜õèŽ7ޏIô,Š7Ú³·¶2Opè¼é³~¬2?S,¦n­8×>EqK¹o/+n°¤çÁråïÜZÕÕšñ1²–PWë¡´Uù;·yݺ:*nâå#õòuË/µ»çËPZç°Fó: ~~5ëìÎŒ_(üÙð­ ~¡¦ Ó±qÓ Ä L¦câ¦uß­´ïý…`¿`:ö n`ºI÷'<°'¦â°%7€-¸l Ä `K n[qBÚÿ´avÓqÂü¹/HÓqÄ $„鈂¸ âÂtDAÜø˜n-’h)Ö1_rÆ3Óöà ˜>LG”‘÷+BœBnÉ 5¿oé×ÙxgZ1݉ȺåB‚wÞË ø 6*O´1S)ç˜Ïöâ6E'€i: Ó1Q†ÛŒ‡ß\\/‹ƒc—…ažJR(nÒ‡o¶ÈnPȲ›©l¥µÚãÈÇ|©ÂÊ}I   Ä ð1Q¼x#R¼ÑT#wuìN‰Iøõ‹ƒ/níÄ^È¥Ùó&NðmkGßà×a Ç1_ÌuÅzdIÂaŸÄÍ“Ûk•ä ÒYÚøq?ÿZ8-IÂ/aNU n€î(b1\¹‰ÒÊm­<,+Ú£©FîêÔRIûõ‹ÃЏ™Úáˆ[B¾íX;7‚‡},ZÇ|q×¥ëU% ‡}á²µÚO|Cáá¾¶Ýóù×ÂiI~ “p¨q|tG‹Ñwn‘n¡îºÞº(Î]š9i¿~qX7S;ŒJ?º¥>–.<–&äÛŽ­šãFã°Eë˜/îºt½ ²$á°o›’ôרûhêQ·%Iø%LÚ Ä ð1QF+·ÐCßé×å‘\Ü6ñHbì®N=MÚ¯+§cqÓõ!¨k‡…µ)xË«Þ>D'äÛŽá¸ä8ìcÑ:æ‹».]¯‚,I8ìó(IXq3u‰¨Û’$ü&íÐq\LG÷;·+ùòÇq“ê9Žã®Îú±®_?vJŽM(@ôý¥_94«D];,Fâ0– o;6†ãFï°/Jœc>£¾â·?Q‡}º+7ë.ÙÓ$ü&íâø˜Ž(¾÷«Ûeò`^Ô'fŽ»:ëǺ~ýâØ,±3ç@—TGý]òäÌ[î'd‡# ù¶cc8n9ûXâó%!nI8ì ·<'ç¬ý›o(~t§}ßþµpZ’„_Â$œª@ÜÝQÄÂ7ê_$Ôœ¿qÝÕY?V‰óë¥ÛöÕ¿\‘Ÿå"Ä••_ñrýþ¶!ÝwyÆv8“(!ßvl Ç Ça_lÕ1Žù’·$öIÜü¸yÍ%©hÙ¶ÈÛR«.c{ 1¿„É9tÄ’Ö 2ÝQÄ2c¿PàŒê´ØIiwÌ7“À ˜>LGÄ d7¦# â2„ pˆH0Qøá<ÈÒ½³ Óáq؈À–@ܶâ°%7€-¸]Òþ¢LÇ0Ä è²R 2Ó1 qº@Ü@†c:†!n@ˆÈpLÇ0Ä èqŽé†¸Y$U_rÎ n Ã1Ã7‹H“}ôñüq`Æ0ÃüÍ*g :|ñhêʂ,—Cðä—/~mË4U”ôJ“ýÛ'?ñƒVÜRq3ÁsÉ?_ß»æ¹\§3÷¹5ûzÆÍãH%¦c8ÄŠŸ¯!«>¼æƒC}-eÓT×TÄÍ´·Ä- Ÿi6˜núÝõ,©|MÝûš:PV΄ôÄo<êjsLOÜtÝ [”2-Òd÷~ËÖ¿s3í4Vê.ÓûKåãM²×ª¾"9ϲû”“_×8çzÙ¤7!?MžýDˆÀ µ˜Ža‹âÆñákêÞ×Ô2gåÆ7NHŽz¬ë¸Y×­ðTÄ­ø_ü`}åfÚiÚÌ,ªÃeJëåGÑW‡i‰|ðÛÅ`B^§9×Ë$­¸-4X¡ÅZLǰEqãøð5uïkê@Ù¿L¶0·GGÜ8ÆòtvŽF’:9 –*q»5ø˜¬‹›uŸÈc\‡ËáírÒ‚.ùÙ“ü1lš?…âv9þ»µ+üxR‹é¶(n¾¦î}M(Ópk,U5-Ýþ îïli,75Þ¬LáM=Ãbh sW–Eq[¬”: º©¤ÉÞë§ü`]ܬûDã:\¦ô=‡rEÒ?ïO¨YB^§9×Ë$­¸)oEOßûv|üÛ{§+IY—Y<)Åt ëŠËÄ$âø#6qï«bâˆy¨ýÐÖ•ùnqº½¥ k6›×Û³·¶2Op˜8‰Ž;Ü_S–ëLb-'Mö«_‡ù!‘·¥V}"™9\>§¸H&îsVò'!nqã\?w¿ûú‚Q0Ã7`Dº?™àa:€!n[q؈À–@ܶâ°%7€-¸l Ä `K n[qØ#qKÕÏ» -pÄmôñü0uqKÉžH`ÿ%ž*8âö퓟øA+n4tqÏÚ…EòæÙB¶·¤¢ê~í7À4Á7Ó_åkÅ­£TÞÏÿÞ!qdàFÛ±úR~í7À4Á]¹ýÌZqËWʉú^`nžÜ^»¨$Wp¸‹–6~Ü?çAÆážSY»÷zÔïLøÚ±­Õå^Á!ä–.©?ÒštIóàtã’"Ob®aØcŽñ8(‰÷( #à~çö„´â¶Vu3—[µî­ÝÇN}Ù30©rárRí'¾‡¡ðp_ÛîùcJâÙÑáŠCÝ›ä ¤YÍ:^,:›:CÁþd¿œÅïEürŽì¤ÓœÃ¾GáG¾CÙq Fˆ3Z©‘¸qŒ«Ù²w]öÍݲ2ޏùG¿å­¸…Ï7-óN.¨ñ®9qǹMѽ¿ÆºöS³uD|+E\jRƒ’ÿt$é¶’´-Ò¶ÆíqóÄÙ×sŒ«Ùº \f qëþ?è¾-•4ªïjÛ©c;;Wu¼Z÷(zÐ7QÏe§›Ä> stream xœì‰W×ûÿÿ¥ßs’œIË1pd9‚ËQ¡¸pD±®UÁ¥î•ªmÅm)Z­»~Ûb)Ú¢Ò*µ¸ JEEQ„ QDä7K2™dæN&! >¯sܹóÌ{ßw{23Éô÷#‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚„˜æK‡¶.ž=9†ÒŒ±‰Óç|œ³}ßápj¼Ñ‰ÐSÑñ3æ­Ùu¢¢“¦Ã]4AAq‚þ{™NŽp—k¼‘ÚÞø0ÛAAñä8ãoä\ø¯ÉbµY-mõ5g¾8>ÜåoÄ~Ý×ÛÙôàú©¹ÜõÃEá-˜z†‚ ‚Œ5ñœgXC¾g*ëˆùxãÅýN3õ”9eá¦ÂËtëåC›¥˜)½Éœ¶rïùV÷)µg ï§¹/áÅ&§-ÛqôZ·wn4mû¯ä¹óR&Qìæo&¶R ÿzUŠ~4ƒõô¨_UV“¦›9ÏÐËI¦{+‹òs¤š£ †è¸™Ù›¾¿Ð@ûdòìÏCÛÏŠ‹¦ô1 ss¾½Ðä]ŒÎ«'?_9'i’QGMJÌX‘w²¢Ó7ŸêôË]Ò$µ‚ ‚ HÐüH±NÌZŸèçßo6Ø$."çù÷ }c¦žó9=·e󻃳g(ûØï­âÜjöLï¥ïÍäœÀßÅe®Šg3‰»%ï‹kDÛ¬ÍoœÊ`31x2¡mL¾%H;Ñéå¦úè—õ¹ è¾?VR’ +ÙêÈæì¯aAA†~vt‘ÈW1~´á›ç«Z½®bP>G‰—{óÑÑOº¬¶î†+Y®”t>Åòäòb.“mÁÙ‹±Y--÷ãö~á•›9ï—›õ­½}®JÑë8?ó;›Û%£ÿ2Cz=á꨼SGÍÿî‘Ǿõ6Ï…'+j›:­6Æ}l¬)ÛÅš%ßõ*̼£×ê;z™ýõ×Ïçï%ͼAóÇÜæü㾋›ª#ÕAAdŒ {jÿü±`M’Ç?˜ž×s Úç©gxÀãƒÕó)ž”.땃³g Î}³~Áô8“A\B“8·ün_Ïv\Ïš­ëteò+·™ÓIà.úÅêÉy#ø^îsæ#q&ÇÄ÷ÁéãœÁ~“÷WˬS®N?z†‚ ‚Œ#4Ý|ãçCÿûlÍGüýeøŽO×I®Ò´EêöЂ_gãSºEþ󈂳¯[&ï‰së•\ ¤é ¬{9÷)·ë—á7}ò ûE~m³ö´?¹óçwÙ:N‡…Í‚™àú¦ËËñëâ4󛓸 HÕéGÏAAp@[Ë9_e2¿i䜙Çbg¦ós©;$ÎA9%PûY\þWQ×ÚÍÞ]¥é'ʹ <Ëæ¾‡r›¦­;ÙQgj-͇®ÿFÇú–imîºoâJò›¿oëx_<Á‰¹žß䯞1ðºf¨²„‚ ‚ ¡ÅÙÍ ÅàIä SÒÔ+ý–‚ ‚ HHÐÉÁø Ëþv¹½?˜emÆÍ3|°ÄÿÝdRíÊ¢ÙcSØKO*Ù|èÎmÛbsmÒ7¶Oò_‰˜YçÝ+ÒÖ‹Kõ’ï&ë—^°Ò ÅàùÙû^¶B]AA‚ãÚo'öm_“•–bŽ¢t:Êdž:ï“]G®´4Ý}íÐÖ…Ó&Q:½Ñœ:oÕW'*šÇÓ3¤éº¢¼E)Ñ0Ä$ÏÉ-(mPïÒ\?„k‰ß=Qȇ¶må\»OJß½sû·.ý()Ö¨×c“Ó²7ä»p§]œIcÙM g˜M}ÔäŒ5ûJ½ϰãʉ¼å%ÆR:*&!}ÙŽcW:|ÏP¾.•{&Qè"‚ ‚‡­óÅ^0Ô"÷$„ Ï† ‚ ¢AèÅ¢Ÿ¸Y\9>'EÏAADƒ¸%d~^àx<ÃášÿËûxFœIOÅ¥­Ì?SÝ>É@çÆ•˜‘óÍ%zÌO7¶'@ADÛ„Ü3dX^¯9ÏðïÉ0¯¤ÖòòÝÈ»WÝõ§¶¤†Qsõ®šcÈö¤,¨_Ççt‚ ‚|˜„Ü3,Šˆ*â/úx†ôŸFö¢"¢f/ÛùS­÷¥E=eNÉ\97ÅLéuƤ»¯Ø\ÇÒ}ÿžÜ±xº™ÒQ±)Y[WYU\™¾°ÉDšN­O›D²÷Õ8[~Þ˜GQ Ù… N•ŽþÚSç&E€ŠKË=|ï½çÀÖâY)Ѻÿ÷ÿÒaj½ç䯃ù¡Rñì±îø›ê#æM6éL‰Yy%"û¦Ÿ¶Ì‰§tQÉ‹ó/‰ªl¿¼oÙôXƒ!vú²}—í"{¾0zq+ÈvAA&e%·yê‘Åfmù÷È”@=þ¢iLœÚó÷&Kóƒ%…¹ÉR3’g˜ºíôÕúîÁ·#Ž×ֺ߳ ÊõÀÞe 2ËÛ#oíM_Q!ô WœxL¼¶7]ý:†è:ÿÄÁÞÿÁ†!§cËG_ËFÞþ86—=¶¾vŒ ´ÿWš?S°‡Mm¯ŽWm›Àðõk>ýU¾Öý%65{gI«‚gèìY °ó\ëøäÅ?`ø®®h×’é“()!sÓ‘ë}‚½ë»É¦¤E_•‰~´ÑV¶wéÔƒ!fêÒ½ØùÛ/K1éðž2‚ ‚|°à;PÂOU*¾÷o¦têA 膙‘ö|H½¢ÌÐ3DAd4LxÏÿ‹ 0`À€AM˜Àž!C8ÝnAAd{†‚ ‚ H@ gˆ ‚ ‚ð gˆ ‚ ‚ð gˆ ‚ ‚ð gˆ ‚ ‚ð gáùš‚ ‚ ȸ€ža@„»¹AAÆô "ÜÍ… ‚ 2†„Ê3¤;¯È[––eÐQ¦ÉÓçòYèܱ1AÇèQán.AA1$$ž!mûs Ë~ú·©ÛÖÛQw£hç´àò7Ð3DAñ!$žaób`¼¬”*ZjCÓÖ›G¶d¥ÄR`ˆIÉÜ|øF/M‹}3=eNÉ\97ÅLéuƤ»¯ØÔÛÐtß¿'w,žn¦tTlJÖÖãUV¹S€ÎŸ–s°šöIüCúöá- §™zirƪ=§¯7‹3AÏAA OH<ÃÕÀz†•´Œgh=ÏìŠ9VÛe³Ôfâq‡­bkê…&kë~>žÂÄ[³^ìPoc=•Ìú{nµZ{ë‹S˜xòé>ñá¦}7šzmUÛ¸£ò¥þÏz`ÐüÛbµv>©ºðÆ)è"‚ òAÏâzÊü‡®õú»·hœ¦m÷ÎìY‘­*fÊüœüå¾Vì³ÙúÃÊi±zqJsʼn]ËÓâO–2OÏÞzü®L9ÃÝ\‚ ‚ c¾% ÂÝ\‚ ‚ cz†îæBACFé"‚ ‚ ‰ =Ãp{µ‚ ‚ Hè Î3DAAAAAAAAAAAAAAAAAAAÑ:Žp—Âa,¤µl×¢”h_qI"B:RQ}j7¦L %ADûäq«mM3qš®Oó×f³ tlD,У/dÐU[Çi{®Ãª’ÐÍSöÉk)=;壕_ÕÓA”–©¨>µSB®$‚ ‚ ²tÎd×\(ç\Á–™ü:›ÒÈm–s»ftªÉG³ t=CùzZpyödäö‘²¢­–†kØ&ÓQZ¤¢*Ô.ä„\IAAd¡ïP¬/a~ÂÄ-Y°áSæOF³ùÔÌ.dž*×(7ý¢EYº‹Í™îû÷äŽÅÓÍ”ŽŠMÉÚz¼ÊJË\Ë’«p }ûð–…ÓÌF½Î49cÕžÓכřøäé—/$!C…âq%´Þ<²%+%–CLJææÃ7z%USË'®R(š¶m˜Ó)"·M'Ûš`V“3ý§‘36D'Ì^¶ó§ZAdºíÜά$H+î·vÞíHTIl©§Ì)™+禘)½Î˜´`÷ß‹!WAA4}‚s²zikã.´tg3ÿ–öÐÖEÜ…š#Þ«ytÁͦ^¯iœÇz*™]÷÷ÜjµöÖ§0ñäÓ¾×»d³U8p={³[Wðo‹ÕÚù¤ê¦™è}òTSHR†ÒzUíH<“s¬¶Ëf©=ÍÄã[ýH*‰J¡hú@âS‚ ÊØ, ×Ö±R̪P“sYî÷—jÛ{mÝ×7²G-y§wï£\µëëâk'õ IµójG²J¼ñÔ MÖÖý|<…‰·æÚqÇX+‰ ‚ Ã¥{]âÀ'Ò´mçæÓ;™¿3Zhºu6ÙÔ÷5·L/íóö +Ež‰²ÓÅ?ÁxÎõÈâ#.·]ÒRI³U80uäâK¯UÕ6X|20ù-˜´¤ ¥%§lçJxÍU îìÛýH*‰J¡è‹Æ*ÒY€Ê­v‹©6gÚÊíÊæ77Kj§Þ3·£‚J¼q ÍÐÁǫٸMÏ6‡¾_Âè•ôéü0`À€C¤ér(¤LžÅqϲW Íuìý$‘‰®àÍOI«³ÂÍc¯Û‘Ü2MIÏÐí'>™¢sí5Í\¹çRŸ @ g RÁ¤ç"e¨¦„½.¤Wçí—’$•D¥PUŒÝEâíx&bm¯=·šÍ*¹œö›3]ulû’Ù‰1”ÎmÃüçwQ’ÚéT{†*UâmÜ.i|¬•DAHgL=Cþ›&ì2JUò)5ÑòW¥)Ò½;¹eú†¿½=¶6ÕÝý篒5ŒAe@ÏA4Îi£™ÖÐ3 ô mœgøêÍ; *z†¢qpNÍ´†žaРgˆh“à<÷ïÞcPÐ3Ô2~ 3‚˜ÀU 98§fZ7ÏPÇ!G.è"Ú$8Ï0Ü¥Ž$4µøŽr:ÕÈlÂb0­Óc­4Õ‚ê™ÀU 9™Ó7þ·tjŒ€éÞÌ&ßÏÃ](yÆÔ3ÔI§Kã‘‹F:‚ø0n× …1 7ÅOÏÚx Üæû'ßqþp-òinž °OÈt*&>õ£¥› JîZéP7´Å¦;+N|¾2#i’Qgœ””±òó“W;iÿ‡…Ú3|9ôV9H[´riŠàªF[¯X77)Jz*ÚƒùÖÆÈ3T¶×ì¸ ô m2nÏò™‰  Yª7³Þ‹ñlØŸ–çrB>­õdäö‰sî³4Ք̀IÛoЪ<.¿„°Øtß+)f!Ì)¾ÓÜcëi¾SœÃ|h >ù³ÏQCëª#cW€±#¸ªÝHa“okÚ¬¶îæ{å'·¦„¥ðãLpsÚàëë¹L†U¿ÔöÚ_¿êmºûëW3F3Wè8Ï0ìSV ÓÚ¸y†¤k†4Ý÷ïÉ‹§›)›’µõx•Õ=ã‰?¾ÎŸ–s°Ú3Ã鋆è„ÙËvþT+w”ž2§d®œ›b¦ô:cÒ‚ÝWl~Oªô m2nßMæG·Ú¹ñ8I¼K€3¬<ùÙ©“(0Ĥ.Ür¼Ú6ø†M¹›;ð gÓ>…™•!¥ÛUÆMªy/9³šS[³gÄ™ôº¨„9k¾þ±²×}Þ×U?í^<ƒËS³·¾Ïg;n_â M}4m½ydKVJ,[ñ”Ì͇oôºgšî(ݽ0ÉÒKU4mÛ0‡»à擳í¯V±U­ÒóÒ·oY8ÍlÔëL“3Ví9}½YlãšKM‰Y;k÷ž0=¥•Ì«´í4»TÂü:îš>£c7¿—Ö´ùc¶"©5¢Yº&•Ím‰\1¼§t>Qù\*7îÂÚ;å Þ3ôéɲ) M,cLh#5WµÉÜ8ºa“Yã|jí³y¿doμ)±³z.Üùk=)Qa=%U–˜xV Z1´[—p}øžÌBšÁ|¦;`Ê—¾áPíÙiPˆpÒç÷,NŠ3ŸMiž¡š5åZO%3qýž[­ÖÞúâ&ž|ºOlfÚw£©×ÖQµÕò… Ër¿¿TÛÞkën¼¾‘Ýµä‰ø¨©š¬­ûùx o9̾ÃïIÕƒž!¢MÆí÷ ùñÅD¬Ï›noa‡XÂâ]ÑßÝm° ñ)ÝÇ&3)1'ž¶Ûí5Çc˜xÜÑAþØõìêŸÚñ|ÈÚ6ÀÈø3Û†¬Ï휗¸¹û9›Ã:6®û¶º·Çf|·üà§)®lOOaÇr~Mý²®„õC’~|5ž?ü%@šú¬GâÙŠ«í²YjF³?låwõ°n˜é`Mg_gÍ÷Fq4} ñ)-ãÒô n6Ë•ž—SRWðo‹ÕÚù¤ê¦ˆm¢ßëêëâË`ü¦G¶Ø²óêìâýç­ý‡|7cçTŠ>eÓt%WÔõâsÉNéB1ÎERØîa¼!å¨g]p³©—&¥(4±Ô˜ÔFj®j|»@læúÝ…'Ïþu§ÙëQ½¬}gf±{s~«m·öuÖ•¦“ÖSReIéAd¥ UC{§Õ­çCÒ]¤L˜îLßÜi°½n½û9§ê·>“¤t³ë;{ÔÛûíw™Ä»øv‘=Jfj Ѩ©ç ó¸†8çú„øˆd—Øì†kW'·Ë =;óyÛ•->ª†ù¨Kwðñj6nÓ³ýJï÷¤êAÏÑ&ãöŸ‘0yOË+ñ®kô+Áx 7èʹ”.úÎþs~WëJv×wô«ÆyÌ =_Ä^4²uÑܧ¹•Ïy›4vüNþõÚ½ª†~q¶sÙþâÊö—íWãù²’kÁ—ðšk¶©àJ¸ßµ•Ûuŵ«\œ}‘ñ‘«dsvÏxFéÞtV¥øÒkUµ iÙ*¼Ê°U¹Øây•îÜÊÅ?ë¤éc\™wÈ]€šÄíêñò »¹ÍâsÉNéB1TžK¦ušz^*õÏòq±»+MQhb©1©Æ®j}Wö,2{.L1ͱ¦¤W(€É§j||—kdy‰/›¨°ž’*KJ"+­‚ÚW€ÑÄ¥fãu»âÚeã;¶x—ÏœÉÇùGË\G]ïârˆ’=Š‹§ÖPÍšºfh¯K©\¥(±™Mî®]ulû’Ù‰1”Î}8ó_z”4î÷¤êAÏÑ&Áy†A¼g“;L¤Õ:Pû3vEýî³Kü k²¾äìù[Ï&~WkûÇÌ&Ug[ÄÌý_¾lý‚ù·¼ñ{ mAûKÞæñ±ÕI:×°5ÍXµ³ì…8[Ÿ±<ž/ M}| {]‹]¯N´S^»zÄ9T1‡]$Üð¥¯s™¬•îm?ñÉA¥™+÷\òºÿâ]ÇRa^-ányϼ{ˆK\/ûøÊk†²Sº8®æ\ 0­SßùB9zÍP9E¡‰¥Æ¤6»ªq¥ê¬»]~öä7Ÿ¦r×a•P<€·M\ZW)‹·ø²‰ ë)©²¤ô ²RÐ*ˆ¡½œÿ°f})Ý¥0ƒñ¥juÅoÊ΄âM~ø?seØïsÓ.®éÑ: aç@My†;ùG 䯾OVâÍ\ÕͽÌ,C7‘2â¤êAÏÑ&Áy†~¯EH?¦øø³nþSŒtÖrƒîB÷g|“3Þá>ÖÂ^ÈYÇ$.èxÖ±˜‰| r˜÷€³w™uuüs»êÜ™]ܱŸò‰üe·‹"³qy†›½.(]ÕI®^wíúKȦŸ&"= XÎÞÕ’}ÎÝkmª»ûÏ_%y:‰KvÕ« [¤‡+Ì«ôýØ£¸¥VöÊö¢ælvïTés†‹½ž3”U,Ðs)À´ÎƒV»r­g¨ÐIJÙÊ¶ÑØUÍëÔôü&+­ÇUò[âÒª¿f¨¼ž’*+›\V²7§ý—Å`J¥Ì|¢0ƒùLwâM…]ë½2¬ïâÛ¥Þµë_… C8jÊ3ì+šÆÄ©=?±Ø¬–æ7J s“e³o®ä¤8õˆ9¦åß#SH™qRõ gˆh“à<ç]/ ü˜b"O:í÷npéûìÂÃ|ö`Ìïwô^=Ä>¥[höVOç/e$Ww>ÒÙ’À?5½U0HÞxª¸²å~ûóºûg9Ëm|zý©éìXÞ}µ²Ùþ¸¹íÚ_ç¾Z,[åÍ€B@ža÷7lÅc×Zl–ÚclÅ͇\ÞNÏ·ì®I'î[l]âç éιL¥×ÖlÝMÿýÁ}7Ùìùn²ø¼©[O–×4Y¬tÏÓä–qôO¨½ÝÒÃæUš¶ìv_šXÔEZ¸/.e–4}î¯w[zm½-we¿›lX^Ö'ïâ’ægÒ¹H ûÀ´NM­Bë*4±Ô˜ÔFj®j‰+óÿïRU}[wŸ­·éö·ÜÈú‡ß•Ïé¼íN§ÍÚ|« Ê{•œÉZæü^Ûaíëz\qh9‘¸ž’*KJ"+­‚ÚOÚÿ\̺eŸ¾ÑZ×a«ý¯òðg3üÎ` s‹Â®:>ÃÃu:z®Å»>ãÚeÝ­îú¶¶‹{£2TžƒžÖÂîÒ´íÞ™=«3’¢õ@ÅL™Ÿ“ÿãuÿ0m7䤙)Ê'RyRõ gˆh“à<ÃGÏ âѧ3˜S²v쯱‹w‰ëÚ-?å¯ÀþªZTÒüU7jÛíž½ÿ±O›ƒ¡Šß¼``‡vâƒÿ8µiIÚ$fú¤âR²¶}sÃîÎÖ^~*ÿãtö×Ú ÑSÒ?Ù»ÿR«l”7 ž¡tF¢éÎ? rç$²ž2ã¡kâï&ÿ¶3+Ñè;õåd÷øäÌÌvTt\JÚâß–Ô~ϰ¹âÄ®åiq¬JæéÙ[ß•û*!3ïl«œc©0¯²¥-›Ä#£|·…î¸r"oyzB ¥£bÒ—çø»“èÚ‘ægÒ¹|lH0­sûiŸrô9C©¥W­ÉM,5&µ‘‚«ZÞº¥ó¦'šèM“g-ùìD¥ÛW§ïÌI‹£tò-~ÿ×ü5s¸U2iÑ.á»É’D…õ”TYRzY)hÜè®{ruß–¥SãŒ\Ô¤”ÙK?ó;ƒ)Ì- »êÚ;o_ï=ü]»nZ:3Þ “Ùå“¡òô´†oÇ ô mœgø µƒÊ0¯™p?o?‹‰ïHmÕ³.>¨ô©”¡{·³%œÑ’"ݹ˜Ö¹ñ¸W9Dè‹B&pÕBNdÍi÷[\Ã_#Óz†Aƒž!¢M‚ó ÿk¦1¨ !\|gí=ÿ_k¯­·¹ê${÷ÖÔ‡*g1£÷ m]ÿJ*¯!”.ëXœKÍ›…#Ô}šÀU 91§¥î,½ð ·¦¡é÷ï¹á¿ü±F¦5ô ƒ=CD›çV7Ú0¨ ¸ø"ˆÆ‰ˆ9íòé=ó§ÄèÀ“<ÿã/~/oèÓÈ´†žaРgˆh“à<ÃʧV *z†¢qpNÍ´†žaРgˆh“à<Û{1¨ è"ˆÆÁ9m4Óz†AÃ˨òÁ Æ3á^­ëÆ 2lFÏA´ Îi£™ÖÐ3 á¾8„ DêÉawe#.ŒÑ”‚ HHû‰AP=CAA„=CAA„'Tž! 0`À€† Fï"‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ˆ@ØßØ‚ 0`À€A#!Ü/€ 3¨*€  ¨*€  NS€!Ü—-à *€  ¨*€  ¨@?Šà¾^t:ݘÚû%ì GuˆPB*€ Œ›!ŸÁBö@禇ÓaèGÆÒ3T߇'˜gH÷^ýasÖT³QO™g.É;þwS¨röA;ž!MÛ €¡ÀFÓ¡*Ò83ž^Á”k^*Ñ 9BS†Ñg”ëv‚P€4Ø•+å·Ê:ÐS±I³?ÞTp®ÖP©‚fô}@'!TeCßÎÏŒ£¨¸ÌüÛ®îD?Ù†üöQÏ?$¤õâ«¡ž¡B>!œÄg¡›Ï}•VXeóÈGMš¶øó3 ž&£éÿ1‹HHN=JÔ‹0FkŸ‚JRËžW=ÃþÇB!oÓ4mý¦Ê»|¥qðÑ©õV›µ³¾êü¡uSBWR/4äZ?8xà3+z†~`Zm!ä[ÜÓ3±”Lš¡ïh|y‰ü*àSAô Õœ…®=¶HŸ}¢Ž'Úz[k[ ú{úÀ¶qú¤Lžáج} *‘,CËxz†Ö¦‡rÒ¢ À|¾^YpÃF –÷¯K3S:S₼’ÏÂÑý÷wk>Š3ꌓçm>õˆ¦I9’@> ”€¾œ‰Ø¶ƒù¡|O˜Ð,÷ñA©ú‡VÏŒ¥¨øÌÝWéÚ#9³Ìl<ÿŽ}<㎠”µâ»œ£ ú˜ÔÅ»‹ëC¢€,]«Aÿ MŸÑÃê.¶<6fæÎ·zÚÑšÏÌàÌg*rƒÖžÜ4/9J  M7ïÈL0騸´µ?üç·ú1žžaïW0«Ê]©§ŸÀ†é5C&ò¸èó…)Ñz½1qîæÿksÇ`|cÜg“¦›ÏîÎN1bR³wŸm&Ì 1mLÅéV€XfÓva Ì,M±‚ð eÇ©ú ÊfNšëN§¼Fˆ7•¯è†Ü3ì½–ŸJå–4ˉ¦Ûø乨ƒ½¬™ìÊEšçiºóÏo>I3õ1³Öx’’«AõÚ'ß $¤*ÑtÍ,H©ÕzL’›jFë  Œ›gHÍÜv¶ª¡Ój³õ6UóêKXýÛý«µãþo«ÚcáÓ­?L‚Õ%5-½¶ÞÆkÿ‹‚õ-¤œG‰è^ ÝPðáœ2Ž•×4tú\^V¨~Ü÷7›ºûÚo.˜¸ªÕjm¹ÊÄO²úx–T‚PT>³ôÙº›îþž?k” •¡[€±œ¨/a?)•`M§»w®C‰B9™ŠvüQ×iUªë ¬»ð°Ójí|p~-ø­~@Œ§gHÓ猆CVV1Û/1†S6ZÖ3¤ò.Üc*eíxpvPgǺ`ãã*Ô]¶ÝéîƒUØÉÚwý`Š+Ë‹ÒA(@ì>3ƒeåµçV‚ßÌÇ€¦odóqÙÞ.;Ü‚`L=Cñ÷ÙìÜi€OÎÕºõ1ìê”5(È{ÐÓó ™áhún6Äœì MÇÂ3”§ê+(›9i®S8òá³9n× ›ÛmÞq©‹'ò›µõþ…%0é¿Étr ætrãHvå"ÍóÝߘ`Ù/w›{m–ú¿|’’«AýÚGjP²*unêGwΖ¥PÓ/iÊÑ;‚a¹›LÓ  –EO¸`g†}±'½`…šœƒ@½–4H³0Ýàq4ì ÙÐ=7NìüdΔ}têÂÍ?üm‘™²|ªÿ€«&óXˆ dõt õ)ÀžÒ›š,~ë5*ϰ~˜+ùx¥fqWxè«1îòèêÓ!ö*­PN¦".ô‰…bªó«çðb¿ÕˆqþöÁÓ!“iéú0¥²_nÆf"ÕžJ1aÒXl|<Ã~rÝňÛýÑ'PÒ×w6™úºcL‹Ìs†„ÁîS©â!¸gh ø¸lo—nA0vÏúŒqŸÍu^úü °AÖL€þç«ùfƒÁ<O%Ý´S§û¼‰®Üãzò°jT.bž¡ì8U_AÙÌIsÂé”ןÍqó )€]ÞBˆû@j{/]k†”g|\vå"Íó›~ õóíj=CÕk©AIȪÄ|¬Ž‚M¼óÜ» ¦=öº;Ï3zg€g<=CúîÉíÏœep×W/XŠ=²ù¸ÀÀ ×ë9k€±zJ_½{€ú}Èp!Líôkl먻vò#0ÿÎo*T_8D6NÒG0 E×å¯[”6Yoœ¾r_¹ïçn1£é5Iâ~‡¾ŸI5\9ïMɕ쇩Êx˜RË•_¡AÅ—\HB1“ŒX¿Õˆqö éö0þX +[¼F7iêyŸ—2nž!©î¤v§[Ó~øàä¿i4 ø vŸö"u]ÏðÀb>.ÛÛe‡[Œé5C›·g(ÞôÑGpƒ}̤н'b û.MpOv×~°4åås†âñ«²‚²‡“:ŒÂé”ש=©‚¡õ Ûέ¥¨Ü³Í^Mï*§µ³®l˜/ð›ÏRÀ\+x‰2+ižk*TŠ ~í zðQéá\˜U˺  £‰–ñ Gï  Œ›gÈ|pþúZ]sWo{Û½NÜKÏxD;°‘o(—kñ°x†ÒϬðþnaÐt³ð±N¡úâ³Hã$}’PîClÍU‡–)”3è>À¬Y±àuŸ öW˜Æy@ýNÓ¿Q0ï™r9}”$Ô€¹]ÊÕWÉx{†´í#•îPýáy†„º“Úýr"L« m¿OuOÆ´x£þ†¾g°3õ;ÌvÑüšá•DHºÏÇI½]:Ü‚`L=C…MïKjEë•s(Ÿ SγßYˆv=yèõÜZ„Ð3§“*ÈLž­žô*¿sÂéd×Rþ>ýSLÈŸ3ì¼°)J·ôÇ'²ÏvðíÅDæuË»H>+©çoÓ5ÀÖ>Rƒ’U‰÷ìÓ9ºod·»,½›rôÎÏxz†ø·©×fëmþïÂÑâ^ ¹çtöõu>8Ÿ †/ºøôÞÃq°ö—º¬¶Þö‡×ΛFÊy”¨½tü$ >íc"×(¥ËS>=t¡ª¾³×fíj¨üi˜Šøt…ê Ç’/ºñ¸“Il¹ûƒpon4 H¡Ë(Èn§t,ªŒ»ôݹ ° ÇýÐ…Ê% Õ¹Së/(Ï”(Ûîtë60°OpЖ¢Œ‡Cô8™,A(@ì .vz¾eÙµÛ áßש•º§íqå¹|ÆýÙßægI‡[}&\žagžVývŸÕçþ¹• Ï“ ÏúÁ'`<È_Š?y8šò‘gHªàY æœcú3Gÿw~åw®S8ìAÊß§¤€z„ÓY.o…ùGj½ïôuÖ_^ :ö/Ý»t…eW.RÏïþÚË‹kZ¬6K}ÅŒ”\•gÈÚ§²AdUâ¹d†»`ûÁŸ¦½3 (0vž¡&ÅZž¿tZ¬ô1S2·žº/Çõ½*cBæŽâ&Ñ÷z*n[˜Ë숟“û]Y£`Ú¢ªT u,îfV¨šøVÁ¬éïŸ/i¦À<'çë î/‘«/Kò eõñt‚P ekÒ&tÆÉé9…WûF¯€”Ÿt°ÎûAJºgè~âKõ{5û k€ JЦŸm›7™ÒQæ´µ?ü+<‡IÊ6 Ð3 »g(Ûî—a‘péYžnfÅØ/Hƒ½¹ ;Ù¨uݦ_>›Ïw]ñw“Öî8+Ûû÷ I½]:ÜÂåJg~ia|6Ùonî\”m0D§,Úù«tŠ“BÓí{ °É}%JüäáhÊ?Fž!©‚ô³·ÌK4éõÑ) óŠûëN'¿†ò÷éŸ) qþ½™ß‰~Ï QS2·œâ~ÊÆ¶ à”§ádW.rÏï(ûߊY“(}Ìì §êBRr5"¸ö©jPY•\Y=Y°UÈY2ÕŒÖÀŸûÖ¸Ã+-4}`W3Œ8B*€  T@Í\Â5", üOKoISF¹xÑW¦@þ˜ÿê#ï ‘6 ¨*€  ¨*€  |p~Ø ¨*€  ¨*€ 8QN@PT@PTÀ‰"p ô÷÷‡»¡A§Ów vT@PT@œ(‚Ì5Ç£ð²F‘Ceø=CŸ¯Šö¼«>¸ff¬^;sÍ¡;é‘«€½¦ä›ÜŒx£Þ7{ÙÅEUu¶ÿù]nF‚QgL^úõåwꇢ€½¦xïªô8ŠIŸµtçO5âcä”ѾrýœG¾M}FÀ|å|´«€|O&§ûò¾b:ˆëKRFc &156ré ³'SÔäìÂGn«ž`(e.”F«rÿw ‹æèÑXðèð÷¦©øó¬)Ñz*.}ÃñZ/ˆNÝ${²{ F^_ϰ`÷HHj¼gl>LÏP~GåTH;Û8àp 4žMƒé·ý¤G®S>=ògmÛó!‡ã•åîÉ©z˵c¸4–Ýé~?lo(/Lw¥0 $ç,­j´¾~ÇÔÿÙ¥!î×e"E™>OêíbÚ—@áå|4ª©'“Ò¥ÔdÁÔ2â\!RF[ ¨iÖ@&º£_¶¼jÚ p”3:e‚µm^ù…Kâh• ߎ¡[¸µÕ$7ü[?†èïn[^±“ä킨´»~Ž ¯NÝ${5IÏðšrÞzåÉDšN­O›D²÷Õ8[~ÞÈø¦TBvaƒpЛê#æM6éL‰Yy%î£$žªŒoÙZ¼#+%Z P†®Òü%ScôzSò‚¼s}©í—ò³“£tÔä¹[~jBÏPàÀza|³t•Êé‘«€76€8>Ö;RÊX|8 xó¯2‘¢€´Ï“ÚTÄûs¦„ýå£MHíEJ—ðl-L½0Lš+¼”Ñ”*š5°‰.€»<ÈŒ…IÌ¿‘«©æ›§6xAÅ,²í(,šŽ;G6ÎKŽ6èc§/ßWÖíÞ/¿ø:ƒ·­Íˆ7écÓ··óIÚP€HPÃß9 Ñ³ÕºÛÊÇjIÿS7É^GDRÆÛ3¼OAæ wžLdòÉûôÇÀýUi ?Õ?w¼³×0ñbÞàÝi3¬¿Ôhû~¸¯æ@4lµË–JÁÌðÕÍŽAá*¦|ŒùW›ìÃï/Û.gu™O* `ý_­ƒÇ`ky.|˜žaZ¼QgˆJH_ùeQÍ;}€è£p«p·ˆ”¹ xѶ’nòÑ€Šó»³Múèä¬g„Îÿá( 0âh­XéwøM’2‘¢€t˜“ÚÔC÷*ȵùÍG› Ú‹”îCÏ—ºÔóìí%ùéÑ[M)à¿YœèìinÛÃÝxmX±Å’›¶aWÀg´J‘kGÏ¢¹‚©[mÈñþMÃ÷5%ÒâûæP¬.k`Ò‡,Õ'æñ‰aW@™`†¿Ó9à™g« SùXˆ rê&Ù“Ü1$e¼<ÃÖ8˜jò"néž‹ã±|ŒfežœŸäøäà׬ZlG(ÃSã›ùØv€ žôÒÐ3tá~ÞQSœ«‹Úëú2‘à­g÷[J9=â`°–.ƒì2w律^²¿ÊòÚáxm©*ŒE-|ú‡£ëA2ý’ îE¤L¤( æ¤6u3RCýòÞ>ÚT€Ô^¤t/SKù–—›}•Ñ”þšUÉF>ýá· ã †ø…uÎþ½:]~¿³®`ÿäa½Ë4¼ HG«¬o’hÑÜPPq¿öšH‹ï€ß%ùkªH |ø³4-€ØÕÝCÇPwU¡9"DõS7ÉÞ…Ä=CRFìÚ¦B\«ç,>RÜ``ÐëõÜ£Ì2*›‰ð[ñ¦@4†>\ÏÐÅ}á#Ï\ÂG!Rz¤+ð¾áôBÈ*Ý&™çûQhûpðì¶7”-†ør~“¤L¤( æ¤6uÑ·Òœ"Å3$µ)]̯q)¥¢ÇÑ}wK”Ñ”~šUÑÆÏ±o‹caYwñË–7oZ¾8Îï »>£UŠ´Å‹¦³ùBá–¥‰zÓ¬Üïo»îÄ‘_ïÔEØP&àáÏ3Rÿã¶Ì$“Î89+ï÷+¹ÊÇjD•S7ÉÞ›û)#ò 3zà6Wïψ]>¢™WCû/ƒx“ù|tÑ“|þƒ÷ ¸nÜô}|âåôˆVàUåÞdÝŠ‹Wb¥Nüø3ˆfó±Goì•v’2‘¢€t˜“Ú”çï8ØóJU>ÚT€Ô^¤t1: â½Re4¥€r³*Û({; R+ØÕ)Æõäáÿä¡S+ xF«I¿õZ4ݼ·?9 °šß -¾yâš¡š~âE]*ÌéU>VK"øŸºIöÞxÜ""e<žáÛÐ]LÔ{†oœ ›Ë[_;F†Úÿ+͟ɧ/¸6èñ If^ ­¢ âÍ×û °©¢ýZMÛ•  ¾Ì>h©Ƭ½¥÷:†GCÖÇeÛ °Áí°_¹:×øÒáxÙx. ¦ ó!=r°”®¥¢·•Û%;î¤Åì.’GC¶ûCõ£@Ú·e»™¾1ü¢£¦(’¯»v”‰_N”ëí öm`¾ª2*@êÉ„tÒ,ç›.§Œ¶ 4«WEœèXÚÖ‚é­ÌûÉC–p)@­ÒÖôMñ^4gæ—Öv :FÞÚÏp…Ë„°ø¾9h‚5eöw#CÝwNhër õÃ_l™^ø÷3ûÛ‘·/;k~YÎXû96¼":u“ìIîeÏpd@‰§lxYïêŠv-™>‰Ò™27¹îúæ°ýð²“ί™8O5eðÞì/ûra¢QGÅÏ7ùÃñ m7o]`CLJæ§þ²zö¼«ú~õŒ.fÆêƒÕé‘«€ôªˆûûxŽÚcëÓÍ)iÁö"Ñ=³EwßÐG%¦¯üêÌO'WFû /‘z»óV",“üÎ)­*@êÉòé*=CYe4¦€|³ªkzRúÀ~ì*.zò'\ F«Ïú%í·>‹¦õúá lŸHœ»ñhPoùÅ×é¼q 'ÝLéc?ÚVÒÁ'i¬xtø‹mz.ï[šLŸžóÍÅV§ßcÃ+B S7Éžä¨QFð ™OO<Écè+ìï2Œš ã*€  ¨*q „|ÑŒ8ÆAò–÷%;ÂRž°€Ý@PT@P'Š@ð Á¸üŒìßLL° ¨*€  ¨*àDÜž! 0`À€ |·fPT@PT@œ(ánò‡*€  ¨*€  ¨€EµgHú…„ÑXúØ;®‘•hÔ‘‰J° ¨*€  ¨*àDd<ÃÂo~ªA…«æÊ0hÏð €â¾·ªO ‘Û ~â©úàš™±z}ìÌ5‡î8ü¥G®öš’or3âzSÜìe_?ý˜¬2$û‰§€½¦xïªô8ŠIŸµtçO5¢·¤Iz Kä*àÓÖ^/jÿó»ÜŒ£Î˜¼ôëË=>ö>ùhSÀǸS•œ2S`4”KT˜Í¿%ù‘Ûªg DÙ…KÒhCê·-Ü h¬ø‡4z#ßOH²kWÅ ÍgTš=]/JvÈ.WÍaО!%zËz†>aÚýlã€Ã1Ðx6 ¦ßö“¹ LùôÈŸµmχŽW–»'§Bê->¤ É~â)œ{°´ªÑúúÝûaû³KCÜâ£"Å/ ˜ö%Pè~ßÕpi,)ºÓ10̾P´¼ÐëåP‘¢@Àc\ Am)0š Ê¥åÞ’<Ô´à(g4tÊkÛ¼ò —Ê£UŒ|páV@[}@¤ Ð B?!É®Q'4â PM:Ù%‹pM9Üõ9Gí©s“¢ @Å¥å¾÷^0±_ÊÏNŽÒQ“çŠ_;â¸sdã¼ähƒ>vúò}eÝÒ Ë®Òü%ScôzSò‚¼sî_a'ˆÏÙçÃ2ó·é§-sâ)]TòâüK ÁÈ¥U…F» H«Æ-ß×AV*§G®ÞØâø˜ºû‰§€7/|Ò#Å/ ÷çL ÿº7zçBêC¢i¤(èWcCRFS Œ¦‚²é±®·$¿àß’JR†d?ñq ´V,‡ô;âÄHñ‹£{äÚ„­€Šó»³Múèä¬g½m#E@Ǹ’ IM)0š ʦ{¿%¹aÄKnÚ†]ÙÑ*FÎ3ô¬³² ñ»ÓfX©Ñþöýp_ÍhØêº¦òæP¬.k`Ò‡,Õ'æñ‰aW`TÈM€N}ÉGvmŠ <¡±xO€þÓ]­q0Uöp«ðnîí<é¥B/ÝPPq¿ö^E2–O=;çܬ|"’g(:ûy€Ï”3Q‰6»A8†ŸwÔçê¢ööó €·žÝo(åôˆW€ÁZº ²Ë|\@‰2$û‰ª€ë ý’ þé>GG¾#e1Ô/¢û3Ë쯲¼v8^[ª c`Q‹Ø:ÂP=ÆÅlHÊhJÑTP>]ô–äþ½:]~¿³®`ÿäa½Ë4¼ F«o’h•]ˆW¸Ì³õ ‡íø]’¿¦ú@`È.Ê}I*»6EPžÐ¤ ¿t—@Á6â„W*7±"-1Úà~vQÏ'DÂyzió…Â-K3õ¦Y¹ßßvH3ôéÏžM‰Hž¡øì&åLT¢Ín8÷‡.áƒ)=Òxßpz!du’öß÷ù(µŸÀ °¤”-†ørqb„ùEjè[i âæãð3ÏV#À,ñÞÈTÀÿC²!)£)FSA?Ǿ-Ž…e ÜUÄ/[Þ¼iùà8¿'ì ÈŽV1Ò~ëµpË-Ä&ƒ^¯çVGWÞ«¹‹°+ÊK€ß¾ä#»6EPžÐ¤ Ÿt—À-Â`&PÜÛÖtØ_¿u°µvˆ¯ ^ôäs^ÒKßÛŸœX-Íä’NDò Eg¿°]9•h³Î#×탛¾ü£œÑ ¼ªÜ›¬[QbQ0ñ(C²Ÿè Ø}®ÒG¦_¤Äßq°ç•WJ¥D7\˜‰t¶xod*àŒ‹!ٔє£© ò±·Ó µ‚]*b\OðO:µ¢€ïh#é·^ë¬ñBìÜ û\]ÞD¹fèwTӗIJkSå M:*§ó(¸.Þæ€îš`¿àÄczx„q¥›®~#ôÆ×û °©¢í•ÃñªíÊÏs†3óKk»#oí §]7s½3$y†¤Ÿ3tŸ½b¾~­2…¸S«Ý@ ³ö–Þëq Y—m7À÷Ø`¿pt®ñ¥Ãñ²ñ\LæBzä*`)]KEo+·û¦“”!ÙO<Ò¾-{Ø5È(0ü¢£¦(’¯‹÷F¦_Dƾ ÌW}ï¤Åì¯îr8†º« £!»U¼3RtŒ{Õ‹4”Ñ–£© )¡m-˜Nñ×ʼŸ=]Æ"ñC«Ý`ü@PT@"N¯³§ÀX€"ŒòíxT@PT@P'Š€ž!*€  ¨*€  ¨€Ep{†0`À€ 0ð!Üþi˜APT@PTp¢x7™@PT@PTÀ‰"D g(ý}§ÑY Œ¨*€  ¨*€ 8QÏðÿ›Ÿ£wÀF‘ÃáwGCš-‘Èí¤_fs:ßU\33V¯¹æÐ‡¿ôÈUÀ^SòMnF¼QoŠ›½ì‹â‡„_í^úCJŸx ¸y_1Ä}ƒd¯}äú¹ßšGÁ‹«Öe$EéõQIëöW¼p%‡Wríäká¯Ý•ò´×ï]•G1ÇÎZºó§¾.–4‰©±‘KT˜Í¿%ù‘Ûªg DÙ…KR‹ˆQìÿJ‹f@h¬x wøÑô§³ýÏïr3Œ:còÒ¯/»~û/ü"È•Š”®r±#œ‰èx‰P°{$$5 Þ…S,z†bˆj°?l~¶qÀáh<›ÓoûI\¦|zäÏÚ¶çCÇ+ËÝ“S!õ–ŒQû(|£œ>a¨É‚©eâ~B²ˆ}^RSRoÿÕY¥Oè7Ǻ¾4 Œ®_ Ö‚2µ#ÔBUÏ'䙜{°´ªÑúúÝûaû³KCÜ|ºð@šÄÔØÈ¥åÞ’<Ô´à(g4tÊkÛ¼ò —¤‘"ßÿC·pk«ˆ vøÑô“áÒ XRt§c`˜}sry¡ëÕ“aP*bºÑ¢¦ÊY"»b®é ç­WžL¤éÔú´I”1!{_³åçÌ*!»ÐóÜoªl˜7Ù¤3%få•tº’xª2f¼ekñެ”h=€OœÎÁ[‡ÖfÄ›ô±é[ŠÛû®Òü%ScôzSò‚¼sî_swôמÚ87)ÚT\Zîá{ïýK" Ù±àRÓßò}b¥rzä*à N’øþœ)á_c¯ô ªÀ³µ0õ°Âá±u‘©)©·Çˆ^¥e˜ÌÇ´ €´v¤Zx#Ûó‰yzóB›}@MÅšèb]oI~Á¿%yäj*¤ùæ© ^ښ¢é¸sdã¼ähƒ>vúò}eÝîýò‹¯ì « üâéð£é'½s!õ¡LîáT*Rº¯EMg¨àˆD¸OAæ wžLdòÉûÌçëû«Ò~ªîxg¯aâżÁ»ÓfX©Ñþöýp_ÍhØj—-•‚™á«›ƒÂULOÞŠ‚Õe Ì!C–êó{cþÕ&ûð{Ç˶˙@]æÓ©´Ý—Ÿô¾î¯+J…¬n§j"d,ÈÀ¨‘oÔ¢ÒW~YT3äNŸ ú(Ü*\^&¥G®^´m†¤›¾‰Ý« ×&cì>!èùR—zž½/Eœ"Dö‘¢€l]dkJêíÃ"f^~ÿ~¸¿áb,vͶZP@Z;R-¼íùä<F­Ë!ý¿©ÔT< ‰Îû-É Ë ¶XrÓ6ì ø´ˆ¹Öô,š+˜ºÕÙ†ïßô7\q_S"-¾²+lØP…¨Ã¦ŸäTœßhÒG'gí8Ó趯¤R‘Ò=x/j$÷@Œ‚Kà¡5¦Ú„<…ˆûÀçâ8@,c†Y™'ç§9>9ø5«ۉʰàwIEû§ž-法Y®ºVáeâjˆŒ± €cøyGMq®.j¯ëUÒ€·žÝo(åôˆW€ÁZº ²Ë|{ÿHY õ‹Ìdßô ¨ÀÀacj)¿ôÉûÞö‘¢€L]5%õv§£rS ¸žÉ‰ÙT©¥'-¥µ#ÖB@¾ç+å)¤³ è—\Ðäs†þ+èD'zKrÿ^.¿ßYW°ˆò°Þeª…gMÅ-"kã›$Z4·TÜo£½ziñ•]a5Õäñîð£é'ã@쯲¼v8^[ª c`Q Ÿ^H¥"¥»!,v÷@Œ‚K ˆ`› q­. ±g(&7ôz=÷ì#€ÌÊfâÇ#Äe0Hg;Ÿl=› Å_¬HKŒ6¸ÂÔKE cA÷‡.áƒ)=Òxßpz!duJvô­‡´™$éO_ãRJÝë‹t5‘ÚGŠÒºjJêí7S!«´Þ󜡖ž´”ÖŽT bÏWÌÓsø°½¡l1Ä—ó›ZP@@¹âÊ6~Ž}[ ˸«ˆ_¶¼yÓò%Àq~OØði)ÒÖ/šÎæ …[–f$êM³r¿¿íúÌCZ|eWذ+ Œ´Ã¦ŸÌxæIo˜ÅÇÂ+©T¤t¤ÅÎÅý€”y†ƒ™@=p[¨÷ wÈ>øÂô@±ËG4óêç^eÈ#\3”ÝÜp°¦Ãþú­ƒ=kG@_TÑøXPÍ#×탛¾ü£œÑ ¼ªÜ›¬[Qb‘Ùõwìy¥*}â) “ l) H‡6©¦¤Þ>É÷9C×}-( ­©NÅž¯œ§7ÚR@@¡â~m”½©ì:ãzòp€òЩì„{a,’ÖôZ4ݼ·?9 °šß -¾²+¬6G¶Ã¦ŸTê@tO–ñµfó±ðŠ@*)‡´Ø¹ñ¸b\—os@wM°Wï¾ýq2l.{l}íhÿ¯4&Ÿ¾àÚ Ç7$™yõsï2¼9h‚5eöw#CÝwNÌ—±m®8ñ˜a>r5]ý:F}ùáî£aÖÞÒ{Ã#Ž!ëã²íØà3ìŽÎ5¾t8^6žKƒi¼@H\,¥k©èmåv¹}öm`¾ª2}b*àFÜÛIö‘¢€²Ÿãµ—ÐÛÏQ°ðbC?ûœ!ýä|ãÓµ €Líµ µ£¬çì“’ömÙîAfÞ~ÑQS”É×ùt-(àPq5MLLgh[ ¦Süµ2ï'YÂ¥©Eü·¦÷¢93¿´¶kÐ1òÖÞpZx¤Š´øÊ®°Úê"ˆÝhúÉ´˜ýÕÝCÇPwUa4d»®½†YB©ˆéNùEä¨QFð Gv”xÌñ¬ÞÕíZ2}¥3%dn:rÝõmaûáe)&_3qž>e`> Ý8“n¦ô±m+é©”hÓQY¸jæ$ècS³w–´~ ž¡íæñ­ Œ`ˆIÉüôÀ_VÏžwU߯žÁ8È13V¬vøK\¤×‹„¯ÝJ„e=2‡È¦OHÄ6~íµ¯é¨h‹0 ì—¿^•Gû;«¾¹ì^k´ðŒ™\íäkAjG…¶ÒÝó†>*1}åWghéIKÄŠûµ!§ì7Àaø‹ž<ä —¤ñÛš>‹¦õúá fƒÎ”8wãÑ¡Þò‹¯ì «±>à<ѦŸ8j­OgKZ°½H¸näKEN—_ÔHîeÏùôt@TcHjÞe?ÂÝ Â*€  ¨*q „|ÑŒ8ÆAöíxïJv„¥væšCwþÒ#W{MÉ7¹ñF½)nö²/ŠŠªêlÿó»ÜŒ£Î˜¼ôëË®{òQl¼¤€½¦xïªô8ŠIŸµtçO5ž7±6ž5%ZOÅ¥o8^A}€üK†ò½šdi}@¾½ÈcßɆt”Æ MbjläÒfóoI~ä¶êÙ†ÂQváR€äp¼²Ü=9Ux®s¸4–ÝéfßDZ^(ób gû(t½hâ)œ{°´ªÑúúSÿg—>†¸?øôÖ!ú»Û–W¬ý킨´»®|"E™>Oêí${1šï¤öR3Á*ÛhÝ3TlV?6réG¹·$5í8Ê 2ÁÚ6¯üÂ¥i´J‘oÓÐ-šÚêˆ]º& ¦–)x†²é¿!«ô‰çêF׆kBIH¥ t˜‹QXÄ"\ÓAÎ[¯Ü˜HÓ©õi“(cBö¾gËÏ™6TBv¡ç¸ßTÙ0o²IgJÌÊ+ét%ñWeÌxËÖâY)ÑzR|*è¸sdã¼ähƒ>vúò}eÝÊù«AÝ (H~Ë÷eˆ•Êé‘«€76€8>Ö;R*¿?gJø×½1ñðæ…>Ä/ßlk5¤}žÔ«Iö"" ÚkÂ{†Êͪl#›ëzKò þ-É#WS!Í7Om(ð‚0ŠYdÛTX4\oZ›oÒǦo)nç“´¡B—~¶¦^&vxRz¼ï+Ô'ó1 ˆ S#RiGã*,"îS9è™|ò>ã¦Ü_–ðSýsÇ;{ /æ Þ6ÃúKö·ï‡ûjDÃV»lyÌ _Ýì®bÊ”Á'ÇëlCŽ÷oú®¸¯‘òWƒºA0š¤Åu†¨„ô•_Õ¿A9@ôQ¸U¸_FJ\¼hÛ I7ùh@ÅùÝÙ‰&}trÖŽ3RãîUk¶&ž#ŽÖŠå~‡ßœ ð̳³ “EŠÒ‰ŽÔ«Iö"¡Ú‹4öÅ(ÛhÜ3TnVeÙtï·$7,ƒØbÉMÛ°+à3Z¥ÈõgÏ¢ÐâøæP¬.k`Ò‡,Õ'æñ‰aW@ÙáÜó¥.õü0i¯“<.†EŒì+Ôû.fÁb×Õ„°‹ [#Riæb–­q0Õæ“q±çâ8@,c†Y™'ç§9²åQ0«ÛÉ•Ágs@AÅý6ÚKRþj{7-Žáç5Źº¨½ý|‚à­g÷[J9=â`°–.ƒì2w§ Ìû«,¯Ž×–ªÂXÔâm=RCýòÞ³=ñàá¯Ûƒ~É÷"Ø´b¯e7G\Nt¤^M²w}€Ô^.$c_‚Æ=CåfU¶‘O½%¹¯N—ßï¬+XÄ?yXï2 ¯ÒÑ*kã›$Z4Zwü.É_S}@ŠLõSK‡I{ÅH‚£rS ¸dÙT©‘ˆ“jD(­{¯Úa.Fa9D°M…¸VßÜ|h”ÆM½^Ï—Aæ@e3ñã²eðÝl¾P¸eiF¢Þ4+÷ûÛåüÕ ñ± šûÂG湄ҤôHWà}Ãé…U$ºM2Ï÷£Ð,¯úÖCšø…äPÏ®a{CÙbˆ/wmÔÿ¸-3ɤ3NÎÊûý @.Ÿ) H':R¯&Ù»ˆ”>@h/oîË^RS¶Ñ¸g¨Ü¬Ê6~Ž}[ ˸«ˆ_¶¼yÓò%Àq~OØð­¤­&^4ZÒKÍaW@iõK)&î•Ã3n¦BVi½çÉ=÷CÚáT#Ri½ñ?̽ /n3z Éͯg¸@æùÆ@ìòͼŠíU†I/<»ê%|or`µrþjÐøXPÍ#×탛¾Ùü£œÑ ¼ªÜ›¬[QbñJ¬Ô‰Ÿ`<ÃÙâ½ÇÁžW^öOoìf™äºT˜ÓËG#EéDGêÕ${žˆì¢öòÆ3öÉøÚhÜ3TnVeåco§Aj»:Ÿž<àŸ¹ç’] —Ž¥5"•Öÿ܈÷ràámè®Isóë¾ýq2l.{l}íhÿ¯4&Ÿ¾àÚ Ç7$™yÛ» —)È,otŒ¼µ7U|E –3óKk»¸ä¦ó¯PŸ?)®ñ± À¬½¥÷:†GCÖÇeÛ °Áí°_Í;×øÒáxÙx. ¦ ó!=r°”®¥¢·•KŸ*½“³_¸H Ù­ž]öm`¾êc>ñHû¶ìa× Ó7†_tÔ¥Còu>=½ðïgö·#o_vÖü²œé î§‘¢€ÌDGêí${g$õR{‘ƾ¸¾ÄùAbÉ£-ÍêUì':–¶µ`:Å_+ó~ò%\ F«¬#äµí½h´8¾9h‚5eöw#CÝwNDÆý#e?‡´Ä“Â9 ^lègŸÜ£ŸœÏão|ºvDׂTÚ@‡¹8Ea9àEÙP"s¬ Ïê]]Ñ®%Ó'Q:SBæ¦#×ûøTûáe)&_3qž>epÚ~û<+9J¯™º$¿´K°´^?¼!ÃlЙçn„Û? 3¨*€  ¨*€  Np7ùC@PT@PTÀ‰" gÈ  ¨*€  ¨*àDd<Ãüo~’~/H=£Èá€ð»£ãCäv…_x«>¸ffìÿoïꟚºÒÿßôÌM&Éð2Q¨5YV˘ŠU´_¨oµv°¶«#c]‹TG]­N»t)µFͶº]ªKhv¥bqƒ® -E"…„KòM8ÉÍ}{nnÄšs³ç3÷‡“ç>÷äÜÏyžç<÷æä“)Ù–c½|*¹qð{ÛÕUYM6ûŠš?´Þniò»æ·*å˜L9‹*ß:ÒžØMÇ +¹¥”8æÚ—‚Ô6î´¾çZœk²ØÛN]7 `K™i,Û…,}F#xkÕ}VÏòn (mÀq bztÔä7›ªÉ.É7ZÀÜU—)üÞÖÆMN»%êÅË×ïýÌ«¶o²f_¿°A“2H£H ¤ 2ùË!!]—OÉ€î( %$´|V»›F€UØ€1âÄôè¨ÉOÎï’<}g/ÀÉy¥é36¨–Ô—)Êꎺ»ÇžÍÎý·¿yìÅ4ÕûýÅ štÙ€ÚéqL'S™!öí˜Uc ¤ÅІb®rP’Ô-Ü9³ÕQ`±–TôFîþyG4gµ”T7%w•˜é9±mU±³•ºö´ýœ¸J‘¯ª¨Í¡Ö×’\ÖÙ ò½'v¬*Ë5›ò—n8èy ]¿Pë )uú÷òmC;µåÆe@Šq;)É·˜,&¥ìË ¥H20ÛõPq1(¹ë ÞQÚ\<î……g†43 l-泺3C0DÀ©GGUžß%y’ì’þ®ò:é``RêŨö»0h¦98N}¬¾²ÈfÊwîj½GDt0rв)3Ôcùb’jC }¨š’Ö-Ò÷h†ômp”|6ð˜Ÿõ{£åV¢0{¶¶~3èÍõ6çÂ;~Õöh¨™÷wŒL o1UÚ «p#Àñþñi~nfÂ÷m“S»~=0ˆ/¨ ʉ£ÈÊ™sJœoîkñ kP®= ¼¦-7. ¿ ‹:HñÆZXãñùc[LNø.¹`í "ÇË>¢x¸+¿ûÉAìJËn'/¨"%£0 šªö)¦O3ÊÖb>«}×TmÀqk¤U¹t—d_ ä·*~´Í8a>0Ô¾œ½˜‚Ú@Ÿ4ÓgŽåÀæh” ÍMöœ^E„g %T)ʦÌ0¥åËH7Š¡ “$ Ù¡b\V[´häcq Ÿ”¢næIÖü€ZÕöh¨õˆõÔÚ û¸àp{ßð# Xýz@¿/¤|<âm­ãr'ˆÀ JžX´å†g Š1w T{£à;wæyk y;;e³”Œe!ãÖr7úÄ®tg5ä7÷<˜æùéÝM…†³4Ð)úÓ§™ek1Ÿ¹ë80DHqãš:êrÑ.Éw`"Òx ™y8W¥a®)˜Ö]T›g(èÈE¢A3­Á±༢~ªl@ Œ¢lÊ µ-5ÝP `(0^öÄ–ÊâÌPõ+„² À…ÉdŠ57 • µÕÄÓ#TÛ ÿøß‹M»ÖW–šlËë>îâµë×Ê}A7ú„‡‹•ÈC&7:s¾³¯ƒ«Eô3IG9¸ÜÉy†²Ùwqôe1_Ø—¸ES”“'Ÿî®Zdã¬Å®=翨#b£0jè“=b«èSÌ€²µ˜ÏJ!¿kÌ ôÜxº.ŽPk>Ôøæß"î»;3swÀ)r&ã Ìý>ÏZ(º‚)(-D܈ÿ|Ð!Ÿ¨ðOm¹¡xÚÙXÆml• äó Õ.M2–} p ¨\Ù_¿ÿ…Â@ª! Ù§ºô)c@ÙZÌg¥ßµP›ª "è¹ñtA—ÊÛc£S^|æa€Ì<ŒÐ¯bPXˆdÐL@×à¸Ç€ï S”M™¡>—O=¨aõ£Ã8 ¡Zà®*kK™†>-†·=?=ãÃÁÀ½¹,#òuW§’¹!¦&i¶´ —-PuexЇüwÚ÷[ÍeÜ×ïÏ‹}Qãߨ¿~¬l_PÁòF÷¿GÁ0?=ö“ç]3lK$±?7|ÂóOÏ9à!. rã20ê®·äî¾¢˜Uzί_òMÄæ>ºuÁÖ¯ˆc,ûClíΦ¿ßö‡Â¡'?{ÿ²!j ‰wJFa@èP/@ôif@%Œ#>‹Ýµ®áÏqi¤žAåQ ׃í yW&yC¦püÑsãþT´7ƒ“#Þ'”]#reoÊ%ÒA3­Áqæ¨ ¶xý³áé½§i|o,FAj¢Œ“bÖ‹1nÔ9Âï´©\«#³šíoyÝÒ g+©ÚyâÚ¯Dê?^³ÄÆ¥T×)kCdü«÷\e9&S^źîû‚æØµãÛ* Íœ­t厓^^ýÙ—Žwœzgu‰ÌyKª¶7ÿm,yf¶ûãͯæq\Þ«›öð©äÆe@ùV$þ<ÿå79ì‹Ý±éÐåDâ„1–… Hu„òÃË×—YÀRä¬=ti(©C?Ø+P¬O1}:ÀZ‹ù¬Æ]cõ§¬“2Po¤žÁå#fhx˜ø$šyH)½iÊ)u¾¹ÿó-–YJ ‘ ši Ž‘ÈÔ?šk…Sþïv·e6„EªŽ“’: ùK^Ï0M——3nÔ ѧ§æ¤˜°¾°û× i^¨õ…—Æc€1À` Ž>hŽßŒÕÝñæm iOFÀÌ€1À` 0ŒÆ@„‘€d†`.Ýð9¶>V‚™c€1À` 0Œ#!‘²ƒì`;ØÁv°ƒäÈt~ša0ŒÆc€1À` D ȯÉÿk` 0ŒÆc€1Àˆ0Xf8Æc€1À` 0Œ#A%3l&k~b‹béÇjhÖ}90®h,ˆÔst˲|“)Ù–c½|*¹qð{ÛÕUYM6ûŠš?´Þï|ïëê*K¬œµlý‡—j˳¿·µq“Ón‰Ê—¯ßû™WØdsò»æ·*å˜L9‹*ß:ÒžØgˆ~Ôì\KŽ{±làNë{®Å¹&‹Ý¹íÔu^~v®})h¬a˜c”1€w_j5ùͦj²KòÍ„ÖÃ07DÕeŠÔ[EÀí<òMÊl ‰çqs9äÎ’Ùõ 1¤25—Wì´C‡–Ž<3lø ¬vyÚxþÌðŵA'¨õ…”@IŽ-¢þå`€çƒ_:`iW ¹qX¼ýÄ×ׇOóüÓÑ>©HîtWº–Þ‘@0¶Éä•&§¶<û(«;êî{6½ÏÛß¼ö¿ùVp¹o%w”¶Æ×É5 Y\„y¡l`è Èý¨kôi¬»ç8~žöº Â£lõ3FX÷éÑQ“Ÿœß%yúÎ^€“óJÓglP?,©/S `Þª„zo¾¸A“.P 7WBá,˜kd–„Æ ty$ ¥š:²Ìð*µ¡XAøÞháΙ­Ž‹µ¤ú 7r÷Ï;¢¹¬¥¤ºÉ'\4ÓsbÛªbg+uíiû9q•"WQ#šC­ ®%¹&¬ ‚&)ð½'v¬*Ë5›ò—n8èy ]¿Pî À û{ùÆ‹Úrã2 Å8€”~Y å7T40yö1 Ť /’ï(]LJFa@žƒY»±l`À`ò“8ñÈw»*.S<†43ĺOŽª TMÍ—Ä™añ'}fø@ß&GÉgùY¿7Zn% ³g aë7ƒþÐ\ðWos.¼ãHkH©fÞß12%¼ÅTiƒ¬ÂÇûǧù¹™ ß·‰ô«_h2ƒôåÄQdåÌ9%Î7÷µx…5(Wˆ…‡^Ó–— †ß†E¤X Ð~áƒêR›)·ÌÕð¹`ü˜<ûæCíÀÙK>ÞX k<>lGé ß%¬Ç£0 ?ÏÁ¬ÝX6° àvòÓ @•ðáá>®üB짦¬Ì ±îÓ££*—î’ì«üVŶg@æ­J¨õfrÐLkpœ9–›£± 47=ÚszfœmèwsT@)!Ai ªw4ÐI¥#É ‡ìP1NŠâÌ0Aûcq Ÿ”¢næIÖü€ZY )ÕzÄzjm}Ü p¸½oø‘d-n¬~= Ä ž|ðñˆ·µŽËiœ 3@(y:`Ñ–ž(ÆÜ5PíI… ðH÷è3ž6ÚÝ”kîj˳òÞLë. ƒ ß¹3âò¼‰g2£0 ?ÏÁ¬ÝX6pg5ä7÷<˜æùéÝM…Â]DÇ­ånÒ«Y™bݧGG].Ú%y¢‘ãLDú¯!3⪙e@Å[Õtä"Ñ ™ÖàØp^Q?U6 „~7—@ÛY( $¨rX@CC‡˜Ž83¯{bKeqf(nª²l0Ga2™b·…Ê…ÚjâéªmüïŦ]ë+KM¶åuwñÚõë fð"Ð'<.­D£0¹Ñ˜ó}\-¢ŸIVÉ…–k˳䩠ßçY EWÈÇŽrp¹’ó ó€þ<³vƒÙ@xàÓÝU‹lœµØµçü·uDü…}‰;1ddefˆuŸ׆Zó¡Æ7ÿqßÝ™™»ûN‘3g@æ­J({Máù'ƒçðйqu×[rw_QÎ*íuä^’çBõ¶<ûpüÑsãþTÔ6‚“#Þ'”]#òsxý’o"6ÏðÑ­ .°~EäFa@žƒz¡lÀÙô÷ÛþP8ôägï_6DïYÏDµŒI09] Ý'ivš.†áz°!ïʤ3cȘ·¦îMé ™Öà8sÔ[<ƒþÙðôƒÞÓt½.àßÍõ˜=6€f–ÌÄÜаÐ!¾Ó2Ãðûm*ß«#³šíoyÝÒ g+©ÚyâÚ¯Dê?^³ÄÆ¥T×)kCdü«÷\e9&S^źîû‚æØµãÛ* Íœ­t厓^^ýÙ—Žwœzgu‰ÌyKª¶7ÿm,yf¶ûãͯæq\Þ«›öð©äÆe@ù•ø?ýO[13Y´úÝ–ä?éyö1° SN©óÍýŸÿ(t¶ÿò‡›v €ÅîØtèr"¥¤Ÿì©€y‘làáåƒëË,`)rÖº4¤®£åÒbŒ2Ô»O_còÀ34뽉fdŠÌ[SöšlÐLkpŒD¦þÑ\ë,´˜ò·»m„ˆ(³$ÒusNGfˆ  ™% Ý"HïN= a¡C|-¦#d†Ñ§§fÑX~ƒéBÚ†—j}á¥1À` 0†cà…š†cà·#Auw¼¹@@CFÚ“03` 0ŒÆc€1a$ ™!˜K7|®üÓRÖ‚™c€1À` 0Œ#!‘²ƒì`;ØÁv°ƒäÈt~ša0ŒÆc€1À` D ȯÉÿk` 0ŒÆc€1Àˆ0Xf8Æc€1À` 0Œ#A”*WE½ vŸÚñZI®)·äµ§»ã+!jèG"áã±-xŽ‹÷@Á¢ô›ßÛÚ¸Éi·˜löåë÷~æM®v;Ûst˲|“)Ù–c½âå¼Ò’ÓÏ¿·íP]e‘5ÊÌŠš?´Þ/ýtïëê*K¬œµlý‡—K˜M~×üV墓)gQå[GÚ»ìd˜Í¨-ý `-O¹jŸ¢¦;­ï¹çš,vç¶S×i÷ÄbQ¹ j^`À‚˜5ùͦj²KòÍ„ÖÃ07DÕýÖ  6©£7ñQ Šfa±î‚2aŽ€Iu9$̵/©©¨.L_Ó`DP Êw†r£õ7À&÷À£à\pbÀ½ ŽHw[P1òÙ}gÎì›ÕT£t˜Êꎺ»ÇžÍÎý·¿y쟈-ÿþå`€çƒ_:`iWäùäô3€añö__~<ÍóOGø¤BØ8tWº–Þ‘@0¶ù䕦ø¶G_XÁ徕Ü5Ø_%6û@mfÔg(T3ôô‡Þ€ÜºFŸÆë:œãø!.§“Ìb1¹ˆÐnXÓ££&?9¿Kòô½'ç•¦ÏØ ~XRßËa@ɼžÞÔòè6€ÂÊKžtÙ€ q,Hbr*Hðº Â#6,paúÚC@HˆH™—AÅ€èó@,ÖÐâÙV0y"‘K&ØúLCPai`ÀNJßË·Œì|>¹ÑÀ0.0óËJ(¿¡¢Q$ß5¸˜”²)&erÚ³ Ï W€x›Qpñ|‚N0‹Åäb`^@@¹ `ÁJŽª,ÏËÍÑo ÍMöœ^E„TÙ€ q Ô‚¤LžqîãÊ/ĬSl*XàÂô¨XˆH™Z¤?gÏÊ6Γ·äìñ\²ßΈMȸè™ ¦uÍ JžXžOn´0æ®jO"-ˆÚmá‘îÑg<ÿl´»)ÖÜŸà;wæAœÉ¼tM,Y¤ (mFË®6 h$áƒG¼­u\Nã„¶þÕß,l@_H» ‹ÊE@½`”Û¬ôè¨ËE»$O4r܉Hÿá5dæaâw±Le†zzS¸VîÑCv¨'Å݇Ûû†I¢@4ö$?ý –”Î+ê§Ê$X€#$¡$•ò “8n-w“î› ¸0ýHB¢:`!"efX“æ;ÃÛ‹¡BxZª€Å·UÕ¨½¾ @l*€g-]!W"ÌéÊ Ä€*æ|g_W‹èg’UòÇ«å¤ÔQ.÷@rR UK%ÉSR›! <+Ð@ªHÒ'{¹¤¢øtwÕ"g-ví9ÿ-@ÓÉf±˜\ Ì (·,XéÑIqm¨5j|óo÷Ý™¹»à9“©ÌPOo yôx؇çþ{±i×úÊR“myÝÇ]ñ$É`ŽÂd2ÅR„(âßnP¦HTÙ€ q,H*å™%á û·èƒÉHàBõP°‘23¼[*gxë(Âõ¯ˆþ&5Âëxƒ)µ¾€ÀMóI©C>æŸÏ'7<íl,ã6¶J„œxJFÔàWR|RJœÉìc@ŠäPžh U$¹ âô—Ãï!E:À,“‹yå6€+=:Ú×v9 ¼=ö¼øÌÙyÉ\f¨§7¥t¦ªÀò£üìœÿÖY€ÍäÃ^•9š‘ÈC½3\ˆ#Dð ©*Ï, œ*J¢À¥K?Í‘ú¿É‡ó`³{`"ößä[îZÈ;¬ñßäk¨‘üi|êÿÀrM­Zš@­/püÑsãþT0Ì'G¼-N(»?û Þ¹Á'<ÿdðœ^ü?M9ý `u×[rw_ñ+Nô:òŽ/Þs¡:þ8sί_òMÄ&¥<ºuÁÖ¯ˆ<û@mf”gP¶|y£ûß#èNýäy× ÛFµõM¿í…CO~öþeCÔÛt2€Y,&—Ü/â*šó ‹$XIšnŒb¸lgÈ»2éÌÃ2•êéMuÕwUÐYvÀ}ýþù}g…_÷BŸÃÛžŸÆžñá`àÞ¿Ü–ùÌQlñ úgÃÓzOÓþûÑB ’˜œÄw.Lô„ˆÔ™a$2ÝybûÊ"g+Z¹ýd§üõ³Xÿ<»d烻;Á×£ô˜†ñŽSï¬.±‚)§ÔùæþÏLN¥˜íþxó«y—÷êæ£=âå¼Ò’ÓÏåãRbf+ýO[…fζhõ»->áÿå79ì‹Ý±éÐåDLÈ>0›Á<‘~°–'îÔœ·¤j{ó߯Ré?¼|p}™,EÎÚC—D¹¥ ‹É¥ÑUÝ bêÁJzƒéÀÀ34$7Ï<$xiëÊÇA½©êÑá÷DË´Œ];¾­2Öߥ+wœô ÷=Ûßòþº¥ÎVRµóĵ_ò©4×: -¦üßín!"Êl@„8$19=$è \˜¾Æ ºB=D°=P"4™A¦À` 0ŒÃ1p ù…Vh8~ 0XfafÀ` 0ŒÆc`Œ–F˜0ŒÆc€1À˜#d†ì`;ØÁv°ƒì`9&&&XfÈÀÀÀÀÀÀÀÀ@À2C–200000000°Ì€e† ÑÌðÿ]T#ƒ endstream endobj 53 0 obj 30156 endobj 55 0 obj <> stream xœÕ¼{|Õý?|ÎÌìý6{¿ïìîìnö’Ílv“l6 ÙÉ $wH¸ ZH‘›(BETP$(j++ ÞJ«Omk­ì·Õo½´åkoF[ÖÖb6Ï9³›¼ôû<¯ç¯g“™ùÌ93³ç|Îçòþ|Ιݴas/P‚A@~ÉÚžþýËïü¨[²e“›¬ü£Ñ í­eýË×~ôQÞCO â–¯Ù¶líÔo ½ @Ù½=KÙΟèhþ.zFÉ T°;3_‚ÎÑó€oÅÚM[`?oDçCÏs­é[Òsfwú¾ÕZÛ³µÿ3b ÎO¡s÷ºžµ½ÕNv ¿„¾o~߯M½`:osàúþ ½ýÏœøÇÐyjÓ­¨ ¢?üQ"RŒÏ ’‰%R™\¡T©5´V§7Mf‹Õfw8]ŒÛãe}þ@^0ŽäG ¸XaÖëq3.§Ãn³ZÌ&£A¯ÓÒµJ©Ë¤±ˆ" òá°¥¦í¬U±{<žöhîÜvíù0é§?õ Ý5Ù¿r“ã+çίœ»&Îg Ãp=[S‹|Ô8 ôÃÐ0 ð·@ýLôM¹›ê–®bëV[k–vw£;jYÚ=\ÿ7.×áÙgò¶¦WÍgå D*…®í? ë+¡@õueg UEó‡u‘aÂ_‡·UÃüþnD°µèI¨FµæüØÅ['WtÛ8¥ÏRpX\3,¾×½r˜ïûÝgó/î»õ< wG”KÙ¥= çzPÏÒ_·b.æcÞºW¸‡)ôpagG%îºî},fGÝŠn´gkÑ]ßXŽŠe5m»=íÃ:t¬ÖF†Ð ×_¶“ûê,+Ýøtß¾Ýîá³Û&×z𾽽݂¼¯ŽED«[Uºbá¢ùÙ>å°´{þÎU=¸u«Üûö÷ m½UhƒpiÝ 40=ÿÛUûöÕ-eë–ö,­Î>½f˜Ÿ+ÀÜŽ6¡ƒˆuµí¹¢Ü¨†jºkÛ=Yf7¶´Õà†±=µöì°O”tçJPAÝx¥·`zÀ°{‰{´´±èÒR¼ë-û–” Âãi‡è®æ«w ‹ü4ëÞ÷0 »Ù‘®-éÉ•ˆýô?&ëÙúî}ûêYwý¾î}=çdznšÝw¶±q_]7úÖæ6t×ù±göÛ‡ëom¦»WÀ2Ä{,õ-mi»GÛ>~Ú<~ H!ÁRÝA\@ÿÓrÄe0·ÍãFŒš×ÖnG|jÃô\DgXà–¢1α ó¨·t‚=59ÒãÁÒ¹ÿ<£“áÁÙmÙs7Xlð\G7®¹8^cœ‡kÇk&nïfÑ·<)øXã°40ñ¯¡MúºeÃÐôª{³õÃúš6ÒN´g)ÂNbJAš^1lŽ :Ù‡áuv˜Ž ‹Ú.Ú+ÚÝ´YˆxÔ_Rî°Næ4\vÚ>h?h§ìöH˜‹¤#]‘Õ©Õ¥¸Î˟Уh‰n4ž'¸H¢0Ö Ù˜'üG Ö`2» Ùè)®„ÉJX¬e½b‰âVë¡þP'㜮³(Xæ`uÝ£‹M¦ŒYö4¸\²zê-Jî[’_P'¢¨+wx’‰64J™ª0Dm%ETC4Úë7âž#–Q×! Q ¼ŠÇ^ç·È4ÉÐéð›µ+ï,¢­• §í‚!â”tW僥Ïð2 ÏñDŠáûøûy2Íwñ·óc<ÅñPÃ3¨*Š?áÅÖSùú]¡SŽe}^˜â¼io—÷5ï˜W¤ñÒÞÛ½÷{©~ï ÷/éå:×oXÔ¹èòåÑøåÎ,M~yôr'àFÌ©ôˆ.•þl¤0 Áq¶rŒùʘ—Å~³6!”$â&cî"꺌Ã\ªsØ—4µ³^ŸÜî0qT×:ŒU·Àת)OI~`9ómV§Ùïª&(±,êƒWVnðX¬qíèϼùJ¹œ¨®&D"TA}Ç[«U)Þ¬mö$÷éã£clD)“~DÐ.OôW`~Àóyì}N§Vsš~SK[‰ÓÐ}ÜfêwÑoÁ¥š<&ËëÏ£:éÏ/.'¸Ä$)#ZDÆ&w¼“Ùž‘1ë • ÞyÖ\ˆzé´é§ºàBµÝi Ûv4&‰Ô´\ˆw±N©%ªLê/Ë(d BJÍ›]”l™‰$cÚØ‡dü'B5Çù 2—¨ÌF™XSi9„@i¢¸¶xNñââ`@> è×l õ‡¢K ÿíý«÷ /ÉDú#ŸDÈH$LsG½qI!3 ”´²[I*• ýQ±)ôP8œÿP$~‹×t ñ*Éç*˜ (H¡P=¤|¶œþ|õ¸“þP›JÑ#úüHp ®3­3§FÒˆèĺã‚F¡ïy–L N¸Ð€#ôÈש,SÌÉ„©c–c.H\ å¿:Ôzch”×I‹üykk»WxÜžîrnc(¿ôɻʶÌS5uÆýK[1ŒkAMõføߢڽg*mUp~ÞŠp~ÅüÙá)f³_§.ô°Ëê¶=ì2e^\µ«¥,Za4°&c)â¥jì¯Ä#"°VÞ.rktI ©PR¡ U’»ä›Í|'iÒh6)fÀáàeª¤TEï’Kû%ƒBÂu&£q.¢Å6ƒÈxpé‘T*Á!­ˆøÕ¾–-NhZÑ“• Ĉ$ñHÕ¦¹ßé}â©§ =óG™–æK¬=†ˆÝ¿}q¬&2¯v¾]9‡qºdlر?R+ÉAìæ—Š uÒeP ¶ò2u2x:ôf˜6œ6¾i¢ã§Á›Ð~Dn ½ExvSùÏ1E·Ý_ôx•.ê*(:XôIÑX‘˜+‚TÅ¥‹šPµØ²ËpŠS ¨ˆªà  ª°ê_ÁJ5>~òg#iá÷-â峂ú8Yòq‘B|M¨•™jĖмèÜ™;÷Úmºœ¦é®I¶:í!…êkȇË4èwéLêíÖ”ÙîøÞü¯P§TUõèœÕk¼f#g 8OB§á²/ÿîiˆµº~ì÷”ŒühADyG™¥ØGXŽjh’lÝNð\°)Ø$\;•Ïæ!IîDêVz ,4ˆ³=$$â@"´>kÍŒããFɪ§Ô=µ~Ñ£ÕU3¡ê× ê5—˽¢qæZ¯ÛÆx½Ëgl?ÿ¹âgõͳjk~´õ0ùó_O—U6ΨžrlZ÷ÏOûçäËÉOAtñ^BA…ô!Ÿ‚r“$eG”yÆÍžö½é§õ¦ÓFñÎI"ÈqX gòT»|§Œ:. ñÁ$ˆàˆàÁÐ éR)¤š‚&Ž› $êÊ·[ecB0Édy¼¨´\Br;òíNk“sô_ã&«È§ªE•GÓé&rA¢©Œ5ùt3êGÌæ+²v7g¾˜ a°Lêý³ç¶ 1iû#ù1“JÏÝÉ«©I–†§_¯»¾F??ö?‰°"€v飦€œNšLœ¼/0 <êq à<ÊÑ•w‘¦©HªÝìÎ. …ŠUâÆ]¥¥iòâgf23¹™é™dÝÍŒŠSªggПoÀ|{ó‘öó‘‘”0ÚiĘHg¶KrgVMóج$ ²[âKO€Ádœ`¢À%³`ÝrR%0fÅžü˜kˆÎêT‰«î\Ùw»ÛmmñE¡>¦Ð¦Õ4Ñútiœ«*ŠN™»=‘(Ûš*ofhÞ`2^6¿¦a_§5N«Ÿ:cϺT‡ÏÅ©µ mKTÓ=þ$£5Ìò°e ùs=Ž€øwä?@x€ß Ú Ít{ ÙמšžšSÜ^ß>§}y»¢ætí›utÃìbåóéÀ³è„Õî脤ät±›ÆŠhcÝö¾] \° AÛƒ³õ»ìz‹¬îª=Uü`Å£ÒGBkƒ¤y—,æ–ô-!–ðrU22i›@çv€ s(‹Ù:ÿŸa¶ÿÍ'Мù«°Nü;$#²] …­>gžÜ‚‘[&dŽL”å‡1ßžñŒ[™Rœ®–X§2ìÊ)Ýû\¾d4°<½ýº3êÇ|£+ֻ즄vôe$[ÏUOª`즤zôor²Qêu#o¡ÁF逵Öhq/ŸÆ»lîSfÙG éôdj©ihì @-XË7¸"®¬˜Í Ü „MJMÒwÚÿf€Ve¥Gòéê£2“Á|Úd“0¾“|®^SÏÕ7Õw×SÈ8W ëü–ù-à„Î uôçëñh Æ“"’ÃJ9÷ÃþV›³&Nˆ¯vZ‘¯–WÍâkN-lßà“:œ–vçèÛL™ÙeqYt¼ 6«¥E÷ÌXx÷š`Àíõ®›9}E@²2S‹JW½õ®Ûü£ÚºéA{æ7¾˜B¦…55„X"{)««T«T!Î)ûˆŠæY_~Qyªwú=©²©UÑÑ ö2£•)Gr¯DÞ,C¾Àoù¥¶x$žrlΧº5}qbµb)G8nŽËÛnÒ(’ªªZM¥æ&›-îv*$»k«¸Hmd·Û-)¶•WÖÙ+›ól *7Ûn¨”¥Rå~?;ÑǦ‘Ôº#ñJ¶\nnÀþ0_¦M64L˜§ad4šÇ/‘š¥eåò ƒJ §MȤaù7§´æä€v±"'‰N1~ÝMî¾x‘½xñ"&¥¥iÑèE|°s\ervÜèO TR@µl±Ç8e³ˆ®G…ÙXQ-3™ÉTDÓ¹u~º¨-&ѤR™ÃµsX¦¯-q8f«™sW*e¦Î¶3’Ö1pÍÌV—gAË‚ eΆÊj‘Ü( Ðy;TÝP'wÉLN_iH…ƒ·nv©>ÀUWKÕ2“Ê{[Sl°Lb”­¸>é m]3xj~~‚YüAíEÒ^ e#̲ñ“þOæxIMÄÞ ééüÿ¿îÍ8ÍI!4,nózòdÈ^ÚPÙ5¨Ä2Õí_Æß¶×â´°Ì5¡¡¹˜žæ Š75Q,5Èœ=,D†r)9ƒ½Ôqä¥òÀ >.ƒ6‡‘‰8|L‘P¤qf±ˆè#ãã5„Fc9*£}>Ï`òû º_)±dšBQ*CšJ‡šB]!‘k'ùlþlDº‘Ž•…h"/1ᨮ"Ià»,³ô}ZUYþÄÊ;žŠ%Ë«,„®!›ò²£A@«Ñ¤ƒ:ÌWÛ ¢´:Ûam“ Êdqéá¡8éñ ±zú¤V†'…¸Ý(3£¸½XS ½Èì; `Ÿ+wš‚C@}4žµžhX/d•L¹š‡Ž@m.±’вߖ–W#êñFã®)̼’‡¦·8 ÑŒ$kp-à‡lÍRÛèÝ®¥¢Yû;ÕN›ž”QÔèObu^Êï·úí³§ˆ–pŽZ&Q%|ð$h•™8veì ±Éo ’üárE£bb›‚‰ä ‰× ²)LÞ€+Â¥å e±1Í5Ék”uÆ&®K>G9ÏØÅ­¯Po_/ߦ¸^½•ÙæÞìÙêuÉURÄK2F©PìQÈÝŒ{2íöxw{ ¹ÜØCÊHæÇáØ­¤U´LeUå˶*(Z¥p{d¤ÄÆá!q.Ž@hœG†Ý€§dIÚÁxòTPåq› 8àéO4ëN`C /Žvb4xñõÝÒQÚÓÒ„ s¤ ë;àÄ„0 ƒìd%1J¢OÀ =¢Xî1ÅÛ“:¿¦5óÏÌ?ZoOÒaxÞ3S"rÏæ¿ì†02Ï-Q¹ÍN¯#ï¡*+g¾8U´5Iü×hø=xî$W"BÚa0S6ÍÊÌèkÄOFko¹²Î1ê2©”ÇÜ“¹>†´Â„,˜]ü†áUäÔÕ„Z¢züH´È}h9KÚ‚Õ"1:‚ü}ç舠¸+yYP{UI« Gºƒ±WXœ¨i¬-ome§Ħk\.¶¥¨¾<Ü´ER æœÖ>‚Å|'«ØÆP³w‰§ÛÛï•È€öKH‰„Žv 1¤Z;D¶çr\4h M‚Iš $;˜èæsñk´%§(XKF² .Ôàÿ  ¨ñãÌÏêubþÌO-»ßìÓ-ŒÞoY sÙ þ@£Øó“f^÷šìvüËÖ즢}ß+--Ê´°Åj‰ë‚\ªŠçQ€-U«DÃ3}±å¡Ô–|®hô@ ÒŒ/Ç>–|„úƒ,ÿP“¼IIÐÞ´<­Ä$ïá½s½R¹ нRÖä-—–ËËÓ¥ÓäÕžzß´@›r>Ûêk .B²*rƒ|‹i»Åw½ßâu{‘*ܤ³^v2Íúü7úCH-ü¡›Ä2qÌ ½î••F%sȪ´,®j’Õª:eйªU²UŠmâmŠmªë4´F¥`}2±Ä,ð=‰(¤,¤.|¼?N™±®ˆ5î´HU«º^Eª|u,Œ±<»™%Y+ÒVd2“Y½A «9×(ÎÅÎÿ¤8ëAg=!å!±æÈs3“•G°D7ád$Y«l„nxníÂÌ=™ýmKÞòÉX—µÆNÔÌX-&Ì›7ÂÅ‹aïÔ^‹²sA"(eÔšR‰?ŽÞ•¢j¯<db-O Øäy[fuf å¼ò‹Á7wÖY¼Ò†l¾ê25(V¢H` XÂׄâeñ¢Ò©²6ÙJÙ&ãÖ)Rçi×›  LÎÉ÷ò#“‹W“.—‰îoyžIsé¦twš,Þ©z¶2›tƹdÜsõ«œQÏûzæêk¹7¿6j~%5=˜yX#-º{öÜãeåuÓ«¦œ]X·+æ°:º’ð°ÆŽçœ2wI}v笢ŠÞ<Ä`×66¯Ô™Ô ‰²éµu?Þ¼úâÔšfÖç‡ëtz-UiÖüû—l¡V)†kˆ*[…Õê©,+}låܽ奵õ‡޹‰¢Ú®ø2ki¸´TWQZT1Uצ[¥ÛÄÜP%gÙ’£2/í ÓGhSqÚ}ð-)ç•"öøbA>ØŒÐ*–AZ©Kƒ5tMS ‘Úiz¶z<^ZŸÈÆ\.u’ÍmcÍŸPõ¼qØñ•œŸ‡Mã0Nðí*Óný+Saa,bºÜœ^Úqyy]suúìüª^S©š—¢T6§eº9s§4`sÌ.Þ|?ð­›;uY¦6—"A¼Ñq£¹±®öåëÖ_¨«šiÕªB’›¤Ó3ûË~6¡’k"FÌ´N1[ÜŸ¾5wOyiÍŒÇþI™ #|1g‹:<›ù6ÂshÔ\ÖÝ*9Bìr•ÕCÊDr}0 (ú´VÓ/¿ENÈdHE¨?³zÄZa Èçò!Φó›ò)­€ö"ÖFdÙ¿ çah>É}ÝyM(_V˜¢³å;j Qý¬®­†ö(ü©«C. á|kÓrÇlÎWÃmäqiaå-™wOì(û+ÜùÊ8”#­ô²Ì¡þVî³s­]ŽÂryª(& Q³ ,âòcxÎF<!‹(”I9"¯P%-‡€6ì—Ãf)B©Ôaçi0r Ðõ‰ÄR2ô‰àiý‘xú+3µ(ôD`*qU:ÈÐè"×€…ñ|‘\ó=ÿRÌ8m[œ „J"F‰æ6T©}œMª:Ì{_ôCÑ£Hò÷ó³Äœ5¤çbÏ- Ï-hæ–Ó+M½±-ô6“Ê;ÁÐ>f€!ÆE[)bxÈóñC*}, ÓéÔ8!vžt‰]î“·3´yB†©ájújˆüíú§«±íÀÚÐ9‚bí‘q/(…}DrÕ QŸÄÖ‡"ìd‰ïê\ë×MbÈ8>Ä¢Zf[]V’Ø•ù×Àž/uõ¯^Ü%G¶>Qj–µ+ ,^ýpå”êªÊÊg¶´Ýá’B³Ï³ÞM¬#’¤J©Iú×mk¯à—-ê‚ôÃ'¡qÙÒ¾²Pm†n¹?nœß:ç_wïþd~û²WÑ*ÿ¬p•F£!¦a¼²á†_ ë=f]Á±AÞ¢ “z==¤ÅX>p&‡ˆPVk1ºÝ ÛúqBv.œ?s鞎E\ä×0Á5fV£êW®+ßð€Ùkžc'æ;Ú ^«Êb^Ðâoö±åêÐZ#|(Ó‘Ã俼E´ÒŒ< ÔI”ež/ª§t J,6ÒÏ–¡>fÚÈe¢ÿHÐÄHá‹i ’&ÜÈ(8Їj•Øäª$q~ìw¼4hAŒÏ8,Å‘N<È»E‘ÝÛ_B’ËFgÞDœýŸõJîEß6}ì=Ñ(â` láC¾ /Ÿ(OWu¨V!.r&Ke²“á;Tú×Jß/%Jy•bnÊÔ-—!bò åšr®¼¯œtœðí°Ÿˆéy}³žDQ$Îò óݹE˜UCfæÒ!Øÿ'ž_­:Öx½¶ÅÍM7þ´¶¦ÖÌZgY‰&Ç<ƒ×lõçݲyÝ‘×ͰÛÜD-rë&“ùàŠÑ»¶œ)-ájR©ÃÍdËÔØ­çbù¿¥¶—$ëëS%[*ˆú¾&«#›/Y‡äÌŒ¬M ¬â§‹$ ß$¦ó9é*Í6Ùzÿ^ÍÿC~EÈDSh“bÚlÚc¬ŠàîFx{¯õ^ÎI,A.žŽ7ÅÑpB\Ì–¬wâFRHÇ3a‘ÈDþ#9 `_$19û—[Uä¡Ì_ηwWûšæ±fÇ-+«69%Æte¼¤¢4yrѫĊo;4ÿHŒ„{˜™Q;óÓÙº}s"ên ÊëÊJÖDKŸ¾{ÚÖ‚Ä´ª¼yAÔ÷Ec ¢¢ï|Àë€hMb çåš$ .:jÎ}ŸßJe"‰ßTæ¨ €°;*Ý1~njnå:[?ØAõûúý’ýåÓz³£¼<=P ¢¤¾’­,)/©¬/¯¯l-—”W2J\|(Hu+û•^grH¬Ï?r' *ËÉÒcõx•Öò|5W å' ÕI·2¦ä•ÍJJ‰P¾°æäsŒ”0{Gµè8yáÉvrél ÿ"öhÈæGÖ Ó*ÔW— \õf“‘ÂdË8±…üU4’ùË/»^¨‹4«g[k’EûÖ-w»™î®ª‡§lÝU=¥ì¾ÖÅ÷ò¡félS2?òŽ®[Z[¦¨®è#öǯkzî³òð4øaÇéòzŸÇÓ^6ïpÀ–v”<~`ö­É¢òŠ`m&4û»eu×·-Ü–Ç&œ¶j„©šÈ·‰?‹>GQ[4ó%._¿J~¡z=jr™ßñàœ†ç¢ólžìËïÈqü¢ÐÍt7MÒœ0 ˆLÆÈhä22…hÒ(¾ëL¥ìÎ ×5yf$¢o.†×qe.‡K«lH'[§—C x•9×”‰ž±ç¹]ÕESP×/¬ZŽTè+PSuMFŒ]ä»Ä¢/„ÞµòùN±?¢PCñëê_\¾³fÜóE×;AÜ‹ êl.‰#y'($]dÈ+js=Œ$.FFpJ6‚%a¤‰†61¾”ãk¬è[âÚÝeyÁn§7Ôh°»©XºžOΛ7|C¡(Z½6ªÒ”[fWU1Ÿ M[¿àëEØÂð™Ã,Ì\ð?(#ÅÕVRgÕX+`§FfZ §–Ϫ²TMmœ5ÛÒèΙºpÖKw`U°{j߬þªþêþæmsœ3½÷²l¤K`IIøXZ%“aÀÔXÇæí­‹%ö¦Rl)¶ï-t ÑÒÒʵB®5ÝÚÔJj”{żB“ã Á2ub=AF ¡²Nã30`éè„ã:gо¦4Xœ]Æ•›Êùš3ÏeJŒÂÍHá+-+®HÅ¿Ý]ÏWô…ó Í ³ºeçü}×oYSTc´º¥CzJqaY*ujõ D½7»q~é@¢¸6ó‹Ìa.\‘,l*¸e.¥FÌ/¸aiɪ¼¼ÈÆ£wo°*Õ^©»3ì/Ÿ/ZÃqeÓŠýÁxo„›i¡EÁ¼ÐK.~‚$¡ ÑO…¼^¸•ïÑb2Ÿ!lQmK°‰Hª8^QCÔD¦w/ ­-Þ@ÜP¬§àŽ‚pA:L*+S—v 9Ie’š!µÀ¢í>_¸€4j*™J€JÕ)Ñç õ ã¹)¹Ôæ¿Àþñ 2!é—Ò¦à¸Ñ A„¾¿=1>™·ÙiDÒ²) ÑO37 ¼ºõ“O×ÁŒ>œKiX›Äí÷ñ•Óã…Ñ3VîïÍo`m³l£Ÿ~w÷£;÷zïÉT~%·A°%j™†hð‡‚7.hÙQI›ö¿°§"¥S©!ùß7Þ5zÿY¼¢7œ©%ÿJ~ޏØ:Á |Ä.YÄì²äï ˆ7Ï—îbÁ4z1í¨ “îh4‰§ þ¨›Nò6g2™Ô ´À–Geö÷ÃïO! [4&<•kšq é#}Sv™¬lžÈæ­®d8Œ €E®N†»˜.®+ÝEλE©¬ßåĵN!T “N”wcœŠÀh |¯É[FgÑ ˆý¸zCvÁȤ)x,ËÅþ¡xb¥¢ÇÈ…Ë"p;çüĸ:dgêôÙ4ß$|MÞ,¨L×<³÷ƒ÷N|ÇÅ›mîÆÝ«ÞжÀ¶?ù}—nÝfއ]Ι¡ü»ÝêjåjŒmÏÌÖ΋EÅŽ3×,pùÙ-ó?²,ÐÝа½€+Ú¹cÙ‘Zf×Sáâv·&z óÖ'uênqdEü¦'¥aŸ?O"¥ ”C"H6ïÏóy: ûnÝ?Ê•NUQrã’Y,o·yÖ¯6î+A)x éƒG’†ÐðA.Oð‰–‚•ž¥ËŠ7&Ô”ˆ‚»Jâ%n'fËÙF–b÷PŒÇKb¢˜=Ö/Úë/¡Xw EÖ"Iiètþéí8í|Ó”¥HYN«óKð(– pÅÄq.¶&ŽîgóÑ 4pƒ~@P¦)c„y JuÊ-Úå<£~Ðx!5) ˆu©3Âeu gQFQtÛ ñ´…ôâh'u«U6Ñ$è•Äøíë‘¿>Mâ^<÷Ü™ù¯YOt·Øœ–|çÄjdc»®UÏ:W)ÕÏÂ'æÞèµ´5µ¼Êå×׬‡Äõ3ÿâã“"_ï¯ÒÒr¼êÊȬÔËœ2»MÄWZ]†Ži½™Óå> {ƧÇ>‚?#ß `IÞO“n’ _“i#g$Œ¯i”ºk&4€•³f'4RivޝbœplÚÉ3?óÍ©TóøL9¯´¹Ó_~81çA hå0UA59P^>­R*HĉDÜ$îˆI±R"ƒª{D"R¢âIˆâJB*÷Zæ–È7k°Ãá49v{„IØË™{#ÓL5Û0ÝT·} Ó6@: GB~C à…»Âýa2ìúxôù<÷F£âÐÝ¥Ri9Æ‹¡8€S§Ä+c~ÞOøƒA¿ÌµÄŠЇH²+„ Ú¥ › »  Å:Í^BÙ„‹Uˆ×ƬNÀªàjÒ›pÍŒñµÞ›”<½Çè!³«~«çgÞùýãŸÆ‹*Ò&±Ôgµ5Æù y‘ÈñÁæýÉšyÄ/FwE·M;Utê†_gþôкČ´ßÝm–X mQ¢ôöu.TÔÛˆ7ŸÈ´¹Óø ±_#ox@t?Èap'ÏI…üŸž¶—Aq¤®”æÅÌj=„£D`ô,{óàÄ#Ä:äù¼¼¾ÂA _ƒQTâ£S¸þjú×ó­8{éìÔà¤)3ÕF¬ü×Âí·ýcÆ´ºŸÝZn]µnà…òÊñü¹ÌçóæÍmPdWxKhšhhªiÏ|ðãÛÿØÚ²ˆ„Wž_PßÑ<÷]ŒE–}@%Dg€Áƒ|ŒWA·*h,Õ¥Œ<ÉËx¯®ÒM7ò¾vÝb¢—\¡ëöÝ Ðm¶èí¹&ÊEû£„0Ôñø2µØÖN8¯ä^ùó_»à÷;^2)¨ÐOFßóÅ©Û[Û;bLLG{43ª+½·ª5ãoÿU¬ûQº¦¡!©²uÅÖó¯ºËu YiRÃï^}ÿ¯!tBÀ*p3¯%!€·eçȇ Ü‹¨\•T(È»•Ja'ÂDÁ 1.vùD1ƒXH¬"®'$¡úm‘áÉA+š4¤7ù­œ*pt‘Ef9‘Çn"C1i“Má×`E£ÉíÄý™ëæ/1…ª)ä÷É¿ý{ˆúœÒªVÏ{ðXýmìªŚ؂ÍçS~.å.æ–…ðж7 @l"Ù#6Z"‰%Mõ¨KËéÜ ž+Ô ØÝTHJ’JM]ú3 .ûbOnE}hçæÑ¡€«ópªor˜gWů.§ 3º0ûxÝôJÅXô(¾[¥–Tnxê³7„µòõ+ÃbÖåš‘¼þüø½Ì›ñðFõô×{È×½µ•JxÅt Š÷2|,¬ŒOr£?¶ðNû’âcïQ¢aÓ± ÞãmA"ñ{†fœqðJMRŠÃ¦!ƒ¡I ³aÅU2J¤•˜tøÓ;Ö¯?xêÍÆêpI¢ðñeÝÜwn}øÓ÷¿ñ±Š†GWýöõã½çʾO´\÷áµ+͉Ý7º"Ý•˜)z`ùás'°™›¹rS-À„<ÈQ>Ĭ¤äˆY"+75Md5Ã4OÖaêð.—­5­ôn”Ñ.<5hl,x€xç¾WaP«Å¶c•DY…Ù!‰H‰DkÞ‡óÄ5.ùÓBí¸Ë蹪?ÂzN7î3`ÎãJò’%ºdΠà·É""Ë2ìg‹JO)÷ºå½™wŸÔuüúS¶ehÙÐß¡ùÕ÷¡ì-ì+îÜ>ë¦R’ ¨3™W7m¸ËÒA×BÛÛõU™½™g¾ü ”½úäÉ—RiÊbR…uàcŸŠuÈgäƒ[øÈ›Ç6ÉHÖë½Q&5ÈdÒi2Æ–2–²ƒà’¸¯ Iø *GðH6hõè.YÏE›d]²>Ù€ŒbeÒp> ݹIiý» . ÀR0‡Ë8ü²léo ÙVœ &-CÀ^„ýö•\p‚뛬>ëü/O1nóAóè3öAšE¨ËwCÞIºÜ.raU¢Z袭·­½òwjï¨ï†›&¼˜`ÕŽû‰g Z=Ñpå'ÄÐwv™ô><;H¢ P³ÐIP îâÛä"Âi ƒ¾p¦CéT¬¶¦vœËvç†çÔ® ®*è®ígoö‡·¬¯5ç*kúEEòÄaË•¬>¬’çi£Û ÝUnÂíÖ–n¿Ÿ„d6 P$I²Á€¢ôë ù í¹ºIaÀúì"7œ­G-·ä-›©ŸHXþÇD±Ñó&² Úlrò*€£š+[Zëjéí¶,406³×5ÝJÜ>cº|FIaÁuuSîzÊïÜçîñ ´l>óÈq¾Í´lÁ÷w†÷ô,9ÄÄP Ss( ðÑšhpØ­­›ÃÁ¤F&á¾YV¿y Gßgzwœ$aF™æÏä°ÝMÔlÁ*6ñްÝï)³{¦ÊŒm²ùF©ý˜Qå9&³Zö \²Ú]I@Ò(T&ý~¼ĵ·Yi Ôà•×BŽ)rõMÞÉoSMšã4Š˜Ž"ùô¬Úú‹[nüyºº*]Ãÿü¦½/9‡n½íÔñÇï#šùÚú=¿n˜6½µqÖÛ®ûéìY 3¾¡8óïŸÂLVóØ{¢S¢ÇP8PÃÇdqÔæ1F)Ï¡2ãtc‡‘4RÑCŲ:Ù<)ÓÛ·“ç‘ã û ɼ횧cïwb;ŠÛmÒ D®Ý“¢âk^÷š¼Þë·‹V­éîü|ÿw¯tt,_Óµè‹=þ]VšH%“­Þúpq¼°¨´äÔ†Õß§þ°8óׇÉ|ÔÓ½¢oI4Þ÷Ô,Y¼bÕ•'|xÛ¡ÏZçu­[ØöÑMÿÔѶd)ކ‰?“DƒfÐÿ§#o•Æ.KƒFƒ°ÛcéÆY¤Øè“æ½ ¢t”ˆFëR”rª«¤dª/Ö(‡‘Ѽ¶¡gscaÖ´p-M-d6{±^'¬¶M€t›G32‰Hdâ•‘ÜÔÑÕ×G$“ßÍŒ»&ÿ”ÀøW9¿“åÞ†°ÇtzEt–ÍîŠÙunÍÇj•݈‚w§uNhñ#6O8ìqÝÕŸ×jq8Ñ5(~*FCj£wp}]kîGP~oDY9ÇáÌ·ÚƒF½sð;×í7 §%ì¶u¤äQOÀë+Š»¬®ºÂ`°œîXv·Mo 8Cë¶*C>Ä׎Ly»°d6€€$_$õ' ÎzÇP)N)õ$ׂWׂ¨…µ 1¢™ ¾}5Âa òö›FgÞœi“Ü‹Ø?öÎØÇ¢dÇ¢à Ÿ‹¥ùe²×|×JÙ*ÿ&j«b@#g'‹W2ΕJ¹\f•…e$%7ÊýrRŒó{ÊócŸñrLÈeb*»¬šÒzÇAEƒÒÉŠe"¹)”~È@‚ô(Ûk–QãØçó&2òãË>ÉàÖ|^»æL4`›nñ† 5™Ïn›s0óYLôØ«Dcãr)éèî?ñz!¯§–%h¼ÜSc¬ŽÞ?Ú•9 w¿ÜÁpÆÜRO‡Â%[œ©Ë,¿ÿµhA½ÉÌ(ärRX²9sžx^ô%BÕµçVˆ¶( Ôóx;òüR7Ú©^nÉËb—8—Ü‘?ÍÒS¨û$§A‚gœ:‚Öz@ТøÏ(&´´ÎL<Ÿù$ó3˜„Ú‹?}é¥Ìy/ü=< ï‡ÿã›Ãffú3;3í>ÜŠÔŠýB+ÒçV(¯"Ü j€ ·‚z™tË_V¸$Ïçš¡è£ %4 SP£I  ¨¸D§¥‰¼b û3?Ë|òÒK?½µ0IÌͬȸ¼->xn‡á)vŽ/cÂ/îÛõÇö/éÒTüس¿÷X•áÒįšXKò‘X…HnÈÝ'iͤ'ý¨üÊÌ5HQõ€†zˆ‰6!7ƒiðcdF_*êÀRÍ  ÅJ š‰é€ ßS%J¢%Jê0…< ¦÷ å ÉjƒÀòoc#D ^­¢Ç® º‡úX ù娗ÔQ0•ºL%¿!ûÁNÑ«`õXL^…¨Ó©­`µ,"§‚&´uQ«/:SzÆ™Zb¼ü2pü›áh ¸L_v_â¤øe§¿äöËPó[æ·éß6ý–bÞàÞH¿ÑôF×}oˆ™×¹×Ó¯7½Nýâšyõ5óK´áÛØ×ôÖ’GŽå1÷³1÷¢ã±CyÌíwCú>÷}ï#Ý÷¸V߇®;}DÊÜu49zÄÊ܉¶#w¹™‹ˆ¡ü‚’¡CRæ»èþÃh»mBÂà(៓©KºŸívðYÒýÌëÏü3rM }v_è¿0xá“ » ‚½ó2e ÿtóÓŸ&ÁSPóóÎÁƒç„ïŸS¨Kþ >NÏþÞÆ”|pæogˆ32Ì[Z™SÆúàÁƒÄ¥Væ´ ž€àQîѾGO> endobj 58 0 obj <> stream xœ]”ÍŽ›@„ï<ÇÍa3=øG²¼öZò!?Š7€aì Å€0>øíCuu)[ÅLwÏ×54Ùî¸?ví”}ûú§ôÒvÍïýc¬czŽ×¶KœO›¶žìIÿë[5$Ùœ{zÞ§x;v—~³I²ïóÞ}Ÿé˶éÏñS’}›8¶Ý5}ù±;ÍϧÇ0üŠ·ØMiž”eÚÄË\çs5|©n1Ó¬×c3o·ÓóuNùðñbêõÙ¥î›xª:ŽUwÉ&ÏËts8”Iìšÿö––r¾Ô?«qushž¡œµW½XA õ:¨^ t¡ÚçÐ ®kî’º€^1÷½æº‡ÞrÝA¿Qï wÔš»§ÞC¿3WÏ:PƒÍåŒy‡&ÿlÎøÐä[hòÔtÆ¿„6~ôèÈïµ&ùƒÖ1~'¿³#6GþBcŒž8ãG¿ÎøQÓ“_°îÉëÉPß“ßÃCOþþxò üôä/л¿Ï殨ѯ'¿h ù Í5ÿõ\óÿ šüß<ù½xò „üüB~³„üÅüǹbþk.ùîQÈP_è¿À1ÿq/²f/ZÇÞ° ùübüèKŒ_ë¿Ö![0~Äò î1˜ÿð<˜ÿ8+˜ÿð6¿g ¿ÇYÁÞŸµMÆ߇?cÖqœGZ?":˘ⶋ¿3C? K¿vº” endstream endobj 59 0 obj <> endobj 60 0 obj <> stream xœÝ{y|ÅÝ÷ÌîjuXÒ®îËÖ®¼’|È–lË¶ŽØÑZ¶lÇŽ#'q;Á‰Mì$ÎØ $!qBj Ò‡+MÊåCAátB)é<=žB<”·åêCéSh <@ÛbùYÉŽ¶ÿ¾²v÷7¿9væ7ßù3òȶíý@ öˆk·ô=tËõÇ¿ê×îáƒóÿ¨Fô;èúxÝÐú-_´Üg€|Ùªõ›w®[¶Áùʼ 7ô÷ö½8pZ@à*ÔFõÄL¯”£t ¥Ý¶Œ\e“inAéWQú†Íƒk{Ï¥úŽPÖƒÒÍ[z¯ðF¥@iþŠÞ-ý×5o:ˆÒ/¢w,éb€¨çmëzøÍkÛPºõéˆÑþà>Ó8M”Œ–+”ªµF˰:½Áh2[¬6»#7ÏÉñ®|ðÿ÷‡Vã»ì@¥¾ü Ÿ*Ç4ù_ §¦ß’î¿“îïnj}¨Éon{úŸ¯æ ™ëï}.ÕZ扮æoοô|^g@/º¯ÇxO‚ÐÕÞo€çA-胠àZÄï ÁØV&ð(8†Á%-X ~~ZAÜnu¨Öç ‰X%µß žCí=þ)¨‡x ò¨MzÓM ÔÃxÞB”§A?¸ì• Šø A'èA©›ÀQp?êã_ÀÀ rÀÃàÏð9 ‚å`-0‚!2I>7ý&$ ;ýxÕßêìG}¸Ü~H8‰ÕÄ{d9¸<‚ú{¼~¾žâ¼h$ª®ª V”—ü¥%¾â¢Â¯Ç-ä»xΙ—ë°Û¬³ÉhÐëXF«Q稔 9-£H‚˜²Öwž´É}—ËÕUšMÛ/N§Hû¿®Ð_TÈñ•J¹_Iç}%íœM/JcªQ¨oÀ Ÿï§€!)€ß mèMÙJ‰¾Bb e«ïëéA5–O5~ÈvEjûdŽª^¨ïW•–€“ªDæ •: çC‰ Ñ“PhJKRz_Šð$ðµ1%êA„ЀZB9† 9“Ógn˜›PµÊ¡`Š®OÉ¥÷ò)±7ñ'KÎŒß0É‚Ë{|ê>¡¯÷2$¹^ÔÇ“€ô$6t`9&ðÕ³OQ¨qéæ@>±°8zÐ]h@µ.ÉGle}çA×GJž‰”ΗjB%šv½ç ÇÖ'ÇÇò©c‹;çæºð½««ËŠ:<žPƒ¨±ÄÆ8Š5PZ’SV}=ñ;7öâ~&6òã‡ú¥¾Þ õA*šØ€&¦÷ï•Oô ‰¾Þ¾x¦õú”Ø!=@ÇÊNi€Ht ]YV¶Ê¡¤œž†.WFØ­K:ëqÇ„ÞGfÚg9=Yb$f2y܃¨¿–O%*Æ·þ0_–ÀãꂨVû…Z)™‡øñÏA öçþt1§7Ë¡=ìç“BcÏøx£À7Ž÷Œ÷NNï»\àYaüdkëøP¢½µ½Õšœ>}È‘j¼¡+Åöl€Q${Œ€Æ%1‡K×5“lŸI)¬i8H è» û@R. jYg—ɩӈÎ<1pÃh޳bÃ2êÏŠ§>Kº\‡&Ep9J¤ö-î̤yp¹ãQ |h>zpΙ™Ó2œ³o&g¶z€Þò¸dM)…wö˰fCbC4Íß’ÝŸÉOê;IÑ•¡‰)•­ôš”ŇèBß8š„—…ëKÉ:Ï8jºxV‡4ž½¥Bëâ•|b|Nv¤êBï†ñìR Gð€h‚Äúf!jP39ûžï ÖïÓîaŸ/‡>_7”k¥/)=„|oUeu°Y s0XQšC†ù°ªÒ[à‡!ê“·œ+p)Ì,­K<4|ÃkÛk*òÖ(Ë,Y¼`“ MBRo¶÷YÙ¡8Ô¨4•îóÖOÌ‹-ºáêµ·E „«·8ËêÃᣫ‰ÏdF…)_Íêˆ8’ÖãHÖ¿FÒjõ-H0%ûÔlÈЂn ÆÇšœ½Å›Ë#C`[ñÞ²½‘«êÔbLl¨S+­¡º}¹y¹blr:-®×YC±ýÈÝ»’ƒbÞ•Nèt:øº\»\¡ØowívGŒã…k***•Æ2{Òþ¬²Û‘ÊxE™‹¢Š DÅ '’1§¨Ô†¸•ØP{"Fë FªôD œ³Dbç"} Xo‰”AöýŒ¤±ÈžÙ©3gÐ#+w‹V. ¢ü)ßTÂwFq¦vû|¾9Sb2š-Nh‘»ðài @ —ʸ0?.D ù¯™¼•æ‚|ÅG¡7iWÙ٩ì{³YðÉ?Ï9ÿª~ªfµýˆ‹zŽ ¬., ç=(“±{—‡oÝIr•ž=V® ó_þUa¤M.Rãq"'ÇPá¦\_©÷Ï­êã\Æ”/‹Çez›c×â‹GÏû˜<+ÿò5rOp3ƒWÁog¹Í«ÞÍþj„ü¢b`6ÅvQ;™…2 ÁM¸ÊÉ)•·¿ªÚXUUí;^29ý?â|T£ÄxÜ "¼ ºã‡õPO‡P_B&±v‰³q1NÔEªãUuñºhÕuID¥u!ƒˆŠâ¶Ý(¡78oÓ3ª€*©Z£¢T*Ñ¡ò¶Ø ‘,)ñÜ8áGÓ‰ÖN ß2S4Uú¢i}OšUi%Y‚snTÈw}ñÔÊÐÔÊkj¬ÐWŽf’š ?DDv I¡²:3Iˆ)MálÎ%¦Q¶9ÙJ·Õ9—W¿wàXËÞV·îk!UJӢرµ´"yð«ò"ßµ7ïþrÃ­Ó ùŸ Rg¶vÚЪK?¸ñfEM½—ïpO½–Ãé= l5´†ÙÛjñÿÌŸ^'4rM¥@Ñ £ÒÈçhŒx‚kÐL=‚fªÜþDæ£ o%Ò;Ý–%ƒ–QËöYÄÚj%ÔÍ~Ž7r_áã\©¿4JÁ$\{ÀA‡Š|1_ÒGú€oÔ9Î_Štš¿­„4ÛNXA`ªéª` X³Ë‰=Ð}Vcañvãfe+I~}1 5Fg×`=Ò•€:Vò:» cé¿¡å`3 Ô_Î:·Ù PUå\pu–7»èF…Í>œ¦¨/* J+§VX0êÕJ¦ÒM]Cʨ¦²@¯îG–aú}$«•HV+œ“ ÈPÈÕ%ëºëkëFkFë”ú2$AßdÄÞªò*:6_.ßo³m6»»Ü]¯ê*ï¨(ï«ÚY>R¥ŒîñùÊ«Èv-Ò‚(UªC4ÔGìq[}C}ÔöD}¹;v„§Eº&iZ?ÿ6á„›d @Nè³Êè–"ºaU4£‰|Ý–Hà\÷Œ,egÎX±b’¬€GîòO±Tà¬YË`‘¾°Ò›¸l%›þî²;:nÛˆQ¨]åd§`m—Ý^ùGÉšMív†Ø»ü¦²ªÚƚرžE—Çó«¶öô{¶Þ{ãMßÿŸxüg»;]­0Ë,ù*Zƒe®Rh«J­2©L¼RÁñ|'¿¡iõ¡H«ùŽÔþºˆN«¥Üë¶Mý=Ö1 Ò¤O/@vZ÷$üŽe‰9Jy™ ‰:lùâW–§zzPÙ? (ùC4sIpò˜‡l±6k‹ûaÀóUˆo ŽŒÁH ƒ‘¨ÏÍ‹ÇóòöÊŒ@Y"PÆÛ±ÙE†Cf·/-&Ú#eñ@ûâöhà‰öÜ#L} ž¨¯/¬Y 9%½Øj(ÌN”E²çfç©;c2fL…\VSƒhkÖnÔÔàÙúv áú;“8SÕ5‡IÈäv`cñg´:ŒL2—™zŒ±]f¼ŠSýÃa0\ÄD6)šæ\†hËV\GÜÙ7üÈjÈM|Öj(š Ò9 ½ÂèΙäT ÒÌ«±þÉVM×Á':…Ù%1ÑJ}ÓoÉ^ý耚Äj¤Knµ[7OQ©k!sº‰%9}úMŽíú]­õC¹ŽÐÓ0é xDÏ ‡tîQ>åfÿr®›ýìrbÝÐHÈiJÈU•úPµ;X`µ ëšÈ(hÙ 7lI¿~ïßÒ/ß0´–Þû¬L_Ó´ðÁûöývISÓ¿wýÿ!~œ>yå®aüü¿Á¶»oJ¿pþÝ«aø®ÿ|ôÈþôÏ®?ûÁ÷ânHwRœìS„Îv±ÐJt |ž ˆb ž(#H‚0ˆŠìSkѲ7“ÓçD%IIìÆJ1Ø"u——”ù}÷<»•P€÷å_Ç)¹ìÓ¿õËïÄëžþUH«´Óˆ¸XÆ™8Sh—¤Zf³—úÇÔjLãÐx4AMƒ¦C³^³C£p?š˜—œwxiŽF4qut^4Ц¦L}PMªÍ÷[ÎZAÁíN¶ò(m–¤û õJBo ·;ãî”$^:ãSbÁ póXÈà|äYšå#«­IIŸdL"UØ“\ü‹mËøómÉ­f“èÒÂaÕQjåõuGþ¥ÁliŸ'Ìwå…,c¤Ó’ÛXœí\¹>Ïf¯+¤6[\:wJISµfj}{íKWmr{K¬F}Ð8õˆ±Lo±v'—¿Šdµ`úCâ Ù‡ Á.±ÀéS©U•¥Ú¦Þ®ª¬ªŒ–U Uþ»™B®°§p¨*”ô³ûðF£ R/Ë¡³LHeËËïñù¬Æ³º + Îz&($®©÷Ñ-p,1ßV öÊÑÚÇ®â™n{ébϬž]³X6!IVXïÎz #=ëªÌeW´·+”Œ'b^``]í^Ò¢PlR1Áˆ¡ieK(ØÒŒ4o=yKk-^ø¡=7ìÑÊD!Q\?ŸK¯(hµFŠU2YdÙâÊÐ’6¼§šœþˆÚC~¢àþÇr a VŽùÈûRªÇ*_/ÿC9Q^`4™ÍÁ´4X:,ë,ÃZ ‡…Êý§k˜š@ ÁÏ‹Xâæy5ó¢|™Y4æÉéÓ™Bf\Ö¦R‡ÌƳ›?›7á~E7áC OPïšA‹ìÜgHhúH Í·uh©À~™„5¶û ’Àfìâ#…¯ŠÒüºD©=Ìʾ –âå91V{´þ§'doÄÜ€äy•/Ù@ÐW[׳9GÝ¡ÔU ±Žˆn×ÒZs•n÷5šêµ/œÊ'®³®Ê {,Øå ;— ®Ô_Vš~–_j‰iКLߟn ®D8+Õ`‡³æ‘4ŠÐ…äN’ CáP´ünŸ[Dâs“n ‹À ÂCaÈ«Õ£Š•÷øý…î³®‰B–ÁâS"#Å0¦;”)èó]€X÷Œ£ê `7ªûLcxUÒHïYa[¬Dµ>ôAÍ…üDI ‰’ªô›ßï\ZYÎôZAÓ´µ¸¨6_¡öDìI=³è€wI˵3h#{¢ãáô£§ßJ¿_ôÅsMº¨‰zö™SÐp²hA^Ø£CRò,‚/Î@NBýB\øTT©ªT5Öš¾Æ‘2 ¾b€aÀ¨É8f¶ 6¿Þð‡¢!È»Æòóx B‡°Nh•¥ÊBXvXZ&,ï[d(vþÛSJ&d±Û ¢‚цºÓI&H&“ƒIªdQDˆç/J.Š–”å‹ùD~¦ù¤Lóƒ|ÔH™C%g‹&Ê^ÑÍÏ›!¬¶b¬æƒ@­‘ˆ„WË%ñª‹‚¾î­s`Ë¢ë DàýÐûH¾ é—fÔt4V¿ñçï–)ëb‘ñUÚ Æ2'$h·×ôŽ£]ƒrjÓýƒ=ë1ÂÙ²ˆ¡y«¤/. <¶|ÊAÜe.W×µDÖb°#-õ°ì+Z»Û×/êºl.àUº‰é÷È{ÐŒ:â÷‰Z•Þl2¹yÂã’ÓEH¬¡¨ÞŽÅË£ðÂs4@ÇèQìÕÚÙü£6–UójB­VÞΚ5¸SÄ4šÜ1¦„+ ””ဒd ôÐ OûØ¿LUH˜Çë »rN (±Ç{×5wYf…}‘)"ä’ËDÞ36Úýãáí[û¾Ûiÿxÿɧ“ [^¿ææC“f¾ÐtÕÏ©èÒŤkãÑÒübí=÷÷­-Þuë¿?¹÷÷kº·m”æ¨éôß^Pyœ¾ƒX—nžþ¤¨¿€<0(6íÔAX†Æ«Ö°º1•œÎ¡‘¢œæœ®œ %8g´GÛc'ìZZ¡µS€dIž,#)2'‡ÕÈïP1v»e`ƒRÀ€ ðjÇödÖ–œ9“±Á¾nYQB(h@¦Üu!ôD€5´ìÎGMO6>Þ-¦ô‡ûñj¶¯¶ë¯6µ5[ŠìÄ]« 'ý›USox›l¡ FµÀQ€×*äi4³~°Wôçx¡Go3M‚)hj0u˜Ö™†M´ò5ÊÊÊàa't"¦¸1Pˆ:ÙeeÄSjE¯3ŽÒÖ{ŒùÎ³Ž‰üW4·ÓE¬)ÿàŒêtK‹if-á9κs½ <̬+ñµ…bÊ.'$O³ŒÞWX]ídÕ¡‚‚µáï¾uŽžoo ¯Ü]ÏטÌ&rQn½Ù‘WíâÚ¼ƒaalªé÷KV¿¯X±~ k0…,j¦G/C²è/‹9òènH(x¤kª&§ßy,‡ •NNÿYT"†^D·öÉé‡Ä4ý>ÿ˜Õj«‰ŒU‡ª×„àx6‡:CB»BT(L ’¯-@šê‘SbMµœYX>ºœ\.*5¡|l!òmVSn~® ‹1‰Ñ¨†Õª0“–›ð¾~e [?A›ƒLÖS{/+MI˜(ÄÆ‚õI‡/x.³Ù±u[™ˆ™°Ð'­"ëÃÍl¢eòwý“!d™C2.]ÆùËØzÙÊE+~»õ½wmyùâØÂµÎ\«R¶LãÉÌÕîöV…¢[©®iŠGN>¬¾QÎ{ØÞp¸j^ƒËht-,žWO†ïNÿbû57mX%Ôð|~Àë^Uaˆš`Mi‹5,é%wk{7‡=‹ ­m‰8ñW53u¯sENHdùòDÛÓ›kꬶPE¤f ^¥{§ÿoçAð‰,§ ( å;$UHþÑ’±Eb¦š˜†èøÎùP‡¼pÏ\+yóâpx1¾†ÃÉ$&q»õH ÞŠðá;ŸP@äÐæbd )T¡§hE„È@†±U²¬‹w.—óv`–ÌŽOt¾iLÿÚªgVŒZíe¼oÌ›ô®ñŽziÇòiö½¥8ÿÜ\ýÄ‚oVÌÌUv½H*Ï4«á3ü¼-‘xeÿቺºêêM΢ë^ÝÜ{G"’8—û‹íù}W×Ö—%6T»øÁ|‡-ýÜû7Ý¿aMñ–{qÄÑ8ýõŠ8Ê@#˜¯•AEùã`©RPjJkWÔ­/1/ÑšX•ؔإݦÛÑ å qLx;ï嫸¿Œ—õÅM>.457E‹õB@< @¦Y/ðÂ#¤ð’@ Bs 9ÙÜÓLÖP=Ý”w¿ó,‡b&è(ËŸ-˜ð¿[?!—À 3‚»¬à‰îYÛœX$eÒ½Õ#ÌÙ ÏšYÃÜàÎU ¨˜AÚ‰ÊD1OüDnnô–-žwË}]m­¯ '®+YDËòìÖŽ|-œP¥?Tèm40Wš—ÝHØ–m×WVÔ 4FCû“×j-NþWïý`Uç·v8œz·W™ g¾\ìZfŽ©å¢×ÙJü"/d¶¹zÚÛÞØR»ºÐã‹/Ät2ì^4/%àûâbʬK-ƒ¶MÎQrÔ9Z¢€Zý5† #–Ùy’“›ºÒA#Ã-µpœÕœÖºZŒzׯvfêmƾ4W¨óüÞ}wû3tn®±ÁÎ"Q<õ_SgâdŽ\e¶(?Qy½›Oj\…²xœ0°Æyó ž8vþË 'hÖ`¯Ûw€™ÚC-4èëý%¨çe´Q&£‘¯NÏC`D2äe1!“ „22 †Lã@Ť#/ÈB’0¦H*)xïîF…âw¿O±‡}þ å·J„V¡/¤öœ_KÂóÓäÝð¯iîzx ¼ùú4‡Ú ¡ˆ¬­¯xñ‰ÃCa—¸4“•ùwú_÷ÿÁOùw&0SXl·¥Ú\n-í–~ä +%ß·Sò}ý¾Ó&™H ‹$#û"2L&#ƒ‘g#oG>ŠÈù0Û‘p”7‹]ÈkÞnþŽùv󿚟4Ófþ~×Ù|`t›u(g«æDl3K ù#3klë¶¹Ûß Ù.µ[pq¼ÖxQ¼&N x áC\Ú(8F­?¾^ ×úK…kKZ¦òer ¯¿°C°péW¶ŒFëDšÛæÛÅMJ…L-ÓڬƤ-ŽÎó,ˆvE7F÷hwè†ô{üŒÁ æ™Mf®&bŽ›jjk¢&9:Ŧ¨©Å´Ò4`Úm¢9¦–5&Sm 6YÛSKV ÕU ‚ÑX‚Ôw6wBx7d³y^~ü꺻¶x­fj7×eŠ"eäæ;ˆS®»ÍÙ³xá¯kWx‹cI¼–tÓÿM.@’œŽ‹¬Ò" Ù,†PÔR Ë+1Œ•j&TÌ£›r&EðÈyrá”(Þí€|ÁPQPPvÔÔG(àd±ïH3GyH5ê#ô×F26’ E‚×:"’w—¹ ·»¶5"Ò™ö|ð±MwÖH¢h ?ÑŠìÎx=²¹¡±$ª,g<˜ÌFxvkK’kF¨ˆ 7ÞöB´¸°\ËXLUÅæÁ ë=}NwÉïï/XYˆ‡J=e,kTœ¶ËûW \·ûƒ¼e…›½Ù¢ËÛ|YÃâ|uy.ßY³ïi…žUÕóÇ|§‚hnlò–ïí>ú,’æ¦ô$y“ì<`A\´†ÕPõb_, §”(Û T@%ŸœþŸ'CþˆÉäI¿jz(9.øDĺ}ÙmPì3Kû¹—б€¼‰ÝÿßËZ;öÜ {é=ø’ìübËÛ?þ×tûó/œ··Ø¡ø¿ÄÓxV_~‹þ©ì²÷£èŽ(TúU­ž~‡Iþrs«Dt“ÎߑڱÙíûi¹‘¦å…¥ûâ´Ôºk«kÖ.¯í¯Ý^+¯­E&6EòùUrR§±ù$GI‚n#{È!’$3§Þh2 U¡0ŞБÕŽ|êÝ·Ô3‡ÞÒl÷ÌŽúÔ™¹ÇÞ¢KìŒ_ì·În‹\Tˆ&2qäì9™ì9¼mnn±±Ä"6·ï‡?I+Ín°cÛñê`Æ=_ÐiÔLÞˆ“%XLj»(fäꊅ;—=™ÿèm&•\ˆwÅ–%g¶ÀÏh•mù¾¦ªàÕ‘›¡îx{Ÿ'hl\Æb²žè:œ~óÁCOË‹ñéÇ}éIâE KDuˆibV0Û E½ˆö±è@@ IHòšµÎ5ˆÐ•1U€Œg‹M‚[è DðúÀ(Áa,# ,ŠYO¼˜.O?„qÒ²L y$­Jø%¨ÀT*é3#}ÓoË~-{4€Sâr7S¤/2Ï#ƒLT1' ÌË—™×ª6šw›wæ2žâÑh¬!Ú%bžhUtmt8JE£•e•ƒ£dEE%¨d+ Ãq=€ôzöx@uºJ<‚B-ª¬l,¢!·‡~*QUq"TF7¨Õz½Ž´QSù˜ ?I à ÿHbÆuÎîdT­t‰}¤deÙ¸'sL€l0{9sT Ï %¿†j³ç5ÄWý²­mÅÁíÃ0úðø ápûÀÂê-¸n×îß,]Ü}öTç5^­12-oÐɃؓq J»E/¯okÜïZØÒòêõ?­Wï¾1æmH³K‰u G‡Ó/>úÖ4¨ä‹VÅ—ç856¤9¢¡Ô¨ÙjÏðšÕÅŽBƒÞˆ}ôúéßQJ¤‡ñ9JHô(å4»Û2ÂSvÚĦ£ ëtI‚ë–ÎMhù×¶OfmKv _Ù¾°íÃÿúRgKë›ûýé/ú×,=RUä]Û×5îóù‰ ;þÔuÙà=1öþŠ›Þ¿é¦uÃ+^[yøÈÐòŽ7€SÿZK¾æƒGÅn£/P+N×ûÖ/õ +e¯¾’±òBØ¿ÁOú×£f¼L5ÓÈ,g¶3²X„‰«cb,ûYd…‘õDÒï{D˜¡ED€±XÔ* ;Ò'*à«)-uXÎ'l945ï^0ÄÒ¶jv:ˆ}Ø­Òj%Ûas,95¯æ"›ü†ÊŒ5ñíï(*[ëÙ¨`©4EÅ]*M4&lxäaõ„Š-—,õÒÁÀâä žù&«ip¥5^kK¸‹Bà›ŠêÕ7Ÿ øê¢¥:)vÈÏ_O±×¥¨•A¤Çˆý*¿¬‚®4U˜+Ùø¨b4¾½Q9d„¥bR5–››W™·1!„43Í(  ,ÕLy±š÷6Eòâ¹Xe{ós+rwæþ$—Êõž&Š_Q–Òµ·—³ ]óý&Þ½ÂxÒK¦sÎd/œ"á°`îAÒ7n~mOtv!J¥¤Í©•«­øù¦åWø¢´¼Àf›oÓN½¡åÃ6Σø•B+D±”îò56+ w¶ýAúÅ`È`2/œïlß'ßÒ–'†¯ý¸³wu1—þÂV¢qðr…‚ˆÅZ®,w“G½m¹a¯N&æ{šb±%/M=¾äWÛ«6 ¾pÛÔO#k/™˜€)åëk˜šÏ#ó釕üΙ_Dã3ù¯‘—O%Þü—>¨Ž|y:6ç‡Ó@^ôCjA Qîé_Ê7M?.‹Nÿ†ú\#»{ú}™gz=6ýÙ¯Ayfúê ÐMô‚Ô$HéûåJ$ÿ$ˆÿ›É“ IßjˆB°—ü¨§þ4Â?£8rõtÌÞ¡ö5Éa C¯ßDkÀ«$˜¾OöŸ Z(•¯¡ŽM¯CýáÀ“ð8q%²3¯’Pÿ&d«dŸÐ»åù㊻•.帊U}–Ãçܦ^…þÎk4SÚãÌæFv){¯nî´~¹ÓX^X–•þê ȸçŠ$ýõ? 3’’îr”‚ÙZ4Xš¥I`]YšZ°5KË€Œfiñei9(ßÅo¢HÔŽü4K#ϼ.Ñ2‰ÿy–F|HJ4øjèÊÒÈ…¥-—ø ²4æ/“h…Äßš¥1D+Q/ŽÂïfi´Dy–Få‰X–&AÑš¥Q]bw––+qG–¦ÿ‘,-=ÄÏ%ïÒkI_–Fý'#ƒøFrE–¦€›Ü$Ñ—,y8KS€'ï•h-â+Èg³4¬äH4+µÿv–ÆíŸ“h棖34âS6‰6âqQ¡,ÆBÕK´I*¿&Kãò[$Ú,ñeiÌÏÈÊ&µóT–Æí<'Ñ©üÛY—Ïô'——ådiT^f‘hNâ³4ægdîÆíÈVeiÔŽl@¢K¥ò³4.Ó IβG²4.ÿŒDKý—ý&Kcþ1­–Ê#ÿ8C#>m’hIþt0KS®õ;‡ú×õ®íç{¯èãûzGzùµƒC;· ¬ß0—G"Õ|ÛÀÚmƒÃƒëFøúÁmCƒÛzG¯ðóu›7óKp©a~Iÿpÿ¶ý}þ¦þÁmëzŒônX{¡^–Ígø§–÷oFíñþ²ªlNéÅå†ù^~d[o_ÿ–Þm›øÁußÐ#P¶ƒm` € 4~0ˆÒëQºð_ÉÝ$¥vs—,{qî¦95/]2“×ú-åæä‘ÇȧɇÈÇÈSHa~¥ÜEy`'BùëPÎZôäÑó Ðð¿Œô‚©Ýµ¨ö*· Õ_6 .ÊAýU#ª q×¢¼AôæAÔΈ$ü¾!éŽ[@ÔÀrêÀfôǃ%³m K©~ôìG¥w {*yqŸH=Ù,½éRïûª$æ–ÿ¶¼åÒ;‡³ýãAzs¨úJÒomo@¦F¤Ñö¡ü-è¹ Í/õðŸ“Ñ?ƒ°¹hD÷”þTÌ–¹0ž­(Õÿ-2Êä7ÀÅ(5òµr3üÌXfÞñõ>Ïͽ0ŒºoÎýÑ>KïW^Bfçâ±½›Ë¯÷õ¢\ÊNÕS"UG…©Š¯–¼(¯õ[WúŹÿà˜`Ùìlúj¹‹òÚÁ ìEù;z¾>ž‹s¨Þ.i…½—sóþ þòü§Û‹AÉ7ÓŸ¢kè¹Ôê‰N%øŒþòçFüŠg‹K«Å?i˜êÀŸ óaòCB:­zÇ`«f~Ëý6öÛäo)|¾ÿ+“­çx_FDìeøƒ» ¸¹ËÎÝyW wבîðw!{ÏÍ÷ü=Çî‘É»5rÿí ÜÑÛmܺn¿ƒçÄÛKRc̉õ‰# î¶#E+”^}+ç©>|ë½··±sÒ†À·Zü‘’©N>½æéÁ§Iöì95tjß©N}|J&NjÙjqR©–šT>•£®fžäžÄ]xì †•¸×>²ßyøã‡‰‡ïã¸Wï³qß¿¯‚co¾ùfâ{Çlܾc<xpðA\Î^Þ~9û]òwĽ¯ÃçoçÀïaò'£?!ÏÆž%’Ϭy†øËç<÷ù^žûì‘÷é'^î?Ipâ'öÜêO>°r:¹>ps> endobj 63 0 obj <> stream xœ]’Ënƒ0E÷|…—é"Â6¯DBHi$}¨i?€À"c²àï뙡­ÔèÏã Õ©2ý¾º±¹À,ºÞ´¦ñîW¸õ&PZ´}3¯+z7CmƒÐg/Ë4ÃP™nÌó |ó{Óì±9´ã‚ðŵàzs›ãů/wk¿`3 …h¡ó}žjû\Rj[µ~»Ÿ—­ü¼/„¦µb•fla²u®67r) ‘—e€iÿíE1G®]óY;_ª|©”ñ¡ð¬™OÈs‚'1r¬‘Sæ9ãúòŽ™¾ï‰5ñ8¥ì#óùÈ|F>1“Ï™™|JfôQ’8CÅþöTìŸeÈ쯱§bÿ4Bfÿ”²ì¯%òê¯Ù?¢,û§x.µúS ûgÔ“ý5Õ°Bžì¯ñŒŠýctÓìŸâ?Ñ«?ÖëÕ_ÒÅ­7„Wˆ3ö3¢¹;çÇ‚‘æ'¡7ð;«v´˜¢çz-ºó endstream endobj 64 0 obj <> endobj 65 0 obj <> stream xœÝ{yxÇ™wUwÏ}tÏ­94Ý3=‡F3ÒH#it€¤i$„„$@€„–ÐÁaa §± Û` Fv¾Ö bìÅØ›¬w¿l²¶YŒ7‡×‰`'N¬¬×ëØ‡‘¾·{FâtöÉó|}3ÓÝ¿z«ººê­·Þú½ÕÒÐÆÍ½Hv"ź×w ~ë‘v"„þ!¬ïÞ2Ä=¹h•ðûp|Ô7¸zý'ŸøŸAˆüB’ðêþí}'~o #$ÿ„Ückz»zü“½P>8 uD×€`Õä2¤/@Ú³fýжòKÇ ý9¤÷ötw=öз Ýéšõ]ÛET~ÒÜ]ë{}ø|¤/#¤Àƒ›†v ¦)„Š~'änìT}oëzx”ÚÔ2 _á£(ÒII¤2¹B©Rk´4£ÓŒ&³%Ãj³;2,çBÿŸ¤já,ÙüQ_!nZN ˜|e ©©Ÿ‹ç÷§Ï“Õâ]_:ûõuOÝâscØJÿÛçVµ¥>ø®¯Ïû+wÄ»q7®Åmh^Ûð|Â1Ô·‹©&tº d­F]¨+ÐSh=êD XÞ†ù°oÆЬ 0áûÚŠjÐ\4Ï¥{zÕ¢GÑIô1&ð,lÂ&H×¢s¢¼/ÀKñ.¼B÷@™ÿA1T‡–¡ñŽï Ÿ ÷p Â{‰ï!údÿÛ ÷ #$‘ÿ8õá!~޾"î‚;“èè œ^F«Py/¦Ð§è-²]B—ˆa„b¥%ÅѢ‚H~^87'Ìdù}^ïvq¬3Óa·Y3,f“Ñ ×1´V£V)r™TB‘F!œÈ¨j=m•í.—«-'¶]ŸN^æ3Wé¯+d¿á&Ç éÌÒΙtc5|UµPñiTóQؘ@ÂS°a<)}S¼g_›°VõtvÂÕ<Ã%j> §›"Ö}Z¥¬â«z•9!tZ©¨eOãš ,¢&^vš@rMN(¡&o\8Ö%bû;ðÕP䮿œ:ÿàµYn›F† iUB&>—[›ˆu%Ð~îtèü¾Ï2hUgPÝÃ÷t­ÍuAO#Ò_Ó"è1.k¸•‹';H¸øn/¨#¾¦Î|5ÜuK9ˆU­{\çí =\ã ]0Q %jw\¶“ûâk9!¹oß.1¶°õÚ\—pnkkË€ï‹óP!T_7º’Î ¥ú”V@Oç:á™ëº„vÆ×qûö÷Šm}PlƒX4¾¦ë+µo_¼‡÷tõÌMÕ^•ˆµˆÔ²¼Uì ¨®º--J€JÌé¬ns¥”]¿¨µJhßUmO ûŒ¤3-A|:“ZP$¸n.µòP´D8õ– }Ý%¢ñ¸Ú0ÜÕ|õ®„ÄËðܾ?¡îä'>¹^Ò•–H½ÌŸkøšÎ}ûjx®f_ç¾®³S;WñÃï;]_¿o0Þ Omn…»ÎNÛoOÔ<Ø–`:×à2н`5‹Z+í.]Ût²y:‰À¤À°Tbw@ ð«K_@˨¥ÕÅ¢–´¶ÙAO­nœº ††[cœV› £Þ’õT¥¡Ë%Xçþ³1´ ‰ [Si­²ÅÂAN!çütŽi‰³s:gæöNžrF\wM ¹oæG3fC|MY›ÿJvo*?a¨j%íD[ vR@Ê ÌôÙ KpVp Â>Á’ÖóöÙm£ ŒÞb¾~áòV.¾oÆ R’tO;Sç»ÖìKO%0z„¡E2$„‹ñ聾„#üÆ{oˆ§ü<—Î¥ó C©¯vJÐ_„+wO’ÖIŽ£ ¡ˆµd)¼êwMÁ÷*V˱|ÏñÁR{¯ÃÁR¬ŠcX'DZ¹\ÔQÈ–qe|µc×À/c[¹>öNǯÇ15SÌbø8XާL2F+´Åå†sqnL¥)6 ²L SŒŒØh4)Ñ¡pˆ…L,i`‚2›PxÂRZ©/ wLäápA¸#ìЄƒzK©èØÃ$ÏŸ?çŽóçåçóqGUà¢BŸŸti±L‹MF³ÅäY1ülØP`çøÃ*,­»ò—è!R¶}Ò¬ ÐY׆ä9×âŒ@©aèã‡~ôú/5Y^Ç|gÒòæO)Ö"7ê°/pG°$¢är”„ŽÎ¨ÉÃV¢·L:“Î:óÍ CàO "9‰¤š¬¦®AYhjÍžç‰eµyš³Özî”ìˆÊœ£ìEŽ‘ñdøˆ)=JšµºQÆØ^+—('èS®ù{Š9eye6óÅåËÉHäróùªLF*'*'ô¥¥•ŸOäçu`#âÝ>?¯ƒ¾BǦ»[¤ËÅ~øy-&K.ˆè% —\Ì»¥2¨ƒ‚H”º2ùÑÏ:·ùå¬ÃÞíJæZ œ…´Ús9ü[Z>÷©¦·>|Üì°·Åæ4fJÝ:kÌ×½ÿöíÉ‹~ÇäoùBµJOÌŸO¨¤ª"79åŠ4:²Î¦ ªæO¾ûßõD£±Oò_Œ•»í°5 ¼P§É$ªF ÑñZK•8µºRoéò¼uùýÍ;LÛóïlVņ¬³­ ÖÖ~ë]V©ÕZ¤ùN‡b ¦8âF‹˜ªÇHsã9,ˆxß}áð,¦B·ŽT K³Î->°/Ž)ÔÅõ÷1¯.b¾˜v€ @…aXÓDi *¬œ[êЉöŠôj±¨HÑrF‹S–S4£9'˜”ôÚ삈 u“‘0‰ê/ÀÓvÚ-¦N‡¶UÝ9d’º+=áeC'=.gSxù•2¹F;;?4KO:ô:K鬖¥m±Ê“5]'æTÔ)ì]s’.¹ƒ÷f××ÚM®®Ú§3›Ø0§ç²õ®ZG§u‘ƒ Y5ÆE>]m4/œSÒ–étY<üÈí&œŸS¨‘“ø¼!ßîX6«±&Çn«vê}ªtŸƒšcl™¼ÔIèõöQ53èÇ~¿ç2gee˜µ™î£…ÉÉ€ni:ܾ-L¸vK_ÍóçßDæÔ×!œ@w· ¡•€’ÒJ©mF#Q=ÄæýïÄãÕ‹kë~¾ûì¿7tÔ÷r¤ÊíəϱÞg‡vÔ³KgWÞË-¬©ýáÆ5¯ÕÖ-Û¿e^ë¼²üN«Þ]ynËwÑÝ^XÞëdC¿Hà÷T µ±yd‘®ÈSDF³/QŽ]}¤±V€;qŒÚ ¡oÄÓò‘Š“%çbáØØñØ[1*SjŠ‘•±Ö§C†‘À)ÇI÷+•©9w¹C4äå`ÊÁ´KÍ:ÑӈӬЗê¡ì¦ (Z0u¢DPLº¤1ùŒ1ª1éÔfÅ]™¼Zo¥ó-É1[>L@§ÝØàÄÿES¾òwküĸ٩qu„T¦ÊàK«û2,Æl&ù[oP«Ð’uB†:ÇKµsóôš¨³1Éfw±#Ã}ntÒì iäjJ˜yÂ诇ÑçP6Z+.ÕVZ}͉m4;[êÕ3 7È—yDjæ 4ví¶¾¼rS¨3DeÛv«_ 2_$# õ‰ifTjú¤&Ƶ†}ÍÄ®ÔØã™YD­ç»+«h;üÓššx}¼ú­ž™UZ˜\qì[++š|SMëfå,XAýgi¯Çço©­ýÁ†¾Wëj[«g—~cÉœ7þ}uŽÏ¾'+œ÷äóBœ¬›úõ0Ä…ð³¶Ne'»Q¹‘¥<‹4â™K2‰ÌCC–`ÒœFWœ5æFOqÒ<)!•ƒØŠÌØ|Ï3Ì ¸‚ŽRÁÈ;ÄA¯œè(ƒÇüljfë®™ÿ)K—™D_:3Þ.êá¬>`YÖ°à{ý¯~¸vŲÕm¥ŠÙì¶ÌÙÎ%â I¹D©P•x®|Ö¦|vù™ovìè«­ÏÕß:Eº$ݲ ¦XSÐÅ*£‘=¦¤-ãÒLÓ¨éa+iM9‰°Ë5̈R.{%ƒù"IFÂ`,Áްà!Q9QZ*8Ä`j1)ÒñE@½\&—.5 HwìÐÚ'ž9‹ã8cò÷sZì†\GÎèCD_?Oþ[ò?6¯’K m!„('ù%x래‡ Dy9@“I*ލý¦ Ãz.zƒyÔ$½OäX6 V…Q8® “ÆS~͈ç’é$r`X´èÐDŽÂÀ">ŸnU*Lb‘FL»ì¿êÊL⼦œ+Ôõ*©Ü>¿Ùfî6'»­z.á/vá÷h*þ–Ž d aÓüy¼_GÌŽ$ßås5*ƒ·’IU¹^¢ÆSªS3@èGšÛ7¥ýÓ[àŸ,Ðü@Ìê519£ ³}7ùZ~^~S~g>éßM¿šÎGp@â –wÍŠ|­ã!S<ðšå'ÍxŠç7.˜ßôîC;Þhjh]°`þÏïð30KæÔ.±˜­Ý²tîì¥äºøùÁª©o®©©ú§Û^­«Y° ))[Ws¦°r^cEéã‹×˜W1¯*µQ§È÷Q-ú"¶U’Û&¼seUÚX¨± ]¶XÛj/­Ò® lun m/`23¹p8±í…Y+›3§š®ÑŠ 3m­ è½6[„ËTÉöTÏ «Akîá8Yié¬A/özù<Œ Œm´¬š F*øYJK­0üùJ]qmmÝp®‹)µÅ&² [Ët9¹ÅWR6‹«¡µ0Ù-£æô²f)‚Ã"!šaØáÔ!ì=çÏÏí=r`ÛŒ$y^¸ “]%Þ`%3 h†y§™¨Ë䖦’2+(_”v²-§N%äÏÕi ²Æ ­ž“3¹na—®®wI鉨½±‚èvÅ”râpNyž^¬Ä篈4Ö.Ê=Ui¯ª«#U:¹ÛÄÞ_ZÕY¬w’–Œº:Ý|cãꎦËu¿´®N®”gh¸»ª‹kb¤Î«§PN">äIžw úÜK8=ÁŽÔšž0!‚#5H\¢¤„ìz+¬Â n‘ƒéÉpu R‹ÖÉœ%Ž¥/T ä­Ì»m³ÆÄTe—ô»º,[Ïn´‚I÷¸Û¤r÷Ý‹+–”$ŸaÍ¥ñ7É£²héË“½ÿyÿX0˳n®#Ïffã®Ýñ¯ðÀ¯óŠ@åØa–ô5~öá7º­™½]©TuÂêƒuûCÉiT޾ÛRcZC¯ÎÝLî 7çJõæáH$J{¼Ã^Òëõæh ÂEcÑÅÑžÈæˆ,5ë)zVy)#m–vJ¥©T¢yøï„7¦Õ{£‘’ðN½™±z­Rfç…\r¶’:!‘ÈNüJФXîØ Pæ‹ B@†#©ƒk0ÍoÂ)‚ a% AÛ‚š² ‘[Át•Öáµ´§¸ÀÀ‹"~Æä§1zïñ%š¥™Ëg•íÝûÈ»Zª8°^|î›Û·¼9«|™|©saNþÎ¥ýl½gþ³9º´®ù¢/ª!p݉XUËHïâ {nFé¥Ý‹//7Ç5{ÒÑ8-‹ïX¾¤?`XJþéЊo•VV Z^‚_$^$‚rÄü1,u/Çp3&Åßþ†]E.âÅä b%~ñ=aWà“©7¨ß«fQuǪ½Š¨¢Í¾Ö¾C±#Gj5_´ …•ôÉd”ʼQÒGKÁAüZȆ › RÊgTÖì•ùÒÐ×’ZX‚  OqlÊ”oŽcAk2ÿMìÂW|‹ðõ7“?½Ü:Ê-fÌ’ÈX›¡ŽÅ¤¥uO,¸øÙä㻽uNy3'ué2¢ù}[ðÇLþ "¯ú^KÝ ÏùæèÔz‘0o©;ùë)ÔðP4:'ËŸ~¡ ‘ùZéUÇw# æ{@4`&0ê1 ±ÌU‹Ý)• 6;ŠÌü3`³ÏxC÷;˜û#^‡4òZ´3Š©gÀRŸ‘¾Zê*´öØ&3†ï5æ Ö9!XgG: »¥e¦ŒóªeΘ¥ÉHŠ®W œš:º&'¼=ÞÞ–Åû;ª«» s¢çÛ/450µüß­ZкkèÅg&§Ü¥\5Þœ³!'§¢v~V¡Áè0!ÿ òšgM¾°æh¬´¡Ú™{üΓg„©8Dgç€ÃúP>DhÛb‹¬¾ ¯Oz{ÁéÒ?—_Ä÷{îòH<|Ñ!:ŒÃaeö£ãVrö£ªq%¯óg¨™bÿ=™™ºH††)ŽÜMž5ÇcDné°uL9¦{)« ¬ (#p“z0!†ö¥¥"¿™! 7QRŽJåD§Â9(φ¢&%Ù±æö%Ëÿp<ɲ+ ^»9›]Ä’$æ1QÍßÛØøÜä•‘C¹¹ðÄ5‰§ •´beÕÖ#ÄþÐÈòþ#Á\_#©–Óù~òw½×IÇžœ·>ËÕäEx×–ûHœüìhòg‡ø³·`LˆØ\pú.Ì@+ò¢ª˜Ÿ?: G™‹:UG1÷M› 4Œ0§ðIL©.Fr,—û}â~FP ê‚‘¤x,é0Å®Y§çVÊ7‘Óä,„ønr¯-¢çl\†¾Î‰O;Æ<Û¡ÍÍ 7o^¸p(m5|£6 üíÊG|¾Q‰ªáöÛúû…¶ £¾FÝ‚hEŒïtº‰¬CHÖ)”‘2ãÔ9Î’ZÝ8Ãß3-‡;þbRê¾æ4ç`z,K6ÌŽ1c–—BÓ¡¸@L:R]JmŠ·Âп>àà(I¡ò…AÜÚ½lùoÙ}Æåì•©ÌNƒßš‘åè°46`frÇ®§gŸ|ÊÚöíhIdrƒ§ˆ‘ë…pB%gräÇ|Nm ¿óÛ±o$9 Þ¡ |ô’E cf==Î,1Žõ(a&³Ë,tËIWœˆSMòÊ¥mö5Š­ävÅ`ÆV—VÓ2Ŭëõ:Ò|HM¹Ý,p1÷‰aóÌ ¯3œÐŸÍnÊÆÖ»¥Öa ÜÌâ4± ¸ˆyü>¢¨P_õ\»bºé .½Hæ<9ùio÷ÆMkú°s|Ë«*–)Zë/}íõªhÙ±Îß]¾4xǼ¦ïûz;WbÓ3OcëêÞROqò«‰_N¾4ùÎóÿY×P;úDaëþHqÂâ ”O¤˜]±Ê_C1 Q°v©Tq41×cÚbµ²Z6—Cam8w »en-Ò¢ŒSŒÆÃŒ¸­'‘ »ª+sú(–à´€êˆ[Î3nK ?›úRúDŸyèãØ 9JŸºÐUåªu/ã»–º{3ïVnWmÍæ¶»´¬ƒU«T{UJŽå®Å.νÇíS)•nß^RA²jÇFÃHT&•WUÕ+êTÕšvÅrU‹f­j«b›F3çR2#âàÁM‘fD¡Œy¦NÓ ‰4™‘1ÆAþÞ‚d¬Û§Ô˜sÈsI £F !i¥THãÝ‘ŽZÅ—tÂéÂyR"@ùÄùôEØ>Hí¬ ?^…y%¾1P5Ä9áŸ^¥_ä6ÚkZ˜Í?^ùä½C]úe¹DŸ{¥Dj_YùËN–UæÉHì±ZÃŒ£†c/\üçÀÁ\â¹d+Öáœ/ÃQˆLI›YI¿qúA“K¢ÏT(ÒÑ)0™Öö*t{¬Zù ‰`ГÒC¹ÆÝd&t”qÜPHcø©|¸<ŠÆÊ_Ž7ÇãôŒžÐ?T ÛÜÆ1ÛKÕÌŸÃù¼C`ªÓpfÿ%Íg®®“7{„y€ëk˜L‘ÄÖN½×‘<‘ÉVdBªËìqXý™+MÄ»Ôâ·+m~Û21Å5s>0ˆöÌ4kÀOºÝQZ®'±J®)òŸð@YM&™¦”›lÅÇ@¢63"4JM‰ ˜ED§df¡fÑZã€qä¹—Kn}ÔMÒúq>2còa+wÂuP7F{«°·jõzš¼Øƒå5ý>îòçLNi6fT–’ ©oÁõÒŒ‚×¹$ý Øʸ•î°Ígér_ù8s­Áo »Wre° $·‘j¿ §¤yÖSÌ( TŠÛE½T·”’_hÇ¥¹«ôô!EÑ¡X’ÌÆ…|a´.,¡ð°ßã÷k=™Ô¡‚mäQÇx&©ÎÁ$=®ÕzXÝ_è‰{nó´ùÛs<ëü·ç{vøïÌÕæÞãryü¤iPØt.,EaÍS’áÌ1í˜é¥âiö$¾y€y3m‚wLêJu©Íaû!€}Ä-^÷^Í8g^tO“_é‰äû½º¿Øî3,ÌLª2o3úlæln™•t`6½ðê—V±·,µtrÙñG›=ñ3Œž›\C+×¥I0ÊÓ¯'ž}þÈK­¿Ûîß ‘)1ùoïNžz"ýžIR Q‹ bæÖXi©j¾¼M>HßY(±Œf\´"Š‘Žj—@œ"Gdf"ã”›`FÐ)û¹h8z z!J†v+!è÷yÅ÷ÞÓ,éêfÀ‘üÂú‰Š ‘àüobE^Ýõû/ý¯4вüg—üxò+ì½°è`Ðie;„ƒ¶:L m“„Ìj6Ve÷ì´df¶ÇÊ›0­ Ššpèoã\¯×zçèÍªÎÆ|õ¯V)ñZ¢ÈRb5q¿~sᮢ¢Ùaaÿðé/Žàlt¬C*‘ª°ÖàðÙ·°R‡ÕÁ .Ù¡²ÖYÛ¬Û­”u&•%¥!+ºÕÑJ.  8Z++Õ¡¸=(¾‡#>Oß©ÔS@´nØD×n v¤ö¯ß¼Ñ·šõ7nžÊYâ¨Ù3ÇX ;»i¼ÝÔ–K¬q¯K¹]ó"íUŠëvýMþtö}Q°Î‹î;ÌÒ ºaò×ÇÖÿÛ‰ çµ;}â±ê­mko£gÿ ÙSCùíÎütæ/&4Y-û p/Œ`C©Ü#[:YyÍVâþÐÒ-h›nêG’*¤¢^GMT ÕJI=Šj x õH'ÏC<™ 8€B3ª¥Î@þðÔeI>Š‘r´D’=õ eCURʼnKÈ%yÅÉGP¥dʯC´äTKz‘”ú&rH7õ™¬Å%Û‘FÚ×F¨ï©¡-,ú1^BˆaROÃ÷êIê÷’U’óÒgdír­<[þmE£âÊ:åkª Õóêz\cÑ|¨ý;:N?ËÔ0ÿ¬kN÷Ð:„7 ÂßæÀ7†JüW"ñ´Y:£‡†`$ƒNßE¡ÅiL"3Z–ÆR£õi,¼=¥€GÒXàáI õhÑÒ˜BNô–ˆ% W¢‰4¦€þ})b)È¥X—Æ2c‹ˆe —ãœ4¦P.±äj¼ )äÀm"V@+Fñæ4ÆHKhÒê!ìiL¢,±) uMi,¼:¥€‡ÓX†:‰£"V ý"¾Lcè)± äz’Oc ¹ÉT;ÕÂsÉei Ï"o±ä ¹5)Ä‘{D̈õ<›ÆB=¯ˆØ è‡|7A?ä"6 í!¿Lch•j äFŠOc y¨b›…òT{ å׊Ø*–ß“ÆBùoˆØ.Œõý4†ñ¢þEÄ™B{¨ß¤1´‡úXĬX~*¡¼D!b0^>a¼$açå%õi,”_"`¹¨gÉ@C;%w‹Xl¿äi,ÈŸ°:Uþÿ¤± GÄ¢þ%ÿƘî_Z¶ööuu÷r]wôp=]C]\÷ÀàökW¯âòKK£Ü‚µÝ6 ô qU6v ­¸#—›ÓßÏ-Jmâõnêݸ¥·'·¶w`ãêµ]sú{®Þ•r‚ôZ¼´wã&¨‰‹äæ¥å9×–Y»‰ëâ†6võô®ïÚx;7Ð÷5-A¨­Fá<„ºP-\ µ­…wCîÚŒ5èôñM宿ôANÏMù)iXÏÐM¹i9¹—üòuòûp>}c™ëòZÀa B~ätÕƒëP?G—ØRäPf;Ô°êXRåƒ+*Å¡ 톼´ Ž>1·J|Þ xjY è” 9sP?|9´h¦®Mbª®½Pz‹Ø»ÜÚ<p?Èoõ¬50]öëäKÅçlJ·‰CxZ*º¡|Î×Ö³Vlqj¤„Þõ@þz¸nD·ƒLhÕߦ“i»XûW­&•Û×5pÝeÉæ›Êߪ„ð¼M7•œ–×€¥õCÛ¿€{>ÙÍuc~ê¾Mi øÚš¯–X*¢Ë¥¤ó÷CÝ}·,s}n3ä ÚØŒV¥õ·ý¦;nUæZ-ÞÜÞër)–ª fQUT”*¡bT9UO•ÞxÇ-Ë´|팾šSsË>¦¤õBOq>”»1ÿjN½è?a4nîŵy pôˆò›íc:ço±»¿AS½Ó–"ršgl@;nõß7gb4@ûîöL”ý¦ß|Ÿ`ÿÿë9ûo^бÿ÷o)TÑ·R8öà Z&J?Î>~üÀãÇ—<ñ¤ŽýÆ“röÉç³ØçÇ³ÙæcÇ%ŽQÏŽÊÙ££nöÈcö1À£ÉLpÄÄa+Ë>|àðñÃ{8|8q˜|ôœ}ŽØk¾`4öšBí|ü/ü_ç¬løŽóeGcç”Lôà§øÓW¬lÞ+½2ü ; E¿Œc/Có^нÔüI½Ë¼K4ýn:xÛAâÔÓ<{ Ž“p¼=f`ŸËºñâ˜Õºóè­‹†?ÃSŸa´ŠYÕ¼Šþîühð#âx¿ø3þþä§ö§ß3°?øžŽ=Ç÷áø8è3ì¢éÌwο:ƒÏ€à{Ã:6üaå‡M’îÏb÷g±ìËb÷ÁuÝ3’Í~sÄÄÞ?¢bïÛíféÝìnb÷Ͼ™ÇGðȰ•Ýe…v}g§ÙÝ õÝ3̱wÃÑ9<8LÄÞ~åÐÙAmV€öA€í¥Ý¼–sÑNVkwdj2¬6ÉlÑè FLšÍZ3²Y³)›5è³YŠ ° ÍÒŒN­ÖhÕÂ?ÈIer5IIÔjÖv¬‡¥•Ò&)IÓaº’n¢©J²‰$šÈ1’€ø5íQöYr–.“³d©œE%r¶¹'ôõ¨¾en€áºxn¢ XVŽ%"Áú„¢¹½õ4Æ·4Aì=‹QK‚Ú{–€‹¾jy{ëYl²GÄntïyè!ûi*ÚÚ‚™‰žúÅ­‰Á̶DD3ÛP>›6 m‚Oðk>§ß£„ÿyéJ¼ÇWo:ýË÷Ä€Iü’¯>­Ö³h.Nß; nž¹ d›†6Ocñ CÓYÂÓà;$Ü'(Š„ÒÁMÓw¦ObÑ LÄÿ ½ÙJp endstream endobj 66 0 obj 9872 endobj 67 0 obj <> endobj 68 0 obj <> stream xœ]’Ënƒ0E÷|…—é"ó0‰„Ò$H,úPÓ~±‡©dÈ‚¿¯g†¶R ã±çr'<Ö§Úvsøê}Y´5¦áî4ˆ+Ü:ÈX˜NÏëŠÞºoÆ ô½—eš¡¯m;E¾ù½iv‹ØÌp…‡ |q\gobóq¼øõå>Ž_ЃE”¥0Ðúœ§f|nz©k[¿ÝÍËÖ·üx_F1­%«èÁÀ46\coQTŠ¢ªÊ¬ù·—$ÜrmõgãüQéFQ*KÏ1q!'ÄŠê)s‚œ1ïs†œÇÔ»ãÌòžù„|àüù‘9F>rN…|â:埙÷Èq†2âoa¦d…9rõ§3ìŸR}õÇÉþzJöO©ÎþêŒÌþ9þ—\ý)“ý•Bf•#³NÌþ)úKöÏðåê>1û+¬ÇìŸ+º¬õVðÚp®~ÆAè»s~høhðö; ¿ó9#vÑó ×иR endstream endobj 69 0 obj <> endobj 70 0 obj <> endobj 71 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 10 0 obj <>/Contents 11 0 R>> endobj 19 0 obj <>/Contents 20 0 R>> endobj 26 0 obj <>/Contents 27 0 R>> endobj 30 0 obj <>/Contents 31 0 R>> endobj 37 0 obj <>/Contents 38 0 R>> endobj 44 0 obj <>/Contents 45 0 R>> endobj 72 0 obj <> endobj 73 0 obj < /Dest[1 0 R/XYZ 56.7 648 0]/Parent 72 0 R/Next 74 0 R>> endobj 74 0 obj < /Dest[26 0 R/XYZ 56.7 709.6 0]/Parent 72 0 R/Prev 73 0 R/Next 75 0 R>> endobj 75 0 obj < /Dest[30 0 R/XYZ 56.7 434.4 0]/Parent 72 0 R/Prev 74 0 R/Next 76 0 R>> endobj 76 0 obj < /Dest[44 0 R/XYZ 56.7 550.8 0]/Parent 72 0 R/Prev 75 0 R>> endobj 54 0 obj <> endobj 50 0 obj <> >> endobj 77 0 obj <> /Outlines 72 0 R /Lang(en-US) >> endobj 78 0 obj < /Author /Subject /Keywords /Creator /Producer /CreationDate(D:20120925225641+01'00')>> endobj xref 0 79 0000000000 65535 f 0000469588 00000 n 0000000019 00000 n 0000001899 00000 n 0000060863 00000 n 0000045108 00000 n 0000001920 00000 n 0000045086 00000 n 0000060841 00000 n 0000089268 00000 n 0000469732 00000 n 0000089290 00000 n 0000090866 00000 n 0000119059 00000 n 0000100104 00000 n 0000090888 00000 n 0000100082 00000 n 0000119036 00000 n 0000148958 00000 n 0000469878 00000 n 0000148981 00000 n 0000149578 00000 n 0000167775 00000 n 0000149599 00000 n 0000167752 00000 n 0000200270 00000 n 0000470024 00000 n 0000200293 00000 n 0000201779 00000 n 0000201801 00000 n 0000470170 00000 n 0000262787 00000 n 0000264225 00000 n 0000313543 00000 n 0000264247 00000 n 0000313520 00000 n 0000324718 00000 n 0000470334 00000 n 0000324741 00000 n 0000325812 00000 n 0000336715 00000 n 0000325833 00000 n 0000336692 00000 n 0000384154 00000 n 0000470480 00000 n 0000384177 00000 n 0000385504 00000 n 0000398355 00000 n 0000387533 00000 n 0000385526 00000 n 0000471681 00000 n 0000387511 00000 n 0000398332 00000 n 0000428674 00000 n 0000471539 00000 n 0000428697 00000 n 0000445522 00000 n 0000445545 00000 n 0000445734 00000 n 0000446337 00000 n 0000446777 00000 n 0000457390 00000 n 0000457413 00000 n 0000457612 00000 n 0000458051 00000 n 0000458350 00000 n 0000468309 00000 n 0000468331 00000 n 0000468525 00000 n 0000468964 00000 n 0000469258 00000 n 0000469311 00000 n 0000470626 00000 n 0000470682 00000 n 0000470874 00000 n 0000471185 00000 n 0000471384 00000 n 0000471844 00000 n 0000472004 00000 n trailer < <9D2B0C3679696F2F7D5E31626BB65145> ] /DocChecksum /D3B4C393C7043145758E91C6A9B58C2C >> startxref 472581 %%EOF apache-jmeter-2.8/xdocs/usermanual/build-ftp-test-plan.xml0000644000175000017500000002044412032647214023236 0ustar ebourgebourg ]> Martin Ramshaw User's Manual: Building an FTP Test Plan

In this section, you will learn how to create a basic Test Plan to test an FTP site. You will create four users that send requests for two files on the O'Reilly FTP site. Also, you will tell the users to run their tests twice. So, the total number of requests is (4 users) x (2 requests) x (repeat 2 times) = 16 FTP requests. To construct the Test Plan, you will use the following elements: Thread Group, , , and .

This example uses the O'Reilly FTP site, www.oro.com. Please be considerate when running this example, and (if possible) consider running against another FTP site.

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Next, you need to modify the default properties. Select the Thread Group element in the tree, if you have not already selected it. You should now see the Thread Group Control Panel in the right section of the JMeter window (see Figure §-num;.1 below)

Figure §-num;.1. Thread Group with Default Values

Start by providing a more descriptive name for our Thread Group. In the name field, enter O'Reilly Users.

Next, increase the number of users to 4.

In the next field, the Ramp-Up Period, leave the the default value of 0 seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will finish starting all of your users by the end of the 5 seconds. So, if we have 5 users and a 5 second Ramp-Up Period, then the delay between starting users would be 1 second (5 users / 5 seconds = 1 user per second). If you set the value to 0, then JMeter will immediately start all of your users.

Finally, enter a value of 2 in the Loop Count field. This property tells JMeter how many times to repeat your test. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.

In most applications, you have to manually accept changes you make in a Control Panel. However, in JMeter, the Control Panel automatically accepts your changes as you make them. If you change the name of an element, the tree will be updated with the new text after you leave the Control Panel (for example, when selecting another tree element).

See Figure §-num;.2 for the completed O'Reilly Users Thread Group.

Figure §-num;.2. O'Reilly Users Thread Group

Now that we have defined our users, it is time define the tasks that they will be performing. In this section, you will specify the default settings for your FTP requests. And then, in section §-num;.3, you will add FTP Request elements which use some of the default settings you specified here.

Begin by selecting the O'Reilly Users element. Click your right mouse button to get the Add menu, and then select Add --> Config Element --> FTP Request Defaults. Then, select this new element to view its Control Panel (see Figure §-num;.3).

Figure §-num;.3. FTP Request Defaults

Like most JMeter elements, the Control Panel has a name field that you can modify. In this example, leave this field with the default value.

Skip to the next field, which is the FTP Server's Server Name/IP. For the Test Plan that you are building, all FTP requests will be sent to the same FTP server, ftp.oro.com. Enter this domain name into the field. This is the only field that we will specify a default, so leave the remaining fields with their default values.

The FTP Request Defaults element does not tell JMeter to send an FTP request. It simply defines the default values that the FTP Request elements use.

See Figure §-num;.4 for the completed FTP Request Defaults element

Figure §-num;.4. FTP Defaults for our Test Plan

In our Test Plan, we need to make two FTP requests. The first one is for the O'Reilly mSQL Java README file (ftp://ftp.oro.com/pub/msql/java/README), and the second is for the tutorial file (ftp://ftp.oro.com/pub/msql/java/tutorial.txt).

JMeter sends requests in the order that they appear in the tree.

Start by adding the first to the O'Reilly Users element (Add --> Sampler --> FTP Request). Then, select the FTP Request element in the tree and edit the following properties (see Figure §-num;.5):

  1. Change the Name to "README".
  2. Change the File to Retrieve From Server field to "pub/msql/java/README".
  3. Change the Username field to "anonymous".
  4. Change the Password field to "anonymous".

You do not have to set the Server Name field because you already specified this value in the FTP Request Defaults element.
Figure §-num;.5. FTP Request for O'Reilly mSQL Java README file

Next, add the second FTP Request and edit the following properties (see Figure §-num;.6:

  1. Change the Name to "tutorial".
  2. Change the File to Retrieve From Server field to "pub/msql/java/tutorial.txt".
  3. Change the Username field to "anonymous".
  4. Change the Password field to "anonymous".

Figure §-num;.6. FTP Request for O'Reilly mSQL Java tutorial file

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your FTP requests in a file and presenting a visual model of the data.

Select the O'Reilly Users element and add a listener (Add --> Listener --> Spline Visualizer).

Figure §-num;.7. Spline Visualizer Listener
apache-jmeter-2.8/xdocs/usermanual/index.xml0000644000175000017500000003220612032647214020551 0ustar ebourgebourg User's Manual

Click on the section name to go straight to the section. Click on the "+" to go to the relevant section of the detailed section list, where you can select individual subsections.

apache-jmeter-2.8/xdocs/usermanual/ldapops_tutor.xml0000644000175000017500000001470012032647214022340 0ustar ebourgebourg JMeter - User's Manual: LDAP Operations Dolf Smits

The extended LDAP sampler was built to support testing for very complex testpurposes. It was aimed at supporting the LDAP operations as close as possible. In this short tutorial, I will explain which LDAP operations exist and what they do. Per operation, I will shortly explain how these operations are implemented.
LDAP servers are some kind of hierarchical database, they store objects (entries) in a tree. The uppermost part of a tree is called the ROOT of the tree.
eg. When a tree starts with dc=com, the root equals dc=com.
The next level can exist under the root, eg dc=Siemens. The full name of this object (the "distinghuised name") is "dc=siemens,dc=com.
Again, a following level can be made, by adding the user "cn=admin" under dc=siemens,dc=com. This object has a DN (distinguished name) of "cn=admin,dc=siemens,dc=com".
The relative distinguished name (RDN) is the last part of the DN, eg. cn=admin.
The characteristics of an object are determined by the objectClasses, which can be seen as a collection of attributes.
The type of an object is determined by the "structural objectClass" eg person, organizationalUnit or country.
The attributes contain the data of an object, eg mailadress, name, streetadress etc. Each attribute can have 0, 1 or more values.

Any contact with an LDAP server MUST start with a bind request. LDAP is a state dependent protocol. Without opening a session to a LDAP server, no additional request can be made. Due to some peculiarities in the JAVA libraries, 2 different bind operations are implemented.

This bind is meant to open a session to a LDAP server. Any testplan should use this operation as the starting point from a session. For each Thread (each virtual user) a seperate connection with the LDAP server is build, and so a seperate Thread bind is performed.

This bind is used for user authentication verification. A proper developed LDAP client, who needs an authenticated user, perform a bind with a given distinguished name and password. This Single bind/unbind operation is for this purpose. It builds it own seperate connection to the LDAP server, performs a bind operation, and ends the connection again (by sending an unbind).

To close a connection to a LDAP server, an unbind operation is needed. As the Single bind/unbind operation already (implicitly) performs an unbind, only a Thread unbind operation is needed. This Thread unbind just closes the connection and cleans up any resources it has used.

The compare operation needs the full distinguished name from a LDAP object, as well as a attribute and a value for the attribute. It will simply check: "Has this object really this attribute with this value?". Typical use is checking the membership of a certain user with a given group.

The search test simply searches for all objects which comply with a given search filter, eg. all persons with a "employeeType=inactive" or "all persons with a userID equals user1"

This simply add an object to the LDAP directory. Off course the combination of attributes and distinguishedName must be valid!

This operation modifies one or more attributes from a given object. It needs the distinghised name from the object, as well as the attributes and the new values for this attribute.
Three versions are available, add, for adding an attribute value
replace, for overwriting the old attribute value with a new value
delete, to delete a value form an attribute, or to delete all the values of an attribute

This operation deletes an object from the LDAP server. It needs the distinghised name from the object.

This operation modifies the distinguished name from an object (it "moves" the object).
It comes in two flavours, just renaming an entry, then you specify a new RDN (relative distinguished name, this is the lowest part of the DN)
eg, you can rename "cn=admin,dc=siemens,dc=com" to cn=administrator,dc=Siemens,dc=com"
The second flavour is renaming (moving) a complete subtree by specifying a "new superior"
eg you can move a complete subtree "ou=retired,ou=people,dc=siemens,dc=com" to a new subtree "ou=retired people,dc=siemens,dc=com" by specifying a new rdn "ou=retired people" and a new superior of "dc=siemens,dc=com"

apache-jmeter-2.8/xdocs/usermanual/jmeter_distributed_testing_step_by_step.pdf0000644000175000017500000042403412032647214027624 0ustar ebourgebourg%PDF-1.4 %äüöß 2 0 obj <> stream xœ¥ZK‹ä6¾Ï¯ð9à^—$Ë64»{’ÛÀ@KNyA`v/ùûQ©ô(½ìž ÆmK%髪¯žáÝ¿/_»¡ës«A˜ë´àõÛïÝÏ?tÛ—ø÷íÏ—ýýÆå²t“æúþ[÷éŒÝûŸ¯¬â:ˆU]¹öæVÙ+ÝkožëaÂ×3\Öü˜اÛÚÏ×a_³é73xÄù÷ü3.ÀÎ}ÅËcíq ™{k¯í*æ^‚H„øq¿¼ÿôòúþò–|ÔÙéeº(:¸èüÁÞÓÖHÞŒ§RxÞ…ÓÛ³Œ pwzí—+"AÞîævrnx¹ÓiqÀNChôcek#Þn]†â Ò2ö÷BSÀBìTôj§$ß/y#q½;‚*œ;ú…0$hiº'IV΄r@âm<¾=píì)@@rsé·txDÌHy…1" :l!_ÜZ›tưd¶—ÍžßkT_ajŽšÐµ ËA‘ïµMmÍ´ÌÔfò±½ ;¼n«*AOí˜Wk‹V½Q£^ùÆZdüÁ–ËÁ¬ª6È[4¿ûé ގǾ¥‡!Ø …Ñ„ƒË)9FÒ2ÂÃãõKnfþs5MþD¨Vd~Ìú™¹pmE M>VzýˆÓîž4s†¢š3 o'f>G<2 çç'UïTk‚Iöøðà~:Z€PÝ" ù+Dî‘ünÔ3”äx™2œ^Op*¦4mÍ3ª;4<Ö°÷‰9¥ü~„ß©ð0íã 0Ž :±‹1_‡M pÃ÷À ƒ*·!xig³n6<;Ï“‰S–µwwMx>O§FÅZÊx_ êW ÜPa˲@#Ñ—¦Õ$z2,!E¦†å€Ð Ô¥–zÉÁÚ<¨2WTOšr¸Ëuö! ‰šz®´!hzmx’ü‡R '¼zg·,ÃØ<­ Ñ‚ßêkÜŸvsö”yá” ®W¡Nòp,Æ¥ÙWžœQ»×OcO Te«Ð¢µ)Ëe¬ìÊ;<眄±7jùn1NÏÁìÆ”ÍýÄ+ß;JÈ쎕0.óEg'žŽÕPNùNE(»Ñ05‡:¤ù„‰ƒ—qüHéÜÀ#ï#»_FèV“X-¨Ä<˜ ­†Õy¤!ùÉ,à¹,9؉qÊ"4îµD”“YRŽaRg¹¥6§ÔÀJvÁ Œ­äì¢ø1•³.©Ü%ÜS¯è9íl'üΜECiù³Ìbç|7/Ѽ=Õ2PsØöªgWýæ(f>«Š\pX0"lxÜ!+@ñ.‚Ä$*V~©Sª´Lañ=æà¯>çV,qbtp™pÜgkÎP³FA&kÄÀ:ÍŒcD3-ì⤴Õb¦Õ’þ˜oÙ,’!È"AbWPæs!è\™Q—Âg=¯È4¥:}­…l óq;OY }ªá!ѧ,A&pßYzˆ(©]e¬ u‚CÝ#RÛ< 9vèâU(oÄÃÊ'´³b¦èþ4½ÉðcVD¦+*ý‰Lj=_—cøÞvh.Ÿä8r¯dþ¥·ê[ }†}k3n¥±(À½Y LæÙdJLÀG™/~{tΧ¾*äéIú¡8ÿâ’TÃÅ7V¨˜@››XóD^fS•^Fð™>æµLAͶ»‘—¢5~ìµäã… ãߺ¯LC'µ°!W€Ì5þW>Êp5þº_¿¼|úñ‹êîÿt$êà¿#Þºÿ½"%â endstream endobj 3 0 obj 1816 endobj 4 0 obj < ] >> stream xœí] ¢¾§PÀZ­[7m§í´v:Ë{ûËí÷ÿF/ ¸ ¨€!$rÏÏÉé=¹¹¹éÇ@ @ rD¢&œ^ ùEÖê†P|"¢ð©C ¿hMø¡!4ᇆЄB~hMø¡!4ᇆЄB~hMø¡!4ᇆЄB~hMø¡!4ᇆЄB~ˆšN¡ lˆŠó[6ä5c_ó{b:Øç·Ú#|¿Ù$MÖžíÓ¥|›>}›÷›U°Zkâ¬UKè±G´²ó[6dÙ¦åm¯c;–gu{A—téÇ ”7B—,”ò¡ie--•*”Š«ÔûQÎP¢¥´ M›(zYBéš6!ýìb9Béš6!9¥(C(=CÓ&¤v7ù&Ó84m@âÒ’d¡X4 Y±VªPÇš6!gˆ(Ô±„¦MÈøË¤Ùî˜BÓ&Š+äu|¡iE/-Éê8CÓŠÍá% ®jž_/ŽïE uÜ¡i…--*TBÓ& ZZ*P¨Š„¦Mò‡&T•BÓ JŠJåK¿$Aô°¡*;æÅ!¶³ŠJ‹K¿ä@äð/Ú¨8æÅ îÂu¡Bé~~½ˆŠ…ÂД 1S@aBïI YCÓ²´t^¿¾¾þ}Öœ›`hJƒ|CÎùõIì^B?s»†¦´Èl©³ŸoLœ‡Ëïÿ½¸ø~ùÀ6ß~æqN MYéìâÙ-Ueöã}b,1xÿ1£¥·Y¥ÂД©ÃÄ)“éòÝØÄû/&U†`SÉ“ªw×§¿& 21L~LÓú&†¦üØ»´ÄÜéþ뙾ާt* M‡a÷ÒÒé#ÀÅ™.è p¯gbh:;F¤óßa¶Ë"§šÁt§cbh„m†<ŸÂÃx¯N4RÝïR C“H$Mé¸w?H¡«S¥¶øL¥Ï¯‚Í(òétâJ=&)…¡©¬ÍË~Â,͸~3¸]?†¦Â°NjIIî6|¨o=B8KK§¿Ã÷ :±Yúj˜ÂÐT8¢¥¥ëô*Âü\C“ P;Ÿý=ÓÀÇ@?.ŽyQû.— ÒM*.Ù|/ý’ŠÓ)¬¬HŒïâŠôGÛ\êŸ8æÉÅop¿¢À`<™ŒÇƘ9ÖddL®úön£IÌ×.á_e¯áÛŠ£ax÷ò|÷yd< ï†7/¯ö>0àõiU¨oðV6ñŠá `êÎ`¾ñr3zîGá»kÃà¤\*ðˈ Õ7ÂôûýŠ¿°¥~ÁoeS¯þ‚?·u52nÆT(þ¾!Ô7ø«lêÕÂ|Ý"Ôøj8ܽŒùû†Pc˜–M½Z€¸£¡‘¸ +µØäܸyyÚ&Ì:. ø”ˆ­¨­.KdÂ%àò‘DÔ㓾 ¸€ë²ÉW ×ìÊ£¿–oÄ2¥É(Ê—ø:Ä`ÄjFÑ¥~ó÷pJ*¸P¯}ªÉÕÕËÑÿ<ü|ÃuúÌ_ØÖÕUX4öA¡¤â¾Ã+*TÿÕ˜\Ïã†Íûn†l2øüdŒŸFWó"ƒ~d¥á>(”TÔédbÒgBÝ>S§ŠÑÑçMp3ìû!› ²æSy¶ÏJ&ø¬i0ù|÷Ìtxº ƒê•æ¿“«þóšP|œžKÅ9ÌB ŒQŸÅ¥~¤S(T´HË]m)T¸Ï= %lñœipsÇ´þë|‘œÇ¨¾q÷úô<½°™ÅË ÿŽ{|\™‹GøÊ… a80>À;*,»ƒ¾xNßÇlW¾ñOHÉÅmÆKÅ–ùîÆU˜ˆ"Q/ö¥Æ=4ʦ^-œlûá.L¢ ÆÒð×ÞŸ¯%áO8)›xÕЀ‡B=àÈ'o±ËÒáÛÖI! Ão9\ê×äãô÷ÌQêOt¨2ЀY¶‰ß`†×ŠÉG½qz’ñ|ü%<–ͺj8ç?é<›füþ x•¬T,„Ö€ 3¿w€ÿà­Yä¡^_¹Šè í¯­Çü·Ögøëj)ذómÚßÅS¢UG·*tÈÛˆ1ìNHiF¿÷ÙÊ]&ЭŠD­žxá$»·Øþ'1mЭŠõ­‹Þ?îwçS“KØ< …n% CÞ*S€‹72¸˜Á4q)vÏq™p¾¿çŸÌ¶H5øö@‡½mîˆn%iïÛQc·þÝœÿ¿ÏÞvžÙ@·:õäùC"ìfÚ?¾-Åš¼gwÔÞ-ºÕAÈl¾Úí”ß–þþ’ážžÞ¦“Ý*'’R¦¨]ŸLÿG`zra Žn•[R¦´ß®ÕþAŸÙ¿ˆn• »R¦´È›Ì¢[¥†˜^}ÀªÞ.R¤LépÐòÐ9Þ#n'DÞêðÀu<¼ëâvdI™öãðWt«$á"VÆÑ­Ö3eÚ A§0Э–8,eÚzTQB·â‘2%BäIAt«Äž½­´[ K™!ü4{1#´ò(¼‹p=DÝJlÊ”ˆb.\©”[ÉYö,ê £ª¸U)S" ¼¬n%ñO,ôš½ãv«ÂR¦D}qåÑþXÙçN‹7ã1žb,6eJ„”þ~\WE—3 K²àñ¸•„”)òºú1¸U‰ýM¦ñ4w+i)S"$÷r}ݪì¬PºÝ´t+¹)S"Êèàº]¾©ßrF"ܪ„”)¥… %ºé>(´VblWÞ­ÊJ™Qî$La·R­•=[VÍ!ÊM™Q¶P ºUÙ)S"J-·R eJ„B}(óå¼{U„RáòMUR¦D¨#TÉY‹B)S"Tê£<·R*eJ„bB•Ò³UšËl…rB}Hv+S¦D¨(”D·R2eJ„šB}Hq+US¦D(+w+!¡DB¼½jÈ/‚´†T7„êüà…O…ù…@Ch ¡ ?4„&üКðCCh ¡ ?4„&üКðCCh ¡ ?4„&üКðCCh ¡ ?4„&üКð[6Ôt mè`CTœß²!¯ûšßÛÐÁ†¨8¿ÕáûÍ&i²ölŸ˜.ýàÛôéÛ¼¯Ø¬‚ÐZ“g­ZB=~´ •ß²!Ë6-/h{Û±<«Û º¤K?8fà±#Y^Û ô:-â™±êâ q4üh•_¬!°‡ÙmÛ­Žm´ì¶I‹:]Ç 8Ý üXµC?Zƒ_¬!“ð‡iÑ'kØ;-"–å5{AÛáˆÓñÝ•jY†8~´ ¿¤†ZqxC®MZÍèHm‡nòjÒî™ñj™†Ðœ+ÈÎ/©!â¹n×ïx¤éZt Ôuݨ€¢ >‰UË4„æüXAv~« ‘ÃP¸!*ÍoÑPÛU;¡¬:?\¢Ñ„B~+ 9>{åyò"[æË"ŽÍjø ‰’ÿE]s¹pR´!rñ[¼©ÉϱíEhK-›1:®´ˆÙ±hnÏŽÕá/lËuâVÇuɢΠY e.~„˜–ÊüÌÀJÉoeÖâ̡҆©ó·Ø÷[é’v—4»¶±É¿ÕZÔ™Ž’ ‘‹i‚,¡rñë-&çé…òÙŒÞôHhy“-þú,%!в¨lýŠUÐ>õëhf×K×ÐÁ†ÈÇÏõd •‹ŸëBæ%$þ}š¦µÙºÑd“7Ô³-ÓwÍv¬¡°ŽÒk;©:عø™m[ÚЗ‹Ÿï„úeŠØ&;ÍyRá“¶4ï*kB-¶ä"+? ¡ÁS˜_zû­5Ôò˜Óš½¹—ð1Ö$^¯Ûvì€ð-'h.ê;mcˆ¬ül›ŸR–_Ðt+™„r,°Ò 18ê Q™Ívià…½€"H;ÆŠ1Ä~t3Îuæ’ø-8ìâ—Þ~˜Pj ¡ ?4„&üàËßDáK!†@~!¤Ýy$¯!_ˆ‘˸sä‡@ @ Ä‘áÿ:»ÒÈ endstream endobj 5 0 obj 3765 endobj 7 0 obj <> stream xœYKÜ6 ¾Ï¯ð9€'¢$Û2`ð¼Šö–b=µM‹"Ûbséß/)êiKö&â±-QâãÓGÒ+ÎÐüwzkDÓ ¼íAâuéúõæ—Í?'q6ÿÿõÏSןe#‡î<4zñ pV4ùó»ýÃi—š©=h¼¾üÞ||Nm^>?'B 5·ý0ë äÜ‚žÄB÷j–ö…¶³p@L¾ƒù×—ŸN÷—Ó§â6z<÷¼äm&X ›_þ.‰ ⬠"ÏIš¹U“xÌí0‰õ÷¤à$®xUñÅ…U~Д+©ÇÈé¦×d¿lÍ]­h»iŸlÈ÷òNû:©k´w^”$ÇܬrÊ^Qqèݪ—yð¯i2k&hÔÏíÈCVYá´'“p ¬÷;ÆË-b¬ƒÆÄºàš#¥å‚ãÆ¹&¼E'"ü3)Ú‘ 7VaáeZèx%æ¾¾Q{´S2+F´G£kë¡} 1±05x耱ÏȽ.4äS…6É‚ }]pPi~oçÕj¾žw‹€e»×—àV§^²‡j¿O;ֈ״q³ar×k@Xâút¥pÜð”â0{ãMëùXÁå%TOsõö”¿uPcù£ÒºÜ±ä×ñ ÑÁ.`îlxüªßׄ’`!Iêó¸¦*Iê!_¶ÁÝ W%Z3",ô¬«ö”Êšh¬î6â,]Ž›Ec ³4f]ä·d‹sPÍ#«@—Îâf0J[¨ÙÀ+FÉàoÎ|t¼e9Àíòf–|9Ú‰²KV¢„5©O]6£ÜÒHù-²< åX]‹-Çðm N`0QoÑq'ÌòëÌç|ÇÌ:‡pIT“½¢q5&ù!:29*Öƒq §$K)³’;Þ›Iéü#HµøÀ¸)ê\Ÿ±Eðj‰-|P™’¶D©=‘DŽ,hÞú,˜$^~d©p­BÈÝûî,»²\±Ô€£"`‹ƒ#àôµÊhÇAª(Kv2ü;…›Ñ¨ðV$nk¶zGEÒr¡0‚ðY§—ÝŠ$X’ûº|·O” ‘Ìh‘˜b×gX}w+Ÿ]|¶yÖëN„XbNrð‘iVü¸.1m«‚ËñLšˆÕ•Nº©›{µ‚Þ÷›7"ÏšÇzwë .xXŽÃ{FQE^+ì” D%¡¸Æ¢ÀB,!»¾JÚguGƑȾ—LPÄÂ…,+;¤-QáÈâÌŒ6Õl¦¢Ý•`(ìçL)UæàXtÔ>æ±ÀÈËÉB‹±Êv£AÚ) kiè¡Yg-ñGÛb†‰@vÖ1ì ]]†ógQ7Œ"LÅÚ³TJ†`GxˆoÅÇ^{«”ù†o¹z+Rho¾KHFY •·»UŽH!i0|u2%Ž„HÊGÀÌ!1óž½/Bò¢ªHùÇíÒº­õ¤O:€Ìºkmd»-…r`öšÓbïîµOù)‚ȸ’V†ZC²‹Ið~/g2j6"Ϫ“L´ ÓŠÆ2ýž„y2)×0r¿T,•ÊZ»ÜêRî¿7³cA­sãc7"»É¨öÝé2S99+•@\ÿ G†$/úñ[wëûQêª{N&ò_XŽJZ™»d8pÉFÄE]â³Óp ¬n û¤’ÉAÖžEÒ–AL+Cl8"F*¹“¸ÇË»¦O­ôY7Ò¡ñxß²Ø"¾ï»• úh£ûȾ-•¨7í¹`Á£såªÖF_=ÚXÓ+ á–G ‰íX£/é'ÌWʇïÙ—‚”=«ßF4%ã-Žö{iÆÍÙGÓt©ƒ ët,Ò,’uÞžxaÌ{<_:•ùôÍ|l1ýüOÍ[#A’bĵÁÐd)<þ¯Soî-­Ë#©Äo¯§?¾ŽÍí߆—Ûù;×§ì?Ôµ7R÷ÔêèûÀ-øo\<†’]Òù:v>tïxHNsC:B ”F½í Ò’þ¤æ‡‰ü–Lä‘D€-Djp&²‡þá\í¡è¼¦êièAå<Ÿ¼Ô—Ó_§ Ù@däâ''K&ð ¥Rn¡¸¶t ÷´δhR¹l)»±_i­R$×4Í®r€‹ÿhõ<â endstream endobj 8 0 obj 1780 endobj 10 0 obj <> stream xœì}`ÅÕ¿¿BÂÇB¨B  j€Bn¸Écl¶Á\eÉ–m¹7¹¹Ë–­Þ{ﲊ­Þ{¯'«Ù–%Yÿ·;w{{ÛnuM§Óûñ÷fgæÍ¼Ùß¾™Ù†ºÚË•„¸h¶|4ÛÅ’ÄÓÃÈÇ wLXëë—Þ†‚‚‚‚‚bI2†Ðùy,¬Å’¤­µ…ÐÜ‘jË`:2hy8¸ Åòä£Ù¶§"ëU¢ HÈ\·ÏV^šs¢`DdkþEÚç6~å¥I뢇½¾¦4Â(iç2×Òa¯ÝÈmƒ aº•((b7BÖõþÁÁÁÏ ¸LŸí´Õ®p' ʾ€¡)µ³÷€TŸo¼jÊšrÄÑ+mÚæ”þÛƒ=Šb ;&|¹½Çdûd­…Ô_EØÜ¯é ÏãU7 ÏKû¼p-Õ'«ÍüH­'® 7T+ÏßÙ¹F=¼%³‚LÛ¡6þNçp¦)÷jkJÃÞ„éöT  ˆ û^˜í”oâl¡ßkì»=(‚ÏW]rô—«ÑÖÞcKãMHu­.î “Õ”#+<—_-1N¾ ‹H °ÏɦޮæÌ‰«Ý¤ ©§0Š&Û'as¼¦»Ýâ­wåAžÝ­…ÖÅèœÃ~¿ŸbÚI­ovWM° 3ø•`@#¯y]ë£jÝvuÒº$æ' 1'~êö+g‡sø¼ULSÎX}ixSjm;iÙë[Î !Lçè_Ζ‚2EzJUùÕ²ªÌ¼ê‚¬º¦æÅM á$G¹²Á)n–½×„U—ƯvŸºÞoþÞTÜë[6ÅÆís÷)»2öøQÑf¯¡žºgËünGÀ¤Õ®SìƒÖ¸–lwNž½ÞsÂj÷YÛ¢·û•‘ ¿ FfÍX¼=bNZë³øXsJ}‹Ï£ýJVŒ´^ç9a•ëd[Ÿû’vù•kíú8ñ%*2gÕ%æö!–[}ËØÕ×¹¦ÛÎFC´ñ«<ì¼Já§ýø9Á&ˆ±#{|²>_è¿1sçNZË^¿ÂÉ6¾=·s.LZ)PHƒœ£è‹“ùØÜFhî²™kÜŠn €ÞC›mM˜n¯_9[êjº®å4ú†w§Ä^¯ˆíë*½­‚àåÇIŽ2Beý‘ÐùEM=½·ûûúššñIiÐipú(è è¹È7Ê=«¥§o µ±qçnïyN-7úúúŠò‹¾Ú¾Í·ŒIXìŸà—ÓÒ}k §«ÃÏ;bæ¾ PÇÉv¯oÉ{ïƒem7z:;;cc¯Ì²Ùá]fmëÝÈ¡–^ˆ££„üüÜV þN_áŠL]íÓÕǹtظnõ)c, [M7œ‰šwª¢ÝîïµßàùÃnï5Qmð³·§iž]0ØmäÍN߸5ÃÙΦôIëSHàö ³÷—C íz7ÁBÄàE?Âæ6JsÛnñÚXÜ!•qa3öåèp'îtK˜¾-›Rq»?š¦Œê”ˆé{²Øe4òÊÝ!ÓêªÛ®ßè¸=0p­½#:&}榘]¾åÄàûÂJË[¯ß¸Ý{ãFQqõ[˜ ½ÃÏ^®ïè¸ÑÝä9÷ÐU±6›s ,Æt·({æxÎ>œ0uS*÷ߺÍ0ÝNáü篾 æ­. S…"¿X¯lh¸ÛUñá35,O˜n·o[HÎW¢c|N8EFF9r$333''ÇÝÝýÊ•+p––Æf=Nr”‘(;=Ò¦lH¸ 7×@^AMb^}e[ïÍÎò‰¶‘sX¬cy³TBoW_/¹r{¯7_ë¿ÝÛ£¼>Ëcì÷e3 o÷ß®.®I.î oÞA¯#>‹ 9Ù.Ûâá”ßMß Ýi¹µU=Ô©Ö¢ÌI›vy—îô.Y¾ÎcŸ²ë+žhµt³H|‡0ÁŠŒ_íéVÜRO·ÿVWi­d‘ƒ?t}Œt®éÒMîGèÂ\«Î¶%éÆõXxvŸ÷’ó…;¯Úà¹«ŽšÇ) µÞŸMm¶zm*ì¹ÑU n¿ól cp¶¢ k±¹ÔÜ'^h‚³=íyíâx÷U;•” ÞŒk·{ÛgwAWžo€ƒ¾›m“Öøíb•YÐÈßÚzuôÖÕ¶$gW'6ƒóN•9.ÂÚ1két™©b·^+m膓à#3övö ôõv÷ߦ3Øbï±@Ìæ›8^lËfºDægkñÕëÀªÝµãW»m¢ktÙ³•aºïEòŸ`ãÍo»¶nb…aªÐw}` ïf]KOEbÔ Çlv Óíò)e )InllÌ…óaaa~~~)))‰‰‰gÏžõõõMNNîë»ÕÓÓí :œä(#Q¶]аÞA=äÜ쮞iã:aµûÄÕ®s÷Äo¹˜§Ù!ä2ÂÎÊ9k\¿:UK.˜Êø„ÏV^:Xq]uÇ2 ;²Ç¯ñ™¾ÚõB#ÕwuµdNZŸÀÎvæá„)SÈ=»k 5=y}ÉvïF÷îÅPÂåëY]ßÚ ‰øb™·Æ•¿ÚÛz£ßo #è\Ó^¹ÓmƒÊz©Èu]TU)ñŸo»Ì·óµnaT'yÊï‹Óùt`ÉŒ5nå½Uà8fñ 9Ó@g+š¾+›ÛHͽíb¸õÎ šžãž4.€’-.QJÕÆ}êúˆ^%܋Ļhš'éç“OøMZt“&,ÏÝ^‹] ¥¼Õ½xÉfñ«\g;ø-ܰ1ššéëí©›`ãK\*@vpôxïë=gîˆÞêrEÍt=u ÖºM^N(>ó¤ŸÖ6bd‘&Ó1?s£vÓî­ç¾ÐöþÛ·n´ÎÛSË0Dþ3Wk¶Ý/‰ÈÓU#½·n4/Yç>e׬Y;5 K˜n‹{[€¿Ò¢£sbb¢Ï;ƒOˆŒLMMõóõu>uÂç¬KÒœ]žÙøÝ”o½½½kjª9ÉQF¢lvÍœj¢P=ѵµ]KÏ,ÝuØoÑÉœYkØ}TÓñ–G„NÛ9ms¹äŽnòøf·ï²HêæºÑU1am“°80ØzæÚ}~KCTÐÛ>~µ/;[ë=þ_oBú!Ÿ9§s¡„ËÖ¹«»>/‰ø“D*'sûL¶OåAçšBÚõ'Âæ/$z¯7̶ñÛà&`ç¹6nÉÝ”ŠôÃÊzmº?Õá*„œÝâ±äB>¿†28[Ñbç ln#5÷Æó‘3¶SÛý}ÝãW{±5ntŽ˜±½„)üβ kÃ9¥Úp&|ÎAŠ»oô‚;?aå%§zªÍ… Ÿo¾,mäe»|w„W4Óµ`0Ðw¸oÞ ¥¿²q]ïVH&}3ËåÑ¡Óö\™±Úµ”fp°‰Ö6bäk[7†é&ÚÅ3?é¦oˤLÔEÍЕ†…ÎÜ]C2¦“Ȇ;»íìOJ]k\Iª§îºB÷f…«¦sp+d 0]eddò™3UW2 }:ú÷-GŸþaÛ#¶‹°ŸsßÞî<´ügóÏ.Üž–z"s’£ŒPYw*fÖžX÷䊜JE+}³Ü¸µ|ç Õ…DõQ‡2­Uüœ±?zªC¹ä6Ø»/Ùí³,št•lBg©–……Ns¼ºfò¬ªëSg;c·²ëƒËÉ#:Ÿ-Gœb–žËƒâ-eu}l<%â/9-X‘Åë4º>Rë5»CçlúrgÏÒµ¦T>ûü¾ó®# ‹[¹Îsõž‘ÚºùÐ@Î…€™G³¨„{}—Eµ÷ß꘴Æg“[áOë¹…4”Á9а¹ÔÜögCfí­¦º÷ëMÖ°[ƒÓq®¥<öÓï)q÷ܸrƒ^¢„5ÛÆs¦”‘=¦oÏ%9'F_Ýáœx4ö•°_ƒé€=׹ЅIß$i­mĈ&Óű™nâ*×zãö@ßO¶î|¦Ì¾FÛ­;(yS/ª ‚aºM®l!ú»¯püú™}÷.søÙÛïX°çî¹ÎOÎ |eYò§«3m7W¦Æ÷÷÷‘e*œä(#Q6^ÌZ{>õ›õî“l<&Ù¸_íÙN?'n÷üœ}/Ôìöiv»„»¾ëíeÓÖ¸MZíA_ÿ]-Yíb5n±}±S6^&ù8ï÷žhë=ÕÎkâj·Uç¯| ÖþUB®om€hüýQkœ…+2{Ç&zެ³)¶g:D®Þj_™VPw9iîŽÔYºÖtÃ…”©c¯õSÓ×uÔª¨È™°.’oçåžèñœº´ˆ©ÛÓ!dÞZ·ÐξÖâøÏRàçOöÜBÊàlEØÜÆkn›ý~ßù· ’EGë8€ý¹æ2pù·áäµd~Øc¾“W‹y­×ü³4µÝøl¥«õZ× W»TLçÎŒ^fF·ñš4Û£ÖŸK›)n­mÄÈBM¦[ÈbºÏ7ø-p¦ ZËR&Ùû²™N"ÿešwõ¦@‰Èœ*öo„é6^ÊgKVŵÌòöÌò¶”¼ú´‚Ƥ«U©Ù5iù WÊÚèpü…8Œp’£ŒD±wŽ›º9ãö@eUSRVuFE'ýÀÓo»Þ}ºÆ…tU³CˆïB˜+°·«ÿfgW}§rÕ´ïQŸ'²4¯Ï«ßnr?UHQÀíÞ¬üšäü2òÅW»‹T ¿·cw}áñÅ*ò<™G´Ó?*jÚr‹‹ ¯Ø@??w¶\žd—0SךÎ]ë@O—4d%OZÞL?„Ç\ ˜uð ÇζNÁ_£ø¯_+œ°6bÃè # ÃŒ>èóåÉlˆ°z/§ðT¬¿ÁçOa+Âæ6^s·Þã =Þ˜çÙé6\{4pÁ¹zºšý mÔoПl¢ÔuÔ_ïL´‰DOÛrUIgÉyãªz‰3H1Ç¢Mîê)-í¥ ]ýôŠ #|¾NK1²p-›éb™ŸÀtS¶\^u0xÖïÙñkO³™îñ6]λ ¦¬q‹l­YAæÛp1e”‹ýùô¯vÄÆä5Ö_»I­Pîﯯk:ã4ïÐ{á€f‡à¨Ñ!,Þ)ÜõùD^Hoè¼5p½«Óß7júÎdÐÈÉvƒKÎ\zqyë[·oÝê­®m мºpOìzº„œ®O,þ‚Ýáb±¿på‹!qå½ô3soOô¢]Ÿüš®öøÁŸZéï½ö­­×ûü¿q£¸¬¿¯{õzŸçó4Lí’õ¹O 52ð“­û²Ã œnôͳq_ëBÅä::ý nsDC6·±šÛ9k²7ø•P”ŸìÜWrZ_›|mç~©•šÒ¢¾!`Cm,ti$ þ­›„‘—íö[XÚÔÓ7ÐßWZXºõR Ãt\rç®÷Ú^VÞF†Þºy³¸¤zæ¦` #XÈn#e×á’û…k8=DÙÕš>Ñ.~›é6§n¸˜g眽Î%ßN“éÖ]½ÖñÚnš±ÈÜKKȰ„éìáÊGõ²Þ9mîæ€)k=Ưº4~•Û”õþß¾BNͤߨq@ùsë纳ÊW;—9çÂÏ•»}è·hCH*æ ü|ƒßÄÕ®l¼¿Ú—Êhädk!{Éž°ivÔâ1ê`{ÿ¯vÇ®c•|bú=éøY>ã‹ ÞVÑcGk!dýÑ¡‰v kGMXåÚD?gžò›y4S~MW:P¯¯öY}ž:µæ`0ýf±çr:&G–ïð^“@M ¾ÖýhÃÍ®ª[S7¯ú|ñzŽ"lnc4·Í‘ ¯ÎPyS~òd‡nÃ…t­Ù×¥âP]·ÚŒü£cØç6n`‡éa?ô'o¸« ˜óÐÖcìå‘•ü¾qm¹}ûvOG‡—{èlÇT£ª³=—>Û!pö–(8þvOÔ¢£WM`p*ÒA»Y‰Q›{ɶ Y›8›=Œ¼fºþ[½å嵎ùÍ=4üEÂt¶Î9((ÆkzTaú¾ôa/‰VY±ßþn<54ì…¡Çæ…F²£Æ7.:reØ #&„éÖžËFAAAAA±H!Lgs6 Å"å»E߈mzˆ‚‚‚‚‚bL788ØÖÚ2ˆ@ „ÅÍt@XØLׇ@ „ÅÍt½@XØLw@ ‹›é®óÐÓeoeõ VVö‘ÝT Dõô䘟\>±ód+Ò_iOOñÙYV*E³ÎëUx¡üõ*!ß‘aK(­T‡’êJ*8zµc¸Ê‰@ †l¦ëæ¡«+r=Õ-¬ìê⟕A&tV¤CººŠNÏ„$3Ou©~ê[~™¥Õ!¹¡,¬E£Ú$]ûÈ)¤ñ ¦œb˜ìŠE #l¦ëä¡£#|Õ-¬ ïè äDèè(85ÓŠv 4’h… "&œÊpæÌ™<¥a×”g‡¤QL—`ù™@¨FԿʘpÈ”„ NšI‡ÌG̵6Œ¦q%P?è$ĤZË© T5ÇPm%V ‘m«°0°™®‘‡††@ª+° lh äG€ßªÁ"TÒ ùhNµÐù_9:ƒ· UÊÄ‘¯‘IBÓÜÑ+¬Tüòƒ6úçŒ3”Zêøfa'dG´¡kp @—“)ùŒ£GUè Ž­”ßvª ÕÕWŸbYžoµAlùõâ«TSõj±Õ¶ÒvA •A jÂ’Àfºz‚‡º:ÿ5¬ñ¯«î²\5Á›éjyxMühúÃdŠF­a<ƒˆ©#¨©ñ%tà[Sc¤è‰’kMkæUC †›éª°8°™® @ ‹›é*°8°™N@ „ÅÍté@XØL7ˆ@ „ÅÍt·i3>À—4›ÇŒ-e]¦©‹i´Ü–„iÊ`IZО†Õ2zìi7ÇdZÌ¡ÕØL7@ÂÊ­$Óh&ªlî6ž@þ&«‹i´ HÂ’jŠö‰ZF= G Ó™@‹9´›éúipãÕ}µ[ 0QMkñ„ÍtÆ®‹i´ôKÂ’jŠö‰ZF=-‰éÌ¡ÕØL×GÃ’®`¢Åuã‰å1]Ÿ$,©¦hÏ‘¨eôØÓ’˜ÎZÍt·hXÒÕLÔÜqÃxbyLwK–TS´çHÔ2zìiILg­Æfº^–tµµuÝ4ž2sHºAdX,Ö+ Kº6О#QËè±§%19´›énÒ0„Þ6E[3õW\¯É˜®£ç–ÒRQe=Ëí‰'âßz;ñùçãç/lÈ)äGc:ýË?\LwSÒe8áìî½;òóóÏÆÆEoÛ±ùø‰£ZËÀ×’q%=2*\Ž@L™5•oÏ 6Ìb~ÊI¥¿=õ‡å1Ýè±§%19´›énÐÓ =•VÙ±sÓI§µA>KCý¾¿œx¦]Ñ(¨Wkíb’S3sò2só®få\ÉÊJÏÌJ͸›˜ìæ–!³vÀDÝ7ûø“›››—Ÿýr~A~J ã:sÿýWçÍ«:~¼îâÅšcÇ2çÎ=õÀE^>œ|$˜nöÌYy÷½ÞßË7Ð? Øß?H)Áþ!A!A¡ AÁ”‡„ùøAdH²ôû¥ ÙL§§¾ÅnHB¢Õ€ÈöØ—{ê´“`„ý÷fçdí?èxÉÍEºÕøZÂ#®ËCtL”XærìIÐÖÖÚÜÔ’‘ž¶hÑ·Àn{÷nrttø i©—Iˆ,¡Eg{fËtííŠ8ßz‡¥û–^½š\Õ¿åi=ö´$¦Ó¡Õšš6ž?›•¯ïÇ»øLGú ±vÔ†Û·oÝîÍìoßsC±çºâhmáÒ®ÖE[_¯¦ëîîá¿|{ÑÓ«¨´\N퀉nÞêçK\|B}CC]=µïfSsssKKKkkk[x¡UÉɇî¼3é“WíÝS¼fU‰íš‚+*vïŽÿ׿Žýâ­¥eì|$˜îý¿üÅËÃsÇö5-*°“–®ë }Ý7úznô]¿Ù£²hjïÞµcçö­Ûþö׿*d3žZø“æ‰V;{îTAa~uuõéÓ'ã9gýü}Ü=.ÕÔÔdfeÂt«ñµDDRLÝ¡´@œ½™.ÚçèŠñ÷|÷ÑÏAæOyׯæ§#GvpdíÚó§¾–|ôóåŸÝå-à¨êiOƒÀ ™®­µ­©±µ0«iÿw+Þ­øþõÚ=ó‹ËKdj=ö´$¦Ó¡Õ^žú…mÓo×5[¶Î+±°¹UÑ&å $¥µvÀD}ý|IHHlljj€ÿåT}eûµk>ÿþ·çý¿I]:ïöÀ@‰Ë‘ô/ÿQî| Žc¬­½ï¹Çë“OØùH0Ý{ï¾ òÕ—óÊÝ×ûºTÒÍeŸþÞ>*«Ú–ί,œ?ï«?øP!›é´jéêì,þzaΤIŠ´4¾¾Åz$!Ñjà¬Áó\¥e¥'NcŸª®®Úµg{MM5\6…E…GŽ’n5ùL×ÚÚÂ.Œ¨èHñ‹B»=ÁA[3éþ˜M¿w]÷ÎòæÏ›÷åîÝÛÂÂ|hñ ñ‹ˆðstÜñÕWó D Y÷ÌêI÷‹iÑÙž2]me³›cÙî¯K–ý#þ§ «ÿZfóÒ¬¹L7"ìYÝX_ÛÔXߨc×,ŸéJJJ„ݦִ¦d:Zí…‰³VÕŒÝÐüû}]ï¬K[v:9)§ª®I'÷ŽÏtÝ4¤™®¢¢z3f+„jšïj”tWÙRÙݸ®§í\Ow×õžžÎÖð-öm©|½RWKk=Hfn^}}cGGGƒ&¼Cz{{‹KJ£b´ÖŽ0IIIàÇ1®œBÉr×àïñ_ÿ:èWÿÿîÝÇ(ËdEÁßä½ö!ÏüÊÿÿýÏÉûïgç#Átï¾óΛþó—_Ì­ll.óK*’Û5- ¾š?oî—¼ÿ¾B6ÓiÑ’X˜ø¯ìÍŸ•¼üòÙ»îª ãhá[¬[­ætòØ©ÓNpUøùû‡1§\.OLŠ'WÎÑã‡b㢥[M‚éJY8ïrt÷Þ*Ù¹Çq'ë§ZÜÜ/ÊÑhnjXúÏŸ'n{nŲù­m­eee‹/šÃB'~\úUÂÖç–üýÄꢳ=ù°Þàÿú‚ó p 3‰2]C}ã5ñß½‘·bRÀÊS—ÿ¹ÆÁº¸0S.ÓéiÏo.íZºã‡ã C¨¯ ’ãÞm±Y©‹½×‚–=þqµÔ³´ŽZ¤9Á-*‡³m’^ÐP™.I…D„Rµ¦"ùëÐj/ŒŸ¾(õÅi­*xaOíÇûëÏ>Z˜]TS_W/³ÈJð™®‹†4ÓÁc9°š’쪫Ÿ®®¤¦©!µ³ñÀõ&ûžöàë]å­µ›¯·èPäñõJ\- AïVŸ“rîCðÚêëë9>ݱSgϺzÄ$¥ìÜw¨¨´Lºv>Мšä::À#€úœ¸óΘ{ǤýcLÈgc®„RäžøÉ˜ŒÆ„ÿfÌé»î’éÓ½ýÖ[_Ìž3wÎUÍ×8°ÀkýTò[}ý½·À³ÿîP$ùË»ï)d3´–ÜÈo$¿üï¿>¿á™g"ï¸ãìOr´ð-Ö% ‰Vƒ+®ÊÊŠJÀh$µ®øuÇúi‡Ê6»—øÅUá‚Ït4¤™º,2RIs\5¹¬Ô×7€4T77¦_k<ßÓ´ñ–bwjì·miíŠ:¾^©>Óõ‰vßÇâ=¿íìê†þ­Ж˜–îxìĉÃkÓܾMu_ZpV°vótmdm¨’å::ÁâÝÝPŸ ¿þuÄÝc"ß“ÎrhΣȮÈuuú¤11Ž9w÷Ý2çéÞzóÍÙ3gÍ™5»¼AÑsó–´O§è¼^Z¯‚$ï¾ó®B6ÓIh¹ta]ÚKÓ>}þ¡‡úû[÷†.»ßyüJêÚØZø딄tOâíãé¸78Êà¾]¾œèGeët87/œ#¸`ÀBK.QS¾OWT\´c×VBFÒd§Ó‰ FÉt[¤˜N{r0Ò™®±®iÏ™Äî)^ñÕ~qÅ˾¿zzEkm¥‚½¨°©I9s.¨E{>ùÉÄ¥y¯køÝŽÎqŽíÿÙœ÷ÝÊKa±2ÜIù5-¦›ñïŸ*-;¯ýɱi‚m‚ý‰ø””ªÚ…œ…7 L§•æØd'–‰|¦‹e8ŽMs.‘–ä¯C«=÷×~²ç׎?0ù⃳ƒ\”4veöKûk¿tm?௸t>yƒ®|¦ë !ÍtÐ_Ÿ\C¹r*š«§@­î455´4U´5]¹Ý›sðàzzíe_¯ÄÕRzúWµ— ö?vëV_VVV˜ œ É)vKÿš°ãî¨ÍÿvðSÁÚ‰­½Œ‰Kh§}ŠæÀÖËu÷ôôÀáÅ×_÷½cLÄ^§¨Ü˶lç˜æx[ð’½è÷c\ß|KæÚË?¿ñ†õô3gX—Ôµ¶v\oSI+%=-×zšAÚ»Ý m]õ­E5­³¬gB’wÞz[!›éÄ´ä¦{ö¥½´ìË—žxâ‰?þþÿ®œþ¿d·ÿ8_ò(¬naká[¬CZ{³=Ž»ââcÀ§j;yêxLlôù ç7ùúùøùûH¤•¨)ß§ƒžpçîmZ™bêÆtߨ˜îâE¾ÚÚZå0žödcD3]SS£Ë™ ÷]®ÿÉmð5÷ÁW¼ÿçÀ­#î=ôÐ?;;;»ººBï*¨E{>ññ„EéþPð¸MÅï6¿·»bæñ¦Uûòœvy§–Ôv¤¦ÀtÏMýçÒ¬±ße?f[úÜæ’ÔÍ>\gã˜î’_˜YRß,Ñfº’’’˜˜­4ÇÄÌG&Ó.ÂqÉÉÉÙÙÙp ìL=sbb"é!D,9É_‡V{ö½¿þ{ó=ãO>øù¥‡¦»?8Çÿá Ûæ½s´iÙùÖÇÃôbºk4¤™ÎÓÛƒæµzÚ±#WO{Z4ËQcð@Ö ÏfyÛ1½bZÚZrÿ¢èôÃñ)ÉýýýÐUñ}:À­[·rrsW~ýf®ÓCYGðÝþ7A-bïÓEÇÆ_£»B5Í]¿~ãÆ›7oÆ{xüüçîÿ;&æóW'ÉY<&ù˜üõ¯ø<0Æï—¿Œrõ”ù>ݯ¿>}ê´Ó¦T·Ô¶tHûtåõŠüÊfˆ IÀMSÈf:A-žA^=)oí]õ‡gŸ}ö±±ÿ{øîØ3ã–­Û“”ÁÑ·Ø5Ihí3ÓÒSÁÕjnnjËÏÏwu¿ ÷Zyy™ô¸¥tM5}º¢¢BƧKNN”¤¤D…B_¦ãS'=zLÛ,‡éô´'„éüG Ó557Ûâï?Ùûú”ÐÁùуϹ þët~yÒqƒÞnjè–Ïž=ëääYyxxjÑÇžOüý“y‚pÈΫû豫¾'Bóõ¯iIyųŸ~ø…ÿƒ_<º$åÑÙOo(}kOÕÄSíËŽWí:s%"®¨0¿´I0-G‹%$$…ãÀÃP 0€é€qà€ 9Kü>±Ù49L90~\^^^AAü„¿p !„OAuHHˆ„ZíÙ·?¿ûî‰NNvyhš÷ØyQ¯Ì{jkÑ”ÍI»=’së¥V#rÁgºvÒLô©!Äz ¹º†µ/Ç ;P«Ÿñß|ã …l¦ãkÉ)ÈêLýOàÁ?<÷Üs=ðëÀ=¿¹zñiÛõë.zñµð-Ö. 9}æYçÓ^Þ@p>~ÞQÑ‘@N@sbo”óË Át*´Á•Æøtü5™ô0ðµ¨VG¦ûVÀ§sq¹páÂùóçÏŸ?×ÔÔ ‡éô±'³…pèüÓê8 Tä0_‹ è¬{.:EY“yqwÕ‡7?ü"zà‰‹·ß9œYT­ìóóss¼¼¼Îœ9s’Ɖ'NŸ>mp{þö½&xpâÙ±S\ÇZ{ŽåðO«Ë±ËþI5bÉ娳¤¬âw½ûéÑߌ?ñФóÍ xø@bèÉ më ßÛW5ÓY±Á¹ÌÅ'ÿrr~%„ç×§ÄßqGkm­  ¦®IMM…'98Ž‹‹ƒ˜@pñññÉ4€žRRRàìåË—ï \09LŒÉŒU‚ Bvp Å‚#d'Ít:´Úïß|ÿó=¿™xj,ÐÜ7‰~™r÷wA³£+ë[÷EœMÉÎë”(9|¦c‡ó㦫««#þ[íÉ56¨9Ž"¹²ä:]˜®:Ý)ëÔ¸ìCŸx¹âÒ_ê?kŽ™ÙeÝ9£>|zmèÔ ÿ‰ÙÎK<ôvì‘Zù×Ýó½ý7ÑÛî9ýÓµˆ}÷2<:®ƒ"&ƒ–„æÈGØúúú :^^zùåà»îŠøå/#î¾ÛuܸMß--(«‘óÝKBR²²š~qpì‘ÆW½_ðüðXöÆàB‡à’¸«ù@s@p§N"dçéé9$[ɉóÛ7ÿòñÞû²›òè׉¿]’ñ8CvþÝç¼êÝNG‹>’É`ºò'Þýcè¢?LWÓ^ôOÛe6gf}å©ÃÞÙ+Ž\ƒ“—ã 0f̘Ê×ßÓ"Ítiii𗌣×Àu!@spݾƒ˜d‘¤`>r˜2$“qd”òd˜H088X&ÓICОϼöî„m¿žzæ9Q÷Œwùý÷g¶&]…ûð“…¶?<¿¹õO߇.?$: ÉÏŸÍtm4¤™®¾¾ž8p4ß54552®ñæÈ»iÐ1èÀtWϼÝ=µ9Ö¤$Ž#3Ùqü6½è¿þWAöw^ô” ±½ B#c;ée?@s×5iÐßß>uyy944´&´)‡DÄÈÜË€”Õ+¯N?AyýO¯)d3[ˤñŸeL͹øˆÕ¸güñµs~^âz×ßß~ü/¾øÙ?Ô·X›$dŽƒ…„9íÝY]] |åzh¿Ö$Ò5U1SÖ¦æ&þ<ãБ8ä@¦Kd15'§råœÏRoa6ÂC^mÆ•TÂt ’L§=‰w(¸ä`PÉþ€bGÿâݾE;¼‹¶xmr+\©ÀÎ¥àtT¥þLg<-u5ÍÎù¾{;fUœ¶-vHéY|!û[·œ_ï«û4lðw—n=Õ3Îkp—KÔÅ‹윜œÀÊà°TTTÜž¿öÖGvj¦c“r³ËÉ·ç4x[:Û˜îñ·_ù׿{&{˜nºëØ«¥ ¯ýçm ¸“E¡É%DàgÔ˜1ùw¹Þ+0?(Ítࣳ€³V"LL4ìÎtV@yàÓÂ_ˆ ÓA†ìÕdÐ’ 333D­L§C«=ùê¸ ïùlרÿÚO=˜Á¬!ýóä¥Kókßüôþîw6ä~³'0©°RËÂ]>ÓµÒÐÊtMÀwÐß4·47Ó~íÈÑåiW(×`•éRŽŽ« û¬ž‘pñâ2!ñÈŸÏÿp§Çê»vÍ~@P‹ØþtÁ±]ô«Ð’AK6͘]áÄÞ’ÈÜŸŽÔ+ãÆÿï§:ÈŸ^µRÈf:¶–Гë(ÜþÆ=ûì³s?¹£Æû®‰{è©'Ÿüø£Šiá[¬U2™îêš5—.ò÷…cø Ç¢5•DM ÓµÑ_ Q÷ãÓ¥¤$3ÞãÐ‘Û šX'¦{Ž0mmm&®Íquõõ5uuÕ!!r˜N{òÇÏÇV/;•=‚F/ëÛ§ÖŸ²)vsºRQVÓy­ô‹/eßy¤cfTÿüØþwýw»'^¤G‡æ Û„ÖÆëoχ_yý¶÷±0ùdw®æäþÀ+:Û³¤´üñ7_ùÏö{Æ¡˜òŸáñðZImÇÍþëà-‚ÀAæ˜1¹wÞ-¶ F«OGFcbbທð鈷¥Ó1Þ ##ƒ ZÆÅÅåææÂ1¤•ÉtºµÚ_§}:ßf[a¹†•Þž²äë„ß.Éü­má‹;*?9ÜüÝáÌ !¹…õàn ׂÏtÒLçåíIœ8ê/EsàÈ1_Q¿v­ãšL¿ï¹*ÿ¿«%€#ÿàHÆé?]p‡ó²;·O»KP‹ØžãAá1̸¥ Íi¾˜F’Hï9Ψ&$5?ýä?:ˆÕ+¯(d3£eϪ×nV8Žÿç‹@sŸ¼sg½ïÿΟpߨ‡úཿHhá[¬EÒ=I]fæåÙ³ƒï½×ë¿(¶z5ù·Ý~ö3ø Çápâˆ%—¨)04M:JÀ“{žŽF=1×J¾—¡ðTg¦cW66ÇÕfd\Ž  ò“ÃtúØ“ › *¦“™DÓé -þG[lÆgù:_®®VûhÍ­?ùÜîö¼ØÛ³c?ò<ê4½eNNNCƒð²ýíùðK¯ÿ{Ó½b>Ýêå«CNƒç¥[M JJËž|sÜ„]¿¦›xî! ¹oÃ{g»œ Ú#Ð\ÓƒÆf6ìòNÌD«O°™§2ß ¸ˆ™§ƒ¿àÜé  Ñììl`Ø   'Çd“@B‹­–TPZT+°tçíI ¦œ¥ ûe䨕¹Oo,ë@ì#Û/åÆç—VÖ °Ÿéèu“ÍÒLסòzc->i#§ ƒHʵ:0]ô®gJ=ÞT‹'È[âòvîù×wÏúÙñoïØ6ýnA-ÀDe]| ‹¡Æ-5:ÍÁ„C²<Ó;(’ŸÓ½ôâÿýÏ˲@ðŒôÞ»ïköÇ_$‘¼²™Žhùzú¸þJ‡ùÓ^š{ç•_Wzݵã‡GÇçèè(­…o±fIHÜãy{÷†=ùd>ùdÕï~âöóŸÓÁ_ò³”> q ¦`5¦ƒ'ËQWøW„逿˜Y9ÐÄÃó'yµÚÚwמír´(xLG?Ð)‡+Á•«­­öööT®v­L§³=ù ×^6,=9’˜nײÈý‹jÚÚ5È«ª¡eáÅÜ/R¯Xy¾ê:¸Û•ê½Å8Ž­E{>2Îê³Íót@s @IúÔ”˜îñ7^œ¼óÞ‰NNóxx^Ø£“Öš#L—tǘú±÷‘ŸÀ€Z¤×^ÆÐ ijö’LáéÏt šì˜w€Î€Ú‚T¦A|:±ä$Zí‘å;_\w€Ÿá[ŸÎùxû}ŸÑÓ sBZœ2vEö‹{ª§]hÝåÓìv1õJ+o@€ÏtdTRšé ‡Q.°TÍÊ©Î3G¯õèêÒ…é”áÅ—?Òò’ˆ¼Ì–]Ö?ß÷åÿÛ1ëΈÃtÅõ|ñ¦xN5CÇ8tÄ}šƒc85¥üô¢ˆ„Ä´‚j~>L÷žÿÇ_ÿF®‡þþþòþÇÿüW" p•9mÊÔ¿~ð¡Õ¸WHä?¾ð‚B6ÓëϬúò¾øñËç€æþôDZ9Îw:­ùÕ£>úÕW_iÕ·X“$Ä®²  À§Ÿ.}â‰ä§Ÿxè¡+cǦ=ø`ò?$ÜáB <™Ž1!>?‰šÓÁ5¥$9ŒOG}3XLî›&ˆ®\Ä­·]g¦cWÖÖVcâéåF8®ºº*??W+ÓéfOAPL—Öðý‰‘Ät à $‰Ê¬8î»ß#é GÂ1ÏÄ€„fmŸÍÒßžc_|å³ ÷N:ò ›æ¦x½øÏŽ¡ÉÂ/ɯ)A10Õ 6ß;éðC3}šõ dÎ0]ý˜1)wŒùæÒ.òS7Ÿ®¤¤DÎkã†zŸNAÏÖ±™Ž T‰´$ZÍjãa†é²Ë«ò+•kbßü÷´ÖÝ7áøÌ{v µÍ{Ç©i™{÷þCñ1@Kœ¬øLG¿-Ð(—éZÛT#–d¼’|P‹~A^»¯Ó%¹.Í8úhÞ™'òÎ<).O)å,%‡çß¹mƘ]sÛ¨ùÁg†é j;øâMÝ 1‡NGPYYÕÝÝ—’[)˜Ó=÷ûg?|ï/Dàùç½·Þ~ëõ7Þï/ õÀÃ\'þþþŸO˜ø×÷?xuÜ8ˆù÷>|þ¹çò}ºçÿïûÖÖÅ÷ͽòÇßÅþeО_ýò?ûàƒÈSŸ´¾Å%!vm$ÌžÕðì³—ï¿?eÁ‚´•+ {Ì÷—¿Ì=yNå:Çápâ@LˆÏÏD¢¦áaäcV&C a:Õ¦’éèïtQÑÈüŒ ß±k«Ì+ÃtõõÔ7î€ãò rÒÒ’}=<. RßO¨JK»¼ð›ù¾öVÒL§›=9h¡?—SÙî–PÃ0à|–ÌšCÕRVVvñâÅóçΟ9sêìÙÓБÂs‹L-úØó¡?¼ô‰Í}÷>8íÂØ9áLñ|öŸ¶ËÄ+ÝjZTRò踧&núÍÄý÷~¼í‰©«æœÛIF/æ@jÚ‹€éJj;@tc:…É¿‘¢Pyv!óŒB6Ó}ÿÕ¤²Ü迼óú ÏÿÞkëg~}ϯ~vÏ=÷xzzÊÑ·˜à{ú Ä®ðwÞiá…è{ïÍ÷ðzôÑê§Ÿ}ê)òB Ž!Âá,Ęao¿%±ê€¯%ãJzxD([ÂÂC€¿ ½ØÐ¹VÙròÔq™W 0Ý÷4Óý´t^3ýn8@¤lš“f:Ýì)ËøÂ³‚žirvv>sîÌÙ³g£¢¢Zxþ’Т=xî÷ÿYyßÄ÷ßóØûKþ»ü°0Ñh-ƒ´–¸äø?}úÊ»3>^s"Zð'­ ¨¦iŽqîˆC'æHjeº6“÷R¡9ŒI ñiŽZmæq7 ; ¸‰/¼³ÕiÌB{ø[ßÖþæ?&¶åÞñNÔjŸ/#þ&ã×ßD¿½5vGHvZ^±ð+ù|¦#<‘ÉtÔ´ùšÖ5fÀ²< z¥õ.¶L=•ëú×wý"i÷/’÷€üR-{™ÂÇ_^¦Åoí›'Ùþåï9ße˜.»²/^AQœwèØÐ_uuuAaaxTtìÕÁˆH0Ýï÷ôk¯¼úæk¯ƒÝ¼öê«/>ÿ<¸Tpìêêzá¸ÍOž< iÿñ÷¿¿ùúë/>ÿÄüôߟ<ýÔS ÙLç~{ašs‚Ï2‡Å´„=òþϼð‡?È×·X½$ÄZ-à±Çª~÷»ŒGI¾÷Þšgž ~ì±ðÅ‹ÓàYFÄ’%¡?ápâ@Lˆ¹7 Ž9Ëì3é í8ƒ–ě۲Ãá* ²}pRJ¢L- Ó9~÷ÆßÏ:“°M/š“f:ì)ˆ6f© =k '‰tM ˆ¡jINN>}ú4МôÜ_‹žö|í?oûøy ™JË ­Zª¶žÚú²¹Eym§½újܘ;ȪK"Òs‚Z™N1{è’¿­VPUûoÇs@pÿ»ØáÎE›à$§¦áÍ¿MúÌþ¾Éǘ~ß´à{gŸœ{8Ü;«¨Râ3k|¦«£!ÍtCÂP™jíéÐéE? ¶²AžØÙ;kÌú¯?¼té_ 0ÑÕ _<#ŘnÞ׸¸¤48*&6³L09#Lwøà¡§Ÿ|jÜ‹üÓ¸W€n\.¸œ9sæÔ©Sä Ù£Gþ¸BÓ56Ô{žÙ˜øcø©ÎïøøâéíCÕ·X$øe€» hæêO?%Þw_á£f>üpÐ]w…N˜@ùÔ#ü&@8œ…83uéÒŠŠ èå8öP™Zª™^5!sÄô‡º»·ïÞ 4W`H8wU˜„¨ÎšI†®{:aës‰[Ô’ &[Ÿ XûôêIò‹§›= 3d:x†„[˜.??î÷¡jqöšKøÕ¯ˆg÷ÏŽ p =-(‡éŠ‹‹GÄþtºµZUCcaumQuÝ’ó~@s'c.CàÓãÞú¯ÝÝŸ¼ç_›^Ysʵ¸ª²¾Q˃ŸéÈ&bzCÂ9ƒBZ%"2BL¯ –ššš¤¤¤SûÖîúþƒ‹ßÛ±øÝíß¾¹í›?oýúµ- ^Ý2ÿÕ­ó_Ù<ÿ•­ Æm[ðò¶¯þ¸}Á‹Ûç¿°mÁ‹O9feeñµe”µñÅÙ3('¯ ¯ 8¿°„-E¥ ™¹…ÞA1WËÓ²E‚éxâ±Ç{äQ{{{;;;[[[8^½zõJž|ü‰GÆŽ˜ à”)ä1§Ë±—_zñˆÃ”¿¼ñ‚nZø«•„`«—œ•agõá‡|»v-4b||Hµ±!ß ×ß§#ßB‚#«¡€ã€û®_¿¾eÇfâÍ%§$ñJkI>·úó‡¿ÿèç ßýãg*ù¤¢ì¹Z€‰RKZ'ÒL§ä0ŸÇ™¬+)úëbk©‘„ص¡|¿š~¹Ò*+++T(+++---//vƒSÌè·àÜz/·í;·€pž¯¶îpغsó™s§šEF4äh檪ª,(ÈKO¿èãêzÞÙù¤««³¯¯GDDHJJbVÖÕ’’âúú:‰9GÝìi(˜!Óé©eôØÓ’˜ÎZÍtÕ4,éj&J.j1žˆ1AdX,V- Kº6О#QËè±§%19´›éªhXÒÕL”XÐl<d:#ÕÅ4Zª$aI5E{ŽD-£Çž–ÄtæÐjl¦«¤aIW 0Q\~“ñÄò˜®R–TS´çHÔ2zìiILg­Æf:2±bIW 0Qtn£ñÄò˜®B–TS´çHÔ2zìiILg­ÆfºrÇŒrµ˜@ 0‘±Ådu1–rI˜¦ –¤íiX-£ÇžéÆa"h1‡Vc3] ½µœ±a-a™õ&ÐbI+“„%Õí9µŒ*{Z Ì¡ÕøL‡@ „%ÍtÃÍü@l¦3Á˜-@ &›éL°~E«ˆ=• {ÁPPPF¨ Ó¡˜(è¹id:à ŸéŒ´ô¥¬¸ÄH™#,̵'Ítz×#ˆQÓ0ÒB+ªÅÆäÊäQ2Ð &`:BsÈtið}:¯!Ó!Ý`l¦‚ûòË/ Ó}I)!ÁÑËAMâC¦C :À¨LGØmPÓ­C²CBlžŽa7d:¡LãÓ±¡æ’¬¬^Ó„••C’îEÐÈÎBôÉap˜nçé„ ‡éœCÒ¿Ú :ô`Çœ'‡‡'ˆìt:ð‘`V Ez‰Ètf œ§C F‚V¦chNg²¦T `’cyàñQËÚ;cB!€qúU¾ÏdçC³˜ŽI2Ç¥†™V¤Ÿ#‰2pž@ Z™ŽÿX&ˆ+7¨b:8–=IÇa: šTÿ ypÚ|:HK %Tç©â=ŠïìLœ§C F‚LrµŽ#ݺd-J‘íÖqøH=ÝfÅd»xâL§JȧH•Ÿh¥öò4@d:“çé„‘`ÔÑKÂk|¦“çÖñ™Nw(®R >jóé¸!ŒÈÏD¦à<0Œ·"…š ÓÉ#;.ш OI¤c3'!2ݰçé„‘ ó-ƒ¡ÎÐF;¸2–„0ÇDd CqF­Xï0Q´NÞ©CÈšHâ@ÍÏq–e"Ó™8O‡@ Œc0ñÝ£9|ä€-øþ8‚ œ§C F‚‘˜Ž8t|vc‹ì ;Ĩ€açéÚÚBí”#v¡mm†¼gF#h|‡ÁÚ)w´1ja$¦c;tb²zñ.d:ÃÎÓAÏôí@u†¼gL ÂVºñµ Ó #ÙéSBÈd:éW 8Ãt@sÈt6 ;O]ªºc· 5ä=cZèÏtì´m¹NÖÃÇ5Ètˆá‚‘˜Ž!;Bj|Á­|lpžNÕ£Z;…Švìmt§Ïòq°HA<»Çæpù)ȰÚ5²Ó²±>+Y„Ê˜Ž„hút‚Y±Ó2 $%_…@ñx&zõÕ… Eê‚@Æ`ºAÖ·¿@¾Ò‚ÎÓ‘¡Kº+U’ gStX!,ÉL7îäd­΢ Aâ’F`•œÖA¦“Pį&›Sg±­!–“ÖÎŽ[l&¹@ZòM„L‡F‰é •1z`Ày:vΰ?Ÿ˜ébŽ ‰}½Z¯¼ „T®ÛOñ“PĆ{òœ2±¬—ô(ˬ*§ò§Ê¶ìŸ‚&ÂÑKÄpÁܘ®ª¬1Ü/ÅùHàÙC|ñrŽÊN/ѹ$s†¡æé8Ý©z$3—X#D¢ÑçkŒ¶i bÖ0 „^­JTAtR¼‚œ|Ý1e(ž³ Ë;+m"Âd0+¦ õI$8¾@L˃0Ojž.W5\Æq["ý­4¹ÈÀQ*3Cjg%'­„"Ž)dÒ·ne–¦`™UF Lsc:ë3‰ìÜx”/ÌYd:˃AæéØ«>¸836(ä õÒZ#v㢾•´O§1â*‹P‰è<”Qf!ŸŽø|2|:d:„™À¬˜n½\ºÐnþ—_ƒ0¼ÆÈ‚¯¾ñ¹qt. Âlay:ÁUôü>™3ÁÄŸ“’Ž ÖcsRIœÉPµœƒ7_Æ!# EÖ{Ë€5¢(–•º„ü2 MÌ)„æéä? F…¹1˜NСŽÓFsê/a²†bŒ´É¸HžôFBŒjül¦|džŽ ]òûmöº …ð‚C; ÷G2‚Ó ­E”™¡†+jemm­âÁÖõ» ¹i½Tj.ÑËJëbQ‘´Üµ—šL—˯ a›étØ0Ýá]ç µ¹ŸŽ ’UL ÷xÄŠä!sÇ} ”§À÷¥ray:Áw L÷Î^¡ù™˜û#Aëb­¼À×Èœ%…TR¶æË ³uò™Žo Á¬Xi9¯ù}:øBuA Œ £2n{Ûie:Âq âd'Ätô¦«Vœ­ ت]YÕû¼*oIÕöw¬À9..<¦Û¤œ¯³)àÈnAÔ‹r·v,¦ÜŸŽ&©ñ@­ ®ÑÜ€sjK‚Q™Ž¿_¹œTÌè¥ Ó±ÙPû•+¹BMG¬ÀÁAõ®¬Ìî¬ìä¼­^iâÒº=O;'žÐ‘&Ó±¶I·t®3åþt"kÙo"h‰`pæd:„%ÁÄLùp„ŸŠñé˜:Ó±#Á§ã °¡ªÿQ…«¼<+$RÛÞéW˜Qº-¬‰÷§Ó:ú'gxаÍ ÈtKˆ½qâ8Ðéø£‘Ä’I=œÑK9ŠéÔÀýé„‘`¶+RG/!PÞ+:0ŸK€¹819CŸ‚+R˜AFŠ4ŽÔ£«ìé<õ襅IçéĨ‚ Þ2ÒÞvƒ’£—Fe:þB‘åj)ÊÈ>„×$Ö^’h&(”0È< @ð`VLGü56ßñ…œEŸÎò`y:¸¤‡· aVL7H“›ïiÎ"ay:ÂtÒqLRT3sc:£ê-+ª;·7ÑqmرíÁÑ¡©]Ì¡'l 1Og>L7¬¶D =L×ÝÕ“–·sY„Ã7aD®¤æ*s„þà3B§yºAd:¡‰QÂtÕUu—ãŠ7/fhäàÆ`ƒdŽ0™N¡Ó‰Pïî1JvHDX0FÓíÝvôð“ìqK‡oCÚÅûpú¯e&jÞﯾºx±À^cÜÈš]›Ä)ÎÓ l >¬LG> jT1$ÂÕŒlÄGâcb„Á²™îöíÛ[ì÷:9WQV–’É0]”o~Yq5/ºô>>‚÷£xŠÙdž2FRbÀy:f'8z§SŠÝ¦ãlGü>53†Ú‘p*]®“5ÈÞž• b¶–“ØÁMó>"›bpÚ‚úV8ïSáü@þ†õÊ8VZsS}\E²üïŠ fÅ@âúç'¤Ïª>o®É‰|½êJ1£áæˆa„3Ms{N;](/­LKÉÊÉ,òºD­H‰õ/íëëJaP¦“yJÕi>= uw2Òßã`Ž”>Ä€ótJ^£i þUùt*"Ó ?ê®dIGE—4±Y;…ÒT:yL§j1ÍVT’{óz¡@î†õÌVRšNB ™T›M©/Á¬XàFfç'´í—ʘCõ~TìÈêJ¤ç1Ä…3ÝÖ ŽgO^,+©ÌHÍɺRì—S¸å»`@‘ÜJQ§L4P“†Dv¥cÝòªþƒÕhl†'Åtü´ò·A7GzžŽ" `*⸠0‹§†x¬d¼\ñ±PÖ}ÄjZõ!ûâ`7¨Ö½¥Ø„# Áܳâ¤Rßšd«uFù[ ‹iG óg: ‘Hho»ýÌI—ÒâŠË‰WósJƒü¢¯fdwttŠÓÜ |:+¡S¬3¬øCÞ|œŸV¹;ž¦{8búCÏÓzb¼25Ó1^›à8¤ô1ë)HjÖO}ñ&»Ü»¡‘» ’.¿ö«‹ŸÏfü1ñœu¨Ôˆ¹J#æÏt:¤Ú`»ców~%EåÉñùÙ¥^‘ùy…·nÝҖΰ£—b1YÃJZ¼°!u (_ç ŽzžNÅkJÌÚZ€û†äÓå2£–Òe`1r>Kc `ŽKµî­Ì)MÈ9õ餯 ±ÈZË0ÔJ¤«1BayL·Ñn'Ð\jtù‘ 1¹™ÅáAqÙ™¹]’Þi˜N£«à%ИSa=0«ç:XÓ:bÊ´²¡9ÂðótÌÂKÞ”œzR6ÓA>d,8R™­Öy:!ó“0¡1j­×ÊSW¡fBÖ¨)?P;ÕiªÖ…ª–{lAÛ<ç®1ƒu©‹†…1ÝVû½‹ý.G—¶>¶)nÏêPðæ®_¿./µ©˜n}s'qר֙h®Ê#= ¤€b¯^ ŽƒZS’ÉÖyê cÌÓ1áªìÚÈ1m4ÊÍ#ã!­!r˜NA/JaF/Ù©™Ž5ŸÅMÕªÆâ·²øb$u$Þ£Pn¬•.ÌS“æõ ”[f ‹‘x éȪKWÖÚKNÎ#ä*EŒPXÓ?pþä¶ðæŽnŒ=æ·kEpiIEOOñŠgdŒ$LŒÒï^ zVZG‡”›)0º®UĈƒ%1Ð\fR͉­ ;—”4Ô7¯lÆÇèê=FÓw/…V ÊÎ ˆÑu­"F,‰é¾ ²;µ=ÉË5(#=³³³ÓxCøÝKa$XÓmú:dû² sNîi—3úûûW*„1`aûÓ)p?V³‹a:‡oC7|xüÀy£–a<ØXÐ<‚.90X ÓÇ9|fÔ Œ A¦SŒÌy:aV°¦Ó_Š1^ØXÐ<0+ Ó1ŠPÌŠé#yž@˜éE(æÆtŠ‘)QJUU%ªjÍ+ÿpútƒúÍÓ±÷¤£~R¿em¢jJHìpLJñ,@X<ÌŸé$„™0ݪÜ56Ù¶ßûÿðÌÓO744ôõõ)ZšÍMUkV_›7¯zåÊAq¦ãwþb®“ÖÀÍy4+ñTl/L$šF&|O“=Ü*S©ìòçè¥>ótd#9 ÁhêmæìB¹¤Cï^Gv\UÑ¥Ò”G¡dUåÎwûž[Ù9Ñ{¹’Èš.§*&›àxƳ<añ0s¦Ø+R©í8ÛþûßÿVVVòwd:Î!˜B$•Ê “Ì\bq‡¢t0B×y:i_‰lN£ ‹ì!Îð•HE7#"#Ô$#¡QêG(H3)“PÍŒ¬p>!ªwKg…Ïò„Å™PZZú¯ýëƒ>¸qã'&ŸéÎï˜Î^ˆÂ 3ÒL¤ôõ ÐJMOü@.5pFAųÒHÎɇ“‰0…W¨rByJ5G/yÑ4G/Í‹é:ÍÓI0]Ã4Ì–â,“Þv|ˆÇCË\ƒmU¤É†ñ,@X<,žéÀ­›={vKK '&‡éÇJM¬y1ftQcE /PÄŸ^^ÂÎê¼r¹Èš… ý±ÖRò3d"fŽ_sEŠÀઠ÷ªÎs˜V¤ ê1O'Étg4cÖȀ܄Êâ±F/9C¯Æ³<añ°l¦ÔÖÖ¶¶¶òcêöæ8{E‡t nYCd¾³ SŒ×|¦™§3¾O§ÎHôÊ.$)<'Üx–G ,–ÇtrdHL'¸&Db¡ÈP³B¦#0ìûtü…"¡vJ☧ӟé˜üI¶Ú˜N=çIÇJ ÎÁ)„!`aL‡_3¶¯ùŒú>Ç¿“Z{©7Óiä¯unŽYÙ¢ZiÉ~W¤ %1>v)b¼&Àï^JÃx–G ,ÈtÃÎ #EŒ×øÝKiÏò„Å™Ž`Ød¤ˆñš¿{) ãY°x Ó!̆š§C ŒÇtŽ[OI‹>½"Âò`yºa­0S‰é€Èššš¥ÉÁ†Aæé‚c0݉=Þ@dÌO8þôÓO™¿ìp$;ƒÌÓ!Fb:rð)Óš $2‚Aæé‚ã1]qA¥‡‡ç§B€p8;(Ìt5.sæ¸Ô¨­XǪCmHr°rH↗såf1”̆Aæé‚£2´ Šøtj.IrzR’ÓFéèŠ:õä)d:cçé„‘`ÔÑKݘŽ!ê_Öqsš8h ãÐ')8$rãιPÍb:Æ«£ãC>¬¨êL’4JÃV' ¡/pž@ Fõéé©:ÂkœL)¦SòýOë˜ãÛi±&•'XœŠ­ÔqTjd¬ÊD#%gÀS8Bà<0ä3üïfèëÓ)©Š ¡"†p؃‡Ì1gD‘úé¢1­—Äó •ÜÇuÖ´ä, aà<0d2Ý ¯OÇ·tpä$™Îjζ¿Å)“ÂéLœ§C F‚ñ˜î£°ÿÓÕ§£9f- ûxPtô’ëÓñ<8îŠK S˜Ìhýa¼y:Î6pÊ­p˜ýzà$½CŽfÑ]ËMÓ†ìÜÇÞKHzëX-¹ YXÁÛVIpçÜ!h‘ØhžUãÙаFCFõé€ìtóé¸ïh¼ ²"e¿"EyC±â -5ÈPf4„¾0ê<{ rÕ&­ªâàœŠõ1ì=•œmÊå¤ÕAþ¹)Ä-¬O½äÛ4Ígp£! ã1Ý îótˆÑ£ÎÓ‘çmÒß’=Á⣻aVOKý«~&×ÜUEŽ4YŠùœ¬˜½Å9ñ™=XµnØÊ †—§$üSüh“huO¤íÀ€XX Q$6¨åå,¶¯.nemmÍ#©ê¨ZGÐ ìF$§(¯”·‘½ñŒ†0,Ìsž1 aÔy:Öø%íaØ)‰¯Yc:Lº¯Óº¥8•W(§8Y0§øñŸóuØß\«¿À@ˆžúM÷áPyé$Ú¥íÀÊM¸x9çjd"‘3Ç%g¼uN¸tuØ­#hv4õ¾ðpŽu!ÏhƒÃ<ç飜§ã¬ V¨§ê ·!¯ªóaˆNvOÅú©ì´dwzêø,OD\g¦ãä#Yƪ¬tí´µÚA™›È$‚ï ñý)¡œ5ËÀ"y£—2 "Óþ†2Ú°ï;iñb¦ótˆÑÎÓvã@ùðog§råèŽÆÉNÐÉ’C.b‹dÆg:*'‡Ît‚ùèÐëÜiKØ€`3q»ý¡XÌ ¤ƒÍMc4„Áa ¦óðð”Cabê¯a0à< Óµ©&\pfë†Âtj/@PûâþÕ¿§eç#³0zûtZì RÇÕTDšC5r(3Ë}3IÄhL§ÝhcÀL7¨";iAšC°aÀy:a¦ã,¹Ô\] ÙSi¼¤ P±¤ WE{|Ý0?Ä[Á|XáÂ…7È<´Tie=pÊÉÏYÌdæéds½pëÎÓœéä a ‰éˆ¡Â°ótü@e_ªâÎÓµ–'fM‚f+§k%àÄgb±iˆQD«Š8•¬Âh®Æöž¤ ¯mñ¿B²Ó–¶ƒB¡å ®"²>–EúÜÑK^d©¶¤ªvd1¥L'hã1V£!Œd:„™ÀØótÓ#TäýÂÄ@¦C˜ Œ=O‡01¤'éS™a&0ö<µ@¦C˜ Œ=O‡@ F-éfœ§C F2ÂL€ótÂH@¦C˜ pž@ Èt3ÎÓɱ ŠŠÙ^ÌÈt3 ÎÓÉÞ¤ó„BhÒAëÅ\ÕÒmA¦C˜ lpžNð&E˜'È•9Ô‹¹^qÝ‚L‡0ð}:œ§Þ¤ó„nL×ÒqÓ‚L‡0Ž^â<x“"̺1ݵž^2ÂL€ót27)Â<¡ÓõÜì3 Ó!Ì8O'x“"̺1Ý­¾2ÂL€ót27)Â<¡Ó™¦lÈt31æéØÛÀ1;‚‘=ݤ·3gàMŠ0O˜Æ§ë½•°‘uS[YÍq®èGŸ1R`Œy:­D†L‡@ ¦™§ë¾·žºg7FݸÕ]æót((((Œ Ó!Ìœ§C 6éfÎÓ!Èt3çé‚ d:„™À€ótÁ2ÂL€ótÂH@¦C˜ pž@ Èt3ÎÓ!#™a&9O‡‚‚‚2TA¦C˜ läÍÓ¶KëkñmU–ú"Ó!Ì‚L§àÍÓÙ ý{é#X_‹Çh«ò°Ô™a&°‘7O‡Ý‚ec´ÕW1úªŒL‡Íàût6"ótƒ†»MÚÚBí¬ìBÛÚ M‡ÈZ!³¾m¹NÖÖN¹mm̯HV¯Ñ°2\Ù4ó7L¶z¶¯aoèSeÒ²Ðàê*``,f2ÓéV_(¹€¡ˆÒápÆ,pS Ó!ÌCš§òÝ%vûX ÓÑ:Ù¬òÀ­oÅé óa:Ò˱{~ó‡þLgÅz¶¡ëÂtº@èP_öUMŠ«'xª‹¼ bèÄÈt3Á°ÌÓ Þæô=bÅ~,TFS==²;rG±}¥aa:âɱ¤ë(§šª~Êy`³[ß Öƒ·ÖNX¿nTCþŒ“¢ôo5ªlí”Óš#Üd´AH ß8ìªY;9I×wHЛéììì”Õ¤~Ø–)$Sµ²€O'zm¨Âõy–j}UͪªkÔ"ÔNݾªX¦SÆF¦C˜ †ežŽÏTÓk<Z1O•äž"ÇäöR°½*Ó2{d’•æ&]Í>_¢šLWomkkÍtûBvª²žÑ«ÛWidû9. )¡•qóŒ£`õ«t/Zß¡B¦ ¥KFÊÀ0‰ X<öããj cŠ]̹W¸¾L'2ܪg=ª1W2ÂL`†ótâ÷”òÖc{ FšïS_9ª•^ o —œ]-U㇋dç:·¯†jfÖ’H;tCh2ÍZpÝvÁúµä`:7QDÇõ¯›ƒå IAð¬žW¸þ£—V’W#“ŠMèÈt3ùÌÓñ×oHöðjJ0²ž®/36¥áÐIp·jhGk5e0€Aغ´òîL'ä¾)xãº2›L¦qÄê;$‚éÕÑDÇ-§–ÊŠs™¬kCè½"EIëÒLÇŒ¶’TÈt3™ÌÓ±AgG‡ûœ/‘§>S_‰I:ý,­ÏíCôéÄyVƨ—ŽÝ  ãkô‡R%òÙeGº¾2a¦ƒ‚ØZ[+ï4|:­•lD¹×†‰ë«àúwÜy:õ1uF=g‡L‡0˜Ñ<k¼‹7ʧ˜y‰<õœú2þ s æÖ¯¦V¦cÙAh&Žoµvã1ÐÛ­c/¢ÐÚd‚ÆádÈŸ§Ó†a:õÓ—ð<ìëDxžNöµaêúj^B¬ëYê™a>¾y:Þðkm¡Ý„´†yÁAªP;©¡N=!cE ÷U:‰: ¯‡äTS«O§Z€'¸öRÄ ÌJ?Ã^ŠV\=[§á’‹”Pó‡gvEØk/ù¹ ©ðºUY]NáG5©ëS¡é ¯½”}m耡¯H¾€•gUEe­U·5Ž^"Ì Ã2Ogþ0«ú–ÄaVõÛ©×#¢Ê~#1šß½„YÕw43´g¡̶ÊF2b4Cþ<ûx4Ö×âe´UÙôõE¦C˜ l†2O7z€õµxŒ¶*K}‘éf>Ó)p:ìGF[•‘飂L§™§=ÀúZ§ãàààØtÐtqyN×À4DÌ›®]˜Óeß%®¦ƒˆdÓµ©9]ö]àÚh:ˆ¸¿<§Ë¾K\MÌé¡é ‚9#4D0§`„¦ƒætŒÐtÁœ€š"˜Ó0ò ”¢‹t endstream endobj 11 0 obj 25437 endobj 9 0 obj < ] >> stream xœí‰ÓFÚÇʼ–eÇÑ›`b;Ø9–˜¤¹!6g¸R Ð‹–¶´PÚmwÛî¾»Û¾ÝãÝÝ÷¾ïÏü—ï3#Ù–duX‘flý>$–Çr,yfæ™GÏÌ`,Žö#Ú÷Õòª„bÚþ¨æQ?H(²”P C Å0”P C Å0”P CÎs E_r¦( &ýÈ™â`E’$•*HÉ×d%¡ØNÎe©NQUjj)ŸPl/·ÞE’€d)¡Ø^ Š$kcÔ*+ÐÓJ Ŷr¦¨$ylF?Téó„b;±úhIÎ+¶Â„"S ±¤h»·“PdŠÑ.æ$‰6‹zo­÷× E¦þ¢šoXåLBÑUÎÇ´êŒ2_Jj´«˜þâX)é]<Ë™b^©jrBÑ«žŽfí É&¡ÈVÓ C®1©‚PUË'ÛÉ5¦S‚qt^ÓŠíäÓ)PÛL¢måÓÉU5I*TŠíäÓÉ«P¹sIïÒVIL' y‹é$þb{¹Åt[ô"ÅÚ d˜¡2¦!%—Pl'FL§š‡¾™©%ðÀaD˜Pl£}¬ÞE-ÔhïþbI®û‹÷åò©C¯üÁ™¢¤ Rû±¤U¤’î/¾÷õr©C¨ŸÓ 5͈ÒÊ0”õÞåRq_1‡zõ3G€’=ºHÛÅþ¸/™?õDWŠyE–+$U‡R<÷5s§~ôc̦¨î¢4S÷»`ôÑ©£Uýèuòà–¿}tµÖÌKª´Eýè}t‹uç*’¦É¥zLg8qMJÿF‡èëÎefÐè]pbŒ&¥GÞ2ŽÜbÝ&QŠéáX/œ'¥GÖÝ¢´vЉ1Öî³[”¶%Oç@âyS¥~Ò„è¥mÍÓIŒ‘(uðG&srÒ¶äé$.#&GÌuÒ”6ñ¼)Ä´ù¹3ErûtÌÔG[î$Ub…èHQVªŠ¢T$g[Lgˆ¬ìx F=sq&ŸSrš=O§7«túgˆÌìxði•&Y à=Ú³@{ÒóNüŒñ ÃÓiŒþr•‚VÍ—ZrÆz°J›Š61jtµ^£I?“¯©5;ÅÞó¼‡ÙY5ºP¯Ñ&Y³z­eLýˆ ‘9›Ò¡ÐJ±Ç<ïÔÁŸ´ùÂŒv±Q£Ù3{{ªe´mbŒ]äzfÏìí¥*íÑ‘¢ªª áÈœÙÛKž÷ÏÚCt¤˜ËQ[”­³ ì¹´½cŒ-QY»ÚŽ­s*í{Æó>„ܪ]'kÞõH•vˆÊÚÕ ÅÞð¼ì±³õ{¡etŒÊÚÕÅð¼û=M èl-ЮoQY»:£ØíU:í "Pü“xÔŸ¶RìrÏ›•µ«Ãø»ÚÓ#oz=sŸµv&ÃéP¯›+µ‰Ê†­î5ÆÔ»‘Aì^Ï»mT6tu©1¦¾¥3Üž÷äºõ¹[@1t âìLNfË8;IŽæ''qãù2Ö ²ó831É u½1DQªtfs¡\\(Nã鉅‰ F³zAqa­¸¾9ÈœÊ'»C— aÆÌž^Ë.ŸÂ§&ñºAÑ(˜.g³Eœ)¥jMóÜ{‰aŒ™ pÊd(¿ŒAQ/˜_ß\[.Biqsšžê! ¾Ä˜Ô¸U9ƒ'²¸Ëx3«¬•¡¬ˆ—é XŸ|ƒ„0F ˆ&&¦ñüDÚÅÌæà¤Ó “§ Õ,Bã1 ¸ÎÙ!DYÒ'ßÇ!!ŒÑ¤6=÷B‚¸Œt >ˆÝfôP܉V¥b§yF"AF‰èyÇ•eINúMœ Å -ãKú3§þ&ŽŠˆbÏÛ'EŸ üMåL16EsË8løð.46E½J÷Ÿ\m:ñ+û§ÙïŸâ`E’$5LŠày§úu‚×ÏR} “<™f¼C|в6Eü[ð‡úàÒ{S}u-~ñþu(Ûïügŧhã©í„bê0àúò›&Áº>zŸÅ± (¬‘ƒ\i&ŠÀϾׂjêäÖ>\|ŠjA’Çfèa¾ÔqN;üÈ™!åöø»´ý]âS”%9¯„Ô.¦ SyÚZ—ÍzïKÔrËI|й’¢UìÞN@ŠétQ™Mæø jµõ}âS¬å$‰6‹÷.ñƒE7ˆ KY£‚âSTó «ì¬wˆíks]_ tØüNñ)ŽiÕdg½ ´‰!RŒæ¶Q|Šd)ŒÞe]÷ ±¯ï)ú.Ý|«øóêLU“›Ï%)ÅËyië:‹V›~£ø%Í!áŸâðwèû¦®›:ê. NLgõƃ5¢ââS4Åt¤ BU-„â>„fýQì{†öwÅfLG-å ™Ô´ ÷£÷}Bì›m¦ˆOÑT· Ô6•ÓS\ôÖW¿ß𽻀b3¦SÕ$©P @ñ¤ÅÏY;ëÙGLcŽbúòP4ÇtT¨Ü¹½Kê;‹—³85;»¸Ø·HÊ–fûF7à`v ~f—,Vz]ŽšbúÆ=´ºÈéô£Ìtæ–FçÎm?9·µ45wnî£í }à`jtûœ…âõ/ÅáË«èÞ³¼Åt‚xÝ'Ñ%Ås}äßè…'Kw¶–æúú¶ï,=…"‹¦êU: ŠäVÐÊtg™›1à¶xÏ:lŠ£}ôßèüŠˆÛ¸¥I±ïÜÆÆ…Ù­s}‹sÐ.Ú)¾g8Þ{Kñòß9æ¹þÄ‘×ëŽl4áÿÑ»¨…í]À_,ÉAüÅÃè©bŸ7Í¢•(lº•„V/§}|'¦}´¤ Rû±¤U¤’ñ°µsy²á9BfL¥ÚkŠDNÞC÷|7“ëÞ(æµBM3¢´2Œeÿ½Ëjsׯ­®£TT1ñ·WÚ±%>f'çÉ/Bl~„Ëð|’N|ÍÎãÌÄ<<1O&f%¹¥ÈÅýÈõ–Cgõωˆ"&õÉëDu´>]..§ñôÄÂD&“ÁÙ"ž†‚2..¬×7§³™SYó—mO1¯Èr)zLç·Þ'u¤)EêëÌÒßK†ß3EÇÖ‹¤•œ­7•KÆx[ÆDN‘š¤•bO¯e—OáS“xÝ ¸¹œ]ËàSÓå,<ÉÁFÝ)ª†»(ÍÔÀý.øï£ ÅÅ-€rakn£oj{c{Ž’zDúäGÛ}w¶àÑÆÆÖò8º5G(ž?ÿr||üøñññ·ë…ãã'£hXf¦H葃"¢`ç×7×–‹äåÍi7ŠÍüE裫µšì¿Þ>º3G\Æ­Ù¾GwîŒR÷ºê 8ZÜd³swô"ð—(Î'SäÚÅt EŒ?ýÊ^}ãñ&ˆñV:¡QTå žÈb ¹Õ™.Ïãµ2ñr†œàB±ëÎU$M“ôÑ7Ð¥Ù>BMõ#ö7µMêí,ñGÏ=z²¤£‰ BIÝC}äØGÇøØÛPv{H¾qâÃñ·á×Ëã'N·ú¢ˆ&&¦ñüDq"3¹Y\/’Ch§'&&O-”‹Eèb\(šbݹ‚¢Ì úï]¨¿Hà<š;· œ¦6.èœÅ­;¶¦FŸŒÚ)^hÖÉÓ¹†ñC|_9†ññó7áÕ›çuðx¯àk/›Å×ð±‡ø6”ß´z§hV&ã~Ξå/ cgjôØâ¢Q§8J¼ðº‘6)ާÒqìò))'¿®½<<Žá‡âØñ›@ë¾vbüÄñfñÍWÏ¿ B·FM±¥ L1®ëpž,B]žÚ®÷Ç£´]œšÝš…¢9‚ž>Ñ«31ÍKF´ÛB‘Tgüáøu\9G´]$”Ü›æâOá W0´¥Ú Qô"·(mð<´H)^ØÚºÐ7J©KÈ ¨—-n£Gôé9´MOÝ‚sæúžaZË—&]Ë5j‘o„Æn¼Añå‰O¯QCmCUøöË—Öˆ)6£´ÁótvüÝ‹n ‘X¿õbMÐCãó/oã+¯>¼ý*±3Úe?üzŸñfñ¸Þap„¬…S4EiçéØbÝ^õÒ"±Q|H¡@Õ@`yøÚqxr›>ÒÚ~ìx³˜~/ÍçÆ@1Œ(mÊÿÝh¢÷ëé/Ù:Âè)>¤~÷qâט‹Ïž"¹}:fê£åéìØbcž4[¯ÐÂßI••ª¢(©3[_ÇG¾X]—É¢S¬É%Ôa&w^.¹c³jêz#‡QxŠfQ!ãhLú߯ø´ycX|ŠMQUjj)Œ"^EÏüA\4­ð!>Ŧ¿Húµâ>ä3àýj®>">Ŧ¿(WrP¿KÁ(âèºoç)Zé¦\Z“¿¨ª´†£ˆ}$ÇÓôxÓ¤. hªÜ„t§'ÅáïMã{Ö‰CâSÌkà0ꙋ3ùœ’ÓfÇÓ$F© ‹×­Ó†Ä§(ià/Ò*M²@Á{ Ø.bâî g^*5Tçý–7ŠOQmŒþr•‚VÍ—Û"`ü}àÞÅ´L`ëŠùj½F“~&_Sƒ¶‹Dd:¥‹Ã3{¶bP” õmRàùÑëmgŽß\Gßµ¬¸#>ÅAû=—Ž(’[YÐɰ8~ñ%B«é–÷ˆOQmÔèÖ&Ù~ï;äœL} WœrÓŧ˜“ë5:œu#ðÔ>²^æ—O?2÷׋ß<#‹Áv\øÉ•¿àŽ¢ªª áºX_”(MׂA_ž}z‰èÙYšwÉ\êÏ•ü÷ÿàŒb.GmQ´Î2aÍ»7VÍ™«+öŒ7³üQü'„þõ|¬Øô›8«íÐ:§2¤õ÷Ðzûƒ.ì¨ß£^¸‡NÆ´ET·¬šB{0Õ¿ˆ=ÿ(q´.홀]×ê¡‘·HÛ Uô ‚FAÑÓÉg ûë†ßÓ—O¾ý–ÛQPl˜â™3»Ÿ9ƒÉÆ9òXülÿòÛ3»x wɉ¿<âóCÒh¸¾;oW®‘Ü4Å·àç1~>@ô60ðõÀ|„<;óøsøýùcz¢ß×=¶=I" Ø¬Ïà=pGðgß¾À_Ü·œ9rf÷ °=òË[´àœøùs¿srã×cÚ©)‚µã›öAèÕv¼Ã»Eðóo1y$'|}ëk8øÞÿÇäјv Ûû} L ûš)‚ >'¦‡Ï|ÿ€<7(Þ‚†Q?Á¯RÔߌe»½ßSÃÔT™) ¼øŒÚâ‹ïw ŠÏw¿øúù‹oŸ¢¨ï×”:øn—ìëi‘yÁs3Åï¡"¿øšô.:i¨ßGvIïó`7ÅÃ4­¢kö˜µˆÙk>6¼ì]pkŒÇ]Rú8è'ðÒ#ƒþnÆ~³~?Rü]àíŠÃÛ×m{_ųwœ;=z:ô¿Ó·y'>ŒCCGÃþ“ÑìÕä C­ÐHWï=zÑ xñ(ÿü4XåÅÓPvZ7Pã ߊ¯bE>ˆ¹úñÐ/††~M)þzˆèèÐÐÏñ/àé¯È³_5Îð­÷Žz/óÓ€íîÝ‹”âÝ_}øî×Ïð«X÷ÎM½í †¢{R¼?ôñ¯ïÝlC¥ŠÐLBËhœáSqš"&ƒ˜O"ü´‹?½ñ§Å¡¡¯î‚⟒_øç„âý£WëgøTÜÛ8G:ˆ¾chèµ»”"Ð{í«¡_~w᥻¤w¹Û8ß:Üò8õ£×#ü´‹§O7-¯\=}úªí ÏŠÛq7lk>œŽû @oˆŽ‘Ë?ýmÕ0O¢UoÅr !,ñaŠÄû7ö[¢E"ßBàÅAÃ#ÂbäÆ1ļ÷%S̃?›Ò‚ÞBà¨Bõ£7⾄Šðg“ƒþ.9®<¨Ä)âØò :—ÿíñäA/ƒ?«D˃â¯U¤kÃÏàÏ&¡ò 85E,T·¦ˆEʃâ"ñ¾÷%x¿šHA _qˆVÅ@ÜÿW‹0ˆáqðgSÔyPĽ)FŸå_\Ü„vSÔyP¾%€)b2ˆy3îKh'>ã­â{#†)b²~s”yPþÄóàÏ&޽on/ÌAüæA‰`ŠÍüx̓âdð7Iöê36ï+g1Ì—ÝýŒÍüÈ#·yPœT‘ÌæB™nÞWžXXGd«bVßÝÏØÌ>Ò<(Zœ˜"Î,`}ó¾Ì:ž4(»ûé›ùÑGÌé †S¤UÑÍûèNQßݯ¾™y$t¦øËƒâ&AàÑÍûX‘}&7³úî~Æf~ú#9•¿<(n:hBQß¼oab A3¹Èèî~Æf~ôQ?—·<(NÈåuÎò ximr£È× F ÁŸM¯s„‘Ÿ+ñ-~n!ˆkŠ OxĈ ‘Ÿ<(+4æ&Š—Á_Pñ‘%¶)b>n!p3ø .ò „7EL¼ïwâ½€VdÛÅ=ˆéSÄqçAq‡ð¯X1]bŠ8Ö<(¡VÅx ¡{L1Î<¨î1E_”èƒ?›bÄtS…&Š%ªËLÇã}w›)â8µí‚8D«"σꪺ¡ˆó ºfðgUÄyP]Ø*RE:ˆéRSÄÑæAu«)â(µí¢8D«| b:Ùk¨›!ú˃êdß«.®ÐD>1ìÁÖ}ƒ?›¼çAu°`—›"öq !8Å®üÙä5*8Åî7Eï‹Ú¦Ø7¡Ýä1*0Å^0ELµõpVPŠÝ;ø³É“÷íL1çJ±GL{˃r¦( ºPìêÁŸMò œ)V$IRu „ªZÞF±wL{Ä8S”¥:Eµµ;¯iVнdŠ˜ÜBpù¾n½‹T ¶©X)öD÷A ƒbÉÚ9ÈU5I*T­{ªB¹,jëLQ-HòØ =Ì«P¹sÖÞ¥ëã-r¹…Àê£%9¯Ø ›{ÎÝò þbIÑ*vo§A±â-j›Åhs’D›E½·ÖûëÅ4EÜ~ÃðÕ|Ã*gì…X‘mt€=ˆq¦8¦Ug ù’½F÷¦)âvÞ7Ó_+1z—ž‰C´Š™åL1¯ÎT5¹ù\’š{Ö1;Šáéháb þlbäAùŽéô²)2ó |ÇtzÚYƒ¿1ÞüÙä˜å7¦ÓÛšÈ)ÊgL§çM;b|ÆtSÄNyPþb:=‡hUË Æ[L§îu÷xÝ}Q[·˜ŽÅÛ»ƒ?›l·Xkƒ’a†Ê˜†”¥ø—1]3‡²æA1b:Õ<ôÍäH-#ÂZkæ]OËšÅê]ÔBö.à/–ä–{€‰¬yP Š’2HíüÅ’V‘Jƒ E»Ì›{3"cZ¡¦QZƃr-¡Ø"Ó¢¶¬ $·%mj.jëF1¯Èr)öˆq‹ÒB]­Õä¤v–‘å¥ÍU$M““>š%}ã¥­å Š23˜ô.,Ñ<¨f %"¢‹ÚºEi2L™E1nQZ‡ “DV¥GÞtÒ¶f˜$²)ýÊïdÞ%²ißüDiŠ 9×hrûtL5Õp)¡ØNNe¥ª(JEJlÑ«mQ.É ¤F{–›¿XSH@'G·—›¿¨*5µ”O(¶—›¿Húµ”Pl/·»úr%õ»”Pl+×»úªJkxB±\c:$ TwzŠL±î‚èg.ÎäsJNK¼î¶beǃ¿H«4Éï1iÛŠáé4F¹JA«æK‰-¶£FWë5šô3ùšš´‹mŨхz6)¡Èk6¥CaB‘)F»Ø¨ÑÉ}/bŒ]äzNî»x‘EUU*Â1¹ïâANs9j‹ò u–AB‘©¶#@ëý«„"SInDJ(†¡„bJ(†¡„bJ(†¡ÖŽOÔP'û$ª«“=5öVÿþ²§+ endstream endobj 12 0 obj 7109 endobj 14 0 obj <> stream xœÅXK‹ä6¾÷¯Ðy¡{UzÚÐÆžîÜ64ä°ä”ì&„™„Kþ~TUzY~Í%, ÆR=T¯Jå–ÿž¾ )Î2¼:Páé{|¾}¿|oœÆÇɺ‹^¹‹ßÅÇ;ñøúù RðÃ®Òæ*Mx•WÙÑΞ÷ð 7œ‘LÒƒJ[ÏÃYÇ~Шâ×ÇO§ÛãôiÕ©Ø•LÐ÷pœÂóQ½ªx>͉v|84îßq¹Ñü.²@DÂ%É£'õø:Ñ«­7ˆ!Ȩ“¤e”#C\ŠJ<«Ö†°‘y œEOíÊ4—/¶ƒÁ¸Æ›«R´šwZoÐA™LN8»Ùylq´ƒ%á™#ÛBäe9ÊÚ€¾]ç¡y2²¯wöïl®%JÑäâ0ž 7“«ó¤lÁÅØZPüñ×&¸\×_\/Ž˜£Ã‚‡f%ˆ-sõ‡ø÷Õmè’ÓP’›Üy¤À8T **K'%-œ3W!ƒ« h‹-æ©JbDUo$'gù™2¶WR™Á¥ÙÝ‘¬–ËÀ,¼€}hŒCeÿ Ö{MÀ9sé›<)·^Šî9…—O+‰«-›8 aºÅ]oå”åp­%Q÷L[938•"eÅœ¼Q¥Q„ôdcÃH>¬5€ãX¢OC)ÅE>TŠÿ4ìDa7ìF^Úî[ºŽY4ÛÜMææÎ³ºƒF^'švéAγG”<_Ú+ˆ·Ä\¾´BS*ç¨ZVVWæ«B‹¹¿oÇa™õ|MpÛåV©oc¤IpÄðCÓü€¨tµQ5˜nux©¦ï%Ôc¬SÈ ëKãkñÛw·•—n@G YùE¡¯õ3 =ú\ÕU{Ú Ä.Î ýv_ÚTN?'¦ât\òùvFmPß™UóI“Í(ñ"òž/ËrH=uTu]€Î¢Fõ^c^™Cf-ë)ߦœUõ—ñÝ—<”¡+µ¨|;¥Ýpßl‚Lé0 .1s2°Û‚ìx£[Êöˆùãy¯½„SÉï< ϧèPoŽ94·êi3ñÒ`J¼ý®‰Ú¹‹™Ç ž`+Z^æ¥Èçˆÿ1ö¸vä •ê¿\ͪûí”U»nØÖ‰éÀ ÛºPõòqVÓ¹ûnÏ3p¯Ìù»¦HUÙøÛñ ‘÷˜¿_¾¾õsé‚Õ,ɽ¿|éÄæºë¼ç ±F<£:>ù“pÔxî}ª¸÷Ây!ñýÑܵíèÎ ‰ÿÏS¹#çQËÅ{ÍrƒlHn'¼?H)àiÆ@•Ùù˜Ó!O!<ÙÏŽKe«±›;p˯Õ¿…Ç¿2™ÿ“ú~0&ðÙÎ#à•Vo_Äבb$*cŠi(*¸üЙ,eBK…L33Ú7ÆEšVøoM¦Æÿix]aJáÿíõôñÇWpâù°Ã?ÿpÊž'OºÀý:³þEàÊ5+æäU’{9ýyÑ Œªx•„qe›URUËEUE»ªÒªžÙ!j¹™*>9©ZZe³ðre’ªÝ¿Ëjt8ZÚðT¡2ûDÙI4ÛÐÌ…qLJˆãCô×i!Žò¨*h%-ÞWá]ÂI PâwP=ÂêxùVªY1'¯’\BI¨Ë>«âU6fþžÔÔ2/‚Óš5SZ#³igç‹Zf¦†Ïd5­-}\®º¤æÿ¨½ŠÈ endstream endobj 15 0 obj 1304 endobj 17 0 obj <> stream xœí|ç™ÿõÏ9ñåâÇŽ/¾8ÅÉù.Nb£¸ŸÓî’ØN±)®ˆb÷ŠI\( 6Ý`:¢  j€@ˆ&„„ ¨"ªh$!Q$¤Ïÿywgß鳫ݙÑê÷Í<;;ó¾Svç«gÞwçééqñÄë3MHHÌu      ˜Y Ñ—ËÒkPPPPPPÌ,‚†–¤žEAAAAA1¿Ñ›r‹SΠ     ˜_þ<"|ÕžÚ…ÉÕ(((((^•—Æo~êãM#WœìÕÚy“¨‰ì¬FAAAA1^ÈŹ £«§§çd|2¹D›_íócc‰ËüÞ5GÖzfÊq3÷”-ÔD_î8‚‚‚‚b¼°×çQ%&WK4ÔÐÙÝ£Â3Ÿlš—d´ÅðȸÏ®µ.Öf™¶§l¡&š—TÅ–“•ÎÜCgªŽWžÉ/>{² ¶±©ÞyE£HVGAAA ¦29*kxäÖAŸl8vËs“_ýâ™ùEBå³ã7?3~˳³ÍMä1Ž R†/ËoæŽ!ccŸL[>#úàˆIñƒÆn>}ïŒÄJZá‹üÍ®áK½3c'YrÈ„íï,+Þò\ö—s3Ë?^¸'lbü ObŸßþÚüœÙ‰Uº&’,¯±##?Ù$˜ˆ†TŸ'T²»ïóžN_»—,6𓸈­äeä‚$òrÐødá8…šè‹Ä*¶ÔÖ´å%6$ìºt(³ãtfg[E·Ž–¬Ž‚‚‚4eÒ’´âJJÛ¯^ïîêìllrfç%×p‰2ÈÅùäåëäeiBÆ–‚óí×›fÍÙ6*êØÉó—;;;KKJ_™¼kzB¥°bYÒþÄÂó—®]ookIܶ{Øüc¤9Iµ_$”¿¹máîÊÓŽËW¯_ommÍÌÌ™:s[eXøbR¿J–¿ÜRN_>®°ü¬åynlì¾¶NÉ%ýµñ±Ÿo¯Ž€o{:yMƨUed±î®«‘“ã?˜³m\÷»¡«í£"RÈq`25Ñœ„J¶ÐÉÛ»oûЍ={ö,Y²$??¿°°pË–-yyydâèÑ£¬•$«£   G™wôÙÉ®w÷tw_/>Ys ¸®ÚqõJkÕàð=#™ëóðeÅÃÝ×ç«m]]W¯ñÈ«M»º¯¶».õU™éaóO+vwuŸ-«9XÖÂMw÷l]²ýèS’jÇ|Ur‰¼ìºvéhѹ3íÜ[Í¥ùC¦íŸ½­bÖ¶ò'ÆÍw™¨lpxÆèi*ËOMWÜ‘cã7—¯ã7·ëZ[Å9')oOM"&‚Ï{:úÓ-Kø¹x¶èùÏr._癵󷽻þ”ä8SÍÞ^ÁZUQfæ¾ ëÓÓÓwìØ‘˜˜xèС¬]»6!!áàÁƒ×ÚÛÛIµÄ€’ÕQPPP‚£Lß´;l&÷Çù•Kg‡4vËà±±/ÍÍþ,¦X|}.®Ï—[«GŽ‹}eÕ9z!­ÎÞÿÔÇ›žî ÓíŠGd +¶ÔŸ8nû cc74p*i;Ÿ?dÒ~¶Úa‹÷?;åõÔìϸAOOÊp݉š²å£-ed ?œÄ˜hB²Æòj;2j\¬pwnàØmaS?Û&:>ï鬭E/„'W^å®mãj8s(û™é‡åÇ™šè³-¥l!~9ºwoá¾}{×G“˜h7aÏž#GŽ$&$D¯Z±}íÆœ‘³7ütÊ{ϾµmÛ¶šš³’ÕQPPP‚£L‹Í."ÕÙÕÍ_Þ¯;só+f/N|{eáðq¬2 †¹¯ÏU»ÓžŸ½çùiôú¼ôÓ¸7ç$ŒÙs»t·4!]X±lgJØ—ùæ'ŽNs’—W/ ›ÀV67éååõŠ}"¹‹¶\]D¶pÌÄ-ߪ±ü•!.LôtäùAðyOɺ“V¤¿´ü]àjGýˆñ‰“7+gj¢©›O±…˜¨zÏžƒkÖœÉ;v*aç.IûãgKïü`ú÷Ãß¾%räÍ_|p㢿òêÚ×g=r˜,,Y%hÊÄUû†ÏÍÜrðtaµ³™¿w_¿öáÄø¡ãb=ÊX”æ¾>“—C¿ÜûÜÔcôò;9rË»s¶ÙK¯ÏՃƧ w¯X™žöü¼ããæºÞu›ÈSíÐ9.‘ËlÜÞ¶,‰Ú7z]1ټь‰×XþÝ¥{wä‰"ѽ7'mä´ä—g%ÓÃ}ÝS®žù‰ïm«¥ tu^úxbüؘ“òƒLMôiìI¶ÐIÚòѼ7~:ÿ;c¦~å3nxmîM/EÿhäÎ{Ç|rl~ø´ê#Ù]]tƒdu”à(Sb &¬?òæ¤-CÆÇ ¿eàØø |X±sFü3ìõy¡øú<_|}ž­l¢Ž •ÏÛiË ¢ëóqñõ9Cýúœ:̽âÕ¶®+­mu­]tÉ„¥Û_[Q0L\í[ŸnYuª_®”Ô,©§./Ž‹ˆá¶ðýÖD»4–WÛ‘÷H ³û½kwºÆQTVJü8ù ï¦ó‡‡Dìæëž¾4a˾ ¬¾àà‰»šøaçûbv _˜'9ÎÔD“cJPPPPP$%r}î+33÷7Ô]¼Òy\È»êj×D'Z”'º>/_Ÿç‰®ÏïÌR6Qéö=rë[¯]ïhkMJÈxaÖAÒ¢¤ÚÉ _šÄÊ®j¾|íz÷µkWÏžkLÞsüõ¹™“ø-”˜Hmù׿ìRÛ‘È y/NIͪj¹z3ÅÕöڟĪšÈøžŽû ‰»UØuõâ[á[ÿ1?éÍÍgé=º±“¶´¾˜=ÎÔD‘‹QPPPPäeRôÑ—¦íxvBÜÀO6 üd󳓒ÞZœG߯ÿÀsè×Ë¡Ìˉk]¿]D^~Ãçõ—‰´·Yñàû}—ýˆ¤]ÝͰj;°&º$£­mÏ$îk;iO[›ü]# Äç†|Ø€¶¶ÒÕÃÈ*ÃV—¶¹_övû n­"j& }JÊQvÚ/&RÞ`Ï!i“¿ìcàl†iŸX€aMÔ*£¥e×Dîk;qWK‹âLÉ--'W åÿ¨­¢‹bCÂ|®ÂaÆÉM¿èz׫ÕÚRÜ~a(d®¨î¿®%ɤ°%tÃÈĪUÃø9ÃVTÝ6ã&Òþ üi¾¹§?X¯ -j"Åm O÷ŽÛÁ]¹z&îbw–Ýö°(~D„¯G­*×[Ü÷úTÊϦîRñÓkä4k¢‹2.\Hྪé.(Δ,À¿¶2}å0~ž¼B5¢’K7·˜¯SÖ¨ÚŠÚÐj¹M-–6§¶ýò àjp/ÿé©MX€›U¬s4tL´~údòõ5º†"Í=¾“]^ÑDF¾ü»ö%=BØkÉZ’—d§]'Ž_…¬«qX|;‰Š¯û4²k“aMtA†ÓéúªºÿXHw:éLÍi~"lE‘Ó)¯S•†ŠV„¹+ÒoÔh[*#¡-aÔ¶_£Q÷vz¶Á«-Ôí'´âm¬¤h"µƒodû5û–ç€8™ƒ©]·§Þ|fØM½OŒÆÒï$@ïaMäÑÜœJ¿ž©ÍÍŠ3åÓìÕ€]K’Ol‹©¿0*Œ^£ Õ·Ÿ_*”)iT¾ ^m¡fL$ÒŠ_Ldäàûpä½]Eº:sÉ,oN¢ÎfHNh >H€^šHNSSr8÷õ OnjRœ)ž.X>Tº°A¼lHyÚÛFeM(l¿{æÐåªÊWôj µïÎ-à»~žßé/)nÙDÒ ÙD×ö'‡s—îðdå}!Cá (IµU Ý ¯Î¦ÁÍP9ãÊ»f°i€¿`MÔ(£¡açî«:agCƒâLÉÇ— %W’¡ËŽË«ÒF±!™K*$s鄼цÒ&wYv¼A­r…¶¸Å¹åÉ$W­û¥|û™¶T÷š®ÈnƒÆ!’£7baçO… ƒ¦¼îš&üñÚDÊÇÄs¥‡Ô½ýü{ôpMØÉÏW\LôIà^ð«ÐCª{X\3ݧÃèÙdêÑý@*mƒt×&Ú¨AF}ýÎñÜWuüÎúzÅ™òÈk÷ÍÑZÚÐzÄ·úùúó–åçߩڨ°Œñ…Ux -ÍcÖ’o?i9tèPW+;êvÈ »"»€â1dÑ6÷rþû\µOM_àÀÀGIÓ}‹‰ŒœvkÝÛïÙ}Ï[Ì‘—Ï¿S\•ô°ˆ›æÎ‡‘“(¯SþR~B•¶Aa×fš¨XÉÏXðvójk“Æq—ëqIµµØ} â] oÁšèœŒû”/Ö{LkȆÈM¤x4~1‘|Ôš£ÔÔ$ÐËuBMùG-×]׿»@ÿ5ÑY`&ÇDVï.HaMtXÉ&²zw@ k¢ÓÀ L6‘Õ» RX9¼2e/ Š=‹Õ_Ð_`M” ¬€|ߘ_!ŸL«¿ ¿ÀšÈê~?…šÈê?I‚¿‘€i°&êæYxȇ­ÀDÀžO¦i߃­tkbÎ6˜ÓŠ aˆi­9k¬‰®ó™u­­ÀDÀžŒ‰Ìü®]פO|ß ¶B¯áC0‘ ­9k¬‰ºxèüÀm{6ÑŠÓý}÷ãVà ŽX0ó»Ö¥IŸø¾l%˜Ld䬱&êä ¦³Ù'Z‰€=±¡‰:5éßwƒ­“‰Œœ5ÖD×x‚élö‰V`"`Olh¢kšô‰ï»ÁV‚ÉDFÎk¢«<Át6ûD+Š&r8Šh?þÑaQEŽÞm)ŽÜ<úÓ›Q“󲪧Éá¨Z¬²ÿV­$"½.ë64ÑUMúÄ÷Ý`+Ád"#g5Ñg‡ÓÑÄý«DŸpDciéž^ˆ½ãŽì‡Þ×]Y/¿|îØ1¿·B‘›ˆjHÿ2"Kl˜F󊦩_ñ$ø° 0NizΨE%¥Ì±U3Žž‰¸·•%š:3šèŠ&6¿ªxÕJ0™ÈÈYcMt™Gí8§ïJ›>sšn™9ëÓ•Q’·NK|ÿð5œ ’z žÍ}äç/(Ì+(ÈÍ/8r,/óÀÁÍ ;öU‚W­¤¤¤ó”x8É‘¹`Ášï~÷ø¨Qg–/¯‰©Y¶,ÿ¥—VÝrKqLŒñVF þÛGóûßýnkÂΤ)IIÉ®²3%igêŽäÔÉi¤$§¤)™HAt¦;JòˆIxô4™%Z7-bÀ€×_¯¢{Ü€qŽºøE9ñ• eñUL<±Õ伬æJ}©ÛÊg¢ œY uS‡VÌ}üøÁ3Èkc­\Ö&2Ž™&2rÖXuð¨gbù€C ÝÝ׺¯æw]˜{Ù9·Ã¹ôÜ©ÑmÍ;œŽF¶ã&ºt©]>ø<9#3&~kiE•öÐneÏž=uõõµu\^´Æ&>]tss³ƒ»œ9xpÑ7æüõ/g¾˜[6î“òðq'?úèôœ9Ù?¾ì«_­)(0ØÊï~ûÛ­qñ3g̬9ßÚÚ~­…/­|ië ¥óÒåÎöËWºïÎÈïË©8®J¬'òJcÐ{ÅÁΤb¢7Ü ÅD¹y£6é|°Í$&r4;šO4~ùÞé=ýþýçæ¾ZVU^o°•M`"ã˜i"#g5Q;¶‰ªªªÎœ9S]]Mþ¥Oó®ñäv©i¬=ÜV?­£yn{뙎ö¶Öæç?¿è(dë1x6Ë'j(++K³jCLkkëâUÑD"«ëš¨¡±±žüŸXÈí ò‡Ú…‹·ÿå/ñßýö‘Ñ£º¯_/߸$÷å?UE/#Óû¶}ë[›{Ì`+¿yôQR^yyTU½óRGg›»\btùjוkÊ&rºeĆ3ª&bæK–‰‡1)L+ÕÃGRâ}–«nÚ<¯rÎåcþ”ýÏA;Æþoåø?Uì7j¢vMlb¢³ uçê|<•ÆMT^^¾_ rÙÔ]×L9k¬‰.ñh›èôéÓÄ>£¼Ïò>ªqé¨ú|ÝžK ÛëÚ/µu´··6ïº|>²Åq„­Gÿl6ב’_T\W×ÐÒÒR/fÛÎÔ«W¯–•WìÌØ§qtMDâ !rº,t‘ü»ü›ßLþFHö£7[6•;2ä߃_D¦þôIÿ/dÅÍ7låÑÿùŸ‡|ðå_ªn¸pµózbN©ZÑ;'Œ[àc#…~" ÉoÙÁD& ¿;ç4`"v|Â(ñM¹ìM‹smtša¢úº†ã²ß{ ø£!;>~âȇÖL +;•oÔD—4Ñ݆77Íþ$mæË÷Ù/µmÐh…œËÌ‚#ïl›@Z™›”uŽû[×ÇV´Aª¨¨Ø»wošd>yסù•÷ÖD9nðPåé®Eë7rÖXµñh›ˆDCÄ:.=#ÄDµµ¤Ô4ÖimXÐÑÙ~!¥£­ªùÜ´Žó ZœÅl=ºg³>ùѳkB­û‰zêêê$1ѲUkׯÆíË94kþ¢ÒŠJµ# k"" ¢!„ZZH¨EögÅ7îûNÈÑ?…¤>RŸ—ÆÉ÷`êο†û}È®o‡¬ú×5ØÊ#?ü∑/|ñLÓEÉ Æë×»»®_ïìº~­³ëªzLDÑŒw„ ˆ‰¬A{Ä‚71Q¿è'"÷­]¼uëÆä-óN}ð`݇ÿS½6¢æÈžšÆýD´þ6M´·áÇO ùGùŸ^¼óSÇ#×ÍŠÚQjdï¼ÚÓ²ªêÿñ·IŽï~ÚþÃqå¿=:éð©3µçýŽ0I+ŽÐÖAye¢¬¬,Ra¹xîæÙµk™©½"­ßÈYcMÔÊ£m"âz'ŽwÐYzg®–PWWOJýÙ¦†Ü‹ ëÛ§\sÎ9’ùV‹ãèg-[îÙ<ûà ?ÈŽ«µíRGGG½ ÒÚ£¹ó–­X±xÂÑÍoÙ2úäþµ’JtMä cû\ji%GäÒ%²?¾ùÍÝ7…ìy8¤d]8Y·©˜“QiìØÜ!!ûnYûolåá‡1løÈá#ªêíW®yqúàƒ n:-‚‰‰$cê˱•]®oA†|7×Ý#3‹¹ÖµÍ=:ÿš¨¡¶qîš+¶Úš}61«lÌûÇWÔ|®ÚÉŽV ªjltõÜ*¶Òª‰ö6ü诃Gß1±þ'3[ï™wáoÓŠßûxSz¦pÌøž– ýË?«o'­ÌºøëyƒÂ÷G®È>tèÔ™sõN#3œL¤«!VFj•7Qff¦à VC2_c]Z¿‘³Æš¨…GÛDD@$N!.àB!·†ê8¸ÞBccýùÆÓŽÆ¼î«… NâÇΉ¾Vºg³bõ7Îmº=%iÙµkéJíÜðPÄèÿÝ?ó¦Œiÿ–¾ðII%º&â>TCäXpºÔÞÞN&cî¿?á†Ý@B—ª­á•³Bš²ÃI“óö݉ÿóÀ[yðÂ^:lhXymssK‡Ã]š¹Ò~þb{).58/)ÿžˆ½íæ¶;ßåê©Ð°°0×ÌÔæTµ;xˆŒ€WøÑD ×$ÿncǯ7÷Ü·¥çÞ­=! ®-Ù"ú4’«¹~FGGÇÆÆ’«Ÿb+-šhoßôvî휼cüéŸ|Zö›9§‡-oüd~qÔìmGÊϵøeO‰‰îzî±Ñ·½wâáwM+ÿý‚Ú‹kÇÏËM-9•_^×dàf¶‰ÊËË÷íÛ§«!AFdyÅz šˆ´EtðàÁ'Nibb"re>pན9j«Óúœ5ÖDy´M¿-Ž÷NQÕñ‘ o!îÏòMùÛ†,<}æTµã¬ÖŠã|}Ñ⯖®þ÷ìC»ººˆ/ä1áÚµk…EE¿ñPQÔ÷ –Þ’0ãÿ¼j…X®WˆÕPGÇåË—¯\¹’·ã_þeË¿†ì{fÀ!!…ï„”|R2éÞí·„$~ík»×¯7ØÊ÷ßÿÂsÏ}þ…“gÏŸ;ßâ[?â/56Õ/›•šýô¶ŽgÓz^ÝÛs׿žÇW—TÕºrõ _jrÙ\»vmTT©*..N±•‹šè˜èµûvR$2Úzié²ã +ÒJz¿§åU§ÿóÉ?¼˜të‹;n÷Ðí¸srÅÃsÏ ^uaÌò3³×äíÎ*=URѨ¸®¤5Gìß¿Ÿ(†Èš(€˜‚LCGŒ@&¨¤è»4nRëÍ1b"RƒŸ™÷¿¶ž–°ÉIj‹iךšc¢v/—3çÌâ®<³§çŽ×Óý?‹óKϺ®É%E…[·n]³fÍJž+V¬^½Z±• šh›è?~óçA n¼ö¶gco ‹¿Mâ£íÍ—Þ”S£q@ôMTyú'~ôɥ߸â{CÖoäŽ_p meòô‰§~3ÿ̰hçäèÊÛK,©&óKêeßpCó¹sŠ­h˜ˆ\¾Ž9’““C¦³²²È’D@ÙÙÙyˆ>:DÞ=|ø0ñ™¯X£ ÷âHTF2M6ƒˆÊHÛDFΚ<{¸¶‰È¥˜Æ?õ|$ÔPïq'!NCçùQѾ˜èlnTÁª{N,úAÙŠ_ÞôÛÚO5íÖ˜Ö°ghݮΥ=w:ið‰èÿ;°è‘Ì%YôñÿÎyõ›{g|{ïôo­þç/Œ·âäMÔÂߢ¤7娆èC:;;Éîl]¸pÓ¯~•òõ¯ï&qÐM7ÅÞsÏÔwß•Ôhåס¡OBÊñòºU¤òÿÒRPÙ@J~EÃñŠzÄDÀžOfò±º¹uɹuDFj‹i| È!9.gñGÇ¢'×/x·âá¨+wÄôܶ¤aÀÖžŸÇõüaÙ‰))§¦¦”g/!"Zµj•Q||¼b+Ú¬c¢‡~ûÄßd4"õö7üÇ»Çîd”tiÝֺͫ÷«Õ`ÀDU?üÝýOÌýöàÅ·Õ\(},|Ìø5ÃßÏûñâm'>Zr˜2±òp™¹/$¤úþ‡ÕZÑ6ÑÑ£GÉ¿ôÎ1qQ™C4tàÀê#²$ä¦X‘ ig½ GêLD$•’’bÐDÚÈMäàÑ6Q]] €xÕ766¡†èos.8>˜èøšGö>×”FÊyR²$e[È2‰ŸÞ4éÉ‘7-~ûÇÆ[¡G¸•¶A4Ô!Ö¡««‹ÄŒUUUd1r´É1'Óä¯ö%ôÞƒ2R`"`OÈ'sÒ¦“O®Î¨öÍDµ5MÑSK¾pÎ~zuxÙÔCíïl8ñÖæÂoί}2½ç'›ºo[Õ~ÏÖžÙ3bbbˆŒ¢¢¢¢££Éü§OŸVlÅ¡‰¶‰þý¾‡ÿá1+#×mº¶¨„öÕ$ZñaO)ÄDw˜({þ]g’þè);$åO’rlõƒK_»!zÌ3žÿºñVœ¼‰„ûrŠÿü‡Ã[ÝóË_=ù׿)0°'½±´ôüø чϞõÄ8 MÍÿL8ùÝuÝ£2»GìëùsbÏÒ­YDCäjVXXX_¯<¬šÖ^ýòþ¿|úµ˜hÁÙǦ®&‘‹o{J)¯¨üÑC÷ šýmb¢Áë¾G4ôÖ¼]‹· ö!eeòtp 5Þzkf~ýìmG+щH@DìCû‰ˆ,HìC\@!ô‘IpäG‘zÈðĉÄ€ÉÉÉd>¦7è(­9k¬‰øqoMÚ&"Ÿ×çœà r^àÇ£¹Æø`¢½³Z÷§Ä“ò°zy¤hýýs†eù[7Lá&ã­8yq÷åÄ‘DCd‚Ì'ËÐáuié #5ZùåÝ¿øËcÓB>6'U cÀDÀžôÞD³ÇìùòíÇ‘\ÎÔŸ=¦èîn8wè¶ž±=sb¹««šƒØVš4Ñ6Ñ÷ï }jšB?Ñ)D½ÙS 1ÑÜýô¬ï Žºõù¸•~û ;¨†¨‰rn©»ífú’J£í±sûx¨#écçhRïMääe$Œ 'º!êIv“ÂCc"µÕiýFÎk"z×MÛD ®rî^!÷û‚ƒø±mm¾˜hñŸK6Ü}rã/øòK•ò+¶Ìû—ù/ÿ¿™Ão‘Dôú&êèzˆ„€ˆ†?DCdš¼Oö”‹CO•’ˆ·ªJáÑ”­üü¿þûOÿû´óõç?þé÷¿ýÝ=~€|HÈ'&ö¤÷&j¨ojRz0‡ÿ?6ÚåÄŽ>¶ôöâ5?,^ó#õòcWY˕ůÞ8}hÈì—þ£Aü@T]ñ"º¬‘·***ª«Ï\ºÔ¶'+«²Rù±B­Üõ³ÿüÃo~K ùûá7?òðýüî7¿DþØ ç1)) &ö$@Y!È·)&&fýºõkÖ¬Z»v5¹Ð56j=͘m¥AímøÞýò¯ãoüÅ­Ïo¸mä®ï?ÿŸ…Q L|ÛÓÒòòÛïùñàO¿=øËï<1ý‡ÏMýdäºYôîÑ)5J‰‰Êϵ⛉œ¦?cÁ鎌RehkH¨ßÈYcMD4ªk"zsŽM \lá˜ÓÂKè÷¿öKí>˜¨,71y҅˿×›¥%Š–ï²eã?þõóBf½ô£S§NlÅIMħÆ`M$Dä%YæèÑÜk×®îÉܧöG…v+?½óÎG~„–;w>üÀƒ÷‡þú‘¢JLLܺuëæÍ›7nÜ{ eggGGG¯Y·fíÚµòûh´¢ø;wím¸å®Ÿýíã›ÏúîÀ¹?øÝ»ÿp±²t·A»•¬ƒÙ¿~òÞG‡>1nÅ>’hkÈ„gy Á ˆÔ1]™ÿÜ9§ø6EãÑ ’VŒœ5ÖDô MÄu ѧå\nȵ’‚ ÀýVÔ577ÇNºïÀì¯æÌùêÁ¹¤|ÍS¾øÚ!¶ÌûÚa¾$N¸aÚÓ!3^þ™äY|º&’ü†ˆ ˆˆžÎž={òÔ©Ý{÷–•k=_]£•ŸýäÎûîðÐ}÷“B¤s߀wÿ÷¸ç2»aÃò5\¹r%YÙÃ= ‰<¸zõj"#¢!í¾!y+ušènÃ}{äž'þ›¨Á`£ŠÛ Ý ¹øŸ«ãRŸ5w}gr5G‹vŸ”®‰œV<‹Û7hýFÎk¢Zmy…·&"[•´iÑê·¿’’:ÙX‰ ùbxȤ7þ°iÓ&ƒ­85MÔÃç…,+¯Hß»Oí¦œ‘V/\tç~|ÏÝ¿øõ=÷élܰqÍš5«V­¢¿à[ºtéÂ… çÍ›7kÖ,dö$&"㑯*1QII ù¾ßZ­&ÆmèÞ:×Ékhÿ7¾A#£Ç>šG ™Ðî–2b"JYYYŸÈOd䬱&¢ÙV;Îié)F²‡³e÷ï~ ZSS“““³jþ„Ùïÿ~æ;¿™ùΣ3Þzhú›~þÆ}Ÿ½6à³W|þê½Ó^½÷ó×î™þÚ¯¦¿ò‹¯Ý=ãÕŸOíî˜Uó gSuòÙÃO:EÎW¹˜ žâ“§Rwí‘ÿ¶Î«}!,\°à‡?øÁ¾ûøñã####""ÂÃÃÉôرc?f°*{¸°dTT˜<òòäé‹P£¶®Î&É.˯äd³2ifbÒ=; —ÂDäKG4TZêcF†sšØÐD>·L9[œ5ÖD5<ºÇYû³,Š««M²< Õ‰ˆSÈö9räðáÃôJÄòÙ<ÔøôGIJÀÑ£GÉòd­ÆF_r”÷¿´bUöpaI® Zƒ[:E¼_¸uøg}“´Ö¥Ï K¾IÚÓ’}çv<ͳIˆì,!@wç|ƒÖ_£IŸø¾l%˜Ld䬱&¢ÙÀƒélö‰V¬Ê®.·–„ùLZ Ýõ*—NKÓ^H’.1Éj%K‚@cCÕ¤O|ß ¶L&2rÖXÑ„àÁt6ûD+Ve7. ïܧ¹I ³·ò„û{K‚@cCѤO|ß ¶L&2rÖXUóÓÙì­X•=ÜÏ1‘4«¬jsߊ”¶.?ì’>p`š¨Z“>ñ}7ØJ0™ÈÈYcMtš'˜ÎfŸhŪìá‚0ØOäÒÓO¤¸IN¡ë‡ëSRP‰Äw´uy£ò%A@±¡‰NkÒ'¾ï[ &9k¬‰ªx–z6Ñ ÅªìáÚ¡Š±±sžv=ÍÉ6)Í­PÞ/Qò~"­‘{zK‚ÀA>™¦} ¶R¥‰9Û`N+¹Çɛ„VŒœ5ÖD•µP A+}ñ ÌÖ ŸLs¾©ÔÄœm0­• ÁÈY“›˜ Lì ùdZýåýyöp`2}ÑD ?`°Ÿ€ÞÚȄ{†@Lì ùdZýåýÖDãg.C1¿ÀDÀž°1‘å_”à.0‘å&ö&B1­ÈM ¡ •e5¤è.–z¼Ö¶%@G&öDn" 77æ˜È †z`"lLLÃQ ÁDjÀDÀžÀDÀ4m"" —_~™šèem%Y®˜ LL# &¢öé‡EÚ2²\761‘ä‘Ôöy5Òšä$j¼K>™‚}`"P̉‰X´c¢”¼Ä×ÅW`þŠ7n~Þ9ßô!©ðõuçø9¾Tèß## a"íÔ ~Á«Ê‘Ö<È _ µwÓ0b¢èTî×—¤ ®´Ë¬§Q\\<)Ú ‹ â/Wag¦¬G¤6ïXBŸ6‘<¹6›1œ^[…[R?‹ iÍi°wäïÂDÀ4tMD$Ÿ6 …zÜ&"ÓG,HL”’—þ4ç ÎGO/^Ÿ§p“M?&"ëŽNT^ÑSgh(æ|$ZÌ«7Ž‘~"Áɵõ²¯*ç¿SϬ§š (ÐiÍièšýDÀ|0‘W·­è­¹fЂvX¤n¢Dæ~Žçn"©›È½¢LaBœꉒD”µ&’§œSL®ímp]AHê—lšÖ˜îΛлsÔ;r;§d"…Î>V }jf®‘˜H2ÇgyæØÐD6‡©brm¿ÆDZɻնпiÍi`İ ±@¥£h" idþèP!üQtO&­hOIF¬É“kŒwTú‰¤éÅu’w>­90 9a"`"Gq{ÛCD³ðãLZÈaš5éDr'ÍuÿÇsƒŽ§ÝyÄΡcÈ*¯• «³‰œâ˾S%¹¶®‰œ*9ÁåéÅå=Aò…Ùí‘WÒ›´æÀ& Ÿ˜F LDcjœ©o¦“BfÒ ¶h›È†Å'Ïèƒg,{‚˜˜F€LD"¹}Ø¢Y®˜Š·&Šý&]wè‹_?„ ØÑ#Ù'‰Ø€H­Œ}g6LÔ»béªDÑD÷á—k} ƒ&òê:lÄDDC0&öÄç~"ÿ^ü šˆ]€Žº1áaYÀ_ÈD‚ŒH¡Ò‘ÅT–ë&€âs?‘öÅ_4èEüa¨ŒIÑ.Ú±•ÂÏÙôÛ(ÿ½›t-•‘9 @ÂD=̳}HyY µŒE–ëÆ¡ Ø³ ™ˆ½ÂKd$ÑÏ&ÒÿÙµìnžtI÷óå D€Lä¯uû¯ð?ÔBA±[ „‰¨n\¿es õ×¹‡æ[?‘Ò¯Û ã”ÈÆAìFÜ}àv3љʆ]‰‡¢—ì\»h‡¼lÎ8‘[îó–Ø˜Åžå÷©ä•H:êv# 6PÖ®ìÍxúƒùü^¸¯ö¶2‘k ¥ú‡÷? ¶ }ròj_LÄŸPæÒz\M°ÓÚÎÒÈÔL$\(üù{"õ[¬†DO›×|X®·wçDyÝYW`"k ¨‰¢}Êm¤k"ê RÔe¤d¢š#¹O”0_6“Ÿ&ŸI÷®+4t䯶*næÈe&âÖW“¤­ 5s/õMD»ƒÚ„óË|ÏLÏðõ5tanš\½×‹.ãäxzY£±½]#¿žËëg uY¨ÂeSA nŠôÄn³†GÈFr»#Âle"…Ë»,` e޳ª‰$ {ö”;R›øñÓÛôÙDxK@MD$ŸÖF¸;§h"Ö>TFJuÈMäö‰GÌÌúÿÂý_Qmî9B½¼X$ÚQ‹¼$ 1ËñSFú‰„Ësùå'x˨]ŸÅÓž>—u*ëªÕ¯(#å L=†RoH= Zï¨Ü›}ÄD¢i!Šßžb—a«, /Mäþ³Äû£Ó0ÙDF\ ÄDB‘ÄDìÂ^ÄDÒi[¹¯ îùî()Ta¹w4L¤µ1z1‘Â\r3f"ýiµúULá¹ÄÉ¥ „fŠ©o"÷mFÏ–h:×"IïÎéšH#&’Ì÷ÁD*·I¹ òǃ#^|î'À[úÜÝ9• H‚o&’ßm£‘Œâ*ŠË³³Œ4dÄDGÅAt8Y´z¤àSL¤P¿ÊuX§'‹¿¥æKL$¹Â³7èle¢h½ ¾˜ˆÜs^üYÐO€·ØvÄ‚âÝ92ÓØnL$W 1‹dIÉ­=Å Âm8 éÝKDán•qE«ö‰*W¬_Ô0x€$v]6ÕzsŒØJv5–uj›d7 ÇAt“l¿ž2”^Š:à šˆmNÃD®Å¼¼GÓ0a·ñ"ŠÆÝ¹€šH2 ‡}9UðŽû~ÒˆWÌ­-C éšHrÙ–õÔ4Q´lì\´ðw¸x–¼'H¾°¤÷AR‰û/O?á†G»Hïà‰1¤tËË=ôâK¦›˜(ˆ LLÃÎ&’ÄDd&;çó–Øcß™M g¢·R§  b"`ýÁD„È×>}#Õ£!¾ÌHõKå½DÑDGõþ˜¥Ëx–.Ù_,]6Åq"Ù}š’O¨'SsåTàßrkYH§Eõª¼ZFßLDSËE¤I’Í™—iŽ^ÄÓ7û#]¦(14“ËÌï¹8ûýÁD_L_ºxÁJö¾ÜÔ·ÒFd¦l—|vžVw@)#ù€ï¼£š¦\þ)jS~Kn"ª!A@üKîªB/YÚW<`&ÜyâÎ{ÕUV€ž‰\oñgØç×r‰r¤Za"•/µq $y=&êÁm¢îîîÏ"¿ˆZ²îtåÙ£‡òe$”T–•-®'Bñ澌4“¸ê[J&R0û—3û™ëš™|B²úþý1©ÿ‚èØ çˆž ªƒýÜ_É͆L䞦Œ!’ZU®¿Y˜SLc´¥ÉÉ~1‘ýDBpš›ÛɘH’"œÆMs¥EÐùÜz|‚ïP¾ ÷QâfÝ'Î6®˜ÔÛ€‰8…H£$÷³‹Ù?)•Â(½Ç)»’Ì?'™I°éyxr´JÔ&â54wuÔ†ªŠê£‡ óK·nâF,d&Utvv*­áW|«f£âÝ9ê‰D䆪æ]ýæ¯?di's=äVv]—Nøv-(Æ2­,eNйÂ_—ã„ÿ*VEuEÏþR×bÌ+c"—VÈJ1‘[4"=q¯øù.‹ÑeÜ:ãÅ•ÆÏäÖóÝDBºi‚­¯¶Ò|…Š<ù•ÓCK’˜7Al¢Ï'Ï[»2¦²¼úؑ‚¼S)I{‹ O}ö^*1”ÊÒqªAêLÅO©ô-æÃÈ%ãS±à vÄW6æ%ýƒ˜¹qÇ\µDóqC/3‘´R=îsÍœAöì+ÇM&z³ƒ½2ÃÐÀGÁDŒG¼œv©H}×ôL$dÀdß•BÃDî¬(žðFûâ apØßDEcÅÈðkVn¬(;}øÀñ’ŠäĽÇhiiU×PŸb"ù§Túó7Scìœ0nA®§XLF¦½» =äwçœL¤my%ÕÚÜD‡ÕxL$D=Š÷Ù´§™?µzôL$úƒ3TäˆPƒt¯ÌE&2ŒýMäÃZ“ÃgN{/±¼´ê`ö±’;·î))>uíÚ5½õü{wNmI&~wgïQûª¡/b"q¯:ðÚ#¼‰‰¤oÑYÚÕznÞ‰îιçXÙOäöŽ+„ Sp“W1Q‘pWNw³ ÄDê.Є }`c+ÄD^|&š1‹hèÈÞª%“÷å—íJÎ:‘_ÔÚÚ¦ QÌ1‘è«@æ*Xp_ß\=L/Ûy¤ÑOäÒú‰Œ|·`Þ˜Hqðƒ‚àj"‚Å_ià=Ac"â ©o¦tcLìIí'}‘ 1Qß&ö¤ïÆD ÏYLì LL&²˜Ø˜˜F0™ˆ¦d5^·Ù^{‚~"`Ád"QVV½bs)f÷ãOVñëWÑûìá^Õc&ˆ‰,¾Fô‚ÌD•e®G²Ï;½rùr˧dIUqÏ-45­bಇk,ù¿dW¬ÇÀDæ]ú+Ág"â ‹­ª+O”'|V¾$¬aÑ_/®y¾zã?ÏUžºèþDi˜ˆˆÈä ¿³‡³ó%iÁ3Gð9¦•síñOU‰7!y’ª’ ]9CôA¬1ûOóMôÛ4åþË®çÈ){ζP›<¯Þ[ ù ˜v5è·Ÿ‰j›jß;4æÍ£ï¶­"*¯Ž<÷á‡Î¦¦-ñùs˜¤Ž.\êå¯+M‰ÅÌô$¬w=Å×¼^ünÑZÞfw]mܹ‰œ*&RŒ¡hµ®ôÔÌ[ŠÙ%ªÝW6§çªèY^È‚#ßž~B ²‡33å™Áù³éN îž`N´Ò[¢V¼ »zÓOÄæ¶£9V·kCŒ_…€oŸ‰Æ†ÿ£äÃïßûý“G×mÚºæiNCo o9’”Ö—^êÑ0‘û‘íòdž,ôîw”f2 ë{zÊXÿ1ÈjõK¶Mò\/§ÌDÞ>r9àŸr ‚®‰ÐOÌÁ¸‰ŒgñîmLäR •U… £™R7Šº•rd‘•¡¼Þ“®ö½˜H9Ÿ—‘g<úðIÅúåÏ<yñàJ`>¸;l‚AyEoc"ù}¹© ¦‰BGŽdãù’c9ØÝûœÅpL¤P¿"º=Y†b"¥˜ ˜F,›8ý9ýß|‰¸@H«ÀN÷¨Þ“ÆD²H:bAfeÅ\¬7± ±æM…Ô-²¾i–yý¢†Üîpuô¸£\‰JŸ¿ú‰l€î(na&% 1‘‘o1‘tü¶hôµÊˆ…vùˆ×'f9¥¡ \ÌwtMä_ö†3°h¥naÀfiISª_´aL†e6¢ÑªDÚɦ26Ø ôÓœ‰z|ï'ê_ôŸg, o¨o˜˜†=û‰ú0°'00 {öõ+ú‰@ß&¦aÓ~¢þLì ú‰€iÂDqqñFC–!Kö¾¹¾Lì b"`0Q[FÚ¢ÀDÀžÀDÀ4d"`˜Ø˜˜Ld90°'è'¦YLì b"`0‘åÀDÀžÀDÀ4`"ËAöp†ØŸÁÚóQÞŽÊ’ˆÉ9ñ•ÂFV-žœ—­¹Uü*®eøå=«Û ˜˜Ld9Ȯܖ;ÿ¬ `{š¨4=‡œÁˆô:÷FºL¤­$GnÞ¨MUtua]»~"`0‘å {¸~Üyc…§ÛÏDG]ü"¢t¨€²š+OÎ gv”ŠŒøsâsK"•”Z-S5Ó€‰,ÙÃåp ºR3±!˜ýLäm²7e,Îõ˜H7&¢ë’SOײ'00 ˜Èr=\¶ï|@$KÆdCyäVL€ÀD–ƒìáÒÊÝ÷=›áÈLƒw w Ž–Qb9¤·ì2Ä‹õ»sè'æY²‡‹«õDLUt}{™H2Ø€¾4 ë Q• ALL&²d5Á÷±s„í±•‰\A 3ú𛽍ä7VÁ åæ)ŽXÀ(n$ÀD–ƒìáÌ^‹"¶fÒVasª}LÔ€‰€iÀD–Óž±}ô-ÐOL&²˜ØÄDÀ4`"Ëé?&} ˜˜Ld90°'00 ˜Èr`"`OÐOL&²˜Øoc"º Š&²˜ØLdõ— ôU`"ˉ€=ñÍDÞ(œÀD–{âm?L|&²˜ØÄDÀ4`"Ë ‚ìá~üÉ*~ýj&ä$j¼ Ó€‰,§f×LN™ý‹Bí]˜˜Ld9}={8;_’\q/Rù™*æÚ㟪¦ùÔV%† O§Pž•ª›¦¼Ÿ#D܊˜Ld9A“=\d@fÃŒ?$Ü“0\3“…(a“ly!„|{€öö¯ü]ÄDÀ4`"Ë ²ìá>%ŠUK‡§²ÍLŽ acgó6Êddg`"``"Ë ²ìá>7êÓêd¾q[§ٳ_žqÛ¢{wN˜†‰@@‰,'Ȳ‡ûÕDÊÛìîæED„z’¹†EEEhßôëW'б€~"`0‘åEöpÕF¸;˜öÈÉô±‹©m³Ðºg/$/a"chhȉ˜˜Ld9A=\+Þq/ÏG, óÙQ¼t¼ØfÉ:í1{0‘·ÀDÀ4`"ËÁ3€=‰€iÀD–{âC?‘¹!P|*0‘åÀDÀžøx‹@ÐYLì LL&²˜Ø˜˜Ld90°'¾õà0‘åÀDÀž &¦YLì LL&²˜Ø˜˜Ld90°'è'¦Y²‡‹ë7ûá<ò‡¾zõ° GeIÄäœøJaݪœó²õŸKË §ž”Q–·ÄDÀ4`"ËAöpŸ·Ç/OO\ïÕÁ/MÏ!g0"½Î½®ËDF•”›7jQI)Lú70‘å {8»%&gwÐ<޼{€ªÃQ¿ˆèÆ#* ¬æJòhÇ;üê‹sí¨!'LL&²dwZ—=Ü[ÏÇGysͦ*2‘½É%¯b";DNô‰,ÙíÊî ˆdYŸŒ›È# ·’Œ›Èæ‘10˜Èr=ܪìáB‘gõÿ‰‚gÔp#NÑDŠãl9a"`"0‘å {¸%ÙÃـȩ—©š¨4=G¨ ¼4Ù? rÂDÀD`"ËAöp§ÙÃiüÄÎvܘȈJ<ƒ·t8÷¢’SÜX&êQ‘Q_Å~"`0‘å {¸0*ã>³²‡K"QÌл@¡·9ˆ‰€iÀD–ƒg,{Ó€‰,&ö&¦YLì ú‰€iÀD–{‚˜˜Ld90°'00 ˜Èr`"`O`"`0‘åÀDÀž Ÿ˜Ld90°'ˆ‰€iÀD–{Ó€‰,&ö&¦YN_Ë.Ý0õçu÷ßçäôÈéÓxýDÀ4`"ËéCÙÃ}X¾7k@Cÿ–P{10 ˜ÈrúPöp§’S„å…¨æóž#ª˜.Ø!°U|&¦YNßÊ®òhk:ÓQÁp’ `-ì]Vù»00 ˜ÈrúVöpµ¤®"ꥊ6A×Dè'æYNßÊ®áIŠ=˜Èþàî° 0‘åô­ìášÉ¸iï’ÑtuÀr0bؘÈrúPöp§º‰øÞ!weª”¦IÖ¢;Š[˜†‰@@‰,§e—ýžhÀ€1a¡ÂÀ9aSÙÜŠ­›ƒ~"`0‘åà Àž &¦YLì LL&²˜Ø˜˜Ld90°'è'¦YLì b"`0‘åÀDÀžÀDÀ4`"ˉ€=‰€iÀD–{‚~"`0‘åÀDÀž &¦YLì LL&²dw//}ø*ž¡j-00 ˜Èr=ܵŒ;á¬çv0‘¥ Ÿ˜Ld9Èî®Ä(¹öìb"`0‘å {¸“ˆ˜¬Èpd `"`0‘å {¸+ ’e_‚‰¬&¦Y²‡ =Džv5 ë¯?ÐýDÀ4`"ËéçÙÃÙ€ˆÙºq0‘• &¦YN?Ï.ô+ Y LL&²œþœ=\±Û#©&2˜˜Ld9xư'è'¦YLì b"`0‘åÀDÀžÀDÀ4`"ˉ€=‰€iÀD–{‚~"`0‘åÀDÀž &¦Yù¾£ Ø³ ˜˜Èr^ác"ìLL&²œWpwØ’WÐOÌ&²˜ØÄDÀ4`"ˉ€=‰€iÀD–{Ó€‰,&öýDÀ4`"ˉ€=ALL&² ±)3Йûa 8róèOoFMÎËV?#GÕbíÄõÈ—gçÐ…µ[t¯’adó‰€iÀD–£f"6ëœÓ•Ê™zìEizΨE%¥*¾`‘ÌWz™_©_ä-mÁéêO˜˜Ld9j&¢éê„ tŠù¾Ù t’dv´ÏZÜa1?àpÔÅ/’ë#C×Ä[MÎËj®ôÅD|ì³8×#¾Wì´®³|ýDÀ4`"ËQ4‘Fà#y‹•ÆPâ4Üò\Þ’l­ 7(^çeKFDz|a•›o®……—£6U KÊ'Ô¶AR§o·æœˆ‰€‰ÀD–Ó1Ó.#‰.nZ™ÄA/1f"Ñ´Űe”hWd¤! ÜÁLd9½7‘p#ÎsƒŽ†Ø™0‘ß‘ßsê™H#&’Ì÷ÁDòñ 0è+ÀD–Ó›~"‡ëœÈ/î™$@BLX´G,øb¢Ê’¾B›ÄDè'æYŽÞØ9×àm'ç&§¥ˆ°ÈBž%·ì`¢@"ÅMæÈCcçh‡ŽwwçØæ¶ £¸A&²ƒ¿'Rç *½;—A‚æV—Úœ ¯€‰€iÀD–ƒg,{Ó€‰,GÑD÷©cÉçôCÐOL&²ÄDÀž &¦YLì LL&²˜Ø˜˜Ld90°'è'¦YLì b"`0‘åÀDÀžÀDÀ4`"ˉ€=‰€iÀD–{‚~"`0‘åØ'{¸üyªÈ+¡Kﳇ÷òép10 ˜Èrì“=œ>­Ž}8L¤ÏÙà ¾e-00 ˜Èrl’=œ¯ÇûÕq&Ò 7ÙÃÅõÀD ¿YŽM²‡sïs ¹`"z“=\¶Šï9¾ú‰€iÀD–c‡ìᮀ¨Hšð&ÒÀ‡ìሉP&²;dzˆgg‰€‰,Çòìá´‡ˆ#Ô éâ[öpQ 6Å~"`0‘åX›=\¹fº£¢Bf-˜¨¿˜˜Ld9xư'00 ˜Èrün"ä~&¦Yb"`OÐOL&²˜ØÄDÀ4`"ˉ€=‰€iÀD–{Ó€‰,‡þņýDÀ`"€ðŧ—…Y€$&rÊ´€ä&rŠ##˜˜ h"'#˜˜€~"`-0ýDÀZ`"ú‰€µÀDôk‰è'ÖÐO¬& ŸX L@?°˜€~"`-0ýDÀZ`"ú‰€µÀDôk‰è'ÖÐO¬& ŸX L@?°˜€~"`-0ýDÀZþ?‹‰Wž endstream endobj 18 0 obj 20440 endobj 16 0 obj <> stream xœí|×¹·õå:ñÍMuìøÆ7N¿É“Ø(îש7Í)6ÅQlcwcŠƒM7˜Ž0M4D‘@  hBHHTU´ ’hBú}gæìΞiggËìŒVÿ'oðîìÌ9gvvçÑ;3;ï üæ'?üîòó z#ñà¹? ‰F "ñíïÜÕ÷™ÁO÷ûãçõ»59Ï@ D"¯±£»»›Ø‡>]œYƒ@ DB²ÏÂô³@„,ˆ€è‘·igYüiHô²]µóR«áS5þÀñIýFmÞZÉ®¾ßk:eån2[ßc6U§±sSÈÓ~cR¥÷ è“ä*6jkÚòS‹¶î¸tpoÇé½×Û*ºÜh®¬bq›¿0ã½Ä’ÒÆö«7º:¯_olræä!»n…)È>ùäåäiéÖ¬…çÛ¯ßhnh˜>s󰸣'Ï_¾~ýziIé‹vLÙZ)-X–²/¹èü¥k7ÚÛZ’7ï4ç(éNÑì'[Ë_ŽÝ­1ÿô­Ú+òô¨„=m×»ô—Ç$|¼¥Rzü[Ó +²†-+#³uu^ôÎÌÍ£³äéÕöÆa1iä} -SÍÜZÉCþî=[–ÆíÚµkáÂ…EEE7nÌÏÏ'Ž9ÂÊH±8@„GLO<òÔ„ý7ºº»ºnœ8Y³ÿD]µãê•ÖªþÑ»†2»åÁ‹O vï–¯¶uv^¿zMÜA^íhºØÙuµÝµ‡¯Ú›5縴`Wg×Ù²še-Âã®îM ·¼JÑìÈãJ.‘§×.)>w¦]x©¹´`Àä}36WLß\þî¸Ä9.•õÎ1YgþI™š+ÒwTÒ†²óuâp;¯µUœs’x}R ô&ø½¦#>ܸPÌųÅÏ|”{ù†Å¬œ³ùÍÕ§hËT@3¶T°A[(Þ»wÏšÕ™™™Û¶mKNN>xðàþýûW®\¹uëÖ\¿~­½½´F|§X@ Â#¦¬ß5Mø›üÊ¥³ƒÆ$ôµ±ÿ¨„çgå|´î„|·\,í–/·Vðâ²stGZ³ïñ÷×Ï;-üä¿ý‰þ1{¥[ê÷½åÙQ kƒ´/0~Ûì ûžšxêiÆGÂuOŒÏrwš¸ñ½ed„ïŽg46•3¿ÞŠ  ‚ë;jsÔÄä6ËÞ¿×tú¦âg£S+¯ 3×¶ -œ9˜óä”CRËT@m,eƒhåÈîÝE{öì^O2 „]»>œ¼ukü²¥[V®Í:cÍ'¾õÔk›7o®©9«X@ Â#&'<“îìì÷ê7Ž‹y3$¿þYÑàѬ) ¹wËU;3ž™±ë™É…t·¼èÃÄWgn¹ë‚°Çn;Ýol¦´`Ùö´¨O ÆÎI‘á$O¯_½ÐwÔV¶Ù¨Y)/,©×<ñ‘7ËÐåÅd„#ÇmôhÌ&ÎütV„(Lб‡Õo‚ßkJ–¿4óù%§è W;ꇌIž°ÁÓ2Ф §Ø ªÞµëÀŠgòžÚº}ÿ¿füá£E?xgÊ·¢_¿5vè-Ÿ¼sóüw?÷ÒÊáS>DfV,Ž@ aã–íþ»C·ß3òÀc£ ¢'WÎéì¼N¯LP,Ž@ á׎]}øÕñŒI0fcßQIÄ$bûÔ¤'ÙÝò<ùnyŽ|·Xÿöܽ±ë…Ê4v›îüŸfŽ×^‘!ã?¬½L·6ì;jÓ I»FÍÌ“S}ädmö¡Üç§ìïšNXsðé‰{/v — ­ç<]ÔoÜ.éí¥š¸¾„ÂÓ ª.T9ž¨;r²!÷Ø™ÃÇkŽ”ÔçW:ÄéNò/™G ÅâŸýôä£]7:«Ï4æž=zºUüû¼3züÆge»åcòÝr–þn9}{Á«mWZÛêZ;éœ[myyiá y³¯}¸qÙ©v1[¹ZXRs ¤žžLyntBÌ:a„oǰÚÁ™_oEÞ"iËÎ ôÐÜéGqY)Ñâ„3¢’γo¿kúüØÛÄÓ[õ…ŒÛÑ$^7¾gݶÁóòéÛK4a] @ »:ïÅi{÷œh¨»xåú ²ÿm\Ÿ:l~¾l·åµùô¥Aâï1Îu=È<·Òõ£Î‘ñÅäéû3·ˆ¿ÁL§KIûó''$÷•ÐoÌæç–zT4»æø›³2Ÿ‰!H~@›òâ̽㘾³Qh|ìþüœ¿úès6÷û@p¿ÑÛÉ”‘âÍyúÇì»$«ß bòR°,yТãkúþìmÂQGmµZxiô¼4ñw©IïŠs’ ·¦@ !ˆ(ö2ƒOZ>NŒ^’õúgÅ+èñºÆ&¾³ª(ˆíSŬ.B DB& 9y–‡ïÏM~5á|WWW{K˦CfnûT@ÑñEMD‰‡°ž“gùH¼Æ{Ÿ& ÇâÆ  ƒÞ8ÐØUÇePYYˆ@ D(ã­×_Õ+i„@ „yAÔÝÝíh>O¢XÁ˜i‹CN§ÓêÕ¬€n+ ^ˆOÏ Mmmõê€ V@ׄL@¤#²­­^]pÁ è*°‚ ÈêÕ¬€®+±€¬^]pÁ ¨CE{{Vldä½ ‘‘±». Ƀ¬öv:}¬^Ü8š±m²Þi{{ÙÊÁ‘, hðZíû0Bµ€V¥­,7Ï9,ñǬùæ}•ƒˆ¢_¯Ã°jœ5¬€.©hkÛ5^ø¶ŽßÕÖ¦~ÕÈ ñ»#?ÐÖVº|YdÐòÒ6÷Ó@Çop´šè (2òí‰iGØÇAö€=oI›âý Ê:š‡b!ûćP«Š––ã„oë¸--š3´´œ\6(RüZ¶ˆW4;’¦ 4HÕiæE׫>õ¨×—æø¥PÈTY Â]s’‡ÒHèÀȃeˉS-;©;6ãòúøè'Äîžxgµ†­¨€4Ç@O×NXÁã„vÆí`W–]ömÑü$ÈÞ±½¦\/ o¼Ï›R½5½~ 5?½F6 è°º¨âÂ…Ìá“yá‚æDÅ â“AŸe~6Hœ¦nPÍŽhƒdÏ L=!¶©êToA>´Ya¨'”Ýé_=¡÷<⋞֤„I'¼¼^´zÊ£äáð^ÅDº{4z;;¿¦€Œ¼ùêwص.™1ÒZ+–R<%+íÚpâ"dYÎÛâßFԼפ‘U„V@T8®o¨ûOÓ˜L§“Nä>D--v:Õmj¢ÓQñÒ(wCÞ;5Ú…:HêKƒÞø9ºÇéƒO#ôzH²‰¯™‘¦€ôÞ|#ãç¾ ìKž7Äɼ™ü¦„5õå3Ãõ^9œdÐ?H¿aäPÑÜœN¿•éÍÍšÕÙ»?:R?6ØÓ~Q\ÝïÅé_œ+’¨èT=ŸFÈÍ€d6 Š€Œ¼ù~¼ó¾.¢\œy“É$_6¢—a(6¨$€°RÓÔ”-|+£S›š4'Ê.¨œÙ >v¤ýØ×NU]hŒß=qà’BÝNÕ ú4Bþ!¸¹âiG£·K@šc C$½!ºÆŸ-ì±£Sµ×…¼o‚ö;©·ˆæÛB‡áÓÖ48 -®½j»+ F ÛÇ ßбÛ4'*f8¶x Ù \|LÝÍŽd*iL¥Ô64>…Çâc zkô%Ì.ÌO ͺŸªÇÏô¥»ÖtAv œ·H·‹¶¿óx¤t]ÁÄá®Çäø†ø, í÷Äó.*ßR÷øÅ×èÛ5v»8]s6Ù'Ax".BßR¯o‹k¢{sÝšL;^?ZcP® 4°jPQ_¿}Œð ³½¾^s¢zòÜ}ÄC¶ÚŽü0¾Ø~þ¢âô1Ûu;•æ1Þ£´ˆhŸEùÌRêñ“Þħtõ²­n›úmadgÐ|YøžÎy[höñ)sÝ×$ˆ9Ñÿ2 #›€­{üžÕ÷¼Ä¼óê÷Äó†ŒÙ.oJù¶È»¶‡‘¨nSýT½AµÆ ±j€À ¨XAˆï„àëðjkSF {éÑ)µµf¬¾…„ñªÐ#`tNŽZ¨g œudCÔÒ|7AzzÝQjj¶Ò½ôÖššÐ¿9^áŒÜë²6_5ÂV@g„8²zuÀ+ 3À B, «W\°: ¬ IJzuÀ+ '°‚'îF ìV9@˜Ã (Xùš›Xs!ŸL«¿ Ìadõç½—Bdõ_"(ÁŸFÀlXu‰,6òÙF/°'䓲oÁ^º¸„f ¡é%ÙGÈzál2V@7DÈꛪ<Ú>z‘€€€=1˜…ò»vƒKø¾ì…îºÍCPzál2V@"tõͻыÓý5⨠/Båw­“Kø¾ì%œÄÙd¬€®‹„ÓFì½@@ÀžØP@×¹ôˆï»Á^ÂI@œMÆ èšH8mÄÑ ì‰ tKø¾ì%œÄÙd¬€®Š„ÓFì½h Èá(¦ÅòÄ»4GÅ;)0 G^>ýḚ́ ù9ÝÍäpT-ЙA|)‹6“Ygæ`}ƺʥG|ß öNâl2V@WD‚ñö:œŽ&á_-z„KKw=ûlÂwæ<ôоÿ8û…Î=ô^(jQûHÞŸÆdõ3hÕÎ ý?Æ)ÍÌ6¿¤”yoõDãM@ÂKŽÊ’®ÅBŒ t…‹Í÷*>õNâl2V@—EôÞÞÌS¦MöÓ¦øYÜØÔ-#2’ß>´Ågƒ¢ƒqÏÃE' ŠO+,Ê/,Ì+(<|4ïþ¶nÛwDÃ>õ’––VTTT\|B¤ÄÃI½sç®øÆ7Ž vfÉ’Úuëj/.xþùe·ÞzbÝ:ã½ 4ø×üê·¿ùͦ­ÛS¶¥¥¤¤ºb{ZÊöôm©éÛS3H¤¦eh HÃt¢;'òøHºù3™$[6#¦OŸáÃå‹x}߀qŽº¤ù¹I• ûdIÙ5K‘Ô„üìæJïÒ—”%˜'  œÙ[ë& ¬˜3âØ±g.çÆz¹Ì2N(ÄÙd¬€:DôÞ^"Ý Ýtu]ëºZÐyaÖeç¬ç¢s§F´5os:ÙvŒ èÒ¥võuã©Y{×%m*­¨â¯8¿—]»vÕÕ××Ö åÇ›ÄÌÍÍÍá›æÀù7ßœû·¿žùdVÙèÊ£GŸ|ï½Ó3gæüå/‹?ÿùšÂBƒ½üæ×¿Þ”˜4mê´šó­­í×ZÄh£­ƒÄõK—¯·_¾Þq¥Só±ˆúà›^:ãJ˜äV"Ï8‹€ÀÑô;‘úˆU3”åå[ïåƒJÌ£ÙÑØÐ|ª°ñÓ·N¿÷Èé·ï;7륲ªòzƒ½tp€ŒJq6+ v¾€ªªªÎœ9S]]Mþ¥÷Ó®ñÔR©i¬=ÔV?¹£yV{뙎ö¶Öæmç?¾è(bÛ1¸- F(++Ë”³lͺÖÖÖËâ‰;8‹{PCcc=ù?‘[=äϲ /nùë_“¾ñµÃ#†uݸQ¾vaÞ ¬Š_LÚüÕ¯nøóŸ öò«G!ñâ êê—:®·¹ã£žËW;¯\ÓÓí 6yÑ3]1dƤñX«1o’ͳ3t®ºiÃìÊ™¯”ücοúmõûÊ1¬(ÜgT@í\l" ³ uçêüÜ”ÆT^^¾O ²Ûôºl(ÄÙd¬€.‰ðtúôi"éfÚgE Õ¸,T}¾n×¥†qíŽUí—Ú:ÚÛ[›w\>Ûâ8̶ã}#6ב((>QW×ÐÒÒR/góöô«W¯–•WlÏÚÃYq¯"Y”ø8]ò¹Hþ]ò•¯¤~)"ç‘/]‰Mÿá—Rþ_ÄÒ[n1ØË#ÿû¿>ðÀ Ï=_Ýpáêõɹ¥zÁ¹ NºAÌ„4ÎÑÜG}\ êCpNb/9&?ò–³>kAž6“ª¯k˜;:ç­ûO¼7`Ûû~÷šIQe§ Œ è¯cxuýŒ2¦½³dŸ‘õÒ§²-÷~cóXÒˬ”ìsŸ¸~öÂW騢¢b÷îÝZéäU÷+ï«€rÝ졦óºmŸ³ÉXµ‰ðDr"—ƒÎž‘2 ÚZ5õ‡[æv4ƶ_Hëh«j>7¹ãüÜç ¶¯±>õ‘³+"®úÉqêêêÐâe+W&$îÉ=8}ÎüÒŠJ½÷* âb{ZZHbEÖgéÍ7ïùzÄ‘?F¤?QŸŸ!8÷@úö¿EýmÄŽ¯E,û÷7ØËÃ=ôÜ¡Ï}îLÓEÅQÄ7º:oܸÞyãÚõΫú…›ÝH×* ²þE¾d@½âùsoå‚M›Ö¦nœ}êêÞýßê•15‡wÕ46x¿?m¿  ß{|À?Ëïüðâ>tÜ?tÕô¸m¥FÖΧ5-«ªþÉ¿w|ãÃöïŒ.ÿØ-ñ)‡N©=ïpx?ɥ腣¾} :È'egg“³DÈÎs§ÈŽ;ÈDþ‚´}Î&cÔ*ÂÑ=Ü&ªç,=üVK¨««'Q¶©!ïbÃêöƉל3ï}­Åq䂳–mÇëF<›ð [¿“ôZkÛ¥ŽŽŽz¤·ýGòf/^ºtÁØ#^;¼qÄÉ}+xƒ^¥ç’OK+y/.]"ë³æ+_Ùùåˆ]E”¬Š&Ë6Tš0*o@Äž;"V~éK{yèÁ‡ e@‚5Ä”GxœÃd@Š«ã$¹‘”]vka†ú2láTŽJ(FäZÖ6â‚+ †ÚÆY+ö/ÝxpSÎÙä첑o[þ^ó¹j'{1Tc£ë¬¬f/­\øcøîßú8qç¸úïOk½{ö…¿O>ñÖûë3÷H¾Œ¯i9ÐÀ¿þ«úÒËô‹¿œÝØ/z_ìÒœƒO9Wï4r­…Ó€€¼Ú‡u^#Æ´wï^I=¬}(d:gYÚ>g“±já ˆx‡d%DBâã¶O€pBŸÐØX¾ñ´£1¿ëjѼyãÅ«àdß&¯±bù—έ¿#-eñµk× 3µ ãÜwà`̈ßï›öå¬Éÿ‘9ï1E#^$|¨}È» ÈçR{{;y¸î¾û¶Þ±óï}H¢Rµ)ºrzDSN4ÉZr_¿+ù?"ÖÝ¿Á^¸ÿþ¨gU^ÛÜÜÒápG³íç/¶7‘¸p©ÁyIûw@ì±5·ŒØé.ÝP=EFEE¹&¦7§ë¦C|"ˆjllX»"õ7k;~¹¡ûÞÝ÷lꎘ{máFÙ§‘ì=Èn3>>>!!ìô4{iáÂÃwí÷zÞsÌéïXö«™§-iü`Ή¸›—Ÿk Êšýøé?(¼ý­ãߎ®øñäòßέ² vÌ켄ô’SåuMŽÈñT^^¾gϯö‘Dæ×lÇ €H_T=8~ü8yL¤CDöÌû÷ï§{c2EoqÚ>g“±º(ÂPÒæDQ7ubDÕS'æ%¢|„?^ÈŸ/Mä/2ó”i“ôÞ^½^çë‹|¾tùæ<ÐÙÙI4¡Î€×®]+*.~ÿ•‹ã¾Y¸èÖ­Sÿϧ^Èû)œñaíÓÑqùòå+W®ä$&nû·Ûøï{žì³@DÑ%ïF”Œ¿gË­É_øÂÎÕ« örÿ}÷=ûô3ŸyöäÙóçηøw –€›êOOO‰ÏybsÇSÝ/íîþñ†î¿,/©ªu¥9dïA¾Ôdo¹råʸ¸8ÒTbb¢f/¹xÐþ6lç$ÚtiÑâc[—f”¾¦åU§ÿû±ß=—rÛsÛîxóàïÿÁ„Їfé¿ìÂÈ%gf¬Èß™]zª¤¢QsYE/zjØ·o1 q4ÙóAä­#" ¨›è«4KÒ;ScD@¤)ë9qâÄÉ“'‰wÈSò/yL¦PÍ‘®ÓÓÓ9½p6+  "|ë…ã`uÄ>µõõžÌGÊ…ûÍQ@“õÞ^½^šëJóf>gþOO,êh®ÈÞ²03>6cUlÚê)iëç¤%Æ¥mYKÞ®®®ìœýã‡ÿøÐ§·œ}KÂø}êEè_…}®^½JVmÓ{ïíøüçSþ-bË×"¶þ0bÛ"Ò¿±ësŸKø×¿Hºg°—û~ù˧Ÿx’Dqucù9‡"ÊÎ9JkšIœ:Û¬) {µP¯æA>™÷½¼šFÔ„½Ùøßµ¦¦Æuq;Ž.X7óÌï¯<¹«û¹Ý7¾³®ë”žuíŠKŠ‹6mÚ´bÅŠÏD–.]º|ùrÍ^.pá è¿~õ§~soë¿òö§nJº]¡¡-ÍkÚ™’[ÃyC¼ ¨òô÷ÿôÈc‹¾Öwé7¬þæÐmÿ9wÆg©SÆúÕœ3ƒââ+×n)9t ¤šL/©;˜sÓMÍçÎiöÂÙ}>|877—<ÎÎÎ&sïäää!Ö8xð yõСCDCdºf;FDD&p#]PQÈc2 âê ¾€8›L]’›/ ²¦ÙN½˜÷4Ô{Ô#¸G°Ïyñ²ft6/®pÙÝÇç»lé/N¯ÿuíöÇ›ö jÌŠjØ5°ndzç2ž>ÒÿxüÿíŸÿðÞ…ÿþïg¾ô•ÝS¿¶{ÊW—ÿëgÆ{qŠj@Ò#oÔ>ôÞDׯ_'«³iÞ¼õ¿øEÚ¿¸“d=_þrÂÝwOzóMõÅœ^~ùDÿ$ޕםj$Q$þK£°²DAEñŠzd@ÀžOfêѺíyu©yuÄAz³q¾d‡š˜»à½£ñêç¾YñPÜ•;×uß¾°¡Ï¦îŸ&vÿnññ‰i§&¥•g+!ö!ÞY¶luPRR’f/ü{Ѓ¿~ô“oH’~Ç+ûÿëÍ£wJJ¹´jS݆å»Oèµ`@@UßùÍ}ÎúZÿ·Õ\(ýsôÈ1+¿ÿ½›¿·ð òà³CÙd➈ˆêûÒë…/ #GŽéá/"¢b2…ØgÿþýTCdNz¹šf;FD¤'zè¡6Ò¦$ ⦴´4ƒâÀ È!ÂP]]MwD Õ766H‰Í}èoj.8~èØŠ‡v?Ý´7ŠÄyÙŠÄ™'ùûRÆ)5öË ^ÿžñ^èÛ*^ƒAìÓ!·¡³³“ä†UUUd6ò&“·š<&ø´.‘÷ôéß·Ÿ‘€€€=!ŸÌñëOƬ=¹<«Ú?ÕÖ4ÅO*Ùú‰sÚàÓË£Ë&lcÍñ×6}eNíc™Ýß_ßuû²ö»7uÏX›µnÝ:â ¸¸¸øøxòçýéÓ§5{qpá è?ï}èO1±r‹k‹ÛÚ¾œä&~¬)…è·ïùËä¯ö[|г ·«Øwïß&Þùl{iÆräiVDDÉ#:®jœ{â ˆd4d‡ORò.QA;é}ÙY‘ ˆŠüKfD@¤AöÌ;=òF)((HwãU@œMÆ ¨YÄ«€)DC MM盚ĬGL{ēЄƒ~üÐÁEw×f>^'Å}õ£ßþ…¬~çæÄQ_œ1äVã½8Eµ‰W¡wttÐ#o¬}R½$ò™§««‹,âÓºÜs÷Ý}ÿñ˜‘€€€= ü\C­sêÓuËÆ”mˆË?]YÓzÑA÷o¬?~ó–AY/íí|$¥{æÆýD@k×®%ö!ûOÍ‹‡iûÍ\¼èžûþ} {Ní U5Ÿ}º=ß5¥”WTÝùà=ŸúÕ¾ ‘ö&~“è¦ü\˕Β[‘  ""Šoþ²Þ•^3 zXlÏž=D:œ ˆæ&HÊ}G¥GÞ²³³‹‹‹Éc²¬Aq6+ _@›6'Ñ”GøW°I{¤{ x~Us±å¢Ê™óã3)ðÄ6EüQG—?°èå›âGÞ<õ™/ïÅ) H:ø¦iùÏv|ÐÝ?ÿÅcû»‘€€€= ü"„”EçÇô-ÜèìYOFÓÐÔü¯­'¿±ªkØÞ®!{ºÿ”ܽhS6±Ù‰Õ×k_MÛ?ÏÅ‹€~~ß_?üº^4÷컣җ“<Å¿5¥”WT~÷Á»ûÍøPÿUß$öymöŽ›éø,u I¯ˆ}o»moAýŒÍ‡5ñš‘ô‡H‡ž"Ž ™Qñ‚tˆüKR¡ ˆ´Cv€Ç'âKMM%ÓéczŽÂé…³ÉX‰W°5ñD>®s½ƒªÇyA¼²ÌuzßížñÊÄ=‘Dâ!ýx¸xõ}3nÉk7MyöËÆ{qоÉÓ…}È2ÌC/”ËÈÔ¸ÔÓËÏïúÙ_ÿüäÓrRòìIàš1r×§¯×8.Èœr¦þüðuÅw­®ÇŽÜÜÝ'¡{f‚°SÕSÛK¾€¾uwäã“5Îû ¦dM)D@wÞ×Ó¿Þ?î¶gÿsXæÆn£ö¡ʽ)¢îö[èS"&N/ü«àöˆP5H®‘®‚£§‡SttQ7± 1Nª›4šé-NÛçl2V@ôÐ_@ ®KÝÜg|ܯKêOï·µù# *Ys×ɵ?ãç:ñ 6fDýÛœþß´Á·*ÒvïêèÎþHéMvˆ}Ècò:YS!Ùg“±/§n0* f‡û°=èFïf#þ°F¼¸Ùå&Œ8ºèŽ+¾sbÅwõã{®X)Ä‚—nž20bÆóÿÕ ¿7©W‰þ¹¬—þ—***ª«Ï\ºÔ¶+;»²Rûž?œ^~ü£ÿþݯ~Mƒüµð«‡~è¾ûó«_KÞ!ZÍ—’’{bR9òmZ·nÝêU«W¬X¶rår²kläÝX˜í¥  ßüÉÏÿ6æ–þŸÜöÌšÛ‡îøÖSIÿýçè‘ziˆkZZ^~ÇÝßëÿá×úúõG§|çéI ]5‚#ö!Qs¡”¨ü\ ÿä ùœî<(]ß>RûœMÆ ˆþÆÓ«€è±;z¹åb‹x7›Ñ=—„ÿµ_j÷C@eyÉ©ão.Zòu1nQFo°±öŸÿþñ³ÓŸÿî©S§ ö⤫Q°’Òò”ÌsäHÞµkWwíÝ£÷'¿—þà<ô0íÛ·?tÿ÷Eþòá¤ÞINNÞ´iÓ† Ö®] {b’€rrrâããW¬Z±råʬ¬,õ]w8½hþ,]‚?†[ü£¿¿Kÿéßè;ëÛ¿yóï.ÐÞÿ{¿—ì9¿|ìžG>:zé’þ‘ÜjÀØmgEûH©MôÒ.¯ ý½àœòcqÎ ½p6+ z[ƒNùÐ[Ù\”Žºµ’|A<¹/ü´Ó577'Œ¿wÿŒÏçÎüüY$¾à‰O¾pÙ_8$FòØ›&?1õ…)n‹çU@Šßþ°é±ÒÙ³gOž:µs÷î²rÞÍ9½üèû?¸÷ž>Þ{ âš{ûô¹ëþ§ÏÝw“Ç kÖ¬!ß¾Ï>ûŒ,‹’ÜÀž˜$ ,_¾œ8ˆØ‡ÞGÝK¯c¸÷ïßýèÿ#ìTs ü^È>ÿ\Pj¬é¼ë;{¤OŸìˆ›èõo4øç›¼ ÈiÅݰýƒ¶ÏÙd¬€jEøò _DÆ“²~þò×?—‘>ÁXÄF|28bü+¿[¿~½Á^œ\u‹UËÊ+2wïÑ;òf¤—óæÿà»ß»û®Ÿýòî{ˆkÖ®Y»bÅŠeË–ÑÜ-Z´hÞ¼y³gÏž>}:Jr{b†€ÈŸvä«JTRRB¾ïÆCÛ¯åb\‚þá«j¢}ö}éK4úó{³IüSNFD)++ëõ€8›Œ½ÍµÞÛ›‘™f¤$7;wùöãÍšššÜÜÜesÆÎxû·ÓÞøÕ´7™úÚƒS^}àãWîýèå>½Ôçã—î™üÒ=¿|÷”—1åÅŸM}ù®©/ýtÊËw­[6»Ðp­R§X’ûÔ©Sd3•Ë©9qòTúŽ]êŸÂù´.„ysç~çÛßþö·î3fLlllLLLtt4yN,@TB†}øðáC‡Ñ›§çˆP¿ÓŸúÈ GŽ!ó“¥ý)ü AéŪ’ÜÒœB´·kŠE­ˈwÛ&3ð–¥wä–{J=$þcź +žáò8K0éœÐök¸ôˆï»Á^ÂI@œMÆ ˆ–اØ#z±ª$·¾Ü6’¦3õ ¼öè­qåce½ E‘#¦¬bN`66ÐY.=âûn°—pg“±¢U¶Ãi#öˆ^¬*Émܾ);$ÎÌìñ:é gN`66Ð.=âûn°—pg“±ª §Ø#z±ª$w3 eÍVŒæ>Þ¨ì]ýn°súý†ƒØP@Õ\zÄ÷Ý`/á$ Î&ctZ$œ6bèŪ’Ü/<ä²sHsHNé´Žp¾Hà ÍÑÞÕªç¦bCæÒ#¾ï{ 'q6+ *‘ÅæC7"z¡XU’›Ÿ˜» ÎÓ¯§;Õ2Üæµ§>Ä»ÏÛœÀ<È'3d߃½Tq ÍBÓKžù8EA„ Î&cT)âKù˜ z‘è‰wBÀei½úÉ Í·À •\B3†õ6p6™Z@ Ä@@ÀžO¦Õ_æ¨KrƒÓÂòiDøVo´ + j `|:ìºÅCèVïBz0¬€ÆL[Œ}@@À>àÓè+ä³|Òs²<,?€€@°ùÄ‹P¡I‰jeY ¯³¥«µm˜ôÎp|za‡€€|åEœ €ÐÈ }º! ÂÒ€€| „ˆÚÒBØ' _€Álï¼ð T@/ˆðMd¹e DoÈW  @0U@T:Ýò$ˆï Ë-c­J[1˜¹)4aðœ#–ïÄmçqé®8O¼³Ú£Bød#*¦h (ˆ¿;6r¯õž¡É€XøPZ~òpùŽWÜÑž“Î?k(¾êœ8ÅŸƒûÎHpùöÄ´#ìã ï‚|jœÚGòŽøÔÏšºRƒA¿ì”' Ë-‚Ñ%ÝOú±ƒ]2w5M“Hðg–‹Ã7Mh.ÂNL[5š¸löÑ­=Z@RÂLqÏ0çmºKy4zûªÕSŒT$)‡»“—á+âåy§}ÍQ)&²(Ò7š»±ƒìÓgP_U¿ˆÐ‡´¤)¤w¯Zö.²ô¾¸RœúìÆ‹Â+ªM±]Xå (¼ (Þm¿DÔí> GsàØ$-cÁãâ‡d1tÊêiÏJ)’¨•Huº$øX”EF>á™aŽØ‘:íòuÅ â]@T%¢2âE‰Z™ã™(íðÉS:³ðøñ)sé‚万ŸýÕÁ*ÑSDRñZNQ·ÏU˜ÂkzéŒ[‚2+±c†}¬ ö8bD@zÕ:D9hþàÖg¿×pQx¯µwMÚIò€Á«€¤ß¦)„&>Ýn‘Ç/BP(-?/ú A‚†žX°:_ãHš÷ ˆ,;"Y{AO›dç*>4$›Í§7Ž‘s@’˜ý¶ø@”‹^º$Lž1ÓUË굯›'ÒXJ7cÒï²,ü^½BN%A_kïêwÁ¯áõ<üOǦèñ·næ:~¤/ Ï©œHæ›é Ƚ Ê\RVéɉdé’µòˆ@¾ßöˆÉ‹t|{¬×¾Öð܇é´,ïÎ}ôÙ#ü8çSõvãõÙ 6«WÃꡘzŽêF- #WÁi HãĘE>>-ÏH¤˜âɪ_ç¬qÍöe¹ÊÑFÜS\§‘¾éK ²,îõë2lƒç€¼–Œ÷»(¼–ø,«“ ‚Á˰}=ûCE3ïý½4Èé1 =y‡âp™+÷…¯sãŸb§ÐËÈ"ÃGD*.³€âå{ûxÕYƒŠW]çêKºnÁ=§ú,zfv<êF\Ž|âQ÷uR—ë¦CdŸâUp^KÆûZ^¯2»^ÑùЂ¢™ͤW3I‰ô|Ù0üÒ‹wp'„}wBð(LMÔÒaC3 ²Ü2¢7ä+P ˜$ 6ýÑ‹QoÌ€€º! „ò( ȧݯû@@aŸ€€| “$9ˆu:4k4XnKdRËø ä+P ˜! næÆ;$^ÐB¯Bå–±J@V°¼ xO «7ZÆ$kÙÞìûqÐÒêÖƒ±›€ÎT6ìH>¿pûÊùÛÔ±)>ëx^¹ß#±'°Jl% Œ-4½£2§ßã±°Jì& ¨ƒhLŸ¸HÒ«fA@¡ÄVêÁóÒ ¯t#ÅË/¾ºeý2߃±!šbï:ÂÞû×rè­·Ô·C1¯/ùý-mWÐÙ‘—OÏD›Ÿ£?‡£jy;êùÙ)tf~îE²h³1™uFV‡# r„L‰v­[3)¦{mP¹¬Ö}Úõn!¨y§)ï«``¨IØM@" Íô‡¨Ç›}r'i”óž´_˜>)×ïÐíK«ÍÜIl×F:å({ZŸWÜøQ|êç,Bï$ÆÊ×n*ÍÌ6¿¤TG,ŠéZOs“*½·£x‰ï5éUGeIŒ7[Q4¤Y9—ÝçkT9Ôºi­‘WÉ«(²š“ÕgTiKó^»^{ô:TÈTÌP¼ïwÒ¦Z0c55ÎÆå;iÌ:E‚ˆüK•´-q¯N ;„J@‚}îÈWI93Å=ƒ{í)1É-s,¿»£nûš£RL”Ý‚Rž¾)ë¶dÄôé3|¸ª_Õ;@†—!O· ³Ur8ê’æ«­‘¥Èb’ˆ¤&äg7Wú# 1ÓYçqØŽ« ö1_U^ó/ Ÿ2 ;ߪöÞœºš/¹ ò®ÖhÄå­ŽØ›«k*Ìë`¼¾ ™©Š÷«–WQõÐw–€jÖ>]ÒtÕDñ1ù»çpåS‘‘C×Ö°M ‡®]«°¼vR¤ì]jYxê]@òjÅ®;Ñgx&z*E’Ù¥;“v±lïm°Ì±º}w)™×ô\ ®Å¬pGÂëÂ‹ŠœËVÒØ««Ò“,z싟)f–ž[_¥–ˆ?P^>iÊÈJ* ½ª¸Æt e:ƒU•ßi‚£wÎÈHŒ P1U@/úUÎ[:§) V:ÔAZm¨äÖˆÇÌÄnú‚øÄý_Ykî)R»¢O¶Ñ˳1󉌜RÜ‘ÞSc…)UH™cdJ«EqË}'G@¼<ާWúSìñ¦Z—=D@²ÇRÎÂÆ0Ù<®<ˆã$¦Hòã„|ëtà‹sd̸Ñd JÇÇ´N W@œ¡B@&b¹½€”Igbgö!R>Ö”òÜ;'ŠÔXD­Ž€xƒñ–iì·™?-s¬éEûêç0–ÅœÞj1;½ È},Ñ3®jƒû¥0ˆúœÓ›€8bºb/9P\ɳ>‹ÇóŠï!¸”9üm#c¢5ôvéÆS*ö=ë¤yR)ñ‡ ™D;§“ò(ðO@êCj4oÑ\Ds~v’‘ŽŒÈ!O”†9õó¿2 ö5ñz–ŠS‹ÙÉ›þÈ[³—€œÞ.BðG@•%1bƒÁË€L<¤ÞË 2ç÷}J©|-³ð9 ¯C…€L¶!h‚#]ƒí‡€ÔF!BQÌ©8~§y‚t¬Í@GÞÁÉÝ¡qHJkfßÊ«+«Û—u$]@‹]j•EöZ‹Y³_O/âÙvŠ4$» È©u¶pÂÅ›)´žÒË |;Çv§16ù•ÛFÄù' uõUsÞVœ©áç;ÒlŠ‹Ù¨ÑdÇúÜ~ùT^cW}œÁÕC…€BF.Ã6~ö‡Â9gª€×t‹¾¡O'Iºq”ÓºÁÕsüÊPG^ä”ïíêÂÇÆäÔ©¤¬®h¬>Ë£ž™º~-f½~ªô‡“tW¤SÐ9Hßàý2lö, ïÚfÕülMv½éâÚ…ãÙ¾ÄlÅkÅyuÞÄ_õH ³±³€™H¯‚ó{$öwBöwBð5  @°›€è4ÁI 3A@À>@@P(±•€ˆYVÎߦ>GCú™'œûA@¡$2½Ó5Õ ç*8:[Æ ` ?´ø‹­D³VCê ¯"À |:] ºÝß_à¶P·è VCšNö醀€À§ÑWÈ;F÷œ?Ân2µßÊÒÚUŸìŸ=6sñԴ݇[[ۂظßà+ìƒâ6A#añ¤'Ó{t©­}_æ‰é#wNz5“FþáÁj< `OØÓëtçÀŸíÚµvø$ëíÄ€ é%:{¦öPvÙä7Ò$û˜71-(ì =¸DC@À zƒ€MKž:r[ôKˆtF½1ƒ„  ×Ò§¼  2 `6½A@„Øá[?|%Ýc1æÄ¤¥ñÑÃQ½oÝ¢Å"‹­ÛW»ÍØÇñT÷fJ=Î+É}ÝAÊ€ÔNåKÌ+ÂDÎUpÒ¥j³8å>2òØ·½ð†úœÓ€€ørQ7ÂiÖæ’ÆuW¶âÖjç?fþ2äQò& Ùß™‘25D¸®Àë~€Ù @@Þ°¿€üXjBô´Éo%——VÈ9Zr¼bû¦]%'N]»vÍÛrÁ=§7'“¤ë—ä–àØÄ‡ H~¢ þE¾d@Ê—è$~³ž#t²Cpî)Vž’^ʪ•äSd´R¼ÓP¤¯ï×ð÷l&… È;á' ‰1Ó‰}ï®Z8aOqAÙŽÔìãÅ­­mÜ܇ɾdªöEîÝšë$s„Ÿ=1Ä9ä²Î™Œú2li爀4¯gÐðšÉ!HýSët§V»×‚òR¥øàœR#æõ^¶¹—Òv$#Ìôqì'“ÞH>´»jAìîÅfÏ•ArŸŽŽcK‡J@Ýìç4Wûw@î‹ $û(¦K»;ý«àÖ­['›ŸŠ€œbAyeqyZíF ÊkUxg‡ªÿ õLU%‹TþDBy!«±ý€t5Ýеk…‹è5u6á$ %sW6eÉ}MÜ»xRöŒ÷Ò*ÊO···›7¼ ô;!༠¸0›p±OAnÍÒ÷‘˜þnZéÉòúºzóÆ,Œ h±½Ù p/8`6á$ I¯f-›š»)!õh^Akk«y "¸°'È€€Ù„“€>|%}êÈÔUq:ÚÙÙiÞ¨‚ ìIÏÓ=`„Í#l4鵌 ¯n_2wµ©ã1Ø“* ‚Å_i`˜°QϤW3MŒI@@ÀžôÐs@ 6ê¹@@ÀžôÜ ô Ë€€=€€Ù@@–{³ 'Ñ‚§ÆÃ¼aûì γ 'Éjžz › H³$waŠ«‹ÀKrûÔN(A$añ>"| 3U–¹îÈÞzôÊåË-œŠ9u$ÜB0¤E Í+ÉÍ™ A)É­ÙŽ€€$B·;èe„Ÿ€ˆz.¶^¨®<^¾õ£ò…Q óÿvqÅ3Õkÿu®òÔE÷‰# ⟗Í5X’›®¨µ­Y²A,ܬ]ÒN¼Áéºuò.75Õ’ «"§“ÞuݾÓb½¶öwðJrkÔrªît-µ¦®uëí%êºF€€$B¶7èm„Ÿ€j›jß:8òÕ#o¶­ ‹—†ž{÷]gSS7O@bµÄ\¦d¢ ×ÍrÅÜ*+O1=Åß]÷Ñu‚—ß[¶”¯%¹];w- §Ž€43&Ú¬«æ3ó’fY‡j÷ÍéÙz旪ΨÇÓK0£$73Q]n[ÜšîzÛî̆ÖzIÖ‹IV ç€Ør´‚©ñ~mˆñ½ð‰ðИ¢è–¼û­{¾õ~ꈺµ[WÈXÖcX@ÚS:d—š*åAÂkûRù‡þ î߀ ”äÖiG]nÛo)s"ƒPN7³ …M…×DÐ §’„…ÜD!Uðv×§ãÏãí&<ÉpUðf÷‹™®ö”§–+3Åç0F ˆPQQñ—¿üå·¿ýíåË—sªT#?ó£W[×-&͉J㨠¤±”/%¹uwø’6Ü'X³xþº–α³9uÎI½{Î)žöz9ƒQ’[·­‹ü8WíºDDø;§ äß9 Ž€’ÜBaåb¼B·Ç¾5îd%èv‹Ÿ»$à°I‚† rþüyÅœ*Õ(¯<`'¸¯%]„ 1Q3剔åSª¥Œ—äæe7îùÅüDcºk)÷ÓÔãÚ×'°¥½µöŠKã  p&è ¢ÑxÌÄ0º kxÌ!8ÅñÀvL@ŸðáܹsÍÍÍê9ýü!*“y™h¸)Ü Ø“ Ÿ2?ò´ÏtjT@:xÅtöÀá' #ᣀÔ×èMô§)Ø“€¯‚ó\ãÚŸsÎ. ©}Ú,Å›­”—ˆKf,ÂEæf ›[ñ`9Áú"â]°€dí{=ï#]Ìà¾æýá.Bá$  ì î„ añ>"|€,ö’°x¾@@–{IX¼_ Ë€€=ñã>až€f¼Œí¶ÃØ_3 «¿I ça’€ˆ_›øQ `O|¾b†€–ÎÚLü"=%{ì1é_v:Ô »³1I@ôÁc"ËåЉt¨[·$·ìgœ{ ‡énÃáQ祗C6"çU_Ïà+æ ¨ìdubbÒcZéäÕnm1·`c«c«nÕ¦ç†lW:U7(ñï|j\ñãq©Î‹©#æAÿÐ{0SÄn ˆ-Ê㩎íÃŽ_¿‚ç^Ô~c½€8Oø¥Rœª¡kWEQµ¯9*ÅDE#ê¾ØÅÙÊ,AÿHãHùµæ«0SÁù' YYÒIꥪûKË aïWÎ;tÍYF@ª\3³Ê«iwkv§7›ÿxSÄÄÉ­xÂ/•âõ6\zí³¸oÕ(s‡º~Ùaaqºº}JØc¼êW! `6¦f@Ýâi ªÅQ8ž€\šÿ“Ë[Ï8‡s@ÀT ËAIny³žô‡iŠ.o/)® O f@Ò²ReC³€,%¹e]ˆgØ)Òxl% W Ã\>-\\=¿ä”pù;ñÉË×¼—a@€,%¹™µ–¥?lˤ¯¢ætû¨7³€,§÷Ü ÖèYà0Èr `O³€,§÷ô, `6å@@Àž@@Àl Ë€€=Á9 `6å@@ÀžøšÑyãY쉲úËzå@@Àžø' “ Èr `O|=_€,ö0Èr $waŠ«†²9¯B@Àl Ëé…%¹¹Å€  ÐAÿÐ{fYNO/ÉÍNWÔÚÖ\‹tñž¢š%íÄœFEqo ª%ÁHéÞÝôn¦ÒmK½ÖþîåHùµæ«8̲œ°)É-30ã·éöTáæ–HRÍ/nP(`ñª_E̲œ0+ÉíWV½ªs:cfŠSHƒ‘T->°Qå ;k€,'ÌJrûÝ©_‹“îdM‰XÍÎ~Å»m‹×CpÒc˜d9aV’;¨Ò³S:dé)•Ã?ôÔ¯N8àõ"œ¦YNX”äÖíTÒ†û䑯9™s@ìlzc–z÷¬…â)d Ž}œÈ€€ù@@–%¹yÙ{~1?јÎ^h!ºÆ‡1+®…ã_}ù Ì²Ü Ø˜ d9°'~œr¢(—€€,öÄ Èäp²Ø˜ d9°'0Èr `Oü;€q Ë€€=Aؘ̲ d9°'0Èr `Op˜ d9(É-o?ÔwÎQßÕ§;ù8*Kb&ä&UJËV-˜ŸãýV®d¶,²éI 30¿% fYJrû=ž  ÝÈTR¼Oo~if.Ù‚1™uîe]2j¢¼üaóKJ! Ð+€,%¹Ù‘„¸$·ƒ.à©(äÛ½LŽº¤ùÄ2×Pïd7WÒ‡ŸÝˆ‹g-ȳ£}œ0ÈrP’Ûi]Inw ;?o¦-ä/ë«Èƒœõ.ø”Ù9ýqâ0ÈrP’Ûª’Ü®ôGUeɸ€<Þq›È¸€lžþ8‘ó€,%¹­*É-ýñ¬¯·úzò7Ás!t´MS@š—Ø<ýqB@À| ËAInKJr³é“—…é ¨43Wºö@zj0²úã„€€ù@@–ƒ’ÜN+JrÓl‰"­¸1ƒx®¾vÒë±ç—œ.?`rõ”˰q˜ d9(É-]hqo¨Jr+ÒY›ÌEtf_os³€,wBöfYì ̲؜fYì 2 `6å@@Àž@@Àl Ë€€=€€Ù@@–{‚s@Àl Ë€€=Aؘ̲ d9°'0ÈrzZInåÀôï˜Ý{obÓS ›ó*γ€,§•äöcþ@–fCÿ„Ð{0ÈrzPIn§–J¤ù¥É–né©YƒØ)Õ|fYNÏ*É­ssi:Ñ]ÊÀpQ`-ì¡Tõ«0ÈrzVIn½’©2ñy«Ñl‚Wá0ÈrzVInŽJ•ì ûƒCpÀZ ËéY%¹¹®é™#£Uá€åà"`-åô ’ÜN}‰g~ÜéêOY„X‹×˰¥Ç0ÈrzXInÕï€úô)]' •-l­Ù °98Ì²Ü Ød@Àl Ë€€=€€Ù@@–{³€,ö瀀Ù@@–{‚ ˜ d9°'0Èr `O `6å@@Àžà0Èr `O³€,öfYJr»çWÞ·3µ˜ d9(ÉíšÇ]ÎÕs[9ÈRp˜ d9(ÉínÄ]†%íì2 `6å $·SL˜r¨(d `6å $·+ýQU;‚€¬fYJrKg<ýrŬ?àƒs@Àl Ëéå%¹Ùô‡d%È€€Ù@@–ÓËKrKçŒ$¤@@Ö³€,§7—äV¤?ìx-@@¡fYî„ì γ€,ö0Èr `O `6å@@Àž@@Àl Ë€€=Á9 `6å@@Àž fYùš#ö iG3€€,çE1Àn@@Àl Ëy‡à€-y瀀É@@–{‚ ˜ d9°'0Èr `O `6å@@Àžà0Èr `O³€,‡# ¶öf¡·Ð~X€޼|ú“™aòsô·ˆÃQµ€?ƒ¼õüì:3¿G÷"YF†§ ̲=±ÅÝœ®Ò9¨Œc/J3s‡Í/)ÕÑ‹bºÖÓܤJïí(^â{Í«õø@@Àl ËÑ­ 'z“Ð,¢ÍzSÔŒ£-x–þ y‡£.i¾ÚYŠ,&‰HjB~vs¥?3y×ˆí¸º`{U•à0Èr4ÄIs/‰O¢â2ÄtI^ÛZ] [Q ‚æî]•ždÅdÖ©gÖ9ÂæšYz:l}•4§úÞmúwü͉ ˜d9ˆyìQ±lŸÆ+Ï Ę€d¥œ…a²y\yÇ;8ÂÈrt´ÍsNÌ}؉PÐQ‚sz'RL÷C@êK `s Ë äÃu”M¦÷D’!2þEþ¨²$FlÐ&ÎS€,ÇÛUp®«¯‚’4TBæ"ž"3yT—ƒ€ÌD}6™¢N@ \GOÖøvŽíNcl¸ ØÈr þHãz6‡$¦Hå!¸ŒúÓ¡(÷réÍéð ˜ d9¸°'0Èr4t¯>–|N@/瀀Ù@@–ƒ Ød@Àl Ë€€=€€Ù@@–{³€,ö瀀Ù@@–{‚ ˜ d9°'0Èr `O `6å@@Àžà0ÈrìS’[}kStðJà%¹¼c›y fYŽ}JrÓ;ȱ·à†€øø]’ÛàKÖ³€,Ç&%¹ÅvÜ•UÝ…í ”ä–·^ d96)É-¼.Ì(Õ‚€¼HInÕ"þÎ6œfYŽJr»ÒŸbe!ˆƒ%¹‘ÀYŽJrKg> stream xœÍZM‹3¹¾Ï¯ð9à‰¾ZÝ ÆàöØÜ6ÈaÈ)Ù „l {Ù¿©ªT*}u{– ~=mI]*=õÔ—Ô»>ýúöŸ“:Uøêµ Ÿó?ùñô—ßþ ?Æ¿üãmû|›ü»=ÍÆ¿Ï§Ï¿Ÿ~ÿÔ'­OŸ?}]ôM-׳¾h?ñ»rzÆÿé· þz„OuQëõ¯Ÿ|{|¾ýÐ}‡2ø“Þ ô5L6°Äýê.*¬íâ×ø9Áç ãSmããðÝÅy^ëëÙÐÌøXÀJ7aAÄ èLó¶ðh¹ÐIºrøÍàÃ0x‘Ë&µf]n×µ÷ìi†û;»Ýéz¿=Qó ¿£bÏ®P&ìU ¯™X!8{Êë ñbÕûÚ&Nýüç_~Yß}0àÁ ``\Ø|Pˬ Ð,nFe8†=p{ï‚Ä…´ú¦GòÎêÝu¦|]lÔ £2ñ A ľe¥£úÀ'9„l‚ÔÈ{JK€UÎy¥¡á–¿žWÒžüW%hÃÚ÷¼`õ¥®ÑP. ™Ö ;à»eèáI¡ê#ÌÒq–¾¸t'z`+ÙKÒ8;–Öu¤Jç̃ÃSóÈôq¿–jœyhÝN¼ó¦&É»ÕÐR“iM`¤Ó#D;õ^ÙŸ¾ º™ýv¬¶dÐD%˜! hå‚SêÈaFRhíº’í¢úžX‰,_@a°…ü±Oj¸œñÍLM‹ 6QÓ¶§wvH˜‘Œóé\7ðmÒs”ÜÁMãh4—9¿\À51úÂ~N`ßJªO›'å[‘RXø´Q\Úé‘z Àî@áÀÌÜP¬ øf4ÖLÁͱh‘‚íÅ,É '@àó¤,W8ÕŠÑЇ‡õ—Hέ™mÃ׫\‰ˆJ²&d–r3·Èdú.£˜MXLr¦Ðv­0ŠóBÜD(A¤'“œG5ÈC ÕGÒ¾­M« &ZÙšOHGŠ| bº”½çU[T¡‹r¯…þÓ¼T,p1nß(Ú)!Pz¶,.ÒÀä³ÕPRý¾4~0Ê닳ßQ•10£ïâ\…³ÕF(‰øD°5ܤq•ëû`‹bâÞÍM?Ìáà‰0ƒ ö¶m?ˆ¦†²X5we g©`&û:Iµªð·— ¬¾ÏÏáMÝÃ’ä€/ᚇ!‡ŸÞMÀ!œœñ]hÆhÚYâõuøwÍrKwW·ŒfLÑ[wO4¼¨ëCRa‰ðÅ1þÈ®ÕØ©#ÓGy²¶R$â=Jƒ) HÂÒÉ÷‹jÉÀ.”Ì™b骠#²}'<dz#C31÷lw±=04ÙÑAYçcÚ !]®¥ŠªR\.ÎŽjd&Úô¥x%Ѱa½m'SlÒY”* Aš›âÌ®¦ ›H}%ÛÕ÷a61ƒºgL] †ä¶Ì½ð¥ˆ^Fì\™‡¹šæÙnêÀx&Û:xU«(ð6™G?w¡7çò"1}dcLI¶%B)™FC,Õ‚ªŠõA± v0´<¾/¹×]ÊpvòLØsi %ÊK$çœß¡è8F3‹RýjN‹îb~AH%DG8rs$áG8r:|VÖ‘ñþ¤ê£¬Ô«Ü$¨à@ù3ΛjÝ/XvÀ6Pa.=D-Z£Hþ&=šÃ3ó™†8,«N.U.µ—6QlªÜÑhC šµ´ºÆaBœ ƒ½1תÃC”*$ÛÚ^ÉA'ÝiUm×þT¦^´þºSuÁ–öø³Ï µWHÿÎSž 6Ðÿˆ›ó½.×û¤tàe!¤[›¤Éž >@»ÅˆÏD60\ŒÂsY:'># S©Z1+,Çy‘ݪæ!*BmXï⨰1H¡K•¹9JúœT\vÒAßÔŒB0:“íʇ?˜Dñ€‘>:Ž2›aih”-gyørؽ¾;Ÿ”D{dÁ#­8ärxœÍyŒŽô#ìZ¶†ãÖ'>â¿ýüÿôkƒ?ýá š¯ëéç0Hã×þ¼‹S‰ß€˜Ã³¥8ï;à9èI†WÜU3>%{èkP"ÿÉgžPéM/{¡iÞ>M߯gê;< 3Ǫ=â$·P˜^B:%ѰãýN·ÓmÙ™jÆ"ÑÅ’‘l(• v[æYŠšQ?´OÑc´Gw$ Fé]Yѯ-0ù0Šzë–ûFžI«#­Í䊹i³kôS°+—“,ŸÚ÷nãéÅìC=R›wæöªO°½ÖùóQU¹(ä^v”½ìò=æ—ºµ7¤ŠäÆ‹«3—Øk·q'JÃðйÎLQQ˜Z¤  ì€ÔzßÏüÅql¢+ËÕ%óì‹Y]J/­H/Ñq 9&°ÿ[H(À?£ý¾{0~MYÏ«LÓNÙ1ÙnSœÐ+\0R®3$…–U»ùãfš«Tý‡Ú)_¯œo¿¦ñêM€ºüÃó(Š®6¾»e÷Mrª'|íIÙS±SÇHÎ{Vâ O3Ȫ¤^ 7½‚oÑ[;奣ÎèyÍ,S@æâR|%Tkœ°èd–{˜öÐLùâkz,‘Lʆk+¢|Oª¹¹|jßD.×À^Šúöt£×)¥Q¶ô©’&!¢Öãk°Ò¬Údj¡À8ñÝ2ë^–‘£pô¤Û»NìŸMN”ådWL)ªâ¨IqÙéY`+]øM *Šsn¡þoè)±µä䘯Ï"eoà!îd—Ûej-2]ö ¶Ü4k›Ó{›Ûka S¤v»Ú¬í ŠÌ¦W"h Cv‚ È-ŠÆed„Ý´´W)ë[̃¾œ„¡+ïÿÔ‘”¬š$ÚÚ ¡¼hžŠtéê]bEjPKè”7ž]‰Âs:‹—ŽûUЩ€”0&’¦rÇòêÃ_DÕV”Ëÿ/ÌÑ®0áƒO9vÍvX/ ­š'V$ÃCuï¶éä> stream xœí|{|TÕõïÞçœy$™ÉL^“Ì$“9“ÉL “dòò€™¼ I”@B2 ‘$’@ÄX(j¡>jÕ¶`}W«Cðð…?½þ¬–+?¡Ší¯+U[¥bbm5™ûÝ{N¨´þzïýã~®3Y{¯½÷Úk­½öZkïsØì':²ˆÄ×ÞÛÖï›=/Ÿò+Bhlû–!Y{ééŸ?Aˆæ£Îþ®ÞÌ;!$ãšä®ž­÷]ý.!Ʊ¦lð·uœÙ±8š <æl@Çã?W£]†vú†Þ¡‹:T©ÐnE;³'ÐÞV¹ô‹z´o`íÞ¶‹úŸÑ =жÜ×Ö럟W…öqBfé &® BVaãýþþ%ño£}š¸JôQ|ÙGTÍÚ‚(©ÔmDd”Nm0ÆÄÆ‘ÿ¯>Òû€›H2êTq=I%$4¦Àï'.çã ã„o‚ø°áO'9L3Ðfß’Ÿ£lì ;è5ÔÌ{o&¢¼˜\EnÝ d¼ÈC›ÈÃd6úß"nr¹ ß¿¡K^ÂøáÐ'¤‚%œ~únCûEz™`lD ‡%'9JCÒ‡4V¼—l¡Ûè‰ëÀÿ6p˜ž -&+ÉÕäÇÚ¬Ð#ÄE|¤—\J~@~B 4-Ôz‹¨‰ ²«C÷†^&mÝGFé/Äzé²ÐÌl }ä&òÍ‘Z¥_Ž¿;qe(z¾r¹FQ»T™¡Õ$…Ì#^²†¼^=•¥Ù㡉߅ö¿›”ƒÓ6Hýù7r„|B«èQÉ¥"4d ½ú ј{+ñ5Ò4º>$$Н‰'*’Dj0{ ñ“. ä~|†–ÓBZD«„*¡E¸V¸UxA¼YºLº;³<§–h&õÑZÚ@¢¯Ó×a­­âe5‘±ÞJRM–’¬wvêe®õ[dœRhÐIô2z'ÝKÓw„ÅFi‘ôa¨3taË…½ì$ƒÌ‡Fìï#d?9€Ùï@¢ºP/Ö÷=a©°E,ëÅ ÄKÅÝâ½â1iµôÈDáÄŸCW‡î =z#ôÛÐ)ð‹!i$›ÔÂÒ¤‰\‚ûù¸>OÞ$¡ZAûè÷è-ôgôôú4}ƒNzá!qŽx³ø„D%Ÿt«ôÒDÌÄÝ£‡ªCÍ¡/±¾õäJr-¼ínr<î1p£5t)]Aϧ­àx ½ŽÞO_  ’°Fx\t‰›Ä‹ÅKÄ[Å3’SºXúµjËDËÄÍB¹¡Ah|mèOÐÕ@Ìd.YM×’nxF?ÙB.‚Î—ÂæßƒæWóïXÁ/ óIòìr‚|DÎЪ§ÑÔJsñG`UMtˆÞ@o§÷ÐßÓ÷é_ MÜÂa¹Ð…ý¼KxQ8*¼#6Š‹O‹GÅ£’IZ&­‚Þ/=¢"ªõ|í¯¾xëËGÇ4~Ç„01{¢%¤ %‡RB5¡GC/„Þ ý‘+“,øårÄÔ¥d7¼f;õ*<ðöúä}ø þCÓ©‹.£kè°ô5°õéÝø>Ïy”Žâû4¾‡èÿ G`ý7é úú…ó .Á×Â%ÂÂ3 „%&‹سLôæ—‰;Äû°†×ÅOÄ¿JÑRœä’J%¿t“ôô¼ô–ô…ªFµL5¬ŽQß Þ¥dŽÃ3³­ Á_ Íˆ,þ¸ð’ˆ8üá{ý+y™V?Ðqxùuø^A>@­*é{ð¤ŸÑ¹ô&z— ~Ð"{É]âÃô áJr¢?‡|ˆ’ h½VHA6ü°Ÿ¼ Ï8ŒxùD¨~;D‹‡i?ùœþ…ÞH>ÆZZ…ÒE_'óèµ´Šô³‰ƒ ÑÃð0|T>‰ª.@¾íb¹WºUø“p+ý˜Ô{¸Î7Ð6²—Ά¿¦G…1iŽô ¼t!¢Ôê•‚šn…oþXÈýÂKðÝ}ˆ³åˆŠÛ½{'åÐz"•t¡ô¯4‚ÄÐëàík™×AŸ‡ÈCt\œ€¬…¡ƒ>ráç·’A½$ü<ô}ò,]8~ŒF’“wÈRñS)'Æiɪª ëÉñÐ ò 2–Q|›,"¿¥×#o,"¿¡&rg¨'To<j†žW‘ d•ª\•ŠlÜ&ôç5{Õo«ËÔyjªºXÕ¡Z©ªUUªæªòT³Uv•YePEJK¿“ŽHÏJ÷HßCìæH ’N|ùsŸx»x½—‰^1>i%áoŸ…? ÿ)  ÛhZþ6ôrèöP}h~hn(nbbâÌÄ LÜ9qëÄ÷'¶OôO´Ž¿øåï¾<úå¾/寧Gþzž¾2ñ΀͡óCKCŸ!ÞâC7‡æO¼IwaN2ŽøúòêÍØ—{`Û&d8Ÿ°ˆÉ9CNÁBo`üy>6LZÉyêFR‡ýv!2¯T¼Ñ\{?Z"ö*'€_Š=YCdé œ´/’‡Cw‰«Àc–û…רy„ø<îæ ÐÊFMŽ$¬b#Û'G¦¦·:à¾ñç–„ Ö5õc0šâª7”©é ûÃãµ ŽÚç7ÉÕ;[ÛÖ6žÕ Ï›S°`\e“˜,(˜,òQxâš)bÖhÒ%'~ÔÜ“;F5Z¸"ï¡ò ±uQ¸lŽ´Û¿å¤ÑÐi6‹WÓÓ5ƒ%î³Û¥gµÏRO·S„Â’K¨m<çÎȳU_îêœÁ'¼"¨w£9ç1E¯rËÁèV'ˆaªd5®j:–lo–›ä`c&2KYÒiÏé²`=Â=å„¿²RÅyx©çLœÁDg5–}YV<ß“tâ4#‹t2ñ^jA£3Ãq“sÄÃ4ˆá²c§JV¯iÀ0–ýs ü'Ñ4;“ˆ±Lû%Qtáù!HÃÆ¯ojMnkf‘Ç~TÎUMA57¯¥QÅ^Ñ\„‘ÿ„Ù6"nƒunü J›¯G¦=O¯2[’S¬©6ÙžV®îî~ŒËþâÐ!Ðô` 3IÓ§õÁ0™OŸº˜©3}²×œºX§×ÆÆÈÙžÂ_y »³0&ÚÂ4ÙŸ›_ÈëT¯Ÿˆ7ÒÙÑQ£Ôê³GÛ%ÍlµÅI´²6W[¯mÕökÕ»µTkqÃ|1±£Âj_L±Ëö\{½½ÕÞoWÛÍ™£”î»”[¬…™ ÎºÜøÞ@ Læõ.;u*&¶Øív‡KŠŠÕy¹dqãV_¬Á(ˆF!Ú¡2ˆ1bŒ(bÈXæ&î+® -›ÜH#¾x£ÏlðưÂè‹×CîfPЄ9s ò™]ÔŽ4—#M­‰±çó–=ÍUT8§  ÆF„²+n-ïXë›ïv5ÚÝm§éK¼Þ%ã·²òâ%¬oØÞ²`I~aÖü¥==¯çd3 a%<ˆT„Ƥ ±»V’NïôEŽÆŽÆ?™üïÉ’~4t·8%µ°Cè‰ÿwõ›êãñÇÍï«?ˆÿÀü_ÂõÅ~ÿ¹íoÃuZˆíŽïNºÐr¡­Óq‹°Ç¶Ûñ°íÇßÍQVJŒŠKO¥Z¶=™%…¬öéÌi…ÛµG´ÂiìÂ(5=›ê³¥²!ƒU.4¦R_êöTaW*M¥I¾"â‹ux‰Ï$¥ÈF¨Ñ׈‚oút†B¸§ÝgHõ¢ˆ÷Úí&d7F¥Ž ­#d8 á´ß±ÐËëZ«!ß‘^x"ŠFY\éÃt¾ø8Ÿ£È×'Äùô†Â8³sqß{w‹{ÙøIÄK ¶fÙ§§ˆ÷”wû^ìq·l@ß)^aGOõ™í^¶†ýñ³Â5”æµ#–×#³âù»›ÿ 'pÃ#à8‰Åy¹´ó!tÌ“èµe¡pŒ†Ž æ±©…º[¨Ýd*ÈŸ Ç€'hÔ’#´ñMÈpq?‘º¿|R¾ûúg–§Îž—:kâ•]ŸM¼E½G.û‚Eù]Ϻ7ü(—®­_Ÿ_’5+ÅYIM¯§†¦‚%½K;¶4­^ÝDhèmä*>@*Ä…>Ó˜Þ§~ÈúPÖSÖ©Oe¶¾š¥Õ°eY<Ø|öGalÀÈÙfÛ–³Ë¶+gmOΘm,'2O;6oÌ+xuDtá]¬jò±!'û`˜4œm*Ê}ìÉ¢¬TéI]l8ô_JjvfÕTXì‘™vi8RS¡.*,t:"õÑ$ŽÇM¾ü"[X²«ÈäK-)|Í4fúØ2I­¦~ÓvÓn“k¥§}1©²-׆<‰@·ùb£¼6Ì"#Ö.Æ ÝUäâ \c®]!—ÔêêwmwívI.6ÇÅæ¸Ài„dç`êH™±”MKrí)¥†Ò½¥c¥'JO—ª^ãˆÈ³ÎÏö–úæ{ K}å…¥Û+k€-ª¶´X}#Š Z KÍ•^Åá•ÏÀ¦7NÇýRZz@˜ •ȃÍ<~æv·°h`>ïò™ô^¦ü~“•×>=ºXVsù£w/CÄ´”}Æ&˜Øn®DÌ01B#4±šØ Ã⛹œLìŒbÉÓëýô”ñTLq1˵ÕUPmОêଶªf>…Zòr+·úä$«VŸâÔ9“#R­ÄšªÕ˜£­ÔªµXÅ$½ÅJ £æ)Ù”¬„Ÿ—ÙRoò¦mG‘ÇŠ4Ÿ!vA+˜ V”#|õˆ ?zP#*ÞÞŸÌÛ#¨Ã´›hK8Ÿ›•¬Î厘BĬÉ}f{ºÎð1áŠfæ¯(ÊnÊ,ê-¨Yë[°`É iŽ4«³ˆ£GúÂ<²ý%Þåå XÚ/Ésfee¹ç×o¢¨$;»XØáI5WO´‡9ÎìÊ0>†Óà<œ—à40òo¾µO £ê7"ߊþMì¯ÞHúµù7ÉÇSÞþ«ð7µþ%óKÉB쩸“ ï™?L–~“ôFÊ…÷ÕïE~ýÇXMGÒ…)÷ªî¸/êçú šn¡SíÜ}al‡Io×i,v)Ê8*¬òEb$29{ÇS„n¢°êIê~­¨=€+’ï),÷žbÙv„F%§"¼±¬H`–GmF=‚Z9Haùx–(Ó™ a{ɤ)Ì`6NˆG*#]råÄø7„È5׆®¿ŠW®iûéõŸ¾nçÓôñ-¿»òŠ··^rêÚë?¼¬½¡dsëý÷ã¼¹ö9(ýO’E1kí£tÄgsšˆÝåtZÕgTö˜¨~35›ã³gϦýº:AǼ=¢¤HgÉq¦Ên.kj‰—ãsãëã[ãûãƒñ‡âOÄŸŽ4¢“ulWÅ›³RJ‹ËM-ee<úp ù³»çâÀƒÛN' ãeÆ“Ü÷±q‚$º¤Xj%BœÊJX\ÀÇcâ¿rz¸Š&/¬@‚rÉ “3{~ruuV©œ71ÖþÜsü&±„;Ê% ž›ðW$Ø+-eîYVOݽÑØà6v€_,hèÑñÛU®‰N¢'é>½&›j³)‰²$sô(ÍÛ÷s¶¬“Æ÷ˆ§lÛª\mÂ:H?ýâÆLê\ì]0~û¼œœâð}… Žû‡U1dùÈg‹ jµI¡ÙÝS`ÿŸ˜”d>(¼9•ßgÍÎtge{rsóž™yeMøQdD„væõ3|ûL³Ûå™lȼ¹sˆBûXêâyD¥ú ôŒ•]3gÍŠ‰1Fš“Ø&µu´?âшb„¥„ØYgtnîöóÄDRJ¡™3+wާföB6G”·;‘Ä@µŽ¹dÁì…Dí!ŽôYEž…žšy·åý„èçŽÈXU”¨‹ðèr£âuÖ$›Ù’uÔõ¹¯GýÖý^ñ;%óˆr"ÍMO rt‘DrkÒí&9WÈ‘ñ”Ë Dä‰ý9ù…‘JÍ"t¤¤(2\ñÑ9ÅáQÔlt}kóš/© £æ³kØìƒáê„/ª²(Â¥ R]¢È`µ/Â’QXR&ê"#G…_unN|nnŽhŸ«±Uo«þ¸Z4T×U ¶jZís8 «}sŠªß˜?¿LèKÎ.L¼Èˆ'“v‘ؽvÁþ†%2Ãå#ìš[¾ÜÍRiL¿q»q·1h‘ߨyšDe¨YYN‘‰á+xBŽ}YœMžëHŸá bU~_ÙðB[¦øU}÷@Ûõo7ßæ5¤Åæ"xœùÑž«Î»q¹³¨è¾¿64´\þ«š+ËâìÑ™óŒò\ç<áÇ6[ËÔFCJŠó¦}K6ÚRõÑÞ%ÕK¼³ógÍÎ2%ͲXb-Koì[Ü‘œ¡üʤœö7›ÊÒýbù6™”>¡Í&šlvÚœò™¢³M†lSBÁÉd±J±æ”­£á—Øï2%?+û†D,ž–S¿¼…?Tö°r.ülòÁrâòp²Î™‡üð ru†ÊƒœýèbÁÖñŒ”hé´ [Ä‹Ó"XFC§GLæÂÑp:žþ•†™éxúþdoBêâ˜mñ4ÞWSïKsÆû<ù…ñ£´÷q¢ŠÐêŸjq« ÂzC¨°UõŒ½FÑø´°ö¹™¾…s•-ž-ü${¨?Å®Å<Ûºq÷¥1_yâæ› t®ðÚkÓÙ¯=™eÊ(άTy¾øé¤ ÄÕ¹ºÙ³=±Ø•7C¿—΃l$“¼ëkѧ¥¸ ÿ¤{ßðaæçª/tŸ¾ÈÔìÐ^«û¡á>ÃqÕqݯ ¨´úTkê"[“­ËÐ5k‡J3ª{\~Y÷Ÿºÿc?¥û»N[¬[¢k¦ktfÜó@Œ&šèõ‚ì˜T°Ü—6»Æ#nŸ_?C¢Ú&DAc5‘*ó'ÖšX=δeìŸêF¢O¹ k‰‰Fû’‰Ú¦ÎUûÔ»Õª~õvT{ÕAõiµZmv¤Ut'QŽªe'Oÿxqë8… Ȧþ&6ÛÔÒÂ.fnÊÂEP#6ÁȬ–Á-˜Ï. éq®©û—¸cÙöš{ÿºjèèm¿¿ð¿ž>qiUN©;)5Ã}'U ö+V_|IÝõ‚¥b.Õ¾xûe?>ñЉ—ž½)ß>'«Ô”þöûÃW÷ ~ŸÝ úàgñ°²“¦ ‘ð¥Òš¢­ò6ǶôK’3j¶Ã^“~MúK‘/Fij#W‘âO_ïÜE>sjbÓŒcºÑy$íˆãHú§VÏRÉo¡ž¿Ž()Úc?¤?¢·GR5GéÉýTé(ýè1µ#$Ž QkRUlVEM!¯ñlÅê‘Æ¢ˆQaÙ”Ôh´:ýA¡‹Øiôýjª¶dÄ ]8>Ñ_Fy!Q¦ózqjŒâZbÓîÒ Z³ë ½…®%“¯£XJv? §köR÷¿? Ë{Š=!QãøübO1žA²fo'Ó›Z°Cn§]¹ç–ÄÂOjůÃWC´éýôy§Ý3÷Ëó…ÌÁ’+{û»£óÒ3ç~}Ù¿}^³ãÂé j׿EyeeYí /­23½lVÙc=Þ¿êÛý„Ò×Bc¢H>&QÄîÓE<'F±EÇÔfÝAª¢9áU,;…Ë+²3^颸rÑ¢• ºJ–//°¼v´ {Ë~Sà¾Rj|jmUÔjÃjÛ°á:é6çýÎÈB™.ŒZMG#G /G¾bx#j,ëdÔÇYŸFgé" fÃ’Ô%6Éž™ÎC$&³F#b’>I©‰Q¥×Dè3X$ÐèýêSz»¾Ä~ývýný^}PZ¯&ú\½O/êÙ¥|*6µ,ÿƒqüdø­ÐIv#Ÿ˜œ2›Æ†_â!$bÓ§Þé…olê8vœ„7BMï[rÍÒ»þòÎów¹ðušòÓ˪³Ë2“²“Íë__V¤–{ýþÞË–/¸QxzAqˆ<¿ÿw?¤ó½GóȳdÏOŠ ÖOÔ^Ôtáv^ÌÞ?«±Ìk&N’G&|ó5’62b–:sVF†»F¿q–ö¢YÙw̺)SÚ¡º*âÑŒGÝ'U'#>S}¡mžÕœ¹Ñ-Öh£}&KatV óJŸ œ$ºHôìš:58lŽ]ÑáðXky5½åiX1‘F—°v¿h)Y;í,´£Ìù7 ë&÷ž».«¸åð4Ó²éT1»<óWªüI¦0;/Ùk’"#œ*Wjœì&) 7ÍÑf¹I®Ú妶X«›&›PdGzÜ$OBA&ßð'û+®`Ѳ‰²Óœû9Oà.ÅßЗQ8ý87¯««ó¿êªcþººê…§Ÿ~útõÃþÎááNÿpÒõ]]×_tñ%îùw¶tý¢£ã‘Ζ;çûv×ÿäÝw²b÷ï–nܸtÙÆãYqå• ¾uë˜?€ýpa? ÄN~ä‹\_£SYk$½ý)X‰£°öq$2‹#‰µ#ˆm­6œ6m5öü†F”§áÚ ¡~«oŽ ›œÑÎXW²Kí´9¢’Ü$NotÓ•ÙMRE»›&FÆãP3 °h¬n" (f‹Œ&Ä ÜWá¬,}‡Ÿ–q'JPž‹$×ûo^úÐíï½yÉCwþÏ–¢Ö–Òæµ…mkJ›…¿½óòÄM½ÔyÏ;ÿN=¿½÷þ˪—þü.e²Â]OŠ‹h<çö)‘Žú,n"O Õv“Húì¾ïóSù$[ŸgÜXÆn#4œ æ shìÄ[– ‹SCãÇå¥%,,÷ï€e}°ì|ò´/*‚ÂtŸÓ¿šî³ =y…ÇÈoÍ‚¦$)"±¤ÛÜ™½Uµ5á¢âMóñÈÇ^B¦ÕØRrS„””yšh_”¾0::¾lȳå yyîšy*›%åûq#g,KJ.$³F…µ#¥¥‰,oˆìzjL(Eoa!{»ü„1¾DÑ(O‹»ÀSàqŸ*ðœ*àïŒqnæ{ZXÁÜÜŸÇݸ’>:uZ&*ÉÝ4Ã}sSY[yÌ »±xýçÿþÉ?_TYšiµee”uïßÛ²<{cÁܲœNͬú¼ÁÁ[–'F'X2ËÖ\óËgß«~±ànïuK2K²æÇ§FF·¬òn–c5bqfV•²–Í._wžYU–U]¾îøê®c>|;NÙXU4nsV¤QË6ë.ëO¬bYÊyæú”Nó³jŽ™Z}%EVö®Ý½ÊkU^†ózV<«·ûÏÏöj-*«Å2Ûâ°[–X|ÖuÖÍ–[¬÷ZŸ°¾aN·æY_±Š±±)i–䟫(%-ª(e 6çÒ*[s­—XÄ(+%åZ8}/d·Åð/ÄÆ'˜göNþ*ˆV£ô>‘ºØœ”bµŽ Ã>Ùo6[,VS’5™ùMŒ1Ù›œJS5I‰‰_²«Pó¬°’˜ˆ–ÞG¢IŠp­OO,’!Zg®K & Ú•„k|‘ZªÑh“Mä)\?Sˆ×OK 1ɦ\“ÏTÏß ï51E°¦`zZ¨'©¸®å÷ÑMá i™ò=ÉN{v9EïxÙû'ã©qwÿ§9n‰=ŽÅ'ñ—”¿’´ÂÔe©Ü侈¹)^+{±jeOM0&«ŸpY`SNlôZ|°¤EEZ•g(NmLàõ>ÃYy͸G°³üŸ°)Û±É)>ìpŠÛ›r[›²ÒS¶CrÊŒG®fÂ&DZ}ÉŽÂdV°ç®Mœô ÊKÏ„³/ÝEö"CÅ›Ëx}ìµæÄ)vé®?J?¬˜xSýåÛÅÙÙ%+'_c®|H¬úòmúù„–ð_.þ㣂·bÆ×ÊÎh#´üî^(Ÿüͽð;*äЬD'õƒã·Ïü¿¯üú1•“.Ü!+Bo“óÈ-¡G·‘ÙxÚy“ôÑ×Èq`лÈæ’OíB¦4KU-SmU{µ*möHÄ•‘K"7E颎éVé®Ðωþ¾")ž,ÂùÍ>žaÈq#ãc¿SÁŸ°=ã˜Íío*8lnÿÇã™>ö/ú¤Ep<ýñi—HVZX®‰Ñ§œÑ_Æq3§¿[Áý“Of>ö®‚ÃÒNqÜÊôqú88Îþ/@¤£@ÁAï˜ÏñtæŽu pläx&³c—‚Ã>ŽÛ8žÍ2ãI—&q-·ÿýÿƒã|]Žœõÿá:NŸnSpô§gsœïKzƒ‚Cnú¤‘l%ýÄO:IiG-#ÇÉèÝÀñe$€gðR¨dRÉÿ'@?/ÛÐßÍ)dôô`~°*Þßö¿ÉÉ3¥™L0ÒC6OÑ ¢o1ê°¼´¦å²Ó°ƒ[:œ/Âùd`ƽ!kŠz`†ß†×7ôO-Å´ëUòàtΜæ7™ßÏÊZÓrš2 œ:,‡®ç|¹ôðzÂzÍônvÂ3oÛ?UýŠLzéW}è­hÚ?óµ}瘅ÿMè÷sÞ“«™>GxÞž¹_±÷4g¶¾? :”³b Ï»Ã3òÀ·ÙýI~á˜d±ºEÙé›ä÷õ} [+¼‚!ž†¾1Ž'w¬í+¶îüoi;må¯KhWîë•ÖL&ï=C8{&9¬Bþg÷ˆlÂîŸóH!™‹;§Œ2­lÜš ¹„=)®Â*L™‹Ñ<Œ*ø\R`³æ"ܰ0îÿ½³î_?'Ç<_±ÞÔyظµßßÙÖî—”7øåe¾ÀºäÊÀ@` m¨;Ð'÷÷´çÈUmCmÿ„ÈÃ˜É žÍ¬gP^܇yyÅŹÙ(òsäòžyew׆¡Ay¥Ð?°ÅßQØ<Ðí—û‡+=“œKfôËl d‹`‰ÉÏ™—/ÏZÖÝ> tÍþ*áy3è”1 Õ7dsöJ×Ï寶oÛÀF9Ðù%ø»º‡üþ¹»On÷ µ±:°¹o¬s¦&bõ®¶þ [†Û:äZÿÐP Ê?ØÝÕ‡émƒr›ÌH‡ºÁPævï È‹+–eÉ“+Ù€_îhî“×o•Ë;ºÛúä…°j›ž 7ø{üíP¡]†)™"²\θw··õÈÝA`÷Pû¹ƒËÏ’{™¢>?[ưŸíƒÜÖ×!ö´­ç,:ùú}íþþ!0[5CÙß»¹§mÈ?SñÀæ¡þÍC\“?Œ54˜%µ­ÔÀ¦Œï¿}CW¦#о¹×ß7Ämš³ah¨¿ÄãÎéUL—Óèõlêíñô±?áé\×6GŸ8‡|ËYÃþôúù”åu‹.®,o\\·\®[(/]\Y½¼¡Z.¯YY]½¬zy£>RÙ¸¡{/oÃá ý~ìóVæß°½|yÝðâ̓~¶C[›ÙÌöÀî%›û:`#ƶêdLÚäžîvÈÛºü~fŒ¹Ó6´mñËõÌ¥˜µÏR†ù7üÈ/û»Ál@îèÀ†÷l•;½Óza†]~N2 ÊéyðÛîõ›‡Àj²­Ÿ± ŒÁI¥à;S¦˜šÜÍœuK[Ïæ¶õ=P{pÐ?4sv޼ª¯Ç?8ÈÏW5)A§i“ûýíÝðί­\†û†ºûºøÜ¶ŽŽnæð“ž²X÷·-ä }U©žîÞî¡°gr:æoƒa×âÉ;þÍë{º709à6woÛVúc«ú·2ÃM[èlAÜ‹;§×Ö·UÞ´Ù?ÈÅðèSV0 è͉76÷t *¶t#!1øúòvÒßüÞ1F7µF¨CmíCÓ{ÌÖ¦hÝùÍl¹ÊSÚ‘1Öû'±Ü3TÂV5”ËÙò¬y…sgËsóæeçææFD¬ªEgn^^a!ʹså¹sŠŠ‹Šõ‘爺Œ¬åQÔãqÈ_±„jvàžëµÍÙTCd3Õã°úã9é§):ɹ_HÉÊèB~éq.*e\¼V|F|Q|å¾sÑžEóÝKÀï^~÷𻗀߽üî%àw/¿{ øÝKÀï^~÷ð»—€ÿO½œzöêþVOhaª¥¨Ãžà=›Ï9ïë”5<› žsÆäøB<Ýõ ¶?ÃÜ?¢ïÜOogÓMÎçR–1þ™¤iÊó8v.úðè"žå¶ðgËsÓžMU¯œè,÷„£zë9g~íLëŸ{=gQI6iT*UJs¤y’Oš/ÕJÅçšù´ÿô)|šbá?´Ex´–Y„æþ\tÓµÊÝvã?Xí C~/:àÍç ÿW|ý_°ý¿$çÛÆÅÔï;’ ÇÙyqòs tH<³¿¤,ÿHy¼x†P²›—”€PØx &>ñÓ‘]>›÷éHqI~y$ÃH)mGÝ€íý+VæÛÊSÑáÔØà€ |?%­€Ý6U‚´O!áS²ð1ë‹¿ŒÌ)áRþ2²¼1¿|9ÃÈ1Îý/ä¨R?¡Ô?Sêk”új¥îSê J}žR7(õ¥ž¯ÔeJ¯ÔyJíTê4¥–•ÚÆëOF vc±ŸÀp­âI?`»È~ù¯å̞݀½€ àà NsÉâiÎáÐú8‡ÎêÙ Ø ŽˆŒDÄÊå>ñ*’ `u=@¬;0ë̺³î`¿ì†Ò¹  ÆÈ›y“ä„x”œè;о£ > ꣠>ŠÍ›ÙÅ„u8 mâ=BËH‡ÍŒ`ÃG°á#Ðý„x ¼Žq^ÇÀëfÃìc˜}Œóšn‰âù#b‡mTü·‘JV=¿ßÞa3”牕`_ Ÿ©Ä‚*ÙoÔ‰0Ò!”'|§£`RŠ ,¹‚¨ÄÑM\˜Y&œ‡cÔ&–¢Íê1‹×ÅJ=OtANš˜ .¹ðÂ\(n3ÐÊ@+ƒ·ÒÑJG+jæ¢LÇÌ Ô¨Ó‘,ÐÆ&Ê#qfî±òˆÝ© 9ùùψva)å$öýÕ5ù­åQb ôLöb2y `0y$/ŸOKYX£ +òËcÄD¡‡ËJÎÀålb<êÙ¨ã”Ú6’Za;@Ë…&ìé`mL¥ƒ}u0û¬ƒyt«ƒGèà:ø‘~¤ƒ1uð#ÝþèØXߨðË‘ô‚=…—ÉÇÂ˾U‚l§{T«„=ÒÇ’°GüXö Âsêç4‚MíU¯SÔ»Ô*›Æ«Y§ hviT^Á+Ö u¢$§Êir†œ%רŒ©F»1͘aÌ2֨וw ±‰ë„ÿ$TøO! %XÖvá·è“…·Pæ¢ôÒŠ²ŸcÛQîæØ^”AŽâÔlÎvÞ6NÍc”G'ö‹´ÆÉ¹Â[B—& Ç!å8¨Q8.<À{›aqÀÊ\€P„7…;8ÍÂdp oX6á×#…[ù¸ðká<Þþ¾¯âû ¾¿Ä÷eÔÀᾪ_B÷_’@$^ô·ú»‡*Xç¬m¯ð+””>@+€Ñ¿Bvžˆ{ð z¯u()Ù&\J.öAÒ6á"ÀVÀÅ€K@Û„!ÀfÀÀ0ïél yO Ððž €nÀ…€è @†ŸË@F2à2€Œd¸Œd #.#È@F€Ë@F2à2–@Ey`+àbÀ%¼°°0Ì{ú›€AÞÓèô¼g p!€ñ/áüKÀ¿üKÀ¿„ó/ÿð/ÿοüKÀ¿üK8ÿð/ÿð/û¤’ò”@@ ”p.Àð@€‡ ð@€<àá<àx¸x À¾ø{ÀßþÎŒóÿ1ðÿ1Î üÇÀ üÇ8ÿ1ðÿ1ðãüÇÀ üÇÀŒóÿ1ðÿ1ΛÐGzðœk›Ðèø|| ÐXÏ{.¬´ÖòžÕ€&@3à|ÞÓh¬œÇ·¾‹\9~.'9È @N€Ë @Nràr€œä¸œä '9.'9È @N€ËY9ë„ÉùÅ‚¥Ðð:ùø:@+  °ž÷\Xh¬å=«M€fÀù¼§ÐXB¹ À$ÕAR$-á’ê ©’ê ©ŽKªƒ¤:Hªƒ¤:.©’ê ©’긤:Hªƒ¤:Hªã’ê ©+ªƒœ:.Ç 9%!ktü€N>¶Ð h¬ç=ÖZkyÏj@ p>ïi4VÎã~×E2¹ dx Ã.ÃÈð@†‡Ëð@†2<áá2<á dx¸ dx Ã.c 2~ÃeŒAÆdŒAÆ—1c1c\ÆdŒAÆdŒqc1c1ÆeŒAÆdŒAÆ“!\Jï.¡DɈ–¿#jîBlìEŒìA¬t fV#2j!•ˆ”2DL.â"ñ‘…8É@¼8iˆ;¢DF´¤ ]àÙ ž~òE¹ZÿÚß÷B×=йº¯††5д—Aó\è— =³ oôvB»4hi‡¶²Ðà3§þðóÛu€À&@ 0J-¾"ÜŒ¾ìÔʹ€ €©b2á’£õ•' ó܈ž>ÃË]¼ü>/‡y¹”—5¼,ñ%Ö럩×ï¬×êõëêõÍõú…õú’zýSt‚\Š÷}ÖËõ·^®¿ærýšËõK.×W\®/¿\_|¹~Îåzp™~DË@ø3^þ—?`%ù‚—Ÿóò/×ò²Œ—2/SiÙˆžDŒÒ3#öùX÷§#ö:T§FìëQ=8b/´=Mï#v‰½gľ½wØW¢ê±¡ê±ç¡ª±W¢*Ìžkû»}T¢>ƒíû€íuû[Ð^l»‹õØöð¡(Û€ÝmóÛ3máîÕ᪒UOØæÛ²e‡{²Â=«â"â"vÒ¾Íî×ìnÕìÎÕìvkvgjv»4»Ó5»mšÝVM¼6VkÔFkuÚH­V«ÖJZAK´ñì/Ûd±ÿϯ6²J-±Râ¸Q`¥þ¯mÕ d i=(ÌÇ5aþ>an0N¬j*hmðP;©]/?kpŒÒÈçUŽ Œ­%µîÁ¤Ú ¹¡6ذâü¦Qa~p{U­ŒOм’7U5]¥x¾‚û€—(øvà5 úæà\wí¨&´28Ï]Œ¨¿ i¥ßoF+(\ .M£4ĺ®NfÂú¡Ôvõɬ]}cs31mñ&ycÄ/¬ú†¢U)gü×ɤi”É®ßêÓÙÑØª5¶Í¡aýµ èÜýˆfwµf76"Ü™d þ°¶¡)²ba R‹]k×4¼ÂüêªÂV570ï¼ÕìOãyÍ{±È):§tˆM¯BGœŒŽ8¿B—&,`t¬ Ó¥qº´³èöÕØ««öÙí“45œ¦ælš½gÓìå4{1LcŸA7Ø9=nÞ×hÒ¾MÆ7Ò|ãýaÅ9‡f~è²’Ží+ÝÂþÚx«£Úh ^¿eCRpûzY>@Jé˜ò‡È]­ëÛ7°ºÍ?JÇþª`©£JÞ·rË×ǃ[ØðJGÕ>²¥º±iߟ¿jd¥oeµ£­ªy]—·ç,q×MŠÛçíúf]Œ™—ɪëù†á6\Çdõ0Y=LV¯ŽËªîfÑWß´OK*š+ׄëýBT$¼¾5ÙÞ\a2ö/à!PjOº<ù Dè$ÊÝÔ9*‚zÊ.Ï.gC|6Íþ”¼2”ty©=ù }@2¢;ÆQA_ûTWýŸÿñÏà·ø|J29>”TÝ]5ó‡µ{È=ˆ÷æ)Fh1T:†Ýü?BëZ3Z³ZkÄÖÔV»08Èÿwô3xªbO=ìùŠ¢‘é?΀‰Ê\ÂaìØ_póA®˜Š`uñr0i¦ƒC›Aˆâ?“œê`ÇLc endstream endobj 27 0 obj 14381 endobj 28 0 obj <> endobj 29 0 obj <> stream xœ]ÑÍnƒ0 à;O‘cw¨H H©£Eâ°íhbºH#D!=ðö‹ãn“v}Ilcœ´nO­Ñ>}u“ìÀ³Aå`žnN»ÀU›DdLiéï«ø–co“4ävËìalÍ0•e’¾…³Ù»…­ŽjºÀC’¾8N›+[}Ô]Xw7k¿`ãOªŠ)B§Þ>÷#¤1kݪp¬ý²)ï‹–ŵ Vä¤`¶½×›+$%ç+›¦JÀ¨g¢ ”Ë ?{BEå|ŸUÁYôn‹ÎÉ'ô†Ü ·¿AqO1ôbrtÇ:G²@?’ tMŽ=œ¢³3úLû;tCÆú‚“9šúÏj4õŸãwõŸoâî‹ãÀûú3“7çÂˆã¥ÆÙâTµß{·“Ŭø|h„—· endstream endobj 30 0 obj <> endobj 31 0 obj <> stream xœÕ¼ix×u zoUWWõZÕûtW£ÆÒX»±\€ÆJ$€+HªI@@$ˆIѦ š¶˜¢HYÉh±Kc;2EÅhjãØŽé„æ8ž‘¬ÌÈz~Ž#k23ŠŠ”hssέjTdçûÞŸù^“Uu÷º÷œsÏz 3G+9Mx’>pdpêÌÞ¶2BÈ%„:ŸQ·FîtAúMB82:uðHiòÏ=„ð7Æ>9ú©G'Í„˜ „´=:628|Íüh !=õcPðèòxÈ¿ùü±#3w÷Fßû,ä?‚1{O<)RBú: þÒ‘Á»§0þJ€ü{W'Œ¼æªû ![Ý„XwOMNÏôùeBöMaýÔÑ‘©`Wùæw”Qø‡?+$˜çxƒ`%“ÙbµÙeÅát¹=^Ÿ? åä†#j4/–_/,*.I”–•WTV%S5µukÖ®[¿¡¡1ÝÔÜÒÚÖ¾±£³kÓæî-=½}[·‘ÿÿýÚàßÿÅ÷ÉÇÿþö’A½ÄX ¼O0‰K\ÔgÓæ3„õE£8—û_J“!È,œîë×ò* }›¤+»¸¬¹–­ñìÀšÓÙš•î±(¢ªm@ÿ|Ì¿pzH-+è³ÿðêÕ>>0t` Ÿƒ#gc­­ܶ÷/¤[!‘Ô×Úv¹²ÚÀ"Æ }ý ±©w¬Yk*â`|[?ë¢w[p·,z¯…жVœ—Úvv U› Žëë¿JRËo^®VCWR¤šìÆy,x[)ñ¶³ýã ‘Ð0Ðç¨ÚŠ.¤wøvÇúGv#–bÊBñ›ðº({#ëkûXëlc\¹X ©ý\ˆßØ‚µn±æõP¡ºX1Ú¼^í§!’moÑ[`ê¶q ôt`][:BÑÝQí÷{¦Òç$,H«ÆR `eNÚ{~çÔ´Ö8¡bµm¤uÕoTÐ'¨öÉóäú‹¡‡„èìÈVñ°s¡ŒƒaXbѯ.^µ?6ÛJ÷öãÚÖ ¿›¶Å6õíégØÖ©dûm9­~ÍJžZàZ€Û¡,NY~#˯d;>VÝ™­VÏJ±MÛÎâÈ1}@¢ží\ @²iØœkœÕúþmökŒ©ŠÚ~vð¥åÓCg/§Óg§ÚÆÖâ8±Îá³±mýëClz[ûï } _ç$›è¦íÍe¥À|š/Çè|ßå4ß¶§ÿªJÎüöþËmÞÔkS‡8§vؤM¼HøOh¬,p±†Ë”3Ẕ‘æK¬Ë±¼Q+7b¹h¡^Z†ª]T¥?ãÞ-P$Á´ÙÀ™D*‰¼‘#/W¼L•7^†ÿU•)GÔQW’>˜\z{û¦3ɽy% ÉL¸Ü"Y›Î7ÍÒ ”#”R~zÖpÁÀ5ÈÆˆ‘“ŒßL'Ii¼y­‘*¯ï˼žÉÜ„ëFU%õÄð¯†+øùàϹç·ß|‚Ü®ß ·÷x‰ÈÄUbZ~ç‰toR¨é¥åž“²Y‚DºT!ݶYKZ2ÑÍx'›-—B³¡q=¡ï‡8Î?K.]Ö.¿kÞ^I·±tŒÆÆÄb²¦óÁb2s—òA"±XUI‰ M¤uŽšJ†9Ì­ºœ‹åÙ9ÑÑ› ®ËmØZåÎØÂÉYÍõ ÜGÊÒfK¬±¿féT©l-qúÉ-õ"Œ›aÿ‰{`,“TZ!ÅÁIŽK6~V¤—ÃKË×Ò«³Ãðó6®“tÁŒ0ŸäÍä[û2ü˜#U˜¯©®M%½·ñ›™LE  ÀÅIû¢99Q¼4X-¿Gá<¤Œ®½J –vÅDº ^ZþQÚ@³VBΚ†”Éï$݉—–ßIË.Ò÷›­dsd'Ýyš+Nö|óŠC˧M«¨ä†ôÀZö4À_ZþÕsè ‰7Óv(1)ÐIòC œn†Ñ’oˆ)A‚‘{HB4,…£³‚䤨‚üì.êʦ¢±‚g-%åaÉCºÃˆ+À­¶ã|¯xؼ?J»a: 2_RØçöÍ»ì¼ÈÞK)@&\‰„³¾>P|ãõÅŒòÁõÌ¢£¾^ùÁœ!¡P¸ß£\gHþø²{]²¶¦:^XÎ3‡9ŸXNcyF’a0ˋօé_Ô×Õ6„ëŠü£ýÞÒx®äÓe…km¡¢œ‚µÅÞCÚ¶ØJ{K8šW°ò*cm}‚(ñ½’#u=N³=”Ÿ*èèò{~ÄÒ럸àÏE"ä³WI0h#Ý¡—––A"P7ÞÜ `Ë}†<Ò b2Á3f¶Ìl˜ŸQ}|bÖ7/÷æêØÅç P–;/ô ¶^”Ñ~ µ˜ÐCÝv ùr®¦ºC@ˆÕqo*YË…ò›öÔÔìiÊÏ>{Z[{𢆆áŽÂŽᆠ#øÙÐð`?\·öóÝœ‹8HAÚi\ÖYû%§­Ëj4ÍËÔ6&“‹É$Û‘Ê$°†[(a6PªX#á€Q±¤Š‚))â\¼ p}‹…[ÚDÿÑêaïéZ~ŸžûÂGö¥åH "Ðà]*îΆ›N±ù;lžå}³žK~+2”tÀá$›Mó6E2[ÈfE£ôù¸9°2_nL%’³P^OÜHUU&2®”'†ÄP©óÙ)ƒ˜£î?ü¡ÕŸï/I™öö²š¶G†“¶¼S˜Êµº Ý¢'TÛSM_UÈÊ\ß ÉCzÓQ£&¹ÝJ]³²'âá$Ï%ß÷}Ô<+]òº;M.;Û¸6;ÙlŸ'¼‚;‹ïc´ŸÐ9 q_ùp±‚ìŒRD\WçHÑ·Õñ¶õ[“ÞÌú²šã2²äŒ¥wÕÐü¥wöoåx°^DzLÀ¼®=ÚÁòùYÚ•`g—JAÀ4¸ó}0c)_ŒôV<ëfTèF€: ‡{ ’£ûR]¤Ž&S{;rœ”õL„5ŒAºŒà‚0N¤×d&›#Ȫ"µÅùó1í¤Ý"ö4KH#–XÖ MDQæÉ¼'Ø—¬˜OÉ@@:pÖW C „ ÛÙ‹×€7 óÄÍĵ,‘' o5H_vhÛÅø½_Mø¾Æýb!P‰¦æ2ÕSQLW¬é®p[µ‘Ò®Úpl}o©=rÌÁ²üò6‡Å¹½…7|Y®h(YHÿ[nMgéÒw8°±œ…é²DCÜÉ ô•Å<6±¸#Ò–åÈoAÞYȆ´‹ªVÒMÉI7SU’´YíJÖËia–¿d¶Xæ ncÄüÍà‰¸0àd¾r dè@®õ÷;;2’3ì5sí]Ü”ró‚/ì4ñŒß¼G ø ’ùû«$ ÙÌKÚÓH†'ãC"âÇ÷+2Ë]c˜±z”8÷»&]œ+tFz¦ §`²€‹AÍóÀhbg¬ØÆ IëÂpNAžà˜v\$ãYä™|§Ì^ï“ç½±9¶^“Ë Ý"¸¼8Ž úyûÂÈÖ ´ Ï ½K¤鋊¶IÊužv=“Ô®ñxìדCÅh˜®Ú¹µq&æSEÍ;ËÆ§èÒãÆ­»ªZ6ÇŽÚÖé¡MõjUž‹§|ÛÁÖ¼ÏÝgtI}ÛÒ“»¸ãÀDc_ ¨:¤ëEtö´<ÎowS·Ë¬øN‹âë´S»Ó"“Ë,¸Ì21+VÀ¯—íÆ”ÙiqκÌÐÁå£@XQ‰ kHŸ2+·,_@–- 'Yü¾.W§³Sé”;-]æ.M`?¦iÝPnÌ)‰¹{®Ãòçìש_y}NÏÊ—é]²|WUe´œ/´ób¬Ö¦|u)1L}t΢Ƌ\®¢Õ2¬ü“ñS÷¸X9óÖÖ¯ êëk=­¤?|á…w›¾Ø4Õ»¼‘ ·“(ùTºß†²ªpãPëà*mHаɉÑ?+£ì–¨’¡2SägbFßlàRž‘Ÿæöú7‰*ÛòæyKøÜ@ñ)ÐÜlCÎâ¤Û×LX‰Ä.0=&Êâ…ž˜®ÒÑ«{6•TØéxQ}¾2Y¿kMY›#=д~ µ€ò{‡Œ†¥—ìÁÜT[ѺáŽ"¿åUî²äŠ·¬è¤°Fê¤F¤`Øv –fÕq)štu`pé˜a¹‰“¤Kï¨gÖwÉïí2uy`äLŸšUcnçäº~âú…4Ö«ÞÙv»Bš¡¿†¾Jåx]êdüÅ ŒýC Ë|þÇiS:Ns%˜˜—͘v{tÁ‚O›9Ë Hƒ.ÀšP+¥Èìc~Yci“‚JäòqeÏç\²95D”T˜H›Aš¦óiu>…ìµ+ñ’Ž|¦8ªGói:¿7 ŸgE²Ëב¯†ÔÙh¾;šbs;EÅóò“hˆ È€¶7ºlPÍpSð¥D•‘Ä@ðì…åªE‰Ž›„þ†Ðÿ—Ðïú%Bï'ôB÷“IÂuaÙ!Ex¯"ÆË¸‘ ‰"Üë·éE2 îU½>²Ù«x´>ºâÖ ¼ HÚzgH¨È ü6½è>˜I­—¼ô/ý_^úˆ÷E/wÜK‡½t«—¶{éo½ô/%Þw–'nž4†zB3^B¼(ÁDD?Ud‹Qñql($Ý="]'R1 °U€ã="í÷‹“"/ªCÑ¢XfÍ¢Ûl:Ä·6ÁxF€Qè›Ïy¼Œ‰¿óœÓÍo"cÆö/Àk¶)¥…‰Ž×ôóFzÜH[ÃFŽ»à-GÁ=’јìùfú)x‰Çï…› €ó(ÈÈ= Ó¯õP‹‡þÖCŸó\÷p{èAÝé¡]¬ì¿xþÊóÕCÅ3Ëݼ±‘ïá÷óßçƒð»ÀÿÏóiåU…PÞQ8%m¦²9bæ$sA~W´Síôv†”|…+3 —àéã<}€§‡øOóœÂ=–Ns§Øe¼Å-ÁjÈd2weîr¤VXç]ŸfîòÃ¥1L¬g¿£GWYXÈÌùuV e‰l3¿òÃ[CÜõ CÀ/[~k¬€òSèzcîãã­–eøúh9-´S1ç SaÞ×À×eFN¤¿Íi rúÊû ‡Í9‘<Ù ‡Ìݦ`8ê£jŽy °¿¼ãêððÕŽƒTz¬bbb4^1~è`YÙÁCãñщ‰ŠÇ–>º¥¿ó åÁÆŒ¦1dwAy²GÕT…wžÃœÉHa¯" ´e+ÐhÄ *ZÓ$­Lü)hCÂ^2!‡‘Hn^ÅDßd#ú‚>´AÏW B‚º&Òu@^—œ³J:¥ UŒêl¨'Lå0•‰ٲKå¥]‘.GW")Ð;䟷žgû¦cDø<ª¡Æ©Š”ò&Y‘jÔXó/€4’7ë‘I,¾•EÈÇŒ]{·1m#ˆÕsðñ¶d«O —ÖFÖoNÈS ‘W±Á"Is µ«¹~ãé¡ àtØbéþjäìåÍ¥ž€9ؗͬ°yÀ·ÜJ |^%ï_% †ÜÔ°ù ~Šœ>=|D¦"Š•:“HcD5y=n—Ï¥8}.§à@!ñA>ÏÅtoWÚ¸$PÛ\i€³Ëj“Ͳ$MF5œE-,é0šeó¬Éè6Y6ELœdо*¿)¿#ó²Qà„ŸWC[Qg1ƒQ£í?TÚ}õw±møarÎKc¹®à~Êöl…ü`NC^±kU¨Ó ¹˜ÈÀ>›OÓë²;‚²­ éõ….KÌQ×h<’?l‰ÄKýñ5üþ”;QÝT ª”Ë0(˜ªê³ec©ñWŽüÁÒ»ÇËšJܼ`änÙ±÷ƒžî"­é¨ÁE%ÑI­¼ÇlŸU.¹å.Ûœ¥Ó 2¿‡8Ï£ºû*==@LI4Ô5Ÿ“ò:êë™} t¢Y¹¹4żaÕµ4T¼Îê°–ªMÕ?úQfˆ—¬B¯Ñ²q}Ù–¥v®nøˆî3h¥ÿû1LÊÈß]%EšÎ^¨ëð1]wwê*‰7‹Ä<«7ã¶ ÆÃe°Wpû(LW.Uø}º–^€­­ì j¼g$ÖVÊnk ¼šJHR¼Bz¦Üš÷¹ñ Q‹›Ý[#yóŠ­·Œépe%ó„%ˆÌS‰'û2šF‡Êfµ}ÐUºÄu¦ÞݼžÔ”;øeíZM‘÷9VÜ2€ô~Åcƒ$@¶¶•WlkÈÏkÚ·®i0zê3U»TGN_é¶Nj¯(ÚÔç+L… œÕR ܸ¯©~[¡KZª¼û°bé³8š;è£q¨¯,]â†2ܯYþ'ò§ä$ØhyWTÈ#ñZ=ÄhUMÔÄ /ß…îÓ(ÕuljšÿîOó#‘|¼jCEE!¸p<žì\þg®—û.ñ“b²†Ì=¿ËC+»¶Q—Â)L¤mè“È?îeðgöÃDæE¸{+îÞµkq>9 ãk¦…‹õkjNY\%'‹‹‰ÑÒŒœH;iL¢‘ ÖÒb½¢+Ð å î׉$zA3n‡Î¼ÜŒk¹Ôãõi:53Š WRÀÖ¨ÃSUUévWVUzÖw—Ö–mèxliÙ"Ûb¾D÷ÚX°ªµäžÑütE(§ª¹  Äaä F{R08g¢=UßétnÙ86N;ߣð³ä$ãy9Ö-æ`‰.X9`_$WÈQb#å¨{¿™öH–#áÏØD³Ù.7ÚzlœM4’ŠTE†:`…¯-%A×yݸ °áѽ÷mZ vJJ²Ôøé5¾Ôx¹ÍoÑð‹vñ÷À.Ž’¯Ÿ¶SœúŽõ'È0£]ƒÜÓ–Ëìr«·#7Öë‰q±´ìí`.+úëÎ _BÖU'°M&<“gw ¿u(°»ó63Ú@æÞœn<ݪ󹌅 ÉÔ§±Û%‰¬¥ )æ’Ò7ˆ°joˆ·íŸ§ÉÆýMj,©µ«O]dË6Wqº¼`½Ã&…ã kQÇõë‡;‹­¶³uh_I{2d—¶&QÐùÞ¿ß ’å´ÇƒNZ“mÉ\e²–´ßŠ9 :†,(Ó¡RB÷/‡ÐË*žn?eúæs T¯„4õ1r{èfƒ¨!Ôî½~4|±” Z‚¡<ÄKf4rÅ«À^ï¨'è&˵tžMérô1†¼ 3.T?y‹­Ë ªŸpKõ«H0Ê5æ,º¡ ]±_rµ”ÇB r%3pë:êZYk¸¥i­ûˆ§n}CN&ã_»&é<â«]»Ž†}­=}±XgË×?c¼ î_»¾ÎX¿aÀ40½‹{žXIoº†7Ü/F P›í¶Ä?9ÔêgA¯'ç«j­´öZ¬SV£ÕÊ ;ø„­ ³˜ÊhD¿/óJ&µX_UéBÉÒÌúLýá²æŒ5V\æáâÞ¶ê››¸j‹ßëu9ò½ xE»ý›+ToÖ凩¡‡àM{QÕ‹~L^ÄP0't&ÀjYéÀÌD°»¬mà™<Ä⋌ûóóQÒ„™h¸×ÎÈÇŒ6è¼Ãݧ`ˆ†y6™pXñê0qpM7õWœwH߀‹ÛE}R·ò÷lЧìu˜™øºÅO¿„6~{ÑÞ¢û†rS49ÁÆo\ÏL~×Ãí︒Rò¿Ó¼èòñ>×ý"ïy—è}J𜕤•Vy~Á!ó§ÍœùœR–¯LòõpJ>†bp³äGP¿0ßm䂨¢tô¡­Ìœ¨¤¡ƒÍg-ÀÍJ0 Þç0˜S’i‰®õ–° +мs%ýæóÖèdîO=‚ "™`1‘Å»n$‘ȯ/BME£ó¬:UU‰^Гùʧ[ü5Û7XåØºî’‚Þæ’¢ÍG¾`³Y<–DϺXN"åo݈ç%–ßå8€©ý×Ïç*º×íbìWF_ƒÌÄå›Ì(!Ä «Áž«?ؤ{b­Œ7ë9c:T¡t.R'2*£òt³1ê=‡6Æ•\æñ„§8a¼Ž0ÑŽ~ÏÎöàÌ_ IÓ.z x|ð¸ÇxQ]Û×Bc‹+Ѱ¬ç"{ÜØ^Á DQƒlà’Ÿ>räÓxÑ [¤:Ž3û¤{¿õÝï~ ¯úÑÍee›Gëõ§¦Wï„û‹ çð$ÿ*€$ ° é4ÑÀ5ã馅½•ìÅeçà ÷üÍMZÿú>yšûˆ˜š;³’d1L{ÀØb:,Â…¬&VN7Ч­¦:“•û(Yu¨¦æP²ŠÉ0·83¼ßN<äPº±ˆ£’ƒÚ=  kÎ$PYl÷‹f“OvÓuûÝ“îY7゚»—¸ÏÛlây“I°ìÏ è\@˜¨v-¦*l_I*‹G÷þ×`\–¹ cN`ÚgêP;t`œ8V<žSE®æmû+woݺgéÇ´6¼amÊý‹wJº»r©cóåËôaµgçž®¹˜ž¯)¦]x¦ã]‘`Ï(n6§'Ð1}*Ê}¨ÒoäÒÑ\ÊÜÔ™)2QÔû”2‰ì€UbUGŠ~ÍS³»%¯¾<Ï÷´$;š™ÜÙT`q¸LÝr´s7}çÞsÿ ̽<•VÈ®èŠHa>žu8+œGÞ^ê='óž“øb‹Ý¯†Üj(¤ÚmE±¼ó*9bÌ-„3!_ !/ ãQ´ƒC!IÝiw\°áÐ6‰i*Ò.]WkÔÃúåEQ‘|½~.RCš@™ë+Z‰ ý«×ªë%€ì¨'fçÿó#Dšƒµå¨bt¯)Ûw›'¶E££[nRƒÁ@/ï>X¾eE³pç•âëŠÝe|sÐZ¶®=¿óî5{N¶UtVG‘ÜdÍ® y¹ëv­+Yg£;–¾k0›ÅÊ;îÛµkîŽJ«¢ú\xÇÁtÃhg‘É ñü>à ûoúÈît¹}¼ñsÂM™–''9/žPqZ¸èw4›,§¹ZuUAÊXûâ'œ n;áÅRvŽö·§#ƒwtl(õFšÈ%Ãké•¥þ±}¾ÊMÕôâR÷ÚáÎÂ-w¹Q•Iˆô\%öå_=‡6üI»‘[ä*¹œ”{)`uñæK9L²ËVg‡òï6ŒsÌód«æSÖ¯^Oé§W ñ–[çet­:Ë*Xã6«9h©,Îì-Õµ~Ç(læ ëêZ¹áA>zë„+Ú4éMýlÉÕ«Ä¡ù¨lº›Å¦ŸWbžYº Ò¬y¢|Ì9ã»#Y²#gdV#ë‡ÏØ©#7ž@aMågò$˜Ë6£ óAVÌíóo2Yñ ‹iÒÊ|ÖyŸ»W#C<†Çäïíî*Ð 5Æ¥™C;Ô˜`Äj4sæu‚½¢dÓžAæZ8ÍèžÊµ¡vŒC{Ñ·à’nö¼Ê\ D??¶‘nàeb#ƒéfCÐ\bæLfú˜ù×æßšùûÍÔ,òÄBß±Ðç,ôI =o¡¹–#–{,<(g–]0À"*"'‚’3̆`I)0Y3737tU*©üCذ™\næ]|âù©gº:š·ìß¿¥¹£‹&NÿÈÎËì18£>lxËðÿ¼D‹ÌÓež~‡§Ïòô4Oü”ç ˜šý8/fS‹²Å<Ćÿ¼ªÍéîþÇ~ß¼–ðzæÅ“´¬xò-ʹ™x~˜¦CdˆÙí´B?2UUé‹ÑÔÆýt[æ*ÿ#ùò2YÏIô4Ø%q‚ú€÷. œüÊmdÓUPþ•²óêq ѸÖH-Æ1aä%#9c3Ëiµ‰i…±Ñ8iä¬_ c€š³˜Dsœ&\ëi]Eˆƒë[O ñP‡ÇC)'Y<æêÑR_éžB³ÏrÛÚŠÓ^ üGÝG‰ã‡¸!:L†³‹ÓχHј?C·íçå]k€1š` ‘ä¦mœ`âgEÉ0gäæH›ŠEô'*¯_CcÍCgàœ=û?x¹ó_Ü©ë¼ɯ³ý¡3Y·÷ý P­s¯&õk쵓¯íÔ`¥Kt„{`[Ï`[¯ÃÊɳPnƒµùŒ¢œ1Û´Ñ [£mÒÆÛÄ´‘"ü|¿×S¯ ]äPÑN³! goAîm„ÜH™¯l7ƒÓ+àvôŠ X÷¦]êOJô `$qÔ’œøu}™X&;‹Ô|–×Ò¥xzØ/§æ ØŠ%%TÎv\,Î ò„OZˆÝ®8=mJ³€F ‹Ä¥R‹ÙP\F¹‘¬Èè¶9 žY1+ñc^‚:´ƒlÈDù<Ñ‘U¬èÓJUuÊy§»¢²Âe Ùw ‚ªñÐc?oˆ¶%{ëÂáTÍs7õì,ŠoÙØà£KïrϘʼn#mC´Œ_úsNª¤°:lÕmuÎ rËBjÒ¹"¯¬±¤irÑ*œEj:iiæOÒ&t5/¢1F•¥Å¤òƾÌWØG#žì¿ôKÿ‰æ-½AAn{¥ïm+þî ³‡N«svªòô„…ò@ó´bq+eÚɸ´S7‹Z@‹3x>ïá$qÚtÑíj¾_ü²È}J¤‡DºG¤"ý¼ò‡ 7¤U8.­ô*œ[©V8Q‘M–&s“ÔLšÉ­£>û5Αa,%`Ó7µ³6ûÑ»™ÉDÁNP£‹«òÖ7oloÎÙß]qh<£î/¸ãÀèþíêÍÿÉ=Ÿ¼÷ùPØ6!Ͳø0'qqâeŠì~(i %«@z©dïI$ª‰¦g½ËmczÖ[éXq„êOÃHms¡GB‡)5&E–óbÅAýã‹ ²T̓Çl¢}\¡+®ÂÓE jNnÔœ„ª®GB‘î9%gä(ùÒl!³ÓÛZì±-ÏEyn„T„¹e²OÅX]Œ á¶dZIR‹/4²€K1hêÐr²"¥}U“ ™U¡I¦wñ«õ. NžÖ”®»[m)Õ˜cÊK¤‚uý Ñܵ»Ö¶ô{b~m‡\yÇÜŠÒÕk´ÛMYµ+ÇÒ+Èv3YÙÃ`ÛIÙŠ'¦/°C6ÍúÛJI× …@&T²Qsœ>’G…u]tÒÇœtÞIÀÿ€EÃ’¤épÔŽJá°âŽãalÐèÚs;K¼“Z™* ÉÐq+ÆQ¬~T`P±·"YËËÒ’½£¬êQžè¡[à,Àªg´9L…°–7–Óòƒ0ËSeHkýe´¬¨ý„ë·ÓE]ÞSì³jîs>ìäN8éN˜§ ÀK!ó¦–Tb1“ÌF0¦Á³ùÉ×uW$ºfþͧ:° Á¸¿žaÞ‚]X¼ÁœýHÇ»ZÏ~¤£™ý>*_·&sOi<èx¶ÕåTæ{¼E5jÙ¦ºð½'‹Ûj -¹¾}mcjYÔoµEËJ÷ކ”[Àê/äÄsýVg~²­jïEv{mªF[Ü.ïr?ùÅU"U£6/ÛmV‡•ýí£Åà÷y=‚GPÑÿeÄ´Ñâ6Z#åxü›Àj-V°Š =í°ºVâðxŒŽ X}éàTðÉà«Aƒ¤z88ÀNú÷{&=³Þéqz¬Žf+°6£ÆÖ4È2':ºÏ3w)7õ bÐOS±ÓRÂõëx¦êеÃTÙ†!ðlatÅUÆk' ¹GXYºÑ8RÔÞÒœ¿;¿¹¥½è‡jc^¬1R¶«ìòÄw.>¶iÓc¿3A鮯mÚôµ]Œ¾kÈfºÌ™‰‘ ¤ãÁH Äø¬`p £€_ó„>ËñnŽ«W@i*p+§,zÉiŒ´*2/'^NPEÅj"üíŸw¹± ¦À÷8=\ê¥ Ašx¨ûÅÞ»Ù<€=p÷îœä?§Kæôn…´Ó:ÛFÛœ?a¥/™éœ‰Þm¢khå~*ÿo™»!SçÊA|Ù ÆÏ4Ü„VæÛ”­£l´N[Œn \?—ª+ÄN|\{ÞåíÌ£'(Ë~ª‰~nßålÒÐ'h¾ïU¢ÄÍDâ§·Eˆh"#¢ Ø€œLö‡NeÔ R^§¯ÖYÇÝoknÊÛ›×ÔÒ^p¨v¬®n¬†{þV¾²ô‹Ó³´à+ #þ+èwï,? °÷§Í” 2Çm¡N© ø_U)‚ 7 kàΞ[rûÓ êÒÞ2-sTÜE›`š/ZÍ' £‹â²‹º¥,íË`ܞ♄(ŠVG”3.}spnCO?M/]ãž_úåíô2œÎÃ?éÁ…g ¼ÛÀ  #g$Ï2mP°% ̃€ žâöOc‹USqcaOÿjš©ƒZXP¤ K½Az€~‘ÌCl¿×Çè2ýûV¶<äE‘“Ä=ÛHzȳPlx¶Ò˜Æ‚æöFf‘…$R)”|u?Ô†jè—jñúUÍGGùzXäû,QvÚïõV¸_RDÙ¾Ã$œwЇûŠòú¢ÞH¡ï²&êdÍXÖÜ_z–^önL{/ãBY_wüÞ?þNfGô#ÛDŠÒn‘·0Åͬ)n+jÛ-¼¼¾Zesì¤_]ú>Í]ÅfÛ_n]ú¬¿ôʽÄâ‰>ÏD@¾û êš0û„®]—è!ÚÅS¡Ò|‹dw‚&Ή®.ÎU¾Ïò°…³DÏm$»`àr‹ýB8âˆ> áøÿ.ãA?ÿ&ôߊjáÁ ˜qf1ƒg^2)ͱu:¢!Þ·¯+¥¬2Þ¸æàÜ!®Ü\m 6­Džx3¶>LW½#_¾³Žn¡þêm¬Jþºî’xosÉã¯ÚlŸ¥t˺XNiÊßÚÁÎða<ÿ&Èî(I‘6j¿J’ e’Yó \ÑÏAg¼ìë©6= ›Fe#þçBÅ(s“–&µ©ªB®À®r“Z¡6Ý/W¸åŠ&¹I÷ÊTEGù~•ʪ¬šKÏǨ,%Î9$Æ‘wŽ9ðÌí²¬ªBýü,áôrxû õ×"¸?ðc,MÛÅœM+t‚I±£x8ÅtF;9‚•Û$5žÔU´ï‹^ÓcŠ^ V}JZ¯Yå½Â*Ç0ˆתh£¯Ò›¹õ;×4íªöº"ž¡pÝ–Ê5½)Ÿ#·À}|éK65ÏK©Š¿¬±¨¬êŸm9¥ªZ–cSòêâ%ÉçJ6Öä¬i çÖ”Ø×‰·UGòjÒáÜTižmͬ³0êuGŠa}ÖÊ[LH‚JT˜6P·ÒIòã²!bà$ƒƒRY¶*Lf M†¦¬9‚;`̾ÕÊ$çV±|¿róõÌ GjNgü¸MA§Â”jYìø—¶OÕïKVí+<\û©Vê=ôêðÖ§·lyzëðOî\úÕ-~ð!¬E ¡´ˆ†ioNÒfýãÁEåFUelþ”ƒ~¸´pûv`ÇOhz)ÀÁ}=@§%V‡Óâ¤Dá1MD7ðCý«&ŸËâu×Iw“E”Nš`à›É6Þüa öì ´ 5ŠN$¨\Ø”-5 ²5ÎîÛÐÚÑÖ ÷-™<õMímM¡¥Çé_qcÁÎÝF†Ë¶5 îÛÙ6žÕl,ßÇl,»Ë.Ò^J”+n—9 tµ¦t`7ÙgQv Ú;£‹¸¨$›œv"Ï)&Á8'vÁÔ€SÿN}_xNÖûƒ’–Í™±bú´§­§'LÃKÓþöîÎÐÒ2=AÿÌ·}t*µ¥¡ôN0·Àû}Ì—€>àÿyåÉÆg¯¥K­JÇY7åÑôºÏŸú€¬O±;-DÖ¾ $²9ÍÚl·$8ýHÈLì`Ÿ¢5xëKÁiíKÁ´¯×7à;í{Ò'ø¨¨p·>lv59›”&¹ÉÒl^1‘W>Ìd”™•ï?þ¡ö¡,k\xª¯ùTˆ¦xüŠð¹$YÔV%äCe'ZÞ˜zæéÉŸ·Þ]îìé‰Åzz:Ãý/ ÐKK”[úÞàK»õ¸ÚFW “$µ\%6íÈ ©9²!µ»s¨íß £aÄT> ’bŒ0c€¡ø¸Ùãù·á4ë­pZuDçÍ‘l,-ò;bi)Œ@9ÿ”ŒÒðEü¿Ý}Ê“=¥áÉþO¹‚íÊOiѤ6v £ÝúOº´PÞb¾Œe$4ᯅט [[A)+L¡ßa+Ú¸¿–®ï*ðUïï®65Nm­ü=Á¶-ŸÚ]göÅüŠa³è‹¯+5¤öžÙññÈGªAwM‡H„üKú)_„úap6£/—³™`b6³ËÂ[Í.‰·š@±}Þ*ø)güœÍÊs¼mÖÊ»­¼­ÑJ­¼3è0»äbv™sBŠÉí :LnS$¤} Cð{ƒ£„ÁoŒ'DCŠ# *³Ž ÛT*ƒ4(;¨Ãïsc]5úN þ`“É}Ò ûÛfR3Ï”Ñ72×n^k|nè>¾víÚë™ë™ÛA"ug®IËרÿ×_»½^ÖL§©º”˜òÄØ«cWMŠ])ž4竱í±þƒy_xž,=š7éí_}•.½øbו®_ÔK›¯0~?gÙ—s~¿¼þ}à ÿ‹³/ôgÿÀ×òw—[ù¿7N/„~ü×—[HÎÊߣû»`Ûé{$ÉÕ…[GzÉMÒLÿ”‘¿Ln!)z†ôÒ‡H×—™$¨ƒlá* |Úw“^(ïåMÄÉg Ý»„Ãö à§Èd ÷9/8ýK’‚¾½\5É@Ÿ<×°¾Õ¤Ž~ãT³²$µAûwI¤‹øƒ¤æ%Aº‰7“µÜ_`ßÁ*Yâž„üé#7—¿‹ãÑV².‘ž^þý ?ÿ†¬géN2—eQ(‹rÇÈNXãNîgl^k¸Ã0ÎäÝP÷{W ÷ 1Ó¿_þWîPŽyíZÏX¾çÌí#C„ü×÷ÿ|îñ±y~÷É#[ɷɯè踵ÜwWøˆá[B‰ð¸ðÏRPzÛôÓߘ7_·ì±œ³­×mFÛCövûŸÊòÛÊ£Ž5Ž~ÇÝŽÿæ|Éåu}Ý=ä~Íý‘Çîù¶×àí÷þ¯ÖwÆ÷uß‚ï¿ÓŸôoõïóŸØéÀŸþ,8üQè+9krNår¹9¹½¹ç^Ë};ì ?y0òêV÷©3êsÑÞ¼pÞÕ©a;ie$h†­¦‚ŸTão‰Àjƒ´a…f:Wèõ N=Í´ïÑÓ<¬}§žCžÜ­§b%ŸÑÓFøwVO‹$MÔÓˆ¬Wõ´ Ò¿ÔÓfîkäm=mW|ñÖ_v„4O¨Á¹‡VÒ”X 1=Í»¡BOó¤Õ°AO Ígõ´@ü†ô´ÊÿXO‹ä´á²ž–HX¨ÒÓ&H÷èi³Ð.ÑÓRm¾¢§­þÛ–É©“GǎͨÉʪJµepbrbüÀàauóÌp¹ªn?021=2¬›9ªÎŒ¨;†ŽMÌSÛ''f´ê#jUy¥V¼uäà±ÃƒG[ÏLNt„aÖf»è•jey]•V´säèôøäνéàÄ𪹠QŽŸž9 s™9:8294~xD=0ydêØ NhúÀÑÀ}¹Íl3ã ¦LÂn_øj ŽO8|lß}ø0ksxpâà±ÁƒPrlZƒ&–‡·O›ÎŽUG¡ËÑÉc%¨†¹O¨3Ç& 7>3¦7-œV§ÆÆONONTOŒS§Š0þÌØàŒ:r|äèI6ž:=6y Q‡`M3“XŒ£CÝäèÌ D8¾bÕ,õ•A‹c“@ÖØuÌ",''N\J´NŒ¨#wOa Ž1ªAàÄ8¬|kfFÁ‹L´P `‡ŠUpѧ0G€Ÿ<:]NZÈ$™"'ÉQ2N’12CT’$•À´+!ÕBÉ´˜€Ú> e›¡Í0)‡¦±|ê§á> %Ç = 飞ñFใ ±ò¸«ÀZ'Yzuï¬]ŒZy[ë­P~ž‡áÝGI+›Á ëß éA¨Óf³öß¼åöž*Œ[Nêà «[ídóœ†YàˆŸÜæöQÙê>.ø\ÅQöæqw†¯ÁeRƒ 2GXËCP¯Â£ÿ”W¯Y]Yu¶þ÷×nÿwàß­À;þoÍÿ0” ééQ½í4Kgq‹ëb}~÷ÌU}NCÐ~ŒÕŒ®¬÷“éb Þ9IP‚ô•ÿèÊŒñíÓŒRqìP޼…—Ö{ì¶ùŒÃ§ …aã •Åù8[Îròo£`lyˆõÉ®÷“á½z®3Ðn R£P£Qµö†i6ÇiRÆv î¶QRÊÞ6ÍÖ¤‚Â0ÅÞµ]×=ÂæzŒaczÕ:µ1°ü16' ‡cl3:ŽF|T˜‡¶ ÆÙ처Ñ`yˆ­fjÕØG ?Ĩb„õdð;Æ`¦AhJqFÚ¾/'6bfWÓ¬—¶†ß‡ñßE‰ãŒ#†6Ã+ë>Ìp™ç0›íA¶öƒz›c+®÷CÌÀ›³;<»ŠO†åí8×)ß­qëÕÔ~ûžÍÒå$oR§—ÒU´u‚õ%xj¥ÏÌÊ._M'XêðÊJ±Ï £¸,ÒVŒ”v\‡¶´ÞµÏè»÷“èåv(htž¥ð“lçeÔ=ÆÆ™SÿN°å0ƒ[œàÈ ÐF©øÿÔ‡Ù šÝz/é!ŸðÃZ–ƒEíè .+þö_^ù‡+ËWøg¿ýýosé…ž\àŸýÅêoS²¶+òäŸpégzŸx†¸DŸ¼D¿ñu)ò\üuOäëœùÇG¾úcä?~ÅyžOP.ò*Dþˆ"?ö£È—óD¾ôè=‘Ç í£ÜÆÈ#\2òðƒ‘ÿðÅ{"øOEþ€ÒÈC4ù" D<ß¹p~8ÒsžNžŸ=Ï={ž¦Ï¯Y×~žã"ÜÿžÈýÔ9{oCä sy‘ù¹áˆ2§ÎUÎñ½ssNûÇsµõísœ+rLìÙ{¿ïOîåïåhäó§‘Ï}ö/"gfŸŠ|–þ(ršòu–ÎÂpŸ9™ŠÜóéºÈ©“ÑOse‘OÁëöŸœ<É䜑»g‘Ç>9>=9Fï‰ÌÀÚ¦§¦9ôÚkÓü4 pô3“;îúÌÔŽ±½{wÜ»ÇèÞÌŽá½{vØ{ÇŽ¡½»wô·ìܱ«eÇŽmvïØúà¦}víè}°sGσ[vTl¡ßïüeçr'¿qoËŽö½Í;Úö6í˜l¢Û·½DÉ/èKôÁM/ñ»uÓ‚Ô»wÎ/lÃ{ºoÏ‚q~ìØ³·ÿ2¥çwßûÀ¤9wÓBî¶þ…'swoZè€D§!Ar/{IóîD‚L'‰ééÄí?š˜9Æ$1“-ÐóØ”UR–MLcFÿ‚‰¬:‰žÍMÏÌLà ðø=Æÿ—Ý• endstream endobj 32 0 obj 16103 endobj 33 0 obj <> endobj 34 0 obj <> stream xœ]ÔÍn›@à=OÁ2]DÀÜ;H–%ÇŽ%/ú£:} c©„ñÂo_Î=ÓVê"ÑîÌ|s1“m»CßÍÙ·ihŽaNÏ]ßNá6ܧ&¤§péú¤piÛ5s¼²ÿ͵“l{|Üæp=ôçaµJ²ï˳Û<=Ò§M;œÂ§$û:µaêúKúôc{\®÷qü®¡ŸÓ×ã—ú2õ|h—ÇÝüx^†ü+øxŒ!uv]Ò m¸u¦º¿„d•çëtµß¯“зÿ={‰CNçæg=-¥ÅRšç^×Kv–Ëda~EVË• {Ë.G.Y³G®Xã_˜mÎWf¼a}üƼEÞ2[ÍŽõfxg¶µö¬y_r‘ó~…L¹C¦¿‚¹ˆþ™þÒê£ßæ¡_a.èwðô—ØoAù†L¿À_D?öXÐ/6ý¥eúÅæ¡¿‚ÇÑ/p:ú{tô«Ý§ßÁìè¬åèWì×Eÿ™~AýŠ÷âèWK¿³±ð»¼€Íѯ¶ýÞæ¡¿´ù£{úÞ‘Ðï`úÖáüè§Ðï-ÓïÑO¡ßÃ#ë-ÓïÑC‰~x„~Å»ö_`“èÇ^$úÑO¡ßÛ}ú~ý‡GãïïEé÷ð+û¯Ø£Æþc]¥_àTú}Sö_múÅ2ýbóÐïÑ+¥_Í@¿Ç^”~A4þþí>ýóxú=öâcÿÅ>öøUã³Ç¹ôç8I›û4-G‰^v†àôèúð÷|‡£ìï7)t endstream endobj 35 0 obj <> endobj 36 0 obj <> stream xœå{iX\וà½ïÕòjµP+T=x[±‹„«X„’°Á 1‹…(L’qÛ–,Gc[Qâ¤3N;±³y²|—bH¤¸;KŸ'ÇÎ7Ž'Ó(N3|ý…Ä™t<îéHÌ9÷½B 8éþúÏü˜‚zïÜ{Ï=÷ܳߋ”^XL39Cx?ŸŸ»çî1BÈ÷ ¡Žñ“iéPÁߺ~¾NÎO(¯ùn!ü(!:yjvi²Òòw÷bø!¡ÆéD|â’ñBJ^»§¡£›¿ÈCû=hNŸHß{Ñøp!¥¹ÐNÏ&Çãó‹ÓÇ¡}Ú'â÷Î't_ÕBÖ'Ò\üDâ{óÅ?@ûW„˜ÏÌ'SéCôþ@zÇçó¿9ò´'„ûKè£ðƒ3€:ls¼F«Ó £Él±ÚD»ÃéÊq{¼> —üò速ÿ‡nÍýÜßqó·›7øýœ€íÍ$÷÷<%zbÙüýæÍÜ—só·€µŸ·á2F~K»è﹃€ÿ;Þ¶9E<›¿!"qm¶qíÜ4wèmÜ·ˆ°ù‰“§I7™$I†¢f²—%mdŽŒWH;…Ÿ Háôö“ãdùôÔ’d€,’aRc]€»N‘&rpæÈ#äkäij$Ud*ç o)#C¤Ú»ÔÍõ“ïÒ£ä]€â0¿ø¶Ázûệh2‰5 =rx ÿÐÁ¾½=Ý]û;;ÚÛZ[bÍMûoÛÛ°§~÷®ªÊŠò’¢p¡\òºì¢Íb2½N«á9JÊ;äÎQ)S4šÑÉ]]Ø–ãÐßÖ1š‘ «s'NFehÒNÌ`NÞ‚S0c[˜T”IcE¹Ô!K™×Úeé½s`à'Úåa)³Áà>kŠXÃü|˜!ux§Û¥ •:2'§W;FÛÞE“±MnK+ÊÉE£ @@™yþ"-i¢ àJ:ö^äˆ`Áe3|¸#>‘éêhäç³>ÒÆhetm=£%Í Ïä1ébùË«_ÉØhÄÜÖ…C\ÎAziïÑÖŠr>­eº2p1FWŽÜ9tY„"cåèÐE޶£õ{§aƒì:¤ ÎýÃÓ«£ÃhÚÄ ‚„_š¡rÉprÓEÊéÌ£œh͘äVìoÆþf¥_‡ýzP uÓ H|ýÏܯ¡ Ó)&jâ º‡¨ ;GûôçH+iÞhÞ âµ ø­ŽÖÚóíÅð­¡jn¼Éýúº£†[½~«ŸÔfK…ÊèGcö2Q$}¥‚ ¢ÉL_Ú|ç#é+º´ùÞšÝA €…ø6+ïX!tˆxxm"9P Z¬ø4‘¾| èI8”‹”ิùK|ûÕ·Þ±a äE|¯¤¼^éóˆvxxaºGv|v×*ÿÒÏ=ÚжÆ6ÇusNâ'•ä×/„¢´µrG{ˆÅ@žùL=(ö”³ ÅnEã±Fm¨+BPÅ õ& ’Ë‘H%à–à¬bœD"yø{ÑÌò Ö.—¿~òÇyióå˜Ï"v…œÔ-;kª*¯¸ò‰Sì®ðhS1Î ¬èüP¢5_iÞˆüh£ùŠ£¡áúU*¾µ!¾5¹¶qT#¢H¤:ªHx§ÀG´•´ØJå‚JnW]W[ãöðVšãr{Škv×7ÑfZ ƒV.Çä ×ywÏîòægÅ+Ç]þ>­^0þ¢¬ÑMµšF­ÇÐðYÈ‘u¦€ÍU’[Ó^Úvf¢Él½qÕSæñT ½ö°ó=Ž+ïŽïʉäç€?mþŽþ„Ëzñ¿Æ¬R=-A¹•ˆæk?~Adï·_)˨‘½³íwÖ Fr@Byô‚XJÐCÐ-%€`Ž‚Ÿ™K@‚ AHç…‡;§¨:ÇeåPöÅõAþ(£;ßã)Êg§¢ÝVÙÚTä, 9ËÊü¥y6©á`eA}i@_¨÷Ée-‚#ä±y\N³É,Íë=æÁrd§Ù*Ë+‹•åÌÍÙ,`%NɉÍÿEçIĪ\ÏæÐëYÞhÐ &³Þ¬×¯ë´.N«Õ¾¤{]÷3¯ã½f-ÑéMËB· dñ §»Ëe_A{4oüÍ bîk# UŠ™-¿‚^ÿýñúOF®TG=E»êêõúZ½¬×Á–kÁ¨AP¬U£×¹ÐajAù¸Ýïïí,ÖÛƒny_´àöÚžoÙÁùý¥·…{zŽ„©)¸+â, çé×0µs¦@eØà²›‚Õ-7¾WÛ^Ôyvâ¶œÂ*_UK¹×ªå#ï) 9ô&“öÉz=Êý;ˆ_v²7Ôj©Öi1›×mV—Íj³:¬=–³Î°bÓÂi¬ùÊ•ëW¯Bðßúi6Lÿ`vFyÅ:uz^v6QzÒÌóê®:oN©íî‘{K>À99­–öFý'«]±«ðæo¹;¸+¤Ê—ÉÐP ¼Î 1ó@f³:Œu"DÅ:tÉ:ôÁ:L}u˜á*q”)Ò®¾¡]zió l—`ð4 f1ÉyP½(êµØpSá²=h @ÕíØ° X°”`h`ܘÑÏÍ^FfÃ,Ù!_~_yýî‚“6íÉòÛŠ%'l—Ñ‹dŒÆjW=¹¿ºÓŸw¿«í~! TE ´‘ŸlüàOÄŸ1A1š›Qàa¾Ú :ó+žª°GnwWöÞZ©¾Ä+æ–zƒ»J<‘Þ©Æ’–êC…óp‡%X]è çù¬æÜÒ=ÅꃫMwÀê±äF‚~9à6ÛBe{JêÔçšD»þ%t8»ù¿é¼6tW¬É(¢l( Ê€e¯ÛD—Í&Úž©ƒÀ(ògûÍ£ægͼÙAlzÑ~HwN?€µ˜ÞÙx-2¢æ lP¯$= ‰þ›Ö˜_‘SÚ ‹‚þÁøÿt—9 J´¨§¨.ä© pf‘ÙØiÍœ@Ü\˜–/ÖEVº™ELˆT}‚^n»}]4¹DS3pk"ZíºÎäÒ™tQ5™¼Fw1™tî{·Ø­ëÖv“Âj,t"J3r tÖ3 Ø ¦ÓHm%_œ-S¬¼þ;f·ÃÌ}êV!ØÒXcû »ýÐ¥µ÷;ßULN•Mݳm=ÿèƒÕ°§/Àž^„ZTOúc5Z-T‹¬ëOë>¬{F·©ÓÕñ­vã]ÏSÂ4­|«v‰["- ç täk¯Õ¼–uåï /C€ÒËàÄr=÷¢ó‡OÆŸü¡“[¸þ471€1Õ¿Ù΄xQ@ªiÞeRca%ê;˜_ýèA6µdµ²’õ5+؃±ý;Êž="n*iØ_&ź‡ês£`9{ ÃUÚ»¨`Ë9ÚøÐÉñ`Ñ=?Ú\udŸl…‚Ç´§r‰šW+ާÒDɃ|;Øu=YÍïÂrNÄ‘—›» ºB¡`(è;›,øpW ¾|#È?¤Á ¶Âh2­ — ƒõ¬¶!RV¶^Qîª(©‚VdÊ_.çÊ÷”­‚vC&M^ñJ´¿¼'ÒìÉë1özÜ«µÎ̬P+Ÿ ΰpùéHÖ3ßÜxM „V¼U##×F6;b#eõ¦_(½•âB§Ò?êbé‹É&ž{®|_XÔëb#·i-†œ¢\©…^‹m³à”|¾*RwÅñ²²½v£\±‹s*÷¸k½7Þ}×Óë,ô‹>‹5`ñTy°g/(Üo˦÷<¯Þ!š‰*[. ²õ‘»cÍ.LÆ6Q\·X]‹ÕÒoµrVçYcà¥ÀÏñùÖ9êâ(÷J©ß"jm=ÖŸ{…ÓöÓ%Ä^AëQ“„ZˆŒ0!ݳM$µÊFwH¥%ð¥‘{+—U´”8ܺÞRÞ苊Ȳ/²¯ÐS뇽äîõ—ìÒiw¬!]pÆÉ÷ÖÃ1‹«Ë¥žÆ]jÕaŇբ••à>œˆÇ7uXÀbDTÛ6µmeﯙ-䀀îeR:°Ñ«e©°xЫ3°#4”@®AÛÏ’ÂÀJ®{%4`Àc¦Á¼¢íWKOf?PPÜZR¨þT¯ž×¶•Ù‚k‡‰Òþto~c@#ÕëóL¹U…Ž’‚€Npö×F{jüßlp´Á`9h0FöÔø+e—Þ¥Ù“·«r„ô}/»­w“ï^&îÍ÷bFÌ­nŒýn¼íäàÛÎä¨ÈO'X !ë=Ð…yÁ‰FãmV‹Yg2­™.³Óì„£#Ç­Q§‹ÂQ×éñš[M­nqÉFlNø¡ºm ×JÙÝšKU•½VܨÉ^>üDÉÇ,9gaë+¯h_y……õmÁ§¯Ø‚\I«(;öêß»{þGÓwÙ|^·yL+h BŽUžnýÚ×¾G~¢÷©/þõ‰Šcež¬ýÌÈëì;¸· R¹=¶çý´ýy;¯?k³„,œ…§·ÎOšÉ!(VÀð¢|??Ê_à5¼Ýø¨†ï溳æß|…‡×FîÙŠ#ÕѰøÚbL6xX«ÿÒÈ#vO¨Äç‘Ê8ჹ>)œç†•ºû9ˆwzБ‹<óXP¼VDXDL×F¼‹à.)ɪ¦Ì@t˜íö5q9ˆƒ˜tº5-qAð'Äãh±·˜[‰ÖÔŠ²Wî|¶.{¶•B ¤š&ÝÞe,‰ÜÚ[vÇGŠŽ×ÏLMí¾Ëæwç'ļTãêÇ?Ù7ýâW>Õò}qîk7þAÙËøèaÈoeäÅXN.žÿ}øp P6ä@ ê3¡Ec=ÁaS.z8äÃÃç÷¯r]@nn À}6ê†æCšP,@å&£qÝ ¸ AÀ[Ah6ïý™—÷VGÎ>k¥Ö¨Ç{H.Z)ðÜÎþÜïqÖ6go¦škÙ™@á[xzÚº8€èÍFQÝr3ÕLAˆú?¾—úˆ køÝå±2WÅð#Ã&·yOü ­ðfÙm^´·o¦Œîð”§*`v‡\%š¼œÚÇqÿ(^ÿ†§¬Qöˆa÷ÿáhyO|—§,ß…6‰Åòãà_rä2@€  fˆ0ˆG¯ã9“Æ`X#ÔE(½ ðÂ’VËZ5K”kÁ;éæÚfõ ad«D¿Vó +ÑkùzöèÔß\ø€> H—-…ÔRÛALT6õVÀ"V‡&Lè(NŠû²©µ²±øÆ A…åXÊeˆ“ëjœ|ÊKs¼Þu_Ðå ú¤|ˆBR>\nrÀà£Ð ä2if/-߉ATîsÉAyÝærÙ\f¶:,`–Ô[ΘˆJÔ ú IáºÍ 'n3ÁQ+Œâ|Yia·ÜÄ.º-Hx³¯ÛÛÓãê1÷˜z²%ºrŽõ4DXô†÷²Z—ãG½¬"Ú=Ø‘­ÁÔÛûHdGÙñoº¿¿é¿[¹Ã^Vª|vJåöùšë¬wÁÙx°øˆÉιjöìñÉñs#T£t¡}õUö£¼Þ0J¤£}ô¾Ê;2Ç*FGn/˜¢úOVÍ%§K"Ó³³ÕS³Ç•üq‘|U¦­ë̼jmâD €Y:ÐâìýËXž ˦°m ÍÂÊþ¬cU¬Ú¢T‡XÝY"¼Íض°÷ËØ6±¢:µ$Ô¼ò~5‹è—fïx÷§žTPÂkìXÖE²$¯‰N—è´@D]-.¾‹ÌBE‰J¼(‰<.”yxb ´ø[\­ÎVK«¹ÕÐ"´ÜTuC•§¡–©ÚWU'ŒÈ†¢ñ¬®AÓuoÉÝï§X¤[xQ*%xa^«Å,æ„Æ= äYƒ---Á©þg†Æì’±ýáž1A§Óê¾ãÑ.þÈÆ÷<òä_õ]½ñå§îþù¹ûžøìw\Ÿyíî¾w¿{ŽýÓV›7Cmn#!òÉËÄ ¢ô±¿iáûãHÀ? 8Õ ÂTjWÛŠªË„œ³¦ü¼³¼äõb êõâ±gzW„~1{yÈBàë0**Y6άî~sã¦ùSLìê€/çŠÙ^‘zð§ÎÃ#ù] ìÙR±¿Ú_¾›=-ñÁ½gf;•硺±ÊÚF婜é³ÙÆÕAÎÎ'™²ä•sÅÛkVàT‡–eÄqnÛ]öc»Àผ¯>ì¥^™ðš|M~þºhs‰6Ñf0†ørWlš|QcÈ9d4ôòˤ›ÝÍ)‡wØfD½Vîí¯\U.”M×êe|· ÁÙÄo;jèiÑW_í7;|¥òá`ÇnMšÃ wËÍbX(.ʯ”œzN8xãëµý-²¹x÷žî½ôšƒ»r­BÆì,ˆŸ…üJߟՒʘ‡½V£Yã9ÏñœNÓ·h—8ö‡]¼¬þQ6}âq(¬Ï‡ŠŠ¾ç¼1û\üÉnýúÓ@ ¡rÈ—Nòý˜ÉŽdÃk Jb(¸8tí×ÓbÀe©di79xÑjrhlzÍè$F'/²RÓ3xÅbrë“Ëá0ÙßåÌö.coÓØÖE|•×äô;FœCÄø$EÄÊ1XºD—³ÛÑ-öØ ({4ÝüͰLÅk‘ÈÕ½¨þÑôµ›áÙv#0Âî¥(ø8žœ½Q/;‹kicÙ~"2µ[Šyâ¶*Ïš}ç¡)ÚWûÁ²æ‡š›—Û*¦£W¨ùŠœáã¨xc­ïö»l¿'>þ—Øó_V¿>”ýh›¯n¶iÜ`‰Ô:œÚ óøÏo¶‘­óÞÙñ×òè?‘þ‰q£O“"zŽœàtd‚¦¡J×’0TF³ôçä4!_àŠˆŸ^Û|•o„±br€~—L_€Æî‡³æ?C_’<8sœLÆ83àd™ÿ¹s'èüæoè¿úßQǤª¿_qŸåþÀŸç É@B¾[ûœîŒÞ¡Y —„K†VêáãÓ^Ó}Ñò+ëÝÖ´9lŸf²È#{Õ=rD„jy˜­¤ûg¢e£~Ú¤þ IÞ¢Jž:hQu–Îw Ì“2¨Âb!§TX |~H…uÐA…õ$F>¥ÂļŸª°à_©°‘ûù6ÁŸ¾ù/6æ Õ õÑ-ì^UaàFæI»¦K…5įy\…µPÃ?§Â:èÿ¶ ëÉÍUX Aí >©ÂFm§öc*l"uÆ¿Ua3©3YÛ’óK 3SÓi©&Z•Úâsɹ™ñø¬t =Q)IfÆs©Ä„´87‘XÒÓ iplq.½(u&çÒÊðxBª®Œ*ÝÝéøìÌx{|6œë‹Ç§€ÊÞìŒÃ‰©ÅÙø‚­¬¯V»ôÛ ©™äܶ e@ÅŠÏMlc,¾S3©tbK/Ä''â ÇSRròþ>$dÛ·4Þ²™Îø‰™Ù%Fvf ž“Л’&qëÒØÒNâPKLÇg'qÝm‚™_HÞOWJHIH‰ÔÌÔœt*¹pœí%ŸVèÌœ˜ŸMœHÌ¥ãiÀL HÎÌM)ÒNÇ'æpÝm|+TÓKó‰É8È&¤âs©ŠTbaf²\ZL%RÒ¡ùÄÜQ@&ñôâôàš€y">·Ÿ…NÏÌ¥aG“Éi2“^ÂÍ—ÇÓÉy†}"963›Æ“'æÓÈPj|!†Pi1ZŒÈAj< +ìÜøv!ÎÌÏ.NàÚ³³ g6>7µŸ‚žÅ”"Mì= «'SY 0´S’‹(%‘ÍïsRzqZ3éiµ8%ÍOÏÌ&SÉùé%éÔôÌø´”)ýôt<-%N&–=)5\"c )>{J'±©ÏÀXr2} ŽKlãRÝ`ŒO'ÁƱ«šEY&禒 —r&­S )qï<Ž IE§f`çc8’N0‚…Ç“Àê†Aì0°M.* søR"¾ª$m$IæÉY 3dŠL“4‘H ‰’jøJ0's€1£ãÏBßÀ™ •!Œý OÁszžxà4ÐKÀ{Œ±þ4<%ÒÉè¥wÌgxÕ@5º»ž¸*âµ3(Íf÷~^öþчÞ@³€…œDr=Ð߉µúíŒçÀHÿýgT옱“Vœíûý%†<àþW3°Jš­¦H, PœÉìÃ<ãP˜üWä¿]Ò–D²ã~ôè¿¢™NÀ>k΂eÜä÷=¦Â“*nŠÁY­ã~ÆØœ?͹¤ò4øÓldrk¿ïo1ó°f’Ü #ãЃ–—år‹c\=ÅliŸ‚~”äM½¤ÙìéüÌÀçBÉ'8|³0Ãö†\Î@{j‡m#æq6'»ß÷—÷v^Ó€7Ð$Œ(ö®¬b<¦ÀºRŒö `”³ÕRlOÔól­£*Üw‚ñºÈ´‘Ú¶O…æ Ö^d<):œf»H«:šdò‘€ÅCfwYÍ(²<Îv3¿ö h1«H°¹I&¿E&3EB)èEŽ”ˆP 5Ž‘}³2H±YÊþœÆÿ”%ΰX1 8[ûžeºÌÒ™eÜN±½O©8‹[ÑIÑU÷¤º÷$ø•‡EU)Õ’ªþoÎW¬lV•ûAel†áí¤Z̨Í3mÌÂì“Æ4ãêëgsRª-*ü§™Ÿ 4À3ò´´?ÄžfÜͪ{L0ŽÇT=¡³ØYÞgÔy¨ƒ4¬œõðì.Þ_–;u6£Z®­ÄñíÖ¾Óg³v™dô’ª½”o³­SlV‚ÜˬC™“Þòòí6pŠA³[;Å9ifqÙ¤ì-í¤*!Ŕيµ§Uï}?{Ù)Åγ¾ÄŸØ›±Ì…̳>ö•þ¯Œ~…ý2}öËô[üõàó/¾ôâë/òÏó¥o¾þMþùË/]~ý2ÿ?/„žƒï>Ÿú<§}ŽãCŸý´.ô™O›BÏÂûÊ…>Mµ¡OQMèÛ4/ôôS¯†þ꩜Ð'9gè)ÀÿÜþÐ'¸šÐ_~ÄúøG}ìÉçBOÒœÐG©?ôê ]8ßúðù‰Ð¡ó4yþôyîùó4v~Ïmç9.ôÄcîÐã=zŒ:CÒ:]‡×깦УË¡•剸,-G—ùþåÑeËË»:—aÝG€ÇçϽtîõsü9ކ>tÆzøôs¡³ð}ˆ¾:CùtšžrÏ~^£kókœ¸&­½¼Æ¯AûÁ¥ÚÐQºi"ô\Eè>`殥ä·Ä9B÷¦}¡S‹†N¦&B‹ôPv?ššOq"T¿/§øÒ¥/Ñ×)éÁo .<˜¼çÁùA’Œ&¹écǧŽÝ58yldpüØÇŽ µÝ>xGÛàà‘ }ƒ‡/ô\èì¿Ð=xèÂÁÁªƒô¥îŸuovóûµ vkì8Ö2˜l¡G\¢ä7ÕÒKôBï%þ‡{3Bÿ± ]É„à36pgF·’!ƒwºHéùásO> endobj 39 0 obj <> stream xœ]’Ënƒ0E÷|…—é"‰„R$}¨i?€ØCŠTŒeÈ‚¿¯g†¶R cûÎp°VÍ©1ý¾ºQ]`]o´ƒi¼;â ·Þ2ºWó:¢·Z„¾ö²L3 鯢Â7¿6Ín›£¯ð„/NƒëÍMl>ª‹_îÖ~ÁfQP–BCçû<µö¹ ¤ªm£ýr?/[_òx_,ˆ˜Æ’UÔ¨a²­ךE•¢¨ë2£ÿ­Å{.¹vê³u>*}4Š’Sé9&Î$òŽ8ß!'Ì rÊ™9ãù9'N)¿çL…|àL†|ä õyäLŽ\qæ€|âyò93Ÿ‘kfì/#â8B^ýÑY®þØG²Šß•«?:ËÕ$û'”aÿ}$û§ÄìŸÕÈìŸQžýüG¹úïiÃ×Å­Ç»ñs¤BÝóÇIˆÎO°7ð{Çìh±ŠžoàG¬Ê endstream endobj 40 0 obj <> endobj 41 0 obj <> stream xœå9ip×yïíâX`qßHbÁ%’   xè A„¨Ë"DQ$mC&H,€)k"7µe3qâ´aì™xœ¶É4ÎdÚ@uÜ‘ÒN-»mR¥q'q§£$ÓtêL#'ñÕIÇ"û½ÝEÊJ2Óiàb¿÷}ßûÞw¿÷¤òâRiÐED£ÈìB²˜p!ô÷aÓìr™«Sªþ1<3™âÜB[è%+Bt!?7¿’ùçü<ÐUY„Œ£Ùt2uUõ¾!çÑ•Äôæ7iÿÆÙ…ò¹šOt ä²À¸8_˜M¶öï‚ñïÃxÏBò\1¡ø39Œ_„1—O.¤“÷Ü„1¬¯I ¥ò9ôØ&BÍ#„^\Lßúø˜ư>f‡áK>dLÑ2¹BɨԬF«ÓŒ&³Åj³;jœ.ôÿâCéŽzàÑÑ ÁlB,6ß"Ïæ0пù®Â:|/¢gúcxH¤‡çSÛè= ÏCð\„磘/Ò/HôåÔ>é½Gz¢Š¡:¼/¡<G‡ÿm¹ãƒèKEú'ÇOŒ»çè‘ÇŽˆ G‡"ý}û÷íÝÓÛÓݵ;Øhknò6ò n‡ÅhÐkYµŠQ*ä2šÂ¨m˜Ms•¦éЬ‰ 1ŸDrbºÂ*¶“§ÂM lÜNÎpfîàŒˆœ‘-Nlàö¡}6n˜ç*×£Â]n{qí£W hfÚ¯Iñ©äý“: “ÖèáµµK£¿ÒÂG+-«?u€ÉéJ®øyvøøÖ¸"÷xní]Êó7¾“”0 ¯á]D@bâ–›€^…è‚}Ñå#W"h•‹ñIqÌ¡×_ HÐ?U¡¦ åÅ*Å:N(«”­éÓ¼‡„jxZú[Î:*g¸@x_øóÂй Ý4=3›%ïdzFE¿˜¬D¢D’’­Ã—;‚ÀŸœ#rÄ ñÉJ/V,ü ÈŽÄ 76)L‘¦U,C4=+ͪ‡£D/nxm:**HdññÉ«(¼ùãËœëù0êDSDŠm‚Ò4¼6™ÊTÜÓ®äg†›ty*‘)pß?™ž"Qâ •–ÃraEaØvw•™X®ô2Ü$墧H´ÁÅà‡Ü„K’ˆîã&± UÙ`‰ƒ@;äÀ€öM¦¸8ï ÃzÍèTDíF QÞ¢6F[¯l¾i‚ÕZÙϰÁY#oæ[š)ž‘×Ô° Œ‘10,¥¦,n7˜Þ2†ûÉÇÔ|¹¿Ÿ˜Yóz(ôzÂqý;þ›¡ž]¸ž¶÷ÑÝaxñíØ§£•|;íÓa%X̘‚áÍ MSµ¬ìiZ­6µù›u ºf›I­¦Ÿ–±Z£šzÁ“<³ÜÙ¹|&éþâÕ¯O¿¹ÒšÉ$<žD&ÓºòfúøW®~q˜lß l¾E¹¨ZT‹|èþHïIgÆI) "&óçëpÝXÁÌù} ~·}š1t¾Ù¤Ÿpø‚l?K±¬Üì`ûpÄ£þ›‰þ0X—¸¶`ÃÆÍPž¸™¸†J$Ì}¨oµ(”ÁóÝvÍ7´SÞvxé(eÀ»¯£ø{Þøsù‘H˱‹¦yWOíܰŸÂ¬wÖ4:´4¦c¹XããhÝšö.=»¢Ð¨­S%sc­ÉXë5C¼6ßÁÏR_@V´'©!+´ÁÎÙ)»ŒRÄѪM£šÐX„åãp4ï¿ùÉÐùÖ‹7^I„a¢°¹Û¶òV‹MTUw¬?ÿ¼'ä[­®ÁŽý£fêŽO?t5Ø£bʬÁ³÷D˜äg ~ž¡j ?½“•qÕªIè £Jƒ•jÔ߆õ`Á÷n½zÂÞÒJ#oìÇÔSvüaK—[çS¯7/ i4xMÎÊé<~KWCË•r1v£›ÿI}‰úœõëPg¤^Ó’ä×®¸‘£¨í\½FuÈVC!úÕ$U‚hçÍ„aƒ”‚TMdy¹T’?gë,Kgæ— züRÏÜ'ïo-vu-µN}"Ûó!Œ—³ ELý˽N¶)Yê³jeóÉGºá÷gÔÔ¸®"#Ôˆ”çªŒŽ«©Uƒ^‰•Z¸¸¡ÿz´ Ý ½é‡‚çán‹TØÝÙ™òƒõuÝîÆÆÝä¡tO·ƒ-ðÿú þ¿ 9ÛŠ>µk°Éhôä\Ç`=ƒSõØTQ=fꌼ^ÎL9ë-ÎzÆé”Û鸇xÈs¾Mßv¬jöùìqö¼ß)·6#_#k²uÈáë!ò{{‰« oÁÐðÍK2¿ÃïÃ59M>Ø($ Jt žôµÓ¢úv%‰ªÕᬧ­‚]¤åü°¥¡-À÷6ÛòÓ“N§sSLar;vE¼ú¥Ó±„©¦iô´Ánrµµ¾®¦C'ê²JçSé´z•‰o yîu0+z£àëØæÛTî4,âÐÑHû££±~ Öœoèh¸Ø@éÜ ãPÄí«95QS‹í…B5a3²R>ˆñÞ­O‰åJ,Á Ü)$¤X§B^´S>c·”ø©íÛ`Ùß÷´7–pííí´¬×t¹{Nî©Çì“ÕÆ¯(úÄ@fÄ'gXõ#ÇÆ±ßHZ¸2ú¤”p/3£žHƒ1n&11¯ZõV¬·º­£†z±˜!CŒº DKšö“`œJœ3×+$8_¬Pc˜R6šê´­7uuë&ÖÜ8poön܉À%ãSR¿{›²I>;éxœÅË»qŽ(Á­nw³÷¸9…R=Qï zB³å5òˆúMåÖ‹¢×Ì’*$ðXln»Å®gßÝýrß~K« ØÄqKgï^×@&æåöMô¸wÕ¬cvø¨¨Wi6–,#o:îÌ4iØ7¢Ï, üq؃”ȱª•)‰ÆJFÆÐŒ‚!{Ì­‰—^ó¿~ëuÒU¬ðáÇ;¦[œüÑ]‘ÝŽpýB¹q8Õïêí [°ã‚†y“¢ïÙxóá FÝ¡§Í̲—÷<õ’lãå…}µžzíB'#a[Áú!ëÇ­´Õ­¬•G›ˆ©MáÚ¨6ØêuãÝJìVÖtqjoQÙj ]Ó[‰–€Æ]Æp#ôÚM8‘>t-[ª7ÔGUû˜cBÃQlï8P´`)ÖzüNu䞆hWCã੽±Œ'Pw Ô³Ëø®ÑÝÎÇo?ÔÛ¢ksßw–5; §Æêè8ÚUWo:¯·»9³ÓjTY|±Pò4k01]Bÿ9@…Xrè`¤}™}”¥Ð˜†˜·³)¬¤AÙk±Uõd©VÒÖÆ+F 2 zOÓVóé–ö$Hå>Zl=[eôtýž“=õ­jÂôð$ÚÛ*ÍîO4kØW¨H5ùd„˜Ô Ç{qö&þ*’ÃΤMå’ØAa8‚&ÈŽtã‡ßýÈì±zjpÃÆ œ¿$ÆTöÖ@ßâÐ/"_ø‘ ûM{MçM´Þä6Q_4ý•é¦ÿ0É>cÂ+&¼ß„ :h¢·a“Íe›²š,V«é»4.CEÑšúýeú{ôOiÙ“4^¦qHDs4ý(‡U\ ×ÂÑ Í¹¸)D[ÝàFAô* Ù—Ð/À÷Ó.ì²jXÖJ¼mõp¨ÑÕé¢Þ,m2168ûhô,£ÅûEO›zápâŒx†k ßO|?qÆñÊ%ÿ¥ ×°´›%Μ9sÉaP[è% JIZµrºát«TM`fµ5ÔßÊï5;í–f¿>œ <«vÕ»uÚZW6ï÷.ú[ÌZæ,£ð7¥~ýiß}‰ÉÆÆÉÄ}>±ÑuG>4þ¼ÒŽ[ÈÁ:fµ¬ÖÄõµß¨¥j½q½ï>Šñ‘£Ts“Ú©VÐà’ •Ng´TTFr¨"ÇlÒ^?•¸ùzâ9Xle”˜D6û½«Œç¼]½nÝîÝW×{ÀÎñýñÓº7 ñ딲õjÃïËY•¼ÎbwÞîn•=\·ñ“êy:g3rCwå-cˆ÷tx°ÞãöPŒsL}ž{ÊŽíz\7!‡B¸ gçên"Ô–¶ÜjgR zŠgQ*Ô}`/4›&ßð=½ð~º;îé ‡á†Ð7w°¹ùà\__f¤¹y$Ó7|ìØðpÎÛ7ê¯ èÚ{›¹ÌZ_{8KQg(™\ç0ñ.üåúžÑ]ßRšM-ƒí‘&£\¦kjgÕçd*8nK{&øÏІ"-JÖÅYb+»j×Û1´H;ÅPÖ8^µiÕã­Àpθaé*±ÎˆWPØ¢º­ØAcëú -2¶®{C^GýÒñ¾\u;É”²¢Ø‡ Çðkà÷:4iÎÏ©ÔE©«èdssn¬‡»Z½Õ4a«aUš FŽï8ÿßð‡^]dë^¶µ{l¿ï¼±T¤5æq[CîÁýG\}N«óžàHvÈ•½éÃmzÝYFs|èÀ=jv•5ø¥ýFÁWn8«È‘+¢EJy”>§QòC˜!™®¸i€<óZ=pz£Ü»žyôQê…[¯ ç5üü Ì5£zô·‘ULÑκz ²4ÂÉ\gÐQ]£î“:é0Üßtp,:bÖYÌ:îI36+ä²;Ü0•¿ëµn-åÒúµŸÖÒz-–)±ViQa´Fû–M eÏ=n3㬑Ѵ̂¨;-Å0J1H¸®ÃI¢7(ð5ÍˉKŽjk8ZðWÑþS¨_Bt~‚F±uãC>ê~£Ž¢x¨ ²£ŽC^BÃ'P Å#9} ð€œ}ðnA<áƒ5TR¯’˜£Ft?úîÄeü|ߢ©çh=H?K_“Q²eÙòˆ|Z¡Q,*¾®xCyJù9å;Œ‰yNÒ¾…$û(d€r !9§ø5’ T'îÛ²ñà–½)`„¥Y2tL‚ièÜc,ƒæ¸(Ár¸g_`à—`%Š OJ0·ÞïI° à•`5õYô–³°Äúíÿ¥˜FX¦‚ÑlÁid> ¦# K0úd{%X†l² –#‡ìã¬üç%X‰.ʾ&Á ª—ï—`À÷I°Z“Wå°¨Sý ÖüöP¡¸²˜›Ë–¹PÇ®n(™/äs³ÉyîH9ÕÎqGr³é|)â–ò©ô"WΦ¹ñ™¥|y‰‹òe‘<›ævµwˆèÁÂ|*šœ/òG“É9±§ÊO(\G{÷®mã“éÅR®ß†´Ä‘̧¶é“\Ls‹é¹\©œ^}Ê‹ÉTz!¹xºÄ2w¨-*À ÈøŽá‰;lˆ%ró+‚üùÜ üf[â2Äâ7³²S8’fÒÙä|†¬»ÍÅŃéÙr;Gä\*]ÊÍå¹³…ÅÓ‚-åôlV”“[(ΧÒùr²LÌÏ•@d.?':¹œ<Γu·é-J-¯Ó™$¸&”’ùR ”^ÌeÚ¸¥RºÄ+¦ó'€Ë¤“å¥EÀ5s!™_J΃…Ù\¾ e ‹Üì|r1W^!Æ€–§Ë…¢À½P˜Éͧ¹ÙÂBq©L*Í.¦!þíZµVM4(Í`…†owb.?;¿”"kÏÏ <óÉüÜRr0K%Ñ›» «–JU @Z„)‹…%â% ƒË Yry®¼”‡Q®œ•X}%®˜ÍÍJ…bv…;›ÍÍf¹xä—³É2—^N/®ò¸R¶°BfÒ\rl*šHÏ­)Ÿ%'KlÓR² 8f³HmÑíRd‰/ ù¹ø¥MðÖÙ4—>W$"##zàl,Ÿ!”rZH Xx¶j‘8Ü„m~‘TŸ‡¯¤“‹¥v4÷€"ZÖ”Cs(‹Êp% ¡8†u4„’(y Î<¸#À“Bí˜àÓ@/Áo 0K§^¸ òÒðG3¾ ¿´þ‚oŸ=+ðí©;¸wäE…µËÂÌ£'AWQ=_ìvÔ RïN?)hYˆÔ»s¶¸wÊH VÞÝ?IJ¬!¿s€/Áœ´0J >Yâ¡ó4Ð9ùÞÞînËUúo§žøqˆ÷¬9yp[ÿyÀÌHpFâ- p5ÆÄžaÎoÖœ“tšþ¬@ÉlÙ{÷ü(šô PfCò¬ªfKc²zIÈX"û,à‰'oÇ¥,ÌÎîÐ'6"žO r’ðT£Ÿl#Zæ`<·#“ çiaNÕÞ»û{»®eà+”Š˜Ýâ %AÇdVIŽ6aµ’`‡‡¢°Ö I±;-èº$D£´ÍNQæ‚0^tc˜¬(K1Êþá@y!º9A»jdD_ž¬)n“½ã!+ÒÂÜ‚à¿%Ág¢‡J€%‰õßBµðT}Pf‰6ü¶ˆÿ¦LÌ axR[vÏ ±¬Ê™´lŸ“x–¶z‘«*ï²d{Aà¸S‡%)%© Rüoϳl^ò{^ ‘–øvJõ ÒŠB4æavIðFVÐ꬀攤\õ/ uB¼‘‰N+Ûô#ÜYA»yÉÆ´ ñŒ'Å*wU÷œ4Ä  +W+¼jÅÝ}¹3f9)ƒÈÚb×Þží;k¶š—A^AÊ—¶m¹uV˜•Fç„ìç”·ª|{œ ù-KÉœ²qÕ$ZL2mYòXâl1ÛËRõÞ-_vzAÌój†¯•·(dwVS„'߳·4¸Ý ¶ú€(%ø?š#ÜÄ×#`ì]>‘'TÈâ^η¸ËE½;R48bùA—;—lqÏ¥SîôP‹{6™r’8 è©xÊ=1žrz àBÇ}$Úâ>4’r:M¹G£8 èÁ£[?àÐŒ¶•—·Rã2ªÕ­oEãl«z\٪ǫ€FíÄØŒž·a9¾‚Ÿ<|E¹yüp…½¯‚«xÇÈo$~oEñXß{ßäeŒ?6õÈO ÁºÃ•º±ÉÊÕM®\Õ]¶¡Á)¿ù«ŸS%ì÷—þÀ[x9N¡ÿùh¬“ endstream endobj 42 0 obj 6443 endobj 43 0 obj <> endobj 44 0 obj <> stream xœ]’Mnƒ0F÷œÂËt DBH) ‹þ¨´{H‘б YpûzfÒVê"Ñóx>óäqXÖçÚ Køê&ÕÀ"úÁhóts D×Á2zPË}Eÿjlmúl³Î Œµé§<Â7¿7/n›“ž:x§Á æ*6eã×ÍÍÚ/Á," ŠBhèý9O­}nG)µ­µß–uë# ï«ÓZ²Šš4̶UàZs… ¢BäUU`ô¿½8ãH׫ÏÖùVé[£(9žcæ3òŽ8Ý#'ÄY‚¼gŽ‘Sâ8BÎ8K=ΑܿC>q²\§óK®SöL¼'¾pý‚\1gžeÄ=x¦dÿ $ûÇè/Ù?CÉþ)ÕÙ?­Ù?-‘Ù?•Èwÿ2û§ô-öO¨ŸýI—|¿M¼n|?cêæœ!=šNm0ðû®ìd1E¿o_¾ªp endstream endobj 45 0 obj <> endobj 46 0 obj <> endobj 47 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 6 0 obj <>/Contents 7 0 R>> endobj 13 0 obj <>/Contents 14 0 R>> endobj 20 0 obj <>/Contents 21 0 R>> endobj 25 0 obj <> endobj 23 0 obj <> >> endobj 24 0 obj <> >> endobj 48 0 obj <> /Lang(en-US) >> endobj 49 0 obj < /Author /Creator /Producer /CreationDate(D:20120513220453+01'00')>> endobj xref 0 50 0000000000 65535 f 0000138485 00000 n 0000000019 00000 n 0000001906 00000 n 0000001927 00000 n 0000006306 00000 n 0000138629 00000 n 0000006327 00000 n 0000008178 00000 n 0000033825 00000 n 0000008199 00000 n 0000033802 00000 n 0000042138 00000 n 0000138773 00000 n 0000042160 00000 n 0000043537 00000 n 0000064188 00000 n 0000043559 00000 n 0000064165 00000 n 0000084940 00000 n 0000138919 00000 n 0000084963 00000 n 0000087824 00000 n 0000139210 00000 n 0000139414 00000 n 0000139090 00000 n 0000087846 00000 n 0000102314 00000 n 0000102337 00000 n 0000102537 00000 n 0000102916 00000 n 0000103159 00000 n 0000119349 00000 n 0000119372 00000 n 0000119559 00000 n 0000120200 00000 n 0000120678 00000 n 0000129942 00000 n 0000129964 00000 n 0000130161 00000 n 0000130579 00000 n 0000130852 00000 n 0000137382 00000 n 0000137404 00000 n 0000137596 00000 n 0000138010 00000 n 0000138277 00000 n 0000138340 00000 n 0000139586 00000 n 0000139729 00000 n trailer < <96C056C0A07462BACAC842FDA74488FD> ] /DocChecksum /8CBC9B5AF0A4758A05588326E39E9103 >> startxref 140135 %%EOF apache-jmeter-2.8/xdocs/usermanual/junitsampler_tutorial.pdf0000644000175000017500000030233512032647214024056 0ustar ebourgebourg%PDF-1.4 %äüöß 2 0 obj << /Length 3 0 R /Filter /FlateDecode >> stream xœí][«ä¸~˜ÿÐÏœX²$Û°úrÎûÂü\ ìKþ~lw«ê³ªTVûôLö!, ¬Ç-Kuýê¦éNÿùþíß§îôÇîÍ’óóŸÃ´üùÛßNùÃé_÷¿]þûíß¿]>¿›ºÓÐ¥7úüëéOîäÒéóï§_:÷çÓç?¿‹oýüòüw¿tþþdxó“þþdœ×< ÷'ýÛŸÄû“ð–ò“Ô ÷gÎñkc7=޼þY¬ÉëÓj×û“ÄOny羘5å'ï÷'?¡ÓÉÓ“±Ÿ› ’¤À˜wŠS¼ÏäÿUåHJa¦B房sä=ï0¯ãº¼rIO_w.Ÿ¢gúÇ|ÚY@hS1oRv!ofV*öï™S)¿60Ec¦DäO\»)sÕ÷üsñ*o;à¶?hÛ MWçóšö~á-ѳEv‚U3qÕkæ+Q6¹üS~6æMŽõm„Þ$7S"¿; <¼œ„ˆõ%“ÝP2y^„Œ>âó¦úJa¦i ª²dÉWù¬xþ¹Ëj€TŠ0ÈoGñ‰”÷JáP9IYâ _þŽ™•y«hU·–ÅíC¡Ùv¬ôóDu—iCŸôâ€}†B#"œ]~Åqñc€—$L Õ]¸ íXDµ'êÐzd_èO0ñŠªhØ!ffl¨GIïÞ–1€Š³ …|"üA‡ ŽK$V,±²í€ ÔwÇ„Ÿƒ‡ö{zeéã$žý“|YS70ìîyF0žªoQX•;0Žª`h8•£´‰ß1…Ï–ÙgÄŽT´/ŒK8¨*à¾ÚÝüýâWÒ`JT{¶J(ûªv×2Í>Ë»,Ý!)Üi@»Òq¾f{ïäéØ[çA”{óždnbŒu&ù ,P .øžä•U0[à åýÆѵÐöD‰7´XE‚x=šŽG½Bn°]Ò^™Uðc×`ìÁŸ9(µB…E+Øðgã‘PÀÃ;'3™7únÁàfuZ¾¢*ƾ:ÅBÔbDbìè…LKgÀø;ÓåS“ŠÉm ³…5m]‰Q[P”$VôZ= !§Õy «;’GÍÿÑ3éY§|6‡)ŸYÆ}Œ°°Àêü„6tE„2û=2T”?µèbß ÍáKâTÖqÝb¨´¥æí$`Ã6*ÂÁ„z·`‘P}vK.c_ )TòÙB™ .I2fKD#›²˜ç–e!N†²¯3¹è$`ÉщAÖß2ê©Ø2ÛwÏ>Š„0(’L^„E!Až'åeÚ³‚gW×D)G§™¯Þ'c¿EÈK(Æå¤ Rñ3Ó²ˆ…×|̴蓪…¶y¨¯K Yn$‡¾žku½lKal ¿£°RÁHmÎ;°1ë3AÎÂjªêHK0•çÀáá“ Ý@ó7:y&܉j' N§[iátD>¬Íé(Ke³-’¨qw{MØQ&©0wÆ-Ô#é猛"4·¼¡i«#òÛÜajs›WWk7>ƒT—å"rÕ`ÂböQ:XFÃDÖ´y£¤¨Q¬iƆ“Ô…rèerÐO‡„R[ê¸PBè%ñ0ýØûô$ƒ}b¿7ª{=#ó (%AeÅr¬ÒÜ+Ð2–W?fÄïbZŒÞ`}ö,È%I²:'Ë<I²ÖiEò Rž¡éëâ£Bí¬)Ñaש¹p# }D^â8óO»å…0-ÆWUà†4c°Ï½X}“¼Úf9šÒWwOà„ë^í)¥Gt{É ð~ÍżRX¿v¬èaYËée²Mû¯Õ÷‹›HØ›|w¾÷q¡Æw/mŒV5ºúLgëPyp!4(Çëýè…S»HU³duÂìPô¡IID1«K‡\Œ¨u‹ãÂÕóDnËÄ&”¾ÜëI‰«nöØPLwDô¬¯ˆ&P¼ß£âʲŒVÑTópÒFèè˜&®$ŒhO ÌÉÎÒ`.L"ÓêEÚRF²É/ì’Àˆ´ï-²I×Gw´u¢µk­é+é…¨ –¬ nkîÕù½·r$—?j'ŒcžiçLX)Á0Yáv|°ƒÖéA?ƒ0¦Ò03^GÓ!ªQ*;; L㦀ՖqÙ|à³ØÅŽØ- 3ªÞ4a¨>‰¢ãïC5X"¿`êÂK°kK¹wqV™x $ëB}c!¶š(@5œÕª©†tF9¡”C”VYݵ\Ö|J$oˆ06;¯´‰꾫ˆ["Æ–$%¢\¢aSXÅ&Û×Zl¿ îâ& ”¾ŽÁ/œCEÞ@“E\í©Ò©A³ºIÔEýû1ÍR–êHÕá²{îN`|v6ªïA: ôJ™#ýÿÛ$µI,¦Ä1`Eº8WOMߢªxÎÄð“mðbÁGøvÜŒi€°ŠwUŽ[¯\"…jþÛ 5hñßýe!I¦{3µx$ÿd‚Æ–Û&EÌý"…é‡&ü3¹MîÜ O iPŸ÷lªº¨|ZM™,¤,œßSn¦¤!éwlq[59³QMòÕ<èøã¦+¶‘÷ÐöMI|ØÊDlâ’ŸÕ*XU•ÅÓ¨ߤ*£—Ýû Ézª>”®¯%PîÓ(2}wȉjKý¯åÅZäÐ`2óòu™dôm0Þ”©0 >%(>¬‰EniÛŒÞÍ¿aîa6KÖòš3ù䎉º¢+.¤£¹ ï+$:RðíÃÓpÛø 0Eî¼ñü„ݘÐÐs¶ÁôÍüT$¢Ü(än( Ø‹–"9c0#UçE`済/oÿ‚×±"ª¢TŽSjìxjT¨ÆŽ-DæÀàiåº Ùz ¤@kéêö@º1sÈ“‚¼MOwiºíu×°ÔÏ/ëÕé|^; ”OgÔ6d¡ e¬þ™ºÃ–וIM™2S¢¢‹£¢ºõ¯—Ȥ‘RbY;íÉÿ£$Nu„yIkÚ¸¯ÃS/Ç ò;i9’'’J;·wh-ž&9ÌÈ®¸©Ë›îRßÄÚíCòÔÚ¿VÓvG_i›ïÀ;>Jñ¤Å1í”r Á*¼iº$ƒïSàå›kU“&·ÝJªn“þ㪠šjêmë?"±¦é=òþ™Ë¾Ø?Mw•ìd]ú¨ä~iP™3dU}ù ñ¸ð\ùw•š:õ9Ÿgê~ø+–aÑZÒü è_†ÞF톕"!üëé¿æµ"endstream endobj 3 0 obj 4023 endobj 5 0 obj << /Length 6 0 R /Filter /FlateDecode >> stream xœíZÛŠ7}_ØègCÚ*ÝZ˜é™…<òI8aý’ß4ÛuU·zÖÙ$,ÆöºZRU:uQ·ÍðçýÝÓ`†ïÌC[þœrýóË/Ãï†ßïï̘ ä8´ùõþ.›!$?†Á;;€}¨û>½»¿ê¿ÂtºÇ€Q-ˆvô½çF×=À›Ñ­=¯¶Ù8¦ŽqÆÔ;ÚøqêéöÙSïy²cì0Áמ×Ô_äããÅ™ÉäÑ?ïÜå§OÃ8Ãüýðø[9°˜ZÖ—ÇPIb|+P’„’Œ»ò³Ä|‰U» <+<›Ó³pâÍÇg‰åÍú82+m¡œ)ÚÎxVÁ!’øYt.ø}ÔÚBö QDÕDgËo·œ˜ Aó²‰ÌŒXYËv."Ïð-–M€éYšX‹Ô,º,[?ãv …ÏD±Ú°êÖ"9 `– ™Í©œw0¾ü¼ÆPeC²<†$¡¬[ (äuÛújëŒ €µBP˶°Š-!‰ðx2…%ž·.ÌÌ (öB´beÉj:ñT±è©UF˜ŽIÓ‹½$ZØÜ¥n°¦,]§nwc)#1‡’8×»Ð}Ǿîyï„÷Š)ÑdÆÄÖ²¶¥"òžCGäýÄ*Î2Zˆ í%Ì|!±Êö3®:²è™(:Ú Í¼Û[QèQF®º›³bå8 O‰™Î²dµV1W‹v=±Dd)c ªpOVy‘éà-Š—©xÙƒ¢—®&¥S‹\ó›È!‘:é‘ ØøßvÙ3`m4£°Ž¹•Àl7Ï,<01E—_ cÓ~×ßjÔ6´D`ÞõÿªQÏ`Á—Ÿ–³çP“·d—kíZ©X¢†Æñ­®i¦ í…˜ŠqÍ®€T§îf4x+Ô  Ðaäö¤ÑÌ.ÿtƒÚé¼NQβ£”ŽÙ0ÓVX äþ@zÇô)ñIÜ{ ³2$y|äµ+æa°[}Ž-¼êsÓßtïÚ^‡Ï¾’ªáó¹-Y> (ˆ§bx¤.ÀQGD6P‰ñØJht¤¥µf>Å& ƒŠûîD`5ÒM‹vßzáW¼2§Ú÷øÚaAàZ"Uƒè‘¸ÿÌŸCBGr;/ºú·RkÖ"¤‡3™B‡Å­ZFvˆUºœ}MÙ‡¶Þ<Ù}«ôn¤ŸÏi=ÿö»m;0ÇC`·ÑZsÅ")‡ƒ/°â­Êéêº,ZÖik®“DÀ†"Gçlj`/ÎA±LÜxôÅSP²¦Ä‘úÚ^÷d*á Dê©‹®ÀYRðÆyí2¾ ȉõ;·ÎØ× ±LÁ7qÁëLk=­*Âj ßd 6åxÕfo¢G¯@·W²µ}Õv ôQdç6MphØšZ¡¦sÿ†zõÍüãÞ›žö¥Ééê®Ð­þ³hÕâÍW€ŒÅ8¼&wÄLÕjŸ+GÍà –èn 5RDîHƒ#²ê*ÓtZÏ‚Œ7ìîKˆ¦âÁ%r–âýÐb <Ù¶¥+2ìÄíØ‚¾Óc#åGÝÀ“¸½±5“W(>¢}#Œm{‘Ü€¢~%©ß¢á‡rØ @}Ä0«$NI,“8(I4†—_V©¡OJ Œ¨È뎾O0°N1LÆç´rþYYú€èÙu"»â¦]ЯKKl"ÕŽ •¶þwã÷RˆÃMwCÏ·Cˆ‰ˆ§JMx ôïwK`‚SÙÙX 3MÙÁ1 ª{¨c¦¨¼Æ@ÉÏ!ªdQ‡&oÕ! aGëe‰*ÚK ÔŠÿVˆ¾ÉBd¢ŽÍ[!Ú)DTRè•ûñ\"=‡‘Ï”F±5Gõ°à¤tµßx$ ý’ ,Ú,Ÿ]òøð­ðËÈsËšLoÈ8+¬Ó%Õ@^Š\RÈÑÙùœ’ÿ*œnêX~røaz«c}žˆ©<­Ã¬jSr¾¶úßJOE\nᢠ>‹¶„0üôùþnÞÿðyN —#ÿQµ•óendstream endobj 6 0 obj 1522 endobj 7 0 obj << /Type /XObject /Subtype /Image /Width 368 /Height 465 /BitsPerComponent 8 /Length 8 0 R /Filter /FlateDecode /ColorSpace /DeviceRGB >> stream xœíÝë–â8²P^4Ÿ—Ǫ3§˜É岤PX6– {ÿ¨E ]iâ+w'mžO€÷züU>nõÉÏöú1èVÚ¾ýó\|{pïË“`T+O.[³WÞ\DZy’U}êÊ‘rÙÁ¥lÍ“ßÇÕ‹Šê³­èˆZ¶—ËÅ“d¦­n;> ðk,OJ«žyRv&É졵\kÚÖœñY€_q%¶ú”e˜ŸíÙ¥Ö´ñª?&Ï8öP5–'™g·æI¾Ï¦Ä¨>Ll¦zà×Ä7¡Ûž< |¹¸:‚J|nÉ“g-"Z“´úgö¬[}¶»±ààò>žJŽ"O€£È€Ëúîfvl4ýgo€[™Mòngvl4ɸٱÑ$OàvfÇF“<Û‰‹ºzŸ7É•yòŸ¥Wʧªâ+ã/å¨)‹Â;ÄE½º)ÐMó$è6<Õä #.ê OÊû’UïoV½ÂÉdÔXž¼¬®4–«±qž´†üNX’¾;뺗̓UP”ñ¬ÝP±‡Ï!yRvË ŒW©N•칩n-“'¿²ªýVÚd¢£#ûó$h¬\)‡ççßÔX]n-Ÿ'Ë訦D2OÊ©ææIõñŸ"j2ó¯[1ÜZ2Ož…È“xÅUžtë7xjkž´†w;$7™Ù3ÜÚ¬<é†L'[ïÏ“êTÉÆÖä Ÿ'Ÿ'­xÉçÉ3ü÷¦jžüiÿ¤Úž²u†êÇ¿¿ß‰«Ã«cáîâ<™èúŸ°2;6šä ÜÎìØhº~ž+³c£éu¯§³o/ì0;6"³³ØfvfÀÿ›ýû7¸“Ùõzu?>Vi³ëõêä äͮ׫“'7»^¯Nž@Þìz½:yyq5= [ëqlԦɫ÷tZݲix yy™‚mý˜qBžÄOíÜ€<¼M»úK¿¼h)ãÇ­ù»=«Û+ghí'9¿3|ÕX!H˜xÚÕlòŽ’É“¸=“'­!É<Éo/S™3¾ÈÈkÕQ\kcll]<éQ¶Œå˜<=ÆòdYõe‘vK8ôìn/#qL-ÉÈ‹Òä\Ë¢ŽküLòòf×ë?‚K‘Yä äͮ׫“'7»^¯îÇ׊AÚìz½Ù‘·1»X këÿãPÕ½? @F+7º÷;J6¶*Ù3? ˜®›'e9?—4«ÆU‡`ÎxT7¦€‰ºy²ü±ZïeŸÖ<™9ƒQÁTÀdò$¨è8"ZóTçLö¬® \A7Oâ«‚ji/óWùä.kà²á´ÆM£€+x,,[Êg«›æi͹uTù,÷5ûÛP;éæÉì/Dn#“'Ç]ïßKžG‘'ÀQä pyEžGySžTo‚Ôí¹ê?ë^IÂÀ ­ Û&\λó¤[D­n­µõì/Z¹“îp¸ Ÿ}ú{òåyâï}8Зç p yEžG‘'ÀQ^7À?ñvûÀu#åÔ»íwöþkø4³[È·›]éçïça–ÙÀ‘ä sÍ®Ž$O˜kvp$yÂ\³+€#ÉæÊ¼Kßq‡ÒC¦ž¤zwÖ`Â=gÏÝßSž0צ·îQ‘rÈ<Ó´îý¦[;ʾÇð;¼u÷õrÔªgæÇrõxT²%8TrWñ«“W—ÛósÊæ*ß“™Zx.þÕ ¬ÁViÄåùI‚ý´~­3v§-w»ÿ\’'ÌU¾'»µy“çK¬U¹ÝòiMÒ-ºç¿‘O’?cëKncÓä­9å sUßçÝZØTVc•Û-Ÿî„A!W7–ÙÕ¦ƒ'_ÃÌäÁV—ä så–©…­e•¯ÜÖÌqÏî¨à,™] <³ù±³/ÉæÊ—ÛXYm-ÀUŸIâJì®8ЧºçÖrÝ WçLMž0Wùžl`µÄºE¯–FPJ­Iºû N”ÙU\ݙ㴶·lŒWÏMž0WµÜؤqç“'Ì5ëÿaªW;ç“'Ì5ñÍÏáä sÍ®Žôãûטjvp°ÙAñÕf¿ý ¯õÿÚoš¡5gÐÌ3¼¹ÿ§ð2\ŒÕy’¹õÇÀN€ó•ÅX½bY5¶®jºÝâåƒî–ªG¦hé³Q°q'ã"ž¼ÚÞUæ 0K>OµK‘Öl«?7åI¦Ck0Q5OV×ÏâJ£¸j òd5•)u¡Ú¡:çáyÒÚmë\Õô)°Õ›þûÉ3‘'qc~Tu¡•g2ªŸ?YÔª¬‚Ærø¦9«=7 àñ¯­º|>8Š<Ž"O€£Èà(ò8Š<Žòºþ‰·Ûn¬)§Þm¸³÷_ãÀyfÿÎ0»Î¾ÅÏßOÂg›]gßBžð f×Ù·'|ƒÙuö-ä ß`v} yÂ7èBõƪÜÜu⮪^yò¨ÙôÏkkÿó‡ºþæÙ)®‚Öž/âvyòk¸².^’ñö.¾yö‹« U›åMà—37„ßÙX}ªìù¾ýd¾ÔÍ“ßáAcµOµ=x\]bëNºÛ«n Ü9¦úæïÖrYJg6¶¶WýqÏÒA†tÚ”'^õU‡ÇfìlLnžçɪH«US-«²[Õ -Wööü_íWK~ç*«³wÞšggž´fºÆ-[wÒ"O¾GµN÷—UYò­ÙÊ©VCªåÒÏFžìY¥pérþîBK‡ü~çÏ¿å™û§(üV·­;im/Ø@¹s>LõÍOK™6É>Ë7xOÙ}²î¥H•<ἯîX’'|ƒÙuö-~|3_`v}‘ÙuÀÛÍ.2ø¯Ù¿‚ƒÛ˜]¬7ðã£h3»Xo@ž@Òìb½yI³‹õä $Í.Ö'Ô­¦ê=….e`{{n]2|+¤V#|ŒMuwÁHYn)¿½á<©FDù8ߟd¬îZU\½TxGc¼½xªÌž—~óäQÜ>ñ<…juk¹š'§5&ó¤5ÕòDñü«ÛÍ“Ã[{neË™ÿý䵇àÙäXx‡­y²,·­eÞ `•ßÇÕÆrìXc°çx“/‡ü~çO­Þ«Ï>z1ÒZ«º78P3J¾O™6É> /ï)Í»ê^ŠTÉxy_m~y/³kñüøÂ/økv-~ˆÙ-À%Ì.D¾Âì_¯ÁG™]Гýø(gvAO&Oà@³ z2yš]ГÉ8Ð삞LžÀâr«Þt¨Õí¹ñ¶!7¾uIò®G­Æ?îVÄ×;°6úçgËÏ<–'¡»2ÆwWƒo3P›å5Cy}<[>¬ìjÕ!X:˜ê¨Šóäãù|,hvAO&Oà@³ z2yš]Гýø*.8Î삞ov¢Ãç˜]ÍðÙ¿ˆƒ˜]¦·ñã“oÐ3»LoCž@×ì2½ y]³Ëô6ä tÍ.ÓÛ'ÐÑ£pl‘÷J:v¡ýVyrÓ['å·}Ónò g‹´5OYÅÕ»!4Ò]hkžVpYï©ÚKë^ŠTÉèz_Ù~˜ëä \Öì2½ßü=³ËôNfg?\ÝìàsÌþ|‹Ùµ~†EƒSÌ®õ3È8ÇìZ?ƒÂ3|ýƒÝ¶NÍ—;0O‚l=Ûml-Z>ÔiÙslc›ÎïmçëÖÚUë웎°z¼ª­Sóµîž'Á>˜§\7¨Ç±óv·4üºµŽœ}Ó––&OÍ7»užlª©r`r¹3Ï›œgÓBG(_Ÿ ÛþçÀßï¼£¾ö ?jq1¸ÖrÂü«y »“TWw¼2pìçOZíÏÄ[·õþ'/7Óª©ä$Á†[•Õ*«`o­ÇÉ—.ÿ"ûÏLl588_ë'ñ-6>[¥š ä 8ÆÈ¸߇Å÷¡G¸õKõæÆo5ëþŠn¿ Iòä‚‹ÂMåIõ{òÏÚ×4Ä=ËöÖ<; ÕseöŸ\+Ó!Ù³ž'«ö ±:U«gµd½ØÙÙØê³\:Þô ˆŽß7pIG}º<¦ð}èÀQ|:p”¯ýþâøÞÑwëÍóÁ¾3On]†·Þ<ŸíÖ߇¾š$žmõ Ûa5OkÛÁ~‚©ªód^“î‘ãá™SÀ°»zY&›¦{fFeVßÙ˜ÜÆÎá°ß­¿}Õò¦µ6S>îVñi¯Þj3p [úªåÕ×Ýöjõê³ñÁ𷞨º Øãc¾}xÉêkm»µ™êËôÜùš ¿zÁ‰`«ù>ôî¢cÈtØ:dkãþW/ ØãÖ߇´tËg guÛåêÃóë=»sކù>ô+óêq;¾ý²¼zsý{“Õ endstream endobj 8 0 obj 5771 endobj 10 0 obj << /Length 11 0 R /Filter /FlateDecode >> stream xœí\ÉŠäF½7ô?èlp9wI0j½4ø¼€ÏÅ¿ïT•b‘"2µL·=Ó4sP•"##^ìQmšžŸþnLó£9Ø&Y—ÿoûáÿ/¿5¿üÐüõøtø÷åç§ÓËóSošÖô‡¶yùµùéfëš—ß›OÞÿܼüùüÔBþrþì“íM²Ñœm÷øÄ¹C7~dÆGáÐÃ÷xéÉÉDÛ>žvô4;Ozs6ùsItL²G2¡Óã#Û<Ñ9>öù²ã³‘‚§Ón'éààR7à3ÁwÂpÉñÏ϶s‰9Ë™ŸHÉ;úp¥”€(Ý ¸ìˆKIëÔØ·ÎÀtOL'` V^ä’%­åI`Ù*’ñÅ‹Ù`±c‰xðeüÁ7:¡G¼=Þ Ðý­¥Ë^€ßžóàÂ6àc¦u˾ Gµt¸Ÿ +¿šÍ€õ„.¼›¼m(jÒ&ž'=Ž¿f‹ý,8:›-X³c“ª/fëOý`Ó·œ(Å2ãh¢dÎÊ·t¬Ü$Ó°ÎcVÉlÍ2%Pû²]E½š¡Ÿ…µ *¹8/‚*qHfYF #v’ âþR"oo‹k @\ˆy™¯±Úe›ÅkD†¹½L“®:!’9"½EŽÒ1GizdØ%¨¹ì>ÛÈx¨«a< ó‚â$ô”ÝUÉíd‹kU²ÂítCþ0{K‹j'¡“™êáAJew»àHÆâ`)wÆ0‰K®Ýø{šâ©¹~žYYAKº5nåÔ.mVû°MNwtèõH”ò‘$ç|÷#‚ôânÖÓˆ´~j,ù;Ztbíz=™!µšÊÖ^,+éX²TRǬ„`" ë,!ëo¤8èœE¹2iËßS\€–ž£TRŠH È_ôâÌOà <ÁÑ‹† `ÁA‡ì0ÂõÝoŸ€¤#’µÌˆe=u÷“A»!Ûiî¼ *)Š:–®uœå§€ñÍiã\úTÃàY"fªê>ÏÓµbP’¬TNœ[þ Mr½×q˜qeQQš4÷Ȳ»s€EŸëò I$?ç:‡Á“9ºé°,4BTµ–,1»Y;Øø mœj­€¯2sî÷O!¥jºM£•È*7NEºxdEÙàvÚBJ­NÁC®Â|œâ† ¾ Nï("S,cÆ/¦+1 Í„´/Úh¤Dä Pvä/d£ƒÍ ½?u-Á[Ký"¸ë¸@³„—=ôj—Ëe‹BwBUZ àYÞÞÖÔ¢êqQY>ˆÜÒ]÷)K!õ ˆÉõÜãrÉõ«$ç÷InðÝjÌRX³O– ©ïøJC@–²=:VˆžÿK‡Xr`òÞ¬âª0\†»§Ëh«¦ ¬Hð[Tºi¢néö)]!•¥B¹‚#Þ…æâXÚÑÛýµô]\”8J´â“ ™L˜_\9f}¾e°Hª4†±›XÖQèCFÓLGû²TUGtYkW•=yÙíDæég¥)*ú0üÀÛü@¥s²­zC£Œ 9ç´-ᘓY4·Ð-²þOÒ&ÕJÒÛ¢W©¹µ§² ›U0L|:T@'àf2öÓ.ÑMr¾¾ˆ^ÔZjeÁ(SÂË>½iÄ7jNé =ª4ÞTé'Þ§2kÜB?®"ÂÖôpÎûD¨ßyøÍ¬6Æö´Úñ‰œ(3 PLüjé½oà‹ü=ÀƒþÍV,^éZÝwÁÈbR€ƒ îmàPˆo‡4mé¤éIÙ‘{N|ÖÆ;“¹ õWh'çÛ¢c!µ³Ótâ¯iºÔÙ*aÇ^¦„ŽÜšŒ°6›Bi?«ç´þϲØ53f_ÝhÄ_)‹Ä ƒåbrðMt•|—D%«äéf—Œ5âßCod8x’ÍYÞÂEû éæÜÍ·°ñ䘇‚õX æèS%0ò媲ûÔf[w.¡Of¦A‡µ>R’b¨¥H6lxF‡¾kqÀB_F¡­!­ô-Û!Fʲø e/ÊÞWêwX†`£-ÑŒ|´ËðÒLÃ"Þªj “ÁgËéžØíòÈÒƒ°$"à`ë²È£]‚Ê©•QJr'}êÆ%—Ùü}sˆ©’ã}Å¡öºè×í.“ö+X^1üšÐÓ™Áº¸“2(SšâòFŠIvÁV[Áê#i¹6ZQ–3Ò}m¡ãcVš¥>¦Íª¿æÃ4Œ«†iï9WDLe!Eî=mÜ'tséUb¶Mx%¸ÕãØ& Ü&«7«¶ „ JÅôÌÁt­ï5ÙCDj]ÏWÚzeeÐz¡¬ãa/‹Û ¦5o9[Ð)úƒ.ÃIµíeà½ì a§ñMõͧŸùµs7éoq+@U²ëê|,ËðÐ|…?Aª@{‚s ˆbÂlÓRMΞ¥Ÿ~íÕà Þx¶½QL£´W$ Â:#—ú° ƒÁ>Ö<Éùmˆ›Ï9x^Ki`nÉ€¥Í-•ô—÷µJæn\>J5Ües·½è¹+Ø^·I¼vÊ ¥ùžJÚ¥x`+g‰gá|ÒÄù`¥¸ÿ“T…l¥¾ÒFªü ÇA[=&ù³£¨€•gXÞu½“¿c:ÔýÇ.gëPb¬(õçJsËÜ¥.Ú+î°1Ä ÌÙ,°:œ€›ƒ\ýâ—´öÅΆ‹Ø|‹MÿÀ}ÝÌM ö^h¬›vR¼’HR½ ÔßàÉÜM³Ákå!8çä)¨ ñ«px¢ë§1“'F UƒZ°sJV\Ø¢k eŽP²ƒQœì_*<ʦìâlÎ\ŠÞ zïÅõ ALÙ"œ×ëÄ“«àHÅÙ²ðf¢]-O¯džI°³\MåºB{s–÷Þ{_^ à2ó }v¬¥]™vRh ¾<©¨Îvû ½÷á;¾Úwxq:†!/Î*Ci…¥×nS7½÷a©oi©ò;ee朲èå<³R©.?©I0+]ÿC<›ð9›PÅÞ{_¨úÈJ3(b»ðÖûÄ·æf*j V¶)ŽÞûPÝ7!¼?ì²Bzï}ewó?Ú”\®œÝÕÔTVœ‘™dµZ“ŽÅ[©Ö*¡bñç‘}eågöNj 73 <©~ÄYÚbq&Ì™!hGÊ¡Ã|>é7±]ÓQPŸ›|â‘endstream endobj 11 0 obj 2450 endobj 13 0 obj << /Length 14 0 R /Filter /FlateDecode >> stream xœÍZ˪ÜFÝü³dÒO=ÀfF÷î òy@x“ßOK£ª:R•zúÎ!¬‘º««êœzµ;ýóùÓß'wúÑý©ó¡üÛó¿ß~;ýòÃé¯û¯óŸo|þt}ûüit§Þçþôöëé§WòáôöûéKô?ŸÞþ,?ŸCy¹üöÅÝîOÒy¤'=Ëë³Î ÷gýy¨¾ç=½—èÙëýIGÿé;ŸÎQ>ìîùðæâú¢—neßUEèëýQ'°"ïîO²¼•|.K^]¢½B<ë+ɲëî,B')§òÞ¥ü›\–¥câH6جsžä+f-Gµö¼fWþ²t!ÈyÝêœi'Oކ‘¢:By²w,O':ׇNÖ»Ð÷¾—¦àH{¾:«›Ìå·?%Ù3ÄjVÁ‡f ¸ÉÓJh"׋ҋD´…Oäy/"_5j²ïÊ*p\Wý°À­gÝí¾"Ý+±‹ŒÓj©xîÝ“¬¯Œ ‡Ùmñƒëìxá•üÁ‹aIÁo½˜š‘á³ï×FñÉnõÁÄ8k¦"â… î•˙岂†Àr. CñarÁ¸ü¹(­÷K‹aX$ö¦øÅƇñª€=ÖÕ$t7¢yIÍùP!ÅLׇÚeÿ­ƒú‰$#|°Žw©¨ÌZ*ND âÏwþ»¡ªŒYL ƒGÁKðì=ÑŒH - å: s²—u²á‘— YM\¡Y)!W.ÈæCvrHå”$S®‚¦FÑxzÆt¯Ñ Œ]WŸô÷m°¥Aé>ÔN5ÐÙù»aoˆr‚+}׋h/|ªt,[¢¼ WÊþïr gY´4Ò“¹@ÈÖ^ëëQÊybÔ Ý<ûÝîC¶{ä+‰Ï¼¦½/‘…Œ aÿÌðî*GV1Àì ¦*Î'6VÜê»üõ”~õ&ZÝK¢Ñ@¢iŽK;%{'‰KÅö/1Å00†bÎ6" u¶dÈŠÈbǼ§´ètB¯hö¥e'fÒpd#¤…P2‰ ¸‚{“¾Æ¼dÅ©"KÊƒŠ¶¹®P •ë>¡â^}³…® ¢Ú‚NZÂx¬ãÄtFjãœ:±¥sÖ*­(TkÉß«&Qóq&h¸W‚bˆùdüÚX…h*åu6!ÚÆ²aϱâ^4 ‰h5Zx×±o_ÚãW´èK ÚWÕ¥Z±pˆ~;1Ѭ*¦_X‚Ú±B'u–PH&Ewƒ9z^­¡º(`J’VUR”ï––ý­îº„•(˜ôFykãðNõ{9©t&ÜHñÒÛJßwá„Å©pm®ƒoˆ‚Ú€çg”ì>Üææ±Ò·i då”â!ª2áàѧn¤=pRÍò7a‡|B©åÕ‹–ë*(ãgïàÑJ.äfßÜÑܸwó¶\ÈX*¾’ΘŒ8+ÍÊ‚ìÕvVÊ„ mäU‰éwæÑzÅA#8$3#*[¼¬™QçO@?>@TævÇ&ËÖ+êlˈMÒºóØÜµîØ‹¸umÇã® Ó/¸€n`_!‚Œô¦ hs£^ö’W`wVv’ª>~ô3±ZÀh"Â<Ì\³ýÐp¨%}b©XÏV*™5-à9ݾÞðܾ69îc·PºÄrpD»ûmhµ0“LB ”¡ ÆAÐÐãZªvŽðèyëws(Òn.ßTBoXö¶ÄÅÈG hIQsW9šÉROÖ¼K_[ÂÁp¼©¶ãU6 ôOy@z˜͉¡ä6è³HxU¢k}رç ¹ój¶žëŸXKÅD¢3ü-¢1ÊŽïE>0%±šЃÄd<zQA'i_² µÿA âΜö†kñø8¿ÁI‹ÌŽ&€W¨‚‰X·f¯£“>^[X¤&œ/²«÷˜9M0Fv1ùrlx{bÛA&`–œ«1 `*Ymýy³EÊѶC“ðˆÈc=9(Y =ck½ù:ñä0g†0Û+ º©­ÚÇ$/Ê»¨¤´ÝDw£¨heÆD¾ 0T÷7#0¨ µäž!åÑò¼&jiÆ+?ßi è‹W0ëàlm\(޶øÑ:~Ìòqv™Ë?7j´–ò/ zŠdW+µÔ(Ç'ˆCÑw½í·E~~Áš¯¡ÔºÀÐ Ãéoetb @t€j©ZüÙiøsiUe”à“t!<ì®ñ¦Ô¼m6Ê÷oʘ²ùÑŠ¶:ŒL›Ì ×nÕd 1Ú~±fOö4œ/{ÀÖ½‡w{[Ž®éÏ"D£ô{0 \² ¹ma xÝu·o`ìÆ °n<&¢¯¥òrýörAú7’gý!`yN’À-— î%Hçxs/e|ÌÔ®WãàðòSKµåã0îSØ*ìoKÂÊ…TØ4¦ˆ(e¤!ɵj4¤—û.Ã<}ä£=j­,£ §×¾ìuf \GØ£½qé$÷«ÞÓþ@½ÿá˜Ofqµ„ò½Uh©)Aâø&›QÍÂ=h!sȳpÙÄÃiLj–²M> stream xœí½y|TÕù0~ιwöíÎ’Ù“¹Éd&!HH!!’‘=`‚‰dHÈF&aQÔPE7´-.­Ôº/P¿P¥Z ­V+Õ‚ŠUÛ"´¥¸fæ}ιw’ ¶oß÷÷ûã÷ù}œÉ¹ç9ç„Æ[¢‘æ9]¥F„ª¶Aã[ £'ñ¤ éì–öžu_ ù› ý7Hÿ¨­³)r˜¿ú,BÕP]ÖY×µRû3ÒÐ?;"íÑÏ\iÀý¶«3Ö³å%Z}˜–wuG»îÿì!HÃø´0|éG ’¦ Ç+”*µF«ÓŒ&Ál±ÚÒì§Ëíñ¦gøÄÌ,6úÿóGq¹ ¸#DN„’Aø˜Æ‰ÖäÇ´œÆä/€< „AOâVô$:„žÇç ÖÓèêG¿FT…~Š6 ¡ÍH‰–@ÎMh|ÿ#ìJö£´ di: ¸—£kÑAdÇÎä'è:´‰{jmB”…&£y¨ÝŠ/Kö¢zt’¿•¢ËPêÂ}ÉÚämÉ;“¢Ÿ£ܯ“ƒH‡Ü¨ ¾G“Ÿ*þ|†?F÷ “øNÍ>†^úó>Ôîåxœ\‘üF‰ÖÂx4ŇIZ¢°oà¦B+$ãÉ#€åE ¨Ý‹âqx:ÉTÔ'g'";ô±Z½íAûá;€žC'°^q.ù`òr¡|4æÓ~ƒs‰Á‰JJh Ò(T%èÐKè8öã_’N…^Q¤+®J¾lh,Z£}jþF®…ïuÜ‹ü´ädºÜA©~…ÞÃn\€çâÅdé$?㺑z ßfÔ ô¾ZÿáýDOŽqðó_)Ó§’FàHý݇~‰ 0SÇðð›ø2•,%?!ïs?âå§ŠÀ¬¯DíèVô8ú [ð<_[ð¼ßïÁGñqü1™LjÈ*r–káVsÏñSà»ñ×+nTܬü8Q›8’ømâ³dQòF4äa#ŒþÇèg0³èz¾'ÑûXuØ_gâEøjø^‹oÅ÷ãGð£¸z9ŽßÇŸààᯂ¯’xH&É‚¯Ÿt“µäGä§ä|“¿‘/8—Å…¸q\WÇu¨6sÛà»{wóÇø$йH±]±CñˆâqÅóŠsJ½êj¤~íëóÿ”@‰-‰í‰=‰þä{( xè*øPŒ>ß•Àïí qO£×±hçÆyx¾ (³¯Ä«ñ: ä ø^üs6ö§ð³@¥·ðY³xÙ˜Çqd ™ ß+I”¬&ÛȤŸ¼I¾äTœŽ3qi\7kà¢\·žÛÎŹ׸w¹÷¹ Ü×ðMòZÞÇgñA>ÄOç—ò½üÏøøõŠW*µÊvåÊåßUãU“TóTóU ªÛUûUo¨A:_@ûÐ/Fê<>Åm䪹}è6RÌ»ÈoÈo@ž—¢fn6I%à-äÜO²ë”ÉD<ãƒ@ëÉrLäfãYx!ZIÆJ­)mücUð/ 3ü³0·ß@Ëë”z|-9«Ô£=‘2èóW\!â^E'¸“XÅïBäµØÏ‡¹y Ïñ“µ(“û)zŠ[¯AûH5Xì¯Ô·€ÏÁ]¨ÁEøs.‰82¤¨”û]V‘? 3 Ç[Ð]¸™_nCÅxú=Z1JÑ¡ÌS¦á—I+¿•Xq?"ü£0»2œ9… Ý€¸{•gÉÛ¨ãµèOÜ0úcä)n6N±·€\ƒnD«“ÑzE-ÿ;¼qx1 ð§ÀºmàŠøLˆ¯«R6m?h÷A°“¹Ùãɹ äbXˆ{á{7Ø $¨tür°b¿AýÊ2€V(Œ¬Bü«‰hIò!tOrêHÞ‰Fƒ=ØœÜ->‚>D·£Gð¦ÄÕ¨ e€æü _¦˜FŽ)¦%G“­äm²l¿˜¿@ív¢¿À÷)HLR<ƒ¶òo¡…¨2yKò÷ ݹ`aïAËÐ¥è4ÌòSèaw'æÝÉi\Ì÷$šŸ|8éÃZÔ’lCsѳèç*ЍBá©‹j&‡+']R1±¼lB鸒⢱…cFç‡òFåæÙþ¬LÑ—‘îõ¸]N‡=Ífµ˜“Ñ ×i5j•RÁs£üjÿ´F1lŒóAÿŒ£iڌȈŒÆ¸YÓ.Ɖ‹ M¼3 ˜Ë¿–0ÃC˜X+PÅè|±Ú/ÆVùżd~-À·VùëÄøÏfð6ÎÌ„ bµ³¥JŒãF±:>mMËÖêÆ*hn·N;Õ?5ªvkuêŠ;ü]»±cfqT—ï&Hm€AÅÝþªê¸Ë_EGçÕ‘æø¼ùµÕUžÌ̺Ñùq<µÉ¿,ŽüSâ¦CASY7qåÔ¸Šu#¶ÒÙ ›ÅÝù‡·Þ2  e!}³¿9R_ç"u´sú­Š;®:íNBã–©µ›G–z¸­ÕÎV‘&·nÝ,ÆwίYšIŸuuÐÔ%i[§A×·g-¡7²©®6Ž7A—" •4¿¨¿šæ4®ãÿËÖ•À÷Ö8Z°>sÛ><…ÜÕâÖšZf¼Ò㯋TywÛÐÖë÷ºÂ¢ëâ’Ñù»³DØÝF“ è #èPƒ:…f-¢,¦#òψ‹M"Œ¤Ösš@Ñ hkÓ@ƒO†ZñfàHk\3µq«PNóiý¸" øÅ­ÿB þ3»8'"ç(¿©œ ‰”§àx(ÏË£"¢š <…1Nbéq£ó× ¿¿K!ò¡y@ÛH]y?3“2øæ0Z‰xßüZ)-¢ež=(\ª‹“FZr8U’¶ˆ–ô¥J†ª7úA’û™û›W‡þL‚ÝZÝRÇöÿP•Êg-ôÏš¿¤V¬ÞÚ(ÓvVÍE)©|ÂP™ Å­Sk9‘!âáX)eý2MÔêã|þ”L¨›TjJ–ƒÅiq¡q†ô¬Óffþ—•’çh- W“‡/]œžxQú¢áé·r0`XgÕ,ÙºU{QˆšÔáL9‰G5µ™âÔ8Zš€¿äá 4Ôyâa ÙTŠò'eÉÉ‹=2\*£ó§¡Ûºuš_œ¶µqkd Ù·Ì/ þ­Èóäù­]Õ)ÁH¼ÙŸvKЪ—ƒR4e·o™¿;Œ·,\R{6gâ–šÚ=“©SêvgCYí¡0Ë%4—fÒ„Hh†Iî!j†ï9F¨•ò,ƒ¥›0byêTFMDÊRyòx)/Ìòè‡Ú˜©5µ#¥‡©dÝhF‚™ó¬@àÃN1ÓœiÀÂúµÈþ:¬@_!‘? ˜hs¢•Ïä'! ÊÀË·é…ÑÂ%Â,¯ã"ñ‰£ôþô¢´¢ô)é]â6Q]î(÷\ê¸ÔS§¾B_ï¨÷¬T¯Ò· íŽUžÃâë¶wïº_Ï8m;qJLŠv?Biãøra©°DøP÷×ô„ 39»×«Ta¥ÝkÔ!£+û¸ Ú°¶QÛ§åŰNG‰aƒ,Ò$ÿÖ™L9åô—ýz=>í×é”8ßo21àã°_¯¨[‹I±%€ÐaŒ·á8ŽÏaÞ‡+Áÿçð@òëpºÑHa6‰Úh§XO›Œ ý‚À€¯ÃvÚ8ÖÓ†±Å`€§Ë7½Ô‰Cs„ó¡Ô§auwÅlaðüiap8ë ª¬<æ2KÙØBÔ€ ­¶š‹ÓÆ/.²Ã2O”þ¬`Ž™³Ù‹‹Æ+ ú³”›,¿³eËñ•½'¯^rûóCkÖ=þpOlw¢UñÜÖùóoIÞý@â«›/+üŠ{ðè‘Wÿê+oÑýùõɹSt'Šç@îäá°&ÍQBD«½Äj.¶ØJBVœ­¶ÚõØj×)‘Öìåt¨Øp:ÂÅãKÜaA ‹¹ìi¡Äq $ÿÖQ9xJ HŸÆy6JHNËÒS AúBØ@©”tàÃì˜ãM §•Œ/‰»Ï¹I—{§;îNºy·> ¡%t{Nƒ‘FÔלÒðùy?íŸa3ƒ†õ¬ÑÒ^5´}Æ ¡½hí[3Ç5}ž3$\"zèŒ †?ƒ§åDEY6S^L]vó‚Ñ`2¥J­T+ÔœRàõdP›=…p(/o#0 êfŽ£< æÇ™‹Í6‡rj<…¹Ê ¿¿ò¹‚®_gî˜?ÿ¶‰ý?íŸÑ>w\ŒÜ9¸÷Ö±Óç/¼} )ûêhØÉyŸâ P:î ÿ+ô¦lÅ8EµBQé‹ûˆÏ—å-öNñvù¶ù”åÖ {…û2ûeîuƒ¡ÖÔ`¿Ò½RÝfh1uØ;܇}oëO8N¸Þ·þÍñ7×é§|IŸKT˜ l…ŠJSXq™ižb¹âDú¿ø/½fä•y¨ªiÓ@ÕœÙÇu éa]£®OÇû˜ŠéôT½tL½tTò)Í8ÇÔK—R/NõSÂÓœp%¾®›‹ãâi*æ„|·Î%oG(Ÿ~„òY.R¾Ï¿©|N¦|6Iù2@ù.Ò½!å …¾©~Tû*Íeæ‘ú—éæþe4ù³r8`êöáÑ÷wï^öôêpâÏ=»Š”,ºcÍ?ï]ó„âàà¿nŸ{û+±ÄÙÄ›÷áí‡Ý|ôÕã/¥º X ÜåÐûãéL ß{K'”°¸dœŽ•⬋ÃÐP“Â[ë“ ~.<Î)8Ÿ¢KѧH*x0ßZÂ0’[BL—ŠÇ•ì@ø0:2…Dt{žR¾”H+³DK‡‚l”¨HM)Š(Ÿ’IÆKDi¬eÐþ"EbT¥šSFll!f)ú)ê]߯8øå4ºvl¹W°¹«ÐÑð•6ý¹šmšš¸æ°æ¤æœF…4>M—¦O³CÎ:¥Ij´>Ð|ØÑN£ä®ÅH©PòZ¥* @ü~'çó§xåaþO/òÇ!Åó©™òt¦:SžÍ”g3åÙL¡ì/L|øÔdù¡9òsÔÏ‘ ›`Eåj¨ ”ÑÉv¯Yǧq0×-ýýýü_û*~EmÑ<°µg`½tã%» ]‚Ã%ÆëLؤÃa4v›â-^Êéåuؘ¦RÓª˜´«ôt¸*¶Ô¨ è޾ñ"•Ò3‘†"ÆzÂÓ5zìóNµNu,´.t4Z?!?áî5<(<èÖ« .íJÒÊ­Tôê» }†‡ôû4ûµûôz»þFý„3f-5uš®3q&<@ ¯/DtP0¬mh'ÈË9¤A&“ Ñ CÏ6ª)©ŒY˜_¶.äÃÀŒÃL!ÃLg0t3œéMË>¦Â>U¥Š¨ŒI¥¥H* ERõ”‘É Z(‘»¡[vT L´3ÝçCgºÙÜ-e没á4üQ5] ÂV‡J°»È\b¡K¥C¤Ú™ÆÖI®bwúÙ§N$>ëþä¦'ßñ=íºnɖǼaåmx“ãÇp:Ö>ÉÆ§wyVµ½ðú›Ïÿ€Êé¥`½À³\TJF‡ó5MžËàÎeÈË+3ŒO+õ”çÍÌk04ä­4´æ5n5Ü8ê^ûOÜÒrÁ­`–0‡ú. =äz,w¿ë™Ü#®c¹¿K{7W]eÇÔ*šéô-Œ æ0Œ£^D!ŸÃç åç•”ñeù3ùù‹Õu¡åêÖÐýfýËú/ _„Ì¥%FÌ Ù%Ž¢L›sé¨ÎQd”·ÀXi¼Ý¸Ã˜4*vŸ6ž5rFf¯’œ3à|8RߨgØ[)h>^ Z rW2~|)ûŽ+É¡¢¨Ê™D¨ç°§T:üAN©2I@‰«h>°òég§ÇfŒ[ub.®ÞrÝúô¸³ãøM[›'hYÏzËŽtÖµ·¶ÜL¿~Ñ´Ç7ÍÙ8Çf4¸³ÚŽÑ—Ô­v®¾yV8ré˜uç¾ÚtÉün®WÈ]0£ñй—¬-­+´$ºs„¯æ³lYåšK5UÙ‹³¢Y4·inÈ~ÈúxþóœAãp;…³òßt(¨}Tÿ@΃¹{ƒ¿ Ús©`PFd¥ ÈN ‡²)+øS@v HHþ)lÉ([¢Î èµ¼[ ¦ñº1énjIJ\ù”í>W¥k®k©ëi×1—Òäò¹:]']¼Ïu»‹¸ž9NEŒZ—°¢ 8Œ‰€c‚°€ ¦+©Í^‚™ïi4—`<¦>½-¤{ÓT¼$ÞliùsjùøsØJ%œ÷ŽÑùÜØí [%E´z•K—SzRétÙ©tºDZÓ%ÒZ.&—.;¿ Tc*;ªîó–ÏÃy´Z#Ú h þ²ŸVÊs³®2sòJ‹‘Ê¢¾"R$€UÎF¬O$°¥\”¨ & ÐP 좃³Ml­1±á™DŠf¢‹§Hû4i‡&f5LY'®DsÁTºÆ–HVÃêÙ²òœ @Ô=GV«Phuhö°jI–âÊ3«™ZQo|1Iº%«8ÞáœÑ~…-?h,‚Uà”Yу4¹*VŒ†G† ’™F¿eù zõ(­çæh´ÊïA>!݃ ¦B¨ÔEå…6n܈Fx.to°–Ú%Ç.'˜3†€—JÛ®¡ÅÄÚë7ÐÆT¼r馫7¬øá‹÷Ì…¼&{—éZ›‰Óq^—É¢Ô)­a‹IÔ…õ¢‰ñÇä*¹ßu;‚`МY𨨪yöš¼ØDÍj»·,×¶Øô´– Â&bs KúPé5»ÁiÉÑåès ãõã ãŒ÷˜u¹–\ë {¥ÎZ—Öjiµ¶¦­W®1¬7_e»*m“a«ùË-Ö›lwkÑ=+hû‹ö#Û¿ ƒÂ¶¤7ò[ÉFm·ê¼ÞTeº|Q×ÐðÙø€Î Ìßö„KM&½`¶X´ˆsÙ¬Ö€Ekƒ„Io2ë:-r­•:T:%my/)ðòï©ÜgZ„m¤&¬«´„-d©å…Xð”ý&œ…ª=ZZĨõ…ú¹znž>©'zÀØ[^/´Ñï7,w†€xƒ«Áà¹g<ãΟv §Á3p;…3 BNð*¨ÉÙ¬R_#Ø2€`&›BE…úȬ¸qᬸÜÜg>ù1Ò%?Æ&ÔÕÁžbj=¸¾¶äŸö—–i³JËÀmûx_Z™9+­ŒÊd=¯@àqà†:kŽäDÀ[AÊJ­ÅX©¢Fê:ÛÄüŠsP¡K´?ÿn(Ëú ?Ñ69»pÃâ’ÄŠG…ÜlÏ*S:Ÿ;xOïÆ kȪ¯~ýô”º…T® Áå?;5º)lP ž#ˆ]-iHl¯Èc~ã_(EL 8̼cÑ èÇÔßTSyƒô?ØÒÀûlÝA)]±½„ÕûïÞj5TÀrR! žnø3%!Ýq VŒ-Ì4gŽËLË4k"ßšð( O>ùå?©¿> üõ °ši(/ ;|È›Fq ŠÍ"]”[¥èÔDuê4êJV+y:¼€Bé^ú̱¼­øÒvÁ͵”»Æz'[f»'{ç[ê] ¼K»;â]§\—v\p ÈŽM‡cž½ÑÞeçì^Ó6a§@÷xµ*tPò'R'à7PkD×à[açäÀfD0ÐãHÚµúå”НÕ;nÀ·z` Ó©ûëÃ>{±­ gç•ÐÔ\§ÙÆyº*/Û0J›+/ÛV1_BåÊ(yþÑK7Gé¹ÀN¼fÓSA0S§Ùƪ¡bpuS5 ÛØ2†Ww§¶W*.Bf›*“-•83Èœ[îʃùŸø$qÛÞù=6â¯?ÖîÙÔtËà 2_?añMÅ‹ôcæ°ç&þ”øBŸ>Ø‚|ãÔ–‡è2ù’§¸9Ð -ÌÜ,ag~“èsÁÞRoÐbÙMȤUÚa?b²P6XzœT©«5Õª.UŸj›ŠG*QµSWVW)U”Δ*é\Šÿ`› •´†É£!]ÞØ¾”žêèú¡R2RRo‹Qó Y‰œxüîåß8ú8Z8"*œ>_A· ÒC\sq±ð2%c(p°cÁqfÿ¸bs)¬~³ÒîË*–µåßpÃÞ}û¬¡ÜŒ];„IÑûIÓ-XÕ–¸õ–ÁÎÎwS}\žüH±Fñ:JG¯ïk"+Ó©ƒ*m4™Ê-¥ˆŠ M°uïIïC7¤oC÷*ç~n8Àõ^2G§Óÿ™n6ZÒÍéé\ž2לç}Ó ‹m—§-vµ(V¥_m¹Ùr/wñ^ï#øAòˆù÷F+²!·`ÜÄ‹vŸzuôÎ;ïOœ½ã™Ä'[Ÿ¥”+KÌ'€ryèêðìé&œk1™K}¨œ:cIÀ{ŽÊËÓû¢ÕЛ z½O|Êc1®rO È•+žÊË)>•—·Ý§5ÔÕBe€ZªÓôüàÿù f®¤SŠ3e˜j‘´9´N"–ÒI¤t|1ð ´ŠžéÓ#bš>' sÊfGD¢ÐŒ1!¸x‚¯¥Jg¹¼¡£‰WO^ê›°,?\ã"bd6i&s·â9ãj–_"hï›õƒÄ—Õ«zFyî­Uãï+~†[¶Î#tö`ö0{]Öæ˜0,*µ àâ½h‡Q qجÚa¼q'r÷„ù¾[ØÄ/œ.»**+¨ã 1—ÀS +‹ †ñÉÿfö’g7®Ï¹ÄîNbþ³øslüôÄàWÇë¶n湄/!^Ô4¬Ï%¹ÑhŒ,:íCÜvpWé²|Bñy¿|fqši¨‘:•&­–îA|Fb|Â"‘’öã´ú‘™zðÁœbºÙÈàF´¬Kr®Úøì’ÙÇóñ)üÞ³¶o]ò»¯O|šøGB £,€Qv3ÙxqÉO÷‚tŒâ è×^5ueËpä:Ð(Œ b Ól ¬™¢h4%VU½ÂJˆvþ²¹õµÆ›oÛxÅÜââU¹÷­é=ëù„Z´Mà𽾞½žX`Åý| ?•_È/ç{x¥Æ¬Ö¨5«Yc@œëØÅ1Òjr·ÁÊ”%Z±•d™¥«éR‘¾ñ·#ò¥¢|;¢dûÌ‹v˜ì² 1±óp4Ç2ýÈÅô.Qh8ß}ZÚÈ”•™¥;Å2$¼¼ÙxÍJènÜÚ#1éa!ì7Ý?©µòŠ+'M™2ñJ[ܵzFùÃ9Ó+»ßÏ ¸?ìøš°UÁ)­äa@ø€ûÈzŽ»`UòÔ…©ÐJÖ øná¸ó”3éäEµÍh³[¼ z“nÐŒzc¶“Ýä:ÙºŽÝçêltÚ:jsÍì’@—Å0†nuuìVÒ_HyV¾õ»fÚ:zMœÔaøÓÍqRZ»éÕ®óœ“t9w:ãÎÃNÞÉ‘â4;cÅ…~³Yº“¾œr|ërŠ—ý/ÃfF{v³+ß%2Åú&;ç8„‹®vÁ1;_ñí _Pf‹+°¼©·+Í­Z«ÒrJ!hV=ؤµÈ›û<ØÝ¯FÀ`Æ9ùdwÄÖ~óý½ï6îš'hûóV͈=ÌïzººkvÑ5ƒ1rcGûä;_|–î[¦Àîý/ÀÅ ”‡;Ã:–¯ Ø.ÓUÛ”štWz¾.hË÷—éÆÛ.ÕM³-VÕêZt_jÿ•fãÏϙ䟔sYζüùªñ™ãGUæOÓMˬU“Y3ªUÕ”Ù4ª1¿/ÿDÎÇ™ŸúÏæ˜veÚÙݟ뵪Ø] Â&Þôô¡Ã@.lî )¼^“¶:Ë«×ÚÓŠÅÚ€ÓyÜGØÑèèsðùa°#ŸÝ;,ìúŸÝdÐõÚ¡d/ØY.ùúß"_ÿÊö9z½v){ Ç„(Ë—}ÈtÌtÒ”4ñ>S¥i.lÿÙ¾Æäf‡Yì’g¥ŽÙ½„ÉÊïÉ,y’Ó°š¶á]šC÷è"{šîrNÓ˜y àv®vÐó<¶s΋E]Oª€àžKç{Ö/Y,ZW4µçš-N#^ÿ㹎ßÞúìUEÿ¸óþrÏC×lxäÉ«Ö=Rëž(j^R¿W¼{7Æ·ÜÝ÷õÊÏ­{œËûíáC¯½ðâ TkM µçƒHÀïȧ5i&¬SòD£$JƒiåSš‚µ•ÌOöüÂdÁ¦,W™’ÎÌs•-1mç·«ÁQ7VVV½jÒ˜Âö27gÕ¤ÜÂ8\®ÛˆoÓ© ,—óuª:]­ñ.|·önÝ/È€þ׺WŒ¯ '¸ßk~kø£ð¡Ö’:Ñé‘Ålr€WJº¡0RȤDÄ€ÀñR2ÿŠÚ-X ¤“˜åJ%§Rk4X©Ô(x¶d&Áh0`“É è0ÒƒŽÓ Z¥‰˜´Â‹èE HcCHÃ衃 è9›^Ïi5–LÁ«Òε`ËLõú,­)¢Ô\Ö`Ï/ÂÊyÊ>%§ SÃF‘»–dÍZÎ4o`ƶáü·k°aÐí<#|(œ?óç$¼ Ÿ¿4l¾æÈæ1ÎPƒ|üRf2mVÙlŽHOˆTìD¦B>zé7:ÓËt”Þºô2}–£Œƒ@Ó{2Ëji´ie8+³Lö–¥¤­ŽºXÖc\ì '1¥ù¹lÂ7$îyï1ÞüÀÞ·wà›ß=Qžø„äâÄÓ §•Ðþ_Z—h›ðXâOøzŽþ!\Ó]¯û¡îÝ9épP[ª¦]¬j÷ißתtZ£Šç*°ªB©TyÝã@¯ya¿¢‚ÇJ^K6"¤Pª*xí]¹¢€¯ä =¸ÙeÚu7sGWStR‰¾z$ žXB`·Ûˆí]W£îÕìn‚M©ÊWtÿÑ£Gç]^T6žãêŽýúá£GWßœíŠ\A%ü$˜µ¯‡‘=¹°Á\²Š¿ŽÜNîQóOðXƒ” ÂiXOð+Zf³µ™þ’B$ŸJYÿ¿H&y™õ7ÊGç¤{ Ä.Kä ·^6˜¤w$Œ´-aQ¸tqÞ„¨ tššû‘oýTÌfùÉíf™~3lÉÆÁ‹ÉWý“_¯¹ëý‚þêI|OMe)ÛAxlFG3°“T -©XŠ:ÑuèiÄï„ò<#ì…†ê_-,šbѺ‡à±‘½ùðÚ>Lš°—;&\"½äQ\"Å£ ¥8w”û¥—?ö¦gH±Ó-M4Ï ”ˆŠmЧ'Âzw;Ú‰âˆ/`·÷'Ñ9¤°ˆ¹ q ]Ñ"§LÛ¿õË'sŸ¦ä.„¥Ãt‘­¯÷óoÖ8‹uØÓ‡0ˆ5}ý¡ah)e/zÐ×;=Ï^ï ¨*ù1Ÿ«™¹ðªýiNÊkêìÄD­JŒÝo±‹JëÒOWÎP/VÖ©W([Õê¡ÜRnç¬fYfÙ«õŠzÍ¡ÁÒ`_àlW´kš…vK»½Ù¹§i” Ã\¢F{…¾‹*¢Ú6½ÖáåUfX)lÙ¶>y˜S£&»“_§H½°Äv¶CvæCùØçpØš()Ta¤T¢ŠS=éÁš?“ÊlÌFz#%§…Ñ’½±¼Ì[a‡qòÝ»EAv&·ah’^j4ÖMçä¬ä‡«C @#<æªSMl@«aÍBÅBÍ2Å2 ,a·XV¡–.$¹ÞhäÂUõàM¿ú#¶_ý×›O&ÎسùÆ={7mÞC¬8ç¶5‰÷þõ8^{õµßþêÕW@J+âU ½ø%y]ИƒÓje”çÁIcÀ§a !æÈ`÷E!#ƒ–fxP’Á–êŒòLXO´‡èÌ„ˆ>z‹þÆQú<Š è `ˆÝ¡/²È "íPo±°3Òóa ÜB¹ŸSaÅJeØhm{4-‚Éï2;ñ]½…BR´7ÖYxüDÅDå3ŠCÊgT/©_öªfêëô5ÆUúfãU–«¬7Yžµ|èþÐsέ?¤û…•x¯.dÊÿIžCªä)¤†XöÈ¡ÔJå+^·Íëu«½nµÛË2„òàÞ¹flÀÎ}tˆ‘ĉ^s¼æ Ö ?FZ`BXoÞWI–’NráÉA’|øöÝ7Ë+hc…@·màÁ2W†îØØFt³q »VÞTDàƒéƒ¾¿Ö]WHË Òóƒñ²DP N¯¡@Vè ¯úº”8Ü{ö‘{®þÁOñëç¿}ýÂŒ‡Ÿ¿¿>ãÉ''W4¾öȇËWýð§[­ÇÞþË“µ=ûà–ÈX”]ÉY`Ïlèí°6hªåkÕ/«y;U »5­¤„Ÿ¨žÆ_ª^czHñ±I¥GÄ ³ïWjlA’²@üC2M„™BYÌ<=Ò Ú±hŸg'ôœ½ÏÎÙ AQ‹µl½€Öµ"5eZºm`ïú¦vÀôu_ðdèû¾¼ü²ïgL•µt;§¥2©mH›XwÑ gf «/ ‡K.b¾ ‘Î%éËœìÌÛÌ7>ßœøêß$¾ìz~ú“×¼¹_qðëÝï&¾~à6lø„›ûõžCû–=mÔ»Ÿ–ü˜; 42£t¼(ü –ð†€¡ÄPePŒ³ó^Nj´ l ½+H³"ªi²5zûÞPüÞú®ëC뇶³Ž¿º>dïkÚ}¾›¾ä9ËMßøT!Ù†1ör2Î0‹T¦Ùfz/×.6¬0|¨üÈþ%>opgÔ &äñêTf¤Mór:g1F³) ÇÍX0‡Íæ>3ïcRz­ÓÌœyó3ofμ™™L3c» 6²Ûà”3OïÃSØ•J%ûê˜ê¤*©âS÷#î'2¤Ú˜ÉeÆAÅüxz?1oäý8ñßðàÁ¥¯`ïãVÐ0üv&µ‡òÛ¶ãä×¾€Kx„õã&D\÷ûÞ•o\߸½`ï øD?rõº]7þì–¯ع­ó'ã—ÓˆåµW~ùâ‰×ŽPží—éIà™eá¯Ã™[Æ{—ø–«Û}¼†¹jöT òK+‡ÙåAz3…,Ò§] ° $ßßkq—@|noVN‰™¦ÓsJ96É1”ÿaozP*|AŽiyx&ã¥ÞKÅ…ºzo»·[³Î¸Þ´I»Åt—áQÓ€écãGàëõ¢Ùd3›Mf“^cñL·]«´P‹ªpj4v‡Û•á JÄÞKs8PfVoÄ »£:#hü©2õ†‰2¥SJª•Yìm*%{ƒªAÌîÊîËæ²³œ"sÛDÙ¯¸ò+.¤ü Yéá Û¡–ºø“•5ø'>2R¨_&40]tvžòä+¨§¾jY³|’áS€á“.XF|쵄µê°©Ì$”›-åÔ?ǫ٥ª¼z·«Ì ;* #¸ðB– ‚BZʯ+6g²wî•*úÚ‡ÕÏ!9A¿ß Ù’-ÍÜE¶yíªW^Ÿ»è²äùçu\>:sÖ{xצísîz Q¨88÷×ëúfz {Nob5{Ã-tªÁ^®¸týô–©¬-J~Ä›aµ¥ïy/’—?­;ƒWØ@[š+4ìMBJR±·ù]z÷‘™¾–v”­p’£à‘Wî‹Z’^ÊÖЉä÷H>•„š”ühÙ§fœJ59Üf¿Rt ^à=DÔý,€v&Že¼r3Ù¢Ûbz٨ШtNRm½,íR×TOµ>­ÞµÀ³JµJ×dmK[åjô¬'k•ktW™6+ïVm^vž o*ßÔýÑänLCWÆBú®¿ !šm>s ¥¼{ÑŸ·lËxIZÁ_¢'9C>ÝØ³%­uuV»%M ¿È ZfÄ0*å¢U¯ï\³§gÊÊ×w½±þŽnØðè£×n¸´¼Žy|ÉK÷&’'‰Ä OÞý |_⮳çp ^ùi+ã]¬ï*Þ€=š½žç6a›`³yÏ ¼MçÐyøGû/9‡Ãé!bzØ<×:×v×*j5— ‹ÌK­KK‹Ý—{nvÜCWÇY2tš´ ¨ÂìÆQ¾·ü4uKy.uKù—”çz>å¹~ÎdÖÔÝ—ŽÓMAª•’ÎI§“.oê&NºŠkHùö³/¢¬‚Veñ–4yÝ+•.|KÐ 5á-xü«xÚãý‰ý‡Ž%>òkœþÖ±gý'wü&ñy·ãûžOüü“‰û~—üOâ³Ä1\‚={±î‡‰I‚m­cïñŠýØh$' _¤wŠ]ƒêØo6ôïÆ… u‹¦QØÂm^V¼¨<,œtjE^Læ -º¸ðOý? ÿ4jx=oàœN«Qð¼Þ`T+U*=Àj¥üx4tHŽD•ÞE„ãh^ÍãD^oƒZš …BÁŽºÂ¤Ö;Ibl„ta‹^DQ·`Œ?ÉsÛ¤·!ºyúê“zn›ëiZ0ÁŠH®Sõ©ˆê‡¦7ß’6Ý.ðç„m6}yä rVV¸ÏTž†•þèqEˆ¾.2ÆÉbé=ó²²Í‘#Æ#G6+¤86+®[8+ž1Im?oâÔªƒà’¢äçTøëp÷jÙ&úq1ös™œ5“ æ(U)þ-©}÷ñÁŸìzÿýžiYÞbºyÃÏ&ªÈ¼ýÀÚ[of?mFô—`èŠÜ0o©©â_jšýâùþròR¿~N&æ+ƒ iäïƒÕSMJÌAS‡$ý # „,>†6C¸Âø%t=„-‡œÍðKœÇàj¦š‘»Âj6~f}å.¥°^Ê_Å`6—ܵ¨­G](Š–£j‚XDB¨A- ž:Q„KËÔ‰º¦Ïä·2 rÚ þ€ªX~äÿaKC#ÑB(iC½C81È› ±ÔßXTßB4Z†ŠXîd¨Ññ¨³ÆÐÃj-€öbºÑx6V7”G“–¬€>Ú Õý­Ñ–À¿[Ö‰¶šA1Œ ¾"Ê…–ZaœÝPƒ°Z5¢­Wsc6Ða8õ£(¥W3Ôlgý¯‚<Úòÿ=­EÈ¥3j…‘ô°QÚˆ¦8=r«‹€"šÇê‹(Èú› ϹÐ÷rFóàÓzQh•Ry-«I[óc’øÛ ýÒ1uîú‹erEñÖ²Q­ê·U–ÚÑŒ/h™<ê9¬¤…INF“?4önVÒÊ$t!<{Ù¨%>HÒ4dh*I£rŠnÝ0°"² J’ÔÊhßÌ$‹ÊZëk¤¼4ÉmEØØhÍvÖ"w ôßÎZ”¨/²QGXM27¤:ê˜Ì›£Toýÿ[e)ï’9e´‰1É“f—âPD/ëMd=ŒUŠó”64½–µÝ2B(n'kKê;•/Q»G¦H“,©±oáõ@›QF•Vˆ¥¶›äœ^Fi*QÃ2ÝÉ4¶›Q´Õ§#¥ül—k¥zhbõ×Ƚ¶Ê3•t¶0L…åL‡ÛäÜaº¶ÊÔí”gÒÊð{Yj˜«1&¥mltß-)›š -kgí ·AmÃ*y´™þMÌÚ‰²–¦hÖÌú^Ár¥úTÃZe¶0½ë’e¤žT£×ÈÔ–Z¶òÆ+I:DFÃ&yþ­Œkm §‹éž$¬¦4“‘ÒÝ:$YTó×Éœig£¡²¹FÖ-Éî´ £¥†¥·ç+Qìók’ûXÆZèe”n¾H6£h5ä§(ÛËþ½µÔ —3Ù™ ¬c´1¹ë²'×éØ%}ï‘­†¤M1Yʆ­§TÚÎ8AW±úÒ¨i»M¬tXÒ¤Þ›µº˜–¬šEªïf3iy„Q¢[îƒêDÅV?5âTë]L†Ú™ÝLm [óz ¬ÖÒh—~Ç0¬‘v ³Ní€ÑÂt©  v€:‡¢,CK™ H3„ùÿnk™ÄH¸Ñ½ÌK_ëý4SAò(<ré 0 ž—±üjÈYO*›Óa%¨†ïl–[ƒ °3 ¡†ISì;dMÊ—ôD¢h—LóaýïV±aΤ,rŠÏËXézÀïê³iȶIò<¼´–’å¶£’þ¶Ê63&ëô ÖJtÈ&Rm­“{£Ú½F¶¥Ë†V#©Ïžÿ@™”í\;d¢²ÆE‡dº›ÙYŸ—Ëòø]ôJi!¥XtD+ÃZüíþšåJà2f¥Q/“9Ó!·ü]Êa³º˜R’Eþ¶T|»ç”m£V,Â|ÐôÚ&S;&Û×7¥þ"ȶ³ë¿Å‹¨ìeŒô¹$ëa#êb”m•=ÿ†ç¢,‹#l[ª_jIš¥[G¬"Ý#|äü!ìîr;¼vÿgJÑѵ³öSrÕyQ{kÿW1nŽôCSöq³p%µ—Qœ¶ß24i\#¥»]¶¨ý%­ê’åcØò^,CÿiFÃò1“ÍýÛœKù^t͉Êš4Éßkb\íøº¿Aïá–cÌ[¥I³¼­a¾ÑZ4Ò»úßs?Õ^·ìÿµÊ{ïòâ¾ÍG‰ZÃkkóÛzœâXä´^þ4Úa*»‡‹×û‹G•½ØX{R-ÐýÉd$írÁ‡/A¥°×á9R£aWUÂöVô”`š%c²“´¾\ {°RVk<{hëÿgkÝÿýʘ*+øõ†ÖÚõ]Ñ呦¨ø¨XÓgwvtö@–8µ³»«³;ÒÓÚÙ!vµ5«"=‘ÿ RmL\ØÙÖKsbą̂7¶¬¬p4<ŠÆˆ“ÛÚÄ­+Zzbâ‚h,Ú½&Ú<¹»5Ò¶ º¢·-Òj¶œeŠrnùâhwŒvP<¦°PÌÝÚÔÝë\Þ3Ša,d³kXôˆXÓi޶GºW‰Ëÿã¨ÅîèŠÖXO´;Ú,¶vˆ=€ºh¡8/Ò#ÅšÙâÜåËLj‘Žf1Ú‹®m´1C-Á|;WtGºZÖÌŠŠUÝ‘µ­+hÝV íhqAç2hzNkSKg[$–O[ïnmjˆ #½Í0 Ó„¢©=Ñv:¶îõb,"µ.›£±Öù¢D—&ÀŠ´Ba{gwTlémtÀðŦ–Hw¤ ¦‰Ö¦Ì#Ò!BÙz:ÿV yL0ÚÅ:¡;:¡´ßÛÔ"¶ÊMÑÉ÷vDŵ­=-Œ íÍ´6…aØ=0& j,•׳6ÚÑÓì&z»×¥;×D»#Àëžîh¤§Šh…¦^àwŒvF¹ífCXÞÛÖ +tßÞ ´v4÷ÆzØTc=ëÛ¢#)A%5F{‰v··v0ŒîÎUÐlÆßÔ I ln¬è¤åk[€æbK´­ (Ò)®h]eLä#bClí:Z›=ÒÕ2v4E¡‰Ü­”XbtL¦=Ú¶^„¹Å@vÚhí­mŒ¼=²Åäþ𠯲¨Ø‘bÔŒ®î¥ƒím¢ô—w”¡E˜TO•˜zwøÞ¢lŠɘxB²=²"rUk4íiÊ—ˆÕ›[c]m‘õ´ Z»#º6Öé‚¡J3 ±§5F¦è]Ýí¬µ1-==]åk×®Ó. 옦Îö‚–žö¶‚öúo‹´Ç–FèÄÇÐÌÿ²ÂÚhäFY•9skfN›9urÍ̹sĹÓÄËfN­ž³°Zœ<}Auõìê95­A[ÓdMQ’˜ò 3èaýc“¡‚Lç¼l½¸¾³—Öl¢Òtfz$‰%“Qà/¨_ GVtG£TLjuP­%bйŒªÔì¹h0T:×RqŠ㢔ÒÝѦàór ãð¸( ;WD cñP=` Hï²Þh†Ù 5bB9±Ô @‡H1T™J›¸&ÒÖY‰„Œ¬=F\ÔÁdv}j0'ÙrxGÄXW´©ŒÎ·g.;˜´Ñº‘ææV* •ÝÌ"çÓìnF[¦ÝßT[k{+tÂðÖvv¯ŠIBÊä‘ev®ƒÚ»¬­5ÖBû¶$r·ƒ ÂøU]ëEIxe ]Ü£ÇÌåÓ£Ökuo4ƺ»×íîgÐ-›!ÇZ:{ÛšA‡Ö´F×Jæê[Ó§xÀÉ(X€æa74G3¬M=Ã<¦‹È£^þÝͲ!Uõ^nú‰ô”S„E 'Ã";¡¤t”X:vÂèÂ’ÂBfÑ,È,;¶¤ž¥Å¥béøqeãÊ Ú£uÿQiª@ÓCتv²MuÊém=6À¿€O˜Û*[ÈÜ ºI¤N[3w/·›{Ž;áw{âû#ýïôÑ÷Gúßé¤ÿý‘þ÷Gúßé¤ÿý‘þ÷Gúßé¤ÿý‘þ÷Gúÿ<Ò¿hç? Gþw•½÷:Ñ‹ÎØ©À¿i³Iøˆ4ŸÁågñÓùKàYvQÔÿ»Væ0¡¶Gš} Žã]bzñïë|7<ô./Jæ íè;>»kL“³8: ! C>x@˜ a)„Û!쀠D&9§ÂuA8ÇJœcÏÅáˆnfÑÞ•mE,‘’õ ,¹÷ò:)ž=_Š«fJhåÚØ){Ì)ÎÉ—bK ¨ÆZCÑáÉvÎŽŽsôíË.xbr™0F>´“KCq„SÊ9aβ7;X´ãÇ#ÌQ}ÉÃÞc0MÖ’$9‹,ÈG>%g¤rf¯Ñ\´cò¥ä}ô4„C8ò>|ß#ï¡ëÈ)„‘ÏJ; ‚p ÂYJr ¾'áû'ò'd"–BØá„³Tä]x äú:0{R¸!ïÀS „iýž&r ä íõ=¥eE*_@°Ø‹Èïö|1Ê7@>Ø+†|;'’7PÎÞ€Æß@"„y!tAPô&@o¢>Û ì„‡ „:oB7¡Î+^ƒð&*„†0‚šßÝ c{‚S|“íä7ä%ä¢%¿fñkäE¿J~Åâ—!΀øòâž š¬ƒruˆˆ  \A~¹7ÛâKN6“C@< TB˜ a)„Û!(É!’µ§ÙgFžA¯¨`îAŸ°ø!t¿…WúÂÁ© c"}Ë/;ÄAn¿’ô¼íN€è#xÃ-ÑGðªÑG°m @ôl^ }—,ˆ>‚sk‚ÇùÙ/²s|¥sWaq²‰¬*­*­*­Eî¿(Yvâ¾Wpß“¸/†û‚¸/€û²qŸˆKÃ$sÏÌbU³hïdªW_2©ÈcÌŠf‚Xg‚Ú‚ç1I– ’˜%!»2hœµ7¯RJ)/êœ<ƒ¼_6¼€NBàA/€½Ð×ÓM𬄰Âag!$!(; ~;{šàY¡ÂR×A8 AɆsAòŸf+=—¦È ð¥ÿd&É § ^!$Ìàn÷bSž›‘Ì ¥ÈNž`1«Íذÿ3ÃçŸf²†ÜFnGéÀˆmr|ûž/Ò}øî=Ág|“Óð](ƒ©Ãe(ˆO@1–‡¼j— /yâ¢=ÞÅPÍ´'˜ï;ˆ´Ö~ßÞÓ¾O¼À½ÏøÞx¼Ç÷{Èy|¿ï ïM¾— ÔólpCtPd¨¼|O¾ÂP7BÁ½{|×Òh¿ïïtß*/+ˆJWÆ 6ù—øf@{UÞe¾p ÚÜï«ô^é«°ÆÑ:û}…0„æÁ`GyY§þ Öà¢ÒÜÎWmWÕªæªÆ«ŠTùªL•O•®ò¨lj‹ZPÕzµV­V+Õ¼š¨‘ÚFr¢¿®°))yúä,°ÖH?­!XMÐ¥(nåf‘Y §àYñÃMhÖ21~a¡kç/‰+üSpÜ2 ͪ™Ÿš5 J.ˆ—†fÅUó®¨Ýñmu'[0ª©ÀIšµÉCÿ'»có¦[=4ÎÝtk]rÚ×T:+-“ÌeÓª¾ãÑ(?GüÓyœß>kamü±ôºx’éu³â?¤ÿÕÝü|®ºêþ;êjp“ð?ªÐ|nRU]ݬ¼˜á!ÿð@bþÎðÔH¤xHTgHx÷Jx¨xÙ4<^@£ax<¦x»cÙÕU»³³Ž|O†sˆ#q^ N Àpì}è†óнâÄ'1¯P2¼ »‘—¡x±›¡,F)QnB¹‰õÄáa¯„c8•Â1œœÐû‰N …ðÞ‰uMõô¿ lôWG!4Æo^ÓâŒ÷-ÅÝMuòÿl\ÖÔBãH4^çVÅ›üUâî‰õßQ\O‹'ú«v£úêšÚÝõáhÕž‰á‰ÕþHUÝÞéóJJ/ê릡¾Jæ}Gcóhc%´¯é¥ßQ\J‹§Ó¾Ji_¥´¯éáé¬/Äd|^ín5šR7µ^Š÷äµÑ“Y7Å.tMbÂ;1Óy­ç 8$ ]¨.®÷O‰ ТѓGO¦E S´ÈHÿ/H¹ÈyíÄLÏAüˆ\$@¶Ù?…zzc½ÈYÝZ%ýÅàY=½”àÒ3ûw(«Ž‡#U±„fÅóΊWÎ_R»[¥‚ÜF:¥xy*O§«H–2Ç@f9Íä¸!DšWAó4ñÛüï•cöSç>òÌ^ÎÀ°««ãâ³j˜‚ù?Ý;î]bu0ÁáXª 6lùßÇGt¾©ÐÓ+C2zäXªUb)r }(•ÐÿHýYý endstream endobj 17 0 obj 17730 endobj 18 0 obj << /Type /FontDescriptor /FontName /EAAAAA+ArialMT /Flags 4 /FontBBox [ -664 -324 2000 1006 ] /ItalicAngle 0 /Ascent 905 /Descent 211 /CapHeight 1005 /StemV 80 /FontFile2 16 0 R >> endobj 19 0 obj << /Length 388 /Filter /FlateDecode >> stream xœ]’Ënƒ0E÷Hüƒ—é"›W"EHyJYô¡Ò~IŠÔäEþ¾poRUÝ€Žg|í¬÷›½mz¼¹¶*¤WÇÆÖN.íÕU¢rj¬ïi£ê¦êˆWu.;ß †ýÅíÒËyo­Z,|O©à}h¸ôî¦&˺=È_]-®±'5ù\\*®]÷-g±½ }/ÏU-Ç1ó¹ì^ʳ¨Û§ûzèhúÛtØø§åãÖ‰2\м[ÕÖréÊJ\iOâ{‹0ÌÕb·Ë}Olý¿¥Üu8V_¥»õІY˜` ¤Ö€„0¤„ Óf¬hÀœÑl[²²¬XaÚÄ€ Ûx-ÛXÙb¤é•€>f A´¦O†C5}Ð'ƒ©¾ûlôI3}2FÓ'â¡ô‰`ªéc@Ÿ˜7¸ûìô‰x(}˜ú¤05ôIÐfèáóúÄH3ô‰5ûã÷Ž€¡ý¯êêÜ0Z˜mŒÔ8L•ßùïÚûÃR endstream endobj 20 0 obj << /Type /Font /Subtype /TrueType /BaseFont /EAAAAA+ArialMT /FirstChar 0 /LastChar 36 /Widths [ 750 556 556 556 222 222 500 277 556 500 833 500 610 556 277 722 333 333 333 333 666 333 556 556 500 277 556 277 277 556 556 722 556 722 556 777 666 ] /FontDescriptor 18 0 R /ToUnicode 19 0 R >> endobj 21 0 obj << /Length 22 0 R /Filter /FlateDecode /Length1 27420 >> stream xœí½y|[Åõ(>3÷^]]­W‹-É›®¬Øq,o±/ÁÄJ¼d1Ùì+¶l‹x•å$NXB)B ¡l¥…†P((qvX((eéòÚÒ Ú––( ð-`ù™{½ÚÇ÷ý~ÿ¼÷AâΜ9sf;Ûœ™+‡Xt0ŒLh7âP°µ;Ôwmÿ5»B?CÛ[·Å”·2Þû>Ào $¬hïëèþ^ìÉÓ‰EP~¹£k¨}û¯WI™¡Iv´3j[õ+B%1@”ubâÊByVgwlÇëfÃP~Ê»»z[CûöªÛ*]åEÝ¡}ïèŽ(ße¥'Ô¾þÞûNBù(B…ÏõõÄnÁÞBmÓú¾h¸ï{Ҩʷ#¤»p¾ôcPG˄㨗 F“Ùb•mv‡3)Ùåö¤¤¦¥gxÑÿóá8ò°çJ᳑¡ñ·áy‡æ‰Èø{´.Ñ;þò >¦=êçqtíCÃè|#ó¨ ¡káûúÚ‹~€nÀGÑÚ‰îø1üéCA“\¨ýanüUô º›‘ÙÑ è%´Ý0¾;yP Š¢Qîyî7ãïáz܃JEµh z„{ýóä\Á- Œç#Iè'è%rÌÛ†’P9ZŠV  `N÷Â\ŸE¿Ç9BÍøëȇ‚h-Œ<„®Gw¡Ÿâý$LÉÝÜóÂúñïŒÃ(Гe£zª´}Öñ>6`~ ¿É¹ùÛ&þ5~7¬|6*E Q„Õ<ƒ^D¯¡7Ñáõ¸È:®øŽñäñ£0çtTŒ–Áw9ZZÐÅè2àØè0¹‹Û—x&ñ h#ß|˜u9šëß¼z ýÛ°gáÙx ^‹#øNüI%¹œÜM>á.¾eÜ]Ü1îÜëÜ?ø%üþ-qz¬Ã†«ÑE`'cø.!F¾wrïÚ€ÇÈëø!†Úu2º“Ü‹øXÞã / ¸“Tâ-h ½…€ß"ëÑrrº‹ï~…ÿˆx…Ð ú‡ø7¸¥\;qÇÎrD££` /¡ó¸çÑø[`ý/‘ZJzÑÜø¯è(¾˜ïà:a–;¯[x sKx#Z„ŽrGÑ“ø>î×8€æwà|ãxÝX3úHwˆˆ;,”ñiã?Mü߃_?NþÊÇÊ­OtàÛyØåÅ`½Qà=íoqéÊ{¼ô5 |›V^žë.dÉ~eïGÄî?ý÷™˜†ÑeÉ! Rå˜T0¨Ÿ€ã@<7—ê…X‚„9.`åyùyÛFH™¿OV ö¡UЬi~!ðÜç£R½v$ˆ¶@!¾{u£ZVЖÔ#(XhŠ“Zsr¢&i=­Ù=Q3Ù¼Åê{”…„Iq}öäV9ÙQ×9?Ž“ÿCuX­oXëoX½±Q©ÛÛ¢ñ¶aÝŒ’Z_1Y§AqGM#—J4ˆ¤r¬4ñ‚IbZh4Åù,øOÇ4¹mDÔƒ*2 VêãrË5m2ø|_±ÑÈø´˦šiÓŒÏÌ,Ÿ3£C ’žRÚ`·@ìíÀ­ÁHŒÛ& Y¸JK“¥]ˆXvËÂlS¹©Í¶Í°Í¸‡\c¦Çƒ§Ù çYvÈfG°#a“јaPMd³9C$NQ$Fƒä?Å&‡YÞHrÌ&Sxaóþ4˜b’Ù…%£ÑD{•L¦Ï$1(î‰8‚¯ ÎA aŒ$‡c—dE…°VT/‰Î l‘KtÁxõº¹*@Èä“8°sÅà›;—ÿrÀãÂÀN¨ðÐìÍ,g59E ¡þªT!ÚÛièô4ð’u¾G(ì¹ä™=îÀ%2Ëô4·<óÌy"9¬#5ëÉŠÁT*ŽŒ¿qr4Í-Âͨ¹¹—8’]É®²rG öãìÙ:‘kÃ%O~Ò¿(»8uÎщ—ŸNÜ*³Ž ÇÇ~÷ùƒm?}–»ðÓznåìõó+ÇßáËøp6˜‡ž ®Þ”³ YF¿)+o>^†u…úJýù¾_š—kä s²ÍœeeøsœÃl(NÉ ò f”9y–×…]kÞ1ÛPì匮Fk2NÁ?f*ºì2«’eŸŸøÇ3‚6{)Ê3z3¸ŒÇÉ8FdCê¬ßj,ÿ¸ù´|toù@¨útuõ鱿S{, ðÙì••ôÁØì®JøOãH–NçÏÌžWZVV^6«¼l^éìl¦Nœ]VVRLã‘Ó%9]þl‡N'ZH’3¹¤¸¬Œ“/|¨õÆ£«¯ ‹×/K*¨ŠÞà{´âŸ£Ï4zÎIK~ÔznöùíßûÆ¢Hhã¡–o®nøÑž¦kÖÚM–ôes«g‡›åïÝwa}ßú¾Ä]º²øÂRü–U–, +ÏÛ²ù‡Ô*jÀ*vsñÒà¹õ6œ” ¥óóŸÈ{Åõ‚ÿm¢»Íu›ÿ¡ä‡2Î{Ì¥«³lЯ·œoo·\–§“p¦>Ó2O_b©×ëòFÆOWšåRnN.!¹¹~°¬È•1Ðk„Ó32ü^Å©P„‚½^Åj·ûN§“"œØápfyu¯É¤IÖåz39È7‚4;­’½Ñ)#‡ì ޼5hö¦ËŠŒ¼²—x)Æ‹ˆœÛˆeÐg´móßÀ2Rd¯SvlXà¨ê«¯²åc¨àtè,Ÿ¢VfÕ`òiaOAs€I ÷L ÑRîšáh.q”ˆTª ý4¥¢õ;@àTÞº™pÍŸŽe…6·^™´z¸õÊ+]û}˱¨jõ}Íþ®c·È K—ßQf„Ï~¸Cä¶ÖK£sûÇÖ‘'7d•Vm9xÏØyi©·4¸åá$ `/½,YzP&:9Š|ão%ÙVêU I 6Zl¥’.'óZ÷µÞíYœBDtÌó¬ÎmyÆí){RxDiQj âìØfMG³dˆ2‚£ä*x¼–OMɳ°ßi'v;¯xM¢ËËí#ä[ÁT§¢Ïö§+Ö K)EVÙÚg}ÝÊ[ÌÊ^@mçc°ÕnNQ«9m¯,l¦ž{¬¹ÿ5j)/¨­Dû©ìÒñ`/`0öY*}:Õ(°Oã·*žxÿ‰mÏv|£›ŸüŸ–Ï?ä¯im>š˜EÖá«·ÆNàˆýŠ¿w¿zåCxñÁ¿ÿlůçæ;vâi¦«o¸øÕ»ÐͰ#XQ ún°â>þ^ÉsÌwìp\cç-rŠÕ![ä¤T±¥X­š÷·É>³Å‚<)>êî­àãSFð‰`fRn¡®ί-º>ÝnNIóÂ9›`YuçõÐAP°fL9±|ì-M·c¨ 8Œe h„±ÃV)2×Q‚}ÅÉÀ u~çðcdû}¸„´<ع¬?¶èº‰.>ˆk_TÑ~CâjáøÒÃ=›ß¹Àêûù×êCÍK6Àâ@K’AKRѾ ¡’‹8;RoÕñnªëAø•†kmä‚Ôˆ|±4$ߦtÎdç©7’F½Î:˲ֈg¡t6oÄÛ½FÑ€\ËýÀ’¬ˆÙiÖFd‘-ÄÒ^Ñ  _•ýi°²Ó“â?%¢+›AÍ oÕ?ªâ³©„57ÈùŽÕ~vç~³ã{xþ¸°ûÎM;¿¯p<÷Ô/<„W=üÔAS8º7ñö7®¾ú*Xe=L®dkÄm£È0þApŽQ.U„ °‰¿ˆ¿–ÿ6ÿA”xlåüÜ÷ o>2é›Ü­º—8^ÝÙ‚9’l²•$NÏóÐ!¯Ó#ƒÞŒD³‘3b$²Bf—¨'B>óû• ÚêjZ ¤W¡K’Þ`8Ž7^'p¼ž~U£88¡ò%‚Á)pb• z¿¨ƒBGO¯<§3›tÐ"×sô"2H#x$0ð­…öU›Wš7›93Oã>ÐܰOõ~ª×kVÝÞ ¹™ŠD5¬ªbŠHÕQU=W%h¢^soSÀ4ÝõU¢¬¯ÒWÁfšû1Ø+l÷.ÁØÏ‰\=.9ú$‘ßOœƒí?ùÕ– Ç?ÀÿJÄÆÚ‰ïÉÄÿ¡y‰óùo‚f¢œ>вÇßÕ›;¢æÅT«ÁWñss ï®”Ög‡³wϲEóH–=+©Uyy0‰<—Ë`ðä˜sÜßà‚½Þ…g!$Ã#äú`‰¹ÐëÝ9.]Ž×lÐyÓ­n·äñ4Bæ’’“%×e.ìuºv»^qñ›]A”0B²ŽJY£üJ0(û}Ø÷¬œ]m€X Js\²Áe(5doÖ¢1‰Þ‚hàMy,°óÃææþ(‹¼NªaÖ«,ûKih†ÜTÿ™ùŸÃ`¡ƒÜ P«ßc‘ŸÑ?CÙ \¥nÐåÒAUR\^V^®ÙÊK8 QÝ£ÃéJ¦FbgNÑBæ?J2³æ®¸{IaŽýºƒßí¿_òóþY‡~í¾xåîÑMo'eôÖ6Å»oغèâ­å-¶ lÉë+OlØúµaœwÛOúlüþ':]¶ÆCÖv—/_} Öm¿â»‹oø)šÁc.«’ÐÁ2/öò©z®„+Ó“Ït¼ —à1xIÒœ¥Nðéõ¢ˆ8žyK ¼%D¼ƒÃ²ëFðÓ‚ÌsOƒnž—¥]1ªÀšÇ4€òÖoýå•Ïœ’ivªùÔ¼¨<éF™ Õ(õŸ¢£O3.æFýcÆÇù?»V8~o"ÿÞ±î\PËY°28‘à á^î'ÜÛÜG/Ѱæ¼ÂŠÒ•ÒnéU‰óJ…ÒAéaé„4.éÀ&yÌAÈVœCDÑÏc'Å´R{Õ :1‡W!‰b/ɰ4,Ùyžvè†wó¯ò„­¥ü ^Â2ï¢ (ëåýP8xãƒË ªY3©:»š.Èb¥á†lkYè¬3»_­J/Ró´B5wi¤’“’¦Ïf¥#_u`ú§‰Hô4!3m…‚Æ_šž¦‡MME¡ <€ÊÝþ@?./±@]àh Qû§câO¿ôÒg>û³ßQ­)Þ¦3Þ&‚ë[¼RØ-¼*pzì …ƒÂàa\ ÈDUÊ=Â?`Çõ É®²@¯ ²½ â !FïämȵaóÛ(×¢*ÓPÐm¯FLC”i¬dI+‡0 QfQÔ°¯\ÍIh‚Iˆ2‰aIHã6Í]H+ýö™œ›dÝ8¨Ò¸Æ8/‰Ëpñ±ÄËÂñOëÙ^üù–pÄWs—YÛ­Û¬{¬ß¶Üæ¸WЧL{Ça@sÈcEvcžÍ2g´~`Á‰#rÌ~'ƒ¤;%ÓI=bŽ'©À·T$Á:Œ³òJáh)í—8i„ìN­¦GçæÀ™S`Ac4e¡Õ¶JØÃ^ ³Ì‚#s6ø•r‡¿¼ÄQΕˆ~N¼ð» Ïí ¥\¾?}ù+«dÞåÊÊ­ºñ&Û¼œ:ÿ¥$² —$.Ý7v¬/YÉ„õÕÂøy+:Ü%qWI7êox9Ù|HÿÿWþSN—Mrø \F–à!| †#7áŒÄjÕTA‚ ÃèUVU%¬\-2,*ù¨ˆ†"àó[P(ǰó©{ ‡6ÈLC^ÅUhRI>l¦‡æþ(¨É(B Z§O¼Å²5'«Ïw±üH†&k&bh˜påîI!³ˆF“4²ƒgònîŸ8¸D®rµº3ÍkÊV.+¬Øü|åF>ûµ]Ûfß—ù«ÄéÄj)ÇÇß~+üb³ƒÃ·è±ƒnˆV[©“nˆØežÛ³­”Åks°Gºn’í¬–ë¹2/[œÉIÙn­´|ˈ+Л6Þžoä<ù¼„vá :­»,ɹEàçD,–¦YjÒKkØéœl?§ÏÌÑÎPÝÀvHØ¢/X¸†ü ²ÉŽ2_1ï¢áš"êl,\ãùô‰;Ÿø(ñÜ{¿Âçüû\¦ÛŸøç¡:òí ŸšH|Žë!`܇¹·?ý¥íàᅵxó/ïý„ò`ħèLúð˜1Vïÿ5åG—ìàfóí¾Û3¹mÜNÏ-Æ›M¼QÖ(”Wû(U-Wr׺ï62óõÜñj#—kšåËôW˜xÅdäÒáä 9]³’×8Ð,Œç¤x¢àcLW‚2–c8j$ܨ °f ñ„3(çÓ{„ô Ê’³HÖÉTkl³æ”¢d9™¼‘Œ“Ÿ*Øð”ðö–Ÿi;Õ `ôô)ùLÿ$SiØksA$¥^ u£WYë(w²ÍœÞÌšM·wvŽT£á$Øéé7É©c6ºþXÑåv옕•øsNMíóGŸÿ9˜ß=xag~Æ%¯–m=·gäòËñV㊞ú–……¹¹»—ž›Ò’F‹rfN©’V”F Ó^M{#K!×W>›„üøµ3cgôäÒ?m£°UʧäS6íºL“^y2‡&Ny4úe7 %ì>CKgÀ)F¤ŒT]õm »³œ$+Ž^[üúª[/¼øý[†?îÅOënÜtgSmÅÒÒ¯jÕ†ÆÑ=ÿJ<‹g/YÝòï´ÖUV´4ä,¼mKÿ#-;žß$%YøÏ]W²¤|SÙú9éêsæÝÚ²ý…ž×¨FÃYænˆJEt0X–J°‚±Œã'é1øµ(jÇøàŒ.ÂéE§ƒ`~D^‘ªÑcf) Li¥…ŠÄi02‚Ÿ}DÏBý£˜L =Øu}€e Ï !›c«·@lË…h9œ^0þ9¶&¼~þþ„?ñÁq⦅ž¦+ÙˆîSX‰›,VLÁe\¹X.•É‹ÅÅR½¼ÔÞÄm²wqÝ|D¿UŠ˜"æ^{ÄÑ›2d¿,åîJÛ^ûýößÚ_OI=˜òz Q/?ŽPŠGgØd.…üÕ` ø1‹lL+M B"$Y8„v¤×ÃòÀzªØÝ Ø´SG‘uü#E÷øøI$ÀËü/D'êõ‚Él±­²Ífq8“’ìÉ.·;éj‹^‚]<<,ØmÊÎ ®IÂD!‚aOrÚ½=I°Íâ´ Äf3|†Ñâ4-°ëd¸“œÐƒ€ÝI‰dÙ¥ÏÑÃfCÜö»Íf4 ;I2Hà( ôM ¡! írKII’Û}£ Y,T s¥,OÊby° bMK¡ñ ña#×k¼Ìøº‘3¦T§”Ÿ`»$£ñFIŽ6‚àI±“ܲÑåv±76êëì±Ñpª?°ó=ªïk>ìß)7÷?E¹Æ^Ù|0yI ½¥Œ¾´™PU‘é+ê¸Ô½. Ÿ¦ïn¨çRÕgâ½ra:M½Àù²UTTàŠ ú§¿9ª¾Ã)+‡S 슈ý{‘³ÿã¦téÜý„|”xù©ÛæµV7ý鉒ÇýcáøçË{ð¦1nß§õä…OpÉþ{>_È=xùƒOõÞ¤ÅçPmÅÎàöÅ<α×ä5 gé—âzýùÜýË6±CÜ©ßi»ßö:ÞÈ[ˆÓè´Îå&Äíž8¨Á†eÐs£ ’øF³´â8Y*„Ðâ2ó+f~*¼0þÌO‘à4áv7N0‹h 7e  ‰)SÁ†*Hv8§f=ë´¬I¤<ý0øÅ“ÒD42íÝ}u…­œÞ¤}ékƒZ88†ºà›ßR®8¶'}Ií–#áÜÍÂñ±—¶¬¿6ZqËØuäŠ}³Ju ?—¨€ˆ¤ vìØí¶Ý7ŠÒÕ»5;ÝB6Ó÷œÎ§{¸ˆiÄüˆEL¶8Óçˆþ¤Å–ó-:§ bŸ!/iƒ¡Ý ÌÇņª¤¼È°,Iç¶ZMF£S2¡T¯$Z-'lÔæŸYM?“­›­½Ö;­¼uÏzÄ'+B¶’=Š³Ø«³34hù˜kìÌ µкKØÖªÝweM»ãb/Ùæ1Ápòwï¿õ…ƒïïøIxÇÑÄË÷&Šò.Z¶«íªo¶-ÜYò#¯ÿêi¼ðÎäœOëñ½»×ïþá§—^?ÿÚ_S/yøûÃôF=<7@æpóIPÜBGˆ‘Þ]éͦ{ue|9F¤ŸFôêŠl~Tx‰{š€ƒé ¥]ìD:ñúÖÄÜ?½Àš¼ÒaΟéÉt¡hfÜ…g腻̚q¥¥Y5»y­ªÚ#«aëÔ¥–O¼—ð™þÏÐÂ-ñ>r÷]?½Ùª¸7AÑÛÖM°ò#Lô­à2—ÇÆ4š §â,rƼ[0@cš§¦y•B\¨ˆ‹¬È²Æ¯ÛO!ŽJÙ—cEú”\ýêLÜÅ M»®óõÑ»;T¿šÝØ5³+;&óå§ÕE¢ž V¥ÝÐiñT @_o¸2D­ æ:»ì„/úìl¿o.ÆÇ®Ûñà [ôÄå[ö'~óÎ;Ï+[<ÿ¼M·,¾%1&wy¾wÓáÄÿxI†ëPºÝŸ¿lËgw9áuÜ2þ–N¢þÝ,–d âqYIÙ”IÚŽw$é`#Ê0š`1ažÏHF pôN‘1ß.å˜aŸ8fɽʄMtÇ‚ÆUF‚ŒØ8B:‚–ü>÷*„û`œ@„úé°§ôô’åTs¿v*”xÿЊ§ÇNpK·,\…7?ºçÆ¥7üÖq"®r8 ¥à¤`ö›lM{=Ìñ,ölw\Åí6^eú†ãJ÷î”[¥ÿá|[zÇðŽÃ’Æ®e}¥,À®1Ê¥²Õb±™Á—Z’’].§Û“’⢯|tú“E˜v ²8\N¿¸Z zxvXZÎ]k 28Ž“6ä$áGSÒ\®{£í8EFÒ6|Ò€ #xt˜4bCÛ°•Þ]à§‚’„àI½nõƧú—Üÿ–<öqsÂó±{̳¢.\û–{¹üñ{`«ì§ U4² Ýóì•6úR‹9k-RøÒð¾4÷£fWâ ¡UhÇÄ@X쀱¥÷¡"á3r ÆžõëIqÿ©ccÿz<‡'s*oóÙÚžÉØÔÞ&¹c§‡~zÕ{ø/ŸýŽôοoëÅc·€7ÿ Äﳸ݂î ÖCLNtàªÉ`âuz‹É$êôVA’M·š |¤Á¡h‚£†‰˜À¾9â„‹Và1'›>£o%ô>A7‚ ZD‘ç9éM÷[¯+öÈg›±¡J>C/I«Nc› XA_Mý<†ëôÕ p@x†þJRQ¦Žzn‘B(?çã°­~Wýö‡O.{ø]\߬ôé‹[èM0>”ØHÎÅ}¿ÿÖ¥?Bx| V¸´ËŠ-A§]¶)62Û´­²µ[‡Ä7l:Õ¡¥ùç”ê¤d ÔB‡0†°ZD¼0ñª‘ƒ×d±XFq¯ÅjÕ[$æ­°¥Áúu£Ñj…@é<¡ÕHïf$ËyØÚŠô­âq’‰tÄ8LßbÐ fŒÇdÔ .þ8~ɘ;<ÌΧà=–"•QjJß!R]уZ蟱T©9@ªžè){˜ëkîg—°úñÌšgÿÔ¹Top38(%¹JEƒÝUZ®]²û1.S"{ÑgIÌá—Ÿ<¿±8ÿ1±›ž¿(3x†¤ã…ðÕcoýó·uí õ¯T@wÞêHëýc÷fkÕGzžýDú®èÓ'&~.=þ›ÄùpŽú%,UÒþ¦…µ$VÐßÉhhÞôìGÂs¨@u?D5_$l@DÀSåy¤dú?aÇ{ O”ÈQ-´;4+€¦ÚÇnh{hÇ¡¯¾ pí&x~ÂŒ¿ ùAaÃøoxDµÍÇü,y€«ážäç HøƒðÝRÝ'â7Å3ú}’Eú©!bxÍx…i‘é^sÂrÄ:ßú¨\&?hk±gØ÷;*5þ(ˆÆìgõH†]}=¹ºKà@K±›ùˆþb~,åX;+q¬• ë5˜C]t›`0±þn þ¶ëPŽk°ˆžÁ?Ó`=Ê&4XB{É#làŸæ‚lD[ôDƒM¨]ߦÁfÝQýO5Ø‚.°^:)Éˬ¿Ó`—ܤÁéä 5˜Cer›óÈ$Gƒ€i°Yä#,¢-òI Ö#‡-Sƒ%Tg›§Á²íÔ`#šëøýä_K•8Mlæ6:«5Ø‚ \·ÁL0O¹nq=§Á 2˜É%àÓ`K`.Z‡†P £vB­+è~xÖ¡N/‡­©ž˜F¥€§îEQ€i|„Q(€é‚öÕ2|èÿcO…“3SÐZ¨éBƒ“4€[ ¹:Þ\T ß"”¯AÅ »ZtA¾ÚtÀb¬Õèož(ÚiPE¡>”KÙœ» ÔzÖ\çO£Sûè€ÙtA9Êf2Õ’þEí}`r5t6tv Ê~)Mjài‡vsfô<½§×Ï}þæ¼nZÝCŒó”¯mÐO7›éVÀÑQÿÏe¢–®=óбùQ*P¦41­×õ /­bí”ÍÆ[éJ»É&ô´]z¥ÒØÎZÒÞ ¾dNªô¸Qö7PþwTa¦”n;›UÇä¸M»ó™{ÑmÖ+XM'Ó°Ì&orîQVaš¼ÒA6kU*ªÖU€TjØLbŒË|‹Â\  iºªj\„ñ¾i ÕÉ6Ötù·j}…ØÜhËnÖ#w'ŒßÍzT¹¯°Y‡Øx­š4Ô:ëM!¶FµÝФü#š5ôi 3Þ 0­TW7!¡6ÿA6šÂF˜>« ÉSÞÐòvÖwç4m ´½¬/uì ¼Êí˜Æ‘VMS΢‹AŸaÆ•äjß­fqšjÔ”N÷2ËŽ2Žv±öt¦TžÝZ«‰ZYûmÚ¨m¥ª]†™eOp¡Y{—†âkDãn¯¶’£d¥)©0-íb³ûr˜ð½“k ³¿ï£ýMõAýÆVm¶!ÿ­Ì+*š•Nð¬ÝÁ°j{jaM†Ìîú4é…”Zô6ÛjS»AˆÉJÕ…ñ°U[„I­‹Ñô1ÛSµ±‡µTW2]»#“šE-‡&™n6ª›Û4ÛRýN×ä<ºYiJ{c_ر¾°¾VmŒ-¬‡AÆé¶ºFý€Ÿà,ÕíÖɶ3ÝV˜ì`¼`z›ô'ªÔéÜU{i^Cµ¦M˦¼§ZÛÍ$B;Y{uÖ´ßVV;¥iêèmŒ[}ÌJ†&W11vó™´>Ä8ÕÆ 6¤r1ÆÚOÌx¢÷>¦CÝÌoNÌ­€í1¨›{n!ôK¿Œjº‡-`Þ©(:™-uÔ P“P˜•Ðf¦ªÄ &)ÿÿa;Ó•6çS:úÕv±)ÉLxä 9oaµC@?89fë¤oSõyj?šî-UÏ1åGUûh>s@³éÖKxÒ'RkmÒF£Ö½Mó¥[&w#uÌØàÌ„ïÜ>éšŅ'u:ÊüGL³çvM¿Œ_VH9žÖË”Ÿ=^›¶R ÜÂ<£:ë-šdz´ž¿LB³ÙªfrJõÈgkÅÙ#Oø6êÅB,V Á¨]·4òïÆ¦Ü_˜)?;t–,ÂZ”1=æR½wˆÍ¨q6¢E:_E抦‹=Ó|Ûĸԓ´1NG¦í"Ñi±tÞ$utšÞNíÝÿ™Stvݬÿ ½êÑßv&ÿ­LšÓãÐ ÿ8EÙ ´j„:È8Nûïœ\:¯éÚÝ­yT•ÿªUõiú1åygêÐZÑ”~,ek?[r±ÝsÂZ„¦®F÷Z™T{¾ ƒèø=Õó‹ViDÒ¦íCÛXl´M®þ÷ÒŸè/ªÅíLôeQÜÙrT¹5±¶²>϶㠉…¾ÀëöÿÖl§¸|ö3÷û™3 kQl öž‰èùd!RO9×¢r8‡)Î…R>œ±Já)Bôöd=jÐ(‹ v.Ô”jp9*‡¶*Cóà,@Úûo¯û?ß'ê ¿À½ÉýpÝP_¸=ÔVîWÖu†•å½=½1@)5½Ñ¾Þh(éíQúºZ ”ÚP,ô¿!*¤)k{»)f@YÚíæVVåCR\ ,ìêRÖD::cÊšð@8º-ܶ0 u-…º"­½Îg8 èì Eµrþ†pt€S\PY¤ä,´F{zÛcsTb•h: Ãçk=¯c¥û”uÑP[¸;ݪô¶ÿÇ•(ÑpGd Ž†Û”HÒõk•U¡˜’­¬[®¬lo/PB=mJ¸k ¼½È &{ôvDC}CÓQa¥6Úéé m#Àî|eMïèzE¤µ³·+4G{FZ#!emh°§ –¬«(®é퉅»éÜ¢CÊ@¸ Œ‹´+máHGOž¢®¿¨B¨ìÎÁîPL_ií EC­° (DZ`¡ê†èú# †>X`¸5<0Ð ÃÑ… ÿÁÖN%¢uE?ØV¶GbŒ ݽ½m´5…aÚ1˜H+0u`Ûî‰EÂ@Ý À`t¨@aœîÝކ@þ±h8ë†*Ú ut`€Fe޲)´vuÈæ Ãw÷ ‘ž¶Á[ê@l¨+<T{è(áhw¤‡QD{·B·!˜ë ¤ °-êè¥õÛ;çJg¸«8Ò«tD¶…3ƒÒìPºÃÀ»žH+‡úúÂÀÆžÖ0 ¢²;B™¥„wÀbºÃ]C ¬mt§‹öÑébìi†5 × -¶„•ÁP)ÆÍpÿ ì`+å¿ÒÞ K†aQ±ÕXz4 rj€˜€eL=¡ØêíŒô@×áXkžÊ4hÞèë Ñ!hëžðö¾PL HÚ`бÈ혒÷E{»{Yo±XßüÂÂíÛ·tk [ÐÚÛ]Øëî*ìŽÑ‹¬°{`sˆ.¼€"¿bƒíá.À†Y“+×-­_Z³pÝÒ•+”•õÊyKkêV¬­S.^SW·¼nÅ:³ÁlX× làe1• LVcýc‹¡ŠL×¼eHê¤-[©¶Ÿ™©j ÊÁtä æ×䡎h8L5±@i‚f!PƒÞ-ÔŒ elÆd¨vn§êÁ…)§£áÖȹø85/*ÂÞŽ0#a"žl¢íÝ2ƒ®aš½`QÓ4{`bR È“¬˜lLµMÙê m €†Lo] ¬ïa:;4± X“æ¹@½CÊ@_¸5Nçì•+ÀŦm´m¨­-Bu´2ʼtEGo™uaR]‘î] Âè¶÷F·¨JÊô‘!{·ƒCÜÒè¤ã@_*»»AQaþ ª¾!EU^C3büXÚ>µ8ê½úÃlð{­áh¶‚¨6oF<ÐÙ;ØÕ6´-Þ®º«³–Oé@’aðmS.nr0-æX[cS2¦ i³nÿònÙ”'hv¯uã„bó)Áúµ aÈ©(-Ÿ£”Ï­È/*-*’¤õ €,š;·´Òò’r¥¼l^å¼J³áßXÝ4FZ*Ô¦Ç춃Úu1=€L¿v™Y³••v¢ÓgÑͬÙ:­ÕÙT*¾áßÐLÃswrqrÃÜ(wx:Í üׯ ¾~ñõ+ˆ¯_A|ý âëW_¿‚øúÄׯ ¾~ñõ+ˆ¯_A|ý âëW_¿‚ø¿øÄW¾•˜~“ÐË$?øïn&ë§NžªVù)V­«Å«¡›A3«ÑNjß3ç8½fjÆtÇùòµÐš¯p+2 1mþ2*µ†®ãÏw{ÏZád ŸÂ×ðA~!_ÁO§šoø·7?3k¾ÂüqÑ$·N§™_…zqˆy†ž/Ì}fMó/ô7M§›YóUué+òì¿ÕßWÕ3ú»øñ3ðÌF· /ù^wÙB9„†ç<ïÃã"HW³É¡#ûK‚#mfÙðŠÕÅ»i~ÞòbV.QsƒYÍ¥ùj^TBéî®ÛAËwÏW˹sÕò¬¬âËÊän„a`šZ!-„§žËàáa𻇓ÒÕf’“6»k8%µØz‚ÜwA»»Øï  Ú¾R·R$ï/,ÇïÒ¿Úbée,ÝÌÒj–²ÔªÕþŽÎÒ,}˜¥…,­féJ–ö²”ÑãÓðý;|ß…ïßðß‚v”‡‘ËyXöâ`zñ(–°ñH©÷†l –—z ”o1<%Êboä^xvå.ñæÃãË­õ–cDÿN¤G.ˆÆnÓGðƒ&ö˜Çö˜‘4‚«äžç](áùè8O‡+ƒç;ððGr£Þ'¡µÂŠ)ä#ÞÏòGð†#ÞO½#z|Äû/ïÁA‡÷¿¼§¼Ÿxó~ä]æ}!÷ï(P}çˆwÄ;ÂÕ¹#ä Õ{­w Lî”w‡·ËÛ£°ª.dA£·mÌÝèmTFè(+6Êb/tóˆ·*ksG0~Äô^ã-ÉgM‹iÓG¼s½Qo— —§7G[ÍñΆÁ2Ù(uÞõfÉ,•øƒxà>ñÀ!ñÀ¥â…âsÄeâyâ"ñ@¡x Ȥ‹N½]/ë-z“Þ ×ëuz^OôHÏþ¥ýë§N¦™Ž§)Ï`™Ð”¨C°ž e(îàHÃÚE¸!~²5lQâ¯õ`ÃêqÁ¿Çí ¨aÝ"w¼"Ð0"ޝ‰—ââªM‡1¾¾ °qrõFëG°‡¢®L¥ÿ&þ(HÕsåu©4¿òº¦&”¼­Ú]m_`«¬¯ý’¤EK§ý[cî™ÿôXê¡Qrã°è=W„âZ( Å´èNßÒ°¶1þÃô¦x1ÆÓ›â7®U.hÅáëjGñhÖÔ8Êåá‡êÖP<—WÛÔÔ¢at öQº‡htú_£jJ‡ªõ¿ft/#Sñ2/&Œ¤~Š$_#)˜$)`#qxŠÆ«Ò˜• 3)ð•>áE@]„êʪÆÃz´¨©æ5O–û0¹›= îI=Ž~Á½‹Œ¦¸Á¿(nô/BÕÕnö·ß:S\(J}ŽÏ}iêqáûµ Ðf­*aþBZÚK«,ôß U¹/=Ç—zß§UÉ€¶ÁÓæ‹ ¹ë"µ“ÿ hŸA-¡†xîÚ†xõê‡E±.l©m\ÑÎh¬?©" YE‘7I8‰“$¸ñÈÊ<¼Ò‹Ëa M˜ 4ƒ±°Mô¿vK endstream endobj 22 0 obj 14334 endobj 23 0 obj << /Type /FontDescriptor /FontName /DAAAAA+Arial-ItalicMT /Flags 68 /FontBBox [ -517 -324 1081 998 ] /ItalicAngle -30 /Ascent 905 /Descent 211 /CapHeight 997 /StemV 80 /FontFile2 21 0 R >> endobj 24 0 obj << /Length 366 /Filter /FlateDecode >> stream xœ]’Ënƒ0E÷Hüƒ—é"‰„$}¨´@Ì"ƒ Yð÷…;¤ªºÏŒÍÁ×Iós®›Q8o¦S¢ntehèîF‘¸Ò­Ñ¶%=Q5j| ^ª-{ÛræùbFjs]w"ŽmKç}nF3‰Í±ê®ô„ÅWS‘iôMl>Ó‚—Š{ßSKz®m%‰¨¨^ö|.û—²%á`|›WsG3NÛyðOËÇÔ“ðxAò·©®¢¡/™Rßȶb×MDœe‰m‘®þWwëÔµV_¥YºåÜíºþ%YÀ„°c8|†reˆN€=C8<ž9ò¡!àÄm@Ê΀È\<@ÆàPér…}BøÈÕ'°OÉ>Ϭ>8G²m¹úì«·±Ï»­>\aŸ€+ìA[®>ø!’}|ükÉ>Ñžoíq;Ë"s¿ñPwcæd šHÄ’…FÓo|û®ÇÜúøšF·€ endstream endobj 25 0 obj << /Type /Font /Subtype /TrueType /BaseFont /DAAAAA+Arial-ItalicMT /FirstChar 0 /LastChar 31 /Widths [ 750 722 556 833 556 666 500 500 556 277 610 222 222 277 333 722 500 556 556 556 666 610 833 556 556 666 722 722 556 722 666 500 ] /FontDescriptor 23 0 R /ToUnicode 24 0 R >> endobj 26 0 obj << /Length 27 0 R /Filter /FlateDecode /Length1 36808 >> stream xœÔ¼y|ÕÙ?zΙM3£e´/¶%Y²K¶%[²dÅŽ5Þí8±ÅŽåXŽílNÈ";+Àl ˜ÂV’Z Ý `hmÚ7ÐRÞ6¡-{y“¶ÒÅ/éÛ”nľçŒì@Ÿû»÷þ{5òÌ™E£Ñyžó}¾Ïr¼gbï& “€ò†#9ÆkøõŸ@Æ}{Ü¿Êlqû<ôðæÜ–ñ¡‹ß€•ñ~ç–íWo~ìK `ƒ{lÓÈFÝÜ3v|ß#1†.Àâý x¿dlÇž6Û½¿`§ ߓ޾kÃÈãÀ.5>ËŽ‘¹ß¢ÿ¤ñþ¼ïÞ9²cÓŸíºGðþ4öšÜ®Ý{6ƒ­óÜö!9Ÿ›Ø”{ðo»Ÿàv|?öác/ä…ïY²(ša9/ˆjV'é F“ÙbµÙ…EN—»Øã-ñùÁÒP¸¬¼"­¬ŠÅ«ÉšÔ’Úº¥õiüÿýÅÔaIýxÉ¥^æß[ü»|iþ|üö9î-Fýsƒ;ðßòÍùÿÃëÿý)>sÝCÿÇ‹(¼|A„—je`¸ò`)ÏácA0Žƒ8ø˜Z|ì:ð  ¯10„?ÿ,Þ‚&ð¨›ÐPj‘‰*%¸U V‚µà ð"ø%œÅºRFÀ.ð¾Ç—𱟀Yðx5>nQ°Ôƒ6Ðöâ{g`ü;5  –>°ŒÃà=X„\èeP Âøî)P‡?Ó†Á&|×Á-àð0xü ²p/Ü íF× Ç(–2Ñ»˜ÉùÀmþ¶¤òÙ ÈâOïãøÓ÷‚cà)ð-ð‡{àx>ÿ€Lèt‘¢þL—Ð¥t~V5¾‡ÿº ~‚(~†4h  tãßÚ‡—uøI·«@÷Ü>p\ ®Çw?îwãç»|/_ÃË×qÏ}/§Ákà]ðð'ðpÌÃX‹a-l†=p < ?ƒOÃïÂSððð#øgdGå(ŠÑ4îC£o¡ôôgªº†z‡ŽÐQúA&Íldžf^aŸ`Ïsíó»æ¿3 K“ÂO/;p–aÿ‚%¸dÐŒC/–æ(Ø‚Ÿûjp ¸?óMxùœòÔãg~Ì€‚Ÿ‚Ÿ³à7à·àˆð“z`ÖÃØ—5p-\7«pßï‡7Ã[á}ð!x>_ƒo'‡ñ¢!D!ÿ  ¢¥h9Á¿d+–ÔÍh /_Eo¡÷Ðß©*@UQ5T3•£&©/P_ÂË4õ<õ_4 mø7Æèƒô‹ôÒ¿¤ÏѦ疙bîÀËË±ëØ ö {œý r •Ü Nàßò﯇ ˜èO°vôØŽ–ƒ“X‚‡`#ø Ô¢ËÔû t¢jøeÀ¢Öÿz¦½þбú ¾ºåÀn8Ç\ ®Á½ùgø'Ð?¤l°‘ްÁ£ø©'ÑnŒ‰ƒxý=f ߢǰ†øO½ žÁÚë;ç/ÍÏbýHa-ñx]î™Óâ§û<؉5z k~ÖÖïàT zåšTM2«ªŒF*ÊË¡Ò`Àï+ñzŠÝ.gQaÃn³ZÌ&£A/é´µ(ð*Žeh APÖâmvOû‡§i¿·½½œì{Gð‘ÏžvãC­ÿ~Í´{X¹ÌýïWÊøÊÍÿÛ•rþJùÊ•Pr׺ò2w‹×=ýÓf¯{¬ìÇíÏ7{3îéY¥½BiÓ~eGƒwŠ‹ñ'Ü-¶±f÷4v·L·î›jnÆ÷;) MÞ¦MBy8)ˆ¸)âÖt«7w¶ÖC¥Z[–œD@¥ÁO5½ÌÛÜ2Ýám&0MùZF6N÷¬ìoi.(.Δ—Mæ ÞÑiàmœÖ…•K@“ò5ÓlÓ4§|{+ù9à÷ɲSS‡g$0:Voôn쟦F2ä;ôáé6oótÛ5låe3ð+kú§ù¦Öô¿–ÍOžì˜lnÎà+§¨–©©Cÿ~yyYçªþbü<Þ–Ãnò€«ú•g×C[=9F~@þ§lò¶#ÃÛÜÓ¼·Ñ;6µm‹Á15 V]]ü´c™üÂüy°¬Å=µ¦ß[<.ðfFš OšÀÔª«ŸéÝÿ~¦¼ì¤¤Ï÷áI­n¡¡Ö|¶±éÊ9¥¥\NZø©;’'òv`áO»7¸ñ“ô{§‘¯†¬6Õ€© 5ø2üÊ@ÜW[qÏ OIKH3>Éëžú+À"öÎþéߌ,a}Ò_iE¸¢Løüb{:ž…ˆpMXhøÉê•ýêò²}ÓÞœäžîÄ]zúñ‡2K"¸Ë‹‹‰üÁ(Þ™ž\ÙŸßwƒÑ‚§ g¦Ñ09sjñŒ¹—œ™\H§ñº2Z©/ÖûŠõÅ4øÄMúDfÀ¿€›>àüêËÿD)z¬#²ˆ°½ SR‘)oÈÚäîîîžì>Ò}¼› ÏÀ×åâÆu®ÃÒòå]n)*!$áÍ]Òqé”Ä JRw—ÞŠLŒgõ±ˆtáò…,H_š•f#—«"•Q*«²Z\ЫJ$ëau PÉD F 'à¯Nâ³±ªd¢VYMœr¬™³ZŠ ‰`#Þ1rx£E^rmüv£®¢V`›Ã¿Üê*‚HÅB(°®¢e^ -îúÚ ¯ö^W ê«9=„ ù ï¹s_Úï˜û‚¦š§S¼B>>ñÈU;~ ÷ýÀa$Èp:•Q˜[5´¤åcvC,è-ªx¿¨šûÃ3{6>sÓë]N³7Dxtñü,u3ÆAðs¹¼\*——IËäi@f_J¼žx?ñ×­‚º¡ÈP÷¥¯o–löT³¤Ö¥´3ó—mkJ[ˆqs0C±§ªÎV¯ºXEWUc’ S¢vS³Xß«sºœÈyµõDÕŽcót.3°VŽ 'ÎàGØq¬ýxû©vÊÝžkŸl?¢ì°Ñv¹½§}xá7ÝŽ¹a;\ÒÊM`ù\Ÿ½Œ×XB@z i<=['ÍÂáp*U…Ùq0ž5ƬÉ*$}orB"µDuœüù~"¯DÌŠEꂬZ-V ‘¶ãœ)ŒHƒÍK‹|ˆlñ&±Ø+` ¸³Ø±ÅiÊÚ[×qk„¡ {›WRQû±^FÍsj¯Y ?·ºØÊ@¾»¿6¹µ± ÒÈJ逎Òc^büü-]âtõÒ2Å}q—õDH¤) 'RXæœ_y›D1¬†‹ŠDÆ«ZÉXðMCE]]ßQ#ç“Ô|Z£×TJ=Ãâ.õÎ_¦Õ‰9æ¬zÁñBÇ«ŽW;èG:žt<ÙAM9¦:qP¯Š?,Eã“£èýÎ;Û ­3óçåêNëºö²±È`er,>X Ʋƒ}crf`fÌ­ý¯3tP☸öM[œûG”“Ãò~[åe;Žùá9?ôñF˜þm†»Œ]'ÀŽ3¨Ù1ÉÀ(#3=Ì0“cŽ0癋Œ 0ŇŽ0 óÜ F¤á^¸\7{AÊK¤³³é ,wû%Ǭ-"Õ9f/ÍFð°¼4‹kªf/Å2æa‰5ÞrSûR–+¨,²HÊ8ŒÇ×6MÖ!ŠAŒ*šLÜúV§ÉŽÜÃÛÂ%&ŒÕ Å“»|Œ˜ *uyJTõï?y”m.k5j4ƒJÐááO™YAM#•Ú&qæŠçã=7VVÖÖF=ï}# ±*Á€‰BNAØùÁ—'fvipJv¾œüI=¥s¿‹EÅhî6c1š¡Î Ϙϙ?2Ï›i3ËT`à|¦´8ãÃÛ§K~šdã4uŠ:K§.RXËϰçXÄÎ@‹\£.òU•)×åEÞm…'Ψϩ‘zGåÕ %¥r©É-§zRøIK©hêxŠJ¥äŒ½pa߃dÏ–éq2±XÓãyy;f+£`ÜDzÊ£ŸZVLU³‘b‰,IÛO䆇ì€%KuBOÆê±_MÏWµ60%Ýjw#¤ Cš(&°tuæ^g!#2FzÔ-èË„éŸG.W²jÎSd¤¤ÆR£&X=w~îŒ¯È ª8†å!Í18F«BfVk®X3-zµ Àšù?¢,õ+Üûe5¦ÍTlPŸJéŸ3°H¶pì]nèvl ˆ%%9,MÕ‹O­” –e‰„,—Á\Ùd*+Ë÷Vv¯¤Ë³H;il²é ³øà%+Á;äÛC,QlÂúK™ò)Iz$¯§ŽÁ0ô8Sº2™€NŒŒ£#6«x…AE¡GÜÑnññ¼ûzmØ éW©DQçw´ØÔ‰ú\-îhRk „ìÅ÷Ïý}Ì㕘B‘ç"áºUS¿Þ,,Ä]-pj$.õ™jJq﬘?GÝÀ”€ðæÓF½~Z僉jS"Qm­†™j˜Ð«éú?¨ Jå¨wVœ \ @ÀqX„âîzêæ X±ÛÁ'ôÕFºJK—ÁKe0´Ïëuñ*ø/ü™}G±ëÿ< v Te1í×BíwtµÝµß¯=SK×Öºª¾,=–aˤ帅‰Z e>ñü]®ï»Î¹(WdÃÎ,îçñÙ,f›3Š~âCÙqL ÈÚ`ÅÞ÷l¿¯ST×RD¤·¦²ã‡*Â×I§±@p‡ëµƒ‰9$f‘>´¨ŸX.DycUµ0ì”(f)®‘*PшâYÞýàΉ{b±ŸŸjÝõ݇ìp#-D -ò"·l¾±ûÖÎTjî«ñ5!ׯ^ؼ,Aÿ¼QȤ$žœìmH$¶¯Þ:Õ{Õwׇnƒ¨ß·<¢â4†kGF¯«]ÙÔôLiSç’wüÀj ¨Ñ8ÿ!£*A#Xyê¥xå~+ú‰æ%óKË~²Š~ªãyós˨‡:Zõ”•zHóõþ(µÌ²¬ãs•Ô{ï-{§‹zËòŽõ½¦wÚéWš~ÚñÓe¯vѯ¨bü©™zOý¶ñ]3@½º©»-âOûÑÿ9?òû+ÚÆtv—=b§ÖÛwÙ¿o§n°Ÿ±ÏÛ)Úí5õ›Tb÷ *–ýzѹ±‚óŒ  ¡Ph• ¡5êñ¶^û‰cñsq¤‹ËqŸÊü—Ãå£7˜ )21;~9‹qF""Uä4K^ˆˆ±ÍÈo‰%Áâ%hC^YòpܧP·< äʸQ¨Do®„zH, œU¡D°i˜ðâ°A“2©rÖæòÛBí%>‡•±5VûäÝ›­¨­±¥Îgdõa‡Å ìz2Ý·FæðØ‚Ðhtø ÔÌÜ9ªéþ2wuÐU¶ä6 «óWYueަ.fÑ–SKÃêâÀ  ÏÃY¨áxÇóë\]–CÇöX¥"m±Éä—¨ââ¶Q¹¢4·áñQ2?Ǫ¨~p4ËúÓå§›Nï§Å+&èì®ÊLœ°hMCf‰°&3šÉ 0s>òìä5ùzrª~RÐŽ¹uŸ1'fî«Ëf–¡e›J¸]›œ\dª{êÈYš^Š–nkÁð|ºCçB(‚!Bì‘‘ôÙ¶­xÛ‰þm绡»û\7ÊuÃnr6¡:¸ÍÚ»÷„ €Ûµ;dUjX•SMªŽ¨Ž«8 ’TnUü–jZÅñ:L“U§ŠDÂÇ/é j^ÀL‚˜›Ù”t!«´°ÙÉ*Zý”X¤ñJúëŸÒ³ø0aVÁx~œ.pÌ0^bbF`².Œ_"uÂ&¬K9ThÑ ü&†¨UKyÐáî19ႹòŠ9ÂAóKbobw¯\ƒè —Ü&(-–ÓX¼¢·¶£e5*¢«z—t¬Ý\‘¹{Y®½ ]QU«Yn“!틉nÈ Y9õ–®º‰$¶V E˜+ê«æÞëAÐRç*f -Apãò¶»"˜•Zƒ²‘‡ »Ê•C^‘fD]aÉÛ¯×cÇë+!¤'¼Á‘€£±¯¿µcÙ]«×ý¡ÔLéxu,¾Ï©Ôj]à6ˆtö¦Ó¶÷?WeåiZ4 „:N­5£Ò6î¹¹ãÚñÖÚBëÜôNËkXµJTA Tãíò_¨W©k@´ƒïÊ a¢ÖÔ-­±r«aÌmÄ*g…‰cVhåZ7mqíw½éúëo.†sA'øÅÊL5a2 :“$L&¡µëÚTØÿVYoÝ ±£)Ó4Óôã&ºit³gŸçç¨ç¬çwÖs ØaØ1-œ8)§Å‹"e±GÉ!VÌ3—ËØͺ0 8 f-Ÿá©D0/5bÑa ú#BÅë`“›ÆŽ6ÏDs, 6Á`Í’BK±n8ãÂöY˜aím´él•yF°w²Û;ŠÕœÂeÇûúåþ×¶ ì1êžô8t̆ûoFœ6Ôpõu_î¾ô¶Ëck,˜Ôzƒá!xî\kUsF³"VA±iÓΚäÛ_»á'+UlOýÜ«>ÍêùìxÐ×hÕs‡»Ý±oL}凥Ä[æ/ÃטJPNʦèiTDA Á|ž…úŒ•ô¹Ýq(ÀaŽEŽGÎè2ÂøŽÌsœJÅk°¼ß>’2nãO§„ýÃm~ ì~ÉŸó÷Ó²¿Ç?Œ›§üŒäâi?Í?Là¿%~¤‚@9îk2ʳ—”}áÒ¥:)¿(Ã;/–K˜AÂñ 5*î@Ìb–lV€š0ÊFf½–R I†aÀ/ôTF CñêkE¯æFoþª¤b57)³ÊR’ ß´ð‚Tå>yõÑ,›Ó´-ˆøïÿÞëué,X§»æ? J¨(µà59Þb†oªßоaÁ. À ,´LŸ¢)7ŠЦíÐKz·>ª—õ æI*yôL7ñØ4Š5Nűt9ÃÇGË‚¦S›©Ï´ÙĘLK岞²á²\ÙÙ2–½W†¤2wYïÓeOoæ÷ðïóái~”ô¼ììqÒPvÞæ|;sŸÔIgÇ'f¤Äø™•fõ áIcbt)›º.Ï׉I½pH{ÝéÓ&³!¶ÐlÍ#Qñ…ÈßI,‚>…”bÍ&°È±”mn×òŠ(ኻ®J5×·³°|ªÍÓÕÖ²yoq¸(TWÞЗ­íé¾üóHìr7W'÷´&DÑNQ*—žÌR”%XäT©>_Töw”MuU{¢ÆOùµ ±F«;¼¶k°oþ2ú*5ZÁ“r•#RIµ„Oa0Ö¹%Œ*¦n6d˜8pѰî SRØF‡Ã„ѯÂ0<ƒ<²PÌ-Í4 ¶P@ ¥E0ahù6HKi”žûä¢*PKJÚ­½U'àÕº9þ#õðGxÄóímŠïC„Pùq¬©ŸÈøÄøø§³EÆóVȈ§é/©É»µfb‚lQPDa&y>bvA‹õÊ‚Oa÷r¥4_»Z YUá‰ÞZR…Q"ʪմzÊjL^iHW(] vVii»IË…õ¼jWhéæ$¥á´jÃkd¸fk¡ŠQ9îòXõu=«iYb•øPmØc´{xKs,üå—='ð46G"#°ÞbÚç?™ÿý£à/²Q±hppÏ×°¦¯<²ÆNÓ3Ê‘5^§†ƒdÕOVkɪ—¬V“UYu‘U§u` Ç€ÓP›©'€³¼AÅîƒp`ßúõ+7X÷÷—äʹ&]Ç]Ó®³®ó.•Ûu cŽïÚ¸ôhÕºÖ£«³UëÀJi¥¼’r¯Œ®<¾rz%=¼®\¹qÂ:»(©ì,‰6Df± °(0€EòTã{ÏþIªR]]ù~2&¦€GGÒ}±Å`á‚ËF(c^†XÂùaa6š8Ì3òb4ãÃØg‹@L@ò>ÛRH¨‰{ó.oI)­å V½Å,„ÿ­«tÍ’Ž§œ£Jí/vT*5orš:ïœH"–­zÐeTß¹·öž«Ê-Ò:CƦG¸*GÜ6ž–Lô¶£N}Ø¥§ˆ³G!V å"Ú${]ObÓ¢ ì:X|ù^ß–[—yZ+ƒX' ‹X«†f]o.»ñ)¸»Šœ¡ð¶v±Õu+0*vÌ¿-}HÀFe· Ùz…†ö–ӨŭæÍEèÇæ·Í¨Ý|ÀŒÌ3È-‹§øsx,=ñf,"û¦€gÀE‰@ô%–æˆð²—ÇgǨ‘AÖÏ‚ f­ T\/ÒáZÌÜ,©= ënþοæþñÊÁ«öÁ—~Máu·¯ÿ2¼§ùák¡yðìñ5TžšûëªoïïúÙ–úéÏ}‡ØFçü?¨2q°\¶wEuÚª_ã4U´vð{äVç¡x‘!ÏŠG GŠYÀøüyt/Uj0V=ýKÿÙÀσo—Ñ? œ¾~SCÿP}ZsÚOýBü…Ý¡yI‹`)†lN£6i4j_ +ºÐá¨ÁYp`\4E™ Ñê0qÏ©!¾w‹W*Úw—®%W†x°Ïšð'‰ÖH¤¤òPà!¿24B=¡áÐdˆ’B9ìŸôî’$‘ÜÆJiXú›ÄE%YB=Ò ñ@‚MÒ p¤¤ó´i–XøYÅ÷Å^q>ÌD6ØÜcUIáw>À¡ÏG7®Ä6Hp¿’ÄÝ!¶»È{À"p¬‹'u…âæCèwûŒþmõ©š`$2÷òòe7%ÛÆKU ÒðZçµuuËœÎ÷6E×Ýž¸á*"I˜[_˜JWú*’‰ 55íÍcÕklƒ®é¨-÷zVì¬j9PQYxÓ!»Z…eT8?OÝE™Á~xLÎt®Ýºjl5Õboêß°vÓ®¿ç˜WW¼c{;õîŠw{Þg“›-µrUn|b¢'¹ª¯/áÈíÚU`›èéÉ¥l¦TÊVèëÞU`ÂG{R»ú&l‰¨ëÈ´ËÓX—‘‰GÜ(\•#6d3#xûü¡*tgJÈÉ 2 9©2dÔÄN=¤b·&®NÜžx ´ÀEé<.ÏzÏ‹š÷@ÏKÇ+`E²ô@[ª#ÕŸz1E§ztí®vÔþ>ÀÜÖ_­›¬;Rw¼îTÝù:¾§n´nOÝ­øÀ¹ºê¸×ë`]ÝÕ6 “tGt”îe„ôíëë{Öo^¿oýçÖß¿þ+ëÿ¶žg×Ãõ/ý}ìÙ6¼-·mr-m;² m‹ä5"•Âr¿œßà#¤5ž=¨ÄÁðYìÙ|Ê®¥ÙO›+nÏ!¦"|èºÓ‡*lÊF+®SVœ–XD¥}zrŒ8jáBÖ Sɾ(Ñ2Ë$F|%â)§óÑT¢òx×Cà«Ö¢Q’7$Ðò©Î䣯‘¼æD’Ñ×gii+l­ë0ªl{CC¾’Våìá°e{a…IÖDÌï»óîåñ*Hú ìV¥3Ä,šÛjC±"ƒÇ¶$ QhEÇàjAí ‘ÖÜ4öÌ­w²¼TPŠf5¼†T@h±7€8‘QI®Ê®o3Y]‚Z…9E±£¢i•ËZuê¹CQ§FÍsjìŒ#'E zQc9ÑZQn ðFìëk8Vƒ!PËi8Äõ]:þËòóðÌ¿N½Ä´€h?•Kß«ƒºt •\ºQÞbÚozÓô;ÓßL G-sSÏs ¹±Xô‹3óå°Ížú1Ä4%%šÆ`G¨}Iÿ’™%?^B/Ý\°¯àPÁÑ‚³°·ø‰ÿ9šÎcN£Ù9ºRr‡¢!9´xŠçA&B‘E !Þ26D±œé\Õÿli VR4"ib™öYv¢—õJH{lJ˜›½b®8ŠhI"•Ð"\â¶‘ÄMu"à‡ .3G :QjǵœÓ„Vi:²º=•ÃÖ Ö3:½aÝ Á-¢In#pìÙ[†¼ /o£ÏcJÌÜë·õ1E.Ú¢s›²ñõ-;B÷¬j^›Fï[þNhK‰¸¼î›áõ|íɇO¹Œî—ÿ¬/‹Ñ5ÿkÊMEA1øÂ3²‰'Ú6ª9Hø dßsÎ]›0û;&Mb\ ·`/J޶µ…› ß,¤ Ó‰ÉRÆõÝÒç¤û¥³§¤¬ Úç$ZzšÄÃHˆŒ¾¨‚²ê€ê}¥úÄ“wæ2¤ ëB^ ¾`ÜMy—Ma $`™ \°ë-¹gGöþàžÃ¥¡âª:_/S»ê«¹®«ŸoXݸ÷-ã¯lˆ–¹Cõþ¢Ž±/ž8#Ñä¦ùw©ß1Í 4ƒoÉ5ÉbO©ÆÄç5Àªðù„‡j¬³=_,6nÚê¿Ú›ÿÿÛþßûÿîçT~è몸{ˆâ-©!¿î­¥ÚzkNØwœ5@Ã-m鵨ç%êע΄Îae¤t!W(J‡ÆC†ØÐ'-‹Þ,&@—.d¥÷‰îIZ½Ñ×=°¸É‡ü²J¼€0\„YÅL9¢MU$mˆˆõV+qß¼o›'•V‹qÁ§]è9ôv}‚#œÝ6£iŽLÍZÌúŠïvõ%ÜÜýxÿ’ˆsgIÆyhmŽ.¾eÕîã߸qÙ5袽ï V9- jm1l^3wÃ\×ïÚxDâò²ÃŒ®qËÌpßãž&ÞÔ\¾»éµ“ÙÕOóÁ炤®Bsù"5yu;è[Á¼¼öñ¾'‡Þª§¬¿¿ï+Ý;pxtjÃá4#@°qôÅC5Gkž¨¡jjäŠ3Þs^ä=ëßX8x—ýŒýœê&qxýŒðŠð–ð¡ð‰ +Üð,¶T3ða9µz@Ïméßßÿí~ª@Ö­¡ z:ÆN47ocN¹Ïº‘Û=¸ëtÕ+=°Ëì&,3ð]Ùv¦ã\ê8ðc-<£…Zmü@Ï1!>—âxa}Í* ™q‰±¦Dë•w>C26©TVa0˜ç*e/+…¤ ËøóI,§O3, ñµ+JO0c1çÉ[!f1g³ òeùµ·Qœr~¼@­ºayPg¹)¤)¼ï}¡©Ær’I³ÚªSë¥ÂµŒ6<ðèJ¶pp…¯d=äwO6ì<÷ñovô\ïs$†¢kwè]?Z¼îŽ /­s'Ëݵ_õ_µ¦¡‘-¨Œ9$kÈÄëûÜ F!h§=oŠH’õµµ=Ð+¬&³)¦¢—Œ×­œêë,앨iàêÚ[o»ý®Ûþõ‹ÖôÞ¸;]ªæiM{MW;Ʀ5sÀ[Àç¬ú6üã2F§;Ÿ;Øýˆ©KÖ±œ° `ÉY&-G,ç-Œeõ9të¢:Y×£ÖMëXaŽãÙ¹”4 "ŽËŽY=îzc>¯KøóêB¼s T«·¶™L#:A'ƒá幞s¸X¦êªP¡ÙlfiÉlŒè½{û—ÞÙO0t3ºS úÀ—ew<^#V²åOÕ°O¡Áöl'ìì\¹é¡æ§šQ3td Õrû2BµªÝÂÛÛû sYé~Ç·@¯¡Þp"\UåÙQÓ› Þðp8>¦A¸'|$L…ÃýkóÓ—R‰$ HAÉþaìxèô td9PörUdœ´/c}´ëoßSØJ.(’™2-ÄcLŠÄy‹‰ wŽ'_„°¸(>þ§`¬h±f0÷ Qv‡ÿ`AE§±#i¤´ÑË>)†:®Ï.Јq$La$Ð=. ‡]~5gè­+ÛÕ¶¾ÌrùËV‹FSrY‹¨qмUÍ_,ž›Où-žWQfû÷”ÊE!ɤ2«7¢§T†Ô*Ú¯5‹^)°ÅÖtkUI‰Ë\\4SLëæ§e,!nŽ£Æ)Øþ[.ÒEá/2Pʦ 0½–ÖöõöØ(Zîˈ«g  û;´±Lz3¥¬:3’¡ÙåË…>y€³A›mCªPçsùoÞ(ýÑd´5º=º7Ê€(ŒþQÊž ,L ÷ _N gÖ-ä$ÌÀßË<ØÁ†á hC^!ÇS©Ëyúj'ˆ`MÙ°x€’â™ {Lp­)Ø9ìé—MÙœM2áNÉòp_¡ ?6á²Øç!\o2„»ªê´§ë@~å# ˜™&­IÅ-V¸é¢  q=XØ1ëÂUyŽ‹-Ô!.0Ú|^Q15±…aCù)ù«Õ]´¡·%YFCsY}R1*KGuyaIo¡ŽuÚÔUÕ7m”%NxÓ—^MóŒQ§†OTK~Îi‰éôå!— h2³PÙêØeàÄf³ž2‘ŠhN`UÍèEÁ¤¶-ûåƒ;ëg»º\ƒ7ð:†$ !bD³ ‹Ú¯µ¨kü…Ìœ<÷-»¯óé,tÀãvP %‰ºŽg]žèOÁZ“`§9 €ó˜Ù‚}±qx·ì3ŒUŽVQo¬y½÷õ¾××¾ÞÿöföÇ›ß6¾mz»’6¤ááÑ¡AãÌüCÏH›GÝ3óÈûãƒunãà`.1Å㑚ÕÃñ€±Í›s’h’$qxttX2à–a .‰F|™aXì9;Äѳ›áf±'SŸia­™ÒŒ‹e3;3€uíŽìNïÞµ›´Çã]öÍ£9IòçjVë`à ¼I6¡®tWS×ñ®S]L®ë|’º`× ü†l8h€Æˆa˜ÖÙ—Û±¤í3°L.þ´ÿ¸šä,¢þœ7ÎúÏûYI)ˆú†Ç}/}‚~š>O3ôË 'åä\On8ǀܑÊå&ssT.’À«®âzaR¢øéD‰óáÄÔÂ& lŠ*+ïñºô¥q}ÞûZÐØÏ8ayý ‡iO«ðB4w#êV2«Î@ËP•5ÑgìõZàÔ…ÃËã1-Çiþ×7 ‚>lÓ@ÊU*#ÏØÌ¯®í>ù?O?xÜÒ¯sbÎ$²$æÝ<ÍÔ¼¥XˆÏ}p}ÕŠ·Ž,-³ºµ*NÅðüˉ¶xÙܪºƒ·@'ÿÞ™ûZBð¸Êʼnt*†X¥ó¿…íàû@¾g©ÇyYKX½P‘âZŸL~¦Œé@C8´di8T¿²¬±>‘ðååQ·1°üB®$h-ÏÙ¹$ׯ­çvq7p`6ÉÕƒø_]©éJ¥ê®Æì^¹$Wr¼äT .)ùi”üA*rE‹ä"ºS+Œ®¤D³.…jå+bÒ> ©"éÖÍTdA1›ÎfáÄÄ„Ïïåœ?o÷ Õ Éî+% ÉP‹ •LÖª„âü+¸Jm½ÿ“·GV¨­†ÂÕÇÏßydkz_‰Õo¦Y•J·îäÞzø“Õ­Û¼®À]+Üa–ÚA*–F,KQy7é׎o;R[^´6JszMù˹Míøõ‡ËÛ°Ë6Cˆýñ¢åX„ÞÄ’ˆƒ•OÍ3ðYãeª2Lªm6M5îlóst1,ö?Fá¦lÐi¦5h¢YsNCk4‰jýMe/¦btFê+^, YJFš1ˆ'ѱ¶ ÷eÎ**¹3zc.µ¾%%EüXô[‹ÊÀi«UKG“èÐpˆg]Íe´€·z §Ö[Œõâ€Ò¼Ýyì„^%°']µr…úêOníw7èJDNÔŠ4o$š\9ÿ?ŒDÿ3r ï×Ý™ ¿vïìÙ9¹szç©çw^ÜɹwFw¢;]••®ž›áÍ7ßéy+X¾ñí¥—>S@öœ˜p .ôù¾ë2w¢Ìÿ ß¹fß`vh˾‘ìÐОØí·ß¸ïÖ[ Åܱ}‘l(ô`kvÏ:pØ|8ÊC>²˜»4[Cºìr*’Ï5*4 ŠÏÙ é ʆ\6m¹žŒ® Ä“½R¨AbÔÐÉûeÌH›`BÁHÇ’:Al˜+”Ȥ7Ÿ½4YÍù"`EÿYT-Ôn›ø\>9Cˆ’Ø6¹w•â(ßDôÙÄy™€rC"Õ*Ó—Ž`'ƒÕ†Œ¿HÃðœÖT›^6}ËÖuwêWc]å9Ȉ¼èóÙ ËøUóÜoíIQψ½¾8ŽkûSÕ¼NçЈcJÅp’Α’µË:î ÕúÔRÕŽžL®N¼XD‹H²Ìýîú¹_^c5=Û«%1«6•´Îø,Ú¬1RáD•ˆ}-D³4¤(FÅk—pcí,¢ŒÃé„ «µíU_¸ƒÛi^mxŽ“|ÿŸdx]X»)F±Å3{Æ7KH¯¹£TµÁÕÚQlÁcª3€KóoP?§`f†‚aia;*´œhfþv¹ÔÑÜänonÎ9Ì&‡Ã¼´©iØáÄ-§¹Ý±ÔÉ4w&2þL”Õd8ÂéQ§’p•}ˆm:Û ›Åcݰ¹ÉáXá\ª v·÷ï þ-ÈF‚7QÐA ˆçâãˆKñžøpüxœ9‡xðž”æv NŠÇEÌ[ ÝbNü²øºø¾ÈŠ3ðŽoË+&W ¤pbk{%æù)O “ÀJ–²XSXÿ§f” è|oÁŽ*!ŒvD׬WØ!á„åžEü§jq×êÚ#“³jY†Õ:cœ€¸M©@£l¨7·†c¡Mܧ.?æÆW¸Ô\ŸIçÖÅEÍÃN^³ü™„e/K9 K2-ñ»JÇ0‚™1^üòø²GŸŠ¶iuµ46…* «xQ¡JË[®/pÏ=ds| >vÉ-q5âósÔkL¸†ähk'ÜÚÓÒ’Û¾Õ´}ûÖ†––a©Éï/mñ7”ÒIßö­=ÔF_Æ· îÚµ.¹*³–Ht`c&KRèÂR¢ß›™ëý˜éy¨Â„”ðÈŽ$kÚ^²=¾½y;ݲÝO7”êb®XwŒŠcŸ«g«z´p48š¥£p”p±¦CkŽ®ybÍókήa&לYsn µæ¸DÈz°vxzÇO0&Ó$Ü‘c ¬¤Ò.24I£!†¹qrÁ \¬!Ë’$Úe¢©!cù,É…Y:ÂZpáJf [E¬ŠVh+Â4Q &OÈZÄõTµ1W*ž>ɱ±EÀ‘¼ZUÞP´#OÇòa§EŰXóbWRüœ? ÅU\ ó8¨¸a¸Xébõçñ(TÚµl@ ]C0UfrAj¤ èñ~±Gãô‰ƒ1îmìdtîz÷ŠU•%%4OÛ\Ûãzs—¦0é0Ò°Íe˜ûƒÄ "Å2$^µdϲ°ßO›ÄUjª+m슘ŠX à­ü’ÿ7Hº4jVT„¸•YîÞÿòÇ˵vhÏ­4ˆz‰%õñ§a•Y¬`(]Vætq]X`X4] CwAR" ¥”à,‘3•$*â],wÇ^h µ3”C⊅Š™‚§çKËŸúv7Eë8£!°ƒÁŸ –5²ºàµ˜AJ”jsßYwWz÷m/…Ð\Ûh XQr4=ÊÐzžUs”A4LÌéç.ÞÚW3úi¦³Hʪ ëТÕÑÃÀ)¼Ä5vfÕØé¶ {²u&o®fÙ-Ðö›–X%ˆù&Ϩ @À2ÿó#Æ `5x÷°zþâ3z{jõÌü‡Ï˜ì©IGX­öT¦ìö²'Ëžs¾PöJÙ+­o—©`ó7ž«Je‚e° 7¿]¥’2ç‹È,XŒšÖ·[ßúVZh½­µfHvãÉn‹¯ŒF¼ÒH)þ‚gLfe+{ð0íõAA~XFòv‹Ïí“}9 ðfÒwÆwÞÇøfà Ï­ÄÜÄp˜}þ¬‘>¾pA‰3f³aå…É®“üW–ˆ6Î 7¹Àí ‰òÞ-\,÷ ùQ%¨˜wˆ0X€>B!’I­€% e<$nÄI›¯²Í[@f/KÖ ¥dåÛ|¾òÁ‘ÂøTÝÕoN´Ý·¢÷GŽ7~m¼­ÐͰscØS™_Þµé‡÷ › “þïÏ}rt¬ŠeY<Ä}&‰Q9’¿~t}ë°%©·›y›–REJO¾vóÞžìÅ–ƒ†Ø° Gz÷ÝKzo»ésÙ§º­¬ÊnÖö´þvN=Ž¥94ÿ'æ¿5(ÄùsrÉsU/W!€\‘ª=P Kw¿ÉawðhÑE¨h÷[Vhå#¤ãSX^ ¯x¯Ý›ñ~EG{·ïÓ=¤CºŸ1sdMä‰È†ÀÈvˆ‚à~@Wj;^€C ZúX1Ä$D@F©ËW¼¤¶å'ùä“ù‹×SAÁ*Œ¹¸g±kªÅ¼ÚI UîyüîÍl}åñU©"¬.2±ü77ßzöŽ{—£çÖ|ûpw4è:ürnÝ7sÃUUkoxݰùØ‹×E‹k6޵¯Þ±ç–oö6ö-i«Ï|óçsÚÈŽ;ÞÙqÛ­›Ž­­Ë~ígÝ«þÐþ4~ÜÖË—¨ËÔ =à1ÙùòøN ¿ßì@‰ºûë^®£Ë먖n_ÆeÍ8 ù]Úçº_îFÝ›*^ºJ#qµ¶Î{u¸·©`]פÌñ78KCúlr;G{ªá÷«ÏTŸ«¦\ÕéêlõhõDõdõ‡Õ\ud!ï1{Y}2é’RþAÊËHÈœ°è…U˜Ùq³rF“Âi¯T¯/Xìy}ùZæÅRèOS±½¦°¯_Ì‘ 9ÕåCH!¦ÙH,+–h-FÚÙ¹÷—´ÐômœžÕ!)25šùþŽM¯ÜÜáÕ¨´÷§%®ìš¾#+jW>ÑÙD­(ycî?Wº ‚ {n=hix›‰¢9ž¤Rx2”À0|Ã;’ß{ðjÎ’üîÖoýÙ_(ê/o·^þáƒû&3÷¯Çý¸’òBsP¯l?bÕ€¿_¦z(t†‚€’(D)©ïT D0H©|’€À4õhÂ//¯u$ð-‚׆å%µÁ#so“ Wèòû°–1â»V‚§å ç˜[t¸Ð«®w]týËE»~ÀëJºK°(K ®ž)9WòQÉ<ö¦¹¨N S«4:̳JO˜?TU@2è,þ3k4U:—˅θι>rÍãîÌ93’Í=xsÊ|Ö|Þ|Ñ̳dŽbÑ«Z$-ãÄ;:¨O“RÍÙq—Ÿ˜M:±j‚̬ZœWÅå'V-ÌK •ÊJAO•ÕhP“ù'c%¾X¡)à‹õ-/p±<–,CiŒÍœÝ\«‘8†§¸@ÂßVªåéý±ª`©ËRýíÙðPËîµöòG ¯·Zc`!ôwI¤ç¾0wsñ©oôÕÉ>©ÜÈÌ¿OŸa\ ®‘€VQ"[ä.¡œ–u:-b¦š²d‚¼ IÌdIESÐYäÆ×•з[F=(‡Ž sAôc0Ö(ÃöhÅÑ t¬VDò%aÙª&o˜8fÃJeî)25$ÏÙ”©;&îJ”†[aì "¥n{1fQAU/Ž…þ’j9V }ïð²ØÀmCÉ›~³;ÒSÔ±~[͆Œ’mïéG¿øÂá¾æ;°oõ»NÓ?^±R* ÐÞëõ®Gß̽1÷ûýPàÍ©±šµqOÖÓª`xÝýïšüþé› µÄKß3÷Gê0s @•\ B#0Q>ƒ(@ØÏ-:ê ÑäqE#¤z¡ÿªôRñþËéµÌ=ÿÈàÏtÏ_ 616¬¹7ËÆ€¿Ä£DEõ[Hõª1:™§iÆ1y¹Úy£Q#úË  ´–ß«RÕ·(¦Šï=/A Áaéˆ4-½"ÑÒ«²õ”È!@=1~9Kv¤‹ )IØ]¾ Ì½!±#rŒäò°*®d<¸d‰'‚ü¤š„YÈé>yóµâô7÷loÙpÐÖu÷š¹÷ßýJwØë(ŽìZuðÔ–õت‚×Ô…sëî§.¼.Ú>Ðñ…AØýÄðæf£v¿ÙSÒûÚ±[žl †™¾úH÷ÒÃŽùט_aöxrýï¤ß¯@ yJ—a²y²çÆ•ì›Í4ÿµ™êà:š§š)G3ü¥öa³‘ã®[ÝlZ½ºù«áj#ÜW8Ë3%™0Áv©LÈõ1}5óÛ3ÛÈÉMƒJ©¬Þ¤2››è´ÍuSí |SæÓ£6®ÏvSŒpϨœîI§'ÓgÓçÓ¬„w9ò­ôOñ&ýÑÞÕköí»éjpxÛáS{á^FI‘8JJ"Ýa6þ³ùiky§5}é‚t¥bƒ-ãpB™N;ž5fbaC`´X“~eò ’J ø¨2òõ;JÑ©[%’çPÜ—2‹7œ©æãYÖEò£”´¦á¢]©¦ò—À‡Û EÞ*Q ¿pÊ[øÈ›„,8¨ÕðË þrI…¸Gáê⊑¤Y¤[ gþ*ËÒïÏ¢ú¾*'·ã›‘u)§ƒ8H{×r ”QÚpçÆåZ^‘t‘QMfX‹¬Ñ-ý£(vy½å¼øû’Îm_û[`‰t‡ªn(\úË¢/-ÝiÐh!ƒX­¤UiYÚÅQœ¨r̾;ôÊÏ(ÞIYiÚtr_¬ÚÖä4zþcîɹo‡*ÞÀR~‘©:N5Ç‹œ¶åÖú/ß ¿ç1h ´Ä†ìvRlCl %óÂã'=nQ‚ÉOƒ^£S–4h$[C}¤šà`'ThböÒìBmë¿AùgçËîM—–5úí•eK˜†piíÒpU=ë—ÕÁBùò»ùès'~Žäü‡ÔêÁ2pZÞÒÚØÚz¨˜jj@#h¯I¿¥~«ò‹¥(zMû[ååE€)Ò´­‚‚ÍAsàÁÃØ iJ.np©4[c©ñ×PòŸ¶jZ9_‚¢¸†´ïÎbîÎôcÅ'S;§%(ÍÀ§dÝ ‰»§T:± 7¨Dd‚d;0@Jª3äÁ™T æ‹I¸YŸÇ’4©¸€qssr–(2ñ¸IÎÅHªÕŒéŒ5fMæ;'€õ޵bŸËX˜ÒŸ\äá²äYޱQÉ€ž }"ÆTãAaõCæ¶æ„Ꙫ &‰‚zS)Æ[²ªu›4𨖔G¨°ó?ÚG‡ƒ®ºç W™œŒÍÅÞ{˽{õuBˆ\:‹‚èÎ?²˜Ôï‹•ûšƒŸ ‡f³ˆ¢Å7 ®ºþîO>zü&ؽýÝÆ;xëü9*À,8.Û©:ÚZ›µúPC§©¡¡³¡¶žR×h¿zŸîsº£:J§sv¢!Ö¾§WÒø_rEôïNZè¤JÀÀ@¦z¦Uß l§lÈf[/•¸KªJKN•0<(ée’×X$±­1%–}a6•qkÕBðK+Õ&™Q2.v* Ý/ÌË×mi1CPZqå_/,ÎEù„I„*2À\$°0cÄ“ ®“ âóèã\K,åb¯áiHYË×´Tׇ–t¸,aùú¯Ý]7 ãË‹u†î‚ k[ÂX¶ 4<7™ÑëÔŒë ð%qzNboè+JêX‰Â㓾‰§ƒ8iîkV#ë²— fäÖå7÷¯¯‚¡Ü¬1K~>f3S˜l¬½uåÝßõ[Y†2ð*SåÖPÔçùÀ#2¤q u¨‰#¶d#¶¯W1N ƒ¼–bÆR`µ¥îg!Š 5ˆQ£*D«%°ƒ—*š=ò.‡Ëq£§ŸÞJOÑýwàñì'£Êx#)E Ë%éÐWʱÎXïåÊ­åòMå÷”O—Ÿ*ç"ʆZ_Ë_MH­R¯DI÷º1?’SSϧ~”z3Å +óñ¤Ž§˜o)¹žH¾Bž$I}/ÉQdgÓYRóUÊ*£aHæÂ‚0ÓïQ0^M µ/yWl÷§“N¸+ -GQFžf5¡UÆ‘ðÒÕí…*Š::^»¥î†LY¥Ñ:–‰Ü𢍽¢ÄàDjÆl,lô$–÷žøõšñgzv0NA¤Åˆ°Ú¹jç77ù&çÛ¿~ÍWŽ©P‘Þ¢ÓêL¾š¢ »jã@I²¡Ø\©oÿëæ–GË–9,‡Ã(¿Ì ]® ±„PiõÌ 5¾¦ŒÀÄõª~×c6åL“¦ã¦i+™zLÈ„èòRd¹D&‘^ àc d%ŸÌw-h9§Ì"‹¯Òv}n4ÖæAõ~oITì×EÄ£B|7CQŠEzòDCóP»é¿‚°óY›Í"`Oàœ¬š‚ÁšGP¨ c¸Ñ…‡&h),â톅ir 7PxÕ]­—ëOÕÓ‘ú]õ¨žPÛ‰ü¼õ ±Xz–ÔG-fá`•-‚Ÿ{!¢[,¥¥È€#Éü;Aó–˜ó<+þÅé͉j’§Jì¸öµõ×,³ŽXUV±/´ôúrU«W‡ŒzÖ­^R8QY!©Ìñ¶Ýðp¤qI‚œÈˆòï}‘ôŠSW˜~4zlî‹×D³¥F[’jG¼?놉[vùt>¤É¿º)ªÓi)•]íL¶ÛÜcù?2ç1 =^~ÄQÑs·Üò„«!ÓBxTûòÌ2RfÝŽ‚/‰Ù2.´!_޽}Of9·]õ`æ1rà‰ü¤-¹ù •ôu¨Ó&³ã‡›\·ìðæÃòÐðб¡ïúhh~ˆs E‡ÐЬÖwø‘ûÂÙ;×9ƒÃçµµ(GV»´Pû²€¯I—ò“,.\ÈÏ²È·ê² ýñbYô%eFq~_)_«ŒZÿåHwk¢ZO,Ö‘-&É…lh~¢‰~f2¹¤0.²Ÿ¦Š÷ÝDÞ˜gaMƦ’gýÔy,ÜâJø‘T+^ñø•2€+ó”óè)oó«´Ø¥bY•eiÄÀ@›fhc.¹ ñâ͆f®ó°÷ŽÌE–£vT¯c<|ãºÁÚÛ!í¯öXPùo7T³Ú•uVŠaT; u_‡«©ªÈ)ŠR|µÙlðÚ*«2P`4|K…¥YQeqÇ–WúåÏè,F†7ê‹=Ë[WÅd ¾áhQ_¡š¡)‘S‰ªhŠW "Ãý'¾>D“¬® Rß|ì‹…z–Ò JgÄÏ*˜$xmXP—ˆ»Û³ß|¼rìPs‘–5èŒ5D&Ö¨a9µc Þ# lïcZŠ×P „[«þë^ëíåf«x!1+e!ÉrÁ ­†ÏaßLz¼‰IÁu‘ƒ›L ŠÍÅjÚö¯ásY|¾`~Ž>¬ä–;Á8)_-I²N'ü[%÷º×µk,ÈPè!Ê–òf¾²üååo,§–gØÓºHj~%ÝÐ’í&¢Aš™UpÕv`î3o1ï7Ÿ5_4³nsÔL"Ãf&j>eFfó†`gvh8ê< ÂhP"¼ .Ìd¾°8Õ-›ÊFH I\ã'Ï*óãóËÄ>Ø•™lÆêÅY‡ÊdwÌÛu:œŸìYýÙÿ¦³J„õæ=8¢áÞÅŠ8ÎĩƇQ~î(gv¢½0´÷î%×=Õ½{üÌö)_ÁÜŸÿû¾£?öx= «¿®˜Å"b!ìmÁÝUÉ·*h‰­]×ÛAfAîOš\½‘âîG†ž³À“”¥ßtÑXd÷Ý·î ›TEcÉÌ}¿g%ª–vÍÁ¯è¬MÂT½ôŠ]MÁ9µð½¡ÐÚV}‘Ñ,§óêöÏ_nå¼Òê=‰Òëj9«èëìýc_=F¥0¦ïÐó`)ÈÊ<ÊTfjT–ŒÀŒÃ•)$0Sæ@ît;oTááØáÒu6Œ!ëf£,%±GØã,5ÌæØIÌûØôÿÕÝ—†Gu\‰VÝ¥ïí}‘Z[·t¯ÖÖÞÚPKhE€„ØÔÈm-Ñ h©»/,Æ6¶Á‘M Îbc gðs‘±MägDZ3˜¼oì/¶óxã8ãgû 3Éx^ÆFz§êÞ–ÄâÉò}™qn[{:uêTÝSÕKænÅ!›²:M‹~Ú&·Y Œ_*,@5-_ðY(ÊN÷Þ”aœH''Á•šûí\LmÜY…ôïÃ2i Ö>óÛ&»Q£cxŽÑ;¤ü„ 3Û•ï¹ïÓ(YËèJ?öooZyKV‰-®¦ÑdŒ2ŠšxÆbâ5zo°î›Y:µ:id‰CÔcÖe0©3˜¬h¼l*»·#Õ 5³¡Â¡¼Kå¶!Ó%OùP¨Ðc8W3„Øôä65X2“ÏdMãCÏ99Äíàá±ëN³Ý9å<çäç‚“u’yîêW°¶ý8dAûQÂUòßBÙxn÷&"Õ-wºRmxÓ#6O1×+VÅø6‘ëŒ/·Zt&>Ÿ×¤Tge·/«ìa17²É`°|ŒÁ”•W™ÓÜ·±±×ÉÛmZ^ŸkÏÎI’%Ðo±;ÝU™}K~ݽ©‹lh, Z<Ïæ¤ç.öu×Î,*5³9ì >9QÚü,J48Ëalîs†!ñbtÖPúÅè!7ËbÏZ(h=“›("ä‰)K ¾“{!—rcsÉiï‘Üs¹š\ºŸU^…™æ+XþÃâ~‹ú(ÁrµÊJ©£~YT­\sÛœ„béêü1](‰Øë L~05è5 z»Ý–dŒ.Íl÷—¶mš±†òLz#Ÿ!ˆ)îò¢_Õ±Ö»FnrIV(¹¿ü%ûâW Ü–™Ê¶™ª|Š9ý=À[‘„ŠaüOžc5–š:FSÀÞÅ.²,²U×±Ю†q£Ùb­+ÑÆeî‹ï¿-‚b¨zg5S½/.îî¸cqlœ1¹ƒYÕS™ó8ÏW:Ò×ë=‹ö~û„} „5¨ð&/€z@†³ö·+7;pcÂÁX²£ÀáqpZäÀ5GýÒÈ=ÁQå8ŸbïV6÷#ŸH®˜¹ž±ºÝÓøÒsL]4ÃÔ)'ú¼ÄFkwcÅJ~ž!”ëLæÆFúÜ™ýÈ «ØA£Ú*[txojÑÒŸ~ãñ—*ÊÓ7Ü›P¶ìý'OýCYe.¶¬I.ól]Ò¿7%=®ÓXdnoNÌ-r¯¼#tä(³§DÊ9ØtÛÏŸÚ]?’'å·Ø³ï[óȯ^¾¿m_~ê½ù…«†ÚCEû­HŽ©­üxFbvxpkµï¡Ðí}zÃìÿb{`]\†{|Ga”"}1““Ÿ±;u_~¾¾ÓñGãØ·£äž¦„·üßr½t#"×nI…ÙÙ,§¸XÎÅUpË8÷7Åã´nê°ÜÛÒ‘‚BOá`á±Bn¢ð±BæG…¸N—äc U½SHY:}NfIºõF·Ð¨åV4cbrpÆÜ ¶Ò¹Ï$Êý@ÔÂ|§Róö29§çÞc¿^&töôÎ]5[ýͪÛ+V4{e“¨ ú˜ÊÔ[߸øÝ¥ƒÜ‹í+·?øÄ,zq|@k4ë0›SÕ¼—¼züÎå[Þ|´Ë£auf‹V§»ôÔéO2ˆtnjíåã`=äBAÏRǾ÷­ØÊ§î,2¢Ñu¡JÔ‚Ö ´=ˆ&ÑôKôÏèß9[ÙŽ&£¢7”yþ{D <é1ÿLÆò‘rC“aaÐÀÈ~ÁÕîÑÈ Ÿ«ºPCQÚ^˜úmê‰QAµ«4V a%›‹ÝkvôÔ Wô?} ýÎ}Ë·þ¼*ó¶:÷¬mÚ—µgÏú=å˜Ù9Ô~ß wÎ\pþqœy¢ùɧwN}Ñù`øXa¼Ö=3!0•Ѭ³¢o0tÎ;¶69Z‡õšŒêõMn}ãê]‹Ÿ?ÿàø!÷Êà ñüÃçTÏüÏwo}ý,ɲëS*›7ŸªÔÃÒxÒ!d:žU‹cõž;ïIIK5Äúž½åžC?ÂmþeUä.ÏfßR@÷}¿ô<:6{àéô)yzö€g"xâ¸|Z²ÛoîtôsÏ>58¸µEŠni‘Ž?¾58 ŽŸp¹n¯F××›†SO%Í©ç½/Ïd{Kk¼‹Ö•2ßðîóÞËôy»º:Û½ëÖu2§×Ò_wBKâsÒ‰ãåA æ‘îÂw}ž8ÌöÞ Èc‡¯Öôä üáiÜàI­w­’« ªë«×VTï­ž¨žª>W}¡úJµÁ+c©ÆÕ \y2Üy5y¼Ù<îy8/ïô)IÂY-x°ÅÜ!ulêt¼ÚñN‡¦cßùÜ…M—61›Hæûs]»nBÇê>ÆÔ4ì*=rÒ­X ÆUª{36@>É«§QèáWóQ µ«²|®š ÷›Â¨/99­žä¡ááÀÉS§›šS¥Ôt©%=õ䉓Op565µ ƒõôÀÊë¦×ï-ð¬"ŽøzÄæ}ÖUV,áçR ŨÈV™²\l½â8ƒ\ T[^LÌþcË•¯ ê…ª9ºYºÍ@·Û#&Ô‘­‘‰Ø„SP oá-/&»Ä&†&`4«J9ÆE30c=“¡~GŠÂ¦Ú;˜é œFjŽ%h9æJV›·¾Þ*þ0%Ê•ÖiA6ÖÈå…%µ6‹ÉÄY²G­t¯J±óì6XŠæÛê³E‹hMZžÝ’`¢²ô CBC¬™©–åa›žekE‘ÅÙúë[“0Óœ•ÀVMœÑ¢¯kαˆ‚јì27¯,HÊ™¼{‡A+htù¶vîW¬B9ƒFkå0§ã5FkÔÔÌÁ†èšQ×~ÑÖröPi4¾»%gCÏk ZžOà16Š‚j]ÔÙßÝòF‡Ën5p¬(j`ÝÆ$CQЛx£#*urYzlƦ„EÿbyhI¼eÕOð²ÊR‹ž7Å‚Œ4,ù`rÆ9—hN'ä¤Ìij?›ùÇ ƒÓ‡°æTtïcú\4ÞE8;1!*ZÚžh!2Ô4ûšïñZtOxV¾©}K÷öî·o}_û¾îÃÝ¿¾ULÐ%ìN¸Õ«ëÞÝu«Æ’fIwæKnKÀ2bµ-!KØ2V624²säXÐÜ8²é©Î=ÀÝ&¦¦$KRÚôì}GÚXXFwYîbîúÖmn8¼?Í–æ–v‘»@]i¼JÆ]·Ý¶_4F‹¢1¼nL4î’üiüšx÷boùºÂuÅL"½mÌ쵓:žéöv’5·nÍrïêÕkDì=DÂÞ齇x·Ýþns—ÔÅtíïª8´üPcx,YâD”æIcÄ´Ì´Ê´–´Î´Íi»ÒNÓÒ<=W9Oã¦ÆÑÆ5^l¼Ô¨iœÆÏ{Ì¢ÕŠݶËȶ‰@mrwÇDìD»Gãém­±•q2õóÑÈl#\ݤfìÔÜ æ#úíÕtûœ‘¨:Â1¤ï&–×_ÑÃfäÅÜ…„åeQ¶j¼ÐÆ]ý^+ae+Üì:¦ŽV†lF¹!anÐ5¿EXBm|Ì «#»D,~¬TmP âÓÉ—“´ªÆ rfAmiþžN°jEGá:g}Æb×ñÙØ1vÿ ^ÐZ*cM•º(“%¾âŽ•E +çy Èm€"Ʀä²ÝÎ_|ÿK³ô‚È&WÖ$jYA´™™o–6äÉ&mìèÌÏjDŒ¸¢Í™i?óó”æÌÖX»–5Úô'ÞÅ}Ø´4Ál5‹¼† Çò:íÆ«ÌüG½g1Z³ï¯È|,V`XFÏ +ÃÛœ+ó ŽÍ<úúË[/jõˆ3ja½oÊ{+ùÙ·_:–¡™™¼ç‰Ñõ™±/cÎrÞùjæ—›v¦$3³Àô< «ÒÙEˆïâk@YÞ‰OCçð{±ŸlaQi§¶³–]Ö¼ÓÕ´Öù·oç5ÖšQgL´@«Ý߈nm ìC^Ô`iho`6€Våí¡¦ÑÞÎñ{hÊæ­Ì­ð¦x ×åŠÑö6C Ä2ì4±¦î‹wf:KÍÎNç.ç÷‚³fSɽ%ÇKÞ.ù°„/™ÆEÏMd¼œÁd©*öžÖoµ2­ÚÄ5ëÖ ®a×ü]O–ûpŸ[9pÖ½`âíVg'˜,)×m×Э@ë™I$b+Õº‰©cÑ‚“¬QT¥SIáž¹›-•‹÷R2ȉ zì±L5~$ßSˆ$°kyÕgžMé}!Ķ€Ñ(,­7écë Sj|I­$ÆÇnŒYcOJLÍI¶e=¼Ê“iåkù6Ž•ÅûÆ ñÚ½–7èüYvM‚ÍÑ%½W“’eä:+´öÔƒz6/®}K¡Ý^’bŽËÀ—·Þ»r±ÎX+té4§Ñ)²ˆ!Ê=ø¢7ªª K~S±‘ÁkûJ†f|_YÓ ð’^Ãëˆ=‹y“QƒFkÓÚZ‹6|)€n•dœùü‹Ö®áaª€x<±íÔ€f«á])§m¿³º¾·ÞµB"·CdÏ~É'ƒ$î@CèGjFÆíE¥ÑEE¥¥E©‹ØÔµÞÊJG+ò¶®i­ó6‘ëgZÅlo~‘ØFNå4ÿÈ­¢ÕûVîñ:˜ÒÔª®Œ¸¢–"o‘¿h¼è¢‹EBh4žs6Îövméú°‹í®‘^•˜W%,Mãþ{¹Ù;ïùòÙ`‘]§ôZ̳uôN÷Z;vUgÚt–ažÀ¦l;ÆrÿÌSQ)Q±±:•Üó‚YN§e¾ƒ­ÆÅá%õË­dKœ/®XI¸ƒ‰¸4¦C¿É\õïÈ!Ò:e:Žç~ikõÕß )üC€jQÄ\Ío¯þvÁo atí¿ZòciÌfW³Ÿ¢dÎŽRñ»ð¾UŸä`ßE+XªÓä 4‹ƒ0»­d~€Ò¹Og¿¿€$æS4Êþ9O!áBK٣Ȉϡ5ÌQÔ~¿vöÃû.öÊøïA…ì¹Ù?^ÂC~PFŒÆƒ6B=ñV´ ÊÊæíÈ y…!N„'@ú1ÀËüÌ^´Ü;rqhöܧÈÁ¼‹r l/@3¿p’~@3·-†|6 öÙÏ4?@&~ëì¿òeCSÓÑOñó4;Ê!øûÿSÁ"üZÜ­­Ö~©çõ[ ÝF·éïÌ;Ì¿·yÍøH`(Ø;²y|­OH-UFEô—, nˆ÷ÿ7¥ÿü:µ@¼~H±”ÒsŒ¶ðFZܘ_= ßIë2ïm@‹AZŸ:Š(íIÉ›U:FRBJ%žâßï!µ­J¯ÁÝFGó|ª¥Á™}”fËÀW‰³ŒºÛÕÔ } Q€2¯ w˜J“j©a¨£Êå!JÇHÿ×´¹¶?7S.QúÓ§ö›Rg¿Ú¥¤Ú»;hŸ©m#ñôWÇi­¯/Éu C´d…KräOÒo§>7Ò•” ~2-Õ§Öu\•Rj]VPzQžR|"4-¡RMV%íõ=ÒHë»¶%De*iáÒAJõ?(}¦r›Pîë9áf½¯ÔeaY$Ìïýt¬’^/Eåsµê ó†2z”út[h 7£óÂqßGyL¡Ä •:7ãã´5›UºÈtŒçø‡ÔwpÁLå§9\Ë7„ UH¹CŸù½j ªŒè¥cÎ7—?Ï#*%{¯‘d|‡iê•Y!Êy½”~JOEŠ«õñ©3•Rnß‚:Eú{˜rémí8¥…í¢e~ Ó|I8)}3}Û ;é_¾JåyY’OùdÄ ñ·A nx†!é} ¡Mj픸>5wû¯/eáh'ÜñÙDÛ0@[6_ù à5@ÏF€¥0ZÞ¾Dö5RéNüÀg5<ÉxjÎk€¿Ôw 2"…?-J‰Tyæ/™sæ{ͯêcêØWÆÅ8•=‘2 }v,˜uÆTÔG™•¶-½”'üªôRr掠ðѹR‘i„½jiDBîP¹·on>›—Ã_G™-1 ½ÛKs—üjÍ‚Tvû©?™ ~Tç‘›Ñ+ ¶+@GÒ|.ó#ùÆòÔ™™È³>*ÊÏmÅ×ôO[u-¥|t”ÜÈ7–:e*1•±÷uÜA¨¿|†i‰¡=?ßJ?]«s„©üî¥5¡”õ«süŸÓç²Ê‹ÛçdÂ|¹dŽPuñé×ëǹs±ƒ øVi_øORŠÔnÍ?ÂWkò›—‡áSV¥ô˜DGØNGâ¥8Éó\{”z-äîˆ>§Ð~]ḛñÐÕ¢yþh¡m¿±ç…Iþ£àï£yGZÓO]EoÜ~]Ñõë‘HÎ!ª#ŒQm@žÓR|P£y9ðçô~$?eL’±ºCíù1ÉïÆ~T¨¥´ LeÀÍWd‘뽎փQmç©|c ýêœÞ§¾-¬‘ÒÂA‹ærX ò¿|+@W*‡5L9è#ô×äK LGc+h§¬úûÔ¶ÉѬ s_Wßù™”´I¦ÏåêZ|;<û(5.S5œísó±4!£e·Rùj³ZÏÁ¹9›¤YM9V¦šÛ šGH•n¤ëi;Cê âû›´@ûeG¨ÔQ àºN#œ×Ø®³½êXR$7IKf´ÈlNrR4SE.-”d¾kÒ]/æKRÖµýtÝ h>•[Èh£y¿Ýs)BT6„U?…VAuÿ­©©èéÍÁ§êm×kØdžú½ª9+”TÖª4¨Æ'4¾ŸÖ0´ Êéš›õd•W}tî[¯Ž<ÅïoE?Ÿ*Gæ%Ù Wø¯ãŠ0å eÅ"ÏéM˯jû>¼±ý½* ü´… •¯¥C`Ì饜æRDZRÂnø üMèñׯþtþ w,çq…Ž7 »|]ß5{™t7ókò¦sÿ‚w.‰+äZ¹&®ž•ÒK5ÆÚª¯Ë£° •‘¤Ô¯‹µgÕïcdU“ÓŒûŒß%M3YgGŠ¥£ÛŠÍ8ã#Nú™]ÅR­‘Ée\Я“ n1¸.&ºig&I´ä3Ä‘ÏN.‘ú&—*Y7$MãÏ\Yo‰g¼à8=öáicÈ#½Ó÷ÎÈ;“ìž‹#'Ù—þZ.1 øƒ3;$ùUü*ð°øY\{¦Xú?Ó¸ö™b©B®µâZtàÀYà9¥ú°h×z\Ør^>ï9ß~~ïù+ç52E¦Î_:ÏËç1ºl¹Ü~ùÒå+—yrQ¥áP‘ô-€£mµf¼rX ù-&„ƒ§à}Ûƒ{–cùäÄÉ©“N^9É£“–“'='ÛOöœÔ p*ÊàÑ/œíÇeSûÏígÐË‚,:ðØ XKmxà€'ö4YµVíD­Ÿ@ðð#ôYCŸnG˜ø{aâÛÂÄÃÂÄÂÄ^a¢_˜Ø$L¬ÒÄQ“D§˜ Ɖ1b´h-¢I4ˆ:Q5"'2"n:×Zûä©/V§BÕVm˜âSëð”­µ®©‹ÃSQl+Óººnª"§z±cª<§uJÛÞÕù4ÆxÁwŠ98ÑšNh2ñºË1e[Úùþ<ðÜÖ³‚ô à׺¼&ˆ×ÄÂõŠÃg`ÜÚ{O"º!C|“B®Òà_]eu>-¢:ïÒ[÷F¯ƒZ÷8’½u1–‘%´ ‹“ãîp¼À!ü$Òçx§ ©uSF”W›WK‚`À x›Õ ¸;';^ÀOªAð¶=Q(')w·…)N_0Áq(œ“³1´Q­áXxÿúf„Âá1ꌅCcœÐÉ,…0ñ£8£)¶aó4Û°yÊsÏ”œZ?%8Õ#%µ¨+´{Ú3ÙÐóKÃýðH­_X" Ñÿßôgž endstream endobj 27 0 obj 25795 endobj 28 0 obj << /Type /FontDescriptor /FontName /BAAAAA+Garamond /Flags 6 /FontBBox [ -138 -306 1062 987 ] /ItalicAngle 0 /Ascent 861 /Descent 263 /CapHeight 986 /StemV 80 /FontFile2 26 0 R >> endobj 29 0 obj << /Length 510 /Filter /FlateDecode >> stream xœ]”Mo£0†ïHüÛC:܆áÃ_|7™$ŽÊÒ4þ´ÔüV ß«‹7+¤?í›9¢îOsâ?!ï÷ÁáËÞê¾ñסªýXugGE’”¦ØíÊ8ò]óÿjæ˜u<Õªq‰¶st’¸u¹€ò €ì à/€”a$ä€TÏ̱€Â°fæ¼reØØÁ–axcinºcØbYØ„ð  OŽlðáJðA5|FŸ ¥-}²@Ao6ødúäˆ >Ì¡`n–>ÊM飈¥ƒ©¥OŽÒ|^ôI&ôqhTèã0¡OŽÒBA;|pÀBm¡°}”+ôqPú( v|Ø}” ôœ¶ÒGÑŽ†÷ G¢‹$›jðÁ¨”>ãÕ”a8Í,ME£JeéàÃôQ¼oJ‡F•>޽Ñ'%„óá>ôq¯£O*¼bŸWi¹mø@|Ýåú6Žó5Æw×w¹¸m翾5C? /üüØ2œ endstream endobj 30 0 obj << /Type /Font /Subtype /TrueType /BaseFont /BAAAAA+Garamond /FirstChar 0 /LastChar 64 /Widths [ 750 333 489 510 229 291 250 479 406 770 510 229 416 333 614 510 510 364 458 510 416 500 447 218 322 416 666 218 468 468 656 468 468 708 770 781 489 177 229 635 500 468 770 218 468 468 468 312 468 760 500 614 354 447 447 666 468 468 468 562 770 885 833 677 625 ] /FontDescriptor 28 0 R /ToUnicode 29 0 R >> endobj 31 0 obj << /Length 32 0 R /Filter /FlateDecode /Length1 25344 >> stream xœå¼y|\G•(\u—¾½ï«–î–ZÝ­½[Ý’Z­­[»dY–,K²ÚR[»-Ųµ{ ÞÈB'„BxñÀ°LBˆì,È1HÂú˜@†§$0 `20`é;U÷j±ã0Ãü~óýñž®Î­S{Õ©sNSu¥ùÙ…1¤F§‹â#‡¦ïœ¹a!ô-„°qäð¼ûc#ŸWþ B\ã¾éýçËú‡’eCü–ý“ÇöUþ¸«!åg ½1>64úªöÇ„ª> m”ŽCwå5Ä_‚xÖøÁù£+Êûg ~âG'§F†ÞøÒåe„ª'!^}pèèô—Y- (´‡Ü‡†ŽYwê² ãIûÍôÔÜü>4±†PßIþôìØ´î‡ÏNAü' †á!?j@e$ΰ/ä ¥J­Ñêô£Él±Ú쎔ԴtôÿÀ_ˆX>yyyÙäEhíÇë°*_ûwÞ€ö¬– ÄB¸N]Ù"ºö.?ÿù(¶”{ð] 1裿ƒ·`Ö£:lDIô Ô³Ðзñ7 ý'¨} Ýܺ ›Q?äO ÐÐcèsè)ô=Ìâ C­hM£ÃèvÔ % Ÿä.A}?úŽáWKv@+KØ…ÇØãPã>ô=¨}èÓ‚Ñ~èãï¡Î"ú<”ÏÅ­ø‡øWŒ…Íg@ÔŽÐót7ú(”ûm{ýýcàšù“üƒ(e¢,TcÝýŒÀçÑ t ÝŒ¾€~€~X‰3p&>ŠßÀfŒÌ$s+[Ë©¹øäºE(½$`v¢Cè;èûè5ôkôïèèOÀâ:lÃnìÃÕ¸Ïà'ñWñ7ðKÌOÙL6Æ>ľÀep!.É}“ßí¹á ¡Ô€v¢NÔö >´fxÆÿÁ9ôqôz=Ž.Âø¾Ï·Ñ¿ 7Ð%ô{ôGèÅ2¬ÆVìÁQ\ƒûð Âûñ8žÀ³ø~žOãï0jÆÉø˜mÌ.¦Ÿe0727121Ÿa¾Êüù)ós¶ˆ­`GØ÷²à©œ’¹:€âa iЪFY ôïF»é(÷åfrGá9ô;‰nB·¢ÛÐ=è^x>σ0þ‡àyGÐÓè«èkèŸày}ý½ ¼ótý ý ØôjÆ-x;oÂÀÄÇÏàïá·ð*#ƒ¹T0•L5câÌ~fž9ÎÜÌÜËÜÏ<Â< ϘŸ0¿b~ËbVÅÙ4ÖÍúÙ¶Ÿ½žãìIöyö{ì/ÙUq2®‘;Î}’{œ{’û6÷=î×Ü*ŸÊ×ó-|ßΟáïäÿÿ¢L#K“ùd÷Ë>-û‰ìMÁ&x…°Ü3ý8Ì÷?Xà†ÐIö´ÿ„«Cqæôüoð~?ÍæÃŒÿªCUè—¨‚?ƒ>K¸ý+HÂÑ _ƒ24Œö³·BSE¨èÿ~”‚|¸[ÑÍdvX‰^nÛÏE¶[3>4Gñh´,RZ…ùy¹9Ù~Ÿ7Ë“™áv9ÓÓRSv›Õb6 zV£V)rAÆs,ƒQ~ƒ§qнè\ä|žææ÷ AÂЖ„ÁE7$5^]fÑ=H‹¹¯.‡’û®)KÆ7Jb½»Uä»<îÅo×{ÜKxÏÎ^À?PïI¸/Q¼âœF4ÉÈ€îûx½{ºŸi¬‡öΫ”užº1eA>:¯Tªl±Ñ3}7VcŠ0 åç$×À¨·yê[<õd‹¬·aht±cgoC}jFF¢ ×x†‘§vQ—G‹ :ÚÍ¢¬nQ Ý¸'ÈtÐîóùËgÞ¿¤GÃyêQÏèPï";” }ò›<õ‹M7®Ø ò—ð§ºzuKuõ^DÛÖNŸo9]_Ÿ ½ëzoÛZ<•=Ó`Ÿp“è™3·¹ÏíìÝš›AÞ‰4ZßÚÙ›£ö4¼ßM¦ÑÙKgb{IÒÈ4Å yHÊà îE…§Ö3~æ†AX¬”3‹¨óXÆ…”mñ‹k¯ m î3]½žŒÅXª'1TŸvÞŒÎt{¢%în¹:§ ÿ¼Þ Rú¼V'!jÍVdl#b´8Á`Ôë¤ÆdDž`‘E÷ˆFÒëYd¼eä5V†ÎŒ”A1øI` èÐoðŒ¾œ,ïÕ{Ügþ€€<—~}uÊ”"óêÿ€JØeƒå _ÌË[ÌÍ%œ"ÔÁÒÂȪi¼¤ ÿðb«gZï^l’¡Ž^¨”(É32È*ß¹GÃY<½³WŒ»Ñpêä%™A’³¼žcé&9§×s6ªz€Ÿ¤&‘eQîÛøÕé­¦†ñòElý+Ùcb>ˆOƒû<Ç{Ïtôú†ÎÜ™ê<óþ,M#ˆâ™3wã™Á3CKk§‡=n½çÌùÖÖ3Ó ƒëSZZ{æÎÔÅÆ÷'õƒãèº ÒºËÓºsO¯»áÌàºH˜êzÙTF˜T6±QªŒ–€ý~8ă¹‚TðEÄa2xÃÈ %÷%jüñðfñ³V_Õ¿Šb1x‹ o†!ƒCq³Ë‰óèÏÈÍ-C›!$ð+|.*Fmè™xÜáêu&2Ûžrð^G£ƒÉÉÎ÷—l×3}a[Ÿ5¡GáÚ"û€þ±T6œøc>ΗW5W””U²ÕQ¹R¡Z¯Å-ê0²Ze6›,Ú©è­V*#Õý ’£ô«Õ²æ;™Ø•‰3(»ˆvèß¾2;sÉ \º|É èWô+†p°Ê(`ƨÁhˆ¢Xr%vé’þ2…—þÍŠF‹‚h&)“?ÂFŠý>O¦ ƒÇI!›Õf5ZÌŒ ó°àü$3Sða™Å&X-°ë˜mÖp(RÍ”3P5¬ $Ó<ìü˜ÃZÁ’™ï‘ipÅ¡§±ò§û¾ùæÅOÎýÛ•;í]S²Aw±[ÏàWY–a1Ä·Ý4ž«|ï+÷ìëåäúTCP½‡nÅÝÙ)ZAÆÈ0Ók2:þ¶ý«¿=÷ÍÕŸí®V° Ã`ÁØÊ}È¥yä¾æÒ‡‡ï(j4ùN¾þžobô^X§æµ7aMÀ¾CgŸÔéµÖê/¬½„gm9¾M¡‰z^vtZÖZYbËM{,k²|OEqTpÏ.M B¶Ê£ Y£ö@‡F´ZotÄ>‚¼§½ç¼/y¹)ï›^Æû©àE†GqýÛ—f’—®%IŠTFŠ£3•+•°*¶0üêÿ’*+++ šJ#Õ8RYmNÆæÏ¤ô÷È,f'ãÂ!’gµi±'Ó_Èø}%ÅÞBÆ“)l!R¥'Å\v*\›³wÞ_VŸÇL>TnÆz˜”â¶œò¶”`Kq–½÷Ù…öPÝ䓃مs{ ê&…kvºZÁØ»Ó:ûu¦ôTÇd£€åR–,$âZ¯tyS,C»µÆm‡Ê·îž)Û=<†Y$~ÏÚ›Ì*»mÇÿ¿ä6œGí¬¾Âoô›Ýåî w•Œ·  ‹EÕ—óŠh©3\®üPŸuWMÅåmeÿZ.[¨ºEöÀ-ß­à-%º’tV·£òPy8ÞêlˆóÑrð¾Xee0&£©Ë4j⎘±~ÓÊzMõ¦'L?²þÙÊßô뫦׭¿7ñO[ÿÑôU+›cʱVZY¹Õbj1m³r^Ó-¦˜þÕʹ¬k§é^§6MY·²ÑòJ«‰Ó„ ö´çàXN{““S›Áí ‚ñ|Œwî4Ñmµ¡d† IÖªÎîÀ&=ÿ,€Ž(ÀB<5èû;üÓ~î´ÿ¬ÿœÿ%?·ìÇ~ÿ)=Ö/áÕ'ŽáØŽ=1]ŠK!ÏKíVŽv ÞÎB|;øÎ¯ –ôÙØAˆ-‚vºˆûQ›þídrffvïÌÞË—f®Ì^™9 ÌØgfˆà†“(v)F„}&I$<œY!R¾7¹wvff&I~ Tîq뢷£7®¬,/?l5™­VÓmÚÂ<í ýó C¸(ˆ“3H,Ž“&`&¶Úè•–ûü…˜üË¥ì‰-fPÀ¡A”„ÅL+t1™Vòíqj­¢ÔàÉ´exc{2ÃŽoX-¦”üìô…º³!™•M1(M ]p¬¶!™åÙ}sõž–Ç?cMæFµ*…B2¬0ç8ôõ΀»Àª ÉñìhÎö!oZaJŠíS:A.g´i‰–ìôPF¦Ç˜žž;Û:ÿQ%¯ã2CëÄ+t"ãý¬/áÃñÜ€Ö=™ñ²WP¾Îj'5, &4‰R%*•O—³y¾loŽÕnt»‘&õ ø5dEÙ u59hD&Ë v4ÝZ#ÕÐÖÀ‰œí ÅãV]¶âeë+VÆz‘áP–m–aåÊŠž>DÐhæJ¢ ¢QX½••˜V2Ê–ÁTLdßb&2îcý@ë*\ àøA=Kˆr[-¬Hmq@|¶1R±ÃUç î|?3ã0±,ÆŒLUÞ¼GIu'p®ÆT=NÕè\û-êç/mh)̬ÏéüóÙP©cvSi(ð W†Îʗɼöªã_[ÏÍT©8Y3àö7†®¬q;ÙNðE‡ÐZ‹çú4·Ž~RÃdíy¨r2ëôãÖç`öŸqOIÑ5é&Û''ïžäîžÄ“K ŽwŸ®|®’‰Wž®d*+›Ú“yyºùdSwR'4鲬¾@§ …÷Œ %V*ÃìôÜöí¬U×éêd:Gt¾€ï9÷aŸoß×P­»–©­M×…]a&¼ÄÈâžx:>ŽÓ p±8cÛÙvŠ]d—Y™ Pægàdff“°D'‰œ\!"s)† òØ aI á𺆈bu)9sœ°_ºœÜ²S&ùBL¤ÁG„‚Ê„ÍJ„¦4"® (‘¤DFDD)R†ø9ZPß´RLÅ äH‹© 9Ø ‰ˆÇŸIvègܶ'ø•o0¥ì+VXŠ|a_O‰7Õlwêeéõ9öîmû÷×Ú=±îLƒ'G®-éUUÔoÔÍþï÷Üú½ÊÂ6üPÝ@w›2/Ø.°jCv]ß}ÅÖhV¸ë=Ÿª¾·Ë~:³¯¬ 8UinŒ5í“sF­;Ó`TeÆ"yZÓPÝr+œ6¡·šÝ2Ìr,Þ¾ýPÅLSYqE~¨¨ ÿÓܱs‡xÅá‘ÔŽL‡?/õJ‘!–“mÍÍ‘+™ŽZOC6hS®ƒ½ íÇq]ž÷íÿ±år͹ÌîÞàÒÚ[q›µs „b\¢Ì8izÙ™˜Ü[š¨H”íMŒ&†wÏvîq-1šx([V–)¡R¶8¿µ©"ÖÂn«êN$Ù¾ž»º:]Yn¥ÆÉfÊG‘iŸÑh2©öm#R›Ò$ïVõtïêîr÷ûâ}lß W·»;³øD>öTÅ0O5uõdö¨H\ŽZ ’V×äjbšz.À/à‚%üöç»zöX–c9‘÷qýÛ3+—®Ì$¯$WÀ¨¢¢Èå•$ %¹÷P3,J9I´ÈH”¼óbo¯€:X¡•©…F3£¶²«Œ³*ñƒRÖ `b/ˆO S-L9Ô0QÀ‘ ¦ý‚Gð6• }RJÕ†ÛˆÑf%ÌHø4€Áš+)ÎI±F:–WÉYÒê°ÆÒÑó*µÎ™[ÖÕ®úDÇÞ»ò9¹² HŸ//¼%3Ú2ÑÌÊ!;Õ·½ìh,1ŽIéa—ÅRp ã.ªæ2…Æ\¿»i"ËÖé̦ ÇÍrV¦TZйƒRîkNó&o¼¸úŒM'“Ú¢e”Áha†—Ë Á®‚ùï·FË ±ºsŽOä: rµËA©’_U®­qó©èN‰V7Ìú·Eë+;{ö²ý]†>ÓÈxÓ‡ ¬º.WÓõpsÕëë™ú‡+—ðëñÂêþ~ë,òëaCgý—Ü SÂÊL%PbV¾Íëimëìa;êÃѽùƒ¥„™‚…’ãUŽc£qA3•Ù«ó¸<§<{8§µ$r`aPö+•r°Û¡Òòú©VRY‰:ô/vp_À瑬ø£`Å'/“µ7FÀF„Ý"H®@R Á¼£_Ù`à(º¬\¦6fàÊÊe`Aà;ÐbWBúKë…DV* †A[Å0ðÙTXÊC%D)Ű-Ž„J#À5[¶vjþûž²SØ¡&ª¨Â gsè†O½‹ÉJo÷ÄTOf%cÝ6)9` µ®Óì³ßrô— §LEæÜ'Ô~ƒŒÑɲ fµÌ[qÛ™Þ°Ê¢aYA!k:š½+ª±[xÞªåUÀ’Àa&•Ü¥PÙRƒ«Þ"ÇUÜ\™Ê±&×]öŠ„Ú…šfÞ¬QgçÊ^ºûÜ®ÕrjY#¯?Ë8ìt~Ñ©ç2ÿ˜—à FnË:rû¸d*…¾hcö\ØkUžQX8™)«]cr#«ßßeR«V)KÑêl XF®4PîÚ›\+[ŠúÑÏãÍ5ˆËðfó¹.sZi¤‹w–02×çd®öx£ªd¼£b°bºâtWQË•ÅT±Í•áek<'SttcÚ¶‡ïæz:¨mz£èi xbžvë9a+;ªQ‚FÊȧš*oV˜·(¦¸ÉõrFÞ³çÄrn#ê)IÕS’è§ËD¹¬ˆ’¼|ETLTm:ˆ1º#Â>xe%¶ÁhaêŸd¸0¨ Ð3dC"Êx ¶®’a$q7, ƒGŠ´ Ùó‘Ià `™@mÂ,%TùÄöÀ€JÀ¹V ë«ÒÕ ÊZ”é*ø‚ö¼:r˜a°zëšÅ(ïW³l‰íÀ©l¬¶õžlè<šfÏg±BkŠëy– r S7~`ÿXy~1¤r§þÉïHiç½VdzœY©¶ò Ó:xô³mÅÅ‚ÃÎ2^Ð1¼=À|BiÙ©ù[LçÝÃŽTAƪ”°ôf²âíko±bûQÚ½OñCóšâOÌЫ(íµßíJ½Ç£ ¨%sdÙ‚‘å´…9gyËÂX>¥!Ža>8†`Õƒc´&‚J¬$1+’ÔðiD,ŒjfÝœŒR4D¥íÕËmÚÔ—}¾¼  ì–oœ|ìöH0§ÁfLKóï½ï©¹h¶#OU…U V©½·«¡äÁÒšOÞÛ3YZRU/´˜ÿîÎOU£pÊÉIztí/Ì ì º/ž‚Ì)ÅœÊáòeqÖœŒ|k85¼Ç±'tZõ ~qøx<]/Ë8ž¯Ò›}¬Q%ã©élZ…‹Ù@iZ·â`K~íóÆÿ£OÅ©=Aàç§JO,p€0caÆË°QÂϦv"{"Ù/&»²²R)É"ïç«ÝkÖa3ñ„C‘u½ãñ ¬LtT"TwQÚ•D Dó”Wž¨,S`Ûø„P/2 r{±1È`•Ñ––šâ’iì:Îsª99Ϲš52æ/¡ÁÉ”ôâô ÞŠ*ÕbsqÀp«7ME*¥W˜LêHìðñEœZB!—gѺö&ûoìd»f>¾ë~Åý†O)>eà¥ÌåsF¼·yùÙ‚òß•o»¸¬¤)-)¿Ý„MÂm`9¨,#j]†+ƒÉ‰³ƒì4{š=ǾÄÊH° Ç~º]Õ„erÀ¡¸BÌQý%›‰Í®! 3ƒg0uÆÈ¼)Ç`jŽbÑ£d¡¦%È;åT÷·þ%™ßVXwÛàwV;œ&ÍÔ[Õ2jÕn3k˜ŸUÿ]Óû:~ÿ…[ênÍ æ¬æ7Õ]ÁäHÍ}O?ÐÓUJü©Ñµ?Ã;Á…Ý~Ïó*J ŠÃÅO)ùK¾âcâ –lˆSÚªc2]Î@ÎTÎã9\NNzåMÙh•úfws°9ÞÌ5/1ŠxŠ&=4*Tc¹Òˆ2Ú·9rômŽ(Q…ùŽžÒï6`Wƒ»!ØÀ6Œèõy°pÏ•¾XºV <×QzP.Fì·âYî¼xÞÃylGÞb3˜7w6ï\ÞrßžwRX]^ É ÌùÊì ¸È$=£ª®¬;gë{¦èÌ\&§8I@˜Úb^Û:¯ùEŽ+ÞP†~‘ÚÑuÀ£¢ƒ Ye‚Êo {µÔ\£Çe°jìÇl Ûw”Wt{òšN¯iVÕü‰Í0‡B]&­RéÚµ¥n­=ëžXÏñ޹–±Urçê7£w§™‹3Ëü%ÆÔ J>QWÓ¹½mwSF}]¶,mÔç¿­ÈésZ«ò“KHQ[£9å­ió|ò˜+×% ¼iJdóÊÜyá#ù Ä2¾• [âÛ™ÜÉBäåe*L”$BÊX¤=ò\äÍW˜›Ÿ•jwË4 «4™”é™%ÝLhe·,«;SÖ-Ï?‘Ùƒˆu¬«&¶n%—‚䃖ÜðŠéS ”ÝT’W &ЕPQP²X þ¿HXÉߊáÍ\o±lÒÑ57ˆ·æ®5«AiƬƓm·°Lû#i ¼Ví·TóL{í¨7:ÙÒqrMJN©ûæëÙ~ ïPË•ŠXÆ«Ÿ:í³ÉL« ÷Ú󌖑[4J#ÇÃlðÚoWìWÙb4 >pRÖ‹uýº$NÙ“ÖÏ+º=º>VeÕÅU½,‡tJ…u$‰ÔÝý‰Äa‡ÅìHìvX*kjnÜnÞ½;Ýdq¤g”W&ú;K½…ê¡Iõ¤¼¦{7{jçÝ;™KøD¼©)”ÈO2 yBV(“Éš´Åàê‚Ù*-¯T'Ù–ðî†Ý¬\m²Ôìî”CmH©lkCÙ÷ÿiazÜ„{òWÈé0õB@±& ½m„ܰI.08ÙŒ ä6¾0ï„þùÛä…ö<DÒ1q19)BI–ú±äTrÛÑô[÷3 q€M¢µK#ë†<:¬ÂGZ($zÇÄ,%ž¯ß§óØÔº¾hñ]rËèä6«FÇÈdÁhe™¬©¬&kZØ Þ½S³³4³«8…ÁFkVªŽ77zÎ69rŠùPŽÓÈ5T¦ ÊÝŽ‹ã‘4›]càÙ|–ÉeB¾àNi׿ÿðœúâÓt*¥M¯ÉµJ^ndxF)ÃL­àrµÜwúË«³«Ü±¨ô‚2Þ ¤l¦hÂüa8dX…X Ykkü^Þ‚NâqÕ¾¾±@ Ð¿}`(ƒl ©øõÏ»82bã¾3îU袮èTôT”‹ÞWƒ õ…ƒ…Ó…\á}þã}Š×õB%¸:¢7µþš.™K É9¦o ÷Ä•S=C¥-3ƒq¸éPì¾Í¨ð"Å»ãéeÍuÞ†™C“sÓ7ÌFh~L îšët=eEd¯.&.*›.cÊÊzšÇNNMÎ7åäÂl3„O6LNôòù†þé郞þYÀ/ôüå ¹u8¦ õU@¤+¢Û+îÝäeñLÒH9. :½ÒVO¶/(LYÄV€ WVÈ© Ñu‰¨ð{%IšKÈ–gZ?B‰·¤c˜™’í¹á‚Ø,Öu㔨¢gÓ±gk óú]åT`<™Ž•Ó@}”løÉ,8Iþ +ÕŸÍmÏúÐÏž|ªêˆ‘Á9ò….Û–ãð+ÃÉ7²ŒÃøÄ‡³´ŠM9ÇÊš8•Y¯N3Ÿ~`;1&r¾{çP]¸¾ÀeVYYFæ5ÖøÊ~ÿèo>ž{ÌÏVEAÅ0J³Ê-19x +SɌΜùBŽLÍ0fSA@À˜“sŽÏ~æ$«u¸¬'0NNTR¤[õ¡¤Í¨ä)ò#í?òi-]qÝ1; ÎggY¥ äx™ÚœžoÈqác3çfŽó:Ëpj“Óü\$ÈeoDà'ãÛs]Û\¶|¡åŸ[øw ¶ýÀ©›oQž@á’xbÿísvR÷²eûq¯ÀLÞU–¨JT즾+q_âžÞ=“÷>ž^¡¼G鬖%ÆoN’{†•ƒYüÈòGØp 4·*^Ë6ÆÚwö&’|Ÿ»kfìÀ4;µïæ[n?wæDŠý=…åkSÞ‡”‚V+ÜŸ›[PZZR@]#e×{Þ;Ó=5@ŽÖ&nm,9ÑHüŸ/x±€Qè põ„ ¦Üg‚gâg:Î žáÏœxo·M<òéèìãûNt9ºm'zl=¾îýx?i,]7åšb¦z:„›îÂ]8Þõb´Ù…›ºÈ±Ïý'Ú…»F Ú‡‰){¶4ñx<÷Y`UzúC~€}Å<ÂÕ³d«‚$‰ÐWF£W¹ç"nØôìÉ^»\£^•IMqˆmQû‰‡CÀó%älÈ'ž—FÂà¹ÛÄ#ûRé˜2Üûõ-“ž ž'Þåy¶•†,Âæ ’‡HX&øoëGHây4µs@ÚÌ‚Éf–î 6O’@^Šrm…G`9ŒóúL)ý•…ðèNu¶°¨)˜1¾sçNVíO3ÁÓKSËwV?°¦EÃð<6ûk³Êæ 0Ã`y‡KÎ¥g[š¶ð±s/W1´ÄÚx̓™?el©û ÷äâÚÉ&ͤ¶)±3±Mû²q™ðNòê ¯vòÚA^mäµ¼ZMKŒ6îÞ`2Z%½-F'BŽÖŸ(¹…œj@ZFOQ”vG'»ô(ºåÁîh\7âaFF¼÷P{íþí+àqã]Þr¡mdWDõ5F·1Ñ+©—íÀùïü½¼ G›WB¢•m¤¼Ë–Ë9RêWa°0=Ì$ ZTÍÖu󎜗“£t å2Û;©–×yü:b•o¹¾Ú8ó”¶3k”·ezFP²Ù=x¸®¨+ –áî²Î‘}í2UȲJoy`W§§®–žÌi” W Eå¶¼O©³YqXepeW89¹ÀeÖ½§%ɲ«Ê—fR9·ã»ð›¥…ŽbSš¹ §MÊì%{1'de45ï?{oµÒäÕËRÁŒh~Z–©ò”j4§2ª,ŒCçræ[jY¡)KmÈ÷ò ½|GïǧÚ}þ'¿,€¾N®ýžÏåC¨×9”wÈ>êÔÏ)•Ïè~¨`Q¾Üæp™3ïä1ÿB¾ã…Lù@¾y 3ŸýQ&ÎT üZŽs¨ïÐ;¦ËvÑKøù'^ÌÁ9ñ¯Q€èµ™$ñyˆ”¤‡䙑Š¢›‡ñÐ`ÞJrbà1Ò1S¢G!+÷mM¶÷ ~ëäGÞkÍŠäÖ÷Žúö^o%§`Í mÕË÷ž)†ïÀEÇÌ#çâÍ·9ö÷«?~¤ya[YFÁ· Ø—£ŸrÀ˜ 5ækïÁ¹øµ¶œYfOƒÙó¸#ÝSÀD'«5°C™« ‰xÎëOxÌ{`#2ÆÓ—oÊ÷¸‹ê}Ø÷ɦË`[jÏÝÈ&@nD©1¬œ±~îoˆ%~YÜ>È‚(#.d„ˆ'þ1ª–¥ãþ­WNñ´Ö V’“%2AÜ!z¨ï×XÂ… £uä™9vÛQ§^ÝH\¢“"?3¯dGEQ^ Í X i ǰz£·ß,Ûû\s…Ab#*^•n?s%¡Wk”¼Á«Ü™kS³6Jﱩší*Ÿ£9hͲbÁ*Mݶú¦Ã¡UË &•Q)ãõr991XX{˜Az”‰ZâÅEkÑukºµÝ:™òîhjÁpwªJè¶| u»AgÜÉ"§ÞIÐi'ïtfy âM÷•¢c’äücÖTLw·õ·Bl ­7R¯¨³Ù’ÙÕÙ$ç*•Ž´»[‚©‡/µ¸t§?×Ä|7­%¿§ª®IU¾Úu†‹ÍÙVݮʂêpÖ¾µß³/ña0ªÙøG•v¾ÚeµV—TÿÐ-Ó™uUgã¼Æ†8c5™~]]e®®®ÂUú*wk©n¨ê®«:PÍÏW=XýHõÓU«yeUJÕª~YÍy«"U UÛª¹´j\UmeM¥~¿&S‡\(€bˆkGSèºqÕk‚/d /hêÙÒLÅr ®6UY¹”šàT@1ÅqåçP NYÂOÅSjrzý¹³5‹5/Ö°¨F_3 èr _C„º™ÜI_ŠVôWf®'Wšâí€øø!P I/Hò,ý `ý3zèAžÂQs›FŠêWü@ Z´Ä »VÇÐÉKœD³è)Ñçl›R®æ”Íêüüíû‡ç¢eOW=VPYà1å:OÞvCãÐцçx¦?¨uµŽW•ÞÔÞ»zö®Î•Ÿ÷F¹?f6ì-à²ÝèØ¿=^QQjìTÏõìí æ9wf™=Z§S©NÖ¤ú˜)[8æóx[ÌÓ¾GÛþ©AI}³WùçxDߊ÷6x{:ŸîüZ'§¾q7S6Äé}8¡J€WKõ•f t'Ê¥L—"0ŒË¢UlE[¨ X¥v°ÚŒ‘ÙnKij«C })½Ú{qœö÷† ˆRÉEu JTmá…ܩЅ6ܶ„ótÇ|vÞ˜%ºaãH„œ~Rå@ý¨p`Ý*”4„¸}‚«{ JŠ÷ƒÄ#GI“_ò AC6‹LttèyýºjŽˆ×…%Å,õ„„žÕo¸åd=é5µ ›Å够}˜ˆòÉô³FS(r‹­ã#G,˜)«,3ªÉgœ†Ïs—wíÜU´Û¥5¥p¬É½Wô?7¸Û ã¼9u‚–|‘À2Ê4»÷öoÝþÑŸÎXtXosp_nǬ 0X]!—[µnsÖÞŽÇþ|°¹Ä™ëÐÆR"ÁÚ;‡%fÃn—+˜ J¯b2µÃ˜é¨öd[š·ýó·ÎdWŽUìºmrÛüò?X] 3xm±|-ß±<ž5ßû+'H’‡XÖb4iUˆWª“¾¬Ô¾ô²ª¦P_yV7¬×ëO¦£„I º¿þD÷€:} ‡â¹&l2©™òDM¢J®~e˜Ñ-©œÅ—WX\Æ—æ·ì¨A`~Ö'ÏÂR§ƒßmA{ÀïÖ&kjvÔ—®dç÷æÖ¯ì t[vvÛ”[–ð¥§rû;(\ŠëЗÝÉ`òñ$[žŒ'™$áåËÉ++ÄsÖ_Þ¸>&ëþÚnoVVbá@¤wE:Mƒ}Ã5lºÚQ£tdc K\clâ1Ñ•`hÁÒ‹ç-¢‰d0 æM«kÝEyÈU¡dOXú=Šô} ¸Öv Z`Ótšãm•æc?Ç%'ä+ͰÇp9®”*¹ZoÿbZ® sX­Ï“×:mlÍò±™f‡¡¤¼®¨/’9 ?ë8çX é%Ç+Ž·;é«C¹<,IT'Êå±îŽnÆ\T†³ ‚¬5?ÛßT]ÛÀ¶ÆA+X­ùé_`LH‹ÚÁ¨ÐiOkíþÕh¡5ŸkkS<¼PØ_h"ç)]ú·WÄK9¢.%ÉÉèã«ÔÀÆÂ¿FOLfg¨Am”|GzHâ·E¤ïLœÌúõQ ¹ ·Òº™z‚"˜E/o}‰µ@Íq¢µKTX<Œ+ÂoðWÝ´Ít2><·ëÇŸ.Ÿ(äí~]wy[]a¼£Õ-çÈe胯s¼Cãúì¡ãӦީЂsƪNÈÌÞÅ}w» ¼ÖÜû‰ÆÏýKZZz˜aUw Ÿ°:­õjNv®6µóæ‡2Êv­.•ÓéY&]«0™M©év¥ÆU†¸êçÆô AKV¯ ÌïølÔÞ¸ˆZñŸâÕ--LCSK+‡ÒL}¹}>ı< ÂØ¾D¸‡j›É©Ԭ iËëb ‘¢heØ—dÙ±H¼²Æò[‡Âð." ¶b¼µ(Bq ¶#-v£"ˆµžíñ|0•î@0LNÎ/^ ¼P“¤Hx+À“26€-ueeëá÷ezT&-ìÆ%˜!JïÉyX,‰¾D÷i²Ö È¡ˆ´\ळÒ7EÔûW5ÓsÅï=`çõG¸X<Ì¢ëê§8ÑöTh#¥ø£|Ì3XH«²73L^~WØdÿˆAeLO )] “]Ò’r ž8ËqäƒLŒ›ú”nÅ ¾X‹‹÷1»u|Š6ùÀÀ•dÔ™¢`ÁeRyüP…a­j•U¥Ò¥Ûë·}Ø//Nµhê£5jÎQï²x2‹JJdž =’’_›«êG,û> ÅawÎÓ”E cbÌLE8Zl)´¼k4úŒŒâ¢òòÔ¨â}¼šéÉç¹KX{¡è}¡%|ôI½üª%<×úÁ¡BålUn‘Í EŸ¯Òë=:ÛÞýDnn•{ ÷ÆÝØmßzâžÏ gÚsÚsÖsγèYö(õì-š\–‹ò†Ò7Óâå!»ry…˜M1éë>â5Òú÷b }½¢y.}á<%ô¦Ž|ã%^y¤3p+½Ì#ßVDl¡Òõ3L-fÇǽ– ¡Þh÷dtøäcßu÷-ý yã5ãv¯¼…mÿÞâ7M©møâÔÓ7tEl¼¦VÃ+5Ùz‰+ËÔ?y÷§fŸ¬Ýv¸>^ÔÔ–—>”8óõ*KšoxìÄ£`õgÕéÝø²úà!X‡½k¿áÏóh7úX¼Y¹Û±3e÷nãý^@>êÌ4—öeöå%r……fìÓ]æ†]lƒ¢4T\éÌÊfÓ|Â˦Åã•Ä?b| iýÅKx(n¨Ôß¡¯\®d~V‰+ø"ùD¬Ó^p•Èçyúqã#´ÞüÀeý–\<=¸´~WD¼Pñúsãp—1˜»âÞz¿šÍ&‘X‹E'Jqâ}»t¹”&§¼V0 yÎí®ò¾ºÝŸ^ùÚûjZ¼6=/gMf",C£p°#-ãÕ©#X0tòrØÚ”i«/ù¶¯7î}_Fa}è)¬?g.¸ñûÜ—ÓõëÀ;Zp–ùÓW¿¿ú£;WÿãC¹]ï.?0î×)”vA©‘i29ù„M1ª´J'/ÏÜwضMéU¤5åå–KÞró8øø8_Eþ¶qí—ܾ õ Iô»ø˜þþÁLe­2¶?2mM45$ŽwŒLrB‡*:ÙŒMÇNÇ¸ÅØr쥋5p‚7¨2#1®ªÄ]í ÚÓZ›Zú÷ÊÁôKIñ¦¹22²½¹¹Á‚ìîíI!íKÔ=àÝ‚‚°{¥ïíié©:Y‚nÐßÀÜ0Rr«ǺۻºîæºÉ­õAp9f/]JÂNviCëUê¥Gô4¢ôb@™eñ§×V¡ ›‡Š¡?ÿ´ÚÜÅsÑ*þ{æ?ØrËü¯ŸÜ%?váÇ•w©\êæN]…~ž_¾`´šéwÞ²b}ÑöAû°cAš‰}±Òß ëak/Gˆ}˜ùwÄÒܶvc¾_Þ˜;Frˆa©‡¾!á,²£oK8‡4èU ç‘ýNÂe¾*ášÂ*ÒÇB;Z|£„sÈo§8éJü c_ 8ùÚD†_pÙñ÷).@ºT¨ˆs(_¦¸ÒÕŒVÂ9ädR(N>\»‰)“pŒôì3í°ß”phÿ] ‡69FÂydçÒ$\éÅ. Ÿr;$\ŽB|¾„+“ß+áJ®”?.á*´OqAÂÕh\i—pêåi ×¢~«Ø¦’ÐÊúˆ„­¬KWAºÑú# çP–õ Š«É\lZ ‡ñ۬ג·%œC™¶8Åõ¤Û°„C;¶yŠ›Ím–p ¹íQÜLÆc{ZÂa<¶ç)nt³mEÂ9ä³ý‘âVRÞî”p(oéã åíÛ%ÊÛ)žJÖÎþ> ‡µ³ßKñt2û¢„Ãxìâ\„gì/H8ðŒ]¤IM¿,á$}•àrJOGŠ„ÃxÙ§ãt4K8Iï!¸Z,XÂIú-§tvü½„ƒëíølýÄþ‰ù‰ÇFÝ£CóCî‘©éc³ûÇçÝmS‡¦æM¹»ŽMOퟚ?–ïÞ>?ê.‚¼^%…îšÉI7-=çž››=<6Z¸Y±ihvèàÔ¡Ñϸ'æÜCîù١ѱƒC³ÜSûÞ½õ#ã#ãîƒCÇÜÃcÐèþ‰¹ù±YÝÄ!÷ÈØìü„7,ÌNÌNŒÌOLš+\ï¥vjrt£Õ‚ÎÝ$ýªHÏØìÔt‡ ÃÁõŒ‚«jÿÿ3pÐŽch?š…÷<BM³Ñ:„F‘ûšüy´€5óËë”ÜÌÛ¥G¯SBLo¤mÍ_'_ÊaogŸeŸgŸƒ÷ùw–º*·MÀè& Öº‘¶î¢cu£¨3ŽA}RjRݨ¶3ø1ȃ”.ŠMÑY6ñ|HßeH{E( O*°T©5`EMB¸ÙöA8áa:šÂëöxíœ>i´þ¥#É…’i¹6´ûïŒý¤LÆ'­ƒp˜Öœ¥ëJz§ãi7íºÑÿ€0$Åo@ tžsP†´F¨MF2ó»v.µNBøÎ±\gæîòïžÓCG3'õIþ«D! £à;jü•¾ÿo¢ø}L-PnjÔUÈ_`^—ïl¯žæ¡cÙñv Å>:Ž1IBtHÏã×kb91}âsÒ\Åõ›…PæÐ–Zs” TB‡)ͶAªXf IµEú¡RQ¯ÎßGy`ÞG¤^çaŒcT/ŒQ.ÚO鸾Â6W¯ç8åq=ǤuLJ·ì:  f·ŒGÜ•nÑC”'&$í%¶>$Yƒct¥ˆN#œ˜z#ò°Ä½ÃûÙ¦~7ÊÌÑçau‡hën€ id³TwOÐt²Šü¼OÚG®G¯)i^ST’6[Ù”äwö7*íÌDŸ S°UNÑY¼Ë ¹tVWSjŒJÉ;¹â=oê£ÃTƒ,À{˜Ê¢›jLQöÞ;õ»!e’ö8·eå7×B\§«mŽyª¿‡èˆ¦)e'¤=þ¿²æn‰mè„Í~É9*ÙäSTÒ¯µ“ó7JÏná[q~óÿ)¥ÈèÒö×ùjêªö6õáüé–´ôÖ’ÄF8D%qRœ´?¾1q\[¹{Ýžé¿é_¬sÜõxè¯Íh“?ZèÜß¹r„¤ýH£m¯Ïf„†¢Ýxèš5˜E×ú%ë-ÏQaZî +e F´©þ+«¿Þž(“DVK«±)cëí½sEj‰3˜§:àúžÙúŠ ]Cë}Óh7©üÎF¤=}XŠm‘8ÂAå-tƒþ¯Ô2°•"àqDÀ)ƒ0ñ &ÍÍý7íªëykÆ»¹“’9¹é{»ä“‚÷0¥¦È¥ ’…shc"§ DZn”òæ$¾—ƹocÏ&uvQŽuSËmŸÔÆœ¤ÝÈõ{Ér))ú£’6˜’,Œ_Òòt„s[ò×GAÚ¢šl³Ö¨ÄE#’'µ^kê°ü«äjŒÒgò³tšÛØõܯŽÑ½o·$ybÚÿýÆ$=²©ÉF©Š\1q WÌS®=÷†]°niMHÖþ:¾sþC &è E*_M‡©-:gˆrš_’c±‡á™ú¡ÇßkøÏÛ_?iðîç¥b>Ñân.JöÂuj\¯Ì,Õäï,»žÓü= 6ÎÛP‹púõÎR¯-1»Åš$«óî­o–顨;KŠéÍt]ÓsÝ땺:¿Cò`ˆ­%òä±ëÔ¹^©­4½Þ¸¯Êç\\5WÁÕq¥\窸V.úÎ:×-ÕJ¥¨v½^¶æ6¾ËŒÅôV2o\i×ke=o;š¢²p=.ÚÌûÛøío¢Ôߨö:w é­‘sŸëü\DqÆuÁl)½¸¶Ì¤\P(K— Is-1Ž #nW…Ñ1jèÁÅ!ì„Ð …Z)ÔH¡"®8>êzeú­iæ•gðè-üÆÓ šÖO3èYˆêF ‰S.×A×a×vÇu¬«ÇÕïqÝÁéêëHš…Õõèúu#º;¸S²Só­£WdñY\Hî2ÉÆUýN×þ§ëhFÊÆ=‡³]‘‡/<~‰]h¿0p=Õ—ë*C_ºÈ¸.btqù"£«©Â¿Fn€ @ à4ÀYƦ·¤žX¦¹ÞzjÿjÿÊÿ-,ð©ç¤TrÝû š $Ào<á„)Ôd –^xE¤ùG•qÜA€8Mí`x´È»âŸÁ{bz†¿€SÏ@äq@™(ªq1ÐÀ" kÉAEMœ8 p@U9tJ*· ðÀ+ wA¦@ÏŠi#oAi4“!}1Óˆt œXXPÒR$•A1¡v€–Axí µ+â®1à5˜ÔxàE€Ÿ¼ ° Çkñ‚ÃW$ørü厗_æ:Nàçÿ8s<™âJ„]eñ{ï9{ÏK÷p/ݳv¨IÁo£SgÎpèax/¼ ÀBóoÃ|bØÚXàª@Oعû><2æêˆtŒ¼8ÂFb#ϰ3y®>€É<×WûR\e¿î_’£8Ì@äìæô‘—Ž0KŒù¹Àm¦xÎ…®#ýa×A€;ú \W?ôŸëg²€À ÆF,£Aov/á#šCƒ)18(Äà1Ø'#b0,©bà[|?„?xàgÿðu€¯|àHÙÏ|àÀG>ð€Ûn8 000 0 0@Úï¡}»¼Q މÁQ1˜ƒ91˜ƒ 1ƒ11«˜ÅÀ$F10ˆ*ð«Ï<p`àq€Çø ÀMÇfšC…FqöK¸$ô,®§ïÊx¹pö.áì˜pvX8;(œÝ+œÝ-dÉ3ån¹Sž&O‘ÛåV¹Yn”ëåZ¹Z®”Ëå29'gäHŽð¢‰meZwÕ¶.. Öa÷âÛ»‰Ó´ù¹ù9ˆ¡y .É£ùs{áòöÒ7)!„_Rmn³¡9òƒÙ†ñE7@üÎÁE·§~Q> endobj 34 0 obj << /Length 360 /Filter /FlateDecode >> stream xœ]’Ínƒ0„ïH¼ƒé!ó !¥$Hú£Ò>±—©dÈ·/ì$UÕKÐçïdíåå±4í$¼7Û«Š&Ñ´F[û«U$ÎtiëÈ@èVMwäêêÁu¼¥¿šÇ‰ºÒ4½HS×Â{_ãdg±9èþL|øj5ÙÖ\Äæ3¯pT]‡á›:2“ð]'Ë„¦fõ|®‡—º#áqû¶Ô‹¢æíÒøGò1$H̦zMãP+²µ¹ë¤¾Ÿ‰´(2×!£ÿWƒ=ºÎúªíª–‹Ú÷£([!`ØÅ !C2D¨ìb@°œ¸ía·=dp; ‚KŸP)r€d8r†z0A{ØZú'ñ' OÄHäIä  ÈC†<1îAž˜§–ÈÃyBžZ"Ok䉸¯’·<vsßÁº&~Y¿@]­]öÏ÷¾n¼5ôûH‡~à¾ÛÏIﲃ endstream endobj 35 0 obj << /Type /Font /Subtype /TrueType /BaseFont /CAAAAA+Garamond-Bold /FirstChar 0 /LastChar 29 /Widths [ 750 781 468 416 281 541 552 614 552 468 312 520 479 260 468 708 843 552 250 677 343 260 510 760 687 614 395 468 729 552 ] /FontDescriptor 33 0 R /ToUnicode 34 0 R >> endobj 36 0 obj << /Length 37 0 R /Filter /FlateDecode /Length1 1404 >> stream xœå“ËkQÅÏI¦Å6%UW2•ªí&¤O t!jk§±-D¬¢N'œG˜™@ƒÏ ¸qåˆ{wâÊ•®‹n+(¸qãÖ.\Ôx’Ü&EòˆÌÜßwîëÌwïDAÅFBÅ åšå¤`¼ÄPÁ©æ—Ÿež_S[/Úææôèž(ƒÌg‹®Õ¯ö0¿Ä|´èF[°£1w˜÷:¾e&‘&*_škn•‡p¡‘ßåK÷L×~>ZcÎý”÷e?Œ’¸_â7ý|švp˜¨5óÿ=Ôµ¦åyb¬üTb$qj$1RS±÷@Áohù_Ïkñ<+µ ¶•uõ ްl'Ïœž>;;5yìèp²GkÞ2ÃsÅËb{Éøj,e³Žo,µ*,¾ç7Ïßþxk`njosÛwöÏÒAM+%Ô”,[×B4¿g@®¡`ÿ¼Ïµç ¥ÍsVN¶3…ßweßõ›’cä@rÇñX²FýeÛÛ ¼‘,ÐO’Vö³d•ú7É1òÉqÞÉ]ÉúùÛ¨±¾†OqH2}Š‹’éS\—LŸ¢$™>Å=Éô)žJ¦Oñ c°0Î?a’õJc†´Š <¶Jì à#D•O.[óì·BejgTÙ³Á‘V¨¸‚“s»è¦å¨\»Ä¬±÷Wϰí2vÌ×'Óé}µâéFÉ ü°F¶êóž•Ê–moµênøÎŠ]¨8fÐ:”³ƒ°ä{úD*£wÔ¯»ÓŒúÞ¹.ñP³M endstream endobj 37 0 obj 592 endobj 38 0 obj << /Type /FontDescriptor /FontName /FAAAAA+OpenSymbol /Flags 4 /FontBBox [ -179 -312 1083 917 ] /ItalicAngle 0 /Ascent 916 /Descent 312 /CapHeight 916 /StemV 80 /FontFile2 36 0 R >> endobj 39 0 obj << /Length 229 /Filter /FlateDecode >> stream xœ]ÁŠÃ E÷‚ÿð–í¢˜¸¡C!‹i‡¦ý£/©0Qy1‹üýÓ–a6Š×säúıùlœ ¾Éë#ôÖÂÉϤ:¬ã¬”`¬Ž¯cÞô¨g"ùí2E×{¨*ÎÄ5S¤vÆw¸Ïá… ’uìîÇv‹Ú9„ÑE(8«k0دo~©pV#‚Èú¡1‰°q9$ñr[‚Ü‚r립Á)(¤Ü€œUEQCu:Õœ¡3ÿoŸR×뇢., )7ü•¯fþì»—ž‰R¥<“\e-a¾ç|ÈÞsù‰o endstream endobj 40 0 obj << /Type /Font /Subtype /TrueType /BaseFont /FAAAAA+OpenSymbol /FirstChar 0 /LastChar 1 /Widths [ 500 355 ] /FontDescriptor 38 0 R /ToUnicode 39 0 R >> endobj 41 0 obj << /F1 30 0 R /F2 35 0 R /F3 25 0 R /F4 20 0 R /F5 40 0 R >> endobj 42 0 obj << /Im7 7 0 R >> endobj 43 0 obj << /Font 41 0 R /XObject 42 0 R /ProcSet [ /PDF /Text /ImageC /ImageI /ImageB ] >> endobj 1 0 obj << /Type /Page /Parent 15 0 R /Resources 43 0 R /MediaBox [ 0 0 612 792 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 2 0 R >> endobj 4 0 obj << /Type /Page /Parent 15 0 R /Resources 43 0 R /MediaBox [ 0 0 612 792 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 5 0 R >> endobj 9 0 obj << /Type /Page /Parent 15 0 R /Resources 43 0 R /MediaBox [ 0 0 612 792 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 10 0 R >> endobj 12 0 obj << /Type /Page /Parent 15 0 R /Resources 43 0 R /MediaBox [ 0 0 612 792 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 13 0 R >> endobj 15 0 obj << /Type /Pages /Resources 43 0 R /MediaBox [ 0 0 595 842 ] /Kids [ 1 0 R 4 0 R 9 0 R 12 0 R ] /Count 4 >> endobj 44 0 obj << /Type /Catalog /Pages 15 0 R >> endobj 45 0 obj << /Author /Creator /Producer /CreationDate (D:20070123195920-05'00') >> endobj xref 0 46 0000000000 65535 f 0000097184 00000 n 0000000021 00000 n 0000004129 00000 n 0000097371 00000 n 0000004156 00000 n 0000005763 00000 n 0000005790 00000 n 0000011769 00000 n 0000097558 00000 n 0000011794 00000 n 0000014331 00000 n 0000097746 00000 n 0000014359 00000 n 0000016558 00000 n 0000097935 00000 n 0000016586 00000 n 0000034424 00000 n 0000034451 00000 n 0000034690 00000 n 0000035163 00000 n 0000035527 00000 n 0000049969 00000 n 0000049996 00000 n 0000050243 00000 n 0000050694 00000 n 0000051045 00000 n 0000076948 00000 n 0000076975 00000 n 0000077213 00000 n 0000077808 00000 n 0000078309 00000 n 0000094391 00000 n 0000094418 00000 n 0000094661 00000 n 0000095106 00000 n 0000095442 00000 n 0000096141 00000 n 0000096166 00000 n 0000096406 00000 n 0000096720 00000 n 0000096922 00000 n 0000097025 00000 n 0000097067 00000 n 0000098128 00000 n 0000098189 00000 n trailer << /Size 46 /Root 44 0 R /Info 45 0 R /ID [ <72F928463F875640529CB34BEFEB6889> <72F928463F875640529CB34BEFEB6889> ] >> startxref 98440 %%EOF apache-jmeter-2.8/xdocs/usermanual/listeners.xml0000644000175000017500000005165112032647214021457 0ustar ebourgebourg ]> User's Manual: Listeners

A listener is a component that shows the results of the samples. The results can be shown in a tree, tables, graphs or simply written to a log file. To view the contents of a response from any given sampler, add either of the Listeners "View Results Tree" or "View Results in table" to a test plan. To view the response time graphically, add graph results, spline results or distribution graph. The Listeners section of the components page has full descriptions of all the listeners.

Different listeners display the response information in different ways. However, they all write the same raw data to the output file - if one is specified.

The "Configure" button can be used to specify which fields to write to the file, and whether to write it as CSV or XML. CSV files are much smaller than XML files, so use CSV if you are generating lots of samples.

The file name can be specified using either a relative or an absolute path name. Relative paths are resolved relative to the current working directory (which defaults to the bin/ directory). Versions of JMeter after 2.4 also support paths relative to the directory containing the current test plan (JMX file). If the path name begins with "~/" (or whatever is in the jmeter.save.saveservice.base_prefix JMeter property), then the path is assumed to be relative to the JMX file location.

If you only wish to record certain samples, add the Listener as a child of the sampler. Or you can use a Simple Controller to group a set of samplers, and add the Listener to that. The same filename can be used by multiple samplers - but make sure they all use the same configuration!

The default items to be saved can be defined in the jmeter.properties (or user.properties) file. The properties are used as the initial settings for the Listener Config pop-up, and are also used for the log file specified by the -l command-line flag (commonly used for non-GUI test runs).

To change the default format, find the following line in jmeter.properties:

jmeter.save.saveservice.output_format=

The information to be saved is configurable. For maximum information, choose "xml" as the format and specify "Functional Test Mode" on the Test Plan element. If this box is not checked, the default saved data includes a time stamp (the number of milliseconds since midnight, January 1, 1970 UTC), the data type, the thread name, the label, the response time, message, and code, and a success indicator. If checked, all information, including the full response data will be logged.

The following example indicates how to set properties to get a vertical bar ("|") delimited format that will output results like:.

timeStamp|time|label|responseCode|threadName|dataType|success|failureMessage
02/06/03 08:21:42|1187|Home|200|Thread Group-1|text|true|
02/06/03 08:21:42|47|Login|200|Thread Group-1|text|false|Test Failed: 
	expected to contain: password etc.

The corresponding jmeter.properties that need to be set are shown below. One oddity in this example is that the output_format is set to csv, which typically indicates comma-separated values. However, the default_delimiter was set to be a vertical bar instead of a comma, so the csv tag is a misnomer in this case. (Think of CSV as meaning character separated values)

jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.assertion_results_failure_message=true
jmeter.save.saveservice.default_delimiter=|

The full set of properties that affect result file output is shown below.

#---------------------------------------------------------------------------
# Results file configuration
#---------------------------------------------------------------------------

# This section helps determine how result data will be saved.
# The commented out values are the defaults.

# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
#jmeter.save.saveservice.output_format=xml


# true when field should be saved; false otherwise

# assertion_results_failure_message only affects CSV output
#jmeter.save.saveservice.assertion_results_failure_message=false
#
#jmeter.save.saveservice.data_type=true
#jmeter.save.saveservice.label=true
#jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
#jmeter.save.saveservice.response_data=false
# Save ResponseData for failed samples
#jmeter.save.saveservice.response_data.on_error=false
#jmeter.save.saveservice.response_message=true
#jmeter.save.saveservice.successful=true
#jmeter.save.saveservice.thread_name=true
#jmeter.save.saveservice.time=true
#jmeter.save.saveservice.subresults=true
#jmeter.save.saveservice.assertions=true
#jmeter.save.saveservice.latency=true
#jmeter.save.saveservice.samplerData=false
#jmeter.save.saveservice.responseHeaders=false
#jmeter.save.saveservice.requestHeaders=false
#jmeter.save.saveservice.encoding=false
#jmeter.save.saveservice.bytes=true
#jmeter.save.saveservice.url=false
#jmeter.save.saveservice.filename=false
#jmeter.save.saveservice.hostname=false
#jmeter.save.saveservice.thread_counts=false
#jmeter.save.saveservice.sample_count=false
#jmeter.save.saveservice.idle_time=false

# Timestamp format
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
#jmeter.save.saveservice.timestamp_format=ms
#jmeter.save.saveservice.timestamp_format=MM/dd/yy HH:mm:ss

# Put the start time stamp in logs instead of the end
sampleresult.timestamp.start=true

# Whether to use System.nanoTime() - otherwise only use System.currentTimeMillis()
#sampleresult.useNanoTime=true

# Use a background thread to calculate the nanoTime offset
# Set this to <= 0 to disable the background thread
#sampleresult.nanoThreadSleep=5000

# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=none

# For use with Comma-separated value (CSV) files or other formats
# where the fields' values are separated by specified delimiters.
# Default:
#jmeter.save.saveservice.default_delimiter=,
# For TAB, since JMeter 2.3 one can use:
#jmeter.save.saveservice.default_delimiter=\t

#jmeter.save.saveservice.print_field_names=false

# Optional list of JMeter variable names whose values are to be saved in the result data files.
# Use commas to separate the names. For example:
#sample_variables=SESSION_ID,REFERENCE
# N.B. The current implementation saves the values in XML as attributes,
# so the names must be valid XML names.
# Versions of JMeter after 2.3.2 send the variable to all servers
# to ensure that the correct data is available at the client.

# Optional xml processing instruction for line 2 of the file:
#jmeter.save.saveservice.xml_pi=&lt;?xml-stylesheet type="text/xsl" href="sample.xsl"?>

# Prefix used to identify filenames that are relative to the current base
#jmeter.save.saveservice.base_prefix=~/

The date format to be used for the timestamp_format is described in SimpleDateFormat. Bear in mind that choosing a date format other than "ms" is likely to make it impossible for JMeter to interpret the value when it is read in later for viewing purposes.

Versions of JMeter after 2.3.1 allow one to use the sample_variables property to define a list of additional JMeter variables which are to be saved with each sample in the JTL files. The values are written to CSV files as additional columns, and as additional attributes in XML files. See above for an example.

Listeners can be configured to save different items to the result log files (JTL) by using the Config popup as shown below. The defaults are defined as described in the Listener Default Configuration section above. Items with (CSV) after the name only apply to the CSV format; items with (XML) only apply to XML format. CSV format cannot currently be used to save any items that include line-breaks.


Configuration dialogue

Note that cookies, method and the query string are saved as part of the "Sampler Data" option.

When running in non-GUI mode, the -l flag can be used to create a top-level listener for the test run. This is in addition to any Listeners defined in the test plan. The configuration of this listener is controlled by entries in the file jmeter.properties as described in the previous section.

This feature can be used to specify different data and log files for each test run, for example:

jmeter -n -t testplan.jmx -l testplan_01.jtl -j testplan_01.log
jmeter -n -t testplan.jmx -l testplan_02.jtl -j testplan_02.log

Note that JMeter logging messages are written to the file jmeter.log by default. This file is recreated each time, so if you want to keep the log files for each run, you will need to rename it using the -j option as above. The -j option was added in version 2.3.

Versions of JMeter after 2.3.1 support variables in the log file name. If the filename contains paired single-quotes, then the name is processed as a SimpleDateFormat format applied to the current date, for example: log_file='jmeter_'yyyyMMddHHmmss'.tmp'. This can be used to generate a unique name for each test run.

Listeners can use a lot of memory if there are a lot of samples. Most of the listeners currently keep a copy of every sample they display, apart from:

  • Simple Data Writer
  • BeanShell/BSF Listener
  • Mailer Visualizer
  • Monitor Results
  • Summary Report

The following Listeners no longer need to keep copies of every single sample. Instead, samples with the same elapsed time are aggregated. Less memory is now needed, especially if most samples only take a second or two at most.

  • Aggregate Report
  • Aggregate Graph
  • Distribution Graph

To minimise the amount of memory needed, use the Simple Data Writer, and use the CSV format.

The CSV log format depends on which data items are selected in the configuration. Only the specified data items are recorded in the file. The order of appearance of columns is fixed, and is as follows:

  • timeStamp - in milliseconds since 1/1/1970
  • elapsed - in milliseconds
  • label - sampler label
  • responseCode - e.g. 200, 404
  • responseMessage - e.g. OK
  • threadName
  • dataType - e.g. text
  • success - true or false
  • failureMessage - if any
  • bytes - number of bytes in the sample
  • grpThreads - number of active threads in this thread group
  • allThreads - total number of active threads in all groups
  • URL
  • Filename - if Save Response to File was used
  • latency - time to first response
  • encoding
  • SampleCount - number of samples (1, unless multiple samples are aggregated)
  • ErrorCount - number of errors (0 or 1, unless multiple samples are aggregated)
  • Hostname where the sample was generated
  • IdleTime - number of milliseconds of 'Idle' time (normally 0)
  • Variables, if specified

The format of the updated XML (2.1) is as follows (line breaks will be different):

&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;testResults version="1.2">

-- HTTP Sample, with nested samples 

&lt;httpSample t="1392" lt="351" ts="1144371014619" s="true" 
     lb="HTTP Request" rc="200" rm="OK" 
     tn="Listen 1-1" dt="text" de="iso-8859-1" by="12407">
  &lt;httpSample t="170" lt="170" ts="1144371015471" s="true" 
        lb="http://www.apache.org/style/style.css" rc="200" rm="OK" 
        tn="Listen 1-1" dt="text" de="ISO-8859-1" by="1002">
    &lt;responseHeader class="java.lang.String">HTTP/1.1 200 OK
Date: Fri, 07 Apr 2006 00:50:14 GMT
...
Content-Type: text/css
&lt;/responseHeader>
    &lt;requestHeader class="java.lang.String">MyHeader: MyValue&lt;/requestHeader>
    &lt;responseData class="java.lang.String">body, td, th {
    font-size: 95%;
    font-family: Arial, Geneva, Helvetica, sans-serif;
    color: black;
    background-color: white;
}
...
&lt;/responseData>
    &lt;cookies class="java.lang.String">&lt;/cookies>
    &lt;method class="java.lang.String">GET&lt;/method>
    &lt;queryString class="java.lang.String">&lt;/queryString>
    &lt;url>http://www.apache.org/style/style.css&lt;/url>
  &lt;/httpSample>
  &lt;httpSample t="200" lt="180" ts="1144371015641" s="true" 
     lb="http://www.apache.org/images/asf_logo_wide.gif" 
     rc="200" rm="OK" tn="Listen 1-1" dt="bin" de="ISO-8859-1" by="5866">
    &lt;responseHeader class="java.lang.String">HTTP/1.1 200 OK
Date: Fri, 07 Apr 2006 00:50:14 GMT
...
Content-Type: image/gif
&lt;/responseHeader>
    &lt;requestHeader class="java.lang.String">MyHeader: MyValue&lt;/requestHeader>
    &lt;responseData class="java.lang.String">http://www.apache.org/asf.gif&lt;/responseData>
      &lt;responseFile class="java.lang.String">Mixed1.html&lt;/responseFile>
    &lt;cookies class="java.lang.String">&lt;/cookies>
    &lt;method class="java.lang.String">GET&lt;/method>
    &lt;queryString class="java.lang.String">&lt;/queryString>
    &lt;url>http://www.apache.org/asf.gif&lt;/url>
  &lt;/httpSample>
  &lt;responseHeader class="java.lang.String">HTTP/1.1 200 OK
Date: Fri, 07 Apr 2006 00:50:13 GMT
...
Content-Type: text/html; charset=ISO-8859-1
&lt;/responseHeader>
  &lt;requestHeader class="java.lang.String">MyHeader: MyValue&lt;/requestHeader>
  &lt;responseData class="java.lang.String"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
...
&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
...
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;        
...
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/responseData>
  &lt;cookies class="java.lang.String">&lt;/cookies>
  &lt;method class="java.lang.String">GET&lt;/method>
  &lt;queryString class="java.lang.String">&lt;/queryString>
  &lt;url>http://www.apache.org/&lt;/url>
&lt;/httpSample>

-- nonHTTPP Sample

&lt;sample t="0" lt="0" ts="1144372616082" s="true" lb="Example Sampler"
    rc="200" rm="OK" tn="Listen 1-1" dt="text" de="ISO-8859-1" by="10">
  &lt;responseHeader class="java.lang.String">&lt;/responseHeader>
  &lt;requestHeader class="java.lang.String">&lt;/requestHeader>
  &lt;responseData class="java.lang.String">Listen 1-1&lt;/responseData>
  &lt;responseFile class="java.lang.String">Mixed2.unknown&lt;/responseFile>
  &lt;samplerData class="java.lang.String">ssssss&lt;/samplerData>
&lt;/sample>

&lt;/testResults>

Note that the sample node name may be either "sample" or "httpSample".

The format of the JTL files is identical for 2.2 and 2.1. Format 2.2 only affects JMX files.

The sample attributes have the following meaning:

AttributeContent
byBytes
deData encoding
dtData type
ecError count (0 or 1, unless multiple samples are aggregated)
hnHostname where the sample was generated
itIdle Time = time not spent sampling (milliseconds) (generally 0)
lbLabel
ltLatency = time to initial response (milliseconds) - not all samplers support this
naNumber of active threads for all thread groups
ngNumber of active threads in this group
rcResponse Code (e.g. 200)
rmResponse Message (e.g. OK)
sSuccess flag (true/false)
scSample count (1, unless multiple samples are aggregated)
tElapsed time (milliseconds)
tnThread Name
tstimeStamp (milliseconds since midnight Jan 1, 1970 UTC)
varnameValue of the named variable (versions of JMeter after 2.3.1)

Versions 2.1 and 2.1.1 of JMeter saved the Response Code as "rs", but read it back expecting to find "rc". This has been corrected so that it is always saved as "rc"; either "rc" or "rs" can be read.

Versions of JMeter after 2.3.1 allow additional variables to be saved with the test plan. Currently, the variables are saved as additional attributes. The testplan variable name is used as the attribute name. See Sample variables (above) for more information.

As shown above, the response data can be saved in the XML log file if required. However, this can make the file rather large, and the text has to be encoded so that it is still valid XML. Also, images cannot be included.
Another solution is to use the Post-Processor Save Responses to a file. This generates a new file for each sample, and saves the file name with the sample. The file name can then be included in the sample log output. The data will be retrieved from the file if necessary when the sample log file is reloaded.

To view an existing results file, you can use the File "Browse..." button to select a file. If necessary, just create a dummy testplan with the appropriate Listener in it.

Results can be read from XML or CSV format files. When reading from CSV results files, the header (if present) is used to determine which fields were saved. In order to interpret a header-less CSV file correctly, the appropriate JMeter properties must be set.

Versions of JMeter up to 2.3.2 used to clear any current data before loading the new file. This is no longer done, thus allowing files to be merged. If the previous behaviour is required, use the menu item Run/Clear (Ctrl+Shift+E) or Run/Clear All (Ctrl+E) before loading the file.

JMeter is capable of saving any listener as a PNG file. To do so, select the listener in the left panel. Click edit -> Save As Image. A file dialog will appear. Enter the desired name and save the listener.

The Listeners which generate output as tables can also be saved using Copy/Paste. Select the desired cells in the table, and use the OS Copy short-cut (normally Control+C). The data will be saved to the clipboard, from where it can be pasted into another application, e.g. a spreadsheet or text editor.

Figure 1 - Edit -> Save As Image
apache-jmeter-2.8/xdocs/usermanual/jmeter_accesslog_sampler_step_by_step.pdf0000644000175000017500000025346012032647214027236 0ustar ebourgebourg%PDF-1.4 %äöÜß 1 0 obj << /Length 2 0 R /Filter /FlateDecode >> stream xœÍ\ÉŽ$¹ ½7PÿgSÖ 00•åóØ øÆ `x x.óû–AòI”¢¢{Ú Ý@Gfh¡ÈGò‘JsûååÓ¿næöyµ·Éºôï¼æþËíO¿¹ýsÿ4ÿùùo/ŸŸ_>­ù›³ ¯ñöùÏ·ß¾Û›]nŸÿzûÞØßÝ>ÿýåSħï§¿7n4¿†ñoÂñ"?:L¯=‰û“ O&3›eꬌy4›Öy<\ÍÝ<öÇÞÈê&ÔÉZ6šÊ.òþ›y¦æýcâ7¬±Ö¼›°aÿø™¤ôÃ@pÓ<¥Ip®Î:ë9}’ê1ð± ';&ÒSkdqé±YµèY3?³ÞÌüEÞó–ÖÍÓ¦¿ô±[E › I~/0½s|{嵨)-q6÷cX7Ïýá"xÿÊsÑpÙ·g)Ž •æðiû×Ev¬6ʳ¤+ ‹|PT#)S:y{HчיDzŽ%bôi°‡=4ÅMr[,GùÂlïE°û×WÚÁ$òJÛ¢“7rœyÇ…‘Åàœ<^•ït0|Ȳ(~R¶|Aa§¬Â²nò­ ñIsò³Y­"ÒÊÆ: o±V ÌÁ’šX9î·4‚%XùÒ½h‹ æNj’fæMNJ€«ˆè·^‹ TîÐZ]-Ín¼+ªï’n Xú±¸§ÎVµ@¶$¹;k'ÍbïIŽgax[•"àà¤P"¶ú1ú<[šèÆ$R‰Ù,í£`<ZmëFÙ¨Ž0ôwî–=þ¤câ•f;O›æ% À IÅ'rp§òrk°Yeÿ®ÔÇèÉkÏèI_²ÍõÂêŠhàãùÁ›Öd—Ü{µÝŽ¨Û­lðÑ¢~.6Jdáj©Û·üŸˆ(:ÂNÂ݆&j=s`?1AÓ¼Ÿž}'p¨È ÚÖ1!mð¡8çì xŸÞ ÊÊ„±GË(PÖ”†Û ²ÀŠh§i0~ÌV½ð¼Qϸõ•çea=ÍM1Ù+×ÇíÌ5M鼚¿¾«°àid©Qðú.¶›dÀJãÔÁäCI*Tâ¾fÂ/¸];Ɉ=ŒÇš¹ÊÔKGE7}‹Î]¤³q`þ•Á/•ÁáуÅÊœUùð¶h‹²Ìº4Æf7‰ ƒrÏŠj§ä†Â>š¢€ÑaLÉB£}ùp'ʇ/gÏ›]kâÓ8Ö¤iíÔ¸_Õ«Ó*t<”vülc=~/!²à½U[cY¬"ƒ3»‰K>‹Ænì%»é½Úw¦"4q6œEF‹¨;àŸ#XQ‘ÞØ×²xRÞ7Ð{ ¢+<ëd õü2›ä¡œô nGˆ.Å.­„~epè'h7ñFŸv¶ÖÁˆì̲´»‡—:@ïîº*,Ϧϣ² 9‰¼¼í¿ Y6§±Q‡UÊ ”^,§‘§1-@Ná®YDçÕÿ©Eºs7]¡ ¾x˜Fr†Ã¾„à´~S3Ї—²šŒd¤Q®Š~ ©<$K’¼ Œ“Ñö8R7£™=­5ˆà@J3¤bÎdk iœâZñpA…¢R MÔ‹ÿwê#/g%פ™‚Z’pÔ„Í8€%¥Y“ýN|Ð<€']ÙKÎ:uX…¹xTÆ|ˆò’ŠÍJò[†¼œøæ/(‚[®ñu: ³ "ûvœÛc‰)d¯’²w ³Ë¹)ÓB[À|’Žý$¯_€KôŠÆ :™‡¡ê¬:!ND7y>^G•î¼}~¬¨‰= dSúâDJ»8?vRcýKß²I‘(ž«R0O'ÅË_3ûÀ*R(èšCè#ß‹£‹dZB‡¤’HqóÀjg^Ë'¿Qqç@ޱbEê„OM¢D3 ÈÍVÎv¢Ç¢º*iKJ—lÂ…=±ÏÇ)V„5ËVϨσޫ‹×£‰LFàÒûdkJþŒ(½„ÙlOtø=^†mÎÙ ÚÄœÃ7þ@VS2V¡Æ`¦·ƒS¡y*.…‘£µ/açiYu¶"1*Ýîq¹=«¤· ˆà`uŒ‚”.H/ÍÊO­ÀXM»)uœcH¾²Ž¥H„bûq\mK äK’RŒ8ͤ; áÃúª¨VT” r^è•zCOñYØ }³Ú3 |鹞”e‘{C®5ù ¾T6(ãê}²žIA‰æž]‰†h…m‡O(œ&älFO'¬;bÀÜé{%ꔌ ±}T‘x[ç=³³°ÌšÛ›Ú,£…Ù0"9mßv¹ªwfÌjv‰98äû&u,U©˜Mœ?HØ :6 áé©Ëf¾kŒB5#|jƒsЕ˜Ž Ò Úž0ØÉñ-Ç&ãØi|ã$>XÔüI@ZMÔ© ”£2èàê«é•jW³¢”/V»z¯Øt9È‘…ˆHˆï5MŠ’ tÊAüºCʼˆn’–”89ê¥b›(ïBAâIЄü²¿ J°ãQ)Œ´Î{Ǧ¡CWÝ+Ðj™&‹uaøB`|««`úÅJªXèîjÀtCÇd0Q x^ó^*¢ä…Ž*¡ÛÒ—µÏd@"¤±ÃcQ满㲨Ãߨðw:!é"Ò‘…–7LùŠÅa¿>öb ckZ@ ˆuGÐVò/韇²m§¼­ýM.w“í+§^·Ð4¡ñw¯›~À¿ZíŒfäUlìft1Ð.†M7¢ëˆ“Ò:·S[6³b/Öæz¯íyÈîT@è MPÂäVÓw»å ¿ÓÓ²V‡4=’ý€ó8ȼÄéaE†ãëêߺGê$EÔ^{H]7wj’=÷Ÿ.à5öL?ýêUsßÅJYïÕ_§Ÿ£V ÄOng¹Û,µ”FÎC¾¾ ‡¿­¿ÓZÄÇÛˇÉpè;±²¦igª•VÓn:cU¹‰]hC€oÝw¹?œ+6'a„±Ê¤X§îgÀpFçê»MßUÌ¡'¾ê¿†7ðÍðx@ S[Ù£•¸0… °¨JÅÙ<«W’)ÖViši$ç~ÃD(Mð„†PÒºs–P¡qs€ñôÁ îнn,t½„T¯Nòúª³Ú P¹é™pŽ}…ÓM@AÚŸ ð¿_Ekû]Ê=ÙoJ5‚t2q?­vz¢ºåFh¨n4઱N¡¿­³,£&Òbü IBrãÌìI·Ù ,·ÜÁ;RÌ™ÑE9±V¬Ù4å@gÏ&¹XÁó~Uœ*ô0™3Ð*l¯Ïô«ùý†b©ðB?Ï#ìûU ÇD§p/GŽlîRQfx˜1OT•WÒÉ »‡¨•U€CNU«f$·ØÛqryCƒéH9:=åªúÐ醻pï¦ËÜ}«â é(eAŠ ë:Û nêððÃÖŠ „]Òfź¹;á-Ë=è ›%ﺸ• ·`±š¡ê:~§E ÷ù]' YæÑZsCD€H 7åÞZ0vO‡•`^â{!pÓR¸”ê)Ÿ–ÆY­ZÄþð(¥Søî¨é‹ ì-I.¸'ÍïÞ½q¹mˆzÍ’ef­!t£¡„’|Ξ—šŽ†™õ¢-7 LßC¡Õ•‹j+9@)Bw2J]s`*ŒÆöª=Ë>-o‘íÑY/ýA$|:Ù¢QIa@‡~üéåS®sþRiÛ~ŸžÞ¾ËSü”«Œàå?ÿ¸ýñÄ€J†z% ÓµS5ÊÒÁ·¯6!ŸSîj ùNƒoŽ-…+ƒÚ[§wÙr”mß^<í%¤Íݵ˜¬ ôÏî¶,N2ÌÄø8¥I¬—„´[ÎCgûçëœðåÞ¸÷vuŽ} Gš«7·(˜PÂ¥ÙÀµ'pÉu߉,|†K;>pZÚÝ´¤$hÐJQëÇæãÖU·*oYò¨ |õ= 6ƒöŠô¹ÄL^ôfÝÍÀ<ÜÛîÄ$Éd̺º@3KåЄ֠¹ö‰h~Œ$Ö7…(¶Aúi¾I&á=ÑMrºÞe8Íèy– ¦o–ni3/Å ×iFÄ›[MõÕ@è²åè•ÔçoßòŸCï$ñ³«4 ÞñÉAïL¾Æ3“ÆT×v)w†ö;ŽïJ½3E^¼e¼Gdµ–äá°¤¦®jÓS–§nÓÀ"$ê2æPYAXŠÔí9…¼ qU”¿Ÿ•.L/÷AæDéTØO•Ü;]Ïè´hU`#5£ìW/Lb"qîŽ'±jwìᆿèS;`þñÐnÛ¹?対—¯íÆê½Z~hÝ.ÇJ£dDt9îÂÊ&ô_ëñÑ/–(w*° I±Ìç—ªãiΪ|=æEÀI÷þ‚²Øhujs­÷¡÷j§‰d±X¢×£/¼MÒïÚv »EÙã^ ’Üþ,÷÷âÊ-0Y^9ñ^Ó{IÕ(Ü^ª9DøÃíß‚endstream endobj 2 0 obj 3769 endobj 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xœSËjÃ0¼ü{.TÙÕ[ ‰›@C? /(¤%¹ô÷»Š¼’ó cF³³³£5ÂOßá'Íßò÷øÏwðUNósüè»õØw)3mrÊÃø ‹-ißa©5¥?ûnôÝu%¡Uúf)Z4èùÕ¸)Ú©À¥L[¢ÐsaÁÈLˆp.žº“QQhƒR‹‹ÊÖâ‚ØÆ çòäpýçh%”˜ƒ»Åü/”¥Õ–˜°enÊE“×)SÃáuÁ‚J‚y²s§enaé(œØ´ ’#¥&èp+áÊM™•D;‹ÛŠ•w’¶µÉJâ%§Lu©•ƒBMÉW¥_ß\ܵendstream endobj 4 0 obj 374 endobj 6 0 obj << /Type /XObject /Subtype /Image /Width 604 /Height 548 /BitsPerComponent 8 /Length 7 0 R /Filter /FlateDecode /ColorSpace [ /Indexed /DeviceRGB 255 < C3AB7B C3C3C1 F2120D 0A2164 BABAB9 44629C D6D6D6 3E5B96 D75852 1F3979 F7F6E3 9A9366 A4874F A301E4 E7E3CC 071D60 A19C6C 213B7B 7F683D 6A6A6A 785A21 375491 927846 F201FB 2A2A29 1D3778 142D6E 284382 E7E7E8 F1F1EF D3015D 2A4583 4A69A3 B6B7B7 5372AA 405E99 94895F E904A9 4D6CA5 4867A0 264080 FEFDFE 2C4785 C19E5A 223D7D B9011F F9F8F7 0F2769 172F70 092062 5677AD 8A8A8A 324E8B 304C89 696650 1B3576 36528E 506FA8 50504E ADADAC FEFDEA 233F7E 0D2567 4F6EA7 132C6D 735722 4B6AA3 684244 AAA5D0 858585 5070A8 405D98 11296A 2E4A88 A5A5A5 4C6AA4 C5BE9D D1CABB 47669F C3BD8A C19D59 9B9B9B 34508D 947F58 193172 5170A8 F4FCFF 6C511F C5A669 193373 CE7D79 5676AD C8C38D B4AD7B 25407F 0C2265 382D08 35518D 795E2B FEEFF7 1C3677 434343 33508C 2B4684 1A3373 D2CFB0 162E6F 193273 CCC792 FFECF4 393937 C3A15F 8B6223 B7B38B AFAA7A BF9F5E 7B7B7B C1A061 E9FFF6 86692E B9B482 B3B3B0 979797 F7F6F4 FEFFF6 B69552 FCFBF9 120D03 2A02D5 750359 FFF7FF DFDFDE 424139 ADA975 929292 D0CBC3 C29F5C BE9C5B 523739 C7C7FF 919191 122B6C 3F5C97 2D4987 4E6DA6 5271A9 122A6B D6D3DD 3C5995 314D8A 395692 2D4886 3B5894 334F8C 4968A1 0E2668 183071 46659E 5575AC 3A5793 2F4B88 223D7C 415F9A 43619B 46649E 365390 375390 3D5A95 0C2365 2F4B89 274281 5475AB 0D2466 10286A 5576AC 47659F 294483 877E96 5473AB 183171 45639D 102869 42609A 42609B 42619B 41609A 081E61 25407F 3B5793 43629C 5373AB 1A3475 274180 3A5693 385591 395592 1E3878 4F6EA6 45649E 203A7A 3C5994 43619C 9485A8 3C5894 2D4886 909090 3CB408 BEB985 453130 7F7F7F C7F6EC B1AE84 EAE8FF EAAD24 F54C16 7266DD 810079 855E14 C7BDAA 38004D A16221 883E0E 4B4B3E 870269 C2CCC4 9F9785 79775E FFDDB0 CBC690 DED4C1 F4F6FF A0A0A3 343433 BF53B8 D4D1A6 918080 3D3D3F ABA77E 010042 858258 908C6A 92866E 9F959D 363C3A C3A975 ADA776 F9FEFF AD9CB8 6F03C3 C4B597 5C5C5C 5C5C91 9191C7 000000 FFFFFF C7C7C7 > ] >> stream xœí ü&GYç Äc™$N’1Ž&A‚ ƒ‘x‰ ŽŠ@@’—€$¨³Ž‚ AƒÎrgp†C0ˆr(Æ ·Ç Q<È®+â}ßÇ’ÝÅÛºóþ»j»º»ªž§Ž>Þ·ëè®ç7ó»ßî~»úøþŸúuÕSïÿÖ[I¤@b$RÝÊRÃMZ­ˆ-R(Õl}²Oÿ­Õe@÷úÚF?Þê'=¬Ñ5úÜVï}ï­õ¨F¯nôòV_ÚèÓ•¾YêÁ^×èÝï~÷W×ú–FOzÒ“žúÔ§þ|£‡´ú†FŸÖè—ý‡Vw5:Wêô ýG­§´ú¹ŸûìZ¿Ðè']Øê>£Ñ75z`«ïúµW6zt£7ÔzÛÛÞö…nkô­~°Ñ7~ããk}}£‡¶zË[ÞòÖ·¾õSýb­_ú¥ïúÀ^_ë}ïû¡ÿùß¿WèÇZ}b£W4zd«Ïlô¦F?û³?õS?ýÓ?ó3?Zë¼ÿý_ë=>øÁ¾ùÍoþáZoûÛ×è^Ûè>­¾Lè1­>«Õ«ýÊÃ…¾¸ÑW~åúžF÷mtçw¾ë]ïºýöÛ¤ÖwÜñä'?ùó„Z¶1ö±C ¦$¶ˆ­¹ØúŠ<ý“~÷ ı5?[¿ÿ‚OºÇ_¿Ø"¶ægëÒ‹Ùw¾ðmÍc[±ÅØ8¶l1'[ŒíÀ›ÂcdSØbãÙbÌÉ›Îc[±ÅØ [ŒMe‹±ßxÆñg¥e‹1[5Z_ý-ÍaíÂc˜-Æ ¶Ól1f°Å˜Íc¶s²Å˜Éc¹³Å˜+n1f°Uß—¶¾ûØ¡3?z÷ç»ûîìâ–`‹1U'²yâ`«†kˆ-·j¸¼qËbë Ø®l ¸²‰[Û±uË%b‡n¹¤cKLj®Ää²ËôkT;¯-ñ¾f«‰/Š-ñæ½ï¯zT³æÕâçåÍlË–˜ëÂûæf¹x}ðƒ{ÝëÄO‹–d‹±Ž-ÆÒþÿñÁV-ÅVóî®»êvî¹b¾y}ãÅlÍ–˜´/O¯Š­š.ÆX?!æ/¼P¼¾ãuÈbMÜo[õ»W6=Zü<ú bV°%è¯·ÝÆXµ$[Œ=þñâµFKL*^$[ÍnZ¶ÄÜ^ß,¨ÉÉ–˜¯Á“W¼B¼>ò‘âµKLÞô&ñ Ùïk¶š])¶Ä›Ç=N¼>à͚׊Ÿû4³-[b®a«ž~V³üUõÏÃΘàªö[-\Š-Æêÿw¾«Ù²FKLj¶Ä°õœK®aìyÞó˜Œ[5\ _— °.»¬Åëž _Í+Œ[¬ú‡±‡=L³Å˜Œ[5\-_¯®éªÙzyýó¥ÍA•¬EµXÿÔ`õ°ÕÀ¥ØªÁªñjâVWÖø¹«¡ª«©[¼ÔD¬6n °„—g2n)¶.h]Xƒõ±Y'Š ±f묫Eµ(Àj{CW·Z°nŸìW·j¼j®êÿfÜbìSj°dÜb¬fëõï«áªÿ7^žuq«†Kð%Ðq«Åë3_-·{ÿÇ×p1öž÷h¶“q«†«åëµ5]5[÷©¾¬ùÿ˜ÇˆŸ¶N¬ÁªÉzÕ¯Ôp ²uûí \wÜQÃUƒ…âÖs®¸¨¾·|ô—¿HÆ-“-!3lõ³UÓÕÆ-/[B¶,–¿Îd«yN4Øò±u×¹˜­&p!¶ºØêüVóé¶šÀÕ±Õ®†,ÄV¸š°åc«ÙD³Å˜b«Yc°Õ.¶†Ùªéjã–—­6pYl=\,ÿbÅ–xçb«ù8bëc_^׉W|ÂñßüÓ¾ÿÙÕ¥L åŒ[—ùêD'[mÈXÜÒ^~ [­š¸Õù­l5~ °õ”®QlÕâPÜ’~KÄ­Ûns°Õú­.7[-^’­®NlØbÌ·é«lµub[-úã–öò~¶dÜêîƒd‹1;n}Í—?—±ßúÓÏùßg?¿úÖÏÖ=Uµ8È– k [mÕ8²Nüù.p=¤ýÙ‰­Úk ¶\SØjàËÖ2ƒ­¯èX¶]¢y‹õ²%èV~[?üöql‰gÄQub¶î{ç[_ó„§ÿÞ½Ïþ÷çWgÿÁwÒu¢åå}u¢ÓË‹ywÈ —g½lÁ6›­ÆË3¯—?Wzù7J/Ï://^UØ.&àb-_ÐË[u¢ƒ­ÆË³·‰ú°«![ÂÌ·^^Ö‰ÂÌ{¼¼U' ¶º:Ñòò¾:Ñéåż»NdÐ˳¶ŒçDÍS^ža/ÿ±KþäSŸÿ÷ÿåϾÿ½ŸyhÇvy·œm"nYíòýí[¨]ž ´Ë‹¸5Ô¾e´Ë³‰íòÌÓ¾ål—gm§"nõ·Ë³]ÚåQÜr¶Aˆ¸eµËlßjÛNEÜòµA|ÝïÞÿSÿüÞŸs{üÎ&°ÅZ¶ÄÛ‡ýP·| [­þvù^¶˜”ÅV‡ÖŒl16ºÏÇË–:Þ¹ØêvØoßóÁnù¶ZãÛåûØzÂ_üÛÿ}ú Ÿwü?7Ç@ý‰ÔŸ8W"3Dl[s±E¹ÄV¶H¤ ªÙâ$R[¤P"¶H¡Dl‘B‰Ø"…±E %b‹Jš­Jˆ·ÿªÚõíl³MåÝÀ/c“Š{J³>Æá–£>CJ-È7fÀÒvÖÜ̸ÿNU•cG#Dl-Q&[2&Y!H¾—±ÍÚBÞÿŽW„Et;¥ÉO8Ÿb nI„e.7[F|Ñ«;$\·Öb˳‰±‹®vµöîÛ¹{R^rû-'[ ̸ÙRA¥̈kb#S9K'¶ò–/n¹«<ÞËúÙš­¾:±‚¿ÄVæò׉†F±å ÅÞÇ[Ü]pßÜ»{R^ â·*ßÍ¡ibÎ}EòÕ„çDóÍ ŸZí,Ý~%¨´u"7”±Ò´Ë¿ˆ-R(m;ܱªÜC5b›m÷MÊNÔWM %b‹JÄ)”[§H¤¢¸E %b‹JÄ)”ˆ-R([¤P"¶H¡Dl‘B‰Ø"…±E %b‹JÄ)”ˆ-R([¤P"¶H¡Dl‘BI°uz­’'™ú8 ÕŠÙâŒØJª–-óo®(¿øRïºÌUŸ”f+vu@â²NôÝŸ‹©uô¼}ÿ/&óˆ ¶Z¼ˆ­$êgëè‘kÏzæY<ûè‘뮻dì®6n5T[IÔÏÖ‘?vßGžÕÕ‰ `ÄV õ²uèÈáßuàèt¨~sÓÑãÉØ]Òo&¶ ²%FÅ£ÛsèÀ‰«¯~Ù/8ï¼?bì_È:M~+±[Õ¦‚ëЛ_}õW¿ì¬óû¸EÆ-ò[é¤Ùª6{'OîíA¸Ž×qëe‡o<|ø¦kë¸õìãÍÂÊ o•Z.çsù­Ô‚l¬ª“˜­£7Ö•âáÃ'n¬Ùú¸Ž-›ŸJ½Vù±E~+™ ¶˜·nª«ÄW~Ùµ°Nl6iƒ—xí˜b«‹_UbÌÈo¥®YÍÖI¡öö\Ú°uøð¢Na”öxˆ-Ÿö}øªë…¾õÿüöcŸömm>§ë»Ž¨ÆT.lÆ$¦Ò±åÓþ­¿¹þ%ûÏ©ß=í'[À_5lå&b+‚&²uü¹÷Ú·ÿÃsýõWݰï*±àœ§ùØê|W['îå%b+†¦±u1¿ä9÷û‡Ø·ÿ¾}7¿¤^p¯osÖ‰ÚÅ·|[PÄ–Kg\ñ‘¿ú»n¾ùÃ¾êæ›÷]Ñ…­á¶Sb ŠØré9WœðÅÿxU]'~ëÍ_tð£³sþî^ÄÖTmRÉm$M[W^~ðàÝ/~ñÝ|ÆGê%_r±5™­¡Ë¼Mô[·žqÉ-ç_þŒ©yˆ­Ú‹©98‰¢ÊdËÙŒn,tö=Kª¡qCz%±5AKb«ÖMšµ™¹`˜-µ–ØšS|w›ÜMåÛhlUn¶tîŒÊg0RtžsUÉ´½!ú”+ÐéEÄ–Ð;µv*ÅÁV3©ä$&[•›-@³ÅÝë‘€2[±¥ô΋´v‚ËÍœMÍ =#•O8þ±ÔÇÖ¯^T¿\t¬þ'¦»À•[{AÙÒi…T'ö±Åرc·;V±JÙ ›[UØkåàågŒ[à#˜-9Gl ¶^så±VW¾f>¶ö$TIüÖÞ[–ŸrC5½NTsÄVÖ–d«Â/p¡«ŒÊÅV¢çÄ=›-ôhçxNë$P!çs¢Í–±ÕÔ‰n¶¬¯nsÖ.¦] á 'b«‰[ìØk^ÓTŠºN¬äOêoûVËÐRý½‚ËaËÙ2Elm'Ì–RóÖ·[ðÛ¾+ýÕÍxi3¿¶b¨H¶ ùâ–ñMò ~xÕ!†¿e—Ø"¶°~•ýº3n9ØR_nþ%ƒvžØ"¶°ê¸õëvÜ_ÈÌ|l™¯¹]Mb+†úÙrù-˜´¿R•¡±´óò4Ε^†¦û­m”zX%Ê; é~k+¶vølQÜŠ¡-üÖ¢:•ž²ðˆêcëJˆÓ;¯toDlM/=eáÕÇV —Ö.h[¸ô”…GT/[³)c¶ì¬˜@}> "LÙ‰Ød1—@þ–oƒþ¾Ìð3‹Ø‚9Z•s|Z¶µ@Þ©g=ïç‡ØZ.[FÒŸ•&¸ã½ùòx‘Y+ù`ÆleØñ;‘‡ÑÙ’¹xIåaK ëñfšî ÈøûSêäz•¡Øö¤µâØÚ}x÷#K Øâ<èÉoàw>n¬™ö¿NTsðVzXL¨ÑÎPÒ”9b ­?•Z騲B¿¾¦ò†nu7¤Ilqoªy«vgK•ÙÂóF&[ˆrøÖf+¹’±¥c‚¾£ŽÌôéÚÈ8³i_Ô6cýÖœu":B#ô€£é; ƒrø–ØÒ~kàîÌ–ï»u<:’ZÕãn¨»ŽÐ®Ö¸ã—\˜±~«x¶\–ÆÁÖ¶•¢d« UÖL»MÚvyª>Ï móÂx(o% ³þ즤u"ç=lm{F]-‚X…\Xj¶&nŸ *“•Þo9ªGPM—ŒN2\i¯•MÜš¸=±5…-Y롸¥ýŽ¶ó”Ž­4©‘ÕkñíòÑK^¿ˆ­ÒJާÂÙJ§Ì®DÎV¡##ãˆØ"¶B‰Ø"¶B‰Ø"¶B‰Ø"¶B‰Ø’jºïzh˜ë[ ߆)óEqÿé”®Ô,[ì‰-ˆN?³±åû‹8Í)ÏÞ bËD§ _îo(—ëvá¬òÿEîfKçüX™\»Ø—n„ˆ-„T[e©ïŽÆ_#=Ïwþ¶M` æ…x¾%:K´R²…Û’\§ßª*gÐ ÈVe`¥s°œ©Gh¢1ÌNéØÂÙ3®Îfƒò·8Ìç’›8î:ÂÈdKq·[{}q xyWö¤†ªr$ f¥dlÁ+º}réÀ™m0[õÄ‹aÝwÛaqkoWW?ÂËã÷5«¬*ª{Ù putfàF#e¤ã¹ÿN‡ÅÖ¼~ko ¶ßrÛ®ü´v¶ÌÁÆ6(žT_¶ß2Ÿwako[:{Ò2[0u2K¸Ša«3_ýu¢;ЄøS0Û=1g‰WëfË46à剭y•ü9ø‡¹OmÓx•l![ßΠ&$[ËRúö-ÐÖÿ쉭€’ã/‹o—'¶f—7^([¡Ox1W"„Jg«¼’ã‰Ø*­äx"¶J+9ž:¶*b«”’ãiÓ=ÿ[¥”O…ç[EluYRaUÙ%s˜’µžAÄ–R¤ž¶ç7VƒL-œ€:úè²êp$¶”@”ê„‚É3©Ý×Vl-lP±¥ê&…7’F{ÿ·aËîÝÏ;I0}_uJùâVÈ;æ` Æp±µÌAÉslžš5ÿ­ >†­ù þè:qñƒ2’çê‹"oâL×Ç1ÃÎ ·æ;"PÌÈ:Ñ>0î©Ù ÊÈ€-hrffË‹a}1r’:Ñ,y[Èoe>(#9[Öµ™ëò8ÆbLf+\M3™-Yÿq¥|eÃÖf3ÄVTíXrNyµn¶Çb[•ü9Q?îÈ?Û©™c1ž£*·–¾Jß¾ŸgekÌÙ[µIõ·9 Á*2žˆ­Ê¥ÏG> ÅõÄVHåÂV[!El•Vr<[¥•OÄVi%DZUZÉñDl•Vr<[JÎ\EsÄ„Œ.Ï&Þ<ˆÇb íuÁÛ»)*ÜÈZŸmÝîƒ#¶¤œ ¾#nµo“jBþ–Ê€Û¨ìÙƒ±` !µc;3b-¶œ{"¶:©ËƒsÍÔ(p‘Qg•Õ}å 51ÆbôïÒè1ÏEÇKŽOÏÁ–šw^ÝnJlŠ r ÆÀ ép•½qo>G{ëŽŘʖóÈbÍE˜-×É&̱qû÷ ¤19?øòj¿e¬òÝfK¶*{ô¡ ¶´ËñC…ÑïÛe[.@léCÊ’-×!ùnÈ6²Æb8¾ït ¶äVÀÕëûkÕ¡¶F׉ÀËëŠËU%WzéÄ»t±å8r'[†—Ïœ-Û/Œ*êÓı[°··—øÙr•ì2x{ÿ¨˜ª²°pïÒ·¬#×8ãý¢#2pEJÎþåwjWyÆbxóNû ªúüVÏG]ªÌ’'±¥FOìBvimì݉kóˆü÷kóˆV ëD±àùÌÆÖ„œf@=äõ·7{-!_~|!î-s‹Áµ_˜éº9ÆblÍŸ…ö­Jv+ [ãÚÝæÂ–]í,ÇX ëoEQb@%g‹£ghè bœ=±PÔ._ZÉñDl•Vr<[¥•OÄVi%DZUZÉñDl•Vr<[¥•OÄVi%DZÕÉÓ‹9Sç&Ü£Y2WE€Œ-Ùý¬»ÃdŸ1×½cÆ1VÎ>üÙÛ«7§[[îþhÏâÔîÌÉ»VTI”“-ng¼˜ #kN%˃ÈBž‘\èß±xxbìª]æéYµ’{d Ì©Ør¬]j¨×Vr€Ž6b«“ó—ßXŒn²¯—ݵ¨ö&µ±*ÊÏ–¦u ¶ô^+ëÁd^¥ÏßÂ2–˜›ô_€ÉWg"[ø.¨w C›¸#Å–æÆØd‹ë¸Ã+pêó•q¬ö*?Tí9•-×ù˜ &±5ýê8XWµ„B¦Â÷°å¨(Ñ&ãêD¹¡ƒ-¹kÈŸ‹-޶÷¯² BøÔ«7¤ôlÙ•¾¾% T`\¦?²…cð¹½#k1Ž[r¥ ]Fã8¤v‰é [ò\Ôg­0ƒ·â•Á–qÈöA‚½ÌªälY†@ýpÇ|mË´cÜÂLj¹xäžPå,ž¦ÅŠú%´ÙB—² Àá£ÃÂ{q’6—’³¥#¼*&[àª__ý™Ùâ0PÚ‹‡'Æ^zK樗Æ`K<ªÐìC¶¿ªÀ®QøÈ§\ºJïåÑyÊ9Ì7Àèêc'¶"+]ÉóÇ'ŸÒÆ-Žã·9˜(¦ìȽ[cT[xâv ܱålubdåÖÒBÉÙ’nTúØ-˜Kphø›Ég¿ÛÕÛ^ÄV@¶²±RÄVi%DZUZÉñDl•Vr<[¥•OÄVi%Çå–Vr*W;o~³½|ÅÁHÎò\q d«Âà¹êD|Bp[Ž>¹…ˆ­N[n€L¶FL&Í>Ì’-¶*à·¸}4U_‘0(Y¹Ø’õØ®í¯n2¶vz™G¾\E8+ÕÍ­FMÐæÞ’[ú“êc°ÚV°9:zÄ: °"ʾ[)[æïs ­©]~̵ôoâN$ÎiF¡†0<ù죾ä1lù׬”-GÃN$­Š­ì”[NKéìc•”OÉñ”[FÃNœ³UR>%ÇSFl©ÅÄÖ:”þ9Ñô[vë`ȳ\€¿ä”Œ-£q4áDd+öÖ¯ôíòÉÛ¸OøUÿ À®:9Õ¿è£2Ö ˆ­2ØR˜-Кm¶½¡5¨¯Åh ·~åÄV ¶Rkã^ì@~‹ßïGˆ-bk`Ñ ˆ-b+z©ð&ÔõäèæÝ´©¸·ù`0[+a«YÞ·Ÿlw*”ž­ú®wd N4"jy·D¡Ó®è–[³ú5[Ý]'¶"—j³…9pN [ry%—wS¹Cù£'pgQØêΕ؊\ª›­=4AäèÑj°Ræ„•ØŠ¬lÙB˜Y'ÚláÚÐÃ–âŽØŠ¡älUø–¾JÅ,5Q«M¶\•¨·Ð®ÃŠØÊ€-~ #ÿ^ õ[jÜ€GýkçS6lÕŸ÷9Ѩ+M¿¥ƒ «†4]X¶RµA ")†­]4Ô¨µ7b}0åñýò0Õ@§€Ô›w9èÞ½¥ÎtÿF´U•ÈV—uÂAúJ€Y !ïrÈûKMt¿c*eÞ©JrBÉ€&[ÁóïßSjêA)ÛåaV”J©«0[T'.Wiû|ü òUãZл<׎N —úRg ä›É0’ãŒÍ˜-}ž|°/Ç–¾¹•ÞoU²jD5 ‘&œŒ­¾*ÙXqš³}-xÄVH¶rQ/[}©ær[=¥fx%æ±Õ°e¶‚øÇ\ ç„-—嫘ÉñJÌ-b«e«Ç3VÌüú\³Á¤‘—-4άƒ,Ç+1·ˆ-ÁVe°Ã ¶œëGÔ‰•±µžÏñJÌ-b+$[ÆgeûfKµ¶è§P›öwçïxîaElÅeKîÎÓƒö ?â±µ@¶Ì¯Õ&ÞûUa#Ùj|lqn°ÕÎE¢Yýš™ˆ­ ¸7æs¢±Bñ…‰é4ôœˆvçd K½@­—h[=°’El¹Ú·¶¼Q§A¯Ï”vù~ >˜q”Ø*€-Ït°Tg–¤ÕfföJ¸êhó3ÙˆØJ”áÉÀµ8±ý·øö¿AEleÖ÷9ÑÅù­>¶†o*ã} +f·C¥öù-´FMqÜ2ŸœÃ’çØxµ3[›À¦Eg£–Ù›MÜí<Ú-‚g‰’¥´ã|ÚT˜ÆfÝ€_WÜ*À1° ±µq Dl…ÒrÆb-<\Óf7c6gÖ¾Ö‘Jü‹Ì+0ëõ«çÜÊ`ì« \˜Ôö6³#ØÍVª[«V$¶B)å˜}£ñF·Ö´+u¢Ûтϙg&ÙÚHˆ­XJû}fSñˆ¤âÞÖ~.wùí·6|m~kJÆ–ÑxÃ+”ìÕ}­‡î:Q>'n Q+yN\†Òû-Ý‹Æq Ûo¸£NÄÉ[?:[¡´ðïHj$!b+”ÎÖ.«±JKgkw[¡Dl[¡Dl%gËÕ8ÇñZÓTêf—áÿt[›Iß2[©#{ía[ ZŠ›j¼"¶Rj3é;Bf+ÕÁ–Ù­ ãî¦ÀlqׇpÓánÍ4[ŠØÚXc(ŒŠÆ¾%°û`ÛR½­È:#Döfu‡dõbp³ÇŸWèƒf¿Ø–‡ºµˆ-›-£¢ Ï–¶T:6ÙmÄ.¶ô¯#}ØJ-[í ¼/(cÌê˜XåxÆYDpLM· DÅõ!ƒ-µ‡¸"¶\li3ƒj}³v þ±¯†YâœÛ¥àòLÔ}nê•ÙUÄ–ßo9oöLUNß²&Þb}ŸÅ¿%Ö‰§N‚ïÄãàÌ÷Aä` ÔCÞ,;që*Ç7C¾˜ 3f<'òÊó!n좰¸…ز¸ò,›_N¶<•~·K•<‚ÇGÉR:¶jrxNjæäK·B½=u*0bþçD-h<åïV'†±ÅåÀ¦V‡¼þö-Wuä2[[T99:Ϲ•["ƒY¶¦|GÈl¥[‰Ø‚s¡+Åͤï™­Tb+[§:j\l¡z2Öˆ+b+([œ;8:ey°àubÈûK%¶Â³…žµ‘Œ…~N ºwo©ÄV8¶²±JıJıJıJÄÖæ)d\ ñ —pÐ=²Õ?}G¼²³ú¤Ç\ ›-ýÆ^áUˆ@ô]ºYÔ‰8SKåÖ -Ü¡iõrV:¹>Q˜[0©»Ò2œydiòÿúDlåÇ–•æŽ&:Äe#bkl TT`(±•—’³ë3oF«…šU ¦ËÓ'bkQl!¿å¶]ù(áwRª§,xEc(9[ðQϲU¼º_Ñsbf•bÒï;u^‰òØš®¬ò*“ïÒ¿{àw6J{ ±J9°%‰’ ŒA›‘®@\åè<çVlUr™åe‰­å*¶°IEC*Eb+”²`K7θžÁ#]¸"¶³e7ÎßZ‘²hß2¿/ƒžW!j—'¶B‰Ø"¶B‰Ø"¶B‰Ø"¶B‰ØÊ‚-ÿ3ËbGb[ `«wõ¸¤±• [úkSu>Í‚GbDg+G¥¹îvN3‡¨p”½ev…ùZ£ŸF¯bÇ­ü” [:pÁd?å·¼4éÎþÒÙJz²NeÖÙ×¥‘µŸ ªlGb[°åê£×¨à>}o-˜ßH b+;¶8únè¿•ûH b+¶pW=Go<ƒØÊ­©Ê !¯ˆ-b+”ˆ­å±µ%Ïi†o“ˆØ %b‹Ø ¥ôlÁ¯)#¶B)9[v?Y¢+¹Tb+$[f'F¢n b+”2ˆ[æèžDW r©ÄV ¶ä[bkeÊ‚-ò[«Tr¶è9qµÊ¨]>QWlIãÉáà ×¼ÈñÄV>lÔwžÍåÔט[‰”[ÖT­]âx bkAlÙÏ=Yç[ù±ee¿/t<±•[Ü·díç‚*ÓñÄVr¶`m6\'rWø’›]'æ¨4×½g,çøßoå=#.[)TŸT}~§ÅIž>îB²Çbô¶ou¯ËQ [¼,O¶¶QFyU ["r[QU[^ëak *„­¬ýÖZU [kó[KP1l­Ìo-A…°E~+ a‹üV•Âù­ø*†-ò[ÑU[ä·¨¶Èo%P)leî·Trê¶¶FaÀYcÊGnQŰ•·ßBl|ojƒ\V™l lS…°•»ß’ù3*¯T/wŽâÄi8:V mU…°•»ß2ØR hV¬¬@¸ŠKƒÛÇT)l-ÁoñæŸá·ÔJ„L¶*›-ïö1U [ ð[Š-]ËÙ#|†ØØ>¦ a+g¿U™õ—ZÊM„¬dfŽ@²#¶Â*{¿e±e>'ò)qk`û˜*…­œý¨ÆôCf=÷A˜Ôö|äöU [yû­Uª¶rö[«U!låì·V«RØÊÙo­UŰE~+º a‹üVÂù­*…-ò[ñU [ä·¢«¶Èo%P!l‘ßJ RØ"¿_Ű•·ßª&Å@y )2Æ©¶r÷[ˆ-3ÇÆâáDl¥Ó"üV50×’³ÌaéU [™û-ƒ-†Å1[zàŽ½,U O۵¿5j,dKU›ÄV-Ço‹‚ZeÖ§ÉU[9û-ÌðX Àá²ù‰U [û-‹-ó9‘_åò[T'¦Rþ~kÜXŒžçDã].*„­ÜýÖ*U[9û­Õª¶2ö[«U1leì·ÖªBØ"¿•@…°E~+Ja‹üV|Ãù­è*„-ò[ T[ä·¨¶ÈoÅW1l‘ߊ®BØÊÝo©T?c,œå}=Ñ™¥@4*„­ÜýbË̱ÑÐôâClE×"ü–‘/—«)Jî“ eue4(£¶òö[[ mËHŠ÷dºW&V!l-Âo9ÆbÈY“&˜”ªÙÊ,µ¶á·c1¸®ò78ÇÔb+—A¥°•±ß²òåÕR½Á‡›:âþ|*ÃV¾~ËbËñœ¨V’ßÊIùû­ž±jÖõ(«FÇsbôs2U[¹û­Uª¶2ö[«U1låë·V«BØÊÚo­U…°E~+Ja‹üV|Ãù­è*„-ò[ T[ä·¨¶ÈoÅW1l‘ߊ®BØ"¿•@…°•³ßRI1àaÈ÷`ȹqí÷Më,°±}Ö˜ªîq¸½¬[=¸ËRØÊØo„+›…†a¸¸1åfË»¹ï㕃-ŽRyŒÕ=*†­|ý–qQ •¼¬£ˆ•½RoL¶ÌD¼°)ú8ÏîÄ<¾áÀU[9û­‰l6@: N|† õÖ ;³P§VSØ‚«¶á·¸Ÿ-#Xùù@\@«äßÚÄ×ËVeËsì¦kgk~ ßwàåá¦`¥…IUa¶†·Àr[†—'¶”–æ·*@Þˆ[Ü8\ª3ÏÖínñ&ètáøøˆ­eù-l¶Œ:a2Ío¹mw€ÍÜ®÷»éÊÙÊÛo©G5UÕ˜l¡Ê×dF5 ?¬^ñ skXÃ!¶Pü´Ù<Çnºv¶2ö[Q5lƒÑ„-‹a+_¿UƒDŒgkp‹BØÊÙo­V…°•³ßZ­Ja‹üV|Ãù­è*„-ò[ T[ä·¨¶ÈoÅW1l‘ߊ®BØ"¿•@…°E~+Ja+c¿ó¤äWÔÏjtŸMxÃV¾~Ë‘vó!ðìÆ÷5‡W!låì·`ž”‘¢e²5~LE*„­œýÖx¶|©€vŽ_*…­%ø-îgkꘊ,T [‹ð[fZ¨aÅÆ©ÈB…°µ ¿å‹¡ùjAãSÉU[ ñ[°.ô°…ü–wLE*…­¬ýÖðX ÎULã&JÎ19¨¶òõ[[)#„¼*„­œýÖV"¶rPö~kµ*…­ŒýÖjU [+ó[KP!l­Îo-A…°E~+Ja‹üV|Ãù­è*„-ò[ T[ä·¨¶ÈoÅW1låë·TW³^`äÚr,¯¿—¨¶rö[[|x †½p0 ‚Øš_Ùû-0ˆBåŽlYi4pc#™íÚ… ~ŽÝtíleì·4[x V[É€Š1¹‘™@?°¶rö[¼ù‚~ ¤£úM+ÁœA‹Øš_ ð[Š-a¬1&!vZ½µ‘É–ù‘°çØMWÎVÞ~ T[Þ:‘{Æ`˜^³åùHÈsì¦kg+k¿5†-3Ù~˵-ù­ Z‚ß⊄ÊbKVf\Y*E‰òa\¯Ôû°–ù‘ÐçØMWÎVÎ~+´b¡d©¶rö[¡ElSö~kµ*†­|ýÖjU[%û­d*„­’ýV2•Âù­ø*†-ò[ÑU[ä·¨¶Èo%P)l‘ߊ¯bØ"¿]…°•³ßª`/3€‘ßøŠ)*„­¼ýÊ”É2òµb+­à·C&[íŒ7åD»˜Ç?FŰ•³ßò³Uå6¾bŠ a+g¿ågKû­lÆWLQ!l-Ào!ÿ^éU®ìQœÞs|Å•ÂÖÂü^é5[*b+…–â·µ[†ã+¦¨¶à·\#%ò_1E…°•·ßš®Q²T [Yû­é"¶²ÐüÖJU[yû­•ª¶Öæ·¡RØZ™ßZ„Ša‹üVtÂù­*„-ò[ T [ä·â«¶ÈoEW!l‘ßJ BØÊÙoá„-µT¯ÅKÑÝÓ¨¶²ö[\*'[ËáJ¨¶rö[(;^ÿ)ƒn•±åÕd [!låí·TÞ©ëçÛ³U!låì·L¶Ðð1wñGl¥ÔRü–þãb+g-Åo¡±=0ͽ%¶rÒ¢ý–{4±•‰–â·Ðs"ûž 5QÀàg«RØÊÚo­TŰ•³ßZ© a+o¿µRÂVÞ~k¥*…-ò[ñU [ä·¢«¶Èo%P!låç·JPw®kg+7¿U’VÏVf~«$­œ­ìüVIZ9[Ùù­’´v¶Èo¥ÓêÙ"¿•L+g‹üVB­œ-ò[ µv¶Èo¥ÓêÙ"¿•Lÿ§¦g endstream endobj 7 0 obj 11403 endobj 5 0 obj << /Type /XObject /Subtype /Image /Width 350 /Height 250 /BitsPerComponent 8 /Length 8 0 R /Filter /FlateDecode /ColorSpace [ /Indexed /DeviceRGB 255 < C19D59 81693D 94805A 193172 E7E7E8 F4FCFF 795B24 F201FB 6C511F 9B9A9A F9F9F8 C4A66B 193373 CF6B6C D1837F 243F7E A5A5A5 735722 25407F 0C2265 382D08 795D2B FEEFF7 1C3677 2B4684 1A3373 C3AA79 0B2164 684244 162E6F AD8C4C E90314 D1D1D1 AC03CF 193273 434343 FFECF4 F106B6 FB2306 BE0064 B8B8B8 C3A05E A1854E A58953 8C6021 937A48 BEBEBD BE9F5F C29E5A FDFCFC C1A061 324E8B 0B2265 E9FFF6 F1F1F1 898989 836731 C29F5C 77571D 979797 F7F6F2 FEFFF7 3C3B3D BC9A56 FDFEFD C5C5C4 0B0607 2F03EA D1CABB F9F8F6 79643C FFFEF6 750359 FFF7FF F4F2ED B3B3B3 B7B7B5 C3A05C 7B7B7B BD9D5C 343434 53383A C7C7FF 919191 071D60 122B6C 2D4987 1F3979 203A7A 122A6B D6D3DD 1E3878 132C6D 314D8A 081E61 213B7B 2D4886 233E7D 0A2163 304C89 2C4785 0E2668 172F70 142D6E 183071 264080 2E4A88 284382 0F2769 1B3576 223D7C 2F4B88 0D2567 11296A 213C7C 0C2365 2F4B89 274281 091F62 1C3576 0D2466 213C7B 10286A 152D6E 294382 294483 2A4483 092062 284281 152D6F 877E96 1D3777 183171 092062 274180 0F2668 102869 2A4583 1D3778 091F61 173071 0D2467 25407F 142D6D 2E4A87 2A4584 092063 2B4584 223D7D 102769 1A3475 264180 274181 0E2567 233F7E 223E7D 162F70 11296B 0F2768 1F3879 12296B 081F61 203979 2D4785 213B7A 142D6E 092163 2D4786 304C8A 9485A8 1C3676 081E60 2C4685 1E3778 152E6F 304D8A 11286A 0D2466 BABAB9 2D4886 FCFBF9 FEFEFE 3CB408 998663 4F3536 ABABAB DCDCDB C7BDAA CBCAC7 010042 1E00AE F6F6F6 E74B28 FDFEFF A49067 8D00F8 967F50 85714B 907B54 BE9C5A 6F03C3 F3F3F2 C7F6EC FFA64D B9011F 7E3500 870269 AAA5D0 F4F6FF BF9E5A C3C3BF A79265 918080 AD9CB8 9F959D 38004D 810079 C4B597 EED8B9 C2CCC4 BF53B8 987A3F A16221 C9BA9D 9F9785 906D28 92451E 776139 D5B500 92866E BF9E5C FFFDFF 7266DD F9FEFF DA0090 4E4F47 E1E1E1 363C3A FF0551 EBE6DA AFB7BF EAE8FF BC01EC 7C5F27 775D2D 8A6726 8D713B 855E14 F1EBE7 D0CBC3 5C5C5C 5C5C91 000000 9191C7 FFFFFF C7C7C7 > ] >> stream xœíœEÇ/ ¡ä@@¤s”EŽ&\B R$ˆ9i‘€"‚T I • BoŠ€‚Øc"Qìņú»‚…ÜÞÙúŸÙ™÷vïÍÌîÛ÷ÿåÞîÎì¾Ùïû¿ßÌÎä½÷Ê+$‹’=½e¿¼µѵ)F÷­:}ô4®.[vÉ%—\uÕÂ… W®üð;¹¶ ´ß~ûmºé¦ï 5gΜO_wÝLwÜq&ÓÕW¿ÿ½L·Ü²t饗^ú© ™î¹÷”@'„:5ЊïfúÐe—]¶xñâOlÃu÷L®åËÏbºòÊ+×eÚ1Ðl°å–[Þè\¦Ù³g?¼×W\qíµ×N tßÉ8kîܹ1ÇtóÍw½ƒëι6 uýõïaºí¶%Kn¿}Ö¬Y‹-:‡iÞ¼yóçÏ_°`Á5×ÜxãM7½šëcgpÝÿàÛ¹>sb n8›é|¦‹/¾ø]\}r×¾û†t¿ ðâäD×$Ýï½ùßCtíÐýãÑîòÜT¢k‡î‘ÿ›ºÿÔ.Àˆèä£ €è‚’.@ t¡]€3  ]€ÏNÛû¸réhè2¸ëîT«º"]‰.@J@¢ ¥     ¢û–Þ)«™v@ï´i•‹]N q0»ˆ.ÃÛŒ®»g€>vut'O=ÖL>6¢ËWŒ._-[Æ—W-äKF—¯¶ÚŠ/1]žftƒKèòÄÒ¥|yá…ÁžSøã„`3¤Ë·ºl½8È߆=fÎX¾€Óåpcº]€sƒ¿Ùó§pºL Ý uòÉ짟ηçλ|“Ñå«;ùbãMø2¡ °`Ö,€E|ûœy|9À5Ä.O"º,ubPÐ ìÁèòMN—ñ}ˆ/gÌïÕBºo·¯=}õdÅw=Ýå£ðÌYyn©ˆj«@ŸAn¯•ø“ÝêàŠÎ£JËá ¾\‡Š«œ{µÖÁ´ZŸèÚ•Ô#k¡Îž×ô ^ŽcFzîJŠFqlŠèÚѵ)NwdI»6EtmŠèÚѵ)¢kSDצˆ®M]›"º6EtmŠèÚѵ)¢kSDצˆ®Mqºkëªø"K«@éúPºò'Y­>f})çøbÒžÙºØE¥t][B¤ÆtéžÔÓÓóò¨¯ü,Éjº>§ U¦»YÏWwßc÷ç|©gìØ±{YmC7ŒÝµ¦ÛóßIcÇýý¹_ýà?=ñ¬6£Do5é®ééÓ¶“^øÚã{³Ä>/­æyíF—Go5éNéèê:tüž/Œzà5ÝmH·Ê¾;¥{ ¿««¯ëéÝŽjSºUöÝÕÝ]O¯¯¿¿ï)€ñ†tƒÿ.' Sa¶W1ºöÝÕÝ}ÌúûúÖa±{`»2A/YzÕ£[]ßå±ÛÅ÷?½v/ Õh…ò‰KOW¹#ºÌöbt6D7Ô8^‡,Çb^•[Ft¥CYìô÷wõõ½™ÇnOxLD6²Ù˜4§ëò=§W¹õÈK÷™×Nü~÷>]¼Ó0~ŸG¹3t‘éFtI\9é~nÕª‰/wïÆ[µ¾ñŒîo2t%g®†Ê­G^ºkÞU{NziÛ½…#^> ÓE­ÚñQ«VêU¥jºëÆø®Ó=éù?úÔÄqã>ÓU‹è¥ç¦ ð:Æ÷Øßo6éß“ÆCt–^€.ã»=ãûëQ£ž¢›«ôBtC­>2ÙÌG—ùq²…WVê~È­IÙñ^Ï3QÇ‘ÐEª2Ý Œ¡LV.º|e ’-ÒÕ _U0Ѻiü˜Qø’*醵H—é*ª™Áñ2> í‹Ð½<ÕHè+/^YWÈDE×ïw°=œ‚“èKÅ%äSº—NÕ¯š.Þ´-=Ýa™ntpZ³(b3O(Zýüt?ÂÞct/ûÇ×ÍðV‚îpsºÉ»>C7àvéôöNæêíeœŸ®‡k§tƒëËdɱ;¬xÝË ;}Bo¨ Ó‹ÑN£Ã¡ï†×'diœ‡o†·´×’ï2º©bºž¸H3t¥p£Æt‡QŸA¬YÚOz…j_ÈÔt½h©£[ªŒ×£P`Š]è>=°†Ô¼ˆ.ÿó¢_Ý ôtécÑÂ8Ú®-Ýb¥ëéJÒÅnlÈ$¼;C±Ò Ð}D» º»qéEb÷‘lìF­™2]õIœ«²sÂ’Ô¾›Ò[µ5Í ¥ ©â¾«}Õª¢¶¡«ò]-Ý&û]©}è*}·’W•ªdº¹?•2½|ÑÍU:VÃÿ¥7ž7ƒKt£ÒsÓ-¤ ÒEßwçØ)3=mçÑõõ†”ž·óè&_:ó4úp!oÄJŸÝ‘t¥ïT¿½½õoùN_'tKü*b Ýø[Ùõ_eß‚ÜÒ-ó÷ 8C²…±&©äÔäW¬Î®t}„4ÎL+Ô2Ý´t—tEss7·ïštTºKºÍ~§Ã¼„z Èþf…”2Tz t=¯ º%¨¤Øõ]µuµ§‹ßvJƒ°iÀõ§‹lNì3]t#•Ñç%ºv¯Ï}™¸twtËP»ÌMÝ‘”ŽEt —.¤ˆ®áÒ…Ñ5\º"º†KR5§«Å÷¤Üc¼šCЙ_oºÊ‘ ]FººCÐø®_kºÉEãÑ{qf&ŒG&¯Kæ©*¡¹ !¿Cèª'*=™®0̯ø×Çn¼Ç]ÙÙµ)D¬ˆtµÓ1]/¾Ø†SºÉ4€NU£% ógrÐKò-Žžû~êq¢k‰“†Õ]||6§­ZL ¦¯Äð0,EŸA·ÒûnQgHKò-û.24]þ ÅÏKie&7ŇœÓ¸t!e«Ï vdƒ…;Ý8CC5kFXº²×#“ÞƒèJ<ǶñëËÛ3´óÚ )«}ôîÂo,i· ¿Õë«ý8ƒ‡ü.1Xl ’§Ý"tËѵ)¢kSDצˆ®M]›"º6EtmŠèÚ”<ŠÓøh3ÃtnÇÈÊT!º†îÑø®À¤Þt¥Á8iÃfªé3¸—KßÍ5ké+œÁ@rÁúÓ5¢ffíõ®GÁÒÛ„î›n¢kSDצˆ®MÑÜ„M]›"º6Etm*ûY²4Ù-‘ ù5§ë«nH4Ù-(=YÒMç$ôÙÍWÒY°ÐÜ„ß!t}Ý(’ŸLX6FÏ·KBójB¾%ºƒƒƒ8Å3¤ Éic*HWçLǔÔçK‡¨ »Lº²š<3R´jéx§Èé*ìB8¤ÎÀØøƒ­xíH’ƒƒ k>k‰ÞÏ™l1vãIøŠ‡¨Â×m«Ñ$bœì6¬Ft‘3øYº9V:ßMKò­Óõ1dЮéJ}9;OŸA8‹¦t!åž.Þ²a µ¿WŒ¸©è naåúêO×÷$3^lÙJCºBO!mÒe»}†ÔA÷je”.¤ˆ®áÒ…Ñ5\º"º†KRD×péBŠè.]H]Ã¥ )¢k¸t!UkººYËF;G$šµsÍÎ]ºß-SÍ>7‘ÎPøÆæ.;zÖ2;3écºAª¥¹K§ój^òjKWž™_± FŸ¨ÂSÝ,x¯ÈÜ¥cº‚Îé ӎƒ°3C·àÜ¥SgcF¬¡x¥¤ÿ†X?„”vªLÃGOó4s—N[5D7®Sœ¡øl aåúþ]_O7Ç*ë»iéB]ìÓM_kélîèŠo $ŒñA¦æ.Ër_¢kËj¯†éfL+åléú:®Æ´œún rðûj¸¿‹LKÀê¢ÏP‚è3?VKRD×péBŠè.]H]Ã¥ )¢k¸t!Et —.¤ˆ®áÒ…”AºUQ=éš8‰eÇwíÝu'9 kûòIú†X'e:ß-UYºÒȆrÞ±5uä¬%¦‹‡ŒÒ9W+UºØUÏP˜ÑE£ Æ›ºŽwý̤¡VÍþøn©*ÅÒÒ…|ßí¨[©]aöÑ|éBªætË%]üD\1îºÂ»+¼@7íõØžÎ^_ýéúR×’èÚ '‰®ºä»õê3”+ût³rÛå þG »(ßë´vmºk­æ)VTsº!̺Óu¬”n½Dר]Ž“èU‡ù®c‘ïÚT }·J‚ºùnÕT/ß­šêå»US½|·j"ßµ)ò]›"ßµ)ò]›"ßµ)ò]›"ßµ)ò]›"ßµ)ò]›"ßµ)ò]›"ßµ)ò]›ª‚ïþÀQOv endstream endobj 8 0 obj 4214 endobj 9 0 obj << /Length 10 0 R /Filter /FlateDecode >> stream xœVÛŠ1 }äü\è¬dù K!™8ÐÇ…@? 7(lËîK¿òxd;™IÂBd]ŽÎ,¨¿ÛÍ›õT5ÿú˜ß¿«/ÔïòšÿÞn7ûÓv³§‡8xuú¦žŽ¨P«ÓõLã'uúµÝ$v{YF"˜A¯†ÂX {óË3Hņ9¨˜! N,t±ù!ŠÍ¡)6Ûüf/S½tŸÐryt`)@’âD­øçN5´¨ í3|$föù™c$ÊÐ`[ܱÃQl´+–®#']úÄ’Ô%臸ž–W½"·¦™Ìk#ßÒ,‘&é¤K’Ã÷àgHLUºI…‰DãuÎ}¼‹Dk¡Œ AFEKqÝ`ãf“à"#É’oŽ…:¼ÜÊ0ÍUxóCè«8ðŒ¨åç;§[Ó-,pyPtk¡?R+­é $™}wKínªó^@Ó$™Ð]æp?#gWïÂä3›kÓ`a,7%±•c²ó(±B]w0“ºs¥;`æ —¼¡ý}0¯„>s>™*q¡n7ûçVÂE˜ædX½o¤µlóÊtSœï³ É7˜ ®;·NÝi™'ì’Ï¢Š§Ãë0ùŽ|@Y¦øÖðX%ŠZd>ø”›ÆªažB¿Ð‚VN¼¯Cs½L£È”X8²ÄÿïD§­Å¼—Ë¥azli+ÉàP”¯IûìIסç_\|2-îäÐ>†¥¥„^%®r·®6NßQW¿ Øh^?¼ö‘ê“4ï«‘kŒP·5†®ª·4@ç(¿¨7>ÇXþ¨SÌdÑžÎÿÊf=-ƒŸš;;}}Ýn”zúüЍ”$dMf?kyWd"ªuÁ>ådžRj‘ñ⺤º&ý°÷¡endstream endobj 10 0 obj 682 endobj 12 0 obj << /Type /XObject /Subtype /Image /Width 466 /Height 299 /BitsPerComponent 8 /Length 13 0 R /Filter /FlateDecode /ColorSpace [ /Indexed /DeviceRGB 255 < 858585 000000 5C5C5C FFFFFF C7C7C7 800080 808000 808080 C0C0C0 0000FF 00FF00 00FFFF FF0000 FF00FF FFFF00 FFFFFF 000000 330000 660000 990000 CC0000 FF0000 003300 333300 663300 993300 CC3300 FF3300 006600 336600 666600 996600 CC6600 FF6600 009900 339900 669900 999900 CC9900 FF9900 00CC00 33CC00 66CC00 99CC00 CCCC00 FFCC00 00FF00 33FF00 66FF00 99FF00 CCFF00 FFFF00 000033 330033 660033 990033 CC0033 FF0033 003333 333333 663333 993333 CC3333 FF3333 006633 336633 666633 996633 CC6633 FF6633 009933 339933 669933 999933 CC9933 FF9933 00CC33 33CC33 66CC33 99CC33 CCCC33 FFCC33 00FF33 33FF33 66FF33 99FF33 CCFF33 FFFF33 000066 330066 660066 990066 CC0066 FF0066 003366 333366 663366 993366 CC3366 FF3366 006666 336666 666666 996666 CC6666 FF6666 009966 339966 669966 999966 CC9966 FF9966 00CC66 33CC66 66CC66 99CC66 CCCC66 FFCC66 00FF66 33FF66 66FF66 99FF66 CCFF66 FFFF66 000099 330099 660099 990099 CC0099 FF0099 003399 333399 663399 993399 CC3399 FF3399 006699 336699 666699 996699 CC6699 FF6699 009999 339999 669999 999999 CC9999 FF9999 00CC99 33CC99 66CC99 99CC99 CCCC99 FFCC99 00FF99 33FF99 66FF99 99FF99 CCFF99 FFFF99 0000CC 3300CC 6600CC 9900CC CC00CC FF00CC 0033CC 3333CC 6633CC 9933CC CC33CC FF33CC 0066CC 3366CC 6666CC 9966CC CC66CC FF66CC 0099CC 3399CC 6699CC 9999CC CC99CC FF99CC 00CCCC 33CCCC 66CCCC 99CCCC CCCCCC FFCCCC 00FFCC 33FFCC 66FFCC 99FFCC CCFFCC FFFFCC 0000FF 3300FF 6600FF 9900FF CC00FF FF00FF 0033FF 3333FF 6633FF 9933FF CC33FF FF33FF 0066FF 3366FF 6666FF 9966FF CC66FF FF66FF 0099FF 3399FF 6699FF 9999FF CC99FF FF99FF 00CCFF 33CCFF 66CCFF 99CCFF CCCCFF FFCCFF 00FFFF 33FFFF 66FFFF 99FFFF CCFFFF FFFFFF 00B8FF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 > ] >> stream xœíš£(‡]Þÿ™ï6‰Ð â8ªïn4ˆh(W[óçø"@!„£+vÞYüѽ€Š;†Ð­£WñM¬ÌíÕÞ2û”bô*„ÑÔœäLJj&j99¨ódYóµ8dÛ1•,6xü0Qy!Wºœ‰¢óT½¨¨óœ\äúuUõ|y¨Ú|ω™Øš‰Q bµÔü> d,³ÕŸd&8„4*“Þ3¢%¥½ª˜KNªÖÅÊzƒzM±Á¾ê—Pt{1ZF·ÆÑ£QœatjHKiåL4›é¶QqfT÷¬¦Qc˰ »Î·T±nl£©ušE4GUŒž@5ºVÕéªn1æTÙ¥9Ê~Û4*;ýj€èn®h[b¦1Žj‘yÕzeo½,“-6• 6ˆÑǰWꞎl·}ùïܸ€}B1 3ûÕ°Ê£áÁ`ÔõF½QodQÝ·—_FCïšÿ]Å?´"¬"v†€ü3º+¼•/¬-ÜZm £)bDŽHÛÂhPI“Ò?)Éè{Ax•"fõ²ÛëÁÊè;T$¦<"âK²Ñ ÿ«'é¯Ì®ÒÓ‚åÿ’Ñ4 ¦ZOeéBæÌ“eYÈå)27ÜÇ1*ÎÀ¨70ê Œz£ÞÀ¨70ê Œzã6£³îù*Æ}?â›À¨70ê Œz£Þ8aÔŒìÄèlŽ-¢0úN}Ï,·±e„’6ÃèHÎÍ¡2°A…çbt8ÇŠH•:ìOGˆat 'ŒŠúÒhNÁèhN5Cèu FGsܨ ëM­~£C9ÑFóÉm÷¬R0:šFûÁè@0ê ŒzcŒQ¢Æ1Ä(ψdˆÑÙ‡íW1Æèìãö›À¨70ê Œz£Þ¸Ê¨ù>¹å3FrÑ(ïŸå4Œær£2êˆ8£ \oTßÅèh®6ZÝíŽËuFÍ82Œç:£yŠÑ™Üm”qt4W-¢Ž0:œ«Œ®‚Ñ`ÔõÆ£D1ŒcˆQâŒ2ÄèìÃö«ctöqûM 2zSÁ°F½Qo`ÔõF½ñ2jõ•ìüé?©àƒÀ1>Fãv…3z¼8†6ª®Pÿ.Vп¶%ß6VdþÜI¢ ^Ñ…Âå(£BQõZ±ÏK‹âò³x1;¶~7V5ßc…Ò›(z]ùâ)ù¾¸¨Lè¬r’5©qtÉ[ —£ÏŒrKÒaÕ1VF‹F§zêè^W÷Î]gbpŒy#{ÍSšj›e?›Öy!{]™I —Ó4j£†ÑŽq´nÒôº·¡ŒFùºFû\Wü”‘¹4*Šå\÷vN^3jÿC–kF“8{°ÙÚ0: ®ëz£ÞÀ¨70ê "°=0Ä(Øcæ€Qoü€¤ÑÙ#\Á¬þà4ò¥Å‚*Q_¿­»•èÌ_A­â1³B*£úÌ Ìàs]°6š#qeÀç{¥ ‘iM¸f< eô}]Ð4Z4ZÝFcXžkŠåC2K |±ó‹ÐF?ŽŠ€êM£vèuõø Œ&˴ϨL4žgAé4L£¡˜È‡ÌZ}³1ŽÂ j£U•‚ôÓÚ§¼0ƒfTJû‰x4í8#Úï„È1o`ÔõF½Qo`ÔwýÔÖw0ÔèìÛ_ÁX£÷–%õF½Qo`ÔõÆ£{^{ÐhU¼½½¾hå*BmZ9Å([ùÅ{Œ›q§ß=|Ìhì¾~•Ñ;r)£+U¼c[[[-b&[9Î(=eT¦TAïlo£:c®$ù¹<|u|K ³„––›×!ŠU®j#¢äÞ«W‰í(œªð” ¢~ô‡Xdë¬Ü{ŒÊ½­cÇ”Q•ºT~þ¤ ‰ºÞËô\s²vòG¹Y½‚X§ØT ª¯Ôx.'âxY3*³uVî=Fe[ÌMDo4½8¹Ø»¥úëv‹r„Që»UF[ÍÒ­\+Fë½”Ó­½ÔUg¬^4†íÊ59uf”nÙ#tÍ«ç U%U$Ò-Þm´ÚKQÖ¸qÀhåšn£eż$ýUãªQó{[užkÒÎÕÚ§ŒÖå¨o+šéq£ý•kr•Qc·^,£å6¾~5©Í®ti\bs® —­fÞÞ碜æqQdÛ®Ü{ŒFÙ Ôg‘Ù¨LUßV׿:¹Kõ[VH×YÊ|F®j/«b›‡€Úg³¸º êþ3ILe™Ù¶+÷Z£{¨þ=*»wÂúîÊÕŸï¾êûJíÌ¶Éø«€Ë¹NþÜQL÷W} ÑêŸË¶×u½Qo`ÔõÆíF‰ïÀH£¼^c#Î>z¿ƒ¡Fg¾_ÁX£÷–%õF½Qo`ÔõÆÏ;Æ@¹Äý\‘Ôºùó¯ e>Å0Äæ=´Ð¸tÃ}­oà'ÕxŒÍ˜y›_$µ¥lm–„ÑC£!¢©h ÑE€†ˆÒ1I¾ŒJ1b3Òº¢{С=Fi´ ²ù,PÒU6•…-Ó¨’U—ûI€ýTãè¶Ñö$5»Üe–mtßöÓh£*Էߨ>(þ±j4˜Mµ<(`Í^7æ*í6j4°6ãj"ì§wé¡éÐÓ0j5N# ì§2šº]ÑH>‹¥ÙA+ÝKº<סÌV¯«7-(ØE×5#Y·}õœrqÍh4}W÷]f0:®ëz£ÞÀ¨70ê "°=0Ò(Ø#jƒQoÌþu[¸itöW0«?8M+2A¿Œq+÷{!Q|O mÔʰf ›Ï rêH¼"J° ä ¡˜4ˆa|® &GE´¬ÉëܯI”Ÿô1\>¾eô}]ÐŒoz­Œ–Ð|èámòuOïh£ÑvdµÑÖŒ*ïUI0ˆ]F—•L£¦JŒ§e´g]sˆÑY$£ÆKðcû\·È&‡Z`fTÊG*üFì8£‹^‚ rÌõF½Qo`ÔõÆ!£³Å‚‚óFgßk F½Qo`ÔõF½Qo`Ô•ÑÖÍP;¢£c‡Ñr£¤i´#Ê蕄чÑ6º ˆÑ'Ò2jDëZõ};ŒÊ6šÃÉ0ú0åÌè±leý]F»#ê1úD*£šíˆzŒ>Œ £Ûõ}[F7ÁèÃÀ¨70ê Œzã¼Q"vŸÅi£³I(8m F½1ûmYpÒèì®`Và‘ÿ e} endstream endobj 13 0 obj 2826 endobj 11 0 obj << /Type /XObject /Subtype /Image /Width 531 /Height 364 /BitsPerComponent 8 /Length 14 0 R /Filter /FlateDecode /ColorSpace [ /Indexed /DeviceRGB 255 < 46659E 42609B 2A4483 122B6C 2D4987 C3AB7B C3C3C1 F8160A 0A2164 BABAB9 44629C DED4C1 3E5B96 D1041C D75852 1F3979 F7F6E3 9B9466 A4874F A301E4 E6E3CB 071D60 A49D6D 213B7B 7F683D 6A6A6A 795A22 375491 927844 F201FB 292929 1D3778 142D6E 284382 D3015D 4A69A3 4B6AA4 F8F8F7 84A3BB FEFEFE B7B7B7 405E99 E7EBF4 94895F E904A9 4867A0 264080 E7E7E7 2C4785 C7F6EC C29E5A 223D7D AD001A 0F2769 172F70 092062 8A8A8A 324E8B 084070 EDFEFB 858585 304C89 AFC4D3 696650 1B3576 36528E 406E94 ECECED 50504E ADADAC FEFDEA 233F7E 0D2567 755721 684244 405D98 EEEFF1 F5F5F5 11296A A6A4A7 99B1C5 C5BE9D D1CABB 47669F C4BE8A C19D59 9B9B9B 34508D 937F58 193172 6C511F C5A669 193373 CE7D79 134978 C8C38D B4AD7B 25407F 0C2265 2A5D87 382D08 35518D 795E2B FEEFF7 1C3677 434343 33508C 2B4584 1A3373 D2CFB0 162E6F 7F9EB8 193273 CCC691 FFECF4 393937 DEE1E2 F4F6FB 6F94AF C3A05E 8C6021 B7B38B AFAA7A C19F5D 1A4F7C BFA061 836731 B9B482 B3B3B0 979797 F7F6F2 5780A1 FEFFF6 B69552 FBFBF9 7C7C7C 120D03 2F03EA 750359 FFF7FF BCCCDA 424139 ADA975 929292 527D9D D0CBC3 FFA64D BE9C5B 523739 919191 C7C7FF 777777 3F5C97 122A6B D6D3DD 3C5995 395692 314D8A 2D4886 3B5894 334F8C 4968A1 0E2668 183071 3A5793 213C7C 2E4A88 415F9A 375390 365390 3D5A96 0C2365 2F4B88 274281 0D2466 10286A 877E96 183171 45639D 102869 41609A 081E61 25407F 3B5793 43629C 1A3475 3A5693 274180 385591 395592 45649E 1E3878 203A7A 3C5994 43619B 9485A8 3C5894 2D4886 909090 3CB408 F7FBFE 453130 BEB985 EEF3F5 F3F3F1 7F7F7F C4B597 7266DD D4D1A6 363C3A 906D28 C3A975 C1BB91 810079 B1AE84 A16221 855E14 883E0E 870269 F9FEFF 38004D 9F959D F1EBE7 79775E AAA5D0 AFB7BF D5B500 BF53B8 E9EAEA A1A1A3 333332 FFDDB0 C7BDAA 3D3D3F 7798B4 ABA77E 6F03C3 C2CCC4 4B4B3E D0DCE4 858258 9F9785 92866E 908C6A 1E00AE 918080 7A7A7A ADA776 8A6726 F54C16 5C5C5C 5C5C91 9191C7 000000 FFFFFF C7C7C7 > ] >> stream xœí üGUǵ@!h±ikš†-Pþ¡ƒQ(å•&ÚДhJ)+‘ ¥¥Om¡ü+jýˆFòÔ¢Ð"/ë j‰ODåƒ jˆøÁ~àxp¢ßŽõéOÿ’Ò§>õžXÿø¯(ýÁïþ¢Ò¯¦úÞDoOtAªG&z¢~ô»cý^ªO|â±îLô™Dߕꙉè]‰–êá©R$¤üòp'ŒÄÜ#ñÕ7¾üA?#ÁHäHüétÿ~#ÁHäHœñ÷òñozEc$¤l„„”Õ !I$¤l„¬ƒ„”‘uÕ‘’DBÖGBÊFHHiò®^üŸa‘ÒƒDLij_–ÜV$¤´‘!!¥ABJ„„”.RHHI"!%FBʱ#ñ {V|ãèc÷=::+¡2w²+ˆ™(C²1^+á ñ8Ù ÅÄ0Hܰ~Â\¸a}†„ZÄ8¨Å¦Mæ5&!]¨Wˆ„z#‘|šs$Ô›»îR¯O{Z²çêç>ÉjŠ„ZËŒ„|i²]½ž}¶”·ß®~R"4RfHHùäôÿ Õ) ‰X9É»»ïŽä©§ªue$b+¡Vc$Ô"}y¾zÍ‘ˆ¡Rñð!µ~úéêõ¸ãb!+¡Þ$âw÷M zŸúyßjõŽäõ OP¯‡IÛ„”Ïz–z‰P‹§¨Dr™ µö©÷$b ÔB#¡ÖcÔâíoW¯\ ^cÔâýïW¯ õ>F"¹TŽ„zóÌgª×G?:Ùó.õó°d5E"½L‘¸~ý%RžûµoÌ­DÌD‚Å&ÅæM)H°H^¡•P<Ä?Rž¾ABJm%b&R,ÞC‘±þW0hÇ¡|GüóP€DÂDŽDÌCLEb%2&$ÔÏÝê9c"‰ãP<Ä?‰}H­„âA…—R[‰‰Ó§Ç<§®¢‡ò1‘™ãP¾Cñp¡xH­DÊÃ!uff&+SãÿÇVBÊÇ3ÿOÂK™Y‰˜ ……"BY‰”ŠG*,¶•òŒ™òÎ; Rj+3‘bñ®Š‰‡Å?Oÿ$¶‰á†oœ°åm%0‰}@F¢‰ŠÔJx‘f"q¶Ú~;F"éq $”|HÜ}ªDb&,$(JÈb‰äì$3‘!‘˜‰ ‰ÄL$F‡DrˆABʉdB"1ÀH”#C‘Z /™•Xxjì8¶\¼éK÷¨“Å¢TDVb“ÏqH¤ŽCÊb+aÂË:H¤J¬DKT@"‰%™ã¨„DJE¡•б„²‡H¤±DÂDJ…F"s R’VâŸã ‘HGê;ʬÄóžz¡”?ü¥ý§“ÿKü¹,Fâ¹ï(EBAQ‰ÔTtŸÌÌēӟVHÄq„BB1Q‰„‰ªH¼S"$^ð”ªH((Ô°„,DBA¡¢Ë H((ª"ñ¼/¿üÿzò¿¼AœüÅÇ/Çá„—>ÇA†—~Ç!ax) ‘€P‰jÇ!ÉðòT^¾W‡—2 /Õkî823!2ņ—Žã ¸#uÊidž"¡âË4¼ÔŽCÅ—žðÒq ‰Ìq8á¥Ïqá¥Z§‡tÂË{þá¯òñs{ò£úÊ…–£—–• ;¡Iï^KX£—²dôRY‰²q 4z)kŽ^Jϸ9z)K†ª”•(½”mF/-+AvB••@£—RþÔ?>ê!_|è 'Üû=5©êíùïζ×AÂQ 5)!ˆ U#P mœ¼~¯-‰s„n¶¬Ù)s‹È.JÓgÆ&GÉ`ô# ôi6»³–¤ZÄAÂsºDæ‚Ü…×&/ÏêDt,A">Ô4ùG¸°eí¦¥nK ²tF¢ù¬í¢B$¬ŸÆH9¹e$ú‘ßq UB‚h`÷eHD®¡€×޼—gu¢^b ák3`*A^Áê\5z8Ú'™ÉwÓã캺=­Ò*8Žß«{ 3zÙ¾5™‡ÞÄH°P'´EE QzQᘦ×fu%žöb!1,$F‚…¤Xb±ŒØJ° #ÁBb$XHŒ ‰‘`!1,$F‚…ÄH° #ÁBb$XHŒ ‰‘`!1,$…ıY•~È¡ïcº4ÃHD’‘h¢ ü…ɹ/z÷\ñC$BßiV1‡×l‹µ{õÊ? Ù˜Ý(RH¤T0uTŒÄîm—žôʓ־f÷¶Ë.»lmÈm¯ÔJ$00uTŒÄ¶¿‰Yx†|í†ïyúʵ—½6d‹¶Væ8.‰*DbaÛÆ¯ß¶{í×U@±w÷t…:–8ÆHÔDBýŠU« ÛöíÜyÛsÖ®^ýu)¿°f ‘àX¢¾bËbba;;wî½í¶“VKy¿iD‚c‰ú2HˆÉòËˉÅ5ûvÞ¶sïÆû.­ÄkR$„cLD¾]¯AK4Dâ€{c+±qãÆ½1÷{¶¸ÙEþ*ƇÇu…Ž•Ø¹wßη] GrHj*Ôkf4r$2k!¦ƒc‰†²‡Œ‘8 ”Öê ±‘PŽcßn]ÙBB› •È–ƒ;Ž% †—ËËv(¡¬Ä¾wîÝ«¬Ä¶éÍ™yHZ]ãb‰dÅlJK4”¿zøøǯyõNÕåxΫÏRP½ÇjîÜèWh?†Ç e UYîÿšõ+Vì^s’ /÷>'Fâ/$\Ç‘GcA‚c‰úò#±xÍŠ+ÖnÛ}Ò¾}¯Ž­Ä3v¯Ö{Px)Mx)s F‚ÇõåG"Ž.¡¸tÍšµ_éúK.¹5|³¶‘'–È¿B­úg‚ãæáKÔŠr{ Åúÿ\³í·]…nÒ¶òÄm˜/Ö³8àVìö[c(þcõêÃA›³ ÄàûÀ« ‘¾Î6eH¤Z<#P;v¨‚XÂú>pû œõ°–#‘/í3„Ù—›ó4CS ‰iTÁ¸lx¡¿šÛ,"ã,Ož!"‰)w.¥HTÁä@'ꥂq `Ì7ÿ[_Þ·ûˆà~ ‰év.3ŽD…X6¨å0¬†Î—Â݃‘€çL¡f‰²X"¢‘DÃ3²`›sÌx‘(Ž%ô+jÆ¼Ñ $ˆ3扃—œ¶gÝÑ-7mÝ>HÆúô. b |˜KâœéSöT˜”gÜ´å´s?»ôÙÇþñ±-‰Z±DYtQìN‹µkÖ{N>æÒ–›Þò–ÏÆzËÒi{®q˜° †nÝF*FÂÍǤ­Dò¹8 b$Z~´»Ö°÷3›H8ù˜ò¬'ýÛÕëŽÞ¼å++óŒíØ<ˆôg"Ë‹ ©aïgf‘°ó1åwÎ:ë¬U«VÝrݪ 1´¥vÄHÔV¹ã@ù˜ò–+n¹"ÖÅ—_!å‰6âÀdy\b$ê«,¼TõjO™¯¼÷âË•®ú³¿zúK^õtä8†f‰‘¨¯ºÐ‰„ˆ«.¿eÕ)ñ»—œÂHx5›H ´šÅ O\¹êÞ«.¿üâ+Vþ¥ÚpÊK ¯æ‰ÃÑúëÏú÷¯¬\µjåÊën‰7œø*v~ÍÇoýÚW¾uŽ×Ý{ïÅ×]·rkf$àPlØçäkpD#A(¢ä°#Ú"Ê2ôÌÎy@âú­§­»ù;ÇŽãªëž´îçÉS¾uâX‘U°ƶíè} ùÞÉÐßDÖHõ²ªŽßºu˺uGo¾ùèºuë®þZ¼åÇOñ"7JÒ.ÙR¿ †„ ‘0“Yら¢Ð/ÖfkFBoÛXn5ÕCâÂ[W\ÃÛ¶\í %HB/B"!h$@c›öµ‘ˆèý$„˜$<*C®„õA·[åCØ‹È>…‘°å?nTH,÷ŠDæQH$æÈq”7±ÚD;ŽCxÙ¡•§ØHèµùFâ‰Øñy‰XÖ, K,—!áÄ 4 õG¾6ÏH,n>çÊ+wmþÙoH ÔãXv‘°: DìÓX-Oö8\$Œæ‰3¯¼ò­ûw\{æ™;6Ÿ35£— Y®?Mä(¾¢©¦:@bÇæ×³_^¨~GpûÔ AŽ(ôƒÄà_ÑTS]8ŽWÈ]WÊÃG6^xÅô Bý=ó†Äâö…ož³/ÏÛ0EV¢w¦KÝ"±pÞ†Ïï³Z»f?#‘#Q±.Ç¡Ž‘ˆCˆíß|]¼8sÿ#ÆVC"1TÉMÔ ôë8 Þ¼k1îy¼Á¨(?M?„1Š ŸhŸ¤ËË€ÃIG¿”F$ç,ÜpFÂ#…ÀŽÃ\µ…ª"ñûâ— {âjY‰  `ôòç!â¥f‘üÀ•Iú’C!AÅ]:Že‰ˆhñjŽÃs&J%‡„”{öÜ ´gOl2j#͵FÂ÷?="|Èd€w­å·—ÔÇÁÄV#ƒö™vvà8–ŒŠ‘8xÑžTl€„åýH4}$Djœ•ô˜·5S êVâ ‘FBØ/pc,¹Œ¢$Z<†vÀ2X#QQ5„ó×ÜrDJ=(²xm\¡¶Ú8˜8‚­D]Õ°rÏÁƒ‰ç0ŽCè¿ühþ”t¾ÍAÂøAûG{ƨWèTF¢’üHØ t¤•HÀ?%-Ç1 1ÕäEÉg%Ð_—àïL­"†Ëò[M«:Ÿ#­„þ–±UghWS +ñ9×J€?ÌHŒ±ä&ªŽK€?1.DFTŒ0–`$*©],Q¨±U#QMíb Fbä%7QËX‚‘wÉMT‰‹ ¾ˆ>hz(›LéjÄLà’…™­²‰ˆ}ï`®÷îáfán´Ïò[($ì[s["c‰Âü¾‘0mGΓ‹ü ˜ZçK‚æá78ö ´«fR“‰•/Áü }ˆeµ›Š‘ ÞªÜq4DÂÐJ·92GØîe°…Ašºæ©S2‰væ™&89²¢š‚ŸÁ6÷•žíM&‚&ª!Ŧ„&Æ"ÑÑHô`%LÍÄ€þ*JÅ”žnc ªdO+¢ÒýHX·æÜ· ±ðÖeª©GçߢcˆX‚Ê5ïüÕVóîèq +¡Ö2N¸õpÂ[Ë$Ð>¸;» úÑf‰,°(v¤º¿µª%·“{ßÖò±<Ï:CH ,ý’ðÒ£ÙA"*G‚¾TØp’+ëqLr$¬H3]ç9ŽJ <.a‡IaÅHTÓ|Ž^ÎMÉMÄHÌtÉMÄHÌtÉMÄHÌtÉMÄHÌtÉMÄHÌtÉMÄHÌtÉMÄHÌtÉM4ŸHt’ QEÎLh>hG+à!à œßòݱ«¶æ‰`ã§çK ÞZX›Ít·÷¾;|®‘@9]äß"ÑYU¨,{*z œhgS‚°Ä‹ˆªt+“Íi앃D?Mà!ìghw·`}v˜Lʪ’’{€°f‰NÒq{#á"á°Ð]—I?NÇ-éqÕØFhŠ<ׯB~>‰jdôú‘pb$ªi@$Bg2Õ4¯ssRryÿD #1 %7[‰™.¹‰‰™.¹‰‰™.¹‰‰™.¹‰æ rzç»ÖÈ ðâ΄ú'¦¬Iï ‰·´æ rÊÓ·¡¾CΗ(˜¾†H_²ßùDÂäoX)=8i g‰S)µHÇSÝ}%ÞÒšw$ˆaå5Fî|p¶|¤ÕžFé¸6(Îü±ßÚ´U¨ÉqÚw÷ñD^U™¬·ìˆ%Ð.òJ-Òq-»`߬¾H? ˜/Qî»Û<NÇ-ü®ªÊHè£@ iÛïr$ˆ’¡9ð•«}ƒå_À Óî8r$ sìÒ%ÖLÇm€<ÞÝâG‚*Ù´jA¹ÖUûI¼¥ ÒGva-<é¸Þ¬ª"lSí»cwAI• ƒ 羺­8B¡‡¶ vºC¢F¢Ë£O½åàÝÒ[üw×(77¤faÚ¡ÃK¢‚;y´Î¾7Šò¿VÑ8÷’BÂ,óÏG—¶HÇmŒD÷Ÿ¿)Câ\£2´;ÂHÇ-úZõ°ÛM±àßfô €°ãÑ£K$5L9c*¹‰æsôrnJn"Fb¦Kn"Fb¦Kn"Fb¦Kn"Fb¦Kn"Fb¦Kn"Fb¦Kn"Fb¦Kn¢ùD—ÒÓÍ„ ¼"QrþšmpGoóXïkŸù—óŠDD£{6·pó%n¤×ßùFeñ›Ë¹@DVº>š¦&È)ùì2ÅÅ7«'°>HDNž‚É–ð¤ÊÀ ;ê*PiC‘HXàºèFPÁÖv|KÕÓ1£¡Óqñ!ÅOY» j"aWuþ.ŸÚG‡ÐR‰(ù—Û k,Ê: ÚŽ.‘m8t:n-$êWh^ÉyKÃÍ6„7±©ê8r$ Ùå $좻9§¶V`$`b(à‡Çl€ÛÌ) \§÷·)„w³m%ôÎÜP (qKé„6 D)°ÍqQèÛ*,À0[Ÿ\ ¹±tªÏ²™uÕ¾p_¦@gsÅ| A”ìCÂú¨ë€uÉ‘sj[…vÚ>€‡q(s¨#A³än._ «”– <àÁf*GÂ圄zuëçPH¸êÅB"Âà Æm¶B"°ÆÖ÷*VØD;ë3…l-ŒQpOÐWc$úÒ HØ à1%¾»î£vP_ÄHø‘°Ýt•VLçsÈw×~ÔvUÕ\Œ„‹Ä(ÄHT#1Ó%7#1Ó%7#1Ó%7#1Ó%7#1Ó%7#1Ó%7QŸHŒMŒD%õj%Æ¥ª)=fÞ="fBEþj("")¨ðVèSÚ+LVÕ(T5¥§áx9©ô2 ‹,¼ÑåŒ8Ð|Æî̳ù@º™lq†Ò‹§È­Ñx]À%£+ÃIoç*ä}š©²ÈöõÖç g:Íž#Ž ¦íìÉ8Ø@isyÐ åÿ­k¡[¡öÄaWõÖç óyË·"$\Zàñ"B‡à,„ν,j_ƒ¶ v™‘踞Àú%ÒǃÓìO¶)3]/ɽ,F¾ÇR[Ö #á4ª‰ ÀXv ¢ä†H c{Œ%uB»¶n äKé ¸ÓòUzàðÂ’oe5.lâü†œûtNéN:¡£Ü@‰f·FŠ‘(P7HDQA(›ÛÛìXÙ\¹M3+8戴DˆRQ:n”ƒÂWµ%2ÈD`§u ÁW‹»e$ú/•Œ%\A"‘› }v¶³?$æçW{”†G´° ÐêNœ Ðð!øi|·FŒD_¥¢R ‘yúÆéÞ<ÂÄV"ŠZ"Ö‰¾J%ƒÄB‚Ž%Èð3»Ž‰ÖV¬÷:Z‡JÖ o,aÞ™F7ñØéEœ>H˜PÉ£ùA‚T §¯¦€H¤+V<¤·›=W#Q®PHd6Ь[Îõ•½=î(‘•uB”'BÎaßËH”*X'FU¸ >÷ŽcT 8.ûß° ­H¯ËH”*ð_í1]%9¸£2mûÖÞÇe$J,CÛ•yÐà™ôc$†hw*¬ƒrÆX~1 Ô^d.=Æšð‹‘(÷PEý ´ã˜D«‰§cMøÅH”"Q4€†·HDl%¦ <¬ cßî°‡V,,Ê‘°'é0L|ÑÑWôˆ‘0Hdí §«#ˆ„ÝQÆ#°‰J‘@€ž†-›&ìuð†‘€ÖÀAHû+8áfhGžQ§Wnủnº€›ºâ„‘è‰È“ŽkíeZõÂÚ^t'-ꈑŠ„ùh#a{!ÛC™Ò3¦ŒY‰|wÒ¢Ž ·#ßg·b¢*=!ÐÕ@™hrö9‘>‹‘h¨¢/ðô8ÐÔ"¨1ªuB½HGD¹“qN3–Â,:#A«a CÚä襡JH7eE˜®qÊšVÇa÷Æ]á½Ý= zÜž‘ˆ`˜R‹Òq¡‹¬ùa&«ÇÑì†]…÷ª5“‰JLÓ'ù6÷°±Ì„öÅ|àÏÐCãi¢yè® ‰?)ø1Ò ‰I9L0å …Dæ÷"мÀÜÙñšÞ`ë˜BˆH¡ºÔÎê4„B!EDó/9ñÅ`ŽƒüõÞÎJá_a‘°ú&¶h Ôã ½·³R ‰Ñˆ£\ŒDˆRGX~1!JaMøÅH„(u„5á#¢Ô¼”|LËÓ_»+ëã žSKÏ ï¬3}•Zùûx w †™“íuF¢T£AÂßr~a:¢Ê´È­5šn.aµúM’ïnÁú<"D…`Ì´WGG¿qgÛÒ“­íà”êuî|‘èìa+×DÁ„Idc²sìÁsçZú­¾AQõ:w>‡H*Õƒ„n¼äl|ä#ìöÅŽ!A˜ zžcÎG R½V"Ý’›ËqÀ½Î,¼°¯eìúšzw Ö‰¾J…5çR½HP¾…ˆ%|H4%Àz¿_rHv¯`M„ИˆòJ¨"2s¡ÉxèU¢ü8×q8øÔ«ÞpßUEÞ×"1z ñõe€ÿ07|\F¢LÁ‘Ð è ]^ÃÇe$Ê4&ÐnÕ}nø¸ŒD™t-»Ï —‘(Sx$pW»i÷¹áã2e Ûã XàXbl ?.z­ºÏ —‘(^†(u„5á#¢ÔÖ„_ŒDˆRGX~1!JaMøÅH„(µ·tÜ>brF"D©½¥ãöÑIc$B”ÚS:n~¼sF«»ë]#1F k0!á׃c~ÖåðH`«»ë[‰ñip$< Ý,w ‘hug½h\H´Mǵ‘È®ÖÚs0!Jí)[‰¨µ…Hî¬3}•ÚS:.;Ž4&$@}ÈEÅt\Ë@LEƒ‘Ð¥Ž°&üb$B”:šð‹‘Qêk¯°‰vðí b$ÊÅH„(•‘ð#¡g0‰r ‘´oá~\F¢LÓqa¸ùAbºî<„•ÀyÙ¡g$¦W¡~µ‡‘˜q,ÁBâ )äèå@CŒD=1,$žã`!1,$F‚…ÄH° ÿj ©c$F¤cé_zT/ŒDÍ<Ñ1F¢žf‰Œ F¢†f‰(‘¨£YG‚c‰Úú-¦ºú endstream endobj 14 0 obj 8861 endobj 15 0 obj << /Length 16 0 R /Filter /FlateDecode >> stream xœTMkA ½/ìйÐ4šOÇ^CC@› iH.ýûÕtGš±†RŒ÷ žžžÞ ¯yz„¸DròM¥~_áóø¹eëïõû<ÝŸæ©Ô“>¥…áônŽäàô niux§óD´x©ô-•-´JåÃ5¡_Ü›hè‘1ÊßáºA¸°¤†Š fÌ­]^¢&ö[È Çadl¤¥m ®z0]öBà“ºÜq×wÛTŠ,]¯T¢ÿTé 4dŠ•ºä=gȦ¬óx X‹|+)K6$¹` !špi Å.¾1 Ç×Í ³‚-É=©:¿'œË|mRÉE¸aE+1µQ(ˆL-á%%›#_¢ãvP{×% ôóò­™bsŒëhAFò6'¤ÐžHW(“Æž>l‘C¼±g­&V9Ý…4ጛ m¸^-Íf䥗ÒÁøÛKÛi_©ú¿³ Ü¡”¹-”¬£Ókå-ˆGÅOvL ‡)í‚âÒ΃}îΗÉÃ*Õ‹Ã~Ňbø`vU«»¹®0M†EU›c÷6Žõn]ØX_(2¿óëÿ/ ~’%$àT©9*㓼kC'¯_éǥ뗧y¸ùôD Ï €d£ŒIþ••ZFHÜl©^гþ1Däendstream endobj 16 0 obj 516 endobj 18 0 obj << /Type /XObject /Subtype /Image /Width 413 /Height 187 /BitsPerComponent 8 /Length 19 0 R /Filter /FlateDecode /ColorSpace [ /Indexed /DeviceRGB 255 < 919191 000000 5C5C5C FFFFFF C7C7C7 800080 808000 808080 C0C0C0 0000FF 00FF00 00FFFF FF0000 FF00FF FFFF00 FFFFFF 000000 330000 660000 990000 CC0000 FF0000 003300 333300 663300 993300 CC3300 FF3300 006600 336600 666600 996600 CC6600 FF6600 009900 339900 669900 999900 CC9900 FF9900 00CC00 33CC00 66CC00 99CC00 CCCC00 FFCC00 00FF00 33FF00 66FF00 99FF00 CCFF00 FFFF00 000033 330033 660033 990033 CC0033 FF0033 003333 333333 663333 993333 CC3333 FF3333 006633 336633 666633 996633 CC6633 FF6633 009933 339933 669933 999933 CC9933 FF9933 00CC33 33CC33 66CC33 99CC33 CCCC33 FFCC33 00FF33 33FF33 66FF33 99FF33 CCFF33 FFFF33 000066 330066 660066 990066 CC0066 FF0066 003366 333366 663366 993366 CC3366 FF3366 006666 336666 666666 996666 CC6666 FF6666 009966 339966 669966 999966 CC9966 FF9966 00CC66 33CC66 66CC66 99CC66 CCCC66 FFCC66 00FF66 33FF66 66FF66 99FF66 CCFF66 FFFF66 000099 330099 660099 990099 CC0099 FF0099 003399 333399 663399 993399 CC3399 FF3399 006699 336699 666699 996699 CC6699 FF6699 009999 339999 669999 999999 CC9999 FF9999 00CC99 33CC99 66CC99 99CC99 CCCC99 FFCC99 00FF99 33FF99 66FF99 99FF99 CCFF99 FFFF99 0000CC 3300CC 6600CC 9900CC CC00CC FF00CC 0033CC 3333CC 6633CC 9933CC CC33CC FF33CC 0066CC 3366CC 6666CC 9966CC CC66CC FF66CC 0099CC 3399CC 6699CC 9999CC CC99CC FF99CC 00CCCC 33CCCC 66CCCC 99CCCC CCCCCC FFCCCC 00FFCC 33FFCC 66FFCC 99FFCC CCFFCC FFFFCC 0000FF 3300FF 6600FF 9900FF CC00FF FF00FF 0033FF 3333FF 6633FF 9933FF CC33FF FF33FF 0066FF 3366FF 6666FF 9966FF CC66FF FF66FF 0099FF 3399FF 6699FF 9999FF CC99FF FF99FF 00CCFF 33CCFF 66CCFF 99CCFF CCCCFF FFCCFF 00FFFF 33FFFF 66FFFF 99FFFF CCFFFF FFFFFF 00B8FF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 > ] >> stream xœí‹¶«* EO*ÿÿÍ÷îVBÀ‚Úvµ®9Æ©õ•*S[‘s»\…r€¡`(ʆr€¡`(ʆr€¡`(ʆr€¡`‚9­ÚYVv¸4§Ê©w–9;Ç.ŸÃËù?qޤOKÎ:‹J9Ž®Ñïù[^ Õ&kÞÈYĨ(›¦²â¾[‰a–Í”€ '§¤”~ ŠœºfƒrN1-Ë(Çâä¬É”ÖÔl}”mì ]ä‚$_ç4÷l'™®œ<_Ó ¢»äÒ)æ ?ÓØ³õ(AŽ»Ê‡å¸EAN2U åÌaå˜2h ýì ‰ÅZ IoÏNpò‡—£“vµðX+õ&ÉÉ‘’Ê&d{Ïü]çýtä¸Îå¦Ò3+̳ )fOSðUå(õŒŸ¢ÉTòŠÏ 拦vÉɤ°ßG¸¡aqþ9~-Ÿ•Áþ‚ˆéÊ eVKNgÅS(gÞ#ƒFµÐßdÊ„Ïs€¡`(ʆr€¡`öÈùôk¬×aœ…¼Ê†r€¡`(˜øuÏé’ߺÞ×dHŠŠ*zrL/ðÌ:¥¾»uJn¥Îùå¡7 ±89ÿþ8"Çôªò#§ØÄw9ÿˆÁË1)ß’cK¤^±÷ªäøt–k5 9Zۗθ¡Ø -­°™×Ñž«‹5™”S¹¨Ó· Š ÊÑrmÝ E9®)¥ nî[k•œÄR­AKr€¡`(ʆr€¡`(˜óå|ºñ‹yÏé¾LΧ{¿”´¼ãt×_¡œ9nµœ3­”ræ `.(ç{^=¤`(Êæ£rŽwÃÜ’‡„ʃwü’œ3úªtåèoìÜ'ÊY~RΑÔsAÛr܃ýÒ×)ôßh?ø¿é 8qÔ”ÇP*~¨¹Àò‹rlOWíV)ÒOº9êb{Œ¼†œÞ€RAŠ~6çHîàª=óÇfåTÝ0}Fiô€ªå,ÎÊÒ£‹PNÉ-&¥¤LÊòi9)™xµ7×ÊœYŽHg‰¯™bí夒sLº%_Ul–kƒÅZŠù$äœVà8hZkT¼‹k¦_Î49m1SçlÈ)Öâ¨xªs*9Ub6MMµÖt®5F^[Žo­•áòJkMçMŽ©srÙZÈL&ågæ„)>×¹}#Õx®#G¡œfP 9ßåC9À|»œßî¹VÉyÉé¾JίúžÓ}•r”L=HCzC9ÀP0” åC9ÀP0¯¸1DNã5÷†n/ºçt©¸õmÖ“rdõf+ãÎïL9¸q)8îs9’?µ éÈë õAIÞïÙë+›+û'{ð¥‹'q%.ü¹fÜ2¬ãcbâ‹ÌÈ™9®¾ÑÍŽÂïdCNã}›ñŸjÅ]e”‰9vùMrD³]‘“³aé Y."mõãÚÃ4ç›ÃÙ«Ó„}~¼îÐˇ‰Ï`"Ç·å1¿ë1ÿ+“xø›q]|ubÂ%‰sCÇëKjÅ ¿3·–#n†}[S®Sç˜ —Rï*è%¢îQï½)ûYܦ};jW޽T$¿’ÏCÃNæœR0=¡_¬iе/wjœ¶^ÃÅZî=nö–¼Ü\ãÝrmDŽUÁx\‘ä÷+™ïˆœí#Ù8(“qL¸­œã~¾×nfsNêD=^ä°CùqóxË~&ü¤{’'ˉ9GžŸvçd«ì-UÔídÜlJǃ2ºGNuväh+EwÛ~g®yP¶AR·zòáìn­…ì]ªFm¦Ù°ÇëBK8¨²`_Î g·†Ê«DÃ"Ý!Ø“#ÏŠþ¥wvÆ…’3ŸÓÏâ œ—RɸÇãžöèÂóqÇ¥ด÷9ë_‚^æ—e÷ûšçŸì㘮÷‘stÈó-Þ€"g=–+Å5rŒʈK9Àq7äøA¹fA<Ùo‹»%çÑ, œÅeÎŽÛo­Ùzgˆ'ûmq­7‚`‘“ÿê™ñï†o‹Ë;Àq)8.åǽÝ>ý²=éRÿqʆr€¡`(ʆr€¡`(ʆr€¡`(ʆr€¡`(ʆr€¡`(ʆr€¡`(ʆr€¡`(ʆr€¡`(ʆr€ùl;%6 endstream endobj 19 0 obj 2008 endobj 17 0 obj << /Type /XObject /Subtype /Image /Width 496 /Height 292 /BitsPerComponent 8 /Length 20 0 R /Filter /FlateDecode /ColorSpace [ /Indexed /DeviceRGB 255 < 858585 5C5C5C 000000 FFFFFF C7C7C7 800080 808000 808080 C0C0C0 0000FF 00FF00 00FFFF FF0000 FF00FF FFFF00 FFFFFF 000000 330000 660000 990000 CC0000 FF0000 003300 333300 663300 993300 CC3300 FF3300 006600 336600 666600 996600 CC6600 FF6600 009900 339900 669900 999900 CC9900 FF9900 00CC00 33CC00 66CC00 99CC00 CCCC00 FFCC00 00FF00 33FF00 66FF00 99FF00 CCFF00 FFFF00 000033 330033 660033 990033 CC0033 FF0033 003333 333333 663333 993333 CC3333 FF3333 006633 336633 666633 996633 CC6633 FF6633 009933 339933 669933 999933 CC9933 FF9933 00CC33 33CC33 66CC33 99CC33 CCCC33 FFCC33 00FF33 33FF33 66FF33 99FF33 CCFF33 FFFF33 000066 330066 660066 990066 CC0066 FF0066 003366 333366 663366 993366 CC3366 FF3366 006666 336666 666666 996666 CC6666 FF6666 009966 339966 669966 999966 CC9966 FF9966 00CC66 33CC66 66CC66 99CC66 CCCC66 FFCC66 00FF66 33FF66 66FF66 99FF66 CCFF66 FFFF66 000099 330099 660099 990099 CC0099 FF0099 003399 333399 663399 993399 CC3399 FF3399 006699 336699 666699 996699 CC6699 FF6699 009999 339999 669999 999999 CC9999 FF9999 00CC99 33CC99 66CC99 99CC99 CCCC99 FFCC99 00FF99 33FF99 66FF99 99FF99 CCFF99 FFFF99 0000CC 3300CC 6600CC 9900CC CC00CC FF00CC 0033CC 3333CC 6633CC 9933CC CC33CC FF33CC 0066CC 3366CC 6666CC 9966CC CC66CC FF66CC 0099CC 3399CC 6699CC 9999CC CC99CC FF99CC 00CCCC 33CCCC 66CCCC 99CCCC CCCCCC FFCCCC 00FFCC 33FFCC 66FFCC 99FFCC CCFFCC FFFFCC 0000FF 3300FF 6600FF 9900FF CC00FF FF00FF 0033FF 3333FF 6633FF 9933FF CC33FF FF33FF 0066FF 3366FF 6666FF 9966FF CC66FF FF66FF 0099FF 3399FF 6699FF 9999FF CC99FF FF99FF 00CCFF 33CCFF 66CCFF 99CCFF CCCCFF FFCCFF 00FFFF 33FFFF 66FFFF 99FFFF CCFFFF FFFFFF 00B8FF 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 > ] >> stream xœí‹–«(E» ÿÿÍ3N=PâÍ­³×LkQÙ€^Sšœ !„B!„B!„B!$)¥½+vÞYüÞ½ r¥ï”º…Ó÷þ¯çU½½Ú¤ºO8}|—®ˆ3%!‰™, Õä$ ¬“eÍ÷âTÛB.%Ã÷7B²A­ÚT•àL†aYŒÏ`¤&«Ð8d¦@»ÁQ×ÓÌäÖLÎè;Áj¥ëÎ °ûêlöf"€¾1iš^XRäª0WŒ™žŸae¹A¹&lð‚C%Ù ¨9{¾·Îß+¾3\µÑ÷íˆSiIÓ3ÙíâÛ¾ázÍŽÙ®ogËäD|#Û'rX7·Ïߥg»E4Ïæô}àÛ´Åp.Ü\Sq°V9ôÁõ§sn!§"PÕ/a¦qþ–šë*¢çãy`Y†½½”¤ï/áS]ûÝ`ŸïËåÞËùL7}B!„BÈ¿ä‹ÙáûE¾úŽ}Ç‚¾cAß±(»ƒ Þ¾SoùÍŒߥìZ‘|wýùNÝ:ZùÒÚ­ed7Öw‰5‚#l à;‰¿Î¤j+ésJñ=-HïR`V.»¼€¾§ £\B‹ ì"“ªï$ÿ³“ò³‹ô²`ù¿NÄ2rxþNÐ!•Nßâü½;|þ'lq*çx~ÂwûGßæú¼ë¹>_eu}^Îß)½”o{}NNcûßÛš£÷×¶ôQõ½uSíç@ùd‹ñý›ÜÉߌpùb>÷ïn¢ä;|B!„B!„Bšè·ì˜w ¯YM3¾‡K¾Õ<žèøL«å{ÛÅg ]JlK#~Q¼RVÐÅÈ)ˆj'·ñó¦ˆBK:Eöo7έ“q% ÷CF‚¾§/Ìß2&½í[¼AÓ¬«}Oùnþ~0·ì˜5pÑtPí[ú軬¡NÏoÆø.ÍHlû÷ò1ißr%\7Sø­€o+¹8ë=/:…o'ÀÜEñ]NÄÅI‚µ)ÌY'˲TË–17¹‹7…‚¾cAß± ïXÐw,è;ô úŽÅe¾ï~FŽT†ø¾ûK!R ïXÐw,è;ô‹ý¾ÝXä¶ïòF˜¬¤ã‹}ÌýÈnvûV‘-[¾Óò‚=óU7ß»†oy#9æ{šY‚0ò B§7p¢×׫zM/™ÖðÍ—bŸÃß5ƒ^D¸yñýjø.éõŠ/“‘ãùyìö 1N6UÆ% ßêýç¯2X×h¾èû2öû†çI´ïš¢|«ß7(3+çïô¢ï9âÛ}œD¦hß/¬>¶|—뎨ŽžÝ¾1L½HöFxïü ÏÙ¿Odÿ®ä5@Ù¤(ßË®§>›t:¼;%)Ÿ¾Ïa¿ï~xí9Ðw,è;C|3Âå1ŒðÍg¼ŸÃßw·iRâûîFM ô úŽ}Ç‚¾cq’o÷ÍšËç)žÉù¹ÉÄ ¥Ñœæ;ã7 5mö-¿³aldgûÆh6¿Fßàtßò»oú~'û6±9ãùÛ~»Mßc9Í·½X|³?„Ó|×)}?˜‹}óüý0Nö­¢Ùjüÿýý Nò½ ï¯=úŽ}ÇbˆoF¸<†¾¿öFø¾»M“Êßw7jRãû¢‚Éè;ô úŽ}Ç‚¾cñöíšj>ü¡¸ßRðÎÈ̾ó¶Ž}¾÷@®@ú–?ù+2Éß•Ä7+ªÌó÷ß¹(ư'Y(Œð Í+ç—¬Íÿ‹_t÷~Õ}»oå£ð[Pã9¾Fßœ™…'™'U¢8/yM¡d0òz­öBùAÎÆ·ê°âð‡Ïå¸ßu}H®à/«p<ιŒÔe¡t­Gð²ÎÏ1“,” ¦éÛ?;¾;Îßv8àx~ÂwÆ—Þú×çðö ³ö ÅòúüfÞ_kÿÃ÷×ÉÑû©ÍžJß„÷ÏcAß± ïXÐw,ø¼AFøæóÏaˆoòDè;?äß|ß}j!¸m4!„B!„¢ÀWߪ&c ¿ˆ>ßÊÆxâõ´ˆ ®‚eÜ2Fšºò<æ¬Öw,Çåi¥$5kMxoþ) ïé«ë[uxÙ¿sZžÌúa³¥wß|ט,ß³AõøÀ¦oÿAóyÅw^¦}¾1Ñy.ŒÂŠë;© >èÙõó7yÖ·éܨO¾©aã2ÊÇþŸ}Ç‚¾cAß± ïXÐw,öøþäõå;}›âýíõíD+— ÒjåÜsïå‡÷Ì7c€.~7ü>ß¹;â,ßWä¾W|°­­­ª8ÞVŽë„ò!M&PuÊ6ù–kâgÝôed” ­Z‚¡õæeجÉe6%§òÖnÑLb;~Ë^D¼˜üU¶ÎÊÝËßx,6bQø©‹šúI‰ÒŠN¯õŠuW?âfå °ŽÚT‚æz³À ´&YuõCVÙ:+w/ÇÆó{èTåµ÷jßç‚Ði-Laöì¶|·ª)»¥{¹V|۽Č¥ýdo/eÕ9««®²]¹;8t½V{Ž5ݾëê5ƒ©BS}îlñjßf/¡>¼3Òßý•»ƒÝý;ëJ̶áçUßn­xF愦·Ö>]àÛ–#Žºø~ßý•»ƒ³|;;ýþãùÖÕáTŽ™XoŽIYZ#W£Øš+á²ÕÌÛû¬Êi¶•m»rïðq|±W¾Õ7¦ŠºvÄi©}]}.³è|N.³—¦Øfûìg«ÀŽÌEq)ËͶ]¹{~ ´)¡k÷{òPeœR€-±¯ÔÎl?u¹«Ÿ;Šé®ˆú6G|,Û1xÿ<ô úŽ}ÇârߌH¾Ÿ¾ùÒž0Ð÷ÝM›üòyƒh õ}mùä3è;ô úŽ}Ç‚¾cñ3ÅŸ`‰“ ¾Í‡¤Ö×w-ó%¾%7¿M/|;Ÿâ#çf´ †€@R ,eÛw³$ú¾ðjp¤ˆ³¾ ¡=߃V¥i`<“ÕSÖ…¡EÑ÷hß:xk^ š„È&3¸t}û€¶Ü9œ9oûnOJ—­ƒ±îߟMÈÙ4ú·lï÷-›Ì«¾“ÛÍu“!'ÒÏs­ðnßNçÜèß9¯&’³é=CzjvÔ5|{ÛÉBÎÆø.:t°y1já_4†%¯ÏsÒÙìºrÓØÜȉtÝ_Úï³Prñþڳ軟ú¹ïe†¾ŸïŸÇ‚¾cAß± ïXðyƒ ôÍç ÀHßäQÐw,îþéy2ð}÷©… à¶Ñ„B!„Bˆ¢µ"_i»•{ZÈÈÒçÓöíeXóI×ß@ =–Ñ¡*rÕ¦§¤&ËÈC˜o°ƒ*úÛ‹LÏ6÷{’ñ“|°Œ·éo}O7XÝg=²<ߺ»MÙn¾á;û½þÒšoÑ*LIä|ä{YÉõ튦ï‡ÑòÝsþ^3LßϤøv~:%·¯ÏUî2i<Fž‚Ï4+'ÿ~üÚŸN!7ÀxÅXÐw,è;ô úŽ}Çb—ﻟw$ŸqØ÷Ý_ø ïXÐw,è;ô úŽ}Ç‚¾c¡}·¾ìöŸ.™|ÿ-z–œ $/q=CsÉ[ Öünk3Þ–lB{ÿ6á.êØp÷M‰ïd;I¸’¦oSQË0·åLÔ•’“[lé#ߥ8³ºFk6ômNP¾Õ±ùígÓ·ÍtÀ7^¯I߯e5û·ê[Ñkî [¾qɲ’Ÿ[léߪU¡y®rÖ5n»¸ë»Ú2éjØÂ2Oëß›ço©@ú†}¬ÇìûvE½JQέդf1+ço܉TwÐÝ«Vºã{cÒÚ¾×Êœæ`LÊšÑõ´î{«ç»ãú\4%ìÛx]kP¬§¯aËìË2nlþˆmm)FµÚV¶e÷åî$· ØÛÚšýÕͤ±ýTÏ8ÍÕìfM–G¿ê[²ýtɇ÷×L{s“Îf{¦3lûë¾·Ÿ.éõì‚“Èݸ¿7*å@ùî¡}²Â¡íÀ†ïMxÿü» ïXÐw,è;‡}3ý«8êûîöJ>ã¨oòµÐw,î~õø¾ûÔBpÛhB!„B!„â?£8¤‰ endstream endobj 20 0 obj 3490 endobj 22 0 obj << /Length 23 0 R /Filter /FlateDecode /Length1 15072 >> stream xœå{kx\ŕ੺·ß-õCRwëÙWj½l=ZÖ[¶-ëiËÆò[m$[­VKj[RËê–lymì%añ™lزxòí& I -‘œ(;ä „„$;»Âf  `„Ì`kOÕ½­·IÈ÷eìöíSuêÔ©Sçœ:uªnËŽŒOÀ@Ä7–¬2hà'ÄꟌH_ö[‡ø«bëÀØàH¤ºÛ ÎÇög‡§Œº…Íúo‡¾þŸ™ö™’PFåþùÚëjl„íì¡‘Èévò…4HÃ!¿ïgºG خŶuÄwzìú{Û¬Ô7hìcDTÍÚTUj üûQƒ J‡•r„ ÈXüu ®k¯²À‘ëö¨Ü8€/£‹7øüq-Vð=xC& ÿþKÂMÄ MÄ =ðt“løž#?BúK°¾ ŸÇhÝI¡ûƒpîoÂcð-x‘$ ü0“pt!Ç1ìg½s8>¾GÈk%7¡”9â$á,Žø<¼ˆ£O£v@/ âÿÇDáÛÈ¿™t_‘¢IB¡ðTÁðâ̧à>øò}™Ë^€¥±]u‹êAH…,ȆbÔuÎãG #pÎÃgà;ðKøÑ=É$Yä4y‹üµÒaz›°]4Š¿F½(¸pìðà,^´îA…ŸÁ/àux~Á0ÄMÄN$’KêI39Iž$Ï’‘è+B–Ð <$BŸ¥¿¢¯Ðß [„m‚_ø÷Âb+ß§ÌÖdôxú´}µ µÜŽþ?‡¹–GÑsãè¹ÓøœEÿÝ·Âmp;ÜŸÃç‹ø<ˆú?„Ïãp fá)x~‡ÏOáçð÷ðÆÎ?Ãûðø˜hˆýÕNv]øì&Ä‹Vœ c乕ÜCþŠ|…\&/’wÉuªF[¶ÑZZO¨‡Ò=K?C?G¿@¥Oâóúý'úž@ƒ`ÒIÈŠ„ná8>g…[„g„…7…ë"ˆj±U<+þWñqñIñ9ñEñmñº*UÕ¬Ú¡Ú­Ú£šVÝ¥úÕwÕqê4u®ú ꯩ_R¿£±kr4eZZú´w݇hDÜ"< ä%± <ôyø[ò¿±|Š<%¢ÅÿMPoÂ6Õ4|ƒE5ü/Ü Á¸+~ˆ<ÉЃÂm(j ´£ÿï†È%ÅÄŸaÖ=ü#FÛ~|æq·Ý†‘ñú<55ÕU•åe¥[JÜÅE…›7åçåæd»²2%gFzZjJ²ÃnKJL°Z̦ø8£A¯ÓjÔ*Q  [\­½R4·7*æºÚÛ‹XÛåC‚o¡7*!©u5OTêålÒjNr¬áôÈœž%Nb–j¡¶¨PjqIÑçš]Ò9²· ñ{š]^)z•ã»9.æòF623q„Ôâj–¢¤Wj‰¶NM·ô6£¼K}“«) /*„Kz¢Ä¢­®±K¤µžp„¶¶l½DA‡ZEwºš[¢;\ÍL…¨ÓâëvîíjiNÍÌôFI“ßÕ×ö¨©€³@Ÿ&ªnŠjø4R™wI— ¦ïž3C_o±ßÕïëîŠ >/›ÃRms5GÛÎ\qΑ¯èŠêšæ蚇‹.í¸ÐÜìe³Y›ºn_Éž*L·8‚kNOß.E/îíZÙ›ÉJ¯…vìëÊD­]-wKÌŒ}]ÜJnT’ј™²ÁW £ô—¢:×v×Ðôñ^\¬”é(ì›ÊœMÙé™_|v¶HÓº\™Ñ†T—×לv)¦÷M=±Ã#íXÝSTxÉl‘=})Þ¤ Ƹ•H`©cœa¨uÌÕ„iäÚ!•üjÒåŠÒœjVªaÚ_løñôhý×;mÞÊB•cvIÓ‚ëêÛ«)>…¢Î1 eá²rØãÑÍ›Y¤hšpiQ³zÞ®(*œŒv¸ÆÌR´]]8È»Õ.ÏÌd«|לú°½°·KnKЗ: w7J{YÏB¬'é ë¹ëYÞëÂp~’_‰’¢ÚÜ¥¯ÉlKhÚ%¶OèÈý¸}Z¤K¢*gº³+×7}WjnïôÝ^\šVÜŠÓÓ­.©uºwÚ7·x¡Ï%™]Ó—::¦ÇZzc&Í-^¾+5Úz·7jî"è×h™ìŽý®Ž½Gº¤–éÞØ–HhêR©‚ÑTÁ»ÄUÍ9ð¼À*¼®€о "aÊkžôâ÷øåO…¥@žp_Íü44`¹¥d‹%Ó’“iÉácIXøØ£‚I\@ë'¼ *ƒ6"x¾¤w¨ê6[}Eý¯$µ)Ñ”d²™ìb޵ÅCm o××%Ö×ב:sT'$Õ·Ô¬ Ô¨WEꬴþ©ºùz•¾.¥î—uoÖ‹9uUu-u;ëÅ´zRWo*óòâ²Là7Þ8Ä=Â+Á}h4Ç•<Ÿ¥y>îX³Py,K·°ƒÔ'ÔÙĔƒ[Å­!…¤Ì‘oyR7u¹Ýæ‹3ÑÆŸ6 ÐhnCt¡QÕ8OÞ†vó‡='¯Ö¸¯˜¯¼v¶Æí¸j¾j±Úkz ájÃUÞ¨q÷ô°’‘ÇOöàçöøâ‚øsæg¶”¶‰åqq“ܼ\W–:)Ñn³gü&%jÔšxêÊâ]yåy¹u¤ ;iYi=aÍìb¬*ËJí6a·^kõíÆÂÂ]ƒ}ášê§ê¾YT[äJØœqËíÇ[}§KãT¢Šv—Ä;;†ê*oÝÓ²ùú̽û®¼Rr´Fü(«e°Æš$¨èg݃»<Û¶UZ;ÝõáCGo.)ÈØ›èŠ7ˆ&ƒá–ÆÔ\²—5äkw6äÝ:ðõ=¿bÑãšÖ,~L ÿŠ7‹Ï{R 1¥\4$;s󷈶M™…¶²Ô²#ÉGJ/.“Ä:ëI7«3Ï̉¹‚Õ u©éBZ ”• îÊ´ƒºËäuP“׿mýs*I=T2G^ÿVå¹7qÏSªÍž¼òþµž+øaNEç2°Ô ÎÜŽ}W®ÔškõÚk¶”$Ô“ª2îæD')­*­²1纲ò\yA+PVZYUYes’xâÊÊ­¨²äiòr+Ê·Mk«ux#³«¼šfµ&Ó¢u”[K(1Xíx;Õq“è:ßÞíqjúqiïpJzyú6••ˆ45Éî)¡×o U%0Òu ƪ†É³Q’Nˆ Óªq‡µ/¾ƒ·/Þ`æI“9ÞVÿÅwñšæZ\ðìÔÅÕ¸^ΰ˜â[m}©°5áHR’­g둨!5šŒ³ù•=M¾Á_j«q¸KI©?>>§ÆïðCÎ…œ‹9/䈡œwrhÎWKæ© <毞ì¹zÍRã¾Ê‚¿¸]1L­5'ÝW®Õš¯Xìeø5\PZ]]~«¬BÏa„±¨³çe±Õ¸0F3(óc= Gæ±¼bÊÜ•SŒÑªÖØKÙC)‰Õç˶o:É«n. ¡â‡¶Ú4C4¥|÷¦­»SJv”g;ºžžØSÚ4|SB2ÝO6w5 k®ØòÓ:ê8˜¶¯Û”žš×9¼›êD¯¯˜ðzâTzgNJ’ïp¼uçèÖ]ŇOVÔLˆ ]¼v]+:…ÏãÍ{„Ä{Ìz©ŸÚSƒû‹l&Û‡Ûâ†ãÛ¼{½;ã_¶ÑAÙËŠNVìaÅM¬ØÍŠ]¬èH˜£ñiðlªæHÏfÃ1]ÃöV±¹²¢¸¬$¸oØžx"Áš¤ÑctzÌpN§‹/«i>W©Ñh“¾ƒ!|â©Ù“¢«k±xJÀ%g“¤IÐÄ’„$xfž[sóâñ͹Ý€®°”ç“<¢1gSŒ¹C½ù t{¡%ŽI/ÑI-ÉñŸ å:ò ¥‰]¥S¡élsâ]©ŠTC >|™L®-ì²»,©]ÓT[áiñ²dl£é†M×\š ±½u]5÷5o9š–°Ï¦MßG¥¶)æ|úëÑL½.ûºá¡ë×:²m™9[K¶çíûë=¥@ß»ž,<+”ãÛ¢§GÝELݦèK9’Ö­Ò{MGL7 ›ÉcèD0éMIB²7Ù›z¸ÛëLNJLöNNªmlÊÇ©_»öÚÊŸÖüÔ e? ŠI0@/@°íâ‰ÅkôëÐ&ž€ÍÂÂâ{ؽ™$’K£HxB<¥šV¤haT¾«ciÆÛîV¼?L·vÖÛ&YšëKóõ§x)þ‘‚ à€ç\„8xMÁU`„Qp5Ò¯+¸BÄÀfñ†xrFÁEÈW!]OQpÒÈ,ÇÙíGMžWpä× ]‹—kñ*þ>ǵH7Òx!ƒ¦pœý^~+­Vpfᲂ£áÇ .@‰ðsG™"Up8Ä4W#½\Á5ðŠx“‚k¡TU¨à:ÈPUp½X©:«àÐÍ*¸†ô3<¯¿ àñÐm“e꙯l*8úÊ6ÇqÒ­¶¿Wp²moqÜÈl±Ç+8êo·q<ž­¸½DÁEȲ{8nfrì} ŽrìŽ'0ŸÛÿ“‚£Ïíÿ™ã‰LûS ŽúØŸáxÒíW\„\ûG·1~G†‚#¿CöO2ãwìRpäwôr<•Å€ã?(8Æ€c†ãéLÇ7õqÈ>trþ+8ã—c#›Å€ã]Çp|Ìqö®ªONQpäOÎf¸–û9Ù£à¨g2÷¿–ëŸ<ªàŒÎ×Ñ(ó?¤àŒÎ×ÈÈýŸücÇWÈäŸ7ƒ‘à™@¿Ôï‹ø$hlj<88‘v‡FC‘©±€t`j,48îš*”vEú¥-˜`‹°¨(–‡‡%ΖÆáÀød ¿xy`›oÜ7íD †%Ÿ÷õF|ã'¤ÐÀ¥Ÿ ú‡¤ß”Ô@¡ƒÁp$0ŽÚG%`<âÃúøÄx0ÜôG‚¡Ñpql–í¡áþ%©EK“KŒ¾ªq(0Æ‘RiqYE¬£hÕèÿ;ŠÃM€AÇ2>hCGÁüQèiM&Hö¼¹çrßr÷oÀ!Ó[¹¬ÈýJp‡ð´ðŒð},/­çZÕÛ AÔ.ˆ£‚p†K—|\W ü8f ¦p<ãBª»¹œâSØ@ÊŽ…¸•>ư]ˆô]ÈÃäm|CIJHÁ* ©0Œ´Bv˜·X°žäÚo8ãZ›CZ÷q?²¾~äá|'Bßý9ºŸBJý0„8“6…u9ÎוÍáúʾ ¢|æ·ÿë…Oi‡ ngy˜4æm¦Ií[kËv¬‡±^¯kÑ–KKü7î9ĵ +s²¿C®ÂÚEŸ0÷ÿKÿÓuÚ|~Ñ„^ñ¡Äþ }±^^3ï?ÅuÄöôÅ×# ì‡R¾ læ!űÑ8Ræ“é}Ø+¶Êë7Ž5óÌèŠQaîƒ ¾Cû¸Ïv"UæÙÉëQe´ìŸ-P‰ ïÄÕý<†±<¥ÌA-çÙMâýýëV¤•ë;Êm óÜʬ`Q:À½‹yíY,sÏÝ86Z}Y—•s±¾ ¶ý|¯²U¯€ª%­ö¡¬>e÷Èú°qÇù ùyå¾ïã1&{bëá ãø·fHñ‹Ä÷èøRü0}™õã<¦‡9ïÔš¸aÑÂ¬ÂæäøòÎ÷)3ô+9ÂÇ÷\`I>ÛÏcŠ'}«òÛß>:ÄsV˜Gž{"Èý9Ì[Ê>åÄ’çí[¡Sl½‡y”rk§¸/pšÏVÎl9#°Ù‡x{ ßÜøœâO±âåå\RÌãd9ÿÎàÆ2‚Še÷¦¥Ê gtéb¿2°ÝrFé +q5¤è9°tf³1ûyÄJüæ6 È+ÙÙy˜ÛVNÀ_ÄBKžãY;Ì3@Þšáòmížõ){IÎÜl,;Ñb§9“$ßLå¼´2“V[›–g’ßkýü½A¾ý”ha»u‚Ëf´3K#Â<7Dšì«qeÿ¥½)ßÓc7‡€ro[{ÃfçÔï”›³ìIù½ _É!å†ñ&çr Ã+úcZ09>žÉ–Gõ+QäWÞ¤b£&x+\µ¯Ü?1Ïó3(¼têIJ¬øÙwXÙy2í/å¿€’G–3Y?ßrT×DE„G…üÆ"-Ý b7­ rÛÅázû}Š‚ÜBÙË«ýZ‘s|<Òò”},ÏpŸÐ_Äþ[×û=TöÁ/•ûY”OsygOl0b#žqžÉ×óÆzZ1¾‡ñŽó!Žb‘¾Ño©k9ÆWÜ&ÙêÜXú2Ï!Ž­ç”éí|]'ùïºq­îïTÞ`Ø]KŽÉ© Ælĵҧ齪_tŠõâ6±I¬«EX'vˆ5ëÇlÈuà~Ý^îk½µ2½ƒÙL¶ m=Çr_Ï3c¸>Ù³²w„øŽÙ(Ö–û>]T~*~JÙ±”¿ß²ß†6øÌƒ‡:g“*çhʬN_9‡•?Í9G“gý’³1‰š¨å;©ë}X[”:^©ã”ZçÑíw¾:öî}õ2y Þ%o=EaÌÂO~ƒðÂ"‚–,zŠ&ãœU%/{^î|¹÷e±óyæì/ÎÒ³=)ΞceÎjÏý½÷ÏÜÿÂýâ ÷/ÞOÝ)äC80ƒpA„‡±\@xA@ñ¢= D‚=ÇŒ*÷¡2gÕ}³dÒpB¨êôÿÔOÝþÿ÷ýÂÉcΛŽ 8Ÿ½9ÅYýv÷œ> endobj 25 0 obj << /Length 265 /Filter /FlateDecode >> stream xœ]‘ËjÃ0E÷ÿÃ,ÓEð#qLÁJBÀ‹>¨Û¥±+¨%!Ë ÿ}åQJ7gæ^ÍCé¹½´ZyHßœz”–g³8Ðã¨tÂò¤þ†t‰‰Û„¥Áß­³Ç©ÕƒºN@ú³w+잤éñ‚¯N¢Sz„Ý繋¡n±ö'Ô²„5 H¶7Ÿ¹}áBJö}+ƒBùuŒ$«E(b ½ #q¶\ ãzÄ„ÕYÖ@}½6 C-ÿg«hêñÅÝ&΃8ËÊC³AAP §’à3AIP\NQVTQö‹ßªl}ÐêîSŠÅ¹0 m˜ÛFRï¿`%ßïñ­!}Íendstream endobj 26 0 obj << /Type /Font /Subtype /TrueType /BaseFont /CAAAAA+Garamond-Bold /FirstChar 0 /LastChar 7 /Widths [ 750 510 312 468 552 333 552 468 ] /FontDescriptor 24 0 R /ToUnicode 25 0 R >> endobj 27 0 obj << /Length 28 0 R /Filter /FlateDecode /Length1 35020 >> stream xœÜ¼y@×½?zΙ}FËh_’@ @B #аŒ Œ0€7ìØf‰·ìd«ÇIœ¤ÙÓÚ×I›6mRœ•¤½­Ûë¤Ms{ã´ÍÚæÚ½uÒܶܺ­›¦m€ß9#pÒß{¿÷ÞßO#Íœ9s4š9ßíó]F{§öm0 ( lÞ=2Aÿ×Ï~øw qóþ½Þ_f¶I¸}zxÛÄöÝñ¡ ߀Uð~Çö]Wl»íüm@<À }lëÈýÂ3F¶=†Ï‘ÃEó²xÿ—x¿hl÷Þƒ‡lâsoÇ»à“]ã›Gÿ]~ ï‚÷¯Ý=rpâ×èU€±ƒxß»gd÷Ö"·ñE¼ÿŽõã—ïÝv,pýïÉñ‰©­þõòg¸Aƒ¯é_qÄ yá}È’}DÑ Ëñ‚(i´:½l0šÌ«Íîpæ¹òÝoA¡¯¨Ø–„Â¥eå‘hEe,^•¨®I®¨MÕÿ¼˜¦Ôß|(ð°øþògþâ⧸ÿÖ…b(<[Œæÿæ·áÏsÍÅÿÃëÿý*>7î¡ÿã /ßWƒ €ÇÂKŒRÐàyÜSà8ˆƒï‚Ã@‡û®ãþrCøûÏâý h‚Z°me ™)(­*°lƒ—ÀÏáæ•J0ÆÁøÿ‚û~ æÀßà¸ß ¢`¨+A?؇Ïy¼Sðj$@5XúÀ60Ž€÷a>ò W@ã³'A § ƒ­ø¬×ƒ›ÀÝàaðøÈÂ}p?<Št9º=J±”™g¦÷/¾ÛRükÕêw3 ‹¿½Lâoߎ'À·ÀÁ8Ü ÂCðø[dF¢ ÔõGºˆ.¡Ûñµjð9¼øî‚ø ¢øÒ t€NÐ…ïµ/ñ•î— ΞãÚÇ¿½xS“ÂW/pƒBLþƒxÐŒï¡Ss«Š |ÅW‚ëð5߀—/¨Wý0¾æ§Á,øø øpüø5ø"|¥…0ëalÇËz¸n„[àexîÀáÍð^ø<ŸoÀ·È•ÃáǘÑ¢‹ï‰‚¨­F#øNv`J݈ãåkèô>ú„*¢T%UC5SÔ4õEê_ð2C½@ý' h;¾Ç}5ýýïôÏé³ôé†e3·áeåØì{5{œýˆ r Þn'ð½üóëaÀ3ý)æn€»ÐjpSðl†:4O}ò@ª‚_,Š`þ¯gÚÑËà/XW¿ŽG·±¸.0×ÂèƒëñlþþôÃ(;l¤#ìÕàËøª§ÑåX'âõw™ÃX6~ÅRŒê5ð æþÛ°¬ïY¼¸8‡ù#‰¹PÂòº ܽ ÃWw;؃9z s~;æÖoc *½JM²¦:«¬ˆFÊËJá’`À_\ä+,ðzÜù®<§Ãn³ZÌ&£AÖë´IxŽeh APÚâköÎø‡gh¿¯­­ŒìûFpÇÈç:†g¼¸«õŸÇÌx‡ÕaÞ©à‘Ûþ·‘Jn¤ri$”½)*+õ¶ø¼3?iöygáÀÚ~ܾ½Ù—ñÎÌ©í5j›ö«;Z¼SP€¿ám±5{gà°·e¦uÿØá–áf|¾“’ØäkÚ*–•‚“¢„›nÍ´ú&NÂÖz¨6PkËŠ“ðZ|U3«|Í-3í¾fr 3TqËÈ–™îµý-Íy™²ÒØ´Ù7:|3ú°:4©?3Ã6ÍpêÏxwÛ·yO–ž:|dV£ÃaÍß–‘Áþj$C~ÞYékžYyåy{Yé,üêúþ¡i‚õý/‚U‹Ó'Û§››3xäaªåðáCÿ<¼¬´£§¿_¯åˆ—\`O¿zmx8´GðÏ“>r¹[Ùêk!=Ã;½3‚¯Ñ7vxç0&ƒóð è¹¢àiç*åÅÅs`U‹÷ðú~_ÁL:Ï—iv4ƒÃ=W<Ó®xÛÿùHYéIٛÓ:ýRC£ý|cë¥cjKNZøª—'’+òµcâÏx7{ñ•ôûfPq Ym­‡7×àaø•x®và™>,¯ SÌË>ïá¿LbßÜïÿ¹gd©‡-–ÿH“0Â%fÂÇ—Û3áðL(Dx€kÂDÃWV¯îW••îŸéðMÈÞ™ìÃŒú¬Š,3¼ÿÒ[/[M-c+f õÿáðÖÜq,-Þ“4S|¸»ß?rø¶<ÿðá#LšV,d‡·ú¼­‡‡Ì.Nú¼²ïðÉŽŽÃ-ÃË·4»øÒmy3­G23òðÄó:ËMÈŒ©©ŸÊC™\ åQ¸Õ±Î×±v ¿F¥V{D Ò€!X€>EOÿp†ˆôŸó'êEø4‘…ä@:×Ñ C¡¸ÀP@ƒO½Ô©OüxéS-þã™Ll RZúw½eûï¨êú¨Um¶^>Év4î¸l×f<=Þ‘žtYÍ.ü„:ÆÍãã–íÐ"·t·P--ŠÊ Ï·žèÉô¾@¾¥$Kk2…™Š¾RãJÊÏÛǃãÔì8u¸‚®*W›«ßuÐõçJoŠß?-þ‹8Ÿ…•Ïõÿ«ùga‹b;Ôqêò×÷­ß¶žZÿÕáQè…£‘©É¹l2™Ç Þ8ŒÉÈdÖhK{úüœ<'Ÿ\œ“/Î¥qvÞ<Ä”‡¯‘O*·‡y¼…¶¤Á–¬ˆÂl6¨…•Õ‰K‹ ¯ÒÐfŋɿ†äm%ššc}…ÈúÃЈ“1x`UG¼ÁÃ;lCÖõw¾/\`,y`­40 Úr#Myµ±ë·\¡qVI`4⎠ë4æeKeüQ³ñ‘ 5‹Pçâ¯(/ÅÈï‹Ï(>hš…¼"Ù·h8,]2æd²_xÖ=[y~BCZZ‰ÑÈvHA(ûVº6¸¶¹ÞvÑ®YäUbŠÜ-Ë—Ë_ï“ÏÈ¡,{å¨Ò^*¨L§Š3µ=_›è¼â…†uûÞÚ>ùêæ¨«Ôª÷ç·}éÄ©‘ÑÎÅ1J`ÔZ ÞPâ-ø¶æ-Ý[V "ìº ÒÑÁ²1@+ô)LX ‹š¢iGÀ ²Ákˆc “3úžj· èjÆt#ÄGKƒæóJsŸy›™1›ë”ÒîÒáÒ‰Ò3¥ ,}¿É¥ÞÒ(Þ§KŸÞ&ì>þ,ÐÂ(pËnÅÝí¦/¸¡â¾Åý€›ršÊMRvO“Ï‘<‡¥¤çÒ¹™º†LœOÛyùü!Ý5§OWDÁd2êÙ,œËD=ÄBbætËM_U|I€ðœº¡¥8¦ÊTU<7±”}a|uyT€pÍ—%›ëÛXXvxeaçÊ–mû Âù¡TYC_¶¶»kþ§‘Ø|P0×UïmM ™¢Ý’(VÔÌR”5XäødŸYÈ/ý·ÛJwVFMy…ewÔZeÄšôž®ð†FÌ“‹çÐ=T Ô@¨<ýsÿ™ÀOƒï–Ò?œ¾~[Kÿ@sZ{ÚOýLú™ݦ}Y‡` –`ÿ„VcÖj5Z¿&@—w9¡ÓY®`ø|+\`Ž2å’Í;`æž×@<‚´>9ÿN¸Œ `¿-áO$­ :‘HÊ (@áÀth1„ºCáé%‡&B(tÒwÈ9^‹9û¯2•uËGe$`ön’_„# )<”"Ù7Oø:¸@`…Œ=ãn@P‚¼ *ÍùIÌoY¢ ÔΚ0Ë©6ZÌ´*é°²æäZ±ÂlOîmØxã·ÿ±ð·W¯ÞÓ³¾´úöõ ‡66Þºé+ðîæ‡¯r‡Á³ÇÿÑPqjá/=Ïèüíõ3'žÿ6A2Úù ØOŒƒ6ìÑî‹Ê†Çú¾>ôN=õ`ý}}_í¢Ø#£‡7ÙBcƒ¶Œ¾t¨æþšÇk¨š¥üußYòñoq ÞéxÝqÖAuaué0ÌŠ¯Šïˆ‰™¨¸fÀ[Ï”ÃòYø°’\7`à¶÷讟êPôA[h ˆGÅîö±ÍÍ;™SÞ3^äõ)˜J]öj7졳Xdgá/ûëígÛQûÁéàë:¨ÓÅv3ð, :æò˜Ãšs.K@È\,2IxŠˆiÒ ¾ñdfÓsódh2«Êðùùóê ì|’ ,¬Ù,ãWÕh5žn¿*…Ä:‘›¤K†Š@ ë’´ªËfeÜ(×±¤„)3y,ñx,KáoçÈ……ÛŸ³qP§iXÔ[oi]÷þë›j¼é '› 7jlzAv]¯ctá/¯e]ƒkŠ‹6Aáòé†=çî:þT{÷µÅÎÄPtÃå{7l¼mó˽ÕeÞÚ¯ù/[ßÐÈæUDó²-d ƒ~áE“tPŒA0GdÙ‡úV®| –ÛÌsŒ§WL¦Öîë, ìSL¨iàŠÚ›o¹õÎ[þñ³Öô¾¸7]¢hm[MgfÑÆÅ¨UAd”Ã/Á»­÷Ùе/[^^õãú‰ö,ϯ¢j¨ç õö!Û}Qj•uUû*¨÷Ûß_õ^'õŽõ=ÛûMïµÑ¯6ý¤ý'«^ë¤_ÕüØô õ¾æ]Ó/,XÅ×kšºVFüi?zÝCOùÊ1½Ããˆ8¨MŽqÇ÷Ôu˜Ï”žðYMýV^êšEŠß ¹·”s…£‡B÷c^ õ˜Z¯9_Ùë8q,~6Žôq%Ž0¦ýH~°®½Î Í‘)Ì.ªyÃ<ÓíªÀ¥çT›Íæ¶*Å"Äú’W–¼Àœ,Vfbr ÿ’ýU©NºrGsú^UQ¶Ö*¿Ä*1t-&oò`¦)cí¿=ÔVd&j=•­±Ú¯ßµÍ†V6¶¤ŠM¬!ì´Åñ¯§ûÖ+‘4™œþ< ³ð;Žjº¯Ô[ô”®¸EËêý•6}©³©³PÐÖE[NÕ…5ë…CN·KË Î6z:Ë­‡ŽíµÉùº³Ù/S×ÅóÊí£JyI nÍÇÖ¡hqå©~p ´(†Óe§›N œk¦èìxE&®š„†Ì q}f4“aæÜóìô•åZr¨~ZÔyõßô–. J³@ ÷µU³«Ðª­EÜøV79Üuøèa*R—®Cu;[NTî>‚^"ê!ˆ¥½VqDFÒ#hdç΂'úwžë‚Þ®³]h¢ v‘£ þê¶Þ}'xnÕí&t˜Ÿà§ù£üqž#˜ÔËGqç·øžô¾|þ4$F Âlbº4w衜&(»‚V#Ëi­>ÉWÛÞÀ²Zžè²Þí¶•gîZ5Ѷ^á« 4,·ÕˆöÅ$/äò†lœf{gjªÒ\^C¾¬ • ïw#hMy XŠA ‚[V¯¼3ih *&N‚ÞJÏòI4#é]Eï¾Y¯ã‘P`H¬…žòGÎÆ¾þÖöUw®ÛøÛ ¥Ç¦SÒ³øÇk4úÀ-0éèM§íx¾Ò&д(kõ†Œ†áu{ol¿j²µÖe[˜Ùãa-«á%bCÌ0XÙçÿŒíî• Û«ï( ¿+áB®šT]}ˆUZc^f9L³A׺u»ç€çmÏo<õ0öu8eÀ/Udª®IЙj¼}:¡³ÎµJ“«7þ­ÒÞÔ ©½)Ó4Ûô£&ºit[áþÂC…÷ž)üM![xØmÜ=#Á iZ:*ÍH$&*)R·4,‘.VŠ:?Í7á¬ósË #úìÜ%v"ü“­ˆš0é–¼W úUª&p¾Ò†Ñ½Š/ÁAÖ"çl p¦¥½KÆÅÑ»žá)$0¢£ƒÝÕ^ á´®:Þ÷Ðϼ±s`¯I B¤Û©g6Üw#ât¡†+®ùæó÷¦wÎ, œh֌ƇàI¸gƒMÙ´îòX9ŦÍ{jªßýÆu?ÞRÁ³Ýõ ¯›iÖ ä!é+uš…‡Ã]ÞØ“‡¿úƒ’×*^œG_£F@+øºRéŒTP-áSA †õc^ÓÄÜeÆj«].VÂÝaJ{ÃèHø‘0úe†gQ¡"pu™†Á*aZD3&Ìs -§QzîWò+A,*j³õVž€WèwOP·pc*¡m%QàSdúÏ­Åù³éŸœšœülúcv ˆ Ûñ4"UìŠÑÑX€Uʨ4à–ì=?´Ú.-ø›>®„j׉4Ë»VšéE•˜&ù“6¶µ°´Æœç“‡ô.Éô0ˆbhy—YÇ… ?ªÛVMi9FÏZ®ßáâÞö”µÃÊoXmË ›,„jÃ…&G¡`mŽ…¿òJ¡È‰…YbDVÄ[ŠÌýšÅ³ÔuLho?m2`ïÕ¦\¨2'U¶*˜©‚ ƒ©Š®ÿ-yÞYï.?8@€óˆ¥Ëë©16»Ü)$ U&ºRG—‹¥0´ßçó<üþÎþûÁãà@“À\¥Õ|C¯oëk»j¿Wûz-]‹ÍÔ·µÛ:l¶·2Q+Äòôø wz¾ç9ë¡<‘I‚¸TH–íèé¿:£zµâNb£JÖFÛ4Ëæœ(ìWs~Tvò’'…©BŒi`ÙYÂêt oåàÚ’Ó»„ÔÖR=­KŽÊãiD ¬à}pÏÔݱØOnÿÎÇ®n÷"D - ’¶o»¾ëæŽdrákñõ!Ï/_ܶ*Aÿ´QÌ$e™žîmH$v­Ûq¸÷²ïl ;½Fɰu„ç´Æ«FF¯©]ÛÔôLISÇŠ5·}ßf$t©YüÊR¿i°EÑTVD©Ø ¢O`öÎW¬{§z½y[RQÑ„jµ T/ ºÈh=QšH(J)œ(.E¥¥ JÎé4›5G<‹€ô|e$›Æ¶+"_TÃhÈ©0"‡S9ŸaUB©`ƒøJ˜›¹%„Z¨ŠG æ q-ªÐí¡‘‰q¶GÂæ b ¯1b’çŒ;۬ł Áðø`C¯†ÈÐÃK’Þïl±k¬2õK¸é*ˆÑˆY£u19 î[ød¬Ð'3.¬["áTÏá_í º\ØÏ9^–êŠÍ5%xvVÃa‡ßЦ”Ó âLàuƒfß0 Š&`æzùßt›‡Íæióq󌙕ÍÝf„¡ö ¤\$&ü<ñÄxL1[µ­º»ÕjÜ/,Œ÷è:¿0[Yˆêý¾¢¨2:®‰ øv‘ÐÅPGIù9*\|“z™i °üD)y?õé"ªºn‹²Ý|Àü¶ù7濚Žè00æ¥^à@õ–É/åÍ.^PÂvGòG ÒiO€Ý¡¶ý+fWüh½bt[Þþ¼Cy÷çÉû0Í»ÉOh9šÉE%&BÓ!²s.t!ăò†¢!%´|H@&B‘åP±.ççSWcQ!LeêÙ’@¬<$§ð+iln.:µLfóKñUSND°»là@¹"RE‡r*KK5q™«ªãªDÀ—L G\L"Y…üî«8=6×õhÛ³ú-Ýö ®ptfóÆ¢'šO#|ë'ʘ¯zàØ³7 7ÑP¶’þoF4šPfÞÚ´³É÷ÐV½×œojÙÚ²·§¹6Þ»ú½Ðöþ"iuꩼð?º¿ñõ‡OyLÞW~¬Ï yâ8j’²ƒÍà”|}þ,ålÒ•ç´Ûå }}®þ;E+}iÝ,».–©ñA_¦„ÕdF24»zµØ§ Pcvh·oNºôÅžbT< ¯W‚þhu´5º+º/Ê€(ŒþNΞ¡"N‹÷Š_O‹gDÖ+NˆHœ…ÿ­`3›‡7£Í$ 4™L&±Š#ñoþÎÚ’v - §ˆíO&±†ƒ3Áî~Åœ˜°Ëf|ÁIEîs™ñe.*Ž7™C:ù4ŸÒNrüÊyÿ‰ZHÛ–Sƒzh^2BËñoâ´°ˆÛ–F™õPõ>0åôHʵõ0ç¡Di©ÇJ’òSþòWi¬úhCoKu) -¥õy["k{U™«¨×¥g•ÈòõM[™“EÁ¼ÂcÐÐcÒkàWkd?ç¶Æô†²Gµ«E¬huŽÛ¦8©Ùb Ì${͉,/ÒŒAÂXþêçîI ÎuvzŒz§`ô qe°–Džâ­¿Îª©ñ»˜eá[Žâ•\±ÞJ ½NŠ¡dIßþ¬§°ú“°Ö,:hN àâ§‹¿¡ß`b`üY1‰!v ®/.nXßWYï éY•ÈúŒ€/w¬úÉjYõ’Õ:²ê&«N²êРvŒ1Dl¨ÍÔgfuÏî‡p`ÿ¦Mk7Ûö÷ì™ðL{Ž{f·ÎÆ ÖMcw…E¬MK³Y°”^ÿ¼¼JœÑuK ±Œ&µë ÷âߨ¿3q°¼ _\õZákÔ× ¿Þñb!5¼czz·Ö%ã•c±Á¸¨3¾`‡žÙÅsйÓ3ÚÆ6ŽfƆGÅvì°¦fỊԌÔc%ðl ,!hˆÜéYBÞ½}÷4£ŒÂt3ÃÌs”9Ç\`xÀÈLweæE¸ŒÉç܃ö9UG“¸™*ÁI„¡&}qiO•xͪ¾e š"êXu0ã9ÅQU's)u‚÷0$"ØTM€…¡¿æ^åh®ÆÈ—853æ„%0ÝýØ<ú÷%,}´ö]HçÔHT`‘Féüøþ†«:Ë0qh”Lzà›Æî ÞÊèü) ›¶ê67$¢ƒF D>º]²RL¾¾ó›×‹fh·Hœ£q wœÏH6Ãi ½®{¯{ìÇFk»=T1V7±-¹ù*›³T«=,0B3²:Qr~´jßšª´Í°Þm.omö*­z®$†\+æ/ŽWó±‹ÿ€¯0n aŒuJ v¿RýãzJ3æýÆSŸ >è-ðuËYË,‹ÚÂÅ2åD¼K 2ÅÄÑ(…YhVL3Ô)ê uŽº€ |=Ë’0·U©Ñù©Š¤Þçñ!ßN׉×5g5H³»â ”“Éé$­$»“øIËÉhòx’J&s˜M%ùäüùìÕ¹lÎÜ$HO.:=9•sJ&s$ `Šç<"¬Tu–ÅTm1Qì²Ï±@ä s¢©rIÂ@2 wÄŠŠkjŠ‹+׿¨+OÃi°=¦ S š)&P·.O{ÛÅHŒ‰õŠ,*aú'Ñ„ÇS]¹P˜o¢äÆ£V&Xµpnáõâ|£Äs +`qc°|r võ-¬ÎR¾fZ –²‚Å9ê,eƒà§JY™\¦¬’W)ò€Â¾œx3ñAâ/ Z?õC‘¡®!ÊPß,c”Ô,kôIÝìâ'ŠÝjKê\™‚‚Á ÅžªÓ²Ÿ‹½Ø#rÊ9wq.ò™ÞÌz“ÐV•9L×*Š„ôªrá€|h[ÅJ7̇æœ÷‰ '‰Óq,V K¢ªÆ t^ŠÕÙr^*‰ÚøX+â~GAÚ)'çµ·’B jäÔµž@Ï~Å2–a™5ÝtC[ËåUä[e Qªñø†¦é"Á8>šÍÜñN‡Ù¼#ØÃEXíÇê.©Èì-[#æF#¯)KJ|ÿ“÷³Í¥­&­VkäE=†å”…±Bà5v™³”¿ï¾¾¢¢¶6Zøþ“£3#bôf i9Œ´×Íÿ%éE°Œ(BÂÕmy™¢òL ACº"äíêêšî:Úu¼‹ ÏÂ7•‚Æž#òêÕ$£Šô²Œ7wÊÇåS2« tu.éBìòËDêT¤3Á,öŠU â!Åêüðbõ‡…$‰ô,"_¹T7¶x˜,æ\=ˆÅÄ-¹0DÂn5éËkE†±;ý«mž|ˆxB‘õä¯òiihõÖ׺Ê}º{QððáÅE*ÉÔ‚>ðÅ×HlÙ5ìh°†=Ó;:Ön}¨ù‰fÔ ™?gŽÆa|žTœ–6 MKÇ%ìA y¥ é+Ò›Ò+ÍÂÛžSÖL¯AkHÀoŠøÆ¹Ú‰œwœLf==™ZŽÌªÁðöÃj=eµUªè‡Ð6—I[ªê²å¼”%+LP1VI”„í’×K|]ŽòaŽ Hd·J_W›gb&l:–a ÆŽ‡ ì–¦d Q1ÊTž—[ϱÐ.í×”óâ ×gÖ{õùqIû°[Ю~&aÝÇRNÈ\ ‘ J äõ #ZÓ…¯L®úòÑ•:Q“/@Ía×™"%\¢ ñò²4XÖrmžwá!»ó_à£Wš½2‡ádÓâ/¨ß0Í  4ƒo)5ÙêHòcÒ ZP*ññD!Õ˜rŒå¿P 5nÝá¿Â‹ÿÿ»þÿöâçxl"¥Ô@%÷£BJZQCò]ï„(~'è­9áØ}Û×›V¦7¤Qz””ºCÔ롳¡ !Jò„"¡th2ôQˆ }Ú²\„ åÅóYùM’u“1MK©‹\Ò+«V_†Ke¥`‚…2qD+‰QTã U*ôÉ¥Âs¶Óf5-Õ!-Õw¡÷°Ïáôè–ÑMs”hnÖa¬à.¯ÉPôÈ]õ¯ˆ¸÷e܇6äéé‚›z.?þäõ«®Doåï{°Ò‰ÅGÔè `óú…ë:³R0Cd$eZ.v˜Ñ7nŸîûR¼°I°µów5½q2»îé§|>H¬Ûoß`¶S0 ïRücƱŠÑJê­õoö¾Ù÷æ†7ûßÝÆþhÛ»¦wÍïVÐF£<<<:4hš]|èyÛ¨wvñå@|0å5 NÄ#æx~9=0èˆÇ;ÛF'dÙ?Q³Nßfá Šu¦;›:wžêd&:Ïu"¹vÎÂ'ãÕFhЇi½cµcÐñºƒvÌÂRÅüiÿqÿ ©¼‰ú'üÓ¸qÆÎÏÊ*ÌzR Hc€¾‡>A?MŸ£ú0!O(Ýà ˜8:&&¦'.LP‘l®Ô“ˆó|3ƒ*×D¬s¡ˆäÒ†È7 }©o"蓆’ðC×|~Cä=|HwšÇ ñ{'³£šÁ刣»±rJUä1[¬K:æ¥Ï‚Ídµ%>§0Gƪ+ ^ˆ©ùV (v ੈ|9߆G[à´Äë[ å,Üp`[ºNôvеë’×ø¯Ò‹VBz_£OÒІË"ŽÐê¼²üÂúb##é×2=w ’e¨Ššè3Žz-va9kØi},¦ã8í¿>i a»RfÈó&±[DASÛuòOO?xÜÚ¯wc^•Xå¡W 9£F°ˆñ…¯­\ó£Ö‘ºR›WÇce"ÓXNÒ²«zRW;½"]ýISdá»Ü{<F2HÏ3#<z›1‚8XûtÉ2 ¯T´>¦2Ãd Æn×Vanyž.€þG)ÜTŒzíŒmT«hÏji­6QeX*ŽIfÏ“¦ÊT+dŠ – ê=LÕxõrLqÙ_ÅÔ£,æKÊÚjAo-$ ®xE‘H‘¸1úµ•7rº*¾nd@4KN-‡}~Os)-â­AËi VS½4PéßÝê>vÂÀ‹¬ÖMW®d¡¡êÓ›û½ ú"‰îÒ‚‰Üïú…GàMàvà=ÏA <¦˜fáÏŸì+įS1µž°"`°N[ZÏYë,<¨&ôЫê}·~X?£gõ¹`îBRžç¼sÎ@ò ÕKaÒ\áŽjkryÙõP£Ù±ÒlÑ‹zÑ ¯žè>±ðˆ‡e*/ ¹, KËSÄàÛ×_wG?¹Î2€¨[0]êÀÏ”Š³%gCèK¡³³AêK/¿TBY‚–Kˆ2 &Ñ$Q’  Ì¡PÀé HL4æùr¡e<Yhl ²Y855ULН9}«–Ê.Å,¥³I8z)Ce«LTw.žMí¸ïÓwGÖhlF׺ãçî8º#½¿Èæ·Ð,Ïë7žÜ÷àOŽ|º®uçƒ×äykÅÛlÑ;#2ØÓˆe) Ò!ß¶ù„“;Ö–åoˆÒœA[öÊÄïþÕG«Û²Øó)݆†Ï_S†)ѵxžÚÊØA¸Q1üENˆmZTÒ¼sd—MQ<£OÓŒs J•ûz“VòãoÚÊîáùš‚¶‚ƒTÁ=çdˆ}›aù¨<#¿*ÓòkŠí” µA[„hÈ©Éù,)?Ø«E#)?›?¯V‘y%}ÄûÄ,¸„I¹êJ¢³@ΓQmær’Ÿ |VWô‚ôS{w5Œl¾ÚÞy×ú…~ñÕ®°ÏYï¹úÔõ›WuÛ+ƒW¦Âï£.¼&Ú6ÐþÅAØõøð÷梿¥°¨÷c7}½5vgúê#]»I­zñ#êq<'õ`8­lomlm=TÌ55 ´Õ¤ßѼSq¥Õš½²í²²|Àäk:™æ¡hwÒÜxR‡‹¦”‚O ‘J³5Ö !O«Ö´rÅ ŠâÒÅwpw¤-xôIDÏ`¿p>¡è¯KÜ™8• Ò‰qÜ ‘)bUð$aþ¼œR+³°µÁ¬—+¸%ìhÈÍ'yª`î<žËósóä(aJs% I“‰wÚ°ÎÙb¶ê\?€g–µa€RX ÈT/?  KN‘™êU0îMĘJt¬R˜×ees BõLeP…\o.Á˜…lýV­6¶½Æruü[Ûèpž»÷”Z¡ÑÍØ=ì=7ݳ÷ËÅXzôzv#ïøæK´?VVÜ,ý ö/YŠ9«$Y‹'aÞe×Þõé»víúÅßãˆÆ¼cñ,•aò@WTŠí+[›DæPC‡¹¡¡£¡¶žÒÔm Ù¯ÿ‚þ~=¥×»;ÐKX[l€}O¯¥³ð?•òè'nl¦:¨††"00©š­BU÷û);²Û7ÉEޢʢF¬Át‘Z’«²,& áZ[Lµçç’9F¶U.iœ:M2V$Ž /=uoj©*—iÔQœªJUî^*¦ˆUÖ£œÂ ÀQ¥6$¥„¾V/¥´=GO´Ä’öJ†”­l}K…iShE»ÇV®ýFþ]©½PV 7våYû ƺs áùéäˆA¯a´˜¡ˆ?”Ì8™½®¯d(éÒ³2Å3¾A ƒ8yá6ëq f”ÖÕ7öoª„Z±Ì¢µÈ~!f·P4_´áæµw}ÇoÃVß(ðæŠ¡hqᇅ26âŒÖ‰4¡&ŽÈSëüEjžZÒ <ª¸_Yß‹á÷Ûí(‘º/õJŠj,KQ-]Å-ã&~™ß£{¾ë•.ÔµµBô   Ä1’ñ\9PÃù®÷6åí¦SMju€¿éÄìußÔŠ=ôÑî*ø½ª×«ÎVQžªtU¶j´jªjºê£*®*²„ìç°ÿŒ%é¢è$q0RkA¢/KuH0 ²“0fãLØ}Â"s©Bqù™,8Źzµår·ÏÀ}l)6Cam_~zƒÄJ©ÎbDŠÎ /x%³¬T¤³šè`>XÑBÓ·pVäÈáÑÌ÷vÿcfí¶vŸ–×Ý—–¹Ò+ûŽ®©]ûxGµ¦è­…_ëÍ 6ì½ùjcH+ØÍÍ ÄYDÈP"ÃyŒà¬þîƒWpÖôàwv|ë~—d˜ße7¾òƒë LgîÛ„ç±vñ÷ô:Föaéñðܪ_5dÖþª{`zàÜÀ…z`ÀîÅpØ?ËHj ãY;B™}ÄožÜ‘'“|ÛþÕ³ðm%гßÛíRº†»è®®­%û ½ÞÜ®#©ìÖº{Á½ '8Ƚˆ¬`¿|QÍøœWqT,2—+p™»x)Ów~Nµ$‚‡A9UµU«¥ëTu¼几Ù2¨föräYB³jË žõ|â…™=j b.ñ£Š‰HÔrͱ6!q3êR½<—{8ªZ·´‚ŽÊ¿ÒJiuúr—®á6èѼ°Q‡!ª€d­ÀðˆÎÓºSw4íÕvF=Šbók¾wy™[Ϙµ–‘h¨1’\¨Ñ;ÞèHiD·;˼e¼ÂÅ‹=w­é«]­wHƒ®ôrJ¼>èvÈøœLqo’ªù+¦ì@/ëb ð BûÆÁ&Ó¦îMÛ6íßô…M÷múꦿnØMpÓËŸì„Ý;‡wNìœÞIË;îD;#˱Ì”ó¹ÍT®´a2{µZ·…b­ñÙÓòÜgÍ/Es>çäéäÓ)uÅéÔ˜iŸ^JqšH¢².Ew—«TÝCP7AÜ*HÄ(¨.U[“ø‚UÇ»jñ=–…eÅK~á¥\5†¬z'‘œßçF²©¸ÏÚ²²T´s´¾ÝÄÛ÷…†Š‹ZyÊ):Âaë.W¹ɶDÌ_|Ç][Êâ•6>&öå9l…”Þ³jo© Åò…ö™BkÚ׉'t–¦±gn¾ƒä¼4§´ä9rLj“^öÒ¼%“%yúñ yḭ̀/3׊†1ó vP™©W˹g5kÞU´+¾«yݲËOM6”ècžXWŒŠ‘h¶!™ìÞ¡uGÓ£´{Ž’èXÓ¡õ÷¯|ý ëϬg¦×¿¾þìzjýM 8(ôŒTvdî.ì<Á˜ÍÓp÷5ýx¡Iê1ÌõÓKYåç ²„Õç‰Å܌׹g±O«ñîó—*>0|&® јºœß‚5§ª3 &‹ê©*y¹Jµ.1i ÛoÑ8Âú•¹Ø„ÊŽ¹Y.»¬&—Ü¥‚eΆŒªë`.%¢Ž…áòt¶%¶O ^·ÁŠDCÏL–Ú†<<LA©Ð÷¥n­»XÒ5ˆùò¾ÆFï­÷®é©(*¢ÚîÙ7X:µ®j§‰†+=Æ…ßʬ(Q,³Yø{W…ý~Ú,õhx”*iìŒä™ó±ãSpÞÖ*¬Èó?õ@µc Icã6fC¸ëÀ+¯Ö9 cb­Q2È,ÉƒŠœ–U³Û¬h,YUêöp"í*˜ª7Û7ˆF‘¡5¤Ø Ñ<Ë ˆg`X}}O^Ñõ M¢ÈZ1Å<)-þ~þ»šß»acc»³8S@¸ÍiRŸ{|Á‰ª3í(§óÛù¶¶†ýúFOc¤±«qS#ÓØØU|t#¸ßrDˆÍ– ˜DTÝöYYOd +´KÏ´ªIUå’T]éAÑUªÿ¹´¦™³Ø,&JMÇ–ª±T¢«-öbÒHë\U¡#õ„œÓw„¦ðýNÆ^+t¯-€¬ô’Φ*Ñqeó“Í+šKlŒÆä-`¹| ¡…à î—‡Õk,mÔ®ƒü3¿­ÿY\4jx‡Ä°"yæA–2ZÇk›äŠÔ‹é…ç>¬wã_d‘­¦ÈÏËÎÎ"ïíCfƒ$ òaÞâ}D9v€pR¹B–½^ù°ú¯Õ¨zŸwܰÁ‰Q…R ’a)_æ««_YýÖjjuÆ dx¤ˆeýЊ]Z½6¢EÚÙس Xú,Û-,g,,¬×µ(–n˰…‰ZNYŲ9Ø‘Âóï> ÂhP "¼ .=q~¹È.›ÌFHþ4–Gõ¹žœôÍÔíPkèLUËõþêC:z˜CÇt.ýqÀç2üuPŽ ,p0›Qÿw`9Éy )AžêÁÐ=÷”6gq£<ƒ8´ï®×<ÑuùäϘ]‡‹óþø?÷Þÿ£B_!î)`±jÅ»·!/¯¬~硼–؆½í¤" r¿ßÜäét=2ô¼•P\ÎÒo{hȈ,rß»ñ‹[ùü±Žê̽ÿÍ JÒ0,í4Y‚_ÕÛšÄ1È¿üªCCÁøÝ¡Ð†VC¾É"Š·ûжÛç[9Ÿ¼no¢äàÆZÎ&wôþ®¯ËEÅâŸËÅý`V ôýª+³ùWÞ=Ý{¦÷Ìì9µçÜž {8ïžè´g§¢ÂÓ}#¼ñÆ; _‚o|빺ŒÇÉ#{n,2¢ÝÞwMæ”ù"‘ ðë÷f‡¶ïÉ íÝzëõûo¾ùÁPÌÛɆB¶f÷nG,G¢"ËOq\œ«!¤šOFrÏ«RHíÖ£çÕ 6… i Yïóä¿.=–E*™©Kþ\Š$H#’/$d#•T˜Šåê£6>f‰˜–\9zP‰_¹Tm`^Ê@çŠ)‰O¥zÍ* ©T=P‰¬™ó1&§QýU•"g(±éˆÅg Æ˜ñçkÓ™kÓ«fnú¢Ó¶ñÃ:ë+2’ ;\¥BÕ²ðkGµd`$­ÁP7j„]OT z½S‹e™‘(žád½3©èVµ7ÜVn!YÇïîþþôº´É$Hù´„dëÂo®]øù•6ó³½zIC±sQëÂÁÀümZNâ%2ˆfi ;^ЭàÆÚ°Â5 §C2Ö:û>ÍùÛH™-hŒ`ðÊqrñ¿Å§AO»j·Æ°ŸÝ;¹MÆ*¶`ým%üfOk{•‚4äEÀÅß/þˆ+¤Á‹ð;/‚ûozÆóÔ“ÞÙÅ›”£Só>å±X®yî)ósÏ=õä¶m—µ{Ìííž{Ž»lê óÔÔ×4O™››§Vîò=>åaŸ|1£É0(”©JgVôU¡;3×gnE£™û»3}}ý詾'…c} d<íyôXõœš*»âÏÍðæ¯€ÛÞŽ¢·+·OãÆñÛ/ÜÎß>gp“¹ü㉯9°Ö[­k®ë­›¨›®;Z7SwªîLÝ…: à]$×ÁºYxDñGÊÒeãe‹eôe°¬ì©'=XÒ·µë{<=›zÆ{¾×ózÛ3 o|î̦s›Ð&rrå9lvÄ£"%~U˜ð¹?PÁ^§ZÂõ—‘ aœ¥Úrµ”œü·JZÅ)YͲ©^ØÜÜÿ%“þ¹ FápGO¿R°}×®ñÇŸ|rÛÊ•­>¯ØÓ^ì{üÑÇŸx4кreû®©©fµüü´îô!^ÆëÙð§—;3Q*ˆyàçªÌs©Ó2Ì Â üjùŽŸÔPÅlÕ1’”³Uç§ZîKˆ=B©ÈF ÒæBKé{`R·¥ÖÎ&¢¡?_yW#h\‡–Àb9j).‚ê ôPB9é/‡&¨kÈ&ì7æA4Âih–çÒ÷9WXŸ¤„² Íþ›…¦@Q¿…GœW›öVW㣬ÓÑrI­iͶÈÚBƒ¶ÌbÄj—×_ÝjåeÞà^íw˜ÛÎT"9·s-6=ªóz×ì5Jåêåy †¤5:ܵùLN*¥ÕÑZYjìÚ–yN«-Ú¨‰µuFÝá_Ø]?V,7vÓïÈF,Á´† 4¤E†ÕL3 ·´˜Ó“xcûóGªÌð íá'Ã!ÉC µµ<'°4§MÏÿf𕞀Š¡)žÇTÍs’ŽÑæ™|'VÛü›œ+þ ß]e޵¯ý\•¬’%Fg3cÀq›‘Ó¹ì®zö)gXã æ?ÿÃ…ŸO!X¼²OšGŽykÂ#p å;MfÏž|™D<÷-~;('Ð;H*‚øÅÉYÕ¥§A¯I­T’µhe­WKýA µ/ÂÍÀ!<™Rbê?,—Àª*óóõ°ûÒ%¥~GEé ¦!\R[®L gýJc¸"èRæ‘«iêÀlïÂï¨#ÌÝ•T*y"4B3Eá#ˆûݤ§^'õW“jõU„üÁÄRÈ‚d  Š÷ϧ70wÿ-ƒ¿3´ø!u9ýÐöo¸1º«fóÉ›ºo¼~õe¯¦‚÷AƒëºÞ•×ÙK®»nÃuÕØÞ}ø%%¾ Fÿã_`ðѶ¯<0óqÿ]{ñ¬üë©Å]°øyµJ КÅm˜çôÏ‚·1s]¹:¢Vöq– mÿÇGmÃs3´øýW¦äø“ò^Òèe™cµàËv­üÇ¿=þJMuî¶»S«Ö½ýÔ³ÿRå.¦͙Už+º÷eå&o5¸Œ-MéE.çÆÛ#‡0wTHŽƒkn}ã齡b©d­µðë›ý×WïÙ´¿$ûî’²úZ"®ƒÝK7dÚÜ¢™ÍK/Œöî¬õß¹í~²Nß=µ“Ï@tú%T;sÉcOJv0S¡«aø8Æ><¯gªL¶dwúnñS¥ÔýY[¹÷uŽå>CYY{È›ç„ýd1©2H’ÉÈææ¿G÷K($Ý𤼣Q´ Ù½ÚA7°–•:099°-I]v¡ž¼'ª_!Óc²è;þ¹ÇcK4ÙYLlƒ› åCak‚ÏQÛÖ”&²ìƒ»–õ-¿Ãk·Š†øÔuzÍæôÒ”’KÇ[Ò²ªÖooó†Šç[†ø £EÏ麶ŒÖág-ñçî›iúÎÞ'™t³ÍoLÌ­I÷ ­=Ûrªë3­é˜ýôî?ô®z¬h)™¹ /¿—ñ 0s—¡IOIF¿¬—ìó¦ôKéCés‰“Nk9›r˜ªÇs°1ŸÍ9ŸóIÎL—£)5êȇ3#‹Ù‚qëÜ'3+Î#L>9`5€ØH’Äœ•ÎKŸH3áɲ2ÄŸÁØ9g½.¾YM0†@=•»bKj»ˆgw«Ù½‹ƒöñ.²3'üqÝÜg3áÔÅ&óÓ«-êb°ò6Ì•”`¡ƒÃÈäí+ÏÉ-OKÌÏ-¿q½]´Ä„b ó•eÐÇZV“_•·¦ ^ËÌ+w-)l•ÿ=Øáؾ*rSJñ7qî–Jƒ<ö¼Ì&æ®ô=;/ï6We¢ËU >`vÍR6{‹×í¶7#ï&²ÜÔÜà]C–›šÅBo‰KÜDüç5à0ËÍ¢ÙûϸÓkg*³—·ç%»Öº¼®€kÔuÖuÞ¥qGá± q¡·} ý—ílû`tJbNIXšÂ=V-Z‰WiëXÞn9tñ«=ĵV—áé*åÇd.݇B>Àÿ¸îâźåóÖ®ˆþg³{}¨_]Y¡ºÖUÊëÉjòn&—n\!ª,v&vN#pŸµ£É¬ft9’Qý0;?KãÄÊyŒd¹$öab’&±æþƒ^dè[ãÜGL¬.‡/NlÅšóÏœÎLȪ½cýÒ¶.Œïž2$­é| #_Þ’Æb­˜ßQ ÚõÛrâÞ¥mMdð»¡i{Ckµ#óÑa»ƒãq†YçèS¾YT¸çkŸ¿vYuz^ ]ßð¨oÊg64ùß¹¥v‰E'€D0ŸÀñ…VŒåî+O'd%$%étfº0Ær:-ó6–EW4®_º‘­H{yÃFs ¥‡À»­E-ã-óÖˆ6o2]P”¼id ¤(•‘ëBuûêØ´Cå‡ Ú“¡C&AJÖ$Œ ǶS ûVêVÌ~;F: )o×ÀÇ£@¾‘ ] ¼± ¯GÊyWõ¼Åß+}¯hœtº%C“Ÿí°%=\„éWچܿa3Öö>Í$:wX dùcôv©$µÆÈ¶;R<_ÿ0AÖ2ºÊ߆G×l¼¹ Â’\·:Þ`…A0Åó‚^ÇÇYÊö_Y9Ñ–ZaõŒ-(0†'ÈËf³Ûx+’Q y̹œ•õ_¨¶ôÅ_ðT÷‡Êsn!cG%Œ}ÒÕ~Ó“ê±u<¸öj-mõ´N´rçZ±ÜÚÒÊ´*ºõâeåÍ4=2Ðít8ˆ¢ÝÕ1ûnš.>“OÔP‡CuÈ]tgM̾Î';^]±g'“,Óä„ÙOmIÊANtÞ˯žýŽ”¥ß‰ÒWdá³6mkž^é}ô¤ÿÝ“«‹8No̪ØtoÓúÙßXrkùøD0ðbr´ŠÎWtcÙD@WŠÈÆ:ΖûÏ]fÉâ‘à}mû£­†x +ÄmkÙx¸(%Ë¿+Ñ^óWÍ•j]UbiŠ&ÕÀ@ÿiy­†eRS´Úøm†5w7ÞÿÂIsSB¦UO¾´ÆÈ;ó>w–—P5ÚëIEœÈê…t9‡Í° BF†Mï­dmÞ%Z é©òDXÖ8#]†x9œE–=L bƘOþÌ=Ÿð«å& k,-y°„l°,q*‡^v¸œd§§ÛÝá +Btû¬Y}OÓ籃‚ãYk¢ÅVNfDFy‹¦ZÕ%¬rþ'ˆ:w<Çk}ák‡Ö•o;¸½úÀ¯#Ζôµ;Úå88V˜`JùÑc¾tèÆÆûNïn{(ø#îõ 7˜ì,3r»Yzð¡Ÿ_ù`Öi­îþUœ¬ùö N\âh?úþ×öúÑ»e¢–3)íyæÉ+;ŒËÿ€ì"ýÁ„gãdz¿0Òvù}MŽÒ¢BáýËïÏûŒþ[A~$†ß9óŸì´‘ó!ÚEŽ!Ço!gEkÙ#ÈÀzPƒà@9pŸÌ<ƒrÙ·Ðf ªaö¡õ@Ë‚tîÙ/Ï€tˆýežÍ<3Ó†w¢ð4º…9‚:Ùé™ßs­ä·Ìü;;úf‹6T íjnZÆ>ƒÒ+ÊZw鹑÷ 2uæ#H7ùDáÙv€&ÍüžßBqBë:òFê[Èõ÷4ÁóÃðläÖ‚š˜‹·àŸ1GØ>¶ã¹þ6a·æ´x¯¶Y—¤{R÷‰þTÜ›†·â_74EÌQK¢¥ÎÒ—P“˜›øÛ ¶7’Ò“~<˜R›š˜ú®ýgék3‘.Ê÷d†²˹7ç§9Ÿå~#OŸ'åý4ÿÉ%–BCáÃŽ"DŽ㋢ÃÅ·•Ä©=±$“ÞE&äDà.qK™ÿB,}êd–Îö×éÙ¾ÃH„;¬¦Ò 7TœEvê)GÈ‹èCçÁïúŠ @ŸQq b ) æ:ÅáÝ''à™ðŠ ”~?Å5”þÅEŠ—âd-í~MÅ12¬(8ƒâÙgQ»]Å9ˆó€Šó(™ý–Š @EÅ5èWìOT\D.îi×¢ î]×qUÜÿ¨¸õjKU<õkª¸AF{EÅãÑÍV%O²Šg[Bq=i‹­‚âq”ÞHñxŠ+õ'§™ÇÛn¦xàÛÅiœ[)n¥ù¤¸Ò¢x M«´ÑNãLR<Æù!Å%ŠŸ¡xÿÅ‹)þo•:JqšùíGéIñ'õGI©¾@4°×ß#÷ø¢>¹; úú£ò†àp0:òË›GCÁ¾°/Ô?Z$¯öÈe0ÙÃ¥²D®”iìˆöGüáÝþž’¹„k|aßPp¸ç)9‘}r4ìëñùÂ;å`ïõsßÓèî—‡|£r—2í D¢þ0Ô.0,wûÃQ„#á@¤'Ð ‡#%±RZý}#ƒ¾ðlÆÅ³åËê£Øýþp’Ê®’òÊíÿ¸Òh# ¢0B>4XÅäGh}0÷¬ E!F=p £öö9öUöÀKìIö;¨À¯@¬Ú 9ô€gCâ’T2ꆜÈï…i¬~ ÊhÐH Q ‡ …Œ6S,1Â*ñFQÐ×C’_rÃ9—[Á*Q Pë¡vƒÎå¡w~ýô·“HmJ®YâÚ´1HÛö] hzRë(}Ö1‡h¼@ ¢Þ¿ªî{€>ôNr…°‹¦$5í£¥Fi}ÞÐ0å¡*÷h„¶3qHn„Û¤&hßâ¶´Ò|G€7„~u‹¯Ñ~yQªÅÏo¤õ‰¨¥ÊÈE½«òªxÿ¿9ýç×i-Äë†+)?Gh ¯æÅÕù5Òç{h]úà~ð¢—ÖïŽå=)¹_åc,u/¤Tâ)ô.¸¨mUz- áÍs©"”#tdvQž­ªg ‡ÕÔ ÊÀç+SGàÂç½Rm²G-5 uôS}à§²ÓGùëá?Λ…ýÙO¥DéO¿ÚoJjk”’B´wwÓ>QÛFâGi¯ŽÒZ/.)#´dEJŠæåOÒSÊÕ|%¥)M¦¥úÕºŽªZªG­Ëʯ*S %ÆÓ ªÕdUÓ.î‘Õ´¾Ã´-ªSI+ˆ”öR®ÇäAéû(ÕÛ„s×—„kõ¾R—ùe‘g¸ï¦c•ôz%ø;±ZµÒyC=J}HºZµø<ÜwQS8ÑKµÎµäxmM¿Ê™ŽÑð¬üúöΛ©4‡…rC¤1Z…”ÛGñ¹‘ïSKèQu„Ž9ÿlþd<‡TNúè2¾£4uꬕ<åD€òSÑ¢ƒj}üêL¥”Û5¯N±þ¤RÚG[;JyáG·Ð2H¿Ei¾ä9)½ŸÞ‡ÀúvÂßúW¢ryN—”P9‚$þ”à„kâñÓ»Ú¡ÖN‰ëWs'±ÿúRæv"1ÊÚ†Ú²¹rÈïn~®X £…à›€JtßjªÝ }PÚàJÆÓ¼Uð·R7#ÒQøÓq¾–ÒaUfþ’9g®×ªÍ1¢Ž}e\ŒRÝ+“ðg÷¼YgDåAx^}”YihžnôQ™¨ÚKÉÝGká§s¥¢Óˆ$zÕÒˆ†Ü­Jo×ì|6§‡¯Ç™-1 ½ë£¹Ëµfaª»”NfBEž{ÕyäZü ªí Ò‘4—ËÜH¾º¼uf&ú¬‹ê„ùú3H[q’Sh«rÊOGÉÕRquÉsúh7Õ #pí¢cQ¦S{דÂý-@¤%Fæõü\_(ý´ÐæˆRýí£5 QÎÔ9þÏésY•ÅáY0W.™#{T[ŒÎÓ˜²ª¥çÇ$6Â0‰#”ã$ÿþÙö(õš/Ý1{Náÿœ_“¸kÉÐkÑœ|¬¥m¿ºç‡Iþ»€î§yÇZÓMCÅn^Ôa´Ø‰å¡6µäY+Å5šÓNïÇòSÆ$«»ÕÞ˜c±ü®îG…[J ¢T\Û#‹õ˜o¯{ÿ¢ÚÎqùêºÕ9½K½›_#¥=D‚–Îæ°ô=PkÀVª¦ì‘ú º¥H¦£±®ð·(£¼b±TƒÕZIm,÷lŽ«Õ6.nÇ|mÓôD"}ªu°x<…¨ð©©wS‰ ¨z#6.üÐNY¥ûÕ¶ÉѬ{æ\Tß¹™”´I¦×õª/> ×.ÊMEJGT gxv’a%£e¯ú,¢ÊU¿ZÏÞÙ9›¤i£+SË­WÍ#¢j7ÒΛh;#ê âÿRZH e–³!ªµ#Tä/²ç,¶ÅcÖ§Ž%Es“´dF‹Íæ$'Å2UôÒ|Mæ_n±n˜+Iñk»©ß X~UZÈh¡yÚÞÙª¢*MáUXÅ_67;=f9øU»m±…Mæ©ß©–³ÂIÅ/èQµAPµ0> ñ´†‘yÏcµ ùø¨&›KÕ£JQ·êIÅRPV´`\ù)bœÓ9(2;ëɪ¬úéÜw“:òÚ—Å?¿ªGæ4YŠTIE”J…â±È³vAÌÒ ¨Ö~L¯n¿OåA€¶PáòB>çé•´|u+%ì…¿à—¿ÞkøÓùÏ_±œÃ>^ëÙ{‹Òø¬eÒÕÌëä9Hçþy÷\WÆ5sk¸Z¸º”@ÆÊõrÙH­ b•‘Ö×=Lu&©ÅõÓÌá¬ú®Œxù×ø7Å8'ùÒSðb¨\:2ThÞ¤Ÿ¹“·”Kõ¦ˆÉ‡~–˜%–C˜ÏäÐ0grœDËœì!üâø ©k|= Òä}Òþíä¥ p—>éí ÍcL•¶G<ÒÙ®³¡³ãìù®ó¡óã쫌¿-”˜TüÎänI>…?E¥¿€ë'Ë¥ÿ˜ÂõÏ—K5r½×£i€s—8d‚ë„JaÑ®÷äcÓùŒçLË™}g.dŠLœ¹p†—Ï`ôžé½–÷.¼wé=žÕwÈ%=p`S½/ƒ–A~Ëãàê8GïîÀË<ë±|bìÄĉs'.àÑ Ó‰Òž-':OHEBðœ<e t §EpÕÄé ºÓtgé,ºóØçîdMõ)8JËD ÚWŒŒø#$8ê6ìÜ â=©½.U£Óxúô¹ÓN_:͡ӥ§‚1¯àß⟃u"át•KT=…-Ï·%¡ùÖ?œ =sÁc= Ù~Â%=Ѿ\ ´»¤š]í¯Ã½G aõÑöT©†ü|ÅŸ'ù{ò¥ê[ ÇšÐøj’•ÍS=_ÓE.Z4ngÆÆOŒOŸç;ÇCãûÆÇƹñvxN~ÌÈÏçµ÷H·TkíÆAfÍ )µã‰öéösíÚ/µó£CË4`¸P‡ß†~:Áã·AJ ж·=•i€D4iMz“AÖÊzÙ H§†Ñ…RµQp ;„;„ï ç…Aã6 FS"zQBL²Ä3€NJ <ÙRµÄ:é‘CRudgN‘7êhõj³èi’§pd²ÉÁô+AŸô*Aª$)M ,J`V‚8%Ð+ œ§ Â_L¼ð,ÀãÇŽ<pà~€ÛnØt´l¥ù(Ù÷(A§¤(A²$*Q tJÀ+ëɆðÀy€_œx à[w4¹ÌZ³v¬^‡Ÿ@áG鵎^fì4ckÆÒŒ}E3¶O3Ö­Û¡»I“#f‰²˜!¦‰©b²hE‹hãÅ8Q'Š¢ r"#"áæ‰énÔÜ%O|Ú– U»aÛŸÝ€',ͨysC2žH`›™æ¶†‰G3ôbëDµ£yBÛÒ¾õ9Œïóu‚98…Ñæ­ÐdBºË>aY¹õ%¢ð]÷ÚI8v×½^¯Íqõ¿äù7¸¹eô%¹/j¤w4R¯hÍm@#¤±w4c””Œ'ÁgnöÝәޮÊ_£ÅQVÚ ¬­Ï‰¨Á»òf%|žÑë ÖöLoƒÍZA›°,3ùvûIá§ÞáˆËn˜0GÅõÅõä ò(ÈFõQòíË2í'ñSê#ÍÀOq8ЭŠRœÞ`‚ãHÔáØÙ®Öp$:‹_¿‘ht„#ÑÈć 2B2s &4Šã(š`WõO1I«ú'<÷tNÈÙBHV YÙÀµhTáÝsžñU0¿¬º.ÙóK„!ú¿\Û endstream endobj 28 0 obj 24266 endobj 29 0 obj << /Type /FontDescriptor /FontName /BAAAAA+Garamond /Flags 6 /FontBBox [ -138 -306 1062 987 ] /ItalicAngle 0 /Ascent 861 /Descent 263 /CapHeight 986 /StemV 80 /FontFile2 27 0 R >> endobj 30 0 obj << /Length 494 /Filter /FlateDecode >> stream xœ]”ËŽ›@E÷HüC/'‹t±d!yì±äEŠ'€¡í Å€Úxá¿ÜÛ3в1:MUunÉö°;ôÝd’~hŽn2ç®o½» wß8sr—®#+¦íšéñh®õGÉœ|Ü&w=ôçÁ¬×qdLòs¸Mþaž6ípr_°øÝ·ÎwýÅ<ýÚ¹t¼ãwuýdÒ8ª*ÓºóRók=~«¯Î$H>´sD7=žçÄBÞ£3ÂËÞš¡u·±nœ¯û‹‹£ušVf½ßWqäúöÿ·EÈ:›ßµ_¢í¦™­@¡%ä€ PòMP0l ( {À ¡¬ÜgCØ^YšÕ¶ì97}ã› °g(`SVCŽ¥O¹Ð'GŽ >/ú £O S|ÞôÉ6ú|,}„aÁ§} v@Ÿ’è£8|pˆB…ÐGqBE5¡¢k ÷ƒjBŸ }JhKð!„ûyÐ'côÉØ}2îCŸ BÅé}W/ôQ„iðÁ+}r„)}r|ЛÒG¡ ô)°Ò'Go|pºøHj¡ +þ!JÅe)}”9Á‡½Ñ'SÎÎÇŒ,c„ÉÿÒæîý<Ÿø@`.—‰ìz÷ù‡yáç/Ô-ÿBendstream endobj 31 0 obj << /Type /Font /Subtype /TrueType /BaseFont /BAAAAA+Garamond /FirstChar 0 /LastChar 61 /Widths [ 750 677 416 416 364 250 229 510 447 406 770 510 333 479 291 312 510 416 614 510 229 489 510 333 177 218 322 468 500 666 468 218 468 468 468 468 489 562 458 760 468 572 614 656 885 218 500 468 468 500 666 468 468 229 625 354 447 447 666 468 562 635 ] /FontDescriptor 29 0 R /ToUnicode 30 0 R >> endobj 32 0 obj << /F1 31 0 R /F2 26 0 R >> endobj 33 0 obj << /Im18 18 0 R /Im17 17 0 R /Im12 12 0 R /Im11 11 0 R /Im6 6 0 R /Im5 5 0 R >> endobj 34 0 obj << /Font 32 0 R /XObject 33 0 R /ProcSet [ /PDF /ImageC /ImageI ] >> endobj 35 0 obj << /Type /Page /Parent 21 0 R /Resources 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 1 0 R >> endobj 36 0 obj << /Type /Page /Parent 21 0 R /Resources 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 3 0 R >> endobj 37 0 obj << /Type /Page /Parent 21 0 R /Resources 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 9 0 R >> endobj 38 0 obj << /Type /Page /Parent 21 0 R /Resources 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 15 0 R >> endobj 21 0 obj << /Type /Pages /Resources 34 0 R /MediaBox [ 0 0 595 842 ] /Kids [ 35 0 R 36 0 R 37 0 R 38 0 R ] /Count 4 >> endobj 39 0 obj << /Type /Catalog /Pages 21 0 R >> endobj 40 0 obj << /Author /Creator /Producer /CreationDate (D:20050711234932-04'00') >> endobj xref 0 41 0000000000 65535 f 0000000017 00000 n 0000003871 00000 n 0000003898 00000 n 0000004357 00000 n 0000017867 00000 n 0000004383 00000 n 0000017841 00000 n 0000024136 00000 n 0000024161 00000 n 0000024929 00000 n 0000029865 00000 n 0000024956 00000 n 0000029839 00000 n 0000040783 00000 n 0000040809 00000 n 0000041412 00000 n 0000045530 00000 n 0000041439 00000 n 0000045504 00000 n 0000051077 00000 n 0000086423 00000 n 0000051103 00000 n 0000059062 00000 n 0000059088 00000 n 0000059331 00000 n 0000059679 00000 n 0000059914 00000 n 0000084288 00000 n 0000084315 00000 n 0000084553 00000 n 0000085130 00000 n 0000085613 00000 n 0000085670 00000 n 0000085795 00000 n 0000085898 00000 n 0000086029 00000 n 0000086160 00000 n 0000086291 00000 n 0000086619 00000 n 0000086680 00000 n trailer << /Size 41 /Root 39 0 R /Info 40 0 R >> startxref 86939 %%EOF apache-jmeter-2.8/xdocs/usermanual/build-web-test-plan.xml0000644000175000017500000002463412032647214023227 0ustar ebourgebourg ]> User's Manual: Building a Web Test Plan

In this section, you will learn how to create a basic Test Plan to test a Web site. You will create five users that send requests to two pages on the JMeter Web site. Also, you will tell the users to run their tests twice. So, the total number of requests is (5 users) x (2 requests) x (repeat 2 times) = 20 HTTP requests. To construct the Test Plan, you will use the following elements: Thread Group, , , and .

For a more advanced Test Plan, see Building an Advanced Web Test Plan.

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Next, you need to modify the default properties. Select the Thread Group element in the tree, if you have not already selected it. You should now see the Thread Group Control Panel in the right section of the JMeter window (see Figure §-num;.1 below)

Figure §-num;.1. Thread Group with Default Values

Start by providing a more descriptive name for our Thread Group. In the name field, enter JMeter Users.

Next, increase the number of users (called threads) to 5.

In the next field, the Ramp-Up Period, leave the the default value of 1 seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will finish starting all of your users by the end of the 5 seconds. So, if we have 5 users and a 5 second Ramp-Up Period, then the delay between starting users would be 1 second (5 users / 5 seconds = 1 user per second). If you set the value to 0, then JMeter will immediately start all of your users.

Finally enter a value of 2 in the Loop Count field. This property tells JMeter how many times to repeat your test. If you enter a loop count value of 1, then JMeter will run your test only once. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.

In most applications, you have to manually accept changes you make in a Control Panel. However, in JMeter, the Control Panel automatically accepts your changes as you make them. If you change the name of an element, the tree will be updated with the new text after you leave the Control Panel (for example, when selecting another tree element).

See Figure §-num;.2 for the completed JMeter Users Thread Group.

Figure §-num;.2. JMeter Users Thread Group

Now that we have defined our users, it is time to define the tasks that they will be performing. In this section, you will specify the default settings for your HTTP requests. And then, in section §-num;.3, you will add HTTP Request elements which use some of the default settings you specified here.

Begin by selecting the JMeter Users (Thread Group) element. Click your right mouse button to get the Add menu, and then select Add --> Config Element --> HTTP Request Defaults. Then, select this new element to view its Control Panel (see Figure §-num;.3).

Figure §-num;.3. HTTP Request Defaults

Like most JMeter elements, the Control Panel has a name field that you can modify. In this example, leave this field with the default value.

Skip to the next field, which is the Web Server's Server Name/IP. For the Test Plan that you are building, all HTTP requests will be sent to the same Web server, jmeter.apache.org. Enter this domain name into the field. This is the only field that we will specify a default, so leave the remaining fields with their default values.

The HTTP Request Defaults element does not tell JMeter to send an HTTP request. It simply defines the default values that the HTTP Request elements use.

See Figure §-num;.4 for the completed HTTP Request Defaults element

Figure §-num;.4. HTTP Defaults for our Test Plan

Nearly all web testing should use cookie support, unless your application specifically doesn't use cookies. To add cookie support, simply add an to each Thread Group in your test plan. This will ensure that each thread gets its own cookies, but shared across all objects.

To add the , simply select the Thread Group, and choose Add --> Config Element --> HTTP Cookie Manager, either from the Edit Menu, or from the right-click pop-up menu.

In our Test Plan, we need to make two HTTP requests. The first one is for the JMeter home page (http://jmeter.apache.org/), and the second one is for the Changes page (http://jmeter.apache.org/changes.html).

JMeter sends requests in the order that they appear in the tree.

Start by adding the first to the JMeter Users element (Add --> Sampler --> HTTP Request). Then, select the HTTP Request element in the tree and edit the following properties (see Figure §-num;.5):

  1. Change the Name field to "Home Page".
  2. Set the Path field to "/". Remember that you do not have to set the Server Name field because you already specified this value in the HTTP Request Defaults element.

Figure §-num;.5. HTTP Request for JMeter Home Page

Next, add the second HTTP Request and edit the following properties (see Figure §-num;.6:

  1. Change the Name field to "Changes".
  2. Set the Path field to "/changes.html".

Figure §-num;.6. HTTP Request for JMeter Changes Page

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your HTTP requests in a file and presenting a visual model of the data.

Select the JMeter Users element and add a listener (Add --> Listener --> Graph Results). Next, you need to specify a directory and filename of the output file. You can either type it into the filename field, or select the Browse button and browse to a directory and then enter a filename.

Figure §-num;.7. Graph Results Listener

It's not the case here, but some web-sites require you to login before permitting you to perform certain actions. In a web-browser, the login will be shown as a form for the user name and password, and a button to submit the form. The button generates a POST request, passing the values of the form items as parameters.

To do this in JMeter, add an HTTP Request, and set the method to POST. You'll need to know the names of the fields used by the form, and the target page. These can be found out by inspecting the code of the login page. [If this is difficult to do, you can use the JMeter Proxy Recorder to record the login sequence.] Set the path to the target of the submit button. Click the Add button twice and enter the username and password details. Sometimes the login form contains additional hidden fields. These will need to be added as well.

Figure §-num;.8. Sample HTTP login request
apache-jmeter-2.8/xdocs/usermanual/hints_and_tips.xml0000644000175000017500000001106312032647214022446 0ustar ebourgebourg ]> User's Manual: Hints and Tips

This section is a collection of various hints and tips that have been suggested by various questions on the JMeter User list. If you don't find what you are looking for here, please check the JMeter Wiki. Also, try search the JMeter User list; someone may well have already provided a solution.

JMeter variables have thread scope. This is deliberate, so that threads can act indepently. However sometimes there is a need to pass variables between different threads, in the same or different Thread Groups.

One way to do this is to use a property instead. Properties are shared between all JMeter threads, so if one thread sets a property, another thread can read the updated value.

If there is a lot of information that needs to be passed between threads, then consider using a file. For example you could use the Save Responses to a file listener or perhaps a BeanShell PostProcessor in one thread, and read the file using the HTTP Sampler "file:" protocol, and extract the information using a PostProcessor or BeanShell element.

If you can derive the data before starting the test, then it may well be better to store it in a file, read it using CSV Dataset.

Most test elements include debug logging. If running a test plan from the GUI, select the test element and use the Help Menu to enable or disable logging. The Help Menu also has an option to display the GUI and test element class names. You can use these to determine the correct property setting to change the logging level.

It is sometimes very useful to see Log messages to debug dynamic scripting languages like BeanShell or groovy used in JMeter. Since 2.6, you can view log messages directly in JMeter GUI, to do so, use menu Options > Log Viewer, a log console will appear at the bottom of the interface. Note that log messages are cleared each time you disable this option. By default this log console is disabled, you can enable it by changing in jmeter.properties:

  • jmeter.loggerpanel.display=true

It is sometimes hard to find in a Test Plan tree and elements using a variable or containing a certain URL or parameter. A new feature is now available since 2.6, you can access it in Menu Search. It provides search with following options:

  • Case Sensitive : Makes search case sensitive
  • Regexp : Is text to search a regexp, if so Regexp will be searched in Tree of components, example "\btest\b" will match any component that contains test in searchable elements of the component

Figure 1 - Search raw text in TreeView
Figure 2 - Result in TreeView
Figure 3 - Search Regexp in TreeView (in this example we search whole word)
Figure 4 - Result in TreeView
apache-jmeter-2.8/xdocs/usermanual/junitsampler_tutorial.sxw0000644000175000017500000006415312032647214024131 0ustar ebourgebourgPKY86á¥19mimetypeapplication/vnd.sun.xml.writerPKY86Configurations2/statusbar/PKY86'Configurations2/accelerator/current.xmlPKPKY86Configurations2/floater/PKY86Configurations2/popupmenu/PKY86Configurations2/progressbar/PKY86Configurations2/menubar/PKY86Configurations2/toolbar/PKY86Configurations2/images/Bitmaps/PKY86ˆ Ã¥&¥&-Pictures/1000000000000170000001D151291B74.png‰PNG  IHDRpÑü;u#sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<&#IDATx^ííºä&wov¯6÷´Ûçe‰$„Àò¦æGž‰–¡Œª…û þï¿þúë¿ø@ …ÀO(ü Bà¿R¢€ÀŸå d@(Y$‰P¡0 <T(y,‰í ”í§ G¡ä±$¶'€P¶Ÿ€@„’Ç’HØžBÙ~ yJK"A`{eû)ä@(y,‰í åø'ηúï5ÉÖqM[´,‘EËÖ¿«~óíkåÍ}¦o8IàEBq4älÔprüWêE ,!ð°P‚u™ŸÅ2€ó/ŠP^xSèÒ .JI­ºÊ(3ª ñµ•c™úGþÂM_®V”NõJð;»abq‰= Ü$½fOaÌÌÔÞÑMm'ˆ¹hj= ÒOvê‹úcÙsž1êMÜ'Ó~¥ Nq¤ðkiZ@” Îÿ¶_ݰÝqm2“&þ¤á(…ˆâ ŠH´"‹Hã¬A‚Ênê–6ær¬µF¥M{¬E`%¡è‚Å\éåIë™HdÉ)‹ôㄲVÐÛ,¡Œ¦¢NÑx' [Aô“K¼‘þëKD–uÈ7 ¥ä­ø(ÖŸÌõò$þùßji>žh4ûVGöGÑ*ºaÍþP¡¼yÒÓ·ëô—<ºæï.4ü¡õÜDÎG„¢¯åk®UM8Ãl=»™{¼rݽ$2'ÐJ]tÔÙ«?ÒLÖ2«3B逳ÖhÕ¦ût@a™È KÔ>ñS¿åt× åºË?™%ÉSä¹î· ”oß_F[ ”[qs1|›À¦BùöMetxŠByŠ<×…À ”ÞT†§ ”§Ès]|BùàMeHxŠByŠ<×…À ¼W(ÿÃ@`5¯ÊÿòXŠBYêvÑY¼›By÷ý¡wXŠBYêvÑY¼›By÷ý¡wXŠ@hǶòíÖÿêÿ÷x[ü]ý8RþRè#õ¹þ‰bŸ¤ûoŸßùûûÃ!0M $±yâ=ßž' ÅñΨ›¦A;'"”+¨óóBií¥øÓMk“Çò#§A±ÕœPŽä<â ”›Å‹)Ö)å*ºb×=)}«‹&Ýæ‘©ÀE!pž@T(G‘RDPjq°n þÞMk5-½ÀZ+™Í˜Á–õMkÎ\Á¿¯D€À#BB9\ Œ ËVݡ͢CéeÔ´Pt­á ¥.µÌ„2BÜ2Á@L . 9B)‰w$°1KÊ|(s›PZ‰mЦ[b赌XÑèeTsî.r^B *”º‰,^Ìj¥µºq„ÒM`ñÃo¯SWiU(­',Î3”®&œºé%“ƒn@`”ÀcB1×AµYŽ ¥»‰´‰?Cé^N Zgñ%B¬´?¡˜…I½xé>C™û–G¯J‹ÕDK.¦tqa–æ%Ž€Â>­ƒº2AïŸ+ô]ü¦lQ³AwQ3š3!°&„2ßÊ<;Îü(„òÑ˰ ðW å÷Ìeµ «è/¶&ð^¡ülò„a¹& 0OàÕB¹ç_!r@ ‹BÉ"I@à/„Â$€Ò ”4”‚ sH#€P:(·þÁC`Bé eþ;4΄Àf BÙlÊ3Ü+ „råü"öf BÙlÊ3Ü+ „råü"öfB,•-Ž~ý~ihÛǹàæ&Ob·§ÑÈ¥½ÞÚv³Âp!0@ $”’]v˜8%žüNðî“Á« ”ÙDÓí Ì Å,[ôA_HaÓN}¤…""´ú£{ÕrBÙ>G0@`R(õÚDZÀ¯ hýTW=ÚõéâïÇé]¡8‚% B˜M4ÝžÀ¤Pê|ö3³[_}äèÆâ—HfØz5„P¶Ï  ÅYÝ´jQ€Ô9/Š‹ˆPZVš«PD4ÿ)B˜M4Ýž@H(úù¥ù±of¦ï gMt¬ªülŸŠBÙ> Fà*¡Dê¿TÑBqôÑ}"£Ÿ¹ð %mÿ!0)”R;ˆµŒ^›ø0ÌÓÍ'©~ù㥠…t€@á_T þúÆD³£$i}}30åž¡dM5âì@àEBUOŠÎA(;¤cÌ"ð.¡œÏÿô%kªg¥£ ŸP~-·­¢96%€Pú5Í,Œ)J_(´€‚JÍ >„ÒgD @ H¡AÑ è@(}F´€‚JÍ >„ÒgD @ H¡AÑ è@(}F´€‚BBñ7%^‰f€Àç ô…ßœíó°  à˜Ü`I[FlSälC1”Sµvlú“JŠég œй+RWbûE±Û£³n©Ï*'·w|=W‡À÷œÊAD”bcGѦ†/7ü­$Kêk}ïn1"¼œ@‚PÌr`tÉÓ2‚\¸£¾¢¿MìËo ݃ÀºÎ Å)1êÊEW%bÁR %¾bjµîý çXšÀÙoyâÉEË! -}Ÿè<– Њ~Db.OÄs“”%O³û ¥ÛÏ%î„ÀÒBBYz„t¸B¹ 5‚À÷ ”ïßcFÛ ”ÛPs!|ŸBùþ=f„¸B¹ 5‚À÷ ”ïßcFÛ ”ÛPs!|Ÿ@G(›¾ •aCSúBIyã)A „„òýBBJEb@@(L@ BICI @¡0 4% % g„¢wKªwº¯ïŠÞVì{ÿ-<¿y­¬¹ÕýãâŠ8Oàa¡tw“n åy÷ôó€Z¦/-Nô7å½®ÿD†ÀÆ„"f¿Îê¡uãÖ§fñ·ÅÝ4_Œh(ù#cm+E¢Õ½Ü³Š˜Û˜Š³Û«i™V¢vwŠõ+”ºH1Cé~Ë !šú ø{½› "BÑë”ÖSŽæÊN«u¤Uïì0ãKŒ ¥dš^# •Ý¡ÐÑIòf¡´njÑJ°BqÖVæ-xÉd¢x©P´qº Dõ4ä;³±³Ö îT:Ë7_=ÌoÜLà”PD"Õžuú9e¿™]þ⥎ÖJòQû船¬0—$¢˜êŽhZ¦&Ùb~ó4ârø'‰|¿=V~›8l‹g›O†'0\¡ÄC eýìãÃa¸šB¹š0ñ!°„²ÑÍf¨¸šB¹š0ñ!°„²ÑÍf¨¸š@_(¿Lí§ÏI€Àvú/úÚaïÆ¤è åê‰ø€Àg ”ÏÜJç ”çï=€Àg ”ÏÜJç ”çï=€Àg ”ÏÜÊ?Ùî[Jü2åkBIùò ˜#€PÊÜÌá, B!1 F¡ ”´ÉD  „B@ @H(æV¦'Ql;m:HkcÚVÀ3»@ÆÏ=ßòز“?xŠ@_(Wì«ÏG4ÓAZûÎOôm{¾%By*‘¸îA #gŠOïe/N4ÿ÷HQsëù£ˆh]Ý9¥¤½9¨`¯Ìýôë®êà-†Ó™Zg…Ä~–À)¡ˆ´¯·t6Ï?Ø’ˆiTeµÒÊy!?óý*¦–š¶Ié‰QÝ-¸9€åÙâê5I¡˜ë ç “c­Ôõ?ö[–éžU'yÀNÀV̈jB×Y£TõR‹ …ô~–ÀåBq–'æx7©Ì•Kü¬: ƒ«­‹„¢}äÙ¬_„SʳéÄÕïŠ( ‚µ@·Ö0Ó¯{–þTÓ+¸V…Ò5 ¿pk=—A(¤ô³&¿å™Ë‡‰ÔO+ºÅBD(þó¿nò.ÖPþ3”ÖCŸÖšÈÐʳéÄÕûB1×,C ±²i¦?lït¸´ÊQ˜Ô]ªŸï´ê‚® ‚B\KxÄ\ȘÌ ¡ÒÏ E/8"žÅ˜Ovî§„PžM'®ŽPr²Þ¬ÂrBDA(¤ô³ÊH¾¾¾-By6¸:By½$F:øʯùË6ñ¢;@(#ùºB[>$!ð „²‚$è#!€P¹Qt+@(+Ü%úE ”EnÝ„À Ê w‰>B`e‘E7!°„²Â]¢X„BYäFÑM¬@¡¬p—è#!Ú`éÌ¿|«78˜èMCÌmD@½{ÈáÖŽDCAh øBÊt6š'N%²Hgœ‡`6@—åXk$ V]#Žëf~$³K¥,º%Á!¡˜õB÷`aôEmü(7ÄñzI¥O§BaºCàjÉBIë,yŽ„¯ÿk:Â9èGë¡\=™ˆy¡t—*­…F½fi ŬbD‚P˜¾xy¡´FR?síV(úˆJ«îè.¸Ì°o»ô«8+ói빩ùŒC,j†Ô¼zí¸Õoý‡À› Ì¥” æW*­ïY ÿIªÜy2¢—`­5Ñ›ï}ƒÀÒBBYz„t¸B¹ 5‚À÷ ”ïßcFÛ ”ÛPs!|ŸBùþ=f„¸B¹ 5‚À÷ ”ïßcFÛ ”ÛPs!|Ÿ@G(½”•¡B§ ô…òà{R¹4 °P¾_¨1B@ ƒBÉ H @ào…‰¤@(i(  æ F¡¤¡$ 0,”¹­žËYzó´ÈvjâôÑÛ&6v3·bI{@@ÊÜάzWÇÚJ]¡˜›BÝËÖ–”sú4!°¡èvg×E³(øó­RõGÿo·¯†Öî“¡DÆrÌ œ­2„ÁJÉ¥:¯Ä߃[LûºéÆ< oZ} qJý¿ºbj ö|¹4t{h µ\"ñœ¥e™#iEbëÇ%­6ëŽøÁ–_L•›Ú] ­uûé-r œJd4*sYt¾,«•îú¨µºaÉ“;‰ö%g…ÒbQ’;ë §BEA¢PtŸý…ŒY•Pª|) K¡Äþ£à#˜îC½ŒÒ]j‚ñëò %kæç“Æ„b>ª4×ÁE«îž.¸tÏ ´SDÝa®nXò|2T a¡¤\• €À' ”OÞVg ”g¸sU|’BùämePx†By†;W…À' ”OÞVgô…òë×é½õ lA ÿ¢¯µvñ§·€ÀƒúBy¦r⪀À‚Ê‚7.Cà­Ê[ï ý‚À‚Ê‚7.Cà­Ê[ï ý‚À‚ÊM7m‹ï äöÊ}ByðË<. { „rÏLã*[@(e‹‰Î ï!€PÊ=3«lA¡ ”-&:ƒ¼‡@_(õªe×›²°w½õük7£ÿ=þÿÝQóøß¡;=Ú~(xJcgPïï| ƒt„ÒÚö¹—é7ý|9¡”©6ZÓ'Þ3Ëýî½¼ó÷ úöUÆ„R<Ñz›D|›ø“-žˆ :æÉ«8§—«›=ÑB=*G(åZ¢Yýo¶© 3~ƺ|hÉ?Ú=qÑ£cåÛ6ùs‹ýZÂÌ(3—î<(¼Vìfú¥NøÑNjêkµb °¾PºéW蜜8WG3ãŸ9ØíÕçSkÏN>C1+”ú YËøNÑAŠæA3ÏÄ®ÓÛéäÑR‹IëuZR¹BñK=wƒù<¡'ÕwОùöùQ÷…â,.œÿˆPtùcD­*I¸£%”3Wõˆ_à8ýüØ­PêÓë¤=ŽwÓØi¬nʪ$Ø©4Úçl·F…2ºpˆ¥µÚŠ—*"á Å)=Z¥J· Óºi("æ9R0ÍóÙ¯PÌ.éSê‡#T(»DŒ7ô åÌ£„¹´4sµe Ίp¢“µõÌÓs—<Á*C7«+ó§âqi×DAeÔÍ‚6Ü<¿1ü~…RÀGÆv«‘ùuýØBÇŒœ.úPÖ;æª$°ÛÉÒOÇMZye¼)ßò”U†üXøOïEµrd²p„(1jãˆUŽfžk:¨î*Bù†,"£è Å)ã7ü‘©Ô!”Ƚ¡ –#€P"6øW³–éFA(Ëåž €Pº*Èi€P&f'§,G¡äø¢å'”ã»þ@àÃJWi –û´¡Ã%€PÒ|A @¡0 4% % „Â€Ò ”4”‚J|øK>†\%$”Ñ/Ïh= „²çÌgÔ—@(å’‰EÐ= „²çÌgÔ—@(å’‰EÐ= ô…ÒÚ`©Ÿˆwµ˜ØOÀÙ I÷:ko¤ß +]Ýs¶1êϘÜò.Wô¯S«!®‰xË_j¡˜û›•YÜñ0ËççÜÀ˜PJ~·Ò¸»‘¢ˆ0½9ãÇñ‚Óqb·À)BÑ;* 5 ” Sˆ!×BBÑyk 嶃¦×D1Söj,½9D œî0¨PH*&Ÿ¡tÝáç¼sz½ikIxq°+”n÷´eœz¡-è ¥^\øyh.@œƒz­_1ùKžQ¡ø«„œL4ƒ@T("»¯Pôs×’Þõœƒ­Ó} y Ð3m‡øóˆ®zâUO· †ªÝÄ3”àD¡"úJ½¨Ÿe8Ù+2?¾‰·4‹Ý=³'ÓßòüóØI}ã[ºý¯ÇÝÿ9Ú=¹O´ÀúBéÿ*È×[ðŒ%¦2|„Ò×!ByÃL¥K@(e‰‰J'× €PBB9~Ÿ?€€O¡ô…òk±Æ§½„ÀÓJH(4‚"J„m „ÂD#@ B¡D(Ñ@(!L4‚"J„R§ _%B„’#”§¿­ãúx„‚P^1éÄ7 „ò™Ì(^A¡ ”WLD:ñ ¡|c&3ŠWíØfn¿X'¢¹ÙÒÉLÕívãä§O?ö7;Qÿ;t“ÍöNœÒ>~¡xË¡žÓPâ™fîÒ?]KÊÜ„m.àugu_-œm:ÛƒùlvX/ØšA`‚ÀŒPôFºB©Í"~ªdjH\¥uQs“Ç“ê vòTW(¥óõu›Hƒ>*M8×B(Â)C†…¢K†:ý´YÌŸyhJ§Ô¾Pa‰à­–âBºŸÇHýNF„Råï݃Â~û`Øc,CóƒÆ"JÉm?Û[î0-ÓÍÕú¬£q0~­¼rŠ8XK'.AQø'ß³Qn˜Îv3ÿµ>‚B¡BÊ O E<}ÐèéV(¢1 ‡–Pô¹f4ç`\RÚªq¡Ô¨õ!J_(:ˆi§B™ÈN"0,”úS:b–®P„­Z+§BÑÌä¯ú£púlö6^¡˜÷Ƭ/Î/yÌÂÇ,y†f !à¸\(­4ZòLT@ qŠP˜èpm–¸Pâk“–Pê¢ÆYûÔÅHÝ ¡ ƒK ¥~*1šçu]`>Ũ³TâQ«èFëáŽs•zip¸Ã_þèΗmâ'”ö삨PrtÈ ÀCÙ›øç{R@@È"À’'‹$q ¿ “H#€PÒPØ](|Ï$@(¶ƒå B¡ ””‰Dü!€P ™4¡¤M&A¡ ²iB,™;*Öߙۣ¥|…6±Ÿ€³’îRý…ƒÛ ýY(Z&ÇÓî ° PâjJænX±i[½’sîPŠPjÄ7jg!”S€.g˜Š®†ö‚Ôš0àxÁ,[Ì*©[àd åP BÉœ›ÄZÀ°PÌ}‡„RŠ ¿ñ…òÏ?mü»Ñïï¢â`Ý@”6YB9n=BY0èr&PÊç¼pãSÂsBéFvJçÊù%BÉœ˜ÄZ“@H("#é¦}©Z«’V…Ò¬«-Ä2"*”5ç-½~)a¡øùìWN…¢k‡,¡ø~ÊK'&ÝZ“ÀåB©«ƒ¡%xðTUër-=!”5ç-½~)a¡è¥Š~&ê?1Õ¿Àâ?í>Ái]NtÕ,Uø=”—NLºµ&~S–ß”]sæÒëW@(å•“N­I¡ ”5g.½~%„Â;º÷ë"ÔîvÊïIí+EO§ °$„Òý'Š4€¢J”í .„ÒED@ J¡DIÑè@(]D4€¢J”Ôîß2~ ”¡,ù=†À B¹qºq©¯@(åësœñÝH¡ ”§—ú:„‚P¾>ÇßB,µ¶}æb»³yÒùà¹ê­˜~7hÑ îãÝŽ·¼qº&_j‡1&#ë… %73ëh‹ 嘈+NÇxŸã-{sì½?ßaŒ7ÓŸŠ(Xtý9rhe"”>Ë Õ=Xâ8-k÷‰Í"…PŠbÌ9Z,oR˜SAŸ<±œ^_ñ^ÿHt¸4h ¤ŽPºW։߱²î¹yħ:=Æ›3ðc—›JI¶c6ˆº£ÎR‘ºf…rD0ýâ„*—®ûPÔ§Ô×uYW(ÂõDiM}}J³Y«víBI×MH("µDê:ÿ+Êý,¦nЊÐÙÄ’'.©r-ÝÕú…u—œÉÏ™:Ïuð`žø½Ò¹=1Šø)]‡ÆáhÂq¡Ä;œžZ{|‘P´}ZE‡(=Ì5”ùˆ$rP«ä82ñŸxΘ…C}º™ŸþGº_+™έ«´R:bº¡N:NVLþ½Ø3ù¯õ2B1‹3ëb¤6WËb‡PZÓ:˜ŠGðølÝRT1ÎjB_Â9b&|ÝÏ -¶D·ØÐºTãc¼"ǶŠJ]7úMÌÇ݇²å,ýXT\º?²ú…ê>:qj¢3B9&ô‘$¾PJK§Y‰#ò³°ªg°PƒÈ=-ÝO­eÏnL¡è!WšÍÑ™¸º‘[ýÙJ¹ƒÝî7e‹VÍ™«ñ‹m¹·a(i0„‹ÆwØN(­Z¦õè¤G(wÎK®µ(…ÒuÇË+”E§ÝÞB‰êåW¡ßõðh@(Q¡üÚíð Ã!p†B M!ŸBa†@iJJA…9¤@(i( l!¾äƒî!°‹PÎ|ƹ€@B ‚¢ Ð'€PúŒh ” (šA}¥Ïˆ€@ÀÌKéß™»(u~Ã÷ïs‚=Ö·vêîôcjnbdM3|ž@H(Á¼kVo’æl˜&‚Ç[ÿDø¸‘æVc'~~Š0@Ä ÌEº¾ˆ9áxÁ,[J{­!'B‰OZBà y¡”’AgrYŒ˜ù_×¾P„tD´ã*‘¡œ™"œ 8PÌ’¤%3Ã[âˆwª’i¡ÔQÊ’gî`œ5-!ðy!¡øÏ/„й>*ÝÖeõó”C+âyJðàçg „@ÀG„â?6÷—®ÝQ`<„N3|•ÀÃBi­Yü2§Ô#ÓKžºUÉè÷A_Œ BBz†R’<ò¸´~ìj.Z멹oyÔÏJŠ>ΜàÎ)ø$èï†ÍýŽÉKÎzÏ+u>9‡þÿ¡ÁKrþÒn f<î!@…rg®-ì"”ãðù\J` ¡ül²Å§ƒ„ÀÓvÊ¥Ïhüó- d BÉ"I@à/„Â$€Ò ”4”‚ sH#€PÒP@(Ì@ BICI @¡0 4% % ¡DþM@! Œ Åÿ—G?Ž¿;ÓdìØœÀ°P^Ç>FuƒzïÈã5:é΄5_Ð1ÑÃÒçaýSÌ7œ¡q\î†[–Ž‚€ï!0äÚb-¡Ô35wäfRÅ/‘"gëÜ“ÝJÊåâ;Ç9Ór÷ ¥|úéOB»•çæ^Ù­êzgüÖ}¡ˆË™A‚ÛwwÍ¥¯åC0Eeán]¨{9çårâ“£;ê}ÒlŸ‘>)”VåR»@|`¶¦l}ÃÌÏØz- 'º¶R+ˆ^ÝD*”ÖˆD*Öš0O=¯eúZã* "Ñ1}eý1;™R=í“–ëŽô¡øuõ\2ëTÑw¥UP´„ÉØ¸PZujG A vk§õ¿þMñõ§û°nÂÐsŸÀFBq óóSØGÔüæ'üP6šU•vTÄ­!è:¢¥ã`JmÒŠL…²‰‰vJäÖ¼åþjÅYhÄSk®"‹W(¦,F—<-—i>¥¬óõ·I‚í6Ìû„âÏHó㺛“NeY,´’ª¥‰xæ›W/ãÓ+)ÑáHœQ†‘Û¤ÛÔCC(»Iä_Éüôׯõ‡˜ø´ŒA¬8Z%ºù¿)묛֚ô„ò‹yéÇD'>ŠY}~Ô pCcBÙC†âJœ-!„ÂÒ ”4”‚ sH#€PÒP@(Ì@ BICI @¡0 4% % „Â€Ò ”4”‚ sH#€PÒP@(Ì@ BICI @`@(¼,éøÆ„ÂËÒ™O€€C`X(N¬Ö.Öæ&Õ—Þ•§¶\47|¿t¤‡À« ”´Ûñ”ÅÒ@ œ&p¹PÌwßÄþX¿Øáoë}:Î{vÌ8'Š7NÔ…˜ùæ]¿´Ô²`ä*~›Óó‡ø'…b¾ÇycŽN'S.æ «$sËGqÇuuV_âø»éAóµ8ú\çí9õìÚJ›…T€@:'…â”'Ó;øÉßR>ÝÌFÑ¬ÛÆT¹µÝ8B:CªÅš>™5„"–Ý”3…â䳩†Öba¨B™èj=ØÈµ‚Bi­ïÈ$¸V(:7t/FâŸáÁCŸÞuýâJ”Zs«*st­ƒ£Å‘Xµ*¸Ä‰E¨= Ü!f®:‡GÎBf(Î"e–<Ú}{Î{F}'…IB³P7×­ü×eHk-c¶t:u‰Vÿã×j]Ú,VŽM)ÂîL`L(?R)/K¬ v¾+Œ‹Êo„Y/KG(‹Nº ŸÀ˜P  @À!€P˜€@„’†’@€Ba@iJJA…9¤@(i(  æ F¡¤¡$ €P˜€@„’†’@€Ba@iJJA…9¤@(i(  æ F`@(¼,=: ðQcBáeé 9†…â\ö«/K/¯×XñíKw>gŽåF¥{E‰”!-Ýù³€K¥¸\(ñ÷xùoÉ3_ÑzßU÷-~4ÑݱÈvüwVèŸúï1G…ÓÕ8RÄ”–p_ô¤PŽj\g¯>xÜ…`Ë’«õ½k©'ÖoiŽEtÛ,N 7Ȥîüñ÷!¤âô¯'ã›'ð¤PÌ9{°Uüw?œ'ò¼ëA_(åôV©rƒËÌO1Î܉ÀB „¸žJkÕSwJ§V]`žgoi:n§ì`¬Ã®ŠžúbiÐýT7WïC)a®;ââ-[cÑ÷¤õHB ¨;üK˼,”†g'lCà¡èI_?æ˜x à'ùÐ3³'Cš2޶ÛÄÚʹ¢ðu¼oñ–Û¤!ð¤PDIo¦V÷ÉB7Ì ÅTFëá…îX·ew±à#:¾¹2ŠŒÝÖùQÌÌ8Îù41¡üPð²ôw·Ö2ê½¥W_%0 ”^–þÚy€P^{k¶êؘP¶BÃ`!Qe”í!&„Âä€Ò ”4”‚ sH#€PÒP@(Ì@ BICI @¡0 4% % „Â€Ò ”4”‚ sH#€PÒP@(Ì@ BICI @¡0 4% % „Â€Ò ”4”‚ sH#€PÒP@(Ì@ BICI @¡0 4ÿ:5—;IEND®B`‚PKY86 layout-cachecd`d(°f``àd``Q2ܤ(ð20ˆJ10Le`°“†ª1…)N2PK"ñp/?PKY86 content.xmlí][oã6~ß_A¸Ø¢b;¾d’L')¦ËN134l_i‰²ÙH¤–”â¸Åýûºû²?­¿dÏáE’ïv,;[À3@‹G‡<ß9<üx‘üâÛ‡$&÷Li.ÅU£Ó:m&r1¼j|¾}Ó¼h|{ý—2ŠxÀž‡2È&²f E¿ Ü-ôs[zÕeYú¼Ý–)öRKªa»{zzÚ¶ŸîMâÕòF‹gì![)…0¬Ñm$¼x¨èx¥4 ^>’…ôx [pÃC!Äñ) Ø‚[îŖij$žGây$žGây$žGây$žGây$žGâyâyvÜ=n‡îÊüŽÛ¡ÇíÐãvèq;ôQ–·CŸr;´½ô~W0á¤ò† •à“*©ÜÉ ×•3èX˜¦ñ¤2͇Âñ¶Åm§fÿÈ™CÝ›æ/ZsC®Ó˜Nš2Ïb.XÓ!íYœ¥ ïâ8×™‚ÆH±¸†-”Ýúì¦þÜYÉ+÷^ Â¯ QKç9Ù'¯rÁÓR|B‘[ð> â¥+îíí~LéõíˆC$»êÍ2–¤\‘„=€É\lÄÈ€j '$ÊE€Î£1Ï&„Šäš‘‘lL¦Í #?$,cªEnAB»ëcª ™’a°þ$ÝV§Õ%ŠÅŒj£Ðßöšª˜Ã-®H“P!32¢÷ÌÔêt¶v†¬×¸~e ­ük´6È>}B86ßÝd"Ÿè°%(í…ölhŸ cGÙ^ª 2åàDè¿“Û1´M“ ¾X‰ÑûLYVk{|¨„Zƒ}¡G¡ö=sFRÊ•ƒUŠˆs›â§ã PÊñU;ºßÌÅ-ÄY·Ú04RáRñ¤E^ø1WÌ7ô¢è£ÌØóEº‘‘ Áy0ò`gÀŒ €†$Í1N ¾1œ2J¦Ï y<ó>ÅJ¯k³ „“6Ýíe1M5:ú3tÕxbà,°VË '•ˆó-0º®h|Mƒ‘mÑlC8&—8fá‰ÇÍø0Ån²`Vg®ø «ÃwÕÖMnl5­ËŠØÖ®AêÚß"7€žO(‘@sy3)èIhÕ˜a$ ÌhçT%íÙ Ü Ä`T›†%aT†Pa£˜¡È;Ì«ßpHt£¤ Ùdç!¿òÐûªümúMåƒUò ùã÷™Yôcë?7”p]F Æ%„˜ÍÝÞÍzIöY…Û:>ÑàÙÚCMUý¦µ0Á¹ç!Ž7&¡ïFFдԗƒ tr«oàÍ1þëÚOÄÒ‰Ÿ1ûÌÓÌSÈ fHPÐÊÈ 5™\27ØnÁöàÁï¡‹g*€´“› sç¼HUšU^°>õ( ýöjPÑàÀ²Cí ‹ÙÝ›ù`ÒíÎþt£Žs(ábñßçÍ-¸Éà»Èû4Îr¶¶¢’¿î™×yüœ1FÞ¡‹Z€]îÝ|käö†%ææöªEüà„ÎYåñBÿ å1’ÃÎØì¨ÐR»€}ûö0¶œ…õãúÙÂ&¨ÂŒÉϲ‹:ëžEÌTlfŒ²Òy幯`v2„ÞW§+_ÙCüæÉõÖÎÕ¸µYP74}‰úùn GéÉ¢ É<ÑrËÀ[ä£k¬©Y1é Œ(…¹{•¡„êz‡s58_óÌDZW—µä8-1+Íí´îÍʚŖ–“‚)2^’sO•Oà¾Eu#Ü)5‡70ç—i c4N>qí*5¡4nU̳Y¶€£V–Y]>•l4 N 17~ùt45;RŒXÛÍe Ëf¤vSÃU.Ì®˜"ìdze¢±Õ:¦˜)³3kåž—Øo˜²%S†Ô0Å˦\ÿFjqŸj°¤ˆ+äïfÉR9wK %õªÜ¾ÓXÊ;“Õ  ¸æ:©Ê·Èë# Ý"–ãç;ãtiÖTR᎛h}Ö¸¶+$ÎÚdR¬‰ý¶Ùí.Bma€»øm¯²TöÕ×ä·n¦o3±5XXÖüÿ †k }ýXÍ}Ь󔩯Œšoß¾ýr¾Ò/çP¿yŸy ©}µPUÀ¼çÉ\µŸÝœüI[èÃ#©šÙ$eÓocº>w›o½ÖE¯çíÀå‘{gV¿uÑïº3¦‚_Í«]ÌùR†ç#Å¢«ÆŸx`ÕÛÓʿιûýªsÖé^v¾;ï·Ró æ^Û$m’“¿£ÞøªÁ’ ý% ª!']5¤x/iXî#픫‰}j‘ÎÎóݾ• f!W—‹–Ê·£ «µ¼ÁçùÏ0j?„ƒ.L®¹×‘Y?µÁ«š´Û:2ÃD‚Ò¸O ”Ôv9í–{ KÖ§>W˜mMëR`60±´9˜4ñw­»"ÝmvE.׿;$ÈDæÊ®D”4×7*Ë7u,GB}Líî_JÁö¹…”E›!Ç•|©&55Fnð€­¦.•†Î'ú·/©øã÷ÿԤܼeÜÀÑ0$Í/‡Ù7Ä®7|qZ¿åû6ÄûɺÜí6ÖT¯yš•LHã`–çÔ•uÃzªB¥~©RÚLïª×[åš%TCÆTd~­«ÞzèÌJZݾ1§\rîÑ ×Ñj«䙚*K õÚfWa\mÑÂ%©Ú*DZ1SSvU"oYhq–ðû€öã=gc7Öf.|˜+\8½@Z2?SœÞèÆš iˆÛà* ;ïGbâ{R¤dý ¿…Á,Ë’›#tuºIŠAÅ-´8êöäCi"a¶Ž*ݲÕâZ—Qe‡ùªÎJ­¶ëLÀ%©[äm—=¿ãhYeWŸg:à6w\I»•&lº;;b« Ýyú¸ÅÛÏïv'h¸tŠ+|vÖ»û|·çv>ÒmkhWoÚuiëÁi[§…½Kp_öû\gÀ«ká$•*º¦ŠÏiÎø œ$“=Udm¹1a‰ufüˆÎØoëW5¿Þ=plF\w»ˆëoqÓý‡Ü|µ†Â õµë·±ö2 A¹‡hÕh«€ètVFĺbHzoq ¤1y›Ã\–n²§Òé­ÖÛs“T\4Óû¡«eXÔb¦ø8’˜|^«Ì9(61çɘÁÜ,úûc˜SfT.æÌàn‚Æ…XˆIÇ`ïKIÀà³aéP¥ÙhO¸79*æ®éHg[u$èv·céhÑñ©bûÄCBUA’4üN‰Ã6žøƒ÷’ûRã:t Ôuî ›ýÞÍÆÒ0’k§3³ž„‘Þ8mÂõéXb‹Š1Š©9B£Í^úhj§±œ"¸Ý?ÔŒgßÍÒºñ3îŠÄ€^XfÈd€k@S +¹  .P}x¼4˜Csì²ifv-pÇO±I<7:ÅŽßQ5à™¢jâ1B]slÉì۸͔Ñ{. O,Y”9”Šb~MÍö./\›Íï"Ï&+‡ñü¹ËAÌNìÞ b0#t óŒŒGÌ«¬<Å`’D&n!þ±íƒ úÕH"í©`»¼ƒu)¾N\Öf“9ièÙ· =µE3wVÅܬ,|Yþ+}—ÎS22W&á¬=9]£op_L·í¤ÞvÄ2­Œä˜ä©íIÌŸOöÖ ËPt¸2±X gV‚a8 ìA ³Ë²A>´»­ÜôCœ…™!áf“°¤…a— v¶•ÕM/l1nã™C Àb í¨íXáú¡¬ò]–öÙ–ö’¯ž¾þPKI÷¡I»zPKY86 styles.xmlÍYKÛ6¾÷W*Ú›,É»ÉÚÛxƒ¶h‚›º Ð+-щHÊüúIQOJöÆ {X@œo†Ãyrè7oy6Ûc.£k/š‡Þ Ó˜%„îÖÞçOïü¥÷öá§7l»%1¾OX\æ˜J_ÈS†Å ˜©¸7ĵ—JYÜ+05KsÆwÁ" ÃÀ|{ƒæžÄk„…K|”“h¨ÁhsF¶FXxÂÑa­` ‹ß²}8懌V«UðïÓcðŽñÕº3B¿Œâ5µÖ#®qEÉ3JâgXÙ[Ñ< ,6ÇMê¬LË|ƒùô‘Dƒ‹ýÎ¥µñ̾¶Eœ">íhL}“œ1õMRŸÉtÄrËàõ¿_x>)\êóŜӚˆe`ŒM o{á 詘º œHÌ[ðx£,®Èò×D |¼Wáâͪ„ídöƒMã-ƒNpœ‰‡7ÚñÍÊÌ|S”C=IÄŸNù†eÞlË h‹r’º´– åqÁ¶G_j0½Ç'”²Eà áûc“Íž³Ï”@åÂCQ¿¢‚‰ßPCè  2†ÈÛ#Nt¸HýQí¯üq”3š e7”¿!ú;L1'O¶§WŒäPá?âÃì#ÊmÕÌaÑ×ìw€9"²ZžØYˆçvIR-™®g•Kð•YÕ ­ÐJ—GEJbáYpÁ!³¹$`+ÕQîEŠvðA0d‹\{á<Š–¡qê¹'RPúÐE°/ C—òSÆÉWPeÝNã÷J§Ø‰Æ4y†ìÚ-ÙCõk•’)08”$˜i‹ù(+Ò:k´¼ Çz¨àAi)ª€ªMrÈáµ—q_n:n%4ÁPHuUikµö¶(ØbK}hîÊ̦x±ŒA«”¼lA¾ÂÑBuXËÝ•hKØäDÌJ*9øçóSGÅç#AµÜÕ©*–F­ªd¹H̘åE†#RkªKn—hc.DĬ*úûáZ/uÂý’( Li¯º’ —žŠS$¡?ùJÌ}­§Ò¼–ùÌx)JËÒ<%XE_ÞΔ5ŸÈª6 ç·«Å«vØv£®k_H-ÿ©¬ßjJ¬gCüÎa©÷¯cËÑú^6nÛÁƒë”îEÇ9"TßGlX- ¢i|{À›ÁÂìšp¿a\ŸŠ¨Š«üPñtõ–>g‡‘û‚qáK¶Ã2UCÊè$ÎmØÞ¨¾ÒñæÆ1Hqë° j©,—÷ è³ KNgÂB=oúneÚ{º­#eì%!4ݬn˜”êRÎÃåÉ÷Æ>gìòÕâ[Ž08u†LÉsœáL®E—kü'*Tä¿ Ýá(]bøÆ¾ÓÖŸ)OVs«îÞ¢ÎqMÑUÜŽµá z†Uõ4kæ¥À¥…Äãu0l RÃf©f·&*ž{ƒš^mq±ÿ†«Íñ}H´j ¸Vüâ¹þ(³ ËIîóyêž Mœ®zÑîá#³u;dìµ¹§Ô %âbüE“+ÜñÞŽCÏ“t€ÁU Æ_ž Ü ðýîþXsõuj¾ªËšº¶/v"ñaB•Y1 pÕ˜iÔÌ=†3†¤R¯7j}`[}"VJ3‘8Ö2¼ÇYÕçM~©(v3H5«Ÿמ’÷â*¸o¯â~u÷뫸ï®â^^ŽºŠ; ÇØƒÑÜVåV@y [²+¹¾ ¹1´'}]nw’‘ÝÞ2ªº„ywØ£¬ÄºKôv„¤"R?Rš‘ªÅCm÷• OpenOffice.org/2.0$Win32 OpenOffice.org_project/680m5$Build-9011peter lin2005-07-26T21:19:412007-01-23T19:58:50en-US52PT4H49M42SPKY86Thumbnails/thumbnail.png}Xw4\°'A„袷%Úêуh«—U#òÑ¢«'XQ²zË—°¬Þ[ˆÞƒeY½³–»Zð¼÷þ|eιsïœ{ï™33¿3wîÄhSQ°QQé¼ÐÝÎ!·ã+9Ù-[#ß#"zȦ£¡j˜‹ËÓç@1÷ ó|£dDŠÅÆ Dòf,ZáU`ýBtErα6ùq®yPYXöàÐw’¸ï±o^1JóºÕ”…] …^ÜŒd#®ïü, QwÕOM—[Ë }Ç•*¦ýÀ£™ÔhéZäu¤áÉ.þOY+ ?_þŽs|rÖ#Îâ”y_Yb„¤€åÙ6ú¼bvå¹8ÙÝ‹¸ÇÄo„5ÈÌb=oÂþõã§ UÀ‹Á‡í8OŽe Æýæf5†{Oá°Í÷\Ńûö„K§äæêE)Öftu¶ž„óNÒ(Ÿ9sA #à8•›¿&¥a}“ÀºÖ˃V›’1leçÒµÿí ‹›ëKÏÖÓNŸM]anÙz`M@„NOÉQ'úÜ-v ª H«¡’åÐKÈ —`š‚õ°$Å?/FÜ7štf‡£›½×µ.sò‡[l•ʉb½»ÞÌÿhöÝž—C,¾NüûÁw:õͰÑZZÐ.ûz~„þ½rÂ#ÅtƒÈ[™%ü~¦kÝB ZU¯4¹ÚÇáPHÆ Û°:Ô@ºu±ù†g81pÔ°te•Œ²ÛÊÊ6æ–ŽP,YO—ÐÕŽ+#äúŽ´àO ûÕýó¬½çuSž'¥YEsðVmI+‰©ƒæí|¨•êYBVw“WJçÍuëäKÆÆ•\fûo¹Ï¥¶¹ŽÏã.Y÷˜lá3Òª¶h™ÓîúBó­PõÓÚÎIü^ÖŽ]Å À"’a³.¡_U"òC‘YÚ†RNÉi =Ï“½èþH9F•Þ¹«:·¹¼«À/‰‹ßCVdÈNSž:Ë7Ùv{@~pJ¨;a5Ì1e¦yRRi–È7ð ºóž3ýù-r{Aà ïŠ×FÄ™lWšCΟåBEZ§ý 8{ÉD¤)Þ[êpÎÊUiÙ}B~ÆR²æòVäò±c*IÇÃê@7žu]S"îÓæ‡5Oàf/Ó.54ìQúów«¥ä¡ ;]vÏj’‹™ ü®åÞG ô`øù–¦€…¬:.JZóÒ‘U-ü.¨±ã/ä¾fún¦V?:‡D?_˜¸ñÇÃö‡s¤½Ze»ùÊìçm[ýŸºGõ¹ñgŽä.DÙ'¨¯ëЧ=4˜Q[µ¾’5:…Òʱ¾†Ò)º¬ÞiùâpcGö¤XÄžºÔwž—eH¾jÓíPª v¿ÌªQ½l>âr kÖÇ3Tþ¬x•“êGfóÓDD¹Þâ°6À¿Ù¿×£7çì’Iïr"  ÌBiZä:^M}uôó¨újûT^mhÏÁ€ø¨_{£M³fµR̾8¬ÆÿíA³L`#šÑK¬:ü h‘” ^Él5/mG7ð*J òÊ?•ì|Q¿ 3ÕÙGû&¯Gs\éµP?|¯ÜÖ÷*EþMù’ÐßÇ5æ¤RNSLìcr7D"›Ý™1þÚZ Ï€¡t¹o _¿ëÕ‰„µž‹ÇKg‚ŸSG­gF¬I.63„Óú¾´çŰVRQ²êH ÿªy?úNN2’©åì“,€ü‡¡(>EÙä2ÿ›G–»_¬¥1˜Vr¦¹$ƒÅìxûòlNgƾ¾ÏVS2ÿ•U 8ºô>z:ú˜dÞ3>(ÒËxõÔ¬˜Ð>rÞÕ}<žOÀxÎ~·Ýœ¨l—¸|-öQ¬ÙuŠ¥ôÂ#Âöû!ž8UÊù‡/Z´ÿ|‹-ç$ ãz¹ìæ‡ëy2¨¶ÆÓb%j¹óÂá-Ò;–ˆ¤°ÉÍlY_He)¼@Öv¾•s¤¾I–ð»D3,†ÐhœáÊ â/7ö¶Ï¥ü÷·ßóR«AïŸ.º‹Z–èí´Uù2}OõC “LoM‰âü ½Ä›¨?)vcÔO9ùa‚óóZ oÇ*YF¾wªw‘/‰F•ó/RŠb´`} êÊñÕ´üZ£f cØÌ’:8~ä¢_$n“À‚¤Jâ•l7uJФE¡ ’'‹ À‹¹,âîøµZU Œ¡/Ýê²áåü‘$ÿÍ÷UÛtò -‡ÇÄj%´ sý–·¯ÂØäEU¼ªS´Ëð ïX™ß ÕãÄN‘N$ÚM ¦F½Œ«Öá¡’Ü( u8˜s öfàg—T~CZ£›:Ø~t;^!µ½ï ÌÕYXQƒ6íR¢±ÜBtáâ/Ô•‘êrÂû²d;5|îå¡pÜâŸþ‰ØRUŸ–,Ó˳>oÖ·ÞÁdséxÇYABˆ©E±òÛ¿ßÍëéå3œ'=æZdÉ»J^Ûnm¸MŠÊ<“4*7Õ Ý¡%i ê/åyâ¬[I,Æ[„éq,êe ßrýð&ž †®È¦?E+z0Z®^÷hxת-…²Ù+„ñ ¸€_뽫"Ãi‚º àwºnËG—fØS¨Ï,%¾½|UKÕ–ä5¶ulëÊlU@M—䞸âvÿYhùóͼ¨=’]°¸ M#+¹qÛA4[q¥7þóÜ{›Íù-\ǯO*mK1‡áÑÚ¢Õ;%«ç¢dé—n\ÁÇ7)o¤îfAÈCþŽ ?‰¢’¬ÎjG¡iöö wY£:˜%ìð£õ)»ñ€ÃX¾>q’¤ËÕék™jW$ÓåFïiT§»ùŽo—4õˆüÕV-ÚÙÙ›Í5tvįvA oµiÑ·=ÏÈ/~fB‚ÁŒ£kŒ~Óó9n†y˜Œ «íÅ‚¶í'Zß»^Êk Í~wÃÕÒœ^Ó·!ƒµLöAW•åæ-a`b‹ßG¶i ¯v~ñX嚟ÛTÎgȃîXÿÆiÕ‡¬¡î©±ÖbNW«Ã˜÷ì±ÿ^¼¬×Y4Ü»¡¡ñ&»É_á¹’Òæ¢û=Ê!c¼ÆÔ õ4Þ!œžÆ— fb¡!«NÿÐòàZú¿#[³a5|­§ â Cyî)ëaÇ®”;^`Q\ÔΨQî÷§uÕƒìïtT?r;ˆ°Ù›«ŒR-wá}åäÃuS“Q•›”¯ÂþlN$ëB—áÓ¢ñ³ö1¹¼ÓóªRï”iî.}1Áè4‰¶N?pÎ9r×\ÿ‰„ÇÝ/ÙøÁ)tv–$jþU4îbÛœÑ7Л¾}1)Ñ‘}¤ZøÎäóìÈÌŒ9M.¼É¾³arù^)ƒL/Š:6ˆ|[M×cÀƽ”ã«¿ñ³m ”ø’ý´™þ!ärÊfÆM/çsán ënŸ{"`Ø ‚ ÷{îwÄD½³3A_ªDêJÀ°X ]è®èÛ8éÕW誣·¾ûÖ _[e,G‹¤ÒIW¬Šœ²i÷ÊÄ[CJ¿$÷žîpø 7T…8QCB´+¤¤67\õµ÷{¦yâä]&Kpž´¸ûÀøé Œ#!¥* (IŸ©)ŽV]꩎Ý5÷B ‹ÏìšNFÁ€Þ¿àX‘‹ý¼*y~ £N8û°z¾Ù}iµ2ýÀбh.b(GglÁk¥weÃR !•€_µ*è/ïßGnÆïŠ)5Ï‚²0ÓŸ¨âºÖ~žï»ÓØçú ðHdd?+DØ_Ï üÓ¨lfW ø©à51§.—XšcmJúä·Øÿ¬ÔmQoœ¬ ¬ÿQ2’æ= Sœá±ÊY ƒ€«ð&%Eº°kaÁPÖ1Iggô›²Ùø/'¦ù'ŸŒ]ùNF:ŒúÉa[#Y%-©ã;È¿o~ÑMäEôCœþ—5°¹aóò*ÃÝ]TÂëÂßž)4ŽÖLªïÌ//Û“= ”h¶…)Ц¬ ^>S¥à*OÆö§Ðθô%­å«lHDÇìÒ ­Íôä9yÉ("î6?( ­ç›pµP¡Ûƒ ‹ó”Åš$r8k»³vl#þd•ù›Ê,i©$ú¼Î;öÿ%oùyä³Òv3$\Û[?ö—F坿S–ºÂëÿT ÆQ`b”ºu{ Ž)eZûa‡í§{®Âs$cÀu@ÃÈK—8Ã2ØYs¤¶HÂî>¯Õ¥âsâCƒ«ôRÐx½TØ®è8ôï2£”Npo¡\Îçó~g’R-„Cæç'~LËf•ÑÌ:¾&àóvúøPΧÞ&c“]ÞŒ\ô+(¸RÁŽ{w‰r¼gyf´SþÉU˜qºÁÀƒrk˜<-öc½önÞ282É%ñ->[¹ üº¬MóÏq6xNsvš¼¼£5ŠïÚT-Q,¯ž®Ã^¢ º ™2]Ôˆ;@ãbÐÚ÷±«°K¸epj$¼W>Ãý¢üëó§)håC:JÞ(N§þk%$¦î•Ž(]¥XzòØS± ãt.÷ÄÀ§´•r‘õñëï6aÒ V©˜{ÇÏŽ¾êÌ~A€×ÉRͬ"9“½þÒ­NæˆÛN=£—J$–ýùŒ\1«s2W É1åÃÄeK—¯´6G™,x âG:Ð:lZæÇÏ (÷}ÁS(QóY°p{à˜W|åü\"R¶ÖÃcõñænËØ¹:…„r0A‡µ¦Æ>HôÛÿÇ\•>ßËab)8‚Mæ%»¥P˜1'¢ýÙÛil†nÕñ+b7D,Êô TÛK(>ޤM´t>ðO€nEqù¸_©ƒmüᆠJéÁîy¹F«îÔð˜Pï/rؤÙmCLvØ›Ûä”Z9^î ×yªj.¹™|W«ì`ÇrºRAÉgªI`ZïÎ#åJã š[ºÑûéû“jâViiÒÇlžÖ Àä]È}ë!µÒ7áÙÁD"Í$aó"ÞZ…¡A5]ö "[U==ˆSÀîZïkøxÍ™@3ÖªÔ l®½ 5UæË1 _èF™- yËÅz˜¼HPbrŠª¨=YaõäÔ ÉkH1k;qÙ …fF½q‹ðÃaõTˆ±?™¥ä¾}‹qi±²µ–Óü;ƒ}‘…æ;h`šÌ_ÓGLë·Té‡ ^$ñž\íïS—^Ù—ÇÊ9-5Ò¯¡# txÓãÛÜ~­R)¾eÖ›…ާ¡ë ²E¦Ã\wöõv[nÕ¿YÈ9÷nkÜÑ›l¼ #UÓOn©W'xì,Öժ¢6¢Ü[â‹J2ƬtÛ†"ªØë3jl9u#ç8Š)þXgÖÍF.ª3¼Ž¥p÷Ç¥-¯ ¯fŠgN4@I¹24әР½ù”Ø„ê“Ü*s5#lkåA™"‹UƒÅ3 šEoü¾;€¤¾ãroGë¡0F:„^Â’GMðd×õGœÔ|‘¹—Ù.\»›°Tº9]$´>ûËœ*S0ÞHïÈLÛOÃ'µ~»8/Zïz‰&©2(Ú6KAélÕ¨#ÈFìÌÎLðv£2y÷õ1% Ĺæ,`ûñ èw¸…ú´¸ ú¡¾pе£Õ’$}qŸ´íyRFu:Þ‹.f¶,(/%ðÃL@´.ÂÔ¯÷éu2‘|$­]”s¨¶-Ý5Õpå5(7îƒtö%’蔾òåxôÍ}ÀB[ç7À)9¨úá®AÆ´ÉÅ F¬«Pøçªòñd¦ þ߸dâWìÐqT¾<çöê ´´jCØz~§]k³+Å$ÆWýFÂ1£d Ÿ ÔB¸%e¨IDj›çÛé÷¤¹ J³X*îâüÔ³[¢k5¹q®‰xÊë`(¸¿:÷øäáˤµ,PïЦ?xQyMâ"Ǭ aœZ¢M`Ãû“ï~# ½¹ó24 h„ ‹ª +ñ[³ëÃD±õ£J–ãjzj¥®6ôQÕï“ëœcz`‘P3¥Ã\ëóoÀÈÞtÀxäú¹ƒÒþ¢ÿÁæm t?Œ‘¤ Zîÿh,þ?}ÇÕ0ã;— 𼢉nIGÓ@©æùPK…ÊÕ/SPKY86 settings.xmlíis›:ðûûí¤¶‰Ó&Ä/RßG“ai„D%Qâüú'ácšZ?ÛÌ{ó&û!´ì¥=Ю¯¾>ää'pá3z](,N€:Ìõ©w]˜Œ§…¯Õ¿®Ø|î;ðÅeN•§¤T(âD½NÅ—Õòua!eø¥Xd!ÐÕ£Œ{E£T*W÷…õ Oħ[ü8Ž?Æg nùòò²˜¬nPFç¾÷Úåâ eócì7Ø•­$k^(_ÝhºQ°zµ"¾ãÔ—híOÖ)”Þ?}ˆ·6)¤½óÿVá#xÌÂÂfE.CµâSY¨ç•ÒUñ-‘Ý ·a.Ó(HöÎwå"Uâr¥R9Œv |o‘*tÙøtv±ñÑ‚ÅCp•?µÀÔñŠÁŒ1˜ª’G°›šœÅ:Ì…,êsLÄÎäOžúÔ…'pßÚ*Ý¿’wTdòån·ÝW¢ É•óªÚ•ýw2ËñÊ•³³Ïû“Í”²aTÎö¥*ü£JB5‡¸Nè³BDÇßÞ»–6™”,H5òyùóž[7e,+J¯}mÁøþ6ÖDØ‘Œ§“-ç{²G‚ÛàêÁ±œòð×ÀÌZ^Çz:‚*+»¡ÕMıTåìŸT#äº}Ìñ+7…ØÑyàyì%—¾Ê/rºÜÂëäs ú½Hê4ßVȃÄÝ(˜ÿ6ûçü¶ú@™„.–iYã‡Ø©„rÙÇùÔ+2 Ÿ ©Ô[9•6ÍÑZªôr°À-„„þÞ:zZHì6Rò¸a³L»àa« op•Ó ‰ú?¯0éã¸f4½.%Çà¢B>Éq½ù\%Š<Œ•è¡«kN^¼þªës&UÊVõ –¯¹`Ÿ*¦O1_Š;ŠœdÁäÕ1 Q$ÙÊ‹ŽÏ ‘ÞbªÒ0’ƒü yà©ù««±÷ýCÑXÄvsHCþ˜Þ¼îØ‹;–ù<½¿ §÷ô_ÜBÞ´yûŒ¸*÷j(¶[]â„8ñ Ô;„êÈBÞæ¾Ó‰º>ÎuÊÃÞm¬×MæXæãô¾«"ì¶d×&•N yŽq»Äw·Ï/¹×ëöÄrPsЪ]~@¦z j?¬àž"dj~Åù…¥¯ jGU| ÿ${14·÷i`Zžq×J[ñmÏF¶o[)kOѮljàÓ-ýZQç>˜&ŽqLò}š)ÇK°Ð¯\ëf&âÁ`š¨e#<0¨ÿ}G¨ôjª'¾do]ªþ­6}pÌçîOGcôïð¯A­cðÐAMÙ@u©£ÆMbSå=9Hys€¦ó5žIPk ‚•‘ •EbêN¬Ÿ'q¨®ÔFf5/ÐC¼ŠËqlFú $TbAŽg¨ÞA3ý¼õ é/5Ýwx‡wx‡ÿðís}}ÀqQÊdÒnÊî‚ìyšo3컌’7ǺãœuËkÝí³äÔgÉ>9Ƭþ¤ÎN“¶R)Ÿö C²œà5,ññ ÝQËóø:Â?áv5ŠëQ‹0‘GsE3i6ä¶ždêF^{n‹ojÑð1íGÔ‘Q&yì;ñ=ªÜw$YØgÂωq®Ì¥K÷õuÄ"úÕi×n ðîÛNûfµO\ßAžœ_”J'ʹ}ä«~Êf·ƒÈ£ÂwáIÞqöhoö]=·n¹÷äÕm<ƒmäÑ.Ð`<®»Ì˜+ì¯GÊðÉ‘Äûle®ö)Ž™cðâ›_g³~™VýPKòOaÞñÛ&PKY86META-INF/manifest.xmlµ–QoÛ Çß÷)<Þí‹£Mݪ¸•’tÒ¤¶ÉCú°G‚ÏGWû’ªN"-›–ÍðâÂßÿÏ:1»}éTöŒÎK£+V–¡¦–º­ØÓæ[þ…ÝÞ|˜}\®›뻬ãZ6èéz²õÓüþû"c9ÀÊ¢^5X×,7ËìaXÙw,cšEø¯ÌhJûôb;"{ `"ßùÓɤ„aQeGR#æ¨Éõ'ޱ–<§ÞbŸµJ NñÔð¬ëÂ]DÑâ§“„Ž75A©ÜrÚU \¤qž²0º‘mpoÚ~ ž8¿å. ž ãÔ8Á¹Ü4¹VFË“n ¶Cáiút•Þ[O'cT2¸ìx‹æ’:n}R Ù¿kAâTàï<\(þf¬nÏÓ×RPˆ7 ÊÉÉ(¯Þ¿Ëòs9ýZί>{Ä9=(þG·Rsןç+Þ›@¹àb‡J¾ìûÚYp¬ý[ãû3×S¯ÐŽíøhMz³ ÝVs©<ÐŽv#Nàã&‰â äÚ!ïÁÍ+PKI#:£§»PKY86á¥19mimetypePKY86DConfigurations2/statusbar/PKY86'|Configurations2/accelerator/current.xmlPKY86ÓConfigurations2/floater/PKY86 Configurations2/popupmenu/PKY86AConfigurations2/progressbar/PKY86{Configurations2/menubar/PKY86±Configurations2/toolbar/PKY86çConfigurations2/images/Bitmaps/PKY86ˆ Ã¥&¥&-$Pictures/1000000000000170000001D151291B74.pngPKY86"ñp/? )layout-cachePKY86I÷¡I»z })content.xmlPKY86û2k9¯< ÿ:styles.xmlPKY868Íú<<æAmeta.xmlPKY86…ÊÕ/SHFThumbnails/thumbnail.pngPKY86òOaÞñÛ& ½[settings.xmlPKY86I#:£§»èaMETA-INF/manifest.xmlPKƒÒcapache-jmeter-2.8/xdocs/usermanual/build-ldap-test-plan.xml0000644000175000017500000001536212032647214023370 0ustar ebourgebourg ]> User's Manual: Building an LDAP Test Plan

In this section, you will learn how to create a basic Test Plan to test an LDAP server. You will create four users that send requests for four tests on the LDAP server.Also, you will tell the users to run their tests twice. So, the total number of requests is (4 users) x (4 requests) x repeat 2 times) = 32 LDAP requests. To construct the Test Plan, you will use the following elements: Thread Group, , , and .

This example assumes that the LDAP Server is installed in your Local machine.

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add-->ThreadGroup. You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Figure §-num;.1. Thread Group with Default Values

Begin by selecting the Siptech Users element. Click your right mouse button to get the Add menu, and then select Add --> Config Element --> Login Config Element. Then, select this new element to view its Control Panel.

Like most JMeter elements, the Login Config Element Control Panel has a name field that you can modify. In this example, leave this field with the default value.

Figure §-num;.2 Login Config Element for our Test Plan

Enter Username field to "your Server Username",
The password field to "your Server Passowrd"

These values are default for the LDAP Requests.

Begin by selecting the Siptech Users element. Click your right mouse button to get the Add menu, and then select Add --> Config Element -->LDAP Request Defaults. Then, select this new element to view its Control Panel.

Like most JMeter elements, the LDAP Request Defaults Control Panel has a name field that you can modify. In this example, leave this field with the default value.

Figure §-num;.3 LDAP Defaults for our Test Plan
Enter DN field to "your Server Root Dn".
Enter LDAP Server's Servername field to "localhost".
The port to 389.
These values are default for the LDAP Requests.

In our Test Plan, we need to make four LDAP requests.

  1. Inbuilt Add Test
  2. Inbuilt Modify Test
  3. Inbuilt Delete Test
  4. Inbuilt Search Test

JMeter sends requests in the order that you add them to the tree. Start by adding the first LDAP Request to the Siptech Users element (Add --> Sampler --> LDAP Request). Then, select the LDAP Request element in the tree and edit the following properties

  1. Change the Name to "Inbuilt-Add Test".
  2. Select the Add test Radio button
Figure §-num;.4.1 LDAP Request for Inbuilt Add test

You do not have to set the Server Name field, port field, Username, Password and DN because you already specified this value in the Login Config Element and LDAP Request Defaults.

Next, add the second LDAP Request and edit the following properties

  1. Change the Name to "Inbuilt-Modify Test".
  2. Select the Modify test Radio button
Next, add the Third LDAP Request and edit the following properties
Figure §-num;.4.2 LDAP Request for Inbuilt Modify test
  1. Change the Name to "Inbuilt-Delete Test".
  2. Select the Delete test Radio button
Next, add the fourth LDAP Request and edit the following properties
Figure §-num;.4.3 LDAP Request for Inbuilt Delete test
  1. Change the Name to "Inbuilt-Search Test".
  2. Select the Search test Radio button
Figure §-num;.4.4 LDAP Request for Inbuilt Search test

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your LDAP requests in a file and presenting a visual model of the data.Select the Siptech Users element and add a View Results in Table (Add --> Listener -->View Results in Table)

Figure §-num;.5 View result in Table Listener
apache-jmeter-2.8/xdocs/usermanual/build-ws-test-plan.xml0000644000175000017500000002173112032647214023076 0ustar ebourgebourg ]> User's Manual: Building a WebService Test Plan

In this section, you will learn how to create a Test Plan to test a WebService. You will create five users that send requests to One page. Also, you will tell the users to run their tests twice. So, the total number of requests is (5 users) x (1 requests) x (repeat 2 times) = 10 HTTP requests. To construct the Test Plan, you will use the following elements: Thread Group, , and .

If the sampler appears to be getting an error from the webservice, double check the SOAP message and make sure the format is correct. In particular, make sure the xmlns attributes are exactly the same as the WSDL. If the xml namespace is different, the webservice will likely return an error. Xmethods contains a list of public webservice for those who want to test their test plan.

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Next, you need to modify the default properties. Select the Thread Group element in the tree, if you have not already selected it. You should now see the Thread Group Control Panel in the right section of the JMeter window (see Figure §-num;.1 below)

Figure §-num;.1. Thread Group with Default Values

Start by providing a more descriptive name for our Thread Group. In the name field, enter Jakarta Users.

Next, increase the number of users (called threads) to 10.

In the next field, the Ramp-Up Period, leave the the default value of 0 seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will finish starting all of your users by the end of the 5 seconds. So, if we have 5 users and a 5 second Ramp-Up Period, then the delay between starting users would be 1 second (5 users / 5 seconds = 1 user per second). If you set the value to 0, then JMeter will immediately start all of your users.

Finally, clear the checkbox labeled "Forever", and enter a value of 2 in the Loop Count field. This property tells JMeter how many times to repeat your test. If you enter a loop count value of 0, then JMeter will run your test only once. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.

In most applications, you have to manually accept changes you make in a Control Panel. However, in JMeter, the Control Panel automatically accepts your changes as you make them. If you change the name of an element, the tree will be updated with the new text after you leave the Control Panel (for example, when selecting another tree element).

See Figure §-num;.2 for the completed Jakarta Users Thread Group.

Figure §-num;.2. Jakarta Users Thread Group

In our Test Plan, we will use a .NET webservice. Since you're using the webservice sampler, we won't go into the details of writing a webservice. If you don't know how to write a webservice, google for webservice and familiarize yourself with writing webservices for Java and .NET. It should be noted there is a significant difference between how .NET and Java implement webservices. The topic is too broad to cover in the user manual. Please refer to other sources to get a better idea of the differences.

JMeter sends requests in the order that they appear in the tree.

Start by adding the sampler to the Jakarta Users element (Add --> Sampler --> WebService(SOAP) Request). Then, select the webservice Request element in the tree and edit the following properties (see Figure §-num;.5):

  1. Change the Name field to "WebService(SOAP) Request".
  2. Enter the WSDL URL and click "Load WSDL".

Figure §-num;.3. Webservice Request

If the WSDL file was loaded correctly, the "Web Methods" drop down should be populated. If the drop down remains blank, it means there was a problem getting the WSDL. You can test the WSDL using a browser that reads XML. For example, if you're testing an IIS webservice the URL will look like this: http://localhost/myWebService/Service.asmx?WSDL. At this point, SOAPAction, URL and SOAP Data should be blank.

Next, select the web method and click "Configure". The sampler should populate the "URL" and "SOAPAction" text fields. Assuming the WSDL is valid, the correct soap action should be entered.

The last step is to paste the SOAP message in the "SOAP/XML-RPC Data" text area. You can optionally save the soap message to a file and browse to the location. For convienance, there is a third option of using a message folder. The sampler will randomly select files from a given folder and use the text for the soap message.

If you do not want JMeter to read the response from the SOAP Webservice, uncheck "Read Soap Responses." If the test plan is intended to stress test a webservice, the box should be unchecked. If the test plan is a functional test, the box should be checked. When "Read Soap Responses" is unchecked, no result will be displayed in view result tree or view results in table.

An important note on the sampler. It will automatically use the proxy host and port passed to JMeter from command line, if those fields in the sampler are left blank. If a sampler has values in the proxy host and port text field, it will use the ones provided by the user. If no host or port are provided and JMeter wasn't started with command line options, the sampler will fail silently. This behavior may not be what users expect.

Note: If you're using Cassini webserver, it does not work correctly and is not a reliable webserver. Cassini is meant to be a simple example and isn't a full blown webserver like IIS. Cassini does not close connections correctly, which causes JMeter to hang or not get the response contents.

Currently, only .NET uses SOAPAction, so it is normal to have a blank SOAPAction for all other webservices. The list includes JWSDP, Weblogic, Axis, The Mind Electric Glue, and gSoap.

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your HTTP requests in a file and presenting a visual model of the data.

Select the Jakarta Users element and add a listener (Add --> Listener --> Graph Results). Next, you need to specify a directory and filename of the output file. You can either type it into the filename field, or select the Browse button and browse to a directory and then enter a filename.

Figure §-num;.7. Graph Results Listener
apache-jmeter-2.8/xdocs/usermanual/functions.xml0000644000175000017500000015726112032647214021463 0ustar ebourgebourg ]> User's Manual: Functions and Variables

JMeter functions are special values that can populate fields of any Sampler or other element in a test tree. A function call looks like this:

${__functionName(var1,var2,var3)}

Where "__functionName" matches the name of a function.

Parentheses surround the parameters sent to the function, for example ${__time(YMD)} The actual parameters vary from function to function. Functions that require no parameters can leave off the parentheses, for example ${__threadNum}.

If a function parameter contains a comma, then be sure to escape this with "\", otherwise JMeter will treat it as a parameter delimiter. For example:

${__time(EEE\, d MMM yyyy)}

Variables are referenced as follows:

${VARIABLE}

If an undefined function or variable is referenced, JMeter does not report/log an error - the reference is returned unchanged. For example if UNDEF is not defined as a variable, then the value of ${UNDEF} is ${UNDEF}. Variables, functions (and properties) are all case-sensitive. Versions of JMeter after 2.3.1 trim spaces from variable names before use, so for example ${__Random(1,63, LOTTERY )} will use the variable 'LOTTERY' rather than ' LOTTERY '.

Properties are not the same as variables. Variables are local to a thread; properties are common to all threads, and need to be referenced using the __P or __property function. When using \ before a variable for a windows path for example C:\test\${test}, ensure you escape the \ otherwise JMeter will not interpret the variable, example: C:\\test\\${test}.

Alternatively, just use / instead for the path separator - e.g. C:/test/${test} - Windows JVMs will convert the separators as necessary.

List of functions, loosely grouped into types.

Type of functionNameCommentSince
Information threadNumget thread number1.X
Information samplerNameget the sampler name (label)2.5
Information machineIPget the local machine IP address2.6
Information machineNameget the local machine name1.X
Information timereturn current time in various formats2.2
Information loglog (or display) a message (and return the value)2.2
Information lognlog (or display) a message (empty return value)2.2
Input StringFromFileread a line from a file1.9
Input FileToStringread an entire file2.4
Input CSVReadread from CSV delimited file1.9
Input XPathUse an XPath expression to read from a file2.0.3
Calculation countergenerate an incrementing number1.X
Calculation intSumadd int numbers1.8.1
Calculation longSumadd long numbers2.3.2
Calculation Randomgenerate a random number1.9
Calculation RandomStringgenerate a random string2.6
Scripting BeanShellrun a BeanShell script1.X
Scripting javaScriptprocess JavaScript (Mozilla Rhino)1.9
Scripting jexl, jexl2evaluate a Commons Jexl expressionjexl(2.2), jexl2(2.6)
Properties property read a property2.0
Properties Pread a property (shorthand method)2.0
Properties setPropertyset a JMeter property2.1
Variables splitSplit a string into variables2.0.2
Variables Vevaluate a variable name2.3RC3
Variables evalevaluate a variable expression2.3.1
Variables evalVarevaluate an expression stored in a variable2.3.1
String regexFunctionparse previous response using a regular expression1.X
String chargenerate Unicode char values from a list of numbers2.3.3
String unescapeProcess strings containing Java escapes (e.g. \n & \t)2.3.3
String unescapeHtmlDecode HTML-encoded strings2.3.3
String escapeHtmlEncode strings using HTML encoding2.3.3
String TestPlanNameReturn name of current test plan2.6

There are two kinds of functions: user-defined static values (or variables), and built-in functions.

User-defined static values allow the user to define variables to be replaced with their static value when a test tree is compiled and submitted to be run. This replacement happens once at the beginning of the test run. This could be used to replace the DOMAIN field of all HTTP requests, for example - making it a simple matter to change a test to target a different server with the same test.

Note that variables cannot currently be nested; i.e ${Var${N}} does not work. The __V (variable) function (versions after 2.2) can be used to do this: ${__V(Var${N})}. In earlier JMeter versions one can use ${__BeanShell(vars.get("Var${N}")}.

This type of replacement is possible without functions, but was less convenient and less intuitive. It required users to create default config elements that would fill in blank values of Samplers. Variables allow one to replace only part of any given value, not just filling in blank values.

With built-in functions users can compute new values at run-time based on previous response data, which thread the function is in, the time, and many other sources. These values are generated fresh for every request throughout the course of the test.

Functions are shared between threads. Each occurrence of a function call in a test plan is handled by a separate function instance.

Functions and variables can be written into any field of any test component (apart from the TestPlan - see below). Some fields do not allow random strings because they are expecting numbers, and thus will not accept a function. However, most fields will allow functions.

Functions which are used on the Test Plan have some restrictions. JMeter thread variables will have not been fully set up when the functions are processed, so variable names passed as parameters will not be set up, and variable references will not work, so split() and regex() and the variable evaluation functions won't work. The threadNum() function won't work (and does not make sense at test plan level). The following functions should work OK on the test plan:

  • intSum
  • longSum
  • machineName
  • BeanShell
  • javaScript
  • jexl
  • random
  • time
  • property functions
  • log functions

Configuration elements are processed by a separate thread. Therefore functions such as __threadNum do not work properly in elements such as User Defined Variables. Also note that variables defined in a UDV element are not available until the element has been processed.

When using variable/function references in SQL code (etc), remember to include any necessary quotes for text strings, i.e. use

SELECT item from table where name='${VAR}'

not

SELECT item from table where name=${VAR}

(unless VAR itself contains the quotes)

Referencing a variable in a test element is done by bracketing the variable name with '${' and '}'.

Functions are referenced in the same manner, but by convention, the names of functions begin with "__" to avoid conflict with user value names*. Some functions take arguments to configure them, and these go in parentheses, comma-delimited. If the function takes no arguments, the parentheses can be omitted.

Argument values that themselves contain commas should be escaped as necessary. If you need to include a comma in your parameter value, escape it like so: '\,'. This applies for example to the scripting functions - Javascript, Beanshell, Jexl - where it is necessary to escape any commas that may be needed in script method calls - e.g.

    ${__BeanShell(vars.put("name"\,"value"))}

Alternatively, you can define your script as a variable, e.g. on the Test Plan:

SCRIPT          vars.put("name","value")
The script can then be referenced as follows:
${__BeanShell(${SCRIPT})}
There is no need to escape commas in the SCRIPT variable because the function call is parsed before the variable is replaced with its value. This works well in conjunction with the BSF or BeanShell Samplers, as these can be used to test Javascript, Jexl and BeanShell scripts.

Functions can reference variables and other functions, for example ${__XPath(${__P(xpath.file),${XPATH})} will use the property "xpath.file" as the file name and the contents of the variable XPATH as the expression to search for.

JMeter provides a tool to help you construct function calls for various built-in functions, which you can then copy-paste. It will not automatically escape values for you, since functions can be parameters to other functions, and you should only escape values you intend as literal.

If a string contains a backslash('\') and also contains a function or variable reference, the backslash will be removed if it appears before '$' or ',' or '\'. This behaviour is necessary to allow for nested functions that include commas or the string ${. Backslashes before '$' or ',' or '\' are not removed if the string does not contain a function or variable reference.

The value of a variable or function can be reported using the __logn() function. The __logn() function reference can be used anywhere in the test plan after the variable has been defined. Alternatively, the Java Request sampler can be used to create a sample containing variable references; the output will be shown in the appropriate Listener. For versions of JMeter later than 2.3, there is a that can be used to display the values of variables etc in the Tree View Listener.

*If you define a user-defined static variable with the same name as a built-in function, your static variable will override the built-in function.

The Function Helper dialog is available from JMeter's Tools menu.

Function Helper Dialog

Using the Function Helper, you can select a function from the pull down, and assign values for its arguments. The left column in the table provides a brief description of the argument, and the right column is where you write in the value for that argument. Different functions take different arguments.

Once you have done this, click the "generate" button, and the appropriate string is generated for you to copy-paste into your test plan wherever you like.

The Regex Function is used to parse the previous response (or the value of a variable) using any regular expression (provided by user). The function returns the template string with variable values filled in.

The __regexFunction can also store values for future use. In the sixth parameter, you can specify a reference name. After this function executes, the same values can be retrieved at later times using the syntax for user-defined values. For instance, if you enter "refName" as the sixth parameter you will be able to use:

  • ${refName} to refer to the computed result of the second parameter ("Template for the replacement string") parsed by this function
  • ${refName_g0} to refer to the entire match parsed by this function.
  • ${refName_g1} to refer to the first group parsed by this function.
  • ${refName_g#} to refer to the nth group parsed by this function.
  • ${refName_matchNr} to refer to the number of groups found by this function.

The first argument is the regular expression to be applied to the response data. It will grab all matches. Any parts of this expression that you wish to use in your template string, be sure to surround in parentheses. Example: &lt;a href="(.*)"&gt;. This will grab the value of the link and store it as the first group (there is only 1 group). Another example: &lt;input type="hidden" name="(.*)" value="(.*)"&gt;. This will grab the name as the first group, and the value as the second group. These values can be used in your template string This is the template string that will replace the function at run-time. To refer to a group captured in the regular expression, use the syntax: $[group_number]$. Ie: $1$, or $2$. Your template can be any string. The third argument tells JMeter which match to use. Your regular expression might find numerous matches. You have four choices:
  • An integer - Tells JMeter to use that match. '1' for the first found match, '2' for the second, and so on
  • RAND - Tells JMeter to choose a match at random.
  • ALL - Tells JMeter to use all matches, and create a template string for each one and then append them all together. This option is little used.
  • A float number between 0 and 1 - tells JMeter to find the Xth match using the formula: (number_of_matches_found * float_number) rounded to nearest integer.
If 'ALL' was selected for the above argument value, then this argument will be inserted between each appended copy of the template value. Default value returned if no match is found A reference name for reusing the values parsed by this function.

Stored values are ${refName} (the replacement template string) and ${refName_g#} where "#" is the group number from the regular expression ("0" can be used to refer to the entire match).
Input variable name. If specified, then the value of the variable is used as the input instead of using the previous sample result.

The counter generates a new number each time it is called, starting with 1 and incrementing by +1 each time. The counter can be configured to keep each simulated user's values separate, or to use the same counter for all users. If each user's values is incremented separately, that is like counting the number of iterations through the test plan. A global counter is like counting how many times that request was run.

The counter uses an integer variable to hold the count, which therefore has a maximum of 2,147,483,647.

The counter function instances are now completely independent. [JMeter 2.1.1 and earlier used a fixed thread variable to keep track of the per-user count, so multiple counter functions operated on the same value.] The global counter - "FALSE" - is separately maintained by each counter instance.

Multiple __counter function calls in the same iteration won't increment the value further.
If you want to have a count that increments for each sample, use the function in a Pre-Processor such as .

TRUE if you wish each simulated user's counter to be kept independent and separate from the other users. FALSE for a global counter. A reference name for reusing the value created by this function.

Stored values are of the form ${refName}. This allows you to keep one counter and refer to its value in multiple places. [For JMeter 2.1.1 and earlier this parameter was required.]

The thread number function simply returns the number of the thread currently being executed. These numbers are independent of ThreadGroup, meaning thread #1 in one threadgroup is indistinguishable from thread #1 in another threadgroup, from the point of view of this function.

There are no arguments for this function.

This function does not work in any Configuration elements (e.g. User Defined Variables) as these are run from a separate thread. Nor does it make sense to use it on the Test Plan.

The intSum function can be used to compute the sum of two or more integer values.

JMeter Versions 2.3.1 and earlier required the reference name to be present. The reference name is now optional, but it must not be a valid integer.
The first int value. The second int value. The nth int value. A reference name for reusing the value computed by this function. If specified, the reference name must contain at least one non-numeric character otherwise it will be treated as another int value to be added.

The longSum function can be used to compute the sum of two or more long values.

The first long value. The second long value. The nth long value. A reference name for reusing the value computed by this function. If specified, the reference name must contain at least one non-numeric character otherwise it will be treated as another long value to be added.

The StringFromFile function can be used to read strings from a text file. This is useful for running tests that require lots of variable data. For example when testing a banking application, 100s or 1000s of different account numbers might be required.

See also the CSV Data Set Config test element which may be easier to use. However, that does not currently support multiple input files.

Each time it is called it reads the next line from the file. All threads share the same instance, so different threads will get different lines. When the end of the file is reached, it will start reading again from the beginning, unless the maximum loop count has been reached. If there are multiple references to the function in a test script, each will open the file independently, even if the file names are the same. [If the value is to be used again elsewhere, use different variable names for each function call.]

Function instances are shared between threads, and the file is (re-)opened by whatever thread happens to need the next line of input, so using the threadNumber as part of the file name will result in unpredictable behaviour.

If an error occurs opening or reading the file, then the function returns the string "**ERR**"

Path to the file name. (The path can be relative to the JMeter launch directory) If using optional sequence numbers, the path name should be suitable for passing to DecimalFormat. See below for examples. A reference name - refName - for reusing the value created by this function. Stored values are of the form ${refName}. Defaults to "StringFromFile_". Initial Sequence number (if omitted, the End sequence number is treated as a loop count) Final sequence number (if omitted, seqence numbers can increase without limit)

The file name parameter is resolved when the file is opened or re-opened.

The reference name parameter (if supplied) is resolved every time the function is executed.

Using sequence numbers:

When using the optional sequence numbers, the path name is used as the format string for java.text.DecimalFormat. The current sequence number is passed in as the only parameter. If the optional start number is not specified, the path name is used as is. Useful formatting sequences are:

# - insert the number, with no leading zeros or spaces

000 - insert the number packed out to 3 digits with leading zeros if necessary

Examples:

pin#'.'dat -> pin1.dat, ... pin9.dat, pin10.dat, ... pin9999.dat

pin000'.'dat -> pin001.dat ... pin099.dat ... pin999.dat ... pin9999.dat

pin'.'dat# -> pin.dat1, ... pin.dat9 ... pin.dat999

If more digits are required than there are formatting characters, the number will be expanded as necessary.

To prevent a formatting character from being interpreted, enclose it in single quotes. Note that "." is a formatting character, and must be enclosed in single quotes (though #. and 000. work as expected in locales where the decimal point is also ".")

In other locales (e.g. fr), the decimal point is "," - which means that "#." becomes "nnn,".

See the documentation for DecimalFormat for full details.

If the path name does not contain any special formatting characters, the current sequence number will be appended to the name, otherwise the number will be inserted aaccording to the fomatting instructions.

If the start sequence number is omitted, and the end sequence number is specified, the sequence number is interpreted as a loop count, and the file will be used at most "end" times. In this case the filename is not formatted.

${_StringFromFile(PIN#'.'DAT,,1,2)} - reads PIN1.DAT, PIN2.DAT

${_StringFromFile(PIN.DAT,,,2)} - reads PIN.DAT twice

Note that the "." in PIN.DAT above should not be quoted. In this case the start number is omitted, so the file name is used exactly as is.

The machineName function returns the local host name

A reference name for reusing the value computed by this function.

The machineIP function returns the local IP address

A reference name for reusing the value computed by this function.

The javaScript function executes a piece of JavaScript (not Java!) code and returns its value

The JMeter Javascript function calls a standalone JavaScript interpreter. Javascript is used as a scripting language, so you can do calculations etc.

For details of the language, please see Mozilla Rhino Overview

The following variables are made available to the script:

  • log - the logger for the function
  • ctx - JMeterContext object
  • vars - JMeterVariables object
  • threadName - String containing the current thread name (in 2.3.2 it was misspelt as "theadName")
  • sampler - current Sampler object (if any)
  • sampleResult - previous SampleResult object (if any)
  • props - JMeter Properties object

Rhinoscript allows access to static methods via its Packages object. See the Scripting Java documentation. For example one can access the JMeterContextService static methods thus: Packages.org.apache.jmeter.threads.JMeterContextService.getTotalThreads()

JMeter is not a browser, and does not interpret the JavaScript in downloaded pages.
The JavaScript expression to be executed. For example:
  • new Date() - return the current date and time
  • Math.floor(Math.random()*(${maxRandom}+1)) - a random number between 0 and the variable maxRandom
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - a random number between the variables minRandom and maxRandom
  • "${VAR}"=="abcd"
A reference name for reusing the value computed by this function.
Remember to include any necessary quotes for text strings and JMeter variables. Also, if the expression has commas, please make sure to escape them. For example in:

${__javaScript('${sp}'.slice(7\,99999))}

the comma after 7 is escaped.

The random function returns a random number that lies between the given min and max values.

A number A bigger number A reference name for reusing the value computed by this function.

The RandomString function returns a random String of length using characters in chars to use.

A number length of generated String Chars used to generate String A reference name for reusing the value computed by this function.

The CSVRead function returns a string from a CSV file (c.f. StringFromFile)

NOTE: versions up to 1.9.1 only supported a single file. JMeter versions since 1.9.1 support multiple file names.

In most cases, the newer CSV Data Set Config element is easier to use.

When a filename is first encountered, the file is opened and read into an internal array. If a blank line is detected, this is treated as end of file - this allows trailing comments to be used (N.B. this feature was introduced in versions after 1.9.1)

All subsequent references to the same file name use the same internal array. N.B. the filename case is significant to the function, even if the OS doesn't care, so CSVRead(abc.txt,0) and CSVRead(aBc.txt,0) would refer to different internal arrays.

The *ALIAS feature allows the same file to be opened more than once, and also allows for shorter file names.

Each thread has its own internal pointer to its current row in the file array. When a thread first refers to the file it will be allocated the next free row in the array, so each thread will access a different row from all other threads. [Unless there are more threads than there are rows in the array.]

Note: the function splits the line at every comma by default. If you want to enter columns containing commas, then you will need to change the delimiter to a character that does not appear in any column data, by setting the property: csvread.delimiter

The file (or *ALIAS) to read from The column number in the file. 0 = first column, 1 = second etc. "next" - go to next line of file. *ALIAS - open a file and assign it to the alias

For example, you could set up some variables as follows:

  • COL1a ${__CSVRead(random.txt,0)}
  • COL2a ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
  • COL1b ${__CSVRead(random.txt,0)}
  • COL2b ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
This would read two columns from one line, and two columns from the next available line. If all the variables are defined on the same User Parameters Pre-Processor, then the lines will be consecutive. Otherwise, a different thread may grab the next line.

The function is not suitable for use with large files, as the entire file is stored in memory. For larger files, use CSV Data Set Config element or StringFromFile.

The property function returns the value of a JMeter property. If the property value cannot be found, and no default has been supplied, it returns the property name. When supplying a default value, there is no need to provide a function name - the parameter can be set to null, and it will be ignored.

For example:

  • ${__property(user.dir)} - return value of user.dir
  • ${__property(user.dir,UDIR)} - return value of user.dir and save in UDIR
  • ${__property(abcd,ABCD,atod)} - return value of property abcd (or "atod" if not defined) and save in ABCD
  • ${__property(abcd,,atod)} - return value of property abcd (or "atod" if not defined) but don't save it

The property name to be retrieved. A reference name for reusing the value computed by this function. The default value for the property.

This is a simplified property function which is intended for use with properties defined on the command line. Unlike the __property function, there is no option to save the value in a variable, and if no default value is supplied, it is assumed to be 1. The value of 1 was chosen because it is valid for common test variables such as loops, thread count, ramp up etc.

For example:

Define the property value:

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu

Fetch the values:

${__P(group1.threads)} - return the value of group1.threads

${__P(group1.loops)} - return the value of group1.loops

${__P(hostname,www.dummy.org)} - return value of property hostname or www.dummy.org if not defined

In the examples above, the first function call would return 7, the second would return 1 and the last would return www.dummy.org (unless those properties were defined elsewhere!)

The property name to be retrieved. The default value for the property. If omitted, the default is set to "1".

The log function logs a message, and returns its input string

A string OUT, ERR, DEBUG, INFO (default), WARN or ERROR If non-empty, creates a Throwable to pass to the logger If present, it is displayed in the string. Useful for identifying what is being logged.

The OUT and ERR log level names are used to direct the output to System.out and System.err respectively. In this case, the output is always printed - it does not depend on the current log setting.

For example:
     ${__log(Message)} - written to the log file as   "...thread Name : Message"
     ${__log(Message,OUT)} - written to console window
     ${__log(${VAR},,,VAR=)} - written to log file as "...thread Name VAR=value"

The logn function logs a message, and returns the empty string

A string OUT, ERR, DEBUG, INFO (default), WARN or ERROR If non-empty, creates a Throwable to pass to the logger

The OUT and ERR log level names are used to direct the output to System.out and System.err respectively. In this case, the output is always printed - it does not depend on the current log setting.

For example:
     ${__logn(VAR1=${VAR1},OUT)} - write the value of the variable to the console window

The BeanShell function evaluates the script passed to it, and returns the result.

For full details on using BeanShell, please see the BeanShell web-site at http://www.beanshell.org/

Note that a different Interpreter is used for each independent occurence of the function in a test script, but the same Interpreter is used for subsequent invocations. This means that variables persist across calls to the function.

A single instance of a function may be called from multiple threads. However the function execute() method is synchronised.

If the property "beanshell.function.init" is defined, it is passed to the Interpreter as the name of a sourced file. This can be used to define common methods and variables. There is a sample init file in the bin directory: BeanShellFunction.bshrc.

The following variables are set before the script is executed:

  • log - the logger for the BeanShell function (*)
  • ctx - the current JMeter context variable
  • vars - the current JMeter variables
  • props - JMeter Properties object
  • threadName - the threadName (String)
  • Sampler the current Sampler, if any
  • SampleResult - the current SampleResult, if any
(*) means that this is set before the init file, if any, is processed. Other variables vary from invocation to invocation.

A beanshell script (not a file name) A reference name for reusing the value computed by this function.

Example:

${__BeanShell(123*456)} - returns 56088
${__BeanShell(source("function.bsh"))} - processes the script in function.bsh

Remember to include any necessary quotes for text strings and JMeter variables that represent text strings.

The split function splits the string passed to it according to the delimiter, and returns the original string. If any delimiters are adjacent, "?" is returned as the value. The split strings are returned in the variables ${VAR_1}, ${VAR_2} etc. The count of variables is returned in ${VAR_n}. From JMeter 2.1.2 onwards, a trailing delimiter is treated as a missing variable, and "?" is returned. Also, to allow it to work better with the ForEach controller, __split now deletes the first unused variable in case it was set by a previous split.

Example:

Define VAR="a||c|" in the test plan.

${__split(${VAR},VAR,|)}

This will return the contents of VAR, i.e. "a||c|" and set the following variables:

VAR_n=4 (3 in JMeter 2.1.1 and earlier)

VAR_1=a

VAR_2=?

VAR_3=c

VAR_4=? (null in JMeter 2.1.1 and earlier)

VAR_5=null (in JMeter 2.1.2 and later)
A delimited string, e.g. "a|b|c" A reference name for reusing the value computed by this function. The delimiter character, e.g. |. If omitted, , is used. Note that , would need to be specified as \,.

The XPath function reads an XML file and matches the XPath. Each time the function is called, the next match will be returned. At end of file, it will wrap around to the start. If no nodes matched, then the function will return the empty string, and a warning message will be written to the JMeter log file. Note that the entire NodeList is held in memory.

Example:



${__XPath(/path/to/build.xml, //target/@name)}

This will match all targets in build.xml and return the contents of the next name attribute
a XML file to parse a XPath expression to match nodes in the XML file

The setProperty function sets the value of a JMeter property. The default return value from the function is the empty string, so the function call can be used anywhere functions are valid.

The original value can be returned by setting the optional 3rd parameter to "true".

Properties are global to JMeter, so can be used to communicate between threads and thread groups

The property name to be set. The value for the property. Should the original value be returned?

The time function returns the current time in various formats.

The format to be passed to SimpleDateFormat. The function supports various shorthand aliases, see below. If ommitted, the function returns the current time in milliseconds since the epoch. The name of the variable to set.

If the format string is omitted, then the function returns the current time in milliseconds since the epoch. In versions of JMeter after 2.7, if the format matches "/ddd" (where ddd are decimal digits), then the function returns the current time in milliseconds divided by the value of ddd. For example, "/1000" returns the current time in seconds since the epoch. Otherwise, the current time is passed to SimpleDateFormat. The following shorthand aliases are provided:

  • YMD = yyyyMMdd
  • HMS = HHmmss
  • YMDHMS = yyyyMMdd-HHmmss
  • USER1 = whatever is in the Jmeter property time.USER1
  • USER2 = whatever is in the Jmeter property time.USER2

The defaults can be changed by setting the appropriate JMeter property, e.g. time.YMD=yyMMdd

The jexl function returns the result of evaluating a Commons JEXL expression. See links below for more information on JEXL expressions.

The __jexl function uses Commons JEXL 1, and the __jexl2 function uses Commons JEXL 2

The expression to be evaluated. For example, 6*(5+2) The name of the variable to set.

The following variables are made available to the script:

  • log - the logger for the function
  • ctx - JMeterContext object
  • vars - JMeterVariables object
  • props - JMeter Properties object
  • threadName - String containing the current thread name (in 2.3.2 it was misspelt as "theadName")
  • sampler - current Sampler object (if any)
  • sampleResult - previous SampleResult object (if any)
  • OUT - System.out - e.g. OUT.println("message")

Jexl can also create classes and call methods on them, for example:

Systemclass=log.class.forName("java.lang.System");

now=Systemclass.currentTimeMillis();
Note that the Jexl documentation on the web-site wrongly suggests that "div" does integer division. In fact "div" and "/" both perform normal division. One can get the same effect as follows: i= 5 / 2; i.intValue(); // or use i.longValue()

Versions of JMeter after 2.3.2 allow the expression to contain multiple statements. JMeter 2.3.2 and earlier only processed the first statement (if there were multiple statements a warning was logged).

The V (variable) function returns the result of evaluating a variable name expression. This can be used to evaluate nested variable references (which are not currently supported).

For example, if one has variables A1,A2 and N=1:

  • ${A1} - works OK
  • ${A${N}} - does not work (nested variable reference)
  • ${__V(A${N})} - works OK. A${N} becomes A1, and the __V function returns the value of A1
The variable to be evaluated.

The eval function returns the result of evaluating an expression stored in a variable.

This allows one to read a string from a file, and process any variable references in it. For example, if the variable "query" contains "select ${column} from ${table}" and "column" and "table" contain "name" and "customers", then ${__evalVar(query)} will evaluate as "select name from customers".

The variable to be evaluated.

The eval function returns the result of evaluating a string expression.

This allows one to interpolate variable and function references in a string which is stored in a variable. For example, given the following variables:

  • name=Smith
  • column=age
  • table=birthdays
  • SQL=select ${column} from ${table} where name='${name}'
then ${__eval(${SQL})} will evaluate as "select age from birthdays where name='Smith'".

This can be used in conjunction with CSV Dataset, for example where the both SQL statements and the values are defined in the data file.

The variable to be evaluated.

The char function returns the result of evaluating a list of numbers as Unicode characters. See also __unescape(), below.

This allows one to add arbitrary character values into fields.

The decimal number (or hex number, if prefixed by 0x, or octal, if prefixed by 0) to be converted to a Unicode character.

Examples:
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = &#165; (yen)

The unescape function returns the result of evaluating a Java-escaped string. See also __char() above.

This allows one to add characters to fields which are otherwise tricky (or impossible) to define via the GUI.

The string to be unescaped.

Examples:
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1[tab]2

Function to unescape a string containing HTML entity escapes to a string containing the actual Unicode characters corresponding to the escapes. Supports HTML 4.0 entities.

For example, the string "&#38;lt;Fran&#38;ccedil;ais&#38;gt;" will become "&lt;Fran&ccedil;ais&gt;".

If an entity is unrecognized, it is left alone, and inserted verbatim into the result string. e.g. "&gt;&zzzz;x" will become ">&zzzz;x".

Uses StringEscapeUtils#unescapeHtml(String) from Commons Lang.

The string to be unescaped.

Function which escapes the characters in a String using HTML entities. Supports HTML 4.0 entities.

For example,&quot;bread&quot; &amp; &quot;butter&quot; becomes: &#38;quot;bread&#38;quot; &#38;amp; &#38;quot;butter&#38;quot;.

Uses StringEscapeUtils#escapeHtml(String) from Commons Lang.

The string to be escaped.

The FileToString function can be used to read an entire file. Each time it is called it reads the entire file.

If an error occurs opening or reading the file, then the function returns the string "**ERR**"

Path to the file name. (The path can be relative to the JMeter launch directory) The encoding to be used to read the file. If not specified, the platform default is used. A reference name - refName - for reusing the value created by this function. Stored values are of the form ${refName}.

The file name, encoding and reference name parameters are resolved every time the function is executed.

The samplerName function returns the name (i.e. label) of the current sampler.

The function does not work in Test elements that don't have an associated sampler. For example the Test Plan. Configuration elements also don't have an associated sampler. However some Configuration elements are referenced directly by samplers, such as the HTTP Header Manager and Http Cookie Manager, and in this case the functions are resolved in the context of the Http Sampler. Pre-Processors, Post-Processors and Assertions always have an associated Sampler.

A reference name - refName - for reusing the value created by this function. Stored values are of the form ${refName}.

The TestPlanName function returns the name of the current test plan (can be used in Including Plans to know the name of the calling test plan).

Most variables are set by calling functions or by test elements such as User Defined Variables; in which case the user has full control over the variable name that is used. However some variables are defined internally by JMeter. These are listed below.

  • COOKIE_cookiename - contains the cookie value (see )
  • JMeterThread.last_sample_ok - whether or not the last sample was OK - true/false. Note: this is updated after PostProcessors and Assertions have been run.
  • START variables (see next section)

The set of JMeter properties is initialised from the system properties defined when JMeter starts; additional JMeter properties are defined in jmeter.properties, user.properties or on the command line.

Some built-in properties are defined by JMeter. These are listed below. For convenience, the START properties are also copied to variables with the same names.

  • START.MS - JMeter start time in milliseconds
  • START.YMD - JMeter start time as yyyyMMdd
  • START.HMS - JMeter start time as HHmmss
  • TESTSTART.MS - test start time in milliseconds

Please note that the START variables / properties represent JMeter startup time, not the test start time. They are mainly intended for use in file names etc.

apache-jmeter-2.8/xdocs/usermanual/build-test-plan.xml0000644000175000017500000001713412032647214022451 0ustar ebourgebourg ]> User's Manual: Building a Test Plan

A test plan describes a series of steps JMeter will execute when run. A complete test plan will consist of one or more Thread Groups, logic conrollers, sample generating controllers, listeners, timers, assertions, and configuration elements.

Adding elements to a test plan can be done by right-clicking on an element in the tree, and choosing a new element from the "add" list. Alternatively, elements can be loaded from file and added by choosing the "merge" or "open" option.

To remove an element, make sure the element is selected, right-click on the element, and choose the "remove" option.

To load an element from file, right click on the existing tree element to which you want to add the loaded element, and select the "merge" option. Choose the file where your elements are saved. JMeter will merge the elements into the tree.

To save tree elements, right click on an element and choose the "Save Selection As ..." option. JMeter will save the element selected, plus all child elements beneath it. In this way, you can save test tree fragments and individual elements for later use.

The workbench is not automatically saved with the test plan, but it can be saved separately as above.

Any element in the test tree will present controls in JMeter's right-hand frame. These controls allow you to configure the behavior of that particular test element. What can be configured for an element depends on what type of element it is.

The Test Tree itself can be manipulated by dragging and dropping components around the test tree.

Although it is not required, we recommend that you save the Test Plan to a file before running it. To save the Test Plan, select "Save" or "Save Test Plan As ..." from the File menu (with the latest release, it is no longer necessary to select the Test Plan element first).

JMeter allows you to save the entire Test Plan tree or only a portion of it. To save only the elements located in a particular "branch" of the Test Plan tree, select the Test Plan element in the tree from which to start the "branch", and then click your right mouse button to access the "Save Selection As ..." menu item. Alternatively, select the appropriate Test Plan element and then select "Save Selection As ..." from the Edit menu.

To run your test plan, choose "Start" (Control + r) from the "Run" menu item. When JMeter is running, it shows a small green box at the right hand end of the section just under the menu bar. You can also check the "Run" menu. If "Start" is disabled, and "Stop" is enabled, then JMeter is running your test plan (or, at least, it thinks it is).

The numbers to the left of the green box are the number of active threads / total number of threads. These only apply to a locally run test; they do not include any threads started on remote systems when using client-server mode.

There are two types of stop command available from the menu:

  • Stop (Control + '.') - stops the threads immediately if possible. In Versions of JMeter after 2.3.2, many samplers are now Interruptible which means that active samples can be terminated early. The stop command will check that all threads have stopped within the default timeout, which is 5000 ms = 5 seconds. [This can be changed using the JMeter property jmeterengine.threadstop.wait] If the threads have not stopped, then a message is displayed. The Stop command can be retried, but if it fails, then it is necessary to exit JMeter to clean up.
  • Shutdown (Control + ',')- requests the threads to stop at the end of any current work. Will not interrupt any active samples. The modal shutdown dialog box will remain active until all threads have stopped.
Versions of JMeter after 2.3.2 allow a Stop to be initiated if Shutdown is taking too long. Close the Shutdown dialog box and select Run/Stop, or just press Control + '.'.

When running JMeter in non-GUI mode, there is no Menu, and JMeter does not react to keystrokes such as Control + '.'. So in versions after 2.3.2, JMeter non-GUI mode will listen for commands on a specific port (default 4445, see the JMeter property jmeterengine.nongui.port). In versions after 2.4, JMeter supports automatic choice of an alternate port if the default port is being used (for example by another JMeter instance). In this case, JMeter will try the next higher port, continuing until it reaches the JMeter property jmeterengine.nongui.maxport) which defaults to 4455. If maxport is less than or equal to port, port scanning will not take place. Note that JMeter 2.4 and earlier did not set up the listener for non-GUI clients, only non-GUI standalone tests; this has been fixed.

The chosen port is displayed in the console window.
The commands currently supported are:

  • Shutdown - graceful shutdown
  • StopTestNow - immediate shutdown
These commands can be sent by using the shutdown[.cmd|.sh] or stoptest[.cmd|.sh] script respectively. The scripts are to be found in the JMeter bin directory. The commands will only be accepted if the script is run from the same host.

JMeter reports warnings and errors to the jmeter.log file, as well as some information on the test run itself. Just occasionally there may be some errors that JMeter is unable to trap and log; these will appear on the command console. If a test is not behaving as you expect, please check the log file in case any errors have been reported (e.g. perhaps a syntax error in a function call).

Sampling errors (e.g. HTTP 404 - file not found) are not normally reported in the log file. Instead these are stored as attributes of the sample result. The status of a sample result can be seen in the various different Listeners.

apache-jmeter-2.8/xdocs/usermanual/build-db-test-plan.xml0000644000175000017500000002005612032647214023031 0ustar ebourgebourg ]> Martin Ramshaw User's Manual: Building a Database Test Plan

In this section, you will learn how to create a basic Test Plan to test a database server. You will create ten users that send five SQL requests to the database server. Also, you will tell the users to run their tests three times. So, the total number of requests is (10 users) x (2 requests) x (repeat 3 times) = 60 JDBC requests. To construct the Test Plan, you will use the following elements: Thread Group, , .

This example uses the MySQL database driver. To use this driver, its containing .jar file must be copied to the JMeter lib directory (see JMeter's Classpath for more details).

The first step you want to do with every JMeter Test Plan is to add a Thread Group element. The Thread Group tells JMeter the number of users you want to simulate, how often the users should send requests, and the how many requests they should send.

Go ahead and add the ThreadGroup element by first selecting the Test Plan, clicking your right mouse button to get the Add menu, and then select Add --> ThreadGroup.

You should now see the Thread Group element under Test Plan. If you do not see the element, then "expand" the Test Plan tree by clicking on the Test Plan element.

Next, you need to modify the default properties. Select the Thread Group element in the tree, if you have not already selected it. You should now see the Thread Group Control Panel in the right section of the JMeter window (see Figure §-num;.1 below)

Figure §-num;.1. Thread Group with Default Values

Start by providing a more descriptive name for our Thread Group. In the name field, enter JDBC Users.

You will need a valid database, database table, and user-level access to that table. In the example shown here, the database is 'mydb' and the table name is 'Stocks'.

Next, increase the number of users to 10.

In the next field, the Ramp-Up Period, leave the the default value of 0 seconds. This property tells JMeter how long to delay between starting each user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will finish starting all of your users by the end of the 5 seconds. So, if we have 5 users and a 5 second Ramp-Up Period, then the delay between starting users would be 1 second (5 users / 5 seconds = 1 user per second). If you set the value to 0, then JMeter will immediately start all of your users.

Finally, enter a value of 3 in the Loop Count field. This property tells JMeter how many times to repeat your test. To have JMeter repeatedly run your Test Plan, select the Forever checkbox.

In most applications, you have to manually accept changes you make in a Control Panel. However, in JMeter, the Control Panel automatically accepts your changes as you make them. If you change the name of an element, the tree will be updated with the new text after you leave the Control Panel (for example, when selecting another tree element).

See Figure §-num;.2 for the completed JDBC Users Thread Group.

Figure §-num;.2. JDBC Users Thread Group

Now that we have defined our users, it is time to define the tasks that they will be performing. In this section, you will specify the JDBC requests to perform.

Begin by selecting the JDBC Users element. Click your right mouse button to get the Add menu, and then select Add --> Config Element --> JDBC Connection Configuration. Then, select this new element to view its Control Panel (see Figure §-num;.3).

Set up the following fields (these assume we will be using a local MySQL database called test):

  • Variable name bound to pool. This needs to uniquely identify the configuration. It is used by the JDBC Sampler to identify the configuration to be used.
  • Database URL: jdbc:mysql://localhost:3306/test
  • JDBC Driver class: com.mysql.jdbc.Driver
  • Username: guest
  • Password: password for guest

The other fields on the screen can be left as the defaults.

JMeter creates a database connection pool with the configuration settings as specified in the Control Panel. The pool is referred to in JDBC Requests in the 'Variable Name' field. Several different JDBC Configuration elements can be used, but they must have unique names. Every JDBC Request must refer to a JDBC Configuration pool. More than one JDBC Request can refer to the same pool.

Figure §-num;.3. JDBC Configuration

Selecting the JDBC Users element again. Click your right mouse button to get the Add menu, and then select Add --> Sampler --> JDBC Request. Then, select this new element to view its Control Panel (see Figure §-num;.4).

Figure §-num;.4. JDBC Request

In our Test Plan, we will make two JDBC requests. The first one is for Eastman Kodak stock, and the second is Pfizer stock (obviously you should change these to examples appropriate for your particular database). These are illustrated below.

JMeter sends requests in the order that you add them to the tree.

Start by editing the following properties (see Figure §-num;.5):

  • Change the Name to "Kodak".
  • Enter the Pool Name: MySQL (same as in the configuration element)
  • Enter the SQL Query String field.

Figure §-num;.5. JDBC Request for Eastman Kodak stock

Next, add the second JDBC Request and edit the following properties (see Figure §-num;.6):

  • Change the Name to "Pfizer".
  • Enter the SQL Query String field.

Figure §-num;.6. JDBC Request for Pfizer stock

The final element you need to add to your Test Plan is a Listener. This element is responsible for storing all of the results of your JDBC requests in a file and presenting a visual model of the data.

Select the JDBC Users element and add a listener (Add --> Listener --> Graph Results).

Figure §-num;.7. Graph results Listener
apache-jmeter-2.8/xdocs/usermanual/get-started.xml0000644000175000017500000006510712032647214021673 0ustar ebourgebourg ]> User's Manual: Getting Started

The easiest way to begin using JMeter is to first download the latest production release and install it. The release contains all of the files you need to build and run most types of tests, e.g. Web (HTTP/HTTPS), FTP, JDBC, LDAP, Java, and JUnit.

If you want to perform JDBC testing, then you will, of course, need the appropriate JDBC driver from your vendor. JMeter does not come with any JDBC drivers.

JMeter includes the JMS API jar, but does not include a JMS client implementation. If you want to run JMS tests, you will need to download the appropriate jars from the JMS provider.

See the JMeter Classpath section for details on installing additional jars.

Next, start JMeter and go through the Building a Test Plan section of the User Guide to familiarize yourself with JMeter basics (for example, adding and removing elements).

Finally, go through the appropriate section on how to build a specific type of Test Plan. For example, if you are interested in testing a Web application, then see the section Building a Web Test Plan. The other specific Test Plan sections are:

Once you are comfortable with building and running JMeter Test Plans, you can look into the various configuration elements (timers, listeners, assertions, and others) which give you more control over your Test Plans.

JMeter requires your computing environment meets some minimum requirements.

JMeter requires a fully compliant JVM 1.5 or higher.

Because JMeter uses only standard Java APIs, please do not file bug reports if your JRE fails to run JMeter because of JRE implementation issues.

JMeter is a 100% Java application and should run correctly on any system that has a compliant Java implementation.

Operating systems tested with JMeter can be view on this page on JMeter wiki.

Even if your OS is not listed on the wiki page, JMeter should run on it provided that the JVM is compliant.

If you plan on doing JMeter development, then you will need one or more optional packages listed below.

If you want to build the JMeter source or develop JMeter plugins, then you will need a fully compliant JDK 1.5 or higher.

JMeter comes with Apache's Xerces XML parser. You have the option of telling JMeter to use a different XML parser. To do so, include the classes for the third-party parser in JMeter's classpath, and update the jmeter.properties file with the full classname of the parser implementation.

JMeter has extensive Email capabilities. It can send email based on test results, and has a POP3(S)/IMAP(S) sampler. It also has an SMTP sampler.

To test a web server using SSL encryption (HTTPS), JMeter requires that an implementation of SSL be provided, as is the case with Sun Java 1.4 and above. If your version of Java does not include SSL support, then it is possible to add an external implementation. Include the necessary encryption packages in JMeter's classpath. Also, update system.properties to register the SSL Provider.

JMeter HTTP defaults to protocol level TLS. This can be changed by editting the JMeter property "https.default.protocol" in jmeter.properties or user.properties.

The JMeter HTTP samplers are configured to accept all certificates, whether trusted or not, regardless of validity periods etc. This is to allow the maximum flexibility in testing servers.

If the server requires a client certificate, this can be provided.

There is also the , for greater control of certificates.

The JMeter proxy server (see below) supports recording HTTPS (SSL) in versions after 2.3.4

The SMTP sampler can optionally use a local trust store or trust all certificates.

You will need to add your database vendor's JDBC driver to the classpath if you want to do JDBC testing. Make sure the file is a jar file, not a zip.

JMeter now includes the JMS API from Apache Geronimo, so you just need to add the appropriate JMS Client implementation jar(s) from the JMS provider. Please refer to their documentation for details. There may also be some information on the JMeter Wiki.

At the time of writing, the current version of ActiveMQ is 5.3.2. You will need to add the jar activemq-all-5.3.2.jar to your classpath, e.g. by storing it in the lib/ directory.

Alternatively, add the jar activemq-core-5.3.2.jar to the classpath; this requires the javax/management/j2ee classes which can be found in the Apache Geronimo jar geronimo-j2ee-management_1.0_spec-1.0.jar. The other required jars (such as commons-logging) are already included with JMeter.

See http://activemq.apache.org/initial-configuration.html for details.

See the JMeter Classpath section for more details on installing additional jars.

We recommend that most users run the latest release.

To install a release build, simply unzip the zip/tar file into the directory where you want JMeter to be installed. Provided that you have a JRE/JDK correctly installed and the JAVA_HOME environment variable set, there is nothing more for you to do.

Note: there can be problems (especially with client-server mode) if the directory path contains any spaces.

The installation directory structure should look something like this (for version 2.7):

apache-jmeter-2.7
apache-jmeter-2.7/bin
apache-jmeter-2.7/docs
apache-jmeter-2.7/extras
apache-jmeter-2.7/lib/
apache-jmeter-2.7/lib/ext
apache-jmeter-2.7/lib/junit
apache-jmeter-2.7/printable_docs
You can rename the parent directory (i.e. apache-jmeter-2.7) if you want, but do not change any of the sub-directory names.


To run JMeter, run the jmeter.bat (for Windows) or jmeter (for Unix) file. These files are found in the bin directory. After a short pause, the JMeter GUI should appear.

There are some additional scripts in the bin directory that you may find useful. Windows script files (the .CMD files require Win2K or later):

  • jmeter.bat - run JMeter (in GUI mode by default)
  • jmeter-n.cmd - drop a JMX file on this to run a non-GUI test
  • jmeter-n-r.cmd - drop a JMX file on this to run a non-GUI test remotely
  • jmeter-t.cmd - drop a JMX file on this to load it in GUI mode
  • jmeter-server.bat - start JMeter in server mode
  • mirror-server.cmd - runs the JMeter Mirror Server in non-GUI mode
  • shutdown.cmd - Run the Shutdown client to stop a non-GUI instance gracefully
  • stoptest.cmd - Run the Shutdown client to stop a non-GUI instance abruptly
Note: the special name LAST can be used with jmeter-n.cmd, jmeter-t.cmd and jmeter-n-r.cmd and means the last test plan that was run interactively.

The environment variable JVM_ARGS can be used to override JVM settings in the jmeter.bat script. For example:

set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=propvalue"
jmeter -t test.jmx ...

Un*x script files; should work on most Linux/Unix systems:

  • jmeter - run JMeter (in GUI mode by default). Defines some JVM settings which may not work for all JVMs.
  • jmeter-server - start JMeter in server mode (calls jmeter script with appropriate parameters)
  • jmeter.sh - very basic JMeter script with no JVM options specified.
  • mirror-server.sh - runs the JMeter Mirror Server in non-GUI mode
  • shutdown.sh - Run the Shutdown client to stop a non-GUI instance gracefully
  • stoptest.sh - Run the Shutdown client to stop a non-GUI instance abruptly

It may be necessary to edit the jmeter shell script if some of the JVM options are not supported by the JVM you are using. The JVM_ARGS environment variable can be used to override or set additional JVM options, for example:

JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]
will override the HEAP settings in the script.

JMeter automatically finds classes from jars in the following directories:

  • JMETER_HOME/lib - used for utility jars
  • JMETER_HOME/lib/ext - used for JMeter components and add-ons

If you have developed new JMeter components, then you should jar them and copy the jar into JMeter's lib/ext directory. JMeter will automatically find JMeter components in any jars found here.

Support jars (libraries etc) should be placed in the lib directory.

If you don't want to put JMeter extension jars in the lib/ext directory, then define the property search_paths in jmeter.properties. Do not use lib/ext for utility jars; it is only intended for JMeter components.

Other jars (such as JDBC, JMS implementations and any other support libaries needed by the JMeter code) should be placed in the lib directory - not the lib/ext directory

Note: JMeter will only find .jar files, not .zip.

You can also install utility Jar files in $JAVA_HOME/jre/lib/ext, or (since 2.1.1) you can set the property user.classpath in jmeter.properties

Note that setting the CLASSPATH environment variable will have no effect. This is because JMeter is started with "java -jar", and the java command silently ignores the CLASSPATH variable, and the -classpath/-cp options when -jar is used. [This occurs with all Java programs, not just JMeter.]

If you are testing from behind a firewall/proxy server, you may need to provide JMeter with the firewall/proxy server hostname and port number. To do so, run the jmeter.bat/jmeter file from a command line with the following parameters:

-H [proxy server hostname or ip address]
-P [proxy server port]
-N [nonproxy hosts] (e.g. *.apache.org|localhost)
-u [username for proxy authentication - if required]
-a [password for proxy authentication - if required]

Example: jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost

Alternatively, you can use --proxyHost, --proxyPort, --username, and --password

JMeter also has its own in-built HTTP Proxy Server, which can be used for recording HTTP or HTTPS browser sessions. This is not to be confused with the proxy settings described above, which are used when JMeter makes HTTP or HTTPS requests itself.

For non-interactive testing, you may choose to run JMeter without the GUI. To do so, use the following command options

-n This specifies JMeter is to run in non-gui mode

-t [name of JMX file that contains the Test Plan].

-l [name of JTL file to log sample results to].

-j [name of JMeter run log file].

-r Run the test in the servers specified by the JMeter property "remote_hosts"

-R [list of remote servers] Run the test in the specified remote servers

The script also lets you specify the optional firewall/proxy server information:

-H [proxy server hostname or ip address]
-P [proxy server port]

Example: jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

If the property jmeterengine.stopfail.system.exit is set to true (default is false), then JMeter will invoke System.exit(1) if it cannot stop all threads. Normally this is not necessary.

For distributed testing, run JMeter in server mode on the remote node(s), and then control the server(s) from the GUI. You can also use non-GUI mode to run remote tests. To start the server(s), run jmeter-server/jmeter-server.bat on each server host.

The script also lets you specify the optional firewall/proxy server information:

-H [proxy server hostname or ip address]
-P [proxy server port]

Example: jmeter-server -H my.proxy.server -P 8000

If you want the server to exit after a single test has been run, then define the JMeter property server.exitaftertest=true.

To run the test from the client in non-GUI mode, use the following command:

jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-Z]
where:
-G is used to define JMeter properties to be set in the servers
-X means exit the servers at the end of the test
-Rserver1,server2 - can be used instead of -r to provide a list of servers to start
  Overrides remote_hosts, but does not define the property.

If the property jmeterengine.remote.system.exit is set to true (default is false), then JMeter will invoke System.exit(0) after stopping RMI at the end of a test. Normally this is not necessary.

Java system properties, JMeter properties, and logging properties can be overriden directly on the command line (instead of modifying jmeter.properties). To do so, use the following options:

-D[prop_name]=[value] - defines a java system property value.

-J[prop name]=[value] - defines a local JMeter property.

-G[prop name]=[value] - defines a JMeter property to be sent to all remote servers.

-G[propertyfile] - defines a file containing JMeter properties to be sent to all remote servers.

-L[category]=[priority] - overrides a logging setting, setting a particular category to the given priority level.

The -L flag can also be used without the category name to set the root logging level.

Examples:

jmeter -Duser.dir=/home/mstover/jmeter_stuff \
    -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG

jmeter -LDEBUG

N.B.
The command line properties are processed early in startup, but after the logging system has been set up. Attempts to use the -J flag to update log_level or log_file properties will have no effect.

JMeter does not generally use pop-up dialog boxes for errors, as these would interfere with running tests. Nor does it report any error for a mis-spelt variable or function; instead the reference is just used as is. See Functions and Variables for more information.

If JMeter detects an error during a test, a message will be written to the log file. The log file name is defined in the jmeter.properties file (or using the -j option, see below). It defaults to jmeter.log, and will be found in the directory from which JMeter was launched.

Since JMeter 2.6, menu Options > Log Viewer displays the log file in a bottom pane on main JMeter window.

Since JMeter 2.7 (GUI mode), the number of error/fatal messages logged in the log file is displayed at top-right.

Error/fatal counter

JMeter versions after 2.2 added a new command-line option, -j jmeterlogfile. This is processed after the initial properties file is read, and before any further properties are processed. It therefore allows the default of jmeter.log to be overridden. The jmeter scripts that take a test plan name as a parameter (e.g. jmeter-n.cmd) have been updated to define the log file using the test plan name, e.g. for the test plan Test27.jmx the log file is set to Test27.log.

When running on Windows, the file may appear as just jmeter unless you have set Windows to show file extensions. [Which you should do anyway, to make it easier to detect viruses and other nasties that pretend to be text files...]

As well as recording errors, the jmeter.log file records some information about the test run. For example:

10/17/2003 12:19:20 PM INFO  - jmeter.JMeter: Version 1.9.20031002 
10/17/2003 12:19:45 PM INFO  - jmeter.gui.action.Load: Loading file: c:\mytestfiles\BSH.jmx 
10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Running the test! 
10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1. 
10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Continue on error 
10/17/2003 12:19:52 PM INFO  - jmeter.threads.JMeterThread: Thread BSH1-1 started 
10/17/2003 12:19:52 PM INFO  - jmeter.threads.JMeterThread: Thread BSH1-1 is done 
10/17/2003 12:19:52 PM INFO  - jmeter.engine.StandardJMeterEngine: Test has ended 	

The log file can be helpful in determining the cause of an error, as JMeter does not interrupt a test to display an error dialogue.

Invoking JMeter as "jmeter -?" will print a list of all the command-line options. These are shown below.

        -h, --help
                print usage information and exit
        -v, --version
                print the version information and exit
        -p, --propfile {argument}
                the jmeter property file to use
        -q, --addprop {argument}
                additional property file(s)
        -t, --testfile {argument}
                the jmeter test(.jmx) file to run
        -j, --jmeterlogfile {argument}
                the jmeter log file
        -l, --logfile {argument}
                the file to log samples to
        -n, --nongui
                run JMeter in nongui mode
        -s, --server
                run the JMeter server
        -H, --proxyHost {argument}
                Set a proxy server for JMeter to use
        -P, --proxyPort {argument}
                Set proxy server port for JMeter to use
        -u, --username {argument}
                Set username for proxy server that JMeter is to use
        -a, --password {argument}
                Set password for proxy server that JMeter is to use
        -J, --jmeterproperty {argument}={value}
                Define additional JMeter properties
        -G, --globalproperty (argument)[=(value)]
                Define Global properties (sent to servers)
                e.g. -Gport=123
                 or -Gglobal.properties
        -D, --systemproperty {argument}={value}
                Define additional System properties
        -S, --systemPropertyFile {filename}
                a property file to be added as System properties
        -L, --loglevel {argument}={value}
                Define loglevel: [category=]level 
                e.g. jorphan=INFO or jmeter.util=DEBUG
        -r, --runremote (non-GUI only)
                Start remote servers (as defined by the jmeter property remote_hosts)
        -R, --remotestart  server1,... (non-GUI only)
                Start these remote servers (overrides remote_hosts)
        -d, --homedir {argument}
                the jmeter home directory to use
        -X, --remoteexit
                Exit the remote servers at end of test (non-GUI)

Note: the JMeter log file name is formatted as a SimpleDateFormat (applied to the current date) if it contains paired single-quotes, .e.g. 'jmeter_'yyyyMMddHHmmss'.log'

If the special name LAST is used for the -t, -j or -l flags, then JMeter takes that to mean the last test plan that was run in interactive mode.

Prior to version 2.5.1, JMeter invoked System.exit() when a non-GUI test completed. This caused problems for applications that invoke JMeter directly, so JMeter no longer invokes System.exit() for a normal test completion. [Some fatal errors may still invoke System.exit()] JMeter will exit all the non-daemon threads it starts, but it is possible that some non-daemon threads may still remain; these will prevent the JVM from exitting. To detect this situation, JMeter starts a new daemon thread just before it exits. This daemon thread waits a short while; if it returns from the wait, then clearly the JVM has not been able to exit, and the thread prints a message to say why.

The property jmeter.exit.check.pause can be used to override the default pause of 2000ms (2secs). If set to 0, then JMeter does not start the daemon thread.

If you wish to modify the properties with which JMeter runs you need to either modify the jmeter.properties in the /bin directory or create your own copy of the jmeter.properties and specify it in the command line.

Note: since 2.2, you can define additional JMeter properties in the file defined by the JMeter property user.properties which has the default value user.properties. The file will be automatically loaded if it is found in the current directory or if it is found in the JMeter bin directory. Similarly, system.properties is used to update system properties. You can specify the class for your SSL implementation if you don't want to use the built-in Java implementation. You can specify an implementation as your XML parser. The default value is: org.apache.xerces.parsers.SAXParser Comma-delimited list of remote JMeter hosts (or host:port if required). If you are running JMeter in a distributed environment, list the machines where you have JMeter remote servers running. This will allow you to control those servers from this machine's GUI A list of components you do not want to see in JMeter's menus. As JMeter has more and more components added, you may wish to customize your JMeter to show only those components you are interested in. You may list their classname or their class label (the string that appears in JMeter's UI) here, and they will no longer appear in the menus. List of paths (separated by ;) that JMeter will search for JMeter add-on classes; for example additional samplers. This is in addition to any jars found in the lib/ext directory. List of paths that JMeter will search for utility classes. This is in addition to any jars found in the lib directory. Name of file containing additional JMeter properties. These are added after the initial property file, but before the -q and -J options are processed. Name of file containing additional system properties. These are added before the -S and -D options are processed.

The command line options and properties files are processed in the following order:

  • -p propfile
  • jmeter.properties (or the file from the -p option) is then loaded
  • -j logfile
  • Logging is initialised
  • user.properties is loaded
  • system.properties is loaded
  • all other command-line options are processed

See also the comments in the jmeter.properties, user.properties and system.properties files for further information on other settings you can change.

apache-jmeter-2.8/xdocs/usermanual/include_controller_tutorial.pdf0000644000175000017500000012612612032647214025231 0ustar ebourgebourg%PDF-1.4 %äöÜß 1 0 obj << /Length 2 0 R /Filter /FlateDecode >> stream xœÕ\[‹ì6~˜ÿÐÏ éèfˆ°Ðîé†<öd/°]’—ýû+É®‹Tefö,$„s¸-[ªúªê«‹c.ÿy}ùõb.ß™«½ÌÖ¥¿ãšÿþío—¿üéò¯ý×üßoÿx}ÙÞ__Ö|g4á:]Þÿzùþi/v¹¼ÿýòƒ±ÆoŸ/ïÿ|}qñêÒªtËf2ó~ÑÆk„‹q¿¯®,û•páÊz,³tÓ͸ãârõpqÛ/Mtå¾_™Ó^aá~e¥+öÊžÍÝ,æÍLû/>^—ó—ÈGÞÍãØ¡ã?ᤸðxï#‰ó§ Ï1ï$ìv ¿Ys<Þ'ñ;ÞèPlÖ¦#Ð>,¿|ì%)7³XÛnÐ8[ºÑÑá¶ô„-©sƒŸÝJšIg7O8š ´ÁÅDëlBFúù‘0’þØã¶ÉðÛ6PÚ„ûj<`C«ì„‡ 쬀%<æÃø"›ó«ÒcÀibö i•„ax·] ÅKB|‚d’È=ý›•dó“ߎ­[.Õˆ€vô„Çn7ü~&#X`?Kƒ;&W\ƒV/L"0“ Xh:ºae®sÆ_ WëÅ>a§'±Y\Òá\£ˆfܪËX`€ÛžÉZ»‚í2$ÝIÓu…[W†l7fb Ù€'ö ^Q¾!Ž,•Íï˜Ó QxvÇœ%¼~¢'9fà¡Þ/šÍt”<3;z¬é`ã`f=W‹ØY1¼ÆÔ=LQ5sñÁ1ÛFf ÙpŸ°竟`èÁ}´ÎƒÉÆ¢/ãåüîÚDÒ¸ié?nÍF‡q8ÔÞÄÔœýËT¼'øöcqf·vM˜ٯ˞¿±Óû+mŠöN]ºûQ„s‹¿/§Fl¯e¡p뙢žH] óðR»ÐdV‚–Õ¢ðf‘#Ù¥L ,hQÈÊÑ !¢’‹½g°€‹ü¿áTîI/IæÎQZð–M<ýyîçË>Ë>òÛJœ½Ã^–µrßÅ/0¹•‹yÀxš¬ðÖep.’E2WJœÒ†b9êñ³'ž„à$ô#Æ¥«_º2Z§5ë´1ÙçÉjKÿà& æØ’pöJ!e2Øó@m߈àÇ ùöœ¹2™2;Í®ùfîÎ$’š#šÃêê{±içµÒÜGÎýз²ôTßÒ¾ü"u݉açºf9ÁyéÚ‰Ä\¹N:ä!õ ºÒWn×äÛx`¾i³¸ WÛ ü(£ûZ¤˜a%>ë1Æ?¦ya‰ø7eéÜ9|ÃxŽdù²9C"Ë 6°;‡Ô Õ…ÄÆ»GÊhÃ[YÄ=¤ÄRˆ†y~Š[]nâÌ\9¤ñQŠ× #ï;§G‰ÆæÅ‰C&¨(†ª3¿‰¡µä,ÿa·@õ^;×Ïëcj‘Od-V\ ]—W4µÊ 3¦1`½n,ò´P»ƒå´Ü¢¢O)db«z_s ó¼C‘=8ĶTÃØÎ4¹Š"ÚyXÑ2d±–”Õ${jâNÕÉ×ür,|ØÀ³íéV…ˆƒÀyÂYʇ1»*µŽ ±ý”'¥m:#Šœ<ºJg)œ.–¤Ðh¬ÈesCué$6“óú'‚`ጛ5HnT Iúk ³\5`·¸X–µPÇ CzUe€çH'¿P úÜD ÚT+/I#eŽ[* 0’ãm3¼ß ª`> ÞÝCDX¢È©SmiÑfœÏ‹T_‰¸ÙXöJÈÁ3—0ËÞ«Î@Ê3Nû°¨ÊÓÉü´ú’ȰÏ=Õ§°I~±iËíê+Q¢L´¥}}a…U-ö?JÂ<,ùµb „]Á¢02·q„Õñ˜k—¶›Ä‘ª“Cz»:Æë?£¢EJL}¼¬³ky«ÇW ƒzÑ¥ÍFæ&p¢sàD!Qg8ébØ¥œÓú“Ó–X„Ý!ÐÁ|¨8(ëLR¦ÏÝs’³¯íh°–dJ!Fò'àOjÇRÐvòóUá¿öÖ™è0X´”-7ýެµ¹æx^pU¦rŒ·elÝÛ*ÄP+†!£z‹0/µWÞÔç”Ñ A2ð*‹–Ü€í'¦7º86QÖDDGUà˜¥s$gU5e¢v§Kš@ù¸ëó~-ÝûbÁPÖà«ÂL®Ôɰ¦˜âo䀒°§›vhCåUJe§ 霕k@Ë:È• jú¶ („  *0ˆìHH;¸Í]¸Ã®s±õ‘“JØ\`åiTxâ“W0Œ„±ôcìôLǯ^ á(Ó wÐq§!ÝøS•ªJÓ’yš ¶ÙÇ€ÚÏ1"D² {{ѼâyºȧÚge>H¤RáV¥í* Êxÿ¤¢°UÊëœø¬âWYiŠr»÷D6W1ËvJk+vËŽ0"QÖä`3KƒÉ*+×Ú*Ä0ÞˆIîýbF¦Ðÿ×õŽe™ŽÃøO6uîë¤þÎÉÄBIÿJ(B½r}ñ´¡ª—Ž4j ˜Ÿ…PVÅoÌì׊õ¢£üfhgºp£‰ŽËRØPWFOºÊyÑÅ/tÊ“E–Êœ4›aÝpKSÆÓOž®9>.Ç2Ôû(ã:lh5°tÿdhÕåQ„ÄRõTííFPìB.yd@Ë?ø¸ÇаS°Ø~YÖJqŸ!öí ïÕ!™PÎX$‘Qå/Erç£äУt|žÄNºÝ†Ðv,Qb¸Umèé¢mß)d± ±ÊÄÀ71¡1Ê㎹¤w›:??žE•&2ß ôþÿPîOÞ>4úþ®€à}C\Á~¬iÛm¹¥µ:…)Êâöé Ì[·GZéТ¬$u« (°wá‰àë7£ÆhþILosv "ë콪Kq2;òzuù‚do‰.(sJ˜‰-âùÈŒCŠ+òË€±¢º4÷Ö³µ{4æªoüµ!p(}騨÷/­ÖeãZéyœ4ŸŒÌÚ) ¢9ØèÓ–öŽßh¡XT%Éni’À¡\èQœÌ* Å*æsáµÁž¾µ3ZͪÛÌ ë™ ™}µñË÷v<<ßcCæoï_™ÎÓ–î$›^ÍÙáⶪ0{wÇMS5ÖöMþŒÒžc {Rodçùmì¤ÊÒ´Ë%ŸÑÈå\È%«tfÙÔ¼ö~Ôáˆ#ûÎê!wò8aVò•^/räã¶ŽDŸX†ã/"0 k;‹Ñ÷Óµ²´ä;XÖvÕ7N§ŒBkDã´G ëlw9‘2*wuÔSüfNd¡á»­[œ13GS"Hà‰{6ÑlÍÇyQ(u4&ÐÕ¬ñr8a0V+K?ˆÕéŒÙ––nyÞrwþÔ`ÅÓìØØ~[vFûÃ\HäóUuŸ8šÌÁÚèÒ`©=±ÆYtæ> stream ÿØÿàJFIFÿÛC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀv£"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ë(¢£óáûGÙüØüý›ü½ÃvÜã8ëŒ÷  (¢Š(¨ÒxdšHRXÚX±æ `Y3ÈÈíš’€ *9ç†ÚšâXâ‰~óÈÁTvêjJ(¢ª¾£aе’öÙn å4ª' ÆsÎEZ¢Š(¢Šln’ƲDêèà2²œ‚B :Š*7žæŽ–5–\ùhX|rp;â€$¢£‚xnaY­åŽX›î¼lOn¢¤ Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¹]^i-¼S}q m–- GFÆpC’5ÕVmæmyy=Ô¯(yìÚÍ‚‘€„ä‘Ç^úÔƒî½o‹¨]jQKüðÄÖËn ãïnëœ údúqVã_Õ¯/æÓo-­a²¹6éo${„¥OÌY±‘{}8êu¥Ñ­¥³ÓíYå §É‘FIA»Ï¨&ðÎ6¤÷Œ%Q) =º¾!™È.½ùçÓ?S -NöãO¼ñeÝœž\ñýkm ­ýJöâhÖ‘I¶ Ÿ?Í] îÚ€ŽzŽ})×:•ÓjFc+ DF%€Û°aJñøóš†ÓÃ6¶Ú¾ ×w×70n ÷o$§Žƒ$Œc’zÐ3«Ýk¯„nµin`[Üf&4~¥·‡Œxà s]ÕW[¸´Óc¹ÅBV Oºq],h‘F±ÄŠˆ€*ªŒ@`?„,D+u¨%–AûÜŸ'ƒœ`óÉç¯SÚ€ J}FMjßCÒ®–Ì%·Ú$¸uó\¨;B€ÝyÆI9>¼s&¹¬6“nˆð&¡ª,$|f9H’1 ÆqÏc¥nêZ•û[º™m&¶bšÕ„n«ŒmÎ:sø~'-Ú|V6V‰#ŽÒánT©¤uîÇçðíŒ ÂÔ¤Ö!:¦“uª­È:[] ~̨W ‚¸£#=²1Ó–ÚË­ÛÚøzÆ×SŒ›èœ†x åy ñ“Œñ]5Æ‘ks¨Ky7˜Í-©´tÝ…(NONsøÕk[YËe »¼˜Ù0ùÒÀe ·§@c½P’mzûSºÓ¬5­ÎbIšÆâF\‚F0£ƒÓ§¿jöÚ‹êÚŸ…o¥cyEÖåSÆBí8ü³Zú¯†ìµ;¦¹inm¦xÌR½´<Õ=›ƒžŸç®‹eú|°+B4ðâп8ÁÏsëœõëšä¬uk» è¶–+(–ìÏûÈaH¡Ÿ•Î{žjüºÎ¶t[µµëê)kºæžrp̼íÏÚ{Õ>ÓΑm§nœ W/êÀK-¸ÀONà›ûÈZÚÀ¦P-®Vë~à^Y~g$sœóý(íŒWZ$w—_jsºo,&îN>QÀãð«Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@W¨ø†úËZÖmÞU[X  nä/î¦1QÏ\ín¹ç½vW/'ŠÃM²šî˜½´RÊCâF 3…U ¶>b¹ Û2Ÿ2Ìàé²—PkÉ*–wçnÇ\s’1‘ÉçÍ7‹Z8^Þ(® ÌÖîf¸Ù À$ïÛžr¸ùG$þ:6¯.­1Ø´v“@_ÍiÄŠ”ÛÔô'wé@q%ÕÍÌÚÇ òÑYŒ’ûŇSýÚ›û?SÿžVøßüEUÚÉq$µšKÉÀ?+NU‡> ‘ZšÔ³ÝF’ØùPKu5¤ry¡™ž3';q‘sœçŒcæ ³õ?ùågÿ ÿÄQýŸ©ÿÏ+?üoþ"•µ{»" èàû:\Ohиpûâ–TGÊÛIÈä Œ1ç¡Õüß²~ãi½žÓïýß/ÍùºsŸ+§mÝxä§ö~§ÿ<¬ÿð!¿øŠ?³õ?ùågÿ ÿÄT â)üØog¶h´öÓg¾PŒ®dEòŠç8*áY²¿wæ1íDÖãÕe¸„5£É£³Z\ùñá·7a~oäc¡óÀìýOþyYÿàCñgêóÊÏÿÿˆ©­ßP¿ß[]ù~\òÅ£*ùN#vC½¶–Ëm' €¹+`îtúÄ‘^Ê‹j­kÄV²ÈeÉ$Ù·jmÁ_Þ¦I`~÷ ÿ³õ?ùågÿ ÿÄQýŸ©ÿÏ+?üoþ"Ÿ·s4¡Fž¨’ÜOi4ÿ~XüÎH v¡žzƒÆÒ>cOLñØÒ¡šþÓÌòt¸ïîgŽAʲ¹À\˜ì–ç¸Ïö~§ÿ<¬ÿð!¿øŠ?³õ?ùågÿ ÿÄRÝj·±£ÛÍ V×qÏh[Ê“ÍC³„êʧ8WŽ29é]¼FÖ–ñ­Ä¶ž|×aîà[Æ)Ê»iË`®9’xäìýOþyYÿàCñgêóÊÏÿÿˆ«Ój7°Çkhßg’γ3¸VMø]£?7Ê=±žFmjÁþÏÔÿ畟þ7ÿGö~§ÿ<¬ÿð!¿øŠÞ¢€0³õ?ùågÿ ÿÄQýŸ©ÿÏ+?üoþ"·¨  ìýOþyYÿàCñgêóÊÏÿÿˆ­ê(û?SÿžVøßüEDT2,Â0èû‹ íVê@ìº:Á¸ÿ»ÏúùÿÚQPtQEQEQEQEQEQEQEQEQEQEQEQEQE•s Y]6¤f2°ÔDbQ¸ »¯9­Z(o ØËo%ºÜÝÅÑEÊŒŸ¼Œ!9SƒÀéÇJ±ÿõŸüôŸþBÚx¬ôé÷_z×¢€1‡‡-´CqsÀ¹–åeR¤«H0À¤cuûÕ»M4ZÍ‹yy(H<’Ì][œï9þ/N1W¨ E2Op.VãËͳ©†&rZ9Àà2}ZtøþÏ´jè÷RÝ.m%åäó7òtýëcè?( Em§Åf¶žfªÐÆð´JÖÒâ%‰Ã"(ÙŒ0IËÕŽ¶ÓÒþ+¡&«ˆ'yâƒìÒùhî9ÆÌœ—cÉ8=02 h E§iIòÈuY¡¯f½¼»Ûò <wÞ9äœ _²¸ŠÛy–çU»wÀß5£ŒÐHÕGSÎ2{“ŠtP²Åc$¯óêKk+–ÍmÊ•$ŸÝîÁ<Vç îl“Ec-ëN_RXä•'–ÜZ>É$M»XŸ/p#bp”drsëÎCryœœç4ÎXë·ð\Éjí™n5+”.Ë%ȉQTíU\1>ØãÓ¤Óe›UÑ!“P·–ÖiGï#VxÙHnÄa†qŸ¡ïH¾Ò£P°Úù[ei”Å##+0ÁÚAqÒ®ÚZÁekµ¬K1Œ*/oóë@Ž—ªÜXøON½ó%žêúä@ÒNòM·çq™Éàc ŒñÖ®I¯jÑÙ¤ÒØ4Q­Ì‘Írmd!c+'”H`y98Ú{+at]9tè´õ·Å¼/¾5Û‘³œ†ÎàrO9ïMþÃÓDq¢Û²˜äiVE•ÖMÍ÷Žðw÷Éì=déZýÿ‰mƒÝÛ=³éÆb(I}¤‚ps‘ÜqÊã9&­üòI¬x†7RibŠ?²%³LUÄODàdã¯ø×Io¤XZÉo%µ²ÄÖј£(HùO$~nyç<óÖ¦†ÊÞ Ë‹¸£Û=Îß5·»hÀã ãÒ€9[]WP³ºÕ>ÛqûôKDòÜ1#DK,q©™˜tù⦴ñ§u{kd¶öÑÍ%Íż¬àñå¨!€ q÷¹9ÇQœÉô]:âiæ–ß2Îñ»¸v ¹8R?)£ÛmMµž9á·a,r<ªí+±Üà'$ç ´Ý S“TÑ-ož < îT#†+Ü÷ÆkCÌùá'æ¿ãQØÙ[éö‰ig—yÚ»‰ÆI'“ÏRjÅGæ?üð“ó_ñ£Ìùá'æ¿ãRQ@ùÿ<$ü×ühóþxIù¯øÔ”P~cÿÏ ?5ÿ<Çÿž~kþ5%˜ÿóÂOÍÆ1ÿ焟šÿIEGæ?üð“ó_ñ£Ìùá'æ¿ãRQ@ùÿ<$ü×ühóþxIù¯øÔ”P~cÿÏ ?5ÿ<Çÿž~kþ5%˜ÿóÂOÍÆ1ÿ焟šÿIEGæ?üð“ó_ñ£Ìùá'æ¿ãRQ@ùÿ<$ü×ühóþxIù¯øÔ”P~cÿÏ ?5ÿ<Çÿž~kþ5%˜ÿóÂOÍÆ1ÿ焟šÿIEGæ?üð“ó_ñ£Ìùá'æ¿ãRQ@ùÿ<$ü×ühóþxIù¯øÔ”P~cÿÏ ?5ÿ<Çÿž~kþ5%˜ÿóÂOÍÆ1ÿ焟šÿIEGæ?üð“ó_ñ£Ìùá'æ¿ãRQ@ùÿ<$ü×üiѾõÜ‘ƒìqN¨àÿVßoýДQEÇʸßÍjJ£ªÜ=ÅÔAKÁm,Š¡ 3ùPê+šµñ½„òßYÌ÷SÁGoLEÁ%[÷œtÆ{`ð{7MñbË¥A5Õ´’ܵ¼—2¥²€±ÆŽWwÌÃÓ $ÐOEaIâ½9s²å¢€DòL±ü$«uÏqÆ3è,\kÖ–Ú”6SÇ,m<‚8ݶüÄ’ÛøÈ#vÜ{ãšÕ¢°­|Sev¶Æ+kÌ݇òˆ~ñ”à¨çÜýßR0pÂU`ðG-¼73†¶k¦TU8Ôí$î u`g§Ò€7h¨íæŽæÞ+ˆ[tR tlc ŒƒÍI@iÚq½µóÞöå ’EÚ‚<€ê¤ôgûÐBóòÿˆ©4ù¯ýv›ÿF5hÐWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿGö ÿ …çåÿZ´PWö ÿ …çåÿP_ibÖÆâà_]±†&p—ι[•OYÿ-ÿý{Iÿ šË•BLè3…biµ%Ïü|ËþùþuW·ˆ½¬Iut^H‘ÛiŒ •“Þ¤òüüÞßQÿñ[ǧý{Eÿ  ’€#òüüÞßQÿñyþ~o?ï¨ÿøŠåeñ=â ÷Y,^[[ÓoCçN¡Âäýy?ÂzVºø‚ØÃ¨NÐNX;Ç$­°+:ãå_›$œŒp3@~@ÿŸ›Ïûê?þ" ÏÍçýõÿYGÄv‰?Ùæ·¹Šà\ÅlÑ0RU¤RHb1€z}ª8¼Y¥L!hÞS¦a¿Ëá|¥ÜÄ÷åH#õìhgÈóóyÿ}GÿÄQäùù¼ÿ¾£ÿâ+!üc>ùª‘x5a‚ÝRê %†Ýà-qh%\.T· 7ÎGµtÞrzIÿ~Ûü(ó“ÒOûößá@¼Koo)ÊÆp:ü%Gç'¤Ÿ÷í¿Â9=$ÿ¿mþ« ÿÈ-ë´ßú1«F¹¨nL⸽AfÂ"ã,ÅXÉïëOût¿óûÿ~ãÿãTÑQ\ïÛ¥ÿŸÛÿû÷ÿ£íÒÿÏíÿýûÿPEEs¿n—þoÿïÜüj·Kÿ?·ÿ÷î?þ5@Îýº_ùý¿ÿ¿qÿñª>Ý/üþßÿ߸ÿøÕtTW;öéçöÿþýÇÿƨût¿óûÿ~ãÿãTÑQ\ïÛ¥ÿŸÛÿû÷ÿ£íÒÿÏíÿýûÿPEEs¿n—þoÿïÜüj·Kÿ?·ÿ÷î?þ5@Îýº_ùý¿ÿ¿qÿñª>Ý/üþßÿ߸ÿøÕtTW;öéçöÿþýÇÿƨût¿óûÿ~ãÿãTÑQ\ïÛ¥ÿŸÛÿû÷ÿ£íÒÿÏíÿýûÿPEEs¿n—þoÿïÜüj·Kÿ?·ÿ÷î?þ5@Îýº_ùý¿ÿ¿qÿñª>Ý/üþßÿ߸ÿøÕtTW;öéçöÿþýÇÿƨût¿óûÿ~ãÿãTÑU=gþ@·ÿõí'þ‚k'íÒÿÏíÿýûÿS&¹ià’nïÚ9« ˆ2Áÿ–T=Ïü|Ëþùþu6K”’W}² Äœymþß9=$ÿ¿mþ[ǧý{Eÿ  ’«(‰c×Ê ¸ÀwŒúRþïþ~/ÿï”ÿãt‰/†¦–Úþͯã—×FæEçÌ`v†Ýáí53øq%ÒµK .›…ËÜoTÇ–I gœ™ö­_ÝÿÏÅÿýòŸünÝÿÏÅÿýòŸün€1®|4÷QßÉ-ê‹ÛÉ"‘fŽ¢•‰çwÍÖ[+ôº²9KQ‚ƒ÷nPșȪŒ©V¿îÿçâÿþùOþ7GîÿçâÿþùOþ7@øðr4±Ëx¨n Hˆ¶ƒÊMÊAS$:mŸ\ÕûMâÍ‹[ÝÛ[—E·²HÑ£Pr˜äòI;‰8ìhþïþ~/ÿï”ÿãt~ïþ~/ÿï”ÿãt^ÆÓQ‚TkÍSíH±eû:¦çÜH|ŽŸ.Ù­ ¯û¿ùø¿ÿ¾SÿÑû¿ùø¿ÿ¾SÿÐÿv¿ï¿þŠz ÿVßoýÓÉYRC%ì…7m£*W< = ïOƒý_ Œ³F;š’Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙ endstream endobj 4 0 obj << /Length 5 0 R /Filter /FlateDecode >> stream xœ}SMkÃ0 ½ò|Ì“ìÄV  š‘Þ ý}@ƒõ²¿?¹–­6¦Å`lÉz’žžÁüõݯó M@Ç{œÒ~þ4ïOæ'{Ó:÷ݼöÝ”^F˜l4ë‡y9 AgÖ/³Ãý«YO}Gì‡äÛÁ’-Άb™²-Å‹`ŸìáÏžof>ïaàÅÖ "?;\öKXvûÁzE,1Å"µ…íݺZ™ÀØAQbÊŸí8Z*ùgvp‰(.´?”ÌCA¦ú 'în”pPˆq#/ q£ÖG¥Â`Ǧ‹+€¥ô,•Ž(Ï/ºÏ‡p:h¶6ÿP& mŠìt¹ô 3Å¥A¦Â éh[¢Ê@ÐÇ Îèuœ +ùxGÜaJ²¸7xa°m¾Ü7¢UJdíÖÚñ4úMK‚Wɹ.l*ã0USp#aJ¿è£˜ûá;•¯MWië‡ræqÄæŒendstream endobj 5 0 obj 356 endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode /Length1 15760 >> stream xœå{{\›Çµà™ïûô$!ÄSÈ lÂâ)žâilüÀoDÀF²1$°ñÚ±7MB^¤··Ù¦éÆ7¿»mnÚ&²ºàÜ´ô6é6Ù&u›¦Ûm“4Ûë¤Io’›GÓÛØì™ù>Æ8múûuÿØÕ§3sæÌ™™sΜ9s>aGÆ''ÿo4%^§€DÿdDüªÿ;Ä_ZFE*»}Ê_'?åâ¸L.—ÛÄí亹~î w”»‰{€{{„{†û÷*÷[~=_ÍûùÿÈ$´²sJuMA‹— M+ÑVÕ(e#Ú7ìeRîCË£åŽàs íw#Ü·Âmp|Ÿ/ãóÊÿ >Ãi8çàø!üŸŸÀÏà—ð:úÎÿ†áð)Q#Ú«l$›ñÙB:ˆµ8HFÉIr¹›üy˜œ'/’÷ÈN‰ºTs5\WÏy¸A.Âãnæ¾À}‰{”{Ÿ'¹—¹ßsïó„×ñ‰|:/ò¾ïæàsŒ¿‘š‘‹¿"€ Z…cžž^Þ®(ÒÍŠŠ-ŠmŠiÅŠRü³2^™®ÌU~IùuåËÊwUUŽªDmGMF}¯ù•àƒùGa€¼,4‡{~@þ–çÈ9¾5þWh‚Zx ªÓðMêÕð+< ŸÀY<?DžèƒAþVœj=´¡ýï‚TÈ%EÄ 7Síˆ~‡Þ¶Ÿ9/]ØÝ`oŽn8zÑZX0K¾¶«3ªiš%°«s6-œ<½ñds³—®–ØÔyÛrö4~ºÅiszú61zj{çòÞ,Zz½8iaAûŽÎ,”ÚÞr—HÕØÑÉ4ÀI‰Õ‰BRUSR8`o¡”ÞbTco´MèÅÍJŽÂŽ©¬3©›ŠRwYt9ìáÑüüèºuÔSTM¸µ(Yk—LFÛí£1ÚŽ&ƒŽNä­r¢É³²è.ß9ë>lDOnï”Ú"ô¥3ßåziÏ|¬'y7í9ëYÞkGw~‚¥DÉQuîâWo0›Z†ª¢ÄüÝ©O‹xZPäLwtæú¦ïLËí¾Ë‹[ÓŠGqzºÕ.¶N÷NûfNöÙEƒ}út{ûôhKoL¥Ù…ów¦E[ïòF ½Cí-‘ Ò¾ÓÞ¾½«Sl™î SS'ŸÆÉ—Æ{¹*Þø@é ¨ ðŸA TxÁ;­ð]–ü)°äÉSÎ+¯^‡úz,ׯ7fs²ŒY|*òóŸzð'…yÔ~`áþ‚¢6Þó­UQg3›ëÊê~!*õIúd½Yor[<œÙdz§®6©®®–ÔjÅZ>¹®¥vwm ö`"Rû@Ý£uçjçêÚÚÔÚ—jߪrj+j[j7Õ éu¤¶Î̛ʎøl=ØÀ‰‡° B˜Ü‹ú@s|ñ Ùªâ÷7óåû³5óI©Ö,¤6‡œš T‚T’:K¾íImXÛétNÍ4D~ÒÀCƒ¡aÑùEÃyÚ ÷Œ]r;/.]>ævZ/.-T‰5ÜΞZRòøX~nK(ÊO8nxz}1`›˜i×'ÉuäÚ³•ÉI³%“à79I¥T%pölÖå(+uäÖ’ ìäJ\u„6×aU^Ⲙù-Zuœ m‹+(Ø<ØvWž«ýVaM¡Ý´.óÆÛ´úޏâ‚‚ë.N°µÕ–ß´­eÝ•™{v\|µxŸ[ø$»eИÌ+¸[œƒ›=ÕÕå‰κðž}7çgn_“dOÐ zîÆ†´\.d)©Ï) ÖlªwÜ4ðm½jÔ➺>åðÿŽ™Å=©”Z*èRl¹yëóÚ¬sIZIWJ—ë¤î<ùúÐ1O†A™u¬@gHÊåuJA“–Á§CI)ï,Oß­9OÞ%yã;‰ÿjH#i{ŠgÉß.?>ï$Î9N€JÃÇc?¼Üs?Ô¨h\ F7âÔìØwñb¡†Òh¯Å½¾ØTG*J˜™“lÄUáª0SãÚ³v‡ŠW┸Ê+Ê+Ì6’@ìÙ¹eF‡Ê‘[VZ=¬©Ô`FfQxUÍJU–Qm-M,æˆ.Ñ‚w°MoÕ öm=ÁÖ¯ä>uõ§f”fT+‰À¥%[lG¸+7…*Rtèé“)®¢~òX”dÂkÔJ¸G³[]¼Û½G­÷ÛüœßŸsŸšzóˆáãË—z —/Ðm ìÁÝÁŠú/Ö™{»Ý’“3w627¿tüC뾞}×~?¼è¼xÑpÉpÙÅNŽÄ@Óו×ôq‡sO'Åê‰E•d)¯`ñCz’“h¸ÁX£L¦ •%IÅ H”@c‘Ý¡§§„Èc¤“ƒ Hè84‰OTo)V8•–ÏÛCúšÖï*!„ì­ÜáئԹ,.³±ü–ûwî°75ò<áx¢âµ›3UC«,÷çØíå™m2"Ñ–WSXêÏÔ*!¯·é?lìáù+ÚBnÒen&÷wË‹RJMéI•$}Xi-3ZKÕš¬ -¥[‡f¾P§5å”i:ƒªíœ2[—cÔÆ eœ KÔ%sñè4DÍý8NYdZg,ÈQh ê­‡¶å:žø¾ £ÚÒŒoV˜ û pøûþ¹8Àñ‚jŽ”A‚óÆçå‹nc²*Ð6¢Rf´ˆc3©>••ŽËäòo GÇq‚Ób,KL$ú›Aå°ná]![Qe° ¾æiÒ¿œüR*¯äˆá~¨K,o«vèb^Û±DUu¨ã!OWÞ\Á+5k ³ ??¯ì¸S»[W±G·Ç©o¶5sÍ~ë}yÔ9ÓÁ):rò;£NnÆyÊ9ïäOR\Õ9>†—ЇÔñ¾BïC¯sËacu4Äê©+•K Òõ'n9uœd•I ’“àEXlÍu$à›s)šMa,uQ2É2)ÂØ¡\·[¼­ÀOˆ‚dk»ÒŠsüÇC¹VG8±Ù5š^cHZ¯q)Ï©8_&S†k :-vcšJÓ4µ¡àˆp^ŒÛÀeèÖ^¹}F´«òÑÅöÖvºïm^¿/Ý´Ã¬ÎØO¬.ó¦TC÷ë‘,­fÍ݃W.´¯1gåT7:vüÃ6…÷¯¤ðÏð¥øÆ¶àéQv}·¾úR»Ò»Z¯¾K¯3ë=ºN^½VŸÌ§xS¼i{»½ÞÉ”ä¤ïޔ䚆†£{3’öîÍ0%§ddUÕx»5ÛËsŠâ|ÃqÃê†Ý{ùÛïÝÎmŸ%Ç=6¸¼Þ"Ϋö*‹”Jå†„Ò ’aËÊYç*¯ªÑ”zSò “Kö¶ìåÕq¦ä†½Ý*­o hµ[¶@Þ—Jÿ¢qAÿÛ7¶¯çò% 4Ë —^, ©¯ÇB¿—z,nÜaCpsoSåcr›ºÈš¯@(P/&4CÁpÁ¢B5ïJ•´£*ômüÆÎ:FŽyy ½ Ê¥UzôDGœ@brÑHl|.õ¤êí–8ý îÒ{ÔJžÓ«-æx=§T»k*•v«¥9½DÄWþÌøíåÙ»JS9’h^“¦WKÛ¾Î-1¥¬-U¸Öf&;×%Ö¤Ú½)sCék¼QÁ(‰R­TÄá NÐZ }wM†ãæ~®×i-R U¨9§U’”xeœF¡QÇ©sO~ÿÊø•O6W$cÀÐfYÓ*œ©N‹éŸ6û?ês%ªx…þâÙµð.w…ß ›É÷\MÎÌ#VÞPíHt$‰UbµX«T$Cur²Ám¨RhÜå™%Õ%5_«Hs‹5ŦҪ-•¿ªRNÔÞ¢¼ÛyKõϪÉÕeú² ^¿•@•«ªÄÓžÙâQ¸«0,¢›­ÉâL‰¦]¦~“pØô¨ù93Ÿcj65ýÒü'³â禗̯›~gþÀ¤8gþÓ3f~­i­¹ÆÌ«Íɦ¦Mf!Çt‹é%ӯ̂Íì4ï0}Á$húL!óãfÞ]Uc6 ñ®Â®mkIýÚmk¹µk³„®bðÀ)ˆ‚p’¾§4ºz²Tñ=º™­ÄdPÕ¨5iôÅÆgöûÞ›ëº6>þˆ¹g;¡Z§ÑH¦’h÷'­M1ã¶;ÅB³Î¥Nôä¹×nö夥¦Z¾¦W©Õ\Bºwc^†++Ûž˜‘±n¼=ò­B/¤(íG½ir)_îüêk?د¯ùÒ¤ßå¿•ðØåÅ_ŠßÇœ)߯häßòÙ8åë—__þ3ØŠŸÅ4ôÇ~!¸“àæç¡M8¸p™ûlÂ:~~á}žþò °Ž$‘ÓF=þ¬pX1­|ͤéÝK¾Uá äCÜpïiï¾kq½ï/®M@-"àYçÁ Ï˸ñðºŒ+ þMÆ•H¿"ã*]IÀŒÈQ@$·3\t-yDÆH'gN³u%yAư’Ÿ3\…t5¾ J¸€¯Ž2\ô8.AÆÈäRNÿ¾sW)ã üyÇyøçdœ‡bþg2Žs œŒ+À*¤Ë¸é¥2®‚W…­2®—¢@Æ5©Ø'ãZ¡\qLÆu0 9#ãq0¤µÊx¼îíIO€n³4§–ÚÊü¨Œ£­Ì³ ×!=ÑüKÇxe~›áqTK‚Œ£ü3ÃèŽ[Še\€l‹‡á:¥OÆqK„á&jsË–q´¹å¿0<‰Êc9'ã(åi†'#=ÉrQÆȵ|Âp3å·fÊ8ò[%û¤P~ëfG~k/ÃÓ¨Xÿ“Œ£XgžAå±~SÆQ«dCãNÆ)¿äk¨Xß“qôë§ §¿­hSReùSÖP\Íìœâ‘q”3…Ù_ÍäO‘qJgû'ñ?(ã”Îö(ŽÙ?å9R~Ö F‚Gýb¿/âý¡Ñ©ñààPDÜ E¦F⮩ÑÐà¸othª@Üé×cBPˆEY‘Ø0<,2î°8Æ'ýEK7øÆ}‡B#ýˆÁ°è#ã¾þÀ!ßøA14pýÙýCâ!ß”ØÀIƒáH`¥ ŽˆþÀxćõ‰ñ`¸?èC#á¢Ø*¡áþÅY )ýªÆžÀxGŠ®¢’²XGáU£ÿï[!ƒ0Že|°aá„0öƒ¸¢?${ÞZ…s©o¹ûWáè­l®È*ýr;ÿÿ4ÿ=,O_ËuUo3Qº Ž ÂQ6»ˆàc²ŠàÇ1£0…ã)×REØÂæ !>…}¤ìbXˆiéClÛHߌLÏ0òÐÙ¨µ©$aÔo¥.Xc}­¬…«h..ò_¿g“&,¯Iÿ‚Y%¸ +G~ÆÚÿ/Yü/—i#òùqDZŇ3ö¯j‹kçkfý‡™,ƒØÞ†¶`räóàb»@W’í=€#%>‰Þ‡í°¬«´ãXSËŒ,f6˜`'´ÙlR%žM¬‘GKöYåÒI¼º€ùÀ0–‡åU#(c€Å…ó¢AfÇØ¶m®ÞÏ!æ%Ò~ä}“dÊÚH+²Ýd{6!ëFù#lW§˜Ô+Wr\eÅ0[Yò’‚eóÓñ#Œr­]éê!FÙªYÖ)9Zõ˲laöš`>%Qb6-eÑMdýý×ìH+“w„éf±•jA½t€Y=æÒÞS_f–»¾'¬¶û’,Ë×¢}AlûÙY¥»^‹RíÀ¹úäÓ#ÉCÇ`+¬fçåç¾ù˜d‰¬‡WõãÃL›!Ù.";£ã‹þCå¥Ú3Ÿf¼S+ü†zc£ ]wáK'ß'¯Ð/Ç;sÅùéy•-é»*Ðóa£C,f…™çù˜%‚̞ì5,Ëo,iݾe2Åö{˜yé ÓvŠÙ"GØaùΖ"]}ˆµGñýȉÏaöÉV^Š%EÌO!å?„+8±Œ Ý‘k…a¿,Äg§Üý*ËO;õŽe?Ó¡Ÿi¶´ÎVŒq»Ðž­MxZ(¾ ©4öµ²èNé-HÙ‰%=OÐóZðÙ¨»ð-NËàÏGÄåQ"Ä8ÆeŸùûÒ¹˜b±'¶&µÏä²[gB¶Áø2y¤[éвØèc>”£—4»OÎl§hL£žè•W£rRöÞ¾Åûl)_Ï2a¶bw×Çf‚²dã,vÞ„’?È÷Èjö Éz…ØIZšeé$_»^¿|3ÓxÖÇbÂòøbZ\g‡Ä¦ÕÕ– °Sr­W\»òR<šddË>vE1¥³w=ï Öß”a¶bxÙÎ/í…´OWç¿}L¢QfÙ |Çÿ%{.ʾ8²–Ö¥wd¿œ“‡ØI_™',r/ó[I¿ÈŸµ•î›?æW¡«æ[Ї‘eS”£ôrNš#Œ°“8Á,NçZÔG’k¹wÇò9ÉþKï1[͇>K£%ÿØÈt¿v稅éücH°¹cÚøY-å#+ö`V¾—Äf³a‚eâb–@‰–âÀ_²û±ù¤3IÏꤼKg,6ßµû(YKÒ ÂbÀêof±ó­°õÀç’vÉÊ×®à—ïô>¹µ\"IêAU‹3ìÆøß€ÔJÌ•*ð£ó‘J¬‹±]ŒÈNc;–¥øä!e-rT°×("”cîâf›±UÖq¥Ë£q,ÒSôÉÙÁÊó4Ê"€O=É<.(ÇØ¹ ž¢LȺ‰ŸëVõ9WÈ»t“RDVn–ßÉG°ìcÖ”¼tBÎpFï!ú+=-Gå¾°ìWC²œ‹w6³“y¬È2·yްݨž{™žaù üM4¤Ð±hÙQµÃ,8Vd„KÛÊ3ë“Ï’¹éXz£Åns:“”™Jqiy$ \5nelXZIz¯õ³÷)û ÈÞBOë››ÒŽ.Ž³Ø‘i’­ÆåSü·¶¦”§Ç2‡€œ·­Ì°é=õœ9K–”Þ úåh’3Œ·I^Ö“‚Îãc‘liT¿ìE~ùM*6j‚Ű‚«ÎU€Ù'fùqv…o=QöÕ»ûöÊ'O¢ý­ìãÈR$ëg'PòŠà ¯ˆ0¯ÞXÄż –iål?æ‡×êï“mdJV¾Ú¡e1ÇÇ<Í!Ÿci…£ø„þ&öøëßþüü±ßC%\ÿ÷R©ŸÆ@é6—NöÄ*#Vãg‘üZÞXO+ú÷0æ8ã(êé«ý–º’c|Y6Iwçú³/ñìaصœ½íë$û]w5®«û;ä7škI>9µÊ˜Õ¸–Ût5¹¯êlBP-4 åB¥àj…vÁ}í˜U¹v}ƯÛK}­×ÑV¢·SÉz¤]˱Ô×ÎâÌ(îÏjú,ïÝ !vbVóµ¥¾Ï畟˞Ÿsî˜ñòßpéoC«|æÀÃÙÎ$%—Ï-Ìs©g4ÚòY¬üé¶Y.åŒ_´5$sz.ç·q‰XïÀÚ(× r/׿X¿íµÑ÷F¹×Γ·á=òö9F £<…MÇi‘²ÙÙ&m³DôèyÛ[·Ío»CÐÒOê)-™×ïÑwëýú;„Ê*îÇG’mѧHý;(-I‘G×iÜ“i;ÒíBIy}2ÏVñЙÇÏpõg¶Ù†?qÃ:[%Ì]˜ãlsææç8}C-yD„bBÂI„kõ"Œ.£žB˜g½€¥ÃÑoâè7‘ÿMˆ"Ì#(©§d*ýSñ›ŒŠ& oŸÍD²Ðó^“,Dÿá´l¡Á蜢ý;óo°\`˜Sœ!šÐyl<Ž(熇+!DxÜK 0Špaႇ pBæ›G¸€ð'œQjà)D ›ä=$ÐI³9º‡4TÁƒÐЋ0ƒE˜GÐ2.Jå ž؆°ç€,œ³Uˆ F²€J-À~„ï!üá7ï", ¨É‚§p2ÞVQüŠç•ŽWz_:Ž“§ýüw¬'ÕÖ³¿ÄV鹯÷¾™û.Ü'\¸oá>ÎÙJ>†3§xËy„wxœþcÔ§žˆ° a?^åÜSb«¸÷ ™ôl{*:ü?ñsN½ÿ{~~l¾í„ýÃù¶gnHµU¾Ó=«j`8ÓæÂjRªBRuHªJÕ©*¿TõIUšT¥H•Å3ˆõo^Cø ÂþÂ~€ð/”÷1„o"œBø Âß#Üp;­“„0Â8Â(Bο‡­u\Zò¨TMIÕ©ŠHUXªF¥*(UCRª^©2KU’T™¤*QªŒR¥óT`ý ÂÓgN#DGøƒ‡pÂ1„±6W¼&^3ó]Ò†'t†4³²ÆS¥š¹G5PÍô©fzU3ûT3{UkÔÙjQ©NW§ª­j³:I¨6¨Ôqj­Z­Vª5§5¨‰oçÚw6¶GçýÐÞ'F?ÞiŸ%Úí]Q…½‘DÛ¡}Wc´2¿ýcG´"¿=ªé¸¡ó4!÷x‘ångÿÓ7Œ’nM£ÿÉg#VÙ­w§ÑzðÖ»½^0ç_û±.b¤½cjl¤ÿ¬Êv³*?¿}'6ghs†6­äLœj÷ÝÙ›«Ì³ô!ŸÙ»ÈÕÜÙˆKvžVC£·©[ªÏr:-ŠÞ›–åm4Fë˜ÕYÖÓÎc°xtùÞhœ½1@»  h—¬+þ*¹ËzcuVÚyòˆÜe@²M aŽäŸöt·ôFïh¹3z‡½Y’'2“ ûi›Ñ"áH[!˜Ó>ÖÞ‡_ìÛÇJÊA°Æ/^š(L?å[†¢"‚çÎÞ¨hoŽªÏ–ÛÙöf’?1‰@þ’eñ(ÿ¼Í˜] endstream endobj 8 0 obj 8431 endobj 9 0 obj << /Type /FontDescriptor /FontName /CAAAAA+Garamond-Bold /Flags 6 /FontBBox [ -146 -372 1167 997 ] /ItalicAngle 0 /Ascent 861 /Descent 263 /CapHeight 996 /StemV 80 /FontFile2 7 0 R >> endobj 10 0 obj << /Length 269 /Filter /FlateDecode >> stream xœ]‘Ýj„0…ï…¼Ã\n/£î_A„²Ë‚ý¡¶“Ñjb¼ðí«“îRz“ðÍœ“ÌIÒs}©¾y+ Ði£<Žvò¡Å^–d9(-à i“ƒp,I3‡ÚtÊ’%éû"ƒŸaó¤l‹T|õ ½6=l>ÏM,5“sß8  ÀYRU °[Ï|îE )Ù·µZ:ÌÛÅøGò1;„<²8›´ G'$zazdIÉyåõZ±úß=ESÛÉ/áWq¶ˆ9ßÕ 9ÁqGPö»Øá{‚üBpˆ²œàe§Eœävå:½ã=²œ¼_ÒÒsSÊ5Ÿ6xÿgù~—‡€+endstream endobj 11 0 obj << /Type /Font /Subtype /TrueType /BaseFont /CAAAAA+Garamond-Bold /FirstChar 0 /LastChar 8 /Widths [ 750 510 312 468 552 333 552 468 416 ] /FontDescriptor 9 0 R /ToUnicode 10 0 R >> endobj 12 0 obj << /Length 13 0 R /Filter /FlateDecode /Length1 30540 >> stream xœÜ¼y`Õ¹7|–ÙµöŲ$k·d[²%/Š·q¼ÄŽÛqÇrìÄq6'$Dvö°™­¡!@(e-%i ¥@¡f7´·Mû åmnËÚËMzo ½ߦ·)¥·Ø~ÏÙ~ï÷~ß÷÷§‘FgÎŒF£ól¿ßsžÑžñ½›L ”;7䢋Ê|€ÿ 4mÜ·Ç÷/Ù-Ò>3¼%·ugzÝÅïÀ)d»s뎃[F×”´ `éG£›7lúýÜR«÷sT’ûÌGÙþÙŽîÜs`­5rœlŸ%Û§wìÚ¸áÁ×¼d_ß×Éö¦äþý!ÛŸ‘mß•vnzL/°Æ€sUn×î=[À¶9r;èþÜøæÜýÝýÙ&ßÏýéƒd¡-irta†åxA”4ZÞ Mf‹Õfw8]îB×WäCáH´8/)-K$Áÿßl‘Ôƒ}a#0÷ÁÂkæÒÜç¤ÿ«³!0-Vûs‚[ÉëgùæÜÿáñÿ~_:îÿãA˜,?Wƒ(ˆ€G"K%LÐ î‚"¨ƒàÒãàHƒ#@Oú®÷„HHuäóÏ‘í(hƒZ°m¥ Y°I«¬kÀ£àeðk8Mt¥l»À}äß"}?Óàoð é·€$XÀÐö’sg`ü O€*P –‚>°Œ‚£àXˆ¼èUPâäìPG>³ ƒÍä¬×ƒ›À×À7À‹à—ƒ{á>x )h7:„ƶ0»Ø‰¹+üÚòmÕêg³`ˆ|z'#Ÿ¾ ƒïƒƒi¸€‡á}ðÈ‚>Bñ:ü'&È3äZµä>òë¢ä ’äA+è] ›üÖ>²¬%Wº\rdäöà ¸–œý0¸ÜI®ïkà»dy‚,ß##÷µ¥N[äªÒ+ táOú6úÈ•ô&Q¨†®6×€#kÈaä‘…d¬¶‘‘>"/¢C̆ä€ïÈ_q`ú“ìÙ0ßÃ…ä¿Ú¤ŠpY™Èþ…öd<>‹Qà›‰ÐÈ•5¨Û•¥%û&;9Ù7ÙI† ôô“e%ÈQùÝ:¥€²19±¢?¿í#Ï%ÏN¢aºçÔÂëjºgbaÏ刢>§b 뤾ü4È6sëè¢Ihûؽ9¿ŸF«ïi† ééo8rkAxøÈÑ,M1²#GÚ¾¶#ÃG6LÍMŒ|ràÈÓGr­Ã ?ijîå[ &ÛŽf'åáQHÆu2•Iss?.@Ù| `Òê\è\1Ð_£Ê¸=êÀR,Àƒ€b`þ ø?C$æ¿û_ø%ø ‰ÙåAc#Y—'ËEÆP‘±ˆŸûð©Ïüø˜Sä'ÆÉéîcænRD”-ÏÖ¶¬c ¾ý¬Ë›u“w¥Ä…|¹Æ‰Fì>š:Z¼Öq•9—ä°Ì#Îs9n‚Ãר`4eãcC.Ì\¸0/MËŸN7NO—'««ª`e¤2RM_U•éH8RÉ*ÅVT[x.¿ ÙÊY-h·Ñ¥r„â6ûý%A!È1|èÛD-qËãÈ’XoÕqb¤)ð–¹j xmÜ©ùØì‘TùѶ+.é,N›mzY'pNŽ“õ,§‘X­©üúÙæÉ•ž\C H¯L}.—ÀÜ p'AÓJì%×Ko¸Þè`ìxÌõX>â:Òñ  ¿¡ùi1™Av~Ú‰¸NhŸš;¯TvÚ×¶—Œ&Ë«GÓƒå`th°oTɬÕúô? ¦nª:n‚&¾}óVÏ~Ͻìá+§à{ŠF9Y²óxž Ãð¬UlÿvÓ殓`çÔíœ`a’UØv˜Í±ÇØóìEV¬Ì&I×1–e_‚W‚ ò§Tcfê¦/È3¤9s4M7ޝZç¼äšv$ä:×ô¥éÎ¥i"°LÍØPy±¡¡¡¼œˆ€0•PeÙ¦r°ÓîêªT…‡` ‘* «…Dx.ÓÕùýªX+«É:à'â´ÚéqDVä@.#é°³¨ÑIä(ttD2?†Z¹îÚro¤w_s¬uXæÌ7ÝÐ^Ïñå…6Y‹0Déôšæ‰:„YÄ ÉFÉÂÃmïvZœÈdz¢#´xaªÁäÖ-¾Òå0aYl´¥пÿé{¹–’6³N§3 ’(¶r’–A‚Ö!óÖ²Ó=×——×Ö&ý<‘9A2!Ö`ÁHÇS èšû-öá$Á¬_V @óc“–'ú!¤Ûþs^èÝ,0ð32š%Gm…B9°Ä½Æ½ÅýŽ›qO!Ÿ’RäyXÞ-E¾G>+ó@†²ì““rNfäg€ ŠÐ#0¨„,|î—?Ÿ&¢œ¢FEŒihlfìÒP¦qæ•VÈ®‡¬L7ÀTEÔVÊHw‹-UQ…½°ë¾­¹ç6ìýÉ׎vÇŠ*êBu¡lmïws]_lZ¹xïÛ[Ç^ߘt—øb áÂŽÑož<•¢¿\š›o²åe>­X>b>eP!†: Á(|‘ƒÆ¬º§/ë¢îA甎'N$Áì5#n ¾¯ˆ¬úKcX ëëº×acC‹ìpfZd­!£ŸšûLqØì½›à¨Á,æNUœ­8_q±‚©%Þ(îŒF¿¹EÓ°Úàñ’‘=´ò™§î!J±N×ÜG„SVö_ ÞTÒ­VøŽömýÛ6™ä`é(`æƒ}„^* fgÄŒ²ÑgL#k¤®zä}A7‹NèÔÔ DèW3¥¬˜)‰Zj,K,}–-Öb©WJzJ†Kr%gKXXòA ’K|%I²Í”<³EÜ#~(þYdÄêËO‡¹èŠçÏ}$„^· bNFâ±åi£=£ EõÛ×P_æ Nü‚|á°þšÓ§‰tƆ «:l»•§¨§6B»…×C>ïÌ©DÔ…ˆÄ­¡TEµjsy7³»–•%E—ßqE¦¥¡ƒ¥G–ø»–´nÙ[/ŒÕ•6õ ÕötÏüs"5MÑ•Õ{ÚªŒF’ÊëŸÂØ­òB¦Ï"–ü[KŽtUú“æéíµ6qfƒ·;¾f1q*Ù¹™3¬—0ÚCŠ 0Öp…¾ öØ8Îã±i²•Ø–%_15wQIYl™dz }ä¸ còùÔƒrèú#bO;ý#k²šÖ˜°iG²ìÞ2t¼ –%hœ#¨"AÆÌ˜É ÅéÀM“aÌ$¨6ÓñB6ª² aN­“-E¡j$®fCMÆy?Ÿª°1ßÒB=Ïib?:º45p˺êþmw¢§°cýZŸ–• Œ™eÇÞÓ}ó¥£}-·ÿdßÊûvf^[¾B.ÀhïµFïÎ{ßɽ=ûû¡$Z3£­ çàk`„h|í=žøñé LµTG;æ>Äoà4Á^0¢øä@èu:8Þ8 Õl³n)D¯Yß³¢vë+²RL 9%ž‘øè;…°n[rž)¸—AôŠÕåÙñüÀLÑXGF„†¹!s:o¦&«…QGVЦj…ƒíÈìiZ{ãþ>û·×¯¾²w|yÙm«š¯]üÕõ߆_kùÆUžØxîÄß›ÊOÍþ¥÷ùý]¿ÜÚ0yò…ÐØ_3÷1ÂÿÁ&E[QžÄ©A"ããî*6ž»Ã}¾‚MM0˜#¥k«uk&ÛÉ’ª*E)¹’‰TRÒ¤¨°eŒ¬ä™é ´J€Æ™ŠÄPã…iÒyI•¨ò6ªÕyà ˆ&þIUu"A+?sq ±Âýá?U]=^™YWG"n‰"Îøå&£WÚÕn ‰¢Æw 6­v0{Ævµ:´6ÿ \‰4ТչY„œE÷Ì~6êȬ[#ò‰x]ï‘ßÝH¼Ö kêC–šb2:¡¹ô]¼´Ç” W¢·ÆOEa47Œúdí-Ýí-$B&ãJ¼'Žå¸/ŽŽÆŒ£‰Ãøò+R_ŸmlÅY2no?Ó*YÈð=eâÿ§à>¥°a0Øn_]q4ì̉QxŒèŠØ¾DåW*½"1‚€¦ÐôØøØØeoL9cy£±GÒˆz Yå[ÕyHOüDÕµÌ[U˜ú⋼Ðf¿¼]:øbF¬])1œà^ä·0Û‚$4@ÎØõº6I¥ ¯3¸5%@‘wXô|Ü( »bõ[ªIèÕk ¬¨SàªmnFÌ͈8mL´hæ®ÐÖ›—…Ïâóø"&Øó wŽ£tƦÔˆS'_Už1¼Øî>yF{N‹´;Ë‚ŒœÉe&2Œ’éÉ “&#“Ðw"ƒ3™¼ÿSs!$ä]þÓc qlz^ÆÆóæ:æ¢HmÌœÎÛ"#ž'Ô)Õ­fÌ-Xc8’—Ú<ŒVñ@•‘"èÛSÁPMM(T± 6±Áî-O¨.qa.%jÁl¤~eî.›Õ°ffÄ'É Æ™_%«¼ÞêŠY¡Ë‹‹LÚØhåìùÙ3¡B“FàYN$‚`‰äxV/ +§·–-‡ÙV£–Êâ¹ßã.‹A/d•#¯á×l÷ØÑÏu¯X_Yúó^æñŽ­/,Åt<Ðû¸? {À~O/µ-íøJ9þ ãƒ¥ïwáwmïÛ?h~¿y½ù¿XúFóºöçæ_XñÚ÷Ì¿±ÓoÐ6w/I„ÃèLø\…ÃeKF N¯3áÄ뻜?vâëœgœsNl àÎYÓ°YÐtO¡"%lÔx6•ñþ‘ñ{c(ëµ ´J{2½dµóäñô¹42¤•4JOÁß+âO—Áe#×ÇŸ›QAÚ´‰B¶¦ÕÀÛ8­ÚñÐPþæMŒ©•} чc!Õ™æiN$ßÏ£8B“òö¶@‚¨E«•š¯šSIU—¢ÜˆB@zWWáRÎá ;bíA›˜«õV´¥j»s‹-YÜZ2sƸËf’v=ÖØ·Já‰Ah6»ÂZvöc7ßS⫌zKÝ¢ã á »¡ÄÕÜå'l'Ùzª>®-Š\7På_çò¸u¼èzq­·«Ìvøø»\¨/²XÂ2.º.]PæQÊŠ#i[!‰€ž¹¿áÿfÓ`+xQ‰¾´ô ÿø1ÿc/ùñð¶‰mè½6X?šLWŒ¦Ó’aÔô"a 4+féòŽt€Ñƒ#ÙÑuƒ#RÇæ _§&½Z(-†çŠa1e±1vp»wÕIyçÖÿOù®Ñ|¾ëÂLÝÙ®ySs[—æ·TäÔ ÍàêÊË´Hu‰)*«ç*d‹ˆ€FC>B䇄ĿC&YÍCP*%ú!Þn#ªÔ8@¶B–ÿ*óIY‘Q|LF"a³üÜ@<ó§ù´Ñ4åcÓcù,Út”Ò7B4ˆ3žÎç5ªo¦œt.‹_#ŸžOyGµÍNsùŒEpÁnmTàD'æ9²ÝCȪD¡ò‰;Cæðö†LM4‘˜ý[iéÒª—Œ ,Ò‰zÏUuuK=ž6'×~µêº+$ˆdiv½;ÓX*oª®ÚXSÓÞ2Zi³§6úàÊ µ¥ÀÀò++Z”'›h9ìÔ DFî¹9|¶‚ýð¸’í\³­wt%nu6÷o\³y×g9öåï;ÞËüfùozÞãª]GfEoŽDœžêÞ¾¾*Wn×®ÇxOO.ã°d2Ž‚ª¾¾á]ÒÛ“ÙÕ7î¨*@]G¶ÊÅuY…¼?·Xº";J;6e7÷7JÙ¨/¤;£Ȳt§`Êj)žz@à¶U¬újÕ}D ^lð{ýëý/ûÑý¯œ ¤¯ Ùz #Ó‘éϼœa2=†vo;jÿÔÉuáºdÝDݱºu§êÎ׉=u#u{ên&çê>ªãߪƒuuÇÀ ްáU„ôíëÍë{ÖoY¿oýWÖß³þ;ëÿº^äÖÃõ¯|¶ölÞžÛ>±‘·Û޶'ò‘ɹÏäßHm ]Muò-{æKÙEyú‹æ§j~å0[?|ÍéÃeõM/Ÿ®SW¼^ÍÆÐöéy—c¦Ž£ªÎ¼–rX͉©9tJÛhêŒòWšg©…óñƒffÔÌ9ÙôS÷CTk>Ú¤`µ\ÆDÕ’G ¨æãÖtðšï½pwãö™O ð–,Z£Éô|^¹Æ®åÍ:OYª s–+kªß{⺟o*¸ž†Ù7B†3ŠAæ^;ûx·/õä‘ïü´˜Î?êf.âIœ&RY ¶9eÍ#}­{·ßßpOßwº17ptäÈÆ£›V‚`ÓÈˇkî­y´×Ô(egçš>Þ伃à·sNÜMñ›qJz]zWú½ô7‰MJË|eð,ñSðJf們ßÚ¿¿ÿù~Ü? ¢öØ&NJ=£'[Z¶³§|g}Èçܨ¸âõØ3bçHȘ‚¿Qg:Îu Ž¯éá=ÔëÓzXxŽ…,eg*E››¢èŽÐ´1•®©(O}’H1ÔHSäÓ™ÌCÒPšQä4?>Ćդ5°(˜—ÚåIŠ„ìÏûÖƒòó)?œO¯çɧóéÈ<ø·Z ^Û´,j°ÝÓ¹ïþ§¯7×ø£¼l1Þ¨µ´FÙ}½žÕÇZÁ¹—‡‚롸{¢éÊówžxª£çÚ«j]rÍî«×­½uã+k}Õ¥¾ÚXÕ´˜+(Oºd{Ì"þÊKf)êĬQ´$d9€ú–,¹¯–Ù-VKJ`Õ­8Ò×5XÙ«˜QóÀÁÚ›oùê·üýWm{Ó¾Æb­ÈèÚkºÚ‰õúçÞ¯°­  ,¿PŠ?¨ƒ†Æ ®®ß¤lµì·¼cù寖§y0êÃ/ò zS‘&¬) éĸÙyecº`P·ø$Øk_Ô¿hjÑk‹˜E#[ ö.¸·àlÁG\ÁMajщc±É¶ÐËØ >ËPz}ëÎØ¦=½-½°yäîeïǶö5Ëêž*ˆÿ½ç‰Ç¾qÊkö½úq´¡ NñÞ0Á¶ôo+¾tºFSΕ>^Ã=Žk¸³°³sÅæZoA-Е- ^ÔÊúi¯ôI¯µ·÷æagú]ß«M ¦“ñŠ ÿΚչ8ì‰ÇsñóqÄ{âÇâ8ï_³ÀŒ/eòtF¾p‰B¯1B§È˜? FuB#»àF‡f*c´=CìÐiTó!¶”'ãpÞ€¬Ø2ï*-*úæ‘ùÌy¥L¬ÆŸŸ¢^XÔ,È“¦ªUQIÀÜßd„®ðÕIYdÖxÌÕf¬O._úy4ð}N‰A¬«ÊGÓãÕñ²ZÞ´º®d×’õ%ž˜7\²Rc¶T¯u` gÓè\ŒhײÒ7‹fç2a›NlÕ@Œ°àÅH¶Ví&Xø¸€V`Âz«& G¶:šo®½Ö"wÔ\„Ù¶-Ï(DBæþ¶ƒ =‡%nŠðz=Íûþ#­UÑiùL Yâê/%4Åc‹ê㱆%‹ ¥ À¹KsoãÆ.°ü§"™êÝíÈm7yÐÔÜW•bWK³¯½¥%ç²Z\.k}só°ËCZk»«ÞötVeÃÙ$§ËòTP§šÈTBˆk>Û[4Ç»aK³ËµÜSoˆvG·F÷Gïˆþ5Ê%¢×EQt þ‡bé\úbƒ´œîI§O¤ÙciHxøÓŠËÚHH=¡Á²ØokÞÒ|H‚ì¼õyeùÄr´œøç¡ñ±LffÅ9Éï&^ì[½—1Áò£‘·8µ×!l³W¨yª+üàp} >|Èâ“y¢ü,ǰl$’-4$᯲Pʸ ×ôõ¹û˜Qú²š•SPRÂúT¶&ÙbN›Ýe¸eˤ>e: Ã±1ã6„¼!š‚×+Ñp²:ܑٖܛdA&?–‡ÎJP‘&¤»¥ïJ§¥³ç“r’¨E°‚ÃÑFJ·Æ†¨¼ò›J‹€k1d¢©DTã)nÏÀÎÉhO¿bÈ9d ¹àŒ¢ ÷¹-ä²ÿQ–YН…:ýé:PFùY‚ž«íÕ*uW%µàªæñ–ZqDˆ¾}þ¨ËRÕCÒÀùªuª4¥ä#8ŒÃ ®ÔÚ É¦Õ­Õ% ´–4 "[Ge©;¸Úmà\‘%ZÈ Í›™—%ѲÈkÔ2"k6háãWkå0ï±¥ ÆÒ˜W’tY›U*osí²óš«[hm-/q‚İF AfŽ¥¿¾ÿʺÁé®.¯ÉàM¢¥©ˆX$`Á¦ ëmÚš°›Uf¿ï -áCñû\˜%¶cèxÎëo‚á ¬µHN†×‹ÿÃÜ›ìVÂÇàJxÔ4Z>Rß^õÖê·úÞZóVÿ{[¸×¶¼g~Ïò^9c2ÉÃÃ#ëÍSs<+oñMÍ=¨ìOÖù̃ƒ¹tÂ’N'jV §k,4XŒnÙ’“5YÖ Œ Ë&Ò2 ¤åQ™fÖôœ„ƒƒš‘³[àMO¶!ÛÊÙ³ÅY/Çe¯Ìλ;±»q÷®ÝÌÀ 3îrnÉÉr8W³ÒЛ¦à Šu5v5wè:ÕÅæºÎw!¹ vMÁ'ÓÕ&hN˜†ƒs™s HÆ9K77†O„'i]I2œ OÆÙðù0'«…UO*Í(`îbN2Ï0ç–yä䜒ëÉ çX;–C¹ÜDîbçÄÑLå]Í e„ªÏ¡JœOÍgæß¨ï¡ª¬>©3þƒ÷ùQœ÷EñÃúÓY¨æŽ aV„Y@^¢¯‘2¬­”=UM¼‰V_8+»™(õ—|Q×Tuå—)TÏÃcNª'C*{\`äh+œÐ†6?Â.ÿšý[ë%¯q»9‡>sMø*ƒdä4ÈXÐhã glYAi¡¿!db5†loÄ©àX\^“|ÖÙ Ói%^ëvÙIéy^÷OOš$cÜ¡ƒØÁ,²«$jk»Ÿþ¯gî?aë7xžÓp4/}"Û´¢­HJÏ~tmÅò×Ú6Ô—Ø}z8:‘†IÄñW´t¶·îj—Obª?kNÌ>ÑEˆÈ­°×Ëkx–â—àÜ,'à~p ´*ÆÓ¥§›OïÇ®¢åãÌЮòlZ-SjÊ.’VeG²CÌÞB‡²ÊµtWĤõ¾4]`å¿»tj)Zº9ÈïÚìáGº;‚õõ¨~{ëÉŠçcÐG‰E.c4géLlhÜ€6lß^´ýdÿöóÝÐ×}®åºa7Ý[%\½Ý¾zïI€¯êwÒR¯a!'LÇ„O«A|B’t~_˜xÑ ÀFºêùÙ ñ1 (³”©ö]˜VË ÆóÅ:ùIá¡/ŠûB–ÿò‰ªŠùBš¢^@>j} m$Òe±åÓ(ØóxÈn%ZFKö ZÚG*yRýj@H©É.Ì×*äSH¯æÔ¥ÒZ“|íŸùò1¤Ãô4QÙµ™8^g hµMG8?DW¬^Ô±fKYöÎ¥¹ö%ˆf°…Ê"-Ço6E’})òëì¼vkWÝx5dø‚¦BY++f?èAÐVç-âhi ‚›–-¹#A¨=ª˜E8‰ú*¼9Ð0DoÝÁ÷ÞjÐ H,2V­ ±v<Ýq-îëoëXzÇʵ(¶bƒH«#'yA«5Dn‘DçêÆFÇýû_¨°‹ #É:Ñ ¼V«aµ¬ _¼çÆŽ«ÆÚjÝöÙÉ+½œ¨ã´ ͘áY–hå¡wXHƒÏ™­S𢠰Y6 µ‡®’(¦õ¦…Ƥ©˜ ºIº¤NÑÓ1:]U¥qžjf†.Ц0U¾*Z˜V¨§^Â\IW/D®…¹#âS°ÕrÞØ¬èíÙ*¨- J˜2 ôï6ÁÄë+…ú ’EãÒñHä¼-%ŒDÞ:^k´™4~È|üUÏñ“FAât¦bÅ •ŸßÜïk25¼F¯aD3µÂ8]ì@ ŠüŒÓñ÷`tC€e‚{ÕÄ!Ó ‚PÍ8O©†à‡ªìéÒÒZW9Eôª¸²¨¶,zlö=zÖU³›ÀmÀ zŸ‡@|D1OÁÛ_8¸ý6Hg—b> øγ*S弑_žàšO\Q(5_Ïa¯¨R“š*ÃÛîùü½ ˵v“{å‰ó·ÛÖ¸/h[N kŸÞ{ÿ/Ž~¾²mûý×øj¥[íÉb+±HàÄqC&Øò­ßB8¶ýXmiáš$Ãu¥¯æ~vdço¿¬ýG°SÉ%V(\^J$‘ž›Åo²uà:S’mp[OkknÇ6ËŽÛšZ[‡ÃÅ–p¸¸5ÜTÌT‡vlëÁ›BÙÐ.¸k×ÚêÞìÊi6e‡hŽp@:@ Z{³0{­dµ¼è¾ÐD¢âªæ,;‚;Ò;Zv0­;Âx¬©Øò¦ºS8E0áª=Û´#î‘èHãã#™4^uïªGW½¸êì*vbÕ™UçVáU7±à€|Àw y@9Ðs€;°Ó¿zì$k±LÀ9*êä×E–¡_ˆe¯Ÿ˜gÏ QaˆN{ÍP”IPh’Ÿ×¸0MsÕÄ]\¸<Fä=_IuX_g(4aó „£T¤Wš#iur,§?tVŒ+„¼,t&¬"o+*ŠÈƒ“|á5²Ù*÷ç‹Gøp²*Å®‡ù¡‚ð8\¨Íµ«ù¬€¿ ú56â’½ë`¦Ä¾Î i)5†à›=:OH£3iûÐÞŬÁ×à[Þ[ 2"ãðîH­]:wµËÌÀ%^ÓìdNÒ`ŽÝ(‹Â¢=Kãá0cÑôjTW¼¸+Q`)ä0WtÞÚ&.*?u_µW§å4Z“”¶³kâÝû_ýt™Þ ¹&QæhÕ¹Äë8µz”“LÅKK<^^bÜEã ÇÉ$±Œ–wÄ/J€Dã²ë{ ‚×ð›%‰³ Ct²{îÞÌ:@9¸Q1GÂALÔhß=@«}ÌIbåÏ0¬k ŠJ¥çz³N&š‰@h/½KjŠÚ‹ᢻÎËÈpX>&Oʯˌü†b?eGçìО u|Œ0¬D¾lΔ1Ñ´åÌuæšÚ:í£Mâö"—ó|uö ?%­f)2|ä‹yë'ŠŸÚ³£iÃÆ«]w®šýð7ßéŽ\E‰]½WŸº~ãÒGEôP]<·ö|Ñtÿ5ÉöޝÂîG‡2;t†­þàê7ßôX[4îÉö5$ºwÒª¹ê¹ßãGɘ4€¥à´²µmq[Ûá`©©‹A{Mã»ÚwËÙl…ÉCíï––¶PgÒËŒ%‡‹áï#ƒÊ:Ý VŠš¼‘Ÿ‘«±Õ„kp¢¼"•®iãCUóM¡Û‹øÛ.zø¼@ðè¤ å)ø¸b¸®êŽªSU¸±jiàªÄ8Eõd¦/Èä:S¾èÎæ' ©‹4æÇ³‘æ…/±¼0=C÷RGIm Pš¢³ÁDYx;a™ùºªYÎN¬Ã™/z®V-‚Ž/]ò!ÛÜ€puÄH ©*ÅVТHLü².i©A¨­ˆÊq ˆ,Å$Ž¢˜]kجӥ¶Ö„“"BîÎÿÑ>2…°÷kzKlÐäa^î®›îÚóP¨“„z¯ÁàÅÝþ1ñ•h_ª4Ô"™Â,d‰gæ$Þ¦ÑØBc°àŠkïüüÜ»wüæ¿Óˆ!\;÷ ³’Õƒ½à„âø¥¿mÊ®ømÏÀÄÀù‹ÌÀ€ÃGUx,•Õ¨iÁçe÷R:¶-»‹vŒ íû–MÁw”Hï>_w²[éîfº»7ïóû}¾ýüŽ£uC›×êïw+<Ìñ ÙÀ>ùÒü-DÔk¥ÓùùY‚gR‚Ä»Q¦iCr”ëÊ“öjµ´W§ËP>ŒÛ)*…j­”]-±˜çCj¾†xžBZM<[u¾˜ªæ3öfZµmW“Œ…ÐBËçï'àón«Ú¶Ft¢²aÞPæÖ7Ý ½0Y7é É‘¬Yâ tžºÛ›÷躒^+Æ\aÍw—z ¬…xVÃ@­QÔÈ~­ÁõëÅÎ:­äÑ1 Ö]ånAê½sy_í2ƒSc4êKvcéú¨Ç)“s ±Z(É|ôY‘P*o¼Å§µóP/ú ©†Ù‹Ñ Â²ÆÆ·¯äX{bö6e,˜ƒXв­ÚþÙçõV£Æª“y-6êEjm3—ð ^AxXñ¼º¾Ÿ"Ïw:PUÝ=u¯ÖáÅ¥u¸µ;”õÚ³Ã^ý ݯv£îÍå’hÝ€p'šZ2PÃÆW7ìdêšÕêÐpóɳ dn"Á¸s¤§þ¸òLå¹Jì­l¬ª©¯œ¨ü}%_™˜¯oŸž1"_RK9(µ¡‡NÂÎÏ¡Á!04SvÞl1@œêgæãÁPž·,О/JÜSó¥s˜H;½p¿ nÁ]!DÉ :ôMæ8MPo#LÂÉÍ~¸¨•anáœɉ##ÙïüûäŠ- ¿§QæKõ[^»âÑÎf¼<øöìÿ\á+ˆ6í¹ùjSL':,„ˆ´d^” ‹%– XÑUý£ûò¶ÆÁnûþŸÂnqf‡ÃôêO¯Ü?0‘½g=À `n–9ª²‡N°<­”eÅ`P>ªþk5ªÞë[׬qq ‹Ñ T²d¿³ìÕeo/Ã˲.#.Ò{ŒdúE;t]B‡tS½°w°öY·Z÷[ÏZ/Z9Ÿ5iU¬=Öa+›´ž²"«uc´shÝZp¯çh2 “Q%ŠÈ{tᎾ…¢Æ¡ÌP‚æâ)5!P~He y„1CmÒ©Ö,š+êKU:i€yÛaâùâöÊ/ß3Vå"æ󱇂ñÀBfŸ÷B3-ñ&Ý(_+Ï[=¨À(­Û{ç¢kïÞ=ö+vÇ‘PÁìŸþóî{_óü,g¼¦ˆÓBD,puS ~÷‚ÖÔšµ«;h=ä?ÙØì](ê~pÝ 6*nyˆyÇË@Vâ3t÷Ú¯o G;«³wÿ‹°FËrŒËl~Ç`o–F¡ðÊëN-†³ZéGëbkÚŒ…f«$%<žƒí·Í´ñy垪âkky»&Ô¹úã¾ç>™{÷3sà%øÃ—À=s7=ë}êIßÔÜMʱñ‡ûžòZ­×<ÿ”åùçŸzrË–+:¼–Žï]Ç_1~Ð2>~ðáHäš–qKKËø’Gǽܓ/eµYŲ•ÙE}•èŽìõÙ¯¢‘ìÚµý=Ù¾¾~ôTß“âñ¾‡Ez<ã}øxõ8ð¥ïòÞ oþ6¸íØm(y›rÛiœ¸íâmÜðm9Ò8KšìmS°U ´DVøê“õ-õ«ësõõÇê'ëOÕŸ­¿X¯dÉõ°~ UÂ‰ÒÆÒ]¥s¥Ì¥°´ô©'½^XÜ·tz½½ë{wõþ¸÷L/×;o|þìúóëÑzzr­õyEꑎIXúªpuFM åsøuƒè˜‰î Î`>_¬¦‡£ñB£Šgëd5Ó¦ÖeLOÿo™þ/½twöö+E[wìØõè“OnY²¤-à „¼¡À£?úøÃ‘¶%K:vŒ·¨)åÓúÓ‡™¬ëè›pz¡3[žÄ‘ª‰_dŽóÄÚ¼w©«‰`Šo0LoC# Esöê|‰µšßóÂù²¡ˆzÔ |˜+ƒf¨oªrÜXÑ^KøßxKtÇ ,–®i1 ßó›#Á~«€xŸ®ÑW]ž^'šd½ž‘‹kÍË·$Vø Õ²šˆi†«[bm‚,=ËÂNK‡ËÈ›‹5®­|«Ý€ê}¾å{LŒÝ«ØfùšNDí³ ×éôŒNÖ,îÞ—^§+_«Mµw%=ñ“_Ù§yN*3õ0ïÊ&b‰Œ–$PH,§3š'goiµ4ŽEnL/­´À¯tÄ\ÄjE–&Yu/r ¯•Ì/ünðÕÞˆÕ¨e° p"žžPà5zVW`œ\²‡×»ýQþZC’=Þ±â§pi¦RÖ°z;‰‹Zž'¾Ÿ }½ÛánàžrŵÞhá ?›ýõ8‚¡­{Ò²áÄC› ? ÁX¡Ëlñ^Y(Ó¸¹nîö_Y-pOý%øBÅ«TA¾P(F÷ÃâÝïXƒï-|´î~— u1A§µ3k& “•p²ï˜ÀŽ}† ÈðK6aM¬J<šx;Ár ˜ØáIpܘêý!/Áu RþTü¢“Öñ8½¿wˆ¾ÆÔBzÊ߬k¿¬Zju†„å¥#Ô“ÒÛgC«+u&»ÂE]² ™Ù¯ÏÞXtêɾ:%$к¿ep¥á€´+e ‹x3‚~ÐÈâAð„qP2 ¿Zø]eØ’³LXNX&-œlé± ¡9$ŠÓüÛ%šN¾@©‰ÒÁü”˜æ‰ ¯Þ/›îÕw}e$µÄÂ`RŠ™œ×$|™ü$v³˜sM¡‘f¾îǘŸ2Ûv*…€pËYX–C,ÃlÀÈ‚1 Å1¼ o,¼]Ñù0 zš‚MŠðyŒNI“ðÉü¾DP árΰOÉ×?ΤˆVX)»˜ÄßßÄ?ø¼•Ù>›éž­&6z;µÌ,àÖ |Óæcˆ1ò­¥ç«M[õç•ê­Ž)X®hO5n8TÔˆãé)XôLt×"Ýžw3[I‡b•v%ÝŠ»Ç=é>åfO·³nì¦qjæóL†°‘™Ïiþì‚k†>e&]¾WmaÆ&‹S~>~¾Æ'´0ãcûÇÝù¼n ^-0ýÎJ§Q–ôlË…’õűîÔÒÌ0*„Ln½VKTɦÕ—fâí#ëÚ6¸Y«Id5%ÖXÜãóZô&B‘Ll°lñW‹LZIÐ¥ÇËåBËâx¨¤vóPËmÑ*2Jí8Ž—³!⿪Àès P뮢cJœÒnÎYŠ·†ÎY¶&0³ËNFã9£ŒÉ=[R´«‚­ªpüLÉÙÄ—ØKèÝ“¹’S%\ †ŸdfYû<#ÏÞvA—“”Ïþ,ÔJÍ»ªÐ|„œß¹°KyT6ëD¯±ZM¥2Ú³­²§bý¬qw™K¯Ñ±a^ð'ª+:6×ÝÓŠ³«|K"^£–(ªÆç-®ØÒѰ»¹¸¬¬§>PæµxXŒTm^^}Íþ¢ÅÛæÎá,[†×uâ”:–´57IZíá¦NKSSgSmÖÖÐl¬vŸá+†{ Ø`ðt"b` ì{f™‚ÿª”%?óè´R'nj ‚låT%ª¼ 8N9ñ^ú‚ÁÅÁSAVAØTonWÓ3CÿwdO©9þ Ó™|ÒÆ^1môrÝi:ÛM§sàB¦VçgnòèZO|‹Z˜VoÄž¯=£à9¬NÝÌßëC¼Xdþ¾R‚hæÕÏ É~ôi®5•ñr‡Db{éªÖróúØ¢¯-®\ûDáu±´È`ê.ˆrŽE¬mû@Ó ™ Fƒ–ÕaÌC‰¼°Ìy™»®¯x]Æmàd,[¿AĈø*yö B®½Îà`Vi[vcÿú ¨“J­:«S+f„àš›WÜùðc±I,åÛbÉÿ#¿Lݨ΅´±fõß6Í]ÀW° €Ÿ¼êI<-°;2÷p¥¥ÂŒQbVƒªd›#S8{”].¯ëz?³9Â`æ3à÷ï§$óõ´DUé¼^Ù€¾SвßÅ—ÚK#¥›K¿V:Yzª”O¨ox=¹oTÉmòjËwù2ÉŒ’Ù”y1ó³Ì;~X½èXæD†ý¾š‹Ï3%uâ8Ÿ©Pÿ„cˆV< ©EOåÉ8¤wŽ€8Ó| U½¡À-óêÄ™_ÍÕ}qS9ïŽn„Äf‘át±^ó†xýÊv·€ñ½cµ[ë®ËXÞµTï*L:Ë‚&Ò²V³{±¿jÙê“¿]µ<ýlÏNÖc0iMBZéé½òÉ£ÑÍ¡‰¹öïúÎqm½Áª)Ìr½›‚ÕMEÖBˆ?ýê_¶´>T²ˆÊaÝÜGx7óЮ|Îá°I$bŸS´Q·%u×Ô¸¢Rµ˜Rĸm.]ÔævKé¿ôHÃÒ¤„½Òu”Þð5$”†S L¢aWj˜ç4Å“"æJ5NÓÌ…9 Xá ô2Oä«S ~Sõ&¾–Ú†:,æ<÷çšì!Š¿pëMU%-«ÚyÕ›ë-µo° vM_¬þÚR]oÔÆÌFΧ]ä//“«Ns×núFbñ¢By «1Ñ¿JDÌEÿ^[fùÙÈñÙoJ› >Y®Ýøe7¬ºiWÈr@†¡ÿµVgÐcÁ©õT·;%2bú¹¿ró? )]¯‰?—Þ8ôÆUï‰ïI¿9ô/W .ÉuÈuUV:´ö*NÊ!w™7!ï’sò˜<.ï–÷È{«r[sûs÷ŒÚrëoŸ¼ýÔíÌÕBÀ_äõ§æŽ(Á½{|àfùftó½W'¶íÙsC0a Þ{÷NA» zɦWwàê«otAÐíéÛ+èx·ÙUÎDm¶º¯¼/… Õÿø0d­4‹çDCÙ~šò‘V-Ë®\¹J€Ù£tÿ-7fÓîŽ[„DÛ¶!ÃZïZ´öîkkŽ.;Ú¶go‘—@P "! f‚Áþàhð@ð¾  *mÃmÇÚ.¶1JÛú¶±¶ï·k;߯µMÁ—ƒ`4‚£WÐánᬀ„Ä=uÎu 9Õ;Ší‡Lót d!#Há|y>¡ˆ—¦ÕiŽÆ j‘¾þšËóÐ’ÏÑòéÓ§Z>Dg¹.O“WW™Mõðò|àB|¦lšMÕ w_Þ7Ïî­5óöËuùó÷Ô.d;ÔÒj6Ê€p¾ø(‚ÍMÕÔbþèõëzïŠF­ÀxÑ"·?(ñFQ((ïs·$9Ù*±1X°÷Öå,/Ê»>#™õ²³æÚ® „}¥Ù$£ ÔUâaYíöÍÅ^ÀE™ÆB‚=c…}½²µÔ§íc³?k$ÂÐ*F£Až}Ýßí´[E,pbè‘·àÔ7» FƒÀêÍb0+‰ëfnŸý4¿-댱[k¢'ì<ÂHÃòZ#bMä=³¾viÖdfQC>ÄèD‚aŒæðÞŸ=÷Æ·Vö†¹Ù“‡[µC¸½°+~æóÙ7×ï÷!ÎÀ³Z ‹éŸoÑrÞ75©ùÙzCÝ_@ þà“úãðò?fþaæCÞÏ^Aš"Xè%ï܇3~é?!øÇG9ýÓSôˆ3VÀ«A| HøcPÄÐL·é_lä˜%û;ÐjPƒž!æã¹ÏÉq+`1é÷ Á~¸IÛï:òîGwƒax À§æ.‘óðìê¹?pqħÀð °‚ì[EÚ¥ä•&¯nòªf&@-ùî6æcPÀ[ç>á°Ž|O M€eìjp9w–¼ÚɱÛÈky­ãžzr‰!ð4|%Ð/ð³Íå5®”û!H¸Il‘ê5I-ÒÔ·úå¨ü7c‘IovYn±þÊÖiÛgû¹ýÇ{ήtA¬à¿Üïx^õöyg}K|w…‹÷_h ükh·:råàez 2 ƒ ŽŸY„þJúèÞZty|ry¬!Èœÿ^ŸocP Ò¶ü_˜ àãù6KøáŸçÛ韛oó`äé7ö€þWwGÛVu½Ïvìç|Õ 4Mè»%%MÚ¤©ÃÊÀN“HK³¦@3£6Ïñsü‚c¿ç´®­º"!1&‹BÇ&‹4mÌ5S ÖdûÃ)äפvMÿ !mS¤IüØmçž{ŸíØ _R÷cµÎ;çwïùºçœ{_ ©•f‘®b–Hçv"ÿ%¤]È ié·‘vƒAçà‰ÓñÀrÚFêí£‚¶“½öã‚vÀ˜—]ëû¦ Àÿ@Ð.ò‰ý‚–Iã—‚v“mŽ¿ºÚ±×ñ/A×°{— kIÄ}QÐu5Kî ºž<¹™Ë¬f~5݃t ó¥iÒµÈDºin?ûNªú¦'‘¾ èÆ¦i¤oÇ1?@z3Êyé&俊ôVœË}lÅ1y¤ïÄ1¿GZAz é8þ:Ò;‘þ+£enóçH£ü-ì»K¥Zäo©GšÙO¶´ êSº©ŸÖB4¤š*Œ'ÒI}*bÒCñXÜL'4z4ˆO%ÕD$ÝIš!º^vÂ¥¯‹ú£QŠ£ šÔ -9«…ºŠ¨Iu& ½EuƒªÔLª!mFM>EãᥟŒè“:£¦iP¡SºajI°NÑI-iª€§SIÝ铦]––#ÚT*ª& ‚wôSñȺ\K0•ötõöY¼ÿ±ÑäQ'I2CT*HÒRÑÈ4‰‘ÏŠÏÆˆ 8FBpMBÏù™ý²ýCûU€÷ìïÛE‰N¦L€Ó !oÙl,›EÉ$HbßG›ÄQàRrxLƒ üÌ ä(Rq‘„Y —&À?c˜¼Ýä>ø°ï!ãT鮬‹.Ê6ðN¬áw÷2kºÖÕx½QÁÇ8úö6ðtœÏ¬6ñYFÎว€'áodûIàè‡ÐLZpg2K§P«‰öòØé$†qcC~?MRè§c˜4mf‰þ•ûrå¦ 6Œ_iñÎuü§e³ÊŸ?ŽöB+%=øíÑ}ãþ¿#ýÕmzÆMÂŒýÏzX‹Jyƒøü$Ú2÷‡!a´CuЃ±gš#"ŽÖì0Ìäã8?÷†ð•¯Zð Vsq–1Hae1f—yqLÌæñÙMöð \û< 8ŠÝä¤Ðj‚ö sg ãh­ðÇfízF0Køzjbݸͺð†kJàêÎ⚥„ol¼‰«šF«Ë5µ¯‰¢šy–t–ÈgócÈ©Œ+ÓGE­š°5-ºTHØr㕜â+¦{°«QÑiËWdí¡/öTæËÒ0FÝʾö&öm¹3a½Õç¶”êbÏt¸ŸÄZe«ÞG¼«Žà¾Á«‡ÛÃæM£†õâ\Z÷AÌ1‰0võòø$zq¡X£ÉBþ0{Ã%;•ŽÖæ ËÆ8t¦w ébå«BCHôkN+Ègõœ‘T×ôVß&ÎŽcÏ20óTŒ„Žñä]4*ìÑÄNÅõKl²Ö;ŠY:…Þ¦19…:غ™(—=gÚ#xŸ€Ów7|Nâ§KD¹ØKº0Of`?ºáj¶"Þä„°ŽÕ„t6ú›k)­v–çúBÏŠzØ÷î…xì‡jaôaà²Þ7ŒÝñ‡€3WVO ó†às¹GI©FøòŽXÚ%â8")ræëì9ÅUÓÅ™#%jŸ×E{¥“Åg¶d×I‰$Kìá»ÒLIoT1'tѽ¸t­Ðp¯ä=eâ¸ÐÆ:ä¬ÈÞ`a?+öá"c FVWEé@–%±wëÈg;!Ïç°ØGÖ‹W\øÇJ*J)Vr¥¾Ø™Y? bO(íŸqôbƒ¢[Ñ«µ‘Ò°J*³¢Rs±ÍbIÁ5ˆµH±còÚÛ(;XôN5%+_\ ¾NkÏ&öo-J`du±Ç•5§"c…žPÔËöÈ8‹Ç±ÒËÏÇ…ÑÉ’¼åþ™_)fÝ Ê·ò*¾F^±š%“Š.]:’bX‰)Œ8“)øÃí*Ínë<Çã_|¯°2n½ú"Šùñ0ú^¹r,ÂLþÓÀ×P¶åÍ$b~nŒ•­A’”¿X’ <#¤ð4@ § ,*ö¯²ú–<^“¬VgÅjkÌ’W¹Ž–ûQÚ­NÏ2R§ƒòzJ`PÅìYÌ8]ô «.4ð“ ¾&|£_kWµžu—Ù[ÜI™O¯Å»x ®AŒ&ÏÒ”8áÄ û…”UËiñÌyv† {6›3†Kñä2 ÑݘŸO Ÿ†ØA´[â!ƒÑBdص ìíe'Â≭¼fUQK¼s³¹lG³vs&‰ŸLy_*ídÚšy彡¨‰¿×Nâ{?ýi"[Xµ¦P6ã.Ì0°7˜‚Çc•U|«£ÉÏéÖÉAç¶ò6Û§þ)NÎ<’ü½ $ºA\œ0>Ãñ:Zh”<·¬`rTìdÅY!‘E“âMÊš•ÂÖ¹¦®4Œù$îAFa×£"W5Üûž•Çy·*~šè#ÅN äY¡—e…‰YÁßXhá\`´tqÚ·ò°ÒUÄ@Gy”ׯ!^ÒsTÌ´vQÇ\ÃiøÄoI<¾ù[×Ë/ý‰e‘æq\ïÙͲ9ÚšŸeâO37Ž¿äޱͱÛ1â8àø.\ï[£ÕÊFRÅÓ;•1ïýÀObÏdVl<§HÛÅÛboùëü›·uçõveÞvï•D¯òÊL/wç5†¾•?Õ«øël¶vXgÅvà^Àí¶ˆwä³lØö|ˆ!z%û€ÌRÉ?>¥ÌKŸæWÁÝùñ ;|›£-Êqç|ü8ñqÖ~#x#q#kÿÐÖ*][‹t=?«Ð«Òçd€À.ýVòç{•ÌKþwz•~êoüd``ÀA°äícƒk7À2Þ‘öùJt.3—›[ž[«"sž¹]s¾¹Ñ¹‰9'Dž³§2ÆÜ8Ü䜴7wn᜜÷œßuÞNο~~ù¼Ýãß*mmÛ‰œ…«D6I# @7Àƒ‡NÄÎÈÒß}-¯}¤xÉ¢´°¸¼¸²¸ºè ‹»mŒ²} }*ý N'Š4ýn°Wѵâ—ß \d¸á]Àýo\h•Yñm¾b.\êQ.îWô@Òÿtà#xRãsö^ ´(ýì ¦µ»-Ô®xOÄþDv˜‰jòÝ +ßd7Éz²¶Löõl.»]ÎVMdÙ³ÙLÖ‘ Àsö«hÑm ûŸ:!å¯{S`SÔv ÊÔ’€” ,–+Õ@Uzæ~`M{¦WüµÒ5Xàk°À®’t ²¤|»æëƒAÓl Çí©ñÔQ7­¡uNÅÕí²¹œßV¼›œÝÎÎ3Îß8o8ÿãtu;;m™—É…Øš•*yÅÁ¯Mñ*önü%(Åû -nû…í*ûfy2< ÅÑØ û¢ó’‘¨Ð Gަ8 sÔÂÑŽš8j䨣ZŽj8rräðþ`à€_\ȼpàe€ /<p ài€@@Ž¡Üi.>ÄÑG[9jæèvŽ6qTÍQGv_à€¸ ð;€7Î<ÔÓànpgüÕÒ%â‚þ9^Äk·ÏçÊüÁ•ù©+óª+óCWæ¬+3éÊœpežpíï’©¼M¾Cn‘›å&ùv¹QöÈõr­\-˲SvÈ6™ÈDÉ-L’‘ Í}>Ö¦}ïû¹ª¶)×8BFŽ4K¹Ûì#¶‘±\Ǭ⑜·c$ç »,I?nÎö<þé5p™±žkÍ5î?ödQò¹[Î<÷âøxSGå¿æÒid4ýäÜSW\Êu—vod XÆÊ\weÕ,åáyD}aâNR!PZGIù!}lt»,“ñýOrüŽ­¦¬žhÝ>>ÐäI<€.ìÛÞülëû"½Ej:Æsµm¹:öh§§Ÿ=‚‚aêÙŸ³šŸÝ·½õ}é-ñÈìˆ'1::H M &Òx#1Z2ÌŽŽãÆqaaÊ,лa˜f QÊ4R0‘bÂ:ˆ!1Ò’Irö¡È¼mËP$ç{a"GÛs.ÆhŒ»Ú!j¦ÉcwÙ—š€ýe踴 –j„ý/Gž endstream endobj 13 0 obj 20718 endobj 14 0 obj << /Type /FontDescriptor /FontName /BAAAAA+Garamond /Flags 6 /FontBBox [ -138 -306 1062 987 ] /ItalicAngle 0 /Ascent 861 /Descent 263 /CapHeight 986 /StemV 80 /FontFile2 12 0 R >> endobj 15 0 obj << /Length 445 /Filter /FlateDecode >> stream xœ]“Ánâ0†ï‘ò>¶‡*ñ8ÄTB‘ €Ä¡»«¥û!1l¤âD&xû&ÿŸV«½}ž{>3NÊÃöàÛA%¿BWݠέo‚»u÷P;ur—ÖǑմõð…øÔת£d¬?>nƒ»ü¹S«U)•ünCx¨§uÓÜ3†Æ…Ö_ÔÓŸòÈ¥ã½ï?ÜÕùA¥qTªqçiÏ·ªÿQ]JPþrhÆŒvx¼Œ…ÿ¤¼?z§„ š½Õ]ãn}U»Pù‹‹£Ušjµßqä|ó4[²êt®ÿVaÊÖcvšf¯ÅÈwC0€ŒP»äŒdK`d ðÊs¸Ûši{À†»qƒ’ €-`ÁÈŽ5ltOÐè”°ÐÇâMË},ÚѳÐ'Ç¡zöÉô\ˆ¦e„>íhúXîFŸ|  a£ô¦ÑGp£š>Èì³ÐÇÀGècp!BŸ í},ÎúdÜ> *ôÉpñBŸ|   k¡¶L>’j4*%iô1ø·…>†íÌ>8ÔÐ'Ûr$¿FošN<¨ïÙ¯ï!Œcw‡qŸ½õîûmö]ºùçàLendstream endobj 16 0 obj << /Type /Font /Subtype /TrueType /BaseFont /BAAAAA+Garamond /FirstChar 0 /LastChar 48 /Widths [ 750 354 510 416 229 489 500 416 250 635 510 291 333 614 229 406 510 364 458 510 447 510 322 218 468 416 666 770 468 177 218 468 468 468 468 562 489 614 885 781 229 312 666 447 447 468 468 468 833 ] /FontDescriptor 14 0 R /ToUnicode 15 0 R >> endobj 17 0 obj << /F1 16 0 R /F2 11 0 R >> endobj 18 0 obj << /Im3 3 0 R >> endobj 19 0 obj << /Font 17 0 R /XObject 18 0 R /ProcSet [ /PDF /ImageC /ImageI ] >> endobj 20 0 obj << /Type /Page /Parent 6 0 R /Resources 19 0 R /MediaBox [ 0 0 612 792 ] /Contents 1 0 R >> endobj 21 0 obj << /Type /Page /Parent 6 0 R /Resources 19 0 R /MediaBox [ 0 0 612 792 ] /Contents 4 0 R >> endobj 6 0 obj << /Type /Pages /Resources 19 0 R /MediaBox [ 0 0 595 842 ] /Kids [ 20 0 R 21 0 R ] /Count 2 >> endobj 22 0 obj << /Type /Catalog /Pages 6 0 R >> endobj 23 0 obj << /Author /Creator /Producer /CreationDate (D:20051010160658-04'00') >> endobj xref 0 24 0000000000 65535 f 0000000017 00000 n 0000003121 00000 n 0000003148 00000 n 0000010699 00000 n 0000011140 00000 n 0000043065 00000 n 0000011166 00000 n 0000019703 00000 n 0000019728 00000 n 0000019969 00000 n 0000020321 00000 n 0000020559 00000 n 0000041385 00000 n 0000041412 00000 n 0000041650 00000 n 0000042178 00000 n 0000042603 00000 n 0000042660 00000 n 0000042702 00000 n 0000042805 00000 n 0000042935 00000 n 0000043222 00000 n 0000043282 00000 n trailer << /Size 24 /Root 22 0 R /Info 23 0 R >> startxref 43541 %%EOF apache-jmeter-2.8/xdocs/usermanual/intro.xml0000644000175000017500000000533612032647214020601 0ustar ebourgebourg User's Manual: Introduction

Apache JMeter is a 100% pure Java desktop application designed to load test client/server software (such as a web application). It may be used to test performance both on static and dynamic resources such as static files, Java Servlets, CGI scripts, Java objects, databases, FTP servers, and more. JMeter can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types.

Additionally, JMeter can help you regression test your application by letting you create test scripts with assertions to validate that your application is returning the results you expect. For maximum flexibility, JMeter lets you create these assertions using regular expressions.

But please note that JMeter is not a browser.

Stefano Mazzocchi of the Apache Software Foundation was the original developer of JMeter. He wrote it primarily to test the performance of Apache JServ (a project that has since been replaced by the Apache Tomcat project). We redesigned JMeter to enhance the GUI and to add functional-testing capabilities.

We hope to see JMeter's capabilities rapidly expand as developers take advantage of its pluggable architecture. The primary goal of further development is to make JMeter the most useful regression testing tool as possible, without compromising JMeter's load-testing capabilities.

apache-jmeter-2.8/xdocs/usermanual/component_reference.xml0000644000175000017500000122103112032647214023457 0ustar ebourgebourg ]> User's Manual: Component Reference

Several test elements use JMeter properties to control their behaviour. These properties are normally resolved when the class is loaded. This generally occurs before the test plan starts, so it's not possible to change the settings by using the __setProperty() function.

Samplers perform the actual work of JMeter. Each sampler (except Test Action) generates one or more sample results. The sample results have various attributes (success/fail, elapsed time, data size etc) and can be viewed in the various listeners.

This controller lets you send an FTP "retrieve file" or "upload file" request to an FTP server. If you are going to send multiple requests to the same FTP server, consider using a Configuration Element so you do not have to enter the same information for each FTP Request Generative Controller. When downloading a file, it can be stored on disk (Local File) or in the Response Data, or both.

Latency is set to the time it takes to login (versions of JMeter after 2.3.1).

Descriptive name for this sampler that is shown in the tree. Domain name or IP address of the FTP server. Port to use. If this is >0, then this specific port is used, otherwise JMeter uses the default FTP port. File to retrieve or name of destination file to upload. File to upload, or destination for downloads (defaults to remote file name). Provides the contents for the upload, overrides the Local File property. Whether to retrieve or upload a file. Check this to use Binary mode (default Ascii) Whether to store contents of retrieved file in response data. If the mode is Ascii, then the contents will be visible in the Tree View Listener. FTP account username. FTP account password. N.B. This will be visible in the test plan. Assertions Building an FTP Test Plan

This sampler lets you send an HTTP/HTTPS request to a web server. It also lets you control whether or not JMeter parses HTML files for images and other embedded resources and sends HTTP requests to retrieve them. The following types of embedded resource are retrieved:

  • images
  • applets
  • stylesheets
  • external scripts
  • frames, iframes
  • background images (body, table, TD, TR)
  • background sound

The default parser is htmlparser. This can be changed by using the property "htmlparser.classname" - see jmeter.properties for details.

If you are going to send multiple requests to the same web server, consider using an Configuration Element so you do not have to enter the same information for each HTTP Request.

Or, instead of manually adding HTTP Requests, you may want to use JMeter's to create them. This can save you time if you have a lot of HTTP requests or requests with many parameters.

There are two different screens for defining the samplers:

  • AJP/1.3 Sampler - uses the Tomcat mod_jk protocol (allows testing of Tomcat in AJP mode without needing Apache httpd) The AJP Sampler does not support multiple file upload; only the first file will be used.
  • HTTP Request - this has an implementation drop-down box, which selects the HTTP protocol implementation to be used:
    • Java - uses the HTTP implementation provided by the JVM. This has some limitations in comparison with the HttpClient implementations - see below.
    • HTTPClient3.1 - uses Apache Commons HttpClient 3.1. This is no longer being developed, and support for this may be dropped in a future JMeter release.
    • HTTPClient4 - uses Apache HttpComponents HttpClient 4.x.

The Java HTTP implementation has some limitations:

  • There is no control over how connections are re-used. When a connection is released by JMeter, it may or may not be re-used by the same thread.
  • The API is best suited to single-threaded usage - various settings (e.g. proxy) are defined via system properties, and therefore apply to all connections.
  • There is a bug in the handling of HTTPS via a Proxy (the CONNECT is not handled correctly). See Java bugs 6226610 and 6208335.
  • It does not support virtual hosts.

Note: the FILE protocol is intended for testing puposes only. It is handled by the same code regardless of which HTTP Sampler is used.

If the request requires server or proxy login authorization (i.e. where a browser would create a pop-up dialog box), you will also have to add an Configuration Element. For normal logins (i.e. where the user enters login information in a form), you will need to work out what the form submit button does, and create an HTTP request with the appropriate method (usually POST) and the appropriate parameters from the form definition. If the page uses HTTP, you can use the JMeter Proxy to capture the login sequence.

In versions of JMeter up to 2.2, only a single SSL context was used for all threads and samplers. This did not generate the proper load for multiple users. A separate SSL context is now used for each thread. To revert to the original behaviour, set the JMeter property:

https.sessioncontext.shared=true
By default, the SSL context is retained for the duration of the test. In versions of JMeter from 2.5.1, the SSL session can be optionally reset for each test iteration. To enable this, set the JMeter property:
https.use.cached.ssl.context=false
Note: this does not apply to the Java HTTP implementation.

JMeter defaults to the SSL protocol level TLS. If the server needs a different level, e.g. SSLv3, change the JMeter property, for example:

https.default.protocol=SSLv3

JMeter also allows one to enable additional protocols, by changing the property https.socket.protocols.

If the request uses cookies, then you will also need an . You can add either of these elements to the Thread Group or the HTTP Request. If you have more than one HTTP Request that needs authorizations or cookies, then add the elements to the Thread Group. That way, all HTTP Request controllers will share the same Authorization Manager and Cookie Manager elements.

If the request uses a technique called "URL Rewriting" to maintain sessions, then see section 6.1 Handling User Sessions With URL Rewriting for additional configuration steps.

Descriptive name for this sampler that is shown in the tree. Domain name or IP address of the web server. e.g. www.example.com. [Do not include the http:// prefix.] Note: in JMeter 2.5 (and later) if the "Host" header is defined in a Header Manager, then this will be used as the virtual host name. Port the web server is listening to. Default: 80 Connection Timeout. Number of milliseconds to wait for a connection to open. Response Timeout. Number of milliseconds to wait for a response. Hostname or IP address of a proxy server to perform request. [Do not include the http:// prefix.] Port the proxy server is listening to. (Optional) username for proxy server. (Optional) password for proxy server. (N.B. this is stored unencrypted in the test plan) Java, HttpClient3.1, HttpClient4. If not specified (and not defined by HTTP Request Defaults), the default depends on the value of the JMeter property jmeter.httpsampler, failing that, the Java implementation is used. HTTP, HTTPS or FILE. Default: HTTP GET, POST, HEAD, TRACE, OPTIONS, PUT, DELETE, PATCH (not supported for JAVA implementation) Content encoding to be used (for POST, PUT, PATCH and FILE). This the the character encoding to be used, and is not related to the Content-Encoding HTTP header. Sets the underlying http protocol handler to automatically follow redirects, so they are not seen by JMeter, and thus will not appear as samples. Should only be used for GET and HEAD requests. The HttpClient sampler will reject attempts to use it for POST or PUT. Warning: see below for information on cookie and header handling. This only has any effect if "Redirect Automatically" is not enabled. If set, the JMeter sampler will check if the response is a redirect and follow it if so. The initial redirect and further responses will appear as additional samples. The URL and data fields of the parent sample will be taken from the final (non-redirected) sample, but the parent byte count and elapsed time include all samples. The latency is taken from the initial response (versions of JMeter after 2.3.4 - previously it was zero). Note that the HttpClient sampler may log the following message:
"Redirect requested but followRedirects is disabled"
This can be ignored.
In versions after 2.3.4, JMeter will collapse paths of the form '/../segment' in both absolute and relative redirect URLs. For example http://host/one/../two => http://host/two. If necessary, this behaviour can be suppressed by setting the JMeter property httpsampler.redirect.removeslashdotdot=false
JMeter sets the Connection: keep-alive header. This does not work properly with the default HTTP implementation, as connection re-use is not under user-control. It does work with the Apache HttpComponents HttpClient implementations. Use a multipart/form-data or application/x-www-form-urlencoded post request When using multipart/form-data, this suppresses the Content-Type and Content-Transfer-Encoding headers; only the Content-Disposition header is sent. The path to resource (for example, /servlets/myServlet). If the resource requires query string parameters, add them below in the "Send Parameters With the Request" section. As a special case, if the path starts with "http://" or "https://" then this is used as the full URL. In this case, the server, port and protocol are ignored; parameters are also ignored for GET and DELETE methods. The query string will be generated from the list of parameters you provide. Each parameter has a name and value, the options to encode the parameter, and an option to include or exclude an equals sign (some applications don't expect an equals when the value is the empty string). The query string will be generated in the correct fashion, depending on the choice of "Method" you made (ie if you chose GET or DELETE, the query string will be appended to the URL, if POST or PUT, then it will be sent separately). Also, if you are sending a file using a multipart form, the query string will be created using the multipart form specifications. See below for some further information on parameter handling.

Additionally, you can specify whether each parameter should be URL encoded. If you are not sure what this means, it is probably best to select it. If your values contain characters such as the following then encoding is usually required.:

  • ASCII Control Chars
  • Non-ASCII characters
  • Reserved characters:URLs use some characters for special use in defining their syntax. When these characters are not used in their special role inside a URL, they need to be encoded, example : '$', '&', '+', ',' , '/', ':', ';', '=', '?', '@'
  • Unsafe characters: Some characters present the possibility of being misunderstood within URLs for various reasons. These characters should also always be encoded, example : ' ', '<', '>', '#', '%', ...

Name of the file to send. If left blank, JMeter does not send a file, if filled in, JMeter automatically sends the request as a multipart form request.

If it is a POST or PUT or PATCH request and there is a single file whose 'Parameter name' attribute (below) is omitted, then the file is sent as the entire body of the request, i.e. no wrappers are added. This allows arbitrary bodies to be sent. This functionality is present for POST requests after version 2.2, and also for PUT requests after version 2.3. See below for some further information on parameter handling.

Value of the "name" web request parameter. MIME type (for example, text/plain). If it is a POST or PUT or PATCH request and either the 'name' atribute (below) are omitted or the request body is constructed from parameter values only, then the value of this field is used as the value of the content-type request header. Tell JMeter to parse the HTML file and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSSs, etc. referenced in the file. See below for more details. For use with the listener. If this is selected, then the response is not stored in the sample result. Instead, the 32 character MD5 hash of the data is calculated and stored instead. This is intended for testing large amounts of data. If present, this must be a regular expression that is used to match against any embedded URLs found. So if you only want to download embedded resources from http://example.com/, use the expression: http://example\.com/.* Use a pool of concurrent connections to get embedded resources. Pool size for concurrent connections used to get embedded resources. [Only for HTTP Request HTTPClient] Override the default local IP address for this sample. The JMeter host must have multiple IP addresses (i.e. IP aliases or network interfaces). If the property httpclient.localaddress is defined, that is used for all HttpClient requests.

N.B. when using Automatic Redirection, cookies are only sent for the initial URL. This can cause unexpected behaviour for web-sites that redirect to a local server. E.g. if www.example.com redirects to www.example.co.uk. In this case the server will probably return cookies for both URLs, but JMeter will only see the cookies for the last host, i.e. www.example.co.uk. If the next request in the test plan uses www.example.com, rather than www.example.co.uk, it will not get the correct cookies. Likewise, Headers are sent for the initial request, and won't be sent for the redirect. This is generally only a problem for manually created test plans, as a test plan created using a recorder would continue from the redirected URL.

Parameter Handling:

For the POST and PUT method, if there is no file to send, and the name(s) of the parameter(s) are omitted, then the body is created by concatenating all the value(s) of the parameters. Note that the values are concatenated without adding any end-of-line characters. These can be added by using the __char() function in the value fields. This allows arbitrary bodies to be sent. The values are encoded if the encoding flag is set (versions of JMeter after 2.3). See also the MIME Type above how you can control the content-type request header that is sent.

For other methods, if the name of the parameter is missing, then the parameter is ignored. This allows the use of optional parameters defined by variables. (versions of JMeter after 2.3)


Since JMeter 2.6, you have the option to switch to Post Body when a request has only unnamed parameters (or no parameters at all). This option is useful in the following cases (amongst others):

  • GWT RPC HTTP Request
  • JSON REST HTTP Request
  • XML REST HTTP Request
  • SOAP HTTP Request
Note that once you leave the Tree node, you cannot switch back to the parameter tab unless you clear the Post Body tab of data.

In Post Body mode, each line will be sent with CRLF appended, apart from the last line. To send a CRLF after the last line of data, just ensure that there is an empty line following it. (This cannot be seen, except by noting whether the cursor can be placed on the subsequent line.)

Figure 1 - HTTP Request with one unnamed parameter
Figure 2 - Confirm dialog to switch
Figure 3 - HTTP Request using RAW Post body

Method Handling:

The POST, PUT and PATCH request methods work similarly, except that the PUT and PATCH methods do not support multipart requests or file upload. The PUT and PATCH method body must be provided as one of the following:

  • define the body as a file with empty Parameter name field; in which case the MIME Type is used as the Content-Type
  • define the body as parameter value(s) with no name
  • use the Post Body tab
If you define any parameters with a name in either the sampler or Http defaults then nothing is sent. PUT and PATCH require a Content-Type. If not using a file, attach a Header Manager to the sampler and define the Content-Type there. The GET and DELETE request methods work similarly to each other.

Upto and including JMeter 2.1.1, only responses with the content-type "text/html" were scanned for embedded resources. Other content-types were assumed to be something other than HTML. JMeter 2.1.2 introduces the a new property HTTPResponse.parsers, which is a list of parser ids, e.g. htmlParser and wmlParser. For each id found, JMeter checks two further properties:

  • id.types - a list of content types
  • id.className - the parser to be used to extract the embedded resources

See jmeter.properties file for the details of the settings. If the HTTPResponse.parser property is not set, JMeter reverts to the previous behaviour, i.e. only text/html responses will be scanned

Emulating slow connections (HttpClient only):

The HttpClient version of the sampler supports emulation of slow connections; see the following entries in jmeter.properties:
# Define characters per second > 0 to emulate slow connections
#httpclient.socket.http.cps=0
#httpclient.socket.https.cps=0

Response size calculation

Optional properties to allow change the method to get response size:

  • Gets the real network size in bytes for the body response
    sampleresult.getbytes.body_real_size=true
  • Add HTTP headers to full response size
    sampleresult.getbytes.headers_size=true
The Java and HttpClient3 inplementations do not include transport overhead such as chunk headers in the response body size.

The HttpClient4 implementation does include the overhead in the response body size, so the value may be greater than the number of bytes in the response content.
Versions of JMeter before 2.5 returns only data response size (uncompressed if request uses gzip/defate mode).

To return to settings before version 2.5, set the two properties to false.

Retry handling

In version 2.5 of JMeter, the HttpClient4 and Commons HttpClient 3.1 samplers used the default retry count, which was 3. In later versions, the retry count has been set to 1, which is what the Java implementation appears to do. The retry count can be overridden by setting the relevant JMeter property, for example:

httpclient4.retrycount=3
httpclient3.retrycount=3

Assertion Building a Web Test Plan Building an Advanced Web Test Plan HTTP Requests and Session ID's: URL Rewriting

This sampler lets you send an JDBC Request (an SQL query) to a database.

Before using this you need to set up a Configuration element

If the Variable Names list is provided, then for each row returned by a Select statement, the variables are set up with the value of the corresponding column (if a variable name is provided), and the count of rows is also set up. For example, if the Select statement returns 2 rows of 3 columns, and the variable list is A,,C, then the following variables will be set up:

A_#=2 (number of rows)
A_1=column 1, row 1
A_2=column 1, row 2
C_#=2 (number of rows)
C_1=column 3, row 1
C_2=column 3, row 2
If the Select statement returns zero rows, then the A_# and C_# variables would be set to 0, and no other variables would be set.

Old variables are cleared if necessary - e.g. if the first select retrieves 6 rows and a second select returns only 3 rows, the additional variables for rows 4, 5 and 6 will be removed.

Note: The latency time is set from the time it took to acquire a connection.

Descriptive name for this sampler that is shown in the tree. Name of the JMeter variable that the connection pool is bound to. This must agree with the 'Variable Name' field of a JDBC Connection Configuration. Set this according to the statement type:
  • Select Statement
  • Update Statement - use this for Inserts as well
  • Callable Statement
  • Prepared Select Statement
  • Prepared Update Statement - use this for Inserts as well
  • Commit
  • Rollback
  • Autocommit(false)
  • Autocommit(true)
  • Edit - this should be a variable reference that evaluates to one of the above
SQL query. Do not enter a trailing semi-colon. There is generally no need to use { and } to enclose Callable statements; however they mey be used if the database uses a non-standard syntax. [The JDBC driver automatically converts the statement if necessary when it is enclosed in {}]. For example:
  • select * from t_customers where id=23
  • CALL SYSCS_UTIL.SYSCS_EXPORT_TABLE (null,?, ?, null, null, null)
    • Parameter values: tablename,filename
    • Parameter types: VARCHAR,VARCHAR
  • The second example assumes you are using Apache Derby.
Comma-separated list of parameter values. Use ]NULL[ to indicate a NULL parameter. (If required, the null string can be changed by defining the property "jdbcsampler.nullmarker".)

The list must be enclosed in double-quotes if any of the values contain a comma or double-quote, and any embedded double-quotes must be doubled-up, for example:
"Dbl-Quote: "" and Comma: ,"
There must be as many values as there are placeholders in the statement.
Comma-separated list of SQL parameter types (e.g. INTEGER, DATE, VARCHAR, DOUBLE). These are defined as fields in the class java.sql.Types, see for example: Javadoc for java.sql.Types. [Note: JMeter will use whatever types are defined by the runtime JVM, so if you are running on a different JVM, be sure to check the appropriate document] If the callable statement has INOUT or OUT parameters, then these must be indicated by prefixing the appropriate parameter types, e.g. instead of "INTEGER", use "INOUT INTEGER". If not specified, "IN" is assumed, i.e. "DATE" is the same as "IN DATE".

If the type is not one of the fields found in java.sql.Types, versions of JMeter after 2.3.2 also accept the corresponding integer number, e.g. since INTEGER == 4, you can use "INOUT 4".

There must be as many types as there are placeholders in the statement.
Comma-separated list of variable names to hold values returned by Select statements, Prepared Select Statements or CallableStatement. Note that when used with CallableStatement, list of variables must be in the same sequence as the OUT parameters returned by the call. If there are less variable names than OUT parameters only as many results shall be stored in the thread-context variables as variable names were supplied. If more variable names than OUT parameters exist, the additional variables will be ignored If specified, this will create an Object variable containing a list of row maps. Each map contains the column name as the key and the column data as the value. Usage:

columnValue = vars.getObject("resultObject").get(0).get("Column Name");
Building a Database Test Plan Versions of JMeter after 2.3.2 use UTF-8 as the character encoding. Previously the platform default was used. Ensure Variable Name is unique accross Test Plan.

This sampler lets you control a java class that implements the org.apache.jmeter.protocol.java.sampler.JavaSamplerClient interface. By writing your own implementation of this interface, you can use JMeter to harness multiple threads, input parameter control, and data collection.

The pull-down menu provides the list of all such implementations found by JMeter in its classpath. The parameters can then be specified in the table below - as defined by your implementation. Two simple examples (JavaTest and SleepTest) are provided.

The JavaTest example sampler can be useful for checking test plans, because it allows one to set values in almost all the fields. These can then be used by Assertions, etc. The fields allow variables to be used, so the values of these can readily be seen.

Since JMeter 2.8, if the method teardownTest is not overriden by a subclass of AbstractJavaSamplerClient, its teardownTest method will not be called. This reduces JMeter memory requirements. This will not have any impact on existing Test plans. The Add/Delete buttons don't serve any purpose at present. Descriptive name for this sampler that is shown in the tree. The specific implementation of the JavaSamplerClient interface to be sampled. A list of arguments that will be passed to the sampled class. All arguments are sent as Strings. See below for specific settings.

The following parameters apply to the SleepTest and JavaTest implementations:

How long to sleep for (ms) How much "randomness" to add:

The sleep time is calculated as follows:

totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)

The following parameters apply additionaly to the JavaTest implementation:

The label to use. If provided, overrides Name If provided, sets the SampleResult ResponseCode. If provided, sets the SampleResult ResponseMessage. If provided, sets the SampleResult Status. If this equals "OK" (ignoring case) then the status is set to success, otherwise the sample is marked as failed. If provided, sets the SampleResult SamplerData. If provided, sets the SampleResult ResultData.

This sampler lets you send a SOAP request to a webservice. It can also be used to send XML-RPC over HTTP. It creates an HTTP POST request, with the specified XML as the POST content. To change the "Content-type" from the default of "text/xml", use a HeaderManager. Note that the sampler will use all the headers from the HeaderManager. If a SOAP action is specified, that will override any SOAPaction in the HeaderManager. The primary difference between the soap sampler and webservice sampler, is the soap sampler uses raw post and does not require conformance to SOAP 1.1.

For versions of JMeter later than 2.2, the sampler no longer uses chunked encoding by default.
For screen input, it now always uses the size of the data.
File input uses the file length as determined by Java.
On some OSes this may not work for all files, in which case add a child Header Manager with Content-Length set to the actual length of the file.
Or set Content-Length to -1 to force chunked encoding.
Descriptive name for this sampler that is shown in the tree. The URL to direct the SOAP request to. Send a SOAP action header? (overrides the Header Manager) If set, sends Connection: keep-alive, else sends Connection: close The Soap XML message, or XML-RPC instructions. Not used if the filename is provided. If specified, then the contents of the file are sent, and the Data field is ignored

This sampler has been tested with IIS Webservice running .NET 1.0 and .NET 1.1. It has been tested with SUN JWSDP, IBM webservices, Axis and gSoap toolkit for C/C++. The sampler uses Apache SOAP driver to serialize the message and set the header with the correct SOAPAction. Right now the sampler doesn't support automatic WSDL handling, since Apache SOAP currently does not provide support for it. Both IBM and SUN provide WSDL drivers. There are 3 options for the post data: text area, external file, or directory. If you want the sampler to randomly select a message, use the directory. Otherwise, use the text area or a file. The if either the file or path are set, it will not use the message in the text area. If you need to test a soap service that uses different encoding, use the file or path. If you paste the message in to text area, it will not retain the encoding and will result in errors. Save your message to a file with the proper encoding, and the sampler will read it as java.io.FileInputStream.

An important note on the sampler is it will automatically use the proxy host and port passed to JMeter from command line, if those fields in the sampler are left blank. If a sampler has values in the proxy host and port text field, it will use the ones provided by the user. This behavior may not be what users expect.

By default, the webservice sampler sets SOAPHTTPConnection.setMaintainSession (true). If you need to maintain the session, add a blank Header Manager. The sampler uses the Header Manager to store the SOAPHTTPConnection object, since the version of apache soap does not provide a easy way to get and set the cookies.

Note: If you are using CSVDataSet, do not check "Memory Cache". If memory cache is checked, it will not iterate to the next value. That means all the requests will use the first value.

Make sure you use &lt;soap:Envelope rather than &lt;Envelope. For example:

&lt;?xml version="1.0" encoding="utf-8"?>
&lt;soap:Envelope 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
&lt;soap:Body>
&lt;foo xmlns="http://clients-xlmns"/>
&lt;/soap:Body>
&lt;/soap:Envelope>
The SOAP library that is used does not support SOAP 1.2, only SOAP 1.1. Also the library does not provide access to the HTTP response code (e.g. 200) or message (e.g. OK). To get round this, versions of JMeter after 2.3.2 check the returned message length. If this is zero, then the request is marked as failed.
Descriptive name for this sampler that is shown in the tree. The WSDL URL with the service description. Versions of JMeter after 2.3.1 support the file: protocol for local WSDL files. Will be populated from the WSDL when the Load WSDL button is pressed. Select one of the methods and press the Configure button to populate the Protocol, Server, Port, Path and SOAPAction fields. HTTP or HTTPS are acceptable protocol. The hostname or IP address. Port Number. Connection timeout. Path for the webservice. The SOAPAction defined in the webservice description or WSDL. The Soap XML message File containing soap message Folder containing soap files. Files are choose randomly during test. When using external files, setting this causes the file to be processed once and caches the result. This may use a lot of memory if there are many different large files. Read the SOAP reponse (consumes performance). Permit to have assertions or post-processors Check box if http proxy should be used Proxy hostname Proxy host port Webservice Soap Sampler assumes that empty response means failure.
This Sampler lets you send a different Ldap request(Add, Modify, Delete and Search) to an LDAP server.

If you are going to send multiple requests to the same LDAP server, consider using an Configuration Element so you do not have to enter the same information for each LDAP Request.

The same way the also using for Login and password.

There are two ways to create test cases for testing an LDAP Server.

  1. Inbuilt Test cases.
  2. User defined Test cases.

There are four test scenarios of testing LDAP. The tests are given below:

  1. Add Test
    1. Inbuilt test :

      This will add a pre-defined entry in the LDAP Server and calculate the execution time. After execution of the test, the created entry will be deleted from the LDAP Server.

    2. User defined test :

      This will add the entry in the LDAP Server. User has to enter all the attributes in the table.The entries are collected from the table to add. The execution time is calculated. The created entry will not be deleted after the test.

  2. Modify Test
    1. Inbuilt test :

      This will create a pre-defined entry first, then will modify the created entry in the LDAP Server.And calculate the execution time. After execution of the test, the created entry will be deleted from the LDAP Server.

    2. User defined test

      This will modify the entry in the LDAP Server. User has to enter all the attributes in the table. The entries are collected from the table to modify. The execution time is calculated. The entry will not be deleted from the LDAP Server.

  3. Search Test
    1. Inbuilt test :

      This will create the entry first, then will search if the attributes are available. It calculates the execution time of the search query. At the end of the execution,created entry will be deleted from the LDAP Server.

    2. User defined test

      This will search the user defined entry(Search filter) in the Search base (again, defined by the user). The entries should be available in the LDAP Server. The execution time is calculated.

  4. Delete Test
    1. Inbuilt test :

      This will create a pre-defined entry first, then it will be deleted from the LDAP Server. The execution time is calculated.

    2. User defined test

      This will delete the user-defined entry in the LDAP Server. The entries should be available in the LDAP Server. The execution time is calculated.

Descriptive name for this sampler that is shown in the tree. Domain name or IP address of the LDAP server. JMeter assumes the LDAP server is listening on the default port(389). default port(389). DN for the server to communicate LDAP server username. LDAP server password. (N.B. this is stored unencrypted in the test plan) the name of the context to create or Modify; may not be empty Example: do you want to add cn=apache,ou=test you have to add in table name=cn, value=apache the name of the context to Delete; may not be empty the name of the context or object to search the filter expression to use for the search; may not be null this name, value pair to added in the given context object this name, value pair to add or modify in the given context object Building an Ldap Test Plan
This Sampler can send all 8 different LDAP request to an LDAP server. It is an extended version of the LDAP sampler, therefore it is harder to configure, but can be made much closer resembling a real LDAP session.

If you are going to send multiple requests to the same LDAP server, consider using an Configuration Element so you do not have to enter the same information for each LDAP Request.

There are nine test operations defined. These operations are given below:

  1. Thread bind
  2. Any LDAP request is part of an LDAP session, so the first thing that should be done is starting a session to the LDAP server. For starting this session a thread bind is used, which is equal to the LDAP "bind" operation. The user is requested to give a username (Distinguished name) and password, which will be used to initiate a session. When no password, or the wrong password is specified, an anonymous session is started. Take care, omitting the password will not fail this test, a wrong password will. (N.B. this is stored unencrypted in the test plan)

    Descriptive name for this sampler that is shown in the tree. The name (or IP-address) of the LDAP server. The port number that the LDAP server is listening to. If this is omitted JMeter assumes the LDAP server is listening on the default port(389). The distinguished name of the base object that will be used for any subsequent operation. It can be used as a starting point for all operations. You cannot start any operation on a higher level than this DN! Full distinguished name of the user as which you want to bind. Password for the above user. If omitted it will result in an anonymous bind. If is is incorrect, the sampler will return an error and revert to an anonymous bind. (N.B. this is stored unencrypted in the test plan)
  3. Thread unbind
  4. This is simply the operation to end a session. It is equal to the LDAP "unbind" operation.

    Descriptive name for this sampler that is shown in the tree.
  5. Single bind/unbind
  6. This is a combination of the LDAP "bind" and "unbind" operations. It can be used for an authentication request/password check for any user. It will open an new session, just to check the validity of the user/password combination, and end the session again.

    Descriptive name for this sampler that is shown in the tree. Full distinguished name of the user as which you want to bind. Password for the above user. If omitted it will result in an anonymous bind. If is is incorrect, the sampler will return an error. (N.B. this is stored unencrypted in the test plan)
  7. Rename entry
  8. This is the LDAP "moddn" operation. It can be used to rename an entry, but also for moving an entry or a complete subtree to a different place in the LDAP tree.

    Descriptive name for this sampler that is shown in the tree. The current distinguished name of the object you want to rename or move, relative to the given DN in the thread bind operation. The new distinguished name of the object you want to rename or move, relative to the given DN in the thread bind operation.
  9. Add test
  10. This is the ldap "add" operation. It can be used to add any kind of object to the LDAP server.

    Descriptive name for this sampler that is shown in the tree. Distinguished name of the object you want to add, relative to the given DN in the thread bind operation. A list of attributes and their values you want to use for the object. If you need to add a multiple value attribute, you need to add the same attribute with their respective values several times to the list.
  11. Delete test
  12. This is the LDAP "delete" operation, it can be used to delete an object from the LDAP tree

    Descriptive name for this sampler that is shown in the tree. Distinguished name of the object you want to delete, relative to the given DN in the thread bind operation.
  13. Search test
  14. This is the LDAP "search" operation, and will be used for defining searches.

    Descriptive name for this sampler that is shown in the tree. Distinguished name of the subtree you want your search to look in, relative to the given DN in the thread bind operation. searchfilter, must be specified in LDAP syntax. Use 0 for baseobject-, 1 for onelevel- and 2 for a subtree search. (Default=0) Specify the maximum number of results you want back from the server. (default=0, which means no limit.) When the sampler hits the maximum number of results, it will fail with errorcode 4 Specify the maximum amount of (cpu)time (in miliseconds) that the server can spend on your search. Take care, this does not say anything about the responsetime. (default is 0, which means no limit) Specify the attributes you want to have returned, seperated by a semicolon. An empty field will return all attributes Whether the object will be returned (true) or not (false). Default=false If true, it will dereference aliases, if false, it will not follow them (default=false)
  15. Modification test
  16. This is the LDAP "modify" operation. It can be used to modify an object. It can be used to add, delete or replace values of an attribute.

    Descriptive name for this sampler that is shown in the tree. Distinguished name of the object you want to modify, relative to the given DN in the thread bind operation The attribute-value-opCode triples. The opCode can be any valid LDAP operationCode (add, delete/remove or replace). If you don't specify a value with a delete operation, all values of the given attribute will be deleted. If you do specify a value in a delete operation, only the given value will be deleted. If this value is non-existent, the sampler will fail the test.
  17. Compare
  18. This is the LDAP "compare" operation. It can be used to compare the value of a given attribute with some already known value. In reality this is mostly used to check whether a given person is a member of some group. In such a case you can compare the DN of the user as a given value, with the values in the attribute "member" of an object of the type groupOfNames. If the compare operation fails, this test fails with errorcode 49.

    Descriptive name for this sampler that is shown in the tree. The current distinguished name of the object of which you want to compare an attribute, relative to the given DN in the thread bind operation. In the form "attribute=value"
Building an LDAP Test Plan

(Alpha Code)

AccessLogSampler was designed to read access logs and generate http requests. For those not familiar with the access log, it is the log the webserver maintains of every request it accepted. This means every image, css file, javascript file, html file.... The current implementation is complete, but some features have not been enabled. There is a filter for the access log parser, but I haven't figured out how to link to the pre-processor. Once I do, changes to the sampler will be made to enable that functionality.

Tomcat uses the common format for access logs. This means any webserver that uses the common log format can use the AccessLogSampler. Server that use common log format include: Tomcat, Resin, Weblogic, and SunOne. Common log format looks like this:

127.0.0.1 - - [21/Oct/2003:05:37:21 -0500] "GET /index.jsp?%2Findex.jsp= HTTP/1.1" 200 8343

The current implementation of the parser only looks at the text within the quotes that contains one of the HTTP protocol methods (GET, PUT, POST, DELETE...). Everything else is stripped out and ignored. For example, the response code is completely ignored by the parser.

For the future, it might be nice to filter out entries that do not have a response code of 200. Extending the sampler should be fairly simple. There are two interfaces you have to implement:

  • org.apache.jmeter.protocol.http.util.accesslog.LogParser
  • org.apache.jmeter.protocol.http.util.accesslog.Generator

The current implementation of AccessLogSampler uses the generator to create a new HTTPSampler. The servername, port and get images are set by AccessLogSampler. Next, the parser is called with integer 1, telling it to parse one entry. After that, HTTPSampler.sample() is called to make the request.

            samp = (HTTPSampler) GENERATOR.generateRequest();
            samp.setDomain(this.getDomain());
            samp.setPort(this.getPort());
            samp.setImageParser(this.isImageParser());
            PARSER.parse(1);
            res = samp.sample();
            res.setSampleLabel(samp.toString());
The required methods in LogParser are:
  • setGenerator(Generator)
  • parse(int)
Classes implementing Generator interface should provide concrete implementation for all the methods. For an example of how to implement either interface, refer to StandardGenerator and TCLogParser.

Descriptive name for this sampler that is shown in the tree. Domain name or IP address of the web server. Port the web server is listening to. The log parser class is responsible for parsing the logs. The filter class is used to filter out certain lines. The location of the access log file.

The TCLogParser processes the access log independently for each thread. The SharedTCLogParser and OrderPreservingLogParser share access to the file, i.e. each thread gets the next entry in the log.

The SessionFilter is intended to handle Cookies across threads. It does not filter out any entries, but modifies the cookie manager so that the cookies for a given IP are processed by a single thread at a time. If two threads try to process samples from the same client IP address, then one will be forced to wait until the other has completed.

The LogFilter is intended to allow access log entries to be filtered by filename and regex, as well as allowing for the replacement of file extensions. However, it is not currently possible to configure this via the GUI, so it cannot really be used.

This sampler allows you to write a sampler using the BeanShell scripting language.

For full details on using BeanShell, please see the BeanShell website.

The test element supports the ThreadListener and TestListener interface methods. These must be defined in the initialisation file. See the file BeanShellListeners.bshrc for example definitions.

From JMeter version 2.5.1, the BeanShell sampler also supports the Interruptible interface. The interrupt() method can be defined in the script or the init file.

Descriptive name for this sampler that is shown in the tree. The name is stored in the script variable Label If this option is selected, then the interpreter will be recreated for each sample. This may be necessary for some long running scripts. For further information, see Best Practices - BeanShell scripting. Parameters to pass to the BeanShell script. This is intended for use with script files; for scripts defined in the GUI, you can use whatever variable and function references you need within the script itself. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • bsh.args - String array containing parameters, split on white-space
A file containing the BeanShell script to run. The file name is stored in the script variable FileName The BeanShell script to run. The return value (if not null) is stored as the sampler result.

N.B. Each Sampler instance has its own BeanShell interpeter, and Samplers are only called from a single thread

If the property "beanshell.sampler.init" is defined, it is passed to the Interpreter as the name of a sourced file. This can be used to define common methods and variables. There is a sample init file in the bin directory: BeanShellSampler.bshrc.

If a script file is supplied, that will be used, otherwise the script will be used.

Before invoking the script, some variables are set up in the BeanShell interpreter:

The contents of the Parameters field is put into the variable "Parameters". The string is also split into separate tokens using a single space as the separator, and the resulting list is stored in the String array bsh.args.

The full list of BeanShell variables that is set up is as follows:

  • log - the Logger
  • Label - the Sampler label
  • FileName - the file name, if any
  • Parameters - text from the Parameters field
  • bsh.args - the parameters, split as described above
  • SampleResult - pointer to the current SampleResult
  • ResponseCode = 200
  • ResponseMessage = "OK"
  • IsSuccess = true
  • ctx - JMeterContext
  • vars - JMeterVariables - e.g. vars.get("VAR1"); vars.put("VAR2","value"); vars.remove("VAR3"); vars.putObject("OBJ1",new Object());
  • props - JMeterProperties (class java.util.Properties)- e.g. props.get("START.HMS"); props.put("PROP1","1234");

When the script completes, control is returned to the Sampler, and it copies the contents of the following script variables into the corresponding variables in the SampleResult:

  • ResponseCode - for example 200
  • ResponseMessage - for example "OK"
  • IsSuccess - true/false

The SampleResult ResponseData is set from the return value of the script. Since version 2.1.2, if the script returns null, it can set the response directly, by using the method SampleResult.setResponseData(data), where data is either a String or a byte array. The data type defaults to "text", but can be set to binary by using the method SampleResult.setDataType(SampleResult.BINARY).

The SampleResult variable gives the script full access to all the fields and methods in the SampleResult. For example, the script has access to the methods setStopThread(boolean) and setStopTest(boolean). Here is a simple (not very useful!) example script:

if (bsh.args[0].equalsIgnoreCase("StopThread")) {
    log.info("Stop Thread detected!");
    SampleResult.setStopThread(true);
}
return "Data from sample with Label "+Label;
//or, since version 2.1.2
SampleResult.setResponseData("My data");
return null;

Another example:

ensure that the property beanshell.sampler.init=BeanShellSampler.bshrc is defined in jmeter.properties. The following script will show the values of all the variables in the ResponseData field:

return getVariables();

For details on the methods available for the various classes (JMeterVariables, SampleResult etc) please check the Javadoc or the source code. Beware however that misuse of any methods can cause subtle faults that may be difficult to find ...

This sampler allows you to write a sampler using a BSF scripting language.

See the Apache Bean Scripting Framework website for details of the languages supported. You may need to download the appropriate jars for the language; they should be put in the JMeter lib directory.

By default, JMeter supports the following languages:

  • javascript
  • jexl (JMeter version 2.3.2 and later)
  • xslt
Unlike the BeanShell sampler, the interpreter is not saved between invocations.
Descriptive name for this sampler that is shown in the tree. Name of the BSF scripting language to be used. N.B. Not all the languages in the drop-down list are supported by default. The following are supported: jexl, javascript, xslt. Others may be available if the appropriate jar is installed in the JMeter lib directory. Name of a file to be used as a BSF script List of parameters to be passed to the script file or the script. Script to be passed to BSF language

If a script file is supplied, that will be used, otherwise the script will be used.

Before invoking the script, some variables are set up. Note that these are BSF variables - i.e. they can be used directly in the script.

  • log - the Logger
  • Label - the Sampler label
  • FileName - the file name, if any
  • Parameters - text from the Parameters field
  • args - the parameters, split as described above
  • SampleResult - pointer to the current SampleResult
  • sampler - pointer to current Sampler
  • ctx - JMeterContext
  • vars - JMeterVariables - e.g. vars.get("VAR1"); vars.put("VAR2","value"); vars.remove("VAR3"); vars.putObject("OBJ1",new Object());
  • props - JMeterProperties (class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • OUT - System.out - e.g. OUT.println("message")

The SampleResult ResponseData is set from the return value of the script. If the script returns null, it can set the response directly, by using the method SampleResult.setResponseData(data), where data is either a String or a byte array. The data type defaults to "text", but can be set to binary by using the method SampleResult.setDataType(SampleResult.BINARY).

The SampleResult variable gives the script full access to all the fields and methods in the SampleResult. For example, the script has access to the methods setStopThread(boolean) and setStopTest(boolean).

Unlike the Beanshell Sampler, the BSF Sampler does not set the ResponseCode, ResponseMessage and sample status via script variables. Currently the only way to changes these is via the SampleResult methods:

  • SampleResult.setSuccessful(true/false)
  • SampleResult.setResponseCode("code")
  • SampleResult.setResponseMessage("message")

The JSR223 Sampler allows JSR223 script code to be used to perform a sample. JSR223 related elements have a feature that increases highly their performances. To benefit from this feature use Script files instead of inlining them. This will make JMeter compile them if this feature is available on ScriptEngine and cache them. Cache size is controlled by the following jmeter property (jmeter.properties):

  • jsr223.compiled_scripts_cache_size=100
For details, see .

Unlike the BeanShell sampler, the interpreter is not saved between invocations. Since JMeter 2.8, JSR223 Test Elements using Script file are now Compiled if ScriptEngine supports this feature, this enables great performance enhancements.

The TCP Sampler opens a TCP/IP connection to the specified server. It then sends the text, and waits for a response.

If "Re-use connection" is selected, connections are shared between Samplers in the same thread, provided that the exact same host name string and port are used. Different hosts/port combinations will use different connections, as will different threads.

If an error is detected - or "Re-use connection" is not selected - the socket is closed. Another socket will be reopened on the next sample.

The following properties can be used to control its operation:

  • tcp.status.prefix - text that precedes a status number
  • tcp.status.suffix - text that follows a status number
  • tcp.status.properties - name of property file to convert status codes to messages
  • tcp.handler - Name of TCP Handler class (default TCPClientImpl) - only used if not specified on the GUI
The class that handles the connection is defined by the GUI, failing that the property tcp.handler. If not found, the class is then searched for in the package org.apache.jmeter.protocol.tcp.sampler.

Users can provide their own implementation. The class must extend org.apache.jmeter.protocol.tcp.sampler.TCPClient.

The following implementations are currently provided.

  • TCPClientImpl
  • BinaryTCPClientImpl
  • LengthPrefixedBinaryTCPClientImpl
The implementations behave as follows:

TCPClientImpl

This implementation is fairly basic. When reading the response, it reads until the end of line byte, if this is defined by setting the property tcp.eolByte, otherwise until the end of the input stream. You can control charset encoding by setting tcp.charset, which will default to Platform default encoding.

BinaryTCPClientImpl

This implementation converts the GUI input, which must be a hex-encoded string, into binary, and performs the reverse when reading the response. When reading the response, it reads until the end of message byte, if this is defined by setting the property tcp.BinaryTCPClient.eomByte, otherwise until the end of the input stream.

LengthPrefixedBinaryTCPClientImpl

This implementation extends BinaryTCPClientImpl by prefixing the binary message data with a binary length byte. The length prefix defaults to 2 bytes. This can be changed by setting the property tcp.binarylength.prefix.length.

Timeout handling If the timeout is set, the read will be terminated when this expires. So if you are using an eolByte/eomByte, make sure the timeout is sufficiently long, otherwise the read will be terminated early.

Response handling

If tcp.status.prefix is defined, then the response message is searched for the text following that up to the suffix. If any such text is found, it is used to set the response code. The response message is then fetched from the properties file (if provided).

For example, if the prefix = "[" and the suffix = "]", then the following repsonse:

[J28] XI123,23,GBP,CR

would have the response code J28.

Response codes in the range "400"-"499" and "500"-"599" are currently regarded as failures; all others are successful. [This needs to be made configurable!]

The login name/password are not used by the supplied TCP implementations.

Sockets are disconnected at the end of a test run.
Descriptive name for this element that is shown in the tree. Name of the TCPClient class. Defaults to the property tcp.handler, failing that TCPClientImpl. Name or IP of TCP server Port to be used If selected, the connection is kept open. Otherwise it is closed when the data has been read. Connect Timeout (milliseconds, 0 disables). Response Timeout (milliseconds, 0 disables). See java.net.Socket.setTcpNoDelay(). If selected, this will disable Nagle's algorithm, otherwise Nagle's algorithm will be used. Text to be sent User Name - not used by default implementation Password - not used by default implementation (N.B. this is stored unencrypted in the test plan)
BETA CODE - the code is still subject to change

JMS Publisher will publish messages to a given destination (topic/queue). For those not familiar with JMS, it is the J2EE specification for messaging. There are numerous JMS servers on the market and several open source options.



JMeter does not include any JMS implementation jar; this must be downloaded from the JMS provider and put in the lib directory
Descriptive name for this element that is shown in the tree. use jndi.properties. Note that the file must be on the classpath - e.g. by updating the user.classpath JMeter property. If this option is not selected, JMeter uses the "JNDI Initial Context Factory" and "Provider URL" fields to create the connection. Name of the context factory The URL for the jms provider The message destination (topic or queue name) The destination setup type. With At startup, the destination name is static (i.e. always same name during the test), with Each sample, the destination name is dynamic and is evaluate at each sample (i.e. the destination name may be a variable) Authentication requirement for the JMS provider User Name Password (N.B. this is stored unencrypted in the test plan) Number of samples to aggregate Where to obtain the message Text, Map or Object message Whether to set DeliveryMode.NON_PERSISTENT (defaults to false) The JMS Properties are properties specific for the underlying messaging system. For example: for WebSphere 5.1 web services you will need to set the JMS Property targetService to test webservices through JMS.

For the MapMessage type, JMeter reads the source as lines of text. Each line must have 3 fields, delimited by commas. The fields are:

  • Name of entry
  • Object class name, e.g. "String" (assumes java.lang package if not specified)
  • Object string value
For each entry, JMeter adds an Object with the given name. The value is derived by creating an instance of the class, and using the valueOf(String) method to convert the value if necessary. For example:
name,String,Example
size,Integer,1234
This is a very simple implementation; it is not intended to support all possible object types.

The Object message is implemented since 2.7 and works as follow:

  • Put the JAR that contain you object and its dependencies in jmeter_home/lib/ folder
  • Serialize your object as XML using XStream
  • Either put result in a file suffixed with .txt or .obj or put XML content direclty in Text Area
Note that if message is in an file, replacement of properties will not occur while it will happen if you use Text Area.

The following table shows some values which may be useful when configuring JMS:
Apache ActiveMQ Value(s) Comment
Context Factoryorg.apache.activemq.jndi.ActiveMQInitialContextFactory.
Provider URLvm://localhost
Provider URLvm:(broker:(vm://localhost)?persistent=false)Disable persistence
Queue ReferencedynamicQueues/QUEUENAME Dynamically define the QUEUENAME to JNDI
Topic ReferencedynamicTopics/TOPICNAME Dynamically define the TOPICNAME to JNDI

BETA CODE - the code is still subject to change

JMS Publisher will subscribe to messages in a given destination (topic or queue). For those not familiar with JMS, it is the J2EE specification for messaging. There are numerous JMS servers on the market and several open source options.



JMeter does not include any JMS implementation jar; this must be downloaded from the JMS provider and put in the lib directory
Descriptive name for this element that is shown in the tree. use jndi.properties. Note that the file must be on the classpath - e.g. by updating the user.classpath JMeter property. If this option is not selected, JMeter uses the "JNDI Initial Context Factory" and "Provider URL" fields to create the connection. Name of the context factory The URL for the jms provider the message destination (topic or queue name) The ID to use for a durable subscription. On first use the respective queue will automatically be generated by the JMS provider if it does not exist yet. The Client ID to use when you you use a durable subscription. Be sure to add a variable like ${__threadNum} when you have more than one Thread. Message Selector as defined by JMS specification to extract only messages that respect the Selector condition. Syntax uses subpart of SQL 92. The destination setup type. With At startup, the destination name is static (i.e. always same name during the test), with Each sample, the destination name is dynamic and is evaluate at each sample (i.e. the destination name may be a variable) Authentication requirement for the JMS provider User Name Password (N.B. this is stored unencrypted in the test plan) number of samples to aggregate should the sampler read the response. If not, only the response length is returned. Specify the timeout to be applied, in milliseconds. 0=none. This is the overall aggregate timeout, not per sample. Which client implementation to use. Both of them create connections which can read messages. However they use a different strategy, as described below:
  • MessageConsumer.receive() - calls receive() for every requested message. Retains the connection between samples, but does not fetch messages unless the sampler is active. This is best suited to Queue subscriptions.
  • MessageListener.onMessage() - establishes a Listener that stores all incoming messages on a queue. The listener remains active after the sampler completes. This is best suited to Topic subscriptions.
If selected, then JMeter calls Connection.stop() at the end of each sample (and calls start() before each sample). This may be useful in some cases where multiple samples/threads have connections to the same queue. If not selected, JMeter calls Connection.start() at the start of the thread, and does not call stop() until the end of the thread. Separator used to separate messages when there is more than one (related to setting Number of samples to aggregate). Note that \n, \r, \t are accepted.

NOTE: JMeter 2.3.4 and earlier used a different strategy for the MessageConsumer.receive() client. Previously this started a background thread which polled for messages. This thread continued when the sampler completed, so the net effect was similar to the MessageListener.onMessage() strategy.

BETA CODE - the code is still subject to change

This sampler sends and optionally receives JMS Messages through point-to-point connections (queues). It is different from pub/sub messages and is generally used for handling transactions.

Request Only will typically used to put load on a JMS System.

Request Response will be used when you want to test response time of a JMS service that processes messages sent to the Request Queue as this mode will wait for the response on the Reply queue sent by this service.

Versions of JMeter after 2.3.2 use the properties java.naming.security.[principal|credentials] - if present - when creating the Queue Connection. If this behaviour is not desired, set the JMeter property JMSSampler.useSecurity.properties=false



JMeter does not include any JMS implementation jar; this must be downloaded from the JMS provider and put in the lib directory
Descriptive name for this element that is shown in the tree. The JNDI name of the queue connection factory to use for connecting to the messaging system. This is the JNDI name of the queue to which the messages are sent. The JNDI name of the receiving queue. If a value is provided here and the communication style is Request Response this queue will be monitored for responses to the requests sent. Message Selector as defined by JMS specification to extract only messages that respect the Selector condition. Syntax uses subpart of SQL 92. The Communication style can be Request Only (also known as Fire and Forget) or Request Response:
  • Request Only will only send messages and will not monitor replies. As such it can be used to put load on a system.
  • Request Response will send messages and monitor the replies it receives. Behaviour depends on the value of the JNDI Name Reply Queue. If JNDI Name Reply Queue has a value, this queue is used to monitor the results. Matching of request and reply is done with the message id of the request and the correlation id of the reply. If the JNDI Name Reply Queue is empty, then temporary queues will be used for the communication between the requestor and the server. This is very different from the fixed reply queue. With temporary queues the sending thread will block until the reply message has been received. With Request Response mode, you need to have a Server that listens to messages sent to Request Queue and sends replies to queue referenced by message.getJMSReplyTo().
These check-boxes select the fields which will be used for matching the response message with the original request.
  • Use Request Message Id - if selected, the request JMSMessageID will be used, otherwise the request JMSCorrelationID will be used. In the latter case the correlation id must be specified in the request.
  • Use Response Message Id - if selected, the response JMSMessageID will be used, otherwise the response JMSCorrelationID will be used.
There are two frequently used JMS Correlation patterns:
  • JMS Correlation ID Pattern - i.e. match request and response on their correlation Ids => deselect both checkboxes, and provide a correlation id.
  • JMS Message ID Pattern - i.e. match request message id with response correlation id => select "Use Request Message Id" only.
In both cases the JMS application is responsible for populating the correlation ID as necessary. if the same queue is used to send and receive messages, then the response message will be the same as the request message. In which case, either provide a correlation id and clear both checkboxes; or select both checkboxes to use the message Id for correlation. This can be useful for checking raw JMS throughput.
The timeout in milliseconds for the reply-messages. If a reply has not been received within the specified time, the specific testcase failes and the specific reply message received after the timeout is discarded. Whether to set DeliveryMode.NON_PERSISTENT. The content of the message. The JMS Properties are properties specific for the underlying messaging system. For example: for WebSphere 5.1 web services you will need to set the JMS Property targetService to test webservices through JMS. The Initial Context Factory is the factory to be used to look up the JMS Resources. The JNDI Properties are the specific properties for the underlying JNDI implementation. The URL for the jms provider.
The current implementation supports standard Junit convention and extensions. It also includes extensions like oneTimeSetUp and oneTimeTearDown. The sampler works like the JavaSampler with some differences.

1. rather than use Jmeter's test interface, it scans the jar files for classes extending junit's TestCase class. That includes any class or subclass.

2. Junit test jar files should be placed in jmeter/lib/junit instead of /lib directory. In versions of JMeter after 2.3.1, you can also use the "user.classpath" property to specify where to look for TestCase classes.

3. Junit sampler does not use name/value pairs for configuration like the JavaSampler. The sampler assumes setUp and tearDown will configure the test correctly.

4. The sampler measures the elapsed time only for the test method and does not include setUp and tearDown.

5. Each time the test method is called, Jmeter will pass the result to the listeners.

6. Support for oneTimeSetUp and oneTimeTearDown is done as a method. Since Jmeter is multi-threaded, we cannot call oneTimeSetUp/oneTimeTearDown the same way Maven does it.

7. The sampler reports unexpected exceptions as errors. There are some important differences between standard JUnit test runners and JMeter's implementation. Rather than make a new instance of the class for each test, JMeter creates 1 instance per sampler and reuses it. This can be changed with checkbox "Create a new instance per sample".

The current implementation of the sampler will try to create an instance using the string constructor first. If the test class does not declare a string constructor, the sampler will look for an empty constructor. Example below:<br> <br> Empty Constructor:<br> public class myTestCase {<br> public myTestCase() {}<br> }<br> <br> String Constructor:<br> public class myTestCase {<br> public myTestCase(String text) {<br> super(text);<br> }<br> }<br> By default, Jmeter will provide some default values for the success/failure code and message. Users should define a set of unique success and failure codes and use them uniformly across all tests.<br> General Guidelines

If you use setUp and tearDown, make sure the methods are declared public. If you do not, the test may not run properly.

Here are some general guidelines for writing Junit tests so they work well with Jmeter. Since Jmeter runs multi-threaded, it is important to keep certain things in mind.<br> <br> 1. Write the setUp and tearDown methods so they are thread safe. This generally means avoid using static memebers.<br> 2. Make the test methods discrete units of work and not long sequences of actions. By keeping the test method to a descrete operation, it makes it easier to combine test methods to create new test plans.<br> 3. Avoid making test methods depend on each other. Since Jmeter allows arbitrary sequencing of test methods, the runtime behavior is different than the default Junit behavior.<br> 4. If a test method is configurable, be careful about where the properties are stored. Reading the properties from the Jar file is recommended.<br> 5. Each sampler creates an instance of the test class, so write your test so the setup happens in oneTimeSetUp and oneTimeTearDown.
Descriptive name for this element that is shown in the tree. Select this to search for JUnit 4 tests (@Test annotations) Comma separated list of packages to show. Example, org.apache.jmeter,junit.framework. Fully qualified name of the JUnit test class. String pass to the string constructor. If a string is set, the sampler will use the string constructor instead of the empty constructor. The method to test. A descriptive message indicating what success means. An unique code indicating the test was successful. A descriptive message indicating what failure means. An unique code indicating the test failed. A description for errors. Some code for errors. Does not need to be unique. Set the sampler not to call setUp and tearDown. By default, setUp and tearDown should be called. Not calling those methods could affect the test and make it inaccurate. This option should only be used with calling oneTimeSetUp and oneTimeTearDown. If the selected method is oneTimeSetUp or oneTimeTearDown, this option should be checked. Whether or not to append assertion errors to the response message. Whether or not to append runtime exceptions to the response message. Only applies if "Append assertion errors" is not selected. Whether or not to create a new JUnit instance for each sample. Defaults to false, meaning JUnit TestCase is created one and reused.

The following JUnit4 annotations are recognised:

  • @Test - used to find test methods and classes. The "expected" and "timeout" attributes are supported.
  • @Before - treated the same as setUp() in JUnit3
  • @After - treated the same as tearDown() in JUnit3
  • @BeforeClass, @AfterClass - treated as test methods so they can be run independently as required

Note that JMeter currently runs the test methods directly, rather than leaving it to JUnit. This is to allow the setUp/tearDown methods to be excluded from the sample time.

The Mail Reader Sampler can read (and optionally delete) mail messages using POP3(S) or IMAP(S) protocols.

Descriptive name for this element that is shown in the tree. The protocol used by the provider: e.g. pop3, pop3s, imap, imaps. or another string representing the server protocol. For example file for use with the read-only mail file provider. The actual provider names for POP3 and IMAP are pop3 and imap Hostname or IP address of the server. See below for use with file protocol. Port to be used to connect to the server (optional) User login name User login password (N.B. this is stored unencrypted in the test plan) The IMAP(S) folder to use. See below for use with file protocol. Set this to retrieve all or some messages If set, messages will be deleted after retrieval Whether to store the message as MIME. If so, then the entire raw message is stored in the Response Data; the headers are not stored as they are available in the data. If not, the message headers are stored as Response Headers. A few headers are stored (Date, To, From, Subject) in the body. Indicates that the connection to the server does not use any security protocol. Indicates that the connection to the server must use the SSL protocol. Indicates that the connection to the server should attempt to start the TLS protocol. If the server does not start the TLS protocol the connection will be terminated. When selected it will accept all certificates independent of the CA. When selected it will only accept certificates that are locally trusted. Path to file containing the trusted certificates. Relative paths are resolved against the current directory.
Failing that, against the directory containing the test script (JMX file).

Messages are stored as subsamples of the main sampler. In versions of JMeter after 2.3.4, multipart message parts are stored as subsamples of the message.

Special handling for "file" protocol:

The file JavaMail provider can be used to read raw messages from files. The server field is used to specify the path to the parent of the folder. Individual message files should be stored with the name n.msg, where n is the message number. Alternatively, the server field can be the name of a file which contains a single message. The current implementation is quite basic, and is mainly intended for debugging purposes.

The Test Action sampler is a sampler that is intended for use in a conditional controller. Rather than generate a sample, the test element eithers pauses or stops the selected target.

This sampler can also be useful in conjunction with the Transaction Controller, as it allows pauses to be included without needing to generate a sample. For variable delays, set the pause time to zero, and add a Timer as a child.

The "Stop" action stops the thread or test after completing any samples that are in progress. The "Stop Now" action stops the test without waiting for samples to complete; it will interrupt any active samples. If some threads fail to stop within the 5 second time-limit, a message will be displayed in GUI mode. You can try using the Stop command to see if this will stop the threads, but if not, you should exit JMeter. In non-GUI mode, JMeter will exit if some threads fail to stop within the 5 second time limit. [This can be changed using the JMeter property jmeterengine.threadstop.wait]

Descriptive name for this element that is shown in the tree. Current Thread / All Threads (ignored for Pause) Pause / Stop / Stop Now / Go to next loop iteration How long to pause for (milliseconds)

The SMTP Sampler can send mail messages using SMTP/SMTPS protocol. It is possible to set security propocols for the connection (SSL and TLS), as well as user authentication. If a security protocol is used a verification on the server certificate will occur.

Two alternatives to handle this verification are available:

  • Trust all certificates. This will ignore certificate chain verification
  • Use a local truststore. With this option the certificate chain will be validated against the local truststore file.

Hostname or IP address of the server. See below for use with file protocol. Port to be used to connect to the server. Defaults are: SMTP=25, SSL=465, StartTLS=587 The from address that will appear in the e-mail The destination e-mail address (multiple values separated by ";") Carbon copy destinations e-mail address (multiple values separated by ";") Blind carbon copy destinations e-mail address (multiple values separated by ";") Alternate Reply-To address (multiple values separated by ";") Indicates if the SMTP server requires user authentication User login name User login password (N.B. this is stored unencrypted in the test plan) Indicates that the connection to the SMTP server does not use any security protocol. Indicates that the connection to the SMTP server must use the SSL protocol. Indicates that the connection to the SMTP server should attempt to start the TLS protocol. If the server does not start the TLS protocol the connection will be terminated. When selected it will accept all certificates independent of the CA. When selected it will only accept certificates that are locally trusted. Path to file containing the trusted certificates. Relative paths are resolved against the current directory.
Failing that, against the directory containing the test script (JMX file).
The e-mail message subject. If selected, the "Subject:" header is omitted from the mail that is sent. This is different from sending an empty "Subject:" header, though some e-mail clients may display it identically. Includes the System.currentTimemilis() in the subject line. Additional headers can be defined using this button. The message body. If selected, then send the body as a plain message, i.e. not multipart/mixed, if possible. If the message body is empty and there is a single file, then send the file contents as the message body. Note: If the message body is not empty, and there is at least one attached file, then the body is sent as multipart/mixed. Files to be attached to the message. If set, the .eml file will be sent instead of the entries in the Subject, Message, and Attached files Calculates the message size and stores it in the sample result. If set, then the "mail.debug" property is set to "true"

The OS Process Sampler is a sampler that can be used to execute commands on the local machine.

It should allow execution of any command that can be run from the command line.

Validation of the return code can be enabled, and the expected return code can be specified.

Note that OS shells generally provide command-line parsing. This varies between OSes, but generally the shell will split parameters on white-space. Some shells expand wild-card file names; some don't. The quoting mechanism also varies between OSes. The sampler deliberately does not do any parsing or quote handling. The command and its parameters must be provided in the form expected by the executable. This means that the sampler settings will not be portable between OSes.

Many OSes have some built-in commands which are not provided as separate executables. For example the Windows DIR command is part of the command interpreter (CMD.EXE). These built-ins cannot be run as independent programs, but have to be provided as arguments to the appropriate command interpreter.

For example, the Windows command-line: DIR C:\TEMP needs to be specified as follows:

command:   CMD
Param 1:   /C
Param 2:   DIR
Param 3:   C:\TEMP

The program name to execute. Directory from which command will be executed, defaults to folder referenced by "user.dir" System property Parameters passed to the program name. Key/Value pairs added to environment when running command. Name of file from which input is to be taken (STDIN). Name of output file for standard output (STDOUT). If omitted, output is captured and returned as the response data. Name of output file for standard error (STDERR). If omitted, output is captured and returned as the response data. If checked, sampler will compare return code with Expected Return Code. Expected return code for System Call, required if "Check Return Code" is checked.
^

Logic Controllers determine the order in which Samplers are processed.

The Simple Logic Controller lets you organize your Samplers and other Logic Controllers. Unlike other Logic Controllers, this controller provides no functionality beyond that of a storage device.

Descriptive name for this controller that is shown in the tree.

Download this example (see Figure 6). In this example, we created a Test Plan that sends two Ant HTTP requests and two Log4J HTTP requests. We grouped the Ant and Log4J requests by placing them inside Simple Logic Controllers. Remember, the Simple Logic Controller has no effect on how JMeter processes the controller(s) you add to it. So, in this example, JMeter sends the requests in the following order: Ant Home Page, Ant News Page, Log4J Home Page, Log4J History Page. Note, the File Reporter is configured to store the results in a file named "simple-test.dat" in the current directory.

Figure 6 Simple Controller Example

If you add Generative or Logic Controllers to a Loop Controller, JMeter will loop through them a certain number of times, in addition to the loop value you specified for the Thread Group. For example, if you add one HTTP Request to a Loop Controller with a loop count of two, and configure the Thread Group loop count to three, JMeter will send a total of 2 * 3 = 6 HTTP Requests.

Descriptive name for this controller that is shown in the tree. The number of times the subelements of this controller will be iterated each time through a test run.

Special Case: The Loop Controller embedded in the Thread Group element behaves slightly differently. Unless set to forever, it stops the test after the given number of iterations have been done.

Download this example (see Figure 4). In this example, we created a Test Plan that sends a particular HTTP Request only once and sends another HTTP Request five times.

Figure 4 - Loop Controller Example

We configured the Thread Group for a single thread and a loop count value of one. Instead of letting the Thread Group control the looping, we used a Loop Controller. You can see that we added one HTTP Request to the Thread Group and another HTTP Request to a Loop Controller. We configured the Loop Controller with a loop count value of five.

JMeter will send the requests in the following order: Home Page, News Page, News Page, News Page, News Page, and News Page. Note, the File Reporter is configured to store the results in a file named "loop-test.dat" in the current directory.

The Once Only Logic Controller tells JMeter to process the controller(s) inside it only once per Thread, and pass over any requests under it during further iterations through the test plan.

The Once Only Controller will now execute always during the first iteration of any looping parent controller. Thus, if the Once Only Controller is placed under a Loop Controller specified to loop 5 times, then the Once Only Controller will execute only on the first iteration through the Loop Controller (ie, every 5 times). Note this means the Once Only Controller will still behave as previously expected if put under a Thread Group (runs only once per test per Thread), but now the user has more flexibility in the use of the Once Only Controller.

For testing that requires a login, consider placing the login request in this controller since each thread only needs to login once to establish a session.

Descriptive name for this controller that is shown in the tree.

Download this example (see Figure 5). In this example, we created a Test Plan that has two threads that send HTTP request. Each thread sends one request to the Home Page, followed by three requests to the Bug Page. Although we configured the Thread Group to iterate three times, each JMeter thread only sends one request to the Home Page because this request lives inside a Once Only Controller.

Figure 5. Once Only Controller Example

Each JMeter thread will send the requests in the following order: Home Page, Bug Page, Bug Page, Bug Page. Note, the File Reporter is configured to store the results in a file named "loop-test.dat" in the current directory.

The behaviour of the Once Only controller under anything other than the Thread Group or a Loop Controller is not currently defined. Odd things may happen.

If you add Generative or Logic Controllers to an Interleave Controller, JMeter will alternate among each of the other controllers for each loop iteration.

Descriptive name for this controller that is shown in the tree. If checked, the interleave controller will treat sub-controllers like single request elements and only allow one request per controller at a time.

Download this example (see Figure 1). In this example, we configured the Thread Group to have two threads and a loop count of five, for a total of ten requests per thread. See the table below for the sequence JMeter sends the HTTP Requests.

Figure 1 - Interleave Controller Example 1
Loop IterationEach JMeter Thread Sends These HTTP Requests
1News Page
1Log Page
2FAQ Page
2Log Page
3Gump Page
3Log Page
4Because there are no more requests in the controller,

JMeter starts over and sends the first HTTP Request, which is the News Page.
4Log Page
5FAQ Page
5Log Page

Download another example (see Figure 2). In this example, we configured the Thread Group to have a single thread and a loop count of eight. Notice that the Test Plan has an outer Interleave Controller with two Interleave Controllers inside of it.

Figure 2 - Interleave Controller Example 2

The outer Interleave Controller alternates between the two inner ones. Then, each inner Interleave Controller alternates between each of the HTTP Requests. Each JMeter thread will send the requests in the following order: Home Page, Interleaved, Bug Page, Interleaved, CVS Page, Interleaved, and FAQ Page, Interleaved. Note, the File Reporter is configured to store the results in a file named "interleave-test2.dat" in the current directory.

Figure 3 - Interleave Controller Example 3

If the two interleave controllers under the main interleave controller were instead simple controllers, then the order would be: Home Page, CVS Page, Interleaved, Bug Page, FAQ Page, Interleaved. However, if "ignore sub-controller blocks" was checked on the main interleave controller, then the order would be: Home Page, Interleaved, Bug Page, Interleaved, CVS Page, Interleaved, and FAQ Page, Interleaved.

The Random Logic Controller acts similarly to the Interleave Controller, except that instead of going in order through its sub-controllers and samplers, it picks one at random at each pass.

Interactions between multiple controllers can yield complex behavior. This is particularly true of the Random Controller. Experiment before you assume what results any given interaction will give
Descriptive name for this controller that is shown in the tree.

The Random Order Controller is much like a Simple Controller in that it will execute each child element at most once, but the order of execution of the nodes will be random.

Descriptive name for this controller that is shown in the tree.

This controller is badly named, as it does not control throughput. Please refer to the for an element that can be used to adjust the throughput.

The Throughput Controller allows the user to control how often it is executed. There are two modes - percent execution and total executions. Percent executions causes the controller to execute a certain percentage of the iterations through the test plan. Total executions causes the controller to stop executing after a certain number of executions have occurred. Like the Once Only Controller, this setting is reset when a parent Loop Controller restarts.

The Throughput Controller can yield very complex behavior when combined with other controllers - in particular with interleave or random controllers as parents (also very useful). Descriptive name for this controller that is shown in the tree. Whether the controller will run in percent executions or total executions mode. A number. for percent execution mode, a number from 0-100 that indicates the percentage of times the controller will execute. "50" means the controller will execute during half the iterations throught the test plan. for total execution mode, the number indicates the total number of times the controller will execute. If checked, per user will cause the controller to calculate whether it should execute on a per user (per thread) basis. if unchecked, then the calculation will be global for all users. for example, if using total execution mode, and uncheck "per user", then the number given for throughput will be the total number of executions made. if "per user" is checked, then the total number of executions would be the number of users times the number given for throughput.

The Runtime Controller controls how long its children are allowed to run.

Descriptive name for this controller that is shown in the tree, and used to name the transaction. Desired runtime in seconds

The If Controller allows the user to control whether the test elements below it (its children) are run or not.

Prior to JMeter 2.3RC3, the condition was evaluated for every runnable element contained in the controller. This sometimes caused unexpected behaviour, so 2.3RC3 was changed to evaluate the condition only once on initial entry. However, the original behaviour is also useful, so versions of JMeter after 2.3RC4 have an additional option to select the original behaviour.

Versions of JMeter after 2.3.2 allow the script to be processed as a variable expression, rather than requiring Javascript. It was always possible to use functions and variables in the Javascript condition, so long as they evaluated to "true" or "false"; now this can be done without the overhead of using Javascript as well. For example, previously one could use the condition: ${__jexl(${VAR} == 23)} and this would be evaluated as true/false, the result would then be passed to Javascript which would then return true/false. If the Variable Expression option is selected, then the expression is evaluated and compared with "true", without needing to use Javascript. Also, variable expressions can return any value, whereas the Javascript condition must return "true"/"false" or an error is logged.

No variables are made available to the script when the condition is interpreted as Javascript. If you need access to such variables, then select "Interpret Condition as Variable Expression?" and use a __javaScript() function call. You can then use the objects "vars", "log", "ctx" etc. in the script.
Descriptive name for this controller that is shown in the tree. By default the condition is interpreted as Javascript code that returns "true" or "false", but this can be overriden (see below) If this is selected, then the condition must be an expression that evaluates to "true" (case is ignored). For example, ${FOUND} or ${__jexl(${VAR} > 100)}. Unlike the Javascript case, the condition is only checked to see if it matches "true" (case is ignored). Should condition be evaluated for all children? If not checked, then the condition is only evaluated on entry.

Examples (Javascript):

  • ${COUNT} < 10
  • "${VAR}" == "abcd"
  • ${JMeterThread.last_sample_ok} (check if last sample succeeded)
If there is an error interpreting the code, the condition is assumed to be false, and a message is logged in jmeter.log.

Examples (Variable Expression):

  • ${__jexl(${COUNT} < 10)}
  • ${RESULT}

The While Controller runs its children until the condition is "false".

Possible condition values:

  • blank - exit loop when last sample in loop fails
  • LAST - exit loop when last sample in loop fails. If the last sample just before the loop failed, don't enter loop.
  • Otherwise - exit (or don't enter) the loop when the condition is equal to the string "false"
The condition can be any variable or function that eventually evaluates to the string "false". This allows the use of JavaScript, BeanShell, properties or variables as needed.

Note that the is evaluated twice, once before starting sampling children and once at end of children sampling, so putting non idempotent functions in Condition (like __counter) can introduce issues.

For example:
  • ${VAR} - where VAR is set to false by some other test element
  • ${__javaScript(${C}==10)}
  • ${__javaScript("${VAR2}"=="abcd")}
  • ${_P(property)} - where property is set to "false" somewhere else
Descriptive name for this controller that is shown in the tree, and used to name the transaction. blank, LAST, or variable/function

The Switch Controller acts like the in that it runs one of the subordinate elements on each iteration, but rather than run them in sequence, the controller runs the element defined by the switch value.

Note: In versions of JMeter after 2.3.1, the switch value can also be a name.

If the switch value is out of range, it will run the zeroth element, which therefore acts as the default for the numeric case. It also runs the zeroth element if the value is the empty string.

If the value is non-numeric (and non-empty), then the Switch Controller looks for the element with the same name (case is significant). If none of the names match, then the element named "default" (case not significant) is selected. If there is no default, then no element is selected, and the controller will not run anything.

Descriptive name for this controller that is shown in the tree, and used to name the transaction. The number (or name) of the subordinate element to be invoked. Elements are numbered from 0.

A ForEach controller loops through the values of a set of related variables. When you add samplers (or controllers) to a ForEach controller, every sample sample (or controller) is executed one or more times, where during every loop the variable has a new value. The input should consist of several variables, each extended with an underscore and a number. Each such variable must have a value. So for example when the input variable has the name inputVar, the following variables should have been defined:

  • inputVar_1 = wendy
  • inputVar_2 = charles
  • inputVar_3 = peter
  • inputVar_4 = john

Note: the "_" separator is now optional.

When the return variable is given as "returnVar", the collection of samplers and controllers under the ForEach controller will be executed 4 consecutive times, with the return variable having the respective above values, which can then be used in the samplers.

It is especially suited for running with the regular expression post-processor. This can "create" the necessary input variables out of the result data of a previous request. By omitting the "_" separator, the ForEach Controller can be used to loop through the groups by using the input variable refName_g, and can also loop through all the groups in all the matches by using an input variable of the form refName_${C}_g, where C is a counter variable.

The ForEach Controller does not run any samples if inputVar_1 is null. This would be the case if the Regular Expression returned no matches.
Descriptive name for this controller that is shown in the tree. Prefix for the variable names to be used as input. The name of the variable which can be used in the loop for replacement in the samplers If not checked, the "_" separator is omitted.

Download this example (see Figure 7). In this example, we created a Test Plan that sends a particular HTTP Request only once and sends another HTTP Request to every link that can be found on the page.

Figure 7 - ForEach Controller Example

We configured the Thread Group for a single thread and a loop count value of one. You can see that we added one HTTP Request to the Thread Group and another HTTP Request to the ForEach Controller.

After the first HTTP request, a regular expression extractor is added, which extracts all the html links out of the return page and puts them in the inputVar variable

In the ForEach loop, a HTTP sampler is added which requests all the links that were extracted from the first returned HTML page.

Here is another example you can download. This has two Regular Expressions and ForEach Controllers. The first RE matches, but the second does not match, so no samples are run by the second ForEach Controller

Figure 8 - ForEach Controller Example 2

The Thread Group has a single thread and a loop count of two.

Sample 1 uses the JavaTest Sampler to return the string "a b c d".

The Regex Extractor uses the expression (\w)\s which matches a letter followed by a space, and returns the letter (not the space). Any matches are prefixed with the string "inputVar".

The ForEach Controller extracts all variables with the prefix "inputVar_", and executes its sample, passing the value in the variable "returnVar". In this case it will set the variable to the values "a" "b" and "c" in turn.

The For 1 Sampler is another Java Sampler which uses the return variable "returnVar" as part of the sample Label and as the sampler Data.

Sample 2, Regex 2 and For 2 are almost identical, except that the Regex has been changed to "(\w)\sx", which clearly won't match. Thus the For 2 Sampler will not be run.

The Module Controller provides a mechanism for substituting test plan fragments into the current test plan at run-time.

A test plan fragment consists of a Controller and all the test elements (samplers etc) contained in it. The fragment can be located in any Thread Group, or on the . If the fragment is located in a Thread Group, then its Controller can be disabled to prevent the fragment being run except by the Module Controller. Or you can store the fragments in a dummy Thread Group, and disable the entire Thread Group.

There can be multiple fragments, each with a different series of samplers under them. The module controller can then be used to easily switch between these multiple test cases simply by choosing the appropriate controller in its drop down box. This provides convenience for running many alternate test plans quickly and easily.

A fragment name is made up of the Controller name and all its parent names. For example:

Test Plan / Protocol: JDBC / Control / Interleave Controller (Module1)
Any fragments used by the Module Controller must have a unique name, as the name is used to find the target controller when a test plan is reloaded. For this reason it is best to ensure that the Controller name is changed from the default - as shown in the example above - otherwise a duplicate may be accidentally created when new elements are added to the test plan.

The Module Controller should not be used with remote testing or non-gui testing in conjunction with Workbench components since the Workbench test elements are not part of test plan .jmx files. Any such test will fail. Descriptive name for this controller that is shown in the tree. The module controller provides a list of all controllers loaded into the gui. Select the one you want to substitute in at runtime.

The include controller is designed to use an external jmx file. To use it, create a Test Fragment underneath the Test Plan and add any desired samplers, controllers etc. below it. Then save the Test Plan. The file is now ready to be included as part of other Test Plans.

For convenience, a Thread Group can also be added in the external JMX file for debugging purposes. A Module Controller can be used to reference the Test Fragment. The Thread Group will be ignored during the include process.

If the test uses a Cookie Manager or User Defined Variables, these should be placed in the top-level test plan, not the included file, otherwise they are not guaranteed to work.

This element does not support variables/functions in the filename field.

However, if the property includecontroller.prefix is defined, the contents are used to prefix the pathname.
When using IncludeController and including the same JMX file, ensure you name the IncludeController differently to avoid facing known issue 50898.

If the file cannot be found at the location given by prefix+filename, then the controller attempts to open the fileName relative to the JMX launch directory (versions of JMeter after 2.3.4).

The file to include.

The Transaction Controller generates an additional sample which measures the overall time taken to perform the nested test elements. Note that this time by default includes all processing within the controller scope, not just the samples, this can be changed by unchecking "Include duration of timer and pre-post processors in generated sample".

For JMeter versions after 2.3, there are two modes of operation

  • additional sample is added after the nested samples
  • additional sample is added as a parent of the nested samples

The generated sample time includes all the times for the nested samplers, and any timers etc. Depending on the clock resolution, it may be slightly longer than the sum of the individual samplers plus timers. The clock might tick after the controller recorded the start time but before the first sample starts. Similarly at the end.

The generated sample is only regarded as successful if all its sub-samples are successful.

In parent mode, the individual samples can still be seen in the Tree View Listener, but no longer appear as separate entries in other Listeners. Also, the sub-samples do not appear in CSV log files, but they can be saved to XML files.

In parent mode, Assertions (etc) can be added to the Transaction Controller. However by default they will be applied to both the individual samples and the overall transaction sample. To limit the scope of the Assertions, use a Simple Controller to contain the samples, and add the Assertions to the Simple Controller. Parent mode controllers do not currently properly support nested transaction controllers of either type.
Descriptive name for this controller that is shown in the tree, and used to name the transaction. If checked, then the sample is generated as a parent of the other samples, otherwise the sample is generated as an independent sample. Whether to include timer, pre- and post-processing delays in the generated sample. Default is true to be compatible with the behaviour in previous versions of JMeter. Setting it to false is a better option to get only response time of the sample.

The Recording Controller is a place holder indicating where the proxy server should record samples to. During test run, it has no effect, similar to the Simple Controller. But during recording using the , all recorded samples will by default be saved under the Recording Controller.

Descriptive name for this controller that is shown in the tree.
^


Most of the listeners perform several roles in addition to "listening" to the test results. They also provide means to view, save, and read saved test results.

Note that Listeners are processed at the end of the scope in which they are found.

The saving and reading of test results is generic. The various listeners have a panel whereby one can specify the file to which the results will be written (or read from). By default, the results are stored as XML files, typically with a ".jtl" extension. Storing as CSV is the most efficient option, but is less detailed than XML (the other available option).

Listeners do not process sample data in non-GUI mode, but the raw data will be saved if an output file has been configured. In order to analyse the data generated by a non-GUI test run, you need to load the file into the appropriate Listener.

To read existing results and display them, use the file panel Browse button to open the file.

Versions of JMeter up to 2.3.2 used to clear any current data before loading the new file.

This is no longer done, thus allowing files to be merged. If the previous behaviour is required, use the menu item Run/Clear (Ctrl+Shift+E) or Run/Clear All (Ctrl+E) before loading the file.

Results can be read from XML or CSV format files. When reading from CSV results files, the header (if present) is used to determine which fields are present. In order to interpret a header-less CSV file correctly, the appropriate properties must be set in jmeter.properties.

The file name can contain function and/or variable references. However variable references do not work in client-server mode (functions work OK).

Listeners can use a lot of memory if there are a lot of samples. Most of the listeners currently keep a copy of every sample in their scope, apart from:

  • Simple Data Writer
  • BeanShell/BSF Listener
  • Mailer Visualizer
  • Monitor Results
  • Summary Report

The following Listeners no longer need to keep copies of every single sample. Instead, samples with the same elapsed time are aggregated. Less memory is now needed, especially if most samples only take a second or two at most.

  • Aggregate Report
  • Aggregate Graph
  • Distribution Graph

To minimise the amount of memory needed, use the Simple Data Writer, and use the CSV format.

Versions of JMeter after 2.3.1 allow JMeter variables to be saved to the output files. This can only be specified using a property. See the Listener Sample Variables for details For full details on setting up the default items to be saved see the Listener Default Configuration documentation. For details of the contents of the output files, see the CSV log format or the XML log format.

The entries in jmeter.properties are used to define the defaults; these can be overriden for individual listeners by using the Configure button, as shown below. The settings in jmeter.properties also apply to the listener that is added by using the -l command-line flag.

The figure below shows an example of the result file configuration panel

Result file configuration panel

Name of the file containing sample results. The file name can be specified using either a relative or an absolute path name. Relative paths are resolved relative to the current working directory (which defaults to the bin/ directory). Versions of JMeter after 2.4 also support paths relative to the directory containing the current test plan (JMX file). If the path name begins with "~/" (or whatever is in the jmeter.save.saveservice.base_prefix JMeter property), then the path is assumed to be relative to the JMX file location. File Browse Button Select this to write/read only results with errors Select this to write/read only results without errors. If neither Errors nor Successes is selected, then all results are processed. Configure Button, see below

Listeners can be configured to save different items to the result log files (JTL) by using the Config popup as shown below. The defaults are defined as described in the Listener Default Configuration documentation. Items with (CSV) after the name only apply to the CSV format; items with (XML) only apply to XML format. CSV format cannot currently be used to save any items that include line-breaks.

Note that cookies, method and the query string are saved as part of the "Sampler Data" option.

The Graph Results listener generates a simple graph that plots all sample times. Along the bottom of the graph, the current sample (black), the current average of all samples(blue), the current standard deviation (red), and the current throughput rate (green) are displayed in milliseconds.

The throughput number represents the actual number of requests/minute the server handled. This calculation includes any delays you added to your test and JMeter's own internal processing time. The advantage of doing the calculation like this is that this number represents something real - your server in fact handled that many requests per minute, and you can increase the number of threads and/or decrease the delays to discover your server's maximum throughput. Whereas if you made calculations that factored out delays and JMeter's processing, it would be unclear what you could conclude from that number.

The following table briefly describes the items on the graph. Further details on the precise meaning of the statistical terms can be found on the web - e.g. Wikipedia - or by consulting a book on statistics.

  • Data - plot the actual data values
  • Average - plot the Average
  • Median - plot the Median (midway value)
  • Deviation - plot the Standard Deviation (a measure of the variation)
  • Throughput - plot the number of samples per unit of time

The individual figures at the bottom of the display are the current values. "Latest Sample" is the current elapsed sample time, shown on the graph as "Data".

The Spline Visualizer provides a view of all sample times from the start of the test till the end, regardless of how many samples have been taken. The spline has 10 points, each representing 10% of the samples, and connected using spline logic to show a single continuous line.

The graph is automatically scaled to fit within the window. This needs to be borne in mind when comparing graphs.

The Assertion Results visualizer shows the Label of each sample taken. It also reports failures of any Assertions that are part of the test plan.

The View Results Tree shows a tree of all sample responses, allowing you to view the response for any sample. In addition to showing the response, you can see the time it took to get this response, and some response codes. Note that the Request panel only shows the headers added by JMeter. It does not show any headers (such as Host) that may be added by the HTTP protocol implementation.

There are several ways to view the response, selectable by a drop-down box at the bottom of the left hand panel.

  • HTML
  • HTML (download resources)
  • JSON
  • Regexp Tester
  • Text
  • XML

Scroll automatically? option permit to have last node display in tree selection

Additional renderers can be created. The class must implement the interface org.apache.jmeter.visualizers.ResultRenderer and/or extend the abstract class org.apache.jmeter.visualizers.SamplerResultTab, and the compiled code must be available to JMeter (e.g. by adding it to the lib/ext directory).

The default "Text" view shows all of the text contained in the response. Note that this will only work if the response content-type is considered to be text. If the content-type begins with any of the following, it is considered as binary, otherwise it is considered to be text.

image/
audio/
video/
If there is no content-type provided, then the content will not be displayed in the any of the Response Data panels. You can use to save the data in this case. Note that the response data will still be available in the sample result, so can still be accessed using Post-Processors.

If the response data is larger than 200K, then it won't be displayed. To change this limit, set the JMeter property view.results.tree.max_size. You can also use save the entire response to a file using .

The HTML view attempts to render the response as HTML. The rendered HTML is likely to compare poorly to the view one would get in any web browser; however, it does provide a quick approximation that is helpful for initial result evaluation. No images etc are downloaded. If the HTML (download embedded resources) option is selected, the renderer may download images and style-sheets etc referenced by the HTML.

The XML view will show response in tree style. Any DTD nodes or Prolog nodes will not show up in tree; however, response may contain those nodes.

The JSON view will show the response in tree style (also handles JSON embedded in JavaScript).

Most of the views also allow the displayed data to be searched; the result of the search will be high-lighted in the display above. For example the Control panel screenshot below shows one result of searching for "Java". Note that the search operates on the visible text, so you may get different results when searching the Text and HTML views.

The "Regexp Tester" view only works for text responses. It shows the plain text in the upper panel. The "Test" button allows the user to apply the Regular Expression to the upper panel and the results will be displayed in the lower panel. For example, the RE (JMeter\w*).* applied to the current JMeter home page gives the following output:

Match count: 26
Match[1][0]=JMeter - Apache JMeter&lt;/title>
Match[1][1]=JMeter
Match[2][0]=JMeter" title="JMeter" border="0"/>&lt;/a>
Match[2][1]=JMeter
Match[3][0]=JMeterCommitters">Contributors&lt;/a>
Match[3][1]=JMeterCommitters
... and so on ...

The first number in [] is the match number; the second number is the group. Group [0] is whatever matched the whole RE. Group [1] is whatever matched the 1st group, i.e. (JMeter\w*) in this case. See Figure 9b (below).

The Control Panel (above) shows an example of an HTML display. Figure 9 (below) shows an example of an XML display.

Figure 9 Sample XML display
Figure 9a Sample Regexp Test display

The aggregate report creates a table row for each differently named request in your test. For each request, it totals the response information and provides request count, min, max, average, error rate, approximate throughput (request/second) and Kilobytes per second throughput. Once the test is done, the throughput is the actual through for the duration of the entire test.

The thoughput is calculated from the point of view of the sampler target (e.g. the remote server in the case of HTTP samples). JMeter takes into account the total time over which the requests have been generated. If other samplers and timers are in the same thread, these will increase the total time, and therefore reduce the throughput value. So two identical samplers with different names will have half the throughput of two samplers with the same name. It is important to choose the sampler names correctly to get the best results from the Aggregate Report.

Calculation of the Median and 90% Line (90th percentile) values requires additional memory. For JMeter 2.3.4 and earlier, details of each sample were saved separately, which meant a lot of memory was needed. JMeter now combines samples with the same elapsed time, so far less memory is used. However, for samples that take more than a few seconds, the probability is that fewer samples will have identical times, in which case more memory will be needed. See the for a similar Listener that does not store individual samples and so needs constant memory.

  • Label - The label of the sample. If "Include group name in label?" is selected, then the name of the thread group is added as a prefix. This allows identical labels from different thread groups to be collated separately if required.
  • # Samples - The number of samples with the same label
  • Average - The average time of a set of results
  • Median - The median is the time in the middle of a set of results. 50% of the samples took no more than this time; the remainder took at least as long.
  • 90% Line - 90% of the samples took no more than this time. The remaining samples at least as long as this. (90th percentile)
  • Min - The shortest time for the samples with the same label
  • Max - The longest time for the samples with the same label
  • Error % - Percent of requests with errors
  • Throughput - the Throughput is measured in requests per second/minute/hour. The time unit is chosen so that the displayed rate is at least 1.0. When the throughput is saved to a CSV file, it is expressed in requests/second, i.e. 30.0 requests/minute is saved as 0.5.
  • Kb/sec - The throughput measured in Kilobytes per second

Times are in milliseconds.

The figure below shows an example of selecting the "Include group name" checkbox.

Sample "Include group name" display

This visualizer creates a row for every sample result. Like the , this visualizer uses a lot of memory.

By default, it only displays the main (parent) samples; it does not display the sub-samples (child samples). Versions of JMeter after 2.5.1 have a "Child Samples?" check-box. If this is selected, then the sub-samples are displayed instead of the main samples.

This listener can record results to a file but not to the UI. It is meant to provide an efficient means of recording data by eliminating GUI overhead. When running in non-GUI mode, the -l flag can be used to create a data file. The fields to save are defined by JMeter properties. See the jmeter.properties file for details.

Monitor Results is a new Visualizer for displaying server status. It is designed for Tomcat 5, but any servlet container can port the status servlet and use this monitor. There are two primary tabs for the monitor. The first is the "Health" tab, which will show the status of one or more servers. The second tab labled "Performance" shows the performance for one server for the last 1000 samples. The equations used for the load calculation is included in the Visualizer.

Currently, the primary limitation of the monitor is system memory. A quick benchmark of memory usage indicates a buffer of 1000 data points for 100 servers would take roughly 10Mb of RAM. On a 1.4Ghz centrino laptop with 1Gb of ram, the monitor should be able to handle several hundred servers.

As a general rule, monitoring production systems should take care to set an appropriate interval. Intervals shorter than 5 seconds are too aggressive and have a potential of impacting the server. With a buffer of 1000 data points at 5 second intervals, the monitor would check the server status 12 times a minute or 720 times a hour. This means the buffer shows the performance history of each machine for the last hour.

The monitor requires Tomcat 5 or above. Use a browser to check that you can access the Tomcat status servlet OK.

For a detailed description of how to use the monitor, please refer to Building a Monitor Test Plan

The distribution graph will display a bar for every unique response time. Since the granularity of System.currentTimeMillis() is 10 milliseconds, the 90% threshold should be within the width of the graph. The graph will draw two threshold lines: 50% and 90%. What this means is 50% of the response times finished between 0 and the line. The same is true of 90% line. Several tests with Tomcat were performed using 30 threads for 600K requests. The graph was able to display the distribution without any problems and both the 50% and 90% line were within the width of the graph. A performant application will generally produce results that clump together. A poorly written application that has memory leaks may result in wild fluctuations. In those situations, the threshold lines may be beyond the width of the graph. The recommended solution to this specific problem is fix the webapp so it performs well. If your test plan produces distribution graphs with no apparent clumping or pattern, it may indicate a memory leak. The only way to know for sure is to use a profiling tool.

The aggregate graph is similar to the aggregate report. The primary difference is the aggregate graph provides an easy way to generate bar graphs and save the graph as a PNG file.

The figure below shows an example of settings to draw this graph.

Aggregate graph settings

Please note: All this parameters aren't saved in JMeter jmx script.

  • Columns to display: Choose the column(s) to display in graph.
  • Rectangles color: Clic on right color rectangle open a popup dialog to choose a custom color for column.
  • Foreground color Allow to change the value text color.
  • Value font: Allow to define font settings for the text.
  • Draw outlines bar? To draw or not the border line on bar chart
  • Show number grouping? Show or not the number grouping in Y Axis labels.
  • Value labels vertical? Change orientation for value label. (Default is horizontal)
  • Column label selection: Filter by result label. A regular expression can be used, example: .*Transaction.*

    Before display the graph, click on Apply filter button to refresh internal data.
Define the graph's title on the head of chart. Empty value is the default value : "Aggregate Graph". The button Synchronize with name define the title with the label of the listener. And define font settings for graph title Compute the graph size by the width and height depending of the current JMeter's window size. Use Width and Height fields to define a custom size. The unit is pixel. Define the max length of X Axis label (in pixel). Define a custom maximum value for Y Axis. Define the placement and font settings for chart legend
The Response Time Graph draws a line chart showing the evolution of response time during the test, for each labelled request.

The figure below shows an example of settings to draw this graph.

Response time graph settings

Please note: All this parameters aren't saved in JMeter jmx script.

The time in milli-seconds for X axis interval. Before display the graph, click on Apply interval button to refresh internal data. Filter by result label. A regular expression can be used, ex..*Transaction.*. Before display the graph, click on Apply filter button to refresh internal data. Define the graph's title on the head of chart. Empty value is the default value : "Response Time Graph". The button Synchronize with name define the title with the label of the listener. And define font settings for graph title Define the width of the line. Define the type of each value point. Choose none to have a line without mark Compute the graph size by the width and height depending of the current JMeter's window size. Use Width and Height fields to define a custom size. The unit is pixel. Customize the date format of X axis label. The syntax is the Java SimpleDateFormat API. Define a custom maximum value for Y Axis. Show or not the number grouping in Y Axis labels. Define the placement and font settings for chart legend

The mailer visualizer can be set up to send email if a test run receives too many failed responses from the server.

Descriptive name for this element that is shown in the tree. Email address to send messages from. Email address to send messages to, comma-separated. Email subject line for success messages. Once this number of successful responses is exceeded after previously reaching the failure limit, a success email is sent. The mailer will thus only send out messages in a sequence of failed-succeeded-failed-succeeded, etc. Email subject line for fail messages. Once this number of failed responses is exceeded, a failure email is sent - i.e. set the count to 0 to send an e-mail on the first failure. IP address or host name of SMTP server (email redirector) server. Port of SMTP server (defaults to 25). Login used to authenticate. Password used to authenticate. Type of encryption for SMTP authentication (SSL, TLS or none). Press this button to send a test mail A field that keeps a running total of number of failures so far received.

The BeanShell Listener allows the use of BeanShell for processing samples for saving etc.

For full details on using BeanShell, please see the BeanShell website.

The test element supports the ThreadListener and TestListener methods. These should be defined in the initialisation file. See the file BeanShellListeners.bshrc for example definitions.

Descriptive name for this element that is shown in the tree. The name is stored in the script variable Label If this option is selected, then the interpreter will be recreated for each sample. This may be necessary for some long running scripts. For further information, see Best Practices - BeanShell scripting. Parameters to pass to the BeanShell script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • bsh.args - String array containing parameters, split on white-space
A file containing the BeanShell script to run. The file name is stored in the script variable FileName The BeanShell script to run. The return value is ignored.

Before invoking the script, some variables are set up in the BeanShell interpreter:

  • log - (Logger) - can be used to write to the log file
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResult, prev - (SampleResult) - gives access to the previous SampleResult
  • sampleEvent (SampleEvent) gives access to the current sample event

For details of all the methods available on each of the above variables, please check the Javadoc

If the property beanshell.listener.init is defined, this is used to load an initialisation file, which can be used to define methods etc for use in the BeanShell script.

The summary report creates a table row for each differently named request in your test. This is similar to the , except that it uses less memory.

The thoughput is calculated from the point of view of the sampler target (e.g. the remote server in the case of HTTP samples). JMeter takes into account the total time over which the requests have been generated. If other samplers and timers are in the same thread, these will increase the total time, and therefore reduce the throughput value. So two identical samplers with different names will have half the throughput of two samplers with the same name. It is important to choose the sampler labels correctly to get the best results from the Report.

  • Label - The label of the sample. If "Include group name in label?" is selected, then the name of the thread group is added as a prefix. This allows identical labels from different thread groups to be collated separately if required.
  • # Samples - The number of samples with the same label
  • Average - The average elapsed time of a set of results
  • Min - The lowest elapsed time for the samples with the same label
  • Max - The longest elapsed time for the samples with the same label
  • Std. Dev. - the Standard Deviation of the sample elapsed time
  • Error % - Percent of requests with errors
  • Throughput - the Throughput is measured in requests per second/minute/hour. The time unit is chosen so that the displayed rate is at least 1.0. When the throughput is saved to a CSV file, it is expressed in requests/second, i.e. 30.0 requests/minute is saved as 0.5.
  • Kb/sec - The throughput measured in Kilobytes per second
  • Avg. Bytes - average size of the sample response in bytes. (in JMeter 2.2 it wrongly showed the value in kB)

Times are in milliseconds.

The figure below shows an example of selecting the "Include group name" checkbox.

Sample "Include group name" display

This test element can be placed anywhere in the test plan. For each sample in its scope, it will create a file of the response Data. The primary use for this is in creating functional tests, but it can also be useful where the response is too large to be displayed in the Listener. The file name is created from the specified prefix, plus a number (unless this is disabled, see below). The file extension is created from the document type, if known. If not known, the file extension is set to 'unknown'. If numbering is disabled, and adding a suffix is disabled, then the file prefix is taken as the entire file name. This allows a fixed file name to be generated if required. The generated file name is stored in the sample response, and can be saved in the test log output file if required.

The current sample is saved first, followed by any sub-samples (child samples). If a variable name is provided, then the names of the files are saved in the order that the sub-samples appear. See below.

Descriptive name for this element that is shown in the tree. Prefix for the generated file names; this can include a directory name. Relative paths are resolved relative to the current working directory (which defaults to the bin/ directory). Versions of JMeter after 2.4 also support paths relative to the directory containing the current test plan (JMX file). If the path name begins with "~/" (or whatever is in the jmeter.save.saveservice.base_prefix JMeter property), then the path is assumed to be relative to the JMX file location. Name of a variable in which to save the generated file name (so it can be used later in the test plan). If there are sub-samples then a numeric suffix is added to the variable name. E.g. if the variable name is FILENAME, then the parent sample file name is saved in the variable FILENAME, and the filenames for the child samplers are saved in FILENAME1, FILENAME2 etc. If selected, then only failed responses are saved If selected, then only successful responses are saved If selected, then no number is added to the prefix. If you select this option, make sure that the prefix is unique or the file may be overwritten. If selected, then no suffix is added. If you select this option, make sure that the prefix is unique or the file may be overwritten.

The BSF Listener allows BSF script code to be applied to sample results.

Descriptive name for this element that is shown in the tree. The BSF language to be used Parameters to pass to the script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • args - String array containing parameters, split on white-space
A file containing the script to run. The script to run.

The script (or file) is processed using the BSFEngine.exec() method, which does not return a value.

Before invoking the script, some variables are set up. Note that these are BSF variables - i.e. they can be used directly in the script.

  • log - (Logger) - can be used to write to the log file
  • Label - the String Label
  • Filename - the script file name (if any)
  • Parameters - the parameters (as a String)
  • args[] - the parameters as a String array (split on whitespace)
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object()); vars.getObject("OBJ2");
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • sampleResult, prev - (SampleResult) - gives access to the SampleResult
  • sampleEvent - (SampleEvent) - gives access to the SampleEvent
  • sampler - (Sampler)- gives access to the last sampler
  • OUT - System.out - e.g. OUT.println("message")

For details of all the methods available on each of the above variables, please check the Javadoc

The JSR223 Listener allows JSR223 script code to be applied to sample results. For details, see .

This test element can be placed anywhere in the test plan. Generates a summary of the test run so far to the log file and/or standard output. Both running and differential totals are shown. Output is generated every n seconds (default 3 minutes) on the appropriate time boundary, so that multiple test runs on the same time will be synchronised. See jmeter.properties file for the summariser configuration items:
# Define the following property to automatically start a summariser with that name
# (applies to non-GUI mode only)
#summariser.name=summary
#
# interval between summaries (in seconds) default 3 minutes
#summariser.interval=180
#
# Write messages to log file
#summariser.log=true
#
# Write messages to System.out
#summariser.out=true
This element is mainly intended for batch (non-GUI) runs. The output looks like the following:
label +   171 in  20.3s =    8.4/s Avg:  1129 Min:  1000 Max:  1250 Err:     0 (0.00%)
label +   263 in  31.3s =    8.4/s Avg:  1138 Min:  1000 Max:  1250 Err:     0 (0.00%)
label =   434 in  50.4s =    8.6/s Avg:  1135 Min:  1000 Max:  1250 Err:     0 (0.00%)
label +   263 in  31.0s =    8.5/s Avg:  1138 Min:  1000 Max:  1250 Err:     0 (0.00%)
label =   697 in  80.3s =    8.7/s Avg:  1136 Min:  1000 Max:  1250 Err:     0 (0.00%)
label +   109 in  12.4s =    8.8/s Avg:  1092 Min:    47 Max:  1250 Err:     0 (0.00%)
label =   806 in  91.6s =    8.8/s Avg:  1130 Min:    47 Max:  1250 Err:     0 (0.00%)
The "label" is the the name of the element. The "+" means that the line is a delta line, i.e. shows the changes since the last output. The "=" means that the line is a totals line, i.e. it shows the running total. Entries in the jmeter log file also include time-stamps. The example "806 in 91.6s = 8.8/s" means that there were 806 samples recorded in 91.6 seconds, and that works out at 8.8 samples per second. The Avg (Average), Min(imum) and Max(imum) times are in milliseconds. "Err" means number of errors (also shown as percentage). The last two lines will appear at the end of a test. They will not be synchronised to the appropriate time boundary. Note that the initial and final deltas may be for less than the interval (in the example above this is 30 seconds). The first delta will generally be lower, as JMeter synchronises to the interval boundary. The last delta will be lower, as the test will generally not finish on an exact interval boundary.

The label is used to group sample results together. So if you have multiple Thread Groups and want to summarize across them all, then use the same label - or add the summariser to the Test Plan (so all thread groups are in scope). Different summary groupings can be implemented by using suitable labels and adding the summarisers to appropriate parts of the test plan.

Descriptive name for this element that is shown in the tree. It appears as the "label" in the output. Details for all elements with the same label will be added together.
The Comparison Assertion Visualizer shows the results of any elements. Descriptive name for this element that is shown in the tree. ^


Configuration elements can be used to set up defaults and variables for later use by samplers. Note that these elements are processed at the start of the scope in which they are found, i.e. before any samplers in the same scope.

CSV Data Set Config is used to read lines from a file, and split them into variables. It is easier to use than the __CSVRead() and _StringFromFile() functions. It is well suited to handling large numbers of variables, and is also useful for tesing with "random" and unique values. Generating unique random values at run-time is expensive in terms of CPU and memory, so just create the data in advance of the test. If necessary, the "random" data from the file can be used in conjunction with a run-time parameter to create different sets of values from each run - e.g. using concatenation - which is much cheaper than generating everything at run-time.

Versions of JMeter after 2.3.1 allow values to be quoted; this allows the value to contain a delimiter. Previously it was necessary to choose a delimiter that was not used in any values. If "allow quoted data" is enabled, a value may be enclosed in double-quotes. These are removed. To include double-quotes within a quoted field, use two double-quotes. For example:

1,"2,3","4""5" =>
1
2,3
4"5

Versions of JMeter after 2.3.4 support CSV files which have a header line defining the column names. To enable this, leave the "Variable Names" field empty. The correct delimiter must be provided.

Versions of JMeter after 2.7 support CSV files with quoted data that includes new-lines.

By default, the file is only opened once, and each thread will use a different line from the file. However the order in which lines are passed to threads depends on the order in which they execute, which may vary between iterations. Lines are read at the start of each test iteration. The file name and mode are resolved in the first iteration.

See the description of the Share mode below for additional options (JMeter 2.3.2+). If you want each thread to have its own set of values, then you will need to create a set of files, one for each thread. For example test1.csv, test2.csv,... testn.csv. Use the filename test${__threadNum}.csv and set the "Sharing mode" to "Current thread".

CSV Dataset variables are defined at the start of each test iteration. As this is after configuration processing is completed, they cannot be used for some configuration items - such as JDBC Config - that process their contents at configuration time (see Bug 40394 ) However the variables do work in the HTTP Auth Manager, as the username etc are processed at run-time.

As a special case, the string "\t" (without quotes) in the delimiter field is treated as a Tab.

When the end of file (EOF) is reached, and the recycle option is true, reading starts again with the first line of the file.

If the recycle option is false, and stopThread is false, then all the variables are set to &lt;EOF> when the end of file is reached. This value can be changed by setting the JMeter property csvdataset.eofstring.

If the Recycle option is false, and Stop Thread is true, then reaching EOF will cause the thread to be stopped.

Descriptive name for this element that is shown in the tree. Name of the file to be read. Relative file names are resolved with respect to the path of the active test plan. Absolute file names are also supported, but note that they are unlikely to work in remote mode, unless the remote server has the same directory structure. If the same physical file is referenced in two different ways - e.g. csvdata.txt and ./csvdata.txt - then these are treated as different files. If the OS does not distinguish between upper and lower case, csvData.TXT would also be opened separately. The encoding to be used to read the file, if not the platform default. List of variable names (comma-delimited). Versions of JMeter after 2.3.4 support CSV header lines: if the variable name field empty, then the first line of the file is read and interpreted as the list of column names. The names must be separated by the delimiter character. They can be quoted using double-quotes. Delimiter to be used to split the records in the file. If there are fewer values on the line than there are variables the remaining variables are not updated - so they will retain their previous value (if any). Should the CSV file allow values to be quoted? If enabled, then values can be enclosed in " - double-quote - allowing values to contain a delimeter. Should the file be re-read from the beginning on reaching EOF? (default is true) Should the thread be stopped on EOF, if Recycle is false? (default is false)
  • All threads - (the default) the file is shared between all the threads.
  • Current thread group - each file is opened once for each thread group in which the element appears
  • Current thread - each file is opened separately for each thread
  • Identifier - all threads sharing the same identifier share the same file. So for example if you have 4 thread groups, you could use a common id for two or more of the groups to share the file between them. Or you could use the thread number to share the file between the same thread numbers in different thread groups.
If there is more than one Authorization Manager in the scope of a Sampler, there is currently no way to specify which one is to be used.

The Authorization Manager lets you specify one or more user logins for web pages that are restricted using server authentication. You see this type of authentication when you use your browser to access a restricted page, and your browser displays a login dialog box. JMeter transmits the login information when it encounters this type of page.

The Authorisation headers are not shown in the Tree View Listener.

In versions of JMeter after 2.2, the HttpClient sampler defaults to pre-emptive authentication if the setting has not been defined. To disable this, set the values as below, in which case authentication will only be performed in response to a challenge.

jmeter.properties:
httpclient.parameters.file=httpclient.parameters

httpclient.parameters:
http.authentication.preemptive$Boolean=false
Note: the above settings only apply to the HttpClient sampler (and the SOAP samplers, which use Httpclient).

When looking for a match against a URL, JMeter checks each entry in turn, and stops when it finds the first match. Thus the most specific URLs should appear first in the list, followed by less specific ones. Duplicate URLs will be ignored. If you want to use different usernames/passwords for different threads, you can use variables. These can be set up using a Element (for example).
Descriptive name for this element that is shown in the tree. A partial or complete URL that matches one or more HTTP Request URLs. As an example, say you specify a Base URL of "http://jmeter.apache.org/restricted/" with a username of "jmeter" and a password of "jmeter". If you send an HTTP request to the URL "http://jmeter.apache.org/restricted/ant/myPage.html", the Authorization Manager sends the login information for the user named, "jmeter". The username to authorize. The password for the user. (N.B. this is stored unencrypted in the test plan) The domain to use for NTLM. The realm to use for NTLM. The Realm only applies to the HttpClient sampler. In JMeter 2.2, the domain and realm did not have separate columns, and were encoded as part of the user name in the form: [domain\]username[@realm]. This was an experimental feature and has been removed.

Controls:
  • Add Button - Add an entry to the authorization table.
  • Delete Button - Delete the currently selected table entry.
  • Load Button - Load a previously saved authorization table and add the entries to the existing authorization table entries.
  • Save As Button - Save the current authorization table to a file.
When you save the Test Plan, JMeter automatically saves all of the authorization table entries - including any passwords, which are not encrypted.

Download this example. In this example, we created a Test Plan on a local server that sends three HTTP requests, two requiring a login and the other is open to everyone. See figure 10 to see the makeup of our Test Plan. On our server, we have a restricted directory named, "secret", which contains two files, "index.html" and "index2.html". We created a login id named, "kevin", which has a password of "spot". So, in our Authorization Manager, we created an entry for the restricted directory and a username and password (see figure 11). The two HTTP requests named "SecretPage1" and "SecretPage2" make requests to "/secret/index.html" and "/secret/index2.html". The other HTTP request, named "NoSecretPage" makes a request to "/index.html".

Figure 10 - Test Plan
Figure 11 - Authorization Manager Control Panel

When we run the Test Plan, JMeter looks in the Authorization table for the URL it is requesting. If the Base URL matches the URL, then JMeter passes this information along with the request.

You can download the Test Plan, but since it is built as a test for our local server, you will not be able to run it. However, you can use it as a reference in constructing your own Test Plan.
This is a new element, and is liable to change

The HTTP Cache Manager is used to add caching functionality to HTTP requests within its scope.

If a sample is successful (i.e. has response code 2xx) then the Last-Modified and Etag (and Expired if relevant) values are saved for the URL. Before executing the next sample, the sampler checks to see if there is an entry in the cache, and if so, the If-Last-Modified and If-None-Match conditional headers are set for the request.

Additionally, if the "Use Cache-Control/Expires header" option is selected, then the Cache-Control/Expires value is checked against the current time. If the request is a GET request, and the timestamp is in the future, then the sampler returns immediately, without requesting the URL from the remote server. This is intended to emulate browser behaviour. Note that if Cache-Control header is "no-cache", the response will be stored in cache as pre-expired, so will generate a conditional GET request. If Cache-Control has any other value, the "max-age" expiry option is processed to compute entry lifetime, if missing then expire header will be used, if also missing entry will be cached as specified in RFC 2616 section 13.2.4. using Last-Modified time and response Date.

By default, Cache Manager will store up to 5000 items in cache using LRU algorithm. Use property to modify this value. Note that the more you increase this value the more HTTP Cache Manager will consume memory, so be sure to adapt -Xmx option.

If the requested document has not changed since it was cached, then the response body will be empty. Likewise if the Expires date is in the future. This may cause problems for Assertions.

Descriptive name for this element that is shown in the tree. If selected, then the cache is cleared at the start of the thread. See description above. See description above.
If there is more than one Cookie Manager in the scope of a Sampler, there is currently no way to specify which one is to be used. Also, a cookie stored in one cookie manager is not available to any other manager, so use multiple Cookie Managers with care.

The Cookie Manager element has two functions:

First, it stores and sends cookies just like a web browser. If you have an HTTP Request and the response contains a cookie, the Cookie Manager automatically stores that cookie and will use it for all future requests to that particular web site. Each JMeter thread has its own "cookie storage area". So, if you are testing a web site that uses a cookie for storing session information, each JMeter thread will have its own session. Note that such cookies do not appear on the Cookie Manager display, but they can be seen using the Listener.

JMeter version 2.3.2 and earlier did not check that received cookies were valid for the URL. This meant that cross-domain cookies were stored, and might be used later. This has been fixed in later versions. To revert to the earlier behaviour, define the JMeter property "CookieManager.check.cookies=false".

Received Cookies can be stored as JMeter thread variables (versions of JMeter after 2.3.2 no longer do this by default). To save cookies as variables, define the property "CookieManager.save.cookies=true". Also, cookies names are prefixed with "COOKIE_" before they are stored (this avoids accidental corruption of local variables) To revert to the original behaviour, define the property "CookieManager.name.prefix= " (one or more spaces). If enabled, the value of a cookie with the name TEST can be referred to as ${COOKIE_TEST}.

Second, you can manually add a cookie to the Cookie Manager. However, if you do this, the cookie will be shared by all JMeter threads.

Note that such Cookies are created with an Expiration time far in the future

Since version 2.0.3, cookies with null values are ignored by default. This can be changed by setting the JMeter property: CookieManager.delete_null_cookies=false. Note that this also applies to manually defined cookies - any such cookies will be removed from the display when it is updated. Note also that the cookie name must be unique - if a second cookie is defined with the same name, it will replace the first.

Descriptive name for this element that is shown in the tree. If selected, all server-defined cookies are cleared each time the main Thread Group loop is executed. In JMeter versions after 2.3, any cookies defined in the GUI are not cleared. The cookie policy that will be used to manage the cookies. "compatibility" is the default, and should work in most cases. See http://hc.apache.org/httpclient-3.x/cookies.html and http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/cookie/CookiePolicy.html [Note: "ignoreCookies" is equivalent to omitting the CookieManager.] HC3CookieHandler (HttpClient 3.1 API) or HC4CookieHandler (HttpClient 4 API). Default is HC3CookieHandler.

[Note: If your have a website to test with IPv6 address, choose HC4CookieHandler (IPv6 compliant)]
This gives you the opportunity to use hardcoded cookies that will be used by all threads during the test execution.

The "domain" is the hostname of the server (without http://); the port is currently ignored.
Add an entry to the cookie table. Delete the currently selected table entry. Load a previously saved cookie table and add the entries to the existing cookie table entries. Save the current cookie table to a file (does not save any cookies extracted from HTTP Responses).

This element lets you set default values that your HTTP Request controllers use. For example, if you are creating a Test Plan with 25 HTTP Request controllers and all of the requests are being sent to the same server, you could add a single HTTP Request Defaults element with the "Server Name or IP" field filled in. Then, when you add the 25 HTTP Request controllers, leave the "Server Name or IP" field empty. The controllers will inherit this field value from the HTTP Request Defaults element.

In JMeter 2.2 and earlier, port 80 was treated specially - it was ignored if the sampler used the https protocol. JMeter 2.3 and later treat all port values equally; a sampler that does not specify a port will use the HTTP Request Defaults port, if one is provided.
Descriptive name for this element that is shown in the tree. Domain name or IP address of the web server. e.g. www.example.com. [Do not include the http:// prefix. Port the web server is listening to. Connection Timeout. Number of milliseconds to wait for a connection to open. Requires Java 1.5 or later when using the default Java HTTP implementation. Response Timeout. Number of milliseconds to wait for a response. Requires Java 1.5 or later when using the default Java HTTP implementation. Java, HttpClient3.1, HttpClient4. If not specified the default depends on the value of the JMeter property jmeter.httpsampler, failing that, the Java implementation is used. HTTP or HTTPS. HTTP GET or HTTP POST. The path to resource (for example, /servlets/myServlet). If the resource requires query string parameters, add them below in the "Send Parameters With the Request" section. Note that the path is the default for the full path, not a prefix to be applied to paths specified on the HTTP Request screens. The query string will be generated from the list of parameters you provide. Each parameter has a name and value. The query string will be generated in the correct fashion, depending on the choice of "Method" you made (ie if you chose GET, the query string will be appended to the URL, if POST, then it will be sent separately). Also, if you are sending a file using a multipart form, the query string will be created using the multipart form specifications. Hostname or IP address of a proxy server to perform request. [Do not include the http:// prefix.] Port the proxy server is listening to. (Optional) username for proxy server. (Optional) password for proxy server. (N.B. this is stored unencrypted in the test plan) Tell JMeter to parse the HTML file and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSSs, etc. referenced in the file. Use a pool of concurrent connections to get embedded resources. Pool size for concurrent connections used to get embedded resources. If present, this must be a regular expression that is used to match against any embedded URLs found. So if you only want to download embedded resources from http://example.com/, use the expression: http://example\.com/.* Note: radio buttons only have two states - on or off. This makes it impossible to override settings consistently - does off mean off, or does it mean use the current default? JMeter uses the latter (otherwise defaults would not work at all). So if the button is off, then a later element can set it on, but if the button is on, a later element cannot set it off.

The Header Manager lets you add or override HTTP request headers.

Versions of JMeter up to 2.3.2 supported only one Header Manager per sampler; if there were more in scope, then only the last one would be used.

JMeter now supports multiple Header Managers. The header entries are merged to form the list for the sampler. If an entry to be merged matches an existing header name, it replaces the previous entry, unless the entry value is empty, in which case any existing entry is removed. This allows one to set up a default set of headers, and apply adjustments to particular samplers.

Descriptive name for this element that is shown in the tree. Name of the request header. Two common request headers you may want to experiment with are "User-Agent" and "Referer". Request header value. Add an entry to the header table. Delete the currently selected table entry. Load a previously saved header table and add the entries to the existing header table entries. Save the current header table to a file.

Download this example. In this example, we created a Test Plan that tells JMeter to override the default "User-Agent" request header and use a particular Internet Explorer agent string instead. (see figures 12 and 13).

Figure 12 - Test Plan
Figure 13 - Header Manager Control Panel

The Java Request Defaults component lets you set default values for Java testing. See the .

Creates a database connection (used by Sampler) from the supplied JDBC Connection settings. The connection may be optionally pooled between threads. Otherwise each thread gets its own connection. The connection configuration name is used by the JDBC Sampler to select the appropriate connection. Descriptive name for the connection configuration that is shown in the tree. The name of the variable the connection is tied to. Multiple connections can be used, each tied to a different variable, allowing JDBC Samplers to select the appropriate connection. Each name must be different. If there are two configuration elements using the same name, only one will be saved. JMeter versions after 2.3 log a message if a duplicate name is detected. Maximum number of connections allowed in the pool. In most cases, set this to zero (0). This means that each thread will get its own pool with a single connection in it, i.e. the connections are not shared betweeen threads.
If you really want to use shared pooling (why?), then set the max count to the same as the number of threads to ensure threads don't wait on each other.
Pool throws an error if the timeout period is exceeded in the process of trying to retrieve a connection Uncertain what exactly this does. Turn auto commit on or off for the connections. Uncertain what exactly this does. Uncertain what exactly this does. A simple query used to determine if the database is still responding. JDBC Connection string for the database. Fully qualified name of driver class. (Must be in JMeter's classpath - easiest to copy .jar file into JMeter's /lib directory). Name of user to connect as. Password to connect with. (N.B. this is stored unencrypted in the test plan)

Different databases and JDBC drivers require different JDBC settings. The Database URL and JDBC Driver class are defined by the provider of the JDBC implementation.

Some possible settings are shown below. Please check the exact details in the JDBC driver documentation.

If JMeter reports No suitable driver, then this could mean either:

  • The driver class was not found. In this case, there will be a log message such as DataSourceElement: Could not load driver: {classname} java.lang.ClassNotFoundException: {classname}
  • The driver class was found, but the class does not support the connection string. This could be because of a syntax error in the connection string, or because the the wrong classname was used.
If the database server is not running or is not accessible, then JMeter will report a java.net.ConnectException.

DatabaseDriver classDatabase URL
MySQLcom.mysql.jdbc.Driverjdbc:mysql://host[:port]/dbname
PostgreSQLorg.postgresql.Driverjdbc:postgresql:{dbname}
Oracleoracle.jdbc.OracleDriverjdbc:oracle:thin:@//host:port/service OR
jdbc:oracle:thin:@(description=(address=(host={mc-name})(protocol=tcp)(port={port-no}))(connect_data=(sid={sid})))
Ingres (2006)ingres.jdbc.IngresDriverjdbc:ingres://host:port/db[;attr=value]
SQL Server (MS JDBC driver)com.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:sqlserver://host:port;DatabaseName=dbname
Apache Derbyorg.apache.derby.jdbc.ClientDriverjdbc:derby://server[:port]/databaseName[;URLAttributes=value[;...]]
The above may not be correct - please check the relevant JDBC driver documentation.

The Keystore Config Element lets you configure how Keystore will be loaded and which keys it will use. This component is typically used in HTTPS scenarios where you don't want to take into account keystore initialization into account in response time.

To use this element, you need to setup first a Java Key Store with the client certificates you want to test, to do that:

  1. Create your certificates either with Java keytool utility or through your PKI
  2. If created by PKI, import your keys in Java Key Store by converting them to a format acceptable by JKS
  3. Then reference the keystore file through the 2 JVM properties (or add them in system.properties):
    • -Djavax.net.ssl.keyStore=path_to_keystore
    • -Djavax.net.ssl.keyStorePassword=password_of_keystore

Descriptive name for this element that is shown in the tree. Wether or not to preload Keystore. The index of the first key to use in Keystore, 0-based. The index of the last key to use in Keystore, 0-based. To make JMeter use more than one certificate you need to ensure that:
  • https.use.cached.ssl.context=false is set in jmeter.properties or user.properties
  • You use either HTTPClient 3.1 or 4 implementations for HTTP Request

The Login Config Element lets you add or override username and password settings in samplers that use username and password as part of their setup.

Descriptive name for this element that is shown in the tree. The default username to use. The default password to use. (N.B. this is stored unencrypted in the test plan)

The LDAP Request Defaults component lets you set default values for LDAP testing. See the .

The LDAP Extended Request Defaults component lets you set default values for extended LDAP testing. See the .

The TCP Sampler Config provides default data for the TCP Sampler

Descriptive name for this element that is shown in the tree. Name of the TCPClient class. Defaults to the property tcp.handler, failing that TCPClientImpl. Name or IP of TCP server Port to be used If selected, the connection is kept open. Otherwise it is closed when the data has been read. Connect Timeout (milliseconds, 0 disables). Response Timeout (milliseconds, 0 disables). Should the nodelay property be set? Text to be sent

The User Defined Variables element lets you define an initial set of variables, just as in the . Note that all the UDV elements in a test plan - no matter where they are - are processed at the start. So you cannot reference variables which are defined as part of a test run, e.g. in a Post-Processor.

UDVs should not be used with functions that generate different results each time they are called. Only the result of the first function call will be saved in the variable. However, UDVs can be used with functions such as __P(), for example:

HOST      ${__P(host,localhost)} 
which would define the variable "HOST" to have the value of the JMeter property "host", defaulting to "localhost" if not defined.

For defining variables during a test run, see . UDVs are processed in the order they appear in the Plan, from top to bottom.

For simplicity, it is suggested that UDVs are placed only at the start of a Thread Group (or perhaps under the Test Plan itself).

Once the Test Plan and all UDVs have been processed, the resulting set of variables is copied to each thread to provide the initial set of variables.

If a runtime element such as a User Parameters Pre-Processor or Regular Expression Extractor defines a variable with the same name as one of the UDV variables, then this will replace the initial value, and all other test elements in the thread will see the updated value.

If you have more than one Thread Group, make sure you use different names for different values, as UDVs are shared between Thread Groups. Also, the variables are not available for use until after the element has been processed, so you cannot reference variables that are defined in the same element. You can reference variables defined in earlier UDVs or on the Test Plan. Descriptive name for this element that is shown in the tree. Variable name/value pairs. The string under the "Name" column is what you'll need to place inside the brackets in ${...} constructs to use the variables later on. The whole ${...} will then be replaced by the string in the "Value" column.

The Random Variable Config Element is used to generate random numeric strings and store them in variable for use later. It's simpler than using together with the __Random() function.

The output variable is constructed by using the random number generator, and then the resulting number is formatted using the format string. The number is calculated using the formula minimum+Random.nextInt(maximum-minimum+1). Random.nextInt() requires a positive integer. This means that maximum-minimum - i.e. the range - must be less than 2147483647, however the minimum and maximum values can be any long values so long as the range is OK.

Descriptive name for this element that is shown in the tree. The name of the variable in which to store the random string. The java.text.DecimalFormat format string to be used. For example "000" which will generate numbers with at least 3 digits, or "USER_000" which will generate output of the form USER_nnn. If not specified, the default is to generate the number using Long.toString() The minimum value (long) of the generated random number. The maximum value (long) of the generated random number. The seed for the random number generator. Default is the current time in milliseconds. If False, the generator is shared between all threads in the thread group. If True, then each thread has its own random generator.

Allows the user to create a counter that can be referenced anywhere in the Thread Group. The counter config lets the user configure a starting point, a maximum, and the increment. The counter will loop from the start to the max, and then start over with the start, continuing on like that until the test is ended.

From version 2.1.2, the counter now uses a long to store the value, so the range is from -2^63 to 2^63-1.

Descriptive name for this element that is shown in the tree. The starting number for the counter. The counter will equal this number during the first iteration. How much to increment the counter by after each iteration. If the counter exceeds the maximum, then it is reset to the Start value. For versions after 2.2 the default is Long.MAX_VALUE (previously it was 0). Optional format, e.g. 000 will format as 001, 002 etc. This is passed to DecimalFormat, so any valid formats can be used. If there is a problem interpreting the format, then it is ignored. [The default format is generated using Long.toString()] This controls how you refer to this value in other elements. Syntax is as in user-defined values: $(reference_name}. In other words, is this a global counter, or does each user get their own counter? If unchecked, the counter is global (ie, user #1 will get value "1", and user #2 will get value "2" on the first iteration). If checked, each user has an independent counter. This option is only available when counter is tracked per User, if checked, counter will be reset to Start value on each Thread Group iteration. This can be useful when Counter is inside a Loop Controller.

The Simple Config Element lets you add or override arbitrary values in samplers. You can choose the name of the value and the value itself. Although some adventurous users might find a use for this element, it's here primarily for developers as a basic GUI that they can use while developing new JMeter components.

Descriptive name for this element that is shown in the tree. The name of each parameter. These values are internal to JMeter's workings and are not generally documented. Only those familiar with the code will know these values. The value to apply to that parameter.
^

Assertions are used to perform additional checks on samplers, and are processed after every sampler in the same scope. To ensure that an Assertion is applied only to a particular sampler, add it as a child of the sampler.

Note: Unless documented otherwise, Assertions are not applied to sub-samples (child samples) - only to the parent sample. In the case of BSF and BeanShell Assertions, the script can retrieve sub-samples using the method prev.getSubResults() which returns an array of SampleResults. The array will be empty if there are none.

Versions of JMeter after 2.3.2 include the option to apply certain assertions to either the main sample, the sub-samples or both. The default is to apply the assertion to the main sample only. If the Assertion supports this option, then there will be an entry on the GUI which looks like the following:

Assertion Scope
or the following
Assertion Scope
If a sub-sampler fails and the main sample is successful, then the main sample will be set to failed status and an Assertion Result will be added. If the JMeter variable option is used, it is assumed to relate to the main sample, and any failure will be applied to the main sample only.

The variable JMeterThread.last_sample_ok is updated to "true" or "false" after all assertions for a sampler have been run.

The response assertion control panel lets you add pattern strings to be compared against various fields of the response. The pattern strings are:

  • Contains, Matches: Perl5-style regular expressions
  • Equals, Substring: plain text, case-sensitive

A summary of the pattern matching characters can be found at http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html

You can also choose whether the strings will be expected to match the entire response, or if the response is only expected to contain the pattern. You can attach multiple assertions to any controller for additional flexibility.

Note that the pattern string should not include the enclosing delimiters, i.e. use Price: \d+ not /Price: \d+/.

By default, the pattern is in multi-line mode, which means that the "." meta-character does not match newline. In multi-line mode, "^" and "$" match the start or end of any line anywhere within the string - not just the start and end of the entire string. Note that \s does match new-line. Case is also significant. To override these settings, one can use the extended regular expression syntax. For example:

	(?i) - ignore case
	(?s) - treat target as single line, i.e. "." matches new-line
	(?is) - both the above
    These can be used anywhere within the expression and remain in effect until overriden.  e.g.
    (?i)apple(?-i) Pie - matches "ApPLe Pie", but not "ApPLe pIe"
    (?s)Apple.+?Pie - matches Apple followed by Pie, which may be on a subsequent line.
    Apple(?s).+?Pie - same as above, but it's probably clearer to use the (?s) at the start.  
Descriptive name for this element that is shown in the tree. This is for use with samplers that can generate sub-samples, e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
  • Main sample only - assertion only applies to the main sample
  • Sub-samples only - assertion only applies to the sub-samples
  • Main sample and sub-samples - assertion applies to both.
  • JMeter Variable - assertion is to be applied to the contents of the named variable
Instructs JMeter which field of the Response to test.
  • Text Response - the response text from the server, i.e. the body, excluing any HTTP headers.
  • URL sampled
  • Response Code - e.g. 200
  • Response Message - e.g. OK
  • Response Headers, including Set-Cookie headers (if any)
Instructs JMeter to set the status to success initially.

The overall success of the sample is determined by combining the result of the assertion with the existing Response status. When the Ignore Status checkbox is selected, the Response status is forced to successful before evaluating the Assertion.

HTTP Responses with statuses in the 4xx and 5xx ranges are normally regarded as unsuccessful. The "Ignore status" checkbox can be used to set the status successful before performing further checks. Note that this will have the effect of clearing any previous assertion failures, so make sure that this is only set on the first assertion.
Indicates how the text being tested is checked against the pattern.
  • Contains - true if the text contains the regular expression pattern
  • Matches - true if the whole text matches the regular expression pattern
  • Equals - true if the whole text equals the pattern string (case-sensitive)
  • Substring - true if the text contains the pattern string (case-sensitive)
Equals and Substring patterns are plain strings, not regular expressions. NOT may also be selected to invert the result of the check.
A list of patterns to be tested. Each pattern is tested separately. If a pattern fails, then further patterns are not checked. There is no difference between setting up one Assertion with multiple patterns and setting up multiple Assertions with one pattern each (assuming the other options are the same). However, when the Ignore Status checkbox is selected, this has the effect of cancelling any previous assertion failures - so make sure that the Ignore Status checkbox is only used on the first Assertion.

The pattern is a Perl5-style regular expression, but without the enclosing brackets.

Figure 14 - Test Plan
Figure 15 - Assertion Control Panel with Pattern
Figure 16 - Assertion Listener Results (Pass)
Figure 17 - Assertion Listener Results (Fail)

The Duration Assertion tests that each response was received within a given amount of time. Any response that takes longer than the given number of milliseconds (specified by the user) is marked as a failed response.

Descriptive name for this element that is shown in the tree. The maximum number of milliseconds each response is allowed before being marked as failed.

The Size Assertion tests that each response contains the right number of bytes in it. You can specify that the size be equal to, greater than, less than, or not equal to a given number of bytes.

Since JMeter 2.3RC3, an empty response is treated as being 0 bytes rather than reported as an error.
Descriptive name for this element that is shown in the tree. This is for use with samplers that can generate sub-samples, e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
  • Main sample only - assertion only applies to the main sample
  • Sub-samples only - assertion only applies to the sub-samples
  • Main sample and sub-samples - assertion applies to both.
  • JMeter Variable - assertion is to be applied to the contents of the named variable
The number of bytes to use in testing the size of the response (or value of the JMeter variable). Whether to test that the response is equal to, greater than, less than, or not equal to, the number of bytes specified.

The XML Assertion tests that the response data consists of a formally correct XML document. It does not validate the XML based on a DTD or schema or do any further validation.

Descriptive name for this element that is shown in the tree.

The BeanShell Assertion allows the user to perform assertion checking using a BeanShell script.

For full details on using BeanShell, please see the BeanShell website.

Note that a different Interpreter is used for each independent occurence of the assertion in each thread in a test script, but the same Interpreter is used for subsequent invocations. This means that variables persist across calls to the assertion.

All Assertions are called from the same thread as the sampler.

If the property "beanshell.assertion.init" is defined, it is passed to the Interpreter as the name of a sourced file. This can be used to define common methods and variables. There is a sample init file in the bin directory: BeanShellAssertion.bshrc

The test element supports the ThreadListener and TestListener methods. These should be defined in the initialisation file. See the file BeanShellListeners.bshrc for example definitions.

Descriptive name for this element that is shown in the tree. The name is stored in the script variable Label If this option is selected, then the interpreter will be recreated for each sample. This may be necessary for some long running scripts. For further information, see Best Practices - BeanShell scripting. Parameters to pass to the BeanShell script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • bsh.args - String array containing parameters, split on white-space
A file containing the BeanShell script to run. This overrides the script. The file name is stored in the script variable FileName The BeanShell script to run. The return value is ignored.

There's a sample script you can try.

Before invoking the script, some variables are set up in the BeanShell interpreter. These are strings unless otherwise noted:

  • log - the Logger Object. (e.g.) log.warn("Message"[,Throwable])
  • SampleResult - the SampleResult Object; read-write
  • Response - the response Object; read-write
  • Failure - boolean; read-write; used to set the Assertion status
  • FailureMessage - String; read-write; used to set the Assertion message
  • ResponseData - the response body (byte [])
  • ResponseCode - e.g. 200
  • ResponseMessage - e.g. OK
  • ResponseHeaders - contains the HTTP headers
  • RequestHeaders - contains the HTTP headers sent to the server
  • SampleLabel
  • SamplerData - data that was sent to the server
  • ctx - JMeterContext
  • vars - JMeterVariables - e.g. vars.get("VAR1"); vars.put("VAR2","value"); vars.putObject("OBJ1",new Object());
  • props - JMeterProperties (class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");

The following methods of the Response object may be useful:

  • setStopThread(boolean)
  • setStopTest(boolean)
  • String getSampleLabel()
  • setSampleLabel(String)

The MD5Hex Assertion allows the user to check the MD5 hash of the response data.

Descriptive name for this element that is shown in the tree. 32 hex digits representing the MD5 hash (case not significant)

The HTML Assertion allows the user to check the HTML syntax of the response data using JTidy.

Descriptive name for this element that is shown in the tree. omit/auto/strict/loose HTML, XHTML or XML Only take note of errors? Number of errors allowed before classing the response as failed Number of warnings allowed before classing the response as failed Name of file to which report is written

The XPath Assertion tests a document for well formedness, has the option of validating against a DTD, or putting the document through JTidy and testing for an XPath. If that XPath exists, the Assertion is true. Using "/" will match any well-formed document, and is the default XPath Expression. The assertion also supports boolean expressions, such as "count(//*error)=2". See http://www.w3.org/TR/xpath for more information on XPath.

Descriptive name for this element that is shown in the tree. Use Tidy, i.e. be tolerant of XML/HTML errors Sets the Tidy Quiet flag If a Tidy error occurs, then set the Assertion accordingly Sets the Tidy showWarnings option Should namespaces be honoured? Check the document against its schema. Ignore Element Whitespace. If selected, external DTDs are fetched. XPath to match in the document. True if a XPath expression is not matched The non-tolerant parser can be quite slow, as it may need to download the DTD etc. To overcome Xalan XPath parser implementation on which JMeter is based, you can help the parsing by providing a Properties file which will contain:
  • prefix1=Full Namespace 1
  • prefix2=Full Namespace 2
  • ...
You reference this file in jmeter.properties file using the property:
  • xpath.namespace.config

The XML Schema Assertion allows the user to validate a response against an XML Schema.

Descriptive name for this element that is shown in the tree. Specify XML Schema File Name

The BSF Assertion allows BSF script code to be used to check the status of the previous sample.

Descriptive name for this element that is shown in the tree. The BSF language to be used Parameters to pass to the script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • args - String array containing parameters, split on white-space
A file containing the script to run. The script to run.

The script (or file) is processed using the BSFEngine.exec() method, which does not return a value.

The following variables are set up for use by the script:

  • log - (Logger) - can be used to write to the log file
  • Label - the String Label
  • Filename - the script file name (if any)
  • Parameters - the parameters (as a String)
  • args[] - the parameters as a String array (split on whitespace)
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object()); vars.getObject("OBJ2");
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • SampleResult, prev - (SampleResult) - gives access to the previous SampleResult (if any)
  • sampler - (Sampler)- gives access to the current sampler
  • OUT - System.out - e.g. OUT.println("message")
  • AssertionResult - the assertion result

The script can check various aspects of the SampleResult. If an error is detected, the script should use AssertionResult.setFailureMessage("message") and AssertionResult.setFailure(true).

For futher details of all the methods available on each of the above variables, please check the Javadoc

The JSR223 Assertion allows JSR223 script code to be used to check the status of the previous sample. For details, see .

The Compare Assertion can be used to compare sample results within its scope. Either the contents or the elapsed time can be compared, and the contents can be filtered before comparison. The assertion comparisons can be seen in the . Descriptive name for this element that is shown in the tree. Whether or not to compare the content (response data) If the value is >=0, then check if the response time difference is no greater than the value. I.e. if the value is 0, then the response times must be exactly equal. Filters can be used to remove strings from the content comparison. For example, if the page has a time-stamp, it might be matched with: "Time: \d\d:\d\d:\d\d" and replaced with a dummy fixed time "Time: HH:MM:SS". The SMIME Assertion can be used to evaluate the sample results from the Mail Reader Sampler. This assertion verifies if the body of a mime message is signed or not. The signature can also be verified against a specific signer certificate. As this is a functionality that is not necessarily needed by most users, additional jars need to be downloaded and added to JMETER_HOME/lib :

  • bcmail-xxx.jar (BouncyCastle SMIME/CMS)
  • bcprov-xxx.jar (BouncyCastle Provider)
These need to be downloaded from BouncyCastle.

If using the Mail Reader Sampler, please ensure that you select "Store the message using MIME (raw)" otherwise the Assertion won't be able to process the message correctly.

Descriptive name for this element that is shown in the tree. If selected, the asertion will verify if it is a valid signature according to the parameters defined in the Signer Certificate box. Whether or not to expect a signature in the message "No Check" means that it wil not perform signature verification. "Check values" is used to verify the signature against the inputs provided. And "Certificate file" will perform the verification against a specific certificate file. The Mail sampler can retrieve multiple messages in a single sample. Use this field to specify which message will be checked. Messages are numbered from 0, so 0 means the first message. Negative numbers count from the LAST message; -1 means LAST, -2 means penultimate etc.
^


Note that timers are processed before each sampler in the scope in which they are found; if there are several timers in the same scope, all the timers will be processed before each sampler.

Timers are only processed in conjunction with a sampler. A timer which is not in the same scope as a sampler will not be processed at all.

To apply a timer to a single sampler, add the timer as a child element of the sampler. The timer will be applied before the sampler is executed. To apply a timer after a sampler, either add it to the next sampler, or add it as the child of a Sampler.

If you want to have each thread pause for the same amount of time between requests, use this timer.

Descriptive name for this timer that is shown in the tree. Number of milliseconds to pause.

This timer pauses each thread request for a random amount of time, with most of the time intervals ocurring near a particular value. The total delay is the sum of the Gaussian distributed value (with mean 0.0 and standard deviation 1.0) times the deviation value you specify, and the offset value.

Descriptive name for this timer that is shown in the tree Deviation in milliseconds. Number of milliseconds to pause in addition to the random delay.

This timer pauses each thread request for a random amount of time, with each time interval having the same probability of occurring. The total delay is the sum of the random value and the offset value.

Descriptive name for this timer that is shown in the tree. Maxium random number of milliseconds to pause. Number of milliseconds to pause in addition to the random delay.

This timer introduces variable pauses, calculated to keep the total throughput (in terms of samples per minute) as close as possible to a give figure. Of course the throughput will be lower if the server is not capable of handling it, or if other timers or time-consuming test elements prevent it.

N.B. although the Timer is called the Constant Throughput timer, the throughput value does not need to be constant. It can be defined in terms of a variable or function call, and the value can be changed during a test. The value can be changed in various ways:

  • using a counter variable
  • using a JavaScript or BeanShell function to provide a changing value
  • using the remote BeanShell server to change a JMeter property

See Best Practices for further details. Note that the throughput value should not be changed too often during a test - it will take a while for the new value to take effect.

Descriptive name for this timer that is shown in the tree. Throughput we want the timer to try to generate.
  • this thread only - each thread will try to maintain the target throughput. The overall throughput will be proportional to the number of active threads.
  • all active threads in current thread group - the target throughput is divided amongst all the active threads in the group. Each thread will delay as needed, based on when it last ran.
  • all active threads - the target throughput is divided amongst all the active threads in all Thread Groups. Each thread will delay as needed, based on when it last ran. In this case, each other Thread Group will need a Constant Throughput timer with the same settings.
  • all active threads in current thread group (shared) - as above, but each thread is delayed based on when any thread in the group last ran.
  • all active threads (shared) - as above; each thread is delayed based on when any thread last ran.

The shared and non-shared algorithms both aim to generate the desired thoughput, and will produce similar results. The shared algorithm should generate a more accurate overall transaction rate. The non-shared algortihm should generate a more even spread of transactions across threads.

The purpose of the SyncTimer is to block threads until X number of threads have been blocked, and then they are all released at once. A SyncTimer can thus create large instant loads at various points of the test plan.

Descriptive name for this timer that is shown in the tree. Number of threads to release at once. Setting it to 0 is equivalent to setting it to Number of threads in Thread Group.

The BeanShell Timer can be used to generate a delay.

For full details on using BeanShell, please see the BeanShell website.

The test element supports the ThreadListener and TestListener methods. These should be defined in the initialisation file. See the file BeanShellListeners.bshrc for example definitions.

Descriptive name for this element that is shown in the tree. The name is stored in the script variable Label If this option is selected, then the interpreter will be recreated for each sample. This may be necessary for some long running scripts. For further information, see Best Practices - BeanShell scripting. Parameters to pass to the BeanShell script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • bsh.args - String array containing parameters, split on white-space
A file containing the BeanShell script to run. The file name is stored in the script variable FileName The return value is used as the number of milliseconds to wait. The BeanShell script. The return value is used as the number of milliseconds to wait.

Before invoking the script, some variables are set up in the BeanShell interpreter:

  • log - (Logger) - can be used to write to the log file
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • prev - (SampleResult) - gives access to the previous SampleResult (if any)

For details of all the methods available on each of the above variables, please check the Javadoc

If the property beanshell.timer.init is defined, this is used to load an initialisation file, which can be used to define methods etc for use in the BeanShell script.

The BSF Timer can be used to generate a delay using a BSF scripting language.

Descriptive name for this element that is shown in the tree. The scripting language to be used. Parameters to pass to the script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • args - String array containing parameters, split on white-space
A file containing the script to run. The return value is converted to a long integer and used as the number of milliseconds to wait. The script. The return value is used as the number of milliseconds to wait.

Before invoking the script, some variables are set up in the script interpreter:

  • log - (Logger) - can be used to write to the log file
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - the current Sampler
  • Label - the name of the Timer
  • Filename - the file name (if any)
  • OUT - System.out

For details of all the methods available on each of the above variables, please check the Javadoc

The JSR223 Timer can be used to generate a delay using a JSR223 scripting language, For details, see .

This timer pauses each thread request for a random amount of time, with most of the time intervals ocurring near a particular value. The total delay is the sum of the Poisson distributed value, and the offset value.

Descriptive name for this timer that is shown in the tree Lambda value in milliseconds. Number of milliseconds to pause in addition to the random delay.
^


Preprocessors are used to modify the Samplers in their scope.

This modifier parses HTML response from the server and extracts links and forms. A URL test sample that passes through this modifier will be examined to see if it "matches" any of the links or forms extracted from the immediately previous response. It would then replace the values in the URL test sample with appropriate values from the matching link or form. Perl-type regular expressions are used to find matches.

Matches are performed using protocol, host, path and parameter names. The target sampler cannot contain parameters that are not in the response links.

Consider a simple example: let's say you wanted JMeter to "spider" through your site, hitting link after link parsed from the HTML returned from your server (this is not actually the most useful thing to do, but it serves as a good example). You would create a , and add the "HTML Link Parser" to it. Then, create an HTTP Request, and set the domain to ".*", and the path likewise. This will cause your test sample to match with any link found on the returned pages. If you wanted to restrict the spidering to a particular domain, then change the domain value to the one you want. Then, only links to that domain will be followed.

A more useful example: given a web polling application, you might have a page with several poll options as radio buttons for the user to select. Let's say the values of the poll options are very dynamic - maybe user generated. If you wanted JMeter to test the poll, you could either create test samples with hardcoded values chosen, or you could let the HTML Link Parser parse the form, and insert a random poll option into your URL test sample. To do this, follow the above example, except, when configuring your Web Test controller's URL options, be sure to choose "POST" as the method. Put in hard-coded values for the domain, path, and any additional form parameters. Then, for the actual radio button parameter, put in the name (let's say it's called "poll_choice"), and then ".*" for the value of that parameter. When the modifier examines this URL test sample, it will find that it "matches" the poll form (and it shouldn't match any other form, given that you've specified all the other aspects of the URL test sample), and it will replace your form parameters with the matching parameters from the form. Since the regular expression ".*" will match with anything, the modifier will probably have a list of radio buttons to choose from. It will choose at random, and replace the value in your URL test sample. Each time through the test, a new random value will be chosen.

Figure 18 - Online Poll Example
One important thing to remember is that you must create a test sample immediately prior that will return an HTML page with the links and forms that are relevant to your dynamic test sample.

This modifier works similarly to the HTML Link Parser, except it has a specific purpose for which it is easier to use than the HTML Link Parser, and more efficient. For web applications that use URL Re-writing to store session ids instead of cookies, this element can be attached at the ThreadGroup level, much like the . Simply give it the name of the session id parameter, and it will find it on the page and add the argument to every request of that ThreadGroup.

Alternatively, this modifier can be attached to select requests and it will modify only them. Clever users will even determine that this modifier can be used to grab values that elude the .

Descriptive name given to this element in the test tree. The name of the parameter to grab from previous response. This modifier will find the parameter anywhere it exists on the page, and grab the value assigned to it, whether it's in an HREF or a form. Some web apps rewrite URLs by appending a semi-colon plus the session id parameter. Check this box if that is so. Some web apps rewrite URLs without using an "=" sign between the parameter name and value (such as Intershop Enfinity). Prevents the query string to end up in the path extension (such as Intershop Enfinity). Should the value of the session Id be saved for later use when the session Id is not present?

The HTML Parameter Mask is used to generate unique values for HTML arguments. By specifying the name of the parameter, a value prefix and suffix, and counter parameters, this modifier will generate values of the form "name=prefixcountersuffix". Any HTTP Request that it modifies, it will replace any parameter with the same name or add the appropriate parameter to the requests list of arguments.

The value of the argument in your HTTP Request must be a '*' in order for the HTML Parameter Mask Modifier to replace it.

As an example, the username for a login script could be modified to send a series of values such as:

user_1

user_2

user_3

user_4, etc.

Descriptive name given to this element in the test tree. The name of the parameter to modify or add to the HTTP Request. A string value to prefix to every generated value. A number value to start the counter at. A number value to end the counter, at which point it restarts with the Lower Bound value. Value to increment the counter by each time through. A string value to add as suffix to every generated vaue.

Allows the user to specify values for User Variables specific to individual threads.

User Variables can also be specified in the Test Plan but not specific to individual threads. This panel allows you to specify a series of values for any User Variable. For each thread, the variable will be assigned one of the values from the series in sequence. If there are more threads than values, the values get re-used. For example, this can be used to assign a distinct user id to be used by each thread. User variables can be referenced in any field of any jMeter Component.

The variable is specified by clicking the Add Variable button in the bottom of the panel and filling in the Variable name in the 'Name:' column. To add a new value to the series, click the 'Add User' button and fill in the desired value in the newly added column.

Values can be accessed in any test component in the same thread group, using the function syntax: ${variable}.

See also the element, which is more suitable for large numbers of parameters

Descriptive name for this element that is shown in the tree. A flag to indicate whether the User Paramters element should update its variables only once per iteration. if you embed functions into the UP, then you may need greater control over how often the values of the variables are updated. Keep this box checked to ensure the values are updated each time through the UP's parent controller. Uncheck the box, and the UP will update the parameters for every sample request made within its scope.

The BeanShell PreProcessor allows arbitrary code to be applied before taking a sample.

For full details on using BeanShell, please see the BeanShell website.

The test element supports the ThreadListener and TestListener methods. These should be defined in the initialisation file. See the file BeanShellListeners.bshrc for example definitions.

Descriptive name for this element that is shown in the tree. The name is stored in the script variable Label If this option is selected, then the interpreter will be recreated for each sample. This may be necessary for some long running scripts. For further information, see Best Practices - BeanShell scripting. Parameters to pass to the BeanShell script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • bsh.args - String array containing parameters, split on white-space
A file containing the BeanShell script to run. The file name is stored in the script variable FileName The BeanShell script. The return value is ignored.

Before invoking the script, some variables are set up in the BeanShell interpreter:

  • log - (Logger) - can be used to write to the log file
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • prev - (SampleResult) - gives access to the previous SampleResult (if any)
  • sampler - (Sampler)- gives access to the current sampler

For details of all the methods available on each of the above variables, please check the Javadoc

If the property beanshell.preprocessor.init is defined, this is used to load an initialisation file, which can be used to define methods etc for use in the BeanShell script.

The BSF PreProcessor allows BSF script code to be applied before taking a sample.

Descriptive name for this element that is shown in the tree. The BSF language to be used Parameters to pass to the script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • args - String array containing parameters, split on white-space
A file containing the script to run. The script to run.

The script (or file) is processed using the BSFEngine.exec() method, which does not return a value.

The following BSF variables are set up for use by the script:

  • log - (Logger) - can be used to write to the log file
  • Label - the String Label
  • Filename - the script file name (if any)
  • Parameters - the parameters (as a String)
  • args[] - the parameters as a String array (split on whitespace)
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object()); vars.getObject("OBJ2");
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • sampler - (Sampler)- gives access to the current sampler
  • OUT - System.out - e.g. OUT.println("message")

For details of all the methods available on each of the above variables, please check the Javadoc

The JSR223 PreProcessor allows JSR223 script code to be applied before taking a sample. For details, see .

The JDBC PreProcessor enables you to run some SQL statement just before a sample runs. This can be useful if your JDBC Sample requires some data to be in DataBase and you cannot compute this in a setup Thread group. For details, see .

See the following Test plan:

Test Plan using JDBC Pre/Post Processor

In the linked test plan,"Create Price Cut-Off" JDBC PreProcessor calls a stored procedure to create a Price Cut-Off in Database, this one will be used by "Calculate Price cut off".

Create Price Cut-Off Preprocessor

^

As the name suggests, Post-Processors are applied after samplers. Note that they are applied to all the samplers in the same scope, so to ensure that a post-processor is applied only to a particular sampler, add it as a child of the sampler.

Note: Unless documented otherwise, Post-Processors are not applied to sub-samples (child samples) - only to the parent sample. In the case of BSF and BeanShell post-processors, the script can retrieve sub-samples using the method prev.getSubResults() which returns an array of SampleResults. The array will be empty if there are none.

Post-Processors are run before Assertions, so they do not have access to any Assertion Results, nor will the sample status reflect the results of any Assertions. If you require access to Assertion Results, try using a Listener instead. Also note that the variable JMeterThread.last_sample_ok is set to "true" or "false" after all Assertions have been run.

Allows the user to extract values from a server response using a Perl-type regular expression. As a post-processor, this element will execute after each Sample request in its scope, applying the regular expression, extracting the requested values, generate the template string, and store the result into the given variable name.

Descriptive name for this element that is shown in the tree. This is for use with samplers that can generate sub-samples, e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
  • Main sample only - only applies to the main sample
  • Sub-samples only - only applies to the sub-samples
  • Main sample and sub-samples - applies to both.
  • JMeter Variable - assertion is to be applied to the contents of the named variable
Matching is applied to all qualifying samples in turn. For example if there is a main sample and 3 sub-samples, each of which contains a single match for the regex, (i.e. 4 matches in total). For match number = 3, Sub-samples only, the extractor will match the 3rd sub-sample. For match number = 3, Main sample and sub-samples, the extractor will match the 2nd sub-sample (1st match is main sample). For match number = 0 or negative, all qualifying samples will be processed. For match number > 0, matching will stop as soon as enough matches have been found.
The following response fields can be checked:
  • Body - the body of the response, e.g. the content of a web-page (excluding headers)
  • Body (unescaped) - the body of the response, with all Html escape codes replaced. Note that Html escapes are processed without regard to context, so some incorrect substitutions may be made.
  • Headers - may not be present for non-HTTP samples
  • URL
  • Response Code - e.g. 200
  • Response Message - e.g. OK
Headers can be useful for HTTP samples; it may not be present for other sample types.
The name of the JMeter variable in which to store the result. Also note that each group is stored as [refname]_g#, where [refname] is the string you entered as the reference name, and # is the group number, where group 0 is the entire match, group 1 is the match from the first set of parentheses, etc. The regular expression used to parse the response data. This must contain at least one set of parentheses "()" to capture a portion of the string, unless using the group $0$. Do not enclose the expression in / / - unless of course you want to match these characters as well. The template used to create a string from the matches found. This is an arbitrary string with special elements to refer to groups within the regular expression. The syntax to refer to a group is: '$1$' to refer to group 1, '$2$' to refer to group 2, etc. $0$ refers to whatever the entire expression matches. Indicates which match to use. The regular expression may match multiple times.
  • Use a value of zero to indicate JMeter should choose a match at random.
  • A positive number N means to select the nth match.
  • Negative numbers are used in conjunction with the ForEach controller - see below.
If the regular expression does not match, then the reference variable will be set to the default value. This is particularly useful for debugging tests. If no default is provided, then it is difficult to tell whether the regular expression did not match, or the RE element was not processed or maybe the wrong variable is being used.

However, if you have several test elements that set the same variable, you may wish to leave the variable unchanged if the expression does not match. In this case, remove the default value once debugging is complete.

If the match number is set to a non-negative number, and a match occurs, the variables are set as follows:

  • refName - the value of the template
  • refName_gn, where n=0,1,2 - the groups for the match
  • refName_g - the number of groups in the Regex (excluding 0)
If no match occurs, then the refName variable is set to the default (unless this is absent). Also, the following variables are removed:
  • refName_g0
  • refName_g1
  • refName_g

If the match number is set to a negative number, then all the possible matches in the sampler data are processed. The variables are set as follows:

  • refName_matchNr - the number of matches found; could be 0
  • refName_n, where n = 1,2,3 etc - the strings as generated by the template
  • refName_n_gm, where m=0,1,2 - the groups for match n
  • refName - always set to the default value
  • refName_gn - not set
Note that the refName variable is always set to the default value in this case, and the associated group variables are not set.

See also for some examples of how to specify modifiers, and for further information on JMeter regular expressions.

This test element allows the user to extract value(s) from structured response - XML or (X)HTML - using XPath query language. Descriptive name for this element that is shown in the tree. This is for use with samplers that can generate sub-samples, e.g. HTTP Sampler with embedded resources, Mail Reader or samples generated by the Transaction Controller.
  • Main sample only - only applies to the main sample
  • Sub-samples only - only applies to the sub-samples
  • Main sample and sub-samples - applies to both.
  • JMeter Variable - assertion is to be applied to the contents of the named variable
XPath matching is applied to all qualifying samples in turn, and all the matching results will be returned.
If checked use Tidy to parse HTML response into XHTML.
  • "Use Tidy" should be checked on for HTML response. Such response is converted to valid XHTML (XML compatible HTML) using Tidy
  • "Use Tidy" should be unchecked for both XHTML or XML response (for example RSS)
Sets the Tidy Quiet flag If a Tidy error occurs, then set the Assertion accordingly Sets the Tidy showWarnings option If checked, then the XML parser will use namespace resolution. Note that currently only namespaces declared on the root element will be recognised. A later version of JMeter may support user-definition of additional workspace names. Meanwhile, a work-round is to replace:

//mynamespace:tagname

by

//*[local-name()='tagname' and namespace-uri()='uri-for-namespace']

where "uri-for-namespace" is the uri for the "mynamespace" namespace. (not applicable if Tidy is selected)
Check the document against its schema. Ignore Element Whitespace. If selected, external DTDs are fetched. If selected, the fragment will be returned rather than the text content.

For example //title would return "&lt;title>Apache JMeter&lt;/title>" rather than "Apache JMeter".

In this case, //title/text() would return "Apache JMeter".
The name of the JMeter variable in which to store the result. Element query in XPath language. Can return more than one match. Default value returned when no match found. It is also returned if the node has no value and the fragment option is not selected.

To allow for use in a ForEach Controller, the following variables are set on return:

  • refName - set to first (or only) match; if no match, then set to default
  • refName_matchNr - set to number of matches (may be 0)
  • refName_n - n=1,2,3 etc. Set to the 1st, 2nd 3rd match etc.

Note: The next refName_n variable is set to null - e.g. if there are 2 matches, then refName_3 is set to null, and if there are no matches, then refName_1 is set to null.

XPath is query language targeted primarily for XSLT transformations. However it is usefull as generic query language for structured data too. See XPath Reference or XPath specification for more information. Here are few examples:

/html/head/title
extracts title element from HTML response
/book/page[2]
extracts 2nd page from a book
/book/page
extracts all pages from a book
//form[@name='countryForm']//select[@name='country']/option[text()='Czech Republic'])/@value
extracts value attribute of option element that match text 'Czech Republic' inside of select element with name attribute 'country' inside of form with name attribute 'countryForm'
When "Use Tidy" is checked on - resulting XML document may slightly differ from original HTML response:
  • All elements and attribute names are converted to lowercase
  • Tidy attempts to correct improperly nested elements. For example - original (incorrect) ul/font/li becomes correct ul/li/font
See Tidy homepage for more information.
This test element allows the user to stop the thread or the whole test if the relevant sampler failed. Descriptive name for this element that is shown in the tree. Determines what happens if a sampler error occurs, either because the sample itself failed or an assertion failed. The possible choices are:
  • Continue - ignore the error and continue with the test
  • Stop Thread - current thread exits
  • Stop Test - the entire test is stopped at the end of any current samples.
  • Stop Test Now - the entire test is stopped abruptly. Any current samplers are interrupted if possible.

The BeanShell PreProcessor allows arbitrary code to be applied after taking a sample.

For JMeter versions after 2.2 the BeanShell Post-Processor no longer ignores samples with zero-length result data

For full details on using BeanShell, please see the BeanShell website.

The test element supports the ThreadListener and TestListener methods. These should be defined in the initialisation file. See the file BeanShellListeners.bshrc for example definitions.

Descriptive name for this element that is shown in the tree. The name is stored in the script variable Label If this option is selected, then the interpreter will be recreated for each sample. This may be necessary for some long running scripts. For further information, see Best Practices - BeanShell scripting. Parameters to pass to the BeanShell script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • bsh.args - String array containing parameters, split on white-space
A file containing the BeanShell script to run. The file name is stored in the script variable FileName The BeanShell script. The return value is ignored.

The following BeanShell variables are set up for use by the script:

  • log - (Logger) - can be used to write to the log file
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object());
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • prev - (SampleResult) - gives access to the previous SampleResult
  • data - (byte [])- gives access to the current sample data

For details of all the methods available on each of the above variables, please check the Javadoc

If the property beanshell.postprocessor.init is defined, this is used to load an initialisation file, which can be used to define methods etc for use in the BeanShell script.

The BSF PostProcessor allows BSF script code to be applied after taking a sample.

Descriptive name for this element that is shown in the tree. The BSF language to be used Parameters to pass to the script. The parameters are stored in the following variables:
  • Parameters - string containing the parameters as a single variable
  • args - String array containing parameters, split on white-space
A file containing the script to run. The script to run.

The script (or file) is processed using the BSFEngine.exec() method, which does not return a value.

Before invoking the script, some variables are set up. Note that these are BSF variables - i.e. they can be used directly in the script.

  • log - (Logger) - can be used to write to the log file
  • Label - the String Label
  • Filename - the script file name (if any)
  • Parameters - the parameters (as a String)
  • args[] - the parameters as a String array (split on whitespace)
  • ctx - (JMeterContext) - gives access to the context
  • vars - (JMeterVariables) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object()); vars.getObject("OBJ2");
  • props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234");
  • prev - (SampleResult) - gives access to the previous SampleResult (if any)
  • sampler - (Sampler)- gives access to the current sampler
  • OUT - System.out - e.g. OUT.println("message")

For details of all the methods available on each of the above variables, please check the Javadoc

The JSR223 PostProcessor allows JSR223 script code to be applied after taking a sample. For details, see the .

The JDBC PostProcessor enables you to run some SQL statement just after a sample has run. This can be useful if your JDBC Sample changes some data and you want to reset state to what it was before the JDBC sample run.

Test Plan using JDBC Pre/Post Processor

In the linked test plan,"JDBC PostProcessor" JDBC PostProcessor calls a stored procedure to delete from Database the Price Cut-Off that was created by PreProcessor.

JDBC PostProcessor



The Test Plan is where the overall settings for a test are specified.

Static variables can be defined for values that are repeated throughout a test, such as server names. For example the variable SERVER could be defined as www.example.com, and the rest of the test plan could refer to it as ${SERVER}. This simplifies changing the name later.

If the same variable name is reused on one of more Configuration elements, the value is set to the last definition in the test plan (reading from top to bottom). Such variables should be used for items that may change between test runs, but which remain the same during a test run.

Note that the Test Plan cannot refer to variables it defines. If you need to construct other variables from the Test Plan variables, use a test element.

Selecting Functional Testing instructs JMeter to save the additional sample information - Response Data and Sampler Data - to all result files. This increases the resources needed to run a test, and may adversely impact JMeter performance. If more data is required for a particular sampler only, then add a Listener to it, and configure the fields as required. [The option does not affect CSV result files, which cannot currently store such information.]

Also, an option exists here to instruct JMeter to run the serially rather than in parallel.

Run tearDown Thread Groups after shutdown of main threads: if selected, the tearDown groups (if any) will be run after graceful shutdown of the main threads. The tearDown threads won't be run if the test is forcibly stopped.

Test plan now provides an easy way to add classpath setting to a specific test plan. The feature is additive, meaning that you can add jar files or directories, but removing an entry requires restarting JMeter. Note that this cannot be used to add JMeter GUI plugins, because they are processed earlier. However it can be useful for utility jars such as JDBC drivers.

JMeter properties also provides an entry for loading additional classpaths. In jmeter.properties, edit "user.classpath" to include additional libraries.

A Thread Group defines a pool of users that will execute a particular test case against your server. In the Thread Group GUI, you can control the number of users simulated (num of threads), the ramp up time (how long it takes to start all the threads), the number of times to perform the test, and optionally, a start and stop time for the test.

See also and .

When using the scheduler, JMeter runs the thread group until either the number of loops is reached or the duration/end-time is reached - whichever occurs first. Note that the condition is only checked between samples; when the end condition is reached, that thread will stop. JMeter does not interrupt samplers which are waiting for a response, so the end time may be delayed arbitrarily.

Descriptive name for this element that is shown in the tree. Determines what happens if a sampler error occurs, either because the sample itself failed or an assertion failed. The possible choices are:
  • Continue - ignore the error and continue with the test
  • Start Next Loop - ignore the error, start next loop and continue with the test
  • Stop Thread - current thread exits
  • Stop Test - the entire test is stopped at the end of any current samples.
  • Stop Test Now - the entire test is stopped abruptly. Any current samplers are interrupted if possible.
Number of users to simulate. How long JMeter should take to get all the threads started. If there are 10 threads and a ramp-up time of 100 seconds, then each thread will begin 10 seconds after the previous thread started, for a total time of 100 seconds to get the test fully up to speed. Number of times to perform the test case. Alternatively, "forever" can be selected causing the test to run until manually stopped. If selected, threads are created only when the appropriate proportion of the ramp-up time has elapsed. This is most appropriate for tests with a ramp-up time that is significantly longer than the time to execute a single thread. I.e. where earlier threads finish before later ones start.

If not selected, all threads are created when the test starts (they then pause for the appropriate proportion of the ramp-up time). This is the original default, and is appropriate for tests where threads are active throughout most of the test.
If selected, enables the scheduler If the scheduler checkbox is selected, one can choose an absolute start time. When you start your test, JMeter will wait until the specified start time to begin testing. Note: the Startup Delay field over-rides this - see below. If the scheduler checkbox is selected, one can choose an absolute end time. When you start your test, JMeter will wait until the specified start time to begin testing, and it will stop at the specified end time. Note: the Duration field over-rides this - see below. If the scheduler checkbox is selected, one can choose a relative end time. JMeter will use this to calculate the End Time, and ignore the End Time value. If the scheduler checkbox is selected, one can choose a relative startup delay. JMeter will use this to calculate the Start Time, and ignore the Start Time value.

The WorkBench simply provides a place to temporarily store test elements while not in use, for copy/paste purposes, or any other purpose you desire. When you save your test plan, WorkBench items are not saved with it. Your WorkBench can be saved independently, if you like (right-click on WorkBench and choose Save).

Certain test elements are only available on the WorkBench:

The SSL Manager is a way to select a client certificate so that you can test applications that use Public Key Infrastructure (PKI). It is only needed if you have not set up the appropriate System properties.

Choosing a Client Certificate

You may either use a Java Key Store (JKS) format key store, or a Public Key Certificate Standard #12 (PKCS12) file for your client certificates. There is a feature of the JSSE libraries that require you to have at least a six character password on your key (at least for the keytool utility that comes with your JDK).

To select the client certificate, choose Options->SSL Manager from the menu bar. You will be presented with a file finder that looks for PKCS12 files by default. Your PKCS12 file must have the extension '.p12' for SSL Manager to recognize it as a PKCS12 file. Any other file will be treated like an average JKS key store. If JSSE is correctly installed, you will be prompted for the password. The text box does not hide the characters you type at this point--so make sure no one is looking over your shoulder. The current implementation assumes that the password for the keystore is also the password for the private key of the client you want to authenticate as.

Or you can set the appropriate System properties - see the system.properties file.

The next time you run your test, the SSL Manager will examine your key store to see if it has at least one key available to it. If there is only one key, SSL Manager will select it for you. If there is more than one key, it currently selects the first key. There is currently no way to select other entries in the keystore, so the desired key must be the first.

Things to Look Out For

You must have your Certificate Authority (CA) certificate installed properly if it is not signed by one of the five CA certificates that ships with your JDK. One method to install it is to import your CA certificate into a JKS file, and name the JKS file "jssecacerts". Place the file in your JRE's lib/security folder. This file will be read before the "cacerts" file in the same directory. Keep in mind that as long as the "jssecacerts" file exists, the certificates installed in "cacerts" will not be used. This may cause problems for you. If you don't mind importing your CA certificate into the "cacerts" file, then you can authenticate against all of the CA certificates installed.

The Proxy Server allows JMeter to watch and record your actions while you browse your web application with your normal browser. JMeter will create test sample objects and store them directly into your test plan as you go (so you can view samples interactively while you make them).

To use the proxy server, add the HTTP Proxy Server element to the workbench. Select the WorkBench element in the tree, and right-click on this element to get the Add menu (Add --> Non-Test Elements --> HTTP Proxy Server).

You also need to set up your browser to use the JMeter proxy port as the proxy for HTTP and HTTPS requests. Do not use JMeter as the proxy for any other request types - FTP, etc. - as the JMeter proxy cannot handle them.

When recording HTTPS, the JMeter proxy server uses a dummy certificate to enable it to accept the SSL connection from the browser. This certificate is not one of the certificates that browsers normally trust, and will not be for the correct host, so the browser should display a dialogue asking if you want to accept the certificate or not. For example: 1) The server's name "www.example.com" does not match the certificate's name "JMeter Proxy". Somebody may be trying to eavesdrop on you. 2) The certificate for "JMeter Proxy" is signed by the unknown Certificate Authority "JMeter Proxy". It is not possible to verify that this is a valid certificate. You will need to accept the certificate in order to allow the JMeter Proxy to intercept the SSL traffic in order to record it. You should only accept the certificate temporarily.

The following properties can be used to change the certificate that is used:

  • proxy.cert.directory - the directory in which to find the certificate (default = JMeter bin/)
  • proxy.cert.file - name of the keystore file (default "proxyserver.jks")
  • proxy.cert.keystorepass - keystore password (default "password")
  • proxy.cert.keypassword - certificate key password (default "password")
  • proxy.cert.type - the certificate type (default "JKS")
  • proxy.cert.factory - the factory (default "SunX509")
  • proxy.ssl.protocol - the protocol to be used (default "SSLv3")

If your browser currently uses a proxy (e.g. a company intranet may route all external requests via a proxy), then you need to tell JMeter to use that proxy before starting JMeter, using the command-line options -H and -P. This setting will also be needed when running the generated test plan.
Descriptive name for this element that is shown in the tree. The port that the Proxy Server listens to. 8080 is the default, but you can change it. The controller where the proxy will store the generated samples. By default, it will look for a Recording Controller and store them there wherever it is. Whether to group samplers for requests from a single "click" (requests received without significant time separation), and how to represent that grouping in the recording:
  • Do not group samplers: store all recorded samplers sequentially, without any grouping.
  • Add separators between groups: add a controller named "--------------" to create a visual separation between the groups. Otherwise the samplers are all stored sequentially.
  • Put each group in a new controller: create a new for each group, and store all samplers for that group in it.
  • Store 1st sampler of each group only: only the first request in each group will be recorded. The "Follow Redirects" and "Retrieve All Embedded Resources..." flags will be turned on in those samplers.
  • Put each group in a new transaction controller: create a new for each group, and store all samplers for that group in it.
The property proxy.pause determines the minimum gap that JMeter needs between requests to treat them as separate "clicks". The default is 1000 (milliseconds) i.e. 1 second. If you are using grouping, please ensure that you leave the required gap between clicks.
Should headers be added to the plan? If specified, a Header Manager will be added to each HTTP Sampler. The Proxy server always removes Cookie and Authorization headers from the generated Header Managers. By default it also removes If-Modified-Since and If-None-Match headers. These are used to determine if the browser cache items are up to date; when recording one normally wants to download all the content. To change which additional headers are removed, define the JMeter property proxy.headers.remove as a comma-separated list of headers. Add a blank assertion to each sampler? Use Regex Matching when replacing variables? If checked replacement will use word boundaries, ie it will only replace word matching values of variable, not part of a word. A word boundary follows Perl5 definition and is equivalent to \b. Which type of sampler to generate (the Java default or HTTPClient) Set Redirect Automatically in the generated samplers? Set Follow Redirects in the generated samplers? Set Use Keep-Alive in the generated samplers? Set Retrieve all Embedded Resources in the generated samplers? Filter the requests based on the content-type - e.g. "text/html [;charset=utf-8 ]". The fields are regular expressions which are checked to see if they are contained in the content-type. [Does not have to match the entire field]. The include filter is checked first, then the exclude filter. Samples which are filtered out will not be stored. Regular expressions that are matched against the full URL that is sampled. Allows filtering of requests that are recorded. All requests pass through, but only those that meet the requirements of the Include/Exclude fields are recorded. If both Include and Exclude are left empty, then everything is recorded (which can result in dozens of samples recorded for each page, as images, stylesheets, etc are recorded). If there is at least one entry in the Include field, then only requests that match one or more Include patterns are recorded. Regular expressions that are matched against the URL that is sampled. Any requests that match one or more Exclude pattern are not recorded. Start the proxy server. JMeter writes the following message to the console once the proxy server has started up and is ready to take requests: "Proxy up and running!". Stop the proxy server. Stops and restarts the proxy server. This is useful when you change/add/delete an include/exclude filter expression.

The include and exclude patterns are treated as regular expressions (using Jakarta ORO). They will be matched against the host name, port (actual or implied) path and query (if any) of each browser request. If the URL you are browsing is

"http://jmeter.apache.org/jmeter/index.html?username=xxxx",

then the regular expression will be tested against the string:

"jmeter.apache.org:80/jmeter/index.html?username=xxxx".

Thus, if you want to include all .html files, your regular expression might look like:

".*\.html(\?.*)?" - or ".*\.html" if you know that there is no query string or you only want html pages without query strings.

If there are any include patterns, then the URL must match at least one of the patterns , otherwise it will not be recorded. If there are any exclude patterns, then the URL must not match any of the patterns , otherwise it will not be recorded. Using a combination of includes and excludes, you should be able to record what you are interested in and skip what you are not.

N.B. the string that is matched by the regular expression must be the same as the whole host+path string.

Thus "\.html" will not match j.a.o/index.html

Versions of JMeter from 2.3.2 are able to capture binary POST data. To configure which content-types are treated as binary, update the JMeter property proxy.binary.types. The default settings are as follows:

# These content-types will be handled by saving the request in a file:
proxy.binary.types=application/x-amf,application/x-java-serialized-object
# The files will be saved in this directory:
proxy.binary.directory=user.dir
# The files will be created with this file filesuffix:
proxy.binary.filesuffix=.binary

It is also possible to have the proxy add timers to the recorded script. To do this, create a timer directly within the HTTP Proxy Server component. The proxy will place a copy of this timer into each sample it records, or into the first sample of each group if you're using grouping. This copy will then be scanned for occurences of variable ${T} in its properties, and any such occurences will be replaced by the time gap from the previous sampler recorded (in milliseconds).

When you are ready to begin, hit "start".

You will need to edit the proxy settings of your browser to point at the appropriate server and port, where the server is the machine JMeter is running on, and the port # is from the Proxy Control Panel shown above.

Where Do Samples Get Recorded?

JMeter places the recorded samples in the Target Controller you choose. If you choose the default option "Use Recording Controller", they will be stored in the first Recording Controller found in the test object tree (so be sure to add a Recording Controller before you start recording).

If the Proxy does not seem to record any samples, this could be because the browser is not actually using the proxy. To check if this is the case, try stopping the proxy. If the browser still downloads pages, then it was not sending requests via the proxy. Double-check the browser options. If you are trying to record from a server running on the same host, then check that the browser is not set to "Bypass proxy server for local addresses" (this example is from IE7, but there will be similar options for other browsers). If JMeter does not record browser URLs such as http://localhost/ or http://127.0.0.1/, try using the non-loopback hostname or IP address, e.g. http://myhost/ or http://192.168.0.2/.

Handling of HTTP Request Defaults

If the HTTP Proxy Server finds enabled directly within the controller where samples are being stored, or directly within any of its parent controllers, the recorded samples will have empty fields for the default values you specified. You may further control this behaviour by placing an HTTP Request Defaults element directly within the HTTP Proxy Server, whose non-blank values will override those in the other HTTP Request Defaults. See Best Practices with the Proxy Server for more info.

User Defined Variable replacement

Similarly, if the HTTP Proxy Server finds (UDV) directly within the controller where samples are being stored, or directly within any of its parent controllers, the recorded samples will have any occurences of the values of those variables replaced by the corresponding variable. Again, you can place User Defined Variables directly within the HTTP Proxy Server to override the values to be replaced. See Best Practices with the Proxy Server for more info.

Please note that matching is case-sensitive.

Replacement by Variables: by default, the Proxy server looks for all occurences of UDV values. If you define the variable "WEB" with the value "www", for example, the string "www" will be replaced by ${WEB} wherever it is found. To avoid this happening everywhere, set the "Regex Matching" check-box. This tells the proxy server to treat values as Regexes (using ORO).

If you want to match a whole string only, enclose it in ^$, e.g. "^thus$".

If you want to match /images at the start of a string only, use the value "^/images". Jakarta ORO also supports zero-width look-ahead, so one can match /images/... but retain the trailing / in the output by using "^/images(?=/)". Note that the current version of Jakara ORO does not support look-behind - i.e. "(?&lt;=...) or (?&lt;!...)".

If there are any problems interpreting any variables as patterns, these are reported in jmeter.log, so be sure to check this if UDVs are not working as expected.

When you are done recording your test samples, stop the proxy server (hit the "stop" button). Remember to reset your browser's proxy settings. Now, you may want to sort and re-order the test script, add timers, listeners, a cookie manager, etc.

How can I record the server's responses too?

Just place a listener as a child of the Proxy Server and the responses will be displayed. You can also add a Post-Processor which will save the responses to files.

Cookie Manager

If the server you are testing against uses cookies, remember to add an to the test plan when you have finished recording it. During recording, the browser handles any cookies, but JMeter needs a Cookie Manager to do the cookie handling during a test run. The JMeter Proxy server passes on all cookies sent by the browser during recording, but does not save them to the test plan because they are likely to change between runs.

Authorization Manager

The Proxy server passes on any Authorization headers sent by the browser, but does not save them in the test plan. If the site requires Authorization, you will need to add an Authorization Manager and fill it in with the necessary entries.

Uploading files

Some browsers (e.g. Firefox and Opera) don't include the full name of a file when uploading files. This can cause the JMeter proxy server to fail. One solution is to ensure that any files to be uploaded are in the JMeter working directory, either by copying the files there or by starting JMeter in the directory containing the files.

Recording HTTP Based Non Textual Protocols not natively available in JMeter

You may have to record an HTTP protocol that is not handled by default by JMeter (Custom Binary Protocol, Adobe Flex, Microsoft Silverlight... ). Although JMeter does not provide a native proxy implementation to record these protocols, you have the ability to record these protocols by implementing a custom SamplerCreator. This Sampler Creator will translate the binary format into a HTTPSamplerBase subclass that can be added to the JMeter Test Case. For more details see "Extending JMeter".

The HTTP Mirrror Server is a very simple HTTP server - it simply mirrors the data sent to it. This is useful for checking the content of HTTP requests.

It uses default port 8081 since 2.6.

Port on which Mirror server listens, defaults to 8081. If set to a value > 0, number of threads serving requests will be limited to the configured number, if set to a value <=0 a new thread will be created to serve each incoming request. Defaults to 0 Size of queue used for holding tasks before they are executed by Thread Pool, when Thread pool is exceeded, incoming requests will be held in this queue and discarded when this queue is full. This parameter is only used if Max Number of Threads is greater than 0. Defaults to 25 Note that you can make simulate requests response time by adding an HTTP Header Manager with the following name/value pair:
  • X-Sleep=Time to sleep in ms

The Property Display shows the values of System or JMeter properties. Values can be changed by entering new text in the Value column. It is available only on the WorkBench.

Descriptive name for this element that is shown in the tree.

The Debug Sampler generates a sample containing the values of all JMeter variables and/or properties.

The values can be seen in the Listener Response Data pane.

Descriptive name for this element that is shown in the tree. Include JMeter properties ? Include JMeter variables ? Include System properties ?

The Debug PostProcessor creates a subSample with the details of the previous Sampler properties, JMeter variables, properties and/or System Properties.

The values can be seen in the Listener Response Data pane.

Descriptive name for this element that is shown in the tree. Whether to show JMeter properties (default false). Whether to show JMeter variables (default false). Whether to show Sampler properties (default true). Whether to show System properties (default false).

The Test Fragment is used in conjunction with the and .

Descriptive name for this element that is shown in the tree.

A special type of ThreadGroup that can be utilized to perform Pre-Test Actions. The behavior of these threads is exactly like a normal element. The difference is that these type of threads execute before the test proceeds to the executing of regular Thread Groups.

A special type of ThreadGroup that can be utilized to perform Post-Test Actions. The behavior of these threads is exactly like a normal element. The difference is that these type of threads execute after the test has finished executing its regular Thread Groups.

^
apache-jmeter-2.8/xdocs/usermanual/jmeter_accesslog_sampler_step_by_step.sxw0000644000175000017500000015061112032647214027300 0ustar ebourgebourgPK ì2á¥19mimetypeapplication/vnd.sun.xml.writerPK ì29ºº™¬ ¬ -Pictures/100000000000019D000000BBA3DCBE23.png‰PNG  IHDR»‰ƒ³gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTE™™™fffÿÿÿÌÌ̧à| #IDATxÚb`ƒË(´ €Fcg0€Á h4v3 ÑØÌ €Fcg0€Á h4v3 ÑØÌ €Fcg0€Á h4v3 ÑØÌ €Fcg0€Á =v)1C3#mÀˆDÝØaÄ;Œä0¢@¡Å0t( l±CR¤Æ  ܱÃgÃX0F %ÐÜË$HqPŠI`m3ÄGã ÎØAœ…h°àER€žw0L„1‘‹ÀÑØA€Bh8Á‚Pƒ,B1­ÞÁª‹á£wì° ‡8 žEP3"v²2‹Nl¬Q„;(éœèØAB‹äêf4vH„;Hň,Áˆ^²±°`¶°ê< €Ðb‡…oÕÀ‚¸êFô¶š>ÃG£ ®ØÁÞfCä0¬m6ŠÚlÈíëQ„;¨Aе¿ƒÚµDéï° ·¼°ôw öw¨0’4Ì@á%¢B ¿,"@Ꮄb‹’ÑØ¡ œ3XªÜJFc‡6 €Fçw3 ÑØÌ €Fcg0€Á h4v3 ÑØÌ €ÈŠÑí¶tD^ì0º€Á h4v3 ÑØÌ €Fcg0€Â˜ß!f„;Œ$Ø‚¢2xJ´ò‘ 5v‰FR“Ã8;„@aøD5Ê:DÌ!Å#„†P‚U‚™@ˆ#3LŒÇ8=@h±ŽhÇÇ(ëtQbꊑ.ŠÁCË5H’ŒXx£­ÞÁ\'€š‡à±ÃˆÀ(jd`ƬÞÁkÆ(€B¤2 %vPfA™ AŒ5dQ$˜áSaÔha€Â;HK?Ц±ñŲjÔc¨àý$=FðY-Ã1vP¯Âƒ¯·DºûŽ`ìÞØA¬ÖÅ{¨–ØaÄ} ú‰FÃ6ïÀ—¾ÂWìaYS†?vo½ƒ5«à>T9ï D 3–ØþõÆ LF¤ë‰‹€"w°ÄîCõÐbq†3Æ”ŒŒÌ##ï … jm·hƒ @K6l‡´a?T3ï ¶Ñ3Óȉx}Í\„Z PCˆ¸zOìS²¡£Ç8‚c#0±FÔP€"²Í†÷P=챃ÚfCœ¯‡h³1"Îß¶õR µ‹~+VCh€Ç GÇ ð•l4°±Ã8:’ƒ7vhtœm0Ç@ξ æØ ÑØ̱@£±3˜c €h;Ã{E3]¼ ± €h±”yxúxl4@®ÔÌ €Fcg0€ÂršÄ(4 €FOÌ €Fcg0€Á h4v3 ÑØÌ €Fcg0€Á ˆaô’›A ;4Ëe5—bsˆ‰&#à ¡ÛQs)6 €Fcg0› @£±3˜Í "b‡FÂW—2’å*Fô©ñZH²oiŠŒXLg$Ú:¬æ"‚„PHæ3"SDRìâ0ܱÃH((É‹FÊ¢Oì`ÙÃH‘¹Œˆ`„îAˆb2@Ñ+v˺‘Î ‡¸±L‘ŒPSѱ?—œ.‚XÜŠÕ?\—Zy¯ZZX´´³þýì+H‡-qYx®4w}a*UtªrLN±¬ÔŽŽŽZz¯Ig 1t7T‘¬¬¬Vt«ÊÄ¥ÕÏÁQp§ÈÓƥc£££=Z–œˆb:|[z¯õüÿv[&Ê­s <}Ò†‚`´ÍÈ–º´„-Iˆ*oA5 >[–‚h3þñø#?€MMMv‘È Y„A¦ëºauðLŠÅ=¡P8'¹Üðù¾#\²*X‡ Ö qÈd’ÉT*¾ ù|%¹‡ 4M;%ŽãLC;A3¦XÛ„×QaB¡9a ZÀ÷}×u-Ë:#¶m+ŠÒ+| hâÒü÷ï›&Rm9š¸Få‰ € ‰Ë¥1—ãjØhâM\ÔL\M\×9˜7&®ÑÄEÍÄ€T:&¦¤*ˆ­Œ wü£!+×ûèã+碔‹X.¶\޹ø‘K&M&—x.޹äsQÊÅ5ñ\Sfêà@¢h“vðä95ZÑ#!Äusò  üÇL\œ{=¾ÅÅW·µ•1ë .¸ppñÄE‚‹ÇEö\\½ËW@ðÄÕ•ªÉòæ…qꋃ®ä%®ÿàÕâ?ê”\H‰ ˜º%.”’ ˜ºp–\‰Ë䥉 ”ºMÉEJâÀdÙã& DAø ÔP@DgÒ$%¸qÁR¥Ê¸CH„Dƒ»L…"¹EJÅ­F™ï­½ØÚ73o×?ͧ'àÚÍ& -v³.Ì`aËå]ÍT2t½áŠ “á¢i[t³‰“õ1ÁEê—Þb- é|¦[=\R—ô”Ö+—¯ Wt·›K£9´®‰† Kò‚f¸Œ—Y?äñ½\<´“‹v—»øPI•ßDà/ôx”<·z¸¤í5[Ø3ÒïIp‘þ¾bÃha=\d“…í÷èzš,¬iÐ!\ô†+^•ᢩ*t>“5˜à"\ö‡Øÿt­V`ùŸ+ѕᒼ®¿q§Ù öø/¡uŒÚ0DQ´Y‚+7 éŒm@˜€+WYŽÁ[0„@š4q/.T:¥ÉR¼‹‡ï›Ñ—äŽø£Nªwþ×öùMZ_v»¡\è `•eUUúz`ñž–˲©®G\R)ºØ¼ÀµgVq̪¬EoFYwp…®²ðåêu.Ïo°JY±Ó×2š•å²,_èUÊ5àšÛÖYGÿ¥¬EïDp-Ô¯EoFË a|e¹RÖ§¿ìÓå°8Ë%ÍUÊ%ëû„.N\èÕ— ]f[.Wúz10Ûº-—ôóˆ.©ëF\R)ºØ¼ÀõļÆÙl<¹‘­÷3ºþÅÕ4¡«mÑ…,ž«„×± € @ÑÄ ìÂV-ÜËÖ5ÜÇeœÈ}áô€Nðóò#9®eðc»ºyÊ¥qÑ,®:.Ï+”ËÄ•¥+Ç5Êþ¡qq[T¸dY¸Î¾ÄEº \ðjàŠÿ\LWp‘®ˆ‹tA«ÀEº—…‹W^\Î%\œ(\¤+ W—çÊeâ éúàZeJ¸äéã×-¥el ÁŽŽ1h‘¨))ØŠ-2°/’¼­¤°!xŸî^ຖ˜Å¹Ûöãú{DbË4×äeÑ„‹YÞÍUý¸xÙ\²¹àÊ›«‚K²ØWlâ—¹ts%s…`ÀÅÍ%Y´à"_ —d1ØæZ½,šp1‹,£o®2è}¸Ô\ò… ¨Ìõ XÉå\ýïߥ»º/yþ~þ‡?q1ÃkF‚‰ ”¼ˆI\Ú‘Èjq?´è2‡`а½J\ ÔEJâ§.b×Ìh‰+Ñ‚ØÄJ^ a®x(yÚóD$®¹ë‰K\ ž"QÕ"°àRÚ‡#q0q1”ס$&ŒÄÆGÛ\£ =qýC+¹ŠµbG€vg0rµøZPAIhAO\ÐìïßÑ6×È„V-þ&®n€Ä8qik烪Ŏ$ä’ QNýE+¹ ô€W‘£m®„Ò ÿóµÉjsuhkäçƒJ®/Ž(‰ ÚÄú‹Ùæ3þþ‰k´Í5p €ð EÈ2²0Š”»‹¥* ¡ô’ Æù‹ÒòB.ÓFÛ\#ê *J3©™……%I„Ô Ï&®rÂÕ"¼Õ5X×h›k@áI\š Ô%æ˜ÄÓÑQ ,¹|“„þaoÐÿC4èÿÁ“Ö`)¹FÛ\Oâ¶çÉ+XDDL»6X10°}H.¹AosýEœúKì¾(—øûK4 ¼‰ ÜîbQü("Ràø¨®çúE½Ä5z¨4I €PW7–]íÀäõPHHvh.ÄÞæBºÇˆÄÄMb£ ‡@tLb®GÅÓæB¹Çõº˜¿hµr §ÿcÞ<Š qÜê7@™¸†ð2çøâB#dê?¢öC©‘“ ²Ž¿h‰k´ê„€"œ¸ˆIpÝTôçB*•·¨¡\_…,Ž+qýG–GI\£U'ÐpO\D´¹P®yD®ÿ¢_(ËPeÐ)í¹á hØ—\¿ÈJ\ÿŽ&.Ê@ ÿjñ)‰ ¹ÎѸ°èM\Ø@‘‘¸Ø…S%^X•XËý6FÉ…·Í…® £Íõw´Í… ˆäÄ¥Wb%ìz¶ç¬ñÅ_V^ìÍE¨·ˆ<ˆŠÒáÄìyަ-  ’WUI[ÛY hëNm^m.Ôq.Da„6ýƒVE¢kç‚€¢RÉΫÝq¦¨ HÑ`hsÑŒ&, 2Ú\*f÷ò$^´X=¨Cªÿ"’ÎÄ…_ Û\£‰‹. €ÈI\@ ÐZ! ‰‘¸@%¸ƒ”Q0²û÷(@#$q‰ ½d)Š-Šÿ˜Øÿ¸P×_Dƒ&2hRû=Ȧ†Ö=#%qs‹Üçýc@ çÕeŸÌB´jš¤Àm°nxKì÷¿ÁåíuÏHI\DFâ§­'1­|@^&ÖÄ…ÔÆ'®ÁF@‘š¸êª¹¸Î?‰‰ñåö ðeâJ\ж¤Zü3¸Àh⢠—ìÅJ•÷ﹸ¹+Z\…X«EDS’ÀF×HL\Dbâb´~þèmlEÅùóþÜÖЂ‹ð êh≉ €HL\•ÖÂ-üÕbN…™ÄÙ|o¹Fɉk„¸ @$—\^V/ZZ^HHHä=ŠØð&.Òûª#©m®vFÅ*a«Óh¤+ÿÑ–1"éD¾+oâ ÑÄ…}ñ"."â—zlÐ `$õ9èÇKcƒ‘¸þâK\4š¸p,^D_*…²`uz‹VìQGû øD› A÷ ¢Äü~zF₳ñ%.€M\X/¢­ÏC‰”÷¿˜sð¸ËÚoÐ 5qauù_R×_<‰ €bÉ ö6Î@'.|» PÚ\hRD/ ¥Ç üFâI\ÿ‰M\Ñ×àI\4@ë¹·q(I9è4°œ‰JFâBDr¥‰)‚'qý§õ üFbK\X\Ž5q¡5è‰J\4€‰ ³Í@=g$nÐ #q¡Å<– ”6èÿcVFDmÐÀo$ö’ë?v ôŽÑÌÿ‹ž^±&.€¸Ä…mQ8UJ04~è-â¢p·¹H­ÿS’¸ˆÛ AÀH Å8 Á’®qµ½°Ä€+Ð@V‹°2 ­ ÒñËœÑ/bÝf†R nåÀ&Btkº4‰¨!púÞµÁ¶3qa÷#Ð6è±x*õ"Q7hÙ{¥þ¾š¡°†žxKðsЀoÐ@j3P}SìoÜ·–ý#:ô¨CbƒÆ_Ê €Ñîª%0,40.–[¤ÃÜ"@ ðv~”Ñg:žP2š¸è‘¸ht„~4qÑ,qÐhâM\4K\4š¸FÍ@&®ÑÄE³Ä@£‰k4qÑ,qÐhâM\4K\4š¸FÍ@&®ÑÄE³Ä@£‰ ×âÅ¿ÔÒÅXñmßÄÄÊt$‰ÿHkѶˆ /éÂ4hà.ßøý h4qáXóFý³ q¯çBfÅØcówâú¹f\¾[@£‰ yq JÖÇ"L˜Â³êûJÔÿÈÉuÓbY?ò’J<‰ ‹Ô€\¾K\4š¸p¬C0üë ÑŽx¬kè‰H\)I\rù,qÐ`Ý ®ü¥qⱜùh1§$b$®ÿ(K…q$.¤f×ÿ¿ÿqµ¹°$®¼|–¸h°nÐ )qý¥,q¡ÄrÓë–„ÿh[#0W°[-"*&ŒÄõ¾¡i· –Ä…ºÊ·}/߀%.€¤4ÊäõÞØÛ8d´pµ|c¶º1v]ÿÅXíˆÐö—`ƒŧÈÛ0¶RbÝ\ø×–1ÌZΗoÀ@ Ò "X/#ÿ^|‰ µ²@O\DP¸Ú\ÿ õ1 <bßs‹Qb¯Õé~ù,qÐ Ý q~8Ö–õZo]˜˜Þ"Îjñ?Áq.‰ îy”:í?6Ë0¤äò Xâ AºAGµøµ·O•Ä5bFèéw¦1,qÐàÜ ñ}Œck=®ÝX£‰k%.€œ407”lãŒ&®Á4Š487h`Á6¼üŸÌ¡šÑÄEÄ@£#ô£‰‹f‰ €F×hâ¢Yâ ÑÄ5š¸h–¸h4q&.š%.€M\£‰‹f‰ €F×h⢾¡+Qh4q&.š•\D¯Ä5ØÀh⢥¡4@Ñ­ä\€ØÅ‹ÔܦkUÆÁ’p‹±š‚Õ©„¶züýO²wþRž¸h´ZÄ»x‘š«pmÐÀ–¸H±× ,ë,è´m–¸h4qáY¼HÝm˜+Q‘ Æv/ÇÿÿhK@þcw‘[=þÓmÛ,qÐhâºÕëÍnÓÀ¶†¡.éÑNpØLp«™WrP”¸h4qaø_,Õ5¶i™¸Ö¶a,‰Ä¸EyÝÛ_b]¶mÀ†"h4q¡8úÔÛ¦£ZDºÕ ã>ô%‘è«èÿ¢òðmõ@[ïKÓm°î@&.Ü‹ÿSw›– ‘·U£¹GíŒáô•à8¶z`ÙŒI³m°Ä@£‰ ÷âÅÿÔݦyVzâBÛ…y+Þdðmõ ï¶ Xâ H\ô;´™”Ä…ûFŠÿÔܦ+qýG¿ «yÿÿcí-ÜêñŸ®Û6`‰ € qÑf#æÈþ!êfä¿´Ï"”¸h –9clr¥Éº‘1·ø—%´L\4 ‰ ËÏhâs‹ÐX -¹°Þl8š¸†Kâ Á¸þþM\Ã2qÐà(¹èÞÌM\ôH\4€½E\‹Ð£ñ5€‰k$h¬ÐŽsaô陸üþ–¸hGè|¬ ×…ÕXf]þbTÅ:Žc5B`$%.€щ ÞŸøQv"ÊXìŠóÙèÓvè]`˜Š‘”¸h„Î-B‘£ŠddÜçs Ä@£‰‹6‰ëÿhâú÷ €F½mEŽ`UItŒáT ®»ÉÑHóÄ@£‰k¨'.°8>s qAW¢ÐhâÀÄŒvhÒ H!Ò\*O; ¨8AÒ¯ä ÑÄ5ð‰ 5!`¥Lü/LJà „a…l]Ô¯4š¸GâúƒB¡$ÔÚ #Ñ!Ú\ÿâJ­”¸h4q ¾Ä…R‡¡W‹˜‰ µBÄ‘¸à ž‰ €F×À%®¿¨qŽÖ¶úƒVxáI\ØêQŒ’‹ŽM{XÈÐhâÈÄõ‡`c £Íõ³Í…;q p› €dUÄ_×DýY‰‹ØÞ"Zu‰Þæú‹¥Í…Þ[¤ïP@ –[ËFbâ¢ü%¢–£ÿÚP@ ð9ôh'}üÿåf–ÑÄ…k\þÏ O\40wÿÀ&ß°lÎÃr…Ùhâ¢s‹4m®¿Ñá@I\G«Å!ž¸h@z‹È«¤PŽá­‡Uâ ŠÀ½hó²AŸ¸~!¶þþæG€À›b‘öi8ŸŒ6/ê%.„?ÿÿ#œ¸þ{K\4€m.ÄqPÿq_X6`‰ _­ü=q¡1ÿySìpO\4:B+máî¬þ%œ¸FK. ‘ž¸þþÅz –(”ôƒ+qa¾‹~låpO\4âê9¹è[ÈþcŠå䜉 ý ¸‘–¸h„'.\‡¡à½+ù/qm.,§ ÑHJ\4š¸h’¸Ðô"¶‚ínÿþ'Ô# Ô¨D‰ €FÌ8ƒ2˜˜âŸÛ‰ €Föè°‚ó(1"ãJ\ÿ±\„y«Æ}ƒà|Y܉ €FrâÂvŠ<îãw1£˜ØÞ"ŠqXz/enš®Q_þOÿ£>IO\4:ÎEymó iˆ”z"Ú\X²B‰ €Fš2È>%)qýG».}‚k‰qãÆ M\4š¸èðØ–RÇùNÿ±^£18@&®O\8{‹8"Õ"@ ´ ¿A¸ÐÛ\èA„ëð0êÜÿDóÄ@C`ƒÉá÷û÷oxÚù |‰‹ 0ȸ`~„önhlÐ@›ÐC¿¶#¼¡) %qýÆ’–F­K.€4ÐFzþcÖÄ’h@ÅáNGC1q Y€4ÐSÛß¿øïÝ@)¬à‰ë7FÅ8š¸h¸hlÐ@K\è7ý%¸~Ã’Øhâ¢wâ !°A×H®žøoäbk˜µ¹†Vâ Á¾Aã?¾aD7A{‹¿‘“Ô0é-­Ä@ƒ}ƒ¶jñ/æí¦CrœkØ'.€ª#ô^”;š¸è‘¸hÈNÿP¾i4qÑ:qÐèÜâhâ¢YÈÐhâM\4 Y€M\—¸þâÂÿ‹mfy­ÍàÝà Y€ɉ‹¤Dh’¸þØÖk‘× ßÃK\4¢)ˆÐ2qa[È}Ë®ÝA¸‡–¸hd'.8ÊD­k0ãy"z‰ –$þ£®DLS`Y‚:¨÷pÀ@&.¤Ä…V×Ð>qýý‹sJþÿ_ôc*Ð×7Þ=°Ä@£‰ =qaÔ5X·—‘]ëàØZ†¹Ò}ùÒLG®=°Ä@£‰ %q¡mgý‹oc,yîM±¸\(jPëíA¹‡–¸h4qaisáÚuýŸv‰ ûz\Öò=°Ä@‘¸zzzy 4×õ PâBÝ@ˆQ#Q£ÖÁµAã?ævŒ¿èóõØÆ¹ãXâ O\=XRÏÀ%.õÔªÕ:4/ÃÁ2{Xâ H\À¤N===`Œ€JÀ¹==4Nc¸{‹¸+¿XÛb£‰ {â K\PŒ”Ž’\z`ƹ°ÕHØ\dÔ:#in €6qýGNcÈÅ})ˆÐ`„~Ø'.€d‰ ™Eëzñ7IˆŒ&.Ò@Ñ?qõ@“ ¶Ä…RUÒ+èð#(qÐ@$.”Ò Q¢·Ãh^-Ž&.‡,@ \âBé#"ZóH‰ŒÖ½ÅÑÄEã ÑÅ‚£‰‹f! @£‰k4qÑ,dh4q&.š…,@&®ÑÄE³ ‘œ¸\ …Ú-ÿáWý'´üŒ! @#9qý@0qýGYòCäìÒà:²4Z-lµˆºr ¾Ôu‡Ž›—FªÔ Y€M\ƒ(qýŲ˜‡À1ƒòPgXÈÐhâL%–= ­ˆý;«E( @£‰k0'®ÿÈ%Fªú;XO ‡…,@&®K\8WËc©ÿÿÇYþ´Õ"@&®¡‘¸°-…ôm.€˜£Â±ö±é½jà«EÌ 4°Ü(Šè bÛ5ùWh†Ä@s&*Ö y‰‹t0D.9€Ò4Ðîb?ƒ.ã6£‰‹Ö! @š¸pœÀñŸ>ýŸÑ¹EZ‡,@ pâú‹ÔøÀv\Âhâʉ €Iµˆu/óhâ≠€6qýÿÿ÷q£‰k¨'.€¸Þ"Ö™ŒÑjq8%.€Øq.ôÃ4F{‹Ã*qÐèýhâ¢YÈÐhâM\4 Y€M\£‰‹f! @£‰k4qÑ,dh4q lâ"pƒÆPÜžY€M\ƒ7qýšÛ3! @£‰kàâhUä½Cv{"dˆ^‰k0‚A’¸PÜýÿçyÍCd{"qÝJ®ÁOµˆròÍCr{"qÐhµ8ªElÇÙ툠ÑÄ5p‰ Û„=Ú"硸=²4š¸KâúzÉÔÐÝžY€M\X-¢oÐ@â á툠ÑÄ5„Fè‡Æ zDÈÐhâM\4 Y€M\C(q  Y€¸eΞG­C €F×hâ¢YÈÐ&.ôktG×pK\4Ð[ËnF×0K\4@4`ìhâ¢{ÈÐ@–\è{~F×0K\4ЛbG×0N\4ÚæM\4 Y€í-Ž&.š…,@ †úê<î"MYÃ× "u~ˆ3øïàK\4š¸AâBZiƒ}Ù 1ik&.€[‰ ƒÆÚ„*›4`! @£‰k($®!¶I²4š¸QâÂX?D7iÀB €F×`/¹†à& XÈÐhâ¸Ä…å’<Õâÿ¡³I²4º)vP$.½Å!¶I²D§Ä5è) |ùë×à xŒ xǹÆÂþ™M°Ä@Ã>qýÿ7x9`(¬£‡%.€þ‰ Tv&®I\4Ü4} ŸÄ5,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k`|µÊ6ÆÖ d&ýŸHõ¸h´Í5ˆ–Sè1âZpLa|ê"qÐh›k0$®¿H·h %´Ý¨«rþþEIkxÔHâ Ñ6× J\ð”€H,Ë‘üÿq™ õ‘¸h´Í5×0DksýÇr«êÂC¬‰ Î&6qÐh›kÈ$®ÿ¨‡Ï£-bŸÿà?†¾S ÿ’’¸þ™¸h´Í5¸Zq…; ¯…þKX5žÍ¨B1ŠKâ@¶¹aâÂz`8J툑Nþ¢%.ªñnöÀÚ '9qÐh›kÐ$®¿˜Ûw×<ÿG/U°Vm˜ÕâÜ·ýEW‚â´¦>J F\â Ñ6× é-¢¥m®ÿdµ¹þâksaI’¸Ú^Ä%.€ms dâ‚wØþþÇ‘¸Pê;<Í/,½ÅÿˆÎ ¶ 8þÿEx@/¢ð$.b{‹4Úæ!#ô„Šâ7 ?Î@£m®ÑÄ…gøŸ<…°Ä@£m®Ñ¹EšÍ-Ðh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›kàÉ4¨3}C¿Ä@£m®A¸ðoÐ m£Å`J\4Úæ‰ ßzÒ6Z ¦Ä@£m®¡¸ˆßh1¨@¶¹wâ"u£Å J\4Úæ„‰ eƒi-Uâ Ñ6× I\¸6h´ÑbP%.€ms šÞ"® $m´T‰ €FÛ\™¸oÐøÿŸÄƒ)qÐh›kˆÐºkañ$.€ms&.š%.€msÎ-Ò,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›k4qÑ,qÐh›kà×_¤›`S;„nÀÀ"Jhý'Œ`‰ €FÛ\ƒ(qý'¼1Sà’ˆK\4ÚæÐÄõ÷?¶{1°lÌÀ¼/ã/úúf30˜ÈZ蕸h´Í5êÎÌE‚ÿqìÏ@¤)¤ûUÐWÒA!,qÐh›k ×0DÚ†}cB[Jù‹(ÃpŸ'> ‰ €FÛ\ƒ"q¡”13ГæR{ E‹£ÿ@â Ñ6×À&.ô’…ø0ÐûøoB kÓ–¸h´Í5ؾ=±¸ÕŠ6@¶¹4qýG®ÿðÝ€ñccF›ë/–6æ½ôL\4Úæ¾#ô¶Ü–¸h´Í5š¸h–¸h´Í5:·H³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®ÑÄE³Ä@£m®K\ÿ¢¬bFÞ•1ø6]“¸h´Í5%ÊÒ@RnΉ €FÛ\ž¸Ðfý”›.ÈI\4Úæœ‰kÐmº 'qÐh›k0&®A¸é‚œÄ@£m®A”¸þ¢ì¾\›.ÈI\4Úæ\%ªä ÚtANâ Ñ6×àê-¢&ºA´é‚œÄ@£m®O\X¶O ¾Mä$.€ms ­ú¡pÇ?\—JxœîîïZZX´´³þýì+H‡-q~a)rLNIg ðñòööö1t­«®¡¸ÊÊÄ¥ÕÏÁQp§Éēƥc£££=Z–›ˆb:|v[&Ê­s <}Ò†‚SÍÈ–º´„-Iˆ*o2gA5 >[–‚h3þñø#?€MMM F* †‰£` €b˜øoŒ@À41š1F  Ñ41 Ð@:éž%8€ãxeCDà$ µ4$Bd46- Ü¢ ˆÑË)R{Pë®Ò855K{ Þ—ÿûþ*oéó>œˆüçI6f²¸—vquiµ=œ!´ðçøWxžwhœÀ²,Û¶Ÿ‘’öçÝ£ib4M@RéØ`Ø5ÝÙ¹‹+ø‘S,„Ô¡C’ú¿'ž¥ÏQ>Aéw'øœžàÇ ™4™îOž?AéçÄ€Y:¶8§[˜°ƒ»¹åCHV¸ÁWOp§ëÙ{‚o‰ã,¬•ô''h''O09Áôñ=‘ "`Dv"A\ýf EtxàüvBZ¢vBÂÄý NÜ1U: »0 w"YìíÂ$¾;!=W †a2!ÕN€"]ÜP‰ ³Íó€ðº¹„(ØrbÒ@ÁÓĉ·¾¦ŸhiiïéóO¨`4MŒà4@£kjFÓzš Ñµw£8Mü£h4MŒt@£ib €M£Ðhšè €FÓÄ(@4š&F: ¤4ñþCð"a‚ÕüÅ©7@Sò÷ÿ‚Z 6"«$JÏ( JšÀâH¢æß¿xã gÜb4š& Œ4+þbr¸,…,Þ ñŽ­ÀA¶j’m0XŠxš@V9š2hGšø‹Y¨#×X£#MàP‚f´Â$”ÞF@áhO`MHÙ{š€gb¼Q‹·Ø¨¿83趦 š€ÂYN`¯þãM(˜ì4¯îø‹ÒM4„§îÀÞÆÄŸ&°Ä0éiâÿÿ¿øÌþÿ4MÐmÚqERQ@DÒmO  Rúèm~¬‰_“ѧ@t1P{„êŽÑ~@ Ð8&åÑ9š hh4MŒt@è}Ñ¿”ÄAþ¡†\³Gµ@Ît@£ib €M£8ML£h´œè €FÓÄ(@4š&F: Ñ41 Ð@¦‰Q€h4MŒt@£ib €M£Ðhšè €FÓÄ(@4š&F: Ñ41 Ð@¦‰Q€h4MŒt@£ib €§‰_ÃÀ|ùkh8§‰ÿÿFÓ9 € iç÷mgÚþ Qô"MŒÖÄ€"&ÎHyAš„๡—&þƒÒÄ¿Ñ4A2 i"Í3B¨BH¦.Í3**Jf(–¿FÓ© €¤ ÏÀÄô¯IŸ;PP&ªi(ÖÿFÓ‰ €ð§ uO#£VÏ4™ FEyZÛlOüM¤€BI Ýwhi¢:4tr´Œ„Ä‹ÿ.K Á41Úž ršøûP…ºTµQhhùäÉBÿþ±Å41Úž RšøûûÏ´iþ 'Š6©êÐÉ¡åFFÕÀr¢® ^š '‘J™¿£í‰¡%MLûûwZš(–FFFåÀ4ÁZ׆’0ÒÿmO u@èiâF9Z^j49¹îø - $´Ø€§ hyñ÷ïh{bH€B«;þÓÄ4€«*8M‹ PÝQ†\. J…¿hå”ðzd´=A& ”6æŸ?¨Í P9QmdZ^*'.{¢¤ hóá/f{Ìøûop¤‰ÑöÉ €ðôEϰq²IÕ†‚:ѵڠ¾(z9ãüEiU — £í‰!uÌ ¥ P¢ÁÉ™&%jc–GÓÄ%)Âu¼E1XÒÄh{‚t@xÒD[ ''§ŒgšPuu-°œJ“ø‡½ùÑÆüOƒ¥œmO Oš61Ù€©"BJJƨ5B#,lâœ+GoOüE´Fì™i(·K ÿ“Öošø÷Ϙ*4>Iyþð û?T×Oü¢^šÇïjš˜†²>©â£„Ä™¡¹¦{{éìpÓ4e ë4@Ó´m¡:T×YýŸ&0Îzþ‹VE —'pú?æ4ÇuC‘ib¯½û‡/M G¦þ#ª”Ê9¦‘uüEKC¼~ Âi‚˜t2*€~ãHeâž”“Þ‘Åq¥‰ÿÈò(ibh×/4ÜÓí ”kC댿è·á!JTô4AJ[e€öåÄ/²ÒÄß¿#8MÐð¯;þ‘’&+i‹Ža–&ˆŒ41+L2Sî™K»«ÏÐoO`”xÛèÊ0Ú‡E{ €¦ ôEUªí.’6Ǧ³8ûËص'õ;ǬPº.˜}˜¡Üï BicæT—öþþc@Ð?U2³#MüÈ`H¦ €"&0×hb/'À9cÚ_`šdƒëž¡™&ˆ`šÀX£ùOÛþ]±Ü³^—û‚mHuÇ_þýopùo`Ý34Ó@“&P×hþû¬­­-&&ÖW/¦Ž‘&þºÒ{4M ˆˆºm濾„¾ ‰Oø÷O5MüöûÏà£i‚t@Û˜k4ÿ ž ‰ ×s+ÑêŽÑ41äÓ@‘ܦ p’(ŒïòrEFÓÄ0KDxÌ 5I´ù Š*ŒI¼ÉMÃ,M‰iâÌí÷ÅÄëû€•£uÇpKDbš`s}zÿu©úS§Bêë]¡Åò˜r„«8 ™¢ ø‹ž&°-bܹŽEÆÅí&3þñ4@$¦‰WI¹ÞÏ!Àº£°Þ^î¥ó?‘׃5Mü%&M`¦ eINpÙßCòŒ3€"q›««‹œÜ³ÞÞgrrrÅO"n"8Ó0VÀ¥a\º¥‰¿ØÓÊr;ØÅôyÑ¿ð%zÈÂ(Bèiâ/|Äl(€"1MøNälhœîRŒs^KšSa=ÓÄ_ìi)¶Œš&þc—GJIH©Kšø;”Ó@Qg=&¡4Ìè4’ÕQ£m}*õUË0ND^šÀ­nP¥‰?4M8·ˆ õº €h˜& ë.MüùCãrGé9$Ó@Q-MØ©œFOð²b@Ú¥ ŒööÄ@zÝñh§ €¢Ršhs²JNŽsÊ%M P¿ãfš@é*`éw É!¯ÂƒG=Ö~þ™ú¡ˆiB+9yBM@™–V€“ÕÇüKu´¿ÿ ŠSœHD4àÔlUóÏ´}ÐgèŒmÓcÍäoèÑ ÿ†T¢ ªÔ¥ÿâ’ÿy¢F½tt¾K91ÄÒ@Q#M´ù¨¿²jÒÎú>£iž†@ŠO€¢FšPwÖ?]Ób•ÔŒ¦‰¡Ù¾Dv-@Q§ßáãóªÔجQ|ë¶Gæê`JR0@‘™&Ðöé¨ë÷ĵûjêƒnÝö]LIš *?áû$ήĩLÝyÐÕ“#´uKIš *¥ uý N5VêOž ººc4Mœ&ˆZçÔ¨XÅÅ=ñétuÇhš 9MÕÎ.*©qŠsþW6š&†hš@Zg@TKmOšã|âFÓÄÐ/'ˆŠgœiÕ8Õ¼ÄisM(fäþb¦ ‚ãèÿã\žƒS+xŽ+̈šçÞùœþ7øÓZ­Ü œ&pIÿý‹_ò/-Ò@Qû,Ä¡QN@×úÀ™HˉbÔ[á…~˜&ÚŒ<Ò’-”Ùøÿ¨æ`Lâ£MþS-MЈLh+¿ýPc™ÆJPä•9X—ì d‘#¥ \:QÏÝ¢R𠦉Aq„Ž4ñQb`I%´KÈg3cIè+»PÎßCœÏ‹ž&þR·î ib‘&h¼lål ßØ|‡·î€³Pöü¥Jš ¦î@^å‹;M ŸÍ‹Qw ïL­4@øÓÄ}Ø@vš@[²ó¢\$ÓK¿‘½BRšøóç/êªaÔ‚â4uÕj­É€=M ¯#Ʋ¾ø/Uë€Â›&ë ýL ÑÈL‘+É¿ˆj­ÑDž?À™ñBÜž fÝuu0žVqi-1Ю=@øÓÄ¿™™ ™ ,4ÈlO y=Sœ&p!Ì4TM - FJH<ê®ÆÖ{@?¾£nø"‰ª5D©PwLE€"&fùgB€ÿ¬ä”hõ&ö4A®Ÿ`iR4`0FÇ1É,'ˆPš@Xšø‹J Žóÿ¼åÄJÚ¿Q(­ŒÑ4AFš Buö4q<¬EÑ =JªCXi+m‰Ñr‚’4@„ʉ™³f+DÝñva$âj¸Fšø´Qÿ?z ø—j]©Ñ90*¦ €BK¨kê°–Hiùê¿uÇè¼èM„š&þWN ÝLþéŠêÁwŽîÈ[Liš iâ8ÖrKš€mn=[yàm¦4M¡râ8f9táðhšŽi €¤ lí ¤ëÉÿþEì}û;8Û£i‚ä4@d´'†Ö\ùhš 9Mí‰Ñ41ÌÓ@‘ÓžMÃ;MÞ4ᜠ6øõ4Ahb…ZCgÑmF»C ¡ÛšJœÃº8]r.¦ ª®¿„Ó@áMÀDþÿ†x𠏯‡jiâ/›Ñbæ/.kñ¯ÒþKÀÝ §‰¿Ó@áOÃ`=&–³•1Öø`Ì;S6ÜÑŒsæål^ÌYo|«uÿÿÇ~¢/òy°h‡c.ò"˜&hD¥ øi¸hk|þsšIiâ/®4å,½¿Xe°®Ö…›…¦Y²](Þ²9MMÓjvû;Àiâ?ò8Üë9h&Pï4Å·ú ËÊLäÕv¸–e!@˜+‰HDË4êL~þþ²~â?òz ¬­,Å*Æ’¶¿ÔHê2Óò©Œ„á]¤€?M Óê©´4˜G¬½Cxê7úÝí1k)O¿XÛ˜(§lRš&/óÆmá4@tK4('+j~#’Âo‚ýli‚ºí‰ÿ8ú„Úñ¤ ìKzÿâOÉJ4ôÓú¢\Âí lëCÑûToÝb,ÓEoybDz$¢.éžpû/šúB¦¿Äô;h¥ hãâ7飉4YçE‡¶ëdy‹ˆñ €êimñ>6æ°Oÿ § Âã˜D‡~JšýŽßð4ñãó¤Ïw=Æ'(ÚØ3:F÷4@#hs4M™&h4MŒ¦ ô4@£ib4M § €M£i=MÐhšMèi €FÓÄhš@O4š&FÓzš Ñ41š&ÐÓ@°uV´OE1ÓëkQV \_Iƒt‘Ó@¨r‚N#©ë'ˆZ_‹>}…ºl—Ei&hä¥ ´5Ô;йPøuu0ÞõµØŽ¾¤ßAºÈi €FhšÀ¶à„šiâ/Ž4ñÿúZÜi‚Öé"§ €¢ãÝAUNüǾžvi‚ˆõµØŽ¾¤×AºÈi €è·F—ޱFõl]¢Òõžx×èâ__‹µœ ÇAºÈ¡@tXSƒ±ZšZ1€e.þ558Ê j·>ñ¯ÑÅ»oÝHqÔ?H9Ј.i¹§rš@[£û{PÔÿqô;®¯E—¡ßAºÈ@ô]{G鉘XýñsE?ñi‚Š‹rñÛLp}-¢ÄÂHt8H9àh¥‰ß¿ ¥‰Á4Ž9à­oÜi €†zš ÊÝÑ4hDŸ5º¨Z¨kt ô;Fç;ˆJDŸ5ºh[ÞGDÌ Ý4@ôÇDÌMƒ8M½Ó½G6GÓéi €F×OŒ¦ °k‘ît Ñ41š&ÐË €M£i=MÐhšMèi €FÓÄhš@O4š&FÓzš ¶Î Û‰ h¢$¬¨ø‹O˜¬5ºtXK8MÐHJX'@q ‘&ð,ýOæ]:¬Æ%œ&h¤Ÿ£‹¾íH1œGLâ»S›‚5ºtXK8MЈLدý‹e®½xçw)X£K‡Õ¸„Ó@Ñt®{ý=Ði‚àA”ÿ8s”Àâ, ÖèÒa5.á4@´^?A¸þ¦Ä#èktñžgEtš@”˜‡&bÖ5ÄÖĬѥÇj\Âi €è‘&+HjV‹$®Ñ%#MüG,lÇ—ÓÆ$~.VãND‡4óøZêøcîoýÜ6®ö©u>›ñ¯Ñ¥Ãj\Âi €èRwÀJ´\G%¿ö{‹þ?z¿ó ,+z ú¼5º´_K8M=Ú˜XBøï_ê§ òÏÑEôè7Ž9ˆ×cýÖèþG;‘žší‰ßDŸË'ލKC,MØ @ ĺmª¥ ,ktñÁ>:ßϵ@ôÚˆr"=7¦ Òë€Mèi €FÓÄhš@O4š&FÓzš Ñ41š&ÐÓ@¦‰Ñ4ž&h4MŒ¦ ô4@£ib4M § €M£i=MÐÈ;GPÿ:\,÷‹¢m¨Ç6©Š¼à»±´\“‰œ&h¤­½Ãqý"­Ï8ÃÔ]©KÒ]Ükuéz .ò]€‘iÏÉÆÔX©‹g.ƾ°£u±¯Õ¥ßºÈi €FèºmlGRm¥.ž5ºø"ùTnº¨‹œ&hîÃzS95WêâY£K\š€u‘Ó@À3Øq/ÙùO•ºD­ÑÅŸ&è~ .rš ‘›&°G<5VêµF—¸4A·u‘û¢D»©YšÀ<¨ö?-Vêâ^£‹å _ä8u‘û¢D‡;ìGǶ‡Ø8&@Ñ|íF»ˆæ×¦ Ó@Ñ'M`¹$g4M Ú4@t*'°ÞX1š&gš º¦‰¿GÓÄHDçr‚î-ÏÑ4Azš zô;ðôÍiž8FÓéi €è1>Ñï gš«y(MDqÌ£øÿë2ßæú™$XîüÂ2¢ˆ}Œ×…oC7MÐÈMØ""M`Ýì>¼Ò@ ÷ù|i‚ÀÝ€q•ÿq%ša’&h4M`¦ , mþbIXˉ¿Ã MЈNˆs_°¬P€Wÿ±Ÿ=…¶Úm†û/Úý¢¸•A_zÊGWøý8«¿ÔO4RÓn€kÕ,iàï_Â'øbM(ñ§ *¶ÕÓ@¦ Ú¤‰ÿ±¯ÜÀÞžÅq承H寂]Š¦Ï‘Ó@¦ :ŒYýý‹6øs¡.Z_©òcŠKó—Ò±ä4@£i‚ã˜Ñ–ðã:öó¬@Œ$E«4´Î €FÓ}ƶ±ÜQŽv®:úÞô˜Ç—&(?T¹œ Ñ4A¯ù¼i½5Šë€Yx3sè„Â4Ä Ñ4A—öö4½=µ J(MP\N ±ˆ¶ó¢ œ¨þw„”¸ÚXúÈ'Ã#½‹#Mü§Ò¡ºÈi €è~.ÿˆLÄvz²,E€¢×ù˜h›tÿÿÿO³-M£i‚Â4@4>o6>‹eSͶ¯ •41¸Ú\H}Q€¢K{â/¶æͶΦ û¢DÛ~êåf¨]ñ_w Ú4@´î‹â^€‰y$ÿhši €èqÏÒR]¼ËØhv.Ïhš )M=ÚˆÙ»ÿ¸äMƒ&MÐè8&å©Éþk8¤ €MTHïÿÿ7 Ò@ìµwxG”p+ù‹ž&ИàÊrè¦ €M¸‰Z-‡=M ér €Fzš@`Žeˆ%]N¨³ØÛÒH³`8“"íúìÈi €F|š@=í}Íþl{>ÐË‚i‚¸uµ„æ i:ˆƒœ&h„§ \Gcà½óð/©í ´Y?ôÅRX7a=µóÎYZ¬Û Ñ4A“4ñÇ]ÔQ~œ{QÑìûÿýbjšÞM @£i‚iâÿ_[êqL ¢ß㲚“jK«p¦ €MØÚÂu8%Yí‰ÿ¨»×Ñ÷Âs-7ötDe¹8Ó@Ü4ýÀd܇hâ^üH\_gšÀ¢âÿ,i5MP¹Ù‰œ&ht“ò–ý/¤Ñm¬ã˜h{‘qÕÿÿbß“Œe–¦u@ ¦5º´êlÑ:MüG¬cÛkt±ŸˆûÇžä¿(‹’þRiY.Î4@ƒi.é—‘ÿþý¶”ð7\Œîó¸B™¾# ÔK4˜ÖèbiG¡÷ØÑâŒQÒÄoÔ妣i‚Œ4@ƒi.ÚÛÿXêTŒ4),@¥´œibˆÌwÐ`Z£‹žHþþÅú.JÑO¿1jÑ4A„k‘Ö€Ð`Z£‹–&puãq¥‰ß°”1š&(+'h0­ÑŵÅW¯ë7r!1Úƒ9M ±hЬÑýïx§tCû¿‘SÂàéw -€är€4kt±ÕèwqÒz|‚ºiâÏPÈi €ý8&îM¤¥ €ücÛ”¯M¤¥ €ïMèi €FÓÄhš@O4š&è’&€õ)1ôM/!í©š&h4M Â4ñ÷/¯þ¿ÔM4š&è‘&€‘‹Y ¡ ¹ZÀeÐ%ÒL&ûû—òDœ&h4MÐ1M@â‰úƒšDþ ¦hþÇHMP&JR£fš ‘œ&°ïý¥mš@-*Ð…àjš€hºi”&hD§ ¬{é&ÐSR-‚('DhŸ&hd§ ¸”‰±‡cü ·ž4ñ—`tb-ÐÚ˜8•R;MÐhš@bÜÃGvšøƒÒjÀÝžøKt{‚†i €hš&¦NŠÌ  ÜÔÁ—&ãéh <°,·Æ79‡%M ÷;þüÁÖïø‹ÜËøƒ”2°÷;¨ÓEND¿41KüOlim¥ü_ ëñ­§ÿ}h Ñ»À"Cúà-Æ1ˆ–iãàHŸ:Ì‚P 8wêT' ’Ûø6R’&…FÄ?Æ@û4@tHPŒýH).=(ÒÊU*hËþpݺAJšóD§4ñ9i ƒ-M L‚w)ÞÖæÐM4Pi™Eëʃä~îÚâ/ÖvÆ0KDÃ41ÛØÒJ}2øÆ'° ‚­1oÞïC § €¢iš@)+õzcÀê¬{©fë]· @tH(½ D)m P¿ûÞßÑ4@£ó¢4³uȦ €M£i=MÐhšMèi €FÓÄhš@O4š&hŸ&ûß>°+Ëÿc‘EÕJÁ)WÈi €FÓÊ 'öà•&tj²$•Ò@¦ :¦ ´S1.®Ç6b†v@Æå7È×Üc?%‹ä4@#2MÐཛópo°è§ù ›ýçm×Ć’Ëh$¦ :ÿèp¦ ô’Þø‹÷4ôÆ –ƒ4‰/Õ €Fbš “­8Òü §ÿ1.®G?çÇQí˜iK!DZå\wÐhš wš€wþc;YcRþ/®4kŸ¼4@£i‚.ã±Úƒý’lsóÿ±Ÿæƒ™&ÈoO ±ˆÆg!bíeQý°è!”&úh8;ÇßøëŽ¿8Oç%9MϳÂê°˜&†Ô8&@ÑíŒ3Ìãï©{QÍhš Zš ú¤ ô kÈ®öFÓÒ@Ñ+M _ÓGA7z4MÐ!M½ë »Ñ£i‚i €è”&ðÜ[3ÚÆli €èÐïÀ’FÛƒ9MÆ'PNÔíw î4@£ã˜£i=MÐhšMèi €FÓÄhš@O4š&FÓzš Ñ4Aû4Aí5º´h˜#§ €Mt('¨¼F—]5ä4@£i‚Ži‚*ktQnÚü‹vQUÒ@Q=M Ê{Oš |.r¹‚çRE Ò@Q¿œŒg+ ®µw”­Ñ¥}š ÑºƒÞi‚Ò5º¨ijÅ•rš Ñ4AÿrZ6¹F½œ N£9MÐhš Ëø×èÒ¾î Ñ4Aß4Aù]”"‚&ý€M£ã˜èi €FÓÄhš@O4š&FÓzš :¬½£áˆìhš Eš Ñ41š&ÐÓ@Ñ#M ïôˆ”1š&HKD·µüègiŒ¦‰A›&ˆÖkt`‹Ï`IC ¹ €èRN ¯Öib耢۞ŸÑ41d@¶'F: Ñ~Ç(@D×qÌ¢M¤€M£Ðè|Ç(@4š&F: Ñ41 Ð@¦‰Q€h4MŒt@£{~F: j§‰A~A.ˆ£i‚@Ã?Müÿ5š&H4ÜÓ4YŒ¦ @ ûrâ×hš Ðh{b €„òºúO6<›IEND®B`‚PK ì2²+ nn-Pictures/10000000000001D20000012BC408A0F0.png‰PNG  IHDRÒ+]#òÕgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEŽŽŽfffÿÿÿÌÌ̲ˆ§åIDATxÚb`à Ë(f €F£tØ€Òah4J‡ Ñ(v €F£tØ€Òah4J‡ Ñ(v €F£tØ€Òah4J‡ Ñ(v €F£tØ€Òa-JÉ3‡}ŒŒÄO®+F£”‘‘è8R @1 %™¡IX$6‰‹ÓÑ(¥Î(…g(djù‰œé#!̈b ‚‚éK3"¢›n2’…ä§³‘ W”2"B™\~¢¤HΈçiÓ 1-)¢@1`”wˆòž`5J‘´1"—´ÈQÍ‚b:#v²¢Q@4 œQŠ^ ¢ä%ôl‡¥,ÈqŽ‘‘ó,ª…¨:‘,&R@1`o“â‰RBu)ž(En$F)­@1`Æ(J0âoÿ`«KqE)Ró³pÅ¥£Í_²@1`v°Õox+UâêRFÔJk”â¶p G”b)] µx1ÛÈhƒ è*°E)öïh4‘ˆKÿuLƒ£.EIÌ~)²zF¨FÁ‹£_: HDËa{Rcd4¶QÊHÒ0Áh”RM'×H‹ÑÑ(¥ ÑùÒah4J‡ Ñ(v €F£tØ€Òah4J‡ r¢tô„‹A ˆ¬(eƒÐh”;@£Q:ì@Fé°4¥Ãú|)1Cçà(e$Öœ ACúdix@¡D)#ñQÊHtˆ3âgRª€Â¥ðE$HkI£)JQH,"fàâPx”B$Á¦ 1QåFcŠh@¨Q Y=Â_3‚´žiÉ "JQ&…ˆR$匨QÍ eD(@5s4FI„Z—2"eJ¤zh%2JÄ!“Œ(1ÈŒ=Já"ˆºI%U š9 ˆ„¥HE.J”¢¬N`‚Dz”B£GÁ‹¥H/Î(E¶f­ÅˈZÌ¢•¸s)fÆÄ¥ŒÌXKjŒ\:ÚP"ÑQŠR—Â"…⺥òD©VG ^r@aë—2¢×¥-^x¤Óâ…•žh-^x]ÊȈ‘K1Z¼£€x@1zÄH¡ü(À ˆÞQJhÈh4J)4:Æ;ì@‘¥£ë3 ²Öæ„Á ht9Ù°4¥ÃÐh”;@£Q:ì@Fé°4¥ÃÐh”;@£Q:ì@Fé°4¥Ã¶(E?4ã ðä)B)Æ:QäÃqFÏ£7 ìQŠv>'øb õ”3–Ñ(¥/ \QŠXÌ€|d+–åe(’!i@7uí ÒêàQ@e@(QÊ,ˆSɺúétXÖ(ÁaA[tˆÁ £€ª €P£<9ƒ-JQ×öâŽRôãZQõ¢G)DÝètu@¡E)jöB¬+ÃÈfgH2b.;ÃЋVn¼4„?JQZKr)¢uŒ¥«½ÑÎîÔ„+J±lŸ€E ±u)Ò]!È•ǶŒQ@%@Ø£å`]äóŽQ÷V`oñ"Ë!Û‹‘£-^ڀ¥£`H€Òah4J‡ Ñ(v €F£tØ€Òah4J‡ Ñ(v €è¥£{èˆNQ::?B?@£Q:ì@Fé°4¥ÃÐh”;@”D)ñ7ªF)@Q¥$Ü;¥tDi”Âr+Ò*mÔ…¢`¡Ñ(¥# Š¢å>vÌÃ{Ùx4Jéˆ u)Zb[66¥tDY‹¾º=JG£t @QÚ‰Á²¸žc‡Óh”ÒZ¼è‹ò1ŠâÑ(¥+ jôK‘רcˆŒF)½@Ž ;@£Q:ì@Fé°D§(]×@?@tZ{4šwèhtíѰ4Z—;@£Q:ì@Fé°4¥ÃÐh”;@T‹R¬GÏ1ŽF)ý@Q1J1W"1ŽF逢~”"¯D]{4 €h¥¨s¥£QJo@TRŒéïÑ‚—Î €¨Þ<ÒDÝ\Ê2¥ˆæQ:Z—ÒÕ£m%Òh”ÒÐèèѰ4¥ÃÐh”;@£k† ÑµGÃÐèÚ£ah´.v €è¥£çÀÑ Ðh”;@£Q:ì@Fé°4¥ÃÐh”;@˜QÊHÌ¡c$ÞÙÃ7˜LFñ €°E)!N^”’oÀ( ž(E½ìõJ-´‹ºÏ%CS /eAº|xôfZš€Â¥È×#b\|¿ýÒYlÏ"G)® jGµ@á+x‘O¨B>ZŽýÂDŒ k‘oœÅ¨KÔ¢: ¨OóùX*´“Ñ£”г¨/jÍÈ8ZòRŽ\ŠZØB#å.Yì7Õâ¸q¹àE?øj4:© ˆ¸(Å^—b½|˜`]Ê8Z—Òî(eA>Û{‹—¹íÊHB‹wôfZ€¢æèîíèè@Qu@g~R:€ãv €F£tØ€Òah4J‡ Ñ¥ÙÃÐèÒìahô–áah4J‡ Ô(ÃÃh7Ü@1ŒTà Ðh”;@£Q:ì@Fé°4¥ÃÐh”;@£Q:ì@a‹RäÑ$0Ô.t €°G) ÚêM¬cç( €D)ÆÚkÌ;„1×úa¥F½@aãÅ~Q;#êB]”(Å<]s™îèÐ+½@¡ÍÄ€ö(E߬†’Ká÷¼C«X”r¢ntì•^ €°M®1¢¯´&¥Ø×dclô„=JE*QQŠ~8ÆšÑ8¥# ÂQʈF!oAÃU.•ä­]Ʀž‘óøLJˆ QÊBôô8µ¢”ªP¢O“`Á4ˆy@1 D½(Åy»â XH”¢*ĸÅs‘ š ö˰Xy:7 î5È:¡m!:A‚+Ò±\΀¾\5Ö1,'¸¨ €¨¥¸o7@¸¥(¢Œh·0b[ë͈÷²FlG>Cƒé„n$kQ5`ã ˜y ÙD"Ó¡XÈ?JÑO«&"pQ@Q±àÅu»ÂVøIËhÎC$OÌûXH8³3JqüÕtlªðD)¦+YÐW¤c\€êcÌ(Å•.õšG8o7 .JqìÁA %FìQŠr7£Û!FF¬Å#¹QJ|àÂ@Q'—²à»Ý€¨(Åwñ–kpG .7Ñ J1ÍAñ-#¶²œŒ\JdàÂ@Ñ$JñÖ¥Œ˜u)®jÏ.Â/ªi8Tá0­.Åv •(ö c,8ú†2‚‹ ˆjQŠûvŒæ–&’v¸NFÔö"j!†)ŽªÛ†4UØÊFœ—ßàˆ|Fâ¶bb´x‘3(Ö-D(e:¡ÀE4°£GÝ.jvA©°šœú‹—‰ìhR² €x@½[E”7ˆöë ŒRb¹S° €FÇx‡ Ñ(v €F£tØ€Òaˆ¾Q:ºì“ €è»4{tE&@.Ív €F—f;@£Í£ah4J‡ Ñ(v €F£tØ€Òah4J‡ Ì(E™‹Æº¸”cîÏ¡rÐõmˆ(Ų6‰‡k-òè±KD€Â¥H‘Áˆ=pÑæÓñ…7²)„£”ÀÊéQ@ \QŠ´< m 0æ"”zè+©KXÑ¢eòÊi´õ*,£Ç­“o”âYË‚mÑ4#¾åÕ˜QŠ}ÖUe£çÝ]J8Jñ׊ºØK.%Ä€"&—b[îLD”bžöŠ7J Žâ@Wð²°¥X²\Ê‚Wpˆ¬ºËÒeb(\QÊHÌÂæÑ(%þ(E_î ë–¢7EÑ[¼¨‹­Q[¼,ŒèÊ0õâÞÀ7 €"}ô9pI\I=:zD@d ’¥£‚ô4:Æ;ì@Fé°4¥ÃÐh”;@£K³‡ Ñ¥ÙÃÐèAèÃÐh”;@XnCÃhU7Ü@1ŒTà Ðh”;@£Q:ì@Fé°4¥ÃÐh”;@£Q:ì@a‹RÜÛ[ÑN+ħ"9º¶î €H‹Rl lˆô„/JÑ×ça¹›j´+°ÝM0 hË/ö“óYp-ÚÆP¹!u³ÌèP2m@¡ÍÄ€ž[0w˰à:­œç‚ëÑ¡dÚ€Â6¹†çâÔ«TpG)žeø£€¶ €ÈR´š—ÐÞ–Ñ(¥ ¢¢”˜ºttSá`„=J±œœ§Å‹ëÐ~^Fm@^¨BÉÉù£`@±öˆqt'à4ºœlØ€Òah4J‡ Ñ(v €F£tØ€Òaˆò(Ý*6È@Q!JGç> Ñ(v €F£tØ€Òah4J‡ Ñ(v €F£tØ€ÒaÏuX¦M±¬ÅÒAˆ”(EgŒFé „;J‰Xy=dw *@x¢”ðúÀÑ(Œ €pF)‘kíG£tЀ"%J‘s)bÙh”2@äFéhóhЀ""JGëÒ¡ÇmNŒ£-Þ! ˆÐèáµö£Q:È@$¸Ö~4J Ñ1Þah4J‡ Ñ(v €F£tØ€¢B”Ž®ä\ €(ÒÑl1È@n v €F£tØ€½bØ€½bØ€=wØ€Òah4J‡ Ñ(v €F£tØ€Òah4J‡ Ñ(v €F£tØ€Òah4J‡ Ñ(v €F£tØ€Òa Üe}òŸ@IEND®B`‚PK ì2_…é¼¼-Pictures/100000000000015E000000FA1AA2A196.png‰PNG  IHDR^úÞßdgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEÆ¥cŠsFœ‰d:|ééêõüÿ‚e,óûv[&£¢¢úúùÉ­u <}ÓuvÕŒˆ,H‡¬¬¬}a*-Iˆ*oA5 ‚g3þñø#?€3P!<}ȱ‚)nrLN7y´•VëÕÕÕ³Ó ;}MMMÿîõò ¼û+ Än¾¾¾È¨h©ŽX¬’]•j)›ƒRÄÄÃħiǦdýüüƨk;X”*oëÿ÷òòò’’’Œq:ǧf€a$ŸŸŸø÷óþÿøEDF¢`ýþýÊÊÉ 8ìÕÏÁúù÷‚nEÿþ÷~cÿøÿõóï¹¹¹½½»È¨f„„„Ã¥f===]ACÌÌÿ™™™ $j3v6S&B‚'Cƒ2uÚ×à%A4w:W“ %k(D„5R+G†(m9V’4QŽ.r8z5x9{.J‰7T‘0M‹/s">*F…8U‘-q1t)E…+o8U’/LŠ &l#>,p)E„0t6x1M‹1NŒ2NŒ 'l0LŠ6y‡ž$@€:{ 'l/K‰.r0s2OŒ$@ &k9{,q-Jˆ5w7T2O 'm3O*F†/s!=~.K‰/KŠ-q+H‡*G†8z1u/r&A‚1u &k'B‚5QŽ(Dƒ6x (m5Q9V“œŽ¯#? %j4PŽ%@7y9W“0t,pÀÀ¿6RüûúþþþEº ¡mY>?²²²ßßÞÌñÐÏÌL%µ÷÷÷éU0ýþÿ«˜q–ùžˆZŽ{U˜„^ĤdyÈôôóÌ÷îÿ­W¿&‡>s±¬Ôõ÷ÿŦdÈÈÅ®šo™‰‰´¤¾§¥AWЂɻŸðÜ¿ÇÑÉÅ]¾ ƒH©l)ÎÀ¥§ŸŽ˜w0šO%€kBÙ»šxŦfÿýÿ|pàúþÿݘXYQäää?ECÿ[íèݶ½ÅìêÿÂî…i/€g5“q.–{DŽhòíéÔÐÈfffff™™™ÌÿÿÿÌÌÌ€¡ëBIDATxÚbø9 hˆáç¿Q@;@ÀàMc´4¼4è ¯„( ¾61¡Ú_üú) *¸  Ý»i²·€÷ˆŠbüAï½}ö|¡Þåÿ|l¡ûjU’¤BÁ¶íNçe-žçY–=)ŠòS¯çÀh´J¥qôûA iÚ4nîÖÉJhƒ4›‡àY×u×u¿ÑõªÕŽ€ïû3`‰0 ÃqÜÉY–ßççy•Ê$Žn×ÈCŒ<%ªªgàôzWÛèrEBÆ1 ŠÅáPEÇqRÀ0 Ó4-Ë*—Ûínw}î¡Ç×$ú]%­Ö ÈAvÑÛ÷&ŠFÿ4xþû÷r+R™1¼Ô ^€‚ïy±§YGƒ—ÚÁ @Ðà}áÁ«vËs4x©¼ ^מ¦žÈÞÿÈ Þÿˆ Þÿ‚÷Öàý÷‚àýGJðþû—òèà@ œ {t7p‘â¸NZŠàýòÑ BJ/9Åûß^6½ïî>ÖI/}/C/µ—¡—¹—E/mï#€àÁ¨ì°É.À\9 `Ð¥^Pðþû/þQ'õ"/0| /JêMù‡;õ¢/@&Éa(ˆ¢½`ìÝC`«Ä"¤K#)‚üJ$)¬]Ø»½‹sÆøx!s? ‡‰ð¦³Ñ\Ÿt1àÅ /Öuèõ„^,IÐ/Ýðú–¼”¶E«Êÿ¬™¥Ç^’ã5¿ø÷©MYJ}/º¼Ò€WÚú»{s¼ö¼Þ²ÌFEAn±½DË=‘ñ x¥›T×Ò™¼Ù£‡£t—o/5Âkmå=l /¼ø…æ¹ô€®:ÄAƒ(¬qu(ÎQ…FPKj8*+(¡I-¸ç 3û³K ›][ñåe:ãÝ6 ¨«ÍºÔ Òu½àzá:t]¯…çõBß˺îÇ ¹^ùÂã)[‹w§·Owíã [á®îòýÏ›| ¯l—ê ßàm_¶Õ‘®…Ó8ÀQÂ7(õÚÖ¿6r½…WõÂy€‹¿’ÇÁË Þ7ßqð>È÷ _8I8ê [ÝBÞ,@ƒ¬íä_¿¥^ôà”ÄK0xÿý› I½8ƒ’|1‚7 $ž¼à–Zð‚®à(Á ¨Á `Á -{Áºñ/8ùBƒœ|ÿý hð¾”;¶ø=º¦zø×?PèbM½“pXƒR8üû‡?õ"ª6R‚À©Zö¼à²)x¡…QÁûïÁÔ +{A©7”€–zyeöÿûwêì™;Šûþ¼ý‡?xA ªÙˆ^P¼ÿþ‘P8Lƒ&_Pâ¥4xå.(xAáKJð.ÿG\ð,xùøXU¨+žpþsø†éVDá€Qµá*°Vm¸ ”ªíÞàEn˜aï*Xွj[«ÚŠ`UÛ?hÕ*à…4ùþk›Vj: Wm…–à͇Éðª T8,xY?ÜcwÞëtýÓ«w:[)쵡¤^¬ 3PêÅèµáo÷¢ôÚþèµR/¡v/Z¯í‰½¶8Ú½¨Ý €‚Wm"OTÙÏ©Ÿ‘WûÈJBðBK@¤àqg¦BÅI ^PèÓküð~FðC—ÊÁûïá^@Áƒ—õöÕ+*ž¶¶b£cTs xð¢‚Ñà¥NðÐèp:Mƒ €F'ƒh ¼ÿG@/M@/M@/M@/M@/M@/M@!ïøAXÀˆ<„ Vó§ÜMÉŸÿÿ jÚˆ¬’(=ƒJðâu<’(„ùçÞ ÀL ãà Œà…¥Ì?XC®KR…4±ed+ † ÙÓ%ÀƒYåd€Â¼0s-rÁ€ÕwÁ‹C šÐbSPÔ …ð e/ÖàEJl؃ž´ð†j0a£þà(øÑmüÁ @8S/ö¼ÿoð¢`²ƒ_áð¥þüÁ @x ìUþàÅX¤ïÿÿð™ýÿÿÐ ^€¢MÙû—ÿ‘(¡<ôË^€"¥å€^kc |Å7¢U€h$ ¶C­å@Ôk£OE­¾Zq: ^Ìà Á ``?`d<ùo4xI^€"¼Ðšë?Ò‚X&ÃYÈMÁôà…l†#`7LöÏj¸5xˆÈà%f2hïŒÔ "*xA‰¼Dzðâ:æ1¨³é¼p/ÄAA]†š†a$Lñ®G ^€"¼M@Nð‚©?0ŠÁû{ðþAŽp0û/"äЂZÌ`xœà üÁÛÄ‚Mä/2sà‚÷/zðB#\M³Hu>jðÞà] º'„EAtÓPÞ¿„ƒžñ1‚÷/Õƒ €ðï¿ÊÊÖ  ¬ LÊÄï¤*›®Áû÷/1©÷/–ˆ§MðàP†(Ò‚¥h£[Ùû—¸àE ¹?˜Ž&KAÙ @„‚`Áû•@þÆí):µþ¼È-T—!Z hí ZD¨pÀ¼ $®à^½6’Rjð¡ÔûO9* \: ‡?Ðà¡?Pˆ ^Ìà ¼“AXS/RðB2”=:怼„w*Wê…•HåÄŸ£Á‹%xˆ@ðnÚz±ïhêżD(õnÃL½Ð*íÏ?ôà)Ƙ) Á‹­ìE/¬jƒ„õèL1æL1@‘Qö⌷ÁQðeïàÌ”Èî<Á @䔽ƒÒ[ƒ¦p@Ùº@xƒW9D›Fƒ—(Û‘@á_Â'€4œ.ðo4xI^€"´ñjÈ”yXƒéÄl˜mìüƒ#xhDïÜÔ Þ?؃ €FLê…ië– O¯EèF ^€)Á‹q¹–ãÛ) Þ?Ø‚ €h¼x–1ŽàýƒHÇ8ÎçAð‚w ¯=ÀS8ÀY(—ü¡Jðb-ˆ6Á‹qjq70-´ÛPDqðb¯ÚˆæÁû‡À5BXöR³pÀÑ0 Ú§^~Ð8xÑ.ÕÂyKÕœ…¼D¯àýóg ‚wÀ{mD¿ÔK· o0/@Ѹå€ën Zƒ)xˆÆí^Œ–à ^€¢q¯m Ú¾ƒ)xh4xi¼4¼Ç|¶ €Fƒ—¦© €Fƒ—Ú¶£ðh4xi¼4¼4 ^€ ^š/@ ÷àýƒóRit>q?GÌPÄh˜/ÎÛ|± ¼¸” ÷¢ˆÐ™)F½}¬ Û¤Á‹ÑÀ^ªMh¢/@ѱpÀرö‡æÁ;à½6€¢}ðb\4¾lpP/@Ѷå€õ :¼(÷µíÛ½(û3éÜrN 2 Ñ3š4¼4 ^€ ^š/@/Mƒ €Fƒ—¦Á @£ÁKÓà Ñà¥ið5ƒw°€A¼DÕÔ;8æx/í¯RÇ5b@Ãÿ€YºØ‰k¼ €FDðb=B‘ªr\³4r‚ËU™ÔL½ØçÚh¥^"o¶£jðЈ ^ê×w¸ €¡©÷?í@ï Ñ¦ 3€¢ËéÓtj¼¨«hÛ­ á¼Ük /M®BÁ @t9`館¼DéL:­ÔÁ @´N½þŒèà z,#ÁÁ @£e/Mƒ €†cËa`Š[ˆ^½6ú6}Áke€žúÿâ¦_¿R¿èé€îÁ Í ^€†c¨Á N¿¼4üƒž¼4܃w€Ë^€ö©w`Ë^€-{i h8.#/%e/@Q1x e/@ ÷àಠ€†}ðlÙ @Ã?x´ì Ñ²—¦ €FË^š€-{i h´ì¥) Ñ²—¦ €FË^š€-{i h´ì¥) Ñ²—¦ €FË^š€-{i h´ì¥) Ñ²—¦ €FË^š€n%Ov™AhjIEND®B`‚PK ì2Z]’-Pictures/10000000000001F000000124C1C75487.png‰PNG  IHDRð$çÝ“ígAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEŽŽŽfffÿÿÿÌÌÌÀänn”IDATxÚb`# ÃhŒ,@£>Â@Fø4á# Ðh„0@£>Â@Fø4á# Ðh„0@£>Â@Fø4á# Ðh„0@£>Â@¡F8yÆ£‰‰XãÉuÅ( ˆ~ÎÄDtŒF8í@1 4™aMX$®‰‹ñѧ \ÏŒÈ Ô’9Ã"GB˜ Å@Ó –fB$¸ÉH’Ÿ G@8"œ 'È ä’¥ˆFŠ&Ô‘‚0À0ÓÂш¢ ô’QòÂó ã` F8’6&ä29!° ˜Î„‡¬hP ®G/ªQò!z–Epä‘÷‘ó;ª…¨:‘,%*€bÀÚŽÆá„êp<ŽÜtðÄ€ß(Œ¿U†­ÇáH6Ìbk„6Ùiˆ£3„­^Å[™W‡3¡6°F8n Gµ@ap,å6¡V:f»m¨]¶ÇÞJ%*€bÀlw¡Ž`0pÔá¨ñŒÙGVÏ•À(ÒqôÃGõ@Ñpò„ÔøYz€¢i„3‘4h2áôDËéQÒâ{4Âéht>|„€ðh4ÂG Ña €F#|„€ðˆŒgC9Î< †. Ña €F#|„€ðh4ÂG ´ùpb&0ÀÎD¬8‚&VÈÒ8 („áLÄG8ÑñÁ„Oœi4Âé K„×!­BBN H΄Bb¡ñ‡ŠÀ#"Á6‰‰*7QÔ„áuG,ðÕFH+‘+!"œ aRˆGR΄š˜á¢L¨fŽÆ7õ@¡ÔáLHiÑ(ZYψ­È$Jü2cp¸¢G’@I3¨fŽj€Bp¤Â%ÂQV®0B" =¡ˆ£HÇŒp¤"g„#[3 ¨µ•΄Z€£•ås8f¦ÆáLÌXëŒ>Ú|£. b#¥‡EÅu8J¥Ré4„¥΄^‡c´ÒáQFL+V.£µÒáu8FÇh¥ª€€‘6& åG% €èᄆ×F#œÖ €FÇÒG r"|tÍËDΚ¶Ñl2„@.ba €F#|„€ðh4ÂG Ña €F#|„€ðh4ÂG Ña €F#|„€ÂáèGñ`ÌžG(ÅXÙŒ|\×è šƒ ÖG;‹|ñˆz¢#Ëh„*@8"±ÐùÐl,‹Q_DÒ€n êª)¤Õ¾ €#œ X÷Q (tôs:±¬}ƒ¶-úF=@¡D8xþ [„£®UÇáèf£êEpˆºÑKº€BpÔ¬‰X͈‘E1NâeÂ\숡­F-ÒÞGiÃÈáˆ=Z„cìm@;[}ÐŽDzÑiÄÖáH·S!gr&˜F}@ap”ƒÏ‘O«GÝ…„½•Ž,‡t®:J4¶Ò –ÃÐh„0@£>Â@Fø4á# Ðh„0@£>Â@FøD—ÝÂ7x@Ñ'ÂG'©  Ña €F#|„€ðh4ÂG "œø›E‘ÜF?Õ §8òé?L£‡ýP ùNÂmîàãxÇ'£¹ŠUù|6äÓàF… €(ŒpXNGÚ“€º´,Ĉ8o›ãdNäƒÓñDøèÚÔDI„#©b=\Q ŠtŒ‡‹31áŠp¦Ñ"Š €(¯ÃÑ¢ÛbE”G;/qÒ>3Ú!Ì£N@µÒá;MÐ#œ‰ G„£Ýˆ€žó±åp¦ÑF5@QØ-òф c!Úµ8h·Œpø)¼£±E@”·ÒÑ7¨`òØêpôÓÕñ¶ÒGs8@Q¡޼ßC-™á×&À¯:ÀÒG?9{4©ht¤m„€ðh4ÂG úDøèš—Aˆ>kÚF3Ö 4º¦m„€­ÃG Ña €F#|„€ðh4ÂG jE8ÖC8™P–8á»°rÐ õ"s…R„c½‹vôbQú€¢z„#¯pCYÓ6áƒõ#u.|4 jG8ÆâÔ:s¶{4Âé ˆÚ6\>šÃ  ªæp–Ñô €há£uø DíG[á†XÓ6Ú €FGÚF Ña €F#|„€]Ó6Â@®ia €F×´0@£uøD§=òr°€ðh4ÂG Ña €F#|„€ð#™ˆ9`‘Äæá“iÀ(  ,ND|áä0 ¨w„£^Œzy$Ú•”Èg0¢)†Î‡#ây%Ôè”ô„3‘¯Ƹ~m,ú•ðØ®…GŽp\×Ç:€ÂS¤#Ÿ·‡|È& ú¥Ã×É#ßQ‡#®G3tÐîFò!{hçç¢G8¡ûàQ‹tÔ¢Ÿ‰i´L§' ì9µ‡F9ÊMïØï‘ÇqÂ@Fø4á# –G>'MCÝèÄ¡k„³ ­7Æ 0V%‚¡„cì4@Ä0êrfÔ-fX¨Q0H@aŽ¥c‰p¤mdH+—áŽy6>æ²óÑ1ìAu¶ °G8ú†Q”Û/ßN‚\âCÔb@X¦G™Ð÷Œpì;0¶˜‚Ak„# k¢"YËž±ÑL €F8…¼ WÁ?ºulð€ÂáÙ9þPÏr`m¥ @D-q"æØ—Q04@·¦m4›@£‹G Ña €F#|„€ðh4ÂG Ña €èá£[7 ºFøè\ÕÀ€¢o„–¨h4ÂG Ña €F#|„€ðh4ÂG J#œ”ãÎÉŒpB"`¢Ä†×øÚ\*É[‹M=æ!Ä”.± €(p¢GP+Âi¡ %ÂñÄ vL¡˜ÈS¸Ä€¢Z„ã¼q 7$ÂQbÜ}ƒ¹< Mû;X¬Ç¼y÷R,dLP€¶í‹ ÁýX®ôA_àš&0¯£ ¸$€¢V„ã¾á/h„£ˆ2¡Ý}ÄmgÞ+v˜°Ø <¤Û¬EÕ€yER$aæCd‰\‰b þG¿k€ˆÀ% õŠt\wâ Ü?'Íñˆ¤yk ÷1`F8ÎK°šŽMžÇt% úþ Œ+bP}Œá¸ò áÀ%Õm8ïÄ!.ÂqìeC C&ìŽrÇ#Û^;&&¬/¹N|à ˆ*9œß8DE8¾ër°\žƒ;âp¹‰ŽiŠo™°Õdäp"—X@´ˆp¼u8fŽ«ºÆ³ß‰p‘ŽjU8ŒE«Ã±]àCBå}[& Îdƒ¾m“`à’ˆZŽûNŒF–V1’v¸N&Ô6.jñˆ)ŽªÛÖ(4UØJ]œ—±áHLÄm–Æh¥#gn¬[ñPj BK iÃèfR³ËM…,õãÙ±¦á΀ءUôn$Qž$:$a„Ûq¦Ý΀Ka €F#|„€ðh4ÂG ºFøèBåD×£‹„ÐèF„ht#Â4Úha €F#|„€ðh4ÂG Ña €F#|„€Âˆp”•XK³`ÌÞᙉ‡®¹DD8–µÖH<\+ïG‰£ ,ŽUL؃m­¾Ø@6…p„Ø'0 („#‘–L¢­xÇ\ž„²h}ßbI6Z„£¬=CÞ'€¶Ò‰eô¢ ª€ÂáxÖz³`Û"À„o3f„c_ˆu-ãèÉŸT„·'áøÌFÝZ€%‡“Fª€""‡c[ÜOD„cž·7™˜Žª€"ªHga!=±dO9œ…¯à(   rêp, õ‰¡pE81ËøG#œJ €ðF8úâ~X7½ùŒÞJGÝZ€ÚJgaBW†©÷ÛQ@) ’GÚƒžÄ}£#mƒéC«¤G8Ëh„@£cé# Ðh„0@£>Â@Fø4ºa„€݈0Â@^1Â@Fø„á£`ø€b­bG †ÑBnd€ðh4ÂG Ña €F#|„€ðh4ÂG ,Ž{›Ú™¯øTC$G×›6@$E866–‚AO„£¯Års 6ÕhÏ`»Ñf  ̱tì÷­°àÚ¢€¡sc꦳Ñ!û„:[xî–ÁÜuÆ‚ëž &œÛ F‡ì–éQ<— ± ^í…;ÂñlI ˆìG«ñ íðAˆ˜'¦Ýö;D@ap,÷­ài¥ãºêÇÆ±Q0  €.q¢á}+£`@^ÓÆ4ºWw8€]Ä8Â@Fø4á# Ðh„0@£>Â@FøDq„îÇZ €(ðÑ ¨!h4ÂG Ña €F#|„€ðh4ÂG Ña €F#|„€Â}É –iq&,kËA’›Æ„Å&&NÀTÀ„ÂbÂ&¦Èb"ìY ›0p»dV)&òCŸ {€…1)&dy&$¨AHJp» €Hˆpt<™àÁDV„ãÓ¸Àg¢r„CC•BMÛ0\ U¾  œNÄŠ6è!舔 0É K„è÷Š”äŒ,MÙÈI‰D3-W šMÈÕƒì,™ ¢CÍ<™ƒÂe?Z(1c AôxeBpŒ C„; ¯YÅáLˆ°AðÒ"\%±§jŒHcFfBò5Z\!Ĝ„jrà!–bу{g\àŠ+L¿á²g„3¡3Z„3cæpL×A@ÆÍ üÿÏn„&º­ä(Ü€þ;QàSbÑ€_ß§–`ï~¦¹<Ø^ó^ÝPÝ—ˆÐ\†ªÄ„/÷ú,À|[9æ€:á¶½­#€HˆpäŽXÙˆ-ÂáñÎDt„c„¬¤#áHQV<âˆp&&R#½x`B¯²Ð"=Â1ê(Žæ7ì ˆ`„c*€"3‘m¨/I1H ‡3cúŒ‰p„#Ë UÌør8¾†³ÀÁ9LX«W¬¾Aän¼ Ž­XFgbÂ,½™HËá­s€ µ„ǰÀxö«á$ì)<އáŠñ…lL0d(‚¾Våô`Ãï|µf椳 Â-eø ì72‘ÒJGILȹo+½u‰Ú’E}ø RxKÉnô¦=f ào%3ao¥c3ɵHU8%­t¤J§6Lk1ò4Öþ‘6ÂûN)îyRÒ‘¥d€cô„xûˆÐÐ*Á}'ŒD‡9¶n!}¼‰eÄÝ-ØœF‚ùL¤é§²ý$€Ka €F#|„€ðh4ÂG Ê#|teúDq„晡ht«Ñ4á# Ðè­F# Ðè­F# Ðèyé# Ðh„0@£>Â@Fø4á# Ðh„0@£>Â@FøU¤‰ÖÃ}FIEND®B`‚PK ì2ÊKÄ#ÊÊ layout-cachepÆP  F¤  ˆ FÀ!žP %FZºTFA 5 N…P 0FÏ î3õ F^  PK ì2 content.xmlí]ërÛ¸þß§@¹Óv&"EÝ•½ãø²MÇ›dbï´ýÕHHĆY”¬ýµÒ¾Ü>IÏ/¢,J–bÉÙ™2“H"pxxîçd#o¾ˆB2gRñXœY®Ý¶^ìs1;³~º¿i¬ïÏÿðæW.ïÿùñšÄÓ)÷Øk?öÒˆ Ýòb¡á|üéíí»KbµçCÂÄCfÇræ8W÷W$»¾Êï"ðǹ~o+ãgûÚ·Îßlc2 õ:›=³­“׎ÃcâÕc:ívÛÉ®­ü¥—ánzCQkö wR#AIL'Oð6¹/éb'5€Í úi\R/ {Ñ5”îx  }Lâp½ödEto›.ãÛì¯êà4®éžÊ5ÃÓÈÛ;•¼£ÓÈÛ?•¼ãÓÈ;8•¼nû4O$ðTn´M#,÷Ôy(H¶ Ä’ÿ‚ѰáÌò€“Öæ¬da".e €^Ä"ƒx^È@ÌÓnsádãõ/ÁÕÆë0¸ —Tí?åc¸â’ÿ+C’ù•«™dLT®'aZ½F£ˆB¯.Ù…±lqQ‚ã) Ë'áAB›yË5ðžp虥 wà¦Æ7ý¿Ú×8•,[_e îX„lάfI²I7²šËªÝß2X÷’»e °ôÜßR) [hŒvupjV¾È­ÆU†?»Ò ˆ²à>.Û¶;ôÑ#F½] N碂W<Öš0 d™œÃŽ‘óE5éž@“î¸;|yMz'Ф?n_^“þ 4ކ½—×dpMÆ£Þàå5]×vGnÿå5@“.„×Ëk2>&ýaÿ+Tá>¢*Ãaçx)_™ÞtpЀƒ4à  8hÀAªà Û€ƒ4à  8hÀApP½¯  nTêÖœšo]j¿cnCƒÄÐ †14ˆ¡A _1ôgˆ¡ö§¦ÄÐ †14ˆ¡A bhÃWF ƒßb¨ý±å14ˆ¡A bhCƒÄð•Ãðw†ÜÚߢl CÈÐ@†24¡ §‡ ÎÖã7ò‰Iì/s(öï” .?¹cs0“Ñç* é²§:䂵ró´s24ñ. S¥%<2(ù³˜ÝŒ< ||6“«ü ¤ÒµVK6áÕGˆ‰ ÏcJ‘0žEñ\Iî4KZ“%¸…%9Çd“N©@ýìù}À¿”¨ –šhp¼ä4$± ‹˜f2;ì(6„±É}ÀH’J `$ž —›dÈ^Ç"{Î} „Qµ$ ºÄaÅ£4¤šá¼Ÿzèq€ÑføK¸þ)0®±&L°)׆cª}®¨ìƒ,K¸û-ŒÿMÂG¿ Ì5‹vpíZç»V€œ¥(Ò" „dRüÄ}eŒ¤<‚G m25$írÅ ZµÒÅ©cO±¨Êž˜sN¨Ÿ â˜3¦^=öYî% É<0ú• ŸÃh æ÷}bû1ð)x„ P…ÎØ±_ù•àï—SàOáR£D`Õi;½;s/ ÄSc*ŽÈ£ðH’SˆŽ›0Å×g>F¢‰—àd>2ü…|¢— Ø)“UªIáÑD§[ ì‚0 ¦1…¸Èz |Þñhg#žWK0ÈrÚg™æ”€P«à7…g§$ s†f7Où õÁ¨\° XnŽ9(²IªÍ¸Ä ,**b¥^|Cì¤PÉ ²,LQÌK%×KSí0ñTÊlr±S¨^>}ô`?’, Äind*ã*D\!ˆ·žEVYÚÃgŒZÈ•„*µÀtZÄi裄 -8 æÁðŠ&µÉ_Ë‚‡!\d˜GÁ¯¹UsFàÈŒ‹ŠÂG-ƒCÊ`Ï:/ͬäŸæsã‹{ÆQ…h/cMptC¹L4ó‘# ñÅê‘’`; †ñ‚L1MgMnŽ­ˆC Õ¬†ÅsILóË*÷ÒLÔ8úˆ"¯¢;â2!L•¥„Òz8nÈt‘ÀM<ÓÚµæ.kn}E&héüp8½ê÷E§ÇöRÉ_Sc±î+Ô"í‰;…’örÕ I?ƒ8þœB·™™ ¶–Ó(ü”KL“-ÁÕ£r!ó 2Ùp”(3CØ0ÐYé²É-Ÿ³²XÜ€œ3'ŒdÑûŠXÌÍŠ%¢y¿T?{}AþÎ&XŽ<Ò"-%æ,Íר¨Î,Àa‰9$ÓŒ’MË#$«Æž²'ŒÚ^9‹P980l;Ô‡¦7KA¬ð¯Ì v £ð×íŽ#ëüù m@Ížâ×µXN°! ¬˜‹€3³²PØ ôW·‘°ZaWÙÞËr̽­Ú¦ f–-^ 8VoS±V«u9Cu³}ë¼XæÞºÌ}ÍtA3”Ì‘/„ÑXBæiòÛ¯ÿ)ðo¿þ÷HÌ¥„ôÓÏÐÈ|Òúv¦¿Ó–k2N“ãµÓó7æÜ-a«4«æ|93ºv$YñÕ`²•%rõ¸ùìu¾“Õµó},3äÇRvì|ŸØðþ¥…K°³éR-ß|䮋”ã¶+ÜþuöáæÂ½¸è\¸ã˜Sª·–Ä‹3‹EæCX:9³bqSµµóœÄß3~{‡Äï° ¶=#àε‘VnùdW›{A{Xjøhãò‰à|Â`ýC 6z2¨;uAÝÙ?¨›Ý·{½Î¸.¨Ý½‚ºÓ¿ÌÞ;½‹ëþõøú²s” ®:ÚÖ«JAɪ¸‹KÕÂï³™d3Dð’%±Ô{x}tT¯¯ÿ8\R—;÷uY1ëîï÷¾Ýïºî¦ó»öpìëœßÙÏùn7«lƒËöÍèærØï¹¢9[ì¸O>+¨ngx¸﬛_è¸ÞþŽëÙ£~¯[ç8×íÕ¶¢î~­èª“½wÞ^öÚ£‹öMûtŽ;°ºƒUÍ©­Æk<Á<—è9€|¸ €TGÌz™xS>5›Š *ÌÖîH†`œLŒÀÕŠö‘JU bECP,ÓêÚ³$¹Ë‚Ÿš ™á™fõ×aœmzìF/Êú‡2wØ®-dí^»S—½ýòá&ïô.](c½Ñðå¡Ù]ex–pÛeñÛÞ¿<º}–=R`Í4ÔÊþY‡ÅhaO$êq·Ï¾$î‡Ôán^Õ°síqoTuýý¢n|•}xûö¢{uùöºsìö¹Ëdf#QAíãB×|1ˆhki“l ZÎ.¸Èåý§ÛÖ'¬ÈæëœŒ˜H‰ù‘º…ÉTT ÙÚøÎ–ÿ›èüPK¬ôC=Ý BiPK ì2 styles.xmlíY[oÛ6~߯Ð4lo²d§ií,N5m mŠ%¶GZ¢ln)”/ýõ;$EI¶(Ù;ìe/ÌsÿøñðP¹~»Í3o¹ ŒÎýñ(ò=Lc–ºœûÏO‚©ÿöæ‡ëoÞ=ýùå½ÇÒ”Äø*aq™c*!wÞ—çßîïÞy~†¦ZkÄø2 oŸn=óû¶2ò L¾ÿì{¾q7Jdâß\÷ø† ©¸2¹¿’²¸ CQXeEQh~û•¶Ô×V]â­ÔV µ2Zñ­5¬zÂÑfP[)âV?eµöf³m.´æx6›…<Þ‡ÏQË6#ôï^}-µª´Ì˜g‚$ÚÃE¬—.çÀur¼B|?­Ñ r‘Aä"±ÊP쪧Àiø „úϧû>ž:W u}1'ÅpæFÅ·Üß;-5kSŒMpœ‰›k `³â™ßåÀ™'´b9û^ÊŒFŠr’í¬À‡Íï˘$È{DTxÏ”ÀIÅ]W¿ ‚‰_ªFà{­‘1 »Fœhʉ_eÙ—ýž?"ŽrF“®ïFÒ²7Â`‰)æ$žûÂÓ³*#94›Ïxãýn\¹Q=Ps ú¢ÌBª%Ómò NQ™UÍÑ:­2\rT¬H,|«\pà3—2V-\Á  %à@(†–¬'_!(Êæ~4ǯW~¯þZù‹Ú˜&ß໣íöl ) C&lh„b–1hd’—xÙ#[)ÈW'ê4ÃZ†è²DKXÂF)f%•|~ì¸ ˆöœÀ–®ŠauM$#´Á¬Œ2ZVq]¢&~Ìò"Ã[çYÓAkgØZê ìª/@¥dj‡$’`¦) ¬XÕ èM\pŒà(_ÇÞp"ÕÎæ€ÑÜÏx 55ႳB(ò²µ^Úcû)G €^¡stÿ¹ôp  X튦H8)ÊÄþ"\¥Ç9"4P#B ÝÌýIG©(ÅêˆJ†’×rÊ ÁäD~#Ÿ‹’Ʋ47 †ÙêÖãÙ1Â[R ÖIUhôj6¹l÷²ýSQž~8Lø6Ñ +Á{‚xs%vèo7%CB¹Õðöû{¹·`Éî¨CX¨góÀL;¦ãžåˆ  lšÕ“’å ¹hzakð9‚Ë=àþ’:õW5dÊ_o'é=OãÓ3~‡ Å´ïˆ;”ÂÑ)À7ø£Øò¢ªå™5óÌ"pÉ“¸¿yEMi̬ÔaìFu M¹ÔrB‘²zééCÔ-IKôѶϤèô]¼£ Þ~Ç=$ÚßKˆ÷oUøY›@ßòwù‚eâ°Úc-æŽJÌ)–žy‘:ŒÝ”­®çŸà%M£½^^J\}2˰[joøæ¶?½ìv¤þ†Q[ã ÝÆß@î ¼Ï„õòj[w=õk×üªîuç´oV;ðÖ¬XÑpœ9øÖÌ߯2ÆjÒó:º"VJ3¯;Ö2¼ÆY5š©8–60.Hõw‹¹¯üŸd=9Ëúâ,ëWgY_žeýú,ë7gYOϲže=ŽúÌÃ^¦ŒIÊ$p²iJ–%ד›ÃíæQ»FY©Æ³j±q'…Hý}Gfmj{` üÙï”uyð¢=-âÎÄúQ56¡öéî,M–ú={½7uº¨ü4g8•• la*Çj޾l ÐÞšjœŸ$¬À^uðLÈ‘€~³×O‹|ÜÓçµÅ†$ê[ßtÔLz}…Ér¥2Ôd½hóÐÛ wTm$ã0éŽ@ã¾é§#PȨ/~“ÎÀÄ«ÌFCS¾yûÖ··áà³­+3W@ó‰ªR¸° 40—EoöP°o` m¢Õ.fS§JaSú´PòW)¤Ùwó7„ÝœÉåÏÍ“¯¹›£ö0Ñ~ÊW· Fêi¦„í2[‹a‡; ïºD«Fñ€~Õ¢ò4ønj… ‚¶è~à=tÿâæPK§Ü7&ÜHPK ì2sê:’ˆˆmeta.xml OpenOffice.org 1.1.4 (Win32)peter lin2005-07-09T20:16:20peter lin2005-07-11T23:48:18en-US26PT6H33M20SPK ì2 settings.xmlíZ[w›8~ß_áåµ'Á·¶NOâž|¡oñ%‰ßdP0ˆ%ί_ ÇÞÆÝ¬mÎîÙ“yƒ†oÄh¾‘4øüëc@J?1|F/´ÊiY+aê0×§Þ…6´OÚ׿oç¿[sr;l•ØÝïà/.sâSqa!¤nTNKÛ,i'º>1¤z§Œ{ºnM¬ÒúÚz~¬$ éz«¯•´5à©+\­yž‹.{I£/ëæ m)DøE×™´Ãþ´S-—ËúúZ{~à‘øô~«Ÿ$ÉiRKu+gggzÚºQu½ó½¿À®èkmãƒ^Ûö}ÓåæùZýøÄ8PïSz¾MQ ßä§“í[jYϼԟI}àMX¨mZÄ*”->Zó¬Vk|>×_£¼ù߉,èòa°×¾+–Y¸Õz­ñé0ì.ö½ef§+õzmOŒ—,¹Â® l.õp´c`ÁÁˆjMÁc¼¿.F.æ×KŸ`ƒ³$’gè‘èKmÆDñ–lš‚ãsñQàOžøÔÅØ}=þÙ¤IŸ‘ „¯ÞE¶»ÓÕHp垦âguÿèÌ#S½Q«íšCþJYRiïÎFþ‚࣓?E-"Y¥ÀWy¼WI¥~´Á„`A¶›?7ª{ŽÞœ±`"¡v£mÉøþ^V mäƳa+Õ{R9c‚Ý6—7ö`sÆÍ_©™×üÌöl9[¾mn]_Ä 9Kÿ“I\wˆ8š ã9Å$Ê¡Ì0â «UÞM?ÇÀ¿”‹›iè"‘•Š7¡±´œ¹ 8ÌM„Gjtô°Ný3–¾'ø[äξxhí6—œÄAHäyˆBÌ•¡1ñn2<†²)Gå2[zÎJßCÍCTÈZ(ÅO)W¸ X±`ë!/¨÷&“i‘¢œƒyfô ª>E|¥5ïǽºLìÎqªâa~3òú/陯Óüæ[8¿éÁIP¼ygö„ª!qM¨ ,HìnŸ8!NòBõ &x›ë6´çSy¾_Œz•«Á,QísLã~~Ó—t˜•mkZïYà9ÕÙ ]Ïž^Zoµì©é@gÔµÎ>€!Ÿ‡‘õ` {`({ú]ÃTg)ÖQ_|¤éX\Ûë,1L¯zÝÍjñmÏÛ·ÍŒ¶©'±[IÚñùßÒ•ltZ£‘±1âTÏ‚y@~ÌsûñRLøÕjËÈUl€R&ÒÚFþþ~Ï­7„!YM#Ì-$Ðñw3m·ÈÝØýijõ×™5 ‹ŠØØ+#ˆl¾j©ŠK[o;úŽ9…ÈGtSGÄé¨QE ¾Gå|,X8d‘_3æ\ºK—Ú½ªó˜ÅÜyÄë"¼þæýqÿu•rSÈ_†%G÷?°(}l”Ë%Ü>Ž _=æ›{k—ÓvA;ºD ¼ ÎbŠN»uRcxÆÖu4΢;…áw8 —¾SÀh!,Im|c Q“Ê\/‰e² @ÔͨÌòQç™k6uqˆåAæ=´bñî˜lˆ‡© wÏ m„ÄíÇÁó«ðŠrî=Îbš[‹?ö¸–:,Ž’ô{F1ÅFƒH´Ý«–œûÙFõ' =ï/Í?PKMß`åV›"PK ì2META-INF/manifest.xml½”Qo‚0€ß÷+Xß¡´ê¦‹lÉ’múàöØÁ¡M°8üûuAÔd&‹‹¡/wöûîš\§O»unm¡ªU¡=—X “"Uzé‘÷ElÉÓãÍô6œ‰ÅÇ<²ÖR« j|èkþ¼< ‹Ø”ÎJг,S 8Eµ¤4\„Ök·Ï°)ÞˆEº_NŠ)1ðßLS”®ŸY!–”†_ùÜuí6u$e*4VÍIÅ*icS‚GdYæ*‘hº¦[:õF;Fê|U ¡"ÇCÙ&ÏíRâÊ#”Ћj-—@K½<›«7Ô”¹'‹MÂ6 Š âçуšDùÐFÑ$¼75´Ýß 7Çâ~Ô[×,ämäºcßÝÞÔ£¨MbŸù>÷Ùä®7u¼|(˜¹îáøþê?ŒÒÌLv#ù©´¬šóø\6ÅíD&+¸Ð€°CjÆü<8)4šÃ?ïÀU¹569ÔWÇ®åõkDóôªÒ#dŸ<~PKÒñ)É4PK ì2á¥19mimetypePK ì29ºº™¬ ¬ -DPictures/100000000000019D000000BBA3DCBE23.pngPK ì2Û"d8d8-; Pictures/100000000000025C00000224AE5E9EC2.pngPK ì2¸8MB+B+-êDPictures/10000000000002130000016C0F8FC753.pngPK ì2²+ nn-wpPictures/10000000000001D20000012BC408A0F0.pngPK ì2_…é¼¼-0‚Pictures/100000000000015E000000FA1AA2A196.pngPK ì2Z]’-7šPictures/10000000000001F000000124C1C75487.pngPK ì2ÊKÄ#ÊÊ Ÿ®layout-cachePK ì2¬ôC=Ý Bi “¯content.xmlPK ì2§Ü7&ÜH ©»styles.xmlPK ì2sê:’ˆˆ½Ámeta.xmlPK ì2Mß`åV›" kÆsettings.xmlPK ì2Òñ)É4ûËMETA-INF/manifest.xmlPK ¶½Íapache-jmeter-2.8/xdocs/jmeter_irc.xml0000644000175000017500000000234712032647214017414 0ustar ebourgebourg JMeter on IRC

JMeter developers often hang out on IRC to chat about development issues. Users are also welcome to stop by and ask questions, offer feature suggestions, or just chit-chat.

IRC Server: irc.us.freenode.net
Room: #jmeter

apache-jmeter-2.8/xdocs/nightly.xml0000644000175000017500000000613312032647214016744 0ustar ebourgebourg Nightly builds for developers

What are the nightly builds?

The nightly builds are interim builds that are untested and unsupported. Use at your own risk!
These unreleased builds may not even load, may have undocumented features, known defects, and any number of other issues.
They are intended for use by developers and others wishing to help with resolving JMeter bugs.

These builds should not be used in production.

Where are the nightly builds?

JMeter CI builds are currently run by Jenkins and Buildbot

These are located at:

What do they consist of?

JMeter is distributed as a set of zip (or tar-gz) archive files. The files are called:

  • apache-jmeter-{version}_bin.zip - JMeter binaries
  • apache-jmeter-{version}_lib.zip - 3rd party jar files (rarely changes)
  • apache-jmeter-{version}_src.zip - JMeter source
  • apache-jmeter-{version}_api.zip - JMeter Javadoc (if available)

Installing JMeter runtime

Download the _bin and _lib files
Unpack the archives into the same directory structure
The other archives are not needed to run JMeter.

Building JMeter

Download the _src, _bin and _lib files
Unpack all the archives into the same directory structure.

Warning - please note!

The nightly builds may or may not work properly - or at all.

If there is a problem with a particular version, it may be worth reporting this on the JMeter-dev mailing list and/or trying again in a day or two.

apache-jmeter-2.8/xdocs/building.xml0000644000175000017500000000540412032647214017063 0ustar ebourgebourg Building JMeter and Add-Ons
Note to developers: This is a very brief overview. There is more infomation on the JMeter Wiki.

Building Add-Ons

There is no need to build JMeter if you just want to build an add-on. Just download the binary archive and add the jars to the classpath. You may want to also download the source so it can be used by the IDE.

See the extras/addons* files in the source tree for some suggestions

Building JMeter

Acquiring the source

The full source is distributed alongside the binary, or it can be downloaded from SVN.

The source archive and SVN do not contain any of the required library files. These need to be downloaded by running the Ant command:

ant download_jars

Or you can download the binary distribution archive for a release and unpack it into the same directory structure as the source. This will ensure that the lib/ directory contains the jar files needed for running JMeter. There are a few additional jars that are needed to build JMeter, download these using:

ant download_jars
This will retrieve any missing jars.

Compiling and packaging JMeter using Ant

JMeter can be built entirely using Ant. The basic command is:

ant [install]
See build.xml for the other targets that can be used.

Compiling and packaging JMeter using Eclipse

Once you have downloaded the source from SVN or the release archives and run the ant download_jars target to install the dependent jars, you can configure Eclipse. The easiest way to do this is to replace the Eclipse .classpath file with the eclipse.classpath file provided with JMeter. This will set up the source-paths and most of the libraries.

See also the file eclipse.readme.

apache-jmeter-2.8/xdocs/images/0000755000175000017500000000000012165514774016021 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/logo.jpg0000644000175000017500000003451512032647206017461 0ustar ebourgebourgÿØÿàJFIF``ÿÛCÿÛCÿÀfÝ"ÿÄ  ÿÄP    !1A"Q #%2aq¡$45x·Ñ&6789w‘±ÁðBETUe'3DRcdh…¶ÿÄ ÿÄ5 !"1#AQa¡r‘25D±³ÑáðÿÚ ?߯«©oRÈ?N}Ž%² i2ÍR¬—(”Œàbí¤Ëƒ@äÓü…=OSk˜ àácÔÜ{‡%Jl)IW·µ^–¬“fíÈÊ3oX ÏÀlã?ocìŸ Évƒ…la×ñ°yŸ.ŽK?’>W*çH‘bßI ößLQw*1íG­—ÚÎ Ÿ(ÞÑsa éqî-£¹¯žMp`H¶ºÙ˜y_we”‚•ŸÞ4d$6#Õ*:`E®u;ÄT˜óï%|ÇŸk}Ñçó˜óœDÏíù~ýjOdžZÇP\©¿¢R’!щÌD²5¥cR°V07éîî°Òªð®UOuUO}sÿ‡‡âÒñ9ùrœóÏíùþýdÓc9ªoèóÔ¿h³a“üW™¶…7;›ÜØÊÑÜC8Ãó¼›·ó²4IÞ–iƒI Çs™Nœ`_†uî¬ç3æLv¿kµŽ›˜©œ5æÉ&ñ!ð-³e’9 æ_—dàÙ(Ž<G:ó ü_Ö‰Ê] ŒGTçmmuW9ËM<®KÃ…Æô¶Ò¾ŒX(ì™ ÛÔ_^¯ç‘8ÒËÑ“„¤ÞyÔ$Ú²YŠ˜wóh˜¬Y\féŒúºcËÙ&ËâÌ“®¬n Xã¨Lªqz2Åì}É °&*YÙûµõÐsØÇ'×9ÎDWk÷ãY½¦A€@ç6öª5³ˆ”n[@}z”ëÝY[IÅ,ËZ®oé:;æÑ{ׄs“žìÖÕ¬Ók ¬a­ïFqv[‘¬]µlŠ~Ãny™ ¢ÂnEÃåIdÉ)IsÓÇê~g}%VµçQî«"u_C¶ðq84FÂLÎÑYv@©– ˜Á4dò"ré剠R«Aí'tmKú(è ª":5¶˜{R·=ú‚rârN; v‚™³røá4ù BÚ:-³lóèå³\Ò“Q‹«J6¶sëaÛØ¬ëíýž4¿i{«ÇLNiªãºüÌXœSq¾öiõÄÏGxHoá|Š`å”´52ô9HJK,ÖWÜóîf¼—Ô§OÿyR?ªsÇ?ÇåûuïÕG[_H²ÖGÊå$˜÷#dJ1Œƒ%‡EÖ?1P1Èe´iZ1<ˆõ¨×T7UÎCŽZŽsª½êç+œïyåƒ+Ê–FÚ_Nú™ä/,ì*™¬Û¢µÃÓãÈV$ö5j%Ub+õr¢¶“QQ¼/ï”óžbn8· ÞWâä%Æäÿoå@¿é½ ç›M;ÄrøætëÔ·{q9O)‡U÷Û¸R-]Ëx'úM˜ûH· :åN†xnŒÈm¬¥'`i4ãV @¹m 쉩oY^¬‡Éc¿ôÓM_½WÝ4ÓM:tÓM4éÓM4Ó§M4ÓN4ÓM:tÓM4éÓM4Ó§M4ÓNzê7ÄcÙ÷§¿ÙSþZ…».Ùž7Øî+ão ÍÝ6ÊY4ÏçùRþ>V;Èy&ý H¤’RqX¤$bŽüÚ‡… ˆeV÷Ó}FMm5÷OH¯ã®é™¨tÑN‘O¤áó>WÛÈyšýKB’ówýð)jbåö+æ-1æÕóíŸ>Øn€ _ }¾õ®Máwqè†IcQŸ53$ém!‘ò\·n[t¸>›¦ä²6bø“$ØÇ ÓĉXÙ)Ñ÷ÔƒT˜EÝ3z9²„ qoÄu:nÊTÛKéØt³Àü À9_‰Xã|­#˘s"šX Èø†W(¿¿!\|Ob•´aRc)ëS¾bƒ¨Õ‘V=]¯,Èÿ××q’ÛnÒ±Ãk™0¶+ÈR-ÒBá%ä!†ÇŠ_ÝCIâüÉ!&´å"Nj)Häx«œú(ªÑ]¬z1UEEÞ'W –åöÆ+$î¶hÊw †ƒdÄ"øÂÊÈ´(žNŒ ’î¤qˆhIAÕÌ«IÍTå¯b¢9 :œx†š>ˆNVemõ,otŒä H1Ú†¯Ð›pš.´•(@aÚ„í[' ¹}òwBäs}afà6ŽF½U ÝÞ?Þ6~†¤®ŒNËËá>î\Û—Ø.;Le˜†Í!T¾£à‚DÀfÆÌò†aÌ9=ãÛ¬O6Ë9&G`Rgc"4Å bô8¸ÿ“Ê6…w SjÛ¤îrÓ¤Þÿ/·Øaì_qeÁ) 8î3«ŽkÇomï©‹—cg ¦¤ëÍÒ'r?Ÿðµ"?·„ïÿ¬þ}r~¨Ö–÷TñZ\[ЪŸàxñ¾_ç»;ª}S”÷åõë´LFÞFî­Ô]Ÿå‡ÿáùÿ¤ú묺Ÿÿ­cT {ý¸gHK÷6ãEÔ¸¦¾€þ ?ÿ¹²õƒ>Iôõa¤¾åþ:›õ«uÿZ,—Vg°-¦ÆèTZ·ù—,ã2è­T}„"'-#å=Õ½’åŽSo+ìÔUÿ´¨œÂËÇ@mê ³öeÿÃÿÏõó÷¯¿ðêMÜ:ÿ'Ç6™^ôº§ˆLfz÷4mþkñ,€a1ˆKŸuàHÕá¾ÈŠ«õUæZÆÔŽS©OÂ¥zÔ-ÿqƒ9ý‹éštë¶Wt6A³¼ÿ›hÄèKYäà ðÚ5ÐU¤Ži$ hË+ò©Ã©Ž¦ëä5½Í r'º£“=‚ú‰uÒݴƵÞ3É„¡–×µïÇxC Ãï-ص9DâÑÔÌ¢"*ª!ÓçÑUxåUVáwBÒQ³›WôÒ­û¶‡*ýü¦!œ¢~ïuöúò‹ïÇ´‰é« Ã2»pã¨ÚÕ¼€I¼Åz48÷BB•=ýøDTãŽ=þK§N©ÛõDêÕ·Y@ºûƒ¼ ¹œie~ÛilVU‡Âgva˜ª·îLàb5 µWŸñà îS„r«}µ*ú½å¾¡¹?$A¢{[üfÜì8lò.Ê÷¢°LzU ¹¾žÈ2}I'ÄyXž>>f,YqÓaP¡'QÕö‰¬Ö"HÎýòÁyC.çèñAöu}(dáÍ¿òÉQŸ×ßéúùÕÃæÒ´à.e%miþN)´5íèü¾ÈÌh1Ÿ¯ìµ9å>iïóÓ§T¡· 'q‡Co"êÓÈÀoã&"쇎/wo'@Y8ߦゅ}[ÓWÑ?j}ú—ö›éÝöÏöŸºLﻀ3 ‹4’"ñM»C¥p(ö) nâN£Ø1IF¢€ÞL(zÃK>aY 6Ên(Òð¾Â'^lÒyRc}…Ž>Ÿw coŸ? þ>Þß:’½w®m©íw ¼§B­¹íØãñ ã~¼c™IûþßMÓ§YÚ ÔK®¶íåu®±¾K#§{^òüF:Áø^yj6Á¾èƒ”¬Fw2*ÔåWƒ§Ï"*ªüܼȜÕ«VÝeëîð6æq¥•ûm¥±YT Ù†bªßº53ˆÔ.Õ^Ç€'¹NÊ­öÕÂẗGâS ôÅ¡kZï_>D{sôO×òùþÝBëy`¼¡—sôx û:¾”2pæßùdÀ¨Ï¿ëïôý|éÓ¨©¿^£ÝO¬÷½•a{>Ü%ÜGnÕcX6]Œ×ÃxBKyl#$`\e9$¨NwŽŽ¿ª\ÌŒ™„is¦ÒÝÄ[F“iÓ£M¬é‰>õúò†Ç[q›‰hFöÂæ|b7RÓ~¤ÒÉ`JEø»ô4.c}%¡ Éà žù2ŸuG«¬ÆoAÎ7þF‹«.#ÛµŠ/ÏØ1êmû“¶˜æ7÷qôçRÛpû(?O˜9*vt¼»s²†òéòTq)Úªü½×ì=•té×It†ß^ørFW¾Û¦ô7#¡(‰‰L0ØÇÀÅd¶×‘…¤MÆ HIq„›R2kÐHYé/ø‰§ž}=£}R.ÅmŔ͉% *®kÃäȵ¨§Ï‘èœqû׎9÷ö]]Ö:i¦št馚iÓ¦ši§Nši®“Ï™N¦ÁY“427{2~ ÅY(¶".»m‹Ê>ˆ”$pmã©F•6‚”5µU§QPƒ濆£ø›D~óãÏíþ?ù޹­fÖ­kmkEkÖÓûGŸï×vi¬cü(}ÀÊèyŒk°˜xJjÔm‰Vf?5k•yåQ¢1ÌSÝl\ïÓ^U~ʦ¯öÕ”/óvßpŽc)cf ¶UÄxß" cQj¬Î$&@Hê%¡É»îúÕ\×Ù¾š½þ+± €–f(JÛÇ3YóãÏ(þÿñýúô]ÈÑÎLÚ×Ïy íi3h¬Úb"<þqßËÏŸÕçùOUøAŸè³·?롱Üï¨wµßó…·Ÿö½‰?´Æ¥á ³¡·´‚}_Îdwm+mA?íØ‹ÃùŒa*óÊv:G`ˆŸ%矦¢¦Õh>ó#íæÿnÙ'ûÓ}FާÿëXÅ_ÕÿnãSK0Æ*H:d™=gKÅ¿ÇÆÿn‘ È#û¸O„äRTEûÿV§=jÏQ¤LYŠÖ§*S¢•|¿˜ù×~Þ?Ž»<\| -Ä¿ÊÕüKÂÌÜPÿÃ^“ P¡/¯ÏÕ‰Ï\7 Ô©< oSš²Bcöþþ¦CÓ?_ôœ{*ëüêf˜ýöE£vê”éQÃðµ¶¡ôÿ(%½}½ùþiÓ¯VtOhõªùa ÿwâ~QÏýÃå¯Ã Ù5Æ­ax¼å`2бûÛ=B@B=ü‰=/ÛÔ…ýüû{{ëéçgÕÚ5ÍZtëUe–éá•ëûÿ6EÅòa«þÿPoÑ5Þ;/œÆ`ó`E&2p1A¢koT‘–·ˆá]Éê%ªSEå£WæôD_uGqÚ®Cü'µ¿Äù)Eœƒ,b»£Þ|׬xóŸ7{ë_÷—©p'ú[Õµi›Á·§iÒ£3ZÓ»´½¥i³ûëT¿²¹[‹+¿Žož~®^ñk½µ¨¥Ø©ÚNê‡È eÌÍœÊ 9ê‘ËÜ¡“®_XÜÿ#$ãžš@oÿ©ÿ_kÞÜЛú}$²€V[ÖªJÃcõŸsA‹ü¥PF!¦@rû¯†>û”öûHî8M:uTÝ=?£0WûHÄŸÿb/S'¯_ú5mÃúçãïìƒ<ê l†F:#Æâ¾?¥EäøúNGËÛù»Ï#>,‘?tTú öT_o¿w_W-Íá Ïí«& RžUÇÍÄ©9£nø{ˆÏĘ; ÏQd P5oz9U;“†ð÷#»{:ÿ1æÈy®.ŒÖ(¬ò¿ž¡ !æÍ})¤SÔ…ýꨉíŸN8nÚßâ|”¢ÎA–1]Ñï>kÖ­)ýQI´Òþ3ÊÌUqµa[ã”Ö^‡Šè\ô KpŒÖR lƨ­¥õ‡Ÿ×Y™ó”ÖÞ†n¤>Ý¥÷“Ç2ÛÎÙWóV—]¸†ž¢19_Í ˆŠÕU÷j¢ðœ¦­óh% Àƒï_ZÙZ[H&Un«^We«m‘ÖUG÷*pÔ_ŸÞªÖðªåDÏ ›ɧnåå«[½ã‰Ç6õm­’ÊÊè>‘Ä‘ç*'·sÆBǽËÇsœç9ʪ®]R—RÜ…Cn/$Ä-ßz˜òGF,4¹w¤É"—…cÃHµE½ª¢ÑQ©ë=¾¾ïU_·ðâ#âjêl\Ãqþ/©ÊÒqP}µ+QV×Y… Ñ'ɧÓð´ŽjZÃI7¤±RÀDÅëÙoO|³½=ÆÝí¦n†_×ãYzú›ëC,åf _+Jí›(N–¨®»!¨æŽ± æË«ºŸP½–ÁËÜGËnOÕ&-lTÅü…%o„»_`²ز¥}Å/å´ý~­²“¤ŽuÔjðèE"ëëÓ¼%è[QIÜöŒ’ÿȽƒDÐ¥©5îUºº±¨PÔ£M9b-G"Öe' &\¥À&›Á|˜NWµº¥V¤®à‰bà(ÚAåvͳ²Y]°äaBxþFÑÏ`’¯6<=rÖ¡×+UU‹¯‡Lt¼ZZÛÖUÇEc+æ«‘—³üÔpwÛb sÌ#…OueÏcøá->éÏÕW;vUo°¸RóµœäÓÓø?"UJ–tKNà"wS!¦¨&—¢*cÝ÷ç'ðàíï®”w3»úµq-f…”–6 3¬vÖ\Î0Mï ÜÌË3Ÿ;e͸ªŽÆ- ï¢grWþÛnê´ÍÚË,1æÈT®ò Ž+*DÅɬÞ¤kÅê ùU¤÷0’ G¾­àvÒZª{ÑuJHÎj¡ýg²eÜÕÆ5ñxx¤Bó d~@•8´BqÉŸ.#!…~S¨­5Ç®2Èe¸S¬ø *IÄ5”žŸú‚÷Í€ÌÜJé1[4ã8™I5ÃÒåâÏãÊE.V¹ªƒ{É…¿éÝéåÑyOŸ›õÄxWv“ÜG˜vQÄ™Ã:Åî2>%%?yu“•,”Ž5‘ TùTܵ1Æc¹AˆäŽ<©i eQõ)µÜsîÔw´:¸=ÇH·tU¶¸Eõ @Í.ƒ‰'y½Å¢©(Z¥kWÚ9 ÀKXUÐP¶à=³æ¸½ºæÄ昮` ÷í³~ã‘«M­œâeè["mŸ,ß5Íkop—8\GpBÌÿN­²eSÙ§ Cr´ ØüˆÕ‹œ^Ä1ïñ(ß !Â#…™é¦(ü•¬ ÔW+šŽ×"Ë™ã `XÍÔË3å&-ŠØÒñnŽÍ壶ˆÅºKæ)*´Öÿ‡ª3†%W+‘·µV£0‰‰z½õ_ÞT(FÚ:-lŽÃqŒ‹‡Êr‡’œ]F‚Ó!ä)‘“ä‰÷øÒÍᜭI•_M[áH lCjŸƒO?ÌÒû\óÖss“­Ûdj„¯ŠÙá+)ëœgRÔË9Òoíq‚ž©P‹=:б´ EôªT6­rS†õDueÐ^³c÷Ÿ—…zea©åhGMXØdÍL{Û.3±[Òl%xù*Sq¹éWR66”~$¨ÖÒY*J§z´Vµ*YsÅ{”¦Ô­R›Q®÷÷D^=¿wÞ¿]už!Ãx»AAã<;Œc¨$jÂÈ`X´Pe˜±Ö–#,iŒÔ¥IÅVcK¹èµ)'{Õ;¸íu­}¾?>ztטƃÎb2˜Yêp¸˜Á»fª'™ #TQ|ª*{¾{Uj|¸]rÝ5Û®?8´Z³âÕó5Ÿµ¿/ûÿ/·óþÝaçmbÏ ÊrÈ`èÒ˜ã#÷‘›úõíÕ=JÅxôÙäöàIÁ*4Ôq~)ÂýSSõOÉÛ †[bâø13¶1·‹ ¬2_ðd¶)fFîµúGüòÄΓ RµQ ^χ^‰Ѩï #ÑÖèqÛEÆ»…¯e $—QlˆÑl„΀۵·«få¢Ö?dçS£"ËŸáÒ¸TQ5ßN­6²¦«ÆgÒª~uÏ´·–ã£ÖOç'Bí9ÿÓGˆ2¼}óç*‰îŸD…?c;@¬£K°¹<Ö}–¿‡>ÙŠZ—½?o3âÑi‰Ÿ?ôÏï³ÊrþÝón ¦'(iLMDà6½˜  Ú\u[]•„z}2G™šOƒSö(ëY¶u·#¾¼ýÕ>cs2¬_g†±"¸.Œq``„²íMHÚ)’)Œ’F‚z©ŽÑƒ:÷>Ôc\åa£§Ï_—NÌ>JK“£R«‹Z¿ âûw¼¼^<­á¢|tsZ«ÊðÒ*kŸ’8bsÇ)®ÐÄÝ"BÇHS»™L…ØÛ[¯0‘u+Ý]*ûý’¦ÖŽO§äÁ;S¢Ž{Ù–Úm߉™ðþ>¼Š‹qÒ±RÀ)"6§e7ȤԪyv¸³QÎaƒ?fªÒUñѵ[O,(Éܦ¿±%ÔŠ–ß Á¯ê§ˆ‹^ÒJŒC7µæ©fýÇÛîNó6ф،€ˆ\E+BZÍR9~X³OºH¹ 2¢8—¦ Õ¬`Æ9j¯<.?ó¿]N¡òO,9’^aÌFe.CÅÅ`K¡r"ЉiÜ„IHÊ‹õÂRzm«Þs¶;v>ªR§¤Ð­W@iâ77!:¶BÜaìÝÉKWÊ$9²F‹lÖ0Ã!UW'/tÈ+ãçý}$—•cy‘ñ®;ÜŽšö—m»gɹ˜§Ô›ÈåQ€ÏÒ¬2¸1SÊ•)¨#žëÓãÍÆRÒ†¶Ïd~½ío7wsO„qpé$¶ŒgëkhaÙ8…V4c)QU_aÀ_¹¦Ó¸÷ÈßÕD¿J¥Ý÷.tñÀ¸¢m‹w »|:pDþEHAâÍX^Êì Ž±–h2=36:â´ÈŽ´F}GVZ ¼SZn¥·¿ ‹ŒÊ ˜Šu–3EÐ, ¾1°Š]Rmª„ѪIÉëa'çö¤y{yV·7]H‰Éilb-"F½½ö>ªƒ¬ãÄ9ù&G.ÕÊõb§’FÕcÑ®ìNö±\œqu±ÆW‚*KÎ[Ø^ZŽ“c95uuèuF~œp÷m""Kµ )WeÍo_kQÈêoF"Y/Ò竎ãjŸníù˜±WP<«äëèAÓf>u!,£$w>‘Is5"ÙéTqa;@ȇ}©øvvÏâ¦ï8Դ™Ò‹!lœœfÎ-Bú [VÏh6uɘ‘Ér¤Ô•8ž¥ü—-Ž:aÜ=8¥ÇxxŒ´}šªL+Íä)HÕê"r8œlRúÉ1 ÞGóØCÀ9UDEñ©E–ÿO?ǸŒi¶¢Ñ©TxÔ~Üæ;·È˜Ùa;"ÑÂ@ˆŽRàÍŒSBêØ£8¨ÄuFÓkQÈ 1'XŽÆ½²‘¿‰RzúL¨k|®UÆw®¦®sH;—U½éIIæ‘*r¨eENæðCÛ =ldqHjßÕ¹J÷ÅERm´C#X·ŽÖI#¶ ‹”£o&]~ÂöðîåbÎ'ðëõ8 Ÿw;ˆ¼“u£ ]ÈÖH,@ìîvÛâ΢·¼O°Ó rYnÄËÐq^EMÌçíWáûÂôãgoq¬`hèf%ÌM£ðž'ê¿jCCî7Ì%mV}én‘m”ƒÊÞÊÔ¬q’]žê©)ÃXºÒ-4€'¢øôjxœà„~pïèÕBCþœ–Œ•BhW™sØÔs{¤¨är6:åÍÈ2ÖÚmŽ0 È”¶ ûÉ)èIcΑI.l•¨J~ÁE’EÎÅ ´ÜÃõ57½•;Zµ• ÞÆ,¶eÙ¸pÛQw¨ éÌ*鯼±6>êÕ«}eÇr8¢S¿!Uî^Ô<Æ»¿µ®^1¾Ç4X1á­®œN{t‘Ô¨¥½Ê„"°ªú¢¯ôg§""#QÊ«`)©Çcµh×ÑOjr¼w_Õ76}@&t²3ù'ÏÒ–Thì œ³`Ò›ƒjëg¸È2´T Ëíæ ŽÜ–²M–>Ç(ü<ûm´þ‡ãLr–áv£1…ÙåÜ«0jèÒ‰2¦b‰ÛñÃÔˆ·òÔ'À~lZùZWг¹œŒZ—Ôä<—Œ 8Å ¾¶$:êŒzG™ùÒsCìˆ5±â‹‡aˆ¹eK+ñ+Üxïm%W;·µQ:b§SŒ!ak‰B|' Ûßüd½qY(É$"9œmÁÚkÂ’°h¦˜8xò)ÅG|:žý¹n½ÜÖD>F p…Q‰ß[[Pó·ãÍ«Fî ÏO§ÜëÕ$Ô0žèÖ¹Ý꽎GëåŽîs S±µ-LVC4ÛKu­kNÌmÙ»Ûj#‰+êQJª9K«¿G¾Ÿ{‘ÏW5¶í÷¤<«®<œþãw·YPÖ¶Žʦ®qôÆÍƳSRx®dâ:jg&uìÈå1jWO%‚ëk³|Ó²-ò|ýÖz_Ðß|”]Àäëêóm,8Ú¶¢´ÉâÓkCæà»y…W[Wç20µœ VœÒÞêÞ'oxôX"¸ßã³°›ë» JTšº5zF©C… Ô4Æ|%"{–iRM{•êÖ9ÝŠõk!¦àºŸA2¾bÉòÒ‘ñqÐRÑñ{€–uÏüT´íR<62X]ýëZ«SÓXUBRNâŽk‘Zžõ|e9ºct*âU0±ÃËÌ]Ï!zEÍ¿LÃþe%k>¾Nç's“µîDw{R㮞ø‚ÑòÓÉ!“C"ů¬jéiEþ‘fú„YEö­Um÷r¯r¯†œü—‹w‰àdq®W<Û·šqø3ç1lN_ÞÎî0² Å45«Ü4úÔJŽ£8¬1UdÏy%ŽÂI˜ˆ Úíõw¹ÜÍ~æv×·(vß•s)äȹ&ÓºA¨¹ ZÚämicPàônÊzìÂ9JÑ}1¥thœÐhÁ7“P¨1uÈ_Ó¡ Ô[&´A/…v:ªøìŽQŽjrÆ=QyïDê{Én{[ak_ÐPîžQÎ* j{*7¹­Dç”O'œ÷<¢¤—v½K`vù8önc|o³kbè%ŽæF‹ËâµÊvÙ×äÞ•ÕÏËÒ_ȃ¢-B²Cç.ANðý÷óºnþí÷IÌkÙL¨m[2û²–S¸™ ¼¯Ô!®aÖâãc!°ˆünæ‰ÒÂXéA‘£hãü&ЯAþ‡J»©×G?óÏ»}àì¯r˜ºý¦Ä庺!Õ—÷û£È¹&¦é·y꺫ì'E“Ÿ`V¥‘]/BÌÞ´&›¿"šõ;éó²½…à9Jó¼w¡T¾n íÕëý¢o´òk®­~Û‡u´žºRÓUgHjÌ®¹”ÐbUÍf×ú‘ï¯où'ˆÌ™>m2Å`‘+ˆÇPiìe‹2‹@ø\@)” °ç‘„œ/ üŸô%Öþ¶ñžà»›Ä±ŒÉŽœrŒ~INú‚‘ˆ¿ \UýAg€•N7Ñ*µáu¾Ê1µXæ1îo.Ôt«ÓÓ _fLSž*ˆ2m:Âj4 ~Á°ü¬e#ƒcOÉDõ‡"ÇÆ¶F‘úBkѪå”\,™ç“Y©ïggh>…;K;z6–ÔQx£on–ÖÉÏÜÔNÔýÊä_d_’qKÒ…‰óbû£ú{´&f³ãÅf?¯™óçüG_CM4ÖnºôÓM4éÓ]¸MÁâ­bÉ>fÌò»8œ3lú·Wת©yz¶ŠëBíZ×8‰r«eQ–ôZsœ¨ÔFSkêÒïÝCmèlóïƒ Þᜧ|`pÖ_ºE6 ÜÝÆ%ôãÒHÈé@Æœ‰KP#*×Ħ`ÇN¥fÒ¸·Z§U¿„¹ ³öø»4©òfaxbišb?M<ù÷Z(111=wIH,Þ£›EIaÄMâ“1îöÄÌyý£òóýÿ—YrÝ¿[ì{¸Ë“P²Œ)µL>?ñ<šC¤YÚyŽä–#F£f–Óî§8“ ¸üïÃò2ò„ȇ㡠nÈp6¶çv # ‚·7𣪍Æ`ãÛsͳø!ÈXÈéb¿ÈƉ™ãí¾yÉÖ ty@ŒM> TžÈ$WLðzäŽúÆAŽó´.²vÀ¬ï†ÀŒU)AðÁÂ…ãô !E‚rTc(¦nåë{UXqZfBéÅÌ==ºˆE¯òŒ.9…nVîAe&a)fçA’oàR)Y1ãæÂÜâÿ?¸ã1 ?€qÕCÄÑôÞ Z«ù±ÞžÑ÷Ç–r25±‰Î9Ò\%P\{¹<; =ç4°ç Þ#][5:ëÚæ{V–¬Jj|`4Zï£qqýî+˜:|PBÓï¾f6¡5"k7–7î2ÄyeGhúq3?ªx²ƒ£…[´‘—,™Ìà¢<&TÂ¸Ò Hø.Øù0‘ȪÇÿ>¬~¨%g9ZHd“ s‚LÆŽ^&{Aв?b5ÿÈ,ŠG±ÂL¤Ž¼J­Žxº£ZÕFö3C¹Cc=ls¼ø{ägȤï¥!­Z •Ïñ„ã0‚¯¾ÄFÆ%꣢ˆ!‘¾ø` @žHÒÔ‘6C'dúªtêÆjöÁph««{ [:E‹æÛFŽÐìcå àBMŒ[°]^ô¨ßÒ¾‘ª.¨çÑ릞Œžæ›8;éò¾a®Èõƒàv©Õîº<=©=Ê«SÊ»‘™L¼ÍlÄþ–J÷âÙ£ÔØ(ÄÖ·$XÑåöó˜ñÔ±€—:õ|ÿo—_áµÆ¸ /òòÚh~xõóñö°°[°êO•‹€Èˆ°Ø»¼ƒ+LF\¹Ý!ßyÕµxÞ3ŠÄ¤dDY—YÛ_‹#Éß<£”ŒŠÓÅ`ð厓i5ͺ ï ÈÆ~S]Pv¼¹a*ò;WE™Rdcáºl M.,r R‰!EBâ=Í®CЍRÇä½ìæëf}-ú”chybr›fÒ1±ä_quƒ,vEw $ÄóËy7‘$¡Ç 0Z_¶C•¼p¬G¼2ôéµÔÖ@2ú[ÏöÑÛŽ `ë`1°n£Aý:Œ””zäb(Ñäšãî:âß–—TàìÝ´}`J`!¶ö;É›~5ŸkŒdlWB±UªÐ˜ã¼'YŒ?©V[I‡ ®ã ¹­V¯¤ÅÑÈx—§NMž–.ÿ«~Q²±Ÿ6Éi§Ýì;dŒÚ‹ÅŽd×[ bN¤Dm²ÑŸU'ÊÁˆ;qä ©¥È)œÚ÷ °¼”œÍñˆäb%RïÊË©^.Úí¦0uá:qï Bb¾æÔîD5éê¾èʺïdù1Ëi}0Î÷’L.–À4^ÆÀ¥Ì€ÍœÙ_^µ µã‡0YT&­!!XÇÐ7ßχS\š9ѯªdíÒŠÄ6Å,sT-Íñ‰ÖajV=£Æ²þ#AF •‹‰9Q:ˆpí¨xÝa$Û!«¨Äc£,z©ã:y½ž9ÞM*Ö¢¡Ü^䙆öûh@®®ÊëÙŠ¥#ÍÅ#·Zó.j=­$ª½w¯g}%˜ ÜœJÑéb Ckº{ œn«Ãzg¦ð%rUvÏ+ða­Ê½«ö®'Õ ÙìL+UÄ%REsmcBÙÒbÑÁ~®§äÏbñ„1ÏeI)d¨×/¬¢¹¨åæ‚5ÛÉì.~D¸Ëɺ·,¸¹KçT»–ØèzŽWÙÓ¦ÏO?U³©ækcÁª_}µr+ú‹t7ê”\°{ xZ„i [œ éUôö(v>*Éî}ŒXU3GMC J oŒ•®8wÓêµ(Rk®wKð|úÉmk )ÃVAh¹ôè·Îõ…'|¬ïmüŠB>"xä?ŸAÊmTuhˆÉæº Z?RýÚÏz¬q^ÑvÏŽ\3 …fñ•ê³7¸­J PŒ[ãÕeB Lšº£©¾QZÐ;Ù©êCЊhañLÉl³¤bö¡@Uc,uŠ6„'eiN€2Š$LÙ]·ÙT³ï'<‹“è7jf,,‡‡FǧB°;ªv¶‹ãeiåko¿O´£áoÉäîî¨Õ(Ú©ìÖ3“\M( !Fê, ¹ø =8„2ÒÚ“îVA’äJ0B?òmsÿ&ÛÑ¡˜]ÈÕ(eå=Ûªw~ @¶¢wÒ(äIÁZ ¥1˜ÄylnŠX y ²¥‹ Q¤Î“a&:d„ÕA N;•£À–Ëx'àÙìü û:Óü»¹,2ct0t®?5‰­Ã¾§f„†ŒÁ„SEåü€ß­g1WÈ[#««Ðâ™Å£ê—Õ†–u²·Ç0•´¬[Þ_l¥‹ç6Q âMc®¢ÅûvR~(_u>Ø£7ù¾É3?KŸˆ7§®::—‹pža©£[ %n| Ôó’Ì©G†°~yêÍé†@aë^µYo½3Çøü2Ì΢kâš‘bê´(©èx¨}Ùɫǭ­äô“]ÝQîáU¦P‘šÁÜäsœ`2w9¼öüÑ6ryhûŒid\u9\œÉi ¢7ctóòaad'‰¾ˆÓJ†‰KËõ;zPÐÔêe1Æ´ùíCxoD—pˆà¨Õ ¥@e¶“Ƕ¸Èwr)É ’ÕˆÐ#!¾%%7p•edÈY [ƒÝˆeÊ>Š5íjTjØ>5Û–Ã… ĸSc‹Vž@Ed 9AvKk*•Dg)îÖ;Ý=•~|SÛ.÷¿•ÅÈûÍ­`ÒÑY¦R%T ¯ZX®õþݯ!^Úqª?}}XÐåÐjr—-®ÐK!õéz ? !.8.­æ¥¥½ˆÿÔlºSÜoV}ýîq4c¸ˆçêÔÔwŽÚpó CKÖ¸ì­[Í<è´*VIàhØy¢ö ¯H»‚6™· ±Ò;Wâ8œ¬¢­© t”u‚^Ke×£l)Œ°¼”L¾¹ãu˜:Ÿc\³»Z÷5ˆ½ÎU“©î¨Ÿ~¿Fš.ºêJª,°Ap‚*TbD8¨Æ1Ž•­kZÄDGôñ®¦1Ù1™håe– sƒ†9ÌKMÊS·¹ BÖ½ˆK\·™Ÿ¨KÌDÃMuþYŰLã‹2^Ê@¾(ÆYƒ̱nEŒú™€ŸA2p”N\ Öc¤Hz¼|¹þ¦¨ÃcÍ !e{J…Í,qd^“à8Ïæ­´ôkc èb^£û•ÝHK€^žªxÏd-èî3§V:›ÖŽnöŒZß’ÊÛ”ÛN1ÎQNTnB¼Ã[mÂþ";ìäáìÝcëkºjˆzí‡7íò†û§[–ÚDƒnyÛv›Ÿ º™üÄùýµKhO%Yc @ fLuàÌÇ—&6ØnÅÛ–)ƒ¢9bò‰îËPK¹&C˜jˆ½í:tÓM4éÓM4Ó§^‰÷¯ðþíyé¦:i¦št馚iÓ¯Õÿç_ãýúóÓM:tÓM4é׫±~ôþ?ݯ.Äû×øvšiÓ¯=4ÓN4ÓM:tÓM4éÓM4Ó§M4ÓN4ÓM:uÿÙapache-jmeter-2.8/xdocs/images/asf-logo.gif0000644000175000017500000001615712032647206020217 0ustar ebourgebourgGIF89aƒd÷÷ë~fff™™™ÌÌÌ™3´Œo¬lJff3¬OEÿff™f™ÿÿÿ®«™‘OÌfÌ3öÛ{¶7O33–§·™f™ffPPP™f3³˜’333ÌÌfN@EσY™™fê/XæTÈJ´ÃÏ·Tff™§¶ÅffuŒÿÌf™3ff3®JmèÝv°dÿ™fÌffËVP‚ŽšEOáV˜NjE HÌ™fµŸ¥æææéééš|~¯¯¯°cvÿ3fǰdõ¶lÔ®ifI °¾vt™33gt€··¶|tA{F|ˆ{ „7-ž}L‚”¥®"B¦«¯¾¼·¸±j´®x ª²ÌÌ™ØO¢K·‡VžE휃0Ô*P®jOV]~ff33­¨{M V­Jä½q‚ˆŽYO®C¼LèVAMYç UÒQÁPÔwµ{}H²¶¸ááám~€¹±_ããã!êtó±r® lçT=GQÓàêÈxª|ìN\ä±n{8QçÐuNNN·¹ºlUH¶ªi︯¾ÌÒNy/f3f¨†Q‚„‡„†ˆÌ™™!ù,ƒd@ÿH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜx1Œ,ä±HÀÌP8 Ð ðàÃ=p(PÀƒ£ÏŸ@ƒ J´¨QŒ:æ(3Àãǧ a8² WéhB¡+®´xéà ²FAK„͛شB`Ç€»Gf€ÊFˆ!@í 5¯á†„+V(`ˆ€f&<qbˆ™wRÀt@Á‘:uL˜@ø# XµÚÐzÕ+…1­…Œu@ÆkÌ—·q[±W&tk¾A€‘ yB KE Ýë·``>ÉCpAé ©ÿîÎ7»ÂÒè ŸªùƒìÛW×.¿tÂøò7œC¿À¤s€jÈõ‘G(hB¡ z6šõÁ€¢e¥•h^k&€ÑU -äö’ ©}(\m]áFÈ%à‚ @4F +P"ÝÞQøY‘Hâ÷^A‰4@“áW“} ‰X_A)P†èéç“ ¸S h@¤Y lfáolÎôqÒ9ÓKkáFÖm#¨£*TxL-ÒVWB¤fƒ ŒJà(xhG{|dpÀ\P (ܰ)§74§Ü€DáCJRÉåSÿôä«êYGk¬[by–]w«—À.”ØÄkì$›ì¬E\* a&n}ð D`À½ÖÄ;=ÊÔ[ÿ¼CM‰§²vz7/€ây?ú}ïuÏwH†°—DÁ/}>ÊÍ“ÃåûÛÒû~—»üY/ A B»êgoCˆ˜@9Pð‚Ì 2,¥¦/ÏBp`F€BUÕ‚¥%7ÁžªÅìÆ&¨À7ÈÃú0`À ÿŒð…Áqƒ£X³Ñ¡3W1AW@ÔÈPO/éÓœÈB+xÀFʉKsV€ƒÞQGe¾z Ϥó”Ym|Œ“Ï~È^ѱ!:Ø  ¥<æ`Zo>06õfE…"D¦=§IͰ"E¯œ¡’* ‹YP´¼pO˜MŸ^ò›¸ØD >ˆAþÜ€€Ô»ÙÁ m°kcBìø3J„W¶”ŠB,à3^~îkw«’÷çÀ1  TMØ– °…-A*Ê6q£„®(B•ìŒW(ÔH!¨€ ¢ÕG¸ÀG‰FŠdkè6Ç“¦ìƒ‘ÿœ üøbAš4ЀØ¡ ð‰àÔù”Öm`9ëKÌðó0^ýMk ¼DC·ºÊùòŽ“±ü8…)ÐË- hBš~P-àšsÂ!êDñ© ØÜ ]\ƒ ›„2Es!À `R-º¸,EЀn¦v@ 7Ð@S€¦ƒ²@hª ¦%!O‚HújDÀƒúñ@¬C¹KýB°CòNp…ëHçJ×)ä “[÷ÊׄÌî«T˜æÊs>Ç•‰1¬{2ÖJöC¢•˜‡ÄÑ1¯4Õ,cß³¾ëm­HhåÛë²¾¾d`ŽQz¬Üë3Ê:Î$tCYb:ÿà˜«Åle¥Ø©¶r¬uÒß臽àÆvc³5 ².kÚ^¦zasnÞZö?„°G$©óÕªLÝ¡-q¶z•C6wžÑ¼Lãœíj7]Ïî¼õßê²–‘U×u¶cDzö2ó~®@s˳ۄ”δtíiý–°ïlµ– ~ÿâX$ò–±¤­-H€Zø!"3m‡o÷ ˆDÁ­ ®Ù ǹQx³vÏ‹1l‹JÅNÒ0q‚ã#ŽË_[…—åI.´ˆñw‘L@!‘/´N>2üˆå!C$ʱ²u¼AÊo~d¬m‘%¶ÇPï¾»êß÷Ò+%ÿÈHf®Äz:’Ùö>5HÉØâbç1%kvÎê„tÇÄ<ÈÞzâ‡æœ–¬Švž p™{ÙËþ"Ý×N{úÓ ¶È^ Ü”à²ãÁe”êV»úÕ ˜Ãâ¼±CF2F A P²Eœ…Wp€‚7Ì ›èÁ z€&ÃúÙÐ&XýH˜ÌÎáLb•3P áü)g•I¶ e&5ý* I$7ƒ^·“¯ÃeŒÈ[ËŸæe¨EêÇ¡¦EMÔʈÂÙx…“C%CL~ó€£¾§§Œ‚ € ž1¼§.Ñôëì‹>—®Öw«oí˜ æÚˆÿ˜ƒ#B3šÒháß$*” šh‚3 E•L‘¹arÑ’Ä‘¦Š` 6ìóa–.€vWA1w/èX'’c‚W‚¦mpyq6XÓ/‰|!µ_Á~KÎãrf ØáüÀ»$+A²5€(À+¥ƒlÐG¦“0§±A‹~(‰3‹GÑmh@²¸÷M[‚JkÙðj@ Ð,4¡ÍÞHÔQ÷–É·¹ ù[ÈþÆvÌF'ÄvÜ 1fõ©K]ÄwI´ù8jÚÞ²Í V}]°aé1`"[ „Í8]€ h¡é‡æ‘íyùÀpý”ŠáNÑÿOG Ù†-mxËRSI'*úÍ"àlåòjøÅÓw0RÚ DU¡o¼Bvõµ@Ó¶p7’OÀ² ƒ¢M^àR4}S´ST!uÐHޤNîdc0"Q¤77 syâìê‡C1¡~ P4(@PÕbPvõGú‡z§g^uu„ÁjÔUg¢e„ÅWråLK/€1y[„Y¸\È…BÕ &ÐøØg0}‹Â(è4)´ÂNBE*ðòg.7€eÐf’&ðO@UOX% <9|ñnÕ„„1:È"% W$Àÿ{Õf%gF;Ø„R@“@=4mcRO¥YX&`o¤ˆsqMö4S4ð-E°È&XÔ…¹¡ód‘çòTsWdp^ap/!N]£òuØ)apùraÀLÀOq pÕO׃B˜@„A9ê¤d>¸*"w\rÄ{Jh_çc\‚„{…WxUWKqÉ‚€ÀÐå2ypUO0 >Bs¢SÙ¤~ 'lÂq vtBê—Tv`irPÀu…—²)×1"m&iqWñŽð8W²dΤ,)×’4Ù’wW¼ÿS’'éCÈ‚$\ãÆL;9”‘5G!”w¤$I’^a:@¨qDY„òQod”Á”¯fKpƒdíÁVòqbïõ]c9„K’!C’5ñÁY?øäµþg_V²7Ò•áå]¹„Ò1|LC—u©—ÿÇ%‡AŽí1s£gàå—+£4ˆù\gó9d 8N”ÕUW‡8³V”y™„h—ìuK]S–Xé—Š™4Œ&:Ý•Ž,A™¾‡L¹ô0ty˜ªãš¥Y–C!vŠó5²i6‰I„RI|˜¹a¦'xã3 ÕhV™ª)Ç©oi]SšÏõš¹^Šù_É•C˜gÇ™–LhzÕÙ^‡ÿèšv¶:×i›Óñ*sYë¹^$†•¥Láé™ÛÉB•¿©‰èhqœé¡7þe›xŽšgð¥uŠÙ•ó‰Fè•ú J—f`lE¡ƒ œžƒŸ ÚWžRš&7ÃRÑVšƒeOS¡%£d¶g]lW7#¦hÝa%#f!³7Úbæ1£v6ˆÉÕ3qö0<2Ž…2&6±2¢Þ4{6Ø$-š6·…ZIÊœ DÝ1ˆäeúeˆ<ÁiÑf©ÇeÌDþÓ¥»ä¦Adp¶¦«ò$nì£?Y¢7ãó$1cd9ÃŽ`ZQ/Úyº4Ö¡ˆSLÿô¡êŠŠ?ú)¦¯¶¥ = S2—º©œÚ©žú© új…ª¤ZªŒƒ›¤ÅD:¦Úª®ŠgcÖr w²“,2°0°< = ¯:¬—ªG µ` !%`2P2@  ^H¯8‘ ^J¬Ú RJ1k„éii'ä0' B €"å–ĆE†ty§T ¡·­öÚi"õ­¶x%äê_Àmß&ER¤®;·lÂéwlnñ)PF÷º©›©}åLGL°_ÐV“„('RpœÔ®]è® gCj ã‚gåCIôôv›¥1ª{¥“}ÿÅ’La?¥aб•´?e‚7W‹´ÑsÐSâr@KäUÔBóæZ†¢ ៨ k6ëi3i±£’sQD®A$xs*Ò®7'4D)>" 4z:8Z‹¡IØ„ ÖµŸ FäF~ð…ÛØ×`#pN¤<¥I?EytWDÇÖst‘ÐbÀaKײc·d{,C…,¸:sdñƆ¬&‘eZVìã¶·°+ôãlº·X?I1°(_@¶: Q!-W¨ñ¸t xNÀØW(-$‡Œÿ—MÂÑYÐsp@#âR‡Aº1Ku¥ËŸ©'Q¬—˜–¹‰–áÁ%d“¿íaˆš­AB<@p«MhLqT·`!ˆîD"ÙËc0´íGµ1w…´sh-=ð.p@·@¿#3œ ñz«œ%–—kÖ™´2>k‰D葨¿²˜´Äv$RB³G1,²ƒ,ò}´‚THwòI+’,—¸}qÕKÛw[qsÛKW³¡pžÄ…ÕÊ4DEP#.ðE 5Ðl \²K2Žs4’•¡ƒªû8%©uez„ß±û·ŸiÿÇ›”hZï3|Ó ÷ž‹0IB²V9þ¡ƒt „$Â4p‹D}¥l‡"xáÔ!­1…W‚œ¡M!;J3¤~WnÐÆ7«òGq¼£aï3\»Ä·ã9³{$»»QÄ ¼4|rcÌ¿Y¥3zk¡8ð,¼qCroðÒW}Ôdh!X¬ÊŽâm]1pánòôDâ„"TLJ,’‹/2T{.€‚1Z‰_‹ã»Ët™µW˜æ˜Ããe̼ÂPñE1×kJ±7‚ÀðJ¨'¨Ë¥|Î8slX’"!HI®,pT„¶žtÏ$B¿¡‚®‡ÿ OÇ‘˜kð™r¤ØyÁ—ü»„½ç¨a a$ÑÐòé– ½QMž¿Ã’PÜâ àà€CmðÃv°*0b¼"ÞtIL+²ÎE$BlnÐ}B'êGW¾1àÆ+Œ‡pPp‘RP@ÕR=ÍZÈ¿w·’ÈiHŒÃ:œŽåiÇ’RM¡èɼÁ[ˆM{’?E^0¥ØÑ]ÔúvÐÿ‰¯Æ¢,;@ŠE0&,P.œýR†Ô†¤uÒ‚Û„xNa¬"0QE`è‡S®ÿÑæKeàh£‚A`&M0/ÀЄ öZ±éŽš°÷ÇhêOQ`ÄÈH½as9±ÖÅê Á©þqìèV8;WG 50 ðàä{ÑÉÙp.oÌsò6E×Íéx=CÂÚŒMcœMÀ `&vÀTP5/v°$)ÍÛWOH“ò8GpL!KPYPOÐ`tþO€&0 Þ¼×ÉqCta#½/õtM€.ÐûîX…‘ÚÞ, í!ðcrîÒî& WœX“s…, °›ý°ëùà?0)ð,aÿ°/&U/P}‘ÐG.¹0Ù’m0~ òªµNòHŸôð˜Éç;§Nô¯öº†ñŽMWïô“P¿õ9Æ0p£Á4ukuÇ|%1 •œ1öÔ¥¡4À1;FB™Aƒ•Ciöw„öA÷¿ÉöQ‹” 0‰€…µ¡zŸV^‡/¥}o‚ÏO_”„÷²’øÅ žXù®«Ç„Ý5Ö\N` úŸù<ì1GéUsd”Ø)ÈéÙÏi`IÌÝž 4©ÞaaNžªœ€ù™çæ ƒû¥1ëÁ᳇¤E¬a©uX¯åXÎï8Ü^VŸó¿ÁëvñrBÿmµawV¤®·ÌMܦ^™©³¶9š£U Xc»¬É„Ù¿ˆ‹ ý‹ÕÇÀ{¦»ÅþA 0$H0À D˜0aƒ@B¢C† hqÁ€‚-`˜AãÉ%‚ìØ0aC•–D©1äM9´I0€ÄŒ) ôø°ãÅ¡0L’8reÌšY¼éQ…VÒt˜´èVK£Ž%{rÀNœNŒxqª@—^OjÊsªCy,˜)pïE´ia<µ«1„à›eÌÂñãÇL‰†º˜ K°0¾Ê•x˜ëÏTÝVÞˆ8gݘ»beûYªUÎC+U\ÛöÿJ¼1“Š}}yuʾOöÕÌc €”a-‹¼êSÀè•ß>9»1dìŽüŠ’;åÂËá6Ÿü»¼ì¶ I'F€çÑˇ¡:sÑݧÇeÐúmW À>óhã‹®ü ì.!º„ºI¬Àæû°öØ;M¿‚«‰Àà€+žZ‹AŸÈÓÌAÑûlºî¦SQ9 /$1µ“b#®>y‹Í¿ô´-©°22$ÞfS*€r›oÇ5€‡cè¯ ÒÐ!ã²€‡'#¤î¥õz3ÈÇŠ·¨¾# ÈëØ¼HIÓ6ëO=׌TjȰ,hË.óD±¢.ÚÑÈ „SÆÖÎãÿÑ5³'4uBÌ>&›¤Q¢Ò³G1»QʱòÁíæÜpTƒô’¨™œ°SƒŒ”²¤OM®ÒU…ûóÄÎ8m@肽-X}$¶Ø_õƒ.Ù²ˆeÖXa‹öÙf—µmÚÚŽ…ÖZj»õö[pÃw\rË5÷\tÓUL€+Õ¥6dXÐ]zëå«]{Ñß|¿²YQ:Ì]3Çj¬_„Õý7asAB–a…D‹_ ~ч 1ÍHeú¥4EJÓ÷Àäw¡†Ò©ã H^ $ŠÇ*hD›Ì<%âªi¶y%¾%†¢ùÚ3kRT^+)éc†ø×…0Ž@‡wþÿX£¨'êø¥x-îj‰P^Àf„ ®ñ'Zfb±É{kۘ꫒Çx®¡kkê“,àÍlÛTÖ“À¬kž»¦Ÿ7êª1,ön”²†À œN ÙBAâË$bVÙä:îÌ€sËQJ;„çäÆh3–߃—#³¼Ž\¬Æ«r÷ÂË*Üu­7ôø_wÛÁ¤’²¨²®»:§-È»ªÔËà¯Ý›_Øz§­Ç¾w‡˜7ø×½+ fÇ%½}MäUçñÅΊp¸É?pÞܧ6€Eå0èñ€‡e- 榷¹±H¯,H’Êõ¢â?Ùˆì$ |‰A·X@T1»“ZN¥LÖÁ €JYžNú§3³ eKŒÊN²JE|{^çôwCßÕOZÉ ›qØ-âý°_gáÒé:¦@!&Q‰KdbøD(FQŠS4^@;apache-jmeter-2.8/xdocs/images/jakarta-logo.gif0000644000175000017500000002061012032647206021050 0ustar ebourgebourgGIF89aù0ç:5:[Q,‡{Dß:³«N¿JñÉ[£%·.•#Ñ;Td-ð×\‡*÷T@™5Mðá]~ &æSI÷|J†2Em¡/èàbîîî¶V:NÈ‘v_ "v8:\I’ˆI®¦bK>–T=çÎbÐEöòŠ[]_¶ivŠ•N &‘hk<5¸±[ÚÙÙ:Jf.Y¸xP.--c*]î3t2¡–YbF2}FöööÝBvh7˜Œf= Sö£Q¢,F¶®jÈĈÜ,Tˤ„îæj¢‚IZxY;>¥´ºfed¥:o{ƒÁ=Y6ÊEîÒfúúúL#4Rm>>>c&`Ú$Ako“pQ§šeÝ9Xv6S{oFááà/ IÎvЇGC7$2 DlùhF 08¤*["4” *ʦ¦ÒÒв²°h6M¯o^’~^¼)Qž%DŽ-Oª Rö›WÌixì<Ž":è5R4g‡ a–¤¬TTUºº†•S„ÚÊj––•€[_MXIJJöHAn0ééè¡D3µÄÈþþþi"^®¢jƒ?qË´˜vP‚`lpìxJÎʘb 2‰œ¦‚*Q¥H” \Ö>*0’&R°W~ 2Í(Vö1¹›‘õ4>´®n.UuDvljh¼SQ5W{(9ï»ZK)PrSoèiMvvvò>àÍ˦¦¥³AKN 6’fV¶Œxòòòî~Ftt¯gb0"5h7ie,<‡HgÎ~††|N| f~>F”T[$%a:dÄ»¼¶¶Š·|y€€º¤”ÐÌÆ†1p a` N{c_ô$>u¢`…††n[Arrr¬®¯?TiDvhú‹KïµTX"b AP&&&μ}ù3žžê)Ju*UY8e¾J„$`!þ+Thanks to Brian.Ewins@i-documentsystems.com,ù0þ H° Áå4\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠôè…ÍÈ“(Sª\ɲ¥Ë—0c†œá¥¢—‰^¤xL¦ÏŸ@ƒ J´¨LCePô”¨¤'"ikñ1Ó‹…TOª‹ÆuiVƒÇ¸FS÷µ,A b£a5›Ò‹KâElR.Qº=kí¨¡¾VjîyÑH >¶«(^¼8QÑ@–cìÊècº¥dر¡ŠÝ0¨ÂRÃM/³@Žê¬˜O4“'_ˆPS¤¡7S›%3ŸÊ _¨P²&ŠgJö&²U @Œ5ê©Ñ©1@øð½X‹xàìïRþù]ˆeÑšQ†þŽ'Åõ£YŽBò2{ÑÀCz™í>¤ýôl€oêHÁÐ]å ¢Ä#*çÉP³CsÈàa!¡pÓ 7ÜÒŠWÝI!☉hàc‘é¤CA/Äó‚ÉöÝgDý—|ßÕ6|¤­4fvdß}˜‘’!£D“$wÙØ]<½a&@1º´F<“ìÍ#{4ˆ@ùÔ…PœC—\’F…Ôa u0AŒ,E胈_ýHÐcU "^ (Zý8[]5Ò‡’!é4Š#¡ñÈR4Šzd_ÝtSŽ ¢UÙÝž•v·Š¢Í ñÁÇ$“ðÑ¥4þ‰¬áÌpØp@þ@Å `áWàQidÃ+ô|‚9àüUVztÙ(Ï`¶D":”À‹®@D÷™gÐ,äêfˆ4ÝÄ#A³\éJ7ÒăêAƒn:k¬ëä ®¸¢£A%M9鬑³ýÛn<ïÆ;¯@’T.¹éÐ"º®¤ó°@W<‹ð!Z1»"_Ǥó.Ç0É}Uˆ(P9³×±ÄëŽÀ«Hóo"R[².'ðÀ3dÃݤS›Ì0rÉw²¶˜€‚rR ‡ (LÂe"­XbIöÌf=ÈQf—ÜÑ\dƒGuܸÉÌþ†Ü0ã‰\FQ ¨ã%B"iêp­†`öóAñˆ¦Íl§3›"óG‘g"† 9²@ÿy1¹hBœÜáÇyDÒÌ+ Žttƒ…=bƒÒ·­ì²—¿þÍÉ 'š2¬¤ŠÆ1†”MÅ®ŒFÄ40½¨  M€£0‡q a½èE)̦¿P$cš`ÄÎAÒ Àá—hÎ%žêàáá  °9}N>Á“ÖQÁD„æ[«ë¤AB¨ lÑp cÔè9HÙe6a¡<ņ2àRÏz”@PXñP4^¡htäÔ1DR€ÐÜ ƒ :ÊUó;KXB Õ ™½Ð ‰[¡C˜ˆ­!ш=ƒÅ\áDÌø®‹õ”ÞQ¹Vž‚Õ¨Õ[—žÅÿØ¡y X¨>Ì@€ˆ#¨„~Œ£É…ðh ]° µi8þ€l ÿ銂ôÕž€V0C$G8Žeã¦'™¤Nu) ¨ Å膟ŠFp‡…Å ˆY²·jc4PãD¸åá²}³Ù ¹9̬â`j5È«EXÊR4ÊYÈ,ë :uwÝ+ˆ ÁUjŽS}\áƒ)wˆNÌ– íÍé@¤†™ƒ6±ë…°hÞ+Ù¸ìdNÂ,½VAáÙ`ÒpÅhWÌyà"m6z! ~¤müØ#Û@R”é PduaÕ 6¸‡*È LÄB N I³ÓžbkÖkóþ$¼zK»P­Øl¼âWˆN4Égþ‰\Å@.æ\92LÚ¤ÌU0¥h`Ÿifw\lãß*a‚Ðõ ^°%‘öŠÄ¬å¨ñ² R-ÌU±cai8ÑLšÍq»Qâ~Î`óà@8ð jø`ãÀB°Œ`°Öΰ%ô7‡9|@¶P8@ Sƒ¼ÂWG&‡² ì­oàÈ ¹„:TÊ•LÍvÈv1™½‘sÂQCBEü&¢Îr†¯ìB=öœ•H¨,HUKØßËÀ¹à¢Ç]ÂA,¾ìbAÄÍíz¢»|T'¿£'ê³Ä¥Äâ>`Às`ޏ8.2ŠGFô‚µg›ÕþΠ Røªw@išLq7V¼ãw«A x¢­ˆ²YôM$D=ÍMœ\¼<šn¤ÌÞ_¹Ó{îÙð!IPWÒX"‚ØÚ½ ®8úžë+BòZi6BD<ªNh:TF#Ë: t6F1ƒpÅÆžˆUˆæZ¶ ³¦eWgD=êd±O¼•ŽvQ»¢{pÅ#š°Y!,!ÚÐs禱TØàÀP ãf‚Ö§G™p‡ÇaþcyuÀ‰A~€2…À!îñŠW8¡jhµ‹²åF#UïMÏôTgDlÃüæ½;N#þÈóS|®—AT,úÀþéBæ×{ëÁ·˜Eã 2–»wóÏà3ƒ‚ðŸv¾/ÉØÝÒ osÃW÷Œ%¨à¡(Ѓ0†0 y ’·û0«¦j‡ã ßpZÉ Ô`ÇÁ0Âc{t¡²Çv ` ¬€,¹p—PÕ‘d2 ‹° ÆÐ 9W€DQ`%TÛ–26Õ7 5cî±tæ–Tô^ôï—DÁ‡kQg|FN91Vnݶ9™v…mwv˜Z/|æ—svt×]à'%æsæTôAñÇ÷8µab¸/° ¬òªòÐ;a Xà4þ˜ gep óðýPq7߉H@ ãPò #W¹ÀQp)… +À.øð`d5` $  ` að D,è S¿¹w ê`ƒååéc=&4‡¢mzD¨Ô{]5Ø#à^!Ðs^\ˆ€3F¯BjÝ wûõ„Ô„Œa…mïÆiuwT,Ä„mµn@$Tß&0"ˆåIGxäØfO£CŒ\VpàHý€Gö` Ê€GzÀD6PþGVmÀ )Ui`Ë€@vp´Çµx¾ PÖ ɇD¸Aa(VõsœSºÁY ¥0ò”¢‘M%&n¦¢3U0XjíV)X©•àÁu=‚Œí—ÄÑ :µQ†£ÔOU 1óÅYfw|Åt—l·BÑ@Oâ$ýQ–U@Eéq|Ó— ‡˜³Q}y†la+ñ ®¢(Ð%5¡Ð ³b ŒÐ Í@ òÓ yB €¬Vqщ_à§SP½ gÀ6õ€»Æ‚„¦àe6ð“ÜÃvd°ŠN€7}sáþP‹°‚¶·»Ð£Dñƒq|81F÷Ñ÷˜À‡Xî–pú§…Í':°•ßjDtwëÒž³¡o㑘씳 yúö}kf ŠFÀG˜Vè÷8ÞètCsE®3Ú<IFÕ ^`JP  2 **npùp¤Prà –àY Ô€ ûР ó  8Z—X >ÀHP ‚¼– ¯Åbr&à |tæ`Ôaœxp9`.Xrà ¬@p‚÷ ddPúÐ#‘>œyau1FlÀBP9`w ãUh@Ó *{„þ[¨]gVÏà)qÉÔ‹ú¸B|jo>5¡@CO a,T•qTzY³@D=R`3 Ij…¹‡ù;‚™Œñ†!épfð ÁdÅ g( #Ÿ ˜˜õV¡¢“ð&: 4’xpÓ L¤0sÀ,€£µ€ y0>Ó00Ѐã hkfã ÁP Éà’²»6+À ‚¹àceò 6ŠGÆÈ'$çЮü°}ó ²'YžP‘ s,±]³ M)·±F±_ª¨Á87a ûªDS2éÇ8š~ñ° R2³3;†2c·þ}šmvš±ç¦IëI&;²l±k€²{Ô5P@à?cpõ  ¢àš4P Õ Š0¥@$e°Óµ¬6 ÕÀq¤…S6s`cÀZÙ H—@š [p¶’&p#ï   õ@RàrPx÷ Sd@@c°¸á=¸Žû¸Qi˜A±;X2Ä!­PD[™`!p$Œ­VµÔµH€ ²é£˜¡€X‹É ø ŒÀQTP µÐ ü0¤˜ b« ›pº¢+ p¾`lÙÂÒ Ì@W@èþP‹¹` –ðÈ Y@×° /ð@)Ѹ•{¾èk93ÀYs‰¾("ÇàÇ0´/ˆ¥50xÐŒà Îð´ÕàP[ ¢À ˜ˆœ¥pj>0 X°Zz —84p²ÅfS‘,Ðk|t=¦+¦  éʉ'•Rc w³!Ÿð›½ÀQm mÚ°G–ÄP¾¥ê¾8Üpêù|9¼Ï"¶`qPgðÕqG†ÿàš ¨ÀÀ:ú‘˜àºêƒ ¨€ ºicÕ r  e…à :†Œ°Z–Pº°¶erâ‚[@qsôq¹{hà¹edL@]þa¾=<ÈŸ¢žBP„ŒÄ@¬ !pP¯à‚z@ þðPÅ:*ÅÿÀ‚ ó`ÀÐh¬‹µ¬… ²[ /Ö›æ  úc¨ð´0°½l“ p RÞ0 “8ã` và[¹Àº’Räpnà5øÃ5DC¹‰Í_1 2 ÍÒ씇€ôpÕA p¢œ`µ`6k|‘¢°»º[  µþ;Õ€ ó0 ‰DÚàf¯6 IZVð<4ð€ò  (i\à»p› ¼ ‰` p2!¼Œp¸@ Ö` ûÐjð¦Ú4%ŠÈ×<Ò$]Òq dþ÷ Í.ç‚™°ÕàÀõÐkü­–ÀÍpÎP‹ ® ®Ù ,4 €¡ŒDÀp hÓ Õ@GÁy¬¢c+Üì?6ГXq>` Äö›¬ÕcÀ Ÿ ,3• ÷ð5À Ö Äpíp Q '€°&×z½×E0„pôÀ àDÀ ,P™`çÉsà ¸v»6êZzÀæ0ö€É\[ ó`óУ›æ-J} Zûóy² ·;rJk T’à¡°¯€ œ¹°7|ó[°Ñ[¾ $À?ð×p ] CC Ò|þ=ÝÔmÒ†° ´Pù  „à ÷ðàù[a2£õ0Áv~ÀÙö& Π] 0 Ó,@Êpˆû VÌJjf@Xà»fi@ !9‰æðcS‰ã0i°H¦Pzô$LVJÙ7p•!Ý'QŽz[²*è8T/¾ê`$ Ñ˜#aÍî‹âîÛ8)@ Y¸Œ°d‘Ü cPà68ÍqcP¤ÀÞ*έ®•ß6 ,PåëlŠ  Ø fðß÷!¥`X; ¯6;6H‰¸°Èvd‚ÀÍk&‡pÊR‹þá âP7•`ë`= A`k@žQù¥t~Vœ Ú€°U€\ñõ›.–sÍŽî¾lÐé(a ìP±P~Ps°Õq þ`—p9@@ ¯9@lO¾´T>~°´šcö XP Õ  Ðßµ0@1@· ÔG]ÚÞ2¹0¥Ø0  (Õ Љ7F ¹`Ø¿)€â è°FÀ 7à < ³ê{é3é$1•*ð#Ñ 6Ÿ.Íú~¾BÀÌ*q  à @ô@ v !LÞ '5Š&ð@ð‚ðJ ›þü°cçM ÿ€kŠÐksÀÓÕº`£¸€ Iêf ðŒ bp o±ª¼£ Øž 90Ê0xDwpÂÕ±Gp À• ë°)ÐQÀ •Ðîëpk)ép Rãs¡šÉÁôhÙ :@3Àð<÷ á x9y¿:À2tBK ÅДo4Å0U€t-‘á«À€"¯aÝ€}bö‘£ ø«@¹^ ³ A(ú‰¿ø¿UŠ*¦:öR“…`á'so(âìÆ°Ïð9RPe ® õG„4‹À@„€@þps3ÄÕ¬Íñ&Õ±·Í1³^z& š +¡À¶9 ´ª¹å,ð¸ ?\Ð< xôÓ ›0€ V@¨€ Ñ~  y™)S@Aî ²'8xœÇ£„„8… „¸ Tª´H /‰<~R$È*Bø¬I€È5BF¥‹'¤BÒ¥3R!Ý^Sd7³Fz¬òâh¢Aé–z”’ŽO´‘(Ò½XƒbÆÈnT¡4Rš´c/\¹s”€hB=êàfGR^¾8VÅÓ‘«Ø¬y1*ÀÈtf\4X䨲gÝ‚¤-Þšr«D–äó¢°º‘êf¼þЯ̾!©œ/ÀJ‘F¹Œw¹ àrr¦[RZ÷î£^NÑqC‚$FjÔȆî½pðàyÇ„«ÏñdsžÊ¥KÎ3‘¦@& @isà@=Ršø±ç£Y³qh,9K–‡Ã~0šYP™<¾á€š/QfTæÙgLn1˜2 °Â2„pgàÁ#@ ‹v@ñ."‡\ám)8óH°.‹«*ŽÚÉ(¤, I CÒ‘i$R$)ˆÔ­›Qø2¤¨¡–Œ†Ýfè&-j)tk²È9R©ÒÑæ#)ÊÀò(*EbÌéÅQþ ¤!uLDy‚ENóÒ#ž9Š:¹ò(>Òü²Ñ¥|\C˜7®ùá‡Åœ36G¥–^zQ†zQ*¹šº€fÛ1ìâˆ.Ä a‘­ú_ƒ?ª‚Q¨ºþ£ŠºÅE—…5‰½¸ ¿ÎÒ`(ž¶:ê¬%؈§'+?þ7é… 6Î")ˆ†6ŸÚàh¨ÿÈ{ðŘ䥂ODó4€hŒ¢€÷ãþ&(‚Y~$ñ¢Œ—ˆý΂K9†8@CFp@ ôVƒy!àÐÛª:Ñ ¸ÕàÈ0Ž& 7~8q¨Ž©:Nàä¸Äs®°‰ñ4à§ëE3`xîРzÀÎC,tËɰÁvEŽÿØÃ8¨ˆ½@t„DÁ#BÀ) á€ÜÀƒ†Bð»âÕo$ òpd>C}éHíKD󔉩 AÊÑP<6ƒÜ© Ò«B=²“™$€˜"-É— LQ Í>±=’x’üJ9~F0&¬Lüê’™@šàDÕØ—^З#yÁ "þ‰7°ª<¨ÄM±B ŒpÇŽƒŽ;0C¡¸T €p½­ÐDhÕŒS&\¡UÊ`%œ•.êÌÅÆamn68ÇxLð„9Ô£¦àEP¸ ë@ XG±¯­P”u©‚4F"…npo|¸¼Y]2’¼,åà’ ¦<d/TÙ *wâRàÉtcÚ¤G8É›60I S(v$FÍô”"Ä+ÿ‡¥V&¢“#É,ÞÔ#PÔ©-mÔ@" !@m‚e é/Åú|AÂèZ°_ЃÌ0ÅÙ±ƒ* £òŧìþº®0p7M•¬šðg=<`‡nâáõ8@.Æ™œgq Àƒ©Î-î ÁB€Jdà ACê‚!XТÉKD4¡ƒ©’4jR¨-OÓ¡)«Úƒj"^=?% MG4À'½´|V…J[ßÚt)MÚWnÑ !dÏUÈi'§@ÒÀ”c À ¤0 (ÕLÒ¥.P9‹2ŒÂ(^(.ñX™Ó* 'Rx*©z\¸¢»‰˜Å –Ôš[B%|Hw¯’Àv¬6©!z PÁ^Ü!³5„h tó‡@:èñŠþ\ÊgëÄâ`V –m3¸1d˜b;¦è&,Ïñx€Cf9¶p7Sˆ#E@%Bà ð` Èx‘­ò«ŽÂ’6(V¬‚BùMÄNÑ®Ajì·!)ƒvAR†2/¥u‰ ´½'}de©j(ÔQ›R ©GA¡*´écì¥Gž1¡GÚ2K˜4ª\EËwM"ñxP†L[4§‰ …é#-X$¦ÕçIcmITHÊ¡Q ›7î>ñ†]„:±8Bòcz„a8d8DÞj`xL‡䈱[õÃÂÜágÈñ vþ¯HÃs ˆ*H@fñ€LÜ Øri+‰nרuyÔÇ–§5/xÕ‡*Í3t`ƒ·H ¤n¤Ð¾YT¼4:ðx<ª°q¾\<ã“Ôs£Ö{òGi å~ôtH´Qçƒ×üKÁlE$ޱ†n£N‡) Í:&'îŒÑš‹t´‡JiÍÇïþ}wÔiüRL —l½;uWÍФñù¦Ê¶ùøÕƒt?=}vʹèP€L«îÔ!qíÂPrwÆû¬34ç+ýwë’ñ‹t÷–j<°¶_·@lΈˆ;‸ îˆ;‸”äÃa—ìååÅæîúõ×_Ïwn>þl _¿~}||¼ý7qƒYÀ‰w€àÄ@Üwž¾úç6î^2þAæÝ·%ûKËø˜@˨™Y·ˆóöö¶ãRÞÒÀûûû’dPß}žÖÝ›ËDˆ;C¨þ» CÕ%·¿ë?šÞ½×ì$ÔJ$U©.ï½°+‰ûŽO3ÝIyá¾~ýúòòb#K<yZøãã£-Ü•îÝùpÞECï îˆ;‡5³wçȦ~ýõ׳,êî+ÄÁ¬sØoÍV¸qhæÝ߈;c³Î)¾5«¬ã þ9Ö3­wGÖ"ÇY8£±ƒY‰¬óüü|ûoÝ"ÓúçÍ»Tç5÷8c²ÎÓÓSë’IÇ•®ï~ä£Q“ãÎfu*â,4¦®S‡•§oFf—*ë:0îd‰/­òOëÂæåu§yù¬š…Ÿ*ÓtKAÕ…Ýk{/©ãQ3'µ2ÓЃ´îÕ{Ë¡ €¦3XÇ”æàTeZ¶¢O+ëto¹^Öyû¦#êË[©"qûÞxÔŠJÕ?{¤{ËîÓ%–¨e«îŒŒ#S³Ëaš3>[´âQ÷ªÞ‡J”jTq`Ÿ¸Ó;VÕ›lêªÏÚ›‘a¥U‰ÙeIê¡«Uƒˆ;«h•g6kÄI*l\8ÉÒû¬Øi"ôù›³¬”ªÉæ\‹wðe€˜q§nÓiVtZÝeûÑì&¾Œ(™L½ý˜™útY–Â{óy¢ã)ßÒñ”ÓÛÑz 4?Y€¸ îˆ;»¸ÓªüøøxÆW¥U9ÒÖ€´çççô\œû‡°)(Ó¨£*¿¼¼XS %_Û€3è™VV!Açññ1±O8Mˆ;‡=99iÏÏϺv(™™Yñµ*7¢¥9Ä`Öós»wäógc+Ù¼¼¼4+s_¿~u6 вu§›uX[ÕÊc=PˆEÕ‡‡‡úï÷÷÷ñ7núüù­€žTw֦ƀ¸3*ëüúëçæ?‰'qíP Z­H¨§hÉ:ˆ;÷³Îã7U©àóç·tâùv³ž »wé Ö#ß}"’[A]€²,êݹe§§‡Ûÿ—4‚Ü2PëÿSƒW¥•–z/Lß~èñèÝ (yffݾ:·~ûúõÏ3ïÈÊÐ%ô`ÖÝSh@$‹Z•ë4p„XÐ[¶IŒdõÞ>v‡rSUãñ ç8#úP%iêØÓÝÛ—0˜¥wqg- 'ã³Z—¤ÿ9æÁèÝ@ÜY…£J¢wçéé©uÉÛÛÛøG®ï>é^;j¾Þ…Ë\=ÔY^8€¸#ÇÄ—®ñÔßÙOߌü ?Ý÷}s'½RÊŠ;œÎìÞn!¤[ ª.ì^Û{I6Z±£•·z¤u¯Ë@&Q¼iÝýî3ŽY†“Æ>qgÕÃeÕ3˜g=°Zæôî$ !­ ÐüšOß¾ªÛÔ¢¾p¨ÎÔ¼W70%.ùz[O4fPnÜa/w§·ð“Ý$”¨!%’ÄŒ‘h9šº "€¸3ßÝ£!Û–“¤kªbÀçÏŸs—&ÌÌzxø£Ó{ûêª[îiuðT1¨ªu~—ÿyaïµ?å{îÒ½{=¸Ö¼¼÷ÂÞ_ò8C×¾¼Pý³Yàé-öÌ.üˆ;Źۻ³0ë´J;³ŠJ6ÝñÖwAuIïWO}yó^õK~Ì*ÎÇSN ~Uóÿ™xº©hûewJ´Á9³”v¸tF êÀAˆ;…_ãi¦–ºØØº$}_¥€b³N÷û"t†¾2–›ˆ;Å©ë:é¬ÓÜ«†YÇÜ]Ö($ÙŒùI|¡$þXN«rqO€sY>P î”È9³8‘åeq§Pj<”CÜ)Žsf âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡° ïÝy¸ýïû·ê÷ËûÆÏøåõK®•¶ã&›±Þ¶_Ûk쥹^ÂÙׯ. ꕆ¸CÑuêëþï¾ßâû.ÀÔgß}uÍØÐ‡Zž©k/ãK¨ê\ñ¼o.ÄŽBïâñéÝ@Ü!,ÇÝ@Ü!8uÄâÓ»€¸C|j<ˆ;„¥wq‡àÔuwˆOïâñ©ñ î–ÞÄ‚S×@Ü!>½;ˆ;ħÆ€¸CXzwwN]q‡øôî îŸâaéÝ@Ü!8uÄâÓ»€¸C|j<ˆ;„¥wq‡àÔuwˆOïâñ©ñ î–ÞÄ‚S×@Ü!>½;ˆ;ħÆ€¸CXzwwN]q‡øôî îŸâaéÝ@Ü!8uÄâÓ»€¸C|j<ˆ;„¥wq‡àÔuwˆOïâñ©ñ î–ÞÄ‚S×@Ü!>½;ˆ;ħÆ€¸CXzw(Í« 4U]gû¬óúúzˆ×ý¶$ÍÿnüÔéKr?cjÍö]V×µtÝ—ûa&-Oö^?Ôõ0ïÄÕ6e¶WzÆuµŸ?Š;NÕ»sË=›~d]¯Gùðü¶$Íÿî¸6X€ÄSŒö]V×µ´ï.wû¦l-À¤åɾÂë‡:Î;qMÙ\íË_é×ÕŽ?¤¾„³ÊÝ5õîPq§8zwwN]q‡øwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî ¥ù`¨êݹå«âáö¿‚`ê³ï¾ºìlaÃ+eëýáíí-quõ¥X>þl}ÑóósµíZùæ¶Y«ñ¬úUiŽÞÅëëëõzµ¬y«Uíõû¹þé~÷‹Ì`VqôîPq§Ä ®wq‡àwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5ÄÂÒ»€¸Cpê:ˆ;ħwq‡øÔxwKïâÁ©ë îŸÞÄâSã@Ü!,½;ˆ;§®€¸C|zwwˆOq‡°ôî âñéÝ@Ü!>5žØþøÿÆ›¸6½0k,*‡Úåæmâ•vŒ5q‡ÃÑ»€¸Cpê:ˆ;ħw'¶‡‡ËûûÖ›¸ÖH–]nÞc‚¸ÃRj<ˆ;„¥w€Ò|° JSÕud¨Æt š÷Í261{+û’|{mü«Mß;•Xžz£$v›©{ãÐÓ-ÉJ¿ºîãï²!Ø’êN‰ôîĶä#ûvß¼ŸøéL\›}IXo×ZcKÙúˆ;d wq‡°ôîÐkääš¡€ê¾Ík›ؽWâÚ•f–±Æî±d;Žy̼/ah7n=£Iaâ¨ë›9Tr£ÅÊ¢w€¢˜™U(ó³Î®w"ÉÔQ€z†N÷Gp목sgÒ'ÏJ®°´Íך$µÍ¡Äˆäø-’ØÊ­‡êîQcphúØò;t혅DÜáoYç¢w‡¿WW }ú§¿‡fKq8×î1õî+í6#—¡÷ñír%0˜U½;ˆ;ħwçì2N]IŸëjÆU—{3n#…Ìɪ_fï‘7[­it#7e}¯yƒ_Ý»¬=x4~_UãwHq‡°wçD5€1—ßþYÿÚùzƒmÓÄfÝe ¤i³µÒse9 1hU.Ž9Yté×¼|êãd¼ê2î<½#C÷ 6ÂÕ{P¾í_`wsT¹§µSMÝ šóËvßjé9nóÚó9/ÕéÝ@Ü!>½;7©uôâÄ 'Ù¦ÜFóºÑç½»(âÛÑ»sã+ê¾EX/÷€¸Ã)©ëP­Ê%ªzwªc+³£Þñ‚Ód8Ŷf{JVÔTw ¥ÆsðÏè¡i/CÇã÷±~ƯÞÝ·Úz-8“^lö&!ñq½;ˆ;D§®sd…Ÿ]@Ü!ÇÝ9‹%‡;s¨4εçÈôˆ;ä§Æ€¸CXzw6û©:é'²Ó÷¬ÇDôâ8gÖ¹(ï“=ˆÏ8ÔûyöXï½C“êN‰ôî îŸÞ½~@Ýq‡lôî-… ppj&6Š;œžºâñéÝYnÆD*'Ã"×>¶Å<Ä"Pã9ÔWÅÁ¿Z|óâ'£wq‡àÔu–Kd ôjH}{íÀâÙèÝÙÆ¤É‚€¸Cfj<ˆ;„¥wgŒy¯z¯šzò,ÖÞ‚€¸C|ê:Ë%N9Ô{ÕÐåcXཀ¸ÃJôî îŸOÂŒqcžeq§Pzw²pJq‡ãR× 4¬‚U½;·ÜcU4URwÏlÕœRã8>ÕB©ñ$Ì8ãU–Æ]>œô-⇣wq‡àÔuzUcR‰3^Mºq‡9îN¯fpémâY˜lLæwØ”å03«8õœ¬¢zw†æU]FL­R’!ÞÄ‚«ê:ö)'Æ’ê tw‚UkÀ 6ÞW³<8È`V‰ôî î_Q½;‰ùSw§V™{‘Þòˆ;”ÂqwwΜ,Äâ‹×»“8ÑU¢å³ä9Y'ªö;^°œ™Y…*g~V÷à#gWû·6€0TwŠ£wq‡àâõî$F²5 s7Ä"sÜÄâ3? €rhU.Î^çÌz}}wÇOŸ®·ÿ~ù’¸ûµûøÕ½úžôZ~Í^¤®?>éuÕeøòåõ0°ê®{¼ü\ëm¥»¬µÏW[aââ\sí¢?¾ƒÎµÝçlÊo7Îò2ϸ®vóñãGq‡cÙkNÖõz]õîÝ|kÍé½ð‡o”}×ÃÂÕ²dÕmðÔûî?û¾ÀÛ7esæ-LÆ—P?Ô¹¶ûÔe®W{–—yÆuµã7‹¸ÃáT½;C{çÓÓSý÷ÛÛ[ó’êŸÝÛ×—7ÿq‡“x¢ÆÓŒ,é4S]Òü¯u;’©a›Ñª\œôqwªBÎÓ7Öâ§twNÖÛwcO«´#$Xúœ$€¸Ã±$Ž»3c4ª5Ô%ñ9iâó Õxæ…];™Vå⤻Ó,ÏT ¦{ÉÝʈ;ÂÝãîtóÊÝSß`¥¬Ó=“9„—q·÷ƒY%rÎ,ÄâsÎ,85Ý»¶&â)éãÃé©ë îŸÞb[ch@«/ˆ;œ’ü¤4wJ¤wq‡àÔuàDœ¨ ÄfÒ»óœúüM¶ÊÙÖˆ;üIq‡°ôî î\ uE{ÄÒéÝ@Ü!>½;3äê_Ö-î°®sõîÜ–ªn`Å/_^Ë\3v @Ü)šºâñéÝ8eHq‡©ñì €¸Ãw€Ò|° JSÕud¯Û2߬Òí OŽ;u®]‹m¨î”Hï,WM \ïÁq‡¥ôî î–Þ8‘D™Ç8ÈöVZç&1ˆ;äwÒºŽƒÂ¿òmý…ßÊFÇw(ŽÞÄâ;fçö“´þÿÔ¯U·¸5rî•)ZGû|[éÆˆ;ô8xïΪ³]`ƒ,2¸ÃþÌÉ@Ü!>½;°ðG¹$YØ‘Ä֥ƿŸ ±6(#î°ÇÝ@Ü!8u¦Y3(d ­w çퟟ>]Wª ÔOתœ|ºÖv1º=§-QÕ»sË=‡]ÂêÅÇ,y…ݨñåËëõz=×*zXŸy©îJq‡°ôîT?z4ý-ùÌÆ»ëªÏÙ7â¾O'H´Hœâñ9îEѪ\¨ªÆ³ïxVó'QoorÔ3gí¾Øa~ŒnSóŸý,¯çð# ÍQìî+­®}}Ýn­6'jÕÛzê‡Xz·1ª%î0_='ë½;Õ;¹÷aä›ü¤Ÿ»/¶ÏÐmÖÞÂõ<é‰î~³ÚèkïS?ÊÒ[Äe^³Š£wq‡øŽÐ»“¥HÛûÇ/ÿî»x'-ýÒ=ÂÏßÞeûôézä¶Ó©G²š¯wƒúÇÐ1ÀƬùîmî.ðö/PÜ!85Ê¡w§8»÷îø±²ÝúmüN\íÍËfh÷qzoYÿívžwï›>Zvó÷ûPçç¸ßÐcVOú.³÷Ò™wl­ùá…Ëóöi>Es ¶6P«+¸»½+ñZzw›Ööî3—÷lgï}lû)7t¯÷ôüw¸CŽ0'kj·y³ú¾š”ïob›&6Ö˜×ÒÜmF¿Ô»ƒ÷_x÷üé 6Û˜÷Ç–ïcÄÚœ3kèÓÇ{~ÑêZ­KZ£‰½·ï½ïÐí[w<ؼ”í¾·ZQûwþEʽ[¿ÙÚrwc¥w1ûÛª!1Œ{¶O€âmædP­Ê%ªzwªùY[Úì7[YFOê9ÜÊš»wÇÄ&­ƒ÷÷ _Í.•Œå/~ùBΞî4â©ûoÒš5v÷òó|&ê|9f•‰;IJ×ü¬¡÷a–SFx“/Úãç¼udzÆ<ìÝ[^&L¼éŽ¢LÚú“î2æfž½ÛÚ2nͧW䢷@º³ªw]Ƴ–?Ý¥ghuöyznÑJ³VÙ’åYò1•ðôx‡Á¬âDíÝq‡?éÝ å¼Õæ.ùÝ3T¿ãÐY) ú•¼ï«7¡ÕVâ+î0‰ãî°ó§õ¬¯·5Núm> …½Ä £Æ@9´*g¯sf©¸n±Š½úY+Ưä-ÞüÛ¯å>tìºâƒŽpÎ,2Ët^ÃMxÒKû~û13’zo“˜Vh _õ{²uTÄÞ3qdË¡‡Úxß;ü[ÇÈI f•HïâñéÝ òÝo½‰+‰ívëq‡9îâÁ©ëP­Ê%ÚëœY,u€Óýœn…`ƒâ+Ù~~–Oõuצõ{º]îÉu›u4æ=¿-ÉŸËóþþÃbUÿl]¸æzØ`µ$žbÒ³ï»g<û¾ üGn^¼­3¾„ú¡ŽóN\c=4WûòWzÆuµãOèƒ/¡Á¬wJ½;EÜ)Q¹½;Õ<¬æc{¯ìÄJ¤Æ€¸CX=îÎß2Ü {›‡‡?¥Sÿñ÷‡œ‹´Òb¿ÁÝûÎ^¼ÙOš}QoWývYåÿþs^òh[.êøÕ>tmö`ÉsõÞ ªÝ.ÙåÖØ“Ó7¹•ÿîØ`âã”[שÏñÛ÷ î•ãî î_5žºÙé ÄŠrÜsf-ïƒù¹o´¾t~~;þ=ï³?Hú ÇòOѾóË:Ï8~Ocᣭ½¨3šcOš}s,ÙÉuÇ%e#·²öq‡1ÌÉ@Ü!¾}zwrÍcʸ<¹n–e±W* ü¶ÚZ7ÁdáËL?iïµY&ÇåÚ¯®œ…‹š·T³ÁÊÜò¾ñ“Λ§6é6ˆ;\v©ñüü¾ú †ôŽgeYæ\‹ýóûZ+ö—užzË{Õ÷Mß½÷Ú1[çç÷ívò…;Òÿóû>ŽóŒkoÊ%[9ïN+îÕq{w@Ü!‹RzwÌÆ@Ü)ÙnÇÝY8)Ë ¦ÞrÌͲ,Uú6ë]›¸Áì‡Í~Õ’EʲÇ÷I,ÙVZÔ‡‡Ü7×"Í~3îxûÝòËe•ýö|·µ?©²ì ˆ;\ÌÏ@Ü!°ý{w–ÿ"Iü~úçgí¾ê&Í ?Ø·ñk_c÷¸Œž·p¾Ìf+möĜ߲.óz‡ƒÊ¾ÿêŽGØÄÂÛ¹®³|BÁÈi ¿å[˜ƒL‚˜1/©µN–<é6P+í#'Ç-œ/³Ù3ckþÖùI°|™Ó«ëPûÿì;¦Ç›Žð™`Š–¸C‚sf îŸÞ6uû•ìg¨í5õ¹–,ÆìûžîIwèµïÎ6SFže)×ü¬ &g]V›uœ«.«Í7ɲ¡§Ìû»þ«O™7ÄÈ[¦á—ËF“°¶ß7¶ßåÖ{?^V˜d*îX¥Q×@Ü!¾Ãõît ¹¸sƒ¦ª³÷#§ûÛ¨÷–͛ݽÁeDú·ËœgÉrmzµO_X~NõyK2æWïìU7©:2~¿š±Jç-jëò¡Å¿nn‘\»Í½•“*ªÍ[ž»oêIóŦ®½ñwOœ6q§d‡®ñäÃÎ;ñj›s~í8~Ÿý4X³gîܽ6ס&×ܯÿçËê °Ùi°¶|À…ûFÞåYø¦^¸Þ&í fi‰;´8gâÁéÝaE»L0YõI›þðp蕳ûìÓ‹w8”ý{w6;7ÖÆ7ó8;žyÖeÉ&¹¦ºdyœ»O±ðEm6gjË“g¸ö1Äûðìß7ì6oq‡SSã@Ü!¬õî,/„ä=ãU®_EY{¥Óå}¥ûî<œ—*—¡3”ó%l¹{l|¾ªõžní7¬š¸ÃTG©ël3Ñé²ù‰±6˜ŸµÙtÃÚ`Êké˜/aËÝc¥]eŸ°¶ûü¬I }JÜ¡æœYˆ;ħwq‡°Ô»sÆùYœújÌmžt)}·³LΚ1 eÒ]V=³Õì—e9çÍ Ë>9kÆs­ú™³ð…¬÷†½˜r%î0ºâñ¬w§:¶[âo¿{œŒó³²ÜæaÍßj+ý\uúÉ¡^éȧ^{ÊÌøßý§ÿìs`¸ÃzâÔx¶ŸŸ•å6«ÎžXéÁgO?Yo"Õf'zQ9ÚÝ3Ñ®½ Í>Vz#Îu]¸Ú—쫳ïëtWâkpÎ,Ä‚;e]çÛ q‡)Ô»“¥"ýËèçʲH—ËFCKŽ]¶äÙgLÌxÒå§Žš1ì2irV®HLÌÉòꦎëe?á’ñ¬C}æd¿c–»_?PÜaó³wë|½;¿ÙhÀÐy¯¶yê‘ö%ÀÞ>X¥©ê:Ê:w+´¿\þøŒÎ2mûtó³VÏZc`bÞxÖÛböí7ØE‹úÇ;(ÓÆºi5ÄÂrÜÄ‚S×@Ü!>½;pf™¸Ãlj<ˆ;„¥wq‡àÔu(‚“[UrÄbéÝ@Ü!>5˜@ÄÎ嬽;é± #±Ù¾€¸Ã$ê:ˆ;ħwq‡øÔxwËqwwN]q‡øôîìÆ #vÜ÷@Ü¡4j<ˆ;„¥wq‡àÔuàdŒ‚¸Ã zwwˆï 5žÛOØ©¿b̺o l,ÄÂéÝâAÜa ½;ˆ;Äw¦ÞcU@ Œj‰;¬Aq‡°ôî î\ºŽÂ/%³ÿGZó½Cö6±¸Ãr‡îÝqD5XþNñ&q‡‹ÞÄÓ»pŠpâëQטπ»¸ÃY8gEù`”©ªñÏ‚™š¿ï “û*ѶTwŠ£wò¸}] : îpLzwwˆOïâñºÆcHq‡%ôî îœÞ⨖âŽUP ½;ˆ;ħÆ€¸CXzw`‘§Ú§:~ÌíNCÑwXB]q‡øôî=<\?}ÚþI3?”¢Ž¸CFG¬ñTõÛ?_ ãžyð%wÊ ÄÊ¡wq‡àôî‘·wQºwÈ*BïŽi ì¾r<¯_¾Ø©wø5ÄÂÒ»Á˜só6 Òâ[Š_×9õÈ=C;|i\õ€[伋]"q‡,wq‡øôî îÖ9zwzŒÀ¤7G }GÜaê:ˆ;ħwB)¤fÐ<¥T÷%¯4G¡~¢Þ•<´æo—·®š·xªAâ ©ñÀ™ÌÉ5žuØM“ÞLõ,-ÄfsÜÄ‚S×M9T®Õx–å©·¸M/î°/½;€´ôgDÓKÅ6¦Æ@9>X¥y||¼e‹ÞX³p]óÁï_{õVƒD[¾ðퟑÜTwж®ãÈ-w¶ôµïï¯_¾üyþ£%ÝÍû&­—ùJÍu;ikÖ·Ll»æcMÜa ½;ˆ;ÄwâÉØ9 |wœåu mŸZâsÜ)‰ûâ·W[lq‡¢˜“@iÌÌ*QÕ»SÍÏÚTïošúx\#oŸ¾Á)~6íµñ~SvÆæÔsm†n?i`èÛ´ÌšÁA^õÆÓÄšž3vWq‡rT5žƳº_NCWÝÿ:ÑÌÁíµ> #­Ûî¥ØÛ·9Ë©ûÏ-×szyÒ7˸±ŒˆMg0«8zww;ʰìµã͸ |ZŠ;œÂŽ»£$ àCRÜa%æg î–ÞÂÊõ#¸5ÝÉØ…ìùâ‘®®³ð¤Bø _¸ï Á GÖÚ?í®â]Ι€¸C|;Ôx °Í5fO³7‚¸Clzw8«1åz!†2÷|ÄZÌÉ 4N"Q¢ÝΙ¹´~ìŽÿí;æDlJDvŸOŸ$®÷6ˆ;%ÛíœY°’5>â}mpœÝ»›Ô»“³f0«8zwwNï§×Éù»Ö@!ßöjq‡^Ž»ÃéÕŸï3>è[w1í…síów/DÜ¡¦Æ@9´*§ž“¥w‡SšT‰É8c w8‘Ýæd)º’w/Ï3Î5t8ËþoïÈ`V‰ôî î_¢wç黡k{ÿ dé îMú¸;·½íí»îžW][]^ým}Púî8½;ÅqçÌ@Ü!>5ÊafVq–wgvÀ²ò·÷ñãGkÞš·ÚAu§8ê:ˆ;ħwq‡øÔxwËqwwN]q‡øôî îŸâaéÝ@Ü!8uÄâÓ»@Q&œDâùùyÊ#û6­ôpæU'ËxÖßþö·ßÿ½uáÛÛ[óŸOOOõ%Í¿ïªoÜýƒŒeb›²åzó>]øN¬î•¸ïÝ«ò®‘¥{m®Åè}œñbùb”ó90!î|þüyJ6z)¼5äë7kQ¿™kZwÏάÿ|¹üûïÿ—Ëåßùj;[åpþÓø7ÿô¯ÿ[õ÷?ÿËã?ýǯw3ÇfËÖüú\)ëd‘=ñÜ}Ÿlü’'mˆÝe߇ˆ;—égytª¶K£58—[|¹EÏ‘ë¶Û¦“±®“åÝú-U¾w/l~Ôv±ÙÙò;˜ÄÖénˆî†ëÞx^µû¬¿›àî2Ôwé};÷^Õ}³ä+¶w §WE–÷Qëµ÷®äÞÕØ»-º·Ú—ºk¾úû,‰g‹Þæ÷} ß.½;OßµÞ´õÇ_ývê¾mªKêË»÷"ãÏÊô©ocu­ús¹÷[-±uZW%nÜûàÍo²f(ZÂÖû±÷{—¡u÷ÖmzßéGÞRÝ5¼ü}4~CŒù<¬Ÿ(½õûRkáÓ§º3&iöÖxêaþÞñ‹jRámãOïošî[Tˆ9fE¶ÅÐOÿÙ‹·pÏ»ï-\ 7Doz^Ø sÀêÚÖqgä&¬ÚMªñ—þ>râY¥wç¿^.ÿûûßÿ}ÎÇkë%øŠÝs«Ø"«ùý>üßÿ÷o«¿ÿåM.®oð3²¢0rñºõŒî{Þ'+|²-Ù½ 3» ¾»ðkôŒ=îLÚj<I<Ùë:ýë_ÿòû_.ÍÉ cß„“ƳMš¶QþrÛ$w¶ÊÐHGï°}w«1u£¼þþ?^üí‘xkô6Ì=‰ßôc¾¨f|™u/½À½ÃXÛ‡ìÛFùýÛ[eâ§×ÒO¶‘ï£1¢µ[Ü»Q¦~v›ÎXãyH/kU ¨Ú][í±½ÝOµ——¯·/ÔºìQß±„¿›Áâöi¶M«òÐæ¨·ÝåÇÎñæ§s8Èï¢#ÿäðËgÉȾööÝõwÙÝ/²-Z•«šG9Ÿ‚c+ƒoÊ%u YgG³7D°¬3ÉOKV÷¤üU9Jø{ß·ÁÝmQý¡¢e~Sîx÷Ý—¿ðí˜}íhsü´ÙëTã9È@]€Ò,Ì9¨þ£„¿ö3 q'󷬺Ρ²N½Àj<ˆ;99°òqèÝ@Ü!8uJ3á0ƒS¿&_^ž­ß¯_W9Oêóó¢u«®€¸ÓÿùøøX­ `Ü1‘'6Û€ÒãN}:B²}ˆM«2ÜêΖX€£ÇSx€³3˜ˆ;‸°ÿTd,$kgetIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/view_results_tree.png0000644000175000017500000046054012032647206024640 0ustar ebourgebourg‰PNG  IHDRn“îHÌC9iCCPICC ProfileX…µYTUÍ·Ÿsû—¸t—t÷¤»;Eº»SEPQi’T0ABAJB‘TTD@±xõû¾ÿ«õÖ[ë½YkÎù­={öÄÞ3{ïs`^w DPn©§ÉeïàÈ…À ÀÍ#"TÃÜÜü·egæ†ËS±}Yÿ=ßYh<½"<€Ìaìîáã 4=BÃ#@~é#1‘¡0FõÁ˜.ž Œgö±Ïo¼±Ýa4êµ¥Œ™ÀQ¸¹…û@8Ó¹¢=|`9m0Ä`O¿`hía¬êáëæ sÌ#²{a,èþ/r|þL÷¿eº¹ùü¯åWÁiûE„ºÅý/·ã.AQA„+Ep é¾nàºâé¦m¿Ùàú34ð—Î`ˆÅ+ØÆê v75ûƒU½Ãu-÷…ÌC#5÷1¼>È;4ÒÜúýX¼¯–éþ80¾è¡ó—œR7Ã}Q¸9<ÊÒÆð@÷#¢­t` [´ïkm÷‡gËÓKûðöÓ5øƒ‰~‘ûcÑÁ˜' ÄÈò÷Xy`ˆáð3ˆc ´ÿ<Å€7pƒ[¢á¶^Ã8î÷ 1×>­ÿDÑýÕÏî÷ï%r˜/êï1ÿ¢þ#ÁxÂï¿ènÚögáâ—ôÏÿ*ïWOÉzÉUÉïµ£øQÒ(9”&J¥ŠR\( CÉ¢H( ”JnS„g¹ôk–æ¸/?¨Ù;:/$NÉÖ÷ÏÜÿ^í/n¿ÿrEæ>´Þ¾þ÷ A¤Wlä¾i…„Æ…ûùøFriÀ'×K”Ë ØC\”KZRJúÿÜnÿ?Ëþõ}²üuA ÃÿÐÂwP~ Çþ¡9М Õ—h|ðÎÐäÐåîý›¶4 T°…2À á}–ò@¨`Ì€5pÎðnûÂ6bÀp¤‚t.pT€p 4ƒvpt‡`Œ€ 0 æÀ2X`|ƒ   Zˆâ„ø H"Aªd YB+äCQÐè$”eCPT 5A· .¨…žCóÐ*´ }E :;‚! !4FkÄa„" HFœCä!ÊWmˆ.Äb1‡XCl#’É€äFŠ!IH-¤Òé GC¦!såÈämä#äSär¹‹Â hQ\(1ØNõQ6(Tê*U€ªAµ¡zQOQó¨ ÔO4͆A+¡ Ðöht :ƒ®B·¢ 'ÐËè ÀÀ(`ô1L&SŒiÄÜÇŒb1ÛX,–+‚UÁšaݰ‘ØTl>ö*¶;†]Æ~Á‘ã8qÒ8]œ#.—„ËÁÕá:pc¸7¸oxj<^ o†÷ÄÇá3ñ•øÛøaü2þ ™™ ™5™?Ù ²<²²d3dŸÈÉÉyÈÉ-ÈýÈ“ç‘_'ï#Ÿ'ߥ RShQ8QDQœ£¨¦¸Oñœâ@à'¨ ‘„s„ZBa–ð…’–RœÒ€Ò“2‘²²rŒò=žŠJƒÊ™*ž*‡ª…j˜jOÍO­EíF}Œºúõõ6 -MMMM?Í Kä'ê=‰ÉÄ bq‘IËK«EëA{’¶’öí2†N€Î€ÎŸ.îÝÝ=‘^–Þ–>–¾þý’ŸÁ€!!“¡™a’á+#;££ãÆÆ1ÆÏL¬LêL^LiLLL_™¹˜u˜˜Ï3·3¿dA±³X°Ä°”°<`Yg¥cUfõ`Mcmf}Á†`f³dK`«`dÛfç`×ceÏgïa_ç`àPçðç¸ÈÑÁ±ÊIË©ÊéÇy‘³“ó-=—W WW/×7·>ww÷÷7ž$žFž—¼d¼$^oÞ‹¼Ý¼8˜8r þÀ ><‰Ï—/—ïßg~~;þSüíü+Lñõ3‚A5Á0ÁrÁq!ŒI(@¨XhD!,'ì+\(<,‚‘ñ)E‹*Š‹–‹N‰QˆiˆE‹Õ‹Í‹3ˆ‹'‰·‹¿—8 á(q^â‘ÄOI9É@ÉJÉi)¢”¡T’Ôm©MiaiéBéq‚Œ®L¢ÌM™²"²^²%²ÏähåLäNÉuËýW—o_U8 àªP¤0E¢#™“2H}ŠhEMÅDŻлJòJ‘JÍJ”Å””ë”W ô:XypQ…GÅM¥LeN•KÕUµTuN[ÍM­\mAWÝS½Jý††¿ÆU÷š’šáš­šŸµ”´ŽjÝ×Fjëi§iéult tfuyt}tëu7ôäôôîë£õôÏëO°xÔl*5ì5¢0²2*0Z067¾m‚014¹`2cÊglÚnÌ Ì.˜½403¿c±0·(´xm)eyÄò‘­•‹UÕŽµ¦u¦õ´ M”M·-•­“m­íg;m»l»9{ û£ö,~7±Ž¶ŽUŽÛ‡t]:´ì$ç”ê4yXàpìá~gç@ç{.T.n.-®hW;×:×ïnfnånÛîîEîZ¹kžêž=W½T¼²½Þx«xg{¯ø¨ø\ðYõUóÍñ]÷Óò+ðûè¯ïÙÿs€Y@uÀ^ ]`c.È5èV018 ¸7„#$6d4T$45t.L)ìRØF¸QxUq8âf$F F¥DÍG«FF‰±i‰¥‰ ŽŒŽ;÷&^7þJ*Á#¡û÷‘Gæj-;s?ÖÈ›˜œ¸|\ïxÍ ²'ž$I&e'm´;y;™=ùxòbŠ^J}*ejxêÔ)åS—O£Nû:#s&ÿÌÏ4Ï´Çé’é9éß3<2Ÿ•:›wvïœ÷¹¡LùÌ’,LVpÖäyµó5Ù4ÙñÙ‹L.´]亘vqë’Ë¥þٜ˹d¹Q¹syÆy7óägå/ð-˜(Ô,l,b+:Sô¹Ø³x¬D½¤á2ûåôË_KýJŸ•镵•ó—çT`*¢+^WÚV>ºBºR[ÅR•^õ£:¸z®Æ²¦·V¡¶¶Ž­.³QU¿zÕéêÈ5ík7ÄÊÓ¯ƒëQ×ß6¹6M65w·ZnðÝ(j¥mMkƒÚâÚ6Ú}Ûçn:ܽex«û¶òíÖ;âwªïrß-¼G/³ƒ¬#¹c¯3¾sû~èýõ.Ÿ®Ån—îéûžñ^‹Þ¡Fúê>ìy¤ñ¨³O¥ïn¿Rÿ­Ç¤Çíòmƒrƒ­O䞴ɵ + ßQ¹=zp´cLm¬ë©öÓ‡ã㦣“6“Ϧœ¦æžy>[yøüã‹èߦϠgÒ^R¿Ì™e›-%ôªqN~îÞ¼öüà‚ÕÂô¢ÇâÚRÄÒ÷åäׄ×9o8ßÔ®H¯Ü]Õ]y{èíòZèÚ·õÔw4ïŠÞ ¾¿ñAýÃà†ýÆòÇð{›Ÿ˜?UoÉnuo›oÏîí|ûœö…ùKÍ.i÷ÑW»¯o¾Å|Ç~Ïû!ôãöO£Ÿ3{A{{¡nán¿B$\ÞÞlVÃñ¾œ;Œ@Fù;§øSpð€ß" ‚¢¡YØ×"¹…(^ÔU´:z“5€}Ø2¾“ìùUŠVBåKj 1„¶•î;ƒ.c1Ó‹9k=;†Ã™³…›ÀãÅ{ƒÍo/P.øV˜$rD´SHhI¦HõÈ eµä’åï*l)Š(9*gìUÙQP·ÓHÕlÖšÑAé éè{$^2ª7¾g2d:cöÞ‚ÂRÚÊÆ:Ö¦ÀöŽÝ û¯Žì‡:9ŽtÎr©síq›qÿäIîuÀ[ÑÇÐׯÏÕß? 40>èxðÉS¡§ÃR“#ŽDFDùG»ÆXÆjÅÉÄ3ÅLè=’{4ø˜n"÷qp|ñDRóÉÒäó))©q§"NŸ H I¿ñöœRæé¬±l¦ ó/åbóó½ ÎÞ.š-A^(5-‹./ªèª\¬ÂU‹Ô˜Ö†Öe×7_º¶Þˆ¿ÎߤÞ|¨%êFfkmÛÃö…›{·YîÈÝ5¹çÖÙ™r?§ëJwCÏíއƾ|´Ü÷®ùñ³ƒÍO †Ž ;(Ò~ëyš?<¡>Iœ\šjxñ\öùÖ‹ÆiïÖ™á—'f¥g—^åÌÍ#çï,D/*,¥'˹¯]ß¾ù°Ò¼öVüíÛµòu‡w„wïC?ð~˜Ù¸üÑoSéñÓÖÖÂöôÎÂçí]º¯jß"¾_ÿ±¹Ç··ëŸœ„h ;¨ÁˆFÌ!‘]pÄ?ŒöÀ 0 Xoœn?DÖJ^CQJ¨ l¡zB½Ed¦Õ§‹£obXedvg)g}ÁÎÈaÍyŠë÷G^¾f| ü•‚ï„©E¤D­ÄBÅÏJ\“쓚“þ"K%Ç#¯¤`BòPŒT:©|á`¹JƒêMµNõš=°_¹«Óª{U¯\¿È Â°É¨Óø±É¤é¼Ùšù–%°"·&Ú°ØòØ Ø‹;È8’©:éÖwÖsQw%¹Iº xpz2x¼QÞ»>|—üžùt¶Õ—„d†Æ†é†ÂÇ#J"£HÑØè1±©q‡ãåhÖ<>ZwìL¢ïq›vIn'ƒ’£SSOºpºäLuÚõô»ÎŽž{™¹’õ)\ ¾È}I:G#×*Ï;?º ¥0§¨ªøFIçåÁÒɲùòÕŠ•»UdÕB5Ƶauõ]Wß6P7ª\÷oÊm~Øò¹U°Í©=óf×­­;\wµîyv$wÝoìêêèêo§ŽGM}åý™|mžh‰Ó ïŽ<mËz0®=Á>ñeòéTó³ìç‘/§µf$^²Î’Í~}µ>77?±0°ø`©k¹ãuÇ›»+÷V;Þv®õ¬?y·ü³!û1|óîÃöÉ_R¾2}kýa÷óç/ýÛBt|úe)ˆ7H]äU;êš}CÄTbU±³¸T< ¿CÖF~œÂŠ FI Ü¤Z ¦é!vÑ>¡{IÿÅÄÄ,È¢ÎjÉæÅÃqŠóW%w O'oÿ§|¯øW6¿œ(NtOì£ø+‰ÉûRÒÅ2gd£äœåuDHT¤Š£J Êgzª¨©2«n¨õ«Wh$jºh©isè t–téÕéŸ57´1R6f7& ¦ÝfæÉÞ–¦VÊÖl(l>ØÙÕÙ';Ø; ;~?4èTxØÏYÉ…Üå¥k“[š»—‡°Ç²g±—ƒ7‹÷+Ÿ:ß8?¾(àeà üàÈÓPÐaáYV‘Œ‘/¢Š¢ÇpÅ,ÄVÄyÄóÅ¿N¨:âsTàèʱºÄˆã¦'$“h’¶O¾HîH)‡í$ð´ùé4º´ôÉŒgÏŸ É´È’;Ï‘Mžýõ»‹ —¦rÆsÇó&òŸÌ®mï]Æ—²•©•WWUAÕ²5>µ…uýõ›×äͯ{6E6Ÿh9w£¢µ£m²}ý¸M¼ÃsWöžA‡{ç‰ûU]ã=d½zÎ>œì#ï—{ì21x÷ÉÆ°ÐˆÛhéØì8Ç„ÓdÑÔ‹çL/ì§Ëfvf^Ì;-â–ž½_ůE¾'n¼ù´ø™ýkÈWûúÿými¿`ä¸BœƒšÖPç™ÆPÛ`NÀZ ¢º‚b@ƒû À¹¦40€³üxpÎûÀø1B2†®@Ýд‡àD¨"\Çá¬îbI‰”E:!“‘×S($J å‚:‡êDm¢ùÑŽèóè~ £Š‰Ç´cv° ØXììOœî,n σƒ=™+Ù r<¹+ùM ZŠŠ!‚!›°KéN9D¥BÕ@ÍCGC¤9Gĉ۴!´oé|è^ÓûÒ¯1„2l3c"cÊc`¾ÅbʲÄz”‰í»%ûG!§ç6W÷!jž~ÞStùÈøžò „j ± }~&rO´J¬L¼Q¢[rLjIú“,$G!ϨÀAâƒ=›Œ²ÂÁƒ*šªZj‚jëê75R4m´µ~j¿Ð¹©›§wLßÏÀÖÐÀHÃXÕ„dªb¦a®oaaioånb“h{Á®ÚþžÃ”ã¦õaIgk—£®ÕnãOY¯ï2Ÿi?&›€ìÀ±`ڻВ°•ÅȬ¨ÕýØêxÊ„£GÞsLì?¡™Ô‘¬˜2v*æŒPÚ«ŒòsaY&Ùryr¸òX x‹¤J´KƒË›® «}j—¯7"šJo¨´ ßò¸ó®Ãú~sǃÌ>ŠÇùOT†ß]ŸHy4í4+=·°µüqÅòmîz×û§C›··rw|¿Hìn|»öÃç×ýT€(kÒ@è¯`í3C$ÈŠ‚.B-Ð8´`D(Á¹}¢1gñHd$²9ŒÜCI™y.jcŽô-ô.F sÓ…Åa-°Øeœ,.7‰ÆŸÀ?#“&;K¶FnLÞg¿q‹3B'¥4e U 5;u) ?M#QšØL+K{‹N®ŸÞ†~‘!‚ɘË$ÁÔÇìÁ‚€}•ë[¶óìŠì¯9ò8-¸(¸s§ó˜ðÒòN¨â‹â×`ø(øX¨Bø¤ˆ‡¨IÜX"D2[ªIzRæ‹“¼¢‚)Q±R©_ù½ £ª¦Úau7 Mo­ íXÝ,½ý&ƒG†ÓF›&SA3s/‹Ó–ÕVýÖk¶ÔvJö®goZ=ÌêlîrÚõ‘;ÆÃÈ3ËkÚGÔ7Áo ¨Üò:Œ;Ü1¢0r*š&Æ<ö\Ü“Š#&GÏ{rœxÂ>©ääZŠvjÕiü™Ð´å ÷³ ™ÁçqÙUír¨r‡ós ýŠ5/3—~,­¼]uµæz]çÕ‰†&úÙVûö˜[—î\»×Ý9Üõªç݃o}èÇÔƒ¬C|#Âcâã2“²ÏT_hÎÌZÎ9.X/)¼&¾™]½´¦¹>ÿ>òÃöLjͥ-óí¶Ïô_Bwû¿q}þ1ðKÿÀøü›‚ p4‚1° ±@j°OÉ€n@3,BÖü)D [P"U‘¡ÈrøÄP:¨DÔÔ.š„ŽC߃O»!æf+ŠMÀâ8q1¸q¼¾¿GæKö”\“¼…BŽ?Ø…”\”W¨d¨º©m¨×hR‰<Äû´Î´?éÊèµà³}Qq©˜ÙŒÃÒ ŸkUv{G:§1×ì“2yC8òð«IBòŠ"*¢ªb*âÎù’#ÒHqYk¹ùK ͤ1ÅMeÖƒú*ñªmê”Aš#ÚJ:uzÌúÙ†ÔF™& ¦—ÍÅ-º¬ô¬l)í"í'ª9Lëœä²ãæþÎ3Ôk×'ÍÅ¿:P:èFˆBh[¸LÄ(ÑèÒX†¸´øïGBŽÎ&šïK:x²2y+UûTÎéÕ4ÅôŒŒ…s¤Ì̬Ù6z/Éå´æ‘òºí•””J–uTXW¾¯J¯‘¨}^Ÿ|M´aüzL3MKM«\Û›ª·nݽ[Ö!Ü9ÐØCÙÛøÐäÑJâó`óöðôhØSüxͤÆÔÂó“Ó3=³¶¯æç=¦–T—‹_¯¬¬:¾MXËZ/~—÷>ýCĆÍG‰Môæè§¢-§m¶íg;?~þüåÊ®Åî÷¯ÕßL¾}‚³å³?û÷õá-óû,D¡ zvoï?Øl~œßÛûV¾·÷£¾$f¸øûÅ/_C @Ñþ? Ðá[ö¿‘þD~Šêw—/Ì pHYs  šœ IDATxœìÝw\SçúðçdAEÙ(QAAPëh[µEk«u#‚Z1uÛj-½Ž*`·ÕjEA\½­¶\°J ‚ PP)Ù3;¿?N¹¹$Ä$‚8žïÇ?’7ïxÞæ<¼gß„B!„tGéìB!„ЛŠ«ý¦wv!„Bè̓«’!„BHO˜J"„B!=a*‰B!„ô„©$B!„Ò¦’!„BHO˜J"„B!=a*‰B!„ô„©$B!„Ò¦’!„BHO˜J"„B!=a*‰B!„ô„©$B!„Ò­]zÉÌÌ,,,är¹îîîíÒáëãÏ?ÿ¼qãFÏž=:;„B¡×Ë‹SÉK—.Ÿ>}šFûo}¹\>kÖ,CCãGþý÷ßçÏŸwuuí¸TòàÁƒçÏŸW¼år¹ýúõóóó³µµí I………÷îÝ‹Å/ÙÏ¢E‹òóóÛúÔÒÒ2""â%‡@!„zÅ^œJŽ;öÒ¥KõõõwïÞ2dˆ¢<##ãùóçsæÌ''§‰'ÚØØt`¤`jjêää”™™Y]]}óæÍÜÜÜŸþ™Á`tô¸ ¹¹¹‰‰‰`Ñ¢E:5ŸöðáÃèèhwww‚ ^8è|PXXøÇüý÷ßÿý·»»ûš5kÚké®Ý;766¦PþIñ5ÌK.—·õ‘ÞC#„BéDÛTÒÊʪoß¾?¾råŠ …BQ{tg:®[·Nù6“, úõëg``PUUõ믿J¥R‡“pïÞ½äääþýûjÃÐÐÐÎÎnÙ²eK–,IKKû÷¿ÿ=uêÔjhh¸|ùò‰'FEE%&&Þ½{÷—_~QEZ¦Çý#_ØùËÐ0/Å™©j§ŒB!ô èðàDò÷“'O®_¿îêêÚÖ›µµ5‡Ã€k×®q•wd0®®®púôi33³^½z‘‡¼ããã«««5ÝVppp˜hР˗/[[[kÿ¼##£… îܹ3333**jΜ9555½uëVBBXYY}òÉ'óæÍS3räÈÄÄÄìììqãÆ=zíÚµ@ž‚ÙÖ¸/^¼~ýzvvöرc5tÞ.4ÌKóvF!„êhÄ7Á‡VûMï Þêëë»uëö*ï›ÝÖ  ÍÍÍÝ»wWmR__ohh¨Ó¡á²²2333E · ³S¶3B!„«’zàp8äù|¯R[ƒj†<R'­n„ô fªaˆNÙÎ!„B:\vƒB!„2L%B!„ž0•D!„BzÂT!„Bé SI„B!¤'L%B!„ž0•D!„Bzzñ}%ccc_A!„Bè0sæÌššòµV·(Ÿ9sfGƃB!„Þ §NR~«íÓn¹gg =r¶s@!„zÇ©>m»cœØ¾¶®ñïìB!„ÞQ555¦¦¦­ ñ²„B!ôbjc*‰B!„ô„©d‡‹ˆˆÈÍÍíì(B!„ÚŸçJNŸ>].—9r„ËåÀ­[·6mÚtüøq++« ¯µ-[¶H$’   EIDDD~~þ¦M›¦M›ÆçóGŒñ2ýOš4I(ŠÅb{{ûÉ“'úé§/1Àï¿ÿÞ£G-ëÏŸ?¿ºº***Øl6›Í€Y³f}þùç/ B!„P;ÒmU²®®nïÞ½Š6>üðÃøøx@ (‰8q";vÌËËëå‡X»vm||ü¼yóBBBÊÊÊ^¾C…E‹is“Î_~ùåÂ… .\èÙ³ç’%KÈטG"„Bè5¤[*É`0®]»–Ъ<,,ÌßßêÔ©ßÿ}^^YÈç󃃃cbbfÏž½xñâüüü?ÿüsÖ¬Y«V­R¤h«V­š2eJ@@@FF$$$øúú&%%© `РA\.÷ï¿ÿ&ßæææVVVº»»ÀÆSRR ¨¨ÈÏÏoÔ¨Qk×®mnn€•+W&''€H$úì³Ï®_¿2™lþüù---j6 …âââ"“ÉÈÕ>àúõëóæÍ=zôæÍ›É__ßÇ“¯—.]zÿþ}EŸ‡JOO ›:uªT*Um«åË—ÿõ×_K—.ݰaC[Q©-D!„꺥’ÞÞÞfff»wïVäX$*•:wîÜ 6$''GGG“…%%%III111ÎÎÎ999AAAqqqŽŽŽiiid2'Ö­[WWW·a ¶nÝ*“Éššš ÛÊ‚øàƒbbbÈ·±±±ÞÞÞ Š‹‹É¼pÇŽ£G¾páBKKK||<XZZ&&&À½{÷ oÞ¼ >d0L&Su”ÂÂÂýû÷óx¼Þ½{“%ª}Êåò]»v^ºtiáÂ…Š†B¡|]\\¬¼z:gÎ{{{??¿#GŽP(Õ¶Ú(..Þ»wï§Ÿ~ºjÕ*µQµUˆB!ÔtK%ŒŒ–-[VSS³ÿ~åòÀÀÀaÆ988ØÚÚ¦¦¦*Ê™LfHHȪU«( •J ]¾|9@RRRUUÕ¨Q£œœœ<==+**òóó½½½ãââFÕV ~øaRRRee%ÄÆÆN˜0AùÓæææÔÔTÚÚÚþýûß»w<==ïܹ·nÝš6mYxãÆ µ'VùøødeeýüóÏú$‚ ˆëׯK¥RmÎe±X4ÍÈÈÈÌÌL×¶ÊæÍ›7fÌ333µQ©-D!„ê :ߢ|øðá^^^—/_f0d‰L&;zôè­[·ÊÊÊd2™±±±¢²……¹ìG¡Plmm AŠOËËË 22’|ƒÁ¨««#Ó, ØÛÛ÷íÛ766ÖÕÕú÷ï¯üiJJŠD"Q5¶µµ77·ÜÜÜšššÛ·oúè£ÿûß%%%ä7ʸ\®D"Ù¹s'Ù9‰Íf÷ë×ïÂ… l6ÛÌÌlРAüñ‡T*µ³³SíœÉdzyyMœ81((è—_~¡P(jû''§3gΜ÷•477÷õõU¼%s&CCÛ7o777+ÎÔÌÝÝÝØØ866öÊ•+eee‰‰‰EEE‰‰‰‹/&G·ÅÛÛ;//ïÂ… ª©¤£££½½ýñãÇÉçtzzzþòË/ï¿ÿ>9î±cÇ4ß6諯¾*--=qâD[}ŠÅ✜*•úᇀH$kk묬¬æææ-[¶´:,--Ék’Ô¶Õ•Ú¨Úš>B!„PGÐóåS¦Lqtt$_1‚ÇãíÙ³'::ÚËËK „……iÓ ‡Ã âr¹Û·oŸ3gNxxøóçÏsrr54är¹C‡µ±±Q½Y#•JݱcÇýû÷'Nœ8uêÔ7’å ŠT²¡¡As*ill¼bÅŠC‡ååå©íS ~üñÇ>ûì³L™2ÅÕÕµ[·n­úüä“O~ûí·9sæ¨m«+µQµ5}„B¡Ž@||hµßt 5bccgΜYSS£¹£úúzò,ÉÚÚZ6›M§Óµ¢¡¡ ### uBœÝºF‡ã൵µL&SÇ:õYWWÇápÈKÈI€J¥¶5}‰DÒÔÔdbb¢¶m{EÕV!B!„Þ6„ü´uÿ©S§”3C}ΕTKqµ ù,è·,§™aèÑ'™*344ÔÐFS4QmÛ^QµUˆB!Ô¾ðÜ!„BHOí¶*ù ÔÔÔ„9ÛÙQ „B¡¼1©äj¿é¦¦¦:.‰B!„:Ô“JÀ /ýA!„B¯ž+‰B!„ô„©$B!„Ò¦’!„BHO˜J"„B!=½I—Ý´;SSÓÎ!„Bè †«’!„BHO:§’r¹¼²²òÙ³g---B!„zSèp€[$EGGŸ;w®¥¥…B¡Èd2“sçÎu\pz“H$4Ú;}ì!„BèÐ!ßÚ³gOllì”)SæÌ™Ãáp rrr:.2½ñùüòòòèèèÎ!„Bè-§m*YTTgoo¿lÙ2‚ ÀÁÁÁÁÁAñéþýû322ØlöÈ‘#,X@§Ó€Ïç[[[»¸¸DEE­_¿>===**ÊÂÂbÍš5ZÖ)((ؽ{÷Ó§O---ù|~¿~ýȆ\.wüøñGŽa³Ù|>¿OŸ>§OŸ~úô©L&óõõ]µj•³³sFFFtttZZ›Í^°`Á¸qãŽ=0qâĎئ!„BïmÏ•ÌËË“Ëåƒ&óHe"‘hݺuOž¿Cäp8AAA»víÚ¾};˜šš~ýõ×666mÕŸû¬¸¸X±)^q$:‰ŽŽ–Ë媷©o5®]»vÄèoèFC!„Þú¯J®Zµê“O>‘Éd••5~üøcÇŽ‘íØ±#44TµÉ–-[ÂÃÃo%‰Þ£¿¼‹/^ºtIï`t­Ÿ˜˜øí·ßadd$ •7E«H´ôõ×__¿~]µ|úôéãÇ?~ü'Ÿ|²iÓ¦ÌÌL]{V£ZÞj:/3„í¾ÑB!Ô¾ô_•tqqIKKËËËãñx>€'Ož¥¤¤,\¸PµÉ(”’W>Ÿ_^^­wíH×`ô>!!˜L&üï¦Ðƒ@ HOO߸q£ÚOy<Þš5kµ´´äóùªÁ[uE£ÑTëgddDGG§¥¥±Ùì Œ7üüüúôé³víZøòË/»uëöÝwß)÷¬ŒÚ~4Ô/**Ú¿FF›Í9rä‚ ètºr“cǎݼy“ àý÷ß_¸páæÍ›ÉMÑjš/ܤôîÝ›Íf«ý”N§óx¼=zœþøc¸ÿ¾\.oÕ¿Úé(~:š7“É ¡R©W¯^¥R©¡¡¡ÍÍÍ7nÜ(((Ðfí7Z«ßX„Bµ ûÿ9·M‡Ü­Z€³³sfff\\Çsttd0ééé)))K—.UÔéÒ¥K«1büï—¿™™Ç›?~Ÿ>}Èå½€N^~—!‹£££Ïœ9#‰d2‡Ã™;wî”)S(MiA»ìªØ†:ïF[íCçÎ;gÎ Ò¸W@‰œ8qââÅ‹uuu2™¬ÿþ?þøcGöЉuüÞ¡Px"âø©SQÍÍÍ E&“q¹ÜÿÄ^Òcôø+ñ6|ýÉ'>l#NSsËúõë»tézâäë~£=W%MMM¿4FFFpàÀÍÿiBèUÒ5•Ke††QgÎß»{gË÷ßóþ€ ÞõðAzzúÆ%ä—CCCvvöáÇ÷ìÙCf“¸8xðà… f̘ñÅ_H$’ƒîÛ·O(~þùç=´‘!]VÊûÐ×d=O׉jÔ¨ªª*¡P¸cÇE«ôîÝ›Íf+J_þ}ûö%"<<<""bË–-ð¿{ŒŒŒèèè´´46›½`Á‚qãÆÁÿó{yy,•J/^¬hRZZúǰX¬ ¹¬¿¿ÿ_ýuâĉ)S¦0™Ì¶ö8 j‡pqq9zôh@@€§§§† Û(èñãP݇’A:ôøñã›7oÞ½{·ò[µ?¾V­„B¡êf×’®)++“Éd555r¹ÜÂÂÂâÿ±ýüüúôé³víZøòË/»uëöÝwß@iiéÒÓÓ ‚ðòòZµj•j‰Ú]¹Úß%µ…Ú7×@×¼­¨°0æÏ?ì{ôü’¿’ €]O»žd?E……ûvïJôˆmÄ5zì?ƒË—˜p¹&~xøÐ~6Ûˆ¿rµ£Sߣ‡ݸqü.xø¿€%›6n0ár7oÛOgü²£¼¬lôØq••Ï…AÈ®Ýà;wVG§õ¾€¥þ »uï´y›bˆ÷‡ ÿåè‘­ÛCh4ZØ¡O³2--­¾ZµÆÙ¥¿NÓÔLÏ¿ ¥RiqqqqqqYYYRRR¢x­ Ö­[WWW·a ¶nÝ*“ÉÈÊiiiÇ4hPVVÖÙ³ÿœðK¥RçλaÆäääèèhEÏIII111ÎÎÎ999AAAqqqŽŽŽiiiׯ_×0 Bè]&’Ètú'–È%Rɾ=a{wïZóÍw"‰L(‘æd?•ɉ°ý?75 Ž;²-twØþŸ¯Æ_)*.éÞÝêî½»-Bqʃ{·oÝId7®_sèãTZ^qãúÕ]ûŽìÜó“H"klnùýß¿î>xÔkØÈßûUר4ÿÓvSˆDëÖ­{òäÉ’%K¼¼¼Îž=«8 ½}ûö²²2–””TRR¢Ü0))IC"5pà@ÈÏÏ'ß*ïöíÛ÷ìÙ³mÛ¶XYY)*¤¦¦ÆÄÄ <¸²²2<<\µOÕ½€““Saaáßÿ ¿ÿþ{«rrrd2Ù€k¢&&&<O(>{ö ÚÞã(¨¢©©©°°°¹¹Yó¶mH4ÿSÛJ(ÆÅÅÅÅÅݸqCyãDFFº¹¹±Ùlå·t:½­_«Vj7»–tÈÀ­­­oß¾øôéSEyaaaEE…"¼çÏŸ€H$Z»víÝ»w?øàƒÀÀ@GGGÕ’¶våj'¥Z¨Ss ĹNÿžfgËåòƒÝ%ÒÖm›škV,œ‘±øKþ¯ag¢£ìÝC~TTT˜–’rìçúe>y|úÔ)±Dî5l¤•• Ì[ðþˆÑdµÒ’R²É[þUVZêð%A¡&ݺY\\L–>+(/+#_•—•+†H}ðàÄñ_»{A]³’_W[ûõÆïˆ-A›„"©®3Õ°Ñô\•¬©©™?>tíÚUÃ9IIIUUU“&MrrròôôŒŠŠÊÏÏwpp‚ vìØaff–••EÖ $;·µµMMMUôÃd2CBB¨TêÕ«W©Tjhhhssó7 4‚zgéz€[$‘Q ¯OßÂgÏ._Šç·T$‘±ØìI>ŸIåðàÁ}»&fæà:Èífb‚ó€A)÷î˜v1÷>êvÂuHòøqºï>P(”àmß/\Â766¹wïžD*ùå矊 ŸéU»HJJª¨¨˜4iÒ„ ¼½½ãããcbb–.]ZQQQTT4a„>ø€¬&—ÿÏ#99ù‡~h«[¦šlÉåòªªªúúúâââ±cÇ*õf2™ÁÁÁ†††B¡0>>¾  ÀÞÞ^¹­ê^ÀËËËÀÀàêÕ«óæÍû믿,,, ¤Ü¤ººZõcgg—­xœ¦Ú=Ž‚Ú!ärùøñã_x’C“PŸUɦ¦¦ÈÈH°°°>|8YH£ÑÂÃÃMMM[½½qã†Ú¹aÕ4lv­BÒq"4mÏž=[¶l¹ÿ>ŸÏ_¹r¥†¿äää²²²1cÆøùù‘% ­J®]»¦º+ïÙ³§ê¤ÔÎTm& ¶¹fº®JVVVa Úðæ­ÄŠŠò&}}Ý=½ÎDEäääôpàé4S ô\•455ˆˆˆˆˆPûg¥Byy9DFF~ñÅçÎc0uuuäGæææfffÀd2É//™LväÈ‘… Ξ=»  @ùÍ‚Éd2 …bkkË`0”¸h!ôÎKeºý“É á9lôŠo¾ÿ+6/?O,•ä§MMäÞB,•Q錦æf'—ÓÜ»›<ÀÍÓ®§ÃÕø¿¬mí¥rÊaÛ®CLÖW‹ç×ÖÕ‹DbcÓîC†?Ço©ÎQiü§å¦ Ïcãñx@„ƒƒƒX,®ªªJII€¶þðÎËË£P(­R4eµµµ‰Du¥‡ >Ÿodd˜­øÈØØØÐÐÈCÉyyyÊ Õî ½¼¼ŠŠŠ233/^¼èããÓj8òÐê“'O” ?~¬øÔíq”©‚  …òÂTR¿•c333r¬(ìÒ¥‹"T~ÛÖ¯U5 ›]zL„Ãálß¾}éÒ¥r¹<$$D‘¸«"§àì쬡Dí®\í¤Ôjß\3]ÿv1ï÷ï&«~TR\ v=yb©L"“Û÷äIÄâòŠ ±TrèÚµÇÄT,•2e29ÙDrå@ ±TöàÁ=°íáðO59Èå øÉåŠ×ÿ-—ƒ™YW#c®X*++-€èÈãógNý÷Ùh:QU]ÝŽß6z¦’T*ÕÒÒÒÒÒ²[·nª™››€ÏŸÿ¯Õ_“Ê®^½zúôé &\¸pÁÉÉIû`t!ôŽHe:ý“Jed«ššZ¡ E.Éÿ—H¤2gW·Ü§™¡P$–dúøÓÈß.‘ÿú¹Öu¦6ZÇÞ¢ÜÝÝÝØØ866–Çã‘g:ÚÛÛ·:×X¡¥¥ oÞ¼Y\\ÜÒÒ" Úw„Ð;B*Óôݧ¶¾H(\¹x.…Bõž4µ›¥H$RôÃ0dNüøÓ­WáØÏÕÒ¶‡T&ï×PyY TGç'Þï2Ð]*“?ËÏߺÙÂÊÆÄÔ´gï¾ALš6såâ¹=z,_$•JvnÙ¸5ì°µ­]«v=Úç̱X|ïÞ=ò5‹Å"O¤KLLôöö.(((//:t(ƒÁptt422Š‹‹£P(‰Dy.))Iõ h²ç–––‡þöÛofff3gÎlUG \»vmàÀÓ¦M»pá‚ò=öJKKãâ⬬¬îÞ½kccCîþÚÚ ¸»»s8œ'Ož|þùçäU ÊLMM§M›vêÔ©;wúùù ‚={öÀüùóÉkS´¡:Dbbâ‰'.\øÞ{ïih¨ßÕµÊ? ###GGG •Ûúñµª¦a³k’ŽIOO/((4hD"ÉÈÈ ÂÖÖlmmsssãââbbb¤Ri«)ôïßßÍÍ­¤¤DµDí®¼k×®ª“R;Sí›k¦ý_h$cÓ.'Mýó·3;þµá‹ùÝ-­s²?J½7Ûw©ó7‹tóú°Ñ㋞<¯(só|Ÿ Ð$ÿ,Ê•ÇR¶Š¬Öƒ×‡Í6ºzù?@O33$R YÍÊÆ® /çÊ¥˜ø¸?¥R‰þÛ­b—îFã+qÚÚ;ôéëR—mc×êÝÒ¤ŽM%9NPPЮ]»¶oߦ¦¦_ýu[IÞˆ#.^¼HÞWÂËË+&&&,,lݺuí; Bè¡k*iÈ2:zî¿·‚“ÊäT}ïñ_ýŒòžb³Ù.\ÈÊÊ222 hÕ°­½N6lØ¥K—>þøcµó?¾¡¡á©S§®\¹ÆÆÆ+W®$OÕ’ê999­VjUéwò«ò¨oß¾»wïÖPÙÔÔTí¯ ›]ºN¤°°p×®]@Ç[¾|y=ÀÇÇçСCû÷ï $/{RLáÇ —]»v©–¨îÊMLLT'¥v¦j3µÍ5Óãÿàô9 YFFÏŸÚºq0™,»ž<™ŒŒ¹ë¾;²7t] A®ƒ=æ/æ+÷ÿÏkù_ËÕÅ •Ɉy‹ùÑǺŸ|ëÓY "¤Ódµñùœúå`ÄO{ç,/.,9¨aÈ2úêëÝÿã¾·€1×ôË•Ì-´]³!â›àCÚ< )¹ ÅÞ©÷0 A¨~㨪¯¯'o²U[[Ëf³µÿ›Ró(¡GÎn]ã¯}W¡7ņŸ¶®ñoužV葳Ó?ý´³BzeΞ;§Ó³ìjkkY,–ò‚VYY™¹¹9•J}øðáÊ•+‡¾iÓ&¸víZ\\ܶmÛôŽM$ …B‡£(™>}:yóšš“¶®P»X³f±±ñ·ß~«aD™LVRRbhh¨åÓnZÑfˆVBœ8éÍubÿø­½ž7¨úãS¥ºÙµ¡ßDD"QEE›ÍV>ÅF£ÑÔ¬UÕÔÔ2™L %ª»rµ“jk¦Z6W+ôÈÙ™ŸöÂjjÉåòªçår¹¼k7‹V§ØÖ×Õ0™lºÆÜ UV”™u1§P©Y·m\ñž×ˆ/×l"? 4:J}ñâ`ScA,ö‹“1U§NŸ!TÂWô ní­7kår¹7 Bè­×^+|oÕïÕ   ’’33³ââbkkkŲMUU•··÷ËŒÅ`0ÚJzZe­¨îbccSRRÂÂÂ4H¡Pô>¥åjþñ›~#êA›Ý¢†Í®™a0j78ye•Zª?zÕÕ]¹ÚIµ5S-›·E×Üʸ]ºÁ?ß<ÿóåÃ22yÉž |ûwÏËJLLÍÊK‹»YX}sTÇ‹ER‰¸«…õà÷ÇyŽú #¦Ôzá©“ð¶¤>¯‰·rc’ydRnCg‚BïýSÉ“q÷®&7À(Îì nZ¶:w·›£H"—ˆe"¡¸É¡n}øùíüiºŽ¾ø›PòÅž å£>P¤}^c&©-'Mþ"ÀÅýýÜ'iÇ~Ü4`Ȩn–¶­ºüE€‹ÛÐŒ·£…8ººsÍÌu ìeþÚcäÄž#_å ¯Ík“oeêÓYÞʉy$Bu =SIE W“îi“Mæ—TK8¥@‰e¢A}ccÕlו÷ Ó®&eŒòì§_$º"ÂŽçD¥ÑË óTSI ([G¹\&hn3s¨~^vîhXyQ>¯ßÀi ø†L²ð쑟—9¹¾'´¸zŒèÿÞ08ôÃÚI_ø[Û÷€£;¿=ùóž}\Ôöð8%ù꟧«ÊKú :u~à•ߣŠò²ªÊK®\8õÕæ} õÕl×b=R¿³:;„ú‡ž©$™G’ç$ùm¾z5¹aö„·ŠMJ³¯E$‰dMMÕÏËK hLcøîðy ©db‘|]Z˜K„~1“ä2Yòµ8¹­ƒ£Ú U¥Wÿ8ÝÍÚΦYr!ò ó ¯9Ë6ž>š~ÿÖà¡càÂÉ–vóWd?>sxgo—ÁŠæ‘ˆ|]SYNF®Úƒ\.ÿÏ™Ÿ?™»Ì¾WßúÚ*>Á'ãÁmQ8öz§òHx¹õÈ'N\¼x±®®N&“õïßÿÇìˆ/^¼hffö𤒭‚‘H$4š¶ÿ‘5oÌéÓ§×ÖÖ›Ívuu5k–££úÿ&M§I½0\ççÓX_ L»W¿LcßË©}}å/ÿ!‡¤’R©„JŽ!„^‘vûºQ½wO«ÙÜN+`X5 ›er@ØP[Wî?<n¤_dõºqaüÜ)CÔö\Uñßžj«M»èäõØóœ:, }æ.3íÚ]µÂ¹£a±ÈÒ¶gÀúd‰HÐò,ûñÄOç75ÖÛ:8æe>d$ C&•J3d²ŒŒ¹zOðÍÕÖ¹’šSŸ¢¢¢“'ON˜0!00°ªªª´´´ƒÃ|íðùüòòòèèh-ë¿p=’Çã­Y³æÁƒ‡ÁÁÁ/£ÎtšT¹ 6ë‘6=zÍYº.óáý_O …Ë¿ mH_G¡—UW–o;ø6\›z#è™JŽòà\MnP\î7ʃóÂ; þ•r¯‡[EhÔÛtPlþɪò禣̟ז$eÆšY±þ}íd[©ä{#&´ºìF¿˜€×w€ó`¯îVv C¦Ú Sf-6æšÜ»µ®º²›•äggH¥’_ÙCVèÒÍže?¡ÓéZžI©¶øÜÍéáï&L¨XÔ|—i·BYY™L&«©©‘ËådyXXXFFFee倿ÎÛ³gOàóùÖÖÖ...QQQFFFëׯOOOŠŠ²°°X³f Ù–Ïçs¹\//¯“'O±dÉ’¡C‡¶´  `÷îÝOŸ>µ´´äóùýúõS4:tèñãÇ7oÞÌãñõ[}D£ÑT›gddDGG§¥¥±Ùì Œ7üüüúôé³víZøòË/»uëöÝwß)Grúôé§OŸÊd2__ßU«V9;;ë¾Õ[£Óé<¯G'Ož|þü¹†)geeýøãååå#Gެ««knnÞ±c‡†°Õv¢:ñŽ˜Ðèt›½¬ìzþç|DmUYXZ”}$¬07«kw«‹V8ôq€¼¬ô¸ß¢²3R™,öä~#Æ@èÆec®ë{ïÇœ;Nħ󗹺¿¥EgíÉËJg²Øƒ‡Žžü¹/ÎPÔ÷5á÷ÈŸ˜,öç~+ìyŽmu®6 eÏr³"†T?/ì5Z"‘Piÿµ8õÓ¹YéµÕÏûôøÑgó­ìþúýTan–L&û׊y³¯qptQ­Ó.Û!„ô|÷ì n£<8äkm.»9õŸœžëJ‡Ú|8Àrø¬k Û·3®Èä J9·þô—~ÁhÏÚ¾—­ƒc[y$0 {» 0dä¹£ár¹ ØFÆR‰tö² K7î\ºqççþ«ÀÈØDÐÒ,4“­är¹r'dC©T* Úê¬ìyüíõ3)êÀv‰X¤¶«w„âv庞Ã7pà@kkëÛ·o>}úTQN¥RçλaÆäädÅâVIIIRRRLLŒ³³sNNNPPP\\œ££cZZÚõë×uRSScbb\YYÞjD@°nݺººº 6±uëV™L¦héææÆf³•›(D£ÑÔ6ß·oß³g϶mÛ`eõÏ_e………ŠN‰‚§§'—Ëe±X¾¾¾ŠV/I.—WTTDFF6553FÔƒƒƒKJJ%Ít IDATæÏŸ7oÞ,))Ñv[¨N¼#&EΫº²â?çN´47¹¿?„Áž-kšêë|¿ÚDı°‘!9º»¼øÙ—ßìð™³ÄÜ⟞—?ÍHI¼ò‡“«{mUeôá]  ÷l^•ŸýøÓùËú»½|áô¯'(êg?Nýóô1G—Á9™W.ž!ËU;o+ e{x^V<és_ χ!Q¨Ô>›ïËß”ž’|é·(p<„cbjÈbM™égna­¶Bµ/=SIP¤Ú\p“Ë0)¯o.ýãî/Í‚›®¼¾öƒà÷'$RyK³”n(¼ž¼Oï`Ú×Ó}k«*nÄþ,íÌ-¬¯ÿç<™íµ47@7+;#cîë—¤R齄¿JŸå*R@3óy"AËoÇ÷´47¶ÕƒT")/. P¨½F€X,n×nÏK‹:gΊ\Ô£!FÛ³gÏàÁƒsssù|þåË—ÉòÀÀÀaÆ988ØÚÚ¦¦þ÷†ÕL&3$$dÕªU …J¥†††._¾ ”ë¯\¹rĈÕÕÕÊ@RRRUUÕ¨Q£œœœ<==+**òóóÁ„‡‡¯ZµJ±8ª'ùQ~~¾js¹\^UUUQQQ\\š={v[S®¬¬,((xÿý÷?þøã¯¾úª{w5§‹(SÛ‰Ú‰wĤ  ûÉ·K?9w|ظÉ|:Òïߪ«®t{tÞ}©®¬(-Ì“ËåuµÕÕÏË+ÊŠzŽè©´@h`È Ü¸sVÀêÁ^#ëjªJ‹òÝ¿]]Yáæ5zȨ‰Ó,gq/ÿ)W$‚±lcÈŒE+8&¦9O@mçjÃP޼¶úyiQþa#'úÌô_i¦tfÎç ù=†Ûôàu·²ÍÊH+Ûž†LÎè1œcbª¶Bµ/ýSIíýô§½Gj³´L ~¯ 櫽Ÿ¦üÌ÷Ê…¨ŠÒB …:sɺü¬GÛWÍÛµañ™Ãÿœb5fÊÌKçoY>³´0ßÒÎAq®äÑýõïÈõ‹lyN&¦]@m"‘ð—° _ûÿòÍØ¿`²Øà>|üÝ—öo^ÙIóîLä¹’z4äp8Û·o_ºt©\. ©©©‘ÉdGŽY¸páìÙ³ ”z-,,˜L&ƒÁ P(¶¶¶ £Õ "€äåýÏ~½¼¼"##¿øâ‹sçÎ1Œºº:ò£.]º´5ÅGj›Áç󌌂ƒƒ³³³õØíÅÎÎnëÖ­ ƒ<ÊÜVÌ)))ЫW/-»íô‰[ØØ/ýz;að,7“¨; ¡M„zI¯â*?Z×§by­¸I&Še@T·”­ ›=Û{YnÉÉ%MY !ÉdÙƒ¤P€ÿ¹søšàŸ•ßzOm}_ñÀ ÝjU-oÕ•*å ½F“ë…ÐÍÊnÙwáÍõ CòD(ð9qðÐ12©”aÈ<üµrCg·¡ •J£yŒœØVL{]ȱæ¦&‹Mÿ$ô}\ÜÖ†S7×èq®$‰ Ÿœœœ¸¸¸G‰ÅâÓ§O/Z´hÚ´i«W¯VxÕUQQ´:WÏÜÜ|||üýõy*}[ͽ¼¼\\\Ο?¾gÏ?gÖJ$¨«« …mõÙ¾'E°X,3fDDDœ9sfæÌ™jc~ðà²e2™P(d0ŠOUÃÖuâí~¦‡!“å<ÈÓû㙞ýå¯ß£'øÌ2íÒ F4Ígöbåšý݇nr:~å³±¿ž8uxך­û[uU^RŽ.RI*¼{÷® ™)¸»»ÇÆÆ^¹r¥¬¬,11‘Ì8µ¤¶¹@ ˆ‹‹knnž6m‡Ãa±Xde[[ÛÜÜܸ¸¸M›6I¥RµöêÕ«¦¦æÑ£G¢ÿ¿U»øì³ÏºvízòäÉ‚‚µ1»¸¸Ðéôøøø˜˜˜­[·Ö××+Úª [§‰wФ`Ü”\3ó˜s¥Eùý¼Ç62¾sçÆåªŠ²Ô; ¥EBàÖßÿ´44eÄ14d)ÚV–—ܾ›ý8-#åNw+[Ó.Ýúpg²Ø©I7JžåÞ»_ý¼Üe°W«ÿãÊÔv®6 åV<§þ4:ãnb|âå?ކo&Ÿæäßœ†iw+J‹-M"¡lzöj¨«ÉyòP,¶U!„ÚÑK¥’Ó'÷Ñæq·! W_ÜÅŒ c^:À¾ö ëî¯ìÇ—9™72X®0Sþ¢=ø‹–OMù[z;6áeâé,ã?™Ý«ßÀÎŽâ ¦÷¹’………»víš;wîÂ… –/_Þ£G#Fðx¼={öDGG{yy ‚°°0íûd³Ù.\X¹r¥D" hõ)‡Ã âr¹Û·oŸ3gNxx¸êÕ0¨m.‹#""æÌ™óé§ŸZYYùúú’•}||`ÿþý“'OV¤Y­Lž<ÙÆÆfÅÿ±÷æñQU÷ÿÿën³g²N6²@X‹"Ë JDˆ4 ¶(î…П¿VªX­…~ˆUTT¬Rûù VÁЍìB)‚ ”Ë&Rö@ö@H&Ëd–{ï9ß?nrf&CX„ ÷ùà¡gμï¹ï{˜×œó~¿ÏSOiq¢—£Ñ8yòd¿ßÿÆoX­ÖPŸA˜8qbCCÃßÿþ÷¬¬¬@ÁÖí zð行ƜI¹²äÿèÿ^3[¬¹x1*:öƒ¿ÍþŸßÞ¿¸àͺ3§Y*üìƒÿùíýÏNÎq$wºëþÉÚµf‹í«u+þ:kQäñý¢¢c'?ý!Êìg~ý·_êÝoÐÄ)OE¸{ØÁ-¶¨P7¯âÃèœûÝõŸþão2³bã[¦zÀMÃÓ:w[òÞÛÿZññ 7Þìóz/˜ àç£ïNJMóžÜñÕú¶ltttt.#ÌŸ^˼¤~ÆÏþC˜í¼u{*Î[¨-.åZk¯¨¿Q…$ëJj;ÝçÝòöûý§N²Z­AqŠ êá7.—Ëjµ ‚ÐÇî»ï¾¸¸¸üüüºººèèh–mó»Vcc#Ã06›­=öçr¿ßïóù¢¢ÎY“öz½<ÏŸ·Xw]]]LLÌy«÷_â97¡>{<–eFãÃ?L)]´hÑyÝn烣ÝuéçÜ475‚a,Ö³.I~Ÿä÷[lg]znòøèØø?½þnc}-*š9÷£±¾Îd¶c{n:x[nâóz†5ƒoánj°Úìš\&‹•çÍ%›½eöÚ² eÁ?Å×Û·=O¡££ó'ð#ûÚ;áÓ;i5ã‰~|ì-WÛËÉÅÅJ †´´´Ð~íŘ˜‹)ù~Þ PésA„^n0à UÔ ór3#ê³Ù¾®V·Ûùà¸R TÕ c[ºPM‹nOg[´5x¨Û(a¦jDAGºÔ–ŽŽŽÎeá“’¶±gTÇZ¤†úŠOŠvOÌîÁxáÂ…jE˜+æÞ’+0ç=ƒûŠñì³Ï¶sýR'ßÿþ÷?î’¨üöy^ÿÅÐÑÑÑ Ç•H»¹ŒTx E!²Áâ;æÞÙxåÊ•”Ñ~rrrÔ܎ОçŸ~Á‚?ÄM¯?Ü4j\t¬äeçÆoì×O{½` àtž¿¾ìµKï~ƒz\é‹«ŽŽŽÎO–kiUrñº‰=ý2•%â÷Iîä¬ú?¾½ôÕi÷\Ð j˜ììì vû9räHZZZàÖ^`ÏÌ™39Ž» #xøÓ!ô î?¼£–SîÑÚйt~œ“9ùÅMS&ý˜…ì•äGù¢££syI2L¡¹f¤ä‰ŠZ9ª‚_"~·¡©é̃7<-šömÚ~`øà6Oñx<3fÌøÏþ3f̘éÓ§çççÿý÷¥¥¥£GÖÚŸ}öÙSO=•““³råÊ}ûö 4hÖ¬Yjòék¯½Ö­[· &hcnݺõæ›o¼K`ÏüùóÓÓÓùË_xòÉ'ï¹çž/¾øb×®]999<ðÀÌ™3?þè£Nœ8@YYY^^ÞÑ£G ”——g±X=üì³Ï*++ƒ ÔaÇ·|ùòØØØÙ³gz²`Á‚Í›7Ÿ>}zذaê uª}ØG k\YYùÚk¯íÝ»—çù©S§ÞsÏ=¡ÓÖ󠙯¬¬|ùå—÷ïß?uêÔÛo¿ýÏ»„Yù •lO}—’v££¡ÿÓÑÑi3^?øòš‘’EÛ÷eÞèñË~?q7¹kOWWys´³, %çÍ›÷ë_ÿzÒ¤I“'O?~üC=´iÓ¦{î¹gäÈ‘&“ióæÍj›ã¸òòòùóç?ñÄ<ðÀìÙ³‹ŠŠTù8lذ¸¸¸À1¿þúëY³fµÕSSS£%|”——¿ùæ›Ó¦M›8qbnnî®]»¦L™âv»gÏž}ï½÷ò}zïÞ½ÿò—¿ˆ¢˜———žžÞ«W/Íó â9çš´+©ë+‰þ7NGGç"¸š±’ëöT´õ'ÈrÛ¾“†Ô2·Ïå‘jÝÍ5®úªÜay¶|¿ÚÒmÓÂUÛÚºÅý÷ß?a„޽{gff:tÈb±ðxðàÛo¿}ÇŽjç!Czöì© ØÐÐP__Ÿžž¡'Ç{läÈ‘ °X,=öØ!C†ÚØØXSSÓÜܼwïÞAƒ¹\®>}úˆ¢ Ы°*<òÈÈ‘#ƒ4.€ìììN:ÅÆÆvëÖíàÁƒZØG 5>tèÐáÇsss»víj·ÛÃNcÇTÔqüñØØØQ£FõîÝ{Íš5žÙwœXI âj®J¶¿®äú=bggë³uí_tâ£3Õ§c‡;N»*¶*ŠKµ,ßüÑÃwÝöBõeíIË5¶Ölëܹó–-[ÂÚlÛ¶mÈ!‘{ÑÔÃ0jq­Táž={dY~ñÅÕ—¡b4‚ABBBØÛ­_¿þË/¿ôx|ýõ×_œç*qqqMMMuuuªz>yòdrròyýo«®dØòø:::::::—‚v\H;cccQ& æ(´µ¸È]ÝÐ\¹fçÍÞÆ´„®?Ë`å–E²B=ÍŠ`ò}µãïí-%%¥¸¸8´ `×®]”ÒúúúmÛ¶ þøc—Ëe6›µpÆ@¯Â `É’%-sÅóï¿ÿ¾vöô¤I“¢££Ûz´¶Œ{ôè±lÙ²ÚÚZ»Ý®ž¡vÃ:¦y oß¾kÖ¬9sæLLLŒVh3Èó@ÚŠ•ÔÑÑÑÑÑÑéÈtt)Y_'³Ÿ,SÉ#S€7ñæÃ'ÿþ_J© 0r£L¢H”ÈT‚Ó™Û‚çyMc¶‚!A§¹¹Y[­ í™;w®Åb9vìØM7…Ïj‹ÐC¢ƒ¼º S¤5±8Úx´¶ŒCsÃÃr^ÇâããÛ3ŽÊÅÁ­££££££séèRòõ_?Ó{ÌFªPJUdÅ/IPd‰* …(„¢(¾ªc[/åFÏ=÷\×®]#Û<ýôÓzn»í¶òòòeË–EEE]Š'—ö<ÚÕ¥ãœÁ­£££££óSF=Rdýúõí¿¤£KIÖ^» 4èGèׯ_Ç<¾ùÒí‡F_ÔÑÑù)AB aX€Bü²ì!˲ ¢(‚ÀP†ã8Žaƒê0``ª‘¨ ­ê\Š$s–Q‰á(™pË1”È Žeá—%N`yVPvõh´ÖAÇOºÐi?ªŽTíW“×ÞoÀ§w¾·á‹÷×\Ò¤NGC•¼Ú^èèèè\ (! B¥”e9ƒÁP†¥”aŽãA`ŽexžgYP̹ଞCà»,˶¥#¨‘ë~¿ŸeY€‘)åÊP…™@aY€eyƒÀ²<¥”eƒoÚrë³\{B'šŽ û2רïÁ†íGìÕ?“¢»V|R´;²ñÂ… ?~eûsŦQÏãÖÑÑù‰ ªF E–e¯ÇÏ€À0”ãXJ Ê‚¡”RP i]ÿ "èÿá¡”žSJ™!”cX†á0„€R…ã(Ãއ B[ï$Ëê«À±BƒXu‘õ¢¦A§V8¶SM^ÜTx§Z‰È‹ï {© ãÊ•+;w•uÙÝÈÉÉY¼x±Ùlíyþùç³²²¦L™rÙozµøá¦QC•ÔÑÑùI¡( ÃR–8Và9£»V3ïóÃh†¡`ŽCA)¥ hàŠ ªçÎíQÿÛ²K®vž»ˆ¨¾¦àx8"yy¾úZN`ykåXÊP¨w¤ eg7Ö™0zèüx¸ àÈ ®¥UÉÅëv&fúe*KÄï“ÜÉY5|»Íâ2m1eÊ”¢¢¢Ðvû9räHZZZ Ž ì™9s¦V¨òâ¸8¯®i®­õÈ©S§^mttt®A(ЪÆ¶emP |õ×—v¼ÿö© c”$ -rX†á†c¦%ÈRd(s®¸S7½Cö Ï®R@¢ŠŸ*”Rª21*2< '7¯/Þº¾fF–@(!ÃeA©rv$–ºÇ ÕÉË:S:××ÌÿDE­U Á/ŸÇÛÐÐpæÁ>OÞ5:mÓö®òx<3fÌ=zôܹsäççÿý÷o½õÖ„ æÏŸ¯µEyòÉ'7nÜ8mÚ´#F<÷ÜsÚQ1¯½öÚ²eËÇŒ\]rþüù«V­RÛO>ùäæÍ›Ÿ}öÙQ£F½óÎ;µµµO<ñDvvö'Ÿ|¢”••Mžû¬zÇ@E 5P‡]¿~ýO<1cÆŒ ç]°`Áƒ>8f̘—^zIû*ÙÖ£…5®¬¬|ê©§FŽ9zôh­ dÐ4†õ<ˆÊÊÊßýîw#FŒ¸÷Þ{µï:šç¡ö×J¬¤(Šcs&\m/ttt®mÔ˜HEQ(Á© üíÍÏß~mÉ›¯þc×·¨J‘¦­Õ@!û×@¨” „° („ÈDaA@ j«öý»°|ßÐÜ"„AK%`ÚFˆ¤ŽÎ9\3R²hû¾„ _öøä†&wíéê #o޶ã%‘&çÍ›çt:ßzë­¥K—?~ü¡‡ÊÌÌœøà™gžy衇žyæ™üü|Y–Ì™3gĈ«V­òx<ꑃª‡Ê¨Ã¾óÎ;÷Þ{ïôéÓƒž7==}Μ9Ÿ|òɦM›öï߯ه}´PcBÈôéÓÝn÷‚ >ÿüóaÆ…ưžB)>}zRRÒ²eË~ó›ß¼ð ê¹;šçaX?èÚdAAÁÔ©SEQ¼èËÕkKKKµÎ‹MGGç§s6°‘–DZ‚,aó†Óõg„ â(·üÓ"x!°F J™Fý¤& „@Q(Q«ãQª}‚«‚’ (Šš®Ù¨½,ÀRBYFa@XŒê÷ž)£^Œ¬Ì€È”(2  ¼Å¹ïè±’?u®¦”\·§¢­?A–Ûö4¤–¹}.Tën®qÕWå˰åûÕ–n›®ÚÖÖ-î¿ÿþ &ôîÝ;33óСC‹…çy›ÍØV§L™2|øðÁƒß~ûí;vìP;‡ Ò³gOmÀ†††úúzí<›°=<öØc#GŽ0`€Åbyì±Ç† 2tèÐÆÆÆšššæææ½{÷4ÈårõéÓGÕ%^…5Pyä‘GFŽZH<;;»S§N±±±ÝºuÓNMlëÑB:tøðáÜÜÜ®]»ÚíöÄÄİÓÁ1uœÇ<66vÔ¨Q½{÷ÖŸT=²¿gpçææŠ¢8pàÀ‹”¢(ÚÓ¯?}¦À©S§ŸçÅ9EQ—’:::Ïó^¯Ä0œ·Ë—n0ìS¦þ*5-æË}ãoÛ*9‰,³ ÃxøÀ63l#Ã50\e›ÆK! C㓘F/ëò°gÙSuìé:®ÉÍzýP@!ðûYwWïbOU ugŒÍ ¦¦Vòƒ*àÙx³1 ~ø]hªbêO˜N˜|§Í²‡…º»-ƒ4A>ÅHÇYå0+b¥cÀÀ ÈϤ ÊŸ.W3ífL¿ÔvZ®ß#vvV±>[÷ØþE'>:S}:v¸ã´«bû¡¢¸TËòÍ=|Wøf222ÔF„3l4´;wî¼eË–°6Û¶m2dHäž@4µÇ0Œ*˜´hè={öȲüâ‹/ª/CÅhƒ„„„°·[¿~ý—_~éñxŽ=¨ØÂ>Z¨quu5˲7ÜpCаAÓx^Ï«ªªl6[jjËÏ·gÏž•••<¿2u%wîÜ9pàÀ‚‚‚‚‚‚ÜÜÜÜÜ\§ÓÙž +NÕDE%•hYå=uêTR¬µð«]¿øùÙËEQ DÎ\ç–ç_´¬/süb(3e䩵§’”cñcGÞ’3æ‡x(k UoQ³ÙFñmß¾;«[÷A·â¶}}—ü£jÑ{;rÃs,CXÂÁ‹Åó>Ž2ZÇþbÜ—,*þï Ø†9MžP ²‚²3M›¿-Û½¿òÀ(ž$wN³tËŒ{øAÄØ!I 2ª«ðÝÞ’¥Ÿ·‹³Z“úÝh¸ó.dtåàññ„˜=nT¥»w.>œ˜žÎ'vŽ~XFa)K½ ΠBl(ÿ¦¡ágb’»›"®!‰2¬„Èǰ X° Ë_C»:—‹k ƒ{ñÚÝQ]¾«ol¸½÷´d{F¼Úè®°íÀB!û”¨¬ïf¬Ÿ‘ÛÞHçTF a¢PNž<ÙV±ñ­[·Þyç‘{ÚILLŒ,ËsçÎu8a=Œ`–C‡Íš5kÉ’%éééaãðha !‡¾þúë/Îs•¸¸¸¦¦¦ºº:U=ŸA^µeÄǬF+ÖÔÔØíö¤¤¤ãÇWUUfÄ>ZXcõŽ‹-r¹\Š¢hÞNÏ5Ozõê•””TXXH)=qâľ}ûn½õÖóNÈÇ­®Œæçç/_¾\íQ·¼Õ¥Êæää|·g—=ýúçüÀѪƌ^ýJÊªŠŠÖ¶Œ3µ FÕ‘p(Â1'œ€³qXÕÕïmèÿØòqëǬO¿àî£ ¦è[ä::?è9-`½^?Ç@‘°rÙFÁè½ãξ‚C†tMMJþvË7¥%³ÉÂIµn(dfÏæuõ æ==ïËÏf¼77³w·ÿ\Õ¼ã0jšÿ³¼pÇæoR{÷žþÅ’G7,»wóê»_m5ï^ý]€‚5+/[ݥˠ§þ0båúóÞµ¤¥xëªÄåKàiBUeB||mE™%6ù¦)¾á©¿v}?í8}|7Ü'@j½'÷œ9¶Õn`S{ÝÓÉùLÒ€éÑF@®“jE¥á(#׃údB(ª§r_ƒÜ7®G;ÿD¤£ÿÔó ¾È´·Y©òÒÓâÉÂß¿sÛì>¸­²¦Lòo£ä©õ[K&ÏZÔžsrrV¬X¡Öë l¨¨¨¸ï¾ûrrr’’’´4šyóæiq~èÞ½»Á`ÐF íi?jVÍ®]»²³³'L˜0sæÌ Û2båÊ•[·n0xðàÔÔÔ1cÆäåå5ê£>ÒÂ%C-¬1Çq¯¼òÊ‘#GÆ7f̘+V\çš'ƒáå—_^¼xñÝwß=iÒ¤‰'å¼qb%¤¤¤””””••åääPJsssÕ~Q§NAPŠ¢S]}CR¬µ¼¢¢¾<Êh0())°uÅ:ˆ f&€§Ô†J޹‘>]Ô—«Q¼Õó7E+XŸ:ðÕf`ÁÔ©+'?·üÎ'WN~nMþßt}©£ó£‡ãI—뛪»mÄèÞ½AHÜ}gŽY°®ÿb³Ô _ƒW°YaƒÏëåÂôçÿ0ðþÛÐÙÞiHï_ÿþ7Q2ûÕç…ð*&›ågüê™ß##V3L&sÿc†ÜœHà:~õ®ŠÏ–ÆùýcgÌ4½ nèwóŸg!95)#‹¸8¯On&L{'áúÁˆÍ4õ»9¦Sg*5àÄ^4”ÕžØË7¤vK²tï"$&!Ê—‘š–Âó¤ÌÓx\=Ï`d EÑ+O^“tO±÷ë{s/ǘ~©7÷Jì×9®{Š=ÓaKµ8ì¦h‹Ábä.’\ìèÜ|‰º$7ñú$¦ÖSõô[>8ú·Ç+‚PÙ-Cü„Èd÷ö7€s :jµl,\¸Pm :´°°ÐívµŒ;vÈ!Çn·k¾þúëZ;r •ºº:-v0ÐÍ›7« “É´sçNµ••õñÇ»\.³Ù¬…3zÖ pXK–,i™+žÿý÷Tÿ'MšÝÖ£µeÜ£GeË–ÕÖÖÚívžçۚưŽižèÛ·ïš5kΜ9£Õêyà¤]™3¸322JJJJJJX–ÍÏÏÏÍÍÕ²pTA9uêÔY³f7.h×{×¶¯[ûÈèÔÙV¶os]}FccC·ô®¬=™RˆØK¢ÔI[.?À”«m5•L[¶”àP„cn-¨¶£VµgWœXÙùCÑ霩|)‡¶3 SGG§Ã„´8^üX½|»ÕÐÍ×}C!Q”&»`vØÓå&yÕâ S— ³ ¼`Ìœ%ÆÖí¶ÀÁ¯4â-޽2R÷íØ‘eî3vtŸ[nÃÃÕ„ƒ‡Q]ïö,\C¨Üàƒ=uì„#&ia pƒŒ®Ù¯¿ž‡âEKŒÑ™=Ðåz(Dá¢Ƙ$“Å3@O·ÓzÔîW¾;ÝÈð »M¸rÒDÝǬR1Ʊ\£ÈIúÖù‰ÐÑ¥d}ÌZ|²L%LÞÄ›c Ÿüû)¥‚ÀÈ2Uˆ"Q"SANgn žç5Ø B„æææ 2@=sçεX,ÇŽ»é¦ð9@mÁðÐÄbàhãÑÚ2Í Ëy‹oÏ8¸R±’222*++%I*))q8;wîÌËË{á…4ƒ^xá…^ÌËq:o¿ýöûï¿_|¸±[rTœ›Tû’¥-«û\b™BªÁÎ24°§Që¡U@§Ö±ÅŒÖµÉÓˆ!öER,Ú­W£gpë™4»X ¬P rÎÜ\Õzrttt®²„ª lÚ¸Mò—|ºhù²ùT!QFs4k#¹*¥o‹ªŒJ…8ßãÈH†  ”òh–}¦¦Æ¤øØæÚ3hl@¢u_QÑŽ/Öݳ¯s¼ƒÖ7¤S%Ëí†Ù`·Ee|î”ÝÀ`¶–ʲŸŠáŠ‚fü’ÜHH#G šeŠ¢€úÁzýþ& µ§\§I£/¥± v»ÑG­VsÙ)å…‘ãÁê«’?Q:º”|ý×Ïô³‘ªe´Yñ DY¢Š@! ¡„(НêØÖK¹ÑsÏ=×µk×È6O?ýt„žÛn»­¼¼|Ù²eQQQ—âÉe§=Ö¸bk“)))§Nòz½JJJüñqãÆ ÒòrTMɲìã?^TTT-Ù€Í5glU%Ç»§höå ¤W" *¾2Bç" Ëp"®µ-:átÀ%€Õ(‚Œ„ÖâÀj€¾e©¯V ¸ÀéLûí­¿xôrntt~(Ú©mÑü´ }(*Ú[ßÔ0jÄÈ×_ïH`Iö6z8ÂxëäµK6n]÷í»Çƒåà…‘7ÊDR¥$ñÃl52Ñ<'°’§ ”]ÿÚßv²Ün2 vkúu=,Q–nƒqÏž/Ö6+ƒ»Ža¨ @àý²ÙlÂP?šÁ ù ù)%6›’ ËÁ/›ƒÉd‚Ç È„d!56½5&ñ±8Þ(ù=DvEs“½˜.€…ÙGžey=ïæ'IG—’¬+¼w4hÐ%ŽÐ¯_¿¶ò¾¯.—þh?4Wþ nµd¦º< Àáp,[¶¬¨¨(èPDu×[Ó”ÙÙÙï|ðøÝµõMšÙþ˜äÏÞáJR9µ[5XN8Ë@¤V‘‰ˆªÄ<–e]UYú[÷ÁpáXàše*º¤ŠµÛ¦½_ðífuy²4ñ'‘ÞžÈQ§Ó©--;Î+¦NÚòM_?‹¬AO3>_ò/ƒI•ÝïÁÇ Ž€aÀÕG±qùÆUËV<ò̉Y&x@ýJùḀÖl²ÀMQqz×¾ïú÷íƒfïž ›ã ÷ë¿ý:'ÀÄ€R¸=Þ-[E±ZL°ÛLIŽc¥¥ÜMQ±ÑðúásÃëúfá?${­܇/#PŸÜ ›’f+ŒFÇÃP@0Ã`!œÅ'72™Ýâ£{Q0˜A=ð–FŠx3ËXÀ±àª°ÜùŸ_çGGGO» åÓ;ßÛðÅûk.i R§CqµÎàNIIÑJfÈÎÎÞ¹s§–Ž£!ŠbAAÁÀ§M›Ö-9 À—_~mÓJ¸ˆò%íIÞmt½Š+E«¦,!&”ˆÀ-Ì9¥‘´J 5œGšV  Å«QÜ»Áv÷RWç/¶8!vÞÿéï~yÇŠ+~ÜŸÐjFTV¯^ÝÑÓOi׉€¢(²„£‡±I\ßýÁÂÈŒ D€‡*I]qãÐ룣¬_¯ßŽ&€ƒŠõ›®•d3°×¾½´é“OPZ‚†:¸Na󺺵«HÉI4º!{9Š"C–!˜ˆ"ƒøx«É/)à­`âS³®3°nßw_¢©‚´îýuåËÊü³îÔ~ƒ8íŽô*ˆ DQ„3mÈ­I}zþ4e &ÓâYÕÖȪ–f@û±^Ä,µU'+Ðà§~ s0 }ô®ÑÄõ3†‡B¨A!/>"›ìl¿¡Y6Žï>ñ}igGºDIçº ¹ÑùîóÚoä¹®Î~÷ÿå)¤Çgî~ê‰/¼þý[¾=|ü gà Ö;¦NÊÈÈXóê+1ŠÔR$§Þ•÷ÂŽÏ?:°ýkáÀžG<“Ñmàø{-#nQpÆKbRͺƒ õz|J©9^HìáåL|,—ǰ^ó·Mg7¹ò‹Â°FË€˜ä>{WpfŽlø#?t~ \)ùÑ:qÓŽÆÏV>(êÁ1íýw|ñº‰=ý2•%â÷Iîä¬ú?¾½ôÕi÷\Э§L™rÏ=÷dggµÛÏ‘#GÒÒÒUchÎqåc%Ã’––¦-Op8?þ¸šmSP¦œøªU«V­ZÀ §NŸ«ÊÓ²síeh+”•þƒû ½ÀU…ÖuÊ$ˆN8«õeZÀµ[œDY ª›à4Ã%€T Øt'ÕJN‹’qè‚í¨>êÚÕÍWº½lºµ(X^â‚ÜÜÜüóH®NX—’’Aÿn1ïܹ3ÐX üi¶óУ@Ö®]ÙàÃ?Ô¥¤NX†aY/þ¨®ñÉ  åX¦¹¹Ùb1yý……DcŠðÅWŸÁP <Ï6ÏÏžp˸›O–žÈÈÊäº&¾Ùof²:ÿë«8^âÙ{Àednè†XdåO£7@`¶€a0tè Œ¤Aµãd)bcÑ­+ì±L²äç;uŸ4ó€5¼ÉÄÔØ¹ï-3{ 6Љ BrÿÌøTÔïó7V0¼‘·&0Æ ˜SÀÇøýàyŽå"KW{ju®Wa!ZÕ‘j{ÓŽÆÖµ+ÒëDE­U Á/ŸÇÛÐÐpæÁ>OÞ5:mÓö®òx<3fÌ=zôܹsäççÿý÷o½õÖ„ æÏŸ¯µEyòÉ'7nÜ8mÚ´#F<÷ÜsÚQ1¯½öÚ²eËÇŒP]òé§ŸÞ±c¿ßÿË_þò«¯¾@yôÑG§M›voy<žÀ-X°àÁ3fÌK/½¤}ÿkËó°Æ•••O=õÔÈ‘#G­Uy š%eee“'O>|ø³Ï>xjŽFeeåï~÷»#FÜ{ï½ëׯ×?T¥ØørÅŠ ]fíŒLäã‘ÐŽeKŸ, Ã0$J©d?Ï1”YöE2¼™ãYN¦äXJ£  ±©Þd5!lOG—±Nîg±0úX‹‰g¿â‡‰‡Í€™æÆ1wAçLÄ'"! ¬Q0š<Í0˜ÜÝœ=‡#9 QÂq„3B1câRÖèñQIæ|’³I=ÀÅC°(2 >Ža†äl!õLü0DõŸ@aÃS¦å¹8þÛçÔ¹\\)©êÈwÿ<üÝ?W_N~q“ö§­«Š¶ïKÈðøeOnhrמ®®0òæh;ÞY¾êµÊ¼yóœNç[o½µtéÒãÇ?ôÐC™™™“'O~÷Ýw~øa­Íq\yyùüùóÇÿꫯþ÷¿ÿ-**RG6lØu×]8æ×_T]RëIIIùú믈¢XZZúÍ7ßøî»ï CZZÚE¼´Ò™žž>gΜO>ùdÓ¦Mû÷·„äµåy¨1!dúôén·{Á‚Ÿþù°aÃÂ΀9sæŒ1bÕªUG= 1JéôéÓ“’’–-[ö›ßüæ…^PÕ)//çwî½÷ÞéÓ§xõÕW»té²råÊ»îºk×®]mü¨¢ÆJF0¸’8ÎÙ³gÏž=û>{ùoÿxò3gÏž½à“5‘÷L«•ªüÍõ—o\_T4Óú‹­%Új¥1&yLòþ˜d"`ŒIM¨YÞª¦¬[ÝÙ"ÄÞ´¥DåiÔDi pTÓt*W‚æÕ(¾iO%ý,Î\§Ó»å@ùâ­âÔ‚f`3ð£—ßùdá_ÆëPäçç¦O‰¢¨ÉÄñãÇk6”RJ©¶vx^u¨ÑNËö¨ó£'hã—a³ÍÖ Æ/Ë~†¡v»å8¿×'I!ŠÌÉ /ù7ÀÁÆ{š|°³>ƒ¿Ið+VްPÉd4¹%_3G}v³[`<Àí·ß¾cÇõÂ!C†ØÐÐP__¯gÔ3xðàùóçøöÛoï¹çžíÛ·زeËÏþ󌌌‹x+èq´½ønݺ<5>tèÐáÇçÏŸ¯–™Ôê“ÍRrròÞ½{Ÿ|òI—ËÕ§OQÇŽè†:Îo¼;jÔ¨O?ýtÍš5½zõðÈ#Œ9€ÛíÞµk×òåË£¢¢œNg×®]†Ñf,ìë*ÆJ†’ŸŸ?û•9%'3öTçϳËO¡ –„Œ¸h[m}ÓÝ¿ìýçg§ˆ¢ˆàÕ,µGt‰N8ã¬m…²ØZÒ -šrL²ºÙ­ªLõkA±´ã^wFàPŽÖ:”jvŽaY 6ÍN8+\•hÒ§ÑÙI)ï• öŠnEš-%è m.-sá ]8øã‹£¯ë»nãi§Ó™J}ä¤ôôôôk:ÂR-Û ???HÌi+…N§SÍpÇw¨ýí_•l¿”Õ]…«ôëMÏ9ò†ašÝ>³ÙlL Ã455X­V…“Ùæõû ƒ¢(<ËRŽÔ1nÍS3Ë€¼Áhªojˆ±Eq,K)cä„@àXJdYbYL¥Ôf5ËDayÞmó¸=V³Ù'ùÀ2`†a)ü²ŸeyPø¼ž(«¡ !”c)e$¿$ & !²¬øJyž§ K)G@)¥NK¿+“ +k^¬ÌC`=ca¸î›ÉŸH¶LE8ã\¯ŽSÁ[næ„Óy G^îÙ³Gm¨;ÚAï¶SJiM˜†ZžW¸„-ÜM)U¥U¨lÕjFˆïlÏ~}àƒžíÕ¥¶ׯœ:ujNNÎÌ™3Û©ÛÔ' ;Ú /¼ žqz)¾i^ÈÍÍíùõ¬ÙleF–/06›Â2¼ßïgY^– U†Dz>³Ñfù׎„HŒ]¨$IFÞeµ{<Í, Jž7pçóûŒ‚Q$A0BEáy¯(’W’L#¥DT-ÈBˆLŒ‚ÁíñZ­VÅãñ Ã@’$žç !„ã9–² CXŽ£”¥”P†aXžaE¢¢€ÈË å|’d6v¸õ)+ÀUø©?8Æ ´„K¶GG.^»;ªËwõ ·÷ž–lψRÝõ¶Ø@(dŸ•õÝì‚õ3roo§Yfa3ÎNž<ÙV±ñ­[·ÞyçmõX­ÖÞ½{¯ZµÊjµÆÅÅõïßÍš5Š¢¨ZíâÞÒ8tèЬY³–,Y’žžþÄO„uOó<¬qbb"!äðáÃ×_}„ù‰‰‰‘eyîܹ‡#¬A\\\SSS]]º%}òäÉäää ›=z¸ÝîÚÚÚ¸¸8BHSÓÙ‚Þ[·nETZ q‡Z,((Hìî„ÁÆ5”|ó¥Xíò$ÅÜ¢~ V»™Œ¬‰%û·;Ž¢¢"§RRtBj[š²Z©ªF•Úét9pª+‘Ú®·J±µ¤‹û¬ÖŒò%U·¾Xx²ì˜ÖRAê[Iè¯æë83Œào3Êœróìjå;ø¾÷©î¡¥{Àîy}³óÞ2쀗úvwˆö/­.›Ô­‰è_lúýÓߺÔ)¾– »$™››«*¿Pã‹S-+V¬Ðöââªá Œ¢‹Façí‚"JW¬XÑ·oßóºwÞ'0uêÔÄóäo¿oí|ØË‹¶'s¶‡åð®åǬÁÐú‰Ì«_‰Ñb…`æ žƒÅ06ÁL€Ì6€¨mÁèóyMF“Àr `Á°œ2 „,ÇX²"qœÀ³¬¢(‚`e™ey›ÅJb4šEQÙ ðÖäóùÌf³,Ë XŽX–•e™ç9Ïùý~ƒÁ ^ 8Ã0M„–e)¥„†aÔ'„pÜE–.÷ûýƒP.¯( ÏóEá8ÎëõšL&Jiè ë\I®ÎˆÇ8IA»Øm±µ¸èº[ª]5®5;?x`èSi ]‘+·,’ ÔÓ¬&å«oÿÞN)™’’R\\Ú°k×®aÆ544lÛ¶í±ÇS;KKKÍf³ºØFÙ³gÏÌ™3µKB{üÁLš4 ÀÀß{ï=í_À‹{ëã?NNN9rdMMÝnOJJ:~üxUUU`6L¨ça{öì™™™¹hÑ¢çŸ>**ª®®N[D D5ûðÃ÷»ßÆÆÆFõ(HÍ“^½z%%%>ðÀ'OžÜ·o߯~õ« AâââzôèñÊ+¯Œ7®¨¨¨®®ŽeYmÆú K ²¿Šu%)((0&u?uDüÅÏ…ÿþªßˆñ\C‰Óé¬òp›7n¸®ï€’ƒ{~‘};˲( :+¡Æ;Æ$Ú­œ-‚¦<ÛéB:ß%ѧÉJ•Àvà§\¥¥ë~C²O--Ä•rJKÄäI”¡5\-4tºõ.Îsl<»Z¹Å8'œæÖ3 ´$U IDATmF™3 À¼WÞŽ²½bõ¸N}º$# ±´ºøLY­£.ºà™Bz\Üèþ§RL4½“vLù%ÏýŽöý0ì‰8í_• íÌÍÍ]±bEØuµ wˆéŒÌÀ/cù•©S§F8(èB3“ÚI;Ÿtüøñžô"|»¼SwÉ´µ)Ì‚ Ü@pNK¡È²ÄsËÀd0nݼYÌ&“¢(’, ‚ ˲É(x<·Ï먑Tù%Ë2Ïó‡eY£Ñ¨ª=ŽƒÏç3f3¯þ˯( Çñ†SÅœÁ`ðx¸­²¦Ìo$*SkbÉäY‹Þ}á¡ó˜“““——÷í·ß.Z´(°  ¢¢â¾ûî;sæÌ€´Äšyóæ]wÝu>ú(€tïÞ]ýÍV í4hЂ Ô„î¾õÖ[ZÈ㎵råÊë®»näÈ‘ƒNMM3fLzzú¨Q£>ú裛nºIP õ¼-ãW^yåüã¸qãŒFãĉ'Ož:EÇÍ™3gæÌ™ÙÙÙ±±±éééo¿ýv 'ƒáå—_ž1cÆ’%KΜ9óÐC¥´«üå/yûí·ÿùÏNœ8±´´Tý;¯ÎXØMGX›E17×YJ÷¯HеVW–þâçN«ýŸÓé¼>Íî«¶:Žêêê^â)´&S·hÊSN u€N)©zÆmmØVë>ª)KåâR«²R•}N8µ%IàìN7€Î†^Œ1ÉküÇ6§ke)×!­UÁÕŽª¾,Q«TŠ5Xâ$e" gÏlE ]…ÖtÕŒW•e-*kkW‹Å8'à2nuiqõ{âïŽë|ª‹¢,ù×énñÙÎ »’äää¨;Ñê’ž¶¥«-(ž÷ÄŰ»Ûê·¾°kf¢(þÐ&§NÚž…Ï rHamÔy»•üéÈ â‚|Sc"Õ›ÐÒ°*휺+†*l™ˆ=¡¢“Ãq Ë„Ê~ÿóÓ§Kn·âóÅÆÆª2Ñï÷Û,V†cež:t¨Ñe2™êëëo¿ýv¿×G‰Š¶×ÕÕÙl¶ÚÚZ5ÑÓh4J’d·Û¿úê+ŽãÔÅKŽã8Žkll,,,|饗ÔGŽã(¥”*”R†á†ñûýÇ9Ž?ýéOÆ üp¼P!”Ru%’ã8†aÕ`ŽãL&“ZXÛÓ¹Štt)É'‘¨Kr¯O"`j=UO¿õàƒ£{¼â •Ý2ñ0ÄOˆLvo8GJjÅn,\¸Pm :´°°ÐívµŒ;vÈ!GËGðúë¯kíe€4ú÷ï¯} õêÕ+ðÃéâÞZ²dIËTðüûï¿ßÐРº7iÒ¤èèè¶á?Ø-²2…kbª[5"ZB$°—]»ÕN¤(©Æn-;ÇŸ¨opãÔA”öBº‰êZ¦.g·.X:4vÔV Xl‘•»•Mºq¢º˜OöyVŸ~uCessbtWjëš2ph\ªÌÏÏWcCkµ3R0´óŽ;îPê!IAï®]»ö⤤š¼(vÃê¡{è999wÜqGØDíÈòÐÑBåZ^^^„ÓÆ5'KKKCó]ÚO`¦QXƒµk×¶Ó· hHÕ&4&U}Øø[ªÑž-[ FQ(Ã Ï MuõÑ&cL\¼ßï·ñ¬É`ä¬J©O!>Çh2ú=nƒÅíóùÔÅK†a,‹Édr8V«U’$†aš››O:USSãp8xž—e°”*QQQõõõ,Ë U\2 MJrç÷ûÝn·ÝnWu¤¢(~¿ÿBë.+ŠÂ²¬úá¢jG5gT–e¯×«Þ—Rª6^{í5½®óÕ¥£KÉú:™µød™J™¼‰7Ç>ù÷ÿRJ‘eªE¢D¦‚×Î1yž×DX`€ tš››ƒÊ…öüÐhb1Ðm´áy[ÆZÒzdbbb"ÄÇÇGxWýæ÷ïÿ{Ĉ=zô@댉ÇΩº×Ö#ÑúaVYYép8222 |5%åÄìì좢"cB :Ž””GÙ~D=[U`ÚÇÑiÔ¢US(Çi @wÆ-)7(¯¬@ÛßêR%Ü ÊJ¨2Ñ•WJóÙ¨b«£—¼@ã’”Nêy9…­©6ªÜÔ2»ÕpɤÖÓ¡ÔÊçA·†T:HpƱ@‘ `5еó¸ÎøVˆp"×鄨œ‹cÄ­¢¸Õ‰E§“vâ;ý¢WÊÀ¡¸›àÚZÊ—FjjjèV{èN'¥4///p¥ªýIÇmJª;î¸ãr…KEò©î…ÍMA8ýwÞŠëyyy©©©¡g…‡•qaE§z—Àû:NU4•ˆŒÓéœ9sf Ú+û”––¶Ç·œœœÐ w:³fÍ 5nO^Ô£ áØra¸Jµ‡á8ŽaXE’9J-f£ LŒÕÂØÌ‚ p,c1šê%†¨Ád 2R`BHjj*¥Ô`0H’ÔØØ(BRRRSSÓÑ£G£¢¢L&ϳü~…ã8µ\ ƒÁh4î,3 C‰ŽŽöx<<Ïû|>Uq^„Î#„hŸhêêceeeaa¡úI§ö˜L&uÏ]בWŽ.%_ÿõ3½Çl¤ ¥„PEVü‘E–¨¢€PˆB(!Šâ«:¶õRnôÜsÏ©%r"ðôÓOŸ·çÊÓϯ ?üðÑ£GkkkÿøÇ?Þxãjg[3ÖAb%ÕõH5á)*.QE­¦’¯¦$##]ݦWQ7…ƒ4¥ˆâ 1cS ò”Ö£nߦŒØíÞvûš¬TWÕØJ9.Nuãû„ÿ š£ãsU9‘®%è4ÓDŸ–$sv×»õ¤oí@PYx`cŽΤÖ]ïÀw%¸Õ(†º .¢ú„+©sÌή§VýÅ›Vž´¦y‹Åí¾Œ`öÿ,ݰä•ÙõñÙ‘6Ävq‡:FÐdaëã´µa—————w¡w+ã5P[«í¬ HØÉÉÏÏ»æv{÷¼·PµéyÍÚª|!«ZýYŒ?>Tñ‡ú3Š ûÚã[`äz ãÆ ó"~4Wr^ ¿_Çq儨8¸Ý<¥v›Í pTò› ïžÐío•ÀØÊt¾ ¯µg×96"åKROkô¹ªœ“[YâT íŒÿgË ¥èHmë@ˆ®@•©.^j›àȲ¨¶|«ØÉà 8Å\§}à­¿–ZÖ—ecƒ‚\‹‡:†=,ñ‘G |vû2ê•¶ªµçZ­Ò$µ$d;¯ ëÆyŸhùòåí?,ae_(‘Kr¶³¿cs62²-¡d0ðT!„! $IŒK´ÛcLF‹Ñm±XLFÏ/ŒÕ>š½f› !DÕ‚,ËÚl¶˜˜«ÕªfÌPJñ Ãx|ÞÊÊJ5`Q[ ¬®®nnnNLL´ÙlV«5::Úb±h “꦳,Ëõõõ~¿_Ux<Ï_DNŒ–®Þ]–e·Ûíóùbbbxž·X,’$Y,«Õêp8tyÕ¹¤dŸnÜÙH«Oôãc¯èβÎG‰•ÔPõb^^ž$I‚ ¨Áû)))Ú’¤3×YR°RÓRH*ºh “¸ÌLrãÕšÐþ •ȰR²&ÛCøs;Û–’k×®½”S/H®].Ú9~Xß.HU\õ\¢K‡PÂ2¬¢(Fˆb³˜ `ÑÑ5²‡1 ¾$U VZ\ ½ö‡«‹^60¶RäÜÆ¨ë€N®*´æ©*3 ¬¶Íí*¸fãJc’EWU.ÄTt©k¿›kælMuWQ×5YÑ$™;ñÁÿTîÌNaŒ¸jÇ´‹¶jõž£tù'%ÃÒVbÍ…öÁµL£«Ë@^:,ÃBݦ jN¡ ñ6«ÀÇÛcí&Ïó²,ûƒd4C¡ÿ½7Œª>×ÇŸsæœÙg2“d’dö]Ê&T‹¨(P‚¸P\©îõ{«·õ~oµpD«öªÕï­mï•ØÚŠ^-zE(‹é¥.¨È"ƒ€‚¬Ù—!É$³Ÿ9Ëï7s<Ì";•ç=sæs>ŸÏ9™0Ož÷}ŸJ¯v¨(ŠÁ` Puvv¶Ñhä8Ž,!XlV“Å:;;N'‘9EQöíÛGz¤^¯ÏÎÎÎÍÍ5ã&‘ã8ʶ …¬V+˲Zû!Ú6UÕï§Ø:åY/$C"$ëÇ ‚FM&Ã0n·ÛétšL&žç9ŽSM‹ÕHºº[U%åyž^jym¦uC¡ÅbA‚sÓy½^Ï0Œjc m6[Ò…²,˲ÌqÜé±çK—•lŽ-4KqYÔ›cB»€¾¨äÚµkx.8PEEÅ›o¾©MõUÏ<öØcååå‹/>ë‹^(œ»Ç¨ÅE’+™„´Ýz£§O=}jMMͯ^Ì=ήí82GcúM°(J+ѱAŒÇ¸¾º.‘$i`í½Vgµ °&ÑÊ´5à*¾Î°ŒyßÜ\YŽ$Nß ·ª¾èÔ¤‘h¥JLštøÂà¨ïMiÝç(ˆù[ t€ÔÛb§rÛÉò$€$IÓ°á(¾Ž—'Ι›]™Ÿ˜g €}a·~ÕÚuÕKZ®*š˜'êôÓYLÎJ©ÔÖÇôñôÎ)Ҧ嵷·÷3çò<çäkïžÔX—qá €ÂÃêuœŽayVgätFÎÈëyŽ3`9Aa Ij¤¸³^¯7&“Éb±¨TReW ÃA§ÓIĈa˜®®.žçF£ÕjµÙlT”cÔ”òPj£$I¬V+€`0HÄ#c±XCCƒÏçcÆ`0D"·Ûív»µ®æÄ#ÉØ’*lôz=Ïó ÃJzªÁ``Æh4ƒAµ¸‡ÈÝÉÄkãñx}}½Ïç`43­K¶'´gI’"‘ˆÕj%zÇUBÌqܦM›rrr èQ£ˆG²,K"î™X ]¢¸”¨ä›Ù™7L1. ±x¨ ¼ûÑ_½óïÏÿF“,^¼xþüùTK¡=î?:T\\¬å‘Ú3Ë–-;m[ÿÔ~«p±i“I‰žÚ N^^^}}=€™3g¾Üд¸²5ŽœÙÜqN:$!üµBymÀHºj†Ïª†iA½Uï M@AK³v•&ÍqH ZtÉ´²©¥™ç1KýØA sgBƒx¬Øjð#_W šòÄìBó ˜1 ì ÊR¯{%á¸p`­È ½ ¬7°VQ o*¼. äC5¶—äâî­ QÆÔÀ7¼ÇÅÙáI˜Ÿ¯íô3Qo;®‰«Ÿh÷â…Æ­€Ç3ê–Þ%ª««++/€`&ƒ›5kÖô3v|cܧļyóúðîq»ÝãÆ£‚÷´…Ò—qÉAA"îÁ€ t8ŽãyÞ ×ó¬ö­ ‡Ãd?d4G}à 7Lœ8±¨¨ˆÞ%ƒô«¯¾: J’4bĽ^O‰’‹…çyŠ­Çãñõë××ÕÕ}õÕWÍÍÍ‹-š?>mCQ”îîî7nذáèÑ£ñxœeÙx<‡m6[Úu‰G^{íµ²,“Ú‰Db±˜ÅbEñ‘GimmýÃþ@Uä¤P˜?þ}÷Ýçt:UOõo.*y¼¹S´µ€â²‰öƒwý‰×¸÷£íµ×N™éªH$²téÒÏ?ÿüÆo|ä‘GV¬X±ÿþ†††êêên¸A=~ûí·üãWTT¬]»vïÞ½&LX¾|¹Ùlðì³Ï<ø–[nQçìÛ]ò¥—^r»Ý·ß~;€‡zhþüù6lصkWEEÅÂ… —-[vôèÑûî»oÁ‚«ªª>»gÏŽã–,YB¿“I1íΓž|KKËÓO?½oß¾œœœ%K–\ýõ'í¼ì¤¾”[®dZ$)”ôO€ßÿòË¿ÏöïìÈïtÝ\ Òëy÷¯‡'·æ(ጡ풠P^&ú jß*hinPH|qz4c'|A ®Ù›[ÙRR4 0$¿í©\É™ 8æ '†ù„ãÇïÐböƒLÑõà퉧Vê¤ç‘¥(ö!´ÿ7òNΞôV%$[%qØ‚Îfï1ÊÝœ‚¯ÍªêÞõåèóﺹ·µ½üy§9Oðˆ¶U¿X1p ãx«!7ËU:xÞù!g™ª˜¿é$gnˆ}ÊÌÅL9Ë—/?¢õ>¶qÑf#\L=lÎ;Fa©V,à·[Noþ¨¢(`NzI nÝtLáÄd %G"ÑÃF–円ÒäH³ÔRO­œ‡ aíÚµÿùŸÿÙÓÓCüŒ2/M&“Óé$–&Â_|áõz n¿ýöE‹‘ʲlkkkII Çq¡P(//Ïn·[,»ÝnµZM&“¢(6›­±±‘êÐI%%#¡®®®M›6ýú׿¨ÆHQ³Ùìt:ãñxÚuãñ8鑤/Š¢È²,µÿ5¿ÿýïý~¿Ãá0›Í'Nœ ;b«üãËËË¿…Ñm\BT²fûÞÒïDQäP0Ôékk6p¦,;–¿üNTòÅ_¼ÿþûï¼óÎx`Þ¼ywß}÷G}4þüéÓ§ÆÍ›7Ó±N§kjjz饗|ðÁ… >õÔS555D§M›–ä¸eË–åË—g:C 鸩©é…^xøá‡,XPYY¹k׮ŋ‡B¡§žzêÖ[oå8î™gžùÞ÷¾÷ /,]ºôƒ>˜={¶v‡Ôu&iMû›ßüæá‡Nmîv»Ÿyæ³Ù|Ûm·Í;w̘14>í­¥–eù‘G±Z­/¿ü²ËåŠF£icyyyÚ©På‘G9räO<áõz«ªªÜn÷ðáÃÕ¿ï=¬±é‘ý1ËÆÆFY–o\|?pMM͆@í,[ÈzcÁ'¼˜·ÛiÉc…*Á=PÒåš¹§gŸ-–ÌRJfùõ’ t€[( ¦]ÚbI•:ð¦ðÈ©LS©R „ö— J®IÛaÜ;ƒ´Î&d~ž‹|²LoF6™¨oFãU·»+À¡·àm€Çƒ{Žûø³ºã­VScGÓ¯ÿÒd CçÝúpnó´q‘SIm¸yݺu©*++O›GžIÍø¹Æ9MK½„À ‘Ž­$C–eFfYŒ¬È² EAÂaGIkÉ·zžx$Çqáp˜¸Ïó~¿? ’±( é"Q%ƒD˜Û`08'»ï¾ûÊ+¯93 f³™®"ËIJ¦$zÚÛÛßy纺ºeË–qÇKJJ‚Á`^^žÁ`ÈËË3›Í´Õ E"³Ù\ZZÚØØX\\L\–èÝ믿þÊ+¯PÜ`0Øl6¢¿´.€´ëÒoŠÁ`ˆF£6›âþ¿ŽD"’$¹ÝnQc±Xqq1˲ÝÝÝ………v»ý_ÿõ_÷»ß9ŽKԜ蟟ےé­{oÍȲ’Jþews¦·’ÚsoÛ[§/l ŲÆþî¶ÊiU>Ù¿Îxðà•Ìtk©ƒʼô¡³Ùä(îÁ.L ÆÍ5²¥Û£À+Øg*ÅD"Þv+t P…L Š @'åÁ¿¡ÐÓOÐLÏ?ÿ¼ËåJ»Ã>¤ÅÁƒ—/_¾jÕ*·Ûýàƒ¦íb( IDAT£ÞZÚÁyyy²,õÕW£G>½²³³ƒÁ`WW±çººº‚‚‚´# —D®d())¡Œ"5%€ËåîuOM õk|P±`È€xL0§W˜,p Š÷£±4A7O.d×Ã[ €bx¼Øî‡r1ÉIÝàry}¾›!ËÐ{ ‘‚Õ¢³NµOj 5{àö(€„ mÃó®@e=e!ADSϘú¨òIPLô²LJÇ”P`™”<$ª¹ÕÿR-ŽKþ®G¸qn|àÍeó=hê¶¼æõy<ì=W÷~~V®n›/ß==Àžým{ÛXsgägÙ9u­ÕÕK<ðœ]_¡´ªdR¯¿T¤mrØS«_RÉN¦Ü§¼Ù'Ÿ|2•öõ“Be²7Z³fÍøñãS;4®Y³æÉ'ŸçóŸC™io?þøã?NŸJkniiÉT‰iCQ˜D‡n( æ4Z:¨²C6!›3£‘ê0r7™L@€ÂÊ(»±­­BUÇ·Z­¤ö‘á…I†¤DªG¤ÂI’È Rörrr,‹Õj6lÕ²Œ5Êï÷ëõzU#¤9£Ñ¨êLD»¥äKb±&“) R%M(¢» ©( U)Š’››Ëó¼Ýn'ãL›Í6xð`‡Ã Óº‚ Äãq—ËÅqmØd2™ÍfNg·Û'Ožl·Û¯ºê*¿ßO~FôèŒF#Ñe"——UÉ‹UÕJ'ì KBT xëîØµåÁÙO\1|â¶µœh´ä€¸"*–¼ú–¿ö»Çï>å„UUU[·n}íµ×´Çš››o»í¶ŽŽŽ«®ºjêÔÞV:/¾øâ¨Q£î»ï>µµµC† Ñ–ú§žé?¨ªfÙ²e3gÎt:n·ûW¿úUÒÓHÂÚµkG5}úô‰'Þxãn·{ÆŒ¯¿þú¤I“(C1õÖ2 þÅ/~ñè£Î™3Ç`0,X°àèÿÎÕèõú§Ÿ~zéÒ¥«V­êèè¸ûjÞSq‰æJ¦‚ʼ¼<꾨ž9rÔÈ‘£<_ÍîOKÊjGM²ruëè[ ¢À=˜µr憙ÞAfbP»kvvޏG$;!Ê/— 6I-µýƒ£€åÌŠ>÷HZº–ÑMïˆïPEMõÛ»ë (•q&±L´ÕXRíP2 ËU8˜¾úiYw|·(+ —S"„n½ÜÛØ<áJw¥Gà…Çïš?ý©Çÿ¯ß»îŒLµÒÒÁþpÁL‚ÙÙ5˜L gj9ØߢTdjŠ­âò³¾÷ö÷ÉO6M¤­_ 6I:*‡“$)‹P%“èh2™Ôš›¯%ÏDŽ“þü¥ÚðR{5r&žá_oÙa„ë4uP‡FÌ.dWÂSݲn¦u2’k™¦‘J‘Q@“Î!¹¡ñ9÷Hîj]]T*ŽñH_çѪßšæŠðÂK~@TrˆíÙÚÚr"È ­ÕÕ«Íj/€‰cŠŒ›\`úÀ’îãõgÑÜÂýõ¨®öf ,™5q`QVÈãâõ¾‹3 ’™ˆH?¹`Zð,L¦­Ë¦4Áþ”œ§eº™PUUÕÒÒrV*ÙÏ:è!œ•Ö>g¿ ¥¡ÂgAT^ET‰d¿h4‰Dˆ* 5ÆÍó¼¶o¶*œ(Y3²,K57N§“ˆ-J±u* 1¤,ÒåÄYµ¤V–åP(Dê&Çq껩÷Bvžç©9¤Íf£¯3Ê狼2­KËQ¹·z§”pIÉ‘t§’$í@„R§ÓE"b¨—h€›ŒŠ¡¨Љ‚(ÇE9.É‚(Ç%¹ï«.v*ÙÝ%²æ˜(*ñˆ¨œ‘39ôúë*ŠÂóŒI–âŠ,*<Ÿ}êéÇ©K{ @uÆO‹p8¬ª•©gžþy³Ù|äÈ‘I“Ò×eéí™v˜v@PÉ¢vd¸µLƒ“ü2ᔣđSâRÏ•ìjÅRKK ùP¢·:‡(μF_ÍÚ¿zçÎpà}ÔÌ;6³!ëoñG¿;pí㥣J±áËüÂßÈJ`þlç‰á¿`°¡íØ”µY<äkPìÑB”Q æLðÆ!_DãXø€z„K`.DÙºÅ,E1àÄPª¯„ÇÜšH¸„Wi¥2óJxªý Ž^6Im‡k"ì•’»:ð¹ÁöN_"uºíªáí?©‘7‘F<^À Ü*JàEcký¿.U)mk”ù6–H—׋êjoe¥Ç 4:ÔÞÓ/ö­Ä8ë«{)Qe¥Çc‘7¬ú£ŠÀ˜oµÇsš*`ZæÔÿ¸y&𬔯X±"£¥Éû¦}•••+V¬øFßv´â’%KúO@Õ»sªªª9sæ|£½ÎÛ/ PÖ )j-ÏóÝÝÝ>Ÿ/R™ ¹ù¨álŠD«at•Û‘pH‹¨˜Úb‘’i•h4ÚÙÙIe+Hˆ…Ä“¶Ç»»»I椯35–“Í2† ‡Ã¤ ÒÒª©Ê™™Ö%e„,„HÂT.)dO—G"J!UëÙ)¯”Ë¥Ë#O;•|îþyãФ(²¬H¢$ðrœ—ĸ"IH²$+²,I±Ö#ŸžÉB?ýéOɧüä'?éãÌu×]×ÔÔ´zõê´ý¹µ ‹¿=²PÂVRÔ€Ë5sæÌ™kkj`™g}C“òä<†•ÇŽÜóÔ,³–_¹uÃo€ÑkÍk'~9wñS_¸ò³½“zœvð›V“ãïà €µGÌ0dwaP Ž8PlOù—3AŸ‡A58R3´åá9Ó{òñd”d_ŠAOù7hë² AÛe»Rr{ýbùõ nz'Üÿ˜ ­4·y`2|[QOúfqSÉ–[¤-•Þ{žšEù‘#§»FNÇLŸÙ[Ç}Ë´?«+šiU"Ø_¯‹–H£J Þ|qW”¹íL¼eO<m²{Nz÷X ¸^3v¯Ç]sýC¸ù¾‘Ä ³ìÆ{n)XùÆÏÕù£n)øø³ºZ¯oät׸Qù +W·†¹3kׄ1`A¬…›t†e7΄úœ•2ö¾'?§Ìs‡Ó“]¿Í ¢“¼¼<ŸÏ§jŠTˆ­×뻺ºb±˜ÕjD"Ô†)ØÍœì®rPUÔV4«äŒþÝ£jžç©tšØž.OºJuXuKRFc±1?œs'e‘DÊ´ë}¤z#Ú¤v õßjÚ Ë²4!]¢Íý¶É“—•|û!{I›ÓïénþSÍ f^ÙÇà•+WN:µ¼¼ü¼mïïçá1þçJžÅÅÅHJJÇÉ4’jÀ¯¹Qmíþú¶ü MÙþvð˶ºá‡ùƒò³& ë׿­ýN8wNOÙ:#ÝqÊÚ¬ÚšWý”¿ö§C+±íöÓŽf˜ƒ²z„×áØüïÈi2·x;¯Aq ŽÌAY.t× ø”lÒ‚<òÖi´ÉB”ÇB-È4ãXá×3xð邵ÐÎ_°7ñ²°Û8òçX»ñ}Ï Ïž}m¾;¥”Ú'®ô¶ÞsKiwOôµõûxŒùߟ˜•eÑÿó35¦LüNNÑÌáWôËõ2.ã2”„™±–~Q €ŽŽEQL&Ã0f³™˜…ƒU*©ªwIÁnFÓPGuÏ¡äB¢\$Rj͉’اú¯">íH¤ãmD:EQ¤ÈµZµÃ&@'Ó®K1wª×V]3U‰”F’ÀIÊ(¹%fP&)ÌM;×0iz2gågv1ᣒÍÑ£…f).‹zsì@hЕ\»víÀϪ¨¨xóÍ7µyÁê™Ç{¬¼¼|ñâÅg}Ñ …s÷U|{ôÈL B©"Õð<-ä’pmí~Ϙ†ïÌœY[»À?låóùÖy½ðb¼{þ½cc:Gþ¬ì³ßíôßiûÖàÏþØÈ®ŒMêq–À\‚²÷5û~:øž[F:üÒ¬ÚÒÝOוo±F•A›¼êv÷xGþ0ä¿ÓvlôZ3ùYQ¼Ç*+{ÅÊÈ~gã±üµm…à둯e“=ˆ«iéu8 ²Ò3Ù=Åhlvü*2©Ç `Ž·¬öºæ®Ÿòƒop­\Ý:° öÝ)¥ãz¢+W·"Ú6wö0kÿê_÷®¹°°°²rE?-ý/ã2.mô;”Ê(j—îŒ ²%‚ÃáèêêRÅb±Äb1ªì¦òƒÁ@•ÎÄ PϪÈÁb±P]3)|t-Lj¢HîâÔ»¡¡¡¾¾>××ד¶GÅ+DþÔ;­BåØHP4b{Z1•SRŠ'˲ £EYD‹Åt766¶¶6ûýþÆÆæ”u{Û!R qDÒeEQ( X¼½ËɱXLÏóD9β¬"‹ ËŠ²Â0Š$ÅY–eVQFEQ–a S$‰eÙp8h±X…¨­ÒÝÝewâ=dº"µ"‘±Ú6튊Ù5#{Å`nA Ô•ÎÒù³.š^JTòÍ¿ìÌ&ˆŠ—…X¼yÿb¯X0ä{ëÇmx`kñZžÒ1›qlßÜìùùe•È~oOÛ;yóÇÏGÙ;îFvc ð¨‘†½û×Ãr›nþÍeæß\¶{| ö¹öI=ÎzäS„}XÕ,Ä kQ°Ú x½JëD¦àzKà2±$׌GÛ|Ï úí|%Ûêç ld·?úw¼¨ôo5|òÌ'î!CŠ\Ù'ºJÖþÕ…¤dÓúÓ.õ2.ã2à+²,Ûl62ß&ÅŽxÑ)µj›è—Ýn—e™þQ¢ÜG"‚©(j± V¿ßßÑÑÑÞÞ~âÄ :o2™ˆQþe<'†J¼“œ›‰žÆ­‘¸(ŠbOOOgggg牶¶6–åÒ®K!ïH$B‘}µ|[ÍÂToN0´Z,$Xê8NQ”H$ª×ë …lV3 Ä¢qŽãX†‰ 1Î`EQ˰‹M¢F½)KR<++ –þìgÿçGÿDÞDût:5þQYUÁSe:žJT$‹EˆƒRŒ^¬Óñjèé~FúÂ%C%7wжðB\"Ñž`°ã®±?ñ÷~´½öÚ‰}Ø#‘ÈÒ¥K?ÿüóo¼ñ‘GY±bÅþýûª««o¸áõøí·ßþñ\QQ±víÚ½{÷N˜0aùòåf³À³Ï>;xðà[n¹E³owÉ—^zÉívß~ûízè¡ùóçoذa×®] .\¶lÙÑ£Gï»ï¾ hll¬ªª:|øð„ ªªªÌf³v‡o¿ývKKKÒšvΜ9ï¾û®Óé|ê©§´;yùå—7oÞìóù¦M›¶téRúÄ?ôÐCio-íà–––gŸ}vÏž=Ç-Y²dþüù©1íΓž|KKËÓO?½oß¾œœœ%K–\ýõ'í¼,M}Òem²oP ¸$^J’Ô7ÅÔBãCô5¾7㤗ô¶Ïç[¹ÚëºkÖÞ1µ¯nÙUˆ²ÂµøYÁöO,UÔÑ*þÛ¡Cî!CîY>˱{KóªßúÌù|{w|mç’ÆNO¥§È• W¶ï9Ûoÿà+ÙÖ†µèÈ/óz‚ bÐÀOåM‰-ÍL„ïÇx¾Þʺ𦡠€§âÑ^űgñ<ŸúÄ.ã2.!œ"Êhõ=åT"‘EI’²³³8Àq\4UU@rÞ¦úJ”dY677—„Lâ  Ãt—àVç'fC®@Ä„L&Ó‰'l6›ÑhTý}ˆ‘éñž¤Øô7B<cY(ŠÄq³Ù‹ÅX–³Xl>ŸÏf³™ F=§®ËI’ ( Çqz½þëÂ0²(±œN pS/sbfV³ $IÐqœ¨0qIäLAI´YÍrL„¨ÑbfX&&Þ™ Q½‘EV§ãtFE,ËF£Q–åx<6hHù[oýiÁ‚NgŽ^¯ïìì¤äHptÒhÕ>=HT ѦšzºS2%÷èP(¢RÏsK†JÖlß[úˆ ‚ †:}mÍΔeÇò—ßéƒJ¾øâ‹÷ßÿwÞùÀÌ›7ïî»ïþè£æÏŸ?}út£Ñ¸yóf:ÖétMMM/½ôÒƒ>¸pá§žzª¦¦†èã´iÓ’L·lÙ²|ùòLg¨!!755½ð ?üð‚ *++wíÚµxñâP(ôÔSOÝzë­Ç=óÌ3ßûÞ÷^xá…¥K—~ðÁ³gÏÖîšÊ$  ió›ß<üðéãn·û™gž1›Í·ÝvÛܹsÇŒCãÓÞZê`Y–yä«ÕúòË/»\.5ÀšôËËËÓnL…¢(<òÈÈ‘#Ÿxâ ¯×[UUåv»‡®îü}ïaíøos®ä™@+^­L}·²ž¾ñ5éœ,¾]M ¼`òšæ'øÜ3{' hÚ/pàQÉL·–:øàÁƒ_}õÕK/½D>”*'NzŒ™6F y~ùË_:Î3f¼õÖ[ëׯ§Ž´ó$*yYù$í˜mÛ¶%‘ËÔ3Z¨<•a§Ó M¦ÂîÝ»EQüùÏN/SÉhrssÓ.·iÓ¦?ü0‰>|XË5ÓÞZêà¶¶6–eÇŽ›4mÒc<åÎ[[[­V«ÚIbذa---}ïür®äùAß”+IÚßÒÁœnœ `PùŽãV¯^ÝÜÒÊo1 IDATàÞ{ï=vìx (//W-0éK\-6Rí>(ËS}Ô­­-ؽ{÷Æ÷îÝ[XXøøãϘ1ƒLÝ‘°4:ÊŽT\î7ßûÂVöew çú‘ØKrøÂ@¨À¶Ú÷ebL²•ùTõ¦¥•×÷sÂT¬$ÔÕÕe2ÿôÓOgÍšÕ÷™~Âápˆ¢øüóϧœª¾ ™¤ÅÁƒ—/_¾jÕ*·Ûýàƒ¦£ÞZÚÁyyy²,õÕW£G>½²³³ƒÁ`WW±çººº‚‚‚Sîÿ²6™ŠÔf'çt¹>(šÊçŒF£:Œ¨§*sö?=‘.ì'#LVÿžxäe\Æ×`RO_œßŽÛÞ|óÍÖÖÖX,6{öì[o½uÖ¬Yz½^­à>Gž——•üôXͨ©mþþõ;ÿ¸pÊ‹s!Ö~òš¨W"a‰7Joým?©ä€Ž;–z `×®]Ó¦MëééÙ¶mÛ¢E‹èdCCƒÉd"-M–åÝ»w/[¶L½$õLÿ1lذÒÒÒW_}õG?ú‘Á` í®2 HÂo¼QPP0}út šççç=z´µµ5÷qkiÓŠ¯½öÚc=f³ÙºººÒŠˆ™6¦îdøðáùùù7n\¸pa]]ÝÞ½{ï¸ãŽ>ÅEž+éõz½^osso>Faaá9u~¦Ÿ|òÉÔþoÔîÜ­Û’øá´YÝe:xÑÂëõŽ?^{&íßÛçI_uðcáqò—~FnÉ(}²ÅSÇ…‰*M¡Òlªç£òEã(NÇ”_Hb!±Câ^™æF£‹Eí%CJ'€îîî;vÿ9é DàÂáð AƒHŠS-{´_jý„ qI4éX–ÓIq™ç{Ky2­—ÄÁC‡è6Ȳœåtôê¯(„|ÌÏD l·¯£»£Ãûé‡BOàÿ¼ÏK‘ï]=Ì¢ˆ] »º±Ï?ôŽuÙÂfc þ¦žA2ÌG;r¤½ëðñº¯ä¨1ËÖs¨}½î¿náÅÁ[­ÖÇÏ™3gïÞÝ uu ^¸ð®;w6Œ«‚¨*åhoo?|øpmmí{ï½wäÈ‘C‡ʲ\^^~Ýu×UUUÙl6½^/‚^oDºâú³…‹JVUo(°', Q%à­?ºc×–g?qÅð‰_ØÖr¢Ñ’c⊨XòêXþÚï¿û”VTTTUUmݺõµ×^Óhnn¾í¶Û:::®ºêª©S{[é¼øâ‹£Fºï¾ûÔÖÖ2„Rû ©gúªªY¶lÙÌ™3N§ÛíþÕ¯~•´Ã´’°víÚQ£FMŸ>}âĉ………7Þx£Ûíž1cÆë¯¿>iÒ$ÊPL½µLƒñ‹_<úè£sæÌ1 ,xàú¿su'z½þé§Ÿ^ºtéªU«:::î¾û÷$\œzd&>§‚åM7Ýtv~TWW/Y²¤ï1UUUÚ—©=ñ.ã”øFÿž~«ÙÌÙÃåÏmÔZŠH$b4™ (Š"±,+I ˲‚Õëõ’¤°œ²V')Š¢0<Ë@Q†¸%Ã02½Tª_!U☂ ˜ŒúH<ž¸$=È2†ª§ ˆ½…ÃajiM/AÑh4+++‹1 ÓÓÓC"ŸÉdR“ùÈõ@$Q«@ˆžÚl¶žžõïŠ Çãq²þ …Bz½>Óäôˆh6Êt¤Ø.egR†¥ 4•ú­F´E‘d0:^„¢“åx\ÒóFYTxÞÐåï±YÍTàÜÛI\Çö„C ÃÄBa1³Ú-Ð!xž×éxY»âVNà¬6߉Hú`sSžÜ34+kF¬YŒ [Y[qÓÔ¡]ÝíÇZìkKc ž-2‚wÃBG[àhcG©57ß™µnçž±EC¯TŠÛ>=Üøùî®޹cûöÏ·w¿ÇóO¶|*IÒìÙ³?úÙgŸ 6Ìív2‰bv"ôÛ¶m ƒÿû¿ÿ»}ûö½{÷RÞn·?úè£C‡>}ºÍfcYV–ŽÓ«è\ðH\üT’Ë=WüñÅe0‘ÖŸüÇ]wÝðOG›@VÄ(GYeQþbû/“¨ä;ï¼£¯\¹’¦L™²qãÆP(”t `öìÙ“'OŽD"j¹ €çž{N=îÛˆÐÕÕ¥æj7°yóf:0êwRyyùo¼á÷ûM&“šÎ¨ÝUÚÚi¬Zµª÷YqÜ+¯¼B¿î¼óά¬¬L·–iðСCW¯^ÝÙÙi·Ûé ´1íÆÔ7nÜúõë;::‡š–‘´s-.¶\ÉñãÇ'—SAjeuuõÎ;Ïâ7â)y$€Ç\û’š _Æe\ä¸ü¹UAŽßê¿”k¨~Ïë`ô<Ï0 Çé€ab±(«7ˆ¢¨ãuŒ¢ö›&©‰$°¬,Ëb",û sд.—«µµÕb±0‰N6ДæÐæJRÞž¶ŒÚe[ ËÒÌj§íÒÝÝÝD%É:1‹E£QR:‘ °P&”h¢jQ¤ë Át“4†átŒŽQ¢¢ Æc²Â±2tGÂA²jîÓé$1f1ë…HÀÀñq—D67°z†a!jf¥“Ô}¸"3Â9À»}Ý—­Ç:L¹Ùc8}[k·.Æ^»#K‹²‡qÖÉ_5Ç[FZ² øÄ¶ÜéÊÍGPjqå™8ÝζͶ+ýím-åeeÝÝ=&“Ñ×Ö>eÊ”ñß¹ê™.+Ë)ÂUW] ¹¹¹¨¨ÈçóíÛ·ïóÏ?_³fßï?~ü8}³S‘ë”)Sn¾ùf³Ùìp8´?Ùs‹Jvw‰¬9&ŠJ<"*gäLýŸþúŸŠ¢ð<#DE’¥¸"‹ ÏgŸz:Çq*ÇÒ#‘Ï‘éÂp8¬ª•©gžþy³Ù|äÈ‘I“Ò×e‚ú#O»Ã´ú€Jµ3 íeœä” §ÜXNNNæ!\<Údxä9BuuuÒ™ŠŠŠqãÆP3{.ã2.ãR‡ÑhTUgl“Ñ… ’™ÞcEEE‘ ƒ †Ñs,E‘²,QâÃ0Š,3 ´î0jº!‘9†e¡È@úz b¤’(--=pà€Ùl&öFF¬vFhß‚-C˜Cœå'ºÚ¸Èp&n=¸ÿDI@lmhcÁìÜñyQQѤ …hì“Í_=eÊýT2DQòuÿàƒV­ZUWW×ÞÞÞÞÞNZ/Ã0wÞyçu×]7vìØ¼¼<í·9y9áÜÊ‹J>wÿ¿Œ¼ñERYV$Qx9ÎKb\‘$È$Y’Y–¤Xë‘OÏd¡Ÿþô§ä€Ó~ò“Ÿôqæºë®kjjZ½zuÚŒÆ ˆþÜÚ…ÅE•+™–Gz<ÕðhýúõçŽh¾÷Þ{Ú—•••+V¬8Gk]Æe\œ8ÿÙ™çÔ¸YÛRÅd0FC!£ÑÅÂpc}C Ç___ßÓÓÓèqfgßq×B†×szžJx°¬N–E€bÝ, êt:mËEQt,++Š …ã8HQ+!JÇ%%%¡PH2š!c µŠÍfSû¬¨ËQý1WòÍ¡:I<ä=©ê´[¿ßït:‰[«r#M«íòG¡mÕrˆäIi -õTëÇ!j³š³,VY‰ž@k{[a‘‹eÁ(r4â’Ë•OwÇó¼ q¾'¸wÿûYecXÎȲбHôãfy¬­þ³/B]“ç29‡uðiF;â¥Gjd˶~y‚m f 5å°yÃY†® ubKôš¼).{„íñ7uYGÛе[ÀA–ëë÷ó:È£¼{w™ô|—¡£¤¬ô³Ï¶Nú΄ü§ ((úôÓO@MMÍçŸ.I’×ëU«Î£Ñè­·ÞzË-·L:577—*î)9!‹‘¿ÒeU²µÙxV™0aÂÎpÅWdªû¾°8ó[;׸xôHŠYkϤ&ÉQ¾×š5kž|òÉþpJí˜SÆÁ´/+++O9ÿÇy.3ÿFϳÿ¨¬¬<í§}޶t&;éÿ6Nã’ÔkO{†³‚³øüÏäi|#p @«@fYDÂAVÁãËþí“>”âq^ÇÅ£1«ÅBÅÅ¢$½ÊóÃÊJðlBù“…‘$YÇ £ Ë""p¬šÚËr$ ŒNß—“N’ ˜››k4#‘ˆÑh¤fZ*¿WE gQ€[5ÜQcÜD%Iã¤\Fâ¾j+íh4JY’<ÏSt›LÈIþ$³Iíöh*Ò UCbT&“) ’%3m‰È#Ób6C’C‘8ÁfgÍv°–U¾Ü³7 ð³N§SÀf³Ùh ÆÝœé@íá¢!WôYNN†Ç%F‘ y|ÎP]þ&´±ãñ!¦Â<>8똥¯oäoƒõƒEI?€5÷È‘Öp¾#kxV$o°S·¿ëãC^…l€¹Ò5ÓëÛ×Ò•-`äqÉfÖs= X–e»ººb}ggg]cCGGGIIùæ>Ùµk×®Ý_ŸO-ÖVI¡Â2Ф€a ¸Œn‚Iyz½>??Ÿ’æI‰$-QIR"‰ØÑy5±Rmèºêu6ÙŒÔét&“‰œÀIÑ4jþ(‘NÕ¹F–e*'"GtJm¤yb±XmmíØ±c9Ž#©’Ä9ФGÂ1ΦçxËëc±È¶O77ü²­©AÒñÑpÄîÈQEŽçzƒ|6cÛ{x–Q É2Ã2œN§cÁ‚åăVŒðNA¿»ã#bË3–óá,H·ÓÑ):Ô-:L9#KÇvÌ{††’±X¾ÔÙæß·½½©Ì5B¶êôµuž9ìåÛzÜŠ½©'$ÊÌ•W—Då`ÑP(Àó¼ÝîXùúëÝ݃‡ˆ¢h2™"‘%äååÍž={̘1W_}õW\AOƒ,0U'yõçEnzÈgé“›€JÖl9pPë°w}}ƒí®Yßê ¾s‚çžÃ¬Y™±Ÿäʼn‹A›TT¬[·®†‘©°wÉ’%©ßpú~üñÇ“ŠuÒ~7kO677{<žSS7–t¾ºº:‰Ÿ%Eê½^oÒ&݂֋>ÓÝ©SÑ×üŠ+RI@ên«ªª’ 2´X³fͼyóúxwÍš5ç9 •y¤¾K·Ÿ–LŸrò¤Ÿ{ïz½Þyóæ¥ÒY:Ÿöù#óç³ïkÆdúÑ÷ós«D}™ú[‰ÓúK;ùé=À3‡Éh£È`DQdu ’l7[ŒL¼ž×éF£ŽQôÏÈŒÄq0 Èz“If†Jm V _JÍÍÍŠÆ€,D…7ôE&ˆüiYˆÛínkkX DŠ€«ª$;âˆêÒª#£N§3›ÍÁ`‰ÔF**g†Ú²,»ÿ~EQ E™©`\Z‚hE´N'Y©vTˆ#Šâ‘#GÞÿ}’'8oÞ¼¬¬,£Ñh³e1œÁbuèMf¿ÿDcã±¶£µbÃa»ÙØa8“Uz[8RäÝh4[áÂ):œ¬0¬Î¨È:FÇ2,bÁx¾i°!f·Šf…GÑiðÆf_ig™bÖ«œ£ÿÚõI8brKCËaÙ/ö ÂHC.α#ºm¬;Ü­kDn.ƒi'ZŠ»zŽËÝ_©Ÿxí8°L8aX.‰CmÍ-mz½‘~":Îb±Œ1búôé?øÁ,Ë AƒÔüÔP(D9¦DëÕBXªÊ{6>³}áÜjži¡;²ÏÁ„ Es™nþËS¯KKñæ›_¿üÙÏ@)k“&¡¬ eeÐë‘›Û{üë_gùûßãðát£Ï;Òn/ädŽ‹ WRíУâñÇ_²dÉš5kúŸ9~üøþ|%Ÿë➤/ѤµR…¥¤=§Æ.OCùëƒo©?~|<²ººº©ÖŸÊ÷³…~ø' çÕÕÕ}øU¥}&UUUýù|ž!úó£?mœÅ_±Óx€g¢$IRB·“°P”«¯¾ÚÄëKŽÅ\œŸå,ÎÍ)pÚKrszCë¡ÃÄxL Ëq™tD…UˆŠROgd™£~¯Ë²¬€Žå¸>ÜΓ* ‘èX!ij%D$ ¥©tF[X @Rd…Çq&“‰ãô‰ÌE…t5¿ßÿ¹wçÿüÏÿ¼T½bëömÁpÈ`àyž'bJ™”jíÐ8‹Å@”¥^ê"+F½Áj¶ÄãqŽïèèørïîã‡X™¸;ÛjÔ! 0 ŽF€Q¯6lè°aCrssM&KAa‘ÁdAÏìv;dze;oç;xKÈffmz½‘ç ²Â¢ÇeQÌu èôy¡þã¹ßxùmÛzÆÃ?üþñ{_þèGéÏ~óÜv>ø×_;ïĈÉÓþæ7¸õV¬Yƒ;îÀ¬YH4 ùî»ï¦^›icIo%}—WVVÞtÓMn·;u­êêê´!õ~býúõÚp´Ús*AT«²RK²Æa )鱨/I®K£~D[ZZú^']ò~ôýÿÜž§ý+vzHz€g­Á¸ŽÓPd‰N§c¡ïp8LcQ^Qa­&£Él`9Ëb G$V·wÁàA,£‹Äâ¼A/‰q#Ë* ‰DÌF3#Éöí3²\,1ê FÇqdz’$1à¡cs @Q ‰¬^O6ŠF½C…ØDû¨"›lÉGŒñæ›oZ­ÖH$B4‘’ðL&“ªz ‚ I’Ñh´Z­‚å8–ãØ¸ÄÃQ"jǬ;Þç¤x<¦ãôŠ¢€eôF>Šuv[Ú}±xÜ‘ãà œ,‹“•…N‘EriY‰(Ç•¸bàõá`ˆÈk^®+.+¢ !.éõF ÇÉ’$‹¢Ñh6š,‚ ¸r£]m‹gO×éty£=XF²ZŒb4Ä ’Ž *¦œÛš[‚1Á`æ-F ¥`0°œ5¢}oÇÅŒ¢o@žS‘‘á¬f+ %£¬ðV&jrröaNó]Çr0RŒ1‡ãºÖ®HùÉÇKb¬hÉÿ[¨[zt¬>((!CV}<ÊËm†˜C4†Ž„ö*‘æz˜î€ÙÒý‹gþ¿p<¢0 Ãèô/D£Þg˜!CM™4áÿüヲ,{<žX,Fîî¡Pˆè#õ1@fòHü1 vK׺žSœæÄ#éø£×ÿÒ¯¿>4v öÿÍßñu´¢§«uxëÛ;÷7ôqÕYÃ`òdؽ;ý–Å„ $øý½gŽÁ´ip80>‚Á¯O^}5rrpx7o½Õ{~ʨÿÌ͘?Î8úu˜8N'È|ùrìØù Qüz?sçâý÷ Åèѽ"Ÿ,cÒ$„B¸óN|úiškC!,\ˆü|üó?§¹Ç'ž€Çƒþö¾<<·Nå»çÜÊ}û[áž{ óïl–M:ÌÁÃÔu]DCÓuM, (4%–è¨Ú0ª­-æ¦À}8n3´:3lzÒPu­IDr Ú¯Ÿ:ÎõtrÇôŽ>èè'‡‡èþ>u—D¡]ƒ“:ˆ¥ƒ)Y§ÀBN44çy“’æ†ú… ¶´´ìß¿¿¿¿Æ ›7oþÆ7¾ñóŸÿ|ÿþýé·NÊ Ö†w¼. ΑJZ<ò§_»î§_».óñŒøó«ûæq=Éx(Ó’LFW9?ùó_O4ìµ×àþçôž›À!°a ŒÝ¡³|¦O‡™3O·|þópË-ÐÕ©d’lß{/Ìž ÝÝðÉOÂöíå ˧¯»»ÁÊž;¥ðÏÿ ßü&øý§­íýúÚ×àõ×atðZU¼ðÀöípâ¼ôÀ®] `·Cw7$“cŒý×…k¯…-[à‰'àØ±ì{¬¯‡gŸ…C‡`Ó&xë­±åÉmo+º»á«_…{ï…ÿüÏlI,ñ(…•+¡¢::àá‡á¢”Y°t“ãÛÅÃ$]î,…Y–-—ÊdÍ–«6›@öÞ‘Ek2ŠÆñøÍè·æè¹ {ýßÙÖý"Ïzgíg®r(—·ÕÒç€3ñ˜CNžuëÖY”Îú˜{.Y9²˜ýÊ•+ÏVåvþpÞbg»çèÝ‘.€`æìY €Ë&¹mRžÃQìv:œùNg¾Ó©§’v†yáÿ~ ²Be…!$r<¢@uÃî°ïÑo˜†bhjQQ¥¦•>#Fˆ¥,vÚ8àFV^¬:ÎcÃ0,—•ô‘çù¦¦¦p8 Š¢X%yR©T^ž¡ÓÑ0œÀStZæry0æA’${:‘äVà„ÐüùskTÕʇÃ1§Ó픉pÈÁãÒ¼â‚|ãó¼%UÕ ©TBÖS¥5åó¯Z˜J¥ MNGÁŒ‚K‡úzެ)/µa¬$¢ñÐ/ Æa)ªBˆÝewzD»×––”¼#˜ajs~çÛ{j CUJ©bèzÝ¬Ç IDAT"nç±Í)TÔÕ”T–Ú¶cLQ1Ô©eÌNuû^05ì$º!R¤ªº¦"f1!ŒIUNña» ÛÊb´dÄt„WRÈ{Ëð¿eFw©“Ô–°—ô9*GzL[lÇàà úêqí÷'M1x+D^Rž@Ðiý”¦êĨ€"ñÆÅK*|¥.É®Q]7ÿðàÞ;ÿ´é¹Ÿþtãï䑇ž|rCgg‡Ûí\¸pË"ë+)“ÂýžÃg7w<¶qï?zë‹¿ùÙG¶}ññüh÷c÷~çgû~ðÔÿú¿C?ýÍ‘ÿýݱ_mj›`’óvóòlÏè%³ßåvöæS å]”S-ži¤Zå“éŸþú¥Å·/3öÔ£Ýþ`¬ZÀ“Å·¾÷ß² ?ý)TWÑáSŸY†Y³NëÒ ‘€7ß„oB!X°¶mƒÕ«AQà7àÉ'Áå‚¥Kaút˜ uÓ˜3 ÁŸþW\qZ§8Ün(.~×ðÅ‹áë_xé%øÜç`ëV€-[àcûkŸÜ±÷ß–e°© öïÏÁÉØÁgÌ€}ûàÊ+Ç'·e̱ð/ÿ·Þzú:÷.öï‡à¹ç °n» ~ò“¬º¬òJZJŽIzzYþp ZîÜ—îš5kFm/¦»ä–-[, ÍèE×­[—QódxÆä ‘­­­›7o¶ £¹'ƒ\¥ÑxÆÐÜžYiÛ/•ÌZbÌß•+WŽflAªÑ/6kLIVg~Âg÷~ôç¶hVËyÿ‰M°ç„†=mޤ”…ÚúzA’ ò‹0ÃR]/Ìóš†îà1§54´÷õõ?þóï<~ÓÇW•55™ªÂJ¨éh(ü­ÿøC{[,¸ö` PãóaÄBx††U ³°¼œŠ‹1!$ÛívË7Ñ ‚æyÞ |«t!¥4???«²6Ïó¢(RJbt]Çã6›Í0 EQ,¥¦õ0‰]”LBMñ•¹=ΪŠêá¡ ?H$Ìüü<=•’ì"â¨=Ï %¥(*ÎwP¬¿½ýù}˜‰ …úO•zíf*1³©aÿžzŠFÃòîmoλê*ÇôfŒ‰X¨91_öT"i½Hgí:‰¢c¯+b‘.%‘G?1øÏŒÊòJz“iYTìšIò4O*•ª*¯âU>v,|ðèaW/?Çsí©áSZÚéëuy D"q&& ãq‹6‡˜ŸŠ©º¸=40­(Në1‡òN¨Ã~ݼªS‡ÊE‹’‘$eÓ84„SQ˜Q &Œ¨®â€Å€08]à1€C`/u—bIùʧ¿MõÿéÅg_Ûý†AtC5º:;ºº;=yîšêºk®½zÛk¯ ‚PXX¸oß¾¹sçbŒ% ÍwÂÞÏ ÅbÇ57Žá¼4&^ßÚ1ÞWçH%¯›ïܶ'ñÙG¶e>fÇ\ìí͵¶S + „ÿÚª„š¹ôÓ¿ùÑíK6öÈ{îO~òôõ¿ÿ;:tn2|øÃpë­0mŒ—EüÇ?†²2X¹úûOÓ¯;@×ÿjá­¯xG)8IOÊ1g€_ÿ}þç`É’q‡_w;¼ò üå/ð‹_ÀÈlÞ øÃD‹64œ¾3të·¿…?üR)8|V­Wž¬–ñn&N ÒÛ n÷_¹{NöÍËÇWÒ‚Å&[ÇI5’‹µk×Zª‘É0°1CJ/P»ñÞ©£µVJ ÌW›6m²’žgÙ²e¹“OB{^å¬y¡-Å-£²ÐO€,¬BDY˜5kÖ%¤’dóÉu=·d7úè'ÀEø‰1Ò9#Kß`ZSzº¢¦k¼Ýñ¡… öHv Tä9MÑ9ñ˜ñ—æye]í<ÑñŸë¾>‰Ì˜;7‘LžþWçH%ïZÒpÚ]r2a7¿|¾u±ö"@ ”QnÕˆ(Œ¬Ã2íÏnÜúÀšÏMžÉbÞ<˜¸ª¡ÃK–ÀwÀ§>»vËBAlÚ£c{‹‹!ƒx¬œYnÝ–’Y×O[·ÇœæÎ…#Gà»ß…U« +¿h®‡¸ËúüìgàrAq1,Z¿ø46f÷œ¤wùþý°z5> õõp㨠ϕ'«e¼ÉE–$ÖvPXÐÑeÙ‰Š.“¼’£ae7ܰaÃxns\d®pVÈR±XïÔÑNl°|ùòÑ,såÊ•YþaY„ãâÄ&_dL‰ðdð7yô—(ËXeTÞ‰º ˆÞô±?hÝ[ Ú€AŠ¢8D‰#Æãq„#EnPzº« :ì†B‚ ¸y.V ó Ü’ÍkwN©©J%ãÞ¢"Žå4Ã4Ìç{•å€"«º7¤S)›Ýïä‰Ä[mx'µUNƪL“é`eÌ ™Îªª ‚`e7M“ÅØ0 Žc)˜˜Ä( b öv4ˆÙzðPROƒf::Ò–<ÞÞRTöæ¥#éÄp¨>­«ýz$Ó´^Hßò\h*9I<þ847Ãw¾ÿú¯0g46·¾ßü&HD£àñÀÔ©àóÁ“OÂ}÷ÁSOÁþýp÷ݧÇÖÖÂÁƒ0w.|á `£1gÐ4èè€éÓáî»á‘G@UA’ ªj ¿FX¼¾ùM°Š4^=|ãU f0ÞØ\ × ååpô(ôô@"cÈòÙ-cÞH.r%™;**àé§áK_‚övع®Cr¹é&3í)Ø:VbçË™Jf)&7oÞ<Ú÷Ëò“[±bEÆÆmÝËèÌU\åfH±<Ì2»t!ØÆ$µ†à‚â’ýßFÇnŸny'¡·¥D ƒX–"ðÖTͽæÿÁƒ²i¤TÍ&Š&¥@(ƼÛíŒ$’Z<Ö\V~¬«»Ôér°¬iÒx šÂ7xË<5Uuy/v¾¼O•E˜¹…Wb ›)HV±§Ð;ç‘‘¡ÁyuªŒú‘ ÒYªAT(ÑÑ q›,‡òb€@ÔÍÄ`ºK°³IFÕtÐ#=ÚÑ”¦€©%ÌÑøYÐ 0ŒMdP¸p¤WÁ<[À1 êD2}>W¹‹Áª¨•ù)ްá>‘6§¨R(!üþG¿¹ó?ÿþê…×½µïmAⓉض×^½òCógNŸºsçNBH4L%bs[f¿¹óP(´öÿ±±±(ƒ1¦@ñ„.(.FŠòG´ùsøš”ÁTƒšùâÖÓa:¼Í3’Ù$º óÈ‘Ïíòȹûîœ7äåÁ÷¾Ÿý,|ìc0e <û,Üy'”–Ba!44ÀóÏ|ýëpß}°n|æ30gÎ_}%ÿéŸàóŸ‡GG…7ÞÀxŒÒiX¶ xXzè4'»çX½^~²B/†‡†|àúëá+_y—£¤…ñÆæâÆ¡ºJJ ¾>ñ øîwᦛ ¶6[žht ÇÜŠ3J"ðÌ3pÇð£ß_ùJÖˆËÇWríÚµ'”iiiyî¹çÆËW—«Ìí3g¯óˆ\wÉÑþ…Ö·Èx¼eÙ.³¬Û¹)6'“kýU†´µµõÒfÕ±uÄÇ Ìj¼ ç{VÈM›zV–ß‹vôà2ü‰M¹vGÓ4|º "!°,K(e€®ø»Oü÷Ñc1]+ÀXÖ ‘å(€"Ë¢T_^5̨«këé©*.N&Ó¥yyª¬zó¢×TTºD5Á^Ð\E>w}=0K)eeY’ì %Ô „bÌQC×­<á6i•+ES1ÆØŠ7 TS°ˆ @ˆ¦€©ìêlïìïîTÂ#±Áá¶Sb"Éûý;!©aÓ\^îS{Bò©ÞÚÆJ‹Îoœá?5ˆ$ÅŸ”G†zݨ¡È]¬Æ…‘@¼óH¿Ç¯¸T£ˆ­%¬ƒ˜‚KÇéëM¡”WicLâhWô}ÑÁiÎ+*ò¯ÌÃäTäD+œ(|¥¯ŽK¡ìÓY»ÌЇR';(ÏD’WºVðù(oÖ¡ðÛûãÉ+œµÓ¼å*e_ ½˜ŠÍâ§%MÉáœÕžØ»;2PY`gM·Ó6û/é\²P³•øÓ`k¾T.+ùÈQ1¨´õ˜CÁ´CƒD\ j¤ i»©)+ÌHÚ qˆ‰iqT †‰XŽš,`„‰£n<¶|ðU{+•Hj.Lé›Ò8Æ@ÿTÓWGªHR­bÙ6so-›Êº€MA›,‡Ü¢„á¤[,PUyøÀ›\èc —Üy÷]¿ýõïxÎ~óÍ+(ÀŸ·nåxiÚŒ¹‚Íý‘eËXŒ?ñww8NcK+Œ.B­íñp1¨ä°Œ‚2ÑMPLªQɽ-¶ž¸™/1y¬N@3@#Ô$À‰ãDÃ\((Èn‘ÆñTµÙ&;ƒÅáFƒãÆhœ$Îj¬Å#³dÈ>愹72II|¾ñF\V¾’V´• {Lón–Ú#cxͲ&[GëÒrÓ8Ÿ£í«;ާCÍ\gå3³Ï$q¾TSY$Þá¸c²ÉL€Ô…Ö\®Y³&k£2AW£…Ì2Á„7nÌÈ=͇zhöìÙ™‡Üòß8çùÏVò³"².ÕOì½"×Â=† ¾éÓ®áñî—^ê¦Ð%Šð˜cc̱ŒÀª6eNÃÐ0  ’$‰¢ˆ16hz}ËÜ¢–+@à)˨š* ¢®«,˲,Ë0XÓ̳€–e5Ñ)Ašbp'`VÄœ®©˜aEÓlkM½·§'‰wžh;°kÇUš=ÜÛÛÞq¤®¹2ß+.(öôz–M«7ƒq-EátëpÆuÖ° Rå±x¸\¨UúèÓŠæÛ¸^9ÕèêNR¹‹ç1v¶ö¡œHô¸j¥Û1ÏŸ:ÕÞ·mXmæ+*u¢î4T¡Ù1­K>©ú‡d[>_¨›öb‡§'yìð03Í]N0ï–æ“{h îWªAÓ^JúݬvHîvb) ÄG !¨RWuYð§Œ@,q 3z”´„¤0Ñ(IQP)e%  2uJxpbÊ»Á%‚- Š“)©”f`Í£Œ;ÊÙ¢8 Ï„¦ªDæ«$Ðg0Þl7MV“´DT.Æñ|J‚ß„.P˜w»aد±n_!ƒ‘˜iljæx1–HúJÊššš ƒttt ûGŠ‹Kjëš››­Ô¡–'ëiÅ6B—ŠGÂ{¤’·­h 9”p¶¸|t“F¹É4Ži;®1:·¼£æl§L"ò˜ÈâXÖŠ+V¬èëë{ñųTª¹ìÇÂhËõx‘¼¹4(×î|Ë-·¬^½º¢¢ÂZý<Æönذ!Ë÷Ί®¨¨°B§³ª³\ýS.Áµ¸ËxÕnrUwY©‚`2•!ϲžOkõÑ®ÀŒ}ïGVÏí$oáýÄÎ3&A"­.Ä$À²À±žæÆ+®çÀ¡Xw™’Ý ˆDGxDIðJO&9§ƒçyj•¡„g©Ã6wáÕbE`F'*fAà1X–5)]W–1M¤«:æL„e1¥³,AÀBˆ@T#Ã@"ÞúìïnÞlKN ÚqôX”]o®/vÝPè ¼}"¬Æf\ß2«²ÑN$ãZ0Lš¸ ªyùX¶ÈuURÚÁåÀˆáž)Þ«Ûî;;åàìâ)URç®HìΞc>Ou©c¡š®kSö÷hÑ9ŠÑœïs)UNÓÁóIM=q@t¤©/3„Š`Zî6zJ±¹$Å3½WV‡Ç!ùQ®©KßÛ£EŠy£%<¼?‹êí¦‹È{Òª¦Qƒ4ä´9‚3ÔHè,"„ è"Øxpò`3¨Y Eõ0-Š+… ÆŽ_ ¿Z)6ÌÂרM·Ì¦t3îãmý0Ü$àSEÞ¶^0JhX§É„·¤†¨jb8YÇ&íÌI# N¤©\²;14¤…†ªsle]Õs[6ažEqùòåñxü®»îjiiÉËËSE„LÍ!«ô6š #á…ÇÅÐJÀ7¿û0Àã[^>08úþÀ¢E—Z‚÷7._É11ñû5Ë:™•[&ÌbsÎ*´Ñ1×zè¡Ìû5‹ÿ÷z΢c2ÎܱV±™,#ï{)i3¬ ú,-”µŸhÅÉ`ïÞ½YÿjŸÕ¯^½ú Ÿû|¤µ‰ïýèÏê¹ç'vÉ@(° k:Ç2žÚZO‰ohïÁpÿ`$ìç1/˜CÀ †¦ªº®ëœÝ«!V v[žÏW^[m+/—x¬iÇó†i2 #+²Íæ`(C Saq„‘8‘2&0@ˆÁ0 @aXÐAUÑGŽnùÙ/ýñù9®<{4)°±°W–~(¨±ƒÁ€ÚÐýª[pÙò[uCz¾¯ËÔ'Ô‰"2À‡TR+NkÎ9¾©ÈÄÓ¥+ŒÛBmýFÌpå×V—µhþÎ^ãè¢pcií ®!É0o·Gƒ¡h·¤¶ŽÀþþt¬O‰ÍôðŒÌpb©»À»/¸/šŽØÒÈn/ð‹ž‘´R»òÓ…Q`©°Sî Ú€dœ>¢Å™‘‰'iv ÆB0(œPH!dPƒ19€¡ A¢1"ð>¨¨vMå [2¨j§‹³¼j~‰X$‹Ú~8X¡ùæHvCVº”*Á¬)—´“TX‘Ào3zêÇH““].èõ„ÉH*Í~dPMex (è¦×宩 ,9qéҥǎ;tèд)S5MC}éK_jhhÐu]E]×­Ìð–2ò=V}ï¸HTò<â·Ù› ~$»ÿaùÕ—Z–p~pùè#s_uÀJ?™Ûne8?£†fò•âr1&!˜¹41W ™kãÏ.WY8zH® ò½ÀÒTM2cüEÃd’Ø[<8·Ý*03Þã±nݺ³:ÙsÀÄÇ·|ùòÜ"Ý“{Æ£?Ûçv<\„ŸØ¥ËbS''CMa»½ä꫊㠚J«‰Dp` 42’N&e»cÌp˜‡Ëí)*pûÀåÊ0¦A0/j²,gRÊ‹6B:¥ 6I§€b ,C@ÕuEäXSÑ ‘x ô÷tví‡Øw¢Pƒ‘á¨ä* jPë)OõN÷ºi­]íëþ™žæZïµJ"Ò7<ˆÁ¬÷ÔøÄ|dx1èQ„»éˆ>œ¨óNõ’¤In÷”®ØÀQðÅ¢5lCiÁ|Mcèõ ÄÃñT³w†ì3ÜÅGb'w@34"9jÇu#ÉÀ?>^,Ûõ¸dgË@¢§Ž—aS¥¶0C5r«§ ꑼ¸KÞkaÖ`c(0’ z(2D 3Ž€Â2”j„˜œ!qàâs ¹¡ |NÆ­­ *klµåR…™Ö£¬ª›ØZ;p’ɇ”P-8›yO=eDFK›C.Ä…CÓÌÙ#©. ~B xE"Ãr«b¼Î±î€. ƒ¬Ý¡xòvûu!Ï;­iÑ’6OÓL–U©K÷|ê—•z‰çù… 𣒯¾uÂUé÷Úôxlð×/í·@<õÔSW_}ummíEïog/_I«’²e²OÕa¬‰q6lX³fMnÚ xçm=žÑ-kÎÜÛ &ù6µ°fÍš3f·tNY£Æ2—Keî댱/gûv·–Û¸qã‹/¾8¦¬åœU ÀÉoõ"éÚhI206l())Ébl+W®|ðÁ[ZZ²Jød vF±KKKG÷ÉÝí––JiîÃc•lmm Òà{±Þç² œ u÷@8Ñ›l¼‡Ë× ßUT&é1¹ÀH„A6{i±'ïj¿Ú¿)ÙÑœ´×»ë)çd½UfZ9¥†ä€Ç]•r»ÒŠ9¢öHê€C-tÒ⸉ÒÎd8Ñ?ëbqa‚D)T$/ÕÅ! !bÐÀT1˜!B€B&ç„"À”B—åååFBM¬bg©Ãæìëí›ÆM©óÔ‚L"‰a˜õ†»‚bžš%e%Øb“ åQŽ!:€&P%èˆØ“êad̪:©‡à@3'‰vì—ûûáXQEþŠx± IDATˆ’ïÚ… [2ç£qWRAâL`2M®¡®‘"PE’$°²Äó¼ø®†RË]òҸѿ{ÃÄÚ «,ò£ÿoŒß‹‘úÜÆ>½ýåÒU'šnʇöj¬úÌW­Zuÿý÷_3:¼ú{ “©®1ù.Äké½Kx^V¿˜ë^è-=[œ³<—d÷ΗïQøóøÜ^nÏÃ{•´\–e–e1Ï!@‰dÂasRj2V} À"”›d€B˜«`&™L¦6Ø×évpJ:⑵ç¿ù“ ýAY£~FRÓVdÓS¡|=UİñS#q¼¤ N|8xª²¬ŒQc3|U€á6ò’ D™‚!à’ ´äßgT#Æ)K曃{8`}®â*wùɾÎ>è´8Û3;Ÿ/EàöòžðÑðKÀ×çM§rÉ:FôTˆ*ÚIX§`ãö°'C½iÉìvº\2Æ%t2~L…ax^d%*“€ˆÈóqM‘DV6{BºŸ·*d4f)¦é"ðð ˜:P7‡ r Tû ¡€+!¢N /‚M)k$‚v¸ëð,q^±»$ýÀ©=-hvea¹Â(§†s 7:KòM2ÕîNwE Õàm,QóM.ýlì‘3§–ùÚO½1<î<ñõð¾",Íሡ{Sa:P feuyØa?èwí´Ã¡Pª²eúM·Î[üaìq&eXÆf³éº‰1¦&Á]7 !‚ €iRÓ49ŽÍ$%µÌÜçF%x|ã57.Ÿdµ›ïüôÙGÿßš·º`½š3oð÷“Vò™—÷5i5t¢©zÊWû·üþ›÷¯:óÈQ¸çž{V­ZµtéÒ¬ëÉãĉååå£yäè–|0S½àÜpnR½¯q9ûJ¾÷7ÓEHOsAç¿ W¿ÜèÂ9ËsÉoä½ð…?÷~É·ñ<±`Ðuçx‡Íi²¬‰  ÃP@1&1Mƒ2”bÌ0! @õÐÈ@4ìõÕ¶lþ]uEÑÔ¦jS•û÷¶ª{ûM^*#N‹]Uò°â8ÂCš'ÏõL+mK=Jy[a£ix šáH0Ñ•¾‚&;ã’5‡ËV6˜"Gÿ‘Z€ÒN»K¥®Â¢Ž´Ëó;ïk‰ÇÇÓ§"ÑpµË)¨HŨ½0Í Öľ®8-²M%z*fÈŠh†UAѤ<(i.pø’vÓ`ãÁx×€¡Ùœ ËCN)K¥:Fj‚†M-ÅVé2d:"ÂL@7!Éσ ˜¼l*^p¸Á['Ô¨F"lªÌ4IòSƒîiÕÊ”Ò¼Š”#z$±§…™ÒD«Bz°¸*Å^d“ ‘tB2ŸÊv-lò)NºµË§3‰4ˆÀñ<(ð2a]1Y‡cÂ%tQpË£Á)lÏ—ù8„Sé^ÓUóšƒñh›ß™N%“±©Ë–]sûÁ[Áð\,•´K6–cÒ²ÌK¢¦j‚ ¨ª*œeζþÌ`YIJ²B¶­ìñï‘~œ3Þ7TòÔ`Øp§éD“•x2ºkæ?·Š‡¶½uìº+²«ðe Ëò<ðöÛo/Y²äË_þò† Ž=Ú××·qãÆ›nº)sýì³Ï~éK_Z¹råÿøÇC‡ÍŸ?ݺu6› ¾ýío×××ßzë­™9wìØ±páÂÑ«Œnyâ‰'***>ñ‰OÀ}÷Ý·jÕªçŸ~ß¾}+W®¼ãŽ;|ðÁ®®®O}êS·ß~;ô÷÷¯_¿¾³³sþüùëׯ·Ùl£%|öÙg‡††²:XÓ®X±â¹çžóz½>úèhIž|òÉíÛ·E‹=ðÀÖŸ)÷Ýwߘ·6fç¡¡¡oûÛį]»vÕªU¹Û8¦äY;?44ôØc9r$??íÚµ7Þxã»$¯yW(èåã+ù>Àø— ° ÃZzG–ã1€†R`T-- ‚iP³Qƒ†IP†Å ƒ bR¢²œòÄO¾ùê‹¿ž?·vÖ”’å× CCûºŽì.,*ÖYÿuŸ™’îŽî|mhZá,òå9 Ëù¹!Iõ‰Ú?8ƒÀl±¡Š«©3  \qBÞ ïlâ:kìuE¶‰–VÙl./s$|êOê.{²Ä-6 |ù­!˜„b#"¤qSRðÛ¡m¾x°ÁUkêLÂΆˆ,{ìŽî®¦qƒ€ÉÉt”:ô‘Dw ú(5¥TF@E`¨BÂi Õ¨¦s,’Í4„0ÒYÀ ,è<0€¡,ãÞ‚ \ ðI`Š ¬j\ŒÓOüp/r^ãs™þCý'*„+ö¼ã©ÖZ1ov­Õß]F“]òjɈ1\†§ ®;zª N&aЈ ']LFºªª§iRÊ;îƒ)XMJôFÚ|t;°ªD ëB,ß—/u.1ÒÕWûÉÇ—. ñm=úÏ·˜sãM7~ñóåu¸¸‚"p¹Ö3`íæ `i"-LL/a& xQÉ—Þ:Tõ!Y34¤’©pÀ?(`Éí‚uOþ~*ùÃþð3ŸùÌwÞùÙÏ~ö–[n¹ûî»·mÛ¶jÕªn¸AÅíÛ·[×,Ë <ñÄ÷Þ{ïwÜñ裾ôÒK}\´hQ^&#¼ùæ›ëÖ­¯% º¬ÂÜßûÞ÷î¿ÿþÛo¿}Íš5ûöí»çž{R©Ô£>úñcü­o}ëúë¯ÿÞ÷¾÷Àüå/Y¾|ùh Y–Íí`MûãÿøþûïÏÊÍßúÖ·l6Ûm·ÝvóÍ7Ϙ1Ãê?æ­åv&„|ùË_v8O>ùdaa¡¢(cncmm혂e@)ýò—¿q˵MK?úà§fL»jqqI‰¦ –!Ì»óE!Êœvc€K£e<[\J*ùòÁñ¾Êr£Ü}¨‡/íO©iBEMDcþ5‹ÖÀG7Ûêw=õ§ÿþcWŽ9Ï'?ùI‹6UUUµ··×ÖÖbŒ‡ÅG_À=÷ÜsÝu×À7Þ¸gÏkà‚ FOÇc±Øè:¹-£ñéOú†n›ÍöéOzÁ‚ét:‘HXŒóàÁƒ÷Ýw_41c†•šÎf³e¤J§Ó¹¬iW¯^mM›…ŒY¼¾¾¾­­Í¢’ãÝZnçöööŽŽŽ'žx¢®®2œ8k}>ßx‚Y°æùÎw¾ãõz/^üÛßþvË–-ÍÍÍÉs©$¼Ÿu“V ÁYÅ|\þX¿~ýŠ+&6¶¶¶nÞ¼ù²ÈÛ÷ÞÁßäÓx°ÂæÞ·û£a"Ñ Â°‹1躎9¢T »KŠ?ð…g½Åë‚[o­·;ˆ&];oç»yýàû/®½÷Êâbçk[·Þv—ïÀî‘þÄ~û’¡ž}]}ǽæ,µ¿!ß~•!L‘¼³»#ÃiH'„;ÜœÓæñ¨w© ØãÛ¢Û*QWž§äTÖ«>2Xxõ´níì;‘ßX¾Ñ?ìÚ,¿åº,©®(Ê+,2ËÛ‰a°!Q„(ÊÎçs)µŒg‹KI%'v³õ@kuË0£:¼s^:õË?཮0|«ý¥¼RÛsÛ9•¬¬¬´.&S›2£I®®®~Ã*ŸƒÝ»wg‘ËÜ–ÑÈðT„×ë…QZè†ñÈ#XsÉè Æ©7³uëÖ×^{M–åÎÎÎÑ\sÌ[Ëíì÷û†™9sfÖ´YÛxFɇ‡‡G&4²©©)”:¦ä—³¯ädpV/o‹~MÌÒ.9Ekmm}衇V¬X1q·Í›7oÙ²å*yYá*iaíÚµK>”< !”"„XB!„ç1¥:Ã(»ßø}ûñ×ÓÑŽŸÿ×§º÷ò‚¬š±ÄŸúÅî/üã5†¦Íka·¿¶[Óà_à°{û{ÆÕ3ñÕÖÌ©]´û•!ÜÇíøËr²Æ•?%ìEQÃèKaA1õx‰R™$b¢Jª?Ãý´WŠ8C ¦£:#ý"IS¦&‹ã(PM †¦ñ€€<`Uˆ›`=QN ˆpC•§\Xxй§èˆÉ‰„‘ôAQmq}ž;ïPÇ 0Õ9§Î; kl,<´ê¯÷-(âœ,2Nv/€©µž†j¾¤·§»¼Í\I‚ý#=`Ô³¢¤D:BGË€°ñA”/tGÛM°#ŒPOÖàkl†?ŧ»Ì]U :èãáúÜ\¾®tSÃÁ&{2;LªÅÕ ~–U5` %¸˜¦EuJ‚(–dµNj^TêšQy¬ðÍ ¸ÞT*%8ùf1oîܬþêH‚.Z²LG1ÃPQ,Ëš„š†ÎâKV>û¼à}`à~æÅýΚñDüÆ©÷û\•ù\i"€ÝÇ^% ÕtÖ~tãÖÖÜ8É G'ó3±gOOO®íØÂŽ;>úÑNÜ2Ix<Ã0¾ûÝïŽ)áÆD{{ûºuë~ó›ßTTTÜ{ï½cöÉÜÚ˜‹ŠŠ!Ó§O?7É-äåå%“ÉH$b±çžžßø%áý¬<7œ‘¥mÞ¼ù¡‡º„mãÆ“©°¼eË–Ë¢*Ýøï†¥’¼hÅÍ/B’$QJeU‘DLAKÇÉàÐÿ=ý]¯7Ü~Ý‚™¯¾ø«{ÿñâÝ%†^y%^R¯¾²§ ˆ]¶dq4ÝòÂ[>¶kùÊ›ç.¡ûw;ûû“¯oûÕôi×ô‡½Íµ÷SŽVÅ€pˆ—!,Q!4Lxˆ” aìNp©`R :hv ` Î4(,`ä׊U§”Ãn°ù ¢Š*@’\Ä¡ìÞ¿/Íc< éeÞ^­/˜ ÈW_™ïðôžêI›ÉZO]ƒ»–²¸#ÒÄ5°°¹¬¡?Úr¸íJ¶®ÎSZ¨9M-u\>ÔktÖCCË §ö…Ý‚¦”N “íp°\62¬ãÚl@ò]fŒ=Ü `“Pzppo wiÝ'a×(v‰(D‡ŽÂ®9àãÝiÖ¦#±ëlJבƒ Ê((ŒæpO2TÅAM£7ÎK[÷µÍúHeÓ5óG“ÿõüî’ë[®^r ÃJ ®]”"zÓŒél3aL0` C×Q4Á4ˆÎ€È"†eÐ;µ5³Oüâ?fç†÷•ÜÑýÒ´«ýÑ`tËÞ_ÜqÕ—Ê ê àoß 7Ü`Í‹‹‹»ºº†‡‡Óéô·6fgkŧŸ~ú«_ýªÓéŒD"c*Ç,#Isssqqñ /¼pÇwôôô:tèïþîï&Þ¿_I+/É%ÉÈsݸqã_Óoë1qYo&"g;ùYõ…ãbÎ6zÎINhU÷þ[ÒJZi_B »$¨ŠÚúòï~ý‹7Öy»ÚÝpý̾ÞS7¯üð¯~ýªÃ ]yÃ]wÏesÇæM{Ê*¡·okEiyÿ<ÿgøÍŸ¶Þ¼Žr>Á8lzõYA5ÍhP`ae©XÂð:Iär#¶‰â°¢2€k¡Ú#¹g¿`ˆDÊÜÕ6ΛLhi5É7«b¾©h ™S<­Ž©)áò¼,ÄÔè©TЮe…æŽxô¤™ì ôÌóÌ\ˆçåqžðPÀm2MP[o«A |0|<‘ò®.sæ÷µ—éñ@òæcYeØôpº§Ýx£Šª„“{ûÂoy U’¯꩞xŸ# Þ9 tõE¢ÐS …vÑ<âïJA ’kvñ±‰½ÍR-Ãv§ ¥+Ùê…”SDºïŽ 0èuÙÁH+v|_5ÿ`ÚVh µç…/þøãÚÞ€ým»‡‚ýºJ”„.‡5{Qïg×==™ ­¸wß}wÖ5 ÞvÛm+W®,..¾úêÓ¥t~øÃfö;v¬¡¡çùÌl¹-“‡U³oß¾¥K—Þzë­>š‘j¼Yøãÿ¸cǸâŠ+JKK—,Y²~ýúÅ‹ÿò—¿lkkïÖÆì̲ìüÇœ8qbÅŠK–,¯$Úx‚e$áyþ±Ç{æ™gn¾ùæ;ï¼óöÛoÏŠy–nòì6ñrÂÚµkBóæÍ›7oÞx˜­zÁ0oÞ<+Xn‚ëõë×[É«Ñ;s*k¡Ñ‹ž±ÆŒÕóŒ72I éÆs³šotii„PF¼ÖÖV„И[´qãÆÑ{b}Ì|»víÚñä?·å&ƒÌöZG6ñ&[F÷Ÿ`]ëîæÂÄe`Ö¯_ŸéšXi=™§Ñ¦M›FËð+YOøhLÐ9s×ßÑè{™Ì½À–-[Þ§&~:¦z €RÀ˜¦ˆèƒ|î©çþðÓ†¦üd:pÕÂe/¿r¼³Ÿ}a{xó«ð“ÿÏýÓ_n\öËï?±gï1øþÃwB¾ðo½›¶ÂPL o¾oïw4L…òr˜=µ¬ÆV6 šïb?öïêO‰7Ý€§Ì‡šOÂGÿ¥ìÞ/4®ž¥4Þ ûç}_«¼÷¾âO~Ä~å•dæM°øï‹WßV¾ªN­ø,ûlÑÝWð5UIaÌX&ÌoQ +Ò¦¬Üã‰qq,,3XÁŒø•Ã]ÁV±j)¿Öë•GúÂécE`Ôyy"÷ ¿Ö‡¸š¼÷¾ÞEwµˆŽkPÉ¡Cé—Û"Äk<˜e»‡Â¯«p¬ÆÍF¡³=þF ŽV :º†c;zõ·LèÍwuµ­›ìw0†Ó¹­"ù\Ÿ)žN¾IáÈÔÖ.RZg·ÙæsrÔ1¬Ø†ûÉ à,ÔqÚ›g$QÞU3*»\â_Ôx¯9̪©ùYgϦ ™×]ûߘzÓç~ð̫ׯ\]3¥%­!YNÙm"B ¢À"&¥È¥ Æ,b€P]ÑUMg0âmü»ÏúWA<\îZI\pB§Q=EU'€Âòð?ÿ®»nú§®Á6 ÔHDFD#Ä ûßúÀÝ£Çþþ÷¿Ï\?õÔSÖÅUW]õ /¤R©¬kX¾|ù‚ dY΄›Àã?ž¹ž8 …H$’ñ-ÀöíÛ­ Q3Õöjkkõ«_E£QI’2¥³Ãèià7¿ùÍé½Âøg?ûY<·ä¿óÎ;Ýn÷x·6^çÆÆÆ?üáápØåraŒÇÛÆ1ËH³fÍÚ²eK(òx<™Y’gð~÷•+öÈú'à–[nY»ví˜o²LQé 6X$,—Š­X±bhhhãÆg,l-jU‡Û¸q£åöÞß 7nœÌ$k.Gk¶þ&É|œ@½d5fЦX(#ÏÅTÎm¹ÉÀª[c ·Xþ²eËrËNf`m‹%ðÚµk­Csõ¢¢¢LÏÖÖV«óx‡n-é?f• &ù4Z=o¹å–5kÖXëZOQIIÉ9;WÌ›7ϪˆcˆEþ&x’­>kÖ¬Y¾|ù˜Um¬êS™ß´iÓè¿ÆÄ¦M›&Swçý–e!ÒuùÏ[_xù…ßøûÚŽì…OÝ5ïëÿ¾%•Ê(3ç)…Γ`wÀ¬YÞž®H±Ï;c6r:¤%‹?ü‹§ŸB"ÜvsÃ5³ê»B'zï¼w0:un¥áN$;ƒÃ}+¯žµùÐán™ž Ò«VÿåmW/»ù–ýøÇ‹ªnºùãéDÚáv˜Hýÿìw\TWöÀÏ+S¡Wi‚Šb—Ä‚‚k ¢&[L]7ÑD&?MÔ&jdcŒ»k‹±­5beI¬˜ T”*H—:3Lå÷Ç3/“afÅîý~üìçÎóÎ=÷ò>;'çž{®X&K­Ak/µÓiT„€¤¥hZ*ë)†$qÊ@a. XÀ–ÖëõQûŽJ¶uWRÞHáRE± ÅbRâ$Ü÷Ó¿X–0JI±4CX†b—‡«’$y˸ ÀʵZÍG+[ö$''K¥Ò¢¢¢þýÍŸ²„“““ Í Xw5€…©Y6©d‰‡æêêj‹ž W2,,Œÿõ:uª•3Þƒ´ây{{ƒ Þñ ÜµÎÖ½À‡ú¦`ó¶õC#—œwË-©S§8Ç‚ûÈý¯¥ÅáB^þÔ©S¼¿eå.ÇÇÎŒ—‚óç²²²¬¸’K—.åÜ´i÷G±t·±ýÖ/¿^¾|¹ñeŒÖ}}Û߯+V„ÝÎ]°ùØG©¸·‚ÍÂÂÂ>|ø1†kËà8Žá8MÓz=ÕØ ðr·{çÝ· n^óó÷οS0(º‚<~B IDATS^^fdÿN¾¾ÂÀŽb)¿‘‘QSa}A*©]—ü_­^‹ñ=¨¡±öÿ¦ ièäzûP‘2<ÎÝ-Юž¾^sµj= ðöQÊÒ{7Šáž€§ƒH&V)ÕuÕòÚZh²ŸÒO*R••\fᾯÐC,¬.(½ä à… =ìäÍu÷0!Èõ5ePГèíéB74ç*m.éItï-6gŸk‚’¢7i}Ca¦&·#ôíbh.+h¸B@½Dìãl¯–ç7¨îײª$˜} ³Hš+ë«5urÐzz:«››jäNž2™“£\§Ï.)ÑK wOO¡CiMM=@pçŠÓnå‰í Kx¿¬ÒòrE­gG·A~9wKJÊë~f¡V¥üõZiƒ’.¡ glÔ€—û2 Õ+¤wðþµj½ŽÞ½º{zz:»º1€1,& 1̨âãç 7vñŒŠûং-±àõYJpâ\L“ÿ5°4ÔÓ ­»’{æä3%<<¼•úôécéÜ÷ó¥õS{6¼±É[JñÙ¹äüÑS§Nùùùedd$$$Ü¿Ÿ‹ZY‚‹/Œä|‘Í›7WVVZå>Þp)·c;bÄn›Û–dSáÒ“’’z÷îÍÇ/­È?½ÿDáÓÁ9Úi<ƒ[C[‚—mÓc ,CÓ4Mëõ´ÄÞqÙʯ._8õåËü½;ìØw¡cG’…tí¥T7útèTSU²beæ„·ü\C¥·ïäeþv3¨#øy{„…E¤üvâhU'ÏîÅgë1Ö/ïL4±õ7*µuý\|YŒ2ŠòênjAéNžÎž´°ñ®²¢VM5ƒÞ Ü»u¤dAÉÏJ¸, »7]¡ ª“ ƒ‹T*d5JeqÃ=Ø—ÅÞîv}·PS¥Ìœ::yÐxãµ{¿8AC¨“m§½Qq•Æ \ý}œkïß,Se3Pþ’ÈËÙQTª,¢„l“¦®Q ÅžnrŠ4õ%ú/¢!§®T&";‡‡¨%D©ºSRfßÕ#YMò »t ”ú¸598û-ËÞîG°ß%êçšû÷TÐS…˯Üñ ébâýÑÿ,)»'ÅôæÝWcºtëéßÁOÑØ(ss h#„à çœá8Ž, î–¸ùc'œ7ÉþÉ47?èùݵååxhšgO;p%M8pöš’­Á4ŽïŒxõáÒˆöÀ +Ù¨ªªj¥Àí„ÚràÆ–È%ãã—ÜG.‘ÑʳIII3gÎZ·¯þN¬c^yù½æ;N€up··—J Ôwï×6b"Ú U»98Ø1£Ê®¹ `ObÞ½;:ÐÒšæŠûòêj(ïéÞ™Ö):ÖÕ.ÐO(±·Ó© êœê» `ðùÛ;a5õwË µ5@¹I]}êkKåµÔù{8i455åµ ôyxyU5—–«îŠd*gGAå×”VÓêFÊàèìг{¸ˆ€›EEY5õ ³+¥éžŽR5¥Â1{¯r²|CCúÆÄvÕêµ:JLˆ^íÜå^]-Ã0ÊÑÅYÚ«¹Yqíö ;'×þïÎ|«GÏúÊÊÀà@ç¾½Ã#p¡AE½££#áÀ’„ B‘V«`0À1 cXÀ€aǰ\¬Ç8šøg©Vy~f÷»9o’ÿʬÌÓ¦¹’?_)ù×8K yå¾Ó×ÇÇ÷µ"¼sçÎW_}5((è™™÷Bò –ñ0ÉmÅ>Yý]¶l™™;v´þÀ ϰaøçrÞ'çœ=Ô)46lØèѣìïð>Þp\¼ÓRj YÇÈvz኱a|³b\°ö‰;I\Š­í®¤õå6lØÌ™3=?î/òدzˉ[ܾÀª„B!Ã0,Ф‹¥ƒ2Àˆ„ñ#Æ56ÉqL Q+;†ôkj(‹4B·BÀãîýA~™·÷?}.£ _ÑÉ˃¬‘2ÝÉ`Q }vÅÍ‚ÆÊ ¦F XWŸÍ=R`Ÿ^{Í÷`u”³=é®Ñ{i›õ¬;æ-K;øßonª—h¯Ö\ –z:KdØý¦û÷]H’°Sª¤Ò‚ºò’æF=hqû`oO¥¿R}]02W{/û‹ÅçkéÒ—<‚ìXöjc k`½ÀñUß°î4Ý»+/ˆI??·R½=릋³“§Kµ^­pr8qíj@HçKåõÃÇŽŠzm¨‹£Óþ»1ÏO_Ï#72¢¦$%ýí±Ì ì+ʽ<Ã^f@Ù¬T)”^>>þ^^÷JKEvöA]C›UÍööRÀ– U:½˜$†q”9«ÔÍ"‘„ ÀÀ²„§p–8‹éô:!Ápc£i–¦iÃ?QúçP"ç+bFÿû§îqG7‘´‚¥,I³Âœ‹ùlÜÊvæJVj‹}¤´¡„RÝU&€5WòèÑ£OÃJHHØ»w¯D"iÙóÉ'Ÿ͘1ã‰ú¼xzËhÌ‹”+iîguÅŠ\ÇÏϯåíÈ‘#—/_μµâ‹pA¸°°°²²²+VÀòʖ/_fõˆ÷‘#GšdÆÅùlñi¸MFn»™ëá"Ž}–óx‡€×cÝ#y¼á¸,ìƒò²ê¾={ß¼ÕÍËw×ê „šÑשdþ)9¿4ƒ¾ši‘“sAe¡h˜ÎR;%Ž–ÜËœ«…´ŠeöÅű½ƒ‡‹Ôιæ~£Ô^˜VðEèúôë[u/zÐàÎî¾ù7ŠDuúJ¯a)¯ð—*óq©›]çWú’.Ž!³g•Wׂ¢ÉÙQ&óòDr=­{Þ}DB‰ÃÃhëå„ï öðóÅp±ÖÀ)ö¤¤$˲ƒ %vwŠ€À^} |Ü„BR®ÒJíì)–¢hZH%B‘N£fXJ,K$v†Ó,ƒ€c8ÃR¥†H cYÇ1ÇŸKýp>-’»6O”#—‘ÿˆŽÝ˜gï™k!zŠ¥ Œ^gPyÉ?þæÐª¹cIÉŒ3ÆŒÃ]?mܶ‚‚___c?Ò¸gÉ’%|í›Çãñ¬zh¿±É–?]ÖÌ>¼bÅ .ëÎìovXXØÒ¥K—/_Îý4Z9¶|êÔ)®`BB_`ÈŠÖãsaaaM2³1rÉ‘””d¼oËðÐã#œmlêÒ¥K³³³ê"<ÆpÖur–,_¾|ùòåÜ Ïœ9ó¡Ûµ|¥ž¤¤$+²k׮͜9“ ¸Ž1‚K—´$œ`üÚp’lœ‘õCN×®]ãjñY¹sá¡nRœ6î5¶rÜŸ³0##£²²rÉ’% V~Â)ÂÚ¾À0‚e €€Á` (J"è´¡P¤ViE"–¡@ȰI8vªµ´›gÊà2yÊl–6`„ ±¡ñí©ºÂ¬Â¯€ªâ{#ý|Ó³3»wìèîí¡jj´srfX`€% ¬ßàW5ÍÛ¿¾´Â…4ª׿¦ý–æ#¯-**ÊoRDM˜ Á°ø¡é©?zß-b <  cc­<$ ¤èN¾ƒ”pqq ìd.9·sG‡55T;8KIÙ±o_hj–åúzù565‰\d½roÙÉì\CÕë ¬P,VÕ7Ú¹ºTÍ™L£Q‰ììYŠa æäë% ðcu”A(À(ŠaXJ(Â¥§t4‹h gp–ÄDbÇX{1†aƒ H¡^«‰D8R‘Ã2:–&D€`ƒAÇP´T"ÀYch£h Ãø‘CÓ4-´¨*máõ´¼þH¯7±-¤Kbÿ·f“õo®jôÊÌüxœÉª´ýíV>[RÙp©ä²G€ÞÀèÕyssýÄ^ó2 rô ‡Á¡f3fLRRÒÅ‹ûí·¸¸¸ùóçoÚ´iÇŽ2™L*•:tçÎ\ûàÁƒ~øaBBÂÑ£GsrrÂÃ×.]*•J`Íš5:uJLLäÕ~ÿý÷b±x„ f{’““ýüüÞxã ˜3gΘ1c~üñÇÌÌÌ„„„·ÞzkÉ’%ÅÅÅo¿ýöøñã ¼¼|Ù²e………áááË–-“J¥Æ5Œr?Òƒ‹¿ÚÍiˆŠŠêÞ½»±ÎË—/›T—4î©««“Ëå\»¢¢âÿøG||üš5k¶oß¾`Á‚É“'/X°`Ó¦MEÀêÕ«£££;¦ÑhΞ= Ær—ʘpj7lØ0vìXΫ3ÆÏÏoõêÕûöí;þüÍ›7yy³Sk)Ì0ÌüùóU*Õ–-[~øá‡¨¨(³ËhÖrcX–?¾§§gJJʬY³–/_ÎÝ»Ã[n"ßÞï¹yà’Ì¬ß ¿ï2#?ñÌàò¸a|~³o _ô…„»S ÇI©TÊ]‚%Š#RÈŽa†"‘ˆÅ@(–’‘$. AŠR„á$ )`&"vb I`!D" ˜T, q!$0R( 0@ @ ±€NÁ]zõróõ‘¹º!œ¡´—N)ÇíE Ì@D€½Øã`@ ÆA"$…R( " $„X& p!bA¤P*–8Ë #8)$pÎû$I’$E!‰ã‚ %!À#p¡PHáb±ÇI@$D‰ D"‰P,ÀqœÄÃ’ I‘$I …b ’„‚Ä ±P„a†“€8!ØI ‚À±•~¸ÅÇq¬ø‘`­|^<Ï î3Y•–¾2 X¦ç” }ÊU:5Ãjµ:e“¼&)j\ºu\Úé×džLe¾*ø„ ¸€b@@@^^^PPI’ööö\ nã6̘1cðàÁ0dÈ«W¯rFFF+T(r¹Ü¸*GËc¦M›R©tÚ´i‘‘‘jµZ©TrW`gggÏ™3§©©©gÏžÜR©”·J­V·àÔN:•Sk¿-Þ©S§;wîôìÙÓÊÔZ çåååççoܸ‘«CÉ07YF///K†qpzÖ®]ëìì{àÀ'NtíÚ•·üçŒBËÿwr%Û,¶ÄŸài_ÂFŒ³T­ä XÙ—Aá"A¦QX㿲*2ëq˜wCZi!gìPá,gf*lÆËi©Ù{¸¯l=cÆÇ_~7Ï‚N³ ÕnmmçéJÚ¾Áš•Vëì;;÷=]²»¾¦Öy°{mS啼Ó.>ÒÃv[r%ýýý¹†•;lxø /]ºdV&==ÝĹlÙc ï§bæìì \¶,deeQõùçŸs[:£VÜÜÜÌ—ššzîÜ9FSXXhìkšZKáššÇ{õêe¢Ödjyuuµ½½=ŸRŸNµd9´ç\ÉçÂÜÚ›ÏØ¢x¤u^ÔÝÕçˆíŘÐˉ@ÑØ*³Æj`ÿþýÖŠ$·mÛ¦P(8û'Nœèèèhij–„»té’’’ÒÐÐ “ÉH’´´Œf ã-€Þ½{Ÿ8q¢¾¾ÞÉɉ/´ib¹ (W@ ˆvG[w%å.ÕQkÐP,)&%NÂ}?ý‹eY£”K3´e(V p±Q'I’¼eÜ@`倎Z­6)dÜ“œœ,•J‹ŠŠú÷7ÈNNNV,4+`ÞY4Ö¦fI˜?-d‡æêêj‹”+‰@ D;¥­»’_½» 4î,K³,ð4EëŒA@S–¦š¡–ahZW]”Öš-ZÄUÀ±Â¼yó¬ô¼öÚk)))­±ä‰cËÔž/(‰@ D;¥­»’{æä3%<<¼•úôécéÜ÷ó¥õS{ º’@´GÚú±›–8{í»ŸÜv¢U1HDãF ¢ÝÑÎ\ÉŸ¯Èükü»ƒ+÷¾n]xçÎÜ-+´…UâÏn£=n@ ÚíÌ•¬Ô ¤4ÍPB©®H•i]øèÑ£åååOÃŒ„„Fc½§½ðôVÉvP<@ ˆvÊóq%wŸÉ8x<úççwŸÉ°ý©½g®yè)–20zAåT÷ñ7֊˘eÆŒ§OŸnÙ¶‚‚___‰Db¥ñ¨ º’@´Gžƒ+¹ûLÆù«îG9Ui£7YRÙ@9T@o`t­B¡¨ŸÔsΨ¡¾ç¯äZyJ£Ñ,^¼xèСÉÉɰiÓ¦[·n­[·.11qãÆ|›¦é9sæœ={vîܹÑÑÑ‹-⯊Y³fMJJбN+Õ%çÍ›wõêUÐëõo¼ñÆÅ‹€a˜·ß~{îܹñ•I¤sË–-“&MŠ‹‹[±bå£%ËÍ WUU}øá‡111C‡å«<𬔗—OŸ>}ðàÁ .4¾5‡§ªªêý÷ߎŽ;vljj*oIjjêìÙ³/^ ÷îÝ{çwbbb–.]º`Á^Ì(6‰@ D»ã9¸’œ¹õÓÁ[?Ì}œþùyþŸ¥§N_Éqó×è)ŽR4«jk*E¤ÄQö[ L®_¿>,,lݺu‡*..ž¬ZµªcÇŽG5jTff¦¥‹åJ"Ñnis¹’g²*ÏdUšt¦ç” }ÊUº&¡A¥®k’W'E-€K·ŽK;ßy,Ý’¶ &$&&†††äååI¥R’$ííí]\\ŒÛœðŒ31dÈ.L‘‘‘!!!¼B…B!—ËùûlLz"""~ûí7øõ×_ÇŒ“‘‘—.]8pàã}e2øøø:8;;wêÔ‰¿Ñ’å-…óòòòóó“’’‚ƒƒe2™‡‡‡ÙUR«ÕÙÙÙáááMMM={öäì1†ÓóÎ;ï8;;ÇÆÆ†††òwKN:5&&ÆÅÅE¥ReffNŸ>ÝÁÁ!,,,88˜¿ÛJ¡P˜(DñH@ Ú)Ï¡®äàp.Éœfý‘Ô¬ŒÀ°j\gßÙ¹ïé’Ýõ5µÎƒÝk›*¯ävñ‘¾°{Ê(óÌøûûs +wØðð^ºtɬLzzzdd¤¥ž°°°âââÆÆÆôôô7?~¼¡¡áâÅ‹k×®uuu}Œ¯L×!5õܹs¦°°0&&ƺå-…kjjpïÕ«—õUÊÊÊ¢(êóÏ?ç:ýfŽêêj{{{îcHHHUU×vssã7nÜ‹ÅÞÞÞf×°e'ª+‰@ D{ä9¸’“â¤KÚâGî=uݡ㠹R1$t®—ÌßUà£TÉ =÷g†JG;ÝX¹9uqÒ àMÚ<¥¥¥–Ч¥¥ >ÜR]hhè±cÇììì\\\úöí{âÄ š¦9_íñ¾âÉËË[ºtéþýûýüüfÏžmÖ<Þr³Â Ãäçç÷èÑÃÊú899Q•œœìîînVÀÅÅ¥¹¹¹±±‘Û˜.--õòò2‘éÒ¥‹J¥jhhpqqa¦¹¹ÙxÅÀÁ·¥Ztç @ íŽç³Á=).lÜÈ.[?üP?Òîž:Ö(ÔU'®mWk•¾nÁÝúÀÑK»(šÕ¨iXwñê?mÚÛÛûîÝ»-Û™™É²¬\.OOOˆˆà:ËÊÊêêê¸6Ã0YYY}ûöåiÙ±}ûvîÎK/½ôý÷ßóûÔ÷Õž={¸lźº:™LæééY\\\]]m|¦¥åf…CBBvíÚÕÔÔDÓ4?/8±;vèt:àsyKºvíêééyòäI–eKJJrrr d¢ÄÅÅ¥K—._~ùåÅ‹—,YÒØØˆã8¿b&­ɕÄâéð¨ÿw„@üoÒær%MX¶ùÇ€ðl5]­ek3JO~°alÖ+pýNzU]¹AÇh•MƒÞÎãÞô¥»lQ˜päȑɓ'›´ ²²rܸq žžžüÁšõë×󉀹¹¹;w …¼¶–=áááJ¥’w •J%ï>ÞWGMKK€ˆˆŸ¸¸¸eË–ÅÆÆîÞ½›O—li¹Ya‚ ¾üòË‚‚‚‘#GÆÅÅ9rÄì±zõêÌÌÌøøøÄÄÄ%K–˜X" ¿øâ‹½{÷¾þúë'N?~¼É‘vŽ¿ÿýï:î?ÿùÏ!CÜÝÝÅb1¿b&’(W@ ˆv ök6Yq¿ñ+?JjùÕ™¬Ê¸>>7°Ï®HY‡ù6èµB/¯ÑÕ—«*Ô“†¾W\yçúÝó")‰ãÆt4¦ IDAT£gŠ)ËdüœmËÐE©T*GGGãö˜1cæÎ©Ñhd2™Ù7nÜèáᑘ˜h¥çi£P(8óär97+–·æhhhÉd$ùô†¦¦&‰DÂ'b¶¤¾¾ÞÉɉ ëzãââvïÞÝ¥KnÅ2Šê¸7Ê89Ò8WríÖƒ5Ú.3&†;´×컇@ ¢5,þjóÀ!#ÂlªŠ½vëÁ•%])V÷ÓÌÿd?‡\ÉGBÞHáRE± ÅbRâ$Ü÷Ó¿X–0JI±4CX†bu’$ÉûUÆmVè¨Õj“2@-{ž6¼³hl6X°Ü’0hÝ:NNNÖ\]]­|»bÅ Ã\\\~úé§èèè.]ºÀï+–Qd& Šr%hw´uWò«w„Æei–e–¦h½€1hÊÀÒ40@34Ã2 M몋ÒZ3ТE‹‚ƒƒ­ËÌ›7ï¡=Ï[,.L™2¥°°°¡¡áã?~ùå—¹N³+ÆÇ#‘‰@ Dû¢­»’{æä3%<<üŒò4h³–ûûû›B·ŠG"ÑNi®¤ Î^S²5˜ÆñÏtgñTAu%h´õÜ&ü|¥@æ_ãßÍà\¹ïôuëÂ;wîä®D´†g¶Œè7@ íŽvæJVj‹Ršf(¡TW¤Ê´.|ôèÑòòò§aFBB‚F£1ÛóÉ'ŸlÙ²åi ú¼xzËȃîàF ¢Òž\ɽg®yè)–20zAåT÷ñ7‡UÉŒ3NŸ>ݲm;¾¾¾‰ÄlÏ’%KøB•ÇãYÕ®AñH@ Ú)íÆ•,©l ª@ 70:V¡PÔOê9gÔPßóWr­<¥Ñh/^}ðàÁ .äF4¶¦é–œÚÔÔÔÙ³g/^¼Ød¾[¶l™4iR\\ÜŠ+ø;!-MͬpUUÕ‡~3tèÐC‡™]F³–›PUUõþûïGGG;655ÕÄò–ò\®¤™?!@ ˆ6L»q%O_Éqó×è)ŽR4«jk*E¤ÄQö[ L®_¿>,,lݺu‡*..žÏ/77·sçÎB¡×Ö²Çv¸S5™™™ñññ‰‰‰K–,1±Ð’€ GMKK€ˆˆŸ¸¸¸eË–ÅÆÆîÞ½›O—l95³ÂA|ùå—#GŽŒ‹‹;räÈ#YÎ[" ¿øâ‹½{÷¾þúë'N?~¼É™wžT®äêÕ«·oßnÜóïÿÃ0™LÖµ·nÝj½@ ^0Úú7éV``› *F«30€5hªç­›4iè{Å•w€a)Åh0FÏ0sýÊZ€?täkÙÀÎ;¹Æ€Nž<©R©LÚ0bĈÈÈHFcìy|õÕW|Ûz ŽÆÆF>wÐØ€ .p ±X|íÚ5®´gÏž¦¦&‰D§3[eVÀX-ìß¿ÿÁZ‘ä¶mÛ gÿĉ-MÍ’p—.]RRRd2I’––Ѭa¼%лwï'NÔ××;99aÖrãEk}®$Ã0;vìððð˜9s&ß9cÆ K{ýDAAÁ›o¾ÉŠG ÁÑÖ]Iy#…KuÅ4 @ŠI‰“pßOÿbYV À(%ÅÒ m`ŠL3[‚$IÞÇ2n€@ °r@G­V›”2îINN–J¥EEEýû›?d '''+š°ï,k S³$Üòl¸Yj˜«««-zàIäJ¦¦¦–—————_»ví¥—^â:1 {l…< …bìØ±ÍÍÍ­W…@ Ä F[ßàþêÝÇ¿–œ\'ùï¿í.l—^K±»ý“CÞ/öyiÒ›?K²RÉë©döY"ë~:­5-Z´È¤~dKæÍ›Ç×ÇiÙóÚk¯ùûû§¤¤<’ç÷ °ejmVæJ¦¦¦Ž5 6oÞlòÃ0Ÿ|òI``૯¾ZTTÄuþöÛoC‡5kÖ Aƒ¸Í믿þºoß¾#GŽÔjµ3gÎìÛ·ïœ9sàÓO?ÍÉÉ©­­?~<ÿ8@ hûQIÈ=sòŒÞJ }úô±tîûùÒú©=møxäcïq744ØÛÛÏœ9óرc{÷îMNNvppà¿Õét³fÍš8qbÏž=ßÿý“'OVUUÅÄÄ$%%%''Ož<9::º  `„ óæÍS(b±xÊ”)›7oîС¬\¹rýúõîîîü5E@ 8ÚzT²%Î^ûîç·hU ѦhýÙí={öŒ7...®C‡ÍÍÍ{öì1þV"‘ôèÑÃÅÅåܹsjµzóæÍÍÍÍ]ºt€®]»ÖÖÖîܹÓ8àñŽR!ñ¿F;s%¾R ó¯ñïfp ®Üwúºuá;wr·ü!ZóYÆVÞÁ}øðáÔÔÔo¿ý–;óÔr›Ãßß_«Õfffæåå€X,©T \@ ˆG¢¹’•Úb”¦J(Õ©2­ =z´¼¼üi˜‘ ÑhÌö|òÉ'[¶lyƒ>/žÞ2šðرÉìììÈÈÈaÆ 6låÊ•™™É“7¦©© ¼½½===€» Ý`0׃@ â‘hO®äÞ3×<ôK½Î ò ªûøóÅe¬0cƌӧO·lÛNAA¯¯¯D"1Û³dɾPåãñxVµkZYWrýúõÓ¦M ‰‰‰árCׯ_Ï Ð4 E•••………7îß¿555$IŽ3ÆÁÁÁÉɉ«ÖÎ9z½‚Àq\­V ³*@ ÿ³´W²¤²r¨ÞÀè4Z…BQ?©çœQC}Ï_ɵò”F£Y¼xñСC“““`Ó¦M·nÝZ·n]bbâÆù6MÓsæÌ9{öìܹs£££-ZÄ_³fÍš””cÖ«Knܸñرc\{Μ9.\X¸pallì† fϞϟÞ(//Ÿ>}úàÁƒ.\Èhl!MÓ-8µ©©©³gÏ^¼x±É|·lÙ2iÒ¤¸¸¸+VðwBZššY᪪ª?ü0&&fèС|H“e4k¹ UUUï¿ÿ~ttôرcSSSM,7nM®ä† víÚµk×.ÎŒãÇs'xöìÙ³aÃèÐ¡Ãøñã?ûì³qãÆ…††îÚµ ð|óÍ7{öìÙºuë¶nÝ* gÍšUSSÓ»wï}ûö‰D¢†††ôôt‰DòöÛo×ÖÖ&&&¶¼p@ ˆÿeÚ+yúJŽ›¿FOit”¢YÕP[S)"%Ž2ذßZ`rýúõaaaëÖ­;tèPqqñäÉ“¦OŸ¾uëÖ)S¦ðm‚ ***6nÜ8zôèU«Vݾ}› FEE™TÒ¹|ù²IuI㞺º:¹\ε+**þñÄÇǯY³fûöí ,˜øà›o¾ÉÉÉéÖ­÷àœ9s®^½úÊ+¯N:•ëüòË/+++ÓÓÓ7lØÐØØxíÚ5®JèæÍ›ËËË?ŽöÁ0æyº’g²*-ý3‘LÏ)ú”«tMCƒJ]×$¯NŠZ—n—v:¿óXº¥!&L˜˜˜——'•JI’´··wqq1nsÂ3fÌ Órjf…¹wíÚõÉ'Ÿ888466š "Z2Œ·¤k×®žžž'Ož|ë­·JKKsrrÞ|óMë«Ñú;¸m‡1S=oˆ'À¡«Ÿ· D; ­»Y¶ùÇ€ðl5]­ek3JO~°alÖ+pýNzU]¹AÇh•MƒÞÎãÞô¥»lQ˜päÈ®^q*++Ç—àééÉ£Y¿~=Ÿç—››Û¹sgã{PZöØwª&333>>>11‘÷Gy«, ˜pôèÑ´´4ˆˆˆðññ‰‹‹[¶lYllìîÝ»ùtÉ–S3+LÄ—_~YPP0räȸ¸¸#GŽ<’å¼%B¡ð‹/¾Ø»wï믿>qâÄñãÇ›œy7ËSÊ•D ñôhëQIÒ­ÀÀ6TŒVg`kÐTÏ[7iÒÐ÷Š+ïÃR*ŠÑ`Œža(æú•µ*èÈײ€;wrœwÐØ€ .p ±XÌ×& Ú³gOSS“D"áÓ­2+`¬öïßÿ`­HrÛ¶m …‚³âÄ‰ŽŽŽ–¦fI¸K—.))) 2™Œ$IKËhÖ0ÞèÝ»÷‰'êë뜜‚0k9Ê•D ¢ÒÖ]Iy#…KuÅ4 @ŠI‰“pßOÿbYV À(%ÅÒ m`ŠL3[‚$IÞÇ2n€@ °r@G­V›”2îINN–J¥EEE\ùÛáŽ[²Ð¬€xgÑXX˜š%á–gÃÍòPÃ\]]mуr%h§´uWò«w„Æei–e–¦h½€1hÊÀÒ40@34Ã2 M몋ÒZ3ТE‹‚ƒƒ­ËÌ›7ÏJÏk¯½VQQ‘’’b6£ñ9bËÔž;(W@ ˆöH[w% ÷ÌÉg0 wÛ^kèÓ§¥sßÏ—ÖOíÙ€b“/0\’wƒe[ÖaŽã,Ë2 ë5ÖÌ /ódáõs0 ƒã8Ã0,Ër_qí'>.@<6íÀ•4áÐñ_íï—ÖØ{Mysðó¶ñd@¹’/6/õéöɼ·à³/7ݺ]ü4†8ðý ¥jÚßþÞJ=ô3óÍ´_³¾þ÷^ Ã|ÿ×?÷ãäòÊûðæèØq ±ðëo7Ö~»ÛŠ*±X˜8"zÿáTš~s\Âk£† ‹„ES4½aóæL>Ÿ–ñíæsf¾9p@ßk·]ÏÉkÅâ ÓÖOp›púòAúÜ×dåCµ¿ìþÑô’3èõŸÃÓ7 ñø ³Û/6¯ çiCG|ð× ñ¯E H²IÞ÷ZÿYïŒá²·“Ì|{tye€$FÆG½Ñ 0 ûô£w#_îYSÛ “Þ–0|Ð#ÙÏ0Ìíü’î]ƒH’èÑ-ÇñÜ;Ük`I¿€$0 @(8fI DZ?¯×¾;8\"ÕÕ›:fdç}ýµŒì;d9@<Ú+YT^ß©évS}%ߣh¬îZ}ðÚ­2óÐ446Bn.I‚T 0q"¤¥Am-„„üé +*‚¨(pr‚1c ¹Ù¼Ú½{!.&L€íÛÿè<~""ÀÙ¦O·ØcVù°apàÄÆÂ[oÁÒ¥põ*,X!!@QL€ÒRˆggèÖ øãÁãÇá­·ÀÓ>øàÑ–²íÁݯ/h®dM ÔÔNÎÌɳn†P(øü«mï¼÷ùÍÛEf È̾# 2‘+‰@ Ú$íÆ•üéçÌ—¥ÍŠz¾§¹¹iŒÃí-ßï3ÿ@Ïž0~< ß|ü®ÐÝ»ÐÜ ®®pñâƒСpåÿö7=Š‹A¥ Å´aÛ6xûm˜:Nzà °,Ì›«VAM p÷¾´ì±¤üî]øä˜=¾þúùé§pñ"äSYÀÏòóáï‡iÓ 3óÁƒû 'NÀÆ<ævË dYøî;6 „~€aÃ`ëVxû“S§Â¿þõäÕ>ºw òör»{¯ÒÇÛÝÑÑ¡ª¦ÞÇË­{· ^@§7p‡H®]¿Í²,ç26«4çÒ2h†y?é¯>Ÿ~<àv~‰^o€äþgÕº "y4ÍäÞ.¡P"€Ÿ¯HrÒÃÞHˆmV«evNŽö4 ÎwìÝ£sïîëšî×5ð_٨ߺ˜F£Í¾™¯Vkù#áßí:vëN1äÝÛ±÷ÇÛù%+Ön+(*ûn×±¢»åd<@LŽƒ§'@r2äæBf&(•pù2¬Yõõ çÏÃÔ©¦ sr ª †‚€N`÷n˜?0 0 Žƒˆ 3=V”/\‰‰Ú8:>°ãúuÈʂÇÁÝƃþvì€~ýæÎ…™3BBàúu µ¸Ðí/WríZع®\yðÞ½óôïõõ°èI_O}ü8H$OXç“"vp8tò[µôo|çÐèþü9n–a¹ü?VÇ0 I†9ØKW.ù«·—[nÞݧӦNΰ,ˆDBP*UfÇR©5œ*Î!Ã0 p'G‡Îp¿¶ñ~m£Pø§Zý];v ôùõê&¹’«þ£ÕéŠî–ëõ†A¯ôsuq¼ôk–ñW¶è·"f0P TiLäó K¹†B©â¢›œÃÍ÷#DÛá¹¹’&΢u®Ÿ»Àÿ»~#$‰è¨?j/,˜3éѱïÏxÎ¥eÀï;Ô!úõ ™=},ü¾[_tï^yu§ ße'½ýÖˆ!ƒÃdö\¹GKÝ-W©5áaÝßûæè!0uÚÄ‘&2\ˆtöô±‹çOKMÓLF–iVbn^ñï»ÆýVôs¡Í‰oÄwö·n:—@ Ú5íÀ•¬º¸;˜)dUÕ¬ªÒŽª[7Äá¯aÒƒíô4ÔkØ: ë ÊÛ'¾0}ìömÈÉ`¸víO@½ÆŽ…# )éξ}¡KX½ú/ØÔdªðøqð÷‡O?…>€>€>‚èhؾôz¸yH&OÐéÌô)bGp‹ÖÐ(¿ž“ÿFB¬‡»óÅ_®sÅ€²o¤¥gûûzýßüiEݳ“J¼<\†Yûíî‚Ⲟ¡Á2àv~É¿·¥X¿r†a˜•k¿ohT¼9zHâÈè¹E¶4qÝ~ºpõ|ZIýzw­ooÝy¤ Øô0_n^ (”ªŠªZã~+úϧeÀÈø¨ @[Ì@ ˆvJ[¯+¹òÛã³È“l³h­–biŠù UÉ}utœÓ}hhÆ@ÃKÌÍ¿}ºãŸŸe7fdÀ»ï‚$„†þiwûüy¸rŠŠþø©¿x:u‚ƒaâDðñwwèÜ~üñO¦pnŒ™2>ü>ý† ¡–/''hj2íxˆrŽ3`êT8sæA°D"Ø»Þz ¾ýjj`ÁøË_5Û0/^®¤%8·sæLx÷]X»*+¡kW€Í›A¡€+zô€óçaæLpw‡×_‡—_~ðl˧pÜÜ|ÛRCHL GÂo@@äåÁн;0 <ƒ‹â|j&òùëo7ÆLYb±(ŠÞ¸íЮ}'Y`Õj-'òì×ÿÚÃE"5ZñãUµ/Û`'•0,«Ñhù~N'ÇÕÌ\ãy…¥ûhƒ½To tN‚ä iæÛÍ6ï8b'74ec³,¯'çVß.,.·Eÿ¡cgÿ{6eÙf•Æ’˜²Ym¬ ñÿìyXSG÷Ç¿Y@– ˆ¢àZwEÔªq©Š H,¨ àÚ¢[}]©]ä­¨E­Ë[D‘âZû³hUVÅ…‚Q¥Š$€PH2¿?n! ÜXœÏ“§Ï½sçœ9÷&öfΜC¡PZ"ÍÝ•ZÏ©(,– RŒr‘äQ±dpõ¥Ç%âvmXå"TIÀWÜûÝò®äüù˜;YYèÞ½&`ínõº•Êù€Áƒqó&èêªØÈ ìü¹ºÂÕrsQP}}0{õõ[êR~·ö:ÚôéxüBa­KcÇâÑ#<}ŠŽÁåªLNVq/-+©r9[fò//OzÀ—ƒÀ´iàpðÇàó1>ðù°³“þ ¼½¥"l64ä¶p(KÉ£Rƒ›>üee8u ..8v “'cÒ¤ÆÜóÛ§ì¥â¾(9‘ ö¯Ÿ’Ò—õwø÷ßJ•ŽæëèWnlÐ …Biq4÷î§å,A¹DðR’ÿR,xIŠþ•|>RǦ_סÚEDPNŠÊIa¹äEÑÐRšfár1`@©&;¾Ê†Øj¼ÆºZÔQ®¡T´Õø‘­Ž+©æ¢ä¤IàñpíZ­ÆÄDèêbüxàpàæ†#G ÂÀLLj&£Qíw* ,%J ½{cøpƒÇÃçŸ#<—.Iö7- Éàgg> ©m( ¥eÓܽ÷o}ÖŹöG‘H$R%ý[U%‰V°R‹Ù,B$B$éÕ(ÉMi–´ˆùÈFad„Í›±kæÌ‘þ-S^Žķߢ«tÿ1-‚©iMÖykkLŠ?ƬY¸wii˜=„@\{w¯‚€ª*ˆDuj°p!¼¼‘.]Àá€ÃzS«o—ÊʪÍ>?7µ …By]š»+ `Ûßß5µ”·K Š•$„(,s«œª\·††°·‡­­4ͨ§'ÜÝk:ôí‹O>ÁŒÒSssØÛÃÁbæLøúâØ1<{†ƒÑ·/zôP-•œŒøxhk#=]…GG$$Hƒ-§Ÿ¾¹gA¡P(”÷ž¦q%#£ãyùžñŒ\çLl(Í47©æ2÷âÅX¼yyHàé©¢ÃÑ£5¡l6BB°gttЦ Ì‹¹s5 ÷îÕ\RÐÀÀãaß>éñW_Õ ¾|KD†ø6܉B¡P(­‚&ˆ•<õî„ÊôÉmO­¸väì[X•Þ±£ÎB‚••¸wUUo~ÐyPÙX¥ UUàóQ\üºÊ[&-(VRM˜‚ĢkWtï^«EöÑÔTl10€––êÎõH5¨A&¢ K¡P(ÊkÒ®$'+MŸUqEGV±ÆßëëÚ§Nœýu­4}Ý»#W1÷›”_~Af¦Švoo|ø!<<Щ“ê\ÀŠ=ãÆÕše0o:vD¥ÜÞÒž=Ñ© е«´Æ÷µk8xPõÐLg}}˜›ãÿkœÙ•WRi …B¡P^“wíJ9•0Œ“ÃuXÅ»™ëê;^óÞ–]§ëì=q"ââ¤ÇW¯âéSiÙÀôtðxèÞ½§§ãÿCr2ââðüùkma½v Ó§7¢H²³1eŠj¼¼–†»wqá22`k‹)Sð²:cHQ΃XŒ3gjéÜ· Áÿ‹Œ ÌŸÓ§qþ¼jöíCa!֭êUÈÉy…;~-Ư¯ºO5L¬ä;0‡B¡P(Ê互Y ú¾ÈxQP“æDXôtàÓˆ”¿ë˜_œ0AêJŠDÈÎÆˆˆ€ØXXY@Vƃ¾>fÏ–Vü`(*‚ Ú·‡££´],FQ‘tá›Ë•îªU)>cŽÇ”)pv†«+Ž“¶?Ž‘#QY \¹ÁÖèÜ?ÿ\§ÂDZj•j?F` ~ø¡&aôš5àpðË/ÒÓ°0L›†yó¬øpX,Œ--ܼ žžõyll6ÌÌ ×ÚQijVÆŽE‡psƒ½}Í>a \¯E˜2—/ש!:ææhß^Zp|Ë$%aÍ  Ýf\7­on’¡¼ÿü#,) æ …B¡PZ4ïÔ•üãÿn|¤ñ¨T(WG»ôÅl½ŒƒAÇT Lœˆ´4¸yC‡ÂÜ\Ñ•ôô„½=<@Y"#kw쀻;ŽGJŠÔÁ2sçbüxìÙS³°§R<;6àóϱkFBP´ýØ1 MMdg£´ ììPR‚Ë—‘‘™3U+”H”„^½TÛ‘#FÔXÎfcøpܹ#=eJ츹áÜ9<{VëáH$ð÷‡D"­ôÜ«—ôá¨$3›7ÃÔC‡Öw?Dv6æÍÃ¥K5~gf¦´ä#ó|ÊÊTk _~‰mÛðì™tåq"½½qùr=y1[_¬$Ct4ÆÃ¦M Å‚=ÞÞ8z;ãáæ6ŽB¡P(”7Á뺒17óêú(ô¼zóáØòxòo!©”+MV)D…`ÞËÀcçSUhïÑ={âÒ%\½Š1c`nŽ„üû/®]Ãĉ()ÁÕ«˜23¦f)À×_cÖ,XYaÎüñ‡´ñèQlÙ‚ÿüŽŽxù²>ñÿüèÜŽŽˆ‹C~>„„H ‰0¤¦âÖ-lÙSS [7Õ ÓÓÁf£];Õ6<Ž6m·?èëC €Û·ñÏ?˜:ææèÛGŽÔôñõE×®øö[⃠gOdeIX¸ýúáæMéd* ÚÔŠ üõÖ­CÛ¶˜>¦¦õíËP©ÙÊ‘Hj•ž44Ю:w®SU+ܽK—â×_á燯¾Â‘#ptDI \\Zq²y …B¡¼w¼Ö;mÚ‡]îTMêŸW—é‹e \õ²!ž?îííÍüÞúõëwòäɰ°°=z°X¬Ž;þûo­zåƒf±Xzzzûd E•øûï¿eÀرcX,ÖäÉ“»uëÂb±f̘`Ñ¢E,ëðáý) …Ò:xG®ä?—ô‘d’²§¤,OW$Øm¥÷ÙH­u+Å(('‚rÒ%gþ«BrâDüý7 ¡£ £FáêUL Ç£øúJ]Y`€Ë—A j¢*32pû6H$HIAß¾õ‰Ë3{6’“Xku›}ÀìÜ "þùGµB ffÈÎVmC»vX½xòÄb|ñºw‡“¢£Ñ£¼½áå//¬]‹?V±ùFFv6F®ï;رbçÎ:‰ ŒŒp𠪪ðË/HM­q{÷Æ­[()»»Ô-V©¡²iiàr±`0¯·ž=ëLóYMËŠ•Tö•[îÞ "Ç'=ÈʉذÛ¶ÀãÇøæÌ›‡]»°mD"ØØ #  Åúõðñ‘ nÞ oolÝŠ¶m!áãñð!""€¨(¬^ > ) ‹#4TºÑ§uÓ·oß»wï>|ØÎÎŽÇãíß¿?<<|Ïž=...ÜW'H$‡ xƒ¦.•Mä7CCÃï¿ÿ~À€æÏŸooo?oÞ{£s'¥y(}\Q*‹þõºPò¿ë/7Ç••‹H~y^..(—|$Ióô>¤(üÁèÑ£fÙÜíÚaÔ(àrK—Ð¥ ú÷‡‹K”@ôí‹îÝacׯcÔ(ôê…ÀfcûöúÄåißVVèÒC†ÔjçrŽÛ·ñÁ06F`` çÌÁþýªm°e ajŠÑ£Ñµ+rs 6[ºáFWW„…¡öôC À±^?ÌÀ~~زušúõר°íÛãöm ^³†ºb¼½Ñ»7,,Э[ÿåK̘>}0q"¾ýúúàîŽÀÀZ+øJ´ ùH5ù÷_°XõÕ•±±†,,¤et邘HKƒH„Ü\hi¡m[L˜ íÆ$Q•H‹Š 3B!x<@(ÄÖ­Ø¿¦¦ˆ‹ƒ¶6¢¢}}ØÙ½ƒÛmb>ÿüs¶ÒZ¾ƒƒC·nÝ(_R“ .<~üøÆ)²Õ€×Få¶ú0>b»êØkMMMwwwòþnLLŒµµ5€¶mÛªT" ?ýôÓRù”jðå—_ÊŽØlö¢E‹>~Üj ¥åó.\É¡eñœŠÂâ—åÏ_’ü—’GÅ5±ƒKÄ‚r±à%”VeŽß}TÈ?z„½{¥Çß/jšÆÍ›¸·nÕdOLÄ/¿àÖ-deáÔ)hkÀüù(+Ãùó¸u §OK#UŠß½‹O>©e@t4RåvÉ: >YYÈ˃·w —,Ž’’TÛÀáÀÇùùøõWÜ»‡ØXi&ö³g±re-3\]QP€6mð蜜j]ŠŠÂ˜1Ò]äÊOOÖyþ|TT`Р:M]¾ÅÅøçìÙS+oþ|üóž<‡²²¤ •5èë#7IIÈȨ ëœ>K¥ºi)y%Õtú÷! oÓÖЦHb³¡¥…M› ¡K1o—+ ¸e³1j”ôa?{f^‰Ï‡ ¼½áíë×±lŒáë wwØÚ¾á’~ø¡rcûöí{Tþ¦¦¦ÚÚÚvèÐáXu|¸……Åž={z÷î=dÈ„„æÒüüü.\øé§ŸÊïܹ3iÒ¤U«VYYYñù|™ž£GöéÓgܸqLàüùóãÇ_ºtéf&ûz¸ººjii]ºt‰QþâÅ ]]]ïYA³··÷íÛ·Ÿ?>wîܬ¬,åþþþÇŸ2eJTTTß¾}W¯^-¯©JéСƒµµubbâ´ÆDES(”ÖÇ»xÏ<-g Ê%‚—’ü—bÁKRô¯äó‘:6ýÚ¸Õ.ª ‚rRTN Ë%/*ˆ†–^Ãê”éØQê/2´kššPHâr1`”£ïÄKçΊ³OÊ wï–.×eƒ†LLPÇ,BÃtìˆÆ¼~j *˜ª­]+S†Ž45ÕÒСƒâî tèР--bnRÍêÛ3f€ËÅÉ“êªÍÊœ9Ø´ Ç7Ðóøqœ9ƒŸ†ƒƒÔ¥71ü¬Y^Š‹±r%._Æ;ðòR׆VLVVÖ‰'6lذmÛ6>ŒˆˆˆŠŠZ½zµ¼‡'£°°Çã-[¶ @XXXIu €««ëßÿпÿððð{÷î999UVV¦¥¥­\¹ÒÔÔ400ðüùóóçÏðüùóqãÆ5ê§Ÿ~JIIù®:T¶¤¤„Ëå®^½úÊ•+¿þú+€û÷ïòÉ'öööþþþÛ¶mû™ÉS«NNN<Ș:·váveÍ>>> ;Ö§Oå‹/¾yóæ•+W.]ºÔ¦MfýÀ³gÏäææÈÌÌ|úôéüùómll˜‡# A¡PÞKÞ…+éþ­O ¶ç²„N« ¿Jî¸'£ÃÕ¢ÿ5¸^Ô><[ÿ×»mC2yaYzát¿úJr78˜›¿Eýo^§4ÌôíÓ²b%ÕaÀ|þ9vîDõ”<Žà`±X:ï(IbcQ^Ž6m“‰DºÇI¶õ_$ª [Ý»±±X¾“&I'Ž­­„“'Aø|ÄÇ#1©©°°@h¨tý=ÇÆÆFCCÃÂÂ";;@@@€P(ܺuëþýûMMMãä÷½Uêèè8mÚ´®]»–––†Vo,c³ÙÀŒ3FÕ­[·ÜÜÜ›7ojii9ROOÃáèëë?xð@$ýïÿ+..6l€]»v1‹Ñ´µµçÌ™3a‰‰‰‚ƒƒ«ªª´µµ=zd`` ûØ Œ¿{èСÊÊʇöìÙSþjƒš•;hhh¨¬¬Ü²eËÍ›7eÏçþýû‰äÑ£GfffÆ óöö&„¤7M¡PZ+ï(Áݶ¿¾k¸¥ù0nÜ;Š™l)~$!Da™[åTåîÝèÝÓ¦IÃGKJ ¯•+Šª*=ŠŠÊJDD`êTlÝ*-±df†õë±d ?Æ™3˜8GŽ@(ÄÙ³°±ÁåËØ³ÐÓÃØ±Ø¹ææ°·‡ƒÄÌ™ðõÅÿý–.…—lÜø®žK³GCCC$àóùvvv®®®¼™Ð%Nž<)‰.\¸Ð½{÷'Ož0›ÆÆÆ<(((033;wîÜž={Ž9" !„f—tyy9€… ßjÍüŠ$ fybb¢H$úúë¯ìaaa1dÈ;wî¬]»vœÒ?Û5×ÕËå2Ñ–Õ«.ŽrÑØööö²ãÁƒ«o-…Bi}Ð\É”fAËÊ+©Î27‹…/¾À_ 7b±4e;—šmN{÷Ö„?z /› K:7 à知…9ËÊ0mŽG~>JJœŒ¨(¸¸ ${ö@GLÄÉ“qý:tìøæî¹abb’’’âZ“!//¯K—Z)roݺ5fÌ&ÓÍСC'OžÌl¾ùHi÷Xyy9—Ë=zôíÛ·?þøã~ýú%$$œ8q‚YóÕ××°dÉ’úMêØ±#€>}úÔµçº~<<cÆ ‚ °n’“Õ|8wîÜéÓ§KKK}||ÕDCCC«ªªŽ=Z\\ZYYannnooïàà`bb(¿V `ß¾}‡>|øðË—/DGG3“å¡¡¡²Œß,kݺuS¦L!„0›i¬­­544þûßÿ~÷ÝwÌ‚ï/¿ü2cÆŒ-[¶üóÏ?ýû÷gr^2›cJJJΟ?üøqiiiׯ_·³³ûꫯ²³³mmm§OŸ.oÒÒ¥K]\\P½>bÄÁÁÁË—/¿~ýz»víæÎË$­Œˆˆ påÊ•½{÷*kÖÖÖ^¸páóçϺwï®Üá—_~ ‹¿þúë·÷}Q(”VkãvÿúßßÌD‘ÏZwe¥õ³iGó‹’­h+ÄJî ŒxVÑßÝedTdýí)@+"¾ŠŠŠttt^¡(¢¶¶ö¿ÿþ+‘HrrrŒŒŒ4«3VVV1»RzõêÅ´—””<~ü¸oß¾õ$­6©¤¤¤‡RñR??¿#GŽüøãvvvîîî?þøccmVÐ,‹Ÿ>}Úµkׇ¦P(­˜M;Æ[Í4ë©V›>k=”`^Ͳ78•¤4 ZV¬¤úüüpú4¤¤ÀÓÞÞ°µÅíÛ¯ÿÀÞeee^^^Lîž9~ü¸¡¡á7Þ¶Uê“0dÈYYp77·zJ„×ÏëȾ)  å=º’”æBK™›TöUz“;vÀÜë×ÃÊ ……ÒÆùóñìD"tï[[ÔôÏÊÂùóøê+|þ9**ðà’’°x1BCQR‚/àáÀ@lØ€òrbäH\¼ˆøxÁƃ£ ò³H >DD…Õ«¡PwzÕ*X·vvxþNNض ßggL™‚ââ7ðÜÞºººööö\®Zq;NNNT•†¿qãÆýû÷ß´ij1zôèñãÇËN£££×¬Y£¾¸¼å•Uæõ5P(”÷êJRšžÖ—W€¡!._ÆÆ¸x––ÈÍPk™[ÁáY¾íÚaíZ°XøóOhk#* AAÐׇ1b„T$, Ÿ}†nÝ`h;;Œ…‰Áf+Ö¶QP¡[·bÿ~˜šBUÝi)AAè×zz¤þnxø›y&o‰DÂf³Uzöò}dÇl¥ÍðEEEÎÎÎåê­ôK”ãä`Ò¡«#¢`’Ì~]]] •3œËFQ°\Y¶±(h¨ÿfëâÕ¤(JË‚º’”¦§¥ÌG¢Ž ȺÐЀNŸ_ß:3omÇ#%ÆÆðõ…»;lmÁf#- :I{@GG*RO¦B…|>llàí oo\¿U¥¥á•™™%[äñ`b‚¬,õoºi¸qãÆªU«~üñÇ}ûöɾ£ØØXwwwKKKÙB­ŸŸ_pp°µµõ)&hPZZêîî¾jÕªÔÔÔàà`>Ÿïççwúôi)))žžžÞÞÞ¶¶¶·oß:vìØŒ7ŽÇã}ûí·ÊÆìÚµ+,,ÌÓÓsË–-u‰4¨çÎ;K–,‘% ¿uëÖÂ… ·mÛ6kÖ¬ââbåQä-WU¾‹ÈÈHKKË£G:::0ÉÒë]ås«Ky]·¦ðu4h…Bi1lÜî_X/·ûoÜîO(”7‡ì%ÿK“?ݸÝÉw&d ›áoOå¿#…>ááäîÝšS++òá‡2qò÷ß„J&„Š 'O¤,-IHyñ‚B®^%={’%Kˆ§'17¯QXXH!ÆÆ$.®¦qɲzu 7o&+WÖt–]e‰ µÙÛ›Õ\3†øù©ùlš¡PØ«W/¦d¢O·nÝ!ÙÙÙK—.•H$šššwïÞÍÊÊš3g!¤¨¨($$„bllwíÚµ={ö0ª˜I¾ôôtBH~~~¯^½„B!!$44ÔÐÐðÅ‹¥¥¥gÆ »wïf±XùùùòÆäææ¶mÛ–RVV¦©©YUU¥R¤.=nnnk×®%„ˆÅb;;»Õ«W3›™™UUUB¦NºsçNåQä-——Uyååå+V¬¨¬¬ôõõ:t¨Â#•× üÜd¨ÿˆ”¿Žm P(o›Ûýϧ>©ß ”/B²„²W³ì•¤4ZÐÜdƒtïŽM›jv[‹D2Dzldf‡qNŽŠÓååÈÉÁ¬YHLDj*,,ŠìlXY!9YºÿæÚ5$$!/’\Uå5U™BkkáäI> u§Ùlhj¢´ fÏF~>23¥–§§cÖ¬×~"o“C‡õíÛ—©[3vìXfV2 @(nݺuÿþý¦¦¦qqqÚÚÚQQQAAAúúúvvvŒì_ýuùòåUL¬hm‚‚‚úõë§§§ÀÖÖ¶   <<\WWWGGÇÚÚºM›6«V­êСÅÚ)C»té --M$åææªiP›ÍîX²8bÄ&4,,ì³Ï>S¥.Y•w¡¥¥Õ¶mÛ &hhhXXX(ˆ+hPùÜûˆ”¿Žm P(-êJRšž–+I”&&•[z÷Æ;˜?ÿûÖ­C÷îØ±CzÉË NNpq‡--\¼MM,X€õë±o,À‰ÐÓ‹…¥Kqø0±q#ìì°f ¡¯ÈHLŸŽcÇðìDN$'#>—.!=]µBssØÛÃÁ&& DíºÓ`±àê œ8aÃàïe˃åËqàäJ·4GÒÒÒ>øàæXÞÇçómll¼½½½½½¯_¿¾lÙ2ccc___www[[[Y·ãÇÿñÇ ß ãŒfffÊÊ*òx<“¬Ú+ý,ËÂÂâÎ;òl6[KKkÓ¦M,K!bR¥ˆÊF…ìTß``` ££S×(Ê Þ—Ë­?¢QåsSS¹ìÖ”¿ŽFÙ@¡Pš34E9¥éaæ#[„É ì;*й3’“Ѷ-žÌ¤£†F­FMM´o_sÊá€Å‚¡a­>::ÐÕUÔV×GA!ó10€–V"<^ͱ¶6LLjun¶888ܹs‡™¬­­ƒ‚‚Nž7õ‘ò×¡Ž  ¥E@]IJs¡5ÅJÒ ?Í–!C†,[¶ÌÒÒrÁ‚çÏŸg¼Csss{{{“ÀÀ@{{{‹µtéÒÇ'&&nܸ122òéÓ§¿ýö[ß¾}'L˜`ccÈb±\]]]\\Nœ81lØ0ÿeË–ÅÄÄ,_¾üÀ½ªWúƒƒƒúé'›°°0}}}yc¦N*‹§L™cff¶~ýúºD“’’þú미¸¸ŒŒŒäääøøøK—.¥§§ÛÙÙ­Y³ÆÑÑQ__?22rúôéÊ£É,——Uyqqq?>sæŒ@ 8räˆP(<{ö¬ü]ÈkPxnòÝÔDÊ_Gƒ6P(”–kãvÿú™·»ÏZwe¥õ³iGó‹bJoËjpËØñ¬¢¿»ËȨÈ0úÛ£¨CYY8Èåreë¼EEE:::L<“uR tTÈÀ©J•.³ÒTTTdgg÷îÝ[ضmÛßÿ½ÿþ;vT™»Q$±X,‡ÃL²X,•" êQ ¼¼œ"[ÑVEÁry”ïB}|nê?"ù¯ƒB¡49›vŒ·šiÖS[Î;#|Öz$>(À¼še/n:+IizZÓ|dcðòe#úK$5µs(òèêêjjj2Þ¤¬±}ûö2Ç…ñiô#U²c--­AƒÉ{?Ìt§Nêòÿ¸\.‡ÃÀápcTŠ4¨GmmmùÈHåQ,—Gù.Ô§Áç¦þ#’ÿ:(J«º’”fA+‹•ܺl6ÌÌ™‰ÔT|ôX,ìÚ…ÿ€Ë—Ñ¡6lÀ‘#èÜ6BóÅ‹X´¨>çÎáƒЧ„BiË£GX¸;#(èUn‡"#<<¼´´ôèÑ£Ožø@êÕHOLjÒãzÖ6e ‹Šàì,ÍgÞ£䓨ԓŒïûïYæ–ví¤eµ)¯ƒ®®.ÇãñxõÔ¬T%òðáü¼¼×Ñó¶!ÕÅ~äÊf¶j”ÁÜÚ‹/šÏ­Q(”· u%)MO«Œ•œ9zzR÷±¼%%8q••Ù³kz¦¦ÂÖ:Ôøš»v!, žžØ²‚ƒÁçÃϧOÃÀýûK»ùù!8ÖÖP*Œ sæÀÃ_|ôtÅK±±pw‡¥%˜ÚÔ‡ÃÀâŸ0~|ˆˆ * «WƒÏ‡‹ Ú¶E»v06ÆŠxù@§NX¼øM?—÷sçΉD¢qãÆÝ¹sgĈ7nܸÿ~SU‹üüü¡C‡¦¥¥ÉZø|þªU«¶nÝ:þü &,Y²¤®F;wîLLLܹsç¶mÛÊËË­¬¬ž>}ºF–ŸB¡´v¨+Ii.´¾¹ÉO?ÅíÛHOǹsX½~ˆcÇp÷®ÔQ“ac XXHWûtAL ¤¥A$‚ribMMÐÖFT‚‚ ¯Ú…‘kÐÖÆñãxð_~YÓ¡[·bÿ~˜š".l6ÜÜpú4ôì >wî@"DÒ’ÖÄß`å½F¥Ënp\>ŸÏldÖ××ñâ…³³s¹rñõºQ^t~eêRÕ¹sçÞ½{Ë·üñÇcÆŒáñxlllbbbÄb±ÊFBÈÿû_777ñññ½zõJOO755UH·I¡PZ1Ô•¤4=­2VÀôéÐÕÅ/¿€Å‚–æÍCTªµº-CCCÉfCK ›6IËáÈÞþ õfŒáë wwØÚÖp9höíÃÏ?ã·ß¤-|>llàí oo\¿¦²›¢£QV†S§àâ‚cLJI“^û¼+üüü‚ƒƒ­­­™’0)))žžžÞÞÞ¶¶¶·oßpèÐ!##£{÷îåææ:99M˜0ÀéÓ§­¬¬BCCMMM×®] àÖ­[ .ܶmÛ¬Y³Š‹‹ÄÆÆº»»[ZZ`¢9îáÇ###“““½½½ÓÓÓƒƒƒù|¾ŸŸßéÓ§>l``pðàÁþùgüøñ#FŒàóù–/_¾gÏ»ví óôôܲe‹Jkë·MU rëÖ-CCCæ¸cÇŽ/_¾ÌÈÈPÙ(JJJ¬¬¬¤¦¦š››ïÝ»÷‹/¾Pg …ÒJظݿ°^6n÷߸ݟP(oÙ/Jþg¦ð«[òÝŸ Y–þÛsr"\.9y’B>$,0 V--’’B!IIDG‡B23Iÿþ¤¬ŒB8rï‰@îÞ­%øâ!„\½Jzö$K–(Ž»u+Éʪ9uq!ººä‹/!dóf²reÍ¥'O¤ãÇ“}ûÈÖ­äêUÒ§ùúk"‘¼Ö½¿3˜²×„¢¢¢üüü^½z …BBHhh¨¡¡á‹/˜ ¹¿ÿþ›2xð`BHnn.›Í^±bERRÒŸþYTTdffVUUE™:uêÎ;³³³—.]*‘H 455ïÖþÔ—²fÍšE‹1"Œéé鄱XܳgÏððpBHxxø€ê_†···P(ÌÍÍmÛ¶-!¤¬¬LSS³ªªJÁÚúm“GY•rŸªª*·oßfN™ :²«íÚµ VÙH>|øóçÏ“““###/^¼¸k×.‘HäïïÿÝwßåää4⋤P(ï–Ûýϧ>©ß ”/B²„²W³ì•¤4 Z_¬$çŸB[Ó§@Ïž33gÖ\%b±tÞQ$’ÄÆ¢¼mÚ ' Äb°ÙÐÔDii­ýÚ‰‰HM……BCQ»02”•A~—íÏ?×ìû¶¶FPNž!àó/m_¸7bÑ"XX€Ã‘ohkkGEEéëëÛÙÙõë×OOO€­­mAAAxx8“͛˕&AëÖ­›¡¡¡Ý¨Q£&Nœ8bÄæjXXØgŸ}  ·nݺÿ~SSÓ¸¸¸ÆŽ[Ùl6ÛÍÍíôéÓzöìÉçóïܹ#‘H$‰žž^—.]bbb¤¥¥‰D¢ÜÜ\kë·MeU >ÒòòrM&@uZ•Ž=ºk×®'Ož888øûû/_¾|Μ9yyyëÖ­»xñbƒcQ(”–u%)Í…Ö+ ÀÚsæ@KKzêì {ûš«¡¡¨ªÂÑ£(.Fh(*+©S!cÊÄÄÀÌ ë×£¨®®pqÁ‰5²,–.ÅáÃHLDíÂÈ8~ÇŽáûï‘™)máñ.Íjin{{88ÀÄ5ö8:bî\©Ç¹h‘tsO‹ÀØØØ×××ÝÝÝÖÖ–Ífgffʼgbb’••U—,›Í–å¬IKKëÔ©sl`` ££Ãçómll¼½½½½½¯_¿¾Œ‰xíqeÅiÜÜÜ¢££ËÊÊN:åâârìØ±¸¸¸I“&1†iiimÚ´‰©ßÃLgÊ[[¿m ÷¨¬ª~ºtéòüùsÙiiiiÿþýU64hÝùóç'Mšôûï¿_¹reóæÍò~'…BiÅÐ唦GVƒ»•ÅJÐÕÅîÝ5§‹C>m³‹ \\¤Ç{÷bï^éñ£G`±Àá`ñb°Ù`±pð ÊÊ _oòd\¿Ê휜à䤨8|8úõ6!!س::µŒáñ°oŸôø«¯Ð‚r¯\¹räÈ‘ÎÎÎ^^^]ºt‰ŽŽ–]ÕÓÓ322RGÇ‹‰‰ùöÛo™Ó¢¢"“””WWW¦%//¯‹\VÏWWæJöîÝ{øðáÁÁÁ<ïóÏ?wuuår¹ß|ó fõ<55U¾X¢<õÛ&Oƒª”9r$¸ @(VTTôïß_e£¼Tppð‘#G<<<&OžÌårÅb1M-I¡¼ÐYIJÓÓúæ#Y¬šWs¬£#]8®ÿ£¡.,¸\©+© ‡q4Y,6¬MöÑÓ«960€––bMMÅæÓÌILLLMMµ°° ÍÎΞ={v~~~ff&‘H”žž>kÖ,FFF=““#ÛCM‹Å̱••Urr2³æÚµk ÖÖÖAAA'Ož$„ðùüxY4@cÆ­¬¬d"°ÙlMMÍÒÒRÙ¾ï… nܸqÑ¢EGVP;66¶¼¼¼M›6999‰„1RÞZ•¶ ‚3gÎ(l*W©J…F¿þú«¬¬Œ¹M:¨l”‰œ>}zæÌ™\.·mÛ¶bbb,--õUR(”–u%)Í‚V+IH«ú4sX,ÖÒ¥K>œ˜˜¸qãÆaÆùûû/[¶,&&fùòåèÕ«///'''‡£¥¥uñâÅcÇŽ={öìàÁƒ999ìììÖ¬Yãè訯¯9}útsss{{{“ÀÀ@{ùèõÆMJJºpá•+WΟ?ψ¸ººº¸¸œ¨Vpttœ;w.3¡¸hÑ"çêÀ‚©S§ŠÅâ)S¦ÄÄÄ0û]å­UiÛo¿ýfkk{ŽÉ_Z²ªÂÂBùÏŸ?ÿñÇ„„„0‘”={öÜ·oߪU«"##ÿüóÏ~ø¡®FBHxx8cü’%Kâãã¸\n=ÞàM¡Pš'¬Ûýë_Ud¦‹|Öz¼+“(­ŸM;˜_”¬`ƒ¬÷ÎÀˆgýÝ]FFE†Ñߥ~$ ›Íåû+**²³³{÷î-_ º´´”Çã‰D"ÙÎeÊËË !òkÁEEE:::Ê¥ÕW²²2]¹`…ªª*f!XvÀ ‰X,‡Ã‹Ål6›¥j~XÙ¶³gÏvïÞ}èСòÝÔQ¥ŒD"yùò%“H²þÆÊÊJ@P× ;…BižlÚ0Þj¦YOmu:ï ŒðYë‘ø ój–½Ái¬$¥éiű’”w“¼cí Q--­Aò5…ŒT @[[ñÿªuÍ—«?®ò~$™û¨Y(³S~ûyý¶ ¡P¨àGª©J6›­à2ÖÕ¨©©IýH å½….pSšžÖ+yá>ú,¾ú 7µ5”÷†Ž;Λ7¯©­ P(ïÔ•¤4 ZY¬¤••4™Î÷ߣ[·¦¶†B¡P(”·u%)Í…V67É,“Ê/–*Ôj~µ’Ño®Ð4¥åQRR’]>77·´´ôÕô¼Ž,…B¡(@]IJÓÓâjp³j£ŽˆŸ‚ƒamS§O‚‘îÝCn.œœ0a‚T$6îî°´„¬À²‚ÊÛ&::ºOŸ>,ë‡~())iZc† "+·íææÖ`éíºxY …BQ€º’”¦§eÍG*ûŽ z“ ) ‹#4%%ЧóçãÙ3ˆDèÞ¶¶((€‡€DEaõjðùŠR”w€­­­¡¡á† ˜ŠˆMÈèÑ£Ç/;ŽŽ^³fúâ7nܸÿþ«ÉR(J=PW’Ò,he±’ hk#* AAÐׇâ©üžZÙÞ غû÷ÃÔqqŠR•HÞt€¶¶¶Âžnu 6ØMåU•ÆË7ÊçñÑÕÕe¶Ë J)@e£9;;˳+ËR(Ê+CÿoBi.´ˆ¹I5—³06†¯/ÜÝak 6[ñT%|>llàí oo\¿ŽeËÔ’z? ;vìÆÇãñ˜Ê‡‡222ºwï^nn®““Ó„ œ>}ÚÊÊ*44ÔÔÔtíÚµbccÝÝÝ---ÕYðݵkWXX˜§§ç–-[œ8q¢C‡«W¯PXXøñÇGEE)w«_‰JãU6ÊsçÎ%K–|ýõ×Ìé­[·.\¸mÛ¶Y³f+ÌçóýüüNŸ>­ ›’’âéééíímkk{ûöm‘‘‘–––Gutt4008~üø+|) å=bãvÿÂzÙ¸ÝãvB¡¼9d¿(æ7&;ÿÕ-ùîÏ„,a3üí©üw¤ÜíÀ‰„B^¼ „«WIÏždÉÅSB@þþ›BBCÉàÁ„²y3Y¹²FÛ“'*¤( ¥¥¥gÆ »wïf±XùùùÌ„ÜßÿM ©ß ”/B²„²W³ìÜ 4=-b>²±0k‰Ì‘𠄆";[ñ€‘=€œ©ˆµ5‚‚pò$ŸøxR]]]kkë6mÚ¬ZµªC‡.\ÏÅ-KÐÝ­[7CCC;;»Q£FMœ81 @(nݺuÿþý¦¦¦qqqõŒÒ¥K—˜˜iii"‘ˆ)0¸lÙ²cÇŽ‰ÅâÜÜÜÖÕ­%*WÙ(¯‡ÍfËR£Ž1‚¹Ç°°°Ï>û¬~äeƒ‚‚úõëÇ„ÚÚÚ„‡‡kiiµmÛv„  â …¢u%)Í‚+I”&&•[þïÿ[¶àɰXXº‡#17*žðò‚“\\Àá@K /ÂÜööpp€‰ ao¯BŠ¢ ‹Å²°°¸sçN]Øl¶¬¨ ŸÏ·±±ñööööö¾~ýú²eËêÑÌf³µ´´6mÚ¤¡¡Áb±˜y¾iÓ¦q8œ?þøãäÉ“NNNuu«_IýÆ7xGiii:ubŽ tttêE9<#33SVt‘Ç㙘˜deeÉwàr¹o<ü”B¡´2háDJs™›lù€”}G&OFrrÍ©±1®_‡@f2H"©u `Ý:xz‚ǃHÙÎÚìÙ0ïúÉ“¥(*ÉÉÉ™9s¦:=MLLRRR\]]™Ó¼¼<•Õÿ˜m7YYYsæÌIMM•/ÏÍápÜÜÜŽ92`ÀƒººÉ¨ÿj]Æ×G</&&FOYTTTXX¨reWÒÈÈ(::Zvª§§gddT×@ …¢:+IizZ\^Éa±j}8°X04T}Ê|ôôÀbAC£V£´´ö0– IDATꔢÈSYY @(>zôÈÑÑ€‘‘Ñ£GäääÈ6/BÄb1slmmtòäIBŸÏ—WxæÌ™¢¢"±XÌÔÔŽ-//oÓ¦MNNŽD"‘)Y´hQDD„¬ìu]Ý꿪l¼ÊFBˆlŽPiee•œœ|êÔ)×®]KHHP…Ífkjj–––2â2ÙÙ³gçççgff‰Dééé³f͂ܶq‘HÔàN å=‡º’”¦§õÅJò.>y‚ƒƒúé'›°°0}}}^^^NNN...GKKëâŋǎ{öìÙÁƒsrr˜››ÛÛÛ;88˜˜˜ÚÛÛË+ ³²²‰Dßÿ=€©S§ŠÅâ)S¦ÄÄĘ™™­_¿¾°°@ß¾}?ùä“3f0Ruu«ÿª²ñÊIIIýõW\\\FFFrrr||ü¥K—ÒÓÓíììÖ¬Yãè訯¯9}útåQŠŠŠ\]]]\\Nœ8!/;lØ0ÿeË–ÅÄÄ,_¾üÀ½zõŠ‹‹{üøñ™3gÁ‘#G„BáÙ³gßÅWH¡PZ&¬ÛýëŸ bÞñ>k=Þ•I”ÖϦÌ/ª¨¨HÖØ¾}{ÙéÎÀˆgýÝ]FFE†ÑߥAÚ¶mûûï¿÷ïß¿cÇŽòKKKy<žH$’í¼Q¦¨¨HGGG2(@ è(O ‰X,‡ÃaæùdëÅUUU²øËzºÕuU¥ñuÝQ]”——Bd+Ú*m(++ÓÕÕU–­¨¨ÈÎÎîÝ»·Ê‡@¡PZ+›vŒ·šiÖS»á®ÀÎÀŸµ‰J0¯fÙ+›ÎJRš ­on².rsA ¿Y˜•ßN:)x]<r;¸UÒ¾}ûº\¨ŽµãR¹\.³1œÃáÈ;ˆò~d=ÝêºªÒøºî¨.´µµå##UÚ Ò ¥¥5hÐ êGR(”Wƒº’”¦§õÅJž<‰®]Áfcÿ~TT(^us-€ü /--=zôè“'OšÚ–F£Òø}G å}ƒîà¦4=-hï¶šØÛ#2ׯÃÓSÅÕèhh«µž@Q‹™3g–””h‰ój*oÑwD¡PÞ7è¬$¥YЂòJª‰–êrtu+¾ÚšïAWW—Çãñxvv`*ùy{+öçr¥ñ‘ÆÆðõ…»;Nœ@XXRï7nÜîÞ½{JJŠì;ŠˆˆÈÈÈpvvþüóÏøùùéëëÿöÛo}úôÙ½{w×®]¿ûî;iii_ýµ‰‰I\\ܨQ£&MšTYY¹k×®Ï>ûìÔ©Sÿ÷ÿ÷óÏ?3U¶•Õª]Fpp0ŸÏ÷óó³···³³KII 200¸yó¦¬LŽJTvÞµk—‘‘Q\\œ‘‘S/±QÔÿX²³³å;¿‰/‡B¡´r¨+Ii.´ˆ}Ü„Wö& ñì ªiáñƒêâÉ(*‚‰ RRP]yyPUÅÅX¹#GÂÙ^^êJµVJJJ>ýôÓŒŒŒ6mÚü÷¿ÿ½v퀇FDDOž|¸µµµH$úøã¹\®‡‡GBBBhhè®]»|||œœœ”ÕvéÒEytyV­Zõå—_®[·nРAÏŸ?wrrºuë–žž^XXØ”)Sîß¿/³A•KJJ¾ùæ›ââb;;»öíÛ{{{———«o@ƒE¾ó›þ¢(Jë„.pSšž–+©&Šû²×®s£UU`'­¬œ,Ý7sí`m  œ< BÀçƒ) -[’‰¤:‘𠄆";[µÔûáC‡úöíËäÍ;v,ãë…­[·îß¿ßÔÔ4..N[[;***((H__ßÎÎŽÍfË2K$’ØØØŠŠ cÆŒ …<OKK«mÛ¶&LÐÐа°°ÈÍÍU©VåèuÔ¯_?===¶¶¶áááêÜ¥K—˜˜iii"‘(77·Q4øXõä) tV’Òhó‘2”'&•ìNŸÆŸ¢¨+W‚Ë…Pˆ7 ÁÈÉɈ‡¶6ÒÓag‡5kàè]],Y‚;Aìíáà€1s&|}‡Çqæ &NÄ‘# qö,45±t)¼¼ `ãF˜›+J½W¤¥¥}ðÁ̱,ö‘ÏçÛÙÙ¹ººð®^õ÷õõuww?qâDXX˜¼6›=jÔ¨³gÏŽ3æÙ³gsæÌQ‚Ëå2Ñ„Êj—/_®<º2Ìo&33S–*’Ç㙘˜deeÕ%¢²3›ÍÖÒÒÚ´iÓ§Ÿ~Êb±D"‘ÊÛ¯Ë5Ë› ä P(­êJRš-%V’¡ÁÍvv¨k~gÔ(Ü»Wsêë‹o¾!`ŠÞ±X Áž=ÐÑ‘¦¥œ8b±´óÏ?ãçŸ@"Áõëjvð(H½WŸb¦vT»A&&&)))®Õ«þyyyººº+W®9r¤³³³——W`` ¼’ãÇO›6­[·nüq]c)«U9º2L»‘‘Qtt´¬QOOÏÈȨ®±TvÎÊÊš3gNjjª¬Lb£ hð±øûû×£„B¡P”¡ Ü”æBkÚÇÍb5⣣]ÝZ-ÐÒªO„ËCÃú¤ÞîܹÃLï fÚÚÚ:((èäÉ“„>ŸŸ˜˜˜ššjaaš  ªªJ¶zïÞ½±±±Ë—/Ÿ4i’Ì‘’ík‰DÌßÊjUŽ.›ÍÖÔÔ,--•H$³gÏÎÏÏÏÌÌdt¦§§Ïš5K¡?S}€Êα±±åååmÚ´ÉÉÉ‘H$b±¸Q4øXä;¿™¯‡B¡´v¨+IizZ_¬$!Mÿy2dȲeË,--,XpþüywäÈsss{{{“ÀÀ@{{{‹µtéÒÇ'&&nܸ1999>>þÒ¥Kééé._¾Ü§OŸž={ššš.[¶¬¤¤$..îñãÇgΜGŽ …gÏžUV«rtyóX,–«««‹‹Ë‰'† æïï¿lÙ²˜˜˜åË—8p W¯^ò“’’þú미¸¸ŒŒ •§N*‹§L™cff¶~ýú®]»ªo@ƒE¾ó;øî(J+€µq»ýïof¢Èg­Ç»2‰ÒúÙ´#€ùEÉV´b%wF<«èïî22*2Œþö(êPVV¦¡¡Áb±¸\®lZ±¨¨HGG‡‰8dÒ. ÙnyÙÝ»w/Y²$??¿¤¤$99ÙÐÐÐÅÅ¥®±äÕÖ3ºÂºººÌqEEEvvvïÞ½Õ)±­ÜY$±X,‡#‹e‰$e@ƒE¾3…Bi­lÚ0Þj¦YOmu:ï ŒðYë‘ø ój–½Ái¬$¥Yвb%Ey9^¼€‘X,””@OïͨÍÍEûöàñ@ -­7£¹…¢Òõ‘/ìÎlIQö#lß¾=//ÏÈÈÈÈȈòàÁƒ?ü°ž±”ëÅ7èxÉwÐÒÒR?ÕŽrgY=‡ój4øX¨I¡PÔ‡.pSš ­)V’!:ãÆaÓ&„†bÁŒý&󇻹IËmïßΑ—÷Æ4¿‡xxxV®læ´­\‰Ž5QOe%||ÐÒaȆ†`ÜæomR¶5+l‰.”È[TTt÷îÝ6wWõ#E"QMMÍËÕÕÕLθj®ÕŠ=}ú´mC·×´äeÖŸB¡tQ¨+Ié0{%;Ú ma5GU - 55ðôlÖÈáàË/  ÁÁàóáêŠË— %HL„—LM±?ÄÅA(ÄöíHKCZœœ ÀÖkÖ °K–`ýúçʳ²0q"ÌÌ{öÀÜׯC$‚·7•ª5CiÛ·#.ÎÎP(\Ø‘J¥AAA•••çÏŸo/µþþþ‘Ì6‚— ''gĈªz"""úöíû µ­ ‰‰‰}ûö½sçNÛFo—)hCmmmhh¨Ýk‹B¡t*¨+Ié,t•ؤªï¨Úrí¼óŽr_ÁÛß~‹¯¾‚¦OGU\\põ*rr `íZlÞ +WÀçŸÃÍ ï¿“'‘ØX¸¸`øpTT@1Øtó&ŽÇßÿŽåËQ_ùóñð!$¼ó\]QQ¡¬P­J£Üº…¼<,^ ÕÕíµ~¯„cÇŽI$’É“'Ž;öeT]¸páÆÌuzzúêÕ«_Ò¶ &L™2Eµ}ñâÅÚÔnôõõ•çÙ´v™‚6zxx¼Œ© ¥‹B]IJÇÓýêJþ÷¿`±Àá¨y‹Áƒ›ò¸'oß>p¹06†£#8ØÛC$RîÕ¿?ÌÌàæ†qã0u*Øl(%"¡gO¬Y §NA!µjÜÕš¡4о>Fl,LLZ<¼§“  ™×Ó&&&m8©E~|Qee¥OݳM†††mÞ=)/~@^²GF³6Öj°Aqµ¼Ì´‚ÙiJÉ¡PÞ@¨+IéxºJ<Z(7dÚw’%%ÏÏ6äñ`c¥C˜uu›mO”Èf«÷MåOèè`Ìh²QØ’Š£XX`ËÀÕ9eïÞ½)))ùùù|>¿¸¸xÏž=æææ×¯_‰DÞÞÞŽŽŽRRR½¼¼LMM÷3{€K—.-\¸ðÛo¿uww¯ªªŠ‹‹ …Û·oOKK+,,\²dÉúgÛ ‚ƒƒù|¾««ëåË—5èܱcGRRRppð† Z5>++kâĉfffqÌÖ 333 ÀÁÁAñÅôÅ‹]]]{÷¬v”ÔÔÔÞ½{¯Zµ ÀãÇ?øàƒÃ‡·:…´´4'''@`kk»†ÙÓ €Ò-Í÷Â… +W®üþûïwîÜI]I åM$lkÔc„m ÛE(”öCþRü¦)Þ†mZò婜›âNøÝSûß‘’̵kDW—|óšî|>17~;q"Ù¾B BHv6éÙ“B$kך$-,HVÖóŽK–U«!¤¾žäþý¦vÏØI®\!„€ ®¬°%3Gyò„BþýobiI–,Ñz:‚Õ«W/Z´ˆ¹f¢hW®\!„ÄÇÇ>œRWWgjjÒÐаeË–‘#GB*++íìì !3fÌØ¶mÓ·¸¸˜"•JÝÜÜV­ZE)++³²²‹Å„@`fföäɵ:E"‘±±1!¤¶¶VOOQîïï¿fÍ%›™„›ððð'Ož|óÍ7úúúuuu·oß^ºt©L&«¨¨ÐÓÓ»ví!„Ëånܸ±¡¡á»ï¾5jTK£|üñÇ¡¡¡Œò¿ýíoÚLA$±Ùì¼¼¼S§N)š§:„ÚùŠÅb++«úúzBÈæÍ›û÷ïß¾Ÿ,…Byu„m:~ñ¾f'Pñw™’sS,ÿi–?êÄ¡ÊFŠM¶Ê{ïaùrlÛ†«WŸ7>z„¸8Ì™ƒ²2””€D‚âb0‡0Ë#‘IÓ±‡l6ôôPSÓôˆH¥Ïµ56BõÅc]JK›š›ƒÉ¦--mÊÚVTØ’Š£äæââEØÛC €ºüãNŠbánùÖ=.—kllìèèÈápìííE"€˜˜˜±cÇ22IIIŸ~ú©¢6›-/Ü;xð`###®®®ûöíS«³_¿~ŠŠŠ$‰Hu³Bs‚‚‚zöì¹fÍ‹uêÔ©èèh±X¼iÓ¦ˆˆ[[Û¬¬,FÌÅÅ……ÉW;J```rr²T*‰DC‡Õf ýû÷733sss7nÜÔ©S SBí|÷ìÙ3hÐ æàœI“&Ѩ$…òB·HS:ž®UW’¢ô{IÔ…*øÖÖøè#Ìš…Q] ¬X==DE!0Ÿ}† ++deáÞ=9‚©S‘±GÂÅ~~ðõŦMHðð!vïÆ Ax÷]äç#;úú(.ưaX°k×ÂÎYYHMmÚ oo|ü1ÆŒ—‹“'1mÚs…sçª1#9¹Ù(,–.Eh(ÊËözV÷u ««Ëä»YZZ2¦¦¦¤R)Ômc())‘Ÿ[Èãñllln6ß— ×Éf³¹\nxxøÜ¹sY,V« ™Œ:::cÆŒ)(( …nnn~~~ø*í9£Pí(}ô‘ŽŽÎo¿ý& çÏŸ¯åØl6GÝÎ ÍQ\Ã(Î…B¡¼iPW’Òñ0ñÈ.áG2¨õ•`±ð·¿áoƒH©Ï~m`éRÌŸÛ·Ñ´aqêÔç±À]»°kWÓõîݨ­sˆÝ'Ÿ<×0n®_~ÆFÔÖ6«Uþùç‰ò^E…ªf|òI³Q>üçÏ£¼\9ŧÛÀãñ2226nÜÈÜVVVC+innžžž.¿522277W«óæÍ›óæÍ»xñ¢Á Ãb± ÐÐÐPPPÀ¸’ŸïêêzùòeÕ.ÚL_i²)))‰‰‰^^^¦¦¦û÷ïgÄ.]º´páÂo¿ýÖÝݽªªJó5' ·oßž––öbŸ%…B銄mz¬‘°­Qa[£…Ò~È¿QŠ_3¥oÝ’/OåÜÓï¥Ujjj,--.\ØÐИ˜Èårãââ¤RéêÕ« !·oß^ºt©L&«¨¨ÐÓÓ»víšH$266&„ÔÖÖêéé5662GNB*++ããã™Þ•+W!ñññÇ'„ˆD"6›’——wêÔ)UµJVéèè¬[·®¾¾þ‡~`±Xeeej-QÔIY½zõ¢E‹%eeeVVVb±˜"ÌÌÌžqâ„j%JS‹ó”Ë冇‡Ï;—ÅbI$ ‹-[¶¤¦¦&%%µ¤ŸÍfË“Q«V-,ËÞÞ¾°°ðúõëª]u*QRR"?™†ÇãÙØØÜ¼ySCµÓg³ÙJ“U좫«Ëlå,**²´´dMMM_h‚-ÍúE»P(”®JR:ž—Ù+™ÀãñX,ÖÛo¿æãã3gΜWQBå»ï¾c±X h[÷[·n¹»»³X¬O>ù¤]í¢´ŽMAAüöÁƒÌëìððð1cÆ0UUU+V¬8sæLaaahhhÛÔj.--µ¶¶~¡.ÌÍÍóóóå·FFFæææÚØ¦ˆêdÕÂãñ˜à%Ceeå‹Z«u%)”7êJR:ž—ÉÝž?þìÙ³LŸ>ý믿NLL‹Åvvv?ÿüs»Úˆùóç¿LwkkëÅ‹·—1%ȳ¤ãúúzR©T±ÑÙÙ966öàÁƒ„¡P˜™™YWW×£GÒÒR™L&•Jsss/^¼hoo/nß¾ ÀÜÜœ)^ZZ*OF&„0ÊÕªU5¬¡¡€X,¾{÷®———Ú.Š:™.Ìõœ9sÊÊÊJJJH$’ââbwwwÕ.š§¯:Y($•K$FÒÉÉ)??ÿСCÎ;—““£ÖÚ'Ožœ>}Zu¦Ì1³Ùl==½šššW”O¡P:Ô•¤t ^f¯$󦩟Âb±¾ûî;™L¶nݺû÷ï·£…/b¡AšWDnnî•+WŽ?^QQ **ª¢¢bÿþý"‘è·ß~?~¼‡‡‡§§§MLLŒ‡‡ÇŒ3¤RéôéÓ322ìììÖ®][SS³téÒ½{÷æææ†…… õöööõõÕÑÑár¹—ó+ IDAT'OžLNN~øðáîÝ»™=ˆªjUm‹‹‹ûé§Ÿ\\\’’’LLLT»(éÌËË;qâÄüqüøq£FŠŠŠ ÌÈÈ ŠŒŒ´²²RêÒêôU'›žž~ïÞ½#GŽ”——'$$ˆÅâ£Gº¹¹­^½ÚËËËÄÄ$%%eæÌ™j'˜ššêîî®ä#þþûïÌ®€ 6Ü¿ŸÅbùùùùúú¦¦¦¾âŸB¡th7åõ£šÁ­”ÇýBÜL¼páÂ…Ìíÿû_&gâçŸ&„äåå999N™2¥¨¨ˆòå—_Ž=zÒ¤I%%%Ÿ~úéèÑ£?þøc¡P¸`Á‚7þôÓO£GvvvÞ³gµµµƒƒÃåË— !ýõKKKfUµ„ˆˆˆï¿ÿÞßßΜ9ÙÙÙL㯿þ:dÈÑ£G‡„„`Ò„)¯ŸÇ×××Ëo™€œD"abu„G)v©®®f$µW«ˆ‘‘ÑÙ³g>|È(צ‹Zêêꊋ‹_¨‹J“Õ ùôéÓÚÚZÅUkŸ¨ªªZ¶lÙ•+W®_¿>`À€ÀÀÀ?ÿü³¶¶vÈ!ƒ Y´hÑŸþyòäIƒU«VýñÇqqqJC¨U[TT´bÅ [[Û˜˜˜ãÇ3nCCæÉËË311yùÙQÚL¯^½ä),tuu™rèèè°X,&ªýÖ[o)váñxPÈàÖF­"„™LÖ§OF¹6]ÔÂår‡ öB]”Pš¬I}}}æ¸9ªÖjy¡¡á‹[J¡PºÔ•¤t<í~Î ó[(“É¢££kjj† `èС=ŠïÛ·ïìÙ³=zôÛo¿•––r¹Üÿûßõõõõõõ¦¦¦Ìër‡3wî\¦0µbæƒZµ\.÷ý÷ß722ÒÑÑ111¹uë–D"9{ölmm­““‡Ã±³³kÇ9R:9ûöí«©©ILLlß …ÒÙ ®$¥Sоu%ËÊÊØØØ…B\.ÏüK¦eÑ¢EsssêëëwìØ1iÒ$%=LüF1¿A­ÚAƒ;vìØ±c!!!LMiBHff&€Þ½{·×Ô(]…Ù³gWWWÿý÷}úôéh[( åB]IJg¡½b“ýõWYYY¯^½¼½½ûöí‹gG3Y±LˬY³úö훚šúÖ[oyzzˆŠŠú裴B­ÚË—/2$333""Bþj‘¬­­}ùyQ:"‘¨¦¦F³!„Çãñx¼–jF*Q]]ÍdŽ+]¿Lʹ6´:…ö½¨¨H{Û(Jׂº’”Žç%÷J2Μ“ºU%rrrFŒÁtQ¼ÖžÚÚÚÐÐPí7Q¼¨…m]*•UVV:88¼Š‚¯ ¥Ã¡§ÝP:ž—9çF ¤§§ÈÌÌ +//‹Å.\6l{{ûüq÷îÝfffû÷±±±a:.\¸P(ZXXé`÷îݪ««?~îÜ9ÅÅÅ/^d^Uß¿ÿäɓӦMSUëììùõ×_×ÔÔ >üßÿþ÷?ÿùÏ   E‹íÝ»·¦¦†ÃáèééÝ¿ÿÂ… cÇŽm‡…£téééúúú/# Ä„ ¦L™¢z­=†††h×Q Û<ú±cÇ$ÉäÉ“ µÌסP(] êJR:Ì^ÉÊÊÊíèããããã£A`åÊ•wîÜQ<ƒ€­­í/¿üÂ\oÙ²E¾qÅŠ+V¬`®gΜùå—_2×cÆŒùüóÏ5¨1cÆþ󟆆sss™Lv÷î]&‘ü—_~Ù´i“ŽÃb±Úñ÷›òBH$Å\l™L¦”X­=ª¹É„ÅÌh-“—Mb³Ùr Š×ZÂLGs/Å)·:…ö](2ƒÒ Jw…¾à¦tÚ=[޾¾¾ÚZ*fffÌEÛÒbTÕššš2çÚ±ÙlÆdèׯŸ‘‘‘õ#_{÷î555ݽ{÷_ý5eÊ”±cÇ2; ‚‚‚~üñG;vìHJJ Þ°aÓeûöíqqqÎÎÎÌá.Šóù|WW×Ë—/HKKsrr¶¶¶kÖ¬),,\²dÉúõëù¢¢"OOO>Ÿïàà°jÕªôôtE””‡ÄÄD///SSÓýû÷3½TMRËž={† ²qãF‰DRUUõÉ'Ÿüúë¯J2.\X¹rå÷ß¿sçN¹3—™™ààà ‹­8åV§Ð’ÙªjÕŽ®øÑ¤¤¤äççóùüââbm–WÓ'M¡P:%4*IéxäñÈv©+IyÓðõõåóù={ö´°° Y¿~ý{ï½ OŸ>‹/¾wïÞ?þñªª*77·^½zñùüÒÒÒ¼¼¼äädOOOfw„œGy{{_ºtÉÈÈ())iúôé7nÜxÿý÷Ož<9tèÐØØØÚÚÚáÇWTTÈßÕ~ñÅ6l3fŒ³³³D"ùàƒ ä...Ë–-ËÉÉ;vìØ¼y³···ªI-•®ôóóÛ¾}»®®nÏž={÷îíìì¬(P]]=wîÜ«W¯öèÑã믿f¶dܹsçÀÑÑÑ•••~ø!‡ÃQœr«SÐÕÕU5[Um¿~ýTGWdÁ‚—/_®¨¨øê«¯´\Þ—ÿ>P(”× JR:žW¤¼ °Ùlÿ´´4–––B¡°°°P&“Éd2##£~ýúedd(**’H$"‘H__ÿðáñ±±&&&nnnŠªbcclddÀÕÕµ¢¢bß¾}ýû÷733sss7nÜÔ©SÙl¶¼’¹L&ËÌÌd²¬&Nœ(‹y<ž¢—Ë566vttäp8ööö"‘€ªI-MÅb­X±"::šR^^þî»ï* ìÙ³gРALh|Ò¤IL\0::Z,oÚ´)""ÂÖÖ6++KiÊ­NA­ÙªjÕŽ®m–·µO›B¡t:¨+Ié´o]IÊ›†¿¿zzzmmí¡C‡|}}“““³²²¦M›€Ífs¹Üððp‡Ãb±$‰……Å–-[\]]•¶K*n¨åñx6667oÞd”¨­éÃf³ÇwôèQ>œ7ož#uuu™:ª&ièåããSQQqòäÉ´´4¦t€"EEE Ã\…B>ŸÏçóÏŸ?¨aÊ­NAn¶ªZµ£kàE——B¡t ¨+Ié,ÐØ$¥ÍX[[3&..ŽÇã-_¾|ß¾}§OŸþàƒܼysÞ¼yááácÆŒa„«ªªV¬XqæÌ™ÂÂÂÐÐPE=æææùùùò[###fó«öïßäÈ‘]»vyzzΚ5KkUMÒ€ÁâÅ‹£¢¢îß¿omm­ôÔÂÂBÑ`&.hcc£xDÓƒ4LYû)¨ªU;ºÚ°¼ ¥óC]IJÇÓ¾gpSÞL.\¶hÑ"{{{ùaÓ™™™uuu=zô(--•ÉdR©477÷âÅ‹ööö@©øœ9sÊÊÊJJJH$’ââbwww„ÅCå¡ÄŸþ9333((hÚ´ir_JQ€ é1 ™º¤ª&áÙÝŒ¤â5€åË—>|Xí©9žžž………Ll¯¼¼œyOíìì{ðàABˆP(ÌÎÎVr«SP5[U­ÚÑ•hhh`*¿j¿¼ ¥kA]IJÇCã‘”—ÇËËë“O>éׯ€E‹ÉKD͘1C*•NŸ>=##ÃÎÎníÚµ555K—.Ý»wonnnXX˜¢’Q£FEEEfddEFFZYY%''?|øp÷îÝ¥¥¥òóó³³³OŸ>ͤ$Ÿ9sfàÀ–––¶¶¶ÕÕÕŠYYY÷îÝ;räHyyyBB‚X,>zô¨ªI¿ýöÛÙ³g³²²®^½š——'¿f¬²¶¶vttTÚÖÉ0bĈÀÀ@‡ ?~œÇã%$$Œ?ÞÃÃÃÓÓÓÆÆ&&&ÆÃÃÅb)N¹Õ)¨5[U­ÚÑÍËËË;qâÄüqüøq-——B¡t9Xa[£4‡‚˜ßøÍk–½.“(ÝŸðo”b!Iź’Ûb<¬àûþá”$úÝ£hIcc#³åN~Á ‘HX,–ŽŽŽT*e³Ù„6›]^^.O=Q¢¾¾þöíÛÖÖÖª¤”¨­­ýᇖ,YRVVÆ8‘fff¾¾¾­šªdR«¯†ƒƒƒ#""4˜Ál»ÔÕÕ•«ª¬¬400`¦ÀÔ}T;å‚¢Z £k@ûå¥P(¯”ð8Ͷ³ÔªJݶ˜›×,˽U €ùi–ÿdÓb@”ÎÂËœyC¡»J9òR;:::x¶¥¯%?—ËeNKj•­[·>xðÀÜÜÜÜÜœrëÖ­Ñ£GkÓQɤ–¸wïÞõë׋‹‹=<<4ˆ©­ˆ®˜ÇÆäĨò‹NA5=NËzìr´_^ …Ò% /¸)Ý+Ié¢,[¶ìþýû#GŽôóó[·nݰaÆÞŽú>ìîî^YY9}úôvT«È«ž…BéöШ$¥ã¡ñHJåí·ßþõ×__æ FÍ,_¾<((è)gxÕS P(ÝúÿJ§€Ö•¤t"‘¨¦¦æ%•´Í k)åYUyCCCCCC†`¨®®–'ª·4_m¦Ð.kE¡PºÔ•¤th7åõãïï/?Nº lÚ´‰ÍfÛÙÙ•””\¼xñþçX,ÖŽ;þûßÿ8sæLïÞ½×­[§XÙ‡!""¢oß¾<Ðf”={öìÙ³§mæääŒ1B>Ç—™ïK®…Bé®ÐܔއžÁÝfª«Q^+«6v¿{––íjPqáÂ##£Áƒ¿¨pzzº¾¾VÙ‹jùâ‹/rrrÊËË à§Ÿ~š4i’­­-“›®®¸|öî…©)vïÆ_aÊŒ ¡‚‚ðãHIƒáåSS<‹ø4CU'€;”„à`lØÐÔráV®Ä÷ßcçNhm{—!::Z,oÚ´)""ÂÖÖ6++K__ÿðáñ±±&&&Jg²ÙlyÕn.—kllìèèÈápìííE"™L–™™É¸}'N‹Å<Ouйsç^¾|¹¸¸øØ±c«V­=ztrròµk×Þ{ï½–¬bÚƒ‚‚zöì¹fÍ‹uêÔ)UÍ©©©®®®ÌäÇ8;;÷èÑcåÊ•½{÷>qâ„ÚÆ–æ3vìX¦RzRRÒ§Ÿ~Ú¯_¿ŒŒ EEE‰„Yµ}ccclddÀÕÕµ¢¢bß¾}jPÃâS(”nC·x¿Eéât­º’ª¾#‹Å"-肋3dØlää`ôhx{ãÒ%!) Ó§ãÆ øú‚ÏGÏž°°@HÖ¯ã‡ôéƒÅ‹Áá`Ù2ää@ ÀŽؼÞÞÍ”?z¤Fgu5þñTUÁÍ ½zÏG]æÎÅÕ«èÑ_sçÚmY:æs …nnn~~~ø|>óhË–-©©©IIIŠÂ-¡««Ëlïc³ÙãÆ;zôèĉ>|8oÞ<µò3gÎ444üç?ÿÉb±¸\îÿþïÿnܸqÀ€ryU«˜of롎ŽÎ˜1c fÍš¥¤yÿþý†††{÷îзoßèèèO?ýTuâööö………­6*RTTdù,åÊÔÔ”¹àr¹ááásçÎe±Xò“ªkURR"?óÇãÙØØÜ¼ySíZXX¨.>…BéfШ$¥SÐÍöJª…Å‹…†ÄÆbð`€«+**°oØløû#- ,-!¢°2d2Ë…±1ÁáÀÞÍFÔëì×PT‰"öìÁ A`Ü€I“ºUT’ñxlll ä<¨ªªZ±bÅ™3g CCC…µaÿþýGŽÙµk—§§§ª«Ç ¯¯ïââòÓO?¹¸¸˜7o^]]ÝÁƒå'ªZ¥jü€”KJJ† –ùçŸæææªPZZjmm­M£ÇÄ *++™—ÑááácÆŒQ²M©¯¹¹y~~¾üÖÈÈÈÜÜ\í(jŸB¡t3¨+Ié,t‰_''§üü|&æÜ¹s999™™™uuu=zô(--•ÉdR©´¥µš3gNYYYII ³VÅÅÅŒñª ¨´øš>E …Òeé.?&”®LÚ+©Í‹ì–8x˜:ææPˆéÀÈLLÇÚcÆ .<–/Ǿ}8}| •rµ:oÞļy‡<ÌdaÑL¬{D%Y,–ŸŸŸ¯¯ojjêøñã=<<<==mllbbb<<}zFF†ÝÚµk+++Õ®Õ¨Q£¢¢¢322‚‚‚"##­¬¬Ô. Òâ·ßgN¡P:4ƒ›òúQÍàVúvæ nµÿ©Š…„<Ïà–Jɾ}„Ã!'OBÈŸ6›Ü¸A!¤gOrëV“ä/¿ccrÿ>!„ B6n|®ðÝwÉ„rö,16njôó#ÿ{‹:##É;ܽKX,rõ*¹|™èè’BIM%}ú´çÊt,555òëÇ×××3×R©”òèÑ£–„5ëÜ´iÓ_ýuéÒ¥?þøcÇŽ ÚðôéSf\E­bhhh¨¬¬ÔÆUŒŒŒÎž=ûðáCÅÔ6jàéÓ§µµµò[&îH‘H$2™Œili­êêꊋ‹•f¤„ÚŧP(„öÊà¦i7”N³W’9ó¦“CQzÑITüËŒ ;‘+Wâñcàñ€ùó_邽& å׊ûn™Ôyö±ª°¶nÝúàÁssssssBÈ­[·äÛ5 öTÕÝÀGM|Q!2™¬OŸ>­6j@ÉNÝg…Futtä-­—Ë6l˜fýjŸB¡t3¨+Ié,t¡BI‰&¥K1>nßFDÄó=Žx<È÷Âýýïàpš®§N…TÚt½kvíjº¾uK“Îq÷.X,èè`ñb°Ù`±­[›vOêêv“wܯˆeË–Œ9rôèÑýúõ›;wîðáÃ;Ú(Ø·o_MMMbbâÀß~ûm  …òª¡®$¥ãé~gpw9ÿì%¶€vgÞ~ûí_ýU&“µíÀÀWÇìÙ³™]›=þ!¢¶‘B¡P^5ëÿ”7“.‘»ýBÒÅþtuÊËË™Bâ/£áéÓ§jµÍ‰D555/c’ y<ÇãÈ×-4¶™»wï¶£…BéÆPW’Ò)xêJR^}ûöU-Ö¨=‰‰‰}ûö½sçNûÅã¶»µµµ¡¡¡vvví"F¡Pº=Ô•¤tº_lR{ª«A‹îµ™Å‹ËT+m¶À… nܸ¡Ôèëë+Ï8i/ÒÓÓW¯^ݾ:_†††­.ˆ1µ‹L¡Pº+Ô•¤t<]¨®¤–¤¦¢o_ô쉿ý prBbb‹Â991]3€Õ)`^@kS=¾²²ÒÇǧ®®®%%j‘×0gÐà¶*>244ÔæÍx«)\mFÕN¥‰hèÈf³[]Ï–Ä4,2…Bé–PW’Òñt¿x¤§'¦LÁ°aøñGìÞµk1>Ž©kÆ„ ˜2åõÚ×ÉÊÊš8q¢™™Y\\€={ö˜››_¿~]$y{{;::ˆ‹‹ …Û·oOcN¨lÎÅ‹]]]{÷îœœÌ´ìØ±#)))88xÆ LËöíÛãâ✙sbQ|TXX¸dÉ’õë×HIIqppHLLôòò255Ý¿?#éÒ¥… ~ûí·îîîUUU233Ô¾Wzzþüù &0ÏÌ›7oûöíR©T Lš4)22ròäÉ<oãÆj'Ò’I.\X¹rå÷ß¿sçN¹¨j•Z19J‹\PPÌçó]]]/_¾¬ÍGI¡Pº´D9åõ£Z¢üñãǤyÅòN[¢\KæÏ'ãÇ7]K$DG‡lØÐ¢°¿?Y³¦…Ín[-A­]êî“pþäÉ“o¾ùF__¿®®Ž‰À]¹r…?|øpBÓX\\¬ª„Ëånܸ±¡¡á»ï¾5j!D$Bjkkõôô™Sª !•••ñññŠÝ•I¥R77·U«VBêêêLMMCBB¶lÙ2räHFÌÎή±±‘2cÆŒm۶ݾ}{éÒ¥2™¬¢¢BOOïÚµkŠúÕ>Ý»wï[o½uïÞ½ÐÐPF¬¦¦FGGgݺuõõõ?üð‹Å*++SˆZ“Äb±••Sr|óæÍýû÷W;®Z1E¹¬¬ÌÊÊJ,B™™Ù“'O^泦P(íH{•(§QIJg¡ûÅ&å\¼©3g6Ýff" ê_j«>ݱIIƳжoG\œÁ„ÆT»( ¼ õìÙsÍš5,ëÔ©SŠE¶µÜéââÂápìíí™Ó¢ûõë—‘‘ ¨¨H"‘ˆD"}}ýÇÇÆÆš˜˜¸¹¹)öUzÄf³åu¹¹\®±±±££#£\$ˆ‰‰;v,cXRRÒ§Ÿ~-‹7mÚakk›••¥¨_íÓùóç:ô£>Z·n#fhhh``àììÜ£G•+WöîÝûĉªQkÒž={ Äš4inTW­XKÄÆÆ<˜9ÒÕÕµ¢¢bß¾}Ú| ¥‡mV* IDAT AëJR:žîWW’¡¶§NáÊüßÿá‹/0aܹƒÊJXXàÃñÞ{Ï»¨>54Ä?þª*¸¹¡W/ðù(-E^’“áé‰ôt5]8œfoÌÆD1cÆÌš5«%IÍÞ‡Ãaâjl6›Ë冇‡Ï;—ÅbI$ ‹-[¶¤¦¦&%%)öÒðH]]]f cQQ‘¥¥%Óhjj @(º¹¹ùùùàóùJ[zúÙgŸÍ›7Om#‹eoo_XXèãã£4‘–L0`Ó(ßå©:nPPª˜ÚÑ”””È‹\òx<››7o¶Ô…B¡tQhT’Òñt×xäÓ§8{+V`Ã|õUSct4ÄblÚ„ˆØÚ¢yìIÍÓ~ýš6YA"H}}>ŒØX˜˜ÀÍMM%7 ‹%÷uZÐFóÎ:<<|̘1LKUUÕŠ+Μ9SXXª(¬á‘Zx<^†ÂæÙÊÊJ›‚‚y‹Rm£–žfdd8;;·4bii©µµµêDÔbaa‘ŸŸ/¿eVIu\µbª0íæææŠÂFFFæææl P(]êJR:ݲ®¤™Ö¯ÇâÅX¾÷î55 …pqŸ>çÏ#0°YÕ§l6¸\„‡7u(‘ÀÂ[¶ ®®`³ÕtQx£¨««+--uww`nnÎÐ.--eŠÙl¶žž^MMRv3!D*•2á:‰DÂ\dffÖÕÕõèÑ£´´T&“I¥ÒÜÜÜ‹/ÚÛÛ ‚ÛÍ«7©>jll”ÇÿäÃI$B''§üü|&wçܹs999ÎÎα±±$„…ÂììlEýjŸÆÅÅyxxüøã¿ÿþû¯¿þ*nhh ‹ïÞ½ëåå¥:µ&yzz2QCyÉwÕqÕŠ)¢¸ÈLVPII 3Pqq1óÑP(”îÄö;CéÄtרäO?ÁÔ>>M‡hÛØ@!Ê¥ºÚªOoÞļy‡<¢TU…+pæ ª¦‹’@·GOOoÁ‚k׮ݹsç‚ RSS™Íy¡¡¡ÞÞÞ¾¾¾:::\.÷äÉ“,ËÏÏÏ××755UQƒ@ hllLLL¬ªª ˜1c†T*>}zFF†ÝÚµkkjj–.]ºwïÞÜÜܰ°0E ,KñQ~~~vvöéÓ§‹‹‹³²²îÝ»wäÈ‘òòò„„±X|ôèQ77·Õ«W{yy™˜˜¤¤¤Ìœ9süøñžžž666111ŠúUŸþþûï‘‘‘ãÆëÓ§Ï„ /^œ““ÃÇÅÅýôÓO...III&&&ªIOOW5iĈ ,8~ü8ÇKHHPW­˜ÒRÈyÔ¨QQQQAAA‘‘‘VVV¯äK@¡P:VØÖ(ÍÔ˜_÷Ík–½.“(ÝŸðo³ER¾WRζ˜ë‡ø¾8%©‹~÷<=qëþüΟÇĉX»_~‰ìl̘øx¸»ãúuaÎøûÃÌ Û¶©yZV†o¾ÁíÛ¸ ¸¥¥03Ø18w|>6mRîbdÔLà÷ß;z-^ µµµ&&&Š555<O"‘(fÞÔÖÖj£S"‘°X,©TÊf³ !l6»¼¼\žR#‡)²¨ö‘êêê!ò–ÊÊJƒ–ÑÖü”ÁØØø×_2dÈ[o½%ß˨4 ¯økkk9‹ÅÒÕÕ•‹©Ž«VLI|‘ëëëoß¾mmmM§P:áßEOqšmg©¯ð¶˜›×,˽U €ùi–ÿpÓ¨$¥ãé~ñÈÔTœ;‡+W ©ï¿M›°y36lÀˆðð€§'lläåáìYdeáêUŒ¯ütÆ H¥˜>°³ÃÚµ¨©Áҥػ¹¹ SÓ…Åj&ð†Àáp”üH<*ÜZú‘LG&\GG‡Åb1ž™ZgQÃ# èëë+ú‘zõê¥ÁßÒü”"“Éúô飘£4 Ý õôô7QøjÅ”ä×\.wذaÔ¤Pº+4ƒ›Ò)`öJ*Å&».žžðôlÖòÙgøì³¦ëøxüø# Àü¶ÚÙáÖ­ç’JOÄÝ»`± £ƒÅ‹Áfƒxz¢¼r¿E©Ë‡âüùf”7„}ûöÕÔÔ$&&8ðí·ßîhs(Êu%)&6Ù=êi—"üúxe‡óQ:³gÏ®®®@C€ åµA]IJÇÓýêJR×­³Q^^n`` ô6¹£(**222’ו|yD"Q¯^½x<žöïî) ¥½ {%)O÷Û+IéT$&&öíÛ÷Î;m¤RiPPPee¥ƒƒÃùóçÛK­¿¿¿Úc») å5@]IJ§ [Ö•|TW£yACJ‹\¸páÆ|}}µ<;Qm/#|ìØ1‰D2yòä±cǶ—=ééé«W¯~m …Òf¨+Ié,t§Øäñã4ººXµ aaX»|>®^}Yµ991BýÉÝ%*++}||˜ÊäÐxÄ_´©E^ô[ƒ°P(d,111ÑòÐEȳJC¶m‚J¥Ú) ¥ PW’ÒñÈã‘Ýf¯äÌ™˜5 ýûcÇ|ý5¾ùgɓñ¬†t™0S¦´“‰Ý‹‚‚‚àà`>ŸïêêzùòeqqqB¡pûöíiiiŒÌÅ‹]]]{÷̴dff8880o‡ÓÒÒœœœ­­íš5kõ+iSê`ûöíqqqÎηRšaïÞ½)))ùùù|>¿¸¸xÏž=æææ×¯_‰DÞÞÞŽŽŽRRR½¼¼LMM÷ïßÏô½téÒÂ… ¿ýö[ww÷ªª*Å! —,Y²~ýú––¢%Š6·û'B¡PÞ Â¶F=ÖHØÖ¨°­Q„Bi?äß(ů™Ò·nÉ—§rnŠ»îwoõjbiÙ¬eåJÂã‘'O^J­¿?Y³F+I©ô¥êB”••YYY‰ÅbBˆ@ 033{òä shaqq1#Ãår7nÜØÐÐðÝwß5Šrûöí¥K—Êd²ŠŠ ==½k×®‰D"6›’——wêÔ)Å!µ©vd¹&„TVVÆÇÇ+ ­ÈêÕ«-Z¤¨óÊ•+„øøøáÇBêêêLMMCBB¶lÙ2räHF­]cc#!dƌ۶mSB*•º¹¹­Zµª¥¥P«SÉæöÿT(J§'lkÔñ‹÷5;Š¿Ë„œ›bùO³üJR:]k¯$«9ZöZ²55ÈË€ÌLÀÁ¡émuj*z÷ƪUðø1>ø‡«S¢ ÁÁàóáêŠË—@ À¤IˆŒÄäÉàñ°qc“¤’ž´489A €­-šGߺ$±±±ƒfKtuu­¨¨Ø·oŸª˜‹‹ ‡Ã±··gÎÈŽŽŽ‹Å›6mŠˆˆ°µµÍÊÊêß¿¿™™™››Û¸qã¦NÚÒpªõõõ>kbbâææ¦¥ÙLÍpùVN.—kllìèèȘ*‰ÄÄÄŒ;–‘IJJúôÓOõ°ÙlyitµK¡VgÛl¦P(Uh1 Jg¡«Ô•TõY,Ñ¢üÏ!`³‘“ƒÁƒqࢣQY |ø!<=±gO“˜©)FÂÇãÎe±÷Þ{®íÑ#x{ãÒ%!) Ó§ãÆ ¸¹ÁÏŽŽøí7ìÚ…U«°|9jk•õ¼ÿ>NžÄСˆEmm»­LGQRR"/£ÈãñlllnÞ¼Éܪ~X‡ é …B777???|>ŸyÊf³9NK1ÚÔvܲeK@@@jjjRRRKC¿(ºººÌ^Æ¢¢"yå SSSR©Tí–BI§………ªÍ …ÒhT’Òñt¿½’ja±Àb¡¡ÑÑ‹±i""`k‹¬, Dr2¤RˆD:€z19±±<FFàꊊ ìÛCCÀÙ=z`åJôî'Ôèéßffpsøqh9úÖe077ÏÏÏ—ß™››3×ü9›‚‚ùíƒZˆÑ¦Ú±ªªjÅŠgΜ),, muè…ÇãeddÈoå‡B©¡a)”Pk3…B¡´êJR:ž.”»ý2þÁÕ«J1f „B¸¸€ÏŸóç}üö„·7õbrJJ ?Єǃ š‡ŸÀbÁÞ……êõ°Ùh9úÖŘ3gNYYYII ‰DR\\ìîîÎf³õôôjjjd2!D*•2ÁH‰DÂ\8;;ÇÆÆ}útqq±Ú¥P«SÉf©©©îîî´<…Byah7åõ£šÁ­”ÇÝ™3¸Õþw¤*ò<ƒ[*%ûö‡œþ³f5ݪŠååáìY˜šâêUŒ…¨(â³Ïpà"#aeÕÔ1.EE8pII01Q£'9b÷n „wß}uKõZár¹Ã† SjlõLꊅ+jSìÈ”—§Qk94ǃB·ôõõ5Ø£ˆÚ¥PB­Í={ölÕ …BQ‚º’”ާ«änËQõ•øè#””´ø”ÍF|<~üÏ÷;2$&>ߨ*fg‡[·ž /]Šùóqû6""šéY¶ C† $Ì(ªz>ùŸ|¢õl) …BiêJR:Ì^IyjjW§ý’wÛÂäÉ/Üå%¶€R( 冦ÝP: ](»Ué˜?̉€Ë–áÞ½ëH¡P(JÛ QIJÇÓµöJvffÏFu5å÷æ …B¡¼"hT’Òñt§x¤* ­ËˆD¨©Ñ$P^ާO5 TWãöm‚ǧ\3²¾^ C) …Byq¨+Iét•º’/DCvîDc#ŽÀ8bqÓ£»w±p!úöEl,øû«?e›!1}ûâÎrr0b„& B!NœhÓ( …BÑu%)…n›llDP>ù††˜5 (-ŲeMO--±y3fÏÆ¢EžŽÕ«[Tåë µµb.\À0a¦LÑd̨QøïŸóM¡P(J{A]IJÇÓ-ÏàÞ»#GB±lßW_aß>ÄÄ4ÝöìÙt‚6CæÂ=r”RaØ*ÿ¥VVÂÇÏÛ›ÝJÚ¸‹ bc[yN¡P(Ê‹B]IJÇÓÍâ‘ÁæÍpwoÖ8o–-Ãßþ†ââfí……X²ë×7ÝÁÓ|>°jÒÓ›Ú/^„«+z÷nJÓŽ‹ƒPˆíÛ‘–ÖLÛž=27B"AU>ù¿þ ,&M®]¯`¶ …Byƒ¡®$¥SÐÍöJÞ¿»wai©Üþð¶Æ¼yÏ£‰†GEÅóxá_€ÏǦM06†D‚>hj¿y©©X·ß~ +WÀçŸÃÍ­Ù~~Ðׇtuѳ'z÷†³sÓ#[[üö[ûN”B¡P(o:Ô•¤tºSl²¤ffjÞ8ëëcÿ~ܺ…ÿ÷ÿž7²ÙÏ߃ËdÈÌlJ¸ž8b1x¼¦G..àp`oÛ·5 ÍbaÅ DGƒ”—7;±W¯¦½• …B¡´Ô•¤t<Ýo¯¤Ÿ¿nݺñãÇûøøÄ?sÃ?ÿüóôôtçÎsttø 55U­’o¿ý–1ÌÙÙùÆÿøÇ?˜[77·K—.mܸÑÑÑ1>>~ÇŽÿŸ½óŽkêzÿøç&$(S¥Ž¢?µÅAkD+¨uãÖ~ÕªµjëªÚÖ…¥‚pÔܶNq0”á`oˆ!Éýýq5M“Âåy¿xñº9÷œç<çxñ>yÎsžÃ”3±˜ª§Hél„&ÌÒ y*Yº!`醚@¨;¤O”âÃ&½˜ôã•ÛÉEç³'7dó&Štû°››MÓ%%%NNNR iùòå4M/\¸ðÎ;Ò&ŽŽŽLMM¿þúëE‹±X,ëׯ§iZ(¶nÝú³Ï>£iZ$µlÙ@pp0MÓùùù={öàììüæÍ›²²2Ee6mÚ ((ˆ¦i—.]R!“¦i[[[;v3fÌâÅ‹e~úé'¥ƒÍÏÏgÆenn^Ù„Ì™3@·nÝ®]»6kÖ,Š¢Ì›7¹»jÕ*¿ýöMÓ+W® äo­¸¸¸E‹¼½½™iiÕª€™3gÒ4]ZZÚ³gO‰DBÓ´¥¥%€/¿ü²²)R1Û¡AXº! òþKÕF ì š¦éÛÉEÒW³ôñJžf+Y]ÒÓÿ=ð¦´TyòÔTµD)Øý1`mmÍ,§^¾|¹¬¬ìøñã#FŒ2dˆ®®.Þ»*cbbþïÿþO®a‹-BBBÖ¯_ß©S'÷ïßðêÕ«—/_Þ¾};33“Íf3†Qdd$}}}f ‹¦¦¦‰‰‰–––œÀ—/_®X±À€ôêÕ ÀÛ·oUÈ`dd€ÅbíÝ»wݺuŒ2=ªÙldddìÚµ À¢E‹úõë·uëV.—+½ûüùóŸ~ú €³³³TÏÅ‹çååÉÉÑÑÑ7n€‹/¾}û–Ãá0&ïÍ›7üý÷ßS¦LaŒTFS¤t¶ B“æ£|çÍiï6ÃÅ‹ø¿ÿEaÖ,Ì›‡iÓðý÷P½”÷Í7ïBoßF×®òaŽ¥¥˜7½{@›#FŒP^^~éÒ¥¿þúkÔ¨Q<ÏÃÃÀýû÷¯]»Ö©S'J!g‹-ct–””°´´\³fÍŠ+LLLÊËË™ÂÌÌLuÔ8qâDYY—Ëm×®€M›6ݸqcÈ!êÈÔ××WT¦\½zU(`,66›Í’ù†qöìÙ·oßâ½ýgll    @vÓ’”ñãÇ3wÏœ9“––àÁƒ¹¹¹ÇŽ¥˜F_%Jg›@ 4iȶB£€‰•”.Û5uœœàë‹{÷ðûï (£[7àýöV%DD€ñÝ|ö ¿ËçÃÓGš•½]÷x{{3ë¶»víÒÓÓc¼Ý£F:pàMÓÓ§OgÖÕdÙ²e>üæ›orrr²ds„V³Ô. óóó[¶lidd$õØÕXfu‘&åi%=”S†gï³R1»ª¥^çÊÖìÑ£G·nÝ=zšžž¾cÇ///@pêÔ)‰D¢Îþqм!^IBc¡™ù&e—=uuѧϻ´‘•Áçÿ»0ÍbÉc#‘ÈÊ&$'0téÒÅÚÚÀ™3gƼß÷îââ˜;iii_ª ‰¦é¹sçÚÛÛëëëŸ>}š T>ŸÏ\DEEÕ•Ìê"Mý£t_ ¦ @$¨¨¨`>*µ;ñÞ1yêÔ©Ë—/2„Y_ºt©§§gëM š Ä”$4<Í>V²¬ 11ðñ€½{ajФ$¤§ÃÇŽŽ‹I“°b…’¶11˜3¿ü‚mÛþ5%7oFp0\]QÉîáfÛÄÄdРAL —Ëe,žAƒ©ŸÚðرcÌ–”™3gVW{{{æ‚ (¬™Õ…Yד“£xW0ZZZ ™Uf&¬S‘1cÆp8@ðÙgŸ`æS$ <¸®'MbJžfæ”eÑ"øûãÓOáå…ñã`ÌdfB$‚…ÜÝ‘› vvÈÍ…bØXq1¼½±q#.D÷îï SRpç&NDh(j‘+¦y¤òõõ•ÍÈÍÄóyÈþóÞcÇÄJ/ÊË˼zõŠ)¼víÚ­[·âââTTT0n<&ÎïÉ“'LB9±#FŒ`6ýúë¯çÏŸgΜ9}ú´j™J•a"IIIa. sPŽ¡C‡¶mÛ“ˆçàÁƒÌ¸˜ÐÌAƒ1û©ããã™ðññé.}Èþ‹‘‘‘««+›Íf²»6ŒÍfËM2£†TÅ)R1Û¡ICLIB£ ™å•”²p!FƸqØ¿¡¡Àfÿ{Wú"f± tiqï^tìøî|ž}ßy%µ´Ž  èëËHèÑ£Gûöí¥çÙ0|õÕW¦¦¦r§ îÞ½›Ù>ðàÁ°°°Ç¸yóæ‘#GÆŒcff`æÌ™çΛ>}:€;w†?~<‹Åzö왯¯ï„ ät`³Ù§NúüóÏKJJ dll\^^îææ¦B¦ eŽ?.'ÿþý'Nd®ËÊʆ Æ$q”ESSó¯¿þjӦͯ¿þÚ±cÇÛ·o§§§3 ’þúë/ww÷… ®]»ÖÏÏïÏ?ÿT1±&L2d£Ë–-  ;ÉŒÂ111ŒÂrS¤z¶UôK ?dÛ ¡±Ðüμ`d„/¾À_@,Æüù= ©cT‡víÞ]K#)Ḭ́~=¦LÁ±c «[}›'NœèÖ­›l‰††ÆÅ‹徫L:uêÔ©²%£G–ý˜žžþèÑ#KKKCCCcÇŽåñxæææ|}}]\\Þ¼yÓ¹sg¥ZZZÞ¼y3==ýåË—¶¶¶zzz TÈT­ çÔ IDATŒ,cÇŽ•©‚^½z=þ<>>¾}ûözzzóæÍk'}˜€V­Z…‡‡ggg?{öìæÍ›U~‘sss“.Üسg¬4ÙúrSTål„¦ 1% tïv3³#e±²BAââPI4šrÌÌþ Éx% 1{6zö„¯/æÍC``«ÚÔ‘³#ìììª+‡ÍfËOrÇ-¶jÕª²M*R,,,,,,Ô—YçhhhH׬e-?)²»Ë«Ŭ˜«&‡:SD šd›Ðð4ËXI&LzDá•+00xïhjú.ÙxZ¤¡b‰Þ]Óô» Ú^^ˆEr2ää@ €¨(Ü¿„†*ÏdN B½A¼’„FA3Ë+yéÒ»¥ç‰Áç#54›7Á82o||0lìíÁãáòeèêâÖ-hi!!%%¸v ††xü]»ÂßýúÁÉ ÚÚÐÑÁ01Áäɘ799Xº´aJ „bJ Í)Vò«¯p÷n¥w/ÆÌ™ÐÑH„ Þ&%ý[áýö\ؾ6€ÃEAC‰÷î!'GùN@ êbJžæ+©p8߇EºŒþÑBÓtRRÒ'Ÿ|¢ºÚëׯsss---™T5@¨=$V’Ðð4¿XIš®×ÂØ±c;wî~ü¸¡!„æ1% ‰•$Ô’ÒÒRB¡ùȱýäÉ“‡®ZµŠ)Œ_½zõÙ³g7lØÐPzB󃘒„†‡ø#UPPPP^^ÞÐZ4jGcLLÌñãÇŒ?žÅb={öÌ××w„ LµöíÛ›™™QõùçŸ7¤ºм ¦$¡QPãXÉèèèPÕºuë¥K—úúúŽ1âÞ½{u®a]¯~’’’víÚýßÿýßVªiãïïOÓ4MÓeeežžž|}}333ccc>|ضm[¦š¶¶vJJJJJÊÔ©ST_@hVS’ÐX¨™or̘1C‡àääôÓO?…„„õîÝû÷ßÿ:Ö–§OŸŽ5Jý:ZZZ;vdŽû#T‹V­ZuéÒEîtD×®]»Òˆ@ š'Ä”$4<µŒ•dòQ³X,EmܸQ"‘|÷Ýw/_¾¬C%kOQQ‘··wII‰úuØlvttô¡C‡êEA@ ª 1% OÝÆJÚÚÚ²ÙìÒÒR&lîîÝ»...Ó¦Mstt”.ÇÆÆ8pΜ9ÎÎΉ‰‰[¶l±··wwwþþþööösæÌ°mÛ6{{{77·ýû÷ÛÙÙõîÝûÖ­[Û¶m³²²2dÈ›7oi‘‘‘ ˜}:lØ0OOÏ€€€uëÖíÚµk„ <¸|ù²¶¶ö·ß~{ýúõàà`k×®`ddtðàA++«¸¸¸Ù³gwéÒ%00022r̘1Šuüüü|8€³gÏæä䈎ŽÖÕÕÕ××/++PPP€÷ç¦H$¼÷>20ײ%\\\,<¨è\dJØl6‹Å*++«¨¨ˆŽŽÞ³gO^^ž››[ii©@ `jÊÕ‘¥t,•õE Bý@LIBc¡f¾ÉÐÐЈˆçÏŸ_ºtéÔ©S³²²bbbF ÀÁÁá×_ <|øp`` ­­í!CV®\ùúõkkkk.—;mÚ´ÌÌÌîÝ» !!áþýûZZZãÇÏÎÎöòò²°°puuåp8?ýôÓ?þhggàÏ?ÿ”« ;;ûÊ•+JÇRY_uö¯B ‚J¨¥T¨1o÷µ Éù„:cÙÆÝÌÅ„HJc%¥l <’)°žâ×3ühX퟽òòò/^tèÐASSSZX\\œ‘‘ѱcGéÖ–7oÞ´hÑ‚¹ÖÒÒªVùùùÅÅÅÒƒU*C,¿yó¦uëÖÌǼ¼<¡Phjj*‘HRSS™çruÔ @ ÕeÙÆÝœ‡ö¶Të}·)ðÈÚ…S£RŠ0¯fé‹›x% χ>ƒ[KKËÆÆFÎöÒÕÕµ±±‘Ý"mjjªõžêva``P¥ €ÍfËÚˆ†††¦¦¦X,cG*ÖQg,@ 4Ä”$4 ê0¯$@ „zƒ˜’„ÆÂ‡öM@¨sˆ)Ihxjy7@ „†‚˜’„†‡ø# u…P(d9Õ 999LЍ™œœi²ªz#55µž{$5†˜’„F‰•$Ô {÷îÝ»woˆ 111aN3RŸˆˆ+++Š¢~þùç£GÚÙÙQ'[G,·iÓ†¢¨­[·Ö¡áû!ؾ}»‰‰É«W¯ê­ÇÒÒÒyóæõîÝ»Þz$µ„˜’„ÆñMjOPP“ ´öøùùihTûhYwww777##£ï¾ûnĈ^^^LÂ|Ù:§OŸ¦iºM›6óæÍ“=ó]JLLÌÓ§Ok®zÝ1qâD&Q½Áçó===k0ó¡¡ ¦$¡á!±’„:!66vàÀ111÷îÝSZAÑ*b¢”Eö¸ æ°õê"›OŠÇãùøø0ǬK+œ|8~üøuëÖ >¼°°)¼ÿ¾»»{Ë–-<È”œ?~Ê”)ýúõÛ±c‡:Zùûû ‚àà`æcZZZ›6md‘rƒƒƒ7oÞ|òäIÅ»'Ožtvv íÒ¥ËÂ… e;ºvíš··wHHÈÔ©S-,,vîÜyçÎæØ¤ .(õÞ½{­­­W­Z%‰ ¿þúë3gÎ(áêÕ«Ÿþ¹‘‘‘t*&aïÞ½¦¦¦IIIééé>>>ŽŽŽLùæÍ›ƒƒƒ]]]Oœ8¡TBLLÌœ9s~ùå—mÛ¶S’@hJ,ݧ’¥–n  „ºCúDÉ>i²—n˜ôã•ÛÉEäÙ#¨‰@ ˜={6MÓÁÁÁ:::EEELyII ›Íþî»ïÁÖ­[)ŠÊÊÊJOO×ÓÓ£iº´´”ËåVTTäçç÷îÝ»¢¢‚¦i—M›6Ñ4ÍãñV­Z% 7nÜØ½{wš¦Ÿ?>yòd‰D’››ËårŸ‘H$4Mÿðé©©³gÏîÔ©“RŒË0!!AéÝôôt‹5kÖ¬;wî\¹rE¶ß’’KKËñãÇ …Â,‹,XàêêJÓ´â¨%I·nÝ6lØÀH˜1c†â¬X¶lYAAÁÏ?ÿ¬¥¥U^^®zýãããišÞ·oŸMÓÉÉÉ£F¢i:??ß¾}ŠŠŠŠÚ·o/hš^»vm›6mjöõYº! òþKÕF ì{™¦éÛÉEÒW³ôñJ Ä7I¨ ÇŽswwàíí àÀL9ŸÏ×ÖÖvuuÕÔÔœ3gNË–-/\¸`nn~îÜ9qqq"‘(===00°GLˆ^XXØôéÓ™ænnnÇÁÁáùóçvïÞ]TT´fÍšíÛ·wéÒåêÕ«êè6kÖ¬ÄÄÄ‹/ŠD¢7oÞÈŒ¤Z âÝ6mÚyxxôêÕë‹/¾­ÌçóÈáp† "œY,–³³sZZÅQS5{öìÝ»wÓ4““SÙ‰MÓ¦MkÑ¢ÅÂ… )ŠºråŠjÙl¶ôZò¨¥¥¤¯¯ïáá¡(aïÞ½;vdŽqêÛ·/ñJMÚLhx¤gp“XIB9|ø0ŸÏß¿?“Ý»wKÍA)E988ÄÆÆúúúòx¼eË–y{{S%‰âââ,--™j†††r 9ãlKLLôðð7n€åË—«©[ÿþý»uë¶mÛ¶ÒÒRÙ[ŠÅb1Þ‡'*íŽÅbÉø©éiòŒòLJ#‹%7j¾¾¾‹-º|ùò‹/FŽTþÈDL²Ùl{{ûèèèL‚™™Ùúõë§L™rìØ±°°0E Ó¦Mk×®lw¡©@þb ñGjɳgÏlll8°oß¾}ûöíØ±ãÁƒQQQŠ5ÓÒÒ:tèÀ¬·.[¶ÌÞÞž)×ÑÑa>>ÒNNNæææÛ¶m“–0鋊ŠRSSGŽyþüùòòrMMÍ´´4‰D"‹ïÞ½Ëì¹yóæíÛ·iš‹ÅŒëN$1®®®AAAǧi:11ñÖ­[²jœ:u*??_,ÛØØ0%¥¥¥ÌÞí1cÆèééõêÕ‹q¹•””0{´²X,.—[RR"‘H”vÇ(¦tè÷ÛÏ™G¦š´PqÔLùŒ3ÂÃÃUOryyyZZÚðáÃUOSSS&ÇxZZ3̨¨¨û÷ï;88„††>þ\Q‚——Wlllrr2():@¨1Ä”$4š“oòÔ)XY¢°q#JK 5~~07Çû¾ræ ìì@QøoÒkˆÅhÓ…­[Q·I¯oßF×®Po³rÃpàÀ€€€›7oJK¢££µ´´BCC÷ìÙÔÿöÛonnnaaaúúú...b±ØÉÉéܹs½{÷^²dIÿþý,X0räH}}ý£G<844´¢¢"$$¤°°044T(9r¤OŸ>žžž^^^¶¶¶žžž²š„……9;;‹D¢Õ«W8|øðÁƒW¯^ýìÙ3mmíiÓ¦Mœ8À‰'._¾œ‘‘ñÛo¿õèÑCN EQãÆóóó;vì˜bwÌÌÌüã?˜ðGY¢¢¢âãã###sss™=ì¹¹¹‡NOO¿xñ¢â¨óòòtèÐÁÑÑQnåËåŽ;vÉ’%Û¶m;vì±cÇtuuUO€yóæùøøøùù±ÙlwùòeŠ¢&Ož¼ÿþ¨¨¨¥K—*JèÚµ«¿¿¿~ýÆŽ©££s –*¡¾ –nP Æ¼Ý×.œZ_*š?Ë6îfž(fQ+)eSà‘Lõ¿žáGÚè³7{6Ffæ¿%X³»vÕVòò娰'bçÎ ÃÃ1}:X,¤§×V¾"ãÆÁÄ7Ö½äúAOOïÌ™3ÖÖÖ­Zµ’Æá‰D"Š¢Øl¶X,–&2,//§iZ[[[µÀüü|mmmfˆ999­Zµª®†ŠKKKù|~•ÝU¥£0sæL¹<ê²TTT”––êëë«ÖY–’’‘HÄì¼a²EÊMŽÒQs8Š¢444È7ð¡Y¶q÷硽-•縕cSà‘µ §F¥`^ÍÒ7ñJžæä”ÂãA.µŽÞÛPã3Dx<øøàÀÈ$½ÆÉ“pw—ïQíDÔJmËb¡I¿Öiš–H$ÆÆÆ²û9444˜½Æl6[jµhiiUiG000¨Ì„ª©T _æYQÑ]u‘uFFÆåË—·mÛ¦èY”…ÃáÈÙ‘Uj¥££™ÜÌÌËMŽÒQs¹\Æš¬Æ¨BƒBLIB£ iÅJRÿ¥6oFp0\]qâœ?)SЯ߻uä“'áìŒÐPté‚ÿf¡~‡¿?¼O´4´iÙø¶lAXfΓ~ûèQô뇌 CC> {÷ÂÔIIHO‡Þg’–oÛÔ9tèPIIIHHÈË—/Z—FGxxøðáÃóóóœœZÐT!¦$¡±ÐT|“жcu­É”ܹƒ‰Šâb¼x#G°{7ÂÃñí·HLDÏž¸|·n!(nnJ$´n //ìØfCEP&Mú÷nF~ø£Gcˬ[‘nnxü·o#4K–`íZ3™™‰`awwäæ*oÛÔ:thqqñ/¿üRå¶’3f¨ŸÕˆ@ !¦$¡áùØÎàÖÒBx8‚‚ ¯ìÞ¢"¬YƒíÛÑ¥ ®^E›602‚‡zõ³PÿˬYHLÄÅ‹‰ðæ dsK››ƒIk‘ééàñ §GGp8ppxO)“Iï×!•´mêðù|*s1ÖqqqÌçÆ@eIk¶:''‡ÉaI >ˆ)IhxšŠ?Õq@ji¡¢â?%%%`òF›™aýzL™ww°XHL„›–/Çòå¸wþþÀbAµåÓ¿?ºuöm8u r[oY,ðxX¶ (JÞ³¨¡¡*LSu[B-‹ÅÓ¦MËÏÏïׯ߽{÷ZJÙ¾}»‰‰IuÓX†„„˜˜˜¼xñâÃ(E )Ä”$4 šJ¬¤4E_•tíŠ×¯!ë IJB×®PXˆÙ³ñÏ?ˆÅ¼y°µ…L¶f¨óúf´˜9§N!$ÿMzädŒ…eË “ˆZ]jÓ¶‰‰‰yúôiƒW®’³gÏŠD¢þýûÇÆÆöèÑ£®ÄÖ9'N”¨½/L:E~~~Ò}6á㘒„ÆBòMªC¯^`³!s~ Îc¼²Ê®®®..._~ùåðáÓ’’âââtuuŒŒBCC—/_.[Yqo²P(PTT”šš:räÈÇËI1bMÓb™­øB¡°â}ºÑÊT•kB¿wq3ñ‹Ì-iáùóçËËË555ÓÒÒ$ sWêØ‰DLMggç;wž8qbøðá7oÞ,,,Tûˆ#”NoyyyZZÚðáÃSRR–"Š¢gbúN IDATÄb1㌉DŠ^Éʆ¬¨0@hB|ÀÜ|M6ùQýóá&¿ÉÑTòJV‹ˆôïeËбcñÙg Ô}(Š7nœŸŸß±cǺwïàïïîܹiÓ¦íØ±£}ûö•UîÓ§§§§———­­m`` §§'EQ“'OÞ¿TTÔÒ¥Ke++öüÛo¿¹¹¹………éëë+J;xð`ffæü‘––àÎ;.\¸~ý:æ¨TU¹&QQQñññ‘‘‘¹¹¹Œ‹4 77÷ðáÃééé/^tqq‹ÅNNNçÎëÝ»÷’%K"""222N:•““sàÀ¢¢¢Ó§O{xx,X°`äÈ‘úúúGyòmut <|]]„…ÁÉ OŸ¢GDGCW»wãÈLš„]»ð×_X¼[·ÂÙ7ŽŽ¸x»váÛo1c%¢ÜÜ0u*nßFh(¶lÁÚµðñÁ‹8r»w#?fføê+åÕæÌÁÿþ‡Å‹A|Fª:thqq1²DK š.\P4íÔ±#QËnÕ”¾m¼æZcÖí£¥Éù&Uðö-( Jó ¡S§wû¸ÝÝ1f ÂÔ©06ÆÀàp0d8;ƒÅ‚³3"#€Ï‡¶6\]¡©‰9s°f .\@F†rQzzpt‡0ùžwïFQÖ¬€.]põ*üý•TûIOO700ÐÑÑ©V+5×sSSS¥ÙkV¡N¨Ù Âdžœ5©¦‰›’J­W9„¢Æ›i¶1ëÖü¨òqlB±’jæÏ³¶MãÅ ( ‚gÏ õdéèÀÖr)´eQƒÃAY™¢pp@l,rs«¥¡&ËJbâ;¿& d¹´šTþÇÃ7ß|3xðàE‹Õ­ØÒÒÒeË–………effÖ¬BòÆH šRëN};µITe7"I#ùi´ºÕxò›ê<ŽŠIË-j&½28~\É-SSܽûïG]]Ô IsZ:t¨†([[DGÿûñÕ+U›)óôéSuîFDD,X° ÎàóùžžžÒ 15¨P‡| 1„fÉ… ªeG¢–y%UwV!–4’ŸF«[m&¿I þãØÌòJ~ò fÌÀ¦MxüøßÂìlcÄdeáÙ3‰&…¶ÔF€ÉQ-g¸ …PT„ÔTŒY©(©‹Q$z'ÁÕAA8~4ÄDܺ¥¼‹.%%hŠg×IÓ\çççûúú–——ËÞ•¦Ë–»Ëçóår«þ¶ ˜v»2eTç婲‚jÔTƒ¡ºc$„jQÛœ"*l¡HÒH~­nµœüFNu¿Ö4ߤâkXé‹yëV,_ŽAƒàï °|9ö탯/ºwG@üýqî¦MÃŽhßQQˆGd$rsÈÍÅáÃHOÇÅ‹ïdã·ßàæ†°0èë+uõ*22pêrrpàŠŠpú4úô§'¼¼`k‹À@xz*¯FQ7~~P–»Q³yóæàà`WW×'N'&&nÞ¼ùäÉ“¶lÙ6sæÌ•+W½;iÒ¤+V0B>|8~üøuëÖ >¼°°P® 99Gíׯ_HHÈÈ‘# ¿O¡3gΜ_~ùeÛ¶mJ-EÅ {÷îµ¶¶^µj•H$*,,üúë¯Ïœ9S™|95®]»æíí2uêT ‹;wÞ¹sÇËËË‚ù¬Ö ¡Ô6E¹R˜åÚšõ±v£&ýmŒ¯=Î’ýÝÐÀÞ¿šqŠr•ñßåŠ{·›AŠr)éé‹Ñ®Ý <Ž þ`==œ9kk´jõŸ¼’ê‹Êχ¶vÕÕJKQ, OJJÊÒ¥KBêd=P]¯ä‚É#›Äâ#¡© xp¢¬oRÖ+Y-±™ë:T’@ „Æ /©­ªåÁ©­W’ÙÑÔ× œÊ|“Õzð&¯¾:ÒX“@øX8‘4Ày(€Þ–Zêo`­Ã3AÔ2%‰?’ð!ÚˆU敬îßÉL¯–ºЄèm©UÝ} uW¦n¬$cðrüsá”ÿ¿4  ‘^×y¬$_“]W¢@ ¨ Ûn²3_8=M#3vmSJ¡Fgp«8Ú›ÏkDÙ„fϼ7¶.ì+û»¡5"ïPñ®¬+È—P[êÄ”D5}“ªÏíÔá);ýš@ |0˜?:Ùß¡‘ð¡­IbJj G£¶™oª{w•ç¿—ªq@¨sÈß Ð¨ø Ö$1% µ¥ö^É:ôG2”’×Р¿A¡±ñá¬É¦dJf¿N72³-¹ûw$@÷rRç}ݾÁåiõèëT!N½z&7ó•A+[ù^–†Š•TAé[ò#ò7H |ë9~Î¥“!Eù¹ŠõÇÿoõ¡€ å¥Å?í3xäD¦0úÚ¹ë‘ÇŒÌ,üf}¯(S)Ïî?¸yÙ{òŽùŠ‹¾FÓø¶Úè¿ùº-jiJ~8õ꙼ì××Ïê;­¡äáhÔk¬ä… ªtL6ûóÍ „Fù$M`Û{Ò|±Xàì¡À¬Wi~³–kp8ôô[2R?‹*ØI¢«%<åÉ£3ÿðžDŽ‹m:Úõˆ¹qñäþm^æ)Þ­ý ™Õ•¬ÒšlT‡v!äo@hT4m7zïLF €~K#WSz·•IëœÌ—©O:ØtÏÏÉ,ÈÍÒÑ3Ô=â÷ΕӖmÍ-­d¾L½x|_QAžu—žb‘XºêšŸ“ù÷éïӒ¹<-ë®ÿçàäÁÖЈ¿wóÞµsÿ™£gÐ2þÞ{×Î;øÆÌ¢Ã³ø˜„û·‡™q(`½_×¶Çç×#iò´zø™´¶”ë]©d—Nx–RRTЦ½õgNî­LZ«PO¦S+›Oo_ 6v&›­qédHöët=ƒV_yøšµµð:-åî?‘/Ÿ'qyZÎ6Ÿ~¦B“}¿þ`ÒÚr÷a;~ÒÕ7ê;M±#®¦Öß§½JK¦@u°éîì5./ëµ:]Såà<ü蟛_¥&3ÿ ²TˆkûΨA^IÕÖdíU"µü ‡Æ˜ ¨Bøöîß‘Ìõë´duš´³îR—w¯ƒM÷§q÷ÚÒ5ëU ÖÎß²’¢7/z9f>žÿ+¸¸0¯¯ËðœÌW¥Å…ºú†D¢ŠcA[+Þ Ý|2_¦Þ»v^T!üÒ}tKc³¼ì7©Ïºöêÿ4.&/ûMêÓ3‹Ï0îÒ‚Üì¼ì7…yÙVcïüsïÚyׯ§Èö^™d,û3'wG3âÀ g°Ï¤ÊÔ“£ 7;/ëunæË¶mÙlcA[5yÚCFM¾yáÄ™C¬¥(ÖÕSß Ê‡3§¤(_GÏ@µ&ùÙo´ùºï„çeƒ¢;ÒÐàݳ¥´¸ÀÞá+có¶oËË*„oÕì@+s)ª6%¿à âŸòÒ?7+»UƒXIdq@hXÈß ÐHøÐv$jhJV“bï2ץŅjuÃå¶ëd÷üÉ#±X”øèîgݳ^¥©Ù‚©ßÒ@IQ~n֫ΟöéþÙ—Òž%Ð4<[\×µ÷Û6öŸ'>¼w÷úC¿6iÓN“§•‘’hkÿyFJ¢ž~Ë—Ï“hšN}š0È{<#Ÿ¼&Ìãë¶HN¸Ÿù2U®÷Ê$Sõå°ÑÊJŠ ŒL2ž'©PO‹=ʱ¶Ž^RltIQA×ÞL-Ú·ÿ¤ë«gs3_µ4i]Z\X^ZR›ÕùÓÞÅR­‰ŠÙ“vô,þ~Q~Nçî½û òbn©ß5-¾®¦–va~Žb¢yùÆàʳG^¾![S‘:<ó†xD„úäo[¹ßäo@øx¨‰)©Í×õ›µœ¹f¶Ý¨ÓÊÊîÓg ÷ï߸T”ŸÛþ“.7/œP³;4ðÎÑ–‘’Àؼ­\ÂülÆf(ŠjeÚ&ãyRIQn ƒÖí:¥%?IOyÂ×kaóégwÿ‰|–"|+hÓÞši«Ó¯Û‡«©¸æ^™d½7ΟHyò¨(/GBK´´uT¨§_O_[G@QA.€¨+§ï\= €­Á)/-¡(jà0ß‹'œû+èÁ­ËNžcÌ,TŒQŽ ó²˜ÉøÕïš©OR“ ÷Έ¸pÍݹ¿\ˆ ×T¼Zª+Y%$N‹@¨g.Ǿ‘ûM >ê/P‡ÎÝYlö­K:wcâ)ÕDº €±ùŠ òÐ4-ªx·‡)/ÈÍbšåçRK›¯ mG›”'î]¿Ð®S—Öí­o_>uëR¸¹¥•š:T&9ñQtô?çúaß×é¯À_C­2õT Û€½ÃWý-ï`Ó}\»Ž1×/Þ¹zæÒɯ§-Q1F‰@yY‰¨B¨´#m]=Y2nWõ» (+”—ê´R”¬h#‹üÛk°£ìGÕ. ÕþH殊沘ððÏ…$5+ÐÔa^|ÿ–mÜ­~Cõß­ª©?SR“§eÑ¡sêÓxë®=ïŠE¢Ô§ Ì5—Ç3³è ½Å×madf‘—õ€¹eG¶†Fâ£;†ÆfiÏ——•0Á|–m5yZÏîÛôø¥QíÙ·oŸÏ1bDÕU ¡šp5ªÎû[{îÝ»gfffnn^K9s¦ŒU]á·?ö+-///úúúEÕR‡FK'§–H$’K—.9;;áµÄJ5ý‘û÷(,,”H$]»vݼysݪahhHLIð!Šª TTTä:Ø¥C+gÇ®€áÆž=wAu«ã'NôïïØÊØ´æŠø¼j›ÏŸ?ÿå—_´µµY,ÖÓ§OçÏŸïààPK5jƒP(=zôÑ£GˆÅb6›-WXcª;9ÅÅÅÞÞÞ­[· …...ãÆ«Y¿"‘h×®]Ä”$”Se¬dFFÆ 4{öìÜÜÜׯòì%@¨.Õ5%+Ä.—ü¯ëð±ð*…H$I$ÕíK^õ‹Å?üðÃØ±cœœˆD¢ŠŠŠZêPK¸\nXXs=|øðˆˆ¹ÂSÝÉ ©©¹gÏžÜÜÜ &¸¹¹µlÙ²–:4*šLè¡ÙÃø&+»ûæÍ‰D’ŸŸOÓ´©©©½½=Sžšš:þüaÆùûû'$$0…[·n:uª——תU«ž?ÎÎ;wåÊ•çÎóõõMNN~ýúõŠ+FŒáííýË/¿H;º~ýúøñãgΜ™””Ä|œ8qbTTÔ‡6@ø8¨IªûCË´*+Ìš>•¹˜2ñ›ˆˆpŸ+¾_*¬Wˆ$ÇýÚÛs†ÿ”W¯^‰Åtu;RÔ¶D Rý#W?&&&''ÇÑÑ‘ù¨¡¡¡¥¥%‰V®\9mÚ´ùóççåå1·þøã3fÌœ9“ùxúôé‰'®^½:33SN¦êš3f̈ŒŒôóó[½z5MÓrM***æÍ› 00P(NŸ>ýîÝ»ÒÂÕ«W§¦¦H$ ,‹Å*4©åäHÑÓÓãp8Œ‘­Ø]xx¸ŸŸßܹsW­Zu÷îÝ‚‚‚ùóç3·6nÜȼ’'–™Ã‡ûûûËö(×Krrò·ß~+ lݺõñãÇLãGŽ=ú÷ß/--U=v¥S’Ðð¼;SÅ÷§Ÿ~ÚºuëÛ·oÏž=ûéÓ§L¡@ X¼xqaaá²eË(ŠZ»v­D"Àf³Ç·lÙ²;w””ÿí·ßÞ¾}»2Mj?9¸\î’%KvîÜøí·ß*G(jhTj’1ï#)Š‹÷“ KeÓËårKJJ´µµåê³X,--­ê 5[àæó4Tÿ(6Ù¿ÿ¨Q£&Mš4bĈÿýï5èT–ˆˆˆóçÏ+^ב¨Ú_2j,Íš5¿þúkµš«?ämÛ¶¹»»O›6ÍÓÓsþüùMh{ŠêXIŠ¢<==¿úê+‰DgddÀÓÓóô{ìíí¯^½zèСAƒ…‡‡wîÜY©Æ ” =!„ŠH,©ÖX,hÙ©é…„¦ÅI'›.IOJËÊóóó“Ÿ&J$tuûRÔ¶ºá•=zôÐ××?sæ ó1???''çŸþéÞ½»““›Íf^‚<oîܹFFFiii½zõÊÈÈèÔ©Ó§Ÿ~jccóÔ®YYÙ[šššååårõ¿øâ‹Í›7÷êÕ‹Åb©#¿Æ“#å›o¾‰ŠŠzðàbwŸ~úi\\\RRSÇ+))¡i:)))66VVŽâÄ*Eé öìÙãîîîââ²mÛ6é¼åææˆïÑ£MÓ·nݪVXWM¼’ÕÝ»Ôø÷ÞÎ;733ST÷¡åïܹ“ÅúPQª...ÞÞÞÆÆÆ :~üøŒ3>P_u…:y%ãããSSSíííE"QBBEQ-[¶ÔÓÓ‹ŒŒ´²²²³³KNN¶´´dþ¿àñx7oÞ|ùòeyy¹Üe={öäóù7nÜèÚµkÏž=_½zÕ­[7¥ýÞ¸qcÿþý“&MêÕ«Wš@ |\ˆ%Õ;cV,¡i™VŒ½'–ÐÒ 4 ‘ÐF&æ]º÷\0ãc3cSs‰„®n_ŠTׯÉápV®\¹~ýúHI=<õIDAT‹/òx¼âââY³fuíÚuÿþýOž<±³³»y󦛛[YYÙÚµk[·nmhhhccCQÔ×_=a„Ž;òx¼+VH¦¦¦ªY³²&²[È.\8kÖ¬:H û÷ï¿k×.ƽÅápª”_ãÉ‘¢­­=mÚ´­[·îÞ½[®;==½Ù³gïܹÓÚÚÚÖÖVGGGKK«OŸ>&L°²²’³n'¶U«VŠÝ)êÑ£GiiiÓ§O‹ÅsçνvíZŸ>}hšNOO§iÚßß_,¯X±" @v®TSSRÅî$¥Èí½•úc_¿~½sçÎøøxŠ¢>ÿüóùóçÏ;W__ßÁÁaïÞ½«W¯ÖÔÔܱcGBBŸÏwttœ0a‚\H¯ ¶nÝš““Ó½{÷qãÆµoßÀäÉ“­­­-Z`æÌ™ÆÆÆ+W®}ýúµßï/‹ÑhôêÕ«ô¦b±‰DŽ=êóùêúgµK͵’'›ÍšÍf.ñMÙ»wïƒ …Ã0===ô—÷îÝûþý;]%yúôiú¢‰lÎþýû?~œËå }þðxôèýÆçói¥ “I^Gn ]Ww«P=ñÆ??BX–¥{ƒsÆa«ôX–•½)?Ræ.œšD%åS›_Š*Y](2 ,Ëž:uŠ›tã#÷t¬ÂZÄè¸_Ý*IJÕP²Îì’dööÍ›7’Z.c›L&³Ùìàà Ïçóz½ñx<‹={Vá¥áj^±mÛ¶™L¦J¥âv» !òõÆ7n°,›H$X– ‡Ã?~üH&“t{*ÉzåóIv‚ò–»\®-[¶$ ¿ß?33Ãßm1[,–ññq EFjÎMêõú­[·JÞĽæpiî̓$ÁY I6?SØJS/Ÿµ» «Isûöíæ­“¤×ë>|¸ÉBÔ %UÌ{‹³·Õ"´‚ŒíöíÛ ! Ãôõõ½{÷îëׯ4i!O&Ã[“|½v»ŽÜu:ÓéÔëõü±Z½õŠ;¡® ƒËåJ$©TêÅ‹\¦{aaa~~>h%Á­ü3¸4êí %q*–ÑÔÎiñ8²QÔ4Z]vI½­¡¥{²|ùò…þ¸²²¢ÓéjîEÉdxiÖéÛ·oüÝ> /iߤzI~JÜ JÒÇ|‡rçÎ|>Ï}.§Ñh ƒ‡RÒæN $»  i•;ö«Ý}Ú¦fV²ÞU’ÙÛÞÞ^ù-—±õz½étzuuõÈ‘# §ÙªexNçâââôôt,«T*Üñ;vì˜}ÿþ}3êå—Ï/Jœ#V’>æ;pà€ÅbùðáÃÉ“'¹’×××óù¼`¬Üá”ì+  ]•&¯•h—V\à®–½•ÐÒŒíÍ›7GFF†9xðàùóçÖX-Ã;<<<11q÷îÝ`0Èßtêøñã©T* …B¡cÇŽ5¼^Aù‚¿‘ß W®\©™>æëîîv»Ý¯^½â~¹´´‰Dìv;½L¯JrÜ « OC¸êÂüùׄü‹·àÕ=|r`ðWùB§^>”Y.—ÅÙ[Š¡•”ÏçM&“Še\†7ŸÏ›Ífº¡O©Têêê’ÜS>—ËÙl6níccë—/¨šß ÕJ4::jµZ/^¼Xo;ÛŽ›†ÏG†ïO®–úÿøý—þŸš»u|£ ¾|âsZ»Z¢F߯C‹}ÌuBž?ùûúè÷ W3+©"»$“½­ù,ŸÀ•!™á­–«·¤±õŠË—¹Iaú˜255õöíÛ[·n©ihÇÐô|$…Kó CÓç7yu%ñ|è(‡ãÚµkâ ¼æ`­$€i2vœ}ûöÑOjÿÀrCÍQs IÄsÞtYt&ÌJ€J˜òõ³áãó'Uw°€NP{(y}t¤íàã@j%ª…Öã@°VTÂPTÂPTú¦·Œu`%IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/randomordercontroller.png0000644000175000017500000000623612032647206025504 0ustar ebourgebourg‰PNG  IHDRHL€¹ÆsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ \"ñ° IDATxÚíÏk*×ÀÏ ïxËøR)/qÑèBš.£”AJ)% ™M)¢"í¿º­6Ð_D¾t#YÈ£ø^yÈ4É[4߯P‡lÞBÌ—\ìô£Y–’º˜ð%­A§΋Ô>-\êhñúÀXêUãÔ˜e…äF\o¨çåø†¯²l§Îçr>¾ÔÑ®dM6’Ô»8Bѯݹ¿Ž:ó ú®‹—qz–$§Õ"¤Ô7Û´C‹²M¢™QšÆà4­Œ2BÂi5€Ü„aËK»¼î&kÎH¹žðècTg´\¯7z9â ÚÓ÷¦âˆ( ²@íD^øåe‚.[¯7F£‘利ãR?U}©j·í¶3RÖFgY¡VÓ]¡å¡øû¢ +ö¥!Q‰~¥RG–Sv˜%wDÊÆY›vhU¶ 4c®yÜ;‡»!ÆÑM¦9n”Q>`  ùݲÇîî<Æ“PÃEÙ$¶èt<é^ãôKûZÕ½³K5hÔtŽKñ¥ÔûA·{Øiɾbve.Gd_M4X•œã7—¨YŸ_\šw8Eök¬fFhÞò4-2RÂëÒ2·ä™._ÆÃE³¬’î+–¢¿wgX<9Þ/è,ÙWÚó™ï» }~q ž4àåŹ>@·«û’É’ä,+¤¥­½¡C˲YÖÌHÍÐ&RM¯ÿ4€\¿a÷=³m³°{±‘,†óvj¡•­šËÖõË̉ûúR d“› c³¯Ûé_ˆ!*y¦Æ°b·1ÌHÏ4FrBQÃ"h%÷¤É–}éõö_‹fæ8ÊÔ@n4gÏÎ~Ô 55=¦FkŠwO˹†ñ¬Þ³ üVÄØ@1¹àÚ\â79°HêÈëÔèÄÕ’O)›á[k©WÝöåDpÏC3ºÀØÊ4­2»òØÊ³… »T)œ·%P ‡“+$7àÇÆÇã_ßµ +¤üýxƒÁZ­F¿ßµbGk0Æä&sÚÊ\tÈ œ1•0³äêŽfBÙèhV5£=µâH©feF 7š<Æ“¨g9VHù¶«—°´™Š:Qr!…B*êœÀ´< %qÝOöî¬ ¾ß‡ZRJ—›‹m{õz–Î*ÉyÚÁ´ÿÌ’O+[9â Æ|‡‡afÑ ÃØÔ§6~}™z”™5€Ìç%ÇÒH²¸A4lAаAÃF AаAÃF A›Àä'¥¨¹_lmm]]]2l¹j Aî •Je¼Ç–¡­ÿVøù×ßð!ÈX¾ÿæ+K¡øÝ!óì[|l2‚«««Ç¯cò Aî1Ã[4ly€ a#È"¶\á>õF’Z¹[8 ¦™q¹Ü}\.¾Ò½ÃLs®ªâYîw6¨]óË(Qç­7ä:“<«%ók·_,6TÓ^õ5KW>)o-ßýu+| §¢Wޝ¼¾fášW ö”§»ÿxý4íÅw‘Cq“#>ôç¿øý~Ù«kg¸´ròõíj¯˜‹vàŽzDŽñ”Kòz×Coß½WªïÌû~¼™qešýë´sof\fNU (¿×̸2;KÌ4µ6¦ÞªYþiuO5ozoõ§rs@µó!2t+¼™ ú{µ«¡=S³26šWìû*F;aÝ@ÆN†­gÈŒÜ5Ãf³œñŒ†ñ$ŽŽÔ37jÉ<}ÔCòdM¾Þ)ñYHíGÐVÜóábÛÉFœPKæ'®eÙ­”ΞñŠ{LCæôTEñ÷ï oOÕ˜|ºØ­ð¥§¯EQEqý8VÕL!vöìµ(НŸÅ´·±‹AAÅß¿;+ýð¼~z*þþÝ‚¶²u¯~Ý©Hrzšö—¡[I¿‹œŠ¢xº:¨{G8v.:mxÓ§{_’/÷´nu éÄø&’¹ƒÉ3÷N9â`…”ù³†37”‚õêé…Í%êè¹n1ÀŠÝm_¹®;qtdvÞ M5ÞßR¦!Ót½i5æ]þp•ŠÛ÷äëÚÅîðÙ'˪W QF‘ÛnE(ƒüèÙë´WîáíÿV2ý¿'ßAìiQù0ºÀÓŒ‹}¯¥{È\ŒÚ!ä°NízN2#··Ç€¥ÍTä|¯EãêÙkú3@,­%rm]–«çò*{ìn…/¸<°Ý|Ų@àËõ¡·¿÷vu}‚7n•dõÃù¼ªÃdxÿîíÛW_¸‘—ÅQ³¸;ÜG™Ñ° h‡dËNXY¤ÞËl± Îh™¿OtÈ»H[;y{"–·2OùLÓ+GzÝ ¯&‘š×ñmhÏ»Š7Ó^¯.RNOÐÃO? ÊÖcWÈ·À¤2#w0ïoªwö£Îv»€“Åó·LÖï§N–Ê//é<œåäÙòVæiIɉ½÷ö#% ìþu6Æ´x±™Q÷·ÞõPµTéÊ[÷![×qvÆÓ›Ñf&ÖÏX•aù“ÏÎŽ›“­%Õ˜ñ;¿‰æröWwhß:™XfäŽ6(‡T5;ß ²¬Ü(Ÿ;åó“óÓÚ¶Ðó,G:%~ŠÕeÓ.GÞ}ÎWºàMï­þò…Ûív»ÒðY¨seþ;ÌÒ¯Ÿ–”Œôñºº¿•³ØŸ»ÝîÏéÜö¤òìA?‡á»Ìa2,o•×]|)íMŸö'Nßby.rCó,v2±ÌÈcr`ÀÁÁÁÀÿvÞ ?ÿúþ‚Œ&ýÓ¿3Ͼ­T*6‹?)EŹGÜéÿǾººÂr ò  ûûo¾züø1n³äzl|B‚{lAа A4lAnG 5[ÓB­‚A4lAî`(.I­üFR‹Gt¿²1¨5¹Ç[êUãɳõz£Ñ8‚†­y“­¹M>íU·SËeëõ,Ç ©íjOëq\¡R˜¡˜)Ë o U/GœÐ.¾Ƴs¸ËBˆRnI’Zùp±Ý2Æ•IDÅóØÃm¾×|ÓVlÞ½ÆÒ~ÓTvt¡R+mŒÅLéÎùÍ%¥:jíd˜¦Ë¡ËÅ’ÑÂ4ì±È5Ï((£›d¬ ¤„~1S‹ÈåÙ„°˜WMF…5l†ñ¬e…“ªþOìNý§ýÉ<¥zbw!Ütá4c =?:Êrèà  ÀýuÔAH-WsZ­\®%Ij±Ñ@<XÖù©×6¿@×XÌtì* > ~g—#œv¦Í‘ÅãÑh×W8´ç7’%>P.[O0 ÈÅF/|©T@ \öyÈ6_±”þK¼¿rbÌ=|ØLEß„‹%>P$Üÿãÿ—òÅ;8£©M#âcF»[¥ô:Àߊ#¬RŠ ¿ÇFäAí±+• ªAÔ7¢r¡÷ØFŒ î±AÃF A4lY\þåbšÄÄäIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/java_defaults.png0000644000175000017500000001062212032647206023666 0ustar ebourgebourg‰PNG  IHDRÆÏ ³ pHYsÄÄ•+tIMEÓ  "ãH¿tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíÝQ²¢ºP÷­3#“gLÛ1é˜ú>XMq’ø”µºl$!`ø à†Ÿûý~ Âÿ¶nÀ÷©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aþé-p¹\N§Ón ø\PnÏw#¼\.Åæ×¥kEÆ5,ÞÉg7ÕZ`±Ï¥NEíæzv¹\‹¼b•w»á£uRß,F=ƒàC‡WÅuY\Ø¡µ‘šäÂø rö¿y©Y÷û=O¢aJ^Ïø­qòÓSSòj‹&¶Ÿy6)ùzÈZ¬¹q³Oµ§«N ÝªÿJº…—ºlÒIDATj)›¼[y«kAõz üŠ6¼t½à8ü§Æž!¥êvòÁï0èK†{]m«T;Õød¼ÀÔB§j^¶Ùë­]S'pZ©•=p|T›ì½+³ ŸX©g¼Ð5Õâ[ϼëªsÍB¯ ¾×­Dð¹ÔðRI|l~ajÍoû=Y.q¿‘z:~·n@Áãñ8ŸÏÇ#™îÀ ÛÔa´H#RˆT€0}JÙöþx???þü‰­ðùbqµëk¾I߃R¾É3 Ÿ†d\\Cxó€O´üGTù£S†1ìx0[yGýáTuÉðp<€^W†É€÷™ªã’‚ÏwŸÓǕӓ²ÉDà ZÏ¥æÉ»°6 €IDATÿ•¼;<êù„¸ñ Éã~[˜½ƒÐ$=ó‚Ãôq°&¡™ÌMÓ(uü÷aÊ©á©-cÏgfóÑß0*Ɔá#Ä® ¥*SÇñyÎyÚöÖ³LK` 5àÍZ#5‰Î5—þ»JÏHÏ{.˜gvA]6û]êóLëøÅ㬜º"TÌÓâyÒem˜mp‘šŸ$íMäTËpõ™}OCê +98;O±æÊô- ¾ØÌ’zõKOSï¶—**ÆÓ8^§æ,Î3[sqzq)-me×7÷û8ɉˆ [lB¤F£pp»ŽÔÇãáÞþÀùÙê(-ÎçóÖM˜”ßgĨãIDATÕï£Ô­›ÐÁýRˆT€0" ŒH³ëËS¯ã·Yð×ëuë&¼ÕA#õt:ýþþnÝørÇã|>ê§;ÇÔ“iÁ‹Ýn·£]œK#RˆT€0" ŒHÓtÅü4”ñã¦÷|«/°`#¯ÿ\.—Ë›?Ö¨%æëÞK—5µXªò÷õ Î_Ô[çû»ÁטÔñÇü|l”m½[+?šçïg‰±uYS‹¥’è ß­Vt}Mëï ‡™HM>•âöÊǰí‡úóNÖ2g{©újVʶ´výÚMM¿Õ5ç‚Í5üwؽ[¶ÉÔr[Š·,qÁæÊ[5µè¤¶Ž—âjIDATäÉêù ö65/U´f·ª÷Éuζ9ÙJ³+r4kÏ¥>·ûÓéïÇ3|º³Ç•ŒçÌëÌçÌKMÕߨX6™8ÕŸÛܵŦз¯f׿J¾8+ &V75se‰ù ͘ý¬+ŸNãl-gv“æ‹«´¤kS·ü²:ëm®¼U™ÿPÖþõTåƒ:èìÄâ‹u&û^cófuåo1UÛ\Ÿ³2ÿ2½›k¥ú"Z‚¯±þÞïËbD_3•ÁûÅž·g<<­þtVois¾Ä–… ¸âŸ÷‰qï¶{qb{íY¹K,ÖÞæõ{QÔjÎÖ³áöŒÕ¸Í»>šdãtõð$¦%ù€}•ˆIDATô•ŸÈš6'ZƳ´v”:Õ“ƒ‹ç‹Ûël±Õ§ûÎ<]_¼½žïØ[^‘§Å9{xqþ–ú»š×Xgo›ó•fF©ÉGÞøU6Ì–|‡¤I‹aY¯d%ç°ÖÏæó7‰ZÍÅcÕdú«Ç³½Ý¯.9+º¸¶üS¨Œ|^-cÕÅ}ì{åAÌø=¯¸é“w+EêõÌÖ¹²ëËæçïÛœœ­kßbá«9[Ož2] ÊÏK®_âʾT\ô²ÙV6ujA-»ÕìZ×·|oõ±3u»~èôë<ï9Öus¿q˜6îÉïÿþßjıϑÎ>[kçë¸`Gût‡¾_j—ý_âÜùÞ žò)IDATõf¶›©z÷Ï7ïÏÆÇ“k‡Mz…ƒ¬æqÛ€0" ŒHsÜs©Çã§XýÕét:ŸÏ[7Á¨áP3ðÎ¥„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„9î¨v¢ø8â5Uk(>{qýkL=¬{A=§ÑZ +˜O9žœ?/ºÞÈÜæŽÚȬ!R·”Ä+öŠW×?ëýO„/&l]H#7ÜÔïßȉԙ`&C§âH­w謹eJÒ†©‘ãxÎS6ì]ô¸ÂgUyˆ$ÍOÏ·mqk×ç\ö`¤^IDATÔñb©|KNmÒJñabÒ~ÜÞs©Û{fD2åt:Ýï÷|§J‚i*Df—xÿë”íŸããåÙ6Lµ'9è>eaQ_ôÔ<¹Ê<É¢óÆwÍÙÕªq%y©öO­^|j#³!£Ô-%ã‹SÃ.15CWªFEU¥=ë ™[m{… Ý;Œíý.L–5µ}ë†DêÆ’ä8¢Î޵xV .Øí_S†%îðvÙ÷ÐÊ2)¾çíƒH݅⮵«äõ´ìŠkv×Åcíd†!8ЧS‡Ùò)¯Ó>ö <Ï‹W¶Ûr.uKùYÔeóœvyÁw¶åS3¼-küPfKM­~½øìöYÖqþoü_Ðèóï¿ÿ^¯×óù¼uC8ºgW¼Ýnçóùñx$ï6Ý6%/[ÑÙ3çRˆT€0"µ[ø †a¥®>©»¾”H]B§ŠDê•g‡Œo~:L9ý÷Æ£Å[KA‹¤C^þû¸Ê­¾§^»‰õb”)éÊùëä6Ìù]‡‡×îÆzS2¶cF© ª•ÇiWÔIDAT—ÎÎát¶÷3J]I¯]v¸ä ‹•†Þ˜ôÉ]Ko\C¤Fº,}d´Ñ¯°¬Cêk8ð_eê:Õâïy+6=ÕûUåZkLËŽÄ(u­qª¯+? ˜­áù•Ö«wÈâ»ÅÞH;‘Ú-ïgÅ«Où‹Æ×SS`V¥#Õ;¤+¨Qø„™¥>wMe'ôFvn>RÏç³[¦²·Ûíz½êl®ò½îÀ [ñ–þ'‘ °ÀÔ@µãŠÿÏÏÏðúÏŸ?ÃÄáõbãšÇ‹©œo•w¡#§·O„õZ#5é¾±a7к;Sò¯áqç^·O„‘þ?Õ'>_çs+œ*P¬°IDATÒ² ¾•d·þÔ?ïÐ]Ãâ uã"CŒ;ŽÉçËnµFêóÌæø¿k–º ¸ÀþuŒRgÏ¥ºßv$îØÜÂËSEÅÞ6¢4t6÷’ߥÎW_:¢4\¶v.u<ÃðnqâxzÔÐrjAG{Ô[x…çR‹»ü[fï³K´oMñ{½e¶©‰°ž?H³A¤ ßjþÀßí)Ù½‘›Ô©{XÁ›=ï—ºu+ÀýRÞB¤„ÙÅýR‹õ,¨Ù Sޣ凥ù<ÉŸŒoÄ“L„evq¿Ô¼NEEËǦæñ3U^j×÷Kí­9y·¯õ|²¼ƒII6±lKê–IDAT£û¥OFþ]PóÔ¾[Òy¶nÇõ÷Kí½–ŠA>b-ž„õ'ÿDùŒû¥æ•LÝùÂñþa‡¨Åƒ¡bÙ7´#ø€û¥N]¶ª\|0P= ߦìÁ¾î—Z?ö¶;®ò¡’SðÛ6†cú€û¥Žg×V9ÿå2ÅwË?ýáã>z7Ee{¹_j~ª«Xs}qnŸzSýç4Ñ[¦¦LM„eüA*@÷Kã~©|½‘›Ôóùü†v|ÇãQœî\*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ 4(à IDATF¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ F¤„©aD*@‘ 柖™n·Û«Ûð~î÷{}Žóùüž¦|–Çã‘L^¦”ÆIDAT™¥æe(r. ŒH#RˆT€0M?¢â |Ä/á®×k2å#šÝ._A¾ŒH=ßßß­›Póx<Îçsþ “7»ÝÔ òMDê±ìy¾ÝnSé¹çf·«¬ _ùT€0" ŒH#RˆT€0" ŒQ1ãr¹<_ïù|7y«8ñm†?Õ›1ÛÔËå²ÕŠð‰ŒRùN÷ûý…IÂvYS–c2J¥fÄ].—ñxm‡ƒÓ¢¤åãˆÌÛ™¼;ü·±8œŒRY`œ³õ‰»2´°8zÍßBs<Èà—/&RY®8R3|ãÈøs,õÑåìØÓà”:‘ʤñÉÄáŧBëíŸ3Ý"©IDAT]»O_}^M¤2#¹$5V²íj7uŬ~%­å—Uõ8,çRé–_À™š¸¡ç…þÓ(ø†±ønraªRžŒR™T äõìÄ÷«,=«Øþ®`Ì( ŒH#RˆT€0" Œ+þòxæµ›l…›A'„sf‚½’/Ò/ßç˱ù£4ÙD±üPĈŠxÿ+Vü­¢âP?Ù¤ 0~»Ž¸;ülb}úÙ‹Äf\UƒX̶}€šC¬O›šCT"èg#p‰@ ³d6Q‰3ÈÀ[&ˆÕÆA 7‚@ ³ˆJõ³“3i¾Úª^BýÔtcéLöÃUñwØâY ,ô–þkA؇üÚ´‚Ø/`q%â–ÌNß06<ÿòHÃê?|Ëè$ýÒ¹K±wqÕçYƒœF,Ò™í±¨ž#ÄŽ{fŽ˜×Œî¿.h†®ï7íäHJÔ?§áwR>ϸ?-,¸é•3ô‡Zè•ß‹ (RC¯ªaÑkmò Ê-"ó2;çØsðÑ:[ ý5_â磉ŸuÒ—[Ï£ÙúkS0½ÇV¿;ÂRº'7±Ùþö{›Ú¦D3*®¬‘c4˜_ÑøöK¡¥ "5°ÊÅ!µ{‹Œt¾y¹Eb^o¤ºØóŸ‚Q€#‡ R$íæï²ƒ‡(Xr¶˜óW…ß|•—Ü’%r¬(œCQHb9˜íêæixÑÉñ,Þˆ•a!-!6=œc9ØBì5ˆáhq;׃§ž,ôt#MùEүĂÌÖAJŒÐ94%kh0]IDZKYâÍô2§’ˆýlÛ™wÜ Ä#`(Qá4)#b€ØvßVU-!¼²¡wùÌv±£Ýfq[6[Ó43Á_°‚ùâ4wÑV¢†íÂìáÑZé݆M“ ûüüÈÍ&ÑɃ.̤UŒåPdd—™¡wŽ•ÆÐˆ9¸½¨ ¥ðÞfF¬šJì¹ èE§QÞNåë’ÙMw¼?u*QyÌÆÍ©ë“Ùi±Ž€¿ÏF ³d6Q1~¶ŒìÇ~Yü³å¨ÉàÔbíÙì„x”Äö½¨8ÄdvFéO²ŽW<>ºx&¶ßG¿ƒ÷:Rv\ðP Ï[wƒ:D¬fÇÁ,ØìöZ¶ßiüÇít/=¡|¾ÐLÒ<¾Ûfm ¢kÁÏ~•>|*×9`ØÔùž FM¨ `ç!R  ‡ˆ9 ?Ë>Ýmâ Âö>}Õˆ¨|ªä òS‚3b„¿kMˆAçÙî¦Ç×Sé´K+婹OÍiX5¼z o$­ŽVø[òê*£/ðÿ*d˜zÎj©ÔÀs Em"ÖŽŸ‚·ÆÞ„×È«ûbÄ|̼ŒÐZØËÞƒ‹Xl D‚$gˆ5àg3p1Bᡟ8 ꙳teö3Ÿ¯a6{ ÇÅÖIÚ]7šá.Ö k†ÙüGȬpËõ°-–b6½2Ô¡!|”ÉD.€Fë1T!b0[ƋЃÒJõþö‰ËèX#Ö>³7 OÍÒûf8úB¬á$ÌF Ù2@f#ó  U€XvVZ  ™XL®¬¸ÍlFoq—|F ³8ƒD ÙÄê¢jÏŶʞ“muUS]À¡,·Íì5—kU;«,Ÿu¡†ôaU»°|C¹LƲ.†r§6;`uwwº;Ý;„ Ýðž:þHþרޥü.{Â%²Šåç¦9NW§^ºô[-Õ…ËB² ®¨R/¿ Je/ß ©6ÙXvØ”UæŒhîFã¾vºÎ;ýÐÙÆy¥‰¯•ù#ýù½u÷8Îî9%iÌ(òË=u7ÇþDù“mïhOÿµûÞ•TŒØ.Ÿ7^A”O›yüô€2`ÒÜÆ"CXX"¸Ö>Ÿ7¨¥[>|”«•>Á†£&ÏYŸgÜK7«¦v|×cìZ6§ÎúÇ=Þ8ݵÚ; {¶ÒRQwˆágÆ'f„ {„¯Oø&¢äíuGÒo±|Nøå'!ûÇîe‹.ÙÂËЄÐ.¤¼‘žGv¬Pö ÒËí¦<3žm(º}‚ÀëÈ’.l/ê‚ØUàN@«›ª@’ÅTà9Á:è÷ø³ðÏ~"ƒuÃ7 OLœ ãô°0D04㜩@Ö!“?ä»mf~“oq~¡¿Éíã4¤‘\/ì÷C['¨ ˜8&~zÂ3““ú±°6e¸’tD<9'ÓC,>’ØŽÃá§ú¸t¯€8˜eýÞôÒ¾‰ãÌŸÅù­l?›/zøARԼ߰6ßß!*(QǶ­–6§žªÞØØñ= Ý~¯‘§ÁwRot0Æ„Zêì-4‚ïÖ xþ¬®›&TÒ& ºX~V<h`—/©,½$´ þŽ{‰ì¥ìÔ½<íWR”n©··àée’m¡h©©ÝMÙ”¹ÔýY qT¢ƒÿ ÷ 1HÐåq¤íÎôyºýþ{ÚüðqKó}Ij3µ=»r Ý4ï‹u, ìhy£þÝ0ë³µù>¦C&{ûë"›| ×¶ ‘Ц’Í í7õìÎG³ïtÓ>Äë’¬L`½¾%,õ£Yy,EÐÇáÏõôì¼[÷Æž,>’Ø€åMòÐ5Ú„TçˆJÖ¯éZQ§tòç·Â™íÊ>|­#ÝIéw¯*àÑ/yS#Æ›ñç¡A;3/Òtâ›}[”Š5Š‚`¨^…Àð f ¬ÖŽ–¼‰®X¾;+Âû nhßîÏå HíÎ+Û®fý’ÊÌ‚ž^><|"ñ>[Ƴ(ÌZV‡ö,Y|qeå>H)šîT7 ã)Ë¢UuóÓp#}¥ š èg²IËP­eÛ Ûè…äZ©Ð¤ Ü`cgòã`‘×I³±ÈxKa‘šÞ m]ªW£aíÃ[¡LŒ:¢[±E¦YK1³;“×´ìœè-E;$Mjôäì‰3"ù"ã‹<ιç·Â™Ý¡*|¦V3À6õ mOÕCÖ°>Û]í»>ƒðCY;8…ty‡æ©ºà ÁnÛBÔÎ^‘´”P‚¶cHe“.]±ü·pˆŽbÓ/Ü ´ER»Lö–’²³ Ùo &w~š¾ p*FHº½6½¸\±l|¸(ö¬[îƒÌÂ!jádY´cB P7رãz^y$Y'Èòè9q )8¶•Q=¯C&ß ]b Q2¤t¨ÛÔ¹ãú+õ¤¾“2œ0¦­ÛȘÄ~iSK1³ ‡‚†Ž‰FJlGØ—œ\{±\| ºP¿ çœó[Ù3H[ ú¹cäù½ay6­L¸4Ìþ²³¸¸Éð'_Ø3°qj‡‹³r|(\?WT Wç3oç‹Tïu>øÅòGÚ‡ÛÈ!Éç,Õ—v¦`Ð)pƒ¶ÑGoWŒÙ·–”­UÈ>À¿mjf C ˜‚®{´çB‘ v0ùäÊ*pEÜTóÉ2ßü³îAÓ'¡ž/åÙiá}Qf¡9žç ô8Ђ¤slÆ?k‰ïqÍ«ûœl žëÊ÷£H›íâXDmzœ¤ì½ö¸˜K¸ß$uMjGõ‚s”+³´RÂ4±ba-0{áïæÊçÚè!IpÄTU„j¼J"ÆfllŒÊ®dïšG¶^–íßVµ>ÍÆ@)¥št¡º¸z›Ø‡|Ê{´‚-˜;NÿÖª—‰n8HEçLÇãBÛ8%nê]¨ÃŸÃ©`‰÷ ¡&ÐAúŽi¼äDͧ{RÆ,Ž)íðKý('ŽEº¡%-Üîéa–fˆ'‰†èFãb;Š»#-ô éW';ç·ÂïúÙv„LC]»ß[é„’?™¼a*.}Ϩ?;j«Ûk™sÝìaM˜/Nqg™“k¹8¥*Àc8³Ï­»…ü†ÑéIî\Øw]zýè°M–MDXÝ>ó\ÙgeÙ#õÐ0r37beóƒ þAeWuƒNvÎçÖŽ®¡®B_9î”ùÆi?ïㆈ3psŽv4þQ6ÜÚó1ï¨MС_qÍ6œ­*Ðc{Rˆ»o˜<+ jÃ9¯õl]Q=Ñ.LŽXÄ1eÏÙ¥~öž<4´;$¥~dŠÐ.\m¬»Ö‹“*¢¡ “ b;2.:Ïü_(Ö¯$]sòÍ4²…"jPÒÿë _VŒšä÷Ä!ç»baŽ ì¬å4Öžii—û5µì4'0.DŠŠû®G¥úD¹¼‘{¬Öü·3ðòEêAãðç?ÏÕ †©ËûÓm: ð‹?„éŽ+™‡‡….iëv×ýÓí—Ä;Q¥ÄÈ Ò¾cßÓbX¸àîËßy½†Æ™zÈm’êGðt îÞÍ%ýl¶°~3|ë °eÞú=ï\Ó×ç`€Æg,j^E#ÕHñ&Ì*ÈÑ b ž~(ð,膕ƒÿ$5ƒB5,1#×÷â¹AÜššAn‰=éZg=¡˜ÙŽ3êsu~ùñZpޱ¨Aõƒಛ$ï¦gìµNŽÓ‘S ô¦‡¿ŒFŠ:FyÑHQcRýÍxrw€È­î@*:ðÓÏ„«‰¡vKQ„Eö¨ŒdÜx9Ù¢ŒL¤‚!1hØ_AÒq·/{VéÔç¸|0¿9õˆ²Ì ƒNÛ“V'‹}«éÑ•òÏ3r¤$ÿMMAd¢ÂnñîÉ]3ÙlpÀÆ|k’>ÿJ“k ~ L%ë#Ë;ƒMv«ÎfÝžw˜;b}(Œ nu߆ÙÏùàl"sÇ5h7¯ƒ¦‰ÎF«¦Ï¾u½4‚åâÔÎ|¤¨9õˆ;FA$ˆwy\]ÍÄltCwŽ_Ï Êíg/pod™P?3+ÆÐ“1À¡æ«ìÜ9 sw”ÙˆªF¬ú @f#Èl™@ ³d6™@ ³d6ÌF n•?WŒ­Ux7#³VrdM¢ mö­€kÆÖ$*îÃýlÎ d6ÌF ÙÄâP™ûAìk«`õÝfGWf|kF‹w“Ͷ^¶ÚÉAÿ*[ù~Ú+o|B¿Ö€ï› ªnW·›ÐíÚAß³ óEv`_åß%b³MÉÙ†|ÁÂB(ÊÝÞE8«|?»…„ôL’7XµsÅȘ;>àªê5¥¥žø\Ã’µèî–ûÇ0ôH”WélšÛ ‘±¦BkTªŸÍ9¹nrlᜠ—£Á¸É1OLnî³ØÞ¶8i‹-Ç ŸÍÍé'lq a'Ò^h¼/=™Röo>R=y|cë;&úrÛÒ•ÈÚä0<´§acÝÞ·}RÖTäó e¶‹ä]<|øÁ‚ô´Ï3~3 ¹À¸gzHiMöO„‰Au¤ í¸N’‚×tf ÷ÐXÝ@ƒÈŽOÌp4æ÷õ|üï¸÷zÔ#Ú~òÎãO“¼_‹±Á¯K±½‡f<ãž$ù}`èŒæ ýä·À }v¶Ç¬Q×uFX”pQ\¬+É(9òã3@&/':á%×ÏôÄx€6ãó‹ÕÙx!n9MW”Ù)¯gœô_Ñ;YŽð±)0ŒÝO^¥hÜr m#è“vhÒVØ%9¾9î¹~‚4<é•⢳ñDý1)BzœhÑ—Cf/®c[:]…÷]é7ÛïmÜKÎÄîú7öì(¬j«ý€ äfK€¾™Fl ¾[ûFK•Ø]go¡$ÿy#L]ÚØØñy¯ëœm–#»ÅëÚB0uþ#B)7ݶ±¡ý1ØÑòFýnéÐ2Zˆ)(Ú¹å˜+»žëÈ“ áâ4 à¾X·¹ z\§‹þeésÞ%"®¡,'u©#=ֺݴë5uÅêl 4hâ/îaéù2Ö·à@Ç}MmSy)Ù¼ÑõÜ鋳WáºÎ iËnm @UšQ>ÅS}œŒ. =LUo v I¦FjR¬N±á”­û³h^A3mÍ í~döR<Ärƒ÷Üî‚ô,|"ù~D@oQò‹" zÂu-yް`„ qlB¬nú*F#Ð3kQÑøß“,þ÷›ZH)î èIýƉÀ˳°ØàÉ+¯&-Öˆn iVQö¯c+<×ánün8Y¼¢crÝ‚ñ¹ÛÉ‘ÉÏáØ>ò/ù²5Ò‘¨Þ䀸l ¿,n9K—Ë„>¸‘x®Q!%#Ëaïï†öGnÒxwv Ù,TW-VņâîÈÀl.“K¸’|ŠƒÆª™/°¸Ðê˘uRŒè-ÑM,6v:¼{¥™½tmƒ+g;8!\ñö8o¸’;?#ÄÙvLÉ/æT‚ª‹œ†ôÕ”[«üD¦éáÕÖ­@M )~9[ Náõ>…ûKõ~9c—òê;v’î ÛÊN­ŠÆüVúÙ¤Û±¹Ž³ìý e6_ÀlV—/_ÇÙvrHã#ùí3¹?PÈé"´yö‡ÖT†Ž#cèúÆÒ•e쮎+¤œ•å'ûÞ×ݰ×/î¡O40¿jß'zŒ=ŸèaTÐ8ƒ=5ݳ=U}8ó ¡È“™1NÒ·.Z¼n ó”ï¼7² ÓùÒ/‡Û‡ÛF˜Ó¡Ž"J=À¿i$Íïω8Г£iÆÖs­ób)V· ®È²2þ·ò2àažØà.“®ÊÜRšƒÌyxŽö³=$8ËÓM3ytJ€²n~|#ígÉ!~lØqÑ&—%}Ö’“3Ô…åcO`¾ŒÉð'·äÍ1ý r)|åÒÎL¾­Ü0©o€èÀå¨u· Â.ó`˜8T7¡¾´ÙÓOGgü?oÆ÷¸Ðf/í„0ï´«ÚGÚÅÙÕ,ÐøÛ¾­*;ѺbW¾Â*Õ _MœƒV0 UxfAó±º-OIµ”ñ¿EKK >úœØà‡I‹ÿ”vˆe;é‡ Ú¿çX?MZ7ͦ y¤ÂâÅ!ÔTÚívalòø/ÏΦe9ÁS '5“^‹ŸW|ñÄÖóe¼ÛׂâΡ,C%H¹îˆsUùˆüÄáy”éªÛÐeì–ôâÔqï$ÏD Á’çǧh¦ï˜Æ[©ªP›=ÐõmrœÜ]»™ÿ{þ÷^ãοFýüˆ ¬¦jFk‹¾–8;õ2=]=n ü„±nÐÛ˜Õm~pF~)¸…ÊøßäS•”c/4“£V°rÊØà7hloëù˜oTü/¥ÜàdïÀ·a/ë'°ŽjNÍøxÝÿRÁ+®)±ƒÖ Q/©[7x£Q1¾âPäÇ'´}´^’£þ$æå‹þA1ÌøOo6Hc¨W [YæžÑ¼Nˆ\è“ä4ž›ÌV—¿4?€‹6z)èˆ. 5™þ•3ä¹Öåý«’çÇzöºÈŶ᜷¦R#Ÿ—%~ö@èB ZiŽˆmiã¹Ññs³9¥¦,ßDbM²‡¨‘û9²#ßÑÔ솅›¸Åø–ç+‘@µÜ·¶Èò~»>n3óÛF*‘;ÎleҒΉ¸Z£x/°ÔLžìGQjûEcž<·×Ñ[UûuÕýËÁìÛÖâ-dxƒMSÉÌ®LoäöOC³Â4ÜAåðöwôVÕ>²ÊZ¼%–®[œA"Èl™@f#ë7ƒlÂ(QˆõÈl …X»Ì^È*7á)Y«XമƽîU±Ùh˜ï.¬Š¹Zoc÷¡5/7ðÞb}™@f#Èl™@,?VU:·Â+!ªÞÝÙo¿ƒ´•8ëEøªŽ¯‚úp÷1»Çá)ñaNÆW5óf,¢'ìz÷ˆIî‹(0/73ç+dŸ=l†¡Gû¾ö,À×ÔYòøÔ­z¸¸DO~]5´ë¥ƒ—ºrß9rRîCúÅ'—GÇR7m–ê[6aºåˆH›‡Ô­Ð6U½™½(¤5eWÃò¸ç]…:æœêg•Iê£/<©k=q”†¸É©—1mû³ðý¯BFÈ@ä~w¹ÚWŒam>»¨«ñ).ò½¯jž’®§øÄw¿¦Æä䢡`<¹ÁpLŒÝ÷[­™‹Ãá,?ž‡“©`4MÊ„B¤L.ÅhF*冃1–óÀÅÂÁdŽÜ Í+…s,ÖNΉ2¨):|8š’å©uЇ‚'X3úƒ©tòàòêHRG9´x(EÚ=~< “–“Ápœ Š…§¯)“5ÐYbõxòL®çt,D¦ÂÅ2¢~èhÃCÀ¿F¯²<2¾|ÿ¼zbáP2'·Éô’ GÓbÑŒÂP8$Ž9LÛ<~<¥=§:ÉÆC¡W—3oe8A® ¤çAªd¶òóØg~žh&iÔ½Ð*$ŽÑ“ÿ°ÆÔ÷3òbÀÔwbÐ|’–1Œ“2‘¾êêTú“¯BLo6¿Àò~ÓƒØ ºêiH¼`1ž|‰¦š©p±Œ¨2ÚßôíSŸ6[N>@óLd|ùþ-„Ø zÓ‰´Ô¦‰é%i:™ò¨¾8ÃÉTkŸFóo„6!®ñRIDATõ¿%gL'“¨²˜®E >i „j!G5NõÌVèÏ|Ã)¨•"œiûè™4MÄã@#¾Ð˜väÈAÔ¤ ±ôƒÔ!Ôj  Lp"NòHý-O™ˆÖÐ@|ˆe¿~ ´P5)“ „2N$ãBd1‚6Ðh”ri¬‘ j„³‡YøÍÉ¡¾E:uiP ±J´4bY‚6O?+&8*[Ë‚J©÷åºévó}·‚[òxH™*RFÔ£…˜väø>QèwhÝá“'vQ‚£1÷’ÏþÉëÜÔ<ó y2:ù½hª´pýÁ\.{P©wsÿ/‰‰}Bœ?Y.míÝgÄLƒ>ÁzCËbÕȱ؃ì 1YÚ3O Ôª‚äKNÓ—¢×ŽTPJ&¯Ò©g3&Rä%i´rÿJùÄO=%é„â%É™gúÌëKõå¾—´]…cæärégy²_ŒÈED7ìûn,…3HÆ!vŸVóµÄÉCÄø†°†7ÒÙNtÅæ•ÑV}-ùÂAòÑ™f‘R«)˽Äâú©€Þõö+}}‡´¥?(´Ïë’GùB‡û†: åVÁ7ÅS˜KÖÇã"B}(sp‘ó%B€‚k€õWÄ×U’ÒäP˱d•`eDýЙ+)’€‹l´Ì#Ê÷oaM?(},‰õæäåR‡¸¤–ƒùÛŒAUtÉiŒŽàÒW3Ï֢ͦLÀ^rJ£ÏüÊ@žt¹z\ŠC]uD°{ «ˆe^ù˜j“´>c™|ÞìÍ‘§ØÓU_‚!XÈI‡L{i{Sy¹‡1U0–;ÎœÇø÷uÍ÷YàSÍK‹½u£…Œ"²¶2{A+$›=΢šjˆ1Ôäï+#ô±)%)Oˈú!Ÿ%c4^%´gòõóý[¢Nh›y¹…yé>ƒî¥WÙ˜Éy)n“øR.§ºË_°›H_£ïª¯á½áDM…G/€áÈ‘#zÐ~)öÀQ)Gϲîp¤ÈxhŸŒ=pÄ–£ÑÐQêÀªGHýCP›Më“<ý—a}ŠD[>zN0ù¨Yްó'Ê5|ž4ó@ä( ˜=IÌÑùÃì¦J2XÇ©»tGãÂérÕ%_ãGjtñèÖ?Õ!ê?åPAÍÃ1Zž–õCðyú£C잆X_îßštBÛÌË-ÈË8ªÑþUÖp0Ú£©ÈQ}a‡ÃJ_äx˜ÿÊÅÛhæ«j0 ?pdýìÕˆ~&F8S~?¶,ßü.áËœå¾(a­>ûM`¥F»Ã\ü _a1«èg/û×½U«(|Q"t™ lúãíÝö•zE0{ùMHÍj _”-ñª¬àhmw/±ñW¬d6ÌF ÙÄz™Abì>ĺd6†ˆB¬Ofc„(úÙ2@f#Ù2@f#åDá]?ü ±.™_¡ Ö'³ñ+úÙ2@f#Èl™@f#Èl¢BQ…*(+îæ=Ðf¯k\¶Ê¨Œ•„ú¯PåDb«êwÔÿN8’àøÁºg“é³2uÓ¼¨vh9Çþ¢(ñc`îú®/~ì?è 'ŒRTæäŒIQø[ µ”È‘ñ™j`ý‹yÓ‹PP,öÇ;è6UTþbê–Ê£õÓ3S¡¤<"´Ù•ŽWˇ€±æ{ÚvIÙ·/®Znl¬(Q;Ò‚™ÎsZ’·ÑÒ6%¥o/ÆüÉÎæº¥ôø‘6¡›có§/ÿµûšæÈ¿Uݹy´þdkcÃÞèT.xއ,9è³ôCnÆ3ñM~œ=p8€‡ßGb¾ë,ž5?3±†§ þý1©+Ã}Óã °Ý ìÁÓ¡ÁZÖ¨õyö{ãZ˜X>RØFFÉJ ãKyïûµÔ&“?KJ{&f@)Ol×áˆ{'b,¥iL«‡42»ráʺ²î,}tÉi'@ _h©µŸ™ÝH÷ñ ”µÏÒ7³-Ö-!š`½6/÷`úLmÝî/Ð7s÷_÷ÔH翵ùsSÍBáˆí¿ŠïH=ÿ›ïkÀìÞ aÝÿâ|4ý³îiÖ—=³‚ìO6+»Deƒ¿ãþƶ ,=´»¾¶eF”Ï·[ÅñÁÝu¶ÝÓBUVRŸÖü«p¸ýo¤6ɘNµÝ„ÇwÛ¬-A¥<±]âšÔwO‹¥s7 ™]¹èpw¨ÄCòL/Ÿ›‚§ÁP ñ²_¦gî…×˜Ï Õ_Êìßê”›À|YMjUëI} âÏ ^*†jhR>.ìvCïÄh![P¯éPðÉ€^ðNlH5I‘ûrY”-£†Ê&WLâýöþOA_Mz&Êù6ì ¦,P°/‚ئÕ ÿÙ‹f¬‘䙪!¢”'¶Kú£‘û?Ùö 2»rñZÇpf˜äYò³ßLOºlÛÉ"Ÿ\°¼Ð懰u+£ôgA™ lÙ&’ÁÉÇDà‚BÛÓu°/j ë…¶'6¶9Pq²8rìË÷¥K”­¤‡j]í»&Ú¾HKf$9N©%è/SRüamræÎ½L²N¡Û<­—RÊÛû#~^,%lô\àýì2£‡ën'yŠIÆ7¾sž€÷¥‰ÿ ró™«|©s&UM‡\o?4[­’ˆYhÈ–îÊ,l+ºå èË|0ÞŠíØ(Ô½¢ÊËÙt-¿¡Ô¿n.ØWGj“Ü^—¶úpu³ÙÆt#*má5}eŽm»£}RÑf—g^k9íÀp8E>¼S FìWpnÅj¥~¹…Gb€HÚ±ÍÛz,û-ÎiAÔ©pÁ¼œà aLb¦0ãG´/²¨Á⪼ÛÔVèeéÕð,íµ(‡ŒA”mû" ûT¾8¾™kV[÷³R›lL>’ AµRžØ®¢>›Â¢Í®`t´©»GÚ9òœ_djÞ9ú£Ù)n¤ê&7Ô¹¦æ™*ÙÏøs7Äw´œ”S{a63Jk$÷ºkÀîn}GÊ©Ûä§„±»|Mót¥nÐOw´ª™¶Ã 2Ãr‘õEj~°h«´{Fý™K¯¹ò“’¢œÿ>5%ÞO4_œR]*__rϰ ζ§Å6…15þ(4Ã]¬QÊÛUÔ¿óÛ­Y$_9¸ØõÒ¡!áøbe|»>a±d:Û¸Þ5Ì.3³•o*ƒÙ±à_¾¨Ù ^ïšGo¤¼¨ÀA§ïÍã ÌF Ù2Xã3Èê±Rö•½72‰ºG”›?ØŒÞb"€~6ânò³ƒ¼Þ&ý+öÙ5Kø Ö—Mäa UЍØì±æÆ6ù‡câš¶Å£µ‰¨Pfhá/Å5ilM›¼Ïï£kØÆåuyÀ=í÷_%e÷Óõk Iöãô«þqÏ8)õMžë§ókÜæß+zAüG ÊÂì$LˆkÒØš6y-žy}ýSy]Lÿ¬¶©$îþq]‹øk_×4ý îÌEWQ§6tïN7vþM~Û<èïï<ˆ22ÛáØ>úF~Mšb-ž^ÍÖÆÅ¡Z3Ö_½IZÿVÝMc ¼­™™b?·«Ùª¶×¤ö„UþıÌ"—µ¡7‚(ƒÍ&SÅ]çjókÒ”kñ ×å±µx6¶~í¬´@OE—¶ÙÜ>Ka“…kÜn4ãˆeÁŠ® LÊ~tÞŸf½ýùô³·‰úÉÍ%mö*‚º¿Í6b-Úì9TF Êb³WñQHlD±ŠÌFb#ʈ•õ³7ãªÄzd¶íT8b=2;P G”Õv®–7‚ë eõvq$b]×A"Ö?̦¿lÊyi‡Ãáùõ¤ü NÊwÇAºˆÕdöùö0D:ÎkèzȺVyÌbw,D *”Ù–ÁÏ'./{] é›ûǽÉýâæ‚ÞëléLÎç‰:ä- 嵑~ßuG®:¼·´îÒÚ™¢E½Ê¬ùj‰Ù¸`±dfkL×¶÷TK›å¼S¦ÓM~q¿H}'sϧÛm©|ym¤eÝ"í0•»¿øÅ%bÉÌ3Àa÷n ÐHW4J¨Ó°mÎ Å^fòÚHZ QòV?v‹€#ÂoV{¥•ҢȂ,yùü$d÷J•@‘‰@Ü’Ùa€}l=Œãß"çj!úpÖ.ï(È‹ûôu¯¨"ïY¨Ã@:té#³·¿Ÿ.…ì^±wYô±ð©W´×ýò£”‰@Ü’ÙéèÀ[‘«äÕØGî¯WÁÔiç”wO÷.¶…a\krŒÎYgõ=Šþbÿ¢¿t9b)P|9ë¼d°ì~ðò¤ÏÐ]µ9ýõ‹±jlkÁjéV¡•ËÿlÞIæüeˆ[1»õ¬j†;ÒÒ{»ËKW4ÖL6ä ÙÎÎÒ­¶­î›tõ£rm¤ñÌ>·n™zÕ/;Þ½8—DÜ)³©±U5ÉF×dbi†B–¬jTæñµµ„ú,‹Ëê `1ÈEe‰‹$eû<_M\»€X ³Á'æIü §~si&»4/ÅÅtžÙ+?)èŽ &·Äj®ƒD –²(#Ùô³ï¸±.™ë ë“Ù¸QfÛ¹ZÞÞA”ÕÛÅuˆu \‰XÿP®ƒt8<1ùml¿ÇWXÖá€8 ïu$ÉcÒáÍg Ël€±ûôŸHJoæÝò‘6úhú#À]ª€@¬fÓ] f•ûAfýžýÞ¸´êÀ#,Šü [G‚߈ù¢Ù¦ #…ý!kÄ{Å!.‚@Ü)³® Sìé77®#¿d š…óméŽC²ûì–âü‚ý!‰~º$Q^fsSîÙÄ>žßð.ºœ7–¹ùâþ¥WCö*W:*« –[<ò¥ð !–…ÙC„Û/¶-"]ƒ¤ê„õ…ÐF¸Ð an¾¢n)j+–8*öî-ZÖØ[¸X*о©Ù :åþA¸‡þÊõÌ>à Š©õ{ÏõŒª¤| kÊØÂȽçu>æq¤ûK—Bj#–ÃfóaøGå$èüP)ñø ‰îH+9¤|V2„¥îý(ùÙxåe¶c"ñæ“Psñ³~qÕnÝ&?½ huûÅ|µƒÝpéå|ZÒ5e`uåý!ˆŠðF¤YŸÊf“Þ„QF#{Ö?²2ͬ´˜OWKÞÏžuo½ ¼C nÓÏ^)H«åµ…Kó‰èg#n¸±~€ë wÙ @?û¶€ë ë’Ù¸±^m6*~6ÌF Ùd6ÌF Ù2¸-ü´|1: rIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/0000755000175000017500000000000012165514774021664 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/timers/constant_timer.png0000644000175000017500000000765012032647202025415 0ustar ebourgebourg‰PNG  IHDRtd \+sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛJÇšÙ(IDATxÚíÏk"iÆßzé GMF†D<ôEÊw²‡NT‘¡'2 9/à ù 3W¯«#ôÌ*˜ˆ s‘¤ì)BӇͬ°^æ fÉиiû6ùªöðÖ/µÊ˜´&v|>§î·ªÞúÖ[¾O}ß·*ïÃýùçŸF E .ˆ â#ç‘Õ†zf9.èÒ#9£¹;Ç=€k–åzÖ¨¹°JR0}²Í1ë‹UH(}²íyW Àýg.r=ã÷ûÊB¡­Âš/[—åñuøÌòòòrf$§mm€d.r§¼«J{R¹žñÅÈ5sœg§ZÝ1d1fо`â"¾È·(•‚©êާ«CzvªU“aD°niì¨ü»—[kùÛ§[§z\Rð»ãO~óÿ] ”!ºêì”õzÔòÁ'²‘…×_ÛM‡NšèÿK²>¿$9×ra;×)oF -c‰®ÔZlj“öß$!èxàÃ"Yî´/ˆ$9׿ä-{]§¼e˜° Tˆù¶Êîч˜ D -mŸVa-+š*Ëõ=\íœÊ¹¶^vŒ#뇋â–O‹ŸÒV~-›É,3eQJRJ„Fe!„P!¾œ©ëj¿Ü2ÀÞsyÛnBæ6Ë´Ôæøøøøø8”(må_è]šR!$g´xtt|||” BHå¬.˲\?«I ¦ŽŽŽUªÕ¿Ð¿lŸ¤ƒ’Ä6U«;z¢áZWê)F’Dší·×H$¼emïÙX´Õlº¢E=J…J¥«D‹5”3Zìi-øB¡¥Eˆ"xðâr}*qVéJmø/×’dì6Ê`/¬ŒƒøÅ $©[f.B©zã–“#Z=6Ç|ßÖ' ’LŸ¨£›cÞ¬¤»¡‚‘›!¶‹ö;CmÎè^E©™s™u¸i^´ß}ÀQ†ÔÆæ˜'¤ÙÓ·y ±°¯äÈÖZ¡E©÷ äÚ ‘®a¥DêD“¢ÜTˆCðz»IR0ýP^íp½¸pœÝ1Oh«•O½ôúéÔç]ûâ&çã8{x¯Ög……Ø–ã ·b³V–`êhÇ£M©~HôÌïªI ~u`*‡El˜ÓÿU‹Ü)o.gDÂ/†ˆq’…Í,ÐâMÓ{Žó°™ã4Šqà  Á³ìLgÂç>»†!w Çyz €)ÎΥ۸Еҳç0 *êSÉ·„¸_ÙH¿]꙲éý4–R\ôpœ,Ï:\„¶Z…H ¯|#«—‘œN—$µ¨ó‘ïŽ?¹îT½µÝýÔF_Cißþ0•™ !„óì£N‰ô̤œl{8޳‡s,ãÐË{3ÿáqF‹ìë޳¯Ä׆Yc‰äŒärñu×ðƒ¯žÚî!yén(¦ ‹Eî(sˆ ‸Äq@\â˜8º>ÿ?<WWW333¦›0¡ Ë8â À]‰ óBÍÔåî’{²F­%y·;Y› ¦«%Ýn¾5ÂZr²BజЭIJ‹÷n|QKº7È~Cô޲ÆÓ¥FÂ;‚£¼‰F#a¾Õ›hxñÛÈ\,6ôÛªI_…e7ºë{=ÃÊ7˹SÞ\^^^ÞÔÌe¹SÞ\öûýÌ~¯øÚi9¼o*JÖ`ÈejIw²vYЏÝ<ÏGJ—=‰Ûü7©%Ý¿Ð_6´£Ôý ‡ô×ÓwÔPbdHaÔ’5=rC]—¥ˆåµ¸‘'.¡T*ØïŽÊ,Ü5wÁJ,k´Œ-²òV!âK‘øÁº‹45{S1»–oº¢©¨‹TbC™®ÖNËá%siÙ8ß}%Šâ«Ýó ½÷•7$Ùhˆ¿~Cž•¾½Ar¢(Šb£‘ø+ñ&ûŸKŸï+YF-ÉöEÃ!ýõôuSÊ,†_¿9/üã‘Ó¥FCüõ-îËRâhCÅÆ>é¿–Æ-O Àg.„ß.FTˆ'_túü‹2͇0·bcû4ÛoUŸBæ¼cž0Ï~§Z½•×jí´Ž®ÎBæV£áò©Ú#ÃûEVúñ‚RòÑã'úæ>¼ ¶×!¦õ¼Ov_%¼¬¶ßÿ;ŸTÿ­¦-ÿ:$?bá,™\ oÎ…b[‰G_¯åc[Žƒˆ>2ÒüÕ»ý‡R2fWB)Sûدnnµ¸Ÿt»yJ?ωf9òPBˆD>_K Ï™þ›ñ¿?~ÿý—güL Ç•¹(î«éiæSÅ uÞäe*ß$®h1uCÓŒY‡K· .aéz”ßo¢{bà²Ù û QE1¾Ÿöÿèñ“0¸±±A`*Ä…M²l¬»šMÕ úm»Iº¼¢‡ƒãìÞ§.J…âKÅq˜ ]ïR¸¼¡O΋ ¥KBÈe©`1-3€ó7—ZÖðD’\¾9ö¨çVûôüs¶` Å…(Œ!]kÒ!J…˜¯xá"” ±n×רÃ{© Ô*D´FC¥û ?<ëýÎÅ›Ø_xþÏóŸ=_Øô°W?Eyöƒº;”ÕãM¨•»äÓpyÃü·UúQ£¹-º'òCÞ‹.S´ÃÃÃþEîžïú¸ÀAâùÉݯK¥R¿tàóÀ= ‹àLèz.WWWX2 ˆËˆùö«/fff0íÄe,™ î 4˜s@\ÄFÏ£)¹N+÷2Ä€a‘ÕY®g}1-¤$9×ra;‡ö¼Wæ"wÊ[¾X…„ØÚN''q’ÊÞµˆ5ì˜,q_ä[”†ÒеÇÙÃ{úÚqõŒb°œ©÷ösk€Û™,—7ý~?ÛYK¬Œkʰڔؖ3ÿ‘þõ`‚Ä…-¦-IÁEÞä€Ny3.Ð`êè(¤B|³ÜÑëºÎ€¼‡I¥Âk?*F]¤™!rœgû$”$I ¦O¶='ËõìZ¾©f[·Zú0æÌÅz$Ò©½n*ºÃ/%©ùº¦ Ç`€aöé7 0VY±)®•3«dÄh·ÄŒP 2|⢮¡kÀ #‹‰ ñ@\PM†„-÷ë”$Ú*DsGÀ=Š ÇyC„RáÌĹlÖáê.p9fGÏ-L ‘ÛÃ{Õj*(BŒ†m€IÉ\ø/×’T‰mió¬õL¦.ËÚ"þg"!â™@©ë©×>ºAG¿IÀµJÄ Öº‚ßN%‰¸v¼Nàþxd•äNY_¬ !„SG;GØ"þíåx< "S{á[›)õ"þa“µ¼µ­Ä×_¯å ‘@^ ~wüÉoþ¿+æ×z|ÅΉ¸ÁÜ“¸úÿ8Àß0>°ú?àÆÂ£þôxºæ\01¸5=s.l€[ƒ9Äq@\`ôuQÚb–ïÚ¦ ³ÀBf¦MV-гϵæM7ž˜š1™^{§¼«¸¢E}ÏÁ&Sý×bzSLcàC” ýÍÞÃe©p¾ñjÚR^øxNÝ6÷ñB™©ˆU9˜q±rR¬ˆºB”Õ¤£}A$Éé˜í*¿Q¯t.#†úmÞ§NIªœ‰„·mòÔkë«–fn7ŒwÒ0æM7¾I3&«kg–R„Ì;lúµ 6™ê¹–Á7¥'Eè/Úïof¥L»$H²¸:‡nqQ}®C,©°Bæ¤÷„`03ìpdr^›÷©‹õÆNûÂôì}ÆL÷=ÁaeÆÔwíý‘ßÔdÊü¦ 2„²¬Ð›h4Dñ×O?‹”.ÑÍ .ï‰ë,w^¦òMâŠSAIz¯êÅ3R2ï°sܵG¦çeÖ%¤Ù~û®öz~Ñ̩ϘéÞõÅÄŒÉôÚû#™É”¥!Ô5έ÷žÕ1Žw)|þF“šË7çá%ï rqÑq¦®C&ÏC£ïç5û«hC°!ŽÌŸÃ6ïS©œ½hÏ›|8Î2„»O43¦Y‹kWtÓàâtS“©koŠ1MèmD4¡{ùæüÉã´|fiáy‚e2—¥ÄóUC¬ÊÄEÇÞK¥V!¢½°Pßò1_ñÂE(b¾l]–™ïšœ-¦d4” ñ@Àï÷ñŠký@};nz®ÞdÞ켊ºTÈ"?¨W&C]´×7@¼¢˜1qV×nï¥CÍB$ ²Ý„x †1™2½)¦1ˆgºÐ÷¡çâþì¨qÒÅ›hDÿxÆó<ÿìðÓWúûf«rð!Óµ†î4 wÊ[kùf(]Ýñ Þ‡¬Œü;—‡A§¼¹–'ý}ÿÓÏøÃÅé$ñüÇäî×Sý‡‹l"¦eñ¦Ù8Å;IÏç_ÀÖ4™z‘ŸOŸŒýSFð¡3]K.pœ=¼W µ§g§êÁï- .`"¸ººÂ’Q@yMÛœ +°¾šòG 2pG?/0Í`=Äq@\‸¦™ÿz‘,9;ÿÊÿIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/beanshell_timer.png0000644000175000017500000002206212032647202025513 0ustar ebourgebourg‰PNG  IHDR)~p.zþPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<ŇHм=çÜ{ù%]ù)YßMòðÜóâ¹_žs.u~÷'åÐJP €R” ¥¥(@)JP €R”@5%a:ø_Íö­2}xt•¾þ£æ:žÅ[yG©Ñ®B¤·JB°k•"¸ã¦Ë[Heåøó±±}u追ªö½—“=É-”£ÙÈëZ·(ÜK…Q#ÊS·N‘i¿¦ægR<ž÷Íòì”»ÒÏçî±ÐÕ©ÖFI~XÎ͆øÆ¹d·o!±a=.$º}ì»ó³~V ±×ù”8”òp&vÝ쓟T²‹'Ùó'õîã±Sì)0žN~—Ì´hnª¯U†‰{ÇÙÓÅJßKŠ ›ÑC£4õ%7Ñt;eø+ý%¯lñä ÎÄîRвmä#ÉɦÔ+±V6p\7ÿ¯?Ìòøú›ÒÊÑFä¨gšð46׊1èScìh¢…b£7Lm>!]t¬¾2xñæŸIEF¯›ÓÝ‘6ýïn­áLìº1…m¨£Uz……V‰öߎ‡ÿ‰}ÙN5‘Ldü$KÓ¹N>€8Œdå“"CróÚ’‰h¡å›gF¼”¦W•ˆ~$ÕâL캭”Iö²¹aD¼g_õ´2çð©ÆÈ—5£¦Ò[B¸°Ç7RŠ~~}Ö‰-ØöÌ¥\%(<~ÊV´.ºn&¶æ§øÓÙÍŽ²ƒ§Ê°w"â”òö쩳èÿ]ª¶ˆÑ¿[ñ,U*¡L,HBÙų{…?çüs>’\®•Àl,:?—¢ñЬ/, ëâuª8uªørŠNª8Z’fýÀ£¤¯(geŒ)c+ÜÔô­Ÿ˜r/xØð²æx‰.·½tðÞ¾oÿö«W¬ ê´R,tJVÏ~ŠÎV”v¾RlG¯²ç_¤Ã)â·#°IDV½Gq²˜(fõ®_Š”ÌEÅ׳ÚÁ-ÏúúDÊ®PJÓD„=ÇŽN;…Y©¤ÌO#Þ5:}ºÂÔO[Šœ*Yán´ˆÑ5¡`ÖÙMJ14eÏú»<¾ŽnË›Œ eš©²˜Õ5N`0ÙU¿§X=ìéët¼ÂÀÔL?ϺUW´…ÑàÔƒVv͘B2·üÙòbcÅúåbraÆ^í'¾$Q^ÎÏóÙŠEÌ)=+–SVv2%6„ñý»ð·ä=@ë½ÎIà×|pëô­Str»Þ =Ø?CÏA)úÆôÜ^ Žu ÀŠ@)JOïŠvpIôt{€Ù@)`'­SÒ¡¬Üd3n#&ØNÜ{cJv±æ™_[ÞNþ—ч{P)‘Q‹á[Þv¢¨o6Äݾ%f£‰7æƒ_46ÿFФà¬/œç®âs)7'Ëøg}ìFâÀS¨”Uº ^£½N{?ÿkñ꾑ÞÕÿéæÁ5ûho®õÎ2Ù[ûâ"fø^÷ Üß9°Œ¾ÜCë”a:!^¿JfÅíDv‰= ”aqK_™dÉÓŠ…¨¹¨²@ómîK÷ИâQ 5Þ#Iö>ªw^ùå1ÂâN ¸y‡Hî†^󽋾ÜCcJ=e„oR‰òÕn˜£Ò £ñæjüõ1ôåSìçârʵDJÅÉ´AŲ,Êy6ÆøZ˜€°¢Ý;cJmghN¾d£æËAéòFÞ¼ì—"oÏüBµ¼×Þ~2 O/u¢3ŸjîÏŠc#ð§ Xq€\§ kÒùÀ÷CÇZeO(7Cú”Ë €u €R” ¥(@)@)J™jvÉ.¢óR³®j†T¬]Iã-Ëá]JGÚ·ª\-‹ª–ÄI„äÚmØmäp†Å»°Í÷‘Œ)Þ®Ö¡ 6Û¿2 ³äî­nYÖòð3ŸâíìÙÇDk$…渫–TÀ7çÏ©v>³bÈᬼÁ"ÓÊ16‚øçÚ7Ø• ¼‘–@Û ¿ŸGÏn+á’²ä°o6$±è¥ù’róaß\PöÒó'èßÎú¢Tš§RÛv;à›ç6Hs¾¥Û|” Ì¥øá|x–·+ïŸåîgÀÃVJ\ L l^ õÛÚúbx¶m0 Úù mϼ?¡ rŒeuº£…r²¶;Aa <Ö¢Ø½ßÆËlØÏ^lmj¼(+Ö×ÚÒbÑ%å~­Ïi;e„ÏÙœ½±Ò|<•Ú¶¶æ®}nnƒäè<ΫXµ‹±p¥¯¥µkñýÏ †Ë?ÐÍg¯SÄÆƒCbؘvR’šˆ¾úáýã?¹%í|T¬ë[ÖÈo¹Åm=œ2e ‡¿ šƒ$¨)'ò|“§qÈg¹¤b<·-2(i'2K%å~wøî!J‰­¼q²æ(j©È'Ú³¶g¾ûO… R“,l“„õ ÅX©,¢óíè?'ÅOtÓ¹ÙŠVÝyàM-Žüeè·ýqŽôxy:LÅ^¶@µœw;F\£…5#· o y„ $IH*‰gå)I¢•›§ßa3)eÈÍø¨˜O´M¦•×.XY]ÚGImư2XÆŽNŸy©Ð.l«Øñ-¯}ø2Å™ŽYUW-æ®ë«ýc•v>b¯vc;æiÜøÊª4,Ó7>¬Œ—èfùZI”û º%Ê`ù •å©m[&'?4á–¥²BÞÉóø(íËãŒ?Úmód(g¢(wÕ8\ÓLFÍÎgŒÆ•ÁU6ˆc…2Ê,~¸%P¹mPx•þD[/Êj¢ÕŒ«t^åþ„’i—_¼7Sy÷ÄÚ;Jø¦Ç=‘Ëë\§$—×jH¦ç¹–Ã3Dc)qK¬lå‚Y1º’ù±³,pBÎ+áB<·æ:}ZXo*×)±£ÓN¥œ=ï|᪙ #Êß{ˆO@·&†&xXß:Ålí½ä Å8«Ñt#þúù®u\e’)=–›ÒäP_·Î}”F„~ãVBoʬ&îÙð–„s÷xšbbdR¹É_ÙCï:Å:Ï4Sò¶ËO Ï[¨–;‡Ê°wcô×å)¹C:õ˜J´~¨„Jò˜éçÓ­rQ_§ãêÍüG V“Z/xŒ™<&‡¦oßT^C¤S)Ô4µ]Z¶N·Ñ¾™E_½“;‡â\Îó¿[žÐ1¶HÍ/KŒ»j‚Sª ÕxžÇvñµ¶ö©ÂÏÆW•PÛLà.›‰ÔzÁc$3985ð«Á©âk•™ã![†éý-| »v Úmpªâ_Ìþ¨-ÃÎc± ˜˜½+Z°§¨®f·‹¯¥€*ÿÁš§üñè¯}ô¾„ó³cè·æŒÿâö'wWŒÊÖáí¢zV½O¨mvœž]Ö)@ç•tÙ»NüµèQ ní ô)·öX§(@)JP €R®’+à+Éì0ê*àݲ‘cÊr{äû55Õˆd¤s}žp\ä)xÙ¬ÖZáȳá/õY7¦VÚ¶ùµvoÕ¯òðn³o»/›Řâí²¿ÑWÀ™ ½Nv>±\ŠÊWTw“õËÓVn«LÓ­êxû÷§mÔóQ°ãÂ"M9¹m²%×°–·]ðó4“ô`—>Oloþ» ìopl'ý¬½Q~aæÉZÔÛ :MgÏùìÍòó…; „Sû¶û{|¹žœR|†'ã™0ÑÿÉv’§Bù|ƒ½î‰*¥Ø†¹¼t€?tå ¯åµë9ò[¶=¦ì¥€N¹ðBðà×>@)JP x’ ¥£¸oùS¼ÏÙŽ/ëËÞ}]¸gÇŽU1Vë¬fMQG!üíciEÉi’‚‰¼Åv—›ä£1ƒÙ©8—KÅV 5mFøŸÜ+ë”ÉÂXa_-ÙÚȯ…ÝŽ‘£ÿzßð= õÛ~ÙÆ +}Î«Çønå¦}x¶m0€nÝ+JɯPu¢‹Â}\ƒ‘öÂo‰ps-Ñk™Ž’ÔôMúªH£»_Žç ,íVçæoàiSŠënô¢bÝ«mšµA¬;ó’H5,Èp …÷]ÑïáÆ$|§°ó¼»çnݺGÖ)Ê€¥}KVþ晲4%îâ¾QâÎü·®¯ö5¢_÷Òï)2¥“%áŠûš(šS~BÉtÑX¡¦™ŒäÀÓ­§'ðŸKÂß/?Úr2rwf‰ZÆÉry90£nw^xsa ?±<<Â×aü-y×Òzïv\ƒ‡=û°ÕµÏÃâv½A)z°†î…Rô)è^¬SÀSàßèR üû}JÁÂ` ¥(@)JPJ¹¯Ìú|÷Êïé_ÜÅ–V¶Þ'çgý,²|w[b«_dÔä:÷Ä•Tê'ZÀþÜ'Iµ¿û„þwGmº{ªìþ¹ÅÍöÝJøÞèMcåü|Ä´EuÛÛ³_^iCÄ„pg)Iö¯ÞÛArØ7çϱoöÒ<‰á#é äf…=*ùFéyYù·f}a±ý:áfJ ÎùÂ)qÿñ€+öÍÇy ì)àçÅdsüçO—g#Ôç¼1VùfýyȲ„þn¥ÒÄœ?ÏýûÉAe§Œ)Ê_}š¨wÒYGë»Vûòd'ѯ¿¤O9{.©þgºŠßøž¾oÿö«W¬¤øÎ »jè¹29ð³ÃÙ‰Lßõ_}ï²R&‘å¦b×ÿ#¸Ž]“X®àÐ͵—ÿ6w'±ì¾•aYðØµ†øxfS=6¥='¿Ëk«£d3áS‘²Ý‘Õüû8êÓCtÁaŒ’Yr°¨#ð)³®¼8YLãJá¾sú¹/š˜ƒþø§q²…4@Âå…â³&A =çHóƒSô{£ú¡Ii•6¨¦!6‰~_þ2øÓÔã¤s³uŠQí_Ä#ïO·hž)47$'h½¯ îwçôiÅ·úÕ¨$‘lšX“c“LÏ“ð$gº2œ8Ísáêh"ƒ9Ï»é+¶F·V…TœójDšzœÄ·¾J–šoľôªpr(WuzXG·½ÞJaãLzãl±a0.Ž6±Âoy½Ï•'?OyYHôžËÜuíÒ°pÁdþ«ëÝ!š`e”_‰«Ç%ýN[Ñú]© Ô¨ø§y³ô¢h•šÖûŸ1ÓÏU:?¤Aö®7ÅrZž·j~zÊh¢U¾¿VõƒSô{£ú¡ù1õe˲DûX¹Ü¿Ï {;ê*ÙyñžL/¶Pó‹Ë’æ‹G=îM[×ûŸ±]J,̈»R6PÚ|írX~ÑJ ±!EõÓSž|j™®j~p ~oT?4/ýA°ÌÕ§>þ}2Ô€óõ䨆eØÖ7EÙ®ï=?¾+ ';%œ°Ç¹NÙäÚgS<[ºf–¬ý"ö|Q_¼ ¡ì°Ùgt8nj|èw9è*?ÁÙÚi+Z ¥(@)੼öÑnnð´ðÈýûà6LOðïî{r€RV´J;áÚGì¢öºÄÿÒØëf‚‹ (¥ /U3·ˆ˜Ñ[˜}Ö£hHÁYnj!âè)çŸûÜŸd‡W¾Xlþ”–7@ßÓë”à1{kß×”ðùßâ»"¶gO?köÑ£¹Ö;Ë,MKkŒ+öäìã*L> ²äè?(aûÑ«ì¹3N‰ÝöK_ º{˜d–¦)G+¬`öè:E!O‡Ix€b4{øP;:㤓, ?8â-Mö–RJ¼ødéåëZjÏmœìÕuЉbY×’ú檇ë…VSUÓ`E»§Çû¥ÈÛ“ŠÜ1”ó` i“4à©åáú÷KŸ§ø÷h€¾uʶK(Epé¥èSУX§Œ)EàßèR n¢ô)« €u €R” ¥(@)èòïCÉj¿¾“éò䣕õpØÖ¶»î$Nþ¶¸oÿ>ùp5_>ÛÜ¡ßýäŒÿ,Ü€ñôAÇ=þ}(á®;l—\ïúg?ïNý÷,ùfçßeGVæüb\Rýÿ¨þ{4Ÿ@s¾¥,/+ûy7Ió³Ò|­(ù]®{ ”Ròˆñ‚ûùQ<kWˆÔöhåj*ŸõE‰n/Í­(•æãŸ'”qñ}y÷\Fw gÿ¾•Põ.p“žXŸ³}Ÿ¾_«ÃKÊ9Uýûp¯+Sdz”;>ù–íÀ3i¾/ŲÌ,7uEÝünûÙ–Áèéÿ¸µ/F˔Ҕ¸«ÇC¼¬ZG:q7בirà6e&âZþÆ •äI;¿Ã^>ÚÇÚå°õ‡Õö”—í·9{cÔyÜñý W’ÏéèOL¾ž£ìëS>îj"6ã³gŸmø÷ɱ‰½‹Rssú+߯bŠÿžŽLèk‰‡]¦߉­úÿQý÷(Ó ‹«U'ËDPš°±€Uñ Ô¨å7IÂçÏMµrÕÏ›3"ÔDÂkhZ®ªuúÈMK‚L܇PE>öy˜ºš)êX¡ÆO)?tmÎCòïÃΥœ°ÆÇ,‘Þ»0SNi¢gæ£îQöVRÓªþTÿ=JÜp¡L’Ì}t…'5yòÜ'P1¿êóçÊ›Úè—×Ú")¶h¢=eåf´r…¡Š|2w)”µŒ[›OœÎá]›óüûH4.[†ƒ#V9FíÆ’DKÔªøÌÏ+þ]Tÿ?ªÿ…‰¢ë—\Òã‰ð‚ MÂ'P!?©>^SÓüûH”í)+·ŽÇqÙå‹åòè¦×Û%ÿt$8üS&ãháAW´ºüûüˆivìøØ,¿âI”RkQe-²JÍât+þTÿ=ÊBÓLð¸1vV£îë¨Ø~«ø*äç-9]» 5QøùQæ+Jôò‰DiZ®›lk¢Õ?ÔÊ(ÍÇ>ŸY«Ù,X³ÿ Wɺüû4PÆt8H¦Ô2&•þöÒâYøŽÔ/O[ÅBAñÿ£úïQ~ç[pöO™iòØ'ì¼)> ù‰ûüY(ä~~Í/†é²]kOY¹–KQùŠ…lÓÁsnl}¾ Mÿ¦ÃØH&#MR#Îþv¸oÿ>À—é®|£(9‹-ó’øAhÃDáÔ>üž²Å:¥LÛPÊ\¾«ôm¢ÿqºQñI¶hOyÛÎJµmÆêùԉ͂1åQ)ìi¥`÷í” ¥€Àú_Þp· Ó¿î«ZáßÜ祀jÀÀµ€R” ¥((@)JP €R”  ¥(@)JP P €R” ¥(@)@)JP €R” ¥¥(@)JP €R”” ¥(GrºváIDAT@)JP º@)JP €R”  ¥(@)JP €R€R” ¥(@)JJP €R” ¥((@)JP €R”” ¥(@)JP P €R” ¥(@)@)JP €R” ¥¥(@)JP xJ©Yu(Œn:”bÿ ½ô)è€u x8cJg=t(eýt)+€u €R” ¥(@)lÉÿ¬õ©MpEHIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/bsf_timer.png0000644000175000017500000002034612032647202024333 0ustar ebourgebourg‰PNG  IHDR$^‚|ôxPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<< Ÿ¸ Ÿ¤aêÝ ³ä“4OÕ»6já“ðIð$x< ŸØ>ž¤ªS–ôåvEë¹(/UžS;Ó&©ûeÒ°sž„—e±(Y&Ö3òMĺ,_P¹ßÎ_Ïs±S{áÇäÙDû1“üÂ6ò$©S‚òA Zj›z~ˆç»hÿEl‡)ÔþCáË ñ.ßVŸ$›äCá‡(ÿB¬‹¿=µRyÔwákÊ8Þå[Ë“ô­•ë S~G‹±>IiÿElÛç µ+•?žaKyË‹”¢\û$­ïfۮů4’W)Kð [Í“x>‰õ/Öò$«> ñ*š_O²½<‰,Ëi]ù©“Sü‹ˆïA¼J6†O‚ù$æ“æ“˜O îq7°ˆ»à“àI€ÝÿÓg¬K¼~ûø¿¿­ûömýñRßOòòSÆ– ^~róI8[žüXo„çyvØfÔé2Ê“¼þ¤ÞôûùÁ Ë6/5ÿ/ë(OÂ6þ~~ŒË¸ÝË6ó$/?­7ýv~ð=ÞÛ[Ÿo¯õI6þvþ×q»ñ­ø$ê{øõ''›~;¿º)JÔì6Úçw~¡÷Jd>ÉRÆÙ”e÷ƒÆæ³ÙôzÔ6Ø`3\ëëk1ŸOòòÓé¦13Â'™ŽD_óýÐêç•¿lO¢Ë Ó+ ã}i½XÈ_㓤ÔWݲr}š°ÙòpÊ$Ä:=g–‡¢ ƒë擈wÎAÚÔIÚtYÕé2-ú=ñD9àMÕã!ùœ÷úËJÔ«öè»H<˜RmGÚjغy4%ˆgÍ`ÔŸ³d9x퀫ŠïØ{_„< g¹ü.ž°²±4¹†‰³ÉsË“páwÌâþ ËÔ¶ùÊæÆ4ľL¡â:,ž$=O. ÞËô^"Ê(’F¬ÓSE¡IïUi—|#ÚúâÙ°dL[ÚÏ)ò{ÄÝ l¢¬F:OéÙÂLà*ã;ö5³÷EÚæIdV)ãmŠöyã‹ÌÖù$ºL£ílÉñ¾¿®>Im}ñw޲Â'I –¼N>¯êêsÕ–+¿c™¶lÛ'I,¸(Ÿ/“¥¬7í`¯ªý–¹ûâ äIÈw˜HhŸÄ"¯uÞË“r¨}’CåwØïlîY®l>›íƒØž¿Ýøí8ÿo7˜O‚%\~¾}óIêç÷ŸÉ°[i^À|’”ᙼ«s\7ÅØp.,pmñîóI€­ÇËuóI‹ˆåê=§Ol;ŽßÝ'¶ïÌ“¬³ ö,ïΓ¬·X¶d¹žd 8øð$ï1\ßmÁ)Éû$†'™jÄ>;úFûÆèÞ[±>éÙmŒÎ x’íçIô{¨á-ýß–¾MQY}i{œ•x’íåIÚq72΢–³ãø›ƒ¤öú=U¯ÛôúMzúAÌÊÖ`mÜô5L¼ïZm=ÞnS¨8EŸd—xÒõµþˆóI2«l¿y4˜ªO²< éú’žoNú¾ÌCž=P›¦×xëyüvà·à\> ÿ×ä³´¨“ßþþŸýý“w¾èØ <ùÇ‘¾/>K“'Œ=ß®ã0aXü¥Ö÷…ðOþš6ü®D4 ˜û¢Þ ½ºÀthðІ….0,t> ðN< Í©ûAYå¶Ë¾™{®ïîjÝ~4W¥k_ÖÇd÷©Zãݨ3ö«ÆRåàHNáI žç/ƒ2šW¢ÖËÕügÁârrh¸ñuAåÇc†\™‡É)< e–—ë&ž¦Ñ16{£Ê¨Î‹·Ññ8ª>óê\ìN£czŠ¡éW΃Ôûúëºmû#¬Öâ)Vë̘e]?´Çç~¬PmÆhc†tœÑÐõiÇ<„?¢Àÿ­ßM5ÞüZ¿=ùõï¤G¯oˆíÒÞOwŽ÷^7ýñTØãÞë£á§ów›Ÿ>î©z*¿%ž?eÃoˆr¯n!®7o¨î–ésÏô+Ž©÷QÇwýPÛ²÷ÓÇG?‰±LT?{¢îˆ‹ã‹ºf¢êıo©±‹õE~K´IÅñSjgŽ¿çú<û‰:a_çǢߴ§Ï]”¹>Ǻ_±_ý«¸õ.âï¾x’¿})"6>‰~ÏS¼zÿÛ¸¦|’¦¤vÑx=OVÇëˆòZíçÍ›e´¿)×ÇqýÔj.­cë·w1?Ê'Ñýª¹¶ºÞßîgü¨`Íxã¦>ä8äxvuúÄK™?/Ê“LY}òß5khÞ*ù$~¼ wq7Þn*–G˹ô=rÿbáêEߥl×úâz„ïÓósÛ‹}l{îå¾÷Ž[6Ï88~{¿Õ¸"·¿êSø6=7ºu-°c–±µ<‰Ÿ'K½·µ¯àùƇÐõa¹óIVë|ßAûDâú·±?~I$¶³ãíñ>çÂ[:ÃUÖµÏÙ û;›ÿP¸cVy¸½fœðI¢¹;Wáið­©f+墬¥ç—uîs6d›Œ-„w̼µ½fœðI<ž¤Æü Xa_ŸÆ“`þ¬Ê3³OÔðIÎî“àI<ŸØulÀ“œžuôàgØkk߉'ÙG·‘·ášcI™ô.Õ'yˆë|íu£“ËæI~¹” ×|yqsyÉ<ÉC\ä뾜\:OŸäÚãþ÷ø$Ñ<®gðI¦Ýã˜Û‡í¼'|›lÀ“¬Ä œ/î°Ù 3ätäoÏËù91¯Š½ÿÃrsž¤,i^ª€Ì¯lYÖTW/J¦Ú˜röHÞ‡òo?£ç›Ïè¹1V>C¦s1.,ép6ÃßæªÙÇ›ð$f>èPÏcu17nŽ©©£Ø•`«ðIæõˆÍ÷“éhIÏÂ4ÐóC”Ë:¾ïשr<믑O¢çvåT3¯Bεþ©­“9åÍÜÒ‰òIÄ=Âè%s&ôîiijc@Ï*gâ~H÷e]£ëT9þ>WÖ'´ û„lºTÛÕR<¸Xª¤z¤ê[uEEõÔÏwâËšI4óټǜÎgœ%K&1šÍéÔ(p[Gû$À•€¸?ñ׿/Öò$ –7kônl¼š[ò$|0èÈG j÷.Êf2o¹Ì].êú &®>Oâëݤ_‹gÿA"Ë=©wSI­~žFVg®µpæÕA5VÉt&|ŽÑô|×Ál:R~aÿPÖe6=À'¹ŽœFË/oré×±s³z>Þ¿‰^'—£ÖwfrÝŸ ¾vÐ{Ì3ø$o^þzüæ¥Ëÿ>ÔyÖ‡™[/ÅyH«fX/r9Ç•ò¨R®÷Ì_—saž\Ï•]P¹ÎÝ>Öñ_ ÑßÄ+×íUßÔ—Žý ûÒǰyà‡:6¨TspsÕ†rÅ/вçn¾.—¹äU:wã0Dz9å¹:ž:O½NmM{5Ç7 Æáί˜ÈspçmsÛŸw R;È\™_þ½.É)óI¤ÞÉ»îéÙ°P¿&¢oãòµ·ôk”^ŽßÆæstmèx,ªk#ËíqUîû¾ÿŽ_«Çã¾÷•¾Sþ€ÓÙ‰èôØþœ~Žê9Ýž2Ð̱ùèå~î¸2¯ýÊyŸÄ;ÿ^ô|Ýz¦¯ù{ô›K›½Ó­wC1¤èÙ´ôk¬. oéÏLŒ^kWû:8ZëÆ}‡+]›Œúxêôi¤>Žî³­‡ÓLT}·Å,—b[ÍÅå9å’/b|wz8u¥Ú[ýœ§zýiDÇ?§§ö<”5ñÏÛŽ7§ó-":?+çËÃã*›Óøô8> ÞÑ© <_¿fU—&ÜϾWnLLc&xÇÓ»6¢OSDúÒÇèÒãYõI|­?O7°=Ž|E'Ôô 5wjþyDôÎ4†Ö9ù×Ò× ºy\yTÛ¦­K£ôg¤ÍWÛŽc3…×·(›ÄôiŠX_î›èñx¹ãeŸë®Í¸åt]KwÎÞ8ôyŒ[çîÿ»Œ¡P×exéz<Ýq7–spz6lUÛÆéÒøZ1Úw±¼€Ö›a¾Ï¢x_+OëãdI¨OcÛ´ú2Ç8M'ÎßXŽÂµu:NwÇ㋬žŽY5w¬îO–¸ë”yÇjûlgƒÓð±š>þuÏ?hWË98=›–¶†Ññ´b̺éGëÍ(m§¡cú·º6¦<Ч1Ú9í¾ÆèñĹ•Üö?ö-ñ"¹ñ¹ìø”~Ž:¦[5wj7vwücsþ›¡¥á#Û…ÚA‹«©wsÁ¸ðwj[óæŒº¾†ßù¿“Ø1¨¼/­ñÚAÅprË·upÞmÍ›ÉYÇ“?ôï$v dWÆh ¡w ½XèÝл w½àRõníèÇ@ï¦ ?ßA¾èÝtà®9ônº,´o wÓi¡}½äOÛi½™ÇuCߣ€ßÎêݔƜÖî—ÛÈó±õy\åüÐzQ’ÞY×ú6L——r^ƒÑ»iiß<Ä5ßn½šGåǽ˜uƒlÍœW<É–ëÝpObçÚõIkžÆª¿*ãQä¼ð$[å“<‰œsêâAlHÕš¯éÍy­]|Šœ‡ ždûy’žœƒY²ž‰GyªòÊÛ¸®â…{þ\XÝÍÃ,À“l;ORÙxÛ¡‹Ä…læ“€'Ùz >Ò¶)cëz¾¥Šÿ±¿žÞMKû×|—ônÎð$;¦ws€'Þ æ“@ïææ“@ûz7Ú7лé´ÐÞ ½z7л…Þ ,ônä– w ½XèÝðI SïFçlíГQùW«°]Lc&§S±þ´n´ÞMÙGÞƒ4ªá²ªw³¢'³ÐùDM–N –¸¶Ë:è®&'kñ¾ô]€ õn¬&K\OFæµs]­Ó1¹Ñ­Œ-·¹ÔÓ@ÿÆiÜX}™ÂW–åð>‚ßnÞȲÿ»—¼'¶ï¥Ùø^Ù-Z¯y]öÅPÕ”õ¤/Û‹Ô€e arPÒ_žê¨m±í'¢ÚO”‹²²áj7ÑÇÇ×m½rÕ¿XÇ•cíþ ³÷‚½•ßnZz7Æ'éÔ“QùÒ}š<,÷t\ÖèË8}­ã¢ujŒæŽÕ’ѹÖ1Gå½,Ýz7ô5Ên=£ábôWx«Ü×­YÕ—‘z1NFë¸ðHÿÜåZÇ|÷b7œORl 'c}·OXîkÏD´]_Fë¸øÚ9a|¯|è<®ZfS=®tjZyÐScsøñÂV/ÆéÃX—@G¦‘z~—ªíœ+«áINÓ“ ´å¬MîkÑXÝã“ÔF+'ЋñõaìþžOâ´_2pW'ëd=OÃÅéПáöµÚ,VÇhåz1¾> ´scŽ_‚³x8oÜM[O&Úæ¢uá|ݺ!|…+Ÿ[¾­'msÑïGOóe_áCú$л…Þ ,ônèÝлvKïz1лéăï‘ßz7ø×z7]öÁ˜Š½›û×z7ðI3ÍéÝÐ<`ŽˆœcÌó€O²ëz7+Z6•rÚ÷õ«›Èï±Cy\¥¦Ñ¹{sMþÍØêÚX-œz|‚k¼y\ù_Ó†ßÕøÃÇÂ7·Åú«æÖQúEÕ o¿PÛé‹ÛGé*¿¹÷ꎨ»38zE0mD¿û/ÆóúºãŸÿœÞMß~<òî‹Xnù¢,ÚZ62¿¼Í)OeC Óf˜Á'ÙVŸD¼sÒF€ì²ér˜÷x“,Å_Yé’êi»jÒá—ôd]MõduÙÏ#ñœJ€k q4IÃüûb-O¢ãfhþªÞΩ¬àycõqÀ“l-O"ž K'û56Qeu*lÒðƒj®·éi¡-ÕPûjÎïU¢Ÿo–äÿ×ßÈûù÷Åz½©ÃÇ]\ ù#žOâ´ú¼6ðI wÓ ð$лéxèÝà·üvsóI~„^ ônº,Ò‡@ï¦Ó"¿ônèÝ@ï€Þ ,ôn`¡w ·<½XèÝÀBï€O—¡wÕŸq±::F§¥‡³ÒþªhجŽ3¦É–…û¨:Êi+óÔvÆ(…ý&6îc={>Û2¡|¸z¼:ï®ËϫƜ_¼ÞM\ÛÆéÙð–¢¼:¹KùíC׎òÔž±?Êa»¡žÏùòÙN˜SYûÇ¢<¹*Wnyáz7¤mãò¿s£_S˜ö^^x£‡cËÕ1¸îKçš÷sØ[£ãå¶÷ëòÊõmãúå¾NÉm_ÄÆ©uxš@“GçÙ¯Œ®Öä19ï¹9‡Ú¶+ÖŒÓ;žÓú±ã\=÷•öž¯ Œ+8G—“Û;‡ _¿ú›¬Ï“ø$o^þzüæåØäƒ/Òl"óÀ˘Ê /Ž)ú”ù\]þùE>å¢>Wza²\å…_4²¾àºÜ•©¾Zñ=vÿIìSرØq•í~#mt¿zÛŽµP=‘qÊó0¹ôi ´¯Ÿ_œ{6QûÈãÙýZùöÛãô¯ËB÷;Ñ×Ñä3öÏ}MûŒâü±šuo\²ßIá¡5¶˜F€hO‰ä”ù$çÑ»Ñùáž~ç­èáh=õý­|Ò½±9åO×Fï/êU;¥ä™ôë•{íÕx­®Õèðº;­ó3:=NsÇŒW¿ö´x¼ý¤OÒSý†õáu‰ô«ÇZfM{ÓŸÖJ¬¯á+ õ„ìuÓºCÁuÒþ#móKÓ»‘±8®qÇôpr§‹~‡‹weî¿ãÝþOsclã€|?ÇŽÇõ”ó²¬=£«#ÇÚ¥Ûcê}½þ\¿ŸðIzv¼z 뮋®o¤.PÉÄ~²MÃOo/û£Øk{ýdLöʸš@OÈ]??®Êö¯þÎq½›ÕX`¹¾G±½¯š[´~”~abƒiý¸¹Em(öWµ™‰ûД«øaŠ'võGi~sï¶êSÆ›>uÜñLô~ƒûñÇf½Ï-UgÆà¯l¿a›ÁÞíÞxoÜo{ݸ§+S×ZÿM$:c7×»‘ïõÌ"ÔÃÑz6.Îx¡ÞãΧp9Ö?q8«º7z<ëÛÈx ¤cƒ6gô½ˆ¿Ç‹Ø~í1ðÕ¸êVÞ—ð˜±õq¤?sLa³¨Pž÷ØÄtií]³Õ1_œÞÑ¶É |ºÀ°àIÞÕR®ü*,÷¶Kð$àIü9žÑß?†ðIà“ØßoÊ‚ægxZ?Å‚æ«z¾/|’æIÜÜŠ`­ŠSñ纀'Ù]ž„æ„JmîÅÉy¦ëžd‡yWdç¨Øø> |’Õy)íù¥< xwõIl|x’æI2^–‹C¶|ŠƒQ1³àIà“l2Ÿ> ~»Y}'ã·ð$À»ñ$G~þêèÁó¯`wÔn“@³z7> tôvÿ¾‰ÞÖÑò£Ë‹›èÝœà:A¸K˜´}çR#v6•v:›*ÍØts¡ l}’YMï§ÃÁhÿPÜ#£Áh*·¼³wSXjÑâΉ}åö’‹>æL÷»¥öù! óï‹Užä1ÛjåÌô|éC3h÷tÍ{GBû$ K–jŸ¹¼'æÓÁ’ž$©~o%°[l¿‘÷óï‹8ORëg²Ò'™í'ðIvÔ'‰ó$³|þLGú³HlO)Ú_ˆàIBžDÝ#3µ1 p€'ñxé“LÓé\Ü6ƒéLú$ò\ xã“Ð÷Ír4í”Uï«üð$’'9í;šƒOOB<ÉißÑàIÀ“hž|x’Nžïfø$˜O‚óI°¼ž|x’Nžïfø$ïÀ“À‚'éäI`Á“€'OžO‚< ð$x< ,xXð$àI`Á“àI°€'ÁžO€'O ž< ,x< ð$XÀ“àIð$°àI`Á“€'O€'Áž x< ž< øð$àI`Á“àI°€'ÁžO€'Ož< xXð$x,W‚'©ŸÝvÿùýg÷awÑFx’äD<[ãON„exæî6X“¾ü´öî‹UŸ¤þ±^ž;Œ¸OR'žOâm» 哘mþ§ÏX3Öø¯?üþ¶þí÷·ÿ»Û–}ü?Þ}ø$ ÞÇ€ÆZŸïcÀ`-O ³O ³O1„< Dð$C0Ÿb€Otâÿ.mû¶8¹IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/gauss_random_timer.png0000644000175000017500000001421312032647202026237 0ustar ebourgebourg‰PNG  IHDRtœàaÇ_sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ CqÖò IDATxÚíOh"iÞÇŸ*úòû¨ñ:Ð"K_¤\Í:12ˆ Û‘}›‚—e&y1ÌÜÊuu„ž} $Yæ"9„f034R4æßaó"ŒE.só’fÖI›Û渷ò=jäÒíTÖ2U²ºx·Qˆd Z?>^¿µò铜>½»ÊÚR±Ùl Ä{o¯«vÄÌc¥ÛUqÑ#¾)¶XVŠåŽ×C}Ÿ×Ðúñq¿-[,«½9 ?ǃõ.ͽm¸Ë0€·mw}Ð;ÀùLÇã›&¤ð=!.:kQW·Û9X[*µÔ]>‹)LŸÌiÊ'[:,’äOím'¼L§²š,µ´[Fœ  W]ßÈ(Ÿ™Á‘i’8tì¡O‹ºÝNû’H’?õгù\*)BË Çó|8ÜåºâV4YêÐ*-m‰NJ·2ËÆ“Zu¾®n·±‘•…îJFyíRH·SYÓ,ް¬‰¬U:Ú‘¼,¯EÔaaÙVqi«P˜£·º¼%7ÆIœ‹ê´ÊBa~®ÐЖÕ>XÓŽ xà‘ˇv“2íóØH•·¼ £GxˆÂY•H$6¸ˆh¹Ë]XVàù^Ñm¢¼@ªg4g¸rɲ”X)` [•*‹ÐL'6 s¼Ð*¾JØÈ²­fSn’r3 Õjß–1Nâ\UGï_.ï$¼ÚŽsÊÈ”J}±xБ‹…(ææææ tA—aBë; ùÙîñM»¨ñ‰/@oæ¨î)g¹ËhMÁ²R,w¬ÀÍÄ$Éaûây½² ]W/ ÜëÝ]\:¯9 qV틹W)¿$‘ꙺp.I±ü‘Ò$oÚh˸—ŸU§4>–\ðh:~Ù¾Ö”æ_Þƒ² ré»Ã[™˜…ÏnX–8»yÆ»°½GÖ–J-–øy¡÷d³Øå¶’˧9· º¹>X[*fÖ|‘˰u9 5П{ôtÒ}„e‰Ôë‹$ÅòwôÝ0‰‘ Ãx鳩Z¶šÆÓ›-–«Öj9ë¸àú ¬]e`obçX=Q»„a±k”8„a¼ Ûù8i—úÞ¸\WßÃÜæ€ëöå½úI’¹\;T8>^GœL§E42g[¥%ýÊ¢.öË/TÄ3Ý—µXV8åyAeun锸nH† ¥ò1I"ÍöÇ»œ4`} ¥÷RRUEm”º&4',Û*¾Ñ®ïö–o «$>3ù·è`㰞ƛØÎ·£¼À²­R2ZÒh†2 S'y¯ä÷$©Å ™ùæð¿|BZD•%)ÚK¶—2M£»K.66£¾ 5Ùe8w3lÀïF½gäî—–¶|Çë¡ëâfâDè,O~ÔÇãñjµª•òj±Õ;€µ}U79 4^``² Ë„Ös1}¸H½’Gø F$ÿòÞö6Ÿ ôfÊ.壶½`¹âà_.ë¾Pc»Ë¢ãy&‡Ök¹+ðs«•kâ¥.&´^+/÷$–;JÏèµì¨·ÄÛ·z:ñè@ßÇÉ¢/rˆ ‸Äq@\â˜,ô_ÿ÷î0‹‹‹777¦âBÀ0\±¿¿o¹P´òs'|ûÝ÷¸ZÜþü§?ÚO‹&‡ìÆW¸fL>777?ÜŽ]À­Ì3 .€[âøˆâBsýÝþ-…;òr­gƒAN!ÌÖo¥ŠQŠÕµ0¹u·í1nXÿŽ« Œ±ZЭf¶fîÜâj?ùåëg»çbøV« ožXAb[Ü «wôæþïË‹Sw}Ûçç›r›NfÏ7Ããì2ÃN‹ “ïÓ f^F7=W£Fn_­tºÊêÜÜÜܪšå›æëžŸŸ§þG:/$ã'où5Ùx»6Ñ屬„ Ú§±æïzVõè·h6+VÙn–„g?¿ÿÕ}iõ¬|dD!GA]×”.dë½cÜ„"j—”vµŸ4jÃÕ~2 ".Å%žËÅ]P©Ãùáá!M [Íô\8XVÈœÍÐí­R2’#ü^*@šªû§¸µTl–sËRÍ82W­ŸTžñû)ã{c“dÏÏEQüš¼.×--Š¢(žËîÁ-¶ÅVVèv›ºèXºØH†]–vµŸ,=}+Š¢(г'+Më/6ÞŠ¢øvãb¥wWVh~üú¢ô׿&OfÏÏÅ¿Öá›Ò®ö7ß/Ÿ‹¢x¾KúÚ°I²ççc€]äB¸tyÙÏ ¼vñ¥Ç€×Ÿl¦Úôm/xè1ÍöÅ£ƒiç›&Ô«‡[?>¶sºyöù”IÀ¯Î;¦>fÕÏž>¯œÔ­·Ø›Ø¥ÛM몬)‹›$«”á¼´«¼#ªŒ†7w=yM,Óc—½V?—㹩ϟýüÓYåï!?Ö¥]ýãyú™”õÚ ô·k.„Ï¿|JM“½™‘j?îØhQ;Õâ£aY2¤½±ví ž ®üÀ²„‰¼œ5=ej±¼› 9–})¯‹ nÑUá¤Xã5—«ýd¹O–öëûŸŸÍº¸Sµšk¦¿ã*í×÷?ÿüø¿ÑGˆ‹1ˆ\Ìé™æÊ—ʺÉA®Ø$å²[ïÁ'¾‘¤X®VslÍžM\üre2ùH®ÝsQEq;á`]³Ö0¸eˆb •,û´¤–9ji“ÁgOŸ'è,Òh" ÀPâBTÂfS10vèl Sá–ʲw©“Ýpò‹w_®#üúþççr¬~õËEo;£«ýdoÙ fź”yÖyi}ózVm|x6Q)íÓ.•*‰Ù»¸±§~ÿÅÅ ÖlÁx§E².xÛùv$£hM>.ðB&r¶åÂçЛØÉµçøRr¾D$)æè¬©Åòy= ®)NŒJXÞÜ=áþÀýé7_o$*+A²{¾¹yN²Á`<ßx»›øòD71y¹+†·hbœbwÎgÝÊKy9Lî¿-/:/-¼ùö—d[c !/·w•“^ƒ‚_rc%éåî½<žZ,Ïfå¶IÒË]/À‰nèLÑÞ½{§KÊp'|ûÝ÷øá"÷‚Í×Ïn|µ¿¿¯“|ýpGk.0“›Ïåææ)£€¸Œ™?ÿé?Ʋ —[‰\py¸¿`Íq@\?NW ݈\¦EûºÝÆV$#ÐDG’?µ·ð22ÀH‘K·SY‹dª$Ns;ñ$·uGÖ"Vòg›0Yâ"¾)¶X6ž—­EÆ›ØéåŽkd€¹BCŸ› g =±RYŸŸ§«Ë ™ˆ,|´4¹ms…Ÿ¤Ÿ >L¸ÐdÚ’›á öv*«¼ÀÆrµZ.Æ üj¥Ó+Î΀Œ`À²Â)ákååi߈ Jåc’$I±üQ:Ä0Ýnck©ØT¢-g™47r1Ÿ‰tê§MYw¸™˜$5OëªpX89fÐ$@[xrÁ#»TÏÌ‚­Ý5BÊpÄEÉ¡«A#ck+ðQ^PLBÓýú%‰m•’Ѩ±# àÅ…aB3q²™sÙ_ CÀ÷dœMÂ$@Órobçø8“!ZÃ6À¤D.Ü«”_’ª™5uµQ(4º]5‰ÿ™Hˆx&°làEØ;¾IÇ I€­Qƒµ¾Æ§ó1I"Ÿ¯“¸#Y„ÛG¾­H¦”Œ–!„Ärµu†!j>*"År; ïxÛ¤3 È¥9s%ZàS§KÅR2Z”bßþîçÿ"1‡Rü‚—q¸&4ûÿm€ßp{ û?à#qÜ ÃŒ `Dôk.X˜ vÍå‘Å>¬¹ .ˆ âÄqˆ à>àÈqQë1¢ER²TIœf±oãh½ƒ…¶GM£ë¶(·ÑVËÕÖC;{æè`‚"š‰öðð°VËфؓ[mF­–‹“j&ÒËkuÛ•Òìâ'ÓÎ>YÁƒ›µÖTÓÒï"Bo 3Ãy5å­º=²V¾t¦}é|œe[Å7¢R‚¾®ÁÛU[oWö7Qß(PóÓ*i’p£nKß­5ŠYSµeÎÎfþÒoŸ¢ÓÞêüU…ÜcqÑ™~h·gÎfècvÐ0¤õâVF`ÙX®vÄ¿pÚn&&Iª%€™9‰>Sê‰'ü"À²-š üº}i“»S<X–Äghø í¦µïÊ)ák¹˜V-|T2g3''ùoúíSô 8þ*`¢×\~ú翵ÿþö?ÿÃv²\ðâ›&¤Y=k¤9N] IsdÀ0¤yÙît¹ÞÝëñMÒTžäíK"I~ß“¾í®æƒuyÌZ¾'üÂ_lVÏÄõPèC›¼xå1“Q>*B$ÿò^š#Dìï&õ]‰Ïp„™˜T­žÖ; ž¾Qš‰IÕªû 4>ººt…Ôë ¿›—íN÷IûÒ´v]10á0ö]ñ¸ψ£Ê„Ò{©Ë¥b«UJFKêªóm\P,]>VíO|"5uwfç Wl’@ªœl/eª£Oç)Ó>/Ãt»†uiøõR×b±ýášœNÏì 9•xâ ôÇZf¾+òv›¦1ªDöWI4 s¼ÀV3[3x¯îïš‹-&†!AŠÖ2‰.¾8™meªê<Â9‰qpä ¿êÙ›öô 7b7M|W.Û×}:èÌGÅØ>Ŷ§ª¿Ê|ÌÁ',.„†Ä¤V)©¾ÂPÞò™Hù2@Ô"Ô2Ià£g3ù˜$YN¢óóóÑ(_ ¤ö4ÏçÁºúïIãzeu©’aµ¥WµÀG£¼0è»rš‹DyA»žbÝT¢Ø§H³”Œ0xºú.,嫲¿ ÂpèÓ\ª3¨8E§ 1Íxþx=4æ’ñÍ7𩯹 *¾þß·ÓbÙø(q ‘ ‘ àþq@\Àç†8äÛï¾ÿ”ºóç?ý×â&…ìÆWŸFGnnn?~ QL‹@qˆ àÎÄE—rè´‰ºäŒc?ÞIÿ3›ÉŒµL];ü}W—Ù¢ Ýn£0TÛ®ö“Á`¶®ÛZÏrÇqœ~‡Ùv·Ç€ûƒ£]5Cý^&r™ÚÛNx]üf–\·üôkÚg{¼»[«Qˆò‚¥¬ûòèhÛiv{Ž·/c‡aB¯Råd4êÆÌ ž ®\ll$È{ýæÒÓ·¢8E®ö“Á,9ß [nwr.x Ó"ÛTØúL×Êêj¥cô$ïÏ-»v˜¥¡&.³^ëe+S•b¹í…ƒÑ„ŹÚDÙ´êÕJGîß`ró'¿>¥¶Qöl³Œâ½^™ýÛ8Õ¹® ¶s19‡±³8+¼y~^^ü\¯'ÙÅ)B™ZÌn\œÔ­·;9<¤5ËTØJú¢Öiýšr]?%™®òcsiË4ÔöY¯rƒ«ÐŒS†¿u¶=—(‰²iS[¥d$Gø½T€4‹¹ƒÎPÓCÃìÙ†iº;•ÕL5°\îév S¶›‰³¬0˜ÌÜ õ“ʳϧ”ÿ¦>V¡ a¶ÝɹàA‰Kÿ­¢MM.Ûn—ºn4Ûh¶j«\¸ŠA‡]-4ëul†“¥­yZWol9ë5-J‘<í¹íK"Ÿk4ݳ8·7%LsôIŠå·uºT,%£E)öÍáﴧȵðQÁ¬×ö·q5S=Ó¾Rëf/i²g£7±“oÏñÉhIý6€Ëqà^¥üÕ¢ÀGI.«Ê&*†mhœU%)žWlÞì¨gƒ+?°,aÉÜ’ôr—¾8ož“,Çq„ß|ý¶¬êƒñöz6x2«¾q6;Ü[DšKšy›¤öÆþ=—OƒNeu©Hl¿»ôíwß2?\Ü|ý÷ìÆWøáâ¸x¸i.obû(?]|KvÃ`êMq:äî[‘ŒgZô)è Z?ázcdÄL"777HVœ>·`-œóøñãOL+qMÇ‚¡b r¸Á­€|.ˆ ‸ÀøÁ‚.À¤ âÀm“&L‹“…A\À'&.Ú|ýfIö'Š!ì–Æå.Ô?V}¥uÙ ÿßñv&Mc2iªgƒANÁ© ˜ŠK·SY‹dªJ²ø£#žä¶ÆèU6ôgÑö\5qd­–‹“j&²vÛ²(U U®Õjµr*ЫTMâ—«ÕŽ×9"jÿuž Û¶×ÝF!å߯üw~Üy¶©mƒu™N޹C&ô*uÉë2[Þ-iÜá̶C\ß[,ÏËŽ ãMìô>:îltúír~’~2´+ÒZ™8hudý‘²¶[²| ?¦F¶Âx¬’ ^†aïBR®TÛZ>ÍüEó¯üÌwàgdÛk˜4Ý‚I“IH3‚IÄE¾`gUSkW6:ƒv9¿e«³+´4R¯º®@† Y[é±´[2|üö;+y¨ÍŽݾÌ_k0V=#„ž1S®V;9É£ùWdøÙö&M·gÒtµ_ºØH†UmÞ¤ âbÿÑÆNHo—cƀώ!çúAŸ ÛfxÂ/ü’T= !ÚäEØ3þ‹áÀÏÈúŠÀ¤éLšäe—M’-/Na™öcˆ‹[+»œ Ö±¥‘K,ì–l›á‘³ñwºö¥•×ÛpkŽýŒÜ\‘»^àø$Lšè²Ë_¼û2¹É›¸hí)pm£cj—£yöº´4rŒÝ’m3d¯fûÃuýtÚÀÉ`¬h¥FæMÎǦöWäÎõåÓ1išZ,ï>{]Væ8£˜4A\ÔuƒW)¿$U3½W-B¡Ñím'Ôg—£·+2~þXÞKVGÆËœvvK¶AOøE€TÏÞ´§ý˜”±*ÐPÿ \•$ê• O[?#kƒ'˜4Ý¢IÓÕ/ÏŸ~¦Æ3#˜4=ì[ÄxÛG¾­H¦”Œ–!„Ärµu­ÛŽ3˯֮(”´4Òyi?‘ºsuvWvKœ.–6rVâ<áb±Jòi›±¢C%IqG‹ÍîüŒ¬z “¦q›4)M„P{¦)ílÉ…IÓC9tÝÜ-ÊÚR±Ï¯‡&¼‘0i2&M·ÁÃõ-Ós¸s+¶L^ôNÔ2Lš,‚)˜4Mд¨³°ÄÎqâ~4VDˆ “ LšF•r¬¹`Lšœß"&ån|`Aq@\€¸ .ˆ @\Ä .€‰Çô·E?ýóßÀÐÿ*0-@\€¸ .€‡ÁÿãùæÞxrdIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/uniform_random_timer.png0000644000175000017500000001361412032647202026600 0ustar ebourgebourg‰PNG  IHDRt+=úsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ1G3ù¶ IDATxÚíOh"Ù¾ÇO½yË,µûú†´¸˜M¨ ø®³È?D†™ÈÐô"¸†`'„¹ÍsÌvt„žûÒ-r™dÂ`fh¤hÌ¿ÅÍ»B[dÓ ±iæ:‰ÙM–wWu§,Ëúg•–‰¦¿ŸU,«Î9¿sNýêwN™ß—ùã?¸ ‹.À¹à\p.ç˜ îi>KR=¿˜¬höpc–aú7ÄðdzgYBˆ(Fì”ã.ê(ˆþÕíeïhZâ¨Óܵ«k ÉnpD¸–p ‘‹$µ÷×Mo€Û´¿Y\YßoK¦£\\af7Ž6{Ž]¶D$‘[rªƒ&©]^_)4­KB¼;„êÞ6•ô#ÀøE.’TÏ-,,,äê’$µËk KKKKKK ke¨OPÇí,˧Âaå¸r¦|¹î¸ºŠ……Üñr°žS®Z+·%BH»¼¦9ÒošðÝW[§¶He‚µÉJ€V^ë~ueÒuÖöºcšù \]ṺÅHá¾C/‹„|8^lv;l³¸’Ìøvy]µYÀ²|rq]só´ö×ÕUB9/­/¦xåªfa%ŸË-Ä‹Í­•ŽOò,w÷\$©ž_)4ÕMÒ,šÌM–¤z~q¥Øì~§Ô+Aöºfš=TG£¼®á|Jñ/æ#à\»’åS)^ô¯–ªÕƒƒƒj&B!•Óºnê3ÌìÆa6"Š¢ÉT«GG›4bö M–#™ƒƒƒƒƒƒLDdÙfaOPWQ,65W±l³Ñ¬–ªÕÒª_Y–¯TzŽFëÒ¢Ùá0}ü&+ÕRus¶w™HÈ銲6™º*ÚZÅ¢_ÖßÞ¡Ls>‚ª£÷¯– ÇZ3R¸¯À°‘‹É½ˆÉ}.EGúi…ˆ¢?ñ˜£G¸Ç ¿(jÜ“è_ÝéÝ>ÅHöp;æe”uþˆM¢ÙÎUêý Å"£¢ÌL–¤v뜈¢?±Óm-·‘UÐß^M³½ýd«ºNã#ñeÊðó–já§)ðso¨©¹Á Ý€iŸ§g¤¡©Âí÷ÄW³Wûë+…äºoGë_ê¹e¥@X–ˆ6M¾l5zÍqnï¸?ˆX>æU=Óµe#î^ärß ,ËŸj6O®Zç#i€êé7ª* `ïòv6J…•¼:P¢ž%’©T«G±˜Öœq²×%¿ì§+&вPÀ–sa/†+ɼú]†¼Í ¹5Ÿf6%êMºªw±Š¾ ØØIHEÙ²UV.òÛ#áÔþsôæh~Ûvëöº;X ²,â6²‘J’WÇÀ„–Uï¸÷8ᯚ|jI®Çý*úÜ3ÞØv¶NWò¾£ÍY9jk6‹ñp‘Ñïˆb“哋䇃?÷7'%<ÏvÍ!b4­T*cc¯«ƒ¥,0°»,’”¥yÓ!úWwµÛ.ÜÛ‡Ý-ÏžÝÄó/³›ÕL„åS kå+âYN%ü¢(Û»½JœEß°Ps"™ÃиÙëÖ`ÐÎ à†"€sÀ¹à\Îç€s8ÀØ¡ýùÿëׯÑ)€xòäÉõõµ©s¡g ›ŽØÝÝí¹PÔîçVøñ§Ÿ1ZL ùú«þË¢ñ!ýìŒãÏõõõÔÔ”þ86t#YgÀ¹Fœ à UºÊÕ¥Þ#¹úMËžÖÒ3éšéGó“kiŽãf¬N¦I3\‡™™øî…»6ºÓ°NóhÉnU€¬6t+É|h’Ä"‚[gAù6{J¶Ï„à¨*Šm [AåŽÞÚý´ôäÁX˜¶%·éxþl+hÐ3ŒÇ²È@o°Wtii‰F7]MÏzŽ_+·;âž]IPEíTVÿìÕuü´¿ØÏÌp× jé™ô?H-=óôö—§ÝgµüHŸé9"_>#_’®ÕÒôiŸ®u/éÿ¸ÎÇÞ¾ÿþÝi¦IºvÊ_¨ªÓFÚ¦Ö6ƒàÈNi»q«îB†w.ÑL&¢Wh¥vE>µHËòÉÓ=Þ,Æ3$µ“†" *äW Àjf5@*ÉüyäËO·HúìLøõ[ò¼¤Ìx†·Î^~)~ù²ó讥Ÿ¾{öJ„WÏÞ=íÞòågg[ÿE?>%Û‚ üúí»â÷ßÇçÏ΄_¿U_`ÈÅnñݳxÖCÛ#½M2hçÅn¼øð• ‚ Ì?-w}€ISj›i¿Y–v±»õ~õL„³—İ»"Âm”Vý,ŸRo¾tÑ ÊšaŠvßö²‡žÓh]v„;™öq¾iB|¸Í££Aåob/ébäÁG,ÚÇåØ*=ñÉj¬|\Ó\.óñ³W[AZÚÛÿŸNwþ6¹?×;›[$Ý)&¸¥Øs¡¾M>ûôAgÅò2Ö§©ŽÚÖëÒ.þþš<üS'(3í.†Ûs!„x–S«'T™0Þ])šä½‚„¶œU,aYêq¼ãÒ>z`ø·ÕžËÅn¼Ôs*]‘±„‘|9ozùïïß>š0¢¶ YÚïïß¾ýå î¯ôiaeÃ9ªLØZL2¥™"IíýL¡A‰R¼µ’¬8¨ë¾/@ÄF${W…`ÔË¢Î&ËÆN"ÐhtTmŠ"ø©à\€eùÒ¾,hjcC·'4'¿½‹Í;œ÷ÁùX¹¸{A÷GÊŽ/ïï^Šò>íïïß~,/(.~{ׯIÇÝÍReÏe¤MµkѧŸ½;Æž-¸çBdeÂh××d£,Ë'Kç²|r1oóu7ö"›Å¸ò¨¿oØzõ°(¿X™ùüýªógjpëå£çŸs÷ùóG/]$?xRZ}ÿy|÷‚·^>úëÇq3[ä³XùéLú6Œ:žWö\FÜTÛÍÏôþL€AЊ¢½~ýZ“”áVøñ§Ÿñ‹L[Ïÿ–~öÍîî®Æuàçÿ€Û[€SÆ7ŸËõõ5RFçâ2ùú«©©)l»ç2’ÈÃÀä‚=œ ÎçîsïÃ1ÕPý€ÈçÀ²Èâ;Iªç“<Í~$ú;Û1/ƒ. ¹Híòúb²B¢™jõàààð0E2ù—éÃ)¾·ä\„½B“e£Y9kÃxc/ºÉnë9Y`!W×Þçæƒ‰¨/,—×–––èÉJ`¥Î)CK“Û¶{#¾÷`Œœ M¦-Š‘gðm»¼–âÙH¦ZÍDX>µVnw‹ë'@† `Yþ„¤ª¥Õiö†™Ý8ÌFDQåÔ™’TϯhkÐÔ߀QF.æ+‘ví¤!û.ÅÆIMqÖvÎÑ‹¨ /{dÕÊ©Y0¢–[¢B(ð2L€séäÐU¡r®5‹åSáß ° M÷ëE¶YŒ‡ÃÆŠ(€[t. 3Š–åO ”Ëîû½¾ûn6é¾/@D12ØÒ†ñÆ^e""!D-Ø—È…{œð‹b%¹®ì³Ös¹º$)IüOB„SžesA¯{‹½H@_ODÖz¿‘ˆ" ø¼xÀ-qÏ"Ø>ôå“Åx¸H!$’©n2 ¡Iü[ ©T˜'DŒd^Ä\–6“Ë/Æ—Š„nÖræžh9•8Y)ãá‚ùáàÏÿ·ôüÃH¤–½Œ€1àVÓìÿ£ÿ[Àè@öÀ ç ÷ Ãô `H´{.ؘ ŒzÏåžÅw00ØsÀ¹à\p.ç€sÀ¹œ `°¥¸¨ÖQ#v²TH”f±u·q´^}áúö(itå´1êJ#™êæìMgÏÞÆ(r¡™hªÕ Mˆ=°•fT«™(©$»y­F])Í.~3™î4ò)È >¸eQk]ý ½*"ôÆ0 Yê ¤¼UŽ/®—Îíù¾l”e›…=¡S‚¶.ýíª®W’õM:¯ç¨x‰i•4I¸‘™ÄRwE-bÖTu™óóÉïzåS4¾ÆÐR¾ ²ð v.Ñõñäiˆ>fõ‚!Ý€¨7òIže#™êajÎn ¸PDI3qm Ö©W žà\€e›4øUë¼OîNá”gY ÑðAm¦µîÊ IU3µ´ÐQIž†Ž³?ôʧh¢»ú*`¬÷\Þüó_êŸüçô],Ä—=„ø¦ iTNë§l…lpD'Ò8oµ%®{÷z|Ó„4:OòÖ9E¿ï~ÏqGë}]ó„–ï Îù Ê©°9;{Ù"s=fn4æ !¢ugƒ#Dè5“ê®DC!$+•“Z{yÙÓÓK¡ˆX©È½$˜5U)s0KY–O®ûv¶—•NÖŒ)î¢÷÷ìŸêJ€“ ó¤#⥢±+…&Ë–%"=‹J—Lû<Î+PéhêÒfP¯'8(4Î[mé~ëÜ´vM¡[pë®xœt‹gÈ^ef7vç+…f³•]çQ (®{7Uû}_€ˆ ÍÙÞÏ$(Å[+ÉÊ0ÅÓuÊ´ÏË0’dX—úoP/U(Z—Wäd:ôbÀ¥Ä}_ 7Ö2Ó]‘÷iê½Jd}•X=·âÙJ2Â{%0¹{.}1 1RÔ’ItóÅÎ:(Ÿ¬(ëâ$ÆÁ‘'8 •Ó½ÖtˆÒLÝ•óÖU´§£b,ŸÒ×RE_å>¦9¸ÃÎ…PÁˆØ,Æ•W·<|r±t Ê *™Ä§Â§¡lD-—ᥥ¥p8U $vTÏg}]½÷¤q½²w©A}K·j>§x½îÊIf1œâÕû)ÖM%ù”iãaý úË•waápª"ë« l·€6Í¥²‚ú—èt#¦Ímκ\2~ùîúž‹Þcàçÿ=1M–·¹¹&8œ Îðs]ÀðüøÓÏwÉœ¿|ýœ ãBúÙ7wÃëëë©©©áÅW±,Œ$ ƒsŒ8Àm8MFHu2ÊÁÐdit}#û–?|3:%¬©÷JõÜ™%GÑ'Nmùßùdr4ã¢þwJë¿oë°hƒ$Õsµíb7>3“®iŽÖÒÇq§ýÂì¸Ós&1r‘³RW3‘›ÊJ=·’¯[°’9¯œSn7ç¶Tυé÷Oÿ;ëvìØ5æùÆföqâ<;y¦ÖÒ33[䳘þpñᯂ ¿>,ªÙq;×ÞÉe‘anmË4Ô¦9·-ÒY×ë9úÕZ¹-§ÐîÌ&ÄMåëøýÝĽR»\:ø;9"ÌŠUGíòÚÂZùR|cð$7·½`»ßäT8‘Ìöò¥¾ý8<ííµÓfÔ`˜ZÜløº3gÀÔèÆsRÓ†ËåíLD~¦Ú‹³‚[gg¥'iýÃñ»gé'!äÁ“ô³wÇ5ëãv®½CÎåªuNÍJm–[›˜$ë6˹mÎ:y¢å7‹ñÅ Ií$¤QÈì·û†N7”¯{:*¹š®j'dnnÚ²ØåílD+Éõr[’깕VüèEL_ò0¶;º–Ž‹á?‚›%]w«ÆžÎ(µ¸áðµËkÉJ`µÔ=³jtsÒ° \(ʲ¼~æ8¡v\~ôуΧ=*SavÜεw¹дLáxÑ ×IGdC½<‰/{äã•S**¢É¹­µ“†(FBœì'5eRÊ•<¾iú÷ö²‡^Û ·¼ƒ)«ÎbMÎ[¦ó^Õ6OpÎ/Š•SrÙ"sA…kœÔÚR»vBæ‚>ëbfvcGÎü´Xò혤àÆvû×vÆ%b˜dB?Žî¶ÓÊ9®w}“áðÑ™£Î%Øw.Ùœ“†mŸUç­+ÂA4j{.u, DápÊF&J³œÛÆé¬]C›¯;Åw²XkÞOp.@§rÛ"_7!\(JØfq/¿W˜Ž/{úKã¥BHõ’›@×ÿ·½Á±±“ð‹"Û,Æ{·9tço¹Ó¹d<'-Úàòä„sQßEÝt­JŽëÕRÆ"e?hvXcw0ª<µrks•HC[hzZÒh]^ÕN¦CO*9)'Ïkf]Ôyê’F!s[ÎÎúÿÖý‹7öâè( !µ¶áðé[îÚ\2jÃð“38{÷ÛEçÓÅoïbóA«ãv®½C{.žåÔª_ìÜ@Ìrn÷Kg=èëÎ×í Î ÆÅ ù•VüP^ÿ¯ òêö'MÙm3‡¹I9^ß´<.c…:µ¸áðÉ®_•´Üé\꛾'½yçYå!ÂÀ/΃óžoí^BÈÅîÖóGÿ`vÜεwǹ0Œw9eÙf!³E8ã×Öw]ÎmëtÖN×ê·’¯›¡O:]@¤/ö¾Ï­-œ†7gÆۦ߮²÷É=–7nJ¾Ä‘£| UÆÃ»˜¥7>oìE6Ú(ÆÃÊA§sÉpN¶A8­ØÑ¨Sö_Ó33·þ ûË:ÇuíÜ:[}ÿÇqܯ?{µ¥øããµ´ú³Ùµã Ò\šÏõ‘åëC3IbgÏ~‡i—×V $±³óZÅÔ?þôóùÇÅ­çK?ûÆÑ?."Í¥£§è‡’¯›ñƶ³Ó…=èÕS{…éìaÏ AÊ«ÅNìC1vvóhƒŽžs`¹¾¾¾c)£†uÍØsÀ¦¦¦î˜¯´²¡Ç@äÀ-ÜØÐÀ¹à\p.à>ØÐÀèÁ¹0* C„e`£08œ àŽ9u"{;ù÷o[Q22꫞ҤN¢|9É~ïGw͇‘›:D¨4ÎEj—ד•N>ôÃÃɸ&]4Ì\ì{íÍ+É}H”ªÕjµ”t+UòãeªÕ££MŽêö>÷µ:DÖ&8Ö!šLÍ Ép.Â^¡É²Ñ¬œØa¼±Ý©ãL)¦Wæø&¿˜äYVIþf_I’êšk­§ÔÍ(É}_ö2L7qßž nm*žŸO~§ú(?ómHöôµ:D®ëM¨fÐ8*ì`¦>áH)F¯ó ûÉÆa6"Š¢Én8’Cb˜Y͵} ½’‘A_u*§´6S­gP}”’=}­†‘Û:D“ª4ÙºN•bºÓ×NÖXrHìÅF¨d4Ì`Øì±èA‡è.8§J1VŠ0º Öž’snBÉhÀ½Û’=NFä¶78 Cçb5?Ž•bLaTÏ^7ä ·ŽF®ddÐW´ÒhÈ΃ѶdÐ!r2ël8©šA“¹P*oÜÙxËÕ%i`Õ¡Ey)4ät×Z.þoDÉHî«Ò> õ÷KQô';HñÝW²ÇÂjèB‡hB5ƒ&ùÐìðQ"kÄ,--†ä­DGJ1†Š0 ã]NÉ< 9Á‰’æZýi7¯d$÷U£‡Ãáx¡µ™8Þ¾dµÕÐ!r_‡h25ƒÆ"nE]wË$(A‡Èèè ùž %#èYSÐ!º1rÁöM;9JFPÛAÏÀ¹0¾@‡hXWŽ= ùuˆœÝ"ÆånüÀ†.Îç€s8œ Îà\p.8€sŒ=¦ÿ[ôæŸÿBïÆø¿¢Ë"œ Îà\p.€ƒ‚—`l{ÉIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/sync_timer.png0000644000175000017500000001170712032647202024536 0ustar ebourgebourg‰PNG  IHDRŸ}ò{ùþsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ-7^`ýGIDATxÚíÁk"Ù¾ÇOýdñÚi:‘Ç,n(¾ë]¤ÒÒÌD†&òäÁ0HZÁ0ð™íXWè¹(¤[ä2ÉBšÁÌÐH4¦7a”lf!æ‘fð&f7ùªîâ”e©UZš¤côûY™ã9§Î9•úú;§ªÎ—ùã?Ì,†u¨@Ýê¦x¤›*×R¾¸H?KŸ<Š:æŽZ ˵ôZ¬Hüwz”‰z§Í£•‹¬þo yŽÔ?ýø0›±[»V¥²bl-]“e àÁô=ï¦F¼PÚv2”÷÷»M!î<Õ ŽÁuЉÛÄ»ãCWô$^¨l;1>ÜãÌtèu+dš,Kø ¤Í˜ËV£!öÌî'Ÿ5ngf:*$QÁ7?aãaÆí NϬÌL`nb7€ºÔ  nuÌ5ýÏ»bP‘ëëkCu£90L€‡E>Ÿ»Q´úw/üðãO8[“|÷õW£g¦ÓCbçœ3ÀH®¯¯ÓqWð°1šêAݳ Ô 0OêF}|{Œ™åZj"³á›QM¬¬pÇqÜÊJ¢zÓªnXƒùÚnr¬n—U:}¿Ý.0ã »«PŒ¥Ý÷j—¾"oOë®)7×î©kÒoGÖ|º«hÙñ³Ó]×íT b7íw¬‹(~æ}a·ïh¢Ç“ªÕR4=\hËíBØãñh†Nëõúi7üÑɦ&ÒlÕÄ«³÷õzýýÎÙ«®èì†ZuÊÞ—¤WÊV»$qZ¯×ä°0á‰+¼zEöêõú/ßže¿ÿ>xüìô´þË·j£/ò»J÷ß’ÁŽœö„„Ì_ìF¸h.dgŸv®‹‘;²j¾·n¡y­ËŽ):!K6ζD¨á'·]©T*Û†“ßÅÜi‚쮨ç îœeU¹«æ^/‡þú„Þæ6 !‹O–;_•f0›&±S*D³ô©nÁ^.òÁìÓ÷:¢1Xöâ÷³å'‹¹žðÄ}¾C¶ødù·ÿ_Jt>wñÏCòô3:dÏt:À¼«!–õxÈ.c‘ƒ+Íä´]{<Wó1×ñB¥’g‚ÅÜéièã *p‹¡åÃ^t쿦b«‰Cf…ã_»ù}ø¬â·¿Ag®‘þÍÔm†±®ï%ý¤‘rçµ³!Ó ŽPNÓDî±Í¡ø–Ëåa!Û ®gß>þKù¸ü:WUf¥A£ ÖgO?ÿdch¶ÝŸ=ý<°§L˜ë˜‡¨›‘À9£û[ŽF£¡$\¶„%›e¼#1ŒÕµê`Y1׉GÞUÐÄFÇ…Ï•™qwÎŽ«ÕÜëåq°´ød¹g…δˆèÄ÷"ŸÕ™ÚÞ8lë›+^ä³wX-þåùÙ1n€ùÆÔ{¦Œ5°—l­Å:b—ô‹q1¶vîp¶)ÆÖÈßÊ6S5ðFhyâÙ 7K$‰Y*±²ò3ËB$éË·§ª€,þåùÙ‹Wdçýî0 Ù}ÿ{p…‹°’ôå[ÓÁ‹k÷íñÊ îï´”)q;.Ÿæ~&¤ÓÎÑÇrí¾=^YáXö?¿ý6@>Þ‰¼mäž%V¸k¾UÌýžX‡‡‡}{$Ý ?üøÓ°·è{ \䃹'9(7`÷õ?;ßäóùÑû»M=ô±Ý{.ª‰•WÚ˜ÿÜÛÌtÊxèì«o#æRÝ®¯¯±‡%`ÖÔí»¯¿ZXXÀ–€ÙŒÝpzƒýÝP7€ºÔ nŸGóÓU]O0b7€ºÀ4ÏLe¹–^‹‰Ê‘ö­ý½€•Ávì&· ‘µX‘øéf“GGq"¤?¹ã߯Ø!u£Ôßeš,ëO*Ž c ¼éî¦[K)¶XžT­_hŒm±&³ÎÒ,Â^¯—fVCK–ckŠòÒÚ”¶yR¿J¿Bþ€ºõÄD'E"I¼›Óù¶]ÇE–J%gÅx¸ÐîV7Ê‹ÜÀ:‹eÅ$^Ê…¤‘yWggô(ÉK’$ñÉ£¨“ad¹–ÞÌ4:ñæx››æ$v3ž ¶«Šðqn^’ªªr ·Å2“gÐ:K[ypÝ¢xqOŒÂ1­ +õ'„Ìu3õUÐ`ÖÝjœfmEHÇÂ.Il3ôùô ó¬n ãtû ËŠ':–ÊmŽÞ‡íñm6éÖY„0ÖÀ›JEà%BˆÖIuSà^nÙ%©‹¨‹ýµTª&˪µÕIú‰È²ŽU—õöæ}ƒÖY#¥:?÷4>šä%‰8lVÜT`^y4$Ú;²¥×bÙ /K!„JÛ CTk«¸O$Dâ…7ëí¶©Ï:+y匥p=¾õa3“ ú2ÿ·òŸÿÏû¿Êzı_·2uœcæ“)õĺ ðž)3Ì 'ÞÄÌ&P7ÀlòH7Àø:ýënXœ<\†yÑÉ 0`Ý u¨@ÝêP7Ô  n0“êF \:¶,]«—»–W€‰ék„Ü´ ‘ÍLƒø;.-íƒÈ;Û^®€‡»Ùj­üÔPk˜+ ,ë~ÖúåïË£ '=áp±`\unH:V~Ô aˆ+ aS¨¡ŸÀ³l3ó®>,OÇôOÑÜtLdY^(ÅWqFýÇûRž?>².Åʯë èws„7/‹ªíõu˨âÁu‹’¿xR‹rœaÛ! %ÏUëœH’Ýö˜P3À†q/3‰îŽâ†äÖþ9X’ZÁ‰_Ï÷@ßÐr'ý¢ÇZ²YFt0“mIùhH™>E£6€¢(žÔ£NçðÃ=¶94Aßð6\±›óÌxw:6€#|B\©>Rƒ>ºXÖ[î¼u¥ä'K6“.‚ZëU½:P73Rb ì%ý¤÷ù|Ô+ÞkàÀKbÜç‹‹ZW@îå–ƒ4²A_ζÅKR_©š/.ªëwf57šä%IŒûNÜÉÁ:ó‰þónŸØ÷O»„w“Gç”ÇñüÉʶ§€9ÁH¯Í@ߨ8*&ÍŽ­ýqâ>À¬2êÆ0ÎíJeûžŠf¬Á nu¨@ÝÀ0ñÃ?a¦“ï¾þ êÀHì|ƒA˜6®¯¯F¾n€™)`6cj¨`6ºæXݨqAª&÷¦ÜÔ¾àX^ɵTǾ«ç(²Ü.„û½n«=·Þ/£ ûÒ§ÜBìSº©ÝÉé¨&8Žã8.Q…nÌ\ì6r[·)¼œÒ±¢$ñB©DÝTi;ˆlfŽP®T.—ŽâDH×d™¾¯ªÍ9í×Ûý‰Ô¸—Û…ÈZ¬HüB©gÌL·«‰•ìÓ_êõzý—§Ùܬ©ËбÈAÛ8|Ðÿ܉žÂ…¶Ü.„=žÁßíÖAdÀæJ‰­tí––> .uã–ã>_o‘žÍÊuœ½Ìµß¨ïF‹×ëMÕdmÃbkéNïúû«-»ÉO CíB¸+¥Œ48°º»?'zþg}|b75]´ÿfJ'ÕSYKyÂ…KéW#ᮟí$6 !dq#±sv y›)uó Ï6³›éúx‚xâ.åBvIjfƒk‰ïo9H##tUR× «žÞÌ4!!ä ŘæˆZÛ-í-¸Æ=Jò’4»©ÛùÆÖ"ÃçGfÚ?–ËeZI1–®Nm˜ºŸnoâõ%˵ôf¦Ñ‰•ÔîXŽf(¨vg°ñ#ýϦÈM­“§³}t³uI!W­sº}´Qäv\X~²ØùkñÉrò6[±ᢹãÚ¸á(»ìZlKôóÞºÅb["ЉŒš'¸n!œ›—$R<¡?È'EBÈ’³-BÎ[ª”ènÛÛ±àâÝ¡õ4>T‡«s»"ðË6³AßI–™ö›…4P¢ÁþÊr»Ïëk’³Ûn›XÝ8Ý ñc¾á8OZÛà¿™<ת]’Š'uBÈe‹¬º,ŸliLŸºbY‡ìR19¸ºû–±bœnn>ZJô-¸†ãÜ®”J¹]2%O¸PÕ.„=žáµëõ×ÐëËdÌÝß²KÛÌ}>íÒðRð¶èÊÝ$§rB,®U•øvë|Âq³£n c]ßKúI##L²4Å ë±ÍAèŒrpr¤Çc›C·SÝá%éî.!Yn™q„r‚±çøý5w²¬7•ŠÀK¤{GÈÔô ÞhðµÎ>£˜ðTŽ—ßa{Üñ6"ÖåUõÃ’{蘻žÎ~¿èüuñûYà™ â1cê¦þ¶;†æרæÊ ýVXª¥VÎ\ˆhdÁ5,v”`w"ƒAs}× Áè5|Þºêi¿¶¿f¼¾ÔøÓদ“‡Ê[‘¸GZq¸vOC¿à8Žûâðùû]ˆÛC`*<±˜tâ#7µ‘&j?üøÞ¢ŸBv_ÿ#±ó*PFz…7±ÀÜ*cû@È4YÖÚl‚ÀCžzÜÀa¬7•êÀ|r}}=,¡nÌß}ýÕ–ޠnÌfì†Ax à®`Îb·|>Ñ<\ôŸw[XXÀЃkL怇ÖÝP7€ºÔ  n`Ž ¹þ-^2óIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/poisson_random_timer.png0000644000175000017500000001175312032647202026615 0ustar ebourgebourg‰PNG  IHDRU¶^uî„PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<CJ”HI|‰Ô˯?†óË´ƒX‰]Û ÙЃTµvÔèhwó§‚æGS¸ýU @»¨[ EÛý±ØéÃÙq³¢üXIµשÜ4M/°h l—TDŠŸ"Å79{ﺿ›l|6š õÖ[B–üÈv²‡ 8K~SßXòn¤R~fyŒ}ÐD6+£Sõ¡«|CѱΙÕ+áv.!)o¾3B>lŒŸ]3Høê§Î_ŒKE8ô1øê¹3ô°ù#&v!AÄ´™ P=^˜6±Ár§<è½2kHœÍÈ×±”{¬N¼²Fï¡ö [/ÀÁª[5¯y¤M3yZ¾ùr *XiÖü昔ïëa€‘Hy¨&ºzäi"îÊM r«rôö˜f™¦Äiš¢U#1  cšÁ&oGKùIx…pçýÔP?­O?³3 „4d¾; 0Ñ¡†ö&²3×Hø'@WÄ™O®Ž®Óö.½LŸûQ'ß+f`Ì Vºw’³t¯‘ï.swDY¹ë\Ê·q)ÔjÃâÉúi­ ¶ñ$Q.Ûxè/‰ŸŒNÕéõÌ廚2¾ô½BÓCÔÌúm³ê¦ÓÒ'Á–W@Ž?oN Ϫ¯ï¤õ©øXŒÔÝ»•ºòy?hø#·%«û>}–]–¬kߥü2jzqªPmÍëRŽüwòº§‚@>×-ÕÖW!6nñÔ[ÏŠ§6mR‚åjæšaÒiåvZËùJO_5)á%ª[ù’§ï2Üx³•Ú¸»d¬²¾è§rêUU× é¶ €˜$‡'5G@?³Nhuåü×>9ü ý£é$«m…P{1½Ñ~7Ç÷W•ÝS¤¿ª?Tµ®>æ½f£Ê GŽY!ªˆ*¢Š¨"ªHˆ*¢zÀ¨äÝ*†hìˆ<'dßX=ˆÌ¨§Ò8À‰íJ!ˆådˆUBuû´Š0JéÄÇ=ØZí:…°€=+DI®µ²À¼f»îjãtc/Ú·Ud³U(Ì—ûÖ²÷4ªÄènîÂ.þ½P Bv!»½Þ-Àp”nsÞE—7KÔç^‹,-&àNÐí ±$EF£ÆÇ½â÷¤Æa|¼R 1߆IJ"ãÒôBκÑUG”Î%ùßÕ¹'‰Úf/Á\ÇKÇß=×÷½ÏŸ•õž5JÜ“þweJðú¿,ìUº˜^’³^PÕ_xD¶·R¡äé! SÀ›­ÖtÎ2«g—}Ê%éö –Ø^αK³Û+˜»Ü©êÕÖ»a²]»0eâ\yÞFØœY¸qØÍ¯Š‚c/ü©l&wúèŽï}»Z†ª¢íÙ†áÃaiº žmí€'À¶ÉÓi/<¾;¨r4^åýUÝ$Ù¼—ãÒd ü.cñɶVå:4^µºï;u-]a©§ÉoüËePúqÏ´A^ýDí‘ZyC@••pJ,©pTÑnlr½K%¾+1ÏöGq̪ŒÌ«=%ðá+ŽÔéëvéÎì>ª†¹Zè*"WN1´«ØZ!ªHˆê^k­*ÐAî ?ZDIή¦‚¶U¯¬¢|:Ð n®«™å†ÃÿqÉ_Mù3ƒˆá¨†GµŠ7œ—;`±Ä=îÈúµ%~ÛY[º–&àv…ò$eÝ·˜pQ׌´×íòe6Ÿ(8À¨&iB‘‹&C?•JvÙ.&ߦ»YÃèÅœyÁKs_ŒK±®£1|ƒ‡z®øË vÕ*¬¹ÿ:h3òSpÁV^à~,¬ƒ64ŒP[ñŽøÚž±uЧֺ:)LN¿ Ëù3×4€Ì üÏFÒOžâ‚I(ÄÈFfè¼ë&bYAW› Mƒï0ó T¡Dù$vË“dlÀXVÐUÃ{16aY-$b4È‚,©a-Cò4At×{JÑNÀÆÖJ^W{‚‹ì¬ÚæÌ\¥<†Ùð·¦ ‘:ޝvvŽùØ©•³@ÿØÌ5Ž®ÈŒ®àÌ5ŽÔ¹]íÙñšK´­PÅ—µ@g£Ñ®"ªˆ*¢Š¨"ªHˆ*¢zàÞXâ‡I·øZ‡EøX8˜v4±\˜ƒÕ,o‚šN€[öÏ ªÎj®Ï™÷Ÿå¢÷WÎÑó3[‰9C²9†Hô.&ÀbYñt-Yø½ÏíêM@®w)Z ƒ°È'”éu¹–nz,iÈX–„,-@§¾}^€ Û¡3âënÏ`‹î ÷õrà‹(禗œ'·_Q}d¥óÑ-]°Öo2ö‡àeíÑé „S†t1W3¤D>!ÿܱîáë-$-Iã_sÄpgÑv@¨_oº¸Fø÷‡z!tÉhî§·G;Lª/ȹ>x¨'åß/à6Ý\-øòs#µ’ÀÔ“Š¬CbÐ<[,Ä’ŸPw:8¬ bm…™¯;皈&QÙ?AX  ÓB‚üÓ°°¦#÷¥ð ‡‚œ³ ìo×’W+ÚÕ«’#r]V'—Ÿ…Óäá†[?œ6Øs#7JPUˆ|BÑóÓÎØœŽÌ3í]ß^M¬™ø§â5^Ðò¯¿›…SüS"‹“óÈa;üך²êìmº½Ek%k'žÐ‡øs`¦(8l¥S×P‰|BAà>s£˜˜[+øõ`YîŒy~N ýëˆüy®³óëþ£û½¿JØ´ÅK”*M?«Ð ‰â"66z‘ÏÝ¥,5•30@ n9ÍB4A¿‘· ·.æ,>ž3Á9uˆr¼§”íð…ýÕ³’¡¶9?3e†vÇ ]‹­»¿j*ôGÊù&‘Omñ¤‡~ƒå‹çF'7:èg#ù‡”­8ßó³!ÿŒð†Ž‰ÕÎây:¦VòSú:FUò½€Û»eÈXvy¨r/Ö²]²n_­ZW«¥E \‰&˜øÆº ´yCs GWUDQEBT÷i`·iWâ‘Õ2Ú…HO'>>`oê;¢Š­¢ŠTukUq<©„!Í“ªTÈÂÍ[¶š—?W[²¼Õ^ü#ÙÛG=+vUW2ç†*¨)¬–ÎO·ƒnnUAŽŒ³á¯¼¦- *ñ²ý3ñ¥{fb+ääJc‘ó±Ç÷^K¶ã™kÆ­ÕÕf4$Ñ]°Ù»ܼZÓ1+ v;¶]¬i½6ÕLêëw‚{çã«jumjVÏÑÇêdԺ΢“תõ¼^tu_ôW‘UDQEÚß­Õ®¾´íJ¯Q-£Ú»l ¨…¾#ªØZ!ªØ(¡´? -ùõü©`ù@’Ø~ë8$g6߬o‚õ Û¨ýê›Ýrr ꩉËFï¬t\꫱ëßå¨f®ÿª;ùÊ”|æÞ ×sFLÙ*N@æú/{˜/ý¸Kµ2öTñ¿ ‡•¬œÖ¯­ËÆ…?}¡TÙOr×΄tŒš·ÿš›nŸð.® .Ü*þß{ÝïMp^î›.1òÅ–q z¥â%[Ô5§þo N³7½.×Jò!·;pG”³Š.ž%î;»ÜiBQ·¼Ë†ð¥ø<©«—sÙps.ë½$ûï]3Ÿò¹(¯yøpé$˜ý9ÛÕ”à4ùk»¾Ÿú?$MÖ0u‘èôq«ø_Ö=š RÜŒ¶ëÇJ4gó8I öáÛ£%¸R×w_öC´Ïôþ¥s¢œ¤¸ø5i:/É[_æUÚ•áëçúß7÷EI]MÔ-#Ô¯kï£HfY¿½ƒéä‘ÿÊÑNÂ[€ØgiW­Â”é¨ïALÇ}–= XÖ «ª{\Œ€V¥tvuó8yš™)¹‰,` šµßTâb†ù;pÁõ™ .\}âôKñm šNZ¸Ô€¹ÿ3êBçÓràÑ“œ‹ÔeCjXíÏQWÅàö,(Fà5àÜ%F9LJ%~~êÖ+)ç@¡Û`ââœâœÉ>›Ú‘y–æâP­@ï;Rç¿§%n@!2Fa¦j¤à¤Áˆu(%¡>i¸qеòW‘¥.,MVR·šj:>|né‘÷ºô:íöñ稫M)¸OÀ/ÄTÍ‘ùoZ\3ú9>€L{´iœ€fHªá§%“Ñ×ÙÇ1.ÀSɤ_~[]=¡>*¾ð¤•å?lpg¸x_–wÙxµ?q‰ªÊ'ŸeÕ0ÍÓàö:ˆG‹øN5ü©0]ÅÏ@ºä{íº~Ø2N€Þ~–ÿÒdÁ£‚‡ßmH‘‚œíN, õQÃÛ4È~+•A]6.Ä¡0‹þx›6 ¾r‘ÿ SÃçlW»ŸÂ¬´s~Å\¡ŠÆ/s¯Ìïù;L|Œ„uý[Ç hìöëiU¤N>€~nU1eå4AR³Z õ1ð_Š×ÏùˆŒ?͆هE—{9zm¦î¾ ŽK]6¶óùøPmâlí¦qdòZ3—®ÂSY—ç@¤ÍãÈÜcS¨6¨&uÏõÕ¼¶¨VfŸ¸lÄQëÚ»l@TŸƒËÆÔU_­KBTUDQEBTUD QETU¤Ý¸€ì>ªW´ˆ*¢Š„¨"ªˆ*¢Š¨"ªHˆ*¢Š¨"!ªˆ*¢Š„¨~–ôÿ_†Ô¡¼ÔIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/timers/constant_throughput_timer.png0000644000175000017500000001775412032647202027714 0ustar ebourgebourg‰PNG  IHDR|’P^€ÚsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ7Ê<™‡lIDATxÚíMh#Y–ïOÜÉY¼e.%gë%H£EmŒÔŒ_û58e‰"E•E“˜Áˆ¦G(å‡Mw‚FÞŽÕ‚ª ìzCÁC˜“SÈ]Ôh#Yé™nuR7½ʇ‹j½´¼Ë\ö¢»n¼EH¡âC–rúÿ#™¡çžsndüãܸÒÞ¼yC¸~R@tˆ.ÆçžÕõŒ?)õ$™ÏG÷wW‚ðĬ(õìJBb朋éãM/ÉÙ•D‰BéãMßÌD­zþ½º½©€­t•z&è—ˆX3¿¾’­+ÊõÝÍ3~¿ßŸ™JÓµv§@êàæ*]¥]ÜH”ˆ±ÒV©gVïIÌ‚àÛªV·lkG(ÎÄ©#êµ`WéÊÏsMƸ˜ªî…õ“ÉêÍV½·ªÅP ú’H_$)íb\k/¶u"VÏtŽk^ò—ê¤%cR2쳩·Ó=nß‘6j´6añg‹Ñ‡÷ìócSYªætݩ֣ꕖg¿?^läƒÍ@L\+Û»Ô.ÆNF—©[]`~ÿ‡·Ut¥Ý:'Îçc½6 ´¡{«Ç˜”XÙÐß.‰ˆäl0’ojmšùõ¬¬)îÀĵýí;»žkêûÚ8Ôë·MGScX­Ã }ƒ‘òcòÊz¾Ùë.ŒhÿÝ«ZvEË3cÍ|$˜©¿Ûâý¼°ÑçRn=›Éø#ùfïHª3¸J»¸¡w)©é®iÎà–Vº­¹]k ê–•J¥R©¤DÎX3÷¼wÇgLJ&%>-”Ë•J¥œ‰ˆJµº¢(J½V"ÎÅT¹\éR­nýýpó8-r®~¤•ÔDDžXÇN!:Ï95ZÃ:’ÉkimÜìXÇ¢5Èç›úކæg˜Ä'$Æô)J‰|¯J¥Ð€…R¡ÿyÅ AðM+uŸ›†'Zè %cR©ÔwD\5‡óÑÂ(9ÇÿaÀíÝáuX­ÔW {Çæ9×߉¨ovÚ»$rM6æ\êL]ö×.V°¥Ùq¸Ü†ÖM¡]ðùè~÷¥æˆù±Now¦a¿÷–Ô»™6éÔÖ+uqÏ‚êƒîyåæá\L¡4é¿ÆÄȪCÝyëÒ<çp‹XH5çò5Î[—äsÚœ¥+….7QcàöºéµQçêî>m¬ç›ŒIÉ€4(Fú¦£#>RGÓ” Û.8Ó&ߤ²Ë-Ãg& |<fãaIÉ ¤÷^N,r·MtÁérk6s©ÃE»ûšN•/[çãô'Îð^5ÜûƧ”Øpíï®:¬WL•·|Bw­ì­`Œü\¤þ‡‰¾Ó§‚êƒÇ57†ïÎçcûÝ:¸Wã?,àv38½¬NE¿•«´‹qF&ïRˆô/)Õ×oZw®O{}Ø?íÙ›EÔ¦j;Z!פ±ÎôÍIÞ‚àšƤš¬Ø.Æýë'4ß6žnÿc6eb"«³ .Jr»œ#øð®Rg“Cx?+]"œáÝt+˜”úæ÷ÔâƒÄŽ*—rM)è|ÈìW;÷W* aŒÄ%Ÿ (ÊœËC¬ÙÌG‚¹ÎõŽä‰øü¼‡ó&“+ôËʆu5híÆÞÿÙægÎå!j’–YÎ=±ýHk=Ѱ³Eo}Y—+Nà˜¡›<¦—TºD]¢ @tp#ô}O÷èè¦ÈÚÚÚÛ·oMDWý ¦ÂÁÁe¥«¢ ò»â‹/¿Â8¸íüâ§?82£?¹óôg-·—·oßÞ¿à RÓÇtÖ¢ Ü]à†0y§«îÉJéã-Ÿ ;R[z'[´žîx7~­þ•óÏžm/ÎJêNwžüšõ=µt=<ÝYxñèz]½¦.ÞmPp÷DW¥”È.½óÐOwžÐ³3yqš'PÓ³·Ïζ¯Qÿn ¹cµ¸}Á€+a9½Ì˜”Ø8l+Ê@œñû]2uE;è÷gêõŒz<^l+íbÜï÷ûãŶÒ=·]Œû€ßŸ©+Jï¬þ.údáE1üÌTÌNw¼^ïÂÂÎiïÈÎéëƒÈ‚×ë¼îÊ^¯Úò÷2î×O´³ºíu§íΑAgz–»n[Daò÷×ÕÔÁŽÞ Ó.´õYè7ûûI‚ÒŒôõ²sÚ dÀ3«Z7“ð¾‹n(•Y3¿ž•õGÁ·U­V*•r!:Ïy)‘Õ$“1)Q[R7ó‘•%÷cjäR喳빆'šŠz¨”è7k£¹Ì%÷É«§ßȲüÍÓWOz7ðâ“mÚ9;“¿þ9}^èÈÃÚ•eY–Ïζÿ-nŸ=û¬7G}º£¶—eÝ)F;gˆÑ™ÞÁ³³íEË(Lãݦ3Y–wè¨8´‹d5äè·ŸX˜& J×µšØ¯þ*ÿÿyñèìLþúçZ¯¶¿žÉ²|öŒŒt†9jDwïf!:Ϥ¤ZÎâp¹ûp.¦7½êqÎÅôîªCmÓh])J½V""·ËërÑyë’¼[Õjµº5þ öé‹b8ºö€ˆ¬EÃÅÝ›zøYA=úÁÃΑ|øQïc‹Ûjû¾SLíL€©‘îA»(LJæï^=üàuZíBS´ÅG¶f¯ÂGO¿Ù^T»þÃÿuïtÿÞuø·GôáŒ>èÀ»ˆÝc8V“Ñ“õ\bõÑ*íâÆz®É1F|L…gR2(cª;¯=ºk…g; ^Æ>Û•Íʫ޺!NŸ=šÑ1úßþ>˜-—:†¿kÿáןz¥>Ínb`v*]"Ap®î¦CÔÈ¥ çªâ*íÃT®Ažh!%ò±$wÎå!ÎÅT¹\©TF+p§R©-n÷Ï|ê+ȃÈzv&˲,ï†q-L|øQXÕW'ö1™ ÃE—ˆÁ·¹ó4΋VƒˆÜ.ÇxÝ‚sqÙØT8¼ìTÌ#,¤Z|.>é-Òμ&¢×y‹×¾6¼úîµV}Ô™}ýÝ«QÏšVQ¨½>ˆ<)>^ä‹CÌ{k£úÞ‰Í^GP †ÿùñ«X+ãŠ. Îðn:ÔÓàtˆ1)±R8÷cRb%k£šzœá½”È›ùˆ¶€y¤2õÙÃ_}êÕV Ÿv?{øù'^¯÷“Ï>³«£:«j½ŸþªÛN=Uµ³¸Ý5¾°M‡‹Ov~oåGï¬é©®I‹ÛgÑo?YXXئga]Kz²àõz·éãayøÙ7æÕEÑù¿±3{-AuTw­ðèÅÂÀ¨Þ¼y£ýãèèH¿íß»â‹/¿Â†æ¼>ˆ>(X>gà÷+`VØþüŸwžþìààÀn?]0{èV{ñÏžaÃc¸­@tgíW¢Fi‰* ºcòöí[le¢{íüâ§?¹ÿ>^ë€èÞP¥‹±ðžýtˆ.ÑD˜]îÊ÷tïß¿Á€J€è`zXN/+J=»’:?ù;Ûß ;ä ˜r¥«´‹+‰…Ô=ç“”u ¿c”y€Y]ùy®ÉX(½é"gxoKý;Õ3þ@ ü™ú þÕ3êGñb[iã~¿ß/¶•Û‘¢´‹q¿~Ï]íÄb1ÔÆZ!®ßÓWµÖñÍŸyÉ_B•Ì´è*J½V"ÎÅ%¯É íb<)11U.§D&%ãÅvÏ“µ¥r!:Ïy3YIQr?æ¡F.uØîÊÞÐ6rv=×ðDSQ•YYoü„’åBÔCÜsY|›Çi‘sÎÅôñ¦O¥ž]Ï5ºÕyµÚ{Jf·ÒµBQÚ§'Ž{—DÎ'§š r.¦7½äp¹Õ¿ï®:.75Z] ömT½'r»¼.7·ôÆ#«õD*Õ¬ŠWƤÄFG¿Á·U­B}ÜJÑ%ºh5úèuj>1)LJŒe\|›û±yÎY3 3uL)˜yÑßRˆ“j²ñÃ9—§ÿ€Ç57Mæ\â\œlŠXp†÷ªÕ”ȉ¨”ÈâU.€[PézÇæ9/%6´õMõL¦®(‚à\\ötôX®IŒy–Ó›¼Õì/GTh¢óV[ïfZäœ<.'–7˜%îY•Œ»Ç®ìJ" 扈HL•·ˆœá½TËŸL%".¦öÂÎé:Ô±Ÿò¤.’òZ+ôj2v²žËG‚9.þ²ò£ßþ¡óÅbòÄ’«NAƘ„7oÞhÿ8::Z[[{/7Ço/¸yôŠŸnˆ.pCÜ3ÂH pô½ÓÅ‹O`êhïtï™ÀÔÁ;]¢ @tÑ ºD) ºD×'ºŠRÏøýC÷©U®¼í¸”zfDßn†«d` –My§Û+Øüp¸7Vkuƒ[Ÿ (J=»’H¬œÇöwÃNa"Q”z6QâR=¼Õ£2Ëd¡©cTz/w«Ò@|›écÍÜs¹{‹oã~«Rl PÎÔµ½ß/¶µ°óÇ‹m‹*§u¸´ÆÆîT‘cLJƒšõL§S¦>XQÕ3Ýsí<7 ָ͎ףΚÑÛÌôÅòèQâ ¡Yù¬õ®?+±’íºmr–æÀÊFáÜJ¿ÛŸ¿/.Ó ès«ÛqÖºÛ¦XŒ[åÄ&çúÃÿ^À]]""ï’È9•jêíOήçžh*ê¡R"+Ez«Z­T*åBtžóR"+“cqÙÃX³uADtÙ:÷,/:Í 2ƤJ–S¢^ãºßæqZäœs1U.W«[>AhãI‰‰©r9%2)/¶õ6µ%µ™½ç¦¡ÃQ“Ð.Æ%O´P®T*ªñžÿ…¨‡šÿ¶™ñêcyñ"ýKCh¦>ë{ן¥Uº¦gÉلĘ˜*'—-+æõ\ƒB©r/.« h¹U7ó‘•%÷cjäR‡m]ã˜ÚçÜ8pøß ¸u˜L/ ùøãí­(J½V""·Ëër5Î[mÅë0mêp¹‰ê_—çsRMÞòù.Z´üØü ÎÅȪƒhIä¥R©VßôzIÚ¢´OOœ‡–¼Ô9÷ä´½ºêèÚLoz­<×kÿºpÔ‰B.‡©ÿ.7Q£T«ozÍCgj¢l_šö>ô¬Ö9q>ïšâcRbõ¿»:ø`d8KË­›¨ÁÅôd7Q£Ñº rXŽéH—“fÜôB€™bmmm`'¡{Víôÿ´Û}ÈãšÓÝ—“A‰#Ýíµw'm7ÖsMƈ1â]Õõäç­¶2×:w[©YË€MwD­1ofbÊ9B“pŒ=ކ™© ©w‹³ì’/¾ÍýØùz®ÙÌG‚y1UÞò »=½ñ¼J`¦0ÝŸÞr!ÕðmþäšÄ¹]NAP”9—‡xCÔ¯ÙÑ¿tS”öa*× O¬i­'J»¹sqٓ˵..鼴7Ê„aGã‡tGÝ6}%˜îù` Ù€©¡ LÃ1éq¤²ÕÔ”=¦. í}”¤Yè®3¼W ×3þ¤ÄJ‰ìÒñ¦—.Çw{øsÛX®b'JÀ­cÂwºõ´Ý¹>U>“ ‡—g˜WTŽÅe•jÏ[î%¯uoç­Ë>¡»žK5¹s®é;㡦,˜„£¶ìx;ÃkÍQ\2ë}Îå!íˆÅY¾¥©YR_îÚôëÝL‹œw5rl·íÇt¬A€;!ºêÚ@  &KžØ¾®q†÷R"oæ#¦Ë€»«¥ÄJáÜC½%µªê–ÈNs‰NR+Á¤¤Ÿgß¾” “S{a§©ñ¡¦Œ ¬Âq†÷Ò¡F>ý µ–™±ÅÔçÞer¬&cjä#5ϦgyÇæ9—’ÁÚRZäÜôK]¨ &Kä‰%W‚0™Ûöc:Ö ÀmDxóæÍÀ¡££#ã»ßkB}/Ø¥«[> Æ]ßÜLÅô]þ ¤ú:³ÉXȾÎÞ î½Ã¾u}á.¡~Áw ‰ÜI°áÑ º€è]àÎs)`Š|ñåWHw–_üô']n”§?C¸ƒ¼}ûöþýûö?-…ée` Œ2ÑÑnˆ.03¢«î03À»ÝøEÝ÷æÆ|¸Éî¥þO‰Œn6s>³Þ*J=3’ÙÓ…o—ÓÁÍÛðþ‰îVµZ©TÊå”È9çbª\®T*ÕêÖÔ·ˆ±¹QÞ®;þÄJ Ô3Á`òÛ'ÿ+]­^G†ïê/bL:¡d¹õP#÷\î…¤ë½]Œ'%&¦Êå”Ȥd¼Ø¶ÊÊ[ûîN(YN‰Œ5õÇé² Pßµé.‡V]÷Ôz=× ~bèè¨Ç›ùÈJŠ’û15r©Ã¶®}PÃgå†e,ý–ÖŒCi´34ŠÑsh?LF÷¼K!Æ$½«6¼>È¿zYÔô´øðƒÝÏ|ð°hTÔQÚî˜èöp¸Üý8Ó›^µDhçó®¹¾fŠR¯•ˆÈíòºÜDtÞj?o̹YutÌ–jš¨è{?=ip..y‰¼K"ç“S›Ž¬¼Ú]dÕ¡Ú×sÚ@íZ4ÝYتëAÚ0Ó«Ñq¸ÜêßwWj›Fëb G‹ l†ÏÒ kË6Ö´¡4µ34Šqsh5£câžêÿyë’¼ÖóØ×ºÛ´SX{€{ ઢ«ÎéƒI‰YÙ¹h5ˆÈír©N$Õs-n”WFí]ÇŽì¼½f ®Ž3å°¹›çœ5óÝ»ÆFçj—NÿðY¹1™µ™ûbêÞWÕ׺_|ôIäà5î5ºÚ;Ýöa*× O´9óì9—‡®uY–ÖK×ܵ¦srûWÇÒ]gx¯ZM‰œˆºï¯2:Cƒ2>££Y¾™‹áJW‘¹{# ÷ƒµÂ³‡Ÿºó˯¾Ó$øõw¯Â j=BÀ«t‡×…‚à[ cRMî¼³ìw..{“ ‡—á9o]Zi’éG6½wz©ÉDrMb̳¼èÕ+ÕZ¿WæÞã¼uÙ±On—}›(ÁérwºžïfZ伫W¬Úƒ2Mlÿð™º1Jºì¬]#“¹{]ÿ$_Hõú»W}øƒž¢>ü|[­|_lþÐLOGi¸[¢+¾Ítˆ1)±R8÷Õ¢\õ,%ƒµ¥´¾äR—€6ómQ¨ 8W“15ò‘àÀ]Ìæ#{Ô^¤d0˜”¸˜Ú ;;^=îX+¸bz¯¬¼µç$µLJú¦öí£P».¯ºÚBå`0Y"O,¹ª ÿ(£3VPÆÄê‡ÏÔ-­ÝÌÕ?â0Ý“k%›÷ÍD¤ÿžîÂ'ßFõ/u·Ï¢ß~êõz½Ÿ}üÍö¢Ö^÷Í ó6€[ðæÍ›CGGGkkkö?Ù<J»¸±žk„ÒÕ-ßìçeoÕï2•(dºyâN)¶¯=¼ƒÀ§Ô X¾aÚÅøzŽbû»a§I_|ù6<àn²ýù?ï<ý™¦ž¦bzí» iß²%"î‰íÛ3 µïÔ[ÁÞ=veWž×W7ñË3{…<Ϲoûsàý¯t¸  Ò•t¸k¼}û[ÙLè0M~ñÓŸÜ¿Å.¢ Àµƒïš3qÛ¦»ÈªCµ¯?>v¦ þ0&%6ÛºŠÖ˜Lûˆôãk•¥¨eòŽ>9l“4›@¦1î¶×•.SÏÏ@€ŽÅåyÎK5™ˆ.Z´¼èÀmÌðô²¢ý9zñ;«fG/~§o Ѩnã~0˜T7Ö5pÑj\‡ÙÞ=7©¶i¨%Á1x>¤ µý¤75:‚àÛÜÍsΚùH0¨#`Hæ(›¥©aÈÕ1^Wfä5çDZ¸ìQU¿Ý:Ÿ­ë ›J÷Ïßó¯üÖØæß+¿Åôò¨w·¥1&Õd“ùÃT®Ažh!%rÓ Î¹<ãKÅp³Ë×¹BÊà¹Ç5w­‰ž¢}kÎ:‚3¼W­¦DNDݙ҉“yãYÒ_™&LgÜR1Ú9åü¨3ÌÔh]\žž¸—|˜[·Gtÿü=?<ú/}ƒÃ£ÿÂ;Ý1ð>ŽÍs^JlhË=êuɇý΃Î[—}®Q_‰\5ª÷¯Ž©îK/©pxy=û5™H®IŒ©/Õ¬ü×?šXÇeä¼uÙ±On—ýðG1e?:Þʹȹª¦É%"«,YAßf:Ę”X)œ{Ètm­3¼—uNTo¸ÞÇ15ò‘`Á3­LÍÊäXMvNTí8Ã{)‘7ó‘‰0Û£Ú—’Á`Râbj/ìÔALýWïþR2X[J^¤V‚II{§he_œá5ešFuõx “%òÄ’«ª˜&S}زÈ*Kã>â ÎTÂ\Ŧ>"}*¬®ókϪº%‚æ‚™]núç_¿yñ¯ß¼°útøáÍ›7‡ŽŽŽÖÖÖÞ¾}‹¤ƒž´‹ë¹F(]ÝòÙhFv%Q¢Õjä»À_~õã@» ]åBàÝòòúM¥ô·k'8÷_žkû隊)~ ©½Ôï†÷Äö7Qž€«\NíÃT®ÉXu.˜y¾ÿž_‡Yˆ.°Cý6çÖ54wòrr†÷ªa$Üþ¯å—[ º€At¿‡è7Tébz¸¾G¥ Àmáåÿ„$€J¢ Àµó›J Ià¶S‘¾è0ëh_Ñ#Øð¸!Ì+݃ƒ¤˜.&?yÿþ}ä¸:ÿº \x§ @tˆ. ºÀìòÿª\góʹ:IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/junit_sampler.png0000644000175000017500000003265212032647206023741 0ustar ebourgebourg‰PNG  IHDR¦:@ŽPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<8ž• ^EªDelKZ¯gdèÝIy×07‰ûè}ïuh¤x¿ŸôÐÝïêæûõ;ºñÃ÷q@4 dØÈÙ@6Ȳ@6 ²l dl ¦EKm„ Ü,”ö«S2±ŽÒÁÉ7Z´Ú-Ÿ2íÄvß$£·ŠŸO‡>Ø2Õu ¶Ç†»þDµØˆû7oØl9¿÷³PîÑñÉf“$rfàÉ&µè]LÑãd¯g1a+çbŸ$Η ÛBØëõFŠuu ¶Ô7|#äㆵQR!r€ÜÒsdÿ£VÈ<#0^3K¬dFXbè=¼eÄ6ߪgÏ_L £“d^îïñ¿"ÏÝU¥Î’ù=sfÙJuéøÈ]յĭ‚ÉgâF· ç°è¸Ì×8m^ÿ @ÎÒN@%’,Õ9’,‘©„å6õ=\Qoë®aqŸ:§Èl Ãu÷³{²/ìÌÑ=!wÈ0uªn&&sëÀ„Ym¾)6<#ïo,qeQóxbñÅ+)àB^5ˆgKRj:!ë÷z9´·Ël¤áÛÆ.ZŒýô-mºkøbú!º›7Ž\,X? BhÀhí[c1ΕÔÚdÀþHÏ`Ûr—ç '\fÛ¯€ZkF#G‚ ²$nù xH€®«:m…É€ö>ÖEv¹oLˆ"7€ã™žJTðP#’Oa˜ÄŸ:MÍL1iËnâç=×°-w¹o´B¶ EŽZ [§D˜Úï¥×žua[îrß0^_ãS¶eÐAj­Þn›Äs$ˆqÒWü§efBÎâ»Û7=á~ÞÚ[!n]õÆùèWçʶ×:N®tv>àg—{°1wŒí)xÖ¾5Ü:PÁs(æ DÍ=;¶msÇ®±†-š‰ Tåà¼@6 ²l dl d㈡Ö"’ô%t߸m¸­6γá”;§ÅÀŽ a׳’Ý †Ê×á«‹Ÿ-7ÎÀòT2’½L@Ü/züuzÖ_Þ¥å6ú>á¯O.Ÿkë&H.x}]®x™e×_bŸØà€;÷wïzvsÒµÈÐ笛ÊèvCï ¸yp~‰¼”–s¯¯Üâ£UŸ\>×úXq¦º7º\ñ âéî˜Ýma~Øà]ìO‚pÓ@ZÝ=Pü²×ž„‚ßëñQ!h øði*øHõ.P#1Þa8ÍÍGo§eÃû1AóÚlÞ’ŸÙ\©¡ÿGÀëéMQµ©ßK7×ü äŒx"Àä¥B:+GïÚð‚7R®ïšßãYf_灰 7·$ž•©¾þ«œ]¯g~ƒkt¹Ißiz¹ñr­Ç•Ódªý+çÚþ°114á ¡@;nƒ ‹tœZý©ÅÜ– ÇuЩ^w"ýïc‚ÏÔNjèí8UÆ~j6ôÇÈ‘¦«áùò8«”—ÝmóbÂ/ŽËPÏ9Ó0­ôw-Î(ÄûL†¾“— é¥r‘~½…Ù’cõ]µë¹ÄúïüÉy„xV¦úúcv“èäN¸Þ°ŽR2må©Á®Júâf‚äûĆcÊ1m'lÙ±i†ž^ÎAÚn‘Žòˆ,âgBÃ69¤@'wÓþmTV ‰ÅAõ>»ÖöÆ^MµJxCr˜Ë”Œýô@,À$¦ÚVV›AAÎ…v $«ÓÅ.«mƒX©>žIÒÉH¹ä<•øšë_µ±æz㎪}ö|`ï!½#¿?lLÛ§3$-;Vt½?ä¾ãáÌ«¤1â½Y+sÄKÚz¨ÄW’€Ò‘d—Y£U¬‚ÏqHä¢âTSf½Ù›±2‰©˜ƒ£Imœø——Ó…[8;Ëý¡+sþ×iEÉß%¯¹þบë•âzù¢/CåœÂßÚN¸ã¡¸?ldǧí$­˜Awì}v¹Ÿ¸ÝQ«neEèL6œHyøBùÀk›¤G.Ÿod‰ïR¯M’¬òWWœ‰ªÓe0ÉW| _}ôîOƒÂ!½¦J|Íõ»h½ ®×c+ÒÄM.ur—ÅÓôÜ»3Þ=6”#³v޲eÇ>[†k5h!™±ù«¬ºµÃÅ‚­v®ÖCræÊ‡­ÐŸc¥×ÈÀ¦•äs ›.€ÜB;fë×zH\$Å]Ì3KËiàBô¥l¢ô”Oúë1ž–©¾~ ¤žit½jÈdÉTy“ `«¤¯ãBoð{r}äï¶Cë¾<‹“¾á$=”„qaÝ`½±Äñ7u`¸”ÍZá‡+«nwæ#ᆚò:’ïV¹™À:,ÌëA+å%Ñf×bµÜÇâZn¯»:ÍOÂܼ,ãÁ1],w{>ÊÿDWÊÖ9»\œeW¢…¬¤Åx³Ë×]}ýÚÙ¹Ñõn,ssV0Þ\‹r7¥.‹;ÆWèücŽú¸y*´{ÃFŸØÈíAyaV±Cøf„÷©÷áª#Én_Fªsk±51ÆW œñW÷á,¿jäö¥o šê=Ù@ ÈÙ@6Ȳ@6F´ìõ ÐÄ÷ƒ`ÜG6ÐÁïðø?áïÅ›œ7pG ‡uMep4¦­€mc›lLaà¶±ÿhÿsWW¸nX=úÅÜP’~=Æôvw¤ÒÀ¿…Üò/|xáJ€}3X¼²P ’I +«6MóHµ¨LAÌä‘\ÈëeA~lÜÏo@°ýÝG¢ý†w©æ¼°øí.yàïŽ÷ØÏAtð©4‰"io÷×:ñeòÈð€ÙÒ÷9ú~6îŸÅ¹¨ ;¦jÇ$èx6òüƧ( ç¥Ø¼kðûKÓ|ýq}iæ P$¥¯‘¯sظ;cÃv½å†çn˜`Ø]v~ ’ZêÈ·FܜЙ²pº¬í¬ž+òpJHA2v>‹SÁB7NNhoKöâG­Q`#?Ùý¬Ô÷ ò°›Ï2ȯ± =žcÂN•ÚEUó9¦<‡G#¥´º_ “N¡‚µœ­Ûuר0Mø¨,Üt3â»Á$ÅŠ¶Á”Õ Òhýl¨\BZݯʬã+`žúæî`»n[T·-è Ù§f¶òÁw¸ú²íw¸æä¯ùgqíº?+ÜB­~Û¬iØØÐÁo±~›«o`#ïd…‹@6Ȳ@6 ²l vT¯Ç»2‰¾Éš‚ÌÊÄçÌÏ~Ûäà y3²6ü1ß.|›¦8ùß¿’ æù6“"M¶´tÈmp'ÊÚs–FŽb9­2$7´óѸ¬ÝÌÛPNµ‹}#e™aHs"6t®:ŽQw¼¡Ávú½kÚ2… FúRÇp_æ‘!jaÍbêc[î*Õƒî–ð P„oÁRúõnÈÁRîµ|sG ùRõ o”“˜¨ÕÚÈø#bËlŒWÌy%žÎ¿#`špœÿ¥X]Žs‹Ô8ÔejOML4:¢…µÓ§!‡m¹«ó†ò%»lA°RšÚU¿ýågÇO¨OÜÎô»JÖ£–…´*FïáBy·û†Öá“‚16ä©A$ß™¯šAS =¼\á/_c,I©¬Í+ã]íJkÜËݼK!æ ß’M×ÜßjÓ ?ÌXJÙÄ4 ´O†`öcüµÀÎö©ðÍÙ@6Ȳ@6 Ä><ý¡^ö€`lÄÌcÃì9úoM9¦«B´aßø5l­=ÆaHF( ¡²Åyãà0UœrN“PÙ"çÔWƒi~žRPÙÂ:óbïÁsÃ5ûÆöa¾QoaJŒ¡¶«ø6£rý³_ü¹áõ!Ho ÿ*ÛuûÆÓöÚ¢å÷ñîÁÐç`î°Üë•FTȘ $Lð•íz}ã ¹ÅÝ|$ñÕ¿2r™p–Stü3S•>ç4TÈ6÷Ò›TÍÆŒ¶ÝÌêRG &@«—e¢¿÷F«uTR!  wr¿ð*°pŸ+È×ëïÒ¡&Úo8ׇýÑNû²ÔegÔﳚ™MóÅJ±”ÕY~«"Ú§ þ¨kpé]@ùaÝóFa‚½tðÉ?UØpM%ÚžÊß æyaÎ_¡.I“F€öË’÷,œÔe(³O•¿e=@žÀ'†X× dÐý©s±!Úž²ŽÁ„©â‚Ï Zàá3À\…òÕË„çJ}@´OÕárÀ”¡¿¾o:¦:î ûÑØmO©ßI ¸$í©6\ø?à$B¶ñ‘¾FEûTªÔ70lÔÃ!sL“@è¸7-쯻¦¢.@EÛS½§[t grPQ¶¦›úRN’-y#m\´îd¢}*ÿ©©ÛµWîm/¦óïÙIp¼þ3a;_wÞ°^_é4ÝŒð7–:ïDýÜLµ9U6¹£;Ã|+˜m´¦–ë­ñ˜ç£Å93oødÓVVPÝ7¦ÿç˜á*[ɼ!Q·Eæñú^ãÇý·í3ƒ³U!nÄ7#»Ì>[6\á"ö‚‡jièì§rD^°o&. =¤¼M ×7äNÑ{i»^ßø16Öžã[/~ûÅêW¸ØTƒ†z*#¶ËA×TÈÙ@6[A?o•5žñP°qD<Ì¢ŸØf œÅÈÆáZSeÂ9^c7Ì·Ž¢6¯ûÞ›¦x™Ò¤(—hda¯:n£££Ú7rK-ÇÞ6Î·Ž¢öì`]Ôò³]'̃Ë/ê ·ÁFtdIöŠ›Üë7B}¿¦ü IÈø=^ÁKoY›mY°BE÷š×¸Ï¢Ëù—©µCH“j÷#WÄWinR—Ôu?°°ZeŪð^ñ¥ÈN|ÑW uR³Èu`mc}c]w¥-Î\`zÜã‚¢VS—Bï˜{;Xt9¿ ÍUÂ…ÞŒ¨é­èu™V÷‘ASºêìíñ/:hoÌëQ¿#ú˜E6¨•IA[ûPé Iv ÈÃÀŸ¿Wš3Úeê4 wgu~A›Û9™Þ@é/éu Ȩ,Ugïá"¿Ì„¤ ©! š6æcÙ˜góÈxÖDT_ –ñ¡s‹o–fèræ¡Ê~9¿#ûäý) Ô”`uñ «þõHìlÖBâÆç©†÷ ðÈC¤Å†û9%{“T;ïü•J®ëB OUš­:?Àe]÷M€~ øêÆŽA—°¨ã9S ¯Û}Ù`Ð__ãS¶eÐÁ12¤”‡öÓ-Z¦ÇÇžVÈÒ9BÔÛº`²&?ølI™ZipÉ€VmĘƒtJXAÄ¡}ÌVY™ì -ðózÐÞ ÊæË/-7åLD·†©.ÌóÑüœÌ.EM~èš ò²æFÜ¿… d@Ÿ*È4o9ÐçOÁ(hx0öÕÊä‚îƒÁ§¦{6™ûˆx˜ÝŸØá£Ä/ùg¬ø·©7#{Ž+ØÞMÄÆqô<Ì61GÐÃlS÷£ü¼@6Ȳ@6 ²l öê鯡-¼Ô¿üHLû™XH„<1 òœ¶çn³ë³~8p^ôûhylúËäþ¨©<“µoUŒO™œÏC¬_o¹‡žAÓÅöÜm6Ö MG>D±eü¾#7ôûdÛjI`TÀäà}5D!ª§°=w› μ Ù’Ø2aÂ÷¨SØÒ×·Uaeá2Õå ƒì2¶ç®Íâe0[xíª»kÏŽŸ¨°1ž™P°¯×4º’êr8)rØž»Ý7´¼oóƒïŒœúˆ(ë¦ÔNfóV©¡½J<¨a5zR.ýŸ°=w»oæƒúY õ[ >b]KâäÑ*(ØîÌGø9³$žˆñ?Ñ~f%wô‹oFȲ@6 ²l öáéíÐOìAýÄ6?±ÕçƒÃ”è#¶ƒú‰m&ˆþa%Ö™7{ôÛT}$ÛõúFc?±6€ër…EM¹+}Cê#¶ÆSìæüĺ³Ú—±%w¥o>b%ÛõúFÉOlQ[ò»Xòôª‚Iû;’å5Pi µñàµáÁX£Ü 5óÆ)þƒ¨óÙÙ’þ\ôë5¸.LÚ vpYUb V‹¨ßµRý®©ÝLsXÔ‰ss&q磚QÎdÖ™Îé­^nتƒ roﳜVóþ…ß{w|„ñ0ád?ô8ù)ûõ¨ÁUø£¾‰v­æî»—®JWú¤¤úÝÔ€«½]E6ã'B`Jsÿ‡l^–yÞã•Ùxý)¾:÷ØÃ3…WT>Û5®þiºÛ™×O}»fÉFÔàúOHÿiÙ¹2‘ªáïB)zO·è@¾3-rsP ¶sÕÿ²ù­+°Î ?Ú`õ[Ù­9­Í÷0LâÒïÅï÷¬q¼Æ OD¡ã)psÁ¯^:ÅGã\«UÆ…E•Y~¿+)“[Å?ü7¼JßÊž7ܱ‹ïëlåü…è§èƒ™¼Ú¨L„ym¸ù¥¢öÂø ±.áõÌJye*Ž6ÂF|r(Ç–#G%Ùj •²¾Ž"õLº?V&=&MñósU/Ëðn=ûóFݼ<‹*ˆ-Íâ{µšþ¦Ñl4Âãøí_ó°q½À6ußÀÆßèyl dѳ8.d´ºÜ×5¾Ùxm‰ê¶&ªÛpG ‡vMŇ…–VãIfƒyh÷’Ä4r¤Üàk%x¸¾ÒÞm6V.}Ôš:{rk¯¾sW¿Ó>;û€\£eJįç*Dc6RmU¹…{›öµ©E>ù̯2Ë‹±Uh¿{™ô¾Í¤LPÒßG>Õs´|ù› 1Aq ´´›EVeíF®Ò3F±¥·8o(à¼_"vŠ÷YºðLÿ‡=—‚°Úgùpàô ©„­ËÎähe¹c?5úcrh© 4Þo1õW–nضÎFרÏ.—íãÅ@­t÷£S¸;!N=+'IôrêõnÈÁ¹•[ JÎ8¨Þ‡5HƒNÏʪ4d±}6dǾ1—Ê›aÁ˜ä0'½eÏÊö §’`u9Î-2k%%±<õ ü"%G&ä>E(Cì`…Ë_íù€´á80[†‚EC®d`õ·û1hä·o:W@ýè'!ÛZntž‡¿ …&yVë=·û¶îØX´%¹Ò¼2È®’C¤²6Ü„·¨hM © ó¬ü’‘L0Ó--tãøj1e[=$É4mÐ/•õcën=U1”*´´™e© ÜÜ îb,Î):e\0YTd…%SZäÅ`º 6*sQB\'³å“ åA£—Ótмþ‚PöA26|Þ°¿ê6”±mž |3‚ï©|ß+ Œ­‰Ø@[sõ leœ7 ²l é,.y,Çön´è< 6PèÖhɉê¶&ªÛpG ‡vMe£îòÛ¶ž=6’ñgò=°×&5ÀV­´:*º«ª5•»án#dÔ»o¯­Êä >o0ä" y‹¹UèeOÉ3ÐMíˆèôÂÈÖšP§¦b\&š”+:eÙPŽJßîw¤9¹IU µ‘œÆÌ7è$åocGE;!´KH «Ø9²óF°ý1jm­×¡£µoM8œ¸ 9ÊchÀLゃŸë²/AÀΤoÚ]CT§£r’xŸÕÜ®ïu¦×èg•ɶJžÑ#ɆÍfƒnE$XïùërH€N«Âa{&7Díµ%¨E·UfÑí*v P‹n-¯…H )ÐQ7š_¡B·äƃ<`ˆ;’#œVÏ3kk5Ù8ª±:%ëžJòÌB-„‰qoS‹nIµ‰s€ë­WVÏßÐð›þ ’åáÓÐÀ(h{m’Y¾ÁÁÑœ7Â`©xÙ’zJm³1(N¦'•¸W¸Ûé uû½ôÚ³.ZƒŒ¥ñ‚÷ë{²õo÷šY]˜?Žîd.«§§—t‰Š§dµÍ&Úù„ï ·Iâü§”rä?-3“ò-§…Ú`M0—¦"¹Æ«ÝÑu×ÀUG£G¶o&üÚòy"h.íç£_+µÂ«•¸à 7cÎçüìrqÊGk0ήþ#Œƒ~>³–º®Qm$²Ô?è”>ZŸçÈLã{§nó4p¦lATxA†ïpë±?¶Û¬á(?gÀÖÞÑHµkP=‚­ÛÉbÃÿ‘S¹ áo„y£"žÉ°×óerÏæ Ýò¡é‚ØO͆~ª§Ò°þ;R¤_oî‹CÌn¢2ÐsýZºŠ ¹û#•¨Rhcòâ š†5=³ÜF0"ªy’ å!¦[µšéTä¨zæXwƒØò¼Á§ÿe—_}ñÝ’¦Ê5\…kGÒDr²ðê«›¨Ãh¸Al‰:Jþ¢| ‚‚LÜ&‡„œi Åêdlën;xÞÐCr*¦Ãt®(—°HÌE*zÓ@êÆÑ[‡¥8Líþ¼Qnþ[AÙ­ŠÖ°Õý-7pg>Â?©ƒÅÙU¯™o&}sFéHUo² -·m»ªnC“mÛÚn;Œó¢¹ÖT[ÊØšˆ ”±5WßÀÅyÙ@ ÈÙ@6ÈÙ@6ÈÆ!BÍ›‘ª·~Flžî†ÛåØ8ûŽšïþ"fž+È…¢}Ãp½Uß¾nùl¨öp—¿4/‹·m¬j’ÖÌ.È%7ªÈ¼Áñr1ˆîÿ-?—\·üÓöÍŸk+y7Èí~Tñ̵#ÂOh(À—u9—Ôá¨`ãÞœ¶”oÐñ.¼QLÍG<̶¡ŸÙ6¬ôr(@1ì]ñ¥¼b-Ioà>Ý+¼Ÿ‘2$"p% Eߢ \¼BsóáO˜‡ûw1U– rzø’x~XAÜö&„Ê×õ0±Q˜ ÿ¦Ø§d¦OWl¤¬ÎÄûŒúwb'D‘I´ÏJm ̶a+öGÞ\†úͦè‰jÙuÚ<ø_è6 =þ +“1|‚C—cÉïÒÜÑ~ÃÛýqxA{¢{ˆfÑt±´ä‚„óCKžìB¦¥t]2Ç”C UyÊ6éZKY²ß®­8éýP)Ý=Ð#Ø6,£ËéûÝ‚ÄTÍ™Ì*ø&Ýöpb™nžäÒI–IÐ|âð‘"d&áڅ˽ …Òù[Ò\bjK·”®ë¡b#ÿžc:?MÂ{ŽÊàEþ•m‚Rÿ±2®òÇ*È@ã½9 I«¬Ð&ìç=)êÐ÷–tÇÙçuZ«xêØÙ¬PæÀ0ùÇK.) §O“Ò«OL$*ÐR:¿|$øœ†yéº¦ç ˜áÓvF*zÎ<¨êm¾L›MY:špþü :` ¶ ËÐjîþñ°ëøËu(¡”〶]‘ƒ—ߥl@—Äå„“¯ººûôðK`©ºkÜÐZ:$Ç '“ÌøåÃ7‹Ž_O å®m½C¬ÅACîuÖzx4kó•l–á?-;Gšô{Ôb€åUÃ*zèŠ9J%áFÏHæ^5$£Âž‹ŒsˆçHÁÿ ¹˜t¡ñ'äJÄó8Uüwœç³8ȳƒ$Ø9çliõs½õ¶ Lµ6¿s·ô`_¡~}õ·Vd3%Û†et>øÅ9=•R;ˆ4¯i~5ÔrÓDÒZW»‡¤ŒäqÆ89'¹;M7#ü¥ÎÛ¿äÔ6×5ckéü­ áãa|úkŸ¼üç/ !±—oFlÛ³ÿCþ‡U‡éÜçrOŠA°ï¹GpþÏßÄÆÐHµo/ ¿‹m¿‰gq²@6 ²l dl dÙ@ ÈÙ@4ª¢›¹oÜ6ÜÖ‹ç û89ç„Â,¢ðy€¬Øä÷Üea4b3lpÀ ƒ„ˆwHøÑÕÝ:ÝÓ„ äbÓ#ïbÿx„ˆi˜ƒ÷³o’l®yýàÞ…0O#}§“Pè•Ì x¼¾\ó{<ËÈôz¼þ"•6{ÃEfg— £©×ìˆg!¥òô´¡rQü\¶Åë/ÕsÙ˜špP AˆøcÐÓçg>tP/¼¿c±G!Þo1õSZÚÊG!š1ŠаæD·ãy¸j?Ös)ÁÌñNûDú Ö~J—îNIï3ú"¥òtõ0`*åf·b‹·«TÏdÃ1嘶“@¶ì¸èW»†¨èJ¯cÂfc$ V’9ßQ@†·ÝJw*ÃAxxx&ýI'À—¿×CòiZÊÛÛ䥳D¡]ÉRy‚¨%yTµÅû>]·s¥zŽ ÓöiÇ dËŽ3 k1U†“é„–`2gªì¿L…ÈÃ4A”/èÊœÿõ$XN[|òpúL•Óx$ÍùRy€š<œ`‹—‰®y(Õsgñì¸sÚNÙ® 7í³t@Q3³D™¸ îIht —”Ìa0S¯òwמ Wÿnj`‚d~ýrÝ=Pœ®:uƒ<¤Î/|ÄöÄzŽ`ßPŽÌÚ9ÈV˜—á®û»co1!x„ <@-*‚A­H‰ÛÂ`bh3Ù÷¿ªð‘´ÃÅ‚- dÌJë!q¤¿Ý#yr¥< äH®’õƒXÏÑìãä©c„¾1ù‹ðé)$& oçgèù"0§í­ 7ÓYn¹Ù«°g˜òkéô1»\œ5@Ç ŸaÆBíç†o˜„ ã+´˜æ'an^ú¨OòJy¤¶xÅzŽjUÑ·å…Y!ÄŒõOwøä¶¯l¬÷žÊç/ÛlßFªu_Š$ÇÛÏYl dl dÙ@ ÈÙ@6Ȳ@6€ªèfîh+ú ÑÀV´`)Z´ ÷Ÿøá©Ö³îæ©xçN¾M?Z2ê:œ`)º,Eû1lgw¦ƒ>Z2ê:6*vÔ…ãÌ&Ôäþ¼»¬ìÛàvXÞ%ã‚ ^§—‘£µ¬EU ðšR™Ë÷Ð[™YR¿+B$Ò-Eóú–`‹Q]ŒÅej ÄñÑ8§1§—=Å@¶G[åZ:ä庿q¾¥sA,‘¸¬ÝD¯"Z4´g¢I¹¢ó!\€4°=%!"ßgOHZíTÀœ18B0[û¨Þ*ot>!»¶<Þ‰Öœ2–¡Øñ²ètçðÅô±¡¬öYMìÇ!ñ>«¹?ÔªsÄvƒbµÏÒiºBÝvƒ=$‘Që™H:mŠBpðs]¥Lº–²¥h‡Â;\¯L8¨@Фb*å ¤I‡Ñ´“”+áÏȱ¦<å·K*4(ÅšœÔ!‡,Ä¡M-XŽþŠ ®6ŒE¦—¨šÚ›N€NÅê6è*ö¥cà,S“:óäŸ?÷NÏ`Ã>O Â$ mÐJÚ›L(Â\òEòïÔ&%1#à¤i¥®j "‰Ò#ÁšsΜ”éoÀéSÔ õß:‡Ûž ÕÐHR÷i¡n¾R[‘ž·|·]Žsšä˜7fì3#b8ÇF¸Ä†+ÒÎBÓå„Aц³ˆ gÕÊìúsUœÔákeËÑœ ®.F§ÿýš^~òÓ¢  RwAV¹º¯Ñó–^án§&ÔßœÏŽŽ“­0ÚÃm÷m2z„ÓÌ4s,Î~CÏÙ–KeÔ_•TÑ YÉC¤ &kNñ=Hfl~6ÉPqµ¢ÃÚ GI|*cóUêŽ'AY’Qÿ-$bP6|ì?¥|8Ÿ†jÙ˜µËG”Nj-šýô…§VqU#w«ren‘vžÈ¬ ŒóÑß,=³a:"­Æ0uUb0Úìú|Í)t·~;0Ë$ÕúùÐÒlG¶ÿ_hÛg²,¾«R·<4c†Ž“+4§öV8z«l8O†½žËYð/xüIá¶LúPŒx¼¡Ið† n[…°W¼cm¶”!™Àg þÂg´Ž¢ßûYo’ xSìðfš•I,øŠ¥s³ë Š•ʦHìjÀ/xS‚5k&8­\Û¡ecbˆZІ¡’­è43»Ja¸ ¡“µo‚7ëv<ÏËçú?´öQ«Âð¼áÑcv±1éòjŸõÃs È’:Ò«ÆO[œa žè´?ÿ­cÉpüX†.r†á =DZÁ ÄûDkÔÙ çf×A ”§eg¨Âº¸…AAòå`)sO°8Ü#ûò 3D¬mžZ–»»!j5üªP@¯ƒ©‰›]eN(OÊ„²§˜D›^³f]um‡wÞpÌØIpÀŽ]e6Èö=jѹ«?ÈS‹Ðyxõ´ÀA¼7k-‰ /Sé2g^% Å„ŸûÇáðs’SÐT«Ëq~‘5ÄzÿÔÊ,F“k†¡Ò OŸ†1ñ©•ê¼pî’Åi±|¼÷?—Ë‚\PasâßÄ®ípTµªèü¬}fpÖ>M»­Ú Ý*ÉÌ,:‹¡)”eyt>ª©‹‰Ÿ[!=nO3ËÆ¨OÜÎôO´3¡S²f›š¼ eÁ4³RÝRmMZ,ƒ®ºõž(ß–\Û¡í³v™] ÂàÉ8Ÿ*YqV [ ‘u›ŸƒþA´ñü2\ªÖðk!yŸ$ÍÀšWÁLõy§zø*«ƒÌ‰JÂß@_Îæ¬Q‹Ëߨ[äÌSmMZ,Of¡DíŸäÛ’k;´}ãÒ8hþì$\‡>z¬8—÷rOЦ ïÌGø93¸%úçZÆG?2ÜLúçØ3û¹o-iªj2Ìõ³J·’tx®ú<¦K0cau˜]œäG7Oý»=‡öÉÌŠ§•ÿʬijs×”7»–Ûkÿ$ÅÊœA¸€„oîp½O¨ÕáêK–¢ ³çšã/Ù¢<úP«©7«Š>8lQ}¨­YoV}pØbãjkÖøFÙ@ ÈÙ@6Ȳ@6 ²l šÿüéç}{1žIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/teardown_thread_group.png0000644000175000017500000002214512032647206025447 0ustar ebourgebourg‰PNG  IHDR!åBäPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<"o6þÉ·±ö3Ö¡ uükÝFSÃF•E’Ù5.½hÅöÙã ¢ÿ-䈵;ÜQv纜Ÿ,§i`Üá’pZ-i¿³ìpz². ‰÷XÒI˜\r8—nU–’ 8œ>žŠŠ¹Üñyç|œ†û牜ùò¦Û9ÿ¦”: Z-µ-&š#ê"â³KN‡/ B …w"ËýI{ ›p·tFr9ÙðA=„>²’ŸÍämñò¤­Ò>÷u4Ê~L¦„Tm¶z>¬Mƒ’ylämª²ß³äí=#yóÚ&!½H»%RD “FŽ…ä;ïw ‘~È›Ù/oÿdç©àQk‰T/ üì]6âN3C)†ûï*Þ|'l&wî¬*ýd‚ÆüéÇ™‚Ž!_ÿì£IãøS]SfDUô®×F€¶PÃ/¹Èùxe)ü=Ù~7J™Ñø==.ßUÄŸ5A'ÜUüówÕB0iæ}fϘÔ§!h›ø°Ç×õïÞ.‘Úð½^oW™±K:#O³w8~/éOGÃ~ÈÍHÈëVOÓ¥$Ò‡‰î„&=L[È$#J¥Êšcþ'ï²pí% ùhI€¹Hà34}L·(¥–çç6t˜¢ãêHÓ%ðÀwK¥iv'»õ<£_jþøÂÓ=@µ89YóòÐJs怛èKGG #Ñt_'HãØ ¦²1\ÆfD÷$g;zi¸•†·¸—.ËŸ¢li-—ÊÂ8lÃ]Ò§|,\ì@ßí©ß{\è ÑTOÀUÈÊ GHkÖ‚ÿòxm-<üÕk*ʶ[Å"þنϓ/#¶œ¬ k”¨¥êÂ’çn ø4\½I+ÃÁ}‘¥´<¶áÎëŒ!Èåààß´ D"åã…¨4¤ƒ_ö–Ž9Ð *ÔEÂ6Œ:RDŒqTõ¿ACཕó˜XÉA:TÈ¡„å[¹-zVøôqz+ç‡?Æ6ÜyQO6i€Nþ×s¤5Ú©ÉÊ‹fµt†Qð·‹]T»èêGlàh%¬9¾ñ2õ¬šž"3޾œL7Ô׆¤xÅ4›³À¨Z Ñ wÃ5%Œh„ó”Â4êÚ59‚m¸óÌЦx¨Ÿí¬Q“»S÷^„SéžеŠJA[«¶i*ÆÕ›‰¾‘ÕÂè1õÖn¢¿¯»ëÏr:Ò+™'R9 ÆÚÁѬüò w¢1N®nÌ+4yËd‚oÔÈY­d5b•Ìã‰ß7×aî ¸k½¸Å¬ˆ­ÎMˆês“{[™Q DZñ°7A 3È 2Ì@ιI¯Æ#÷骳V7^™G-ÕuÀéJàE<ŒÐGVcÆÆ±Œ—ñðáô¯[pŠX·'@f pÖŠ@f %#P ÜQntEÌÀ`µ@ú6¸f6ácp`p²Ö†Ø-fAˆòáÄ ®Æ™¢míÍ$FìloÒ·Bß³ .ÇB ,–3šwÅá–ßéð¢U©p;“z`€©ác  ¤°ò(o÷ªb )J‰GqˆÕ#+tŒçßRdŸ°õ‘1< 3MOžºy¶ãO~÷³·µE÷>i7ñž–níâÛ»âvÓUTû¨¢…ÊVˆCì°ÎÐõR3ø²€¨‰º®@[ ×!„ann•¤úø‚Üðì¨9Xž©Ú7QS ®Z&b·tFã(Ý!|~Âýs‚EáŽm.×®Ušƒ ”|lkˆì5ö3dêóä=ö•†×Á}~5mÁýÃ[·A bGŸghí@íV»ÊLÌ•ðã´ÅS4-½ßV™ÏÒÑÈàFU”‡0’¬š)´Û:xºÉÅß{Ë6jÓ½sOêËæ”ƒÂóò18PÔlÒ”b£cR1EÒŠ…”•E?±ñvE6j÷Æÿ…ßãÿZq^²0/·QŸŽ#66Î8@•±û㌠â4®êBfTƒþ×xåÕu^¹ÃˆÈg pŠ@f ˆC<]8e9Ø@{ö&db'ÇIšoÔÉ7‘MßkˆÃ¢3Ò‹5ýä¢w3ùŸêÁkø0#د‘}{® äpúTÎPôʼ``à…ç¯Äó9ucåqÅÔ|)µàtxÒU|! 3¢§«Ð“¾“þ›š8b»øiýšÑ÷_ÈšxÁwQoëòIêÆÓs¬¥Û‹×ò3¬p‰}¾ JDôzŽ2H‘°¥3ìà! š¬hÔVyÔ÷yÜüë »h8p8žÙ›ˆVÔ›Ñá°‘ðÖ6êЈ™°ä®÷œãM¼–‡XgÔCª!rÔ®š£ÜÀ@u/yv¯å!Öú¡·,â‚/ÅjP@8MÒˆ&:d¡Mf$„ÁèáÕµ-~?­õŒ[ÕË·~:øI£ô«éÔrsóe?±Ô‚óPakV«ÿQ;Ø@«Ä&ÇDÕqFËCï/cCÉ Ü\Qh)€Àq™@f vln"!ûÀ‡ù¿M読j»Ç–®æªH‘ 5­WŠ2 u¸yõ¹@,#o0®¾Ô Ý=ï’ÎHˆ‡ºj«Úž~ë¬æjïÚhžé;azº{Ë›~ÓÜ…S§½gF&é’ >pÅéÉ]¡·$ý³,àt ë¼æéÎ,ü®+Ò~ a—ç>Ëã§ÿÝ;iô}Ó9gjhþJ–8hœÅ_p±mÀ² NÇBÌiƒ¶Oiê|üÒs,Öã¼âŽ õI‚bž$¸±à ßp¹â´6WØó}î5§“­4ó,Пb=˜,!ìu§3ùxÄ–˜5ÕÁŽí^¼ ‚ª~©C¯ë Ñv2ö=C>Xx¨SûdGHÈ•1t¿Aó˜: àþŠúÄÑ>ºØ+»˜ý²<Üa6²¸„Éê£9¿êôó‚òVžM)°%]xª^è²?r©û%¤€ãຘ@FÒ_·=BsR¬œ›2€$ÎŒ†U…8"ö2•>?ÑTUˆ…ÏOš„tòÇnG{»ÆZòée n` ´|VË ´B~Z¹,Ž~ç*qeQ¦Ö˜›$àYòþß^³[u¦z•^Úº ÃeA.Q®Þäà^Qÿô"˜„_M‰Ž»ŠÒ8ªò¡©øgY|š¥¼Vóþ¹Lyz!ЏPs«Ë¢ñ¬~Øú3ÎHÁݹ;Dk7Âñ”Å #ìV DB$¨Þ¡7¤ÀQØäû) ãÑ5¥ÿia¢Ð }®(.t$/ìVy<‰¸ðmÞãj ¾8}þ?¶u©"iK{>¸¢,%D"ð6¶÷Ã<ÏàbD5ü rÚ™eÙx˜‡–é í­°Ÿ›)rVÀ ÓÁ¾&*ž'‰µ3aÏ8»³ ö…–ÙÀ‚Fˆ”7&S4nÂ\$Á4â‘Ü©Gj¡,ÞtÊ#rîÈ”Ï#Ÿ2§Ï£î÷_d姃™ÂJ³¢zˆ 5ÍÝÖ`{oEkºH?sÐ:`|ĵ½ãŒÏ¯ó ôà¬ïforppWŸt!È 2Ì@ 3È 2Ì@ 3È 2Ì@ 3d™@f ¶ë®Ü¡&húm,p»åí›Rw¢ˆ½¹XÒÀ¬vVØ6ÎÛ-o¥jw´Ô@€œ×ìöAejgý¨3ºÑ>ú’ùEæ&ƒ_½®Ò—Ñi5kùõåå±o\o0Ê“þR/)âo ÜQ®je¿ñÕÁŒ•:zV(•ÿÎò²¿üNmUß,Âv·skK¯ˆ Ì ç• EdC+(´uÉ`óªE”Æ+v 2…z‹2sÁà¨ÌPÓædV¿Œ©3F­m×Ú®æ9àá^1]ô”%ZÍZ¾ª¼Q«Ìš—ç½Øt“Z¹·—ÙÕç«Èظ•}¾T±\ñçÒБ“¦¡¥êÖüôDæ6¿"])kÞ²½T/R_v~!À¼¤,èN<ÖC¯®éd^âh“dùê5½áhîD©Ò u0_,N­©ƒÖ(©ëõ•—š/W@-œkO°z¯ž/ÔÜGo5 üº&’¦I}òHŸ|½šLÅ…²—•¡„ ó)€ã‚¿^Ëvˆ»åYé0.úa±÷XKWӉЮ`™Af¢TæW:Lº‹Á ™§>Ges5“óhˆŠÅ Þð0̰÷•~ö‹Å1Ð~ ´bš:øï…ä‹õwcð2(!V!ÏžrHòšÇ çé%á^=& <ÏŒ”Š6×iìû±$+†S¡ÀØb™È—A©!ŒZ /‘ßËE»Âˆ¥f¥rÅROA²ýµ¬x&«å3Éákä£^NíìH9Í5¯ûÈùÅA³Tq¡òç%RÞ4}O- wsTj f—[_’6Ri<,ýãÇÕ¶nèË×[”9V,Ó-È4~Z"óuø´±ŠÌ·{#¹*ȹÊ2¿JŽ&~•–= 3zFK?EWjY~F²,ï/$?#y<ê#¥­2òzG3ääÉÞæ K·¬´§ždŠ» ÍÈYüÛV[Ù2‘¢/–Œd•†ƒ²ÞhyB¹â9¿òóQZÏdµ|¤„ ”‚¶6’få©ÿh$çg£ç^1’‘ΫW<±æ÷GáÙ¯ˆ*K&l ÁÉ ØÿGo#ýšq¤ç¿|«6:Ê×[ºXïÛ%™9Z_fë_Z—|¡šLµ=P8W¹­ÉÖh}£_þs} §¯|þr\Õ« +rI6蕱‰»Ü“U‘ÇõŒ÷ŒõHò€ÓÞ‹M‹£¤#ßz§<§ç ²rÁ±¯E´e'$úbaVù´F9y9ÛI©ãB¹R©— ‘ÚÖ g²j¾<ê.~Á²´ç+Nì¬x^=!±™Zsû ûz•ʦיäûf‘5þ7ó}•ânäÙá“•ÿì˜XoI&WùÍ"™W×—Éi.Îõg°bW€ígÏ=ÌÜdxè»~÷»ÃÒ·q$ÀE-PÀJòæÏ#%w)ÚÏåL-é+ä w§òò¨•» ê™—’y½8œ—Ø8ÊdÅ©e{Ц~ÇÌ{nµŠà‹E !¡F¡0T˜E“2Y¹âO·%*«!׉Ö{Í|"J““®Lˆñ$ªL#ž×°4²ÄyÉH모°‹@ ]”å-ˆ%ÉY¹—µéneH‰õ®"óí"™šª20P$ó};¨°s½ ¶:Yƒ \óåKg•†Z¼ø‡±¥óÌÐ?ðºÑJÇ,œÑ/Ù'F•Áî;E;±I4uèü¹üìÏ5tÏ«sSfßÅYî³ô—®N.nî¸Ã)ë/sOŽ-ÙF±à>½ªÎ`;¡¢u2 ›(¨xƒ‚#D9– |2¤IŠ|"þüðu€zÝ ज़˧!QhÌ aFCÞÎüePTzšn ãÆ¶ØWhY«79]>q±ÍѦèžRt·Äðù‰'ÿOÿ\ÑNL–anê÷³â@ØóŠfÈA+ÛSåÓ^·µÑ × #ï~»¬0Ä^#²ñqFâþO!a/­[Ž+Œ@é¾W u%{^Õ»[CÜoK}/yv[âP<Ï÷÷Òj„DµÍ°•Jö¼R@8m÷G÷Ý÷îZh“ ‡ƒš™/y&šÁd÷üWòk~Ü[_%‘á A¯°çU`‚îåüâ¤Qˆ1,Óí´w‘Hi¾ìqMøðÚïo”ìÓqoG×´ê8c¹É¶`ö¼Bì³çÛƒ“xU¡q™@ 3È 2±ç&;Œ6ÚN@ð™ËØŒÛÓ¿>½ bCš™À(™Ø¹‰î*ªÿ]ºæ¨+ᔪiK¾³WþýëÖrÞ ( ĦÛýYk@±•ŒícƉMÿÿ+åÏÖO¤ôž(Y6€ ·½I/sn-:ñ¶X¢ ŽpØå|“ÞÞ®…,ð~‡ËÏ“ˆ%a…¯Ÿ:wÚ ­äÏ÷x»+.¤Óÿ³ÇéhC¶ùÎN¹NóÆù˜µA*+Ùîp.äH—ÓŸ£Ž·Û¥tõÖK„cO™qj¥äþÌûÏóÍ6êÜ3mì ÂJ§ÙÐI'9ª#LYtRGàΫãï[½B1ýgt'Kú!˜ÔS瘞ÞcG»iˆ0¹ Þ䉿žE*ÑÜI飹#¥S”ú_Fbì 3þ¶·d±º ±ŽùHÕ7† Bƒà({†åÁϬ¢r4búy Eò7Üe –âßc¾5“7}Ì‚;s¯âÐXÔU;sÎÒQŸÛs¸Rl¯™Ñ8úby ¹àÖ›“GZéñV °büëp©Ô©µNÈq ¤ô7Ú“f¸ ý £ù öžó­Ì=u‘×PÓ©¾³ó7 mK®ÅÅt2Àubû`Ê©©~±A¶<æVur^êÖûûÔvÍšÜcéŸ3ÏÄ2©_zIpOý?¬<': W¾Ò¿h'¾wIÊ,¦ã«p±ûÏ3´£ì†M†Ë#>5u·M]qç§ Ô¸zÄô¤¢ÀyÓ1ŠûñWEÂzøßD%%©Cí…kµnR!\ÈZ‡"廓þ׺0/Ÿ.kþ=:.Ó'ÖOÕã8cŒ@wJåúiZ°¡Afl§qU2£ô¿ÆVCfTרj{5kE d™xDG EÀùëöMù3Ð*iÛ&|h‰„Ø öEf pŠ@f v`nb¹úƺ5s1£’Ëêè„ûáŸÊ*R•ÿºñ¹–­l YÈãÖ–­(BƒÝšµÎÁ§Æ6ÿ¿÷„†^5—†T"÷FÏCnªð+Jø‡VI»Ø›ÔAÒK§; KÌí E¯ÌǨQ’Ë+½“-1§ç¾ôK àü.G€Ú)y¡æGb¾I¿xš7Ñ=®8äÜa–ÒAã”Ö(Z%í3’ ¯êäÑ^ºN7Ñl½øiÖ$u½å›BÇÝÇòú2àïÔý¤ƒ¶£†­ä wèµ!ðöj2Bš˜TbZ÷€ÉòvÿÆ‘žE)ßJ‡±¹Ç!jÞDb3zë2øzÔtM¢¯ûx‰£Þ2ЀĨ½Þ„Ü“z8š $ó#Ž2ê×Hð[R ƒð•_ iµÆo½óòMæï¨sm4ÿWH”’¶¢_<#X d`AûÓ)_²9j¸¦ÍBH ¦RÐÈ )5÷¨„n_½7:cîÎH¶VžJ ÷$$Õeòq†|€à‚b˜q’¸DÓâ üŽž´Z[óq"æAÆ‘0ðg$½"âŒ`ª?é=Û•òY…|9àe,)õ°B9jî;7%õÉ`³íÎ¥îü{F?˜äÃGê·„¨”¹àxŽZ®ÏÃ7oJãÍ C”¯&Wiž:¥æJ ÉY"óÛÜlâ¢]%æ;õ 'cµâùiíV¶Â]¥¼“è!:¨›m¯ÆšÑhº²¡òpæ·dnnH7:{$]Î_—Ì ”7#"x¢!h$܈‰ÂÊ{Ok®ï-ˆ'-nRJ$Î<¥L…0¿zÚjÔ„)¨G«¤={Ò¥¶oÛ*¬™ß6º˜}˜¦ßk_˜Ð'1^~:¹TtûÅàŒŒãþq!@¿U*siÊ=?~DÊÇü¨ÝLðK3yó&ýX€VÓ4õÜÂx¤A…Ͷ Ø„%R•T›f•{bZÿp5EZòæÏh•´]¨´DÚDŸ]Åo‰}ÓƒAÙìÊCžC×4ÚÅïÕtTñ[r|ónÄðhM|€¶ß˜±VIÈŒª@«$dÆj:[pwg­2Ì@ 3Â祻3Í;€s|¾“<´DBlP3#38E 3û|nXsð‹x„uƬvV'x©ºÎXo™VÊ›•»µj\Ò´4Àjg/Ž~A8À–LÐÞhß÷&éç~p4ñôDõÈöòVçl@_pI¿>¦â5&»nóuÂÄ~ÖZˆ­€Šú4ÌÃÀÌôÃ+¹80Šñ2HÙ C®t:Ñ3Þ?ÑSGŽñ¢P Í;)öBÔ\qœ#]v'(àÝ´e e¿ê Ú´sš¯lFK}šñÌKšÜ7Î kø>…i-ˆñ&»×XÈiò–»‡½¬ÃÅ¡b^Ý̲l­>¨oý{1÷$>+Ýؘõ¢ekÏ!Ú¬œ¼&ºÉ{h«-ŽŠ»­Z/o±û&$g#xåÓ´'·&;†C8E 3ˆ­÷&{ ´jFfT¬ U32c­„ã 2Ì@ 3È 2Ì@ d™Ø^T}:Ž–ÊˆUt†n6ÿÂK„Ì(‚Üš±ß9ŸëŠs)¿d´ÒñL!Òîq—1x/6Ý4w-âåzÔÇY9Ï û™€d½bŽæ?ýQNáiˆ‡SMõœ/šÓ踴?E èúra¹n hÆ+|¸tFv4k‘?çâäÓ7¤ké¢&%q½u‰úXm¢>V» ¥¾:ÅpÉg+â1CÖ;Ú+ìwó(ô<½”ƒ(hjé  ¯žúXm€0D@a(É-†ÔËñ2fdþ¥gL<„iËmÈôT;IDAT8C²„§ã›àc•'_d¥æ(b8>,9„ãŒñþññ8+0A{/r.Cý®rÅy%«T7ŒØ$ãçšRŸ­ˆC¤3º‡Ùkœì÷¼%ÆÕ@=( ’.xcUÁ©Õ¿‚„©‘T¨$q™1Ñ?a•÷OôOöûÈ”ï“å÷Ì Ÿ|q2?¬4~á™ùÉ%ÐN¼@÷á1ڽʒpÄFU‹ç€òû¯þÏS¾þý¯ÿÕ(>TPjñ\Åé‘&3ªŽ@‘ œX"d™@f ˆ}ÒYk ¨Æ 7^DUfà&g d™@f d™@f d™@ 3Âÿh±÷¤OÎIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/duration_assertion.png0000644000175000017500000000622112032647206024772 0ustar ebourgebourg‰PNG  IHDRÈÔLTÌ XIDATxÚíÝKvê:ФVfDÚo8¤ÍHh‡áÐNÆt‹z^K¥kɲü7fï[²eÐñ±½ÿüü¼À(ÿш"ˆ"ˆ"ˆ" РРРЀ(€(€(€(€(U>z—øüüL ý?ùG‹¡þ¦õ…š »¶Éß㯶›»ËE>ÿµèÈ~l/²›€\$Ÿ|¬6.wzNÿ›ˆ¸m EÒQ/|Ó 2qI<^· [Ãh(Ì®’°l‹] Lɺ6 _{·m» 0Ñzw×ãQ/Me*“›ì(Ïß ÷™[§ùÍÓôbTZmWUÍ’]µ õd_jmyMKï&Àq¢H<Nú颷Y¯í„>­³÷¥š º“Ýxš\¤r´Ý|⻕4^EÖ¾³wÚ· ñU£ônÍK‚ ðjÆÿ^¤0bVF…qnáF÷ ?k5ÑuͪðRºyS¶p®ÝØE.R3– ï*ï~Çã~¸Õ¼Â¹ïæ¥a©µy½Û¶‡ÝØ i‰w}}¨2 éúÑI劳dQåmh]ÎêÚ†úK[Kï&À:ÞP¬‹€(€(€(€(€(¢¢;Õó(÷û]¼¬Ëåòûû;>Š4UèG€t½^§æ"r ZÔívs Öw>ŸkûØÿž|;œkz$§Ó©æ¦†»ë´Õ_EO@`·Q¤5…øÄÅÇyÿÛ,¶L¯j‰½^º €)|Gë9¶ñÏŸ?ñð?«Úqý£†·g‰Ø2éMSâì$<Îö®U?ªfÏÓ[…ñÓ8‰‰_m­ÞÊuÂ2ƒ²lÎTYØjq¹X5IÓ‘øiâ§Ç!6„Ç̓¦$]k^!?ˆ…æq6{H+ÔSÓnyƵ8×F¬‹¤c} ׉ŸÍ»oa08ªVCvœõ®Û»=#6Xäž ibFú4d£ëYÚ 7Àã=Æ‘,-|sÛx©(ÒŠñµ©¡Ö¼Qߺò³PÆל½èT.xFÿ^${+~h`¨?¯Ÿ7„´¶!dÙVVÞ6€=æ"­t$¾>´†¸’úQ;=Ù‡ïÂ͉ì]a`bŠPE«¦Å…6`žóéò ~¿ß{§(YÔívóŸ¾+ûúúzŒ½×ëµ7øÆEï f©z$Sf<EÆ8ŸÏ§ÓÉ­Qd|.â8ì“û"ˆ"ˆ"ˆ"¼ŠÙÏÓéä` r¿ßå",H@` î‹Äÿ¿æS½[µŸ‹”BH˜}åùnk;ÍEZ3ãÆçþi‚Òš‰½UX³@eµa™ŽÖr¤¶ÌE ² J<²gGùÂ…¼'^²Õö™-ÈEzr”®Ð’}\¿@oµ]›‰,à r‘… Ñ=¾&x‚\dQ#ÒˆÖe1‰À.r‘Ö†5OöëÛ K¶nþËK6Ž"q ‰Gêlá\YHMµÙ/€ù^ÀjÞË£íý~¿\.˜mп1 u½^{C€@`ŸÏºueú߀g"ÍÇæûû;”|}}5%æ_mØÒÿˆ"ÿ?ÿj…flz¼ãÏçs×épX&ÿ5FaàKô®[Yá[2툆íBaX¯/Bÿg_-÷¶—Ò®èݪmûü¡·· õéíúÔvô­æÕxë˜c<œ;§¡«96ñ«… ãz²uj(ë+ܤŸë·¡°ÙÛöùÄ?•-¦#rÍ{ì¨oWQddnž>.qåÞ:T… »¶aâÉÂÐ-ϾÏÖéùÊXÒ»=Ûöy«õg9‡ÿ T¶XÙP×Q>ÌÛU™ù,lÜái]ëŸ^ጧó»ÒzOÙ‹mû¼«õc8Àa–g<ÊÞ®Ë_$\ðme£M•/—SÎ)ï’8Q]î¤r§å îåþV·¾J´mŸ§­?Ý8êaƧeo×gÊE~"[»Íû†¨ag9­èºI¸h/ ÑÒ½yŸÏÞúšÂ¡²¡òî¼òÛõ8Q¤9 ‹¯Ûœ|õžŧéÇxÄ;2ûF™Xaö¨—ß‘ ½_çêÿxó²•=êÚ—mûü©Ä«}j6¸|¿êØo×g÷^³?ÁétʾԔ7?Óm¤?¿zº³¹•ó”ÑÿøIÂëxž)Œü±éͼýýÇþïaDR<ú©ÿxî\€WÎEü3<ã‰"ˆ"ˆ"ˆ"ˆ"Чö÷"¾üÀÈ(âÇ"d¹¢€(€(€(€(¢¢¢¢ˆ"ˆ"lçcôšŸŸŸñÓšùÛkêlêi*]g¨gЎ̲ Ó·à…r‘Ÿ¥AebX ÕNo›ÛÛöÌè}â`VOãòVa|Êß*É>Í.ÙÕV6eK²{‘ÝÖZ•…]aC:OÕ­ûýÞ*ùçŸÆ%.aä7O W±ÂèÜZ±Y+.ÌÖ“]½2@f7¯\˜ 3áiÚ™;t¹\jf–ú¨¯.~:qÒªú‹`…eêãÁèd+½°–-z`¼;»^¯sæ"³DŽ®óýÞ6[§Ù±ʬ‘À‘lóM߉_Ášw3²â„£\Ê'æ(¯E²QáY¾›”€æGšp”ƒ_X@?Zck¸çQ81oG§……%kNöÓ_œ Z½k­úÂÂöLÕ7}ï÷{åÍz ~Ø÷(Œ'РРРРЀ(Àr>tÁ±Ýn7T:ŸÏ¢mßßß:èõûû{:†þÀÜ-þgÜ¥ Q€ñDD¶0øîzöŸÛ' #?eöª¹f¾jM˜}°É¡š¥õ÷÷÷?þ´Jšqy}! ŠŒÏ«1q\K§™²IÓõN‹ò¼BÈ•ð¸¾`Ò7}›Óó&´f…zKæTO'kŠèª$]·+'¨L²¯v=.dÙà7¥°k³{瑬Lãš¡? $S¬q_$ÌGÛ„ŠÖÓÂi~¼d<€ÖÌX^,~µ²Âl8‰W¬/¬ß»l<.ÔY {v—‹Œ'•£^a™A³ÞÖ¼:ú:UŠƒvÜÞµIÚú³_mä"ÃÎ⟺×âxîKO±^hàȹÈ1BHšWõ^š[­u€gÊEzoüUHº†ïl–0%uhÝI[——Ï”‹„+>o}_+{vñŠ]Kîí\;»y Ë Å½:cçÄßÚ ·ßë ÞkÆ ûý~¹\†þÑ#{p»Ýü§/Pãëëë1\4C}ý°ïPO`<³Tß#'5ã! Š0Æù|>Nn¢ãs,Ä}–ÏE®×«Î`L¹\.z €‘QÄ…u²Ü@@@@QQ€=ú/dpÚ÷¾äXIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/bsf_postprocessor.png0000644000175000017500000002332412032647206024640 0ustar ebourgebourg‰PNG  IHDRzeKµíPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<Ï3äüæ+e€J`BH@z@zÒÒ€ô€ô¤¤ =éPª Ënþëðÿ°:ùß‹=ëôê» 5êjÆ|.Ñ%sUCCÑâR‘V%Éø«m³£yAiÒÜ¢9¦½ØOù‹Óãí5E2c?׋jï¸*P¥AºíR¥Çt#'^H0éEéZ½ycõÌlK®¿3& ^mØ¡T–$íAz Œ^Oª§Mög“jÍTí DÑ\Ò ’ÙŸP:kmdýb&“¨¡Ñ俣­"Ts#/ÇM7–êÚ(IHµ.3[ˆ¬WUµ²¥d(Så´eƒëY“µIbeĉ—ÁŠ]WÕ6›EîåÚ6œ¤GDzÙ8ñ1ÖJ‹­¶z¾x®ìóôêEÊ~ó[žè4S°¯s’Üì¢jþ÷ιºéá »L”zž¯›n£;|Ôþ¬––ûùš«Mz™¥!>çü-WêÒÙiœ£GBzÊE=ûiªeb©o¨Î­žÏOôQðÖŒKù¨™’ôûêÄóQç¼Úç)IÄü_lÒ_ýãLóÔ³}lðŽÒŸ¼—>ž& Ÿ»aI>m¡ýÁüöûñ¦\´:4Û̹ÚÌrÛ?—qŽ•^©«!ógÉhj„ÆÚk‹$3U9ØX¹N.9è{Y?¹TgýU·!ɸl±Yù»R5½5hβôlüþ¥TËÕ¹Nω߬¾úþñ!RÊøœ·ß#‡‰\”àÒûʉSôÈ\fHéÄÉi>¿²Xä«W:‹]f¨Ã.ÿT°šÞ!j®ecäDº% Së¶d:Ê?AÌÕ>H¿Ùl°e’eKZÔ2š­ôÎ(ëjÍbÆI GqŠ™^O®n¤\¤Å¡ßWK–:EÛ`¢Œ™n’ÄôõYzm£oÒZ$0_å 3\uã£71MŒ|!‰…ê®ÏÖ×û'×ˈ¥É(5ÆzhÙúm†¡¿æÃßÊ]“y‡¼uÌfÚùÔÐãÞt:¹LÇèr¶hÂÌå »taK%'Ý>^~XNð¯;ÛØÄš+ÃJíÙ슘q‚Gì2ƒlì2cb@,î4×j㥓‹M,ÃóJ¶×èçš·$üÛ;<áa'¿òøÇcâ:ÆI§Ø*#ŸôYH/£aâ ï1Ë{ÔÜq¹ÎÊ.Mͳé¡ñê¬;ä5wN§³VG“Ð\|dÌÞHô«9µ5auëlBªma=¬åÓÈz•%¬¹ÊHVzËGëCÖÃäø“·”2jÚfùçzNÎÄ_€ûe®¤ = =ééHHÜï¾Íˆ£5ÀAã;RLzäCË€ƒ¥³x¯Gt¤ÔÂhD°œñí¤W:ËhFP6G¾ìÄe¨a\á‚ûH@zàÑ"ï2ÃMŸZsØ…óü×uá‚áµa)/ý…m6HOL­%ç¼ êIýkД¶f»,l•Þx€Tfi3[ÓhuÓõDÊ!dz.Ëåçã²Ý!•Ø#êãíÏyƒæÎ_Pº@eã…‚”DbððKo<Æc¿ýž%óôë7›ž¡¹Ög_|¡÷?ÿëç?nÜ©¤"C¬Ö-ž¿' ÜZýÿ¶ÐM>"Òsô\g¿?L…“üYäˆMôÅÉn¡hã|Ád³ç)¯¯Ò·l•¦¶áÂö²½°e%”÷hHÏ6¹Ê~G{¦]t–?C¹ߤ7Þ ¹èÄ­ø\Ïî|1A¹fÑR2€GGz¦†ö{•~?”¿¾†nnóȧÝÇÃÍ y)1Ê>~®×8Aü)}t´ÒÿÞpÈí.çKÛ~Þ¸½^dþØŠ_­Ü)xâ‰ã£„oƹE2ƹÞÖ®,üÌïÈô SbÜ}40<} î+ý¦)ܹʧe¹Ó 1|‘šë•Èܧ *"=ç—h9P¡^-ö@s=€Ë éé\f” .|ÁŽ `Àë¥B²Ía.#:ØFwÝëmÜ©zì7§WÊÉÿìÚܽôVÏÚM?™o#Šx¼!"·;áóFÖ^\L°ÅXÀ‰.¾˜$)èõ„³lÍZ`!éáqãi¿×ØØÓ-ÌÒ¬Ó¬ø9éržâ÷¦¬·ž\ÿí_Ütž=™i¹µBÁÓΖ޸X3²Üͽo]ý+hK°÷¹Þˆê?û2YMw9%öc¢4[·ô¤ø‘iìYŠÙ‰tÙnÊeE‡×ëM¨ñŽï$‹8\5òûó¤ò3ÊÖ=&šMš—w“4xÂó6Úì½×«¥t- Åe%ªÞ6Ga\dýçëñ3ãhK°÷^Ïy).'ÝKd§dœ»#ÅBÑ –FeŒõ‚þc¦f¦H\f€=÷zÕ¡ùªƒæ‚ÒÜv.ÜΫ«?žÉ9}·^nk;§—:ј ö ¹¸}ì‚!Áý6× 2s½Î»¶ªÂ|ìEzð©’æzÒÒ€ô€ô¤¤éÉoz= onä­ÓïM V”LJÛ~_WB‰ùIث܊ҫ£§Lû·Ý5[á[ƒ:”bûYºôfMòÒ÷»Œëô˜Ÿãwÿ“=i9ã˜ßCÊgsËÅr[B ÷º×K±–ù.’B J|m  ô0k ¾¬ˆ¼UÈønûyŒn"ðb‚²þŨÚ±±-I7 kì•»ËXªå†E|‡¬äш.ú²ZÚ¥Û^_Š•ô-¬±®Ö³àçwµ¦ü‹k$‡=ÞTØMÝ x¼¬8né±ìN(ûWóIÁÏÒM–Èï׎ğ½­ [§”™òúØxøžêFÐíÝ;éÅTM'ާØËà)Çc"¾ÖîRG(Ç`°[ï#ŽÇ»xŒî†ãV‚vÃͶQW?ÁÓÍJì.%è…N9Z{£üÕJ^ÊØƒZœïJýƒ|lO¶Œ¬R°ÿñÖþ*îŠP´·¥ùT°ðPZºÛ‡"Sg2”9S»ªì_Í<ÝÔÙ×ÊÒ|ЪÉ@ð‰¼ÞN”ªmŒ® ˆGÜbuU[ì_n?àŠyØ‘¶Ã·RÇÏýÔœ$›$NN­*Ð¥#´nHÝɽKyŒîŸ›$û?oÙ§¯þ%ïëÈ–±»lÕQvJmD/_ä²ÊËC+_óíH‡×El¦S¢ÿxq“üö/x?ç’iƒ^&6& ¥×–~ë’ç(Òô—ô÷ ÊþÕ|lÿ²8’×Õ¾Ò±%¿(3ál:‘¯p;jú?4ÜH¶Ÿtî4×7N™^é‰ ]úaÇIù]ã“$¢ssEÏŒ‹ÎÍ+ñ¹ó2ÉOnÙ&‹ø]»K"vWäOÓ1ëËܼ<|?Y-mìÄL“fŒz‹šÇ†h¢©žç`+ß=¦g$vb¶‘F6o|é%›º5߈f¨ªÒ’\`±Jj™òßôÐU“’4‹Éö—ø®—4L¶ë'6irHÊ??YsÞ½JmcI2O=vVœTuÛk”½BÆØ]‰uÝáTÍ“W¾š6D.ïêmŸ®ŸšÐ<%ú¼È•å`k‡™èF®IêþÕ|“CrþÔ0c*GÆØÝ:ÖçY(¢:œÖ(y´+/_M[E™¨aêx´ªA¯«’é\År—)U´áûï·hûWóY(Î÷h蔬&ã”ÕsÛh=íöQx¤áýÑU1¤ZÈã^K¯}&èY™m£æsaߌñ1>žvR˘f é:HéÓ±¿cº¼1±Ô o³O‡jØ)v^]ý¦»[ϵæs«¾!Äæ)‘G£fuÊ©¥uLø Cªkö[þ©ÖÜœðjðÎtî•’ÿ09'}>o`¹éæ­¹ýözˆå ¥W†yÁ;o¶tYY¿åôY­»å)“þ«¼§êv> ËK„õV`®¤ = =épì¯=…Ñ¢ (΃–-£‘AŽ|y.¨aÌõ.3¤À}"=Ø_ôzà‘”ÞïüÞÛÇ“<ÒÑï}›²þc†HÇß¼¶-³´ãa„Áo(‹Þì“ôþÔqèP*Ä6šF¿EÁk†¨Å?µzŒm[íkæ7¡‡O7µœŠ¡)Aylû‘rg2²&"mf’il†X´Î”ضFuW‰G4ZeŠ6“ìO¯÷ás)—p#5+N¤’!>ìÃ㩱ÍÄýs7éØS…¡…ì¹×ûºrûoN¡—‡HD:^V¶)R“•m?FC‚}ëõ$J'ôWut’GVÓÆóÊ6þ8 %y¼Z=Ì(±Ü]¯Ç54ï_2ÄU¸¦¢618¹Äƒš•mÓAÓ§WÃ+³MhJP%F¤y6ùé¨Å»=›éÈ®vqç (FËò‘B}•ø‘rK쫯¦ o¹jêó.êqÙìÏeF>Å#?Cûƒ–^ÉÁ}Ê "Òs‚Tª×C“‚ÒÀ+à¾èõîÞ‚€½HO’&js=ééHH@z”Ç6·ŠŽIïþEiªLF·óHEZó Ý[Ü’/µÚVJ22$M¬n5$Ȇ?~§®Ùœ ul_+~ød½s´¤ê¥ƒe «Ã¦™×A;¤mê0ïÞÑjuÑi}À¥W\_óÝ—VJ+à¹þí¶ïÛ¿jïß%Áü|AÒËÁœñ®ïmmiåtëÅ–>Ø’-ÿðgÚK«Ø³å «Ã-}wôCÚ¦»¼UmAù¡”‘ƒRºßm  ùۺݱ€']|1©úÖzù;Tõ§u»—}” Üöúyàä‚xï†= !µÈÈ"[¯{áºÝ oà¦æ{›ö{o6tÿZቛ ,(ñ½jY^µ,u;úõöŒäì8ß?U,ÒÖ…Óïã"Û½äS²%¸ÇnféŘ^b£„⯛TÒå–×ü á˜7çÉ+JRIÔC=Þ»ù½Ñzk…${åS}·”:tÔ!¹µœü:oá Ÿ—{ûVÄ&é©~¸¢áhS÷»µ»4[¢MçÙ“™–[+ªoí!þþÌùÓZ;h¥ÿ_´ÜaË+[šOEÔÑÎ>4xá²±º¹¿Kó½ tqïÝœ­ðÏ]íoVÏÕ²œjYê>vôë]' ;cú?×~×ã*Ó‹öþ!5MíÙRÜc7Ò÷Ápõ IŠ¿îŠ’.·œjéÝèÒAï¾¥øë*éØòwÅr³,z74ÿ\1«Ôü}E=Äq0ºRáçÔ“x'hŽkÛÖa3¿Jbm¿,k >½“iiNì!ùÀ}é¾». ÆèkNÝïÖ”ï}«øßê·”ó§e-ò›ñA’þASL–§Umö„­ðÂÕ J%¶¤úÞ6Iƒ4þ럨þµjÙgÉèŠ*ózˆ²ø>&Öýz%Òüåç³ÉèÀÄu¾hîøø_É}Z$“¬'建m©{LšýLõ×éŒËZúœ'oÎß—ÕC=âY¦Ÿù§³JëÎä¬xÍ×N–Pã~eå8›ÇèD³Õd8] %øáòîâåûÝæ{ß*9oêí¦ûÓþDúdýtH“ÞkÜãVÝG–;Ìê^¸Ä½p_»¨úÞÖžŽžÓükÕ²ÇG³†sñj®,± ë.~½Y“Úë}5:u­QI)5~žxa£xÃèûâù†U]õÚÀ°¼å˜Ç¤‡h±ö×ßÏ%ŸÉÅþIöRê°u¿¢-Ù,7âgƺezX/3”ÖÕýnó½o9ªoí8]Îó§ ­q¨­Íçoh-¢ 51îAk¡HFs¦e#í/4ß[ÿ1j¦jÝ¿V”m£õ°^–=W–_ÙÇŽ~½†‘«úF‡]9O‹î„d¢Zƒ§¯~ÅHë¡Â÷Öf„rêÒ—sé¹./Iõ÷¨Ç!ú³”á]n¥¨zYPVŒûµS’;¹úž25±=ȼgêNÒ3úÝæ{ßrTßÚæñ§óüi—f}‹WÚ•‘á5Ì…VçU¬þKþÑêWŠ.[ño§íšïmÛ¹ÀÂtP÷¯e/N­¨vȼ¬÷>þwjY+lSí;ûõÎêÓ¾Žœ Ûgƒ·—?j1xúꟓM‡¹s¯ñ]eyÂW`x¯øçRëáeƒ¿oî8x‹M~n(ìJØ´—:öûË™ïpûè¶™€wÊE¿cïã›2LI÷™½~Æ\b—Úœåä^°Û7Ÿ™ª¬ä±Ô:ˆc)h¡|oá—þk§ô ‰mÏ~¸ûÌÂæû[`_o2T–ãi"²n®n5WôÔ$"iI©ƒG’»o›ånãVá-œ«¡Ïi¡[zU«Çãû]`’ËôÚµÞßKéuèÞz<ÞÂô ƒÛ¤ = =é°Ïà.ž9tœ÷RzðÆ9à‡ *üp.3¤‡&÷Ë.ÌÚšJû"½œX@vëõ滛τJË^~, ; ¸ ” €ÇëSãðrËk¾…HÌ{,AÙ°×¼,"úr~¸ã”öy•øD´,Ø“ôL$QÈÖÝ1ømö¢¾]_Nµœüy‡¦X¯ëN¿ "úr~¸öO)0ØÕÙ¿‚f{™ë1¤Y¨m#”qVsÃúò§ÃDÿE¢4E©Î®Æª~¸Duü¶Ù¥úŸu¼qÁžz=÷ÿ‹Íº(öL¦‰F‰Çfå-ó¸½s$ÓSoˆ¸\ƒ.ÛÐ41Ðs4f{ëõ”>+L®ImMˆš¯¦úBÊ©W÷í·|çÏNu£]Áçz3möèÍœ,¼I¦Ü~ѧúá |OýÈIÕ¸Ì{œë “þ}Ùg/Ø:·lšvQëØr›Ñ·}&™v¢YÁî`D¼qA޽ûápïæzTh®w÷ÀTFzðÆëõмs=pŸ÷zðÕ‘üpA…¤‡ÉÀ\@z@zÒÒw/=ùM¯gáÍ|?ý¾ã”rCò‡‹ž€ð44¦JìöÉ š¼Ä»˜ówêCÌÇCE±ïp—.½Y“¼ôý¼'°ë1fÇ•å¯}!ž]>º›ƒMy¡jù;µ¬üßaœ°‡»×K)Ž­;úÍzGé˜I镲aÏBPÄä´Ü'6íææ9Kî Å×ÖíöûsÞ¯Yß"ÚU=tuÿXÕ畯÷ó,K‹ªS¬ÇŸ~¸5£=8_k¯§|ƒk«¦µ×j‰‚§®[…=]u5N;N̪>®‡ô>)Öû©üÂÈH’•"½ŸdOÌÕöýÁœé›ŠþDzþšèƒÿÄ ÖJÁÁëÜ{)ªä Œü!«äÜáKÓ´ÚûiÕ³W:‰êU‰DËó ?\+­Û _2?Èì`Ù¢øá¶¾•:~î§æýfu¢<ö;©HO¢—Éj¢øßŸøË7#TQ|m‰^ç½¢âýš$û?é~²š¬êóú]²(;µªÁ–Mì-Ѭ,&ñ5óÍî~¸¦WzbC—~ر£ß¬N–žâƒ4)´ïŒJ2emãR6>~í5Ï\U\œQ’Ÿ¤œ‡®î«ú¼ÞÒvª…ùJÚ¢Äÿâkæ˜üp‡ÉvýÄ&íâ7«ñZ.œiÎ$qO×j©ñäÌèÇ˧XÉ!YyTð“ÕýcUŸ×‰‘lþ>d9'qð°_føÜk¦*&ÊýfuÞ£DJIÆggvJÆYNÛx߸MóµÍ£†ÜâUõ“ÕýcUŸWu½Nˆ{·Oˆ.Ó‚óõK¯}&èY™mÛÙoVÇ>÷Àt_â´ sÁÕ«N2¿K³æk›GóThŠr~²º¬êóÚxuùŽRš&Õå™EᇻÎÊe„€ïn`{ù¨½qŸëgØi$zŸë=Øs½½š’^Úõ·ÃÉð~Ko\Ÿ+Æ›¡¼‡‰2¤W‚s²eßgcwå.œ­‡~®¤ = =épo®pK–Ûpà~¸x(( üpA…€.Àe€ôÐà~¹Â¡>ónñ߸ö“úî]`ïÒSâ}¶j,RÖ÷`ÀUâåg!¤Þ¶4¸Æo÷xßf›~o8æ]HhiàMös®=åj:¥^O„xÆÊ\wÇзØÂzëhïF×HXI³Š–û0àºsãm„ß宯?Úz¯±ßéЀˆ“pJâgSI“tbög®§ ó8Gõá+Ž þЀ؉™ëÏŽÎ+Šìçì¼1 w%=ãpüynD–'ˆ;ã¶lI“sÆ`¿æzvJ¦sáõW„T7c…iKßÈÕÕ5>úÂDS}A½XÝI?î<áeM,Û§ñQþrܰþ ¿Åß7?ܬÉÚ;uvN QÞ¥Ù*µ¿þ¾Ø.)©U¿\ÕïVItøVÎõV~y2ÿê(;vÅCwAË_'ç‹Ëê,eÄ õ)ž¦Fqâ­?5Ý?gðÝ]¡­—‘“Ò ¯ÑÖî{ûòýmæ¤äRüâD<ßkÛÅÀ×乯ŽkëvE°jÏ–”Þ¸Ok÷§ë§Æëõ"µý~Ã6JYX7_G¯’,ekªà\OvKñÃå]I㥱F1~4C)Eݱ;>Êùåª~·Ê ü=J¦Ü>QVè–Ã9"®¦Ý\~¹Ít^=ßÜWikŠ$Å(*꣖[ÆB‘ »ÈpŒõ_ã­ê»[“_WeðOðÙÑ×WCõöµR4Zð~Í(¥ùþ¶æ£\6Ä…N~»l³½0Ͷé¹7°qŸ£U dΫ—PØzH?nõáÌF~A1ʵï£k+/½’üp¹÷-›íÙLl²æ3v ®‰ÀÏÅBõ½(΃IDATê +\Õ/Wõ»UO*_×Î˺yzª¾áÊ)>éR·ê›YÚÒ.ÛliÆé]Óso`ûÜJnŸ®Ùoù¦ÄuV®^ŒÅép Mu¿aÚ¶ªoøÇ;«É1÷’ge.9½I¶{+½=ûá^>jsVô#ß­«öôÐÓ2yšlÙ§k?{°>^\°Û7Ÿ™ê0å·Ntôˆ›¯¯2¤wÛ|Èø2º—.¡^¹{—úM³;Óã»%I†3Ùº¦êKz‰Èº¹ºU›úy$¹û¶yÇöñÛüÛŒ=[1øáZî©?í¡]ëS4Íî” Öýwù½X­…G¹‹Ÿñ=ÿJ·€ éH@z@zÒÒ€ôb²Áw)“·N¿oþíZÒ; –O·u»úîä­›Ï}!ÿ~?ZÒ; R´NÖù.ºZ¸½$¢¥üÑR°­ô„jêah/œºþX¿ Ó®Þ˘¾>î&ØT—Iš TZ'‡iú÷Ãq²W+ÑRG• vZ7›B|èõóc×®PÿÓ4BÃùmg¦ šÒ;@d{û'´A“$\úÊJp€ôŸû¢©ŠjÉJ¿Îæ‰üš,4F2.30×;ÚfRiö³aÇÕ¸oÆ—bþú´ƒ~3¾{̲Ø_gÈG7®.Jeϱ (c˜³`À­ Ýh‚ý’¼Áà,¥×ƒ“7ØwZ¾Ür‰ ¨L§é{BÒ÷ €ô¤¤ = =ééHH@z@zÒš@zÒÒ€ô€ô¤¤ = =éHH@z@zÒÒ€ô€ô¤¤ =ééHH@z@zÒÒ€ô€ô¤ = =ééHH@z@zÒÒ€ô¤¤ = =é°Tm]u$Œf•žóK´ ¨P¯‡V˜ëG¥×댣E@%¤çC{€ÊH³<€¹€ô€ô¤¤ = =ð@ðÿD£›p¥xa%IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/accesslogsampler.png0000644000175000017500000010016312032647206024405 0ustar ebourgebourg‰PNG  IHDRe>CLðÙ[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí üÍUþÿ“$*šÉ’-YBHÙÙ"Û/š(Í”2)!…!R£)Æ2¶e)CB5F$[–”½PvÙb’ÈîÿÌùwæ3Ÿå~?ß{ïwÝÇ×u>ç¼Ïû¼ÏósïçýyŸs>÷dúóÀ1—é%" " "L këæWð/X@%" " "Ñ ;ý7¿ùM¦£Gft꿈€ˆ€D$€¿¼<¢€ E@D@D £ ¾üeFÿ¨ÿ" " aÈ_†¡$ŒN@þ2£Ô0ä/ÃP’Œˆ€ˆ@F' ™Ñ?꿈€ˆ@ò—a(IFD@D £¿ÌèŸõ_D@D ùË0”$#" "Ñ È_fôO€ú/" "†€üeJ’Èè®Èèâ×ÿC—^9räÈ›7oÖ¬Yã§8¬¦>úhÉ’%EŠiÛ¶mØ:’G þr„ ï¾û.jû÷ï_±bÅpúSRjôèÑ|ðAÞ~ûí$µcïÞ½ƒ Ú¼y³m¥zõ꯼òŠ=LžÄž={Ö¬YsöìÙäiN­ˆ€ˆ@†"Ö_^¼xqþüùͼyóÒ„¿L¶Ù§OŸo¿ýö†nhԨѹsç¾øâ‹óçÏ'[ëjHD@D „õ—k×®=xðàoû[öÿZ¶lÙ‰'®¾úêd°/õ7Á(,Î;Û·o_µjU-[¶¼páBê·\Š€ˆ€„'Ö_þûßÿFé‹/¾Ø½{÷3gÎ,Z´èÞ{ïu6³cÇlñ?üð‘VÍš5{ì1#¡hݺuï¼óÎöíÛ¯¹æš;]»vY²d1µhqõêÕp˜'OžN:Ý|óÍ 0ï[·neœ–¦éNáÂ…›5kV£F [ñ“O>™6mÚwß}W²dÉÖ­[>œû/ù ]³2&Á—_~9ò›o¾1þ’|rL)±&¬(Ú½{7S›ŒÓ>ñÄW]u¥~øá‚ *T¨p÷Ýw7ŽáÜ[n¹§›;wnF’?û쳂 þá°¡¼‘/V¬Ø<0vìØ7æË—ÛÐ`Úò¾ᵪèõ›o¾‰mf¤Ý«A9" " †@(ùóÏ?³¤L™2·ß~;WçÏ?ÿgæô—L›½ôÒK E*T¨Zµj»ví2!mD(B'#™¸–Zµjá-fΜùã?öèуZ¤GŒ‘-[¶{î¹Wôõ×_ÿôÓOÆâEF Ì;žçǨ)>2gΜŒ0ÿõ¯mÕªÕ#~ü8n{ÕªUt¢y`~ÿý÷ÿùÏpF›‘G ÔÜ”œ:ujÛ¶mþóŸÇŒƒ¿·-ÚD¼V8à4ØVWBD@DÀI ”¿\¼x1®¢AƒÔä‰{Û·oKiÈáÿÚk¯q}/UªÔ!CL€Hfä"äG…^Š(êÈ‘#¼s‰g¼—Q_Õ+W®Ü±cGÎW„"§X„4n’x‘÷Úµk÷L$GH7iÒ¤:uêËšõAUªTéÝ»7zˆ•XÎ:<ÿüóø6<ߊ+p‡õêÕ3Â?þøŸþô'nÒ¯ñãÇû­*Hþñ¤ïÄyxSØâ¤§NŠîÙ³'wxÍ\¹rYù;wS>øàƒè1÷(Ô¢ +`‘ñTa'+•4´î¢§Cðõü%áHRÿ®»îbì”™Fƒ–Ä(¤q?v4ÕxˆE¸ÛÇSëÚk¯åÒÏÚÎìÙ³ãà %óÖ[oå÷Ù¯_¿-[¶¶¯EV&r‚(Ðl‡:Í&¡Û† ðO¦” ÐèÉŸ?¿Iùùj¾é¦›ðvtŸR"Åâ}$>’㱌¯rO@š`Ý™÷òåË?úè£D™åÊ•#‡ß sHSÅNyÆlÿûßgΜãyt„"†»&¯‘Áì®]»2ÂLs^ ÊpH8¾ÄçáEAwLMã6ˆ¥žð‹¸“o<™S{„"†$±©³ ñ%‡,4ŃΞ=›yD^¸®nݺߡȩ'BÚZU¼xq#†çÀÓó$EL šÌ¢E‹FPâ*ºîºëðsß8KMžca–‘™H~‰e6U˜uÖeRÓâI0µif7í‡S˜´3ŸaX†d;æ’á02^#OÓæ¶Æ[]9" " . ûKó ×V{ &MEöå—_å7†^®Ý%J”p6¡ÈŽ1²€ÈFrÔ%ÊäŸÁHlÆ 'OžÌr\F)#e1r‘³éikA˜q™ôÅ<¶xýõ×Û`‹äùN[úê§#½zõ2cÈL[‘sHuVÌ2ËЫ™õ­E&·ÔbÙ[72^¯¼rD@D@"H`<ÖgúôÓO ÎìëÊ+¯´Jð¾µ÷Ýw9j6ŸD„"§˜oÚZµiÓ&#`‡|QK|i"<–ç°¬†»føŒ˜+44™Œ!;óY5ù(ágI‚eD¨5.ÙÌì™(ÞÎ5ͱÞÇ,ª²Ë†ÚÂàuÊ+-" "™@ñ%3‹ˆÉÀìÈ‘#yv‚µa‘£šøÀùE(jӦͫ¯¾Ê¬SÅà·ˆÃPÎJo»í6–nšGJXƒjz¡È·« ðše;¶”µ9Æ*~@ŽÙ;ÚåÑJYìc|Ïï~÷;VÜ=·hÑ‚Ž°Çx&ë ­*¡Ÿi]u5Þàþy<y èС,£ýç?ÿ‰<±,ó²ÎgWœÚLãƒ_~ùešÃ³¨ýM›6õÖ"?^¯¼rD@D@"HÀ_rõÇSÚÕžV9ÿûßY cÄä’MÅâO!yá'쓈Šð‹,oáy V¬ðb.•5f1Þ…2K—.¥E2ï¿ÿ~‘šÖ#Yóœ 2Wà˸.VáQ—Y£‹0ƳBÕ>0Ê#’dâ˜SäñœÆ1§f“F†…`4ÛbGOt![uîÝ»7ÑÕTAD@D €@"Öû;vìõ×_饗T%S6;K/_¾œ$—,YR§Ndj5®Íù½ÿþû³gÏæ÷ÓÏŸ?Ÿ"Ž?®’2HÿÂÆ—`WÈO?ýÔ ½öÚkmÚ´iÖ¬Y¯^½vìØa˜uêÔiàÀsæÌyôÑGÛµk·sçÎ>ú¨E‹Ï=÷ÜŒ »eqxß}÷µmÛvóæÍd¢ü‰'ž0û3ï;á]ÕªU4h€¿±¥û÷ïïܹ3î³~ýú|ðùÞâ­Ö­[×®]ûùçŸ?yò¤©»xñâ?þñwß}wïÞ½ƒrl+¾ êСˆ¿çÏŸodh¥#ØóÊ+¯tíÚÕæ›R¶Õ<~ü¸a•9sæ«®ºŠü·Þz Vô‹ óâÅ‹F²cÇŽ0Çà{›•£G¶oß¾aÆlgmØÝÚн{wÛ/SÊ»o¯Q‹I¨êÑ£‡•TBD@D DøK\ÑoûÛáÇs­wjäŠß²eK®¼«V­²×q†jq{øË2eÊ|ûí·={öÄÏ•,Yrýúõ¸(ªŸ:uŠë;1+ ûöí‹9qâÄž={¼}gs3gÎlÒ¤ ã¢Ë–-ÃPDEü.uq9Äm5jÔðæ 6`Àœ ÕÙHCnièСx»ÿûßO>ù¤o™^h é¼yó~øá‡ÜpÇðõ×_#ß¿ÿ"EŠ0(ÊÝÀ_|á"V¼xq`â¼yNÖºÆB… a!-Z´qãFÓè¾}û† ‚ƒäæãí·ßÆõ>öØc¼3ÆL|"0zôè¦M›ÒâW_}åý=&o¯ÑL-¼/ã#ôNE" " –@"ü%Û?ûì³<°2räH[Ÿþ¦zõêE‹势nÝ:[Ä`ã Aƒ¸"_~ùåøÔÁƒÖPJXÉ;ÞôÈ‘#D{ì1Y¥J•C‡ƒâEp«dZ%®Ä¶mÛ¾ÿþû;ï¼³lÙ²4‡?F`Ë–-[·n%Æ-V¬XŽ9òäÉãÍÁcÛwÜÁì­·ÞºfÍ*â§yá¿ÍŸ?¿oŽËסiˆP’‡xK—.MÔ‹çÆG⯽öÚŠ+b­¸*Db07Ü4pë@)N±@èÁ›§kª´jÕŠ8µB… Ù³g'Ml]­Z50ŒÀSO=12Ê-‹³!ß^¢jÔrä”WZD@D ˆ@"æ/QAèÆõúã?flÖh$’7nËe%»²-Ýpà fcü%¾*N·qðàA$'Mšd~‹ˆRbÍ_ܗǵX…$ˆqÛÆ #5kÖY³f1†‰*š(W®œ•ôæ¬]»–€Ìºbîׯ.=úË_þB×ÈôæXµÞ½Æãk)%€fxvÆ ±æË—Ï+ïÌyüñÇ+W®Ü¥K—7ß|Ó ~òÉ'ľß|ó žÌJZ—óh-µ¥$à`oºé&ætEA½F&W®\NI¥E@D@"Hœ¿DÑ$WaØqÈàáÔ©S qxàÆ Ã¯˜Í;7ÕH$ÌŠl¢-e]Ì¿þõ¯?üáDZd2ÕÇ "Ÿ”¸jBL‚N#ì͹îºë𗯾úªi×ê$º6mÚ»ï¾Ë!^ßãͱÂÞÎì§Ÿ~²?AèÌ]B‰%1+¦ÃðV49 Và 'GœÊL'$qäL+ÉGΧõÛo¿Ý)Ôk§ŒÒ" " aüO¤¦þ†áG+IL(† ÈX>ÃJ§ò{kÄ9á(%èœ1c.ЛÃÊ\ Ó„,å5OÅ`-áòï~÷;èòÂ$o޳9“ÆlækÍkÓ¦MŒß2¤ŒVÿûÞu×]ˆýõ¯Å13ÚÌœ"wf¬U…ÄÙƒ‘à’QVcñs êb<Ê™%ÞuNaÚŠ¾ bzžŽ½ÿþûq·X唃·×N¥E@D@BÈd–˜IãÂl Æ3‘fæ’ïꫯΒ%KBo>¡>ƒY@o‘ÍáWþÂüÞ:}ÁŒ+®øï ³7 ™Uµs~4Ad†§t†€ÞkIP‚µKø~ü“K€à/ˆÿ#âtá㉧ñpNWj1b@Μ9òAi<.“p§B oN¯¤·×¾bÊŒC Ç 7ñ,< º9ãƒþëZbad¯ÔøŒÄêÁW%¶J¼]c¼9^ ½žÉ›c%®¿þzgË_¹  uæDyˆÅå,‘ij2†ì¬BÚbL¬Ü D¾GñöÚÕ´E@D@"ˆ¿ŒÜF,e¸•e®D·/¼ð‹`“Ž£0žtú¥YD@DÀH3þ’ÍÄî½’Îñ—;ŽÎXôeÒZòéÚ¤Õ/í" " —]–6ü%[`óèa˜)LSH iÃ_Òsâˤè¿tŠ€ˆ€ˆ@Ñ{€L:1b_v´~î¹çÊ”)ƒUøN¶qFÃØZréÒ¥ãÆc·K6Â4öë]D@D@$jþrÇŽÌ\V¨PÁ8K§RÆiÙ"ƒÍŸ~úivaœ>}ú˜1cŒû¯\¹rΜ9ø-‚QvBÆé²Ñ4ÞkñâÅ!eØÀýìÙ£GZïÛ·/îº(GÏ„ Ê—/¿uëVÚ%“]—q¢Ù³gÇ_²ý29o¼ñ³­l錃49'NœØ³gÏÉ“'z0BÅ—æ·[{,[ÕxÄC‡5nܘ]‘ëׯ¿páBdûöíÍöËì̉Ëa­éóÏ?Ï!¾‡ “QM~Uîå—_~õÕW‰ÿ8¬\¹2C ®6b9¤Q :´ÿþ衹_|±`Á‚A:›4i²e˖Η^5jÔxçw° Ãn¾ùfQë§Ÿ~bñïA”/" " ^™Ž=ê͵9v?ü°Ý«™¡N"HÞ™ttMþðÃ8Ñ8F–Ö“8~ü8-2éÊ÷=Ä`Ê 4OŸ>ßuIê÷c]@t(" À”)SœnΗÀà±Óûvk6¾4*ð@æ¹I¯Fü“73Ž9^‡A¹Óâ“΋G°AE" " é‰@¨ùËôÔaõED@D@¢ p|I¬…^UôD ɨnzê­ú"" " ÑHÀ_Ú•>ÑiW-H4™>Σz!" "´ä/“–¯´‹€ˆ€¤ò—éã<ª" " IK@þ2iùJ»ˆ€ˆ@ú ™>Σz!" "´ä/“–¯´‹€ˆ€¤ò—éã<ª" " IK ç/ãÞøùóçÙKë³Ï>Ëš5ëC=äÚM3rsl6ÂÞalÎY,õ”¦9ƒS:Y"" ©@Lþ²yóælKbºÄÆÑìðõøã—(Q"B'Ù~²wïÞ÷Þ{/;°mHIoѬY³hÅúËsçα‹µKì±Çc›LW&‡o¿ýv¼ùA9¾Ê{õêµtéÒÁƒßvÛm¦"{‡uìØ‘Ÿ 4ûf»´¹ v•êPD@D pû›ÄšÎN C† a³­o¾ùæ­·ÞêСÈ#"¸Lü M´mÛ6[¶l‰mË)Ï.›ì,Æ~œÎLÒƒ ÂÕ‘èׯ߶mÛFM ËaÞ¼y]’ƒ”×­[û?þøcë/?ùä“råÊù:ËúU$" "æÄ:™9sfvo¾å–[ب™-£/\¸À ¤¡°k×®çž{î¾ûîÃ;nÞ¼™ÌñãÇ/_¾œÄ3Ï<ó÷¿ÿÄk¯½F­fÍšºíرÃTlݺõÀMIŠLÚ¾O:_HhËЛ6m²ù$Øn {x7ILi‰D½ö aìw}ÿý÷·hÑGHNåwÜqañ’%KØSI:»hÑ¢Úµk“öíùöÔ©VY=Jˆ€ˆ€¤Xý¥ÓèÛo¿Ã;wò~êÔ©îÝ»;v¬GìšÙ·o_¼KõêÕÍ (~®fÍšˆán[¶l‰ÌªU«l°¸gÏžC‡QÊë»ï¾;|ø°IÛ÷*Uª°Ý&ÛS£'þü6?BÂ×äßxãÝ»wŒâÔªÊÙG³F'NœÀZênذ’CÚ·#N{|;Þ*§*¥E@D@’Ÿ@¨ñعsçº,kذ¡+‡C"9¸“'O’^¹rå‘#G7n\ªT)<ÐäÉ“ñ£7ß|sΜ9)ÅqšêŒß’àWÝ *´nÝ:“™àûM7Ý„³déÕ“`_{Š)‚‘?þøã¾}ûk½üò_î"+Gì_ÿú‘(M3[¾|ù9rP+ºŽ„·Š&¼g!Á^K@D@D öà ¿­H(Ic®½|`€”¹C¥1¹H­I“&™í3‰ÌÅ\FqŽ7޵²¬Ð!mK&^‡¾öø2U9tèP†g̘ѹsçâÅ‹Gn‘ÙJÖô_B€ÙvíÚ!uGe•ëD¶S¥" " ‘ $vwç°þ’V}}¤Óšÿûßšµ0¹sç&Ý´iS¦'2Î4“L>õÔS,yíÚµ+C¯¶Ô¬ÙÁÅFXC{ñâE+Ÿ`"ÈžªU«–-[öƒ>Àµ6ŒÅJFUr\l:u¦M›Æ„åÏ?ÿ|×]w!¡#NüJ”U òw¶¥´ˆ€ˆ@| Ä:yöìÙ5kÖ°jtÔ¨Q,áa¥¨ ƒ*UªD¼Èâ‚ yŒdïÞ½.Óñ7ä\uÕU,bD”\ã›Ý¾}û¼yóX‰Ã ««–9$ÄlܸÑ,½ñ•qfúÚÃô!­Ð.ûÚk¯eŒ7Œr†dÃæ;ï¼ÓT êˆÓßN%Ê*§6¥E@D@’™@¬þ’ð…^à‘J¦âêׯ?fÌVÒÜOÏž=Y•Ó¿ž‰$tó.ÛaÉlÒ±Ò‡8ïEÐF]¢RÞGŽÉš[ëÃ\\(bº”T³¨ÕUê=ôµgÏj^Ì{ðÁFfõ©YyÑ¢E™ãDÒ¬Œ%ԣͼûv*QV9µ)-" "Ì2=z4Á& 5)êTÈ£™Œa'êÌ·i–Û˜™K¦?ùùž,Y²P„ïdé/+æ› ÄÄ%£ß·Ô7Ók*q-®Ë%ŸXå¾qêŒÐ©ðV9*-" "5ð®mðØé}»µIÀ!Em‡­èõC¶È$ì2<Ÿ-bÖ¦#$øµ„¥¾E^{X‹ÄË+œXå¾qªÐ©ðV9*-" "lbM6CÕˆ€ˆ€¤ ùË„¯¦E@*ÎèÑ IDATD@Ò ùË4sªd¨ˆ€ˆ@ ¿LAøjZD@D Í¿L3§J†Š€ˆ€¤ ùË„¯¦E@D@Ò $ž$ÍH¤¡<Ž“ÈHa][7Úù˨Ñ]Æã«ÑWVMä%À¯Ðð`=ïÑ5«ñØè¸©–ˆ€ˆ@#㸠üe;ß2WD@D E¤mÉ®[l{·¦»ôÚ(¿AÏþ0éµwê—ˆ€DG Ï_Nœ8qÖ¬YlÂvÍ·Þzë!C¢Cc­_|‘KØÅ3F=©§ú?ÿùO6`¡S©Ç$Y"" )N ­úKÂÊwß}·Aƒ:t8räÈþýûS åK/½”9sæXZ7;f7lØ0%ª+" "¤Òêx,{PV²Ì‰!Ùn¸¡|ùòÓ®]»ž{î¹ûmÛ¶›7o6™:uzå•WØú‘GøàrH'Xñý÷ß§"Û|šŠö}ôèÑ3gÎ4‡;vüôÓOŸþù{î¹çõ×_g¯´öíÛãÙàÓàæ[·nÍÆ™È°O5™ìºiÓ&6þlÖ¬›c{AíüùóQÕ£G£Ç¾¿õÖ[>ú(÷ }úô…ÉG~áÂ…ôúî»ïîÞ½»iˆ"_an5ØF´N:l_ £°i‹œW_}ÕäøfŠÌ;z¸w¡E6ÅZ“é²|÷îÝ0¤-NG×®]­˜SÒ" ": ¤Uyûí·(P`ÅŠ\£·mÛfà²Á$îZ®õlŠÙ·o_|*Eß}÷ݺuë&MšT±bÅÒ¥KïÙ³Ç^©Ñ%'LETQÑú{:¿ÿþ{Z4‡ûöícX9pàÀ·ß~—ÀfÔ¼ãÏ;‡Ì€ð(øW. .Œ;v,qªWÔâ}ñCÜ ˜†ì{¡B…¨‚?^´hÑÆM>òxqv¨f³î¯¾úŠ=ÞL¾W˜N¡óĉ¸RnjÔ¨a$‡+¼8ÔÌeúfÍÀU£'oÞ¼~øa»vízõêõõ×_Sê²{Š)Âx/74_|ñ»~Z Jˆ€ˆ@*'Vý%[I1¢B… \Í ¤>þøc@ü16KôVªT©*Uª:thçÎæ ?lØ0®éÄLlT‰¯ÂUlÙ²åðáÃ5kÖ S±yóæD¨(7 ƒÞ[µjEü„aÙ³g']µjÕjÕªáp«øZÜöwÜÁÎØL¸®Y³%ˆaûiÿö·¿õ0 ýñD-2®vñÍÜ7ðDQñâÅ‹2Œñb*êÕ«·jÕ*“é†ÀÖ­[Û´iS¬X1°äÉ“ÇH²=8ñ.wørd"fäbG,!¶¦âìÙ³M‘µ¯Œä΀Í>qÆ´˜¨¾6½‹€ˆ@JH«ó—ðâ²K¼2cÆŒ7ß|sРA\‚qä”)SH° ´ü®¿þz³ÿ3Î GB„·~ýúeË–á½ðUa*rqs}·. aÓâå—ÿÿ›’µk×eöîÝÛœl¢=“°ïråÊeÅœ åO>ù„hõ›o¾Á¡Ú¢¬Y³š4+w–,YbÒ^a:ŽyåÊ•³MâÆo4‰,Y²ˆ`˜cxŒùóç7‡%K–dxÖ¤­å6l`Çì|ùò™|½‹€ˆ@Ú"†ý% ñIŒ:~ûí·D~ŒFæÎ›Lr˜"œ†ºuëâ/©òùçŸ3u‡dÈŠt†)ºîºëð—ÌšæœUÌÔc§°MÕ18uêT\/³›6ß™`^–±kr|… (‰³ 1Ë–-ë¬åJ'hw ?ýô“ùí êÒ(“Ê.%%J” ÄdNaEÞ% CHÍÒêx,kdæÌ™CÜ"ëzpœøŒJ•*1¨ÈtÝ‚ ˆxY¥â¥Ïh!Q2¬¯©\¹2a*¢™¹Õ«W{†Ì!êbxs„ §OŸ¦Š½Ã˜;v$àÒ?yòd3÷É/ýeÖAiúëœ[eäLxÍ/£²hð6-òdCÄÐ@ÆÕ–9 2ÌZÂ8fpFh”1pb÷Zµj¹Tá&q™ûÛß/^Ì¢bœ«¼]’:TH ­úKÜäСC[¶lùä“O2öÈ:L¡íÙ³'Áã´¬£aÂ’éI_脘\Ù˜5ãa*ÈÆ™åüòN‚¿z¡ºŠD@D@Ò _òªìùÅn”ü?wþÌñ«r>úhxyIŠ€ˆ€¤Wé?¾äÌñ³pE.½Øúꫯ¾b3)~Ž|äÈ‘llÂÏϲ“®Ôüt’Ÿ|c‡gÜ*?SΑ#Ì6Èl4Í’ªqãÆµmÛÖl÷‘^?ê—ˆ€ˆ€/ á/é9êlà…Ï»å–[Hó‹qüùÓO?Gœ>}:?Ýþì³Ï"†eïFv×b÷i¶’fS§Ná/Ù„­ÁØŹg–/PeŠ€ˆ€¤KÂ_²M&ûgá såÊÅÎ_+W®dc“ƳEFýúõÙK’™×4Û12[ÉF`fÏ“ìÙ³³+¤Ù Iv¡âçÂÓåç@ˆL CøKvð`Ä5Ož;lgé‡$/W¦E@D@2 á/™¤lÔ¨‘=£fïª}ûö™œYº6òÂl+mÓJˆ€ˆ€dXb}¬ëì27‰]¶ló”‹-:xð X²›¦KŒÃâÅ‹3å¹qãF&8‘gkèÕ«W{Å”#" "î dDÉpëË/¿ÌÄd›6múõëÇFŒ,‹õ=ÓMš4á‘ÍÎ;³¿ñO?ýÄã(¼ûJ*SD@D }Hÿã±,õžÂ *Lš4‰ß1`E3²t 3ß9~üxBL2aò’õA^UÊÈÒ¿¿Œpñ‚Jm‘ïò[ª„ˆ€ˆ@F Çc3ÂyUE@D@âK CÇ—1¢dœ6ÆÝab4@ÕE@D@’€üe”¨Ù¤›qZm%>U´F@þ2Ê3¦È2Jpª&" )J€h'ºöå/£ãöK­šõG_Y5E@D@¢%°xþì¶­ZDQ{ÌøIQÔ2Uä/£F÷KÅ; g‹©¾*‹€ˆ€$’Àª]?S#Kæä^¯*™È%qT@@þ2œ™ " "ê d¹"¹7ÀP|™ê?2PD@DÀC@ñ¥IúÊxçwø©÷x }uK½ä&füeóæÍùñUðdÍš•_$g³åråÊ%-šcç)S¦$]±h¶4Œ’‡zè©§žòU8kÖ,v“¿ô…£LO Ëig½OÞ¼y{÷îÍÞË£Gž0a«¯¾¾ŸéO’ß.2dˆé×5×\“þ:¨‰€ˆ@ª"pöÜ…d¶'úùË,Y²¹ôš:uêW_}uáÂ…áÇoÞ¼ùûï¿¿í¶ÛZ¶lI!a«,~Ö¼ZµjøTüëéÓ§ß{ï½õë×3,ÙªU«{î¹™]»vQwÛ¶mùòåC¾téÒ( P @²eËNž<Ïô /lÚ´‰ô 7ÜЭ[7Þ©ûÚk¯y-Ù²eËСCÙí²víÚGŽÁ’µNu—K—.7n\Û¶m«T©â5/sæÌÄÙÎ|_œÞ&‚ŒqÖRZD@Dgϧ‰¹çÎ[°`?£zË-·\~ùåø Üd¶lÙØ]’M²^|ñEd¾ûî;Ü!;3›]š ÂNœ8Á®“¸Õ\¹r!pêÔ©îÝ»ãùzôèÁæY}ûö8q"Ú(ò}¡pïÞ½»wïf³­… öìÙ3GŽ%K–\²dÉâÅ‹ ¥–¯%ýû÷ÇTÞöíÛW®\™'O$ƒZã7\vr¸gÏž“'OúZÅnšûöí3MŸíkƒ³®·‰ cœµ”€€Ó_Ö­Y-“‹—G( _}|¹ÿþfÍšýüóϸ½Ž;Òd‡xÇ'*ThݺuÖ¦‡ ƈåÅ‹ ì~üñG\KݺuSÄu‘Ù¸qãR¥Jº)îܹ³hÑ¢¶º7K4hiÑ¢E¼<7†¿Ä1a¯%À˲e£F¡QŒ1 oëDÆ^;ëׯ_¯^=vÁôÚC½~üñÇI@Ã̳zmpVŒ §N¥E@D ã8{î—k¸yÍ]¸¬a»~=úŸÿ)rJþOY"¢÷—Du ¨¥ç]uÕUŒÇ2\ùÙgŸá™HSj-¹þúëq–âlMePtàÀ3fÌèܹsñâÅ ¥ˆÝ››!0=vì˜­ë› €ÃeR„ÇÅ7SÅéÆ|-Y»v-ò^7ìÛº¯dòòµ‡L:È= ü7ï¾68ë¢*.(œ:•ŒCÀ_ÒëYó—4©WÃÕ}2]b.D{&¨… Hb5FYq–ê1‘I7sæL"Å êU«VýûßÿÞ¢E‹­[·“;wn„›6múѯ¯òåËU“ïkIáÂ…©k†Lºô2ª‚Z÷Ú¹iÜ$“¯¼Ì0¯¯ . Þ&‚ŒqUÔ¡ˆ€ˆŽÐõ÷áÜOX8t Äè;£÷—N³H30Ë;¾sùòå¸%HYPã’a~nÞ¼yñ@ŵ×^›={v*UªD0:wî\¦B‰M—-[ÆÀ©«b¢}-a‚“)RZgÖéRf^M°èÛº¯Ö®]»Õ«W‡1Æ×gEß&|qÖRZD@DÀ8wþ¢÷oÚG‹L) o)9±Ð‹›¿¬Y³f±bÅFŒÁ²R"'ü D]–={–ö{ì±|0þüO<ñ8NÖì°†–õ8t>|ØU1Q‡¾–0rË$+ŽyÅŠL»òØ(£¸A­ûÚIPúí·ßòÆ_œ}›ˆ; g‹J‹€ˆ@z"pîüß¿É3òç[Df,2=z4Áú?ü0KZ”d-™¹ä× °å™o•3gÎzâ\EÇ'æ‹×Ë^K^ðdàtÆ ]ºt©Q£ëx­ ÞÖƒì4UØÿ’ý¼"ïOâµÁ6gAMxqUÔ¡ˆ€dXìOÂ~^-þ}&M™j÷¿ ïÚ¸à÷íÖ&úõ>¾†gIñ¢¯™v&¶s x=¨K Q‡^Kˆby…Ÿ×a¸˜'8Mtkuz[²ÓVI0áµÁU%¨ ¯1®Š: Nà|lÁbôâì/£° ٪𠪸Lôšå?ÉÖ´ˆ/sbšŒŒÂ˜ ä/ Ún¿ôŠ“ªˆ€ˆ€¤*1.Þ‰¢/È_FAGUD@D@R'sbZ¼E§ä/£€¦*" " )Là|l‡Da½üeÐþ[…eZÿ=PJD@D ¹(¾L.Òñh‡ÍñP#" " ‰&0ÎÌD׉­‚âË(ùÙ'x¢¬¯j" " iŠ@Ü~ß'MõZÆŠ€ˆ€ˆ@â„/Íæ!‰Ó-iH/BùK~ /½ôWýh„ò—a~96šÆUGD@D@ÒÍ_¦‘%3E@D@R”€üeŠâWã" " i„€üe9Q2SD@D E È_¦(~5." "FÄß_¾óÎ;|ðAtÝ_·nÝæÍ›[÷âÅ‹ßÿýîÝ»þù¿¿N‹‰5@ò" " éž@¨õ±Aš7oþÃ?Pš5kÖ‚ ¶oß¾\¹r³fÍbOæx ¨V„ü>}úPw̘1dœEgΜyï½÷Þÿ}<åå—_~áÂ…œ9srˆL,f8›PZD@D@ “¿¤~Þ¼y{÷îýÅ_Œ=z„ ¯¾új,XG…Û ¯aĈsçνï¾û{ì1¶·Üµk;B‡¯.II V™%K–"—^S§Nýꫯˆðœ ·nݺD‰Ï?ÿ<™Ï<óLž|Û¶mùòåÌҥKIÚ•Hgbõ—à8wîÜ‚ øMƒ[n¹ÅîÙ³Ÿg}÷ÝwÆ«qØ¿äÛ¶m»}ûö•+WâG­Ì©S§lš)Ij•/_~öìÙÓ§OïÑ£‡)2ï;vì`æ²B… V­³Ô™Îœ93n2[¶l/¿üò•W^ùâ‹/RúÆoœ8q¢_¿~øÑ\¹ryo&ötïÞýšk®¡õñãÇ÷íÛwâĉtÓ+élQitF ”¿dÌÓÕí† šœýû÷7kÖŒéC\NÇŽ]b¾‡ 4lРA£FÀ_âö|%q„ÄÌh.]ºtëÖ­.ó«CLºò½‡:t ùB… ±¤ˆ4-×þøãûöí«[·®q󾙘‡dãÆK•*U¥J•É“'ïܹ“Õ[µ^P^c”#" "Jðk¯Æ•„±'”¿D‘ë'dm9rä`0“±L™2W]uU˜&×®]‹C§ çÎg‰¡¡×§2uJÑš5kž|òɪ"7nÜgŸ}†Ÿ&Áã‰YeLxàÀ3fÌèܹsñâÅ}34F~Ò¤Iæç O;æ+‰˜‹R«T$" "²»HXI¯¬töÉ?&:3iFk9ÄÇ0Iiò™q$A`ÇûO—^(1E‰z/V¬ØW\Á´¢s@Õ«aÑ¢EÌ­>õÔS,ÙíÚµ+¼F¦jÕªeË–åÑ|á°aÃX:D¾7ŸM~Ó¦MÛ´iãTÔ‘³–Ò" " i”@"£FÑCÆ?™¡dU‡çÏŸ7J–,Ét ™L25ˆC%\‹B9#À÷ß?YCôå—_:thñâÅ,í±3 F§y(“Øwùòå8é“'O⹑ÁÒ8QÖfÏžaßÌJ•*’2ÐÊ-ê²eËLö•Œ¢ ª"" "V$­¿$,ÄÈ‘#›4ib|‡L2Ó‰Z±bsŸL@2È/Fb fUKp[´hÁÓ,,ryßš5k‰>²– W‡O={ö,?hÀS(>ø`þüùŸxâ ðÍÄ›öìÙ“UK¬QBžHôðáþ’ÑuAµD@D@ÒLGMÐP¢«DMŠ:âŸ5ååÌ$Pcœ“e«6lèÒ¥K5@‰J3µÉ,#ï7ÜpƒËYZ=,í13—üÀÿ<C?w@¬‰G´bA™ä?~åDÆVØ·º-UBD@D 5ïÚÞ·[›ÿqcIÑ1ßE@DlÌ#²–‡Ò ˜ð.êÖqcxÊÈÕ³DÆ>ßBš¸ÖÚúf"ìr«AÕÉ×KD@D ýHré‹lРAü.“Uµfù¯˜2E@D@D •HI¬vû¥W*¡ 3D@D@D 2¤]ï¹m•Š€ˆ€ˆ@Z! ™VΔìHIò—)I_m‹€ˆ€¤ò—iåLÉN”$2ë}R²Ç)Ô6ï¤PËjVD@D࿺¶nþ߃Ĥä/C+6ÙšõǦ@µE@D@~!°xþì¶­ZDÁbÌøIQÔ2Uä/£FMÅ; g‹¦šêˆ€ˆ€üJ`Õ®ŸIfÉœÜó‰ò—¿žý/" "vÈ_¦s%KE@D@RŽ@–+¢ÙØ*{_ÆBOuE@D@R†@òÇ—É=þ›2\ÕjhlsÆÚ¡Åÿ¿àæÍ›×­[—ØZéXÞ£of²AàqšLs)k‰«ËÉ` ›±«<›ý™Ýp]è0À_FñKg3P|Ù¼ys6ó;n,X°}ûöåÊ•‹…]º¬;kÖ,öaíDõŽ-Ea;mÚ´DÕò ³y¸kë7¯LåÄ·i_Œ¾™¦;®Ö]‡QwÙ©§OŸ>œÙ1cÆ -‚%Q·uÅØacZ¶ôðöÛo³o ß¾ÿþûxJvÞ½páBΜ99D˜ ¶)S¦x+†ÏÑU%<«¸Kf¹"¹ã½ ä/9[yóæíÝ»÷_|1zôè &°¿tÜOaÆTÈfÚ\‰bì{§NØÇ”«[Œz¢¨ž‚Mc­«u×aÝ1U\zF…ÈZ[j®È~GÜ`a¿~ý¶mÛÆ·›{bù¾³Á;{Þwß}øT¶yصk;#Å·/ºªÄ—gxmgÏÅzÍ ß–‘ÌXþ’m¢‹\zM:õ«¯¾â?|øp©«¹í¶ÛZ¶lI!\¸Ð°MfµjÕð©øWö”æ"¾~ýz6šnÕªÕ=÷܃ _<êòåÌ—/ò¥K—vUlÖ¬Ùœ9sÚ¶m[¥JÃÚ¾ïÝ»wäÈ‘´‹ÂZµj¡Óì_íj—KÀСCq!µk×>räf 0À*!ATd|ÕªUß}÷]v}úé§éHðþýû¹ŒnÚ´ Iª<÷ÜsFÿÒ¥KÇŽ‹y˜T¢D 2}ûk„rväÆÒTaOÓ²eËNž<™íµ_xáô“fÒnݺ™J½Ú8#À䌰*f°Ñ›WÆ(wžšbÅŠ :o¯]H¹ŒzÉ{›:A^\A’Æ*ßw[Wë7ntqêšUÞºukÎÑóÏ?OÎ3Ï<“'OžW^yÅ¥ž|’A׫W/[Ñ•ðý8y»ìÍñ=S|2½ßßL§A<·lÙá»`·¿5n’ŸÙvmóæÍcÇÀgŸ}–O8 ½ôr¶èJGa@r^U8‰ö3ï²<ž=/™Ä§'´`Á‚ÿüç?·Ür ·Û™3gÆMfË–íå—_f§è_|‘öÙ˜“KÀŽ;*V¬ˆÏ2dȉ'¸uÅ­æÊ• S§NuïÞgУGñãÇ÷íÛwâĉhsVäÒ¿gÏž“'Oº:tæÌê2:„'ãÊ8}útrø>{ÛÅìÄãnß¾}åÊ•\]ª"OÅ *ÌŸ?Ÿûkã/½Â´ËEOŒk¿ùæ›?nô:tˆ…òåËÏž=óècP­=Œ†™±nÓ .:Ìq^¸p!{ƒ³YwÉ’%—,Y²xñâ‡zÈWwÿüç?)Â_æÏŸßWÆE˜Sc 0ä½½vž®k¾ä]M /® Ik•7áeëjN99ž|½]³Êù˜Ù]Ðé¯q .µFTm-o"Ì'Ä !èL½ñÆ®o -úfZK"ðd#òwÁ*q&ø 3sÉÁ0qù¦£6 Ù®*Îϼo2T¦Ó_Ö­ùKTôZ°xyPQ¢ò3V|É­1¾_…ÛëØ±#¤:tèÀ;_ÅB… 9W¬0±§ùÍo~Ã÷ Bð´oß¾ºuëš-¼™7.Uª&‚§;wrçŠ*gÅ|ÐûE¥.Mê6hР~ýúxÂP&Sf[„×A¦Q£F¨¥–p¾‚ŒÇý8[lBRôsµåÛ+¼jÕ*Z©S§ŠS-6È2×E$´uëVŠ"ô×YѦ1€!2®¿‹-â}ðàÁÜ7à/±$‚¶ìÙ³Ÿ?¾zõêÈ|úé§ ¶Í™„o¯)²H1À—üM7Ýäl:HÌ‹+HÒœJ—yæÐËÖÕ:9§1‘»æÛ„Ét© i‹Â|BøH¸>3¾gŠqï·Æ÷«d['ôÕà¬%ø]pê±i¾×¤MÐi3#$¢3 9¯*ŒÏ€EgÏý÷’8wᲆuîò…@‘SÒW&dfÆò—: ~¨úàNÇ÷ÙgŸq M©¥výõ×såâ Ûøv IDATbŒáf̘ѹsçâÅ‹3FJѤI“ÌbÓcÇŽ™ºÎŠ^g‰ ß.ÞÍ  xYü4&o«¯]»–CãƒIx_Œ§#f<êÆo¤"wÙÜ x{j,…K9–à,ÉÄ'¡¿®ºæñ1ê’ÆsÐ4|œ(Âh‹ c¹šööš»d¬|dòV[˜W¤9•V¡3áeë, Ju-H>Š|ßSP—Ÿß3åû­ñÍtšÄ3Áï‚S‰3ÍÌ"‡kÖ¬yòÉ'ùAéè àì$ÛU%ÈòŒ™ïŒ/!0kþ’&õj¸Pés $ê0}Îÿ!`4ƒpQVãNˆ~˜æ!†›9s&‘bP-fÅþþ÷¿·hÑ‚`‹ 1sAlÚ´éG¿¾½ ªîÊ7®ˆhÕäãªq*¬Ùs‰™k½ûéÒË%ÆxîÊ©ÅÕÍWØÜ˜Ò¥ÜuK]ª8Œ ÍÆÐd¼ ]9¶×®üÈämÓAb^\A’®vÃÚÖ°ëÐjêšYíÂM# V˜D§ŒI‡ü„x!)ï·††|3­1A<ü.X ®w¥Œ.0ëÁLŠ«È÷0:RÃUÅ·;é>Gèúûpî§Î^sèˆÑwf,éDIšYÞñË—/Ç31fèºÜPÊô K(â Ö×1VFf¥J•¸©dÝS¡8¼eË–™ EöEf»víV¯^msLẨRJØÇEŠÛó;3Ì%Æ„ó£4Í”³n\Mˆöá‡Þ{ï½,Á`<·ÉTܰaÃçŸΓ3\Ñ|…­%sAaA“Ë{èÛ_k‰ ™ðÕF]wÐXðÂ4RŒ³ —Þ^;…IÛþzÉ;›³ù—Íñ*´M»Œ´ù΄³uò]‡äx»æTKÏ 7V1Ï€¶ÕìÕc‹lÂê ù ±]¶|Ï”ï·Æ7ÓZBÂ*wñLð»àTâL3írÿý÷“è/¿ü’q]fÐYÖ„%FììÙ³DŸæÅÀÄàl˦}IÚR“ðEáKÒUQ‡NçÎ_ôþMûh‘‘!á-%Ç©!±é í/kÖ¬Éèˆ#XÈÇ/b³ÂÓ ‘oÏS³ÉHÖ¡°…R'ËXXdÁ2Š:>ì¬Eš˜•ë¼»ò¹C7×µ6mÚ°†¨råÊŒ÷ºd8$èd†¯¼bÅ æ\™ƒ1>• "î„ѳÆsÃKÄÜ¥K¼,Ë…Ðæ+l,A˜ùŇ~˜…K^3LŽo­%F&|(ã« %Mš4Á»3âýñÇÉ8-tàíµS˜tòΦƒÄ¼¸‚$íºŒtÙ´³u2]‡äx»æTË82¬û¥¢¹Ÿ3š½zL¾óÝê ù ñBð=S¾ßßL§1A<ü.8•¸ÒŒÄ2XÊ’(–¶1DÄ#d¬D³³Dä¬ß6/nLk€«-sèKÒ%é‹Â—¤«¢οàû7yæBþ|‹ÈtjHl:ÓÑ£G¬C ÅõÔLž'(œæX˃[ÂlVxra2v¸z‹"ôäíÊgM)ß=AW¾÷ý/ÙÏ˹? ÍquóF–¶.‘+¡!ëeˆq~5jÔÀÑÚR“ðÏÔ +ñX:ç‹a^®5¶ŠWØ!Imf­°o"¨¿߬°åîÁ·VP¦¯6ŒáFÄ^Ñ|e¼ #ôÚ+DÞÕt1® IoÓr\­ÛÃ0]ãVG^^ýV·È›þ‚Zï™òýÖøfº,ñò ó]p)qr3Ç@ï̬ۖSÀ•ŽÝ€ ’Ά‚PxI:k) ö'a?¯ÿ> “¦Lµû_†wm\Àûvkãó‹Â‚4]Å8Kº`å{»ƒWóul^ê­”¡9S…–Çp~ŒóH™ m]Ú"ÏÍrHa¯¤«¢=tõ—Ë4OÂÉ7œ‡D­XÈ„K›©å2ÆW&‚~Wu_É ò®º!Åh"HÒ·õ LWë®Cjys¬*\—M»j¹$9 ú8y•xs¼gÊ÷[ã›é²ÄË3ÌwÁ¥Äyˆ´Ïh:óƒÒ±DÒÙb /Ig-¥-ó±‹VOø„üexVÉ-É#Œèâ2Y°c–<„±€q'ß9LÝÄÊð…gT™Pƒg4Í“©‰Õ/ùäìu¼l©'w-$Ä¢û.„ן dŠ …PàÜ…˜&#£ &´dªÂmæí—^‰j ÑDÉÇ"Ì`ïwÜ‹†xÕMÎ^ÇËæzÒq×B@,ºïBxý J¦¸ Z˜b\¼1ùË( ©Šˆ€ˆ@ 8óoV'¶ò—‰%&y”'p>¶‡C¢è€üeТ¯Â²®è+«¦ˆ€ˆÀ¯_þJ"=þÏèôØ-õID@R€Àü93“¹Õÿ>œ—Ì «9HC4›|'‹ß+H¾ÆÔ’ˆ€¤_ ×µmÕ"Šþ?)ŠZ¦ŠüeÔ袩èü}Ÿh꫎ˆ€dxf!H–ÌÉ=>*™á?z " i€üe“f›'#ƒñÝlÈjˆœXºté?þñö®cß8öªœ6m[á°$?êØ²eËûî»Ï¹k•¯*§N;}…›i;ËÖzcÇŽesÚdûÅóÄšš ¼íK‚’Nö åóÀyqfF‘vž¦(ªÇR%¾MûbôÍ46»ZwFÝ/§çÇ>‚%Q·uŸ3qâDô°Ÿ%—…[o½uÈ!QÛc+:‰Ù̉d¾B†´*‰e¹"žñ^8QúKT³¡ýPš Gåë·Ø™Íçðsa òʰarß¾}ÙÓ˜¢Ñ£G³òþð‡Gy„k‡ìòÊΔ¿ÿ}¤Ð\Ùém:±9lQITýÒK/ 0 ±uÓ´<;_rб ®Ó£¶DUOÁ¦±ÓÕºë0Qq »ô$ÝÇÞÙhФ +ß}÷Ý tèÐáÈ‘#û÷ï‹1K¶+d\:›•œ=ë5'±½ŽÞ_²qÁ‚íõîÝ›}ãzõêåÌœ:uê¶mÛ¸˜²}ãsÏ=ÇÖT»ví>|8™ùòåã+]ºtiäIP·Zµj&L@O±bŬ¾ +V¤"_ƒÙ³g³Ç2¦ÇÌfRóçÏçÖ’“펒ªU«R…ïž~úiz pÚÉ7éNd§èZµj¡Ù„†FU½zõˆ)â°D‰˜D …0CÁ·Ýv¡m‘"E¬$h ݺuÛ´i»\7®mÛ¶UªTqʎܨ…À ÁСC¹Õ`kI®Ü¸Ü°¯1¾hÔW¤\°ËáÆ 2¦л:î{Öl¿PÎ8ïä`»u–-[vòäÉÜH±y=úI³!dÌ6„^mÞÓä•1Ê}?'A½6ùiÖ¬Y½§ÛÛtÐ òâ ’´d¼ [Wë7nt}_‚ºf5·nÝš'Û~‘óÌ3ÏäÉ“‡—Z¾>ν­ëL„ü„x!øž)¾&Ü"¯_¿ž¯_Š{¶|36ñܲeK„ï³3\aøÆ™¡íV—1æ$d˜9;Þ J¶+¤`†JŸMöý/£gÏŸ?Ï>Ƽø°š“ÄN6mOÞ‚ N™?~vîÞ½;Ã&ì˜È5šÀÑÄ%ÔepÒ¤I¸F¾`¶:ß¾*Æ-±$Â8*ÅæÌ™ÏŠ#a ”*FÉœ9s*T¨€K6l™.Œ˜±“A]Œùúë¯ñ¬x‹éÓ§3Æ4*¾ê8ïòåËoݺ•"“Ïw7‰ñ«V­ò˜oºé&$—/_~âĉ={öœLÚWùØ;ë:Óa>!^Agо•ýúõã–‘/¾iÈ7ÓÚgäï»Þq‹Æ@cî6ŒÂØ ¦!Á0d|/Ø!Ab^\A’ö~α /[Wë|þLÅ ®YµÞ„K­WÀ›æÂwÁõ™ñýFsƒË†!î§ëÖ­k€ðöf:ÍújpÖ"8Å#FŒ`ºñ‹/¾ àëÒ¥ á¬ïÇ,¾†E¸PЯä¹B:f´ôÙsÿ½$Î]¸¬a»| Pä”ô• ™½¿ä‹m8.ˆ!CÌø?âãb¯¼òJbMSýúë¯w9KòN ³:›ûꫯ8´#09räÀY’ƒå}ÇŽ.ÿê¬Ëȇfì— nÈW:wîÜäó޳$ÁÕʘAtËëgŸ}Æ%ƒ4m9µÙ4ªç—Í´‰ÈZk×®¥Š¹“°u‰Æx!àݽ–KˆjI{;ᬹêšCNÐHsA¡iβEmd,"WÓÞ^›Soå#“·Ú‚$ÍçÇ*t&¼l¥Aé ®ÉG‘ïûq ê²ó3ã{¦8Ýø-FP¹y1cFç΋/î›é45ˆg‚ß”°ô”¶Þ|óMîÕ¦JÃ̉:§És…tÌhiW°8kþ’&õj¸ és $ê0z‰›d2dcÖí™OXÓ¦Mf S7oÞ¼ˆ1èÁûÍ7ßÌ•—)VÉšYFn<ùŽq5a4Æ¥RrìÛà3î[`“‰äúίSÆ™&ZbZˆ•À¬ûíÚµ«±Ê)@š{êãÇ[ÿí*å0d£æZolûéÒË9Lž0ÆX¾ÂæîĆÎ^SmNbÏš­è›ˆ Íž¦2¾:™¶×ÎLÒ‘ÉÛ¦ƒÄ¼¸‚$]í†9´­aסÕÔ5¦º‘áÖ“a+L"HSƤC~B¼‚ÎÌa³ü›cn¬‰ÿhÈ7ÓÄ3Áï‚Ñ€?æÂÂãÿL'ƒaÖrßDò\!}›Î ™^GøáÜO›5¬e»Ï¡WÆ–F‘ˆ~þ2|cÜZ24Á'˜i€J•*áÞæÎ»`ÁüÓ²eËÌ% H_!ª›éI¾«8*”ð` Ó“T$AE†…íó¸O¾-6l`ZŽQ\óqàlÈÌ•ba(× nHï¼óN\²SÆ™þùçŸ9$~ezOÆ£ëòD©1•¡fÔ¶k×nõêÕN ¤C6Ê„ãºô…)fݸ šíÃ?¼÷Þ{Y:Á/_ak ­À“i—©öÐ÷¬YK¬XÈ„¯6ê:OSŒ³ —Þ^;…IÛþzO·³é 1›oqÙ¯BÛ´ËH›ïL8['ßuHŽ·kNµDðÛ·oǪ—_~™‰«Ù«ÇÙ„Õòb»l!øž)æà –ÈfZôÍ´–°Ê]<ü.° Œ™(1•Ëý4ߘ$ƒaNãcI;Ï”¯Ù±(OÇuÏ¿èý›öÑ"ÓeÞRrb’þ²I“&¸.Æd>þøc¾<,a’Á“Ç{ŒO³”ñÕ†çi ’±&‘pàíµS˜tòΦƒÄ¼¸‚$íºŒtÙ´³u2]‡äx»æTKP… ë~©h<“ÑìÕcòïVOÈOˆ‚ï™bˆçñù‚?øàƒ,öa­úf: â™àw7ÉØ/ ñž|òI¾)|q˜¾MÜÆÇ’vž)_³cQžŽëž;Á÷oòÌ…üù‘ LfMd„ƒ\OíššÈÂA¥TÇMš -I›7ƒªØ|î‚Ym‹59x ÆB‰óXjdeHàY‰GYãJ[ «ò5s–º pñ¬=š‘¥S˜WÜ9ÔâBfC[rjy ƒé>ôÎ*¤Î~^ÎýIl”ø›ø˜QÂeîx¸ïîRë5&¯°Ñ`šG—~×aÐY#Œ`´Üž W­ C_m®Óä+ãU¡×^á ò®¦#ˆ¹pIz›Žãj݆é·n¬yáåÕoõx‹¼9á?!¨uAðž)nì€q}|3]–xy&ø]@-³3|qº.mIj˜«­X]gÊkv,ÊÓY]ö'a?¯ÿ>Š~Mš2µkëæ¦bxׯ¼o·6>_°(,SÅõ9v}‹"k À2#«F GèzôÓUÝÕ–)õÍ4E8r—†‡ÆY"à­…Çõu–¾Ú¼Õ]bâÜpÀØ/´æ&Ý%Áoƒ„½’®Vì¡ë¬q™~öÙgÉä»ÍC¢V,dÂ¥ÍÔrã+A¿«º¯dyWÝb4$éÛzP¦«u×!µ¼9V®Ë¦]‰µ\’†ÿ„xÕzÏ_^®V|3]2^ž ~PtMHRÃ\–ÇrèBê5;åé²îùØ‚Å(˜$Ÿ¿ŒÂ8g¢+ç¡oš§ Ñž¯L’f2 Gý¸^Ftq™¬ZаÊ×ÕbrBà"ÅP6÷Å<êŠõ]V%õarö:©ûâÒŸŽ»æêi„Ãè¾ ª(8w!¦ÉÈ(¤¦oL@†K+2Ü`ò 6¯Dœœôï¸ãŽD™—DÂÉÙë$êBÚtܵ .{ó£û.xõ('=ˆqñN(Ò•¿Œ¢ÿª"" " œ‹ù7«ÛkùËÄ“¼ˆ€ˆ@Ê8ÛÃ!Qt@þ2 hÑWaYWô•USD@DàWŠ/%‘ÿgtzì–ú$" )@`þœ™ÉܪâËdnŸøI¦öÔŒˆ€ˆ@\ üÏýqÕ,e" " "~„/#ìØ•~`¨'" " "@ ”¿äÇðª+[D@D@2Pþ’pÉ0ÔI  ùË0ÊùK %E@D@D €€üee‹€ˆ€ˆ€ƒ€ü¥†’" " "@ øËuëÖmÞ¼ÙØÏ¦í|ðA@_R Ûi[ 4¯&E@D@’‹@¨õ±Aưó;[ºÇñÑL²µºmzê©§úôéÞÉcÆŒ!Ö¬Y¤xà+!wóL[çγÙ;m‹`‰ŠD@D@Ò:˜üeRtžMƇ b4_sÍ5$FÅ>‹IÑV:;uêtðàÁ÷Þ{ÏÔMU¶EÑUI þþrïÞ½#GŽdõꫯ®U«V«V­²dÉ‚5[¶l:t(ΦvíÚGŽ9}úô€¼VfΜ¹`Á‚ÎüÞ½{_wÝu½zõrf’Þµk×ðá÷mÛ–/_>ÜXéÒ¥]¾‡Aæíß¿ç·iÓ¦L™2U­Zõ¹çž{íµ×èÅ÷ßÛm·µlÙ²H‘"S§N¥¹ .<ñÄ”)SÆi[flÃþzõê;&–(QÂ×6eŠ€ˆ€¤ZqŽÛΜ9Ó½{÷¯¿þúé§ŸÆëLŸ>ÝŒ£Òÿþýû8p M›6 f®\¹ò»ï¾ó…rþüù}—^$mÚV9uê ;v¬Gx¸¾}ûâÆliP"È<òŸþùÏ?ÿ¼Q£F:t(Y²$ðܸIô¯ZµÊ”UªTÁóeÏž™?~d¬mAšÌúõë'L˜P¾|ù­[·Â$È<å‹€ˆ€¤Z¡â˹sçº:аaCWŽ9Ä:t¨qãÆ 4¨_¿þÂ… ç̙Ӿ}{2 ¿ÈÄ!!‰ØÅ‹}5ð[B?þ8E¹råŠ03Š‚T*UªnlòäÉ;wî,Z´¨¯N›d—\§NÖ­[[a'iì)T¨ëzHßtÓM8KÒ%ŒjÚ´)¼A2Þü ópÒÛÈô¢E‹˜­du.kq»víê=¶Ï©?H³SÆ•ÃÓUE‡" " )E þÒ×ijgÏ®Y³Æ1VY±bEá²eËŒe=Q`µjÕþ˜d±ë¼yópŸ,¢á‘ ¢O_…!3+UªDÌÇ&±,qá·ß~‹Kv-BUHó¬Ù·Þz+i¼ãÏ?ÿLõ«®ºjùòå¸yY ”5kÖâÅ‹/X°`ãÆ¬Ù¡_ÖZ«ÁÕq+ „ˆ€ˆ@š&ëzFA_øõõÆo¨½üòËÌðöõëׯråÊ,n²cÇŽx¸+V4kÖ Çãt6Q¼öÚk{öìÉê–=öØc á>|Ø«'¤yÆl<ýàÁƒ&?~|Íš5ñÄ#FŒ`¥ —X^ÄrYô7iүܹsç?þØÙ\PÇ2J‹€ˆ€¤]™Ž=š õ„q‰šE!?;@¸étŠŒÍ2ˆÊpë† ºtéR£F ~þ2ñª.^¼¬øÍ7?ßýÏÏŸ7mê{¹óä}ªM»¤îrêÔO¹wïÞ‘#GnÞ¼™ÓZµjµjÕŠÑTº½eË–¡C‡|ø¶mÛòåËשS'l—.]:nܸ¶mÛV©RÅ%¬CHÓœþ²nÍjú²`ñò¥9UE–t–fÉre±%¿?z™-ûÕFIÇöms^wÝ]Õk¼=nlßþƒ²f½êáC7mÜxõ5W×¾»n«Öm®¼òʹsfO<éoƒ†Ü/ß¿>š5mÊän/ö(]¦ì’OÍ›;§ÏßnÚ¸aʤ‰ë×®¥ÖOµ­W¿!íîÚ¹ãµ!ƒ·mÝ’/_þ?=×­LÙ[Ƥ`:nÑÛ™3gºwïþõ×_?ýôÓU«V>}ºG¥oýû÷?pà@›6mÂ]¹r%[Fûvøüùóû.½6HÚ´­rêÔ):vìX=2eÊÔ·oß .œ8qbÏž='Ož´bJˆ€ˆ@ú pöÜEû7wá² NQdÅHøŠ9B¦/^v‘ñ؉Þ>ôÕê5ï®×°±©¸wïžu_~I~…Jw\~y–n;~µys»g:ݹÕI_šIDATYµú´÷&z}b Ù½{תU«H/úä“_Ò+W’^üé§yòæ#1ⵡ»wíêÓÿÕ§Ú=›7orŽÿt²[—NÇ~øáÅ—ˆ”2õéùòé3çÉן/–™qó—8ÂC‡V6hÐà™gžawè9sæàÉpxÄÕ«WoÔ¨ùyóæ ²ŒSòø¥Wç΃dȧ!‚TBÕR¥JMÒèÎ;ëׯ?oÞ<2#TT‘ˆ€¤EÄsοYó—x{A¦SÆ„€^1—L˜C”9òý{“&žrôhÂE~i1¥_qó—,^¥/Œ§šV²T‡eT… ¶ù?]zq»áÛkÜ$ó‘¾EÎÌܹssØ´iSxùJ‹€ˆ@º$pî¼Ïàê´=tomúKÂWÀExI[¶/^¼˜éò, 7›úîøEÏ{¬õ3Ä'¿ä_v™Q˜ãº_®ÿxMsxèÒõÿêksrXö¶ «W,›1ý=Ê[ÊÞ6mÒÛSÞWªÌ­™¯ÈJiùÊÕ†Žygö?¦}øÞÄÑÃ_í;dÔo®ÿå ïï|ô‰ÿ®*2j­I)•ˆÞ_ž={vÍš5ÆîìÙ³W¬XG¸lÙ2†FYCX­Z5‚¿’%K²Ø•ÁRÜ'KÎ;c X©R¥9rÌ;—X¶L™2„ê¸dZœ8qâ“O>Y¹rå”B©vE@D )œ XÔ:yæBš *õµ$QÂV D–-þdËWOž8Q¦\ùóŒ¯üÅ…en«˜=ûÕ+—/®~w½½»w>t b•»2]~¥·ÜZ=×}ѰI³¢%n!^ܰvM‹'ÚQtúÔ©K?)S®B£ûœ7{FÖ«²‘YööJ×\›cÁ¼ F¼ì®ß¼ñ¦/?_ñÞ„±µnöìWâžF÷Y;“:½¿dô…^0öá_ýõ—_~ùÕW_%ìÃ#â·X¹J)n²cÇŽo½õÖŠ+˜=z4N4–^13Ú³gOܲŒ=Œâ¾øâ‹®8NÞcѬº" " \òOñ±+:UßíÝ=l@¯«¯¹¶rÕMxةĤ•íÐý•±¯îÞ¡5×ÿrîx¼]'S”¯`á9sòÄO%ËÜ~yæ,ÅJ”úzÓú²·W¦ôô™3ïO™ðæˆÁT¹©X‰æ>IæUÙ¯ùÓ‹7rÈCúÑç×ýæ™.=Î;§ûÕ׸òcsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ *y:$ \IDATxÚíÍk"ÙÆOúÈ2¦G†´¸˜” ¹™ÅÄ(C!ÍLdYHm†AL„„™o¹½BÏ `"2ÌF²f°{¤h4I/n.Â(nz!ö%ÍÅI›Ýøï¢ü(˲üˆùôù­’JÕ9ïÑzê=矗ûûï¿ àaAña l„ €°ú<ÒüÞn—!™žYüGÉMÇ]SJ§yâ‰ïÙ¯­ å¸S’éqæWãV^°›ÖÓ¾à«f»=¯7ît:ñòœœ:€rÜår©UÝãFâŠ!ÝúÐÐÏØôÅ„^~h7sA_ªVk|$Ät=Apœ}ÿädÿfTÝÌCyB©&E·Ëñî°8{Ù¼J±šWF'%õÁŸ›¹]§Óår¹\.çn®Ùn÷¦ú”Ê’Û=|‰¦µr¼{¹s7×lBš¹]Í‘žbû}ÅË£FSy™ªSÊ„èÉW=ñVž-gY»ï5¥é‡¦\¢æp/>ž†«Ûnq{„!™R8ýú³’p‹ézw¹Nëi_¢2Íõç™àFoÂLi=åKÄãN1]ï‰vÊ´¢ß—,éj»Ýn6Î c–Ào”ÒU» ”Ê¡ ú 2ÛЯ‚êK&êÅ BÃÁjú6éÝg’Û­$„PÞêÏöíÓ©šRY’dfñg …b±Xˆ „’?«~ï8&0Ƙ-zIR¯…z­fõg Åb±ñ[£TÎçŽZã£*[üu_z9ðc£FY5/“±)½X,‹Å¨À(­§^V®24Jåtº®>>¶£¦á`5}ᇰõñÄ’^Ó,›±Ó]~M`lºË™;îv½l^Õ;Ò›‚žå c‚¸¹¬êë¼q9Ëî×Y~ ¥ó[ cšÇÄ CcÿQoÛb²^ #4¬º/€Í3íæO._}©PÐ|4µ¶b{ü>¢¨,¹åÞ/„é¦å³•Úyã’ØvU×.›W ©]mhŒ 1ÏÒŒz™y°#úvo?‰3m&cPÊ—0f€ËW™RÂns$ŒYã@g2¯Z¯§¢¯Fw¿Jù—óë yö^t‹ØÀ¤Sq޳ï¬$ü›Rù¬ÒÙŽÊí:}o‰…±në¹Àqö5™pªLz‡?µn7s»Îx…𚦔-ñ¬M3³3´á€'ïeªÁdìÑw’É›Œ5ÜRÚ—0ŸìÛ;³Ù:éͳŽÄ†/4ñLrÅl%´^O‹îTgÎUø­€%ŸªË’KXM ë¤;y`6«\B½¦¨ñ.úlC»J/£ËãvfìŽìû…¨@eɹ›»$Ë›R —Ÿ• ­Í婬IÝÂ|’¶É›<ŽM¸?ÇÙ÷ …Œß†·ì§ij`Çn~C»R/Ó ,&TXÐŒ €°6Â@Ø@Øaní¿”¾yó/ ÷‹íííV«e$lå$¼RܲÙìøŒ­ QÿÍóÓ¯¿á `,?|ûÍDSñ»CäùwxÛ0 Õj---éþ ›gÜW &¶6€…¶b=/kJÜ|åšRÄfã»Ølbö⊭EJsNÛ\[6 ~Þ££Í³|(±vû.¶Þd%ìèÝÛáìç™íÇÓéát½ª´àWóÚ9¬V³_ß €œŠS*‡†jñ© Ó¸\.%«÷‹Ë”ãÊñÝ\³[e¦_ˆGq>ìU´™º„cÝûîÃ_Ú¬5˜Ê.²¢ÍÆó¼˜½PÄ÷š¾ÞÑæºRÄ)uóm¤ÔŸ¨RáEV´¤âÒiÎ{¨+ËNS6M„c»ÈŠ6›­Ä6ÁD`8Èᦄ=€'†‹×(ôzµ8ò¡„ºEèlM9^O‹Q"¬¤Ö+ÄSIøR5«?ê·’|(1µÉæE6ýþ¹h˜âr;a©V+¿O^dJÄ®~;>ÔIŒ¹’¬T*¿ÿ>ýãâézµZùýû÷;1\dÃüÕJ¥R=$;:)æ¼ëú²ÞyÿüJ¥òÇó÷ª ÇÖ9¡Z ;F62ü‚è9Ѐ°‡à÷2~ •%õb»ª‡BÇI¿Wµ#¹¹¬œSk|ì–° dÕÌ›W‰bÑËTùQnÓ`w&‘qÓpï¡rÆãOŸŽøgÏÿ;”3ßýw5Òý¹+™¿!O>éNr§§¾ÒiÎëWBØö«.X÷£F´º¤º)€5¶Ë›’ÿ­R DìÏÆ{Eá¦/Ð1ý¥”LZ—·³Æ¾ÈŠ™Oçx»>U5öt¨á¿>¼{÷ú+þgåE¾^¿‹ïݽÜIa÷‹D3V²ºFH»Ý|MÕˆ5¾P~оVÌVÂjúvßcy¼y"FJŽ›™^~òä3o2cЗcÝ»sZ ;ns²;6H€©¸‘¶í{Gk­Ö­0¾`å¨g„ã +¥ræÕ¥znâͳÇÛ‘'éþ^ïÿw¡ìíäÆ\¨œ9Ýcäó/ßÏ¿ëÞÜÎðÇoŽuo.U"KX† lÂFÆ lCMš¼É˜§¯ó˜‡R9´‘9·*…nk›¼QÕÓâ ¥Þigüž‰Ù âWýžÙl¶0‰z >|úâÙÔû÷3ë§6£Ï¨áêáÓŸ¿Ò~Ž­ôÇóü³O²©Q`62>H°¨h ¼yófø»7ÏO¿þ†/`LøÅ/‘çße³ÙaÍâ_JXÔ©8à~qw¿Ýjµ`·Àƒöß~³´´„e60cãíkl„ „ €°·É£Åê(£V±6à®MÅÛírb#$SJaÌ8JzM^2îqÆn7sÁPžx¢…B±X<>–H4qãöÃc˜Ú€våeªN©'Öq;á8“÷ oNVŽwŒJñ²Vc£Jg33U_˜Ëíº\.åäÞ„Býp¥µNlÎøŸìO(@ØýLx–'Œ k¼Î_›¹]I¦B´Pˆ T–vsÍ~sãŒJÉÌL)•ß©ñ[I-õ²Âqö½ã˜Àc»¥v»œð¥jÝYÆ8›D/cžý6KokÍókcµ·¥žhJ'9gØÌTݸ¸¹ÜqGÍŸJÂj;tÅ, öXÏ3*ÑÎ-,*KnIîš™NˆbÏfaŒÖÓ¢Û­ïš À ›ãìkB©|¦ãê¿b¶°šWæÒŠÙJf›Ns&ïÁÉIT`„u1 lBá·Æò¡`oO«—ÛížÙèY…Ê™L©õ ‡i~Ýa3Ó±O¥øÀ@ð{11b5›°m’G©/ylNl„Ò¢;M!Dˆö9Ž(f£ §$¹eB˜=ðšæS§ý´èJecŒýØ”o}©´èN1á_ÅüÇõÏÎïÄ6M\ï1X@î¨Kéu€ÿ¸”°ðklÀƒZcg³Y¼.<¨56¢ÜG4kìGÆ` €°6Â`qy„—àV@½A0G~øöû®€’ƒ`.´Z­¥¥%üK)öað°Xa+~ .s1º>Ÿàv»¿%ƒAMÕEV´Ù"%ÜàZ3¶âLT(DÆf3ÒÜô×d*Ø.ÇÝné<°u×¼ 9ξ8—&ò]+El¶0ùÒ‹›ÜüT\-TÝŸ¿õ/ŸÒ]|8¤D(¯X¸hìÄ»näú-ôMÑ»Ç lÒÕãÒLj6‚™su<ƒ1|ÜLF…I‹ŽpµšÙþ÷"¸)a_6Î !žµ±ùp¬ã·î%³¹‹÷¨$B2¥ž5~”¸n ÍÜn(oõgúgÛ¤«Ç¥îWˆŽ¥/ž2C1ðkJeÝà¸aS*Kn·[L×<±“}ûØV&tüÖ\2›»x/Ÿ7ÎJ¨íÄɈStBVÍËývŒmÒ5ãêök1¯ÎqÍÓJƒÒàpðÜâ;*06¡J¯+8#wñ¾½¹øP C¦èSÛ¤+ç÷ cc¸ßufžŠó[Ém€çÎXwñ{s=;q݆LÑçg“>ÒÒ|ξë\m½¼)ù-¬–Šæšm¥„€âà­,2'Qæ°ã÷¤"ç.Îq&󪶤AÏN|eD ÊAuTÓÚ¤«K)è¾ê”ɪلCàî›ãL›¢‡Òº²¡Åo¬¤–Ýs@`l¬27¥Îù³}|mòDVO‹£6Æ åÏ*½mj·[ÊwìĹQ-˜¼1O--º{•ÓdÉí–äIlÒ•R ²ä>[‹õ^Ý*gùÎV‚¥ˆÍÆóÁ×ôuçñi6˜ ZϳûE»™ úR$p4÷¢W§™Ûõ¥Hà(é5é¤ëŸ~ý _s!üâ—ÈóïÔ—@8“7y[M½¼k|ÚíòËÔjìX_Õ\7÷þk›gß?±#*”°ï/­V v kì‡,ÜÁ|ó2ö]|'˜#ø>66Â@Ø0‚ÿ“¸OËùÖÂ>IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/bsf_listener.png0000644000175000017500000001514112032647206023536 0ustar ebourgebourg‰PNG  IHDRàq½nŠ%(IDATxÚíÝMr£:£àä«ìÈ÷rœ1+ñ8^ŽÇñšúæס8B!–çt¹1?B"ðZÈæýûûû  %ÿS€€   €€(  (  (€€  /îcvŽãñþýýžs8ÃÒ•Œ§ç¼Ì™3Рò” sŒ#ÈT(ÙÁ7 ¬÷‘9_Ð1•NúÙîS‚nŒõ]:E@@)O?¯·èÆnñDo*õ§fß{ J;•Æ JNPQÍA²Ç /ó›^¶ÝT¾5»àÔÌMÝÆ€–Ûƒ2¾Oõ—Dû¢+©_¢$Ѿ“áÇCh£½2‹ö(ÑÈ2_\Ýw¸x÷bv[‰ÞŽô²Å ۔谌Ù~ˆêƒdƒmM 7~E@I„ƒh>Øhl46 cJ"£Ç¹vVylôõFú1¹™£q‡9fQñŠÊ”’}t-ôý%µ†Á¦ÇäÎløÖ=¾ÅË,Xñ‚Àå=(³_fÙúZžØbº0‹ ¶Ý`Ê»‹.ÐO3P@@PàÑf~êþz½ª# ®®ën·[y@¹¯B=µœÏçÙy²˜Î8›º\.^ÆétÊ™í£ý=ùúúÒœðn·ÛápÈ@b,°“ü# ÐPæd ’=?ÿ~Gÿ»÷÷÷áÿþý}«Ÿž˜ÿþn0ejbæ»ÀÞ¥Ï%;‡’@Jîÿ rÃð¿Kó„üÏP¦RKÿú_úþ•aGK´&ºÔëbnú˜>©(È4÷·îÓ£½;ã9å!˜²l Ê0X¼ýÛ§r¼Ûw·ÿ1œ¡Ï"ã¥Ö«rÕ¿§‡»aæöÙ ß –ê'¦çtðÀ”=(}§H´óc€'•ÕƒŒêس‹"[ýœÁ^½)ðše˜Q†! :q½üÕF¿"ä›;ðìÞÓòëõÚuÝív{öýô°@hÄù|žM~êhŽ€4gþ[<çóùöóz½jlx‘€Òu:Ú (/0<x:Æ  €€(  (€€  Ô (ÇÿZº`z†¥‹´£b9wÛëü õs&ylc]kJ>¬'€Z>Š—¼ŸŽ¿¿¿‡§éþ¿iéÙžúDï*5Û¾ÝzºV–<ÿO€­JâÌ>¼ܧSúp3õ"}®ŸZÿp=AŠŠÎ0~ìKb©Äõ,X|jΩ2gÆÁœÍ¥«%Z°ü93K;ÕôÑJÈ©ÀM®tCO<Á¦Ø) \¯×`ÊŸ?¢×³ñI|x%HŽûɽ1;s´Ûfj=³—è:£‹'ö.¸¤åÌ™yIKÔÏpâÒjY3gABú–P¢þg'V<º2›/g—Ç5üèº.çQÄù«þ÷gÕÁçÑèI¿ÊŸèÌÑKÝÔzfs@b[2ÎYyNý,­–ûu4x«ú퉩ŽhVˆ>ZÎ펮œÆêË™^sð'Àóù\³¥%éËÏn7àu?l±Îüín—l¢ãˆ3ÓØpPgf_ÂÖ;žmi9÷©äü>˜œÏT(eÝÛ¥“®s‹9˪½l†M6+×ìBÁý”ârîPɉã¿Sù׌s¾™ù¥Í­ÃÍÔ½ƒ•½ U¾š [YZÔ5_‹]t}­ø¥â©A¦K˹þèÊ_CЗ³s(PJ:N‚ Épú[öø‰èf·›YÂૉ‰Ñ/n$æLŒáÈ™3óSøTý$&f6\º 𲬱Òõ¿çѵ~ßu«Tñžs>½^¯™cnËú66:§ß )è3(X<ÿ¦Æš²µfê;J/Õ[Æ÷·k•üÚ`kù‰âã…kaê×56]%ùº®Ëù…úüÕ ÿ›XuNwbžá©g»ÛûÉ+çózΧ¾蜪ˆ2§äÑÏÙÅû˜Øb~1ÖTQ´º‚˜ G¡âF}t~êƒ?³`³•óDm‘XsúÍãÉ Xþ³‡Ü≆’ôý…ÄÙ!gž²kêìåaxG|‹Ë@ÙE?Æ ™(ùFÏ;ÔUfÎö ¼MÜJØ­œ¯qðìámQ±žs{'ƒ¬ƒ’8Çåœ8ªl±l†þTýÔ¹h…SU-äTÉ·;ûo]Wù˜ù=‡¬¾ØÁ_=†>pøp•zÞù°Ïú;(÷Nþ‚úéUN:éOÉSÈß»àú‘.ùx‹+¯ [¬Ò¥”¸l¬,IÝ&þåÿÛô­É§k‹áš«×ÐJ@ŽX3ÏìRãN…è 9+‰~rÊ\[´0Å‹äìiþÄt äׯÒ}ÌÜåŠ}ÃRÍnkÑÁ¶è*õÿlÁ2°'j‹ñèŸh-‰,°§Üoñd޹eöSÚ¯:Ç|)´‘ú‰~Ä1Ü`[ÿyQ+; –üDñ¡²hDS?51þ­ Ôr[Œ^¥z+;`gzP€ä'  š#  €€(kùšñ\.•N'¥‚¯¯/•UÜn·ÃáPðK%nñ[)¾5! ÍP`NÉ Ùñ¹õ­¥O`žByÊ÷¿¢‘eŸt¢ýà%UþšñøÙåùSúGŸ£kîÿÛw¢¬Ü´CÚQs Ê=+D»U†§æF vô1b¸’hÎHozj )5{Pr.ü‰y†ÝÛuiô ië (ãÛ%o£›5‰ÓóÌn±`†~‹nëÀË”ñ>ç¿&Ì.•9CSdhÓóýÊ}„JÁ ýôa.™]ðÜe8ÄuÍ<³KÝÿ;þN4‚¤W4è=ç:}½^»®+xáÓ¹\.žf µ|~~þ\Xû‘Ÿ(üÔ=Ðh·*Ün·Ëå¢@@iÅét:†¡€€Ò–ß0g МÜ”óù¬²€†J×uj h+ –ìÉ@@P@@€­­ú©ûãñ8üï÷÷÷¢óÿÌ0~w¼¹ÙõÌ®³¢ha•pÓ’D«bë:€½Jp<þ#ój—ž-"U®ôÑuÖÕΕ~QõÊ(¼T@I\‡—Àþ“úpJŸ6¦^Î`b¢¯"q…¯í-Ö 3.Iz/¢ëÉ/aºØ™‹Wo°ðLåz½Sþüù3Õ±\§‡9cê“z;¦òÇìÝœÄF£Ý'Ã9—®0(ÃTª®ýÑæ;‘âêíW2nh¨«ëºœ_¨ÿÈ_Ýð¿?«>ŽG/UîøÔ +ã‹w•~…ÌõôKß­^½ºÀ¦òŸ=¼àÏ8ï÷>š¡úÝŠ­WØ'˜hÂK¿»] Æ Œ‡AÆ…tyû·O%ºTßÝrüÇp†ÌmÏ¢¼¥ÏŽ}§ÈpÊTÂXzGIß üÆ€’“r:3Æ(ÑìRe[À‹”*!&"kŽè2€—±Çï ÜGì³?ý¶öÜ(ðe8 õ-Ù½1\²4[äo x ï9—óëõÚu]Á£Ûq¹\<Ívöùùùsýí#D~¢ðS÷@s 9¿gWo·ÛårÑä  ´ât:ÃP@@iËSò€_Å 9¹=(çóYe ”®ëÔÐV@1zØ“1(€€   €€([[õS÷ÇãqøßïïïE &æÿ™!úîÔôõ¾;[Εµ·Ñš•œf-;J37Zp¬nz\µyàíßLûïfY³®9ò—]3çø<ßÏóØ#yë?óW:«÷UÔ·Z´–†5Ù¿´rÐúãc£b |Ôúk<þ#³déÙÆ»žž©©ãfå¾PÖô‹ŽÒ5íØxû¶yÝ¡]¨Ò:m^ƒ·û3™£î^'Ñl1þÜ5[‡ýœãD[«ò?¶8|Ç),˜2àãPÝÉqf¦¹ôF§rbú£F"Z¦[kª$ý>Ž ¶(ºNíQÎ>¦ë$±wÑ‚¤òÙ•G_/j£œ³IfƒNíõÔ±š_95YþGŸÖši鑟yyà>æïõÔç×¥½ 9ç·E2é“äšÓÅl…¯,êÒSeAyÆGÝʳôú¢.ª«`ïî+,ˆS§—2YcP®#ý JÓïg´¦ÒáÃêHýSkÈÜhbæè±5µS‰=M/;µ‹>þ¦w6§lSHÁG¥ÙZJokªêrš ZÂEm4û×XРã¿üıšØÓ·Ø­¢5MVP7SN«-=‡åYtÂY/ƇGÝóX±èƒüòŸ=¼à[<·è§ÇÞ[4\«x8ÛTl­ñ1µÊ_±lù…nkê݆×M•a*TmÔ ùU½NÊ ßN3ÍžU‹[§…}lód˜SΊMS\áéõÿõ6}—|ÏòÌÎ0{Â)+Øž'ÿE±!È5{PV¦ÔH'‰.¢a×åÊO'9+É,­²-=ÆÛ¿»Ýàÿth îªn× 95Õ1»] ,mć4Ó˶¿» ë–³î÷‰–®?=Àkÿò¬'ÿMýoÍŸÁl(Y¨ËjÏ^Ö`§Æi=3ãOý…D£^ÙÎF˶²Ú§Lo+§$۵ѢºšÝ‘Mƒ]­}V{ÎÁÐZ3¥K^ðé°ýC±âIréJ*~ÚÞúƒ{ UúQ*ÁG‚Õç¢F¾@^P†£‡†;3œž¹‡Áç˜Äu:§0‹Jž.ÉÔ"‹ö4½ìʚϜ'ý >q=º†©ö*®º¥»Ÿ¿¡©ÊoÐôÌ«ù{šÙ¬eM6ûÙ®…f:Õ³íÒÈ¡¸ôD1.Ç‘töüVVÎZM³¨Â«TéÖå‰~Û«øvQá眥}iã§®õ;t˽ç¬èz½v]·èÖѽ‘dº°æžëÛóô]?c ï°Â­«ñ7üî¶Ãk ŇGÁМíþ4òÅÇ5FÝ/Xï=V]äžô@Òp¬9<†ã®žâôòàà÷ÈO4G@P@@PàÑ>T0¶èiãÓ·ó“퀀¦“á£ÅòSEz6Ó Žaæ?œ,˜Ò‡›©oÿ}h™Þ Ê îÞqL¹GŠh4‰F¾ëeØ#”³ô ¡ ·#)ÖßñS€=(@<=LÝÙP€†b €€<ÌxôIÙe8ý-oIðmñèZ€¨÷œSÌõzíºîv»©/ “ok… 9¾f lBß °w@¹\.*Èq:v (?¾¾¾Ô8öùùy8 †±ƒl¥¬ûD@6T<,D@š³ö[<ïïï÷ÿþNþ·ŸÒÏ<Ì9»¹Äüý»éÙrVUËl×ÔFÎv×ìf°l´­kUEb‘õ‡M¢òûõìs<°G@žÓsÎïë/Õ¯ßMr (KÛz‹*ª¸Ýq€»'! å·x‚³ùÔ'Ý‚µïÿO~ˆÏÌXáx£ãÆ£[Lϳ¡tmälüzªN†… –ªÏt[gÖUÐ|K‰*Ñ¢ÎÖXþ¡ÀSö lúI}ö#{0çÔ'àñ §Ö¼h†þ“ýìÊz ,Ñ÷(IpÖœîQH×Oºu )>xf«q¸•൳€€¹ò•M,žm8çìUye‘ŸÔ J»¦ª·ë'((Þ¢Eú0¤ ÒÊ+^¤£B+JöŒvud–v»âmäU·€€Rÿ³þÔ}}:Æw4Ò4ÕGtVü:UÝmí¹_4¢|ìx¤dp_¿ìb¶óçÝôæ6YY¼Ú}J›î¹y«ýmš•G`~¿—®€'²ª%qÇaÑ͈h¸ÙîÇ6Æã"ƒr˰誖(|N…älQiƒ±Ñù·ºå)kèâc£ þ5–9b€‡xÏy$úõzíº®ÒÏårÙèa»]¶ØÐ3^Òžý2\)€}|~~þd†>B‰b«”çõ›•kØËò2é¤ìxóK²Ížä›êA^IqЇÍP@@P@@P@@P@@PP@@P@@P@@P@@P@@P@@@@P@@P@@P@@PP@@P@@@@xe‹Ýn·Ëå¢ú€VÊét:___ªh% ¼ýÓƒ¢î€ƒ4'·å|>«, ¡€ÒušÚ (Fœ{2P@@P@@~ÿ –Ì3?íq´IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/login-config.png0000644000175000017500000000353112032647206023432 0ustar ebourgebourg‰PNG  IHDR`p¯¢=4 pHYsÄÄ•+tIMEÓ 7%}฿tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíÝQr£8P¼µ7ŠÏ4s¦äLö™²®P¬P I@Œñ{_1e!ÛêËívrþyv€ã’ €„$ $A! I@H‚B’ €„$ $A¡Ë/_¯×aöøÅçÊÈÝGö0‰Ü|! µßÿj‡ëõzžp@¯7‚¸^¯ó+°pM¶ß$Ϋx·ó¥ÕÂb?+ïZÓÝïò ï„›Äq[æ6HÓ»Ðüª_½ÝnÓ¡uöïr¨!œ?vL£P…c-É6óÝ£W»Múšô3:åîó]"œÌÚGŒdŒZøçâh¶ª¬²¡úŽh[¢ÝIDATÕt:õÊa“W£ëƒd7€¬U#ˆìm¼™G÷½‚ñ:_ó.÷ªp¬ò  õt²D#¬ig¢®:Pd¨>_6™¤ß^Ù÷YùÕì–›¨ìÕ¶a»]ޏxÜú Péi“”§çšäN’ ^ýÃ|Ÿ›pLÿ³ û÷7ÃvGÞ$LU ¢/޳\Ùϳ¯n%êÒb¯ºµžNå\ÀÙé@ÙŽ?ÖÚö Ow²Ó;>b¯îõ~î ü „í“IDATI@H‚B:èµ¾¾¾žÝx/þü™74A Ãðùùùì.À»¸ßï÷û=i÷ˆ„cv I@H‚B¥IÊùZÉïÿ<ér¹|ÿÎî—ËåñG÷›"Œ{­<åz¿v ^×òâ¥àÜ”¾Ì/ÝÖõÝ›ê8(ìªócΨLS¡|Vy¯ÖdïÕÆÇžÜŒÌ£M§²ÇšG{ü=¶'û&kN3:ôüÿ¡¾Ã­½â}TÍAÌ׃½ýH^VÍI*茹 ¾ŽN${·£ûÿâSÉ¥5ß1‰öØ>¹ØšŽXyšIØù!ÖtË#ˆ¤¬ãP&%=XIDAT,-Õº2â3ѹíÅÐ-êRÒX3ìÔ÷¡rKÕ>bd•ŸçŽÖ8onñ¢íztuRU "Ik>Îx•¬òpÞׇ#ôœsxÎ÷ ÆÊ.{”xé¸fןۥM"J°Rm‚˜O.´^ÛÉ^õC‰Ëÿ ?×ó8E÷Øl:iWß«Q6f¡½)f´ãüÔjºÔw"Q*ÃòžJMUp¢Wë÷ÊŠÞâÙöyã4}ôÅ,‡Í¢r±æp•‡îÛË“‹ŽûsïVÓ›áAÞúì49O‚8àxÀ.A“ã&ˆûýn])x®ãÎùøøxvà½ÌW”:ôâÙ]€wg= $AðiôžIDAT! I@踓”ëù”ê½XáœM¨¾5ÎB çÍ$ $A¡R‚H–„Ùcõ'àÈŒ €Ðf…s²IK¶¸NaÇÖ2<À¶zFÙ8…º8cã¸{²ãsËð‘þ/JvëŽÙ¥.7)Ãl«g1äÏ êtÜÌ» m˜7…]uŽ æÏÓö&ïP†^TçDùªþå»qìd¡.Frí=2BÒ^h¬1?JÇ^†°‡ã.Z»Þ××—_sB¿ÿ~~~ú5'Ð@‚B'_0FõXãÌsƒê;Ðâ• çlBõXÃ’ €„$ tÚIJŸnB“·+œã{ÖPI'èIDATá ¤pÐL‚B*MRÎq9à7Ö¬X”- ¢5éÓÛ·pN¶1©…“mÌîvÒ¹hí|XÑZM'Ù&Q.À“ÔÝvÒ_#»Òl’ ‘¦kÞvµœ ®?†ÙƒC¶òUv±éhÝjW8YÃ$e!;L·œn“mÌÖàÌžk³ïAd«é,–ØYÐ=›ÍA$c5yc6Z9NÔƒØÕi­U5ê)œ4“ €Ð™ŒQ5V:íÄ j4z¯Â9ªæÀJæ €„$ $A! I@è?Y»ö)M÷ÕIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldap_defaults.png0000644000175000017500000001271712032647206023674 0ustar ebourgebourg‰PNG  IHDRÑwuäæ? pHYsÄÄ•+tIMEÓ 5E2ä±tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíÝ]v£:PÒëΉŒ)SÓíºhJ€?þ{ï—r0Aác!0újš¦iš €×ûÏÙø 2 ŽÌˆ#sâüÓýóx<ªªúýýœ©{7±8s2öB ç¿‚Çã1Y½U>Wò¶Ç…ô‹ÏÕx©ííÜÇã1—Œ« yéüa6lHá"¯ØäËîFx{ÿ”ÏZÒníS]¦Œ[RÃ)ÝÌ™×äoÚ@+Ù{å‹7µ"s™`]UÂÎùçº2’·†gÖ㎔¹)ãb“ œ,'¿-ÉÞ¯t²äÉ:n×Ú2cy mÇÂpJònæ­U+Ê—sàIza…_Q‡¬¼’IDAT—n0´½;6l7͵‚ÇæL“*õi|Q¨_]Ò`\• ™b'+PÚÑÌ­t®äqʽ¢L Ð‘™»Áª*¿+ ™m'F¾Ø>°?/©äë’ñuÛôŽÏÜ|l Ù‹\=f÷Άí‡§íE¶ >Áa™;‡e ãÒ^”ù[)† u`JŠÚÓm²¸êmÐÛun5Õ'8´·v—œ©F5uÇkÒv›“¹é-)¶½ëï(غPÇn÷W;7ë"—Vú&ذñÛ½5îÀ]uÀܲå·ÖfNÌ34¿ÒòÒVEmõÊb`l{;wØ&šËšWœÿV3Á~²ünIDAT”ésÈwGÌU{±œêï”_Þ€¿,¯p¦¶Ã=\Þë²júúg–»4\çŠÄ‘¹qNþMD½ ÀhçÄ‘¹qd.@™ GæÄ9ù¾…çóynÂ4Msþ½b???gWàåÚ¶­ëZß@„î´^æÄ‘¹qd.@œª™gW? àëëëßÿOþ99ÃpbÉüÉ”ñ<¯6ÞÒÅjOR8g²ÒÉý „ù;÷šÃü;dSãÀš›<ÃÜ<ñVU©ÛpÑ w´p¯Ø0ˆ“! †ÍáÌ(/™ ÖêòèuYӇݸí<\õ°Éë¹Åû‰ÝŸù­H63_Âë`:æIDATx¥sÕ+Yxµ¿úsÇc8G“¾ÛJÖ _8œ!ÍðšÍç±¾ñ8liöËÛž“‹÷»t[Û'0WÂäJ3ö, âÿíܾé:œRÍ„fáà]«æY¥o¬Íµ «™hÛÐyÚ¯e{u_Ó–<ªLí\“ö-LW>ŽãEÍÛ¹îÚüRsçÝsî©Ï0©7çZ¾V›ë|HÝ€µþÊÜ$[÷tÂÜö0Ù¶]µx»;£grñLÄï)v\憰¿nÀZ¯½?·ëí¾ØcÃ{$Ç¥M–?·Òaî¶µ—ôŠl®Þžº;¥™;î¨]—ÉRå Þ¯¿'ÞKίÇ+ê'Ž#~n’Ÿ7"IDATâäâ“÷Ìmûb±…5™Û]ýµ¸×íX`Î?Õ(ó×ÇæÞ-_jRþÄ|qzáýs ®­Ã0U×.^2¥|þ|M2/× ¼‚ßþÄ‘¹¥´ ýÎfyÛ¶F‹>ÄWÓ4MÓœXƒº®O\;@¤K´sÏ®@ý¹qd.@™ GæÄ‘¹qd.@™ GæÄ‘¹qd.@™ GæÄ‘¹qd.@œóŸåxAž¡l³ø8r™;íçççì*7Ó¶m]×ùg‚ë[8FÉ)²Ìˆ#sâÈ\€8E×ÐÇðÏßßß×TàÍ-·s»Àýý£E0…Vß+6läÃw.Ž·Ù ÝIDATûùûìÎ/ÕÏ0|‘_]2çâRIý5Û0¥ý¹Ç#ÉÓaû·EÛ\•/õx<†ótN.8œs¼ÔÜêâ-gn’ƒå±5™}å5Kf¦jfε«ÐÈ"õ-$ľ-Ymm9îY*éxÝê·¢?wòô|[;qÃR{ú^5f‹(ºoa±87ÏäE­U%h²KZˆ´ÜÎíÎåÇWÿ“é…mÉmKMV㥫x…¯¦i>öižÏ§çŠk}ÿüüx®ÀUÈ\€8žY>­m[£E‡“¹š¦©ëZ—.p8™;-ß °þ\€82 ŽÌˆ#s✠Í-YÀÛXüž.IDATYïù™[U•»²€7жm]×~û ¡ä¬]æÄ‘¹qd.@œåkhù1K÷¤p€Ni;wnœó<#ß íºWl<`ÏdÈvMÝ=ƒH¼‡½ý¹“ßa£¸’³loçnróºÞCi掻X«4så,À~q÷ç>·1n{æö—Î27$¬½· à½-÷-dzÆoe¦èðÛ_€82 Î%žYÞ¶­Ñ"€Op~æ6MS×µ¡"€Op~æVU•Êàmèψ#sâÈ\€82 Î˯¡¹ øMÓägˆ¸oÁ}`À'hÛ¶®ëüXúŽQrZ/sâÈ\€82+Ç:IDAT Îò5´ä‰ãýcp“G•J`Qi;wrLõñŸd¬ë[0ÖÀôçŠ`€B{3W.@¹cî[ÐÔ(q@æjêZ—¹nØ£4sG&p¥0@‰åßDÌåi2]ì,òÛ_€82 NÄ3ËÛ¶5Z@¹MÓÔum¨€*¬°€ëÓŸ GæÄ‘¹qd.@™ GæÄ‘¹qd.@œí¿‰ ±öÑbÇcr‘aÉW678üúš{ 0°ÊöÌÝ:sÃù ìÚ»ªð€Üù•|²ãû;IÉÄþÏ$R“Ä¿5œÞÏœ¼è‹Mâ{ræÉwÇk™«ù‰Ô—³IDAT¸| ‹ö ð¾îÏíÃe:㉓©º()¶_ãb±“‘Z¸¢ß?Jj¾XÃâmÞSi;7yNM]×k×Ôç×Ú«lZ­MíUÁWž•«jè¡?ð–J‚qEßByÎŽ¯b% Þò•žnm¹Ä†o,àâ ÛR/y–ã8U“®†»Äî¿$€+{áý¹ýPÁù1ƒ‡’sù~Á«T8àÎÜá=^ýŸù‰›KØP«á‚“ó•I&.V ñÕ4MÓ4‹óµm{ß^Èa°ÊDà C2blžÓMÞx ï#2·’³À5xÆ @™ GæÄ‘¹qd.@™ GæÄ‘¹qd.@™ Gæ•(qûIDATÄ‘¹qd.@™ GæÄ‘¹qî÷ÌòçóÙ¿.Uèî>m{ËÙ3…ì¨K¹Sæv‡ÎÏÏO?åûû»›R8²ü½|Úö–³g ÙQt›Ì}>ŸÝ¡3ùy +|‹=3®ç+jÊïÒ[ì¨ñ‡%ÿñ×°Œ=˜ ?Ø’);çD·ÉÜNÛ¶ñ£Iž kRå’OÅbÛd8äûæS^á[왤z;wÎ6·ØQGY;Æö‰;ç÷ÈÜî; ÜêÏ÷[Ó4™ïíî‹wq¸õ ÿå“éŸLìÿ\õ9ï·wòÝÉXñÿIDAT¹íMÖÛ¯1ÿ-µXá _r—Ý3Õß›PRÏÂ)I™·ÞQÝŠÆY–©mæ¼p®ù¼¸-¯Û9çú¸û’3 ÌÄÂr†ÂñÄþ88뀘¬gæÝ¤ÂùÅË×xúžé¾„JêùûG5ú„/î“É/ªL•&+P]ìš«m¦`[µï¸s }\æö&ÿ“ùŸKŽ z§ì™¤ –OÃþÃ\øí›lËQÛuâ!4·9%û-ÿn’››kx÷Ï×=ú.+9û/üýÖ±ò˜Å|ÙÐev©=“´=ÇMCNzö¸ÔŽºš·Ü9÷Èܾû)ù$t;}²ëjøë_þŸ4.p|¢º¡Ø|w[¾«®°žåW½mIDATï–ÌP²Èé{fò¬?©Fü‡ù‚;ªÚô-û /Ú9çº_ßÂï@ùÌã·&ªm‡Z*Ú¿8÷P˜«Cþ”yñ„ºüŒ{¼È‰{¦¤Ú6mç‚så\äZkq'$]ák ¿õÎI|5MSòÓ”¶m뺨PFwƒ÷°¶ý-ßs·d&§ÉüâÄLÕßÇÙä¹êäÚ_º½ãUOVi¼á™ OÎ0^õe÷L5¿sëYÍ%»ô¦‡PryªüPɼH¶ë"GÑá CòN™ÛU û!Mg|Ë÷;ù´í-gϺԎºH2¾ÎfngXOøŒ}Úö–³g ¾£ò-Ü·Q’÷¸†6ôiŸ®OÛÞ(¹&ºIDATröL¡ÓwÔ{GíZ÷»†p_2 ŽÌˆ#sâÈ\€82 ŽÌˆ#sâÈ\€82 ŽÌˆ#sâÈ\€82 ŽÌˆ³ëù¹Ý8y%Dø{ŸYÞ õ1§{púéL¸ˆƉÈDj7¤ópJfhÈòchïŸ?_ÎÜØyÛ ¿é ÒÀ¢WÍsVjô”æ+ðÒáðö +]ME6ð6^’¹ÛR£phåÅ¡¿«?ã<'ãEßê _5FôxâªH-ÙÀ¤nå…·pÌ} ]Àõ¯«MgÓÝRÔœœØé'n(¹_p²„$©ó+ÿv)ÜÀ|Ý€»;ø^±çìIbÕªì‰þÙEIDAT>w«Gö-ì ܾÍXrIjsÝÎZ|®œÌVoéàþÜ=©‘œt{–½³£Òp\ÎÜVoéȾ…=yÑ÷Ï2ì2.)m²¨U…”ÔaóÕÂ>dµpᣓ¹å}‘Ã{¹†q3œžŸ˜7žyC!sW¬¼´ò _0ÞÆWÓ4%?Ïí~Q–L|>ŸMÓäüóóãwhÀÛ› ɱ]ý¹MÓÔuÿù/½½×дaÊy–#@™ GæÄ‘¹qd.@™ gŽbn Ø©4sK~_@ž¾€82 ŽÌˆ#sâÈ\€82 ÎÁã¡ÅË?1 Òâ·Ïܪª<4«¿)IDAT¸‚n¨ˆüÏÇô-£ä´[æÄ‘¹qd.@œåkhÇ#™òûû›™9ónIùýâÝô¹?î¨ô¾…’°§s¹®üÇ㑤ö†¸¬÷Šõ­ÎäEõ'%3­ãL‹µ[PÎïjWnŽÃ”ÆåïïïþôÜÓ|¸”ÒÌ} ô ó´Ïåj}·¬/ðNŽìÏ}M]à=Üà^1M]àmeî°{!«Y~€[ÛÕŸ›ëZ}És÷3l(àj–ûsCpòõ\JާÎ)v7ñ,Ǿå+7‘¹¢ óÏ,oÛÖhÀ-Ü>s›¦©ëÚPÀ-Ü>s«ªÊ„p7øM'þyIDATÀÛ¹qd.@™ GæÄ‘¹qd.@™ ç~Áíä{4ùTÏñÄÌ8§åÕð0‚É\îªðAøs øÄ)d.Ñú”ìTßÇeaó¶°üNRx?±ÿSS—`ús¹„aç'–39Út?qñáúð"2—kyÝàLIòÂ)d.o(¸oØÃ —séÏ%Ô°#µqxÃsnؽ¾«AS—³hçr‚ß?ÆoM¶Cw&U"É\.a|uknba9ÃÍOêðîPô¼…ŸŸŸ#*zç'IDATÇøþþnš¦®ë³+ÿÓ“Ïç³®ë¶m3s–>ã&_ œÂaÉíèψ#sâÈÜíÆ¤ò*®`Õ‘é  &swq¼«ÈÜ]2Ã#>þN©þfU‡óÒ|æÓÈ\Ž1Ù¤½T;®@ߟ+ß>]lc|&¶IDAT½j޲̥HßK0|q÷fl¾v±—V7.È\VH®› MvÝ^ª?wîV°ü-b%7åg€!ý¹ìÒ¥pÒæœx¢îv…jŒýµ¯ÉÄœ|7¹z–Y2´s)’¤ç8aK&ÆË¤áø­á”Ég€EÚ¹qd.@™ GæÄ‘¹qÜ·ð¡Ú¶}>Ÿg×b5?ýâ¦išæìjí·:IXÞvî‡gp ý¹qd.@œÿg˜ºŠª+ÏcIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/aggregate_report_grouped.png0000644000175000017500000001721112032647206026125 0ustar ebourgebourg‰PNG  IHDR^R·VPIDATxÚíÝQv›ºP'Ë3rÆ”~w$ýv†ÓogL}Éõ«! ˆ½?îuŒ9’ÃËív;ÐïUH˜$L& €„ @ a0 a0H˜$L&€9Ç}{{»¿¸Ýn»‹ókãÇnö#Þ–µÂ/˜Å!f˜úRŸ-¬mË_ ŒK˜îö}†ãPƒ÷í_Ò8 ó\+jž°kfWù¿>^·>’9ý—ù¢VÓJïâ_‘ÏŸºÙRrU­Ðò± ~6ðóœ’kŽë™|âÔ37“L ¦ü)ó]ÁMŠ|pbìS¶x¦Ð Ssbã>íѼ¹5ƒÒ—äOçµÖÖüçã»"«JnUrn)ù‘ i쪚[›¥ï³'sK°ý„)â1–'OZÿšOSò«{QÙüM2e)ØÚ²b¶ž0mÿ Ñ[ØÊÃü¶$L#²ES‡‚5ÏýÅc(sâ ¨Rô¢ïä¯ë“ùJþ²î±çËîWÅWÏ]2_16Ç*ÞڱŬb†k˜šS/cÿY¾{¡OðçoÉ?ݾ¾¯ˆ'[ÍKàO±û Æ2¸.ý€U¼–ÐÉŸzõúù¿&s¦¾åƒ:uîó4q“º O}Ôy=I¬èeúHÜw›Ê¾”¥xšdÆU=Ù ¨Æüwú.øëŒ_0»îôœDi^¬üÈÄ/XÈ‹„ ïUH˜$L& Àv ܇é÷ïßʨÛÏŸ????˦û*”#P«_¿~ .ºÓw>çZÔÇLJŠòþþYì¼ýH®×«êf÷ùùy¹\" ¹è8¨ø‰, €„ @°¨ÐEßooo_ÿ½ÝnÉ>ÓËËËŸ?Ö-²à6|-Özg‰-ßB€„韴i•$©•ì(Ehm§äêO˜ú²¨Çë{:õ˜jND%稒Ÿ*È¢î©I3é¾ÙJ¶Ó?Í &³ªÇ’÷æ×ßìæ[˜Üª¾%åa°¹„©5ÉÔüçÛšÿ¼çLÍüéñf3Oš2qÕM\úÞl½ßJ>WõxÝM ²–¾&7&¸$°‰„é‘ë4ß9ý;]ÔúS÷ufåÁ$#yV®9ãÒ÷f0±h~jb.ÒÚ¤ÁµÅ¿N’M˜îZéQë\ñz òS™â%óÍÌ?Í °­„©•Mù¹\Á§º× ÎÐ$/f*XOwVÌìÈÊ÷az\äôx1˜¸œR'à’ÙL$¯ê.S¶ªâ®uÉ” 4ú”\s’©yY÷Ø54WR¼õÍŸ•5/<ê¾™üÔ©1Ó3jUÍ À[ëÉojó2¬î»¿’‹|…ë¾`i/ù|å÷ïß?þüüü\kû>>>®×k(’TÞP–L¬’‚È{àÉ~üøñ•füúõk0Û9ï:Îäà ~Wü)àö0%3›²tgõ$I–¦rŸŸŸª 0¥½¿¿_.—àeLGL˜NÿÍ0©'`E¯Š@ a0¬è|8/—‹Êº~ÿþ=¸Œ& €„ `Q#®az{{{¼¾Ýn àk«¶³1@•¢3L÷léöŸVò´n¶¤ €¥…f˜ÙÒýŸÍî´Ócáæ§’¯û®ö±Ìc’)ó)5 ›á¦ä´S3‰I&4™2³YÍ%[ Ü6çÀ€ LºS&)iNê$'x\mß&=r¦“¹%`Ûý•Ü}æ)¾|ótžé%`FÛ½ÓwÁäP뼞é%`¡¦ÖUAϜ‰×cÉÖ5éf›€g$LÍœ©™”$ßœ.¾ÚäOðü2˜×K>±øýû÷ÏŸ????÷§‡ïI¿~ýÌv<`€„ `Àð¯ä~ýúUAœ¿ÿVÙÀ" ÓÏŸ?• aÊ©àro€‰\à a0H˜$L& €„ à¨ÎŸy{{ûúïívkþ³ûÎãŸÝ7¿^·þúe0jÉæ?¿>•,‡ÈµV_I¤¾újmÞr..¨$a*“ÉVÉœ–XrÞœ Ybó¦˜Ëe0r#$LÿÌ܇ðnJñ2›ê.ùÈZ‹õå+™…ûë¾n.<¸ÅKægt’ùDÙÞÁI÷îjOýÓW­&7£ûE«w˜É#M+ÿÎ*‡}?ØÎŸöæréc·iåüc™¾ý¥¯õv×°…ÆÐôº\Ywãlõ°÷.ÙýTßúéCEk 9¹£5wÆü¾¿©¶oÛʶ*Þ×µÞŸ±4ú¾hËm)Ó´Zo>¹Ù܇›²z_÷Íw¢n;LfZ»Ûºa¶¦ÇæŽMôZËg‚wÖž?ÝÒ·@Á¾µÝ6NqÎÔo_øÉ!9wU֩βÎ%šSYÓzZ[jÍ‹ÄK¬¯üËB‹Ç»Ê^–©¸±v§3S¯aš¸Ká™X‚‰#D󨺠çíî¶wúNÕW†}ñ.Ñéí¢9­[¶ÓChNZ"ÏH†ßwž_2»8æÙnÂ4oRUVߦ`­¡5ê\îÐ<ç^÷ÛïÞ1súxÙ.‘6-4&C‹ï;«”L}Iyeïô<%¼Ùõûc_×öX óbõƒ×äÔ÷ë–ȕݣéüu ñ|+yòŽzËÁ¶ô䡤ï¯ÉæßL†V°ï,W2ÝV7oËI®-~VjÅfüº\YVjÙn_?ïw2;QdGëÝ[çVÙaß·-³U™-Ï„ÖwñPA§·‹¯UÚÓ#zrÔͯl!ñvþ´7Ÿ3ŽOüê|aÆS…w—Èwßï‹ZÍP‘¼k¬îÇ_-sÔ ˆïù°÷,ž~³›ž«/.[Ï#AÁ:¿Êóýý=ÿh‘í··:¢ØÈ>2oƒœ}w›«‚IŽG£•¼ãËóG‘Ù¿½x_yÆ×°±÷ãÉ:¢°»m„ 8t'¾î —6¦¬³Žyω;Èîöd¯ª@ aXÒA¯aúüüÌÿ†4f@ÁÃo+ð¥²p¨¬wÓ˜-18]Ä`Gá¶zX4f@¡‹˜‡k˜Dg˜¤¨€„)ÇPàÈœ’0H˜$L& À~½¼¿¿+€>_ÉÒ÷}˜®×kõ¡þøñã+Ú#ÜPJ¤"©HE*RÁÎéÇÇÇW°ÿ¿qåqnä-R‘ŠT¤"©H;–k˜$LÛI˜ÞÞÞV\rÆ’_úÖ°ÜW¯n#›±J¤Ír›Å•l¨™7K o¨©ÒkjùSÚöfóÝo°ý/Hf¸ÙN—¾ÜæõµÒLu¯ÞŒÏ'bU{»ÝúþYY˜µF—¯Ö²]qƒÕ êþ:ÿfY½ï´‘ôUzem~zÛÞŽ…ªfbû/Žâ8lq‹Ýìhûúœ‚H‚Ÿ¼…c³þî67ÓäÌqL&Òø ÁÓMZ±$ÉÌd´>¸JuOœ¤ÉÑØŠ®c£/Ì-×oA85U\«wÚÎüØúJvÚƒ}Ôf+%Þ©f^'ƒtM}ð„r‹dE­c€²Iô­Ï0%m3‡¹«$•c3òµ‚j­?sè?v†`#³£f2Wõä#×f¥7»§`e%³ñûéëÛi±ñJχ³ÇY™`Ûn-¹ßY´|ÃËG·nìÁþ3E7i5u[Ѧ:ŸâIô$L™šØ]ïÓÝøHtÉe¦„¿ôõc'‰÷¤ƒ’,ÆJF±Áv>XÔ@/šùýÚäŠU|ªÔCkµädo?Ê]¢ý/Q)LjÁÓÍi ÉÁ%~®<Å\ÁžŸßÜgYr¡-Ìì6}gU—Øæäxüxs¹†‰ep™íW÷BÛ¶‘pºÃ@°™ýhì8? Øuþñ´‰„ &y‹¶‚ÙR·Àó×0õ†Oèpž}Jn›G?ƒS)‘÷g¬­üÁrûs$–üW—è£7umÙÆÏ¾ÙFÍQÉEöæ±JO5å'}—Š/äõ™2~ô¹»¶;vƒƒË?­Gkµ×Ö,E_²86ÀQ¿Zr®dãMwƒûÎÖ6é ?͇Ù=Ï%cØi¶W¶Çe–y~Kl~£ŽH—»­ÆyÑÊ{\sJUmùzÎY§Yª³»Íc»›nøÉïÚZá nF²@òon¼ºƒu]Üž¼ñÝÒn]»ÖW}ב7ÖmÍ wŠôWÉ âJFb ¶ÿ]tGcOÇ÷ Á­?§U4›_þ¦x7{¾¼¿¿_¯×êóññqRà"]´ým*ÒEcßx¤Ç©S‘ŠT¤ûe¦÷ÃG«Ö¯ÿ~eJn\ÉSM6èi÷è;aúÊ¿²§#D»‘Hïéê"}ÄÛÌÖ+Žô8u*R‘Štk‘Æ{ڹƠãTëÝÿOÉ!ÔûÄšHE*R‘ŠT¤"l<Ò¯Ôð+Sz=ÐãžJ˜zÝÏ<¶/ú~yyùóçOæcƒ ͵žŠ%‹¨ûæ×;÷;-ÏäöÇßÜ{¤êtבƫ¯ÖÖï©6»ý-öñÎ*aŽí1ú1m*çn5<¡Ĩ"ê¾Ù¬¬=îÉí¿¹÷HÕé®#W_­­7ÞSmvûËZìÓÆÊé£@{ÙvšÊë”Ìæå¯îÂÍ7›Ë¨³ç–*Œ¨ÊæÑwä§N+ÛO«¤ÇÞK“ ÖT+-hÑù7\þçâý$’·&—±ïrP§ª¯šñ»;¬vß”./ÝäZç ¢5»vô„©™ÐDJ¤»Àãƒr#fé}ªÜ3ãAízÈéë¾›á7‡ÕƒôUÖé¡RäG!Ü_l¤LfÉf‚ÎÕUÖéqrúÒ…íLºLI’ò¼Ó›0õ]ˆ:¸cônd0½tc¸#Oæ×zW¦«¯¸ºk:혰‘×·ýþjޝÉ7ÙlG4Ø2“?Ê;lÑ#%›œµ‹L2×1½ñƒƒ]_Ò¼àÔ˜óï¾Ye¤UÖirû«¬ÓxøUÖim2Ó3!w?¸úù¸±Ñ4×»t™/.Ï’©HE*R‘ŠT¤‚íÔ³äB$L¾OÉ].Ðu?%÷}Ñ·³Ë"©HE*R‘ŠT°ÉHï/œ’ aðϳäš>Ð`Š#ßÈ®¸|ºoîýN6ùó¾¹÷:­2ÒCÕé”ð÷Ô¨žjƒ;Z~ìËÔãºôÉD—i`­O šú¹/IZº4ÝDz |’7]ÝõÓ¸ ž•½ß]=X}괚㜺ëtTOµÁ­oà‹Ôcë1ó« ƒ‰¸wzS?ENÉå úå¯îÂÍ7›ËÈmçš[ªÀqšÁqÚ|2̃ïï{GÛŸÜтۿý‡©Í54´Ò‚ÖóÈ;òyÊ®9lJ.#[2ä¨S¨ã0 ù°öµFÖâmlÚ±Ê!Pæt[fLÌy¾ãœ,ô`³ë{0Ms®Ò8Á¼½OM‡8U>w¬YMù£á*Ÿ%—i¨{W+ÈŠNÙ'¨n¤Lf9áüà‘Çô©×0EF/gO™1·¨éAÎ_Ù9­ò¦LCÝûzd¦¡²é‡n¤ÉQrݨ¯^*xÔ·Q{8a[è­þ.Ò'*qŠûÌV¤¢ëeR¡™~~kÕÙž²óq{Ñò5’¦ák˜î…›¿Ø"“kWy&eSDz»¾ ¤yÀ#„Нì‰TßÞ#Mn¼¢Õ©~æ9ýLÙ¹ªÓ¿¿^ÚÂ5L}{\pÚ>Ø\7ìÒùt¾©?|÷z½!·ð<#‘ŠT¤"©H;6ÒûÃw=`€„ `À÷)¹Ëå¢ ºî§ä¾/úvvY¤"©HE*R‘ 6éý…Sr$LÚwú¼yÃ,wŸ«øR3 >y`ï…™»éÅ¿ÁÖiòѧñOuÜEއ¿÷Ö³š:=õ߬hûýLA=®ûHŸÌ(Ðב&;ãïØ¦rîVÃÒåX外«³ü›{/ÌÌö'^Y¤™x÷¾_DªoïÏ®*xÒû®;½¾û}—Üf?SVÏ+ãµ0Øcggi*¯euóøë]wáæ›ÍeÔÜŒsK(‹h§÷J>òQÄæ­·Üzë¾92["ÏmÑù7\þçâý<ÒÅ›Lš±#>Téõ=Û²Ê{óWyš5þ($=Ã~ë´ï¤Õ„µJ»Í<<8³@ð²‡Q³kGO˜ZÏR,‘äC[•UV²D×I*Øcƒ‘Öz˜Q볨F=@º¦ðv<Ü}4êFê4_Áj FqäQ»÷á»ñîoú2\ð¦‚5øÔÏZ³‡ƒ¡î7üü0|¨Ãàî\ÚêQO¹z©ïY³îá„©ï×+‘“ ƒ»YdÐj-Õ·“*ŒW_á¤+U§Õ—LM§“óOFç¤×dËÕZt÷eW²%ò§ÙŠîjÚoËv¨ö¿Ýê«õ€uÔɸ#Ôi•;ï®û–ÁßV]ù‘'ŸÎ‘î 9k×=››ÜyºË4OýÚ©¦wd».Éøö‹TCÝæ@ÕŠ+ß[ªÓíljë²Ýx•u?¸nøÑå?;8âW|ä“/®ï‡ï^¯×#äžg$R‘ŠT¤"©`ÇFzø®G£ 0 ø>%w¹\@×ý”Ü÷EßÎ.‹T¤"©HE*RÁ&#½¿pJ`€„ `À?Ï’kþaìÓÇr¦HEL]ÁƒZû¶¿l}‘öít­›ÁÖÑ€óO`¨©õVi¾N“­w­H Êð–K­%×}ˆ^f8…YãöÑCÒ¹/IZ´4“C¦oȼ¹÷’ÌlæîðÕDš‰·‚† †_eVi¦SÊ Ã«'Áòïûk¦¿m=f~õZœã0¤Î’œ¼WÏã¯wÝ…›o6—1«4×ÜRŽÓâTSÑõU÷Í‘7é\°Íݰ`hˆ< ¶5@çß<òÐ|žÒþ"½¼É¤¹öùC]M϶,è+8Quœê;ò.Yñ•ƒ­2œõ}cþá'cÕòoy?' =¸ô=˜¦9WYý³Ê™¥/Ž÷¹»†ƒ‘ÖzŒÑ ¿š'¬zoMš?Ÿ¾n¤ûÎ`ßÒ}:êFêt–#øÁ#ÙS¯aŠŒ^4‰ìù#˜ÈÞwi•ýQ&ºLEáØi¿ècϾí+ÒQ}Kr”\7Ò)_ÝwÐbÔN˜Æî0ùëã—1½Ä`’Ýl$ǹ¤Ê꫸­¡ÛWŽÝÈ‚¹¨jN:'Z ÍI¯óîK§ÆY¹Ì2²%2yöŸ¿Ný¿À¯#Ò‰Kn¶ÿ­¯ú&ÌÇ©Ó-D:vp9NߟéȬüÈ“OÃ×0Ý 79q™ÉL.Ó<û+™Ø‘íºãÛ/ÒúêÞ#MöcUFº£:WJóBÛQÛÜýàºušn®JÜH°K'ÙùÆðýðÝëõz„ÜÂóŒD*R‘ŠT¤"ìØHïßõh€&€ß§ä.—‹‚躟’û¾èÛÙe‘ŠT¤"©HE*Ød¤÷NÉ 0 øÿ}˜úîØúkþnW™ç ¹ÓR™È³©+xPkwûû‚Úu[ŠGZåÖª¬ÓéMºŽ:Ý~µFÊ?ùì䃱W|¤Oßíû¢k Ö‡zÑìMåíÿ±»cŸ ¾ëN-ØPë»kðqê4“l­Z#å¹¥u«BתÊÈ\Øâ&6•×QÇÕ<=‡ˆw7{OÁ7>¹@Mw…®¯N—hç;ZD·ý­Ê´Üµî{óÈ–k˜ö´»yÞ®î®9y,»ß¾)þX{úÞ{¤ä°ºë©î`ã\+Ìd™ï’GŸµž]–yÓ³äæovÎÊQ¼?Wùà­¾ž+~zÎûî"M¾SSø{9Ï8W—Ò}4êóëtú³ð&ÀyX??¡›`®ƒ¹ãŒ4ǹ2±¾3q?RÊ<’|¿Ipr›wtš5ߥŒÚæÁ£çwS:̾dË8þ¤„©âË9W93ç{<ýæ+»`;ÿñûkëžÚw‹é}8z[$dÕgƒ0›œZ®Ïºèê*vÊãñX[‹ì[»´å×x7úuÒ™Õ’Ê àB¹ýýƺëÇk :÷šù–}²w®¿ªÉdJ¬pÑ p®×tÜU˜¹àܶ&ë×ñúç6ªë`­Üñ m%^%ܘIDATÔýóõzÍeO³¦7r0çÜJæV8Å›jé)9;™¿`Î õåìb¹>ë—Pé‚©Ÿ.ù½‘“5и<Úн™¿¹Ý\,õÒ‡¦2X+«¿q² šk‚]ˆ9kžsD¥ÒÅI~flŽÀÄ"‰U 3€ VüýÙë[ûÏBºÅEa3ŸƒšiÕþ¯¿[j¼iŽ;¾11ä8»ÇÀ ÐÌìÃÄÒÚ»n‰¾Yö²b<ÈäãñÄ£®¿ÎźÅ1ÝJ;G'æKõl¶V~ ¬²8f=1ò~­ñF÷ýV‘µO->;7óøœwhw–UŸÜô”}"±ÂÁ”ôðÂɾSøqe¹IDATTí~h|¼ßžúã_®õ|>}¿>È3"ÈýþÆ=\N}@ò €äÈ3"gD°ÃøÆƒ<ŸÏ«w€æçÏŸWïB–ró¬iš_¿~]½ ·öõõõãǯ¯¯«wd™þFfUÔU&ψ@ž< ‚…<üzòU?¦üѳ8çàÁ†mMNټ¹õïµBšÌúì’ ë|||üÝ“ÿý÷¾»Qþ îlûxý~Èõ²ùõzõásðkŸ‰¥Öî@›sm¼³¡}61[—‹ƒeÛ™»‰ƒõÌ-;¹Hb+ƒëo=±þþšè˽6(ÑÇëÛàÙö©Sû€IDATæ»s²?C]ã¥ò 2)§hÏÖ¯ùÖöûå/›3g7CÓ ³É¥„@BV}Ö•\ý)ÍL õ+­œªkqžA³ÞoÓ3Û÷ãb ½æ}·+ÌVô7ŽK´f*êÖ®'Ǹ&[»†±DiÕõìMn«Ÿ¯‹{’Yü 6d¨ÀZ¹y6È­Í7½6,uP?Û;뜼U66y#-=ÛûûpO—ýýY7ôÿ¿Ø¥Ž™\IbðÅâ=³µ‹¬]c+òl|clm –Ê,ÔÚhé îŸ'®]ç.ËNîIÎîuÜÖýuÝ;ûp[ ýƒÈIõ˜{6©9‰f}®§nü ñxÕšç–MoqîAzU=<×BIDATù{ ps¾ï €*Î3% ¢Ïóëë«¢ŸÞàBÛÆÜŸãÇWïMù¿Oý|>K¯Ï®ÞêPñý3èÈ3"gD ψ@ž< y@ò €¶ü=õà×^ºŸŒL|óHâãñÈÿ^’ÄúÇü~ÍâVò÷dÕ>'VÒÿgÿÞù‰TÎû~qþ½­ö‡Ö ‘¿'ûîsútØ`KžµÅDã†~PpôÌÖ¥N¶ÄÚÖVHƒ¥æögqOòçÌ?ùìÜn^Í^÷ÏÆ­|ÿ©Ér¤¿H7Ïq¥[Eý ÷d0ÃÜ>Žk2§ß9¢ÓÎÏ&HIDAT @$YõÙà{küÚûÅlÈô<9ëßÌáÛ™óUÔàçö7zHç” “¡«fØkC916^¶¢WC]£7ŽénM5ß­óxʪµMNï߸êl»Ÿ´¸c{ /Ük=n›¬RÐïŸÍ%Áæ‘FÀ8€s\ð÷Ôƒ‘ Í÷Àúf¿†{¼ÂÁ†÷dó>§×“ã sÛGNsùõõåæ ÀÝTÔø?ŸOßw@ò €äÈ3"gD ψ@žAAßršçóyõ.Ào?þ\5¿ðÚ3ÆMÜ1Ïš¦ùõë×Õ»Móý÷ªk¿õõÎ/àmgŒ;¸ižA!äazIDATžÏç¶pºmƒ¾ùŒžûgD ψ@ž< ãA€PrþžÁˆÿäMz¤ÿQ­Ë³Áo.¿^¯î7”ý˜2kükéáߪ‰¸øß«ùºð<÷7Þhà¶zK}Ö?!O „Ô½[Çãñðæ=Èù'¶Qw¾¸ïö7NFýø“Â\—9çâRÀsoÀñ”îñäÄÁ"s«“8´üN©ÁJòÏyzÊ`ýÝÄví•Jìêd£Zï•jí?¾±;/ãË0x3´ÿ\œs¼ÔÜú ºwÓàŸƒ7Wÿ 8˜8X$Ò›tîÐÖÔÜIžÜÊäÄÍçsЄ¶¥>ëNÊÚ0ÌŸ8ź½äÃXIDAT4aw‹5Óæö®ûlºqÏŠ”>‰H[U›æŸóÍ'yr‘É2níšKóîý³9™ió‡ð4`wïß?¿U»)s=Z7´{0$N2}G×Ïϼmׯ…stä»)ã6M¯;n0]ÌdúŽý~ÁÛ ºõiÝ{p®…ífH<¨Ñ™{ž>Ƀ7ùuÂxhOíö¯ÏŸæ§iü¹oßõ}‹÷urÞ\ãzãE*}“ŽÇb$m¯ûgùç<1O¥'|wëòlò<ŽŸJ̶˜·½Z°ÍÜ[&ýœ›˜þçâšOèüúúZõ+Þùç'Ý×·áìmž²vÓ‰Ó¦Eõ}W@(?þüñãK¦]¶IDATÇA¿ù9.OØÊ Bsò ˆæÐïfŒ1ŽbÀïÅ< y@7½¶vøÅ Æî˜g‡‚£yä;æYsðð'8š0Œ¹@¹õ™Ïƒ”,+Ï~üøqô~À;ô7< y@ò €äÈ3"gD ψ@ž< y@ò €äÈ3"gD ψ ÷÷©¸Äãñh¼^¯k÷¤pò  \Ç£‹±þcÆô7j`¯×««Õ“gÕi ò  Dz×’g5Q¢Í‘gÅQœm Ï*£D›$ÏÊ¢8ÛFžÔ‡fL¥IDATG‰6&ψ@ž$¿³Q‰6 ψ@ž<(ÅÚ‘ºûäÈ3"gEðgÔo’gs ­#ψ@ž\OgãûäÈ3€º¹…Ö’gD Ï.ææÙ.äÈ3€ê¹…ÖÈ3bgD Ï®d0È^ä@n¡É3"gD Ï.ãæÙŽä@7¿…öùÇ÷Áÿùýa<%G»ÔªEÎôGï4=ñÑë£ØÃ¸­Ýê³?_¯b[ù.kûù”?±ýgÉÀg÷èÇãÏ×k\‹ÌÕ+ƒÇ‰s‹¤oÊ«ù&÷'gÏ' Av´PŸµ!7¨Wr´ ¶oÅ IDATúXª‰=Ÿ¬ù Ù×?yÖ/ÆÛ6znâdÁ1·Â´mK#],.îù ÕŽpç!!Ë÷Ï&ÛñîŸU´Î9©|ôÖÏÙÀmý+ÏænžC«›³–zr@Gþ(7ïäõ·R˨˖ñ{Ý:­eϩ̎+4Ó³ìâwžµ­íd¿â¾eÝ:OkßÇ#5r&6;%Ðëjg0Èî>œP€óšg7 Ëçóéû®ˆ@ž< yp¶Þß:<ˆæžß"ψ@ž< y@ò àT7DžtÃ!Žò €äÈ3"gç1ä8ò xi¶IDAT¦» ‘gD ψ@ž< ypƒ%ϺÕGy@ò €äÈ3"gg0¸ñhò ²û q”gD ψ@ž< yp8ƒO Ï‚»ÉGy@ò €äÈ3"gD ÏŽUÂ`ý; q”gD ψ@ž< y@ò à@% n¼ yp á‡ìË3"gD ψ@ž< yp”ÒëÇâ(ψ@ž< y@ò €äÀ!JÜž<¸‘ÀCöåÈ3"gD ψ@žx‹IDAT<Ø_Ƀõ£q”gD ψà³ýßãñWûàõúÏu;s¶î¨[í±÷'vgcr"åPŸ5¯×ÚÿšïÜüsr"Eùlzíõãñ×ãñWû U'ÝôÖ\5“¨ok¾¶èãûëšòà4+ê³D™ÒŸ8.w&ã°¢§ð÷·Þx·BåÀɦól²9ÎY]¿MŸ{¶({ÅLÿÐ&sj@`%Öo…²ÿ¹vÅv²Û¼¶ãœ–+ݩث‡€±Ï.Qúmnº9^ÛdߤqÔ»79j€3ýÓߨ¿éÕMiæóiÛ=§¹Ev¹ƒµagÎÙh·!1pœãA÷Æ&.4ÑYIDAT[çÉûgý¡"«Öv¨ÉÈŸøæ†Ø×Ç 7-ûI¦MÂ+Ÿ«Çƒl0ù‡k\¨â)ÒÎȳF†·,$*âû®ˆ@ž< y@ò €äÀMûVby°ƒõ/$ψ@ž< y@ò €äÀ}E²/Ïöa°þµäÈ3"gD ψ@ž<¸µ0CöåÀ Ö¿œ< y@ò €äÈ3"gwcȾ<x—Áú%gD ψ@ž< y@„!Žò €äÀ[ Ö/„< y@;fZIDATò €äÈ3š¦þ!ûò €äÀvë—Cž< y@ò €äÿ¨zȾ< y°‘ÁúE‘gD ψ@ž<à·z‡8Ê3"gD ϶0X¿4ò €äÈ3"güK¥CöåÈ3€Õ n,< y@ò €ä|¶ƒ2O¸±yÚ†òõ¤¶;6¢:9½¨£Ø];d¿®¶îó´-•v^úùúx<Ú+×ßɹl @¿ó¬kß…Ô¸ˆ™œ8¹øäãô†ÆÓ’^ÿÜQ$æL,2yJUW¸ÜÄðþYwÚ&¸k—ÇÝn¶IDAT“û‹V•¹¡“ÿ(½ÝÏ&#fßæž;ðÄ9`/ßçý=uÚ £¶–3x‰Š^a§)%ÏÀŒo¬OuƒŽ€JÕÕÚÈ3"gUªëCÀ äY­DœÏh¬’É3"gS¢tä³*úÜ,ÏêVÑK àPò¬z"  ‘gÄ Ï¿4²IDAT"P¢Á Ö/œ< y„ 8H-Í‹<‹£–×ÀäȳP”hÀmɳhDÁàÆòÉ3"g)Ñ€}UѪÈ3"g1Uña `Gò,,‘ÜŠ<X`pcäYdJ4`/å·'ò,¸ò_‚»gD ÏâS¢w ÏnA¤áÉ3€ƒ;…2–gwQø àMòìFD˜< yv/J4 *yv;" جäDžÌ2¸±"òìŽJþ„°<»)‘#ψ@žÝ— ؠئCžÝZ±¯K(Á u‘gw'Ò€äÈ3”h@òŒ¦iÀe¶òŒ”ùæ’IDATÈ$Ï&ÜXyÆoJ4 ^òŒi@¥äC" XT`C!ϘPà+ Mž  R#yÆ4%P—Ï«w€rµ‘æSj™M\kV)­‰g¤”öze•.Æ2¯`;¿ËM¥ä DZ¶%S;ÿÚ„BÈ3–‰´Š¼_cuËÞö¢ßöÀkg<Y )ßãñhâ½Úâö¢»î$Õ2È3rõÂe`ß$ë´ëtÝ)\û•g¬ i+PW–· …%ë^ÿòŒuDZQ*ËÆîS¨¹y¶V9/ yÆjå¼|ï섲lÌ¥§4ýwñlѵk>É^âÂÂ¥§Xê36ºOTi.ïsé`73lIDAT¸êõ0x/È3Þ¢];Ó%}ŒsB^úrN/‹ÆKžñ.ƒßÎqÚÐ|!#zÉ3vÐu@iÝRlÝ ÒhüJ˜|G|>þûý]mÿÿý%7½)íãî©á“Ï–¯;ÒfêðûÓ'çd ÿíe6¾5*ÿ|ú:4 ±0¾1ÝvWݲ÷ÃøñßÇã¿þáô§çd@ªí¨–œˆiá&æ®Ôï%ÌnHžõéâj\«I²Ûúx½^ÏçóêÝ€·üÔÍ 5Í´,ëIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/monitor_health.png0000644000175000017500000002266312032647206024102 0ustar ebourgebourg‰PNG  IHDRêá·* ¯ IDATxÚíÝ ´e'ð¾DMx‡%ÃC…pãk‘u†Ã€¼AJrÅNð£îêg+2àæB” Gy8@IVÙ]9kœ›ˆ "  ¯ˆA!Üý’/Ô–ÕÕÕÕÏÛ}óûœœêê꯫¾ª®ï__}}{`dd¤Ð?^¥ ñ@|_ñ@|_ñ@|_ñ@|_ñ`ŒM¨»ÄÌ™3ãÄÈÈH™ùMˆE%儇­—™^ÃŒ¶ÞýÍ¢žë}©•9úë-Æä½`31¡ü¢é^„ö¶ÊíœÈí4Ò#›E|)qrsCr?%wêg«ï¿”)¶L"ɬC¦üZ7Èj­põšä¾<ýl­2€’ÊÞ<ªne«çdæ‚”Pkº‘¨L± •–™Skº‰7jâÝ€2ë}‰÷\r[ÜLF­{4Å·ŸªûQ-¶Lb¨ÔîG™¹Qº´Vî—ÕêêÐ=8_š‘4̹)§é%m,6wá‚‘ä6ÞåéD™°ùÿ÷eäu“JAЉ½2mŒwm,Ä—:MoùA²=˜cj%˜‘¿–™ŸíŠSí-Ä—æe¾kÓkÅÖJ]éò«§ëÞå)¿VåËjiÛØ—dTJ­/97‘Wb߯bÓåÇBªË/þîtÓ©¥bÄ.´Ic½/I“_ðl‹!£î7´[Ì.µ¾ÓT<™S~•ê.©5 ùú‹_œÄñ@|Äñ@|Ä€îšÐ³k6<::ÚJKŸ¼¼9™—§×èÅøR+Ó$Ó1ÜÄ9a:™HϬûª¦“M&aÄlççÎLÂGÁk˧“êB JÎM?u× H+;ö%sÏ(öÇD™g“®šx§)½@’Tª_U·ó#ÓÆ§s@”î•Iægºjâk“”PðÚòÙ¥ºZ%l]ݵë}I:Tr;NªÎ.(¼í[ÕJ¿EîkscИ¬ ÐÀÍ£ê˜ÜdÓh9}¡Ö}ŸJÞXœtÇI£¤•×€øòW21¥•+c; ¸õ“I0¹!£ î´•€ÊþÝ—ä;Ø%¿ŒÝèˆÚî+ù-èVž* Ý3¡—WnéÒ¥ÃÃÃv6ÐË_c´‡`3T<öeBÿ®:°y2ö_Ä€D“c_zù A³gÏî—UóÊ€Í%¾ôòßÃʬª6÷ø³K_|'(f__J„ªæû"»ý_d ”½yT]fΜþOþzoæaé—„éd¢ÑrÊd—Ìà˜ ¡q<ÉËý6ôt|éZ¿KŒ,-*Óï’„¡Jf‘˜]èƒøÒ–8’éžÉÌLÏO:`Òó»ðÛL鎙˜Qª»jâÌêgsç$q'{2¨V!™Wå.Yk&Œoü³uIìHß ŠÑ$33e2Ù¥zÉÎe—yUÇ‚d~&%,Ÿw2Ñ'>Ì-¤zÉê·+XgÇÚÖûR2^4šEzö±Ëg…LÜ©~*·¨‚®½,ˆ/í‘{o(7©$½2îP)>2=%c²&É­¢Ž)_‹5™ì2¶›]«£Ëm ¬3€ÍM—~²qæFýR)qJ­^¯3ôG|I†¹¤{\23k½¤û‘][)Ñ¥Ñèòe iôíÚ²ÐwÊÜÇñ÷vÇ¿yÀøð*Uˆ/â €øô©:Cw“é¾›^a  פþŸ­ë¯oñøÎŒ{nâ €ø ¾â @WLP]°ß~û-\¾ðüïœÿÀ¢¶¼kà¥)•©˜zΉçœúöSï¹çõ“©«+~tå•s-zàî»vRùÀ¦žxâ9oWWyu5²ðÖ‹Îÿü¿ßwïŠÑ¿ì¸åkwŸvú9g}øÔ©«êººýöÛ¿ú_¿øë_ÿfÍSOOœ8q¯=§}úÓgyô1ê*14ïö·ï³{œ^¾úÉ ŽÛðw(N»ä'3öØ1Î|ð±gÿû)ï §\¼x¿Ý'Ç™+Ÿxö¢¿'Lœ|Ñ÷™òâ̇Ÿ\{ɬƒÂÄñÞ²ï.7Í|ú…yC›fî¹ý6qæïŸYwÙß&ŽþÚM{LÞ:Î|üÙ¾uÖG6Ì¼à‡»mûš8ó‰?¾xåg Gü·ë¦l»Uœ¹æùõß=ïð8sÇmâ̧^½úüÚ¡â -™:}êQWuãüG­Ü\Y>òë+÷ßpÿ_>cþÛæ_wÖukÖ¬QKÑôéS¯¸âˆùóüèÍ7W&O®¬__¹öÚû¿üå3Þö¶ùg©«”=§MûÒQ'|ïÆ;`tË¡Êë·© ¬±r×ýŸû©Oþ·/¸îju•®«Orö5×ÿp×Ißñ–7oõê-_ýýš§Î>ûì«®úÎÿ¸l¾ºŠÞ:m—ož}dœ¾jñ²Je4Lì=eÒ§}0μþŽ{7}TwÙö‹'§o\²;òÏõêjS^œ:5ÔR+u2wîÜPHWÿt©!» ¾þý•׆ì«•WŸ;ú†—þòÜ#Ž)¨«pD¥«(LÇímË–öƒÆ¼®>{Ö™!»¸ßô=¦ì²Ë†ßÀÀΓ·{ÏûÞûë»O?픺ŸÁ(m¬œžª%_ø+7?póm—ݶ!»l›÷ôå•;Ÿºó²[/+Ù²þîw¿ Ãÿ­¬R:U7cÉSÝwß}7 ߲˶yuuùå•§žºóÇ?ž_¦1µ4<<Ü\„êÛz(ãßo¾å·Þ²K .'nóÈ/uíe5ë*H±%¦có6<g[[ý±­«ŸþÏÅ×ß´ð?½õÍ[NÈél>`Ÿ=û›{,XPüŒ†††¦M›Ööˆ¿t#gËîëÐ']_ƃÏ^ôÙõ'­ÏÏ.½|ÚË ~¼ éòãårn ‘<'ª?¥q~ü W_š§—“Ìû6:ñ™¿øâsO:iý¶µëêôÓ_¾õÖo×-gîܹaÓB«œ{¡\]]±åH6êàƒž3gNœNox|˜.3¼0^‘w¿«æ+Ÿý‡F·ÌÍ.Ñ;F·ºaÁwj=[#½÷c%ÄÞ…ôÎCREqóÃÌ0'ÔLÒèÆÚ«N~³7J•–™JKÞ¨í=@ÿø…Ïï:ibìtɵÛNÛ×ml.¸à‚‘BÕ…“^½ø‰È*™§ª3JòT'ºs(©CýÍòhwûÒY+oXYùJáﯬ>wuq!á´›„ÌG"< gÒܦ"ýThÎÃËÃù74Ì™bã‰5|†“Ÿ¾Š ÇéyóæÅv.”ÒÀ5×\“\¬¯X±¢í æ†V~¥°®ÞûÞÊÙgש«Øˆ†U ›Ú¤ô&gº’êJ:Þ(ÞP‹’Ùð¤ÀÐö|èCJvGX~Ñ¢EÝ<®–>¼òœÊÖ ìUÙò«VßPQaÿ†ÿÃæ„M µ¶(]cÃ%ˇº ˇ‰x-TI ¤sOräĺMŽ¢°Xr€%[ðFm©«_þêξ³è§Ð&M|ÓÏ~YvônØÑÓ¦M k{ôÑGÇ9áa²áaµÃIŽI?6gp£ÌS±êüX[°w¦n”ùÔÄC:ìý0‘>JÃ’ñN Ä—þ¶þñ¢®— ¶¨¼´®Î(³ôÉ=ý -hhrBƒH8Æö8>Ϥñü˜{'%|ðÂkÓÙ%ÎŒgΜ?Ÿ±¥­uxŠ -\'z_¼¨ë¥²q̺uV2Ô@XçÐR¦ãX?±ÅM?æ„­Žwé O…’“Ö:L‡:Õ;q£cŽ9&8gΜ®W¿ñ…m*Û´RB¨¥äÒ?¬yH{±O%9ù†‡a3cȋۘNÏáÙ¸ùÅGNµð^¡2Ã1ÇÄ•¼Q&¶Å ~© ë%zi´li1ó%ª°Î!‡=½Q¨¥ø‰O…ÿcd¢sÁSŒ¹p'4ìʰsãÃâkByT|o¶Ø~‹õϯ/¼N®Lxm½Nëñ\™i¦c“Ž&± !>cM|yù aáø!Lü§1^‘ÄÓw¸¶îD]m¿ýÏ?¿~ëºzma]Åk£xë'¬plÓ7JÂÖÅ:)y…”lx¬“ðªä¦R˜ mº'¬›ñå5[MøËŸG_]ûæQ]á8Iγa»Ây9œ‘Óû=fˆˆãá”ÞÞX9uœÜ÷ÿÇ·‹GTòFaºúZ¯«_z)wàK40P™ÐHEÆÔ•|âbÓ•ù Ɖ$ïÆŽ½ô2µžbl…EÍc^‰y´øšP_Æ¡gî¼ê–U¾gTË}•É»N..$|râé2)’kÙô’ɹ5s# E¡u‰£†ÛØ«_uѳóm·­:âˆÚUu_e׺Š'”¹%srÃVf„GØ3*3ižã˃äÞG÷í¿ý”{V=9£òêZ òØßvXÝV-õÖ3¬mò)Á%̫ǥ¿ržŠ›Hß(~б“erJI’erMXòUjR|é{³šuÀ^TN¯ñô7*û¬ÞgÖ᳚+<\ý‡65œ1ã øtûžŠ×±Eo}Cb¿Kx—ÎÝÓ=è Y{íuÀé5êêߨ¬^½Ïáµë*Þâ ÃÄWÄ.ßäžW4ñžE¶¢dµÄÄ–ésŠ]/ñëÇqÐk—«Ãg}|ÆŒWü1÷ÙŸVÖ ì³Çq³>Qw‡&•1É¡ÆÂ2¡ºB+Û¹mL¿Q'*óä“OÞÿý–ýæÜg—¯zt»íw8ù”SëÆ—x=ªhdd$=6"¤ä˜Eâ¡’y*ÞðMÚ-~Šîw·¤¿“e<æc²LΫׄòè˜HÛ̽Dó°Mš4éø¹Çÿü™Ÿ¿|ÚË•¤uXVX0²Ë%g^ràÞy罿!µÆ·¶·®æÎ=þ™g~þ±½|衯Tղʂ!»œÙ?uÕãê¼ã?¶êÿþâ£[íUÙ44õÑÊú;þ²Ë?^ò~©«ØówœŽ¦½uõÉYŸ¸÷×wï²Ã¤ÉÛ¾)Î|fíWý~ͤvü§¯ý‹ã*ú×ÅË¿=çØ8}Õâe{OÜ0¤ùk7Ýýõ¡Ç™×ßqï»vc˜øê Ë.8å 8óÆ%ËÚ{Ã]Ý/]ó‹/ûÎ8ó–e:c·0ñ…ïÞqþáûÇ™‹îZýwï~s˜8Áÿ:ûÃÓãÌÛï}ü¸÷ï&ν|ñ'ß·[œyÇò§Ný/Š:ë›·œòÎíãÌ%+מqÄûÂħ.¾é¸ýÞ¸éü°zÝÙÇoX½Ù^øôÿÿWw?wÚáeÎiÉtÒÆn¶˜ï“I±[%Æ—ØýÔôù0¼*Žç ‡qxmüb„#ªu¯½}é¸5kÖ\ûùk¯XtÅÕ×\ýÈ×yî¡ç¶™¼Í.Sw9lÆa' 4}úô¾8o&ÚŽ^X„ºúü篽í¶o]ý5^øÈC=7yò6S§î2cÆaCýSW];®¾~íÕ?¼âÊ}ïûÿ{õêÇ×>÷¦­·™¶ëüÐß~äð“N裺ŠÃG©?ÞÎëÄy?ÔÕü+®üþ÷¾{ã¿Ýð«å«žzvíë_÷Ú)S¦œtÚ'Ž>æXÇÕf+÷ê½Öà•Ø»–4¨™áÿ†¼tŸøÒ >úè!ûþeæ¯[·®_Λá³Úéì’ÔÕ[Þrhø×¿uÕÍãê‡þõ{]…£kΜ9±£·C£ˆB]½ç}…Ž+_ØŒøÛ tTìoWckÅê'/_¸$NÿüÞU{¿èՇæ»?½;Î\¶â±xóhåÏ]ó³ßÆ™¿zð‰xóèá'×þpÉŠ8óîUˆ7Vÿáù›—­Š3ï]ýÌß½{cš|æ…Ûîþ}œyßckÛ8ñøsþéoŸŒ3—¯ùSœXóÇ¿üìwÏÅéÿ°i¸úšç×/Yµi•ϼ¸iæŸF—=¶éïB­~n½½9îûô–ºc_|óè3â ¾ˆ/‰Rß<*ÿƒÍ)ÿw·'´½D€F —ÿ¾³›GÀØk¨£D|Æ^C#UĠψ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/›LP@»Ìþ?ïÜ{Jœ^¾úÉ Ž §]ò“{ìg>ôØ3žòî0qÊÅ‹÷Û}rœ¹ò‰g/úø{ÂÄIÝö–)ÛÅ™?¹ö’YÕ*³k3ñèiûí·ßVühΕsV,Zñâ¯_œ°Ó„©O=çÄsN}û©÷ÜsO©¦îøÍ³ŒÓW-^V©Œ†‰½§Lºà´Æ™×ßqoœ˜¾Ë¶_<áÀ8}ã’åqbÏßô¹#gÆé[–=TPf×fâ л¦NŸzÔGÝ8ÿÆÑcG+7W*“+/½øÒý×ßƗϘÿ¶ù×uÝš5kÔ ¾0nÍœ¹ázdd¤z~23=]¦À¸p¦„ô»Ä‡Qñ̺k›¼ªd9ͽKqE•Ü–¦·:cÿý÷?ì[‡Ýò­[* +•m_™»e¥rì†#§1÷ˆ…_X¸zõj‡w™/9V žmô%LC+ÖÊK >s  Ý¥«'ýêéÖKKŸ…“”Skfq9IR¾œæÞ¥ ÊoKÓ[]í¦ûnºõ²[7tºl›÷ôå•eÏ,»ìÖËÆ íýZÏVce ,Þ•­–Í9 ÷…ñ|š>qç^k¦'2…Õ]/%O¬u/þr³K£ýmië^XwÚ¹Ÿ;zòhe»ÚKœ^Y0¼à#oýˆã¹ä’Åeº^Ú¾b-céjõ¶²þ ÷…Þ:×WßñI®írÏÝmŒ&%Õê!Ú[Ú„¶XyóÊÊ1…K¼¯²ú·îµm¯5zŒÕ½ÙÚèŠ5t÷ÄœèK-œN9m9S羪V9™þódº$¹+g–»6®ØúGÖW&×9U¼øÇÒ-ö[Ô:ƺ³bÅ«v­€T„ø=s/g[oÚ[ÐÄ5nù·kã`…WM|Uåù:Ëlùš-imÉ.M”ÐÞL ëñz(ÁT_\Ží€’dr‡þô”Ü©r[á÷U¶ßu{‡Y÷³K‡Ž¢F ¬^¸xètš¡»ôÊY¾úk¥q$`õšºDõ­ŸN4'•ßG­õ5ïεsÍ™ó÷sÎü—3+GԾйôUG¾÷HjCsù}Z|x—?ŠJ´M˜ûkz_è^ïH¥j4IúÙVNÍé›GÕy¥ü0ÉÜÑ$ÅCLÚ>2¦ü:4±¶µÌ:hÖûP9½ÆÓUözd¯Y‡Ïr—ÙY¹ý™e:}85QN‹o>ü  жÁÁÁ¥K—Ïž=[eÑ¡KUg½^0iÒ¤ãç¿äé%ëO^_9ô•¹Ë*••}Ý÷’O_ràÞyçÅ…üëâåßžslœ¾jñ²½'nø»û_»éî¯}8μþŽ{ßµûÃÄWoXvÁ)Å™7.Y~ÐÞFéš_|ñØwÆ™·,{èлÕ*³k3® acÞ¼y!uÄéâàáæ°Áš5k®ýüµW,ºâêë¯~äÂGÖ>²vëm·Þeê.‡Í8줡“¦OŸ^7»tøÂÓïÒ;}ôÑCö=$üËÌ_·n]ÉìòÀê'/_¸$NÿüÞU{¿j˜xèñg¾ûÓ»ãÌe+‹½/+Ÿxý6ÎüÕƒOÄÞ—‡Ÿ\ûÃ%+âÌ»Wý!ö¾ä–Ùµ™@oró{ Ý<2tè3â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â €øˆ/â €øˆ/â €øˆ/â €øˆ/â €øˆ/â €øˆ/â €øˆ/â €øˆ/â €øˆ/â €ø ¾â €ø ¾â €ø ¾â €ø ¾â €ø ¾â €ø ¾â €ø ¾â €ø ¾â €ø ¾â €ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/€ø ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾ˆ/â ¾¨@|_Ä@|_Ä@|_Ä@|_Ä@|_Ä@|_Ä@|_Ä@|_Ä@|_Ä@|_Äñ_Äñ_Äñ_Äñ_Äñ_Äñ_Äñ_Äñ_Äñ_Äñ@|Äñ@|Äñ@|Äñ@|Äñ@|Äñ@|Äñ@|Äñ@|Äñ@|Äñ@|_ñ@|_ñ@|_ñ@|_ñ@|_ñ@|_ñ@|_ñ@|_€ÍÍ„ò‹«/ ?âËìÙ³çÍ›§¾€þˆ/ÁÒ¥KUÐ Œ}Äñ Éø2s£Z-!=Ñh9µ oci¹…mi3SrgV×mCïUrÉêu¨[`ÛwŠ}Ýâ¾ØŒâK϶ýx⮻™âѪŸyE|*LŒy…¤W Y7ûºÌ&ôݾè² í*(ÓVÌÌ\”WÏONÇuËÉÈ<•.¤x:yyîûÆùégk•–»ª¹ 79¹OånxæÝshcnÈÔIºðÜšÌm_s«· ÒÆë¾.ØÆÙ×ã¼÷%÷b1žLs¯ ““l&»ä^k6}u[·´âkܺDºý®»ÉåW;³V%W©C·Qš>rwq[öÂøØ×é6´ãÆ|_ôk|)ymôìœnç2íDå¯;Ì-­|ó™û¾u׳x“33‹¯žË—êr2kžt!wçtHÁú—©Þº…Œ}»ãún_ôS|©•$ª“JÉ“øXIßh×I?w“KvE” |™òk5ó™½?<¢Ó= ½¶¯3+SænѸÙ×­›ÐƲ †#ô¬êÛmoÏ*µÇúÔM0½V¥¹ßkËúta£zj_'‹ÕZ¦/>>ýÔûÒËèܱ­8÷‹ßµî[Uäh¥+?ê¢VçVn )ØÒ5~Å7òŠwSñÈÜ䵛þ.®ÃÙ×ã9¾äögަGé–¼vÏ|g$·qjt¤B£õÐb—C­ é±Ge6¡zxDç:6r뼉׎û}]þÖR¯ík€^0P|¦Ãkl¨¥icg{úí{óÖ@¿´|ö5Àø6<<<{öì‚&ôæz×P뺳ûïÛâå;ÍU} °9ëéÞ`3T·÷ÅO6}F|Äñܸp§nIDAT@|Äñ@|Äñ @¿y”ùå¹êŸŒiñ§é:ñËvñ7;ô›yíýæKËìˆêªþæòïUwÉÌÛµX!~Ý€2z¨÷ed£öÆ‹þÚÕ+\wb¼H—‘”Ü×Ñ}×wu@?j ÷%¶µÂôusúÙÜ9ÉÂÕ¯ªõl™r×¹x%kMW¯jõ:ÔÝêRðÖµâEÁ6V—\æ…íí4ªu„ÔZ½‚™™¼U¼ÕµvMÁ~/8 ëî©òû´ÌZï8:Ûû’{Áôä¶Õ]µ.Ù3Ïfš‡æz2êö¤ÃDù¾„tÉÕ«]«6ʬvú…µ^;ó=Ø“”ÙðÜÚhtÏìÍâzÎí¦ª^êÊ¿W­ƒ¶äÐøRœiêž—‹¯;k=›žßÐý¦òKfîÂT7<Å«T·623ë®XC­rnïEÒ]TﺠøØhhÏô¯´1u5ú^ÅÝE:Zz7¾Túyfº{¿í-bî•©¥òA§LtÈÜùêtLuç\¹™²½»¾ Ìì0è#Z:Üœš«çôû—Gªovt"É%MWñ[T½«¿âcÁØ£^[·¶ïúâ2õÄ´¢ÿþîKæIùKØ‚±#Åý¹ãm[i~ýÐÆ›´[7«•ÙMMïÙ×9Éu³fӅתv}0½_Ê}i®Ø’ pîµu¦ß¨ºÀFG¥´½6jÝc*SxCÀÚþGkªGÛTÏ/ Ô–[ceª¢ÌºeŽŠ’K¶øF”4P|ö\ºtitº4ú÷ñÚØ¹ .]ºt ׯÖõq»N‹cr“«CoÚ\±®ážµ9lcÉmï© ž={v›{_º©dLsçÖ1<½vèM›(¶s5ÜË÷fÛ²ÖÚöÞ9 ÊèõÞ`sÓ÷½/â ÐßêüÝ—¡¡!uôS|)¾óÐ}nâ €ø ¾ýêÿmø-Ã7IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/bsf_assertion.png0000644000175000017500000002624512032647206023727 0ustar ebourgebourg‰PNG  IHDR%~«œE°PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<Ü7ÐÒïΆɌñ{Å{'óÞÇ"i­ÊŸâ;E–d£Ix!&.žÐYh@[F¢câ󲌞¡ïÑD;Æ쉹dLn04ÕtÎdÇjß3¬Yp5ˆg=Åmsñá±Æ&¢–Óƒã†ç¨îFx•l¥2¶1uÅVÓ9Í?/©ÁxƒÝˆ„w›Ø|TTTTTTTÀ~GóÙ{£@ oÏz*!/F•Îõ碞íÖÆ ‚½5±‘J¶Ï†ìeznuÂ{`«%¨€­€J€Jø¢TxïºnØnôëøÃE5qQóšoº¸iÉ‹[dàV sZ¶ÿ÷¢æ„ç52ØJ ØÅ*¼ÖÈóÕB]“ÁA×’‹œ(Øõ—ŸMÈf‹´£_Yx¡4×”Ÿ˜€Š**o€fÀ®òKÆâöøËÁÇœA–Xmî-´}…žëÿMK_lGsà /*’Ð>ñg%·fà 8 `7Í%–ÞkìñýL8E\.‰¨IG(Af=Ś櫾Ðz*æ ±ü*.¹.®ÑE,¾ÀnW‰i"Âc½Sv:Ïá*³Íðü*}ï{•áIëTù%ÊþJ*ºXÚÀîW‰®±—=Fèwƒ•Ûë覼÷qq½õWñ¯‹Ú'ö„_BMãìá5:]õë>ú?9‡ŸŽm8핉äíÄR`÷Î%$ÛØÃ?,/«ü•“ÞéÊh¨Õ~Éš¥bÅuñ…r®¢Ž0¿€Ý&¶c»ýoÎã;Á`OÓ²Ô©‘¾¡ÀNýÀV~É6éÁÝŠ*Ùë-Œ€J¶šK0r`o“€_¼w  v¿÷¾xë ì ¬¸€Jxx~I&”“M–š”Ï;0ˆ`?Í%¹Åý|`y'åŸvb Á¾RIä¼Y÷Æ|QÔå9I¯;ºòüB’%ã~W4¶ð|Ф Û.°-+~OÊÅCÝe}n—?·­Øí*IÓŒxŽž´[ûù·~ÓíÃ'Ó¿äÉUëù“ù–Û˰¶ô%Ä–¡¥n¢yò;»:Ï,c,Á¾ðK†èœx~… :JX‰¬ûÓQ–m ^1‡ˆ:Cõgc+Nö6³U°ÿ¸µñŠKø =m‡ogŽ|¿&E&IœGõª–=”ÖäîÌ„S"V×"Ó•"óÖìKÐçÿ‚Ï dÊ‹^lÓvö™ˆ^ù€+ ¢ 5I¬~5ÞWG6œ¬ýûVÉgþŒÏv™rô ±ÅPªZ%mÙ·^%yŽ¢Í? _7*í«åXû²èÉwÕȲ¦¼¨3im>•¯4ò _â]ÃÝû”ÎÍüñíyÝ«½ñÁKßê$©rÂy‚D”®Òå·wÚN#óJœ®y™ä'Öì“E/ËD /Q>KGyÌ/¾âª(ÃÛ)óÆOL7Óùyì6ÙFi¼ÙÈK°†ªÕi‰Ÿ˜i¢áŽ'š^~Ù¤¶¯–R;ÄãU…KRë”ÖK³:%kwì[[zïtŽL×N¬ÒÄ Ty*j*VhjËkk’yîÑóâüS÷½N…+¤á%±´®ôJ-SQ¿š7DvMì{£ézºÜX<ÇéÓuü)V‚m=Çô1tURÛWËM Ê•nL^WÝsµÎBôÊ¿K4Õˆ pÞÁÆÞ»×±¢;ÀÎ"y˧•EŒ "WñÄJk–- ”ˆˆ?.ïû1¥ž!m ¯6“è)šsˆ7ê”2E>ÊëWó |Lãæ9ÐX¶ÕD©lɰ’÷€V£¼­±Ócúbûj9=%x‹š©.É,£B¹´‰ÒY‡—ÂCïG„ëBõ8=À†*iŸº–gÚÈ6öNk£dÿ*ÍšÊ>ó’o²µä¿Ì§J¯”ò‡É:áå%jôNm±}µœu6üâ´]Ó“š k©å0ëÉ%µŽ¦ÙåÅ©¶ìÀ•Fãäw¶V¹÷UÄãÚ*"—có%Ü›j«ÚØtÍù䤿‡€ OÎZ·(³C2AæiÉGë?Ù~MO2½¬Üåï]Y×"œìÀ’kÿú%RØJîÔÚ¬ÞT(/ë-u•WbYÝ»6äp2Þ¶E™²dÒùrvÃö‹¸t‹É@#+íÏÚÖ–ö™8Y ’½÷õy|óÝú®u6לiÃVevH ØÙÏÖu—“bݶîd†_›ù%¨¨¨¨€G‰÷¶º0Fìv¬÷[%´„A»›ž[=Xq°ÓõT¼w ¼Jð³í`.à©ä—>÷ã)FÈç~› ¾£š0B¿ô»]l_>à‰ó=A;TÀöŸJþÄrèP&Ĺæá—(輪 ô'æC±}‘Ó6~×lx ¹¥?Ž¡{– ?UìLEWD!S É”&“&zJgFì[¡†Yâá‚ 2Åšæ1˜`¿Í%ï?“±ÓKÔ S$MD“÷gZÄ>Ý9â7ˆ=V·€ý0—ü©r`IL—I„º¬ìST!+û~x öã\"Q6Y~Õ@'yøZÊ=«ìãqMM”âVŒt2¯`ßÌ%ütŸ·4÷¬Û'c&Žg"Ào·)û𦂣ë³áå™f %سl3†ŠÛb’Ÿ¬ ä1› a„ˆÂøN0Øå´,õTKa›Ÿ*¶Ä?ÿ|ªú{÷Í§Ý åPrì;ï½’õÃ}‚ñPÉÎéÁÝŠ*Ùë- )€J¶šK0¤`Ïï°³¹¤3`S•àWØJ%p*€_TTTTTÀdƒ»°F¥wþv{JÅ6ú!êL´µ¢Ò» ¡”ËDÚ¶“4Y“‘µ¿N]'¿s¡ÁV“ ullï>l˼l°c‡]a6¬ÖpŠ]ÚÀ†yþ·qe VÎÞ‡;—Ìw7]ZÞ^ÏœÙhÏñÓ÷ÎÌãg¶È0?_•õrP_Üâ}»˜Zhý å´—Ž;׫ì¾õTûö {Ú¹Ó®0o9½XîÒ6lqU1㡯¸,”¡¼ÏsÇ—$‡ÃïWÒ<ˆ]ÜïŠÆžO‘t»Â7¿îÉa—;$±K^Êøï¸}<*‘G\Ã.OH­2ºÀ¶K!+,Ž¯Ã‘tûoR.pÇíÍPÖç¾ãϱÒ./¯ÖMy¿G‰ó¥ÖåVëRÛàu±2Â>RoÅã-¸”;’©w¨ô3ògß=“D*Íz¥Ÿ?(ò8¯R,é[X¡|àùxùÖ}%é¦ßå^H)ùJéŸ'w³üJŸEMjŸ„j?øœás»Äè­ø=)öÊ# ]U6¤ÖÚÀ©´Á³Âöæ¼nWà&Õ!ÚÃQIB ¬Mh•ü–ƒÝN~¿ˆÙÎÓ‡œü]µž?™o¹½LÁkK_â¿êÅúZlýA¶ÓÐAËgþ¨Ý¹ÈÒ•=ÍMýQu¹cv)ÔoiíSÏ—”íL-ï8ë'¿³ë±3¬Ò3[~V·ÕM‘36%VžZ—U­Km#Øoáe„}ÊòÇr6Ø­®SÒ¤g'‡~{õ—½î˜²¾ìeR'5I/2öÁ(EO¿—.Ä’¨µ±»}pYÉWJgZ‡úr],¿èsHÔTê'¥ ŸåÐcbôV­CKt6æ‹kÜõlHÛ#U6p´6tiæ19Ïvužn¥&6õ€ûÀ­ýñE.þ=9NfêÌ„S"p]½®œAï¼Õ–}ëUaËÇÒ_i{°òü¢ÏIq“³èÓ+¨vˆ~0º2áo2K‰uB´&µî mX­´AÉ\l—åc£Á]™s¢…¾xwÿèÜÌ{W¿Éå¥/Y)Ö;m§‘y1á”ÒL$üox¾@GHœD†*Ivð~>v–¤ßOîÏ«d"IfG8KG©âN’X*~bº™ÎÏ7Kgiìß°Òx³Q­ûu¹¢.ÞÆDÒ0HR儸oPE"uéEó…TÌ9~'k:>ú×òéb@ ¹œõüü…a©ì;J3Ÿ0ËfšX?E>mº˜ÿh±g¢O;Ô~/2õÔ?ŸWFox~¨h+³áêÉmØ  mWVúisÒ ›A§9\àž“Øò=.±øßDj+EXѦ‹%o–ñ§¥•ÛÒÇéPQ%¯S¡¦ØFAb‡¹®\Šd™^ÿ Dv5Òøi6vj”Œ¦ëéþq£Z÷ØpAsÚ¼VªK´1n˜”*=X¶_³‚,èÔ¹äóáÉ«MJN©éÓäs¹õ¦Ü/wŽ˜e¥Ú–5é5}ÖöI퇱öï¾[Ê>>TŠV#™·cÃÚvÅX²ô7§F»e„Ó|øÞ»r"¤Së¥ôË94F—yøº¬Ã§lö©³¨';Ž?£•hq­O²Å´ž¢<Ä€-µ~ÌNû<_ÒûŽ’jYéÌ&µn¥ÃåºÌ¥º|J"—OcR$FUæÍÒ¥öF‡Y9¥IIGõÅ<ïQ:T}XRIåt)Öá5±>åŠ}Rû!f‰Œæ‚d ˜êmïÈm»fJøªø˜®™µ —–pࡪÄ~ØŸY/­`¼8mc €'©i6¸8¥~8˜ñ.\iW–‹Ô8ŠÌ5©'käYö#ŸOÔ _2“eÜÇ×-m#~ÏTì3/ù&[‹u/L.×+Yy]?ýè/Ôº–Y“íd {§µoXÿ*¼³ôaK1OÅçSá:&ym'¼«¥ôx9­Ð4»¼8ÕF­‡—˜o±Oj?øˆû¤©ìJXw76hÚýÉô×ØÞ¶i¿{ÒN¿d—ð€ØfÔºûÀÝ~Ì¸Í /1YwRÚc6¯>5ÙñPÆÑUD_ªFÈÝtÍYøòî”púÞ?¿¤B O%žÕÇïm…wji_¦B];)Œ¦kj[kê¡IF³’bƒK’»ïÔÈÝÚ½+±¬î@ÉB¯UsùA©äÀC³ã཮°Jtú‰„ À>Ê6t¯í¿U š_€J€J€J€Jx¸ïq!ú<Ø•X¤J¿‹v!=·z°â`§k ¨xï@%ÜoÖzï<ÐNÁÔ¼½ïýí$Ð{h.™ï¶ m¯øÎí°GV\”¤œßåöªAnJé¯'wMR!ìv/‹p9rÐãx ã”õº•à?Y°×U¢#‰B¦î޳_a/Œíåt¦mèä:ä0Åûì¿xN„Ë 4·ôóÛUÍ×ɶ«óÌ2†ìq¿„!…HOm¹PFD™;WN_?Gôwe)F f5ÐNŠ ²ÔÀož Øq¯ïBà‘›Kÿ/>c§øSùf&M¤"̓âŒLǾ'âsñp;G#ð4;{$1¬`ÏÏ%ÊL&ûDqKˆlWªs}&•„öÃsÅFý×þr`´ã ö¾_©¡ÕÞ²–ò'«ýûTÆáárŒt²<È{ìÛVª…÷ö¾_"°LøËi¯¹jïÜ’nÊN­£Km×gÃË3ÍÊæöi~ÊŠa{ŠûC%Œïƒ]HËROµð îÞ/lå—|qzp·"€J6Çz à  ’­æ /€_À>œK:6U ~¦€­TGø%@%@%@%@%@%ì•Èoº]ž7sÛÊwf”Ûß_pùÙÆÊ»“[}â¢fßæ½Œ•zq?=x8¬÷=®À¥7ëR—¾Qñ·å¨(Ç•ôŸ~&W‡J¹|Ä´Es; ®RÙ¨~ùŸÎá€Gd.ɰúù.’B%ßObÚXñx "P‘{˜Žê”k}!ìòE¨ˆ“CuDa—;”u¸Ú¹ Ûæí|>%ü+Qð.ðà]2Ï'QÖç¾ãÓVÎëvnŠí>^$° 4šrùòÞhÝp/Žxès‰ò-.S-¨¿ZOì¿fxr²ƒÈ\§ìÏZNÌt+—øCå+}¼ïºüÜ¿Ù=EŠö}\81Wú÷5ùÓ“ñ¥g¯š‰Þû¼âž=xöÚ*{Š)¥üC¿/<ÅÛ Ežš¢HßõO_é$2ª?~žlyöü5¥Í„/šBŽ•+.áVô´¾9>òýš™$!…zuÆ ôPzm}1®.¥¨D¢WÈ £Ä¯OüàÍ(£dÊSœ©ä»|®1ò ],“ùìéÒëDØ;£³H¦ÀK}ôJ£5’Q3S¯MI¦ðU3ð`èÜÌ/Ò½Ú¼ô­ŽA’*—eO°åÕÚ tŒ¯ÒH„­£ Ã’LÓ˜THŒ]ý—t„GµSöˆÈvDÃ$?!ò廚¥³4öo° ¶1'°n-†û’ŠI‰?ã«fàAØÒ{§sdºvb•&%¹R5ëù1¯—Ø1yè$*HT+5œþèÜÝ”«³O ÊJ ÈOy]ÆO³±S£|»Q#qj´{|¨PÙ†,—ÔÀ#ã½{+ºL?zŠå>ÍŽHŒ9£Õ§ëO)™Q²qOÂL©+i;=fRjTf¯£d”;)”Î:¼ä;J6ª­Ó5³”º½L(Ͷ‹‰Hã•´O]Ë3md {§µäž²RËhUœ-óÜ×üSm<5Ãܖƹ`dÖJ5ニ¬³‘§m•Ùm“¡IöÔ4»¼ÈJµø=SA¾½mÚïž´³íK‹JmEU-M/°åØ"«{Ç < vµÎ±å§—˜›î±}šF£±›ø¼< ¿d“÷¸6åÒ–?"w.¾×*+û5 D ;PÉã[gÑßsÏáP9Ù…£¿••••ð(qoã#È<ØýXï³J?v;=·z°â`§ "¨xï@%ÜoÖzï"âüCü×nýظo°/T¢„}X+‡¨£°âª˜QÄ”"‡\žúÝõ³+ü1wÜåZx›íNúÜá¸Û“,æÙf :öš_ë·7÷«ïŒ‡øÝíËs݃/±Dºu¸/×5VòD0’`­¸¥W”ß–«2õ]eÙS܃n•Äߪ’'e…Çö_¢ ó BjÀ`Ë8É?1}íéáy%úû;?¯ÍÀ~Q‰v=öiiI&YN°Çµ¬ÉS 4À~ôK̔ʖb ¯U­Æ«ó$yh xï`ŸÎ%sËÒTqòÐñÈÖq¯ymžÉ6Œ$Ø»ì ÒÐ6ã;Á`·Ó²ÔS-|C€/æ—îù]X=¸[@%›c½…PÉVs FÀ/`¿Ï%øÙB6W ~´€­T¯ø%@%@%@%@%@%ìAÖû†Šü7%ëþþojµÛÊë2å–«d¤smÑr65µy »L¨ãöe=»7´ŽF©ÁR¿Q¶b'WbkÊn…×bϹ§ˆ~[·IÆl°cmµÌ²±×þ—­n#ËR±mÝñ¶ÖÜõ:P¹m½WëÇ0ܺuºTÓ`ßÞ%8mÝñ¡v£“2Ño\¨o®U – ›½MÆûª’À¥7ëR—¾Qñ›¸å!:®¤/1­St‡‘TŽßÓ`‘ëÙ½!ó”9^ÿɆɡ»iýò?‰ŸÜÎr¥l¦’§Y#óëYöœsrëÇ3:¾æüΫ(=9ÝzO‚ù¢²þ¯v¼µå=B/úþž-”Ö«(Ãþéç»H y\þ9~?¿­ÝáXñx .õúÒ;$;üìÙïxßïr/¤Øî€¸û½às»|I¶'ºà+𜅰Ë”(çu»7Õûã a·Ç—çueÝ $ûîä(ëð3Ý‘QÊ;>_± ¿x8R._^±…˜]aRíÑä)Ú÷yîˆâ~W,æyžÛ–tûEÞ§°‡¯ž.*¶ÉZÛ„}µ“É!}¹?”÷,Üu§‹DÂN)èv…ßWǃ†{•É–¦i…ŠugüwÜl<Ôöy?îðFxsl,B¢>ß‚ˆ HoPšä°Ë’(ësßÇ@µÌ­Z¦n¿YûŸ'w³òÇûžŠqÇE%Êêd;| ±Š0¹€ËíͰDüy¾X®âÒíÐŒ3Ôÿ|²8.¬=Ÿ›²'¥[†…u¢ 9–åc­akÊïbç†Æ.‡cÉKùÀóqf†Úo ñaÛ¹š¦ók"Â5 ­Ü¿$! Z:qœY°ßòØ™e–0ÛÕ%‚ål°[½²¤ÉråL–rg&»Ûy6S;ßá³zÌÉo3)˜AѾ–æ-žíê<]¼ºÄûlmN?¯«Î4K8Ù„YW:OùÓ“ËÅò–ÖŠ2ÉgD±%ÜßÔÒSíÑä)Úí·ì5¬ZÏ÷æÛnsÛÒ¶3bŽ õ[ZEY~­o ¿ì³["•¶1ªLP¦?^]ËV÷!gHÉ•Rêdvl-}çÔñ°¨ÌÎQ# Q±îå3Ôî\,·o¶?®6ë³6õG¹ÊíƒQõ2e`[[lý!ò;»”c rH-¤no-Ž}¦u¨/×%Ê;-ã^<.\$'íÖþ0…æoWœËÆî޳\âÙ÷ÎDÊåª)Ùž³Ü–ÇeÐ>Üûíö¡¯hÇ–_SH¦Å÷Ô<ïµn˜_Œµz„­á3[þ » =ý^ºÜoíIËŽÍRªÚÚÛì2¥žÑwíW\â¢ÓÓvøvæøÈ÷kRd’Ä!©Wµè)†°c§±R— scö­WE ;£¸ŽteÂߤU~öèÓcÔ QÊ*S`î3I]c¤×©ó¬u"¾ÌFc) TIDATz…Gœøõ‰¼%£¹Xž•RËšYŸm–$;ýèåT{ÊyŠvwfÂ)±Þ ï)۶άZSîÏÂÐ_¿D¥º¹E²¨“Ù¹B¦<Å-ÊxÒm93®’%µîUò5ý¢³Ü~}éúÄú,Q‚m²H"®·ÌF¯°¢¤•ëGrÛÛ²o}]éŸ,‚æÖŽ{ñ¸0^!ƒŽVfÃOŽi«êȆӢ1Æ¥re@½NqÛ_aã¾ÈÇ´4.ffÞOtôßÊûÅLg¯:¿ý·"Ïw¥Íó«ÇAغJþc¥Ë%» ½Jz}¹ß°—ç¾÷ÚUãó%~˜îú›‰›­¸z¤{õê] Ð I•™ž¨ 1Í0/Ä&Lñ§¿a£a~^(ÓÄñìStžç•-:v”o¶1ç>Oª¥‡Ê K¦ÁózÞiìåBbìj¹< ·ìúX^ÇúwôÛÚ,=áy{­eêv6ööÒØ«å«Æ½x\ø¾¿ÊÃ:׬å¶—Ê©Ëüù¢Û l¿PSíqâ½9_ÞϵõyôC ÅžN¿[̳i~õ8[ícÿüÜç+•v Û¥r¿+4RàÅþ;‰—cÛ{î–­½w¶V0];±Jƒ’\±½P£UUAg蛕ú­ÁD=»$5°q”¥‚¶³ºûã—×]ŽÝ6–zŠåJ1ëDGclÁ<ªÌ'|úkºämâì¢×ߌr—J<ÉLgü”’V÷˜®™"Åü)¥2¯¨+tÛb>ƒiìô˜©\ž[rLg£ÔC™&õ]5ESÔT´G­Wc·Dé5«T6u›³£yáe3ë¯Ä³eÛx;(W ®È¥Ž]wKö £ÁŠºY?VÇG* Ž‡26l¹>ÿ×lE¨Úç?Rg©lŸ]öÄHši%Još'þ*g¢4è;J6VºžrÁb¡ËÂûS¶×U޽²šMRfܵõR*Á,`NO¬êR™Wj ò1^[®øæEsEÛ©â8­·¿:φùùXkÛô9ÐH5v 1¤Cå~k¯ãá|®oÔÂŽEœÒåÌRý}UIûtе<ÓF¶‘°wZë)ý*îÿ‘HÔFþØ&ŽÍÜ×üSmÔ6íwOÚ‹Ç‹okçuݘ46^éç êšwx`îRyîiLû_˜º¦^y–¦ÔÕÆ—#ÁÌE{Êõí¶ögªûTûÕ©ŸðgÛ‡‘ϧʶÆóóܲjoç£ñ@£²Ë6¶¨š¬ÆžÚgF[7«Sàg¼È| e<ÒllØ•/Ç®_¦\Aµ/0ã]¸Ò^Ñ~Ëa1’?ýè/"sMÖ6Gšf—¹e#~ÏT,/šŠ–=)FFÙn÷®Vwµ&8©wmµsÁÈœ•š'c5t¸øî»lYÆ•÷”¨ayjar*¶‘ˆ·h;U§õö‹5Yñïæ] ';¾À’«R ;PÉšCÚ—©P×$·Ü½…=›q¡ûîš-ö¾¶ÎÕÇ×ß±`5<ijɥ;¸U–T8_hh®Ý]*IFÓ5µ­E7Å%ÉÝwjäÍŽªÏüE>{¯”Âb¨Tú):´¥=›qðn›5w^g×C=›¶q9PßRÝ] Õ½ÜâøßËï>áÛŽ@%@%@%@%@%@%@%@%€Í9€!x¸\~fEÖÕ[7 ÅqOÃgÌ%»“§Úºí§+¶•î{¢ãNŒTÒ”%ýüA’‚j(ßñb(_¡@@%û{É{BÄd 4+a,7ÔÅV³ó?=N:®€_òÒ>1è¤i».E%Gƒzk«E¢£¬¿0H˜Köûxì£ b~I)Gñþo&€Jö7rSç5ÊÓ„r?{™üe¨IéÕÑO¨¯2G´þžÆèÿÂ{‡Jö=3Ëw–?l¡§fƒÞŠÀº‚“Ï‘}ô«¢‡Ïî{œö‡Ê]ß÷ £ÆàÑ*y4éÆ<Ò* cPÀ¾Æº¹d ãö1-·Öxçx €-¦¨€-]¨€­€J€J€J€J€J€J€J€J€JP P P P P P P P ********@%@%@%@%@%@%@%@%¨¨¨¨¨¨¨¨••••••••        TTTTTTTT€J€J€J€J€J€J€J€JP P P P P P P P ********@%@%@%@%@%@%ì¬ÝÔư°©J¬·0*l5—`T€_ÀÝÏ% Œ›ªÄ‹ñ` •À#~ P P P P P P ûÿQ²)Ž´ØïJIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/response_time_graph.png0000644000175000017500000022476312032647206025130 0ustar ebourgebourg‰PNG  IHDRelòlœxbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ ö)¹˜ IDATxÚìÝ{\Tuþ?ð÷9‚bj^~šrML˜Ò%qPÑ1Ų‘4EWm%ªµB„‚-c„u×2Ó‚‘Ê­Xý†®bfãh\ÔEñ–Ö‰épÓt5WósÎï3 ÃÜ`@À×óÁÃgÎõs†Ï¼ø|Î…?~¼D"!3………N‰$>>u±¨@^äE@^äEhCœl¼Çóª´ ¹’­—)9ïÈ kfº1L®‹;^Wœ,%?VLê´ ¹‚BSòcý[«6T©Ò%Û ÇB¨VÞ;h›Ý¿Èg†Çl«äyÔ]«FXUjpp°qXÔ‹ 4Ž´$§§ºÓ„N&¾2'&#4vÆ?.7YÆ*¤Ñ9•<ϸ…­:ðâ™e|û@Ž“%çfEzëg4½P£þbë]5ÒxÆ«¶ƒ[Z£¶„ñËËËK–™N,Ššc-é2ŒÛÌ„(oŽÓWïš5 Q"ã l}¨ˆoÍUâÙÄ÷ØiåÊ•,jl@^[œZ• ãWP‡º¿pÀ~è_äE@^äE@^€¶ÄÖõÑ»wïFtlóæÍ»víZó¢0?* £ÊÎÎnpš†ï¿h;o¶‚Õë·àX8Ü[ fÛ3™S»Ø™¤Å¯âˆ8еk×z÷îmÏ”¸ÞàAdÿ.ò" /@S5|þ"ϫ҂䔒çÏ•Jòcý¦7µ(ÉoÑ׬>àrÜ‹wdÍóhËu[oƒk7{ÆÚc‰T”ä·gò±Ä€–ªa-Í\ c·:n^(äi­Í…­Q×&˜¢$¿Äì m:1$;–h9{$s\+ÏŽ˜¶jØÚcj„;höŽG³¬R³­’ç y^•*•×JUñ†B©4U¥JÊ£s*ùÊœh©T*Ωäkç­Ì‰–K¥©*ž¯›«þ*¬‡±Éa§Î•Õ%&?±Xìç—Td˜ (I,%ù% #²ËÉhR?“Ù‹’ü’ŠÊ³#üüÄbqÝ´¦Ë´²ê†%YÚª¤¢º1Z\«(ÊZE‹wXê ¬Û ý¼µ{d´S6ª¥nz“b@^4šœ,c‹3ÃÓÔÆ¥ ãWP———›éÍq yš!í±¬R^(Ê‹3#‚’)aC”ˆ4ÉúЩN ÏЈ"“#E¤×_¬=ʳ3KGè_'ž‹<¦V«­¥EúLU”´ˆÖ¨ÕjµúX]Ç^΢=“ÕBaä¹iµé«(iQÉâjµzÇâ’Eu‘,gQ"%;¦Þþ&­Ê*²²LK«n¬œEÂb·¿Y’ùÞ{{&;¦Þþ¦aSZEÑžœS&xX]x"%;vLöH­6Ú)«Õb©yÑqlV¤7«L:M¹zzÕ/à8YJ¬X(ç8YÊš™®Â4mÏ« Däå)öô"¢Rm‰ã âlyçĈõ)©v,º|ÿn2ˆˆ&‡åì)""8d„þ•‘°µ†èX7eÑžœ°ÈyDä1/2¬n¦°µÂ <Ó—˜/Óâªk„¾sÐcð°S¿x%Õ¾nÄ*† ¶:*_»DD‰†×uË·V-kD¸_·ë̄ȽáòÏ †B¾2'&<£˜e‰e‰kdVe• !JbY!Dº5<‡þüÅò숬ºˆTvîÔ©¯Ÿ äTš1™ˆÈc^ÖÚ$??1ËΨ;籙̗iqÕeœöÌ“_VaãR•ºËbšºµ€¼høÍ\“¢ ’g$g‰ÈKBÄó•Û’34$ŠÊŠÐ†ËX¯»§ˆ8,¥I×ÐxÌK‘T D¢CF„­É2G‰ÇŽ%–gGLK*rØu¾&Ë´¶jjp“Ã2Ï—S@Ãþ”gG,"ýe1EI~{ðé{4îþ‹ ã»!J¤ÑhôZ yyºR#—ã(bYeÖ¶*¡¤‘×»xÌK’©¿ Ãc”ûF‚s.)Ú“69@Ÿ·r2³Ë‰¨<;³¶ÐÞàj÷ª›¬áUDLÙ=Ížs'ËΡÚ.?_Ò@µè5úùÑŒ[Øšm¼6>¦„*”ò R‘ˆØb¥<ˆVä·g9naéÉZiBfDp&qœÌιŒcVd’_Döެyó²&'ù‰cXªwƒCýÀ댵†ûÌ„­Ý1$ÓÏ/†e¹'ÞÜ‘¥/H\»Çošø–ãf¬µu› Ë´´jGÆWá1/ëXQ’Ÿ_Œáþ‹–Çš×î?'þ€ˆ{âÍÅa9‹ü(ýØdkÕ ññññññßÛ½{÷¼yó®]»v7qõú-I‹_möbpjT ÔI\õiÒâW³³³m罕+Wây€`‹Ó³§}¤ ªÛ”k×®­^¿G yÑ‚·ÌîÝ»·#Na€Ž˜‰è¾_sðÀÂõ.€¼È‹€¼­ÍéÁÜíÞ½{ãØØý‹€¼Meïx4ϫ҂äJ–%"ŽóŽÚ°&ÌAõtxvõ/ò•91Ar…&çææåååç'PršŠçÛÔžð¼*U*•JSÛÚ†tü¼¨ÞœQ̲¡)±þ CD ã–'¼&"Uª488888Xšª2nªTá­èœJ¾2'Z*•J£s*y;§!"ž¯Ì‰–‚ aÆœœèàà`abC÷'Ë*åAú,+,M¿mÒÔ#ÜJÇçEžW*ˆãd±…w+s¢”¬,977YÆ*¢s*ëÍ*兒ܬHoŽ+ÎŒJ¦„ Q"Òd$o«¬Ml N£N ÏЈ"“#E¤§©¾—r³"E¤ÉجfÿØüÇqœ,%?ÖŸax^•ž¡©í-(¨ ¸àȼh3JVíÕ裤X"ã8ÍÞ"Cä8YJ¬˜\=½„×kfººzz‘F[Q»ÛÓQ•ÈËSìéED¥Zã…GÌtf$E¡µ.C–UÊcôÑ“aüã Z//Uh5õ Œ² Ã6‘U&„$(Y¶Q gÿØ QÞÇgF„„¤ª0 Ð2y‘aü%¡Ä²ÊBµù›îž¢ú"OwGnž»§ˆ8NÖ´1eÆ-,½  YÆ‘Bž†ÓZ$/‘xN”7Ç)ä1†ËPT©©*žg·€@‘>Jª •,+ psÜh¯aùYÛªì —D¥ÚúÓŠcSdG"O7\@ ÐxvÝ‘q [“ï™$ÏŒÉ$""YrnÑ[Xz²Vš¢$âdÉéanŽÝ>ýò3#‚3I¸–El=\ÎLˆÚž‘’ÁÉVä?¼DÃHE%ÌtcÔ8ÞÅÄÇÇÇÇÇ[|o÷îÝóæÍ»víZÇÛm:6*D˜LXcqfDP2%lˆ‘&#y›ñðºÃ+ šÉ©Á)Ž\¸müëèA]É5 P”¡Ñh+„Þ®| ) E¡zŽç^ LpÕOÉq²”Ø¢ Ï« Däå)öô"Ò”j+y±ù`«aQ§w5Ä‘Ï kfº5oÔÒþåð|eÑ^ Ç N"ãнE•3›²vÖUiKEžsln|Bˆ’ˆ¸Ð”‚8ÿ†—ìêéE¤©Ým)qœ·§{½òËâZ2/" 'KY3Ó•Ô^D¶‚È­ñGÊÚ®™|bÀ†Ñƒº: /š/H c±²0¡’Xr׊ˆ4¥Ú"ÒxIܦ±ƒú”òd_t0žñÝUžQ\œ’)KÎóoJdd½œ ­I¤jjô±³ªŠöR`‚<Êq²”|Ia\¡(TÅŠ =sæKæ+sbÂ3ŠY–X–8ãÝñòtmòGÎr…¸¶ä§Ü|×ìùÜ™u Zý¶mÚÒ…S•Je¨DÌ0n"–-ÎÌT6öÔ:"wO‘þ* û†’-Oϸ…¥$Ë8"jÎu\Ž»§¨~AÝh<9¼x¾²h/4˜¾Äs¢D,«ÌÚVemÉ<_¹-9CC¢È¬dÇ9îSçÀ i‰4ESï¿èîéÍq'ò¡k@ 7Çé‡2튥Ú*"¢Ú¬i7 å9›Ó‹cSd'd†ñ—„êW$œ–×àÆX\Ž=_¨&R*YVдÑpûê¡B«±«óÏufB¤7§ÉHΩä­,ÙBW¢PcÂîX¯1»ö¢ùâ¸J€û•]EF½G¯v e2ŒÛÌ„(i2#B„kZÝÂÒ“e\qf„W¹šOo¸ª7$$AA¢¨ý„â9úeyFYìE3Ùá:\óå4¸ñÊ„%'KNkòX45\êBEí%, WrD(Ë —’˜/™aücSBYV)Ê*‘áŠoñœ(oŽS&„JRšÖïèÀ qL¥@³1ññññññ6¦8rá6Nk T©ÒBI~ÓNÍhZÌ[¹r%žØ>˜Ü« Õ8¡ Ú†q KOG=@ëCÿ" /ò" /@k{ЯwY½~ >÷Ö‚ÙøKlª4,­ÐÚàúhJZü**À®]»Ö»wïk×®5j®×^ú ªî“/þ•à@hXÕÚ /€ãÿ§o¿aÎpz 8GA^4뀆 í7ëNxÖ% aA^@7 aA^@³í”—Ó¶ýkØ;ÌŽ aA^¨ß¬;¡Y‡ûïõWÂmOðñg°#hXmáyUZ\ÉÖU=ÇÉVä?¼DA¡)ù±bR§É…×þL;=c (É/sÈŽ¬ym±EI~{&K À§:„ê®QÓó|ÑÊ11ßÔ¶H÷Äß¶}>Ç££«$4¼ŽjWùÊœ˜dJX3Óa,6醵4y½ŽÚ`ãÍ3Þ°–^o7§&o§y5ÞGß‘Êm1á™ÅB…{GmXæÆ<€ ‹yóÒœ¶…/J·ˆ8î¹´C“¾ûú×4ó£ÃKƶÌÔèþEó¿„ÑqúúmÿŸ¬òó%#¦Dx8:Õ-¶…2.‚#´ÿf]ר¼Èéˆ8núå£+7GÎúðÙÉîåcœÞn]…Vã%q3ª"C“.äyP©Æ?®¶m¿)¹2'&ynZ½¨f…))騱cLjʳÏES«ÕÇÖR튒„u©ÕÇê5dL7µy‹’¦éWgiúqä1/rت,£àšµjXä<dh…¼XÃ7öGh&jjøê¢}J–õ‰ž?RGB9Ëîˆß;1w_üH]Øô×% ö™”Â])ÓXÅßn*¯Ñ¹‹Ÿ`ÙŸó÷WT×ðÕÚÂüŸèç6¬æªkxíþ\.p|¿šCÌIý™ž[^P¸{ÏaQÕ5|ÑÊYé?=ñZÊë>´=~å¡&l¶û««2':AÉÊ’ss“e¬2!:§²¶á•+YV–œ›Ÿhb¬ÇE""KdGŠB“ï`žW¥…gh(4977//¯  ÎÐí¤oÏ“e† bqI¦¾G±<;³dqƹ¡ö/r:"–ݱT*yúm~YîÌp5”sܳïÆú Ý ~â¸gÇøqÕ~B8îLA¡¶F××c( ¯g§•°,ËîØX?ý`†å'FýG[ûïû½šƒûD4ÔÕoà`"*½ uh£ý£‡E{5úD%–È8N³·¨’çy¾R[Jçíén¡9¥*m©ÈӽɣQ¬R³Í¤Õ·çV‚¦Å¶Ý5 Лã…j"ªÐR`€k6ÆÖ÷ˆ¥UÉÕžxñÇÝÛ?ö3ê¿¿L¾Î¬>‹sY¬v»òb#wÄ?® YƱlqfDHƒývÂ.ú#­”Xý‚¶¸S&…ݱ ¯3+·Ö˜ÚœçŸPÝà`"Rì;T[n¼(ï÷j´J‰ãD~–ÚÉtÖ_5khˆZxNŽÉÑzÌËZK‹ŒÇ»íרyͧ÷˜0…vï/ohËÚÄx4Ç….ݵ/sá/ËBžúèÎxœº¶.;¯1üÊsD¤9W¦ãªGNâ8Òœ+Ó*T<þÒòè¡·ûËÿ”ëÊÎk¦ÉÕp£_ûòõ¡Çüjý…³ì·ËB粬~Q÷aÄqS—(öþgç¾­»Þ¦tÔO£š>Û!ÏR‡PCyêB%Ë’—§y¦dÜÂÒ ’eŸ2d{,¶íÂx1i´UE{½$æ¶al´P]ÃB%v¶ð ®ÂV¼¨álÿ8êûÑžÃgWµ;tGÆmæšÇ5Ôÿb¶ VJÌ¿ -ÂFÌîÀ†¥®eP™¿k¹1©ßæX{mçdv.Ê Q[É‹µg(³¶UÙý¿r£ÿÑläZl+;gšëJÎ7âB£+NŒG}Í[¯{o”û†ž…)ÏŽX”cõ݆{³g¤; bqIŒ8cÑкy‘kì_ûwMÅùóDä=è“r§ã\Ÿœð8Ëî<¤âjTûö°ìÐ cúr|Ž>6”ˆö|·Sz6‡™ IDAT(>6”eÏd}¶s¨‡«ñZ†G½Èq KÛüu¹ðnuÍ¡uÏ<5ë™÷UÕE&/Ô5ºÆîQc›¾Bµ>K §è'-áDÆúͬ­6–çUir…É`¨ qlŠŒãꇛRm• i¹mw ‘¢p³ÖËÊÙ”â9QÞ§ÈÚ& ²oËRpœwÔq#{ëVaãÒÌÆvG9ðûÑäð5¦ÚÐaorôS  GSäé^›Ý…£lü‰Ò'ráèÛ,±ömq§Œ ›0»£–á3£‡p\þßî(×ÿ «?z_]£³Ñ˜·9Ö^ÿªãÄâ)$,êèÇoíaYãr¢Ò²ŠzåÖš5CCÔ„ŸÆ~n[ð~ÝnaéÉZiBfDp¦þ^b«<þ±)¡Ê¥<¨T$"¶X)¢yã›¶–&v1í)©wÇ›€Äµ{ü¦% ¶÷>5akw Éôó‹aYî‰7wdXY¬Y‚›—59ÉO#ÜäI¸lE¸ä™%¢kÕú.@Jòóó£‹w¬ ›¶Ç´ƒ°nSÍç­w·€Äç#üÄ1¬õué»g¬Ê‚±hhEúöÐn¢É÷Ó¶zÄæ- ]J\õiÒâW¯]»Ö¨¿ÄysþŒªËÞüG=¢M ÃД‚8"R¥J %ùqþûFiÎý±M¶­%4m«×o™úœíiv+¶·‹çvŒi~=´ý†…¿˜ónäÚÒ•ÿŽò¿/­=1oåÊ•x }Ý€mk±PŽC%8*Æé;`DQj/ÈÕ–Š<ç´‘-¬Ü–œQ̲6oísßV±[±½c|:ÌŽtÔ†…çUY³– ªÃ¢R^õkãm ò¢ 1+ Y³ hÅ<@š2lf,>—…aÜÂÒÓ[aEöÍè–^Ö²•ÐÄUt˜þ¶ßqØ!qø–¼º‡|ó¤kÛOÉC^€¶Ñ €¼hXÚg7 aA^h Í:Î_4,È‹mÖµk×V¯ß‚z¸¿0lhXÛ¨·ÌîÝ»·pK¸òwí@%äÅ6ªQw‰€úÏ •hXÚ,U6ØÕ¿xäÂmÔò¢eøa€Ð ŒGò" /ò" /ò" /ò"tt–ï×½zý–ޱ{&ÏŽ\œ~²Ínêªh_| }äÅÕë·tŒGt›¤ÞÅé'×/Ô67uÁò}ø,@ûÈ‹&,šÂâás7pÈ…EX»ò"Â"˜s²',ò|嶘ðÌb–ˆ8Î;jÚ07¦ +ãyUZ\A¡)ù±þ Ó »gOXäùÃÿ7ûí"VØ;ŸYéÒÍÚ6aèÙè-o>Ñ*» ÐrX;Ãb†F™•›———ŸŸ@Éi*ž·–S¥R©4U˜ÀäW†ñ+(((ˆk°xéΰ†ÃâÅ­ïÏ~û=µyÏÚÿìÍØòwú胟¬ìÀÈÉŽi*´"òòt%"b·°ô8ã(™YÌrœ,%?VLê´ ¹’eYRʃhEÞøÁK ¿&ú ¯£¢J33‹»-…nH%ËrÞÞ"FSÛÉWæÄ„gë;eé¤üyû-ËŽ_¢ïdw銷ȸ0‘Ò“hÑ&œø³¾’ˆ–ì™?’1L3ë¥ÒmYgÌû&/*£2,•´# ߯›aü%¡Ä²JyPLNe½Ž7uZx†F™)"…žO7uä“Vj‡Ý™~xº­o gÇÌßúýÚÿìMÿx‘'ÇHªëƒdÙjú{ú’©,{fëö#Æóªéïé/L?—t´¼HDþqÉ2Že‹3#BŒÇš Däå)öô"¢Rmeã‡q9N1Ó•\=½ˆHQ¨âyž¯Ô–Çy{º“¾¼~¾”Çl«l­ñbŽ›ýÚèzEýº›M*s£''påï7äH}¹0½Q9@Ì‹BdÌÍÍŠôæLË*B”,Km…c6©Þð·ÃøÇnˆòæ8¶83"$$UåøøÅó‡7Κ¸pÖj‹ÙŽ¿¸u嬉Ñsä†QiäE“Äæ6sMŠŒãj£¡»§ˆ8NæÀâ6À-,½  YÆ‘Bnõš›Æìј‘AIJ;Ÿh0JVìùhÍyz|æÇ)guºÇ÷Ãg ´¼ÈóªÔè}‡¢ºPɲ$òt'b·€@Ë*³¶UMîî)"¢Rm•Å_íÉpúÓ% ÕúM&ǦÈ8N؆æ{ü¹“ó­(¯ú…ˆ¼ô7«ôâ%¢û‹X– |7Ѐ-/2Œl%‡$(9ïÈ kfº1 ¹…¥'˸â̈àà`á¼F†q›™%"p¦£š\µ³GPH„Ê„BIЬ¶3O¸5OpppHH‚‚DQ úmh&fÀ¬··¼?ž¾Í˜3ÙÆX3ÃŒùKâ³,»3}ö—ËîLŸýÁOµ{£þhRôŠNvhÿ˜øøøNÿoHÛ|²‹pMhJAœfoé'»8ð¾ÜŸýßÑUѾø8@[³råJ§6¸Y†û/'ŠÚ+Æ¡¸_Úb^׿ëŽaÆÌßúý||ˆ CíaÀfd`„_à‹x_ù˨¶¿‘ŸýßQ|  *ÙÿÓ´§/[:©ïdË]ïâ@ë;ô!€ö멜*®Ýk‰ªcÃ!€6 ç/€-ND4fHT3Œ¢lA^äE@^äE@^äE@^€Ä0 Ã0iE¶·¡W¯^.\°±mãÇïܹóøñ㫪ªŒ'«¨¨Ø¼ysDD„——>9íëÐò"´oS¦Lyøá‡[g9ׯ_ »wïžµ þüç?Ï›7ïÞ½{sæÌ™5k–ñ[sçÎý÷¿ÿ}îÜ9µ–>šÐ1ÿ\ðú’Ï>JFE´³?]†!"žçï㊵ .ÇÐËõꫯ~òÉ'gìܹ³!M¿&"™L–ššÚ:5†OtÂó]G>þE€èÇ”J¥=ôÐC=$•JüñGãwsss¥R©‹‹‹ðîÙ³g oUTT„‡‡?üðÃ...ùË_._¾Ü`†3µ,**‹Å;wîׯŸ\.ç8N(¿uëÖÒ¥K}||\\\˜Z6–c®GŸ~úivv¶ÅwÇŒóñÇQzzº¿¿¿ñ[gΜùðí텵•ÞÚ¿¿T*íܹsÓvа¨;wîüíoëÕ«WçÎòóóí}úôWmcƒ<š&•#ü:yòdã)=<<¦Njñãd窠-;Tú¿C¥ÿ›мÐÑòâ /¼@D3f̸~ýúõë×…0ñ /&xþùç…,²gÏ"êÔ©“PCD#FŒ8uêÏóçÏŸã7LTÆ%sçÎ%¢7ÞxC§Ó I«K—.Â[ÎÎÎD$,Ùþ}1™`áÂ…Däëë{ûöm{flÔZ,Nß©S'ooïãÇ7GŒñÃ?ètº‹/Ξ=›ˆ¦NjÏ!3$ÈéÓ§k4žç…ìèììÜàªmlpƒõc1/zxxìÚµK§ÓíܹÓb‰áãdÿªyZ;/öìÙ“ˆÎŸ?/üzþüy!m4¸OOO"R«Õv®Èü-¡“ìúõë<Ïët:a‚»wïòdÆk±¸;6Vmcƒ›–íŸÅþU@ÛÏ‹¸Þ £:«ÊÊÊ„_/]ºDD...¯ .\³fÍ'Ÿ|"ôôÏèääDDÆ×¸Üºu«Q«nÈrñâEãæFXlÿþý³³³¯^½úŸÿügúôéG5¹ëøå—_Ñk¯½Ö •)dS‡ïà‰'ˆÈÕÕÕžCf|t,²±jÜÒîãªÀá:šéÓ§ çݼyóÎ;o½õ–pnœðî–-[„séX–.(&"áJ[áR†E‹ ‘ñÀãÆ³±"¡Éø:_a-/½ô’µ;>üðógÏ~÷Ýw…áWk˱mÚ´iqqq7nÜhýºmÚ bcc…DxúôéçŸÞø Û‡Ìþ|f¾ê7ØÆÑl麀öãÑíw<ÚßÐŶ†Kž‰È×××0%Ïó4YšpÉYÆ=z´ñzyž/--5é£úÛ{ùå—­-§Á¡RN7vìX³Ø®«¦¶7y…_kžˆÜÜÜ }oö\mcól¬ÚÆ7x4¬+Û%ö¯Úþx4ò"@GË‹<ÏŸ:ujòäÉ]ºtéÒ¥KPPÐÉ“' 3ªÕj___ggçgŸ}ö·ß~[¿~}—.] 3æåå9ÒÙÙ¹wïÞo¼ñÆíÛ·m|Ík4šÑ£G›œõX\\f|~¤P>{öìÁƒwéÒ¥S§N=öػᆱÓél,§Áè¦ÕjûöíÛÊy±i;(LöÛo¿Í;·K—.ݺu›?¾V«5^¬CÖ`^´±jÜàÑlf^´ÕÐöó"žïвðèh§ð|° .UhYˆ?ò"XvçÎT´käE@^äE@^äE‹¦ŸáÇä­²²ŠaÃÆøø”•UØ_imçù. Óç/[|ëµ×Þ;VÌqÜÑ£'32Þ·³šÌð|—ö‘ Y\|ˆe™ÇsáÂq;K ùy±m¿èââ>mÚüŠŠ*“òªªK..]:wî\UuÉþh¾6ô|ž¿|óæ+W~üç?ÿõÀ¥—|áÂ…¯¿þú±ÇëÖ­9@ë¸yó&Ã0‰¤gÏž¨ äE‡éÞ½ÛòåKV®\cRîêÚÿλ555®®ýí/!"†apŒî£}ûöMœ8õ€¼èHYY›||†š>ûìÓÙÙÛª««§N ¶¿„ˆxž'¢;w†††~ôÑG¾¾¾8ä­ãĉ±±±¨äEGb˜~ÎÎÎ#GŽØ´é3C‰pLbbœD2•ˆ~øá[á-{J „ah___üÐj„^@^t짪ÞÅÑ%%¥nÂkW×þ¥¥jãwí)€æk»Ïwy饘¼¼­8B÷—S›Ý2Ç^" MƒçGò" /ò" /ò" /ò" /ò"ò" /ò" /ò" /ò" /ò"ò" /ò" /ò" /ò" /òâý”Ÿÿ=Ãô3/g˜~†¡¤¬¬bذ1>>eeÖJ ùœÚΦpûwkïòüeã_ß{ïÃ%Kb9Ž[±â£ŒŒ÷-–@óµ¡þÅ´´O¦L™lçÄ»wï™7ofxøì;ó¬•@ÇÉ‹ÿýïÕÏ?ÿjÙ²·­Màââ>mÚüŠŠ*áתªK..]:wî\UuÉZ tœ¼¸tiÊ’%otïÞÍâ»<ùÊ•_ß'þüç¿â˜´¦¶rþâºu_¬[÷Åüù ‰ˆaú™œ­HDÝ»w[¾|ÉÊ•k„_]]ûß¹s·¦¦ÆÕµ¿µ"bÆðúäÉ“8Þ­߼ȋfˆâ +k“ÏPáõ³Ï>½­ººzêÔ`k%DÄó<íÛ·/00Ð××wâĉ8ä­õåΣ[œ!;2L?ggç‘#GlÚô™ðVbbœD2•ˆ~øá[k%Ðó¢¡s±¤¤ÔÃÃͤÐÀÕµi©Úv 4_Û}¾ËK/ÅäåmŸ¿ÚîxôJ€ûÏäE@^äE@^äE@^äE@^äEäE@^äE@^€¶Á URÃéNüVzæjYß®uõêÒu€¼ WXqú¥]«Ïþ^)üÚݹëªI¯Dú†¢f¨°âô3[oVß6”ܬ¾½0ïã+·ÿ÷÷±Ï£~:*œ¿v©át/íZm Þ9¸áô•ó¨"äEx ø­Ô0 m%·Ÿ=ˆ*@^„Ú™«e6Þ-µ%yºõ¶ùnTò"<ÐÆº‰º;wµö®ÔóITò"<Є[çX|ë™Gýƒù¡ŠáAéúÚŸdæåWnÿ•€¼@DÄ0úŒÿaoŒšÑÝÙ…ˆT‹ÓŽnCå /âÜ!áÅ¿§Æ§.\#~]Z˜U~ã êyh'~+Ba¯.݇ör#¢‡‡H܇ÑÍêۯ䦢Š[\~þ÷ Óϼ¼¬¬bذ1>>eeö—€c)Î^„zqb; ¯?{:N¸nz÷¯ª/O碖[Çq±±·øÖ{ï}¸dIìâÅÑ+V|d 8VNÉ~áEذ †BŸ>ÇÎ^/=ð%F¥[PZÚ'S¦L¶øÖîÝ{æÍ›>{çÎ<ûKÀÎ\-íâÔ9hÐHã·ÞòŸ-0ŒˆÊo\Yüý§¨+äÅñßÿ^ýüó¯–-{Ûâ»UU—\\ºtîܹªê’ý%à@Y?åÕp:" 2ÆäÆÝNl§/¦¼%ŒPo:³o÷¯*T@GâÔF¶céÒ”%KÞèÞ½›cË0ŒáõÉ“'q¼›lóéá…wMŸï¿ÿÞ|‚°Gü7_
3¿oמæÓŒ© 8ð¯Ëo\¹x÷úN®dMà"ÔÀNøäE~¤ôÑ<,ѳÏ>½­ººzêÔ`ûKÀQ¶–ü F ò³‰ÈÅ©óY|ðy §K?þMØ0ɤ¾¨:0vþú¥Ô[ +Nß¼wûÉG¼^óŠ'I /6—!;&&ÆI$S‰è‡¾Þ²§eç¹#‹©CFÛ˜lÒ@ß#žÉ<© ¢¸½™ªùé†Ûîl:³ï•ïRoVß~=û{åÖ’ý±£f®šø >'È‹cè\,))õðp^»ºö/-UOfO 8ÄÍêÛûÊô' „k{âå’ˆMgöý~÷æ‰ßJß;ôÕ²qá¨@ÒáK»Wß©¹gRžvtÛ}-ñ ª -k»Ïwy饘¼¼­8B÷Ýî_ÕÂ`ô“x îÙßöÄ}»öüìé8áuÒ¡¯Î\-C}tôkó°(Xyx3êy±‰Púø<†#tß}sö ðâ/¢ÉöL?kØ„)úQ §{å»T!k®°â´µ·Îþ^yåöuTò"´c»ÕòÛiº ×…{4Vœ^jê¬u. 6üT`{@^„¶«°â´Ð÷3¼ïà'ñ²s®Á=û¸ä‡ÏÏþ^‰š|À O²æoû2{§Ïœ½cùÖ’ý† byÚÕÑ÷ášñ-ÿÙc]EDôûÝ›K ¿DM>àþ:bJ'ÖVks§æÞÖ’ý³w,ï·vö FLIû¼‹Sç¸Qaÿ¸úåéÜœ_ ÕK„¹nVßÞøsÁÆŸ zÎÿý\ \»´0Ëp«x ,ÌÿøP•FxõÌÛSß©©Э·qøЭ|Ì\ù˜¹g¯ÜøsÁ7gžø­Tx«üÆ•õ§v­?µ«oמ³†M˜ã3Qâ>ÁyÚ„íg/¦ziÚ\œ:öt\àæÅD´þÔ®¿<> |Ðl:³oãÏÂëŽ Ÿÿ¸ÔöôC{¹-¾l\ø‰ßJ7¿µøÃõRWn_Ï<©È<©ܳè±s|&ŽuǛշ·ï?\u†ˆÆ¸úÌòž \§È‹Ð"Î\-+¿q…ˆº;w2XÜäåLè=rzúñoˆè•ïRO½øiÓº*¡=:}åü¼…çúLúûØçíŸ÷ÉG¼ž|ÄkùøˆÂŠÓßœ-ÚZòƒð$¢ó×/¥ÿ&ýø7ºõyqxÈÔ!£%îÃO_9?cû2C¸Ì<©x§hCvhBN¥¸Þ,3\¡ê5¦™ oÅS/ †9û{å;EQ·ˆòWžýzéïwo‘xÀ°ÏžŽk ²ÛiÒ@ßÔÀȲ׾úvÆòØQ3» /þq5åð¦ Ù{lý‹£7ƘܹéüõKÏlM4¤L@^ÛYzXxñt3:Ý»®šøªðzµj‹á¼´û¥ººúòåËÕÕÕ8Ê-çNͽÙ;–Ÿ¿~‰ˆtëóõôeÍõ“y-fÛ®°¤¹>“Œÿ9û{åíš»æ³ü~÷æ’ýÿÂáh&ŒGƒå7®¨/•‘‹Sçç×üÎ6aÖ° [Kö×pºpåÊã/¬»/×+\¾|yãÆ?þøcuuµ³³óðáÃ_xá…~ýúáˆ;ÜK»W ׸¸8uþú¹zôèë°6‹í4åQÿ)úß©¹·û¼zó™}ÂçÊÚôùŽãp4úÁâWì1á x¬«¨W—îYfjàB¡‡éô•ó™'÷!——ÿãÿ8zô¨Ð³X]]}üøñÄÄÄ_ýGܱ–ܰéÌ>áõé¢:ƒÐÅ©ósCÇe‡&\^´…e¬6eÿ¸Š#€¼Ž·¹ø{áEcoÓmƒG¾ÿ7_xÝú Ôétééé7nÜ0)¿uëVzzú;wpÐekÉþ¤C_ ¯_òâ!-½Æ^]º?þÿ<­½Û»Kw<*yìNͽ}e'…×Sû;pɱ£f ϾY};nïºÖÜ)FS^^nñ­K—.i4w‡P_, W®:§%îÃ×½Þ:'„ ›`í­kwoúoŒÆCÌÁ‘ îë*®kv'¶ÓY¼0*­(=¼þÔ®ÖÙ£[·nؘàÂ… 8îÍwñ«³¿].|x÷쟚Ðj÷NúûØçmŒzŸ¾r~dÖÂÌ“  £Òq{2[ô^'ÕÕÕG]»víÂ… U*•)qÜ›ï•ÜTá‚èîÎ]¿±Ü׸Øó¯È®YI³ê÷2Î6!vÔ !³Þ¬¾½0ïãÙ;–_¹}G  ÑÍ,ªŒÝ©¹·ý—ƒÂë¹>“Zb±£ffý”wúÊù›Õ·_ÉMÝ–äØåëtºŸ~úiÿþýjµÚΛ渹¹áÐ7ÓÒÂ/µ÷`ÊMÞwp+o@¯.Ý·L[zþú%áºlCïøŸI¯|—zúÊy"Ú~öࡪ3ë‚_nè82äEh¢CUá˃{ö÷é3°E>sl§ ²ø‘ÿ^HD»U}y:÷ÅᎹ$âÇüñÇøá‡[·n™'šššß~ûÍâŒ_}õÕ!Czöì‰@Ól-ÙŸrd³ðúŸãÂC›úÉæܳ¿ÉIc]EEù(nOæ—?åÖpº‹\±}Ù[þ³ÿ9n>ž€¼M±ùŒþÊè¹>-·–'ñ2<$pñ÷Ÿ…zéÛµéYíìÙ³‡:räÈÕ«¦wNéÙ³çSO=õä“O:ôîÝ»ï¿ÿþÙ³gÍ—PUUõî»ïÊårÜ‹±iÿc®q™ò¨£ú×:º;wýìé¸éCǽ´{µ0½Zµ¥°üôgOǵ~?(<°¾<[ =^~ãÊÐ^naÃ$SõGò"´W»ÏëÏó{zð¨]ÑrIĦ3û®Ü¾~åöõwn\#]ÔØ%\¸páСCG­¬4½ôµ_¿~úÓŸÆ7tèÐNô×ç>ôÐCK—.ݽ{÷‰'®\¹Ò·oß'Ÿ|²G_|ñEuuõ¥K—’““åryÿþýñ1°ßÅ?®ÎÞ¡¿ÆÅ§ÏÀìÐ%÷åNìöõsêÅOæ}¼ýìA!æŽü÷ÂU_‰9½Ín3t ¿ß½ùì¶Vœ~ÝWvrý©] F<³.øu|öyÚŸ3WË„ëzuéÞB÷X6èÕ¥ûgOÇÍØ¾ŒˆÒ6L2i ï;w …Z­®ªªêÞ½ûðáÃç̙ӧOã/]ºtàÀ£Gš_ÔÜ£GÑ£G;vذa†˜h¬S§NS§N:uj½-éÕëƒ>Ðét—/_~÷Ýwãâ↊ƒ=îÔÜ›½ã=ᢥ¾]{~ýÜ2GÝݽ… èÖçëç–­VmY²ÿóNWÃéâöfh1å­æôpØ6{Ç{†°h°þÔ®Ýz/—¼ˆúv×GCÃ39ž{l\+Ü å¹¡ã¢GN^/ÌûøâÕˉ‰‰Û·o///×étׯ_?pà€\.F¯_¿þí·ß.]ºôÍ7ßܶm›qX|衇&Mšôæ›o¦§§¿ôÒK"‘ÈbX´æOúSll¬‹‹‹°kcÖ`nž"Yøtb;}ýÜ?[è„W‡{ËöñÖF¢¥‡G|ùZþ…c8 Ðvÿª²öéJ9²ìC{þE¨óݯµwÒ,n5F¥Ï\-[’ú^õ¥ÿšLpëÖ­Õ«W?òÈ#.\ÐéêÝ<ÏÅÅeÔ¨QcÇŽ>|x3oˆ3räÈ¥K—¦¤¤Ü¸qãÖ­[Ë—/OHHðööÆG†÷}% ìѺà×%îÃÛÑÆï;øø ëâöf 7e¼øÇÕà-òHßÐÔÀÈV»g$< ´'¬½UÃé +~ÂÕúÐ. ô 7"ËÛ:+íÕ¥ûª‰¯Q·{lõ¯ÿµ8ÍÍ›7Ï;g‹ÎÎÎqqqëÖ­[¸páÈ‘#r÷ÄAƒÉåráiN—œœ\TT„O…5›Îì{çàáu¤oè‚Ï´¿ÿ•ÙNk¤‹öÎYe‰Î<©ùï…g®–áø‚UؼËìå[¿£ŠyÚÕ.“ú¶fË‹ÃC& ôíw³Ìçììësî÷»7ÓŽ~õS®pù`ƒ§Þ´Zµå¹¡ãœ6i /*¡M‡a0šˆZ´Á*//?}ú´V«={ö¬ñ}pœ‰±1—D"iµGöõéÓgùòå+V¬øõ×_‰hãÆÕÕÕ2™¬Q×Ðt`óɈ­‹S篟ûgk>ô¯E-ñŒÄ}øK»V »U‰>_ðÙÓqãܲ³¿Wn^lܧXÃéÞ9¸¡âƕϞŽÃ§ÚQ +N¯=¾cûك¦ Fô}ôçÿ^ÐñœqaW§.ºõþõúEápl-Ù¿µdÿ¤¾¯ùN}nè8œG È‹V1L¿N:ˆß{/aâÄq&o^óüe"*+«Jg²,›—·uà@w‹%`?CgxŠš5:N«ÕVVVöèÑcèС=ôí%_¿~ýçŸÖjµ%%%çγñ€>ž!†·PÞ³gÏÑ£G·fm<ôÐCK–,1\(½yóæ«W¯ÎŸ?‘qñ÷Ÿ®qùbÊ[-}Ó¥VæÓgàÞ9«Þ)Ú¸Zµ¥†Ó]¹}}ÆöeÑ#§¯šøJë|y×pº}e'ÕKœØNcÝD¼„è•ïR-@¯?µ 7Žn¾+·¯oü¹à_§v 4èÕ¥û‹ÃC^óêÓgàî_U ó?6ô8Žu­ ~ýÉG¼6Ù·öøã[3î+;9 [ŸøÑžÿ¸·yäEKq¿LD%%¥£G‡üþ{©Åw Þ{ïÃ%Kb9Ž[±â£ŒŒ÷-–€ý¾;_{eô£¶®Œ...þôÓO/]Ò7y...óæÍ“J¥ÆÓTWWWUUi4FsãÆ kKëÔ©Sß¾}½½½½¼¼ ”£-:¼a×CÕõΩ­éÄëü]…›Ý´rdLLLüøã?NDyyywïÞýë_ÿú GÆMgö¥Ý&¼þûØç[èñâ÷—‹Sç^ž:dt¸r¥ðÕž~ü›}e'¿˜ò–xÀ°]µÉx1MyÔ¿icâ5œîìï•ÿ¸zñkÿ¸zá—~(ÿÑÚÄýZ<`rIÓì+;™õSÞ¦3ûL:ņ½æ;u¾HjøOcÊ£þ¿¾²áìï•å7.íån蘟ë3i®Ï¤¿•~tìë?'Î^üãjÜÞÌ%û?ñ‰7FÍh/wª‚ŽYðú’Ï>Jn;”›»÷ÓOÿ½uëõ¶’ég’ Y\|ˆe™ÇsáÂq‹%uÒûöîÛ·oâĉ8äæîÔÜs]7Wxl´æåYk›Š‹‹W­ZuçΓòY³f‰ÅâsçÎýúë¯?ýôÓåË—mt"öèÑÃÃÃã‰'ž8p H$2tOÞ©¹÷èg/\ùßµ'.wóø½sÏ»Nw:é.ö¨>ávó–3§šŸÞÒßÖUWW"#=záÂ…­62ÞÖ¾ŸÝöá´ÅYÃ&d‡&tìóÞ~¿{sÉŸgžTèÿ±f;-ñXôcßÖc]EoŠg9êIÙç¯_òßmÞ(0lÿÜMz7ïÔÜ»øÇµ‹·®^üãÚ•Û×/þq­âÆ•+·¯_¹ý?!# ËÒ·kÏÁ=û?ÙÏË»ÇÐÞî>}íåÖØCüåéÜœ_öŸùoYß®=ƒŒ3§£>¡ûfõí?dÎ3œÆ#:çøLlZ×û•Û×3Oî\{|ÇÅ?ê=ÚtÒ@ßıó‚ùµË¦ß¿íÜás7ˆhqäómëüE†éçëûD^^Ž…ÿû]ÜCB×­[åîîJDUU—\\º/„ ÌKÀN‡ª4ÂÌàžý­…EN÷é§Ÿš‡E"ÊÉÉÙºu«µ…;;;÷ë×oذaC‡:t¨«««Å.ºCUš‹\¥NtrÀÍ“LßUœ;|_ò¢³³sllì_|±oß>":räÈ7^ýõ=z~O~»9À·^ò}Ñåœzõ¢Œû]PTÕÛèi{·*Ò$³¡^.©—7Ãv“¼E$kDzU m€mEkkNƒFÑÇ›%i7KÒºtÙXŒÉ‚éY׈3 ê\®Ni`™¦zÄš±J*@"k)”ª¨Q’u˜ú&L}“xcØ â JnÄóUU©¹¢ªÑ;Ãì>‚‰•Ï*RDœÊf¡©ÉȲ1¤)¿wy—«ÓŸ7T¨tõcöœáŒ52Ç 1Y©=õà°úôép^tåãÇuÅ-  —ÏÝx÷Äî>Ãìæ w6Õ!è—勽…%KW®ÜÔ~¹‘‘áîÝÛ~üñü“F£J$Í2™ŒF£jZ‚Phwpp@íáj±´06VNž7ECrtrrrGß',–Éd2™L;;;:% »6U(%í/¹®iík‡)ûóÞM™2åÊ•+ÐŒZYYyÿþý­[·¾'VÆÅ7|*æAƒÓ•v½‡zþÞ3F…†pë*Õ®ý‰Ó×£6kjhL72¡ ¥èéFª¡1EŸhjhljH654noâ (I›}ù¿íE%]i¶IA?ã0Ø21¿@ð2—Ï}.(ãÖUåòKÔ* ¤õi}F]Éë‘YWô°‘éÿª½ÔW͵UT¯-ãŠ*ŸVq„åíg½´éqåóNý¨¢ x´·–ßâmI§¦]lÿð_á<äŠ*U†Ö“V9Ìòa×7Q¦†äÃ^«w{, Íþûÿ²n@‹¯L!¿Âyx…ópÜp«ï&.6Ñ'ÆìE(>WTÏ{UpïâœoÑL&ƒ/BÑ[[ëðð£È˜æ¢£c¢««ëè8öÂ…“pÕöí=ajhŒ¼J$=#¢ž!léâ‘77ÄÔÐ9È©‘qÿÿ©à‹ü·Œ_øî×Èöôaw…“œU]l4Dй½Ÿå„IÏÈÙÔZåÕ+óS+ò¹¢Ê"aE.Ÿ[ (}k˜Ë/’©†Æ~–Æ ·ÒÎ;ÈUµ'‹ÿ®ªT"c¦­rðëÍQ#]ý Nó78Í-IûõÉ•xÞÈÝŸVÍ»²‡Á¶§ò‰¥Yïž8;ókô%E1Øø¢Jtaan¦v€F£¥w¼Egpë_¾8ÝB½’ŽD"9vì’#Ünnnvv= ·ÀzÒïµ;„+’ûr?ìµZ{ºkòäÉX,644T*•ÖÔÔìܹsÛ¶mt:}p< ‰¥YÛîŸJ¯*”)äC‡4Ë¥ð#4•ñÁïµïókâJ³M,U†5…n7àÀ;ßb¨©¦üèuŽs{êWÐ ”w<@Y@˜¤2»¸Qü8øÆ~M»¼ªçïxpzǃӮ4[Ï‘³,]œ©ÖZ%F}›—ŸszÙÐÑy&ƵúµÆMy£kÊèuŒfŽ•ë*‡Y}\(U㬕9Þ—9>—Ïý#'öhæUxåšÊWFä%ì›´|Јê£@ù¢z„„|Þ¡ÞžXC=÷6ï À/ÆzR£hK‘ô‰³JšÄ‹ñ+üÂeÞÏž«´­Ûí(‡½Vow :‘ucÿ£ RIÝ®BñQ l|±KyÐ(º‡Xn[Þ¥Ú©óãÇ?Žˆ)Κ5kÞ¼y 33³¢¢‚@ Œ3¦G,‹*ŸŸÖ“\i¶±%‹e yôó¤ãS×kÛ'ÓÎÎnÆ ¿üò ¤Œ‡Z¿~½½½}oŸ7???**ª¤¤D.—¸»»ôH¦6GX¾&î7µ|ȉ: òeŽ_ç8‘+G°uB`OI0ÚQ,r–þ®\ßÅ•f;Pt‹Â|·xEmáË•âqC{®)•Çóžäò¹ÈÓU/mŠ)z'„DêÔ‘Lg:û2{[&&—Ïç=ɪ)N-ÏWÉûžysÔ”{*ÛOJbÈpŠüXZÛíP§´®æ÷ìš¶QGbòE}€¨‚6õœ›7åryDDÄ;w )ÑÀÀ 88xòäÉ33333³Þ¾0:bG±xZ]T/mJ­È×Â4 ›íÛ·:t¨¦¦F"‘>|xýúõŽŽŽ½wÆ7nüù矈q·±±1...;;{ûöíd2ùž{[“ª_¹¾÷’@ {­v1æXæµÞÐënŽ1Ø©Œ¢,3@Iùä×wOÄ=6×ã0XWšíïµHÌbeƒ ¶$ý^Yv<ï‰ræ5WTšówhÎß8 Ö™j=é<•ᨖ(Ëò=©çÿ*L*´é¿ÕÓZÙ H,ÍΪ)~P–›^U¨‰9×âÛ“E¯»L—fK-ïüñ4ëø¢Ö†¢@ù"Šas=üòÁ¯²\$=zÊ B‚¸yóænHä¼#–ŒñµÑŸÅigZ.Nß°aÃO?ý$‰¤Ré/¿ü²zõj777‰D"‹I$RV‚)//W&‹ªªª"##×®}×àÂôªšVÉò\>·k\,°ž´Àuí©EŸxvæ×2…¼²¡–„7T1š’—ÚM[j7 À–Ç–¤%ð2K³‘`e™BÖ»žµ RÙ^Sèc¿‡°¹~Fôv¤˜Jeƒ "/!¦èÑß ö*ëKd-^åJï•f'–fw‹ƒÃ`-†R=èvhlZü ú¯MꀣV÷¼?kâŽájÅ%°:Øçµev ôùDòEÝÇ•á„Ûc„2MÏÏÏ?zô¨HÔ6ÎNž<9((¨_„ý¬\7Þ=ˆ-I—)äÚé˜c0;wîÑŽbáÍp´£XxšÛ#&óÔë©/4_mCeƒö3õã>ë^ÛÝ>žDÞ*_põûÃ^«78ÍGN(_DÑMÜâ"™ÑN°‘˜˜ý öõõí¯Ëc‘Ì,ˆT®¨ª²AZ‘¯µö-“mÛ¶ýôÓO<PQÑVþA"‘¤¤¤<þ|ÇŽí5w¤R)$‚"‘H, …ÂÚÚZ±X "…Bacccç™eii©M÷®¿^Úô㣨{eí+Fºú=eŸËå………‰„Á`¸¸¸t¬ë‰bpÈö„:MjŽYK<ïI™4\QÕ„ˆÏ;8¾ÅPªÇ» flWš-›l®vÚIfwÎAb‘´¿'ýYïØñ <µ"_"k1ÒÕw1æÙ?¼2q `ãݼºêSVú2ž(P¾ˆ¢çgö°Èö’J¥¡¡¡H"‘¸~ýúnSžÂò±3v<8 ˆ*¸§ÍþP"‘øÅ_|õÕW2™Le•@ 8pà€»»{cc£X,555"‘Hm%în©¸ØUÄ󞬼} ¶k§y=’o$:Y5Ä¥K—Ö¬YÓƒyB • Y'²*UhhcWŒ%Ð èË> €e yzUalIz/3µ"_“RLÇa3ŸB·w6µ7Üê­q· • ¹§5ŠËbõ±Œ©ŒÑ#ì6ñëL ñ¸!ebþÂk»¡]ö—ŒK‚Ò³3¿Bs×P |E×§¡ "u¨\wïÞ½®²··_µj•6~ü,'@¾[’¦µ.iˆ¼¼¼öd¢¼¼üâÅ‹]= ‹%“É …D"UTTh’LÇãñÝ€ä7‰>O8]˜„|YÆfÿ4ÖÕ*‰_Ùž_Oèù‰D²wï^•äb±øðáÃ;wîd0zà“Ì‹çÅÅ4ñÛ²vJbKÒ¥ùEúYù¡ñþꛄÁºÒl]i¶;'.†FÇðgqé•…š¶×Åàœ¨£œM­¡£™EêB6^QLQüšxq™Xã­@P 045(½g¤«oDl‹¥(w,¾ùctaE'Enº>w—º ”/¾ï@2£ý ¶oß.·˜°²_Ï ûuã†[Á"a¹6»¤%%%]¥ƒD"‘L&@&“‰D¢‘‘‰D"‰$I%Q"‘|õÕWšöñãÇw5±æDV̶û§¯,®³tÌ4asýÿL,Íâ7‰ì(KÆLë©ôŽ›7oªE©TzæÌ™;v¼ãñ…á•yW¤õÒ7^/½:ïê§™ŸRìP½â htô³tež\¬i›cS×­´ŸÙÕ#+dФmI¿d(d ‡±þÈš—ÀCæ:VE«\"¿4ûÒ’Ì%Â+­f2‰rqÎŽmI§ö?º(”Ž?»N%I ”/¢è±Ü4VàôÊ蟜l…\000 qssÓªë\1ÖwOêyÀâÇÚÌ;flãÆc±Xd2™D"A“aWÓSðxüæÍ›a.¶ÊªÜÜ\‰DÒIÆAéç Ç”ÂÙž¦|s(úÄSVöFÿ<{öLÓª/^TTTÐh´w9þƒTÈ"B ìxàÙ}å.,ˆÔ@¶ç…‚Dµ«‚l½º1»ˆ Š©Lo«õG´ Î<;s„Ç™DV‘Z!⊈D¼1>Ú7º¡²AZ/½ès18-XŸ¢?@;pߤeV$ÚÆ;'ê¥MÂæúI‘›Žx¯]íà‡>Z(P¾ˆâ-H­È¯ú‡ïÍ%Që‡(€@§Ó×­[§…uí¼Ž/^(¸»oÒ2­íRkkëØØXMk—-[öî‰ cÿþý111yyyõõõT*õùóçR©´¶¶6222$$¤ãÝ%²–Éá'žÆ :‹tåˆ÷:µu}zB¡PÓ*…Bñå—_XZZÒét&“iff6räÈ.¹yñÇ}ôHzr¹<>1>##ƒÏçS^QÆ7ïÆ¼¨)QÒz©ˆ+ºès1ànÀÀ}„VŒÁ"™-¼¶‡ß$’)äkâ~+Vì›´ Í€AòEáròí$}YÛHáää´fÍš)ÒãðaGÒ36×sEU¹|®Ö ‰999Û6„é IDAT1 ådŽ×”×ÛûÝÉ"@ BþLLL $$$¸ººvP“ðÁ«Ü•·#5-pìj¿ï&÷Yð»™™™Z4‚ÆÆÆÜÜ\$FÓÀÀÀÌÌ ÒG:nnnÞ±E¶Yجi•¬I9)`hjH±£Ù䡌¡ÃÇ '³É†¦†¦«¿ ¬  ˜¶A’žQRÐÏ»ž½ÂyØy½îö7.6$¶$¶-tD×H×ûˆ·ÝR;øøýôÓOH wMMM~~~*3õãß?NX– “ȪŸV_[xí£¿?êÆ£%ð4wH úyáµÝ¹|.à`ÚE®¨òì̯ßóRŸ(P¾ˆB#K¯§ë˱ ³hÑ"- XTó€b°Á£½f^œË¿£µ&F,»yóæö)öööÁÁÁ½tÒI“&¥¦¦BŽºÿþönñÊÁ®‡¡9#y-ΦÖa¾[ú˜y;99effª]eddÔÜÜŒ”Dè#‡Ãáp8‰‰‰p‰‰‰ “Éd2™ ƒN§«Pðáã†#îÅèBCeƒ²%RŸ¢Ob‘(vÊ l-4h…L‘y4óɯOD\€hAtÞìì¸ÎRúl(Øí±t·ÇÒîí΋çÅ­‰rÚìܦΦ¾a¾H`ëñãDzˆ ¤¤äoÂßsÂçÄÄÀ#ĆÄú†ù\ÊÈ&›§]x}7,Æ]˜Ä­«º8{‡‘Š>`(P¾ˆâ5Ñ8Ú5ê)¾ÛøµƒÝX-¿ì¹,7ÈcŠRµÙ%M&“÷îÝ{óæÍgÏž *•:~üxOOÏÞãâX,ö³Ï>ÛºukcccUUÕ¥K—ÞÈeŽÈKø<á’×b¤«Às励3úÞ 5iÒ¤¿þú«¶¶Ve¹ÁîÝ»MLLÊÊʪªªJJJJKK_¾|YSS£²eMMMMMÍãÇ‘---¡õ‘ÉdÚÙhâ‹”±…T!äafƒ2šøMMü¦ŠÔŠ×"g2΄hA¤:QÉl²1Ëx¨ÅP¸ès±4ñuÑaW”ðyBñây×ç \1à ‰*++ •Jíä›%“È’¶%eÍD€ ['¸}ço+ä…š&3ÙÙÙsçÎuýÖ5uO* /"@'LÚ7€küàqC.Ïݹñî‰Y12…<½²Ðíü—ý¿C3`P |EÁo¿ý†Ì¡«ŒZ(>cµ,*dŠê§Õ‚>EßÌÕL¤çjfk¤«_/mÊås9ÂrmƒÀãñóçÏŸ?¿ïJ)ÉäE‹A¯ôÍ›7]]]¡6 WT{0±4 ÙR9¯¥ïñìÙ³ödÑÖÖvÅŠPÌœN§Óét'''„”–––••½|ù’Çã•——·7@*û¯õôôFŒ1ôÕP•SˆMÅN‡¼¼½ü\¾ @ âŠþyö?—/âŠdXenQ‘ZQ‘ZQp¡.Ñ5Ò%Z1º˜êÌêö¿«$¶$'4Çaµ:Âô6ªªªBCC a¡#“O?ýô­Û…áÅ7)¡©á̳3é^tåâIYYY!;;{áî… • 9¡9€GûÛC/ö@ýêc°G¼×Úéïž)ä• ¯¨/#ý¾é›Pf(_D¡ÕÈÏÏÿí·ßÑœ“Ƨf ¡6´í: £ ï}yúûà§zò¾ÉŽëØL:{p¡ ñ[×Eè U†§§gRRÒóçÏårùï¿ÿþÍ¿=}(-Z9¯åä´¾Ìñýu…aaa°Íd2gÏž-•J FÓd""‰D"Ñήí«,•Jkjj ËÊÊÊÊÊ8ŽŠàysssÉ”ósrI›ŸºÛZc]Se_u+î–Çd]]]ŠEEXG\&r„ÕO«Ï‚?—ßžAJë¥ü\~¿.ç”/¾AâËËË ‚­­­™YMíÊÊÊöîÝ‹Œ`€šššC‡}öÙg“'OV½eÿOzqñEþÎ|EK›YQa£àyñöþ¹·ñtcçO}õêÕ¸¸8K+K##Éc àöÊÛ8<ŽÈÐ7kã\‹¡¦!±ùM"‰¬eޕߺ.únâb4Êßddd$''óx<<okk;wîÜû÷ïGGGCó Nwod-—Ð„Ç ñ¥]³ÉÂèÂk ¯©|ª>O g­™ùb/å‹í±zõêmÛ¶I$ç¿]¼áë¼–­._OèjiÏâèѣпL 6nÜØì]]]333eþ!‰x<ǃô±ªªªU§µÅ°­v°ØT\ìYÜŠm…TcÍš5,‹ÅbY[[³X,$u†@'èsOó×¼SØ ÍügmÆÈ:nL"ëàÚªžTÉ$2ĹùÞâñãÇaaaÊ”nöìÙ ,è‘xŒãÇ+AXXXyyykk«Jñ$l –ñØ›[uZ_9½úÇúŸVqk·y0–‰e½`é×ê+dŠ˜Å1‰‰£|Gu& B"‘¨«x{{÷ï-ó³š|Ôíü• ÀžÔóaùÉéûw¸@òE}°°°„„äOÔ¡Óéæ¾„§‡\i¶o­”Õ—PÈ÷¾¼§vUæÑÌK`–tbiWT…Fg«ÀÄÄdÎGþž» p$Cm°uxùTƦ¬7¼Ÿ«›$$$dg·§ é©Tq"‘hooÔ\¹reSS©¬MTY`)€dùT#Îk]]]*•Êb±ìííétºJœIo„Lj#”'-µœÚHHiƒTí•´*Zµô³d°™¾L]#Ý÷ð ÌÈÈ8vìô#¸~ýºD"Y²dÉ[w‰D---"‘H*• ¹\ÛðÿŠŠ µÊ©T£²Ð¨ÊÈü‘¹ž¸MûFB’pݹÒkƒ´Jñ$CCÃ;wîÔÕÕ©¨´¶¶Â!TŽ“y±î°ðB<á1á…¼ MÆMàmÉX@ œ WSS“›››‘‘±qãÆ®Ší÷,,ˆÔÌOÿ³Æ®\(H¬l¨½8ç[´l ”/fܸqC™,B dÑÝÝ=88øãÛûáŸì)ÚpÍ2‰LÈ 9ÂÒ¤RÄ ÝžJ&¯½¿ÜÊ-A‘#&´Ü¼›¼ÜsV÷„ФõÒ;p®p $¯¥Ÿ¥Çn§©&l®Jè â9ºPøïühC9¥AÛª3¹ÔxÚg ?wš×ï—Z^^ Û³fÍrqq饱Ùì¼ûyxa›&”Øôµ- ƒÁ( e†Ú0óšL&ÛØØŒ1ÂÁÁF£µW•Ò5Ò>nøH¯‘E1E<Æ…Ñ……Ñ…8<ŽåÏb°-|-Þ‹£T*=uê” Y„ˆ‹‹366&‘Hù‰Åâææf¡PˆpÁ†††ÆÆÆžºVZ&ͤÀD§U.2qc cuBÅ“cÆŒ9tèJß°aƒr2Ö+ò+Ê9 ® ‡kÂY&Z¾˜ö¢Å°¥ãd, …rèСözRÙÙÙoUNím˜’ÿþhoHìA¨ˆžXšåvî‹‹svôûTÊQô ärùÕ«W5­uppX³fDÖ‚$@øZt'šM!S¤îI-ü«æ£0¦2&í›D :³£#¬åÔÖqë„EB˜j ä¡”Ý[ñêá+Ó‡:Ÿ{@ã‰â#à‡1454¢P ô)úFt#Cª¡>EßÐÔþkÏÅeâ(¯(DPCÄeÍä\áÜ (žK³¶Ý?•^U(SÈIzFÁ£½W:ÌøúÞ±%i±9Î÷¹1¶U‡Ø€UÓÿ%©TŠ|ƒÍÌÌæÍëEþ:þü—×^Âv½I½Lÿµyûö톆†¹¹¹ùùùí3¯AJJ ::‹Å2™L[[[:nooO ¼~°Ý¾s+þ»¸U®Æ›9Œ=¬–S soeYÁ…‚‚ ºFº£üGÙ~b˘ÊôÙÓ§}Ù!þùgïZÈ,,œÉd²n­î‹_Tç·¥%éSô§ŸœÎòguæ ¶¶¶ûö틈ˆÈÎΖJ¥ºººvvvÁÁÁT*´KÆ*^R3'¦¥¶E·Q׿‘MᇅÍà ùÏöÉXÍÍêõAæÎÛSF÷né÷ Ù|oêy™BΖOŠÜé÷ŸÕ€ÊÊÊÊ:˜¦c0ÀÎC‰¬àJ³í†KW\&þkÆ_HìCeC^DÞ‹+/ü"ý¬ü^ÏDE\4B^(䛸M • íÕLÞ ™B\&—‰5m GÒÓ§èèCSC}оþ0ýüóùYTþQ1A1‹RiÿG="/!$ö "£(l®?šyõØÓk­­m$ÆÔŒæ:Ò%ívd?NNN0õ¸¿m*6lèUAx&“éDtªÕ€z³6ý ,ûé§ŸÚØØÀO¾¯¯/ ¦¦†Ãá¼zõ*++ëåË—ÊV1¹\EáŸT*ÕÒÒrìØ±æææDK"ß…?,e˜òI[uZkÜk–]]¦×¢—{:÷Å_/Mi½4/"ʯXøZ°æ²˜¾ÌAI“’’Þñ ljD]]]‰¤««K ôôôàCCÃ#GŽ ®Ì›7ÏÉÉ©0ºðï¿‘ª-Œ©Œ™ggvISÝÄÄdãÆ0W^ƒ¦--=,ç]šwÑç¢B¦ÀV`½8^žzrŠ9$cu̶{ÏîÞ%윸˜M6‰=(‘µÔK›æ]ÝyØkõ:ǹèçÊJKÛRˆ¥Dc®±~­¾§¨§ÖWÙUÉôd0Ùå7n3éÜS$|žÐ>QTZ/ бôµ„&Cq™¸«¼ê•-ˆ%·JRõûŽ]>oŒ¿™ü°®ZL7€Æ·œ¥YØÜ,lnOÛ£2½òå—Ó,´Ú„#,_÷B_S–ÖVƒýnââ Nóô1Cþûü%Ç“H$gΜٰaC)±?~ü8..¶CBBz0UVš2ÛR›‡Œb6ÜŒÅbMŸ>ª ©ÐH£,X —Ë_¾| Meee@y˪ªªªª*h}Äáp2KŸÈ7)41à)5ìš&㦨¨¨5kÖLØ:aÂÖ BŽ0/"s•Sý´™ä„æä„æèSô­X³Ø#â½­ƒå‹"‘(==ýÎ;0œþ˜NyñZ1D¿V߸ĸȫˆÁ`Hd-W^Ñ‚Hb‘ô)ú$+l“X$$Ì+ëDVÜš¸ö;²ÙÓC§r2…Ÿ'Le|ð÷ì= • • • Ð~)~%†òËâ2q¿©ƒqíqiö%êTSgS‹é̯̫Ð=ž{ÑÇQŽŽÎÃE¿Œ7µAÈÙþýû%Ifffbbb¿ä`ÖÔÔ„……AáîîîææÖÛg¬H­€Æf°)tS'¹t@C‰H9NIIInnnEE…2 ‚Æ­¦aM/Ý^ªq;H,ÒÄ'îœXý´úyÔóçÑÏ‘K¿)ëDVÖ‰,8Ë`Ó\iŽ8ÊåògÏž%%%¥§§«(bjš5k˜Læ;ž×ßß¿¾¾^¥D;‹Å t <;î,úLb‘ü"ýLMû +Æ®ÛRßrwã]@îé\#º‘Çn¶Iû›ÉX·oß>s挦ã\¼x1%%ÅÝÝÝÓÓ³3Ô¹·áJ³Mùä×…×v?­.„æüÍ–£0(P¾8PGíÄÄÄÌÌLdÔž?\™,¶ÝàfœÕ=+—]R+òa "•M6—Idšø$ˆ]â[Ê045$±H†¦†D "ÉŠ4Ôb¨>EߘeüÖ´‡ÕÂ"aÆ/ÊJv {úÉémß –û—÷NJd-©åù¬Z%5Z›”~KCeç:§ôN©FrÜ¢€*Í™G3áWg{} ÝÌÕŒbGц„˜ôªšVµ¶¶6Ë¥ÊQooï7n¢¢¢œ‰Db?œ¿ÿþ;T?¡R©}ÎϹÚ6™±ô³ì6 £R©T*ÕÝÝ ‹ËÊÊž={V\\\RR¢VÌ™³µ_8|Üðáㆻïvõàç*§0º‰€³™G3 M í–ÚYβDÒ±ó"ò²þ/«*½J§cæjæ±ÛƒæJÓ’1';;;;;ûþýûíã^ ÔQfff{C£Ï»“EˆE‹†¦-¾Z,+—éé'G’G^ŸuQ;²[jç}Ä»/óÓ68 ž ²NdR÷¤FÔ*qº¹¹]½zµƒϲ²²¨¨¨¨¨(GGGOOO{{ûþMšf‘Ì’‚~^xm ŒN,ÍòŠúò²ÿNÉ,—Ïå7‰ì((}|¡³bý¶“¿þ0¸dbb¢——Wbbâ”)Súo)++KNNNNNVñ ¬Vk£z¯‡…ÅSR)§¤”(Ò³l4Á‹°H OÀ|йógåâi݆ @PS$x.0 Œôɘú†?Ñ+êK˜²æ»e©Ý´Î¶4±4Ê+ª;3*<Îdœ ÅŽb6Ál„Ç‹ôV:"äÅeb‹Ô™L NbÞ•W85­M >êljü)•J·oß^^^pttܼys_>¢—.]ºtélïØ±†ö6N= ƒ%æ]Ÿ§MÛSؼysûüÖ×¼ÁÉÉÛÛ{̘1xÿ‹bŠ^&¼ÌÍnÿê‘ÙdË™–üg|î-®Ê*ݮߺöã€Ãáp ÓYeÀV´É“'7ŽÅba±ØÇ‡††*³ÉÔ_l6GψV®Ü¨ ]#Ýé'§÷‹€¶B¦¸:ï*’;¯éñËÏÏÿé§ŸT,²D"ñƒ>xòä‰ •$‰ÎÎΞžž=Eµ»™B¾-éÔ/—` QÏ«ƒHÚT‡ü¬&ŸúEgêE ¦ïïû‰GÅbÀ—«¡|QUUUIIIÅÅÅX,ÖÊÊjÚ´iÑbímˆD¢ÌÌÌ„„„’’ååX,ÖÞÞÞÕÕ•©Ç¢“KºŠ¨¨(µÂb±øúõëÁÁÁ=ò3ÅbqFFFII ƒa±X®®®Ê£p·§˜ºFº¶Á¶9¡9jÍ`—=OÑ/ìþh-™ÙM÷(4•=Üõs…ÓU½îDÛs×ó€¨ç÷ºÄa/yöò:ìÕù] M ÙlKÃAúXžZÍ ¯¡A1£úiuõÓêwt)~yïdU£ ‹ÅÙ’GÖµ4ØQ,–Œ™¶Àz’¦]ðxüòåËøá¹\ž‘‘‘ŸŸß±Åë‘€Ô· éËù2‡éÕ62™¼qãF(ß`±XPx…H$Í›7ïñãÇ·nÝB,seeeááá›õHz¶ŸØvÀ•“·Ú/«øÀµ‹×?Lþy­£_«¯£^nàe ¢C '''WWW;;»þʽh¨là\ádý_"N¤Í ³Éó®Ï‹œÙ,l—‰/Ͼp7@e.ÚI0 ƒ¤â\‹Å cÒ¤Iˆs ¢±±166¶7êSÃDiMÈås=ÍP.õ>@ëüÑ……E..Ó„Â7ÐU«6»º:+ŠŒŒ¬ÿýï§N.AÐ{xccãš5k4 ‰ :tÚ´iT*µƒŠR4a?~\ÙdÈ`0Ö¯_O¡P4©TÐétww÷É“'¿õ,­—žu>+x®–îü››Wó.Ð-®¢@Pj{j9€¤gT±æB?þœ†Ê~.¿ô^iEjEÙƒ2¹D£ Ý;ÆwÆ=š}ylGú}Ó9$‘‘‘0WšL&ïß¿¿—‚qËËË·oßÝY³fõqñÁ«ÈI‘‹´âÅŠ~>y<Þ;wRRRTòˆa,š›››Ú[p’yRS=L"“¨?Lê›võbÚÄM­ˆyIyz56ÈVÖç3Ÿ#µ•uuu]]]û1E†xæü‘SSÜ™Ï> žîÔÝçý5ã/``åg5÷òÜw—L‚Áëqqq*AH𺫫kEEž}ûTòfìíí{¤>õÂk»£ 5J²g~z¼ãʨ?z C{ýÑ\îË©S'«,Œ½óë¯?`0:ß°óKº‰DÒêl]]ŠZ,‹%‰d2ÊÏ’Éd"‘Øq‰R×>EŽÇãíØ±COO¯¶¶öÄ¿)r#GŽì¤H×Hw„Çe¾8|Üð)¦DR@ø³&ÙU6ÙÜ‚H努„Íõ©ùý8µ…žÐs¸91ýçt¦>R÷£ŽøM¢Ø¶Gzõ¤.‘EÀܹsÓÓÓ«ªªÁ¥K—zÊL®òîüòË/ðÁîíºíQ|£6Ô&ô= FHHHPPPrrrRRâ((++ ‹ŠŠšþøãǧ¥¥!â»õõõšvé‘úÔ+ÆÎ8–y-—Ïm¿jßäe8  @ùbߣµµ&<ü‚!÷î]ëû³»»»«Ô@0qâDccãšš±XÌçóÅb±J…PM,°ͶöcÁ;JüÅAi7‹dêl 'µebþƒW¹Àtži#LMMMyyùË—/ù|>Ç«©©‘J¥`#@G®£'ÖÓëÖÏ®q–.ÕyvêÙ³SÏ08 ÅŽBu¦šO1gú2»ýÐv ™¢8¦¸ ª ½´ÅŽ2vùXëÖHl4Ó†àéNbÂÖ Â"!Œ&O;˜F¶!]Ñc9X,ÖÍÍÍÍÍM¥¸—&¼{}j{}ÞîÙ—w¨PÆÝKWŒ²(”/ö–, \¹r“ÊB*‘4Ëd2Úù%¤••Õñ©MMM) Ÿ¯Z"ÙÆÆf̘1e91¹\ÞØØØÔÔÔÔÔ$‘H$‰D"–––ÎÿjCCÃ3fž„¤ä6÷A,?Jg±õiY©ƒæÁ5Õ#V6‹ÊÄüc7Ï#0´á’†möOÕ?õ9ªsý’;%wcïbô»ì“ª—KÖ< …·Ï…hE.—Ý«¸×½k5jÔÓ§OªªªŽ9òŽß×–¡††K—.AË‹Åjii¹wï^_öyeT›EJßVyæµúúúsæÌ©¬¬ÌËË+))Q(@ÉÜ8|øp>Ÿ¯ *€²½ìÚµkþüùººº uuuÿüóP(‹Åµµµ o™~c[%$‰ÜD®ï¤¯(V`š1o%p07 ÃцCÇ %Œ#è3õ‡˜ôdK#§‘˯½WÛRóÆ ‰#⌧Ÿ3Ü€ePêŸ=*‰Ss*“ Ú&j6ÐàƒñÃxÃþ‰ûpkå­ÜÃ|†õü÷‡›6mZBBBqq±¦mrrršššÞý\¿Z]3|ò´Ž'’51õM|(v£›Gtæ}ë—Ê»‰ðð l¶ª_iöìé‘‘—¤Ré¬Y>_€UÞa¼­ƒƒÃ[ãm=<<"""’““¡ÇÏ;wæÌ™Ý’‹Åb±X$ …B‘HTWWwóæMX…VuŠÉ|ÇX`A -' €Áaæ|?± ìÿë6l¬r;Åað„û·dÈŠTeS&iËïúpÖ‡¹§s_&¼—‰ i†/®¼7É[jZdWe>Ç}ºz´…×vW6‹}â_»;SJ¡#:;lØ¡C‡àð=gΜ)»²wï^hh§R©[·ní{q¸‹{.†Ã|‡ñSÆ”§W $&&&%%ÕÔÔÀ%ÕÕêS€ëêê®\¹ÒÐÐÐÉbÍD"ÑÜÜœN§S©T:N§Ó¡¿"exJò¶äöÛëëN;:­2­’σr^Oòò*ÎW@ƒŸ•Ÿ} ÝÜÓ¼c ȆÊ!G¨OÑo_ ©‰ß”‘WU âVÆáqæžæ«Ú àh¸Op¿0ét²¿<ôr¢ÿÄ^Ò]ommí€/NŸ>]%X¶ûãðêÞå½û©9ΨQ£rrr4…Ó”––z{{c0˜¸¸8sss@JJÊ7ß|s÷î]MÇ„æ$]]] ‹ƒâñøU«Vq¹\M׬££ƒ,Wn£|± £c°µµ?Š,im­lß¾ÑÃcàþýëpUg–tgRˆÇ¯X±"88¸¬¬ ‹ÅÒéôn'—Á<e“¤P(¼ÿ¾ÚÇ×O]ÎmJ:Ö ¬²E aÛ×bü`zpØS _¼PpwߤeÚsavKíl͜М[+o²Nd±Ø]JȈ)z„ʇùnyG²ptttqq’7gΜٹsç;&NÞ¸q#??€Åb?ûì³¾'‹Mü&XTƒÃX/°@O/™Lž?þüùó322îß¿¯¬éØB¡Pír]]]È i4ƒÁ033ÓtOݶº‰ŠE¹'s•1òñíMMmÙD\‘ @ð*ùUibiEj…r Lšy´ÿ#±Hæžæ–³,Í\Í”u…á­•·^=xw$Z?<ò¡•ŸU%m(vÛOlí–ÚšÂ+·0na”WTõÓj™DvÑçâäý“Åeâú²z’‰åÏzw''§‹/ª­OmkkK£Ñ´¹—Äu rù¶$c‚:CR¸““Ó™3g~úé'µÇÙ³g϶mÛ ž}ûþ÷¿ÿ¾ýö[$T¦.«P(¢¢¢V­Z…Á`nݺÕãáÝ(_ì@jˆ °°ˆNo#[4µ¨èd‚Î,yÖÈbõ|ì|PPÐóçÏÛG4ÚÛÛ{zz¾Ë‘eYvh6l]þ:Pæ ç¡DÖp¥ÙZ©ƒéÁu¥Ù’ôŒ„Íõ\QU ”M6׋³tLAT j¼µòÖÒœ¥¬Ï!l®_yû0l²=ý¬&ôÈõ„„„äçç‹Åbý.ª7çÏ?ÿDì¾)­‚òÔrHM†®VYûáäääääT\\üßÿþ÷­óO …Â`0h4š©©)F£R©]ò{øþîËšÉÊ;—W‘Q¡GÐc|ÈpÞì¬ÿG´ -ˆ0 ´YØ\šXÊKàU?­V–©—Id;fÍÄáq4W¬idfô׬¿”D\ÑåÙ—™¾L~._%ßÙÐÔåÏ»|ìðqÃß]nF›¡GÒ›w}ÞÇ3Mü¦fasÜê×)ðw=tßí>ak¼ÚaÙ²e¿ýö›ŠÄ™Lþì³ÏúKe½“ør˯§ÃÞ0ñH¤)í7‹ˆˆøû�½½÷ïßÁ¨yfbccýõW óý÷ßÃ% Êiš€Á`‚‚‚`ìµZÎÝ1ÒÒÒæÏŸ¸té´ûèèè;vl×®]›6m;vl``à²eË~ùå@aaáœ9sÊËËÏŸ?ïçç‡òÅCHÈçqqуiì Û·oÿý÷ßss_Ïò½½½ƒƒƒßñ•æÅóš…Í2›¬lĺÅm#ÐÓ™Î`p¦ïœÎ½ ¸P¸sâb-¼H ãæ{zìéfa³#LÙ•2iߤÎìøy±Ê€¤g´oÒò|CBB~ûí7À7Æß½y‘D" …'GGGŸ~éÞòä¶ÒÆZ¢¤Óm0 ½F_ýu·Óà”+Êt’è à ™¥÷J¹±Üê§ÕˆÝQ&‘•&–B¯&÷\Iìc˜¾L‡U¾ïXØp ût‚ÿeÿ žZåoôB¦HÚ–„'áV÷€Âƒ““Ó7ß|ݾ>õ èÃøøxGGG6›=~üøØØØ™3g¶ß¦¢¢º8***ºzüÒÒÒ… îÙ³ÇÃÃã‡~X¼Xãפ=ݲeËÉ“'›6mJJjóåæææææZYYmܸ±¤¤dĈ/®]»öìÙ³¦¦¦Ó§OGùbO"9ùæà;ÈdòÖ­[«ªªŠ‹‹±X,‹Åê‘÷9ûÿÚŒ‹c–ŒAæëYË•ÕàëÌ›)/Fi+_„_ ÏžÐ+v0Í&ÀFYE-"ò"ò`û¸Ïúž5 »¸¸ØÙÙÁKxxøÎ;»1W ƒ•”‰DâŠ+ú­L\t[™8úú€~’±X¬³³³¦`//¯!‹ÝÿHü[!Óc·G³°YP x™ø’{‹[‘ZØ;Žå‚~gûö½s­PÈ*dAâ—‰ì@v7ª³¶‡ÍöíÛ;¨O=p¶bÅ À²eËBCCÕòÅîAGGgøðáŸ|òÉñãÇŒŒ®_¿þé§ŸBbªv{åøEØxô葯¯¯B¡€VFˆŸþÇ‹ÅâmÛ¶áñx¤Ä|RRÌ5 w­Ý R©=(;ÒPـȸŒò…,O¯*6×ì(Úé®}Gxš;àqC$²–A)WT¥µ÷±+Ææ†ç¸®ØØŽkIó›DÛ’þ€ín¨swŸ}öÙÖ­[KJJ®^½ª<Ìu÷ïßONnËœX¿~}×UG (9B€¡©áHÏ‘ýaî½`•ž…IæJ£¹Ò&l ­—–§–soqy ¼êL%ûXsXþWýß矗 QïöaJAuPŸz€¢®®îâÅ‹çÏŸ‡êêêÖÖÖ«lF£Ñ$‰L&ëR¼¦Ê€N tC»3 “ÉH•—«W¯v,Þ¦‚ªªªˆˆØž?~¿„-B 2ÝL_æ Hª…Á**±öÞÞÞ7nÔÚø3]#]ÆTÆ”SÜ¿wï`3¢%¼ßP[ò»“kQDDDlÚ´©õ_¬[·îܹsí7›={vddäùóçgÍšõ.§{ùòå°a]P>rss‹¿}û¶““Ó[7ž3gNLLÌÀ½¨}qÀ£ð¯BسdŒòò˜¢Tؘeé2Xû\ÖÄ ‰o¨µ×I´ NÞ79áó@Ê®”Qþ£”™=‚ ‰ÐÃØ7iy÷Ô¹;ƒÉ“''%%åççËåò3gÎ|óÍ7!%r¹üèÑ£0ÌŽÁ`Ì;·»”{‹ Ý­Ìã{#X¥@÷ ãð8MµžÍ§˜ƒ÷d›Žî£1Ëø}îÛÑÌ ›u°AxxøÙ³g‘?—-[¶téÒuëÖ©l¶}ûv×]ƾÛ[ZZž:uªó×ðàAÀ¥K—Þºñ‘#GƒƒƒÅbñ@”ãAùâÀFib)TMÓ§è[ù½.úžËçJ$=#Wší`ýù°"¶DÖ’Z‘¯Í.i€Ãj‡¼sy0äëæâ›‹R©x¥ë¥M_Þû¶}™ã{;äô³Ï>Û¶m›D"yþüùÍ›7gÏžýÖ]Μ9SRR000X¿~}?Ú½ÄeâW^pxœr Æ @Ï«ô ôHzŽëÕÎMM-ý,ßóQÚÊÏ*yG²Z>M´ R©ïsç|±á-* =RþÓÎÎ.==]ÅÏ+‘Hh4ZQÑêí*„¬ý.*ti{¤íääTZZªö8íT*µ=HíêØÈøµM¹mtðhÄ+—ËçîzØ6!ó5q×÷Äㆠõ£c¹iZý¦á0ÓON‡i¡•é•™G3U6X÷ôD›’Ã|7÷ö]311Y°`lGEE½Õ+‘‘ˆ™ô/§áÅó`–.Í•Ö#¹(Þî»ÝÛ—¼3u6yvæàVÌé Èl²ZaŒŽo˜ïû“*Þƒ¼‰ÞØ¥§ô@ùâÔHƒmǵŽ):žY3öôgˆÔs“¬”¬°i+îUpOË/•bGqÝÞKú`Ç÷µÖ×ÎCèXœœ¶±÷<ÑÊðññAôt}µ§N‚À*çýÛ“e÷Ê`õuj pxÜô“Óî8®sdLe°ÙÓON_”²HmÜÅ{§ N>Ç}TmaòÚ9(P¾ˆ¢×Q]e‡Nb‘8Âr¯¨/ŸV¿a“*H\÷Û îÿQñ¸!€¯r¡}N›á²ÕêéHë¥w>¿d• ‚•·CZ<Ú»§Ô¹ß åº,%%%wîÜÑ´åï¿ÿ•l©Tj? è@È$2$Ù…ÈFÇí¹§¹÷ï…q ý"ýÆ®‹Z•á°Úá?ÿY·pÚïÓ L ¤àBÚ3(P¾ˆ¢×‘ýÇ5]VÞ:ÌoR#OšówlIÚ`í$@S¦Çóžhûû†Ã f†¢˜¢œÐÀ¶¤SðÆQô‰‡½V÷åõ˜™™!i+PUQׯ_‡zX,vÍš5ý®V‘Z§ID "j¾B1€3ÊíWÚ;mjË¥}zì©rÝE(P¾ˆ¢W¾š©p <º²AðàU®¦ÿ*|0ˆ»"€ý¯Kúù=í¿Zš+mÜêq°}Ûý+©IHNôïµý¾™={6ƒÁÈåòððp¯tnn.’÷7wîÜÞ¨“ÙU 1½¬ Š÷ãVƒq·•镈z. (_DÑ+@dt˜¾L=’GXÞAœ"GX>ˆ»ÂÏÒf‡$–fA‰r-‡ûnwhk6ßþ¬,ö’:wg°bÅ h5ÌÏÏWöJ‹ÅâãÇK¥R€½½}ÿ è (ˆjsáÙØ ãŠ=’ÞèàѰýôØS´CP |EoA&‘åžn³&:¬rtœ!aj8˜%¾èŠÇ;ðf Dm›6FwYæÇ=5µ RONߨ_×Ãd2=sçÎmÛ¶mãÆ‡:pà [$ý¶!âŠ؇¨}ÅÀ…ÓNp(Š)‚•ŠP <|‡3…O>YÙÆÄÜF»¯¿P]ØÄoX$øÕd‘Ì:Pôf8î™nÑt‹›> .˜æJ3ZhÛs®ÙìBÒ3êÇë™;w®‰‰ @&“•––ÖÔÔdffõŸ~ú©–hG#Îhš+ "A1pAb‘eJD …&p8H­~d(-µ¶¶f³ÙÊjˆñññH¡çöÐÑÑÑÑÑ2dˆµµõµk×nß¾Íd2á¶GÖv°Ù[ŽÊ©;ßÈÁSRR¼¼¼´—/JL˜0}ÅŠ`‰¤,0p%ú÷rþÈ ›6HâN·Åj7v¥Ù.3mpwH »í͹Ây(‘µhÿó›D?ºÞ®Þ ˆõ†ü$êßë‘J¥ÍÍÍjWÙÙÙ¹¹¹iI¿=zì43ÅÀ†Óm³ÜœÐ´*`Çwrr:s挦 öìÙ³mÛ¶/¿ürß¾}p‰B¡Ø°aCLJmmm•H$»víZµjUHHÈõë×aÕÁ¶o¯ÂÝ=(Ÿº»ûí·ˆ ®6òÅÿû¿C8œé’%^^8®¥EŠ>Äý‚&~,nÁa`f4DLñ£ö{š;\Ÿÿý –솰 RÙds€DÖ’Xš¥ý¼&î·â–ªèy L+ èjb9ë$$$ÔÕÕišÙÃÆ~‡L"CzÉÂ× P h˜{šCýE™D–‘÷žöBm¨¹ùÆ?uˆˆˆˆˆˆ8wîœB¡><666((hñâÅ7nÜ€K~ùå__ß·s &((¨¶¶‡ÃÁð›N1õ%%%1BÙ¬xíÚ5&“‰ ÙlöСCUŠG#§†GûßÿþÕÍÒÒÒÌÍÍÍÍÍÓÒÚ„MRRRLLL–/_®â2ñûkb|ÂÂÂV¬XX¶lYhhhgvÙ±cǶmÛŒŒÞ®££C¥R>|üøqƒqýúõ V=µÛ·OLKKûä“O”—lÚ´iذaH„ORR’‹‹ËÈ‘#9ŽÚS#{a0À£G|}}§M›–‘ÑØšœœìëëëääÔ¿7¢SãH¦‹\.‡9’r¹\WW51ö=xñ<˜é¢OÑ·ò³‚ |…”>àùžÆ•²ÉæD*WT%l®O­ÈGêJk>O8o@ ›±ÅPÏÀûˆ÷åÙ—2EæÑLËY–Œ©Œ¾¿*KKËììlµ«°X¬¹¹Vd"sc¹°a1Ý P `p˜¾øàîÆ»€ôC飃G£EqTPWWwñâÅóçÏÃ?uuukkkU?h4šD"‘Éd4 püøñãÇCf¦)ÖPeù¸qãâââF¥)8Gíq Éër¹\e³ŽÃUÜî2™¬3géõǵ3Éd•2Yå´ižùùa;..ú?ÿ Aå¾Gú¡¶ü_ûö°LH.Ÿ{0=.<ìµÚHWÿ½í$ëEkkIŸÎ½Ô‰>ìµæD3}™Ð`¦)âÖÄIëû!XpÒ¤I0t¦=\]] ú½ëD\¬¸ÃãЪ»( ì–ÚAín~.ÕînˆˆˆM›6µþ‹uëÖ;w®ýf³gÏŽŒŒ<þü¬Y³À¿‰)“u)1åå˗Æ ëÒº»»GFFv°Áœ9sT";†››[||üíÛ·ƒ¢µµuJJÊíÛý,JÓÆzçN’HT§P( Åðá&Gþ>Ê} q™PÆ,îשŒúKðYK0—Õ–Æ{…ó°õòþB½´iWJ[pÌR»i ¬'!«|Žûè€#LÝ›Ú÷×F¥RCBBÚ+,2 8Gïw •vYþ,TIÅ IÏ~…=l?þñ1Ú!*_¶lòç²eËNŸ>Ý~³íÛ·ïÙ³çÇܾ}{÷N}ͧNêÒŽ?üðÆ :Ñ9räÈáLJÚ©ÀÁƒ—/_¾råÊŸþ.ùþûï½¼¼’““•¯tN»§Ñ…a÷É“;³f½zU 06&FFþŽ>ÊÿÏÞ—Æ5u­_¯„fÈ„-(*8ëU[ª8Ô·*^¡Å©T«^kí`½´ÖÙZ«µŽ(ŠÖþ©ã-½PP ‚Šdˆ! aN $ï‡sL $ÌC gýòagŸ}æsöYûyö³žÆãˆÇÄœh¶›Hòkf<‘4™A×Ù7ù#-¿>~ì!„Kº°º4ANˆxkVýñŸÜò"Ó&4™6 k¬;åÀ”ßfü q[¢ëtWû±ö=|xcÆŒ±°°8sæL~~~CCƒ¡¡á˜1cæÏŸ¯ÎîØÃȽ–K(g4…~¯¼îýxO*‘òby¥¥Ú•=ÖÓ[Xž˜ØD÷ÃÃÃ#99Y©S‰Dl6;;;»ùêrãbóU”ìŽJÛÞÞ××·¸¸¸y½¼`ccÓ¾”j|||«H˜3gŽH$°qãFu[Ð,¾8tèàœœûԻ݋xþˆ|gÞ÷PR[¾ìÚ¢æ›ÑÁ„ Œ–ÃßyÄÁ‡W\ÌúK£øâ•ìÄ–óD Äy—“ùk&€?VýñÏ¿þÙóV´!C†|÷Ýw555ÕÕ՚Ѕ€X(&²¥Óô^™ßIB÷ÁÌÙÌm¶ñîßÝ~×ÿ¸¿¼‰WV"ÈS·®Ò]ô{PSkû  y&4bºÛÆ;Dºd®…ãŸw¨K`>wÂ+~– 9GE°e%OtcL=0ÕÀÒÀ‹”·¿ºÝ[Gkhhhee¥9dÀÓ O %û±ö„ãž…þ„ŸŒ g3(ín }ž/FE]a0lå?&ÓŽº|=‰‡‡Hjn W¥w‹ŸFÒ˜ºZ›Ã\c¬½‡ƒ‰%€ŒR^F)OCŽJÍÒ3VòD7†¥ÁÔS‰rÒ®$¢FÀó?IHÇ ”B?Û-×î~xð!uA(ôm¾øAMM>-‘Rb:= ±P,Ÿïïê)‘6,¿ñÒÈØD;æåM<^¤©¸? Ù[P_¦UŠA×™âôQ¾ðô¶&Ò¯™ñI-þ­ã·,ŸÎy—#÷·þ±ê-•ðm ©D*órñw¡.…~ ¹‰1õh*õâSèÛ|q×®TLto!ãlá³àZ°ýØ^I+É`i`¶gÒ‡d#YÒ?Æ£(‰FmªÒÁ?d”ÆiÕµš?˜tIúûj¯GIV—Ê™}ˆÇ›z´ºŠÿqB_£0¹0asõðóoñ+ŸW0s6£”t(ôW¸Ív“kw?:ñˆº ú0_\»ö«Ï>ÛHù£{iáiDáµ÷_Ë-/úêV8ñwƒß[£WÁt¼C(¾ª¼f}2Öj••q¢£'¡k˜[^”\”Ù»óqÌÁ’Úr´æ‰n “I{H!É„ï^¤¼Ðò‡_ž3Úq"匦Ð?Æ úÿ"}#þó€21RèÃ|QüÑ=ŒÒŒRypèР¡ëãa.cí=VzÏÙ˜Š” IDAT"Éð\j”¤‚Hí¹\ú æl÷ÑDùbÖ_½x$ÿ«s«Œ‰V‚I%RÊ+s-‡(PJ:ú7äÚÝ/R^ȇI(ô=¾ØÝ ;fjêâèèy劲ˆ9f%ÿ‘&ŸÃñårGñx|u5ýr§)NˆRÍŒ'þ~7ö}EzèêLH*Ôn¢B»&P¿å<œ(ôüÆÜò¢#©¿{çÔ‘Ôß¿¾u‚¨ äN :¹]Ûñ?îOäïáßâ'íJÒÚª<·œ,1ôn³Ý¨.›B?†KÏëCR_æþ^J½ŽBŸå‹÷î=ttô$œÑNNÞ?éâm.¯¤äÉ™3‡BC?i¾T&+&~ÄßÍ›X¿~ͧŸ®Üºu¯ºšþ‰H’r0…}®|}Õû‰Épz4 s‘Š[ÚŠL¬Uõl·Ñú &€ŒR^–°‡ áiÃúøcîGC–]Û³ñΩe×öäT`éw@JÝÌÙlìwc‰rüúx­õJË­,l?6•Ö…B¿Ç롯)¤³¯dSsQäÈÊÊ¢Ñhiiij; Ãáp¹\¹Ò5Fc0ãÆûóOÕéa‰„.L&“Ãá\ºtéúõë...De íY,Ö©S§ÚxØÌ¿ÒÃé[º’/N˜0óòåÓuuuu¿ürdøð)]{(;v|Ãd2Gþòei«££ÿ·`Áœàà¹W¯ÞPWÓOÞ“ Yb¡€‰ƒI¤é_„,‹ƒ‰å7£›fi3‮§v+FC´ªsÑg0ådú×'=î³(z׶ijÍ#lÞqÝvOtcx¯ô–‡w\_v];½ÒTZ Z3g3B^@êÑTê‚÷ññ9yò¤º›7o^¿~ý§Ÿ~ºuëVÒH"“I$’£GΚ5K­!E&‰D7n ]´hÑåË—åY§Õµÿí·ßÖ­[§w¡}þh±XL§ÓétºTÚ]Ÿ®ƒO¬X±XзŸ93ˆÏ'é‚"}}=&“)©«é;£-Þ±ý>‰œ†¸uÜE˜ CXÏT3HÑÖ©yË£¤¯>뉔¬É…™ò©ŠJ¸œH$øn÷ËÉ ¿}ümÂ+]˜\¨…ªl‘$ëBQ–D)PèßðþÈ›ä‹GR cA?Æ·wN.¹öCãŸÊf§OŸVÇ=¢££,X|õj“ ÏÜÜÜ)SZ²mÑéô ”••1ŒòòòVx„ òf™™™\.×ÔÔôÊR 9>>ÞÞÞ¾±]ðÒ¥K...—.]R· F #Òv`u å‹ÉÉ7çÍ[ÊdÚ1™vÿügèÓ§]ÿމ¹uýzìŽß4#õÅ%%™žž¯Í›·D«:ŽÊç•r幓. „íj¢£g w¢ŠÖìùPi½vß#޶õ¹³ÝI—ô-~a”íV\y–¨N»§¤¶;pà@+ÇÀãÍ;7...00°U_óþýûß|óM¢üÑG:uêÑ£GŸ}öQóÅ_lÛ¶­±…2+++99yÞ¼yêV ‰jjj:¼z¡ó¸\÷¼¼Ýw(™™Ù»w‡EE`0T•±±Ñwß­ß¾}ùF±mD"±D"a³mÔÕ ©ûÿáþgžœ^ÈýJÃ=L:c™ù˜Ûñ·”ZÒ õ¢m7%è5th ¹‹ ŒÄ'ºâ'ja·Ë5`§Tæøéúéé–^ݺ¯Äœ–ž®kwãhÏ„Üô(ºÖdÕH%Òÿ þ¿Á»ÓthZrŸ&Óº0_gª›„DBÿs<±–\7¾®O¿òÿò?~|éÒ¥/^|äÈ‘iÓ¦µqE™Lþî»ï¶0…ÑÚÚzáÂ…066¾|ùò{ï½GSuííììRRȈ‚øøø‘#GÐÕÕ%j’’’âã㯲víZb±XÝ*ò6^]ùbw#4ô“C‡v3™Lu ÂÃÏr¹d€äŒoEFFÕ××OŸ>U] ñ¸ˆ4i’§§ç„ úÐk&•H-%%r¢G>% Ÿœ÷ϱ³U´æŸ@ö3 éІGƒ®‡§_¡ôO$~¶ ¼M ûÜPVåò?HÅ‹Ý|ëctó£KþV·ô­‘ã'4Nj'G>;î¬D$©L©4{læ½Ò[KîàáÃDáÿƒÊHA{ #=væ˜0KXW\g™oéâÑwÏ¥…é€mAEEÅùóçÏœ9CüÕÕÕ-++377WjÆf³E"‘D"a³›Hú¿ÿþûË–-kã±yyyݸqÃÝݽ¢¢B]ûµk×&%%É9kCC®ðÓ6.«ƒÒ*ÑÉÕ»íØ+ƒaÛÂßÎ#6ööàÁ~Es˜L»°°ãgÏ’ß >Þ¼y÷öí?mØð±ºš¾Ž¼›yÂ,!©1n½–Àe÷Íè`M늑·Ÿ,;†ÂÀ z¶°_DÖ¼¸ˆÚ<-ìs\ý½¡XÞCB±²›PU_{W¡n©¥™»SñF¶ÃmG~>’(Ç­+þ»¸<·¼ß‡¿”ç–—ç–`è3¨´.´ t}Ø’aDùá!­N'±víZÙ+¬\¹òôéÓ͛͘1#22òÌ™3Ó§Oo\Îå¶cês~~þ€Zh°iÓ¦¯¿þúåË—fΜ©4p̘1‘‘-©7_¥ Wïn´Ã¾Èdê^º=mÚ—.E3™]l•kåÈÌÌvp°S¹›m“ÜrM_‡<Ò%éõç†À¾É)#ë;R|Ñx.'+ÍGƒå a"d à‡ÃíkmëhL,ÇÚ{ÄòŠ$u±¼¿g»î޽d \Ù’\¨6‘Ì©«‰™”ß¿ý2Îe”f”ÖWÕŸô:)“ÉôXzCƒ†Žß:žˆéÈÎ%G@)% Ú¯½în¿+Š ^,¯'7šØ¢ï%<<¼ñœÂÅ‹‡„„¬\¹R©Ù† ÆŽ .ŽÄ f£ 2$<<¼-‡A´wuu=vìX ÍŒ¿ýöÛÕ«WŸ>}zß¾}AAA•••„©rË–-AAAꬪÍWiŒN®®A|ñÎßgÌXXTT ÀÞÞöþýÿuë‘-Z´êÆ_µ¶³ ÅòÈФ7  ìï¢jR…0/_I¹ml¢ªã° ÂD(<Ç g«m—ñ-gŸXÞCç2b»ƒ/îpñÓ?Ë߇Y¹¤¿Ì—¾ë˜ºú]θ.±7pçsïl¼ƒW>±Pü`ÿþ-þÜs , úß½Ë8GšlÏL± ÚB»;q["€»ÛïöW¾xô­µ-7HLLlü×ÃÃ#99™ˆ&–C$±ÙììììÆ•Jtªù*J ÚÞ> €MLLLãf¾¾¾ÅÅÅÍ·)/4_¥ñ~;°º†òE//¯ç ã·oÿW›;‹Œ³Ddè ëê<'¡±®ÁÖqªbÃjðäSÈÀ.¦M£:,ÆÃÄ•iŠñü}©m—1;i}ü1¿fÆï«-JH¤ ÇÜÿ࢜îùLJK‡½[^t3ÿþóÊ7–Ý'oeÙ£ŽB˜%LÚ­"ËË‹”1ÇL;5­ŸÝ8‰HB¤u•6š‚¶bØ’aI»’¤)17‰åÆ¢®‰œ½u÷*ØE¿ºš‰{{I…[cóìùLJ&–*Úå탸ôlžèÆpZEŠ¢P_¦m—ÑÙ̆˜;(‘6\ȺÓU›M+ɱRNÝXvñ ~X:ìmbK‡½ýíèà ¡“»Š,H O«¯ªW7´è"m¼X1^²àZPJ:´,7ÖР¡¤iÂ÷ Ô¡Ðgøâ… ÿµ°p—‡¹ty¼ 9 ‚ÒŒR†4Å«p¸-'äµ7U´«JÿYvùL+m,&ÁÐ$ÈÛ§…ó-2—ôÕìÄ.Ùà‰´ë£Nÿ+åéûäN|ðþ/ëAÝzEÉjUè¥iÿÓe|rŽL7ÊOÉtSÐ^x†zöãa!…~Ë—åæ*2 wy¼ 9ÒÂÉ,™i/j ê÷LúPu˜KÎvÒm櫵›sy•¼¨( 5Úv1åÚæÑ¹ÉUõµÙTU}í¢è]‹¢wÛÑg0û¯;5íscÝnŸ>¨£¯Óá¥}ò´Ñ”3š‚6C«´»)ô¾hhhXPP ®®.1ñÞÀÔåëHD’Œ³äLÿäá+½gµW%¾Å?²; c÷ïASÏL4ÔàùQm»ž\ G®…#‘¤îf'çÓJrGœZy"í:ñ×e÷à½!o6¡òuÅxòÇ#Žƒ¤©ÈÙ iטìÇØ«[¤k¬kéaÙŸn¥¤C‚rcêÑTíL"O¡ïñÅçÏÿž=û=:nlì¼víWQ—¯;u!‹ð;”›‰+½dߌRÑH\¨\tZEzœ[€óšW,3œTÞÑ&Ìebì°KšðAg”’F¯7¼€ ¡ Tgâ^Š¢È¥µyàƒÿ×%ÓF½>ô2q0Q¹Èoƒ_?“›‘—Üf»QJ:´œw9D¤KåóÊÇ© B¡ðECCƒŒŒ¿êê êê ´>>'OžT·Í›7¯_¿þÓO?ݺu+Q³}ûöÑ£G7ÏãҤϓÉD"ÑÆCCC-Ztùòe"Ku í›ç\é`wÛh×X=77·¤¤äÌ™3[½Ûùâ¡C» Û÷ߟ?iÒXƒQWWO½Ã]‹Ýa§…ºÄ† ÿZ»PE‹Š…à¢ûFèš·o¶sIcm "´êÚŽµ÷ ÏsË‹’‹2[hIhqËã =,ãXé=«µáTK)P!©ïîNÂãÕd†ÆNC.L˜u±‹øbúÇÈý±É@¢*)óP‘Ò5Û—T -æ { rDZ(îÏjÎG;¥¤ÓPƒ¢(<ýO¿ÑNõ( ýýU»;**jmS¨lqúôi©Tu„xttô‚ ‚ƒƒ¯^½JÔœ?~Ñ¢E­s :}Á‚eee £¼¼¼íG.7õÅÇÇÛÛÛ76+^ºtÉÅÅEn8ÌÌÌär¹¦¦¦J¶@ù®‰­………I“’’“’HÇÔ_ýeeeµd‰"ÇÛŽ;˜Læ¨Q£^¾|©‰|qîÜ™Iኋ‰¿uuÔ;Ü…H¤çG>#Êìwô õT)v“.BK ˜Òþ»­»W4´ ¢W¼½]gŠÓD¹…(é#©¿:ý¯´’\âoÐÐÉñ ~nËi}-Øát^©ÈP¿ƒñw0НvÒÄëâOšßònæ©KýÒ”ÝAI´Šz©϶tÁ 5 m)J›f>­ÍÃßÁç} „’މƒ‰ýXûöí¢:÷gáÉDB‰'_àÞô.#»(tÂDäþˆ'_ ? Õ™í][kµ»oÞ¼éííÍårGŒ­²@ Ð××g2™@ÎÒÖ­[ghhxîܹ–·ÏãñæÎxêÔ©öÞ_|±mÛ¶ÆæÆ¬¬¬äääyóæ?úè£S§N=zôè³Ï>S¹k¢,‰jjj¬[·îðáÇ–³ç¯¿þ:<<|ÅŠJ«WH³zç!.DáyT>O…Áž…VÇKëP|UQ“·ÎkàØg"¡ÝM¤Ê¼÷ã½Ñߎ֒‹wüøñ¥K—X¼xñ‘#G¦M›Ö–µ¤RéâÅ‹/^8þ|•mh4šµµõÂ… 8`ll|ùòå÷Þ{ ¦êÚ£™':)))>>¾q ÁóÄb’ÓÇÇÇ9€®®®Ê]7^ @bb¢¿¿¿T*3‡ü@ß¾}ûÚµktz“.1&&æúõëQQQšÅ™L»ºº¥€t:21vv%ÿ.dHl˜rÌl†Û(·¨/k"¸Hèow:†°™ƒü0È?ëY- }÷/Ltôdé ÅU¥¼´’\Kgù¢´’Üw.|›%$Ÿgg3›ó3¾j“Y@~x‡^‘8?0mPžq! œ`éË¡c«é°šŽªtðÃñâ"iÙ­+Föäì†Íؿߺˆf3 ž?¸0¹@Þà‹µy(‹GÉ[áIjžuË)Å݉ ëƒiÅ»:0àÀ¹'±íࣼŸUë\J*³Ü]pœ‚H<Û®ðq—ÆáùQ¸o„õ,ª£Ð ”È"Á svƒaÚ&A´Wð õ$&l¤Mõû·_?ÓFP=\­¨8þü™3gˆ¿ºººeeeææÊcl6›-‰$ ›M*ü›››3@qq±Zß”ùyyyݸqÃÝݽ¢¢¢-íå\¨Õ³hhhPjÖòôG%·»D"QZ=33s÷îÝQQQ FÏYýÚ´'‚J$…Ô[ßÈ-/ú>!rÑÝaÄß׃‡©è27‚‹FØujŽ ð<êŠQ›‡’hXM×’ë¬Ï`ú» ?› ê«I=§»ú¾Ëw6#vùŸ„â*¢Y wâ©«ÛÚR¡ÈÊm>¯]Omcã!¼ ®ŸC‰‚Ó¨+©˜ôŸ²|á¸æí°8M!‡ #OØ9¡ÒÖ²T¦¢,Â;¨Héí™ 2ˆ ˆ_ð{ ëÈœ8WPTÝ5›/ùªÁ0Ó t&É8uÍA7Ó t=0-[ºkª3‘µIùB5Ô ãS ‚‰ÕQP a¢2Y”ãÙvXMô[â¼Ëa}Åf ínþÿàEDD¬]»vÛ¶mÄßµkמ>}zåÊ•JÍf̘Y__?}:ùE ¸té’‡G;®R~~þ€Úu„cÆŒ‰ŒŒ\¸p¡º3gμråÊÌ™3Û¸ÁQ£FݼyS*•úøú'篿þª¬¬”· =tè“ÉìÉ{Aù£{Ÿþù³q6Ý®À€®±®÷Jïf˜…»Ðå³Ö¿m-CÇÖ3ÉÄ€¼Ÿaé¯%&F‘¤ŽWA4ó*ŠN¤]?‘vÝÖȼ°ºLN(ÛáƒP…ìïIa<C~jÓ­Ñ5ÇÀpX‚’häPí'µ¶ïÂv^[d5­½¬­½¬_¤¼ Å‚Aë"„)±ìÊï¶#Íž-^€LB\‚nÖ+È“¸PQn¨QØù¤bÔ—åªôV÷ø4ÞIR§À~˜ÀĪºËn¼´®%o{ãû¢#g¶ é¼ª±]…¿©eÕùax-ŒêÇ(¨ç‹ês¡5Ô < &·qK„v÷å7ÜÝ~·ðE777kk넇‡7žS¸xñâæ|qÆ cÇŽGÔ|ûí·S§N-//¿páB[Ž„ð5»ºº;v¬]§°eË–€€€   u&Ã}ûöUVV¶%ªz×®]³gÏ ÷5oÚ´iÒ¤IŸ®PD‰N,ÚÝ}]Ó~âĉ-7HLlžèáᑜœLÄ+l"›ÍÎÎÎn\éää”™©*j¾ŠÍRúÛöö¾¾¾]ÞÍwlllbbbZØ—R\E’Àœ9sD"€7ö0Gl7_¤<ÑÝgñZ~ó'ÔÉÞ¸ON¹²°™4ïg…àâÀå]tÛMÁ^@JóÎjÃ,ÆŒRÞ‰Gjæ§8½qùMúŒ6Ûö›“ÅŬË,_ÔƒwEQ¤®®Ï‚“àøL½ä¯ð”ýI Ýa=sè¡ ›ÐH††D«¦D]sØÌkX¾¤Y”½é«QvGÑFÇn_ÃbRÜ»`ÿWEÈ Ãî› o/•HóâȬE.³ÇÚݾíçíSL P‚Õ XþR1êŠ!­C}jP_òªFÜ„v’ dn€Å8˜oS²% Ú†–ZÒ:T¤ "…Ô83p‚+X#aâ#÷æ£P=–žÏ¿|îl¼àÎÆ;ó'ÎׯO§HÔÝ«t`ý”?º7±+ù×Üò" k£j&ùŒ´WV“4Òq Àí«öY°ZÆÀå(8Y*Rðò,ýû÷¥¾™w¿™î·]†w,q:Eå`ZaЗp^ƒÂ_ 8K:©e xy/oÂxœVÁƒÇ+2ÂDDX8¯±ô°,I+)Ï-Ï‹þÛÉ; »jM‰4˜ ƒù8°FÃÔKyÀ0Ű(ð.êË`äKÿV œmMGñiI'p÷þ-~åóJfÎf„y;Ÿç(‹WÁG8à|×&G°I‚AÖBÖðª¦R1^^ƒD½‹¼ð< σ¦#Œ=À óñ]ðTPè0Ú.Õc2©òH¯6|Mèz0Cw˜zÁÔNÄ;;lé°„ï¤)/–WšQjÁµxÅqøä»o0¬Ñ A zŒ/Rþè.D,ïáÑÔèäÂL‰¬!GXÀ/ÁXÄy—Ó$ÒEÖ€gß“nJóÑ0µ+C×ìäˆ6ÿ@¿ç‹BqKóá*êjÛº¡—7ñô²ë×·‡Ç‘®¤:†°}JãPpe·ÉU¥ãÑ Ð5Ký—û£“4È ßíd¨j¦”¾=X£a1¬Ñ­9,&uAQE?b C¨HAe j`<f¾r&×)™n9ÍüwIK¸}ÕV›ñqUÇù\µþôÆ/lU:ªÒQxL½`æ ³0âP²;Ú ©9êÈ¢9Ú¬JCe„w â7‘e•ŠIÓ#ñDéšÃˆÖ(#ÎÐ…œ´ð w·ßõ?î©Ù[Pø‹bG:†Tð>…^à‹”?º«ð韇¼ÕØÐeV®Çɲ@gн?jéòü©Ø§c·]ï2vü‚Hò#'LË·_y/«A-,m¬­ÓJãþ1Ù¡ëÛãõˆîâãa1Õ™(ü•4*È"Àsâ™{GçHûÝ}Ü tù̘ù’±3ó»¦^ ÷z#ðþ$ù¢Ã‡ŽóÑ¡?AÄGe ˜xu™q€}J®)4å`ùÂ>ÂDï(+0_zBkɈ‹I0¡ðþ«Ö$¢ðWT¥‚Æ€‰'®èÊS Ð+dññG({Eu!«WŒâ8ÛÈ^׈CN"—ŠQ~U©¨|„òDe‰¨ú22*ðôc§…ÏùhÒwX/Ý» IDAT¶z¢KD6iLïÓõú½-€‚fñE ]‚ˆÇìJ:¯TùÆ};Z¸¸²ÜXMºÞa²ì°¤ã‚‹-@ÏÖ³P¼ý›/Nqòv0±|^YÒ|‘­‘Å'ïÖ7!LDúê&d±»¿åF ú—C‰üêòÁX šXUWÕ–ë¿xþ†íØá°˜ÎÆÑ÷ *ŸWòoñ0ôî³Ý;µ-}ûîº/G‘û#‘ä ëÁ.N« cHÆ·Šø¨ÉFÅ}”'*«Ug¢:¼C ëÁÀ f#a1¦^M̽϶ƒB±Vu&НÂík­ÕïW rÉó:­‚ÃT¤ ®úNªßPºÌG+DµêŠQ~U¨HFeZã€=TàèUÀK±“ˆe÷¾Ú>zÑ=ÕÇðôXLêC]…>Ï)½î.Áö»*² O¶# Cm² k“BpÑñƒî:¦ËIùè²;(¿3ŸþzñõÌSÓ>ûÿ6ˆ$uÍê?k]m±üÒW“¸=Cå ôwÊQ¦V•ÃuBåÃ_¤ß_fü>wwònæI%Rl?¶²>€æ@ǃ¾„Ë'dîGã!ÊŸa‚ª ’ ”ßEÙT§7ùÒKÅ$w,ˆ]¦^`‚õeŠ™ÊMD™`â¥Yb m¤kdqà 8­Ð.U0­H©âa¨ÍCy"ª2P™‚šg#>䥨¸÷«ÇÈ…) ¦*—w}*Rú·-€‚fñEJ¯»ó(©-Ï(å)Uºä˜[¿0P¯'u hôI(#õ]i:pÛØ£C§&&F³#ýøLtôŒüaQô.yzhKçSWµoMì"W¾!]s ;Ñ ^B£¡-ðÅaŸ|ðð×K²¯<›´§ïñÅç>' Ž4^„ y­÷¬¦0…LòN8Ëï¢,Ué ¢T,w/4ÕÛ‘5àùQp¾§ºÐ¾©iKÑWN«H²ØÉáŠñ¿Ш+v’ÉÚÿ—0â*½Œ?y¼­&!µ( ø"…®èü¨KÐÝÈìp1ø¿Û›ÇçúÜ#ã@Ÿú É9d xöjf½í¼n·ù \NÎŒ,SŒ†û)†ÛrRC~ÎYv*fþΜe§RC~n,–ßCÚR’,2Láq´[æ´ ë™j'°ZL²õãXf  ‚>fˆIž^xJ”¹ÜþØËêÁ|4œ×À; £áõ \>i6‘Q½š‘®šBŸy +ðp‚,r¾ï²ØL+ºÕ˜_AwϨÃdoCÎnÕ‚ }è3š•E£ÑÒÒÒÔ5àñx‡ËåÊ• ÃÂÂLMM¯\¹¢rF£Ñ˜L&‡Ã¹téÒõë×]\\ˆÊÚ;99)e‹î™ó=w“qlË*³›ŽªMöEÍJGGù[Eù£[ê1¤ ÉE™Ñ9Éä=H¤«TrÑ3^ÿûUžh£F¯÷÷¤œ Ó ®Ÿwû±8Á| 9#ûù1mð\8›Ù8›Ù´©iU:¯ 'r3½•ùÍxœ× g·r½¾=Ü7LëÁþ².fuD¦÷ Hˆ…bfÎf eþ †)ñãІT¤ ,UéÞQ»Ššy«4uÅH]¤ˆ|â|۹ݷ7…vw>‹—bçè¥ê‹ÜPÞ!>>'OžÜ±c‡Ê›7o^¿~½T*ݺukXX€ÜÜÜ’’’ÄÄÄÀÀ@>_µ¿L&“J¥çÎ ¥Óé×®]k9y L&»wïÞÌ™3Õm°ûÎ788X(*•Udw|ÛÒ(7÷þ¸q~cÆŒÌÌL”H ‰EUŒ „û\|ç·Vÿ™;êô¿6Þ9u‹Ÿ¦NöoXªµA­.€—².x›¬­y¦ssý¬‡ä–‘…ÒåOmFu&RC–Å^$‹CÁÝÙD¾Çb<#‰m·YdŠ ì+ÙÄ\À¾‚Î*éô]èÂ|4\?Çë'Z ´¯/CQToçø¦Ðˆ ñwp‘E¼Òî&ÊwO{ªjñj`,k@I4þÆßÁ(¾ª9ƒª‹1Ç/4þ©lqúôi©Tuç½`Á‚ààà«WÉTÝ;vì`2™£FzùòeKˆN_°`AYYƒÁ(//oõ€‹ŠŠ† F”“’’“’’ˆneeuéÒ%u5™™™\.×ÔÔTnø<þ<‡ÃilT:_V__odd¤TÆ+«§±±qFF†¼F^ #Õ´e§­vÛÒÈÉÉ1&æBMMíÎû÷ì98zôˆv:99Rý‰´áʳċYwnæÝW~«Ï`޵÷˜<Ðëm—‘n»úŒÌ&t±7pŠÓ¯(ç+m?‹ñ° è¡s RŒÎè¼ýúu[Qó BI²H×ÃÐÿô2Y$@¤¬ÎD}Œ8¹£ýX{=–žX(.I+)I+±ö²î+W:ãÙÍ ž?X{Ÿ7v rTÓÅTàÉÈý‹a3§+Eû)t!D|¤† 6h:à|ß3ížz&íNª¯ªÏ¹ëø"ËÊÚ­X1!ô‹¯¢ B!EL™eZÁq¬gõºª|Íÿ+Ï\m\cºh¶R››7oz{{s¹Ü#FDGGO›6­ùvAŒ‚&r<¸bÅŠV†¬<Þܹs7oÞr¤A™111ׯ_WçÂ&øŸÍž={8àäätùòå;wÊ…Í!“É._¾¼|9™˜711ÑßßÿÍ7ß¼wO¡g´nݺˆÅbu5ñññ#GŽ8p`VVQóå—_Λ7O"‘tà|oß¾íëëËf³ïÞU‘È~íÚµt:½-;m Ú¡¿XQQùïo9vìÌĉc23»>0"7—WRò$1ñ~`à2>?µñ¢Í›X¿~T*ݺuoXØŽ6ÖtÿX~㧪z2ÛÇ•ìÄÿ<¸tùMÃm9 «K£s’ÿ|þ·:S"ƒ®3܆ó–Ëð)NÞ~ì! z³IŸRšÿÿÜÙ‡jˆÔg솿©+V$Àu^ÓÓ¸r£¬ùaZIØ “EB!Eãá:ÝõáÁ‡R¦ŽX7¢O³ÜÍöc+B¾´4¼†ü0ž'C œà¼¬Ñ(ˆ?œäˆ’ 䇡 6s0p9•rPS†—w®îΖÈö õÌ8› ã|þ¸ËLœLT42‚ÁÛàú9‘(8ºbŠ!ˆ„ ,_8.oŸÖOO¡¢¢âüùógΜ!þêêê–••™›+?ùl6[$I$6›œ½™™¹{÷(ƒÑÿkü×ËËëÆîîîj‡d^^^rÏ2uþñ–ÑÐÐ@Ð89«³··_¶lÙñãÇÛx¾ríÝ»wæÌ™­z–[Øi»MöÅgÏò^}ü¼yKÖ¬ù°ª*ïÊ•3®®]"ºcÇ7L&sÔ¨á/_–*-ŠŽþß‚s‚ƒç^½z£í5íE,ïá¢è]r²H °ºôÍ_ׯ¸¹ÏûärÇC EïjnJt6³Y:ìíó3¿*þèü_ ÷~;:x¬½Gs²(•H/¾sñÖW·ädÿ6ÿÖW·àÙRÞÏÄvÁ½ð^ÊMŒEQ}=˜®ãT m i'èSdÀÀ‰uu”f”–ç–÷‰c~rî QÏ¿ÔjÊè´ ¾qð»Q‰qVÓ¡k§Uð» ·¯s%àŸ@Âhdn@eEØzUé ²¨cˆ¡?õ|>ljŽDˆ›T"½¿÷~KM 1בÿwgQOa"RCp/üägHc±víZÙ+¬\¹òôéÓ͛͘1#22òÌ™3Ó§O'jBCCøá&“Ù®Ýåçç0 …ñññrö6jÔ¨›7o^¿~Ýǧ2&3gÎT Ù¦ÓéþþþçÎkûù6&¬ÞÞÞ„M´¬¬¬c;m#Ú4 çp|<~œIä;뎗ƒO¬X±X©R (Ò××# m¯i/ÖÇS›R&ª¬+®S¹hÐÄçïlü/¾lRþÙ[ן…'ž´]d 'ÈvÔÁL‹¾Ñ(¶ÇäÜÍL¼/ísgQú¿ÒìMÙŒ† ªáG[™R™±&€ž½Þ°“Ãh:4Ph,i)ŽøÝM¦•Ã-O6SˆÁ2JU·§zË¡´ƒº¨ ácÙ‡eÒ{Cݺ¿ü-“4aE–Ó-×:·úZ1Qîˆh[Ú–Eè/e¯óðvšä2_UÕ°¯‡q-%%eÍš5±±±&LPqäOreµ¢Æ5z^­‹°¡-rÈ#Kºp•좿"ñY%€O?ü§MÊÌÌÞ½;¬9YÀfÛˆDb‰DÂfÛ´½F>ªˆ4i’§§§Êç•ÀóÊ’†ûjÉ¢ƒù¥ß?ý‡{Yjîhn ª «“ŠÕ΢}ùÔôííߨiß›ñ…šg4HG9¦÷„ú£¦Xº*‚ÊW>œï9¶s9}ñ<|%ûwì—ˆ$Õ«½œ¼Ìœ5šñß8KNúÎЉÿ˜HQv¼§ø„‰Èß/ר7CÖë´`âǨ”ÁÝŽŠü½4Ë1LÃN¼Þ«ú ç§žW"‹J®–¸y»ý®-ãÞ™h¨Aá/œ%Â_hZÒR,‘ã!pZ‹I(¾‚g;Hc*‹Ipߨ’TÓ¯°Z¶:عçÛöÖÞU´™ ªƒñÅÐÐOÚ­r¶ÁŒoEFFÕ××OŸ>µí5킃‰¥¥YI­êY_“¼ÿí×)³A§3èê„ñÈÔŸn_÷¾X†ãxòDÀñ­˜P/kÀ£PÅ<°îWMëÆ÷YŸá8Ñ1':@nt®ç‡žš|´¹Ñ¹äC7çj?ˆ $UéÈ?€—7H®Ê4<^ }{8,ÍœpÕ6”ÝÁãr²Øëʬ9Ñ9ê$în»ëó/"ùS+Ð1„}ìCP‡‚“(»M>QUéx´:Fh¨nÒ¾43åú¯(¾Ø£ˆ½=x°ß«I1ÍŠ(lØðñرÓÄÅ‘óÛRÓ^ üã=Õ³ÞíÍNž¥¹»ùËtÕ¡ì×^`ÀÕ‚= ëYä)©üp8¯éço€TŒÔ…8™ûƾK ž?˜à‹ç24™/ʃrtu›$O§Ð.ÁПP›ÞÏxq‰$1">²6!oì‚à°D™5Š ¡cHé8vôÁCúj2(Ddüü?òÕvo)ÿßmv{‚É,ÆÃb<ª3Qø+ N‘¬Q‰,ññôx¢ Š/ö4j(Gff¶ƒ©hÍfÛdg'7!Xm¨i/¾ûþ-~Zr¡r‚“¥ÃÞ~—3®ó'¨£§Ú‘­kPïœ N”FÜš.'MŒü°[¨bö}ŸFeJc âC߬1ÈÛ£ ‹ÎkÀ^Ð×ÏÏ}¶ûÍå7%" ÿ¿òy¥‰ƒ‰fgæ¯ä‹fçg§ÕJ:]'p¾‡óðOBIŠïÔ—!ož…}lçB×¹?âÅER…Þx\>×L ÍÅË›Hÿ˜$åz¶ð8£ÞŸ·"Š:¼T-Œ8ô%.‡ ¼Ch¨UÞcP_Fé:i 4wfô¢E«nÜøµGêº1ów.ö¶>ƒ)¯Ù:nñ©«;¿ñ{?Þ{‘òB%Y øúÖØ%ôÊYÏ‚4Ô€²_=ï϶#e.òö¡( yûð0P>ý N«0pE?8E=–ž\\ãÙÍUâ$’iNHuÄ]¦\>ÁÈÿÁi•b˜×Pƒü0$ûãîDðOd@U:RCPxžºlmEI´‚,êÛãõSš@X{¶”ÌÉÒòã›&ôwL½ZjC¥Õhî°þöíÿöüNu ¿õñž|˜V’Ë éxX:˹cgÀ¿ÅÿóÓ?‰²ë¸J}ƒÂ +ºŽ”ýÚ ß>d ¶×,³–’‰Ñþ½~bbÌÙçGU/² ‚Óª~óVsçs uI×–ÔæÇ’N4yZ ]Ô©›Âi?@áyðÃIñ©XuÊà§_ÃÄSCxF£( ™H笾=^йn³ÝâÖÇÕWÕ« ’^Ö]TǬ•çŵƺ~ì.SF¨.¬þoð‰H{Ï’™__$£[äik<‹Qp¶?p)ÏÕ'VêûnèÆp p¥¯¢K%RA‚@,“ „4 ¼Xñyc¹±4<ˆ»¯‚ld/@ñðŽ ú‰êf²ý¦EJƒ Y›4“,0q0™¸sâåʉ*ôXzÓNM£3:íE4…’hÕ‹tÍ©Á†u*Ô%ènD/Š&çõJ¾º¦LTg¡ðÍ:hÂÄH  ¢?ä«Þ!»{•¨HîOœ‰ƒ‰ýX{‘äé…§švxµ%µÙWIáz÷ÙîTѽ/²õ,¸×":Ì (‰Ö´Ä3¸9¤ ‹†®ðŒÔ(²HÀóCπȀÆC/¶{~ÌüN9£å°™£6zàòÞÉ.Aâ‹ý ›ˆ`U3¿‹7±ªVÝ®äšÆºÕtÒÑP_†‚ˆ¾}ª3Qr½¥u%ýìÁs~Ë™(Èîi2Í<é}òûÀ£ˆ‚×Rèæn¾Esƒ…çñx5îøàþ,dnPÄÄPàŸ@ÎnYô8ª±ò1Ü@eKŸ.3?”ºð¯…]à‰–??Gšä$àÚc©k³²²h4ZZšÚì—<Ãáp¹\LEkÕƒ)F£1™L‡séÒ¥ëׯ»¸¸´ÐÀÑ£G ¤Ô¦ù± X,‘©…Ö}÷m üÑÝ9.å%|Ÿ@”G|<ÔeøÏêM.yšø±yû@pKúžpE Jc!¼ƒŠ”VZô· n 7~}<ñjˆK:q["qHqïÇ{Îo9SñÑÝ #¦­{ d ¨JGU:cê3_˜€G+4öd (8…—@ôú°˜ˆòö’K‡`Ø Íf¹±Xn¬ny„|®B á]HÊ`èë™­ÄÁt)ÂÃÃ}||Nž<¹cÇ• 6oÞ¼~ýz©TºuëÖ°°0ò–¶–P&“I¥ÒsçÎ…††Òéôk×®yx¨UG:xð`dddBB‚••U«Ç&“Ébbbƒƒƒåù÷Ú’–â‹ÚˆêÂêKs/ID¶ÃmÇm$=ÕSÎ (±üpH* .DáyØõK_‡ÒXR4§-Ð1«¿©Š˜9›Yp-J3J —´GH/KÄñby·¿º­nLÕ¶: bzɳíªzK¸®Ge*„w”]+RP‘Þ!’.XL‚Ù°|[7E¡øjŸA׬Ñpü Ï†K*¶T1°ñÊ Ì|04LÛUch:° êò¯@ÌÇ1¹MF2³~›Õ¼YDDÄï¿ÿ>yòämÛ¶Ñé*ü¢ÑÑÑ{÷î¥Óé›6mjŸa„N_°`Á¢E‹lllÊËË[hvôèQ%²ØÂ±M˜0¡å ö9Pþèîé|D’+ ®Ô–Ô0°4˜õÛ,ºžqK£1Íä+ SØ¿ÿêÃþ³Z²« h¨!¥ÑþòEÚRD4!‹:†°›Ùª×u^Óß4&ÜùdÜqîµÜ^?˜Ô£©ê’¥Q»ˆB—Áa‰Š .]s¼ö3¬g`З𹂑1ð8‚+`æ£<)­:¼CH[Š;Ãq/Y›P×Ä`)ãÑ <ù¥1¨ÍCE òÃp–&zNT"ãSµ^¼vˆ’ì&ÔUÔ=½ð´ñ¯y››7oz{{s¹Ü#FDG«Ž¼úúúL&S È+õõõgΜÉç·b8àñxsç΋‹ $<ȪŸ‘Œ Ÿ¶Ûþýûß|óÍþt³(ûb·àöW· A:ƒ>íÔ4R3ÙyRæÍ,ÒNpü@CϤ±‰Q û ëlŠQ~E¿A˜¨‚ÎêšÃ|†zvzíæTTœ?þÌ™3ä_W·¬¬ÌÜ\ÙÜËf³E"‘D"a³ÙН«±ñwß}·}ûö8eã¿^^^7nÜpww¯¨P1Ù—Ëå&%%ùúú¶åØd2ÙÚµk“’’ÚÈnû(t£<·üÆò„Ím¶Ûˆu¯†)uÅÈ?ðêÑžöØ»^¿ÉT4öï“ÃkÅW»w_ 5Èý÷? cñ)ÄìRÂDäíÃýYHšŠ¬M(¿×„,šx(ÜjN«`ê¥Zè®–/læ´2«_@γ.fõòC¤>šåÆ2°4 º þJèÁ|4œ×À; £áõ \>iÇëSñPÓO°å™6š<G ±víZÙ+¬\¹òôéÓ͛͘1#22òÌ™3Ó§7ñ…‡‡s¹í*ççç0@å¢?üpÍš5½Û-Û¦M›¾þúë—/_ö›{A ë»´Û‘HåÓÍœÍ&ÐJÍý‘”73·oû’fUccÞ>Xúw×Á×—!ežbÂS]1^\Di .‡ˆáÔ4ËnGÓÁ€©0¬ÑZÂÙN¸ÍrKÜ– pIÿdxÚ‰4•)(¨`—>õÅ0…©L½àІT¤ ,ÂT=ji¨±5 ø ÿ¯¥6ÆC¨ÛÞ}Ð3ÓsŸÓ’kxxxã9…‹/ Y¹r¥R³ 6Œ;@\\ùq Ñtuu½½½Ïž=Û–#!”n\]];¦²ÁŠ+Œ?þÙ³gd2YËÇfllüí·ß®^½Z%Á¥ø¢¶#æãA‚JÓT¦¡(êÕ7|cß8µ‹ü0ÈPó /oÀÒ¿[ö’µIÅìxI…ЏN¦,&‚5æã©yè-€íÇ–»¤y±<ÅÔˆ‡™³w>7õhªR½ß¿ý¨|€}:†0 óѨÍCÒTµÍJ¢Á´‚ÝBÍÑIÅ(<‚£ÐÆ0p‚™/u«»˜ØrƒÄÄ&<<<’““õõõWŠD"6›Ýd,ÐÔ×Ü|¥­¶'(#Á[8¶Æ› P¹}Š/j52Îf<Øÿ€(OØ9¡‰îÙ÷¤çÔbROjVuÝÐÖ³HÊËû¹[øbõ“ÖÝN0‹q0óí3:½ gç‡xrîI/òÅêÂêŒsDÙÔÉ”®K·ö²ö õtšâDÝ£>'˜FÙÕKjÀ;„çG0`*ì‚ÕÛôKRà‰°y IDAT~8gQW¬¨¤é‚Fƒ´®éçÑÜ=TW£ Ø[·®Ò]ô{P|±kP’V"Oßé6ÛÍ{¥w“áuù= éôá<­—ãÅEÈP™abtúuŨJGu:ª³P“©6¿-ã¡pß êIk/¸ó¹_|záé”SzË%}ë«[„3ÚÚË:()¨ rÚRÐ(p¶áï`eÿ¦%9YÖ€’h”Dƒå v Lé…ÙÃuÅàŸ„ ²‰]ö!`@ö÷(‹‡T ºX£1èKMŸ\NÅûê«êÿü_±P ÀÒÃòíão+>‡R±Â:p…Š”J}È„ 71>YÃA`˜Ã|4læ´É½.CÄGu:ª2P•ŠÊ´öå¤6ñ¤ÈbÇ`?ÖÞÄÁ¤òy¥X($':öü1&ÊN=0•"‹ýz¶ðúÙ[PIh:0õ ¯a<ÅWQAŽ™2¤šiÇe°žÕCóIjóÀûÅW›L¦Ô5‡]Ø ùÕ× £®LË~ GÅ;ݱÜ~PyúŠ(å ¡£ï3Ô|íû ÇV¦ÝÜX~ãEÊ }†ÿqÿ&¹×ø'Háh=[8,éÛ—FnbA\ÅWQx^µ˜-1¾&U¨NGͳV uLÐP©v©©'õdv tÝiŠSÚ‰4ç2z…/Æ|C( ÄöcS7¥B×Ü5 ® S…×j:¬¦£*üp²PWŒì-ÈÙ ›9°¿ÒÕ™ÈÛÒ˜&ý¾=–ÀfŽ _3]úTNs (¾Ø„{#J·‘IH•–ºôgU¿ýaóó·†oªÍ¿’z$õqÄc¢»òLºOÚÃæ½Ì_3ù·øs°su;ú9h:ªãZŒ‡`ð6¸~A$ N“s¥b"!ˆËŽËaÞ¥i®„‰x~e·•U·?€Å$Ê|HÅ;ŽªË±/7Rª”V×}ð­CÌ1]‡æ«”¤•ü±ê¢ìâñZÈkMË5tŒ8š®XÛ*$ îÛ¼_¾ý:¤õ­lAßFC`<&ž0â¨ø¨¸}ª4å)PÔ”óNÃq¢£KO,W>¯äßâ÷¤‰Q"’üùéŸDÙoƒŸׂºZ ]s \‡%(‰FþEl2á¤6âÀö]ØÎëìû^ƒüÊùýL½à°¦ö=y (¾¨i(Ûy\e½´ºVøÓi«=Ê¡*õUõ—æ^’ˆ$,¸MÔÑHC‡¦Ó'5t”Pq¯%‡²J²hâ£!0ñ€!Fî­çÔÒ5ÇÁû/o¢&º`†Ë'”°bg_r}†ûl÷^qIßûñ^yn9…v=-]Ö³`= ÂDðÃÉÕ™ÈÞÞaXÏ„]P»ýÂR1J¢‘·_yÌi1 ‹a6œbŠ(P|± ÐPZ^ÿ4OÝRѽÇÍ+¯-»VšQ @×Xwöo³uu›,ÎÙNúA¬gÁ̧Ï_ VÃSÿ²Ñ˜¼Fú—;Ð;ëÂy œ×Pd×Âù-g‚/æFçöØN« «¾O Êc¾£ü‚P ÀòËuÅàFQÙÉÔãùQðOÀb?h"@&k@U:j³Á0‡©—bJˆ)ò~n’Ц›9`/ Bå(P øb×ò¡ù´Åæ‰ê”j·%fœ%õäfžŸ©ìh+S @â‹]k †•¤ XåR=·Æ ‚¿6þE”G¬¡,ƒ,©@Î.²ì°¤Ÿ¸S80‚ªtU×ζs©GH£ßs}†ãDÇœèY³z€/Ê5tè :¥¡C¡ ]°!ìC`‚Ò8œTÄ©T¥ãÑ 0XV7™÷ÒPƒ§ß {s“J†)ì‚à°¸õÙ/(Ph'¨N\Ó÷gµe‘X(ŽšEL[´n;në8åÖyûQ_Fv^‹ûϼSµXšÛ×”E¸{ó¹]¼[ñç§:Cƒ†6ÉuDB˰#xã"ìCsZ$BÕ“¤å•z¶ô%FþÎk(²HÅ»¬ÕA*usÌ×¾o0a8Ù;I¤¿/ú½¶¤€¥Á¬ßf)Njž¡àUòA_ö«žËˆ¯_`æ£èÄõíáq6s¨‡Góá>ÛHîB¸¤»u_©GRy±< }ƘïÆPŸBGz›A_Âïœ×€Ñ¢¦7Ó ƒ·ad ìC(¦HB÷òG+@cèØ†o)û!¼òô¹cÚìÃyë—ÊÛ$lNȺE”§˜jâ`¢¼•g¯Â\L<ú¼†Ns8Á3uŨ͇®9 œ¨Ã¾=–ÛMиœèœîsI‹…â¸õqDyøºá*Þ ÚBG'ê3©š¥†¬(ô(û¢2e´øl±ÓÃ(‹5ï5²*Eþ¨ÂäBy¼§ï¾œw9Êë—Æ¡4†,;¯ë·\Ši3ºRd±o;ŸK2Îu£KúÎÆ;„^¥7âJC‡Bç;›—ZSWˆŠ/öLͦ1tT_¿#ר.¬¾øÎEbJ–Ó§QߌR^GÖ€œdÙbRç* @¡Óp p%¦O”f”–¤•tÇ.J3Jì@”'í™Ô$7& ƒ©WK Þ¬QÔ¢@⋽†“ë  áE©(ù‘T"½²àJåóJ–ÓNM#¦‚5 Õ™À+¡ 4mä`"=é&£<ÌÅv¸-¥¡C¡kÐBj5™S  u|ñ¯¿’&Mš­rf%ÿ5<ŸÃñårGñx|u5„Ád_¢Pýû­Û_Ý&&~ð?îodk¤ÜZR¼}dÙa ]©g‹‚Âù-g¢ðìʳ.ßxNtNö•l¢lÑÑÿÛ»w NÛ´i—ºšNB×Åáh[“WzŸï*•JصùÅHMkè8¯iiª …ÿßÞ½Ç5UÿÿŒmÀdÜ#”‹ ¨($(^ÃKy©ÌÔ¼¤ýì›å%SSÓ4/å7ýª™¥iš÷æ ÅDÅ E:ǽ¡¶q¶ýþ8´p D·)ƒ×óÁãl¼9|öáœ÷Îçóyx©lÛÛ Ât=ìÙ¡Ÿ‡+rÆôœHKžeäêH45Ÿµ'†n^³0ârÝbcÇÔÖ“HЏ\›Í–HŠÚb„_~éÑkr5‡±ã蟶HêÔÐiÛ• ™óZ{³¢ÜãF’VH—–\¢wÿ¬»îí1ÀÌ™GýE¦D&«\¹rݨQ¤¤œhú2 í㌌Œ¦žü •Ù• &ãÑì¿);B“¡öZîuC|ƒˆu_lO2_eÔÖй^1ðQòEô*hÎôƒ‚‹gŸµ´·4<æƒÿ= kèXÚ[*ÂIIIhgx¦3/ _4ÏféÒy+WÖ®)œårEQsC[!†’˜˜Ø§OŸÀÀÀÈȧ “=Î|jÂ)ñYݬ°³õ_ÑCƱÜëÝ Z£"é«I%!„§¡A~Ð¥ ùË_œ_~»œÂ/à 20Zùíò´#iô㨕Q¯x- uÏÂÐ˜ÓÆíÛ÷øùÕ¥½ñFÿÝ»ýöÛÁÁƒû5´åYU—Vïí³·~²ÈµPxZÝ{´[ßu͇¿ÖÖÐa0IûOПÀ,·p·¶†Ž Là?ÞÍ Ðò4£ë‹ôbÃQ»Zû˜Áp´´´ zuÏž-ôSóçÏìÕk0!$9ùXC[žã´'½+­¿]®æˆå6—nè>¡ª"yµûC„“×­94£\®L8w5#ãgèƒ^ºùâ?zº¡ä²¤º´ÚÊÁê¹CÕ­¡µ6 5t/š–NÅœ;wDB¡«Þ§!³Ht­ñ-ÏDM©sŽä4ôìC… CÊ¥š±¥O*!÷ÿK”%„Âu#¯Lkm˜œ”>aü’‚übí–·ß°é‡y\.}´ìýìíýìËo—«)õÝ#w_ôêsÿ×hkètÛÙt÷¤€—«ù^ ˜0aÆ™3^د«,¬TH >«æBª’êä£Õb"Ù]ûØk~s¨¡“–v+vÈ̺É"!d÷®SïŒù‚¢TèëP—vHúÎÁ;Ïäúÿ®Ó5t,XáKÃѪÈ_´””~~/n,•kÇÕ_+‡B›QM‘IøwÓýÿµ‚BÚû>͡ŦO]!—+ëo?q<%î(Ö«Â: è@?ÈKÌ«‘Õç1C÷.U/ƒX,ÉÈhp<}Ý÷{OOÉÎëM(¡„ è ’SÚ ˆÏäâ‹•…•„Ûö¶aóÃФ- M Õki¯½}öÒ+=ë²r°êÒƒK]!„ªs©mFÆñk tÛG4“‹‹ ç®6òìå?nŽ6‹~ììÂ÷òº¸ð=<ž^nögg¾ï©¿…¢Tß,ßvøÐùìl1ßÁ.*ºû²eÓÜ„Nè<æÈoŒ_ê7©„;ïøñ{¦Ÿ•Þ•füP[V­ÏÚ>–åÅï^VVîžßNÿöÛ)uÐ|»è¾ÝNT(t×. ¾ïÀJ«v’¥H”/¾/‰òsEb±Dt7¯´¬¢¨°¬¡5Ô2YuVVnVVƒ÷‹%‡%¼7n0:Ùi? ==¬|çà¦ç‹^¤§mtÐÁkˆšù"ü“G†ÉSoBd¸6¡ Òþ“YC§¨°ìĉ”Ÿ~<¢sýÅbÆô9²ïð7£¸\vCõµÉ"!ÄËKèå%ŒŠî^7E©D¢|ÑÝ|±X’+Ê‹%¢»ùtÙ”Ý[üåæüüâAƒ{¡<¸yñíGç‹¢ßE”œj¤D€VÆ !,.+z}4Úù"ü«Í˜ÒïwhTšêL¶¦M(Ãiè ø¥¥:q<åÀþ³qG“tÆýý=ÇOŒ1¢OÝå&‘ÁY·ö?Çý]X,¦¯¯‡¯¯îðº\®¤óÈ£Gwí<ÙД,Yôã’E?ö ˆŒ 8¨gpH' oþÜz¹µ¶yœÿX!UˆÏŠŸz±’Sôa!Ýfu³ó¶C _„Y:>¶t£”˜ªÇU÷†Ø™¶†NFFÎÎÇ:_ÜyĈ>“¦ o(ärÙƒ‡lœâÉ\.ÛßßÓßß3°«O#ù¢Ö•ÔÌ+©™«Wíàñ¬""ƒ ˆ ®Ÿ†B3aÁ²ðèë‘ùK&!$÷xîSóÅË__¦kè´¶ Š@¾O}e¤P>°&„T]¸o3â9Ã$'¥oÛv,ýÚ-‹Ù#4àó/Æ{xü[÷±¬TúÛo§÷ï;«]†¬ÍÛ""ƒ'MÝý¥¬,ñðŒÝoßÞ3õŸruu>"êâ…ô¬¬\í$H™¬úÄñ”ÇS蟊îÞ/&4¦ÿkXÓÜøŽö¥óÅ»GîF¯ndñJÅýŠkkjoq¾45t/Â“Š’Š4^8KzÔšRrCC©¬g¾Ä¸zÕŽ%‹~Ô&UYY¹û÷Ù±siLÿ°„sWwþzBï¸ó˜wú7ØÙ…ÿrÛ`ÝÿæÜ¿/ÑIdíìx{ö-§ëé–ÅÇ_NNºžpµîeQ±X²mkܶ­q,38¤SLLhTt÷¡,=ë¥sÝcÇQH•…•y‰y}¼œ²0…®¡ãþº{ç±ÑtÈ¡ŠˆÿGáxQ,%©®¹—/O½iôLaLX8“ÎF™¬z̨ÏÛÙÛê¬,qváÇÆFŒŸøF``Çf’WÙÙñøzéÏqG“ôÖëvvá¿7n0½PZ$Ê?}ù|ÂÕä¤t©TF¿€¢Tô€õ²¥?Ó,{GEDkg:ÊdÕß®þµ¡ø`’C—å3ÌG;$ÝP¾X|£øöžÛôãÆ/CòÅV)o3©BÇÅ:&úÑöß !U篵þEÇÕ«v¬^µƒËe÷ ìÚ³g— ï•››O¿õÀ_˜ºCÒ‘«#õæ‚çfœ£kèxóvp@£ _„:¨G$kícϹ¼á®t¾(;t–¿`jcH¥²‹Éé·ë»®‹wž81–ïТ֜r¹ìQ£ûÝ4pÑQ.W&œ»ÚÐý QüpÝÅeQrªâ~Eif©SWÝ ºíü‹®¡cÁ²ˆX@¾„RTXÆb1ùväÞ·„zD!m»‡ܶ* [žºBFåÖäˆ-}ô Þ䧥݉òrEYY¹ÙÙâFîªB Ónìjñ­ª½èHQªô´[ñ§/'$\»’šÙP©pšX,Ùúó‘ÿó6º¥©Ž\–÷0oz¸ùÖ®[:ù¢šRkkè„|bïg@¾ØªQ”jõª?m9BœèípxqNíÝÿ<¿ &ƒÃ´Øûñž“„LJÏYL%K²oßÿóæ]±X’qãŽX,iÊ útôõo]ÝŽÅìÐ#4`Á—“苎;wOK»ÝÐëçÌZ·|ÙÖàNþþžÁÁ~ý<šÏ´Î–Á{hm¾xçÀÈÕ‘uŸºòÍé])!¤°MÏE=›ù"KR/gBBÃêV0–ä¤ôÔÔLBHhh@Ïð@ãvÂÆ‹' _l.É⨷æÒ%`hÇæ2ˆšBœG¶] ò‹E¢ü¥º+!„KßýúÖü-M‰ÌãYu ìXYYqãŽÞLš<¬Õ6;}ёϷ7öËF^&•Êê[ÛÙñ:ú¶÷÷÷ ñó÷÷ììïegÇ{êï’ɪ—,Úw4Y,–xx _´djS~°åç‹Ã¼µCÒå·ËµRÅÕokÛþ¿UuK>x3jãóŒõþfeåN›º¢n}€N¿íýÚX)]CÅŒUK•R_—|3#‡Ç³ê;S ùâs¯éd‘g¥éÜ^Õ'˜Š ®!„”U0†Ïʹy+’¾pÈa?Ú²8 ÒIE¹Y0 Ô8Î.|ºÆµ§—~@OI¬ŸÒæ}1Açî|­PhXc+Z,-Y55”Nr@/µÞ¶5ŽÞâá!éÖ)(Ø70°£¿¿gýUÕùÅ1}?‰j×ӈŒMÄÅ%ÇŸÝàå%lí‚:CÒ'¾KÐô²êìïØ1y^²Bª „ÂßêhàoIK»µrÅ/ÉIé2Yu``ÇIS†M˜k¬{±Cfê{:t0!ûöý¤‹?>ùU&«Ž2S§x~ZÚ­¨×?¼ru»ásŽ*ž0nìÂÔk;ŒÒ?÷í=3ýÃ2Y5ýíúu{#"ƒwïùº…M˜ä‹&÷Ó–#<+Íêé•o÷UrÙÿf[]¹þPû­BC®Rš^– BH+ÖU¡«—·Ðßß«£ï+];úúz4´®™Åbî;°ò›åÛ¶m;FŸx¼¼„‹–L¡×‚´rÔ÷ð¤ÝØEßÒúzúí¬,QƱX¢ó2±X"KL ¿µ³ã‡t éÔ¹s‡àn¼¼„ïýR›,ÖM"ǽûeÒÅ-Ýnß¿=/þùÓŸßo‹'„Dt|µ¶/ýlÔÚ(kè¬ýn×Âù›´×ÏÒÒn¥M½u,.ù·=Ë /ðÍòm:É"-++wåŠ_–~=ÍÀøKmÖIµýgÙÒŸ×~ÿ™ñ*ž “U¯Yõë¦Íó ŒúòÄñKt& ''¥6;!ñt~x*Ƥçmù~yËþ#ûô铘˜ÙÐkŠ Ëü;>ý]EHGݵ»âÙ¬lCá;ص÷t ô髬îúûyB·gW·£ëŸc—þ]Oÿ(+•Fôš¬“ÒÙÙñôÖÓ)*,ËÊÊÍÊʽ™‘s3ãNv¶¸ñi£<ž•öÊŠž³éÙ ‘Á­¼ýçþßÛmP²ˆ!d ó¤”Q5AÕÛKãD 0`ÛC‚§¥ÝŠì5Yï¦9Ÿû`Ò0¹\©­*EQª¢Â2JUûb©TV!}L?®¬”—þ³zL¡Pþó#i×þª¬”·È÷…mÉêàé¦-×Ïb1]ø,fm†':1™µy¼ ÏÊáŸC ‡Ãv©SáÂûK ŠõÆß´yžQ®òR”ê›åÛ:â©ð¬ç_hÎRsBfø®/íQxÉòúÉ"!äÝeê]ëEÿ;¨MïÔ²ûgR4 ¥âÊŸÔÖ«ã³þº—~³–fˆï`—zmGëu;»ð]øÚq|¹\)K.¥dü••›••{%5S';l$Y$„¤¦f¶ò|19)}ÃÏF2ºùk„„ êÞ夒N,Êóc¿ìl±!ù\ömqC«àW}³cÕ7;Ðÿ¢¬¡²³ÅÙÙbÅ_¶ôçK)7]\øŽ%qòùv<ž•³ ŸËe;;ó›rõW*•Õ€â©-0MBh“•wc¼@59–Ô½haËãvó¯N¹®¡TÕÉ×ÚŒˆ4 Ϫ‰õÀup¹l___ßË–edäddÜùë¯{W.gÞ»W ®7ÓTëLü娡‘u¼µÙ³;žWÃ’Ú1| Oj—‰\TßYÚÅŒZ¬‚üâ_wêá‘gS›Aº XL¦ƒƒ ·v‹›ÓšÕ¿ÖŸ€â©È["E¡ ÕГÚ릒¼aQÕ)× !²Ãç/6CÎ.ü~Lÿ0úÛÇSF ›ÕЋ““®ŒñòÆô{#6""2¸ÅÏ誛Oÿ•)ʼ)š®Ž¶Õè9¯+H©wF(t²±±jhÈÕÎŽgk[›¼64äºfÕ¯ññ—õûÝÛ~YdàÎþì¿ë×íÕûÔ´éo>qÅòmKý¨÷©mÛ‡ø5tq7?¿XõÏ…Û†.îÖ(k._þS£yþÝ++•–•JëO~*±XòÙÌo‡ëãå-ôð8Q•¢TwîÜóìz„ ²òÅ—iML¢Ñ?dÆâêÖ(¶Ž®MDªS®kJ‡&lÎ ïx)%£‘׈Dù›6Ø´ñ€›Ð)&&,""hàà^ÍêœDQªm[ãÎ'\+-•úû{¾ýNÿ&öÑãõ7îüyónZÚ­ô´[ÚûëÐz¨=5mõþìëj?±û#z€Òùœ‡‡ ûî![Æ××#8hlýÂøvv¼e˦Þò‹–L=tè|ý%/nB§ ?0<þì9ã®^ÉÒ[<áíwúÓ !ñcú~”œ”®÷©YsÞóõõ(,,SÈ•ee2YuQQ=T.W7^Nÿ©¶ÿr|û/ǵŸâ¼¼„..|§—›‡‡À£½Àٙߔÿ²K)“?X¦ßÌãY­X9cò”á8¸ _|Á-Ñ–´y•<º¡ÿYÛPÝ—»»p»ù˯eiÊÊxãфÍܯ;¿ª[OG{¾ÿbÁÄéÙÉIéÚ)bùÅÛ¶ÆmÛÇãY Ü«_LhTT÷—>s_,–Œ:+++—þ69)}ÓÆ‹–L™÷Å„ú/–ɪ¯¤f6}=PG¦ ]i´>k¹xp³ ÄÅ·µk“œœ®w>ùôÃÇÙ…vÈ¡³ê^óðüºë+£¼q<žUÜïk'¾¿8##G»1$¤ÓÖ틌²jÍÔÅ6mžÑkrý|zÂÄØe_Oê–ÉÿdùÅ”JEç—EEår¹2=í–¶[>5ŽöBi]ôRB/o!Ÿoëé%ôðxy ½¼„Úë‘—R2b‡Ì¬; Y&«žñѪÒR©ÞþF‡õÑuHSÉŸãõ\b´lGB~'lÝEÎ IDAT-å«¶þ½z!¤Í˜Në¿@gjþê×ë^°ðíù>9)=9)ýX\rÝœ@+"2øØˆ¨èîþþž/~Ï)JÚmœÞ³2½¾5;[œ}[|3ãÎÍ›9zë é°³ãu ìйs‡Ž~¢¹>8÷ ¡>?Úýuwÿ„Ý»NMž´LçbÕÛïØòÓcþËdÕ‡%\IÍ"„ôõ>"Êè3çLzmReŠâ YY¹uó]‹9{θù ?0üO‹%¾Þ#z¶G¨¿ŠRßKžz[T½i:}%òBò é?kªtòìÔk;^Ê¿$ùü Í•v}4òÅ'%wµâß-lGâ¿™´Ñ3êW“#~Ðs,!Ä–×>ë(†¤[ ú…û÷Õ{ok__1ïôéVÿž„2Yõ¿Û•p­ ¿ØË[8|Dc—mùñðŒVé}ŠeÉb1-žzJA`WŸ.]|z„Ô¯gž4;éêš« ýìG%Y9!ñJK»µdÑôêuº^÷{ã£øß‹”••{óÆžuxx#¦¤ãÆ~ÙHñTmÖ.å‹ïKD¢ü\QX,ÝÍ+-«(*,3dÈ{þÂ~9 ï,òEhEùâ\ý⋯ϟ?Rÿ©¼¼‚èègÎpwwkâ–çì¯ÕbRt˜È2 a’¶Dð6±l×Ðkô[“#&„ö®±Ž EÇjaŠ Ëâã/ÿºãÄ•ÔÌú ßÁnĈ>#GõíÀå²uîC‹é¶ïÀÊç˜æOQ*‘(¿¨°¬°°¬¨¨ü矎ܾuÿ™"„„têèÓÄû%ß(ÞÙ}§šÒ3&í5Äkø1̃ÆèÔÓ¡5Tý ðMê…yt6Ú¶·saLaôxjÚ÷õÒŸ›R<µ‰är%Gž=“úãæ¦®ˆòòúúyôŽ hâmåù"˜Y¾Ha0õæ‹AÙÙ—-,>>¡bñõ&nyýU~-«`à‡„–«ã+iûYkNO9ùÄñ”¦—™=ç=ŠR—–J ŠÅ÷%EEe×V×Ò~ èâmxœ¿vþu~æùêÒÚ}óâÕwS_$‹ðÒ?­µwüÿ2\.»K`GÏ¡þ=ý¼„OýEkb•r@¾ØªòEóX-‘q¹úAÓ·¼Ünþ,w*¯zX"O½i„¾Õâ >hpøÚï?»’šyòÄ¥sç®ê½sq]«Wýú¬¿…Åbº¹9y´¸¸ðù|ÛJµõ§£jµZïþ%Y$„tÛ¹óØÎ¥™¥Õ¥ÕF™³` ºtŽÞù»£F÷›;o|zÚ­ô´Û 箊ŒºóFärå•ÔÌ+©™Û¶ÆBøvþþž}¢ºùû{EEw×Y %KfößøÓ—år%—ËŽŠî¾öûÏ<<h€Ú³šÀ@ÖÑa~9B©:ùb«Ò#4 GhÀ¢%S²²rÿoÚÊ?þ¸ùLé ³ ßÍÍÉÁÁ–Ï· œœíù|[¾³ _oE:—…ó7ÕÛ(Xÿ¿9Æý»ðæB³2yÊp¹\9oîúº+cFî·ñ‡y<ž•¿¿ç{ãÓ â¥”Œ´´[×Ó³ëO)+•Ò5è@AÏðÀ¡þÁ!~\.'¦ïGÚ×ËåÊÇS.¥d?µ.$¤ÚÀlòEÀY.WP%87} !„Á`hgdd˜bß8øt¡Òß~Ïìí‡.Õ:…õôi$_Œî$twtt´m×®³K»víÚðx\½¯ÔÇ…… ïëKO=æ~>zÓ¦ßUTÒ[BÃü>þÏð»¢[wE·ð@ËÖ%Ðå‡-Ÿ¤^¾•÷ ÄÖÖ&(Ø;(Ø;-íŠÎ˘,Ò#Ô£G¨ÇÔi1—?ÎÈÈÍI23ïçÜÉW*ÿ½ƒWí"Q>}/D¦……ªÞÅ{©T6rÄì›ÿceecÓ*•:áÜõôô»¥%®®üÞ¯vëÞ±9옉μ€|Q¿7Þè¿{÷¡šššÁƒû5} !D£ÑæOšbþ„&ìµûßíUWÈX%Òž®í-}<ЫZ¡ÿÀßv%ê]Ñ|ôØ:£T‰ŒŒ\²ô“¬¬Ü²R©¿¿§ÑKô4scÇ>Ûë‡ý³²_&«‰ò““Òofä\IÍÔç¯M¶Ôú«Õ?|X¦VYGF†7óf)È/Ž2S[ŸõfFî©“W'LŒ]¿aÎK¯W¥1äN”€|Q/Ñ<¹äEûxþü™½z &„$'£ŸjÊ–´Û¶ÍÀÞ÷œ$„<>|Î~ÎDôªVˆï`÷ëίb‡ÌÔ)»ã&tÚòóã²QàYñxV>>ô·E…eYY¹’¯§¦f^¾ügU¥¼¡ܾýXTt÷f¾üeò¤eõ‹ùoÛçâÂ_´d Þ}0 ‹æ³+M ýE{çŽH(t¥ Î"Ñ5‘èš›› é[^måÅêóWÐ¥Z­ˆÈऋ?EDÓ§ÏjÔè~ɶ`Ê<@sãìŠî¾hÉ”§Ö-ZÜXFuôp’‹c¿wÆÌ?t0Á¸e Œ%þôå„sú‹í¯^µã9n« Wóž0aÆ™3Ì¢mõfpØ…R~-‹Ê+d¹» cµN>ñg7ÈdÕeeR”ä0 ½zwmür¹òÐÁ„C¸\vìÐÈ·FöéÖ|þ»Ï'\kè)ŠR¥¤ÜŒw gÑl÷,%償ŸY4"ƒÃ¶Ô›~,;t½ª•£oz‹dÀ,„„t4Xÿ E¿N탃ý´óIärå¾½gF½5W(0aü’øÓ— ¹“¡è›Ì›û¿û;éä=à-£@=ã°Ž •>G©:Åî?cÑ æbë/‹ëßÏ0$¤SÜïßñìŠ Ëvì8~äPbZÚ-m®¶{שݻN¹ bbÂÞˆˆéöV–H¥²;Ù÷“’ÒÏħê½Ii}sf¯KJJŸ4yxTtwÜ«/¾|6ÿ’N½I=,a¹:¢MÌ‚/!ñ‡õëöœrTß¡:‰ã¯;Ž'$\+È/öòÑ'¦XCñ¥RYrRú…äô¬¬ÜK)z¯#r¹ì¡ôíjîß8gÖ÷:/°¶ætñ¹rù‰‹¦,sÄ›Q“&‹ˆ nIç_03» Yà ‹¢óEÙásÈZ*º4Ï¢%S.¥d‹K>tè|A~1ý”X,Ù´ñÀ¦œ]øãÆ 8¨gÏð@©T6bجK)µ•«““Ò·mÓ©(K²o‹ÿ¸t3))ýJj¦Þëˆ\.ÛËKÜ/&¬gx`Ý»@¹¸ðÎߤ½©}Ѐõæúdg‹ÙzlˇèÅÝ¥Ú·÷̾½güý='Mþö;êßJ @/\_4*¯P<’Âà°;ˆN28XîÐ*œ8žr>áê¶­qõkîøúzTW+<(¬ÿSŸÍz/¼Wàù„« ç®Ö/ ¨åïïÓÿµ>QÝ´åº"åÓ×/Ý„Nu·ËdÕ‡%üoÝ^íH:í\nÄõEs§½¾ˆ|ј ~(¿–Eqþq1ox4ú@ëAQª„sWwþz"îhRS£4"$¤STt÷W»x‡‡ê$†ÈÈÈùéÇÃû÷‘Je:)é‡Óß9ªŸÑ/7"_l1ù"Æ£Éf@/:_¬ë7ÌY±rÆîßNýºã„vIxVVîŒV-œ¿ñ½qƒÇOŒÅM¤ > 4ñFô¥T%¤jJ4@+Äå²c‡FìØùU¾äTx¯ÀF^éäÔnÂÄØßö|/9•zmǦÍóÞ~w€©o ÏãYMž2<ùâ–ø³Þ7X;‡R*•­_·7¤ë»áa·m«‰T*•‰Å’—Xu/¶”—î.–>„u…Œ^û­–ï­‘}yÁá¸o7mž7âͨ—²î$"2xËÏ Äy¿¯þö//¡v{ZÚ­iSW´w<û³ÿÒkÀ““Ò#zM øz ÌüÏ·Íó|Ñlð†EÑm?ŠÖhåbc#x<+½Oúv|é{Èw°›ññè¬Ûû5ºŸÎåF¿‘!ïì?C»j[*•mÚx úõ©¸95òEx~ÖQ¡ôƒªs’híÜ„N˜W¿ˆ·oëöÅÍêž+=Ãwìü*;çЂ…xx´Û³þÊU©Ô:/ÎÈÈ™U¯è# _„¦âvóg¹»B4 %†¤`Ôè~‡Ž¬©›õ 8}vcó\Vâ&tZðå¤ì»‡öX;4¢‘Wîß«»Î/Â3°Ž®­Ú_yò"Zbú‡eß=”u{üÙ ¢{G“/n ôiæû;4bß•”f¤(Õ_Y"¼¹Èá9i§0Vŧh°Ž !„Ðwg1b=Å ñ…8.îL|ž7´ ËÕ‘B=,QÞÎEƒ€™z­g—†žâñ¬üý½ÐDÈá91XL«ˆnôcÙ3h0S“§Œhè‚èÜy㹸¾ˆ| ¡½¹‹ìðY I€¹žÎxV‡Ž¬qváëlŸ01væ§ï¢}ZÜÐ$¬Âƒ¶F¡¤–(nÜævóG›€9 ôI¿¾sÍêÉI饥Rÿϱï ñfZù"ŠÁaÛ ê-;|ŽRuæä‹`¾øv+VþÚ¡5Ãx´©ü[¸;þZ/‚.›½6!D‘™C=,AƒòEx²emyVáAôãÊÉh@¾º´«¤íˆCkòEÐeÑÁbB”·rkîå£Aù"<åêÈ ­­Œ_—ˆ䋠˺OúAÕ…4´ _]¼}éò”ëªò 4 _4 ÃQûEoÉË+èØ1ÔÏïµ¼¼‚†¶4,wKBˆ†RUKE‡䋦¢Ñ”Ð_ô·Ë–}7oÞ'³gÿߊß7´¥™à «½iRÕîä‹/Ê©S o¿=â½÷F?~¦¡-Í„öF/•ÇUÅåès€|Ñ$¸\·ØØ±ú[‰¤ˆËå°Ùl‰¤¨¡-ÍeÏ»ù³Ü]=$t }/ŸFSRZz'0ÐÔ¨̱•µ«^ªN^@Ÿ0Uqyùª­’ѳ$£g•¯Újôûp*nÜ.ž±üAϱzŽ-ž±\‘™cÜø÷Ç ù(W}¯}Ì÷fʯe™¢•¨‡%ê z <–Ù¤\<›¥Kç­\¹žþV p–ËE Î m!„0 í㌌Œ—µó{½Nçñ™KÙgÏi,YèyÐ:1¥2ö<†\YÓÞ¥ÆÍ‘0ö‘•{Sd¿v¯ÅãªÚÏf ©åëw•Ï]âk”ømâ.ÚîŠ'*5ýmMŽøñþÓOZb”øv?Æñâ¯Ô~BVê¤kIפSbe1=ŒŸ!W¶Ý}Ö&ùÝD5íãÈ»x¡O‚I½Ä3/´Ò|‘²}û??oúñoôß½ûPMMÍàÁýÚBÑh4„ÄÄÄ>}úFFF¾”=ׄ÷z°9ŽzXÂ+ƒÞðHôqz®¬.ž±œiokø[ðxÏId‘F=,)ùt•ÊO4r¥­@©¨âr¢Rý“%Ò(”¦;åÐ)ieü%*¯åîbÓ“ÓÕ-O'%:É¢Vñ¬5nG׊2$ŸSÜ5˜ÏN©<‚·àe©ÉͯÉÍoü5µ¤3ŸÁa³\ “ÉäÛ1¬¹tNÉ8–ÌùVïý«J?_kdø¬†ÊЧ,Ö¹Ä+ý~§¦²ÚaÅ'ÆJý|°òäÅšËWÖý^³: É(òÅÁaÛ ê-;|ŽR}! ùb}%3VÔM~Ê!„”-ÞX±yŸö¬ó÷êm¶SGñO7£³BMޏ*險¼‚ÝÉÓ:¢›…-Ï s¤BY“›_s¯àÑÏzJRò ÇôÏÖLU^AÊ+¨¼ÂgýAueu^ÔD¦£=K;å€Åd9ÙfíËÕI»æ‰¾º©=`jg)hj¨’OWéPñÓÁ6£þ©O]!“Œ™¥]NåV§\—Iì]ô·5V3Ry…UIר‡Å–„Ö‘Ý Ÿ†€|±ejóV /VžHæ/O®uɯf6TD]Y-yg§«ŸCfeË6K7ìÖ=ßlÞÇà²ù ¦6ÿ&Ò(”¥Ÿ¯}¼ç¤öÄÉt²wÞ¸Ð*²[S®P÷òkîÔ<ÔÜHåITe5÷ò›CyƒX¸9[XqJ),lÛX´µi<¥¨<–Xñó!½ñù‹§Û}ô¶;ùx|ñô¥zŸ2Ê’‘G¿)™ý­žÆa1ÝÎl1p½‹†RÝ÷ÒP ÞÐ(ë¾aª¢2µB©þû‘ZV¥*.×(”Tq¹F®PIJš¸ÙÔTLúX-}\“#6Qÿ)š¾”âoàÁ¡húÒúÕ‹7nO[ê²k¥QŽÕeË6WlØ­mL +‡Õ³ÚŒŒÁÁ/‚.«ÈnL{[Uyõ°Dy;×ð5æ}Å¢¸\‘™£ü3G™}Oyëžâ/Q#/VÞ¾§¼}¯ñ€™1X¬Šÿý¦÷¥ßïl;z€±æÎ«+«ײ(I‰e7NW?#NT-ž¶Tv,Q§ %ïÎu=¸¶îú\*¯°&7¿æ^~Íý‡ÔIͽU¹TU\nÈYŸéêdaceH>×È$UV§\¯NN£[vp³ØÛ(ËÞþ=\OúxÞ–ï—·ì?’®¿˜˜˜ø²ê/þ›—|ñý£-tÄ‚]+ÍeÕEÅæ}eK7×=1ð†G;®kac¥{ ©¬V\ËRÞÎUdÞUfÞUæˆ:ÔjÛÚ¨W‘*uÙMÃîìiº!3½—d˜Nö,W' {[¦½-ËÕ‰éØŽÉ·k$¡¬Ø¼¯tÁúúqÖ6%elüNÕù+ª¢2Cþ"¦½-ëe7&ßβ½+Ë]`ÙÁÍÒS¨=W•.X_ÿ¬faËs;¶Á('êaIá»sëžø™ö¶Në¿0îúwB©ø3‡ÂyÕÇDUè<Æ'ŸUž¸ ;¯È¼kacÅ ²›>Æ(Å/ !·½|ÅOõ·[… ¬50¥Ö(”âà‘ Í°Ÿ?…åâð"ÆeóÆëœo?¬ª+dESW%¤Ö=òØ>Éî?cqþ¥æ>&„Ìþð\_|qªS®?Þv¸þ¹G2z–û…Íÿôóè—#õó!zF¦ó‹krÄÊœŠÌeÖ]ÅŸ9Oý(oaËãøpºù³};°}^aøH×ílè”cÿå‡O=å4žo)þ¼£Ì=Ã)ŠRQK¹¡œ…-ioÇrud:Ù3ùvD£~´ý˜Þ8ESóO'*uC§4õ#™¯¶2ì-;YNö¬W–í]Y¯˜ö¶–„O= 9,›Á´oûwBƒœ§ Œu•‚åêèvfKå±DyÚ_šÊ*¶¿7/¶Ñ»=ƒÃævó7é?‚ù.S°ÔÛD+íÚ}ú¾ªü‘Îç n7ç­K ¿þÊà°WÏ*ú`aýÌÏvÒ›í>yÏÀcÊ¿DŠ›w^Z,±òÉ¡ƒçø°Z2{MÝd‘>ò”-ÛlaËk;~N¾`œc8šà…)_¶Yï']UyÅßëv9,›aŠKí>g”õ}êÊj½óŸè”±ò÷$M õ”®æîÂyÕ‡íïÍíæÏöó¬aÃîã±ÊÌ»:£®M?åT\®*.{Ö|ˆ_føp}éñåçËó¬"»5q Ísœo?/-™¹R{V`ÚÛ:¬™¥w}"ƒÃf¹»4RôQU^¡.“jóiÙ±¤†ê]B¸Ý,½Ü*ùÁ°±jÊ5`å­ÜúK^¶ãêÏðÿ­…-ÏD«‰Ù<…g*]°®ê\*}ÿ-«ÈnËfXvœÓÕÏvê¨úż!ŽëçÕÿ‹Œûaµ9ÔÌä‹ð, íêHÓiâëŸuH‚aÛ¦bãÅS—°ý½UeRJRB=(T—=õ#ì3±û¿·ù‹¦7ÿwÁfPoëèPùµ,úþ.ÜnþÏ=zË´·eÚÛj¯:°|ûXÿ;ec%ؽÚð!!§M -lyvþþï>8Ù;o\h¬%´­úíîâ²}9«5±jcÓñO',fýú‹Fù°Z©:9­¡[vpÛ ÈÍ odÿ†ª*ðÞêÇrv0Ñ!¤*ñjUâÕgÚ[‹É8Z¾"Ðæ£·˜Nû IDATU•þ­÷•mF 0—wÁa›bÈÌ*<ˆ7ƈ÷w€ú¹š)"óLµ}¨Qîï¢óaÕ:*4¯ÏD½(Xî.¸å) _4?öó&ÉSoÖŸÅØvìǵsu6šzþÜsŒwÛôé.=«~"Ûnöú"„8m\HþY0®mäv³'w}¢¥‡­‘¦mÀ =ݺ»~+ ½Ç„vŸŽ«_\‚Áb:­ÿÂDU¥ù"˜…•ë‘ue Ö=ÞO´°±j7sœ­¾›•=ëUT.ݸ›¨Ôz_Ì ôµÔ›åêÄt²·twy¾õ4ÜÐ.‚½kЦ-Õ®õ³°±â/žŽz Ú£³ó‹Û¾?%sàEj÷éû &óïµ;Lq³ä‹/'et\;—¿ìcå­\‹Éîäi¬ùs„Ua }ó½Ÿ2’¸pC»¼re23G™ó€É·å†øc_:,›á°lõ°ÄÂÆ ƒÅ€|x_ëÝmàù`</òE@¾Èù" _ä‹€|/´ô|1/¯ cÇP?¿×òò ð¾K˹ô²eßÍ›÷‰Z­^±âûWá­@¾ø„S§¾ÿ~¹…㫯Öà}@¾¨K")âr9ô¼¯ÈŸL&#„ܸqC£Ñà-x1nܸF@¾Ø¼Îr¹‚¢(ÀY»‘Á`hòÉ'x¿Zo¾øÆýwï>TSS3xp?íFú‚b^^Þáǽ½½mllšíõ×_OLL4ÝÞ">â#¾™ÆGã >â7ýõ•••„®]»"ß2wŒIÏÛòýòð—H$E½z &„$'ssÚ. †I¯ñßLã£qñ‘<µ©¹ !³?|§EG‹D×ðÖî©??!>â#¾™ÆGã >âòEä‹€|ñù(•ÊØØ±öö>,– ‹åboï3bÄxµZmñÍzçñÄoñÁâãà€ø­3>˜ÅõÅ–S¯ŒH[¯ãÑÐä‹Oˆ‹;emíÎåºM˜0C»‘År1Vüóç/2ŽŒ"„xyuc0}ïÞ½gŠ¿Åˆ»­P­V»»2ŽÎÎ$’"cÅ7÷%x-©ó ÿ´°þƒÎƒÎcFýš)Ì_ÔYvåJºJ¥Ú°áç×_Jod2ßÕ5 ?ÿabbJ¯^ƒûí F£Ù·ï¨ƒCG£'Ä&Ó™þ¢[Z ŒµóÚv Œ\»öF³gÏa¡°‹Y/Á3â›kÖý§e÷ttžæÜÀ,æ/"_|‡ãªR©èÇÉÉøú†—ñ¿Ž¥R©êÆ4Vük×n´kçýÑGs~°Ð hi)P(Fÿ-mÚ´?zôdee•‰ÙíÛiÏgu¿ÐyÐZ|ÿAçAçiÎýÌ"_Äxô–/_°pá úqïÞaüq²G~Fk%:”……Eêl4\HH`yyŽŸŸ7›ízäÈ  3Ñcl6Û¸;O‘JE¿ü²ÇÕ5€Íve³]…Â.;wî—JEÆŠŸ˜xÔÓÓƒ¢ ë~qÿͺó ÿ´ìþƒÎƒÎÓœû˜¬nÔjõ{ïMß¿?N©|ˆÖô@ç€çƒõÑ-™……Å®]?àx è?€ÎÆùïFÔÇf»6òm3oÖ;øˆø88 ~ëŒÍÆ£@ŒG@“ _„æÂÔ%g¿eÇ7uIa³ŽÆy&F¯7ŽøÐ þ⋬ªúâã›ÑΛºä,â·ìø¦.)lÖñÑ83u½qćPùâ ­ªjÒøf½ó/ ä,â·ìø¦.)lÖñÑ83u½qć/b<ú ¦®ªjÒøf½óÄô%g¿eÇ7uIa³ŽÆiœ©ë#>´X @ˆéë#>˜íúhä‹ÐX¾ˆñè'(•ÊØØ±öö>ô½Jíí}FŒ¯V«Í"¾Yï<â#>âãà€ø­3>˜¬wÑYÂyüø™êj9ýmeeÕÑ£'mm=Í"¾Yï<â#>âãà€ø­3>`½‹ù±°° (Êt›L߬wññqp@üÖp}Ñü¨TªáÃß·µõ´´XZ Úµó9r¢¹Ä7ëG|ÄG|¿uƳ¸¾ˆõ. Ö»@“ _ÔƒÍvmäÛf߬wññqp@üÖš9ŒG€€&A¾ø„¸¸SÖÖî\®Û„ 3´Y,³ˆoÖ;øˆø88 ~ëŒÈÍÏ;ïLMJŠ«ªÊëÞ=¨OŸaæ߬wññqp@üÖÌê/ÖÅḪT*úqrò¾¾aÅÅ¥L¦³YÄ7ëG|ÄG|¿uƳ¨¿ˆ|ñ ß~»ñ‹/–i¿-/ÿ»}û KKYÄ7ëG|ÄG|¿uƳȱ>ôÀúhhä‹OÀHÄG|ÄÇÁñÿEÆ䋿K ñÄGüÌÖ»` $â#>âãà€øˆÿ²âƒY¬wA¾ˆ%ˆøˆƒâ#þK‹f‘/b}4èõÑÐ$Èù" _S`…öІ€º þVBâ?øÿ3t³×†ú¾?IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/distribution_graph.png0000644000175000017500000000645712032647206024771 0ustar ebourgebourg‰PNG  IHDR3rº œ öIDATxÚíÝKrÛ6€á ÃEnäîxVÃ]}ƒq† ƒâSÒ÷MšaÊRéEþ! *\.—œ@õõßívs"Žu½^«8r:ŽÒ4Í×ßÿ8'¡Ì”Ê @™}BØá9ü‚e€2Pf(3e€2Pf(3e€2x;ÕY^Hü$¥¶5g¾¾L¿ûÀóÞ}F€7*³4âxz²,ϲ»/`/V3”Ùrë®c(³¼–¦u+˜Ù²ãÝG<ƒsì3ëz+Lœ–\SÚÌtÁ 8™Ó\3ûê¤Ó*^lsÉ Pfß"éìÚÎÅ3àN¶š™vÒàd,¹UÙíÍVïUfc%4–Géü„Ê.Ȁ㸟€2@™(3”€2@™(3”€2Ûѧ”Ê @™ Ì”Êl3më (3”€2@™¼ˆj«œ~’ÒG›O~´ù‘é1í¢gìÿðlà½Ê¬CirÅ`Š“Ý`I–õÛnpଶYÍÜ?ƒTðü¶_ÍœßL.kÊl3—»Ìtm;{ å Ì²¬ôàÁ-bïá4wÍX%Åô Ì éIÛà8›­fößO†¨J·=Ђٓ¾ €÷*³±Ë£tþ±„šó“Îͧ3(3”€2àmË,¿`@™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2@™(3”€2@™(3”€2@™(3”€2@™(3”€2@™(3”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™9'QÝ="„~Ù¶m>›L¿Œc––YšVc•–uX7eE V3ÓÒR]««f×O±xýl0ѤÀVeÖ׿~Ö­`¦ƒlÛë—ÙXle›ÒÒmgÎ5À´YûÌJÓJŠlUfƒíåܬëñÕ̱w n;s¢Ö)³Á´š³ÕlºÉš¦)z­õϲ‡ÔåO°©º®—–Ù!¯lÀgñCŠŸà8>7@™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3”€2@™(3”€2@™(3”€2@™(3”€2@™(3”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2@™(3”€2@™(3”€2@™(3”€2` ÕœƒBqܶm6gâdzLú]––Y–_YrÅq6eEî¯f ,€}”­fÎO4=°I™ÍÜ7Ö­`¦ƒlۋʬ¨«²wdûϘ°É]3¤À&e–Þ2€íÌZÍì¿`p2–\7“n;s¢V(³±´ë­t~ºÉš¦)z­õϲ‡ÔåO°©º®—–Ù!¯lÀgñCŠŸà8>7@™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3”€2@™(3”€2@™(3”€2@™(3”€2@™(3”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e€2Pf(3e€2Pf(3e€2Pf» Á/ Pf(3e€2Pf(3”€2›‚[—Ê e€2Pf(3e€2Pf(3e€2xÕœƒÂßO²lÛ¶?™Îw“é—éCXTfi]e¥•UWün7eEî¯fÖ•êX]õð#—8¥Àe6¶”ç»Ìtm;`2KÅVötÛ™s 0mî]3ŠêJŠlUfýÒJo™À*fÝ5ãGo¿ÜIöcüÞé¶3'`…2›³¥ll~ºÉš¦š®G¾U?dX]x<ÀÖêº^Tf‡¼²±oMÿÏ,?à@>7@™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ Ì”Ê @™ ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(3”€2@™(3”€2@™(3^¦ÌBøý@™ ÌPfÊ e ÌPfÊ €÷,3w©”Ê @™ Ì”Ê @™ Ì”™S ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPfÊ e ÌPf(3e€2Pf(3e€2Pf(3e€2Pf(3e€2Pf(³õ„à— (3”€2@™(3”€2@™(3”€2@™ Ì”ï^f!üþ ÌPfÊ e ÌPfÊ eðneþêO¦_îö¢Ý-xIÕœ,kÛ6gƒôc5à…Êì5.˜Y!žµÌºÌl¡3H€ª‡™^'ëï?[EWzó^éñ§²t5ó)–2KW*Óã÷\å´¢ ÊŒ³WÔZÏ¥üàäî¯fv[Êâøû¿ô.˜Åcžë­k­–¦óKÆ[?×?X3N.—Ëív»^¯»WQzõ¦û?LÛÿBø·äøÿ¯Í:ÞxöxÐØe¬¦iêº>¬ÌÈÊÌ>3€³PfÊ e ÌPfÏàÏf›¦q.Ž/3738ƒ_®äþe<|IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/summary_report.png0000644000175000017500000001474212032647206024155 0ustar ebourgebourg‰PNG  IHDR^R·V©IDATxÚíÝ]š¢8Û`«.w¤kª>î•ô±.§ŽuMýYÃ;| „~ á¾fl 1OÈC@üx<'ú}ª €„ @ a0H˜$L&$L& €„ @°3çÄõ®×kóŸÇ£°ŠhøöH_å)¯’`§’f˜ºÉD_zQž·Dzœê€]žaªïz£ZRäH+¢‚#–L˜º™Äëus ¤zÝ\¡¹¤~ÝJ¼úò°”5Oý—»éKƒRr Övú2ÈHáƒo|ïØr«J½éûúæx?j o%XÝ|kÔšƒ——º¤ÿ Q,¡Ëp­á¦æÌGdú$e;Ý-³„Ä5[³J‘¿6¯©Å§m7Ùr·´õ_ƒ±ô½÷dn v—0S–±·õôeÓÖŒ§J ¦ÁíD¦‚êõƒ×òÿ äfÄs˜ÿÌ6кZ—˜í ÎÜd#‰ÔoÉEnú~K¶ÔM†–UǹpĈ›¾ƒ¯ãk®jlâ2¶`ƒ÷9ug¹"·¥þÈÖˆ›¾ãûÞ> HÿÄø·ýS>¨zW·*Ÿ¬ÃÁ’¸õ2‘4ÃÔ³[Wèâ+/.òÅ´•>(˜!Í©–x-I’ +›×ž­1;¡†€™>ªé`ši@ܧ*0H˜$L&€| <‡éûû[eûýû÷óùœž0U›P@©þüù3¸NÒ“¾ã9תî÷»†Vòõõ•²Ú~åv»iN`qÏçór¹¤Ü€ä¦oà Ò/dI˜$L&€U%Ýô}½^_ÿ}<Ánæãã£~ý÷ïß<+´YÈõŠúú”lkš0ÕyÒöIR_ŠsÆÐ*˜äönî%¹kCsIóEëuü]©îëêÅÇ?ê%Ý5#+ÔKâï:…¦”â¥MÙfÊš£>˜cÜs˜Z“LÍVOóŸ¯×uT¿®^œþ½¢×zWºÁ9›z^§J,ê×õã+׬_OKVâÛLÿô“Y+È6aªsæ’Ó¿·4uW¾Žl|0CuSs…àÊñú¶_-¯ Sÿ·›ÊíÒSIäž0UZéQsiÎvƦ L±L¾æœš¹M`7 S+1šóu¹±ïÚø"TëBØäÌ©UlSD°Go~SðñÉ)ÎJ™Sb24y³¦ s£/É5'™š·uÝBs#)ï껇©^>ù^ìøÇÍÜl3¯jnª5íÔ¼ñ<²f+å2_Ûøˆç+ßßß¿ÿ~>Ÿï*ßý~¿Ýn™ÖÝ)‹¼Þåׯ_¯4ãÏŸ?ƒÙŽŸF‘è$L-•-ɺ çü‹ø|>ï÷»¦$La___—Ë%ÛÛ˜ SÞxË9ÀÉ=L& €„ à½Î‰ór¹hl ëûû{p3L& ÀªFÜÃt½^ë×Ç#“^¥Ê§0@‘Rg˜ªléñVòôÞlIkKšaª³¥êŸÍî´S½ró]Á×}+$n¶^§ždмKK“-pSpÚ©™ÄšÈ ‘٬暭.Ï90 ³žÃIJš“:Á žÁ7ÛW¤:g:™[–ï·äª™§ôõ›—óL/ Ê÷Iß&‡Z×õL/‹HšajÝ´åNúgÕk¶îI7Ûl‘05s¦fR\8_úfƒ_ÁóÍ8`YñÄâûûû÷ïßÏçsïqúñ] èÏŸ?ƒÙŽŸF a0ü-¹?þç÷÷·ÆVI˜~ÿþ­Ž SL·{Ìä& €„ @ a0H˜$LGužðžëõúúïãñhþ³»¤þgwáëu믘V€Qk6ÿùzW°R>¨µ©ô¤´W_«-[Ï“ë I˜¦‰doÉœÖXsÙœ Yc˦˜ëe0r#$Lÿ™3¨†ðnJQ™Í?u׬3€Öj}ùJdå¾Õº¯›+`òšñ`>1m+R‘Ü%XÚx%·Ú4X±‹Ôäi™{˜ºmóOÍq±~ÝtS¶\9e Ái›Á´Ö &²f0‰L,äàüM«ÿêVKäê^0®H˜ÍÄ1žD®]ã Së'x/—KnaÔIÃzoß~tOœŒ‰'ÁœiZ˜ÁÄw~ã€7JIlÎ nk‘Ì`ìÊuB0íî™™o_/ÌH&”x4[ÝBf˜‚p‰'íoú®ocªÇõî’±™Áä•»×§&ç%«~}oÚ–›wŒ·³»û¬ÝºÀîdô¦:ßµrR­çóé. <‰IŽŸF0H˜$L& €„  XçÆ|¿ß5?îDv¢”­oto]kxË{m,[¤T‘’GBë»yhÂAoG¼VmÏh㨛7ØCÒûùf ·Çg~t¼2ÓS…7î)Ÿ]=µ˜¡"øÔ2x»_¿~½zæ¨Wù°Ï,ž~ó0½Ô±xÚvÖ &lóUŸ___ñŸÉ¿¿•E&ûȲrñÝm©JHLrü4 pPÁ'¾l?Š,þé“·ùÊ3^ÃÆÞÏ'ˈÂî–! pèƒø{7¸Æ°1g›eÌ»ø¸ƒìnûÔ„& ÀšzÓóùŒ‡tfÀ!‚Ú+ðRX8vtÓ™W­18‡ˆÁ…Ç 8¢3ËpÀ€Ô&)* aŠq82—ä$L& €„ @°____j Ï+YúyÓív+>Ô_¿~½¢=Â¥D*R‘ŠT¤"ì‚‘Þï÷W°ÿ{påqä-R‘ŠT¤"©H;–{˜$Lù$L×ëõk.BðC¯ ë}ôÛeRŒ<«¢^RR-EÂÜQÝ}³o/NÙHþ5píX|ãô‡kÈ=pæöW-^ßþiî]ì°‹2±Ï¯W!çiíôx<úþYX˜¥F7³Ý›;aaõÓæÑöÍ}íã+¯|ƒ£A³×9æ vïýŽA ö¥÷VÂç6•̃™ò[Nïº'7£æÀ‚'dÍ…ƒ+¤ÔØö•<ËŒÄ;Xøî6wq6©™Á¦,àxÝêÉ»8¯ öɱÇåH_Ͷº±ô=7Ͼ—~œ‰¼FšrXî+À6•–’´ÎvŽ÷²"#Ë„º·õ²ƒéyË&¾î¾Ø>s{F¨Tkû}áÇkì•3­5ûšxpS¹Ä7{EßUž¾¦Ü‹¾0»mÔZ3Ûy—f ƒÝo‘nŸÿœÄà$N‡š™ÇþÖOß~ßÎ’C¶4­Ý3xáÜ:f÷êÏ®oÕŸ“‡5ÏMMºì¨¡gNŸ¿¥Ã§\ŸJÏEÞò‘±#Ë´"¥ìŒ‹ ¦çU{j}µòº„ܺòµÍU§E:n·Ìc‡nøÁÏÊ­r‹¬øÂ“©¦¼³¨Óog™|ú»ñ¾yúïê­5GÝ#’ÒW·¯¾{˜¦í¹}áDŽT™4züh<ꕺߚܦBZ·0Gš;}àȰMçï¤Á¼ø`úñõõu»ÝŠÿ9˜ûý^ýR`‘®º³e骱géqÚT¤"ÝE¤k%ð8mºj°Ób½QµŠôõßW¦äÁ•lz*l2 pðaÁfÚlÂïg†©ÊžŠo’W˜U¶(R‘ŠT¤"©H›i5Ãô¿KrGhÝjbM¤"©HE*R‘ 6=ÒçóùÊ”>Oô¨RC @¯êÊcà¦ï¿ÿÎÿ€¥¶sL¯Ú«^4ë0}áÞ#ôŸÂúÕ¡Ú´¯ù²mÓ:`õ•yGm/ÕØ£P½dãPá}o9ȘµT»­rÎÛh˜œkÖ¯Óî=ÒHÿ)¬_ªMûš/ç6í+|¤Ì;jÓx©&…ªÛgKc+|ï»X&í~ÀÊù|s%rÈh­cniÙÃt|a‘‘¼ÿì=ö"Ûn怑tK8XæL‚Zª­&n jñ…Ƭƒ8ÏUEûÍ9ºãMþmÚ:úv|k]M›ù–Îv&O­ÙÇ0Ï9Z“®zÉ–GêbIEgçZ3‡±½ÃÚôû]䔸Ôs£Os¨W«^lé´OÌÔ7h”0%õ§“Û•QMÕiZ‡àýFr ®M3i¦ôv<%Ü0ð–y—QŸi£ÖÂÁ;ð8bÂ4x8‹Ü„;¸ ¦Gž^jÞ6WL%çÜ4Ø|ù·i‘w,­ZW»âm¼Å4Ÿ‰»A+ûäjS¶´Þ€ô÷_%¹v÷­±ÉA›O›î.2ʼZš~æßw±•â›iP+ŽÏ[¦¯Ã´ý¹Õ"Á…}³Ç»Žô8âûÝN+dï埙÷ï¨Mƒ¥šH𖦬v¢xh6¸q¤y¶ûößÿ_ÍoɉT¤"©HE*RÁöEê·ä’H˜ü\’»\.* «º$÷sÓ·«Ë"©HE*R‘ŠT°ÁH«.É 0 ü4Ê"OG<ì“u–6ÿà½GìŠEFZd›Æ›ïÔÿŸl›¬UìxeÛ¦ÝzN)UJ;¶G´qƒN«ð`mdÀÚi~{åœ×Þ-ýŒóR˜¾pï‘Ǫ"#-²MƒÍ—rtÎP°CÆ(Û6|¼uzëô…ÜúiöÜö¬½ôº7uË>(ͯœÏÁ7Wº¬¹°¹ŽY¥eÓe×êqºJz¤e?H·€ò'þ Y‘õŸa;N(OÊo§¶µøBcÖAœ'§Zeœ÷“óøäHTRóõÍóçßÐÙ¦•?½÷UWñN˜ 6öI˜zd§9éšÞóXêH]^­¦üS1?f”Ø|{üªÄQª˜¤5)UÌ- ‘_«_lß{WúÄÄ æ$Lÿ9™˜¹ nâ§kG›ËÜï™k°ÌûX¼Nöuz;žB³†Gºà'öe·F:Ή3}}%²Žé¥5X©Õà ¶ÅÏI°ùòoè”»Jmè±­SÌ•ô`vk8ãsÔnsj\•‹¬#[’-="·ŽV•ÂR£.Æíz°é6_a }„l)½3<†ÌiÐÁ ¿ohÌ:‚s3 jåÑÝ+ÓÁª»Nó2¶Ä|ò! UÁ…{¿7"½ü{4½ùJºß¥˜æKÙ=w·ŸKÏö"oizWB›°Á#ݦÝsPŠ÷Þ`¤??¾{»ÝŽ…ø=#‘ŠT¤"©H;6ÒêÇwý4 À À€ŸKr—ËEEtU—ä~núvuY¤"©HE*R‘ 6iõÂ%9€&€ÿÿ¤ïîߺò| ]ý×à“ò+åñ•{Ÿ* {˜$L& À;Up@ž¥²½¯¯/•€„ `gn·›JØÌóù¼\.¾”„ `—£¸JØÆý~—¡²kîa0H˜$Lïä¦oJòq_i@ÂÄÑÅ¿€ã+ÍH˜àYQߟº_i¾^¯¯ÿ>ôí§¿eÂÆ‹‘{|µiU]½®¬TùÍXöSZ[[9£ª=½ü¯õÙ¡Ë=LÀ’ÿxc¢ÖMžÖøˆÅ?¥Yok×abùרCØ/3L]= ¶ÎÑ#ÓÝYîëà¨Ó»ŸÞ]¿oIëu_ cà ®9¡râåI¬¢ôÏÝ>Kk~b«`Áb7±¦TNb—k•³žC †pjL2m093ÃQaÂtEpPŒo'ø–àCzI‚Ã[$̾ù’æšs*'^žô2¤îÚ×C« I ¡o‚*½S%VΜO ~Psº+=F0Ã…‹ŸˆÝÔØá$ò– ›Jÿkdðk¥kkTì¨2¤g3ëeK­y—úƒúfhª$#’'ÖÞR•3íƒW€â™a‚Õuç$²*ÛäÔd© F•ὕٚù æOË–ZM¨¥Ä+§.ÆqXf˜`‹Q¶°liÁ Æ–aÔÚª :![:­öÅÌ™õ [‚Af˜`úÉzß}B‹l'}œ[dS‹WÎR¹Ô¨Ï]»<é|`‘r&Þ¯C9H˜`™)„à Ò½1vpaúvRJycÊ·Òú6¾Hå̬êH,Ë~îÌ¢F ¶`½¥WΨOéþ5øAÁ¯dº‰ÃúpzAî÷û××WüRn·[nOúnf<ó“cûL†]B…C¶ÜÃD ^ÙÒår‰ÿ:J†¦=˜ L´Ó3ד$ùÀzÜà a0¬Ê=LÀA=ŸÏø7+j+ÔårQ Û'©*2ü¸‡ @ a0¼Óÿþ;qÛÆ;íIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/class_diagram.gif0000644000175000017500000263117512032647206023646 0ustar ebourgebourgGIF87a°Ñ w,°Ñ ‡€€€€€€€€€ÀÀÀÀÜÀ¦Êð333333""")))UUUMMMBBB999ÿ|€ÿPPÖ“ÌìÿïÖÆççÖ­©3ÿf™Ì333f3™3Ì3ÿ3f3fff™fÌfÿf™3™f™™™Ì™ÿ™Ì3ÌfÌ™ÌÌÌÿÌfÿ™ÿÌÿÿ33ÿf3™3Ì3ÿ33ÿ333f33™33Ì33ÿ33f33f3ff3™f3Ìf3ÿf3™33™3f™3™™3Ì™3ÿ™3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿ3f3fff™fÌfÿf3f33ff3f™3fÌ3fÿ3fff3fffff™ffÌff™f3™ff™f™™fÌ™fÿ™fÌf3Ìf™ÌfÌÌfÿÌfÿf3ÿf™ÿfÌÿfÿÌÌÿ™™™3™™™Ì™™33™f™Ì3™ÿ™f™3f™f3™™f™Ìf™ÿ3™3™™f™™™™™Ì™™ÿ™™Ì™3Ì™fÌf™Ì™ÌÌ™ÿÌ™ÿ™3ÿ™fÌ™™ÿ™Ìÿ™ÿÿ™Ì3™fÌ™ÌÌÌ3™33Ìf3Ì™3ÌÌ3Ìÿ3ÌfÌ3fÌff™™fÌÌfÌÿf™™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÌÿÌ3ÿÌfÿ™™ÿÌÌÿÌÿÿÌ3Ìfÿ™ÿ3Ì33ÿf3ÿ™3ÿÌ3ÿÿ3ÿfÿ3fÿffÌ™fÿÌfÿÿfÌ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿ™ÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÌÿ3ÿÿfÿÌ™ÿÿÌÿÿÿfffÿfÿÿfffÿÿfÿfÿÿ¥!___www†††–––ËË˲²²×××ÝÝÝãããêêêñññøøøÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ eÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСC²:tèСC‡:tèСC‡:tèСC‡:tèСC‡ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:tèСC‡ÿ:tèСC‡:tèСC‡2d7tèСC‡:tèСC 5ÔPC 5ÔPC 5ÔPC 5ÔPC 5ÔPC1;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙÒåK˜1eΤYÓæMœ9uîäÙÓçO A…2d7tèСC‡:tèСC‡:tèСC‡:tèСC‡:”!»¡C‡:tèСC‡:tèСC‡:tèСC‡:tèС Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡ÿeÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСC²:tèСC‡:tèС†j¨¡†j¨¡†j¨¡†j¨¡†j¨¡ˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²léò%̘2gÒ¬ió&Μ:wòìéó'РB²:tèСC‡:tèСC‡:tèСC‡:tèСC‡ÊÝСC‡:tèСCÿ‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2d7tèСC‡:tèСC‡:tèСC‡:tèСC‡:”!»¡C‡:tèСC‡:tèСC‡:tèСC‡:tèС Ù :tèСC‡:tèPC 5ÔPC 5ÔPC 5ÔPC 5ÔPC 5ÔP Äà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶tùfL™3iÖ´ygNÿ;yöôùhP¡ Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡eÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСC²:tèСC‡:tèСC‡:tèСC‡:tèСC‡ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:t¨¡†j¨¡†j¨¡†j¨¡†j¨¡†j(†bðŸÀÿ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[º| 3¦Ì™4kÚ¼‰3§Î<{úü 4¨P†ì†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2d7tèСC‡:tèСC‡:tèСC‡:tèСC‡:”!»¡C‡:tèСC‡:tèСC‡:tèСC‡:tèС Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡eÈnèСC‡:tèСC‡:tèСC‡ÿ:tèСC‡:t(CvC‡:tèСC‡:ÔPC 5ÔPC 5ÔPC 5ÔPC 5ÔPC 5C±øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–-]¾„SæLš5mÞÄ™SçNž=}þT(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСC²:tèСC‡:tèСC‡:tèСC‡:tèСC‡ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ìÿ†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2dw  4xaB… 6tøbD‰)V´ˆà? 4xð@,hð „ 2lèð!Ĉ'R¬à? 4xð@,hð „ 2lèð!Ĉ'R¬h‘!À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7r”€À <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ!À,hðà?€$XÐàA„ .dØÐáCˆ%N¤XÑ"C€ÿ$XÐàÁÿH° Áƒ*\Ȱ¡Ã‡#JœH±¢Eƒÿ H° Áƒ*d§Pá?Ú8`Aƒ&T¸aC‡!F”8‘bE‹øOà@‚  = 4xaB… 6tøbD‰)V„À,h í H° Áƒ*\Ȱ¡Ã‡#JœH±¢E†ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#G‡´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bDÀ,h í H° Áƒ*\Ȱ¡Ã‡#JœH±¢ÿE†ü'p Á‚ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z4À,hð „Ù)Tø@{,hð „ 2lèð!Ĉ'R¬hQ!€ÿ$XÐ Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Dÿ H° A‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#G‡Ú8`Aƒ&T¸aC‡!F”8‘bE‹1*ðŸÀ $ = 4xaB… ÿ6tøbD‰)V´èÀ,h €ö$XÐàA„ .dØÐáCˆ%N¤XÑ"Bÿ H° Áƒ"d§P!€ö$XÐàA„ .dØÐáCˆ%N¤XÑ"Cÿ H° AÚ8`Aƒ&T¸aC‡!F”8‘bEŠþ8`Aƒ´'p Á‚"L¨p!ÆBŒ(q"ÅŠ!øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ ´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bdà? 4(@{,ÿhð „ 2lèð!Ĉ'R¬h"€ÿ$XР@í H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…þ8`Aƒ&<ÈN¡Bí H° Áƒ*\Ȱ¡Ã‡#JœH±¢E†øOà@‚ hOà@‚ D˜PáB† >„QâDŠ)8pà? 4 = 4xaB… 6tøbD‰)V´Àÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜÈQ!€ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ 8ðŸÿÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z„àÀ€ÿ$XÐ €ö$XÐàA„ .dØÐáCˆ%N¤XÑ¢Bü'p Á‚"LXB…Ú8`Aƒ&T¸aC‡!F”8‘bE‹ 8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+RpàÀ,h@{,hð „ 2lèð!Ĉ'R¬h"€þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘£Bí H° Áƒ*\Ȱ¡Ã‡ÿ#JœH±¢Å‹8pà? 4 = 4xaB… 6tøbD‰)V´Àÿ H° Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…øOà@‚ D˜° ;… ´'p Á‚"L¨! °páÂ… @!@´'p Á‚pP @´'p Á‚À 8pàÀ,X@{,hð „ °° .\¸P! €… € Ú8`Aƒ8ÿpà? , = 4xaB…XX€… .\¨€… @€… €… °P €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„Ú8`Aƒ&Tˆ€…X¸páBƒ,€ .4€@°pá@€ hOà@‚@ @€ö$XÐàA„ pàÀ€ÿ$X° €ö$XÐàA„ "`aA.\¸pá@ì°Ð @´'p Á‚°€ÿAОÀ @à@{ö´'p Á‚"pàÀ€ÿ$X° €ö$XÐàA„ .dØÐ!B xøðáÇ>DàÀÿ H° Áƒd§P!€ö$XÐàA„ "`áÂ…X¸paA  !X¸p!A° `€…8pà? , = 4xaB…X¸p¡@.\¸P @ ! ` €ü'p Á‚´'p Á‚ÿ"L¨! .ÀÂ…  `áBƒ`!  ,\8€…8pà? 4xaB… 6tøbD‰)V´xcF9&ОÀ <ˆ0¡B„,\¸P .\A°0!A°P Xh€,\¸p!B8pàÀ,X@{,hð „ °páB,\¸° 0€…X8€…€A.LÀ@ÿøOà@‚ hOà@‚ D˜PáB† >´`!ˆ!B„"D{8ðŸÀ <ˆ0!Av hOà@‚ D˜P!B.\(€… `¡@°pá„,LÀBØ`¡@øOà@‚ hOà@‚ D˜P!B.\(€… .ÀÂ…X¸ð X¸° 8pà? , = 4xaB…X¸p¡@.\¸P €,`aB°páÿA pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nä˜@{,hð „ °páB,\¸P! `! @€„,ÀBƒ,\¸páB pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸paA&`aB`¡A`€… 0Àþ8`Á‚Ú8`Aƒ&T¸aÆ P`!‡àСC‡:$àÀÿÿ H° Áƒd§P!€ö @ @  P @{€@€ ´gÏÞ@öìÙÀž½íÙ³7@{` سg ={íÙ#hÏÞ@€ö€  íÙho ={س'О@{öÚ³' =€@€ ´gÏÞ@öì ´'О½ìÙОÀö@ @Ú³7ÐÞ@{ö°gO =öì `ÏÞ@{ö8pà? , =À@ÿОÀ  íÙ³7€={ö°go @{öì ОÀØ@à@öìÙ#hÏÞ@{öÚ³7 =0 p {ö°gO ={íÙhÏÞ@{öÚ³'О=í h p {ö°gO ={íÙОÀ@ @ @{öÚ³àÀÿ H°`Aí €@€@@ @€öhÏž½ìÙ³7€={Ú³go ÿ€öÀ@°gÏA{öÚ³GО½í €  سG€={íÙ#hÏÞ@{öÚ³'О=öìÙ#hÏž=‚ìÙ³7О½öÚ³GО={íÙhO @{ÚÀž=‚ìÙhÏA{öÚ³àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜÈ1!€ö @ @  P @{€@€ ´gÏÞ@öìÙÀž½íÙ³7@{` ÿسg ={íÙ#hÏÞ@€ö@ @{íÙhO =öì ´gÏÞ@öìÙ(О={íÙho ={سgo {öÚ³gO ={íÙhÏž½ìÙhÏÞ@öì ´' =í {Ø€à@€ÀìÙ#Àž={íÙ#Àž={íÙ#Àž½öì8pàÀ,X@{ € ( =@ @Ú³go {öì `ÏÞ@öìÙ =°€ÀìÙ³ÿGО½öì´go @{À@€@öì ´'О½í ´gO ={Ú8Ð@ @{öÚhÏÞ@öìÙО@0`€8€={öÚ³G€={íÙpàÀ€ÿ$X° €ö$XÐàA„ .dØ!€‚°ÀØ@ ` (À¡C‡:t8Àþ8`Aƒ&$ÈN¡Bí Hp °€ÿ@P ö@Aì {°€=P{ØÀö€= {´€@ì {°€= Ø  Aì€@`ö°€@ì {Àí {°€= ØÀö€=8pàÀ,X@{€@ì $€=ÿP{Àì`Àö°€=`Àí`€‚ØÀö°€@ì`Ø@ ö(X Àö°€=`{À@Ú³gO ={í ´gO ½öÚhÏž=øOà@‚ hOà@‚€= €‚°€@ `Ø€=ì €‚ØÿÀö°€@ì Ø  =ìP{ØÀö€=ì {À  Àö°€@ ÚÀ°À@(({ØÀö€=ì { pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nä˜@{€@ì $€=P{Àì`ÿÀö°€=`Àí {À  Àö°€@ ÚÀ°A p @{öÚ³'О@{öÚ³'О@{öÚ#hÏž@{öÚhO @{ {ØÀö€=`ö°€@ìÀöàÀÿ H°`Aí Hp °€@P ö@Aÿì {°€=P{ØÀö€= {´€@ì {°€=`$@A{Àì`Ø@  €@ì`{@ @{öì ´'О=öÚhO =öì ´7О@{íÙ³àÀÿ H°`Aí H° Áƒ*\ȰáB`ì` {0À€ì` €‚:tÿèСC‡8pà? 4xaB‚ì*ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½í hOà@ @ ö€= Ø`àÀ @ @ÚhÏž@{ÚhÏž@{Ú(€€=`@ ö°€=€´'О={8ðŸÀ ОÿÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½í hOà@{@ @{í ´'О@{öÚhoà@{íÙ³' = ` @ÚhO =öÚ³'О@{ÚОÀö@ @ÚhÏž@{íÙ³àÀÿ H°`Aí Hp °€@PÐ@ÚhÏž@{ö ´' =€=€ÿhO @ì`{Ø@à@{íÙ8О@€ö´A€ ´'О@{í ´gO =ö´'О={Ú8 = ` €@ö´'P 0 í ´'О@{íÙhO ½í ´gÏ€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„Ú8à@`  =€ ´'О=öì hO @{ {О@ØÿÀö°€ÀöÚ³7p =í €@ì { 8@ €@ P =í À@{@à@öìhO ={ÚhÏž@{öì ´gO ={í ´' =€=ì`{À°€@ì p =öì ´'О={8ðŸÀ ОÀ {@ í P =öì ´go @{Ú(Ø@àÿ@€ö Àö°€=€´'О½í hOà@ @ ö€=` 8€€=`Ø@ h íÙhÏž=öì hOà@ì p =öÚhoà@{íÙhO ={ö8pà? , = 4xaB… 6T  €‚ìÀh€={ìÙ³7€=í €@öìÙ³ =´'p Á‚"L¨p!Æÿ8pà? 4xaB‚ì*ОÀ {@ €=`Ø  °@A‚ØÀö°@AP€‚ö(€@ì {@ °@A‚ @ €=  {  =`Ø@ €=ì`€‚ pàÀ€ÿ$X° €ö$8Ø@ (ÿ€@ì {À€= Àö°€=  €‚€@`{ØÀ°€= @€‚  ØÀö°€@ì`€‚(€@ì0Àþ8`Á‚Ú8à@`  °€@ì {@ ö(H{ØÀö(€ÿ@ Pp €=ì`{Àö(A @à@{öÚ³'О={íÙhÏž@{öÚ³'О@€ö `à@ {ØÀö€=ì0P 8pà? 4xaB… 6tøbD‰)V´xcF9&ОÀ {@ €=`Ø  °@A‚ØÀö°@AP€‚öÿ€=`€‚8О=öì ´gÏž@{öÚ³'О=öì ´' =°€=`{` @0P €@`{ €@ì`{Ø@ ö€=`€€=8pàÀ,X@{€@ì @ ö€=`€‚À `{ØÀÿ@A Ú  °€@ì {  A Ú@ ö€=` €  ´€= `{Ø  °À@øOà@‚ hOà@‚ D˜PáB† (€ {°@ €‚` { 8  ‡:tèС@øOà@‚ D˜ ;… ´'p ÁÀ@A`Ø@ ÿö€=`Àö°€=`Àí {À°€@ {$€@@ ö€=`Ø@ ö€=`Ø@ €=ì`Ø` €ü'p Á‚´'p ÁÀ@A`Ø@ ö€=ÿ`Àö°€=`Àí`{Àö°€=`{À°@A‚@ °€=ì`ØÀ°@Á @ ö€=8pàÀ,X@{€@ì @ ö€=`Ø@ ö@Aì`{Øÿ@ ö€@ìPÐö°€@ì`{Ø@ ö°€@ì {Aì {ØÀ€@ì {@ €=ì`{Àö€=8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rL = @ ö€@  {À°€@ì ÿ{  ö°€=ì {@ ö(hØÀìPp °€@ì`{@ °€@ì`{Àö€@ì Ø@  {°€=`ØÀö°€@ì {À°€@ì0Àþ8`Á‚Ú8à@`ÿ  °€@ì {À°€@ `{ØÀ°€@`€‚ö€=`Ø@ ö@A‚ À°€@ì {` €=ì`´€=`{ØÀ°€@ì0Àþ8`Á‚Ú8`Aƒ&T¸aC† À€ìÿ` {` {°` pèСC‡pàÀ€ÿ$XÐàA„ ²S¨@{ € €hO ={ö ´7P ={ö ´go {öÚ³'О½ìÙhÏž@{í ´'О½ìÙ³'О½ìÙhÏž@{öì `Ïž½ìÙhÏž@{öÚhÏž½ìÙhO ={íÙ³7p ={ö°gO ={íÙÀž=öì ´go {öì hÏž½ìÙhÏž@{öÚhÏž½ìÙhO ÿ={س'О={8ðŸÀ О@` ` @ÚhÏž½í hÏž½íÙÀž=öì ´go {öÚ³'О@{í ´go {öì ´go {öÚ³'О={íÙ³7P =öÚho @{öÚ³7€={íÙ³7О=öì ´gÏÞ@öìÙ³7P =öÚho @{öÚ³7€={Ú³gÏž@{öìÙÀž=öì ´gO ={8ðŸÀ О@` ` @ÿÚhÏž½í hÏž½íÙÀž=öì ´go {öÚ³'О@{í ´go {öì ´go {öÚ³'О={íÙ³7P =öÚho @{öÚ³7€={íÙ³7О=öì ´'О={öÚ(О={íÙ³'О@{öì hÏÞ@öìÙhÏÞ@öìÙ³7P =öÚho @{öÚ³7€={íÙ³àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜÈ1!€ö @ @ (О@{öì ÿho @{öì hÏÞ@öì ´gO ={س'О=öÚhO ={سgO ={س'О=öìÙ(О½í ´'О=öÚ³gÏž@{Ú³go ={öÚhÏž½íÙÀž={í ´gÏž@{öìÙhÏž½ìÙ³'О½ìÙhÏž½íÙ³7P =öì hÏž½ìÙhO =ö ´gÏÞ@öì ´gO ={س'О=öì ´gÀþ8`Á‚Ú(  @ @{íÙ³7P ÿ½íÙ³7P ={س'О=öì `Ïž@{öÚhO =öì `Ïž=öì `Ïž@{öÚ³go {öì `Ïž@{öÚhÏž@{ö ´'О=öìÙ(О={س'О=öÚ³'О½íÙ³' =` ` íÙhÏÞ@öì ´'О@{ö°gO ={íÙhÏ€ü'p Á‚´'p Á‚"L¨p!Æ  €= 0` (À¡C‡ÿ:tHÀþ8`Aƒ&$ÈN¡Bí H° Áƒ,ÀÁƒ@{,hð „ 2lèð!Ĉ8pàÀ,X@{,hð  pðàÁƒpðàÁƒ<(€ƒ„¸€ˆ 8pàÀ,X@{,hð  pðàÁƒpðàÁƒ„QâDŠ-^ĘQãFŽ ´'p Á‚ P @{@Á‚ ,XP  ,X°`A{ÿОÀ <ˆ0¡Â… :|‘!#pàÀ€ÿ$X° €ö$XÐà@€ hOà@‚(X°`Á‚  = 4xaB… ( = 4xá@€ hOà@‚ D˜Páƒ8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+ZTàÀÿ H° Áƒd§P!€ö$XÐàA„ .dØÐáCˆ%N¤XÑ"CøOà@‚ hOà@‚ D˜PáB† >„QâDŠ)8ÿpàÀ,X@{,hð „ 2lèð!Ĉ'R¬h"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„Ú8`Aƒ&T¸aC‡!F”8‘bE‹12pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ"DøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-*pàÀ€ÿ$XÐàA„ ²S¨@{,hð „ 2lèð!Ĉ'R¬h‘!€ü'p Á‚´'p ÿÁ‚"L¨p!ÆBŒ(q"ÅŠ8pà? , = 4xaB… 6tøbD‰)V´Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cBí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬h"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàÀ,hð „Ù)T = 4xaB… 6tøbD‰ÿ)V´ÈÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bEŠ8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z„àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜÈ1!€ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ 8pà? , = 4xaB… 6tøbD‰)V´Àþ8`Á‚Ú8`Aƒ&Tˆ€…X¸páÂ… X¸° ,\H„ÿ`áÂ…8pà? 4xaB‚ì*ОÀ <ˆ0¡Â… :|1¢Ä‰+ZdàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±"EøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-BpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nä˜@{,hð „ 2lèð!Ĉ'R¬hñ"F†8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z„àÀÿ H°`ÿAí H° Áƒ*DÀÂ… °páÂ…X¸ X¸p X8€… 8pàÀ,hð „Ù)T = 4xaB… 6tøbD‰)V´ÈÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bEŠ8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z„àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜÈ1!€ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ ÿ8pà? , = 4xaB… 6tøbD‰)V´Àþ8`Á‚Ú8`Aƒ&Tˆ€…  `áÂ… °p!A.<B`áBƒ8ðŸÀ <ˆ0!Av hOà@‚ D˜PáB† >„QâDŠ-2pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤X‘"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ!8pàÀ,hð „ 2lÿèð!Ĉ'R¬hñ"ÆŒ7rL = 4xaB… 6tøbD‰)V´x#CøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-BpàÀ€ÿ$X° €ö @ @  P @{€@€ ´gÏÞ@öìÙÀž½íÙ³7@{` سg ={íÙ#hÏÞ@€öÀ@€ÀìÙ#Àž=öì´go ={íÙhÏž@{ö´'p =€ÿÀìÙ#Àž=öì´gO @{   P ={ö°go ={8ðŸÀ <ˆ0!Av hOà@‚ D˜PáB† >„QâDŠ-2pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤X‘"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ!8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rL = 4xaB… 6tøbD‰)V´x#CÿøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-BpàÀ€ÿ$X° €ö$8Ø@ (H{  ö€=ØÀ(€=ì`{À€= ÚÀ°€=ì`ØÀ°€@ìP° €=ì`{Àö€= `{Ø@ °ÿ{Ø@ öàÀÿ H° Áƒd§P!€ö$XÐàA„ .dØÐáCˆ%N¤XÑ"CøOà@‚ hOà@‚ D˜PáB† >„QâDŠ)8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬h"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„Ú8`Aƒ&T¸aC‡!F”8‘bE‹12pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ"ÿDøOà@‚ hOà@‚€= €‚ö(О@{öÚ³7P =í €@ì p @{`{ØÀ@ÚhÏÞÀö´'p = P =öÚhO ={í ´7p =öìÙОÀ 0 í ´'О@{íÙhO ½í hO @0hO ={í hO ={ö8pà? 4xaB‚ì*`Ïž=€$XÐàA„ .dØÐáCˆÿ%N¤XÑ¢Âü'p Á‚سg  4xaB… 6tøbD‰)V”xàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ"DøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ سg  4xaB… 6tøbD‰)V´x£Âü'p Á‚سg  4xaB… 6tøbD‰)V´èðÀÿ H°`Aí Hp °€@PØ@ öÿ€=  {$€=ì`{@ (8Àö°€=`{€  @ °€=ì`ØÀ(À@ €‚ÀàÀÿ H° Áƒd§P!€ö$XÐàA„ .dØÐáCˆ%N¤XÑ"CøOà@‚ hOà@‚ D˜PáB† >„QâDŠ)8pàÀ,Xÿ@{,hð „ 2lèð!Ĉ'R¬h"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„Ú8`Aƒ&T¸aC‡!F”8‘bE‹12pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ"DøOà@‚ hOà@‚€= €‚À°€@ì {À(€=ì`{À€= ÚÀöÿ€=ì`{Àö€=`€‚€@`{ØÀ°€=`€‚ØÀö€@ì {À8pà? 4xaB‚ì*ОÀ <ˆ0¡Â… :|1¢Ä‰+ZdàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±"EøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-BÿpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nä˜@{,hð „ 2lèð!Ĉ'R¬hñ"F†8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z„àÀÿ H°`Aí €@€@ P =öìÙ(ÐÞ@öìÙ(О½ìÙhÏž@{ö°gO ={í ´'О@{ö°gÏž@{ö°gO ={íÙ³7О={ÚhO =ö ´gO ={س'О={íÙhÏžÿ@{öì `Ïž={ÚhO =ö ´gO ={س7p =öì ´gÏž@{ö°gO ={íÙÀž=öìÙpàÀ€ÿ$XÐàA„ ²S¨@{,hð „ 2lèð!Ĉ'R¬h‘!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pà? , = 4xaB… 6tøbD‰)V´Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cBí H° Áƒ*\Ȱ¡Ã‡ÿ#JœH±¢Å‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬h"€ü'p Á‚´'p Á‚p° „QâDŠ)8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬h"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„Ú8`Aƒ&T¸aC‡!F”8‘bE‹12pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ"DøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-*pàÀ€ÿ$XÐàA„ ²S¨À,hð „ ÿ2lèð!Ĉ'R¬h‘!€PpñâÅ‹/^¼xñbE àâÅ‹/^¼xñâÅ‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ.^¼xñâÅ‹/^¼xñbC àâÅ‹/^¼xñâÅ‹8p€"€‹/^¼xñâÅ‹/*pàÀ‹²£àâÅ‹/^¼xñâÅ‹ 8p€"€‹/^¼xñâÅ‹+8pàE/^¼xñâÅ‹/^„àÀ/^¼xñâÅ‹/^¼xñâÅ‹/þpñâÅ‹/^¼xñâÅ‹8pàE/^¼ÿxñâÅ‹/^„àÀ\¼xñâE]tÑE]¤@8ðŸÀ <ˆ0!Av øOà@‚ D˜PáB† >„QâDŠ-2pàÀŠ.^¼xñâÅ‹/^¬àÀ\¼xñâÅ‹/^¼x"€\¼xñâÅ‹/^¼xñâÅ‹/^¼øÀÅ‹/^¼xñâÅ‹/^làÀ\¼xñâÅ‹/^¼x"€PpñâÅ‹/^¼xñâE…8pñâ@v ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±bE ` ÿ@uøOà@‚ D˜PáB† >„QâDŠ8pàE-Z´hÑ¢E‹-Z´XÀ,Z´hÑ¢E‹-Z´hÑ¢E‹-Zœ` @uøOà@‚ D˜PáB† >„QâDŠ-^¼àÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å8@ÀÅ‹/^¼xñâÅ‹8pàÀÅ‹ÙQ0P@x TðŸÀ <ˆ0¡@ *T¨P¡B… *T¨P¡B… *THÀ*0P@x TðŸÀÿ $ààA„Q"€H@¢D‰%J”(Q¢D‰%J\àÀ%6d'Q €êÂ8P :€ÿ$XÐàÁƒ"à? 4xaB… 6tøbD‰ 8pàEÕ„'p @uÿ H° A‚þ8HÀÁƒ 8€ €ƒÿ øà? 4xaB… 6tø"€@$€À <ˆ0¡Â… :|1¢Ä‰+Z”xàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nä˜À@uá (PÀ,hP €‚pp €ƒøOà@‚ D˜PáB† >„QâDŠ8p€"€êÂ8P :€ÿ 0ðþ`à@` þ ÀÀøÀÀ8À,hð „ 2lèð!Ĉ8p@¢@%J”ÿ(Q¢D‰%J”(QâB(±!;‰ T :á©øOà@0À?þ ü@ ÿ(À?ÿÀ,hð „ 2lèð!Ĉ'pàÀŠªƒPÀðÔü'P 0øàÿ(ÀÀÿ ÿ€@ÿ€0À?ÿøOà@‚ D˜PáB† >|àÀ p Á‚"L¨p!ÆBŒ(q"ÿÅŠ< p À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rL` :xÕ OÀ@ € €@@ ÀÀ €` øÀ,hð „ 2lèð!Ĉ'RüàÀ T :á©øO @ÿà€0p €`à? ü@ €ÿ ` @ð€þøÀ@øOà@‚ D˜PáB† ÿ>„À"0  4xaB… 6tøbD‰)V´ˆðÀÿ H° Áƒd§P!€êàT'p „àÀ< p Á‚"L¨p!ÆBŒ(q"ÅŠ%ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Ç„ªOà@êþ( ÿø÷ï€ÿøàß¿þø7Pà?ÿþýðŸÀ ðÀ@ÿ ðÀ?€ ü÷o €þýûà? 4xaB… 6tøbD‰)8pàEÕ„'p @uÿ `à@ `à@üðÀ? üÿ@ €ÿ0ð€@ ø` €øOà@‚ D˜PáB† >„À"1bĈ#FŒ1bĈ#FDàÀ#>dq €êÂ8P :€ÿ 0P €þ@ € ðÀÀø` €þ8`Aƒ&T¸aC‡!F”8Ñ €P0P@x TðŸ@8ðøà€@ €þ@ €øà€ ü@ €ÿ` €þøOàÿ@‚ D˜PáB† >„àÀ!B„"DˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~™À@uá (PÀ(À@ÿ ðÀ@ÿü0P €øÀ@ÿ ðÀ@ÿü0P €þà? 4xaB… 6tøbD‰)8pàEÕ„'p @uÿ `à@€ øOà@à€þ`à? ü@ €ÿ 8pà@ À?ü0Àÿ,hð „ 2lèð!Ĉ8q €ˆ#FŒ1bĈ#FŒ1"Bˆñ!»ˆ TžÀÕü'P €þÀ?0À?ü0pà@þà€ÿ$XÐàA„ .dØÐáCˆ%N4àÀ TžÀÕü'P ø@ €ðÀ?` ø@ þà€ø`à? ð€@ÿà€þ8`Aƒ&T¸aC‡!8pàDˆ!B„ÿ"Ä…þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGAf0P@x TðŸ@ø` €ø` €þà€øÀ@ÿ ðÀ@ÿü0À?ü0À,hð „ 2lèð!Ĉ'RpàÀŠªOà@êþ(À@ ðÀ@ 0ð€þ0ðþ À@` à€þà? 4xaB… 6tøbDˆ8@ÿĈ#FŒ1bĈ#FŒ!€DŒø]ÄT'p A€ÿÀ@þø@ €` þ0P €à? 4xaB… 6tøbD‰ 8pàEª8 À€ à€øÀÀøþ@ € €@0ð€À@þø@ €ÿ$XÐàA„ .dØÐáÇ8"Dˆ!B„q!€ÿ$XÐàA„ .dØÐáCˆÿ%N¤XÑâEŒ5näØÑãG ¨Nà@‚ÿ ÿ@ ÿ(` €ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡#JœHÀ(PÀþ(À@  ÿ` @  ü@ øÀÀøÀ?ü0€@øOà@‚ D˜PáB† >„À"1bĈ#FŒ1bĈ#FDÿàÀ#>dq €ˆ#FŒ1bĈ#FŒ1¢Bˆ8@Ĉ#1bĈ#FŒ1âAˆ1bĈ#FŒ(@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bB#FŒ1bĈ#FŒ1bĈ#pàÀˆDŒ1bĈ DŒ1bĈ#FpàÀˆDŒ1bĈ#FŒ1bĈ8pà@ĈÙE bĈ#FŒ1bĈ#FŒ¨À"1bĈDŒ1bĈ#FŒè €8pà?ÿ 4xaB… 6tøbD$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Ä†$J”(Q¢D‰%J”(Q¢D‰%pàÀ‰H”(Q¢D‰@¢D‰%J”(Q!€H@¢D‰%J”(Q¢D‰%J\àÀ%6d'Q ‰%J”(Q¢D‰%J”(±!€H@¢D‰%J”(Q¢D‰%FpàÀ‰%J”(Q¢D…$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‡$J”(Q¢D‰%J”(Q¢D‰%ÿpàÀ‰H”(Q¢D‰%J”(Q¢D‰8ðÀ,XÀ,hð „ 2lèð!Ĉ'R¬hQ!€\¼8Eª8 À,hð „ 2lèð!Ĉ'R¬XÀ(PÀþ8`Aƒ&T¸aC‡!F”8‘bŃ8`Ñ¢E‹-Z`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´h‘ €Õ Hà? 4xaB… 6tøbD‰)V´xñ"€P0 : ü'p Á‚"L¨p!ÿÆBŒ(q"ÅŠ8pàEª8 À,hð „ 2lèð!Ĉ'R¬8À,Z,ÈŽ"€êÂ8P :€ÿ€ A‚ $€ A‚ÿøOà@‚ D˜PáB† >„QâÄ‚8@À@uá (PÀ @ A‚  $H A‚@à?ÿ H° Áƒ*\Ȱ¡Ã‡8pà@Ĉ#FŒ1bÄ"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ¨ <ÿªøO @8pàÀþ8`Aƒ&T¸aC‡!F”8‘bE‹8p€"€êÂ8P :€ÿ 0ð€€@ÿþ øïß?ÿþýûàß¿ÿüû÷ï€ÿ   þ8 @$à? 4xaB… 6tøbD‡8 Q €êÂ8P :€ÿ$XÐàAB„ Bþ8`Aƒ&T¸aC‡!FàÀ%6d'Q €êÂ8P :€ÿ€ A‚ $ÿ€ A‚ÿøOà@‚ D˜PáB† >„QâÄ‚8@À@uá (PÀ`àÀ8À?ÿøOà@‚ $` þ8`Aƒ&T¸aC‡!F$àÀ%J”(Q¢D‰ H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ TžÀÕü'P €8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Åˆ8@À@uá (PÀø€@0p €ÿ` ÿ€ÿ ü` @ 8pà@ðŸÀ <ˆ0¡Â… :|1¢D80ñ€êàÁƒ§N„QâDŠ-^ĘQãFŽ=~©À@uá (PÀ8pàÀþðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZŒàÀ TžÀÕü'P €ÿ0p € ü@  ðÀ@ ÀÀ0p €ÿ$XÐàA„ .dØÐáCˆ% pàÀ‰ÿ T„QâDŠ8pàEª8 ÀÀÀ€@ÿþø÷ïß?ÿþø÷ïß?ÿü'P €   þ(ÀÀøÀ?ü0€@øOà@‚ D˜PáB† >„Q €H` @uøOà@À?ð€0ðÿ` ÿü À@ €@ €þ8`Aƒ&T¸aC‡!FüàÀ%6d'Q ‰%J”(Q¢D‰%J”(±!€H@¢D‰H”8€D‰%J”(±!€H”(Q¢D‰%& Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%> ‘!‰ Q¢D‰%J”(Q¢D‰8pà€D$J”(Q¢Ä‚$J”(Q¢D‰8pà€D$Jü@¢D‰0 Q¢D‰%J”¨Àÿ$JlÈN¢@%J”(Q¢D‰%J”(QbC(€D‰#$J”(Q¢D‰8p@¢D‰%J”(1!‰%’H"‰$’H"‰$’H"‰$’H"‰$’H"‰$’H"‰$’H"‰À,h° „QâDŠ'8pà€E‹ÙQ0P@x TðŸÀþ8pàÀ8pàÀü'p Á‚"L¨p!ÆBŒ(qbC €"EŠ)R¤H‘"EŠ8pàEŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EЍ <ªøOà@‚ €@ÿ H°`A  À Aƒ(à? ,à? 4ÿxaB… 6tøbD‰8p`â?'Nœ8qâĉ'Nœ8qâ@˜øÀ@uá (PÀ,hð @€!B‚@(À,hð „ 2lèð!Ĉ 8p@¢Ä†ì$ 0P@x TðŸ@8ÀÀ8pàÀü'p Á‚"L¨p!ÆBŒ(qbC €"EŠ)R¤H‘"EŠ8pàEŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EЍ <ªøOàÿ@‚ € „@(€"4€ „øOà@‚ D˜PáB† >„QâA˜øÀĉ'Nœ8qâĉ'Nœ8À&þ0P„QâA˜øÀĉ'Nœ8qâĉ'Nœ8À&þ0P„QâA˜øÀĉ'Nœ8qâĉ'Nœ8À&þ0 : ü'p àøÀ@ ü@ ü0€@ €@ €þ8`Aƒ&T¸aC‡!F\àÀ%6d'Q ‰%J”(Q¢D‰%J”(±!€H@¢D‰%J”(Q¢D‰%FpàÀ‰%J”(Q¢Äƒ$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢ÿD‰%J”(Q¢Äˆ$J”(Q¢D‰%J”(Q¢D‰%pàÀ‰H”(Q¢D‰%J”(Q¢D‰8p@¢@%þ QâB H”(Q¢D‰%JàÀ%6d'Q ‰%J”(Q¢D‰%J”(±!€H@¢D‰%J”(Q¢D‰%FpàÀ‰%J”(Q¢Äƒ$J”(Q¢D‰%J”(Q¢D‰%’H"‰$’H"‰$’H"‰$’("€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bdàÀd̘1cÆŒ3fÌ8À(ÈÈ@Æÿ‹Ș1cÆŒ8pà@FŒì(Ș1cÆŒ3f̘ñ!€P1cÆŒ3f̘1ã?Ș1cÆŒÿȘ1cÆŒ3f̘1cÆŒ3f̘1cÆŒȘ1cÆŒ3f̘1cF†8@@ÆŒ3f̘1cÆŒ8p€"€Œ3f̘1cÆŒ8pà@FŒì(PÀþ8`Aƒ&T¸aC‡!F”8‘bÅŠ8@€E‹-Z´hÑ¢E‹8pà€E‹-Z´8€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŃÿT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâÅ‹8@FŒ1bĈ#FŒ 8pàEª8 À,hð „ 2lèð!Ĉ'R¬8À,Z,ÈŽ"€êÂ8P :€ÿ 0pàÀü`àÀÿ(À,hð B„ 8 ¡Aÿ0a„ &L˜0a„ 8pà@„ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-ZœÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÿÑâAÕ„'p @uÿ H° A  @A €@ÿ H° @4à? 4xaB… 6tøbD‰8p`â?'Nœ8qâĉ'Nœ8qâ@˜øÀ@uá (PÀ,hð @€!B„€P €ÿ$XÐàA„ .dØÐáCˆ 8pà€D‰ ÙI` :€ð¨à?ÿ H Á$HA‚$H A‚ ü€ A‚ÿ$Hp €$à? 4xaBÿ… 6tˆÀððáÇ>|øðáÇ>|¸À>|øðáÇ>üà? 4xaB… 6tøbD‰)V´xcF9vôødGÕ„'p @uÿ H° A  @A0hðƒ þ` ƒü'p Á‚"L¨p!ÆBŒ(1"€Lü`âĉ'Nœ8qâĉ'NàÀÿ¨|øðáÇ>LàÀ>|øðáÇøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~éÀ@uðª8ž:€ÿ @ €ø` €8pà@üðÀ? ð€@ü0ð€ÿ0À?üð€@ ðÀ@ÿ ðŸÀ <ˆ0¡Â… :|1¢Äÿ…80ñ€êàÁƒ§N|ø0!€<|øðáÇ>|à? 4xaB… 6tøbD‰)V´xcF9vôø¤GÕ„'p @uÿ ` €ø` €ðŸÀà€þ€@ÿüû7Pà?ÿþýûàß¿ÿüû7Pà¿ÿø÷ÿÀ?ÿþø÷ï€þýûàß@ÿ H° Áƒ*\Ȱ¡Ã‡#J\àÀÿ¨„± €H”ØDªOà@êþ(À? @ €þà€ÿþà€  €@à€ ü`àÀ à€þø` € ðÀ@à? 4xaB… 6tˆÀ0P<€ê„§à?Ù±cÇN ;vì²c÷ÝÀì²cÇn ;vÙ d÷Ý?vìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡#JàÀ'Nœ8qâĈ&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâAÕ„'p @uÿ ` €ø` €ÿ8ð@   À@þ0ð 0P €0À?üðŸÀ <ˆ0¡Â… :|1¢Ä‡80ñ€êàT'p „Qâ@˜8qâĉ'F0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉPÀþ(À@0` @0À@` `à?ÿ€`à?ÿ0à? 4xaB… 6tøbD‰ 8p`â?ÕÁƒO:xðà©3ÿ ðÀ@@ Àÿüû÷À¿þ8À?€ üàß?ÿþø7Pà?ÿþýðÀ¿þ8 @ÿ H° Áƒ*\Ȱ¡Ã‡#pàÀ‰ ¨Nà@‚ÿ À@ø@ þ€@0ÿ ` ü €@ ðŸÀ ÿ<ˆ0¡Â… :|1bA(±!;‰H”(Q¢D‰%J”(Q¢D‰ 8p@¢@ÕÁƒO:xðà©+Èn »ì ²ÈŽ ;ì²Èn »ìþ±ÈŽ!;‰%J”(Q¢D‰ 8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4À¤I“&Mš4i!€P0PpàÀŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)&@‘"EŠ)R¤H‘"EŠ)RdàÀP¤H‘"D P¤H‘"EŠ)þpàÀÿŠH° Áƒ*\Ȱ¡Ã‡#JœH±¢E†øOà@‚ D˜ ;…  TžÀÕü'pà? @A‚ @ A‚ü'p Á‚"L¨p!ÆBŒ("€Lü`âĉ'Nœ8qâĉ'pàÀ‰'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœhÀĉ'Nœ8qâĉ'Nœ8q"B˜øÀĉ'Nœ8qâĉ'Nœ8À&x@à@‚ D˜PáB† >„QâDŠ-ÿ2øOà@‚ D˜ ;…  TžÀÕü'pà? @ A‚  H Áþ8`Aƒ&T¸aC‡!F”À&þ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-ZŒÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbB-Z´hÑ¢E‹-Z´hÑ"A ` @uøOà@‚ D˜PáB† >„QâDŠ-pàÀ‹H° Áƒ*\Ȱ¡Ã‡#JœH±¢E†ÿ Hÿ° Áƒd§P!€êàT'p „XÀ"FŒ1bĈˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#F| bĈ#FŒ1bĈ#FŒ1bDƒ8q €êàT'p „ÈÀ"FŒ1bĈ#FŒ1bĈ#FŒè]Ä"FŒ1bĈ#FŒ1bĈ 8p â@ª8 À²cÇŽ@vìØ d7ÝÀì²ûÇn ;vì²cÇŽ@vìØ±ÈŽ»ì²ÈŽ»ìØýc÷;vì²ÈN ;ì²øOà@‚ D˜PáB† >„XÀ"FŒ1bĈˆ1bĈ#FŒÿ1bĈ#FŒ1bĈ#FŒ1bĈ#F„ bĈ#FŒ1bĈ#FŒ1bDƒ8q €Õ Hà? `  (àŸ  @À@  ` ü(@ Àÿüû7ðß?ÿþ ø÷OÀ¿ÿýðïß?ÿþ ø'àß?ÿþ ø÷OÀ¿ÿü'p Á‚"L¨p!ÆBdàÀ#FŒ1bĈ#FŒ1bĈ#FtÈ.â@ª8 À,hð „ 2lèð!Ĉ'R¬XÀ(°È΢Eÿ‹ÿØdÇE‹-Z´˜À,Z´hÑ¢Eˆ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-*`Ñ¢E‹-Z´hÑ¢E‹-pàÀŠ,Z(À¢Eˆ °hÑ¢E‹!8pà€E‹-Z´hÑ¢E‹-Z´hñ ;ŠªOà@êþ(ÀÀ8ð€ÿ$XÐàA„ .dØÐáCˆ%N¤ØÀ(ÈŽ;v+V,ÈÎ ;…ì*V¬X±bEˆ8P±bÅŠ+Vü bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bE‡*ÿV¬X±bÅŠ+V¬X±bE‰8@@ÅŠP±"E T¬X±bÅŠ8pà@ÅŠ+V¬X±bÅŠ+V¬X±â?v TžÀÕü'P €8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±!€PP±bÅŠ+V¬X±bEŠ8P±bÅŠ+Vü bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bE‡*V¬X±bÅŠ+V¬X±bE‰8@@ÅŠ+V¬X±bÅŠ+FpàÀŠ+V¬X±bÅŠ+V¬X±bÅì(¨ÿ <ªøO @8pàÀþ8`Aƒ&T¸aC‡!F”8‘bC ` @uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹-Z´€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E…T'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâÅ‹8@FŒ1bĈ#FŒ 8pàFŒ1bĈ#FŒ1bÄøEÕÁ¨Nà@xêþ(€@ €ÿ `à@ ÿ øOà@‚ D˜PáB† >„QâD8@À@uá (PÀ  `àÀ(PÀÀÿ (à? 48PÀÁþ8`Aƒ&T¸aC‡!F$àÀ%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰¨ <ªøOà@‚ ðÀÁƒÿ P À,ø ÿýðŸÀ <8Bþ8`Aƒ&T¸aC‡!F”xÀ&ÿþ@à@‚ D˜PáB† >„QâDŠ-J„q €H”(Q¢D‰% Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J` :xðÔÁƒ§„QâÄ8@À@uðàÁS§„Q¢A˜8qâĉ'Nœ8qâĉ'Nœ8qâÄÿ‰'Nœ8qâĉ'NœHÝÄT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤X±"€P`1¢‹0`Ñ¢E‹-ZàÀ-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹X´ø€E‹`À¢E‹-Z´hñ€X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâCv TžÀÕü'p Á‚ÿƒ àƒ 0hP 0hÐ`A 4  €ÿ$XÐàA„ ÿ.dØ!€84À¡Ã…:t(@¡‡:tèСC‡pàÀ‡:tèСC‡ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~ò‘@¤È„)R¤H‘8p@¤H‘"EŠ)R¤H‘"EŠ)R¤È‰ì(¨ <ªøOà@‚ÿ(€ ƒÿ0XÀ? `Р@ÿ `РA‚ 4h€Aƒþ8`Aƒ&T¸aÂ8àÐ ‡:tèСC‡:tèСC‡ 8pÿÀ¡C‡:tèСCƒþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†ü@¤H‘"EŠ)R¤A)R¤H‘"EŠ)R¤H‘"EŠ)r";ŠªOà@êþ8`Á 0hÐ ƒü`Ð Aÿ4øÀ? 4(€Aƒ 0hÀ,hð „ 2lXÀ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-ZtÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ"Cÿª8 À,hð „ 2lèð!Ĉ'R¬hñâEÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈñ ;ŠªƒPÀðÔü'p  ð8ðø€@þ ü À@ÿ ð€ðÀÀÿ ÿ€@0P € @ øOà@‚ D˜PáB† 8pà€CƒªOà@êþ8P€ÿ8pà@üP€@ÿ H° ÁðŸÀ <ˆ0¡Â… :|1"A(Q¢D‰%J@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”HÀ@uá (PÀ,hðàA€ì ü÷Ý¿ÿþ±øOàÀìÈŽ Áì²#HP ;€ÿ$XÐàA„ .dØÐáCˆ%N|àÀ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"Å…ì(¨@uÂSðŸ@ø` €øÿ`à@ü@ €` €þø` €à€ À?ÀÀÿü €@ÿ ðÀ?ü €@ü` @ÿðÀ,hð „ 2lXÀ0P„QâDŠ-^ĘQãFŽ=~ò€êàÁSž:xðÔid§AvÙd·ÝBÿvÿØ1d'R¤H‘"E8pà€H‘"EŠ)R¤H‘"EŠ)R¤H‘ÙQ0P@x TðŸÀà€þ8À@ÿ ð€@ ðÀ?ÿ(ð€ÿþø÷ï€ÿþø÷À¿ÿüðïß?ÿ ` ü €@ÿ ðÀ?€ üàß¿þ8 @0À,hð „ 2lXÀ0P„QâD‡8@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R\ÈŽ"€êÂ8P :€ÿü@ €þà‚ ðÀ@ÿ À@ÿüðÁ€@ÿþø÷ï€þýûà?0À?ðÿÀ@ÿü0P €ÿ 8P €  À,hð „ 2lXÀ0P<€ê„§à? øO€ðO€ P€@0p €  @ € àŸ€ðŸÀ <ˆ0¡Â… :|1â@(Q¢D‰%Jü@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”XÀ@uð੃O„QâDŠ-^ĘQãFŽ=~RäH’%MžD9À@uá (PÀ²Èî»ìþ±Èn ;vÙ d÷@vÙýc7Ý?v²Èî»ìþ±Èî»ì8À,hð „ ÿ2lèð!Ĉ'RpàÀŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘âBvP¤H‘"EŠ)R¤H‘"Å‚8@‘"EŠ)R,€"EŠ)R¤H‘"EŠ)6@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ ¨Nà@‚ÿ ÈŽ;vÙ±c7Ý?vÿ±ÈŽ;vÿØ d'@vìØ d7pà?vìØ±ûÇn ;ìØ±Èî;ì²Èn ;€ÿ$XÐàA„ .dØÐáCˆ%N¤àÀ)R¤H‘"EŠ)R¤ÿH‘"EŠ)R¤H‘"EŠ)R¤H‘"Å…ì( H‘"EŠ)R¤H‘"EŠ8p€"EŠ)R¤XEŠ)R¤H‘"EŠ)Rl€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ  (EŠ ²cÈŽ"EŠ)R¤H‘"E…8@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R\ÈŽ"Š)R¤H‘"EŠ)R¤XÀ(R¤H‘"EŠP¤H‘"EŠ)R¤H‘"ņ(R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ(¢ˆ"Š(*ÿ ÿ H°à@vìØ±3hРAƒ 4hÐà?v ²øOà@‚ D˜PáB† >„QâDŠÿ8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VüÇŽ"€Š+V¬X±bÅŠ+VlàÀ+V¬X±âD+V¬X±bÅŠ+V¬X@ÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠT¬X±bÅŠ+V¬X±bÅŠ8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VüÇŽ"€Õ Hà? 4xaB…ÿ 6tøbD‰)V¬àÀ-Z´hÑbC-Z´hÑ¢E‹-Z´˜€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŇT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâÅ‹8€#FŒ1bĈ#FŒ1bĈ#FŒ1bĈãAv TžÀÕü'p Á‚ ø€@ÿþøOà@‚ ¡@ÿ H° Áƒ*\Ȱ¡Ã‡#J<àÀ'Nœ8qâD†&Nœ8qâĉ'Nœ8qâă&Nœ8qâĉ'Nÿœ8qâĉ'Nœ8qâĉ'Nœ8q¢CÕ„'p @uÿ H°`AvÙ4ÈΠ@v ²øOà@‚ D˜PáB† >„QâDŠ8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹->dGÀ@uá (PÀ,  € þP°`Á‚ `Aþ8`Aƒ&T¸aC‡!F”hÀ&Nœ8qâĉ Lœ8qâĉ'Nœ8qâĉLœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâD‡ªƒOÿ„Q¢A˜8qâĉ'20qâĉ'Nœ8qâĉ'0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ¨@uÂSðŸÀ d'»ì dgð;ƒÙü'p Á‚ÿ"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²£` :xÕ OÀ` € ð€àø`àÀü'p Á‚"L¨p!ÆBŒ(Ñ €Lœ8qâĉ˜8qâĉ'Nœ8qâĉ ˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ Tž:xðÔÁƒ§Î ;vìØ dÇŽ@vìþ±ûÇN »ìرÿÈŽ;vÙ±c'Cv'Nœ8qâĉ'Nœ¸À&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'd7ñ€êàT'p „(À"FŒ1bĈøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžDIÀ@uð੃O„(À"FŒ1bĈˆ1bĈ#FŒ1ÿbĈ#B1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒñ €êÂ8P :€ÿ d'@vÿØ d÷@vÙ d÷Ý@vÙ d÷@vÙýc7Ý?vÙ 8p ;€ÿ$XÐàA„ .dØÐáCˆ%N¤ØÀ*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅì(PÀþ8øà@ €ø`à?0€@þø@ €` ü0ð€ÿüðÀ?ÿ €@ü'p Á‚"L¨p!ÆBàÀ#FŒ1bĈDŒ1bĈ#FŒ1bĈ!ˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒxÀ@€ê$ðŸ@ì²ÈN ;vìØýc7@vìØ dÇŽ»ÿرc'Ý@vìØ±ÈŽ;ì²ÈN ;ì²øOà@‚ D˜PáB† >„QâDŠ 8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VüÇŽ"€Š+Vÿ¬ˆC+V¬X±"C¨X±bÅŠ%¨X±bÅŠ+V¬X±bʼn*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬ø@ÅŠ²cÈ®bÅŠ+V¬X±bņ8P±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+þcG@ÅŠ+VL@!€Š+V¬X±!€T¬X±bÅŠT¬X±bÅŠ+V¬X±âD+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+Vü ÿ H° Áƒ*\¨Bv 2dÈ!C† 2dÈ!Cÿ† "pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽüÇŽ"’$I’$I’dC I’$I$I’$I’$ɉH’$I’$I’$I’$I’$I’$I’$I’$IbpàÀ’$I’$I’$I’$I’$I’$I’ÙQ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-ZdÀ¢E‹-Z´hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´(À@€ê$ðŸÀ <ˆ0¡Â… ÿ:|1¢Ä‰+Z¼xÀ0bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1b<ÈŽ"€êÂ8P :€ÿðÀÀÿ8pàÀ 0pàÀ0pàÀþ0pàÀþ8`Aƒ&T¸aC‡!F<àÀ%J”(Q¢D‰$J”(Q¢D‰%J”(Q¢D‰$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰  TžÀÕü'p Á‚Ù4ÈŽ;ƒ ²ûÇî@vü'p Á‚Ù$Èà? 4xÿaB… 6tøbD‰8pàEŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤Hq!;ŠªƒO„QâĆ8@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R\ÈŽ"€êàÁSž:xðÔ À? €@0À?ü0À? €@ü €@ P¤H‘"EŠ'8pÿàEŠ)R¤H‘ Š)R¤H‘"EŠ)R¤¨EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)&0PdÇEŠ)R¤H‘"EŠ8p€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤¸E)R¤Ø€B)R¤H‘"EŠ8@‘"EŠ)R€"EŠ)R¤H‘"EÿŠ)*@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠQDEQDE à? 4xaB… 6,ÈN!;‡:tèСC‡:tè!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )rä?v$I’$I’$8pàI’$G I’$I’$I’$I’$I’$I’$I’$I’$I6@’$I’$I’$‰ÀH’$I’$I’$I’$I’$I’$INdGÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+VpàÀ‹-Zÿ´hq!‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´h± €Õ Hà? 4xaB… 6tøbD‰)V´xñ"€`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bÄxEÕ„'p @uÿ à€þ0pàÀ(à? 4xð„ü'p Á‚"L¨p!ÆBŒ(ñ€Lœ8qâĉøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžDYÿÀ@uá (PÀ,HAƒìر3hÐ »ìþd'P À,hA‚ìþ8`Aƒ&T¸aC‡!F”8Ñ!€P¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"Eв£` :xðÔÁƒ§„QâDŠ-^ĘQãFŽ=~RäÈì( I’$I’$I6pàÀ’$IŽ@’$I’$I’Œ€$I’$I’$I’$I’$I’$ùI’$I’$I’$F I’$I’$I’$I’$I’$I’$9‘Eª8 À,hð „ 2lèð!Ĉ'R¬XÀ,Z´hѢŅ,Z´hÑ¢E‹-Z´h‘ ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8p#FŒÿ1bĈ#FŒ1bĈ#FŒ1bĈ#ƃì(¨ <ªøOà@‚ ²cÇŽAƒ ÈN ÀÿØü'p Á‚d‡P ;€ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒñ €ˆ#FŒ1bĈ#FŒ1bC#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ¨ <ªøOà@‚ ²3X ;ÿýc÷ïß¿ìþ8ð@vü'p Á‚Ù dg ;€ÿ$XÐàA„ .dØÐáCˆ%N”ÿàÀ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"Å…ì(¨„¨À"FŒ1bĈˆ1bĈ#FŒ1bĈ#61bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒq!€êàT'p „¨À"FŒ1bĈˆ1bĈ#FŒ1bĈ#21bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ‘!€êÂ8P :€ÿ d'@vÿØ d÷@vÙ d7ÝÀìþ±Èî»ìþ±8Ý@vÿØ d÷Ý@vÿØýc7pàÀìþ8`Aƒ&T¸aC‡!F”81"€P¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠÿ)R¤H‘"Eв£` @uøOà@vìØ±ÈŽ»ì²cÇŽÝ@vìþ±ûÇN »ìرÈn ;ìþd'Pà¿ìþýøï»ÿØýûÇîß¿ÿþ±û÷ï»ÿØýc÷ï»ÿØýûÇîß¿ìþ8`Aƒ&T¸aC‡!*pàÀˆ#FŒ1bă"FŒ1bĈ#FŒ1bĈ DŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Fd` @uøO @vÙ d';vìþ±ÈN ;vìþc7ð;ìþ±ÿÈŽ;ìüÇŽ;vÿØ d';vÙýc'@vÙ dðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤¸E²£H‘"Eì²£H‘"EŠ)pàÀŠ)R¤H‘¢@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(-H™2!;†ìR¦L™2¥@H™2eÊ”)S¦L™2eÊ”)SBdG€DvìØ±K™R ;…ìR¦L‰ÀR¦L9@ÿÊ”)S¦L™2eÊ”)S¦L™2eÊ”)SZ2¥Bv Ù¥L™2eÊ82eÊ”)S¦L™2eÊ”)S¦„ÈŽ"€”)S¦L™r"€¤L™r"€”)S¦L™2eÊ”)S¦L™2eÊ”)S¦´ eÊ”)S¦L™ÀR¦L™2eÊ”)S¦L™2eÊ”ÙQ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-ZTÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z4` @uøOà@‚ D˜PáB† ÿ>„QâDŠ-^¼àÀ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1dGÀ@uá (PÀ,XAƒÙ±cÇΠAƒÙ$Èà? 4xaB… 6tøbD‰8p`âĉ'Nœ˜À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$J‹ªOà@êþ8ðŸ‚$H A‚ÿ (€à? $HðŸ$øO€@øOà@‚ D˜° …*T¨P¡B… *Tÿ¨P¡BøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäÈì(¨„QâDŠ-^ĘQãFŽ=~²!€êàT'p „8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9ò;ŠªOà@êþÿ(Ý@vÿØ d÷@vÙ d7Ý?vÙ üÇî»ìþ±ÈŽÝ?vÙýc'ÝÀ²øOà@‚ D˜PáB† >„Q"A˜8qâĉ'&0qâĉ'Nœ8qâĉ'þ0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'0P@x T÷ïß¿þ(PÀ?ü PÀ?0PÀ?üðO€@ P€@ü PÀ@ÿ0P€ ðOÀ?ÿ ø'` € (àŸ€þ (àÿŸ€þ (àŸ€þ (`àÀü'p Á‚"L¨p!ÆBàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠùEª8 À²cÇŽ@vìØ d÷Ý@vÙ±c'Ý@vìØ±ÈŽ»ìØýc÷Ý@vÙýc'@vÙ dðŸÀ <ˆ0¡Â… :|1¢D‚80qâĉ'NL`âĉ'Nœ8qâĉ'Nü`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'N$` @uÿü÷ïß?ÿ (àŸ  ` €  @€@ ðO€€ 0P€ @€@ðOÀ@þ ø'@   @€@ðO€  @ €  @ € ø'@  (à? 4xaB… 6tøâ@øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäÈì(°ÈŽdDv Ù‘$I’äG I’¤H$I’$I’$ɇH’$I’$I’$I’$I’$I’"ÿ$IR¢ I’äG I’$I’$I’$I’$I’$I’$9‘EÙ±cÇŽäDv Ù‘$I’$H I’¤H$I’$I’$ɇH’$I’$I’$I’$I’$I’"$IR¢€ I’$H I’$I’$I’$I’$I’$I’$9‘E$I’$I’$Ɇ8@’$I‘H’$I’$I’$I’$I’$I’$I’$I’$GðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ‘!€d̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f4ÈŽÿ"€Õ Hà? 4xaB… 6tøbD‰)V¬àÀ-Z´hÑ¢B-Z´hÑ¢E‹-Z´(€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8p#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#ƃì(¨ <ªøOà@‚ ²cÇÎà@vÙ±cÇΠAƒ²ûÇΠA‚ì dðŸÀ <ˆ0¡Â… :|ñ!€DŒ1bĈ#1bĈÿ#FŒ1bĈ#F\ bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1¢CÕ„'p @uÿ Hð€‚ P° €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbA¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢Bv Tž:xðÔÁƒ§.";ì²CÈ® ;‚ì²[È첻xñâÅ‹8pàÀÅ‹/^¼HÀÅ‹/^¼xñâÅ‹¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼` :xðà©ÿS„QâDŠ-pàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿ/^¼xñâÅ‹/*dGÀ@uð੃O„QâDŠ-pàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/*dG€Ev/^LÈŽ!»‹/^¼x‘!€\¼xñâÅ‹\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢C%`àâÅ‹/^¼xñâÅ‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ ÙQ ‘;vì.^¼¸Bv/^¼xñbC¸xñâÅ‹ ¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿ/^¼xñâE‡.N ÀÅ‹/^¼è¢‹.ºè¢‚pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽüÇŽ"’$I’$I’dC I’dH$I’$I’$I’$I’$I’$I’$I’$I’$ɇH’$I’$I’$18pàI’$I’$I’$I’$I’$I’$ɉì(PÀþ8`Aƒ&T¸aC‡!F”8‘bÅŠ8`Ñ¢E‹-&`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-ÿ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/^pàÀŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ²£` :€ð¨à?ü'p Á‚"Lø*T@!… *T¨P¡B… *T¨P!AP¨P¡B… *T¨P¡B… ÿøOà@‚ D˜PáB† >„QâDŠ-6pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ€êÂ8P :€ÿ$XÐà@ÿdGÀ@uðª8ž:€ÿ$XÐàA„ @¡Bÿ…P(€B… *T¨P¡B… *T¨p €(T¨P¡B… *T¨P¡B…ÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼(À@uðàÁS§„À"FŒ1bĈ ˆ1bĈ#FŒ1bĈ#*1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ"€êÂ8P :€ÿ 0À?ü0À?ü0À?ø@ €þ8pà@ÿ H° Áƒ*\Ȱ¡Ãÿ‡#JœH±bA°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŇì(PÀþ(À?€@ €@€@ ðÀ? €@ð€@0À,hð „ 2lèð!Ĉ81bĈ#FŒX@Ĉ#FŒ1bĈ#FŒQ!€ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ ¨Nà@‚ÿ €` €ÿøà€@ à? 4xaB… 6tøbD‰)V,àÀ-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´øE-Z´¨C-Z´hÑbE°hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-`Ñâ?0`Ñ¢E‹-Z´hÑ"D°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŇì(°hѢҰhÑ¢E‹-8pÿà€E‹-Z´˜€E‹-Z´hÑ¢E‹-°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ ‹À,8€A‚þ8`Aƒ&T¸aC‡!F”8‘bEƒ8`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙQ`Ñ¢E‹-Z´hÑ¢E‹ÿ8pÀ¢E‹-ZLÀ¢E‹-Z´hÑ¢E‹X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´h€E‹-Z´hÑ¢E‹-Z´HÀ,Z´hÑ¢E‹-Z´hÑ¢Eÿ‹-Z´hÑ¢E‹-Z´hñ!;ŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤X±"€X´hÑ¢E‹ X´hÑ¢E‹-Z´hÑ"‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹/8pàFŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÙQ0P@x TðŸ@þ8`Aƒ&Ð $Lh@Â&L˜0a„ &L˜0a„ ÿ8pà@„ ÿ&L˜0a„ &L˜Ð €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâB/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹¨ <ªøOà@‚ ²cÇŽAƒÙ4HAƒÙ$Èà? 4xaB… 6tøbD‰) pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬Xñ;ŠªƒO„QâDŠÿ8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VüÇŽ"€êàÁSž:xðÔÿðÀ@ÿ @Að@Aü €@ €Aü0À?ü C+V¬X±¢D¨X±bÅŠ¨X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V` :xðà©SP±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬8@Åì*V¬øCv+V¬X±bÅŠ+þpàÀŠ+V¬X±bÅŠ+V¬Xÿ±bÅŠ+V¬X±bÅŠ+V¬Xñ;Š*V¬X±â@ T¬X±bÅŠ8p bÅŠ+V| bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬XÑ@øOà@‚²cÇŽAƒ 4hРAƒÙ$Èà? 4xaB… 6tøbD‰) pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬Xñ;Š*V¬X±bÅŠ+V¬X±!€T¬X±bÅŠT¬X±bÅŠ+V¬X±âB+V¬X±bÅŠ+ÿV¬X±bÅŠ+V¬X±bÅŠ+Vd bÅŠ+V¬X±bÅŠ+V”àÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±â?v ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±bE°hÑ¢E‹°hÑ¢E‹-Z´hÑ"E-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-"0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/^pàÀŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ²£` :€ð¨ÿà?Ù @ÿØü'p Áì dðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"EŠ)R¤€"EŠ)R¤H‘"EŠ)@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ TžÀÕü'p Á‚Ù,ÈÎ`Avÿ²(à? 4x¡Av ÿ±øOà@‚ D˜PáB† >„QâD‚8@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R\ÈŽ"€êàÁSž:xðÔ1d÷@v ÙQ¤H‘"EÿŠ)R¤xÀ(R¤H‘"EŠ(R¤H‘"EŠ)R¤H‘â@)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤HÀ@uðàÁS§„QâDŠÿ 8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹->dGÀ@uð੃O„QâDŠ 8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹->dGÀ@€ê$ðŸ@ì²ÈŽ;ì²Èî»ìØýc7P ;ìØ±c7;vÙ d'Ý?vÙ±c'Ý?vÙ±c'@vÙ d'Ý@vÿ H° Áƒ*\Ȱ¡Ã‡#þpàÀ‰%J”(Q¢Cÿ H° Áƒ*\Ȱÿ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(1PÀþ8;vì²cÇn »ìþc7;vìþ±ÈN ;ìØ±ÈN ;ì²Èà? 4xaB… 6tøbD‰)V4àÀ-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´øE-Z´˜Cv-Z´hÑ¢E°hÑ¢E‹°hÑ¢E‹-Z´hÑâD-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-*`‘Eˆì²³hÑ¢E‹-Z´h1"€ÿX´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâCvX´hÑ¢Bv ÙY´hÑ¢E‹ÿ8pà€E‹-Z´ˆ€E‹-Z´hÑ¢E‹'°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hQ!‰ìرcðŸÀ <ˆ »„ÿØü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²£À¢E‹-Z´hÑ¢E‹ÿ8pà€E‹-Z´ˆ€E‹-Z´hÑ¢E‹%°hÑ¢E‹-Zÿ´hÑ¢E‹-Z´hÑ¢E‹-Z´hq!‹-Z´hÑ¢E‹-Z´h‘ €X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâCv ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±bE°hÑ¢E‹°hÑ¢E‹-Z´hÑ¢D-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-.0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/^pàÀŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ²£` :€ð¨ÿà? 4HÝAì ²cÇîàÁƒÙ$Èîà@vÿ H° Áƒ*\Ȱ¡Ã‡#"pàÀ‰%J”(Q¢C%J”(Q¢D‰%J”(Q"B%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ TžÀÕü'p Á‚Ù±cgÐà@vÿ±3XÁ‚ì²3HÀ,hð „ 2lèð!Ĉ'RàÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±â?v Tž:xðÔÁƒ§®â?vÙ%dGÝ@vÿÿ±SÈŽ!»Š+V¬X±bC¨X±bÅŠ¨X±bÅŠ+V¬X±bE„*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬À@uðàÁS§„ñ €H”(Q¢D‰(Q¢D‰%J”(Q¢D‰(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J<` :xðà©S„Q"D˜8qâĉ'ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰Ò!…ªƒž:uðàÁSW@vÙd7@vìØ±ûÇn »ìþd'Pà?vÿþýc÷ÀÈà? 4xaB… 6tøbD‰)VàÀÿ`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙQ0P„QâDŠ-^ĘQãFŽ=~RäEvŒôÈN!»‘#GŽÙÀFŽ)ÀÈ‘#GŽ9²!€‘#GŽ9räÈ‘#GŽ9räȇðŸ@ü'p Á‚"L¨P!;…ì.\¸páÂ… .\¸páÂ… .\¸p!Aÿø€ €ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤ÈŠì(9räÈ‘#GRpàÀ‘#GŠ0räÈ‘#GŽl`äÈ‘#GŽ9räÈ‘#GŽ9Ò!@ü'P ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ?@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!ERdGÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+VpàÀ‹-Z´hñ ‹-ÿZ´hÑ¢E‹-B`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâ?€ ª8 À,hð „ 2lèð!Ĉ'R¬hñâEà€ƒðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‰ì(¨ <ªøOà@‚€ €‚üP°à@ øOà@‚ D˜PáB† >„QbD˜8qâĉ'0qâĉ'Nœ8qâĉ˜8qâĉ'Nœ8qâĉ'Nœ8ÿqâĉ'Nœ8qâĉÿ P ÀÀ@uá (PÀ,H þ8 A,ø€@ øOà@‚ D˜PáB† >„QâDŠ8p@ (à? 4xaB… 6tøbD‰)V´xcF9vôødH‘ÙQ0P„QâDŠ8p€"@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r!;ŠªƒO„QâDŠ8pà€E…ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2dHv T :á©øOà@‚ DH@„ À €„  á@ &L˜0a„ &L˜0!€$L˜0a„ &L˜0a„ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%Mž €@ÿ H° Áƒÿ T„QâDŠ-^ĘQãFŽ=~²#;ŠªƒPÀðÔü'P øÀ¿þýðÀ¿ÿüûà€ÿ üà? ð€@(ð€ÿþøàß?ÿ à@þðï€ÿÿü(ð€ÿþøàß?ÿ HP €ÿ$XÐàA„ .dØÐáCƒ8"Dˆ!B„¨Dˆ!B„"Dˆ!B„â?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç - P À,hð`AÕÁƒO:xðà©3` @þðï€ÿüðïß¿þø÷À¿þ øÀà? 4xaB… 6tøbD‰)V<àÀ P À,hð „ 2lèð!Ĉ'R¬hÿñ"ÆŒ7rìèñ#ÈÙQ0P„QâDŠ-^ĘQãFŽ=~r#;ŠªOà@êþ(€@ü €@ÿ 0À@ü0ð€ð€@ ðÀ@ÿ0p €ø@ þà€þ`àÀü'p Á‚"L¨p!ÆpàÀˆ!B„"D… B„"Dˆ!B„"DˆÿøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~I þ8`Aƒ¨ <ªøO @ÿü0À? @ €þ@ €ø`àÀü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢D€ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~2#;ŠT'p A€ÿ 0 €@ ü`à? €üð€@ À@ü@ Àÿüû7ðß?ÿþø÷À¿ÿýðïß?ÿþøàß?ÿþø÷À¿ÿü'p Á‚"L¨p!ÆpÿàÀˆ!B„"D… B„"Dˆ!B„"Dˆü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚œ€@ÿ H° ÁƒÿPÀþ8€à€ÿ €@ @ øOà@‚ D˜PáB† >„QâDŠ8pà€Å‰ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2$Fvˆ)ò"†DЉÀDŠ)R ‘"EŠ)R¤Dÿ"EŠ)R¤H‘"EŠ)R¤H‘(à? 4x¡@ &L˜0¡A øOà@‚ D˜PáB† >„QâDŠ8pà€EŠðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2äEvˆ)#…DŠ™ÀDŠ)R ‘"EŠ)R¤D"EŠ)R¤H‘"EŠ)R¤H‘ÿ(à? 4xá@ &L˜0áA ÿøOà@‚ D˜PáB† >„QâDŠ8pà€E‹ðŸÀ ÿ<ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2dEvˆ)R¤H‘"78pà€H‘"E  R¤H‘"EŠ”@¤H‘"EŠ)R¤H‘"EŠ)D R¤H‘"EŠ)Ò €ˆ\€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CRdGÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+VpàÀ‹-Z´hÑ ‹-Z´hÑ¢E‹-:`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´è þ8ÿ`Aƒ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/^pàÀŒ(à? 4xaB… 6tøbD‰)V´xcF9vôødȉì(¨ <ªøOà@‚ ü"4¡@ÿ H° Áƒ*\Ȱ¡Ã‡#J4àÀ'Nœ8qâÄ‚&Nœ8qâĉ'Nœ8qbB'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ˜ þ8`Aƒ0P@x TðŸÀ @€Aÿƒ ` €ÿ$XÐàA„ .dØÐáCˆ%N¤XQ!€X´H,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z<ÈŽ"€êàÁSž:xðÔY@ ‚, C-Z´hÑ¢E‹8`Ñ¢E‹-`Ñ¢E‹-Z´hÑ¢E‡,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ P À,hð B„ªƒž:uðàÁS—ð p €ƒðŸÀ <ˆ0¡Â… :|1¢Ä‰+&pàÀ‹ ÿ P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#ÈÙQ0P<€ê„§à? 4H€@<(€@ øOà@‚ D˜PáB† >„QbA˜8qâĉ'0qâĉ'Nœ8qâĉ˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâă0q"BÕÁƒO:xð੃@ 0pC'Nœ8qâĉ'NœÈÀ&Nd€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœHÿ±¢Å‹3jÜȱ£Ç C>dGÀ@uð੃O„QâDŠ8pà€E‹ (à? 4xaB… ÿ6tøbD‰)V´xcF9vôødH†ì(¨@uÂSðŸ@ Pà¿þýû7Pà?ÿþøOà@ü €@€ üàß¿þø÷Àà? 4xaB… 6tøbD‰8p`âĉ'NœXÀĉ'Nœ8qâĉ'ND`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ  P À,hð „ T„QâDŠ-^ĘQãFŽ=~ ’EÕÁ¨Nà@xêþ8`Aƒ ÀA‚<8€@ øOà@‚ D˜PáB† >„Ñ!€ÿH”(Q¢D‰øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%Mž@ @€ÿ$XÐàA„ *x@à@‚ D˜PáB† >„QâDŠ-^Äèà? 4xaB… ÿ P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#Èì(¨„QâDŠ-^ĘQãFŽ=~¹‘EÕÁƒ§üÀ B„"Dˆ!B„h þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA>dGÀ@uðª8ž:€ÿ$Xð 4hÐ 0hРÁ0hÀ,hð „ 2lèð!Ä…81bĈ#FŒø@Ĉ#FŒ1bĈ#FŒø@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#F„€@ÿ H° Áƒ*\Ȱ¡Ã‡# À@(Q¢Dÿ‰€Àþ8`Aƒ&T¸aC‡!F”¸ þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA:dGÀ@uð੃OpàÀ!C†, dÈ!C† i@È!C† 2dÈ!C† ’!@ü'p Á‚"L¨p!ÆBŒ8 Q¢D‰%*!$J”(Q¢D‰%J,ÿ€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç ²£` :xÕ OÀ€@ÿüûà? ð€@(ð€ÿþøàß?ÿ à@þðï€ÿü(ð€ÿþøàß?ÿ HP €ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒñ€ˆ#FŒ1bĈ#FŒñ!€ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÈ þ8`Aƒ&T¸aCÿ‡!F,‰%J”(Q"CH”(Q¢D‰%J”h þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA*dGÀ@uð੃O„Ñ $J”(Q¢D‰ ÿQ¢D‰%J”(Q"B(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ÙI` @uøOà@` 0€þ` @ €øï€ÿþûàß?ÿþø÷oà¿þýûàß?ÿüûàß?ÿþø÷ï€ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,i"œ„QâDŠ-^ĘQãFŽ=~iE!C†,€!€!C†|àÀ!C† I@È!C† 2dÈ!C† 2dÈ!C† Ù þ8`Aƒ&T¸aC‡!FD‰%J”(QâC(Q¢D‰%J”(1!@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚,ÈŽ"€!C @È!CBpàÀ!C†$ dÈ!C† 2dÈ!C† 2dÈ!Cÿ†ä€@ÿ H° Áƒ*\Ȱ¡Ã‡#&€D‰%J”("$J”(Q¢D‰%JT€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç ²£ dÈ!C† ò€„ 2$A!C† 2dÈ!C† 2dÈ!C† 2äF€ øOà@‚ D˜PáB† >„1!H”(Q¢D‰!@¢D‰%J”(Q¢D†ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;züR ;ŠT'ÿp A€ÿ$XÐàA„ .dØÐáCˆ%N¤X±"€X´hÑ¢E‹X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´H,Z´hÑ¢E‹ `Ñ¢E‹-.‹-Z´hÑ¢EˆðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;züò;ŠªOà@êþ8`A‚`РÁ‚ ðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"EŠ)R„€"EŠ)R¤H‘"EŠ)R¤H‘"EÿŠ)R¤H‘"EŠ)R¤H‘"EŠ)*@ @€ÿ$XÐàA„ .dØÐáCˆ€D‰%J”(Q"$J”(Q¢D‰%Jl€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç ÙQ0P@ @€ÿ$XÐàA„ .dØÐáCˆ@¢D‰%J”(ñ$J”(Q¢D‰%J|€@ÿÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇÙQ0P<€ê„§à? ü@ ‚ 4(€Aƒþ8`Aƒ&T¸aC‡!F”8q €P¤H‘"EŠP¤H‘"EŠ)R¤H‘bC)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ(à? 4xaB… 6tøbD† Q¢D‰%J”ø%J”(Q¢D‰%B@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãÇŽì(¨ÿ„Ñ!$J”(Q¢D‰€D‰%J”(Q¢D‰(à? 4xaB… 6tøbD‰)V´xcF9vôø‘#;ŠªƒO„QâDŠ-^ĘQãFŽ=~ÄÈŽ"€êÂ8P :€ÿ  À?ü À@ ðÀ@ÿ ðÀÀøOà@‚ D˜PáB† >„QâÄ8@‘"EŠ)B@‘"EŠ)R¤H‘"EŠ P¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)"@ @€ÿ$XÐàA„ .dØÐáCˆ#€D‰%J”(QbAH”(Q¢D‰%J”(Q @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇÿŽ?^dGÀ@€ê$ðŸÀ À@ÿ` @0€@ €@ ðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"EŠ)R„€"EŠ)R¤H‘"EŠ H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R<€@ÿ H° Áƒ*\Ȱ¡Ã‡#J€D‰%J”(Q¢AH”(Q¢D‰%J”(‘ @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?VdGH $H ÿÿ8pàH A"$H A‚ä$H A‚ $H A‚i þ8`Aƒ&T¸aC‡!F”%J”(Q¢D‰@¢D‰%J”(Q¢D‰(à? 4xaB… 6tøbD‰)V´xcF9vôø‘";Š@n H A‚)À@‚ ! A‚ $G A‚ $H A‚ $H‚ðŸÀ <ˆ0¡Â… :|1¢D˜8qâĉ'NÀĉ'Nœ8qâĉ (ÿà? 4xaB… 6tøbD‰)V´xcF9vôøq";Š@‚ $H 8pàH A"$H A‚ä$H A‚ $H A‚9 þ8`Aƒ&T¸aC‡!F”8'Nœ8qâĉ˜8qâĉ'Nœ8ñ!@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?FdGÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+VpàÀ‹-Z´h‘ ‹-Z´hÑ¢E‹-*`Ñ¢Eÿ‹-Z´hÑ¢E‹-Z´hÑ¢E‹) P À,hð „ 2lèð!ĈÀĉ'Nœ8q"Lœ8qâĉ'Nœø þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cG!²£` :€ð¨à? PÀ? ,8@Á‚P°`Á‚ þP° €ÿ$XÐàA„ .dØÐáCˆ8p bĈ#FŒ@Ĉ#FŒ1bĈ#FŒØ@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#ÿ€ˆ#FŒ1bĈ  bĈ#FŒ1â?DŒ1bĈ#FŒ1¢@€ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~|ÈŽ"€êàÁƒ§N„QâDŠ-^ĘQãFŽ=~dÈŽ"€êàT'p „QâBÿ˜8qâĉ'N<€‰'Nœ8qâĉ'@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG‚ì( äC € $C $H„@‚ $H A‚ $H A‚ $H‰ðŸÀ <ˆ0¡Â… :|1¢D†˜8qâĉ'ND'Nœ8qâĉ'N4€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇÙQ$Hˆ $Ȇ8$Hÿ€ $H A‚ $H A‚ $H(à? 4xaB… 6tøbD‰ `âĉ'Nœ81!&Nœ8qâĉ'Nœx þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cG²£$H A‚ 2!€€ äA A‚ $H A‚ $H A‚ dD $H$H $H A‚Ô A‚ $H A‚ $Ȉì(PÀþ8`Aƒ&T¸ÿaC‡!F”8‘bÅŠ8`Ñ¢E‹-`Ñ¢E‹-Z´hѢń,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbA€ øOà@‚ D˜PáB† >„QâCLœ8qâĉ'*€‰'Nœ8qâĉ'&@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑ£Gv TžÀÕü'p Á‚ ø€@ÿ H°à?€ ü÷À,hðà@øOà@‚ D˜PáB† >„‘ €H”(Q¢Dÿ‰(Q¢D‰%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J„€@ÿ H° Áƒ*\Ȱ¡Ã‡#J|'Nœ8qâĉ 0qâĉ'Nœ8qâD…ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zìÈŽ"€êàÁƒ§N„QâDÿŠ-^ĘQãFŽ=fdGÀ@uðª8ž:€ÿà€þ` ‚ø@ €À@ÿ ð€@ü0À?ø@ ‚ øOà@‚ D˜PáB† >„q €H”(Q¢D‰(Q¢D‰%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%Jd€@ÿ H° Áƒ*\Ȱ¡Ã‡#J”'Nœ8qâĉ0qâĉ'Nœ8qâD‡ðŸÀ <ˆ0¡Â… ÿ:|1¢Ä‰+Z¼ˆ1£Æ;zÄÈŽ"€êàÁƒ§N„q €H”(Q¢D‰(Q¢D‰%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%JD€@ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ((R¤H‘"EŠ€"EŠ)R¤H‘"EŠ(à? 4xaB… 6tøbD‰)V´xcF9vôH‘Eÿª8 À€@ € ð ÿýðïßÀÿüûàß?ÿþ ü÷À¿ÿüûà€ÿüûàß?ÿþýðŸÀ <ˆ0¡Â… :|1â@(Q¢D‰%& Q¢D‰%J”(Q¢D‰!(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”x þ8`Aƒ&T¸aC‡!F”8q (R¤H‘"EŠ€"EŠ)R¤H‘"EŠ€"EŠ)R¤H‘"EŠ)R¤Hÿ‘"EŠ)R¤H‘ ;Š(R¤Hñ!†(R¤H‘"EŠ8p€"EŠ)R|€"EŠ)R¤H‘"EŠ H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ P À,hð „ 2lèð!Ĉ'Š)R¤H‘"Å„@‘"EŠ)R¤H‘"E„ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zŒÈŽ"€? ÀÇ?~àÀ?~ü¸ÀÇ?~üøñ£@?~üøñãÇ?~üøñ#E€ øOà@ÿ‚ D˜PáB† >„QâÄ‚ H‘"EŠ)R\Š)R¤H‘"EŠ)&@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑ#Dv|üøñãÇ?FpàÀ?~\àãÇ?~üøQ €?~üøñãÇ?~üøq"@ü'p Á‚"L¨p!ÆBŒ(qbA H‘"EŠ)R\Š)R¤H‘"EŠ)*@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãCv ¨Nà@‚ÿÿ H° Áƒ*\Ȱ¡Ã‡#JœH±bE°hÑ¢E‹°hÑ¢E‹-Z´hÑâA-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´Ø,Z´hÑ¢E‹+À¢E‹-Z´(,Z´hÑ¢E‹-Z\€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç†ì(¨ <ªøOà@8pàÀ0p @øOà@‚ ðOÀA‚ðŸÀ <ˆ0¡Â… :|1"€DŒ1bĈ!ˆÿ1bĈ#FŒ1bĈˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1!@ü'p Á‚"L¨p!ÆBŒ(q"BP¤H‘"EŠ)6EŠ)R¤H‘"EŠ P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìè‘!;Šªƒž:uðàÁSWPAÐPÀBÿ(ÀPÀÇ?rpàÀ?~\àãÇ?~üøñ€?~üøñãÇ?~üø"@ü'p Á‚"L¨p!ÆBŒ(q"Bÿ H‘"EŠ)RlŠ)R¤H‘"EŠ)6@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãBv T„QâDŠ-^ĘQãFŽ=~RäH’(à? 4xaB… 6tøbD‰€"EŠ)R¤H"(R¤H‘"EŠ)R¤ þ8`Aƒ&T¸aCÿ‡!F”8‘bE‹1fÔ¸‘cGÙQ0P„À"FŒ1bĈü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$ÉŽðŸÀ <ˆ0¡Â… :|1¢Ä‰ €"EŠ)R¤H"(R¤H‘"EŠ)R¤( ÿþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGÙQ0P„À"FŒ1bĈü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$IðŸÀ <ˆ0¡Â… :|1¢Ä‰@‘"EŠ)R¤()R¤H‘"EŠ)Rœ€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Çÿì(PÀþ8P€ÿ  @€@ @€@ @À@(@€ (àŸ€(àŸ(@  (` €ÿ$XÐàA„ .dØÐáCˆ8p bĈ#FŒÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’Ì€@ÿ H° Áƒ*\Ȱ¡Ã‡#Jœè(R¤H‘"EŠ%€"EŠ)R¤H‘"EŠÿEŠ)R¤H‘"EŠ)R¤H‘"EŠ)ÿR¤Hñ ;Š(R¤Hq¢†(R¤H‘"EŠ 8p€"EŠ)R|€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"E…ðŸÀ <ˆ0¡Â… :|1¢Ä‰@‘"EŠ)R¤8(R¤H‘"EŠ)R¤Hñ@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽÙQàÑ£G… ðèÑ£G8pÀ£GðèÑ£G=zDÀ£G=zôèÑ£G=z¤=zôèÑ£FðèÿÑ£GàÑ£G=zô( þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cÇŽì(ðèÑ£G=zÌàÀ=zôø€G=zôèÑ#B=zôèÑ£G=zôèÑ£D€ øOà@‚ D˜PáB† >„QâĈ H‘"EŠ)R¤ø)R¤H‘"EŠ)R¤8 þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGŽì(PÀþ8`Aƒ&T¸aC‡!F”8‘bÅŠ8`Ñ¢Eÿ‹- `Ñ¢E‹-Z´hѢŃ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´8 þ8`Aƒ&T¸aC‡!F”81"P¤H‘"EŠ)RüŠ)R¤H‘"EŠ)R,€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Fv TžÀÕü'P €ÿøÀÀÿü0pàÀÿ 8ð€ÿ$XÐàA„ .dØÐáCˆ%NDàÀ)R¤H‘¢C)R¤H‘"EŠ)R¤˜EŠ)R¤H‘"EŠ)ÿR¤H‘"EŠ)R„€@ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ()R¤H‘"EŠEŠ)R¤H‘"EŠ)@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØ1#;Šªƒž:uðàÁS÷€B0àÑ£G=FpàÀ=ztÀ£G=zôè1!=zôèÑ£G=zôèÑ!@ü'p Á‚"L¨p!ÆBŒ(q"EP¤H‘"EŠ)RŠ)R¤H‘"EŠ)R4€@ÿ Hÿ° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ#Fv T„QâDŠ@‘"EŠ)R¤Hq (R¤H‘"EŠ)R¤H!@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽÙQ0P<€ê„§à?üðþð€@ðÀ?ÿ8À,hð „ 2lèð!Ĉ'pàÀŠ)R¤HÑ!Š)R¤H‘"EŠ)RD€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)6@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤ø+V¬X±bÅŠ bÅŠ+V¬X±bÅŠ(à? 4xaB… 6tøbD‰)V´xcF9v¬ÈŽ"€êàT'p „QâDŠ-^ĘQãFŽ)²£` :xðà©S„QâDŠ-^ĘQãFŽ!²£` @uøO @ÿ ð€@ÿ€þø €@0À,hð „ 2lèð!Ĉ'pàÀŠ)R¤HÑ!Š)R¤H‘"EŠ)RD€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)Š)R¤H‘"EŠ!€"EŠ)R¤H‘"BP¤H‘"EŠ)R¤H‘bC€ øOà@‚ D˜ÿPáB† >„QâDŠ-^ĘQãF޲£À#F xôèÑ£G8pÀ£GðèÑ£G=zDÀ£G=zôèÑ£G=z,€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœHÑ T¬X±bÅŠ+R€Š+V¬X±bÅŠ+V€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱcCvxÌ@!=zôèQ"€xôèÑ£C=zôèÑ£GxôèÑ£G=zôèÑ£G(à? 4xaBÿ… 6tøbD‰)@ÅŠ+V¬X±bŨX±bÅŠ+V¬X±bÅðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;2dG€G=zôèÑcFðèÑ£G‡„QâDŠ-^ĘQãF޲£` :xðà©S€Š+V¬X±bÅŠP±bÅŠ+V¬X±bÅŠ (à? 4xaB… 6tøbD‰)V´xÿcF9rdGÀ@€ê$ðŸ@ì²c';vì dÇŽ@vÙ dÇŽ@vÙ d'Ý@vÿ H° Áƒ*\Ȱ¡Ã‡#Jœ¨À(R¤H‘"E‡(R¤H‘"EŠ)R¤HÑ Š)R¤H‘"EŠ)R¤H‘"EŠ)Rd€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH"*V¬X±bÅŠ+&@ÅŠ+V¬X±bÅŠ+:@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5n丑E-²cÈ®cÇŽ;vÔàÀÿ;vì(@ÇŽ;vìØ±£C;vìØ±cÇŽ;vìØ±cAèØ±cÇŽ;f@ÇŽ;vìˆ:vìØ±cÇŽ;@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5n䘑E/²SÈ®cÇŽ;vÜàÀ;vì(@ÇŽ;vìØ±£C;vìØ±cÇŽ;vìØ±ã@€ øOà@‚ D˜PáB† >„QâDŠ bÅŠ+V¬X±¢BT¬X±bÅŠ+V¬X±"D€ øOà@‚ D˜PáB† ÿ>„QâDŠ-^ĘQãFŽÙQбcÇŽ;vìØ‘ €tìØ±£D;vìØ±cÇŽtìØ±cÇŽ;vìØ±cÇŽ(à? 4xaB… 6tøbD‰)N@ÅŠ+V¬X±bÅ…¨X±bÅŠ+V¬X±bňðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ/²£` @uøOà@‚ D˜PáB† >„QâDŠ+8pà€E‹-Z´(€E‹-Z´hÑ¢E‹ °hÑ¢E‹-Z´hÑ¢E‹-Z´hÿq!@ü'p Á‚"L¨p!ÆBŒ(q"ʼnP±bÅŠ+V¬Xq!*V¬X±bÅŠ+V¬Xq"T¬X±bÅŠ+V¬X±bÅŠ+V¬X±"Bv TžÀÕü'p Á‚ ²;8À,hð „ 2lèð!Ĉ'R$àÀ+V¬X±"B+V¬X±bÅŠ+V| bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ bÅŠ+V¬X±bÅŠ¨X±bÅŠ+V¬È*V¬X±bÅŠ+V¬Xq"@ü'p Áÿ‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#GŠì(¨„QâÄ…8@‘"EŠ)6@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)RŒ€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B°hÑ¢E‹-Z´È,Z´hÑ¢E‹-Z´h‘"@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#Çì(¨„QâDŠÀ¢E‹-Z´hÑâC°hÑ¢E‹-Z´hÑ¢E‹ÿ(à? 4xaB… 6tøbD‰)V´xcF7²£` :xÕ OÀÿà€þü €@ÿ0pàÀþ8`Aƒ&T¸aC‡!F”8Q!€P¤H‘"EŠ P¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ P À,hð „ 2lèð!Ĉ'R¬è-Z´hÑ¢E‹!À¢E‹-Z´hÑ¢E‹- @ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nÔÈŽ"€êàÁƒ§N„QâDŠ%€E‹-Z´hѢʼn°hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z´hÑ¢Eì(°h!…,Z´hÑ¢E‹-pàÀ‹-Z´hñ‹-Z´hÑ¢E‹- `Ñ¢E‹-Z´hÿÑ¢E‹-Z´h± @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ`Ñ¢E‹-Z´h‘"X´hÑ¢E‹-Z´hÑ¢E„ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£ÆÙQÀ‘#GŽ9räȱ!€päÈ‘cE9räÈ‘#GŽpäÈ‘#GŽ9räÈ‘#G‡ðŸÀ <ˆ0¡Â… :|1¢Ä‰+R€E‹-Z´hѢŊ°hÑ¢E‹-Z´hÑ¢E‹ (à? 4xaB… 6tøbDÿ‰)V´xcF#²£€#GŽ9räÈ‘cCàÈ‘#ÇŠ8räÈ‘#GŽ'àÈ‘#GŽ9räÈ‘#GŽ€#GŽ9räÈ‘#päÈ‘#GŽ/€#GŽ9räÈ‘#GˆðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£ÆÙQ@à@‚ D˜PáB† >„QâDŠ-:ÀÅ‹/^¼xñâÅ‹/^@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5ndÈî"À,hð „ 2lèð!Äÿˆ'R¬hÑ!À,hð „ 2lèð!C!B„"Dˆ!B„"D‚ B„"Dˆ!B„"Dˆ!B„"Dˆ(à? 4xaB… 6tøbD‰)V´(.^¼xñâÅ‹/>€‹/^¼xñâÅ‹/^¼ø þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸Q!;Ž9rÜ€#GŽ9räÈ‘#G8räÈ‘#GŽ)àÈ‘#GŽ9räÈ‘#GŽ(à? 4xaB… 6tøbD‰)ÿV´8/^¼xñâÅ‹#àâÅ‹/^¼xñâÅ‹/ @ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nLÈŽ#GŽ7àÈ‘#GŽ9räÈQ Ž9räÈ‘#GŠ8räÈ‘#GŽ9räÈ‘£A€ øOà@‚ D˜PáB† >„QâDŠ-ÀÅ‹/^¼xñâň¸xñâÅ‹/^¼xñâÅ‹(à? 4xaB… 6tøbD‰)V´xcF²ãÈ‘#Ç8räÈ‘#GŽ9r€#GŽ9räÈÿ‘"Ž9räÈ‘#GŽ9räX8räÈ‘#GŽ9Ž9räÈ‘#GàÈ‘#GŽ9räÈñ"päÈ‘#GŽ9räÈ‘#ÇŠì8räÈq#Ž9räÈ‘#GŽàÈ‘#GŽ9r¤€#GŽ9räÈ‘#GŽ9@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑ¢A\¼xñâÅ‹/^œ€‹/^¼xñâÅ‹/^¼X þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸± ;Ž9rÜ€#GŽ9räÈ‘#Gÿ8räÈ‘#GŽ'àÈ‘#GŽ9räÈ‘#GŽ(à? 4xaB… 6tøbD‰)V´h.^¼xñâÅ‹/NÀÅ‹/^¼xñâÅ‹/^4€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜHGŽ9nÀ‘#GŽ9räÈ‘£@9räÈ‘#GŽpäÈ‘#GŽ9räÈ‘#GðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z<€‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹ P Àÿ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7dÇ‘#GŽpäÈ‘#GŽ9rä(GŽ9räÈ‘ãD9räÈ‘#GŽ9räÈñpäÈ‘#GŽ9rL9räÈ‘#GŽ€#GŽ9räÈ‘#ÇðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£ÆÿØqäÈ‘£F9räÈ‘#GŽ9À‘#GŽ9räÈ‘#GŽ9räÈ‘#GŽ' P À,hð „ 2lèð!Ĉ'R¬h1!.^¼xñâÅ‹/ZÿÀÅ‹/^¼xñâÅ‹/^L€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜÈnãÆ7°qãÆ7nܸqcC7nܸqãÆ7nܸqãÆ7nܸq#C€ øOà@‚ D˜PáB† >„QâDŠ-*ÀÅ‹/^¼xñâE‹¸xñâÅ‹/^¼xñâÅ‹ (à? 4xaB… 6tøbD‰)V´xcFÙmܸqãÆ6nܸqãÆ7nl`ãÆ7nܸqãÆ7nܸqãÆ7n\€@ÿÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…pñâÅ‹/^¼xÑ"\¼xñâÅ‹/^¼xñâÅ…ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£FŒì6nܸqã@7nܸqãÆ76°qãÆ7nܸqãÆ7nܸqãÆ7&@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑ"C\¼xñâÅ‹/^¼ø/^¼xñâÅ‹/^¼x‘!@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨ñ"»7ÿnÜ8ÀÆ7nܸqãÆ lܸqãÆ7nܸqãÆ7nܸqãÆ(à? 4xaB… 6tøbD‰)V´È.^¼xñâÅ‹/^ü€‹/^¼xñâÅ‹/^¼Ø þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔh‘ÝÆ7n`ãÆ7nܸqãÆ†6nܸqãÆ7nܸqãÆ7nܸqãÆƒðŸÀ <ˆ0¡Â… :|1¢Ä‰+Zl€‹/^¼xñâÅ‹ÀÅ‹/^¼xÿñâÅ‹/^t/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹.^¼xñâÅ‹/^¼xñ €‹/^¼xñâÅ‹¸xñâÅ‹/^¼xñâÅ‹/2€‹/^¼xñâÅ‹/:€‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/>@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5Nd·qãÆظqãÆ7nܸ±!€7nܸqãF6nܸqãÆ7nܸq#A€ øOà@‚ D˜PáB† >„QâDÿŠ->ÀÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹! P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ%²Û¸qãÆlܸqãÆ7nÜØÀÆ7nܸq£F7nܸqãÆ7nܸq @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ!àâÅ‹/^¼xñâE‚pñâÅ‹/^¼xñâÅ‹! P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ#²Û¸qãÆlܸqãÆ7nÜØÀÆ7ÿnܸq£F7nܸqãÆ7nܸQ @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ!ÀÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹% P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ²Û¸qãÆlܸqãÆ7nÜØÀÆ7nܸq£F7nܸqãÆ7nܸ þ8`Aƒ&T¸aC‡!F”8‘bE‹pñâÅ‹/^¼xñ¢A\¼xñâÅ‹/^¼xñâʼnðŸÀ <ˆÿ0¡Â… :|1¢Ä‰+Z¼ˆ1£F‡ì6nܸqãÆ7nܸqãÆlܸqãÆ7j°qãÆ7nܸqãÆ(à? 4xaB… 6tøbD‰)V´(.^¼xñâÅ‹/^4€‹/^¼xñâÅ‹/^¼H þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔØÝÆ7nܸqãÆ7nܸ1"€7nܸqãF6nܸqãÆ7nܸ1#@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ'àâÅÿ‹/^¼xñâŃpñâÅ‹/^¼xñâÅ‹+ P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ²Û¸qãÆ7nܸqãÆ7F°qãÆ7nܘÀÆ7nܸqãÆ7f€7nܸqãÆÀÆ7nܸq£ElܸqãÆ7nܸ#@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨Q!»7nܸqãÆ7nܸqcD7nܸqãÆlܸqãÆ7nܸqãE€ øOà@‚ ÿD˜PáB† >„QâDŠ-VÀÅ‹/^¼xñâÅ‹ pñâÅ‹/^¼xñâÅ‹/ P À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ²Û¸qãÆ7nܸqãÆ7F°qãÆ7nܘÀÆ7nܸqãÆ7Z@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑ¢E\¼xñâÅ‹/^¼˜.^¼xñâÅ‹/^¼xñâÅðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æƒì6nܸqãÆ7nܸÿqãÆlܸqãÆ7f°qãÆ7nܸqãÆ(à? 4xaB… 6tøbD‰)V´h.^¼xñâÅ‹/^T€‹/^¼xñâÅ‹/^¼xQ @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌ¨Ñ »7nÜ(ÀÆ7nܸqãÆlܸqãÆ7f°qãÆ7nܸqãÆ`ãÆ7nܸqãÆƒØ¸qãÆ7nÌ€7nܸqãÆ7nü€@ÿ H° Áƒ*\Ȱ¡Ãÿ‡#JœH±¢Å‹3j,ÈnãÆ7 °qãÆ7nܸq£C7nܸqãÆlܸqãÆ7nܸq£D€ øOà@‚ D˜PáB† >„QâDŠ-^ü1bĈ#FŒ1þŒ1bĈ#FŒ1bÄè0bĈ#FŒ1bĈ#Ɖì0bĈcD1bĈ#FŒ1b¤#FŒ1bĈ#Æ0bĈ#FŒ1bĈ#Æ‚ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼(1bĈ#FŒ1ÿFŒ1bĈ#FŒ1b|€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÈnãÆ7 °qãÆ7nܸqcC7nܸqãÆlܸqãÆ7nܸq#D€ øOà@‚ D˜PáB† >„QâDŠ-^1bĈ#FŒ1FŒ1bĈ#FŒ1b„€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jüÇnãÆ7 °qãÆ7nܸqcC7nܸqãÆlܸqãÆ7nܸÿqãC€ øOà@‚ D˜PáB† >„QâDŠ-^$Œ1bĈ#FŒ #FŒ1bĈ#FŒ1F@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5²Ó¨Q£Æ‹øïß¿þ8`Aƒ&T¸aC‡!F”8‘bE‹Àˆ#FŒ1bÄø ÿýû÷À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ (à? 4xaB… 6tøbD‰)V´x± 0bĈ#FŒ1b$ÿ1bĈ#FŒ1bĈQ"@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̈‘F5b@  ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/ FŒ1bĈ#Fƒ p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ P À,hð „ 2lèð!Ĉ'R¬hñbAÀˆ#FŒ1bĈ± 0bĈ#FŒ1bĈãD€ øOà@‚ D˜PáB† >„QâDŠ-^Ęñ";5ÿjÌ !@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ@!€‹/^¼xñâÅ‹4@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒÿ€F5jÔ¨Q£F Q£F5jÔ¨‘!4jÔ¨Q£F5jÔ¨‘"@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌh‘F5f€F5jÔ¨Q£Fp€F5jÔ¨QcDhÔ¨Q£F5jÔ¨QcC€ øOà@‚ D˜PáB† >„ÿQâDŠ-^<1bĈ#FŒ1Œ1bĈ#FŒ1bÄX þ8`Aƒ&T¸aC‡!F”8‘bE‹1f¤ÈN£F5h€F5jÔ¨Q£F`€F5jÔ¨QãD ШQ£F5jÔ¨Q£Æ†ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1bĈ#FŒ1"FŒ1bĈ#FŒ1b´€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3Nd§Q£FÿX@£Fÿ5jÔ¨Q£Æ… (@£F5jÔ¨±"€…4jÔ¨Q£F5jÔ¨Ñ!@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/"Œ1bĈ#FŒ#FŒ1bĈ#FŒ1^@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ%²Ó¨Q£F$ Q£F5jÔ¨QcC Q£F5jÔx@B5jÔ¨Q£F5jÔØ þ8`Aƒ&T¸aC‡!F”8‘bE‹#FŒ1bĈ#Æ„ÿ€#FŒ1bĈ#FŒ1FŒ1bĈ#FŒ1bÄhFŒ1blà Œ1bĈ#FŒ1.0À@1bĈ#FŒ#8#FŒ1bĈ#FŒ16@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâÅ…Àˆ#FŒ1bĈQ!0bĈ#FŒ1bĈ#ÆðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ãCv5jÔ¨‘ €‚4jÔ¨Q£F5jŒ@ 4jÔ¨Q£F5þP€F5jÔ¨ÿQ£F56@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâÅ…€#FŒ1bĈ£B`Ĉ#FŒ1bĈ#FŒ(à? 4xaB… 6tøbD‰)V´xcF‡ì4jÔ¨Q#AШQ£F5jÔ¨q"€þШQ£F5jÔ(À@4jÔ¨Q£F5jÔ¨±!hÔ¨Q£F5jÔ¨q 4jÔ¨Q£F5F5jÔ¨Q£F5jÔ€@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Åÿ‹36d§Q£F ø@£F5jÔ¨Q£F‹Ð¨Q£F5jÔHÀ?5jÔ¨Q£F5jÔè4jÔ¨Q£F5jÔ84jÔ¨Q£F5J€F5jÔ¨Q£F5j5jÔ¨Q£F5jÔ˜‘ÝE€$XÐàA„ .dØÐáCˆ%N¤xà? 4xð@,hð „ 2lèð!Ĉ'R¬8à? 4xð@,hð „ 2lèð!Ĉ'RDðŸÀ <ø  4xaB… ÿ6tøbD‰)V´x#A€ÿ$XÐàÁH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹þ8`Aƒÿ p Á‚"L¨p!ÆBŒ(q"ÅŠ/b,ðŸÀ <ø  4xaB… 6tøbD‰)V´xcA€ÿ$XÐàA„ .dØÐáCˆ ÙE$@{,hð „ 2lèð!Ĉ'R<À,h í H° Áƒ*\Ȱ¡Ã‡#JœH±âDþ8`AƒhOà@‚ D˜PáB† >„ÿQâDŠøOà@‚  = 4xaB… 6tøbD‰)V´x#Aþ8`AƒhOà@‚ D˜PáB† >„QâDŠ-^4À,h í H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ ðŸÀ $@{,hð „ 2lèð!Ĉ'R¬hñ"Æ‚ü'p Á‚"L¨p!ÆB<È."Aí H° Áƒ*\Ȱ¡Ã‡#JœH1!€ÿ$XÐ Aí H° Áƒ*\Ȱ¡Ãÿ‡#JœH±bEÿ H° A‚Ú8`Aƒ&T¸aC‡!F”8‘¢Bÿ H° A‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1ðŸÀ $ = 4xaB… 6tøbD‰)V´x!€ÿ$XÐ Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹øOà@‚ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆñ €ÿ$XÐàA„ .dØÐáCˆÙE = 4xaB… 6tøbD‰)ÿ.ðŸÀ  = 4xaB… 6tøbD‰)V´hÀ,hP €ö$XÐàA„ .dØÐáCˆ%N¤ÈÀ,hP €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒü'p Á‚hOà@‚ D˜PáB† >„QâDŠ-^Tà? 4(@{,hð „ 2lèð!Ĉ'R¬hñ"Æ„þ8`Aƒ´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bLà? 4xaB… 6tøÿ¢AvhOà@‚ D˜PáB† >„QâDŠ 8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z´àÀ€ÿ$XÐ €ö$XÐàA„ .dØÐáCˆ%N¤ÈÀÿ H° Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pà? 4 = 4xaB… 6tøbD‰)V´xQ!€þ8`AƒÚ8`Aƒ&T¸aC‡!F”8‘bE‹1&pàÀ,h@{,hð Âÿ„ 2lèð!Ĉ'R¬hñ"Æ„øOà@‚ D˜PáB† >„H]ÄÚ8`Aƒ&T¸aC‡!F”8‘âBü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠí8pà? 4 = 4xaB… 6tøbD‰)2pàÀ,h@{,hð „ 2lèð!Ĉ'R¬hñ"F„øOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^TàÀ€ÿ$XÐ €ö$XÐàA„ ÿ.dØÐáCˆ%N¤XÑâEŒ 8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1!€þ8`Aƒ&T¸aC‡!dq €ö$XÐàA„ .dØÐ‡8tèСC‡8pàÀ,X@{,hð „ °° .\¸P! €… € Ú8`Aƒ0àÀÿ H°`Aí H° Áƒ*\Ȱ¡@ pèСC‡&pàÀ€ÿ$X° €ö$XÿÐàA„ "`aA.\¸páBƒ,DÀB°pá‚ОÀ <8{ ,€@í H8ðŸÀ ОÀ <ˆ0¡B„,,ÀÂ… .€=.$ÀB°pá‚ОÀ À P @{@ €ü'p Á‚´'p Á‚"L¨! °páB…,T€=.\˜€…`áÂ… €=*Àÿ 8pàÀ,X@{,hð „ °° .\¸P! .ÀB°pá‚°p!A @ @€ö$€@øOà@‚ D˜PáB† >„8]ÄÚ8`Aƒ&T¸aÄpèСC‡*pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸páB,\H,\8„ `áBì0Àþ8`Á‚Ú8`Aƒ&T¸aC…ÿpèСC‡*pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸paA `áB…`!  €,$ÀBØ`¡=°P €ü'p Á‚´'p Á‚"L¨! .ÀÂ… °páB…`!  €,$ÀB{ `¡@øOà@‚ hOà@‚ D˜P!B.\(€… .ÀÂ… .A°0!ö ÿÀÂ…X¸Àþ8`Á‚Ú8`Aƒ&Tˆ€…  `áÂ… °páÂ… ÀB&@ X¸p í0€…8pà? 4xaB… 6tøâ@vhOà@‚ D˜PáB† ÀB ( aÆ 6àÀÿ H°`Aí H° Áƒ*DÀÂ… °páÂ…X¸ !X¸{ pàÀ€ÿ$X° €ö$XÐàAÿ„ .dh@A ,Ð𠀂6lذaÃ8ðŸÀ ОÀ <ˆ0¡B„,\¸P .,ÀB,\˜°€… À„,€=Ú`áAøOà@‚ hOà@‚ D˜P!B.\(€… `áÂ… ` X˜,LÀB{,<àÀÿ H°`Aí H° Áƒ*DÀÂ… °páÂ…X¸páÂ…` ÿX˜`áÂ,\àÀÿ H°`Aí H° Áƒ*DÀÂ… °páÂ…X¸páB‚0€…,L€@.<ÀB{,<àÀÿ H° Áƒ*\Ȱ¡Ã‡²‹8@{,hð „ 2$  €ì°€@@ ö€€ hذaÆ 8pàÀ,X@{ € ( =@ @Ú³gÿo {öì `ÏÞ@öìÙ =°€ÀìÙ³GО½öì´go @{` @à@öì`Ïž@{öÚ³7О½öì ´gO ={Ú8Ð@à@öì`Ïž@{öÚ³'О={íÙ³GО={íÙhÏž@{í ´gÀþ8`Á‚Ú8`Aƒ&T¸aA `€= °€@ À@ P@Æ 6l(Àþ8`Á‚Ú(ÿ €@í (О={سgo {ö ´gÏÞ@í €=€`Ïž=‚öì ´g ={Ú8€@€ ´go ½öì `Ïž@€ö@ @{íÙhO =öì ´gÏÞ@öìÙ(О={íÙho ={سgo {öÚОÀö@ @Ú³7ÐÞ@{ö°gO =öì `ÏÞ@{Ú8а€@øOà@‚ hO @ÿ0@ @´'p @ @{öì `Ïž½ìÙ(О={´'p ö8€={öÚ³7О=‚öì hOà@(О½öÚ³7P @{ P =öì ´'О@{öÚ³go {öì hÏž½öì ´7О½ìÙ³7€={í hOà@{  íÙhO ={ÚОÀö€=8pàÀ,X@{ € (ÿ =@ @Ú³go {öì `ÏÞ@öìÙ =°€ÀìÙ³GО½öì´go @{ {€@ `{hÏÞ@öì ´go @{Ú@ @{íÙhO =öì ´gÏÞ@öìÙ(О={íÙho ={سgo {öÚhÏž@{öÚ³7О=öì ´go {öÚho @{ö°go ={8ðŸÀ О@` €@ÿ€ hOà@€@öìÙÀž={س7P ={öhOà@ì p {öì´go ={íÙОÀ8€={س'О=‚öì ´go @{Ú@ @{íÙhO =öì ´gÏÞ@öìÙ(О={íÙho ={سgo {öÚОÀö@ @°g {öÚ³GО½ö´'p =`8ðŸÀ <ˆ0¡Â… :|q »ˆ´'p Á‚ÿ"L¨p!à  ÀØ À@ö`€=Ø0À@4lذaÆö8pà? , = @ ö€@ À(€=`ö°€@ `{ØÀ°€@`€‚ö°@Aì`{Ø@ ö°€@ì {,`{ØÀ°€=` íÙ³'ÿО=öÚhO ={í ´'О={8ðŸÀ ОÀ <ˆ0¡Â… (€ {`€@Ø €Aö `À@аaÆ ÚpàÀ€ÿ$X° €ö$8Ø@ (H{  ö€=ØÀ(€=ì`{À€= Ú@ ö€=ØÀ€@ìPØ@ ÿö(H@ ö°€=PÐö€=Pа{Ø@ €=ì`Ø@ ö@ °€@øOà@‚ hOà@‚€= €‚°€@ `Ø€=ì €‚ØÀö°€@ì Ø  =`Ø€=ì {ÿ  °€@ìP €@ì`{  =ì {  =`ö°€@ì {ØÀ8pà? , = @ ö€@ À(€=`ö°€@ `{ØÀ°€@`€‚ö€=ì`{  ö°ÿAì {À€=`€‚€@`{Ø@ í`Ø@ €=ì`Àö €=`€8ðŸÀ ОÀ {@  `À°{Ø@ °€=ì`Ø@ °@A{Ø  ö°€=ÿì {Ø@ ö€=  {À  Àö°€@ ÚÀ°À@(({ØÀö€=ì {À@ öàÀÿ H° Áƒ*\Ȱ¡Ã‡²‹8@{,hð „ 2  €‚ìÀh€={ìÙ³7€=í €@öìÙ³ =´'p Á‚ÿ"L¨p!CøOà@‚ hOà@‚€= €‚ö(О@{öÚ³7P =í €@ì p @{`{ØÀ@ÚhÏÞÀö´'p = P =öÚhO ={í ´7p =öìÙОÀ 0 í ´'О@{íÙhO ½í ´gÏž@{ö´gO ={öÚ³'О@{íÙ³àÀÿ H°`Aí H° Áƒ*\Èp €‚ °` { ÿP =öì°gÏÞ@ö´'P @Ú³gÏ€ö ОÀ <ˆ0¡Â… 8pà? , = @ ö€@ Ú@ @{íÙhÏÞ@ö´'P °€Àí €=ì`{hO ={ÚОÀ €@ì {@ °À@À°ÀÀ€@ €` @ÚО@`à@ÿ`Ø@ €=ì` í ´gO ={öÚ³'О=öÚ³àÀÿ H°`Aí Hp °€@PÐ@ÚhÏž@{ö ´' =€=€hO @ì`{Ø@à@{íÙ8О@€ö` @`Ø@ öÀ@À°ÀÀ€@ €` @ÚО@ÿ`à@`Ø@ ö€= Ø@ €ü'p Á‚´'p ÁÀ@A{hO ={íÙ(О@€ö @ ö8 =°€=ì` í ´goà@{Ú8Ð@ €@€ ´'О@{öì ´goà@{íÙ³' =í {À Ú@ €@ €hÿO @{0 €@ @ÚhO ={öÚ³7p =öìÙpàÀ€ÿ$X° €ö$8Ø@ (h í ´gO ={ÚО@À@´'P ö°€=ì p =öì hO @{Ú€ @ÚhO =öÚ³'О@{ÚhÏž=í hØ@ ö HЀ@0 @ @{Ú(€ÿ€@öÚhO =öì ´'ÐÞÀöÚ³'О={íÙhÏž@{íÙpàÀ€ÿ$XÐàA„ .dØÐáCˆÙE = 4xaB… PAö `€@ À@öp@A 6lذ¡=øOà@‚ hOà@‚€= €‚À°€@ìPØ  Aì`{Ø  (@Á@ ö°€=ìÿ {Ø  (X €=ì`{Àö(À@PP €=ì0Àþ8`Á‚Ú8`Aƒ&T¸!A`À@öP€@ `@AаaÆ ÚpàÀ€ÿ$X° €ö$8Ø@ (€@ì {À€= Àö°€=  €‚´ÿ@A`Ø@ €=  {À  p ={íÙhÏž=öì ´gO ={íÙhO @{ €€=`@ ö°€= @ €@ì Àþ8`Á‚Ú8à@`  °€@ì {@ ö(H{ØÀö(€@ PÐÿ€=`Ø@ €=`€‚8О=öì ´gÏž@{öÚ³'О=öì ´' =ÀÀÀ°€@ì { @ °€@øOà@‚ hOà@‚€= €‚À°€@ìPØ  Aì`{Ø  (@A €@ öÿ€=ì €€ í {À  p ={íÙhÏž=öì ´gO ={íÙhO @{00À°€=0€àÀÿ H°`Aí Hp °€@PØ@ ö€=  {$€=ì`{@ (8Àö°€=`ÿ{€ í {À  p ={íÙhÏž=öì ´gO ={íÙhO @{0p €=ì`{Àö( @ °€@øOà@‚ D˜PáB† >„8]ÄÚ8`Aƒ&T¸!A `À@ö0€=0€=Ø0€@4lذaÆ8pà? , = @ ö€@ÿ  {À°€@ì {  ö°€=ì {@ ö(h{Ø@ ö°€=ì {Ø@ ö€= @ €=ì`{Àö€= ØÀö°{Ø` €ü'p Á‚´'p Á‚"L¨p! À€ì` {ÿ` {°` hذaÆ 8pàÀ,X@{€@ì @ ö€=`Ø@ ö@Aì`{Ø@ ö€@ìPа€@ì {@ °@A`{°@ÁÀ°€=ì À°€@`Øÿ@ ö€@`{Ø@ ö€@Àì Àþ8`Á‚Ú8à@`  °€@ì {À°€@ `{ØÀ°€@`€‚ö€=`Ø@ ö@A`{°@ÁÀ°€=ì Àÿ°€@`Ø@ ö€=`€=Ø@ €ü'p Á‚´'p ÁÀ@A`Ø@ ö€=`Àö°€=`À0{ØÀö`ØÀö €@ì {@ ö°{Aìÿ {ØÀ€@ì {€ ö°€=ìÀ°€=ì@Ø` €ü'p Á‚´'p ÁÀ@A`Ø@ ö€=`Àö°€=`Àí`{Àö°€=`{À°@A`ÿ{°@ÁÀ°€=ì À°€@ ØÀö°€@ì`Ø@  {°€@øOà@‚ D˜PáB† >„8]ÄÚ8`Aƒ&T¸aA`À@€@  hذaÆ 8pàÀ,X@{ € €hO =ÿ{ö ´7P ={ö ´go {öÚ³'О½ìÙhÏž@{í ´'О½ìÙ³'О½ìÙhÏž@{öì ´gÏÞ@öÚhO ½íÙhÏÞ@öì ´gÏÞ@{öÚ³'О={سgÏÞ@öÚhO ½íÙhÏÞ@öì ´gÏž@{öì `Ïž½öìÙ(О@{öÚ³àÀÿ H°`Aí H° Áƒ*\ÈÐ €‚°` @ €@ €@4lذaÆ8pà? ÿ, =À@À@€ ´'О={Ú(О={Ú³7€={íÙhÏÞ@öì ´gO =öÚhÏÞ@öìÙhÏÞ@öì ´gO ={ö°gÏÞ@öì ´gO ={í ´gÏÞ@öì ´'О={Ú³7P =öÚ³'О@{öìÙho @{öì ´gÏž@{íÙ³7P ={سgO ={Ú³go {öÚ³'О=öÚ³go {öÚhÏÞ@öì ´gÏÞÀöìÙ(О@{ö8pà? ,ÿ =À@À@€ ´'О={Ú(О={Ú³7€={íÙhÏÞ@öì ´gO =öÚhÏÞ@öìÙhÏÞ@öì ´gO ={ö°gÏÞ@öì ´gO =öì ´go @{íÙ³7P ={ÚhO ={í ´gÏž=ö ´gÏÞ@{öì ´'О={Ú³7€={öÚ³7P ={ö°gO ={í ´gO ={Ú³7p ={ö ´'О=øOà@‚ hO @00 ÿí ´gÏÞ@ö ´gÏÞ@öì `Ïž@{öÚ³7€={íÙhO =öÚ³7€={öÚ³7€={íÙhÏž={íÙ³'О½öìÙ(О½í ´'ÐÞ@öì `Ïž@{öì ´gO ={ö ´go @{í ´gO =öìÙ³'ÐÞ@öìÙhÏž=öÚ³go @{ö°gÏž@{öì ´gÏž=öì ´gÏÞ@öì hO =ö ´go {öÚ³gÀþ8`Á‚Ú(  @ @{íÿÙ³7P ½íÙ³7P ={س'О=öì `Ïž@{öÚhO =öì `Ïž=öì `Ïž@{öÚ³go ={ö ´'О@{í hÏž@{ö°gO ={öÚ³'О={Ú³7P =öÚ³'О@{öìÙho @{öì ´gÏž@{íÙ³7P ={سgO ={سgÏÞ@öÚhO ½íÙhÏÞ@öì ´gÏÞÀöìÙ(О@{ö8pà? 4xaB… 6tøâ@vhOà@‚ D˜PáB† >„ÿQâDŠ 8pà? , = 4x€ƒ8xðàÁƒ8xðàÁƒÀÁƒ„HÀþ8`Á‚Ú8`Aƒ8X€ƒ<(€ƒàÀÿ H°`Aí H° ÁОÀP°`Á‚ @Á‚ ,X°`Á‚P°`Á‚  P @{,hð „ 2l@Æ 8pà? 4xaB… 6tøâ@vhOà@ÿ‚ D˜PáB† >„QâDŠ 8pà? , = 4xaB… 6tøbD‰)V´hÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘"CøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^ĈÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"Æ„8ðŸÀ ОÀ <ˆ0¡Â… ÿ:|1¢Ä‰+Z¼ˆ1!€ü'p Á‚"L¨p!ÆBÈ.â@í H° Áƒ*\Ȱ¡Ã‡#JœHq!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠí8pàÀ,X@{,hð „ 2lèð!Ĉ'RdàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ¢BøOà@‚ hOà@‚ D˜ÿPáB† >„QâDŠ-^ĘÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1&pàÀ€ÿ$XÐàA„ .dØÐáCˆÙE = 4xaB…XX€… .\¸Ð ( = 4xp ö@XÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹ö8pà? , = 4xaB…XX€… .\¨€… ÀÂ…X(Àþ8`Áÿ‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1"pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâE…8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bLàÀÿ H° Áƒ*\Ȱ¡Ã‡²‹8@{,hð „ °páB,\¸° €,$ÀBØ`¡@øOà@‚ ÿhOà@‚ D˜PáB† >„QâDŠ-ÚpàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸páB,\H,\8€…8pà? , = 4xaB… 6tøbD‰)V´x#BøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^TàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hÿñ"Æ„8ðŸÀ <ˆ0¡Â… :|q »ˆ´'p Á‚"L¨! .ÀÂ… °P X˜€…°ÀB8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z´àÀÿ H°`Aí H° Áƒ*DÀÂ… °páÂ…X¸ `¡@øOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^ĈÀþ8`Á‚Ú8`Aƒ&T¸aCÿ‡!F”8‘bE‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"Æ„8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1!€ü'p Á‚"L¨p!ÆBÈ.â@í €@€@@ @€öhÏž½ìÙ³7€={Ú³go €öÀ@°gÏA{öÚ³GО½í @ @Ú³7ÐÞ@{ö°gO =öìÿ ´gO @{ÚhÏÞ@{íÙÀž=öÚ³7€={íÙpàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ¢=øOà@‚ hO @0@ @´'p @ @{öì `Ïž½ìÙ(О={´'p ö8€={öÚ³7О=‚öì hOà@ Àž=‚ìÙhÏA{öÚ³7О=öì ´gO @{ÚÿÀž=‚ìÙhÏA{öÚ³àÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ¢BøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^ĘÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1&pàÀ€ÿ$XÐàA„ .dØÐáCˆÙE = @ ö€@ À(€=ÿ`ö°€@ `{ØÀ°€@`€‚ö€=`ö°€@ {$@A{Àì`@ ö°€=`€8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z´àÀÿ H°`Aí Hp °€@P ö@Aì {°€=ÿP{ØÀö€= {´€= `{ØÀ°€=`Ø `A(({ØÀö€=ì { pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8pà? , = 4xaB… 6tøbD‰)V´xQ!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bLÿàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ,hð „ 2lèð!Äì"ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½í hOà@ @ ö€= Ø`àÀ €@ì {@ °€=ì p =öìÙpàÀÿ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ¢=øOà@‚ hOà@‚€= €‚ö(О@{öÚ³7P =í €@ì p @{`{ØÀ@ÚhÏÞÀö´'p = P =öÚhO ={í ´7p =öìÙОÀ 0 í ´'О@{íÙhO ½í ´gÏ€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/ÿbDàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8pà? , = 4xaB… 6tøbD‰)V´xcBøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^ĘÀþ8`Aƒ&T¸aC‡!dq €ö$8Ø@ (€@ì {À€= Àö°€=  €‚´@A`ÿØ@ €=   =`Ø@ €=ì`€‚ pàÀ€ÿ$X° {öì p Á‚"L¨p!ÆBŒ(q"ÅŠ8ðŸÀ ОÀ {@ €=`Ø  °@A‚ØÀö°@AP€‚€@ì`{Ø@ ö°@AP° Aÿ {ØÀö€=ìP€8ðŸÀ `Ïž=€$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8ðŸÀ `Ïž=€$XÐàA„ .dØÐáCˆ%N¤XÑâE„øOà@‚ °gÏ@,hð „ 2lèð!Ĉ'R¬hñ"ƃøOà@‚ °gÏ@,hð „ 2lèð!Ĉ'R¬hñ"ƃøOà@‚ D˜PáB† >„8]ÄÚ8à@ÿ`  °€@ì {À°€@ `{ØÀ°€@`€‚ö€=`Ø@ €= ` ö€=`@ ö°€=`€8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z´àÀÿ H°`Aí Hp °€@PÿØ@ ö€=`Ø@ °€=ì`Ø@ °@A{ØÀ°€=ì`ØÀ°€@ìP €@ì`{Ø@ ö°€@ì0Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1"pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEÿ…8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bLàÀÿ H° Áƒ*\Ȱ¡Ã‡²‹8@{ € €hO ={ö ´7P ={ö ´go {öÚ³'О½ìÙhÏž@{í ´'О½ìÙ³'О½ìÙhÏž@{öì `Ïž½ìÙhÏž@{öÚhÏž½ìÙhO ={íÙ³7P ={öÿ°gO ={íÙhO ={ö°gO =öì `Ïž@{öì8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hÑ€ü'p Á‚´'P €@öÚ³go @{Ú³go @{ö°gO ={íÙÀž=öì ´'О@{íÙÀž={íÙÀž=öì ´gÏÞ@{öì hO =öÚ(О=öì `Ïž@{öì ´gO ={íÙ³7€={öì hO =öÚ(О=öì `ÿÏž@{öì8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"F„8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼¨Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1&pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ 8pà? 4xaB… 6tøâ@vhOà@‚ à`A„QâDŠ-^TàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"Æ„8ðŸÀ <ˆ0¡Â… :|q »ˆ´'p Á‚"L¨p!ÆBŒ(q"Å…8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z´àÀÿ H°`Aí H° Áÿƒ*\Ȱ¡Ã‡#JœH‘!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bDàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8pà? , = 4xaB… 6tøbD‰)V´xcBøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^ĘÀþ8`Aƒ&T¸aC‡!dq €ˆ#FŒ1bĈ#FŒàÀˆ1bĈ#FŒ1bĈ!ÿ8pà@Ä"FŒ1bĈ#FŒ1â?ˆ8@Ĉ#FŒ1bĈ#FŒ1bĈ8p â@#FŒ1bĈ#FŒ1bĈ8p â@#FŒ1bĈ#FŒ1bĈ#pàÀˆDŒ1bĈ#FŒ1bĈ#FŒ8À"FŒ1bĈ²‹8@Ĉ#FŒ1bĈ#FpàÀˆDŒ1bĈ#FŒ1bĈ8p â@#FŒ1bĈ#FŒñ€øOà@‚ øOà@‚ D˜PáB† >„ÿQâDŠ-^ĈÀ(Ș1cÆŒ3f̘1ãB  cÆŒ3f̘1cÆŒ8pàE3f̘1cÆŒ3f̘À2f̘1£Cvd̘1cÆŒ3VpàÀŠ2f̘1cÆŒ3f$àÀd̘1cÆŒ3ZpàÀŠ2f̘1cÆŒ3f̘!€P1cÆŒ3f̘1cÆ…8@@ÆŒ3f̘1cÆŒ3&pàÀŠ2f̘1cÆŒ3f̘1!€d̘1cF‡ì(Ș1cÆŒ3f¬àÀ ¨Nà@ÿ‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B À¢E‹-Z´hÑ¢E8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼8À(PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹8p€"€Õ Hà? 4xaB… 6tøbD‰)V´x‘"€P0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/RpàÀŒ1bÄ8‘E1bĈ#FŒ 8pàEÕ„'p @uÿÿ H° Áƒ ,€@ÿ H°`A PÀ,hð „ 2lèð!ă8q €ˆ#FŒ1bĈ#FŒøÀ"0P@x TðŸÀ „Q¢D˜øÀ@uá (PÀ,hðàA€ì øOà@‚ dWÝÁƒÙÈà? 4xaB… 6tøbD‡8 Q €êÂ8P :€ÿ$XP € 4hÿÐ A€ øOà@‚ (øà? 4xaB… 6tøbD‰ 8pàEÕ„'p @uÿ H° Áƒ²(à? 4X]Avdwp ;€ÿ$XÐàA„ .dØÐáCˆ%NpàÀ‰'Nœ8q¢Avÿ˜8qâĉ'Nœ8q"C˜øÀ@uá (PÀ,hð @ !Âþ@ˆB‚"Dˆ!B„"Dˆ!B„8pàB„ü'p Á‚"L¨p!ÆBŒ(q"Eÿ†8@À@uðàÁS§|àÀÿ €À <ˆ0¡Â… :|1¢Ä‰8pà? ,` :xÕ OÀ²cÇN ;vÙ±c7;vٱȎ;ìþc';vÙ±cÇN »ìþ±cÇŽ@vì²c7;vÙýcÇN »ìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡#JŒàÀÿ¨@uÂSðŸÀìØ±ÈŽ@vìØ dÇŽ@vì²cÇN »ÿØ dÇŽ@vìØ±Èn »ìرc'»ìØ dÇŽ@vÿرÈn »ìÿ8À,hð „ 2lèð!Ĉ 8p@¢@ÕÁ¨Nà@xêþ8 À?0 ü` @ÿ€0À?ÿø`àÀà€@þ8`Aƒ&T¸aC‡!F”øÀ&þ0P<€ê„§à?Ù±c';ìØ±ÈŽ;ìØ dÇŽ@vÿ±ÈŽ;ìØ±c'Ý@vÿرcÇN ;vٱȎ;ìþ±c'ÿÝ@vÿØ 8p ;€ÿ$XÐàA„ .dØÐáCˆ%JpàÀ‰'Nœ8q¢Avÿ˜8qâĉ'Nœ8q"C˜øÀ@uðª8ž:€ÿàþà€þ@ €ø€@ÿ(ðß¿þýûà€ÿüðïß?ÿüðï€ÿü'p Aÿø@ €þ8`Aƒ&T¸aC‡!8pàD‚ B„"Dˆ!B„¢C€HÀ@uðª8ž:€ÿ d7Ý?vÙ d7P »ÿì²Èî@vþûÇîß¿ìþ±û÷ï»ìþýûÇî»ÿþ±ûÇî»ìþ±û÷Ý¿ÿØýøï»ìþýûÇî;€ÿ$(À,hð „ 2lèð!Ĉ#8pàÀĪƒPÀðÔü'P »ìþ±Èn »Ùýc'Ý@vÿ²(ðß?vÿþýc÷Ý¿ÿØýc÷ïß?vÿØýû÷Ý?vÿØýc÷Ý¿ìþýûÇîŸÀÿØýc÷ïß?vÿØü'p Aìþ8`Aƒ&T¸aC‡!FlàÀ¨@uÿÂSðŸ@ø` €þø` €ø@ €þ8p @€ ü÷ï€ÿþøàß?ÿüû÷À?ÿüûà? ðÀ?ÿ ðÀ@ÿ0À?ÿ H° Áƒ*\Ȱ¡Ã‡#JàÀÿ¨@uÂSðŸ@ì²ûÇN »ì d÷@vÙýÈN ÀÿØýû÷Ý?vÿþýc÷Ý¿ÿØýc÷ïß?vÿØýc÷Ý?vÿþ±û÷ï»ÿýc÷Ý¿ÿØýcðŸÀ²øOà@‚ D˜ÿPáB† >„Q¢D˜8qâĉ'd7ñ€‰'Nœ8qâĉ'2pàÀ‰ÿ TžÀÕü'p 0ð€øÀ¿þýðÀ¿ÿüðïß?ÿüû÷ï€ÿ ü÷À¿ÿüû÷À?ÿüû÷À  øOà@‚ D˜PáB† >„àÀ €"Dˆ!B„"Dˆ8p"AÕÁƒO:xðà©+È® ;Ù øïß@vÿØýû7Pà?vÿ Èn »ì²ûÇn »ÿì²ûÇî»ìþ±@ÿØýû÷Ý?vÿþýc÷ÀÈà? 4xaB… 6tøbD‰8p`â?ÕÁƒO:xðà©+È® ;Ù øïß@vÿØýû7Pà?vÿ Èn »ì²ûÇn »ì²ûÇî»ìþ±@ÿØýû÷Ý?vÿþýc÷ÀÈà? 4xaB… 6tøbĆ8 Q €êÂ8P :€ÿ 0P €þøà@þðŸ@à€ 0ðÿøï€ÿþø÷ï€þø÷Àà€þ Pà?ÿ @ €þøOà@‚ D˜PáB† >„Q¢@˜øÀ@uðàÁS§„Q¢D˜8qâĉ'd7ñ€‰'Nœ8qâĉ'2pàÀ‰ÿ TžÀÕü'ÿP €ø€@@ €ø` €þ ÀÀÿ0À?ÿ ü`àÀ ` þ8`Aƒ&T¸aC‡!8pàD‚ B„"Dˆ!B„¢C€HÀ@uðàÁS§„Q¢@˜øÀ@€ê$ðŸÀìØ±Èn ;vì²cÇŽ@vÙ±c'ÝÀÿرc';vì²c÷Ý?vìØ±Èn @ÿvÙ±c'Ý@vÙ±ûÇî;ì²Èn ;€ÿ$XÐàA„ .dØÐáCˆ%JpàÀ‰'Nœ8q¢Avÿ˜8qâĉ'Nœ8q"C˜øÀĉ'Nœ8qâĉ'N<àÀÿ˜8qâĉ'Nœ8qbC˜øÀĉ ²[ÈnbCv ÙMœ8qâĉ'NŒàÀÿ˜8q"Av ÙMlÈŽ!»‰'Nœ8qâD‡80ñ€‰'Nœ8qâĉ'Nœ8qâÄ‚80ñ€‰'d·ÝĆì²›8qâĉ'Nœ(À&ÿNœ8qâĉÙMü`âĉ'Nœ8qâĉ 8p`â?'Nœ8qâĉ'Nœ8ñ €Lü`âĉ&šh¢‰&šh¢‰Àþ8`Á‚ 4hРAƒ üÇÎ`Av 4hp ;ƒÙü'p Á‚"L¨p!ÆBŒ(Q"€Lü`âĉÙ-d7Ñ!;…ì&Nœ8qâĉ8pàÀÄ&Nœ8qâĉ'Nœ8qâĉ 8pàÀÄ&NœHÝBv²SÈnâĉ'Nœ8qâD˜8qâĉ'd7ñ€‰'Nœ8qâÿĉ'2pàÀ‰ÿLœ8qâĉ'Nœ8qâă80ñ€‰'Nœ8qâĉ'6pàÀ‰ÿLœ8qâĉ'Nœ8qâĉ'pàÀ‰ÿLœ8qâĉ'Nœ8qâĉÿ8pàÀÄ&Nœ8qâĉ'Nœ8qâĉ 8pàÀÄ&Nœ8qâĉ'N4ÑDM4ÑDàÀÿ H° Áƒ*\Ȱ¡Ã‡²‹8À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"€Õ Hà? 4xaB… 6tøbD‰ÿ)VTàÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ8À(PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹'8pàEª8 À,hð „ 2lèð!Ĉ'R¬h‘"€P0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/RpàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŠ8€#FŒ'²£` :€ð¨à? PÀ? ,8@Á‚ÿP°`Á‚ þP° €ÿ$XÐàA„ .dØÐ €84` :€ð¨à?` þ0ð€ÿ(ðß?ÿ `àÀ0pà@ÿ H° Áƒ*\Ȱ¡Ã‡#JàÀÿ¨ <ªøOà@‚ È!;„Ùü'p Á‚"L¨p!ÆBŒXÀ$ 0P@x TðŸÀ dWAƒ²cÇŽAƒ ÈΠÁì dðŸÀ <ˆ0¡Â… :|1¢D‡80ñÿ€êÂ8P :€ÿ$X° »‚ì 48;vì 4hР@v þcg ;€ÿ$XÐàA„ .dØÐáCˆ8pà€DªOà@êþ8`AƒpàÀ‰'Nœ8q¢Avÿ¨„Q"B˜øÀ@uðàÁS§„QbC˜øÀÿ@uðª8ž:€ÿ d7Ý?vÙýc'Ý?vÿØýc'Ý@vÿرÈî»ìþ±8pà?vÿØ d7Ý?vÙýc7Ý?vÙýc7Ý?vÙýc7pàÀìþ8`Aƒ&T¸aC‡!FLàÀ¨@uÂSðŸ@ø@ ø@ € ðÀ@ÿ ðÀ?ø` € ÀÀðÀ@ÿ ðÀ?` €þà? 4xaB… 6tøbĈ8 Q €êÿàT'p „1!€H` :€ð¨à?(ð€ÿüûàß¿þø÷Àà€ÿþà€ø` € ÀÀø€@ÿü'P ÿ@ €ðŸÀ <ˆ0¡Â… :|1¢D(À@uðàÁS§„‘ €H` :€ð¨à?Ù d÷Ý@vÿØ d'@vÙ d÷Ý@vÿØ dÇî»ÿØýc7Ý?vÙ d÷Ý@vÿØ d÷@vÿØ d÷@vÿØ 8p ÿ;€ÿ$XÐàA„ .dØÐáCˆ%6pàÀ‰ÿ TžÀÕü'P »ìþ±Èî;ì²ÈN »ìþ±Èî;ìØýc7ð»ì²ûÇN »ìþ±Èî»ìþ±Èî»ìþ±Èî»dðŸÀ <ˆ0¡Â… :|1bB(À@uá (PÀàà 0À?ü0À?ÿ ðÀ@ €@ÿø` €ø` €` ø@ €ÿÿ$XÐàA„ .dØÐáCˆ#8pà€DªOà@êþ(Ý@vÿØ d÷@vÙ d'Ý@vÿØ d÷@vìþ±øÝ?vÙýc'Ý@vÿØ d÷Ý@vÿØ d÷Ý@vÿØ d÷ÝÀ²øOà@‚ D˜PáB† >„Q¢C˜8qâĉ'd7ñ€Õ Hà?@ €€@ÿ€@ü@ Àþýøïß?ÿþ ü÷À¿ÿüû7ðß?ÿþøÿ÷À¿þýðïß?ÿ H° Áƒ*\ȰaAphÀ@€ê$ðŸ@0€@ÿø` @ÿ ü`à?þ0p þð€@ÿ  þ8`Aƒ&T¸aC‡!FDàÀPÀþ8»ìرc÷@vÙýcÇŽ;ì²cÇN ;ì²Èn ;€ÿ$XÐàA„ .dØÐáCˆ 8pà€DT'p A€ÿdÇŽ;ìØ±Èî»Ù dÇŽ@vÙ dÇîÿ;ìØ±c7;vì²ÈŽ»ìرc';vÙ d';vÙ±ÈN ;ì²Èà? 4xaB… 6tøbD‰ 8p`â?ª8 À²cÇŽ@vìØ d÷Ý@ì²cÇN »ì²c÷@vìØ±ÈŽ;vÙ dÇŽÝ@vìØ±ÈŽ;ì²ÈŽ»ìØ d'@vÙ dðŸÀ <ˆ0¡Â… :|1bB(À@€ê$ðŸÀ@ €@ @þû7ðß¿üû7À?ÿÿüû÷À¿üû÷ï€ÿ `à?` øÿ@ þ8`Aƒ&T¸aC‡!FŒàÀPÀþ8;vì²cÇn »ì d7;vÙ d'»ì²cÇŽÝ@vìØ±ÈN ;vì²cÇŽ@vìØ d'@vìØ dÇN ;ì²Èn ;€ÿ$XÐàA„ .dØÐáCˆ%:pàÀ‰'Nœ8q¢Avÿ˜8qâĉ00qâĉÿ8pàÀÄ&Nœÿ8"€‰'Nœ8qâÄ„80ñ€‰Ù5dÇÝĉ'Nœ8qbA˜øÀÄì&NœhÝD‚ì²›8qâĉ'NœØÀ&þ0q »‰'d7‘ ;†ì&Nœ8qâĉ8pàÀÄ&NŒ  €†&Nœ8qâĉ'Nœ8± €Lü`â@v'N4Èn"Av ÙMœ8qâĉ'NtàÀ'Nœ8qâDƒì&þ0qâĉ#P`âĉ' pàÀ‰ÿLœ8q"C€ðŸÀ <ˆ0¡Â… :|1bB(€Dÿ‰ÿØ9d§D‰%J”(Q¢C(€DvìØ±“(Q¢AvìØ±“xBv%J”(Q¢D‰%pàÀ‰HdÇŽ;‰%dÇŽ;‰Ù)d'Q¢D‰%J”(ñ€H@¢Ä‡ €D‰%J”(Q¢D‰%JpàÀ‰HdÇŽ;‰%dÇŽ;‰Ù)d'Q¢D‰%J”(Q¢A(Q¢D‰%6d'Q ‰%J”(Q¢D‰%J,àÀ(Q¢D‰%J”(Q¢D‰8pà€D$J”(Q¢D‰%ÿJ”(‘A8pàÀ,XÀ,hð „ 2lèð!Ĉ'R¬hñ"F„8@@ÆŒ3f̘1cÆŒ8pàE3f̘1cÆŒ3f̘À(Ș1cÆŒ3f̘1cÆ„81cÆŒ²£` @uøOà@‚ D˜PáB† >„QâD‰8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀŠ,Z´hÑ¢E‹-ZàÀX´hÑ¢E‹-Z´hÑ¢E‹8@€E‹-Z´hÑ¢Eÿ‹-ZpàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŠ8@FŒ1bĈ#FŒ1VpàÀŒ1bÄ8‘EÕ„'p @uÿ `àÀþ0pà?ÿ 8pà?üà? 4xaB… 6tøbÄ8 Q €êÂ8P :€ÿ$XÐàA„(à? 4xðþðŸÀ <ˆ0¡Â… :|1"€D€À <ˆ0¡Â… :|1¢Ä‰8pà? ÿ,€À <ˆ0¡Â… :|1¢Ä‰+Z¼ˆQáþ8`Á‚H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8ðŸÀ 0P@x TðŸÀþø`àÀðŸÀ ` @þðÀþ@ @€ÿ$X° €ÿ$XÐàA„ .dØÐáCˆ%NTàÀ8`Aƒ&T¸aC‡!F”8‘bE‹1.„QâDŠ-^ĸà? 4xaB… 6tøâ@v¨„QâDŠ-^Ĩà? ÿ4(à 4xaB… 6tøbD‰)V´x‘!À,XÀ@uá (PÀøÀÀÿ ü`àÀü`àÀÿ øÀÀÿ ü`àÀüà? 4xaB… 6tøbD‰8pàÅH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ü'p Á‚"L¨p!ÆBÈ.â@ÕÁ¨Nà@xêþ(À?ÿàÿ€@ÿü`àÀü'p Á‚"L¨ÿp!ÆBŒàÀ¨@uÂSðŸÀþ à`à?ü€(À@àÿüð€ðŸÀ <ˆ0¡Â… :|± €D4ð€À <ˆ0¡Â… :|1¢Ä‰ü'p Á‚< p Á‚"L¨p!ÆBŒ(q"ÅŠ/bTðŸÀ ð€À <ˆ0¡Â… :|1¢Ä‰+Z¼Èà? ,` :xÕ OÀÿðÀ? ÀÀ@ € €@ÿ(À@þþ ü` øOà@‚ D˜PáB† >„QâD…8@q À,hð „ 2lèð!Ĉ'R¬hñ"Æ…ÿ H° Áƒ*\Ȱ¡Ã‡²‹8À@uðª8ž:€ÿ ðþø@ €üðÀÀþà€ðŸÀ <ˆ0¡Â… :|1"€D` :xÕ OÀÿà€þ À? ðþøÀÀø` €8p @  €@ÿà€þ8`Aƒ&T¸aC‡!pàÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bD‚ˆ1bĈ#FŒ1bĈ#FŒÑ!"FŒ1bĈ#F` :xÕ OÀà€ø€@ÿ àü0À?üüðÀ@ÿ(à?ü@ €øÿà? 4xaB… 6tøbD‰8pàEŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H±!;Šªƒž:uðàÁSWÀ?üð€@à€€@ÿü'p Aþ8`Aƒ&T¸aC‡!FpàÀˆ TžÀÕü'P € ðÀ@ÿ@ Àþýûà€ÿþýðïß¿þýðÀ¿ÿü(à?  €@ü0À?ü'p Á‚"L¨p!ÆB,àÀÿ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈø bĈ#FŒ1bĈ#FŒ1bĆü1bĈ#FŒ1â@Õ„'p @uÿ @ €þ Pà?ÿ øþà@þðŸÀüà€øÀþ€ø€@ÿü'p Á‚"L¨p!ÆBŒ(q¢B H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)6dGÀ@uðàÁS§„QâD…8@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)RlÈŽ"Š`€"EŠ)R¤ØÀ( H‘¢@P¤XEŠ)R¤Hñ€P¤H‘"EŠ)R¤H‘"EŠ)R¤H‘â@ H‘"EŠ)R¤H‘"EŠ)&`!Š)R¤H‘"Å…(R¤H‘"EŠ)R¤H‘"EŠ 8p€"EŠ)R¤H‘"EŠ)R¤H‘"EÿŠ)R¤ØE)> EŠ)R¤HÑ!€P@‘"E HñP¤H‘"EŠ8pàEŠ)R¤H‘"EŠ)R¤ˆ"Š(¢ˆ"Šþ€ÿ$8À,hð „ 2lèð!Ĉ'R¬hñ"ƃ41cÆŒ3V1cÆŒ3f̘1cÆŒ 8p cÆŒ3f̘1cÆŒ3f̘1cÆ‹ì(Ș1cÆŒ3f¬àÀd̘1cÆŒ3fÌHÀ2f̘1cÆŒ3f̘1cÆŒx cÆŒ3f̘1cÆŒ ÿð@ÆŒ3fÌH@ÆŒ3f̘1cÆŒ3&pàÀŒ3f̘1cÆŒ3f̘1cÆŒ/²£` @uøOà@‚ D˜PáB† >„QâD‰8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÀB-Z´hÑ¢E‹-Z´h±",`Ñ¢E‹-Z„` @uøOà@‚ D˜PáB† >„QâDŠ-^¤àÀ1bĈ#FŒ1bĈ#FŒ1bŒÈÿŽ"€êÂ8P :€ÿ d7p ;vìØ 8pàÀ²8pà?vÿ H° Áƒ*\Ȱ¡Ã‡#pàÀ‰ TžÀÕü'pà@ $€@ÿ H° Áþ8xð @à? 4xaB… 6tøâBˆ1bĈ#FŒ1bĈ#FŒ1bĈ#>@B#FŒ1bĈ#FŒ1bĈ#@B#FŒ1bĈ!¨ <ªøO @8pàÀþ8`Aƒ&T¸aCÿ‡!F”8‘bE‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹²£` :xðà©S„À"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ8Pà¿ÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bd€Àþýûà? 4xaB… 6tøbćªÿOà@êþ(ÀÀ8ð€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑ¢C¸xñâÅ‹/^¼xñâÅ‹/^¼xñâņì(¨@uÂSðŸ@ì²c'ÝÀì²cÇN »ìØ dÇŽ@vÈà? 4xaB… 6tøbÄ8 Q €êàT'p |àÀ!B„"Dˆ!B„"Dˆ!B„"DˆDˆ!B„"Dˆ!B„"Dˆ!"Dˆ!B„"Dˆÿ TžÀÕü'P €ø` €þ0P €þà€þ Pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢A°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÙQ0P„q €H` :€ð¨à? ðÀ@ÿ0À?à€þà€þø` €8pà? €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"Dˆ!B„âA@„"Dÿˆ!B„"Dˆ!B„" B„"Dˆ!B„(À@uá (PÀø` €8pà?à€þà€þøOà@‚ D˜PáB† >„QâDŠ 8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z\ÈŽ"€Õ Hà?Ù dÇN ;vìØ ÈŽ;ì²ÈŽ;ì²ÈN »ìþ8`Aƒ&T¸aC‡!FàÀPÀþ8€@à@ÿþûàß¿þýøïß¿ÿþýà€þýûàß¿þýû÷À`à?ÿðÀ@à? 4xaB… 6tøð!€@„"Dˆ!B„"Dˆ!B„"Dˆ!B4!B„"Dˆ!B„"Dˆ!B„ˆ!B„"Dˆ! 0 : ü'P ÿ( ÿýøïß¿þýàß¿ÿþøOà@‚ D˜PáB† >„QâDŠ 8pà€E‹-Z´hÿÑ¢E‹-Z´hÑ¢E‹-Z\ÈŽ"‹²cÈ΢E‹-Z´(À(°hÑ"D°hÑ¢E‹8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-2‹-Z´hÑ¢E,"`‘ €‚,Z´hÑ¢E‹-Z´8À,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâBvX´ˆBv-Z´hÑ¢Å8@€E‹€E…`Ñ¢E‹-pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹ à?ÿ 4xaB… 6tøbD‰)V´x#Ed̘1cÆŒ Èø.€@Ș1cÆŒ3fÌXÀ2f̘1cÆŒ3f̘1cÆŒ3f¼ÈŽ"€Œ3f̘1cÆŠ8@@ÆŒ3f̘1cÆŒ8p cÆŒ3f̘1cÆŒ3f̘± d̘1cÆŒ3f̘1#Ed̘1cÆŒ Ș1cÆŒ3f̘1cÆ„81cÆŒ3f̘1cÆŒ3f̘1ãEv ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#ÿJœ(À(PÀþ8`Aƒ&T¸aC‡!F”8‘bE…8`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑbBX´hÑ¢E‹-Z´hÑ¢E‹ `Ñ¢E‹-Z´8À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼HÀ0bĈ#FŒ1bĈ#FŒ1bÄ‘EÕ„'p @uÿ H° Á‚ìdðŸÀ <ˆ0¡Â… :|1bD(À@uá (PÀ@ A‚ðŸÀ <øÿÿøOà@‚ D˜PáB† >„ñ!€H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰%J”(Ñ!H”(Q¢D‰%JŒ` :€ð¨à? 4xð <à„ÿ!ƒ!Bƒ€ð €"DøB„"Dˆ!B„"DˆÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGÙQ0P„Qâ@˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ'Nœ8qâĉ¨ <ªøOà@‚ @ÀAƒ,` €ƒþpÀ@@ÀAƒ„"€H` :xÕ OÀ€@@ þ0ðþÀ@ ` @ð€þøÀ@øOà@‚ D˜PáB† >„q €H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Ñ!H”(Q¢Dÿ‰%J”` :xÕ OÀ0   øü@ ÿ€ÿ `àÀ€@ €ÿ@ €@ €ÿ@ €àðÀ@ÿü üà? 4xaB… 6tHÀ>|øðáÇ>|øðáÇ>|øðáÇ>|øðáÇÙ=,` :xÕ OÀ²c'Ý?vÙÿýc'Ý?vÙ 8p ;€ÿ$XÐàA„ .dØÐáCˆ!8pà€DªƒPÀðÔü'P € ðÀÀø€@ÿ ðÀ@€àü0À,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(Q¢D‰%JD‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Qâ?ÕÁ¨Nà@xêþ(€@ø` €ø`à@ü@ €øÿ` € ÀÀÿü €@ÿ ðÀ?ÀÀÿü0À?ü0p €þ À?ü0À?ü0p €ø` €ðŸÀ <ˆ0¡Â… :àÀ>|øðáÇ>|øðáÇ>|øðáÇ>|øðáC„ì0P|øðáÇ>|øðáÇ>|øðáÇ>|ˆÝªƒž:uðàÁSWÝ@vÿØdÇN ;ì²{øðáÇ>|øð!AxXÀ@uá (PÀà€þ` €þ À?ü0pàÀ@ þà€þ8`Aƒ&T¸aC‡!FàÀ%J”(ÿQ¢D‰%J”(Q¢D‰%J”(QâAH”(Q¢D‰%J”(Q¢D‰%Jt%J”(Q¢D‰%þ0P@x TðŸÀÿ0€@ÿ@ð‚ ðÀ@ÿðÀ@ @ €þ@ €øà‚ÿ` þ€à?à€þà€þàø@ €ø` €ÿ$XÐàA„ .dØÐá@xøðáÇ>|øðáÇ>|øðáÇ>|øðáÃÿ‡"d÷° €êÂ8P :€ÿ d7Ý?vÙýc'Ý?vÙ 8p ;€ÿ$XÐàA„ .dØÐáCˆ!8pà€DªOà@êþ(À@ÿ ð€@ 0P  ðÀ@ü` à€þà? 4xaB… 6tøbÄ8 Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%€D‰%J”(Q¢D‰%J”(Q¢D‡(Q¢D‰%J”(Q €êÂ8P :€ÿ  À?ÿ 0À@ÿ üà€þàþ`àÀÿ  À@ÿ À?üðÀ@ÿ  À@ 0À?ÿø` €ø@ €ø@ ÿ0À?ü0À?ü'p Á‚"L¨p!Æ8pàÀÇ>|øðáÇ>|øðáÇ>|øðáÇ>|ø!»‡ ¨Nà@‚ÿ Èn ;ìØ±ÈN ;ìþ±ÈN ;ì²øOà@‚ D˜PáB† >„"€Hÿ` @uøOà@€ 0` @`à?ÿðÀ@à? 4xaB… 6tøbÄ8 Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢@ª8 À0ø` àÀÀÀÀð€@ü` ÿþ€þÀ@ø@ €þü  ðŸÀ <ˆ0¡Â… :àÀ>|øðáÇ>|øðáÇ>|øðáÇ>|øðáC„ìðð!Bv Ù=|øðáÇ>|ø €<,àáÇ ððáC>|øðáÇpàÀ‡>|øðáÇ>|øðáÇ>|øðáÇàáÇ>|øðáÇ>|øðáÇÀÇÿ>|øðáÇ ððáÇ <|øÀÇððáÇ>|ø° €<|øðáÇ>|øðáÇ>|øðáÇ>|øðáDz{XÀÇ Ù)d÷ðáÇ>|øÐC€ü'p Á‚4hРAƒ@€Aƒ 4Xþ8`Aƒ&T¸aC‡!F$àÀ%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢AH”(Q¢D‰%J”(Q¢D‰%Jt%J”(Q¢D‰%  Q¢Ä… Ñ!‰ÿ%"‰%J”(QâC(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(± ;‰H”(Q¢D‰%J”(QbA(€D‰%J”(Q¢D‰%J”(À$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Ä‚ Q¢D‰%J”(Q¢D‰%J”(Ñ!$J”(Q¢D‰%J@¢D‰%J”(Q¢D‰%’H"‰$ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ="dGÀÇ?~üø‘ €P0 : ÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹-Z´hÑ¢E‹-Z´hѢł°hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hñ €Õ Hà? 4xaB… 6tøbD‰)V´x‘"€`Ĉ#FŒ1bĈ#FŒ1bĈ1";ŠH° Áƒ*\Ȱ¡Ã‡#JœH±áþ8`Á‚ªOà@êþ( ÿýðŸ@ Pà¿þðŸ@`à?€ øOà@‚,Xÿ°`Á €@ÿ H°`AøÀ,hð „ 2làÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜx9räÈ‘#GŽ9rd9räÈ‘ãCÕ„'p @uÿ H° ÁƒÿáAÿ„"4@ ü'p Á‚"L¨p!ÆBŒ(Q"€Lœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Fd7‘ À,hð „ 2lèð!Ĉ'RlðŸÀ 0P@ÿx TðŸ@0P þ0À@8p €ÿ ü`àÀÿ8pàÀ 0pàÀÿøÀÀøÀ? ðŸÀ <ˆ0¡Â… 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7ZŽ9räÈ‘#GŽ92GŽ9räÀ@uá (PÀ,hð ‚pp €þ ÀÁƒ ` €ƒÿðŸÀ <ˆ0¡Â… :|1¢Ä‚80qâĉ'ÿNœ8qâĉ'Nœ8qâĉ'Nœ‘ÝD‚H° Áƒ*\Ȱ¡Ã‡#JœH±!À,XÀ@uá (PÀ8€0ð€þ0ÀÀü0ÀÀ8À?8pàÀ8pà?ÿ8pàÀÿø@ €þ8`Aƒ&T¸aCøOà@‚ D˜PáB† >„QâDŠ-^ĘQãF‹àÈ‘#GŽ9räÈ‘cCpäÈ‘#GŽ TžÀÕü'p Á‚8xÿ €ƒ pð„QâDŠ þ8`Á‚ªƒPÀðÔü'P €€@ÿ` @ÿ 8ð€øÀ@ðÀÀ ` ð€@ €0ð€€@üð€øOà@‚ D˜PáBÿ† 8pà? 4xaB… 6tøbD‰)V´xcF-€#GŽ9räÈ‘#GŽ €#GŽ9r„` :xÕ OÀ0   øü@ ÿ€` €ü@ øÀ@ü@ €àÿþðŸÀ <ˆ0¡Â… :|1âB(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(± ;‰%J”(Q¢D‰%ÿJ”(Ñ!€êàT'p „QâDŠ-^ĘQãFŠÀ‘#GŽ9räÈ‘#G†À‘#GŽ9F0P@x TðŸ@ø` €à€ÿü0À?ü À?ü0€@ø@ ø` €@ €À?0À?ü'p Á‚"L¨p!ÆBŒ¨À$J”(Q¢D‰%J”(Q¢D‰%ÿJ”(Q¢D‰%J,ÈN¢D‰%J”(Q¢D‰%Jt` @uøO @€ ü÷À`à@0pà@ø`à?øÀ@0€` €@ €þøÀ@ ` ÿü À?ü'p Á‚"L¨p!Æ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£ÆÀ‘#GŽ9räÈ‘#džàÈ‘#GŽ%PÀþ8€0ÀÀÿ À@ÿ þÀÀü €@ À@ÿ(€0ðÿ €@0À,hð „ 2lèð!Ĉ 8p@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Ä‚ì$J”(Q¢D‰%J”(Q¢D‡$J”(Q¢D‰@¢D‰%þpàÀ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q $J”(Q¢D‰%J”(Q¢D‰%>€D‰%J”(Q¢D‰H”(ñ!ÿ‰%J”(Q¢D‰%J”XÀ$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J,ÈN¢D‰%J”(Q¢D‰%Jt@¢D‰ðŸÀ <ˆ0¡Â… à:tèÐáApèСC‡:tèСC‡:tèСC‡:tèСCƒpèСC‡:tèСC‡:tèСC‡€C‡:tèСC‡:$À¡C‡€C‡:tèСC‡:tèСC8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ÿZ¼ˆ1£Æ;zDÈîãÇ?~üøQ"€?~üøñãGƒ8ðñãÇ?~üøñãÇàãÇ?~üøñãG…øøñãÇÿøøñãÇ?~üèÀ>~üøñãÇ?~üøñãÇÙ}üøñãÇ?J0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹-Z´hÑ¢E‹-Z´hѢŰhÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hq!‹-Z´hÑ¢E‹-Z´hñ€X´hÑ¢E‹-Z´hÿÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ @ Àÿü'P øïß@ÿü'P €ÿÀ@8ð€8ðÿøOà@‚ D˜PáB† >„˜À"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1¢Cˆ1bĈ#FŒ1"€ˆ#FŒ1bĈ#FŒ1bĈ8pà@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bÄÿˆ²‹1bĈ#FŒ1bĈ#.0P@x TðŸ@0P þ0À@8ð€þ0pàÀÿ 8ð€à? 4xaB… 6tøbBˆ1bĈ#FŒ1bĈ#FŒ1bĈ#€ˆ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈÿDŒ1bĈ#FŒ1bĈ#FŒ8À"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒè]Ĉ#FŒ1bĈ#ÿFŒq!€êÂ8P :€ÿ 0p `à? ü` €` €8ÀÀÿ8P €þ8`Aƒ&T¸aC‡!&pàÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bADŒ1bĈ#FŒ1bĈ#FŒø#FŒ1bĈ#Fü bĈ#FŒ1bĈ#FŒ1bÄ81bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bD‡ì"FŒ1bĈ#FŒ1bĈ  T :á©øÿO @0þ0À@þ8p €ø`à@€@ü@ à? 4xaB… 6tøbBˆ1bĈ#FŒ1bĈ#FŒ1bĈ#@Ĉ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bÄ"FŒ1bĈ#FŒ1bĈ#FàÀ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FtÈ.bĈ#FŒ1bĈ#FŒ¸À@uðª8ž:€ÿ €ÿþøàøïß¿þ8ÀÀÿÀ@ 8P €þàø` €ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒ1bĈ#FŒ1bĈ#FŒH"FŒ1bĈ#FŒ1bĈ#Ft#FŒ1bĈ#Fü bĈ#FŒ1bĈ#FŒ1bÄ81bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bD‡ì"FŒ1bĈ#FŒ1bĈ  TžÀÕü'P €ÿüðÀ? (ÀÀøÀ@ 0pà@ø@ € Pà?ÿþýðŸÀ <ˆ0¡Â… :|1!€DŒ1bĈ#FŒ1bĈ#FŒ1bĈ  bĈ#FŒ1bĈ#FŒ1bćˆ1bĈ#FŒ1¢@#FŒ1bĈ#FŒ1bĈ#pàÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#:d1bĈ#FŒ1bĈ#F\` :€ð¨à? @ 8ÿP € 8ð€ P Àü` €ø@ €‚øOà@‚ D˜PáB† >„˜À"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1âCDŒ1bĈ#FŒQ €H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pà? 4xaB… 6tøbD‰)V´xcF9vôˆÝÇ?~üøñ£DÕ„'p @uÿ `à@ ÀÀ `àÀÿÿ ðÀ@øÀ@@ €þà? 4xaB… 6tøbBˆ1bĈ#FŒ1bĈ#FŒ1bĈ#€ˆ#FŒ1bĈ#FŒ1bĈ@Ĉ#FŒ1bĈˆ1bĈ#FŒ1bĈ#FŒq €DŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÑ!»ˆ#FŒ1bĈ#FŒ1âBª8 À Pà¿þ(€@ 0p €þÿ 0ð€` €ÿ€@ü'p Á‚"L¨p!ÆBLàÀ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒñ!"FŒ1bĈ#FŒ8@Ĉ#FŒ1bĈ#FŒ1bĈ8p bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈÙEŒ1bĈ#FŒ1bĈˆ1bĈ00@Ĉ#FŒ1bBˆ1bĈ#FŒ1bĈ#FŒ1bĈ#ÿ@Ĉ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bÄ"FŒ1bĈ#FŒ1bĈ#F4@8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zDÈîãÇ?~üøQ"€8à? 4xð ð€ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒ1bĈ#FŒ1bĈ#FŒ("FŒ1bĈ#FŒ1bĈ#Ft#FŒ1bĈ#F bĈ#FŒ1bĈ#ÿFŒ1bÄ81bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bD‡ì"FŒ1bĈ#FŒ1bĈ DŒ1bĈ#FŒ1bĈ8p bĈ#FŒ1bĈ#FŒ1bĈ#FŒ(#FŒ1bĈ#FŒ1bĈ#>@Ĉ#FŒ1bĈ ˆ1bĈ#FŒ1bĈ#FŒq @øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ="d÷ñãÇ?~ü(À@€ê$ðŸÀ <ˆ0¡Â… :|ÿ1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-6€E‹-Z´hÑâC-Z´hÑ¢E‹-Z´hÑâ?°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÙY´hÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ €@ÿþøO @(ðß¿ÿøO @ À@€ øOà@‚P°`Á‚€@ÿ H°`AøÀ,hð „ 2lˆÀ:tèСCÿ‡:tèСC‡:tèСC‡:tè:tèСC‡:tèСC‡:tèСÆpèСC‡:tèСC‡ 8tèСC‡:tèСC‡:tèСC‡ÿ8pà? 4xaB… 6tøbD‰)V´xcF9vôˆÝÇ?~üøñ£DÕ„'p @uÿ `à@`à? 0P €ÿ@ €ÿ 8P €8pàÀÿ øÀÀ8pàÀþ` €ÿ$XÐàA„ ÿ.dØ!€8tèСC‡:tèСC‡:tèСC‡:tèÐ!:tèСC‡:tèСC‡:tèСÆàСC‡:tèСC‡pèСC‡:tèСC‡:tèСC‡ÿ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìè!»?~üøñãG‰ªOà@êþ(ÀÀ @ €ÿ 0ð€`à@ÿ8p @ÿ H° Á‚ ààÁ‚þ` €ƒ„Qâ@˜8qâĉ'Nœ8ÿqâĉ'Nœ8qâĉ'NŒÈnâĉ'Nœ8qâĉ'N0qâĉ'Nœ8qâĉ8pàÀĉ'Nœ8qâĉ'Nœ8qâĉ'&Àĉ'Nœ8qâĉ'Nœ8qbD˜8qâĉ'Nœ8‘ €Õ Hà?0 ð€@@ ÿü0ÿ(à@þûàß¿ÿþø÷À¿þýøï€ÿþø÷À?ÿþø÷À¿þýûà? 4xaB… 6tøbDÿ‰8p`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ81"»‰'Nœ8qâĉ'Nœ8À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-6€E‹-Z´hÑâD-þ`Ѣń°hÑ¢E‹-RpàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´¸E‹-Z´hÑ¢E‹- 0P@x TðŸÀ ð ÿýðŸÀ à? ÿ4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'Nœ8qâĉÀĉ'Nœ8qâĉ'Nœ8qbDLœ8qâĉ'NœXÀĉ`âĉÿP`âĉ'Nœ8q"A˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NŒÈnâĉ'Nœ8qâĉ'N0P@x TðŸÀ 0€Aƒ ðŸÀ <ˆ0¡Â… :|1¢D‡80qâĉ'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8ÿqâĉ'Nœ&Nœ8qâĉ'N,`âĉ'Nœ8qâĉ'Nœ8± €Lœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Fd7qâĉ'Nœ8qâĉ'¨ <ªøOà@‚ À Aƒ øOà@‚ D˜PáB† >„Q¢C˜8qâĉ'Nœ8qâĉ'Nœ8qâD„˜8qâĉ'Nœ8qâĉ'NŒ€‰'Nœ8qâĉ PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹)8pàFÿŒ1bĈ#FŒ1bĈ#FŒ#²Ãˆ#FŒ1bĈ£@ÕÁ¨Nà@xêþ8ü` 0ð€øÀ@ ` @ À?À,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(Q¢D‰%&‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q"DÕ„'p @uÿ H°`A€ì øOà@‚²3hÐ`Av dÇŽ;ì ,È® ;ƒ ÿ²3HÀ,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Ä‚ì$J”(Q¢D‰%J”(Q¢D‡ªƒPÀðÔü'P €þ À? 0ð€à€øÀ?ü@ €øOà@‚ D˜PáB† >„Ñ!€H”(Q¢D‰%J”(Q¢D‰%J”(Q¢Ä„(Q¢D‰%J”(Q¢D‰%J”ø$J”(Q¢D‰%J„` :xðÔÁƒ§„ñ€H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”XD‰%J”(Q¢D‰%J”è€D‰%J”(Q¢D‰%J”(À$J”(Q¢D‰%J”(Q¢D‰%J”(QâAH”(Q¢D‰%J”(Q¢D‰%J|%J”(Q¢D‰%J0 : ü'p ;vìØ dÇŽÝ@vÿ²(ðß?vÿþ±û÷ïßÀÿØýû7Pà¿ÿÿýû7Ý¿Ùýc÷Ý¿ÿØýû7Ý¿ÙýûÇîß¿ìþýøïß¿ÿþ±û÷ï»Ùýû÷oà¿ìþýc÷Ý¿ìþýc÷ï»ÿþ±øOà@‚ D˜PáB† >„ñ€H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”XD‰%J”(Q¢D‰%J”èÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹ À¢E‹-Z´hÑ¢E‹-Zl‹-Z´hÑ¢E‹ÿÿXdgÑ"AvÙ5dgÑbAv ÙY´hÑ¢E‹8pÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-.dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p €þ8pàÀþÀ,hð „ 2lèð!Ĉ'>pàÀŠ)R¤H‘"EŠ)R¤H‘"EŠ)EŠ)R¤H‘"EŠ)R¤H‘¢@P¤H‘"EŠ)Rœ@";vìØQ¤X;vì²cÇŽBvìØ±£Hq!;…ì(R¤H‘"EŠ8p€"EŠ)R¤H‘"EŠ)R¤Hÿ‘"EŠ)R¤ØEŠ)R¤H‘"EŠ)R4` :€ð¨à? ü`àÀ` €øOà@‚ D˜PáB† >„QâÄ‚8@‘"EŠ)R¤H‘"EŠ)R¤H‘"E‚ H‘"EŠ)R¤H‘"EŠ)Rü)R¤H‘"EŠ' H‘"EŠ)R¤H‘"EŠ)&pàÀŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘bCv)R¤H‘"EŠ)R¤HÑ €êÂ8P :€ÿ 0ð€8p €ðŸÀÿ <ˆ0¡Â… :|1¢Ä‰8p€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ@‘"EŠ)R¤H‘"EŠ)R¤ø)R¤H‘"EŠ)PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹)8pàFŒ1bĈ#FŒ1bĈ#FŒ#²Ãˆ#FŒ1bĈ£@ÕÁ¨Nà@xêþ(€þ€ ` @þ€@þ8`Aƒ&T¸aC‡!F”8‘ €P¤H‘"EŠ)R¤H‘"EŠ)ÿR¤Hq P¤H‘"EŠ)R¤H‘"EŠ)þEŠ)R¤H‘"EŠªOà@êþ8`Á‚Ù øÝ?vÿ ø ;þ8`Á‚ì²3HÀ,hð „ 2lèð!Ĉ'RTàÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±âBv+V¬X±bÅŠ+V¬èÀ@uðª8ž:€ÿ  À?ÿ ð€@€øà? 4xaB… 6tøbD‰ 8pàEŠ)R¤H‘"EŠ)R¤Hÿ‘"EŠ€"EŠ)R¤H‘"EŠ)R¤HñP¤H‘"EŠ)R¤` :xðÔÁƒ§„QâDŠ-^¤àÀ1bÿĈ#FŒ1bĈ#FŒ1bŒÈ#FŒ1bĈ#FŒ T :á©øO @àøÀÀþà0P €€@ÿÿ H° Áƒ*\Ȱ¡Ã‡#BpàÀ‰%J”(Q¢D‰%J”(Q¢D‰%J”ø%J”(Q¢D‰%J”(Q¢D‰!@¢D‰%J”(Q¢D‰ TžÀÕü'p Á‚ÙdgÐ ;ƒÿØ dg ;€ÿ$XÐàA„ .dØÐáCˆ%N¤Xqÿ €X´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êàT'p „QâDŠ8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z\È΢E‹-Z´hÑ¢E‹¨ <ªøO @ÿ ðÀ?þ0ð€à€à€þà€þ8`Aƒ&T¸aC‡!F„àÀ%J”(Q¢D‰%J”(Q¢D‰%J”(%J”(Q¢D‰%J”(Q¢D‰!@¢D‰%J”(Q¢D‰ Tž:xðÔÁƒ§Î ;vìØ dÇŽ@vìþ±c7»ìرÈŽÿ;vÙ±c'Ý?v ÙI”(Q¢D‰%J”(QbD(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(± ;‰%J”(Q¢D‰%J”(Ñ!€êÂ8P :€ÿ ðÀ@ÿü0À@ÿø@ þ`àÀÿü0À?ü0À,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(Q¢D‰%@¢D‰%J”(Q¢D‰%J”(Q"DH”(Q¢D‰%J”(ñ €êàÁSž:xðÔd7Ý?vÿÙýc'Ý?vÿØýc'Ý@vÿØ d÷Ý@vÿØýcÇD‰%J”(Q¢D‰%FpàÀ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ ²“(Q¢D‰%J”(Q¢D‰PÀþ(€@ø@ þ0ð€@  0P ` ðŸÀ <ˆ0¡Â… :|1"D(Q¢D‰%J”(Q¢D‰%J”(Q¢Äˆ Q¢D‰%J”(Q¢D‰%J”(ñ!H”(Q¢D‰%Jÿ”(ñ €êàT'p „ÈÀ"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ""FŒ1bĈ#FŒ‘ €êàÁSž:xðÔEÈ®!ÿ;ƒì²;ÈŽ »ˆÙýcÇ]Ĉ#FŒ1bĈ#8pà@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ²‹1bĈ#FŒ1bĈ#.0P@x TðŸ@à€þ` €øàø`àÀ ðÀ@ÿ ðÀ?€ ü÷o €þýûà? 4xaB… 6tø"Cˆ1bĈ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bć1bĈÿ#FŒ1bĈ T :á©øOà@‚ ²3hð;ƒì²3øAv üÇî;ƒÙü'p Á‚"L¨p!ÆBŒ(q¢C H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)6dG‘"EŠ)R¤H‘"EŠ ¨ <ªøO @ €@ ðÀ@ÿü À@ÿ 8P €þà€þø` @ü0À,hð „ 2lèð!D†81bĈ#FŒ1bĈ#FŒ1bĈ#ÿ bĈ#FŒ1bĈ#FŒ1bDˆˆ1bĈ#FŒ1bÄ‚ªƒO„ÈÀ"FŒ1bĈ#FŒ1bĈ#FŒ1"Dˆ1bĈ#FŒ1bĈ#FŒñ!DŒ1bĈ#FŒ1bAÕÁ¨Nà@xêþ(@vÙ dÇŽ»ìØ ü@ÿþýc÷ïß¿ìþ±û÷Ý¿ÿ±øOàÀìØ±c÷Ý@vÿ²(ð»ìþÿ8 @vÿ H° Áƒ*\Ȱ¡Ã‡#JœèÀ(R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ ÙQ¤H‘"EŠ)R¤H‘"Eƒ(R¤H‘"EŠ)R¤HÑ!€P¤H‘"EŠ)R¤H‘"EŠ)R¤Ø)R¤H‘"EŠ)R¤H‘"EŠ@‘"EŠ)R¤H‘¢BÕÁƒ§„Q"B˜8qâĉ'Nœ8qâĉ'Nœ8qbBLœ8qâĉ'Nœ8qâĉ'J€‰'Nœ8qâĉ'0P<€ê„§à? ü@ 0h€Áþ0hÀ,hð „ 2lèð!Ĉ'R¬8À,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâBv-Z´hÑ¢E‹-Z´(À@uá (PÀø` €ø` @(€@ðÀ@ÿÿ ðŸÀ <ˆ0¡Â… :|1¢D„80qâĉ'Nœ8qâĉ'Nœ8qâÄ„˜8qâĉ'Nœ8qâĉ'N”€‰'Nœ8qâĉ'0P„Qâ@˜8qâĉ'Nœ8qâĉ'Nœ8qbA˜8qâĉ'Nœ8qâĉ'N”€‰'Nœ8qâĉ'0P„Qâ@˜8qâĉ'Nœ8qâĉ'Nœ8qbALœ8qâĉ'Nœ8qâĉ'NÀĉ'Nœ8qâĉ¨„Qâ@˜8qâĉ'Nœ8qâĉ'Nœ8q"A˜8qâĉ'Nœ8qâĉ'N”€ÿ‰'Nœ8qâĉ'"0P<€ê„§à?  PÀ@ÿðO€@ ø'` € (@ € ø'` €üðOÀÀþ (àŸ8PÀ,hð „ 2lèð!Ĉ'pàÀŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘bCv)R¤H‘"EŠ)R¤HÑ €Õ Hà?@ €` € @ @ ü'p Á‚"L¨p!ÆBŒ(q €ÿLœ8qâĉ'Nœ8qâĉ'Nœ8‘ &Nœ8qâĉ'Nœ8qâĉ'`âĉ'Nœ8qâĉ T„QâDŠ8pà€E‹-Z´hÑ¢Eÿ‹-Z´hÑ¢E‹-Z\È΢E‹-Z´hÑ¢E‹°hÑ¢E‹-Z´hÑ"C°hÑ¢E‹-Z´hÑ¢E‹-ZD‹-Z´hÑ¢E‹-Z´hñ!,Z´hÑ¢E‹-Z` @uøOà@ €@ü €@À?ÿ €@ À@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢@°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÙY´hÑ¢E‹-Z´hÑ¢@ª8 À,hð „ ÿ2lèð!Ĉ'R¬¨À,Z´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z|‹-Z´hÑ¢E‹°hñˆ°hÑ¢E‹-Z´h±!€X´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$XÐàAƒøï€ÿ$XÐà@ÿ H° Áƒ*\Ȱ¡Ã‡#JàÀ'Nœ8qâĉ'Nœ8qâĉ'F€‰'Nœ8qâĉ'Nœ8qâD‰0ÿqâĉ'Nœ8qâĆ&N(0qâĉ'Nœ8qâĉ8p`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ81"»‰'Nœ8qâĉ'Nœ8À@uá (PÀ,hð B",à? 4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'Nœ8qâĈ˜8qâĉ'Nœ8qâĉ'Nœ€‰'Nœ8qâĉ':0qâĉ'Nœ8qâĉ'NœXÀ&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâÄÿ‰#²›8qâĉ'Nœ8qâĉ TžÀÕü'p Á‚"€!‚þ8`Aƒ&T¸aC‡!F”8À&Nœ8qâĉ'Nœ8qâĉ'NŒ€‰'Nœ8qâĉ'Nœ8qâĉ˜8qâĉ'Nœ8q¢Cª8 À,hð „ 2lèð!Ĉ'R¬hñ"EÀˆ#FŒ1bĈ#FŒ1bĈcDv1bĈ#FŒ1b` :xÕ OÀÀ@0€@`à?ÿÿø€ À@  ü` ü'p Á‚"L¨p!ÆBŒ8À$J”(Q¢D‰%J”(Q¢D‰%J”$J”(Q¢D‰%J”(Q¢D‰%B‰%J”(Q¢D‰%J<` :€ð¨à? 4xð @vü'p Á‚ ²+ÈîàÁƒìdðŸÀ <ˆ0¡Â… :|1¢Ä‰80qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ‘Ýĉ'Nœ8qâĉ'Nœ` :xÕ ÿOÀ` @ÿ ð€@ÿ 0ÀÀþ@ €8pà?ÿ ðþà? 4xaB… 6tøbÄ8 Q¢D‰%J”(Q¢D‰%J”(Q¢Dˆ(Q¢D‰%J”(Q¢D‰%J”%J”(Q¢D‰%J”ˆÀ@uðàÁS§‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰¨@uÂSðŸÀìØ±ÈŽ@vìØ dÇŽ@vì²cÇN »ÿØ dÇŽ@vìØ±Èn »ìرc'»ìØ dÇŽ@vÿرÈÿn »ì8À,hð „ 2lèð!Ĉ%8pàÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qbDv'Nœ8qâĉ'Nœ8q"€êÂ8P :€ÿ 0À?ü €ø` €þð€@ü0ÀÀÿø` €ø` €ÿ$XÐàA„ .dØÐáCˆ8pà€D‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(QbDH”(Q¢D‰%J”(QbBÕÁ¨Nà@ÿxêþ(Ý@vÿØ d7Ý@ìþ±Èn »Ù øï»ÿþ±ûÇîß¿ìþ±û÷ï»ìþýûÇî»ìþ±ûÇîß?vÿþýc÷Oà¿ìþ±û÷ï»ìþ8 @vÿ H° Áƒ*\Ȱ¡Ã‡#J”àÀ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉÙMœ8qâĉ'Nœ8qâĉT'p A€ÿ € €0ÿøÀ? (€@0€@øOà@‚ ÿD˜PáB† >„q €H”(Q¢D‰%J”(Q¢D‰%J”(ñ!$J”(Q¢D‰%J”(Q¢D‰%F€D‰%J”(Q¢D‰%&0P„‘ €H”(Q¢D‰%J”(Q¢D‰%J”(Ñ!$J”(Q¢D‰%J”(Q¢D‰%F‰%J”(Q¢D‰%JL` :€ð¨à?Ù d÷@vÙýc7Ý?vÙ d÷ÝÀì²ûÇn »ì²c÷Ý@vÿØ d'@vÙýc7Ý?vÙ±ûÇnàÀÙü'p Á‚"L¨p!ÆBŒ(Q"€Lœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Fd7qâĉ'Nœ8qâĉ'˜8qâĉ'Nœ8qÿâĉ8p`âĉ'Nœ8qâĉ'Nœ8qâD‡˜8qâĉ'Nœ8qâĉ'Nœ€‰'Nœ8qâĉ'F0 : ü'p ;vì²ÈŽ»ìرc'@vìØ d7pà?vìØ dÇŽ»ìØýc÷;vì²(Ý@vìØ d7@vìþ±ûÇN ;ì²Èà? 4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ81"»‰'Nœ8qâĉ'Nœ8À@€ê$ðŸÀ <ˆ0¡Â…ÿ :|1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‚°hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢Eƒ,ZŒÈn!;‹ Ù1dgÑ¢E‹-Z´ØÀ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâBv-Z´hÑ¢E‹-Z´(À@uá (PÀ,hð B‚H˜@„@„ &L˜0a„ &L˜p €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨‘ lܸqãÆ7nܸ1#lÿܸqãÆ7*°qãAv Ùm4ÈN!»7nܸqã?ظqãÆ7nܸqãÆ7nÜèÝÆ7nܸqãÆ‹ªOà@êþ8`Aƒþ A H˜Ð €H˜0a„ &L˜0a„ &pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5ÀÆ7nܸqãÆ5`ãÆ7nܸq!€7nܸqãÆ72pàÀ7nܸqãÆ7nܸqãÆÙmܸqãÆ7n¼` :€ð¨ÿà? 4xá?0!€„ 0 a„ &L˜0a„ &L˜Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔH7nܸqãÆ7nÔ€7nܸqãÆ…T'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŠ8€#FŒ1bĈ#FŒ1bĈ#ƈì0bĈ#FŒ1bÄ(À@uðª8ž:€ÿ @ À?À@ðÀÀ` €@ÿ@ (ÀÀüà€þ0þ8`Aƒ&T¸aC‡ 8pàDˆ!B„"Dˆ!B„"Dˆ!B„( B„"Dˆ!B„"Dˆ!B„Q @„"Dˆ!B„"Dˆ TžÀÕü'p Á‚ÈN @€ÿ$Xð@vþûÇà? 4xp ;„Ùü'p Á‚"L¨p!ÆBŒ(Q"€Lœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Fd7qâĉ'Nÿœ8qâĉ'¨@uÂSðŸ@à€þà€þàøï€ÿþøO @ÿ ðÀ@ÿ ÀÀ` ø€@ÿ ðŸÀ <ˆ0¡Â… :|hÀ B„"Dˆ!B„"Dˆ!B„"D€"Dˆ!B„"Dˆ!B„"Ä€"Dˆ!B„"Dˆ ¨„QbD˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NŒÈnâĉ'Nœ8qâĉ'N0qâĉ'Nœ8qâĉ8pàÀĉ'Nœ8qâĉ'Nœ8qâĉ 0qâĉ'Nœ8qâĉ'Nœ8'Nœ8qâĉ'Nœ(À@€ê$ðŸÀìØ±ÿÈn ;vì²cÇŽ@vÙ±c7ð»Ù±c7»ìþd'Pà¿ìþýøï»ÿØýûÇîß¿ÿþ±û÷ï»ÿØýc÷ï»ÿØýûÇîß¿ìþ8`Aƒ&T¸aC‡!F”À&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ#²›8qâĉ'Nœ8qâĉ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B°hÑ¢E‹-Z´hÑ¢E‹-V‹-Z´hÑ¢E‹-Z´hñ!,Z´hÑ¢E‹-ZTÀ¢ÿE‹'²cÈ΢E‹-Z´h‘!€X´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$XÐàA„ €B@B *T¨P¡B… *T¨PaAøOà@‚ D˜PáB† >„QâDŠ-^ĘQ#4jÔ¨Q£F5jÔ¨q!hÔ¨Q£F5Z Q£FÙ)d§Q£F5j<àÀ5jÔ¨Q£F5jÔ¨Q£F5d§Q£F5jÔ¨Q£AÕ„'p @uÿÿ H° Áƒ@€Â0€@ *T¨P¡B… *T¨P¡Â8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£FhÔ¨Q£F5jÔ¨QãBhÔ¨Q£F5^ Q£F5jÔ¨Q£Æ‹8 Q£F5jÔ¨Q£F5jÔ¨QcAv5jÔ¨Q£F50P@x TðŸÀ <ˆ0á@ Ph€A *T¨P¡B… *T¨P¡Â8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1cFÐÿ¨Q£F5jÔ¨Q£Æ…ШQ£F5j¼` @uøOà@‚ D˜PáB† >„QâDŠ-^¤àÀ1bĈ#FŒ1bĈ#FŒ1bŒÈ#FŒ1bĈ#FŒ T :á©øO @` ` øÀ@@ €ÿ` À@ 0p ÿøà€ €ÿ$XÐàA„ .dØÐáÆ8"Dˆ!B„"Dˆ!B„"Dˆ"ÿDˆ!B„"Dˆ!B„"Dˆ "Dˆ!B„"Dˆ!B<` :€ð¨à? ,@ÿØýcðŸÀÙ$(À,hð „ 2lèð!Ĉ'R¬À,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâBv-Z´hÑ¢E‹-Z´(À@uðª8ž:€ÿ  À@ÿðÀ@ÿ ðþà€þ8À@ÿ ðÀ@€àü0À,hð „ ÿ2lèðaC€"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B<` :xðà©SpàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´¸E‹-Z´hÑ¢E‹- `Q!‹-V`Ñ¢E‹-þpàÀ‹-Z´hÑ¢E‹-Z´hÑ¢D°hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hѢņªƒž:uðàÁSWÝ@vÿØd']AvÿØýcWCv-Z´hÑ¢E‹-Z$àÀÿ-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hq!;‹-Z´hÑ¢E‹-ZÀ¢B-ZŒ-Z´hÑ¢@°hÑ¢E‹-Z´hÑ¢E‹-J@ À,hð „ 2lèð!Ĉ'R¬hñ"Æ‹1cÆŒ3f̘!€êÂ8P :€ÿ d7Ý?vÙýc'Ý@ìþ±ûÇn »ì8À,hð „ 2lèð!Ĉ'R¬øÀ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâBv-Z´hÑ¢E‹-Z´(€E‹-Z´ÿhÑ¢E‹8pà€E‹-Z´hÑ¢E‹-Z´hQ",Z´hÑ¢E‹-Z´hѢҰhÑ¢E‹-Z´hÑ!€Õ Hà?Ù±cÇN ;vì²ûÇn @vÿØ dÇŽ@vÙ d'Ý@vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±âC°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÙY´hÑ¢E‹-Z´hÑ¢@ª8 À,hð „ 2lèð!Ĉ'R¬¨À,Z´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢ÿE‹-Z|‹-Z´hÑ¢E‹°ÈÎ"Av ÙY´hÑ¢E‹-Z´h‘ €X´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$XÐàA„ €B…(LÀ?*T¨P¡B… *T¨P¡AøOà@‚ D˜PáB† >„QâDŠ-^ĘÑ"4jÔ¨Q£F5jÔ¨‘!4jÔ¨Q£F5ÈŽ;v²SÈN£F5jÔ¨QcCШQ£F5jÔ¨Q£Fÿ5jÔ¨± ;5jÔ¨Q£F ¨ <ªøOà@‚ D˜p €Px€B  P¡B… *T¨P¡B… 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ Q£F5jÔ¨Q£F @£F5jÔ¨Q#5jÔ¨Q£F5^pàÀ5jÔ¨Q£F5jÔ¨Q£F ²Ó¨Q£F5jffl €êÂ8P :€ÿ$XÐàA„  !…(€À@ *T¨P¡B… *T¨Ð €üÿ'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌX4jÔ¨Q£F5jÔ¨q!4jÔ¨Q£F5þ0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/RpàÀŒ1bĈ#FŒ1bĈ#FŒ1Fd‡#FŒ1bĈ#FªƒPÀðÔü'P 00ü`  ÀÀ@ 0P €@ þ  ðŸÀ <ˆ0¡Â… :|Àÿ B„"Dˆ!B„"Dˆ!B„¢B@„"Dˆ!B„"Dˆ!B„"A@„"Dˆ!B„"Dˆ  TžÀÕü'p Á‚ÙdgРÁìØ±cgРAƒ²3hð;ƒÙü'p Á‚"L¨p!ÆBŒ(ñ!€Lœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Fd7qâĉ'Nœ8qâĉ'¨@uÂSðŸ@àþà€þ À?ü0À?ÿ8À?ÿ8pà?ü À? ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"Dˆ!*Dˆ!B„"Dˆ!B„"Dˆ!ˆ!B„"Dˆ!B„q!€êàÁƒ§N„àÀ!B„"Dˆ!B„"Dˆ!B„!@„"Dˆ!B„"Dˆ!B„â@@„"Dˆ!B„"Dˆ  T„QâDŠ-^Ęq"4jÔ¨Q£F5jÔ¨‘!4jÔ¨Q£F50P@x TðŸ@ì²ûÇn »ì²ÈN ;ì²ûÇn »ì²c÷ÝÀìþ±Èî;ì²ûÇn »ì²ûÇN »ì²ûÇN »ÿì8À,hð „ 2lèð!Ĉ8pàÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qbDv'Nœ8qâĉ'Nœ8q"€‰'Nœ8qâĉ'NœxÀ&Nœ8qâĉ'Nœ8qâĉ'Nü'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉPÀþ8;vì²cÇn »ì d7;vÙ d'»ì²cÇŽÝ@vìØ±ÈN ;vì²cÇŽ@vìØ d'@vìØ dÇN ;ìÿ²Èn ;€ÿ$XÐàA„ .dØÐáCˆ%:pàÀ‰'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĈì&Nœ8qâĉ'Nœ8qâDª8 À,hð „ 2lèð!Ĉ'R¬¨À,Z´hÑ¢E‹-Z´hÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-B€E‹-Z´hÑ¢E‹XdgÑâDvÿ±cÈ΢E‹-Z´h1!€X´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$XÿÐàA„  @!B @B *T¨P¡B… *T¨Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1f”5jÔ¨Q£F5jd5jÔ¨Q£FHdÇŽ;²cÇŽ]Fv ÙiÔ¨Q£F 8pà€F5jÔ¨Q£F5jÔ¨Q£FÙiÔ¨Q£F5jÔhÀ@uá (PÀ,hð „ !… @ … *T¨P¡B… *ThÀþ8`Aƒ&T¸aC‡!F”8‘bEÿ‹1fŒ5jÔ¨Q£F5jÔ¸4jÔ¨Q£F5 Q£F5jÔ¨Q£Æ‹8 Q£F5jÔ¨Q£F5jÔ¨QcAv5jÔ¨Q£F50P@x TðŸÀ <ˆ0á@(D@¡B‚ P¨P¡B… *T¨P¡B…8pà? 4xaB… 6tøbD‰)V´xcƈШQ£F5jÔ¨Q£F†Ð¨Q£F5jÔXÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼HÀ0ÿbĈ#FŒ1bĈ#FŒ1bÄ‘FŒ1bĈ#FŒ¨@uÂSðŸ@À@À@ð€ €@ÿ€  ` @ð€þøÀ@øOà@‚ D˜PáB† 6pàÀ‡>|øðáÇ>|øðáÇ>|ø!>|øðáÇ>|øðáÇ>|øðaB<|øðáÇ>|øðáǨ <ªøÿOà@‚ d'P À²8pàÀÿØ Ènà@ìØ±cðŸÀ <ˆ0aAv Ù)T¨P¡B… *T¨P¡B… "pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑ#Bv?~üøñãÇ T :á©øO @ ð€@ÿ ðÀ@ÿàþà@þûàß¿þ(À?ü0À?0pà@@ þ À?ü'p Á‚"L¨p!Æ8pàÀÃÿ‡>|øðáÇ>|øðáÇ>|È>|øðáÇ>|øðáÇ>|ø!<|øðáÇ>|øðáǨ|øðáÇ pàÀ‡>|øðáÇ>|øðáÇ>|øðáÇ>|øð!Bv>|øðáÇ>|øðáǨ <ªøO @(ðß?ÿþýðïß?ÿüû÷À?ÿþýðï€ÿþ øÀ¿ÿþÿø÷o Àÿøàß¿þ øÀ¿ÿü'p Á‚ÿ €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã†8ððáÇ>|øðáÇ>|øðáÇ.€‡>|øðáÇ>|øðáÇ>|ˆ>|øðáÇ>|øðáǪƒž:uðàÁS÷P ;ì²cÈ!»‚ì²{øðaAvÙ1d÷ðáÇ>|øðáC8ððáÇ>|øðáÇ>|øðáÇ>|øðáÇ>DÈîáÇ>|øÿðáÇ>|øðáBÕ„'p @uÿ @ €ÿ` €ø` €(ÀÀ(À@ÿ ðÀ@þ0pàÀ €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã†8ððáÇ>|øðáÇ>|øðáÇ.ÀÇ>|øðáÇ>|øðáÇ>L€‡>|øðáÇ>|øðáCÕÁ¨Nà@xêþ8;vì²cÇN ;vÿØ üÇî;vÿØýc÷;ìØ dÇŽ@ÿvìØ±ÈN ;vì²8ð;vì²cÇî;vÙ±cÇn ;vì²ûÇŽÝ@vìØ d÷;ìØýc7pàÀìþ8`Aƒ&T¸aC‡!FtàÀ%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%d'Q¢D‰%J”(Q¢D‰%:0P@x TðŸ@àþà€þàþà€ÿ0À?ü0À?ü €@ü` à€þà? 4xaB… ÿ6tØÀ>|øðáÇ>|øðáÇ>|øðáÃ…xøðáÇ>|øðáÇ>|øðáÇ ððáÇ>|øðáÇ>|` :xÕ OÀ²Èî»ìþ±@ÿþ±û÷Ý?ÿþ±ûÇà?Ùýc7Ý?vÿØ d÷ÝÀì²ûÇN ;ìþ±Èî»ìþ±c'Ý?vÙýcÇN »ì²8pà@vÿ H° Áƒ*\Ȱ¡Ã‡#:pàÀ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ ²“(ÿQ¢D‰%J”(Q¢D‰PÀþ(À@ @ €@` øÀ@   ` @`à?ÿðÀ@à? 4xaB… 6tØÀ>|øðáÇ>|øðáÇ>|øðáC…ððáÇ>|øðáÇ>|øðáÇÀÇ>|øðáÇ>|øð!€êàÁƒ§N„QâDŠ-^ʱ!hÔ¨Q£F5jÔ¨QãBШQ£F5jÔˆ€F5jÔ¨Q£F/8pà€F5jÔ¨Q£F5jÔ¨Q£FÙiÔ¨Q£F5jÔhÀ@uá (PÀ,hð „€B… `€B… *T¨P¡B… *àÀÿ H° Áƒÿ*\Ȱ¡Ã‡#JœH±¢Å‹36€F5jÔ¨Q£F52€F5jÔ¨Q£Æ„T'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŠ8€#FŒ1bĈ#FŒ1bĈ#ƈì0bĈ#FŒ1bÄ(À@uðª8ž:€ÿ @  @ € ` 0€À@` À@ 0p ÿøà€ €ÿ$XÐàA„ .dÿØÐ¡BxøðáÇ>|øðáÇ>|øðáÇàáÇ>|øðáÇ>|øðáÇ&ÀÇ>|øðáÇ>|øðá@Õ„'p @uÿ H° AþÀ @ü'p Á‚ÿ(ðß?ÿ H° Áƒ à? 4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ81"»‰'Nœ8qâĉ'Nœ8À@uðª8ž:€ÿ  À@ÿðÀ@ÿ ðÿþà€þøà€àþ` @ÿ ðÀ@€àü0À,hð „ 2lèP!€<|øðáÇ>|øðáÇ>|øðáÇàáÇ>|øðáÇ>|øðáÇ&ÀÇ>|øðáÇ>|øðá@ÕÁƒO:xðà©{ˆÀ@ < €A€!€‡>|øðáÇ>DàÀ>|øðáÇ>|øðáÇ>|øðáÇÿ>|øðáC„ì>|øðáÇ>|øðáÇ.0P@x TðŸ@ Pà¿þýûàß¿þø÷ï€þýûàß?ÿþý(ð€þøàß¿ÿýðïß¿þýû÷o €þýûàß@ÿ H à€þà? 4xaB… 6t¨À>|øðáÇ>|øðáÇ>|øðáÃxøðáÇ>|øðáÇ>|øðáÇ àáÇ>|øðáÇ>|øp €êàÁƒÿ§N|øðáÇ"pàÀ‡>|øðáÇ>|øðáÇ>|øðáÇ>|øð!Bv>|øðáÇ>|øðáǨ <ªøO @ ø€@ü0À?  À@@ €ÿø€@ü0À?8p à€þà? 4xaB… 6t¨À>|øðáÇ>|øðáÇ>|øðáÃxøðáÿÇ>|øðáÇ>|øðáÇ ððáÇ>|øðáÇ>|HÀ@uðª8ž:€ÿ À?` üð€` @ @ ÿ @ à À?ðÀÀøOà@‚ D˜PáB† >„QbD˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NŒÈnâĉ'Nœ8qâĉ'N0P@x TðŸ@àþà€þàÿþà` €ø@ €ø` €8pà? €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡C…8ððáÇ>|øðáÇ>|øðáÇ€‡>|øðáÇ>|øðáÇ>|˜>|øðáÇ>|øðáÇ T :á©øO @ðÀ@ÿ ðÀ?0ÀÀø@ €À@ÿ ð€@ü0À?ø@ €ÿðŸÀ <ˆ0¡Â… :|1¢Äˆ80qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ‘Ýĉ'Nœ8qâĉ'Nœ` @uøO @00  €` @0€  8ÿø@ €ÿ H° Áƒ*\Ȱ¡C…8ððáÇ>|øðáÇ>|øðáÇÀÇ>|øðáÇ>|øðáÇ>Lÿ>|øðáÇ>|øðáÇ T„QbD˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NŒÈnâĉ'Nœ8qâĉ'N0±!€‰'0qâ@'Nœ8qâ?˜8qâĉ'Nœ8qâĉ'NœØ'Nœ8qâĉÿ'Nœ8qâĉÿ`âĉ'Nœ8qâĉ#¨„QâDŠ-^¤àÀ1bĈ#FŒ1bĈ#FŒ1bŒÈ#FŒ1bĈ#FŒ T :á©øOà@@ þ ÿü0ð€€@ ` @ð€þøÀ@øOà@‚ D˜PáB† >„hÀ"FŒ1bĈ#FŒ1bĈ#FŒ¸#FŒ1bĈ#FŒ1bĈ#Fü€ˆ#FŒ1bĈ#FŒ1!€êÂ8P :€ÿ$X @þðÀ @ @ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±bD°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÙY´hÑ¢E‹-Z´hÑ¢@ÕÁÿ¨Nà@xêþ(€@ø@ þà€ø@ €ÿ à€ 8P @ €ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡ 8pà@Ĉ#FŒ1bĈ#FŒ1bĈ@Ĉ#FŒ1bĈ#FŒ1bĈÿ bĈ#FŒ1bĈ#FL` :xðà©S„QâDŠ!8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z\È΢E‹-Z´hÑ¢E‹°ø€E‹°hÑ¢E‹8pà€E‹-Z´hÑ¢E‹-Z´hQ ,Z´hÑ¢E‹-Z´hÑ¢Eˆ°hÑ¢E‹-Z´hÑâAÕÁƒO:xðà©ÿ;@ €‚(à€ `À¢E‹-Z´hÑ¢E‹8pÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-.dgÑ¢E‹-Z´hÑ¢E‹X|À¢E‹À¢E‹-Z\àÀ-Z´hÑ¢E‹-Z´hÑ¢Åà? 4xaB… 6tøbD‰)V´x#Fd̘1cÆŒ3fÄ` :€ð¨à?ðÀ@ÿ0P €þà€ðŸÀ <ˆ0¡Â… :|1¢Ä‰+BpàÀ‹-Z´hÑÿ¢E‹-Z´hÑ¢E‹-Z´¸E‹-Z´hÑ¢E‹- `Ñ¢E‹-Z´hÑ¢E†8`Ñ¢E‹-Z´hÑ¢E‹-Zü‹-Z´hÑ¢E‹-Z´h"X´hÑ¢E‹-Z´hñ €Õ Hà?€þ(À? €@0À,hð „ 2lèð!Ĉ'R¬À,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâBv-Z´hÑ¢E‹-Z´(À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰ÿ+*pàÀ‹-Z´hÑ¢E‹-Z´hÑâ?X´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E„,Z$€!‹-Z´hÑ¢E‹-pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´¸E‹-Z´hÑ¢E‹- 0P@x TðŸÀ <øðB„ÿ€áA€¡A@xÀ?"ü!B„"Dˆð€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌX4jÔ¨Q£F5jÿÔ¨‘!4jÔ¨Q£F5B ñ"…4jÔ¨Q£F5:pàÀ5jÔ¨Q£F5jÔ¨Q£F ²Ó¨Q£F5jffl €êÂ8P :€ÿ$XÐàA4ààÁ‚8xðà? pð A4ààÁƒ„QâDŠ-^Ę‘ hÔ¨Q£F5jÔ¨Q#ChÔ¨Q£F5jŒ` :€ð¨à? 4xð€!B„ÿ€P €ÿÿ$XÐàA„ .dØÐáCˆ%N¤(À*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅ…ì*V¬X±bÅŠ+V¬XÑ!€êàT'p „QâDŠ-^Ęq 4jÔ¨Q£F5jÔ¨‘!hÔ¨Q£F5j”` :xðà©S„‘!€H”(Q¢D‰%J”(Q¢D‰%J”ø%J”(Q¢D‰%J”(Q¢D‰%þ€D‰%J”(Q¢D‰%J”hà 4xaB… 6tøbD‰)V´xãB€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑ#Bv?~üøñãÇ TžÀÕü'p €À? ü`à?ÿ À?€ øOà@‚þà€þÿà? 4xaB… 6tøbD†8 Q¢D‰%J”(Q¢D‰%J”(Qâ?H”(Q¢D‰%J”(Q¢D‰%J”%J”(Q¢D‰%J”(Q¢A€$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGÙ}üøñãÇ?J0P@x TðŸÀÿ À@ÿ@Aÿ À? à€þà€þ8`Aƒ&T¸aC‡!FdàÀÿ%J”(Q¢D‰%J”(Q¢D‰%€D‰%J”(Q¢D‰%J”(Q¢D‰(Q¢D‰%J”(Q¢D‰< p Á‚"L¨p!ÆBŒ(q"ÅŠ/b\ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zDÈîãÇ?~üøQ"€êÂ8P :€ÿ  À? ð€@ÿøÀ?ðÀ@üà€þà€þ8`Aƒ&T¸aC‡!FdàÀ%J”(Q¢D‰%J”(Q¢D‰ÿ%@¢D‰%J”(Q¢D‰%J”(Q¢Ä(Q¢D‰%J”(Q¢D‰%J”(Q¢CH”@bD%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰#²“(Q¢D‰%J”(Q¢D‰PÀþ8€À? 0ð€@  0P ` ðŸÀ <ˆ0¡Â… :|1"C(Q¢D‰%J”(Q¢D‰%J”(%J”(Q¢D‰%J”(Q¢D‰%þÿ€D‰%J”(Q¢D‰%J”(Q¢D‰ð€D‰$F Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(1";‰%J”(Q¢D‰%J”(Ñ!‰%J„@¢D‰%J”(Qâ@(Q¢D‰%J”(Q¢D‰%J”$J”(Q¢D‰%J”(Q¢D‰%J‰%J”(Q¢D‰%J”(Q¢D‰%.` ‰HŒ@¢D‰%J”(Q¢D‰%J”(‘DI$‘DI$‘DI$‘DI$‘DÄà? 4xaB…ÿ 6tøbD‰)V´ØÀÅ‹ÀÅ‹/^¼x± €\¼xñâÅ‹/^¼xñâÅ‹ÿpñâÅ‹/^¼xñâÅ‹/ÀÅ‹/^¼xñâÅ‹/^¼xñ \dà"C/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/6dwñâÅ‹/^¼xñâņ.^¼xñâÅ‹/^¼øÀ.^¼xñâÅ‹/^¼xñâŸxñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/^¼X„.2p‘!€‹/^¼xñâÅ‹/^ÿ¼xñâÅ‹/^¼xñâÅ‹²»xñ¢‹.ºè¢‹.ºè¢†ðïß?€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ!X´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z´(€…,.`ñ!‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-BdgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚  Pà¿þ8`Á0hРAƒ4XÀ,hð Âÿ„ 2lèðáC€"Dˆ!B„"Dˆ!B„"D€"Dˆ!B„"Dˆ!B„"Ä‚€"Dˆ!B„"Dˆ!B„"Dˆ h"Ä B,à? 4xaB… 6tøbD‰)V´xcF9vôødH‘Ù9räÈ‘#+¨ <ªøOà@‚€ ‚ $` $H A‚$Hà?ÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"Dˆÿ"Dˆ!B„"Dˆ!B„"Dˆ "Dˆ!B„"Dˆ!B„"Dˆ!*à!ˆ@„XÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"²9räÈ‘#GV0P@x TðŸÀ$8A $HA$H A‚$Hà?ÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"DˆÿDˆ!B„"Dˆ!B„"Dˆ!ˆ!B„ÿ"Dˆ!B„"Dˆ!B„È€Dˆü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )ò!»‘#GŽ9rdEÕÁ¨Nà@xêþ8€@þ0ÀÀþà ÀÀ€@ü@ ` @€@ @ €ü'p Á‚"L¨p!Æ8pàÀÇ>|øðáÇ>|øðáÇ>4€‡>|øðáÃÿ‡>|øðáÇ>|¨>|øðáÇ>|øðáÇ>|øðáC„HàáÃ><à? 4xaB… 6tøbD‰)V´xcF9vôødH‘Ù9räÈ‘#+¨@uÂSðŸ@ø`à@ÿ0ð€ÿü €@ÿ   àø` €þ0À?ü0À?ÿ 0P €ðŸÀ <ˆ0¡Â… :dàÀ>|øðáÇ>|øðáÇÿ>|øÐ >|øðáÇ>|øðáÇ>|øð¡B<|øðáÇ>|øðáÇ>|øðáÇÀ €‡ÿxøð €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!E>d7räÈ‘#Gެ` :€ð¨à? 0þ`à?ÿø@ þ P À` ü €@ÿ 0pàÀø` €øà@þû7À?ÿþýðŸÀ <ˆ0¡Â… :dÿàÀ>|øðáÇ>|øðáÇ>|øÐ >|øðáÇ>|øðáÇ>|øð¡B<|øðáÇ>|øðáÇ>|øðáÇ p ÀÿþøOà@‚ !B„ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäCv#GŽ9räÈŠªOà@êþ8ðà àø€ Á` €à€` €ø` €þ øÀ@ÿÿ ðŸÀ <ˆ0¡Â… :dàÀ>|øðáÇ>|øðáÇ>|ø° <|øðáÇ>|øðáÇ>|øðáÄððáÇ>|øðáÇ>|øðáÇ>T€‚ðð!€‡øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäCv#GŽ9räÈŠªOà@êþ(€@ÿ0À? ü`à?ÿ À?ü0€@ ð€@ü0ÀÀÿÿà€þà€ø` €øOà@‚ D˜PáB† 2pàÀ‡>|øðáÇ>|øðáÇ>|X>|øðáÇ>|øðáÇ>|øP!>|øðáÇ>|øðáÇ>|øðáÇ €€‡<|xÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"²9räÈ‘#GV0 : ü'p €`à?ÿ €@ ÀÀÿÀ?ð 0P À@ à€þ8`Aƒ&T¸aC‡ 8pàáÇ>|øðáÇ>|øðáÇÀÇ>|øðáÇ>|øðáÇ>T€‡>|øðáÇ>|øðáÇ>|øð¡Bxø!€‡øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~R¤Cv#GŽ9räÈŠFŽ|`äÈ‘#98pàÀÈ‘#GŽ9räH‚0räÈÿ‘#GŽ92!Œ9räÈ‘#GŽY# IÀÈ‘#GŽ9räÈ‘#GŽ9räH‡ìFŽ9räÈ‘ŒùÀÈ‘#GrpàÀ‘#GŽ9räÈ‘0räÈ‘#GŽ9R!FŽ9räÈ‘#GŽ4€‘Œ$`äÈ‘#GŽ9räÈ‘#GŽ9r¤Cv#GŽ9räÈŠFŽ9räÈ‘ 8p`äÈ‘#GŽ9r$AŒ9räÈ‘#GŽT þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔH62°‘!€7nÜÿ¸qãÆ7nܸqãÆ7nܸñ!»7nܸqãÆ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B°hÑ¢E‹-Z´hÑ¢E‹€E‹-Z´hÑ¢E‹-Z´,Z´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´ˆE‹-Z´hÑ¢E‹- 0P@x TðŸÀ $€@ÿ H° A‚à? 4xaB… 6tøbD‡8 Q¢ÿD‰%J”(Q¢D‰%J”(‘!$J”(Q¢D‰%J”(Q¢D‰%Jü‰%J”(Q¢D‰%J”(Q¢D‰%:À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’ÄÈ®dÉ’%K–,yÀ@uá (PÀ@ A‚$8A‚$Hà?ÿ H° Áƒ*\Ȱ¡Ã‡#:pàÀ‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰%J”(Qâ?H”(Q¢D‰%J”(Q¢D‰ÿ%J”(±!ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$IŒìJ–,Y²dÉ’ TžÀÕü'p A $€ A‚$8A‚ þðŸÀ <ˆ0¡Â… :|1¢C(Q¢D‰%J”(Q¢D‰%J”¸$J”(Q¢D‰%J”(Q¢D‰%Jü‰%J”(Q¢D‰%J”(Q¢D‰%6À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’ÌÈ®dÉ’%K–,ÿyÀ@uðª8ž:€ÿ@  þ0P  €ÿ 0À@ð€ÿ$XÐàA„ .dØÐáCˆ8p bĈ#FŒ1bĈ#FŒ1bÄ…ˆ1bĈ#FŒ1bĈ#FŒ1¢@ˆ1bĈ#FŒ1bĈ#FŒ1bćøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’Ù•,Y²dÉ’%¨@uÂSðŸÿ@ø@ €þ` €ÿ ð€@ÿ 8P €þà€þø` €ü@ €ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒ1bĈ#FŒ1bÄ…ˆ1bĈ#FŒ1bĈ#FŒ1¢@DŒ1bĈ#FŒ1bĈ#FŒ1âCøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’Ù•,Y²dÉ’%¨ <ªøOà@0À? 0ð@ÿþûàß¿þ8à?ü0À?üð ÿýà€ÿþøOà@‚ D˜PáB† >„ØÀ"FŒ1bĈ#FŒ1bĈ#FT#FŒ1bĈ#FŒ1bĈ#F€ˆ#FŒ1bĈ#FŒ1bĈ#F|€ˆˆñ €ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#6d1bĈ#FŒ1bĈ#F\` :€ð¨à?ÿ@ €þ` ‚ÿ A‚ ðÀ@ÿ ðÀ?ÿà€þ8`Aƒ&T¸aC‡!6pàÀˆ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈ bă"F< bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ ÙEŒ1bĈ#FŒ1bĈ¨ <ªøO @ü À@ÿ 0ÀÀø@ €(Àÿ@ÿ ðÀ@ÿü0À?ü0À,hð „ 2lèð!Ć81bĈ#FŒ1bĈ#FŒ1¢BDŒ1bĈ#FŒ1bĈ#FŒQ "FŒ1bĈ#FŒ1bĈ#FŒñ!DŒx@ĈDŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ±!»ˆ#FŒ1bĈ#FŒ1âBª8 À0€@€ÿ € 0ð€` ÿ@ ÿ ðŸÀ <ˆ0¡Â… :|±!€DŒ1bĈ#FŒ1bĈ#FŒ˜"FŒ1bĈ#FŒ1bĈ#FŒ(#FŒ1bĈ#FŒ1bĈ#FŒø#"1âA#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FlÈ.bĈ#FŒ1bĈ#FŒ¸@ć"FŒ1bĈ#FŒ1"€DŒ1bĈ#FŒ1bĈ#FŒ˜#FŒ1bĈ#FŒÿ1bĈ#F#FŒ1bĈ#FŒ1bĈ#FŒø#"1âA#FŒQDEQDEQDEQDEQDEQDEQDEQD5;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbC¸xñâÅ‹/^¼èÀ.^¼xñâÅ‹/^¼xñ"D\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/^T'¸(ÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ Ù]¼xñâÅ‹/^¼ÿx±!€‹/^¼xñâÅ‹/þpàÀ‹/^¼xñâÅ‹/^¼ø.^¼xñâÅ‹/^¼xñâŸxñâÅ‹/^¼xñâÅ‹/*ÀEŠ.JpñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢Bv/^¼xñâÅ‹.ºè¢†ðïß?€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´hÑ¢E‹-Z´hÑ ,Z´hÑ¢E‹-Z´hÑ¢E‰°hÑ¢E‹-Z´hÑ¢E‹-Z‹XœÀ¢E‹-Z´ÿhÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ H° A‚øï€ÿ$XÐà@8xp €ÿ$XÐàA„ .dØÐáCˆÿ8pà€D‰%J”(Q¢D‰%J”(Q¢D„(Q¢D‰%J”(Q¢D‰%J”(ñH”(Q¢D‰%J”(Q¢D‰%J”(‘!H”x€D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%JtÈN¢D‰%J”(Q¢D‰%Jt` ÿ:€ð¨à?  H A$H A‚€ A‚ÿøOà@‚ D˜PáB† >„ñ€H”(Q¢D‰%J”(Q¢D‰%JD‰%J”(Q¢D‰%J”(Q¢D‰ÿ@¢D‰%J”(Q¢D‰%J”(Q¢D‰  QâA% Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(±!;‰%J”(Q¢D‰%J”(Ñ!€êÂ8P :€ÿ$€ A‚@ A‚  HP ‚ üà?ÿ 4xaB… 6tøbÄ8 Q¢D‰%J”(Q¢D‰%J”(ñ H”(Q¢D‰%J”(Q¢D‰%J”ø%J”(Q¢D‰%J”(Q¢D‰%Jl‰(ñ ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ ÙI”(Q¢D‰%J”(Q¢D‰ T :á©øOà@ `à?ÿø€@` ÀÀ €` øÿÀ,hð „ 2lèð!Ä81bĈ#FŒ1bĈ#FŒ1âADŒ1bĈ#FŒ1bĈ#FŒQ DŒ1bĈ#FŒ1bĈ#FŒ1¢Cˆ1!€ˆˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1"Cv#FŒ1bĈ#FŒ1bÄ…ªƒPÀðÔü'P þ` €`à?ø@ € ðÀ@ü` €ø` €þ` ÿ@ÿà? 4xaB… 6tø"€@„"Dˆ!B„"Dˆ!B„1! B„"Dˆ!B„"Dˆ!B„± B„"Dˆ!B„"Dˆ!B„"Ä€‘!ˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~R$Cv#GŽ9räÈŠªOà@êþ8À@ ðÀ@ ü` € Pà¿üðïß?ÿ HÀ@ÿ ðÀ@ÿü@ Àÿÿøàß¿þ8`Aƒ&T¸aC‡!8pàDˆ!B„"Dˆ!B„"DˆDˆ!B„"Dˆ!B„"Dˆ!Dˆ!B„"Dˆ!B„"Dˆ!B„8!2âBÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠdÈnäÈ‘#GŽYÀ@uá (PÀþ €@ü0À@ ð€@ÿà€` €ø` €þ øÀ@ÿ ÿðŸÀ <ˆ0¡Â… :|À B„"Dˆ!B„"Dˆ!B„ˆ!B„"Dˆ!B„"Dˆ!B„X B„"Dˆ!B„"Dˆ!B„"D"C!.ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤H†ìFŽ9räÈ‘ TžÀÕü'P þ` €`à?ü À@ÿ ðÀ@ü` €ø` €þà€þàÿ? 4xaB… 6tø"€@„"Dˆ!B„"Dˆ!B„! B„"Dˆ!B„"Dˆ!B„± B„"Dˆ!B„"Dˆ!B„"Ä€±!ˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~R$Cv#GŽ9räÈŠT'p A€ÿ` ÿøÀ@ÿ À@ÿ(` €ðÀ@ÿÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ "Dˆ!B„"Dˆ!B„"Dˆ!Bˆ€q!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!E2d7räÈ‘#Gެ$€‘#GŽ9r!€Œ9räÈ‘#G~ÀÈ‘#GŽ9räÈ…9räÈ‘#GŽ9’ ŒT`$B#GŽ9räÈ‘#GŽ9räÈ‘#²ÿ9räÈ‘#GVÀÈ‘#G޹ÀFŽ9räÈ‘#?`äÈ‘#GŽ9r¤B9räÈ‘#GŽ9’ FŽ9räÈ‘#GŽ9räÈ‘#GŽ’ÝÈ‘#GŽ9²"€‘#GŽ9rdB9räÈ‘#GŽô#GŽ9räÈ‘#`äÈ‘Fi¤‘Fi¤‚ à? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I‚dW²dÉ’%K–<` @uøOà@‚ D˜PáB† >„QâDŠ8pà€Eÿ‹-Z´hÑ¢E‹-Z´(-Z´hÑ¢E‹-Z´hÑ¢DX´hÑ¢E‹-Z´hÑ¢E‹- ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ"Dv-Z´hÑ¢E‹-Z´(À@uá (PÀ,ø@A€ øOà@‚ 0hÐ €‚þ8`Aƒ&T¸aC‡!F|àÀ%J”(Q¢D‰%J”(Q¢D‰ @¢D‰%J”(Q¢D‰%J”(Q¢Ä Q¢D‰%J”(Q¢D‰%J”(Q¢D†ÿøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’!Ù•,Y²dÉ’%¨ <ªøOà@‚ÿ(€ ƒ þð€Aƒ4à? 4xaB… 6tøbD„8 Q¢D‰%J”(Q¢D‰%J”(q H”(Q¢D‰%J”(Q¢D‰%J”ø%J”(Q¢D‰%J”(Q¢D‰%Jl€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$’]É’%K–,Yò €êÂ8ÿP :€ÿ$Xð€‚0hÐà?ÿ4H€Aƒþ8`Aƒ&T¸aC‡!FDàÀ%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D(Q¢D‰%J”(Q¢D‰%J”(QbCü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$ÉìJ–,Y²dÉ’ T :á©øOà@à0ð€€@üð ` @€@ÿþ8`Aƒ&T¸aC‡!F<àÀ%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢Ä Q¢D‰%J”(Q¢D‰%J”(Q¢D† Q¢B%& Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(‘!;‰%J”(Q¢D‰%J”(Ñ!€êàT'p pàÀˆ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bD‡ˆ"€ˆˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bBv#FŒ1bĈ#FŒ1bÄ…ªOà@êþ(€@ÿà€þà€þàøÀ@ÿ ðÀ@ÿü0À?ü0À,hð „ 2lèð!Äÿ‡81bĈ#FŒ1bĈ#FŒÑ!DŒ1bĈ#FŒ1bĈ#FŒQ DŒ1bĈ#FŒ1bĈ#FŒ1¢CDŒ@ĈDŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1!»ˆ#FŒ1bĈ#FŒ1âBª8 À0€` ` (À@0 €@ €øOà@‚ D˜PáB† >„øÀ"ÿFŒ1bĈ#FŒ1bĈ#:@Ĉ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,)I“&Mš4i€I“&Mš4©ÀLš4iÒ¤I“%`Ò¤I“&Mš4i&Mš4iÒ¤I“&À¤I“&Mš4iÒ¤I“&Mš4iÒ¤I‹ìLš4iÒ¤I“Lš4iÒ¤I8`Ò¤I“&Mš$ &Mš4iÒ¤I“ÿÀ¤I“&Mš4iÒ$C˜4iÒ¤I“&Mš4iÒ¤I“&Mš4i‘I“&Mš4i€I“&Mš4©ÀLš4iÒ¤I“$`Ò¤I“&Mš4i&Mš4iÒ¤I“&€I“&Mš4iÒ¤I&™d’I&™d’I&Y;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbCª8 À,hð „ 2lèð!Ĉ'R¬¨À,Z´hÑ¢E‹-Z´hÑ"DX´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z´(-ÿZ´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ €@ÿþ øÀø€@ÿ HP ðŸÀ <ˆ0¡Â… :|1¢D‡80qâĉ'Nœ8qâĉ'N„'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâD†˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉÙMœ8qâĉ'Nœ8ÿqâĉªOà@êþ8ð‚þ@ð€$øÀ@ü'p Á‚"L¨p!ÆBŒ(qâ? H‘"EŠ)R¤H‘"EŠ)þEŠ)R¤H‘"EŠ)R¤H‘¢A H‘"EŠ)R¤H‘"EŠ)R¤Ø(R\€"Å…(R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"Åì(R¤H‘"EŠ)R¤H‘¢AÕ„'p @uÿ øA€ ‚ þ@P €ÿ$XÐàA„ .dØÐáCÿˆ%NüàÀ)R¤H‘"EŠ)R¤H‘"Å H‘"EŠ)R¤H‘"EŠ)R4Š)R¤H‘"EŠ)R¤H‘"EŠ@‘"C).@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)dG‘"EŠ)R¤H‘"EŠ ¨@uÂSðŸÀÿ@p €þ@p ‚ÿÀ?þøàà? 4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'Nœø&Nœ8qâĉ'ÿNœ8qâĉ'Àĉ'Nœ8qâĉ'Nœ8qâĉ 0q¢C'60qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NtÈnâĉ'Nœ8qâĉ'N0P<€ê„§à?ÿ ÿ (A‚` ø€@ÿ ðŸÀ <ˆ0¡Â… :|1¢D80qâĉ'Nœ8qâĉ'N|€‰'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâÄ…0ÿq¢C'60qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NtÈnâĉ'Nœ8qâĉ'N0P@x TðŸÀÿ@p €þ@ A‚ÿ €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡#JàÀ'Nœ8qâĉ'Nœ8qâć˜8qâĉ'Nœ8qâĉ'Nœ8'Nœ8qâĉ'Nœ8qâĉ'2ÀĉLœØÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8Ñ!»ÿ‰'Nœ8qâĉ'Nœ8À@uá (PÀþ@A € A‚ÿ@ þà€þ8`Aƒ&T¸aC‡!F”(À&Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâ@Lœ8qâĉ'Nœ8qâĉ'NœÈ'>0qbC'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâD‡ì&Nœ8qâĉ'Nœ8qâDÕ„'p @uÿ øAÿ øÀ@ ÿü` à€þà? 4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'Nœè'Nœ8qâĉ'Nœ8qâĉÀĉ'Nœ8qâĉ'Nœ8qâĉ `âć&Nl`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœèÝĉ'Nœ8qâĉ'Nœ` @uøOàÀ Pà?ÿ ` €ÿ8ÿø@ €ÿ H° Áƒ*\Èÿ°¡Ã‡#JàÀ'Nœ8qâĉ'Nœ8qâD‡˜8qâĉ'Nœ8qâĉ'Nœ8'Nœ8qâĉ'Nœ8qâĉ'2ÀĉLœøÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8±!»‰'Nœ8qâĉ'Nœ8Àĉ'0qâĉ'Nœ8Q €Lœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâ@Lœ8qâĉ'Nœ8qâĉ'NœÈ'>0qâC'Nœ8qâÄÿ‰'Nœ8qâĉ'Nœ8qâĉM4ÑDM4QC±øOà@‚ D˜PáB† >„QâDŠ-6pñâŃpñâÅ‹/^làÀ/^¼xñâÅ‹/^¼h.^¼xñâÅ‹/^¼xñâE‚¸xñâÅ‹/^¼xñâÅ‹/"€‹¸xñ €‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ ²»xñâÅ‹/^¼xñbC/^¼xñâÅ‹/^üàÀ/^¼xñâÅ‹/^¼h/^¼xñâÅ‹/^¼xñ"Aÿ¸xñâÅ‹/^¼xñâÅ‹/"ÀÅ‹\¼xÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ùü'p Á‚"L¨p!ÆBŒ(q"ÅŠPÀþ8`Aƒ&T¸aC‡!F”8‘bE…8`Ñ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z”‹-Z´hÑ¢E‹-Z´hÑ¢E°hQ!‹°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ"Bv-Z´hÑ¢E‹-Z´(À@uá (ÿPÀ @ A‚ ø€ ‚ $H A$øÀ,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(1!H”(Q¢D‰%J”(Q¢D‰%J”(%J”(Q¢D‰%J”(Q¢D‰%J\%J QbD%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰²“(Q¢D‰%J”(Q¢D‰¨ <ªøO @ 8pàÀøÀ@ÿ H° Áƒ  Àÿ,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(1!$J”(Q¢D‰%J”(Q¢D‰%J%J”(Q¢D‰%J”(Q¢D‰%J\‰%þ QbD%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰²“(Q¢D‰%J”(Q¢D‰¨ <ªøO @ 8pàÀøÀ@ÿ H° ÁƒðŸÀ <ˆ0¡Â… :|1"B(Q¢D‰%J”(Q¢D‰%ÿJL‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢Ä$JŒ@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q"Bv%J”(Q¢D‰%J”(Q¢CÕÁ¨Nà@xêþ(€þ €ðÀ? €@ü`  0P €øÀ?ÿü` ü'p Á‚"L¨p!ÆB<àÀ#FŒ1bĈ#FŒÿ1bĈ@Ĉ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈ@Ĉ ˆ1¢@#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#F<È.bĈ#FŒ1bĈ#FŒ¸À@uðª8ž:€ÿ  þ` €ü0À?ÿ0p €à€( À?ø` €ÿ$XÐàA„ .dØÐáCˆ8p bĈ#FŒ1bÄÿˆ#FŒ1âADŒ1bĈ#FŒ1bĈ#FŒq DŒ1bĈ#FŒ1bĈ#FŒ1bCDŒ‘ €ˆ#1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bDƒì"FŒ1bĈ#FŒ1bĈ  TžÀÕü'P ø@ @þû7À?ÿþýðÀ¿þø÷ïß@ÿüûàß?ÿ øOà@‚ €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡8pà@Ĉ#ÿFŒ1bĈ#FŒ1băˆ1bĈ#FŒ1bĈ#FŒ1â@DŒ1bĈ#FŒ1bĈ#FŒ1¢CDŒ‘ €ˆ#1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bDƒì"FŒ1bĈ#FŒ1bĈ  TžÀÕü'P ø@ € ðÀ@ÿ @ €þ@ €8pà@ À?ü0À,hð „ 2lèð!ă81bĈ#FŒÿ1bĈ#FŒÑ DŒ1bĈ#FŒ1bĈ#FŒq "FŒ1bĈ#FŒ1bĈ#FŒÑ!þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI…ìLš4iÒ¤I“ªOà@êþ(€@ü À@ÿ ðÀ@ÿ @ €þ@ €8pà? €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡8pà@Ĉ#FŒ1bĈ#FŒ1bDƒˆ1bÄÿˆ#FŒ1bĈ#FŒ1"ADŒ1bĈ#FŒ1bĈ#FŒ1bCøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%²3iÒ¤I“&MPÀþ8À?ü0@ ü0ð€ð€@À@ÀÀþà€À,hð „ 2lèð!ă81bĈ#FŒ1bĈ#FŒÑ "FŒ1bĈ#FŒ1bĈ#ÿFŒ8"FŒ1bĈ#FŒ1bĈ#FŒ±!þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dÉ…ìLš4iÒ¤I“Lš À¤I“8pÀ¤I“&Mš4ÉLš4iÒ¤I“&-À¤I“&Mš4iÒ$C˜4iÒ¤I“&Mš4iÒ¤I“&Mš4é‘I“&Mš4i€I“À¤I“8pÀ¤I“&Mš4É&Mš4iÒ¤I“`Ò¤I“&Mš4ir!˜4iÒ¤I“&Mš4iÒ¤I“&Mš4éÿ‘I“&Mš4i€I“&Mš4©ÀLš4iÒ¤I“`Ò¤I“&Mš4iLš4iÒ¤I“&M.€I“&M2É$“L2É$“L2É$“L2ɤbðŸÀ <ˆ0¡Â… :|1¢Ä‰+Zl` @uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹-Z´hÑ¢E‹-Z<-Z´hÑ¢E‹-Z´hÑ¢DX´hÑ¢E‹-Z´hÑ¢E‹- €E‹ X´¸€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢ÿE‹²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8P ‚ $HÀ,hð „ 2lèð!Ĉ'FpàÀŠ)R¤H‘"EŠ)R¤H±!(R¤H‘"EŠ)R¤H‘"EŠ€"EŠ)R¤H‘"EŠ)R¤H‘bC H1"Š H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠÿ±£H‘"EŠ)R¤H‘"EŠ TžÀÕü'P €ÿ$XРAÿ H° Áƒ*\Ȱ¡Ã‡#JœÀÿ(R¤H‘"EŠ)R¤H‘"ņ H‘"EŠ)R¤H‘"EŠ)R4)R¤H‘"EŠ)R¤H‘"EŠ€"ň(RŒ€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)RdG‘"EŠ)R¤H‘"EŠ ¨ <ªøO @ÿ H° Aƒþ8`Aƒ&T¸aC‡!F”81"€P¤H‘"EŠ)R¤H‘"EŠ €"EŠ)R¤H‘"EŠ)R¤HÑ (R¤H‘"EŠ)R¤H‘"EŠ):EŠP¤ÿEŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤ÈŽ"EŠ)R¤H‘"EŠ)0P<€ê„§à?øàþ0(€@ð€ðŸÀ <ˆ0¡Â… :|1¢D‰80qâĉ'Nœ8qâĉ'N<€‰'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ8qâB˜8q"€‰'˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'.d7qâÿĉ'Nœ8qâĉ'¨@uÂSðŸ@ø@ þ`àÀÿü0À?ø` €ÿ$XÐàA„ .dØÐáCˆ%JpàÀ‰'Nœ8qâĉ'Nœ8qâALœ8qâĉ'Nœ8qâĉ'N$€‰'Nœ8qâĉ'Nœ8qâĉ`âĉÿLœ8Àĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8q!»‰'Nœ8qâĉ'Nœ8À@uá (PÀàø€@ÿÿ HÀ?ü0À?ü'p Á‚"L¨p!ÆBŒ(Q"€Lœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâ@˜8qâĉ'Nœ8qâĉ'Nœ8q!&NœøÀĉLœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ²›8qâĉ'Nœ8qâĉ TžÀÕü'P þ@ €8P €ø` €øOà@‚ D˜PáB† >„Q¢D˜ÿ8qâĉ'Nœ8qâĉ'€‰'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ8qâB˜8qâ?'N0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'N\Ènâĉ'Nœ8qâĉ'N0P@x TðŸ@ø@ þ`àÀÿü0À?ü0À,hð „ 2lèð!Ĉ%8pàÀĉ'Nœ8qâĉ'Nœ8Ñ &Nœ8qâĉ'Nœ8qâĉ'Àÿĉ'Nœ8qâĉ'Nœ8qâĉ 0qâD&Nœ`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ¸Ýĉ'Nœ8qâĉ'Nœ` @uøOà@ÿü €@0P €€@€ÿ$XÐàA„ .dØÐáCˆ%JpàÀ‰'Nœ8qâĉ'Nœ8q¢ALœ8qâĉ'Nœ8qâĉ'N'Nœ8qâĉ'Nœ8qâĉ'.Àĉ˜8q"€‰'Nœ8qâĉÿ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâBv'Nœ8qâĉ'Nœ8q"€‰'0qâĉ'Nœ8Q"€Lœ8qâĉ'Nœ8qâĉ Àĉ'Nœ8qâĉ'Nœ8qâĘ8qâĉ'Nœ8qâĉ'Nœ8q!Lœ8Q €‰'˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ&šh¢‰&šh¢‰&šh!€Øü'p Á‚"L¨p!ÆBŒ(q"ÅŠ¸xÑ!\¼xñâÅ‹/pàÀ‹/^¼xñâÅ‹/^t€ÿ‹/^¼xñâÅ‹/^¼x± .^¼xñâÅ‹/^¼xñâÅ‹pñbC/6pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâ?v/^¼xñâÅ‹/^làâÅ‹/^¼xñâÅ‹ÿ8pàâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/^$/^¼xñâÅ‹/^¼xñâE„¸x±!€‹¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ»‹/^tÑE]tÑE5€ÿþT'p A€ÿ$XÐàA„ .ÿdØÐáCˆ%N¤XQ!€X´hÑ¢E‹-Z´hÑ¢Å`Ñ¢E‹-Z´hÑ¢E‹-J€E‹-Z´hÑ¢E‹-Z´hÑâ?°hñ!‹°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbAv-Z´hÑ¢E‹-Z´(À@uá (PÀ @ A‚ H A‚ à? 4xaB… 6tøbD‰8p`âĉ'Nœ8qâĉ'NœH'Nœ8qâĉ'Nœ8qâĉ `âĉ'Nœ8qÿâĉ'Nœ8qâÄ…˜8qâ@'N`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ¨Ýĉ'Nœ8qâĉ'Nœ` :€ð¨à? 8pàÀà? 4xp €ÿ$XÐàA„ .dØÐáCˆ%pàÀ‰'Nœ8qâĉ'Nœ8q"ALœ8qâĉ'Nœ8qâĉ'N$€‰'Nœ8qâĉ'Nœ8qâĉ`âĉLœ8Q €‰'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉÿ'Nœ8q¢Bv'Nœ8qâĉ'Nœ8q"€êÂ8P :€ÿ 0pàÀ8À,hðà@ÿ H° Áƒ*\Ȱ¡Ã‡#J4àÀ'Nœ8qâĉ'Nœ8qâÄ0qâĉ'Nœ8qâĉ'Nœ8q Lœ8qâĉ'Nœ8qâĉ'Nœ¨&Nœ8Àĉ˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'*d7qâĉ'Nœ8qâĉ'¨@uÂSðŸ@üðÿÿ@ à` @þ0þ8`Aƒ&T¸aC‡!F4àÀ%J”(Q¢D‰%J”(Q¢D‰(Q¢D‰%J”(Q¢D‰%J”(q $J”(Q¢D‰%J”(Q¢D‰%J”¸%J<@¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J,ÈN¢D‰%J”(Q¢D‰%Jt` :xÕ OÀàø` `ÿà@ÿ À? 8ð€ø€@ÿ ðŸÀ <ˆ0¡Â… :|1¢A(Q¢D‰%J”(Q¢D‰%J€D‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Q¢Ä…øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%%²3iÒ¤I“&M¨ <ªøO @ü €@ÿ(à?0þ@ €8pà?ÿ ðÀ@ÿÿ ðŸÀ <ˆ0¡Â… :|1¢A(Q¢D‰%J”(Q¢D‰%F‰%J”(Q¢D‰%J”(Q¢D‰€D‰%J”(Q¢D‰%J”(Q¢D‰À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,)‘I“&Mš4iÀ@uá (PÀàø`àÀ` €à€øÀ?ü0À?ü'p Á‚"L¨p!ÆBŒhÀ$Jÿ”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Qâ@H”(Q¢D‰%J”(Q¢D‰%J”(q!þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dɉìLš4iÒ¤I“ªOà@êþ(€@ÿ À?ü0€@ ð€@ü0ÀÀÿø` €ø` €ÿ$XÐàA„ .dØÐáCˆ 8pà€D‰%J”(Q¢D‰%J”(1"$J”(Q¢D‰%J”(Qÿ¢D‰%J‰%J”(Q¢D‰%J”(Q¢D‰%.À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,9‘I“&Mš4iÀ@€ê$ðŸÀþø@ ` þ þ@ €0P €€@€ÿ$XÐàA„ .dØÐáCˆ 8pà€D‰%J”(Q¢D‰%J”("H”(Q¢D‰%J”(Q¢D‰%J”($J”(Q¢D‰%J”(Q¢D‰ÿ%J”¨þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dɉìLš4iÒ¤I“L^€I“&MpàÀ“&Mš4iÒ$E˜4iÒ¤I“&M^€I“&Mš4iҤɅ0iÒ¤I“&Mš4iÒ¤I“&Mš4iÒä?v&Mš4iÒ¤I&/à&Mš4‰ÀLš4iÒ¤I“`Ò¤I“&Mš4y&Mš4iÒ¤I“&À$F&/0iÒ¤I“&Mš4iÒ¤I“&MrdgÒ¤I“&Mš`Ò¤I“&MjÿpàÀ“&Mš4iÒäD0iÒ¤I“&Mš¼“&Mš4iÒ¤I“  À,hð „ X¸páÂ…ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r »‘#GŽ9rdEª8 À,hð „ 2lèð!Ĉ'R¬¨À,Z´hÑ¢E‹-Z´h±",Z´hÑ¢E‹-Z´hѢʼn`Ñ¢E‹-Z´hÑ¢E‹-Z´‹'°h1"‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢ÿE‹-dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'P @þû÷o €ÿþ øïß¿þýû÷Àü€@ÿþø÷À€@ÿ HP ðŸÀ <ˆ0¡Â… :|Q!€DŒ1bĈ#FŒ1bĈ#6@Ĉ#FŒ1bĈ#FŒ1bĈ  bĈ#FŒ1bĈ#FŒ1bĈ bĈ DŒQ!€ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈÿ#d1bĈ#FŒ1bĈ#F\` :€ð¨à?ÿ € ‚ @A‚ÿ @ ‚ÿ@ Áà? 4xaB… 6tø"Dˆ1bĈ#FŒ1bĈ#Fl€ˆ#FŒ1bĈ#FŒ1bĈ#@Ĉ#FŒ1bĈ#FŒ1bĈ#2€ˆ#21bD…"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ8]Ĉ#FŒ1bĈ#FŒq!€êÂÿ8P :€ÿü€ ‚ øÀ?$Hð‚0$8Aþ8`Aƒ&T¸aC‡!BpàÀˆ#FŒ1bĈ#FŒ1bD†1bĈ#FŒ1bĈ#FŒ1bÄ1bĈ#FŒ1bĈ#FŒ1bĈ 1bĆ"FŒ¨@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ²‹1bĈ#FŒ1bĈ#.0P<€ê„§à?ÿ € ‚þðÀÿ@ ü€ @ ‚ÿ øAüà€þ0þ8`Aƒ&T¸aC‡8pàDˆ!B„"Dˆ!B„"D†€"Dˆ!B„"Dˆ!B„"ă€"Dˆ!B„"Dˆ!B„"Dˆÿ"Dˆ@„ñ!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!E d7räÈ‘#Gެ` :xÕ OÀþ@A0€@ ü€ ÿþøà@ Á@ þ À?ü'p Á‚"L¨p!Æ:pàÀˆ!B„"Dˆ!B„"Dˆ "Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ!Dˆ€âCÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠÈnäÈ‘#GŽYÀ@uá (PÀþ@A0€@ ü€ þøà$ÿHp à€þà? 4xaB… 6tøÐ!€@„"Dˆ!B„"Dˆ!B\!B„"Dˆ!B„"Dˆ!B„h B„"Dˆ!B„"Dˆ!B„"D@„"ˆ!>ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤HìFŽ9räÈ‘ TžÀÕü'pà?@A€ ü÷À€ @ €‚  €@ü0Àÿ?ü'p Á‚"L¨p!Æ:pàÀˆ!B„"Dˆ!B„"Dˆ "Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ!þDˆ!€âCÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠÈnäÈ‘#GŽYÀ@uá (PÀþ@A @ð€$øA €@ ` à€þà? 4xaB… ÿ6tøÐ!€@„"Dˆ!B„"Dˆ!B\ˆ!B„"Dˆ!B„"Dˆ!B<ˆ!B„"Dˆ!B„"Dˆ!B„ B„DˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~R¤@v#GŽ9räÈŠT'p A€ÿü€à? øÀ@ÿø€@ÿ 8Aü@ @ü'P €0ð€ø` ðŸÀ <ˆ0¡Â… :|ÿèÀ B„"Dˆ!B„"Dˆ!*ˆ!B„"Dˆ!B„"Dˆ!B4!B„"Dˆ!B„"Dˆ!B„" B„ñˆ!>ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤HìFŽ9räÈ‘Œ9Ò!€‘#GvpàÀ‘#GŽ9räH9räÈ‘#GŽÉ#GŽ9räÈ‘#GÀHFr0räÈ‘#GŽ9räÈ‘#GŽ9R »‘#GŽ9rdE## p ÿÀ,hð „ ÀÂ… .\¸páÂ… pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEƒÀˆ#FŒ1bĈ#FŒ€#FŒ1bĈ#FŒ1BŒ#Àˆñ!Œ1bĈ#FŒ1bĈ#FŒ1bĈ#ÆŠì0bĈ#FŒ1bÄ(FŒ1bĈ#FŒ8p#FŒ1bĈ#FŒ#FŒ1bĈ#FŒ1>FŒ1bĈ#FŒ1bÄ1J€ãC1bĈ#FŒÿ1bĈ#FŒ1bĈ#FŒÙaĈ#FŒ1bĈQ Œ1bĈ#FŒ8pàFŒ1bĈ#FŒ##FŒ0Â#Œ0Â#Œ0Âè!€ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æظq!€ظqãÆ7nܸqãÆ7nܸqãÆ²Û¸qãÆ7nÜxÀÆ7nܸqãÆ…8°qãÆ7nܸqãBlܸqãÆ7nܸqã@lܸqãÆ7nܸqãFظq!€ظqãÆÿ7nܸqãÆ7nܸqãÆ²Û¸qãÆ7nÜxÀÆ7nܸqãÆ…8°qãÆ7nܸq£BظqãÆ7nܸqãÆØ¸qãÆ7nܸqãÆÿ`ãÆ…6n\`ãÆ7nܸÑFm´ÑFm´ÑFm´ÑF ;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbC/^¼xñâÅ‹/^üàÀ/^¼xñâÅ‹/^¼H/^¼xñâÅ‹/^¼xñbA¸xñâÅ‹/^¼xñâÅ‹/ÀÅ‹ÿ/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼x"»‹/^¼xñâÅ‹/6pñâÅ‹/^¼xñâÅ8pñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/ÀÅ‹/^¼xñâÅ‹/^¼x!.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹/^¼x±!@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å8pñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/^,€‹/^¼ÿxñâÅ‹/^¼xñâA¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/BdwñâÅ‹/^¼xñâņ.^¼xñâÅ‹/^¼øÀ.^¼xñâÅ‹/^¼xq .^¼xñâÅ‹/^¼xñâÅ‚pñâÅ‹/^¼xñâÅ‹/^<€‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbDv/^¼xñâÅ‹/^l` @,hð „ 2lèð!Ĉ'R¬XñÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢ÿÅ‹€#FŒ1bĈ#FŒ#FŒ1bĈ#FŒ1bŒŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈQ!;Œ1bĈ#FŒ1 €#FŒ1bĈ£CÀˆ#FŒ1bĈ£CÀˆ#FŒ1bĈ#FŒ€#FŒ1bĈ#FŒ1BŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈQ!;Œ1bĈ#FŒ1 €#FŒ1bĈ£CÀˆ#FŒ1bĈ£Cÿ`Ĉ#FŒa„Fa„DðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æظ±!€ظqãÆ7nܸqãÆ7nܸqãÆÿ±Û¸qãÆ7nÜxÀÆ7nܸqãÆ…8°qãÆ7nܸq#BlܸqãÆ7nܸqã@ظqãÆ7nܸqãÆÿ°qcC76°qãÆ7nܸqãÆ7nܸqãÆ7þc·qãÆ7nܸñ"€7nܸqãÆ 8p`ãÆ7nܸqãF„Øÿ¸qãÆ7nܸqãÆØ¸qãÆ7nܸqãÆÿ`ãÆ†6nl`ãÆ7nܸÑFm´ÑFm´ÑFm´ÑFý;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbC/^¼xñâÅ‹/^üàÀ/^¼xñâÅ‹/^¼ø.^¼xñâÅ‹/^¼xñâÅ‚¸xñâÅ‹/^¼xñâÅ‹/ÀÅ‹\¼XÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâEŠì.^¼xñâÅ‹/^¼ØÀÅ‹/^¼xñâÅ‹ÿ8pàÿÀÅ‹/^¼xñâÅ‹/þÀÅ‹/^¼xñâÅ‹/^¼X.^¼xñâÅ‹/^¼xñâÅ‹pñ¢E/VpñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼x‘"»‹/^¼xñâÅ‹.º¨!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠÿ8pàÀÅ‹/^¼xñâÅ‹/þÀÅ‹/^¼xñâÅ‹/^¼X/^¼xñâÅ‹/^¼xñâŃpñ¢E/VpñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼x‘"»‹/^¼xÿñâÅ‹/6pñâÅ‹/^¼xñâÅ8pñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/ÀÅ‹/^¼xñâÅ‹/^¼xñ .^¼àâÅŠ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/RdwñâÅ‹/^¼xñâņT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XQ!€X´hÑ¢E‹-Z´hÑ"CX´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z´h-ZÀ¢E‹ÿX´hÑ¢Eÿ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hñ;‹-Z´hÑ¢E‹-Z` :€ð¨à? $€@ÿ HP €øï€ÿ$Xðƒü'p Á‚"L¨p!ÆBŒèÀ$J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Qâ@H”(Q¢D‰%J”(Q¢D‰%J”(Q!H”(ñ!‰%6 Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(ñ;‰%J”(Q¢D‰%ÿJ”(Ñ!€êÂ8P :€ÿ$Xð $` ƒ `Ð €ÿ$XÐàA„ .dØÐáCˆ8pà€D‰%J”(Q¢D‰%J”(± H”(Q¢D‰%J”(Q¢D‰%J”8%J”(Q¢D‰%J”(Q¢D‰%JT‰%> Q¢Ä‡$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%²“(Q¢D‰%J”(Q¢D‰¨ <ªøOà@‚ÿÀ A‚0hР@ øOà@‚ D˜ÿPáB† >„±!€H”(Q¢D‰%J”(Q¢D‰ @¢D‰%J”(Q¢D‰%J”(Q¢D‚(Q¢D‰%J”(Q¢D‰%J”(Q¢BH”(ñ!‰%> Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(‘D‰%J”(Q¢D‰%J”èÀ@uðª8ž:€ÿ` ðÀÀþ0øÀ?ü` 8pà@ÿ H° Áƒ*\Ȱ¡Ã‡#6pàÀ‰%J”(Q¢Dÿ‰%J”(QbAH”(Q¢D‰%J”(Q¢D‰%J”8$J”(Q¢D‰%J”(Q¢D‰%J”˜$J”ø€D‰(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”ÈN¢D‰%J”(Q¢D‰%Jt` :xÕ OÀà€þà€øÀ?ðÀ@ÿ 8p €ÿ$XÐàA„ .dØÐáCˆ8pà€D‰%J”(Q¢D‰%J”(‘ H”(Q¢D‰%ÿJ”(Q¢D‰%J”8%J”(Q¢D‰%J”(Q¢D‰%JT‰%B Q¢Ä‡$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%²“(Q¢D‰%J”(Q¢D‰¨ <ªøOà@(ð€ÿü'p €þ` €ÿü €@ÿ(ð€ÿ$(À,hð „ 2lèð!Ĉ 8p@¢D‰%J”(Q¢D‰%J”H%J”(Q¢D‰%J”(Q¢D‰%€D‰%J”(ÿQ¢D‰%J”(Q¢D‰@¢D‰H”(ñ!‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ì$J”(Q¢D‰%J”(Q¢D‡ªOà@êþ8ðþ Aø` €ø@ þ øA‚ü'p Á‚"L¨p!ÆBŒØÀ$J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Qâ@(Q¢D‰%J”(Q¢D‰%J”(QbB(Q"D%J|@¢Dÿ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q";‰%J”(Q¢D‰%J”(Ñ!€êÂ8P :€ÿ  À?ü ÀÀø` €þð€@ü0À?à? 4xaB… 6tøbĆ8 Q¢D‰%J”(Q¢D‰%J%J”(Q¢D‰%J”(Q¢D‰%€D‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰H”(ñ!‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%ÿJ”(Q¢D‰ì$J”(Q¢D‰%J”(Q¢D‡T'p A€ÿ` ø€@ÿþø÷ï€ÿø÷ï€ÿþýðÀ¿þýðïßÀÿüûàß?ÿþø÷ï€ÿ$XÐàA„ .dØÐáCˆ8pà€D‰%J”(Q¢D‰%J”(q $J”(Q¢D‰%J”(Q¢D‰%J$‰%J”(Q¢D‰%J”(Q¢D‰%*€D‰#(QâC%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ÙI”(ÿQ¢D‰%J”(Q¢D‰H”(Q¢@ H”(Q¢D‰%J$àÀ%J”(Q¢D‰%J”(Q¢Ä(Q¢D‰%J”(Q¢D‰%J”(q H”(Q¢D‰%J”(Q¢D‰%J”(1!H”(1"‰%> Q¢D‰%J”(Q¢D‰$’H"‰$’H"‰$’H"‰$’H"‰$’H"‰$ˆÀ,hð „ 2lèð!Ĉ'R¬h±!€‹/ ÀÅ‹/^¼xÑ €\¼xñâÅ‹/^¼xq"\¼xñâÅ‹/^¼xñâÅ‹ÿpñâÅ‹/^¼xñâÅ‹/^<€‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅì.^¼xñâÅ‹/^¼ØÀÅ‹/^¼xñâÅ‹ÿ8pàÀÅ‹/^¼xñâÅ‹'àâÅ‹/^¼xñâÅ‹/^4€‹/^¼xñâÅ‹/^¼xñâA\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/þcwñâÅ‹/^¼xñâE àß¿Õ Hà? 4xaB… 6tøbD‰)VTàÀ-Z´hÑ¢E‹ÿ-Z´ˆ-Z´hÑ¢E‹-Z´hÑ"EX´hÑ¢E‹-Z´hÑ¢E‹+€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$X @þûà? 4À Aÿ H° Áƒ*\Ȱ¡Ã‡#JTàÀ'Nœ8qâĉ'Nœ8qbA˜8qâĉ'Nœ8qâĉ'NœH&Nœ8qâĉ'Nœ8qâĉ'NL€‰'Nœ8qâĉ'Nœÿ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8"»‰'Nœ8qâĉ'Nœ8À@uá (PÀ,øA 4ø€Aƒþ8`Aƒ&T¸aC‡!F”˜À&Nœ8qâĉ'Nœ8qâÄ‚˜8qâĉ'Nœ8qâĉ'NœX'Nœ8qâĉ'Nœ8qâĉ'*Àĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ‘Ýĉ'Nœ8qâĉ'Nœ` :€ð¨à? ü€ ÿƒ üÀ Aÿ H° Áƒ*\Ȱ¡Ã‡#JLàÀ'Nœ8qâĉ'Nœ8qbALœ8qâĉ'Nœ8qâĉ'N,€‰'Nœ8qâĉ'Nœ8qâĉÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ‘Ýĉ'Nœ8qâĉ'Nœ` :xÕ OÀ0`à?ÿð€€@à? 4xaB… 6tøbD‰ 8p`âĉÿ'Nœ8qâĉ'N,€‰'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâÄ„˜8q"D'Nt`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœHÝĉ'Nœ8qâĉ'Nœ` :xÕ OÀà€þøÀÀþ@ €ø@ €8À,hð „ 2lèð!Ĉ8pàÀĉ'Nœ8qâĉ'NœH&Nœ8qâĉ'Nœ8qâĉ'ÿÀĉ'Nœ8qâĉ'Nœ8qâĉ 0qâDˆ&NœèÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8‘ »‰'Nœ8qâĉ'Nœ8À@uá (PÀ€@ÿüû÷ï€ÿþýðÀ¿þýðo Àÿüû÷Àà? 4xaB… 6tøbD‰ 8p`âĉ'Nœ8qâĉ'N$€‰'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ8qbB˜8q"ÿD'Nt`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœHÝĉ'Nœ8qâĉ'Nœ` :€ð¨à?ÿ€à?ð€@ü@p $à? 4xaB… 6tøbD‰ 8p`âĉ'Nœ8qâĉ'N$€‰'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâÄ„˜8qbD'Nt`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœHÝĉÿ'Nœ8qâĉ'Nœ` :€ð¨à?ðÀ@ÿ ü`à?ÿ À?ü À?à? 4xaB… 6tøbD‰ 8p`âĉ'Nœ8qâĉ'N'Nœ8qâĉ'Nœ8qâĉ `âĉ'Nœ8qâĉ'Nœ8qâD…˜8q"D'N„`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8Ýĉ'Nœ8qâĉ'Nœ` @uøOà@` €þÿð€@À@@ øOà@‚ D˜PáB† >„QbB˜8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qbALœ8qâĉ'Nœ8qâĉ'Nœ˜&NœÀĉ!˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'd7qâĉ'Nœ8qâĉ'˜8qâ@ Lœ8qâĉ'NLàÀ'Nœ8qâĉ'Nœ8qâ@Lœ8qâĉ'Nœ8qâĉ'N,ÿ€‰'Nœ8qâĉ'Nœ8qâĉ`âĉLœ8"€‰'Nœ8qâĉ'Nœ8qâĉ'Nœh¢‰&šh¢‰&šh¢‰ˆÀ,hð „ 2lèð!Ĉ'R¬h±!€‹PàâÅ‹/^¼HÀ.^¼xñâÅ‹/^¼ø.^¼xñâÅ‹/^¼xñâÅ‚pñâÅ‹/^¼xñâÅ‹/^4€‹/pñâE‚.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/FdwñâÅ‹/^¼xñâņ.^¼xñâÅ‹/^¼øÿÀ.^¼xñâÅ‹/^¼ø/^¼xñâÅ‹/^¼xñ¢A\¼xñâÅ‹/^¼xñâÅ‹ ÀÅ‹ ¸xñ"A/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹#²»xñâE]tÑE]tQCø÷ï@uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹-Z´hÑ¢E‹-€E‹-Z´hÑ¢E‹-Z´H-Z´hÑ¢E‹-Z´hѢŊ°hÑbB-Z<À¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÿ-Z´hÑ¢EŠì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ @ÀÀ8P €ÿ P À,XP@A øOà@‚ D˜PáB† >„± €H”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢Ä Q¢D‰%J”(Q¢D‰%J”(Q¢Ä„(Q¢Ä$J”(ñ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Dˆì$J”(Q¢D‰%J”(Q¢D‡ªƒO„QâDŠ-^ĘQãFŽ=~ò#;‘"EŠ)R$GÕÁ¨Nà@xêþ(PÀ,h° €ƒ 8x° € 8XPÀ,hð „ 2lèð!Ĉ8p@ÿ¢D‰%J”(Q¢D‰%J|‰%J”(Q¢D‰%J”(Q¢D‰ @¢D‰%J”(Q¢D‰%J”(Q¢D‰ @¢D‰(Q¢Ä$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰!²“(Q¢D‰%J”(Q¢D‰¨d'Q¢D‰%J”(Q¢D‰%:0P„QâDŠ-60P<€ê„§à?0€@ÿ üÀ@@ ÿø@ ø€@ÿ€0À?ÿø`àÀü'p Á‚"L¨p!Æ.pàÀˆ!B„"Dˆ!B„"D€"Dˆ!B„"Dˆ!B„"Ä„€"Dˆ!B„"Dˆ!B„"Dˆÿ"Dˆ!þ"Dˆü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ É‘H‘"EŠ)’#€êàT'p \àÀ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„ÿ"Dˆ!B„"Dˆ!:Dˆ!B"DˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~’#;‘"EŠ)R$GÕÁƒO:xðà©3ÿ ðÀ@ÿ 0A(ð€ÿüûà€ÿþøàß¿þø÷ïß?ÿþ øï€ÿþø÷ï€þø÷Àà? 4xaB… 6tøp!€@„"Dˆ!B„"Dˆ!þˆ!B„"Dˆ!B„"Dÿˆ!BDˆ!B„"Dˆ!B„"Dˆ!B„ø!B„ñˆ!B„øÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#ÈÙ‰)R¤H‘"9¨„QâDŠ-^Ę1#4jÔx€F ШQ£F5jÔ¨Q£F5jÔ¨Q£F²Ó¨Q£F5jffl €êÂ8P :€ÿ 0À?üÿ0À? €ø`à? ð€@ÿà€8pà@ÿ H° Áƒ*\Ȱ¡Ã‡# pàÀ‰%J”(Q¢D‰%J”(ñ$J”(Q¢D‰%J”(Q¢D‰%J,‰%J”(Q¢D‰%J”(Q¢D‰%"€D‰%6 Q¢D‰ H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%.d'Q¢D‰%J”(Q¢D‰%:0 : ü'p  ÿðÀÿ?`à?0€üð€@ÿ €@ü'p Á‚"L¨p!ÆBŒ(À$J”(Q¢D‰%J”(Q¢D(Q¢D‰%J”(Q¢D‰%J”(‘ H”(Q¢D‰%J”(Q¢D‰%J”(!$J”(±!‰%J\@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(q!;‰%J”(Q¢D‰%J”(Ñ!‰%Jl€!‰%J”(Q¢Ä…8 Q¢D‰%J”(Q¢D‰%@¢D‰ÿ%J”(Q¢D‰%J”(Q¢Ä‚(Q¢D‰%J”(Q¢D‰%J”(Q"B(Q¢Ä†$J”(q!‰%J”(Q¢D‰%J$‘DI$‘DI$‘DI$‘DI$‘DI´@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹ \¼x1"….^¼xñâE‰8pñâÅ‹/^¼xñ¢E\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/^,€‹/BpñâEˆ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/.dwñâÅ‹ÿ/^¼xñâņ.^¼xñâÅ‹/^¼øÀ.^¼xñâÅ‹/^¬/^¼xñâÅ‹/^¼xñ¢A¸xñâÅ‹/^¼xñâÅ‹/ÀÅ‹!¸xñ"D/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹²»xñâÅ‹/ºè¢‹.j ÿþý¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B°hÑ¢E‹-Z´hÑbBX´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z¤-ZœÀ¢E‹ÿX´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´èE‹-Z´hÑ¢E‹- 0P@x TðŸÀ à€ƒ pp €ÿ$XÐàA„ .dØÐáCˆ%"pàÀ‰'Nœ8qâĉ'NœH'Nœ8qâĉ'Nœ8qâĉ `âĉ'Nœ8qâĉ'Nœ8qâD„˜8qâD…&Nœ81!€‰'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8"»‰'Nœ8qâĉ'Nœ8À@uðàÁS§„àÀ!B„"Dˆ!B„"D‚"Dˆ!B„"Dˆ!B„"Dˆ "Dˆ!B„"Dˆ!B„"DˆDˆ!BT"Dˆ!&ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2äEv"EŠ)R¤HŽT'p A€ÿdÇŽ@vÙ±c7;vì²ÈŽ»ÿØ ÈŽ»ìØ d';vÿ±cÇŽÝ?ÿvÙ d÷;vì²ÈŽ;ì²ÈN »ìþ8`Aƒ&T¸aC‡!8pàDˆ!B„"Dˆ!B„‘ B„"Dˆ!B„"Dˆ!B„1!@„"Dˆ!B„"Dˆ!B„"Ć€"Dˆ @„"Ä„þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†¼ÈN¤H‘"EŠÉ€H‘Ù5dÇH‘"E8pà€H‘"EŠ)Ò DŠ)R¤H‘"E^€H‘"EŠ)R¤H‘ ÿ RäE"EV R¤H‘"EŠ)R¤H‘"EŠ)Ò ;‘"EŠ)R$G"EZdçBv"EŠùÀDŠ)R¤H‘@¤H‘"EŠ)RäEˆ)R¤H‘"EŠ™Dм@¤ÈŠDŠ)R¤H‘"EŠ)R¤H‘"Ed'R¤H‘"EŠä@¤H‘"EŠ ÀDŠ)R¤H‘ R¤H‘"EI$‘0€@€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ1@£FhÔ¨q!5jÔ¨Q£F5jÔ¨Q£F5ÿjÔ¨‘!;5jÔ¨Q£F PÀþ8`Aƒ&T¸aC‡!F”8‘bE…8`Ñ¢E‹-Z´hѢŰhÑ¢E‹-Z´hÑ¢E‹+€E‹-Z´hÑ¢E‹-Z´hq",Z´hq ‹-ZÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢŅì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$XÐàÁƒÙ ðŸÀ dÇŽAƒ ²3(A‚ìþ8`Aƒ&T¸aC‡!þpàÀˆ#FŒÿ1bĈ#FŒ± "FŒ1bĈ#FŒ1bĈ#FŒh#FŒ1bĈ#FŒ1bĈ#FŒ˜"FŒ1¢A#FŒÑ €ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ ²‹1bĈ#FŒ1bĈ#.0P„QâDŠ-^ĘQãFŽ=~Ò";‘"EŠ)R$GÕÁƒO:xðà©ÓÈN!»‡ì²ÓÈî ;†ìDŠ)ÀDŠ)R¤H‘ R¤H‘"EŠ)ò"ˆ)R¤H‘"EŠ™"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R$Ev"EŠ)R¤HŽªƒPÀðÔü'p ;vì²c';vÙ±c';ìØ±øÝ@ìØ±ÈŽÿ@vìþ±8ð;vì²cÇî;vÙ±cÇN ;ìØ±ÈnàÀÙü'p Á‚"L¨p!ÆBpàÀˆ!B„"Dˆ!B„¢@@„"Dˆ!B„"Dˆ!B„bB@„"Dˆ!B„"Dˆ!B„"ĆðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$KšÜÈîäÉ“'Ož ` :xÕ OÀ²Èî;ì²(Ý?vÙ d7ÝÀì²ûÇN »ì²cÇnàÀÿìþ±ÈN »ì²ûÇî»ìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„ø B„"Dˆ!B„"Dˆ!B„1! B„"Dˆ!B„"Dˆ!B„bCü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&9²;yòäÉ“'A¨"DˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~’";‘"EŠ)R$GÕÁƒO:xðà©+Èn »ì ²@ÿþýûÇîß¿ÿØýûÇà?Ù d'Ý?vÙýc7Ý?vÿ±ÈnàÀì²Èî»ìþc'ÝÀ²øOà@‚ D˜PáB† >LàÀ!B„"Dˆ!B„"C€"Dˆ!B„"Dˆ!B„"Ä„"Dˆ!B„"Dˆ!B„"DˆÿDˆ!B|"Dˆ!>ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2$Ev"EŠ)R¤HŽªOà@êþ(Ý@vÿØ d÷Ý?v²ûÇN »ì²ûÇn »ì²Èî»ìþ±Èî»ÿØ d7Ý?vÙýc'»ìþ±ÈN »ì8À,hð „ 2lèðaB€"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„ÿ"Dˆ!6Dˆ!B„"Dˆ!>ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2$Ev"EŠ)R¤HŽT'p A€ÿdÇŽ;ìØ±ÈŽÝ@ì²c7»ìرÈn »ì²cÇN »ìþ±øÝ@vìØ dÇn ;vÿØýc'@vì²ÈN ;ì²øOà@‚ D˜PáB† >LàÀ!B„"Dˆ!B„"C@„"Dˆ!B„"Dˆ!B„¢B@„"Dˆ!B„"ÿDˆ!B„"Ć€"Dˆ@„"ćþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†¤ÈN¤H‘"EŠÉ€Ev"ERdÇH‘"78pà€H‘"EŠ "EŠ)R¤H‘"/€H‘"EŠ)R¤H‘@¤HŽDŠÜ@¤H‘"EŠ)R¤H‘"EŠ)Rä@v"EŠ)R¤HŽ$²cÇŽH‘Ù)d'R¤HŽ8 R¤H‘"E~‘"EŠ)R¤H‘ R¤H‘"EŠ)RdBˆÙ€H‘ÿˆ)R¤H‘"EŠ)R¤H‘"EŠÈN¤H‘"EŠÉ€H‘"EŠ)"€ˆ)R¤H‘ R¤H‘"EI$‘0€@€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ1@£FhÔ¨1"5jÔ¨Q£F5jÔ¨Q£F5jÔ¨1!;5jÔ¨Q£F PÀþ8`Aƒ&T¸aC‡!F”8‘bE…8`Ñ¢E‹-Z´hÑâCX´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z´(ÿ,Z´h1!‹-Z<À¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢńì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ$XÐ ;vìØ4hРAÙ ðŸÀ dg ;€ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒ1bĈ#6€ˆ#FŒ1bĈ#FŒ1bĈ#@Ĉ#FŒ1bĈ#FŒ1bĈ#&À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,ir$»“'Ož<ÿy$€êàÁƒ§N„¨À"FŒ1bĈ#FŒ1"Cˆ1bĈ#FŒ1bĈ#FŒ1¢Aˆ1bĈ#FŒ1bĈ#FŒ1bD„øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%M’dwòäÉ“'O‚0P<€ê„§à?Ù d÷Ý@vÿØ d7p »ìþ±c'Ý?vÙ d÷;ìÿþ±øÝÀì²ûÇn »ì²ûÇnàÀÙü'p Á‚"L¨p!ÆBTàÀ#FŒ1bĈ#FŒ‘!"FŒ1bĈ#FŒ1bĈ#FŒx#FŒ1bĈ#FŒ1bĈ#FŒ˜ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤I’ìNž„¨À"FŒ1bĈ#FŒ1"CDŒ1bĈ#FŒ1bĈ#FŒñ "FŒ1bĈ#FŒ1bĈ#FŒ!ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&I²;yòäÉ“'A¨„8À"FŒ1bĈ#FŒ1"BDÿŒ1bĈ#FŒ1bĈ#FŒñ "FŒ1bĈ#FŒ1bĈ#FŒ!"FŒ1bD#FŒÑ!€ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈÿ±‹1bĈ#FŒ1bĈ#.0P„8À"FŒ1bĈ#FŒ1âADŒ1bĈ#FŒ1bĈ#FŒñÿ "FŒ1bĈ#FŒ1bĈ#FŒ!"FŒ1bD#FŒ"€ˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈÙEŒ1bĈ#FŒ1bĈˆX]Ĉ#"d÷Cv#FŒ1bĈ8p bĈ#FŒ1bĈ#€ˆ#FŒ1bĈ#FŒ1bĈ#€ˆ#FŒ1bĈ#FŒ1bĈ#FD€ˆ#FŒ@Ĉ#F„ ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3ÿjÜȱ£Ç CFd'R¤H‘"EŠä@";vìØ‰Y;vì²SÈN¤H‘" 8pà€H‘"EŠy"EŠ)R¤H‘"1@¤H‘"EŠ)R¤H„ R¤H"E† R¤H‘"EŠ)R¤H‘"EŠ)’H‘"EŠ)’#‘"EŠ)R$D)R¤H‘"/@¤H‘"EŠ)R$Fˆ)R¤H‘"EЉ"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤HìDŠ)R¤H‘ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœHÿ±¢B°hÑ¢E‹-Z´hÑ X´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z”‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-:dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚Ù±cÇΠAƒÿ²(à? ,ÈÎ Avÿ H° Áƒ*\Ȱ¡Ã‡#"pàÀ‰%J”(Q¢D‰%JT‰%J”(Q¢D‰%J”(Q¢D‰ €D‰%J”(Q¢D‰%J”(Q¢Dÿ‰ À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Av(Q¢D‰¥FÕÁƒO:xðà©‹ÈN »ì²SÈ®";†ìP¢D‰ÀP¢D‰¥F D‰%J”(Q*J”(Q¢D‰%G D‰%J”(Q¢D‰%J”(Q¢D‰2#;”(Q¢D‰R#€êàÁƒ§N€‹/^ÿ¼xñâÅ‹/^¼x!.^¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹\¼xñâB/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE]$@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹  ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B°hÑ¢E‹-Z´hQ ,Z´hÑ¢E‹-Z´hÑ¢E‹ÿ`Ñ¢E‹-Z´hÑ¢E‹-Z”‹-ZŒÀ¢E‹#°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´h‘ ;‹-ÿZ´hÑ¢E‹-Z` :€ð¨à? ,@ÿ HP »Ù øï;€ÿ$Xð;ƒÙü'p Á‚"L¨p!ÆBŒØÀ$J”(Q¢D‰%J”(Ñ $J”(Q¢D‰%J”(Q¢D‰%J4%J”(Q¢D‰%J”(Q¢D‰%J,%J”(ñ!‰%J”ø€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q";‰%J”(Q¢D‰%J”(Ñ!€êàÁƒ§NðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2äCv"EŠ)R¤HŽªOà@êþ(Ý@vÿØ d÷@v²Èî»ì²øÝ?vÙ d÷Ý@vÿØ 8p ;€ÿ$XÐàA„ .ÿdØÐáCˆ8pà€D‰%J”(Q¢D‰%€D‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%²“(Q¢D‰%J”(Q¢D‰PÀþ8;vì²cÇn »Ù øï»ÿþ±û÷o »ÿþ±û÷ïß?vÿØýûÇîß?vÿþ ü÷Ý¿ìþýc÷ï»ÿþ±øOà@‚ D˜PáB† >„‘ÿ!€H”(Q¢D‰%J”(Qâ@(Q¢D‰%J”(Q¢D‰%J”(Ñ $J”(Q¢D‰%J”(Q¢D‰%J”h%J”(1"‰%J”€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(1";‰%J”(Q¢D‰%J”(Ñ!‰ÙI”‘Cv%J”(Q¢D‰8pà€D‰%J”(Q¢D‰%€D‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Q¢Ä‚ðŸÀ <ˆ0¡Â…ÿ :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<¹J”(Q¢D©€DvìØ±CéBv(Q¢DiÀP¢D‰åD D‰%J”(Q*”(Q¢D‰%Ê@‰%J”(Q¢D‰%J”(Q¢D‰%Hv(Q¢D‰¥F(Q¢D‰¥C@‰%J”%J”(Q¢D‰R!P¢D‰%J”(9%J”(Q¢D‰%J”(Q¢D‰%J” Ù¡D‰%J” ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Bÿ°hÑ¢E‹-Z´H-Z´hÑ¢E‹-Z´hѢŰhÑ¢E‹-Z´hÑ¢E‹-F‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-ZdgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚Ù4hРAƒÙ$Èà? 4xaB… 6tøbĈ8 Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Q¢A(Q¢D‰%J”(Q¢D‰%J”(QbAü'p Á‚"L¨pÿ!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O6d‡%J”(Qj0P„"€H”(Q¢D‰%J”(Qâ?H”(Q¢D‰%J”(Q¢D‰%J”x%J”(Q¢D‰%J”(Q¢D‰%J,‰%J”(Q ‰%J”€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(1";‰%J”(Q¢D‰%J”(Ñ!€êàT'p €Š+V¬X±bÅŠ+V¬X±bE…P±bÅŠ ¨X±bÅŠT¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VTQEÄà? 4xaB… 6tøbD‰)V´ØÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%MžœÈ%J”(Q¢Ô` @uøOà@vìØ±ÈŽ»ìþ±øÿÝ@vìØ dÇŽ;ìØýc';vÙ±Èî»ÿØ dÇŽÝ@vìØ±ÈŽ;vÙ±c'Ý@vì²ÈN ;ì²øOà@‚ D˜PáB† ><àÀ!B„"Dˆ!B„q B„"Dˆ!B„"Dˆ!B„q! B„"Dˆ!B„"Dˆ!B„âBü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&ORd‡%J”(Qj`‘Gv(+²cÈ%J”8p%J”(Q.J”ÿ(Q¢D‰åB D‰%J”(QnJ”(Q¢D‰%J”(Q¢D‰%J”(Q²C‰%J”(5ÈŽ;vÙ¡´ÈN!;”(Q"pàÀ”(Q¢D©P¢D‰%J”(%J”(Q¢D‰R# D‰%J”(Q¢D‰%J”(Q¢D‰%;”(Q¢D‰R#”(Q¢D‰Ò!€ D‰%J…@‰%J”(Q¢\(Q¢D‰%J”ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš„QâDŠ-^ĘQãFŽ=~r!;‘"EŠ)R$GÕÁ¨Nà@xêþ(Ý@vÿØ d÷@€ì ü÷ï»ÿþ±ûÇîß?vÿØýû÷Ýÿ?vÿþýc÷Oà¿ìþ±û÷Ý?vÿþýc÷À²Èî»ìþ±Èî»dðŸÀ <ˆ0¡Â… :|èÀ B„"Dˆ!B„" B„"Dˆ!B„"Dˆ!B„q!@„"Dˆ!B„"Dˆ!B„"D…"Dˆ!B"Dˆ!B„øÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È Ù‰)R¤H‘"9¨@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠQDEQDE Äà? 4xÿaB… 6tøbD‰)V´ØÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~2!;‘"EŠ)R$GÕÁ¨Nà@xêþ(Ý@vÿØ d÷@€ì ü÷ï»ÿþ±ûÇîß?vÿØýû÷Ý?vÿþýc÷Oà¿ìþ±û÷Ý?vÿþÿýc÷Ý¿ÿþ±øOà@vÿØ Èî»dðŸÀ <ˆ0¡Â… :|À B„"Dˆ!B„‘! B„"Dˆ!B„"Dˆ!B„‘! B„"Dˆ!B„"Dˆ!B„¢B@„"Dˆ €"Dˆ!ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2dBv"EŠ)R¤HŽªƒž:uðàÁSWÝ@vÿ²(ð»ÿØýû÷ï»ÿ ü÷Ý¿ÿØýû÷Ý?vÿþýc÷ÿÝ¿ÿØýûÇîß¿þc÷ïß¿ìþýû7Ý?vÿþýÈî;€ÿ$(À,hð „ 2lèð!D€"Dˆ!B„"D†€"Dˆ!B„"Dˆ!B„"Ä…"Dˆ!B„"Dˆ!B„"Dˆà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yr#;”(Q¢D‰R#€êàÁƒ§N|ø!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!²)R¤H‘"Er0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹-Z´hÑâ@°hÑ¢E‹-Z´hÑ¢E‹-þ€E‹-Z´hÑ¢E‹-Z´h"X´hѢń,Z´hÑbB-Z´hÑ¢E‹-Z´ÿhÑ¢E‹-Z´hÑ¢E‹'²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`Á‚Ù ðŸÀ <ˆð ;‚ì&d—ð »„ÿØ%L˜0a„ &L˜0aÂ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰ @‘"EŠ)R¤H‘"EŠ)R¤È)R¤H‘"EŠ)R¤H‘"EŠ €"EŠ)R@‘"EŠ' H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"Å„ì(R¤H‘"EŠ)R¤H‘¢AÕÁƒO:xðà©‹ÈN ÿ;‚ì(RÈŽ ;‰ì²cÈŽ"EŠ)NpàÀŠ)R¤H‘"EŠÿ€"EŠ)R¤H‘"EŠ)R¤H‘!(R¤H‘"EŠ)R¤H‘"EŠ)EŠ)R¤€"EŠ)N@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤HEQ”@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹  T|øðáÇ>|X>|øðáÇ>|øðáÇ>|øðáÃxøðáÇÿ>|øðáÇ>|øðáÇþÀÇ>|øðá?>|øðáC‡þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†DÈN¤H‘"EŠÉÀ@uðª8ž:€ÿ d7Ý?vÙýc' ;ÿýûÇîß¿ìþ±û÷Ý?vÿþýc÷Ý¿ÿØýøï»ìþýc÷Ý¿ÿØý8ðß?vÿþýcðŸ@ìþ±Èî»ìþ±ÈN »ì8À,hð „ 2lèÐ!€<|øðáÇ>|øðáÂxÿøðáÇ>|øðáÇ>|øðáÇàáÇ>|øðáÇ>|øðáÇ>|ø>|øðáÇÿ<|øðáÇøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~!;‘"EŠ)R$GÕÁƒO:xðà©+Èn »Ù øÝ¿ìþýû÷Ý¿þûÇîß¿ìþýûÇî»ÿþ±ûÇîß¿ìþýc÷ïß¿ÿ±û÷ïß?vÿþ øïß@vÿØýû÷Ý¿ÿ±û÷ï»ÿþ±øOà@‚Ùü'p ÿÁ‚"L¨p!Æ8pàÀÇ>|øðáÇ>,€‡>|øðáÇ>|øðáÇ>|øð<|øðáÇ>|øðáÇ>|øðáÇàáÇ>|øð€‡>|øð¡Cÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç C"d'R¤H‘"EŠä` :xðà©S|øðáÇ>$€‡>|øðáÇ>|øðáÇ>|øP >|ÿøðáÇ>|øðáÇ>|øðáÇÿððáÇ>|(ÀÇ>|øÐ!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!²)R¤H‘"Er0 : ü'p ;vìØ dÇŽÝ@vÿØ üÇn ;vì²c';vì²cÇN »ì²c7;vÙ üÇn ;vì²cÇŽ@vìØ±ÈŽ;ì²c'@vÙ d7À,hð „ 2lèÐ!€<|øðáÇ>|øðáC‚xøðáÇ>|øðáÿÇ>|øðáÇÿÀÇ>|øðáÇ>|øðáÇ>|ø>|øðáÇÿxøðáÇ>üà? 4xaB… 6tøbD‰)V´xcF9vôødȃìDŠ)R¤H‘XdבH‘ì²)RdD)R¤H‘@¤H‘"EŠ)RdFˆ)R¤H‘"EŠi"EФ@¤H‘ˆ)R¤H‘"EŠ)R¤H‘"Ebd'R¤H‘"EŠä@";vìØyd'Rä?v Ù‰)R"€ˆ)R¤HŽÿ)R¤H‘"EŠ©"EŠ)R¤H‘"E€H‘"))RäD"EŠ)R¤H‘"EŠ)R¤H‘Ù‰)R¤H‘"9)R¤H‘"EBpàÀ‘"EŠÉ"EŠ)R$‘DI#€øOà@‚ D˜PáB† >„QâDŠ-^Ę‘"hÔ¨Q£D5jÔ€F5jÔ¨Q£F5jÔ¨Q£F5j´ÈN£F5jÔ¨Q£FƒT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XQ!€X´hÑ¢E‹-V‹ÿ-Z´hÑ¢E‹-Z´hÑâ?°hÑ¢E‹-Z´hÑ¢E‹->€E‹-ZlÀ¢E‹-.`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hQ";‹-Z´hÑ¢E‹-Z` :€ð¨à? ,@ÿ H° Áƒ²+È.a„ ÿ±Kø]„ &L˜0a„ &pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N<Š)R¤H‘"EŠ)R¤H‘"E† H‘"EŠ)R¤H‘"EŠ)R¤h)R¤H‘â@)R¤ÿH‘â?)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤ˆEŠ)R¤H‘"EŠ)R4` :xðà©S|øðáÃxøðáÇ>|øðáÇ>|øðáÇàáÇ>|øðáÇ>|øðáÇ>|øÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“#Ù¡D‰%J” T :á©øO @vÙýc7Ý?v²(ðß¿ìþýûÇî»ÿØýc÷ïß?vÿØýû÷Ý?ÿþ±ûÇîß?vÿØýû÷Ý?vÿØýc÷Ý¿ìþýûÇî»ÿØýcÿ÷ï;€ÿ d÷Ý@vÿØ d÷ÝÀ²øOà@‚ D˜PáB† .pàÀ‡>|øðáÇ>|ø>|øðáÇ>|øðáÇ>|øð¡@<|øðáÇ>|øðáÇ>|øðáÇÿà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yr$;”(Q¢D‰R#€êàÁƒ§N|øðáÇ>|ø>|øðáÇ>|øðáÇ>|øðáÃððáÇ>|øðáÇ>|øðáÇ>€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäÉ‘ìP¢D‰%Jªƒž:uðàÁSWÝ@vÿØd'AvÙd'Ý@vÿØ d÷Ý@vÿÙ dW@vÙ dwAvÙ d÷Ý@vÿØdÇJ”$8p%J”(G%J”(Q¢D‰’!P¢D‰%J”(5%J”(Q¢D‰%J”(Q¢D‰%J”(!²C‰%J”(5¨ <ªøO @vÙýc7Ý?vÙ üÇN »ìþ±Èî»ìþ±Èî»ìþ±Èî»ìþ±ÈN ;ì²ûÇN »ì²ûÇn »ì²ûÇn »ì8À,hð „ 2lèp!€<|øðáÇ>|øðáC<|ÿøðáÇ>|øðáÇ>|øðáÇððáÇ>|øðáÇ>|øðáÇ>ü€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI’ìP¢D‰%JT'p A€ÿdÇŽ;ìØ±Èî»ÿØ dÇŽÝ@vì²cÇŽÝ@vìØ d7@vì²cÇN »Ù dÇŽÝ@vì²c7;vì²cÇŽ@vìØ d'@vÙ dðŸÀ <ˆ0¡Â… :\àÀ>|øðáÇ>|èÿ>|øðáÇ>|øðáÇ>|øðáCxøðáÇ>|øðáÇ>|øðáÇÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Iv(Q¢D‰¥FÙud‡ò"»ƒì²C‰’$€ D‰¥H D‰%J”(Q2”(Q¢D‰%ÊŒ@‰eA(Q¢%J”(Q¢D‰%J”(Q¢<È%J”(Q¢Ô@";vìØyd‡r";vìØ%d§J”%8p%J”(E%J”(ÿQ¢D‰’!P¢D‰%J”(5%J” D‰r ”(Q¢D‰%J”(Q¢D‰ò ;”(Q¢D‰R#”(Q¢D‰Ò!€ D‰¥H D‰%J”(Q2 €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ)€F5V Q£FhÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£ÆŠì4jÔ¨Q£F5j4` @uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹-Z´hÑbD°hÑ¢E‹-Z´hÑ¢E‹-þÿ‹-Z´hÑ¢E‹-Z´hÑâCX´hÑ¢Eˆ,Z´hÑbC-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹#²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`Aƒìر3hÐ`Avÿ±3XÁ‚ì²3HÀ,hð „ 2lèð!Ä…81bĈ#FŒ1bDƒˆ1bĈ#FŒ1bĈ#FŒ1bBDŒ1bĈ#FŒ1bĈ#FŒ1¢ADŒ1bĈˆ1bĈ#1bĈ#FŒ1bÿĈ#FŒ1bĈ#FŒ1bĈ#FŒÑ »ˆ#FŒ1bĈ#FŒ1âBÕÁƒO:xðà©‹ÈN »ì"dwÝBv ÙýcÇ]Ĉ#FŒ1¢Bˆ1bĈ#FŒ1¢ADŒ1bĈ#FŒ1bĈ#FŒ1!"FŒ1bĈ#FŒ1bĈ#FŒ± @øOà@‚ D˜PáB† >,"Dˆ!B„ØÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#ÈÙ‰)R¤H‘"9¨„QâDŠ-^Ę‘"4jÔ¨ñ"5j¬@£F5jÔ¨Q£F5jÔ¨Q£F5Rd§Q£F5jÔ¨Q£AÕ„'p @uÿ Èn »ì²ûÇN »ì²Èî;ì²ûÇn »ìþ±Èî»Ù d÷Ý@vÿØ d÷Ý?vÈà? 4xaB… 6tø¢Bˆ1bĈ#FŒ1"ADŒ1bĈ#FŒ1bĈ#FŒ1!"FŒ1bĈ#FŒ1bĈ#FŒ± DŒÿ1bĈˆ1bĈ#1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ± »ˆ#FŒ1bĈ#FŒ1âBª8 À²cÇŽ@vìØ d';vÿ±cÇŽÝ?vÙ d÷;vì²ÈŽ;Ù øïß@vÿ²û÷ïßÀÿØýc÷ï»ÿØýûÇîß¿ìþ8`Aƒ&T¸aC‡!*pàÀˆ#FŒ1bĈ#€ˆ#FŒ1bĈ#FŒ1bĈ#&@Ĉ#FŒ1bĈ#FŒ1bÿĈ#@Ĉ#FŒ1!€ˆ#FŒ1¢A#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ ²‹1bĈ#FŒ1bĈ#.± »ˆÙEŒXCv#FŒ1bĈ 8p bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bÄ„1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FL bĈ#Š("ƒðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2dAv"EŠ)Rÿ¤HŽ$²cÇŽHv" ²SÈN¤H‘"8pà€H‘"EФ‘"EŠ)R¤H‘ R¤H‘"EŠ)RdA)RdF"EŠÌ@¤H‘"EŠ)R¤H‘"EŠ)²";‘"EŠ)R$G"EŠ)R¤Hˆ8 R¤H‘"'€H‘"EŠ)R¤H)R¤H‘"EŠ)² DŠ©€H‘"3)R¤H‘"EŠ)R¤H‘"EЬÈN¤H‘"EŠÉÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´hѢņÿ°hÑ¢E‹-Z´hÑ¢E‹- ‹-Z´hÑ¢E‹-Z´hÑâCX´hÑ¢E‰,Z´hÑbD-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`Aƒìر3hÐ`Av ²cÇŽAƒ²3HÀ,hð „ 2lèð!Ä…81bĈ#FŒ1bDˆ1bĈ#FŒ1bĈ#FŒ1bBDŒ1bĈ#FŒ1bĈ#FŒ1bAˆ1bĈ#&ÿ1bĈ#FD bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1"Av#FŒ1bĈ#FŒ1bÄ…ªƒž:uðàÁS‘@vÙE,ÈN!»ì²CÈŽ!»ˆ#FŒ1bD…81bĈ#FŒ1bÄ1bĈ#FŒ1bĈ#FŒ1bÄ„ˆ1bĈ#FŒ1bĈ#FŒ1bD@ À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$ÊìR¦L™2eJŠªƒž:uÿðàÁS‘@vÙ)dGBvÙ1d—2eÊ‹82eÊ”2eÊ”)S¦LY)S¦L™2eÊ”2eÊ”)S¦L™2eÊ”)S¦L™2eʔ٥L™2eÊ” T :á©øOà@vìØ±ÈŽ;ìØýc7pà?vìØ dÇŽÝ?vì²cÇŽ@vÙ±c'»ìþc7;vٱȎ;ì8À,hð „ 2lèð!D…81bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bBÿˆ1bĈ#FŒ1bĈ#FŒ1bD‚ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰r »”)S¦L™’"€êàT'p „¨À"FŒ1bĈ#FŒ#FŒ1bĈ#FŒ1bĈ#FL€ˆ#FŒ1bĈ#FŒ1bĈ#F,ÿ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”Ù¥L™2eÊ” T‘"EŠ)R¤H‘ R¤ÿH‘"EŠ)RdAˆ)²#‘"En R¤H‘"EŠ)R¤H‘"EŠI‘H‘"EŠ)’#€Õ Hà? 4xaB… 6tøbD‰)VTàÀ-Z´hÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-Z‹-Z´hÑ¢E‹-Z´hÑ¢C°hÑ¢E‹X´hѢʼn,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-:dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚Ù±cgРA‚ìØ±cgÐà@vÿØÈÎ Avÿÿ H° Áƒ*\Ȱ¡Ã‡#8pà@Ĉ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bÄ„1bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#Fl bĈ#FŒ¨@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bÄì"FŒ1bĈ#FŒ1bĈ  T„À"FŒ1bĈ#Ft€ˆ#FŒ1bĈ#FŒ1bĈ#&€ˆ#FŒ1bĈ#FŒ1bĈ#F$€ˆ#FŒ1bC#FŒ1bD†"FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ# d1bĈ#FŒ1bĈ#F\` :xÕ OÀ²Èî»ìÿþ±ÈŽ»ÿ±ûÇn »ì²ûÇnà@vÙýcÇN »ì²ûÇn »ì8À,hð „ 2lèð!Dˆ81bĈ#FŒ1bCˆ1bĈ#FŒ1bĈ#FŒ1bBDŒ1bĈ#FŒ1bĈ#FŒ1bADŒ1bĈˆ1bĈ#21bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒQ »ˆ#FŒ1bĈ#FŒ1âBÕÁƒO:xðà©+Èn »Ù øÀ²ÿÈŽ;vÙýc' ;ÿ±øOà@vÙýc7Ý?vÙýc7Ý?vÈà? 4xaB… 6tø"Dˆ1bĈ#FŒ±!"FŒ1bĈ#FŒ1bĈ#FŒ¨#FŒ1bĈ#FŒ1bĈ#FŒH"FŒ1bĈ DŒ1bĈˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ(]Ĉ#FŒ1bĈ#FŒq!€êàÁƒ§N„QâDŠ-^ĘQãFŽ=~ò;‘"EŠ)R$GÕ„'p @uÿ Èn »ì²ûÇN »ì²Èn »ì²øÝÀìþ±ÿÈN »ì²ûÇnàÀÙü'p Á‚"L¨p!ÆBŒ˜À$J”(Q¢D‰%B‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%JT@¢D‰%J”x€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(‘ ;‰%J”(Q¢D‰%J”(Ñ!€Õ Hà?Ù±cÇN ;vì²ÈŽ»ÿØ dÇŽ»ì²Ènà?vÿØ d'@vìØ d'@vÙ dðŸÿÀ <ˆ0¡Â… :|1bB(Q¢D‰%J”%J”(Q¢D‰%J”(Q¢D‰%&€D‰%J”(Q¢D‰%J”(Q¢D‰€D‰%J”(1!‰%J”(QbB%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Äì$J”(Q¢D‰%J”(Q¢D‡$d'Q¢Ä첓(Q¢D‰%J”àÀ%J”(Q¢D‰!@¢D‰%J”(Q¢D‰%J”(Q¢Ä„(Q¢D‰%J”(Q¢D‰%J”(Q¢@ÿH”(Q¢D‰(Q¢D‰%& Q¢D‰%J”(‘DI$‘DI$‘DI$‘DI$‘DI$‘D ;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbCÙ±cÇîâÅ…ì²»xñâÅ‹/ pàÀ‹/^¼xñ"D¸xñâÅ‹/^¼xñâÅ‹ÀÅ‹/^¼xñâÅ‹/^¼h/^¼x±"€‹/^¼HÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbBv/^¼xñâÅ‹/^làâÅ‹/^¼xñâÅ‹ÿ8pàâÅ‹/ÿ^¼/^¼xñâÅ‹/^¼xñâB\¼xñâÅ‹/^¼xñâÅ‹àâÅ‹/VpñâÅ‹)¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^LÈîâÅ‹.ºè¢‹.ºè¢‹À¿ÿª8 À,hð „ 2lèð!Ĉ'R¬¨À,Z´hÑ¢E‹ÿÀ¢E‹-Z´hÑ¢E‹-Z´8-Z´hÑ¢E‹-Z´hÑ¢E‡°hÑ¢E‹ °hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´¸ÿE‹-Z´hÑ¢E‹- 0P@x TðŸÀ dÇŽÁì d'P À,XA‚ì dðŸÀ <ˆ0¡Â… :|1â?(Q¢D‰%J”è$J”(Q¢D‰%J”(Q¢D‰%JD%J”(Q¢D‰%J”(Q¢D‰%J‰%J”(QâB%J”(Q¢Ä„$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ÙI”(Q¢D‰%J”(Q¢D‰ T|à? 4xaB… 6tøbD‰)V´xcF9vôødHv!C† 2dÈ TÀĉ'Nœ8qâĉ'Nœ8qâÄ…˜8qâĉ'Nœ8qâĉ'Nœ8ñLœ8qâĉ˜8qâĉ'"0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ²›8qâĉ'Nœ8qâĉ T :á©øO @vÙýc7Ý?vÿ±øÝ?vÙ d÷Ý@vÿØ 8p ;€ÿ$XÐàA„ .dØÐáCˆ%6pàÀ‰'Nœ8qâćÿ˜8qâĉ'Nœ8qâĉ'Nœ¨&Nœ8qâĉ'Nœ8qâĉ'Nü€‰'Nœ8qâB'Nœ8qâD„&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâAv'Nœ8qâĉ'Nœ8q"€êàÁƒ§N„QbC˜8qâĉ'Nt'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8ÿqâĉ'Nœ8qâD˜8qâĉ'.0qâĉ'ND`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'd7qâĉ'Nœ8qâĉ'¨„Q €H”(Q¢D‰%J‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Qÿ¢D‰ÿðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰’#»”)S¦L™’"€êàÁƒ§N„QâDŠ-6 ‘;vì.^dÈÎ ;…ì.^¼xñâň8pñâÅ‹/^ÀÅ‹/^¼xñâÅ‹/^¼È/^¼xñâÅ‹/^¼xñbE\¼xñâÅ‹ \¼xñâÅ‹\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿ/dwñâÅ‹/^¼xñâņ.^¼xñâÅ‹/^¼øÀ.^¼xñâE‹pñâÅ‹/^¼xñâÅ‹/.€‹/^¼xñâÅ‹/^¼x‘"\¼xñâÅ‹ \¼xñâÅ‹\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/ˆÀ,hð „ 2lèð!Ĉ'R¬h±!€Õ Hà? 4xaB… 6tøbD‰)VTàÀ-Z´hÑ¢Eƒ°hÑ¢E‹-Z´hÑ¢E‹-€E‹-Z´hÑ¢E‹-Z´hÿ±!,Z´hÑ¢Eˆ,Z´hѢŇ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'P »Ù ÈnàÀÙ 8pà@vÙ 8ð;€ÿ$XÐàA„ .dØÐáCˆ%&pàÀ‰'Nœ8qâD„˜8qâĉ'Nœ8qâĉ'Nœ¸'Nœ8qâĉ'Nœ8qâĉ'þÀĉ'Nœ8ñ!€‰'Nœ8q¢C'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8‘ »ÿ‰'Nœ8qâĉ'Nœ8À@uðàÁS§„QâDŠ-60P„QbB˜8qâĉ'N'Nœ8qâĉ'Nœ8qâĉ`âĉ'Nœ8qâĉ'Nœ8qâDLœ8qâĉ'˜8qâĉ'J0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ²›8qâĉ'Nœ8qâĉ T„QbB˜8qâĉ'Nü€‰'Nœ8qâĉ'Nœ8qâĉ `âĉ'Nœ8qâĉ'Nœ8qâDLœ8qâĉ'þ0qâĉ'N”`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ' d7qÿâĉ'Nœ8qâĉ'˜8qâ@v ÙMœ8qâĉ'NLàÀ'Nœ8qâĉÿ0qâĉ'Nœ8qâĉ'Nœ8q!&Nœ8qâĉ'Nœ8qâĉ'Nü€‰'Nœ8qâÄ&Nœ8qâĉLœ8qâĉ'Nœ8qâĉ'Nœh¢‰&šh¢‰&šh¢‰& vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å†.^|ÈN!»‹/^¼xñ"E¸xñâÅ‹ÀÅ‹/^¼xñâÅ‹/^¼È/^¼xñâÅ‹/^¼xÿñ"E¸xñâÅ‹¸xñâÅ‹¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^üÇîâÅ‹/^¼xñâÅ‹ \¼xñâÅ‹/^¼xñ€\¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/6ÀÅ‹/^¼xñâÅ‹/^¼H/^¼xñ"D/^¼xñbC/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿØ]¼xñâÅ‹]tÑE5€ÿþT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XQ!€X´hÑ¢E‹`Ñÿ¢E‹-Z´hÑ¢E‹-Z$-Z´hÑ¢E‹-Z´hÑ¢E†°hÑ¢E‹-°hÑ¢E‹'°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´8E‹-Z´hÑ¢E‹- 0P@x TðŸ@ìüÇŽ;€ÿ$XÐàA„ì²CÈŽ;„²C(B„"Dˆ!B„"Dˆ!Bƒ8ðŸÀ <ˆ0¡Â… :|""FŒ1bĈ#FŒ1bĈ#FŒ¸#FŒ1bĈ#FŒ1bĈ#FŒ(ÿ"FŒ1bĈ#ˆ1bĈ#FŒ bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ!»ˆ#FŒ1bĈ#FŒ1âBÕÁƒO:xðà©cÈn ;ì">d7AvÙ d'ÝBvÙ1d1bĈ#FŒXÀ"FŒ1bĈ@Ĉ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈ bĈ#FŒQDÿà? 4xaB… 6tøbD#FŒ1bĈ#FŒ1bÿĈ#FŒ1bĈ#FŒ1bĈÙEŒ1bĈ#FŒ1bĈ¨@Ĉ#FŒ1bĈ#FŒ1bĈ@Ĉ#FŒ1bĈ#FŒ1bĈ# @Ĉ#FŒ1bÄ"FŒ1bĈ#ˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FDÈ.bĈ#FŒ1bĈ#FŒ¸À@uðª8ž:€ÿÿ d';ìdÇN ;vì²cÇî;vÙ±cÇn ;vì²cÇŽ@vÿØ dÇî»Ù±ÈŽ;ìØýcÇî»dðŸÀ <ˆ0¡Â… :|± €DŒ1bĈ#>@Ĉ#FŒ1bĈ#FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈ@Ĉ#FŒ1bÄ"FŒ1bĈ#ˆ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FDÈ.bĈ#FŒ1bĈ#FŒ¸À@uðªÿ8ž:€ÿ d÷@vÙ±c7ÝÀìþ±ÈN »ì²ûÇn »ì²ûÇn ;ì²cÇn »Ùýc'@vÈà? 4xaB… 6tøbAˆ1bĈ#Ft#FŒ1bĈ#FŒ1bĈ#F\€ˆ#FŒ1bĈ#FŒ1bĈ#F€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)ÿ±S©R¥J•*¨„XÀ"FŒ1bĈ bĈ#FŒ1bĈ#FŒ1bĈ 1bĈ#FŒ1bĈ#FŒ1bĈà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeÊìTªT©R¥J‡ªOà@êþ(Ý?vÙýc7@vÙ d÷@vÙýc7Ý?vÙýc7»Ùýc'Ý@vÙ d7Ý?vÙ dÿ7pàÀìþ8`Aƒ&T¸aC‡!pàÀˆ#FŒ1bĆ1bĈ#FŒ1bĈ#FŒ1bÄ…ˆ1bĈ#FŒ1bĈ#FŒ1bDøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R ;•*UªT©Ò!€Õ Hà?Ù dÇn ;vìþc';vìþ±ÈN »ìرc7;v²(à?Ù d';vÿ±ÈŽ;vÿØ d÷@vÙ d7À,hð ÿ„ 2lèð!Ä‚81bĈ#FŒØ#FŒ1bĈ#FŒ1bĈ#Fd€ˆ#FŒ1bĈ#FŒ1bĈ#F€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)²S©R¥J•*Pyʃì²S©RåCP©RåE¨T©R¥J•*Q€J•*UªT©ReAP©R¥J•*UªT©R¥J•*UªT©R¥Ê‹ìTªT©R¥J‡Td§!;…ìTªT ÀTªTiÿTªT©R¥J•( R¥J•*UªTi*Uªô@¥J•¨T©R¥J•*UªT©R¥Ê‚ìTªT©R¥J‡TªT©R¥J8 R¥J‹P©R¥J•*U¦€J•*UªT©R¥A¨T©Ò#@ÿ H° Áƒ*\Ȱ¡Ã‡#  Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%.d'Q¢D‰%J”(Q¢D‰%:0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹-Z„‹-Z´hÑ¢E‹-Z´ÿhÑ"A°hÑ¢E‹-Z´hÑ¢E‹-.‹-Z´hÑ¢@-Z´hÑ¢Å,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-þcgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'P »ÿ±cÇnàÀÈN @€ÿ$XP ;ƒÙü'p Á‚"L¨p!ÆBŒ(Q €Lœ8qâĉÀĉ'Nœ8qâĉ'Nœ8qâÄ…˜8qâĉ'Nœ8qâĉ'Nœ8'Nœ8qâĉLœ8qâĉ'0qâÿĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉÙMœ8qâĉ'Nœ8qâĉªƒž:uðàÁSÇÝ@vÙAd÷@v ÙMœ8qâĉ'NüàÀ'Nœ8qâD‡˜8qâĉ'Nœ8qâĉ'NœÈ'Nœ8qâĉ'Nœ8qâĉ'`âĉ'Nœ8± €‰'Nœ8qâÄþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA^d2dÈ!C† )À@uðàÁS§„Qâ?˜8qâĉ'2ÿÀĉ'Nœ8qâĉ'Nœ8qâD†˜8qâĉ'Nœ8qâĉ'Nœ(&Nœ8qâĉ ˜8qâĉ'N,`âĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ%²›8qâĉ'Nœ8qâĉLœ8Ýăì²›8qâĉ'NœøÀ&Nœ8qâĉ 0qâĉ'Nœ8qâĉ'Nœ8q!Lœ8qâĉ'Nœ8qâĉ'N”€‰'Nœ8qâă&Nœ8qâĉ ˜8qâĉ'Nœ8qâĉ'Nœh¢ÿ‰&šh¢‰&šh¢‰&’ vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å†.Jdw‘ ;…ì.^¼xñâÅ‹ 8pàâÅ‹/^4/^¼xñâÅ‹/^¼xñ"C\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/VpñâÅ‹/NpñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¬ÈîâÅ‹/^¼xñâÅ‹ \¼xñâÅ‹/^¼xñ€\¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/6ÀÅ‹/^¼xñâÅ‹/^¼8.^¼xÿñâÅŠ.^¼xñâʼn.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹]tÑE5€ÿþT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XQ!€X´hÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-Z$-Z´hÑ¢E‹-Z´hѢҰhÑ¢E‹-`Ñ¢E‹-ZÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ";‹-Z´hÑ¢E‹-Z` :€ð¨à?Ù ø;v8p @vþûÇÿà? 48@v²øOà@‚ D˜PáB† >„ñ €H”(Q¢D‰#€D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰%J”(Q¢DH”(Q¢D‰%B Q¢D‰%J”Ø€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”¨D‰%J”(Q¢D‰%J”èÀ@uðàÁS§pàÀ‰%J”(QbDH”(Q¢D‰%J”(Q¢D‰ÿ%J”¸%J”(Q¢D‰%J”(Q¢D‰%F‰%J”(Q¢Dˆ$J”H"‰$’H¢†ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;züÒ"»!C† 2dHªƒž:uðàÁSÇAvÙd‡‘Ý?v Ù… 2äF2dÈ…2dÈ!C† ² B† 2dÈ!C†\€!C† 2dÈ!C† 2dÈ!C† 2dÈ!² 2dÈ!C†` :xÕ OÀ²ÈŽ@vÿ²c';vÙ±cÇnà?vÿ±ûÇŽ@vì²cÇn ;vì²cÇŽÝ?vÈà? 4xaB… 6tøbDƒ8 Q¢D‰%J„%J”(Q¢D‰%J”(Q¢D‰%*‰%J”(Q¢D‰%J”(Q¢D‰#à? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeÊ„ìTªT©R¥J‡ªƒPÀðÔü'P »ì²ÈŽ»ì²Èî»ì²ø;ìþ±Èn »Ùýc7ÿÝ?vÈà? 4xaB… 6tøbDƒ8 Q¢D‰%J„‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢ÄˆðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2eBv*UªT©R¥CÕÁƒO:xðà©+ÈN »ƒì²Èn »ì²ÈŽ »ìþ±@ÿþ d÷Ý¿ÿØýcðŸÀ²øOà@‚ D˜PáB† >„Ñ €H”(Q¢Dÿ‰!@¢D‰%J”(Q¢D‰%J”(Q¢Ä…(Q¢D‰%J”(Q¢D‰%J”(1"þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦TÈN¥J•*Uªt` :xðà©S Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%&d'Q¢D‰%J”(Q¢D‰%: QbAv%dÇD‰%J”(QâC(Q¢D‰%:‰%J”(Q¢D‰%J”(Q¢D‰€Dÿ‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(€D‰%J”(QâC%J”(Q¢D‰%J$‘DI$‘DI$‘DI$‘DI$‘D%;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbC%²»‘Bv/^¼xñ¢E¸xñâÅ‹àâÅ‹/^¼xñâÅ‹/^l€‹/^¼xñâÅ‹/^¼xq"\¼xñâÅ‹ÿ¸xñâÅ‹+¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/RdwñâÅ‹/^¼xñâņ.^¼xñÿâÅ‹/^¼øÀ.^¼xñâE¸xñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/^œ€‹/^¼xñâ?/^¼xñâE/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâʼnì.^¼xñâÅ‹.ºè¢‹À¿ÿª8 À,hð „ 2lèð!Ĉ'R¬¨À,Z´hѢŃ`Ñ¢E‹-Z´hÑ¢E‹-Z,‹-Z´hÑ¢E‹-Z´hÑâBX´hÑ¢E‹°hÑ¢E‹-`Ñ¢E‹-Z´hÑ¢ÿE‹-Z´hÑ¢E‹-Z´H‘E‹-Z´hÑ¢E‹- 0P@x TðŸ@ìüÇŽ;€ÿ$XÐàA„Ùd']Âì&L˜0a„ &L˜0a„ &àÀ &L˜0a„ &L˜0aB‚øOà@‚ D˜PáB† >„QâDŠ-^ĘQ!hÔ¨Q£F5jÔ¨Q£ÆÐ¨Q£F ШQ£F ШQ£F5jÔ¨Q£F5jÔ¨Q£FÙiÔ¨Q£F5jÔhÀ@uðàÁS§„("FŒ1bĈ#FŒ1bĈ#FŒÈ#FŒ1bĈ#FŒ1bĈ#FŒø#FŒ1bĈˆ1ÿbĈ#FŒˆ@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1"Av#FŒ1bĈ#FŒ1bÄ…ªƒPÀðÔü'P ;ìØ d7p »ì²cÇn ;vì²cÇn ;vٱȎÝ?vÙýc÷ÝÀ²øOà@‚ D˜PáB† >„Q!€H”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢Ä… Q¢D‰%J”(Q¢D‰%J”(QbDH”(Q¢D‰%Jü@¢D‰%J”(1"‰%J”(Q¢D‰ÿ%J”(Q¢D‰%J”(Q¢D‰%J”(!;‰%J”(Q¢D‰%J”(Ñ!€êàT'p „QâDŠ8pà€E‹-Z´8,Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z\‹-Z´hÑâB-Z´hѢń,Z´hÑ¢E‹-Z´hÑ¢E‹-ÿZ´hÑ¢E‹'²³hÑ¢E‹-Z´hÑ¢EªOà@êþ(À,hð`A€ øOà@‚P° €ÿ$XÐàA„ .dØÐáCˆ#8pà€D‰%J”(1!$J”(Q¢D‰%J”(Q¢D‰%J\%J”(Q¢D‰%J”(Q¢D‰%B€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)!²S©R¥J•*¨„"€H”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢Ä…ÿ(Q¢D‰%J”(Q¢D‰%J”(1"þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦”ÈN¥J•*Uªt` :xðà©S„"€ÿH”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢Ä… Q¢D‰%J”(Q¢D‰%J”(Q"DH”(Q¢D‰%J,@¢D‰%J”(Qâ@%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Av%J”(Q¢D‰%J”(Q¢Cª8 À€@À@(ðß?ÿþýðïß@ÿüûàß?ÿþø÷ï€ÿ$XÐàA„ .dØÐáCˆ!8pà€D‰%J”(Ñ ÿH”(Q¢D‰%J”(Q¢D‰%J”¸%J”(Q¢D‰%J”(Q¢D‰%F€D‰%J”(Q¢Ä‚$J”(Q¢D‰% Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%d'Q¢D‰%J”(Q¢D‰%: Q"C `@¢D‰%J”(QâA(Q¢D‰%€D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰%J”(Q"D(Q¢D‰%J”X€D‰%J”(Q¢Ä$J”(Q¢D‰$’H"‰ÿ$’H"‰$’H"‰$’H"‰$’H"‰$’H"ƒbðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZlàâE.þ ÀÅ‹/^¼x1!€\¼xñâň¸xñâÅ‹/^¼xñâÅ‹ÀÅ‹/^¼xñâÅ‹/^¼(/^¼xñâŃ.^¼xñâÅ‹\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹#²»xñâÅ‹/^¼xñbC/^¼xñâÅ‹/^üàÀ/^¼x"\¼xñâÅ‹/^¼xñâÅ‹ pñâÅ‹/^¼xñâÿÅ‹/NÀÅ‹/^¼xñ €‹/^¼xñ"A/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâňì.^¼xÑE]tÑE]Ô@þýûPÀþ8`Aƒ&T¸aC‡!F”8‘bE…8`Ñ¢E‹+À¢E‹-Z´hÑ¢E‹-Z´h-Z´hÑ¢E‹-Z´hÑ¢E…`Ñ¢E‹-ZtÀ¢E‹-Z´¸€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Dv-Z´hÑ¢E‹-Z´(À@uá (PÀ,hð „Ùÿ±cÇN¡Âì²cÇŽ]AvÙ)d§P¡B… *T¨P¡B… ÿ8pà€B… *T¨P¡B… *ü€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ€F5jÔ¨Q£F5j5jÔ¨‘!5jÔ¨q!5jÔ¨Q£F5jÔ¨Q£F5jÌÈN£F5jÔ¨Q£Fƒªƒž:uðàÁS§Ñ"»ì²SÈ.!»ì²#ÈŽ!;5jÔàÀ5jÔ¨ñ4jÔ¨Q£F5jÔ¨ñ"4jÔ¨Q£F5jÔ¨ÿQã@hÔ¨Q£F hÔ¨Q£F hÔ¨Q£F5jÔ¨Q£F5jÔ¨QcFv5jÔ¨Q£F50P„QâDŠ-^ĘQãFŽ=~‘]È!C† 2¤@ÕÁ¨Nà@xêþ(@vÙýc'Ý?vÙýc7Ý?vì²ûÇN »ì²ûÇnà?v²ûÇnà@vÿØ d'@vÿرcÇn »ì²8pà@vÿ H° Áƒ*\Ȱ¡Ã‡ 8p"Dˆ!B„Q B„"Dˆ!B„"Dˆ!B„ñ!@„"Dˆ!B„"Dˆ!B„"D‚€"Dˆ!B„1!ˆ!B„"DˆøOà@‚ D˜ÿPáB† >„QâDŠ-^ĘQãFŽ=~‘]È!C† 2¤@ÕÁƒO:xðà©+ÈN @vþûÇîß¿ìþýûÇî»ÿþ±ûÇîß¿ìþýc÷ïß¿ÿ±û÷ïß?vÿþýÈî»ÿþ d÷Ý¿ÿØýû÷Ý¿ÿØýû÷Ý¿ìþýûÇîß?vÿ HP ;€ÿ$XÐàA„ .dØÐáC…8"Dˆ!B„ø B„"Dˆ!B„"Dˆ!B„ñ! B„"Dˆ!B„"Dˆ!B„"A€"Dÿˆ!B„1!ˆ!B„"DˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~‘]È!C† 2¤@ÕÁƒO:xðà©+ÈN »ƒì²Èî»ìþ±Èn ;ì ²#ÈN »ìþ±Èn »Ù øïß¿ìþýc÷ïß?vÿþ øï;€ÿ$(À,hð „ 2lèð¡B€"Dˆ!Büˆ!B„"Dˆ!B„"Dˆ!B„ˆ!B„"Dˆ!B„"Dˆ!B„H!ÿB„"Dˆ!*"Dˆ!B„âAÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç #² 2dÈ!C†` :€ð¨à?Ù d7Ý?vÙýc7Ý?vÙýc7Ý?vÙýc7Ý?vÙ d7Ý?vÙ dÇn @vÿØ d÷Ý@vÿØ Èî»dðŸÀ <ˆ0¡Â… :|¨À B„"Dˆÿ"Dˆ!B„"Dˆ!B„"DˆDˆ!B„"Dˆ!B„"Dˆ!B$ÿˆ!B„"Dˆ€"Dˆ!B„ñ €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãGÙ… 2dÈ!C 0 : ü'P »ìرÈŽ@vìØ±ÈŽ;ì²ÈŽÝ@vìØ dÇŽ»Ù±cÇN ;Ù ðŸ@ì²c';vì²(Ý?vÙ d'Ý@vÿ H° Áƒ*\Ȱ¡Ã‡ 8p"Dˆ!B„ B„"Dˆ!B„"Dˆ!B„ñ! B„"Dˆ!B„"Dÿˆ!B„"A€"Dˆ!B„Q!ˆ!B„"DˆøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~‘]È!C† 2¤@ Ù… ¹Cv!C†üàÀ!C†ì€!C† 2dÈ!  dÈ!C† 2dH…2dÈ„ 2dH‚B† 2dÈ!C† 2dÈ!!² 2dÈ!C†$»!²SÈ.dÈ 8p dÈ2dÈ!C† 2dA2dÈ!C† R!Bÿ† 2dA!C† ’ €!C† 2dÈ!C† 2dHˆìB† 2dÈ!2dÈ!C^pàÀ!Cr€!C† )¤B )¤‚ à? 4xaB… 6tøbD‰)V´xcƇ Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Qã?v5jÔ¨Q£F50 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹-F€E‹-Z´hÑ¢E‹-Z´hÑ ,Z´hÑ¢E‹-Z´ÿhÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hE‹-Z´hÑ¢E‹- 0P@x TðŸÀ <(ÀA€ øOà@‚P° €ÿ$XÐàA„ .dØÐáCˆ%8pà€D‰%J”(ñ$J”(Q¢D‰%J”(Q¢D‰%J\%J”(Q¢D‰%J”(Q¢D‰%BÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$ʔ٩T©R¥ÿJ• T„QâDŠ-6pÑ!€‹ (pñâÅ‹/^TàÀ/^¼x1!.^¼xñâÅ‹/^¼xñâÅÿ†pñâÅ‹/^¼xñâÅ‹/JÀÅ‹/^¼x‘!€‹/^¼xñ¢B/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE‡ì.^¼xñâÅ‹/^¼ØÀÅ‹/^¼xñâÅ‹ÿ8pàÀÅ‹/^D/^¼xñâÅ‹/^¼xñbC\¼xñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼ÈÀÅ‹/^¼xQ!€‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢Cv/^¼è¢‹.ºè¢‹.j ÿþý¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JÿœH±¢B°hÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-Z4‹-Z´hÑ¢E‹-Z´hÑ¢BX´hÑ¢E‹)°hÑ¢E‹-F`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´øE‹-Z´hÑ¢E‹- 0P@x TðŸÀ <(ÀA€ øOà@‚ pp €ÿ$XÐàA„ .dØÐáCˆ8pà€D‰%J”ø%J”(Q¢D‰%J”(Q¢D‰%2€D‰%J”(Q¢D‰%J”(Q¢D‰ Qÿ¢D‰%J”(‘!‰%J”(Q¢D‰ H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ÙI”(Q¢D‰%J”(Q¢D‰ T‰%J”(Q¢D‰ H”(Q¢D‰$’H¢„ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;züò!»!C† 2ÿdHªƒž:uðàÁSçÀA`À@È!CnpàÀ!C^@È!C† 2dÈ2dÈ!C† 2¤B„ 2dÈ„B† 2$B!C† 2dÈ!C† 2dÈÙ… 2dÈ!C 0P<€ê„§à?ø€@@ ø€@0€@@ €ðŸÀ <ˆ0¡Â… :|1¢A(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D†ÿ(Q¢D‰%J”(Q¢D‰%J”("$J”(Q¢D‰%2 Q¢D‰%J”(q!‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q ;‰%J”(Q¢D‰%J”(Ñ!€êàT'p ‰%J”(Q¢D‰ H”(Q¢D‰%J\@¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%JÈN¢D‰%J”(Q¢D‰%Jt` :xðà©S„Q"A'Nœ8qâĉ˜8qâĉ'Nœ8ÿqâĉ'Nœ8qâĉ'Nœ8qâD…ì&Nœ8qâĉ'Nœ8qâDÕ„'p @uÿ @ €ø@ þà€ø`à@ü €ø` €8À,hð „ 2lèð!Ĉ8p@¢D‰%Jd%J”(Q¢D‰%J”(Q¢D‰%.‰%J”(Q¢D‰%J”(Q¢D‰€D‰%J”(Q¢Ä†$J”(Q¢D‰%. Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Dÿ‰% d'Q¢D‰%J”(Q¢D‰%:0 : ü'p àø€@þü €@ à? 4xaB… 6tøbDƒ8 Q¢D‰%2€D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰%J”(Q"DH”(Q¢D‰%Jt@¢D‰%J”(QâB%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢@v%J”(Q¢D‰%ÿJ”(Q¢C%þ QâA H”(Q¢D‰%>pàÀ‰%J”(‘!$J”(Q¢D‰%J”(Q¢D‰%Jd‰%J”(Q¢D‰%J”(Q¢D‰!à? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJìTªT©R¥J‡JP)€B*Uª àÀ*UŽ•*UªT©R¥J¨T©R¥J•*U•*UªT©R¥J•*UªT©R¥J•*UªT¹J•*UªTé€J•*UªT)ÀTª ÿ•*UªT©R¥JP©R¥J•*Uª•*UªT©R¥J•*UªT©R¥J•*UªTÉJ•*UªTéÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ‹-Z´˜-Z´hÑ¢E‹-Z´hÑ¢Eƒ°hÑ¢E‹-Z´hÑ¢E‹-*€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Cv-Z´hÑ¢E‹-Z´(À@uá (PÀ  `àÀ(PÀÀÿ (à?ÿ ,(  ƒü'p Á‚"L¨p!ÆBŒXÀ$J”(Q¢D… Q¢D‰%J”(Q¢D‰%J”(Q"CH”(Q¢D‰%J”(Q¢D‰%J”øþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦ ÉN¥J•*Uªt` :xðà©S„‘ €H”(Q¢D‰ @¢D‰%J”(Q¢D‰%J”(ÿQ¢D†(Q¢D‰%J”(Q¢D‰%J”(ñ!H”(Q¢D‰%J|@¢D‰%J”(QbC%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Qâ?v%J”(Q¢D‰%J”(Q¢CÕÁ¨Nà@xêþ8P€þðO€@ü0PÀ?ÿ ð ÿýû'àß¿þ ø÷OÀ?ÿþýðOÀ?ÿþ øOà@‚ü'p Á‚"L¨p!ÆBŒHÀ$J”(Q¢Ä„(Q¢D‰%J”(Q¢D‰%J”(‘!ÿH”(Q¢D‰%J”(Q¢D‰%J”ø%J”(Q¢D‰!(Q¢D‰%J”Ø€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”øD‰%J”(Q¢D‰%J”èÀ@uðàÁS§„‘ €H”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D†(Q¢D‰%J”(Q¢D‰%J”(ñ!$J”(Q¢D‰%B Q¢D‰%J”(ñ!‰%J”(Qÿ¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(‘D‰%J”(Q¢D‰%J”èÀ@€ê$ðŸÀøO€þ (@ € P€@0ðŸ€(@À@þ ø'@ € (@ €þ8`Aƒ&T¸aC‡!F$àÀ%J”(Q"BH”(Q¢D‰%J”(Q¢D‰%J”È$J”(Q¢D‰%J”(Q¢D‰%J|‰%J”(Q¢D‰H”(Q¢D‰%J|@¢D‰%J”(Q¢D‰%J”(Q¢D‰ÿ%J”(Q¢D‰%Jd'Q¢D‰%J”(Q¢D‰%: Qâ@%ÀP€D‰%J”(QbC(Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢D†(Q¢D‰%J”(Q¢D‰%J”(ñ!H”(Q¢D‰%J„@¢D‰%J”(QâC%J”(Q¢D‰%’H"‰$’H"‰$’H"‰$’H"‰$’H"‰$ˆÀ,hð „ 2lèð!Ĉ'R¬h±!€‹\¬(@¡€‹/^¼x‘"€\¼xñâE¸xñâÅ‹/^¼xñâÿÅ‹àâÅ‹/^¼xñâÅ‹/^Œ€‹/^¼xñ¢D/^¼xñâEˆ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ Ù]¼xñâÅ‹/^¼x±!€‹/^¼xñâÅ‹/þpàÀ‹/^¼€‹/^¼xñâÅ‹/^¼xÑ!\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/^”àâÅ‹/^¼ÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xq!»‹/^¼xñâE]tQCø÷ï@uøOà@‚ D˜PáB† >„QâÿDŠ8pà€E‹-Z,‹-Z´hÑ¢E‹-Z´hÑ¢AX´hÑ¢E‹-Z´hÑ¢E‹€E‹-Z´hÑâ@-Z´hÑ¢E‹ÿX´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-2dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p 8pàÀ ø þ8`Á‚ 0HPÀ,hð „ 2lèð!Ĉ8p@¢D‰%J4%J”(Q¢D‰%J”(Q¢D‰%2€D‰%J”(Q¢D‰ÿ%J”(Q¢D‰ Q¢D‰%J”(Q"‰%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ì$J”(Q¢D‰%J”(Q¢D‡ªƒž:uðàÁSWPÀ@ 8(€ ‰ÿü PC%J”(Q¢D‰ 8p@¢D‰%J4‰%J”(Q¢D‰%J”(Q¢D‰€D‰%J”(Q¢D‰%J”(Q¢D‰ Q¢D‰%J”(Q"@þ8`Aƒ&T¸aC‡!F”hÀĉ'Nœ8qâĉ'Nœ8ÿqâĉ'Nœ8qâĉ'"d7qâĉ'Nœ8qâĉ'¨„‘ €H”(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(QbCH”(Q¢D‰%J”(Q¢D‰%J”ø%J”(Q¢D‰%(Q¢D‰%J”€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%JŒÈN¢D‰%J”(Q¢D‰%Jt` :xðà©S„‘ €H”(Q¢D‰ÿ Q¢D‰%J”(Q¢D‰%J”(Q"C(Q¢D‰%J”(Q¢D‰%J”(Ñ!H”(Q¢D‰%J”8€D‰%J”ÿ(Q¢D‰ÿH”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Dˆì$J”(Q¢D‰%J”(Q¢D‡ªƒž:uðàÁS—P€@ü P€@ÿ ðOÀ? PÀA ðOÀ?0 Q¢D‰%J”ØÀ$J”(Q¢D(Q¢D‰%J”(Q¢D‰%J”(‘!$J”(Q¢D‰%J”H"‰$’H"‰$z þ8`Aƒ&T¸aC‡!F”ØÀĉ'Nœ8qâD…&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâÄÿ‰'Nœ8Ñ »‰'Nœ8qâĉ'Nœ8À@uá (PÀ (@ €þ (@ € ø'àŸ€þ øO€@ü PÀ?ø'àŸ8PÀ,hð „ 2lèð!Ĉ8p@¢D‰%J€D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰%J”(QâCH”(Q¢D‰%J”H€D‰%J”(Q¢D‰ÿH”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Dˆì$J”(Q¢D‰%ÿJ”(Q¢D‡T'p A€ÿ @ÀÀðO€@ü @€  @ €ÿ  @À@ ðOÀ?ü P€@ ðŸÀ <ˆ0¡Â… :|1"A(Q¢D‰ Q¢D‰%J”(Q¢D‰%J”(Q"C(Q¢D‰%J”(Q¢D‰%J”(Ñ!H”(Q¢D‰%J”H€D‰%J”(Q¢D‰ÿH”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Dˆì$J”(Q¢D‰%J”(Q¢D‡$J(ÿ@¢Äƒ (Q¢D‰%JlàÀ%J”(1"H”(Q¢D‰%J”(Q¢D‰%J”È%J”(Q¢D‰%J”(Q¢D‰%>€D‰%J”(Q¢D‰H”(Q¢D‰%J”8€D‰%J”(‘DI$‘DI$‘DI$‘DI$‘DI$‘D=;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbC! ¸XQ€B/^¼xñ"E¸xñâҸxñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/^Œ€‹/^¼xñÿâE/^¼xñâE‹.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹/^¼x±!€‹/^¼xñâÅ‹/þpàÀ‹/^|€‹/^¼xñâÅ‹/^¼xñ!.^¼xñâÅ‹/^¼xñâEˆpñâÅ‹/^¼àâÅ‹/^¼hÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼x!»‹/^¼xñâÅ‹.º¨!€üû÷ : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹%€E‹-Z´hÑ¢E‹-Z´hÿÑ X´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´h1!‹-Z´hѢŃ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`Aƒ8€@ÿ H° Áƒ à? 4xaB… 6tøâCˆ1bĈ  bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bDˆˆ1bĈ#FŒñ!€ˆ#FŒ1bĈˆ1bÄÿˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#*d1bĈ#FŒ1bĈ#F\` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåAv+W®\¹r%B%¬L€!€•+WVpàÀ•+#ÿ`åÊ•+W®\IV®\¹råÊ•%°råÊ•+W®\¹råÊ•+W®\¹råÊ•+²[¹råÊ•+( `¥B ¬\¹Ò"€¬\+W®\¹råJ’X¹råÊ•+W–€•+W®\¹råÊ•+W®\¹råÊ•+W®\yÝÊ•+W®\‰ÀÊ•+W®< àÀ+WFÀÊ•+W®\¹’$V®\¹råÊ•%°råÊ•¬\¹reC+W®\i¥•VZi¥•VZ‰"€Øü'p Á‚"L¨p!ÆBŒ(q"ÅŠPÀÿþ8`Aƒ&T¸aC‡!F”8‘bE…8`Ñ¢E‹À¢E‹-Z´hÑ¢E‹-Z´h,Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´È€E‹-Z´hÑbB-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ H° Áƒ B„ à? 4xaB… 6tøbć8 Q¢D‰@¢D‰%J”(Q¢D‰%J”(Q¢Ä†(Q¢D‰%ÿJ”(Q¢D‰%J”(Ñ!H”(Q¢D‰%J”ˆ€D‰%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‡ì$J”(Q¢D‰%J”(Q¢D‡ªƒž:uðàÁS'‘!€ƒ`!(Q¢D‰%J”XÀ$J”(Q"CH”(Q¢D‰%J”(Q¢D‰%J”Ø%J”(Q¢D‰%J”(Q¢D‰%:€D‰%J”(Q¢D‰ H”(Q"‰$’H"‰$* ÿ H° Áƒ*\Ȱ¡Ã‡#JœHÿ±¢Å‹3jÜȱ£Ç ² 2dÈ!C†` :xðà©S„Ñ!€H”(Q¢D…(Q¢D‰%J”(Q¢D‰%J”(±!$J”(Q¢D‰%J”(Q¢D‰%Jt‰%J”(Q¢D‰(Q¢D‰%J”(ñ ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”ØÿD‰%J”(Q¢D‰%J”èÀ@€ê$ðŸÀ €à 0ððÀ@ÿ €@ü'p Á‚"L¨p!ÆBŒèÀ$J”(QbB(Q¢D‰%J”(Q¢D‰%J”(±!$J”(Q¢D‰%J”(Q¢D‰%Jt‰%J”(Q¢D‰(Q¢D‰%J”(ñ ‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”ØD‰%J”(Q¢D‰%J”è€D‰ÿÿHŒ€!‰%J”(Q¢D‰8p@¢D‰%&€D‰%J”(Q¢D‰%J”(Q¢D‰ @¢D‰%J”(Q¢D‰%J”(Q¢Ä† Q¢D‰%J”(Q¢B%J”(Q¢D‰% Q¢D‰%J$‘DI$‘DI$‘DI$‘DI$‘DI$‘D Äà? 4xaB… 6tøbD‰)V´ØÀE‡.6 ÀÅ‹/^¼xñ €\¼xñâA\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/BÀÅ‹/ÿ^¼xñâA/^¼xñâÅ‹\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ ²»xñâÅ‹/^¼xñbC/^¼xñâÅ‹/^üàÀ/^¼h.^¼xñâÅ‹/^¼xñâҸxñâÅ‹/^¼xñâÅ‹!àâÅ‹/^¼xÑ €‹/^¼xñâÅ‚.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñ¢‹.ºè¢‹.º¨!€üû÷ : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‹À¢E‹-Z´hÑÿ¢E‹-Z´x,Z´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ!‹-Z´hѢņ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`Á‚`РAƒ P À,X€A‚þ8`Aƒ&T¸aC‡!2pàÀˆ#FŒØ#FŒ1bĈ#FŒ1bĈ#Ft€ˆ#FŒ1bĈ#FŒ1bĈ#>@Ĉ#FŒ1bĈ ˆ1bĈÿ#FŒ1¢@#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1băì"FŒ1bĈ#FŒ1bĈ  TÀĉ'Nœ8qâĉ'Nœ8qâD‡0qâĉ'Nœ8qâ?'Nœ8qâĉ%˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâDì&Nœ8qâĉ'Nœ8qâDÕÁ¨Nà@xêþ8€À?þ€@ÿ€@ð 0ðþÿÀ@0pàÀþ8`Aƒ&T¸aC‡!.pàÀˆ#FŒÈ#FŒ1bĈ#FŒ1bĈ#Ft#FŒ1bĈ#FŒ1bĈ#Ft€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U:d·råÊ•+W"0P<€ê„§à?ðÀ@ÿ0p €þ À? ðþøÀÀø` €ø`àÀü'p Á‚"L¨p!ÿÆB\àÀ#FŒq!DŒ1bĈ#FŒ1bĈ#FŒÑ!"FŒ1bĈ#FŒ1bĈ#FŒøÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(SªtÈnåÊ•+W®D` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåCv+W®\¹r%Bª8 À0€` ÿ@ €` @` @ øOà@‚ D˜PáB† >„¸À"FŒ1¢BDŒ1bĈ#FŒ1bĈ#FŒñ!"FŒ1bĈ#FŒ1bĈ#FŒøÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª|ÈnåÊ•+W®D`¥H,ÀÀÊ•+%8pàÀÊ• °råÊ•+W®$ +W®\¹råJ’°råÊ•¬\¹råD+ÿW®\¹råÊ•+W®\‘ÝÊ•+W®\‰ÀJÀ€B+W®œàÀ+W&ÀÊ•+W®\¹’$V®\¹råÊ•%°råÊ•¬\¹råD+W®\¹råÊ•+W®\‘ÝÊ•+W®\‰ÀÊ•+W®< àÀ+W"€•+W®\¹r%I¬\¹råÊ•+K`åÊ•+U€ÿ$XÐàA„ .dØÐáCˆ%Nü€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"ņì(R¤H‘"EŠ)R¤H‘¢Aª8 À,hð ÿ„ 2lèð!Ĉ'R¬¨À,Z´hÑ ,Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z<-Z´hÑ¢E‹X´hÑ¢E‹->`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´XE‹-Z´hÑ¢E‹- 0P@x TðŸÀ ƒ þ@ @€ÿ$XÐà@ÿ<àà@ÿ H° Áƒ*\Ȱ¡Ã‡ 8pà@Ĉ#FL€ˆ#FŒ1bĈ#FŒ1bĈ#:€ˆÿ#FŒ1bĈ#FŒ1bĈ#:@Ĉ#FŒ1bĈˆ1bĈ#FŒ1"A#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bDƒì"FŒ1bĈ#FŒ1bĈ  T„QâDŠ8pà€E‹- €E‹-Z´hÑ¢E‹-Z´h!,Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´X€E‹-Z´hÑbD-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ H° Aÿ0hÐà?€ øOà@‚ 0HÀ,hð „ 2lèð!Ĉ 8p@¢D‰#€D‰%J”(Q¢D‰%J”(Q¢D‰ @¢D‰%J”(Q¢D‰%J”(Q¢Ä†(Q¢D‰%J”("‰%J”(Q¢D‰(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ ÙI”(Q¢D‰%J”(Q¢D‰ T€ †¸xñâÅ‹/þpàÀ‹/F€‹/^¼xñâÅ‹/^¼xñ!\¼xñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xÑ!€‹/^¼xñâņ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿØ]¼xñâÅ‹/^¼x±!€‹/^¼xñâÅ‹/þpàÀ‹ÿ/FÀÅ‹/^¼xñâÅ‹/^¼/^¼xñâÅ‹/^¼xñâC\¼xñâÅ‹/>pñâÅ‹/^¼ØÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ@vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å†T'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XQ!€X´h‘",Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z<‹-Z´hÑ¢E‹ÿX´hÑ¢E‹-V`Ñ¢E‹-Z´hÑ¢E‹-Zÿ´hÑ¢E‹-Z´(E‹-Z´hÑ¢E‹- 0P@x TðŸÀ `РAƒ ` €ÿ$XÐàA„ .dØÐáCˆ%8pà€D‰%6‰%J”(Q¢D‰%J”(Q¢D‰€D‰%J”(Q¢D‰%J”(Q¢D‰ @¢D‰%J”(Q¢D‰ÿH”(Q¢D‰%J”€D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%JDÈN¢D‰%J”(Q¢D‰%Jt` :xðà©SpñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^dwñâÅ‹/^¼xñâņ.^¼xñâÅ‹/^¼øÀ.^¼Ø/^¼xñâÅ‹/^¼xñ"D\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼(ÀÅ‹ÿ/^¼xñâC/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâEv/^¼xñâE]tÑE àß¿Õ Hà? 4xaB… 6tøbD‰)VTàÀ-Z|-Z´hÑ¢E‹-Z´hÑ¢E„°hÑ¢E‹-Z´hÑ¢E‹-€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ H° A,À Á0HÀ,hð „ ÿ2lèð!Ĉ8pàÀĉ'Àĉ'Nœ8qâĉ'Nœ8qâDˆ˜8qâĉ'Nœ8qâĉ'NœØþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦TÙ‘ÝÊ•+W®\‰À@uðàÁS§Àĉ'Nœ8qâĉ'Nœ8qâD‡˜8qâĉ'Nœ8±!€‰'Nœ8qâĉ˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâCv'Nœ8qâĉ'Nœ8q"€êàÁƒ§NÀĉ'Nœ8qâĉ'Nœ8qâĆ0qâĉ'šh¢‰&j ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ¸EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠÙQ¤H‘"EŠ)R¤H‘"EƒªOà@êþ(€@ÿ ð€@ À@ÿ €@ü0À?à? 4xaB… 6tøbD‰ÿ8pÿ`âĉ`âĉ'Nœ8qâĉ'Nœ8qâC˜8qâĉ'Nœ8qâĉ'NœØ'Nœ8qâĉ':0qâĉ'Nœ8qâB'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'N|Ènâĉ'Nœ8qâĉ'N0 : ü'p 0À?ÿ0€@ €@ €þ8`Aƒ&T¸aC‡!F”øÀ&Nœ8q &Nœ8qâĉ'Nœ8qâĉ'>ÀÄÿ‰'Nœ8qâĉ'Nœ8qâD‡˜8qâĉ'Nœ8Ñ!€‰'Nœ8qâĉ˜8qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâCv'Nœ8qâĉ'Nœ8q"€‰'.ÀÀĉ'Nœ8qâÄ80qâĉ`âĉ'Nœ8qâĉ'Nœ8qâCLœ8qâĉ'Nœ8qâĉ'Nl'Nœ8qâĉ':0qâĉ'Nœ8qâB'Nœ8qâĉ'Nœ8qâĉ'šh¢‰&šh¢‰&šè!€Øü'p Á‚"L¨ÿp!ÆBŒ(q"ÅŠ¸xñ"….^¼xñâÅ‹ 8pàâÅ‹ pñâÅ‹/^¼xñâÅ‹/FÀÅ‹/^¼xñâÅ‹/^¼è/^¼xñâÅ‹\¼xñâÅ‹/FpñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/ZdwñâÅ‹/^¼xñâņ.^¼xñâÅ‹/^¼øÀ.^¼˜/^¼xñâÅ‹/^¼xñ"D¸xñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼x‘"€‹/^¼xñâʼn.^¼xñâÅ‹/^¼xñâÅÿ‹/^¼xñâÅŠì.^¼xñâÅ‹/^tQCø÷ï@uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹€E‹-Z´hÑ¢E‹-Z´h!,Z´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢A-Z´hÑ¢E‹ °hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-VdgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚`Р@ ` €ÿ$XÐàA„ .dØÐáCˆ%pàÀ‰'Nüÿ€‰'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ8±!&Nœ8qâĉ'N|`âĉ'Nœ8qâĆ&Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœèÝĉ'Nœ8qâĉ'Nœ` :xðà©S€‰'Nœ8qâĉ'Nœ8qâĉ 0qâĉ'Nœ8q"D'Nœ8qâĉ'>ÿ0qâĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĆì&Nœ8qâĉ'Nœ8qâDª8 À0ü0P €` €@ øOà@‚ D˜PáB† >„Q¢@˜8qbD˜8qâĉ'Nœ8qâĉ'Nœø'Nœ8qâĉ'Nœ8qâĉÀĉ'Nœ8qâĉLœ8qâĉ'NœøÀĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ²›8qâÿĉ'Nœ8qâĉLœ8Q!†&Nœ8qâĉ' pàÀ‰'FÀĉ'Nœ8qâĉ'Nœ8qâDˆ˜8qâĉ'Nœ8qâĉ'NœØ'Nœ8qâĉ'F0qâĉ'Nœ8qâC'Nœ8qâĉ'Nœ8qâĉ'Nœh¢‰&šh¢‰&j vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å†.^´@!€‹/^¼xñbC¸xñbA\¼xñâÅ‹/^¼xñâÅ‹pñâÅ‹/^¼xñâÅ‹/:ÀÅ‹/ÿ^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ"Ev/^¼xñâÅ‹/^làâÅ‹/^¼xñâÅ‹ÿ8pàâÅ‹pñâÅ‹/^¼xñâÅ‹/B€‹/^¼xñâÅ‹/^¼x±!\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/RdwñâÅ‹/^¼xñâņø÷ï@uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹€E‹-Z´hÑ¢E‹-Z´hÿ!,Z´hÑ¢E‹-Z´hÑ¢E‹`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbDv-Z´hÑ¢E‹-Z´(À@uá (PÀ,H þ8`Aƒ !B"€P „"Dˆ!B„"Dˆ!Â8€!B„"Dˆðþ8`Aƒ&T¸aC‡!F”8‘bE‹1ft5jÔ¨Q£F5jÄ5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Fÿ5jÔ¨Q£F5j,ÈN£F5jÔ¨Q£Fƒªƒž:uðàÁS€@h,@ ‚$x€!5jÄàÀ5V€F5jÔ¨Q£F5j5jÔ¨Q£F5j¼5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔXF5jÔ¨Q£F T"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„ØDˆ!B„"Dˆ!B„¢BÕÁƒO:xðà©3` @þðï€ÿþýðïß@ÿüû÷À?ÿþýðo Àÿüû÷À¿þýû÷À¿þû7À?ÿþýðo Àþýûàß¿þÿ8 @ÿ H° Áƒ*\Ȱ¡Ã‡8p"DˆDˆ!B„"Dˆ!B„"Dˆ!Bˆ!B„"Dˆ!B„"Dˆ!B„ˆ!B„"Dˆ!B„øDˆ!B„"Dˆ!>"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„ØDˆ!B„"Dˆ!B„¢BÕÁƒO:xðà©;@ €‚ @ €‚ø` €@ ‚(` €ø  ‚`ÿ"Dˆ!B„À B„ñ B„"Dˆ!B„"DˆADA4@ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̸5jÔ¨Q£FÿhÔ¨Q£F3ШQ£F5jÔ¨Q£F5jÔ¨Q£Æ‚ì4jÔ¨Q£F5j4` :€ð¨à?ðÀ@ÿ0ðø` €ðÀ@ÿð€@ÿ` €ø` €ø@ þ8pà@ÿ H° Áƒ*\Ȱ¡Ãÿ‡8p"Dˆ"Dˆ!B„"Dˆ!B„"Dˆ!Dˆ!B„"Dˆ!B„"Dˆ!>ˆ!B„"Dˆ!B„øDˆ!B„"Dˆ!>"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„ØDˆ!B„"Dˆ!B„¢Bª8 À0ü0ð€ø@ 0À?ÿ€ @ € €@ÿ ðŸÀ <ˆ0¡Â… :|ˆÀ B„Ñ @„"Dˆ!B„"Dˆ!B„"D"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ€"Dˆ!B„"ć B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ²ƒ"Dˆ!B„"Dˆ!BT"Dˆ@„±!† B„"Dˆ8p"Dˆ "Dˆ!B„"Dˆ!B„"Dˆ!Dˆ!B„ÿ"Dˆ!B„"Dˆ!BDˆ!B„"Dˆ!B€ÿ$XÐàA„ .dØÐáCˆ%NŒ€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"Å‚ì(R¤H‘"EŠ)R¤H‘¢A)*@‘"E H‘"EŠ8pàEŠ€"EŠ)R¤H‘"EŠ)R¤Hq"(R¤H‘"EŠ)R¤H‘"EŠEŠ)R¤H‘"EŠ P¤H‘"EŠ)R¤xEŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠÙQ¤H‘"EŠÿ)R¤H‘"Eƒ(R¤H‘"EŠ)R¤HÑ!€P¤H1!P¤H‘"EŠ)R¤H‘"EŠ)JŠ)R¤H‘"EŠ(¢ˆ"Š(¢ˆ¢‡ à? 4xaB… 6tøbD‰)þP±bÅŠ+V¬XQ"€Š+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì*V¬X±bÅŠ+V¬XÑ!€Õ Hà? 4xaB… 6tøbD‰)VTàÀ-Z‹-Z´hÑ¢E‹-Z´hÑbBX´hÑ¢E‹-Z´hÑ¢E‹ ÿÀ¢E‹-Z´hÑbC-Z´hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-NdgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚(à? 4x!BH8B ÿH˜0a„ &L˜0a„ þpàÀ„ &L˜0¡Aü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌè5jÔ¨Q£F5jÔx4jÔ¨Q£FШQ£F5jü@£F5jÔ¨Q£F5jÔ¨Q£F ²Ó¨Q£ÿF5jffl €êàÁƒ§N|àÀ!B„H!B„"Dˆ!B„"Dˆ!B„q ÿ B„"Dˆ!B„"Dˆ!B„" B„"Dˆ!B„â@!B„"Dˆ!B„ñˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"D†ì B„"Dˆ!B„"Dˆ¨@uÂSðŸÀ €@þøÀ@ @ €@ÿÀ@0pà? `àÀü'p Á‚"L¨p!Æ>pàÀˆ!B$ˆ!B„"Dˆ!B„ÿ"Dˆ!B„8!B„"Dˆ!B„"Dˆ!B„!B„"Dˆ!B„q ˆ!B„"Dˆ!B„øDˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Cv!B„"Dˆ!B„"Dˆ  T :á©øO @ü0À?(ðß¿þýûà€ÿüðïß?ÿüû÷À?ÿþøàß?ÿüû÷À?ÿ ` €ø` €8À,hð „ 2lèðáÿC€"Ä"Dˆ!B„"Dˆ!B„"Dˆ"Dˆ!B„"Dˆ!B„"DˆDˆ!B„"Dˆ!B"Dˆ!B„"Dˆ!þ"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„ÈDˆ!B„"Dˆ!B„¢BÕÁƒO:xðà©3` @þðï€ÿþýðïß@ÿþø÷ï€ÿþøàß¿þø÷ï€ÿüû÷o Àþ8À@ÿ ð ÿÿøOà@‚ü'p Á‚"L¨p!Æ>pàÀˆ!Bˆ!B„"Dˆ!B„"Dˆ!B„8 B„"Dˆ!B„"Dˆ!B„ñ! B„"Dˆ!B„"A!B„"Dˆ!B„ñˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"D†ì B„"Dˆ!B„"Dˆ¨ÿpàÀˆ!Bˆ!B„"Dˆ!B„"Dˆ!B„8!B„"Dˆ!B„"Dˆ!B„ø B„"Dˆ!B„"A!B„"Dˆ!B„ñˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"D†ì B„"Dˆ!B„"DˆPÀþ8€à€ÿ À@À@0€@` À@@ €þ8`ÿAƒ&T¸aC‡8pàDˆ! ˆ!B„"Dˆ!B„"Dˆ!B„( B„"Dˆ!B„"Dˆ!B„ñ!þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹R ;–,Y²dÉR –°L€!–,YpàÀ–À’%K–,Y²ü–,Y²dÉ’%G°dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%KŒìX²dÉ’%KXÀR!…X²dIÀXZK–,ÿY²dÉò#X²dÉ’%K–€%K–,Y²dÉ’%K–,Y²dÉ’%K–,YbdÇ’%K–,Y À’%K–,E8pàËŠÀ’%K–,Y²ô,Y²dÉ’%Ë`É’%K–,Y²dÉ’%K–,Yb‰%–Xb‰¥ŒbðŸÀ <ˆ0¡Â… :|1¢Ä‰+Zl` @uøOà@‚ D˜PáB† >„QâDŠ8pà€E‹`Ñ¢E‹-Z´hÑ¢E‹-ZL‹-Z´hÑ¢E‹-Z´hÑ¢AX´hÑ¢E‹-Z´ÿhÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hq ;‹-Z´hÑ¢E‹-Z` :€ð¨à? $€@ÿ H° Áƒ@„$ü a„ &L˜0a„ &L8À&L˜0a„ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£ChÔ¨Q£F5jÔ¨QãEШQ£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Æ†ì4jÔ¨Q£F5j4` :xðà©Sÿ„QâDŠ-^ĘÑ!4jÔ¨Q£F5jÔ¨ñ"4jÿÔ¨Q£FШQ£F5j,@£F5jÔ¨Q£F5jÔ¨Q£F²Ó¨Q£F5jffl €êàÁƒ§NpàÀ‡>ÀÇ>|øðáÇ>|øðáÇ>|˜>|øðáÇ>|øðáÇ>|øðáC‚ððáÇ>|øðáÇððáÇ>|øðáÇðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü˜‘H A‚ ¤BÕÁ¨Nà@xêþ8€À?ÿ€€àþ00@ ÿ`àÀü'p Á‚"L¨p!Æ8pàÀÇàáÇ>|øðáÇ>|øðáÇ>L€‡>|øðáÇ>|øðáÇ>|ø° >|øðáÇ>|øðáÃ>|øðáÇ>|øðáÂþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cG3² $H A‚T` :xÕ OÀà€þ€@ÿþýðïß?ÿüûà€ÿþøàß¿þ ü÷À?ÿþÿøàß¿þ øï€ÿþøO @ÿ ðÀ@ÿ À?à? 4xaB… 6tøÀ>|è>|øðáÇ>|øðáÇ>|øðáÄxøðáÇ>|øðáÇ>|øðáÇ àáÇ>|øðáÇ><àáÇ>|øðáÇ>,à? 4xaB… 6tøbD‰)V´xcF9vôø1#; A‚ $H…ªƒž:uðàÁSgÀ@€ üàß?ÿþýûàÿß¿ÿýðïß?ÿþýðÀ¿ÿüðïß?ÿþø÷ïß@ÿüû÷ï€ÿ ü÷o €þýûàß@ÿüû÷À¿ÿü'p Aþ8`Aƒ&T¸aC‡8pàáÇððáÇ>|øðáÇ>|øðáÇ&€‡>|øðáÇ>|øðáÇ>|ø <|øðáÇ>|øðáÇ<|øðáÇ>|øðáÇü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?fd$Hÿ A‚©À@uðàÁS§|øðáÇ>|øðáÇ>L€‡>|øðáÇ>|øðáÇ>|ø° þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹R!;–,Y²dÉR €Õ Hà?€þøÀ@ @ €@` øÀ@   @ÿ ` €ÿ$XÐàA„ .dØÐáCxøðaC<|øðáÇ>|øðáÇ>|øðáÇ ððáÇ>|øðáÇ>|øðáÇ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®TÈŽ%K–,Y²€åA,1`€%K8ÀÒ!X²dÉ’%K–€%K–,Y²d©,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ2$;–,Y²dÉR –°Ì@!–ÿ,C8pàˆÀ’%K–,Y²ü–,Y²dÉ’åF°dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%ËìX²dÉ’%KX²dÉ’¥H`Ù,Y²dÉ’%K`É’%K–,Yj–,Y²dÉ’%K–,Y²dÉ’%K–Xb‰%–BˆÀ,hð „ 2lèð!Ĉ'R¬h±!€Õ Hà? 4xaB… 6tøbD‰)VTàÀ-6€E‹-Z´hÑ¢E‹-Z´h1!X´hÑ¢E‹-Z´hÑ¢E‹ÿ À¢E‹-Z´hÑbE-Z´hÑ¢E‹'°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-:dgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚(à? 4xáA$L˜0á? ÿH˜0a„ &L˜0a„ÿ8p a„ &ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3:€F5jÔ¨Q£F5^€F5jÔ¨QãB5jÔ¨Q£F hÔ¨Q£F5jÔ¨Q£F5jÔ¨Q#;5jÔÿ¨Q£F ¨|øðáÇ>|øðáÇ>|øðáÄððáÿÇ>|øðáÇ>|øðáÇÀÇ>|øðáÇ>|¨ÀÇ>|øðáÇ>|xÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#Fv A‚ $H  T :á©øOà@@ ÿ ü`  @ € ` 0€À@` €@à? 4xaB… 6tÈÀ>|¨>|øðáÇÿ>|øðáÇ>|øðáÄxøðáÇ>|øðáÇ>|øðáÇ àáÇ>|øðáÇ>TàáÇ>|øðáÇ><à? 4xaB… 6tøbD‰)V´xcF9vôø#; A‚ $H…ªƒPÀðÔü'P þàøïß?ÿþýðÀ¿þø÷ï€þýûàŸÀÿüðï€þýûà€þøàß?ÿþýðÀ¿þø÷Àø` €øÿ`àÀü'p Á‚"L¨p!Æ8pàÀÇàáÇ>|øðáÇ>|øðáÇ>T€‡>|øðáÇ>|øðáÇ>|ø <|øðáÇ>|øðáÇ <|øðáÇ>|øðáÇü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?bd$H A‚©À@uðàÁS§|øðáÇ>|øðáÇ*ÀÇ>|øðáÇ>|øðáÇ>|H>|øðáÇ>|øðáB>|øðáÇ>|øðáAÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇÙ $H A*0P|øðáÇ>|øðáÇ*ÀÇ>|øðáÇ>|øðáÇ>|H>|øðáÇ>|øðáC…>|øðáÇ>|øðáÄþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cG/² $H A‚T` @uøOà@` €þ0 À@ 0À@ €ÿ@0À,hð „ 2lè!€<|ø0!>|øðáÇ>|øðáÇ>|øðáC…xøðáÇ>|øðáÇ>|øðáÇ àáÇ>|øðáÇ>\àáÇ>|øðáÇ>Là? 4xaB… 6tøbD‰)V´xcF9vôøñ"; A‚ $H…@Nò#€ƒ dEY@‚ $H A‚œ A‚ $H A:H A‚ÙH ÿA‚¹H A‚ $H A‚ äAv A‚ $H €œäFH@! AZpàÀ$H A‚ $E€ $H A‚ù A‚ dG A‚ äF A‚ $H A‚ $HÙ $H A*$H A‚ôàÀ +À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ Q£F5jÔ¨Q£F@£F5jÔ¨±!5jÔ¨Q£Æ…4jÔ¨Q£F5jÔÿ¨Q£F5jÔ˜‘F5jÔ¨Q£F ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢B°h1!,Z´hÑ¢E‹-Z´hÑ¢E‹ À¢E‹-Z´hÑ¢E‹-Z´H-Z´hÑ¢E‹- `Ñ¢E‹-Z´h±"‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbCv-Z´hÑ¢E‹-Z´(À@uá (PÀ,X ,Àà? 0X€@ øOà@‚ D˜PáB† >„ÈÀ"FŒøÿ"FŒ1bĈ#FŒ1bĈ#FŒ#FŒ1bĈ#FŒ1bĈ#Fd€ˆ#FŒ1bĈ#FŒø@Ĉ#FŒ1bĈ#>1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#&d1bĈ#FŒ1bĈ#F\` :xðà©S„¸À"FŒ€ˆ#FŒ1bĈ#FŒ1bĈ#F@Ĉ#FŒ1bĈ#FŒ1bĈÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*WFdÇ’%K–,Y 0P„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ‰ìX²dÉ’%Kªƒž:uðàÁSw€@ À@ÿ À?üð@A ðÀ@ÿðÿC,Y²|àÀ, K–,Y²dÉò#°dÉ’%K–,5€%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y¢dÇ’%K–,Y 0P@x TðŸ@ø` €@ €þ@ €øà€þ(À@ÿ ðÀ@ÿü0pàÀþ8`Aƒ&T¸aC‡!.pàÀˆ! bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bÄ…ðŸÀ <ˆ0¡Âÿ… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•Ù±dÉ’%K– ¨Nà@‚ÿ À@  ÿÀ?ðøïß@ÿø÷ïßÀÿüðï€ÿüûàß¿þ8`Aƒ&T¸aC‡!.pàÀˆ! bĈ#FŒ1bĈ#FŒ1bĈ1bĈ#FŒ1bĈ#FŒ1bÄ…øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=ÿ~RäH’%MžD™RåʉìX²dÉ’%KX&pC,Y²|àÀ, K–,Y²dÉò#°dÉ’%K–,5€%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y¦dÇ’%K–,Y À2!”`É’%D`Y,Y²dÉ’%K`É’%K–,Yj–,Y²dIK–,Y²ü€%K–,Y²dÉ’%K–"Ù±dÉ’%K–°dÉ’%K‘8À² X²dÉ’%K– À’%K–,Y²Ô–,Y²dYK–,Y²üÿ ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇÙ $H A*0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÀ¢E‚`Ñ¢E‹-Z´hÑ¢E‹-ZT‹-Z´hÑ¢E‹-Z´hÑ"AX´hÑ¢E‹-Z´H€E‹-Z´hÑ¢E‹X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`Á‚0hÐ`A €Aƒ0HÀÿ,hð „ 2lèð!D†81¢CDŒ1bĈ#FŒ1bĈ#FŒ1"DŒ1bĈ#FŒ1bĈ#FŒQ!DŒ1bĈ#FŒ1bÄ"FŒ1bĈ#FŒ1¢@#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1âAv#FŒ1bĈ#FŒ1bÄ…ªƒž:uðàÁS€@D,@!€@€!€ˆ#FŒ1bÄ…81¢CDŒ1bĈ#FŒ1bĈ#FŒ1""FŒÿ1bĈ#FŒ1bĈ#FŒ¸#FŒ1bDEQDED@þ8`Aƒ&T¸aC‡!F”8‘bC+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ ÙU¬X±bÅŠ+V¬X±¢CÕÁƒO:xð੃@ €Š(@B0P±bÅŠ+VpàÀŠ @ÅŠ+V¬X±bÅŠ+V¬X±"AT¬X±bÅŠ+V¬X±bÅŠ' bÅŠ+V¬X±bŇ*V¬X±bÅŠ+Vl bÅŠ+V¬X±bÅŠ+V¬X±bÿÅŠ+V¬X±!»Š+V¬X±bÅŠ+Vt` :xÕ OÀ0ø`àÀ€@ ÿ ü`   8p €ÿ$XÐàA„ .dØÐáCˆ 8p bĆˆ1bĈ#FŒ1bĈ#FŒ1bDˆ1bĈ#FŒ1bĈ#FŒ1¢Bˆ1bĈ#FŒ1bĈDŒ1bĈ#FŒ1bD"FŒ1bĈ#FŒ1bĈ#FŒ1bĈÿ#FŒ1băì"FŒ1bĈ#FŒ1bĈ  T :á©øO @ü0À?0pà?ÿ À?üðÀ@ÿ0ð€ü0p €8À,hð „ 2lèð!Ä…81bCDŒ1bĈ#FŒ1bĈ#FŒ1""FŒ1bĈ#FŒ1bĈ#FŒ¸#FŒ1bĈ#FŒ± €ˆ#FŒ1bĈ#FŒ(@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÿx]Ĉ#FŒ1bĈ#FŒq!€êàÁƒ§N„À"FL€ˆ#FŒ1bĈ#FŒ1bĈ#F€ˆ#FŒ1bĈ#FŒ1bĈ#*À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*WjdÇ’%K–,Y ÿ0P<€ê„§à?ðÀ@ÿ ÀÀÿü0À?ü0p €þ À?ü0À?à? 4xaB… 6tøbDˆ1!"FŒ1bĈ#FŒ1bĈ#FŒ#FŒ1bĈ#FŒ1bĈ#F\€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®ÔÈŽ%K–,Y²` :xðà©S„‘!€H”8%J”(Q¢D‰%J”(Q¢D‰%F€D‰%J”(Q¢D‰%J”(Q¢D‰  Q¢D‰%J”(Q¢D‰H”(Q¢D‰%J”(QbC%J”(Q¢D‰%ÿJ”(Q¢D‰%J”(Q¢D‰%J”¨D‰%J”(Q¢D‰%J”èÀ@uðª8ž:€ÿ  À?ü00À? 0ð€þà8À,hð „ 2lèð!Ĉ 8p@¢Ä(Q¢D‰%J”(Q¢D‰%J”("H”(Q¢D‰%J”(Q¢D‰%J”˜%J”(Q¢D‰%J”ø€D‰%J”(Q¢D‰%6 Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰ ÙI”(ÿQ¢D‰%J”(Q¢D‰ T„QâDŠ-6pñ¢@ PàâÅ‹/^¼XÀ.:ÀÅ‹/^¼xñâÅ‹/^¼(.^¼xñâÅ‹/^¼xñâÅ…¸xñâÅ‹/^¼xQ €‹/^¼xñâÅ‹ÿ¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹²»xñâÅ‹/^¼xñbC/^¼xñâÅ‹/^üàÀÀÅ‹/^¼xñâÅ‹/ÿ^¼(/^¼xñâÅ‹/^¼xñâB¸xñâÅ‹/^¼xQ €‹/^¼xñâÅ‹ÿ¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹dðŸÀ <ˆ0¡Â… :|1¢Ä‰+Zl` @uøOà@‚ D˜PáB† >„QâDŠ8pà€E‡°hÑ¢E‹-Z´hÑ¢E‹-.€E‹-Z´hÑ¢E‹-Z´hq ,Z´hÑ¢E‹-ZlÀ¢E‹-Z´hѢŅ,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÿÑ¢E‹-Z´hÑ¢@Õ„'p @uÿ H°`A4h ÿýðŸÀ @ €ƒü'p Á‚"L¨p!ÆBŒàÀ# @Ĉ#FŒ1bĈ#FŒ1bĈ#þ@Ĉ#FŒ1bĈ#FŒ1bĈà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+C²cÉ’%K–,¨„QâDŠ-^ĘQãFŽ=~„È$H A‚ R!€êàÁƒ§N„QâDŠ-6pñâEˆ¸xñâÅ‹'8pàÀÅ‚pñâÅ‹/^¼xñâÅ‹/NÀÅ‹/^¼xñâÅ‹/^¼¨/^¼xñâÅ‹/&pñâÅ‹/^¼xñbA/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbAv/^¼xñâÅ‹/^làâÅ‹/^¼xñâÅ‹ÿ8pàbA\¼xñâÅ‹/^¼xñâÅ‹àâÅ‹/^¼xñâÅ‹/^T€‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñÿâÅ‹/^¼xñâÅ‹+²»xñâÅ‹/^¼è¢‹À¿ÿª8 À,hð „ 2lèð!Ĉ'R¬¨À,€E‹-Z´hÑ¢E‹-Z´hq!,Z´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹'²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`A‚øï€ÿ$XÐà@ÿpðàAðŸÀ <ˆ0¡Â… :|ÿq!€DT#FŒ1bĈ#FŒ1bĈ#FŒø#FŒ1bĈ#FŒ1bĈ#FL€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®TÉŽ%K–,Y²` :xðà©S„QâDŠ8pà€E°hÑ¢E‹-Z´hÑ¢E‹-.€E‹-Z´hÑ¢E‹-Z´hQ X´hÑ¢E‹-Z´X€E‹-ÿZ´hÑ¢E‹X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²³hÑ¢E‹-Z´hÑ¢EªOà@êþ8`A‚øï€ÿ$Xðƒü'p Á‚"L¨p!ÆBŒ(ñ!€L$'Nœ8qâĉ'Nœ8qâĉ%`âĉ'Nœ8qâĉ'Nœ8qbBLœ8qâĉ'Nœ8q¢C'Nœ8qâĉ'Nœ¸Àĉ'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉÙMœ8qâĉ'Nœ8qâĉªƒÿž:uðàÁSAÿ``âĉ'Nœ8q¢C˜H'Nœ8qâĉ'Nœ8qâĉ%Àĉ'Nœ8qâĉ'Nœ8qâÄ„˜8qâĉ'Nœ8qâD‡&Nœ8qâĉ'Nœ8q!€‰'N4ÑDM4ÑDM4ÑDM4ÑDM4ÑDM4ÑDÄà? 4xaB… 6tøbD‰)V´ØÀ@uðàÁS§d7qâĉ'Nœ8qâĉ'¨0qâĉ'Nœ8ÿqâĉ Lœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'NœèÝĉ'Nœ8qâĉ'Nœ`âĈ˜8qâĉ'NœèÀ&þ€‰'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ81!þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eAv-[¶lÙ2%€– (вeË–8p€"Z¶lÙ²eË–вeË–-[¶Œ€–-[¶lÙ²eË–-[¶lÙ²eËÿ–-[¶lÙ² »–-[¶l™@Ë–-[¶ìàÀвeË–-[¶Ô-[¶lÙ²eKˆÐ²eË–-[¶lÙ²eË–-[¶lÙ²eË–-[dײeË–-SPÀþ8`Aƒ&T¸aC‡!F”8‘bE…80,Z´hÑ¢E‹-Z´hÑ¢E‹ `Ñ¢E‹-Z´hÑ¢E‹-Z‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hE‹-Z´hÑ¢E‹- 0P@xÿ TðŸÀ @ Àÿü'p Á‚ÿ`РAƒ$à? 4xaB… 6tøbÄ8 ñ$J”(Q¢D‰%J”(Q¢D‰%J”‰%J”(Q¢D‰%J”(Q¢D‰à? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+YdײeË–-S¨„Q €H€D‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%J”(ÿQ¢Äƒ(Q¢D‰%J”(Q¢D‰ H”(Q¢D‰%J”(Q¢Ä„$J”(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(q ;‰%J”(Q¢D‰%J”(Ñ!€êàÁƒ§N„QâDаhÑ¢E‹-ÿZ´hÑâ?-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Åì,Z´hÑ¢E‹-Z´hQ €êÂ8P :€ÿ  À?ü0ð€ÿü €@ÿ ðÀ@0À?ðÀ@ÿ 8p €ÿ$XÐàA„ .dØÐáCˆ8pà@DH”(Q¢D‰%J”(Q¢D‰%J”(%J”(Q¢D‰%J”(Q¢D‰%‰%J”(Q¢D‰%J”È€D‰%J”(Q¢D‰%JL@¢D‰%J”(Q¢D‰%J”(ÿQ¢D‰%J”(Q¢D‰²“(Q¢D‰%J”(Q¢D‰PÀþ8€` €ÿü €@0ÿÿ À?@ à? 4xaB… 6tøbD8%J”(Q¢D‰%J”(Q¢D‰%F‰%J”(Q¢D‰%J”(Q¢D‰@¢D‰%J”(Q¢D‰%6 Q¢D‰%J”(Q¢D‰(Q¢D‰%J”(Q¢D‰%J”(Q¢D‰%J”(Q¢Äÿì$J”(Q¢D‰%J”(Q¢D‡$J”(ñ €‚(Q¢D‰%J\àÀ@¢D‰%J”(Q¢D‰%J”(Q¢Äˆ(Q¢D‰%J”(Q¢D‰%J”(!$J”(Q¢D‰%J”(QbC%J”(Q¢D‰%J”(1!‰%J”(Q"‰$’H"‰$’H"‰$’H"‰$’H"‰$’H"‰ˆÀ,hð „ 2lèð!Ĉ'R¬h±!€‹/*`€B/^¼xñ¢D€€‹/^¼xñâÅ‹/^¼x‘".^¼xñâÅÿ‹/^¼xñâÅ„pñâÅ‹/^¼xñ"D/^¼xñâÅ‹/>pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/²»xñâÅ‹/^¼xñbC/^¼xñâÅ‹/^üàÀpñâÅ‹/^¼xñâÅ‹/RÀÅ‹/^¼xñâÅ‹/^¼˜/^¼xñâÅ‹/FpñâÅ‹/^¼xñâC/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ"»‹/^¼xñâE]tQCø÷ï@uøOà@‚ D˜PáB† >„QâDŠ8pàÀCÿ°hÑ¢E‹-Z´hÑ¢E‹-.‹-Z´hÑ¢E‹-Z´hÑâ?X´hÑ¢E‹-Z´h± ‹-Z´hÑ¢E‹-`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-ZdgÑ¢E‹-Z´hÑ¢E‹ TžÀÕü'p Á‚ìØ±+H]Á‚Ù,Èà? 4xaB… 6tøbD‰8pà!&Nœ8qâĉ'Nœ8qâĉ'NÀĉ'Nœ8qâĉ'Nœ8qâD„0qâĉ'Nœ8qâĉLœ8qâĉ'ÿNœ8qbD'Nœ8qâĉ'Nœ8qâĉ'Nœ8qâĉ'2d7qâĉ'Nœ8qâĉ'¨„QâChÿ€‰'Nœ8qâĉ'Nœ8qâĉ0qâĉ'Nœ8qâĉ'Nœ8!þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eCv-[¶lÙ2%€Õ Hà?Ù dÇŽÝ@vìØ üÇî;ìþ±ÈN ;vìØýc'@vÙ dðŸÀ <ˆ0¡Â… :|1¢Ä‡8À&Nœ8qâĉ'Nœ8qâĉ'NÀĉ'Nœ8qâĉ'Nœ8qâD„øOà@‚ D˜PáB† ÿ>„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ– ÙµlÙ²eË”Zd÷Cv-[¶liÀ eË–-[¶l¹Z¶lÙ²eË– eË–-[¶lÙ²eË–-[¶lÙ²eË–-[¶lÈ®eË–-[¦Ðr ;vìØ d§]Ë–-[pàÀ†hÙ²eË–-[n@Ë–-[¶lÙ"Z¶lÙ²eË–-[¶lÙ²eË–-[¶lÙ²eK‡ìZ¶lÙ²eJ-[¶lÙ²#€,€–-[¶lÙ²åF´lÙ²eË–-!ÿ eË–-[¶lÙ²eË–-[¶l©¥–Zj©¥–Zr vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å†.^¼xñâÅ‹/^¼øÀàâÅ‹/^¼xñâÅ‹/^¤/^¼xñâÅ‹/^¼xñbB\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ!»‹/^¼xñâÅ‹/6@à@‚ D˜PáB† >„QâDŠ- Q£F5jÔ¨ÿQ£F5jÔ¨Q£F…ì4jÔ¨Q£F5jÔ¨Q£F5jÔ¨ñ!4jÔ¨Q£F5jÔ¨Q#AhÔ¨Q£F5jÔ¨QãDhÔ¨Q£F5jŒ@£F5jÔ¨QãC5jÔ¨Q£F5jÔ¨Q£F5jTÈN£F5jÔ¨Q£F5jÔ¨Q£F€F5jÔ¨Q£F5j$5jÔ¨Q£F5jœ5jÔ¨Q£F"À,hð „ 2lèð!Ĉ'R¬(€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-ÿZ´H‘E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢AX´hÑ¢E‹-Z´hÑ¢E‹€E‹-Z´hÑ¢E‹-Z´h,Z´hÑ¢E‹-Z´˜€E‹-Z´hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹)²³hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z4‹-Z´hÑ¢E‹-Z´hÑ"CX´hÑ¢E‹-Z´hÑ¢E‹ÿÀ¢E‹-Z´hÑ¢E‹ X´hÑ¢E‹-Z´hñ @þ8`Aƒ&T¸ÿaC‡!F”8‘bE‹1fÔ¸‘cG² $H A‚ $H A‚¬ A‚ $H AZH A‚ $H $H A‚ä$H A‚™H A‚ $H A‚ #; A‚ $H A‚ $ÈŠ $H A‚ Ò"€ $H A‚©@‚ $H€ $H 3 $H A‚ $H Abd$H A‚ $H A‚Y A‚ $H AZHÿ A‚ $H $H A©#€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠX´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-‹-Z´hÑ¢E‹-Z´hÑ"CX´hÑ¢E‹-Z´hÑ¢E‹ÿÀ¢E‹-Z´hÑ¢E‹ X´hÑ¢E‹-Z´hñ ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´h‘";‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‚°hÑ¢E‹-Z´hÑ¢ÿE‹-2‹-Z´hÑ¢E‹-Z´hÑ"X´hÑ¢E‹-Z´hQ!‹-Z´hÑ¢E‹-&€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãǃì@‚ $H A‚ $H )$H A‚ $H‹ $H A‚ r!@‚ $H€ $H 7 $H A‚ $H A^d$H A‚ $H A‚9@‚ $H A‚´ A‚ $H $H A‚ÿÙH A‚ r# A‚ $H A‚ äEv A‚ $H A‚ $H$H A‚ äE€ $H A‚©@‚ $H:À,hð „ 2lèð!Ĉ'R¬H€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´8‘E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâ@X´hÑ¢E‹-Z´hÑ¢E‹€E‹-Z´hÑ¢E‹-Z´h-Z´hÑ¢E‹-ZdÀ¢E‹-Z´hÑ¢E‹ÿ X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹- ‹-Z´hÑ¢E‹-Z´hÑ"CX´hÑ¢E‹-Z´hÑ¢E‹ÿÀ¢E‹-Z´hÑ¢E‹ X´hÑ¢E‹-Z´h1!@þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cG² $H A‚ $H A‚” A‚ $H /$H A‚ $H…$H A‚ $H A‚ $H A‚ÿ $H A‚”È$H A‚ $H A‚ R"@‚ $H A‚´ A‚ $H A*H A‚ $H A‚ $H A‚ $H A‚ r"; A‚ $H A‚ $Ȉ$H A‚ ¤E€ $H A‚¹ A‚ $H A $@ $@ $@ $@ $@i"€Øü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ü€!C† 2dÈ!ÿ dÈ!C† 2dH2dÈ!C† 2dÈ!C† 2dÈ!C† 2dÈ!+² 2dÈ!C† 2dÈ!C†ü€!C† 2dÈ!@È!C† 2dÈ2dÈ!C† 2dÈ!C† 2dÈ!C† 2dÈ!-² 2dÈ!C† 2dÈ!C†ü€!C† 2dÈ! dÈ!C† 2dÈ2dÈ!C† 2dÈ!C† 2dÈ!C† 2dÈ!-Äà? 4xaB… 6tøbDÿ‰)V´xcF9vôø$€ $H A‚i A‚ $H A* A‚ äG A‚ $ÈŽ@‚ $H A‚ $HÙ $H A‚ $H ABH A‚ $H$H A‚ ¤B€ $H A $H Av$H A‚ $H A‚´È$H A‚ $H A‚ "@‚ $H A‚´ A‚ $H A*H A‚ $ Aÿ‚ dG A‚ $@ $@ $,ˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñãG $H A‚ Ò"@‚ $H A‚T A‚ $H@‚ $H€ $H A‚ $H -² $H A‚ $H A‚| A‚ $H /$H A‚ $H… $H A‚ü$H A‚ÙH A‚ $H A‚ Ò"; A‚ $H A‚ $Èÿ‡ $H A‚ Ò"€ $H A‚© A‚ $Hÿ€ $H ; $H H H ’E±øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~ô A‚ $H AZH A‚ $H $H A‚ ò A‚ dG A‚ $H A‚ $H‹ì@‚ $H A‚ $H $H A‚ $È‹ $H A‚ R!@‚ $ÿH ÿ $H A~$H A‚ $H A‚¬È$H A‚ $H A‚ Ò!@‚ $H A‚´ A‚ $H A*H A‚ ä? A‚ $È@‚ $@ $@ $@©"€Øü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?v A‚ $H -$H A‚ $H…$H A‚¼€Àÿþýûà? 4xaB… 6tøbD‰)V´(ÿA€øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=jd÷ñãÇ?~üøñãÇ?~üØ?~üøñãÇ?~€?~üøñãÇ)àãÇ?~üøñ‚Hà? 4xaB… 6tøbD‰)Vt€Àÿýû÷À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèq#»?~üøñãÇ?~üøñãÇŽøøñãÇ?~üøñ£@|üøñãÇ?~üH?~üøñãÇÿ4@ @€ÿ$XÐàA„ .dØÐáCˆ%N¤X‘ @ü'p Áþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGÙ}üøñãÇ?~üøñãÇ?r€?~üøñãÇ?þ€?~üøñãÇ'ÀÇ?~üøñ£@|üøñãÇ)€àãÇ?~üøñãÇ?~üÈ‘ÝÇ?~üøñãÇ?~üøñ#G|üøñãÇ?~üøQ >~üøñãÇ?~¤€?~üøñãG‚ÿðñãÇ?~´@C?~üøñãÇ?~üøñãÇŽì>~üøñãÇ?~üøñãÇ9àãÇ?~üøñãÇðñãÇ?úè£>¢ þ8`Aƒ&T¸aC‡!F”8‘bE‹°hÑ¢E‹-Z´hÑâ? X´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ ÙY´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹#€E‹-Z´hÑ¢E‹-Z´h‘!X´hÑ¢E‹-Z´hÑ¢E‹À¢E‹-Z´hÑ¢E‹ $`ÿÑ¢E‹-Z´hѢŰhÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹²³hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-F€E‹-Z´hÑ¢E‹-Z´h±!,Z´hÑ¢E‹-Z´hÑ¢E‹°hÑ¢E‹-²È"‹,r ÿ øÀ,hð „ 2lèð!Ĉ'R¬ÀA-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbCv-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hѢň°hÑ¢E‹-Z´hÑ¢E‹-6€E‹-Z´hÑÿ¢E‹-Z´h-Z´hÑ¢E‹-Z|  ‹-Z´hÑ¢E‹-P€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´èE‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´h"X´hÑ¢E‹-Z´hÑ¢E‹€E‹-Z´hÑ¢E‹-Z´X,Z´hÑ¢E‹-Z´øÀ@,Z´hÑ¢EYd‘E%ÿþýðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü(H A‚ $H A‚ ¤B€ $Hÿ A‚y A‚ $H A*H A‚ ä@ÿ€ $H ?ø$H A‚ $H A‚9‘ÝE€$XÐàA„ .dØÐáCˆ%N¤XÑâÅ…ÿ H° Áƒ@à@‚ D˜PáB† >„QâDŠ-^dðŸÀ <ø  4xaB… 6tøbD‰)V´8à? 4xð@,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ þ8`Aƒÿ p Á‚"L¨p!ÆBŒ(q"ÅŠÿþ8`Aƒÿ p Á‚"L¨p!ÆBŒ(q"ÅŠþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸q »Š´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/.à? 4xaB´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/2à? 4H€ö$XÐàA„ .dØÐáCˆ%N¤XÑâDþ8`AƒhOà@‚ D˜PáB† >„QâDŠ-^ĘQ!ÿ H° A‚´'p Á‚"L¨ÿp!ÆBŒ(q"ÅŠøOà@‚  = 4xaB… 6tøbD‰)V4À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7þcW@{,hð „ 2lèð!Ĉ'R¬hñbCÿ H° Áƒ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼èÀ,h €ö$XÐàA„ .dØÐáCˆ%N¤XÑbEÿ H° A‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1fdà? 4H@ÿ{,hð „ 2lèð!Ĉ'R¬HÀ,h €ö$XÐàA„ .dØÐáCˆ%N¤X!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5nüÇŽ"€ö$XÐàA„ .dØÐáCˆ%N¤XÑâŇþ8`Aƒ&ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼À,hP €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEÿ H° AÚ8`Aƒ&T¸aC‡!F”8‘bE‹1ftà? ÿ4(@{,hð „ 2lèð!Ĉ'R¬hÀ,hP €ö$XÐàA„ .dØÐáCˆ%N¤XQ!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5ndG@{,hð „ 2lèð!Ĉ'R¬hñâCü'p Á‚"< = 4xaB… 6tøbD‰)V´x"€þ8`AƒÚ8`Aƒ&T¸aC‡!F”8‘bE‹8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆÿ1£Cü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ3²£ = 4xaB… 6tøbD‰)V´xñ!€þ8`AƒОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼Àÿ H° Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹øOà@‚ hOà@‚ D˜PáBÿ† >„QâDŠ-^ĘÑ!€þ8`AƒÚ8`Aƒ&T¸aC‡!F”8‘bEƒøOà@‚ hOà@‚ D˜PáB† >„QâDŠ8pà? 4xaB… 6tøbD‰)V´xcFÙQОÀ <ˆ0¡B„,,ÀÂ… .TÀÂ…( = 4€A0hРA €Aƒö8pà? 4x¡Aí H° Áƒ*DÀ‚,\¸páÂ…ÿXˆ€„,D@B€ hOà@‚ €=@ @€ö$€@øOà@‚ hOà@‚ D˜P!B`áÂ… À @! `¡A P @{,({€@í H8ðŸÀ ОÀ <ˆ0¡B„,,ÀÂ… °P!öX¸P!@Ú³gÏž@€ö$X{,XÐ ´€@í H° A@ÿ{4hp ö0hР=øOà@‚ hOà@‚ D˜PáB† ph€C‡:tèÐá@øOà@‚ hOà@‚ D˜PáB† ph€C‡:tèÐaAøOà@‚ D˜PáB† >„QâDŠ-^ĘQ#Fv´'p Á‚"L¨! .ÀÂ…  `áB‚ ! (€@.B°0! 8pàÀ,hð BƒÚ8`Aƒ&Tˆ€ÿ…  `áÂ…X(€… °páA° `€…öÀB8ðŸÀ ОÀ <ˆ0¡B„,\¸P .,ÀÂ…  €… @À@`¡=°P €ü'p Á‚´'p Á‚"L¨! .ÀÂ… `áÂ…ÀB{$`¡="` @‚,\(€… 8pà? , = 4xaB… ÿ6t8ÀB>|øðáÃ…8ðŸÀ ОÀ <ˆ0¡Â… :,`!€‡>|øðaCøOà@‚ D˜PáB† >„QâDŠ-^ĘQ#Fv´'p Á‚"L¨! .ÀÂ…  `áB‚ ! (ÀÂ…@ÀÂ…X(Àþ8`AƒОÀ <ˆ0¡B„,\¸P .,ÀB,\ˆ€… °0! `€…öXxÀþ8ÿ`Á‚Ú8`Aƒ&Tˆ€…  `áÂ…X¸p!B.B&`¡=pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸páÂ,\¸P X@BÚ`!B.@A°pá@.pàÀ€ÿ$X° €ö$XÐàA„ .dØ@A ,Ð𠀂6lذaÃ…8ðŸÀ ОÀ <ˆ0¡Â…  P€B 84  ‡:tèð €ÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨#;ŠÚ( €@í (О={سgo {ö ´gÏÞ@í €=€`Ïž=‚öì ´g ={Ú8@ @°g {öÚ³GО½öì ´gO ={íÙhÏž@{öì´go ={íÙ#Àž=í h p {ö°gO ={íÙОÀö@ @Ú³go @{öÿ°go ={8ðŸÀ <ˆÐ €ö @ @  P @{€@€ ´gÏÞ@öìÙÀž½íÙ³7@{` سg ={íÙ#hÏÞ@€ö€  íÙho ={س' =(О@{öÚhO ={íÙОÀ0 í ´go {ö´'p =€@öì ´7О½ìÙhO ={س7О@€ö´€@ì ÿÀþ8`Á‚Ú( €@í (О={سgo {ö ´gÏÞ@í €=€`Ïž=‚öì ´g ={Ú8€@€ ´go =öì ОÀhO ={í ´'О=öì hOà@ì p {ö°gO ={íÙОÀö@ @Ú³7О@{ö ´' =í {pàÀ€ÿ$X° €ö @ ÿ@  P @{€@€ ´gÏÞ@öìÙÀž½íÙ³7@{` سg ={íÙ#hÏÞ@€ö @ ö@ Àö(О½ìÙhÏÞ@{öÚ³'О=öìÙhÏž@{öÚ³7ÐÞ@{í hÏž@{öÚhO ={س7P ={Ú8Ѐ@€ ´go @{öÚ³'О=öì ´gO ={íÙÀž=öÚ(О½ìÿÙhÏ€ü'p Á‚´'p Á‚"L¨p!C† À{@ `€  €† 6lØP!€ü'p Á‚´'p Á‚"L¨p!Æö0€=ö€@À00@A:tèСAøOà@‚ D˜PáB† >„QâDŠ-^ĘQ#Fv´'p ÁÀ@A‚Ø@ °€@ìÿÀö@Aì`{Ø@ ö€@ìPÐö(€=ì`{Àö€=`€‚( =í`Àì Àö°€=`{@ @ ö`{À°À@øOà@‚ Dh@{€@ì $€=Pÿ{Àì`Àö°€=`Àí {Àì`@ ö(€@ì {$@A`ØÀ°@A{Àì`@ ö°€=`ØÀ8pà? , = @ ö€@ Àÿ(€=`ö°€@ `{ØÀ°€@`€‚ö€=`ö°€@ì €‚À°@Á‚0{ØÀö€=ì {´€@ìÀö€=`{ Ø@ €ü'p Á‚´'p ÁÀ@A‚Ø@ °ÿ€@ìÀö@Aì`{Ø@ ö€@ìPа€=ì`Àö €=`Ø  A {ØÀ€=`Ø@ ö€=ØÀö@ í`Ø€=ì ØÀö@Aì`‚Ø@ ö`Ïž=ÿøOà@‚ hOà@‚ D˜PáB† @€=°@ €ìÀ {°` € hذaÆ 8pàÀ,X@{,hð „ 2l  ‚ì €= `€@Ø0€= P@Æ 6l¸Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔˆ‘Eí Hp °€@PÐ@ÚhÏž@{ö ´' =€=€hO @ìÿ`{Ø@à@{íÙ8О@€ö´A€ ´'О@{í ´gO =ö´'О={Ú8 =0 í ´gO @{ €€@öÚhO =öì ´'ÐÞÀí €@€´'О=öÚ³'ÐÞÀöÚ³gÀþ8`AƒОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'ÿО½í hOà@ @ ö€= Ø` @`Ø`àÀ €@ì {Ø` @@ ö€= ØÀö8О@{öÚ³gO ={íÙhO ={8ðŸÀ ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½ÿí hOà@ @ ö€=` €@ì { 8p =`{ØÀ°€=€´' =€=`Ø@ ö€@`8ðŸÀ ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½í hOà@{ÿ  @ (О@{íÙ³'О½í ´gÏž@€ö$h€@ €@ì {À°€@ì { @ (О@{öÚhÏž@{ö°gÏž@{öÚ³gO ={íÙ(О@{íÙ³'О½í ´gÏ€ü'p Á‚´'p Á‚"L¨p!C… (À€ì€@öسÀž={ØО@hÏž={Ú(ÿ@{,hð „ 2DàÀÿ H°`Aí H° Áƒ*\È!€‚ °` { P =öì°gÏÞ@ö´'P @Ú³gÏ€ö ОÀ <ˆ0¡Â… 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ1²£ = @ ö€@  {À°@A`€‚°€=ì`€‚   ØÀÿö°€@ì`€‚ `A Ø@ @A {ØÀö€=ìP (€@ì {` €ü'p Á‚"4 = @ ö€@  {À°@A`€‚°€=ì`€‚  íPØ@ ö€@`€‚ÿÀ°@A‚@ ö€=ìP€‚ö€=`@ ö°€=  €@ öàÀÿ H°`Aí Hp °€@PØ@ ö€=  {$€=ì`{@ (h€‚À°€@ì €‚À°@Á‚ÿ€=ì`{Àö(@A{À°€@ì { @ °€@øOà@‚ hOà@‚€= €‚À°€@ìPØ  Aì`{Ø  (@A €@ ö€=ì €€  0 @ €=`ÿØ@ ö€=`€@ °€@ì 0€@ ö€=ì €` €ü'p Á‚´'p Á‚"L¨p!Ã…  À€ì  À€‚( aÆ 6LàÀÿ H°`Aí H° Áƒ*\Ȱ!€‚°` {(@ °  €ƒ hذaÆ 8pàÀ,hð „ ÿ2lèð!Ĉ'R¬hñ"ÆŒ1²£ = @ ö€@  {À°€@ì {  ö°€=ì {@ ö(h{Ø@ ö°€=ì {Ø@ ö€= @ €= {À€@ì`{Ø@ ö°€@ì ÿÀ°€@ì { pàÀ€ÿ$XÐàA„´'p ÁÀ@A`Ø@ ö€=`Àö°€=`Àí {À°€@ {@ ö°{$@A`ØÀ°À@ì {À€@ÿì`{ÀØ€=8pàÀ,X@{€@ì @ ö€=`Ø@ ö@Aì`{Ø@ ö€@ìPа€@ì {À(€@ì`ö(HÀö°€=`{À°€@ìÿ {À°€@Àì Àþ8`Á‚Ú8à@`  °€@ì {À°€@ `{ØÀ°€@`€‚€=ì`{°€@ì`{@ ö€= @ °€=ì Ø@ ö°{ÿÀ°€@ì €@ì {` °€=ì`ö€=ì`‚°gO =öìÙpàÀ€ÿ$X° €ö$XÐàA„ .dÈ@AØ0€= `€@ `À@ö  @A 6lذ¡BøOà@‚ hOà@‚ D˜PáB† í(` {°@ €ì@ €ìÀ€(À¡C‡:4àÀÿÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÄÈŽ"€ö @ @ (О@{öì ho @{öì hÏÞ@öì ´gO ={س'О=öÚhO ={سgO ={س'О=öìÙhÏž½í ´'О@{Ú³'О½ìÙhÏž½öì ´gO ={Ú³gÏÞ@öì ´go {öÚ³'О½ìÙ³go @{í ´'ÐÞ@öì ´go {öì `Ïž={س'О=öì hÏÞ@öìÿ ´gÏ€ü'p Á‚"4 =À@À@€ ´'О={Ú(О={Ú³7€={íÙhÏÞ@öì ´gO =öÚhÏÞ@öìÙhÏÞ@öì ´gO ={ö°gÏÞ@öì ´gO ={í ´gÏÞ@öì ´'О={Ú³7P =öÚ³'О½íÙÀž={ÚhÏÞ@öìÙ(О={س'О=öì ´'О={س'О@{ö°gO ={ö´gÏÞ@öÚ³àÀÿ Hÿ°`Aí €@€@ P =öìÙ(ÐÞ@öìÙ(О½ìÙhÏž@{ö°gO ={í ´'О@{ö°gÏž@{ö°gO ={íÙ³7€={ö°gO ={í ´gO ={ÚhÏž½íÙ(О@{íÙhÏž½ìÙ³'О@{í ´7P ={íÙÀž={Ú³go {öÚ³'О@{öÚ³7P ={Ú³go @{íÙpàÀ€ÿ$X° €ö @ @ (О@ÿ{öì ho @{öì hÏÞ@öì ´gO ={س'О=öÚhO ={سgO ={س'О=öìÙ³'О={íÙhÏž½íÙ(О@{í hÏÞ@öì ´gÏÞ@{öÚ³'О½íÙ³gO ={íÙ³'О@{öÚ(О={Ú³'О@{ö°gO ={íÙ8О=öìÙ(ÐÞ@öì ´gO ={öÚ³gÏž@{öÚ³go @{ö ´'О@{Ú³7€={íÙ³àÀÿ H°`Aí H° Áƒÿ*\Ȱ!€‚°` @ €@ €@4lذaÆ 8pà? , = 4xaB… 6  ì@ @ €  @A:tèÐáAøOà@‚ D˜PáB† >„QâDŠ-^ĘQ#Fv´'p Á‚p° „QâDŠ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ1²£ = 48 Ú8à@ ,X°`Á‚(X°`Á‚ ,X°à@Ú8`Aƒ&T¸!C6lØ €ü'p Á‚"4 = 48 Ú8à@ ,X°`Á‚hOà@‚ D˜PáB†ö( = 4xÐ @´'p Á‚"L¨p!C„8ðŸÀ ÿОÀ €@í Hp  ,X°`A´'p Á‚"L¨0!@´'p @´'p Á‚"$@„ "@ @€ö$XР=øOà@‚ hOà@‚ @ @€ö$8€‚ ,X° @Ú8`Aƒ&T¸aC‡!F”€‰'*pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ €ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pÿà? 4xaB… 6tøbD‰)V´xcFÙQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼øÀþ8`AƒОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹8pà? , = 4xaB… 6tøbD‰)V´xcF‡8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+pàÀ€ÿ$X° €ö$XÐàAÿ„ .dØÐáCˆ%N¤XQ!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨#;ŠÚ8`Aƒ&T¸aC‡!F”8‘bE‹8pàÀ,hð BƒÚ8`Aƒ&T¸aC‡!F”8‘bE‹!8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌèÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bEƒÿ8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+*pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5bdG@{,hð „ 2lèð!Ĉ'R¬hñâCøOà@‚ Dh@{,hð „ 2lèð!Ĉ'R¬hñ"DøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8pàÀ,X@{,hÿð „ °° .TÀB…Ø`áB…ОÀ 8pàÀö(€8pàÀ,X@{,hð „ °° .TÀB…Ø`á„À `€…8pà? 4xaB… 6tøbD‰)V´xcFÙQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼øÀþ8`AƒОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼Àþ8`Áÿ‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹8pà? , = 4xaB… 6tøbD‰)V´xcF‡8ðŸÀ ОÀ <ˆ0¡B„,\¸P .\8€…  ` €‚$pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸páÂ,\¸ÐX¸P 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ1²£ = 4xaB… ÿ6tøbD‰)V´xñ!€ü'p Á‚"4 = 4xaB… 6tøbD‰)V´x"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ8pà? , = 4xaB…X¸p¡@.\¸p .À@ !HàÀÿ H°`Aí H° Áƒ*DÀÂ… °páÂ…X¸ÿp¡@°pá@.pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5bdG@{,hð „ 2lèð!Ĉ'R¬hñâCøOà@‚ Dh@{,hð „ 2lèð!Ĉ'R¬hñ"DøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8pàÀ,X@{ € ( =ÿ@ @Ú³go {öì `ÏÞ@öìÙ =°€ÀìÙ³GО½öì´go @{ {€@ `{hÏÞ@öì ´go ={íÙhÏž@{öì ´7О@{Ú³7О½ìÙ(О=öì `Ïž=øOà@‚ hO @0@ @´'p @ @{öì `Ïž½ìÙ(О={´'p ö8€={öÿÚ³7О=‚öì hO @`€@€@ì` íÙÀž½öì ´gO ={íÙhÏž@{öÚ³7О=öì ´go {öÚho @{ö°go ={8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£FŒì(hOà@‚ D˜PáB† >„QâDŠ-^|àÀÿ H° Áƒ hOà@‚ D˜PáB† >„QâDŠ-^„àÀÿ H°`Aí H° Áƒ*\Èÿ°¡Ã‡#JœH±¢Å‹8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£CøOà@‚ hOà@‚€= €‚°€@ `Ø€=ì €‚ØÀö°€@ì Ø  =`{ØÀ(€=ì@{À°@A‚hÏž@{öÚhO =í €=`ÿ{@ €ü'p Á‚´'p ÁÀ@A‚Ø@ °€@ìÀö@Aì`{Ø@ ö€@ìPа€=ì`Àö €=`Ø  A {ØÀ(€=ì@{À8pà? 4xaB… 6tøbD‰)V´xcFÙÿQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼øÀþ8`AƒОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹8pà? , = 4xaB… 6tøbD‰)V´xcF‡8ðŸÀ ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'ÿО½í hOà@{  @ (О@{íÙ³'О½í ´gÏž@€ö$h€‚ö€=`€hO ={í ´7p ={8ðŸÀ ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½í hOà@{  @ (О@{íÙ³'О½í ´gÏž@ÿ€ö$( €@ @ÚhO ={öÚ³7p =öìÙpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5bdG€={ö8`Aƒ&T¸aC‡!F”8‘bE‹8pà? 4x¡AöìÙ@à@‚ D˜PáB† >„QâDŠ-^txàÀ€ÿ$X° {öì p Á‚"L¨p!ÆBŒ(q"ÅŠ+8pà? ,Àž={H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3ÿ2„± €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨#;ŠÚ8`Aƒ&T¸aC‡!F”8‘bE‹8pàÀ,hð BƒÚ8`Aƒ&T¸aC‡!F”8‘bE‹!8pàÀÿ,X@{,hð „ 2lèð!Ĉ'R¬hñ"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌèÀþ8`Á‚Ú8`Aƒ( =  `Á‚ ,(€ö$XÐàA„ .dØÐáCˆí8pàÀ,X@{,hp @´'p Á,X°`Á‚ОÀ <ˆ0¡Â… :|1bAøOà@‚ D˜PáB† >„QâDŠ-^ĘQ#Fvÿ´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/>pàÀ€ÿ$XÐàA„´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/BpàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^ĘÑ!€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pà? , = 4xaB… 6tøbD‰)VTàÀÿ H° Áƒ*\Èÿ°¡Ã‡#JœH±¢Å‹3jÄÈŽ"€7nܸqãÆ+8pàÀƇ6nܸqãÆ7n´àÀlܸqãÆ7nÜhÀ(ظqãÆ7nܸqãÆ‡8@ÀÆ7nܸqcE `ãÆ7nܸ1#€lܸqãÆ7nܸqãFŒì(ظqãÆ7nܸ±"€l|`ãÆ7nܸqãF‹8@ÀÆ7nܸqãÆ8p€"€7nܸqãÆ7n|àÀlܸqãÆ7VpàÀŠ6nܸqãÆÿ38pàÀÆ7nܸqãÆm´F±øOà@‚ øOà@‚ D˜PáB† >„QâDŠ-^|àÀ%Àˆ#FŒ1bĈ#F‚8@FŒ1bĈ#FŒ8pàE1bĈ#FŒ1bĈã@ #FŒ1bĈcE #FŒ1bĈ#Æ8€#FŒ1bĈ#FŒ1b|ÈŽ"€Õ Hà? 4xaB… 6tøbD‰)V´xQ €`”` @uøOà@‚ D˜PáÿB† >„QâDŠ-^àÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ã? @£F5jÔ¨Qã@ @£F5jÔ¨QãAШQ£F5jÔ¨Q£F²£` :€ð¨à? 8pàÀ €8ð€øï€ÿ$XÐà@ÿ H° Áƒ*\Ȱ¡Ã‡#JŒàÀ'0P@xÿ TðŸ@ü` @üà? 4xaB… 6tøbD‰)VŒàÀ TžÀÕü'p Á‚ (XP ðŸÀ <ˆ0¡Â… :|1¢Ä‰8pàEÕ„'p @uÿ H° ÁƒðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z´àÀ\¼xñâÅ‹/^¼xÀ(¸xñâÅ‹/^¼xq!€\¼xñâÅ‹/^¼xñâÅ‹/dGÀ@uá (PÀ8p @ ÿ0P €8pà@ü'p Á‚þðŸÀ <ˆ0¡Â… :|1¢Äˆ80q"AÕ„'p @uÿ H° à? 4xaB… 6tøbD‰)V„àÀ TžÀÕü'p Á‚ (XP (8€@ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ8À(¨ <ªøOà@‚ ü!B„ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàE/^¼xñâÅ‹/pàÀÿŠ.^¼xñâÅ‹/^\àÀ/^¼xñâÅ‹/^¼xñâÅ‹ÙQ0P@x TðŸ@(ÀÀ `àÀøÀ@ÿ H° Áƒÿü'p Á‚"L¨p!ÆBŒ(1"€LœHÀ@uá (PÀ,@ €‚øOà@‚ D˜PáB† >„QâDŠ!8pàEÕ„'p @uÿ H° €‚ @ €  À,hð „ 2lèð!Ĉ'NpàÀŠªOà@êÿþ8`Aƒÿ@ˆ!Aÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E‡8@ÀÅ‹/^¼xñâÅ‹8p€"€‹/^¼xñâÅ‹8pàÀÅ‹/^¼xñâÅ‹/^¼xñâAv T :á©øO @€@ÿ`àÀà` €ÿüÀ?` @þ0þ8`Aƒ&T¸aC‡!FŒàÀ%0P<€ê„§à?üÿðþðÀÀøOà@‚ D˜PáB† >„QâDŠ!8pàEÕÁ¨Nà@xêþ8@ ü`àÀ@ €þðàÿ H° Áƒ*\Ȱ¡Ã‡#JœxÀ(¨@uÂSðŸÀøà ü` @ÿü@ ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å†8@À@€$XÐàA„ .dØÐáÿCˆ%N¤X‘àþ8`Á‚ p Á‚"L¨p!ÆBŒ(q"ÅŠ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£FŒì(¨@uÂSðŸ@(À? ð` €þ À? 0ð€à€øÀ?ü@ €øOà@‚ D˜PáB† >„1"€H”hÀ@uðª8ž:€ÿ ðþø@ €ðŸÀ <ˆ0¡Â… ÿ:|1¢Ä‰+BpàÀŠªƒPÀðÔü'pà@ÿ ðÀ@  ààü'p Á‚"L¨p!ÆBŒ(q¢A ` :xÕ OÀà€þàü À@ÿ 8P €ðÀ,hð „ 2lèð!Ĉ'R¬hÑ!€PpñâÅ‹/^¼xñâA àâÅ‹/^¼xñâÅ…8pñâÅ‹/^¼xñâÅ‹/^¼xEÕ„ÿ'p @uÿ ` ð€@` @(ð€ÿþøàß¿þýûàß¿ÿüðï€ÿü(à? ø` €ø` €ÿ$XÐàA„ .dØÐáCˆ#8pà€D‰ TžÀÕü'P €øà8À,hð „ 2lèð!Ĉ'R¬À(¨ <ªøOà@ø` €8pà@  À@ÿ À@ÿ ðŸÀ <ˆ0¡ÿÂ… :|1¢Ä‰8p€"€êÂ8P :€ÿ 0P €þà€þ€@ÿü'p Áþà€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑ¢C àâÅ‹/^¼xñâŃ8@ÀÅ‹/^¼xñâÅ‹ 8pàâÅ‹/^¼xñâÅ‹/^¼xñ ;ŠªOà@êþ(À@ÿ ð€@` @ ` €`à?ÿ À?(À?ü0À?ü'p Á‚ÿ"L¨p!ÆBŒÀ$J4` :€ð¨à?ü0À?ÿ0pàÀþ8`Aƒ&T¸aC‡!F”8‘bEˆ8@À@uá (PÀà€þ`àÀ` ø@ ø` €ÿ$XÐàA„ .dØÐáCˆ%N4àÀ TžÀÕü'P € ðÀ@ÿ ð€@8p @ÿ ðÀ,hð „ 2lèð!Ĉ'R¬hÑ!€PÿpñâÅ‹/^¼xñâA àâÅ‹/^¼xñâÅ…8pñâÅ‹/^¼xñâÅ‹/^¼xEÕ„'p @uÿ ` €ø@ €þà€à€þ` €ÿü €@ÿ 0pàÀþà€þà? 4xaB… 6tøbĈ8 Q¢AÕ„'p @uÿ à€þø@ €ðŸÀ <ˆ0¡Â… :|1¢Ä‰+BpàÀŠªOà@êþ(Àÿ@ÿ ðÀ@ €@ €` €øOà@‚ D˜PáB† >„QâDƒ8@À@uá (PÀà€þÀ?ü À@ÿ 8P €øà? 4xaB… 6tøbD‰)V´èÀ(¸xñâÅ‹/^¼xñ €PpñâÅ‹/^¼xñâB¸xñâÅ‹/^¼xñâÅ‹/^<ÈŽ"€Õ Hà?`    ÿÿ@ €À@ÿø@ ` @ÿ H° Áƒ*\Ȱ¡Ã‡#FpàÀ‰ PÀþ(À?ü À? À@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±"D ` @uøOà@`à?0þàøOà@‚ D˜PáB† >„QâDƒ8@À@€ê$ðŸÀÿ€üðÀ@€@(À?ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZlàÀ\¼xñâÅ‹/^¼xÀ(¸xñâÅ‹/^¼xq!€\¼xñâÅ‹/^¼xñâÅ‹/dGÀÅ‹/^,àâÅ‹/^¼˜À.Np!†.^¼xñâÅ‹/^ŒàÀ\¼xñâÅ‹/^¼xñ"€PpñâÅ‹/^¼xñâÅ‹/FpàÀŠ.^¼xñâÅ‹/^<àÀ\¼xñâÅ‹/^¼¸Àÿ.^¼xñâÅ‹/^¼xñâÅ‹²£àâÅ‹/þ€‹/^¼xñ¢B¸8ÀÅ„¸xñâÅ‹/^¼x‘D8pàÀ,XÀ,hð „ 2lèð!Ĉ'R¬hñ"€PpñâÅ‹/^¼xñâÅ‹/FpàÀŠ.^¼xñâÅ‹/^<àÀ\¼xñâÅ‹/^¼¸À.^¼xñâÅ‹/^¼xñâÅ‹²£àâÅ‹/^¼xñâÅ‹8pàÀʼn.^¼xñâÅ‹/^¼x"€PpñâÅ‹/^¼ÿxñâÅ‹8@ÀÅ‹/^¼xñâÅ‹/^¼À(¸xñâÅ‹/^¼xñ €PpñâÅ‹/^¼xñâB¸xñâÅ‹/^¼xñâÅ‹/^<ÈŽ"€Õ Hà? 4xaB… 6tøbD‰)V´xQ €`”` @uøOà@‚ D˜PáB† >„QâDŠ-^àÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ãÿ? ` @uøOà@‚ D˜PáB† >„QâDŠ8p€"€Õ Hà? 4xaB… 6tøbD‰)JpàÀŠ+V¬X±bÅŠ+V¬X±bÅŠÙQ0P@x TðŸ@0ð@þû7Pà¿ÿüû÷ï€ÿþýðï€ÿ @ @€ÿ€ €à? þÁ ø€@€ ü÷À P À @ Àÿüû÷ï€ÿ ü÷ïß@ÿþýøïß?ÿÿþýûàß¿üû÷ÀÀÀþðŸÀ <ˆ0¡Bƒ8°pᄪOà@êþ8`Aƒd'P À,ø ;ÿýcðŸÀ <8Bìþ8`Aƒ&T¸aC‡!F”øÀ&þ0P@x TðŸÀÿ‚@ A Hð€ÿ$XÐàA„ .dØÐáCˆ%N¤(À(¨ <ªøOàÀ@ A‚ÿøOà@‚ D˜PáB† >„ÿQâDŠ-^TàÀ TžÀÕü'p Á‚²(à?Ù 8pàÀì d7p @vìØ±øOà@‚ D˜° ;…ì*T¨P¡B… pàÀ…  TžÀÕü'p Á‚  `Aÿ H° Áƒ*\Ȱ¡Ã‡#Jœ(À(R¤H‘"EŠ)R¤H‘"EŠ)R|ÈŽ"€êÂ8P :€ÿ 0À@8ð€ÿ ü@ €ÿ8pà?`à? `à@øÀÀ  ÀÿÀþ(ÀÀ 0ð€ÿ0ð0€@ÿ`à? ` €8P €ÿ$XÐàA„ 8pà€B…  0P„QâÄ8@‘"EŠ)R¤H‘"EŠ)R¤H‘âCv T :á©øO @ÿ@ €ø€@þ0pàÀþ@ €ÿðÀ?ÿ 8  À?ÿü  ÿýðŸ@0pà@þ@àÀÿ ü÷ïß@ÿþýû7ðß¿þûàß¿ÿüûà? ü`àÀü@ €þ8`Aƒ&DàÀ *T(À@uðª8ž:€ÿÿ d7Ý?vÙ d7P »ì²Èn »ÿØ d÷@vÿØ dÇŽ»ìþ±Èî;ì²ûÇn »ìØ d÷@vÈà? 4xaB… 6tøbD‰8 Q €êàT'p „ÿQâDŠ-^àÀ T :á©øO @vÙýc7Ý?v²(ðß?vÿþ±û'ðß?vÿØü'p »ì²ûÇî»ìþ±8Ý@vÿØ d'Ý?vÙýc7Ý?vì²ûÇn »ìØ d÷@vÈà? 4xaB… 6$àÀ ¨@uÂSðŸÀü0À?ü@ Aÿ H° Áƒ*\Ȱ¡Ã‡#JœøÀ(R¤H‘"EŠ)R¤H‘"EŠ)R|ÈŽ"€êÂ8P :€ÿ 0ðÿ0P €ø€@þ0pàÀø@ €ÿðÀ?ÿ 8p à€þ`à@8pà@þ0ðþ ÀÀÿ`à? ü@ € ü`àÀü0À?ÿ H° Áƒ"pàÀ… *` :xðà©S„QâDŠ-^àÀ T„QâDŠ-^àÀ T„Q"€H` :€ð¨îß¿ÿü'P €` €0€@ðÀ@ÿ ðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8p€"€êÂ8P :€ÿ 0À?üðÀ@8p @ÿ ðÀ,hð „ 2lèð!Ĉ'R¬hñ¢@ ` :€ð¨à?Ù d÷Ý@vÿØ d7p ;ìþ±Èî;ìÿ²ûÇn »ìþ±Èî»ÿØýc7Ý?vÙ d÷Ý@vÿØ d÷Ý@vÿØ d÷Ý@vÿØ d7pàÀìþ8`Aƒ&T¸aC‚8àÐ €êÂ8P :€ÿ 0À?ü0À?à? 4xaB… 6tøbD‰ÿ8pàEŠ)R¤H‘"EŠ)R¤H‘"EŠÙQ0 : ü'P ü€@ÿþø÷ïß?ÿ @ @ ÀÿþøOà@‚ü€ Áÿ€à?ÿü@ ‚(ðß@ÿ HA@€@€ ü÷ïßÀÿþø÷ïß?ÿþýàß¿þà?ÿ øÀ?ðŸÀ <ˆ0áAP¨P¡BT'p A€ÿdÇŽ@vÙ±c7;vì²ÈŽ»ÿØ ÈŽ»ìØ d÷ ;ÿýc÷ïßÀÿØýûÇîß?vÿþ ü÷Ý¿ÿØýûÇî»ÿØýûÇîß?vÿþýcðŸÀ <ˆ0¡Â… :|1¢D(À@€ê$øïßÿ¿þ(À?øü`à@ üàþ@ ü'p Á‚"L¨p!ÆBŒ(q¢B ` @uøOà@€@(À?ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼øÀ(PÀþ8;vì²cÇn »ìd'Ý?vÙ d';vìþ±cÇŽ@vÙ±c7;vì²cÇN ;ì²ûÇŽ;vÙ±c'Ý@vÙ±c'Ý@vÿÙýc'@vÙ dðŸÀ <ˆ0¡Â… pàÀ‡ ¨Nà@‚ÿ @ ü €@ ðŸÀ <ˆ0¡Â… :|1¢Ä‰ÿ8p€"EŠ)R¤H‘"EŠ)R¤H‘"Ňì( H‘"EŠ)R¤H‘"EŠ8pàEŠP¤H‘"Ńì²£H‘"EŠ)R\àÀP¤Hñ!Š)R¤H‘"EŠ8p€"ŠP¤H‘"EŠ)R¤H‘"EŠ8p€"ŠÙQ¤H‘!;Š Ù1dG‘"EŠ8ÿp€"Š0@‘"EŠ)R¤Hq!€P¤H‘"EŠ)R¤H‘"EŠ)R¤øE)R4€Àÿ H° A‚ðŸÀ <ˆð @ü'p Á‚"L¨p!ÆBàÀ#"1bĈ#d§]Ĉ#FŒ1bĈ8p â@#FŒ8"FŒ1bĈ#FŒèÀ"1â@"FŒ1bĈ#FŒ1bĈ#.pàÀˆDüÇŽ;v#FŒX]Dˆì²‹1bĈ 8p â@# @ÿĈ#FŒ1bĈ 8pà@Ĉ#FŒ1bĈ#FŒ1bĈ#FŒø]Ä"FŒ1bĈ#FŒ1bĈ# pàÀˆˆ1bĈ#FŒ1bĈ#FŒ8À"1bĈ#FŒ1bĈ#FA8pàÀ,XÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ8p€"5jÔ¨Q£F8p€"5jÔ¨Q£F8p@£F5jÔ¨Q£F5j\ÈŽ"€Õ Hà? 4xaB… 6tøÿbD‰)V´xQ €`”` @uøOà@‚ D˜PáB† >„QâDŠ-^àÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ã? @£F5jÔ¨Qã@ @£F5jÔ¨QãAШQ£F5jÔ¨Q£F²£` :€ð¨à?`à?€ ü÷o Àÿþø÷ïß?ÿþýûàß?ÿ €@ÿÿ ( ÿýðï€ÿ   þ8P @þûàß¿ÿüû7Pà¿ÿ ü÷ïßÀÿþø÷ïß?ÿþýàß¿þ(8ð€ÿ$XÐàA„ .dØÐ!Axø!€êÂ8P :€ÿ$X° ;ƒÙ,Èî@vü'p Á‚"4È.á?v &L˜0a„ &L˜0a„ &àÀ  0P@x TðŸÀ0(ÀÀ(€@ÿ8P €ÿÿ ü`à?€@ÿþýðŸÀ@ A$øÀ,hð „ 2lèðaC€HÀ@uá (PÀ,h° €ƒ€ €ƒüp𠀃ààA‚þ8`Aƒ&T¸aC‡!F”8q"€P@à@‚ D˜PáB† >„QâDŠ8pà? ,€À <ˆ0¡Â… :|1¢Ä‰+2|øðáC„8ð° €êÂ8P :€ÿ 0ð€þ À@þ À@0ÀÀ`à?ÿ(€@`à@ÿ8pà?ðŸÀ <ˆ0¡Â… :|q €D` :€ð¨à? 4XÀÁƒ88ÀA 8xP ‚à? 4xaB… 6tøbD‰'8pàÅH° Áƒ*\Ȱ¡Ã‡#JœH±"B€ÿ$XР@€$XÐàA„ .dØÐáCˆ%N¤X‘!À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ1²£` :€ð¨à? ü@ € à€þ ÀÀÿÿ 8p €ÿ`  8p @ÿø€@ÿ`à@ø€@ÿ` @ÿ8p @ÿ H° Áƒ*\Ȱ¡C‚8ðð!CÕÁƒO:xðà©{(@v Ù-d÷Av*dÇÝÇ>|øðáÇ8pàÀªOà@êþ(ÀÀþ À@þ €` €0À@ÿ `  `àÀ 0pàÀðŸÀ <ˆ0¡Â… :|ÿq €D` :€ð¨à? 4XÀÁƒ8(ÀA 8xP €ƒþðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€â@€$XÐàA„ .dØÐáCˆ%N¤X!À,hP À,hð „ 2lèð!Ĉ'R¬Èà? 4xaB… 6tøbD‰)V´xcFÙQ0P<€ê„§à? ü@ € à€þ ÀÀÿ 8p €ÿ`  8p @ÿø€@ÿÿ`à@ø€@ÿ` @ÿ(À@@ € €ÿ$XÐàA„ .dØÀ6l8À@uðª8ž:€ÿdÇŽ;ìØ±ÈŽÝ?v²cÇN ;vìØ dÇŽ@vÿØ üÇn ;vì²c7;vÙ d÷;ìØ±ÈŽ;ì8À,hð „ 2lèð!Ĉ8pàÀĪƒPÀðÔü'P € ü@ € ü@ ààÿø` `à@` €ÿ `à@þðÀ?ÿÿ H° Áƒ*\Ȱ¡Ã‡ÿ8p"AÕÁ¨Nà@xêþ8þ @ € ` @ÿ@ øÀ?ÿ@ €þð€@ðü€@þðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€â@€$XÐàA„ .dØÐáCˆ%N¤X!À,hÿP À,hð „ 2lèð!Ĉ'R¬Èà? 4xaB… 6tøbD‰)V´xcFÙQ0P<€ê„§à? ü@ `à? øÀÀø€@ÿüð€@8p @ÿ pà¿þû÷o €ÿþýøïß¿ÿýðïß¿þýðŸ@þ0pà@þàü0À,hð „ 2làÀ 6` :xÕ OÀ²Èî»ÿìþ±ÈnàÀìþ±Èî»ìþ±û@ÿþýc÷ïß?vÿØýûÇî»ÿþ±ûÇîß¿ìþ±û÷Ý¿ÿØýc÷ïß?vÿØü'p Aìþ8`Aƒ&T¸aC‡!F”(À&þ0P<€ê„§à? `à? `à?üðÀ?ü ÀÀü €@ðÀ?ÿ€ÿ0pà@ 8P @ €ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡ÿ8p"AÕÿÁ¨Nà@xêþ(À@ÿ à€þ ÀÀÿø€@ÿð€@ü0À?ü À?ü@ €@ €ü0À?øOà@‚ D˜PáB† >„Qâć8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Jv TžÀÕü'P €ÿ0p €  ÀÀ8ð€0ðþøà8P €ÿ üÿ@ €ÿ0pàÀø€@ÿ` @ÿ8p @ÿ ðÀ@ÿ ðŸÀ <ˆ0¡Â… 8pà@Æ ¨„QâDŠ-^ĘQãFŽ=ÿ~RäH’%MžD™R%;ŠªOà@êþ(ÀÀ8À@øï€ÿþýðï€ÿü€ A‚@  H @ A$(€@@€@ÿ € Áþà€þà? 4xaB… 6pàÀ† 0PpàÀÿ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U²£` :€ð¨à? 0ÀÀþ0P €þ ÀÀÿ 8p €ÿ €@ 8p @ÿø€@ÿ`à@0ðþ À@8pà@ÿ ðÀ@ÿ ðŸÀ <ˆ0¡Â… 8pà@Æ ¨ <ªøO @vÙýc7Ý?vÙ Èn »ì²ûÇn »ìþ±ø@vÙÿýc'Ý?vÙýc'»ì²Èî»ìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡#JàÀÿ¨ <ªøO @ÿø`à? `à? €@8P €ü0P €@ € 0p @ 8ð€@ €ø` €ÿ$XÐàA„ .dØÐáÃ8‘ €êÂ8P :€ÿ 0À? ðÀ@ÿ 0pàÀàþ@ €øÿ@ ÿðÀ@ÿ ðÀ@` €ø` €ÿ$XÐàA„ .dØÐáCˆ%N|àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(SªdGÀ@€ê$ðŸ@0ð@þûàß¿ÿü'P 0 ÿýûà? @€@@ @€ÿ$€ ‚ @ @þû÷oà¿ÿüû÷ï€ÿþ ðïß¿ÿ ðŸÀÿü@ ÿ@ ü'p Á‚"L¨p!Æ8аaÃT'p A€ÿdÇŽ;ìØ±Èî@vþû7Ý¿ìþýû7ðß?vÿØýû÷ï»ÿþ ü÷ïŸÀÿþ ü÷ïŸÀìþ±û÷ïßÀÿþ ü÷Ý¿ìþýc÷ï»ÿþ±øOà@‚ D˜PáB† >„Q¢@˜øÀ@€ê$ðŸÀ0 Pà¿üû÷À`à? 0ð€ ðÀ@ Pà¿ÿü'p Aÿü€ @ð€@ÿ  þ8`Aƒ&T¸aC‡ÿ8pàD‚T'p A€ÿ€À?` €ÿ ÿÀ@ÿðð€@ÿ€@À? € À@ÿ H° Áƒ*\Ȱ¡Ã‡#JœøÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦TÉŽ"•*Uªü@¥Êƒ8 ÿ€Ev*Q²cÈN¥J•* 8pàE*Uªä@¥Ê’8@€E ¨TY€J•*Uª,àÀ*UªT©R¥J•*UªT©R¥J•*UªT©²";ŠTb@à@€ÿ$XÐ`A€øOà@‚ D˜PáB†  aÆ 6løÀ6l8@Ã‚ìØ±c×°aÆ d§]Æ 6lذaÆ 6,àÀ hذaÃ…ðŸÀ <ˆP @ü'p Á‚"ü &L˜0a„ &L˜° €$L(@Âÿ„P €„ &L˜0a„ü'p Á‚"L¨p!ÆBŒ(q"Å‚8P±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bEvT¬X±bÅŠ+V¬X±bE‰8P±"€Š+V¬X±bÅŠ+V¬8À(¨X±bÅŠ+V¬X±bÅŠ8p€"€Š+V¬X±bÅŠ+V¬X±bÅ8P±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bEv ¨Nà@‚ÿÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8p£Dª8 À,hð „ 2lèð!Ĉ'R¬hñâ@ ` @uøOà@‚ D˜PáB† >„QâDŠ-*pàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒÿ8pà€F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£FÙQ0P@x TðŸ@þøOà@‚ D8 þ8`Aƒ !ƒ(ÿà? 4xaB… 6tø"Dˆ!€êÂ8P :€ÿ 0pàÀ 8P ü'p Á‚ ø'à A8(P€@ øOà@‚ D˜PáB† >„Q"A˜øÀ@uá (PÀÀ@` @ÿ` @ ü`à@þ0ð€ÿ @ @þû÷o Àü `Á(HÀ,hð „ 2lèðaC€HÀ@uá (PÀ,h° €ÿ‚ðŸÀ `Ð ðŸÀ ðŸÀ <ˆ0¡Â… :|1¢Ä‰#8pà@ÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠÙQ0P@x TðŸ@à? 4x ‚"4!€"4à „ü'p Á‚"L¨p!ÆBLàÀ#"0P„8À"0P@x TðŸÀ ,  ‚,à`Apð`Aÿ H° Áƒ*\Ȱ¡Ã‡#JœH1"€T¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X‘EÕ„'p @uÿ `à@þ8ÿ`Aƒ  !Bƒ@ˆ¡@ $à? 4xaB… 6tøbBˆ!€êàÁƒ§N„QâDŠ8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì(¨@uÂSðŸ@þø@ €àü0À?€@ÿþýðïß?ÿüûàß?ÿüû÷À?ÿþø÷ï€ÿÿü'pà?ÿ À?üðÀ@ÿüàþ` €ðÀ@ÿü'p Á‚"L¨p!ÆpàÀˆ¨@uÂSðŸ@ 0PÀ?üðOÀ@ÿ (` €ðO€@ ðOÀ?ÿ ðO€@ PÀ@ÿü0pàÀþ8`Aƒ&T¸aC‡!F”8À&þ0P<€ê„§à? `à? `à?üðÀ?ü ÀÀÿü €@ðÀ?ÿ€ÿ0pà@8ð@ €ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡ÿ8p"AÕÁ¨Nà@xêþ(À@ÿ à€þ À?€ øOà@ÿà€þ8pà@(à?ü@ €øà? 4xaB… 6tøbD‰)FpàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+²£ÿ` :€ð¨à?ü À@(ð€ÿþø7Pà?ÿ Hð‚ Pà?ÿþø÷À?ÿþýðÀ¿ü'P €ð€@ü0À?ÿ(ð€ÿ  À@(ð€ÿþø7Pà?ÿ H° Áƒ*\Ȱ¡Ã‡8p"D…ªƒž:uðàÁSWP@Aü0PÀ?ÿ`PÀ@ÿ ðO€@ ðOÀ?ÿ (ðŸ€ÿüû÷ÿüû÷OÀ?ÿü'p Aÿþ8`Aƒ&T¸aC‡!F”8À&þ0P@x TðŸ@0ð 0ðþøàø`à@ø@ €øà€8pà?ü`àÀþ €@ü0À?ü'p Á‚"L¨p!ÆþpàÀˆ TžÀÕü'P €þÿ ðÀ@ÿ øþà@þðŸÀ  @ø` €øÀÿ,hð „ 2lèð!Ĉ'RŒàÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VdGÀ@uá (PÀø` (À@ÿ `àÀ ü@ € À?ü ÀÀ0À?ðÀ@ÿü0P €  €@à€ü'p Á‚"L¨p!ÆpàÀˆ¨„Qâ@˜øÀ@uá (PÀøÀ?ÿ` @ÿ@ ÀÀ à€ü €@ ` €þ0pàÀ@ þà€þ8`Aƒ&T¸aC‡ÿ8pàD‚ªOà@êþ(À@ÿ0ÿÀ?ü0À?à€þà€@ € ðÀ@ÿ ðÀ,hð „ 2lèð!Ĉ'RŒàÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VdGÀ@€ê$ðŸ@þÀ@ À@ À@ 0ð€@ ` €ÿàø€@€ üàß?ÿþýðïßÀÿÿüû÷À¿ÿýðŸÀ <ˆ0¡Â… :|HÀ BT` @uøO @€ ü÷oà¿ÿ ø'àß¿ÿþý(àß¿ÿýðïß?ÿþ ø'àß¿ÿýðOÀ¿ÿýðïß¿ÿüû÷Oà?ÿüðÿüû'àß¿þ8`Aƒ&T¸aC‡!F”8À&þ0 : ü'p €øïß@ÿþýðŸ@øÀÀ üà€ü0P øïß¿ÿÿ Hð€‚ÿü‚þà€À,hð „ 2lèðá?€HÀ@€ê$ðŸÀðÀ@ø ðÀÀÿà€@ €ÿ À@þ€þ8`Aƒ&T¸aC‡!F”8‘bD¨X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±";Š*V¬X±bC+V¬X±bÅŠ8p bE ¨Xÿ±¢A T¬X±bÅŠ+pàÀŠ*V¬X±bÅŠT¬X±bEˆ8@@ŨX±bÅŠ+V¬X±bÅŠ8pà@ÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠÙQP±bÅŠ¨X±bÅŠ+V$àÀ+¨˜P€*V¬ˆP€B+V¬X±bÅŠpàÀ€ÿ$X° ƒ 4hРAƒ p À,hð BðŸÀ <ˆð$L˜0a„ &L˜0a‚ÿ80¡@ @Bþ8`Aƒ&T¸aC‡!F”8‘bE‹1pàÀŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3fÈŽ"€Œ3f̘1cÆŒ3BpàÀŒd̘1cÆŒ3f̘1"€P1cÆŒ3f̘1cÆ8@@ÆŒ3f̘1cÆŒ3ftàÀ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3fÌ8Eª8 À,hð „ 2lèð!Ĉ'Rÿ¬hñ¢@À(À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼8À(PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹ 8p€"€Õ Hà? 4xaB… 6tøbD‰)V´xcÆ8 Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨QãDv TžÀÕü'P €8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢D°HÀ@uá (PÀ,hPÿ €0€@ÿ H°à?€ ü÷À,hðà@øOà@‚ D˜PáB† >„Qâ?˜øÀ@uá (PÀÀÀøï€ÿ @ Àÿ ü÷o @€ÿ$( øOà@‚ D˜PáB† >„QâÄ8@À@uá (PÀ,hP €ƒÀÁƒøààA<(þpÐ €ÿ$XÐàA„ .dØÐáCˆ%N$àÀÿ H° Áƒÿ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(SªdGÀ@uá (PÀ8pàÀþðŸÀ <ˆ0¡Â… :|1¢Ä‰+JpàÀ‹ T„QâDŠ ÿ8p bEÕÁƒO:xðà©+@ þà€þø@  €@ÿþø÷ï€ÿü'p €øÀ¿þýðo Àþýûà€ÿü'p Aþ8`Aƒ&T¸aC‡!F”àÀ¨ <ªøO @ÿ`à@8P €ÿ 8pàÀÿ €@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡#JTàÀÿ¨ <ªøO @ðÀ@ÿ ðÿ ÿøOà@‚ €à€þøà€þ  À?ÿüPÀ@ÿ€à€ÿ$XÐàA„ .dØÐáCˆ%pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U²£` :€ð¨à?ü0À? 8ð€ ðÀ@ÿ ðÀ@þ8`Aƒ&T¸aC‡!F”8‘bB¨XÀ@uÿðàÁS§„Q¢B˜øÀ@uá (PÀ@ €ø` € 0pàÀ0À?ðÀ@ÿüðÀ@ÿ 0P ÿà0À?ÿ ` €þàøà? 4xaB… 6tøbD‰8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•ì(¨ <ªøO @ÿ ðÀ@ü` @ü0À?ü0À?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH1!€T¬` :€ð¨à? À?ü0À?ÿ `à?ÿàþ`ÿà@ÿ ð€@ü0À?ü ÀÀøOà@‚ D˜PáB† >„Q"€H` :€ð¨à? 0ÀÀ 0p @ÿ8pàÀ@ þà€þ8`Aƒ&T¸aC‡!F”¨À&þ0P@x TðŸ@à€þà€þ8pà?0À?ðÀ@ÿüðÀ@ÿ ðÀ@0À? üà€þø` €ÿðÀ?ü À@ÿü'p Á‚"L¨p!ÆBŒ(Ñ €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©’Eª8 À€0ð€(ðß¿ÿþýàß¿þýøï€ÿ$XÐàA„ .dØÐáCˆ%N¤˜À*V0 : ü'P €ðÀ? ` @ ` €øï€ÿþûàß?ÿþÿø÷oà¿þýûàß?ÿüûàß?ÿþø÷ï€ÿ$XÐàA„ .dØÐáCˆ%8pà€DT'p A€ÿ €ÿ(ðß¿ÿ øïß¿þýû÷o @€ÿ 0p þð€@ÿ  þ8`Aƒ&T¸aC‡!F”¨À&þ0 : ü'P €  ü`à@ üÿ À?à€0ð ÿ€@ÿÀ@þø@  ü'p Á‚"L¨p!ÆBŒ(Ñ €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©’EhP€J•*UªŒàÀ*¨@%E ¨T©Rå@ @¥J…TªT©²!€P R$€‰TªT©R%HP©R¥J•*UªT©R¥J•*UªT©R¥J•ÙQ .€@P©R¥J•8p@%•ÿ¨´@!•*Uª$àÀ¨TiTªT©Ò!€P R$€‡ R¥J•*C8pà€J•*UªT©R¥J•*UªT©R¥J•*Uª¬ÈŽ"•*UªT©ò$€øOà@‚ DhÀ,hð „ 2lèð!Ĉ'R¬hñ"D #FŒ1bĈ#FŒ 8p€"Œ1bĈ#FŒ1bĈq €`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Ƈì(PÀþ8`Aƒ&ÿT¸aC‡!F”8‘bE‹8pàF‰0bĈ#FŒ1bĈ‘ €P0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàEª8 À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒÿ8p@£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Æ‰ì(¨ <ªøOà@‚ ÀÁƒ8X ÿýðŸÀ `° €‚ ðŸÀ <ˆ0¡Â… :|1â@(Ñÿ @,hð „ 2lèð!Ĉ'R¬hñ¢Äü'p Á‚ TžÀÕü'pà@ H A‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœHñ€P0P@x TðŸÀ ,€@ÿü'pà?ÿ H ðŸÀ þ@ Àþ8ð‚ÿü'p Á‚"L¨p!ÆBŒ(q"E†8P±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bEvÿ TžÀÕü'p Á‚ ààÁƒÿ<€ €ƒ 8H@AðŸÀ <ˆ0¡Â… :|‘!€DŒ¸à 4xaB… 6tøbD‰)V´xQ"À,XÀ@uá (PÀ@p ‚$Hà@ @ þ8`Aƒ&T¸aC‡!F”8!€P0P@x TðŸÀ `P ƒÿ(À A48€@ þPÀ,hð „ 2lèð!Ĉ'RÿdàÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VdGÀ@uá (PÀ,h €ƒpð ‚,à A„QâD„8@À@uá (PÀ,(ÿ€A ü  ƒ`Ðà@4ø@Aÿ H° Áƒ*\Ȱ¡Ã‡#JœH‘!€T¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X‘EÕÁ¨Nà@xêþ(À?àþ ÀÀÿ ÿÀ@þ0ð€@  À?@ 0ð€üðü'p Á‚"L¨p!ÆB\àÀÿ#.x@à@‚ D˜PáB† >„QâDŠ-^”ðŸÀ 0P<€ê„§à?@ À@ü@ €àÿþðŸÀ <ˆ0¡Â… :|1¢Ä‡80ñ€êàT'p „ÈÀ"FŒ1bĈ#FŒ1bĈ#FŒ1¢@Õ„'p @uÿ ` €øÀ¿ÿø÷o @€ÿ$(€@0À?0À?ü'p Á‚"L¨p!ÆBŒ(Ñ!€Lü` :€ðÿ¨à? ðÀ@ÿ@ Àþ(À?€ üà€ÿþøOà@‚@ ÿýøï€ÿü'P €øÀ?ÿþýðŸÀ <ˆ0¡Â… :|1¢Ä‰8pà@ÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠÙQ0P@x TðŸ@ø` €` @ ð€@ü0À?ÿ øÀÀþ0À? ø€@ü0ÿÀ?ÿ 0pàÀþà€ÿ$XÐàA„ .dØÐáCˆ 8p bĈ#FŒ1bĈ#FŒ1bĈ# 0P@x TðŸ@ø` @ÿ @ €ü@ ` €` €øOà@‚ D˜PáB† >„Q¢C˜øÀ@uá (PÀà€þ` @ø` @ÿ 0pà@ ü`à? €@ø` @ÿ ðŸÀ <ˆ0¡Â…ÿ :|1¢Ä‰8pà@ÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠÙQ0P@x TðŸ@ø@ ÿ À?0À?ðÀ@ÿü0À? 0ð€þ` €ø` €øà€øÀ?üðŸÀ <ˆ0¡Â… :|‘!€DŒ1bĈ#FŒ1bĈ#FŒ1bDªOà@êþ(À@ÿ ðÀ?üÿ À@ €@ €` €øOà@‚ D˜PáB† >„Q¢C˜øÀ@uá (PÀà€þ` € ðÀ@ÿü0ÀÀ0ð€ÿ ð€@ÿ0P €øà€þ8`Aƒ&T¸aC‡!F”8‘"C¨X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±";ŠT'p A€ÿ 0€@þø@ÿ `à?ø@ þ€@0€ÿ ü` €`   €ÿ à€øOà@‚ D˜PáB† >„¸À"FŒ1bĈ#FŒ1bĈ#FŒ1¢@ª8 À€@ À@ ` üÀ?  ðŸÀ <ˆ0¡Â… :|1¢D‡80ñ€Õ Hà?  ÿ€@ÀÀ ` @@ ø` @ €@øOà@‚ D˜PáB† >„QâDŠ 8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì(¨X1"€Š+V¬X±bÅŠ+8pà@ÅŠ+V¬X±bÅŠ+V¬X±bE*V¬X±bÅŠ+V¬X±â@  bÅŠ+V¬X±bÅŠ+V¬Xq €T¬X±bÅŠ+V¬X±bÅŠ+Vÿ¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X‘E+FP±bÅŠ+V¬X±bE¨X±bÅŠ+V¬X±bÅŠ+V¬(@ÅŠ+V¬X±bÅŠ+VàÀü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌèÀ4jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jœÈŽ"5jÔ¨Q£F5pàÀ5jÔ¨Q£F5jÔX€F5jÔ¨Q£F8p€"5jÔ¨Q£F5jÔøÀ4jÔ¨Qÿ£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jœÈŽ"€Õ Hà? 4xaB… 6tøbD‰)V´xQ €`Ĉ#FŒ1bĈ#FŒ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E…8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ã?ШQ£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨q";ŠªOà@êþ8`Aƒ@„PÀÿ,hð „ 2lèð!Ĉ'&pàÀŠ)R¤H‘"EŠ)R¤H‘"EŠ TžÀÕü'pà@ÿ$HA‚@ A‚ € A‚ÿøOà@‚ D˜PáB† >„1"€H` :€ð¨à? 4x„QâD8@‘"EŠ)R¤H‘"EŠ)R¤Hq"€êÂ8P :€ÿ 0À?ÿðÀ@ÿü0€@€@ü €@ÿ 0pàÀø` €øà€þà€þ8`Aƒ&T¸aC‡!BpàÀˆ TžÀÕü'P þ` €ø` ð€@ ðÀ@ €@ €` €øOà@‚ D˜PÿáB† >„QâDŠ 8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì(PÀþ8€ð€@ü` þ  À@ @ Àþýøïß?ÿ H° Áƒ*\Ȱ¡Ã‡#JœøÀ(R¤H‘"EŠ)R¤H‘"EŠ)N0 : ü'p ü  €@` €ÿ €@ ÿ 0P À@ à€þ8`Aƒ&T¸aC‡!BpàÀˆ ¨Nà@‚ÿ À@`à?€ÿø@ @ €þ0P `à?þ@ ` €ÿ$XÐàA„ .dØÐáCˆ%N¤ØÀ*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬ÈŽ"€ŠT¬X±bÅŠ+V¬X±â?ÿ¨X±bÅŠ+V¬X±bÅŠ+V¬(@E…¨X±bÅŠ+V¬Xq"€PP±bÅŠ+V¬X±bÅŠ+V¬8À*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬ÈŽ"€ŠT¬X±bÅŠ+V¬X±â?¨X±bÅŠ+V¬X±bÅŠ+V¬(@E…P±bÅŠ+V¬X±"E€8pà? ,à? 4xaB… 6tøbD‰)V´xcF‡8 Q£F5jÔ¨Q£F5jÔ¨Q£ÿF5jÔ¨Q£F5jÔ¨QãDvhÔ¨Q£F5jÔ¨± €hÔ¨Q£F5jÔ¨Q£ÆŠ4jÔ¨Q£F5j„àÀhÔ¨Q£F5jÔ¨Q£Æ8 Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨QãDv ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8p#FŒ1bĈ#FŒ1b¼` @uøOà@‚ D˜PáB† >„QâDŠ-*pàÀŠ.^¼xñâÅ‹/^¼xñâňÿ8pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^4ÈŽ"€êÂ8P :€ÿ€ A‚(ðß?ÿ H° A (À Aÿ H° Áƒ*\Ȱ¡Ã‡#JœxÀ(R¤H‘"EŠ)R¤H‘"EŠ)N0P@x TðŸÀ ( `Á‚@ @€ÿ€à?ÿ H° Áƒ*\Ȱ¡Ã‡#Jœ¸À( H‘"EŠ)R¤H‘"EŠ)RœàÀÿ H° Áƒ*\ÿȰ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(SªdGÀ@uá (PÀ8pàÀøÀÀøÀÀ(ÀÀÿøOà@‚ D˜PáB† >„Qâă8@‘"EŠ)R¤H‘"EŠ)R¤Hq"€êÂ8P :€ÿ 0p @8pàÀ ü`àÀÿ à? 4xaB… 6tøbD‰8pàE)R¤H‘"EŠ)R¤H‘"EŠ8pà? 4xaB… 6tøbÿD‰)V´xcF9vôødH‘#I–4yeJ•ì(¨ <ªøO @8p @ÿ8pàÀÿ8p @8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JœxÀ(R¤H‘"EŠ)R¤H‘"EŠ)N0P@x TðŸ@` @8p €ÿ 8ð€ü'p Á‚"L¨p!ÆBŒ(qâB €"EŠ)R¤H‘"EŠ)R¤Hq"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠÿ/b̨q#ÇŽ?‚ )r$É’&O¢L©’EÕÁ¨Nà@xêþ(€þà0ð€ÿü@ 0þ0€ÿ @ øÀ@øOà@‚ D˜PáB† >„Q"B˜8qâĉ'Nœ8qâĉ'Nœ81"€êàT'p „QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;ŠªOà@êþ(€@ÿ Àÿ? 0ð€þ` €ø` €øà€øÀ?ü0À?ü'p Á‚"L¨p!ÆBŒ(!€Lœ8qâĉ'Nœ8qâĉ'NœÀ@uá (PÀ` €øà€@ €ÿ ü` €øà€þ8`Aƒ&T¸aC‡!F”8± €P@‘"EŠ)R¤H‘"EŠ)R¤8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGÿA†9’dI“'Q¦TÉŽ"€Õ Hà?üð€@ÀÀþ0À?0ÀÀ    þ8`Aƒ&T¸aC‡!F”ˆÀ&Nœ8qâĉ'Nœ8qâĉ'NŒ` @uøOà@à (€ ÿ@ øOà@‚ D˜PáB† >„QâDƒ8@EŠ)R¤H‘"EŠ)R¤ÿH‘âDøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;ŠTªÜ@¥J•*8pà€J•*UªT©RåE*UªT©R%F @¥J•*UªT©r €¨T©R¥J•*UªT©R¥J•*UªT©R¥ÊŠì(P©ò"¨T©R%CP©R¥J•*Uª¼@¥J•*UªÄàÀ¨T©R¥J•*UpàÀ•*UªT©R¥J•*UªT©R¥J•*UªTY‘E*UªT©RåIP©R¥J•*Uª¼@¥ÿJ•*UªÄàÀ¨T©R¥J•*UpàÀ•*UªT©R¥J•*UªTI%•TRI%•TR©"€Øü'p Á‚ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/>pàÀŒ1bĈ#FŒ1bĈñ"€Õ Hà? 4xaB… 6tøbD‰)V´¨À(¸xñâÅ‹/^¼xñâÅ‹#8pàÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xÑ ;Š.^¼xñâÅ‹/^¼xñ!€\¼xñâÅ‹/^ÿ¼xñâÅ‹¨ <ªøOà@‚PP €‚   @  P À,h @ü'p @ÿ 8Á$€à@ÿ H° Áƒ*\Ȱ¡Ãƒ8ð° €‡>|øðáÇ>|øðáÇ>|ø0!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©’E*UªT©RåIP©R¥J•*Uª¼` :€ð¨à? (À@ü` @`ÿàÀøÀÀþ8`Aƒ  €ƒ 8XÀA„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;ŠTªT©R¥Ê“ÿ8 R¥J•*UªTyÀ@uá (PÀÿ ðÀ?€ üà€þø÷À¿ÿüðïß?ÿ üà?  (À@ÿüðÀ?ÿ(ð€ÿþýðŸ@ðÀ@ÿü@ Àþøà€ÿüû÷À?ÿþýðo Àþ8`Aƒ&T¸aC‡8pàaAÕ„'p @uÿ H° Á‚ìþcwðàÁì ²;øÝÁì²;x° »ìdðŸÀ <ˆ0¡Â… :ÿ|1¢Ä‰ 8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•ì(€À <ˆ0¡Â… :|1¢Ä‰+Z¼ØðÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jD` :€ð¨à?0À?üðÀ@@ €þà€ 8ð€ ðÀ?ÿüðÀ@þ0ð€þà€  €@ ðÀ@ÿ à? 4xÿaB… 6txÀ0P<€ê„§à?Ù±c';ìØ±ÈŽ;ìØ dÇŽ@vþcÇN ;vì²cÇŽ@vÿرÈN »ìØ dÇN ;vì²ø@vìØ d÷»ìرÈî»dðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•ì(P©R¥J•*O8pà€J•*UªT©RåEÕ„'p @uÿ @ €þà€ÿø@ à€þà€þ0p €@ €þøÀÀø` €þà` €ø` €þ8`Aƒ&T¸aC‡8pàaAÕÁ¨Nà@xêþ(Ý@vÿØ d7Ý@ìþ±Èn »ì²cÇN »Ùýc7Ý?vì²ûÇN ;vÙýc'Ý@vÿ²(à?ÙýcÇN »ì²ûÇî»dðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8pà? ÿ4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•ì(P©R¥J•*O8pà€J•*UªT©RåEª8 Àÿ@ ` @0@ €ÿ `àÀ` €`à?À?@ (À@ à? 4xaB… 6txÀ0P@x TðŸ@ì d' ;ÿýÈî»ÿ üÇîÿß¿ÿØýûÇîß¿Ùýc÷ïß?vÿØýû÷Ý?vÿþ±û÷ï»ìþýc÷ïß?vÿØü'pà?vìØ±ûÇn »Ù øÝ?vÿ HP ;€ÿ$XÐàA„ .dØÐáCˆ%NlàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(SªdG€J•*UªTyÀTªT©R¥J•*/P©R¥J•*18pàEÕ„'p @uÿ Èn @vÙ Èn »ì²(ÝÀì²Èn »ì²ûÇn »ÿì²Èî;ì²ûÇnà@vÙýc7Ý?v²ûÇnàÀÙü'p Á‚"L¨p!ÆBŒ(qbCøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;ŠTªT©R¥Ê“8 R¥J•*UªTy€J•*UªT‰À(¨ <ªøO @vÙýc'Ý@vÿØ d÷@vÙýc7;ì²Èî»ìþ±Èî;ì²ûÇN »ìþ±8Ý@vÿØ d÷Ý@vÿØýc7pàÀìþÿ8`Aƒ&T¸aC‡!F”8±!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©’E*UªT©RåIP©R¥J•*Uª¼@¥J•*UªÄàÀ ¨Nà@‚ÿ ÈŽ;ì²cÇn ;vìØ d';vÙ±c÷@vÙ±cÇî;vìØ d7Ý?vÙ d÷Ý@vìØ d7pà?vìØ±ûÇn ;ìØ±Èî;ì²Èn ;€ÿ$XÐàA„ .dØÐáCˆ%NlàÀÿ H°ÿ Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(SªdG€J•*UªTyÀTªT©R¥J•*/P©R¥J•*18pàE*/²SéCv*UªT9ÀTªT©R¥J•*UªT©R¥J•*UªT©ReEv¨T©R¥J•'8p@¥J•*UªT©ò"•*UªT©#€P ò";•Ù)d§R¥J•$8p@¥J•*UªT©R¥J•*UªT©R¥J•*UVdG€J•*UªTyÀTªT©R¥J•*/P©R¥J•*18pàEÿ*UªT©R¥J•8p@¥J•*UªT©R¥J•*©¤’J*©¤’J*©T@ìþ8`Á‚T'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâE8€#FŒ1bĈ#FŒ1^€#FŒ1bĈ#F†8@À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ã?ШQ£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨q";ŠªOà@êþ(ÀÀÿ `àÀÿü'p Á‚"L¨pÿ!ÆBŒ(q"ÅŠ8pÀ¢E‹-Z´hÑ¢E‹-Z´hñ ‹-Z´hÑ¢E‹-ZdàÀ TžÀÕü'p Á‚"dÇŽ;„²+@ÿ H°`AvÙ$Èà? 4xaB… 6tøbD‰)2pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+²£` :€ð¨à?  @Á‚ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-Z´hÑ¢E‹ÿ-Z´hñ ‹-Z´hÑ¢E‹-ZdàÀ TžÀÕü'p Á‚ ²;øAvdWAvd÷ÝÁ‚ìþ8`Aƒ&T¸aC‡!F”8‘âB¨X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±";ŠªOà@êþ8`A,(À,hð „ 2lèð!Ĉ'R¬øÀ,Z´hÑ¢E‹-Z´hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E†8@À@uá ÿ(PÀ,h° »ƒÿØ„QâDŠ8pà€E‹-Z´hÑ¢E‹-Z´hÑâA8`Aƒ&T¸aC‡!F”8‘bE‹8ðŸÀ 0P<€ê„§ÿà?Ù±c';ìØ±ÈŽ;ìØ dÇŽ@vþcÇN ;vì²cÇŽ@vÿرÈnà?vÙ±c'Ý?vì²cÇN »ì8À,hð „ 2lèð!Ĉ'R\àÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VdGÀ@uðª8ž:€ÿ ðþø@ €ðŸÀ <ˆ0¡Â… :|1¢Ä‰+>pàÀ‹-Z´hÑ¢E‹-Z´hѢŃ,Z´hÑ¢E‹ÿ-Z´h‘!€P0P<€ê„§à?Ù d÷@vÙ Èî;ì²ûÇN ;vì²8Ý?vÙýcÇN »Ù ðŸÀìþ±c'Ý?vÙýc÷ÝÀ²øOà@‚ D˜PáB† >„QâDŠ 8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì(¨ <ªøO @ÿ ðÀ? 8p €ÿ$XÐàA„ .dØÐáCˆ%N¤Xñ!€X´hÑ¢E‹-Zÿ´hÑ¢E‹-`Ñ¢E‹-Z´hÑ¢E‹ 8p€"€êÂ8P :€ÿ d7P ;Ù øïß@vÿØýû7Pà?vÿþýûÇîß?vÿþýÈî»ÿþ±ûÇîß¿ìþ±øOàÀìØ±c÷Ý@vÿ²(ð»ìþ8 @vÿ H° Áƒ*\Ȱ¡Ã‡#JœHq!€T¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X‘EÕ„'p @uÿ à€þø@ €ðŸÀ <ˆ0ÿ¡Â… :|1¢Ä‰+>pàÀ‹-Z´hÑ¢E‹-Z´hѢŃ,Z´hÑ¢E‹-Z´h‘!€P0P@x TðŸ@ì d'Ý@ì²ûÇN »Ù üÇN ;ì²ûÇn »ì²ûÇnà@vÙýc7Ý?v²ûÇnàÀÙü'p Á‚"L¨p!ÆBŒ(q"Å…8P±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bEv TžÀÕü'P €øà8Àÿ,hð „ 2lèð!Ĉ'R¬øÀ,Z´hÑ¢E‹-Z´hÑ¢E‹°hÑ¢E‹-Z´hÑ¢E†8@À@uá (PÀ²Èî;ì²ûÇn »ì²Èî»ìØ d'Ý@vÿØ d÷Ý@vÿØ Èn »ì²ûÇn »ìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡#JœHq!€T¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X‘Eª8 Àø` €ÿø@ à? 4xaB… 6tøbD‰)V|àÀ-Z´hÑ¢E‹-Z´hÑ¢E‹X´hÑ¢E‹-Z´hÑ"C ` @uøOà@vìØ d7;vÙ±cÇN ;ìØ±ÈŽ»ì²ÈŽ;vÿرcÇN »ìþ±8ð;vìØýc7@vìØ d÷@vÙ d7À,hð „ 2lèð!Ĉ'R\àÀ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+VdGÿ@E…¨X±bÅŠ+V¬X±âC¨X±bÅŠ+V¬X±bÅŠ+V¬(@ÅŠ+V¬X±bÅŠ+VàÀT¬XQ »ŠÙ1dW±bÅŠ+V¬X±âB¨X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±";Š*. @ÅŠ+V¬X±bÅŠ!8pà@ÅŠ+V¬X±bÅŠ+V¬X±bE*V¬X±bÅŠ+V¬X±â@8pàÀ,X€Aƒ 4hРAƒÙ4hРAƒÙ$Èà? ÿ4xaB… 6tøbD‰)2pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+²£ bÅŠ+V¬X±bÅŠ+JpàÀŠ+V¬X±bÅŠ+V¬X±bÅŠT¬X±bÅŠ+V¬X±bÅ8@@ÅŠ+V¬X±bÅŠ+V¬X±â@¨X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±";ŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâE8€ÿ#FŒ1bĈ#FŒ1^0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàEª8 À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒÿ8p@£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Æ‰ì(¨ <ªøO @8pàÀ (@€€8p @  @ÀÀøOÀÀ 8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#*pàÀ‰%J”(Q¢D‰%J”(Q¢Dÿ‰%F0P@x TðŸÀ „QâDŠ8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Åì(¨„QâDŠ 8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Åì(¨„QâDŠ 8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Åì(¨@uÂSðŸ@0pà?ÿ0PÀ? (@€€ÿ ø'@ þ (àŸ€ (@€€ ø'@€@ÿ ðOÀ@ÿ0ÿpàÀþ8`Aƒ&T¸aC‡!FLàÀ%J”(Q¢D‰%J”(Q¢D‰%JŒ` :xÕ OÀ²Èî;ì²(Ý?vÙ d÷;vì²Èî;ì²Èî;vÙýÈN @€ÿd÷;ìþ±Èî»ì8À,hð „ 2lèð!Ĉ8p@¢@ÕÁ¨Nà@xêþ(Ý@vÿØ d7Ý@ìþ±Èn »ì²c'Ý?vÙ d÷;vì²ûÇn »ìþ±Èî»dðŸÀÿ <ˆ0¡Â… :|1¢Ä‰+pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÿØQ0P„q €H` @uøOà@vìØ d7;vÙ±cÇN ;ìØ±ÈN »ìþ±ÈŽ;ì d';vÙ dÇŽ»ì²ÈN »ìþ8`Aƒ&T¸aC‡!F”8‘bEƒ8`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hñ;Š,Z´øO€E‹0`Ñ¢E‹-ZDàÀ-Z´hÑ¢E‹-Z´hÑ¢E‹ÿX´hÑ¢Dv ÙY´hÑ¢E‹8pàE-Z´ÈŽ!;‹-Z´hÑ¢E‹#8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Åì(°hÑâ?- P€E‹-Z´h1!€X´hÑ¢E‹-Z´hÑ¢E‹-`Ñ¢E‹Ù)dgÑ¢E‹-²h €8pà? ,à? 4xaB… .d§]Æ 6lذaÆ 6lذaÆ8pà? 4xaB… 6tøbD‰)V´xcFÿ9vôødH‘#I–4yeJ•ì(P©R¥J•*O8pà€J•*UªT©RåE*UªT©R%F @¥J•*UªT©r €¨T©R¥J•*UªT©R¥J•*UªT©R¥ÊŠì(PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹8pàFŒ1bĈ#FŒ1bÄxÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZTàÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3þpàÀ5jÔ¨Q£F5jÿÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F'²£` :€ð¨à?0pàÀ`à@ðŸÀ <ˆðþðŸÀ <ˆ0¡Â… :|1¢D…80qâĉ'Nœ8qâĉ'Nœ8qbDÕ„'p @uÿ H° Áƒ²(à?²#øÁÙ ðŸÀ d'A‚ìþ8`Aƒ&T¸aC‡!FDàÀ¨ <ªøOà@‚ <Èá?vÙ!Èá@vÙ!Èÿà? 4xaB… 6tøbD‰)VàÀ-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÿ±£` :xðà©S„QÿbB˜8qâĉ'Nœ8qâĉ'Nœ81"€êÂ8P :€ÿ d7P ;Ù øïß@vÿØýû7Pà¿ÿØü'P ;vìØýc7Ý?vÿ²(ð;€ÿüÇŽ;vÿØ d÷ ;ÿ±ûÇà? dðŸÀ <ˆ0¡Â… :|1âA(À@uá (PÀ²(@€ì ü÷o »ìþý(ð»ÿØýû÷Ý?vÿþ±û÷ï»ìþ8;vìþ±Èî@vþc÷ÀÈà? 4xaB…ÿ 6tøbD‰)VàÀ-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÿ±£` :xðà©S„QâDŠÿ8pà€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Åì(PÀþ8ÿÀ?ð€0ð` ÿü À@ €@ €þ8`Aƒ&T¸aC‡!F”˜À&Nœ8qâĉ'Nœ8qâĉ'NŒ` @uøOà@vìØ d7;vÙ±cÇN ;ìØ±øÝ@ìØ±c÷;vì²ÈŽ;ìÿüÇŽ;vÿØ d';vÙýc'@vÙ dðŸÀ <ˆ0¡Â… :|1âA(À@€ê$ðŸÀìØ±Èn ;vì²cÇŽ@vÙ±c'@vÙýc7;v²(ðß¿ìþ d÷ïß¿ÿþ±ûÇîß?vÿþ±û÷Ý¿ÿØü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pÀ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑâ?vXŒÀ¢Å†°hÑ¢E‹-Z$àÀ-Z´hÑÿ¢E‹-Z´hÑ¢E‹X´hÑ¢Cv ÙY´hÑ¢E‹ 8pàE-Z´HCv-Z´hÑ¢E‹-6pàÀ‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÿØQ`1"‹PÀ¢E‹-Z´h± €X´hÑ¢E‹-Z´hÑ¢E‹-`Ñ¢E‹Ù)dgÑ¢E‹-Zt@8ðŸÀ ðŸÀ <ˆ0¡Â…  d§C‡:tèСC‡:tèСBøOà@‚ D˜PáB† >ÿ„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;ŠTªT©R¥Ê“8 R¥J•*UªTy€J•*UªT‰À(P©R¥J•*UªàÀ*UªT©R¥J•*UªT©R¥J•*UªT©²";ŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâE8€#FŒ1bĈ#FŒ1^0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàEª8 À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒÿ8p@ÿ£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Æ‰ì(¨ <ªøOà@‚ þ@ @€ÿ$(@Á‚ÿP° €ÿ$XÐàA„ .dØÐáCˆ%N¤(À*V¬X±bÅŠ+V¬X±bÅŠ+ 0P@x TðŸ@ü` @üà? 4xaB… 6tøbD‰)VüàÀ TžÀÕü'P €ÿ(ÀÀÿøOà@‚ D˜PáB† >„QâDŠ-^œàÀÿ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈñ!;Šªƒž:uðàÁSW@C@°À? `Ĉ#FŒ1NpàÀŒ1bĈ#FŒ1bĈñ"€êÂ8P :€ÿ$X€@ ðŸÀ <ˆ0¡Â… :|1¢Ä‰+8pàEÕ„'p @uÿ H° à? 4xaB… 6tøbD‰)V´xQ"€`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bÿĈ#Ƈì(¨„QâDŠÿ8p bÅŠ+V¬X±bÅŠ+V¬X±¢@ÕÁ¨Nà@xêþ(À?ÿàÿ 8p €ÿ$XÐàA„ .dØÐáCˆ%N¤XÀ(¨@uÂSðŸ@þø€@ÿø`àÀü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/JpàÀŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÿ1bÄøEÕÁ¨Nà@xêþ(€@ü À?` ü0À?ü0À?à? 4xaB… 6tøbD‰)þpàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ T :á©øO @ÿà€8pà@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±"€P0P<€ê„§à?ü@ €þ`àÀü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/JpàÀŒ1bÿĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bÄøEÕÁƒO:xðà©+@ @þûàß¿þýðŸÀø` €øÀ¿ÿüðŸÀøOà@‚ D˜PáB† >„QâDŠÿ8p bÅŠ+V¬X±bÅŠ+V¬X±¢@Õ„'p @uÿ à€þø@ €ðŸÀ <ˆ0¡Â… :|1¢Ä‰+8pàEÕ„'p @uÿ à€þø@ €ðÿŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼(À0bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈãCv T„QâDŠÿ8p bÅŠ+V¬X±bÅŠ+V¬X±¢@ª8 Àø` €ø@ à? 4xÿaB… 6tøbD‰)VpàÀŠT'p A€ÿ ðÀ@ÿð€@0À,hð „ 2lèð!Ĉ'R¬hñ¢DÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÙQ€£D `Ĉ#FŒ1NpàÀŒ1bĈ#FŒ1bĈñ"Œ0€#FŒ1bĈñ!€P€ñ †0bĈ#FŒ1bÄˆÑ €`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÿ1bĈ#Ƈì(Àˆq"…0bĈ#FŒ)8pàFŒ1bĈ#FŒ1bÄxF„Àˆ#FŒ1bÄÀ(Àˆ€B1bĈ#Fa„F€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©’E*UªT©RåIP©R¥J•*Uª¼@¥J•*UªÄàÀ¨T©R¥J•*UpàÀ•*UªT©R¥J•*UªT©R¥J•*UªTY‘Eª8 À,hð „ ÿ2lèð!Ĉ'R¬hñ¢@Àˆ#FŒ1bĈ#FŒ/PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹ 8p€"€Õ Hà? 4xaB… 6tøbD‰)V´xcÆ8 Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨QãDv TžÀÕü'p Á‚ÿ P À `Á(XÀ,hð „ 2lèð!Ĉ'RàÀ+V¬X±bÅŠ+V¬X±bÅŠ¨ÿ <ªøOà@‚0@Á‚ ,X°à@ øOà@‚ D˜PáB† >„QâB˜øÀ@uá (PÀ,  ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼èÀ0bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈãCv T Cÿ1bĈ#Ɔ8@À@uðàÁS§„ÿQâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;Šªƒž:uðàÁSW€@ €Aü0À? ðC*UªT©ò€¨T©R¥J•*U^0P„QâDŠÿ8p bÅŠ+V¬X±bÅŠ+V¬X±¢@Õ„'p @uÿ ` €ø` ø@ €þÀ?ðÀ@ÿ ð€@à? 4xaB… 6tøbD‰ ÿ8p`â?Õ„'p @uÿ ` €ø` €8À,hð „ 2lèð!Ĉ'R¬hñbCÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÙQ0 : ü'p À@ÿ(ðß?ÿþýðïß@ÿþ ü÷ïß@ÿüûàß?ÿþø÷ï€ÿ$XÐàA„ .dØÐáCˆ%N¤øÀ*V¬X±bÅŠ+V¬X±bÅŠ+ 0 : ü'p ÿðŸ@þøàà` €ÿ$XÐàA„ .dØÐáCˆ%*pàÀ‰ÿ ¨Nà@‚ÿ @ ü €@ ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ØÀ0bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈãCv`Ä(C1bĈ#FŒ8p#FŒ1bĈ#FŒ1b¼#F0ÀFÿŒ1bĈ±!€P€‘!†0bĈ#FŒ1bĈñ€`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Ƈì(Àˆq"…0bĈ#FŒ)8pàFŒ1bĈ#FŒ1bÄxF‹€!…0bĈ#FŒ8p€"Œ (à? 4xaB… 6tøbD‰)V´xÑ!€`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Ƈì(Àˆ#FŒ1bĈ#Æÿ8€#FŒ1bĈ#FŒ1^€#FŒ1bĈ#F†8@FŒ1bĈ#FŒ1bÄ8À0bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈãCv`Ĉ#FŒ1bĈã@Àˆ#FŒ1bĈ#FŒ/PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹ 8p€"€Õ Hà? 4xaB… 6tøbD‰)V´xcÆ8 Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨ÿQ£F5jÔ¨QãDv8`Aƒ&T¸aC‡!F”8‘bE‹#8pà? 4xaB… 6tøbD‰)V´xcF TžÀÕü'p Á ,(@A(X@Á‚ `Á‚ P° €ÿ$XÐàA„ .dØÐáCˆÿ8pà€DªOà@êþ8à?  `Aÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8p#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FÿŒ1>dwà 4xaB… 6tøbD‰)V´x1"À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%»‹H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔˆÀ@uð੃O„À"0P@x TðŸ@øà€þà8À,hð „ 2lèð!Ĉ'R¬hñ"BÀˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÙaĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈã@ª8 À@ €` à ÿ` €ÿð€@@ øOà@‚ D˜PáB† >„À"0 : ü'p €ð€@ À@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8p#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1>d‡#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ`ĈcC `Ĉ#FŒ 8p€"Œ0ÿ€#FŒ1bĈ#FŠ8€#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ²Ãˆ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Æ0bĈÑ!…0bĈ#F…8@F‰Àˆ#FŒ1bĈcEÀˆ#FŒa„Fa„Fa„Fa„Fa„Fa„Fa„Fa„FÄà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I&P²dÉ’%K–ŒàÀ”,Yÿ²dÉ’%K–4àÀ%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’Ù•,Y²dÉ’%K–,Y²dÉ’%K–,™À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZTàÀ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3þpàÀ5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F'²Ó¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ˜À@uá (PÀ@p ‚ à? 4xáAÿ ÿH˜0a„ &L˜0a„ &L˜0!€$L(À@uá (PÀ  @ÀÀ8PÀ?(PÀÀ  @€€8PÀÀ ðOÀÀ(àŸ€øOÀÀÿ øOà@‚ D˜PáB† >„Q"CøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;•*UªT©R¥J•*UªT©R¥ÊªƒO„1"€H` @uøO @øO€@ ø'@ €0P€€ÿ ø'@  (@ þ (` ü @€ (`à?(@À? àŸ€þ  @€@ P€@0PÀ,hð „ 2lèð!Ĉ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*Ù©T©R¥J•*UªT©R¥J•*U r"P©R¥J8@€J•¨l(€¡•*UªtàÀ*UªT©R¥J•*UªT©R¥J•*UªT©²";•*UÿªT©R¥J•*UªT©R¥ÊT>P©R¥Ê8@€J•¨t(@¡•*Uª|àÀ*UªT©R¥J•*UªT©R¥J•*UªT©²";•*UªT©R¥J•*UªT©R¥ÊTªT©R¥JŒ8@€J•*UªT©Rå@P©R¥J•*UªT©R¥J*©¤’J*©¤’J*U;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$™À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZTàÀ ¨Nà@ÿ‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3þpàÀ5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F'²Ó¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ˜À@uá (PÀ,h @ü'p @ÿ 8 þ8À?ÿ8pà@øÀ,hð „ 2lèð!Ĉ 8p@¢@Õ„'p @uÿ H°`Av 4XA‚ìþ8`Aƒ&T¸aC‡!F”8‘bE‹ ÿ8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼hÝÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^D` :xðÔÁƒ§„QâDŠ-*pàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢Av/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼x!€êàT'p „QâDŠ-*pàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢Av/^¼xñâÿÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼x!€‹ \¼À? \¼xñâÅ‹ 8pàEÙ]DÈî ;†ì.^¼xñâÅ‹/^¼¨À.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE„.&pñ"C@!€‹/^¼xñbA @";vìØü'p Á‚²cÇŽÝAìdðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z\àÀÿ/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâEƒì.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ"B/^¼xñâÅ‹/^¼àÀ\¼xñâÅ‹/^¼xñâÅ‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼hÝÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^D` @uøOà@‚ D˜PáB† >„QâDŠ-*pàÀŠT'p A€ÿ$ÿXÐàA„ .dØÐáCˆ%N¤XÑâEŒÿ8pà€F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£FÙiÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÌ` :€ð¨à? ,À ÁðŸÀ(X°`Á‚P° €ÿ$XÐàA„ .dØÐáCˆ8pà€DªOà@êþ8`Á‚ì dg° »Ù ðŸÀ <ˆÐ »„ÿØü'p Á‚"L¨p!ÆBŒ(q"Å…8P±bÿÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bEv+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ T„Ñ!€H` :xÕ OÀ²cÇŽ@vìØ dÇî»Ù±c';vì²cÇN »ìþc7;vٱȎ;ì²ûÇŽ@vìØ dÇŽ@vÈà? 4xaB… 6tøbD‰)*pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+²«X±bÅŠ+V¬X±bÿÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V` :xÕ OÀðÀ@ÿðÀ@ÿà@þûàß¿þø÷À¿þýûà€ÿüûàß?ÿüû÷À?ÿþýðÀà? 4xaB… 6tøbD‡8 Q €êàT'p „QâDŠ 8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ¨„QâDŠ 8p bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠì*V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÿÅŠ+V¬X±bÅŠPÀþ8` €@ €þ8ð` @ ` ü €@ ðŸÀ <ˆ0¡Â… :|1¢C(À@€ê$ðŸÀìØ±c';vÙýÈN Àÿ²û7Ý¿ÿþûÇî»ÿþýc÷ïß¿ÿþýøïß¿ÿþýøÝ?vÿþýøïß¿ÿþ±û÷Ý¿ìþýc÷ïß?vÿ H° Áƒ*\Ȱ¡Ã‡#JœHQ!€ÿT¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X‘]ÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±â@+V¬¸C+V¬X±bEŠ8@@Åì*V¬8‘Cv+V¬X±bÅŠ+*pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+²«X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V bÅŠP bÅŠ+V¬XÀ(ÿÈŽ;€ìþ8`Aƒ&T¸¡Av Ù5lذaÆ 6lذaÆ 6pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U²S©R¥J•*UªT©R¥J•*Uª@¥J•*UªÄàÀ¨T©R¥J•*UpàÀ•*UªT©R¥J•*UªT©R¥J•*UªTY‘J•*UªT©R¥J•*UªT©Rå@ª8 À,hð „ 2lèð!Ĉ'R¬hQ!€P0 : ü'p Á‚"L¨p!ÿÆBŒ(q"ÅŠ/bÌøÀ4jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jœÈN£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨QcFÕ„'p @uÿ H° Áþ8xð @øOà@‚ D˜PáB† >„QâÄ…8@À@uá (PÀ,X ;þ(ÝÀüÇn @v dÇŽ;€ÿ$XÐàA„ ²SÈN¡B… *T¨P¡B… *T¨P¡B…8pà? 4xaB… ÿ6tøbD‰)V´xcF9vôødH‘#I–4yeJ•ìTªT©R¥J•*UªT©R¥J•*¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;•*UªT©R¥J•*UªT©R¥ÊªƒPÀðÔü'P €þàü À?ü0À? ðÀÀøOà@‚ D˜PáB† >„QâD…8@À@uðª8ž:€ÿ d7Ý?vÙýc' ;ÿýc÷ï»ÿÿýc÷À²ûÇn »ìþ±Èî»Ù d÷@vÙýc7Ý?vÙýcÇN »ì²ûÇŽ@vÿØ d7pàÀìþ8`Aƒ&T¸aC‡!F”8ñ €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©’J•*UªT©R¥J•*UªT©Rå@ÕÁƒO:xðà©+  €þàþà€þ€@ÿü'p Aþ8`Aƒ&T¸aC‡!F”8Q!€P0ÿP„q €H` :€ð¨à?ÿ dÇŽ]A‚ì $È®`Avÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‰8pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^4ÈîâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/"0P„QâDŠ-JpàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢Av/^¼xñâÅ‹/^¼xñâÅ‹ÿ/^¼xñâÅ‹/^¼x!€êàT'p „QâDŠ-*pàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒÿ8pà€F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£FÙiÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Fÿ5jÌ` :€ð¨à? ,ÈÎ`Av ²û@ÿ H° Áƒ ²Kø]„ &L˜0a„ &L˜0a‚80¡@Õ„'p @uÿ H° A ƒ` €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑ¢A¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/dwñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹¨„‘ €H` @uøOà@þø@  ðÀ@þøà` €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbA¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿ/^¼xñâÅ‹/dwñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹°ÈîâÅ‹ Ù1dwñâÅ‹/NpàÀŠ.þpq"†.^¼xñâÅ‹/^¼XÀ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE„$²cÇŽÝÅ‹²SÈîâÅ‹/^¤àÀ\üà"E \¼xñâÅ‹.ºè¢‹.2 øOà@‚ D˜PáB† >ÿ„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%;•*UªT©R¥J•*UªT©R¥ÊTªT©R¥JŒ8@€J•*UªT©Rå@P©R¥J•*UªT©R¥J•*UªT©R¥J•Ù©T©R¥J•*UªT©R¥J•*U0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàEª8 À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒÿ8p@£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£Æ‰ì4jÔ¨Qÿ£F5jÔ¨Q£F5jÔ¨Q£F5f0P@x TðŸÀ à  P À,ø ÿýðŸÀ <8Bþ8`Aƒ&T¸aC‡!FàÀ¨ <ªøOà@‚ 0h° @ ƒü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pàÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xÑ »‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ÿ/^¼ˆÀ@uðàÁS§„Q €H` :xðà©S„ñ!€H”(Q¢D‰H”H€D‰% Q¢Äþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’";–,Y²dÉ’%K–,Y²dÉ’åCÕÁƒO:xðà©+(` ‰ ( ¡… P(€¡ÿ–,YŽpàÀ–,K@ €eH,`É’%K–,Y²dÉ’%K–,Y²dÉ’%K–*Ù±dÉ’%K–,Y²dÉ’%K–,¨„Ñ!€H”(Q¢D‰H”H€D‰% Q¢Äþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹r";–,Y²dÉ’%K–,Y²dÉ’åCÕÁ¨Nà@xêþ8P€ü P€@ÿ ðOÀ?ü0p €þ  PÀ?ü0PÀ? PÀ@ÿü0pàÀþ8`Aƒ&T¸aC‡!FtàÀ%J”(Q"D% Q¢D‰H”(Q €ÿ$ÿXÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®”ÈŽ%K–,Y²dÉ’%K–,Y²dùÀ@uðàÁS§ QbA%J”x€D‰øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåʈìX²dÉ’%ÿK–,Y²dÉ’%K– T„QâDŠ-^pàÀ‹/^¼hÀʼn.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹Ù]¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE„H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8ðŸÀ <ˆ0¡Â… :|àáÆþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦Tÿ¹’eK—Ù½|ùòåË—/_¾|ùòåË—8`Aƒ&T¸aC‡!F”8‘bE‹ü'p Á‚"L¨p!Æxø°!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙÒeEv/_¾|ùòåË—/_¾|ùò%E€$XÐàA„ .dØÐáCˆ%N¤XÑâEÿ H° Áƒ*\Ȱ¡Ã‡>dàáÇ&ððáÇþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dÿI“'Q¦T¹r!;–,Y²dÉ’%K–,Y²dÉ’¥D€$XÐàA„ .dØÐáCˆ%N¤XÑâEÿ H° Áƒ*\Ȱ¡C‡>làáÇ&ððáÇÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r¥Bv,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–¬À2%–°dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%KìX²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,%` €eJ,#`É’%K–,ÿY²dÉ’%K–,Y²dÉ’%K–Ù±dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,YJÀË”XFÀ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,?²cÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²”€%–*°Œ€%K–,Y²ÄK,±ÄK,±ÄK,±ÄK,y;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙÒ$€–\¢à"—.]ºtéÒ¥K—.]ºtéÒ¥K—.]º ÉÎ¥K—.]ºtéÒ¥K—.]ºtÿéÒ¥K—.]ºtùK.Sp €K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]†dçÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºt %—*¸„À¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.A²séÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]:ЀK•\BàÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K— Ù¹téÒ¥K—.]ºtéÒ¥K—\rÉ%—\rÉ%—\r ÿ H° ÁƒH˜0a„ &Lx@„ &L˜À,hð „ 2lèð!Ĉÿ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*WdÇ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dùKX²À’"–,Y²dÉ’%K–,Y²dÉ’%K–,Y²d©‘K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’åC,`Éò–°dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%KìX²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,`)K–°¤€%K–,Y²dÉ’%K–,Y²dÉ’%K–,YfdÇ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÿéKX²à? 4xaB… ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r¥@v,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–°€%ËXRÀ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,1²cÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²l€å@,YÀ²"–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dy‘K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’eC,`Ér –°dÉ’%ÿK–,Y²dÉ’%K–,Y²dÉ’%Ë‹ìX²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,`IK–,Y²ÄK,±ÄK,±ÄK,±ÄK,±ÄK,±T@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË\ àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtùK—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéR!—ÿ¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.] dçÒ¥K—.]ºtéÒ¥K—.]ºtéÒÿ¥K—.]ºLÀ¥@.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.p)€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥@v.]ºtéÒ¥K—.]ºtéÒ¥K—.]rÉ%—\r !€ü'p Á‚"LHÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lé2#»—/_¾|ùòåË—/_¾|ùòåË—/_¾|ù$€—¼| àeE/_¾|ùòåË—/_¾|ùòåËÿ—/_¾|)ÝË—/_¾|ùòåË—/_¾|ùòåË—/_¾| ÀK^¾üà%E/_¾|ùòåË—/_¾|ùòåË—/_¾|)ÝË—/_¾|ùòåË—/_¾|ùòåË—/_¾|ùÀË^¾üàeE/_¾|ùòåË—/_¾|ùòåË—/_¾|ùÝË—/_¾|ùòåË—/_¾|ùòåË—/_¾|ùÀK^¾à¥E/_¾|ùòåK/½ôÒK/½ôÒK/½ôÒK/Äà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶ôÀå@ÿ.]àÒ"—.]ºtéÒ¥K—.]ºtéÒ¥K—.]º¤ÈÎ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºti€K‚\º,ÀåE ¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Bv.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥J ¸$À¥Ë‚\bp.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºt‰K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºt¹ÀA. pé² —@ —.]ºtéÒ¥K—.]ºtéÒ%—\rÉ%—ˆÀ,hð „ ÿ2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lIÀA. péÒ — 0€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]&dçÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]²`€K‚\º<À%Fÿ À¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.²séÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.Y(ÀeA.]à2#ƒ\ºtéÒ¥K—.]ºtéÒ¥K—.]ºté2!;—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’%€‚\ÿàÒ%B.-p€K—.]ºtéÒ¥K.¹ä’K.¹ä’K.¹äRB±øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–--À¥A.]"à’"¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥Bv.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒeK$ %—.p9€B.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºt©K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÙÀ@X À¥Ë„\B`!—.]ºÿtéÒ¥K—.]ºtéÒ¥K—.]ºTÈÎ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºt à€‚h À¥Ë„\>ÀB.]ºtÉ%—\rÉ%—\rÉ%—\rÉ%—\rI!€Øü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–ü .ÿpéR!—À —.]ºtéÒ¥K—.]ºtéÒ¥K—.]º\ÈÎ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtùÀ?\àÒ¥B.-€@.]ºtéÒ¥ÿK—.]ºtéÒ¥K—.]ºt¹ÝE€$XÐàA„ .dØÐáCˆ%N¤X1!À,hðà?€$XÐàA„ .dØÐáCˆ%N¤XÑâÅÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8`Aƒ&T¸aC‡!F”8‘bE‹ ü'p Á‚þ@à@‚ D˜PáB† >„QâDŠ-JøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%M–dW€ö$XÐàA„ .dØÐáCˆ%N¤X1!ÿÿ H° A‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/à? 4xaB… 6tøbD‰)V´x±!í H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹øOà@‚  = 4xaB… 6tøbD‰)V´(€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäHv´'p Á‚"L¨p!ÆBŒ(q"ÅŠ ü'p Á‚ hOà@‚ D˜PáB† >„QâDŠ-^,ÿà? 4xaB… 6tøbD‰)V´x±!€ö$XÐàA„ .dØÐáCˆ%N¤XÑâŃþ8`Aƒ´'p Á‚"L¨p!ÆBŒ(q"ÅŠ)øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MŽdG@{,hð „ 2lèð!Ĉ'R¬ØÀ,hP €ö$XÐàA„ .dØÐáCˆ%N¤XÑâŃþ8`Aƒ&T¸aC‡!F”8‘bE‹hOà@‚ D˜PáÿB† >„QâDŠ-^Là? 4(@{,hð „ 2lèð!Ĉ'R¬hÑ"€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒ¤Hv´'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼xÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ ´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/&pàÀ,h@{,hð „ ÿ2lèð!Ĉ'R¬hÑ"€þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“ ÙQОÀ <ˆ0¡Â… :|1¢Ä‰+6pàÀ,h@{,hð „ 2lèð!Ĉ'R¬hñâAü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/&ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼˜Àÿ H° Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢E‹øOà@‚ D˜PáB† >„ÿQâDŠ-^ĘQãFŽ=~RäH’%M‚dG@{,hð „ 2lØ€Cƒ:tèСC‡ 8pàÀ,X@{,hð „ °° .\¸P! €… € Ú8`Aƒ8( Ú8`Á‚8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{,hð „ °° .TÀB…Ø`áB…hÏž={Ú8`AìP°`A{,XÐÿ@´'p Á‚0àÀÿ H°`Aí H° Áƒ*\Ȱ¡C‡ððáÇ>|èÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“ÙQОÀ <ˆ0¡Â… :<`!€‡>|øð¡CøOà@‚ hOà@‚ D˜P!B.\(€… .ÀÂ…ÀÂ…@À@.ÀXh€8ðŸÀ <ˆ0¡Â… :|1¢Ä‰ÿ+Z¼ˆ@{,hð „ °páB,\¸pá@.\(,´@BÚ`!B°0!8pà? , = 4xaB… 6tøð €… B„"Dˆ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò#;ŠÚ8`Aƒ&T¸aC‚ P`!‡àСC‡"pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸páB,\ÿH€… €€,\€=°Ð 8pà? 4xaB… 6tøbD‰)V´x!€ö$XÐàA„ "`áÂ…X¸páÂ,\¸P X@BÚ`!B.€AøOà@‚ hOà@‚ D˜PáB† P€B <,  €‡>|øðá@øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%M~dG@{,hð „ 2l8@ÿAØ`€@ì 0àСC‡pàÀ€ÿ$X° €ö @ @  P @{€@€ ´gÏÞ@öìÙÀž½íÙ³7@{` سg ={íÙ#hÏÞ@€öÀ@€ÀìÙ#Àž=öì´go ={íÙhÏž@{ö´'p =€ÀìÙ#Àž=öì´gO ={öÚ³g ={öÚ³'О=öÿÚОÀö h@ 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"Bí €@€@@ @€öhÏž½ìÙ³7€={Ú³go €öÀ@°gÏA{öÚ³GО½í €@ì €@€=ì P ={س7О½öì ´gO ={íÙ³'О=öì ´go ½öÚ(О=öì ´7О@{ö°ÿgo @{ö´'p =hÏÞ@öìÙpàÀ€ÿ$X° €ö$XÐàA„ .dØÐ!A `€= °€@ À@ PÀÇ>|øP €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&?²£ = 4xaB… 6  ‚ì €= `€@Ø0€= P€C‡:thÀþ8`Á‚Ú8àÿ@`  Aì €‚Ø@ ö`{  ö°€=ì {@ ö(h{Àö°€=`{À°@Á‚PP ö°€=ì {Ø@ ö8О={íÙhO =öÚ³'О@{Ú8P €=ì`€8ðŸÀ <ˆ0¡Â… :|1¢Ä‰ÿ+Z¼ˆ@{€@ì $€=P{Àì`Àö°€=`Àí {ØÀö@Aì`‚Ø@ ö€= ` °€=ì Ø@ ö€=`Ø€=ì`PÐö€=Ø@ €üÿ'p Á‚´'p Á‚"L¨p!Æ(€ {`€@Ø €Aö `À@ððáÇ>´àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤Éì(hOà@‚ D˜PáB† í(  {°@ @Ú`Ï{öì `@{ P ={öìhO @í H° Áƒ*\Èp!€ü'p Á‚´'p ÁÀ@A{hO ÿ={íÙ(О@€ö @ ö8 =°€=ì` í ´goà@{Ú8Ð(О@{í ´'О=öÚ8О@{öì hOà@‚€@öÚhO =öì ´'ÐÞÀöÚ³gO ={Ú³'О={íÙhO =í (‚hÏž@{öì ´gÏ€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/"ОÀ {@ í P =öì ´go @{ÿÚ(Ø@à@€ö Àö°€=€´'О½í hOà@{  @ (О@{íÙ³'О½í ´gÏž@€ö$h€@ €@ì {À°€@ì { @ (О@{öÚhÏž@{ö8pà? , = 4xaB… 6t(@AØ0€=(Ð{öسgo {Úÿ( íÙ³g@{hOà@‚ D˜PáB† 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò#;ŠÚ8`Aƒ&T¸aC  À€ì  À€‚(À¡C‡:4àÀÿ H°`Aí Hp °€@PØ@ ö€=  {$€=ì`{@ (8Àÿö°€=`{€  @ °€=ì`ØÀ€@ @ °€= €  €8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{€@ì @ ö€=`€‚À `{ØÀ@A  @ °€@ÿì`   (X€` €@ì {À°€@ì { @ €=`pàÀ€ÿ$X° €ö$XÐàA„ .dØÐá@`À@öP€@ `@AððáÇ>´àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤Éì(hOà@‚ D˜PáB† (ÿ` {°@ €ì@ €ìÀ€(À¡C‡:<àÀÿ H°`Aí Hp °€@PØ@ ö€=`Ø@ °€=ì`Ø@ °@A{ØÀ°€=ì`ØÀ°€@ìP €@ì`{Ø@ ö°€@ì0ÿÀö°€=ØÀ@ØÀöàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹´'p ÁÀ@A`Ø@ ö€=`Àö°€=`À0{ØÀö`ØÀö €@ì {$€@`{ÿØ@ °€@ì`ö€=`Ø@  Ø@ ö€@øOà@‚ hOà@‚ D˜PáB† PÀ@ö `€@Ø €@Ø0€=PÀÇ>|øP €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&?²£ = 4xaB… 6$  ì@ @ €ÿ  @A:tèÐ!BøOà@‚ hO @00 í ´gÏÞ@ö ´gÏÞ@öì `Ïž@{öÚ³7€={íÙhO =öÚ³7€={öÚ³7€={íÙhÏž½öìÙ(О@{í ´7P ={íÙÀž=öìÙhÏž@{öÚ³go {öìÙ(О@{í ´7P ={íÙÀž=öìÙhÏž½ìÙ³7О={ÚhÏž@{íÙ³gO @{À@ @ ÿ€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/"О@` ` @ÚhÏž½í hÏž½íÙÀž=öì ´go {öÚ³'О@{í ´go {öì ´go {öÚ³'О={öÚ³gO ={íÙ³7P ={ÚhO ½íÙÀž=öìÙhÏž@{öÚ³7P ={öì ´go ={öÚhÏž@{Ú³go @{öÚhÏÞ@öì ´gO ={Ú³'О={Ú(О=öì ´gÀÿþ8`Á‚Ú8`Aƒ&T¸aC‡ €= 0` (àáÇ>|8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“ÙQОÀ <ˆ0¡Â… :|1¢Ä‰+6pàÀ€ÿ$X° €ö$XÐàAààÁƒ ààÁƒ„ÿQâDŠ-^D = 4x€ƒ8xðàÁƒhOà@‚ D˜PáB† >„Q"D8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hÑ"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&?²£ = 4xaB… 6tøbD‰)VlàÀÿ H°`Aí H° ÁОÀP°`Á‚ @Á‚ ,X°`Á‚P°`Á‚ ,X°`ÿA´'p Á‚"L¨p!Ã8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{,hp @´'p Á,X°`Á‚ОÀ <ˆ0¡Â… :|1¢Dˆ4pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑ¢EøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%M~dG@{,hð „ 2lèð!Ĉ'R¬ØÀþ8`Á‚Ú8`Aƒÿ&T¸aC‡!F”8‘bE‹8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"Bí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8pà? , = 4xaB… 6tøbD‰)V´hÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“ÙQОÀ <ˆ0¡Â… :|1¢Ä‰+6pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâŃ8ðŸÀ <ÿˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{,hð „ 2lèð!Ĉ'R¬hñbBøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-ZpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäGv´'p Á‚"L¨! °páÂ… `€…( = €= @à@{ö´'p Á‚"pàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâÿŃ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{,hð „ 2lèð!Ĉ'R¬hñbBøOà@‚ hOà@‚ D˜P!B`áÂ… X¨{,\¨€… @{,T€="pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäGv´'p Á‚"L¨! .ÀÂ… °0!XH€…ö0ÀÂ… àÀÿÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pà? 4xaB… 6tøbD‰)V´x!€ö$XÐàA„ .dØÐáCˆ%N¤XÑâÅ„8ðŸÀ ОÀ <ˆ0¡B„,\¸P .\8€…  `á„`áB,\àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤Éì(hOà@‚ D˜P!B.\(€… `aB&ÿ`¡= °paB8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñâAøOà@‚ D˜PáB† >„QâDŠ-^D = 4xaB… 6tøbD‰)V´x1!€ü'p Á‚´'p Á‚"L¨! .ÀÂ… `áÂ…X¸P!X¸p 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò#;ŠÚ( ÿ€@í (О={سgo {ö ´gÏÞ@í €=€`Ïž=‚öì ´g ={Ú8€@€ ´go =öì hO ={íÙОÀö@ @Ú³7О@{ö ´' =8€={öÚ³G€={íÙpàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâŃ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{ÿ,hð „ 2lèð!Ĉ'R¬hñbBøOà@‚ hO @0@ @´'p @ @{öì `Ïž½ìÙ(О={´'p ö8€={öÚ³7О=‚öì hO @`€@€@ì` íÙÀž½öì ´gO ={íÙhÏÞÀìÙ³7€={ö ´go {öÚ³'О=öì ´gO ={íÙÀž=öÚ(О½ìÙÿhÏ€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&?²£ = @ ö€@ À(€=`ö°€@ `{ØÀ°€@`€‚ö€=`ö°€@ì €‚(hØ€=ì {À@Ú³gO =öì ´'О@{í ´gO ½öÚhÏžÿ=øOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^<àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/&pàÀ€ÿ$X° €ö$8Ø@ (H{  ö€=ØÀ(€=ì`{À€= Ú@ ö°€=ì €‚ØÀ°€@ÿì {$€@ì`€‚Ø@ ö€= {ØÀ(€=ì@{À8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4ù‘Eí Hp °€@PÐ@ÚhÏž@{ö ´' =€=€hO @ì`{Ø@à@{íÙ8О@€ö` @`Øÿ@ öÀÀ8Ø@ ö€=`€°€ÀöÚhO ½í ´gO =öìÙpàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤XÑâŃ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ@{,hð „ 2lèð!Ĉ'R¬hñbBøOà@‚ hOà@‚€= €‚ö(О@{öÚ³7P =í €@ì p ÿ@{`{ØÀ@ÚhÏÞÀö´'p =€@ hO =öìÙhÏÞÀöÚ³gO @{´€@ì`hO ={í hÏÞ@öìÙhÏž@{öì ´gO ={ÚhO ={öÚ³7p =öìÙpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäGv´'p ÁÀ@A`Ø@ öÿ(€@ìP ö°€=ìP  =  {À°€@   =`Ø@ ö€= ÚÀ°€=ìPØ` €ü'p Á‚سg  4xaB… 6tøbD‰)V´x±àþ8`Aƒ&T¸aC‡!F”8‘bE‹°gÏ@,hð „ 2lèð!Ĉ'R¬hñâÁüÿ'p Á‚´'p ÁÀ@A`Ø@ ö(€@ìP ö°€=ìP  @À@ {ÀöÀ@ @€‚€=ì`Ø@ ö(h0À°€=0€‚ pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãÿG!EŽ$YÒäGv´'p ÁÀ@A`Ø@ ö€=`Àö°€=`Àí {À°€@ì €‚€=`Ø@ ö€= ÚÀ°€=ì`Ø@ öàÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡ÿ#JœH±¢Å‹8pà? 4xaB… 6tøbD‰)V´x!€ö$XÐàA„ .dØÐáCˆ%N¤XÑâÅ„8ðŸÀ ОÀ {@ €=`Ø@ ö€=P{ØÀö€= {À@ì`{Ø€=`{Ø€ °€@ìP °€=ìÿ {ÀAì`{Ø€=`{Ø€ °À@øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%M~dG@{ € €hO ={ö ´7P ={ö ´go {öÚ³'О½ìÙhÏž@{í ´'О½ìÙ³'О½ìÙhÏž@{öì `Ïž½ìÙhÏž@{íÙhÏÞ@öÚ³'О={Ú³go ÿ{öÚ³'О@{öÚ³7P ½íÙhÏÞ@öì ´'О@{ö°gO ={íÙhÏ€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâE„Ú8`Aƒ&T¸aC‡!F”8‘bE‹8pàÀ,X@{ € €hO ={ö ´7P ={ö ´go {öÚ³'О½ìÙhÏž@{í ´'О½ìÙ³'О½ÿìÙhÏž@{öìÙhÏž=öì ´gÏÞ@öì hO =ö ´go {öÚ³go ={íÙhÏž@{öÚhO ={Ú³7P ={سgÏž@{öìÙhÏÞ@{öì hÏÞ@öÚho @{ö°gO ={ö8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4ù‘Eí H° Áƒ,ÀÁƒÀÁƒ„QâD…8@‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤ÿH‘"EŠ)2dGÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%M~dGÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%M~dGÀ@uá (PÀà€þà€ÿü0À?ü À?ü0p €ø@ þà€þ`àÀü'p Á‚"L¨p!ÆpàÀˆ TžÀÕü'p €8p @ €@ÿ ðÀ@ 0ðþ` €ÿþ8`Aƒ&T¸aC‡!F”8Q €P¤H‘"EŠ)R¤H‘"EŠ TžÀÕü'P ø` €ø` €øÀ@ ð€@ü0À?ÿü0À?ü0€@ ð€@ÿø` €þàüðÀ@ÿ0À?ÿ H° Áƒ*\Ȱ¡Ã‡8p"AÕ„'p @uÿ Èn »ì²ûÇN ;ì²Èî»ìþ±Èî»ìþ±8pà@vÿ ÿH° Áƒ*\Ȱ¡Ã‡#Jœ˜À(R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"E†ì(PÀþ8€@ À@ÿ þ Pà¿þýøï€ÿüûàß¿ÿþø÷ï€ÿüðï€ÿüûàß¿þ8`Aƒ&T¸aC‡ 8pàD‚T'p A€ÿ0€@8ÿø@ € 0ðÿþ8`Aƒ&T¸aC‡!F”8Q €P¤H‘"EŠ)R¤H‘"EŠ ¨Nà@‚ÿ @ ` €@ÿ8ÿÀ?ðøà€€@ ü@  À?0€þ€@ÿ H° Áƒ*\Ȱ¡Ã‡8p"Aª8 À²cÇŽ@vìØ d÷@vÙ d';vìÿ²cÇŽ@vìØ d'@vÙ dðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8p€"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)RdÈŽ"Š)@q"†(R¤H‘"Eƒ8@EŠ H‘"EŠ)R¤Hq"€P¤H‘"EŠ)R¤H‘"EŠP¤H"€‰(R¤H‘"EŠ)"pàÀŠ( dGq!»ƒì²£H‘"EŠ)R¤8À(R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤ÿH‘"E†ì( H‘"P¤ø€B)R¤H‘âA €"ʼn@‘"EŠ)R¤HEàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹`Ĉ‘ €‡€#FŒ1b¬àÀHdÇŽ;ŒÙ±cÇ.!;…ì0bĈ#FŒ8pàFŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Av`Ĉ#FŒ1bÄHÀ(Àˆ#FŒ1bĈãDÀˆ#FŒ1bĈ#E1bĈ#FŒ1ÿb¬àÀ`Ĉ#FŒ1bĈq!€`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1dGÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+8pàE+V¬X±bÅŠ+V¬XQ!€T¬X±bÅŠ+V¬X±bÅ…T'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâD àâÅ‹/^¼xñâÅ‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbCv TžÀÕü'ÿp Áì ,X]Á‚ìþ8`Aƒ&T¸aC‡!F”À&þ0qâĉ'Nœ8qâĉ'FpàÀ‰'Nœ8qâĉ'Nœ8Q"€êÂ8P :€ÿ$XР@øOà@‚ D˜PáB† >„QâDŠ 8pàE€$XÐàA„ .dØÐáCˆ%N¤XÑâEøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%M~dGÀ@uðàÁS§„QâDŠ8p ¢@€$XÐàA„ .dØÐáCˆ%N¤XÑâÅÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤Éì(¨„QâDŠ-^ĘQãFŽ=~RäH’%M~dGÀ@uðª8ž:€ÿ d7Ý?vÿØ d÷;ìþ±Èî»dðŸÀ <ˆ0¡Â… :|1¢Ä‡80ñ€‰'Nœ8qâĉ'Nœ81"€Lœ8qâĉ'Nœ8qâĉ T :á©øO @ ðÀÀþ8pà?ÿÿà€ÿ$XÐàA„ .dØÐáCˆ%N¤8À*V¬Xñ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®DÉŽ"€êàÁƒ§N„QâDŠ-NpàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xÑ!;ŠªOà@êþ8`AƒdW]Âìþ±ÈÙ%,È.á?ÿv &L˜0a„ &L˜P €$L(À,hð „ 2lèð!Ĉ'R¬hñâAÀˆ#FŒ1bĈ#EÕ„'p @uÿ Hp €‚(X €ÿ$XÐàA„ .dØÐáCˆ%N¤Xñ€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–%ÙQ0P|øðáÇ2pàÀ‡>|øðáÇ>|øðáǨ@uÂSðŸ@à€ø@  8ð€ðÀ,hð „ 2lèð!Ĉ'RtàÀ+V¬XÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W’dGÀ@uðàÁS§|øðáÇ 8pàáÇ>|øðáÇ>|øðáC‡ªOà@êþ(À?ÿüðÀ?ü À@üà€þøOà@‚ D˜PáB† >„QâDŠ8p bÅŠ øOà@ÿ‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ’ì(¨„QâDŠ8p bÅŠ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåÊ‘ì(PÀþ8;vÙ d÷;vì²cÇn ;ÿvì²ÈŽ@v²ÈŽ»ìرc÷Ý?vÙ dÇŽÝ@vìØ±Èî;ìØ±Èn »ì²ÈN »ìþ8`Aƒ&T¸aC‡ 8pàaAÕÁƒO:xðà©+` €ø@ @þðï€ÿü'P €þà€ðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"EŠ)R¤H‘"EŠ)R$` @uøOà@ ø` €ÿ à€øOà@‚ D˜PáB† ÿ>„QâDŠ 8p bÅŠ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåÊ‘ì(èÈŽ¥Iv Ù±déÀ(¨„QâĈ8@‘"EŠ)R¤H‘"EŠ)@‘"EŠ)R¤H‘"EŠ)pàÀŠ)R\à? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+E²£€%K–,YbpàÀŠT'p A€ÿ€ø ð ÿýøïß¿þø÷À¿þýðïß?ÿ H° Áƒ*\Ȱ¡Ã‡#JœÀ(R¤H‘"EÿŠ)R¤H‘"E‚(R¤H‘"EŠ)R¤H‘"Å‚8@‘"EŠ ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r¥Hv°dÉ’%KŒ8@Kˆþ`€%K–,?8pàK–,Y²dIÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZœàÀ/^´àâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE‡ì( p Á‚"L¨p!ÆBŒ(q"ÅŠÿ8ðŸÀ `РAƒ 4hP ` €ÿ$XÐàA„ .dØÐáCˆ%N”àÀ)R¤H‘"EŠ)R¤H‘"AÕ„'p @uÿ HA‚ @ A‚ü'p Á‚"L¨p!ÆBŒ(q"E†8P±bÅŠü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©reHv8`Aƒ&T¸aC‡!F”8‘bŇÿ H°`Aÿ H° Áƒ*\Ȱ¡Ã‡#JœHÿ±¢Å‹8p#FŒ1bĈ#FŒ TžÀÕü'p A $(A‚ $8À,hð „ 2lèð!Ĉ'R$àÀ+V¬ˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W†dwà 4xaB… 6tøbD‰)V|ðŸÀ 0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ#8pàÀÅ‹/^¼xñâÅ‹/"0P@x TðŸÀ$H @ÿ $Hà@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH‘ €T¬X±"Bÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\’ÝE€$XÐàA„ .dØÐáCˆ%N¤Xñ!À,XÀ@uá (PÀ P À,(P€A‚þ8`Aƒ&T¸aC‡!F”8‘bE¨X±bÅŠ+V¬X±bÅŠ  T :á©øO @ü€€@ÿ ü` @ÿü@ ÿ H° Áƒ*\Ȱ¡Ã‡#JœHq €T¬X±bBÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ ’K–,Y²d™À@uðàÁS§„QâDŠ8p bÅŠøOà@‚ D˜ÿPáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJìX²dÉ’%ËŒªƒž:uðàÁSwPÀC0À’%K–,8pàK–,Y²dIÀ@uá (PÀ À@ÿ ð€@ü@ Àþ8à?ÿ ðÀ,hð „ 2lèð!Ĉ'R$àÀ+V¬˜À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W‚dÇ’%K–,Yf0P<€ê„§à?ÿÿ øO€(@À? ðŸÀ <ˆ0¡Â… :|1¢Ä‰)8pà@ÅŠ+V¬X±bÅŠ+V\` :€ð¨à?` €ø@ €þ(ÀÀø` €þ8`Aƒ&T¸aC‡!F”8‘"A¨X±bÅ„þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹$;–,Y²dÉ2#€êàT'p „QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–-K²séÒ¥K—.PÀþ8ðŸ‚ÿ0P€€þ (@  øOà@‚ D˜PáB† >„QâDŠ8p bÅŠ+V¬X±bÅŠ+ÿ.P±bÅŠ+V¬X±bÅŠ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lY’K—.]ºtÙÀI ¸téÒ¥KpéÒ¥K—.péÒ¥K—.8pà€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ!;—.]ºté²!” péÒ¥K—ÿ8pÀ¥K—.]ºDÀ¥K—.]ºLàÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K‡ì\ºtéҥˆ\ºtéҥ˃8àÒ¥K—.]"àÿÒ¥K—.]&pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥Cv.]ºtéÒeCª8 À,hð „ 2lèð!Ĉ'R¬h1"€\¼xñâÅ‹/^¼xñ"B/^¼xñâÅ‹/^¼˜À.^¼x‘ €‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹²»xñâÅ‹/^¼xñâņªOà@êþ8`Aƒÿ(ðß?ÿ H° Áƒ88À,hð „ 2lèð!Äÿˆ'pàÀŠ)R¤H‘"EŠ)R¤H‘ Š)R¤H‘"EŠ)R¤H± €P¤H‘"Dÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\Ù‘K–,Y²d™À@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJìX²dÉ’%ËŒT'p A€ÿ ÿà@þûàß¿þ ðïß?ÿþýøïß¿þø÷À¿þýðïß?ÿ H° Áƒ*\Ȱ¡Ã‡#JœhÀ(R¤H‘"EŠ)R¤H‘"E‚(R¤H‘"EŠ)R¤H‘"Å‚8@‘"EŠü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r¥Fv,Y²dÉ’eF, °€!–,Y²¤àÀ,Y²dÉ’%E,Y²dÉ’eE`Ér!–,Y²dÉ’%K–,Y²dÉ’%Kÿ–,Y²dÉ’ ;–,Y²dÉ2#–\ K–,YVpàÀ–,Y²dÉ’"–,Y²dɲ"€°d¹K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dIK–,Y²d™K–,Y²d9ÀX²dÉ’%KŠX²dÉ’%ËŠ8À’%C,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’å@v,Y²ÄK,e€ÿþT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑbD¸xñâÅ‹/^¼xñâE„T'p A€ÿ$XÐàA„ .dØÐáCÿˆ%N¤XÑâD¸xñâE„.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^,ÈîâÅ‹/^¼xñâÅ‹¨ <ªøOà@‚ þ@ @€ÿ$XÐ`AøOà@‚ D˜PáB† >„Qâć8@‘"EŠ)R¤H‘"EŠ)0P@x TðŸÀ$Hà@$H Á@ @ÿ H° Áƒ*\Ȱ¡Ã‡#JœhÀ(R¤H‘"€ÿ$XÐàA„ ÿ.dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®ÌÈŽ%K–,Y²Ì` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–-K²séÒ¥K—.¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–-K²séÒ¥K—.PÀþ8€@ ` €üø@  €@0À,hð „ 2lèð!Ĉ':pàÀŠ)R¤Hÿ‘"EŠ)R¤H‘ €Õ Hà?à€ À@0ðü €@ÿ@ @ à? 4xaB… 6tøbD‰ 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lY’K—.]ºtـˉpéÒ¥KŠ8àÒ¥K—.]"à"€†péҥ˅8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÈÎ¥K—.]ºlÀ%Eÿ ¸téÒeEpéÒ¥K—.p €C ¸téÒ%Cpér!—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºt)K—.]ºtÙ€K—.]ºtyÀ\ºtéÒ¥K„\ºtéҥ˄8àÒ%C.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéò@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹PÀþ8`Aƒ&T¸aC‡!F”8‘bE‹8pàâÅ‹/^¼xñâÅ‹PÀþ8`Aƒ&T¸aC‡!Fÿ”8‘bE‹8pàâÅ‹¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ»‹/^¼xñâÅ‹/^l` :€ð¨à? 4ø þ8`Aƒ0ÀÁþ8`Aƒ&T¸aC‡!F”81!€P¤H‘"EŠ)R¤H‘"EŠ TžÀÕü'p Á‚`Ð ƒÿ` €ÿ$XÐàA„ .dØÐáCˆ%N¤øÀ*V¬X‘"€ÿ$XÐàA„ .dØÐÿáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®¬ÈŽ%K–,Y²Ì` :xðà©S„QâDŠ8@‘"EŠ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJŠìX²dÉ’%ËŒªƒž:uðàÁSW€@€ ü÷À¿ÿüûà?ÿÀ?0 ÿýûàß¿þ8 @ÿ H° Áƒ*\Ȱ¡Ã‡ÿ#JœˆÀ(R¤H‘"EŠ)R¤H‘"E‚ªOà@êþ8À@€ üàß?ÿüðÀ¿þýûà€ÿþø7Pà?ÿü'p Aþ8`Aƒ&T¸aC‡!F”8‘"€P¤H‘"Eƒþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹r";–,Y²dÉ2#€êàÁƒ§N„QâDŠ8@‘"EŠ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåʉìX²dÉ’%ËŒªOà@êþ(€@ü À? ` €ð€@ÿ ðÀ@8À,hð „ 2lèð!Ĉ'"pàÀŠ)R¤H‘"EŠ)R¤H‘ €êÂ8Pÿ :€ÿ  À?ü €@0À?ü0À?ÿ 8p €ÿ$XÐàA„ .dØÐáCˆ%N¤àÀ)R¤HÑ €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®œÈŽ%K–,Y²Ì` @uøOà@0€þ8ðà €@€ üàß?ÿþø÷À¿ÿü'p Á‚"L¨p!ÆBŒ(q"B H‘"EŠ)R¤H‘"EŠÿ PÀþ8€à€ À@þ@ øOà@‚ D˜PáB† >„QâDŠ8@‘"EŠøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ‰ìX²dÉ’%ËŒXnÀK–,YZpàÀ–,Y²dÉ’"–0À’%K–"8p€%ˉX²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%Jv,Y²dÉ’eF,9P€%K–,/8pàK–,Y²ÿdIK‰`É’%Ë‘8À’åD,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ%;–,Y²dÉ2#–,Y²dÉr"€°dÉ’%K–°dÉ’%K–8p€%ˉX²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%Jv,Y²d‰%–2À,hð „ 2lèð!Ĉ'R¬hñâAÀˆ#FŒ1bĈ#Eª8 À,hð „ 2lèð!Ĉ'R¬hq"€\¼xñ"D/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/ÿ^¼xñâÅ‹/^¼xñâÅ‹)²»xñâÅ‹/^¼xñâņH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆÀ@uá (PÀü `Á‚,à? 4xaB… 6tøbD‰)VpàÀŠ+V¬8À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*WFdÇ’%K–,Yrx@à@‚ D˜PáB† >„QâDŠ-^LðŸÀ <ˆÿ0¡Â… :|1¢Ä‰+Z¼ˆÀ@uðàÁS§„QâDŠ-^D` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–-K²séÒ¥K—.]ºtéÒ¥K—.]ºté2$€Õ Hà?ÿ €@ €@ øOà@‚ D˜PáB† >„QâDŠ8p bÅŠ+ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•Ù±dÉ’%K–,Y²dÉ’%K–,Y²dÉ2#€”`É’%K– 8p€%Ë‹X²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%Iv,Y²dÉ’%K–,Y²dÉ’%K–,Y²Ì@%…X²dÉ’åB`Éò"–,Y²dÉ’%K–,Y²dÉ’%K–,Yÿ²dI’K–,Y²dÉ’%K–,Y²dÉ’%K–,3`É’%K–,+8pàK–°dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K’ìX²dÉ’%K–,Y²dÉ’%K–,Y²d™À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZœàÀ/^¼HÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâEˆì.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñ¢BÕ„'p @uÿ (@€ÿ 8ÿpà@ÿ 8p @(P€8pà@ 8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JàÀ'Nœ81"€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®lÈŽ%K–,Y²dÉ’%K–,Y²dÉ’%K– T„Qâ?˜8qâĉü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©råBv,Y²dÉ’%K–,Y²dÉ’%K–,Y²Ì€åJ 0À’%K”8À’åF,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ$;–,Y²dÉ’%K–,Y²dÉÿ’%K–,YfÀr¥† `É’eJ`Ér#–,Y²dÉ’%K–,Y²dÉ’%K–,Y²d ’K–,Y²dÉ’%K–,Y²dÉ’%K–,3`É’%K–,+8pàK–°dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%KìX²dÉ’%K–,Y²dÉ’%K–,Y²d™À@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+ZœàÀ/^¼xñ€‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ Ù]¼xñâÅ‹/^¼xñâÅÿ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâE…ªOà@êþ(P€þ0pàÀþ 8pà@8P  8pàÀ0pàÀþ8`Aƒ&T¸aC‡!F”(Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË’ì\ºtéÒ¥K—.]ºtéÒ¥K—.]º ` :xðà©S„Qâ?˜8qâĉ øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåʃìX²dÉ’%K–,Y²dÉÿ’%K–,Y²d™À@€ê$ðŸ@0ðŸ ðO€@ÿ ` ÿðO€@0P€@ü PÀ@ø'@€ ðO€@0PÀ,hð „ 2lèð!Ĉÿ8pàÀĉ'NœHÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*WdÇ’%K–,Y²dÉ’%K–,Y²dÉ’%ËŒX®°PC,Y²D àÀ,Y~À’%K–,Y²dÉ’%K–,Y²dÉ’%Kÿ–,9²cÉ’%K–,Y²dÉ’%K–,Y²dÉ’eF,W `(@¡–,Y¦pàÀ–,?`É’%K–,Y²dÉ’%K–,Y²dÉ’%K–Ù±dÉ’%K–,Y²dÉ’%K–,Y²dÉ2#–,Y²dɲ"€°dùK–,Y²dÉ’%K–,Y²dÉ’%K–,Y²äÈŽ%K–,Y²dÉ’%K–,Y²dÉ’%K– ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‰8pñâÅ‹ ¸xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/ÿ^¼˜ÝÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^T` :€ð¨à? ,@ÿ HP »‚ ÈN ;vì ,8Ý?v²+È®à?vÙýcW°`Á‚ dÇŽÝ@v dW° ;€ÿ$XÐàA„ .d¸À6lذaÆ ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•Ù±dÉ’%K–,Y²dÉ’%K–,Y²dÉ2#€êàÁƒ§N„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ‚ìX²dÉ’%Kÿ–,Y²dÉ’%K–,Y²d™À@uðàÁS§|øðáÇü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%»•+W®\¹råÊ•+W®\¹råÊ•+W®ü` :xðà©S|øðaAÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ÉnåÊ•+W®\¹råÊ•+W®\¹råÊ•+ÿ¨|øðáÇü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©R%»•+W®\¹råÊ•+W®\¹råÊ•+W®ü` @uÿøOà@vìØ±ÈŽ»ì²cÇnà?vìØ d7;vÙýc';vìþ±cÇŽ@vÙ±c';vì²ÈŽ»ìرÈn »ì²ÈN ;vì²ÈŽ;ì²ÈN ;vì²ÈN »ì²ÈN »ìþ8`Aƒ&T¸aC‡ 8pàáÇ>|øÐ €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)Uªd·råÊ•+W®\¹råÊ•+W®\¹råÊ•ÿXd·råÊì²[¹$€¬\‰ÿÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®TÉnåÊ•+W®\¹råÊ•+W®\¹råÊ•+ÿÈŽ;v+W®ÈN!»•+C8pàÀÊ•)¬\¹råÊ•+W®\¹råÊ•+W®\¹råÊ”ìV®\¹råÊ•+W®\¹råÊ•+W®\¹ò€•+W®\¹r#€¬\™ÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®LÉnåÊ•+W®\¹råÊ•+W®\¹råÊ•Vú ÿþý¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‰8pñâÅ‹¸xñâÅ‹/^¼ÿxñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼øÝÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^T` :€ð¨à? 4ÈŽ;ƒ ²ûÇÎà?vÙü@ÿ H° @v²+Èî;ƒ 48Av²3øÁì dðŸÀ <ˆ0¡Â… 8pà@Æ 6lذaC…þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T™’ÝÊ•+W®\¹råÿÊ•+W®\¹råÊ•+Wþ0P„QâDŠ-^ĘQãÿFŽ=~RäH’%MžD™RåIv+W®\¹råÊ•+W®\¹råÊ•+W®\ùÀ@uðàÁS§4àÀ@„"Dˆ!ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥JìV®\¹råÊ•+W®\¹råÊ•+W®\¹ò€êàÁƒ§N„QâDŠ8pà€E‹-Z´ˆ€E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹ÙY´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹¨„QâDŠ8pà€EƒX´hÑ¢Å,Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢ÿE‹-Z4È΢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´8€Å„°hÑ¢E‹-Z´h‘"€XDÀ¢E‹-þ`Ñ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑbAv-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢E‹-Z´hÑ¢Å,* €E‹-Z´hÑ¢E‹< à? 4xp "Dˆ!B„"Dˆ° €ÿ$XÐàA„ .dØÐáCˆÿ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)Ujd·råÊ•+W®\¹råÊ•+W®\¹råÊ•ÿ¬\¹råÊ•8p $€•+-X¹råÊ•+W®\¹råÊ•+W®\¹råʕ٭\¹råÊ•+W®\¹råÊ•+W®\¹rå?ª8 À,hð „ 2lèð!Ĉ'R¬hq"€\\ÀÅ‹/>pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼ˆÝÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼ÿxñâÅ‹/^T` :€ð¨à? À`A0hРAƒ À Aÿ H° Áƒ*\Ȱ¡Ã‡#J4àÀ#˜8qâĉ ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©2#»•+W®\¹råÊ•+W®\¹råÊ•+W®ü` :xðà©S„QbA˜8Q 'Nœ8ñ €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒÿ5näØÑãG!EŽ$YÒäI”)Ubd·råÊ•+W®\¹råÊ•+W®\¹råÊ•ÿ T :á©øO @ à€ð€@àø` €ø€@ÿ ðþ`àÀü'p Á‚"L¨p!ÆBŒ(± €Lœ8qâĉøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R%Fv+W®\¹råÊ•+W®\¹råÊ•+W®\ùÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–!ÙµlÙ²eË–-[¶lÙ²eË–-[¶lÙÒ ‰V €!€–-[¦pàÀ–hÙ²eË–-[¶lÙ²eË–-[¶lÙ²eË–-?²kÙ²eË–-[¶lÙ²eË–-[¶lÙ²¥A¬€B-[¶Tÿ àÀ- hÙ²eË–-[¶lÙ²eË–-[¶lÙ²eË–-=²kÙ²eË–-[¶lÙ²eË–-[¶lÙ²¥A-[¶lÙ²åChy€–-hÙ²eË–-[¶lÙ²eË–-[¶lÙ²eËŒìZ¶lÙ²eË–-[¶lÙ²eË–-[¶lÉ €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/&pàÀŒ Àˆ#E1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#Cv1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÿ1b¬€À <ˆ0¡Â… :|1¢Ä‰+Z¼¸ðÀÿ H° Áƒ*@¡B… *T¨P!€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)UVd·råÊ•+W®\¹råÊ•+W®\¹råÊ•8`Aƒ&T¸aC‡!F”8‘bE‹ü'p Á‚"L¨P €… .\¸páÂþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦TY‘ÝÊ•+W®\¹råÊ•+W®\ÿ¹råÊ•+Wx@à@‚ D˜PáB† >„QâDŠ-^\ðŸÀ <ˆ0¡Â,\¸páÂ… øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™ReEv+W®\¹råÊ•+W®\¹råÊ•+W®\Ià 4xaB… 6tøbD‰)V´xq!À,hð „ X¸páÂ… *ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥JŠìV®\¹råÊ•+W®\¹råÿÊ•+W®\¹råÊ•¬”`åÊ• ¬\ `åÊ•+W®\¹råÊ•+W®\¹råÊ•+WRd·råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®¬`¥D+W®\ÀÊ”V®\¹råÊ•+W®\¹råÊ•+W®\¹r%Ev+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊŠVJ°råʆV¦°råÊ•+W®\¹råÊ•+W®\¹råÊ•+'²[¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+WV°R"€•+W:à? 4xaB… ðŸÀ <ˆ0¡Â… ÿ:|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê‰ìV®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•¬Œ`åÊ•+W6°råÊ•+W®\¹råÊ•+W®\¹råÊ•+'²[¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+WV°2"€•+W®\éÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®”ÈnåÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\YÀʈV®\¹r¥C+W®\¹råÊ•+W®\¹råÊ•+W®\¹R"»•+W®\¹råÊ•+W®\¹råÊ•+W®\ÿ¹reE+#X¹r¥E+EøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™R¥Dv+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊŠVF°råÊ‹V†°råÊ•+W®\¹råÊ•+W®\¹råÊ•+%²[¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+WV°2"€•+Wb`%H+W®\¹råÊ•+W®\¹råÊ•+W®\¹2"»•+W®\¹råÊ•+W®\¹råÊ•+W®\¹reE+!X¹råF+?X¹råÊ•+W®\¹råÿÊ•+W®\¹råʕ٭\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+-XùÀÊ•+9à? 4xaB… øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™ReDv+W®\¹råÊ•+W®\¹råÊ•+W®\¹råJ‹V>°råJV®\¹råÊ•+W®\¹råÊ•+W®\¹råʕ٭\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+-XùÀÊ•+?°råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®üÇnåÊ•+ÿW®\¹råÊ•+W®\¹råÊ•+W®\iÀʇV®\ÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹’ÝÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹Ò"€•¬\¹R$+W®\i¥•VZi¥•VZi¥•VZi¥•VZi¥•RˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²¬ eC-[¶ô eË–-[¶lÙ²eË–-[¶lÙ²eË–-[¦dײeË–-[¶lÙ²eË–-[¶lÙ²eË–-[VÐ’!€–-[‚ eÿË–-[¶lÙ²eË–-[¶lÙ²eË–-[ždײeË–-[¶lÙ²eË–-[¶lÙ²eË–-[VÐ’!€–-[ŠÐr"€–-[¶lÙ²eË–-[¶lÙ²eË–-[¶”È®eË–-[¶lÙ²eË–-[¶lÙ²eË–-[¶¬ %C-[¶  åD-[¶lÙ²eË–-[¶lÙ²eË–-[¶l‘]Ë–-[¶lÙ²eK-µÔRK-µÔRK-µÔRK-U€ÿ$XÐàA„  °páÂ… .\¸páÂ… .\¸páÂ… øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFÿŽ=~RäH’%MžD™R¥Cv+W®\¹råÊ•+W®\¹råÊ•+W®\¹råJ‹V:°råÊ•+)X¹råÊ•+W®\¹råÊ•+W®\¹råʕ٭\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+-XéÀÊ•+W®¬`åÊ•+W®\¹råÊ•+W®\¹råÊ•+W6d·råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®´`¥C+W®\YÀʇV®\¹råÊ•+W®\¹råÊ•+W®\¹reCv+W®\¹råÊ•+W®\¹råÊ•+W®\¹råJ‹V6°råÊ•ÿü'p Á‚"L¨P €ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U6d·råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®´`eC+W®\‰€• ¬\¹råÊ•+W®\¹råÊ•+W®\¹råJ†ìV®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•¬l`åÊ•+€$€•+W®\¹råÊ•+W®\¹råÊ•+W®\ÉÝÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹Ò"€• ¬\¹råB@@BV®\¹ÿråÊ•+W®\¹råÊ•+W®\¹rå?v+W®\¹råÊ•+W®\¹råÊ•+W®\¹råJ‹ðŸÀ <ˆ0¡Â.\¸páÂ… .\¸páÂ… X(À? .  @ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©R »•+W®\¹råÊ•+W®\¹råÊ•+W®\¹r¥E+X¹råJ‡,ð@Iÿ@ÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®ÈnåÊ•+W®\¹råÊ•+W®\¹råÊ•+ÿW®\i€B# °råÊ•$0ÀH°råÊ•+W®\¹råÊ•+W®\¹råÊ•+²[¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+W:€B%ÀÊ•+W"À ‚>@B+W®\¹råÊ•+W®\¹råÊ•+W®´ÒJÄà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y:pÀA&€@Ë–-[@@AÀ@Ë–-[¶lÙ²eË–-[¶lÙ²eË–-[dײeË–ÿ-[¶lÙ²eË–-[¶lÙ²eË–-[>`€A(`€–-[¶,€@hà!€–-[¶lÙ²eË–-[¶lÙ²eË–-[¶<È®eË–-[¶lÙ²eË–-[¶lÙ²eË–-[¶„  €‚T(  €–-[¶L€Ah eË–-[¶lÙ²eË–-[¶lÙ²eË–-²kÙ²eË–-[¶lÙ²eË–-[¶lÙ²¥–Zj)"€üû÷ï€ÿþýðŸÀ <ˆ!‚øOà@‚ D˜PáB† >„QâDLTÀBÿ H° Áƒÿ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª,ÈnåÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\9À@¬` €V®\¹R"„>€ÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®4ÈnåÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\I€@¬,à€V®\¹r"€„@`ÀÊ•+W®\¹råÊ•+W®\¹råÊ•+W®4ÈnåÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\YÀ?ÿ¬4à€¬\¹råD ˆÿ` €•+W®\¹råÊ•+W®\¹råÊ•+­´ÒJÄà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+YV@KƒhÙ²eK† À?-[¶lÙ²eË–-[¶lÙ²eË–-[¶l©ÝE€$XÐàA„ .dØÐáCˆ%N¤XÑâE‡ÿ H° Áƒÿ8`Aƒ&T¸aC‡!F”8‘¢C€ÿ$XÐàÁH° Áƒ*\Ȱ¡Ã‡#JœH±"B€ÿ$XÐàÁH° Áƒ*ÿ\Ȱ¡Ã‡#JœH±¢Å‹ü'p Á‚þ@à@‚ D˜PáB† >„QâDŠþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'²«@{,hð „ 2lèð!Ĉ'R¬hñ¢Cþ8`AƒhOà@‚ D˜PáB† >„QâDŠøOà@‚  = 4xaB… 6tøbD‰)VDÀ,h í H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ðÿŸÀ $@{,hð „ 2lèð!Ĉ'R„À,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iòdBv´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/BðŸÀ $ = 4xaB… 6tøbD‰)BðŸÀ $ = 4xaB… 6tøbD‰)VTà? 4H@{,hð „ 2lèð!Ĉ'R¬hñ"Fˆþ8`Aƒ´'p Á‚"L¨p!ÆÿBŒ(q"E‰þ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'²£ = 4xaB… 6tøbD‰)V´xQ"€ÿ$XР@í H° Áƒ*\Ȱ¡Ã‡#JœHQ"€ÿ$XР@í H° Áƒ*\Ȱ¡Ã‡#JœH±"Cÿ H° AÚ8`Aƒ&T¸aC‡!F”8‘bE‹1JðŸÀ  = 4xaB… 6tøbD‰)RðŸÀ <ˆ0¡Â… :ÿ|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰Eí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰%8pà? 4 = 4xaB… 6tøbD‰)VdàÀ€ÿ$XÐ €ö$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰)8pà? 4xaB… 6tøbD‰)V´xcF9vôøÿdH‘#I–4yÒ ;ŠÚ8`Aƒ&T¸aC‡!F”8‘bE‹%8pà? 4 = 4xaB… 6tøbD‰)JpàÀ,h@{,hð „ 2lèð!Ĉ'R¬ÈÀÿ H° Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹%8pà? 4 = 4xaB… 6tøbD‰)RpàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò¤Av´'p Á‚ÿ"L¨! °páÂ… @!@´'p Á‚pP @´'p Á‚À p @{,XÀþ8`Á‚Ú8`Aƒ&Tˆ€…X¸p¡B*À .€… Àþ8`Á‚Ú8`Aƒ&T¸aC†àСC‡:thÀþ8`Á‚Ú8`Aƒ&Tˆ€…X¸p¡B*À .€… `€…ÿ`!B€ hOàÀ$Hp  $H €ü'p Á‚´'p Á‚"L¨p!Æ84À¡C‡:tØÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“' ²£ = 4xaB…X¸p¡@.\X€…HÀ@.\H€,$ÀBØ`áA` €ü'p Á‚´'p Á‚"L¨! .ÀÂ… `áÂ…ÿÀÂ…HàÀÿ H°`Aí H° Áƒ*\Ȱ¡CƒxøðáÇ:pàÀ€ÿ$X° €ö$XÐàA„ "`áÂ…X¸páÂ,\¸P X¸p  $@ @ÀB‚ `á@øOà@‚ hOà@‚ D˜PáB† XÀ¡C‡:tèÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“' ²£ = 4xaB…ÿX¸p¡@.\X€…HÀÂ… °0! `€…Xh€8ðŸÀ ОÀ <ˆ0¡B„,\¸P .\8€…  `áƒ$pàÀ€ÿ$X° €ö$XÐàA„ .dØp €‚XÀ¡A8tèСC‡8pà? , = 4xaB…X¸p¡@.\¸p .ÀÂ…Xxƒ$@ ° X8Àþÿ8`Á‚Ú8`Aƒ&T¸¡B(°@à hذaÆ 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iòdAv´'P   Ú8 P ={ö°gÏÞ@öì hÏž½Ú8{Àž={íÙhÏA{ö´'p hÏÞ@{íÙÀž=öÚ³'О=í ( P ={ö°goÿ =öì `Ïž@€ö´(О½öÚ³7€={í ´go {ö´'p =Ú€8ðŸÀ О@` €@€ hOà@€@öìÙÀž={س7P ={öhOà@ì p {öì´go ={íÙО@À ØÀ@Ú³7€={íÙhÏž@{öÚ³' =í€@€ÿ`ÏAöì ´g ={ö8pà? , = 4xaB… 6  €ì°€@@ ö€€ pèСC‡8pàÀ,X@{ € ( =@ @Ú³go {öì `ÏÞ@öìÙ =°€ÀìÙ³GО½öì´go @{ {€@ `{hÏÞ@öì ÿ´go ={íÙhÏž@€ö´8€={س'О@{سg {Ú8@ ì0p =€@€@ì @ €@øOà@‚ hOà@‚ D˜PáB† 0€=ö€@À00@A 6lذ¡AøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%Mž,ÈŽÿ"€ö$8Ø@ (H{  ö€=ØÀ(€=ì`{À€= Ú@ ö€=ØÀ€@ìP ö@ °{Ø@ ö€=`€‚ö€=ØÀ€@ì`{À@ØÀöàÀÿÿ H°`Aí Hp °€@P ö@Aì {°€=P{ØÀö€= {´€@ì`{Ø@ °€=`Ø@ ö(X Àö°€=`{@ €ü'p Á‚´'p Á‚"L¨p!Æö@€=°@ €ìÀ {ÿ°` € pèСC‡ 8pàÀ,X@{€@ì $€=P{Àì`Àö°€=`Àí {ØÀö@Aì`‚Ø@ ö€= €‚°€=ì`ØÀö`{@   =ì €‚°ÿ€=`Ø  ö€@ì0Àþ8`Á‚Ú8`Aƒ&T¸!B`ì` {0À€ì` €‚6lذaÂ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<DОÀ <ˆ0¡Â… 8pàÀ,X@{,hð „ 2lèð!Ĉ'R¤àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“ÙQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼(Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘¢DøOà@‚ hOà@‚ D˜PáB† >„QâDŠ8pàÀ,X@{,hðÿ „ 2lèð!Ĉ'R¬hñ"F‰8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰)8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iòdAv´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/JpàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤(Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE†8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰ÿ+Z¼ˆQ"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"EŠ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš„QâDŠ-^Ä(Àþ8`Á‚Ú8`Aƒ&Tˆ€…X¸páÂ… X¸° @Ú³' = 4X€‚àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“ÙQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼(Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘¢DøOà@‚ hOà@‚ D˜P!B.\(ÿ€… .\¨ ! °pá‚8ðŸÀ ОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆQ"€ü'p Á‚´'p Á‚"L¨! .ÀÂ…  `áB‚ À   8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4y² ;ŠÚ8`Aƒ&T¸aC‡!F”8‘bE‹%8pàÀ,X@{,hð „ 2lèð!Ĉÿ'R”àÀÿ H°`Aí H° Áƒ*DÀÂ… °páÂ…  €…X¸paAøOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^Ä(Àþ8`Á‚Ú8`Aƒ&Tˆ€…  `áÂ… °p!A °p!A Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“' ²£ = 4xaB… 6tøbD‰)Vÿ´xQ"€ü'p Á‚´'p Á‚"L¨p!ÆBŒ(q"E‰8ðŸÀ О@` €@€ hOà@€@öìÙÀž={س7P ={öhOà@ì p {öì´go ={íÙОÀ  íÙ³7P =ö ´gÏÞ@öì ´gO ={öì ´go ={íÙ³7€={íÙÀž½ö´'p @Ú³go @{í hÏž½ìÙ³àÀÿ H°ÿ`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹%8pàÀ,X@{ € ( =@ @Ú³go {öì `ÏÞ@öìÙ =°€ÀìÙ³GО½öì´go @{` @à@öì`Ïž@{öÚ³7О½öì ´gO ={Ú80@ @ @{öÚ³7€={ö8pà? 4xaB… 6tøbD‰ÿ)V´xcF9vôødH‘#I–4y² ;ŠÚ8`Aƒ&T¸aC‡!F”8‘bE‹%8pàÀ,X@{,hð „ 2lèð!Ĉ'R”àÀÿ H°`Aí Hp °€@P ö@Aì {°€=P{ØÀö€= {´€@ìÀö€=ìÀö@Á‚ö€ÀíÙÿhÏž@{íÙhÏž@{íÙ#Àž={í ´'О=öÚhO =öì ´gÀþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘bE‹1JpàÀ€ÿ$X° €ö$8Ø@ (H{  ö€=ØÀ(€=ì`{À€= ÚÀ°€=ì`ØÀ°€@ìP í`ÿÀí`ØÀàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“ÙQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼(Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘¢DøOà@‚ hOà@‚€= €‚ö(О@{öÚ³7P =í €@ì p @{`{ØÀ@ÚhÏÞÀÿö´'p @ÚhÏž@{íÙhO =öì ´7p @{´€@€hÏAöÚ³GP =öì hOà@`ØÀ°€Àöì8pàÀ,X@{,hð „ 2lèð!Ĉ'R¬hñ"F‰8ðŸÀ ОÀ {@ í P =öì ´go @{Ú(Ø@à@€ö Àö°€=€´'О½í hOà@{ÿ@ @{í ´'О@{öÚhoà@{íÙ³' = Ú  =ì p ={ÚhÏž½í ´gO =ö´gÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“' ²£Àž={H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8ðŸÀ `Ïž=€$XÐàA„ .dØÐáCˆ%N¤ñÀÿ H°`Aí Hp °€@PØ@ öÿ€=  {$€=ì`{@ (h€‚À°€=`€‚`ØÀ(€@  €‚ö€=`{Àí8pàÀ,X€={ö8`Aƒ&T¸aC‡!F”8‘bE‹1B„QâDŠ8pà? , = ÿ@ ö€@  {À°€@ì {  ö°€=ì {@ ö(hØ@ ö€=ì { à@ì {Ø@ °€@`´€@ì {Ø@ ö€@øOà@‚ hOà@‚ D˜PáB† >„QâDŠ-^Ä(Àþ8ÿ`Á‚Ú8à@`  °€@ì {À°€@ `{ØÀ°€@`€‚ö°€=`{ØÀ°€=`Ø  A`{À°€@`ØÀàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“ÿÙQОÀ <ˆ0¡Â… :|1¢Ä‰+Z¼(Àþ8`Á‚Ú8`Aƒ&T¸aC‡!F”8‘¢DøOà@‚ hO @00 í ´gÏÞ@ö ´gÏÞ@öì `Ïž@{öÚ³7€={íÙhO =öÚ³7€={öÚ³7€={íÙhÏž½ìÙhÏž@{ö ´'О@{öÚ³7€={íÙhÏÞ@{öì ´gÏž=öìÙÀž={íÙÀž=öì hÏž@{öÚÿ³7P =öÚ³'О½ìÙ³àÀÿ H°`Aí H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹%8pàÀ,X@{ € €hO ={ö ´7P ={ö ´go {öÚ³'О½ìÙhÏž@{í ´'О½ìÙ³'О½ìÙhÏž@{öì ´gÏÞ@öÚhO ½íÙhÏÞ@öì ´gÏÞ@{öÚ³'О={Ú³'О½ìÙ³7P =öìÙ(ÐÞ@öì ´go {öì8pàÿÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iòdAv´'p Á‚"L¨p!ÆBŒ(q"ÅŠ/JpàÀ€ÿ$X° €ö$XÐàA„ .dØÐáCˆ%N¤(Àþ8`Á‚Ú8`Aƒ8X€ƒ<(€ƒ„QâDŠ-^Ä(À(Ș1cÆŒ3fÌXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ ÙQ0 : ü'p Á‚"L¨p!ÆBÿŒ(q"ÅŠ/pàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÀ(¨X±bÅŠ+V¬X±"C ` @uøOà@‚ D˜PáB† >„QâDŠ-^ÄXÀ(Ș1cÆŒ3fÌXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ ÙQ0P@x TðŸ@ðŸÀ ` €ÿ$XÐàA„ .dØÐáCˆ%N¤Xq!€P0P@x TðŸÀ <ˆ0ÿ!B *T¨P¡B… *T¨P¡B…ÿ8p@¡Bÿ H° Áƒ*\Ȱ¡Ã‡#JœH±"C ` :€ð¨à? À Á 4h° $0hð€ÿ$XÐàA„ .dØÐáCˆ%NDàÀP¤H‘"EŠ)R¤HQ!€P¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ)R¤H‘"EŠ ²£` :xðà©S„QâD˜øÀĉ'Nœ8qâĉ' pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäÉ‚ì(¨@uÂSðÿŸÀÿü'@€€ àŸ‚ øOà@‚ D˜PáB† >„QâDŠ8pàEÕÁ¨Nà@xêþ8  € (€@ð€ðŸÀ <ˆ0¡Â… :|ñ €D` @,hð „ 2lèð!Ĉ'R¬¨ðÀÿ H°`AÕÁ¨Nà@xêþ8 €@0À? ÀÀ 0p ÿ €ü@ €þ€@þ8`Aƒ&T¸aC‡!F”˜À&þ0  4xaB… 6tøbD‰)J„xÀ"1bĈ#FŒ1bĈ#pàÀˆ T :á©øO @ à€ø` € ð€@ü0pàÀ`à@ÿ0pàÀþø` €ø` @ÿ0À?ÿ H° Áƒ*\Ȱ¡Ã‡#JTàÀÿ˜8qâĉ'Nœ8qâD8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1ÿ£Æ;zü2¤È‘$Kš„QâDŠ8pàEÕ„'p @uÿ ü  ÿø÷ïß@ÿüû÷À¿þ8 €ø` €øOà@‚ D˜PáB† >„xÀ"1bĈ#FŒ1bĈ#pàÀˆ TžÀÕü'P €à€ 0À?àÿø`àÀ` ü ÀÀÿà€ 0À?àøà? 4xaB… 6tøbD‰ 8p`â?'Nœ8qâĉ'Nœ(Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“' ²£` :xðà©S„QâDŠ8p€"€Õ Hà? 4xaB… 6tøbD‰)RpàÀŠT'p A€ÿ$XÐàA„ .ÿdØÐáCˆ%N¤XÑâEŒ8p€"€Õ Hà? 4xaB… 6tøbD‰)pàÀŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬X±bÅŠ+V¬ˆEÕ„'p @uÿ H° ÁðŸÀ „QâDŠ-^ĘQãFŽ=~ÿRäH’%Mž,ÈŽ"€êàÁƒ§Nÿ„QâÄ8@À@uá (PÀàþ€@ÿþøOà@‚ü0À?ÿ H° Áƒ*\Ȱ¡Ã‡#:pàÀ‰ T„Ñ!€H` :€ð¨à?(ð€ÿüûàß¿þø÷Àà@ ü €@€ üà? þ@ÿ€@€ üà?ü €@à€ 0À? €@øà? 4xaB… 6tøbÄ‚8 Q €êàÁƒ§N„Q"AøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%Mž,ÈŽ"€êàÁƒ§N„Q"AøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%Mž,ÈŽ"”( ø€!”(Q¢ àÀd€%J”(8pàE( €€!”(Q¢<àÀ D‰%J”(M8pàE(ÿ`%J”(8pàJ”ÿ(Q¢D‰%J”(Q¢D‰%J”(3²£%Ê0€B(Q¢D)À(¸J”(Q¢àÀ ü(€%J”8p€"”(Q¢D‰¥I ¥@  D‰%D@‰%J”(Q¢D‰%J”(Q¢D‰eFvü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/JpàÀŠ0bĈ#FŒ12pàÀŠ0bĈ#FŒ1bàÀ`Ĉ#FŒ1bĈ#Fƒ8@FŒ1bĈ#F‡ÿ8€#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bÄ‘E1bĈ#FŒ1bÄhÀ(PÀþ8`Aƒ&T¸aC‡!F”8‘bA ` @uøOà@‚ D˜PáB† >„QâDŠ8p€"€Õ Hà? 4xaB… 6tøbD‰)V´xcA  cÆŒ3f̘1cAȘ1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3*dG  4xaB… 6tøÿbD‰)V´x‘âþ8`Á‚ªOà@êþ8`Aƒ0a„ &L˜0a„ &L˜0aB80¡@Õ„'p @uÿ H°à?$à? 4xaB… 6tøbD‰ 8pàEÕ„'p @uÿ à€@ Àÿü'p Á‚øOà@‚ D˜PáB† >„QâDŠ)8pàE€$XÐàA„ .dØÐáCˆ%N¤XÀþ8`Aƒ&T¸aC‡!F”8‘bE‹ÿ1fÔ¸‘cGA†9’dI“' ²»ð€À <ˆ0¡Â… :|1¢Ä‰+Z¼Hà? ,` :€ð¨à? 4xð„ü'p Á‚"L¨p!ÆBŒ(Q €Lü` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%Mž,Èî"À,hð „ 2lèð!Ĉ'R¬hñ"E€ÿ$X° €êÂ8P :€ÿ$XÐàÁðŸÀ <ˆ0¡Â… :|1¢D80ñ€êàÁƒ§N„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0 : ü'p ` ÿü0€@ÿ(€@0€@øOà@‚ D˜PáB† >„Q €H` @uøOà@ À?ü €@ ðŸÀ <ˆ0¡Â… :|1¢Ä‰8p€"€ÿÕ Hà?ðÀ@`à?ÿ €@ ` @ À@à? 4xaB… 6tøbD‰)VàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈ\jàҥˈ8@€H ¸téÒåB À¥I.]ºtér €¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#pi\ºt)À(ÿ @!—.]ºdàÀ¸ .]ºté’ €¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#péÒ¥K–8@€K—.]ºlàÀ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.¹ä’K.¹ä’K.¹äG±øOà@‚ D˜PáB† >„QâDŠ-^ĘÑ!€Õ Hà? 4xaB… 6tøbD‰)pàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤HÀ(PÀÿþ8`Aƒ&T¸aC‡!F”8‘bE‹1pàÀŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒÙe̘1cÆŒ3f̘1cF‡ªOà@êþ8p ‚ $Hð€ÿ$XÐàA„ .dØÐáCˆ%"pàÀ‰ÿ TžÀÕü'p Á‚þ€P €ÿ$XÐàA„ .dØÐáCˆ%JpàÀ‰ÿ TžÀÕü'P € €@ÿ H° Áƒ…(,ÿà@ü'p Á‚"L¨p!ÆBŒ(q¢@øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸÀ€ A‚ÿøOà@‚ D˜PáB† >„Q"B˜øÀ@uðàÁS§„!€H` :xðà©S„QbD˜øÀ@uá (PÀ0ð€þ(À@ÿ €@à Pà?ÿ Hð‚ Pà?ÿ ÿàÿü0P €þ@ À?ÿ H° Áƒ*\Ȱ¡Ã‡#:pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕ„'p @uÿ ` €ø@ €øÀ?ü0À?ü'p Á‚"L¨p!ÆBŒˆÀ$ 0P„QbD˜øÀ@€ê$ðŸ@ø @ €@ À@ €0ÿü €@à€€@ €@à? 4xaB… 6tøbĆ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒÀ%E.]º¼àÀ¤À€K—.]pàÀŠ\ºtéÒ¥K•8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]rdçÒ¥K—.]ºŒÀ%DpéÒ%F @%…\ºté² €PàÒ¥K—.ÿ]ªpàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ(péÒ¥K— 8p€"—.]ºtéR%€¸téÒ¥K—.]ºtéÒ¥K—.]ºté’K.¹Ä@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹1ft` @uøOà@‚ D˜PáB† >„QâDŠ8p€"€Õ Hà? 4xaB… 6tøbD‰)RpàÀŠT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒÿ8p cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ãCv3f̘1cÆŒ3f̘Ñ!€êÂ8P :€ÿ€ A‚ÿ$(A‚ à? 4xaB… 6tøbD‚8 Q €êÂ8P :€ÿ$X° @ü'p Á‚$à? 4xaB… 6tøbD‰8p`â?Õ„'p @uÿ `àÀ(ÀÀ`àÀþ8`Aƒ&T¸aC‡!F”ÿ8‘bE‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/dwñâÅ‹/^¼xñâÅ‹/F0P@x TðŸÀ$H Á$H Áþ8`Aƒ&T¸aC‡!F$àÀ¨„Q"A˜øÀ@uðª8ž:€ÿ 0P €ø` €( À?ø` €ÿ$XÐàA„ .dØÐáCˆ%N¤X‘!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨ <ªøO @ü@ Àÿüðï€ÿøàß?ÿüû÷À?ÿÿþýðŸÀü0À?ü0À,hð „ 2lèð!Ä8q €êàÁƒ§N„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸ@ø` €ø` €ø` €8pà?ÿ ðÀ@ÿ ðŸÀ <ˆ0¡Â… :|q €D` :€ð¨à? €`à?ü À? 8p €ÿ$XÐàA„ .dØÐáCˆ%pàÀ‰ÿ TžÀÕü'P €ÿø` €ø`àÀÿ  €@ü0À?ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@€ê$ðŸÀ ÿ@ ð€@0ÀÀ    þ8`Aƒ&T¸aC‡!pàÀˆ ¨Nà@‚ÿ ` ÿü0À@ÿ` ü €@ ðŸÀ <ˆ0¡Â… :|1¢D‚80ñ€Õ Hà?€0 ü`à@ üàþ@ ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ 8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºt€K•\ºtùÀ(p‰C.]º, àÀ¸äÀ¥K—.]6pàÀ—.]ºtéÒ¥ÿK—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.M€K—.8pàE.PÀ¥K—&8p€"—À¥K—.]:pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ(péÒ¥K— 8p€"—.]ºtéR%€¸téÒ¥K—.]ºtéÒ%—\rÉ%—\rÉ%—\â vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3:0 : ü'p Á‚"L¨p!ÆBŒ(q"Å‚8@ÿÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰)8pàEª8 À,hð „ 2lèð!Ĉ'R¬hñ"Æ‚81cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘ñ!»Œ3f̘1cÆŒ3fÌèÀ@uá (PÀðA‚ü@ A$øÁ$H @ÿ H° Áƒ*\Ȱ¡Ã‡ 8p"AÕ„'p @uÿ H° A4X€A‚þ8`Aÿƒ&T¸aC‡!F”XÀ&þ0P@x TðŸ@8pàÀÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/8pàÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^,ÈîâÅ‹/^¼xñâÅ‹/^Œ` :€ð¨à? HÁ€ A‚$H A‚ü'p Á‚"L¨p!Æ*pàÀˆ TpàÀˆ TÿžÀÕü'P €8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ ²»xñâÅ‹/^¼xñâÅ‹#¨@uÂSðŸÀð€@ð€þ€@üàà à€ À@  ü` ü'p Á‚"L¨p!Æ8pàÀªƒPÀÿðÔü'p  €þ0À?à? 4xaB… 6tøbD‰8p`â?ÕÁ¨Nà@xêþ(€@ €ÿ `à@  øOà@‚ D˜PáB† >„QâDŠ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàT'p „QâDŠ8pÿàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êÂ8P :€ÿ 0À?  €@ÿ ðÀ@ÿðÀ@ÿ ðÀ@þà@ü'p Aÿ ðÀ@ÿ ðŸÀ <ˆ0¡Â… :<àÀ ¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸ@ø` à€þàþà€þ(À?ü0pàÀü0À?ü0À,hð „ ÿ2lèð €<,` :xðà©S|øðáÇ8pàÀªOà@êþ(À?ü0ÀÀÿ(À@ÿ ðÀ@ÿ à? 4xaB… 6tøbD‰)V|àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªOà@êþ(À@ÿü À?ðÀ@ÿÿàþà€þ(À?ü0ÀÀÿø` €ø` €ÿ$XÐàA„ .dØÐáAxXÀ@uá (PÀà€þ`à? ð€@ÿ0pàÀþ8`Aƒ&T¸aC‡!F”HÀ&þ0P@x TðŸ@þà€øÀ@ø` €ø` €þ8`Aƒ&T¸aC‡!F”8‘bŇ8ðŸÀ <ˆ0¡Â… :|1¢Äÿ‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` @uøOà@ø@ ü À?À?ü  ð ÿøàß¿þýðŸ@    þ8`Aƒ&T¸aC‡8pàaAª8 À0ü0ð€À@ÿ €@ü'p Á‚"L¨p!ÆBŒ(‘ €Lü` @uøO @ÿ0þ0P @þû7ðß¿üû7À¿ÿýðŸÀ <ˆ0¡Â… :|1¢Ä‰+>pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeD.]^àÒ%E À%B ¸té²$€Pà€F¸téÒ¥KŒ8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]rdçÒ¥K—.]ºŒÀ¥Ë‰àÒeE ÀeB ¸téÒ$€P ÿ.€@péÒ¥K—8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—.]ºt€K—.]²pàÀŠ\ºtéÒeC À¥K—.]ºT àÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH± €P0 : ü'p Á‚"L¨p!ÆBŒ(q"EŠ8@À@€ê$ðŸÀÿ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ± €d̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f|È.cÆŒ3f̘1cÆŒ3:0P@x TðŸÀ ð ÿýðŸÀ à? 4xaB… 6tøbDƒ8 Q €êÂ8P :€ÿ$XÐ A€ øOà@‚0HÀ,hð „ 2lèð!Ĉ8p@¢@Õ„'p @uÿ H° Áøï€ÿÿ$XÐ`A„QâD8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :€ð¨à? 4` ƒ ,à? 4xaB… 6tøbDƒ8 Q €êàÁƒ§N„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸÀ 0€Aƒ ðŸÀ <ˆ0¡Â… :|1¢A(À@uðàÁS§pàÀ€ÿ$XÐàA„ .dØÐáCÿˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕ„'p @uÿ €@ÿüû÷À?ÿþýðïß?ÿþýûà€ÿüûàß@ÿ HÀ?ü0À?ü'p Á‚"L¨p!ÆB,àÀ¨„QâCøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸ@ 0À? 0ð€à€à€þà€þ8`Aƒ&T¸aC‡!pàÀˆ TÿpàÀˆ8`Aƒ&T¸aC‡!F”8‘bE‡ÿ H°`AÕ„'p @uÿ H €‚,X°`Á(X°`A,X°`Á‚ÿÿüP°`Á‚øOà@‚ D˜PáB† >„!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨ <ªøOà@‚ pðàÁðŸÀ <ˆ0¡Â… :|ñ!€D4ð€À <ˆ0¡Â… :|1¢Ä‰+:øOà@‚ ¨ <ªøOà@‚ `Á‚  @Á‚   `Á‚ ð@Á‚ à? ÿ4xaB… 6tøbD„8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xÕ OÀ@ ÿü0pà?0À?ÿÀÀ  ü` ü'p Á‚"L¨p!Æ6pàÀˆ8`Aƒ&T¸aC‡!F”8‘bE‡ÿ H°`AÕÁ¨Nà@xêþ(€@0pÿ ðÿü@ 0ð€ ü` @ €øÀ@ðÀÀÀ?ü` ðŸÀ <ˆ0¡Â… :|1âAøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P<€ê„§à? ð€@ ð€@à€þ À?à€þ À?ÿü'p Á‚"L¨p!Æ6pàÀˆ!B„"Dˆ!B„"Dˆ T :á©øO @ø@ €þ€@ü €@ àà€ 0ðø` €þ@ €üðà` @ÿü'p Á‚"L¨p!ÆBŒˆÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— ÿTžÀÕü'P @þðï€ÿüû÷À?ÿþøOà@ü0À?ü0pà@þà€þà? 4xaB… 6tø°!€@„"Dˆ!B„"Dˆ!B„` :€ð¨à? € Pà?ÿ ` €@ ð€@(ð€ÿ$øA(ð€ÿ ð€@€þ(À@ÿ €@à€ÿ$XÐÿàA„ .dØÐáCˆ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êÂ8P :€ÿ 0P à0À?ü0À?à€þà€þ8`Aƒ&T¸aC‡8pàDˆ!B„"Dˆ!B„"DˆªOà@êþ(€@ü À@ 0À? À?ü €@8p @ÿÿ` @ø@ þà€ 0À? À?üðŸÀ <ˆ0¡Â… :|1"BøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸ@ø@ ø@ €ÿü0À?ø` €(À?ü0À?ü'p Á‚"L¨p!Æ6pàÀˆ!B„"Dˆ!B„"Dˆ ÿTžÀÕü'P ø@ €þ(À@ÿ €@ÿ ð€@ ðÀÀ` €þà€à€þø` @ü €@ü0À?ÿ H° Áƒ*\Ȱ¡Ã‡#"pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDª8 À@ @ €0øà€øÿÀ@@ €À,hð „ 2lèðaC€"Dˆ!B„"Dˆ!B„À@€ê$ðŸ@€@ ÀÀ@   ` @( À? þø`à@ €@þ8`Aƒ&T¸aC‡!F<àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“ÿ(Sª\ɲeAv.]ºtéҥˈ\ºÀ¥Ë”8àÒ¥K—.]2àÒ¥K—.]ªpàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.Y€K—*8pÀ¥K—.]ºdÀ¥K—.]ºT àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K— ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—.]ºtÀ@€ê$ðŸÀ <ˆ0¡Â… :ÿ|1¢Ä‰ 8pà@ÅŠ+V¬X±bÅŠ+V|` @uøOà@‚ D˜PáB† >„QâDŠ-^ÄXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3>d—1cÆŒ3f̘1cÆŒ¨ <ªøO @þ0pà@(ðŸÀ <ˆ0¡Â… :|1"C(Q¢D‰%J”(Q¢D‰%J0P@x TðŸÀ „QâD8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :€ð¨à?ü0À?ü0À?ü` à€þà? 4xaB… 6tøbDˆ1bĈÿ#FŒ1bĈ#F„` :€ð¨à?ð€@ü À@ÿ 0ÀÀøàü0À? 8À@þ@ € À@þà€ÿ$XÐàA„ .dØÐáCˆ%NàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈT'p A€ÿ  þÀ@0ð€0ð€ø` ÿðŸÀ <ˆ0¡Â… :|1"€DŒ1bĈ#FŒ1bĈ#B0 : ü'p €@0(þÀ?0€ ü` @ÿ0€@ÿüû'ðß¿þ8`Aƒ&T¸aC‡!F”8ñ€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#pÉ€K—.8pà€K—.]ºtÉÿ€K—¸téÒeFpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.9²séÒ¥K—.]Fà#¸té"€¸téÒ¥K— ¸té—.]ºÔàÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K— ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—.]ºtÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8pà@ÅŠ+V¬X±bÅŠ+V| bÅŠÿ+V¬X±bÅŠ+V¬8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— TžÀÕü'p Á‚øààÁƒÿü'p Á‚"L¨p!ÆBŒØÀ$J”(Q¢D‰%J”(Q¢D‰H”(Q¢D‰%J”(Q¢D‰%JdàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªOà@êþÿ8`Aƒ„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸ@à@þðïß?ÿüû7À?ÿþýðŸÀü0À?üÿ0À,hð „ 2lèð!D†81bĈ#FŒ1bĈ#FŒ@Ĉ#FŒ1bĈ#FŒ1bĈ 8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uá (PÀ@ € 0À?ÿ ðÀ@üà€þà€þ8`Aƒ&T¸aC‡!2pàÀˆ#FŒ1bĈ#FŒ1bDˆ p Á‚"L¨pÿ!ÆBŒ(q"ÅŠ/b„xàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕ„'p @uÿ @ þà€þø` €8pà?ÿ ðÀ@ÿ ðŸÀ <ˆ0¡Â… :|‘!€DŒ1bĈ#FŒ1bĈ#B1bĈ#FŒ1bĈ#FŒ1"CøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’ÿ%MžD™RåJ–- ²séÒ¥K—.]F0 : ü'P €ð€@ø` €ÿ @ @ ü'p Á‚"L¨p!ÆBdàÀ#FŒ1bĈ#FŒ1bĈDŒ1bĈ#FŒ1bĈ#FŒÈÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K—¸ À¥K— 8pÀ¥K—.]ºdÀ¥K—.]ºT àÀ.]ºÿtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\v—.].pàÀ—.]ºté’!—.]ºtéR%€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#péÒ¥K–8àÒ¥K—.]2àÒ¥K—.]ªpàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeDª8 À,hð „ 2lèð!Ĉ'R,àÀ+V¬X±bÅŠ+V¬Xñ!€Š+V¬X±bÅŠ+V¬X±â@øOÿà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P@x TðŸÀ <ˆ0!B P¨P¡B… *T¨P¡B… 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"C1bĈ#FŒ1bÄˆÑ €`Ĉ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ!;Œ1bĈ#FŒ1bĈq €êÂ8P :€ÿ$XÐàA„ Px€B…ÿ *T¨P¡B… *T8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹Àˆ#FŒ1bĈ#FŒ8p#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒ1bĈ#FŒÙaĈ#FŒ1bĈ#FŒ TžÀÕü'p Á‚"Lˆ€Âƒ*T¨P¡B… *T¨P¡Â8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ÈÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ± €dÿ̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f|È.cÆŒ3f̘1cÆŒ3:0P<€ê„§à?` €À@ 0P À@  À?þ8`Aƒ&T¸aC‡ 8pàDˆ!B„"Dˆ!B„"DˆªOà@êþ8`Á‚Ù ðŸÀ²û@ÿþ±øOà@‚ÿ±3HÀ,hð „ 2lèðÿ!Ĉ'R¤àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªƒPÀðÔü'P þà€þà€þàøÀ@ÿ ðÀ@ÿü0À@þ À,hð „ 2lèðaA€"Dˆ!B„"Dˆ!B„À@uá (PÀ,(@v d7Aƒ²3hÀ,hð „ 2lèð!Ĉÿ'RœàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªOà@êþ8À@ü0P €(ðß?ÿþýûà? 0À?ü0À?ÿ(ðß¿þø÷ï€ÿ$XÐàA„ .dØÐáÂ8"Dˆ!B„"Dˆ!B„"€êÂ8P :€ÿ$XP ;ì $Èn ;ƒ dgÐ ;€ÿ$XÐàA„ .dØÐáCˆ%Nÿ¤8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— TžÀÕü'pà? ðÁþ@p ‚` €ø` €þ øÀ@ÿ ðŸÀ <ˆ0¡Â… :|XÀ B„"Dˆ!B„"Dˆ!B0P<€ê„§à?Ù±cÇN ;vì²c÷ÝÀìþ±c7;vì²øÝ?vìØýcÇn ;vì²8pà@vÿ H°ÿ Áƒ*\Ȱ¡Ã‡#JœHq"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨ <ªøO @ü €ø` €ø@ €8pà?ü0À?üðÀ@ÿ ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"DÕÁ¨Nà@xêþ(Ý@vÿØ d÷@vìØ±ÈŽ@vÿØ d7ÝÀÿìþ±ÈN »ì²ûÇnàÀÙü'p Á‚"L¨p!ÆBŒ(q"ʼn8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` @uøOà@ð€@ À@ ` (` €ðÀ@ÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"DÕ„'p @uÿ Èn »Ù ÿøÝ¿ìþ8Ý@vÿØ d7ÝÀìþ±ÈN »Ù øÀÈà? 4xaB… 6tøbD‰)NpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†ªOà@êþ(Ý@vÿØ ÈN »Ù d÷Ý@vÙ üÇî;ì²ûÇn @vÈà? 4xaB… 6tøbD‰)NpàÀ€ÿ$XÐÿàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†ªOà@êþ(Ý@vÿØ d÷@v²Èî»ì²øÝ?vÙ d÷Ý@vÿØ 8p ;€ÿ$XÐàA„ .dØÐáCˆ%N¤8Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K—¸téÒ%KpéÒ¥K—.PÀÿþ8;vì²cÇn »Ù øï»ÿþ±û÷o »ÿþ±û÷ïß?vÿØýûÇîß?vÿþ ü÷Ý¿ìþýc÷ï»ÿþ±øOà@‚ D˜PáB† >„QâDŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8pà@ÅŠ+V¬X±bÅŠ+V| â?v+*dÇ]ÅŠ+V¬X±bÅŠ8pà? ÿ4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uá (PÀ @ A‚ @ A‚ $øA‚ÿ øÀ,hð „ 2lèðaA€"Dˆ!B„"Dˆ!B„DìØ±c"Dƒì²ƒ"Dˆ!B„"Dˆ 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êÂ8Pÿ :€ÿ  À,h° €ƒ8xð€ƒðŸÀ <ˆ0¡Â… :|XÀ B„"Dˆ!B„"Dˆ!B"Dˆ!B„"Dˆ!B„"D‡8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :€ð¨à?ðŸÀ ,ààÁüà Aü'p Á‚"L¨p!ÆpàÀˆ!B„"Dˆ!B„"Dˆÿ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8pà@ÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cƇì2f̘1cÆŒ3f̘1£CÕÁ¨Nà@xêþ(€þ ` ðÀ?€@ü`à?€@0À?@ þ8`Aƒ&T¸aC‡8pàáÇ>|øðáÇ>|øðáÇ TžÀÕÿü'P €ÿ(ÀÀÿøOà@‚ D˜PáB† >„QâDŠ-VpàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼XÝÅ‹/^¼xñâÅ‹/^¼À@uðª8ž:€ÿ  þ` €ø` €ðÀ@ÿ ðÀÀà€þà€þø` €ÿ$XÐàA„ .dØÐ¡CxøðáÇ>|øðáÇ>|øðá@Õ„'pÿ @uÿ H° à? 4xaB… 6tøbD‰)V´HÀ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbAv/^¼xñâÅ‹/^¼xñbDÕ„'p @uÿ @ €þ` €ø` €ø` €ø`àÀ ðÀ@ÿ ðÀ@ÿü@ @€ÿ$XÐàA„ .dØÐ¡CxøðáÇ>|øðáÇ>|øðá@Õ„'p @uÿÿ H° à? 4xaB… 6tøbD‰)V´HÀ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbAv/^¼xñâÅ‹/^¼xñbDÕ„'p @uÿ @ €þ` €ø` €ø` €ø`àÀ ðÀ@ÿ ðÀ@ÿüðŸÀ <ˆ0¡Â… :|8À B„"Dˆ!B„"Dˆ!B0P<€ê„§à?üÿðþðÀÀøOà@‚ D˜PáB† >„QâDŠ-RpàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼XÝÅ‹/^¼xñâÅ‹/^¼À@uá (PÀ` €àü0À?ü0À?ø`àÀ ðÀ@ÿà€þø` €ÿ$XÐàA„ .dØÐ¡CxøðáÇ>|øðáÇ>|øðá@ÕÁ¨Nÿà@xêþ(À?øà8À,hð „ 2lèð!Ĉ'R¬h‘"€\¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‚ì.^¼xñâÅ‹/^¼xñâňT'p A€ÿðÀ@ÿ À@þÿ ðð€@ÿ8` ÿüà? 4xaB… 6tøÀ>|øðáÇ>|øðáÇÿ>|8À@uá (PÀø` €þ`àÀü'p Á‚"L¨p!ÆBŒ(q"ÅŠ)8pàÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^,ÈîâÅ‹/^¼xñâÅ‹/^ŒàâE\¼xñâÅ‹8pàÀÅ‹/^¼xñâÅ‹/20P@x TðŸ@þà€8pà@ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢EŠ8pñâÅ‹/^¼xñâÅ‹/^ÿ¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ ²»xñâÅ‹/^¼xñâÅ‹#¸8¸xñâÅ‹/2pàÀ‹/^¼xñâÅ‹/^d` :€ð¨à?ü0À?ÿ0pàÀþ8`Aƒ&T¸aC‡!F”8‘bE‹8pàâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/dwñâÅ‹/^¼xñâÅ‹/FpñâÅ‹/^¼x±"€\¼xñâÅ‹/^¼xñÿ"Cª8 Àø` €ø@ à? 4xaB… 6tøbD‰)V´HÀ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbAv/^¼xñâÅ‹/^¼xñbD/^¼xñâÅ‹+8pàÀÅ‹/^¼xñâÅ‹/2p!†.^¼xñâÅ‹/^¼HÀ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbAv/^¼xñâÅ‹ÿ/^¼xñbD/^¼xñâÅ‹+8pàÀÅ‹/^¼xñâÅ‹/2p1!….^¼xñâÅ‹/^¼XÀ.^¼xñ¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‹.ºè¢‚bðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£C5jÔ¨Q£F8p@£F5jÔ¨Q£FhÔ¨Q£F5jÔ¨Q£AШQ£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jÔ¨Q£F5jd§Q£Fÿ5jÔ¨Q£FÿШQ£F5j¤àÀ5jÔ¨Q£F5j` @uøOà@‚ D˜PáB† >„QâDŠ-^ÄXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3>d—1cÆŒ3f̘1cÆŒȘ1cÆŒ3fÌ8À2f̘1cÆŒ3fÌØÀ@uá (PÀ  `àÀ(PÀ?(P€8ðŸ (PÀÀþ0pàÀ 0pàÀþÿ8`Aƒ&T¸aC‡!F”xÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K—¸téÒ%KpéÒ¥K—.¨ <ªøO @ 8pàÀÿ 8pàÀ (`à@ øOÀÀÿ 8pà?þ0pà@8PÀ,hð „ 2lèð!Ĉ 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$ÿÊ”*W²lYK—.]ºté2"—.]ºd àÀ.]ºtéÒ%CÕ„'p @uÿ (à? 4XPÀÁƒÿpðŸpР€ƒp° €ÿ$XÐàA„ .dØÐáCˆ%pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeD8`Aƒ&T¸aC‡!F”8‘"Äü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/20P<€ê„§à?ÿ øO€ðO€ PÀ?ÿü ` ü0p  P€€ü'@€  @ €þ (@€ @€@þ 8pà@ÿ H° Áƒ*\Ȱ¡Ã‡#J4àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈ\ºté’%€¸téÒ¥K—  T :á©øOà@ øOÀ?ðOÀ@ÿüðO€þ ÿ(@  8PÀ? 8ðŸ€þ (àŸ€þ (PÀ? ðO€@(à? 4xaB… 6tøbD‰8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºt€K—.]²pàÀ—.]ºté’!€êÂ8P :€ÿ(` ü P€@ÿ ðOÀ?ÿ ðOÀ@ÿ (` ü PÁðOÀ?ÿ (àŸðO€ÿ@ü PA‚ü'p Á‚"L¨p!ÆBŒ(Ñ €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#péÒ¥K–8àÒ¥K—.]20P@x TðŸÀ0PÀ?ðOÀ@ÿüðOÀ@ÿ @ðŸ (àŸ 0PÀ?ÿü'` €þ (àŸ ø'@ ‚ øOà@‚ D˜PáB† >„Q¢AøOà@‚ÿ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]FàÒ¥K—,8pÀ¥K—.]ºd` :€ð¨à?  PÀ@ÿ PÀ?üðOÀ?ü0PÀ? PÀ@ÿ0🀠ø'àŸ€þ (@À?ÿ ðO€@ü PÀÀ øOà@‚ D˜PáB† >„Q¢AøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžDÿ™RåJ–- ²séÒ¥K—.]FàÒ¥K—,8pÀ¥K—.]ºd` @uøOà@ ü'@€ÿ PÀ?(àŸ€ (@€0ðŸ P€@(@€ÿ @À@þ ø'@  P€ P€@ ðŸÀ <ˆ0¡Â… :|1¢Dƒ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒÀ¥K—.Y8pà€ÿK—.]ºtÉÀI¸¬(€¡—.]žpàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†N x(@€./ P(À¥K—(8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—.]ºt€K—.]²pàÀ—.]ºté’!—.]ºtéR%€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#øO @uøOà@‚ D˜PáB† >„QâDŠ8p bÅŠÿ+V¬X±bÅŠ+>0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b,àÀ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ²Ë˜1cÆŒ3f̘1cÆŒ TžÀÕü'p Á‚"Lø ;þ8p ;‚²øOà@‚ D˜PáB† >„xÀ"FŒ1bĈ#FŒ1bĈ!¨ <ªøOà@‚ À Aƒøï€ÿ$Xðƒü'p Á‚"Lÿ¨p!ÆBŒ(q"E‰8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xðà©S„hÀ"FŒ1bĈ#FŒ1bĈ!PÀþ8€@ þ þ` €ÿü €@ €@0À,hð „ 2lèð!Ĉ'RŒàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈL² ÉŽ!;—.]pàÀ—.]ºté’!—0àÒ¥K—+8pÀ¥K—.]ºtéÒ¥K—.ÿ]ºtéÒ¥K—.]ºäÈÎ¥K—.]ºt€Iv"Ù)dçҥ˂8àÒ¥K—.]2à$…\ºté’%€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#péÒ¥K–8àÒ¥K—.]2àÒ¥K—.]ªpàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD€þýûPÀþ8`Aƒ&T¸aC‡!F”8‘bA¨X±bÅŠ+V¬X±bÅŠ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœÿH±¢Å‹ 8pà@ÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cƇì2f̘1cÆŒ3f̘1£CÕ„'p @uÿ H° Áì„hÀ"FŒ1bĈ#FŒ1bĈ!¨ <ªøOà@‚Ùd';v ,8]Áì dðŸÀ <ˆ0¡Â… :|1¢Ä‰+pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãÿG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xðà©‹ÈŽ »’ì²séÒå@péÒ¥K—.¨„XÀ"FŒ1bĈ#FŒ1bĈ!¨@uÂSðŸÀìØ±ÈŽ;vÙ±cÇî»ÿ±cÇN ;vìþ±c';vì²ÈŽ;ì8À,hð „ 2lèð!Ĉ'R¬(Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGAÿ†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T :á©øO @vÙýc7Ý?vÙ d'Ý@vÿØ d÷ÝÀìþ±Èî»ìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡ 8pà@Ĉ#FŒ1bĈ#FŒ1"DÕÁ¨Nà@xêþ8p »ì²ûÇn ;ìØ±#8Ý?vÙ d÷Ý@vÿØýc7Ý?v dðŸÀ <ˆ0¡Â… :|1¢Ä‰+ pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÿÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xðà©+Èn »Ù øÝ¿ìþýûÇîß¿ìþ±û÷o Àìþýû7Ý?vÿþýc÷o Àìþ8 @vÿ H° Áƒ*\Ȱ¡Ã‡ 8pà@Ĉ#FŒ1bĈ#FŒ1"DÕÁƒO:xðà©3ÈŽ;vÿØ d÷Ý@vÙ dÇŽ»ì²Èî»ìþ±û@ÿØü'p Aìþ8`Aƒ&T¸aC‡!F”8‘bE8ðŸÀ <ˆ0¡Âÿ… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xðà©S„QâDŠ-^ĘÑ!€êàT'p „QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„Q €H”(Q¢D‰%J”(Q¢D‰%¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„QâDŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@€ê$ðŸÀìØ±c';vÙýcÇŽ»ÿØ üÇN ;vì²c'@vÙ d7À,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(À@€ê$ðŸÀ €@ üÿÿ À?@  €@0À,hð „ 2lèð!Ĉ'R”àÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈ,²“È.";†ì\ºtÀ\ºtéÒ¥K†\. C.]ºtÉÀ\ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥KŽì\ºtéÒ¥K—HdÇŽ»ˆìØMd§K—.%8pà€K—.]ºtɀ˅&PÀ¥K—.[ÿ8pà€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÉ‘K—.]ºté2"—.]ºd àÀ.]ºtéÒ%C.]ºtéÒ¥JpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.q;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒPÀþ8`Aƒ&T¸aC‡!F”8‘bA¨X±bÅŠ+V¬X±bÅŠ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ 8pà@ÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆÿŒ3f̘1cÆŒ3f̘1cƇì2f̘1cÆŒ3f̘1£CÕ„'p @uÿ H° AvìØ±3hРAv ²øOà@‚ D˜PáB† >„ñ€H”(Q¢D‰%J”(Q¢D‰%¨ <ªøOà@‚ÿ,XP €‚ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pàÀÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^,ÈîâÅ‹/^¼xñâÅ‹/^Œ` :xðà©SpàÀ‹/^¼xñâÅ‹/^d` :xðà©S„Ñ €H”(Q¢D‰%J”(Q¢D‰%ÿ¨ <ªøOà@‚ ²cÇŽAƒ ²3HÀ,hð „ 2lèð!Ĉ'R¬ØÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P<€ê„§à?Ù d÷Ý@vÿØ d7ð»Ùýc7p »ì8À,hð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(À@uðª8ž:€ÿ d7Ý?vÙýc'ÝÀì²ûÇn »ìØÿ d÷@vÈà? 4xaB… 6tøbD‰)VdàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªƒž:uðàÁSWÝ@vÿ²(ð»ÿØýû÷ï»ÿþ d÷Ý¿ÿ²ûÇà? dðŸÀ <ˆ0¡Â… :|1bA(Q¢D‰%J”(Q¢D‰%J0P„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F`‘]Hv Ù¹té’"€¸téÿÒ¥K— Xdg’Cv.]ºté²!€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#ÈŽ;v#Ù)dçҥˊ8àÒ¥K—.]2 ‘;vìP²SÈÎ¥K—.]:pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†\ºtéÒ¥K•8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]rˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ ¨Nà@‚ÿ H° Áƒÿ*\Ȱ¡Ã‡#JœH± €T¬X±bÅŠ+V¬X±bŇT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8p cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ãCv3f̘1cÆŒ3f̘Ñ!€êÂ8P :€ÿ$X° ;vìØ4HA‚ì ÈÎ Avÿ H° Áƒ*\Ȱ¡Ã‡ÿ8pà@Ĉ#FŒ1bĈ#FŒ1"DÕ„'p @uÿ H° AvìØ±3hРAƒìرÿ3hÐ`Av²3HÀ,hð „ 2lèð!Ĉ'6pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xðà©‹ÈN »ì.²ƒÈŽ!;—.Y8pà€K—.]ºtÉÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P<€ê„§à?Ù d÷Ý@vÿØ d7ð;ì²ûÇn »ì d÷@vÿØ d÷;ìþ±8pà@vÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆÿ!B„"Dˆ!B„"DÕÁ¨Nà@xêþ(Ý@vÿØ d÷@v²Èî;ì²Èî;vÙýc7;vþc÷@vÙýc7Ý?vÿØ d÷ÝÀ²øOà@‚ D˜PáB† >„QâD†8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0Pÿ„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒÿ¥K—.]F`‘Ë„ì²sé’%€¸téÒ¥K— Xdçr"»†ì²séÒ¥K‰8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]rdçÒ¥K—.]ºŒ@";vìØ¹\ÈN!;—.[8pà€K—.]ºtÉ€DvìØ±sI‘Cv Ù¹téÒåDpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.9²séÒ¥K—.]FàÒ¥K—,8pÀ¥K—.]ºdÀ¥K—.]ºT àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÉ%—8ˆÀ,hð „ 2lèÿð!Ĉ'R¬hñ"ÆŒ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH± €T¬X±bÅŠ+V¬X±bŇT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8p cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ãCv3f̘1cÆŒ3f̘Ñ!€êÂ8P :€ÿ$X° ;vìØdgÐ »ì ÈΠÁì ²3hP ;ƒÙü'p Á‚"L¨p!Æ 8pàÀÇ>|øðáÃÿ‡>|øðáǨ <ªøOà@‚ ²cÇŽAv ²ûÇΠAì ÈÎ Avÿ H° Áƒ*\Ȱ¡Ã‡#JœHQ!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨|øðáÇ>|øðáÇ T :á©øOà@vìØ±ÈŽ;ìØýc7ð;ì²c'»ìØýc÷;vì²Èî;vÿØ dÇŽ@vÿرÈnàÀÙü'p Á‚"L¨p!ÆBŒ(q"Å„8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xÕ OÀ²Èî»ÿìþ±Ènà?vÙýc'Ý?vÙ d÷Ý@vÿØ d÷@vÿØ d÷;ìþ±(Ý?vì²ûÇn »ì8À,hð „ 2lè €<|øðáÇ>|øðáÇ>|øp €êàT'p |øðáÇ>|øðáÇ T|øðáÇ>|øðáÇ>` :€ð¨à?Ù d÷Ý@vÿØ d7Ý@vÿØ d÷@vÙýc7Ý?vÙÿ±ûÇN »ì²ûÇn »ì8À,hð „ 2lèð!Ĉ'RLàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈT'p A€ÿdÇŽ;ìØ±Èî;vìØ üÇN ;vÙýc'Ý?vìØ±ÈŽÝ?vÙýc';vÙ d÷ ;ÿ±ûÇîß¿ìþýøï»ÿØýûÇîß?vÿþýcðŸÀ <ˆ0¡Â… :$àÀ>|øðáÇ>|øÿðáÇ>` @uøOà@vìØ±ÈŽ»ìþ±cÇŽÝÀì²c7Ý?vÙýcÇŽ»ìØýc'Ý?vÙ±c'Ý@vÿØ d'@vÙü'p Á‚"L¨p!ÆBŒ(q"Å„8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒÀ";—$Ù1dçÒeDpéÒ¥K—.°ÈÎ%Dv Ù¹téÒåHpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.9²séÒ¥Kÿ—.]F ‘;vì\šd§K—8pÀ¥K—.]ºd@";vìØ¹”ÈN!;—.]º$ àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K— ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºä;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒPÀþ8`Aƒ&T¸aC‡!F”8‘bA¨X±bÅŠ+V¬X±bÅŠ ¨Nà@‚ÿ H° Áƒ*ÿ\Ȱ¡Ã‡#JœH±¢Å‹ 8pà@ÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cƇì2f̘1cÆŒ3f̘1£CÕ„'p @uÿ H°`A€ì øOà@‚ÙýÈN ÀÿØü'p Á‚ÿØ$Èà? 4xaB… 6tø"Aˆ1bĈ#FŒ1bĈ#F„` :€ð¨à? ,@ÿþ±øOà@‚ d'ÝÁìþ8`Aƒ&T¸aC‡!F”8‘bÅ8ðÿŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xðà©S„8À"FŒ1bĈ#FŒ1bĈ!PÀþ8;vì²cÇn »Ù øï»ÿ²û7Ý¿ÿþû÷oà¿ÿ²ûÇîß?vÿþ±û÷Ý¿ÿØü'p Á‚"L¨p!ÆBŒ(q"ÅŠÿ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºt€Ev. ²cÈÎ¥K—ÿ8pÀ¥K—.]ºdÀ"»Œì,²cÈÎ¥K—.]pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeDÙ±cÇÎ%Bv Ù¹téR €¸téÒ¥K— HdÇŽ;ì.²SÈÎ¥K—.]pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ\ºtéÿÒ¥K†\ºtéÒ¥K•8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%—\rÉ%ŽbðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Cª8 À,hð „ 2lèð!Ĉ'R,àÀ+V¬X±bÅŠ+V¬Xñ!€Õ Hà? 4xaB… 6tøbD‰)V´xcAȘ1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3fÌø]ÆŒ3f̘1cÆŒ3ft` :€ð¨à? ,ÿ@ÿ H°à@vìØ±3hРAv ²øOà@‚ D˜PáB† >dàÀ!B„"Dˆ!B„"Dˆ!¨ <ªøOà@‚ d'P À,8;vì 4hA‚ìþ8`Aƒ&T¸aC‡!F”8‘"CøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P\àÀ!B„"Dˆ!B„"Dˆ!¨@uÂSðŸ@ì²ûÇn »ì²cÇŽÝ@vÙ d7Ý?vÙ Èn »ì²ûÇŽ@vÿØ d7pàÀìþ8`Aƒ&T¸aC‡!F”8‘âBøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ÿ²séÒ¥K—.]F0P„QâDŠ-^ĘÿQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F`‘K‡ì²séò$€¸téÒ¥K— XdçÒ!;†ì\ºté²$€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#ÈŽ;v.!²SÈÎ¥K”8àÒ¥K—.]2 ‘;vì\Bd§K—.]špàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†\ºtéÒ¥K•8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥Kÿ—.]rˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœH± €T¬X±bÅŠ+V¬X±bŇT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8p cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ãCv3f̘1cÆŒ3f̘Ñ!€êÂ8P :€ÿ$X° ;ƒÙ,ÈN ;ƒÙü'p Á‚"L¨p!ÆBŒ8À$Jÿ”(Q¢D‰%J”(Q¢D‰ TžÀÕü'p Á‚²(à? @ÿ H° Áƒd§B… *T¨P¡B… *T¨P¡B… 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N„Q €H”(Q¢D‰%J”(Q¢D‰%¨@uÂSðŸ@ì²ûÇn »ì²cÇŽÝ@vÙ d7Ý?v²(ðß?vÿþýc÷Ý¿ìþýûÇî»ÿþ±û'ðß?vÿØü'p »ì²ûÇn »ì8À,hð „ 2lèð!Ĉ'pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xðà©+Èn »ÿÙ øÝ¿ìþ8;vìþ±Èî@vþc÷ÀÈà? 4xaB… 6tøbD8 Q¢D‰%J”(Q¢D‰%J”` :xðà©S„QâDŠ8p bÅŠ+V¬X±bÅŠ+>0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b,àÀ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ²Ë˜1cÆŒ3f̘1cÆŒ TžÀÕü'p Á‚ÙdgÐ »ì ÈÎ Avÿ H° Áƒ*\Ȱ¡Ã‡8pà@Ĉ#FŒ1bĈ#FŒ1"DÿÕ„'p @uÿ H°`A€ì øOà@‚d'P À,hð „Ù±c—B‚ì²S¨P¡B… *T¨P¡B… *DàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªƒž:uðàÁS‘@vÙ1d÷Cv.]ºDàÀ.]ºtéÒ%CÕÁƒO:xðà©‹ÈN »Šì²ãÈŽ"»ì²›ÈŽ!;—.]vpàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºÿté’#;—.]ºtéÒeDÕÁƒO:xðà©‹ÈN ;vÙ±cÈî!;†ì\ºt‰À\ºtéÒ¥K†ªƒž:uðàÁS‘@vÙdÇ‘EvÙMdÇK—.;8pà€K—.]ºtéÒ¥K—.¹ä’K.¹ä’K.¹ä’KÄà? 4xaB… 6tøbD‰)V´xcF‡ªƒPÀðÔü'p ;vìØ dÇŽ@vìþ±c7»ìرÈŽ;vÿØ dÇŽ@vÿرÈnàÀÙü'p Á‚"L¨p!ÆBTàÀ#ÿFŒ1bĈ#FŒ1bĈ T :á©øOà@vìØ±ÈŽ;ìØýc7p ;vÿرÈŽ;ìØýc7ð;ìØ±ÈŽ@vìØ dÇŽ@vÿرÈŽ@vìØ dÇŽ;ìØ±Ènà@vìþ±c÷Ý?vÿرÈŽ;vÿØ 8p ;€ÿ$XÐàA„ .dØÐáCˆ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàT'p „QâDÿŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„QâDŠ8p bÅŠ+V¬X±bÅŠ+>0 : ü'p Á‚"Lÿ¨p!ÆBŒ(q"ÅŠ/b,àÀ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ²Ë˜1cÆŒ3f̘1cÆŒ TžÀÕü'p Á‚²(ðß?vÿ H° Á‚ì<Èîà@vÿ H° Áƒ*\Ȱ¡Ã‡8p"Dˆ!B„"Dˆ!B„"DÕ„'p @uÿ H°`Av ²3X@v ²øOà@‚ D˜PáB† >„QâDŠ8pàÀ,hð „ 2lèð!ÿĈ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N4àÀ!B„"Dˆ!B„"Dˆ!¨@uÂSðŸÀìØ±c';vÙ±ûÇnà@vìØ dÇŽ»ìرÈî»dðŸÀ <ˆ0¡Â… :|1¢Äÿ‰+:pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁ¨Nà@xêþ(Ý@vÿØ d÷ÝÀìþcÇN »ì²Èî»ìþ±Èî;vÙýc7Ý?vÙýc'ÝÀ²øOà@‚ D˜PáB† >4àÀ!B„"Dˆ!B„"Dˆ!¨@uÂSðŸ@ì²ûÇn »ì²8p »ì²ûÇn »ìþ±8pà@vÿ H° Áƒÿ*\Ȱ¡Ã‡#JœH±¢CøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P4àÀ!B„"Dˆ!B„"Dˆ!¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„QâDŠ8pàÀ,hð „ ÿ2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€Õ Hà?Ù±cÇN ;vì²Ènà?vÙýc7;vÙ±ûÇN ;vìØýc7Ý?vìØ±ÈŽÝ?vÙýc'@vÙ dðŸÀ <ˆ0¡Â… :|hÀ B„"Dˆ!B„"Dˆ!B0 : ü'p ;vìØ dÇŽÝ@vÿ²(ðß¿ìþ d÷ïß¿ÿþ±ûÇîß?vÿþ±û÷Ý¿ÿØü'p Á‚"L¨p!ÆBŒ(ÿq"ÅŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºt€Ev*ÙdçCv.]ŠpàÀ—.]ºté’!‹ìH²cÈÎ¥K—.]>pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeDÙ±cÇî$;vìØ!d÷Bv.]ŽpàÀ—.]ºté’!‰ìرcg’Bv.]ºté"€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#péÒ¥Kÿ–8àÒ¥K—.]2àÒ¥K—.]ªpàÀ—.]ºtéÒ¥K—.]ºtéÒ%—\rÉ%—\r‰#€Øü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/bÌèÀ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8pà@ÅŠ+V¬X±bÅŠ+V|` @uøOà@‚ D˜PáB† >„QâDŠ-^ÄXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3>d—1cÆŒ3f̘1cÆŒ¨ <ªÿøO @vþcÇŽÀ,hð Bìþc—0a„ &L˜0a„ &LXÀþ8`Aƒ&T¸aC‡!F”8‘bE‹¨ <ªøOà@‚ ²+ÈΠAì dðŸÀ <ˆ0¡Â… :|1¢Ä‰+VpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xðà©cÈn ;’ì²séÒ¥BpéÒ¥K—.¨„QâDŠ)8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N„QâDƒ8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xðà©S„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]FpR@C ¸téò"€¸téÒ¥K— Xdç"»ƒì²cÿÈÎ¥K—.8pà€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÉ‘K—.]ºté2"€“ P(À¥K—8pÀ¥K—.]ºd@";vìØ¹lÈŽ;vÙ=d§K—.]6pàÀ—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†\ºtéÒ¥K•8àÒ¥K—.]ºtéÒ¥K—.]ºtÉ%—\rÉ%—8ˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡ÿÇ#JœH± €T¬X±bÅŠ+V¬X±bŇT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8p cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ãCv3f̘1cÆŒ3f̘Ñ!€êÂ8P :€ÿ @ÀÀ8P € 8pà?ÿ H° Áƒ*\Ȱ¡Ã‡#&pàÀ‰%J”(Q¢D‰%J”(Q¢DÕ„'p @uÿ H°`AvÙ4hp ;ƒÙü'p Á‚ÿ"L¨p!ÆBŒ(q"ÅŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uðàÁS§„!€H”(Q¢D‰%J”(Q¢D‰%¨@uÂSðŸÀìØ±c';vÙ±ûÇŽÝ@vì²cÇn ;vì²ûÇŽ@vÈà? 4xaB… 6tøbD‰)VlàÀÿ H° Áƒÿ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªƒPÀðÔü'p ü'àŸ ø'` €þ (àŸ€ðŸÀ <ˆ0¡Â… :|1"B(Q¢D‰%J”(Q¢D‰%J0P<€ê„§à?Ù d÷Ý@vÿØ d÷Ý?vÿØ d7Ý@ìþ±c'Ý?vÈà? 4xaB… 6tøbD‰)VlàÀÿ H° Áƒ*\Ȱ¡Ã‡#JœÿH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲeAv.]ºtéҥˈªƒž:uðàÁS—PÀ@ø'@ þ (àŸ€øOÀ(à? 4xaB… 6tøbD„8 Q¢D‰%J”(Q¢D‰%J”` :xðà©S„QâDŠ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÿÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P<€ê„§à?0pÿà?ÿ PÀ?üðOÀ@ÿ 8p €ÿ$XÐàA„ .dØÐáCˆ8pà€D‰%J”(Q¢D‰%J”(Q"€êàT'p „!€H”(Q¢D‰%J”(Q¢D‰%PÀþ8;vì²cÇn »ì d7;vÿÙ±cÇî;ìØ±c÷Ý@vÿØ d'@vÙü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀI 0àҥˋ8àÒ¥K—.]2`‘]Kv Ù¹téÒ¥Kƒ8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]rdçÒ¥K—.]ºŒइ péÒ%FpéÒ¥K—.ÈŽ;v.ÿ±SÈÎ¥K—.]pàÀ—.]ºÿtéÒ¥K—.]ºtéÒ¥K—.]ºté’#;—.]ºtéÒeD.]ºtÉÀ\ºtéÒ¥K†\ºtéÒ¥K•8àÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]rdðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Cª8 À,hð „ 2lèð!Ĉ'R,àÀ+V¬X±bÅŠ+V¬Xñ!€Õ Hà? 4xaB… 6tøbD‰)V´xcAȘ1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ÿcÆŒ3fÌø]ÆŒ3f̘1cÆŒ3ft` :€ð¨à?0pàÀ(`à@øOÀ,hð „ 2lèð!Ĉ 8p@¢D‰%J”(Q¢D‰%J”(À@uá (PÀ,X]AvÙÈÎ Avÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢E8pñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹ ²»xñâÅ‹/^¼xñâÅ‹#¨„!€H”(Q¢D‰%J”(Q¢D‰%¨„!€H”(Q¢D‰%J”(Q¢D‰%¨ <ªøO @vÙýc7Ý?vÙ d'@vÿØ d÷ÝÀ²øOà@‚ D˜PáB† >„QâDŠ-þpàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼XÝÅ‹/^¼xñâÅ‹/^¼À@€ê$ðŸÀÿøO€þ (@ € P€@ P€@ ðŸÀ <ˆ0¡Â… :|1"B(Q¢D‰%J”(Q¢D‰%J0 : ü'p ;vìØ dÇŽÝ@vÿØ ÈN »ì²ûÇN ;ì²Èà? 4xaB… 6tøbD‰)V´øÀ.^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñbAv/^¼xñâÅ‹/^¼xñbD! h(€¡€‹/^¼xñ"€\ÿ¼xñâÅ‹/^¼xñ"CÙ]$ÈŽ!»‹/^¼xñâÅ‹/þpàÀ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼xñâÅ‹/^¼XÝÅ‹/^¼xñâÅ‹/^¼ÀEˆ P(àâÅ‹/^¼øÀ.^¼xñâÅ‹/^¼x‘!‰ìرcwÑ ;…ì.^¼xñ¢‹.ºè¢‹. øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]FàÒ¥K—,8pÀÿ¥K—.]ºdÀ¥K—.]ºT àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÀ*V¬X±bÅŠ+V¬X±âCª8 À,hð „ 2lèð!Ĉ'R¬hñ"Æ‚81cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘ñ!»Œ3f̘1cÆŒ3fÌèÀ@uá (PÀ,h€Aƒ 4(€A‚þ8`Aƒÿ&T¸aC‡!pàÀˆ#FŒ1bĈ#FŒ1bDˆªOà@êþ8`Á‚Ù ðŸÀ dÇŽÝ@v þcg ;€ÿ$XÐàA„ .dØÐáCˆ%N¤Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T„QâDŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uðàÁS§„QâDŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºt€K‰`À¥K—8pÀ¥K—.]ºdÀ"»ì6²cÈÎ¥K—.Uÿ8pà€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÉ‘K—.]ºté2"— !…\ºtYÀ\ºtéÒ¥K†$²cÇŽFvìØ±ëÈN!;—.]º\ àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K— ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ%—\rÉ%—8ˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ ¨Nà@‚ÿ H° Áƒ*\Ȱ¡Ã‡#JœÿH± €T¬X±bÅŠ+V¬X±bŇT'p A€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ8p cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1ãCv3f̘1cÆŒ3f̘Ñ!€êÂ8P :€ÿ$X 4h° ƒü'p Á‚"L¨p!ÆBŒHÀ$J”(Q¢D‰%J”(Q¢D‰ TžÀÕü'p Á‚²(à? 4ÈŽ»ì üÇŽ;ƒÙ4(ÿA‚ìþ8`Aƒ&T¸aC‡!F”8Q!€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨„QâDŠ-^ĘÑ!€êàT'p „QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P<€ê„§à?ðÀ@ÿ€ø@ €þà€ðŸÀ <ˆ0¡Â… :|1â@(Q¢D‰%J”(Q¢D‰%J0P<€ê„§à?ÿÙ d÷Ý@vÿØ ÈN @€ÿd÷Ý@vÿØ d';vÙ üÇî»ì²cÇn ;ì²ûÇŽ@vÿØ d÷ÝÀ²øOà@‚ D˜PáB† >„QâÄ„8ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[dçÒ¥K—.]ºŒ` :xðà©S„ñ€H”(Q¢D‰%J”(Q¢D‰%¨@uÂSðŸÀìØ±c';vÙ±ûÇnà?vÙ±c';ìØ±ÈŽ;ìþ±c'»ìþc';vÙýc÷;ìØýc7pàÀìþ8ÿ`Aƒ&T¸aC‡!F”8‘"€ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨@uÂSðŸ@ø` €8À@ÿ ðþ`àÀü'p Á‚"L¨p!ÆBŒøÀ$J”(Q¢D‰%J”(Q¢D‰ T :á©øO @vÙýc7Ý?v²(ðß?vÿþýc÷Ý¿ìþýûÇî»ÿþ±û'ðß?vÿØýû7Pà¿ÿìþýûÇî»ÿýc÷Ý¿ìþ8 @vÿ H° Áƒ*\Ȱ¡Ã‡#JœHÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T„QâDŠ-^ÄXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3>d—1cÆŒ3f̘1cÆŒ¨ <ªøOà@‚ €Aƒ0HÀ,hÿð „ 2lèð!Ĉ8p@¢D‰%J”(Q¢D‰%J”(À@uá (PÀ,X ;þ8`Aƒ d'P À dGà@v dðŸÀ <ˆ0¡Â… :|1¢Ä‰ÿ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N„Ñ €H”(Q¢D‰%J”(Q¢D‰%¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™ÿRåJ–- ²séÒ¥K—.]F0P„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0 : ü'p 0À?(ÿ €@ü'p Á‚"L¨p!ÆÿBŒhÀ$J”(Q¢D‰%J”(Q¢D‰ ¨Nà@‚ÿ ÈŽ;vÙ±c7Ý?vþcÇŽ@vÙ±c7;vÙ d'Ý?vþcÇŽ@vÿØ d'Ý?vÙ d'Ý@vÿ H° Áƒ*\Ȱ¡Ã‡#JœHÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K—¸L€!—.]VpàÀ—.]ºté’!‹ì\fdÇK—.]jpàÀ—.]ºtéÒ¥K—.]ºtéÿÒ¥K—.]ºté’#;—.]ºtéÒeD.PÀ¥K—8pÀ¥K—.]ºd@";vìØ¹ÜÈN!;—.]ºÜàÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K— ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—.]rÉ¥ˆðïß?€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰ 8pà@ÅŠ+V¬X±bÅŠ+V|` @uøOà@‚ D˜PáB† >„ÿQâDŠ-^ÄXÀ2f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3>d—1cÆŒ3f̘1cÆŒ¨ <ªøOà@‚ €Aƒ$À A ðŸÀ <ˆ0¡Â… :|Q €DŒ1bĈ#FŒ1bĈ#B0P@x TðŸÀ ÈN @€ÿ$X ;ƒÙü'p Á‚"L¨p!ÆBŒ(q"ÅŠ8pà? 4xaB… 6tøbD‰)V´xcÿF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uðàÁS§„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„QâDŠ#8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"—0àÒeKpéÒ¥K—.°È.$;†ìÿ\ºtéÒ¥DpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.9²séÒ¥K—.]Fà$…\ºt àÀ.]ºtéÒ%CÙ±cÇn$;…ì\ºtéÒåDpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.9²séÒ¥K—.]FàÒ¥K—,8pÀ¥K—.]ºdÀ¥K—.]ºT àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéÒ¥Kàß¿Õ Hà? 4xaB… 6tøbD‰)pàÀŠ+V¬X±bÅŠ+V¬øÀÿ@€ê$ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ± €d̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f|È.cÆŒ3f̘1cÆŒ3:0P@x TðŸÀ ‚ ð€Aƒ4ø@A ` €ÿ$XÐàA„ .dØÐ¡AxøðáÇ>|øðáÇ>|øðá@Õ„'p @uÿ H°`A€ì øOà@‚ ²cÇÎà@v dg ;€ÿ$XÐàA„ ÿ.dØÐáCˆ%N¤ÈÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T|øðáÇ>|øðáǨ@uÿÂSðŸÀìØ±c';vÙ±ûÇnà?vÙ±c';ìØ±Ènà@vìþ±c÷Ý?vÿرÈŽ;vÿØ 8p ;€ÿ$XÐàA„ .dØÐáCˆ%N¤¸Àþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T :á©øO @ü0À? ü@ €ø@ þà€þà€þ À?ø€@ÿ ðÀÀÿøOà@‚ D˜PáB† pàÀ‡>|øðáÇ>|øðáÇ0P<€ê„§à?Ù d÷Ý@vÿØ ÈN @€ÿüÇî;ì²ÈŽ»ì²Èî;vÙýc7Ý?v dðŸÀ <ˆ0¡Â… :|1¢Ä‰8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N|øðáÇ>|øðáÇ T|øðáÇ>|øðáÇ0P@x TðŸ@ì²ûÇn »ì²ø@vÙýc'Ý@vÿØ d'@vÙýc7Ý?vÙýc7pàÀìþ8`Aƒ&T¸aC‡!F”8‘âBøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒÿ¥K—.]F0 : ü'p 0À?ø€@ø@ €0€ø@ à@þðÀ¿ÿüû7ðß?ÿþø÷À¿þýûà? 4xaB… 6tXÀ>|øðáÇ>|øðáÇ>|8À@€ê$ðŸÀìØ±c';vÙýc7ð»ìرc'@vìØ dÇŽÝÀìþ±Èî»ì²cÇŽÝ?vÙ d'Ý@vÿ H° Áƒ*\Ȱ¡Ã‡#JœHq!€ÿü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#pé’!†\º”àÀ.]ºtéÒ%CÙ¹dÈî;†ì\ºté²$€¸téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.#pé²!…\ºœàÀ.]ºtéÒ%CÙ±cÇÎeBvìØ±ÈN!;—.]º4 àÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K— ¸ÿtéÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºÄ@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹1ft` @uøOà@‚ D˜PáB† >„QâDŠ8p bÅŠ+V¬X±bÅŠ+>0 : ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b,àÀ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ²Ë˜1cÆŒ3f̘1cÆŒ TžÀÕü'p Á‚(à?ÿ ð ÿýðŸÀ þ` €ÿ$XÐàA„ .dØÐáCˆ8p bĈ#FŒ1bĈ#FŒ"€êÂ8P :€ÿ$XÐ ;vì 4XAì dðŸÀ <ˆ0¡Â… :|1¢Ä‰+pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xð੃@ ˆ €!—.] pàÀ—.]ºté’!€êàÁƒ§N„QâDŠ 8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N„QâDŠ8p bÅŠ+V¬X±bÅŠ+>0 : ü'p Á‚"L¨p!ÆÿBŒ(q"ÅŠ/b,àÀ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ²Ë˜1cÆŒ3f̘1cÆŒ TžÀÕü'p Á‚(à?  4À Aÿ H° Áƒ*\Ȱ¡Ã‡ 8p"Dˆ!B„"Dˆ!B„"DÕ„'p @uÿ H° AvìØ4h° ;ƒÿ±3HÀ,hð „ 2lèð!Ĉ'R¬øÀþ8`Aƒ&T¸aC‡!Fÿ”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K— T„QâDŠÿ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uðª8ž:€ÿ  À?ü @ €þ`à@ü0À?ø@ €ðŸÀ <ˆ0¡Â… :|ÈÀ B„"Dˆ!B„"Dˆ!B0P<€ê„§à?Ù d÷Ý@vÿØ dÇŽÝÀÿØýc'@vÿØ d÷Ý?vÙýc'Ý?vÈà? ÿ4xaB… 6tøbD‰)VpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeDÕÁƒO:xðà©3` @þðï€ÿ €@ü ÀÀø` €ø@ €ðŸÀ <ˆ0¡Â… :|ÈÀ B„"Dˆ!B„"Dˆ!B0P„QâDŠ8pà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@uðàÁS§dàÀ!B„"Dˆ!B„"Dˆ!¨ <ªøO @vÙýc7Ý?vÙ d'Ý@vÿØ d'Ý?vÙýc÷Ý@vÿØ d÷ÝÀ²øOà@‚ D˜PáB† >„QâDŠ8pà? 4xaB… 6tøbD‰)Vÿ´xcF9vôødH‘#I–4yeJ•+Y¶,ÈÎ¥K—.]ºtÀ@€ê$ðŸÀ À@ÿ(ðß?ÿþø÷ïßÀÿüû÷o €ÿþ ü÷ïŸÀþø÷ï€ÿüðï€ÿüûàß¿þ8`Aƒ&T¸aC‡8pàDˆ!B„"Dˆ!B„"DˆT'p A€ÿdÇŽ;ìØ±ÈN ;vìþcÇŽ»ì²Èî;vìØ d';vÙ±ÈN ;ì²Èà? 4xaB… 6tøÿbD‰)VpàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeD.I`À¥K”8àÒ¥K—.]2`‘ÝGvÙ1dçÒ¥K—.ÿ8pà€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÉ‘K—.]ºté2"—%(àÒeJpéÒ¥K—.ÈŽ;v ÙMd§K—.]ºàÀ.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ%Gv.]ºtéҥˈ\ºté’%€¸téÒ¥K—ÿ ¸téÒ¥K—*8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—\rÉ%—"À¿ÿª8 À,hð „ 2lèð!Ĉ'R,àÀ+V¬X±bÅŠ+V¬Xñ!€Õ Hà? 4xaB… 6tøbD‰)V´xcAȘ1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3fÌø]ÆŒ3f̘1cÆŒ3ft` :€ð¨à? $À`A À Aÿ H° Áƒÿ*\Ȱ¡Ã‡#pàÀ‰%J”(Q¢D‰%J”(Q¢DÕ„'p @uÿ H° AvìØ4h ;ƒ²ûÇŽ;v dg ;ƒ²3HÀ,hð „ 2lèð!Ĉ8pàÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒ7rìèñ#È"G’,iò$Ê”*W²lYK—.]ºté2"€êàÁƒ§N„q €H”(Q¢D‰%J”(Q¢D‰%¨„Q"CøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=ÿ~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0 : ü'p 0À?€ ü÷o €üû÷oà¿þø÷À¿þýðïß?ÿ H° Áƒ*\Ȱ¡Ã‡#pàÀ‰%J”(Q¢D‰%J”(Q¢Dª8 À²cÇŽ@vìØ d';vÿ±ÈŽ;vÿØ d';vì²cÇŽÝ?vÙ±cÇî;vìØ ÈŽ»ÿØ d';vì²ûÇN ;vì²Èî;ì²Èn ;€ÿ$XÐàA„ .dØÿÐáCˆ%2pàÀ€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙ² ;—.]ºtéÒeD.`À¥K—8pÀ¥K—.]ºdÀ";—. ²cÈÎ¥K—-8pÀ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºäÈÎ¥K—.]ºt€Ë†péÒåDpéÒ¥K—.ÈŽ;v.]"d§K—.]8pà€K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtÉ‘K—.]ºté2"—.]ºd àÀ.]ºtéÒ%Cÿ.]ºtéÒ¥JpéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.9²séÒ¥K—\r)"€üû÷ : ü'p Á‚"L¨p!ÆBŒ(q"Å‚8P±bÅŠ+V¬X±bÅŠPÀþ8`Aƒ&T¸aC‡!F”8‘bE‹1pàÀŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒ3f̘1cÆŒÙe̘1cÆŒ3f̘1cF‡ªOà@êþ8`A‚ 0hÀ? ` €ÿ$XÐàÿA„ .dØÐáCˆ 8p bĈ#FŒ1bĈ#FŒ"€êÂ8P :€ÿ @ÀÀ8P €8P 8pà?8P €ü'`àÀ(`àÀÿü'p Á‚"L¨p!ÆBŒ(ñ €ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.#¨„Q¢AøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„XÿÀ"FŒ1bĈ#FŒ1bĈ!¨„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]F0P„QâDŠ-^d€À ÿ<ˆ0¡Â… :|1¢Ä‰+Z¼ˆ‘âþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eË‚ì\ºtéÒ¥K—8`Aƒ&T¸aC‡!F”8‘"E€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâŇH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹)ü'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–Ù¹téÒ¥K—.)< p Á‚"L¨p!ÆBŒ(qÿ"EŠÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹8`Aƒ&T¸aC‡!F”8‘bE‹1RøOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–- ²séÒ¥K—.]Rx@à@‚ D˜PáB† >„QâDŠþ8`Aƒ&T¸aC‡!F”8‘bE‹< p Á‚"L¨p!ÆBŒ(q"ÅŠ/b¤ðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•ÿ,[dçÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtùK—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒåCv.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—Ù¹téÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]ºtéÒ¥K—.]>dçÒ¥K—.]ºté’K.¹ä’K.¹ä’K.¹ä’ÿK.¹ä’K.¹ä’K.¹ä’K.¹ä’K.¹ä’K.¹ä’K.¹ô@ìþ8`Aƒ&T¸aC‡!F”8‘bE‹1fÔ¸‘cGA†9’dI“'Q¦T¹’eK—/aÆ”9“fM›7qæÔ¹“gOŸ?ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2d7tèСC‡:tèСC‡:tèСC‡:tèСC‡:”!»¡C‡:tèСC‡:tèСC‡ÿ:tèСC‡:tèС Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡eÈnèСC‡:tèСC‡j¨¡†j¨¡†j¨¡†j¨¡†j¨¡†b vÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ eÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСCÿ²:tèСC‡:tèСC‡:tèСC‡:tèСC‡ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2d7tèСC‡:tèСC 5ÔPC 5ÔPC 5ÔPC 5ÔPC 5ÔPC1;€ÿ$XÐàA„ .dØÐáCˆ%N¤XÑâEŒ5näØÑãG!EŽ$YÒäI”)U®dÙÒåK˜1eΤYÓæMœ9uîäÙÓçO A…2d7tèСC‡:tèСCÿ‡:tèСC‡:tèСC‡:”!»¡C‡:tèСC‡:tèСC‡:tèСC‡:tèС Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡eÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСC²:tèСC‡:tèС†j¨¡†j¨¡†j¨¡†j¨¡†j¨¡ˆÀ,hð „ 2lèð!Ĉ'R¬hñ"ÆŒÿ7rìèñ#È"G’,iò$Ê”*W²léò%̘2gÒ¬ió&Μ:wòìéó'РB²:tèСC‡:tèСC‡:tèСC‡:tèСC‡ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2d7tèСC‡:tèСC‡:tèСC‡:tèСC‡:”!»¡C‡:tèСC‡:tèСC‡:tèСC‡:tèС Ù :tèСC‡ÿ:tèPC 5ÔPC 5ÔPC 5ÔPC 5ÔPC 5ÔP Äà? 4xaB… 6tøbD‰)V´xcF9vôødH‘#I–4yeJ•+Y¶tùfL™3iÖ´ygN;yöôùhP¡ Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡eÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:tèСC‡:tèСC‡:tèСC²:tèСC‡:tèСC‡:tèСC‡ÿ:tèСC‡ÊÝСC‡:tèСC‡:tèСC‡:tèСC‡:tèP†ì†:tèСC‡:t¨¡†j¨¡†j¨¡†j¨¡†j¨¡†j(†bðŸÀ <ˆ0¡Â… :|1¢Ä‰+Z¼ˆ1£Æ;zü2¤È‘$Kš<‰2¥Ê•,[º| 3¦Ì™4kÚ¼‰3§Î<{úü 4¨P†ì†:tèСC‡:tèСC‡:tèСC‡:tèСC‡2d7tèСC‡:tèСC‡:tèСC‡:tèСC‡:”!»¡Cÿ‡:tèСC‡:tèСC‡:tèСC‡:tèС Ù :tèСC‡:tèСC‡:tèСC‡:tèСC‡eÈnèСC‡:tèСC‡:tèСC‡:tèСC‡:t(CvC‡:tèСC‡:ÔPC 5ÔPC 5ÔPC 5ÔPC 5ÔPC 5C±øOà@‚ D˜PáB† >„QâDŠ-^ĘQãFŽ=~RäH’%MžD™RåJ–-]¾„SæLš5mÞÄ™SçNž=}þT(CvC‡:tèСC‡:tèСbC‡:tèСC‡:tèСCd'p Á‚"L¨p!ÆBŒ(q"ÅŠ/b̨q#ÇŽ?‚ )r$É’&O¢L©r%Ë–._ÂŒ)s&Íš6oâÌ©s'Ïž> *Ôa@;apache-jmeter-2.8/xdocs/images/screenshots/aggregate_graph_settings.png0000644000175000017500000007264012032647206026115 0ustar ebourgebourg‰PNG  IHDR„ºßØbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 2DUÓ­ IDATxÚì½xÕïÿ™iاûìþó,`%ܸ+Úniœœ4¶,A…HÁMMê« Å56Ø%¡ìí¯m„¡v±£šB/ë¦L „WþÀ‰!Ò¦»O/UÖ4Qb¹÷Þ?òÇwûl±¥s¾Œ$¤‘4’åŸy¿žùCž9sÎç|ΙsÞó93cA»qSãÝwKËøøøºëÊ7=þøãðXzÖå8¶¯ç?ÖF%Ÿný²üÏC/[±¦î½ÿntJ@ŒÒ¾žÿxáîX5¼ÿŸO¤)Ñ+øV²JX:1*)Ñ?þÿÖXmW²¸ ¡DÀJ£P¢`ÉX§^‰r>=ê¸g`J$"Æ>¿«Çm¼V(¢HÎ?|éîÇNÒ­Çý‚ ,A%Õ(QÎ]uvŸ(Õ®¢åHwƒfA¶IzÉên7,I5VbAJôµßßPÿìèáWÇÜÇþ‰~úÌGœg“›¿ÚõÕïì:$%HûS¶|ëµwöÚÞ/,•D˯D#ž¶:»—¬N¿hhhxØAή@–Ú€R±NuÊ‹3¿'¢òk¯!"„õÆ'÷ÊuêÀ”ÈØí­Ç½N¿t÷c¢(ÒÛ=wÓC¯nû÷oÌÿ™L EF“¿wÝ;5Ð÷;yÀU  Nˆ"+ÿüõ¿ÿí¹D$•ÿ鵃­Ýáxóö’„WƒýîIQ´:ã!LAÐ4ôt<ºé"»žºå¤é )zJD§¿Ã $Ó´´LõöNfFUÃm¥ý@T™N¶|¥ŽDñíž»[Fþ”2üís÷¼öûêŸxèzz«ç¹Ó‚°eϱƒUŒIJñ‹bÊŸŠÂQßÒ?õ<ûÐõôÛ׎ŸNdûØ„(V=1ê~ĘLÉù‡/µvŸ£;ZúG¿:V’ð*çq/1f©Ögñ‘è³WŒtTŠ•##CCCþ¾æ Ƽöùè©(úÆÈáwZDqÒÝ”Ÿ;F_³ŽBòý 1JD_h~·¥–‰âﮕ/Áÿz˜ˆÊ¯½ñ3ë‰èü…ÿ[øê6c·[-ºæ3ë‰høý8ç|úO牱ϗ•Q|ªxíqxþïR-£3fqµ§ Õ2myF[}é«-Œ‘w<)Rãû¥ô²ý 01*éÑžþ_Õ—³49(Šo»wÛ'D‘~îÿ•ư”§’–==mZÆÄ©Ã?Ü]û«_—^Ûqè4ÆNEáÈ#žV£Ñlv$ëÀ‰Q"„õµÎƒUŒ%t熲Ïc·—pÝ<×îzüµw[j<õ%ªBjd¨¶’(úÆó­¢spºC¤kîsZËšN§]žPB1Êù‡¿zâµx(ôßߟEúÜõO$ë¿T}ƒ(¾íõEdÉ7”}Žˆ¦þôÿT#ã¨þúßã¦%¸áÁƒUŒI6,ýî–´g@³0Q¹¶,óÐTx†(8îE*×jð-'¨}›^¶ìyäÂÁ»wÄ_c/è‡Î†«ˆ®¾ýg-¾êîûÖC}É×Û××>Òlíx¸ö5v{ë±Gå>ôê65%ÞðàÁªáÇ&ž¬¥'V ?v2¡‰¥Wì‰ˆÑ »‰Û°@MC÷°¶«Îî0ûˆˆD‘˜¢ í.«Ïá³×Mét$NúìuôäÐ-ÒÑ1g]廊ð€)È&ö™¬oôÿ’Vðÿ^’¾åt®îàÏš·qúó/ýÛÓ­_^DóJ÷q{ü›(\V<õÔSëV¬q)AÐϵýðÁJ4ÀcåŠQé5}kÅ{P ##èJ…ƒï€eCØf²nÚöhòïöÜ´ÆjøüKÿ†fXœ}ÿ™ø2ý ÿs‡ôc¾À´@’U+Šíæ„]{4É®ÀjÏŒ€ecþmúMWFá°œ½W¡ˆŒ€eb@ŒˆQ FÄ(£bˆQ1 Ä(€b@Œ•uÅvè…cðÝ’±÷þ»áÆç%fáCL‚`ˆQ"zðÞ=pßðÜ‹/Á ŒÏK<̇˜Á*£W| Kü°Áø 1 B >,ª]'¨OüÖû¿¯“ܱíKp`…T!ã3€Xµb´À»Æú_†»‰hàÄà†°¸B ƒ |Ä(.l¸€A>‹ŠÊïà}üµ+F׉‹š~-qpƒ |JÁÃ4åNðìóGà¥5+F碬 ô³s'ŸÚÒö†8y3vçO?|b« çOmi{ê“{TRô‰ŠùHæ1ö…ïü¯ÝôÀPà u,êøÌù…Wÿñ®®ß–l\öavùPî:9òiTg òXf¡ÙŠ[^þæÓë tfd ­©wRj©Š–#Ý š¶T «ÎîSh)‹k¸Ý ÐR®:»—¬iG³íÏQh2qAçªÉpe‹Ñ+4}Œˆ±¯?sʾE8ŸxúæGÙrö‘×~q÷zhË£§%"Æçˆâ2#"âÑ›+Öe|ú•æ]?ùˆîzf\²íâk8ÇŸ·oYºÍjX¡®€ÅŸ9¿øÚõ?ýè‹Òh\’pÙ‡Ù5çÃø)MoÒ]ÒLJY&Ílž)ÈcRâì³¶²~M7oñùÛO_Q¨u‡t’å<2ÐÖè.™äCÇÈHÇrè¹U¸ UýFDs1Î’×@ŒEÙ–ögîÅßþô—s16=媪¬®ržŒÆæbl6|ôÛU•ÛoÙºý–­ÒÎd‚W^¹oû-[««î{%›‹1y¶Ré¬í·luŠÍFïÜ_™L<{ÊY}ÿÑsÑXšy§~ù“(ZŸyl3ãs1eš;Ÿ{|3ãóVrVW9ÇçN¦å/·<›aìÿGùþ"\‹7>ÏÅÂSÑg5×°Ì0׈>úíĈ*JŽØ™¥,å0[è¶Z|˜6åI{2‹Èé™”Óó•˜ÖN­Ú©§n~Ä+Š¢øÆ£7?™œ¸3lc¥ÿó/ÑÜ[jòépˆˆÊµe’vÔ4ôtHÑÄN£Ñ” 3À9xZFc«'‰ˆG<­­žç’¢õ´M&“ÑØàjÃg™EȆÚL&S²¸L ]D‰ÙÎÍfIr][ß”ŠŒÆÎ@ ³“J*F£\ý&¥—Œ&÷oþê×£7Oœšcò£³sÏìîü-ÝùÏ#ャ'ý'ÿJ,~º(¾9ûÁ;®¢øÛž#Hù$OŒÆ¶<|bbpôä;GÞĘ÷ѧ&¢}ÍDñ·<Ïç¢<üÇ߾斫c)ÆÏÎM¼÷&1¶³j³‚åR¡}ÕâñÍlkZþI˳ßäáÏÓÿ–öá:X¼ñ9ÛRe%Q|óñm÷¿zžÉ÷gQ‡ßŸž‹òðû~–Q'žÚÕóÑt=üy:þøS¤±ÄÃl¡Ûªð¡Ü]ò™4³ˆ¼Kžž·Ä³¶RÕ*ÛÆ:¿Æc;Œ=ö•e³­´“àŸÿͽ¥E.«­$Š>{]›\öIÍ¡¡!_sc^{Wʪjt¢8961CD3cTS¥" v5¹Cºfg³Ž¼ö®`AASyI 'о1røQœt÷+dX\‰ÙÎÍfI°ËîE‹Ó?ì¨QSº(úìãÕ## ý.ed4¾:“í—ïIû-Šoîoy5,»W‹1vÇ=w^;·y›™1òžø SÌvîšÏ\ŸØyÕÓç{û½‰¹ Ÿ£í[®Í4O!‡ÔBÔn˜Ë’nÃâû¥ôÞDcˆŒVXd”ÝØqò&Š¡çšªÍ;\¤Éä#ê†ÏÑïΟ†O|tý†k¥ Ùû^"úlÙæÏ\ODSçÃa¶¥f—#2º>ÌãIÕ“Ò×j¹'ܬ楦)í$øçO¢¹·´ô†Ž§…‰âd¯Í¬Õ+Ó–§þ …§9LŒ…¤h*çq/•kõÚr"š G ÊŠ`Ìb«/#}µ…1òާ™¤²DQô9Ìf“Éd6;’­æ9Wf ç‘ð1V¡]Ÿ¶?kŒY\íú’ YKùÌh<àK<ªÂ9gDôù뮎±9š?*ü—‡?þÏþaòÙo›Ÿ­ûç-!žX:²ü9öøÿxö¢H¢HŒÇblîê­ÕŸ§É?œ¿]þå®fs1!µ™SsàþìÖ½~ÚùýÝ{#eØœ™?©0Lö›ðÌ(`ñÅh¡§üÃÃï{Ú¦½|óųo}¯õºÞŸîºVqDýʶ:ö†ßûn mû¹ÐΪ¯°¹X||Å·~`~‹D‘B_ˆ±«RU\Òa¶$Ï®4*z2¾sSßjé³¶bÕÔ´f© œ-ü`CLj¿]zÉgoÓé®×xښܓqS‰ˆH_ma^¯w<Ø^Y«õiÊÏG¢H¡ð4‘F]¹ E¨æ+1ùŽTâqÕ\ç*Y’òCîÒËJ=dƸúˆ¢1J<}’Øï‹"ý7íU,ýhìš]ÎwÞ{âVFDþýO¢,51"úüõŸüM<ãsÑ‹oºž=K7Øž?X˘´3Æ4_ùê ô»?^¸xê½ÿ¶ýK,Ýò«4|DÑ{2 Ëœ2+ç¯Æ0ùï"\‹7>ËCÍm?9TËý¨‰³ë]ÿ×’#êúõŸ'ÆnÂ;öêÛ'^{goÚH»ÄÃl¡ÛªðabK¯æ<–·Ä\³¶Šr³ÙÆK; ÎEYîMñ,AÐÔw»,ŒIêŠóÈ€Ó"]sŸÓÂX"M|M¼kÜk­N,F¯×êˆ1‹ÓïR¿H­X„:íúô]E–˜í\µ–” ô¥£Lý&¥çÉØgŒÍE?èý§·³Ø[n’ÒÈJÛ[Ö0F×]=Ÿ`êÂ4‹NŒŠ"]¿á*ÆSO¼þm¼æê”ÜþN_ûYzëƒck·Þ¤hÞë[726üOO£±4KR­RÎ_…aó¿‹p,Þø<ýàgí¯NGcÑXb‹ºÊ#ÞÕn ¢Ñ}Û˜Qc¬ìÆm7ˆâÛý¯_ÌVÊR³Ñ·ÕâÃ,se‘SSbÎY[±Ü2ME¢Üì¶•v,h¡Ÿó@gâ=$ ŽûD1!þ”ã‚ëµ:"òù|ɸ¨ hªjt¢èë˜)ðºÌzœ Ï$ì)×jRÕÞJÌv®‚%óÊ;xtá¥/…1®~“Ò3"Qôüºñžµ{¾n©h}æï~‰Ç³bñ83Æ>|κ#ž†nøVGýUœ’ NªÙóCc–Ǿ£O;‘qý?°Š¢ÏuÇ¿œ¯ Qô¹îxæLŒÅ®Þºµ‚F馕Íc×4üà§jÈ{ðëÆ=_·Å?ƒ—’y,kþù “ÿ.Âu°xã3ã†{;¨ûŽš{vÖîù¡}®å™ƒõWqÊ6¢þÝMµcìóe×ÌgrÕ‡÷šØÇ¿hºggí7­‡ÎÄØ2³±·ÕâØR5â±ü­–}ÖV,÷׬ÌÜÑúYúí¯4~Ózè×L¯<)—tœ²Ü[ª83´;ÈYWg2™Ì«h–ÖèÁÐ¢Ï^×7¥“Þpê p^VUSÁXüIÊš†§…MöÚ z½=[ÒÑ1gÙáËöfq%f;7›%úÝ-Œùæñj—°ç¦MWFÕŸvè…c»¿¡>ý¿‡¦nÔ•/ÄPÎ/Þõø ²î}½ã ó?y~Ô|xÊüÔ/[ %÷`¡†ꊣý¯âÿ˜o|^ù,dü/n˜]{>\½äž½pì6ë¹sôÇ4º29{iík¾§ø˜ ]A^àŠ3çq•‹±haÿ¢)2ü“ÃÅí•›cÕ»ðøXTÖØ Sôø^ zà «âÅh¡+È ^qÖ7j""N±ÂBÄeµ†jKcCi Ãâ;`QYsƒLÑã?|¸ÆAÈór£Ñ/ÔÐÎÁÝŹ0ÈÀ‡@Œ.è®qãõZø7Ü 2ð! tbÏÓÀÊRŸáC.1Š% X™`|†¸,Äèð;oÂ}°Áø °öÅ(Þ_€• Ægø€Õ…ˆQ1 Ä(€b@Œ1 F€£@ŒˆQ]Œrè4M&“Éd2[=ž7±ÑØà|µxj5Ú pYˆQñ´ÕÙ½duúýCCCÃÃrv­:Ñ–&7ÓþCÇÈÈÈH‡AÐoV ö»'EÑêj—„š hzæE[ 31í 䖀ʿÒé­žxZÆdä5™ÆãiÍ‘•ÎJDm“Z3âi5&÷p誳ûDQ}öº®Óì´üÏl¶e–›Œ[[[åÒVɈхÂy`ÜKŒYªõ G#žV‡O´8ý~§Eô9Z=‘Âì}öñj_sc“½¶:'9Ž´è(ävDzN}cäð÷5ë(äîfš×Õä%¢¶ÉÐf°«ÉÒ5;›uäµwÁÐ>ì²0ƘÅ5Ü^)VÊÿTŒ†*–ì²ûDÑâô;jòÚp™³® Ôƒƒƒi{n»í¶œ:521bÌZ­'¢j ózÇ&"õõeªKdÌâj×Q9QˆY\Ýõe,' …ÂÓDe‰4¶ú2"m9QÈ;h×gJ=QôÙÛ´Gºë5‚ÐDåZ½¶œ(4Žp}Y¾Ë,WO3á)b¬B»ž¨L[NÊnƒ¢?V5—.]Z,1* ÿ3_aÓáPꙈ\ÁÐ~¤eªÉ=9Ùk3÷ZœþƒT‡³D±tVIõ-×–©²!Í™«š£Gzʺ"ŠI ‚`¨¶’Ïç¶ ii×ku©áAvý’ûEÐ4ôŒ4:ŸèµwU·ëi½VG,”²¿¨qfÚ`„‚îÖ¥yI¿»¥‚1¯½-ùO ³3À¹ hªjt¢èÇ}¢¨«©Ò¤®¡KZ–h*<àr‘ªªowY“ÔpÒ°¾™téLSáÅ?U(NÁPm%©¾Šu‘ÛJ£üMC÷°ËJ¡^›Yza|¼:qÔ4ô8-Ìç0›>fqö4hµ¬ŽB½6sŸ¶ÅÂXik˜|½ÝlvxI×âˆ?²)6ÙkK¾Þ.šzGÜ£±3Heò?U¾ÿ.ÉMŸÃ<^íJÖ%› —9Â6“uÓ¶GØsÓ¦+£ySúPêe xÚšÜ!«k¤Ãoàr@½V<{iík¾g¼Vb šø^)1]Ë‘v=| ˆÑ#ý£¦8@"\ FÄ(£b€ÅoÓ x½p NX$öÞ7Ä(@šïÝ'”œÞ_ºLj 1 €ñWëðÔ€À2qÄ(€ÀrÈ(€ ¨|¢ü2y8N†W|Ÿ@ŒˆQ°Ô<ü@SîÏ>är˜-HîÉfí9^…ÏW‚Ïá“•ì%1ú)̹`¥ˆQÎ]uvŸ(c-Gº4BîÄ^²º†Û ‚°ê|'·_OÁâ겨Nø›O¯+¶j‘¶&wh4Í=¸¨ù?ø\iœhqüêàN³ÃǘEÃKÒñróÎÑ ‹êÕ¯5^,yו:mï¤HD¬¢ùHw½&á@§ÑቈYœ#"ŠxZm½“DTÑÜ×Ó ‘š ®O+?+Ûå¹H×ìñK?]Ü+åÊG–¸'/¼sš++Õ'þÓ“+íêVÉ)ßÑEõÌÍ–ÆBO™²}5ñÔ–¶7E‘±;»>|bëJšh8ŸxjËØŽB¬*â°Xb”G¤\5%Ì+ØïžE«+.ìAÓÐÓa'L&“Éd2vua§Ñh4v8Wþè”NoõDxÄÓj4­ž—Ÿëñ´šL¦ä~I·å;œ§)QŸ(Š¢Ï^ו<”ÛÎdq&“©®­oJÉ~Års™™³Dg€óxU5 t[=Óì´¼¬üç_¢™›^¯OÊaê›jv6W0æíˆð 3"žÖVODª)xZr÷Ê›Ìhì<ÍN§U*­²ÆÖÖV¹ë22\áåd]E#ïx²·ôMé*“7A¦òv¼Ìþ“ûêXK^å<0î%Æ,Õz"}µ…±ÐØ„Ôu'ÆBŒUh×­×V$ögY;¹ÔÞ‘*P ƒÏšèÉò­Ðž¬ÒQ—¡O2yùØñ´ì*b.Ê Ü8'•í™=ôÁ›+·ß|ß+çcsQ6;wêàÍÎW^¹oûÍÎSs1éèŽê­OÅRÒ?é<(%PJŸ–[2™<}Jž§œ;ª·~Õ5–f›Ì<穹X¦µòêä®HA^‚-&Ê8?d NøÑçhõD ¼ÑôÙÇ«ý}ÍŒMöÚêœä8Ò¢£Û9¼bEÑ7F_³ŽBîþ`\n6¹CduúýCCC##òÉF íÃ. còÕ5v»ì>Q´8ýÃŽš¬×,åÆtZ¤[gňËÐÐTS¯½+HeU5:Qœ OÍ„§t5UÕ7^þKôωî¨Þº£zkò7½=<.ý™õ®¢ÜV¯¯ªÑ…Æ&fH4’c3D431F 3‚]Mî®ÙÙ¬#¯½+˜Öd##•beZ¥¤1:›³e¸b)ÊÉå6›U}}IÖ”çsBÞŽ—ÙÙ¯ŽµèÕTBÒE3Q¹¶Œ¨L[ND¡pD0ìn¡^›Ùl륖Ýú`—\†âãŠî]¥=9ÇVDOVã¨ËÊ'Šƒ|}·Ë˜×Þæ‰pèl ÛFz4«-À6e…nñPb”ÍFÙ'sác?ê¼þ©“¾§ÊÝ?ê?7›²}ïÑÇþ!záØüÛœôö=ü‡_ôŸ›‹Í§¯æÞD>©é3sK&KIï:ÛëšòüÅñ[Ÿ|_žgšyïŒ>öåÏb-æ«È—c¼ AŒ–6â-'Òƒês`Ìâj×Ks cWw}Yb^™–¥±Õ—Åç›Ä]i\µ ¨)NœGÂS´HeåÐåÆÔW[“™Ž,ç²ªš Æ¼ãA"šSMU™4œ¥ikå‘ô“èŸ?‰&ß^WMD¯¾}BÚŸ<”mÙ­O IK^*×–%ï@ˆÊµzm9M…“õ7Y–JescŽ WîtU¸“‰ä,21F5UZÊéõ/ÍÕ¹¯Ž5äÕõZ‰¢o˜‹ÍF/œ í¬¼‘ÍÞ¸ýÖÐÇáx‚»w–ÍFÙlô¹ÐGÏÛ¶YmÏþ.~T–žøœBúÌÜ’ÉÒÒ'÷dæ™Ü‡ÒþTÈ?wEĨ"Kó6½œHZ”-r©Ò>Õ䞜쵙{-N¾à‡²…4’+U¹2-ñ´5¹'E‘D‘XBêÜ¡©p„¯Oå*WqtHþþÆí;ˆèWoŒæéßÁþÞÉI²™{“>›ˆÔ×—é«-ÌëõŽÛ«Ã!«<þ-Š>‡ÙG¢˜­Y*•ÓijVü\°“¥ùÊJ>_oWØ[n.£®œN(SÑñ²¸zUR¨WASßí ×Ù}³×b±2æÕi׫(HzVtý@›)õ}¦ÒÜë¯Úž\yzòªf1|¢x‘ šG˘­w² µ¯Å\¬ÐgFyŒîx»÷+‚@ŒÏq#±9Êø!)‰‰Ô¥Ïr´ ó¯-¦ì)2§%ñŒ‘¡¤Pxzfb¬¼º ­Ò:yÑ3œûy”øÓ¢}~)hä÷÷5W°ÄJ}¢}»Æ½Ö¤ëµ:bÌ¢ø DŽJån‚Ü®¸!¸@'ÏÏW»[*óù|ÖôG[ŠtB®^k^M.€ïÖNQ¹V#‰‹z*{Ý”NGâ¤Ï^G®áv}YUÎíö’«½0HkL=/’Šõ¦øÓ¢Žö´µÂНÔK¿SÅu¼e{m¦^J|\P]¥Ú]¯=Ó™æ)åýèbS“Óº_CÏHCÜù)‡·ã)ºúÉ¡[ЍTÞ4¯¦~á8åcmŠƒç‘6;¹† ‚@dØÝÒg³™{‰*Zú2û[|µˆˆ³¨ti¡=9ïw@—ÆçÅ)ïl=yäýèªóIæEú¸ñ?ï¸áÙ†; QC·+lvøìm韼M£ˆï€.-ð Ã½Ç Ä)–tеõß;^/Ë--áÞã£÷Æ/xŠqN7~÷_¾ËýÛ¯³0΄Ôô鹑”žˆè¸8±DþL^P2Íw(Å6y†ÒþÖæ©Pºd¶™¬›¶=úÀž›6]™ÿÕÁÁÁÆÆÆK—.ÁqÅ)ãâ¾iÿ€«Õ5ÒQÀ7?½pì6ëyÔ{|Ùÿ—]qµ[!¬'ë>‡OÕWwïÚµÄSjß®'ÆE‘±ŠÆÃÏš®]›c{íµÕØÁÔkų—ÖѾæ{ðï@W¾Š 8Ý“¢XÄóXƒÞã+\ÇCYº–Uúé wòê^…Ïá“ÕÅ’¯)뛎 5-[é Ä@Œ.Eÿ3ùrOA¬ðÛ©µñolWásøQr@Œ`¹@l@Œ`ùÄèåô"1 €•–éÄ(–áwÞ„Ä(–¼ìˆˆQpÙeú<zᜠ±ô 1+Áù˾ü´†{ –ö@Œªb»ÉºfêòÞ÷Á{÷qâs/¾´z¿êj½Šzàj÷-ˆÑÕAåu½jqúüÑŸ/+ç¯ÒZ¯Š¸6| b,)—§t€`‚o@Œ‚•!Ö ¨5€o@Œ‚e’ˆŒ‚•ç[•ïiá§•  WˆQY†Z¯Aß>ü@SîÏ>Þ^! ±z(!¥™E8xZFc«'2ÿßiyÄÓÚê‰p®”>Ði4¾ ÿfË&“Éd2-<+•uL—RÓe/"ÍŸ¹ÝrÅ:±ˆM¥µ¥jY5ÕLèL˜ÑÈ*˜³Ö 1¾ÐêwxêžEïùy/•oÿæÓëroŠV™d—Ä ÷áâ]& ÉY6näïØ…7ÖRK!¬I³¯W,‹lÈ›IA¥,K(¢Ð”Á§]}bT4U5:Qœ›˜I£š* ,^“tÙ½ŒYœ~ÿÈH‡¡À‚ ìs‘¶&wH×Üçv³«´ýo!E‚¡cdDrB^·ÌEY›Jkå–”üò3›>1½ÇF<­ŸhqúýN‹ès´z"Š9,j­—rHòÚ»VÚDXßÑß~úŠÜ›béRWòûVòÚëÚVÈ›£W,Òe²Ðát¼zhhÈß׬£Û9ÉÙͲµÑŽêªÌÆZ‚ñ¨œ –¥W(^ÂË"V#i#ÉBFBtõ‰Q"*«ª©`,46!Õó@¿›jªÊÒ¢ò¸NÞ€Aòf:s@ç<ÐUg÷‰¢(úfs2Af,™§ÇÓš¼Ÿn¯ë:ÍNçÓá•kËâWQCO\ùeÖN±ÄùÛ>£1KG¹E?Ì;*Ði4v&í?ÍN+º%E:ÄX[A‘·ffÔ*­:j”œtùùýN ci“ÜÄXˆ± íz¢õZy\²Zë)˜Ú—¦å·û<ÐiTºÑ/ ñ+VôÙÛ”G?­Ÿ7Ç­žH<<‘¬ÊqÁ.šoé?ÿͽåqÛ]VQœt÷³Õ]^¯´ÀŒôgòf&[„&—“eí(¿íu]™ÃWæ) Ã…Ò˜s ™'<ЖƒÌ6RuuãÕíz"¢2m9…ÂÓ9½­Ø@z½>yHÍp‘ÍZEWÚ^Ù›mÆ‘{#ÛÕ‘Ã༣´b0™LÆÖÖV%ÔLjÙª ¦ÊJý-ݤ é;: ì9.á%– ¹—VÒJQÓÄéf¿6Ó{¯¬»æî9µµö'RG’ÌÉb¾‡( té3i! º*Å(•UÕèHœìíQpÜ««©*‹ËI‰W0VP\'ØÕäéšÍ:òÚ»‚éϰ˘<˜#H&о1rÄïúƒòÓ]Ãíyï0ÁPm%Qô¥Å]rÔ.­Ä¸€nr‡È*rÒîl²‘âè³WËóQtKé°ý–­9¶Ò!‡µ ÎqZˆˆ¬Õ’19šµpd“\ΫkñjÖ—*ÅõÒí¾dÇLxJ§t£_¬¬N§EœìmÊ8%wç—÷éO©ÇNöÚêœä8Ò’¼K.â‚-‰o‰èωæÞò»G_maŒ¼ãòËPª{¥X™V¯ •¥ff&ÆBr÷Kç*FhT†á3{EÞ&s¸Pì$¹ÇôÜœ–¤4Ï=R¥ #ÁqŸ(êZvç¶Yj‘Õ[wToMþ&¢·‡Ç3+÷p¡X÷LW§ÒT´W¶ÌóÜìe¿:²¹· Q:‘ÞîE‹Ó?ì¨Q´!烙§/¥š§®¿e5© ^QÀ%¼´²!ë •múV×Äó²\ó{Jï•w×Ü=gtÔõdΑ$âiµ{ãkвëÔ5誣‚ ©·Y‰È;Lvª”¡AÒ …ēǽDT®Õkˉh*És—#É,Õúøœ$’1f±Õ—ÅmÍUêW1 #N ÅÉ^›RÄ1£vÙJÌÙR,"‡³¸¤`Fa‹ª<¹ ŽžÌ–lpô¤‘­±r\8JuWvuAí¥fäÏÚar^™î-t”æ<ž¢ø’Nö)®Ëåjýœ>ÏfR¡½Bý%¼ì²!Ïô­®‰U®\%û‘¼».p~—²J®9º\}ƒ®ÎÈhJX"¿Á‘Å®øSs“çNÌO–‚d2J‚6tŒøý}ÍLÞáÔ×N íGZ*'{mf³â¨bú¡°EÕ·†ÞÏLóÖÐûyUsX+gf Ï'ŠVWÊ-] «³k]VU£“†•HxJqŠ\ÊêÍÌko˜Y”Î_è[*ßÎFYîMmtÚõ*ë% Y¡ð4ǽºfgscÞ¾š‡¬Õú¥aòv5cÈBš5Øe÷’®ÅQŸ÷¡=y‹|ãöDô«7Fs7–šá"« k¯%ŸM ž­²ËÑ岚Th¯(ì^VÙPh)9rÎm&jÌè® ˜3zˆŠJ©oÐÕ*F“k1ã]ã^«­AÞqÀé‘®¹/ý¿|¬×êæßNP4Z¯Õ©š“îv%Ä‚k'hzFFœFÙßDI+¢p?&æbl`ð]y‚ÁwÕ<á—ÅÚô«ÂéU4÷u„b›•T4úTx†h&<•½Ñ—²ÖÒŠ …ÂÓ3cåÕJ\¤Ò­r;û¦JÝù‹¸`KåÛ"ÞyR\{¢rmæ «X¯”!KWS¥¯·Y‰Bcã^kfÃ-Å“·“¨C2TÓ¬óAá’´yÑ3¬¦±r_8y]]`{- ñ>PâQºd]nÁ]´ˆ^QÐ%¼Œ²Am)ª›8÷µ™ZÓdw]`ÏIï!y+UPƒ®ÚÈ(‘¾ÚJD>ŸO&ûóÜJ-$é é™ùŒ.о>Yü'÷ -¥&ž‡ÈóRÞ¼ŽQõ¹‡äÓñÒ„ï *opS½Ôî²0–6Ld+¢P?ä%ã™Û«oŸŽ¾úö Ū’ª úÝ!]‹|- ³: y=ù Nxšh:<™½Ñ¹Ö2M<õŽ÷‡Ë•Â5 w‚t® …BEvþ…ÇlJì[Rñ"TÞYSþ@ˆÊz%‡,Écúj«(Nööú2»s6'gÁ2{EQ}[ùÂWCdL…gÒ¤yþf-è-]y‹üüUîÆR9\¨ÌÕ·Wî ‰R{©'ݽ…ÏV ]ÌeCá].[ëoR½¢ÐKxùdCŽRŠoâצ4"Èkª.Û¬#I<ð‘r(¿ëVÚ§<EŒJèø3.ÉYÓeEŸ½®oJGŠï–êw·è(Ôk3÷i[äZ^ÓÐã´°É^›Ê/Jé}³ÙácgOƒ&OxÉ/×hôüŸ¼s¿ƒœuu&“Éìð±Šæ#ÝõÒ ·v)#²Ñh2™ÌfGf<[Eø!Ÿt`ŠÛËo޾üæh¶£*’y&­YÈ-/¢:òO;¥}(@e£/j­SûRg€ó¸õR¶¥Ã…·© ièvY‹ëüyººê.]BßR±ËôRˆ_Vº–#YÞÊZ¯õÚ Æ«ˆ¯êw7WÈþT7Â(Ž` ½¢@2;Iî1DΘ³Îìð%¥¹šf-èŽHj‘ž—{^ÌÛXj† µƒy!í•ušÊ2ã¨'ͽE\Ñ’dñ9ÌãÕ®6Ôår˜§>J’fR½¢à'm–I6ä.¥Ð&VsmJ¯ÄÌUmpî‘DÓÐ㲆zmñI6HúÜ®[±ßʶ™¬›¶=úÀž›6]™ÿý€ÁÁÁÆÆÆK—.ÑeáŽm7Y+¯ûë5P—Óçÿë½!ïžÆÝEœûÒÑþ¥ÿ7n%qþ²ÔšGYè%«š8”Ü$ô P„V<{iík¾ÿô²#c¨õâÎ.<2àtOŠâò¿R±ª|;è=ŽËsÕL6h¬RGi}™éZŽ´ë×€Iè h F/;¢Œ£Ö‹Š hzFàÛB@¼dÆ*Å(aèéXIy.ðtô 1 ‘1ŽZøÄ(X&éÀj à[£`yˆ]–q¬¢wð-ˆÑÕËéóÿµfê²êâX%qþjÞ­äˆÈ(ˆÑÅå½!ïZªÎïÍËÐù««Ö««®j߀]éà A8N.£bˆQ1 Àb·éA‘záœX“d~Å#^6Ï1 –“û¾ 'Ö—.]ºòÊ+/]º”¶¿ùÞ=—¹gz_| Ý@Œ‹Ë¡Ž)ÞiÿÕ:<ØÄ(°L\1 Ä(°\ 2 ÀŠ£*ŸìÆƒÏ Fטú᜕%F‰èášr'xöù#p7€U+F?'`ê‡sƒ’Ýçýͧ×åÞÏâ<Ði4šL&“Éd4¶z"yÿÇz½~óæ¿;;.%VsÖ·’MýÎļ¿ºŠÉ1Ý Å‹­‹äЍÕ)mV8%‹Œþí§¯Pܯ×ëƒÁ ²¿"ž¶&wˆ¬.»A8 ´uºÛ ‚€Q¯$XWÝKV×p»AÁÐ12Ò±ˆ^D‡Ï«Tç¶ XV1ZÄYÓï þVü-{ïÂ]ßP;†qÎbÄ£Q6›e6ä|âÐ#üàɉJA F7ÚJ1>›8ëúàÐ-'¾zÒ^¹ø“i¶©?OkÓXÍ¿_³2æzA0tŒ“æxõüŒiXz]DduúÛõ3mMýúËH•,2úŸ‰fnz½>y(ó”`¿{R­®¸»AÓÐÓ‘t} 31í dþñ8ŸòïÄW«'Â#žV£1yM¦ñxZÕGdM :)‰Ãmi™pñ´UÞóI¶¥Ý#æÍ![‚¤ÓjkíOÔÙ}¢(Š>{]Wš—²yXÑ3ªCªûλïºë®»¾ðèñ3ù´ãĨ§áðþªå‹Í\”ºÍÎ…ß÷Ö9ö“]¿<5›‹²Ù¹Sov|²rGõÖƒ§”÷ÌE9'>wþèƒ÷=?Ö}¯œÿ~ú–GÞߨ{Ë“§æbÒé§æbñ³RÎEÙìù£Þœ^Ü+¯Ü·=~VÕQ9õË·ÌÉkbŒZõr%šœdSfÒ@gÊ´˜˜+Ó¦à¼)¥0¡4©%Ï•Ÿ"%8ÍNwÕÙ})3fçi6íiM(‡ˆô“ç°dáº(N™¶éí{ø¿è?7˲‡Ç®¹{ÏÆÎ—¥³>óZï»ã>es±Ê–‘ŸÜÊîøñȾ/Ǹ”8Ï™ÇR~2>ö#ÿö#éÅÆ¾÷ÎècÒé Y¦—æ÷[f¤8*×–)O²Ãö°s Â9ç.;9ý~iZä<2à«92ìïkžê›ŸÇãÓhþ”Þ1røýN²Ç…¦ü”¤ íÃ.KêŒ)šª›˜!¢™‰1ª©*£™l–,\Éæøq¯µZ±:œGœîr×ðp5yU}S›ô†¼îi¥Ì”Õw©sD8võit7h¤”^ªVUñe£ŸDÿüI4ùûöºj"zõíÒþä!5p™ Åuª¾ÚÂXhl¢ š3fqµë¥{ Æ,®îú2é>#ž–¥±Õ—Åï?¼ãªž®Ý¬¤d¢¯¶0&e"‰l¢r­^[NDSá¼–‹¢ÏÞ6ß´ysPL 9(ý"/ÂÃiž ’¾cdDÞq³Sµ¿¯qmhìÛ_U‚>UÚÜ`©Åè‡ï½qk•a6ʾXµó÷>˜²Ù(g´³òF6{õg® }κ‡ÏEÙw=2õÞ³Qöá{øÇ]YÎñ©¿3°Ùè…s¡ž·m³Úžý¬¸Ý;ËJòÌhrŠÏ¶©÷#žV£ÑlvxCái"A0ìn™’ÍŒÓáP¨×f6ÛzC²yœÔ¦´Úê˲Ÿ’sÚ¯ª¡±‰ĵhvKJ¤‹¼³¹®O{¤]Ÿ¥:ÓáUš»­…;6ÓŠ¥š†n[Øf6W'•(Y«õDeÚò|/‚u%¼J“¿¿qû"úÕ£Å=aC4¥î…§‰Ê–o ’oEERQ'Qô9Ì>ÅÜ– ‚¡ýHËT“{r²×fîµ8ýAe 2œ¶ª< +œ¹Xa3ç§O¾M£ï|u(~£ÏO?¤¿‘xŒx4ÆæÔü¸zë-S/Ÿ¾pþÕ)ã#W³¹X2”•H ó¿3O½ã ïÞ¯HÑÆçdç–vêWÇz­n*qQ¿E,Å[4Þ6>Q¤r­F’Æ÷ ̨/@ßî²0&)¼9(&vÆíIQœò=é9äð°L‹/Ê7¡ªj<ÙŽ^ÄXÄW¿EcïÑ֛ʒ{þî¦Zzob:ÆÑ©C5{~è«i¬¿ŠSŒ)ïaÒ‰7nûÌäÆzkYZþó d¿¥Œîý¹îxæLŒÅÿâwžb߯¹ggí7­‡¤=òs Ú²Mý96娤-l3›“¯I‚Ïa6×Õ“Õk¯ë:ÍNwf³ƒ¯8ëÛ]d¯Ë|mWš¡Ô¤ÌqJRW´»Hz)%6ª-÷ù|I7ÿ…è¢KÚ"œ§'šz[y¯Í\7NVYb‡Ù<^í²*)i¹c³,/åô´§­i¬ÆQ¯4õm_ݼHsÖ™>«­^#¥ý€T‰—é{^$Õq{AÓÐ=¬íª³÷Ú̽DDdqú;Aê¬Î°Ñá0ûˆ˜ÅÙÓ QÔ²:¯»×f®hn±0·wÑ A0´»¬>‡Ï^7¥Ó‘8é³×Ñ“C·$Û¦wRŒ?¥š¸Òœa££×fê%éý!}Ö˜k «.®¤é’/æÍ!3A4 =®°Ña3÷R|g½£e¬ÉÝk3»™%ipJ9=¬¥Ï6©R£ûÏ> ¿Sÿ 1v×á3û«ŠÎ _Œ’\c~ª'å¬kë¿÷qà´ñNW÷?‚t”sJÛCd¸÷¸8Å8ç ‡ÍÛîåK™õç$3ùοûËã$K0zo|ÖIMV¢©¿àYÕÐ14Ô‘6% 5H?;::ˆˆ*S¿E˜íë„™û3ö$?Ò$ÿ1Ÿ@þ'ÁÐ12’vVºµê¿“X¨.J·Ä@™Ö&íáκ)íî4 ÓkªèØJÊçÆÊ‘†¤Nëi øãå¶înù+_ ÿúÕ¼ÛLÖMÛ}`ÏM›®Ìÿ ñàà`ccã¥K—ÒözáØmÖ;óœë=Ž{µ–8ô±û¾ ?ÖûŸþù}ßN›é½pìî]»ž9ç¾]'ozí‘/Í?˜¾G–82ìx’yÖtíŠøÞä±×^“Ïã˜úsO‘‹áœd ‹±Š–#ò·‹ùGX‹ÖŠ™œ½´Žˆö5ßS²Èè ÷8†0k•#£ÙÐ7Ó§&3÷$)«=ðléŠ.=˜ú—Ø9‹ÿÿkr”kX¼üK#Fò°¶‰2'`ê‡sV®Ö61ˆQ F€e£1'1 V—.]:ôÂ1øp9€ez FÁÊbïýw_yå•x¡p™0üΛp£`e¡æÃ °6n¿á .£bˆQ°æ)ø¦£GÂk`Ähcc#\–GŒâS> „à™Q1 F€£@ŒˆQ FÄ(£`õ±nçs誳ûÄtQ˘åÉ¡[Nšžð’Õ5Ün„̳ˆQµ‚¡cd¤#‹¾¬é€úYXÄezÎF£ÑØyš–¢§¢è³×u8ÏHñ´M&“ÑØ™y@Œ Ú‡]Ƴ(FFƒ]Mî®ÙÙ¬#¯½+ˆV¸L(l™~pp0mÏm·Ý¶@ 8Œ{‰¨\«×–…¦Â®×BfY`…ÓØØxéҥţRò? *,¢ès˜}$Š Oi2 +œ£GzJ1/0•J€&X¯Õ ¥¯à—º°âX²ïŒ®×êˆh*<“~@4U5:Qôõ Ì = FK hê-: õÚÌ™¯Ìkzœ6Ùkà õ—ëJ•Qòƒ£Ùöš†ž‘†äÑÊÔĆޑ¡4Àåþ(€£@ŒˆQ FÄ(úíÀ IDAT%c\ È¡ŽÁ ÀÒ³÷þ»1 ¯Ò†ƒ-1ö}N–’K—.]yå•DÔ|ïxcÑûâKEŸ 1 €•¡ŽIÁ ¿Z‡' / F°â¸bb`¹@dbb@Œàr£Ÿ‚.zÛÁy Óh4™L&“ÉhlõDxI24;œ/ü”"rKeâÀæÍ¶£Sw˜P{®Ê”Ed5q`óf}*›KS\f çKŸ8°Y¯×§¾xÔ¶¹d5ˆˆf£¬ í“÷œ˜ üÞ\¬àÓçNþ¨¨K˜CÞÜJ[Di·…´õ‚"£<âikr‡Èêò·óÈ@[W »Ý ‹ÚA9tÕÙ½du ·A ##J‡JRÜoß¿ØØ¸ARc£¢†p‘Ví?sf\ŽÖžÙ_UŒèÌvâ—Îö˜¨Ê<41êiè>S;ºytbUU<“‡ÎîÛ×@cÜPZ1Zˆ0˜8ôÈÙÖW'vmˆˆb|– BqÎbÄ£Q6[¼xØòÝS[Š(:wnŸðS‡n9ñÕ“öJA(…‘+‘EFƒýîIQ´ºâ²O4 =A˜G:ÆÎÓìt2zj2™:œd1K§U1ªhSÜ/ÉMŸ(Š¢Ï^×à<™Õiv:íPFW‹xZ&“IŠ•ª‹›64l|ÿbBQC\Š^ûžwèPl¯kb.öÉ\øØ:¯êä;£}9Æg£,FÇí'¶'H{Fcß{gô±ˆ^ûž*wÿ¨ÿœìhjz²¹XåC£§Þ÷>yY·9Æ?™ û‘û‘“Þ¾‡ÿð‹øé³Q6Õ¬×ýþaöÁ‰ã·Zî𞘘 Ÿûƒîú¿2)·X¬²eä'·²;~<²/›‘É-Íž¤¾‘ûþ(³Ùýñ}Þ¡C×?»«îÄvïС¯½5–ð†¢…K±L¿ˆ¯ª1fqµ§ Õ2myF[}é«-Œ‘w<)Rãû¥ô²ý ARÏDåZ½¶œˆ¦Â3¤ïéȳ _W££T+“aU¶}g{“‘̉¾§75ç–¢41êiÒȤlÕþ¾Äi®ß”ГïÒmÛ6$$àáBž ¸øþ müL2”)•ò™_J‘ÎyÙÐØL½ùâ¼À £’}ð_Ÿ¹îð_ Çf£ì‹»™zïƒÙ(ûð½?üã.Ãl”3Ú¹{gÙl”3âsQ6½p.´³òÆdœÑÎï·d ’§È߸ýÖÐÇᔣòôÒ6eŸ„ûÛ_¼¾·Í8ý£çmÛ¬¶g?]²YsíÆÎ…?xß»³²mû­Þ†?þÝÆÏ\ãY²Í42ÅþT{Ø'áþGjo¶šö¾#³9qzZ>Ê®‚gFÓ¤^òaÍÌP©ôté¤(’([ÎÎ-Š>‡ÙG¢H¡ð4‘FÕIUµ›zß¿xýÇT»ŸhT®×6ÙâÏ“NŒzj÷i”´h.£»j‰ˆ.|ü›MµŠËíÂÇ¿ùÍëwꟑd}<à }‡lެŻºƒê"›Uû›GmG/ö5bH°ÔÌÅŠ †û}ü9ËÁÓ¾½7^½õ–©—O_8ÿê”ñ‘«Ù\ŒÇˆGclŽ2~qž+A®£Êé§}®¡[öýì*ÆçˆsÎctÇÞ½_‘‚_ŒÏ%ž+ýû 7ÄÂçÏmûÌýÚ/ÂáòÏmÐÌŘB‰Šf$¢i™‡f)âs Ýò‹w”ž³¼«Âxe —B›}¦ ª­$оñ|ËÝœGœîéšûœ–½oé´ë·²ëµ:bÌâôû‡††òDåºÌvÛÔþÞ”¸hB¥>Ý7_¢··x}ñ¨í!:|& ƒÝ¥x7ê3¿Ô ­ÈK‹òòç;ƒÇM> JŽ~¼ÑQKO4Ɗ٦ϫ¸îꋱ2s#ï?8Ì·m¹ŠñhŒqⱓý(ÓT¼õA`þÜŒó?¢±2MÅÔ…i œ®¸îê|éÿíÙÆpãá[¯áRÎ1¦×ß–RVrû;ÍÆÑç{´[oŠÆØ·nì{þm­æÚhV3”wf;㯹:©ÒªÜ–GŒ‘~wKÚ3 Y˜‡ˆ¨\[–yh*¡Ye»mpïY Š––ãê·hìÃç¬;îÙYÛøÀèÖŽú«8Åݸí3“ë­eRFÄd?ט;ZÏ¿æ›ÖCgb,3AÊ®1wÔžz ¦ñû+‘¶ôÑØ‡ÒØ÷ì¬MfþÅï<ž_#ßß®¹~#³Üt#— þ*cŒóXІ{@®;žÉfdrË¬à—·}|ðëÆÆ;Þc·z]w{Ý”NGâ¤Ï^GOÝ"sÖõNŠ ˜æ(WÐÔ;Zƚܽ6³›Y’Yå>DDš†gØèèµ™z‰eÍ­ðûögS~;¢}o*õ´é_—~1ém¡ý‡G7ïÔ?#2v×á3UñðãáQýúgˆØÝ×àyh3>³¿jÿ›çl›õm"ÝÕ}¸Á3J…ØZ{ ~n¼\Ù“wV%ÊݼóÀõ¹_GÚÐxà¶Á¿Év8‘­H¯ë_g9Þˆ £…$7Ü{|ôÞÔsùŸÂaó¶{9Å8'2Ü{Ü@œXâGŒsº¶þ{Çë‰H¾Ÿ)¦$šOÏ?kz–j ÍØ™Ì3žmJš´ücœÓßýåqÊe[Üé‡þÞÚó/VéèwïýÑ—rÕ1‹…‹°ÍdÝ´íÑöÜ´éÊhÞÔƒƒƒ—.]ZxÁ‹ñAÐrè…cö}[UÒ¢?ô €Tö?ýóû¾½ÿéŸß½k×ÂdFdØñ$=ò¬éZ^]޽öÚÞûï.H+ž½´Žˆö5߃º@¤5í‡#€²À•_¢²ÚÏ–"°è,›•ÿÛ¤ÕLÕþ3ˆ‰%&  1 °\ ¢ 1 °|b4ÆàˆÑËK—.záü,=X¦‡½ÜÙ{ÿÝW^y¥ÚêPR†ßyN€½Ü)ɬP(ÒG‚Àe‚ˆQ1 Ä(Xó¬Ê˜ðÅ¥$Kÿˆ÷Jpþ²?ؾ†{ ^1ªŠí&ëšiƒ÷†¼Þ»§ˆŸ{ñ¥ÕëüUWëUÔW»o@Œ®*¯ûë5ЧÏÿ]ñ)ñ²rþ*­õªèk÷ FÁ’ryJ&ø€]Òa€ZøÄ(X&é€È(€o@ŒHÔ¾V¥å<ÐUg÷‰óS c×p»AXÄåBÎ#mM½“"1VÑr¤»A#¬"$‡xÉ*9:Í_6·\±N\{Û@D)¦Xçq/•kõÚr"š Ë+åj×,¢<¹ ŽžÌ–lpô¤iåØA0ºýVè0zÚ…Féùm &k‚±à:%£]îYmílÖ{“¾†¢X–Å[I®×wbÉŠ°Ó=–3ö8Üâß,b^Ma~¦?àF½º2_>×vvaÞag÷£¯ðë*m½ž‰%+sÁôºC17ÓäªÓÕèW ÖŠb™_°‰Jíèø`ÖÙ«‚ç ÂÌRÀ{º,ä"zþ…ŀ뚌€”j±Ü\Q×k­^WsX;C_ÑõÒFë5”rQ•²9ÞŸeÂÉŽ{5­#cèw‰V½Ò;Ç Ô³çz÷×ÇŸþÜøéÇŸþ¼ç#¤Mùq²b E—fº›©U±ßÝØè­•©[ëÓ¾ÔHçl"[|\›uÚûìA8®6“ÎQz~kµk±ÜX<:Á[o"±àLýCï-þÍXÍzT!4oÌXQ7 YІöW’©€çGÏ_~  Nzáhmmq±ña–sÁæ 9ÂqŸU#‹‡6›U5²(~ÿV¿Œ¶õ9‘Z× àý/ѬW*àN5?Ùç\©CïI©Ÿüì³?1 æTÊX)e*àI ÓGquT§_¸z‡NJ)Ô¨Gí<[³Ñ 뎋¯µ§})i4ÐÌü‚-™ÌŠxx`_'?é¤õ¨]h”žo=4—MªQˆÅ½ÙHv’Éèb ÀPº}÷¾óö›/ß¿ûlèÞ»»»ËËË'''—[è?úäÛn߃¯¿pàÉç_ü2Ÿ}sùõ3ûãíÇï¾õÚu þ¥Ôºñé§¾x¿äøfôÀk×£7Éè¹âÓ“;Bˆ÷‚oðß^ ÏoåLÕEÖÚXI\•Òç´[®’Ñ+ᙦSë©R‹³à'¶Œ¢Gêp+ßáb ÉèÕH4ZƒØHFq9žßÊy¬çÌÞ[Éèõ-ú“Ï¿¸1Ípíæ±&üë>{w•{ 3£’Ñéúe>{“š!¯þìÿzÕúzõÀk[ÉèUÇG!|‚ÀÍ HF@2 Œ€d À3öG;moo5\B2º¼¼LÈp9ÉèÉÉ !À¤°f$£ HF@2 Œ€d É(@2 €[œŒêziÃår»Ýn·ÛåZÍÔõ‰œÐåÚ(éúÅ€ vg"gÑ뙵•dEøâ¹°CQt½¾³–(= ;å⫤(ŽõBa¶¸%Éhùq²*¥/ÖÈ>Åâß\Bèz)±É _<."ñƒü·~íþ÷ªlLÇzc¹u‡ÒÚ':L¥ªš6Úzä·œf±µµh¯íæ<¸*¥BÓ¼ñ½°]”mþ»uEc‡fº¼’ªÊÖºÀÅ›Àcz]/³BÓ¼N{ŸkH5Rt ëäƒõB!ŸÏçÒÁ9MËF­'éRªû"š‹y¥¬&—ÍÇî‹h.´‰Šy{ëÒ‰•dEøb¹\>Ÿ/Ö;ÒJc–4ŸÏçb^!„ð9ʉ•dÅŒm"I”é—b¼™ÑÝÝÝŽ-¯¾úêУ4Í·'ª3ÖY!*íû–f„pzµl6[,…íö¶íÖY!*Ùb)lïžÅ”R¬Y·-YúLpêz)ÉjÂgÃÈž…˜µÚ­³BTkuÝnQ”îÚ`,ËËË'''ÓJF ˜¿í¾Øé£ù½p÷TééSu)…vÞÚ*Š#¼:\IV«©€'e<÷ïÞíx'­šV´RبGRŠJíHKWÕ0–íííq9˚юTQNŸPUµX;ƒÔõúN,Y¶P:P[‰dûíg³Þ=µø7 þÒ†+ªÊl$áìÊ€õz&–¬Ì…¶Lyê=«Mh•ÎÕ¢ceñ8¿É|´“ýõPÇÐ>Žj!Ĭu¦ûG‡µc!ÊEUJ1kµŒùF‘=÷jZÏ,¶ü8Y±…¢K3¦ìÙ2¿`“RMïÓ.ÑdÞ¦W,þG{ÖÄb$êQ…ýÁ+Š#÷©Q5²xh³ YU#‹âùo?Ý-6^oÛG¼®±$ÀxY^¶PtÉ¢(æ|ØX*e*àI ÓÛôÿf¬æŠ¦î”à…z€Ë¢íbgV].×j¦®Ÿ^k£Ô¸t=³ºš9Òžô,À€‚]n¨¯ Ž€ Ï($È€[Œþ‹?ùJϯï8çô§½ç¬žÛí^\K6c•XŒ¨RJ©Fæ˜+K’Ô?}ìl¾~17÷Æ~A6·Å“>³Ú\ûdô|ö‡?>ûŽó›ßq~³õo!ħ{EãÛQ’ ¯¦‰l±,fæl­É¹ãÚ¡maÞÒœ’RÝÑ\:h•äãrkÒ(ŸÏçÒÁ9MËFN³)ÕHÑil¯¦‹1Ý ÙD%Û©w ÆõÌj$k ¦sù|¾{ ªœˆ¨Rzc¹½èBg¥): …õòÁ€’ì‹h.æ5nó±ÕéÈ€+ÉŠðóÇÝ¥:­{Ì+„>§±C9±’¬Ø‚± Md#‰òxmyÏ:§iâ°V×õ£ZÅëõ¹©®×k‡6ë½ÎÝ»#£(Žð^Ü«išæï…ýÛ= m¾Á½Ñä~mÀKFÿñÙþñYëß±èB|üéÏí­hf~aNӌɹ£šX˜ŸiýHÓ¼¥1c¦ÇÇì³íçÑ4o×¾|ÞH¿þêãœñ­ùkX×ö Y4æF³ÅǵÙá Ð&Šé¯8¬÷ü©ÃéÆ{<Ær½ñKrX;nK¸ÇËÃq¯¦õÌbË“[(º4ÓQ)ÕôÎñ™Ó¡9MÓ4¯{cÕDã¹ð¨‘iΧjt^¦é×4ßȽQt·1ÜØdÔx¿ù“Ý͟욟Î~Lo^3—µ…¶Ì/XÙhV ÍE›oâ«‘Åô¡Mt¿Á="‹3žž/¡é õñ~³žƒK²[ôDÕ LÅt­a E—:²Xc}¡ñß\l‹3æÕª©À?ÀÕX&ÑÊ}oû¤ûö×Cs]‘QËR4d•TÀCês†®8¸ùFéæìÖÔ™ÿC|Wjæ¡Ûwÿá;o¿ùòý»Ãß1ÚÝÝ]^^>99éØþáGŸ¼êûÞc³?ë¿Õ뙵•dÅ/¬;®TÈÆ-˜ñÙ:Yáã]æÑ=ùü‹?ÿ3Ë©Îßþ¶þàë/\…ÞHÌSÕ/WìöôäŽâ½àûï@w³?ä«×wbɪ”Wg‘bëó…š-´fõ$èœ×d’ѱ¦99zï(Še)àKEÕO?õÆ÷ìÜ;⊫  IDAT€6N85.`þöôbå¢*¥j$á,¬;zY~œªVEÀ“jn¨ìÔ—–,Š¢XüÑÐ~ Uµ-Ìw?ßo¸Õj*àIyc9cö¨£$ÀÕ±½½=ƽcwzµlvÀé¸w×yœp2Ú6ˆ6éz)±½œH,FÕè†3×ñ´±±â-ó[”Æ·k+ÉÊþÁñ’ß"t½~°_BV’±Ìü#cŸ¶1Õâß,øK®¨*³‘„s/ìP”±’nà*8C§åÞÜlX3ªëõµ´u+ìP{¸íÍúSåÇÉÙ@k¤TËü‚MÊêþÁ±¢œX©öré MT’+‰~ïX'6ë=Ú ·÷€dtX&ºR 4¦dN߬_Ûi}VbcÅÛëm Úfææ4í}ö?ÿ몫èÜ[w(ŠÅÿ¨ëXÑüÜD·ÛíñD³ÂŠöùààÆáÞÜxÊC·ïþÃwÞ~óåûwŸ Ý{wwwÜE©À-Ô}§pïnçØÏÓ“;Bˆ÷‚oðßàÒŒ€d$£É(HF’QÜ!fï¾õA ‡ÓÀdçƒ÷¾O '''wïÞåcíéáôp éÉ` ôp É(0ÕdT×K.—˵š©ë§Kn·ÛåÚ(éúùN{ö3LõüFÏYÇ)•vèΓ=ÎѬõ̪«Ù‘Úî «Ü.W¿KL³„¼ô’Ýn·Ûí/½Øþ}ÛOŒít1Þv =ãñ²š|\n}[.foðø¤ë¥D$«iÞX.W(¬;eÚ…WÇz¡p1×Â…ÙY[IVlÁt.ŸÏïíEE,q-2þ[Ü¿ø7âG¿)—Ëårù7?ºÿÃï63Ƀ^J½øÓr¹\þé‹©—NóËq·ÉèYÙææ4‘-C©^ϤmsšfÎÝM%½5!´Qj ½õ̪k5Sï?·ie“­ä2“Yí˜Xj]ѵººêr¹\O´'‰Åˆ*¥”jd±mÈ¯í¬ ž—*m4ç®6JL´yª¨ÇcÎnÇ­×è‘9Òž˜3i½žYu¹F™ší¾„ù§ÝuïŽó4²y4â_BÌZgŒ Ïâߟÿþîÿð»ÆÓùƒ¾û»`ÚH(>ËÜÿÓ¯6÷úêŸÞÏÙå¸Û€dô<ìN¯¦Uöêzý`_,Ì[{ì3c5g¨á­MTRÏbÚº¶8·®—ŠY!ĬÕnBÖZ£”¦yK33g‹%]×õzíPhÚœõ^Û{ê>¼c2æ`¿¢i^§Ý\ÁACÝXõ:Od¤T#kÃGúž—h«»ÝéÕ´fèúÆY°T` ë…˜W“²š xÌÓuû•ÖŒéàFzƒt´xß±­ÍFˆ:4ìf´caÞÃç_ñ‹¿ûß³Ûíkÿ+ótb¸Bɨ°;}BVS“³¥öaÂxÂæñDUyz!Åâ†lBÛ¼e„üFJ5jœaÈwd~úy>Æ©LF\»ëÕñ$±íÉþø‘1òƒ9M“ÕTÀãéùÐvhð'gL&ÍåÒÁ9Íô×EW¯­Ïßp¹O§¨ù‡SYÕ*>§ýŒ=üí{K¾Þ¸õÒÖИó—ðÎiZcEø=|ðÕÇÚW—ÓÁß}·ù9£ï‹/0 1ÿþo‚¿ûžÝn·o÷ÕŸ½ßÊ-ÇÝ·˜òÐí»ÿð·ß|ùþÝgC÷ÞÝÝ]^^>99¹âµÒ뙵•dÅ/¬;hãéùð£O>xïûÄÁðþÿêƒ÷¾oÜÝwÊu¹w@¥‡Àùsŧ'w„ï߸s“êßú(P!„f úJ;.ÉJF†ÖiU’QÜ'''~ô q=@2Š‹öî[¯Ý½{—Eu ‡HFq9x›ôpÀyHB€Ë2öÌèöö6Q΀{€ó&£ËËË„ 8î&Œ²| 8îzbÍ(HF@2 Œ€d É(@2 ’Q€d·2ÕõÒ†Ëårm”tý‚K‰—À•HF€³¹3½Sëz}gm%U•šæï…Š"„ÐõRb1¢J©ÍÍÙ*•Šð?êÞÙØ3+|¡Ða*UÕ´¹ÐÖ#¿¥ë$´!Àµ5Å™Ñrb%Y±cA›ÈF忯ˆ*¥7–Û‹. ÝY!¥º/¢¹tÐ&*ÉÇCN€ëe¼™ÑÝÝÝŽ-¯¾újÏ=u½TÌ !f­v묕ÃZ]·Ïˆãڡд9ë=!f¬³BTí,„šæ ,Ía¢’-–Âv{Ÿ“ô,.ÒòòòÉÉÉ´’Qãæo_LJ5êQ…”¢R;bFÕ*BˆYëÌ(;÷Ó÷$eÀEÚÞÞ÷³¬-Û½gµ ­rºZTÑÿ•÷±v>gÁpULkͨ¢XælRªécÓF‡Ó'¤T‹åƺÏ;÷?sï“àö&£RªQÇív»Ýnãƒ?-þ͘W«¦­-B{8îÕ45ê):ã^MkÞsç~쯇æz׋òÐí»ÿð·ß|ùþÝgC÷ÞÝÝwQj?z=³¶’¬øâ…uÍpŒž+>=¹#„x/øÆ .bë#B…š-´¶Ól·ÖE'£ŠâX/Ö <øï@@2 ’Q€d$£ÀÝ!|øÑ'7¸vï¾õ½…­p‚‰}ïÆ÷ÀK-ŒNطݾ«\¼_æ³ù¯ß<Ãÿù¯L`om+L$ø×·ï]ýxÝc $£öàë/\Í‚=ùü !ÄWþ™$°´Âÿº÷½«ÜoFl€dôaТ¨5±’Q\Þ uG!´µ&¶@2ŠK´˜A¡¨5±’Q0hÑ ÔÄ.-ÕõRb1¢ÊÓ_ ÞX.l/'#Yá‹ï…Ê5~êÔQ;M› m=ò[®D¾rGN©5Í;í†ÓõúÎÚJª*§Õ3_ÂH«÷ê¥ OTí–ɵBÒv”d}»ûä¥ WT•BÍ+¬;¦Ü÷&ÓFg®¾ˆï­;Ó–¢sú¿²~R±€«o¿ï4ÍËåréàœ¦e#‰’®_ÙärÃår¹6Æ*a«v6QI® ª]ÇùÏv¹}ùL;Ã×à:æóù|>_(¬;US#IVlÁt.ŸÏïíEElÂ}æ<—PÇz¡`A×K‰HÖNϰL¤ú•Ö\’‰ßOÔüˆ¡žYªÒËåb^©FW3õéõ½~µžê]Óá þ²šì} ·(m˜±ÎöùÜM%Ý<cl4]¯gV]­oÛRœÒ†±çj¦®×3«.—˵š©ë­Q­ß™ÌªÛí6vnMJ©FO´'ãy]µ;-ÿFI˜¦[ç7ÛºJÇQ£W³sÐz®ák¬öPÔóö¨VBÌZgŒäÏâßld~Ý]¥ç…©gV]m]hè%÷–RiÃåÚh•ßÜ‚Q§g&Ô ƒÒ¼;Ú‚c*|[uFÉäŒ7—‹y5­#;<دhÚœõž÷¬sšVÙ?¨÷:Ïôjmåö¾t”Y=½ ôÒ†ÑãºóÚqƒÐø=(ÕÈÚNÏ:¾OÍýdÀm;à·_ßdtú÷5Üèd´\T¥>§y"Çùòù|Ǽi=³É6&EŒ¹Ÿrb%Y±cA›ÈFå¶£è4¯¦‹1Ý ÙD%kŒ"ÜÑÆŒæã²¢8Â{q¯¦ñ1t¹¨Ji ½nØ=‡ÔqþòA÷åÌ< ­æ€AëÛßú怯³ Zƒ‹zžÀ*ŠÃéRª‘Å5sªÝ¯«t_±‘ú¯$+ÂgLèvLö»ÄàÞ):Íç1׫ïÌè$Za@i{'æB´î²~Õ9SvhüéU© K˜&[ë®›èÞü‚MʪQŽãÚ¡maÞÒÕ g ‚/óÊjj¥ë¡÷i«3 ¾mtéQ’ÑiÜ×pc“QcêÈUµ¹àVØ>tfјƒiMйE1+„˜µÚ­³BˆÃZ+Ó4o×vvaÞag÷çX[6É¢öO(-Kâ^MkNr÷ì*ý·ø7 …˜WýßDé¸ÄÄ{Ëd[¡«´iM,Y™ ¦[/€Oº:F£ÖŽ…8®öoô‹¬µ¢Xæl¢R;:>ØŸuöªà¹‚`\Ý'*ÉXúpÒÜ.=ýûne2ÚñšBÛc {¦-RªiÓňcÉ8ž·c¿´kž[-–›kIKÙLÃyÇè>訳xö\ïþúøÓŸ?ýøÓŸ÷ÜaܨŽ\Ô1«ë¥Ök(Æ:ãÆ`ߣ« eǽšÖ‘.ô»Ä™»ÙT[¡@Ú”'+¶Ptif@ç?Ï«èͳUkGBÕªý}ʵŒ¹ÑlñqmÖiå7À¸A0fÙm•JELü>»KOõ¾€+åâ>ô^Qá¸Oª‘ÅC›MȪYñ½°Ã¿¯¹¢Oªõ ŽþÍXÍMܩƖWðYF>PQ,KÑÐþJ2ðüèùËF_¤T£U¡ [(ºd K‹F=ªš7f¬%5Ÿ?©yã{áŽo½Ž:kÔ{:ä'?ûlÀOGg§¨cVQáhmmq±*¥B› n=2¢Ú£«ü ÿ­~mëãQÍí2ìcô– k…~¥5§RÆÊH)SOJ˜>ô´£:ýÂÕ;tRJ¡F=jçÙ†5úTk-DçMdŸ™_°%“Yô`” tÆâ¯-FÎÒùÇýí7¸xÓ¾¯àêPº}÷¾óö›/ß¿ûlèÞ»»»ËËË'''·$:~ôɷݾ_ájïÉç_ü2Ÿ}sùõ3ûãíÇï¾õ½…­0‘à_J­õzfm%YñÅû}ÿÍè×÷¾€±rŧ'w„ïß࿽öž3GB+Ü‚ZË.«Rúœvb 7 Éèµ÷Lc¡­pók­(ÿfÁOl€dWnÐâ­ZZ[ Å¥ ZóhjMl€d—ä93(´µ&¶@2zƒ=ùü‹«\¼ë;ƒrÅ{³[a"Á¿î³wW¹23 €d ¿Ìg¯x óêÏ,­p)Á¿¦}ïZôÀk[ >±À|‚˜*IpYÆžÝÞÞ&j¸„dtyy™àr’ÑÛó¿Òà°f$£ HF@2 Œ€d Àõwçóçÿðì¿}ôsÿòpàü¿/¤âóçÿ'ÞÔäæ°IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/aggregate_report.png0000644000175000017500000001504612032647206024404 0ustar ebourgebourg‰PNG  IHDR^R·VíIDATxÚíÝMz£8»P'Ovä¬)5®•ÔØ^NÆöšê:M\„â_œ3èv z…€!ÃÛãñ¸Ðï]H˜$L& €„ @ a0 a0H˜$L&€ƒùHŸõóó³úðx<ç«ðc‹]ÇÛ²Uø!³8ES_곇¥íy¥À¸„©:aW=§:y?þKú'ô1ׂš7ìšÙUü¯õçÖW"·ÿ"+jå1­ô.}ñü©›-Õ -Ëàwƒ!ë˜ç–\ó¼É'.=}3Á´`ÊŸ"ëJ,RÊ'Æ>¥üÀš’z˜šU·Gsr«¥/ˆßÎk-­ùÏz])‹ –*Ø·\EJ†4vQÍÒÆcéûîEßì?aJQŸËƒ7­ÿOSâ‹;À(¯ÿ&˜²d”6¯Z€½'Lû¿C´D [y˜ßö€„iD²hê±äÄ{Ù«¨;"7΀"¥úþº>˜¯Ä‡u½_V J_TzîYÅØ+»´c«ØÄ c˜š]/cÿš2w OâÏß‚ª¾¾U¤'[Í!ð—´ç Æ2X C¿`ïygèàO½úÎúñ¿s¦¾ùÿté<çib‘º3O}Ô}=Ilèmú™¸ï1•})Kv7ÉŒ‹ZÞ (ÆüOúÎøëŒ+˜Ý Oúv¢4ë$~eâŠò&áˆ{W& €„ @°_ÏaúþþVG@Ù~ÿþý|>ó¦jê(ÕŸ?çIzÒw<çZÔý~·!€…|}}¥Ìö±ÿHn·›Í Ìîù|^¯×”H}'•~#K a0,*iÐ÷çççë¿Ç#øÏ5½½½ýýûwÛ*K,Ãk¶Ö”%J¾‡  ÓÒ¦M’¤Vrp ¡UNÉ ”Ÿ0õeQõç*ªûŸšQÁ>ªà·2²¨*5i¦#݉­d«îþif0‘EÕsVÿŒ/'½ØÍ/Ö% –ªoNyì.aju25ÿùùæ?«œ©™?Õ›yÒ”Ž«nâÒ7±5½•| .ªþÜMÂ2²–¾/ “8'°‹„©ÎušS.ÿí.jý©û9²ðÄ$#xW®ÙãÒ711±h~kb.Ò*ÒàÒÒW'I€&L•VzÔº—½œŒücÆT&{Îø_#ýO3Æì+aj%FS~.—ñ­î¸¢l‰=4ÁÁLËéöŠé"€Ùø9Lõ §úÃ`âr Ý€ f3)yUwž¼Eeçp­!SZ$ìÐè[rÍN¦æ°î±Kh.$»ôÍŸ•5u'¿uiôôŒZTsxk9ñ¢6‡au¿Øý•\Ê*Œû€¥½Åó•ïïïß¿?ŸÏ­Êw¿ßo·[R$¡¼!/™Ø$‘÷ÀÊ~ýúõJ3þüù3˜í|:Îàà2~—ý-à Ž03›¼tgó$I–¦|Ïçó~¿ÛT€„)ìëëëz½&c8cÂtù§‡Év6ô® $L& À†>Nçõzµ±€®ïïïÁyô0H˜$L‹1†éóó³þüx§—ïAþüÌv¼`€„ `Àð¯äþüùS@œßßß66°HÂôû÷ouH˜b î 0‘1L& €„ @ a0H˜Îê#ã;ŸŸŸ¯ÿ>æ?»Sêv'¾>·þº‚¼Œš³ùÏ×·‚õ²¢Ö¢Ò’²½ú¶Ú¼õœ]PH”'’ l’9-1ç¼9A³ÆæM1—Ë`äFH˜þÓgP»)E}Êlþ©;g´fëËW"3÷ÍÖýÜœy°ÙsÆ{t‚ùD^?V¤"¹K°´ñJnmÓ`ÅÎR°OóŒaêžh›jžëÏ­“nÊ‚3§,!Øm3X€ÖœÁÂDæ &‘‰…ì¿iÕÀãºÕ¹»Œ+f3qŒ'‘K×챇©õ Þëõº·0ê¤a¹¯¯vO쌉'Áœ)/Ì`â; ïx`C)‰Ínj˚%3;säž™øõåÂŒdB‰·Aw«[ȦàœDâE{æ ïzS}^ïN›dÏܽ?•—,úó½¼%7GŒ—s¸qÖ†.p8;zSoš9ž¥ .0;É›1̼,-±ºvÛç4jsÀé¦àÙR²–àÌñ‰Á¦ »¨)%ÏøzJ ¿²ZQ7\8,ç-å¤õ|>2Ê“˜äx5 €„ @ a0H˜$LÅú8aÌ÷û݆gŸ¾¾¾4æEk œï($L#Ün7 ˆ½©ž–øH9»ÆÀùÎBÂǾÌ;´6cÈ®18[ÆàÐ:}9Æ0H˜$L&€-ô À”Ÿ ïÿ9eD„ €ýŠÿ˜è(Ïq(# Ž0}~~6ÿùx<ª)Íêö¬µ—·ÛÎr,ŠÔRÆò'©Y˜øBf‰=’Itž½Ûæ4*ŠàÙÍbJmYŸ9=LÍȵ*8¢æéÿÅŽ¯¨f-­\WÍh·ëèí§•hÚ)&¶ºR;P>æmg}™i_GT✃ßf¿ ŒìžÕçàÄ`N¶‡6R¶î§žRÏ_Ÿ6âñvºw{éï¾jý3XŒîŠ6?`cLiZñ)›\Nô5þÄv¾ÚÄåÒÇnÓŠ7øzž¾ý¥¯õv—°‡ÆÐô¾\]wãla«ÎÙýVßòé§ŠVrpGkîŒñ}W;l_ÙòJ•~¬kMŸ±6úV´ç¶iZ­‰+7›êt“·Ý·¸áNÔm‡ÁL+cwÛ¶1ÌÖÃTwl¢×š?¼»~°~wKß §ð½í¶ñp²s¦¾xû¦Á¾«¼ƒê,Ë\¢9å5­ÕÚR«_$½Æúê?/´ôx7ÙË"nl£=hOÇÔ1Lw‰ì+<K0ñ ѼªÎ8òvwÛzJßM¢òê°/Þ%z‡hNÛÖíôZ·“–È3‚¡¥ï;ë×Ì!®yö›0Í›TåmoÝN°UŠÐꊿt†;4ï¹—½ÃöÅ»ÄAïœ9}zÝ.‘6-t6 †–¾ïlR3å%å–}Òwâ-áÝ.ÈØûmõ ‘›_¼Ï@}¿nIÙ=ê$·žoÇ)èh9Ø–V>•ôý5øÅøÄ`hûÎr5Ómuó¶œàÒÒïJm،ߗ«ëÁš·§/ˆw";QÊŽÖwvoÝkØd‡ýl,[¤T‘’GBë<”qÐ;įUÛÓ#Z9êæê[Hz;_mâ:çñ‰«ŽWfzª°á.ð–²î깨Ŝ*‚O-ƒÍýúõëÕ2G=€¸j̧}fñÄð›‡é¹ŽÅyËYâL±ÌW}~}}Å_-²ÿöVF;ÙGæm³ïnsUBb’ãÕ(ÀIŸø²þYdöµg/ó•g¼NG¿ž,# »ÛI˜€SÄ·]à§)Ë,£ßÅ{âN²»­ìÝ&0H˜–tÒ1LÏç3þ И‡jg|¬ÀKaáPØÑMc^´ÆàT"+à‹Æ 8D8DÌÃ&€©=LRT@Âã(pfnÉH˜$L& €„ à¸Þ¾¾¾Ô@ŸW²ôó¦ÛíV|¨¿~ýzE{†J‰T¤"©HE*Ø#½ßï¯`ÿ}påyä-R‘ŠT¤"©H;–1L&€ý$LŸŸŸÎ9cÁ•~6,·êÍí¤›DšÑ,÷Y]Á†™8X}{DI½¤–?¥mï¶1/qøMlÿ 9Ýìç¾\ñúZidsoÞŒ?.¤mÚÇãÑ÷ÏÂÂ,5ºøfÍÛwXQ­ ªÏñ‰yÛý ¤o£Öæ§·íýXhÓLlÿÙQœç›Ýbw{¶}_§"‚W‰Á+—plÖß-s3MŽ\ÇD"Mï!XíÒ¤K0œ”žŒÖ7ÙÜ;i"U4vC—ÑÑæž·oF8%m¸ÖÑi?Wðc·Wð =xŒÚíFI?¨F>ƒM94õ`…zKÉŠZ×yè{ïa ^ÚF.s7I*Ç^gÄ#jÕZ~äÒlÁNz/Fõd .jå+׿Fož£È«™_ÞM¿XßO‹MßèñpŽØ+“ض[s·-ÞðâÑm{âñ3=ŠnÒ0êÔmE»:ødw¢ aŠl‰Ã}º…O‰.8Ï”ð—î ®w’ô#é`…«ñ ‚Qì°VuHý¡™ßï¡Mn¸‰/…:bh­–<Ú¤_å.Ñþ—Ø(σ·›wÒ‚'—ô{å‰QÌìÇúÍ}–9*ad·é»«ºD™ƒçãzâr =%–Áyö¿¹*ÛNÂéž#³_ç‡Î?VëHØa’·hû'1[êVx| SßÙp…ÎÚ·äöyõ3Ø•’2}Æ­¿ XnN‰%¾êClî%ŽÑ»c›WøÙ‹í¬³ÛSTðBÑi[óØäH5å'}CÅò¾f£L¿ú<\Û[àÄùW;¢µÚk«—¢/Yà¨_­¯œ+§²ó¦»Ã}goE:ÉOAãavïsÉšíåíq‘yÖo ƒÍoÔérÕøXtãÕã`.¡»ª­;_ëÜušesvË<öpÓ ?¸®½UÎ`1‚Ÿ¸ó͸­³[ÂÊ…ïÖvkìZßæèG’ÝTضy4îd_èo’¤”L‰%±ýâp4öv|ß)¸õõuZE³ùÅÇ0¥âfߦo___·Û­ø×ÁÜï÷êM{ˆtÑö·«H}瑞g›ŠT¤"=ÖYfúqøl›õõßW¦äÁ•¬z¨³À‘öˆ~¦W†øÊžÎíN"­ÒÕ3DZÇÛÌÖ Žô<ÛT¤"éÞ"M?ÒÎu:Ïf­ü{Kî ¡Vk"©HE*R‘ŠT°é‘¾RÃW¦ô~ G•J˜zUwƒ¾ßÞÞþþý;}s-çœ^µW}hÖaúÄ£Gi?‡nWÝŸg›éÄð ØOûvɽí§ñúÛbë)뇙Ѻú¾â=¶©|,½J&žVëÏéi¤ýº]u žmZd¤Ã/`?íÛ%÷¶ŸÆë?£ÅV6ɖƶ®"÷²­šÊûà—+ÝÝ 9±9­2]°öЬÒòúÒû–´Þ“ïÑÊ¿“X£ÛOøs•¤•´Îàñ‰gÞ‘?²S­È<²%–8(ÔWuN9°ŸË€îiuŸûiënÚį”q ”Ý»&aJÊÄ[]‘NëwKè€))5ìÞ/N<â½ w)#Òx LÖð€øV^´8À½Ú+.»r‘y-Í~ýû?v棜DÏ™-âWc³Ü%¸Ÿhëduðǹ_?íÁí£™µRËxW^ú<ä5ñÖ N<ú(`PçQä¦`ù‹l½'ߦ´ÉH;Œ„Ò´·Ö.cë»Éu{¼º¼KN¤"©HE*R‘ ¶7Rï’H"aðsKîz½ª€®ê–ÜÏ ow—E*R‘ŠT¤"©`ƒ‘VÜ’ ax5Ê,Ï—;í“uæ\ýàÄ£GlŠåE|uÆ¥ó¨Øã¶áøæë ß~z¸mzéXÑÊ™Xÿ)ѵžE´~˜y­+X!ÎÎcOIK7V[e® ,ò½c‘ò_^X¤‘x¾×¤l¾£¿»ê<ûidE^d»Ÿr¦ÔJt­ ºI¶”Ѻ4¯e{lJ-ƒ=ýèG¤àiõÐ]݉s«0ƒuž½KVÓ+­7÷Mô.¹ù›»rdïÏE¾x«ïÈ•~{Î…ûá" N))ü£ÜgœëÒ}wêúÛ48Bf®èN~íºvÂtq—tÉ‹¹óœiÎ32±¼;q'¿Rм³ü¸Ip°ÌºÍ?¤Œ*óàÕÎú‡‹)̾dËy|¥„©à᜛\žGÈvN:g.x¶Ö{žðK±”¸x˜[æzÐw‡`²åîPÐ{zú9XïFˆÏxÀ­4np¢B¤‡h½'L'}›öýhîp‡©•y–†4êgª)?<”Æ4ýþhߣ ˜¾«z¸Os@B‘c˜Ò#=OøçÙ%‹Ü¦ *XÔì ¾;xhµðÓ[Wú/¸~°›\ÍÆ[õÏËwo·Ûr ï3©HE*R‘ŠT°c#­^¾ë±$L~nÉ]¯WÐUÝ’ûô-aèK˜.nÉ ’0H˜$L& €„ @ a0 a0H˜$L& €„ @€„ @ a0H˜$L& & €„ @ a0H˜$L&$L& €„ @Âp8Õÿî÷»ºz{<×ëUEôùéaz>Ÿ* 1L& €„ `Kª8!ÏRYß××—J@Âp0·ÛM%¬æù|^¯W?ÊFÂpȳ¸JXÇý~—¡rhÆ0H˜$L&€-ôM R~"î'ÍH˜8»øpü¤ ü›õý©û“æÏÏÏ×GúòÓ¿’±ðb$ÆŸ-¯ª«Ï•…*¿¹Šy×ÒZòØÊUíéåÍÎf ]Æ0szücÃD­›<-±ŠÙ×Ò¬·¥ë0±üKÔ!—&ή> ¶®Ñ#ÝÝ^îçàY§{쮽;ß”Öç¾@Ɔœ3£râåI¬¢ôõ®Ÿ¥5ר*X°ØÁ›Ø>S*'±ÉµÊY÷!C¸4:™VèÀƒ=ÓóBFwEð¤_Nð+Á>†ô’Oo‘0ûúKšsN©œxyÒ˾ޥï‡V’B_Uz£J¬œ)k ®¨ÙÝ•#èa‚ÂÅ/ÄÇ.jìé$ò•ŒE¥ÿ5ròk¥kKTì¨2¤g3ËeK­~—zE}=4U’I‹ko®ÊÉ[Qâ P<=L°¸nŸÄ®Ê–šÌÔ¨2l[™­ž¿`þ4oùó6PF-%Þ9u3ŽÓÒÃkœe Ë–f jlFu¡-ºA3²¥Ëb?ÌœX²%¤‡ ò/ÖûÆ Í²œôóÜ,‹š½ræÊ¥F­wéò¤/<ò;€YÊ™8*^‡r 0Á<]Á“Jw`ìàÄô夔$òÅ”_¥õ-|–Ê™XÕ‘Xæ]ïÄ¢F 6c½¥WΨµtÿ\Qð'™†1qZo./(Àý~ÿúúŠ¿ åv»ííIßÍŒgz Ã`l›Ùa“Pá°[Æ0Q‚W¶t½^ãoGÙ¡¼ó a‚L½r1I’o,Ç& €„ `QÆ0'õ|>㿬¨y¬pR×ëU%¬Ÿ¤ªJàä 0À& €„ @°¥ÿbb–jÛ.îÜIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbc-post-processor.png0000644000175000017500000003434012032647206024763 0ustar ebourgebourg‰PNG  IHDR2œrøsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 6‘' æ IDATxÚíÝMh#éžçû<7ïb–öNÊ<š¢ iÄP#®º}œ²E!t‹.‹"1ƒŠºÂiƒMW‚F¦WՆ̃ ꇄ‹03&'‘«©ÑFNÙ3}ÔmH oj!”à¢Z'-ïìe/¦OÄ,B’e½û%¶ëû¡®ˆç-ÂY'çyžˆÀ  ‰Èññ17àTÜ€›€X@,± €Xb± Ä2€í^§¦™_¤%°üvÞ­iÖ¿êª9ÆÃáõµI»¦5Öj*føcÙwSÅüŠ7ª«Nítk­]ÉKº¶Ž:¹ìl™*%B>ßJÞìVFzWò§(¿211јɬv¦ÇWó¦ÙOÓ«…K†°¯×ë]éÞÝå;èß½s•6 ¿5yVÏ7Ö$S:2çX_ ÚµÖbf~ÅÕ%ËϻܚfVRs‘´(Õ<Í–_ôî´’š %JõÖ®ö^\[G—eM4Í=ÿvÝ17(•⯠Á–•JרßH§Žû""Rx/)Õº¬©¹²ÙÞ=Ú&Cþx$Ýp¤qý±)5JëR©áÿûí¿ü§‰ÿ¤+¥Dút«Š«kGë¹®£Í¹éx±ÝÚnkï¦YÙœ›N”T›´ZIÍMÇKVųw£uÌõZ]NuIÛÁg³ üÑহì"¦¦Ù'£3Æ!åJËš iV6ç"ºRÎ1]ÓL³R>Þyìº@_õÖ¤òÌJj®aO˜Rzd|.U1Ûæ›Ëtd)oÎùB‰R­»î½›f~uü4“i¿!“ÉÙEÞ.cîrªûHÚÜ4÷®  ›cH¤X,ŠØj± êÓ­“†áœ9]ß<,EdÈa;OrlhMDÆðL´ºúÙ4÷–_ñFõê¼iæsi1¤yKDÜo—¥ái±òd§Žêg‰³sW{‘ÂjDoY«µXÃ'_틼.)ts—Ëé~ê÷°iðà¦ùès'J•v÷Ž®ª5c8¼þ¶òªI¥aîÍõxfØ0$Ë›¦È}‡ÓJZ¾Æ.ÐÑÙƒ§‹ƒ]z?=móxi.-†áMÚD¬E^Cä |$]ÇÜñT¯ûÐfðຊٲ£òHãz_Ë&ªio<°üvÞ%÷N‘âAùHÜö¾R9ž†¹7kÞND¬ÕÕµu™›N””Ò£zï¹¢î Ã¿Üæ}í{os¶9­6ÌÌ)%ÆÃÖmÌ}\N·‘t<¸A®`¶ÌZA³vµžÕìÁµ·ËIGæ6Äæ¥JñØf¥waôÇšgjˆõ®5{ðEv{{;“‰ù C)=2w…ýöè½ùlsÈ'3Û5Ùì‚°ºŒ¹×åt ¸Ó±ÌzXTW§Krím&u¥¤X>¬­¯µ¾¥Ì¬¤f{½H¬9ðiîÑ€(UŠ¿.4D Œ6Íxiš{þí²ß0¬1ôÌL—ïýôìtóËØZ+vj¿Ý˜Ûœêÿ>€›ì|‹˜g7ÅW‰H`ùÌÚ_›b"Õ”`®-—}Q½µŒ!þóŽÞõxf8/éщjKª¾ÅªÍ‹û•ÿ¨[ÓLó¾Ã)ªTJ„|ñ/ȸdï"âš_ö§#ú™§ªËŽ-¥öžŽBç1w¼œž#·BçÙ²B®õ ­ l{{{ÁÝcVf8œ¬¿šKs/d2Éð°q¦ =$h­ú £¡‘æ}ú­c8}©ÇåtïÝz©[Óe¶­Øç}ëvKÏsÀͤ‰Èññq㡯·>+c½ÄÛðQ vÛ[f ‡£“6nÀ5h3[€kÖc¶ ׆X@,± €XbÀÔæãK[[[Ü€k055urrÒ1–Y%¸MÕÆÆFã¿vüTy=¸}*Ï_½á·îªï¿ý¦éȽ›<Ü¥§ßñ;wÏÉÉÉÀÀ@ÓA¶ü\·¶«‚Ä2€Xp³c™iæW¼Þ•¼yöÈJÞ4¯}{K#K{ÕF\5##¡eNOY¥ëgªœ9Ó£â¹y%íbY;éÈê§Èa]× Uû/>ûª1™ÕN­}zRËE{K#Oä´Êþ¢§K›ÿð7+PÕóâ%ÛèË”Ò#s›•³ÉÌšH›¨±fÔ¬ƒ^ïJ>¿bŸMUÌJjÖëõzgS³V·’šõNLLx½+yÓ<­uðçYÜùðY²%ÿxë¹i'|Ù6еóೇg"×Hó[mâmddéŸeoiäÉê‡'­3p§íì-,í}ØŒŒœð;;o÷a#Ôt°õÈ™Þ÷:iÓ~ëÀí‹eX̯J‰éÕBãQMs/d³ÛÛÛ™dxØ0gÔ”Ò#¹Qëx)It}Æ)Åx¬ší «Óñ¢3 ;%9ÛìExS;ÍQco'|ä9ûS_>üò¾V|oéÉû§? …ŸÖg¾ö–joûû‹!žÅý—__¿lkhG$õdQ–ö÷­‰ºvÍÊÞÒW?‡÷'ó>l,V¼”¶½{Úiß~ÓÀmŒe"®ùdxXéÑÆMf§lŽ¡³ ÿ<ﲎ†ymÒf•)–EL3ŸK‹ÈÃ呃ò‘¸²ÙlvÁ­i—¾–Ôœ5u´óèœñ£VqQ–jñf' O=‘SáZòûÍç_´fÀîíˆHðerêAC`li¶5;~øã–|þ›¦ÜÙÚ{ë‘¶í7ÜP½_'k›Œ†w§ã‘9Çz¨~Ь¤æ¦ã%¥D)1Ι•õ颔•Õì—þ‡_ÞñymXÁµÂ¢ÇZÿ[’ó$³jÅ^L%_.Œ¸”úº}…>ÛééO?ÿôÓíú½•tåëGí{ï9p›ô~A†¦Ù'×–RŒÇ’V&3+›±xQœádÌoœ+”Ýw8Å0ü±Lf{{ûò“dþ¸õÓÃÏ4§§úDQÛ5ÎËð,îï_õŽþß|þEë‘`»ÇZ{ÿã75–‰ˆ¦¹ç×gœÅb±zà°\‘!‡í|išÝ3æTJOnI5á]bËÿÞÒWÏäi¨ešho'õEÃà“Æ§5û_‚©ÄÆù°‘èº?íý/.ÙìƒÏ6eÇ¿ûòý…ÒdÿÃ7N¿ßÄÔìÁµåòx¤–Ò–zTŒ8¢Jzd\þ~û/ûiÇ|+{£‰ÐDB Ãßg­©9×ÖO†ñõËý¤§å”aü‡§?.V§Ð<‹û/—\õÁ¶;ôۜŗ;#_¹~¯ ãë—ûµýô#O~PJD¾~Yðœ–Zú¬ïÓvÍŠgñÇ_B#®9UÞƒ©ä£¥לjskï­GÚ·nMDŽmmmMMMœœ|Ú‘=õ¦ú©ò¡EYbÓ:¸+ŸýaééwõÐ588xï†zid$%_<ý1I&wÛMe‹ûû‹ü–±ìÓ:99yþê ¿$@,û”¾ÿö›êö2bÙ'ôÉ;¸6Š[@,± €X€&÷~UW;00À¯ÜLÌ–ËPÓcÓ4ó«ã])1Œá™õµ ]ã®\¹n³ef%57IK –Éloo¿}•ØjÞ4oÔ˜f~ÅëõzWnÚÀ®,–^ÇKJ–çÝš&"šf¾X°~‘üŠwbbbbb»’oNHùëÔlªbVR³^¯×;›ª˜}–Ó¬¤f½õ¼U¯˜JÍNLLX…ë“yJé‘ñjd´Z«ŽÍ»òÎxGn·8–™f>—ÃðºÚœ­¤f£ºòÇ2™˜_éÑÙTå´E¥Gr£™dxØ0J‰ÐxL¢ë3N)Æc›•Z0êY¦°:/:ñ°SÒ‘ÕBcã»Í$ÃN)Æ_4Í=ÿvÙo†á_~;ïÖ4Ó̯NÇ‹µ¾lö4GÜÊXÖ…iVöv‹ÕÄæõFqw¯¹ ÿ<ï›cÈúymÒfs ‰H±|Xk¡{+Š 9\Ž!9(76š´Y%ë4¦”™«&ßJž…KpËc™¦¹G¢”ž+´ž¼ïpž=àtÜ¿ÊQÝw8Å0ü[ˆÔìÁÙlÌoˆH:²Ê–2p»c™ˆ¸Ï F:2W߉Ÿ_YÉ›¦¦Ù=cÎjb+ät¥œcûÕ-ÖÛOnõ™áDÊg˺æ—ý†!N‡G5ÀmÐí½eš=¸öÖ±:I„| ñÇ2 š&"öà‹XÙútÃ{´_í°ªí'B ±¶ó»:g¸ÉèÌît<òÅ ÿßoÿå?Mü§ê‹ÖÄ9´k~ÍàæÓDäøø¸ñÐÖÖÖÔÔÔÉÉÉÝ»Z¾‰ nŽzèäãK7± àFh¿·lccƒ[pÚì-cÀµ©ï-»×é®{ˈe –Ë@, –€X@,ÀÆ2Ó¬¤f½^ïlªbž¬¤fgSÓì£z~ÅëõzWò w*гbkᕼyöH_u/Ìêt¢¦é}Œ¾¼WqEMÞ˜˜h¼o×?ˆeýÒ4»gÌ©Tiwï¨~ðhoWÆ}ݸp<ª{Ø0>É}çŽe"bóŒ FqwÏš3Íü브ylMó.Ö¤ËiPȯx½+ïŒwõÜж|]ys®Ëœ“5i711Ñ%‚(¥Gæ6+ífݺ Ò:>›ªT§ÐO§µ{ä:{ ¿RíÔ»’oPmN¥f›î@}ðãsɃv™lu<¢+¥”?V­]÷9ìNÏÑ ø¨±Llž1§¨RâuADD ¹´sÌc«Î„moo·Nº(¥Gr£M“dÝËïJ4ó+UŠW»9£°:/:ñ°SÒ‘ÕB»Qb1¿*%¦Ïží9Hëx)It}Æ)Åx¬šíúè´>¾œ®”sæ±u½•ÔlTWþX&ó+=:›ªôþ•XwÀšu«ÝÂjDWÊË¼ŽµVÑ4÷üÛe¿a†ùíüEº.ät¥$0êÖ´N/p- ÷:ØÚÚj:òå—_jš}2HDõt®°àvriçØú™L›cH¤ØPË0üËó®î“4MåC“6‘Q¿‘N§sùyWceÓÌçÒ"2äp9†DŠåŠéj³„êšO†B‰èÊh¦Mç9$R4üËk“6) ‰‹åC[*¥G}ºaø—ßf¬`dš•½Ý¢aF]R½¢Ý½Ê䤭믤vC"Åê8*ˆa ;î·|[ºî4l1†Ãëó®Îc>êçZZÿØ€¶¦¦¦NNNúŠeV鯭ÖtÕ“äÒαõêßËf%57/)%J‰Ñ{(ç-ß&I(%Åò¡ˆ½mÞ›Œ†w§ã‘9Çzèz:µfªîoÎ…|>,³àÖDËMÊÊyçþÅYí 9lç­ÒÜu§a×ç2M³Ó˜ûº–¦?3 ­Öƒ÷º×i q"¢iîр躞[•t ”µW§…6cñ¢8g’¡òt$Ý3“õYÞé¸ß|è¾Ã)FñL’hKÓì“kËåñH<–tÊÐèùyNEÄ6òÇ#éÈêèÛy—Üw8ÏNmµ¹¢äÂ]wªØWƒ­`@Ÿ.òÞ2×h@Dt]·´DäüÓ9]Ê”j[†M‹nµ§AõäæQÏ>4Í=¿>ã,‹äE:•£òA-²Ô+æ µ=gc»¦YÑÖºRkÓXÏ  ˆÕNçò÷ÎÚÝëÜuÿÛ2æ 6>b,רµ»¼žÊ4Í=¿PJŒ'œÒô<`ûÀÔ¹ünlÜÕ;mJ³_ÄüF)êç¹HÍ\[\lçíT)=êóùB‰¢8g¢Õ]\VE=êóEuÃ{¬®"ºÏ8¥˜ù’Ž¿Ñ{=ÕõxfØ0ô¨/7ºÜ¶¼¦Ù'£Õ6­vêºÏ‹m­xá@?49>>n=±µµÕº —×´ùøÀ@, –€X@,± €X€Nîq .éù«7ÜÐÓ÷ß~C,ûè–ž~ÇM]œœœ tQ?‹˜]?ËkÄ2€Xp«bYjÖëõΦ*fýˆYIÍΦ*¦Ù³®iæW¼^¯w%ß¡p§=+¶^É›gôUàÖÄ2ϘS©ÒîÞQýÈÑÞ®ŒyìšÖ³®¦¹²ÙlvÁÝGáKJGVÉaà.Ç2›glØ0Š»{Öô˜iæ_ÇeÌc³æ¨&j¬ÉªÓY®üŠ×»òÎxWŸôj[¾®¼9711Ñ4-Wgš•Ô¬wbb¢Ëü™Rzdn³ÒnÖ­Ë ­ã³©ŠYIÍzÏÌ 6uz® <€«ebóŒ9E•¯ ""RÈ¥c[u&l{{;“ Fãd•Rz$7Ú4IÖ½ü®D31¿R¥xµ›3 «Óñ¢3 ;%Y-´e ó«RbúìÙžƒ´Ž—¡ñ˜D×gœRŒÇªÙ®N®1–iš}2‘t®POegV0mŽ¡³U ÿ<ïêœóÚ”MÚÄ5ê7 IçZ÷™åÒ"2äp9†Dä Ü~[›k>Vz´i®Ç mŽ!ëçµI›U¦X>l×鑸®mAüªœçu²®Q¿‘N§sùyÉ¥cë¶j`ª¤æ¦ã%¥D)1z7sÞògR¤Ò£>]”²b“½mÞ›Œ†w§ã‘9ÇzèÚ:¸¤s¼ CÓÜ£QJÏ­æÒPЮ‰ˆiV6cñ¢8Ãɘßèwú-ïtÜo>tßáÃðÇ2™ííí.óUšfŸ\[H1Kœ«Ó6úíàúb™ˆ¸F"¢ëz`´¾:yX.ŠÈÃÖg]Ê”D 9])r4=ã©ivϘS)=¹yÔO‚œ_Ÿq‹Å ²c§lù7"–Y¿ Ã_Oešæž_(¥GÆ“NQJŒw{EE÷ò»±q_Tï´)Í|ó¥D¨ûØՎìÁµåÀÅyáN.L‘ãããÖ[[[SSSÝ?¨ yþê Ÿ*Ý->ûÃÒÓïêɪ5h òñ%€Xp#Üã\ÞÉÉÉóWo¸€Xö)}ÿí7l/IJO#Àå±· àFè6[¶±±Á ¸ß[600ÀÝøxšÞ[v¯ŸrøØØ[@,± €XbÀt¾·ü›fesn:QR"bÃ3ëkA»V;•_èÊ:å_~;ïÖ´úñ´êG:´Ü¾:À¯Ä9fˬL/:ÃÉÌöööÛ·Q‰­æMSDÌJjn<’vÎ$3™L&9ãLGÆçR³ß–/Wà×ËDËErØDD4Í|±`Íi^ÇKJB“vMÓ4ûd( T)þºÐg»]ª›f~ÅëõzWò¦Ùø³S³Þ‰‰‰†#µù•GþneÖëõÎZñÎ̯xgS“¨n,Ó4÷h@”Ò›¦²L3ŸK‹aøG]µC®Q¿aH:—ï#]¸zau:^t†ca§¤#«§P)=’ÝÙùÛÇcN¥JåC‘£òsÌcgaÜT÷–mmm5ùòË/Ý Ù˜x£z)òÅ?é0+̉ 9\Ž!‘âA¹bºl"bmM›w‰ˆÍ36/¦s…·û°,cm. àšMMM5}Té^÷ÒÿjÕt/d3óÖÆ=2çX_›´}ºëQJútQJŠåC‘æ‘Ø¹¶\¤‹åC»æ ˆ®ë¹Â¼Û-""…œ®”øGÝšÖsS»`õû§Å33vM…5ÍîsÆãåÃ#Ù}Q+Æç>À t®'1ó+õ]óVrr:ˆëñ̰a¤“›Ó4ÍÊf2]_IìG—êVh9(IaµúzäRJOnuiÙæsJ:÷º<4êâ— n²s¼·LÓÜóÑòÜøxÉz»Øpx}mÒÚD¯Ùƒko«ã‘/!"ÆðÌúÛÉÆýõÕÕFi÷Z²îÕ]gœéx"äÏøxºVË|+{£‰ÐD¢Ú¦«}.‹ÇÓ²<ÏïÜhšˆ·žØÚÚj݉Öú+g‡ÃÉAû5Won­’š›ŽËÙ7¿lpC´­ÁÁÁ«ÿø’¦Ùƒ/²™dXâÓxUØ%«7'¼X¼¤T€LpãÝûHíjöà‹lðSUoLxA~Éà6àSåÄ2ˈe –ÜH÷¸·×óWo¸ Ü"ßû ±ìÎú«‰7€ëôÛéÿ÷ÿù¨øÿýÿÿ¹{bÙ­÷Ûÿï¸ \wÿò¯"òþe± à|ˆe7#–ÝÓˆe7 –1[@,»­L3¿:Ñ•Ãð/¿wkÚµõØèz?{±Ã3ëkA»Ö¥dZËoç]R¨ÿÜvx… t:Þ¡ÇÊæÜt¢Ô{lÜ‚Xvï£Ä²»ü:Y³’š¤3ÉL&“IÎ8Ó‘ñ¹TÅü¨jš{!›ÝÞÞÎdb~Ã0 ,“ÙÞÞÎf>n&³.VVwoßF%¶š7Íñ‹0+›sÓñ¢3œ<36Ó̯x½^ïJ—qöSæcÜëïp‹ü¯3.ðϯ:–^ÇKJB“vMÓ4ûd( T)þºÐô÷nÓßÁ¦YIÍz'&&ŽÔ äW=ú»•Y¯×;kÅ;3¿âMUúøËÛj¶µb½ñTjvbb¢^ u$ݳBõb—«Wšf¾XpkšUk¢f%oöŒ# —7çšFØz÷­Áa¹("C›ÔÇfÍÒéJ)¥GÆOSZcïõù¿z™ž¿ «îlªR½ßïgcÅÆ›ß¶SÎIJ?øç×ËL3ŸK‹aøG]µC®Q¿aH:×ý/ÚÂêt¼è ÇÂNIGV §wJé‘ÜèÎÎß>s*U*Šˆ•œc{Ó`šf÷t®¨”¾+ÑLÌ_Ž]FÒ×Åžö[›½K†‡ #é–3ºn;Â~î›Õìh@”Òg+5Í=ÿvÙšP´–A[{/ˆ«©LÏ_U·”Ç$º>ã”b<¶iåæ.w%šI†RŒ¿.´Œÿõt‰eõ—ÿW—ˆe— s"C—cHDÊõ™0Ãð/Ï»DÄæ6Œt® "‡eóØúl¼KEÃð‡&mÁ±u$GâZÈf/¾js ]¢pëû¼o÷B6æ7”*%B¾Þ‹ƒ‡Úûds Y?¯MÚ¬vŠåÃ^C“¶j§½R;"ò¿þͬÿ³µóOŠmíüScÉžÍò$f»¬ªô¨O¥¬¿Ñm­ñÊ/”+æýòAua®ß\vΊM#±_,kVRsÓñ’R¢”WYø\£u/d3óÖÆ=2çX_›´]´÷¿ ¹úŠœ‰eg§¾þÛöÿï‰ß5•ùoÛìg†ìÌßSwõ~ÕÎrõÕªBNWJ£]g›î;œÒ}Ÿ¾µ)ÅòáÑÞîÐhÿsWýVt:î÷7’n[:fe3/Š3œŒù8ú-\áùî›u&×–ý†a¥¢ õ~ŽÛrEhËšþÙÜúŸ6·þ'{ËÎp=ž6Œtr³bš¦YÙL¦ë ‘Vޱ– «§ï³¨íÓ“›G]Z¶yÆœ’ν.µnæêªsŃòQ-89¬gšFÒ}Ëõb#§›·ò+VÉ3Ûí{éR¸y„­‰³Ó}3ÍüJýÁ«…†èYm¹cïgÊôù ꔉû®Ø40Îø·?›­ÿü×ÿþ?¬³ÿõ¿ÿ¶~Õ±L³×Þ.ŠñÏçó…â2³Þ°ƒÛõxÆ)ÅDÈ—tÌ4ÎÍØƒ/b~£”ux¨°!^¥åœ©¬[ÅÝØ¸/ª×ƒc¿#iºX)&B>ëiÄÜhuýür@)=2žGØšáš:å€gc™ÑöŸÿòãÎùq§ÓÙÞÑEDŽ[OlmmMMMœœÜÛWép8ù"h¿lk•ÔÜt¼XÎ.¸/Yñ\/emòüÕ›¿šüößÿ;þóàz¼û—ýÇíôœz|ºÿyãõ÷ß~Ó)h þZžÄÔ4{ðE6“ K|ºÏ7uKx±xI©À9çÊ.\Ü(þ³qz6ûëzS³_dƒW’ð‚WTÑzY×À¸=þÍø(û[xAÀ9cÙŸ‰e7!–ÆÇh–Xp>f¶ m½û—å&p˜-Cÿ¸æ&pͶõ‰e8£þîp(n± U,b¸q¬’éJ‰ˆaø/ði2¸˜-pÃ2Y%57I;g’™L&“œq¦#ãs© Œ@,€ëUx/)MÚ5MÓì“¡€R¥øë‚ˆ˜f~ÅëõzWò¦Ùø³ˆ˜f%5똘h8R+_yôèïVf½^ï¬ïÌüŠw6uh¼klˆepÊ4ó¹´†ÔU;äõ†¤sÝÃSau:ˆx TIDAT^t†ca§¤#«…ÓÿSz$7º³ó·ÇœJ•ʇ""Gåç˜ÇÎÂ(b|Œ0'2äp9†Dä \©e8Ãð/Ï»DÄæ6Œt® "‡eóØ4ͽÍf³ l\@,€+ýŸ3¥G}Q]))Z“bgÙl¾ˆùR"Ôø0fû\––Óç àFý ˆ·žØÚÚššš:99áøTL³²97(©ápòEÐ~ÙÖ*©¹éx1°œ]pso|Z­AkppÙ27øÿ8jöà‹l&–ø´w6U¹Äj£iV6cñ’RæÊÜT|| Àgöà‹lðJ^» àIJç¯Þp³.ìûo¿¹šX&"KO¿ã†\Àâ³? tßµÏÞ2€®çT± à:ô³ì\±loidÄU32ÚøÐ³üÒÞÅǦ» ]¨‹½¥†«8Oõ†Šgªí-6ÕøsË…ôqÓÀ¯ÔyŸÄ ®=õ°ñUH~LN=¸pêÚy´_k­{w6B_-íµ)ìYÜ÷œ»Û'òr¿à9ï?l„žÈZµâÞÒHh£zí{KÇOnäþb½‘Åß]øž€»ë‹˜žÅý—Ÿ%ë³B6B#矚Îî-<ùAýðä´p×ê>{x•–ö>l„FFFF–þùÌlYk mÚÜÛI_¶Æ»Ævö–ª-Ÿá^òÙÃÓŠžÅ굟ûç6ÕîB~úùOü¹WËDÄó(˜ÚÙ«& ÅŸÃû…Baÿ¥üò>ø¨‰ROeiñ/Ϋ¯ª-tkso'uÚPZó[*V¯ý´Ø_´\T»lšøüÇEîÀDz†ÀñÇ-ùü7ÍY­¿³] ¤æ¬-Y‹²tf‚/Û,¶æ­ž^³¡EYbý´w¹·üøåýŸ‡DDþôóO?ýð׮ߋˆˆ!_?:S®ûÙ.¶²[ÏN¯ÕÞ™ |´Xöá[?= ?ùÍç_×’"T÷³ýèé7ŸÑO›žGÁ';{‹žs÷ÔRqo'|´Øw*ÛI=ì¿4øºÄ"æÞÒWÏäiÈÊ)~÷åûÎ˄ξÿåƒôQ½>{Ø´NÙ¾MÏ£`êIÛ·TXƒù°z’j3Bñ„ž¾ÒðXÀ“÷µkï+Õ-î³¥ \e,«nör¹\#OäåþéªÜƒ©ä£‘N/kwÖ³øòᳯª%»Wï/øüøyâÌs—íÛô,î¿|øû¿v5f?üóW###‹²ô2Xo²a„ò`*ùRj—?'/ϵ"yÉW¸€»O‘ãããÖ[[[SSSõ/7=õ†ob\Ìâ³?,=ý®ž¬š‚–ˆ òñ%€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €XbˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2\Ú½þ‹žœœ<õ†[ð)cÙ÷ß~300°ôô;nÀ§Œe"rrrÂýºQ˜¼àùþÛo®,–ábþ€[áääd`` û$[þ>º~Ö¸ˆe7±ìÎØ[YÚã6@,ë“iæW¼Þ‰+yóß_ëz½Þ•¼ù1/soÉåšûAý0çr5F³¡‘jVÛ[qÕœ‰o{Kõã#Á®áø™£##¡ü—À­eÃðÇ2™L2|–dZ€;˪lŽ¡†Ô4všœò+^ïÊ;ã]÷2ÖñÙTŬ¤f½^¯w6U1k!¬’šõNLLX9Ì4ó«ã])¥ôÈx56•i@=À™Õªí›•Ôìlªbšm¯¢SlÊ…­½W[®5X¿¢äÃÏH-7ÕsX>{Xt;©àË6å÷’Ïž÷,’ĸ㱬ӕ’ÀèoÕo²ÙíííÖù3¥ôHn4›]èYÆ:^J„Æc]ŸqJ1Û¬˜¦ˆV§ãEg8vJ:²ZÐ4÷üÛe¿a†ùí¼[ÓZ˜ޠڬb"¢ivϘS©ÒîÞ‘ˆííʘǮišæî4ÂÞw¢¥wÓ̯NÇ‹ˆe2ÛÛÛháyL%6~é÷¶øå}𑧖ʵ q-Ç=‚©rw0–)¥G}>_T7†Ãëó®Óµù³:Ãð/7èRÆæ²~^›´YeŠåCÓÌçÒ"2äp9†Dä \1ÛÌcu*Ófµ!ˇ¦YÙÛ-9lÝGØ]—Þ•Ò#sÕpiž¶ù̳¸¿$[?¨ž4múÿâóßœþKjÎÚ@¶(K½&ÔºúÍç_ðWïÓ¼N¶qšªM*©¹éxI)QJŒñ¥2]ƒ .JYYÍvÑ2U®Q¿‘N§s…ùÑr10êºúÚ5÷üúÌÁt¼TJ„| ,³àÖºT0þúÙΣG;#¡_~LN=½¥‘Äç?&œ ®.ÇN»Zú<4²$ûWÒ¨…›0Ó¬lÆâEq†“1¿a\¸L÷ÎêCWû)sJÓÜ£QJÏ­æÒQ«ð•P³_d³1¿!"ý.‰zúùO""žÅýðϋݟ™ì´6Ùrü̪æ‡ÅŸÃd2îd,9,E¤y1ðüeÚF(k+˜žÜëHk™îmÚ_4-Ι褽ó–ÿÅG;Ö{Ëž<‘—É©ýßzÏâþˇ¿ÿë–÷–=˜J¾”¹êá¹s6 .”ˆDäøø¸õÄÖÖÖÔÔT÷jâÓzþêMçÊ÷–FvY[l=r%>R³Üe‹Ïþ°ôô»z²j Zƒƒƒ||éÎð,6G%ÏâKyrÅ_dÚ[y"/Éd\½{Ü‚;Õöoz‹€Xvœœœ<õ†û± ŸÒ÷ß~300а½ Ëð)0OÀ-òý·ßËî2¦Ê¸NNNº¿ã‚'1>º~Ö¸ˆe7± àFøô{ËL3¿:~úHñÇ2 nßMßê¯Ý·ÞõÚøVÙ½¥‘±ýG»#O~Pg"¸a|ý²V¥ñTí¸U÷ôT—ò/ζoÿáé|¬ €[Ëj—û—ßλŽ6ç¦ãéÈêèÛy·v­ÉÌJ‡i ,_¨ëKV¿:_¼O,íyμ…_Ïâþþâ™×(¸Vhykÿ‡ÐWϾÜ/´ykù½Ýƃ{K#‹¿#˜pN7lÓæª¥ëCÝ–•¼Y?èõ®äó+^ïÊ;ã]÷2ÖñÙTŬ¤f½^¯w6U1k)ª’šõ6~Üš±kü¾xS™ÖÔ?CÞTýq˜š=íÎ̯xgS•Ú×ǽޕTjvbb¢Ëxª+©ÙÚÖ¯·×gÔ†—>O\ú{K{ÉgòôÇ ~bÉó(øÓÏâ¿-nw,+ät¥$0ú[õÛ…lv{{;“ F:²ZÏ"Jé‘Üh6»Ð³Œu¼”Ç$º>ã”b<¶Y1M)¬NÇ‹Îp,ì”tdµ iîù·Ë~ð&í¬é®¦2§·¬6€ú¬XSõߪûž1§R¥ò¡ˆÈQùÀ9æ±× +¥ïJ4ó+UŠ¿®6ÛÚ—iæW§ãE Ä2™íííÆîzx0ué`¶·“úâËß]p¶ëÃFâýÓÍà¶Æ2¥ô¨Ïç‹êÆpx}Þuz¢6VgþåÆ]ÊØCÖÏk“6«L±|(bšù\ZD†.Lj”+-óO]Ê´@ ›glØ0Ò¹‚ˆ–eÌck[hÒ&®Q¿aH:gÍÕuêK)=2W’šæ^ÈfûÉg¦Â’ØøÐï½O͹ªFN¿kþð³ç*zpQ–XÀànÖÞ²ÆÀaVRsÓñ’R¢”íkõS¦kÔE)+«Ù.Z¦c.sÆ‹åŠy¿|0ä°{s0/•!_âœAxÃ;¡É©~ ·Û[Ö¬qSZÛòÕƒ6BÉÏÈd\Ä }A†iV6cñ¢8Ãɘß0.\¦ƒû§†¿ëú`?e:Ò4»gÌ)ÅòáÑÞîÐhǺNÇýÎ}iöà‹l6æ7D¤q‰¶ß`öóbÿ3fM•ßÿr¡ºW°‚ ±ì†9,E¤ûO„. –Ý4šæž_(¥GÆ“Ni|@ò\e:±_ÄüF)ª?ü¨iöÉèŒSЉÏ:ÒZ¦{Ôkª^ÍeimÙ‡¶÷EõÆ=j­}ÕŸEõù¢iqÎD'íç}ïÆƒ©¥/å§ÞåN·…n{0•Ü´32R;<—ê\þŸ[úM†þŠdÀyóˆ·žØÚÚšššêþAMtaí{+–³ îê‘«~·ÙóWoøT9·Ââ³?,=ý®ž¬ZƒÖàà _ú8™Ì¬lÆâ%¥£.îèÇ=nÁÇ iöà‹l°ù {!›]àîbÙÝsrròüÕîÄ2|JßûÍÀÀÛË –ácž €[äûo¿!–ÝeL•p+œœœ tÇOb|tý¬qËnb±¬Ô¬×ëMUN¿tdVR³³©J_U2{}5²S󜟛¸û±Ì3æTª´»wúÑ]óôóEHë}­Ùì•|ÚàWËlž±aÃ(îîYÓc¦™—1­þénËJ¾z¶:Ë•_ñzWÞïê“^mËו7ç&&&š¦åêL³’šõvúBy½ÓTj¶±‘ž#´ŽÏ¦*f%5ë=3)ضG«˜U«éêøƒ ±ìZr™ST)ñº ""…\Ú9æ±Ug¶··3Éð°a¤#«õt¢”É6M’u/¿+ÑL̯T)^íæŒÂêt¼è ÇÂNIGV íoœÕH2씢ÕHÏZÇK‰ÐxL¢ë3N)Æc›VúlíÑ4ó«Óñ¢b™Ìöö6S€Ë®›¦Ù'CIç õTvfÓæ:[Å0üËó¿Þ®|hÒ&®Q¿aH:׺Ï,—‘!‡Ë1$"å¶ÛÚªX75Òi„6ÇõóÚ¤Í*S,víQ)=2Wn,Ñp·ÝÈ×ɺFýF:Îåç%—vŽ­Ûª©’š›Ž—”¥ÄèÝÌyËŸ‰«JútQÊJNöþj]eš{~}æ`:^*%B¾„?–Yp“ƸËnâ 24Í=¥ôÜj.횈˜fe3/Š3œŒùÞ‘§ßòNÇýæC÷N1 ÿyWÏ;ž=jöà‹l6æ7D¤qIË®k4 "º®Fë«“‡å¢ˆ 9l}¶Ñ¥üAùH¤Ó•’!GÓ3žšf÷Œ9•Ò“›GçõyGØW®ùe¿aˆÓaç-Ë>I.ó†aøë©LÓÜóË¥ôÈxòÀ)Jé‘ñnHÝËïÆÆ}Q½Ó¦4{ðEÌo”¡Nc^ ÇîZ{¬?×éóEÓ✉NÚÙRÀ¦‰Èññq뉭­­©©©îÔħõüÕ>UÀ­°øìKO¿«'«Ö 588ÈÇ—nbÀp[p«œœ<õ†û± ŸÒ÷ß~300Àö2ˆeøÄ˜'àùþÛoˆewSeÜ '''ÝßqÁ–€®Ÿ5.bÀ@,¸U±¬þ- º•üÕ|™ÑüÈŸzìÙ~§&ß 70–Y ÃËd2™˜ß0Ò‘Õ+Ï+# iš{!›ÍfÜ|SÜ™XÖ!KUR³Þ¦¯z›•Ôlmv­ñÛÛ­?7f²Õñˆ®TëG¾­.¼ÞÙTŬ6>›ª4|Ï»qï´ñüŠ×»òÎx×Ôo§ ¿òæÜÄÄD½—~.³5P¦R³ô¡u|6U©^bCïM=2{±¬ÅQù@D£ÖüSau:^t†ca§¤#«…jÀšŽ%Ëd¶··ûœ©Ò4÷üÛe¿a†ùí|cM³{ÆœJ•v÷ŽDähoWÆ3lª”ù|Wóp@-0ä°\ ŒÖ—µöç³zïÃyË·¤ÒÓËìÓõ÷î~,³òÑã§RzróHDDî;œÕG×+5{ðE6ó"r%hš{4 Jé¹Õ\º¶~jš•ÍX¼(Îp2æ7ŒÞ ©ÏòNÇýæCí/óÊzlã‚=€_O,Ûd4—¥iîùå€Rzd£Î|œÍ.0þgêï ;ºÕ_ùqñ$õ­áV̌٠Úk´L:¤j™ÔÂÑ;6 šÔWÃ1c´4[˜…çÒ¶bfÌÆëî†ö°ËQgùm<;z¾fË¿Úk˜Ö|.å+FO¤¤ ú$ÚävM=\ß…ñûÑ÷šÏEÁÎj´!Æ¡ÖwÄ÷XÍçÒñ"fB›ÿt¼ß–¿·MüW—DFæ—6šÏ%³bù‰Œ—T÷ÁŠ5ÚäÆ ¢¹â+üê}ê—•ž³'ž²z Ö­ÑN±_ÑJU@UEMx÷vð_[d•ŸËìŠù3­] ½¸g€g¯Ñ$€Dh€Dh @¢üeæSPŸŸŸ®°ooo___í‰vÛ„ë<ÜûûûÒí&Š«º^¯þ#ËåÒaÔ¹þ;á™ýUçó¹ä!˜w€­+«I4à8$ ÑvšhagßûO~ÿX¾Á.GÕ¶Ùübѯv9`8¶Š÷:Þ ÷ûû{r‡O^Ù‘ý9$ÑR17ü}Ò`iÜ‚ lžZka­4$Å-ïn¯ã#|¥põ芷e&kÍn3\+Ù©ìK­­.¿&ÍŸÆ!5ùçÐè÷”nú;Y«9ÎR™2„Qø—ªÕǹV"³Ûl8øÙU€ŠDÂ(Z^… GÿžÙxy!6)OR·tæVê¯Âamj”RÃÁÝF“üšŒ1›·SѲåQW0:¬:¤†ƒ÷.tH´Ir-yøµd¤Yòôê±Ê©íàUpõàßG´uùUË¢ò„írH]~ ÔheÚøÙíÆY"ã7%ówxtÉÉß;f\ó!M^O­¢XƒéÏø| |~~ÎN±¶ªëõjî xrþüùÉ÷÷÷Ù8ò)(à8$p;˜ññ§È4“-p„D»\.çóÙ£4à85šÿ' „çh€Dh `Þ드çù|öŸ »¦_'`Ô Ñv“h¿F¶så³°?^a?º•&,«Úlx0ëM£¶dw8¼­1ŸÝÚ^«‚£c»“;ÇÙÍ“Ì&¶—Ó4¹©Ñ&³oÿó¯Tá–¶jÂÍŽ¿4»Vaù¾]2úƒwÒ_jòÏII’Ú]É1„ûÊII±yɱ•œxfÝÉêù‹“ÚZÉu˜ÝÚìHm'³dæh3gZþßÇÒ-#Z¸eºÛÍ.©ÇkeZ‚VU‘… ñNéŽs©¾½^¼Û·xù±žxI#¾ñFÚ:–œQfkµ­ó‡šY äLµ+¼ßs´ªAßlw»Úöw…K¹v[r\N†ÒJÆ> =îR÷móø+31÷¸Srß›¡aS}oÅ’­Í^‡Ât<µª]‰o±FÛÈ3²¡dËt¨J}»Ü¹ÎŸH>ðÁV4è—[Õº[h¡Ð±ÿŽñ£D«(Ç2ãßSÐþ½|¨uŸàxø1Ì[m¥Ó«èxøø«¡ÛÈ÷¥£ÎIïô{þGù¾ÆäVHé”zÖ^òbØ «íþO=\ï^tÔ¾_QUÖ-¹™÷ ºœš8ÛbmI×¥O]á¾òKÞž—Í®5ùÞÊ4ÇË4—+ù™\;°š=†îwEy£¿Ù‘`æÄËG‘ãgç©åûŽI¶:œ]2õßWr¦´ÿàÜxw»^|Rå?x¬’îv¯.O›b“j'uÂÁH±'M´ŸJïçY2³pðDûµºFÀAMg9`GÌH4‰ Ñ$ Ñ$€Dh=­ª‰gÛ<‘½f—Ìdô«[kN ¬˜h“6%ù›ÿ±qv º¨ÇÓ>›PØÄ3Ótn¼ÖxL{ºp­è~'›f²‘ÌQMb.Õx%³ °§D §âùýûwm}möñœ]+¯“¦Èã¨-_8uH©f &)‚û(œLûµ|sãv™“£­ÒIƒåCÔ̹ö̶wP>KcŨsã3 E‡Ÿ]ŽŸ~«ß¨8ÎH¢Ç!щ°=-ï „mÊçÒÈ/™™d­¤ÕÀ)ÖQåñååeüÏïïïèë×Ê_¿}éçõa›Ã–ó›Êi¼…ü)Àñí”mΔ·vĤš°¬-©hˆ&Ô8ŒÊ3%v™½ß–™ì%“wpðDËJãðÚB‹¹ÔQeÚëå×:ü·E´0„íëùíVE‡Ý3 uVصóTÐð8ÚësvG“V5Wv\£¥úËUÝü[Ì…ÇÖ°£’f–?‡*y>UûÜ*úˆmvSÑ/ Å—B ‰V4¾»s‹¹’2­aGU¥Yáó²h´•dJø°¬dS™çh¾õ‘h¥ Õ}᪠n’\K~Ýá‘YÇB©|S™÷Caן£­ú¤|k-æ†} ¯]øþf4ÔŒFQ£ýÿùÚÂ…3-æÆ«d’t\¦UUþfdv¸^™Võ´.õ(öô3û!ÝíŽáz½š{ÖðçÏŸŸ›kÈÝí€g$Ñ€ã0ãã"?e°™lA¢Áår9ŸÏ¥D;Õ¬Z1H´{S Áô €$p  hÛ³ôªIeÛ¦ÌNµ5(ßïòsÌï"Óà”žùg²‘Ù¾™½‡K–¿í¯d §Í¾¶Äœ¸ÏìØ 'Û”´µ (Ùþ¸Já‹ Ñ"qvJOl#{všÿèZµÕbªÅAyoáŸáyt§çhãà s*UE×Êïe¶ÅA¾·À¤#AíÌRÁvG½bnáx°jºíLoÙ> <™RqÀ&í±˜Jwœ«¶ù9š§]°ÑQç.¬ñ˜lÉDþ©)³þ‰6£Eã _é6ÜÜTäEm=j+Øå¨35ø¾çäÅñ+§Q»Ï’µªŽdÉéTÀ8Ô2­IJž£…›Íäct¿å/ÂÁ<¦ÏÀ1~ BŸXIsŸ³ íä'OìšR 6‘h~Iµ–ð‚í&Úaè3í ô‰v´ÍE€íð¶ÀóÕhïïï.p„D{{{s¥€ƒ$š§EÀ.xŽH4‰ Ñ$ Ñö讈ó«ŸVž“cÒù©j_áÔµKõÓõ5“†M'ZUâÇÞØ]fú·õ|æ[z³Ó¦CÏÄ™Â-ìþ›iî›Z8úÕp/™ã™ÄP¾ýps•=ìSA+†Ìê©ôÏ,\~Hùk˜ïÊ\¸ØP¢}~~N^ùýûwI93©e†ðÊ´(¯í/Í‹|CƒÙƒ)/Á&gWr²©lfõS¢ÝAt›™)?åÉ*“ /f~#Ño!¨ÒyVîÉG;3›îÕÁ·oÓÌ…“ªh2M‹SÛŸ”9%‡7{¨…תá”g»2þùh0K”Ï”Q1êÜŧ;†`~õèí½FÓâ{^‡Ù%»œ ³õçhÛ´ð©MÉê³ç}]‡ü’ÇèÚÅóèÙ¸o‘ÝZá.L÷séXEVm³üDV=eØA¢þ~| -µýxV>xÎl-¿ßÙçAU‡=9ž’8ÈŸ××jv›%KFO0|ûµù ¯Çt Î ù_wÀµâÙì¸qôÍp­ Äë6oTÿ1®4ðIu@¢H4‰ Ñ€gòê<­ëõê"°Y—ËE¢QçããÃE`ƒ¾¾¾ÎçsÃoõuÇ@H4à8$ ѶçYÞ>Ñ6 ™¸ñ>ÓZä».Üá¨^^^¾¿¿Ý¨Ñv}µã1œþžÁížýÄ™oÔh»,ÖÂ)ó«úéeúε­UUcæë¸ÂwÑêL¨¡F;rêÒ3ƒ‡ÍÜJú4¬5^w(KÖ«dƒM$Ú^G—©J'µXóFÖ§Of¢ó•× Ñ¸_Ùxª¦¦ Ïæ?µ»›¼ù-j4šmïäw:TjJ6$ÚÑŒŸL­´ñ|¾%›æÑ}ó`§6×ÝŽ»¹^¯æÞ`›þüùóóÍ9dNyuFÛcÆÇ§öSƛɉÆ\.—óùìQ#P±ñŸ¸: 4¶IŸÀB¢"щ°=G~g ß[ v;OØg`˜ÕvüzôEh»qŸyߦíàü±}Æ7ü=ú"H´{kaoÓÜLü™Fú À6=ïs´†ÉûÇ+žô‰öØ1cf±è‹ÑJŸh-ÓÂ|þ¹©›_Ÿ(ñt=Õg3bX²ûT´w޳“©kQ£=¹ªÇOUZ•Aú €D›‰‰èè²ïM~¤>·w?o†·¢/Âvè3ð¼ô`³ôhÀøÔSÓg‰ÆAè3€Dã8Tglü'®D£ŽmÒg0€hÀH4@¢lOã;“.ùcf~ýSSC€UláåZ¾µÉl‘f×€¥‰6¹—&³ã÷ºÿ›7¸Þm'eô¬ÑRuPô–˼X2=Yj¾üª;3é~Йš1¿z¸îätÊ„;ÝTÃáÁÁ´?G '·‰N.–13NœÌ½uËã,5Oÿ$7ó–_=Á%9’:’p² Ô\á³gj´xQ6®Žó7[íJæ®ÎLù?9ÇÙútaí“Y=¿åÂÃS¡FËÝ~©ÁftbÂ{Ξ­Ý ¸@VTV”¼ïyÿ(7ôg FË sJÚS–Tj›}¾³öUm¿W…«Ï-WšM¦±ÎmŸq¶nZ2_þd/%÷óJsöç·_~♢¸ËáÁÞé3ð¼ô`³ôhÀ˜ññ©é3€Dã ô@¢q´ÍEàH]ï S †kKªÂmf^ ÷;{$…»˜¼2鵜ÙWCZÍvq^rÁamÑ»£û7jÏçhÃ}•ºÛkËœè¢{úxN^ ¯cI–ÚEáÙ¥vÑ¥æÊ_ÉÌAÂBmÕ8;mó†3œôUérÉ&éÐ+î"ŽjÝï‚×…·hxX÷© ½D+²…åñÚ-ûòÀ62ü\ã‡z‡wV­! ÷Þý…CÚ…gwÏŠLõLJŸ›u¦€ÙKí‘Ìvm8»É*¯Oæ±bgÓ3ÑîÓ$8º—ès´áÅñ‘„ÿõ?©­e^|x•=;}šyZ«t Þ¸»ýo¹ÛÜ)f‚è¡ñcÆðÊ"8ΨS¨‰3h @¢G¥sÊV|}}éqí.—Ëù|Öà$Úqj4ò x¾íýýÝÅŽhooo®pDóˆØÏщ Ñ$€D$€Dh @¢ @¢ÜÇä™lc=DIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ifcontroller.png0000644000175000017500000001600512032647206023561 0ustar ebourgebourg‰PNG  IHDRñƒ͵TsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ#£ñMÍ…IDATxÚí_h"ÙžÇuè… »/ý;#Cd™1Üu:FiŠ0ÌD†&Á—Ù‹$fI¸Óàê¾-ºBfP6‘»ó"a‘f0= R„ü}÷ £äeXÄ@šÁI›·î—»p÷îlÕ>TY–eUY“N§¿BÓ)O?¿sÎ÷üί*îõë×àNÀ`€¦€¦€¦€¦444À5hº$Õ2~¿ßŸ©I’îb ºtÔ2J2%q´Ô6O|“èÚeØL¸û~º$µw×bRªe@\èIÆšùåùìuú 6¹g#Í«VƒDâÓ‡ë³g,»íÒZ¬LŒ‰3‘­EG'™TËÌÇ`d¸~º$Õ²ó11Æ„x0hæ,ן皌‰|êèYÈ¡Ñ}nvãèhC^ Ì8Z7\j—¢jšh©-I†è¿ET±&2\™º¥gjfÕóû37€wRÓmI¡Ôn“(ά<ñXÈåÚ|7€Ã˜›_+µ{·ž †óM5M3¿œ­[ÝÚ]ÓÞb«‹.纥 qUÖ Ë€wOÓ9nvý0Í‹¢(ò©ý}ÕéîåU«ADSÎ Ó|TGþààààà Å‹Œ5sÏ»’͘ âL¤°¿pp°Ÿâ‰ˆÊ•:yÌ*À˜Ï7µ×–b|ïL¤ -]uóueaÜnѯUÊ=޼çÉÊŒ(jE“ˆzB7/Šsg";(¿ÍR,kȇ'4¥Ÿ·.Ë€ÛɽqdòÀé"jœ·.iÖa‘LãÈO8§ˆZuùôºg¨RE‘OkžÇÚ)eÀúÆ„xPP!±›•IYpç4ãÎ)bÍf.µëµ>è_¶Î¯«E£—"Š3+;[!×ëÂcÞÆ{‘£ýo£KíRÔŸ©“Ç·@Úж¼¦ß0¡ŒžHˆÑÒ2;r)ý÷À{ê§çm¥[Á¸Ð¾_âÑ/çšB< |ȬߓéåÓE¬Ù̇ƒ9‘OšÆh®RJß½$Z–wÖO'"nvc¿™{£Ê_*qŽÐÖaZ}ì)Š|úPå0w¢‹ñ•L¯TJï½ð.ÂáŒi€ŸšššÐtÐtÐtÐtôß °··£À»ÂÒÒÒ›7oL5]N3Àí§X,ðÓe´ªÿVøê›oÑ[`Á—_|ÞñÞ­­nòéïÐg`æyß¿¿ÿ:ž‘À»‡Y0šwh:ÜuM—¤ZÆïÏÔ¤Þ+™ÚMŸÎYMº“ÕÎ=[ýµ7•§ƒq‚k©’¦np;°zFZŽe}‡ëÃzJºJ[§u¯¡Æ®Ò¶áGv5úxî4áÅXÜU?]ùŒ ±µÝv¯o.»ð²//_ôû3µZF¾-µ¥v)ê÷ûýÑR[êÜÛ.Eý@ÀïÏÔ$©{—¥û/Q5é^}Á^¬ùÅÕãRhÛP‘«I·»×s¯&ÝÉêE1ìv{<žpñ‚ô9w¸»WÜ6Üÿ‹bØ´,7ÜyÀ-Ðô…TŠgÍür¶®½Êq³GGû…ÈŒ(–cYU‘bŸ|½™ϧ(¾³â¢F.¥, õìr®áФ".*Çz³µ€#oâtû3ñ³moºz\ Í+úêÙÓïëõú÷OÏV»¢ZZMPòô´þÝïi³P5ÈYIpzšðšfү艗‘Óz½~ºMýeb¸ ~:yÖ ‘&ĵõ.Î©Þ ¢È§×=òuQäÓ[‹ršFë‘$Õ*e"šrzœSDtÞº$ÏÆÑÑÑÑÆ5„wªÇ¥Pdi’ˆ&—"¡ÒqGhCÛùê‡ÓÆ7vXe¢—ôöèáDDä3( nŠs4±œ,çbkÎp7Ò.­-皌c$¹†0!ˆ1YèwÁ†¿¼üé§Ÿz¾–6úlà p;5ã‹[éÖ|,—*¸hÊG$IíÝT®A®•B¸µ+QÖ§‹ÄŸçsWï\hõ¸šð¾ÍèÆ? m`¼}¿ŸÎq³ë;+®F£¡\xÕjÑ”sb¸’8Îá}äbL(ì^*þ¾½g¤E½´.^\Î/ˆè¢˜7 ¹«œý|aš·L&?~|vŒÇ €wBÓ‰ˆs„¶Ò ]‰O/0&Äæ ç.bLˆÍgmв#ô,Å‹Í|X}õežzât{úëOõï§{ÛÓ›Ÿx<žO6§·­|h9¡ñP›™L.æŽÝ7õ‚<˜Ëõëׯµ¿ïííé¾÷­ðÕ7ßâ;¼ÀŒÄæ’OW,uŠï€»4î·÷ûÓß¼yƒ“1à.hú—_|~ÿþ}„Ôàîøéè ÄÓššš`0÷ÞŸ¦Þ¿ý €Ÿšàf±Š½HR-;#"QœYÙÙ 98˜ Þ=?]j—ÖæceZHíïÆ)•Ϸ㎱|;Ü}M¯?Ï5[H+gqœ#ô¬{ph-ã@ÀŸ©éåµ–‘?Š–ÚR»õûýþh©-ÙLCD’Ô.EýÚïXWo,•¢@@N¬n#´ßá.ç¦ÔÍŸùQü¢xß5]>ZyŸÇàÓv)ŸÚßOñLˆGKínvLˆU|û…ÈŒ(6óáùÅwV\ÔÈ¥vÛU˜¦ž]Î5\‘TÄEåX¶®Íü„âû…ˆ‹¹çuŽ›]?Ló¢(ŠÊyx’TË.ç½Åõœ^ ï ŸnîhWOŠÜ{|¼(6Nªª^‹"Ÿ^÷ЄsJþÿÖâÄ„sŠH>QÚNy9!šrzœSDtÞÒf^œo¤rÅÌõfLˆ­)ËÇÍnAÜÐt3äóH5hôzlÕbB<*sùèÔQdÍ|8ÌÔo@Ó‰8nÖ·@Œ •zÿ‡œ®Þ .çƒqVéÓE¢È?á¡gGG)^$¢r,‹0:šNDäy²2#ŠåØšúè²–ÉÔ$‰ãÞG.Eîë1×#¯c|‘ 5ÿÂî¥Í€è¼Õ›Ö³žæE‘\N^Œ¼Oܳpx·ÙùX>ÌŸÚßà8"r„ž¥Zþx<(‰|êYÈ1Þ:)ùçÃ<ÉÏ?=æ Àb|åd9—s"ÿ¯ÿŸR^¨'×J|ÑÁÕÑÇ€÷îõë×Úß÷ööt§Pßð}/€;F±XÔ)6¾îÐt¸;Ü3tæaxÑÇÓt€w m<ýžÅgÞ-Oh:h:h:€Á܃ Àùê›oaÞ_~ñ94Œ™äÓßÁܾîæ.šwh:/Õ¤;Y…`gp«4]’j¿?¿?ª‹12’æl Éüœ iÜGXHR-£ÉÍNþR-ÓiøpÕ°_yémŸÔ1Tt6´Ögí{±æñhõæ¢vk¨šôt0»ÞsµG¼Ô_«I·NÕªIwòTMºÝž^Üš[ÂÅ‹«PߢÞú[im'¾f×»MÖØÁÒΤ‹bX—MÿÐoU·Æ\êíªÅúêp-K”uþ#—®ŒkmÂ-Öt©]Z›•iA>=îð0N©q§=÷Y'.ã=Zªe‚ÁøùÊû¹IR-+Ë'ç]¥Òí>_ÉŽÕ&ÔÉódå<>ø|×jrõì÷ßm}&~¶U¯Ï«3§ZØœÞ>MxÕùµJ[u…SõúE1ܽ¾E«v´÷£³¼~~räMœžÊ™È5Ñ”âMœnOoªWUw‚‡ú/ç~W¯×ëß=Ì›ÉF5©´q«·f×G±óßÑäÇiï‡ ÖçÏž†½=kRþ{‘ï1q¨Û)ÛÓ› ù3Åb„÷ûNkzýy®ÉØBz]žðç=ëNþZ¦ã¿gjºÉ_*Eu~½êïϯÎûÄâGñÇì|L`Œ1!6Ÿ5tá‡*Î@ùԳðD$IíRÔ¯ºä’TSëåªû•@ ‹ÚÀ=‡6¹]Õ_[„\+µ]R»–Ú²t•Qt7UF¦ë4ÄïÏÔj™ž_5MÐÚSׄW‹[)^´q¾ëô‡“Êÿ¼‰„×PŽK¡mƒª…Íéîuo–öNG’ó×âu]Ãfùz§§…¥ûÚuö4¹4ID4¹”|zvlx÷?’³ÿù죇 ¾ÞùtñáÊ¿¶ìÜ+ê?ìÑã'µ­ûaozËbýðÎ…~zùË€:Œ—¾ü/ŠáÎÖ¡gyïlhz7\Ű[·í«&ݽۦënÂmÕtIªUÊ$мÏ輸v)ŸÚßOñLˆGKínFL8¡ø~!â¢Fî¹rb\=ãSû‡ñG†ÞâúašEù€º~ŸqØâzV¦lL`lÁ籨F=»œk¸"©ˆ‹Ê±l][ÙOÿ-ûíÆÑÑÁÁÁ~!2#Š6­Ø®~—Y[D&¼\Œ5Oª—DtY=¡G^Çõ§TÖ¡å\£³©R]ïv)+»"…ž‹Œ ±ŠÏÐ=Wì™âkæž×û›àñ-0&IJgzçB¥|ñgkó¸šóÚ¸î •Ž«õäÒØUý¢v»”4^“ÌÛÕÕYšüpÚ¸ò“?>;.ß¼Œ–&_ï4òŸ—&•íÙY+êý’^-lNÏyÍMÜï×sú:Œ]þÕd‚’ò~ë»ßSwí)­Ï)›‰$%º±¨O^FNµÛ¾‹b8ÿð{9åÜñjé&šp»ãé&e»zÒPäÞããE±qRmw4NùðâM8§ˆ¨\©I’$µ[ç$Š3Τ\.|1\qº{[çÊÊdV yõ"šrzœSDtÞj[èõðõMò­W²¦œÖ•aLˆ­í¶» ÚÕ“‘þ>QäÓ&g»*öôøxQì·'‘ÒÖVò&N“´÷‚½XÕ©ìG×èM.E(o?FÞñˆÍƒÝ Jžž®eÞW“Ÿ¼œ¦Í—‘Ó„·7>n|}t;wE½OÒ»Ší ?=ëš®´Ö‰§'(©i¿¥ÅŒÂñúÇ$>5i¢ZƒÉ§5¢î^nòãÇÊn¨ßQèi´7±zŸb/CýÍÑ«V£÷B£õŠhb@z½²\[qf÷ZUƒ1!ˆ1³Ì¥vim9×dŒ#ñZúÀ Ëår¥¾îk5Ô=SJŽ›]ßY9_Î5›ùp0ϧö7f9Ó‹Fë‘ÃRa?Û<ž›;v‡þ¾°4)‡™¿/\§gäMDŽÃŋ’½% ù0ìNÒ©Î ¯&Ý«¥Ðöi=qmõ¼(æi»øàa8Q¼ð.©lv}ÀJfmçÉS⇋¥Ø›ŽhÍ_-lNGN';¹L» Õ¥„Wާ'¼DÅpáÃIÓÇ£#~j±N¬¾P΋ÿlÎ Á//¢ïýååOÓswÛ·ï§sܬo*›ìNWï—óÁ5Öí*ÅõÝk’F³h:7•k+RHñâµ(ºaÝ^ÈVÊ >¹bf•á¡gGG)^$¢NtÈNóͱ°³Í.èd½‰ÓÈË„ê ší÷û®›iÌT]SÆaMÈî°îœÎ›¼yb§Ág?«÷]ü|fPù_^þ¤häã½D±úó™­1»~;w<õê{ÓÚš\ó%öBõÈ=k/X)_üÅ*šef±kõÓ/ŠáUÚVžuk¼l‘»;;‰÷XÓ‰ÈódeF˱5õÙc-“©IÇ9¼\ŠÜ×+c®G^‡y°X»<Èmsñ=o]öß>\qº{SJÑfÕPó/ì^ò÷{||9C¹Î#´ËænF¾_„®—n¹áð¬§yQ”5Wnš½ÒUÎ[—ŠiÊéà8}z>2™ØÝW0ŽKZgSóÀÍ;*½Óâ ?=놪ÉU5¢Û+÷ÆrIÞðã½Dþlp35[êõz’#¼ñèSß¹(&6§ êøÁÃdIš\ŠLo®î=Vhv®bgYÔ¿^ûº§&ÕÂæôv½—¾÷Z&—’ó]XZL³"jó<íY¬?5ë¦NÃ.~ÖtëO›Ÿt¡.Wý/zÆL5¹ZzÏ5s„¶Ó Ôȇƒò‹Ÿò Ïz–âE! Æù•ëÜååAˆ+¾´¡ŸËqŽÅøŠ‹ùp°ÿÍ¿a‹ë׸r¥nQ 9ÿf>lö6:ÇÍ®§bó…s©ï±xž(u.8WFh—"&¼fDQy `žR}3'Œ—ɵ_ttz*½ ô ÍW*ORóÁ¸ ÆÜuMøJÙ"¯Lݹcù½éÕUÚ6‹H{§ÛÓ_Úç²M.¶©ã@®iï÷&¾˜W=÷'/#†‚0¹”|L?cJL.NµàŒ}Råõðný½‰ÓÈËO=çÓ½ÇßÕqr©yù‰[qÙuÖ³ëW³3ÑäÇÿVüL#éýÏ>;«iþøOý5Ë›ü#ÇÓ:ƒÄ Ç¡Òª;ùG9žÞ$Ú‘ Žµ;´cæxîýЧëÏ#½KÈÑgZÙj1¸±Š5\+;[‹Žq¼‰µàO-;+Ó‚Å+:íRt9G+;[!‡A‚¯¾ùVó^Õ¤ûx®Çë¿ò¹U•oC®©iwÆbw“Äæ’O÷¾|‡—¼á˜Ê=¿=ø#¿  çŸú¶/Ríyn*}h,èF~¸nþ{Û´z+þx¯št¯Òöݧ›±ó]²ütìÑë§Þ¦ŸŽïOcàÍ›78øéàŽpÿþ}€·èTÁO×5¤o|:@Ó@Ó@Ó@Óšššš@ËGjó =¾üâs˜€ësŒSÓ‰èÿaÙ:Á¿ýûl Àõ9¬.öò׿¹gý£K/]¸Ísvn råžüþ¨z€ß3”`a·h+Ij—¢~]c¥v)-µmTf`ÍÍ Õdm¿tzçmŽ««ô—TËŒ<ÀF›ƒ#Ûí&‡¥Æ,c+ÎæìaÄŽeT_Ç ÎOÿ›ßüÕuÌçìÜXqÊ D´Þ_Ÿå8Ijï®ek[c«ÇÍnmÕDûÑ #Ÿ_šo6Oª—¡Î™P—Õz·sjÇMÖ\ù›'××jIªe+¾ƒƒ y°åR»ÞaŽ»m޼݆גTËÆÊâMéÀ8æï5[oÔA2œŸþ§?ÿjýcgé+•¢êâ#w¼À˜z§ê6j—ëîÒWËøýùN]VýÉj’¤Ëʰ8-õç¹&c ieTqœ#ôlCaµLÇÏÔ,¥óæ× ç}FøQüQW“þå}¨âÌü²LMêúÝÝý‡Þ‰?mœTÛƒ?ÏÑ#ï„anfÝ¡¶¢¿t™Öîš…ßÑßïv¶ÚRÚ¥¨?Zz5êð°0TÿÅ‘û‹ãf76f‰ˆ&œSDÔh½º©9h¸-S7dÖ}gá¥ößhs^ë9}<Ø=Âפj'ù6é–¥ÉV7bî³Íæ»Åû NÓÿûÏ¿Zÿ . 'ß/D\ÔÈ=¯sÜìúašE­QÏ.ç®H*â¢r,[×Þ«øŽŽ‘U²JñŒ5sÏ“é²2,NÛ+•2‰"ï3:H¹]ŠÆƧö÷S<âÑRÛ¬QÊò Œñ©ýÃø#Ãߢ&#§s%ö ‘Q,Ç”#»œkÐBjÿàà@µa¨»ˆ5óJ~õJÙõÈ;aœ›awX”ÞSí¾þê.¨&ýn±½XÜJó¢XŽ­•Ú’TË,·ÂGÏBŽQ‡‡".}†l½Ñú«^s­<Ê-½ú”·eŒ5Oª— ™×ÑÙ)öïU{c<öçµn:¤ö÷e [›t¨±7v)+»"…žþµžh}£×t¾[¹±’!5ý~µþ±³ /N(‹O¹b¸ÜUÊD4åô8§ˆè¼¥†tuçÖ+Yy|¼(j³R“Yd5BĹzÒPäÞãã5.­a£$©Ý:'Qœq>謴×Yœq.}å2&ÄÖv ÀqŽÅð•+uUÒ{öz}¹éºc`éfý5°ßuMˆƒª›Ãq³ë;+.jäÃÁù‚sgLÃÃÐPÖ¡¿”PÃL$¾8qsPg7Õù“k>地î;»˜ß8ìdhÒ¡ÆžéF¤7ƒÝ‰Fd=ßí ¹1’áâéùU¼™¸cB<(cò¦câígõªÕè½0 79½~”\[qOšŒc$vü •óå\³™ó|jc¶oÙ÷øx±\.WjëT)»íL˜å6lé#w–ÃF\˜s„â+'á|S¿V¢‘¡lXoèþªgcå‘Îmêì&uúº¾îk5ÔéÈ}góÆý{Å)0jýûÊqÂÚšïöi´A2œŸþ¿¿ŠÖ?ãÐóNÉ[0³}®.çƒ+gÅq³¾bL¨Ô³²Q⸽8Ijï¦r rE )^µÚ÷ìè(Å‹Dd¸-í6?[)/„CÎ"·aK·Ñ_#õ{×É¢F.eúzÀ0ÃÃÐPƒ¬7\uýµá—ü±ÌÁÞ¾öÉ ¶¯‡ìôaûwè)0rý ʺÎymÓ#’!5ýÿDëŸ+è×yëRì »—ƒneÇ*g%ăÁ¸ ò©g!‡u»äåAˆ+¾´¡×`]“a‹ëyÜ”^`LˆÍÎ]$¿x ¿š‚Á¸ÕnÎ㓟S©ÓÜ07‹±NoÝ_vú] ¹¹ÉDýßáÆ,Ç9B[r¹š÷ÃC}{Ak(ˆYÙ쯫¼Â<ÚÔÚM ©{͈¢¶Ýמ'ʈ-8WÔQmxc&Fž×£MaǪ®¬ô‚2ëGë—óÝþ ¿â á^¿~m3éWß|ûxáSë4{åïnàï’oø•vðnq‡‡Ç홃àÖ2Ü3Ò½òw0oÌA06?À-ßµ ÐtÐtÐtÐt€¦€¦€¦€¦€¦ÀÝäÿŽeá‡uIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/0000755000175000017500000000000012165514774022201 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/ldaptest/add.png0000644000175000017500000006074012032647161023434 0ustar ebourgebourg‰PNG  IHDRb5uÐ IDATxœì½hWšïý(Tà8P t_PAîVl¬v‘Þ Œ{Ç—µŒ/ØJ&Jc%¹Øš ÜØ3—ÍÌe³ž,›•ï$móf¬\2±2°c9„(—7y!ûJ†Œºƒmu›7fK±Õ¼#¶ "¶¸Àï§ûèô©]Ý]­nu?Ì—¯OŸ:çT©»N=õÔ¡ýÿÕqIP—…P—B˜'@@V.0ÿÿå͉c3 @hzB€6ô  ó„$hC¿'A·:éµµ«>©%*A~Ë"n¨ß›¨Øqûd¢²Yõz2az‡¸ÕïK˜bð)³bµæÓÃ)ccüã)c}ú (zôuþúK_Ï•n—TEu\G%ªã:ª¢@uT…Ꜩ•TçÁåË“/Leƒ-å€ÃÚñIY›à`%‹_,N½<½÷‡ AÕ†©6J ðPj…`¹—ö¡WÀÙòñD!õÞâÞòõ¤ÞÛÍø=þ^۳ݦì…:÷šÇ»¾ÞÙö›>>¹—TZöÉD¥²í0O%¯‹~_½ßphû~8alXÛ¾Òœ/o4ðéNøÇ»ç×ãöûã÷£^OÑ£—=ljT‰Ê<ŸãØôǼF4^ÂæDhಙTE¥ÚNÐLZ7™%Ñ{W¶go)’†ºHºŠ Ä¡€8.U8nÇýì_À¯þ¾°}Bœ­ªWÍÙ²¹·zRïíF^Ó¬-[ueŸÐ4Ëöó{5“y`žª.„{{ÓÇëI­Ò”ß§U*ª>U©XÑ}¦ùøŠ4Ô׎|C|öñT™ûý©òúNù'Så{]ðãO¦ŠMùCzñ®¿gÂV¬þi½Xî¬/×|N(GªçPAŠe«³‹eÁI°’êœxÀGÕqŸžý)x©M Ÿ,Hs«·÷©ÓS0ÿá<ï}úµiXøýÂпý뿱ª¢^ùð ?`}L¾0©*êµO®UGIéÿñ_Îyvšº@”Ú*Õü©éãGSÎ÷ðÓ¿YËÛôù€ñÿüæèèDkíä߀éŸ-sošpá—Y©éñ# p`æ,SZ[–î„hI-µW]þ“‘ šEiµ|fm5ã5ÍÚ¢dŸÒ4Ó×ïÕL»±·lÊþð©¤fmV½žÔÌ@Töû4³Â}Ò¬P¿IÁ¥Ô¥éá¤QiÕ?ž46øìãÉ÷û“¥õfü“ÉÒ=Á¯S ^¯—Ö-¯R/4ô‡ô½ø}ùžå´æŸÒËwcö¹§ôbìþ½x§ÛþY½XD?è~é+see¾ôuÞøÖ`SÛö¬'L®âT(•\ÿìúÔËSââl­ž¯?®*êÕß__übqò…IqñW^{…/;ÿûyK>;®3õòÔÂïx$=ùÂ$‹¡Ÿû«ç®}r[›Z*u•ºÛ>÷T ÔG€ì±l›øÖiɃãuiP¿<@±¸˜>0Æ|*ë•¢¦¥©k>•`]¬|½˜Nç¨ë€¢Ò­ê²DI˜[Öìëã°ø¿ tS-' Ó6ýý– ®ÇïI˜¶ ®JÁÑê½á뵄±éïÍM›º zGÛ›0+UŸÚ›0¶}ÊßïK›6¥5_}Åëõá:_ÞhäöëU?ÊÊ·ÀÝ_ç Û^/¬ûù'ë|i½bo€3þ¤^ºççIÞðõ…(þn3þ©hþžaÛ²ÏEôw›ñÏDòËñûÌò?ÿƒÖýD ¾ˆ½A]O7I³Ìq5ž®å¤™ßVp¤ñ,5¯Ï{kN½<Å XÉCÀÏ’+*(ðâk/›¤UEUA•έ€0nûôþ¤š€ó¿ž€é“YºEYùì¯r³¿:>z(9ÿÿos©½)ê:ú¾Ôì_Í_:>)÷þ¯ŽëÃkgâhæý¿Í±ò+¿9®i€ ÆžN_ù‡ãó—r?Ȱ~Sû´Ù¿ÎÍ_Ê]ù‡ããÏèÒxD_]c Ì[–Gž¶©£ïK©TÏ`€B¨ëè§f>6éø•ÈMü cS:ýã,< ð0,ü~RN¥öi³}|îÝqÖ/! ›ÒÙ_ŸýUî…“Ù ?ç³M)óÚž„½µí+¾^KØ[°íí¿Ôê:©½õÞÞöæ¶O™6­úd½¯PJe¯ï ôƆàyùp 7kõÓ¢¼Î—7(ݪùu?¿_/¯Û^?êñ6óOê… ÏÏjìÇÛôw£y¨Ë&ïm¿|¯9_ˆâúòõ¹gDŸiÏ›þþŽŸÿA$¿É[èÑ{=÷›ÌI°ÿV/ €úœ´8“nûZîY¼Þ‹MóbïóÎo×'uË.|² €ïðþôéi>ÿO¾­Sw‘Ða Vj/ÀÃ01–XþÆ:1q”\¼L)µ—nKÿ²B4’gjæÇú+çO¿4>yB7MçÍ·­-šÖÊ÷ÖUExÞüo/,ýKéø±Ì©£É¹?,é%gžs¶àüÏN=Ÿžy9³|s¨ÆÇ#Ž­6Oݲ`é_Š“'ÆÇÇôÅ+£'õBÑJ'@ T#ê…3YÇ…™ŸÍOÿx|ê}ñ_ ó,äž9“Óyú½õù?½)ö;us¶4MU… Õ–o–Êå¥t:gošàV¯Ê®Ô¼¶'QÙ¬^‰ªiuÞ®Xì(/ÐïMØ›¥UoVª>¹7åï“)³bnû ?¿oÛëûRƺà7LºåñÃõ~}Û›õÞÞšÞŸ2¶½nÜüºiÛ@ÓOûjÔXçÇéå ×Ï?ìï4ö…»†½ 4'úgÚñé _ºÓÈÿ ]ºS±7__‰ÕOü ]øFô†ÿa°¿cT*­úoù¡Gߺçùéê¼ÐT$ Õk¶×¯î€÷?xß÷êî_xj‘4¿sÊÛûüïçY$-ÆÖW?¼Jò;RXødAœÿJ¢I+píú5vÔP=(€j¦¨kWWco"s 1ÿé2Ù£-~Y€þr”MŒWÞÈ_|ï:äžÊX.ëÖܧ+@4 )¸š–°,câ‡:üô¿ç—¾*—Ëöâ?W¨ãTy€©³óîu¸ª¦Ú¶1þŒÃâ?–¿-ËF×,ZñŽ

–°rÏd¿,Vt€d%A…ëÿ«PþÎ\*Z{«Úˆa§Nžâý–¿ÝîWU~ú³‹¿ùí'©GSö–.P×&{÷Úbo9àÒª·k^#¶íPî·üü^bÛ¥”ºvroBôÛªúd½ßlàõ}‰JeÛ›õ~‹R×Ö‡ë}eÛ›õÞÞ¢ÔµÓ§Do¬ ~ìó6¥®]ÈCýè“u¾x¯‘?”*® þžÍüØ!½±J/K~³ê ¢¿ÛޝøøgôÂÝJ¥¡¿S©lZ’Ï…ø»üýr'ØWZò?ô÷?L×ùoУoÝS—݈+\›]»¡©IÂCçj$MªÿUU%*u)¿ ”j”¬mûV)R «£µ6“úô.EÒ*¨l)¥:ó+påÃ+S/O9®£‚Zê€^û§kÔ¥ ’¨P>IQsÏ&`îÒŸ OÏÿ1OY4ì¥@] ¥4½?ñ7¯Oª ˜›< @Rª>`|WÑM«Š@èì°ÀqÀ¶íTj\>0y2;y2ËzLh*8@ylÂT]õô>½±bdÒ©©“ÙÄ£°øUaæÕ1¢¨èð£*L=Ÿz¾Ú¬žL-}U¬õ Z¯ßûÕs¦mëO¡®Í¢d²G³·ìZ$­Ù[´‹^Ól[ð[Õm\ç÷j¶MyÄ\±-¿¹I7öûRF-òÞ—26- ˾RóÃuÞ¬X¶Ç§× ÓßWjQ²èŸÔ~ô^^oÆ?¥—×M}Ž>¥—×-{“Ð#O¥‹ë&÷e_ÿLº|Ϭì¼ÿAº|·u_¨µ3áõ•FþnÍÿ°üÒ…;>þÔF—ïñø»èѳ«·(¸@…»œ–¾\šûÜÑ©µœéé×Nç~”# a%,’f9¡vñr5¬Â\àWwSWîø™lI³9广zîÚõk @íœ;…O^yù†_û§j$½]‡ÍÿÔµ‰Bª ö©eæ>)þTdËNË͌Ќu¨. 4©¨æ†éÌOÆÔGàø‰ ¦mÿ?‹³ÕÁY & ý„N·ˆØ>°h•(À½mQXø¬ð›w>á(=$zÝØj-°MÇy˜,þïâÌéñéÓ¹Òm“ÚBT¶QÖM @_ø´ð›w¯Cí±'DKn÷ûgÿ~yDNi…¡®­iš½UõIM³·*\Zç÷j¶-ø- .•}R³mî“¶m1?œLV¸ß—¬lF𶔂K‡‡“•ͪO' _ÿxÒ¨ø{³bѪ׹ݯ涯˜tËãŸÔ Á¯7ðc‡ôò½¿nR›‚KÇž}º|Ϫ÷6¸ÕIQô¶¯¿·ÿA°¿gÚ›ByÛžMºUÿÃæý†~´9ÿ£æý7>žM´v%²ÿË@_@¾æÙU]â]ΟüñàWhƒ[{ä!~øáÄ_Nðk¾T6_ÔæMòÙàÍg‹YgEˆ¤k½¿xúÅ ÞŸû«ç~D.B®üþÊ‹/¼è¤Ù]bÞHšºôÈ3i•ÀÜÇ‹@”]TŒÜÑÌ 'ÇÏ¿µÀ~BŸ8–€Å/V€¸cGÒúÞ4 £õ'´ë_”¦^ȼÿ›ÓsX±· µ—”¾±Ö7+µ#‹ZdìYü—ò Ïg'ÿ2K-(oØú^Í´í•?™¾#äÇG<ž6MÇ0]W¯±\ÍÐ¥?§ŸÏNžÌÚµlP 8nÜ,[[H@nltùãGè7™4íÊÊMÓqAeÇMÕœôv$Í•6º%K³ä+qúÎGÉ£…ZDÉÿh´p'‚¿ÛØ/ß5*BTîÿrtùζ/Ôûuôè7(ùi*ÜÓ,f…ùµY<—Ì#i>I³š<Ÿ-Î2R>›$—®-ç½³±÷k¿¿ <÷WÏñÞ~DÀçv–†úHš’å§ ½o“‡ Ó‰£éÂ7&ݲõTšÞ§äaRþvÝú3dŸÖS àa˜ÿp>ÿÒ˜ûx™-ÿñʹ3¹7ߘ\ú²´ðiaòdv楉 ï.Ú[•SÇÆÎÿ,–éœÿÓ‡µ+±jÑ0ó°Eúߦ_ÊNý8 ƒcÁ‡/9ß›‰GâØè}[S €PËu“‡ ¸tî. V¾*ó-E€Ð?WÎÿ…Ég§_gÍæÿççèÜÇËç_Ÿ}gêÍ_~þʹ…™º~+Î÷¦ªÔÚ¸ok‰Z$-x¸o'µHú¾|T³mª~Ëà>­ó©¤m‹¾Âüp*Yáþ±de³¯'+› ÷iZO¾þ‰¤Qá~Xô&»5«êªO›U?š6*ÝòøÃÆF#?:l¬ þ^զˢ_·¨Má>{º=W½Im[öcµ(ö>=Ò¦gð}zäÙæýÝ–ý¨¿?²í'ŽŒ‚ü¸¼QõGëý]îøù;1ûSÇj‘q¸ÿÆß¾1*èÑ×üõ/Š„¾æûÿ™ŸÌäÿg^ŠeÙTzúåÓ,Pf1±x!Øv$ ðâé×I( ~Nš_hµHº:O(rï Ÿ,HO+¹výÚsõQÈÂ?- ýûÿ÷ï,’ÞžÛ«÷"iE@…R¹ôÜËõ}iÀájÙ&$4M,77mZXš²ÿùMÊŽ{RŽCMZ챤”R¢h X(›Ì€MÓTE57 HíMÔyÇuè–]»(€j{’jíÃÌOŽ”¿­€ éÑdîÙÌç_~õÖõÔ^µ@ˆ–ØCÀ¥ª’Å17+Ú«ó5â÷Øi{4•$jÙ[6hZ(eq.‹†uUuLÓ ºž¦Ô‚û*€CIp¯=’ ”Òûàh‰Ý<¥Ôñú¥vÕ?š¢[UŸ|4eûúTʶùÇR¶mÓïe?üXªÂ½®W6+¾ÞÞ¬Ø^ÿ„nWª>ý„nnVlËãÓºYièÓf¥b[ÀIH›U?z mˆ¾R±ÿLœÑ§ÓÆzco®W*¦Î‘±tù^Ë>[^7*¦Ç?›-ßë†?’-ßõñG²…Žú£ÙÂÁß5*ßÅëÇ wË^êØøòÖ}áNy=úzolV—Þ§v-¯,™Lñx·¡Nµm{ñFQÓ´èKÅ¢¶]¾ÕÐöhþ5®W•„ãZU¯&œû¸¡þ‘„ãøøÄ# ê8ì2õD"A¿÷õ)J-ÇñøGSt«êÙí^>>•²íFþ±”m[Î÷@õÇR•m¯Wl³êu½²¹ííMÓ õé'ôʦiY¡>­W*ܧ+• »°ÎHW6ª>{ mˆ¾R±þìñ£icÃß›óÏK÷¸5î­·î××MÓ ãÏŽ÷bðÏŽ}ý‘ÑâÝnø££Å;¾~¼x·l~׊Ÿ<:¾ÜÐ/Ü)½a|gµëOŒ¾A¾êH¥R^]zß¶íf#ixà>,üq!w,W½»™HšÍ¤,ž¦6mI³ñ ýÇ¿ÿÇöT_›½·_¼ñ0ˆeãøËÒéæž³ u\šH$#ÖG=úz` èw­7Œ¥Õÿ{–ºt;®&¾†SáüïçO8Õòâ Ÿ,L›ˆ¾øÐ•ü•ÚÐ#iþã‚qç@A݉þä ç~2ÞÔÜ'jro²²YimY¢²‡Ð-½þе®¥GÓÝÞh‚ ‚øð¿Äµ×tèêGWGGGAAÞã!vº}¼€ŠŠŠŠŠŠêUÌO#‚ Hï‚ùiTTTTTÔÞÕÀüôÈÁ©díÖ+\»µÆ+0ß¾y+ÄÕ©Ô]ûão¶ÓzŒkS·ÙoÃatkœ‚ }LX~Ön­­V™óüSߥšUï…·ï­C]ÊGB]:rp„M -ôÈÛi­…¦”Ï^Ñ{d«ÆKĵÞaÿÊQþâq}+PQQQQ™æ§}c£Ð–‡ŒÍ†SAA˜oàË+·¡­BCßZ°è]ªaãÞU ÚÔÞBßqƲ­B†á[¡Íí† ‚0ÂòÓŒ ѳ}qkª·ê‰A½ýòrßø;zýÈÁ‘¸ÖÎÛËÈÁ>·Q—ò)MŒ¡ùR!ѹï8Åú1n« ¿x\Û •©B]J„wwˆ QòöóHù(Ê8œ=Ì;ŠÞ~³}­WÃ^¤p°Ùµ *ñ6}©èãáP mq ÇƒŠŠŠŠ]£æ§y‰ø©äÅzô#†˜Ò—×7Õ#Ÿ?¼#‰·Ç¸ziv)ҭm+ö×ñ¶ïý‹G_#TTTTÔ(ª€8‡3‚J¼ÞFÑ úá}…/¥G–:=œ=ÜѾÙm×R¢çIâ¢êðö;w–•i<ùioÍè´,#zÄÖZ^oAÙâf·g”š!-øž?h[µ_5\Ü?ÝÂõÞޥ º:äZèv.2¹†¹a-_º´qBnæW­©ë½}½·ýèÃnx½wÃ~[èAa ]›¿¦§uÒê{4QÛQ~Õt×G»² Ù™ƒ^***ê.U|¾w7éã{‹ûxÕAvÿü4{–ôº}޾}õ]/ñÉ_ñjPw|{¶vOsw·UÄoBŸ¡†ŠŠŠÚOŠïŸFAÞß?ŠŠŠŠŠÚ»ª€ åb™ö@ªURHH÷ÂPPQQQQQQ%Åü4‚ ‚ô.˜ŸFEEEEEí¦.~¹xãÆ _ÍÈàýÓ‚ ÒMnܸqäÈß22aÏ÷FEEEEEEí´:®ò)æ§A¤›4ˆ§1?ŠŠŠŠŠÚEmOc~AAºæ§QQQQQQ{W1? ‚ ½ æ§QQQQQQ{W1? ‚ ½Kæ@&äSÌO£¢¢¢¢¢vS ÅBév)H1? ‚ ½ æ§QQQQQQ{Wpaîws´^Ý…Úß:sf†($½øÞÅ® µ75)?tmþÚâ?/ (zôñús¯ŸËÈ”n—|¿ˆùËù'zôèÑ÷”Ÿ93“Í*|w9÷ÁtÓ° ¥':Ñ8ÒûÌœá—2¿xšéÌ™™îAd'È_Îç/å#Vž~m:;šžŸ&@:1&ã[p’l¦_枺4s Cë³/í ***êÎhøÕÝ\Ͻ~€Ý?½ts‰v žf‘4à<=ØÌœaÇ¥Û%V’¿œ£g–ŸÆxA¾‡ÅÓ|gÎÅ÷.²yyûþéx1¾5ßü»óÔ˜>==}zÚøÖŠ½¤÷¿]ÌO¿:íªQQQQQ%e ]ýèêòÍeêO qÿàÁˆŒiXþþÍüy1¤žymæÍ¿¾€±õ á§<ªÆxA¡Åx:(?=44túÕ+g_½zúÕ+§_½*ÎÙ Ié‰ó?¿0szæÍ¿;ÏþÍœž9ÿó7Ã'é!?¢wÞ /i§A¤Ä£B*ä§YÞšb~u°uäàÈÈÁo9Ÿ—ýóÓl’Î=36útVVJD§GšŠªç~;?qb w–©K'ONF\phh¨©Ž‚ ™o¡e¤M0? ÂðÆÓl†f¬ÝZ+7ÎO éÑÌÈÁ¡‘ƒCccß:á…°:³?KÍf—®Ã[‹²¨M5(.ÂÁ˜;^Äoó˜ŸFEEE¥.'i¨ÍÙbÆCÔ¥ìV ”(UŸ9¾uB0 KKU! ÑR„窛…Á,–JXp,jDøâÒTí-DÚDüæð»¥K·Ks¿›ƒÐ;ªQQQQûXgƒ‡‘ƒ#bFÈýÓde¥°v«:²¹½P„Òím añ³Åì¡qæ© ÙC㋟-†-ŠæFŸJyÜì{V\jO‰wñ¨b~Õ¥°ZX]»µæU^§A~†††®Î­QˆÔ…WþkÉiÓ°–¾XÊË¥ô£yIÃÅ¥i5(©ìM?‡·#–„˜‘Àü4‚ #æû§tX€ôâßš¶‘Ÿ[‹òéja•JѰ祥*i¶> aÙ?©ñ#^S\Ê·~H ¾åbû|›`TŠÚ-]Y)¿.5T>/?,Ò m£?‘€SgÒ°ÏІMƒ,×0iÁr îg~> ú©ö»Cvì(’{ï“È(Ð(Ç¡bk?å‘nPÍðO‰BÆÇâ§Øñ£èIgòÓËCFå;~)>©ï­é-—z#~–2ojÀ“•ëøÆ÷!-£¢¢î˜®¬” ß”³‡FC<Ôˆ3?Ý2Ë_?[2k“4u>I3oÛVa¥<éóå/ ]'Òâ! ÝÁütP9xÂeo}ßgíµÏcÓ wÝHÝ…­©5 Z1:÷æ¹Ã·$**ê(Q {(Í£gÉWof®ÍË ð+±»ˆ K7¯S—…¤Wâ¸QË÷–Ù§SáS«vâQ!ñ‹¤;—Ÿ–2¾AY[ñªïð^BúeÑðÈÁoôì½£:¨¯ðOÅñó:¾·k!7ï½î½ÙuDEE]Y:(’îl~š3444rP~Çsã'²þvVÛ£ƒÆzaùÎbñî’¨ éçg.üílîD6ö¡"Eüv1¿3ùiov™áÍÚ³ÙQy£jFЕÕPŸ—bbi$Òõh¾-øjû눊Š»EÒ;—Ÿ:{æ*o9Êã²ÙÅeÙÇsŽKU…ˆš~BFŸM<¦6;ŒŸŠýn vü(zÒF~ÚK£ï§¾cð-ª>*^"EÕ<å,ŽÅµü#ï­/_DìË[Ç·M©e~Õ[×£ TÔÁÔ.秇††N¿z5{(}îõééW§rÏŒ]ù¿V£DÕ*Ç¥ M~"•=N&Séát2™J&uMK@ᆑ{~ö­¹¥Ï"e©Ã§U|×ÖÎ Ò¶óÓáíKˆÙeß뱩çªo±Íè£K¤¨Ú÷¼´XSmø§Þ¥:A[C¼º[O×£ TÔÁÔ¦òÓ žï]º ÑŸGVmqhèô«Wν>=rpÖn=(~]zqºñ›1g^{33œBÒzÊq)8„]õ­?¦ƒ©a퓯§Óª…b1;:ê=î}­–hÄg•{߸å}’¹okA<zÝVΛíðýÓÑ y†9‚ }@þrqæÌTñë‡dá›böШ×–nvàùÞ„?Á;s ‰ö—¥ìt7uiul P—~òñõá´~üd6w"›-‹Ò²lÂó¾GKúTœ¥ÉR|¡µokÞjáxñmFÜJ» ñ¯Ï<¾:HÅ­„ŠŠÚÇÚT~ú!êRñ„{Û]îöx‹¸òÓŒÃÙÃk·Ö¤6Ùk›üSm¯ÝZãŸrÏëˆË²·>ó¥BÆà}§xPaH9‚ BûùéÞ?½cP—Nÿ|4¥'ä\€G¶/¿pv‰€|Åxл1ÚyÚh ¯! o­©F¢Ô÷=òêî–‡$ÅÓ¤Õû§¡6Ñò¨š·ÉÞ1Å&]éÓ‘ƒ#|zæž×aå«…ÕÃÙÃìSqœ¾ñt”wºøn%<é ƒ‰o<ÝÔýÓýŸÞ¿ãXßæg̦KÇáÓW¬Ï~e}gÂ÷¯IA~ø¨ôêI¾oms~å﯌qý¥ Qêð×kvôU›qå§¶éû)Ÿz%R_Œ¶½í7ÜJA0žFÁ¤ýütOÜ?Ý&ì¸Ãü³9s÷WoVfSß5b«—&À wÞú»_9vj5£Þ-MÞü¿R¹¯iSª&½>+¤Aö_屮ýJ­5õz®6C. i_Ч[¾š±ZXñD7û”Eɾ=6ôÞÖÂÇ0ho¢Î¾;;ùò$¥tyi–jîè£L¥¾u¢Ÿ¦Ž}ªŽ)rmùþiC•ˆ÷Uó˜[¬éëÅkŽKÝ?í»µÅÂ(A¡ýû§û'?-•¨DM?‘v¶OMÿx:dÂcyO}ó„qøLÉ)o;Þsã¼NÈH‚–>¨¿-¨/ïJIÄ•ŸîEi–~ÎOGÇ;þÔc©«^½8«&T©¦o~š!MBR$$]:'5%µã{E/«5l*¨»A† ^l\ú¯oË!×UÅ•ŸîEi–~ÎOG‡¡˜†åýÈ´-©fkùi¤eâÊOw]K·KùËùð“󨨨¨^õîO1?=ÿe ”i¨;œŸFhLùéî*;¿”ïÚvDd7Ã÷'ÜÖó½ß¼”k¦zS•‘v Én~ÿtév©Ã› A¾EÚŸàû§‘BЧa7ç§QQQQcѦòÓCW?ºº|s™ºtîƒ9ðPº ™ÞâŽÓ­~‘Ø™9;ÃNKñhþr~æÌ \|ï"Qó‚ }LþrqæÌTñëu¡ðM1{h”(ä—n^dór?<ßéeÄ£BÚÆó½QQQQûF›z¾÷е®-Ý\¢O#ÁOóHšñ4‚ ‚O‡DÒìÓíxºŸòÓ¥¢±ôå²eZÖwV·LŸÛ·Î!~»˜Çü4**ê€kSùé~xÿ4'3ª…= P={è7²cH×{CÀSÉPQQQGîýÓó,̰`~gY¦S.—¯ÿaÁÞ¢’’ÈlýÅËF·;pˆG…óÓ¨¨¨¨Mæ§ûáùÞS¯MR—¦´¤ÓiêÒä^Mòó4¤#‘v^dÔÔ²C­õ%=y;zwM-#â6'»üùÞ¨¨¨¨±èÀ=ßØÊ»ÖÇ‹¹—èÇ‹ö©ósŸšô®¾òÏ•Oþ¾H]‡¡|þFválŒ]G bÈÓ°£,ÞT§íôØÞãñÛÅ|¼ùéð7FGTþZÌ–jmYßvZIw·**j³:pÏ÷þüã&]~Ì\þ¢œU€B(QTÇ¢(QTê(„¤÷¥£4+¾Ë[ÈËÅ6‹¯Æò¶4Sz;ò6Å£a©Sß!EDªÔ©wEÂë{É`Ç¢'±>ß[j¹5møæi¯²·VóGŽ0ßlïR;-Œ¤)ek·ÖX ï®s=¢¢¢zµ©ç{ïúüôçod©KUêRˆµç¨å;spž—çàüèú_üMúÅô>=óÆ|ÃfÅØW|½cxlÊ+D?½ìÛ‘·© 0:Ê|O³ûÕ÷8 aýðAЇ€´ùi±QÅ`7¨œG®¾>$Öä³/½oœí13ôiS£•Fî»Äî¤Q5;rTTÔv´OòÓ¥Ûÿ8ŸÿbˆIå§ÎWSÃÊO‰…±•ÂÆÅÒX±Z¾R-§é}éÌ sŒç–ãj*d÷Îß¼Z³õC IòÓb/\ù<ÊâE³zË}GÈ ù²Qú!>f‹ëÎËÅ0šÇ¸¼åè£õ9[P\ ±;ï²M¼å¿***i2?­ôl~:ÊsNR{Sü–ð(úâç ot~軄fZ;t¿]Tx÷{k–ç3ì½UåbY,I¦Ù—Þ»lPïÑ=¶/S,÷úÕª´¬ÔN\#²5Ž6|ä+++á/TTTRÛSñö Ëú¾)‹{*üZww~:û‹jp<û³åñcúÒå,-è·Ë©—NÙ_ÏMé.?ª/}Y6H ‚bÆÒo WM³“û˜kç/䎩íèA8–l-?M]:66Ò‹¨A½·ãƒÚ«ßØGËOtÇÕ¦èƒþ‚pØá,xöƒ•Ÿf¨”RˆóŒ µ|çÄ“ežŸžx²L¸r¶t½·tÿ›VâÙ`©¤)Ä6ÅkǼµÐfÃü´÷”uPêºáàVKh} ×N~Z<õ¶R—ït¿ñŽ–MÒR£GEEm¨¾{-êÒ>ÉOGçó_d D!܃Z¾îΉåú½¿0¿ÊƒßõÞê‘ ½5¥É@ð)bo/¾ùú Qºó^äå]ßCꇯ»‡µ“Ÿf_zŽ>£G¥,^'¤}o¦VÊæÆO¶µµˆË£¢¢6Tß½QÈ`Ý?ýùYê‚>\ .8fP ϧÁ¥Î¯sR9 .Õ£]ïí‹›vî vSôà$Äoó-ß?M‚ãiéÚf>Š1¥XÞZ”)*kwÊóÙb9øå¹¶ÏK‚Fq-øHø&ònßúGŽŠŠÚP}÷Zt Þ?ýù/²Õ§Œ¹ª‹…y}_ºåIiß?½²²cN”ÏFq5ØQv×haH{­A|ÿtj¯žÞ§§ö¦ô}z“ôÎ#Òä§›Uñþ`g÷¬î®Ñ¢¢¢J´×¸÷O³¨zòÝB`…7² Àñw+ #Æ÷OÇO#‚tšxz°Þ?}üBÈ$ Çß-à$Ý-Äoóñæ§QQQQ{V1?Ó°–?3*ªí¥©ÉÜ2 V?šÿ°ý1)»Z§_ËĶA›¡góÓ‚ &–ü´²«óÓQp¾wÌuÛX·Ëóž­i¥ìÓÕI‹ºtl,ÛõI´ÓZ.–·Rç ©K³£Yö$2ßü4iõ‰?¨¨¨¨»Bù¾.èIdýyÿt–iwìÅ?àVïÓ¥Å/+¼©ÞÍý­ÔmvËÅÛÂÜÇ~ÿ4***jÏjÐ^«OžïÝ>sï|N+ª¹eiJÊv—TpÓˆµéð:µ£è…¨·£Ú-h}rpˆýƒúˆ™òrßš½¯½OÞ?]¯‚ô+!{­¦îŸ~ˆÏö}Ã…·òéa=w$çØTUHeÃÌìOB²ÇRð°\™­ûÚ­ìßÈÁ!6¥ÎñÂZM9XWØõ(9ºöN< QuLGް·E±’ÃÙÃâÛ«v‘ÆÈP=ÒGñöÕÞÁôÔð$.æ§Ã£jÞNïæ§ E(Ýö×.üz6=œÌŽe­M06 -©ééóïŽûÖçùi)J®}*û]ª½OǘŸömwiì¿;ñ5¦âä׿»ÔbŸGÅq’Fú þ»Ž+?­TóÓ½w .;Ú¸ŽÄ…_Ï’­ìø³i³b%´„qÏÐ÷ëú©EjÑØ ‘y<]ûTö»T{'žö^éÝr~Ú·}¨EÛ¼píÖ¹}KÖn­±SòwRñò†­ñ¥DÏëˆËòÖêÖHÈOóéŠÍ©ìE¥¬°µY–-.¶æÛ¬Ô¯w0Ì‹/Nõ."6ëp³/] o?hœÞB©…ˆm"H›4›Ÿö^éÝ·ùé ¿ž%v6wB_üƒIö¨æ†™Öô}a“4ÈÑØ¶ò)?rx/kïÄÓ_~:¨}þv©µ[küSâ{!Ù›˜ùRâÛ£Ax¯3[„º”µ²¬äyñ=W¼5IlÎ`x ã8y³R¿¼i0¢-"5Ûßé?bû¾ã |ŒcFfÁütÞš%vvâdº¸b‚ 7þh¦†S™ýÛÏñ‚ç§GÎS^"æ§×n=8œbYjè(9ºöN< BT-–Dшñ4CÌ^{¿áb‰é‚ KcYÖëFü¾£’ð?†<„7±ÙöáÍúÎ…-´Ó°¼ýÁé(ýŸŸŽÎÜoçõ=¹ÜI½¸bݲ'^JéÃ>Wyáùéµ[V ˜Š%ÀK˜_»õ€}Úõ(9ºöN<½ùi¿‚׊±rÐR côeýxÚ¼ýüôͶ Ñò|ß9¢©5¤MbÏO÷ÃýÓÄM?«—¿¶(Ý¢§^Mkše’†í£èoíx:Æû§}ÛgÊC[1ª€µ[kì_ôˆ™ç˜y›Q¢y)æfÿ|Ö¨ùß]ûñ´DŒS¾ØfÐim©Ž÷Sß×¾D¯ YMñïŸöÁ¸g/eP É´=ö|2µ/•x4Ñx1âéþÖÞ‰§¡óùi)ª©^âõáŸFUP~::ÑãéfO8÷:#]óÓÛ 憭íµôádv´qNºnYŒ§;L‡òÓ,BewQKWY³éšm~…—x§µ4ª 1óeY ¿n<|)Þ»8ž ü4 .ÛÅ8;b”é ͽƒyP-w”.‚Âe©Nø tºõ­É ÅÆ}WA:M\ùé]ÿþéÙ³Ë,ýq:yz²…Åy«Nk·"Ëxß?Í®ÓX‰BV «¾õ½åR ¿ê[òÞš –ù n+ÔMÕâv“¦™(›:|Ö ª4Y†”´yIWÃÅ£÷qðQ:E¸ðæ§¥½óÑß?Ý»÷OG$±ß´î¥¦Îú?Ƥ!ìø¥ë“èh·ðÍOÇrÿt设.$œnuò»yAv’ØïŸÞõþYã0Ú4¬¥OËt@³ÒOë£Oéê#Õ“ãS§3à #ÅÓß?]dݯtkŽÄ¹éBâi|ÿt=˜÷l»Ö­ÄÒzEÓǪ̂Þía R< Quí¿xJ·Kß»Ø  ¨¨¨±¨¸Çã%’6õþé]ŸŸÇ2-ãž½ô©AX”¹ñY çéƒv2?½ÛõÜëç22sÌuíσ HÇðýÕÃæ§C˜wÉÜp(€(EÛu4eœº n5sE8ÒÒÑ%æ§%-Ý.žÍéBöZMå§ûáþé ¦ÞÈÁ– ® P¤®£Á8u)èÓs=ŠO¾u`4h¯5p÷O‘w^}Ò „¤5eœ…¨{IzL‹·£!áb!Þ© ¡ùih2ú¤ýO£¢¢ö±íµîù޾̾'N<•{I«e¦!{T;õ=w,Û¡Nùµ¦CøžâQ!õùÞ¨¨¨¨=®A{­Hº?Ÿïíeöí|borâÄ„µi'ö$ÒG(QH;‘Ié>åÏ3’ŒX!J¡ø\$ïÓ”3¼ I¬Ï÷FEEEíq Úk…GÒývÿ´—Ù·çRI-w$gVÌI”î•3O¦‹_•³'ÂÞE=T{iüPýï¡þ‰ ÜK…bSQž˜88ˆß.ö•Åû§©Kç.Ïm? zôèûɳKe}û@ûæþéÒíÀ2?š}+¯ïKŽ·6ÍÄž„qÏЇu}8õæoÃ&i}°b;ð9{`gnvü(z‚÷O+„ÅÛ±¤/)Ý.edJ·K!{­¦îŸîÝütæ@à¿ f§›ÃãGÆ SÝ“(Ý-ëûõÌ~½©7s ñ"ÅÓ˜Ÿ–¶ ‚ }Fþ½<3˜Ÿ–™}+Oíô©ç³×?6S{S溙ٯëûR_DÝ2 ³ÎƒLƒ'žÆü´´Mé3ðýÓþ̾§•áSϧoÜ(k ,|\N=žJ'c‰¤}_äçûú<Ä‹OÞ?];‹û¦F¤§Ùk ÜýÓó—ÊØ©gWn˜ÑLÛžz5­§T5ê,íMN{_´ç½ÏŠ—4\| ÉOC“1¨xdÊß$-¾Oº5èÍÓâ,ï)™î–  óÓtÿ4ÝJåŽè+_„€¹iN½š>ݹ;—Ÿ€µ[k«…U98¥…®¨¸¤rï­€Ý5‚´÷ýÓÐ^~ºžïmmÀÒ ƒ¢=fˤö¥zê±Až¤! ?Ëó½½í³È•±vkê[Φv^ÈêHŸ®ÝZã-0/-%¶¿vkmäàkAìQ§4~~ ”OéV ‚ íûû§û!?M)¥öúãÉ̼º»·è\~ÚÛþjaÕaó—}Êê³B±¾ØZPûâRì¿Ò§¬}±Gß–¥3XÒýú]/A$0?]åÂÙ%B€ [S¯MfF3Ý"Ó¡ü4kgÅèÙ7Ú–rØ 1s,ÆÁb4ÌbhöiÐ1Ä1„¬;Ôç§¥Kº^‚ H\`~ºŠþ¤E]˜þÙd·‚ø³ùi%³XV<5M]ʧX1‡Í#]Kg•¤ˆ9(ÂÊ@‡ºÛÏ`!Bìùé]ÿôÔÙÉ7/åÂ똆µðÛBþ—Kóï.-Ygg††ä§¡>²l??-剥OÅ©š×ç…bT4þð(9zMoAú ¼ºy¾sÝ6ÖmÇ&Æ=XþÔ.Ü)u{LÄÎä§F±|VëKùcC³ržçæñzPûA#‘"ûºuÙµg°‰æ§#a™V鎹øÇ¸„Ö¢·â—•nk€èh~Zª#]kÍ¢g~5Ô_¡í›Ûö¶)–ðö¥Ö¤¥ø|ïì½ùiAú•¸òÓÊnÏO‡0÷Îç´¢š[–¦¤lw™€JÝ4bmZÝÚ!EœÙÑ,{S–o~š­ª˜“ö–•ðú«…Uß–¥ro/[ã%AãìÆŸAÀ›Ÿ–~û̽)«óÓ!Lÿ⸵åhJʆe¢¨i¢ Ð|^AtˆÎå§w»"Ò—`~º fß™K²)P ÆÁM³¸-µ—$Gwhx[*t2?½«µ/Ï`!"W~ºwß?Ý&ÞšÕ“zîXγ¯ÿÎ`G(¹º¾_KéOï¾\|ÿ4Zº]ºøÞEßÓ﨨¨»WÅ=/‘´©÷O÷g~úÂ[³ú>}üHÎÚ´AÑ£Pü’NœHgøšKûòg>HTô­ =yÑ[ÇÛΠA;“ŸÞízîõs™™¹æºö‡A¤Ãøþöyyôüt?<ß[âÂ[ùô°>þlβmU!Ɔ‘ÙŸ.ed¥‚ñ¾*ƒ—p#MÏá>¤AC:ºŒñùÞ»]K·ñþ@égBöZ}ò|ïBJ·ý5„ ¿žM'³cYkÓŒ CKjúpêü»ã!Kù>âØû!oIéw0çf)žÌO£¢¢Œíµú$?mþj¯ ¿ž%[ÙñgÓfÅJh ãž¡ï×õ'Ãh6U{}Ì#ã¦G6ÀHñ4´—Ÿ.Ë´§©QQQQ[VïÞl@óÓ~=KìløsìDÂÜ0“Ú¾/Ò$ÍðNÕHûPá¶—Ÿë…Ÿ***jËÊ÷uÑóÓC×>º¶ts‰ºÔ÷’–ÒmÈ؉½y›ý^xk–lf'N¦WV p uéÄKº>xÕ˜DÈõ_àw)LêÒ" ³×ƒÀÌÙ™ü¥<éØüåüÌ™^]ó,– ‚ô%ùËÅ™3SůKÔ¢u¡ðM1{hÔë‰Krwôv IDAT7/²y¹wóÓÑ™ûí¼¾'—;©WL [öÄK©è“4<¨^ø@ürÏÒ"!gÑZOCùiTTTÔþЦòÓCW?ºº|s™îæxzþÝÂø³úò ƒº@·ìS?I$Å›¤{o<ÍàQ5ÆÓ‚ b<Is¿OWÏ›ïæü´qÏ^þÊ @“i{ìùdj_ 'éÞA<*¤í½µ?´©÷O÷C~zöì2KÒ£zf4ÓÉq!MƒùiAÆ€æ§gÏ.S°RÓÉÓÇq’îAÄoó˜ŸFEEpí“û§#’ØoX÷ô©³a1Aº‰ïþéÁT|8*ênWï¾n°îŸžþÙTÃ:¦a-}Z¦›š•~Z*ìÀШ;*¤ø|ïK ²) ™¶ß÷uøþiÌ{¶]Ó¦ÖFbévéžÑí1 âQ!iïýÓƒ©ýüÛD@ÚãçùÞýþi°L«ð'céSÃÚªÆmàÆgøþƒCЧóÓÍ+‚ »ßßuSùé‡XÞ­è(óï.Íýcqñ% JÙ†åêÊ–Úí¡ R< Q5jˆ"²{ñý]EÒ¢ç-ôÃýÓAL½‘ƒ-W¥P¦®£ÁxuMûp]{)žnùþ鑃#ü_/ĸ;¦Û÷PÆúÞ¾WA:Šÿﺙû§û9?w^}Ò „Õ”q–U÷’ô˜²TÈn ÷h-K~zäà¬ÝZcÿg‡×ï'íåß&þ"¤!þ¿kÌOÀìÛyBàÔÉS¹—4R‹K²GµS?ÑsDz±w‡;¬ âÊO‹-¬V¹çA¶TB]ê¿%ïý”µÃUlÇÛcв’÷=+à]Ç òðÍ;T#¼Ð·šw‘¦ZA 0?íÏìÛùÄ^mâÄ„µi'ö$ô#QH;‘Iéþ Ù+…ÔçêwXáûÄ"®ü4Œ гÅO‡³‡Y¹ok,"gÄ蜵ÃÛáíó°>|YîyßÑzóÐÑóÓì%l ñÛ(½Æ·šo;¾µô6AD0?íÃìÛs©¤6qt¬˜ªBJ÷ÊÙ'³höD໨½»6ðÛy}$í°B@bÉO‹“Ÿ¡õÅbn¦<º]»µæÎ%/Õa-ˆu‚¢|iÙ¾|[[»µ&ž'ðæ§[¦áTŠs-‚tŽöóÓJ5?Ý{§¾K·? yô÷ì[ùÔ>-w$gmš‰=‰Ò½²>¬ëé78I‡Ðr®ghŽo~Z|:OÄû§y µWŒb}û¿xTйƒÆâydܲÞÑîL~:–/¤t`Š Hæ§½O"“òÓJoæ§[{ùÇì¯óÔν”56ÌÔÞTén9ódº©QK„ìÂwU¸#ãH1%QËOKOçំëja•O®RäÊëˆ}ùF±¼ÎjaUƒ·Ž×³‰Öw$Q¼4Ú†ÚÜæöƒàᾦX;bƒ‚„#íß šŸÎú>‰ŒûþÌOϾ•§öð©ç³×?6S{Sƺ™Ù¯ëûš›¤1ŽXòÓR67¤eo Ä™‰’ Þï]Ç ëØÙ½`~ºÊìÛyZ>õ|öƲ¦ÀÂÇeýñ”>¬C´'š°zR”À ½“·÷#1²àW~Z¼Ršçqù,æ­Å~ƒJxÞZºÊÚwÌ’sÞÌD\Öw´áã”~›CPÿMã_Ý /§tv8¾-õÕ°5dú9?ùK elìÇ©•¦F4sÓœ:“M5I‹»oaÃ~:°Ä›Ÿö¶ì-K¼u¤8[,—®+H-„t*µÒfÐx‚òÓ¾_ªˆ…!%AßÛ("Âi??Ý÷OÓ­Tò•A˜›æÔ«YBHË9i$^¼‘">ß»YEd÷âû»¸û§­ XºaBˆnN¼”IíK%Rþ7I#;O,ùéWAv/íç§wýû§€RJ+”ì·Ò§3ôn©CЧñýÓM+B±¿œÛ§ÂУG¿‹<ÿEsýýÓ»>?}áì2!@†Í©×¦º=Ä)žn9?=°:óúLæ@fÿ(‚ì0ÒïºŽþ¤iÜILÿ 'éEЧI{÷O¦òm…ŠŠºÛš¿zèêGW—o.S—ú°—n·øÈaÌœÉ_Ê@évI,Ï_ÎÏœ™€‹ï]$ aA¤É_.Μ™*~]¢.¾)f‚üÒÍ‹l^ŽÿþéüÛssï̇h\!»ZO·üþiTTTԾѦöѵ¥›K4¦x:ÿöÜé3/„×ùðò'3¿œn¢Qd7ã§y$ÍÀxAAŒ§C"iöév<c~zîÝ…Óg^P*ûϽüW^~úÌ Uâ·‹y¼uÀµ©û§*$·Û„(„MÏÇO' ™81ñÂó/|òé'L?[¤.ýü³ÏÕ„Jð®ÐAü[“úû§Å«¾»®s¿›£Ý¾Àµ/Õ»¯ ºÒ[ô|ÏçýÓÔ¥`”ͳ¯½ôÁ¥ëŸ^—*œ}í¬Q¶ôt‚úHOöõáxkŠ8nfU"5ŽDAü[ÓÞ¾ï}B$v Å‚÷Ò­û§ù‘Bvÿø•wÇÖÜðM|Ý…ÔÇÓ=~ÿ4‚ H¼Ìýn.{)+ímºö|oÖNê‰lŸ…‡ïÓ#÷›SEÏ*x_BÅëH/í ‡OôF‚ öROCoç§AâÅwoÓµç{³vÌo­Ô‰ó¿ü)^yãÅó¿üé+o¼xþ—¯¼òÆ‹-Ç.lÂfH³,+”JÄÿzÏ¢5 ÅîBª! ‘âi¢jèvôŒñ4‚ Æwoóó½ Eà—‰Kš­«Éãió[köí+¬äÊ»WkõYp»f,xÒ¾/£”¦êðF"ö…D!®ü4ß3cíÖZìùiÖ²øõºÜ!è#ü† "!í߸-?ÝÔÍÓb<=yròýw®…°šñÊ»W¡“± vÃw—¸3ÝIâÊO3ØKšGŽŒa>ʲ‡³‡ù² { :7ã=Oãý/ƒ@DÂwoÓµç{³v¦ÖÿÓ<üÛìÛïuáÊ»Wy$ÍϹõ(βQf܆ ]GЧI«Ï÷[½g¯VY}>1‹Ÿ²©•ðšÞxºYÄ/~÷‘ð§›z¾wüùéùá›ZÿO±ç§ÙPJ6‡Wf^ZDl'bw͉+?íÛ›t×n­±X™Mϼ›˜ÙGP‹§¥‘øö¾iÞËZÝ$‚ ;‘ŸŽÏOÏÿѷ«%Íæ§¥=cÐG +ð <¼‹#VC‰+?ÍZàñ1ËOõ"Ö‘âoßHZ:z I6û^Ü ž÷ni#!Ò·„ä§ùÌèï;wÿtwóÓH¯Ñ‰ü´oË}”^|“Í!ÿå¡6Þ € ˆDH~ºöf~é?:‘ŸöFÀ!>hÙ†ù馒ÍxŠA_‚âéè{¤˜Ÿï µütâÒÄûï\aùiŒ§™ütSÏ÷–Zð-âïýnÌ[#"!íg.¾7e’îT~š&9Ÿ=”x½÷Å÷.²yù¡êìùi¤3Ðúx:s ÃJ|óÓ¨¨¨¨ý­?÷O#EЧ[¾š½gZü'}ê­ïm'è{.¾CºMblªå6;1AZ£åxóÓÈW~š±vký€ÃÙÃâ§#G¼õw>?Ýðµ˜8‰"È@Ñr<ùid‡ˆ+?-¶@]ʦjU3ÄZª/•ÀP iÀAåAHõ%ãû©Ø¸ow!…‡×ê•Hãiª (0?ô:qå§¥¼íó™;$žæåCCCjH3/²váõ½½°j¼²ï0|Ûä…¾ÓaçV§aËl†‚ 8˜ŸFz¸òÓbkÞ’EõýžG9S-a½#µèMunu‚z‰q5¤ÿÀü4ÒëÄ›Ÿ‰§¡R³¼µ·~ËßóÄÚ<åÛÎdÙ!«ƒ Hì`~éu:”ŸjŸŸýöÖoù{€¶yÊwççËXâiA"‚ùi¤×éP~šÍÄk·Ö¼Ÿ²©Zª/µ#Òp¢j9íÊعÕA¤0?ô:ñæ§ùÍÓ°ZXõ¶BTím‡Ïùùjv oA,²v¾ø¶Æ+ˆÁ·XÁ·0¼ëðŽZXoý –‰Hûùi¥šŸÆSßHgðÍO×½=&Z~ZŒ’½í³O½õCòÓAWB55y+K%Aówô ‡ËêøÖ/Á Ê$ÌO#½N\ù鸴?ÀèAv ˜ŸFz¸òÓqéŽÑÑy'iÙ-´ŸŸÆ÷O#EЧ»þþéB±¿œÛ§•УG¾£¾µýkóÓHg‰+?‹Î¼>“9™û`nÇVAZЧùd¯`~é(R<Í"éÌ ‹ª}37UÞ/***j/+ßs]ýèêòÍeêR 2N0sv&)¥Û%±<9?sf.¾w‘(„yA>&9Ÿ=”‹Rùâ{Ù¼Œ÷O#…ÖÇÓ-ß?ŠŠŠÚÊcåÆ5kóòе®-Ý\¢O#ÁOóHšñ4‚ B‹ñ4æ§‘Ž"~»˜ïîýÓ¨¨¨¨]Ôèñ4ÔÀü4ÒY0? ÂÀü4Ò‹ˆG…óÓ¨¨¨ƒ­˜ŸFzÌO#‚00?ô"â·‹yÌO£¢¢¬b~é9:šŸf/¸ôôr­Ö{i§eÞÎÚ­5þþì6ÇÖT×;Ö‚ ¾`~éEÄ£Bw~zíÖÚja•O?̋漏¢ì…Ö!ŸŠ-‡ÔlØ o‡¼µµŽ¢ü-ݬ„÷Û¹QQQ£(æ§‘žcgòÓ¾ñ¢¿z Aˆk½ÕBš jJZD\VŠû½ñ´·‚Ô»¯98â» A%¾Ý…AÁü4Ò‹ˆß.æ;‘ŸÛgÊãWî©Kù $ƵlÙ èÖÛ²Ô>ŸÅúlååRÄ/µ,Ž*d»I~äà«/žEךµé]¶©‘Çø7BEE¥-å§êyä7‚Ä ~ÿ´øÖ¬(º²²">¤ž“ú¶Ò;SQвAíDlêƒÑFÅó.blÓwäåb™vòe¨¨ý­âžŠ—Cð>‡x~Ñøþi¤³Pá¶ýþéôhÚ·œ·/•ˆ'x©KùI]6U-ËU\6¤Çf½Ôr;žµv8{8d›·9Ú mŽŠŠÚPÛ:Ì­ÍËUß? O#ø½Ä£ËÈïŸf__ßOžĒµ[kì/Ó±Aˆ·ì-oÖ·ß‚èÙ$Á·?ZTTÔÔ»× ÙÉ5kó2æ§‘ÎB=±`Ëùiö÷ýTl?¨„+ŸÒ"Ö3µR6·5ô©ý7,ߊŠÚ²z÷Z!û1¯2¢µ¹A:øíâljި:ŠÒfâi6ÅÎ98Â"N¢æùu[ÞšÞ–¥v|—[ Zkïy ?bâ rÉó‘°B¶|Yñ”xk#GEEmY½{­ý˜W˜ŸF:‹xTHÛÎOéjaÕ[Î3м}o‰·f”vBÊÅ‘y¾¬w)q[‰åb}iÙ ñ‹múöq䨨¨ÝQ¼Ùb¼zee%â}‡»Ž¸y† HO!íµðþi¤¡õ1"t&?½Û•ßO CEí'õÚ1ðùÞHg‰ñùÞ}O#Ò—ÄOKçÁ$^Ä£BÚÞó½û8žFEEíKm'žÆü4²C`~AóÓÈ.@üv1ùiTTÔQÌO#»ÌO#2°`~ÙˆG…óÓ¨¨¨ƒ¤˜ŸFv˜ŸFd`Áü4² ¿]Ìc~u@óÓÈ.óÓ‚ ,˜ŸFvâQ!Åü4**ê )æ§‘]æ§X0?ìÄoó˜ŸFEEÅü4² Àü4‚  æ§‘]€xTH1?ŠŠ:HŠùid°ÃùiÖû1Di³ÿÀ-ÐùËy¾ë<÷ú¹n§×ÁoW³ÄO+˜ŸF:Šøíb?o–Ÿ. AGš­iþrÄÃÍ™×f(йæx_ý­s—çØúò-0ýÚ4Û&²šÒ‹ï]”¾0Ó¯M ùò¥Û¥^aO)þ¾v^ù¦V¼E#D!’' )Ý.ÍýnnæÌ /‰¢ì»êûéÜïæØDÌ‚ç?ÈÀôkÓsÌ•n—‚–=œ= k·ÖšúÔ·|äàˆïFX»µÖÔš¶ s¿›cë+n¶M‚¶€w´ Ǿ­šUÖšïæêè¶" ᑊws±3@¬žîh~ºP,ŒáÿJ·K…b·ƒ–jíSßòµ[k«…U¶ãæW «QÖŽ+|ôúÒKØ_ qÌ û ßVÔ¥lðG+nq$M­uS=JëÂâfqëI%b/â[ë±Ímۛ߮ߗôâóekÛDün°¦"~[º»Ý¼{­†û±íšµm«€ ãi¤cˆG…Ä/’¦õè’‡²Ø¨t»$Åg#GÖn­Í¼>!±cm¶Û=œ=,_KÇà ËÁï(8è¸^Œ¤(בÆ®| ø~zîõsA[@§w;ð±ñ’ ­!F<|ˇ¬u”-æí]Úþk·Ö|{l¨,:ôý>À¹×ÏùƈҶ §oäÍgz¾…¥uáíûF¢=ûí ù}yÇ)•H[ üWÆãiq-|·sÐ7a‡·´OS¨ÎËxÿ4ÒY¼Çűß?r6¨µ#wñh=Jy”؈/˽7JcÇþlÙf÷›]ß ¥x Q‘ïÖ<[*d­£ŒÄ·wqû³6½=Æ¥¾[ÆQùŽS¡¸Öì¿ÒÏ(€pÀ½yÇÖÑoWÃ3RA*öÂ×Ë;濲XŸ{)2Ž>¶ÞnÐv<ÍÇü­ÍíÒ |dYT ‘I!ô8”uõ¤âÑqÐh£ø(Gî!íŒixÔßPãZÊ;Îv¶Lû[ÌÛ‹uÚ_÷¦¶ ßSÎöý{AЙ ^Â;ja[uèÛÅ_­mIïUñ~—Äs9áñîo7ØkíÇBÆŒùi¤³HG²ÊO‡÷²ÏnB@ÔÅGSÅzâqºuEÙu[¦Õˆ'hœâö ßÒE¬=~ËyÜ)Åš­­{³ÛSŒÞ¼Q²T_ü^…l™-ßì¶òn績]mna/­ýÊ··ý^Øn¾{­ýXÐ÷ð¡j~:8"AvŽF½‘tûùi–ÍȈ±Ôb— ì;ÇÿùŽ6¢~ä.v'F ¿‡·ì«,G˜9ñý4$¿4N1þcÿ‚¶€w¢Ô‰8©wR×Fü[x•e ³£ÿ{gìÉmÅáwÆT—ÖE€H# w°Ö)"wq›´ir@Š1 Wú;¶R„+‚Kç4qî:©$‘VÆ Z8*ï:§ [¤xÃ%gf߬–»;ÚïƒñÃ;j†äг¾y²_ùW9_½ÎýݼžñÌä¼5ÚúvK¿»Âï«íÝþÅ/½§^o[;NY©v“ûÓħaAä£Ñ¢ë{‡¨RIŠK·Œµƒ]çMN¹šÿµáøº8ܼ´yFn°ãXÝC|¾Ù®ÅÞbq4wækû¢Áƒ··Òlg­øÝÕª¶­ì©ïr’k ±ÿ•j·¼×²ôcI¹¬ï eYØúÞy>šf¢Æ$ü(Ñœ ‰¦z&¯Âòô†¬’D%.%NIŽ¬Ë¿’V-”^Y\]…“ÖHÎM*_wyA n.]‰,^ƒLSÂTðÊJ6”.5-#57LrbåíWYó®Ü]Í?±©5lh“ºÆl¾¢¥´Û\Ö#{òõW_¿þ×k]…Ç^6€ýÄEî¿Uíïô“Õ‹t­Ã‡!¥N¯/®7w6ëþª¯1u.'.¬Ìµ>kKi è*QÚøëÖ­tëéV¸aôžÑ>Õµý}…·AK¯I¢I¯58|öËÏú±X_½¼[¼ˆõ½¡, ^ß[;_¥r˜ÿè¡ZAsµb5›ËâL/ öŸ†à³èNÑø´®‘Öáš¡”®+-ÐJC[Õ­D†®þÝuÕ~}±…iÞkYú±  ñi( ûOÀÚÂþÓÐâQ¡gÿiE×IâO³ÿ4,ˆǧVâÓÐâ»Kí¢ñiEÑÕQâÓЈOÀÚB|:@<*ôħQ]'%> €ø4¬-ħ¡Äw—ÚħQ]%> €ø4¬-ħ¡Ä£BO|EÑuRâÓЈOÀÚB|:@|w©M|EÑ5QâÓЈOÀÚB|:@<*ôħQ]'Í{­ÝÝÝÁÑàøèxp4ÐÿêlâÓ° Jħ_‡@¾8,sAVrZûC {Ÿïés¹G|Šß]úÕøôðbX¹±hó°rt9Úzº¥; ÛóDQ-­"z¿©G*½< `ޏžKl×s£ËÑ«?¿:Ø?)Õ{5¤$ï˜׉ÿ¤ÿ‰ˆ\½¹Ò”ígÛúÏVuhPÍ?&”e9ëêÍURÃÙ´òºòºÙkˆ¢èÌšôZmU!> eñ“þôbâÓá~ŽÓ-)Qå|x~õæê|x."úÈl8+.=©CeJìq&>wž¢¾oâ³&ù_½¹Ò[]n¡Ä8Ï䯚‰LúÇy­¤Êcn¡Ç)±OŸ—×Mk‹Ž¢Fµ÷ZçÞ÷c|? e‰ï.µóýt\âԔد ^¦&æž±þSÓí%æ¹%Þme‹…‡âö³í†Z%~y^“†z†s+K‰}ýPÛ¥û((ÚmÕk媟†²èØ0¶ÝœâÓÍš”85E2O±®þrÿTk›ÿ v(hæ|ì-“ç0õŠ¢ÍÚÐkYf(ħ¡,ñЯj|:<¿9¤T^‹=cnvÛž±ž!CM Þsð°-9£(šhC¯¿ý Ä靖OˆG…n…ãÓ!¼j¥Ù£µçoÉÍnÛó1Ö3ÎPÓCƒÄ^usÎ(Š&ÚÜk…_™’Ìü > "¾»Ô^Áø´jxVÕß*=Ä}ígµµó|r?{¶–ÉÇûÍG¢(Z©S{­æ™ ñi(‹Ž cÛ-)>¦J…¿æ3±%ò,u¨›Ï…ÎsŽÓ+çs³Ø•ùÄsËõ[&œ×¹ò*â#çøÝ9Š>bµôZ•ó]T•ž#> %‰‡€~ìû;}]‹§2>në©:ºéú·ÿÅ=i‡“sχçyn:’u½´&yúDôÈss)Inquv]mÃ1 5¬ûk^óºk émÿ¡(ªÚâ·ÃúÞ° í?½õtkêñ –,€Êõ½]ûOÂð“þ´Ì)>=º /†ÍÚ6EÑùjÜkÍ  ûOCYØÖ–ÜŸ>Ø?°ìø§z·_Vò`¾Ä£B_Ÿ $‹1çöÉÙ‰ç¥/âDü}:666viûÄÒGåöÉÙI°÷ö÷Ddï{¦‡ôË;ç™ï§¡,.šµè꿟¶ïÉ*"_|u°ÿ|þuÈ8= ¿»èüiþ(ÝÝݵ̕QÂ;Egœ+~ÿ°ïÿí?}ÈCJ‘øÓ®~ÿi㞬á¬ÓÓÇ£(Š>P7w6“êeì»ô¥·½ÄÐs~ ÷«A”ÀMúÓyÕbWÖ©Ëînß±±±± Úáñùð^«•*ˆ8?&> ¥ð“þtÛõ½“õ¥}:—RNO‡'gØØØØåìØÇªu½–}/ƒp¼öœwþtx0_ܤ?{Ò ë{ëªX ãMç~ú‹0òÅÆÆÆž£ífò§+û.û^áxí9ïüé‚ý4¬7~ÒŸó÷ÓÉNÕãÍ^566viOºõ—Ð’í57›*ħ¡,nÒŸ[|:^_ºÙŸ^…766ö#¶gð§•©oùŸ†²øIÚŸÎs¨ó§WaÄý¸íüé¼#> +JâOãÓùþÊuþôŠŒ¸±±±¥ý:ßOº•?M|DâO‹9>ì]çO¯ÎˆûñÙ3ûÓ•ûI·U…ø4”%ñ§¥Í÷ÓÉh4WO|»°=ƒ?=µï2ªB|Êâ'ýé¶ßO7I1ƒ)ƒIDATWdÄý¸m߯Ÿ®ëµfŽO?ùÕoþ´ùÓ‘g¿,(ƒqÿiûž¬"rüòâ`ÿùÅ¿G~,®'(Š¢EuøÝEÿcŸï××v?éÇÆ^N&öŸ&> %ñ“þ´DžôÃÕõPE£í¼á¹¨Ò»›ï=ö£Ë‘z6¡B(: w[C$F#Öö<G'K¿.E×Gÿù­?9;ÉÓ÷>7mRézNDZõrñsÚù±?|q¸õt‹WßP”êÛQîvÐjµµ%Àšp7ßÛ¾ƒ&À̸šoû;ý%× `UyòÅ—ß\¿½q"Þ¨{¿uK¢(Š¢]Ô×gîæí{û3·çåvssó£Ÿýd£'·c™ªÃïß=ÿý¯—=¼è$ïÿ;Üüù‡ÆgîíXz"~|{óƒx¹Ù¹u²Ñ`ß¼}ÿã»å~þ›ŒÛhߎýÍÞøÌÙxò‡/¿q=ñã[×Û¸ÿV¬É¾¾¾þû_~·ìá@'ùë?n†ß¿3>sýXþä ùüÄ%¿ÙIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/modify.png0000644000175000017500000006047712032647161024202 0ustar ebourgebourg‰PNG  IHDR‹h°°&ñ IDATxœì½hWšïý(Tà8P t_PA î–m¬V‘ÞƽãËZÆ/ØN&JcŹØJ7öÌew3sÙ¬'ËfåÀ;NÛ¼+&Qv"çåòæ"/d_i £î`[݆J±Õ0âVñŽ˜:࿜î£Ó§~tuwµºÕý|0ß|sêÔ9§KÝuê©§~ =|ø¢‘yzæ_Þ»¬*ÄqAUÀq)zôªBÚc@=úþõŸ¿^úv.â¬çeáÓ…3/žiyõùßÎO½2½¾b|o…Õÿn*|]ÿž:.U>0ú]î¡Æ€~G<(@]J .ôèÒ(Ý)©Š8ëO…Ô¥í¬Îþ7úê QuiUIÕ l(„¨ý°ÀØ0 °Iûд¡Oµ˜'$Qiè÷$*[ôZ¢bW}RKA~Ë"n¨ß›06ãöÉm¯‡y‡¸ÕïK˜bð)³bµæÓÃ)cc·z»ÿdÊXß…~Ê} |t\G%ªã:|¾¬Î†@ êRh¬D\ ªR]ËGÕqIxgÒj7.¾´©ÞáS7!„y¢êlO›Ì«…`¹—ö¡WÀÙòñD!õÞâÞòõ¤ÞÛÍø=þ^۳ݦì…:÷šÇ»¾ÞÙö›>>¹—TZöÉD¥²í0O%¯‹~_½ßphû~8alXÛ¾Òœ/o4ðéNø'»ç×ãöâ÷£^OÑ£—=‹?Ù¤¨•y>DZéyh¼„͉ÑÀ­Î¯ª¢‚Rm'A¾3iuÞd"”Dï]á±rPô¼}Ä¡€8.U8nÇýìßNÀ/þ©°}Bœ­ªWÍÙ²¹·zRïíF^Ó¬-[ueŸÐ4Ëöó{5“y`žª.„{{ÓÇëI­Ò”ß§U*ª>U©XÑ}¦ùøŠ4Ô׎vC|öÉT™û©òúNùƒ©òý.ø‰ƒ©bSþˆ^¼gÆãï›°«Z/–;ëË5ŸÊÑ£ hkÑsuzVðèùõ ¯ƒ—ÚÔ¹ðé‚4·z{Ÿ:;óÍóÞ§_›€…ß. ýÑQUQo|tƒ°ÖϼxFUÔÏ>ý¬:>JÿÿóÒÑ禅3û„ûÓ'Ó'Ž¥œ?Ãë¿$–·éóÿ<ÿùíÑÑÉÖÚÉ¿?Óo.sošpù_–Y©“鉣 p`æ¿/SZ[—î„hI-µW]þ£‘ šEiµ|fm5ã5ÍÚ¢dŸÒ4Ó×ïÕL»±·lÊþ䩤fmV½žÔÌ@Töû4³Â}Ò¬P¿IÁ¥Ô¥éá¤QiÕ?™46øì“É÷’¥õfüÁdé¾à×)P¯×Kë–×OÔ ý½p?~_¾o9­ù§ôò½˜}î)½»F/Þí¶N/Ѻ_úÆ\Y™/}›7¾7ØÔñ2,^ró‹›S¯L‰«OÚ>éÍO}×ü'¿ýD\}ñ«Å3/žWõµWùºó¿±DaóùÔ+S ¿]àÑsõZ5žÿ›ç?ûô3vlj¨ÔuTênûÜS)P²Ç²mâ[§%Ž Ô¥AýFðÅâbúÐ8ó©¬WŠš–¦®5úT‚u±òíb:£®ŠJ·ªë%anY³oLÀâÿ*Ð=Nµœ$LÛô÷[&¸¿'aÚ&¸*G«÷†¯×Ʀ¿77mê‚èmo¬T}joÂØö)¿/elÚ”Ö|Eô¯×‡ë|y£‘2دWý(+ßgô@/l{½°îçÖùÒzÅÞgâ ^ºïçHÞðõ…(þ^3þ©hþ¾aÛ²ÏEô÷šñÏDòËñûÌò]?ÿlë~²_DÞ .¡›ž)P¢j ]Ë=3¿­àH%â™i^Ÿ÷.Öœzeа’G v>ý¥×^6=«Šª‚*Ca ÜöéI5—~9Ó§²t‹²òÙ_äfqbôHrþÿ:ñÁ?äR{SÔuô}©Ù¿Ÿ¿vbþZîƒ_œÐ‡5ÖÎä±Ìÿcå7~uBÓ;GãO§oüó‰ùk¹Ég3¬ßÔ>möosó×r7þùÄÄ3º4ÑW?+Pæ-Ë€£O ÛÔÑ÷¥ÔǪç+@!Ôuô'S³?Ÿ¿vâÆ?ç&ŸÍØ”Nÿ$ < ¿=£§Rû´Ù¿=1÷þë—„Méì/NÌþ"÷â©ìåŸMð)Ù¦”ymOÂÞÚö_¯%ì-Øöv€ßêuÔÞzoo{sÛ§L›V}²ÞW(¥²×÷zcCð¼|8ЛµúiÑ?YçË”nÕüºŸ? —×m¯õx›ùƒz!Èß÷óGû‰6ý½hÞê²i{Û/ßo΢ø€¾|}îÑgÚ󦿿ëçŸä—#y =z¯'@àA“¹gö¿D!<-æž«ye!3ÍUº®‹MðbïóÍo×'uë.|º ˆsþ™Wj·y¹Õc‡Ïn~ÆŽ&ljºe Víl>¡`>:ºôµ±t«h§³OëÔ]$t˜‚•Ú ð(LŽ'–¿³&žNL#W®SJí¥[ÆÒ¿¯äß›šù‰þêÅų/Oœ9©›¦óö;‹ÖÍ kåû몢< oÿ×—þ½tâxæô±äÜï–ô'’³?Ë9[péÍ…Ó/¤g^É,ÿa¨ÆÇ#Ž­6Cݲ`éß‹gNNLŒë‹·VFOé…¢•N€@©FÔË糎 3oÎOÿdbêE}ñß ó¿/äž9g¦óôÏÖ—ÿú¶ØïÔ–aKÓ4PUÈPmù¥ry)ÎÙ›&¸„²+®k^Û“¨lZàªiuÞ®XìÈ.ÐïMØ›¥UoVª>¹7åï“)³bnû ?¿oÛëûRƺà7LºåñÃõ~}Û›õÞÞš>2¶½nÜüºiÛ@Óƒ}5R¬óãGôr¿ççŸ öwûÂ=ÃÞšý3íøt/ÝmäŸM—îVìMÇ×Wbõ“Ϧ ߉Þðñ? öwJ¥Uÿ]#ÿcôè[÷<]šŠž¡zm–ã:â=PðÁ‡lOö•Û/½øÔ¢gñ®(©÷êMÒJ]<ýÉGŸ…<²ðé‚8ç'”D5zVà³›Ÿ±#…êT3š@]»úö&2‡óŸ/“=Úâ×exñ¯GÙDÁxõ­ü•«7 ÷TÆúSÙX·æ>_¢IÁд„e“?Òàõÿ–_ú¦\.Û‹ÿV¡ŽS Þ¦.\ùÕû7ᨚjÛÆÄ3:< ‹ÿVXþ¾\,S}R³hÅ;6ð@)”ÊæÄxÀÊ=“YüºX=º’=’nþÏBùs©h@zì­j#†aœ>uš÷[þ~»_UxýÍ+¿úõ§©ÇSö–.P×&{÷Úbo9àÒª·k^#¶íPî·üü^bÛ¥”ºvroBôÛªúd½ßlàõ}‰JeÛ›õ~‹R×Ö‡ë}eÛ›õÞÞ¢ÔµÓO¦Do¬ ~ìó6¥®]ÂCýèÁ:_¼ßÈI×ßf~üˆÞØ?¥—%¿YõÑßkÇW|ü3zá^¥ÒÐß­T6-ÉçBü½FþÙ@¿Åß ö•–üüýäÒuþ;ôè[÷´v?ôöu×µ›•ªÑ3!<\®FϤú¿ª¢ªD¥.ese5ò&ÕÈ{û6(R «£µ6“úô.EÏ*¨l-n|tcê•)ÇuTP«“ÐÏþõ3êÒITg~ʧg"jî¹$Ì]Û~HÊéãùßç)‹€ ¨KT ”¦$þþ3ªæ¦P ”ª?T´ÇÓª¢ÐÄc:; p°m;•‡”œ9•=s*ËzLh*8@ylÂ$]õô½µbdÒ©©SÙÄã°øMaæÜ8QT tøq¦^ÈN½PmVO¦–¾)Öú-á×ïƒêùÓ¶õýG©k³È˜ìÑì-»=kö­Fâ×4ÛüVu×ù½šmS%WlËßonGÏý¾”Q‹¶‡÷¥ŒM‹EÀ²¯Ôüp7+–íñé'ucÃô÷•Zd,úƒº±ÑÀÑËëÍø§ôòºÉ"ÎѧôòºeoRzô©tqÝä¾ìëŸI—÷ϦË÷Z÷…Z;“^_iäïÕüzÀÿ8]¸ëãOÿxtù®¿‡=»>‹‚ T¸ƒié륹ßÕ=eL­eHϾv6÷ãQ+aÑ3 Âyä]{ä à¿r›ºrïÀÏ^³è™Í)ÏÿÍóŸÝüL…O^}åUtö¯Õè@8ÿÎíáÚD!Uûô3sŸ ,²uÏÏËLÒŒu¨® 4©¨æ€éÌOÇÕÇàÄÉ˦mÿ¿‹³ÕaY & ½_§[DlÔêsX€{Û¢°ðEáWï}Ê6{Hôº±ÕZ`9ò(Yü_Å™³Ógs¥;&µ+„¨ls¬›€¾ðyáWïßdmR DKn÷û'ÿ~yNi…¡®­iš½UõIM³·*\Zç÷j¶-ø- .•}R³mî“¶m1?œLV¸ß—¬lF𶔂K‡‡“•ͪO' _ÿdÒ¨ø{³bѪ׹= 涯˜tËãêÆ†à×øñ#zù~€_7©MÁ¥ãO‰>]¾oÕ{Üêt(zÛ×ß‹Û?ìï›ö¦PÞ¶gÓmÕÿ¨y·¡mÎÿ¸yÿgS¬]‰ìÿ:ÐУ¯yvÝ–x×ò§¿ÿ„‡€ üÁ#}ôÑä_Oò«ºT6_°9ìm›EÀÉ}Éʦ]‹’“F¯ÔüpÒ¬÷µèY7+Õ(y˜EÆáó!JŽàå(y£ÞoGÉÜoGãO¥®GÆR”,ùJœ¾ó‘ñh¡…Dò?-Üàï5öË÷ŒÊ† …û¿]¾»í õ~=ú Bš ÷(‹Ù_~ Ïóè™OϬ&Ï[‹³Œ”·f§Ä¥ëÆyï¬Dìý³ß~ <ÿ7ÏóÞq>g‰g¨žÙøXšÐ6y”0<–.|gÒ-[O¥éJ%åï×­?Aöi=•P…ùfà˯¹— Ñò¯\<Ÿ{û­3K_—>/œ9•yyòòû‹öVåôññKoæÀ2Kü¨v•5@-f¶èëÿmaúåìÔO²ð(8|ôñ’óg3ñXB}`k*pj9mò(—Îý%¢ÁÊ7e¾ú§Ê¥ÿ¾pæ'Ùé—'X³ùÿñ%:÷ñò¥s³ïM½ýw_¾zqa¦®ßŠógSUjm<°µD-z<<°“‰ZôüÀN>®Ù¶ U¿eƒ ð€ÖùTÒ¶E_a~8•¬pÿD²²ÙŒ×“•Í P€4­' _¿?iT¸½Én¸ªz£êÓÃæFÕ¦‡ŠA·<þа±ÑÈë‚¿_õã£é²è×-jSx@ÇŸ®EÌUoRÛ–ýx-r}@¶éYÔû€}®y¯e?êïnûÉ££… 7.oTý±zϰ+~þnÌþôñZ4î¿ó÷…ïŒ zô5ó«"a'«ùþæ§3ùÿ‘—âW6‰ž}å, ŽY,^êµ=¼tö%ÇuJ‚Ÿ‡æ—’A-z®ÎŠÜ;{‡øô‘Ïn~öüßE©]õ§èVÕ'OÙ¾>•²íFþ‰”mÛôϲ~"Uá^×+›_ooVl¯ß¯Û•ªOï×ÍÍŠmy|Z7+ }Ú¬Tl‹8éCis£êG¥ ÑW*öŸ(€3útÚXoìÍõJåOÀ9:ž.ßoÙgËëFÅôøç²åûÝðG³å{>~òh¶ÐQ,[¸+ø{Få‡xýDá^ÙëOŸX¾Ûº/Ü-¯£G_ïÂêÒԮ內gJWb« ²ˆyûä6ÀÂï&ORJ¥yS¾gZÈ=³:Žë¨ª:ÿÛùÓ§NÛ¶-õE€xÇ£*ªõçнÑsUX7ªÎG4ñxÊyàHåÚ^PUyÔ›JéâR'õØvI"¡²8‰Çt©}¶.x¼ªª @B¨Éʉ’HÐs?ÊÀ£à8°ôuéW¿^$êZPUpUM°v´½IµÖ¦ãT?QBMX®¥Bõ3Âc¤êKXÛÞPµ½H$¬-KÕGô©D‚].ûÇÙ}Ò^Ÿb‘´N*•b‘´ŽžJU|ý©Êf#¯§*›6PpÀIë©u¯¯oVª~¿^©Th¨Ï¦ucCð• Ý õ‡tcÃÇOJ—7*t‹:àLŒ¦Ëë~£Bmê€3ñtº¼îïõŠmSœÜÓé2÷ãéâý–}¶¸nØ›ÿ\¶x¿E?ÙŽ?š-Þó÷ËõDzËwü=îÈþL4ÏNh×|¹æ'¶=›nÑ£Õ³3ÛÞwOÔ‚ÜêT]—{fõ¨›Î}sÏ çž«í¨ült­;áyÝÕÎkãá½ýåÿ%>•²íFþ‰”m[Ο€êO¤*Û^¯ØfÕëzesÛÛ›¦êÓûõʦiY¡>­W*ܧ+• »T°ÎJW6ª>{(mˆ¾R±þäñ£icÃß›óOO÷¹5î××MÓ Ï÷cð“Ï}ýÑÑâ½nøc£Å»¾~¢x¯lþЊ?slb¹¡?>Q¸[6{ÃøÁjןœ(|‡}ÕJ¥¼ºômÛÍFÏð(ÀXøýBîx®zOu3Ñ3›IY MmÚ0zfãúËÿ÷—í¹vdQ€Q6N¼r9nîùØàPÇ¥‰D2b}ôèÑ£oà¡Æ€~×zÃXZýf©K·cYaâk8ÎÿvþôÉÓ-¯¾ðéÂäñÉè«ÝÈߨ ½æ?.w?AÙè_¼øÓ‰ˆ³žW“{“•ÍJkë…=„nÑèõ‡Ön¯u{‹!‚ "óÐÚZ¨¨¨¨¨¨¨=¢C#‚ H/‚14*****j/*ÆÐ‚ Ò‹` ŠŠŠŠŠÚ‹êC‘JÖn¯±BVYôíàÛ‘·B\JÝíÌɱÓzŒkS·ÙoÃatkœ‚ }Œ k·×V «L€y¾Ôw­f•Á{áí{ëP—ò‘P—ŽaSB =òvZk¡)åóVôÙGã%â§ÞaÿÊQþâq}+PQQQQ™ÆÐÑÃY&6B^¾Á.¯ÜrTôúÖDïZ ÷~´ Mí-ôg,Û*d¾ÚÜn‚ #0†)=Û ·•z{¡ž¸ÓÛ//÷¹£÷щëÓy{9<Âg5êR>™‰q3_+$"÷§X?Æmôk»¡¢¢¢¢2­½ÛJzçF@d¼ýÑF>Š2Ʋc¼£èí7ÛWÐçjØ‹6ûé‚J¼G_+ú8A8hg[ECÃñ ¢¢¢¢Fׯyh^".•¼¸+~tÀ³ÝQúòú¦zä3‡w$ñöW/ͮŽt ºµmÅþ:Þö½ñèŸ5ŠÆÐ!%^ï£hPýð¾Â×Ò#K‘ŽeÇ:µ7» ãZKô<ÜB$Þ~çά ¢¢¢¢2m7í­]ƒÖeDÒZëÑëãí1(+ÜìöŒR3¤ßsío«ö룢¢¢¢†kœ×r{× 'è~èëœÛ¹€<äúä†=¶|YrÐÆ ¹9[ühM]Ëíë½íGvÃk¹öÛBׂ cˆEu¤Õ·]¢¶¦üŠè®$ve—þá÷ µMÅçrw‡>¾W¸?‚ ÈN"ç¡Ù3­¤Ðísñí«ïçŸÞ¯uÇ·gk÷(ww[Eü&tñ9h¨¨¨¨ý¤C#‚ H/‚ï¶BEEEEEíEUVVVºž GEEEEEE•¯åFEEEEEíEÅ<4‚ ‚ô"˜‡FEEEEEíŽ.~½xëÖ-_ÍÊ` ‚ ÝáÖ­[Gõ]”9”Áµ;ê¸NÈRŒ¡A¤;` ŠŠŠŠŠÚ‹Š14‚ ‚ô"C£¢¢¢¢¢ö¢b ‚ ½ÆÐ¨¨¨¨¨¨½¨C#‚ H/’9” YŠ14*****jw´P,”chAéE0†FEEEEEíE:{îl×_°…Úß:s~ü¸rõJ×Ç†ŠŠŠÚ›š¿–:{î, (Ûo¢G—¿øÆÅÌ¡LéNÉ÷+˜¿žï‘q¢G}Où™ó3ÙѬsÎA0 Rz¢#½ÏÌ…~™"QHEØ‚ }Cþz>-±òôkÓÙÑ,„Ș†uùŸÞΘÃè™×fÞþÛËOÞšÁ#iŒ¡ZŒ¡½yè¡¡¡³çn\8÷ÉÙs7ΞûDœ­’Ò—~vyæìÌÛÿx‰ý›9;ségo‡OÏC~Dï4¼A^ÒNƒH ˆG‚TÈC³ü4Å<4**ê`ëÈá‘‘Ã#Þr>/Ë14›žsÏŒ>€••Qà¥é‘¦"é¹_ÏOžœ€ÂÝeêÒ3§ÎD\qhh¨©Ž‚V ™o¡e¤M0 ÂðÆÐlnfH÷ ËC éÑÌÈá¡‘ÃCããÕ¸§)ˆBXМ9¥f³k×á§ÅàXÔ¦Wá`œ/â7‡yÌC£¢¢¢R—ŠÓ3Ôfk±Ãg†¦@‰Rõ™CÕûV£c––ª®B¢¥ÏI7 |Y,•°€XÔˆðÕ¥IÚ[ˆ´‰øÍáw?—î”æ~3¡wH£¢¢¢ö±ŽeÇÀÃÈá±Ã÷~h²²RX»]Ù|^(Béζ†°øÅböÈóԅ쑉Å/ÃVE m£O¢|izäÕÿ2Â4úŒe|o-}µÄŽüˆ`é«%ö”±XÀÓÑ»ï7óШ¨¨¨Q”øL166=Ûë:‹¼gÞËæ^`ž©6l4Œ¤}c_fx¼+þoÈZ!%ÞÓæCw¼A„ÛýÐ-Àžf¯§€iÛÎg‹2ÏÔ¸Ûø,·wv¯ óþoÈZ!%¼‹‰ˆx$H1ŠŠŠMÃòÐÕÍÄЦa-~±•´iS¢­¾^$ŸxÒ˜<9‰âÊC³û¤ûÅE^|+‹õ½|›jØN”Ê‚ Ý|.7u)l¤©KImþ÷õÆ=›=¯Øñ è[ËC‹--•9<Òlk­µ#Unêsí°=½uG4;óÚü•«+W®¯\]É_-†x¨¡@k·f-”! ¡D!صˆ™Ðíè™P—‚R×!"ý†xW¿ÏÝ=s~&ú½ƒR Þ¥RðÊæ¡±ìØÚí5ï=ˆk·×Fx—z›bíDì—GÕ½p·ek[µ£:s~ ¢qåê23ñä¡© §ÏëÔ¥©=šJ h»Ëʶ»Ì=u™ŸM³£ dÿÖ´<´ØZ”¥«…UV(EÀ¾£jª¤Ùú,leÿ¤ÄE¼¦¸–oý|ËÅöù6ÁHµ[º²R(~[j¨|^~„…¶Ñ÷'àôù4ì3´aÓ Ë5LZ°\ƒû™ŸM€¾?Õ~wÈ®€9rï}šåØSl-âRÝÕ _JÒ0&—òèÜ·«#ÖçH}õëíQlÁ·<„®Ç¨¨ƒ©µóÊ¡Z›—c{?tJO¤ôÄô›g¦.œ¹ø_çòæç>ªSV!®îÞ‡3оsyè†åür3êR6•úFØbÜÉëµ/V–jŠ-ð˜^ Ï Ùb¾ŸHjÁ»®ô¬"Î+ð’^ˆ'PQPÙÛ.ØeÔAjt?-lýà”¿3L³B]‡(*¸ pO4’9¤ë‡0òÞ}°cFÑ“Îä¡#–‡ŒÊwüRLRß[Ó[.õ.Fù,5ÞÔ'OöJ±É IDAT]¬ãÓ‡´ŒŠŠºcº²R*|WÎ ñP#žGƒÞK#u>¶¦>QÐg#ro>;|K¢¢¢î€²GÒ/_EìË[Ç·M©e~][×# TÔÁԮ塇††Îžû${$}ñéésS¹gÆoüß«Q"iˆãÒ„¦ ïOe¥“ÉTz8L¦’I]ÓRP¸eäߟ}gné‹HÙèð ß‹µ3ˆG‚´ícÜûv,ïÈ}[ zPyЫ±vÞl€ï‡ŽNȳÇéò׋3ç§Šß–øû ß³GF½ž(°ô‡XŸËÍ!@ø“·3‡ªG Qp\ ”²“ÛÔ¥ÀÎÅ+@]úéÇ7‡Óú‰SÙÜÉlvt´P,J벩ÎûÎ+i©8JÓ¤øÂißÖ¼ÕÂñ6âÛ/Œ¸•vâ_Ÿy|?tŠ[ µµ©½t§îŸ/ªB€Àú÷fáN¹R1©K‰BÀ¢Ç¥'NM°jl’–Ö Ÿ8ÎQ.jkvõ’·£~›b6…ç`¼OCõn%TTÔ~U–o¯èöz¨gúáÇýæUêÒâ·¥¹ óUOqgøÏ ËC…ð<4"iU©¡ïEÝÑ£[ßu;Èz‡Ô¡ŽzñHâû¡C5Êب¨¨} ]ËCW[¦¥ˆ³ËC;.ÍJKyè[+K/¾|:âµÜRú’ÄA™ã(%!K}3ʾ5Õg`A„Ñyh¦¨¦¦v-wáNyý{³¼^æyhÇ¥ ת”‡––ŠÑ-óâùgoI8¼¾”·öí4z³}þvÌcuÀµ©ÞÝ¡"Í"ÞÕÇïlá¹Ü]Wv&A¤)JwJ™CvQºzw¼:ñ„š;6ž;9N]GOꚦy•(jîžâÞ}H1ô®ÎC#‚4 ;×NºÛï‡Hè*L]8Áþ·ü7ÒSH1tËï‡îEißýI—ß )††Ý|?4‚ H³øîOºù\ná„ä¡¡™ø•½ó8¼d·ÄÐâ ZÄÂÁyŽ ‚ ¾û“¦žË­tý~èvxûÂ,•‚ 8 ýåkxcÏÎ!ÅÐÙÑ,»ŠÛ7r55ŒY-¬Š% ׊Q;±qBž#‹ H í߸ºŠ»óÐí )Ô¥ZõÜ=„{Û]îöx‹¸òÐŒ±ìØÚí5©MöZe_Ê"ìµÛk|)÷¼Ž¸.{+3_+h Aïy³xx!oûA{r;‚ô7íç¡»|·U›P—Nÿl4¥'äŽ.ÀcÛ—_¾°D@¾œ¥;9ä-î8Ýꉙ 3ìä°ƒæ¯çgÎÏÀ•«WˆB˜Gécò׋3ç§Šß–¨ …ïŠÙ#£D ¿ô‡+l^ÞÝÏåFzñH¶ñ\nTTTԾѦžË14Ò)¼14žC#2 ˆ1tHôÌ–nÇÐÝv<”ŠÆÒ×Ë–iY?XAÞ2}nÊB:;f=æ¡QQQ\›ÊC÷É Õ‰BÈž(ž=¬Ù1¤k¹!àÉb¨¨¨¨ƒ£ô~èùæ?\0°,Ó)—Ë7·`oQÉIä?¶þê£Ûƒ8Ä#AŠyhTTTÔ&óлû¹ÜS¯¡.Mi H§ÓԥɽšäçoHG%"í¼°©u‡ZëKzbvôîšZ1FÄmNvùs¹QQQQcÑz.7°íX/æ>^¢/Ú§/Í}nÒ{úÊ¿U>ý§"uvTòå[Ù…·²1výÊìuáO±Ž²zS¶Óc xØ1£èãÍC‡¿Ñ9¢ò—W¶°Vkëú¶ÓòHº»õPQQ›Õz.÷—?Ÿ0éìòæòWå¬B@‰¢:.…8@‰¢R@! ½/¥Yï[~¡~zX{²høk¬¼­͑ގ¼MñXêÔwH‘†*uêý áõ½ƒd°cFÑ“XŸË-µÜš6|3´WÙ[¥ùŠ#‡G˜o¶w©FÒ”²éíö+áÝu®GTTT¯6õ\î]œ‡þò­,u© @]ª±ö| µ¼f.ñò\]ÿ«¿O¿”Þ§gÞšoجïŠ/a Gy…è'“};ò6:G’ïIuß¡ú4¬>HñHv -ö"ªà•óhÕׇė|žã%¢÷­}£df‚–65Ziä¾[@ìNU³#GEEmGw}ºt'ðçËŸOQ ©¼î|35¬¼N(Œ¯6®”Æ‹Õò•j9HïKgÞZèܘc<“WS!ó·wææÕš­‚x$H:‡{áÊgP#²8Õ[î;BfxLÌ×Ò/11[}äðˆX,;&–‹¡3kyËÑGë;r¶¢ø)Äî¼ë65ò–ÿ^¨¨¨¤Éžõ}«÷Tøµöâ …ìÏ«ñì›ËÇõ¥¯ÊYZÐï”S/Ÿ¶?¾™ŸÒ]2qL_úºl(ÅŒ¥ß®ˆf§‚;w¹ÖÎ_¤RÛŃpüØZšºt||<¤QƒzoǵW¿±–ŸÖŽ«MÑý-á°Yðì+%ÍP(¥*çjyÍɃež‡žnk'-z[)ËwºßxG˦g)öÑ£¢¢6Tß½ué®ÏCGçËŸg D!Ü›ƒZ^î͉åúý¿2¿ÉƒßµÜë‘ ½5¥É@ð ao/¾ùú Qºó^Æåý¼!=†ÔÿìRìÕNš}Ý!8⌉²œkxö½Y)ko 4ÚÖ>E\µ¡úBå~è/ßÊRôáuéäqƒºPx! .u~™“Ê u©íZn_Äx´sç«›¢‡$ÁŽEßòýÐ$8†–®[æ3¨GŠå­E–¢²x§»aû¼$h´? ßDÞ-ã[?âÈQQQªï^‹Èû¡¿üy¶ú¤0—Bõr°0¯ïK·<=#­ãû¡WVVbÌ}òy(®;Êî-‚ i¯5Xï‡NíÕÓûôÔÞ”¾OâqzÞyÄ#AÚqlÂÚ´AÑc”ºtòdzâÇzJ÷9ÅíûÖ¦è…HR x?t½"Ò¯„쵚ºº¯fèËïäÓÃzîhα©ªÊ†™9&„d§àQÿUø[›øÔË^D!½6Ê· '$ ÍFœÂÑèÈáöf'V2–ß4µ‹4F†ê‘ÅÛW;xÓSÃC¸h˜‡¤y;½˜‡.¡tÇ_C¸üËÙôp2;žµ6MPÀØ0´¤¦§.½ßàÌ6FÆ¢syhßöw—Æþ»_6*~ŸÛ<¦Œý§!6ˆ¿;¤Ïà¿ë¸òÐJæÃ²M^Ï—9K¶²ϥ͊•ÐÆ}C? ëûS Wä¯nÄEìøæ¡Å«¸[ÎCû¶µ›®Ý^ãq¶oÉÚí5öúHþþ(^Þ°5¾–èyq]ÞZÝ'~wü»Ç¿Š|–mm~e«‹­ù6+õë óâëM½«ˆÍzÜì«QÃÛ§·Pj!b›Ò&Íæ¡½Wq÷aúò/g‰ÍÔg’=ª¹a&‡5}_ãé9¼»M:—‡jŸ¿ jíö”øöFö¦d¾–øvgÞ»ÌV¡.e턬+y^G|'oMRFxV%ÞïoVê7(Å#jÐ*R³ ñø#¶ï;Îèù©–ÇŒ Í‚yè*—ß™%vvòTº¸b‚ ·~o¦†S™QŸ¿Í~·|—!–ˆ¿^ßB$œå¡CÚgˆYjoÆW,£["`iÌ!ëz}Ã(ßwT¾_³!áDl¶}x³¾³` í4,oÿƒàé(ýœ‡ŽÎܯçõ=¹Ü)½¸bݲ'_NéÃ×…ù"äïŠ%Pÿ3ö-DBØù<4‹YAˆeÅø8h­†qyȺá^HÑdv4ËÞj囇æ_èˆÊ®ÁR‰BV «¾õ½åR ¿¢[òÞš –ù n+ÔMÒâv“&˜(›:|¾ ª4M†”´yÑVÃÕ£÷qðQ:E¸ðæ¡¥½óAoµê«ú”®>V=>÷a¡Ù¸m—êÔÙL‡ÿþH14Á÷C×M÷+ÝšqVFz‡ß]Ãó¾mWÀÚ²•XZ¯hššÕÙB¢Ñ§»3uí$++¥nuM‚óÐø~h(Ý)]¹z¥PQQcQqÇK$mêýл8ŽeZÆ}{ésƒ°|'r닟¡iõˆˆÒçÚ-h'óл]/¾q1s(3÷á\×þ<‚t ß_=4Ÿ‡îÅçr·ÏüûKæ†C)$@)Ú®£)ÔukûjïÚ ô·R·ÉmÒeŒÏåî-ÝéÚé A:JÈ^kàžËíeê­l©àªEê:LP—ñ|¡û[{'†|?4**êÀhÐ^k€î‡"ÿþ¼zÐ „¤5e‚…¨{Iz\ãub‰¡G1?–âåcÙ!^Þuí„HZ,‰¢´chTTÔ>Ö ½Ö=—Û—Ùwó„ÀéS§s/kµ 4di§ªçŽgyµÚ Ä¢«…‡ÌZ-<\»ý°ëÑ3ÓÞ‰¡c|.7***jkÐ^k€žËíeöÝ|borò䤵i'ö$ÒG)QH;™IéueÇ),öåQïÈá!1æ%RLÌJ¤¸ÙW½öÀÆÐx?4**êàhÐ^kPî‡ö2ûî\*©åŽæÌŠ™ ‰Òýræ`ºøM9{Òç]Ñ술õ²IwíöÑÃCÀ¢OV"ù±ìÐjá!›üƲCbœÊÚañt­—í¥~-7Áû¡B]:w}nû±@УGßOž] ëûÛÚ÷C—î.Ê \4ûN^ß—œ8:amš‰= 㾡ëúpêí_ûLÏP;¢€µÛ%P7±y½W½KÙdÏ5d݉¡™âýÐ(Þd… }IéN)s(SºS Ùk5u?t/æ¡3‡ÿ1ûË<Ýž8:al˜êžDé^Y? gè!ïÒ¨ð¶U, ò^ _ŠyhŠyhAéKòWóÌ`z›ÙwòÔNŸ~!{óc3µ7e®›™º¾/þ¢èúo[Å’ ïÍ.{—Ön?Ë­Ý~ˆ×rÌC Š H_‚™}7O+ç_HߺUÖXø¸œz2•N6|e”zµðpäðûǯÖf'®Åßvz$¶îð~èÚ™ƒØ75‚ =EÈ^«©û¡{1ùk e|ü'©•[¦F4sÓž:ŸN5Šž숆gˆ¥l´ׯµ]ÇkÄúQ²×CƒI·“‡æokfð÷@÷šJï®ÏðÁ{ßÂÔÝAb¡ŸóÐÑ¡[©ÜQ}åƒ07Í©si ez†í#èœJqö€ÇÐ1æ¡`íöÚjaØDØõÈØWÅí •³—$öŽA¤}¼ï‡Ÿ½YyèÝý\nk–n„í {ôx&µ/Õðä6§vDS)žð:Æçr{ÛËŽq/FÕ¾åb¾v{Õ‘–òØw,;Ƽ´–ØþÚíµ‘Ã#¬±GqœÒø>|ȦFÅv·Aöi6ÝçÏ妔Ҋ { ýÉdæPØ•Û>ëv>†îíâËC{Û_-¬z£j>ײ¥¬>+ë‹­µ/®ÅþWZÊÚ{ômYÊCó™²GJ‰…¸òлx†¾|a‰ ÃÖÔkg2£M¿éybè^ÐÞ‰¡Aˆ¤Å’(ê¡GH±¯o¬¦w)[·v-Âvì+FÀ,nfKƒ>CCÈg‡ú<4‹_Å(¶»%‚ÄEÃóñ~è© çfÓ°–¿0*[Û ú¡äij~&|úµlèªH»Hqd‡òÐÞ|°¸Tš¤Y9/ä9æñ‡GÆÑkzë Òg`ºþ æºm¬ÛŽMŒû°ü¹]¸[êö˜ˆÉC‡D®P‹¤½õ¥<1Ï.³ržÏæÙë öƒF"^V’‡F¤/ÁœºôþDÈZ¾&ö¾ðÇ[ÒpÒÌYYDŠ¡óШ¨¨£A{­]Ÿ‡Î6=×å_Î’­ìÄsi³b%´„qßÐèúþÀÐY„MÒÞGsÄh¸é‘ 0R íå¡ËÅ2íÞ©iTTTÔÔ»7¸<ôå_Î;›;¥/þÎ?™07Ìä°¦ï‹4=3¼“4Ò>T8¤íå¡ÇÇÇ{áÇ†ŠŠŠÚ²ò}]ô<ôÐÙsg}/Z)Ý̡طÙïåwfÉfvòTzeÅ—P—N¾¬ëÃ×…I„\á~‹AÀt.­Ò0K=Ì\˜É_˃vÍ_ÏÏœŸáØõÌb ‚ H_’¿^œ9?Uü¶Ä^ L](|WÌõz¢ÀÒ®°y¹óÐÑ™ûõ¼¾'—;¥WL [öäË©èÓ3<¬^øPürÌÒ*!çÌZCCyhTTTÔþЦòл;†ž÷„²k IDAT¿0ñœ¾|Ë .Ð-ûôOÓD#‰Çñ¦çžÀC3x$14‚ ‚CEÏÜoÇл:mÜ·—¿1(ÐdÚ!™Ú—Âé¹w©Kyô웇FEEE ‰žû-={aˆ¥„ô¨žÍtr\HÓ`A„1pyè٠ˬԓôÌÙ8=÷ ì˜Qô˜‡FEEpÝõ÷CG$qÀ°îëSÂH‚tßýЃ©øìnTÔÝ®Þ}Ý Ü=ýæTÃ:¦a-}^¦›š•~ZŸx*íÀШ;¤ø\îK ²) ™C¶ß÷uƒþ~è*˜÷m»¦M­ÄÒïíÒ}£Ûc Ä#AÒÞû¡Sûù·‰ €´ÇÏs¹ôýÐ`™VáÆÒ熵UÕÀ­/ð;‡Cæ¡›WAv/¾¿ë¦òÐý9CÏ¿¿4÷/ÅÅß•((e–«G%[j·‡6@H14DÒ¨!Š ÈîÅ÷w=‹ž·°»ï‡bê­l¸*…2u &ªgöûð³ö.R ÝòýÐ#‡Gø¿^ˆkwL·ï‰Œõ•-¼5| ‚tÿßu3÷C÷g:ÿþ¼zÐ „Õ” –ïT÷’ô¸²VÈ ÷e-Kzäð¬Ý^cÿƲcáõûI{ù·‰¿iˆÿïzÀóÐ³ïæ Ó§Nç^ÖH-ÉÓNÿTÏÏÆÞˆ+-¶°ZXåžÖR u©7æ–¼w)k‡«ØŽ·Ç u%ï{&ÀûƒÊÃ7ïPðBßjÞUšjYTA‚À<´Ìì»ùÄ^mò䤵i'ö$ô£QH;™Iéþ Ù…ÔçêwUá{Ã"®<4Œ Š­Å¥Œ±ì+÷mEᬂ‘³vøŠb;¼}ʇ¯Ë=¯ã;Zo¾9zš½0!~¥7¸øVómÇ·‘ –ƒÞƒ ˆæ¡ë˜}w.•Ô&MšSUHé~9{0KfO¾+Ú»S¿ÝVÐ"iW²âKZœö¤¨4¨/g3åíÚí5oD.y©kA¬ÙKë†ôåÛÚÚí5ñÜ€7Ý2 'Qœe¤s´Ÿ‡Vz0×Uº¸(ä‘ݳïäSû´ÜÑœµi&ö$J÷Ëú°®§ÞþuàôBË9iœ›9¾yhñ ;ï‡æ¡'ÔâZ1rõí übP)ÎgˆçÑp ëzG»3yèX¾Ò!)‚ Qh˜‡ö>MLÊC÷ÜS?[{]Çì/óÔνœ56ÌÔÞTé^9s0ÝÔ‹¢%BöDá;)Ü…q¤8’(„å¡¥'ìð¥áºZXåÓª­ò:b_¾‘+¯³ZX•Æà­ãõlŠõI/¶¡6·¹ý`'u¸o§)ÖŽØ ‚ áHû7¨æ¡³¾Oã¾ßòгïä©=|ú…ìÍÍÔÞ”±nfèú¾æ¦gŒ}c'–<´”µ iÙ[ƒof¢d|wÆ{?cÐ5ê‚ì^0 ³ïæieøô Ù[·Êš —õ'Sú°ÑžMÂNßI‘/ôNÛÞEbÖ9dÅ$®<´x4Ï×òÙWÌO‹ý•ðü´tµï˜%/æ¶™‰¸®ïhÃÇ)塇 þ›Æ¿ºA_Néìp|[ê«ak2Èôg::ó×ÊøøOR+·Lhæ¦9u>›j2zw:Þ†‹.XâÍC{[ö–‹%Þ:Rl-–K×~‹¤B:•Ú i3hœ‹ñ‚ È#ý®w÷ýÐÑÑšÆÝÄô›8=÷(R MÚ»z0•o+TTÔÝ®ÐüýÐCgÏõ=H/Ýiñá!˜¹0“¿–€Ò’Xž¿žŸ9?W®^! aA¤É_/ΜŸ*~[¢.¾+fŒ‚üÒ®°y9Îû¡óïÎͽ7¢qu„ì h} Ýòû¡QQQQûF›º:¶:ÿîÜÙó/†×ùèú§37ÝD£ÈnÆCóè™14‚ ‚C‡DÏlév Kßsï/œ=ÿ¢šPÙ?xþ•ç¹òò³ç_ÄHzp`ÇŒ¢Çû¡QQQ\›º:ž+ňBØÄ|âä ¢É““/¾ðâ§ŸÊtñ‹EêÒ/¿øRM¨ïòÄ¿5©¿Z¼¢»ë:÷›9ÚíKHPQQûR½ûº «¸EÏ÷œñÜM] FÙ¼ðÚ…k^»ùùM©Â…×.eKO'¨ptÀ‘žìëÃñÖMÜÌG‰Ô8ñoM{û~h¼£ AØ) Þ»WÈÎßͲ&n¼?ѰæÎ€ïËë.¤>†îñû¡Aâeî7sÙkYioÓ…çr³£ƒÔþlŸm‡ïs@Àß“ÃfSѳ ÞFñ:Ò vÂß·½‘ Â°­€Ô#ÅÐÐÛyhAxñÝÛtá¹ÜìèÀüÞJíO\ú»×€(ðê[/]ú»×_}ë¥K÷ê«o½Ôr¼Â¦j†4¿²B©Dü_ï9ó Fx¡Ø]H5¤!R B$ ÝŽ˜1†F¤Óøîmb{.w¡üâoI³£u5y m~o;{ƒ•Üxÿ“Z}–íÛ® Þijï+#¥I:¼‘ˆ}!Qˆ+ÍßÇÌX»½{šµ,~=‚.kZ„ßA$¤ý÷1ä¡›ºZŒ¡Ïœ:óÁ{7ˆBXÜÌwãýO “ñ pÃw”¸ÝIâÊC3ØK”GŒa>ʺcÙ1¾nÃ^‚ÎÇxÏÍxáå‚Høîmºð\nvt0µþŸæá?fßý¨ 7Þÿ„GÏüÜzP -ίQæÚ† ]GŠ¡I«Ïå[½[¯VY}>%‹KÙ¤ÎJxMo Ý,â— ¿{‚HøÆÐM=—;Î<ôüðL­ÿ§ØóÐlß'%•Ã+3/­"¶±»f‡ŠˆÄ•‡ömM·k·×X|Ì&f^‡MÉlÔbhi$¾½0¤oš÷2…V7 ‚ DgóÐÑáyèyøúnµ¤Ù<´´O ZÔ°Äûé1b5$œ¸òЬ³†Îʰß<4***j+׬ÍËC#ÂCóè™14‚ B‹1t‡G… .ìxPô,Ýõ#YTTTÔ×è14ÔÀ+ÅNAbz.w,ÊâuÚí @PQQJëî^q)‰¼×bàýÐH§ Â‘ íúýÐ@Ø)wA¡P,ˆw¯4µ¿b-<‚÷C#‚ÔÇÐÞ§‰íäýÐø=Gd‡‘÷x‘ch¾¿Â<4Ò)¤º‡FÙI¤½›¤½å¾ÊÀéR ‘ôŽ)‚ ÈN"GÆÍç¡ñ~h¤SH1tË÷C³÷@‹ÿ¤¥ÞúÞv‚¾çâ;žÛ$ƦZn³c@¤5ZŽ¡1tœ¸òÐŒµÛkìŒeÇÄ¥#‡G¼õw>Ýðå•8}"È@Ñr yh¤ãÄ•‡[ .e“4¤bÜ,Õ—Ê`¨†4à ò ¤ú’ñ]*6îÛ]HaÄaÄõq‚J¤ñ4Õ‚ ˜‡Fz—¸òÐR ÞöùœCóò¡¡¡‡5¤¹‡—Gùtáõ½½°j¼²ï0|Ûä…¾aç>NÖÙÜ26p0ô.qå¡ÅÖ¼%!=Šêû=r^Z"ÂçŽÔrt¢7Õ¹ÔKŒAúÌC#½K¼yèja4ËO{ë·œ‡~èA\Ôæ Þv¦ÉÖù8‚Äæ¡‘Þ¥Cyè öù¹noý–ï‡:Û<Á»ó3e,14‚ Á<4Ò»t(ÍæàµÛkÞ¥l’–êKíˆ4œ¢Z:»2ùuîã Ò˜‡Fz—xóÐüfhX-¬zÛ!’ö¶Ã¿çüì4»Ê‰· –Gùt¾ø¶Æ+ˆ·XÁ·0¼ëðŽZø8ÞúA-#‘öóÐ æ¡‘ᛇ®{ÓK´<´{ÛgK½õCòÐA×:55y+K%A3wô ‡ËÇñ­^‚—Œ!H8˜‡Fz—¸òÐqi€-‚ì0ô.qå¡ãÒ££3(Nϲ[h?­`éR Ýõ÷CŠ…üõ<Ø>‰„=zôõ­í¯X#˜‡F:E\yèXtæ™Ì¡Ì܇s;öñA ¥šÏËJ—ÆŒô?R Í¢çÌ¡ ‹¤}34UÞ/***j/+ßs=w ¤Ì\˜É_Ë@éNI,Ï_ÏÏœŸ€+W¯…0 ÒÇä¯ç³G²ãããQ*_¹z…ÍËx?4Ò)h} ÝòýШ¨¨¨} <>n\³6/c t o Í£gÆÐ‚ -ÆÐ2¸°ãAÑw÷~hTTTÔ.jôj` t ÌC#‚00ôâ‘ Å<4**ê`+æ¡‘óЂ ÌC#½;=æ¡QQQV1ôÍC³×Pz zVkˆ½´Ó2ogíö¿u›ckªëëA_0ôâ‘ ;½v{mµ°Ê'æÅ÷FGQöÂé¥bË!5öÂÛá#oíSGQþmVÂûí\¨¨¨QóÐH±3yhßQŒY½… IJÞj!Í5%­"®+ÅúÞÚ[AêÝ×ñýA%¾Ý…AÁ<4Ò[°ãAÑw"-¶Ï”ǬÜS—ò¹GŒeÙºA­·e©}>ŠõÙÜÉË¥(_jYUÈv“üÈáV_ù µŸÔ»×jj?ÆÀé1>—»chAú’xbhÌC#B<¤í=—»chTTÔ¾ÔvbhÌC#óЂ ,˜‡Fzv<(zÌC£¢¢ˆbéi0 ÈÀ‚yh¤§)æ¡QQQI1ô4˜‡Fd`Á<4ÒÓ°ãAÑcu@óÐHOƒyhAÌC#=x$H1ŠŠ:HŠyh¤§Á<4‚  æ¡‘ž†ŠóШ¨¨¢˜‡FzÌC#2°`éiÄ#AŠyhTTÔARÌC#=Íç¡Ykìg¥Íþ·@Sä¯çùNóâ»=œ^¿]ÍK ­tjtÈÀÃŽ¹' ayèB±ttÙšæ¯ç@<Мym†ûpŽ÷Õß:w}Ž}^¾¦_›fÛd@¶@Szåêé 3ýÚ4’ÿ0_ºSê…ö”âïkç•ojŒ¡‘N±3yèüõ¼·—Ì¡ L¿6=÷áœÔ»ÈÈáX»½ÖÔRßrVè%¨ñia xGÛpœáÛªYº¸¹xtâÝ\ì¾¹:1†Ûv7~»| Ñ,Ö—Öå[#â—ÖËl7À<4ÒãÐúº£yèB± –”î” Åÿn­ÕÚRßòµÛk«…UþËg~µ°åÓq9<2rx$zý†[ üSˆcnØoø¶¢.eƒ8Zqûˆ#iêS7Õ£ôYX¬,n=©DìEak=¶¹m{áÛÅVgÿþ¾¤oŸ)[Û&âwƒ5ñÛÒÝíæÝk5Üm׬m[…Âöæ@! }éNiî7s3çgX9QÊ}¸²/··œi–î”|—μ1#FEÒÒ‘Ã#l‡;–[»½&–{?EH¹¤¾K¥£~V>–ãõù®Ÿ•‹ã ×ð-pñ‹A[@§w;ð±ñ’ ­Á>¯Ï¶jÈ§Ž²Å¼½KÛíöšo uî7s<ìó.½øÆE†l«qJSqäl̬¦oP.Öìµo—Øßæ!¿/ï8¥i „ÿÊXïÒ§ðÝÎAß„Þn°× Úù¬[›—ñ~h¤Sx…c¿ºa”ÜìѺx„¥á[@úDëDYÅrkJñekŸ½Ùí)FlÞÈXª/~¯B¶LÈ–ov[y·s\ß.¦µu[û•yo/½³Ý|÷Z!û± ïá#˜‡F:„têžÛÏC³z¯vã Ôî=ÍŽf¥'±'a]|ã"/ Òr±œM-e'-ÙS´þt­Áy>ÛìIOlãÚhJù7ضbO|BVÈ·«g_ü P×G"©´×ºrõJî™ÜÿßÞùûÆQ„aø Úb®KACO[‰â NGÉ–†Hœˆd, FLcY.ÀtÐ!DIyFŠ}ÙºK¤ ¹L ¤¤@ò'…bâangwïÛóÍÝúîy„^½™ìÎΗ™ùöÛ©èÇB=Ø?p¿IbhHÅœ×åvÝ®£b±%†o |]µhæ×¥  ûCC£±Q'iÚ­sä×Òšâ*W]ùj©ÿ®ÊVC›ÿëÔ_#ln÷Zš~Ì«ƒRÁþа²°.74šp&hÙEÑUÒËÄÐì É™s 9‡†Fãæƒ¡ŸÿûÐ(Š¢ QòÐÐhÈCÀÊBM8´ä¡Q]%% †<4¬,䡡Ѹù`èÉC£(º"J yhXYÈCC£ g‚–<4Š¢«¤ä¡¡Ñ‡€•…<447 =yhEWDÉCC£! + yhh4áLÐ’‡FQt•4îµ677wvwöv÷vvwÜež<4$'EzoÏŽ&l~þàëi>€–8†vý¡†ÎýŽ—³$M¸˜9zo2ãòн~¯,C£Ñê åðt¸vsÍíø«¯EQ4µŠˆïý&é`„†T˜Ìä¼ÉÌðtxðÃÁöÖ¶/Ѩûáú’\b;ÄçoÂãï´ïˆÈàdàJÖo­»?ÖjC…ºúCüµ4g N¹N§…Ÿ+n›¾…(ŠN­¹^«®:ÈCC*ìx =Ÿ<´ÿ=‡åš’˨ã¸w<8÷ŽEÄ –gùÑÔïÎUKÂ’°UþŠu¯µ~k}â'BQ4T}¯UpîE?–Y±€p&hŠ¢g+Ú9¦UÏFýï9ž–•„Qf.ÎŽK\¼›‹SsõNnH+«Í_1¬3÷·®‰ãVIQ”\=+KÂ8>¾JØ6×Z"oUª¾×*8÷¢ã}hH…›†~>ïC‡WœXƲ>²t…q4ìþèÊõWŒkËE´…ߘ×o­W´*‹Ç-©h§?·ð*a|ï[»ð¸E¯ŠÖêµbu‡†T¸ù`èÍŒòÐÕš»âĉ¢Ã²öËÅxV·þ)¼¿ÐÔõè¿™¸†‰÷ P­ÖŠ^Kótˆƒ<4¤"œ Ú¦æ¡ý@˜‹•}IágÑׯ¬Mïõõ(Ûé+t%>böQµ¦fEsZÑk…w¼<á=*òМp&hœ‡ö_I;ª£X}ýšÚô^_²a…®Ü!a$]]3Š¢9­îµü¿2Gî òÐ7 }óÐNý(Uv|­rŸßÕŸU×ÇõıõtßL<ǯ>EÑBØkU?áá  ©póÁЛå¡ýÃPþo㧬%ˆ&Ýô6~Î9®9,/|&\Y›ÆÖ>7î?‹ò›ñç†m.üá‘3|E—X5½Vás-NyhHD8´#ÛÞh»õt óÐF±ÎŽÓáéЭ[ûÿ íqﯘ;÷¸w׿f¯&Ë·$.Ë)j®¾J®¶°†2_ÖZLE Ëþ6nyÙgñåuÿ¡(ê´Æ¿Öå†Ô$ÚzíæÚÄã+˜…ër+»&ö‡†äØñZf”‡ž{ý^µÖ­EQt¶öZS¨ƒRÁþа²Ä1ôöÖ¶fw>§oö¶" ‰g‚¶<½³»#Q.9öÝ£®c¥-bDìE9ǧö]MûîQ×ûÎVGD:_vTÃóþ›°™÷¡!&x"Ñ”¿­ß3UD¶¿úy{ëÞìÛ qx8ì=î·oßÑÍÍMÍ31Ñ(Ÿ¿—yÛ R‘‹¡MùþÐÊ=SýY‡‡5ŽGQ½¤Þظ‘+qs)û.w‹[Eßsò¤¤ÂŒÇÐDÒ¢žK–©ÉæfÛŽðx<>¡÷çå{­Zê`]nH…¡ë®Ë[ÚæŸ“”ÃÃ^÷¨Çãñé|×NÔ²^K¿?Þõœo‘‡†D˜ñ:Žž+Öåv+[UÇÐ&3wßÛð³]<Ÿ¡7SÅÐ…}—~¼ë9¹Ë ©°ã1´¨ß‡Îí¶TC7g–Çã—ÏZ#–h_¸éÔÁ ©ÈÅТËC‡ëBWÇÐM˜eãñø%öSÄÐŽ‰w•õ‡†Täbhe:®¡,†nÂ,Ç/·Ÿ"†Ž{0òÐÐ8r1´2ï\C7d–Çã—Ò_&†Ž÷{®C“‡†ääbhQç¡s»5—ÅÐÍ™eãñøåóSÇÐ…û=×U#4¤"CK÷¡s3ÐX-yh<ŸØOCOì»”ê  ©ÈÅÐu߇®ž‡6d–Çã—Û׊¡Ëz­©óÐìm©Pî­ß3UDööûÛ[÷ú†v$&EѤÚ{Üoß¶ñÞzu÷{~ðõe/'ì s CK=_^M†¢(:­ÏD™ˆ O‡.šñMAÑ™¨ÿUd\\fZ_çÎnw០EÑÕÑ?ÿ²Ý£n\Þ¹¯ÚJÒdFDjõr¾ç¼68è·Ð˜‚áé°ð‡x°ÐÙê´7Ú‹n @y‹áæ€)yçá Œk|ò£ˆ1í|j~ÃEQE¯¢þqdΞ½Ð¹ÙGn´29ÉDí=}bAøØâIDAT~ïó=¥¸’¼ø·wãÝw”cîùH²³¿_Y9i‰œiUø³g/^>)϶ÉHðx<Ç+ýùÈžým•c®HëÚßün²ÖÅ»_çþÉ“'¿þôÙ¢§ W’_~;ë=}®síH²Z÷ÄûûfÑ÷ñQEQô*jïéËZcî¢gPĵׯ_/º °º Ÿ _ýóJƒ^ûúÚµ‡ß?üîÛï~ÿðîûw»º­¬u>:_JeÕOX$­¬%#ñÃp…oe­7Ç‹´²–Ù…¢Iõ?Ý%Hµ °YIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extsearch.png0000644000175000017500000007300212032647161024665 0ustar ebourgebourg‰PNG  IHDRÛÐÿ=1¡sBITÛáOà IDATxœì½_ˆGžïûíK6D‚ªÁº@¥ñÀ”±ÀÕX%ŽÜÃyP?Hƒކ3p,Ù°’æÀÙѼŒuýpäÞ kõ.x,/øH{á\F~8ØzV†»lûaŒ´ C÷€÷€ÍÔ€ U0‚*At‚îCüûeäŸÊú×UÕýû DvTdddDfÄ7~ñ‹È¥o¾ÞÃ0 Ã0Ìì¸ú_¯/7g†a†aŽ(›76ê½ßïÎ43 Ã0 ÃiþYg€a†aÆØHkçœ¤=@$@ú! @BH ŽuªöRBH¤€@ ô±NVçKB 4:±DBˆí¥M!…HD !€z÷  Dºh“‚–û!XX ÷c,C $™%„îFÒ·IÒ'&ÄÜ;H$ªTbRèbQÇ€„ M‘*¤‰@o3u •l"…É‘ºD €DHHî*êIH s)“áLúé{4%Û?ˆ $€8Q"ÚBUOœ~ÀHÌ-Ò@gCŸéãP1ÐT“ŠCò„@Œ¡@È$F!ÌÓè½)úÀÜ`æ‘Öµ)¨G×äYd¢K‰ªuiW¦êÓ¥‰90!ˆôû턉ˆu6L–ÒoŠC—}Äê2†÷eÄ€:PÅC¥ ]-èW[ˆ2¶šD @’çǼ㪅HȽ˜j•€Ð¯’Ž R›2qå"õbÆîÎ]×@ è\š*† 1¯¿½ rñ W8$$iÙT(]×2Ñ-›­)u×é‡EUb’ óÊcMÒ~ 4Í£zÍí¥sŸJ¸ÇR?öðýÇ :Ž€}ÞÔ]HRD™ ¹ÆD]NH¦B3ׂ¹ mL$BášSB€I,„¶TLíÄê57é›ϤソÝþ#\F `_„ˈu~ˆPÅ®['Õv"ÂDêHÕ²™ˆüéµ–®M˜_šbÏç¼ñ· •\øƒ«¶â% W¯´j×ȱªY)twh›9Ó+€¥Ë ‹cŒ„m+¥P”y¾3í¸éSU/¨ÞÉDŸq %H ý>„0ú#q‚8@¨ßdû”ˆˆÓ¢D÷‚âaêö@›þ5Ä>°¬O•ËûÀ>ä2°¬ú¶X  -K#Jtç@&YSn.\ˆ2‘2䦄+V) „$í»Õj"202ˆ^®$u®R5•¾Dˆ@ÈDÊDŠ@Ð'Á\LûÙ^3Ñw®K©Ñ%/È0HD¬ãëôCˆ"† ]Žt-ÇÂHÝŽ‹ô3 ¤ M7dD¢´c %,Œ‘€bݼBuE±Ôcb3šK¸®K&±j×l­GIò`ä‚H¤„™w$-§ µ¬T e ûWòä¹JÝµŽ¯î—Ô¿ê3SMÐMj˜ˆ8Po bئS•°À2°ïî&„Œ! äˆ­Ùe„°r®#„J[軆þ3 •†ÿD‰DJ“yÛÿÙÛO7±«eUZdS¡ ‘@ªººsòÞY'Gt ¦ÁH¼K›rѵàjÍ´lB@ ËÖšPµ™H‚Öx:Äæa±;!GŽ˜ºÐu @1Šå•òBÐ-F"e ¼ÛôîW$Ô"2‘2È{žÍ±€‰D ‘Û‰@éì ­_¬°†~’Eà]Ž+M£’A,‚P& !6¾¦¡©©PHb„VxÑ>ÈGiîeaUH¼/±ìeÂÔKbšŒa€8Ð/©#u ìm¸w1ÉÉøý{{Îo½ßû¨ýÖëÑ®ÉsŸ•K,=˜R­¹UÒô£Bן„±#oéFc©wIµ›¤……€„´-‘€Pƒlõ´éWº·N·ãf@ Û›ªþO7‹ÞÓC†Ö.Û–$ˆ(%kµˆy„‰{&BÀÊÒé§ÎÊmì‡J @ B¹Ëeïi ƒXò‘䆄€Ôá‰-+žHºívBRR$¦/R´jÏá©hË“¾D"m–¤’tlj€ œ…LUŠtÚ]â—?ÜEt›+¡!êm7!A¶¦L§HÒ×}€~ÒRƒ-5ÆBmI  @8K ÉÍS#NÀh—”qGÀ´Ý¤¥3)@ulD¨é õ<ë #Ó"¥\ÿ!ÌU„yû„~üAú]©Þ#w/´5W&F7rzž·ÆY5Ìí%Êd(BH2†À¾úUÄ–e¸pñ2`M&ärB_·°Bê~׿M˜Û×O—º-¡îKõXæ\A-"T½eZs3ŒV2 bÄ¡mÙTYvœ ÄjÓ#:“˜»Šj VÔH«zMýJ5j2ù' šn»¤}7=³"¬Õ„h…aâtIèS_" l{¨Þ#˜qš  q C{‰”¢:Ϧ6cEb±ÈZJÔÈJ·*¾~ÞL/ª(A3¯ fúZÒ<¦R<3'tû)\‡«5‘¨[õ€P+re ‰IQš7šœe»?ÓZzÃU`Y`ßõ€èPr$†¤“éq""Ntdúz¬•º@ @Gâ:å ¯–wã)~´þ£Ûþ·¡â_üûá*ê,JŽ"yðÛ´y=Ú}€ÈØöÚÓÌY•@µK@Ú2ýôØvÄŽÆt«'m¡5…«ß4§Ä©š0£X¸§@ÞoßSô µ-¬ªxq"cÕ½Q눎“€E fîÀ¤ïb9ľM&bìÇX±¬ $þÐ#5Ò‚#’Óƒº_ì{¨ši=’Э¹NØ©uœhõàú0]›™ú÷l3ΚâìªSÙ§z45zðÇßz ”ß»ëÆ¦·m±ûfg=.×áÚR¢s«8‘±‰Ÿá™ë ='*æ13úƒéÖ<ˆu'(#Y(‘Äþâl].D@YÈÂŒÖ)J3-H¡-@Ò¼)¦!%m ­kafm„ÓpÂØ¨Laa ä»ÃÕÒ†;⣠m5…î¡òŽM]X(Õqá þrõ£­¨â±ÈTjn|…´ë†»–ªGkÍÊÉCzti¬Y"LbiO È;›GUÛ½Lýšôéͦ0³6!d¼¯R”1„‘ã©·€²K›–θÿé:ÕVdZÓP922/\+úi›™å®µ¢V{½uúÇë?‚ÀÖ?nLż~²÷ííøÛ”'Ї%‚K{JÎãæ, =¹ŽØ·°ÚÙÔAg÷fo÷fo÷fçë›è<ºÙÙ½iFEªUEg÷fg÷¦2!¤A :ov½¨‘H;çjóé<õHx D&ˆóì%žÅ€Ü –c mÁÓ#ïeU8ªÕSY¡{‹XMcg”÷ è’´%oG¦?ƒy“ݱjåEBJ^Ϲ¤ûi¤­ÄºB%µkmj½ ¡g¤vF“ª„í8Oš²uWOÜh)5#¦kJ0V+©g[íxB§Of 2c¯8ñCŒª á©‘\óž‹tý*ÍájŠø¸þC߇¶ ëã$„X&1ìxš Í+f[ai´©(…J£«ÉJ!IR€+ù@ÒçFÂÕ/éHɤFÒîm]I¨,1~”Ú:"C vþ­¦hL¬˜Ô8 Ÿ1iêËZôè™Ü½/SS^L]·ZéçYßF“¦ÿÎÚ9SézscÓ6ò$˜i ²íƒ’æú}è}éÔ@BuöZú“Qœ}ƹ®«/kM´ž:Æò¡ò*H.¥3ê¦Údz ‘ÚkP¸ñaA¿˜ÒÜÔn—ÔÒéÛ¶Ë–L|#GüçÁŒ„ýLÒ™šI,Ó!f¢Ö¶Ì±=šô­sd¢ßzc†1×1šP¦b}AìxØÔ… áÆÆ¦F”=^Ð:Ò¹ôF&È{û—N®yj&’¥põo- …Ö_[ÿÑúN·Nßú§[¯o¼~ºuútë4i*)e0$£F)3ƒ¨> ¶7¢­[J—èÄt?gÔ4ôª º¸Æ¯4¯Õ›×lÞÝ›€®'}lÚ£ØELi¤Ð6‘‰ÑªdöÅF 1÷Ú(:ýTD=;ÄjÝͲõ⦓B¶„•}jnÈÞ—LèXÁÅOùiš¾ŠÔàêµbpåIób?ÕŽ;=a½@Lͺi8õ†«2w­ƒyš_п Û@læ¶Íh*+­akA‡w[9#‹0ÓbJªNÒAfÓÔŸf¸l=„bxR+­Ì•M|¤m{¡SêééH’C]³.£z/-Ò#H!í¹yo¢wåÔ¾A©Ö-ÓgÐw$å}¥<®dz†ñ¾€Õ"û*¦+s@zVšã{WG¤MHR´*€™£„Ÿs>ÅÔ—Žçú!è‹ ¨Û 9…*­·wÝó‘ È{¤[3»œ0Õ[«WØLZI[&Èμ¤Ÿ;wcž|5ârs Hµon–ÓÌЫøÏ€šZ¢5EÔ€LËd¸y¨Ô¬Š@Fõê3¬… dþQ-ñKõ¦/¾¨IBé´Kî¬ @­žÆ"bk3¥MS¾b ïr˜~œMbÚk$SGû©Lü"¬)Khb¬†Dµ¸SrÇ~»=ß|½“ýWå,‹:xb±ˆŠ;ÿÏèDôÙçŸÕj5WþæÊÝOï®®®Òˆ¶€{ß~`¥qµ·÷QüíGa㪀¿r'l\¤€T32Š•ÆU z_…„Àº8/´®Ç|xSÿñáûõÖuãFPVÓ SBÖ´nƧ ûé³öeäxì§Ò×#ub‡Lݱ}Ïe H;•˜ í\BüHŒeº¡7ën²åXª»¥Ó"©㸧UI¨öT¤mì™.ØáFä·­'\·§××À­¯Ñ§›×;½îÆ›^&*m1ÂYïU‹cíù2 E›òwKFÕ‰Y}£3 $±®¶Ó#-«­sËYUÔ$ñ-•z=$rËM-hç§”s¡•ÛjÇÄÍÚˆfþN¸ä@-VÖæÐvf¯]!é'_­\¶N¯Ù;v3eH¤3¾ŠvŽXjtšg¸–AByOÓ‹P¿%}lû˜0åG¢ß»Xõ:±´+,R瑩nóä…z~AˆÄÍש92ç’;s­gmô¤§W¿ÄWÔèXÖИzS'¦F´W™ñu%œQ‰97Ò=f‰›è„iCÔðC©(sér¦dü~Õ"¦¥²ÔkÐøu9µÔü£g;75kæOµâwù Bí¦ŠÐz€!!~'6HÕ— Vå$±ì"ÿP"L­®X6N$Ê_DYGÂ}ÈxÙy\¥Z-½èš®÷T­œDª¾ŒG”™µ‘q B²Î`V|óõµ‹TÑ1vH‹NDî¡PnýÓ-!Äúk§Ó±Rƒ+:we'áÂÆÕ°q@¼wS˜•ÆU¥Ez{R)•Ƶ•ÆÕ•“Wm‚+'¯®œ¼ ³w@o÷&€•“ÚÒûú&ROI*3 k2QçÚ?(9Ro^«7¯è<ºim_õS×ê§®BI“N]¯Ÿºàß·^EJ©„öºA먙kp~RºL–²û!,Çû¡IJ?’6c¦ØöX9óß.}ÛL˜VC·zR$BÍRÃŒ%t›.±ÊÚ7ÙÓ©kåŒ,ýùAÕ µŽÐññ5°ã0º!Mª ÉhÛ´°vw ’7SÐÎ}ÝŽ?Hšv£}]ï~ý(€Ý|‚¶S°#*]ãZ—ˆô:’&ó8j¦Àzï“¡dVd [’i›G¾´ óe¦)Êì9vî@ݯ€ë;ýa§.R=>sO]d­#nÁ|H¬Ö Ó™û®œScX23 jä£÷¥ Þ/ÝB?!¤ŸêîÒsU°‚Ëx” €®¶°ï ¤Ñ$Ú'Œ¤’«¤îL¦ËÎ÷žƒ¶Ï¶Æûޏ1ü'A•¡´¡{›ôv#Ƭ<"Ií¨nOÙ&•Ñd“¾5&϶.ÌseKÞxæ©GZÂÎ'ÂŽX¼º ÐÖ,kO-˜„ksRb¨çbpïx µ¢ ¡2¦Íâ^nSéè1ž- 7ì”XÊ^ñ2µ‹è‚ñ.@÷X²÷ë| HôÄt­W eªŽfƒU!NïÙ*¥Ü8»¡Ž¯üÍ•^¿÷£õwÃúO.ü¸Ûíªp‘wßfÜæ+â½z{Q£ˆ#göÑï{_ß´“/é­Øl_›:ͪú©köµ¿vvovvµ$NyQ¸¡Û½ßñì+@½uý…Öu{‹q»™…n|Bç’÷݈Y.DZØ%”+«¶Ž¨mšÈÛ«_™Äv„L‰é÷–Ü\ª’Èôpä8Õ:T;HgauË.ÜuÍzTÚkB5:®W=ŠôŽMgu·×¥éƒÌ’flË)[´ÏÅö¦ÞÊôvÍ,ƒ+1Ó’"yÞ!ЖÓÛÙ_Ó+Õ¯D•¦ÚÍ0“²NÍ< ¶¢º!#Z2mºñ즫Á]Éß÷\øº‡–HfŽÀZ• È”¹ O-¥!–êô~$*ÿnÚ2µ:LÿêÚzª¡Ý3¯»j£æÝíJRãÂôLWËJU•úFƒl‹Gú¡À÷6HÿJ/¦Ót—öÞ#“—sªòÓ3SB§]E9u¢Ûk 1–©]•§ˆÞ}„dQ¯\KyÐzÏ0á‰@ çqt/¥Žé*ÜÄ­1ž®*RýŸyúmU »1«Þò" c;­oÈ8/q­Ìþ%&³©·+66ÉØ{f‰Í—36Àý&Üœ!Ç6ãÒO¯é@Ê+>5z0;Q‚M‘É'½n º¦C‹ȸ<ÇRh71êwiî¾\›˜êÌó¦B2³i ŽX¸ÔܘÛ:æª9 Õ wj®Ä\×EÖömAҔХpÖF¤g7í?hÜY$Ùƒˆ0Ò/Lü(³PË"ÔN0æ€<©½¡@-%Žl9Ð=0²ž¿iŸ ›g»&…n™_~*Äîní%$}2s—ÚÑÕ›yI2:ÏØKÒ…¢H=° ™ú Rß‚ ·æb¦^Bä0Ñ+ú• üséAèµlôꤰˆ…U§OîîÙK‘¸9µÔü#Mܯ$ ›½äý6ÄúÓŠ-gÝ õ_Jù ‡€ö;Ñí0µ”¤¬#Ä[–Ì­“;7èg^ûDHV«5hº7I·«nކXvsü®Ì;ó¦ïÔ¡Äý—k\º  ~êzýÔõNzÊæ…S×íq˜Þg)`ö#ôºpêwëEƒû¼ýHTVC èÝÒTü $û‘Ä2‘ö:Ì Ô±'åúg%B-#Tï’Ðþhz\Bì%@j?Õ²Ð&T˜Ñ Òë„Sm„„²ŽHHiöA’d·ï<Ý£GuHàö1è@íÔ) GTz?mcó¾@”nÍ$ Ù“ 0í;ivg±Öëõ‹Äí@÷Xn6:¶=€ÚgÉeDºá½_í¯ îE(±‚ÐìßC” èÊ Õ¦úiÏèmçõõNµ—Ð{x§ÚñÀl…¬V–i{I*}×3…ä ÊÏ.¶k€ÎŽ/»½IôxN¹µæìGb[X+X¥½kêÕ³±„0ßT’æ!T-ƒ$>(fx“õÇÒñ"%©Páâ‡nÓ^µkV·Ÿ2ù•ñ<€+7û#R’’^0û‘¨Ú²÷èE%©õq©·U=Ïé©…Þ*л;ƶAN †Èn1þ^2†ÍëæõõäØëƒí#DÆ<™ÓÈwÍ´&¦{5 &4å¦F2i×(îïGÓ9ÖÌŠ›zŸ'÷ŽëÚI­&…”²{éçW¤o6…ñl ³‰ˆ!±¬ï…¾5€þÒEHö‡¤õ’LY+2&º *O¸xdÍ!U\IòIýo~¾ýåýË/þ§o6°·‹ŸÔj/­õÏoáÎ*>Šð“;ÿe·†wm|¬üà*•+?¸JûË•ÆU2p tˆy¼T%®œ¼ ë~È•ÆU˜&F9·õ“× e©´.o"€LäÊÉk®‰ !Vš×Qîʽ޼¦~/œº¦å'O¿p꺙Xq §lÔ·Ä”_ä ­ëÖþi‰ÉZ£s­AžÅ€Ü€e«B̶ìöY¢³æºoËî—‚Ôm»ÍþñPÊBv\W€m¤wž©VF=ñ¶/—6޾0ÙÕQ÷°îxz3ì@ï^èYgЦ6;[§}ëÌ|j@gOÝ×`faRcˆD„ŒMà èù]füá$5iƒ¨>Ðw—3ÒÒƒ|²E£±í¡òá×=“ÞÝUÙÀˆ‰±ùkÍafÌØV©ƒ"P;ÎÑ­S'0£méú-7ž6Ÿó¶GS5è~$¡´ö5P‰2>«Ê’q‚8a6¾Þ! á>â}aw®„q´4EczA3k£z¥xÔ]Ó^ÐÉd}_B&€þ‚’kšéBA5œîWB©w×UŠÐb…@Œ$S~ú€9M IDAT‹úIÓ…Ij*Ô>Ë ZÞÜCíbž4™Z§F¿bCÖ ºª%;kcïdwã±íᵨ›¬90¶‰D©êM׬V¨JÕIoÖt|ÿ~íž"Vg“ïøé Óv鉳:Z=áp…/Ü1YÅfÇut>ΡWÜÄjæE"mñ¢¾bú\m;‚0õõ±\-Bgmô÷ö%õà‰Í¬ ŒÍÞì.ÂÌ*›lÿèjJß#ìüf6#Cíl6mÐJÈïÖ°õ·ë·ÿAŠÚÞÁú-4Öú û 4ðJ·ÿ峟ÔR‘Ó»©Ä&á¢iŸÀöOv‡Ôlbj<µ€Ðß­Ëú|I¨Q¸~£`»ÆTë¦tÌîxäV ¡¿ÁFF~q B3« =æÖ—r!¦­ u#‰câÇ " Är9Æ~5ƒ³c9æK{d7 ×ÛÑ1W°¹kt…’k‰¿¼©)¯Ñ–mÒëØ~Î.μbº¦´.1NÝRf+Lgs³7ýŠ[¸¡Çß¶Ê$ÙI:µµñHȸ¢KrjCBæã”ô õÓa¾ÜA®(í¥½ïÚÖ_Ĭ¹Ðë?Iù‡±õ Iå0ßšew…bí€bEõó ç¤<~È÷óRûuÒnTëNXŸVAö/‘é;u×J̵`°÷~»ôI×ט,Ô«A-UÖãUÛEÌçO79oŠÆ&ot¡„Ñ[‰$VHù‘Й³öG §$mjï×í n*Ë<™v— Uþ±HBiV“ cá‡V!  ÕÌ飼˜QµÍYƒM|}¤±Žè/רq…••f\xë¢i}¦‰.±þ’ ß°„ócp^qv|•¶Zù}ºíÍ×áí}ÌT»mµŽµææE7ëŸE–XÉ~îSÏe_ŽLm£¬cY»¾Fí/Û2»iFSÚ¡uQ—I 58Áîø`îHìËpÙU;tÅöí0£…Ì>Ô*ÿ‚Œ„ļxãö"†?ÎY–Âö¿ìÆ»ØÝ»Ûët·®ü—÷QÀûêEð6•·mÝ­ÁŽù„µÔ©Î4Ï¢ë_Õ¯tÔâªN e—3JÐ ÏîGb¼Ì\ßfÞ!Ó®¹¹¸ž~Ã!Ì3!3ÎÖctõˆ9’} “XÉCcŸò’ýHB,Cúcn[ΰބbæ_ý½1÷P:±ô!Î2 3¼‰@j¾ÆúW¤ þ¡µÖ¡ºÇDqã…i*ÜLÌŒ(œ«ë“L+aö\‘ê(ô«¹ùz1!Ç®C»7«v+IB‰Xú›ˆÒÙ´(êåÍì~A¿´§~ò÷#qåió¦ö‰O­59'û‘ØwMh+¦é´Ì\ŒˆÉ¬ ½k½†k- ¦œCå—ØjõìÑï hu×ÚëfꊔÀl¡ ;ÿH žìªbËÊ:!!öu¤_Ž$5kJÛì6Àxÿ4³6FñÄÊþa=^M Ê:b¾q£[cÓ8»E,¦¾±§m„Æw*ÖrDÀ,OÓC&³\˜¤,Žf]›ß»ÌÚ¨~Çv¸~´þ# ðñÇ9‹R¨HÐúa?°NÂüQ†—˜RCdòÍ=ðÔåèVUh«šßx?±ÃVë=D,ÏiÕâÞüôÍ XK»ùŠ©wë `{,3bˆmxëÒ®ãOêô˜yÀýJ¬Z#‡Ä~,,‡û1–õþñT¼»rôžZ©·×\ÝݵL…“K]rT‚ ëHíþ0Õþ}º‡iþˆ-ÄŒiÔXVÍâK‘¤¾=$i{ší·Ré ïã̪}ýrR¯ØD¹µ ;;n-%d?ß´ãðö¡ÊìG¢L ¡ b£ckáwg¾s!w§*u–„YáÝoýM ë¦{#2ÚÂ|'(o|¬ë¶m2{±;{I*6é°st§Sz.LDŒ”u3<ëˆ52ï‹©ýãaý[—mOIÔ|ÊSÏy^Û§Ñ®FÑùó÷)†s¦¬üoÄPûž‘;´ûeéO7˜…t=ýN¬ž•³ßû5³6±°³6¦• ¸<“j#_$…Y§²9©jÁÜ»ìݵMܼ j/bøe«lÀa Ú.¥òu×hç@ÄêEbI=f0ûõž}±`~P¤Ÿ+·ë·}žÓ£ê;m ‘î1.úr¤™#½ó?MÕ¾©/ ÔÒ'p;h§Ö€ÄWf¢ u êƒùä¯ûÒ^¸ŒxØ·ã+ecGÔÙW_w k­WoD b;âJtCçú£À¬ÒÊ~ewŒ•sÆ`ûT³Ac.ážuÛ©ñ“0žäHÏÑhO½Ô~y©Ÿn÷dÑ_úU«°òi› vý>ÜWô–!ö}ÈeÀÌÚëõÀ"3”Æ™«½t¹¹pû…L÷ªÀ·-VíØáÚA2R¾93p%IZ[SéKXEh¾üGŸs12'ž¹êŽBb[ŽSöUò^¯H¾ú+MMeöiÕ3qí¬MêûÒ)R£XgSª"&kvhuߥ XV»Z?—wS³±ýV‘k%S¢ÐèÞÔ¨L§ÓïQJ£HIæwì첿2³ÌÊí©R«tÖÌŠ3ê­ý³zŠ˜}ZÍݸ¯§÷#qžXꎵ¡ÅnZªîúÏp_ÇÕkݽ'Jï¢ ÐÌCÙÛO7±«eUÚjE°Q'0;Ý)+¦çm`æ^S_í& FÆf mÏš®5Ó²éµúHךpÖ#:kã…ØÜ›¯Ø¸=“@ýZÕ®Viã“ù2kùð†¹/õµv ßæÍbÆZÖµŽ7çy6Çú{Šf–Çv"d"A NîMqO2ŹêsÚÌÎÙÅÊ™„ØøÖJ¿ ØÝ{IŽó1_Ús›×íKåè ¯e3ÚQ©É0pßÄ u¤ŒÐ7¹-65Ì;©ŒïÜ»8«|0 ÃÌ7Ù^F :öN)ì§J/WrP%cC‘äÙ@™wœ=(I°Jâ¹ W¿\–~…Àþ0Ìè¤ɤ 1 Ã0 à „Ú®ï"Ï0 Ã0 3mX‘0 Ã0 3{X‘0 Ã0 3{X‘0 Ã0 3{X‘0 Ã0 3{X‘0 Ã0 3{l¤²ÖL}ôogwG…Ѓ‘¯í%žM-÷Zk͵êx‰ÉB/7ðBöFÆ/É¡ð.W~õÎÃ0 sd©´µí&Þ9UIÐë>G¾ÄZsm(A3žl*¿ÐPÚ…a†a=Co6›;hžlÿš½„'DÆWžzÀØæï•ˆÊgQúöF²™±‰äf^‘ÆŸ’4'hc†a˜,ð#±]T¶O'µ’ —iϼLäFJ’-º‘’’ôr5Ù2xõ¢l0 Ã0̤¨d#±ÝÏ4¤@Ѹhˆ² 5¿CSSçz!̰° Ã0 32•ÉΣÝÝg£Ízl±Ý&…µŽðÄ Ã0 3üHTçÝ:µ³óhwç\zg­º4)2‡´¿ë»[Zö¢UÜMr¢§°(™ìGÂ0 ÃŒÉàµ6ÞDÆPr¤È²ýÅöúÙõѶpUz‚ÎÔŒìµÊrd‚ðgn†a˜q¨4kcûûaåˆ|ÉÇÑýOÚîÒVÿTàöÛÕJè< "ÞŒLE…aÏåÕ7“…ýH†a˜‘™Ê·•Ô#ý§± ´š½Uœ-KÄ“ E³6Õ# OZe]bY¦ŒïGÂ0 Ìɴv‘Wó5V…l^Ι¾ÊLÂÌ3la†aÆd*6I9í½N¹™„Y Fó#¹õñ€+—×J~Í\h@d/ÂÀDr#”_ËK?7ZQ²UÒœE÷bEAÑå–ùÈÕZtznxnÊ3À0Ì|RÕF¢öê˜à…c° äaã`,%·>Þ)ÑÕ™Tffué‰Sž±i÷ñ“-•Ϲ-j†ar™–dãèþ'íÚ±@çéƒÜ8ÿö'Sº:sÀLÕ¤ŠÍÃö—J¯d;ÎìÚ‹6¥¾67ó妈Ea`™—3°F  ÃÌSQ$Ñ‹«íïºïDÊ›¤»»—óî/ßG…oÜ0 ÁAîG2~÷£R¨ß3Ð^07°—.šûð~¢W)š@©>¥B³Dg2ß1l0 s(™–DI‹?»à".Lé*Ìü°@û‘ŒÖù) 4fÇY"G1x?|!šlnêÅš²Q°á„aŽi)’‘éþ©ÿÍ×íî÷Ü_Å1Ñ85^ì6Ë<³Ú¹•ö—EýP¶Ï«î›"^ø@oТKg­/6çž…cL£NÑU‘ f¨KŒÖ÷V#“ÍÃ0sÅ|)’íß<ì~ß+‰ ŸÊ݇{»÷V¯¬¿Ñ:°Œ1å,Ü~$#8=XÚqú¼¡VåÐø#˜gJâÛ™Ÿþ{~rÂ0̬˜/Eà_~ûku°ÖXÏþº³§÷5¹øŸ®\ž˜AÌÃwmÊ;ìÞ´=[çħu4÷—"Æ™m¡FJœš†9L]‘ õMœõ7Z/l¼ÿw7eÒÝk?ŒeìEÅÊù³ç×N­­ž¨M>¯ÌÌʤ¨Cšyßïa¥@6c³ÌÇ §ºd´.¹áVæó†a&ËtÉÒÒÒÅ·oÓ?Š%5QÎŒL㇀r9â}Úfœïð¥ŸMÍ^ôˆï@0–’Ü‘ý°.#_tg…¢™ÏwÄsn­âGR=Yo¾f‚FŽ™Ø*æ! ÃLŠ)*%GZ§ÖÖN5ì<ÚmÚ©®ı0:¾ @>Õ!õç´Cëî—íí¯¶4^~iã\J»¨Äò+zÞ§þަ(Ó¤ÜÉñ`º™ÔëS†þ°§Sà ½bîOó\žlù‰#ÜK }W†a(Óú®eíTs­¹´Ö\Rºd"lµÝxù¥ÆË/íýþ›û÷V9E}ì׃6ì7„½ÈÙÜd½¯ôÑÄ‹.á¥Lÿ¯øùâyã ¿kCý1‹ºÏilÙi5D6pØDP J/¿nùŽpåÁQ Tžmªr¦Ì‹¨’‡™l¬Â0Ì8,}óõNãåæÞïwl}x ÀíOn:«ZÒKKß¾}åòŵæ€gÏžÝù»—ÞYhE¸úÎõèùfšÆÚH¢ŒQ¦‘û÷îýþ›Ÿÿ_³—¦v ¤m'ÙzVI=1{!/Ã^"7þÜréKê9¡Ž#ÔD ”EYz³̶‹]¸~á2Ì0GŠ[ßRˆ’Ÿß»¿ýåöÔm$;vwvGù&Ž8îý¡½÷‡vûû¶÷“©Ù8×j¼üÒÀ¤²W÷T5N(}k®(¿‹l:3V=ñ…€¿Ì0 ÃŒÌýHT×Þ:µ³óhwçT1P<I.žÉxYÊÚW†JgA§]Ædáö#a†e±¶ c Ã,"Ó]kcç#ìŸÕÏ•Oý¥¿¶¿ÚþÉþñr–‡7]’Õ¹V“q<[=‡’Å5“ÌÃ~$‡ž™÷¯3Ï@u(« ÃX¦>kc{Ùa»Û’Y› BçhTm͹RžÂ—x•ùGíG2ë\0 Ã0‹ÊÔÉ84~5~EÇõ¢ßí¯¶×ÿCÎF®Y¼žÞ;öºüg/i9•{nI Ã^‚.(ìGÂ0 ÃŒÌÜ)’îŸúê wÖÆ‹ÃÌ Ö:Â7 Ã0ÌhÌ—"éþ©¿ýÅuLgmÔ?k ÙþâÁ!% m[G†a˜±9ER}2Bɵ Ȭú§ýÿ~fc2óû‘0 Ã0ã0_ßþ]?{zû‹õçê:O:{Hù´*WõëúÙÓ3É!S¯¸a†aFf¾Éꉚ’V—ä²~ö4ûw®X¸ýHxމafzŒÖÌ—"ùöï…¿Ù˜uF˜!XDëȤ¾–À0 ÃPv·K?*Rùòleö#a†a0†zîl$a÷ïõzý—~è<éåX=±:Ë\:ÑRÂ0 ÃÌ ‡ÓFÒ|µ@«•³™ ¼ Ã0 3&‡J‘ÜùŸßù§»Ýï»Ýï»íïÚŸý¯ÏãÞqøW«·>ío¼Ó™uf¼ Ã0 3&‡J‘\|û<Œ $z1°RÞñ»{E§ç~ZÏ20~Iä¥4ÃßÙp {#O¯Â~$ê[²E E5;rÕWIðžÜ<üE†aªs¨ E~º}únËO·{o^¿û›^ouç·½_ÿý76Âç»öùßþ@¨ý$M¶ÊE¦?åþzT¼ú8ŸúÍRrð*¤ %õU^õE%ü, ë†aCåÙúùß®õ“›;_vv¿l7*ÄêQõÄU/2ÙíÞm·d“U!öZôŠö¸è,{"J…MÖKÊ;7ûkQšß„ÊõeyråòšýÉÛOÏ—œ5Nf¦Qõ”l…"ó$ ]þÞqÑé(¨Y†a˜9äðØH<ƒ‡¬}f7‚ëô¸ÑÞ¸þòŨ5ñ j±§ 1Û’tÉY´÷ªÒñd“¢çf-aL?ÏLrëã+—×Ô?ïWõ“w¬"Xñ‘=kžÉ-ç*OB•Ósk–af>9$6+G¢àZÿ·ˆØkí ½ƒ–`L9B;þ£Uâ R‹ú›¢$7²ê†½‘¢Ÿ†YP~$#l‰CÍ6’‚Z;ªX>Æ´ŽdXõ(èø³µVårãÏï° afQ8$Šd¨ùÿõúÎ/ƺb‘¯@ùY^76ZoQQ”¥¨»-aœýH²f䉕aÓ™#W½=Ý‹<¦æÈuZ*Ç Ã0óÉ!Q$Öà±õ_·›¯E»_¶OF{í• ½»÷·No@¨ð=ÈèkÀЫs§ó½ŸFf í¤h‡7SS%'¹qJNÌÍÌÅ·/Ò1ýH<å1ŽóÇÄ"Y†jÙÓ½ÒóáÉ=½D1 ÃÌ'‡ÇÄçŒûßùfÛ;¾ó³½Üµ6Ùõ™žóÇøÐI/qB(E!ٳʭÙ8¹'zù,ÏŒeÞö#± ‰'²¢¸HŒŽ?¥’½ÐÀ*§O6W Ã0áR$Taȯï7Úí/o"3×ó,B£y×è6èýDûølâÙÈ^úEgyŠn-7<7«E—νÇ1¿k“uVLxgU7–,¥ÉNÜÆð,=«R"³ˆfràéKƒlo Ã0óÃ!™µ‘#õçÑúl·¿Äîùh¿láË®8àµ6GaýH<ÑPîµZôkõ³r)Ÿò>PŒ–Ÿ8lÆ œ¸®b†™,‡D‘Xëˆè|Öï|Ö7Ç´ýp,‚Y¬þcâû‘0 Ã0GC¢H†]k3çrdáà¯þNÅÒ¦ Ã0#sH‰RÊRrþ F`FfäýH†a‡F‘(J Ö"Se±,%ó¶>ˆaæˆs¨ 3+ÎDYtnr{Öa†a4‡S‘ȧ²ó} ^8Y°ýÍj}E&qý¹•ÚjmðÉÌð,–uDÁL Ã0sÅ¡ÚDÑýS¿ý]_JÈßìvj++ROÑÞëô»ý¥¥¥öº³Îã!dÌýH†a˜#ÎaS$ÝïúõhÅ ¬¯Šú‰•¨Q_©¯øüñB›©Àž Ã0ÌÈÌõ¬ÍÒ ï©z´¿ë˧ò›ÝÙ‹Ûß·;ß÷\ýåmœ›ÿý£óoþ¸0 f$΄a†™7æW‘,--]|û6ýs (é?é OãßïõÿÜ—2F‚÷q»ö®HÙ°ñÆÛíNxL¬÷}J¦±_8ˆ®ªžxÅœ,¥¿´7CÑ„a†™+ætÖFɑ֩µ+—/^¹|±ujíö';å_åhgwdE¯×—O¥’#1$€~¯wí½«ê×Qk;ô·GCÉÅáþªû‘0 Ã0ã0§ŠD±vª¹Ö\Zk.­ÜÕɧ҇DŽL$ @$@‚›ÿý×oü–Ñ{Ò/L(MöÛfÙO²ÙÀì¹¹Ÿ/)ù¨MÐû?73%YõÎ=Ø„a†™¹V$–æ+ƒãH¯µ^PÇñS‰} ĉQ*û.òë}ºÊu³Ž\›‡ ¬Òýç¦@C¼·ÙrsKIƪÜé˜XëOÜ0 Ã0£1׊dçÑîÎî³ê}êÎÃ?ª™H „€€ÞS3S³Û?Éå6Síõ‡ò>É~ª~:™òaëÃ0 3&sêÙªú­S;;vwÀ¥wÖÊû×ú‰•Οzê¸ßí­Ôjý¿ÄJ”ÄÒÌÑ$éužôÃcbº70 fëß:ÁïÚÜúØßìÿÊåµaSÈ=…¦¸S;‰þ^d´Ôž £fjOصæÒÎî3/Ä{?eã—D¦?å&5Y²7R…#ëGÂ0 ÃL V$elÞØZ}®¾~v½ßêÝÿçŽ l­G•èÅÕ§Û®=«?vvŸyE‘‘V!£)†is”ýH†a˜‰À³6…lÞØZ]­¯Ÿ]ï?é !¯Iëg£õ³*r„¢ôÇd³·Ö\Rÿ¼³Š÷SùYE'VgÚû‘0 Ã0‡¶‘ä³yãVt¼Þ:³ÞÒh·ÛF´÷Ûvëèà3“Ó¡–ÏâR¢'JÎÊ ¶”0 Ã0#Ê$‡Í÷¶¢¨Þ:Óê?éˆcµv»]¾ˆÞýpË}m—Ÿê +²*ÅʣܓõJQ!;»ÏÆ™ b?†afLX‘øl¾·…~£u¦ÑíökµZûÛvÔˆ/F,ª\Å0Px f4QQî [G†a˜1a?’JŽlœkÜÿ´[«Õ:»QTŽ×Ç”#tJEY#ì¿ñýK¼² æ^Âs?'ìGÂ0 ÃŒÛH›7¶ð¤±ñfãÁWmðþÝöÆOëщH1øäoúçøX3 t¨âAö,”.ö©[J†a˜‘aE¢¹ó«»«âôÚ›«;_uEö{½óï4êÇëåHÑlHÅh%  h%p•+f#ln'[&k͵Ꙝÿê(zˆ¡jdžaE2€;ÜïwÐ{*àc@ˆ& û½Yçlž˜ëˆÅkqJFE#÷“…¶õªq9€Ì,\)Ã\•g¶ƒ?°J§ÌÃ?=ªW‡"[ÓÊÙ¤É*ªÅ…É.þbcóû!¨ jÇäl36õ‰åáÊå+EÖ"hÏA_û¢òÀÑÆ¾Ùƒ‘ÓTîR*ÏØ|–g63Yr¿^š㗉ꭇJgR—®Âdï¢ç¹(Ã%1+ž5ìÕmZ/”ñ‹ô áµ6ØúàNídB4Aí¹0j®ÐhKKþgê–Ùd½À’ÈKiƽŸAŒs‰C¶âÆŽ“¼vÁkèŸv¤ë"ÝvŒŸ™‰¤9æ¡”róXôëLÊSÅË#TÏdnQ—'8Îåªgû /=YJŠ4›áì#íÅÌ=«(ýêW·‰S©qðö¶IÁФŒÍ[µcáÆ¯o¼U·­³õŸFçZOfÈêl`QdúSî¯óÀ¡Üd„WÚ6¹-iI‚ê”’ALѹ3ow²”†ÊCy:³-Oz•]2ñLL™,\u(¾ƒ/BÉ#í …‰dµb:¹êg"˜¬H Ù¼±µºZ_?»ÞÒB4^“ÖÏFëgÑ‹«C%5 %‘µšØ?éÿö§ò³ŠN¬È!³ŽT'Ûöæ °“*¥Ã„7ŠT¥´»0EÙ*éÈtyúG­BÙ$ŸÍ·¢ãõÖ™õþ“žD»Ýn4¢½ß¶[oDŸ*ž={ce±¿*Åc*I§è¬Ü¡˜?’òIâò æÑ(™)Ÿ[¸”&Ë8å9q zhJudÆ|¼ÕTQÑlHã<Ò£Y+l#Éaó½­èøJëL«ÿ¤#„h?nן¯G'¢w?Ü?qÛå{†k«È 5_#G¼øÙÈåW§g©<¨?G"¶” Œ6KO<Í)qÀ¥4Z:Sžc|ž[”þøe²–Y„R1Íy®Ž*LÛV1%K‰çÎ5rö V$>›ïm¡ßhiu»}q¬Öþ¶ý j¾Ü˜à·÷rÅ„õ):ËS0Ô¹¤ú¥³gMÄ=e~üHÔÉF·>¾5ñ¡¿7s¬þÌNÎú ej»bš%,\)ÑSªÏôÏmyŽp;3™[ÔÙ8¿\uŸ†¹­Žò«W©£rרŠg•û¦T¹zõKÏ-Kß|½Óx¹¹÷û][úûÜ5”Ù8×xðUwýÜjçq·^¯E/FåHÖ¶‘)‰V2W20ÜY›òÜë5k£ì¢ «ü½ýHTsPE ì<ÚY;5ÉwIÉ#µE£"»]Ã¥4Y <½UXQïLàÇÛrðJÅ&Ýnd§äÇç÷îo¹Í~$ŽÍÒØx³ñà«¶@xÿn{ã§õèD$D%ëH®·ýs|¬b V o¨ÊAö,šÉÑ\IæÁD¡ò@…õ<äjÞàRš,PžÞjX–#%ðã b5Y G…‰æÎ¯î®ŠÓko®î|ÕAØïõοӨ¯W”#¹ÎÕ£•OÖäþYåŠÙÈÏG<ÍÕέG°.¥É2íò\ ®e8â÷">-ìGbÑé3Ñοw ßë« +Êf~üH†a˜…‰¦ÛŽü¶+/öÖÿº^?^_]nÓ‘ùaR“DÕ9²«l†a˜IÁŠÄ ßé…µNÕ›¯4'¸²æˆ üHf †afQaE›—·ÈZÔ¿ðöùæ«Mö® ¶”0 Ã0#ÊV]@\üÙ…YgdQa?†afLØU´Hû»îÃß´{ŽÅŠŒ^©ŸnMrÏ´Eg®VÙ0 Ã0‹ÛH*!ŸÊn»×y÷ûè¶ÅÃ{½½?´g©ù‚ýH†a˜q`E2˜î÷ݽßu¶ïµ¥t¾`EâÃ~$ Ã0ÌÈð¬Íî|p¿ßAï© ƒZŒ]!š€ì÷f³yÂîÖÊ7 Ã0Ìh°d±!Ÿ"•#DíØló5_°u„a†V$ØúàNídB4Aí¹0j®ÐhÙoç.²Éz%‘—ÒŒ{?ƒùìGÂ0 ÃŒ+’26olÕŽ…o¼¾ñVݶÎÖ7~mœk <ý™!«?²E‘éO¹¿Îl)a†aF†I!›7¶VWëëg×ûOzBˆÆkÀúÙhýl#zq¸ æ§¡$²Vû'ýßþT~VщáýH†a˜1aE’Ïæ[Ññúúkëý'=ˆv»ÝhDdëèà½é¬úf: VR¢'JÎR!?D\[G†a˜1áµ69l¾·EõÖ™VÿIG«µÛíúóõèDôî‡ñ§¿=±LdU!4ÜôŠ’ÜÈJ” {/åG2Îç¿o}ì;ûÊåµaSö†afN`Eâ³ùÞúÖ™F·Û¯ÕjíoÛQ#j¼8IÓH®b(<3š€¨(wFcÌ[•˜Pºda‘4 Ã0ÌÁŠ$…’#ç÷?í®Ÿ[í<îFQ=:^³œ¼Ù–ÜŸÆOÜþ™PtV‘ÁfX¦º •V©xöO6“0 Ã,(ìGâØ¼±…'s_µpÿn»Õ¢F¿_“]£ë9Œdñ·!ÔˆR’=+wþ¨:Óó#±&jAÉZÂr„afAaE¢¹ó«»«âôÆ›¯º"ûé+ŠNDBT’#ÏÒx!4ZöÄÜð¢S¨¼È&žì¥_t–¡Ê-{ü~$ž.a†aV$>íü{ú½Þù·á±°¢aSµ”ÍݰûÃ0Ìá€ýH4ÝvümX9Ñ[‹êõãõŠ“5sȤ&‰ª3íïÚd­ Þ$›I†a¶‘ô;½°Ö‰¢zó•æâÊ‘™p0û‘X‹ˆ=`!Â0 sh`E›—·ÈZÔ¿ðöùæ«M¶À”üH¬-„JòÀ‰ça†9¸ï€ÕF·»·zñgf‘ÅfÌýHE4#2 Ã0 +¨¢EÚßuþ¦Ýûs,VdôJýt«Á3;–iû‘0 Ã0‡žµ©„|*»í^çqÜï£ÛïõöþОu¦æþ® Ã0 3&¬HÓý¾»÷»Îö½¶”.ðÁ¬HRü~$ Ã0Ìa‚gmpçƒûýzOeÔbìÑd¿7ëœÍñ#a†aŽ&l#ÀÅ_lȧAåQ;6Û|ÍÖ:Âr„a† V$ØúàNídB4Aí¹0j®Ðh¹ß·ó>sS¿$òRšqïg£]‚ýH†a˜1aERÆæ­Ú±pã×7ÞªÛÀÖÙúÆO£s­§ÛOÆdõG6°(2ÒŸÈ9Q2ìGÂ0 ÃŒ+’B6ol­®Ö×Ï®÷Ÿô„×$€õ³ÑúÙFôâêPIMCId­&öOú¿ý©ü¬¢‡‚-% Ã0ÌȰ"ÉgóÆ­èx}ýµõþ“žD»Ýn4"²õFtðÞÀtÖF}³FP«‰ )Ñ%g©".‚ýH†a˜1aE’Ãæ{[Ññ•Ö™VÿIGÑ~Ü®?_NDï~¸1~â´ãϵUdR Hk…"Ï’r=á¥ò þçû|la†aÆ„‰Ïæ{[è7ZgZÝn_«µ¿mG?ˆš/Or‡Ö\1amEgy †:—T¿tö¬I¹§° Ã0 3¼I %G6Î5îÚ]?·ÚyÜ¢zt¼>f9y³-¹?Ÿ¸ý3¡è,Ï`3fNx?f¡Ùy4ëLµS³ÎÃT†‰cóÆž46Þl<øª-Þ¿ÛÞøi=: QÉ:â0hȘ==M6ë/âÍU9ÈžE39‚4áïÚ0‡ƒCÖJÅbxÖFsçWwWÅé7;_uEöÿÒ;ÿVT]ŽUR˜É#1+¸ã€ÍËÛd-ê_xû¬ó²ÌuÄâµ&3â¡­ÌM@¶é©Î°÷k³:NkU=ó-™¡úNÚß|S¾(×­.PŸçqð …'h*>3y$V$°Úèv÷V/þŒåÈè̉‰÷eãÊå+%£5|¡mkEÓÈ@r{D/Ðþ9Tã>Úýz×µW,ï¹fx„Aó”Œ×"«D–Œw UòY1ÄKs~ *÷×Ü‚òr^^Pžm€çF˜TñNü®é=ÒÛ¡áÙÌ ´¤™^ÞÎô‰ÂkmàâÏ.¼ûñzyœöwÝ»ÿøðÖ/·ï|pû_wåSy0y[ ÙŠ›lKZX1Ú†fsÛ÷ƒ$7Ÿ%¿z.?½úg^2J¢Uɧ Éí–I®Œ+ÉRn°8'ôȘÅ{ð”×QÉÌËh•µ(ݰ"©„|*»í^çqÜï£ÛïõöþОu¦æˆÃý]›Ü—y"o¸×‚0–™—LV—xÐ ‹* z÷2©ûšyAUdà½{Ãï1Z%–ÇÌU#çpQ‰\X‘ ¦û}wïwí{mIÌ"¾`Eâ8dÖ‘i൭t¼8Wmny~æv„Û™«’ñÚqo_d;9˜¼ÍUAÕ'/åíWáð=ìG2€;ÜïwÐ{*àc@ˆ& û½YçlΘ?’ò àÜÉc:Õj&ÞÍdÌÚ¨GHv„û6ŸÕ­¡Ê)“-Ïf®R+/™ÜY/,Gr¯5ŸÐD¨^¼3¹ë9éï§ôH̶‘ àâ/6äS„ r€¨›m¾æ‘…¶”ÐIkÜÖg´&ÉŽ]ìÁl›Œ¢<ÌÐR2’±•;”·`y>‡eRÃÖyx„<Å6‘[3…9· Ì›ç3lâ3$&+’l}p§v²ƒ!šFŽ ö\5Wh´ÜïÛå~ã77~Iä¥4ãÞÏ F»Ä\ù‘¨Ñ§n}|kØÑ^Ö;¬(°b:´±(¬˜²b´ûÍ6^¹YªxOÏežK¦z–Jr5B™TOg¶U=KÕïñ€‹w䆂æ°<3#4™ö#1+–¾ùz§ñrsï÷»¶>ô7°;âlÞØZ}®¾~v½ÿ¤wÿŸ;*°u¶5V¢WiÌòúf?Ïë}kw`ä’ M–Šé+ƒ'Èò}o?õžW(;vÖNMømQ Im¿¨Èn…t˜8j÷[¡JfçÑ!üÒ^Å;šá#4Ãaý\½8‹nÞ°TlÒíuJ~|~ïþö—ÛìGRÈæ­ÕÕúú\ï?é !¯É½/ÅúÙ¨u6ÖýÆÓ!÷›½ôZ¹*§è,ï–Õ9ñ#Q¨lPm='›Gí~«Ã%S‘£YPsr×Ö€qäȘ°"ÉgóÆ­èx½uf½ÿ¤'Ñn·hï·íÖÑÁg†Î¤XaᩬæÈM§è¬Üa™·[B“J9j÷[.™ŠÌ¤ fÞ Ïüñ˜y ÌìG’Ãæ{[Ññ•Ö™VÿIGÑ~Ü®?_NDï~¸1~â¶Ë·6 ®È ‚gÏžÙS²ñ³‘˯NÏRy°Æ•‘oj®üH†a˜E„m$>›ïm¡ßhit»ýZ­Öþ¶5¢Æ‹CÏÔ”kÆ(<Æh"Wî`l÷”y³Ž0Ìhì<šuæÊ$…’#ç÷?í®Ÿ[í<îFQ=:^³œè”J‰옉Û?³ŠÎò 6ãäd®üHf™[+Ã,›7nEÇë믭÷ŸôD Úív£!­7¢ƒ÷¦³6ê›5ê€ZMlH‰ž(9K… üq ìGÂ0 ÃŒ+’6ßÛŠŽ¯´Î´úO:Bˆöãvýùzt"z÷Ãñ§®­"+”b@Z+y–”ë ï,•õçøßçcK Ã0 32¼ú×gó½-ô­3n·_«ÕÚß¶£FÔxq’¦‘\3Æ@A@ÍUâ%’’«„ª3æ~$‡Vi Ã5Fë X‘¤Prdã\ãþ§Ýõs«ÇÝ(ªGÇëc–“7Û’ûÓø‰Û?³ŠÎò 6#çdœýHŽ·?¹=ë,0 û¿Ûí£"¸¿ý¯»ò©<˜¼-ãø‘ÜúxÇ3PÛ‰ýóÖÇ;EÖ/07Ž:fï×ÜkåªèŠY²»øEóȦ@W˜gÓ,ºPɧ*æafz°¤ò©ì¶{DZ”@_tÛ½••vóÕÆ¬ó5GŒàGråòšíÂús ;­ã%Un½È\¢]¦êwR})øSf†™9l#L÷ûîÞï:Û÷Ú’˜E|Ñž]Žæ”,%^ïîY5Šl'ãe³ÙkÑišlÆfèSô…£Y¥Ã0 3l#Àî÷;è=•aP‹± DýÞ¬s6OŒéG’k“Ê d²]+;³“›Õ1öë‰Üx"é0 ÃŒÛHpñò)BP9@ÔŽÍ6_óÅh~$UL #›†:±JL›`‰oìD,%Ï2ØŸÊ Ííl&af&°d[Ü©D/2ZjÏ…Q3¤Ñr?¡g³£Ï’Ï㕤“›ÔdyƒŠ‘ýH²kU¼ðÜÀ* V7]X–’kUÉUù©Ó(ݶ¿ºÈ.–˜¦÷Å€¢µ6E§0 ìHÊØ¼±µú\}ýìz¿Õ»ÿÏØ:[+Ñ‹ƒwt-ZÕé}w·<22«:ç¶Ãá ÀE]xnxÑ4Jõ’_«xÂV,"·î†ªÐ\1Q=Í’GknŸ+†aŽf¯æÝWo½õÖ[ïûVÿ©þ~0KMõ[o•¬YׯŸzªJ¿j“Ÿ:^íeYwãÕÅ#3Au‰‰Bìn?+“N6~ëÝ·f},‹*à½6K‚¬`Ù„ÕËI$B±¶>=]»ñ#âHî¸)­¿–Çá“ð/¨$!„ðÉ"Ãßýzxüÿ'íó“ìÕîåÍu®ì(ô‘¤þ^?ìk}$^&ßNFÃã£oNÆc1¶}vüôëá¬jŽÐGˆD")7úÃèé“£‡Ÿ '“?­üò?I$/ày$€\µ)qð‹ã#qüídu¥s"…«bCˆÉøxÖG6è##‘”¸ñO¯ïÞz°*ô8"„hwÎMÜ.•à>’þÞ@ÿqg»—ò°´]Íœ?5^ß°¿7Hul1ïr¼ É•ÀsDRâÎ/:!ÆO³³,"„—V³U}˜õzj9ÿŸrÇëñóX§J+ìÄV1²BoðÄ_–¹ü–IDAT‰¾Óü©%FäyÝsÛ$¿$êO)¡@}H$.»ïßY{©»uek¼yüàߎäÊÍ+Ýlý|öÊZéæEï®3Þ»ë,^<ÁÌíY!þy$zÐC€YŒ•>kŒ9KO>'©…€Q¿âÅ÷2ZsjÕ— êÊ^÷hì.<”FL­…vß¿³¶Öݺ²5~vÜn·×0Bl]ɶ®¬ûÄþŠÝTZgŒ5âìdc|äÞªhÃJÂ¥cbg»§Ÿïe 0VJÆJëkžð¡Fé.ÔÊ"Ö`*7ò¯tVk¿<­ëó“äwg]©ÇQϯ1(ÔHìvßïgº›¯mŸ·WÚÃáp}={úÅpó¯²éLþšŽñ%X¯¸8ÎŽ­¬kü…õ‘¨^ áQÀ¨š'Œ©ÜYAM;ÍkF>/…öŸ!x×¥Ç@ÀtH,v~'˺›¯mŽŸµÏu†Ãa÷{Ýìåìg¯ÇO®Nùù@ ŠN ŽÖc°;”XË/ÇUÿ,Jð]6FÎÐûHòáÃè9M¨jI~V$,‰i÷çwÄx}óµõÑhÜét†ÿ7ÌÖ³õW²„ÿª¬gšÒ@`$˜°áwÄô‘Xëa] Ó1…ð¦Õüc õ ‹‹>’È8òúÕõÿ1êt:Gߌ²¬›]èFÆãJ]ü÷`ck3AÑVi[ªö‘ä;HÂÆ¤Ýp®v!œ•’ÓœºêC"ù“Ý÷ïˆgë¯_]ÿò7ö>v³Nv1ó|M¾ÁPý˜êT¡_d1&×$õÁÖ5ù­|¾‘;¨§µVí#gçu½¢¯/ZY:¡HWÉ0zZƒwQ)öåÿúXÿ~ƒ%üM€<®Ú>¾vk½{¡Ûn{ÅÏÎÄ€æAã#ÇUÇÿ­ÂN9‘}$žëó+«®©4¾hCŸIJµµZ—}þ}v䳋J“@BÔHÎL²Ë¯eƒßŽÄŠ_{g}õܪgà½6~¦pmM• $êF"yn4<ùò‹¡Xç_9Þú›n÷Bwm­ÚCGæÇ¬Î¼ØGÝ;5ÍOP7É™ïÄøèxµs”eÝW7<{G …õ‘ ÐG"„»ÛÅʤ“ßz÷­YËBâ­¿nT ‰D!ÖÖG£§k7~D ÿ^›¦’ÿföïíÏú@`®‘H„‚,’•’"5(E  ‰D‚è“DjÔU›÷¶ïT{ïk:’%D F£ɪ¨ð„®Á¹31úHÁ•H„oýßg¯äžl6™L&“v§£Vìn?Ìo›*¥\ù´Jã‘SyO韣*ú’©ª#‹G¸Æõ ;4-‘H“oÇãgG'¿»/þðÕy1nŸkW2±¹Óéœ×s‰§ø§Uê3LçiÜ¥»ÐßE¿»E¬Žp;.ÔáðÉaØEüv¶Žž~üõíÛÏúÝñ {n"Ÿ¾ÚùnØùà½ñ·ÇÏÆEïQgëü»|Õú`벃1›çür¡èŒñù×W=$µ²t[ÞkEè&’»£»ísâÓ·?}ï¥îxåìað_´ÅDtFGíŸü8lZP¤ü9Ûý5=èÅ }6Çü:ý]Á>›øÌéøª•>‘‹;nÁ˜H&+¢ý]ûÍ®ßß~ ~p§ý·ŸN®L>è/dbeuü’몑ŒO‚õ4oÝPžÔEîòM~6ù£ç•”€M|fÓÿPžÓò<@¤ö‘üóÅÛBñ}1~í½ëwý`ï`íšB|p[ó>ßȳ¾Ñ”j .¢boGÂv}Ï«<Ê"ö‘æJ‰Òétî~|÷ú;×ONNþ×ÃvÛëu¾>7³¨úàà»rZ/ÞA“Ÿ§(ÄïºhÚü.J…=¤¿7xq’^¥Í“ÐËTÓß;@jàUC»Ýβlòí$rý¢Fð©K]èÉÏæXc½~”êŒc3¦*Zi¡j‰Œ#;Û=ùÈ”)ðlßÔ­É5!Dörvpï ÝnwªÜôkœq×YŒ•¥ܳ9Öèm(>áÀs¤ûØüw—äy$zD&j}~¥Ê4jÁ±¹u˜ ¬‘ ?Òÿ9ùV?›+g}ŒMs—Mo`”FôÚ‰úѺR÷ ˜[M«‘|ò/_Íú–T@‰ªm-FäÇøÌã¿Ó" q•H~¶·Uex¥Á(pÇQÆPÕŽx”F`±4*‘`V"ûH긼R)ÙP €™k` ¦/¬$ßA<&fsâÌj$H#¸$_Œ±Þ±RŸÇgd^ëÅ÷M`VjL$ýÜv~z£¾½cú‚ûH<×;²…ñ‘ÿ%"̉ºIÿÃëï¾Y:†PÒ IžGXfµô‘üëýëï¾Ùy©#ÿB\çºú_µþú»o–ÖQ°fõÖ_õÐÀ¢««F"ƒÈ?|CqíêµkW¯}úëOåÿÞÿì¾âó_}Þq¾†‹%ì½6H5ö‘ ¿ÝxûÆÁ¿È¢»ñöá×£ì¢ýE¼ù÷Ì9~ôÙ\ÿ4¦o€›2Üë À³ªë¬ê½×fcýòÝ.ÇÌ`¼7L¥@ƒ ×G"+:û÷ög} €çjL$Ùŵá×!oqDµÞ¸]Ó\Üá#?ƒ~Ö1úJbn±ª#˜`®Ô{Õ&»¸öÆ߸ûÑâïòÂm5re=jè¥(Žäß2oÁXãÞ µ}$€µ×HTòˆ zV(MŽêˆµ­$S|&'…8,b¥0'²FRªj‚A¤…ë#Ì›ÉÍo²}1 «‘ä#E|kŸi¹FãFu©ÆD²ÿ½áÍo²ö/·’×Hd:QËŽ1E]«þ3¸Ç@ip 7 @%a_Pëí#ÙCñÑó«F|(j )úÈèWuÏï˜Áç ])á>aðtøä0ì j3ûH0eô‘¤þ^?ì[Üœö‘`±4¸:˜Ž…ì#Ájp ` jI$ç_ýv~zã¿/žˆ¿|¾òó_}n ëxнx¾ŽÀLP)«%‘\»zíþg÷û–TAºÏ_»z­ŽÀ”÷‘ô÷ú;Û=µR.̶³ÝóŸAÙß”nÂíWP“º®Ú5–JXuÄÈ ý½ÌYÄà?ƒ¾÷ÒÁÖ ’¨÷Ý¿Xñ}$F8P¥c€¾²(yä‹%j+£‚bì§L¨ÃŸÍúвRRu+Y±~$ë%zDPaš'»ÐãŽ#ÙG`VH$H`ãÕ ¹PéÂ5ŠâEp[‰uGd˜O$$VZµCʇkqÄÀ‚¢iÄô‘Tº#¨s@Q#A2U+%¥¥÷õ*%Ð$$$ÓG"ƒ…#|ä¸Ç‡ñ©ÓÈ×AKÜú iqÕ ?­Õ)Üw¾8RH~âžÖÒE"Pj$HCö‘Ìú(‹ŠD‚d‚︀D‚ÂúHPè#Aë/娉iÄ¿×fnÉ?Úþ½ýY4‰É4¸RÒȤs…>$@ ‰ ÐfˆD"A<ƒD‚d¨”‚ÑÙŠÔ]6ï#!r@©°s‰ 4ø.›²¿7(ݤÕjÉ…ÓÓÓÈ£HLÕ;nÔ¹_h‰!>‹X÷Rid>*åµZ-Dôe@ Hø<’|mCåƒ|ÁCEÉÃB#ˆø”I©ÐG‚êë#ÑcZ–ÑA… kž˜Pª¯Zp ‘ šžG¢Ç‚$!ù„€$H$Hf&wÜô÷žÕÀ<£ Ìð½6Ô9 ¨‘ ™?„J ,: Ò˜þ{mTSjªG˜ägvŒ9==máÖ_ˆÇU$ö`#IXouñY.šÖªM¯Hˆ à½6€H$$0ó>À¢#‘ é÷‘š„>$ÖG²p(@H$H`†Ï#™2Y Ú¿·?뀦!‘ %©ŽH2{Ò¢iÐGˆA"A24X‚‘HÏ#D"‘ ª#€Ht¶" ÙG² ]Ÿd/p «—“HÌòÜqÃÝ¿PäðÉaØT®Ú úHRp!™D‚è#D"‘ žGˆA"A2TJÁH$H ¦¤¿7ÿ+­Ëù õÏÝU=Â:´Z­´ÛVÐß:3'Ä ‘ ´ÕŸ8"„ØÙîíl÷‚gn˜ÓÓÓàm[­ÖéR€Yáî_¤ö<v¶{²Î!ôÔ²þ‘ÚD.äg³.³ëÕ<Ö•Eäù[¥yj·®´Ž÷ßDä2GÕMôñrYíZ–_S:§ÏJ(EÉ$©”¨ —@ôdPT±æŒ¢™…Yô­+‹¨Ò‚^Wȯ4BC¾á³Ié^òéŸãåüE‰ÁGs–®$$0Ï#©zÇÁÈ%¥ŒC¥ñž›¸g¨{ÃÒ­¬¨‘¨„D‚÷.£+V¿v³¸M'Ö6ÕäsÊ*ˆÏJðA Òè#É·Œ¨+/S“ßqgÊÇ“Ddq"ßGbmR],Ö•PŠ ’ «”È‹#ñ'~ÇMÂ>Û7W:žé×<÷hí21ÖX;T|&Lr2($$¶¤ôf™¢­ôMÔ†FWl~fëV>¹D]¡pWô~UÏ+ÖMòwÄXwmÝÄ:¾t/îݹwD@U\µAaoý5Î÷ùè`,÷àXv¯,âèQõlö ÞÄq¾÷™Ç§»Özl >¨‘ Þk3C$4‰É,î7µšÂͽÄ @"Aóð<ÀB£ „õ‘,.ªA‰i„½×fÉ?éþ½ýY4 ‰É,O¥d‚L}$H€>@$  ¯‰D‚4x ‰ÉP)£³ ¨»lè#q#±Xaç Xž»lâqÛ0€f;|rö0®Ú úH"¢L"A2ô‘‚‘HÏ#D"‘ ª#€Ht¶"€÷Úô÷¹Izîñî‘äñ»°®ô™ªt“V«%„8==µ~d] FÉ„UJv¶{òaË(Šã£Z©cóçs¨2s;@¡F‚’?D?©ïl÷Ô²ö ×-Ô²uc°cùŒù‹6qªõO'«#ª"Åõ’ü§îM`Q#AiûHTP9@ÚKËFICmkÔ-ò»Û$ìPeŒPqäôŒÊŠõS÷&° ¨‘ €>ÉQ«ˆ0að1„mè_ä  ÙH$H&ìÉ­E$³jq«ã¨u½ b½jA"Añ}$²£Òš™H~Túm5Öœ¡ª–©—húH@}Ï#‘1Åñi{ôc-êÄ5Ž”ÖB(–h  Òˆ¯ÑªNðòGë/‘=Æ.ÔGÖÛsÜGUt¨¥äu™¢¨OI~%,:®Ú ™ª}$ù<á¾dcä÷&ÖÁ1{÷ŸÇ1ƒ¢'‰üµë§E›@3P#AM}¯MØ[H$H ©ïµ x`+ ‰iÄ÷‘–}$H&ìy$˦©õ$ˆD"AÉßkÓT²’´oÖs‡D‚¨Žø xÐ>,úH}$€$$C‡ ‰ 4õy$€©!‘ ª#€Ht¶" ÙGBÛæ",˜²°z9‰ÉpÇÍÜâ~cSsøä0ì *Wm}$)¸.K"Aô‘"‘HÏ#Ä ‘ *%€`t¶"°÷Úô÷ú;Û½ø#Qs&™-9yx;Û=µ0åhµZBˆÓÓSëGÖõ0ÔH@Ludg»'OÌF@  NóóGt39H™9ˆæ5¤ù<Y6èï òéÄsú1fQ\ÆÈ,Z©8>Õ'÷Ÿ9àYQ…ù£(®—ä?uo‘¨‘ ™T}$F©Ã8ã¹Aý¨NÆE|&ÑA_iéØ\ÍPZ²óßût2F¨8rzFå Åú©{ˆG „õ‘Ì3G±Áój‹ç¥(Ç0VJ÷å?Rò/rP05$$PÇÓZ}ÚJJÇ$™$xsãÿ0µœo€Í·tsÔ9ô*ˆõª ÔD‚4’¿×ÆçäZ:&É$a›{F„¢aƥ㚔ÏHý¶kÎÐ?UËÔKÔŠ>$ÓGRtb–í®¥Û–!â'qôß¼Ò.qGE˜‰­q¤´B±@¨‘ ˜>’üDÔ}7Æz]é˜$“¸Gº77>õœ¹êîüÿ:u]ÆÚ¦j½jSt)Ri}õ»Áú÷7žþï¡âÎÇ}ÁkBááæ­›ò÷D]¦1úHd±¤1® ­¿×çÿÔ¦Fž ÜñÕ—dü¸ÿÙƒ‡ÿóÐR#¹yëf•]oV:PÌ£)ì#y `©XI¥¯S7oìlßHwú¥E6}°±¦yÏ#LYÊÎÖÞ¥ MXžíò”Q™s¼–Àü³w¶Z¿+÷6zƒCËM;Û7Ô‰ðÑãÁæÙ×q–g»¬­ ¬‘XÿÆÅYÄèlZ¥DÐÙ:gü/É@i:[­z^wn^ê©oê,Ïv9‰¢PbE¥dnÑq `þy=!Í3ŽH²›’åyXNÂço_}'ŽÂ”'ÿ8Ò»ôü´$¿©³<Ãe‘Téïm €H)Ÿ"?U–ÅŒÈç‘Ìjï€EWžHüÛÄÜTXNËów€J ˜W¤R(™‡ Ë"Ÿ¿}úH‘|¯Úøœ–f^`Y-‹D¨Ž¦£BIéÉiª,‹t*ÕÆè#ÄHÙÙ*^üvÎòl—§J XâD‚%G Œå™­U¿éö÷¦ñ²{{ôXmˆÁïÀŸyÕ†æD¤ÂïÀß ïþ˜2ùî_:[Àì­!vßßõa€¥ÖÚúÁÖ¬,»?‚ªoÙí…?IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/search.png0000644000175000017500000006326112032647161024152 0ustar ebourgebourg‰PNG  IHDR“f¾Ã† IDATxœì½hWš.üj¨À)p zP–îÁÄànÅÆj'éK`¬_Ö2¾`+Y+ Œ•ä+ ÜÄ3ËÎffÙŒ'ËfåÀ7I;|+ “È“Èù#kùãËÝö@æJŒºƒmu›3-ˆØjá*ˆØ:àœî££S?ºº»ú‡ºßóðøÔ©÷œjuŸsÞzÏÛßܦ% @Iÿà?øß…ÿ ¨¦v•:”RÛv®æ/eþîâÊÒJBKPðµÓqýý¿úþÝ»ÿ•-f‰33¦ÄJÅüg9sÓ¨CKEcùß—ÿòþ¢ HÝö/~x1®ÅËÿ~näÙÙ¥×&Ç^[¸ôίg/^¾üÉåôô¹©‰×ÞÏÌf>Èþ1›>ΜúëÑ—þuñçON¼öÁ¯O?>û‡ÿH%(—éïÿÕ÷ué&š¸ôù%ó[;¦¨lP‰?Ï_zkñßÿ=¡%ˆFZàû?øþþcþù÷þñâJn%1˜ iéßâûõý¡¡¡Éã“£££É½Éüù©SSKŸ-=6&òÌ©™KŸ^*¯—oÿçí.ùþ Fu÷è@ Ñõ¸ýÍm&*=÷Ý»wëº?õðÌ¿¾qVUˆí€ª€íPÔ¨U…Ø´ ê€5jÔ!ô ?{¡ðÅ\ÃýèÂÅ…É““ ß>ÿ»ù©§§êºe``ns[a}vé«»@²•K9Qá×èÚWÔv¨ª€ðA ÞẠ¨Û¢«¯Ý€:@P£îK @ p½ *ªo¯çßR‡6s;ûo]·³þz```à/…¿Ø`«Šj;vŒÄØ;têPB*QmÕØ'ÙzÏþ×ÿýÕ‰#3öð´5!@kêP“iBb´¦Þ£›­ÔZŒZ×be?½i'PÆÊVÔ:+oT´•|µM«wÇŒ² è„Q6ÓÉ¡Di½Ÿô‰ÒÚÔë&PÔ¨·éKWξ˜c}§íØ*QmÇfý(áóº Ò'jD«Ä›¡Ò.]]š<9Y*–Ø]Á=i¥?v€ÏgZ¼²8õôTøÒ+ý/PsÃü(À²ÆHŒwõ„TŠ! ©ŒH¥º•D0 ¶C{P+`ozh¢íÚäÚôÔd»¶êÑ»¼µ¶k˦¬…<%®5—v<µ½¥7ºßuö3cyy¾ðE¦Þi^<åÒ'—¦žžog}hååùöW誢~ð»ÄÛ¯,Nžœoæ¹gø½ó¿›1eáâ¿]áïÓYWo;öÔÓS ¿[àÞveîœÿíã]üˆ½£‹š*ul•:[zü¡¨÷ÙeZñÌÓÛêP¿rCh€|~1¹o”éDÖÊyMKRÇy(ÆŠXþb1™§Ž ŠJ7+÷%flš³/ŽÀâÿÊÑ]v%Ä ËðÖ›8.½+fX8*[Û®KžZ‹•6¼µ±aQD `kƒ1£\щÁXiK'¼õîDi⴪ˢ.»µ>´M×kéüõZE°ôM°GönÓ¹-­çÖ¼ôƒÛta­lm€=ö ^¸å¥Hºä©saôÍzôCáô­’eÉz<¤¾Y~$”^Š^§–nxéG× èwõ½5Ó[ ¶”"¾ÉæùyébΩ§§øX¥€üø÷ Ú‡WÞ¶+*(ðäsOë¶UEUA•ÞÑ€Ð5néäÞ¸ƒ3¿œ€éãiºIYúì/Ægqtä@|þÿ>úö?'Ô±õ݉ٿ?tþüøÛ¿8ªiÌÎÄáÔÛÿ4ÎÒ/üú¨¦V7}8yá_ŽÎŸŸx4ÅÊMìÖfÿ~|þüø…9:öˆ.ÕGÔ•Ï(Ó¦iÀ¡‡†,jë»꽕÷ êØú‰ÙŸŽÎŸ?zá_Æ'MY”Nÿ8 ÷Ü ¿›Ô‡‰ÝÚìß{sŒ•KHÌ¢töGg1~òxúìOÇxWmQÊ´¶+fmné²§ÖbÖ&liËGou€:vbp»¶¶´±¥†E+:¾]—)¥²ÖwûêÒº yú¯6ªù“¢~`›.®SºYÕk^z¯^\³ÜzÄ¥-¦Ôs~ú–—>P[5©o†ÓP‡uç[zéV}:Fû”å©Çuª9mxë^úÑPz)”6Q£vkîÔÛ!Þ\s‹±m±'ÝÒÕ¶8oŒuübéóïÍoå'Ûî]¸¸°u— ïÿß~÷íéSÓ|Œ0ùtu™šSk|té#ÖÛ[Ô tÓ Ìj´€P0OÉ~ZÊ^Í—J'ÒëÔY$tˆ‚™¸&FcK_šcÇ&“sïPJ­ìÕRöOËD#™7¦f~¬?óÊâ©§Æ&é†a¿úÚ¢¹ISCZñÖšªh÷À«ÿódöO…£GR'Çç~ŸÕïÏþtÜÞ„3/-œx"9ótjéó% ¯X·jÏ tÓ€ìŸò“ÇÆÆFõÅ«Ë#Çõ\ÞLÅ@ T#êÙçÓ¶3/ÍOÿxlꤾø§Üü‡¹ñGŽÀät†~g^þëb¹SŸ/Á¦¦i ª¢ÚÒç…b1›LŽ[8•àåªÖvÅÊ•Y¯š¶M[e“}õ`ÌÚ0)­h£\ÑñÁ„·Ž'Œ²±¥×½ôî-­ïN”Ö½nÐM—Ú®×¶´±][›@“{¥-­—n zͰ, ÉýuųܦGèE?}ÓK?ä¯oÔÖ¹›%k踨iF'ýtáF-ýh²p£lmØžº©žx4™ûRÔ%ýC}£T.7ª¿¬¥„uãšÇ¹+ýB]Þ6Tæ~ÙŽM„ÝEàíwßöœIþäÉ'yoËWi¹K¯,òV¶ùß¼÷/…åÿ(•þ_#ÚÂÅqŒSbo[.}ÄF•T"¦@«ò`ƒ±Ô¾ØüÇKd—¶øiNþÍë@žy9sî­K0þPÊü¶XZ3ç>^¢IÀд˜i–&~¨À —É~V,­Å?–©mWœ}€©Óç~ýæ%¸ª¦ZViìîÅ?æ–¾*æ‹FÐLZv× \  Ecl4`Ž?’Zü4_ Iˆƒ —þß\ñk#›7 9ÖfÅH©T:qü/·øÕV¹ªðÂKç~ý›‹‰ûÖ¦ PÇ"»×Ú.bmÚàЊ¶ªZ#–eS®7½ô ±,›RJ+>uÙ2+:¾]oÔÐúîX¹¼¥KÛõ&¥Ž¥m×å-ml×Ö&¥Ž•| !êÒš ×mÚ¢Ô±*]{ yp›Îߪ¥$òk‚¾e1=z@¯­Ò‹’ި蜨o6£Ëú=w³\®©o”˦¤ÇôÍZúQ_½Fßð×å†ô½õÄ“Ûô—¨Q7®iu=÷Ö<ðê⩊·Mw¯+Þ6©üWUT•¨Ô¡|—Ø“n-Ë" ¥°<*Q«=©Gé’·­‚Zñ¶«õQU‘FÞ»0õô”íØ*¨•ÎèGøˆ:4Fb•‘åÝ6yü±8ÌßÚæÄ‘±Ì‡ÊvæµVXr>q$ ‹W–€8£‡’ú`’¹ÚúíÒ•ÂÔÉÔÛ¿>5÷ûekƒ¤ð¥¹¶Q®Ž>ªÞ³dñOÅ“O¤'ÿ&MM(®[ú fXÖòŸ Ïò1÷¹ Ã.•l]W/]YªÄhöÏ¥SO¤'§-“š¨l W?/š›‹ÁøèÈÒ—¥“¶Pn\õ°+Ú –%ëѪ§{‡jR3/ù=ôXýúfÃzÄ[ÚÒ‡Fr~úFTºTч·ë›%«ì¥oD¬O©zÏÁúKoû²TFºª/]ÉöÒ›·ÿ3?™Éü[FòwYçzêéS¬Ãd~³Ø¡nyÛOžzÒvì˜ãï­ÅÉeÌÛ®ôŠ\:;ÂDÜ=å£K=þ·…,üa¡zÀÀíÿ¼M«çj‹oÛ¡²ýˆàm+*8*Š…ÇŸ>§ïN¨6gÓ2 ¦ibº±aÐ\vHÿ·W(Äv%l›ëÆØæª”R¢h1˜(ëÞ€MÓTE56JŒlÓ¶cÓM«:Ý€j»âjõµÄÌO¿*ƒÉ‘øøc©ËŸæ~ñڥĠÆ,¢ÅvÛp¨ªÄ@±2$uþD|ÍŸ¶KSI̦¦µi€¦Å€Ræ 3YWUÛ0,ªëIJM¸£ØäÞ×Ú½1J)½¶‹ÑMASJm·NPjUô} ºYÑñû–§N$,«–¾?aYýNÖC÷'Ê\ëzy£ì©­²åÖ{t«\ÑÉ=º±Q¶L—NêF¹¦Nå²eR;¹/i¬WôȾdIÔå²õ-°GN–Öjkc­\þ–؇F“Å[ ëtq­T6\ú±tñV'ô¡tñ¦‡ž8”εTNçnúf©üu´z,w³èÖ'ŽŒ-Ýh\çn×P£Þ®K빕ìÛԪƧ…ÝB¥™á*¨ÌÃÞzI°ðáÂÄ‘ J©ÔoÊk¾…Ø6Ëc;¶ªªó¿›?qü„eYRYî³B*]¾@*ë¿··ÍGno»B¬ø{TûŽ­ »/aß±¥tmÔ{Tî%'ºxÀNÜ»•‹©Ì;v¯.Ùg÷‚K«ª Ä„œ,(±ä^}ü‡)¸l²Ÿ~ý›EB`›UÛVÕ³£ ÆÕªMÛ®C»ã5‰œÙ”Cöv¡ꃌŒŒ¼C9ŸÏO==eÁó¹»=¼Ö¹‡ @ Ú‰°ë¹Ù^Ò?èô[þæÙó¹ÄÝÊ¢e¿âøçÙØëÎ~V!¿ Ü÷ ¹÷ÏçF bgÏçFFFFFFÞ©¼µž»˜/Ò.Â#######K¬íÒ ºž[¨Ä¹“û’ÝP9ddddddd‰óù<ï¯1Î@ D·ãÜÈÈÈÈÈÈÝÅ‹Ÿ.^½zÕ“SûRbN\Ï@ DçqõêÕC‡y^JíK-\\¨ã|nddddddäV³íØ5óàzn@ ºõùÜãÜÈÈÈÈÈÈå0>7cŒs#Ñy`œy'1ƹØIÀ8722222òNbŒs#±“Ú— ¸Šqndddddäîâ\>W¸^ðc–ãÜ@ì à¾åÈÈÈÈÈÈ;•·Îçžûí킃Ì{›gžŸ! ê)³œÏ½u®ãuCFFFîNΜϯy›9pû›Ûà@öjvñ‹Šu´ú•_IíK±hû«™y'Ó%õD5ê®Ò3ÏϤGÒ󿛟zzÊ4LP@¨LOc èÜ»sÐ%z¬ÆÝ™Ó3|Ú$ñò¹Ï7èy0Ÿ›7†Á8÷Ö9Ö/­çŽ¥¯ŒWu†:Ó§¦§OM—¾2#/Ñý¿]LO?;íö¼‘‘‘‘‘%f¨hi=÷ÒçKÔËçàúîÝ»FÉ<ûϯfÞ͈n÷Ìs3¯þýYô¿û nŸ›{Þès#ˆ>A4>7õs œzöÂég?8õì…SÏ~ öâ5‘Ðcg~zvæÔÌ«¿:ÃþÍœš9óÓWƒ»í/„/4Ø OiÆ ¢H#Gîm³ø7Å8722róðþááýÃîtÞ/‹éAqnÖm?2:òp –— D'§‡ëò¼ç~3?qlr7–¨C'O†¼q`` ®‚ün™nÀ2¢I`œ@ Ü>7ë³V¯­Š™‰s É‘Ôðþáý££)Ï<Á aNvjošõÞ½ nÿ[t¦E®Ë x 7‚~y´¿9Lcœ™:Tì¶¡Ú‹‹y*Ú¨ôÜÕõÜàJ”ŠNíÏ<0J¦–¨ÜB¢%y× æ(3YJa´È!Áo—:ow"¢Iˆß¾z»p½0÷Û9\ጌŒÜÃ|0}\Þ?,æa¨èpë¹ÉòrnõZ¥wd}~.…ë[€ÅOÓƘ¦¤Œ-~²tC $W8|çÊ}kÏwé’|‘Þ H#GŒs####ÀJneõÚª›yÏ8÷Ö¾å¬ó¬kduy¹ÿ¨Ïüƒá;6£dn/0&FÉlln¹»èAk¿ ü^t¯[ iäȼmqs ´Æ¿ÈÈÈÈ]Å[›¡ é5âÜwïÞ}rzø™ÿ1Ì8|·]úÊÌ^ÉŠ6ùx!{%ËvU‹øZ{GÀýMÀ87222rf¨è빡ê’Öåmg¯d­5(@˜y#ùYŽiÆÚPiüÈxÍåaR‰¼‡– \qœ IDATe1›ç])î×ïÒDôŒ®çF †–¯çnl—4k-A ˲7)Ø›”iÆ¥µß–{¾çóÑÜÿ ¸+ å®÷¥š•D„„4rÄ87222r®{=7G]>·Q2?Y„rÒ°(Ù:… ${ 4ql7SëDµž›­—Ö;Š—ÜðÌ,æwgð4UÓN˜ÌÑû–S‡Âz’:”TÇ žºtÓbû™#úâ·‹éÆâÜ¢¿«†÷×k­1;R溞«Íì·[22r[8=óÜü¹·–Ͻ•?÷Öræ­|€†*ؽ,Î-ŸÏ ^X½v7µÏóŠˆB(Qˆ VÕÃ&tËÛ&Ô¡ Á±ùJqDσ͇5ñša^“% î«’³Ëú§ƒéƒ«×VÅœl åêµÕáýÃî«nSÌNÈr¹ÞñY© ’ÈÈÈ-å™ç§ νµÄ»·UçsSN<¯S‡&vi*€¼å,Q(ZÎ×Ô±g~:í7P@ôÄ¿5m"Î-Z su%·Â%Ù³Vu¥Ô›Ÿ¹¹ìŸdA¼ÄsŠwyæ°à™.ÚçŸ zÞÈÈâåå\þ‹BMöŒsXOμá꺱f ï‰À‰ç“°»¤ %š3’As¦Sâzæ§Ó ïI4_bG 2Z¬j÷îi!×s‹ÖB^åÞ°_Îà«D!5}hñ*÷æ=-0°¦¸™yc`ãDQ“&âÜn¿Yr.=¯zÖÁ3Ý/Op­xŠäyóеX7æûòKî'ò{^~‹X–;§MÉ2ŸO×qϹ?¹ëâܧžý } ùÊ‹ÓÓÏN?2záÿY ãy«@l‡Æ4mhO"½/'’CÉx<ëš–€ÜÕRæõùÙ׿²Ÿ„Švw´xÎX{ ›ŒsÛ— F©=ç~S× sÑføZ‰)’çíù6[Ì)Ö6øª»D)ß§!Î$—êÓqϹ?¹á8w¨}Ë ×!üj §ž½ðÊ‹ÓÃû`õÚÝü…'§kŸ:óÜ«©¡$’Ô¶CÁ&ìe¾~¿ $†´‹ï_J&Urù|zdÄýæÜ}¤˜(Ä=ØÝ§¹wh÷´æ·‘»ßQc5 6Ûˆjßò~@ÀÞì¢y'?óüTþ‹??3÷e>}`Ä­‰ÙÏÛ²o9Âw&Oí«Ã¾íP ”½$§­ÔMêЋï_JêG§Ç¥Ó##¹|^º—uî3Ĥ«b)uŸâßžÖÜÙ‚á6âi'†ü”vÄ¿>Óx>·‹Ÿ22rsÃqîïlŹ!RP Å|aõZ¥7bö ×·ýó„ª °ö•‘»^,—JÝ ±zôøËÆ:oéÞàµf¿f2]½«g•ÜõjŸÍàŽÖ¯ÔÝŸ22r¯2‹g‹3Ìݪ¨è–ƹïÞ½ûÞoŸ¡ÍQ˜{77ÿ^åUyjˆÿÜ`qn¢ç&‚ç­*Ûjè9É<¼7ìyo+_w•ZTP×B9âùÜf922rp׏Äî*d/ÅâܶCÓû’RœûêröäS'BÎ-—ÂÛà„ö‹L‡I ¸ê±ö,ÔÏTãÜÁÐÕqnº®ºº%6·çnŒs7 61-½/™Ü£'‡’¬n‹W'MÔ¼×ýZÒîwÔÁ¤?ËR~Ø>jñ,ÔÏlO­!çFFFîoîº8wc0K6‹sÛ¡â1ju£³dw¶’ˆ 1ÎŒŒŒÜpœ;úó¹†ùµýtÙª*ásË‹kÅrÙ84:ÎFÙO—ͯé¼{Þ¯ífH#džÏçFFFFîö¶ö-WZç†zúËì•eêØlzZL!ñ= U!¦YÝ–µºž[Ó´ì•åÉçÆ[Q[D‹ ~»¨C‰BXœ;—ÏEö¶YJò¹·Î±G üœP£F:„~åÅWx{Ô¡££éååQó¶ÝZj9*ýuÏ=~d4{e9®© @©\¢›TÜ·¼´^R¢iQÔñ#£¬'¢°q¢¨ICû–wœÙ y¨ …ë…Ô¾[\ÃÛ“®Û·¼ÄîWÇŽ¥Ž­ÇuMÓÜLuüðh½‡Ž :i丣ãÜQ/Ø»¨âÜÝt>7@LW`êôQö߆ב#º Òȱá󹻢^ÔŒswÑù܃;Z³s×s#D½ðlOzj=7¢÷ç†zü]vætpÊN÷¹ûg¢àÙž4¼ž[®‰s7‰WOÏP)Ø*€]SŸ=m¶ÒÈ1=’f³Ê=ãÜÄv7 ï^É­ˆ)5ïŠ;ñá!ˆ©}ãÚoVy@œ›(¤»âÜÍ@SƨCµJl‚µå,uº¾ý…¨âÜ ÓW¯­J6Ù±Ö ü*óÈW¯­ò«\ó<â½ìTl~W@üÎ\‡í+!=³Ý­uN<øl}@ v(¢s·|=wÛ@:ýÓ‘„“/Ø68÷nMG?{:K@žîw H3g4pàJ°µºŒ„ÉïùbÖoËwwzø*I>7it=7T»^îys›ì|-Ö KW‡÷ó›kž‡¥¯äV¦²«b==}îGÑøO|nŸ±sáés7¼ž»wâÜ[õ·móë’ñÉYãÝiûüQøøó“_˜_ðÍsRwa“âä-f“í&ߟ<ÂàeøãOÂä7ZwﯢŠs×´éy•wÆ’È/zäu†ß‡YóCÆÞè1Dçî¢õÜM‚GŒo™›¿xµ<›ø.¯KÕ84%ò«3æ¯~akWs†].uçü¿Rº§°)e“Ž 0Èþ뮕»\ÉZ]G“Øô3l_96¼ž›a%·âëqv•yÒž%ÖÔnkuà§½¹?0‰¢ßàÙžô¾åM‚Gæ6æÔ]péÔ¥3±8U5p$ªCbeCý‡3Õœuï|μp·÷,†-³ÃSBzÉà šÖ¼×¯ò¥¸ó©iß3Î ÂØ³®87QsywË_zs—ÚÏŸö³ýbÛî:¸Ÿ÷®écAèsÔŒs×µoy·¯çÎå¡pÝ›%°ú[@5G;ñúÔÂéExtž^0¿mÿË3žE34*ž‡ÏÍb¿à¢è<t`î[¼Nìv—ÛBÞÛ@ÏáökÂûÜÐèznÑó¼ÝöýJ £Eß=¸žíIÃë¹»hßrO¤GÂæd#‘ÙäY€$Ø?üÕ“O?yáü…X"êëg QÍi9m:mLš<ìg§™©pMN£ó„8C*|5®ĹëÚ·\²Àçqͽp6ÿܯtQ³Ù|rpyížup\H£1w¢çŸĨ®9Ñ«ˆs7°oyï¬ç–†ê½ê웳“OORJ—²Kp”³­;Ÿ‡é\=ó„¹yç-¤‘cÃë¹™Ÿí—"®óæ~¹˜ÓS‹óÒÝwyÎ-÷ü¨C&ÖLÿÛÍSžsËf•¯çîµ8·”¢5¹'ioÚ®œÞ>w@È'%I/ÌEï* ½+,áuÏG“Þ¨ó<5ñ»7ˆ3°Â”å~( QŹ»¢^ôWœ;<ÜõOÜŸøà½fÏͪ1UÊéçfv€¤ÙFÁ)ÉŽç$&ž"f«iʯ¸€JT^4îž~å¶0+ª8w70@Ô‹þŠs‡‰%Ó}ɰL)gcqnDÈ*ÎÝq.\/dÞÉ¿ÒGFFFv³»=Á87P‡Îÿk‘%@jr›ãÜQœ»³ÌÞdÎg:ö9"ˆ ÞžpÝïû–¿z~¼žìueF4 iä¸sÏç.\/´ø£B = ©=Áó¹] êŠÖìÜ87222r$Œçs#ºîh ihßrdddäžaÜ·ÑÕFŽ ï[ŽŒŒŒÜ3Œû–#ºÒÈqG¯çFFFFŽ„q=÷ ùRöÓ%Ó0ͯM?m‹Ç­ƒøíbãÜÈÈÈ}ÎçÞBjD' !»b øj¶™9¢m¿]|äˆqnddä~fŒsÃü» óï._›¦a‹ÅK¿_°6©¤Ä2ï›ýt©Ó•í;H#GŒs####cœ¦ž›¤Mh1H&“Ô¡ñAMÒó–¤QŒˆ†Ú¬÷Þ•%í(¾¸ºnŒÒÈãÜÈÈÈÈç`ä˜ï/Ž¿Ÿ¥ï/Z'ÎÌ}lЛúòËÿ9O›b.¿œ^x9aÑáü`'vïòæöº m¦Äàˆß.¦£sŸ¨’ù!¡ ÜÕØ½žv®Ig?=ddäz÷-‡Ë?3èìÒýÆÒ•bZ!  DQmˆBl DQ©  Ü cÖóìd÷IÌâÖâ±`nk~}§» ·)î1K…zV)$¤ªJ…º$8¿»’ lœ(jé¾å’寏æÉÜnf§zó‡÷3]oé’jR³aÁêµU–‹k]‰ÈÈÈnnxßò‰s_~9MªP‡ª@Ì]¡7‡3<}ÎŒ¬ýõ?$ŸLîÖS/Ï×4+úÇâa—Áþ+Ïþ¥´gAnS~®v˜*y¾œ÷¬ªçÈ fþàJJ#ÇÈãÜb)"‹±_:÷n=u€?Êû?ž"jO_ÜÓ«fÂïj]µ•jîù ˆÅIµª·æÈÈÈÍpÏÆ¹ ×}ÿq\þÙâÊ ögSCÊ DÜèrný\a4_I_®¤S€äîdêå…ÖÕ9Â7ÒQ™ è×Ý=:ÏVoþH#ÇÈãÜb)œyÏÊ|Jæ×ºÓ=kÈ÷¡ù½aÊÁ‡f·ïóLÓEW›ûÁÜrøÚzÖœÝ(>…XœûÞºjÞðß ™4çVº:ÎÚW;Ob0A „ä'¯¼’{¹õUß!¨wpÐØ`BüvQáÜ-vb˜ktfW1_S’#IöUvßëWzxÍ}èšö¥zŠén½’[‘î•ìDUó0ŸFÍÚ×|yy9øï…ŒŒLª-Oa¿ ÑÑ´ç)a\S÷/×Pz"ÎþYÅž}ii숞½RLÓœ~½˜xê„õþ¥Ìè”î±ÃzöÓbIÄÐ(F$å60C›½RnÝ4±öO RmúA96ç¦ (Ed¿Ò›Ñ~ö£*7òÚò×ãQÙµßß@p°.¸ÚŠ~s3¨”Rˆýˆ Õ¸éăEçžx°H¸p:ï7·\Z=Å:Zñ²”RD›â¬4wA جçv¿èö ׬|ÍlbŠ4rl&Î-ŽXÝ–Ò£Ò­.7ÚÚ²n[ò•#ÔÈÈÈ5Ù³Õ¢íÙ8wx\þYÚJbÀÍ9¨ÆMáæœ˜®ßúkã³ xÍ-¿»R¢;§”" ð±ì.ų O!Lqîécîç (1 ð³K#ÇfâÜìgþjxÏ•ÅtƒóØwG|¥¨p´>·_m{Ѝ422rMölµˆBú}=÷å—ÓÔ}(G:q¤DÈ=‘‡Ú¿—Ò u¨nn¹'Dÿµuï½ëBVI‚øíbºáõÜÄßç–æQóžUô;ÅôÆ7ó¼'ßÌùfx9 }Ã7¢upûÜÜÛfè”Ï@ ­F€Ïàm³«¾>wĹàè¹€n޾™Ãn»S¿]LGçFFFFîZŽ<Î݃çsûÁ(™ ¿Ée~¾4ÿf6ûiìNW¨Ÿ ~»ø ÉÆÎç¦>³4‘‘‘‘»“ýZ-<Ÿ»ìïlcÍ*­Y¶¥[ûØÊÝ(Ô¾ ¤‘cÇãÜÈÈÈÈmc¿V ×sÁ4ÌÒ kñÃ8•uà ÿi¹Óõê#H#ÇÈ×s####w-ûµZ=»oyó˜{ã2-«Æ¦©) ËYPÁI æ¾.oÄoû7¼oyïqæ ~¢¨Q£Þùšmíìù«Úçû–cúgGÏ>—Õ”„KDQÁasöhB‹uºj}6N5ibßòŽ #gÏ5bç¢p½Ú—*\/´Z¸o¹/fߘK0(P ÆÀIêÐÄ ©ÏŽçNÝ]{ÂG·A9bœ{ÛõâïèsdÞÊ0qîºqöµÙ„¦M›8ñ¬N¡òŒãÇô‰ŸèGuºv}iäˆqnéÙ#ÿÀDg!Ƨ#s÷Îzn7ξ6«ïÖÇ™(0r˜R‡NKŽýHOè¯Ê=OÁ Ÿˆ€;Zƒë¹EF ½Š€V ×sË8ûZ&9¤·-ª*¤¼n¤ö& !é# ¸Çû~ ï’ÙÒ1\ž‰ˆ`Ĺ¡^U½ïf'e±”ƒéƒâÉ];ˆ#ÄÀvH—¢-«¸+ÓUÕC ¢BÍ8w®çÎå¡pÝ›pö—³É¡xz4mn @i½¤Å5}(qæÍoÈÑ“nZçö´¿³8òßx¨«ø}nr¬ùOC4ˆ¿;DAŒOGçV@Œswß‹»tóÈàì/gÉfz챤Q6cZ¬t«¤ïÕõ=‰š7ò#2±‰žqnqVyÃqnOûPõÈyâêµUî—{¦¬^[eÇtòó¸xzMkü.Qó<â½ÜÚ¶'âÜü»Ç¿Š¼÷m¬ße·‹Ö<ÍJåº+ôxŒ¬ûѬ»ÂõAl߯žîDÉBH›D“¨7ÎížUÞGqœ%Vzü˜¾ø{ƒìRu#>¤é»kwÛÁÀ‰åM¢uqn?ûüd­Õk«ü|-ñ”LvR5¿K<]„s¯Ù-Ô¡ÌNÀ½’æyÄ3¾¸5‰‚£3Ñ~߸Y©\¿P‘È~·HfkÂs@Ò¾g=Ãǹ®3Q/0Î]g_›%Vzâx2¿l€W?4C‰ÔÞ¨¡ng¿gÞ”ˆ)â¯Ú3ŒŹì3ˆQp÷7\L½a~\Ï/@7­‰§úï|4OñÁ»b lÿy{&"Ðþ87óqAð}EÚﮚ~|À½ÁZ|ÙÞ|œû® õZÐ…Ë%ÂW©9ˆ&ÑÒ8wï¬ç&Nrì1½ø…Iè&=ñlRÓ´ººmDëàçÑ“nAœ›»¿¢ç «×VÙ¿ð^5Us›a<~É/gÿ<ž¨þß]ó>·„¢M¿—áR÷UÏ×ÝžŸZó˜„'p=w(”nYKŸ•(ÐxÒ}"žØˆÝ‡û›v Úç–<ï€<Á)n|5L­üâÜáÞçîó°º×ˆŽãÜA @ŒuK4õ¡xz$llÑ´(ÎͼX¶ª[šÑÍR¤ùá|ò[ª•_ù½,…ÏQ¾‹—.ÖÇ/ÎͧP4Ù߈¾xHOÔí¾»+swû¼ñ0Eø¹ÔRžà*A`ì™3x† ¾0G´­ˆs+ÐqîÙÓKLý:yj²ÓuAx@9¦GÒì”0Ï87ÿ¢‡d6'\Õ…¬äV<ó»Ó¥>Ã\Òîœ ¦øi¿zþî¤nLêxÂ|ÔÁý¨_¿î3 ¥ÉÉb5o_zÈʇ)ˆ î8·Ôz0íwJX@œ›(¤Gâܱ½QbS§±ÛîR´.Îݼsw5Ñ©wõõ¾u@ "ƹkcú¥É3¿©±?šQ2çß\šûùÒÜ——®ìïð|îö¡uqîÞà^E§zMœ‰†è´"ÎÝûçsW`ƒq˲Ê`nÙŒe×Êš¦¦FôNW«_àQÆó¹9®νuÎýJ y‡²Øâñ‰>Ÿ»GâÜÁ0 ³tËÊ~\¢,žJ€\ý¤€=wÛ@[çÞéüÊ‹¯¤ö¥æÞëØŸ@´ ž¿zžÞXœ»Û÷-oóofu›Rˆ’·[Sƨê&Î>o¤‘c„û–÷®"ÿÌD7  ÕÂ}Ë}1õò8lªà¨yêØŒQ‡€}¿Ð¥ ®h ƹ‘‘‘û„ýZ-\Ïí‹Ì›óêƒ%B@RSÆ(Qˆ:H’£Z´ §ˆ‰¸rãÜP§‡J{ÑçFFFîaökµpßro̾ž!N?1þ”VpCú°vâ'úø‘t‹ åÓYð ¢*¤‘c„û–####w9ûµZ¸o¹f_ÏÄãÇ&Ì +¶+–tV7ó’ù>Çr-%ЦÂìûØ?¿]ìKÌâÜl†¹çø´xî¹­Ÿ%Ô¨Q÷’f“p=û@::šöœUεÔrTúën_Ï]¸î{)µÏ÷Òìk}w|ìИ¹aÄvÅJ·Jú®%^ýMP· ÛC6Þ‹÷m_ÎÆ‰¢&¸ž[!(.C z…ë…Ô¾Táz! Õjx=w·Ç¹Sû|ÿùaö—º14vh¬´n¨»b…›E}¯žÚ«ã$„4rÄ8·ô™ ˆCæ­ ç®Ù×2ÔJžx"}é}#1˜0ÖŒÔ^]ßhõAÝ5£×ýìpƒËçÆ8·ô™ ˆî[³¯ghyèÄÉ«W‹š ï$âCñH¼mÏc =D¸áŽÖàzîî|Ë…@ ¢E@«…ë¹aþüBL=ñãôòUC#šaYSÏ&õ¡„ª†í·ÝAn÷±ƒîU^<¥æíýŒ€87Ôé§Š£W~Ò¶xÞv²ßÉÜâ[.÷k›Î¦ ˆHP3ÎÝ×ë¹éfbü¾üY‰06Œ©g“@ Õ/ÉãÏýòÖŹ`õÚêJn†÷‡±Ð?)ݽ±³@4÷ùÜ]œ»wö-7×!{µDÑî·Fޤ»]5%­Ÿ»mð‰sG²o¹Û>ónV¯­ò«žé¬³ç‰,tuõÚ*·À´t—hõÚêðþafA,Q¬§T¾þPŠÂt*@4zãÜ}ºo9¥”–-ØUÒˆ§öáLòîBëâÜnû+¹·Îû`v•åg‰b~ÑšŸ}ñ.ö_é*³/–èiYzË%íÐñ 0Î틳§³„2§ž›L¤:]„ŒŹ™AE=lO\Š…3ˆhÑW=fæg³«~OÄ Ö!àÙa{œ[š*Ññ0Îí ýA“:0ýÒd§+‚ðFâÜÜ“fþ®øB›:”wºb,œ{ÃÜo–Þ7à¾åÕ7 ‘Ô¢«Ðj5¼ž»ÛÏçng_›Õãúø‘qsÔºôÛÅŒÓõ½ZBGŸ»}ðŒãùÜházáÜ[çÜ/Ó‘‘w4‹-O‘¸áó¹{9Î}öµY}·>vhÜܰ@‘Ãÿ”NK¦$úI«>÷Áte©•Ü]ÖÕ±”Õkw™Ï:¼¿’ALY½v—¥³»¤<¢e~ƹ#‰sït~åÅWRûRsïÎuìƒ@ Z Ïß>Oo,ÎÝ#ë¹Ý8ûZ&9¤=6nZ–ªÒz)µ7Yü¬”>’pg&•™Æ«×¶m#ÅSX÷ <O ÐPõwÝvúÜçŽp=÷NçÂõŽ-ÕC m@@«%ƶ{jßò\ ×½9g9›ЧGÓæ† ”ÖKZ\Ó‡gÞóÌO+;jÝ•bÒ0¼€ùÐbÜZLí¾µ'¯äî\Å8w],ŽX‘‘‘‘»ŸýZ­žs§Gjç‘pö—³d3=öXÒ(›1-VºUÒ÷êúW›£:–öÞ{õÚ]ÞÉxábGØñvîŸ|<ï0LZÌi{_k####7ÉîÖ ãÜœýå,±ÒãÇõÅߣÇbƺÒôÝAÝ6l€€(Ï›E¬«Wå8±Û‹åy¤üRŠû*ƹYJø8÷èèh7ü‘‘‘‘fÞÖázn8ûÚ,±ÒÇ“ùe¸ú¡‘J¤ö¦jžøIªqîáýÌ«fsÁYº”Âò *¼zí.·-ð››áîñ¹›YÏŒŒŒÜ,ƹÝzǹÃcî7óú®ññãz~ÙºiM<•Їäiäž`Ͼ’»»zí®“f)b$›§°œî¶dGºãÜL7çFFFFî î÷ó¹€8ɱÇôâ& ›ôijIMÓÂtÛ°5–Þæîñ¹7¶o9222rop¿ŸÏ ¥[ÖÒg% 4ž´FŸˆ'v'b÷Åjß[# èm™ó¹‘‘‘‘{ƒ¼íàó¹{'ÎM€ë†6hêCñôHíØö¶{+# èmîŸãÜÈÈÈÈýçž=½DÁL<@'OM¤ê½½:–Þæîñ¹ãÜÈÈÈ}Ï=»ž;$b{Kæ-}ê´÷F+5ÁF: /µÚAÜ)°q¢¨I£ë¹û“qosdäÎî¶®ß×sO¿4U3Q2³é€f&ÖÇJÁ½•KS§êvÓun9â¾åu3ÌùLÇþ~¢9äò¹Ô¾k÷Ķ×sÂã–e•Á°¨¹Ë~hn•:]§>‚4rÄ8w½ÜË¿M¢๎¦ßãÜÁ0 3÷çRöã’¹YñíÀÕOð¤‡öº¢5ç®—ÄÎ…çï×sûbþÍìÜ¿æ_  -XªŒb6ë™}Žhîh§çÀbçÂówë¹}1õò8l8*…"ul Æ*OÚƒÏÚ½FŽ ¯çÞ?ÌÿuƒÜ6æß×­=w›·­Y!Áûwë¹ýys^}°D!0¢)c,žª’ä¨pW@C†m\ˆ$Î=¼V¯­²Óƒó÷wóoDMxÿ®1Îí‰Ù×3„À‰ã'ÆŸÒHÕwIÖNüD?’޼8lÂüUœ[´°’[áš;âR u¨ÛG—´û*³ÃY´ã.Ñï^I{¾9p?£_zðÇ;PEp¢g6÷-uY@øãÜa1ûz&6¨M›07¬Ø®˜~È$ ?¢K%tïQÚ©€ü\Ãö&,¸•ì+Dç€áýÃ~¾¸x•á`ú K÷´Æ¼v–Aôà™~£h‡Ûç®ð½\ó<žµudzÃǹîV!~yb@6O;žFü,‹Œ@ ü€qîP˜}}.×&OeCUHáV1ý`šMó=«ÛÝØWsæwIjÂnìCDç»CÉ‹õ+‹ù匹¼zmÕc$»]Ky˜1ß›éÞ€²<­­^[ß%¸ãÜ £f犽/Ñ:DçV@Œswß óÂußK©}¾—f_Ë$vkã‡ÆÍ #¶+V¸UÔ‡t}(ñêo|»í4óÆ>›Ã3Î-î(r=7wU¡ê‹ž®gYàå³J~¹_=4÷ž¸×]ÛöĹ#ùBJCU5ãÜîÝÓâÜ @÷ƹúæÌþ2C­¡ñ§Ò¥u#1˜(Ü,¦L†<¨Û-Tpã…M‡äw…°8·´£¿Ì+¹ÞÝJÞ-Ï#–åééò<+¹©î7÷Æ|GUbG@96|>7222rÏpÃë¹+>wöJ6ûy–Fäsg^Ÿ;õüÉà<ï½sqæçÓuEìd¸}nîm3 Ï@ ú¢Ïàm³«¾>w´qî¹7N=R©ì<þôãœyú©çO¢çÝ?¿]Lãznddä>ç†×sW–†Q!lÞ$ˆBX‡}ôØQ¢‰c'Ÿ8yñ㋌?Y¤½üÉe5¦\¥Ú7ÿÖdûznq†yÇyî·s´s“V‘‘{˜Ým߬rQË­h‹ÖsS‡@©hœ~îôùwÏ_úø’”áôs§KESOƨ×@AÚ!ÙSÃSܺ¹žG etûȱ›×sãÊ+9rùœ{5 éžõÜ|4‘Þ;váͱš9Û<—°³FŽ]¾ž@ ¢ÅÜoçÒçÓRkÓEû–3;‰=1Ø#€ö(‘Ÿ;ÄzYQ³ î¸xéÀ¢àó‹ÂñK úÛA]ÑšnŽs#D´ðlmºhßrfÇøÊLì‰ùù @xæå'Ïüü…g^~òÌÏŸyæå'öoXÎ õ»,QJÿë~÷îg„'ŠÅdCÔ„;ZCºxßrˆž­MË÷-ÏåOR—8=²-'÷¹¯ÌÙ×/°” o~PÍÏÊÚÊ ÜmÏ£9¥Î;ØHȲaUœ›Ÿ‡Í°zm5ò87³,~=ü¦Mø]Âo µo\·0Î]×bnÑçž<>ùöˆB˜ŸÍ+}áÍ •þ sˆƒPl^Û‰¨âÜ ìëáýÃÃû‡™sïÁôA~oÍRüÞ߸ßå¸/át !Á³µé¢}Ë™©µÌÃξþ6P.¼ù÷¶ù»{¿Å~7L\Ó¢ã|nÒè¾å¢Q‹¾øJn…åç]µx•uö,…çtûÜõBü²áw@Hðô¹Þ·¼Uqîù¡ÿœZûAäqnÖ&JAëàÌLK·ˆvBWoU"¢Šs{ZcÝðêµUæO³›ça]5»UŸ[ª‰g) Ò7Í= ¢Ñ@ô:ç瞇ÿ¤¯WRêsKm¥ß¥š¸ã\D@‰!³!‚Uœ›Yà>4‹sû•"æ‘|tOo[á­='IˆoËúDÏ" ÎÍ{FoÝÎõÜs#º ­ˆs{Z©Ã”â´ø/wÇqÝç®Á;%Îè=´"Îíö’´ß½5ãÜu­ñ5 ð„ŸÏ¾EãÜ-Ù·ªqîØù‰·ß¸ÀâÜès÷3âÜuí[.YðL£ƒç™7 Œ# R;sî­¹0ÝvûâÜä~:÷ÆüôϦ²{l8\I¼üÉe)ÛÜóÚì¹ûÑÆ¹¥t6Wœ¿Wr+îYlû`ú 8ÏwîÏm‰sOŸ\øxaîùà i{ÈäñÉæ‹CìDçö›.¦ó«<‘çtgó,ýæ0B„+ÂMGGGÃܸôç%·…èãÜ€]2BBTqî60«$öÄ"B4ܾIZµžp# Î µüìö3@D ·Ï]o‹ÔÚ87áFTqî6pázáÜ[ç‹1P£F: ÝH»ÔžõÜ„QŹ[ͯ¼øJj_jîݹv|(¢ÏЀÏݦõÜ„;(Î]¸^èx‘‘‘Ë­¨ ÀÀíonÀ╝ϗ¨CÑÛ@´3§g2ç3P¸^Ó3ïdfžŸ€so# a@ z™w2éésËϽuŽõË &ONšßšð=À87¢õFŽ©})–âçFFFFîmæþt휮87@ÕçÎ^Éf?ÏRô¹­ÛçæÞ6úÜ¢OÏqnD«!~»˜fqîŽ|‘‘‘‘ÛÏá}n¨¢¢hÁ¾å„$¢}Ë#aæßÓNO'®¦©«½bÄò{ ®çô¹-4rtïžÖÎõÜø=G m†Üâ…ö¹=×scœÑPW´¦³qnh'¤VˆuÞîtO-°87î[ŽhÜÑOÏ»mŒ@ í„ìI7çÆõ܈v@96¼ž›Ã-þ“®ºó»íø}ÏÅ3¶›D„¦¶ÙŠ: ˆÆÐ°Ïí¹žã܈v ª87ÃêµUö¦ŠW‡÷ûUÛç®yH(v«D_¡aŸã܈Ž!ª8·h:”uÞÜófýl)¿”UHöK÷ƒ”_žWEãžÅ$†¬FTã—"Õ§®"ˆ¾ƹ;QŹ% nû¼/ð¹yúÀÀÀÝ*¤>‰§‡yºàüîRX6žÙ³ž6y¢gٺǩi™õÙuC úçFìÝð;X¬1ˆ¥4c™ÛY½¶ÊÏo²nuݶâ„'0ÎØFŽÑƹW¯­®äVx‡Ä´xnwf~\-ä¬Y ·ÃkÞØS‡a~Š9Káå¶®Dddä0ŒqnÄ@{âÜž>¥èãºAð}ÝÙÌú™’nï•Þ ¸}nw©tO=¼ØóüR<‹ ®9ˆçFì ˆß.¦[çí3æ>.×Ô¡¼O}_v¯Ÿì¶,Ùç]£˜Ÿõ©<]z+ Ykð¹Izxÿ0Ë/¾iŸšÙtß[WÍ#ü!##Ó¦ãÜ•£>©kss"Bÿó¹ÅÃÂðòò²¸?·zÚ(„ÎÉï^?;!íÃv‡µ†Ñ¼ˆmzÖ¼˜/ÒFL@FF[*žþmñûEãù܈¶n96y>wr$é™ÎíK)âkaêPþ*˜uÞ~÷rï (±^MÝ£éF5³v0}0à3o²¶~Ÿ922rMnjàëu>÷÷@<ŸÐçF´Äë|nG ¡Ïçf_\Ï«bYbÊêµUö§‹a]¿{ƒ-»ÓëÕÍ[5붃½üæk‹ŒŒÜ»[­€vLÎéu>7ƹíuù‹ ǹٗÞóªhß/…3ïäBæ#¾RT¸1íwUzCP3½=¹av·Z혛*Ú¨ôÜÕ87 ­øíâ#G·ç†i=>7ët¦ïf^)QÓ|F˜;§Û²dÇó.ÑšßS»kÈSøø@ò›ýÒ%ÍkÂÙSð{ÅéÕ¹av·Z혛*ã܈¶A96çöã•ÜŠ;G²¹}wŠ;g;ébMü4¿×}—øY‰éb~é^¿ú‹6=KYsddäÎ0ƹÙ>rlQœ{§³øn@ŒÊ###ïhv·ZáÛ1Œs#:êŠÖ´"νә¯ÉÆÎ‘{‰Ý­V]íCEcœÑ6ˆß.>rŒ<ÎŒŒŒÜ…ìnµêjÇ*ZÀ}Ëí4rlfßrÒ»>722rO²»Õ ߎyî[ŽqnD; 1ÎŒŒÜ?ìnµÂ·cçFt â·‹iŒs###÷ »[­ºÚ1†ŠÆ87¢m¿]|äˆqnddä~`w«UW;ÆPÑçF´ ÒÈãÜÈÈÈýÃîV+|;†qnDÇ 1ÎŒŒÜ?ìnµÂ·cçFt â·‹iŒs###÷ »[­ºÚ1†ŠÆ87¢m¿]|äˆqnddä~`w«UW;ÆPÑçF´ ÒÈãÜÈÈÈýÃîV+|;†qnÄÿßÞõû6r\áw‡-†]J»œ‚"N°¨‘;Ha;)‚CàÂL ÿV #à ¦`§r’"«\RQäDH¸äN‡ð¹À-¶Hñ¨¹áÌììÌrPâ÷Aøð4Üyû8|ûÞ¾ÝÙÚ EލsƒÁàÍaÓkùû1Ô¹Ú Î.–QçƒÁÂ¦× òcŒ…Œ:7PÔÙ%#GÔ¹Á`ð&°éµ‚üc!£Î T-rD o›^ËßYëÜñ™ÊẺ1ÅÃÇC9ÖíæáÑWZ ó¨Ã6Ù qÿ°¯M˜Î£Ž 1x<˜^L×Aõbü¾ªgÝ‹&DŸ¹#27€!"¡É–yû0ÏUë§ÃχìS¦S9Üàñ€ˆ::ÃÇÃéÅ4mßÝö.MÎ'AŸZÛ[Û-«&ç“ #ÍÁÃχ|¼ªØ&i0µÍÔÓm«PæÞ¬æ*ÕV"ýþ9a¸¥ûiwð‡·§i[††™¶­wv…þ¾X[M·Ðù£n¯í+­‘Ù[v6¯åðc&32êÜ@eÐ"ÇRëÜã³±Ú2½˜ŽÏÆÖZ‘Êù>µ¶OÎ'§ãSv%DÄòéøÔçè$·¶[­í–ÿö™p…ªsæ¸n[ÅIÌÊ{j«ÚGÕ$訃FÔŽez1åÝùo|6ælÛ:Šªa¾W´ízÎ.ÇïK›Qò šÏ&êÜà®öÞAÏšGj¶rèiÍÎå¹_ZX;Ù¿5[]ÛÙåø}™zj-šÜ¿2™s«GaµsÚL¨Øn´rÎç¹Ú`ÆÎ…?Ï™U‡F÷jDïÓî“?É}¥lfrœð¾¡9A> ˜{É©)™“ÕšÌ{9ŽÚGëèªý¹OsÄ|Pá°Œ™uYõT5TšÿÕ,¦^u %qdx¦n¥Î®Ü¿/uy\¦ÎŽoÙúhÙ³¿nÛVι5ñ<7P¬Ñn±Ïs[#SV#è4m}dŸèÞÑOk»•™drQ{™z®b™Õ-föÀùÐêÇžæ÷¬}Jß½ÛÞµ~_i:h}¦]½-r ¶*ivåþ}É_™ÕJEÉêõwN\±Ý(Åk¥ù±LQ窃9–TçVÇ Šge•”R2KÙ?—U/ª±¼–™…Kî¬(MOÕ>n hGä¹§&Úè27ÕòÑ|Ç®î«"Ížj†gfÒÚöê¼rXÆaùP[Qi³+÷^ (›£¬Ý¬^ËáÇ|~×X·¨ZäXƺå\Çݺ¿eý4­JÇ—ïäŸU[OÙ?ºW‡S3Rb|wÏVæZc¨zª9"ÿ¥YÀ<"Ÿm<5ÑF˹¯çwa2W²Û;m5Á•ßߥo½+‚l9±©§z´iÐü¯öÙ•ï÷¥~_ê¥òÌã •Õ–µ²­œs£Î Ô3b­~ÝrutŸm¤œ–qfÞ%k~êØ>­žW»ïþ•²Zó[%/Ìw,þS«Â¹-&m"+ÍîJ¹#Ë÷·R¾½Ö|vi$g^ïÑŽQÞC°Vv3½V[Ò!!"ºóý¾'¢ã¯GOGq²´€¾ï”–Ÿ%¢ÁÑ »ß%"^•‰e7NNNöööÒ>5ûáy׫ - ¤ÜmDÊm¥Ú4³ÝÑ•ÖÈPGQ[´-Óú·"ÈÚèÖáÒÖ¬¡í«)ŸvŒæ@›kp4ˆ¯×MS[8ƒLSÒ1:¥X†R&Œ¶£uúY5¿)³ËýËÔÐa“4cº¨»i^kp4h¿Ývø1rÕ¯¾üêÁG^ý÷ñ™;NâÑ?GÇÿ:敃üµOð6DÄOʶwÚÚŠK¼òWï '[Òxv6kî4Ó>mï´ézÕ0AB®&¶9ëa±xe+6þ¦Y ˆ·îoÉ Ãs†} VsÌ®µý}É+Fµk¢±æµú‡ý÷~þžÃ©<‰‘såÀ̹e¶Í(*çf°;fXS[X 0WÖÓ\> w](<çF¨±Q­)µÎÍë:ɵÃrŒrÓbi«´ÕÓÀë?»&ák¢UƦ×òñc’ Ïs•AØîÌÄû¹Á`ð&°éµ‚üc!ãyn 2h‘#ÞÏ ƒ7‡M¯åïÇð<7P´È±Œç¹Á`0x=ÙôZþ~ ÏsµA],Wÿ<7 ×Â¦× òcŒ…Œ:7PÔÙ%#GÔ¹Á`ð&°éµ‚üc!£Î T-rD o›^ËߡΠÔ-rD o›^ËߡΠÔuv±Œ:7 Þ6½Vc,dԹʠÎ.9¢Î ƒ7M¯äÇ un 2h‘#êÜ`0xsØôZþ~ un 6h‘#êÜ`0xsØôZþ~ un 6¨³‹eÔ¹Á`ð†°éµ‚üc!£Î TuvÉÈun0¼ lz­ ?ÆXȨs•A‹QçƒÁ›Ã¦×ÚÛÛëö‡ƒþaŸÿÒdkïçª@ïç äO"{½rÀæû¹Ùú ó¨c¾Ÿ;"B(êìâÓ*×¹Çgc3uŸŒUvšÓ‹éÖý-~㲟`0\6‘ô~™[.yÑ„(â3wDæFP „Q­×uîî~W¬P1’I¼‰þaŸOíêö»í]"šœO¸¥µÝâƒtp0÷¯BŽå³×ä|¢i˜­Çeêæ¯! ÎÍš× eÆBF¨ ZäXMÛZòiY…§ãÓÉùät|JD|uì%ϲ¼=ï[”&j‹ª•1t¬Öv+óˆÀ`°Êþ^˲¯ÍEÄgò„rn 4h‘£™m—ñ<·õ9Hw‹š•jy¹ÙÂù±–×jýOÎ'|ªKëMލö©}ÊÐrmjE¶¬Ú'Š×öµŽ¢êÆÚ"Sƒ=ÙßkYöÅóÜ@]PgËÕ<Ï­Ž˜§çU©TIDATÙ¢æ¾2åF3{æ¹ÝD³7-¶ZLž&[Û-‡VZînjâÐSîkE½ µ­=ƒo y-“ 9!"Ô¹JÀq¢*‹‚êÜnÖFÌl!#›LÓŸ®Ïs¡ýçå@¹ûñ·ŒÙCæu0ìf‡×ò¹û„±Qç*ƒ9®g[ž µÜZ¶XÅ¿ÏÞüeÿ~<õ”r‹Ì°eîÓ3 ÖØáµÔ+dê5-Ô¹Ú EŽk[ç–e™y3ÜY¯ÿ>½ùËþýxê©vÈíÒ jæíî kìöZòWÆÐî A¨ êìby ëÜÌòì•¶}P»¬ûï*›ý˜¹x>˘9{K0låL¯å¾ƒ„±Qç*ljª,jªsË›°ä§æ]ߤdŸ›÷]›=«íÖ{Ô={ó‘­ý¨÷±Ëcñ´ŒÜWÕÙzê–>ßböñZÖûf˜Õöë“¶ Î ”-rlï´yý k[NôLž^Ly]ß×”–e9¢¶ïéøÔì£]隘íKU(žÝ£h½©=¤ÉiÚÊm¦}jjžv,²=ôûƒÁÌ¿£Î-"uË*PƺåD´u+s{Ç"kÀºn¹§k’kAªë–£Î TبÖRçž^LÇgc7‡öƒÁŲêµr0c!'Dò]aÇ_žŽbäÜ@90sn†Ì¼óåÜë3çîîw}ÞvÈlWXl\O€b¡EŽiuîþaŸŒZµ)ž‰˜ÚD‚(¾n‡ 2ä²å‘2åѳ‘”;û"êü®ãuÚ>ª^”Ûñ<7PÄò’iÏsû¿³–ˆºŸ~ÑÝX¼®NN¦ãoÎÚo¿cž\÷öö|î¹aÈëŽÂó¾tÛóÜуOþB‰{oâ´ ”-çéïçö|g­Üëä$`{0 ^‘›;M­…o"óô]|©ÜDé9~yüìÉåó‘¸ûÁû;~µG×+X@ÆS‰â:ó&ïØ3ã„ööÚq2dÈ%Êò„ºº× bF#Í·~Ôl6ïýô»—/~{E$âun ,ÄË9wèºåÚºÙ±~ß&œŒGÏÎ C† ¹~&.Ÿ¿ô?ç~ð~sö"æóõ¢Î'óf³yï'?jD4O(“Çß^=üøÃºC¸‘xù¿qó­7=Ϲó„.¿ûˆøY0YçnÄÉüòÅ4'jðYÝ!_>ùêê]ßkG A† 2dÈ=åy_¾ˆ=Ϲ¯ådN$î¼ûËß7"ñƽ{"¢8™‹¨qýìšKžÍf_ýñ£ºC¸‘øò¯—ão¯<Ϲ,Ïf³F$ŽÿöÛÿ®^¬hñLaIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/login-config-element.png0000644000175000017500000004516612032647161026713 0ustar ebourgebourg‰PNG  IHDR6úJÉ IDATxœí½mhWº.ú(”a8P}P.]ƒ*°Á-uˆÄÆ:ã˶|ýÃÖäÀX‰aì$›X3“xæpöÎÌag<ÙÜŒì“(áf[ÙD؉œ ¹V6;çÊÙ[̸b[m° SÍ8UA-pîÕ½zuUuõ‡ZR«û}VÕú¨îêz×[ïúèù_ÿßÿâÿÁ~`}} ÿÉñß¿yQט@×àœôÓhƒ6&Mz“õ/ÿîÂâŸ'z¼«˜þ`zìÌXÓÙg®ÎŒžm(KOO€¿þõ¯€üàÂ8Ù÷mq˜i¬|®†p¢&ñåûܸ®AùDHo‡æmÐÒí`xÀ™Nšô6i€X¼½¨kzÕ{õ§½ø·éìÐhva’zzz´ÿô¿ý§õõu;oûðuM÷?ÅR<àLc<àŒ1¡‘‚ÐÀÀ^qX`ïÍx ÍXªÀÝzwª°Ö m¤ ^ŒN);¤ƒDÝ›²W›Õé²¶ÂÚgêÕ{RNÁG“Út ný:ÓgÚ+í¢½ 꽦½ÜfzÅ'½3´xô‹'¼®é>|UŸöEC ò¨´#~àë¬XNÑSç€30pƒEÎP´õ×.ló­Ã»•»õ4_¢¾KIËÆši¬hK'nÀøï­Á_‹ÑLcªv×ÜÍ*µWKïŽ×Æîr9F(]jƒÙ!HíÇëÕ¢N÷²BC:*ÊÚkÒ–ª÷TêŸ7§ûRöŠ[Ö…Ú:¿RCg6¢÷n­^nVïoˆjNzgh(Ð5½æÓ¾ølg¥ˆ\:Ó…–éÂ@m0£èiå’¥…«§vÕÖ0iëëë‹ùņü§²ó9˜ˆ¨Æ¦ë‰ÿ>à×ÿ˜Û¬º4毵®þš'µ«Y¥öjiÃp×<=`~ÀS†ázqº×p„†Ð\ÕÞjI§ËÚJ…šzQ(pµY(¸Éº¿Ô—Ñ<¢K}·Ýoæ—7S4óK[¤‡š ±ú1kážÓ½ä`mÃúIk!ß/éa%tÛê¹?ÛÃhÔ’ÏÿÿtîÅsˆ¢d¦?˜þS¹äHícgÇL½7%Ï)ÓïOK[c¦MMÚFiÓÆÎŽéš~åý+ª«Ä==ªkú'W?QZÄßuºW¼Z nà:‘9~Ôô¿ÇÏÿ~NMß ÖwÀüŸ¯ Œ4WÎÄå,€s/ÏKí8¸øûy7ðccG­¡#)øÿóîš'ò¦S´aô"ÓkÎÿÅNí6\¯”^M†»æ1À <Ó0œÕZº×p eí<á'©ÚJNÁ÷•6œ•²¶W8ÀÃzOºB/«é.Ξ髪—ãôÞxÝ›^\*éýUuî^I¬®—\p¡­X=” ï•ôcÒù{®_K/HýD¥¾ã4§‡7¢Ÿª®Z­Ÿ¶n’Þ Ž]€‰LñqPJÑ‹Rü§ò[;ɬ¬C%#@¨vaeüÀÿùùŸ [#Sžñù>øH:aš°Ò¢ ;æþØ™±™f¤ÿTà'ÿå'Ÿ\ýDØXw> ó ¬‡Ÿ0èƒív=ÅžÓ”†€¼Z½uhXX˜ÍÚ4±\X0Œ _sžH‰*nþy6“æÏ´”³VÌË´”³æLüâ8€Ù?åJ%ûŒ¥œ5ADïN9žƒ@çðÝ);V•zµ¬U|£·¬ÍÞ”]ˆÓ{Ì ½êq.Ó QmõUèüJœÞ[]/õÀ~3¿RàkESõ²ÔVY¬Ð‹Ko €?¤êÇBÚŽÕ¹zô½Zú‰êzÉö¼°NÐ÷jé§êÒóÑw¤î/ë6¦GêÔ ¤wŒPôc÷Ÿä›:5þä~k)þ-\»šwì̘p¿*J(µGC¥EU#ZϾøìGï$ý'(ÆÍJ6@éÙ­óL+êÌþ´žÂ…ßLO¼>vîdöwoåÀÀ4}â׿?[¼ð³~×ÃïÞÊÙ'ÓgŽ?—1Õ¸.}˜³—ÁÿÔ±þ‘Z©GÀwqá÷󞺆Á'3ÿp\ÓWík²™¦›{ŒWŸ4Õýïñþ§öüW¶ÚU—.:×õS)ýÈ}7îø{MýáâG ñÀØo{ÆÅ^ûWûÚöøsY쀙÷G_{3Ǽúܰù(D½¹;Ž·Æßþõqù{Nf¿yá·s<ðÓFª°Æt¡½µâç–îMy^œN§<ÀßJ§œxm:/ê=¦S¨¡3}¦­ê•Êtø™½ÚYᜃþÀ^Ó–z…Î/ÇéƒV~Ù‹êA¡×Àð± SõRœ~¢¶nBß«¥ŸªÐóK÷jèÜ’çÅê{5ôÈ«éþÜ=§y}'Nÿ¨ªž¯K»¤wŠVž{ûOÒzPôŸDz5ÿ©èEÉ\PzO¨Ö>ýþôó/>_=¡ä¹:£¶GƒpÆØÛï½}îì9Ek6z¦4˜=(ÖôɵOÄù÷Æ×\€qæBŸ:20÷…=wcÁ¶OeŸ´x0Ëx‡kö»02˜šÿÚz25r”]z—sîÍݰçþý&3Øä›cã?µžuöìsC£',Çñ_{}Ö]ãý}F~iY× Ø…×þëé¹_<~¬ÿÔÑôÔç¬GÓ¿ö×páå™SÏdÆÏôÏ5nÈö¨m“__sÌýûÂ艡¡AköÆÍ“VnÁÍô¥ œ§Yêµ—úýã/OŸûéÐØ3ÖìÜôǹ᧎=7É¿w¯ÿËkj½cçç±ftœó_-æós™áª‹Ü0RÞªË@èBœîMy—s<Ý›rÊÚ,ë´éœ²^‰Ó{ÊÚÚcÚ+_‹è¾J½\Öβã­à™ý¦]Ö–½¤èeÇóðÌÁJ]ô-*ôàcV^Õ÷âôÕõºè¯¬àE¿¤©¦ïTÓoÕøðúЬÎ}]Ô#amõªë;v¡Ðˆþº–þ1éѳÿ30ñþ­QÿI¿]|rбc?ýÁ4ßÓ<{æYµä¢.y8Õlà™«3¡ö<$m°{3f®ÎGnˆ•–Ò¡‹s>¹ö‰°„%sÊ¥…äA1"bô¦ú¥¦?g»Ù/òNÿÍ€x² <ÿÊ䥷®~¢ßý.o/»SŸÞ3ÀL<€a¤\×ù‘àçÿmrîË|>ïÍþ©À}¿hâ±ó—~wù@7tϳ‡ž²° ³ÊÍßÏ/ä9€½†Ë Ѷ!α˜w†ûwø©þÙ/ŠãIÀú3 ãÚ¿æòß:s·]™>xkÅBlÛ>uò”¬7¿\¯®ÀÏ_¾ô»?\51½5çgÌó|.õZœîežçsÎyà¥{S… íu:UX­¡­=Ú^uùçgõUêBY;%Ùk:×+i{YÑ+N…ö8¼¢ ‹èƒza)N?f.,+zÉzð1«¶~ÂÊ+:·äy«%}¯Q]ˆÑOY¹{…BUíõ¢é{µô«êùjúNu]¨[ÿ(^ü(S¡¿&Ý!Z<êÄó<ô´/¢c)Åñx¬’ÎSÙ÷ÒŠUqü+ó.úO¬Xˆ®é)–’ãìBµËÑ}ÒÖ„Ú“b)1§+<žýÊûWÆÎŒù¯C/>åÁ?ù—OxÀe}œKûÄT~: `êòTäSdž&?žäÂòÁ9xÀ@ç<³?õ÷¿Õ58«>vœsýa°¿-dtÍxêaKXD߇çy¦9ÀnÇÃ0z2;z2+jL:|p-Ü6ÅJ5ÀoÜ´û3æØÉlêÌ~™ai:ï{D0öLvì™b±VÚœûr¡T/ŒT\½(zœŽçYûŽˆà?À Ãð<^ò™ o­øùUè^Ãó¸ô™ ž£Ófaµ†îÛcÚE¯ºÂ7*¦ ÝW¡‚ëÉô•’Ÿ´×ªÐ…’Ÿ¤êƒ–½£Zù’_5ðXý„•_v„_¢ê#Od–o• ÕOeòKNaóô3ù{é\)ïˆÐ…Zú^Iÿh õ3¹;1úÔæïØé{¤wŒ$Ÿö¹/s“V¬7!Æ28ý³Ó§NœBù¥‘q%ßKx?ñcÿ4„Ç~kð¹²5âôŸ„­ùÉùÉ'ÿò‰(GØMÚÆŠñì`3Wgž?ó‘É/©ÚZØ îyR{±ú^+ô+õ’ã­*éMia{ŠúGõé;5õ@mýãúô×1Zد¨ÿ¦ªÎ‘no]³ Aƒ“Nª ”–’Oûk¼vêÄ)9~Oá„R¤ª8n¢JìJºGâp]Ó=Í“µž­Vû³gžýèêGÒÖcQÑùÀŒ±+\yöô³QÿIŒmúO<àGžÊè SÎ`š ðYÍ>ÚúäЅ׋/3û¬‘c³ŸßÀ<’±z3Ây²ö×>_;ÝÿöïÎNýñ¦·³—-~í.¯Š6YúC6ûïùÓÏdGÿ&Ë]äW<«×p<ïæ_œØÊ.ƒô¢Ç·mß²ôkŸÏß½Ÿÿ‹}ö™ìèɬçrw :ƒ¿†_åÝ5¤R˜ÿÚ>í+õîI;«…›_9býÎpc·áy^Q×á?½é‚ç•ü'E§Ó…Õ*Úó„?”Þ“.¬z%Ÿ)m«ºPÒ}i§R—ü'Ë©é3íW|¦j:ä3­Tê¢Ï”É/ÛŠ.úFOl²oò“Bº°Q]á'µÌÈ•úÂUõrwªè{5t±¯½’¨ÿf`þNYç*õ2éöÖ×þuAÄ¢äÓ>4¦N}[&Αö£âi©D˜Ä(¾øØ•D0Ç —F3mRûõ¹Î.l¬]Ú ÿIµ–"ø„JÿIøƒ"ÅþÀc»˜à‘£™Ü×_ó,3Ãp¶‹åï/»ß!û¤e¦tØ…é÷Ç\ÿžúpž1còÛ¯¾4üÚ+£s_,Î|š=™näâåYo­pêØà…—‡¸Žá/ï—ÆÚAú@Bcÿü¿Íœ{.;öÓ,vÁwñþ‡sþ÷Nêá”Ú6þÀ3tG`J/ Ÿúç9fàæ—ùr_Ìû®páÌŒþ4{î¹!Qìä?_gàSÎ_xahâͱ×þîúó¯ÎŒWÔ[ð¿wt­TÆ/2¼µBQ?bxkàk¯¤Í´ç„î3Ó©MV«h¯<à}Vº°ZÔ+mÇê}}v¡¬1îüÏdúœ[èLŸ]°ùZDê³Wjé>{©¨2yU/»ÜãxÀŸ,ùOeí m ?é?2Xòoê× 駫ë{Më²>RÖ#Grª¾Ó }t wÇ.ë{¶WˆÓwš×ó%}êXuýu¼Î}mH·½fJk ‰§=ÓØøsãïÿñý#Æ2œñ"çœiFÊ`.Ïwp€†¡kº³j0{Ó@…öŸ¯yÂ[¸±;­—f›ÿìHþ~2éá§û¯‘ûõë×Ì^C”À˜‘ÚÍü¸®¥ ùÎj€Ùk>vé®[ÀØmè,ås×[óFçÂb7z-}—ï8À3V†sÎðTН)šsî mrîõ#&_+êô#¦'µiz^-ý¨éyÿ€ß÷¨Y(k«àŠÚ² «eí­¼¨Þgy«ÏàgöYŽÔË)ÄêŒS(x.üÌ¡Œ³RÔ‡2¶ª ï;øOfìåxí, ßqÀ?2˜É/5¤³ùe»àDôÓÙüÒfê#Ùü½=r$›k¹>šÍÝQô=»ðmsz(w/Õ§Ž ÍßiLçîä—Iïm¯äoýÛÛœóг=:¯bý= ~àëº>ýÁô©“§<Ï+úCjüI«û'm’ðŸD93Ï G¨®zlVÍ’ö3ê?I\Ã.Ýàë §1ý~(Ýè…¾K—~iZêQÀ7.§¤Rº(ÁO=l…ÊyѺ®CCJ9S¤3-•Ùo ÿ¨»àû˜ûbñw˜e %è:|_×S¢£7]l‰žr7•2ý~êá”Ë]ÅkÄì¨S)w ©²vÝè…™J‰á>|ó‘”ç)zM¬?䛘—òᛦ)|)¾eš©5 «µ´eV=pøð3–¹\¡ E½Ï* üá'3y©3 K êeÛ[:[ÖOg–Ð#ê#Ù…{ñz¾åúhvþŽ¢ïÙ^!¬G«kñN¯¤ó%=TÖÂöîP­<{+žíÑ÷gjü©è-éòYi.l}ñ§b9»€ÒBÞ„­éY__w§!ÿ €]‹šL§MéåÔä‘#žçÍÞX0 £þ\-aÏ+@~xŒÝFù¨ÆÄh]Kù[ÔzÊà"HÔ§|¿¨S§¸ï‹‡©TŠ/µÉ¹ëûýˆÉ׊Ú|Äôbµiz^œ~Ôô<×ÿ·µ ž£-Ë[uÜDÙgV×èŒU(H) bœ‹ª³‡2öŠ¢ ÷»ˆÈØ+1zh0c/œ¢°—–›ÔOØKËŽÓŒyz`!VX¸·™úèÀÂEß[v¾zhá^¾~=zth¾ŠÎÝËÛBÊÝ©¦mû[·}b(÷5év×3ŸÍ ÎüÛÅâÛ¾Fü'ñ´^÷x£þv0óñÌȱÎy£ïêð=ëëëîwny¨›4ž‘=„=”°óöñ33™eWVSÃç~ÀS©tç“&Mz+4oƒ6Þ4¿?{ëßÞæ/;C<íg®ÎŒi>û3#'šÌÞseòJéJæÉsö« BÃ:xzü¹lsÏy¦1¶›ñ5Þ´¥H÷¦ «…æò½(qsŸÏe2ÛûQ¡›±°°0vfL¦‡p9ÇH+jbbbbbâmaù2‡¼¨ÙÏg@ Â6!¿=3Zö¢ä¼_ñîm`E‰‰‰‰‰»”•õý(E „6Å¢ˆ‰‰‰‰Û”ŽE8| ”r÷›»"ñî7wå Bo±EOhU¥¡ê6ÞþF+m¢ÆV}Ô¬·f3¶«a§£™X€»ßܽ•»%€Ðòhl®FY@Ö"ËžÃ.[Â~àðñLl¢FYNs%4ÄòÁ]âÒdŠzÕ[Ìê·\Ï7Þª»‚˜˜¸»¸ÑXTl8Á¡‘ŽB£èj]ïXwGžÜ´_Ríjêæ\„h®š…G/­ÚGMŒmgK>«„fÄž°ÁÏ@ tš‰E TKQµx 5ç—DkáÏ#Z¯Lõºê¯±N}àðV]]´–‡ÈÇ:¸|š«ž“Ì•à“ŶS=¿…ŸUµo¼UŸ11qW±‹*ïº+÷§’)*£ŠoT^p©–®‡Ï>.+ª¿üFëªv]5k 9^]µ”háõ窿P¬àF>«:ÛP³=ÄÄÄÄa.í‹È4ÖL,J¦¨GCZ}–Õo?ÔˆW=uEuC5ÊGg´%­­±Uµ4šKêÐ[¸æ>+ñíDË~ãõ_111q™•XTi¿¨’íªfÙª¥DuÔ¨‡«Ÿ\WrÞzja’dzoªßÖègت\ª–¡&|©äò7Ï·&&&î*¶ ´MˆEEϬŸ«å¨¿ŸÞ\QÝÚ«E†ý<ë93¡„X¯qãŸÕÆÏ'&&&æMÏ‹jbD_4W2ªÍ‹Jí¶‘a„ £ÔjÖØôà´jNÂ$-õÒÑ«£å×ßìš#újÖÛDÕ¡« Î‹êY__wWøOó7歌ŚÝS„x#,ÇÅm{KZÎbü‹ðÛ¡=ÄÄÄíÌvÞ==ê~çÒ}m„ž3ÔÁ—F ZŽÆæE‰Õ Bhƒ÷•äØëR×qh-W«N~žÍÍUÚÞϪÎ;aWÄ &&ÞqÌE°5 ý¢ˆ‰‰‰‰Û•æEåò|»ceÄÄÄÄÄ]Ëe¥AV‹iLÄ¢2‡2ÛÞ>bbbbâ®e;o Å)E „¶Å¢ˆ‰‰‰‰·oܸ1ûÅl,÷êox¿(@ Z…Ù/fGŽŽÄê?Ô?ýÁtÃûE·„uM¯v¥õdE Å¢°¥Hö¢f>˜¡X1111ñöp²E±(@ l(ELLLLܦL±(@ ´)(ELLLLܦL±(@ ´)úõ'¥X1111ñ¶ñâíÅÜB®S,Š@ m Z£˜˜˜˜¸]9a¿¨©šâÛ½;qÇóøKã—ñ¥·.m{Ûˆ‰‰·‘§Þ›ÊßÎM”†žõõuÇq˜Æ`îÆÜìŸfÅ!ÆÁI“n­~õ¯öê_¼½{wN¾;Ù&í$MšôÖkñ|˜¹:3zzÔýÎå×€Ò<) ªÃ&À±]¦•ڌ íñóãr$‹ó¢¿4¾}m$ÛƒÉw'‹Ï‡ ˜Â4‹b`›Q½}ßÙ§îÆ¹ÎIÍÞ¨ŸW¾ƒf`|Û߃o—Ÿ 󢿾šã›àE ÿ d¢ºãçÇ'ß™°x{Q¤L¾;©úL"E^Ð…˜|wR<jÏ‹j-ìûÎk¿½À8wöܹ³çìûnËk!´?Ô»Kö›¢¾11q×2¸FßüWó<΋êéé‘z}}uñ݋ÿøÚä{“ª#5þâøkÿý"yT݆¨% })ò¢„®…ô¢j¬ÑEõôôœ}áÊù>:û•³/|¤š«š0­Ô…_^?;þÚo/ˆ¿ñ³ã~ùZ²}ê‰Cc—[½@™²‘ M@ö’„–þ“xÍ)ELÜõ i^”°RP ìÓðSƒOö¸ysqø©»===õûRÖ¾Tö±¡‘#rwæyÀ­}frYxC%gÙH™„–@úïB/Þ^œú§)uŽOéGLLÜñŒJ[UW,Šeúî9p¸gp°?öœd0 ·©–;æ®@Ô£RÝ#•*PÍ" !O«µPï¡)ELL¬2*mÕCåÿKó¢g%Ï«ÿbÏI€c»†Éd݆Éd\ªQh}}]}_·^J®RCN’̲RÑD¡Þ9²ß$|)lwߘ˜¸hf^»y3w÷›¢¶.·€ÅÛeNÀìg³Ùdž„æ² Í~6›”!!ç¦~+"½¥¨‹:Lô&p3 {IBS,Š˜˜8Ä@ƒ±(a†Ÿº{óæâŸÁ<ÿ·×ÿwl·lVªË±ÝæFôE«-¬Ù¤j'ȼä0m6*ïŠE‡•¶ª®XÔúúú³ç<ÿ·×oŸìûîÜçsj™ÒZÎ}>'Ö›h èÜŽ@ôN X11±Ê¨´Uõ΋BÉÉhÈšû|Î[¶˜`üÍìä¯rB 6úìácÃ5GŸ‡j”¦(äú¨§ÅæJH‰¾9¤á›šE ª¡ùyQM@¬á-› p<Ï_ãü5.´`ûNí}±¯õäàˆè¿ ¹RÖDÕl$¡NÈ^’Ћ"&&1Ðì} yQŽíÎ~6‹BÆñ8+¯¡ŽNíµGNŒÐ2]‚V­Ñwàðw¿¹Ûò¶ªdQŽŠ¶V-üî7w7ØæhSeÉØÌš@aK×èãÇJ†œ¼Ô;ŽjûžÇƒÚ¥:êÝ%ts±(µ„Ö÷à6\NìC_$n¼…Õ,ÊÆ¯ºZ™›÷ioänÕçIÜnŒÊXTü~QˆÃÝoÖûʼnӘÆ\x%ŸIî\WÔÐò|9ãŠÐñw”1<Ñq}59TB Yuš+áñìã"{ÈóÔ–Œw ¾ñ6G[›ð}µ ·g«ˆ[óÍ*ó¢´âÿŠ}jI,Š8õ’uíݼ¹Ûàà|mÁ |@çÏ  Àÿå¹ä~¡“ê•g²¹…ÓXl,ŠUß=Z–Píi'ÜýænòQa|4¶m¡”ä2CçßýænBûCoêDÉ¡Úkž“Üæäklôó Mn[ôhÂùÕ>ÕäÏ!ŠzîâÂPû²4”úG-ß/J ‚8÷ò(€Û£õ¿$$t*¢½r‹¾¯|+Íšò¢T?F>ã>ò„¢~IlÉâßPo]FA¢µ‡®.Êò™8Ì/ IDAT«¶çÀá¢=ju±-Œõ‡B5Ö¼ÆØ6‡ŒÌº¢Øö‡¾Ùh½±-‰ý¦Ô+ªö9ÜÊÝR½Ûšw ñbñ«wu±¨-ƒû­ŸÿÚvœ|¦é%ÛYÔÌ`ý‡,ëù^;ò΃Òojy, JdE}ï=Ê4&O¨V²š¥ÎÚk•¥ÅÖjaò§W-%᫵JEµò“?Ø–'_K(¶‘ϸ3hf¾­Ãüç¹ÙÏæœ’}â/í“Оçænæ§ß¹>ÿynÛIh¡^yÓó¢ÔÒê9[{ýGÕÞzµ7Ú6µj¢ýõ§D¯ñVî–ääÚÅ€:Õñj®%Ñ¢6ò9w ®Ñ·Õ0÷Õ5p¦±ÌÞ!]c~PP9¿4/ŽŽ=Jkì0„ú¿M¯Ñ§–VÏÑØÚ›8Zgíâ½bKÚÖª6ú‰%×þ×\Kb‹JhOr]ÄÁ¨´U›5/JEOOÏÃõîœ;t"{ñ&ŒÝ4ØË¹ù;³ ÷æT†ÆÎ=3~ñ&†Od[ÞT¦"ÚÿÝŒyQ> tlO_åʦ–x$òµ£¶D­Y{=ÞClJÂ56ñy†tµ9I~z¡vnðs î F¥­ÚôXTOOÏù—>’%׳äg‘Ý;ì\טʙ}4 <1zTo´-\ʈîk±ýߦcQÑñ]w¿¹+ã.¡ÑÌ"oìÑ„¶Õ™¢²¬"vŽmìÑØxLýÞC(¥æ5Æ–»F´üjíoâÓKø¦êüä0–vèû·Ð‹ÚºXTOOÏÙ>Ê>–yõçν06üÔà•ÿëV=¾”æ &Wáë?Ô@ù~ÀÁ¹x¿Ç^l›ð«^ëËXÇOf‡Od³¹…𦿡Ýâ«UAÈN$ì=_í´dD ‰-A&Öù)í,DûÈ[¿_”Qd¡Y>[ÖºFbâ„»WE=Tþ¿‹BKÁÁó ‹rSyQþâ튿XèÃò}'w;_(8¼4¿˜iÌøñ“Åæ…• åM¶5 @=#;µ"±Mê¶ écãÑ5&6•£žDµÑw;—»á‰;•-ŒE­¯¯¿ÿOÏó€/üyqê½ÜôûÅ·|ý‡ þE!bQLc2Å_J×*Z;´o#ûð&x`A´I›TQÛBö’„Þ®ý¢æu wÃ5w$[;/*ô\®óqìƒës=ÏzÔôÿ nÞœ?ýÜ©ú«ÞFµ‘ÛÞ¤íSúl󢈉‰;•Qi«¶b^”ºCný¹Äˆ¾Üíüò}'¿œ—±(¿Žö”P-:ªÚQ¡ÕWpÑ”dÈóC±«ØJë/¶ Þ]Bo},Š˜˜¸•¶jÓcQMCŒ’ÈÊdöY™¾ŒhÛìÙ‘##5óF_ ÅnÊ’œ]M©Vrè|TšçØJ«Û‘Pï.ÙoÚâX11q;3ÐÞkôpm_Ä¢Àá\S¬—ÞCº¶¿½$4ÙKz»bQÄÄÄmËÀ–ìÕ4Üoý¹/nŠX“#úòËùBÁ928,,íÜ7Ýo›±Rï©´3ʽ$€m`¿(bbâNeTÚªMÜ/JEý†aîó›<ðûû2~ÀSKï3u¹nie¦Ò¼(Ã0æ>¿9úâðf´–°IPï.¾ý¢¶—/½uI\C¹?Gš4édýê/^­ùû*æRlUÛí5|lpîó›iC‡»`ó5®®Ñg¯ØºÆ Ã`š>|lpÛIhòΓš5µFß¶³˜O êÄâíÅþCýbY™š^T[Ç¢RêÃG‡O òÀ·Ò–aQfš>|t°Ñ•d ÛŽµ£cQ¡~ˆwMÄ¢Úo¿( eéÆÎÿ6±6 ¡=ò¢vô¼(P?šŽEmż(A äEa'Ï‹"õ£¡_–j«Úw^¡ó‹B#ý,±ÃPrÊxQ™sÝhÞÍU'2ÖŸ½'‚†²*{?¡Ä¢´âÿÊX‰mŸµ¼v~‚Açððkê‹ïÐîò[‡•ÈŠ±|±±(V}䀇ÜÊÝRSjæj!oü£hhòÃÍ ­iRÆí]<Œæ‡têù]ï˜XÔF`hC<à†Æx¦!Y{Áüv··»ÐªX”ÀãÙÇ£û½Æî+|,¹Í«ªÕ=[Cû*É\ mˆ"º+*õZ˜E ¬ö°ŽÝl=n;´PuÕZÕê¯=ö£¨¿Í„@Ó±¨-šµeà?÷˱µ||ðpyàÅós á1Ñ_…üý4ýkÙàƒ ZZË;à±ooê\ÖߤÅš…’‘¾”,S¬ê-ìMè¨ØèOîk*A¤ßÊÝz<û¸º%`C^TÈ$[…h®†¾Üغ¢¥U»{k¶jãµ£Š=nºÍ„‹†¼(õÝvó¢6ˆr×÷ÝÕÿzŽmÝ0\˜xúÕ”aCÅ4æáõ)B¿ ©7øk‰ýYnuÕÐ9›ý\HˆE54/ªf™±GÕ]”T]Ïùõ{QM µŸy Kk¢wUsùÊš¹‰¦cQm7/jƒöÕùο÷ë× æ÷ ótƒ!à)Øì·ÜßþÚÿÎ/YïÌ*õ·ª†¬Cé±:¡ÌÐi¡xxBÑØuµXz¨´†âí eV+$¹üÕô¼([¹[Pv=—GÕ­f£c“u´´nÑ·® z´Ú푌ærv:+ÛÎkômÂO­Né»qíìµ ©4× €Æð'¦,Upô¿¿P:³áUþÔÑô†žþ¡rdJý~OÈû©™·Zãj‰žŸPHÍòccQPúP Å¢˜Æ„£#íŠ|_' jR‚ç$þêlC7#Ù€µ6a§£éXÔΘ•[ÀâíxA´ß7ãÔc3çgñà œ™q¾íÿŸWÜ´ Íp Å>{Œ%Ÿ°ÕÞz©}À„'u4K(=Ô—lÈÂUksÍÓ-9Úá­ië÷¢Ðì¼(µáKE˯Vc=ZõÆZèE5÷ýn䯍äж ýºw^,*;Pï™âZ&2 ÿG¿}ö̳WÞ¹’2Sô7.0KgFcQõ ‰½@N(g#Qâ͈0÷T†¾ëlFÂÑÖÆ¢dŠ!µô«Ä¨¿jµ«Zd£øñêµ!ÔÉX¯ÜSŠžÒØ–X)éCGëj¢Ì„V%ܱ±Mª¿Òš¹6ã~&l#šŽEuÚ¼¨}ÕÖ'.OŒžåœÏÏÍcWèÌ-]寞_]ì9õ¿—kó_uÈ_iz^”𜪥¨ó¥¤§¥ž«ÕÑ€Ñ\±ãŽb?ê:U–œ·¹b멢歘œXgí-ÉEØéhhD_çÇ¢B):Ó3û2þš93Þ‹JxÖ¯WÙ6^íØÖìÆ–}(ÏIhIµ¼-l*‡]T«+zQ!´*Õ\?z´Ïc·=[EèTtx,ª~DÛo>j~ôþG—&ô”:36%úц:w¡`oýDTömÕrbcÈ2%¹Gœn¨·Ûxµðп±%Wk Z‹j®±Ú¶£=[EèTtx,ª~ˆkql7zÈñÜЙÍÅ¢M£U±¨mçÅÛ‹“ïNÖ|kALL,¹ÎßÐ鱨éßç9¸Øí1™·8Eà-ŠEm/ Ïv5$EÍßWñ¼^£ïµwÚ*žö•ßR”{IUü§‹›‡„†P§¥ÚªN‹EÚ!/ ;9ELL¼ŒJ[EûE¶!/ UÆõw-‹Ú¦Þ+®·M¼y,?m¾ccQÄÄÄ›ÄŧCÇ¢6¦±'û·»‹›7™Vîý°‹"&&Þ$†òƯ÷‹’X\° «ÎÀÁ 8«^¬†±0’/ößÁ4âMâ /Š5»_Tgð¥·.‰¢4¾”4éNÖ¯þâÕ:½(ÕVuÚ¼(‰þË»á²Ý)¾æVÓª}BÙ’ƒx3˜å;Où´w伨V1\'t o/öêCakzQ¼_Ôô{3ÓïÍ8ߺ®ãçóùkœñÖxHƒ¥&?tÿó;”WzQÄ›ÁQ/ªéý¢:‰ „n€xgPï/¢ƒ×è{q”Ü4R2™ xº×ééíP^@¤<žíA³¾BCyîy<Û#¸¹ºîåÔ¾ZãF®´%^ÔŽ^£¯UL túE¨¶ªçE [ ÀýpvøÃ9þá¬wêÂÔ§¿gÝüSáê?.ðÀ=úë¯dg^ÉÊŒ•}üføVn½Î3î¹ûÍú­ÜºàFë:p¸Gäå×Ì TãF®´ÎkTS¢^h^Ðhè¡ÚªN›uýWCÎsþ+gêoêÅëbgšîLc>8Ótã@fOFæ­ìãW°ô?ªù%!/Jú7±žŠ°OÑtµL5ŠÏ¤¦¨u…Ú­7z]jJèêBí¯víÕΨh[r,JM©Ég?pø€L‘û<µƒWD^Ec¿ˆNE]%Ë®<à:˜»û*J±a\éø0°üŸÿ>ólfÕÿÊ´Ì^Í‹R=éH?FõÔ¼2×Ã=úFj.Q”Z»¨1ê{©íŒ^…8Aü…Z*_-MÖÛÎèù²å"¯êáµ0¥~_ÕRv Ý€Æ~J,J“ÿ—cQí÷ËY¼]õPÿ¡¢¸þ«!LC?÷¿d}‡†ÜàM¶²€A^L¿YLç2{2ª}Bu/JM‰­vf5?©Q–E5T{ìU„ÊQÏÞO´ýªˆFÝ’¯7”«Z,ª‰yQ²„عs.J›ç O+6åî7wÅμ"—ÜÀ÷î7wk–&s©Zž£æ•¥‘EèN4‹ÒPòŸÚ9%íPÌ^“52GçÙÏ_ͽRQBÈ‹’gª)R«çÔy4!%š-³þÚCºf €[¹uµ´š5V;¿Z{b½(Öì¼(µ„P™ÒN¨ç ‹r+wK¼!GE–‡ˆ{å¿rky±ë®Ü{·Z^Q£ÔòÕæÉÒxÜ,¡ãQÏï:6¥•ÿßá󢲿šbâåù¡cÖÜçù,ÏY·óæs§¼¯MŽY:jÍ}‘·5˜}МP ÍyQjÔ'z4–Å+²»ß¬×éEÕY¾<*Þ¿%”Skë¼¢zò&Ç¢š*!”‚’¥©vTÕâ4 õßäzC'‡Ê‰zHäEº‹*C8ç:˜ÿ”ŽRlcä`^Æ¢F晆+çªè“1û‘ÿʨŒ03¡8M©œÚ¬–)#:²LaÀ¢e&—/ˬ‹’6,Zo4W´®„ó£íÙâX”4ÂsRÊw}±åTÓ<à j"¯Z)Ţ݌EÕë¿Êú˜`óÜ›˜Æ8€{SjºL9Ë q#ú¢á÷„RBg†â1jü&6–ÓD™õ”ŸµŠ^W´äh9±5&œŸ ·,%ãIÒ—*]KØCªG‡bT åE(B·¡éXTGÍ‹ºþJ–°úr<à#Çl ÷L÷3Jg¸7¢¯þÑwQg{YmRs­6›£^šUù}ŤHÃPíü†<¡–hò¢ÝŒ†~Ý‹ºþ«,ײrÕ/\ÍE=¯/GÒ^mD_±–:GÙm%ÇúíÃ-ŒE ¤¾|‹ŽÜƒâÁ(:¾NmI5ÊòÌòÊ¡†˜@è4‹ÒŠÿïüý¢Ì^‹U¿å}‚âE5Tq#\á[lp¿¨Ø1rêX>µœhº›--Trh|`(o5]­…,2~‰@èxÔù».žÝ‘±(1¢ïú¯²<Àèå\µÓ®¿’…†ãoÆœÐEÜ(·0ÕIL tšŽEi(Y¶ˆEñ¶§â„êÖ‹|áÏ‹õô߉›fõÓfݽ_ÔNÿ­õ£!/JµU‹ªŽíÎf Üèåæ¡ôðû¡{1›˜•°QÌÿ¥5±¨ŽáÅÛ‹“ïNn»¥$&Þ®ówth,ªøßûβg/{àÌõà,y†±˜¥Íà· ¼¥±¨Îƒ¤] ݃š¿‹ây‹ª ×qe>û±Í´b̃Xø¢@&jËPî%Q,ªô lÂÇL ´)êô¢T[ÕQó¢0õæõ«¿_¸úÏó Ì æ9ò<à pWýínZ!äEö‹"&&®dTÚªNÛ/ªÎý긻C3=Ì3MgÅU'xÊHmwÓº!/ Š/…mõfˆ‰‰Û„N_£/oN™9ÜÀ‚ xÀÍ^#=ÐX9===u&¢½$¡›^£˜˜¸S¨ˆE=$ÿgZ)…Òy‚‹¯O˜†1rbäÔ Gñ‡OX#?³ŽŸÚîÖuʽ$€ÅùOÝ‹"&&1*mU§Í‹ŠââëÖkèÈ»êAÃÀQ¾ðFNd²?6±+æ|é­¯¯GcÏ$Ô õîâʨ¶n›ué­K å¾ iÒÝ _ýÅ«5Å\Š­êðyQ_ŸÌôYCO»ž§kÌ^±û÷gò_ÚÙcfµ,Ò2õôô-³›HH†¼ó¤fÝ:/ŠÆšº ‹·ûõ‹!¬5½¨‹Ê-`ñv<'àâo&2}éì`Ö]u Á^±´aõ™.×x¹×ÓÓCVg3ò¢º<E t.½u MÅ¢vƼ¨lƒƒ\üÍ[Ë=q nÊHÙK¶µß²öUuž$T穉¦ò¢º|^Ð=hèw¡ÚªÎœuñ7ÌËŸ°fÿè°Ýº³â¤û kOmû” ŠHm!/ Ý=/Š@è4ô»èðXÔÅ×'˜—9™¹yÓFÀn|쌓6÷˜©Gh‰£vA«bQ±¥ÝýænÔ¯ÖB¤ßÊÝgJ£"ÒÊTYÍ%K–ç8|@M—-©yB7 éXT§­ÑÇÀœÏèu­¾tv ¼¡‹Bƒý,gy?Õ|,áý„Î9pø€L‘†Mõ¤G%˯vj®4ö*„nÅ¢`âü<‡kîuGÏï -6Ú›‹’¾€‡H#RÄQTÆ«¤ò„B¹Ô÷uÉžV=š¼(B7£éXTG­Ñ—Úï0-5v~t»BˆGl, Jª‰XT(æ$ÍOÈCB¥/¥Z©je&´¼ M^¡›A±(8÷òè…?ÔX9±ÝéËóS7?õæõù‹þ÷´_ÔÖa3bQÕü5]úRjz(V$='’¯þT/­ÚUÄê?G^¡›A±¨úàÃYò¼îJjîソTØî6uZ‹ ¥K£"Ž ŸIÄ«¢#ôêcEËÎvRÏ”cÿ¢þ\ìUÝ€¦cQZñeÞîÎE%Ãu\{É›ûÔæ€ˆy0°Ÿ-öXÛÝ´nAÈÏÈdÅç±±(V}Eä[¹[õ¤ˆ=SøIòœPºL‰æM(-¶œjí$/ŠÐm¨çw‹ê´yQÕ0}yÎYñ9‚¶à¾¡ ñúùÛ:ÄÆ¢h>¡ãA±¨{ek:Xào`ˆœê1¶)Z‹ê &ºMÇ¢:p¾XL^žÖr,ex14Æ0éË ¶ØF%ì2Eë$%Ä¢ºm¿¨ÅÛ‹“ïNÖ|ïALÜ1\ç¯è¾XÔÄ“)Ã9qÊ)8sÿì‰kÌ52MÓÚ¬µ'¢[#x‹bQ;…ïH»º 5Åóº*5ñÆdª7=rlØ]õR»S™#…ü—lø¨•=¿7‡°(¡UÌc7‰OÞ9^-Gê.·[å^R×Ç¢Äö£BW¡N/JµU‹šxcÊL#G‡‚£klq)ß0ÃÁ«Ù'Ø—uê!u‡ŽPb¨(Z ]EÈ‹BwÇ¢ˆ‰‰£ŒJ[Õ³¾¾î~çŠÿg?Ÿÿjž|ê½)D°xý‡¢É›ŽÅÛIGš4ñú¤µ'=tdÈ]uõÝ){ÉN÷™ý{­ä…û¢ö©š÷“|BÂÑît¡ŒŸo·B>Ä仓ã/¸ôÖ%¦1¡ BWaòÝIñ|˜ù`fǫ̂0L;c¾þCUÿªaâ7“|µoèȽâè»S‹÷òÖ~« ûDØTÈ^’ÐM¯ÑGLLÜ© tî}¯Or/sê™ìµ³×t–þý–µ§± ›@Ííw»Ù…B•X”7ÑÝ‹"&&ŽeTÚªŒEM¼1É }§žÉܸ‘74Ì|˜7÷šé¾tKü'acÔ=yC)„X¨w—Ћ"&&V•¶ªÓÖè›~g&¥ žúiöæ Ç`†ãyc/d¬>S×ë5Pªá ùotdDt“øjÙ»êÝ%ûMM¬ÑGLLÜ© tî~Qøš9|ĺù¥ÍœUgì… Úgcø.÷´d/IhŠE‡èèX”»‚¹6c̰¼‘çúÍ=¦i&/ßbt³}‚ÚKÅ¢ˆ‰‰#ŒJ[Õi±(Î9/xØm[{Óý‡hü^{A½»„¦X11±Ê¨´U‹ºx~Ž1°>wìÅQÚ¾ ¡Þ]²ßD±(bbbÉ@çÆ¢¬ƒ.pîeÚ¾M!{IBS,Š˜˜8Ä@E,ªbu‰¹Ïçæ¾šãí·ºD ëulwþ3»PðŒ^X‡ÒC?ì§—[†èêr] Z]‚@èZÈÕ%¦?˜;3V^]¢h»:"UßÃYöìeÏ÷˜½„ùO½ÜZÍsë Þ]BS,Š˜˜Xe(oüx‡Å¢’á:îâgöãEŒLc|á‹Âv·«‹ Þ]òí3Å¢ˆ‰‰%‹JÀԛׯþ~áê?Ï3¤¼`XWê®úÛÝ´.‚ì% M±(bbâ=/ªÎý긻æšéaži:aã@ÊØ¬- Q”{I£yQÄÄÄF¥­ê–XÔÄ›Sæc70„ #zëf/KlQj®0Û Pï.¡)ELL¬2*mUWÄ¢.¾>aÆÈ‰‘S/X¢ŸÎáÖÈϬã'†¶»u]õî’ý&ŠEKº,uñõ k5ttØ]õ aà(xÀGNXC?¶L+þ-Ÿ\Ë<”’|Bè´è9Ñrº ²—$4Å¢ˆ‰‰C tS,êâë“™>køÈ°ïyºÆ +Nÿþ c,{¬êÞQÑ]ÞeŠ´.ѽáÕÓb ‰-§ÛPî%ŒbQÄÄÄF¥­Ú±¨ÜoÇs.þf"Ó—ÎfÝUìÛHVŸyárÒ˽XR?Ts‰Ø._C¨¸»„¦X11±Ê¨´UZùÿR,Jž×>È6>¨áâo&ØZvèéŒSpSFÊ^²­ý–µ¯®UÏ£{ㆬ‹<ÚµþPsw”~“ð¥Æ_o‡11ñö2б¨‹¿™`^vø„5ûG‡íÖ'ÝgX{Ø•£›_ÇmÔÞ§X11q„NE]|}‚yÙ‘“™…›ÜøØ1ûÌþýõ®Å—°ï»‹’ÿÆZ²hÔ^À(ELLaTÚª‹ªS˜¶vŸ´n:øš7òœiõUE¾ï¡Wjb4ÎÊ’ðÚ°{ Þ]BS,Š˜˜XeTÚªN›Å‚ÌÐÓVþÏ.ø?õBÆ0ŒöپˡÞ]²ßD󢈉‰%‹²—¼ù/mžÎxƒÏ¤Í=fêZâ¨] {IBS,Š˜˜8Ä@GÇ¢˜³â½®Õ—ÎÐ^Pí…r/ `‹"&&Ž0*mUGÅ¢&ÎÏs¸æ^>zö8m ߆Pï.¡)ELL¬2*mUGÅ¢Rûm¦¥ÆÎÓÆðm õî’ý&ŠEK:7uîå± ¨±,¬c»Ó—ç§þn~êÍëó7ñýÖ4(½$¡)ELLb £cQ5àÃYò¼»+©¹½Å%{»ÛÔE(÷’F±(bbâ£ÒVuT,*®ãæþbÏ}j»kÅÞ:n|¶¸Ýíê"¨w—Ћ"&&V•¶jg¬Ñ·qL_žsVÀ¹èÐò^àÚ¸¾Fcþ¶ò΃Òo¢5úˆ‰‰%‹JÀØ+ÃX#ÏßÀPñJ;ðZÛjï‡S,Š˜˜8Â@WÆ¢&/OëmÆÀ¡ ‰˜‡ÞË2ƒFB®„öhñ½&Pî%ŒbQÄÄÄF¥­êŠXÔÄ“ŒáÔÉSÃÏ àg`٣ƩŸYÃDz-¯Ž¬W5¨w—Ћ"&&V•¶ª£æEÅbâÉT¯1rbÄ]õR»SÖ—ilø˜5|¢¿þᑸ§{h?xTZ)Zï\B½»d¿‰æEKº)5ñÆ”™6FŽŽ8GרâR>{0ËÁ³'ªîÕèžî¡C¡…Ïi3x²—$4Å¢ˆ‰‰C TÄ¢zÖ××Ýï\ñïÜçss_Íñ€O½7…o£ÿP4yÓ±x;éhB“&^Ÿ4÷ÃG†ÝUWßZ\Ê[}VT•i¤ %IDATÿ^+yá>u§¨ØÝueJÍC±G»ãçÇ'ß™°x»8ÖòÝÉñ—Æå —ÞºÄ4¦¦„.Á仓âù0ýÁôØ™1a˜v@,ªÿPÒ_5Lüf’¯ö ¶W}wjñ^¾¦ û”€Ø}¤jªy´« Þ]BS,Š˜˜Xe(oüx§Æ¢&^Ÿä^ß©g²×>tÌ^Ó^vú÷[Öž66zبw—|ûL±(bbbÉ@§Ç¢&ޘ䅾SÏdoÜÈf>Ì[{M«¯^ÿIîéÚ'·ÚFïÕ¶¯™± !{IBS,Š˜˜8Ä@GÏ‹š~g&¥ žúiöæ Ç`†ã9c/d¬>³¡÷{±Û½'oôÝ6>áh×¢ÜKÍ‹"&&Ž0*mÕˆE5¾f±n~i3gÕ{!Ë£áÛêÝ%4Å¢ˆ‰‰UF¥­ê´X”»‚¹6cŒYÎÈsýæ3eÒÆðíõî’ý&ŠEK::Å9ç»íÌ^«ÿPóã÷›ÙKšbQÄÄÄ!:7uñüçýw¯Žÿݹ %ìdÐ}¡¶t¾©Ë3g_:­§tñà'g~"Y¦Ÿ}é4ùRÝõîšbQÄÄÄ*£2µYó¢˜Æ„e:~âøèÉÑ«Ÿ^=ýÌiÉ£'GŸ8@Oé­ª‘ÐþP¿k9†‡æEK¶d^”°‡vÞ9ÿâyðkŸ^»úñUÉ<àç_Ó~QÄÄÄ’-‰EQðJ/ŠbQÄÄÄ!*bQÉÿ™Vš…ÒyBKQî%,΢yQÄÄ]Ψ´U›5/Š@ˆB½»„¦yQÄÄÄ*£ÒVQ,аuPï.Ùo¢X11±d€bQ„m‚ì% M±(bbâ‹"lʽ$€Q,Š˜˜8¨´U‹"lÔ»KhŠE«ŒJ[E±(ÂÖA½»d¿‰bQÄÄÄ’ŠE¶ ²—$4Å¢ˆ‰‰C P,аM(÷’F±(bbâ£ÒVQ,аuPï.¡)ELL¬2*mÅ¢[õî’ý&ŠEK(EØ&È^’Ћ"&&1@±(Â6¡ÜKÅ¢ˆ‰‰#ŒJ[E±(ÂÖA½»„¦X11±Ê¨´U‹"lÔ»Kö›(ELL, Xa› {IBS,Š˜˜8ÄÅ¢Û„r/ `‹"&&Ž0*mÅ¢[õîšbQÄÄÄ*£ÒVQ,аuPï.Ùo¢X11±d€bQ„m‚ì% M±(bbâ‹"lʽ$€Q,Š˜˜8¨´U‹"lÔ»KhŠE«ŒJ[E±(ÂÖA½»d¿‰bQÄÄÄ’ŠE¶ ²—$4Å¢ˆ‰‰C TÄ¢zÎþ×ÿ·`Û~ÀuùÏ<ºÈ>õÞ„Vcüüøä;“o/Š”Éw'Ç_—'\zëÓ˜šB º“ïNŠçÃð‰ÉL&“Ïçu=”Ýo9š=1xäh¥>,°Pï.¡)ELL¬2€Y},³/“¶Ò=¿Ÿ¼e/{<ÓÏçÉ‹"l¢^”€ô¥È‹"ºª5zb0wÏašþ®>xà /ŠbQ„M‚ÒK§X11q„Ì8 óÀÈÀ4ÃgšpF󢛆òˆ€Ñ¼(bbâ¸^L)yQÂ^bQ„Í„zw M±(bbb•Ì8Ê^éE@بw—ì7Ѽ(bbbÉ®kL¼Û£Xaë ô’À)ELLa Xa[ ô’À(ELLa Xa[ Þ]BS,Š˜˜Xe Xa[ Þ]²ßD±(bbbÉ@±(¶@é%S,Š˜˜8Â@±(¶@é%Q,Š˜˜8 Ģ´ØXTn!7õî”´U Œ4é–h p¦±²ÿ¤UøO—ÞºÔ>m&MšôÖèʱ(­èE#Rœilü¥ñþCýÙ÷² 6 ÕúP¯þâÕþCý´J$Ðű(7>Õ¨»ÛGè|ľ‰f`tû]r,J®tî _JÝ;ªÿiZ¼¥‘ûÊ“&Mš4iÒRÏþ…ìBý–åÈѹÿF€ßOþG~‰>ƒÎág÷›u–e/ñÉËÃÛmo о˜|/×ç#íQþ~^ k àLÓ…/•»ç1 @ Ú~{™×cS„Ä _רCëëë?ÿÛÇíûv>ŸïþJq©z4CÈñì¤I“&Mšt¥VÇ×i_òù¼}¿0û?¯X__ïéé€ÿãíú}1á{åïåy¼ë$Mš4iÒí©s÷܆bQ~Àoü??/Ú¦õõu”P4T@ l¤aª0Q@ ´þIãäv;êIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extdel.png0000644000175000017500000006733012032647161024173 0ustar ebourgebourg‰PNG  IHDRÊjŒëdsBITÛáOà IDATxœì½]ˆWšçý¯—H8È¿P 28Œ Æea]¤X]¸š½P_HM7¬›iXKmhɽ0Óê‹m _¬\³0võB·å4/Ìbùb±uÑ´ ïÐå ©AC•Á«ÁfÒ C&´ Z*@{ñœ¯øÌÈÌÈÊz~qâÄùüŸç<çÄÊW_î‚a†a¦"^ÿoW<Íç[óŽ Ã0 Ã0ËÀÖµ-ý±ÿ§½¹F†a†a˜åáÿ™w†a†Y6<÷õs7Ç E@x€tAð  Î 2‚ð$< Ìð¤s@@BˆH@z "ÀSqžû}à @ªQ€%€¹JÅÁ‡ =ÂðàC"¡@ú‘€‡à{: ¤?u°¡çûú* ´Ij!ø@-´ç j€Ê¾Š¼N@õ^úUj»¨ó<)D”>*U²{@¤m°’Rɤ[Î ÚcO&)§I‘:ˆ u4`sG?Óä¸_¥s@ é€= ÀW .|!àCõeð€H:¯UøÉbB‡.T \ðB òB*c| Ø3Tz&¾ Báèç…ð|¾ ”‘¯¶D¦‹.ô™Dé¿©ª†ªØw_Ó\Cµ ‘„[º<]œè¦ªR]L½@$|¨Éæµ¥šI‰ýçP£\“¦BxRš¿"!éI‚bîIÈÈ9*±êT: í ê˜Cx¦4E¾ Ì5ÕÓƒˆ| À ÷˜êcƒð|'Î!ÔŸ:[müj"@¹ _ ‘tÚFz©3]禪°‘_G© #ç˜ÎëJ](uÄ€0’~¬á…-­ž¤­¤€Œè@"ª6‘S5]g£mµâ̾—ÍSuV•‘lš!%„:6­½I™È×µ/ŽDºnR=õ ÛdjcãÇž¯ZNPÖû--Q̱$ôJs"t^ÂàÉPõ#øžÒ¯UeM½­ò‹KKì›ã•¯¾Üm>ߢÉ’á×ïŽÜ곯ë`‹…Ñl³åG·ü@BÕTÁ4aЗ ]¶¨¶Í…IÕÀ NÀf³ ߃ˆ„U0ôk¤šl"ôâõYÕOFD¼®ªc[ <„ÔÕé× =ø ¡.5H(U!¢ÀÇD- |Ô„qaJø¦: '|éÅÛOÝT¹]‘í«"•¤1aAB OŸqºöX¯›„í·àæ‘NWaP²“°¤–†i˜UÔT"ê·ó!ÕŸªé”a$þa¡‹“S]UÇlZÉNk:$ýR¾€Ð‰´:c8h…™V,^XT‰ eìO$Úhá‘PY£Ä¥•Rĵ…pT£tRÒVI#ñõ{I‰d—&+­Â°µCõ̺«ð=„F”ëz°þjµxßKùl¥‹«Û .^­ª0}’›¡IA 7Ómžšë©G‘uÔ*0T]”©›¥î“*~¼õÂèEÛ/:"¤§ßW ”N²Ö´]®àŸÆ<‘>ïÁ'‘a[¡˜ÎÐ’5%5Ü²í­ªËRBä•[S}ìŸ$5”v‰·½”Ñ!á©j(¨8™()Õ˜=iH@i ÿ@~SJ=ÐHÕéM$"sÞzÒ×CDD‚®º±Ztm-/>¾}gçÓ UvçöþÝóÛoõßí¼úRð·uyî£âwÒ%@HêÀs‹‡0²=Ÿsqë—“†RFºËWeOèŒÙX—.Ýý xÒ‘Dt²Ž˜ëɼ™‚§Ë°ùÀTÒÈU:]¾JmcjÒ™¥¬êO¡Lªá%!¢Ê€e¢ù‰±œM²^ ¬IÐ8>DXƒ®›ÚÎJÇBOÀƒ‘9\À“6S +N¤›ÇÈ6\zÜ()k^yañýïÿaç#]á?ÆSè.— yq÷³Ut~u5Ø»‹÷†h zDe­÷JXDÎÌ5[º5Q}6àëR8;ÕÒ¯T’ªš"Nö:ÝD›BiÚe}¼z\°»µN…0¢–Tz~Ä„@³'~dúhµ«[(U¬C¨ù8 ãPø¨ù¨…ÔBÉ_"5ÓåØ~"Ú 'ÔøXÅ_B3àƒtŒ ÒJ]SEuµÔ£(¶Njmá0ÝL½LÓC]m¥j/œÁV$MãèÎ^Q|¤'h<ßÂ7ˆêͲìmNw]r5ÆÇ·ïŒwý$w2äÅ[¿®Ë7ßõúïÔ%¤L3Ãd½p%,Aê9ˆ„=Ð ¾mOéLÑõ¿|Àê‰+¦,B×UõG$%õ²ºÕ‘šaqLXt—–2d SBÖRáG2T=–Pb€'}= ß ?6BHg¢0ôàS‡¨ú˜PRi  æ „ò€š1©Ñ>jŽù: =ÑžŸ1¦Q¨ÊlŒ ÂÉq€%PeÖs¢€Q ‘ÌpתdŒ‡FùI§_ÔÏ‚ Í´Œª»JÛ–Œ°  ìG¡D:‹®š6Žœ3 'nFˆÔÔ&É ßH Õ¢©nØJ"Q(=À ?ßmÅÔ™„¶ˆy`¨¬Tãã “’µĵ…ó“'Áˆ?ÝÁ˜Iz„îx”Ôˆ„™R4¶(çz×’ýZˆ+ËÐ}•9CWúÆØ«UÓ‚4n;€µaP2ÓÅ|Ç÷ÂùŒT}¿©Ö ¦†ËÔ»Q³d}5ÈÀØí´¤¶cVÍ´/¡ˆV{ùÖ<…ˆ =_"|éA"‰HÂñŽ2ƒ((¥¢ßØSsöÚŒ!¤©d•ñH0AÒ‚Œ‚lê"¡½Làš·TÖfWOÕQÉWÒ|\|íäCK @)E#Ð}OIJW*ª­ OHÛk ŸŠ–6ÅEZ­ ãf‡„ABÒHFPšÀX©iþÅLvKš7€Œ„;ô‘îø©†Æz3©ÙD¤¬­B‹ ]Ñq©õBá‘Y8%ZÆ÷B@MRñ& “4R…î;”Ù•¦Ñeaœ0´CøÚ’ágÛÛ0 ÏXÏûi;`eFVˆºx©}Zúþvþ°ý?·Þøïo¡ €gý6”C†-yª¿zŠªRé¹7]4'5J׫ò®üŒ`‹ 5º{ï˜;­+ݽ·4ZW§BÙ½ÿ€Æ©«:ä„jÊÝ{ohœºOPU„òr ªV«I}] | tìJ8KøÖ£ó ”j>y@Ó"¾<jTcµ¦ö|2š~Èõ½HÙÍl…PCXÏšs¤Gšn!•°ˆ„Ô˜„ÐóG 9)ܦ¶1Õ’Ê|-ȶ1R#xÚ·Æ^Ëeò'=+8  ¼Æ%-ôL˨ÞQ‚z;²gè.6„ôµ4¤a„¯í®tFh‹L‹·«ðµÏ@ÆewUý¦€Ð™¥VÌ9öbŽêµ=¨Yü¤„&ìug¯&…°ÙJ bf¬µ\èÚ¤”“–q°³1i@¶¥ð„$÷“Íf  }>Taˆ´¿³žÈáµÙª^ÚÍů!„ „`´… k1ë…°És¸–ÍÁj¤+è­ÝÙ4 û§J ;U¯5Nq…ʘÂf±®qvj,Ô™c Ò“)‘o $ù2i\´þRº$«š¢§#¡²ÌµH)‰)…§E9TÖKHDÎ¢Ó ™kFðÉ?†Lv~ÄTjò}VN3¾vd‚ò~…-9Ðí­2Q;úqß Õ(&5è2al0ΈHèB«¬QÌÓÜÉPÇ™ÊèŸÙ49·Ni}kEd(tžº¶(5öƒv¯Ž@Î4º´øÂñØ ”ÑBú@x é×Bà@¢¦š,À¸œËоÄ*Wt=XRuÊ×MÍÂ;š8VBæéW‚¤Ï¤ÉoÝ÷BØxqãûßÃðÇ?ùñßÝé÷ûîÞ»k®4).Y aÍ®¤Õ ¥†ð$Õ=aš<ÄÐv¦ƒ< ´«Qb,Àjë €¾#2t÷Þj´®P+FÚBEÓ£öÎ::…¦Mð„osWRmT=([…ïІ²=j:V‰Ü°sð5š"nãj°³¼¤²#£ÓCùºµi«â¦]"¨8 ݙĤt£ÉÕñR ) e¡ûO]4Üõжtc¥ÐóVª£R£LÒŽä&¦Ð6 %wY‡™Ý‡2ðZT儞¶Œ”7€ö‰Qæ_¨!tÝVc2·ºJÝæª1%½¬±i«F’ G´ªÜŒ²¾ÒøFÛ`i^u»€/Të9{χ§º"§vФ˜6EP>¹V\ * b­Ú°§µ…0ž%*wS¶yh‡k›Úò¬,fä¤Uˆ¤JXµÖÀµ-©¹ä°&ý]‰„_³†˜BÍ’Êz›ÚsÅŸ%oSS÷G°Fª$¹CT&cÍ›ž1£Ê ­- [”¶KQ6QöÑV€#À)¾ã{á- ^O*©T£ªÆ^k4”ÚNI’ËÔM _¡ӧ;¾Ö¯‘ʰª+xä`h„ ¦¨bvJe`0‰² ɘCOÂð¦[!;Ñ¡éiPõ¾Ð…БvqõÐ]T°­c©ÊGj?Un"Þ`ÐÚ.å×)•”ôu¾»Õ:ß}D4ééCð Þb½RMjß e½„Ö@úÏøÇ _èIxð#¡rdzŽb¾ñÒŠ\?3Jÿ: jb…‘) ¬æ®çN¬?wbn/£-PÙ¸ùÿÝ ž >úø£z½àòÏ.ßúðÖÚÚZìJ=KvÞà?ûzøõ»á×ïúϾá~lÊ곯ÓcûÎùÕWID2yÐÿR©Æ‰+äjÎè{uOHi]è‰îÞ;ÖUG[€ª ™7Ô#N]±×+ÆU?ÿqß^ótûjh~m_éÞ{çéö–ã{¡µ gþ F±µzêd-5íÚy ü=©ô+ÏAÏ×ý2Ùé‰r(ÓCO³ÌqG‡išÍTUK=å©GÔ6|ªÏžŠHXÕÕi·;Òˆªò«±£2WèIVc¨§y¨HPÌÕTQó¸“yJð™nÌQ2ŒHï›Å JmXcu{é^ÍVW¡ZUÓ@—OwÌæ ëÕ‰ÔB ¥0”‚e¤;$†„/<5-"<2]èy®(„çÇŸ%´þ“B॰k¯\‘¿¬åªS¶h©R;kþÅ @)Ó=7}_)Ý3a$á ß ÉDêê(_ÌœˆZ§'B(×zw €°By Ø>LÆcnmck²\JÀ5[ê)B¡Æ'ÖB£/0Å)‘žš²jI\z@ä ²UxdÞ°KOµiÝGäëI}gˆè°¾ÆKƺï„ã‘Hv},âák†»Þ®¨Pf'Ó(Ieç32..)`}/”ÅÈ6/Ð^Sî .áÐCgLb$OIaZ-Ó\h â¼» Ç—B–’ÂÂ9ãÁ‹Ø’.‚zLk˜u@Êp¥²I øjyWlõ}®@Ì÷š@M†ÀðkZRh³Ÿs 4åò"L¼Íª+uàŒu­Ä1 Ãü9ô–!ÛjOî|¢7®ÿÓu!ÄÆ‹§cyBÚÒe,NÌT.üg__m¾ ÿõ»T.W›WVÍÉ/ß”àX=ñúê‰×W›¶›_=ñ:Iî—ï’2'®4N\¡{c¤Nß]è-šš(9uUýIs†„E÷þ;¦¦<}êêÓ§®Ài‹§ÛWí+þãÞ[¾~B÷‰•Ðt½ù!|ÛG@(ŠßêŒpà“7†ÈÍS@Âf}DæG£¬M_Hã`kÖ¦8 Òq’5ÚBhm¡šf‰HJ23}B+gá¨NBãô§ zÜ9k ¡)‰é š…ºªHOMuÙÈ»Kä=5N2gBÝÞ™¹áP©{áÓ¯Ú L2„{½ÛÜËÐ#S¿‘2p&kT±1#“•ª S±  “É‘$ÍÃ=íŠk3Ký)#3ïK·ûªï·Yi]’µ‰HHkz‘JIxö-Üd4¶ e2¹èÅB¦(™?…N=›1)fϘ {cì¥Àü ŸyZzz€ðÀÌôj"Ôû(ß HxÎn1Ê®¬,ÆÝÄö[ Yv­"ÖýÓ váV ãð¯ o4–5ï(h¡©YÅãAÀ -2LF{ʇÆì{!¸S'p:ÇLb ~Ômýç gE†Ô~n$;”¤–õ®%F:R†Ÿ”O¹…é5;H…¨™ÀÌ’°UÇF3dS¦°Ù¢„…žé&;G…“Ú3î\ÎZBýöÆã[_OOŠH«è&(¾`Њ*-nŒ“„ʧ:SU‘ðã¿Z]âÖ­ ©QSlµ‹;RU×ë•#BãuT~ÍÊ…JRXë8­œ¤ï xB·f¶fÑB(‹”+)D¢ÊÏ#)J:j ßµSJ¹yv“Ž/ÿìrÐÿþÆz~ãǯü ×ë!n-âS$:iL²iDÿþ×ï:æ 'w'ŸÄOú¸ûå;]mÑ´–y»ñQ £0­+6d½îý·ŒUÃØoKýù÷ÞÒbÆ2ùtûêÓí«P…Fwf^èG¡¯=¿TÈšÚPKø8Q EÖŒ@ÐÔ‰ò½ðu  =¡+ã>€ö@a›*5¦Ñ“‹f?"o¸HJØú)¥Gó 4PN¥Ÿk Õ™™•ú¶‰ôØE»ky‚ŽõÞ$¦Ã0#$@§U¬:ÏY#èW5åAëN©–a¤³õüˆ„'B½ BÍ4ÃŒùt‡¤cíŽqµçšã~áÑ䈉®ò§‘ù”é¥%‘v¶ˆ´]J¿mÔÈ’‘±>6|Óœy LQ‹¨U¯–Ü¢@-UÌD ™ìT·ŒœåÇôPwšªÌè6×]Ã%AFuO/Ó×{š@{‚Dƒ •¾&@“#ºµÕûß‹0.%ïfàQO¦¼·ŠÙ«¼l.ô['w S«ˆõ%Lž*O)é…´Q²7mAe´„žg1“#z`­;?SfB½B:¯©†C‘îD•Œ0"Èlí+æ©Y!wW½Ê@ýZA¬\•ò&¯²Hhi+)͘ÉcJ5=PSUÑL0+ß ½}$yÉÐ;RþÛ¦îw…³ï…J+Í 4»±’¯œm½ÐÉ _õIžnª”õ’ÆLî‚®+¨߃ÙY˶]7{ è=TknÅDì »€ÐxÆÄÜïU7 ÕWSYà¸ú[·©þôl‚«uŽgŒ»N‡V«†5øj¬æ›E">ù{Öì3µÅÖD=Fô´ƒt°Ž6Œ;§þÕ\/"5Ì5ËÇ„JE!\'eu½^©H+”Û5%¥³_bëuZìú È7éL Ðó#&ºEšô§5/&%ÌÞ3Âî©=9Ž8ž]*JjS°¡×Ï›Òæø^æZ<¬7£s\^j¾Ôyׯ~ÆGÄXúbïêÇ !ìÉÁV{¥õÇ`õ¿Üè¾Úxüö‹êjçIOÑ`zú˜EÁÃu±S-ˆ>´#3º^˜˜ñË„)šÅ¾4e+ì2þ»:ö=ZWv@íT¨þp¶Wn×AÎ8”a½¹½`|óàp ZcqYó•ƒ'Ü Â×Τ°¥ãà‰Ø¾”PF]éU4àó´ÑÂíÆôR3ª¤4Ãg“gß ó\ëdd‡2:w„Zº¢›ã©”AÛ†ïI9®òžªfjÎØ¸ÁÓ˜X©~3m¯šNU‡#øžrªòiK»xØÌ1ë?=#Ålù´›¶Ù²BÞã€õ´9/£v[RYc­²¾^9¢gC”^ñUøj ¤ŸÜ÷Ð`# ¡LJFRÄÚuÒìI —œd´P!¸¾½ªœèž<Ê5ݨ\“‰µ’fßO"<ÐyQ“!„oæ¤!ý8»vÆö½0ËFŒÂìb ­x ­p 9e¨¶ô¨=ßTÎBe¥zÇìGy*==µái·¾”×2ÒÝ•©2NšS}¡ÑÜ ?q *WÜ8¡¶$Ñ"ñÖÉ®íðáæ¸ûÙضH—sª5Vd´NUû^˜·tvûVR±}/(ÍÍ€ÄÝrT÷ñ^¢ÐºÕGè.g³NÝj „@Ï›ÄæX•Þ…gu¿ˆ ¬8f«V“dâ¥]‚ÄFàmëî ø2 ÉaS9Ó€Ì$,|rŸ2¾;¶ñ}/$j@M„ðkÂYì&a6V[’z’×S˼ߖu6Égu×iCÂ4–˜&|9žžydË‹ú“«?þ›Ó)_ äí—ÚøjrçÃàï Þº°ó‹tºâ©?Í1Q¬6_—üæëáþ»dÃPW«Í×ûûvºÄ¸vêñ±º°Ñz½»÷.y`Ö#0Ý#«­+¦¥Ö«®‰Æ©«î̀Ʃ+öÕî½·Œó¦û'A"p ÕXÝ «Áaö½€Þè"€š/ęù$,|Q áùÔWiG3_Mü{Ôðé´ˆí{˜¦Ê1è*j@=–Œ„¼šöË6Âi,”¥Áqþ²ËSAcqÓú Ý™ñ´[¢YÚjFiŽàŒ­ì§ê$ÃÔ¾P#•ì°³˜dº>à{±íø‘–ñi³¯†ÁXŒ9AFZ©}h)#ôú‘úŒˆÔöhªD8¨:™|=íÀ«-ª³wFiÆ&Ú±1ÒÀvÆŽ ÃøØÚW/=P6ñðE”ãæë?ÚŒ¤Ÿ«ÂŒôs!íΩו„‘ô=A­jx Œ zÓëÍÂÝ}/œõ#V+دÕÀìkÌNvn0 IDAToó fÇtÓ—;m‘3¤Öu&Ô{šé-À¡­J‘ÙˆÓÙ+šö÷Œ|á…‚µÐ­¡ÎgGôXS÷”Î~jOë‡S}„®;Ð6©Ç&¯Ý¢ëëJ¡6WÐû^˜­´;J†–Ý®Ãfè ò=$ îSÄt1¡Í”ÕvÖ—Â8`¦¾Æ`¶°»ð9CD}`¾ð`7ýs77‚1Џ‰ãºa†^jÚ+„ÎMgu‘rµÖŽœ6[Ýù\“ã¼ö‘Š»ë&ÆÉö›#‚VŽøjÙˆIjër¡`7½•0& ¤™ó Í^2ηëEÉyiQFÄdG¶ñ³_ì|zoÿÒs§ÿé«MìïáÇõúsëƒóÛ¸¹†wüøæÝ«Cm†A™äëyªÏô§™[}öu¥åµ!9uê äÄÛІZtMãĵâ1«'^×.ºöêP­+¦Ä˜3€™¸RN‹j…ˆ'Iš!÷õúшÜ?ɯÿ4£H@<ݾ UŸUB†"ß÷µïè¹fZ½ïínö¯ù´–º¯2…ÆeŒZ7gkXÖ;6GmXö„uç4R€vR'aaú]·CrM£*p豬šðV&­-tš›†C5Uð„ÔóµÎ*ÿ„Iw|±})b¯i?Åä‘ê—¾^èE¦]=Á¬*­z„Ùh¹:N‘¦Ý×c&-8¢ô’EÓ-YoMj¤hC-©çP 9Ìüˆ¤ö¿±^ë±tS a“Fµ)”z*UÕÐûÈÅ´…^´I! šÌö¤î´¬(4+D¤çlÙD·YC·Ô«ÄUñu'•ÊgÍíÀÔbTcíP ® I¡ü=SÖ MÌ€¡liºZ‘Á ôµCz¡SÒïjȾÚ¶êLÀÓËh˜kfC"ú¤ˆ/"µrUÍpEúöÈ,ìòMàÚÄbe+\•`&.éM© éOyÁ“ze2 D¿5ÕfW[/$Ô>ªS§µÄÎw³ÌRI ¨Õõ>9^Ä,"Ic„4ŠÓÝdHEÉ™˜6¯¬wøÐÒ¶¬FÂiµT˜ä¡S©=¡=bÕij»i9™d§Õ§ZÜÂG í-3†¾Å™%Ñ?½jO;ðÆw·eLoÖéC†ÖÁS@['&2 >GK‚c#)Ôû…j§™˜&VE(«»ÉV1 ÃFÙòBÛ¿qã×RüÓÎ.6®£¹>h Üi¢‰“½Á§\·Û„!ýh,®7oÌ3QÕ8g庚Äv¼W»y©¥ä"@kbCu½ÕÔܬ€ÝñRÏL-52Ó,w4öF„é %µ¤pƒùÐ=Š™z§ƒš6TØn‰¦Epàt<5ÛÌ©8Ya¸Ó"ˆ—<·¿WvÇ!³ï…»°ÞlR¤5Ÿ„Ú÷Bg¦+Ø“¾æ³CÎèÄ$55+Ð+Jt†R“!læÂLWéÖA?É}/LSÇz¡?—ªd„ö‰­¥€^’ª6â5 ɾµ§‡Jn7¬ÚÄЖ%3¡#býcœ„MÈŽ¶Ð™«;êŠ`wBtµ‹mÅ´bŽ-zÄ)ô^‡B2uvP>’í]À¬7vwyt~éñ¢mUµÛè³Sxh²[}‚GÍŽ‘kÌ ¬FŽœZXè-À•ÇùžYH{mÙ‘Ylß ¥‰#£(V¦îKc “y“ÓCÛá/D¬ySÖ=‡¨ÎøÎœ—Ú#A/„ÚSvãNêJ#ÓÙB‚ø< )ÀVjDÖ²BòHFzWÏ.×Ú#ÁXeÔŒ½WDÎI¶§3´Çl‘„Ú;‹Z33Á/}g»UÀH Ð~>}` ºäšŠ©§˜õvgú› &bºúˆ(®wðɧ½Ð*6Ê\Iá)§ÔÛ°0ÛG›ý¹…»5¸1>ÜEãÊ”IÒPç2Õew´ U¥SË‚³¥‘2v\!LéªR‰fZ-r³ï…6ÝÙ´ # Oúž@DÇjªWýª«Âø³+S¢§_Ñ‹5Ëyûpç1êõ“ÜeÈ5µü~/ÜûóÞþ­~··}ù¿¾…ºÞ¢/¹G¸öµ±m±ãa¶ï¤.Äùð·3¿«=¥;¶[²í^V£D‘ÞfGUl½ÝŠUÓz ¤àÒB>­W¤Ë=i6è4EAsDhaa_^éPGO@è…>Ý÷h”§²L„²¦gF Î« ÂU¥7›ü8ÂÂUÓf¬f÷½0c¸˜È€çéå'F¥©K@M‘³'u¥vmj–ï…Þ4Bï#iÖ¬K²Z˼ÑvØ ×F¸Cµ‰ô 8¾TcµEQ[Í·ÍèØ|ÚØkÇÜ"$ °që¡oÌj…;üÒݪÖÚyÂtœÆK›+ÔîÆÂ¥ìZˆxÎvà‘ó ú™+,L“Ú e&‘Éù†0ìRaeo'§]Øéj7÷µò ë…g¶•¦tAËk“/4>Ö-£‡©ô÷5†ö#ìÊ÷>Ù!ÌWÍ|ç)·xÛofjÛ˜c3×ónq·$-)<½o:mÐûq 8žÊD2› RÈ,–‘õÚÍ[#«$”Ô ïN¥Ô´ˆÝÈ$K +o=ÉHǪR‚Û¸©ª½Jõ—ri¬¯ZÑÐtÌT°õ*ê8_c!dèYïNmç£è åØEÌgêl²SŸ)r΢i…ŒØ‰õúîWÊ@cHG]«0Ô^ ®”Ô>žV÷ 5v5ùîè6íaí…°Yìë¶ÔÌ|A¨´È€Ùe5r-Ä!m8ëÛ'|³ï…À Ø}/à×T+*Y ¶¸Ðþ4¥%C¨©¨Ð®wS2QWŠì}/¾¿ñ}ŒÂ¨×Or—Kd÷Ÿ}Ý X£‚*žµ§¹}?ÌFôÚ¬~Œ™ébö:]ÄUŠ Ý¦@/+>\›  ›fS‘$`:K§¦¡€ý§ñ¢M úÂ…;£© z¨ Zaø¾;¨«Ÿ²„™ÝÁAîœúüD p¾h Œ2³leê¼1©g’Q%»§»+óYvÀ‘}Ž€J༠3L§a±4‰ˆØ×Øí ºúQ|~DêÞŽâl»´¸ÝÂ1`=&Ð+¸T‚›Íw¡¶ow?ËîZÅâ}’SRl´tc²OHõ(tÌïz9±°ªŒ}m$LèçÙ-˜”ÇhäÇk‡Ðr-§èBŸI”Þø›ÆöovlEîkšk”šL­äŒ­7UUÙó`ê…útBM†´ËÎkÃ$¬ò@M/üv¦HÌ7Dc~Ó’€³É,F°o¤j„óm°”ï…Õ”§^è$(µ]4/©–ÛchéÙ}/Ô[zvÓ-¸¸5ÔD€rÁldIk‰=8¹ãHIg%ªµÑÚ ÌÀ̆Øc:¯+\çAý PM£¤çG¤šWµ•ÎþË‘ëþbÚyg3.ÛjÅ ˜}/gYõÌX%ñÂÎ^v2×´Eîr-÷ͤUÜÍSdâX–]g½ŸÑÒÖ÷®Q*ÍmÆ —ð¡M­úS#¡qÂ0óìb Ã)H¶Ê/.îÙ3äŨ8C=[,Œ¶°ÛërŠ£[~ !¬=VðB)éŒÕìz]RF6^ 5¸1 †~uVö‡^¼>ìS âuU»^¾!àº\„ö›ìêrAƉ=¨­ðqQ õ=3¨ÅôFX¨€ÛnÌIÆXAóÔ†N ›0ÄÍ€jñ½>ãθmXBXd,Nˆ Wa 6A®Fi‰®Ý6^êA) eÜ9éí”M^©¡L ñç ]œœêª:fÓJÆH쀫V¡·t"íl§£cÕŠÅ ‹*±jUªkðƒ›èÓ0ޏ´’Bêï³èË!Õ(”Œ—°¾Î$f<ÙÍ܎°µCõ̺«Ð[¦ZW³ó vᔀòë œ•#irT”.®nS€¸xµª)Óªé×3Ä1àæ©¹^gÏØŽÎÀj£OS¤î“*Öm*VZ/Ú~Q$¾ïhצê”ÒIVÂÚÉ\wÆÎ|¢Î íòi[¡˜ÎÐ’5%5Ü²í­ªËÒÚ‰SåÖTû'„5?Gñ¶vå³ZèØ®¬†ˆï¬w¼šÑ^iÝï ´/tž*ç'Ï,w|xUí¡·‡WæÉÌáÔ¦´j¯ µHJ~SJ=À|íY[ûÁY¨Õ† •º4pÕÕ¢k ÄåE¬qݽ}aNQb†™™­¶Èù³à |he‚JßRIï" Ïd'nI‡Pæqe Â/ùÐA¹óƒ¬óe®aF &/Ü 7†a†aÊãn'=|Sp†a†a˜‘`yÁ0 Ã0LŰ¼`†a¦bX^0 Ã0 S1,/†a†©– Ã0 ÃTLænd–õVìëj»{»tÆ=ûÙ‰ÀÓ¡e>k½µ^þ¡CQ-îã†>ȼÈä)9‰Ç?}Æqc†a–ƒ!ò‚p{—Ê{š2&ú±±ÞZIŒDB?h$!Â0 Ã0‡‹RòÂ%s8[mg™~DBUL.Rf·P ϼðÍ‹¤#cÉŒžûD÷ÊÉ)³B«Ã0 ³ôTà{aú›t9IhóÓžà¨äE ‚Í{‘‚”LĪÚ4úô¼h0 Ã0L&¥¬¦/™F¿ž7bÎTÕ>"“)i— ƒÍ¼:ûñBžpš‰a†a Ù÷"±¥À z¬åpí5öTEž;Ë2¥Ã0 3/Fö½Ècñǵ®?ļãR‰¹’ª^j9‡a†™/ï{AýwUAUÎlž’0 õN“ÎÓ[“ç{1Ç1 Ã0KFòÂ]ЉÑ;<º1q{Þp|ÂiŽDàÕZ2ŠÓ!±æ"óEʧä„i>v˜¼r„a†)ÃÊW_î6Ÿoíÿi€Œæed9úãåx †afz>¾}gçÓÞœa†a˜ŠmSp¶ñkÞ4JåoQ0_³h)6^š,Ú[0 Ã0‹ÌyqØ;•™Åÿ%Ô!Š*Ã0 sHáɆa†a*†åÃ0 Ã0›Ù½Ïfs†a†aÆátÛúöÅäÅú)Þ4‰a†a˜IáɆa†a*¦²oŽ0 Ã0 ³Äì|º“÷Ó/þî{_ì¹gX^0 Ã0 SŠ7J^É“# Ã0 ÃT Ë †a†a*†åÃ0 Ã0Ãò‚a†a˜ŠayÁ0 Ã0LŰ¼`†a¦bX^0 Ã0 S1¼ïÃ0 Ã0ÃùÅßý¢üÅ,/†a†Nb_Îbxr„a†a˜ŠayÁ0 Ã0LÅÄ&G®¿w}^ñ`—/]Î<Ï¥ˆaærãýû²³'ì{ÁŒÌåK—['[#MÂ1 Ã0KLzÀ™!/n¼cÏî|Ó<³6À™™qñµ‹­“­¡—åÙ6†a˜Åçú{×Ë‹Ì~aFÖ ÖKCB7°ƒafY)Ù¼gŽ'gáÚIÚ‚Y®{_ì±³Ã0ÌQ&³˜º¼è|ÓÛú‡«t|ñÕ‹_½ÈjcÉ WŒyÇ‚a†Y JÉ‹‡‘B'mqã_ÔüÍ¿zëÆ¿ÜØú‡«¬0– ¶a0 Ã0.Ã}/VVV.üô†ûçãÇK†<³öƯ޺øêE÷ä¿z«Ø #!bJ>.17úi¤È3e0¾ìËÉ0 ³Ü¬·Öìîí–¹xˆ¼ mÑ>µ¾~ª`÷þ^ûÔî¨ £ÝÚØ8»`ïË»(áàY¡0!°°˜d·`mÁ0 ³Ü¶ ƒ2 £ÔäÈú©Özke½µB"c HR´Nœî'Ç !=;ãžqÿ#´±g°ïÃ0̲c´E柙ŒæÚÙ:9Z„t¾é­æÏÕãb Ç ²=FI¸gÈ21Ò4ŠÝ›8Ô‡}/†a–•L11Ta”Ú÷b÷þÞîÞã1´€Ovhf„h8½óÉÎ…Ÿ¿2j8i‡ :Cš`è]î5¬!*„}/†a–›’Î †È ê‰Û§vwïïíÞ€‹¯­—wbÈ3Tt¾éºÅVú¡e\42roa1!ì{Á0 än½HŒõGÒ;ŸìdþD&ñ6ñ$qàNˆŒí¶ÉÚ¢ø$ Ã0L‚R¾¦óU[È|Üy¿àÎûúG'w>Ù)ï„A‚pU…{¥å‚¹—×’Tû^0 Ã0.Sùæéù 0xÒIs Ø_ÃÙ¢@}ÞäHù ¥“Ò>¡¬9F‚}/†a˜4ÓÚœ¦EŒ¤Øº”1K2’ƒYLØnÁ0 ä™ÖSÉtQLg¿[lÀ`ãù^\oÀåKÙK›è×Ôƒ†\œ¸`h ™?+~æeyÁ– s^佋ù9I—™æcgkÞí™ç3ãP†aJÓ¾øÚÍIî/+/*Ÿ2Áž€ËÃlÖTÒs÷££Ff.®œâw™v‡]m²\¾´~ý½Ý…Mj†9D\¾t¡ä•×ß»—>9-ëÅækÁ÷;õc>€î£»™×\øûOééÌ̘ªïEk„éüò:•ôÐ6qÙ”ú¡ÌÈ/G·74Í‹š#3ˆÃ0eؽ?¾!`*ò"xf­óMoóµ€<0z{ûékÞøÕ[(ñýfÁ™å¾“÷%Bùëw·K˼`ÔGçM1$~rŸ’7OQ~æÂ’{r.Ó £æÃ0‡…iY/H7Ðîœ0òÌ!âí{1^OF‚fÂ^°@[ 5|Oü4öƒÜ`3#0TLÌ`f¤ò0Ù¤Á0²~ªelyÇ™LK^ŒMïÛÁW_vzßu3ÇDóDÐ<9Üo”™%óÚ»Óíüò:•tVÞ4­*燺Cæ=:m11OØ&4·äÍåYGFzÄxùx9Rm†)Éîý½{÷wÛ§Ö Ž3Y,y±ó»{½ïúÈGrïÞþÞ½ýµã«/·g1&C·ïÅŽÔ{qïÐç–Yº2†á¤àzó"‹Ó/NL†É¤}jÝØ*Çw-–¼ðûÏ> ƒõæFú×Ý}µÆ…ÿòúìâÄä³ß)î}‡ö^Óví\§Îñ\Fò˜dRcŒ)ðêefŒd· ¦./Fú^ÉÆËíçN4ßú‡wdÔÛïÜ e˜¸À«çÏž_?µ¾öT½ú¸2c1/ß‹¼ÞeîyÓ¯§#6›E+‰ó®Èo½Fæù™¥ù"ÄaŽyv‹9û^¬¬¬\øé ÷Ï¡ ƒtC3Șøh~/P¬-2¿Û^ᦙ¡e~öýH1Ç}/F¶û¡“LðçMp$ü-Þe|/Ê›˜©Ðü0+Â"ÄaŽ‹è{AÚ‚4E¥}j·|g/ŽùÁñ5ò‘:ÓxBytî}ÚÙù|@óùç6ÏÅ„H™¯´WKâ›jGMaLè{Qìå7›>£Àsèj‹QgÌí®IÃ}bæO%ã\lñc¼KC7†9DŒç{1­oŽÖOµÖ[+ë­•°óùNóùçšÏ?·ÿ§¯îÜÎØ,, }"ÕÃ19˜/¯&.NŸÉ 6ñ947ð¼G$Bvÿ?t߈Ÿå7G\‡Ä¼¾pò¡yæsÓÏ{/©ÌŽ¿ ðâço#V¼{˜+hŠ£íJ–Ù¤yeâ0— <f¹![Eú¸€Ù¹v¶Nb÷þ×ËGIÇ âƒÿý‘k´ØÿÓW F# ÌqÁ™2}Ú’QÒ¼‘yý¡`<ß‹âÖÌ2½æx”TåÏ—y‹Qc5FÄŠéö)eky%Ä0LµŒí{1uëÅîý½Ý½Çcô—☿ÿçÎþŸ;ï:‰ŸŒžØ<×n>ÿÜÐ Š¿Õž0-žÈ4$¿E:œ¡+ø‚ÃßMe†YJòìCmS”?¾ùÏ)7ÿyïæ?ï]|m}¤N´ù½ ù½ 8^´‰ÖPÓE™x æÏQÙ02‡ŽÖI5çuXö½`Fe–s“Ã3# S9Ƈ2}\p×t'GŒ/‚ù³ü½™“#;ŸïüøoPA̲HÌJ¤­™öŒI\;N‡Q,¾KÏÜ;˹G <‡(ª sˆcß‹©OŽ˜.sÔ¾³`r¤BܩС9ãÆþûõÿ~øÇÍçBÒýJúdÞÅîO™¿Î€’Oï›jãÙ0óß9Uœéyiû8wö Ã"–dß‹ ùøï×Ñ;»Ÿv÷>í4K\4‚ò?Ž{½LOóØù¤»û¬•¬¯½çÝenD¡JpƒM•¸7ýk:ÌÊ÷½p5}\›Î\¾´n~2ÇæëÛwM™idºK:+‘*ˆ§|â8ïvää)Ã0̨Œ·ïÅòX/¦YÿÈozWÝãfgóêó‚FÐúåG˜®yÜí3Ü­9S0À-¸ËíÊô%é Ü{Ó¿f2¡ïE€qý½ÝË—Öé_âWú)qL%‘¾k‘ÉLá2e Ìí™yÊ0 3cø^,‰õÂh‹À»2ø ûí]tvÑNž0¡¶p{ñ¡£I÷Lb™×… U™S§2ê‹äýTÞŒO¾#íТo\OH}àÚ!ÊØ$&´[¤šéÈéÅÓùUæq“O£°¤`fròìæ8%‘#Ms¸ðoWw9ÑófÙ‹ïJôLãu%µËxAòzÐL&Ù»3mÀ@–ò5œi0v¦›ÛO( 2]| 4.Ã0̨äí×9tïÎ%‘ƱýßvZ/{ŸvšîûÕW6û·îlŸ:ß„ óûÁ³ëÀÈ S3'Â?ÍP«FÞª„Ä„H™˜d^Spcq8¡ïEBFLâ0Q¹¹"My½•w{"',6™·¨†a˜18ê¾IÎØožouÇ7¾Ÿ¹r$½€0á019î\F"psÆ5oäIßUloH_“yc"žéë—-Ú¾fk%‹]ó4åä3é =SæöjcÅ0 Cõ}/\¹ ¿¼™wÜìlv>}©)•ÇqgÜËÏê=—øÉí°Ó§/N„ŸwW₼WË<ŸÕÌG§ßnÂoޤ*FU‰»Ê›1Vâ¤OV>úOL^h¾´šq#9ôö•aö0†a˜2Œ½ïÅ’LŽ@k‹Æ“÷€`ã?w:Ÿbï|°È_µñé®{ž˜ñÊ‘åfTß‹„(vÛÌûµü]™Ï, =?TSß8j&9Y¹HbæèpÔ}/ŒÝBt?t?èã»:Éó8 Úâ°t •ï{Á0 Ã,ãù^,‰¼uåÈ‚k‹CÄ$kF˜b‹ÄdféÉnA,‰¼ ¹@6Œó¿Î¶z3cï{Á0 Ã,8G}ß b¨n`a1%— cÑV»0 Ã,,GÝ÷‚™‡Î÷‚l-7Þ¿1ïˆ0 ÃŽ´ïEùHv¿ ÂÓ'ww¾Zk¬Ê(l<±Z_«¿™…Ãe· x‡af$Æð½Xª}/ˆÞ·ƒÎ7)!#|µ×­¯®J þ?¼l¤bØ›af)ÉÛ¯sèÞ -/Ò;*ÓùfÐ$¿Úëýpÿ˯v>¹»óÉÝÕÆ*ýðÎÿx÷ü0Ýx%ŒÝâpÍ0 Ã0%ɳ[Vß‹••• ?½áþ9t€Áþ>ù(ÜýÓþà/)CDxë—7êÿ杖]›/ÿ ÓéúÇÄÚñ¤Æ46FáWÚ n)sñJü“fsá0ú^0 Ã0#±<¾¤-Ú§Ö/_ºpùÒ…ö©õïïÛ0:ߘ=9Ñïä#IÚ"„0è÷¯¼ù:ýº*ê¯GþbêxPßO,ëwØ÷‚afYYNß‹õS­õÖÊzkeèk¤9ö ID€ßˆ€ïü6_þÔÐ8È (Nzv&ý,s2}oæ& ¾¡å˜ø?32QMÜ;UØ÷‚af)YNß Cëäðk¤ ×ÛOÓqøHâð€a¤eǽø¥.óÜ´í!ÓaN–éË3CpÏ$¾•µÿ&xÞƒ "VæMdž}/†a–›ñ|/Z^ìÞßÛÝK~C¼èú{ÿA2’Â<ÀƒýGzBä7þ±ÊÅ#SíÂGòØH³{:‘²°Ý‚aféÉnA,¨k' ÁÛ§vwïïíÞ€‹¯­w–§V»ßöéxÐë¯Ö냿†¤0B©§B"È¿ö»þ11ݘórð¬ð›#×ßK…N IDATÙ¡ßUO‡y‹ò¨a¦#6FeAÁÒ³¦ñ†a˜QYÂoŽ$¦†÷Öõ­SÍn}œøÝ?V‡‡¾”ƒA¸öT£²ˆæÏA$–uÌl‰Çì×’Tµ~dÂþ5­NÜó&ð< RìTûû ÕÃ0Ì”XÎoŽ…Q¦³ÇD¿/«€ð¥ÄÆ‹§;ßvƒ¾ !þF4Ö­Öú ßÿþæúßüþ¹ÙpOš„{â¢ÇĪ ž%CÈŒIâ×âK[9³ùæHfï›8iþL¨‡„8Hÿäž7'L° ¥’yqæ¯é§äÅ<Hq K¥ Ã0̸Œ÷Í‘…ö½‰ú¢ñäj·?x®ÕÇüÆ“Áé3›/ÿàü~°yö%Òoº¼÷ûçžo¤7½€ã_I$N¦/Kß›±¡!%qc^Tg#2fà{aúQ·MŸÌ£k~l¦z( Õ21/Ã2Og†™„åñ½æókƒ¿ô?ú×?ÈG¡8æ»? ºýÎw]Drí™FûEÞ¤¡JÆö½ØMÐõaû´$0]õ¨.f¤Ë+ 7ð eA"†é”d†Éc¤–v }/Æ£ýbsïßEçËNý‰UxøþæúÝÿÿ«îwÝîÃðÄs'ƒö‹ÍjŸ8/‡Ê…blß‹ò¥<í\™0cŒúè92ªåc(£Ê2†aŽ,£ŽF–Ó÷cuÞ­‚àøêþ7Ýn§{ã×íþûþj]4¿×x®ÕÌœa&a6¾È‰¹’â0£bæ(sÔ}/\êkõöjžÿÛ wþò?ÿÊÏ67^n³¶˜3Þ÷‚Ö}¸CûéÄd„¹±Â(•<É0 sHÃ÷b9å3K¦ýÍwA©ù³øäØ!Œ+÷ÆÌ“Å‘Iœm†a˜Y2ö7GV¾úr·ù|kÿO{¶sÀ÷oßs4é|Ó»÷»Nÿ/¡X•ÁÉÆévSè½¹ö¾˜oÔ¦Hz;ö‹¯]¤’ðå4¾dÌ(3W²{÷ð: ¸‚»†a %Þëïí^¾t&A\‹Ìã{÷¯S¿@ZâãÛwv>ÝYtß‹A>’½N¿û ”ˆ^§¿ºÚi½P±—èadf¾‹Fæ† Ã0ËÇx¾,/†Óû®×ý6ܹÝìVâw?ayT·_ça„%Ã0G„‘ÖŒì{1„›oßùà×»ýë Bì… 9èÏ9b‹Ã´}/†a˜y1¶ïË‹!\øå¦|u>(AEýØ|ãµXðwS†a–’¼5#C×°¼ÂöÛ7ë'ºðࣥµêOøAkÕ½l½µ’¸q½µbþ¥ƒMœ,¸Øý)3¨jõÆnq4çG†a–ž<»ÅQÜ÷¢*¶®m×ù›/¿´ùªýÂjûlcó'Áæ¹öÐÛw÷Ó¿´˜HŸÌ»Øý)ó×ùÂv †a˜¥‡÷½¨’­kÛkk³ƒ‡}!DóE `ãl°q¶<³6RPÓi{†ùÓýßüT|WÞe`ß †a˜e…}/*fëÚõàxcãÅÁþðD§Ói6x²ýr0ûÕ6îäÈîÞchû‡kÏ0g ÄAÁ]t†§ÿG‚m Ã0K û^TÉÖ›ÛÁñÕö™öàaWÑyÐi<Ùž ÞøÍæä»½x¦!Ý»S÷xÇŸçQ,wQèÏ1TØ÷‚afÙÏ÷‚÷½H²õæ6Íö™f¯7¨×ë¯;A3h>S¥Ñ"ÓÀ0´ww e®Ï $óL¦¬)ÃQÞ÷‚aæˆÀû^L i‹ÍsÍ;öêõz÷A/ÁñÆ„Ú"sR£*WÍ´ßhñîÉ„c¼°ïÃ0̲¾°um››çšw?ïàέN#¨ß Ì·EŠI/-˜ï#̤Fbª%aÞÈ;“¾Ë½l Á¾ Ã0KÉØ¾<9¢¸ùÛ[kâôú×v?ï Ïôûç_k6Ž7„(¥-ò&J^V ??LŽœ)רJèÈ~s„aæˆ0Þ7GØz¡‘Áé3Áî{ð0è÷Ï¿Úôù%µÅQ†í Ã0Kï{1>½Nx÷³<¬>ÓßøQ£q¼±¶6Úæ‹CUs1%aß †a˜e…}/&& Û÷ëÝ h´N¶Jú[0Û0†a–Þ÷b"¶.íÀ“õ`ðÊOÏ·^h±GJyxß †a˜å†¿92>kÍ .üü•yGäðÁv †a˜¥g ß §@aÑù¦wïwþ_B±*ƒ“Óí¦™@iœrüò½ õ#SÂU0l&ɃS©Z8= ÎŽy‘·fÄçÁò¢ò‘ìuúÝ¡”À@ô:ýÕÕNë…æ¼ãµ(LoïNjSn¼ܹøÚE:3UAs¸àTªNÏ…‚³c¾äí×9tïN–Ãé}×ë~îÜîÖßóî',/€)ï{qý½ëÔ¦¸¹øÚÅtã²ÞJôݽ]:¹»7Ü”7*é3#yeù0‡rHSÉœ)~tæ¯ •žH%騙>jl«M“õÖzùH.~väÕÁCÄH92ÆÛ÷‚åÅn¾}gÐEÿ‘ô½zˆ=>Z€ôç³Å`ßI4㕱›õjqnj)f™C—J“°Pé™î­g–é.‹Pà§Gùì ÒÙ1­˜UMZ-c|s„åÅ.ürsëµ;>\m@ÔÉùFlq˜’ïZò‚½|érÞP2·pëpÞ™â“ãJÓc‡I,w*Gl1Ó3‡¡‘,xßD˜ &OêzG §ªG—¡ÚâWžó"\peÉ»F}º¹ÆÍ—É“t Æö½à•#CØ~ûfýD|´´¶@ý ?h­º—­¬$¿Ó±â6q²àâ•8“¾Ï0Æ{Äâ¯1#˜D%OÔs÷O3MœD¼!˜<2•„Y ‹J™qÈ<™÷ë\Ò“FÉÅ”dfR8ÉãÊG{–®–‚$MG8]¤WfÞ•~ù§›À]Ý0{KXÞ÷b*l]Û®ó7_~ióÕ†9Ù>ÛØüI°y®=ôöÇš´˜HŸÌ»Øý)ó×ùrXö½£~š:ŸÙ,H· /òî» w–©4RŠÃ™ozºO)•Gr6ir貃Z]éD¯_ITK†“)e*‰@xß‹ŠÙº¶½¶ÖØ8»1xØB4_”6Îg›Á3£í> Y¶g˜?ÝÿÍOÅwåÝ8”Å·[”'Ý ŒWó†>ËAU©´L$Æ—UeúP‹“GÞˆ¿d’Ž]¤‹Ã?ÔÊû^TÆÖµëÁñFûÌÆàa_x¢Óé4›ÁþgöËÁì#ãö÷?†¶˜_I¾˜Ÿ ÂÉ»+óLI¦ä{Q<±Z<);³Ë §RµL’ž• Ê¥IÕ±™°xÓŒLÞ¤C“éñì: û^TÉÖ›ÛÁñÕö™öàaWÑyÐi<Ùž ÞøÍæä›þ;aÒ0V„tïNÓ"ÐÚ"q}úââ§»wQèÏQU…ËrÛ0ò.›Æ£+sJÌ8•Æ g6é9átè½yáOž&ë©%%Ã\äì(ô­S²a$\ ÆŽÞÈÏeß‹ªØzsƒfûL»×ˆcõÎ×àÙ õ|³Âœe*ã]‘wWBޏå¾kB—Ž©ú^ÐØ%!\®¿w½òAyb¶•þÌœ‚M;a¥iÞ·d˜ºTro)?;¾°é9Æë dfR§¯©üqåý6;ŠŸ^&ŠÝ‰JÞUìÏQæéå=Æó½XùêËÝæó­ý?íØþMrs´£i‹ÍsÍ»Ÿ÷6έuôzðL0T[¤­éy‡‚Ë ¦$††“99R|&ó¹%'GÈV géybß jʨÝû»ëÃVN“|¡Múˆô; §RµÌ =kph-ç3€‹·¡’¢R¦ápý½ÝË—.¸Óî^‰}/îÝW»Ÿ‘–øøöOwØ÷²um››?lÞý¼#àß¹ÕÙüI#x*¢”Ý"ÓCÂýsrL÷ïÚS-eÒw¹‘Õýbªß¡`]É{Û”¡p*UË Ò3±P“µE\¼áØ3f_Tø›#“ró··ÖÄéõ®í~Þž?è÷Ï¿Ölo”Ô™å/+žÉü³ÌÓ½k<%4í½;`k2œJÕ2íôdI1G¼xϱ´ŒýÍö½ÐÈàô™`÷=xôûç_múÇü’Úâ(sXö½`†aƃ÷½˜ˆ^'¼ûYVŸéoü¨Ñ8ÞX[ms‹Å¡ª¹˜2,Óš†a&“1ö½`y¡‰0èöýz7­“­ ׉,=ä{1ïX0 Ã0Õ“g·0Çy°¼€­K;ðd=¼òÓó­Zì‘2*lÃ`†YJxß‹‰Xköqáç¯Ì;"‡ö½`†YnÆó½àq:”oz÷~×éÿ%«28Ù8Ý®r£­Ã˴׌0 Ã0sg¤5#[/J!É^§ß}èuĽÛýý?wæ©E}/†a–ö½˜"½ïzû_twnw¤´'ï~Âò¾ Ã0K û^L‹›oßùà×»ýë Bì… ­]ä ?çˆ-ì{Á0 ³Üð¾SáÂ/7å#ø¨“°ðAÉ*êÇæ¯Eí Ã0Kï{Q=Ûo߬Ÿèƒ–Ö¨?á­U÷²ôGWÒÁ&N\¼gÒ÷Æ`ß †a˜e…}/¦ÂÖµíú1óå—6_m˜“í³ÍŸ›çÚCo7Ÿ>O‹‰ôɼ‹ÝŸ&ùrúTaÃ0ÌR¾Õ³um{m­±qvcð°/„h¾(lœ 6Î6ƒgFÛ/|² mÏ0ºÿ›ŸŠïÊ»q(ì{Á0 ³Ü°ïE•l]»ol¼¸1xØžèt:ÍfO¶_f¿Wˆ;9b>õž°g¤?ÔžNÞ]æSïñ“%l·`†YzÆð½àmµ2Øzs;í3íÁî8Vït:'ÁSÁ¿iN¸Û‹›c86ƒ¼o¦»#߯0Tad^L cÔw!È÷b’Ï%_/YR/_²aK:„Qoa†a†²~ªµ{Ún‘>΃­I¶ÞÜÆ Ù>ÓîõâX½óu'x6h=_å™~šÆŠwWB7¸å¾«—Ž m—/­qà—$­N†a˜JÛ÷‚­1H[lžkÞù°·qn­û àxcÂtJLjdþ4yàæÏôywå™RÊcìÓð½puƒÑ‰“æO6`0 ÃLƒ<»û^”eëÚ667Ï5ï~ÞÀ[FP¾”´[¤—&&&ÇËHnθf‰¼3é»2§iÊ0=ß Ò Æ˜A¦OºfiDƒa†á}/Æçæoo­‰Ó›?lî~Þž?økÿü«AðT D)mñ8r&/òü*ŠçD2ÿÌ <}q"ü¼»”yeÃì÷½Hˆ †afJð¾#ƒÓg‚Ý?öàaÐéóKj fª6Œ¼)v¹`†™6ì{1)½NxxX}ª¿4LJ÷{ëUÍÅ”aª¾ÈšòHÌ•°ƒafª°ïÅdDtû~½ÖÉÖáÕ3f6û^[…9`UÁ0 33Ø÷bL¶.íÀ“õ`ðÊOÏ·^h±Mg$¦ä{a¬®ž(>Yy†aŽ8cû^pG kÍ^oíÂÏ_™wD+dØp~$odì“ Ã0Ì„­‚æAòŽ3aye„Eç›Þ½ßuú Ū N6N·«Ühëð2mß †af¾°ïÅ‘d¯Óï>ô:âÞíþþŸ;óŽÔBÀßa†YzØ÷b*ô¾ëíÑݹݑҞ¼û Ë Åì÷½`†afï{1-n¾}çƒ_ï~ô¯{€±‚¾à"ý9Gl¡`Ã0ÌR2ö¾,/†pá—›ò|ÔIXø ½&êÇæ¯EÁØ-Ø÷‚af)ɳ[°ïÅDl¿}³~¢ >ZZ[ þ„´VÝË2?$–ùeÔÌë .^‰3éû cÔG°Ý‚aféaß‹ŠÙº¶]?æo¾üÒæ« s²}¶±ù“`ó\{èíæsi1‘>™w1âŸ/™Âö½`†YVØ÷¢z¶®m¯­56În ö…Í%€³ÁÆÙfðÌÚHAMC¤íæO÷óSñ]y7–„m Ã0K û^TÌÖµëÁñÆÆ‹ƒ‡}á‰N§Ólðdûå`ö{…¸“#ô=:píæL8(¸‹Î ý|kö½`†YnØ÷¢2¶ÞÜޝ¶Ï´»BˆÎƒNãÉFðTðÆo6'ÜíÅ3­™mOwüyÞÅâ qÅþïChl·`†YzØ÷¢¶ÞÜÆ Ù>ÓîõâX½óu'x6h=_å™ÊÀXòîJÈ×!£ü£ÓwMîÒÁ¾ Ã0Ë û^Ti‹ÍsÍ;öêõz÷A/ÁñÆ„"™“U¹j¦ýF‹/pO&ÌcÇm Ã0K û^TÀÖµmi1d†VÀzk}Ô[F}ßD$‹—ùâcDøP¤L:ž£>± ÅIzX*Õi$Ô´»â˜—-n4˜|w @™æR$&'ÏnQì{Á½(l]Ú'ëÁà•Ÿ¾2ï¸2¦j·pŸRðç”p›Œ1êsº)ÏÞ{#5÷&ª“4=å#<ß”)ø3ý·ó˜}»|( ñÎ%¡ªbö EB”¯ªe.N3I‘˜‘ìË Xközûk~ÎÚb¦ç{A#’¼/_º\0.¡…ÛP–4Z %³ãOœ4ŽÔR›÷M4"HÞû&žkžX,P†FxŒáì R&óס)ƒø+”‰gÉ3‰0cB%b^œP‰Q»{œyAUÉ[ù[»ï辎{>™¡6Î<£ÈÐ×™^‘˜œ±}/xå\øù+o¼·Q|Mç›Þ­ÿuïú¯vn¾}gçßöä#9›¸ ýHºYÌ;Y2·ALŸÌl¬gIf< ~MD¸øöòOœ{ÊÞ*O:“ÙÏ M“LMV¥Ìàð¡„jš &ïì)Σ‚ Žñ2kÁ‹ï{1]ä#Ùëô»ÂÁ½Ž¸w»¿ÿçμ#µº}/2kf%Õ5Ñ0†¹¤LbˆYÜ]¹ó%wïê½Kú£&ïÌ/‹¯Ì”cÇpAŠï{1-zßõö¿èîÜîHÇ`q÷–Àa°[LƒDCéŽäª-ŽÏÐØŽñ: •2‰F91¼Î³jÌ&n •P3 üÁR¾~¼Hð¾Õsóí;ƒ.ú¤ïÕCìðÑä ?ï˜- Óó½(ž4Íœpu§'ÍAå}F:À´)xŒ`Íû& °ZñsÉx–ÿµÌen©6eÊ—„ÌäÅsÆÚ"óYsO¨éQ>yçòÖ‹ÐycjEbrØ÷bZ\øå¦|®¶ êÇæ¯ÅbÑlîDo‚̦d¼öÅŒ*ÌA…õß¼Bù0óâ0GÆ4RfÔ8LxMµ7æ…3Ç„JȯJ^mÂd¼žÇи%¼IF |îE"û^L‹í·oÖOtáÁGKk ÔŸðƒÖª{Yæ‡Äò¾™ž¾¾àâ•8“¾Ï0F}Ä´}/h\’Ð.×ß»>ê8,í•w²d8nÍ/>Y2db¼÷M·D™Q*ùCoÏdÑRÆ}tù(ÄjŒ4)Î|‹Pù(•Ç'ïØ …ÃâÈŒÑ\”dÚEbrÆó½XùêËÝæó­ý?íØþMr׳#ÎÖµíµ'g7ûwþ¥K'ÛgAs5xfͽ2ýݲÄGÂÜ_éϼ 2/.xPµ ŸŒpÖ”'ö½ ^FmìÞß]¶rZÁÐ|Dzÿœe⨽oy8eJ2Ç„šã€{¡ŠÇ‚2)Ùð^o÷ò¥ îô‡»×Ebß‹{÷Õ¶f¤%>¾}gçÓö½ÈeëÚöÚZcã?o ö…Íåþ§bãlÐ>Œê²’•à~KÝ=cž•)Yòî‚ó9ÖQ£:íoŽPÈ®ê]îî䨽oy8eJr4jAÞÚ˜S[Œs¤b¶®]Ž7Úg6ûÂN§Ù ö?ë´_fw¨„„tH ˆÌpòîÊkÍ .üü•yGäðÁv †a˜¥g ß §@aÑù¦wïwþ_B±*ƒ“Óí*7Ú:ÔLû›# Ã0̼û›#l½(…|${~÷A8 ×÷n÷÷ÿÜ™w¤¶a0 Ã,%cû^°õb8½ïzÝoÃÛÀš+î~Òi½Ðœc¬c·Ï÷b·„…a†™#yv‹bß –C¸ùöAýGÒ÷ê!öøhrПw̃I¾•º^X4†a˜a¤o¥<92„ ¿Ü”àÃÕDýØ|ãµ@ð¾ Ã0Ë ï{1-¶ß¾Y?Ñ…-­-PÂZ«îe™Ëûfzúú‚‹WâLú>Ãïì{Á0 ³”ð¾SaëÚvý˜¿ùòK›¯6ÌÉöÙÆæO‚Ísí¡·ç}•¾–÷Aöt_íV«…÷½`†Ynxß‹ŠÙº¶½¶ÖØ8»1xØB4_”6Îg›Á3£í> Y¶g˜?[wóîÊ»q(l·`†Yzø›#•±uízp¼±ñâÆàa_x¢Óé4›<Ù~9˜½;¬;9Bß¡מaΈƒ‚»èÌÐÏ·f¾ Ã0Ë û^TÉÖ›ÛÁñÕö™öàaWÑyÐi<Ùž ÞøÍæä»½x¦!ó£íéŽ?Ï£X$î¢8П“|m Ã0K ï{Q[oncÐlŸiözƒz½Þùº4ƒæ3U-2 C{w×ÀPæú¼@2ÏdÊš2L¸ïÅìaÄ0 3R‹Íû^Ti‹ÍsÍ;ö6έuô‚ oL˜N‰IÌŸ&Üü™¾ ﮄ)eŒ˜L²ïż¸ñþyGafnì}±7ê—xß‹‰Øº¶‡ÍÍsÍ»ŸwpçV§Ôƒï%¿-’^>Z0ß1f>ÅLj$ôA¼‘w&}—{ÙH®`ß f\F-i ÃTÂHF\ö½˜”›¿½µ&Noþ°¹ûyOxþà¯ýó¯ÁS¥´Åã8‰3îeé3ÏçÝâj…tàé‹áçÝ•¸ Ì+»°ïÃ0ÌRÂû^LŒ NŸ vÿ؃‡A¿þÕ¦Ì/©-Ž2¼ïÃ0ÌrÃû^LD¯Þý¬«Ïô7~Ôho¬­¶¹ÅâPÕ\LØnÁ0 ³ôð¾aÐíûõn4Z'[%ý-Œå{qý½]÷_™‹‹/éé“Sì40¡KÁ’y$,Ùë0ÌQƒ}/&bëÒL÷½82}§"ÞWÆ{nN‰p°P{‘¿µOÛúk)IYê/c Ñ—ú´·Y`![D*Øw2ºx0z¨|õñ}×^¸€Z¡s~×WÔÑÝç…²'K^mÚ’qœèÁOº½b»$ŸIô+†½ñˆŸj^?+ÃÔwí‹#QZ«k•ÃÕæ|Ójô¶þÚqN6æ«FmÚ8ÿLÏûoØsÏÚ¿[itcÙŸRÏÿšÓî›qáW¿å=Ø1¶A˜ˆŸs–*ÎÀqbÏx2K—ØÆ©ÆÌå§ `L„í•»o*Ù‹P­ÕµJ¥ÚœoZ;=MÓj§liÎÍùZ’ØÂkw⩟GÝ/½»ßŠîÖ1Öî92ž {Žä©µºnÌT›§šÖNO+i¦iÖj†”ìÆÆð3>ÞÅçÂvHy„À¡ðç xÇ ëåͦ¤ºvNàž#c[ŒIéåþdä‚Ú‹|´®¬3Ó“ k§£išùÔ¬¾R5Ž—®/dÜ{Ì"¦¦Õ Øjzôñ¾^îrxlÇý¹€0Ô^ä¦ueM¬Zãd­Ûµt]70šQ;šgÒ"0Á{u÷•kô „-«gLø§­½­ ̸Œ§• +çß;?êYˆÒwíáÅ>Nl±°XÛú¢Û\¬tžv £jÌT3þœ|‹ßÊ>¸û¥Ú ¬—/•ÒÇLñÜ‹rr-·6F=8ú{îáÅ/Z«k²S[x«öð©Iyë¶¹ðNÕ8bhZ¢ÍÙí¿¥Ð{&Ç¥qµÆÂ·Ô’ä@íådª8ã`å-N<H(UÞÂAíÅžöç·+ÚÜÂ[µí]­T¶þ×[:g$-^ìç;ãm¦v <ÖÅ»8¢®6öÖË× É[vQ{EÅž#™ÙÆÜIcû›®”Äêõ–ÎÕÊS儱¨f€Bê{Ï‹=]s÷áצ”dúh¯ùvµ:S­TÒ=Üb| óþÀ |îLž{‘Ís±:½²Þ1Œjýx]›"o‘y (<ž{ѧÖÅûR²uÃ:{a©þz‚×T¨½€Âóæ*bë:…ðÂQ©uE´•ÎŽz"9 €ŸÓED’æÝG_™½ÿîjÓ¶q¼:ר±€"ð¹€! ¼HÄ~fwÍ^çé®m‹XZ×ìMO›õ×k£ž×èÄç^b­ßlgéNx¯ûs·óÓîý»¦È/銇'¼ØãÔ^ð¬*(G¤Mœ$¼ˆÑþtËêHï™].é»òDDÊR±­Þ¨g6NÈa@ñÌ&(á‘G©')팱òá‚ýLÊâ-DDÓ§F;¯qÁs/*‹kŸ¶õ×:R’²Ô_Æ¢.õio³ÀÄÂöLWÛG4>´_Ö÷'íKpÏ@Ex¥µº¦O•Þ8½p®êžlÌWÞ1ã¥Üí<Ô`B=ÖXöo_2„#-ž{ð!¼ÕZ]«TªÍù¦µÓÓ4­vÊ‘æ¼Ñœ¯GÓ=/|ašÏp¿ôþí~+ºWXÇ„Èa¼/‚µV×™jóTÓÚéi%Í4ÍZÍ’ÝxÃ~9¬wqÄÝêÝ—ÏP7j'¬×‹—[½KÊ-K¨½¨/´®¬3Ó“ k§£išùÔ¬¾R5Ž—®/dÜ{Ì"nÚ®^øÃª1¢ƒ_/gΗým„FÞ "¼ðk]Y«Ö8Ùèv-mJ70_õWó|Fg`dàfÂzùÂoAFò—V{e/é öàCx±[,,Ö¶¾èêºÞyÚ5Œª1S͸ ¸¨‘W©¦Z7ÝÀ{Ò—Æè{ä0^„¿h­®ÉNma±öð©‰lÝ6«†n3æ-ÔÛG#Ö;úão©ÅûZgÔ^Þf©â j/*‹=íÏoW´¹…·jÛºZ©lý¯·tÎ0Žš–(¶ðå$$dñ"°®"ð|Xߢ†opµ±oü°^¾IÞ²ƒ¼@Exñ’mÌ4¶¿éJI¬^oé\­„{ºæîïM)ÉôÑ^óíju¦Z©¤{¸ÅøÈk-&9r/‹—ž‹Õé•õŽaTëÇë9Þ'RlÔ^T„""­‹÷¥dë†uöÂRýõ:ûÈ&GÞ "¼©Ôº"ÚÊgG=‘‰Ú €á…ˆÈÊg/ÝlŽz9 €á2¡ö "¼@&ä-ªB1^¾¸–ªýÕ›ÐL&ŠS{ñä_OF=À¸(TxQ–†»Âå07Nƒõ€£Pá…ˆœýý¯£Êã°lÛ¶mM×Ý­‹÷Õ¾êæ Î™Œ›†¨;£f*á|bÛ$™UàdåŠ÷Œ›· ¶¸Š^8ìg–µÓÙývS~þnZ,mJ³J†4Þ×õio‘Pö‡`zGÈq‡³„¯Ñ ûdÈ[T /º;Ý«?}&bfudJD4ÑŸ›rí²¥Wµ.뇃# _bÀ·‹ºìß¾\ö_›ÃŽ#øFK8¾»‘zà”¼ƒûöXïoJîɈîÔ^| xçÈî mJî¼{çòáªUzùlï¯5±Eïv´þØß°ÎÛá[YP¯åj_ß¾çêhã{yw@MÒ%ɘoÐ=ÝûG^ /ì’hϵ3×–7/nÉ©5í·wìù¶}mÝš1¤T¶BRßÅÞ÷]7Dð5öµ ÜuÝ·1zØh±©u¶©º$-U΃ç^T\ùìØU‘WÅ:yyùåöÍve¦""ríªˆdÙ5ã%Ü·ø…HÊzˆ¼J(DY‹IØ‹Ú €ª€Ù —®ë7®ßX>·i‹Èï>Úw“ˆs²?Þ „7àËR¨Ñ@à¾3ѯBÄEíÀg€á…q¬b~ßuÈ>â ï…?ör±XŠ‘*±#9„Ú À~2{+m8‚¾Q{P 0¼8ÿÔØ³¿ì…d/ð “dX–B·¨^l¼bžjhŸ7sÏ^xk?îúÞpÄ»â]mI2BtµÅ`k/6Ä”Oö¾LO¨Wô°rаoù 6£Ç!É&9 €W1k/04Ô^TcZ{ƒ‚¼@u k/0V¨½ø $¼˜>²·Ùú?ŽíÊoöNÞûòž¯ÙúÇíê±éALCFà5ðbiqióîfìfëÕcÓK‹Kƒ˜††Ú €jP‹#Ä ‚¼@5À-Í0!œÚ‹QÏ0F/öMx^ 7oÁúÀExLÈ[T„ÈŠÚ €ár@àExL¨½¨/ y €ŠðYQ{ðà–f˜<» föÄl–ät@xqþ½óiFhôýÚ°GCx ö€Bª¯oÜÚHÒ20l/÷rÐöûWâÛaˆ¶?yôx»q"Qä7{b6ùÒ†ZiAÞŠÊùôØŸàÅ‘´#n?îœÙ³±mÖo®oÜÚHøL”9µYþ &ÏÒÎÙuŽÇäxȸà•"¼˜­Ç|vròÃqF±¿kϽ¨’† ¯7³îghŽGr,9Iø'oP% /’–•ñøì>ÉÇ9Jø{ç¹P`³õÙÀ?ѽâËä±Å8|vç8_ä0`Âm? øøxÒ+ÏÒÎqøìα µPx¾`"6¶$áE’Q\ãðÙ}Â%W±¿}ò0 ÜËA¨ Qö"U„1ŸÝ'ù8G ïÔ^À$Ø~²<Hº8’dÄqøìÎq^RÅ”ä0^)j/b¯7ãðÙcÉCòØ‚Ú €*ç Ù½kÿöx8È[TlÈŽ¬È[@ñdüô^¤qýæ06þFZˣlj~5{éfGV®Œÿ‡ûà ç.€T{²>ü+€ 篽àCdÇ¿"˜p‡¾ûv»öjý?ÿ~2ꙀoóîÖýÞÏù΀’ˆ´V[£ž(ŽCÍSÍQÏÊÿ^ÙZ5%\fÔIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extthreadgroup.png0000644000175000017500000006004312032647161025745 0ustar ebourgebourg‰PNG  IHDRŸYQÓÓksBITÛáOà IDATxœì½]ˆWšçý×Kœ d_¨Æ§±@Y´.R¬.TÍ^¨_HVÍ6ŒdF¶º­^xÛÂ+U/Œ]=Ðmi _ifiùb±uÑŒ ïÐå iÀC•Á«Á¦£Á†LhA&´ T€Þ‹ó'#"##¿ª²"ÿ?„ˆŠv¤ßF€1$$’ÒöEÔUžlóú&Jlj7ýE ·š¶’XHR@HaÚæ=Ö¤ªd”ŠKxˆ<¡¾ @ø±ˆ<‰~ŒÈ“ð„ ­ë±y ”*ôÛ'O}îé*Fc ؃D$äõEd¶# _8 ”H£}ìÅRß á ©êM Ó¨ˆ…þ2cUs ç®B‹½Resö¹H%䞺]@Š€Ðrî UÀ3ZîJ;œJ @F|ˆÈìŒ | RûcD±ªàd¢èê¡Ø’CFž~^öÁÁS !¬öU@©::ö%"áA$"yd2†p¥] @dÔÅ @z¾~Û=}3¥ÓîÔ÷˳7MÝýš[­[H¶åjšhªØº–ÔÚ¦¹æ6ja7ºù¦LZ+:D”H»ÖŒ(†¯„àï ,!2u¥`Oˆ–„Úcž£HZZ¦–´üŒìÁ“B+¥z-=¡?Xá©Ö˜~RÖ$Ð/Lª­Cê¶/¤ Ï ã€ˆ#¨g‘Úvt]kOlÔS½eöËJÚm¦‰ Õ8–ƒþ‚TCÄs5Þý¬ cá”${öゾ1¤i. óLEìK˜ç«T\¿NIóÚ<—>i×ÅÝ–€=D{À’ÔmPÈhOøK€ÑxØÆ“­Ãí¶iKùHšÝIûÕyO9¥¾o÷Á…ÍÝ÷ÃK?þkMžÿphsEÄæò”º yH“0Õ–ÕZ$[­ë¦-Ÿh¼ÐMfmÁkó ‰œÈXÇn0™«ªV¿F]´ñ‹ÜÕGeZyÚ„XFž„Kxúûô=óN˜;™^”5D_YêrOYðÐÖ<| ȽH,éjEz±6µeißc·å¨‘€n$!VŸ¨ñjhcB €ic[˜ŠÉiæÛ‘œÅ4w¤ùÚ%¤±MqlÚdÊ[c³±”VòµØƒFß1eöyö™oOk"Oª»êC*³žÒ]÷ù±Í^hÃÝL±žPõ²´MìØ¼Š1àù‹d û‹L£ ¶±%”g4^m#±*Œ6x¾Œ¥GˆUƒ ©XmÛÂqrÚ±5µj U-Âs42†õC¸–“½.aÞ@©®Z]£záõ=—N£PÝvm•:Šso¡ü€=;Rh;r©Ï|–t“ °”Ä1`Ú:ö˵®E ÝV3µ¶á™=·ž0ÏøWói¨÷?6^ À1µÂJ‹Ÿxû¾ñF|ó!DªÙ› %9&OeÐ Ó¶S§K…ömÑ J!Í«hÙ2ÖMa_RZçİŸÍMYG¶ ä47…ÕuuÇ’ÛGðà|5ªÌ‘i릳ô"_Æ>¼H ’±6ñõg¥Cݤ³-$ýÚ,é×Rßä=`IDJò#ó¤ì+y@,}}?a,û¶«C×óÒ8ÒìOú¶\üÞü÷×¾ÿû­ß”þò?üëgQG¹ä¨ûƒO—!þüZ°ó·JH»¶#•%gÌ&󉱑Êv‘¦ž2£ßcýÁqÉ:oœÆ3,bûb%'²m:û“HŒ]“ÖÉ€Û¦CòùÉ€§¶²ïí—é;V…þ3ñµº¯2`I›ïBiƒÑr ð±”8M3(±¯*eÇÚ³¶»½·úÒø9„±† Ó¬¶Š® A×Á•5•TßFfT5mÚ¶ùoÂ(€µÃ`4,Ñus-°íe}ç­1¥e&ðdäÚv‘Q,|O¨6xòÆ2‚𯃮§¤¾AÉ;›è ãÈ4›L%¢}ò¦±¡ì‰¤r±q]^ðe¬ôC=_?AO×hÂó­°©wÛè„®£Õ3OSK£¹ŠØ­¬õ—ejíä'~»G?bè6–µób©“1|OF*öá~¬«¹H9B,ÉÂ߃¯„| þ"k¸/iMrÚ¸1D,¤'­~À¼„°ß£rE˜Æá´{r_•ÈlGðà:Û¥çxãc‘5ëŇçKóÈLû[µ¼“G–E&ESÙËT-iO»î•e¯$ß#„Š@Y;Þˆ™f–#óÂ÷™[Gè ”ÐŽ(s¿¯ÌÖwbŒíQ¨jÖµ TÍ,ÍëØ'e[„¦nž00õ@]”æµÅ×¶6·Ñ1²ÍdÊð"¥ÙÖ&–±o_"²µŸD„Ø7M:_7¦=õ@Mþ{I±±¤š§KÀ’ð÷dÔç¢7-'OD1Ô·OùHÌk –‘_>)iwogÙ~èÝ»?^úI޲ä¼à7~Y“ï¼'jµÞ«IHéT*y$F¡éY Û>$k°"K“Ó7Q×DêNª¼î—ïX>qUho°Ð¾Íˆ¥ôcWm›’‹ÖØXɹ”mÓÁSŸŸÑuö¡ýfº}[ÕW¯B7JZ¦nsu Ø‹$ –|å–Ç’~‰|ATò/  ;ïnÜ_ÙÙ÷Xïº]å×n*Òéާᙊ]™v½ùbû<–ºR6Õ–rNJÄÂX¥Ê¬FΧŸÂ3.Ó'ÃV|¾u}i¦­\ñžv¨øæy)¾ Ê“¯«TUpóÊä6™ ÓØ·ÆŸ² ?Vmš ]³Øg!¶Â€~ ^«›ð"ÀO<¢±u KØ2ÄÂXxº´ÒT”}îP“ÜÚŽ´ãÚÆõÝtÎSÓWí„uŒÙ¡ÝòTÓV(¯nDžrŠ@DÑ’ð÷„q=™ KƵ€ãÀL^Kiœ4ÚK§Ü'1’^ j;6oˆrZ˜§&½ÄÕ'’lÓOPD ðæÞEÒóûÚR´&§TÜ|l6úM@³¡4C‡·L «g¶]"ûü1±•Ϥ‰¦¾¬(yiEd?^~‚ßCKãGæ†÷7› ¢XÒôA±Ýô—jã’ˆ•óRêö_ ©‘η`l¡»"™?=™z³¤ihª`¨Œ%bOd^BÓ€p}æ±}]Íqñ´í®11_z€™¥¯mð¯52¾4ˆØ·¯Y’Ø3Wi6|hi7V€Õx 1º®õ¦£ƒ'\.]ç5Gâ…«ƒ~šÅÄ3¹å¢&~Ð:-}ÿ÷[¿ßüŸoÿ?oÍH=ûhWÇì—Ÿ{#éÇ»µªUzk¯H©"X±”žžP½íôw*´CÒ¼¾Z´l«9i7¨ï³»óž-U½yµ½ó€ú©«IçˆöÎ õS×L&Ò7~ËÈCûóê­«àÇÂx’“.Ú!oÜM‘®÷"#йgíR­ëbÏWñuÝJUo³&’ðm[U7%=uOlß4#Ê#çE·¦ž—2¯m<"©F·ß©ÓÒ}.^Òf¤t¼ýêOFµ9)=!’ú€ÓƒÏþmR}uÚd÷¤nP€R­ñêyEÊÖ„v$jw%Dòùé³$ÁQ$fо ˆØ€ô"Çþˆ´[EÄ‘r¼>âH|Ú?œèºvÆx¾Œ}À„‘8]’zмr}J¯~L¾$7ÙÇ'NÁXXkçQÍ·Ý“e`©k¾ßÀÚÙµï¯}?Š¢ýøG÷w¿ÛíxððM™¸eœÌÏ¡H¾jSû˜—+‘+$Œ=šd¥¿(aË€‰D&Ý•uçmÔ›W%àj<€öçïÕ›WU}§Ä;ɰMl?ù>U>14Õ#O^§M××mÞ¸ßa,u±§\ôª~T†Âž/—´á/’±q=i#LµUe_whsÓ$ܾ‡*º3¦Þ` D+<º €1ìÔu:½bI±¢.a*h0–Ök§íÕ=JJa| Žá®ìTcÚ Vb»K½¡•:Ö®ª6c¾{·Ž ],Ú¬L]ôm8-—$Bd<{ˆ•ÿ6Õ«NYPÖ€¤Kyà†Hõ“Ð&{ìØîè3²‘hRŠ.•]˜[ù®¡ëÖĪLR_WâîvLvi½SÒZϱžô­G Æ-÷ß½aƒ¾ð÷×Q`I}Zì—ÐnOÿ¹7¢¯ßvß_n¼!cD_÷©ìrã ¢»›ì_>ñ†ª€úw^UÊ?¯÷x1º_&½úë'®ªˆœ{ŸT¯Î©Û;ïÕO]s¥]Å#Ý=õSWíÑzxÀ3§®Á“z˜ì™Ö5úô€gÎ\ûÓ§7ž9s-1"õ½ƒXòåž2Ü}XRQvcç-©Ó8&;ôG˜Œt2_NÚšö•?9¬‡Ê[!Ü/Ó© l×~ü‰M õ[—D ¨ÛžÃÚ>KWè¦}–|Þ±Ð!O w¥=¹Y&èèÆKÍôàï Ý/iI™ïBùçóÝÚî±~jÊÒ…²˜¡Æ«!¡;É«®3ºÛ¼‰›µÈ ¬2aõä­1úzlšÈbßô«€õ©è˜‹RÑW‘êOgÞó§3”WyÑ(ç¢nÓèþÿ€x¡¥Úº”ÔÀÚ8éO§ßõ§ê+—|v0‚~^¾—¼6ú¨¤ÌúÛDì¼çö ñtãɾIç˜ö®:‘j£˜ó*Ÿbt3ƒµßÖK'úž<&}: ûº:Ýæc¨Ö˜4ß—òJÚÑ”<é5‰¸?Ï>G}å^âMñÝþtK:oÞm­ñÊ÷cÅ"ò„¯?uÛEdºQC.%íÆ²: ¬ÀÛ?‡2d6›àxàþÇ:hóŸn !ÖΞîO%ìW>Ã%1ãüÆJ×»»ï±\n¼±|⪯v~ù¾•öåÆÕåÆÕåoØdùÄU¥ôÝ/ßC,”´/Ÿ¸Zo^Ðþò=ݾ³çuD]í´xír7FjÏ3­«Ïœº  ýù{V¤Ÿi]«·i¦uMëúÃ6Òx i™º‚!– ¿Ü¥{¾Øó% B¼ºg¯±u¼Ú²têµÄC ’[ë)ÍRV¤Œ‡¹ª1cÝiÙv 6[}—ÒÔõ)„cKižíD“Œc¦7Ÿ6ôÐæµrØz ¶šs"Ø‘‰ ûžôc©È:”ü¨aE¾£h{ãGžÓaÛñp ±Æú¤Ýô}ÓÒ.uÛK;çõx÷Ø—ÆÊ×]+ô#óag€êÉ%ŒÆiñU+i.Å"¹“ž1[cÛ.±ù uë´ã*–2Nú ™x¶IÈ8éíØòt_$ÑuÐØt,‚ŽF%½å!ý%‰=íét(bI|×ÎO×K¥OÃæ* e¬›˜Ö̵=@ÕP ©ÌÄ~·_ÊSýiÀ* °}â Â+¾R5šQ«¬ZDÂ4 ûB§6$lCl¶Qb©ªY›Ëñ„°M.õz+ã0m§Û¿ã¢¬ÃÏœQyM”]® õ1‡¨ž=æy™øŽê¼ IËU O&B˜êz HO ÛrŠ…Liök5i“z[ǹlHÕÜ7ývÍw›f®q$¶JÒ†´û¦Ý!öeÒoÎX;±í“¤òŒ„¶ã!U×z(÷;”Ãɼº€ÐC:!#رQªï”®WõŒª^i7’ídçW¦M€XE/¤OR®Ÿ[WÛ¯ÿýëwþ×ï¯ýð··ß:zó—7•o¾ ÀUV3Ï œªÚÖW2ßw§DÎwÒ—eR XƒÞì”vìœÈy ÒZíÏ4¯:û­™žäæ;%õuÇ•Æñç› è™3×ôAÚûäÄ™’ó – ÷Ð×30axõ$•%çõrZ,ÎxwK !M7l;žjÜQ,djÃZKÖÂ6ªln~ßxwÛ®×ÖŒÖdP¢wçõUjÉÀ­¾Š„×JÄmàCÚ®F¾þÒÔÌBÊ’Q¹ñîÒ\Q:ë˵®-pÆ»«94ÜñîîÔУ³|i"úpÌt¸Z•ô„P7Áq„ê—îxwÛPÆ®4ãÝp²ïÞ꣛,qÚ?Þ=B2•  Cº‡ªôÕÐaèñîÑžôµUÔ7Þ=rg«ö…±!£Mz_ÆÆìSó1hÃÝ|ãn—:ÇS¥oT ¡MsÕNf°‘q$Œ–»Û°3û²Ìxwc¥¨žÄÉ(ÀŽ_PW§,ÚdÞ›!ãݵïJ½öî`kÕyÛv@ïnû´ïn½>¶·lÎÜJžs‡•ÒëÇg*–þñîªUÚçO,u…nÌŵItï`í{wd2U”ž£Fõl5ýXõg˜|D™yl’;œ\‹ï®Üòjˆ £=åprç´Ð74ÑNöT8ºõi{VÁ}Ok¸[}1ù¥~eýêCèt:µZ­Ýi×jµÿ¹±òéÿå¿øÖ]yúîþoï~¨ÒËQ¨ÕÚN†ÓÝ}ù¹7lž®ëFI»cÍÃùÎo$më)–›Wá¾Áq2$,ßuKwÏþøÌ©«QÒè¶¶‹@lg¬ƒr¿ÛÂd ãÝ%"˜ñîb)qÔ‹½KfÛâ¾®×É{Ügaè{$ãÝ•‡SiƒÐ_±³ûæÔÕ®íÙ`šç¢ï,Ú隌w׊nÛO’nGʦ4wÌò¤oÙ€ñîö¥³StÍ€îadfÒ_š<ƒ¢ªjO;ÈB—?™ôÆš°¶o¹Rk]eèÁµp¤ÐbÜ?EÚV¯ƒÜèùvŽ&5Þ]¸Õ¨}H€0ÃôžaãÝÕM3]µõC1Í2·J…4ç’&î®ûv ïîÇzœ¡UtåMqÆ PSÙ$½|ˆ¾ëTMªäÆ-o,<ÓÏH†D'o¦µÛ¬`è уõ“n"‰À;ãÝ¥žAHÝÕ¤[µÔ½%’ñîH¼,I¿zÑ?Þ½ï³rüópîªÑ ;´]ßùd¾Ã.1Þ=J&ÁLI»z·ÌëmçP3ï¿wwû¾éÓ¥no2§HÜßÅ=†ð b3ç•}|IiãË<aŸ¦2tФVÑg·¾@íº‹ôñƒÇ»K$Mg3ðÄ×=çUl%Ždì«¡ùÒŒw—èókʼñî‘ê&²GÚAq¦'Šoë";-`깨[1`¼ûàÆÚÝ|ùêþúÉæ‡_ì\ûèC!€ÙÛhiþ{°ü_n·/ÕŸAÂo]S‰­ ÀN…Õu Þ2@tE§Dq_ÑsÜFí1ºvpÌ9çɱqÎE«.¬Ú]ivª¾”f@‹>0éã–4Þ=™aÑj9"À—K¾1/œ¯ÂŒww½[‰kH_ˆ[} ÄCÞÿá%âØùSÙîMÈšJHÆ»Û|º®ÚÐ!yc²$óØ@?=½Aß]2‰mþ¸­!g´›2啉) ßš/I·-6'ÃÂ-‰yC Ç»ÓÁ—f¼»´vž²w—Êg¥×ŠÓ‰)ޤçÄ;¡iÿÄ¢žyšÚ_b®BùTcƸFuû Ö0´ÙšÂÙ‰›ô³°vž3Þ݉hÀÿ…îX'øKfæ/=Þ0÷%·îÓoœñîÂwÝYw$ú†o¨:Z Rè=¹¯Jd¶mÿ,˜îuÚvž¯¼ôÐQÝûZEI„é`Æ»›ðI= à¾[î]U]СßvÓ’Ö ÷œ7ÜzJ7s­1Ì ®~Ø™š’.ufÛxÔœ1Ùýeî›–[9l§c3RßÂqBè»§¯»`¼»4hÂIè7ßÍr;µØÛ˜ÌAÛw×Õ6ŽÍ˜7xztƒLFçºÃƒ}“^zús0ÞÝ_ØËž0ãõ8)8‘ñF÷Ë÷m9Û«®ï±PƒÜÚ;éþwªw÷×O]M¾Ûôxwð!ë§®¶?¯ý¹sTëÚ3§®ýéóºW]ëê3­kzxÃõ̇|b^˜ø;ki„%¨ŽuXòÅ€H.ùRË™y›“I•}­:Ö4ž‰dvhýùwE2¾À Àõ í̶ó—3ÞÝU;{çû¾Ïc™XäºQF|ìÌ0ªúBöœÜyЬ†ìxwKòíy€é3¬Å%ã,’1Á¦kŒ©RUU«{Ø—³¹±úª‘Xf0¶;‹\ ¦2]´€œñî‰Àk$üÄ#jĦC™jâ( OÆv&ð!ãÝan» ŽZ•Û~…Ó º¯z-ï®ÛLv,µ'm"@úK{Ö“¬ök‡|dºÓû¾yIìÿÎxw%ئ£ôŒ±rÿÓÿÙº¸EòP\×±ÓÖÆçan¾~zÒYãJ±8’άVÚ"Ô*|Ó!Æ™ñîjª;À7=@íìCºÓ¨LfݱcP§”4í*é6šíÎþñîf@‘Ú¢FöwÕ~©(o¼»é»®ç¤KXv2cû"™Ûh¸›_õŸãÝõJæñ™W+©U™ÖÞ™’Öǰñî*¦ƒëf¨°y²VסÓº½kj†¼ñîôlóÖå:ÿ’ºÅ±5‰gæÒRï 0H-Gch÷ø\²*>¾g¾þ÷om}òp÷Ê §ÿé«uìîàGµÚ «½ ›¸³‚÷üèÎßíÔÐ7Þî¤êQF¼ó±)'¼Zn(ñÖµ˜€@,uçyh—–mH ±|âªðT¬ õW‘¸éttSB5æ…@½yÍñAi¯Ÿºª_º“>$`úÕO]3^by¨·®ùHžtdzÎC;ÖT¥ã)èï.É%{~ò' 3£~§#@w·uŸóù©ËIÆ»ëÚ_»Ñ ¿:ëE7ãqíhP» IDAT c§*¥™BÀ\Ží¶ céÂöÃ7Þ~ ì7 ˆ´Ò«;1x¼»ûÕÙIþ¡¬LÏ|“ž{$ÑG Š÷8©O¡_g¶Ns’ Q'+íRßy{.†w×M7Oõ Šàt÷…{.ýbKG·úÆ»µN&’ñ! ú˲qz“R7¤ÊŽwÌ T/¼z·a[.{KBŠSsËïÐãÝõ”´±)KòÂ8}匴›kw¼ÇqúU‡»v§0ï†x ¸ãÝa&L†À©îu„Ët«–Ž‹Þ<,…»'ãÝ“—ÜŽ Q¬$¥z¥™«ƒn¸(‡„MKª×íÓã=B2xD¡¼Ä|‡ñ«ñî‘ñ!9ãÝEÒlÕ]Ôx÷œAq^b[ 'eó¨ŽPN‡ ¨/K:Sè¹o½Ó‚î %Æ» Ï׿•Æ÷/ßÏêºošÚ@2âÑ7Þ@dÆ»»k€E¦ÕkÇ»;“ùN—óJíèòÜ—¾‘,õY˜õä«»6ºvû—RüÓÖ6Ön¢±ÚkÜo “Þ'O~TëK,­å¤êh÷rŸ‹dÄŽmóú‹²ndXŸ³þÞ’A–vØ ì!;űf|â•€žˆÑ×óÌ'Mo;±ÓÕE÷SMÇrÜò)¥Ow‡®Y"iÆ»KãÞ”€öÌï©Eä|@uÏöEì˜ìº©´•šs·“…¶š3)YèÂzѵ®K¡‚…HÆ…;ý„Í'jÆ»›eN3:N²5ã}=3Ïô0J>½Âñî‘y/L ]¨X{2Õ¶gg_I"ÁÉH¹¤ØéñîÒÕŸØŒ0Œm\ öe²2Udn…†aãÝÝ~2öÏ?œúT)wl\»êV'Ñ3¦z:¤g¼…I_hÀLÿ©¯ÚÓ—oC×v¼»VàÁtÆìﮂP&wÓ)Éö¥÷ÍxwˆÊww^TýfJ3Ó‘è‹ÍÙpÆ»Kã«0.èÙèœñî0±µiîýSÙ¨¯ÌT2HüºƒÇ»›šÊÎ0¡Ç»›¤Ò¶Æ §2cÉb)ciev¼»íâ`ƒöÎkG±£É\€±.œFmÿxwkd;JŸH~Ÿíî´™ô\ jÃÔ$0•- ªÍd¼»®f“ÕÌOö;7¾¥”s~èxwiú®JèIé¥ó¤”üC¹¾­ ûæñ0Þ]w™ÍÚvàõ¤K@èZÅ´–L-`zYYi×sgÁ¼´Éõ šüu£¦Ÿä(Ë@_ÿîD;ÜÙ½Ûmw6_ÿ»¨ à†RÔÄ´ÒQ‹dÂã9ÔF<½N”¶3œådœ±Ûrì uè—ɺ¥ýtù¼DR$3¾Îé<8CQ¸C­Ôm…¸Ëlø±õj"òô÷ $lºÆqîe@.ù0ãÝ Íxw}ÙKªœàÌ¢e¯Åÿ¬ŸÜµf }eN—l×nÖóÊ óe&3ÖiÍÖÙ+€Ä&€­y­·M+º6°à˜bÚEïl÷†U³WÙ:QºsJnD©ÚX‘'}5&€ž9Ò¹­pgû/ïnUÖ¾KÎDrf® q×寻÷͵lz3 ¥C1¤·,mKÏ"¢[Hê¶#©¸áÎéiÇ#Ø@µ1s­5fÖö°ÁTèÎÎ3UÕ™nÂÚñîQl{™¥z¬q³$}{B ¹¿„ÈŒwïï6om÷œñîîÜJúYxp:]'+J8†¦®Tœ®~î2†]l×xÂ`†¹GºÛÛò`yZõûf0un)Ü›Ø$ɼýÒ3ƒKÍxw )Ìxw=ÄqÀx÷ÈzÕhW°nï&Kßï6Þ]½<É„ÓfÃ|¹‰K8èB›^ö#uÇ»«ïH8ãÝÍt&BêU‰EzXm_¹Å²^Ûôxw8ãÝsW}5IÏV8ãÝd é%ê:¡/î.ÝŸKÀžô—¬ánºåÆfÒqµz…'£X¨F€o[6ž‰¡ ïþýµïcFM?ÉQ.G¾úr»ñbSÍV¯ÖwcX­"&¶š«O“äVàTŸµw}*Rí  )¸“©RM÷ž=û bB™OJÙî¶*Ÿ…¬²s~º§ÈeFM‡ ³Í=\iíx9Oã „2ÏŒwÄØJ¼‚Q=sÓ6}Æö“êÊP¥»D! ËÔV¶›«Î…tY¦@ÊQ?­‹ªÆÍ!„gÊãÝ•|N+«©ä³?gI¹†v œ{Ÿg×ÿPÜ}§#„2]¦ îî0Œ®7êÀÔáƒŒÑ }ì©Ì§kÇ߇ToóÜ )''¼çcçÉ>ó„r(8òÕ—Û›»Ø×wŸ ÕÃj\!„Tµ¾ûG÷îo}²Å™h !„ª1ÚL´8lÖÛ þÔ¯¢ X0owl¼{2oWA!¤€!ê~Øëô}+ÿ!ºQ‡¨¨„BƃžyB!¤jPÝ !„ªÑç™ßþœ>[B!äPrº•t«êS÷ÕSœ«„B9ôÐ3O!„T©Í3O!„Ù±õÉÖ ŸÞúÉ[;_ì¸{¨î„BÈá`íìZÉ”ôÌB!UƒêN!„T ª;!„R5¨î„BHÕ ºB!UƒêN!„T ª;!„R58ÞB9¼õ“·Ê'¦ºB!‡€ÔltÅÐ3O!„T ª;!„R5ú<ó7oÝ<¨r²Ÿ¼~åõÜýü!‡”Û¿¹½û‡Äuϸ;Y,^¿òzóds¤ð!„Ì9Y‹%GÝoÿæö,Î~Ó<»2‹Ì )Ã+¯½Ò<ÙšleO!sÈÍ[7³5Û>ÅÝ)ídHÉv¥'„9'× ÙuWÒNÈ“ «ï|±Ã@;!ä°“[Í\ÝÃo:¿¸¦¶_¹ôÊ+—^¡Ø“ùA…Ẅ2eJ©û‡‘rWÒ~ûŸu ÿíŸß¸ýÏ·7~qOæZð„ê1¼Ïü‘#G.¿zÛýóÉ“'%sž]yûç7^¹ôŠ»óíŸß(À§Ú%O—-˜›úi¤Â“Êc;ϳ!¤b Qw%í­S««§š¶?ßiÚUà[͵µskv¾|€}릨Ä6ê:É¢¬vJ;!¤z”ò̯žj®6¬6(¥èͧ»ßÉñrȆÜ=îÿcä6vèvw'„T’ÑzÕ5OŽ|‚ð›Îò1aÿ\>&ƺ+Ë[a…ÜÝ£ìò‘|ønnêØÔ² 0îN©¥Ô}ûóí'ãy¶·>Þjž8mÿlž8½õñÖù¤lk%ÃêÏ‚‚Ù£Ü4öX ù‚c­v:ç !cHÜ] aëÔööç;ÛŸÀ+¯­–—ùAfzøMgÔ™m²'-žÏýÉ=„¿È0îN©*Ãû̧œÕ#Iû 3}ëã­µskãM]§´ÙõÆÝcŽÒN8íP,í«Í¾©æ·wž¬6lïLm¤~nnö¤S<Ù7æÄ‚·aélwôâþðC…_9Æ‹»õM’ÿ _KK™3Tw%í­S««§š¶?ßiÚ.¿v‹8êÇVÈÇzOý)Ý™nç“pë³-_X?ß×Pú:]E/Æ=×~ž—LΜÌ3oÃÒ%Å :j(Ù”í†ÜüËlPv©#d?™Õ<ó–ÕSÍÕæ‘Õæ¥ñSaë³­Æ‹/4^|a÷_Ý¿÷°T1šG¬…­6Ü?Ý_ öäfëʹr =E*g÷ÿܳ1?³Ô ²Ô³ƒÔ1 0´_A¹2¥*S°‚Ã)í„ì3û׫®yÛŸ^>NÝ¿ýߺ&ûî¾J™ïY¬lØí‚=e¤7kÇ—4îsÓ“Y3aÜ}¨ªe÷ Ò¹’ûË+nùSŒQª¡+Y$BÈŒ˜¹ºo¾³½ódŒYYÄQ÷¡ÚŽõ p·r>T×u2béîÉ Õʧ@àSÑ÷QšŠ~PÌIÜB¦È ÕýÉ“'GŽiÚÞþ|GYí¯¼¶:ÒR4ª»çRRà HÉjÊÔ5ºÖsw'„©3[Û] ¼ûgùcs=ó[Ÿmýè¿þp %Ë#åÏêtvO®'¤3:;ÙhµÏ:ä 9pfî™·?겞ù)â:Û­G]í)Ø(ÎaŒS¤vN÷Ió3ÞB¦ÈÜÍUç’òÌo}¶µöŸr&°Ë’êÇžÚNÉgAT¾`£dåO1(s2khÁBªÇÌGÄJçÏ=µ1¨Ï¼›†IhžÔ£4)턊1_êÞùsoëãj[yæwÿ†ßéÖpßúøAÅžVû0?ãÝ !dºì‡º?yò¤dÐ]I{𴎲7žÏÁ1ýOíüíÿþЦ$dBTÜý KA!Sf¾âîkçNo}ü þT@ûQÛöªS„ß…Ô¯kçNH Iõ`ÜR=æKÝWŽ×”l[ÏeíÜi®G&çÐwgd¼ j¾Ôf¸‹¿>Ʊc̈G™ÃhµßþÍíá‰!Uaç‹ñFíÎW¯:BöÆÝ !óÌØ»¹³Ý§ÂÎìv»½ž ´us·¬_9ÈR’ùà0Zð„RL5m÷æ÷ÄÑZÁ6¥p¼;!¤ªTJÝïü¿Ýù§»ï:ï:á7á‡ÿç£(FjÛÿ›•›ôÖ_ktaÉÁÃñR)u¿üêÓPòìêºö­TóÀxü>+º‹}”©íýD½'ø>BŠ©T¯º~ºÚ‹ßÛþ¤½óIØ(‘>¨°ôœªÅ¦[ÚjÑfk×Ó³­÷'µ=è(8+òÕÍ6•UêØì¯ƒ SP¶yfêãÝ]ÉW« ª=¯_Yµ?Ùm»LjÁQc”!µ$cêEÊ}@;sŸcêíJå_|ºAoÑØ‹IBr©Žíž2ÄeíC»½î]s·áúµ/õ ù³±_¸NT·Fs­»§À*8Ê­UËT‘Ù¬ÜcKgc2?LwO™ï7om¿~eUýKýª~Jm«VȳGAî+TðÊ ÝYò9¦šc¼£ž‘RLElw+íwµ÷)v[Û·ÑJï0¡´»"š²EÔFV\³æ¯›>›¸Xàs«ÊqÔ ôÓõì$%9(Æ^ßÝ5Çí g× /c‘gµc@«®øY ýuh('•Ïxþ°¼0„*¢î#ùØ\þ·kÛ?›èŒ¹UÞÐ*Õ˜V=˜Ût/+Kn«¥d†‡+x?Éx÷¬ùŽ<á5ŸÙ‘û('1—í¿L„Pu·†øæÛjž v> »áòÅõîÝû›§.4 Ôþ]Èà¹U`äq)cîOc3Ô¦T)§¼ñeJ’›¦àÀ’…Á`—ÆÜ2aÜ=¥â“ËÇ6ÖG¥øÑS¤ © Õ‰»§9“,3s¡¦¶ï¼¹›ÛgÞŽ§öLK«\÷u*s»Ç5îíÉU\MgÓä˜*gqaÜ̇f8‡ÌÛxw;¸nFÙ•o´eןny!“P)uwÕZ~ygÐv#\?yþ“~R{Üd©óÚă –úÉÕËlæÙÄ©ü•J0èÒr÷çuЩS—œ=õ¡vÅ„óÌgê£ sꨙñ¹Í¯ÜF››²|V#îH^÷‘ÃÒ.$dþ©ˆgFÚëO?‚µÿ†Ÿ`çB°ÈŸ·ðɶ»_±Ï}æÉÜ2jÜ=%ÀÅ=æýZþ¨µÑß +8¤ ñP•-Ϊ|šòg$„”§"ên­vÑþ°×þ°g¶Óûq¤5Ý>pèÖw'„’TDÝGí3?çÒNö®7'°-KÈÔ©ˆº+µVü…_ŒzM@±Ç»BÈè‚Bæjª»|,Ûßõã™õ[_­Ô—eÕŸZ®­Ô†L†Ãeµ+D „”¡RãÝ?÷ÂozRBÆøj§][^–xŒp·ÝëôŽ9þ±sÐe$ó„ãÝ !d>©šºw¾éÕƒåÔÎúЍ_õåú2€þ;Ì“F² !Õc®=óîlVeÆÌ„ßôäcùÕN€ìFáwaû»€7~þC›æ½ÿñþ…—80 ²Hº¸;!„”d~ÕýÈ‘#—_½íþ9Tà{ºBøäãhû»½¿ô¤ŒãÆÏn×þïe)ÛÖ_úa¶ý£båX:?£Y0 ^¶à2‰ô¯"CFå0ÆÝ !¤ sê™WÒÞ:µúú•˯_¹Ü:µzû7ÛÅëL„ߨ™èÐíöäc©¤=‚Ðëv¯¾ó†úuYÔ¯G^#n<”ô*¸NƸ;!¤’Ì©º+VO5W›GV›GVO ¯åci·ý£BÆ1àÁ÷b Æ{ÿã·ë/ý–Ð}Ô˜Q?Ù/R{ÔFîzÙ•9åàîôna Šš:– ‚qwBHõ˜ku·4OO#e´ÚzFmG%öˆÅFõ÷’Ä?øÛÓeΛµ¼smq»³Œ”ææàîI-Ëf÷» VæJkµÓ9O©s­îÛŸïlœèöÃ?© KáàÁ‡€€îcãßÃí˜f·ù™*èHÑú”eOi/†V;!¤ªÌi¯:e€¶Nmo¾³ý9¼òÚj±VÕ/·ÿÜUÛ½Nw¹Vëý5RIã‡!ÿÚm?êùGÅl/à  –ç™'„T’9Uwwÿr@vGóTã·w?Jýî­ÁCWÊ^/Z9^ŸZA;ÀSÚ÷ÍON‡üHL±çüÍ[é… ^¿²ªv–\²}ŒÓ¹9§ P|Ò± –{™£f27om«Íî–RæWÝá|­GE·+ëË€ð¥ÄÚÙÓáŸÃ^¯+#ˆ¿õ•z³¹Úëv¿¿¾zûWÿú‰ücSí‰Thým[ª‚r–Ì!·$©_‹,™-q™úx÷9Ñ[ +‡³;Ë>œÈž%{jBÈ æZÝG¢ö”¨?½Üþ¶ýýõg¾Úi×õ§û$¼×í†ß´{ë_ƒçëÙÁî й:ZòØ’9dûջ톡–LL²ìóxwWõ³Z•«^;‡*œr¤ìÝTV©²¹ŽqÆ2e³Ê=Å cÝS¤Ž-ßY(ª£î/®ôþÒýð_~/Gâ¨ïþÔkwÃïÚˆåʳõÖYŽo&š±ãî[Ÿlew®]”ÞÊ’kææÊ§Mã¦twÂQÇ’äæŸ*›{¢ò9g)¾(÷ŒÙ‹Ê¦,na ºoٹϋ9ç­Ÿ¼5v¯ J©;€ÖÙÆÎˆð˰öÔ2<|}õÁÿ÷Uû»vûQOxâ…“Aëlcºg¤‰|ØÛ‚ë'oe³”x ²À„Åè?Ò‰Iï´Ø{ZÞž(û°™s6ÿqs’Ãç]ÝÇÐÎæ÷‚àØòî7ívؾýË·ÿcw¹&Ï×_h6ròda™<î>ÝÎöYµÏR/Ÿÿ$'šº÷{ìkÌö%T{Üv ‡EEcÞÕ}ø¸-¦¯_ª7¿GÏÿ!ã•×^Q¯·ŠÂf{Ë+™/ã«ßúdk’‚Y¨#—’”¯dnÞº©j6%åÝ»¿õÉm÷át¾ëì~ÑÞºJÇ\ðqxp%"Óa¬öù„†/!‡jöª›"wÞ½ßk£ûXú^-ÂM@öº]22 8Ï|.û0Ã!d¦ÐvÂ埭ËÇðáJ;Q;z°å"SƒjЕgÇ»BÈäPÝóÙ¸~38V_;»Ö{ÔžðÑàÉÖKÁþ÷Dt=ójj^µáZóvO6å.E¿h3çÓ‚'„Tö™ÏaãÍ ¨·Î´zÚâh- ÃúÓõàxðö¯¦0ÀÝQw÷âµÛ‘Yñ}ŠøÜÄJàG½–ÃÎÔ×w'³€m/²PL«:¢º§Ùxg½FëL£ÓéÕjµðë0hg§i²çªïPqMµÆã’M‡aÞæ™'ƒà[dAØùbgZcté™ïCIûúùÆý:µZ­ým'êÁ±ú„ÒžëQŸV/¹l—½âîN×a°Páv ãî„ùaŠž*ª{ÂÆõM9®#=•¹Ýã÷ƒödÊ,Œ»BªÕ]sç×wWÄéõ—ÛŸu„ç÷þÚ½p)ŽB”’ö”EžÚã&˘»Ð!®Tg3Ï&Nå?è¨T‚2—\8ÞRU¨îœ>lÿ{zÝî…K ÿ¨_RÚÉ!…V;!¤ª°W¦FÂÃòñîjP¯«—tÈÏ!‹c|OÎTæ™O-¸2áú+³[¾Å.Ÿš*ªKjmÖY`œ³(!£BÛÝ£×îúµvÔ›'›‡WÚɨLË‚ŸîâèSÇ*kjuw øù_âeÑ:…26´Ý`ãÊ’ù>^þ³Ë| Š; ”9ÖuéÏ €„,.´Ý‡pçÝû¿ýåö‡ÿ²ˆ;” Wöº\029û6Þ} É/8dÞìÝ’åIÅݳMy».B5T÷!\þÙº| 5¥ë>Ôìf¢vô`ËE¦ÃÔç™ÏÔÇ3LSémVeìã‘Gî)R;S)sïÌìJHÈ‚CÏ=  ÃIDATü6ß½S;Þn`tjOùAÓw“egØpÇídûú,çZOnVÓe§ ™|¥¸”8åö˜Ëí;V>eöÏÜ=SI\\ªâ ‹w÷%,©ñ‹ö~2´Ý‹Ø¸¾Y;꯿ôƒõKu»³u®¾þã`ý|kèჂ˶[°jÜt×”#Î3O©*T÷l\ß\Y©¯[ë=ê !g%€µsÁÚ¹FðìÊHYÍB•SëÑÙ=Ȭîên:jÐÕ†óÌBª Õ=Ÿë7ƒcõµ³k½G]á‰0 žl½ì4Ã][6»N¼•䡯}ÁQjÏÐëª×w'„TÆÝsØxg3ê­3­Þ£¶8Z ðþt=8¼ý«) K­­þ$³ªú Ub Bõ©ÄÅŸ›x¡~M1yÜÌzYª{šw6Ñk´Î4:^­V ¿ƒFÐxvš&{®ú×Tk`<1.ÙtXf=Ï<™ Ê¿rû7·º „&¨î}(i_?߸ÿAgíüJûÛNÔƒcõ ïSÊ£žûÓä™Û?³ 5È‘° Ðj?,Leª`B ÆÝ6®oâQcý|ãÁg¡îß ëA-x>(9Ÿ¼Oí™–jºŽôTævkÜÚ“=*7F°0îN©$TwÍ_ß]§×_nlÖžßûk÷Â¥ 8QJÚŸô“Úã&˘»Ð!®Tg3Ï&Nå?è¨T‚2—\Ó%„Tª»A§ÏÛÿÞ‡^·{áRÃ?ê—”vrHáxwBHU¡ºk:aôàÓ–Ÿí®ým½~¬¾²2Ú öùaьﱡÕN©*ìUgˆÑkwë Aód“7fA˜âúîdÁaK‘L…i¹)b°qe ž¬½‹¯^<è²ý†=çÉ´à°=2!;_ìLËÞ gV@\~“Ò¾X0îN™+¦è¢íet=ü¦óðwa÷/‘X–ÁÉúéV£äH92·Ðj'„TÚî¥e'ì¶¿z=tBñð^w÷áAŠLŽw'„Tªûp:ßuv¿hoÝ ¥Lv>ø˜ê^ØsžR=è™Âwï÷Úè>–¾W‹°ÀG½îA—ŒL̴晿yk;µçõ+«“dXætö©?‹r)_È’§(HyóÖöëWVËç³ÿ—M•¿|n‹B²?ÐvÂ埭ËÇðáJ;Q;z°å"S`ºVûëWVÕ?äIéœ0^!í!ãaO4a>KùÛ•]j™ý‡¶û6ß½S;Þn`tjOùAÓw“å.c·³í÷‚¥_ òÉÍjº,ÚZ2³ïîJ‚«©Öu·sŒaaw`¶Ås£„q?èÒ lýAgoç 3æ {¸û¼æÙAˆ…¶{×7kGýõ—~°~©nw¶ÎÕ׬Ÿo =|PûÝ®ÏV&1ú§¬§)0ufwWîÜ\[ÙõôÚíÜ£ºF=ÐjU®xçÊ^*q¶½’=d¤¢Ÿe¼¹gÌ-yñხ…yƒ¶û@6®o®¬Ô×þóZïQWÑ8+w?kç‚Ö¹‘×zŸÅúªÙÀž»|\êŒî´¹GÁY€nqÌ÷é®ïžkða€$¸ª™kŽm M9Hà ÒüjÛFSÉ­8M¶äg§ÕN´ÝóÙ¸~38V_;»Ö{ÔžðÑàÉÖK#Kûä¸kËZ‘NYóvOq_pÔ“þµÞ÷ëʘYÄÝS;çÍ‹{óÖ¶ú‡þRÙó€ëÕÈŠî¬ËYpvB´ÝsØxg3ê­3­Þ£¶8Z ðþt=8¼ý«Æä™§ÖVϵ¡S‡¸Šîæ“›ÿPÏM¼€ ¿*¦wWVàÔ»ˆ»Aú ‹7Òþƒ"å?·ÅÛŸr:;!‡Úîi6ÞÙD¯Ñ:Óêtzâh-ü: ž š/Nsf:kˆ»;³+¯§HɶŒ/êìQ çÏçx÷”ÕèÆïG:pÔ“NxøØÇæ£`|Zö\“>\ãì„ÌT÷>”´¯ŸoÜÿ S«ÕÚßv‚ «OèãÈõ¨OKV³]öЏ;³A÷…bFóÌ[ËÏnŒ!¦¿›m6ͨ>ƒT!‹ÊMœºÞÜCF¢ø,ãí,>Q¶Ä {[¦üêkrCi„ì?G¾úr»ñbs÷;6u ¼ÌÑÆõM´ë/7| ø½(Zÿq=81Üjäñ¶ÚdO2ÞŠûÜeòÅýãÜÜíÉÇÿê†Þ_yíõz[W|jžyeÄ—û­O¶ÞúÉ[³J7¶?Þbü–¹-XyÊ\ÂÍ[7¶ò$ÓBÕQªb)_ÉØwOIùG÷îo}²EÛ]sç×wWÄéõ—ÛŸu„ç÷þÚ½p)()íè÷xÛ°zÖs>(¦^ìÏý37ólâTþƒŽJ%(sÉÕ€óÌï‡Z×-Õ¸ ²8°WA§Ï> á¡×í^¸Ôðú%¥jæm¥¸Ã8n(ó\¶2öò“„ê®é„Ñ„ð°|¼»ÔëÇê‡w×…2¾'aºãÝ !d~ ºbôÚÝzCAÐ<ÙäYæÍj'‡ùAŠl\Ù‚'kAï⫺,d_™õ<ódqPï;Ö‘9ê+Ngwåò›”öE„<™l&’ùêet=ü¦óðwa÷/‘X–ÁÉúéÖ4ç·!ãÂq¥e'ì¶¿z=tBñð^w÷áAŠL £¤„ªBuNç»Îîí­{¡”ÉÎSݫǻB* =óC¸óîý^ÝÇÒ÷jvøh²×=è’‘)Á¸;!¤zP݇pùgë¯Ý÷áJ;Q;*‹$óãîÅ0lAæ~³C¡ºaóÝ;µèíF× ö”4}7Yîòv;;½LÁr®ùäf5]jÝ ZíCáø.2‡ì|±Ã¬Caܽˆë›µ£þúK?X¿T·;[çêë?ÖÏ·†>h!8»rL™Ä蟲~Wr›)Œ»rè W© T÷l\ß\Y©¯[ë=ê !g%€µsÁÚ¹FðìÊHYÍB•³‹ÄÛ?S«»ºÛƒŽtà"Àžó„êAuÏgãúÍàX}íìZïQWx" ÃF#€'[/ûÍ8â]'ÞJòPã¾à(w•ØÅñÌÏh}wB9p¨î9l¼³[niõµ…á·aýézp”´¯ŸoÜÿ ³v~¥ým'êÁ±ú„÷)åQÏýiòÌíŸÙƒŽJ9SàÙsžjP<ÄcÑzÚSÝ6®oâQcýåÆƒÏBÿþÝpýÇõàx D©ùä³£Ú\øTJh5Øõê§üüe6²G¹…\™ŸÖx÷›·¶¼~eu:Å| Å´NtóÖöHY-΋A/â}óÖÍ”ü¯6ûÞÿímTÆÝ5w~}wEœ^¹±ýYGx~ï¯Ý —‚òÒþ¤ŸÔ7YöÀÜýƒq=óÙ̳‰Sù:*• Ì%W€Ãw·­%Æ®ÒO˜gym$Y¶w¶Õ¿ƒ.È”¡ínÁé3ÁƒOBxèu».5ü£~Ii'‡—™ÆÝs îìN+Þ¹>€ÔN÷ׂ¬r³MmÀ˜ïC}¹34RI\ƒ^IþÐ=êOÛ>°–ÉjvÐv×tÂèÁ§!<,?Û]ûÛzýX}ee´AíóÃâßSaF|®Á]`…[?yI«zTƒÞÍ?·­Pß(² XaÎcwgnšQ³š)TwCŒ^»ë×ÚAPožlríöE`®Æ»Ï4l_œ¿m"²€¬6WÕ¿±spõ;eÇ ôÌÀÆ•-x²ô.¾zñ ËBöö–'„Œ§Ä%[“4&„ê+Ngwåò›”ö…ƒãÝ !cP²Mp€F<=ópùÍ‹oßZ+N~Ó¹ûoþ|ëλ÷·þmG>æ °aNzÎ œ§Âê7om— ÌÔ%¾dž„Ö¥Ÿ ÉJ¶ŸPÝK!ËNØmõzè„âá½îîÃ.™”éÆÝ•FZ¥´ªìþ™»Ó”a`ßõòYeûÍ bŠƒë© V¤ ÂçeÒ”O6;è™Nç»NûÏÑÖ½HºÚ=ø8l~¯q€¥"“3­¸û )ÍÝ_Ü»m¤ŸŠwævŒÏÝfÏyR FõÈ÷¨{&9pFP݇pçÝû½6º¥ïÕ"ìðÑd¯{Ð%#Ó€qwBªú–‹'£](¨îC¸ü³õ×îûp¥€¨eܽ"xÏyŽF#d*°™î¸û6ß½S;цM#í¨=åÍe7YîÚ-ƒiͦ/H|¤ŸI¯g 5Ù\w'„)Bu/bãúfí¨¿þÒÖ/ÕíÎÖ¹úúƒõ󭡇Û)ܳZžÝ9(1ú§¬_(õ5sÒ[žB¦Õ} ×7WVêkçÖzºBˆÆY `í\°v®<;Ú$µ³På¬5oÿtÿ·?5èÀÊ£bu] B™2Œ»ç³qýfp¬Þ:³Ö{ÔžðÑv? [/û_˜ÜµeS ¶ºKÈä3è¨Ü= ÂÇÝçº79¤PÝsØxg3ê­3­Þ£¶8Z ðþt=8¼ý«) ³ò™Wµ1h•Ø”îRñb?A6`—~_4QÇôÖw¯*ì„LÈá…êžfãMô­3N§W«Õ¯à4ž ¦x«rÕw¨¸¦Zã‰qɦÂ@«}(ì„LÈ!…q÷>”´¯ŸoÜÿ S«ÕÚßv‚ «O(í®ÛüI?“¹³]öЏ;]‡ÁB…Û-Œ»B* Õ=aãú&5ÖÏ7| àþݰԂ烒«ÁfÇ­Ù?§e»ŽôTævkÜÚ“=*7F° 0´L©TwÍ_ß]§×_nlÖžßûk÷Â¥ 8QJÚSyj›,{`îþA‡¸RÍ<›8•ÿ £R Ê\ràxwBHU¡ºdpúL°ýïxèu».5ü£~Ii'‡Z턪Â^ušN=@ËÇ»«A½~¬^Ò!?‡,Žñ=9œgžRIh»bôÚ]¿Ö‚zódóðJ;Zð„êAu€+[ðd-è]|õBó{Mz4ÆÝ !U…ê+ .¿yñ  BöZ턪B+ÊèzøMçáïÂî_"±,ƒ“õÓ­½÷€qwBH%¡í^ ùXvÂnûÛ¨×C'ïuwÿt¡Èt O©´Ý‡Óù®Óþs´u/cýÁÇaó{S˜vž Óšg¾L〡}BÈ~BuÂwï÷Úè>–¾W‹°ÀG½îA—ŒLÌç™/^jeç‹úÿ !û Õ}—¶¾ñÚ}®´µ£ò` F¦Âãî™Ü¼u3+ÿ«ÍU÷ÏííA‡«” Æ8j¼< !‡ÆÝ‡°ùîÚ‰6<øhiGí)?h.»Ér×nIM;_¾ ñ‘~&½ža,Ú$ó8 ¸»Wõ±'„I í^ÄÆõÍ•§êkçÖz­îýn«­sõ ±<»2ôpw]–ÔÒì©å\ £î¹Å\ªuFÌÏúî® íÊ|ʶNܹ)³F¹»'×dÏæSPBÈ¡€¶û@6®o®¬Ô×έõu…³ÀÚ¹`í\£Œ´»Ìb}Õ¬5oÿL­îên:jÐÕæÀ{˯6WS&»kÓ£_eW›«îÎÜ”vgyO@ÁíNBÈ¡ƒêžÏÆõ›Á±úÚÙµÞ£®ðD†FO¶^ ößßázæ³ëÄ[Iº`|ÁQ®/a¡|µ¾{ʶÎ㔸Ž$´TeBª{ïlÇ–[gZ½Gm!DømXºÞþÕúä™§ÖVw÷§ÖY·drEžnŸÝ=Ê®ï>ôÀ sP|J¼Ç‹»jT>„9q÷4ïl¢×hit:½Z­~ ñì4Mö\óz¨¸¦Bõã‰ñ æ3œ?q÷ »ÔMËF§­OHÅ íÞ‡’öõóûtjµZûÛNÔƒcõ ¥=×£>Ô‘^>ó‚?s÷ bŸEÏ€ùçãîelåòöô ø}6Ù´ÎH™s¨î ×7ñ¨±~¾ñà³P÷ï†õ <”œO>;n­ÀÙ>Vƒ­G=åçO÷ƒödr“-”ÌlÜ]©©ÛÝÝB“:7¥Ý™ اvçC9ìÐ3¯¹óë»+âôêË+ÛŸu„ç÷ºÝ ¯5êÇêB”’öAï’É äÐè¸2gÌ&zÔúç§2cÝn€A:šÝ?¨o]ZJYüëвB Twƒ NŸ |ÂC¯Û½p©áõKJ;9¤L+î®Å“ÑBÈ~Bu×tÂèBxX>Þ] êõcõûÀëÚßã1Åyæ9‡–¾W‹°ÀG½îA—ŒLÌ<Ì3O!³€ê>„Ë?[ßxí¾WÚˆÚQY| ™&Œ»oþãætËC!Ó‚ê>„ÍwïÔN ·]€ÚS~ÐôÝdÙÉäÝÙÚ³ÓˤÒ$NÍú>ë™jm±8wc.š·~òÖ,ÊC!Sê^ÄÆõÍ•§êkçÖz­îýn«­sõ ±<»2ôpw]–”–§–s-HŒ~E_4õÝƳà99!dža¯ºl\ß\Y©¯[ë=ê !g%€µsÁÚ¹Fiw™Åúª©õèìdVwu·5èÀjÃñBuÏgãúÍàX}íìZïQWx" ÃF#€'[/ûïïp×–Í®o%yè‚ñG¹¾„Åñ °·–°Ûþ6êõÐ ÅÃ{ÝÝ?†](2)´Ú !U…ê>œÎwÝ/Ú[÷B)“>¦ºWÆÝ !•„žù!Üy÷~¯îcé{µ;|4ÙëtÉÈ”o}wB™gh»áòÏÖåcøp¥€¨=Ør‘)Àyæ !U…ê>„ÍwïÔN´áÁGÓH;jOùAsÙM–»vË EZ³é égÒëÆâL2ÆÝ !Õ…ê^ÄÆõÍÚQý¥¬_ªÛ­sõõëç[C´œZ²eÐ °¹K¶OqM9â¸;!¤’Pݲq}se¥¾vn­÷¨+„hœ•ÖÎkçÁ³+#e5 UÎZóöÏÔê®îö £¸Ђ'„Tª{>×oÇêkg×zºÂa6<Ùz)Øÿžˆ®g>»N¼•䡯}ÁQjÏÐë*ãBuÏaãÍàØrëL«÷¨-„¿ ëO׃ãÁÛ¿ZŸ<óÔÚêîþÔ:ë–ìB®È³Âmââ³»GÙõ݇XIhµBª Õ=ÍÆ;›è5ZgZNO­…_‡ÁsAóÅiÎL—+ÌÙ•×S¤Z¹ëÇ%{Ô‚‡ów'„Tª{JÚ×Ï7îЩÕjío;APŽÕ'ôÆçzÔ§%«Ù.{Å Ü)#~Â’RhÁBªÕ=aãú&5ÖÏ7| àþݰԂ烒V{vÜZ³}<¬[zÊÏïž«`Oö(7ÙâÈ<ãBu×ÜùõÝqzýåÆögáù½¿v/\ ‚㥤=e‘c€ç<7¦ž»Ð!)z*ólâTþƒŽJ%(sÉ€V;!¤ªPÝ 28}&Øþ÷<ôºÝ —þQ¿¤´“à ãî„JBu×tÂèÁ§!<,?Û]ûÛzýX}ee´AíóÃâßSº»8¬«Ünnù»¸k¾•9¤Lžhwº‡—,êa=ç !Õ£‚¶»ô bñÃ_üè£+]}ø@<µÒëõpò—ïÕ:ÞSµ‚Åa¬ùžkgcÕ%#Ó¹nðÜÜ0ʬcR&·lɳT@ÔÁ¸;!¤ºTPÝß{þ¼ˆÞ™k?úñîܺ³rl~qÀ$ë¾M¨ ©Ö@ÉFÀÿßÞ»´Ä?¡Ã#tСàÛ"tq t¨Ð) ä9fÒÔ© ‹-´q‘<ºu3‚%Ýjÿƒ.-Ö¡Á%C¡‹`ÆO×KÞå^Ì™¼ßû~Áórïâ/¿ûÝ{ç2¥™”ÏB€Ëu‹Žº;©®Ì§*•Jû}»¹Û¬=© ‡CÇW¹lJ׫Îiç©w×§+óú˜c/gŸFÞëÚçc¿´{‡Çsæˆ$9º'‚ Ãpxíݳ$T¯O=ÈØÑ,-Y5‚™Lɘ›1”½QÆ–{êîä¸2¯ ×Âø8‚ ’çF8#bYÖÒÆ‰ì£YZôÍt¯èÞÓ>7Ë ‚º¢î@.ѽÿ{`´Ü\ÿþ1êÝ?½½˜÷P$Üï@$QÑ=çíè¥ÈàH$W…óÝHEtGy±[€TDw”÷»ÉcÝýè ¶wxñºåïê€#êîäñÝâæÞöÄ>xÌ÷»ÊËÊ|ü®ÛÜÛ®<¬$_J©æn3ýž¶7÷¶'æ÷€?ÔÝHå+wO‚z}«®”ŠQÔˆN>Ÿ$ß»§]¥TﬗuÎ:po¸ß€HëîýËAk§Œ“p®kí´ú—ƒ°:þÀ¶Ñ“R-?º¼\ÿí]¡*ã±ê0Pw ß§Ùl¬×Ú‡µ»Œ`9mÝ]®(êî¤òxG\Vj>‘å<Ó46§g”¥íj$M·N::‚Ñ2ÚGoÌýWañPw •ß•ù°ºRߪ·c¥ÔËWÿmO§£çßz¼ÏÊÑGƒñØŒûUXº;‘àÕhÁ;³ö`ùá"éÁìβ­‹™…9t$Ô‹-ƒ ]°U°P º¿øý"òOeeý¯îú}¤ì¬ÌˆÈÈȈoüâg>ÿôŠ¢(Š¢(Ê‚¸ö]´žÛZtJEQEQV‘oÝÑGŸ.41Š¢(Š¢(«Ëÿ±è(Š¢(Š¢¬:QøÇö«wǤ° °t@ •cƒÔ­±°Læ& ‘,R¸?&|$—µ0HX6W§.I. ©`#kRÎ w`2Q¤@d!NM6Š:²€‰S6‰ €¤‘‰%@ ܯô#b¤ ä<âàÚkbô!Ǧ ±k.0 ïþ”D›Hé b›Â AKÆ—™¹¬^å@j¼ÁÈX°Æ½8Êg 5ÁëvYkS “)\Yò™› _*Â3ü~©,+¬MÝOADÖ¦TÀ|\qŠD"åDº¾ƒ1L’°1_ŸÀ Bœ)~6»p功Ëú2L×s¤î£àœ‡”UÎ ±M Š-‚ƒŸAŒ@‚î-§‰+Z2+OÁ¤ô–a\t‰‰bd>*WÂo™oéuЛJ-¿2¸RDôÔ¬»‹CàÚÀ]ãË-„YÁQû¸,ÊÆÈ E ›øoÍ}˜ò‘ưI ÀÐKtŸð“ô%S€5$°è›x €Eß`Í¿š†>|—3ôSTû¹š'¨ Œ+“tʧ;ï>+ÉÆ ^òŸ°œª)F”ÈCRFѽ&ŠÝ{ô¯,F‹$Èpª1¤®Àø3” Qð¦@Pi¸°»˜~l¬%1Öbƒ$¨^¹ŽÎHÒ8S§x}`9WÝ‹³”¬¨¸9±Öå•G)¼¤Ž`]frÕŒLú¯'*|6€‰\KO™oaÙà r¼©1à’@RŒ[5›ò»Ë6cY5fáTuøÒ3j 0 ¸~‡…{M$Ål„ŸU¿;êú$%‰æÅŠ¡Æ›#•¾JVùæÓ¦0QÂo!1œŸ&(!RE†ƒH¥ÎØ&¥ƒiöO¨:¦/‚ã+‰ðS%ñmM–ù~C Š›:9BïÂFüõ¹&ÇZ¸'à¾Æ°àK¥Š°F$ Ë ˆS&‘Ö=…ë ‘Œ‹ 2U9’¾¯YôMÄ® qj,q€>’5Ä‘Eê++R̤ÖÂò‹¦zÉr½D} kS"€+Æ\6\8uÅ ¹à>¢$üšø|P(I)«±4þ,»Ä6&qÄlêt9ž"îé FDïËEm#ÎÎc"kRkaldÝË’7Æ(4×뎂N‹SÛ`ÁçzGˆ R×$'"SM¨±„Zôloоý8â7ÈÝÎL§‚ê½€áÌdæ»1*Bõ ¹δ&\mRy¢®S~§‘/3.:ßÉt½ׯq:Í-‰HI-%¾JCðUF±SÛ^ðň`#îÝÁõßèƒ4ˆm ‹Ä¸>b]âͨvK•¾h2ƒ5÷ Y³€j‰û¸¨¦µ€qž”ãŒl§&¦šjT'ÝL ´,µÂ±<`Q–(J’|ïãûo½Ý}§ýúËÍ¿X·¯¾_­0}_­ðáYêãrcCÕ(ÕìôrEÏÅNz™©¯ò‚Þ0¨Ú²©ED_‹Tâ–ÛBãºAçÆTX/š Ü ›Ô•Æ6‰¸ˆÀºŽZê‹ =i ’_ôå»ö>æª3¨ûîÌc\Vb>àv=« èK€ÄRùFŒ>ÌZBÍ'ÖH±Á¬Q‰ÕâÝ80SQ3BÙj½Ù,l>sõ>÷Y©PJ“ÆI-h„@1ºòà¬#Nþ¦‰qÆVAEÆM©1)g8l¶µÜˆÊÓHW*(9)Ø2dÅ´ ëJ}ÄÜ&qbùówÆ­îžÐõÙÜç×ÕN¸­åz¤¶Ý›í›x 1,ú #⾉áºõ¤Õ¨ÀÄL$>XOîÝEjmdMd\ï\#¥\Ï„9éôhh”¸ÀõaÐÝuÒ9òåÁ=gÛdCe‘jb#XÄ&…‰ PûjÙ‚(1i4Û‰»ØÕBŒj®Ê7Ô‹ø=¦–´õu,D’J-j]©0†«ÙLgØwÅåͺšß©.×;N¯›:·®KìŽMݱôŸ© Scàö©3M‘’CƳ”Bß´¥Ü®Erà ÃA©56²H­I\îY×TQÕjéØý[¯#W§¹·ìU`l¢@‡ez¨®~q–V ‚Θ¬ß®ËW&ñEÆá¸“/·}‰ ‰³>â5“¬YÀÆ0IßbÍŠ&‹Ý·‰˜[ÿ8r¶~Y6Nm™„-£.±Ôì½nyF:ùÚ7ªUL†oî~ó_÷ÿu¤ë/ýí? ÝR"Èîÿfí½Ù<¼w‡¨1ø¾5ÛÁK¥ª3Ðþ®ñ™»mð^©ªb‹HêÅ+'ùr‚/Aº€õ×»jÝÕàÔ¨(ŒD (!¹cSk¤‡W®S¸VÒ›11u¸ý¨âÈÈ-qÐc&ÃX,Aq®ó X§dÉðÝ_ ƒT—ÐmXK°Ë631Ö`û‰Ô­ÖÙ–c©,ãŒ%”k¤Æw}P—H­ÉõÒRê»ÃCÀZ+ý¼Èи°Xø®‘cg*I-“Ë`cžáÛÃre =ruÍ]KoMä†S-¬a¡ïk†FL€ð_lÎü™'NAZéoS?̽Go‡K‚t9º3ÛÀ²Ô79Üfƒ;Í®é ž‹†#CÞjå{½Þ–Ãõ\c†Ña¥ì{½Œ—°±Øä¬Øf|þÓ{´.C]޹‘¸ÀÇcú’Ÿ¡‡Šw–¨7åˉ—†A“ã,µ0<(–µü9cƒ{×l?‹aî QÞ²½„_SÊ_ÜšA ,Ö÷騀…Ù¡Ø8;d³ Šå†™[qÎ%>imj Œ±œfIÆ&µ6¢î6¸î¥ûmh¿O46 *QRbß”:›hb‘ eï©Ê}îQn{É©<†E7:eOòÝr‡ÄJÂY÷9=65†;xütlTKž°,;ü(ä¿\îÓ'ɯG*Ø*æ2áØ%LÂÕ»ûfáºbL¥J"ÄÔCĽ ò«Rðl`bàŠÆðÇ8Ñ^ÞdîÞ•ŽŽzŒ ‚¦”Ñ Pu¹rø"h¸{iè¿”Är×%IܵŒb¤Ygþf­·©ÃD±º”ÛÐÔÕ6MLäê#Mm8Yö¯!¡®oAÝ›¾•‹Þ޳^GHRþlS r6¸wí{VðHû ªWÉðÁjÌ_YsæâÞïúIîJÙÛ?[·?¹iÖ×{¸¹na-–€*h’D6ìÉ0âÁ®’¬õÔËmãJ€1ÜÏî~ú€Ö5Dê}ña’šzOª ¹Ñ"«˜#°SHÆì!/>lZ²‘JqáÆØ}qD¶Ä$Ô"2œ¡"0‰G6`DÀ¿ ŠÑ‡°ÓÙÉÌl– c””µÀj4`îb·!÷¼`Ã’K¦¯j],÷\ÙÈDýbQÆlc½®U|6øDƒr°%ƒSERŒûÙð‚8kØ7Þ®†v;gŠ€N…o5!&ŸPCH?;Èð4¬Ö HŠ¥,ŤÒOOCÕß·uìLL%‡U©áŸ üÈûBÊ>@ÒùŽ\3ì©Ì%ÄDÔ*'ìIÆoÓùq2]…› r ¶ ˆ0ÊÙ ²MŽ´%A×…˜ËOiQü 'µoR…¸–)SÁ„ƒ>œÆHqV ‹¬1;ñ-®Ejùe‰øvÃÍ LÒg Jß&k–ìaÉšLq¿º>[?,6ÉŸ˜÷:õ^V¼ÉCï.¨ãÛLJ7ÝÓ‚{Þ¬½ŽÒ¯üµ¤À’ÔŠWP¤Óõ°S‹ˆ‡K‚ôgF0Ã6pŽ>Þ˜‘Wq®cÚO°¬‘>K°ôkûò}õlšˆêʶ÷0¹ú1$5ˆŒ¬ôõ]?Œ^«p RöÙ§ó«îx‰o·¸aß.è Ó+ãËXÃ.kn_Y7ˆà~ ØÈ˜Þ˜Ç×sÈ~0ôŠ“È;€»&6÷ªÙêÉãS¾ÒO]“ïÆƒª„Žcׯð´¬÷1ÈHùHï%Qö}„Y¤–òàeVb‘©d8¯Ä™A×”;Êil‘¸Ä¤l”Íy¢¤AJä%’ެá;{Fʹ-ßoð|W\*‚2 @LÚ™ =Íy8ØÌ·Ã…*lÚbú$—YÇ‘\Ã~*°,TMÜ7X³Éš•ÆƒX’sI^CœeŠz}ÎxÌ:ëÜ[ÙÅʉKH„Ìí“ ;by4Ñ»î㢂‘¸v&’ò@Ù!~‡Îz ãšØ¦‰Ÿ Þű+¢DJ¦¤DÔ¹/!t^ž‹­eA9ž.(Ž_æ'[”áëOç IÉß,õlÉ âucI`´vï.òÖ.@)Æüú\w=(o\Ò®Ó,§ y*ŸEFÆa¤×#oÐõI‚5f‘uª‘ARo<6c”€Ô\ÏóHfà’݈¹çF³4uöÂá&jM ”®ü8ÛŠ7»Ä¾ïàÂá 4Úÿ‰%kHèÓ“5 ÷Ú>!r-òÝààIÅø³Êl<ûüvNÌϸìÅzcì¾´ûÍÝožß9ûïo¿¼÷òùóçw·WßøùWã*Óˆ[Y×#ä~6ÛHèWâÁ ä-2œŸIÔ °È°ˆ°ñüõÆó×%D÷ð¦‹u(Cß5„¯Ð7œ÷ºGH‚»bW€LÐ9ó=f_àÒ°cÇ#•Qà·‘Ekï[ƒElû³Óч]s½³–˜>ô{+#äsá@fóÑeϵ´Y›oöŒXyÚYJhÂ{Wd›¢ 6Aà%ÈkŽÎºDúÔe«rwÆU[`Ùç,ylÃk­£[²&üìé¼SQÁëN"‘b\8Ó&û æ,d|±oGyOÖ¦„‹²î'X§WÞW0±›ÐDo¥0Î6Ûˆ„xŒÈ‰°àÊx¹9Sb¡ð]ÏžzÒÜYrÂÈP{e rë4öd¼,ãY›ÀÕÌFÞyˆûÙ ùÁµðÝENš°‡M5\¤€¥ü§Ag p9âé]Ctè4Ö·â7Âyg\ á¦Ô_VF¦…ÐÈÈºŽ ²µîyÃÊ“EIN4Pƒ‘O e©—òìë ¶·pøn¡ ¬ nöà̱.:‰ðe˜5§ÐFlçóNudUb[ßåçµ³,­O’«sÄOÈû¤<5Ê» ˜9+6lº€+™Ô½eº=v}o.ºm,x@c¸Å1Üë°~|Ù[ 3ö*z"çø•/TǺ2 ï+Ô»`çý`tÂyw¤>y¾F­nÒía;eVˆx‹!"8ߘÜÛŒb“Š•‹„|ï2_Ú2¤™eÀÓ*aÐhB¥›hé~ƒ!K_mŠƒ ûZMLŽœKqd ¶pÉ@©‡£¼a%[íÏçŸÿÕ¹ †Þ88½ `p÷ÿ½Û|ªùþﯯ¯¸úWWßûÕ{›››á…l¢G÷÷¹–üþä÷ïÄÏ\3ÈÏÙŒŸ¹F y78¿ÑºN3•’£àäó4yÝOoÊe”Ñ4”É—]w¶7„‘é=˜ \vo6¶®‡j Rtß–¿[oÊË>~xÓ‰ìñÃàšsבò¯;oþûƒ·ç®Ç4KfY"gâ[ºqDßC’ŸeI¥g¹Fßù‡¡¬Åv ès-ìæ]’{‡|HÎO“ Ëü½q•åGÝ;Ìz$€ýê¤Ýu&ôLµÎ£4\ˆÀÝ^Œ(ŒÃÏ#sÏ žÀÁMDdó²\•“'¸ØEæ¦ñççgóIÛqyœ³0¼&öuwꎽvKœ8Wý8² l’š8b_%çb(³¯§& ,4H‘¤dl÷9,j#¬Í):Ig~X„ÄS”ø+#ÞIXì2ˆ2±8j*þÜ:f<”é'žÉ69™FÔº2Ã9Yh›ü~ÞnjØÛÉÈZ9»ÙA)-®Û&ÒÖ› RÀ­Do\çn×Õ6φî³û0¯ÙÄͲ´Ô~Ð`en<šü`Ø~Ãé‰DlIÛOÝc)Ñøi³®ž ¾)÷tîå*þáÂfÕ‹³„ˆäXlÍ# ߬McçÂÏú‰xf.ÛM]¥Â,K ãMÁ½¦ä.klݱ‘ë¹esIê +>dô {O2¶–…º*á ½?c× ¢cç5Ø„©vu}"ãi°<˜â¸„pçÓwõ­Ÿd #<&suh!óÕ—| Ö×Î\Šp®ÿpÜØ·w~g×p×Ëhƒ Ž}H&ú¾ D[‹_raÈ’Ýö7j䆶½Ý4…%éŸÊ1^ÇIü„Ô?? +*v &ðè}qk¬Àúp®ýbÿô ´ŠÕ‘qC†m>Õpï#ç€vûïocv_ÊYÈ2On 6Z×6ž¹ ùý;¤ß7Z×6Z×ãÖuÝ£›Hm´®o<m£uMŠÎFë‰3ºLË6ž¿ ûéMW®ÓL;DÐqcËÌHmðŸr¦qîzcëMLJo˳4¶Þlœ»ŽÈ:íuîúŸž{,ÔÜíÞØ?cGñ¸á°Ôˆqx1}B¤Æ„~ À®¹EÈl‰a×~¬%$×.)ä*qƒ&­$‚e¹Â£ŽÌc|3I5û“!ÛóvÆ XXïi”&LIV®ÑO‘k¿}3Æ–7A¤PزNÎBÝÆ×ºžV RW­Çáàˆ_ ‡åiNÌQ¯ŽóÀ …¤AffÞ¯›™k%^iÆà«Ð¥Ú™OÈÙ‹|€Ü±8ÀUÁܸº_Yâ³k¿ 6BÄ F:Š­7ð$Îd­÷éŽÜ\¶rÙ`”„íÄÁÛe˜#ïùÎe2lcàžÝÚ&Я¡EŠ_mæýÇò^ÄžD’:uµ¹ädL™rG¿€óôw®cá%ÜìËÄ›:îŸ߃÷3Ç3 p×"TÉá—˜Æò9(’{.:–ò`Á °øs’+ ‹DªG+·¿—–²s­µk_ÅQÖ© ¾Ö@qP‘3—’éÚ}†Á,K–øîCæY¨ÆFÖÈ’±©y¤i†MPg¦<³2¥Þ-?fcéË· ›«Aÿh™jÊ€õ´·\r×Qz†Î ˜-ñœ ~EÌLà4 ±€Dì IbÝ{Ö>yô™sîqŒ>d_+R ’ŠBüJI½wD±“ï\¨dV^n óÜmZ[#€:üÑc Ãý ,Ͳ”31 ú.ç¸æ2p#KÎ ..§yõÇÄU³^ìr©ð¹Ç&,K ADXM‡³á+õ[k÷.ìÑñÕ¿ºÚíu¿¹û­NÜøÎkßêt:àê¦äÆ í·™!jƒÝ£wºG7“£›ùÛxLÝÈ^Gî {ôŽXÎÀFi¶¥Ö[1ŽÞ<;™ïfÓñÛÿÎv²DDÛ¹7;oÒÔÜXÖ: ƹ6•Ùª-ɈnJ!ö^?dix2¶@<úc»òá~Vì—Iù®ÂÚ<ʾ¯åÈ X;?ôÌB…d¯þå–CÌÄ⽟ü§ë›ãìv~!1^p!l¨\ãmLÊc ©7E Û_…QaÕ_îpÕ1ç5uÓÙÌÉ^΄Ù$E8fd·¯\…’DÁ.R¹Ë³‹Å °1°·%)7 éß,\œ,²U)Ü:rÌWÊ“ÙÌ¿d'ß ’ú3ÖòÌ ã†¤]šMÖ}3'÷3ïWÌopãáÚuôê½å6,9¼8‚äž/B†}qd€›æÊÅi˜ÿ½dLd)„Àˆ¯!qͰfbXôm’y’°g‹i¯Ô 4sé2€Ìê ¤˜ÌŽŒIu+bЇ)ïŸq C!cÉžáΓó5¿nçàOör×H›4FÛ(™4Hг¯˜_øÀ†u¤‰w&“§’"_ÚMäÝ K46xœ°‹hSñ£òóäu©1¢ÃDñ¥<ðCŠ‚¦Ý}æâŠ`œtKmÖàš“U,œ‹ª[ 2ß<Å;T¥p&R—¸¼×£ 6XÐ+/I¹N£7(u M âÅ88Ý>iÂvÊRïdÈ»ædñe4éÇ•(x¿CÉ(Ï%ò‹ãNab~µ ÄÙ!KšãŒ¾¸r‚jËÌ×ÊæÄ9áeä¼cY Èb²ZŠˆì4+ˆAnÈr(åé½¼÷2½©N§³¾¾~Ü9^__¿ñÿÜØüÍÝøÛoÿ냼gÏ¿÷«ø—ï½€& 'm7Œ(c‘4jIÇ4ñÛ§Ö n¶® cžRc£oí\ Ï_ûâü‘suA°gcëzX›È½ •.°ÄwÇÒxs×ãÌJ’r#“‰­^–™eIè$»^i$èÇXKÐO b»– OFŽýk±ó!€~Ìþ2/F¢­1|0…±²àH(’S/×döµïë³õÞ¯`é—/qRÉ€¦¾Ó„[²•=B¨¡âÈ;Eä*÷'diÄ ‰îŒ[hƒ•_h3óCiAGåÁµ|Ü Äì"&1úuŒ8ih#ŽlÐçF·•“qAO”êÃ÷ÑyÍU¦a£–}_rF&@ÁU”Qb|ÝJnbhá(¸‰“@øD\–ܨގBܾìæ`¥~N›õu½¯ã`ùcàï.h)]E ðâl¤]ɬ‡¬CÆõ©åc^]ʼn!ç( Y¥nÚ¯C–uK’h´š¨¨F'³ €ˆ—_ϼe·ñ%Á›+Xœ…Cù“-¦awÅ&MÈ&jኇ•™•âÎO®ýQbh†x\&Óùíì¯A=]‡ lò ,:"³2-YdGŠŒm,+¯ƒRÒŠú´‰ŸJEÎ!à¹x¢³ýÀ¥|¶±,-ZÒ®„@ °_¨…÷p_hÊDúámA_W¾,+Ï8IË”1¹ÙT–s£ÛEÙ9ÃÕ$T•Y-}_°ýcCu‚ƒ¶úàv,Ä ¡Z…I¡BÅN#±IÉ*‘Ód›nìÊIJå0v_h_e~%›Ê’¾Á-xaÈZæ\9ל8‹×Üj&n ™j×”_wäJNìKòËô{«gJ±¬³PB¿1»j'+·]}a«iÌû¼ÿÚ}mïž}ªqcçÌÖî>»~Ǽ¾õ§Ö~ñÎK»tqð¹bã™kñ3×D‡ 6òÖ É&Ú ‚˽GÎ?¯Ÿù7«.hðØß· #å~?Õ­òí¹x3ò+h­[Cjâ”Õ=—†PA´Z8â€2'?E츿Òçˆû±ÌZ‚µˆÑO,»ÓMß­ ë¾"/Ëøóˆ`2V+êñnHEÒ`ŠC°¨¸ñ“LÒt IDAT€_¢Ú‚û‘¡;¿_ÜÕ<‚Z8ˆÔ/MǪÈÈêV~<¤¶ lfµ®ÜôÂņôwà "ô޲C–àEæïïÏÎ ôk¤¼‹ïU‹{©Üüù°ç,ièb1Aoü?©4hâUŽHÝÊ@&òo™Š¡á· WE"l}à†­ÙÏÌg{°êX” (ažû6œ(dqÒgëu¨ƒå>XDÖz7[?¹GºOY넟{È])Ÿ{ë)eüWÊ~¨ˆ„ÃM®¼õº/3.)ï,-{÷]WÞåZ_ÌÕ,Ñ[Q°’\°tK¤*X~µOoI=ÊÃdlØ~ ßïO>çúCåÁô¾eÙY–@¶kʹÇNþÇÖÛYƒuªƒŠ ðÉóúÃO¯ *[q™ m9nNwf 5kmGq _yß$°%´ »÷ëBìU | ãjøp>|}âÄ1¼ž…BYòð A&K¹_݆ Á÷y_Xà4KìzéæîäéçyoËØ Dúä%Þ‚ë’ÄÞ,2¸éK‹3¹N²H¸Ì‹<<Ê únl?È7@é^vjŒ—%ó_®k%Ý Ûp ôÓêëôiÛ(QÈ~3%“PEÍ~,å6ÿr¤ÂÅk&'çÅŸóñD¹†\ÿÚÆwþä<ŒAÏÚ×›ö×wðù>ìþ¯šи‰xûÒþèâÌ'*Í6x1ƒm´® n]KŽÞéfmc­ëÝ£›Ý£À…ßbÂJpãùkÝOß9Æ+7ž¿.kVeÎóè$÷*BÿJ—¼s×»ov·°Æ¹ëäûOƒ˜s×ç®?¼ùïá5;o†YH«Ø9ë+y-×![ÈDÁŸ.I2Š"ð`ÓЇÜA–7P ªTÞ Gúö²Ù…t¤˜&*ä¶EM²ë–Á5'°62¼¨/ɯà8•Us¤R EÈ{quÔµmážH—UVC–Ã÷Ò›s+rÁdŒOÒ5bÿ'Ÿk·›B`u‡Þóv¿¹ÏiÖÏÕ£šà×™@þ§Î»ÈH‹å÷st'«åñ«Ab¢Øí?~Ý)·!9[»ëò{Ÿ+,}YûCˆÖ„»ÅUÅƤָ!«+û!Kß9)œd+‚À«‘…>û…’mبÀB0\%H¾›ÉáåQaõWzGwØ¢é&jÐ÷æ `´©¥ÅšIàlfÉZf®¥¼wȳËüAÿ‰ÀZoæ<Œ|“™Y„Ý7ÛÒmàóbqÉÖо”)±açCÞlù¦Ið«ö³^·l¡Yç1~ߤ°Ù–¸XÂrŸÖÚÈo<@Óy#K—–÷ÀÍÕœ±b*3’órAf©?_(ø¥s·*†wN ›!:?³˜e©768ñCùÙ3ÕMZ¢ èÑk8ñ¼§…,kLÂe׎Ì¿¤¢¯]\ÆÅeË Øƒúc©/cƽ/P­R\"ëcÊ+RAJaó"ÀðާÒÄø=!xáºÔ•)ÜñókûA¼nÖ¨#äö²tË2¯qíê«PšŒÔ˜[Ù‘ÚY)6 GüÍ´ª@ð1ŽÍxŠ­h «ãFV.Èõƒý]yöüß¾‡£C|g}ýÙíÞÅ[¸»‰wšøÎÝÿv¸ŽÓÅ6…‰LüÌ5¶¾¤ØxæZh9‹Ÿ¹.Ãt~£ZÑÜ'Á'cÁFëZɱ¯äpí.ÿÄó˜\%ØØºnÁÝ þÎVú6S2±tÅdé¶$n«‡œù„Å&¤\òd4cS;Y PŽÄ®%p:Œ˜ŸeI± û¾Á#›|“æv>1%Å——ý„_öÆÏOô]^'m3þõÎ%(¿í7=¿¸™ð…"È^n?üI¶"dªjïcámo´²€[õ7[¨Ü˜i*eÌ•Ž\O!‹kpÂYáÌãiØ7ˆ¬l`œ«Ö€¥d3ã&]ÊøÛ6¥<’›|Çï.¶‘øeç·s¾Év–VŽyÈRú¾Ü!f?³4v»Ô‘‡™Ø±ØD ' IýVâ"†¼3Y¶ Í>£qsH¾¤0‘¸[e6Ôâ·ÆÍTÆËÍ‹`j§L& oòô ñkGp{æÀº·Ùç_לGK¦7//7²L‚Þál$ü½Daññëv6tëÁkÃò'CW¦þs ë‹q!‚´©ÜHSøzÃ=¿óõIàÌÙUûƒ×ä¿S€=©+ÀÅÌûÉ™>¨uËšÆÔàc µ‹{§~íÀÌÎQb #¡,Ë8#¢ÕÛ x þ µH‘Y“Ì囂E®›”û$ÁXrÅk\—oÎßѼt~NL7gÛLkßrf¹>ŸÉ~¨Úu>9:#j .'¹y…oOm& ±óUp²;¯ÆdoTv)å©ú‘Ë9ž(FۊdžÜÎÀ+ÁŠLOÙ‡L4XÉ äšMœyÌÊWËBeàšV¾Và=àýâA®Þ»í²†)Y´¹¬ù´[Ñ F½~’»„rAàŸ“Ãß½×=îܺúßÞÆºÞ¦f.·“R¡ú|ÀÆ3פâÈô†aÀ{#ö^òÛÍr¿7M ¦G™·PdÛ‰pý-|än~]è;T5È(§¸—¦bú¦“@0@™ÀÆí¿fhBrS“ Ž£„G*“$3;”bù±KÓOìZ+õ¯ù¨ì“ŠQnì?È|Wæqƒ6X1Fò6ÛñÊÄè+V矑D}_J{0¾âãˆ2îÞ¼mjüFÅ´J­ ˆÀm d2 ^*geq <ž¼;Ÿ£ôâÜ04oSÍ^Z® $Aw-ŽPÜK1vîS¥V­e6ìˆÃ/ÝÉn³NNÑþ'¼™÷!‹±$u#Y V`vÝ5Þ¤A+Q%&%ß^w>Óé÷nˆÆ 52ÛøyAÃùâà¾?ÚhØ É•60°Ôyb…Þ‡üýú¸¬%,ˆªTh€#Ü9”ûÜ}%³Iÿô õÜ툹ýê] ¿”ëP6š×²>(¦Ù¡^QòËx÷ð g Õ*vhˆÌ·`€À©œ×Ap&„àêÐ$~$ù×™r¬Äi±P°)ŬÜS–·>\¿Üx‡°ß–—ðlIÎ(3>Xé096}8Ç27R ôÝŸ’h™ÏåvÝI!Nðˆ€2ˆü¸É1Á0ËzqàZ8°s°—Û[i Ú/ëÇøcÄâKEx†ß/ÏbsåÀZqóQOr¯:ñU $ß‘Éz²w’éÅŠIÜM˜ÍŠR/Êe}Kÿ\Ö—a1x“¡·ìBʪt¸IRí;.)>ƒÀ°!»Œsg×…ì$kzCW\ñ]Cæ£r!ü–)ñ¼¯(¸§äóAÔX¸%[ǽÛ×î_nù Ì ŽÚÇÅÓfYéº1eùÖ܇)iìö:4ÅÆÔ0ô%SdÁ$¯°Èn.L0ÒÖˉ× &#³)ÑÛwÝg%ÙÔKþ¬‘X¸E„±Ê!C]ľbþ•±Ÿ™Ïpöm`KXàí€ìH%$aCËcßRE{_É'¦i–t ÞZ &(Væ¹õSPV½Cr½A:ÈîHÆ~ýÆ O§F Ø’oΟ„Ó ÈçYÒgÏFí’'ݘàmXnƒPŒŒF]—Vv«³¶™e†¤œd¶’óß',lì\¼¾àöÅW5΃0¼Ò¤d@’ÙtËý=>ûo -Ü\²L¿¬ÛL©oÅí?R€·B¢—8ò5ªÛ†¼yi›âk§åeËøàÃ{ûï—´™Å9’CRfIž|·Ô7ÊÖ¼á†_|^ºÂÁ:…Z@a„Ô…šK >(ðŽáL¾FºkA›-˽+ :#™¬YŠÍ0,çÝ‘h¹•ú=‘¬0k‰å¹ó›~lÐJk¼<ŒH´4lkyÕæ°NñúÀf]Ãé, ¾§….ü|¬)Å5—ÉØQÉ@ÿõD…ÏÆõð¸0°+[ðCßß­´€áVÍúeÌ2ÍXVq‡A²j n%h¸ý+½‡8Õû>ü$¨úƒ!ˆg!uÜÝCH‡›#•¾JVùæÓÒrØî-p¯×Ù>] ‘*2|DfY:C©´â¡ ïqì–?ðî¬$ÂO•Ä·5QXräû 5(Bü äkèÝé¨É‘õǃ»Æð~MFvZó»2(áѨDZw^gØdªò`IX·R¿[$‰ÔXâ}$k²’«¬ØLˆßwä÷BbÓåéuÈ~¹Üõ«É8uÅ ¹à>¢$üšø|P 6¹Ñ ×þØF"Â$ö Wê÷âžÈëÈJÔÖü,d³NY“Z c#ë^VàÉêc š·¶§¶Á‚ÏõŽÈžšdç,è Þ^9ëu¶7^ÈŠ£ ¸r«‘ù±?É‘çó§¨"„XïM菱s#cç0”y``/„,úcÝhiØÉ4¼)³s&˘<$©ø#-òUFázct»[©ßpIüÁ— ϱMl0œm²ªÝÏüæâk6vÎÈ8pMk!û̦'»óÇôQ»EbIºñ°w\M[Þ½?ad’|ðá¥E¥CQE—R3€ügéq@êÇR¼qPêD” Ö¼ÐS¼ÆþÓ>ZýÔ9)ÆêÄôFüµWã8üsÐyeR2‚̦ƒ.SEQEQ¦IèÛ3|ë$EQEQe¦¨ SEQEY0*ÈEQEQŒ 2EQEQ”£‚LQEQeÁ¨ SEQEY0C–NÛÞÊìs~px@gƒ±ãÎ^ ­4®í­íú‘bº„Ñ Hdòœ‰\tÕ±Ï9mŠ¢(вšÔZË6l§Þ6× 0§ÆŽb{k{$=79ÕXÑHÒMQEQ”ÓÍÈ› ”šL¦+/ŠQätØä¢*'ž0±ñ/w Bé¾]kYu>äæ'–>Hýœœ0ÏÇSgY*Š¢(Ê,8óù§­ç¶Ž>;`ÓE'ç4r:Ìéx EQEYL|xoÿã}Ý:IQEQeÁŒ¶uNšdÐàæÔŸ¢buÙrl¼§~RcŠrZɹˆþöPÆEQ”A”¶3dí/:7þæM:¾üúå˯_V}¦œzÈ¥lÑ©PEQN µÙ™€‘B'5vçݨêôö¼sãoÞTM¦œzÔN¦(Š¢Ôg¸Ù™3g.}÷NøçW_}U3ôæÓ›?þÑÛ—_¿žüñÞ®v&ËɾšÑ†C?”xEñ!+z Ü~÷ÀÕ+Û¥7Ò¯9†^œ»`h ¥TÇ• ¿ô²AÁÖ sQŒô,#=HÂØ9+-ƒR;j8VxÆ.Ÿƒn/=_š†ê(ʉc{kÀÁáÀZ7dˆ…ŒÔØÎ¹í«W.]½riçÜö_Œd'k>½¹³µûã½ýã½½÷ÊÞÞ+{C]û¿úê+’Mr06_1£Úöel¦k»ýîA…„ªÈ´³¨¨§Î¨ «ÿ"fñÈc‡9k‰3݇¥t.m™Q”‘ 5TSk–åö¹­í­3¿:x8Îô±æÓ›í/:[ÏŸßÿhŒÛ˜»D¢…g踾,ZÑ–¦(“0ɲdu,^ÒÊ’J(6·E«CХ‰Û´³X꼈ú·/C O5C‹ÖÒ (ËON„momµ“¶ìÅÖ 8x8ZšÚ_t6ž4òçÆ“¦ýEgÔõ/B¥EÇÕgF Y§šL™²“M¾öØä…PÿúâHY.úF—Ò¨—å~ c4èV.LRxrÔgɽˆb¤¥!—¦¡æsæ<µh)ÊŠPjªÉj9õ<<<8sôpÿ£ý­çÏËŸcÉr³ HÑŸ “»Âkä^ÇTf̯\’•`Çk2Åø1ݨÃ3¹_+~)¢êp¦( j&xi¨æÉ¯$tÔR9”þ«¾kˆ…Œ´Ë郃‡‡d»üÆv}e6h6åF²b¤uüôKÊYÈFJ†¢ eZ¶±A„­ì ûY±=«ïû_4{äÎW4ðÕ~ßEÛ›¤ì“´”#ÍÇ ¯c,l¨ŠÔÒHaN©0‰«û,ž«>*¤eZÔò!M6ª³_6ÜûEûêßnÞûE›lbDMŠÂP‡…gPÛý+|ÕdÊŒ˜lC›ÉY;õ/‰;ÿx®oSgêRlÂçš$=c­ŠáTEQ„™ìeI#•¤Æz:)Ž£M\¨ $'­ YÖ¿ <“;Èy˜U%KQ†Q±Ùä jÆ.}rˆb(&l>4)^üÇï—^véûß0Þ\KEY.¿q™¾2‰mc¤Ì–dY²“‚6ÌSáÄeã‰K°¢·ß=¸zåRÍÝŒ<¼M­©¯>¼·ÿñþL|ÈHcí½Ñ4_k›¯µ;ö¨øOÕ˜rZ™®™¢(в ÌʇŒ”Ö¥ï½à^›Q,вœ,Û:dÊÊr²V^Uó˜r Ø>·%v²AÇ¥ÌJMç½Ï?mwþx\ú«9kZÏ7[/ Ÿ1 (‹eÖëz´Už'('OPRe<<Ø9·]q\ʬ–½ý_?Øÿèþ 5À>¶‡ŽÞûû{û¿~0Ï„)J}–m/KEQežìœÛÞ>·Uz\q×ÒYÈþù7¿¤ƒíÖnñ׃#·žÙ¥ÿzm~iR”QPÛ˜¢(ÊŠ3’mŒ˜¹ iÌÝWvž}¾õößÜ´iç¨ý ±Iî‚Øl\¼pqûÜöæSëÓO«¢L õ!SEYMÄWŒlcÅãAÌV9sæÒwï„Õd¤´ZÍâO­¯7T«±ÜÞ”“l=>(übhÅ]5EídŠ¢(+ÈØ>d3d¤ÆdôôàááιƒúòÈœ›On°Ý™ÆΗÿðãöþ'ûZÏ=»÷jFºQàÓaÕ„qÍ3^ei™é^–Š¢(Ê’3È6V=j9s§þís[Û[g¶·ÎˆSÛäì²ßzîÙÖsÏ}öù½ky÷Ÿ9sFìXtþþZq¦4ØÜÆäaàƒ¢È…þ·4åd¡ë)Š¢¬8d+W0?§þ­pðp„ëíã¼ñËÿù~h;úì󜑬ˆÈ¦Š9®8SG-­e5Mh¥×+'”eó!S¨(Š2;Âñ%õ!pðððàð«­F¾Ñœ~ç6_j>™YxLØP)FõMx¦ÔílP8š,çI6ª¨RvÊX6²É·DSEQŠþöpë…- c[®uȾúê«»ÿp™q÷ïþÃáå7¶G’­¯7[_oæÔXŽšš¬:Ø@5ÆfêSß]9¡è:dŠ¢(«Cqb×!Ë™”FÒ+¥C–ûŸìç/¾5…”•‘+,ÊgJ‡8GŠqPìÊÉeÙlcŠ¢(Êœc²™;õ‹ÈUmÐåÑïÚí?¶g.)*B†Ã?KÏT‡0FCcQNäC¶èT(Š¢(ófmlèÔÆåÚ:)GnÈrÿ“ýÝÿR²|‘œÐÉçOq€Rþ 5Y…gXi£Fô<]è\KEQ”dÐüÊ¡s-—NuþУƒA³,Ãke äCvû݃Ûï ús> Z½%dè]u®zͬ)u95I£&þLÙÒ6Š¢¬ãù-— ëü¡·ÿÑ}:‡,韘Çö?ºÊ4™ÆNÕ¶±ù‹°:„S[Šò«x²âú⃮™?#%Iæ÷Ì'mŠ¢œ&–t²ú5©±æ×Ü%í•$+õ¿üŸï7žhìtÿµ¿Ú›f*ezŒºY¨Ò®^Ù–3W¯lËOrLTß5I⿚ö†c9r Ä„'¿Ê.ûW:]¦âv9y†WZ®xŠâŒœŠŠ‘VÌæz¯¢(§˜±×![. Ùî…óO4O4ìã$g!Ûÿdÿ“ýÆ ¹RQ–– ;YÎHvû݃«W¶é_îWú)wLˆö*޵̜ –• øFµZ•Þ.'+<>k†Pi“Ü«(ÊIgl²ù­Ô_‡Í§ÖIiítŸ„W)»ÎWì/®(‹¥z/ËÐè%g0@Q…¶®:v¯ mcErSƒ‹ö$ Ð=Å!Î:ÑM®Zfa…šV˜j!S”aÇ£½k IDAT¼½,—K ¥5ÿáÈÃßÎ9ÂbŒ}N4uÖ!+ÉP¦Õ†2ÃØ ±ê» ç p’ô„2nlÑSª±Ó<•´)ŠrâXÆuÈe©^‡,gÇšÄñKÆ:§ndÄmìÛ+&L’žðöɇ+R;N²Y*Ê*p:×!›Ãÿ}´ÿ/:ètþÐtÜùCgÑÉTN3ó\‡LVИÊR¥nõ˜Æxb1¢¡gêÜ>^ª¹üW„6FD*ÂeÕ8=ëM…­o´˜³ëÇ›Om.2‰Êé¥Î^–Eç°QµTî®ú²Òå¸Â3SYË Û#úªr¿ZÅí¥³=û ¸Š_?y¹¸††¬(Ê©d÷²œ3wÿá¤öåWv´¿h·¿hïþÙnçð8þ“ÍÛ¿ê½ÿëãƒÿ¥‚L™ ƒ|Èrš©ÚaЯõï*¥T  ¥Ò¤âú¡7Žš†INÖ9SÿúPüÕ¹eèó*ŠrºYu²Kß½6€5ŸnØX7¹ã»ï º}{+ßÓÝÞ:#ÿ†^_qqøSiPÓeÔz{õ•sx¢‡îe©(вš¨Yû«ýóÿ´oµßýö›ïýºÛ;Ú<øM÷—û¹\ðÁ÷·?øþðQžƒÃ¯è_Q~Oº8ü©ô×9P3vz®¹¥ê£{YŽ‡Ú“E9Ѩ|ðýíÞÑæÁÇÇ¡ðª ÙhÖ|Bªhµ’?‹Æ'9t× +$TîÞÒ_‹‰©NÛ RLJLQE9­¬ºYÎÜe×ßÜ™½èÍvzSŽÑƛϡÙhnýðý¹%/Ô(d‚ mQbo“Ÿ*ÂtWé™ê$ånÌ¥!÷ki cÜrꩳÙüQ‹¢(ÊÜÇì”2QcÍèzï7hFp´s€övòçIÕ˜¨¢¢ƒ¢)J ^ÕÖ¸â8)!E5êƒ úi ‹à$)9eŒº—嬡ôÜùÅE'DQå”3ö^–§D4øàÒ¿¼yðÉb,+CUHNÀ§Zjª½ñ‚J…fÍWÙ<&,›lyÔ¡¢(Ê)fml¨ì”ømýð}ú·ÿåÕîÓ7÷¿¼z|´m>Øh˜ï˜6nyIÎßþòÒ=3ÎÀMn`nºNúÅÕ„'C³\ÍI”EµTß Wqñ¨)9­¨™¢(Ê*³ê>dy^\/pqq«}tØ’ãÃÇÛw¿wôÁ÷/¸ø³Ì”‡RO¯ðÏÉ#Y¨ZÂКÅ»ÂDUWñšÒs隆0ºêW‡e³)Š¢(sfu}Ȉ¾¿ 8ç}ûé]qê·ŸÞ Ï·p·Ý ƒ†‡ža4(a¹Ÿ*†,+ÎÔ¿«æƒ ½²"êð‘KoYq–͇LQE™cû’!K°_ãkìþYÀáÅ&û£Üybγ,•UCg5*Š¢¬ c¯CvJ,d2ËÒ¿ß;~¿ÇÇ÷´óçqÔ˜ššN.bÓQKEQ”dml%|ÈFe¹äjL9Ѩ™¢(ÊŠ³º>d$°ÈN–óÓz¢Lõ!SEYMÔ‡ .þì Zl ½@Q¦…ú)Š¢¬ «îC69[/,:ÊiA}ÈEQV™ñ|ÈN•…L°mûwög3gÎ<øø¨ý»ÎÑgí^§7üNE™µ)Š¢¬8#ÙÆˆS(È:赿èY ›âóÃãõ kÇh÷:½3gδ×Yt•Sù-:Š¢(ʼ´F¿â´ ²Î½Fs#w²±iOm4[Æ€þ?b©Ìµ“)Š¢¬ cû-µ ;Pçúö½îcûùá1ÛMŽ>ý|ÿ£ûûÝßhlÐ?7ÿû;¿ý­Ù¦[Ymt/KEQ”Uæ´íeyæÌ™Kß½þùÕWCÖJí=ê°“ƒÏŽzÿѳ6AŠ·xgýÿܰöÀÞ+ßj·ã³fóÉõbŒC£Q“õ¯™ºlFÉVÆF×!SEYqÆX‡lI-d¤ÆvÎm_½réê•K;ç¶ïüâ ÚNÖþÂûìw»=ûØ’K`ôºÝë?¹F¿n˜õöïgš~ÔQÓΧœÔ‡LQe59>dÛç¶¶·Îloúìc+ÇñYcS‹ˆG)âæÿåÞ+߀5tÕqY3Í¡ƒÒqÕœíJŽ‹!„gý·41IÍÝ«Ìõ!SEYAN§™Pg‘0k“í?¥ãä±Eˆ€IÊB­ï/~ùÏÏ׉·hß*µxÉÉ:ê§4„ð é¶P½Ñqµ±­"aužT™"êC¦(Š²ÊŒçC¶Ô‚ìàááÁáWõ%ÅÁƒ§›Z!†€îc¦ìãÎßNs¢åLEÏHžg9û™ª±… ¶1EQ”gŒuÈ–Ô©ŸÌ<;ç<€ËolWË‹ÆSÇèÒq¯ÓÝX_ïýgBš,±<@™Âþg÷øQ/>kfû‹@å×ò0Ž,o¿›ÿŒ¯^âZ ¡ô–0äQÃ,&lŒêDAÁR\³ˆBQeºŒ½—å’ 2°& ÿrƒw!ÃÖ¹Ö/ßû ÷{|vºÖözÉæS©%tðÈ`n äÜu¤r˜Ö\Ë IQÏ…ç%ðA¢­:Ø™*¤ õ¢¢(ÊB4¿rè\Ëåd4YyaΚn×66[‹Ý—ηÿÐîõº6ùÓØllmm÷ºÝoîmßùù??û|³4œ̹y!+%Ué¬BiJr¿VßX3XeÌg/ËR½’;)æôVNN ÏËŹ 6§íJ/.ýµË ”©Na­TE™ «¾—åú¦ñµãnïÙ­†97¾Ö<ÿâîÞ+ߺøçßÚ»ð2©±öÇ¿|÷ŸŸ}®Q\„ g=‘;Y¼¬xoi††ðUa&¦üZKîÆAIUY¶(æàC&Ê#T$Å“¥’kÔ`å§¡Á–ê­ rI­“òš)¬»¢(Êì8=>dãÑzn³÷Ý÷ÿé_íãĜßzÇÝö‘Úͧ;/éQÊlÛ‡ì ðÑn[K0‡ˆ›Q£®f¤ëk²0ð …T.…ÅœTE‘êáSèC6;/µÿ·iÚ^b¾¹·}ÿ}~üÇããG=™g_hî¼ÔšnŒjˆRJÛ‡¬þ—_t«Ï™ÊFzŒj]ʨBVQ¥”Q{w§Ó‡ cÉ­o4›On}q|Ü>¾ó³÷þ÷ÑÆºi}½ñìV«t¤RQ¦Ë||ÈP&¹r#˜'E“D©(Š2ˆU÷! Yß\ßù/­‹±{é¯/^ý¿/¾öW{»¯ì¨SæÃœ×!£9’áÁPe“"”§˜¤š'EQN%cøNA¦(‹eÖ{Y†ËUÈŸÕ'ÇaŒT…7–ž¬NLîäÐd+Š¢,cïeyæóOZÏm}vàÖÏo¸ó‹;³LêI¥ýEçÁ¯ÛÝÿH̆m¾Ð8¿Ó2§quYe .¿q™¾šœ¿ø‘Á¬ÎæÁÓëüª.LŠ¢œjVË·ß=¸zå M†¾b¥ÇÞ¦VƒÔ×ÞÛÿxÙ}È–ûØvÚÝã/kžé´»í­oLy~€r:˜›Ù²QºÀ˜¢(ʪ1ž™ ²átþØ9þC²ÿað&±û© SÊ™Öý'aŠ¢(q~%¡>dC¸ûÓ{¿üÙÁûÿt˜‡ hLÊöº N˜²ÌÌÚ‡LQEYNÆö!SA6„K?ܳc¤X ÊP³~v±éR–9ϵTEQ–Aó+‡ÎµTA6„[?½»þü1"ÄØb5†õ'âæÖFxY¸ ¦œŠÁæNV\|&ˤÏ3Œ9DqêÛØjŽZ*Š¢¬8ƒlc«¸Ù´¸ñÖ­õ³ñÞ+/ï½Þ“;{ÙÜ{ugèí²¹dQ~OºÙM6U0-?jSEYqt²irã­[››Ý »½G]cLë% `÷Bs÷B«ùôæHAÍBHmfògø_ù©ú®A7*ã¡>dŠ¢(«‰úM™oÝn>ÙØ}i·÷¨k"Ón·[­&"»óJsþ3SÃ!KÚKŠB›™œ©SwÑ \wçœ j'SEYAÔ‡lšÜøÉ­æ“;/îôcÚ_¶_k4Ÿjþøç{“êžRKUQ‘`BV* ò*«–S¹»( ô§ê°i¡>dŠ¢(«ŒúM‡?¹…^kçÅN§gή·ßn>ÓÜznšëò—j)±T º+'àBDzúQïR×´©£¶1EQ”G}È&…ÔØÞ«­{¿ê¬¯¯Ùi6Í'S–5NK g T_žÌ™Ê&L‰"¨™¢(Êj¢>dSàÆ[·ð¨µ÷jëþ'mÜ{¯Ýh®7¿Þ¬i+.NQ1 9"›d¨17ÆUq¦xWx™*³© v2EQ”D}È&åîß½·iÎï}»uðIÇDqï?»_o6ŸjSKåì^0¤XêVz~Ð-¹¡Æ\àÅ‹sáº+wAGV¡>dŠ¢(«ŒúM†mž±yðoDèu»_oÅgãšjLQBÔ6¦(вâ¨ÙøtÚÉýß´aãéîîŸ7O667G[llyP×ÂQ2EQ”Õdl²¹¯©µ´¤èw-Ûl6·^ØÒŒQ&„ìd:jy9x¸è,Žís‹N¢œpÈF£“ƒŽKQÝ7®ì#²ëÍÞkß}mÑiQN<[/lþöêCv’YM]²ÊJTQ¦ÙÃ+îÒ!KØlusé{ªÆ”) >dŠ¢(+Î>dj!€:R¬ýEçÁ¯ÛÝÿH̆m¾Ð8¿3Í¥b•Sù‘l>„P-sƒÐ\š.šŸK…¾Ž%amLŽ¡‚¬ö±í´»Ç_&Ö=Óiw76Ú[ßh-:]Êò272ª…ïü⎜¹üÆe:3OE¸äh.MÍÏ¥B_ÇR¡>d3¤óÇÎñ’ýÛ€7‰ÝÿH™RÎ<}Èn¿{›já°Ú¥3—߸\¬Ž··òuÁÁá<8nQ•bÈ¥ (½²~˜C5—Šé\H.É™ê¨K]þü/êš·L7O¶·¶ë'rù_Ç oð1ÒYãù© ÂÝŸÞë£ûØÆÑz‚C1¶Ûë.:eʲ2ÿù•¹ ·¢Od:Ër·~zwýùcDˆ±Åj ëOÄÍ­ð²Ò-½s[[V\_qñ™,“>Ï0t#ËiqâæZJ/9W-æjÆðO±säN"[uNž˜©„9–!—JÓPzrЯ ÉO²ÄT_P?‘¥Y]à$ÑÕOö<£ž.YZLp±Hç®,½kPøõc—ÀC¥5kk5º—åL¸ñÖ­õ³ñÞ+/ï½Þ“;{ÙÜ{ugèí²MdQ~OºÙm1U0-?'t/Ë1j4©%K’Šé–Š.ì {^íÎ3—FJCu8‹ÍÏ0– Y6õDÎ'ONÜë †~ƒ!¹ *ŠtN'M%©5Ã)SIÀè^–SæÆ[·67»v{ºÆ˜ÖKÀî…æî…VóéÑvUš…*ÚÌäÏð¿òSõ]ƒnTÆàÄÙÆêS¬‚Ç«øu¯OÓÊ¥ÓDΆ1­—>Ôê¦ bU©f–Ž]¤«Ã?M/T×!›7ÞºÝ|²±óânïQ×D¦Ýn·Zͣߴw^iÎ?1¡B¢}*ÉÆ&¿’à“Ÿ*ÂtWéelæãCVí Rí\2^2K‹äRnHˆ’­¹4*“”º©KðS“«c3a%@Å ¡ÀALR¤Ç³ž,Ô‡lšÜøÉ­æ“;/îôcÚ_¶_k4Ÿjþøç{“.Š'g6KUQÑ`%²»†ò*«–S¹»( ô§ê°é²Rv²A—Í"êInËÜêý9çÒxáÌÇ1¡Ùc轃ŸdSãÆOn¡×Úyq§Ó陳ëíß·›Ï4·ž›æºü¥ZJ¼ÄÝ•p¡cYý¨‹w©kÚÔ™§õsÊïö»·§nøÉyП¥®$E÷Û"#ù¯Ô ³‚—Ká-õ½|–6?Çxœ¡‰,Íêâ5S®¾?ÓÒ¾ŽêØë¼£j·ÈšwUû¥Õ‰½~Ôóg<²3ŸzÐznëè³C·~ž_íwÕ 5¶÷jëþ'ÝW7¿ì4ëͧ›CÕXѲU ¬¸¬b ph8¥C–ÕgJãÕ!˱¡!kÿäÖ!£º²Ž>;xx°=l­š¤ÿhan¢¸J¤2R.<\ÝÍÅk>øJ]n¾NËxÖ,ÐJ@˜EQ©Y-ß~÷àê•Ká d¸öXn²Ýr¾¤¾>øðÞþÇûêCæ¹ñÖ-Úˆ°ñTw»Ùh<Ù˜¢ÿœQ+×b™ÿ^–ÊÔ9x¸è(Šr’ѽ,' Eï¸ÛhÙf³¹õ–fŒ2 óô!S¦Îjzô+Š2t²‰¸qe‘]oö^ûîÅ­o¨S¦À)^‡LQE„®C6›­`.}ïµE'D9 ¨™¢(Ê*£>dãSGе¿è<øu»û‰Ù°Íçw¦¹T¬ršP2EQ”g 2µÕÂ>¶v÷øË¤×C§m|Ø=ú]{щR–ò![t*EQ”y3È6&ǃPA6œÎ;G¿=Þÿ°m­?yÿ#dJêC¦(в‚¨Ù¬¸ûÓ{¿üÙÁûÿt˜‡ hŠ„íuœ0eiQ2EQ”Uf<2dC¸ôÃ=û1ÖIŠÅ l5ëg›.eyQÛ˜¢(ÊŠ3’mŒPA6„[?½»þü1"ÄØb5†õ'âæÖFxY¸‘¥œŠÁæNV\|&ˤÏ3Œ9D± ¨™¢(Êj¢>d3áÆ[·ÖÏÆ{¯¼¼÷zCNî\hìýesïÕ¡·ÅåWñ䠋ßJU–µ“)Š¢¬ êC6}n¼uks³±{a·÷¨kŒi½dì^hî^h5ŸÞ)¨Y©¢ÍLþ ÿ+?Uß5èFe Ô‡LQe•Q²irã­ÛÍ'»/íöuMdÚív«ÕDdw^iÎí¶pÈ’ö©¤ƒÐf&g*äTÅ]t†×­0'DmcŠ¢(+Î>dº0l 7~r«Ùl켸Ó{tlή·ÛíÆ×ͧš?þykòÀCÝ#ÇìRE=а0œÒð‡j²Ò‹I“ú,Ê &ßËòö»ù¯÷ê•!‹ CõEQeBt/Ë©qã'·Ðkí¼¸ÓéôÌÙõöïÛÍgš[ÏMs]þR}±T º+§´BDzúQïR×´1¡ìê•m‘SáqMŠzNQE™cû©…,©±½W[÷~ÕÙ}uóøËN³Ùh>Ù˜0ŸrC¥?M¸üY¼`Ð]ƒÌuÊ$ˆml>d¡Ò•–;)ª‘LQeþ ²©Y]n¼u Z{¯¶îÒ6À½÷ÚæzóëÍš¶±ââ9Ç¯É GsË™Ðô5èLñ®ÒÁSed“‘¢wÜ×›ÍÆÖ ['W) g>ë‰=LT‡)Š¢, êC6&7®ì#²ëÍÞkß½¸õ-µ*2#2±„… ¬úäÔÓ (Š¢T0¶™JØlu:G›—¾÷Ú¢¢œÈN6á¨å ÑɱO*Š¢(3…ìa4:9è¸dPGе¿è<øu»û‰Ù°Íçw¦¹T¬rš˜µ™¢(Š²Ì¨Ù ±m§Ý=þ2éõÐi›v~×^t¢”%E÷²TEYqÔ‡l&tþØ9úíñþ‡mkýÉû© S2ÿuÈEQ”e@×!›wzï—?;xÿŸ“à0í j{Ý'LYrÔN¦(в‚Œ½™ ²!\úáž}Œë$ÅbÂ5ëg›.eyÛ˜ú)Š¢¬ ƒlcêC6·~zwýùcDˆ±Åj ëOÄÍ­ð²Ò-½s[[V\_qñ™,“>Ï0t#ËÉQÛ˜¢(ÊŠ£>dSæÆ[·ÖÏÆ{¯¼¼÷zCNî\hìýesïÕ¡·Ë6‘EùU<9èbd·ÅTÁt"P2EQ”ÕD}ȦϷnmn6v/ìöu1­—,€Ý ÍÝ ­æÓ›#5 !U´™ÉŸáå§ê»ݨŒÚÉEQVõ!›27ÞºÝ|²±ûÒnïQ×D¦Ýn·ZMDvç•æü×n ‡,iŸJ:mfr¦BNUÜEg(pÝ sBÔ‡LQe•Q²©qã'·šOn켸Ó{tlŒiÙn|­Ñ|ªùãŸïMx¨{J-UE=D‚ Y©4È«¬ZNåî¢4ПªÃ¦…ÚÆEQVõ!›7~r ½Ö΋;NÏœ]oÿ¾Ý|¦¹õÜ4×å/ÕRb©tWNÀ…Žeõ£.Þ¥®i³@}ÈEQVõ!›¤Æö^mÝûUg}}ýøËN³Ùh>Ù˜p˜²t¨qZJ¨8c ú‚ðdÎT6aJ”µ“)Š¢¬ êC6n¼u Z{¯¶îÒ6À½÷ÚæzóëÍš¶±ââ£ã!²I†s a\gŠw…—©2›õ!SEYeÔ‡l"îþÝ{›æüÞ·[ŸtL÷þ³{ñõfó©¦1µÔXÎî…CŠ¥þa¥çÝ’jÌ^¼8þ »rÔydejSEYqÆð!›ûŒÁ¥Å6ϿؼÿqzÝîÅ×[ñÙ¸¦S”äCvøÛÃyFªÀU0έÚóÖGs¦&«™Q«ùÔódûÜÖÁÃC°m¬x<dŽN;¹6"l<ÕÝn6O6¦èÅ?gÔĵ l>õÕ°w~qGÎ\~ã2™³(œ«ö¼õÑœ©ÉjfÔj>õü!{N:.E“¢wÜm´l³ÙÜzaK3F±ÍMQ V©tæò—UµÛ[®R88,1¤Ó¯¹ŸŠ'%¡4´ ¶·¶G½eÔçÍ%²:ºÒ#Á'"gŠé5Æ:TgéIɨ\Rg‘Q³fìG¶ºÒÈ!ï=,uBXH‘˜:ƒlcÕ>dª;àÆ•}Dv½Ù{í»¯-:-ʉgž¶±0ÒŠ?gDXÉŽQkÞúŒú¼’ÔI*ëú >9“KÞ„™3'"£MáB2jZÌ¿¢È鹡ù¶À"1]F²*È`³Õém^úžª1e:Ì͇Œz½ƒ"ºzåjEß—:¯aÓRÓ06”R[Bî¤ü9RÛ6Þóæâ•«mC<†ÉdisÙG¨“ΚgražÄŒÊ¥¼:£r–¡ð¸ô‚ieïÔŸ:|ÆðqÂóÅÄ µ£2¼ }œÙ‰©3¶™Î²€Kß{íÇïîV_Óþ¢óÞÿxpûGûwzoÿ_íc;Ÿ´)'”7×²Ø :Y3œ° )ž,mÞæIi:+~Í%¸úöú1.{îä¨Ù;7Æ{‰ÕW–Šª±S¸œEB×!›?vŽ~{¼ÿaÛF±û© SÊ9q¶±YkZBkÁR59ÕéšÚ1g©r&׌åL8ƒ,góIÛReÔ¨?rw*¿'«Hè:dÓçîOïõŽÑ}lãh=Á!€[€íu2e‰™›YµóG©ãHèf!Soe‹hÆvŒç5õ­sA[ž3¥C`“x€M…%̨ÙQ?{òÔK"wfT$¦ŽúÍŠK?ܳ#TcÌúÙŦKYv–ÜN:¬ä(­|Ç«‘¥ç*‹­1¥av²æLdm{˜–Ñb2*'X§òh†°œ6!ahÚr^q£¾ð"QúÍŠ[?½»þü1"ÄØb5†õ'âæÖFxYé–Þ¹­-+®¯¸øL–IŸgº‘åäÌÙ‡Œú¾9ñwûÝÛ£öõ‹Ž±ƒNÖ '¬+«OÖ ™ïy‹uwi’j>ÅÐÛKY¶œ £®Ÿ¤ŠT‘'õÃYlªŸ¤úÏ8ç컢SX˜1ª‹šÌºHLñ|ÈÎ|þéAë¹­£ÏÜúy~ßçÆ[·6Ÿhì^Øí=êÞûÇc:¹s¡Ñlm4ŸÞ ¯,î žÛ®;ü•þtA»˜îŸIDATéÅM—Y‡*¡±‹úäÖ!£J°Ž>;xx°=l­š"$iÑm¢¸äibÕž·>š35Y`F-Ш³TÅc9[¥Ô¬–o¿{põÊ¥pP2\{,·Ùƒ‡n^R_|xoÿã}õ!È·nmn6vÿl·÷¨kŒi½d>6»š;š£ºÞåä×TSV¨ä¸JEÞ »äF¨&›sÞË’" »R§»^µç­æLMV3£–ä©Å|u"ÔØè^–SæÆ[·›O6v^Üí=êšÈ´ÛíV«yô›öÎ+Íù'&F]•[EÉUΠ»JÏ(“0ÿõúW¡E Yµç­æLM’Q W! / ÏY3ö^–êCVŸÜj>¹±óâNïѱ1¦ýåÿßÞ„ÆqåyÿúP :”À‡.PÀP-¸MæÐܰµñ€’ƒ HñœÍew|Q:8ÊBbçÜ, Œs² ¢œÖ{ˆ‘)0KlH è‚º ÕÁà=Ô¸Rªêª®êªRË]ßÁ´žÞ«~ðÌ/ÿ÷ï*ËxÁP'Ô•O;ù/î'¿"å{¢yèéÓ§þ’èüèääw®òöà—ÖÆÿTxÞïCȃû£{uC³µØ²mG›Ñ­Ÿ,õ¢jž2µ­¨·š¥ž>·*àž¤ëè*ï5½ü:â߯”mŒûÈðÒXgÙÜüÒÖu½¿k+e¨9#çÑnð<ñéAù“Pô ›É‚ƒÑ2Âë!›ô.‡-®6濎C û]w}CöÌβ¹ußÒD6oY†ÒÕ¼JY‹Þœ"ár<~lòC Á÷J‰® 5“²ÛŠ£NÄ}Èòê}v«¡-t^5·ïÛZ­îü6XYUê„Ò´Ti,T÷’˜#Å¡ýaCÇã–„ŽCN]?nUhBšŒ8ô@•ÑC–«Õöw¶ÔÄ VVÍúL=e‚¨@ÅÑC6>ÛÚßúÖ’šÌž´_3Œ9£ÑhŒ^v$Qâš8zÈ šè!Ëí‰8ýA]ï+e4O7 üN%ª‰:T=d¹t/ß“š«+çÂ¥•æËMn—‹<è!€*£‡l| ÓÑÖÞ¾0é`P€Š£‡ŒZˆHš(fýl?øÊüº¯Íºê´±Ð*òV±˜2‡ü,KÀ1ö³,©¥â>vmkÐßÝw±-íÁÝÁÃGÖ¤7…#:TÐØ=dTÈF³±ûÿØ¿w×ù½$¶õÕ|Ùœà®pdùµ±ñzȶST¶GV\m,¹‡Œ@6BïÚ¦Ó—Ác·^Ó÷eGDêÒqÁ¤w†£Ê«—ÆÎ$þu<¼z˜—À‚¯pd9ÂÚ;÷±Ô%˜ÆDDÓg&»/i܇ ª‰û•eãZO©/5©KóYýx]5gƒÓ†>Ò;ôhË„ù “”÷óŒÂƒ,‹BT÷!+Ew}CŸ©wΟë¬þ`kÉè¼®:Ë­‘ËýÇDFãWt0n²|,&éèã>dPe܇¬`ÝõFÃh/µ½¦iæYWDÚKª½dª“ÙžªTFŠÖÌüƒú¿J^·c 6dz, Ó]¿¡æŒöÙ¶³7ÐjšeY¦©¤æ¶Î«Ãÿ"DðÈÒ{N¥÷"X3óGâTÂ*oÄ»8ÂÌ2¨&zÈŠÔ½º¡æf[‹-g¯¯išµk/ꄺòi'ÿѹgh¥*š‡¼À$£R\WYrœ ­òöàýH+u2¨ zÈ Ó½º!ŽÙZlÙ¶£ÍèÖO–zQ5Oy_þ¡YʯTÅ­ ¸`cYú·Ž®¢5­pô@•ÑCV/u–ÍÍ/m]×û»¶R†š3rS=j,* E¿1vmkÐßÝw±-íÁÝÁÃGÖ¤7…£‹2¨&zÈJdÿb?ü¡ï®åº¿n}C CzÈ ‚è!+KïÚæ_?Ù¾ý—m_vöeGDD\g0ááÈ¢‡ ªŒû•bíŽûXê¢{Q¬.Þ¿VMŸ™ì¾ptQ€Šã>dÅÛ¸ÖÓ_êKMêÒ|–ÆD?^WÍÙà´¡ô=Ú2a~Âäcåý<£ð ËBÐCÕDY)ºëúL½sþ\gÕð[KFçuÕYn\î?&2¿¢ƒq“åàc1 LÏ êdPAô¯»¾Ñhí¥¶³7Ð4Í<ëŠH{Iµ—Lu2ÛS•ÊRÑš™ÿcðOÿWÉ«âb ô@•ÑCV¤îú 5g´Ï¶½VÓ,Ë2M%5·u^þ½Û‚G–Þs*½Áš™?’§Vy#ÞÅyfNÔÆ âè!+F÷ꆚ›m-¶œ½¾¦iÖ®e¼`¨êʧüæž¡•ªhò“ŒJq]eÉq*´ÊÛƒ÷#9¬@ô@5ÑCV˜îÕ qÌÖb˶mF·~²Ô‹ªyªÈûòÍR~¥*nU(ÀËÒ¿ut­i%¡NDY1¼4ÖY67¿´u]ïïÚJjÎÈyL9ô¨±¨$ýÆ@ò„à`¨T–s'ðÐCUFY^Ýõ Ù3;ËæÖ}KÙ¼eJWó*em,zsŠ„SÈñø±É?j €ß+a$º*8d–µ1¨8zÈÆ×ûìVC[è¼jnß·µZÝùm°²ªÔ ¥i©ÒX¨î%1GŠCûÆŽÇ- 5†.º~ܪЄ4 è!€j¢‡,7W-,ªíïl©‰3¬¬šõ™zÊ4DQ'€ ¢‡,/ÛÚßúÖ’šÌž´_3Œ9£ÑÈv³±£ƒ×dÑCUFY>OÄéêz_)£yºYàw*Q5ÔÆ âè!S÷ò=©¹ºr.\Zi¾Ü<ü[¿bÊÐCÕDY. ÓÑÖÞ¾0é`zP'€ »‡ŒZˆHš(fýl?øÊüº¯Íºê´±Ð*òV±˜&ÍÓÍv„2¨$¯¶ýýNôuÂ**d©¸]Ûôw÷GlK{pwðð‘5éMሢ6GY)ì_ì‡?ôïݵ\÷÷Á­odˆET=deé]Ûüë'Û·ÿ²#¢íËξ숈ˆë &¼1qÔÉ ‚¸YYÖÞ鸥.ºÅêâ%\MŸ™ì¾ptq2¨2îCVŠk=ý¥¾Ô¤.ÍgiLôãuÕœ NúHïУ-æ'L>vPÞÏ3 ²ÌÚT=dë®oè3õÎùsUÃl-×Ug¹5r¹ÿ˜ÈhüŠÆM–ƒÅ$0=è!€j¢‡¬xÝõFÃh/µ½¦iæYWDÚKª½dª“ÙžªTFŠÖÌüƒú¿J^·c£NDYÁºë7ÔœÑ>ÛvöZM³,Ë4•ÔÜÖyuø÷n YzÏ©ô^kfþHBœJXåxçQ˜9ÑCUFYaºW7ÔÜlk±åìõ5M³v-ãCPW>íä¿x0÷ ­TEó˜ä`TŠë*KŽS¡UÞ¼ÉaE¡6GYºW7Ä1[‹-Ûv´ÝúÉR/ªæ©"ïË?4Kù•ª¸U¡l,KÿÖÑU´¦•2¨&zȊᥱβ¹ù¥­ëz×VÊPsFÎcÊ¡GE%¡è7’'C¥²œ;Au2¨ zÈ Ð]ß=³³lnÝ·4‘Í[–¡t5¯RÖÆ¢7§H8…›ü£ÆÐhð½F¢«‚ÓHf9ÑCUFY.½Ïn5´…Ϋæö}[«Õß+«JPš–*…ê^s¤8´?lèxÜ’ÐQcèâÑÉ¡ëÇ­ MHó‘‡ÚT=d9¸jaQmgKMœÁ`eÕ¬ÏÔS¦1 „2¨&zÈò²­ý­o-©ÉìÉAû5Ø3l7;:(qÔÉ ‚è!Ëí‰8ýA]ï+e4O7 üN%ª†2¨2zÈÆ×½|Oj®®œ —Vš/7ÿÖ¯˜&ÔÆ âè!SôE´µ·/Lz#˜ô@5ÑC–ËÚÛ®|Þžô.0U¨“@ÑCô@•{Åâ^GÈ€‚Qd5Uíëï]ÞÈ4ÿýÏÿ³¤ â¼²v&½ÀóaªY]2´Qï ÿg‰yu2N- "n|Þ˳|ª™ˆ\øQ'#7tu]×u5]÷º—ïE×F:éä|eèÑ9/•r?#ç¤ÙUÜ¿Ôû­(¿6F€ÊxÐúC+íÔï‡ N[ ó¸g¯¿ÿ÷;ò˳âh3šSSÒzK×gƒ±,¥ü$x…ÃÉ4#ß›@À*µ1¨¦3‰mû¾ß?ˆNa ³÷ì÷ÿñ±ˆû±Ó—ÑDDbÉï9º¡½ûž~|x& Ÿü×ÁþL9˜fâ^']-åõ½9q[ ^Üû8ÁO7Æ–üÁèõÓ_¶‚è!d2…ß²¼n_×fäö·ß;n8µgO@úVWt»¯½û§ñ.ëEOè¼/š~¢k}Á°¼ZÂõƒ¼åq:ä5> ?\žr«Çw-éMa…Ì­‰öD{僋w.ßùÓƒ-íxÃqY÷“uÛvŽë Ï ÷‹dC«\Ѿ«”]VCχ^MžE¨4ŸtŒ%i®Ýy9,=d€¬¦0}<ÿ¾ˆÈ)qß»øúÅÞç½Æ\CDäƒ÷E$!”3ô„\ÊÜ–fK…´‚…NHÓ¼/†¢‡ ÕYút]¿þéõ‹«\×M¹*Í׃Tþ䱿éY¯9ôí’·‘õ}“÷“üÖé'Tϲd2ÍÌ£išRÊ}œ6ÅñBO°lì‹ ½ZÂHÜái![ í-t©äA¾¤™€2@zSxd¤N¨Þ=MÓô,w»…Œ„CÆÐàÈ ÉWK öò|Çô3“÷–prXzÈYMa ³~¶C#ûÝÁ^x( =d€¬¦-ÝúäÇIoà>d€l¦*]ù¼ez¦É@6ÔÉéMS?pÈüïW’Æ)È€‚ñýJ@V2 x܇ I‰=d7>ì%OxëÏkå½;0YôÒ++Ýø°wñÒ+#çÉ0}¸ «RŽ,{ÿuçâ¥Wôãº÷ˆ\\½èÿé_¼ôÊÈ*ðÜ¡‡ UY2/‡ûã9YY^YY^¹ýÕmïÏ;wïˆÈ×ûÚ›LîCȤÄ2둽öÆZï¿{^ Z{cÍzd«ùÆÐ…¡'$&ÿ˜fyð·yžùã‘=d€ôʽ1lÓ\¸þÑBž+x(gʔ瀜è!dUâm/â `#y lè¯ü8uì\"۸‹ø¿ ]!4Ìü©Pô²*÷ÈRÍ7ÎýñÜõz"òïïøB¥78ž`•+Ñâ*aÑü4ô ¡‘äw¡Ò†ô2)1©ù†õÈöƒ× ,•F „sÉ¡-e™ª\þaH‰2@zÏe…l¤¬(=d€¬J dobW!‹&ªü­ýqÒ\–J¤Gm U‰ìæ Ö›»Jû¬]x…,Øõ—“‚.x:<Ms…ä9ÀPô2)·‡ì¦XòÑ?ÌšÀ¢(®-,îW¡Výäë'\!Í€êd€ô¦³‡ ˜ zÈYÑ2àùEm ÕsÙCqô2)%ÍžöÞúóÚÿÌïË¿þsðë¿}švãÞ1?[Æ€‰£NH¯”@¶²¼rçîލó³+Ë+el˜ zÈY•udIÒBeQdUâÃÅÊòzÈ&½ Àsƒ@”«“Mz€ç (˜_ãÔ (µ1@V2 xô2!¥ NH@Œ2@V2 `ÔÆYÈ€âÑCÈ„@”‚: =P0zÈYÈ€‚QdE ŠG P êd€ôd@Áè!dE  Fm  (=d€Ld@)¨“Ò#£‡  (µ1@V2 xô2!¥ NH@Œ2@V2 `ÔÆYÕ&½` y=d;?ìLz#€Crægòü×8 (…W'ãÔ*¢yºyó‹›if¾ùooF d@ÁüÚi *%ÏÁ=d@Áè!dE ŠÇ}șȀRP'¤G  Æ}ÈYÑÔŒïW@•iž:¾½³°Š PÛžô*íÿØUçØ‹ô6dIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extcompare.png0000644000175000017500000007144412032647161025056 0ustar ebourgebourg‰PNG  IHDRÊ›RÎ!ØsBITÛáOà IDATxœì½_ˆǵïÿÕ¨ØþÁlPÀmlÈ6xÑÈ«O¸šà)$pNàZŠáHÎ…s¢<ÜXøáÊs.{r!‰|ÀG:?ÈÅòÃÅöC82ü?ØHfž@L¶Á†ÙÁÞALƒîêUUýw÷þ7{ÏžõAˆžÞÝÕÕUÝUßZµjõ‰Ï?Û ‚ „xõ¿] ´žkÏ:'‚ ‚ ,›76ôÇÞvgšAA‡ÿgÖAaÑü?V/Ü5 (ÚRü7(‰ÝVH´Ûìá:FJ:Ñüc܆@H@ôƒVPH”4¨¤øŽ5”J€@@¢ „Žmf€ :æíÒÄ ´ B$1¥ïŽ4‡b ¡ZŠõ€K1…P€Z‚†ÙcÊ4@w#‘ˆµI­¨aŠBH”´¹G.@CPP¶ôTªðù¢©*ghóÈ$Þµ¥@+Ί hh®zZ0ugà³Ý%¼GÒû3—j€81HT !Ìec®M/Y1Õ¦IÐûÕ” tæZ*ñη¥5Ä^þC:ˆ‘ÐÁTq1!1*P͆*€FŒ$¤û¢çÓ+p?ßüg Ì [›¶¾RgðË’@™dµJ”h®ýôµø ß©J”W>î¡r… zìUÐa‚8P•¹Š@‡PXB| . ^?â“sû(j[5àG‹²AO¦y¸éæ÷ºðÝ·Ï­×æ©$D`jÐÝg„TШ$ ƒÐkŒbÂÔskÓObaª35n¶àòïo›wëÔm#w#ül‡Tœ(@‡)ja’i—T 4¥ ÷‚d³Áo7½ï‰  »ŸOð¶•² ,´vm~æXÓñÓ¨ubžmS•æI0Fªè¼7T¥ªÕ>e^«BûW$*Ó&ÃÔf¨± Bê¶T Öæ`°¤M7Ü£®°dZ¡ØÞ5µK bÚN 4@ÍWŠ@Èm²¹S\Ùƒç¶Ú³Û'>ÿl§õ\›&GH^ÄúÕPÉ-?sPšJÚ®~Ø}ôpge‡¢Šú>æA7j¶) ´öKÜhú t¢(å½Õî)L”¢WÔ¶¡^cr¥ÚGÁ q¤-´ßžˆÝ³†®káçÊázµj±ô’'>BµÄEÄÊôC1’0ߤQ^K¤í*Qþ+JÝ?ìËìZshO¥åº9Ótry™ñRÖ®é$ùpÓ™h[¿öyà&@#Pw—À×v1€@QËÈ O!0êÐ1tèÝE̯7g ÛÚräò7W7Ê5U>!ÀZÐu0ÔœyM[¶35RƒÓéDVÆ€m% Q, º^StžøV áî Õ‚Ò~oÊW·µ×C›ûõþtª%LLÉûýœyà´ŽÐár¥°äÚÄø!€%OaX1áý©êwm×¢5@­)f•°Z ¨11uªs÷È¥‘zqËh[,FC1Wt@'^@¬“”­k«Ì’X™ÞËK3ß'¾ªÐHHèÛwÁÝfFXЈËO)Õ^ùûm{°ò¶ïBZaP#æTQª½u¥‰7z¤—7Qnô˜ÑÇÞ¨RùšØÞNF¿ÚëÚ{7ƒ¯±òJÕ’©riS±«¬ãc§êl‹ ðËè`+1×äºz¤g@©% ÝlN^Ê+rm‹š~ ¡ †æ†+Ý:E¢œøÎ=ºGE^|ðáÝí· $ÙÝ÷î]Üz£÷«ÎË߉þ¶¡/¼_}C¦çp£áìàO'P‰U¾ô€*«U•?. 4Œ:æç’[.(@©D³Æ‡†ÒVP4ܤ6QJ[c²¡4´J È,áÏ×ßÄvò„»+ï]5uo´øý4-oÀh ~:ãÔг«—B Öl·X«³_-Ŧ™„FX˜zЩ[¢{÷*!€¢>‰zë”k‹c· Q‘%$þÛhZs20Xo“µ§›Ò†IŠ:¶kL´I-ÑŠjÐôŽJAq½C'$•-«0AìSÖ W;4&S1 bòO/j;&„‰ŽýAMƒ{ꉹÓy†ÂÆP•èðÝ&± À&«„±2cÖIŒ Vuj ÎƧ¶ý¢±—y}œ”Ñ,,Xj°ý¶§qZPipw‰©\UHZJÖ<£U¢($¦;g!h¥†F`ˆyO($*N4ÃT(›.T „¶ç³¦  ^³Ç·^$npoU”é}‘ÑZØåàÌ3 ÷—_iÍz‹ '£Y©Nb ×ÎÕ8©‡„mf¼k„HB˜—ˆÍ+ÄHB’#Þ…bí© î&µëŒù6©¥RPd©U^7­áÔ9ÛÿÀC/ÄôÊx…ûoÇ0QÞ@™ Vˆ:½˜5혜$Š…ùSC‘=L; —ÊZÀm”Îe´‹¬ÔžÛ¥XûéS…:­ï o!cVtµI¨ ¡¦˜Ž1V z Ò# i qà5Ëæ‘`‹€%ÓŸdŸ; ©ðØÂXÇÃÚ¼iÀƒ0Ñq øÚ07E-êP9¼ô­!DƷ׿ýÛíßuü¥ú·®BgùÈ‹{Ÿ,C¡ó³ëÑî=¼=@[XŒ¶ ƒ5Ï&¬Ê­Q‹ÛD ¨D©š»jù“úÓ>jŠ;TnqRCLÊ•´JÿRCXûº’Å/†(RqdfT1”y2¸6Æ Äü“Évó4 kÓ%èƒ4-`)ÖˆÕA„zÉu ôökÒÑI¨ÉRGͤÒ€†GÞÍ**Ií½ÌŠš0¶›f ‹•75eRÎéwØ~KsÙj®SÌ¡­Œ}žÚ#DÙÚë•}‘M"#æNÂ3𪘫ÉZÉ áìó¦ñâzá™kÒ]혤x«Ü¨—”GBsLƒ0X%Va„žU<ÖÈȤAƒ$®î<™žO 5—¤k‹a•q¬RÝQ»I²°…ÌóS$Á¹fÌób:›´m™Æú,•o¦²ÿ%Úuxl90k ²F æ"L`ŒF M”˜‰ÂÀ’ mã{€0Í.åó€ÍȦԡÄ|ï&3ö¡JëÝ$‰ÐØšjEª'ìÈÇ)cªS+ÓáÕ)X$HIpgÄd<B;ƒiÞ +#ß|ÅjÙ¦´Ñâ O Ò[™ðüˆ×0ÒýšIØL¸!>Ò8Ûk ÓYÁXKž¶ö?Vx¶Ë7–Ýîïa%¯i6y°a- )ë…ÑO ô|ë¦MfLhô–¹G 3°ôe.ì ” …DÓÄ«w­P¥rv*Õ^K(‰Mn5Y;ìMщ±I¿ Ÿ–ÀªÂI~Ú­=•g:¨e Ø|€ôD HXÀ-L3èT`³¢wñš«1>øðîhÇs–¥ ØÞøyC¿þ–j4úx«¡Í`³*°ŠÛ³:õN°Ù“;Køb–›°ÞÞ[–O¿J ˜tßR $<ኔ-‹Ÿ<6͹FG§^Tg¬3mth$ ‰²™1´ÑFQê0PÎ÷ÂÖAlL^µ7@˜† K錥P/A!Vбd{ (SeÞUØ7Êuü~í%Æ„`;ieTÑ©Ì]?D‡ñ@Yهؼüþ(ÖÞˆ_× 6låºZæ6]ÃÏ{À7þSï­³ãcœÙ¼I+c™ç‰*gûÓ™<Ú6÷›JŸÍ<æÆÉ¸bn €F¨“X±g†±ší®¨$VFJš_È´köu0&b@'¡â´­5KIešrÍÝÜXlçsªVPnB„”23ßf¤›éü™ì”˜púϽ>¡1Ý™ôM9'Êš—`›ÔÓòÆK*p E­°1cÀU«?×fM8¦éx4h ­a,ó”Í×)=ꦇÐnÐû6Å)£uQK v°àÁn¨uhú£½4c@!D’vÃ6†Æv ÖÆ€¤fh›kÖ³ÿ™'Üv1¬ÀBž%´¸)Œ˜06yÓÏÙ×M#€ç«á\—´}CïO#5ÌÃì!sƒÞãdËLjE~åÍÕ´á©ô­uÄÈ\릜ŸrܵŒÉÁÎèe´»ÄÑ~6WÝxujŒ0> ŒQÊ5Œ9Yg…òh[á!4?äV7P»¤ÂD¶&ʘͬ®M^®¦¢3U?Ïž^-ûi° U™R õµ³: »ýÛ­ÿ¹ùÚ­" 3 N”âŽñÛŸyÕ=öÀÀà&®'2$IO:úùmÌ‘°úÌ#ž ÷Ù[öÌfûÚþî[–Ï\ƒ1 hg³} ¦åõæ&ì?x@óÌu@‡ÈL“Ív¬ìaBû LbØ'Ã9a°¶@ˆƒX-Æ£3ÖKÀèb½dFÎJo,{aÖÓÓSq,Î@wÇC%RúÐF¢T`ZjäÙÆÎ½Õ€küŽÜC{—`K)`:EªHvÝMxXæ2ùŠÊ{茦Ԭí(3DÉü•s¢ME$ÖhÁÃ2“,‹ÅÄM²¤vY™ùS‰Jq»i²Ä<²!mgÌÝf˜ vús{B×µ˜LÍê(ð\>Ϙ¨À·%¸á‹9 @SÛjd´Åj¤mÎÆ(åj„Þ ê“XYªô˘ê Ržw 9âyÍY Ã„ç=ËŸyexpCÁN¤¤F¼dFfÖ÷ÂxÉÚw?ÑöaÛ¤ÖÜ ™A¿Q± ­ |I¡¼K°µÜ{¨´yØm“¬åI¨’ØØÛ“XB ¨ÀÍžPé)ãR=:¿ºvÀ–0{§‰$h©·CC+k5½»5ò›ýÔÅòË®B²´s“E„6žÚ´±Ãs™ZcÏçõ c_ôz2­ÝhÎ.á,Ñ:P~ΌڎÈ0® =þƒ2c3™š’çô¥Ç™"èêf$ÁS0ÜÔÚ`íUÊÍ…ÙÕC¶iöZ +ù¦TÆ÷¦ìž´ ¹U ¹ÍâÁ´±Ø;6Ó]Á›cVÜ»8o× žlõû~;Š5s±2–vn·¶[˜z¹Þ%K h˜¢f=$ä“aËÖ\Wy]¯çÒÈ“}Þ»KEJ3#Š' ¼Iåkw_ÆôÂ6ð[fªƒ«ØNW% '0ÉichÓPÀ¹Ù’ 'yc,é*ô:©ÔLç‰Íoð-^f" lä¼emÊ›çâd¹ït"ïtomˆÇP w0ÎjÅ?*rÅH¼™Ä$¶s%Ú» øéâ©+2ÙjM«ØÈó€æÅø ÅÓǰ¨y€•Ý® œÔè8A(ž@tÓ1H¦û>Iƨé]ìB*jC”© –ãvbšŽŒ5#5”·(5(2cf§æÔ<ã«›ÑüRù^ØUfÃX¹Na¬|¥$B„üR“¸ BeÜnhغôz÷Mcè|/ÓŸ*\Òâ`ɤANµ4E Æ 4cØ«6ì–Ê?®~c8…‚ ÂªaÏzöôê³§Wéô:ÚUù…ÛÿßíèÉèýÞo4®þÝÕ;ïÝYYYÉ®¡hÉÉrëÕÞÞ¯â?ý*l½ª’ì:”°õª‚RM|Ë­khßðÀs"α|úUzi{»þa×ܺ;žGð;^Ëþƒ·–Û×z)Ù¡`ÿgí8sݶwƆ±v= ðçûoØcžZ»Cíß7¿îßã©s×ÙbL"#fK)‹ ؉:Óå¨%h„8 ‘ÚÙ_ f2ä"å5¦S"Ã÷0"I±[Ÿél`ºÅžqÖ1Ö¾önÔn‡ÅPœ²{ÛùIÑÜnúëӌ҇oáNÂÌ¿6Yq`Ýñlß¥ŸØmš½¢Å¨:„!²W|È/ÏIÞI ÛØ)¯XÒ¾´>-à&àŒ{yÈÚ‘ü3ì ˜ÝrØjÅ¥Í"™^Ùzaö›åŽÚ3–˜ƒY»ûL&I+ÍÝÙ9ª)gÛ3¦fíy½À:u:…aûW\ÚZSÈÓ"„æ%TdسzÂ%C…ÐáâÙhó(…Î÷BôUðü‡ÌùÚ‚¶É¹œµ Qþ 3Pñô±ï{ T$Ù}»‚Ž$"cØP4[o·S¿!Ø; ìE–ŒTƒšÄBk°†®t˜µúô¢yë¥Ù3Ú¬Ú`ûŸ7ÑãÕ¾5HÛÈÚ§a|/Œ Ý)°C)º\h'ÚŒ¯ö€·X/¡6Dm °ÎÑþÚŠ`7b(k³Žºš‰‘2”[©}' ø"/±×â_ÁÜ¥)Û›ETe®8t#U²…’æÈÌl—[ªêeÃ`štÅb‚£,Y‹)+?ÏòJK‚É’ä\÷Œ q6Œ”uHWýl° Ãþ9ð”aµ¢'#w?2Ž7ÿù¦Rjý…³™ÃüB×^AØÕ_aëÕ°õ*€xïWôò,·^ [¯’° ©Ñų̂“åÖµåÓ×l"˧¯‘Ô H,Ÿ¾Öl_‰¶Ý™[â|EhƒŽ´ç6ϸÄI[4Ï\£ûÞ° ÄSk×›kבhÒO­]k®]ðçûo„öt’ܺYGߘ†­ÆP` ™µ,…䊡jÄ PÖ}Œfþ8$rV[Ø÷ŸW'“€[z®y6Ýtc4þ°Í4´û6gG{¾MWg$‹rƒ MÑG(qhØþ@+»B•åˆË¿k2VR4Ï\sÏ ë’ýo9¯”‹&l6þ|ÿ­}φA<µvý©s×éfcV±uú5vX VPK!)_} ` j)VxÐAì&t*¯ÃÐégÝ•O`lãF×FdP®”éûÝë­yÙ›gQÏtü¶ ÒåOOI§ìFÉië…”vM•õó·¶íw·cORÚŨ ¾c ¼rDqqy"#Њ,ê.þž]ÔàæƒÜr$ïAòÌ~ìÄÊB73@³G…qµæ·ÛÕ)Ea2æ(cwÓ¦OÒ®(3¤i©g*®Ë\’1КÝÌ5Ü„·âšE•)O¶¡ª„z8+5LÉ›øN1¼úàž+*=·Î?ÉI 0IIζªÍhÁúï+»ö©wæU—~/kóàׄ-[ —¶È™Ê5ï/@Ëû5¿¸Íê±SgoÏlÐüˆIÑ‹c£ø˜°u Ðñ^:ŠWfá¨9ƒ·¸ï'óF>äQFMP äÙk ͉ W&2¶›Äšk׽Єl´Q.B˜Ç°ó#lã_ 5ÌòTZž P ¨%+D8N\Ârg¸¦ñ´wæ^Ì#¨ÍYäQ¡9ÖˆõK·ãuZߥxÑ„Rfˆ ×ÀÙÒóÌ ðâ^P×EϽ‹ ”x! ¸G7Ny¶Éàô½ÑIAÜ ç„Á°]—Ws?ê/d0Ã(˜ …„úE»â@‘?¬Ûá”ïnéù^„ÚMv‹_ŒÀv!¦³á1+Ø9ÆØc²oœÕ“X¥ãö˜·ÃÙ¨4Àbxš$ ”¿p° cJIÌÚ 7ø ¼ÏÙ“¨â¶/çõ6î-ÌA˜(çÎÉ!æØß Íã9š(ᵩ¾S§IÛ—Q¼.ÌÜW+ ²3™†ÜEô;<]ðèzÍ´gÿ m¿Â“#Ê"Ô€JØé/°E OâÖ i^ºl'õý ñUROÛºÒ‹ªàª‰D’}I{¡qÈëwi[!åî„Õv2 "=?Û|ñD¡Vó6ÿÙÁ­GµÇ(ÐN™ù)ßkØF/ଧvá S¾DƒÝ9ÙõGiSMÊ··™‚ Xt²›”  ÍBbÀn$üˆ%´ȶ]±¼u@¡ó»øxZÆÿIsO•©ëß mv\™—ŸÛ4X«’W&ö 2:#²³°vßßÂ÷è 8¿WŸo¿ÿûÝ뼯”°«û›k'Ú¿‹–ÿË­ý—›O¡ÓA¸öº=ÞvtËÏ\&¿br¹pvæüªØ¥öi* Ñ-—‚^À.è-R¾ ~ïÙq*/ô«±¨3!÷[ w˜j^öìä?nJ>¶ŽÜôÀ,A€j´ 5Æ”Ýöt;2ày_x^c¡3“:ß ºMÍ]Òº$û‹Gì²73ïê‹Êç÷C\Vš£nÐEi¬ã©ví4#Q·Mï ;ìΚlÜ‹Øù^(žï°cç¿f†_¾A¦‘eÕo/ÅÊ,5`3ϱ’Ühx”Xß1¤Zíh&àsq/BÛìÔ¨±?MRweKØõŽž `½ngìöõ™/157ÎÙÁŽýÎÁ“¶W4Â…Åz*lW’zeBOɱ5HÅ FèpIဌôa–“O9/îE˜ò½0ë)¬ÿ•­Þš¹„Å+Yë&™Bù ƒ1Wnªj4ÀáLÈ÷ÂÆ×¢® *µ¦ 6fIª­,vºï±Æ Sþ¼øð\¤Á‘xöÇŽÔ=c$pôÌlóeTœ²^p4ÛÄ-R yq˜Qè|’À%P! !ü.Ÿ¼ÅýÕ¡´¦Ãk(X¹™Y/Z bö 2V ~ºÀaÇ\‹­y…šÒžÃØPƾ³»XìÞA"€k^´}™h¥‰NB£N8"¸2¶0»PŸ0¾ÜÖÅÀ‚Û-†‰ã>àÖuóscÅ=Wn€ÐÊâ"ò†„i,1Íørf<=Ë(îÉßXþÁßœ…Rèkýr¤?üÎ>߆Þ~/ºæ[ˆ7.mÿ$¢{aþää­‰bù™k:PäþÙK{}.Ÿ~µ÷Ù¯¬ñúvÚÇ‹÷_ë}öÖ~Ê ôM¾ê@ù FšíëvFVóð:}ÓŠV®’'ñÔÚõæ™ëûÞ°ËSŸ:sýÏÞð½;É p„§þ&@ŒØuo.â^˜HK1ëƒô-XÏKÏó3ò#l¾·\ðf©ž¡®9çì OŸ9B‰™÷Ù¬P¯ô½àf‘ñ$ë9hšÀšô Ç?N…?r]B6.+ j+Á#;>Sq≠ڠáµmîó2súH¥x²‰†øþv¢“qTƒ N:¹À«Më–„i…jŒ+ÔÙe‚¾§–Us¸ y57qàÙör:ƒ` Îfmû%§4Yô+÷y{§é”—~ 3{h {fÍ;rRìÎ.©ð€7`Ö£š5«©Å#Ö÷Bñ…ìJEó(²õ-;v!>S>È:°spÊ…a0Ò<ÖÞ³ÍsŽdL²+QAžÃæ«¡B¬¡Qf8zé5ÍÆui· IDAT]xÓU:ÑÖC­‡›ƒ;Çs£yƒ®•ƒæIŽ“Ìt!œ›s€8áÈ=4ˆa+T+)Ì |&+{¤*çÑIŠÁ=Tn&ÔºÏÃ*@ŠýiØBÉÖ9Æç8A^Íkl®»×Ø!¥»„7¾Jô{¨*í~ÍÆZuÀõÄ:1 ‚Trcrúþc Àsêtq/@šb`ØE=1àÜÏ©j+ÐÝ´¿GæBÏÚá?´cRs^#C^FÔ1ŹnþÝO¶?¾¿wåÙ³ÿüùövñƒFãÙÕþÅ-Ü^Á¯"üàöÝmÀàš£Wéí€á3¯Ú¿,ÛYÓL«åg®¹ÎŽìo ÆÃèåÓ¯Z;v³uâ^((ÏñÓÅ€¢&¦yúšöÕ4Ðl_½Æ‰AÔÍ3×iÅ·ðä$€@?µvÍÚ*b yæšqaãé§Xa°oÙˆy2¨Ñ1·÷j)ÖˆÁ!;Õ»£Äj)„Úòê)Åq/Ò=ÅÊ&ÒR4°Ù'_³Ÿ0#] e­õ¿kRë©6š^6€„¯Å´‰c¡iø¢¥Ì4 ”ùКMY[×cK0£Xn4ašižÂ4fÞ81N…q¢¸é´ÑÏØü €ç’a§«×î+—s¿c楩 ^CïEr¤Á+`V©Å¶Ñæ™[;Ö-•ë—–™âå0>\Ú¯Oq£)hrc¤µ^Ü Ø!¾©VO¢y¦cgaVéºåcìðËúöQÏ}=©€ýÜWÁ* cº€2q´ â„K.xLq²q/à…×fèf,d9‘ábR©”ü¢†%°’¢À*fÜb7%Oëìú ãNK•©ts¢öÔƒÀË’½pLà` .î…Øk„ a0s"@ÚãÁ ßû°Ø¸!ë ÐÌ[txbQ“‡kßÈø„˜#.PogRvóü’‰Â>-^\fÀÝ#ìmZn\»ìÚøÂô]¬9¦î×ùtZ,²ˆS!3†‹{a5"ÌZ!ãŸÁµ Ó2Ûhß<ֲī ³È ü¼¸\¹Á@ËFÈO“+Hˆ»œMyŽŸì±Ä— ½VóZUõ‡²ULðQAq–°õë·~®Õ?oï`ý&Z«ý–ÂÝZx¾Ûÿøñî`këˆìô5—]if‡G®¤Q5”5Ó%îû2Û(„Ú]ÖLBk³BH«<Û‡¹iBWOf4f¯ÅÃ\›ÆÔY`j=°®7ï›#üzÃ-\ ‚”Ä=©fIª>ˆ±+„X²µ™24®ì÷Â[aŸ6]ÀØ‘3¡€Ðð¦H¡­ÝЉ¢yzŠé©Ø!ܾ±¶ò‡¶àÕùÚv{€òÆ"èW9÷>ÜqnvŸrïš*­¼µà™Û¤Ö0 @F ¶ú²¢âq[È‘ƒ‚¡)ö«Jõ^™¸à¶,‚Å„ B¯ÓZbé Xn»\xõîª^Q[fÍ!<(1 ‚¿¡c¾ÃÊÀ…÷6+;lŒðìà¦ß"g@œ£hvȵžüžOjy$·ª&¢/+ǽç¥ü\A VF˜¸à:Bþƒ{RßÿîkS_°/ûtÁñÃ’R­ó˜Û×I&}¿ka·>g‹‚Y+d‡+^#Fj(_XÀÿR®y–À¹á´•G¶ãDÆQ |ïÑ8;·ëu]à)óNØ0<Ê[› oñ°)혇àok¥û~÷†²#yöÓ'¾ñÀÍ¥íI fÞZ\¼×?0“§t ÅAÙ@’ž¡æÈŠr{-z…9¼OM&&Z½›¬$¬¸¤ëÅœ‚ïqeä÷‘jŽî9€%8 h÷šlu¾È`ag„¹Ž‘ªLìN®JmߦôãÊÛÞ+_‡»Œaç,K©ÍåßvãÝ?îîÝéíw·®þ×7ÐPÀÔ5äc„+2DX ³uÁM°üÌ«ÜØ÷PñåV®»o™‚GážÎ°&} ö0€uRót®›êã=ÔÒX#Óûr ¦†ÂË(˜ê×Tœ€¬ë±Ÿ:6•ñ½€ç{ái 焱sÜ €jQÜ ,gAžGÆ·(ãÔ‰¬¶ðÕÝ‘·Ö°·™ú,ˆ©)ªHßÃvUË{aj+á™HÒ‚&¦«³Q¼ p/È!YÅ£L#tÀŠç¦à Å`Ë–_tþÒ ÀöF**¿N7]ím3Vhz#{þû^_…ц¾ÚP&6wQ‰ÍiêÓÏHu0жoã0ÆlX2Ÿ¼2RÏ| ±Qq…rè!mûÑô2Bâë~ûšs(°8S œõ+0OŽû3á›ð–¤Ú0A~ vãÅi_ÓðnÉÖ6Èžs ¾ï©^÷ÈñQ§0”]’¸’*±ñŒIÃwè1âØŽ+ì" ëåSÅöÃuêÆW†;ªS:…¬²¤ï~ƒj£8Ø¡6½•æ–Ì\€† hÆ ,%Ýšd²i9}°ƒ³sN[Àj Ï÷Bq³F´ $)E3½H%pö0ó{¡¸~J9iQphºoÊDã(ÛÆŒV°÷H÷n¿wmÔ¿r¯xÍ|¶ »a.m,L~\]Àÿxu¬¶W°ßÔüyB/Z…çb^¯Z݃ß÷”‡©£-Ìá±%!ËwÛׄÜ(±°ðzVkóuðíõoc†=~œ³|&ðAöð™Wýb÷‚vÈÊ××ìÙíÂÕ€òÞ=ï·AUN’î‰7¯% ÜSÑï-ä–jL³3#Ô˜:§k4ÓÍ‚Íõ¸«£‡€ƒÛg\uŒÔpm™ZŠ5}ØŒ"ušèàPK,¢ísO¯–iÂÌ"OJç ¦(Ì`dò1N&‚çϽ;;*;á[Ó´ÿ¸{Ao|ùB?Q{äz²«üÓ㘴TGêOë$I_)ƒo±÷†e1צ—¬óVã½_­ùÚÚ!­ªügÌ_ÆæåŸœ'bÖµ¬…Ü(Ö̆ظv£}>Ó“Vn®J;uš»ÈŸáŒFÜs@Ûô(°à ß©òû•+LÐcÏëë·xüáióYöÍ‚MKN,¦'±yÔ‘YUË‹˜´w§ôdš‰ Ðúåf—2—ÈU"਎ö>ðgŠ=û9ŽÄkŒ<“U>ý\Ü‹l›mÖú¾î‡Ät‘»~¶íg’`âÕò[“dÚ%¼f'€{A²ˆÙð‹Ú ¸ìš‘ìÉ.è캧‚c½‰[’æÉøáÓE罡*U­Þľõ´ßý*¿¶Ë¸Fei¤¬7w:}rê$1íuŠû¢íÅH%û¹±3%RºÜÇs]÷›A•‘7ó‰ÿAöy1,¬CÍðªvŸq.3=œ•Š^(ê{øl;¦¬=MÙÁ `Ÿn4ýÚê_¾¾{ }If æ}ÚÎ> îÓYVx¬6.xìž•0t]‹›ŒcÜC¯hä V€^òÄÇA¨–¸èØõÏ|–ÙÎ [ ®%Òö÷)vóÒzO àÅHH-îÍusÖna­©öZ.eíšN­Á#«ÇÝGS¹ Ð..¡wvfEF`¢/°Âcy(_Xxvã€r‘ËôŸ¶¹üÍÕ󋟪p–ØÔòTºš=,íÊîý™œ@‹Ìïø’vä”êzMÑyâÛ:ÇùãE2­ç§ ]¿áuxÞpÜþéT‹ ¢¤ú9ó:Ài#, Cú;•Â’kí7GœÂðœ:íŸÊ¬ °]‹ÿC x|7”ôÄÞ¶?þ³ 2],vAW4\½*`Â>BÙº¶Ê,‰Ý›f¾O |Ua?Áã> go3#,hÄå§”j¯üý¶½XyÛw!­0¨sª(ÕÞºR4æ^=ÒËkY§®Ô¨RùšØÞNF¿z^ºðÇ©/½¹RµdGªžM©øu±Su¶EøeôWÛJÌ5¹®éPÊ8uz'{ëGì :S+›7`mKfÛo&H‘ØO§<ºGK^¤ÿ/Í(K‚ 3GÕû3ßÄÐèçSSE¿V$^ç¢y ]¶_mç7ª“­¾Jõ%æjXú•{ ·óu’ŠIÉ‹\8HAA„Zøî€ƒƒ‚ ‚ ‚ …È AA&ŒÈ AA&ŒÈ AA&ŒÈ AA&ŒÈ AA&La(2Çj;õuµÝÚãoŒ|íLâùÔ ¯µÚ^­Ñ—˜,þå^ÈÞÈø%9™ËU_ýó&‚ ,äá÷.ïiê$˜é G¾Äj{u(u2 T}¡¡„ˆ ‚ -jÉ ŸÂáìd;Ëü%2ªb|‰‘Û0“9…¡|–¥oo$Ÿ›Haöü+úGŽOEš´Z ‚  Ï|/l“ï ÇI­b^cÚ¹‘ŠdËn¤¢$3¹šl™¼zY6A¡ZÖ Û—L£_/1*ŒÉ^¢)i—1“-<:ûÑRsšIA*Ú÷¢Œ‘¥À!ôX‹7à¶Úk䩊2w–E*%AaV í{QÆük}ˆYçedæJ&uS‹Q8‚ Âl™pÜ ê¿'•ÔDÒ9œ«d $½SÇÄ–óôVÁ”ù^Lãr‚ ‚1yá/ÅÄð˜9½l8>æ4G&ñÉZ2ªË!³æ¢ðFê—ä˜e>rš²rDA¨Ã‰Ï?Ûi=×ÞûÃ.Ì:;‹ÈbôÇ‹q‚ ÂôP|ðáÝí·%(¸ ‚ f¸ à8jãײi”‰ßEÅ|ͼ•Øhe2ow!‚ Ì3äÅQïT-ÿG¨ ŽPVA„#ŠLŽ‚ ‚0aD^‚ ‚0aR“#;Äl.‚ Â(œ]s¾})y±zF‚& ‚ ‚0.29"‚ „™Ø7GAAX`¶?Þ.ûé'ÿ“Ýßïú{D^‚ ‚P‹õÖk)“#‚ ‚ L‘‚ ‚ L‘‚ ‚ L‘‚ ‚ L‘‚ ‚ L‘‚ ‚ L‘‚ ‚ L‰{!‚ Â`~ò÷?©°È AA“‰ËYLŽ‚ ‚0aD^‚ ‚0aR“#7ß¾9«|GŽ«W®î—§Hárë[{p³'â{! ÍÕ+WÛÏ·‡š„A˜ü€³@^ÜzçÖ4®Ýù¢ zze‰ ‡ÆåW.·Ÿo<¬Ì¶!‚ Ì?7ß¾Y_ ö ‡d½m±0dtƒ˜1A•šÍ{áxò0\;I[‹AƵb÷÷»âl!‚pœ)ì¦./:_t7ÿñ:m_~ùòå—/‹ÚX0ÈcÖ¹AæˆZòâ„ÇP©“¶¸õ¯fþ浟½që_omþãuQ †Ø0AŸÁ¾'Nœ¸ô£[þŸ?®™zôôÊk?{ãòË—ý¯ýìj'ŒŒˆ©y¹|Æütè§¡2/ÔÁú^ˆ/§ Âb³Ú^°³»Sçàò‚´ÅÚ™ÕÕ3m;v×Îì «0ÖÚëëç×ì~v5<'(l ",¦Ù-D[‚ ,6¤-h£ŽÂ¨59²z¦½Ú>±Ú>A"cHR´OŸí}­GK!?;ãïñÿ!µ‘gˆï… ¢cµEៅ çÚÙ~~¸ è|Ñ]>¥ìŸË§ÔŽd{ ¬’ð÷eb¨i?5:7³G¨ø^‚ ,*…bb Â¨÷bçÁîÎîã´€í¶if„hŸ>»ýÑö¥¿4l:y‡ ÚCš`àYþ1¢!&ˆø^‚ ,65-2 Ô¯ÙÙy°»ó.¿²Z߉¡ÌPÑù¢;lˆ­üEë¸hþäŸ":cLÄ÷BAÈ3Øz‘ë¥-¶?Ú.ü‰L£ñ$qàOˆŒì¶)Úb"È'HA„ µ|/lç=¬¶Ð_Eú«èî;wßéÐ?Ú¹ýÑv}' Ò„¯*ü=¨-ì¹²–dRˆï… ‚à3•oŽnÐ_EúbÚi7 {+8_•H¦ï/›©ŠtRÞ'T4ÇPˆï… ‚gZAÁiZÄJŠÍ+³$C0„ùDì‚ Bži}1•LÕtöö« ‘`4ß‹›oï¸z¥xiýš»Ð€ƒ3 L¤ð€êkeÒ/<¬,Ù:iΊ²{±¿¢¤è Ë|äj-;½paª3 BmÖ.¿r{œóëÊ‹‰OÄOÀÅápÖL¤ç¨îG‡ÍÌL.=qªïeÚöd‹åê•Õ›oïÌmQ Ââê•K5¼ùöýüÎiY/6^‰î¾Óiœ ì?ºWxÌ¥øÁ”®.Sõ½¨c°_Y§’Úf›R?T˜ùÅèö–y5käò BvŒn˜Š¼ˆž^é|ÑÝx%"Œîî^þ˜×~öj|D˜s3îÅø} ¥PÿøÌÀÝïÒ öÒeS ™Ÿü«”ÍSÔŸ¹ð³äïœÉ´Â°5"ÂQaZÖ Ò ó†ŽÑ)!ŽPÜ‹Ñz24cö‚Ú¹á{æ§‘/ä'[˜bâfF&ž¦˜4a‚¬ži[FÙv!Ó’#Óý²ÿùgî×û…¿ª“ªu:j=?ØoT8Lf»ÓïüÊ:•|Vß4¯*2ûºC–]:o±9ÏØÆ4·”Í•YG†ºÄhùh52Ù<‚P“»÷ì¬Y­Ø.d¾äÅöoîw¿îU éÝû{»÷÷VN-¯¿¸vhÊ8rq/Fp Þk„s^·ÎÒ• 'ÇÛ™ŸÎx~r"B!kgV­­"³]qÖ|É ÿöÉ»´±ÚZÏÿº³gâg\ú/¯^ž„ræá›#Õ½ïÀÞkÚ®sâÔ9šËHãLjŒP#^½‚ CÙ-ˆ©Ë‹¡¾W²þâÚ³§[oüã[:éîuîÇ:Ϊå‹ç/®žY]y²1ù¼ #1+ß‹²ÞeæyÛ¯ç3v8‹V2û}‘1ÚzÂý‡VæóA8>”Ù-fì{qâĉK?ºåÿ9PanhE­oFªµEáwÛ'´£0µÂϾ+f÷bØiû‘/:ÎÙGÆß"ãÝYÇ÷¢~²™i‘ šfbE˜‡<Âq`}/H[Æ¡¬¬Ù©ßÙ«“atj€~dö4Ÿ0»w¶?ÝÐzîÙ )!Rç+í“%óMµã¦0Æô½¨öò;œ>£Âsàj‹agìé¾IÿbáO5ó\lõ‰#ÜK7A8BŒæ{1­oŽXVÏ´WÛ'VÛ'HdL„íO·[Ï=ÛzîÙ½?|~÷Â`ayè©vžÉÁ~y5sp~Oa²™Ï¡ù‰—]"“²ÿÿ‘ûFüa~sÄwH,ë Çš^7­‘cIvü‰W_·:ŒXuô0_ÐTgÛ—,‡SæeÔÉÃLxÂbC¶Šüv‡çÚÙ~;†8^?Ê:^ïþï÷}£ÅÞ>Ï0òXP±a·+öÔéû󖌚æÂã£ù^T·þãøcÖé5G; ¦Â¨¿¿Î] ›«2VýÓP§O©Zë+!A&ËȾS·^ì<ØÝÙ}23"ÇúPæ·+ΚîäˆõE°Ö?·prdûÓíüíw'³"2³yëE¡=c×ÎŒÆQT'ó÷bá™yg9ó ÔçeUŽ#Ľ˜úäˆí2‡í;+&G&ˆ?B9´{üœgöT§0Â%^ež!ß‹YçBA˜È¾òdƒtÃöG÷HF²~þ¬|1uNó›#‡È A„¡ZìѾ92_òüÅÔ—þncÖjqã^ÜzçÖàƒA”Ýßïû%‡yŒ{!,<â{!‚p„ʈ» ¾“b÷?ö¶ÿý~÷Ën÷ËnÙv÷Ë¹8ˆï… ÂB²8q/&Bû[-êd£b{åÉ•YfqQ¸‚ ‹Í"Ľ“ÛÿòÁí¾ÓýºÛýºÛù¢óþÿù NÙÿfåæ{ýWögÙAì‚  Ϝƽ84.ýè"Ø8=Xn¨Ìöí;{e§~ììãìùã+>‘fø;ŽaodàéÕŒà{qóíÿ œ™?‡²:¹Òë$xµ_˜‡Ã¿¨ ‹ø^dÑïmŸýõ¶~o»÷½ëw~Óëï­ì|Ò{÷Ÿ>·|ð«üÃà+ÚÏ…äû•üβƒýŸ =j^}´oªfØÏo|WÔTu¥—•íã4ÒÙ ‚p„X¸còÁ?¬ö“·v>Þßý¸Óªq|ÔŒê'þ8ýíõ‰`{šÇÞ'Ýýk(úÚ{ÙYöDTª?ÙLR™só¿æÓœxÜ _sÐǵiÏÕ+«ö'»m¿¾]qÖ8™™F¥û䫹gé’Ïl—Ž’:A–Ñâ^,Žõ"cŠÐ÷íöFpÝßnu6®?w)jF퟾ÃÂ7û}†?¢µ{*¸gùR¾$Ÿ”nþ×BÆô½È0n¾½sõÊ*ýËüJ?e¶é«$ògÍ3…%\ç¨sza ‚ ŒÆ¾ b½°Ú" ®õ?AÀÞÚ:;XËî0¦¶ð{ñ£IOfYÖ… T…S§2ì”ýTߌO¾CEháW3R Bøvˆ:6‰1íyV:Jzñ|}չܸÓ(")AŸ2»…Ý.cAäÅPÓ.ýûõŸŽuŲYöê³2=Óh@Mí2ZR–²´qbwæ (Ræ3 F®t{zæà1D¡‹O…ÆA–²xcw.ˆ¼°¦ˆ­ÿ¶Ý~!Úý¸Ózt?Úë,¿´Ñ»swëÌÅíßƒŽžY†^˜Z8žùidZ5ÊV%d&Dêä¤ð˜Š«»À1}/22b‡‰‰›+òÔ×[e§gÊyÌǦðô 5#‚0ÇÝ÷"Ë9÷ͳ‹íNfûö÷ WŽäf&ÆÇŸËÈ$n÷øæ²=ù³ªí ùc OÌä3|æ°y‹{a׸Nd±k™¦æ"¡{êœ>Ù\ ‚ Ç=î…/ôg·Ë¶[ÎÇo!7¥ò8MfX溽ç2?ùv>ñüÁ™ôËÎÊPvk…û ³ZxéüÝùÍ‘¼SÅ°Ê sV}3Ɖ4ùýg&/*4_^Íø™xú‰Aö0A„:Œ÷bA&GÀÚ¢ùû@´þŸ;±{1ZôÏÖðñŽ¿Ÿ8ä•#‹Í°¾Pí¶Yöký³ ©žY¸ ¦¬>qØ<Œ³sâ"I„ãÃq÷½°v µÿ~ÿý>oßÐÉîÇQÐG¥K˜xÜ Aa®Í÷bAäŰ+Gæ\[!ÆY3"TsT$¦  ÏPv bAäɲa\üyé´ýÀ„9î… ‚0ç÷¸Ä@Ý ÂbJ-Ƽ­vA˜[Ž»ï…0+ŽœïÙZn½skÖA8kß‹ ú‘ÞÿºOnÞÛþ|¥¹¬“¸ùÄrc¥1ødaŽ–Ý‚yA„¡Á÷b¡â^Ý/û/úZC'ø|w¿±¼¬5ð½ý~·âĉλ³ÎãB1fÜ Aan9îŢɋîýf´œÙÙ\QÍ'—£Vs¹¹ àƒÿ#ËF&Œx3‚ ,$eñ:Æîœky‘¨XMç‹~ï‘þ|w€îÅ{Ÿ}¾ýѽíî-7—逷þǯ.~ï»ÓÍ÷qÂÚ-ŽÖüˆ ‚P“2»ÅQõ½8qâÄ¥Ýòÿ ÿ°§T@?Šwþ°×ÿK_ë Þøé­Æÿ»¬õ>€¿Ûéì‡'ÕÊ©¬Æ4‚@£ò+í§Ô9øDú“f3á(ú^‚ C±8¾¤-Öά^½réê•KkgVo½³SmÃè|acr¢×ëëGš´E  ßë]{ýUúuY5:ú‹©£A}?±¨ß}ß A„Ee1}/VÏ´WÛ'VÛ'ÞýHÛíð¤Ò‰F…HðÖÿxwãÅïÀzû¥ ¥ÉÏÎä¿€ewæÏ-üÀDÅ7´ü3ÿf¦"«™s§Šø^‚ ,$‹é{ai??ø­ãÕµ§h;~¤q@‚8aÙqàþÎ÷ÏÖ¹nÞöPh°;ëôå…)ø{2ßÊ:‘þ&xÙ…*2VçNGF|/A›Ñ|/æZ^ì<ØÝÙÍ~C¼êøû¦ h „‚€Þ#ž9À­šäâ‘©váCylä¿Ù=L9Än!‚°ð e· æÔµ“†àkgvvìî<€Ë¯¬Vw–Í'—÷¿ìÑv¿Û[n4úIaÄš§Bè¿öööÓjº70 fåà9ÁoŽÜ|;ûÈü®z>…ÂSü”‡M3Ÿ±R¨s J–®5K‚ Ë~s$30¸ït®hŸi½{çƒÌïáÉô´î÷ã•'›ËhùDfYÇ¡-ñ8üµ$“Z?2fÿšWšˆn IDAT'þ~›x™©Nvªýý˜êGaJ,æ7G¬Â¨ÓYª“ª×ÓÍe@…Zcý…³/;ý~OÇP£š+Ív{µßë}{cõÖ/þíÙÓÅpÏšŒ{񢂾ª"Ÿ5S(ÌIæ×êk&;qç›#…½of§ý3£2â ÿ“¿ßœÙ°Éf”JáÁ…¿æ¯R–ó|"Õ9¬U‚‚ £2Ú7GæÚ÷b(O¨æ7–÷{ýgÛMu2l~#:{n}ãÅï^üþw7·´Eç‹ýwßþ·gŸkæƒ^Àó¯$2;ó‡åÏ-ÌØÀçV—Ø_ ¯’9±,«‡#2Á÷Âö£~ÿšßY( †MÖþ40ÙBõPA&«ur^3‡u®.‚0‹ã{1­çVúé½ÿëßêG±:ú?õ÷{¯÷‘è•§›k/H†I2²ïÅNî]§%ƒíª‡½t5C%X_aø‰) 29Ì—¤ BCµ´ è{1k/´vÿCu>ë4žXF€oo¬Þûÿ?ßÿzÿa_êÙ磵Z“½â¬*犑}/ê?åyçÊŒcØKÏa-V– ‚plv4²˜¾©ón+ŠN-ï}±¿ßÙ¿õó÷wþco¹¡Zßl>ÛnΉãp8¾(™¹’£¢0Ž¢á8sÜ}/|+µÿÔºø·ë—þþâÕÿ~ñ¥¿ÛXqM´Å48临îÃߨOg&#ì‰ÌRÍ‚ G”|/S^‡É´¿9â/(µVï9…råŸX¸³:3™³-‚p˜ŒüÍ‘Ÿ¶Óz®½÷‡][¿¸ àÖ;·ªÏ9žt¾èÞÿM§÷—X-ëèùæÙµ–âØ\»¿ŸmÖ¦H>ûåW.Ó’ñå´¾d̨3W²ó`çè: øBºAŽ 5Þ›oï\½r‰&A|‹ÂíûnR¿@Zâƒïn¼=ï¾s‚~¤»ÞþW±Ö@_u;½ååNû[ö=ŠšïżQÐBañÍ÷BäÅ`º_w÷¿Œ·?ì.”ø½D^“‹×yI!Â1a¨5#„ø^ àö›wßýùÎû¿ÞTŒÝ4# û½gl~˜¶ï… ‚0+Fö½y1€K?ÝТAÂ"¨jœœm¾æ ùnª ÂBR¶fdàú‘Øzóvãô>„h³¶@ã‰0j/û‡­¶OdN\mŸ°ÿòÉfvVìÿT˜ÔdöÖnq<çGAž2»ÅqŒ{1)6ol5N†/~gãe÷…ÕµóÍFÖž¾³û˜þåÅD~gÙÁþO…¿Î±[‚ ,<÷b’lÞØZYi®Ÿ_ï?ì)¥Z/hëç£õó­èé•¡’š†,ÈÛ3ìŸþÿö§ê³ÊN¬ƒø^‚ ,*â{1a6oÜŒN5×_Xï?ì©@u:V+B ×^Œµ?9²³ûlÿðívO…8¨8‹öPâôÿPˆ Ca!ß‹I²ùúVtjyíÜZÿá¾RªóU§ùfôdôÚ/6ÆOÜïÅ ­ùÞº¤;þ2oŒjq9‹ò@Ž * ¾‚ ‹Îh¾÷"Ëæë[è·ÖεºÝ~£Ñèü©µ¢ÖÓ“4ZöÎñe‰î)”5u8Îq/AŽ ÷b\H[l\hÝ}¯Ûh4ö¿êFQ3:ÕS[NjLÊU3ï7Z}€¿3cÆ-â{!‚°¨ˆïÅؼ±…‡­ ­{Ÿvp÷N§5¢oFöÛ"Õä—VÌwŒ†vR#3Õ’1o”íÉŸå6‚Îß A„…ddß ™1Üþåuvõ{+;ŸvUö{½‹¯´š§šJÕÒe“5«Ð™Ÿ*&G*öÔ?kX%tl¿9"‚pLí›#b½`ttö\´ó».ô{½‹/·Â“aMmqœ»… ÂÂ#q/F§Û‰ï}ÒA€å§{ëßo6O5WV† n1?Lj.¦&â{!‚°¨ˆïÅØ$èï÷ÂÆ~5ÛÏ·kú[„Ø0A‰{1›W¶èFÔéGÛßj‹GJ}$î… Âb#ß•VP—~üÒ¬3rô»… ÂÂ3‚ï…ŒÓ Ž°è|ѽÿ›Nï/±ZÖÑóͳk-;Ò~~Êù›oÈ÷‚ÖL _Áˆ™¤ )¥É"å9WHuÌŠ²5#v» ‘µÐt·ÓÛÿ*Öè«n§·¼Üi«5ë|Í Ó‹ÝImÊ­wnÙ=—_¹L{¦*hŽRJ“EÊs®ê˜-eñ:Æîy1˜î×Ýý/ãí;€ó÷¼÷‘È `Êq/n¾}“Ú¿¡=—_¹œo\VÛÙ}gw‡vîì6å K>å Y?ÍÑR²{ª/]øë\•'rE:l¥›ÛÉ–Éj{µ~&ç¿:ÊÞÁ#ÄP5r8Œ÷BäÅn¿y·¿Þ#»B´ÝïÍ:góÁ!|s$Ó|TŒWFnÖ'‹ßpSKq™9r¥4sUžùÞúÐ*ÝgøéQ¿:ˆ|uL+g“&/愾9"òb—~º±ùÊݾ¶ 'õl36?LÉ÷‚F-eÉ^½rµl(Y†ß øïpÙžê£Jó#§I,v)Ugl>Ë3Ÿ‡™¬¸ßLšÆ/êz‡JgR—®Ãdï²ç¹,ÃGÖ Y·gØ?ýÿíOÕg•8ù·[Ô'ß Œö— }ƒI•Ò"‘_NªÒZD„2ÊFü5‹täGº:ý#]¡÷bblÞ¸j®[ï?ì©@u:V+Úû¤³öbtø™ñûûǃíöW’/ö§ŠtÊÎ*ÜS“)ù^TO¬VOÊŽFÅìòÜ"¥4YÆ)ω Ê…)Õ‘óñ¦™²I‡2Æy¤G³ëÌ9â{1I6_ߊN-¯[ë?ÜWJu¾ê4¿ÑŒžŒ^ûÅÆø‰Ûþ;cÒ°V„|ïNÓ"`m‘9>põÕý³(ôç°ªÂg±me‡MãÒOsJr)–Îá”ç˜CÒç–¥?~™¬æ–TÔLsž«£Ó¶"LɆ‘q9{C_W|/&Åæë[è·Öέu»}u²ÑùS'z&j?ךàGÎ •õ®(;+#G|‡Œú—Ο5¦KÇT}/hì’.7ß¾9ñAyf¶•þ,œ‚Í;aåjÞ·fš¹RòO©?;>·å9Âí ÌdaQç™øåêûÌmuT_½NU»Õ<«ÚŸ£ÎÕë_úÍ÷âÄçŸí´žkïýaÀÖ/²ÁÑŽ¤-6.´î}Ú]¿°²ÿU·ÙlDOGµEÞêŸw¨8¬bJb`:…“#Õ{ ¯[sr„l•ð–žgâ^PCPGmì<ØY´ršä é#ò1v)¥Érå™Yƒ€#k9?äñ¶LäQ©Óð¸ùöÎÕ+—üé?ÖE&îÅý&úi‰>¼»ýñ¶ø^86oláakã{­{Ÿv»w:?lFOFJÕ²[zHøŽíþ}{Cfª¥ÎFþ,?“ú_Lõ›#”¬/ya›2)¥Érå™Y¨)Ú¢y¼áÙ3ÿQ‘oŽŒËí_ÞYQgW¿·²óiWa¿×»øJ«yªYS[:LÔ?¬zN¤ðÏ:WÌ<ð¬Ñ”дcwÃÖd¤”&Ë´ËS$ÅPóÇ{†OËÈßß FGgÏE;¿ë"@¿×»ør+<ÖÔÇ™£÷BA ‰{1ÝN|ï“,?Ý[ÿ~³yª¹²2\p‹ùaRs1uX¤5#‚ B!#ĽyÁ$èï÷ÂÆ~5ÛÏ·'¸Ndá!ß‹YçBA˜UĆ!‚°ˆïÅäÙ¼±µ²Ò\?¿ÞØSJµ^ÐÖÏGëç[ÑÓÃÅ Ÿ†,ÈÛ3ìŸþÿö§ê³ÊNˆø^‚ ,6â{1I6oÜŒN5×_Xï?ì©@u:V+B ×^Œ?Vˆ?9b?õž±gä?Ô^˜NÙYöSïò“%b·AXxFð½°Zl¾¾E͵ský‡ûêd£Óé4¿ÑŒžŒ^ûEküÄý^Ünó”}3Ý?å6† £ð`RÃÞ A¾ã|.ùæÛÙ'õê•[ò) {Š ‚0Õ3í»`»E~» ±^dÙ|} ýÖÚ¹µn·¯N6:êDÏDíç&£³ÐOÓZÊÎÊèß!£þ¥ógMÄ¥cLÆÕ+«VøÛ5É«Aa"Œì{!Ö‹¤-6.´î¾×]¿°²ÿU7ŠšÑ©æ˜å”™Ô(üiüÄíŸùÊÎ*3¥ÔÇÚ-¦á{áë«92;íŸbÀA˜ev ñ½¨Ëæ-„&v A„…G|/&Àæë[è·Öέu»}u²ÑùS'z&j?7É…ÊÀZÊÎÊÈß!£þ¥ógïÒ!¾‚ ‹Šø^LÒZwßë6ý¯ºQÔŒN5Çœ)œÔ˜”«fÞo´úgÆŒ1rĆ!‚°ˆïÅؼ±…‡­ ­{Ÿvp÷N§5¢oF5íùå£ó£aE€ÔÈLµø×ªØ“?Ë?l(!¾‚ ‹ø^ŒÅí_ÞYQg7¾×Úù´«‚°ÿ×ÞÅ—£èÉH©ZÚ"c“@ÉäE¡_Eáþ²S2“™ÄógÒ/;+s@[&Än!‚°ðŒà{!_Lettö\tïãô{½‹/·Â“aMmqÌ!ß únêôðEÌq°”·û­”LMŽgAÏ»ž*eßJµÛeˆ¼0t;ñ=t`ùÉÞjÔlžjÝï­Oj.¦>dØÒËLíÅ­wnÙ=—_¹L{¦­ifÂq»ßúHÉÔäxÔñ¼ëC€l4R¶]ˆÈ &A¿×lé(ŠÚÏ·¥`jbíÓÓÔ^ø í¹üÊ岆cµmžøÝ ýšù)¿Ó&b)L­‚Õöê°§ {¿™LV_®ðÆGÈð‘(™|>‡½bª‹ô¨T&«Ó(¨i3ò‹co¶ºÑÈ`ëÝê¤0“Gb|ÊìÕ¾Ò‹Àæ•mºõ_úÑK³ÎËcªv ÿ*N ¿Éá}η#õö~mVÇizêgøH”L&{cÎh̶ ê+†L9“l"~C‘Q'Ëm†Ä˜ e· D^ÀJ«ÛÝ[¹ôcÑ£0=ß ‘”¥|õÊÕŠq ,ü†²¦Ñb …­vf§ýs¨–z´ûÍ\×^±ºw˜á†³s[2HßB|ÖÜ“Is~ *ÓQ"…•ÉyuAeFíþvá“*Þšw]økõãA%“ï¶+ê¨ÂÆYfx;Ó{$Ægdß Y9—~üÒko¯WÓù¢{çÝ¿ù³íÛoÞÝþ÷]ýHNÞŽó¿~$ß,–í¬™Žß æw6Ö‡Ia>+~Íd¸úôúWœyÉÞª“OÚSØÏ ,“BMV‘¥Â àè°@Æ,Þ纎*&8F«¬9$$îÅtÑt·ÓÛÿ*î÷Ñí¨ûööþØ™u¦æ‚#÷¢ðÍœÈëšiËLJ&3Ĭî®üyš‰ûéO꾎Ê#4ðÞ3;‡-ÞCc´J¬>²P"ŒœÃ9y$$îÅ´è~ÝÝûýþö‡í,î}$ò8 v‹ii(ý‘Ü\5 Õù˜Ûng®J&Ó(g†×eVÃÉÛ\Ô!PŽ`!o¿sþHHÜ‹ÉsûÍ»ý}ôé0hÄØ¢ è~oÖ9›¦ç{Q=iZ8áêOOÚ‰÷ùó¦à’á~‡Ígý_ëPç”™—L¡±=“CÖ…ךlAelø”ÚÐD¨_¼3yqæ¡óÆÔ‰ñß‹iqé§úBøÚ€jœœm¾æ‹y³aø½ ›’ÑÚ;ª°³5`–åa†6Œ–Ll<.œÔ€rªeß‚úÆ|LèÖÆLaNÆëe Ì[Æ›dØÄgþîdß‹i±õæíÆé}ÑfmÆaÔ^ö+üXÙ7ÓóÇW|"͸÷3ˆa/1mß —d´ËÍ·o;Ë»G•í¬™ŽÿæW﬙21Úýæ[¢Â,Õ¼‹§2o%ã_º~–*r5B™ÔOg¶Pý,Õ¿ÇC.Þ‘ ?‡Õ™¡¹¨É´‰ñÍ÷âÄçŸí´žkïýaÀÖ/²QÏŽ9›7¶Vžh®Ÿ_ï?ìÝý×}Ú¹v¾µ–£§Wü#óß-Ë|$Ìÿ•þ,; ðàŠ M–é“ÞšòLÜ zÃë¨;«ƒVNƒ à#òñs‰ãv¿õ‘’©É j†î¹z<æÄðPH͆÷æÛ;W¯\ò§?üX™¸÷˜°f¤%>øðîöÇÛâ{QÊæ­••æú^ï?ì)¥Z/è½Õúùhí|4¬ËJFLLÿ[êþ{­BÉRv¼Ï±›Õis„RöUïbw'Çí~ë#%S“ãYPsr×Ö´0ŸÚbä›#fóÆÍèTsíÜzÿaOªÓé´ZÑÞ'µ£ÃÏŒ?aaUBF:äDa:egî©Ï!Äî<í£Ïq»ßúHÉÔd&5ó>uæÇÌK`âŒüÍñ½(`óõ­èÔòÚ¹µþÃ}¥Tç«NóÍèÉèµ_lŒŸ¸í¿­µÀî' ?Úžÿn{™7Fµ8ÈœEy°fnçÈŽA†Bâ^L†Í×·Ðo­[ëvûêd£ó§NôLÔ~®5Á¨*ƒÇLÙY9òØ£þ¥ógÑöÈN£ó¶fDA˜8#Ľy‘‚´ÅÆ…ÖÝ÷ºFcÿ«n5£SÍ1'‘ü™‹ÇiÆ_ ’_„R}€¿3ïx1ä{1Ú¹‚ ¶îo—Uvâ@Än!‚°ðÈ7G&Ææ›Ñ©æú ëý‡=¨N§ÓjEôÚ‹Ñá»Ãú“#ô=ÚðívO…8¨8‹ö ü|k!â{!‚°¨ˆïÅ$Ù|}+:µ¼vn­ÿp_)ÕùªÓüF3z2zíã'î÷â…V„¶ç;þ2oŒjq9‹ò@Žó!4±a‚ ,$÷bbl¾¾…~kí\«Ûí7Ο:Q+j==I£E¡a`ïîê_–HážBYS‡1ã^Ì'"•AXl†j±%îÅ m±q¡u÷½îú…•ý¯ºQÔŒN5Ç,§Ì¤FáOã'nÿÌPvVÆ”2BNƉ{1ÏÜzçÖ¬³ ‚0v¿;ì—$îÅXlÞØÂÃÖÆ…Ö½O; ¸{§ÓŒÑ7£šßÉ/­˜ï ;Ÿb'52ú cÞ(Û“?Ë?l(×Nˆï… ‘b(­ø^ŒËí_ÞYQg7¾×Úù´«‚°ÿ×ÞÅ—£èÉH©ZÚâqšÌÿ°ü‰…ûËNñµB>ñüÁ™ôËÎÊPç–}Ä÷Ba!‘¸c££³ç¢ßu ßë]|¹ž kj‹ãŒÄ½AXl$îÅXt;ñ½O:°ütoýûÍæ©æÊÊpÁ-æ‡IÍÅÔAì‚  Ïq/ĵ“IÐßï5[:Š¢öóm)˜úïÅP^B7ßÎ>šW¯”ªà›oïTüZ'}{:í/ûs²TûÜŒé‘3A‡žy`ÁnG‰²5#v» ±^Àæ•mºõ_úÑÅö·D[ Íh6Œ«WVí¿²còBdØô󉌓f}¤¿aß‹±XiuuéÇ/Í:#G ú^Ü|{‡:~Ãþd÷ûÿòçæ)TõÉÇPÏï,;1“Hášá¡¯H$³¿ìŠe¿–m—ÝWÍ+–]h¨¼ ‚0[Ä÷bt.ýø¥×Þ^¯>¦óE÷ÎÿºógÛ·ß¼»ýï»ú‘>œ¼Í9÷½°S!þœˆoÞ¨¶vÔ¿JÃN…ZÏì<‘£,‘êt*vÖ9Þß_vÅ:¿ú‡•ÝW>'Ce£Î=VçM„CF¾92-ô#Ýíôö¿Šû}t;êþ‡½½?vf©ya丅vˆšÒÁ·I ëB1‚:©X]ü8ÇiVïá˜ñ©¸¯13 ÓF‚p„¸S¤ûuwï÷ûÛv´g°¸÷‘È Çô|/¦Çáx`̊ßb˜ÔerDæ ñ½˜·ß¼ûîÏwÞÿõ. bìÆ GYÝïÍ8csÂ{1AA3prd&Œ`MÉ0ì}Åɦ#¤ß‹©pé§úB4HX„ bU“³Í×ÿmïBãÈÎŽ?AJàC |è ¸À÷’€%ð¡ >¸a[„Œ¸IDAT’É€5L`-ŒeÏÁ³¹ìfË s±å™Uf,Œ”ÃBœ“mHˆrŠ÷0ƒ0HYƆêà€VÐ ;à> xe—Ÿ^U½zU¯º«ôúÿÈRõ«W¯[í®¯¾úº^]Txß ùúHæwO,ã ÍÁµðÅ‘É(îhž—¾ÏÌ=©&AíÅ8l|±ÓüñhˆY±ð&¶Í“³þœÜ,±HMsÚ§¬ÔNò̸À.Ê­½ˆu^ü{Qω±…IÀñ*6oK¯’&v±ìGßyâÊh«ÌMÌG¢ßcÚ×¼ªe½VÊR¸ö‚;<è¬ßÜhl÷–zÃî`÷×áÊîRÛïÌù§³ïé)²+'¯b3”¦5GKáêù±›wÞÔÌã}ârZ@_oØÒ0ÂHûÕ¦Š3±ŸÌÎ-WÚl’Ù8WŸ¥¼ª& m®ÔÌySÉ^¤Z¿¹Ñjµ{K½ááÀó¼ÎÅ‘¢·ä÷–:&±…ìÕ¾e?׌~•Fé·JÛ0SUµúÌDåê@Ô^”iýæ¦?ßî]ì ^à ‚ ÓñEcÔý‰?ùŒ|q$Ÿ,ywQ8o§£CuNÆJa4NåѪ¸qˆ ßÒòíó3ßän#úUþ=¤ß*mCCeÕ^hRò•ˆÄƒº²2ü5±+eeZeA¦<ªï'óŠ< îLlF\ùü>íO3“¹¯øÜp¥Iû\ãWÞ~Q3ý†&OÄüÅÌû²ëYózµÅœ#%[¿¹éÏ·{{ÃÃ×ð‚ èt|ÑuâO>ã#6¢s å³Ìä“K³Õ+)›ò*Ï©ÕÄæ‘ÒúC¾üëæÖ^ /»(^%%±4k{PØŒ!ï®óîKÄjG2¸æ{Ñ¿˜Åú×<š¹‹bãj…9GJ³þé†??×½Ðxž¼Úï´ýSþÇ_.Ûw.ų‰˜ø?í¹±‘«ý­­ÓH¦ µà*æBˆY±`þ¯êÁ:…8©ð}/œÊ^!®üË?ø§c·ÃF£‘×lF+Öo<Šo¿]`¸Æò6‚Ê­ -»2Of“Q%¾ k××ä5QÞ‚Ú pRZÞbï{1ú~8<StÍB³­2Ys¼7Mÿ2y&I“MLúÔ<Áh¥~sj/ÀIÌ9òÖ¨!¼¼÷n¯>¸±+.nxÿt´´3º½9œ÷EcvxRwqD9Ø+*'÷iS>&ÎËŸ`:±·ðWà 61éM~R™Ýrß ps޼ögn !ÄÄðÂ'«?[ÝÙÚiÍ·„âö-!„Í,¨–‡p¥*31 9ë!Ê*¡P:1¼˜"¨½€)@íÅÍfóΗwV¯®ž¿p~4neòÕ %åe&Šæ•rŠÄ‹/&ÃÈ»_ýxô»–Q{®¢ö"•çy¾ï¾7 /ÒÈ× § ¢8 Þ›fMâe𲆤ŒMéJ3µà$j/’ù§ü»;›_n6µ% åP*_Έª('ƒÍ{K[mýÔIiŸkl™»Sz öÜFíÅkÁßúÊš—߇êJ”‚Ú p^Ú ×‹{¿ú®ê!LæWžsÄ©ðâã­^žæ¹C‡8)-o‘™Ãp¼öãFí¸­Xíá¬ðp^®ïŒ„/`‹û^€« ß÷bŒµ›Ÿíè|ôïkú8.¨½'®½Wx±ùÙÎêõ÷2ÛawÑwFˆ-ÀIiß© öbç?¬^¯y²þB¬^]~FëW¯¿—™á@ÍQ{ΫQíEU\z÷Ò¥w/Ýÿýý•Ë+ÑÏpeÔǵàª:Î9<ï¯}°&„xððüO±öÁZð<õ6šú ½2'ÙŠ·—å}¹v=µÈa€“ Ï92ÞÛj-tÎßùü¼MádZ–SvÉÛ–2û"Ô^€ÛjT{òÏ´Šm¨™^< ”l„2§¹¼2M¼‡x†#1çaŸq y p^Ú‹1f/‚ç}ÿLëÒ»—î|¾#„øç_ù’H¸²9!iYŠx4؃²F¿² æWÕqÎÿL+xÞˆñ„|àÏ<œk®€() &43’Cpß pTíî{!Æ™½È”7AaÔ^€ÛŠÕ^Œ1¼¸öÂßA±ìE<>°/ðLcÒ-—BÒ·çåÊ[„Æ^l¿\{á{_õJÏ^ȵŸiG}9‘¯ƒÈW[Lzз öÜUÓÚ‹mˆÏ_ÿš7žˆÑÓÊ)ÒR 6õýkz0À”#‡N¢öÕ öÜæTíŽ òà¼i©½@­P{®ªWíÅܩד­ÿéÌKñ¯WþáwPšm~¶Ó>37Ž`ÂÈa€“êU{±ryåÁÙ“­·ÏÌ­\^Ç01Ô^€ÛêU{AÜ0%È[€ó Ô^ŒqJ3L‰°ö¢êQÊ·xîõÇ{˜·ˆ/§!¼@ ˜7œ”6Wj漩„°å-¸>NJË[è¯^À y p^®¼Eˆð¶¨½WQ{*‘Ã'Q{jP{n£ö oΣö ö\EíªDœDíªAí¸Ú T€¼8Ú T€Ú pµ¨9 pµ¨µà6j/PòàÛZtJEQEQV‘ëo^Ñ¿Û_hbEQEQV—ÿgÑ PEQEYu¢ð͗ˆ¬`ùÚ&) "K?™€Adé`ƆN `AÇtRÉušÈ]°ˆ`Rã. ‚ßNa)1œRÿS˜ix/p2r‡»í@dww˜8`1 I-"9”DˆSÞpw‰%AÊŸ1ÖÑÅصŽf-¶íÇQl¬ÁD`SÞïRI†çÞv?Ú0O oŽ1`- Üû26‚E K¿FòNÔ"2þOXD©‘2Â7¢»[ã³ÛXŸóVJˆÛŽŒ…åB*-6¢$¡ÿ w¡WlÍL©ŠDHø˜85’Ⱥ7 Ä©A„–ODù›ÀÆTxRër5“Ëœ{)l¸2Ì%̽¯Ø" ml‘Ð~D "@HcÀíàË'`ÃgzĈ$&]eIû*åOê^„á KÊDFj"UÀ\qÛcRÞKe‰*¯Çù ¥Ô’É=W—Mð–Ý JD6N᪓ä„ؽ EY¬!9 êéšÅb¬!â#Ú™ÉÁ ×"c›­/ˆèýºôՄ˧k-ãÚzË• œüW¦ôÆ@‚T²%æúNÙáÊ@ÐðÆ@”Я@šXÀDT‚¶‚ªmšÈE€Ú žJëj(+ŒÔMÎAª0D®­@“Jƒ~(~ðÔÒ~©tÙ|ðm©?&`âÈH`bXDT[!Ò·½A É´°†^V ãòÐÕb×ÜQáŒ$σžÅ•vÞ-½‰ËÛLŸb`øâAÎ@Z]º¸kUúog#ß»ùV7 ~Êã3’s26€¥Ã=”ô,~€E‚ÈÐOîî ¢|E±ÙÜÄš‰a“#ÚæGÖlðr]gGUgj]#Ã5×g@<Œ¿}„|qÍôãËKËÈvA|ñÎH—[ú5 ×ϱ¨ ú×îXnq¬T<gY×Cj‹uý7 R›ÑÜ‹@."iH!ÍM¥èdŠi¨Ælj l¶Ÿæ»Ë¤ˆ]qF©‰$²  Ÿ"¡æ#uÕˆ²½bäS§@DÚ+t¨@FœÅ@‚µ€=Šq Á bk Û#`Í5©af£Ø×ÌTz__cƒ×ÎM«Á´—ºa^=„°›¡‡b)fD:K£àE_8ÍÞΧǂ ¿,)6îÝ›– CBÁ•:c"kRkúqÙ`©çN­SÛîF†J`L-x¸ŠíÕ˜oR“¤6‰l ã:ûˆz ˜°‰+'^‚Ĺ‚ä[*·.16(™~Øà^\‚üp"%†¯cÛ4qiO¹ð¤NiÊ—8 ê§i#6),7¦®Žv0)eY~õpµØ=µTÞ" 5H¹TÀ¸gwc*cÁ`Iº–°ÃK©“RÁ/4£ÒL©SW1)í1p+ŸD QSàˆ†I6^>ÙÔÄÇÙÖ&@|øt°Ö÷¾âƒ\±9Yæ¶]Ù–¬ nÇZ×Keå8Ç,¿tKÍ]0iÔXî§IÓ‘R„Á’bC⤤üÄü˜Ù?]Y•v&¥ZiQó. ÕÖF©!ùîž7¥¡—µ©qª%3n «ª {_ßû:ëö$)âqd’Ìte)‰LÌãv'Τw§Ž2ßr±±0¤¢,n^ ´‘Šøö%™y&бÖ¤†sÒ½1Àš –³AÉá»K[PÁûu¬^dŸkƒcX`üRC]»›‰uª=¶þ¾N«R]Gî1qd ^Cƒ# kˆ×œñÂ׬”ö¤6‰,Rà ²Ijáì Â#7@k2éS† –‘‚$ßýèàÞÅ›oußi¿òÆŸ×ìK”+LW8|×ë†}N€eeVð¡ÒÚ†§óÀŦÜñ»~”Œ(ÒØÑ•Œ%5 hz@#rúUnJ•!W… Rk#k¢@ü¥6ŽlâúTjü/vé4ˆlBÝsfÄæJW§FìaIŠ8M¤± mÀk/Jè€Ø¬Á9ˇ k0kT•cWI,`›ÔpéW÷äiÿ çîCÔ05Á¸ßuÜhúYjZYÃrÇrƒb2CÞœ”66‚I©…â[s÷`ØÀºQµ¤6µ4‡ë\©0TÀ¼áÄøç…{ñ†oÐePÙâÞ`j:±úþ;²1,½t·‡u­¼“æaK‘ïrŒÏô¼É4Ì®ûŒ `‘È~W ÄJ­mšH¦ð‚r#FDGÆ6òÙN];Õʰs€5gsÆ0“±"gŠMùÞ^h9» +u7jмF ŸZ”·A`e õâ²Óå¥Ü+c¹DÊï—l$®>Zø*iÄG0ÉbXµÇk·A½û°fƒ¼e» ¬åö!°ù›ZDV¬,poÓX×"¥0ÎìáôzXG|K•}Œèlðp”óÁ6ÒDŠËÙ)L”ð`HÀ!FƒÄÙb"os¯€®“µ:ˆнǔŸÑ·áî/k#ël| ?z”áS0–Ë*3ÓËŠ§u6I ȬÂî°ÜÇ4›´f œw·‹rjÌA+”BD3` `áŸ%W[ƒ ?b±N`eê”<žh럋 Š~"Ôr5Åg&×SÙc"8±êZlos—ù×VX§Øœ@·)l›ˆ$¾ëw 5ÔÅÙŒ‡»!Ø#yÑk ós‹#¯¹Q²&™gc–ÝòLqj’Èušdõª ·áŽL"êX3æ1²‰Š=ˆxù[å*&÷·¿ý/»ÿ2Òñ—þæŸÆ¸ R ÈîýfíŸ¾ÞØ¿‡w‡¨1¸·ë¶mгBŠ,—9ßè§0lðç´ëti‚̤RóÃF?0€Ó•kÑèRœ˜ÌˆŸÛDß\Úì˽…¡Q¾µTÃ-‹q jR8†ÔÏg%‘«ÿ wÉa¯œq”dºÿ Kçñ¬“›¬¤Ç°G ÖÄ8‚Ab×x?Åf à! K%7Þ5`“rÖ”SH¾õŒ,Ï;@ýd–àþÆÈØÎ5÷fy&ÂI^7úävŠ3VÊFF‡‘õHLú2å'Î\¡ò“_Ÿ È©17Ê4`óXŸáÚTDœÑN~/Idc‘GHRÃÆ‘uãïÈ ñ6áɺ‘l̳-~ˆÌÃ}÷,i Î"7nÉL…¤1pfk·zödtuœ¡5螬›rÝF1Ò„úZ%Hƒ™Jy¤¤„x Âý´ï5½‘Ì /ßeD4_)âL¬h~ÌmüÓÝíq¶>+˜C$yÖ5Ü4ÉÆ¶šÅÛ†¬)}YÖdæ ™¾ØÙe½áÓÀÚÀ8á3‘k£àä©=Š€Ë $2…Mfd ëêc $6˜º¡Ev/%6…Mc%&¢n56Hœ…ÃÍV󬥳¹ÂðeM)á“#PB ™qr\|èiêáíU,‚ÚA—w]ujdàJ²ŒÞH ›D&Iºù¶—[ïÈ$)HÒÍz¥9ÓZ o|kÃÃ{?Gé§•ÅZæµBdZsuÄç“z­†Üì-5°Î®I­®³#J5‘YÞq—gMÆ-g"¯HT%&%ižˆ}Ô÷ãˆ%Ô,R^ê& >™+NXêÑœJ^`’#KŠÍÕMv!«vœºj‹ˆmØ™i¨°Xçꟸ µqdħ…ß Pyåâ‡ÝïøIÎ Ù[?¯Ù7n˜Z­‡5 †ÆÒMúN¾ÜdÆ Òp§&ìúá‚tnX?{-¾[ fÐ;—»“ëgK3¾ s÷’>À¤Òy„Ff„Í áËu඘$¥.)CTt°]Ýë<ž)‹ý

³ßÊ1Ãdlrpý_$\r 6ib£„PŒT$W ï£„d·”+7ÅI%'eEîïŠû8×raÁ¦V ÞÒøSõ·©• >°¹[¸Q·t´-Áè®n:9î\ "˜8µÜa[2KƒÈଡ°®&Ê;µp.ž¼‘º197@DþplÊ¥»SÍ¥¡fPn97HŠ\=¥/ÄÑ6@Æ`Aáq™æ·ó¶!hlDí­×î2R/-RáÒª‰ï)œ2HæÖÀ"Fš¸ÅOç }›ˆ%¾ÌºDÁSH›¶#cGd!C"ó˜k@rdÅŸ,†IŽØ8B’¤Î×™EI‹ˆl‰u“î/3˜ì«MmŽW ˜œgÎnúi1\ WYS«}gëüw·¿ ƒ›ÿëzù%¨‘%º_¼“|ñNòÅ;^Šñ|G0¶ó¹tüÜ"ƒ‡Â›HÊRŒ2šîÉNNœ¶Ÿ¥æð³ÝÏnt÷ot÷o؇¼Èt÷oîß ‹;çq_%Ìჷ¼å;°‰À#žërb‘e`/ÅÀ•HœÙ<†÷è§4³—eø)®ñÆpD&1À v)£ýä€)² ¾†Ää-Ä=YB†É ˜5õI²‘ í…Ô ²ÿ©œNŠ‚A‚‡GÌÚ¬Œs©Ê´P6bŸ¡ÜÕ\?b[.6…•awäÊ‚:oÙélŸâ7CU5Gˆ#2…æÔ˜Ad’Hò!3&]‹sgá²Áæ+k³ß@#ÞÎGˆxråµ»sxn¹Üæ’1, ÞulÝ’‘ÄÕG),A#ã|Îs:½&àN4è¤e œQ-tn”×m„syVNôwuFSëÇý)ù2€ðFð-CÂe Iw$ŠÈÙÀºžÛÍQROOýàñkkÆïq£#8;MÄw~8;Y6ÈX6’ÆŠN¢¹Lã+sn°!.%Dì ô½ Ù•Ê^CÙ%Æ9-ðâ6¢¹ošiâ•Æ@l‘xE¾Wª16ÖÊ›òsµA5^M0+ïšÞ— ¦ƒW)Ïëm®~qåAŽMœ±“+Þ½Œ®Ì«s‚6^¬³ýÕ‹gÐu¾_u!÷¼¹íÅïp¸Ny#+çþ]5tM´±©ËÛÌñ®Wõî¼àº)RØ"64O-ý ÷PgÃ54—BC8ÃS–6¥Þ$&±.z¶¶Ê8!±v\eÈ<ÑÓÖ Žlrdcï»iXçÝßg°@Š$5ˆdÉTpµÔöÍ/ùö2ðÌÙÍœ˜ëßÓÏÀä×â¸g €í¶¿½ýí$I¾ÿƒïßýõÝn· àÞý{r¤ŒMpzÖÇÜf\™æŒ3Á4‡›n—.þÊFÐë8ÇóÈvä'êg¯!²‡ûï„IêîߨŸ½F':)[@”55¸¢²• ^„‘,Kàôx‘‹[Møé²SGÔ%Þ ëŸ…&ûqQ•nÀÙ6ŽZeiŽ `-b{”˜µ„0yâ_¶9¯÷ÒØz¥˜Àª!þ%lB÷MŒ_GÆí ãÄÇÙC^Æp(ƒ 1•Ñ«”s“˜Ü‹GˆSòw“_ñ‰@BƒòðK³ë¬ÂÖ[v#gBf)–²JŽJ÷Úü|%¤\º±oxgQ %;™åºXxo!nOû׎ù³" X;ÆR˜3<yvf- ÆÀ­%´nÌj€¬ƒhJ¿;-ÂpVº`Ü/¥" âñéòÙ»ÁM4óò 6‰ÑOGä*nã#“€V{7šwn.ˆ×‚Ea’‰¡½ ‘øVr2¢Œ§¦s™ˆØ–ÆMuŸÁô«jN¬äî… ³ ê5ЯÔyô›Æ––€¤AýM³r!užd1›ëb±%¸W(ëÁõKn*v_ðì-LÊóÓ'p¹µ7ÆÙÆÜøÍ3'ÔBŠXÂo<ál‘Á+÷Ê6tIÜR8¹î1×â¾çüº4¶±ƒ¿[P’Ÿ{t\‘‘™u1$[9*·Ê–“‹B(?EæfúJ©)≑󶌄Ûjî¶Üb —Hã@Ê> ÜùS¸…–Î ò@uÖVøQ>H“Űɑ,Ö¬H´øÈbÍ&>B²,¼ðoÜ­²„h¹¼bæ¤6w¬î\?ß"ÛæO¡%l¨´úü³=R`t:?Ô¨6XO&€Áÿ}§ñdãƒ?¨Õj®þÅÕ÷õþÆÆFx IÉgßt¿x@üôkd$[ú5DèdÖlÆÍk&"î_o¾FÍQòÎk´Ñý̹=n'Kd•¥·èJ)?»Qo]ój ®’>ð{ê­kb¶9|ð€ú¹k€ÍsîuDø÷û7Ô·^ÿ÷ûoýé¹×`”±®—‹׬/?X¡ ˽):Ÿ\ÀȺKî,ùÂââ/(s1®)ÉTR HC`>Aêºp¸zî‚øã©I·Ì4@7&´¼º|‚wÈ ýú!vMiñ%ß©ó¶$Ëš†–ÙI’qì½ÄvòÙ&^|d›kwß`>Ë m¹ Xyƒbê,ÅÀØAéFÆù„%Î÷?k«K—h8ZPiƒòf‚—;÷¡Ãr£ì­¼òÑõ4þp' ¥ÇÍ«=îÞ,hÙGá"ÉœÈZ/.-bxp½¾ä,Æ‚|Î"ÉÄ¿°€‰×€#$Öû)K$Gük¶ÆÝ—À‚5hlq!Ïn “uçweÕºõÝáð’²ÂÊÐÂ]VÚ ·ítóÒ<ÈvÐv,¶)&ü"œK‰[.—rŒ–ì|¯$ó'ãß:ÅJ­±§ÈÍÔú‰Z?dr£hÊ1Y™ƒsc°!$ô%@n•¥«¡Ôv¢Ûa„m¯»2WÕКÖVÚâq W“ì§P³€¬gã—|“=–ïV"ªÖ¤4¶‘&ÂrFqZiA“æk±Wó™¾½Ï)Ãù\»!1/@f6„=‹sç·QbÒØˆ¿?©ùlŸbÖØ®ÌS–îÆ®NÀÆG–&1ã#r°qJëçh&:Xeé¶!ž¸4rÎ8z†CîÌÐÅúý‹@4™ü9ô”!aO6ÜýØ9 Ýú»[Ƙí·ÇXøŒl…ÍDܼF+9¸Aîzó5ú8Ñæ<Æš¯­ÓÁÜ7¯7¯­Ÿ} @÷³¢ÆÖÏ^«óN+k¯d™=—Eªë-§íH­Ÿ»&‰%¥Uo]«Ÿ»æK[ëZýÜëþ˜s¯×Ͻj|Ìáý·q0‚[y—é,¬ã‹@–2ÉÔR"ׄ óÈ»ÿ†ƒÙ5صØI@2Êg(óre¹8[•XeÕ˜¯±2eé䑳jD‘8±ò‰Ü):ǾÉ_Ö.“m®Pdóëä¥KH òSÒ¤ü¬7Ƥrw––Ê\ª¼}nj35Öò[p$N(»ƒÙ„é:r¿¢>ø£ø>ƒÛnœwZVkºgÌ*ÓpÀàµK.HAäf”ÄŸ ˆ‘Æ6M|¬2oŠã×ÃhM»!·!× ûñ:ÊXÒÆ5×föðT‘‰X‚ûRÔ/@ݶ›PfIÁ§°'YÑ™€Ÿ¼–Ýx7’2‘!1½ÖÀä 6jºQPøa·ÁZ ¼Ž¸ž!â5ãŒdÈLY²ÈLY²;  Þu&Fš³—È»öN]Ntz[š/$<ã o‚>ÆYÓ³:žnáʉMv‰mê:içѱ{nÊQTÂR”Sc^^xƒŸ‹©bÃÇtä#ÅûÓ½gš–Ì c@ºÜ æø5–Jœ 8ÿ]ª­­Ò°±o{‘q5ñÓ—ÁãÈM9±¬5 ‰3磻 *·íU™A`Æ1ÆÇB¹„ ¯/÷ü’dxª¤!lÀŽáD’ ~Aû£Ø¤Î›ÐÒò>žœéÔmän ÇC»aŸÂ¹dC5€Â­Y€*”…s)3€Áš•‰fi'ÉåÚU^Z7LY†ÃÝЫ;èSúÚÃÅ!"¬¢ÃÙðHýÖÚ ;´}õ/®v{Ýoo·׿ÿòw;ò¦¨ïoŒDRàÁD÷àú—;«`ø›st?»q(v²\q œQ¤ÂÔY“Õ[ׂzè<Ü¿ám`¾xeº'çX (õs¯×Ï]“„`cIÖ㛺v?ÒÅá:ôò‰à+áÃrÌ žµÄELj-’À£Ÿ‡2\EiØdxÁ)RŸÅÚ#×£ÀÇŽ¢&FšçWá]ûSx¯üÈ7íK¶¾[Ø|„’}£ˆ]ÍÊ’{ÿžü*KîÌàšrq9çq « š¿à‘90öŒ=„dPžº0°®i F?â5zÛØà‡ò}«,é¹xía$ÖG„…Ó?c&V‹tÞNQ¹#ã­+!<Ž]L»”=gÈ3WÚ_îEÜX6›À›Í[ ›í0‘áp0´G$oh#àó2£R q¨ò«7Øü@">ï¾Ìø/Óõdûu”·tJh+·+ P‚6¡Õyn)>’#Ä@Ì3)2š¥SáàÞê{ ãæÓ ’8s©\¾ñÊ(CÍ`Æ£2€±Ùzš]Ì$b‰á‡–ìð¥"¤eÂ"dÞo*SQ’›1¢®“îëäà+QF§àNÚ¿ú•ßY >2g!ë‰ÈuʵüÁS'/fÆÓHžŸÄ™ý¾ä$Ü¡%xHƒ¹Â`à‡ÜÀ2‚ñÍšõ¾7Rnù|É2ñ€VÆœ²€ÃßÎò‚M¢ðÈ-•`ùî²E¢I~&Îu‚ÙiÄÞ¶›†þ @ðF\ajÜÀÞeB~fÜ ÓØÐñ/„Z*H2`Í&k6–I„A8ü…2+l]ùmF Xe<mÜ—A¯{º OYÄ<6tŠ“(—w¾C/±ÓéÔjµÃÎa­V»þÿ^ßøÍø{oýËý¿oÏ¿ÿ«ø—ï®ðN¶ûÅmÞx'~ú5Ú-6uÇÍ× òsšŽ? *Išk‚±~öš¯ ÎÿÌu&(ga!ÔdýÔ[¯Czš Kbr¥cν.}vØþÂ;®òÓt¸qqŽSr62ntëüiì öS–±´ÿ‰]KpÄp"ŒŒa$Ö"±G‰Y“u1n W?7•™mÄäÚY×1dD7‘$}¬oÚÃŒ÷ñFu¿~ ÙHýò:¢ÌkbíbMf•%e@Ó£i0UŠ32ù)ˆ®ÉGŠËŒŒÝxÚ¿h÷ÿ  {g°pà ˜7žûñ•äVÉ­¹|Fî×p¨{ƒQìTµ³Æ ûbêMtU™Ç€Ì²vü龉âü ·k&•hL;AÎÜè•@hà÷H:Ø9Ïå–ñGÆ+Q™¶“¸h©\ĘԺe³ü~9‡]1HH »5Y<æ–Xín2‹ã¹ŽX3ÉbX^e ÀGêçÞ"‹ÐÀ5~ɤó° Ãuº7KOÄ®ý‘,¦Úäƒ_d†¸ýƒ~H7™ˆ³pî†.`AšâíÃ-ÃŒ b8Ãjl‚.œ,(î½SääÎ"m/ë0둘—|ë!§„¥”‹!¨,Ùà‘uëÙÙLò!©?»‚ÒÅ$sQšeZк¦˜•:ÒP$ÿt½ŠËí·C.x.ª2Ƹ˜MÖW%Ž1›rˆ# 錋Æ,v5Ö£FJQäÖí"Ù)˯lô0g¥s1Ü#Zr o%n-d´“s¡…7µÞ‘ßpõqÈdÀ¶f3~™ìÞÇöi7ÚñŽ\¶ÝÆ{ÒüC°tƒòÄUmiäá­§&ð”X¡ßXèOVBqb¯>×úà·û¯øycïÛÞõ­S­m¬ÿ×Û‡¯Ôÿí6â­¶éà0œDüôeÊ§ÏøòÆ…û¢í`'ú+;-š ¦É”X ¹ë^Tï.Üѵ™Â*‡Y#f¶À~þ&—uáõ¸ûHN’Ú$218¨¹—z“DˆyA¥³ÍDq‚$v2?ç=æF8¢è¯1Ž ÁZlÛ£HøJ‡ ìô-½5œ³ؘœ&&Šcýúxíˆ$Ãë«ÁmŠhÂRÉï Rpgì|`¥!˼wo™¥h½ã³f]€rË y.}^¾é.Úâ§vÕNFû¾ï<Œ IDAT¬‡ëèLÌŸâqÖ2·íK†q­ÜMSþBC(I³–‚`A†ûî3ìJ]Kç|€€ tg° .…¸ö{#™Ÿ¤È¸”‰9Ù: @á3¢¬c€WHxÁg#ꀱ+5LÔª|&õpSuÜ”{«‰¯¡L®—vû¤¿Gβbe²˜hKª$t3¯Ãw~$k†­eäeŒxÍ&kìžÂ^›.–’T[Q#Rt·ð-øö—|ÌD°ØHWwÀÈPAÐd?]@ùfx°ä#_€WkºØu©Ÿ|}1ãqÈȇq ¦!~i´ô‡—ñF $p˜“ ¬Íë«#tÄ5—w»‡°ý²^îå§€Åzk7 »Zì¾]Fþd¼Ô†9ÕYŽ¢í†#vM&‰s¤I­ ÇùQfQN¶ÜÒ„µ… üÐ%X¯ÆeƒeùÆM&²½ùÍÅÝ„D¢aÅæ¯ïÝü Ê=£¸‚¹GæH¢[ŸH8•&ïÈ|7)åa@#ƒ@>Åɪçƒõ@⪒‹=¯¹Ï”¹_ÅG‡¬ >šäe@ÚWì R6À oy sýƪY°Èyñç|üQœäÚ7Ö¿ÿ'ça zÖ¾Ò°}g ŸïÂîþªqõH€·.íþ˜Îöµ&ô–înBpýé×l„¸ùZrðNè >ûZò™ŸÄ$o}ÙO²Øõ³×2ó•ÀúÙkÜ‘ãð³áþ|œ¼1Ó®·^ïî¿ÕÝ}ö¯‘ïè:vøà-òâ—cü§H"_Õ3ßV)úÀ‘®)§Iœ/4Ù)Kˆí‘«QÖyŒ‘Õ7ÆÌZŸ;¿[®,ÓüÁh)uÇ„«©m8èZš_ÖI¹Ø¹ WSó(žâLÃî\ûÑlÄd@4oK­ŽÜ÷ œJz?6M9ð,€”ƒ dÇ…à6Ô„úSÃ$"Â"÷^2.¯‘AjcXnÁEÄ+ÊÎJû{åÁ„ÅK®@yx  b0ÞåàD0‚I—3>j?÷©Þ)Û­¼“RÁJ݉-÷“Ü YÆ 4‡ ¼y2c]­tá¤U¯ÌºRa¤VÒª^OÁ¿ëÀäÔe.9a(€>oÅóÑ.FÄ 7Mlù¥GðÖ2ƒ ¹óÛäÈ}U)ãYç9Ñ/}^f=Ë%Y=Gâ•Â{ºAKê£è‰†ºr›ÕÁ¾¦„c`ÒÓ€å ©Àò¤Aä'°¯ÆøíûÒÈeÉ9™‰[…ÔÉYâ`#ŽCd¾Êñ·’¢l(i.&’/X‚~1;ð«’ÔÆ)€€Ø­s‡¯¡Á2ÿp6öãªû–e™ó-Ë2ñÒ¼+˜«¡.B \©Ñ¾û–ÇÕ—ÔX÷‰ __|n„PW_ü‡àä°Ü¼„;8òÕV¦\d’1ÖwÊô6]ðÀ/‘ú˜4±~E§ žHü8'ýÄ(å‰|7 ´ÊiÌ;„þÁ'O¸††îüÔØº5gÁ~þLNf¾²ÈŽ3gsô ¯*²¯8Éõ¿øñî'÷®ßÁÁ>¾_«=³Ù»xw6ðNß¿óßökøLE#n¼,Zb)¬?ýÀæVÀ¦fýék.(?g†1ëÍkÞÈ‘b½ùZÁ6°~ö5€ŠGéƒõÖ57hcà:MnF@0j©·®É×Ï]3àq¶»…­·®qgÀÐ|%B¨#¯Ÿ»æÚŽ4´Š¹}`—@ Ð\%b™Oñ…&ìJ…kÀQbAþû©ß*³Ž\¡æjÉ‘‡\wËU)tÂñ}t-ô&#Z¡mŒ‹kàWYJ¿ë”¸î“[^‰EîÆìˆÆ¦²€Ùû:;ý!w¬\ ²lá”à¦?Âénª€s±oœŒºžbÎZÈA¢å˜0¸hÊÁ¾ýG?2_OJRþ¸‡¿)\`¶ ÄR‡ííêþ ±lš˜4ÉL‹ˆµ Wã»ÏlÄ­ªWc°Ÿlá(ín; JšéïÝ A'š-Xz)æu¿_“+_’nŒrÌú7âu¶{³áCÊÅÀGêw¹Äª%°MDÞ™¤ü¥ÈyúÓ¤³³ŠQ=]ó±Ç˜x ±[niš¾ üúÂ!r·È–Ë ]œ.Éγ>Ÿáçã5½Ð#g:l–e&ŠÙê‰p¹%• ëÖͱ)Ô­¢…eK˜+æ¸eÁ°0´°Êâì̆åõî™Ü`M&o+S*2-ï%wh½Ž¤Îú°ŸIX‹Á¦PqrrðEv oáÄŸû¬“w¹oZ€B…å ¯ó뇓Vpí‰uq cD>Ž’ûêC® Gr)ɲ'HÈ¥Ìm óyJ~ã)Å( ? d¶¹&ÁKwóÑÁ¹a5ÉlŒd›…ñ¬„bAf€›µ}ûçÖüÝî¶o¡¹ÙkÜm¢‰ç:½O¿ææ¶Û(<ö¡ }a_ERú¬v#ÞȘèýŸ™”Šs œ Iƒr©ä>‚ƒ‘ùG÷!èl õÁÂUu u_lH¸>‹e5àT¼ÔþÕuò§{:é;‹¬eGîƒâö@ÂÓ—K_sݪ«?Îÿ Ä_–T椂¬\qSc\ ùËÁ‘1ÉÚŸRþÊ›×InÀ°)Öda†;K›ÿ5˜Dà†\†ƒ^ð›e› h鸳7°ôÉ5ý×"ÈÜ Ši¸ÙÌG“Üz=ùN wóœ„6fßÿÌ7ŒƒÐ8,OÝ<ˆÍ¿¦Øw¥R‰õúÆ”‹7R°®ÊØÉ_w®åã  Óõƒœ ^“¯el´ž†à*£{o”O2KV伦œYw+Qx.maQq…Êú\àÅMJ¦Áë _ÙÅYPŽx¢y %ÜíÇšø»ØøÈ„S–qÆ«Õdlh¨“b‹$ƒ(Ô’Êô:í§ç ¤‰+´\N#§((¿{}.ùÂrßlÀß"¤AŽ›ÉGU‰kÀR(Ó.Áã,gƆÎâ~¼G_ò]«È z#n*hæâƒêljcØX>£$ÏåM)Φn}‘‚'ó±¯0Å¢ÍùÆÍ=£•|j0PÉ\Iê…uí°KTþ8 íÄ*yÓËnnÛøÇNvsÙdæÝ¹œòd¥sLäà)~™‘Ø––©ž.­á”¥‹ÔoÈÇÅ“5¿rÖ;Ms=r!ûI=§®­é‹d—³ %-CSßó úZÑ F=~’³„F½ÚOö¿ð~÷°sóê{ 5¼E o®w5\†$D~ý,Þ©Ib­Ã£„  _Ùpyn;cñã-7 @0â +™Ók<ª€« tÿÐQ# †Mà×É- hB„Ûb.ã<êra$àŒçÜô¥o’px SDá?š”CFãcOÙr%ájì[Ããf#û#ÎûßèôÉ6S‚:ÔÔº7®¡xu¾#Ù.JnÁ9Ñ…¼6“wJ 'N¨“ƒ62·q_×u+³Ïåm9¢¹}é}„c„þüSúÉÂÏNò´W ãX¤³‰¥£¥¼¸s™XA$£,`Ò `Ò8pççéigÃൈm”˜41y×~ç®ë†œãˆ[Œi‹Z8v ‡1.|)|}Až.AA_åcCˆ"$%gáÕs`!;„Ôß¼EÊsg!ó,h–™µiâƒGÕQøcÄ08²>&8f’ Äj n]Ë» »ä°é~ðÉÁr#g÷¥àRþ_‘|@IÖÙQ¸åÌ.>Læ^È’A/×Å!so½NB%Æ}H>A”x×~70GU1ƒ¹®7óŒ¡XqÍ”“)¢ž9ò•X÷®ùƒWðBÐ)x/Gèt·’®„C‚ˆ¾doýú%Œ¿Hsïõ%0€MR+íŒ+à5Ñ\B¤1h…H=û‚ˆý8‚ûIø@q†A€e<à:PqçùΗç Å­+'2 ’•é²dðj Rhc€üM¥½uoßFq¦gIá–û¸v)æ×ózp B›ÑîÞ{ k°‰ ã§,yØCïׂýqá>HêQHáW\²qT¾‚sQñ—¤IÑu¹÷ííocF=~’³BN}þÙ^óÙ}só¥;€_/Y·”2ÍÉIë@eÅÈl=Vgð!’CãÔOx3ÜŸÆD±…'<È Fn$'u&;¬Þ œŒÜá¬ÌD6‘‘q‘K°´'ð3c¿ï8ãÎï+RÌŸ§ªˡȰ;bÅÀšH^ÞÏ-RfAÓ@ù ÷ŒN:ø<1@ÖÇ‚ ÆŠCšj$#àSeM­Ù±òʉŠç.S\˜wNR°þæÚaþ¦B¨–Šê ÆÜ^*Kî }|çƒwF2$k¤ø¹”àE@ }^éÞ¦›ÁtŽÆ¹U–!I6[y66S_ «,ÁƒnÖÄ7`wþÀ®ïí…Ž ÒdJoìd™Ë–˜ë»ŒÓ€( ^΀~5RúvVÞÔ!C‚Ì|÷€v#¨§Òº7N‹Âi¬yLÚsY‘IÉö –"ð«ÍäC‘Ï®“,3È/ăõmoPB²cFç“ YÄÀµØGðGv#gºÒλ¥7‰–‹Ô/ím¶§ j¢kUúo—_ùáU`~•%8(³Ԁ㞸‡’žÅoX†4œóýiÚoMÈÈSX31i2Ÿ¾p¡˜mðr½yLVrÄ@Öµße@àŠTÉÌÐòP [‘–9ðáGww?Ù-è¢%VEE¸NÚ@TýkwÄzïã\³8s¾·¼ Zj‹uýwfÌxó¸Ü‚Ó#þTŠN¦˜†jÌ:—á°ŸF>)Ÿ q¢Ý(†kÈ~OÍ™Xyµãl»c‚¯AóH7#ÎŽb áHýnš’¦/qDüc{¬¹&5û­ªØ×Lï¢ëklÐÂrÓšÁ”¸üG‹ÿ€ZøeI‹ð·¥‡æÜÌûîÂiöv>=ò¹$yYRlx<š‹ó[#§7ñílð±¿Ò¯)зÊ2ó¡pš$µIdcg¢ðƒ<ìˆê£(Eb{3èr$¶– J¦6¸— ?œà )¾ŽGò„øïë.EÐVRÊ! ¢Ø¤.|?¤Žv0)€p¹«Ö{‡Â4°TEùšigºH»2 –²‹ ¥þ†s"IÉßÇyj§l,á“ŪA£¦À‘Ä1qžûa²Ù.ms;á<ƒ§ ¾惰ø ˆ®ŽØœ,sÛ®lË6ˆØ"fç_?ýä×Ä9;‡‰ÀÐIPGò~b¸’9à‹[l9så'4{º²*íÇÁ‚…x5€+ù¦d½B7+bÅF•·„UÕ†½¯o}eCŸDoμAoK‹yÜžñ%뀜û)ŽU!“聆¦ãOß¾$‹ óúçLàb(-dÉÇr6(9|wi«³* x¿n#pC0;ßÞz½a2©¡ly5¼Meò}Ù?ÕÏWÀRàåx ŒLYÆkÎxákVê\û‘Ú$ "õ§`_þŒÃ™ëž(xºh¨bÉ$yï£K‹J‡¢(Š2Œ¡ÃýÂ̰íÜYåVß9ô¾ƒ®S²¿[m¿¶Ý¿Q~ýò›VÙ(Ùïî!½ û‡nç.RxÍA7Rª’daøVEQEQev„Û‡:IQEQE™)*ÈEQEQŒ 2EQEQ”£‚LQEQeÁ¨ SEQEY0*ÈEQEQÌÐi›­ÌwÎ÷ö÷hO¸1ö½sï¿Zá½6[›Õo:ôÓ%¼ÝÐɃLž“#‘»]ùÝçœ6EQEYM*Ų ûã©÷ÍU.˜Scßb³µ9’ž‰œj,¿ÑHÒMQEQ”“ÍÈ(4™LW^ôß"§Ã&U9ñ„‰¹Sè"”ÎA×—éOŒ\¤0yáÃ#'§äšS´Œ*Š¢(Š’c >dÒC÷KŠI®V2Û8ëiÇ©±ðAªçä„y>ö5u•¥¢(Š¢Ì‚SŸ¶×|¶uð»}6]trN"'CÁœŒ§PEQ”åÁDðáGww?ÙÕO')Š¢(Š¢,˜Ñ>„ãf#4¹9õ§(™E]¶/O–í)EQå$1D÷nxné?FuŒ’ª(Š¢(+‚NY*Š¢(Š¢,dŠ¢(Š¢( &3e¹÷@'³EQEQæÁù-ïÕd›ç4ì§¢(Š¢(ʼÑ)KEQEQ”3µoY*Š¢(Š¢(Âî'»ƒ~úñ_þxÿ·ûádŠ¢(Š¢(3aû…íŠGꔥ¢(Š¢(Ê‚QA¦(Š¢(в`T)Š¢(Š¢,dŠ¢(Š¢( F™¢(Š¢(Ê‚QA¦(Š¢(в`T)Š¢(Š¢,C¦(Š¢(Š2}~ü—?®~° 2EQEQ”é“‹Å_ŽNY*Š¢(Š¢,dŠ¢(Š¢( &3eyëÝ[‹J‡¢œ®^¹Z¸_k–¢(Š’ãö{·~çç4Õ‡LQ¦ÀÕ+W[ϵFrPEQV–þ| »ýÞíYÜ»ýe@ã©Y\\QÈåW/·žk =lýLQE9îÜz÷VuùTØkÌÉB¦jL9Áä”–šÊEQV“Šáø|Ný¤Æ夒sÛÿí¾:)Š¢(ƒ(ì#f.ÈÚ_v®ÿõë´}ù•Ë—_¹¬úL9ñKÙ¢S¡(Š¢* ²S#]ÔØíp³ª?ûé[·ÿáöõ¿~]5™râQ;™¢(ŠRá>d§NºôÃÛáŸ?®xõÆS?ûé[—_¹îüÙOß*w&ËɾзëOXxúi¤Ä+Êxˆ™zñ+Š¢¬2›­M{û{U"ÈHmÛÜ<×°÷`ëÜÞ¨šl«µ½}aÀþg÷PÁµŠâI® RL™dS5¦(вÊ£*š¬Ò”åæ¹ÖfëÔfëɲ1 Ö:{¾ûµï ýs¦ážð¿c\mì9YE)D}ÈEQVQc…2šSë¹Ñ ýegýŒ‘?×Ϙ1ÈȾEˆö ÷õk¤ÉÍðjtnn¢L‚ú)Š¢¬&…òk¨&«‡lïÁþÞþã1Ô€Ýwi¾’h=¿ûñ<êuúËh©¨¡g…ǨêRfŠú)Š¢¬2Ær d¤]¶Îíí=Øß{—_ݬîŒ5ÈÖþ²3jØþ›Vq5+ü)d·ÞÝpõJñÒhúµïFCÎ0ô"…”ß+wýÂÃ]¶Ê5Å g‘_1 ë ó|ì×:èôÂý…i(O€¢(Sbëò«w&9¿ª ›úD^õwVN2óYk9•¾¶\yŒš˜…Üzê”?ˬ%Ît³åê•Í[ïî-mV+ʉáê•K¼õîýþ³²í¼Ú¸û^»v:pøè^á1—þêû3º»¢,™úU±x‰\Ô ÷›Or‡Í¨ç.LüÉ C󼜡odiPeröŒolš‰ k<µÑþ²³ójƒ<É:ûýÇüì§o¡Âw-åØ1Ï8d“÷¾t…êÇçŒC¡(<`Ô[šøËýÞeÐìaõùÄ0IáÎ…LöúFE9ÌÊBFJ‹"ò_ÂÈqùåXsŒâ×÷“œP7”¨1ô™ˆr?}£ð²… *¿æ0_9õkªÙLQæÆæ¹–ØÉm2+A66?ô>ÿ¬Ýùú°ðWsÚ4Ï6šÏ _1 (‹eQñúC¹0¨îïò«ûþ÷ë°Üþ¡ŽðƒnÝo{“”çì[šôÍϲÀt‹ñ¤ÏxodºiPe*ì=Ø¿ÿ`oëÜfÉv!Ë%Èv}¿óu·äûÈîß?Ø¿°qf}ûÅ­¹%LQªsìâáðDýýç½o•ežcçJŽ—Yù²<)Qe ¶ÎmŠ=,·]rÖr 2ÿô›_ÒÆfs»ÿ×½ÏìÒ}m~iR”QX†oY–ë•¡ýý¬ú—Ä<×·AL2Õ8Æ)YÏ¡(ÊÂÉ6FÌ\ôÌí·ž9Û|ë¯oØ´sоŸØ$w@lÖ/^¸¸ynsãÉÚôÓª(SbQ>dƒúã…KŸ¢„ú6Ÿž¹ý¡,omcáþ¹åù2¤AQbmlÁ>d§NºôÃÛáŸC5)­f£`:²ùÍ€r5–ûœå$Ÿtýþ«ÉMõ³KаÀ8d£º}ÓI•M;æüÆr~ýU|Ȫ_67Y9E×B,UËEQ–чŒÔ©BJÊÖ¹½êòÈœŽg6ØGnOý çË¿ÿI{÷Ó]ÍgŸÙy)#ÝèâóüpxîëæªÉ” }ÈÊý»çÓË–xß]™8êÜŸœšÍÂ;þT1Íå—-?qŒg)a¨Û¾¢('†ñ|Èfõ-Kaó\k³uj³uŠdÙTØýt·ùì3ÍgŸ9øÝçw?*wÛÏ©S§ÄŽEáŸá¯%{ /›û0yxñA·È]9üoá]”ãÅ<¿eº¢R“› ïÛ¯±£¡J¥’‹—ß·<nyüÛP–';yóÉóATIÃBª)Ê*Cö°þíæçÔßz{F8Þ>Ê;¿ü?„†±ƒß}ž3’õ#²©dC¶KöTQKýÖ²Š&´Âã•cÊx>dåýå$žøUtÆxTÔdÕ÷WyŠQS5FÂÊéô½ÖêÚQQ”y2¶ÙÌ-d{ö÷ö¡0Ìéøà÷íƒß·Û_·s?‰Ûyi«ùì3C/Õ÷pOÎ|E ¬ÐXUþýך°êWŽó´“)Š¢(KÂ ÛØP;Ù ÙãÇïüýeJĿ߿ó÷û—_ÝIv4¿Ùh~³Ñ8Sv¨y¬J:°Jþõ:&F9´žs³óÇ%™2*󜑜¯T”9#ÞóýÛ%gÍvÊR|ªäÏêçNYî~ºûý?ÿîRVDn®°ßBVh3›Ä©?çL¦zîd° qÈN< — O@uŽQRåÄ0F²™OYŠÈUm”LYN‘p‚’R({”çö”_aŒ[ ½‹r¼ ²E§BQE™7ƒlcC—6Î\MBnÊr÷ÓÝíÿ\¾¿ŸœÐÉmçOÿ¥üj²ÂsK®0ê- “ž' õ!SEYA–чl<:èÑÆ U–á1в„¨™¢(Ê*3žÙr ²Îz»ߣípÊ’þ‰yl÷ã{'L“©aì$¡¶1EQ”gŒ8dódÕgâH5¾áæ(eÊ’þÑÎ_þŸäHEYNÔ‡LQe59!>dÛΨ?Q¯?Q·’œ…l÷ÓÝÝOwëOÔåHEYZÔN¦(в‚ŒíC6¿HýUØx²FJk÷ã{$¼ Ù¾p¾äû⊲X&ü–åüQá¨(ŠRÎHíùxß²\.A€”Ö˱³è„(ʘÇ8d·ß»½è$(Š¢,)û¿ÝõkxˇLQVõ!SE91Œ4pB|ȦÅþ¿ìþóýÎ:?tmwþÐYt2•“Œú)Š¢¬ ''ÙTh}« Àœ®•lo<¹±È$*'C¦(Š²Êœ„8drçï?¼ówïw¾ît¾î´¿lð?LRä¶ã?Ù¸õ«ÞΫ‡‹N¬rbQÛ˜¢(ÊŠ³¤qÈæÆ¥^ÀO5¬×LnûÎûƒN/üš¸0ôø’ƒOeýÉFcÔzzù‘sx¢cÇ>d·ÞÝ»õîÞ ?çàr>vE¨rÁ…”-´Š¢Ìõ!Ëcµ{þwí¯v»ß{ýý_w{{¿éþòo>—>ü«ÍÿjÈ’Ÿ¡ìïuúw:8ü©ð×9Pñîúuói1žlþ"¬ %¥·¼" *o³¨q3'žJUhëªb÷šÐ6ÖÏЊ€º§¿ W¹ÝäBÅ‹¥¢(s`mL¶qBÙH“.ýóë{?™èŽƒd9á5‰ã×ÔMbýŒ¡Ús§çŠÊ„Ŧðôý§(Š2uV݇,Ïóþëã[íÜö®² =½r{¦Õއóz¹‹ËžÐ„6hOÿYå6­þc OÌ¥³<1áŇ^puX¶8dAc*¡4L¦î8X}$P~útS¥(ŠR…UC ,ûÙAÛÍöNû“è›è|œ%·'<,wß¡>¹ŸB‰Óñþƒs×tVî€AV¸¿0©ƒn{äþ[¯²#&ü–e¿sبZ*wVuSÙ©,ý;§þrg§KFýú/LäÐÓO ³C+Š¢LÎØqÈNÈ”%XÕ¿qhlÿ—vûì_llö§[ød/ÜOÌy•¥²jŒêC–ÓLåûƒ~­~V!…bkcdR~â¨i˜d§ŽE™«îC&¶1søAïðƒoßÐÎïÇqPcÚa_¦‡LQE9FŒçCvBÙ¨«,—\)ÇšIÖW*åè@EQ”cÁH¶1â„2Xd'»øó®6CP”©0v2EQåX³êqȈ¡JK¥˜27Ž—lÙV†*Š¢SV݇LQ–‡cçCFö¼ÛïÝ^tBEQN+íC–Ã>²‡_÷âOÏÖïí~¾Q_·iRb½¶Q~²¢LÆñ²:»ª(Š2EÆð!;QqȈÎzí/{Ö¦ø|ÿ°¶¾n-ðíƒÃ^§wêÔ©öï;‹N£r™0™¢(ŠrL;ÙId/{õÆzng}ÃÔŸ\o4ëëõuþ_]b©ÌõÊREYAÅ诩YÄðrÚ_öºìçû‡l79øìóÝïí~|o½¾NÿÜøŸï\üÞwg›neµÛØñšµTEQ¦Â ÛØqõ!;uêÔ¥Þÿ‚¨÷°kL À>Jö~wÐûcÏÚ)ÞúÉíÚZ·öÀ΋ßm·ãÓfãLÞŸlF_` ? Sý”*ŸÊ~\\YŽ£™¢(Š2ENŽ©±­s›W¯\ºzåÒÖ¹ÍÛïí•ÛÉÚ_J~t»=ûÈ’K`ôºÝko¼F¿®›Zû‹Ã™¦_ µDè·óVõ!SEYMN¦Ùæ¹ÖfëÔfëÔÐÇ`YÙŽO›Z¤@„82H7þç/w^ü.¬¡û°7ðBYúçLû¿»,;ûÏ-üH_É—›Ã æþ[˜˜’¤æÎUæŒú)Š¢¬ 'Ó‡Lh=7ük“Í­?¥íä‘Å)’”…Ú‘?ø;v¾Ê}ûí[…/ÙYEý^!Ü“ûB³ì)7¶•$¬Ê“*SD}ÈEQV™ñ|È–Zí=ØßÛ\]RìÝÿwÚ°©51bè>âiÊ#Üþ›i.´œ©èÉó,g?S5¶Ô6¦(вâŒd#–Ô©ŸÌ<[çööìï=€Ë¯n–Ë‹ú“ë‡èÒv¯Ó]¯Õzÿ‘&K,OP¦°ÿÑ=|Ø‹O›Ù>À"Pùµd#Q{ÂÔ¿±~Øí=Óª›ÓqýóÏoï¼øÝ‹öÝ ß!5Öþòð—ïþÓ3ÏÖûƒ!ð¬'r;ûë?·0aC¯ð¸o%¦üZx—܉ƒ’ª²lQÌÁ‡L”G¨HúwJ®Q/+? ½l¡Þ*!—Ô*)¯˜Â*wWE™'LJl<šÏnôþØýàÿÅ>JÌé8ü©wØm}ˆÔnì™È<ó\cë…æt暴(¥±}Ȫ×ü~·úœ©lÔ[/Q­kCUÈ*Š¢2êèîdúa,¹ÓúV£qfýàËÃÃöáퟰ÷oë5Óüfý™V³p¦RQ¦Ë||ÈP$¹r3˜ÇE“G©(Š2ˆU÷! ©mÔ¶þsóâŸo_úË‹WÿÇÅ—ÿbgûÅ-UcÊ|˜s2Z#n U6¹)B9qŠIª¸SQåD2†ÙÉdвXfý-Ë0\…üY¾sì+Œ‘ªðÄÂå‰ÉíšlEQ”åaìoYžúü³½æ³­ƒßí¸ù‹[n¿w{–I=®´¿ìÜÿu»ûÇÄ¬ÛÆsõó[MÃÑe÷»Ø¤Í*­R.¿z™jM΋_|ÈÈ`VesïÁÞñu~ U— &EQN›å[ïî]½r‰¦&C_±ÂíûnQ¯AêëÃîî~²»ì>dK‚}d;íîáW‰µ@ÏtÚÝõõvë[S^ œ ææC¶lSEY5Æó!SA6œÎ×Ã?$»µÿÁ¥{« SŠ™VŒþ㈊0EQŒ¸¾’P²!Üyûî/¾÷Á?î&Á~𓲽,3³ö!SEQ–“±}ÈT áÒOvì#Ĩ‘‹Ajj§›.eÙ™óZKEQe´¾rèZKdC¸ùöÚÙCDˆÑb5†Úq£µ¶Ù:•;q³uJþõ_6·³äàð§ÂKM—9ÜâÄ#¶±ÕœµTEYqÙÆV1Ù´¸þæÍÚéxçÅïì¼R—[ê;?hì¼´5ôô½ýÇô¯_~õïtpøSá¯Ê²¡¶1EQ”GãM“ëoÞÜØ¨o_Øî=ìcš/XÛÛš§6FºÔ,„T¿ÍLþ ÿ+?•Ÿ5èDe<Ô‡LQe5Q²)sýÍ[3õí¶{»&2ív»Ùl ²[/6æ¿25œ²ÜÛ ¶±…63ÙS"§J΢=tqú¯2!j'SEYAÔ‡lš\ãfãÌúÖó[½‡‡Æ˜öWíú7ê'?ûÅÎäuO¡¥ª_‘`BV* ò*+—S¹³( ô§ê°i¡>dŠ¢(«Ìx>d‡,Ïõ7n¢×Üz¾ÙéôjµZû‹v£Ùh>5MÃX¡k¨ XUŽt‘Â=…BPUŽC¦(Š¢@ãM©±—šwÕ©Õj‡_uzãL}B5V8Õ8-'ýþå„;s¦² S¢êC¦(вš¨Ù¸þæMí˜(îu»_mÖÏÔ©¤ÆMV<¬D±å~*™²,ÙSý,¸œœ•ý–¥¢(Š‚q¿e©2Æ6Î?ߨû×"ôºÝ‹¯4ãÓqE5¦(!jSEYq4ÙøtÚɽߴaý©îöŸÕëgê£[ÔʵpÔ‡LQe5Û‡L§,™½Ãn½iFë¹–fŒ2!ºÖòø²÷`Ñ)X›çE9æ Z_9t­¥ê¸~e‘­5z/ÿðåE§E9ö¨Ù `5uÉ*+QE™"êC6>Í`.ýHÕ˜2Ô‡LQeÅÇL-dPEе¿ìÜÿu»ûÇÄ¬ÛÆsõó[M ‡ÑznÆéSŽäCFv²ùJ@µÌ Bsiºh~.ú:–„A¶1Ù„ ²JØG¶Óî~•X ôL§Ý]_o·¾Õ\tº”åen>dÔ ß~ï¶ì¹üêeÚ3OE¸äh.MÍÏ¥B_ÇR¡>d3¤óuçðÉîGmÀGÁ¸÷± 2¥˜yúÝz÷µÂa³K{.¿z¹¿9ÞlåÛ‚½ý=Ú¹·?Ü¢>*ýW.L@á‘Õ¯9”Qs©? É%ÙS~ëÂ_—??Ç»uÅS¦›'›­Íê‰\þ×1¨#Fz# a<2dC¸óöÝÞ!ºlÕìˆÑl¯»è”)ËÊü×WæÜ’1ñØát »:j[ç˜ýßî‡]QùgªÀæÀ|ò³äÏ~}3·—² ~vTDÿë˜UʦM¿ \NÆø–¥ ²!\úÉÎõWïÆÕS;m›0e™™ŒÝåê•«ƒÌƒ;Î~íR¨fJvŽgùèßûš„äR®§Nè¸çRyÂfšŸ…¿VÉÏþ4 MdÉóæ®™cò<¡r2Òu¦uë*L·Tž%¸äÈŠgzw9&|/!“géäŒíC¦«,‡póí;µ³‡ˆ£Åj µ'âFk=<ìÔ©ü÷Oô_6·³äàSY&}žaÌá+±[k)£ä\³˜kÃ?ÅΑۉlÓ9yb¦rÍ©° ¹T˜†Âƒ~]H~’%¦ü€ê‰,Ìêò Nr»êÉžç­§KI–ö'¸¿HçŽ,J!Z¼ØÌ^Tô[–“rçoßß0ç7¿·±÷iÇDq¯Û½øj³~¦^Q:~U?¬|¦²ðÏ*wì?xèY*ŦŜãõ¯`û;šKÓeÖù¹ðžõx±âÅ{yJËØß²T2Æ6Î?ߨû×"ôºÝ‹¯4ãÓqE5¦(!Ç4™¢(Š2Æó!S ™£ÓNî¡ëOv7õú™ú½øçŒZ¹Ëü¿e©L½‹N¢(Çý–å¤èvëMÛh4Zϵ4c”I˜§™2uVÓ£_Q”© qÈ&âú•]D¶Öè½üË­o©S¦À ŽC¦(Š¢ BãMÄF³˜K?zyÑ QNêC¦(Š²Ê¨ÙøT‘bí/;÷Ýîþ11ë¶ñ\ýüÖ4CÅ*' õ!SEYqÆð!S Y%ì#Ûiw¿Jz=tÚæþG݃߷(ey!²E§BQE™7ƒlc²=dÃé|Ý9øíáîGmkýÎ{« SÊP2EQ”D}ÈfÅ·ïþòç{üã>`ì' %¶×]p”¥E}ÈEQV™ñ|ÈT áÒOvì#Ĩ‘‹AÙjj§›.eyQÛ˜¢(ÊŠ3’mŒPA6„›oß©=D„-Vc¨=7Zëáaá‡,eÐÙÜÎ’ƒOe™ôy†1‡[¬êC¦(вš¨ÙL¸þæÍÚéxçÅïì¼R—[ê;?hì¼´5ôôÇL¿üêß9èàð§Â_•åDídŠ¢(+ˆúMŸëoÞÜØ¨o_Øî=ìcš/XÛÛš§6FºÔ,„T¿ÍLþ ÿ+?•Ÿ5èDe Ô‡LQe•Q²irýÍ[3õí¶{»&2ív»Ùl ²[/6æ»-œ²¤ïTÒFh3“=%rªä,ÚC×OaNˆÚÆEQVœ1|È40l×߸ÙhÔ·žßê=<4§kív»þzãÉÆÏ~Ñœüâ¡î‘mv©~=аð:…×ªÉ &M6ê³(ƒ˜ü[–·ÞÍ×Þ«W†ì¿Â¨§(Š¢(¢ß²œ×߸‰^sëù­N§gN×Ú_´O7ZÏN3.¡‡¾Xª•SZ¡cYõ[÷Ÿ¥®i3bB;ÙÕ+›"§ÂíŠôë9EQeŒíC¦² ¤Æv^jÞýUgû¥Ã¯:F½q¦>a>å¦ šüâògÿƒÎd®S&Alc³ð! •–¨´ÜNùSdŠ¢(ógmL}ȪrýÍ›xØÜy©yïÓ¶î¾ß®7jo6*ÚÆúƒSä¿&'œaÌ]\ö„¦¯A{úÏ*œd¤´Ä`Föï Mk³H†¢(ŠRŽÆ!Ÿ;ûþ†9¿ó½æÞ§Žÿè^|¥Ñx²aL%5ö8 L)ò+Ÿ©,ü³ðâýç®?è¬ÜUY)aþqÈr²LQEY‡lblãüó½í B¯Û½øJ3>WTcŠÒÏLídƒ&.ÕuLQe±¨Ù¤tÚÉ=´aýÉîf£^?SŸ¢ÿœQ×b™©Š&"s3˜j$SEY êC6)z‡Ý¸vØhÔ[ÏµŽ¯SÎ|â‰=L6T‡)Š¢, êC6&ׯì"²µFïå^l}«¥vCeBfäC&–°P•ïœzEQ”Æö!SéÍNç`ãÒ^^tB”“ÙÉ&œµ4;9öNEQe¦=Œf'm¢‚ ªH±ö—û¿nwÿ˜˜uÛx®~~kš¡b•“Ĭ}ÈEQ”eF}Èfˆ}d;íîáWI¯‡NÛÜÿ¨{ðûö¢¥,)ú-KEQ”G}ÈfBçëÎÁow?j[ëwÞûX™2ùÇ!SEQ–C6+î¼}÷—?ßûà÷“`?}Ôöº N˜²ä¨LQe;™ ²!\úÉŽ}„5’b1HášÚéŦKY^Ä6¦>dŠ¢(+È Û˜úMÄÍ·ïÔÎ"BŒ«1Ôžˆ­õð°ÂOzç>mYr|ÉÁ§²Lú<ÃÐYNŽÚÆEQVõ!›2×ß¼Y;ï¼øWê²sëB}ç—¶†ž.Ÿ‰ì—_ý;Œìg1U0 Ô‡LQe5Q²ésýÍ›õí Û½‡]cLó `ûBcûB³ñÔÆH—š…귙ɟáå§ò³¨ŒÚÉEQVõ!›2×ß¼Õ8Sß~a»÷°k"Ón·›Í"»õbcþ±ÛÂ)KúN%m„63ÙS"§J΢=tqý愨™¢(Ê*£>dSãú7gÖ·žßê=<4Æ´¿j׿Qo<ÙøÙ/v&¿x¨{ -Uýzˆ²RiWY¹œÊEi ?U‡M µ)Š¢¬8êC6®¿q½æÖó[NÏœ®µ¿h7žn´žf\þB-%–ªAgå\èXVýÖýg©kÚ,P2EQ”ÕD}Ȧ©±—šwÕ©Õj‡_uzãL}ÂiÊ©Æi)¡þå„;s¦² S¢„¨LQeQ²)pýÍ›xØÜy©yïÓ¶î¾ß®7jo6*ÚÆúƒS”ÌBއÈ&™jÌM€†÷*ÙÓVx˜*³ Q2EQ”UF}È&âÎß¾¿aÎï|¯¹÷iÇDqï?º_i4žlSIåì^0¥XèV¸Ð)¹©ÆÜÅûÎ]ÐY¹ª<²2µ)Š¢¬8cøÍ}ÅàÒbçŸoÜû¤½n÷â+Íøt\Q)Jò!ÛÿíþØ6Ö¿=dŽN;¹‡6"¬?ÙÝlÔëgêSôâŸ3jâZÈN6ŸöŽZØÛïÝ–=—_½L{æ, çê=ou4g*²šµšO=ÈF³“ƒ¶ QAƤèvëMÛh4Zϵ4c”±ÛØÜÔµ°a“J{.¿zyPS»ÙrÂÞ~!~ÍýÔ¿S."^­„ÍÖæ¨§Œú¼¹D–ß®ðÁÇHð±È™þtŽzÇ*”géqɨ\Rg‘Q³fìŠ#[Þhä÷€*WXH‘˜:ƒlcå>dª;àú•]D¶Öè½ü×åØ3OÛXxÓ’?gDØÈŽÑö·¼Õõy%©“4ÖÕ|,r&—¼ 3g<ŽEF!›Â…dÔ´˜C‘ÓsCómEbºŒd#TÀF³Ó9ظô#UcÊt˜›zÝèê•«%c_¼†]KEÃØP m ¹òçH}ÛxÏ›»¯Ü±Üæ14Ác˜L–6g}„*鬸'wÍã˜Q¹”—gTÎ2n0­ìúS‡Ï>N¸¿?1Cíèƒ oCgvEbêŒíC¦«,àÒ^þÙ»ÛåÇ´¿ì¼ÿ¿îßúéî·ïîþó¾}dç“6å˜rìÖZöw$ƒvV¼NØ…ôï,ìÞæIa:K~Í%¸üôêw\xÎB­’NÚS¨ †æI¡Š-IRap|ŠPnœ34C&ÌÞùSþŽJ¦Ç{YÇ¥H¸»k²™bÙN»{øUÒë¡Ó6÷?êü¾½èD)KÊqCVØ–M¥Ë5 Š°œÉ™1Ê;øp¶®âÅÃëO빎Kúì¹£fïÜï%–Y(ªÆNár C6+:_w~{¸ûQÛF±{« SŠ9v¶±YëZBkÁRu9åéšÚ1g©r&×åL8ƒ,góIÛReÔ¨>sw"¿ Ç«Hh²ésçí»½CtÙ8ª%Ø£Ø^wÑ)S–˜¹ù•;:Ž„n²1õ^¶ÿ‚ý4c\vŒç5Õ­r@•Sž3…S`“x€M…%̨ÙQ={òÔK"wfT$¦ŽúÍŠK?Ù±#TcLíôbÓ¥,;Kn' Vr6¾ãµÈ2r•Ŷ˜ƒÒ°@;Ùs¦J²Ç¶=LËh± •¬Sy´ ¯°œ6!ahÚr^q£^|áE¢õ!›7ß¾S;{ˆ1Z¬ÆP{"n´ÖÃà ?éû´eÉñ%ŸÊ2éó C?d99sö!£±oNüÝz÷Ö¨cý~ÇØA;+^'l+ËwV¼21Þóö·Ý…IªøCO/dÙr&¼uõ$•¤jŒ<©~Å¡êIªþŒsÎÞ±Š0…剣¹¨È¬‹ÄÔχìÔçŸí5ŸmünÀÍ_äÃø®8×ß¼¹ñD}ûÂvïa÷î?Òέ õFs½ñÔFxdÿÄsŸë¥?Pxpɦˬ¯"¡¹A}rqȨ¬¢Ïöìm‹UÓI@ ºMôG€7 ëœlÄ(§õläÀ€˜%6$PtA]ê`˜9”U.UuUWuU»¥®ï‡AHO¯^¿6(óãÿþ]eä<Ú ž'þý üI(úÍä ÁÁh áõ{€W-®6æ‡@öR{uMvÌÖ¢¹ùÈÒD6îX†ÒÕ¬JY‹Þœ"ár8~lòC Á×J‰^j&+d·%G JˆûåÕ¹q§¦ÍµÞ2·ÙZ¥êüÖ[ZVê„Ò´Ti,T÷’˜#žýa}Çã. 5†N­wUhBš·Œ8ô@™ÑC–«ææÕÖ÷¶TÄéõ––ÍêT5e‚¨@ÉÑC6<ÛÚÛ|hIE¦OöšoÆŒQ«Õ_v(Qâ;zÈ œè!Ëí¹8Ý^Uï*eÔOÕ üL%ʉ:”=d¹´/?Š«+çÂ¥¥ú™:·ËEô@™ÑC6¼ši‹h+W.Œ{#˜ÔÆ ä†è!£$"’&ŠY?Û¿±z¿îiÓ®:eÌ5мU,&Ì+~–%àúY–TÈRqw]ÛêuŸí9ŽØ–öø~ïÉSkܛ¡F Jhè2*dƒÙ¿ØÝ¿í=¸o‰¼,‰m~gÕϘcÜ-¿66\ÙVŠÊ6àЊ«%÷Èè\ßpºÒÛu«}O¶E¤*u×é{g8¬¼ÚØpiìtâŸ+àHðêa^ ~Ÿ€#ËV>h¹»R•`MŸï¾p¨q2('îC6*k×;ú]©HUêûiLôãUUŸNëûHïУ-æ'L>vPÞ÷3², =dPB܇l$Ú«kúTµuþ\kÙð FëÕZl ¼ÜLd4~Eã&ËÁÇb˜?îCeÆ}È Ö^]«ÕŒæBÓÙéišfžuE¤¹ š ¦:™í©J£RÑš™ÿcð«ÿ«ä«â.Ĩ@Éñ,Ë´W×ÕŒÑ<ÛtvzZE³,Ë4•TÜÆyõê?<²ôžSé}¬™ù# q*á*oÄ[œGaæG”=dEj_]S3Óù†³ÓÕ4Ízf¯ê„úèËVþѹ§o¥*š‡¼À$£R\WYrœ ]åíÁû‘V,êdPBô¦}uM³1ß°mG›Ò­Ÿ,õ;U½Èûò÷ÍR~¥*îªP€ 6–¥éèU´¦Ž2(3zÈ à¥±Ö¢¹ñµ­ëz÷™­”¡fŒœÇ”}‹JBÑO $O†Je9wµ1(9zÈri¯®ÉŽÙZ47YšÈÆËPºšU)kcÑ›S$œBÇMþQcè4øZ #Ñ«‚ÓHfùÑCåDY^wjÚ\ë-së‘­UªÎo½¥e¥N(MK•ÆBu/‰9RìÛÖw<î’ÐQchñèäÐúqW…&¤yËHF Jˆ²Ü\57¯¶¾·¥"N¯·´lV§ª)ÓD”=d¹ØÖÞæCK*2}²×|Û0fŒZ-ÛÍÆJ\ãEm J޲ž‹ÓíUõ®RFýT½ÀÏT¢„è!€r¢‡,—öåRquå\¸´T?Sõ·~Åä¡N%DY.5ÓÑV®\÷F0 è!€2®‡ŒZˆHš(fýl?þÆêýº§M»ê”1×(òV±˜$^mŒ4¥åÕüü>²TÜ]×¶zÝg{Ž#¶¥=¾ß{òÔ÷¦pxÑCåDÙÙ¿ØO~è>¸o¹îËÁÍïdHB”=d£Ò¹¾ñ?_lÝýïmmO¶÷d[DD\§7æáТ‡ ÊŒûÄÊ-wWª¢{Q¬*Þ?«¦Ow_8¼¨@Éq²â­]ïèot¥"U©ï§1ÑWU}:8­ï#½C¶L˜Ÿ0ùØAyßÏ <Ȳô@Éëa;ú…@–¬½º¦OU[çϵ– °±`´ÞQ­ÅÆÀËýÇDFãWt0n²|,&騠NH@«½ºV«Í…¦³ÓÓ4Í<ëŠHsA5Lu2ÛS•F¤¢53ÿÇàWÿWÉWÅ]ˆ!ÐCÈŠûõ×^]W3Fc¾éìô´ŠfY–iª'­Æyõê7LHÞs*½›ÿ[/ðù¿JX'#÷!€Z¿ÕÉs9¬öÕ5¥ŒÆ|ÃÙéjSºeYÆk†:¡>úÒÌ¿¸Ÿx¢yÈû&š‡¢!LâƒWr5.zNêxç¡Yß âx=dÛ?l{#€Wãqã÷ƒ{™^LýKŸAYXûêš8fcÞ´mG×uë'K™Ê<© ü§ê˜æ¡P€.?¥L{È:”ÍéÍû"òø/£ƒôॱ֢¹ñµ­ëz÷™­”¡fŒœi,xžø÷ƒò7lE?1Ò;ôhË„ù “”÷ý ƒ,ó£‡ ,I{uMŸª¶ÎŸk-þ`cÁh½£Z‹—û‰ŒÆ¯è`Üd9øXLÓ‘@ Y¬öêZ­f4šÎNOÓ4ó¬+"ÍÕ\0ÕÉZ¦¥F¤¢53ÿÇàWÿWÉWÅ]ˆ¡Q'¤G 믽º®fŒæÙ¦³ÓÓ*šeY¦©¤â6ΫWÿAˆà‘¥÷œJï›`ÍÌIˆS Wy#Þâ< 3'zÈYÈúh_]S3Óù†³ÓÕ4Ízf¯ê„úèËVþѹ§o¥*š‡¼À$£R\WYrœ ]åíÁû‘Vjc€¬daí«kâ˜ù†m;Ú”nýd©ß©úëEÞ—¿o–ò+UqW…\°±,ýKG¯¢5mè!dB ;ÀKc­Esãk[×õî3[)CÍ9)û5•„¢ŸHž •ÊrîAÔÉéÈ^j¯®ÉŽÙZ47YšÈÆËPºšU)kcÑ›S$œBÇMþQcè4øZ #Ñ«‚ÓHf9ÑCÈŠ@öBçÆš6×zËÜzdk•ªó[oiY©JÓR¥±PÝKbŽûö‡õ»$tÔZ<:9´~ÜU¡ iÞ2âPdE Û窹yµõ½-qz½¥e³:UM™Æ€zÈ™È^°­½Í‡–Tdúd¯ù¶a̵Z¶›”¸êd€ôdûž‹ÓíUõ®RFýT½ÀÏT¢lè!dE i_~ WWÎ…KKõ3õWëWLjc€¬d""5ÓÑV®\÷F0!è!dB Y¹rá£[Íqï…: =P0zÈYÈ€‚Qd5Qíë_^Ë4ÿ“[ÿ1¢ ä¼²í¶Ç½ÀÑ0Q¬*Ú¨÷„ÿ³Äyu2N-iLT ‘ ÿþÏêd䆮®ëº®¦ëþ@ûòƒèµÑ‡Nz#9Fz4dÎ¥Rîgàœ4»ŠûI½ß’òkc¤1@J“È<î®ãìt÷þzO~ùqZmJs*Jïëút0–¥”?‚Wx5™fàKxX£@m Õ2{ÇþäoŸ‹¸Ÿ;]™MDôç–|ú±£Ú‡ëÇûg²PñÉÿ>ø?S¦™¸ï„VK¹¾7'nKÁŽ·|wClÉŒ®Ÿ~Ù¢‡ É~Êò¦}S›’»ïÞýø¸áTöŸ€ôPWt»«}øÇá–õ"Ž'tÞM?Ñk}Á°\-aý ïò¸EúθfÂôƒ—§ÜjÉñYK@zX!s+¢=×Þüôâ½Ë÷þøxS;^sGÄýâsݶãzÂ3Ãý"Yß*W´ï*e—UßóÁ¾«É~„JóN‡¸$ÍjÑG‘ÃÐCÈjÙ糟ˆˆ¼.ÎüÇ߹عթÍÔDD>ýDDÒØ@9CO(À¥Ìmi¶TH+Xè„4Íë¢/zÈYMà‘¥O×õ›_Þ¼¸|qn~ÎuÝ”W¥ùc°ƒÊŸ<ôç1ý#Ëàš}_.yY_7y?É/~B9ñ,K@&“È<š¦)¥ÜÝ´,Žz‚}`C/Òwµ„‘¸ÃÓB¶Ú[h©äA>¤™€2@zxd¤N¨ÎWMÓô,w»…Œ„CÆÐàÀ É«%Œ{ù¾bú™É{KX„–€2@VȬŸíÐÈÞ®ÛÛ #B «I dw¾øqÜ[¸ ›‰ dÝjf™ži2 u2@z“ßÔ¼bþç+Ic€”d@Áø|% +P<îCÈd„=dë×:ÉÞÿÓÊè^/zÈé*­_ë\¼ôæÀ9d2LîCÈj$G–ÿ¼wñÒ›úqÝûŸˆ\\¾èõÇ/^zs` 8rè!d5ª ™—ÃÎýᜈ,-.--.Ýýæ®÷õÞý{"ò퟿õ擇û2a™õÔ^yw¥ó_/­¼»b=µÕl­ï…¡'$&ÿ˜æòàoó<ó‡G7"=zÈéöưusîægsyVð2PÎ$”)Ï9ÑCÈj„·½ˆ+€ ä%°¾¿òãÔ±}þ¸DŠaq‹ø¿ ­‰Î f~W( zÈYöÈRÍÖÎýáÜÍÏ:"òoø@¥78œ`•+Ñâ*aÑüÔw…ÐHò«PiCzÈ™Œ0©ÙšõÔöƒ× ,• „sɾ-e™ª\þ „0¤D ½#Y!(k€ D «²÷ž©Ûb W!‹&ªü­ýqÒ,Ë%Ò£6Èj„ìökÖ{Ï”v£Yx…,Øõ—“‚.x:<M³Bò /zÈ™Œ¶‡ì¶XòÙ‹³&°hŠk ‹ûU¨U?yý„Òl¡NHo2{È€1¢‡ Õ!í!Ž.jc€¬ŽdpÈÑCÈd$lú„¬_ë¼ÿ§•ÿÝ“y1øíŸ¿ M[¿Ö1f§G±`쨓ÒI [Z\ºwÿÞúµ50cvziqiƈ2@V£:²$i¡´¨²aPZô@Ùœþýéõ[ëC_N F‚:”JýTýöW·ÓÌ|ï_ߋȀ‚ÑCå”ç`äŸ ÜÙ¯{€£„@Ïë!÷.G  êd€ôd@ÁüÚ=d€”hê Æç+ ÌN×O÷ßÚÞJ¸Š Pe 0fi¯¶Ç½ €ò:Ö<Û÷Jí"4o¤$1”IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extadd.png0000644000175000017500000007332312032647161024156 0ustar ebourgebourg‰PNG  IHDRÛÐÿ=1¡sBITÛáOà IDATxœì½_ˆGžïûíK6D‚ªÁº@åà)c«=”8zpû 6~/gàX²a%ͳ£yëúáH½Öê]ðX^ð‘ö¹Œüp°õ0lî²íi@K÷€÷€ÍÔ€ U0‚*At‚îCüûeäŸÊú×UÕú}Ðx²³2###2#¾ñûý"réë¯vÁ0 Ã0 3;®ü·«€ÆKÍYç„a†a˜g”Íë›õÇþï÷fš†a†ažiþYg€a†aÆØHkçŽ„Úêo!!@@ ‘n¿F˜ÓU^$„H e@Ž!§Š@B&j‰æž$¡Ï2YÔ—d dĉ@@—!C @˜ †D€"N „$WzO D vE›ÐbaXBXŽ€ƒP.ˆqŠe ˆeˆP—o ~HË 7 R$¶"„L o3" aîYêâ L†!Uuø…nqGÚ»‰4Õ¡÷ @¢@ …IÕT¹ŽN™ÜY@n4Uˆ"†"NÔH验 ©š &@ˆ0I¥/HHèç ¹GRþHB$B ¶O§€ª½öabHB@mÛg ´ÅhkY s-ò†ØTOµÔï—ÿâ¤Þ)]¤ºÞMQë·Fݸ{am‰«7ȼYºØA_ïI Í1U±C„tAÀ½5ˈ!p€À2àñ²ú5w/"  9HB?«RªÅê H™ˆt³£KÔ¾Væ!‚P"N¿³Ä2QŒÕad’ÚÌ«jîÕ½°êFb ˆ$¤riQªìÝÚ,AUYúµUm&©÷D!TÉ缸€!€1ÒÛº¦d "t—Ð1dhj9Ó KHý“~ße]ðfUe¦©×EDél›OÓ—H Lú¦‘1M„€2!ïŽéR‚«P D»ͼ­ºNía"‚X!}mMú±HÂtúæºP >e °l/ïºÛ²ÁôA€ŒU#ªl%ÄðÞ—€4Èé–óMSìÛí ûsüÍC%~ÿнgúú™Ð¯Ÿ~¬i ë×uFÊÑ>:–T£!u+lMן™wQÒ—R¨ü@ d"Õ+ëÆB½~2†ÐD •Î$"€@êK¨»†:@?æY‚â$ «ôÉC£†„iˆU® —!ôžPRµzæ,×f©V/XQo#H©›" R¥*WÕ¦c“éÞH‰”@BÚÞèFÐìP×U­U¢¡R?¦”¤nô-‰)‰D-M‡aÛkš²U'‰~5™w,N¤SyêVõ*™bT5åjÜÔiâ+G2êžjÕßè_õ¹¡@,¡Ðw¤šš‘„b1’0Õšû€ B$±@(Ý~%:]Ÿ¥J_Ò+1™¡ŸÏÔ0UlßýT·FÂï*„®5H"GŒ¬!uÓ)Dا.NtÙÆ&1d¨»IèŒi9"­4ñ´ˆn„é µ´‚í~¬q5heìú §¼i­šim­å9•©k"E#‰e ¶a·Õ)!JÄj[ÐN" E[­©ë"°)Cib­Eè7QÉ)Swº‚ „}‰”^Õú´“€P·lúNC ¨â@„z†X½5´ˆõîØZv˜½}#d™V"]›"€ -4EJޤŽ&­™ºeªûôIN¤ Rm‹´­¥ªAÒ*¸ ¿Jóºº0阱Gl…‹p÷®tŒÞcôŠ–¥mt ˆxY_J·Q¦JKy AH5Ä2u$c§T\M-.9ŠdûÞþýó[7z´ß|5ú/5yî“Kwÿ‰°Ï©?)ˆ@È@Úý€2‘0ýŸ Ï·ê±´pÕ-õ³«ôŒ:¶ÇÕ"ÆfË 4u»“¸–Ë .Í Ã<"úÑ BGˆiÆÜ鎅<ý1êaVˆ“8t¿èZ˱XŽåjË ]kœ¶Ž$±…ƒä?;’´tj à^€T&+]ê†%Ó’A§?L4ÿÑzEµjhBÝOÄSYµÛj aSrÂÔ ^½¡ž}“ÍÈ[ $© Ýÿ¹ñ„/êL·t™=™»–æyVm“~!bzüdÔ[ŒD™œ]Dš‘ t„1‡¨ ÝêÁ´e‰éùLY¥šÿÔ‘B@Š@*ƒ¢Í2%R½#:ÏBš7K½M"]€Q¢JßЧ(1Ò_×£ŒÉ©Ú@• ›mcÍB¬Å½ ­5Q–íØ1EhE‰Ò£jÈkz#$®/ôªPßW d"UE[AîXšÖC¥¯ƒQ¨á¯íጠˆ$àFçpb™ÎŒ Æ0:f¥ÏX@ާB3e`N¼vRÝ…}s×=p  Z³®f•X)%ßcû¦X#±Ò")Õ›9X-˜Ø{‘ÊžáêDÈÀ=—€@ µ8„Ö:º+iÕ…ê)ôñÚ ر¨z¡ŸSªÆHfJ2ÔZÚ€œÞA=tBëKú<`ŠÇ´Àæ-NBaG}ºmŒE*‘* ± ˜’Pæ@÷üËxÙµW11„ È8µ8Ðí-­/=HSϳµkâìÆ?ZÿÑ¿ïüûPÇ_ø‡á*ê,JŽ"¹ÿÅ Ú¿¼íÝLJ•äˆíÕt«mß±@7¯Â¶ÚÜ*¨mCê–×!uÂv|,ÔÉötö×íŒ9ÔÍ = ”æéÔª\=ßäݶo—UBPk/1m -§aÓ# u¤~Æ”¶u%½Êhur˱pbr9Æ}Ëפí´u£êÄܵt­†ÓÈDˆ@ Ò ˜‚®‘˜ǥS-DôÐvʦ%d ¡宇°u¡{88Ûl¾mSu3”‰ðÇsé§• 73’V-£µlIèѹ~Æb»­l`ÚdmÏž9Ýi{°6bÑè=¡$c\‘®{§2 ¥ÇHloJj”Œi¬¡ÞU›ÐZAZm’x€’wp. Õúë·É{»=ÝckJ„š´„ôFœ „ˆÄa"c]ªäHrñ2í´ >@¸ çY°¨[#£g-×!MOiºmi¾¦grÚE¹oè(ˆ¦í_ÌÐ9$öØØ?ÔS¡¬ʵ±²iI„D€BY4­Z‚Ðktm¡Ø!–®¯dgOn8!©ÚU«ãÓ6‰Ô[j{° 'NLJæÍÒm±{©·#4c-÷ [uâÝ…ñC=¢~®Rb0^ý\eF2-PwŒÖ=0ezý÷«ztÝÁj$Kˆ@©Rj·¦Ø#Í!6i¦kù€äkYéH½6œÒ®ïVKD˜v,p•bí¾Ð÷eóé:ª8åÓ{Û£?ÎY–ErãkòÝ›¢VëãfM¿ßeIKóŒyÍ༉F¨NË“jÔtÏ ×îÇû7¬œ¼bw™Q©êPvZngӵϺng]D&RfNí„ U«·Wü¤ú ƹãuDPO†Ó§±%¶˜C ÆéÖȈe`َòýœ½ßXÆ/ài|{ßÎi­?ˆ@Ê@HSà¶í6ÛÆàiÆ£Î^¢{Ö”ÇJÕ¬§ÄUûh[§u t¤Ð:CÛÀ´CA÷sé§L¯Ê_"TŽXowl<¯H¤#qã9bˆÖ}thEI‚8@¨{taGÒö &wáþL[ãbÝÞPVzíÍQögÛK!DJ»èmëQ œu?ë?šÖV«4gvÒW—V7˜¾ßö»Ê’Ñš6ÝÙxÌ;KîKŠÄÕ‚„céçA¦TiÊV¤GÞêºÆˆ…PÕà2p`cJܸPymœí9*Š%3æ0ö!õ´è‘I ±4NY‘jÍêò«ª;‘hW‹Þ“ÄYÏ]ÚRBlœ‰yCØáµ{³È3¦/è!ÛOÞwQךA¨gjaFS¤.¤ñã£Kˆ8‘1"Ôo¬ûîÍ‚Rð!ñÇ™,˜ÛÕϧ1š\ÉD " -Œ-XóÖƒ´9Ö«îŽòª)Û¶iÁ@kS}¤„¤¶1[GºL°Õº´­ÕTe-S¬uDyåóÚººµ ÍõqiÇ $€e.ËøP5ue&)veS„¶ˆXÛ¼yˆpIéNÝþkOEN‡</ž\+úi‹™åε¢V{µuúÇë?‚ÀÖ?mNÆ:,¾ù ÷ͽo>ȱF¦Æôº° È´&l´£J?¥cô»—›~gïfgïfoïfoï¦4Z{‰J­³w£·wäy¤ÞÓ?>¼Ñyx& ÄÄ"N4¬iuCºDÇ4qœJ;±@Œe=PiâãL¡¨8ÙP©uõªîʃ”ªÒÖ]Žó›ÀĘžOߣ.Û€ÖWªœÕ°Þki÷PíèÆ©¾jDÞñyégƲäÍØÎŒ!ÒÕ ÑgÆvMjK¦óï®!Œæóž7S>6zÀZÔ˜)ÛÒÑ?ˆß/3v´£.©‘ÔÓî”eª$i(«+U×y¨tlÑÛ›óè™§‹¾ƒ$7Ñ– UÎ!&ÖŠX@Ž_!€Äp1­Ô(âŠ>cæy°ÏsÁ(H…RÚvuLö]ñGAÆO!ÊèL²Š$ÌH’˜”ªµqº«qÉ¿ÿv'Ö6l+Kû:¥=ÏÝ£ í×bÝyˆ¬"7÷¥ì%±Õ%jôe !°u(›h̸+g¿4Í›îÝcÑñ´G0-m©\‘Ø–Ä0i¦[ÒŽ¹«¤Ê9‰é£@Z6÷.›<‡ZŽÕö_žú€Š~M¿¿Thª–\.vÐê õü‡Ë™6ŠŒUkf仌m]èÎÖ‘v&¤Úçp˜/ž\óÔLvO–ÂÙ¿µ0BXeýGë?:Ý:}ëŸo½ºñêéÖéÓ­Óéc…ðãØM{çÛÀ•ü ãi=°3öö|ÝòêŽ Âx@úWý>¯4¯®4¯z (…¡TNgï¦ûÁôX±yÒU¨ž@ùY8Ðq·H=ýƾª³b€6°R=Ù˱-½ÿ 0à±ÑVŒŒÿrž8×cIÓcÑÉŒWÒÑ dBG*Mr§V¯¸b"ãuíÛ6û`\ÈNI£;É“cÛ) b…R× I Çé’×}ž«š'ÍŽ9ì{x6g¢5ó,ê2]>æö•:Œ%Œi7 m–óÜÅÒYJà©RÒvë~‹Ö‘«w¤Þ&Û÷H;ñ…#K݇™»“¦ÒÖJ{¢1'(§±uK¢ yþa­ €±JdLj„ˆ/m}ŒPGù‘Œ¦CI¬·N£¬©q‹¾:QÕNŸ‰”–%}$-™¬Ò%:ÒFu@õ+¦gi¬új[:îDÏ€‹I !ìˆ"ÑÔ#£«Œ¶ÈÎS£7áûG\Þ‘>’¶`úOS³æ•h§~µVF„Ñ7ˆtÇ i=´Br>\‘V¦F¤„€›åg[£)­)PS5¥»º2é ó^¸ûÕϰ¾ òî¨`RþFFh5 ØØƒÌ¸‚Ô¦ b¡]9ôIÐ1ÑÞXÑU«yæc(¯~þµ"< £ÜÀæ‰jA'aڣ쾱¶fÕ˜¥É×_ífÿU9 ÄÄ¢6žXœå¸óÿ܉NDŸ|úI­Vpùo/ßýøîêê*=Ðv«j’Nøý+ÊR6®ˆ½ôÌ•ÆõHÅûWH þÊß  gv®œ¼ªfˆôÈaõ“WiSáÓtönÖ›WSr@ •XÑ©ºjOê<¸  ~ê’ô1­kHðLJ7|¯uínÔ[×ìÓÆóšÄʺÁµØÀr(—ƒXÄr9Ä2`û¶"æÕ °Ï"ÞÙ4BB"ŸhGªORM†jÇ@E'¸(W 7sÏ]%°M¤i´mÖ5DkJãK€©TÓ•?еhô*"Ñó„ÃDÄ ¤fÍ(b3A1¨íW{[õ\ÔàÛó…Ç ]IÚ&UÝ…$ZM“„bëjê×Aú0i­ýÄŽb½6*ŠYj¹J'¤ggq›.gý§þHa£YÇ]õ &P÷ÍæAª‡™K¥•1Âí@ÊBû³$¬ŸÈݲ©Sso±ö…Ù)lºœS=‘V!v.›)¦+ÈÅc¹kk}€u—H5ÝWš¸7ùÂEM¦|¢¨Õv14:ŒÆÎ!¢GÒK€-Ð§Š–hl]’ênX¥}jni{ïÖ§¦çÙ¨£œ{I•¼Qx  {~D¨72ó«~CiÕdÐÏ›4o°)çTãDÄ‹++äÄè©—*ç’äB€™qfòà~5³xàü•V…äøn$ñÚ˜Iæ¡@,Õ´|½˜ÒmN(lË*¿Ì}Ë&Öõ@Âãe­à­WÛºD˜‰ŒUoÀ¯Dœnß×/¸>bv|ýÕ.µ‹TÑ1VH‹ND¶?ÓA(·þù–bý•”Ä{bRÏ–µ6®¬4®èí@@¬4®¬¸7¡äÈJãÊJãêÊÉ«Ò(Á•“WT(Iï«›0eåä•zó*€ÎW7S£ðÄܨ“‰’#õæ5›Y%5ê§®ÕO]ƒ1¥è³ZW¿GvÖO]­Ÿº  óà†½ýñÁ ÐÐ|}J_|‹öÚˡıý.“fA;>Cáô»J_Ù“3‚„Ü>é±R# =“X§¬Wéž5-Gà– wª»IÛF§æ4Ñu5ô‚pý™ÉIü öxaÇsºDRKk–Bˆ8qÆ/c-ÏzŒn~‰ÅݯyËôÜW „:Ò-eÉ…åªF´^t[bo"¤ýœÕÐÖJ ›¦éáÜ(Ш“Œ]„ÖµéÀ‘¶ý‹‚ëwAƒ‘=ë¦7ÎêP×¥å ˜vàu{z,/ b)!cqP¹/ÿevn?éûí’$¤¦„+gssämÒu¤4¹ó˜œJØ5HàêZˆ¥D£bƒ2>R’&RÒ”Z1©úÐ+2u_h»‚±aH{a⧃ò1Ϩ=$vÒhRVqÚs}xyyëÕœd³^ˆi“ý‡ÙÕ¶¦@©I’>¼«ôÓv¾Ôû(`Ì*é7Åf2 ¤ß«œ[×O­Sb±y÷“˜ªR§Sɳ¬ïgÙÝ—µ¦=/î4âwVµ¦õ L}ÅVÐÛssüÝþ->V…T :¼f«”rãì†Ú¾ü·—{ýÞÖÜ ë?yãÇÝnwÀ¹Ôw˜²‚ÊÞþêŸ>’ÊíCµ ûôZz_}`­µV©u½@:l«Bê§®zÈ:otÞp'Là¤:æ&Ñ+ú˜zëZ½u ¶4Ï ±ƒEb NkàÀ2HðâH é¾FOä`,ºj&^úIuT1hËÝiŽIŸ‘Ö%dDâgY¯l¡Æ|né*“T‘÷„ÜEÊyÇt¬‰Sµ`}pÔÂéE–XõÜÑRÊ+¯Tù»zÔíl*‡ÎL½6Þ¯NOÓS³~zu¡Œ&¥­ ©i¿»V¥ô¾ˆîQÇkD®˜WÃÖšŠq"C5§Ã$™^ÍI°Ë£Å@| ^ÜBÚYÓ«ky/¸@ê‰r½‚ò㤢ÐR¥â4–¹G S_2ëÍX%íÌOw-u¬óÜ)Ñ)ÔdœŒW.U΀KYÕˆ^ÆØê =Vjá]4´FŒ×Lµ®Þ ¤ÇÐZ—Ç®·ÜÚ\êx2F§=bz¶ )IÒb$©uÂ'ÓäG|à·T™–Ä( Ø2Ìó?fj„ä5í{%?Ñ÷T«OºMYUj#ÀÀ¬E$ÉÚ3©WÉæ¨»»À®€©YµZ£k‘Üzµ€·ÐUþ¨ÿ‘®ƒœõHÄêMÔ“nìj­€HB˜=º”|žt1d¡ñ …d=³2ž1¦žð/K,K(ß½ˆ—•Â0QVê¦õ µ@ ÑåoâK„.ý§óÇÞ|Ï›IhìˆrߌGrùåæ'¿Û»öé'*¸uOö7[KÍßF+ÿùvçÍú÷Ðn#l½²®¦zPI+PèxѶîÝN]\d¶iÿ!ÍÿÑdô'¥ö&) ìÚô”m6£uèBòÖÓ'¤Q!+:Xœ»ØèÓÐ÷«VÕúeȽ[ÄÄr(ÄX†\qâÀ6÷B'‰kËôd%8?´³r’x3r k1ÑQˆ^k•V=Kb—Ò½…iAÈ:lf¤›¤<&âÁÝ„àªÒW+z…(Y$µZ+¹_Ý“™¥—­:±ÝVž -kïKêlë.=m¡ÑÑ<ðŸÞ”ýCØçPõm´öµ_2‰Éz$J%„ƒÖ#ŒÏ…Dé¸ý*5¤M* ¼¸2õë º‡Ö”õ}bHé¹8!dÈ"¤«øä }èȾxÙót ºõHdjE;2k&¥§H³‹}¤Éz$V‹}©ëÅ|qÂ’zgÉHÀ®—åÂÔ2ó±B¡41^:Ʊ™”¡O¡c §xô¯®(ad½°O]IïK·lºLR‘aÂõR6|„<2*+‰„ZÚßDiÖ#¡ëêº: ÍÌÿØë ÓÖPµú¢oa¥wí=4’XŒH; mL˜R'Ò¼ˆô†]EÉ \¥;Þ^ÚÄÆÙ·5 ÝrØ&.ÄÕ¾ª÷Àymô'ATfzƲ¬EÔ§‚ n½‰ÚÖwšõÉðIU’R{E©BŒc¨XcÜúßÜ`Êš+¦1× eµ1%å×ÊÏríù•ŸüÕi¾”oFòÞ«-|½¹óqôõ›ˆv~®ö›œ÷Ü„W¬4®P—båäÕÞW7É‘Wró¦ëÐØæUû4¨Xºßdɬ“¤<ß;uíotö¬ËõSW¿wêêÞT1"*ĤóðÆÓ!&4Kö5ÎÓ§ºUr¦ÓÔÓ™]Ä&‰T¼•ÏÉ@źš6K¿]äTÒ™ ³Ö²Z§YšÂHË ¨ÊÇ,¼M{Ö™;5«]™ Uò*ê©•4Éú`Òd™ÖÊŽ¶Óë‘èÒqÅšˆÐ­o¨[L³Ê‚þD B÷e• Ì<" “ÔëFÞ®üc0ëÄÆr`×¢e¡×«‘ÐÚO´dzƒªº6eHÚñÔ* ¶&•nÏÍ©5½Þ¼kÊôñvJ0H¿hÓ¡ãW²_×Zœ9ž¼Œ—%òÖ;> ë+¤Ö#ɨ_mÕˆÀ=]t…’T‡Læ+¥¾8¡.N_)EWv´(k–‰ytuç­Gb¿kcÆÓf†0ìÚôÍÊ´Ÿ¦~mOœZa ¤³O¯GÖd*1© 3òNÍã5ë‘ØGS:¨Öî.åR±!Ïk#m0µiCD"\ëáM¶­ ‰¤¦ª×m­¦4¨6^%äMQu“Õ{)öÝL=é·©µ(1æmµúTju`R§ôÏ`á2â@IÀ»Ign>èüAeq4%o„‹[™Ú],]ï¡¢ÃÅ#«<ªèž|ERÿÛŸï|þ`ÿÒ‹§ÿùë ìïá'µÚ‹kýó[¸³Š"üäÎÝ«áwB¢¬#΂ê鉰qEU-Ìø8l\¥ã-5A`¥qU?…Xi\Qão$båäÓ —JÐ,’­ê Þ¼»>) mXk —[PW_i^FcÖ›×tü1oÆjŠ5…²Þºªš3¤ßk]TÔ½¸²Û»(ש%äá–ÿ‹¡@,—c‰PÛüb», °\‹¦ßè’L¿W¡í"°³ãt_b–D“¦¾Ì§ÏËmèèNá^Nd,·&'Ò(tR^Þ¼õH¼—¶w6j’ï?³q ÂÄõˆ.^O´¥öë*¤¿L§oòoG]ö`¾Ó¡ö$¤7"`*²$5âÆaéý›\£½9ãÝ™™™#vŸi7‰ž£«Ðêú•¤Póð¡çî#X IDATGu2ìý©•Ìà[÷¾Ú¢0XÛ•ùº®#ýu1Ų ”[`ÙM}´˜.Ý΃H¤ù6‚$+¼¹§Ë”³d ¥ù‚’¹—L7dÞ&ª­3JÎÙKü¸f³žî+¶ßÕãfewIûk膱VÞüAûM£ûUÛH½®š¾º²Q©ëJXËUŠº‡S “¨7EèàâµQKñˆéfê;¢¨yÓmH™ñÚ@ߥȾ¹ö~&>†ÚKüôÍ=š÷Ô~ÕOͲL½° o·[7¤Ž@Üå±=ö5è‹ÌšxDqR¯‹4 ‘¤nÄÝ‘ùÒž›Ðt ãe.[½˜þT‚0ô—DÉ7nÎ+íÄo$äO¿ CYD¦a>)!_‘`ëïÖoÿ£ÿ¼³‹õ[h¬õÛ 4ðr·ÿùÓŸÔÒÇë·Ë…”ÚqƒMP’ý Ü4-I÷gGuÖª!É3a¬µ4vDµË2m±:׿°³%íåÈ7à ’ (¯Dj¦8ܶ±(Æ@ê™SˆîÉ —CĪ“Ë¡ñéd­#ök)¡{Ä‘õ}˜7œ®ú¥{ µ.5éYÝn´íÍ´ÿO®¨zAõEš7ߨ˜÷ÝŒbj†Y‡Î4Ö]ù>…ßP2LŒ-ùXç'=ƒßÖ—¶” õ]?:OØôÉþtÂEì UYúW³Ê¸Z;œŽƒéHËDŸÀ•¼û›[{;ŠS±u$# ÕGª…QEv…(ó}2ýÅìøì ß ä; Þ÷ɼãÓ^N»†ž¾oÀû®ñÔ˜OÚkc¿4¤—M³uçVÑ6~ZžDyëB£<`¾œç.iZ[5PQwçúžtl£m¨.±Ö&RÍ¡HÔ‚âný+heB­1„jf¾Tµ¨yC¡¿l/â¬q¶yPmƒHë*W¿P_r¡sõé[ëVi‚EÐv 4êåT£í2 23žâM0#_õ¦Þ ºr®û’‰TKµ°¶NU‰ÿÑd\¯ Gæ±Óu5U{b¾´gãÏH šºNÍÄT6K#ÝÀ/å©É®¶¬f+“^yÈj©”oV€ÂÌ,‹‘òÚèöê@ê@o}wZs¤mZZG’„É·¢È‘¹£š¢…Û‹öøqβä+ÿºïýaoÿn¯Óݺü_o &€ª–s'ço$:|•´qîõKZÌê0½BzÅ*×.ÐWN¯@ ¯¤ ݶնŸ¥&ßð£ÖB˜üTœW ãd]^xz_ȵÏ;Œ“˜¬G¢[ŸÐ…î[C½nå2pq¹¬ŸN]nÚ' ÷-Y.ÎÀ¤#ÉÇÈ !¶P¥èW0ôjâ¦w‹šÑœ½Rõ”öÙërV¶YU;B¯a+Î×mVŠ@ïY¸±»Ð¶G ¯G’ò¶ºÚLd¤-%™SŒ'HÏõ·õ›­f×#1:Û­p¶÷p«hkŠlF@†en¼EÖ#±½©¬š®H@ØyUV‘(W×+¨~Wh[̇Úõ¯0ÚERåä*+5ëǬêöˇ{Œ]$o=mS4Wë‘èŽIWÇ€õHÜ£d{&˜™ê’x7„±¨unì¦Þê&7öûMHšxäìL·Pè¸]VHëwcé%üØ/Y©Ö:Ÿîë`î}§wj.jkŠ|É[Ž”¼>œÆ?zíYBÞþjÇë¶:ȃ)ôÉr­“àw® ÷Ô“´­Dº¥ñË?çÂdõÞČӿ¦Ö#!u—.OpZÓ¨Oâ9%Ar¶lO6 m_C,‹Ðhîý™›.¾UÇ‹°ócq$_¶£/Ú¾¶5³-¿Þý£õ•çËcØãÇ9‹²ôõW»—šêë8kçîz¡³ê( }4AM2 A[*ùádxž–ú¼VêyÕSÛj˜®&žÙ£m žÞc|Pqaúc Þ—´—Î~ú2ÐQ®p¾ÀZ•ÐhvÝ»%žjˆye8`9B¹ ÆA(–a>âAú0˜ùý@lV‡´%"Ò/¯0ªÀ•OW7èÂMÃÑ­³..§¯Só¨sÞ±%®Wm2Õ¡÷ä¬;¸uMõ‘ëk3¹–ùS©]æjô¦¬š®# I'0ßj65èIŒZŽô…^.E¸%rÄ–¿é™`–£€ÉŸ³™dC-² ¤“&¶],s`ÂJ‚Ôoîß-§k„½'Ý’kQ€|œNÎù>™1†«ªÑ9TO”-8ŒFÑÇ TÅ®‚(¡ÛY¸·F… ˜¢zm«EçÁÝ‹é*RŸ•V“È$s7ó™:Š„ux‘‡Ù ‘=¡šÎLwÙj.•LRÛÖ_#콺VÝH,¡,ayE -˜¤õ ™*Pßj¦¯­j3I½›©°Â}ï:¯s4ºt1'ß•ÌòƒÖ·‚@Ä¡©åLƒlD°{¤íZøÒ,üï=šÂ4õ^$uZZ¹žÅ¦ïÖ;VÕtY}k^"ïŽéR‚«P tVÌt…xпúÝŒeÒ×Ö¤ï>PE‹^ׄñÚ(—e ;ØÝ#mÙ`ú @š }U¶Ò3ê]Íú©:šSšbÀ§÷¶w>ßɱ‘Ø)»Ã èÿÙw,µÚ±y¤u±>\×)Gjó0‰“FG²¥Mן™w1³†’ù’“Lô‚ôf0§ƒc=t3߆ÕÑZŸÒI:fÉ<ýX‘wŒq†ˆUúä¡Ñ C¨  —!ôúI½‡ŒÒÔŒÓЈ:ÆM¿òÞªeAÚ‚Š#!êA͸S¾ý ØÔS6­´ F)B=^t¡!¦óÓs¤Ts´4†ï§#£jm ’®{ȼc:ÚÎØ¢ÝxBðˆeÅøËu *B‰³xI€zm¼6ÔÖBö+k0k›VÆÞ«}:aJжÝêûm¡tû•èt}–*ý¬wFšxU³_SÅî‹ÙMµ¡~WaâÒkÄe=¡ô;±ä+Óî{lf¥„´w\eLËi¥IA LLŒ*%%­¼±xª%1ßÝ”®Ÿpʛ֪ٙÖÖZޤÃ}èºXúkj&Â@$ Ñ&üËyåí$ôƒS-¤1ÞèѼ´ë×k¨´–-X·¾DJ¯Àj}ÚÉÚ âÞÜdþšŽò¡Ÿ¥LÛ•¯GÏ"´µì0{!úFHãµÑ­D>º6ÿQ ÍÔ·ÒG“ÖLÇì+¯p½l;FÛi[KUƒ¤Up7@~%ç¦.L:fì[á"ܽ»h!#LÉgöÒëº>±6ZK•ó‚¶ â@­SbëHÆN©¸šZ\RŠd÷Þ…YåƒafÎ(êJEñŸ¢à˜i{ÑŠ{ª\ÔïûÓ;³·GFÿY’«’³<ú¥;K6²çæ&5ÔLŠ”"ñVA`†a†™töåàUä†a†a¦ +†a†af+†a†af+†a†af+†a†af+†a†afOá*òеfꣻ{»jÝùÚ^âÙÔr¯µÖ\«~Ñ—˜,ôr/dodü’ ïråW?ä¼1 Ã0Ï,‰‚vH$èuŸ#_b­¹6”  O6•_h(íÂ0 Ã0GžJŠ„’;hžlÿš½„'DÆWžzÀØæï•ˆÊgQúöF²™±‰äf^‘9>%iNÐ6Æ0 Ã0Y&Gb»¨lŸ:Nj%—i{^&r#%ÉÝHIIz¹šl™¼zQ6†afRT²‘ØîgR h\ž+J&{‰\¦$wÆL6÷t¥FKyLÿÃ0 ÃL–¡ãHŠY=B'wô†õV®ìC) Í9J¥Ä0 Ã,CÇ‘1ÿ£gÛ1ë¼Lω3©›:…Ã0 Ã,^Duù“Jj"éÎU<3ÌÀàÜ1±å<½yCEq$Ó¸Ã0 ÃL@‘Ðù®¾T'z§ úÇô¿x‰OÖ^R^Þ,•Ü©^’c–ùÈiò\†afJ,}ýÕnã¥æþï÷ÈdÖÙ9Š.ühÜÃ0 3Wˆ>½·½óù¯"Ï0 Ã0Ììny,Ú(¹È¿3ñ»(q$Í[‰V&óv Ã0Ìc€"Yô~èÐò¿@µ@Ye†ažØkÃ0 Ã0ÌìaEÂ0 Ã0ÌìIymv²=Ÿa†a˜CâtË…6¦ÉÚ)^ÿŠa†a˜À^†a†afÏľkÃ0 Ã0 CÙù|§è§Ÿÿ÷ŸïýnîaEÂ0 Ã0Ì´Xe½â‘ìµa†afö°"a†afö°"a†afö°"a†afö°"a†afö°"a†afö°"a†aföðz$ Ã0 ÃL…Ÿÿ÷ŸW?˜ Ã0 Ã0SÁ[•µöÚ0 Ã0 3{X‘0 Ã0 3{R^›[ÞšU>˜åò¥Ë¹ûùYb†aʹýÑíýß;·Ç‘0#rùÒåæËÍ¡|„ Ã0 £ÈhsÉínOãÚío»¢V§‘8sÈ\|ûbóåæÀÊ,( Ã0̳̭oe;‘CŠ#a9rÄð¤FuÂ0 Ã0ŠÜñêa(%G˜£„&²÷»=a†a*’ÛeL]‘´¿ínþý5µ}ñ͋߼ÈåH¢ÂJf †afQ©¤H–C¥®äÈíÑ)ïüòÆí¹½ù÷×X”IØRÂ0 ÃŒÌà¹6KKKÞºMÿ|úôiÅÔ£Vßùå‹o^¤;ßùåò€O÷T¼\6c4õÓP™gªc'Ýp(+Ã0 3‰’#­Skk§švîµNí+JZÍõõ³ëö¾º ñ­T6Ö"SEYGXŽ0 Ã0#SÉk³vª¹Ö\Zk.)]2J…4Ožî}'GK!ë6¢{èGHmd·cá8†af†‹lm¾<ôÚßvWŽ ûçÊq1B‰²p(¬ø {”ýc(ÿMMëía†…ãH†a˜‘©¤Hvîíî=Íë±óÙNóäiûgóäéÏvFHdza(é þ,ɘ=‹cÏeñ1)¬u„7 Ã0Ìh ˆ#QwëÔîîý݇pñíµêÒ¤ÈÒþ¶;ìjiÙ‹V 7Éý‰žÂ¢d"p Ã0 3&ƒçÚxŽŒ¡äH‘9dç³õ³ë£-áªôõÔŒµÊrd‚ðgn†a˜q¨äµ±ýý°rD>Šä£hû£6€íÚêŸÚ¹óÙNõ€êg¡BÄóÈTTö\ž}3Y8Ž„a†™©|ûWI ù(ЫvC³¿Š³e‰xr¡ÈkSýäI«lH,Ë”àõH†a˜1™Ö*òÊ_cUÈæ¥÷ÍPffžaëÃ0 3&S±‘ÀHÊiïwÊÍ$Ì1ZÉ­w\¾´VòkæBö˜Hîå×òÒÏ=¬(Ù*iΊ¢{±¿¢ èrË|äj-:=wnÊ3À0Ì|RÕF¢Öê˜à…cpäQãp,%·>Ü-ÑÕ™Tffué‰Sž±i÷ñ“-•Ϲ-j†ar™–dãíhû£víX óä~î1þî'Sº:sÈL5ޤŠÍÃö—J¯d;ÎìÚ;lJ}mnæËM‹ÂÀ2/g`B†™+¦¢H¢VÛßv7ÞŽT4Iwo?{Ì;¿¼ ߸a‚Ã\düîG¥PýxÏ<@{Á܆½t‘ïÃû‰^¥ÈRÝ¥B³DwÎÄß1l0 s$™–DI ?{À¼1¥«0óíG2Zç§4Иg‰AÆHàý4ò…h²¹¨?Ëe£`à Ã,ÓR$#ÓýSÿë¯ÚÝï:¹¿Šc¢q2j¼<8l–9|fµr+í/‹ú¡lŸW=6+D¼ý£A‹.µ¾Øœ{Ž1:E.ª"ÌP—­ï­F&›†aæŠùR$;¿yÐý®Wr€|"÷ìï=Ø_=¾²þZëÐ2Æ”³p둌ô`#jÇé󆚕CÁy`f²LW‘,--]xë6ýs (QR£åxd?ˆ”ËïÓ6ã|‡¯(ýljö¢Ïø ô‡c)ÉÙ‚0òEÇ V(ò¼x±#^pk•8’êÉzþš 9fb«˜‡<0 3)¦¨H”iZ[;Õ°ûp¯uj·º>ÇÂèø*ùDï©?§Z÷>oï|¹ ñÒ‹çRÚE%~˜_Ñó>õ÷lŠ’1ãHʃ§›) A8?eX÷‡=Nèsª˜çòdËOá^J»Ê0 C™Öwm,k§škÍ¥µæ’Ò%açËÆK/6^zqÿ÷_oß{Påõ±_» bذßöÎîÉMÖûJM¼è^Êô¿?_‚qÓXIt"‚‘#Ê4²}ïÁþï¿þùÿu!{ij·@Úv’ÝCÏ*ÙCOÌ^ÈËÀ°—È=~n¹øöEõœÐÀG¢Ê¢L½YfÛÅ.\¿pf˜gŠ[ÞRˆ’ŸÞÛÞù|gê6’݇{»{£|G ÷ÿÐÞÿC»ý]ÛûÉzj6ε/½80©ìÕ=UAJäš+Êï"›ÎÀŒUO|!à/3 Ã0#3Å8Õµ·Níî>ÜÛ}U $ÏF’‹G2^–²ö•¡ÒYP·Ë˜,Üz$̰,Ödl a˜Edºsm¬?ÂþYý\ùÄŸú `çËŸü—O gyxî’¬¶ÈµšŒÙê”,®™dÖ#9ò̼yª³@YeÆ2u¯íe‡ínK¼6„úhTíšsoOy #\bàUæµɬsÁ0 Ã,*SW$ãÐøAÔøAד~w¾ÜYÿO9 ¹fñzzoÛëòŸ¼=HË©ÜsKRötç‚Âq$ Ã0ÌÈÌ"éþ©¯6r½6Þ1Ìœ`­#ì¸a†aFc¾I÷OýÏî«mêµQÿ¬dç³ûGL”,´ila†aÆæ0Iug„’#j1¯ú§vþúÿýÄÉÌGÂ0 ÃŒÃ|}ûwýìéÏîן«è<îìÿ!ÓªB\Õ¯ëgOÏ$‡L <ã†a†™ùR$«'jJjX]’ËúÙÓüíß¹báÖ#aÃ0Ìô­/˜/Eóíß7þvcÖa†`­#“úZÃ0 CÙûÝý¨Huæ+²•Y\8Ž„a†ÁFè¹³‘L„½ÿØïõú/~?ÐyÜËݰzbu–¹Î§þF³”¾ ©BI}•W}Q ?MÃú€aÆãHE¶~úwkýäæîç½ÏÛ ÇGõ¨z⪙ìrï¶[²Éª=öZôŠv»è,{"J…MÖKÊ;7ûkQš_„Êõeyµçò¥5û“ݶŸž/9kœÌL£ê)Ù EæI@ºü½í¢ÓQP³ Ã0sÈѱ‘xYûÄno×èv£½qí¥ Q=jþâÔbO;:b¶{JÐ%gÑÞ«JÇ“MŠž›ýµ„1ãH<3É­w/_ZSÿ¼_ÕOÞ¶:ÀŠìYóLn9Wyªœž[³ Ã0óɱ‘X9Wû_ `¿µ‹ö.Zþ~cÊÚñ­Ò=Þ µ¨¿(JrV=а7RôÓ°žG2Â’8Ôìa÷ @RPkGËǘ֑,«¶Öª\n|ÿ«†a…#¢H†ò¿¸ðo×v1Ö‹bÊÏòº±Ñz‹Šrg´¤,EÝm ã¬G’5“ O¬ ›Î4¹êíéÞÁcjŽÜ ¥qÌ0 3ŸEb [ÿm§ùJ´÷y»ñäA´ß^yc£ww{ëÔù„Ú¿} zöo®;ßûidÚNŠfpxžš*9É=¦äÄÜÌ\xëÝ3f‰§<Æ þ˜¸Q$˰B-{ºWÚc><¹§— †a˜ùäèÄ‘øœqŸâ;ßl{Ûw~¶Ÿ;×&;?Ó þêdñ·{¨¥hOö¬r«Fö˜Ü½|–gÆ2oë‘Ø‰Ä™Q\$FÇw©d/4pO•Ó'›+†a˜ÃáH)ª0äWwжíöç7‘ñõ‰w¿ßÿs_Ê nüâvíÿ\‘²`ãµ·Ûð˜X=îÇ”Lc½p]U=ñŠ9YJio†,b Ã0 3WÌ©×Fɑ֩µË—.\¾t¡ujíöG»å_åhkWdE¯×—O¤’#1$€~¯wõÝ+ê×Qk3ô·GCÉÅÑþªÇ‘0 Ã0ã0§ŠD±vª¹Ö\Zk.­ÜÕÉ'Òn‡Ç„L$ @$@‚›ÿãׯý–Ñ{Ü/L(MöÛfÙO²ÙÙss?_RòQ7š ÷ßÜÌ”dÕ;÷à8†afdæZ‘Xš/>FÊx­õ=µ?‘8 Aœ¥rà~õoNW¹nÖ‘kó°;«tÿ¹)Ð=ÞÇÛìžrsKIƪÜé˜Xë;n†a˜Ñ˜kE²ûpowïiõ>u÷ÁÕ†L¤B@@ï‰ñÔàö?LrºÍT{ý¡¢O²ŸªŸN¦|Ø:Â0 ÌɜF¶ª~ëÔîîý݇pñíµòþµ~b¥ó§žÚîw{+µZÿ/±%±4>šò/½Îã~xLL÷fÁlã['ø]›[ú‹ý_¾´6l ¹§Ð”‡M3›±R¨r •¬ºÖ4.Á0 3ŸÌ©"%ôÏ'¸04O5~}÷Sï÷ðX zRöûñê‰úÄ2Zìñ&šeV³o&5ãfÌ.9+hè~›x‘j)OvªaLÁÄ0 ³Ð̯"%UúWqLôz²¾ˆPJ¬¿rºý§v¿ß“1Ä_‰új½Ù\ë÷z?ÚX»ýþ¿¾x2ÊMÄÓ@^¨Ò:Éæª$ŸSÈ͉÷kù‰“‡³In‡íí´z‚ÃÓÙŸè~{°·a“õÄMîÁ¹¿f¯R”ól"å9¬T‚ Ã0sÌ\Ç‘ Eí9Q~¥Óë¿Ø¬‹caýùèô™õ×~|þo~¼qöU%GÚßv~ý῾øR=» Hx©ÂÛ™=,{nnƦð43Çþš{ïÄ¢¬¦.9„8ÛõÒ.9»3Ws ›¬ýi`²¹‚£/«Ur^1‡U®Î0 3Ï̵dX/­öÿÜûäý»|‹c!ý©ßéµ¿ë ‘«/Ô[¯ð²“gä8’݇~oºvj”¨‘‰Û †J°º(¡‰©$¼fK’aæð¶ ·)E õJcï?Dû«ví¹øÑÆÚýÿïëÎwÎã¾Ä‹/G­W“½âlãI犑ãHª?¾ÙØRÏX2ì¥gȰö•ŒÜ 0 ÃLŠq†Fó®HFèï›?Œ¢ã+ûßv:íÎíüd÷?öWj¢ñƒú‹ÍF®³†ŸCû®MVsxNœE%‹(¡†a¦Ê¼+’Ѩ­ÖZ«5ü§ ›C˜"ù»6ٸΖuÀôæÖæ^Ã;†aªst"[™Ù2íïÚÐY»öÏò#§0B®è‰¹;Ë3ãí˜m†a˜£ÇÒ×_í6^jîÿ~ÀÖû·Üþèö ³žEÚßvü¦Ýûs,Vdôrýt«!Ì2k{¿›mÖ¦HÑúýß¾¨ž/”ÕZJÔÔ›*V“݇»‹Ae+†a˜ŠMú\)Ë IDAT­o©NDÉOïmï|¾s4½6G>‘Ýv¯ó(–è‹n»·²Ònþ½BšC‹#™7ra†aF€É`ºßu;Šwîµ·öüýÏX‘89Žd®`Â0 3X‘ àÎ{ÛýzOdÔbìÑd¿7ëœÍü® Ã0 ó ‘­¸ð‹ ù!¨ jÇf›¯y„¿Ì0 ÃŒ ÛH°õÞÚIô÷#£E ö\5Sk®5—v÷žz{ì¶÷Söø’ƒéO¹IM–ìTá™#a†a&+’26¯o­>W_?»Þoõ¶ÿ¥£v¶ÎÖ£ÆJôÂêÀÓmמÕ»{O½E#­BFS ÓæYŽ#a†a&{m Ù¼¾µºZ_?»ÞÜB4^‘ÖÏFëgUäEéÉfo­¹¤þy{`Ì*ÞOågXi¯GÂ0 ÃmØF’Ïæõ[ÑñzëÌzÿqO¢Ýn7ÑþíÖkÑág&ëÓ¡–ÏâR¢'JÎÊÝ3,l)a†aF†I›ïnEQ½u¦ÕÜÇjív»þ|=:½óþ¦ûÚ.?+ÔFVdUŠ•G¹=&•¢öìî=ÇÄq$ Ã0̘°"ñÙ|w ýFëL£Ûí×jµö7í¨5^ˆ&XT¹Ša  ðÌh¢¢Ü¶Ž0 Ã0cÂq$)”Ù8רþ¸[«Õ:ºQTŽ×Ç”#Ô¥¢¬ößøñ%^ Ùs/á…ŒŒŸŽ#a†aÆm$ŽÍë[xÜØx½qÿ˶@¸}·½ñÓzt"B >¹ Úƒþ9>ÖLBõUÜÈž…ÒÉ>aK Ã0 32¬H4w~uwUœ^{}u÷Ë®Â~¯wþíFýx½¢)ò†T<¬DÍ®rÅìÁÏM‹p Ã0 3&ìµ1Èèô™h÷·]è÷zçßl„ÇŠr„áÕZ†a˜1a‰¦ÛŽï£+'zkQ½~¼.Ž-ª™Éjü]†afØFbHÐïôÂZ'ŠêÍ—›‹+Gf[J†a˜‘aE›—vÈZÔã­óÍ6Ùr4,v– Ç‘0 Ã0£ÁŠV]@\øÙ³ÎÈ¢ÂÖ†afLØU´HûÛîƒß´{ŽÅŠŒ^®Ÿn5¬g§ùò”ó·Ì[ UHl¹)‚Ki²pyÎ\ +’JÈ'²ÛîuÅR}Ñm÷VVÚÍN`Qù£Äœ¬G¢š¡Ûݶ{.¾}Qí™Á4s¸”& —ç\ÁÕ± °"L÷»nçOñν6àÂ]ïÆŠÄ1?ë‘Üúð–j†h»£ö\|ûb¶=Zk®y)ìîíª»{»Ï^6åÜ äY=Í,h)Ù=å—Îýu®Ê™"¶Ò‡ÍídËd­¹V=“ó_Eïà1TÌ3¬Hpç½í~½'2 j1ö„h²ß›uÎæ‰9±ŽX¼§dT4rO0Yh[¯—CÈÌ•Ò8ÌUyf;øC«tÊ<<ðÓ£zu(²Õ1­œMš¬¢Z\X‘ àÂ/66ßÞAåQ;&g›±ycâHÔØ¨(—/].°A{úÚí)ß9ÚØ7»1ršŠ£]Jå›ÏòÌæa`&Kî×KÓcü2Q½õPéLêÒU˜ìã]ô<e¸äÈŠg {u{ ­ÊøEz˜ð\›l½w§v²ƒ!šFŽ ö\5WèaKKþgê–Ùd½%/¥÷~1Î%ŽØŒ;NòÚ¯i Ú‘®·é¶cüÌL$͉0¥”›‡ÜE¿Î¤<ÕX¼ü€ê™Ì-êòǹ\õlæ¥'KI‘f3œ}¤½#sÏ*J¿úÕmâTj¾½mR°")cóúVíX¸ñÚ«oÖíÎÖÙúÆO£s­§?5dõGvgÑÁô§Ü_ç#¹É¯´m&r[Ò’Õ)%ƒ˜¢sgÞîf) •‡òtf[žô*%ºdâ™<œ2Y¸êP |)Þ%´'&’ÕŠé䪟‰d`z°")dóúÖêj}ýìzÿqOÑxEX?­ŸmD/¬•Ô4”DÖjbÿ¤ÿµ?•ŸUtbEŽ˜u¤:Ù6h´7¿h€u4˜T)%¼Qì¤*} Ý…)¢È®P±HG~¤ËÓÖ*”ãHòÙ¼~+:^oYï?î‰@´ÛíF#Úÿ¢Ýz-:üÌP‰ðôéS+‹ýU)ûSI:EgåîŠyˆ#)w—;˜G£ÄS>·p)M–qÊsâôÈ”êÈŒùx+WQ‘7¤ˆqéѬGG¶‘ä°ùîVt|¥u¦ÕÜB´µëÏ×£Ñ;ïoŒŸ¸íò=ɵUdò×ÀÈïøìÁåW§g©<¨?G"¶”  *Ù³h&G %™‡8…ÊÖó«yƒKi²Byz³aYŽ”À7ˆÕdV$š;¿º»*N¯½¾ºûeWa¿×;ÿv£~¼^QŽäT?¬ÜY“ûg•+fxÖ8âi®Vn} àRš,Ó.ÏêZægüñ^ħ…ãH 2:}&Úýmú½Þù7á±°¢aæ'Ž„a†YPX‘hºíøþmXy¡·þ7õúñúêêp‹ŽÌ“rUç™eÃ0 ÃL V$†ýN/¬u¢¨Þ|¹9Á™5Ï*ŽdÖ¹`†aV$°yi¬Eý7Þ:ßüa“£kFƒ-% Ã0ÌȰ"€ÕF~öƬ3²¨p Ã0 3&l €*Z¤ým÷ÁoÚ½?ÇbEF/×O·&¹fÚ¢3W³l†a˜E„m$•Od·Ýë<Šû}tÛâÁ½ÞþÚ³ÎÔ|Áq$ Ã0Ì8°"L÷»îþï:;÷ÚRº÷?cEâÃq$ Ã0ÌȰ×fwÞÛîwÐ{"àc@ˆ& û½Yçlž°«µ²ã†a† ¶‘ àÂ/6ä„ r€¨›m¾æ ¶Ž0 Ã0cŠd[ïÝ©ì @ˆ¦‘#¨=FÍzXöÛ¹K„l²ÞÎ’ƒ—ÒŒ{?ƒùGÂ0 ÃŒ+’26¯oÕŽ…¯½ºñfÝîl­oü4Ú8×xúSCVdwLÊýu~`K Ã0 32¬H Ù¼¾µºZ_?»ÞÜB4^‘ÖÏFëgÑ Ã-0? %‘µšØ?éíOågX^„a†V$ùl^¿¯¯¿²ÞÜh·ÛF„@¶^‹?˜zmÔ7kÔµšØ=%z¢ä,µgà‡ˆ‹`ëÃ0 3&<×&‡Íw·¢¨Þ:Óê?îˆcµv»]¾ˆÞy¿1~â´ã·Û –‰¬  *„¦“›þ@Q’{°%ÃÞ EÅ‘Œóùï[úßξ|im؆=…a†™X‘øl¾»…~£u¦ÑíökµZû›vÔˆ/LÒ4’« OÁŒ& *ÊÑsåV%&”.AXd Ã0 ³@°"I¡äÈÆ¹ÆöÇÝõs«GÝ(ªGÇëc–“çmÉýiüÄíŸÙŠÎ*2Ø ËT×#¡RÃ*o§ý“Í$ Ã0 Ç‘86¯oáqcã\ãþ—mlßm×£Zôƒ¨â÷k²st½àñ¡N/q»‡QŠödÏÊõUgzq$ÖdB-(ÙV…°a†YPX‘hîüêîª8½ñzc÷Ë®Âþ_zçߌ¢‘•äÈÓ4ÞzXöÄÜýE§Py‘M<{°—~ÑYÞUnÙãð×#ñt Ã0 ³Ð°"1Èèô™h÷·]è÷zçßl„ÇŠr„QLÕRRä»áð†a˜£Ç‘hºíø>Ú°r¢·ÕëÇë5sȤœDÕ™öwm²VωÃf†a˜E‡m$†ýN/¬u¢¨Þ|¹¹¸rd&Îz$Ö"b7Xˆ0 ÃX‘À楲õßxë|ó‡M¶À”âH¬-„JòÏÃ0 spß «nwõÂÏÞ˜uF›1×#Q9hFÞÉ0 Ã,¬H ŠiÛ}ð›vïϱX‘ÑËõÓ­{v,ÓŽ#a†aŽ<쵩„|"»í^çQÜï£ÛîõöÿОu¦æþ® Ã0 3&¬HÓý®»ÿ»Îν¶”nçýÏX‘¤8üõH†a˜£{mpç½í~½'2 j1ö„h²ß›uÎæ‰Ä‘0 Ã0Ï&l#À…_lÈ'AåQ;6Û|ÍÖ:Âr„a† V$ØzïNídB4Aí¹0j®ÐÃr¿oç}æ¦äø’ƒ—ÒŒ{?ƒíGÂ0 ÃŒ +’26¯oÕŽ…¯½ºñfÝîl­oü4Ú8×xºýdLVdwŒô'rA”ŒÇ‘0 Ã0ãÀФÍë[««õõ³ëýÇ=!Dã `ýl´~¶½°:TRÓPY«‰ý“þ×þT~VщCÁ–†afdX‘ä³yýVt¼¾þÊzÿqO¢Ýn7Ùz-:üh`êµQ߬QÔjb÷”艒³Ôž".‚ãH†a˜1aE’Ãæ»[Ññ•Ö™VÿqGÑ~Ô®?_ND_1~â´ãϵUdR Hk…¢È’r=á¥ò þçû|la†aÆ„‰Ïæ»[è7ZgZÝn_«µ¿iGßš/Mr…Ö\1amEgy †—T¿tö¬I…§p Ã0 3¬HR(9²q®±ýq·V«uu£¨¯é©Éõ¶LJ dÃfË ;=cɘ9aK Ã0 32¬H›×·ð¸±q®qÿ˶¶ï¶ëQ-úATÑ:’£[∠«¬·ÅóÑk•ìÉžEAšp Ã0 3&¬H4w~uwUœÞx½±ûeWaÿ/½óoFщHˆJrij| À«’#’»¿èÏÛâ%ž=ØK¿è,ï€*·LaëÃ0 3&¼Š¼AF§ÏD÷?o#@¿×;ÿf#<V”# L‰úðœ@EÒ³`¼yÖî·:\2y6 êÙ¼ëù„‰¦ÛŽï£+'zkQ½~¼>ÁPÖCfRN¢a™ŸïÚ¨&æöG·íž‹o_T{æJ3MŠgí~«Ã%S‘g³ žÍ»žgX‘ô;½zCFQÔ|¹É3Ö:2'rD51´MQ{.¾}±¨­Yk®©Ý½Ý¢_½Ÿ²;m"–ÜÔJXk® {ʰ÷ëe²ür¹7>B†¢d²ùöŠU(/ÒE)(/«Ó(¨i3ò‹co¶¼Ñð°õN€*)Ì䑘ÜñÀ楲õßxëYçe!™ëˆeïw{‡ßbÒVf„+f›žêx­çÀžÍê8­Uõ /DÉxÙ³pFc! éΤ &Ű/Îøx‚f`¹Íð‘8|X‘Àj£ÛÝ_½ð3–#£3'q$jÜãɘQÂåK—KF?jøBÛÖŠ¦‘äj#o§ýs¨ÆÝÞoî¯E÷ë]×^±\à ÌðpnKé[¨’ÏŠ{¼4± ¼œ—”g Û¹Lªx'~×ôéíÐýÙÌ ´¤™^ÞÎô‰ÂsmàÂÏÞxçÃõòcÚßvïþÓƒ[¿Ü¹óÞöοíÉ'òpò¶@±7Ù–´hgÅthšÝ™Û¾&¹ù,ùÕËpùéÕ¯8ó’Q­J>՞ܮq`™äʸ’,åf‹óyB`ŒY¼‡Oy•x^F«¬Ey$†…I%äÙm÷:â~ݶxp¯·ÿ‡ö¬35GíõHr_扼á^ ÂXfR2Þ@¶¼‡£‹Š‰Óô'u_‹ò ¼woç°Å{hŒV‰åG檊‘s¸(D.¬HÓý®»ÿ»Îν¶$f‘ûŸ±"q1ëÈ4ðÚV:^œ«6·£5Ivìb7fÛdåa†–’–L•l<úœÔ°u ÊSl¹µ1S˜s«ÀÀ¼y‘1Ã&>óGbR°"ÀÖ{wj';¢iäjÏ…Qs…–û}»Üoüæ_rðRšqïg£]b®âHÔèÇÓF·>¼5ìh/V´³b:´±(ßY1eÅh÷›m¼r³Tñ.žžË¼• ½tõ,•äj„2©žÎl¡êYª~‡\¼#74‡å™¡¹¨È´‰Y±ôõW»—šû¿ß°õ¾¿€Ý3Îæõ­Õçêëg×û{ÛÿÒQ;[gëQc%za•™ýœž÷í:ú«ú³è€ÜƒK.4Y*¦¯ ž Ó÷½õHÔ{^E ì>Ü];5á·E)$µü¢"»ÒQâY»ßêpÉTd†5Ãaý\=‹nÞ°TlÒí uJ~|zo{çóŽ#)dóúÖêj}ý¯×û{BˆÆ+rÿs±~6j† ¿ñôÇD°Æ öZ¹*§è, –Õ9‰#Q¨lPm='›ÏÚýV‡K¦"ÏfAÍÉ][Æ#cŠ$ŸÍë·¢ãõÖ™õþãžD»Ýn4¢ý/Ú­×¢ÃÏ õ¤XaᩬæÈM§è¬Ü=Ã2o+·> M*åY»ßêpÉTd&5ónxæÇÌK`~à8’6ßÝŠŽ¯´Î´ú;Bˆö£výùzt"zçýñ·]¾µIØýЬ xúô©=%{|öàò«Ó³T¬qe䛚«8†afaEâ³ùîúÖ™V·ÛÇjíoÚÑ÷£æK ~ 8WL<5å)˜§„ê—Ξ¥¶ÇŒ™·Y6 Ã0ÌÂÁŠ$…’#çÛwkµZçQ7ŠêÑñú˜Þ-êRyšfüé3Ùi;åÐÙ ’‘Qq$ã¤À0 Ã<˰"ql^ßÂãÆÆ¹Æý/ÛؾۮGµèQEëHvŽn‰#f4¬n°ÞÏD¯U²'{–P2ZöØRÂ0 ÃŒ +Í_Ý]§7^oì~ÙAØÿKïü›Qt"¢’ñ,(ðªäƈäî/:Åó¶x‰göÒ/:Ë; Ê-S8Ž„a†V$>íþ¶‹ý^ïü›ðXXQŽ0la†aÆ„gÿjºíø>Ú°r¢·ÕëÇë e=d&å$йZ„a†Y8ØFbHÐïôÂZ'ŠêÍ—›‹+Gf[J†a˜‘aE›—vÈZÔã­óÍ6Ùr4,GÂ0 ÃŒ +XmtqágoÌ:#‹ [G†a˜1akTÑ"ío»~Óîý9+2z¹~º5É5ÓŽGÂ0 ÃŒÛH*!ŸÈn»×y÷ûè¶Åƒ{½ý?´g©¹ƒ-% Ã0ÌȰd0Ýïº?Å;÷Ú€3ŠÜÿ¬Ýüac†¹š+¬ud´8’݇ü¡)†a˜gV$¸óÞv¿ƒÞµ{B4ÙïÍ:góÄ8_ý];µ6ñü0 Ã0 {mpáò BP9@ÔŽÍ6_s׆a†V$ØzïNídB4Aí¹0j®ÐÃr¿o—ûßÜãK^J3îý bœKp Ã0 32¬HÊØ¼¾U;n¼öêÆ›u»³u¶¾ñÓhã\kàéEøUŸµóv–| x²ß ž¼ Ã0 3&¬H Ù¼¾µºZ_?»ÞÜB4^‘ÖÏFëgÑ «C%5 %‘µšØ?éíOågX¶Ž0 Ã0cŠ$ŸÍë·¢ãõõWÖû{"ív»ÑˆÈÖkÑáGS¯úfÚ V»§DO”œ¥ö üq GÂ0 ÃŒ+’6ßÝŠŽ¯´Î´ú;Bˆö£výùzt"zçýñ§®­"+”b@Z+E–”ë ï,•õçøßçcK Ã0 32<û×góÝ-ô­3n·_«ÕÚß´£FÔxa’¦‘\3Æ@A@ÍUŽ/J$wO®ªÎ˜ë‘Ì'¬®†aFc´¾€I %G6Î5¶?[í<êFQ=:^³œÜ-ùµJúötµ¿èÏÉ’ j.Ù¨˜Ô¿Ž™øÂqÄn‡až¸ã€ÍK;d-ê¿ñÖ³ÎË3ÚŒ›*R «]†MÿÖ‡»ž¦AâŒÃø$w± ÃmX‘Àj£ÛÝ_½ð3–##2ÁõH¬ÅÂÛ€Ñ%–•k‡:qdâ-"gçN£²P §ÐÙXÙÙàj#›lî|¨ÜÓ«ç3÷§ÜÄK2–û«—ÛÖlN*f£â=ýÊ0ÌüÀq$págo¼óázù1ío»wÿéÁ­_îÜyo{çßöäy8y[&Gb¥ÕTL\¾´6¾…£¢é%w…~oçR†Ü¤è<,äI;õ©dvÑaUòYý¾èþòŒUÏvQes2T6ªÜcyÞ†™X‘TB>‘Ýv¯ó(î÷Ñm‹÷zûhÏ:SóÅÈë‘(Ó…úGR«¤6¬jÁðá #* <1ñ4ð‰OîE«ääpr[RDcf`&¥Í0ÌÄa¯Í`ºßu;Šwîµ7øþgíæ3ÌÕ2½8’é1N„Ê4˜ÛqüáglRWœÛ"eƃÉî¼·Ýï ÷D†A-Æ€M@ö{³ÎÙ<± ßµÉJl·7ÚÀ}n‡ûãglØ"šTQÌm‘2 ãÁ^›\øÅ†|‚T޵c³Í×|1ÃõH¨ã¦|òpùU(mOÜk3·#û‘3VRDåi¼bÅ,Ím‘2 £`E2€­÷îÔNv DÓÈÔž £æ =,7¤®$ÈÑÛYrp•xÉ 2ò%&G’IÜÉŽÑÒGñœ)<Í|!hLh¨fî…ʯUñ°ÐtÊÏÝiÏxJõœ”_±èÆK*hReÅ0Ì!À^›26¯o­>W_?»Þoõ¶ÿ¥£v¶ÎÖ£ÆJôÂà]iÛíŸf¾µ[t0ÒfçynX‡#(r·‹4DvÅ#+Š’¢?+ºªl L­ä°ÜD¦<æÎqNxðPiŽ\A Ã̬H Ù¼¾µºZ_ÿëõþ㞢ñŠÜÿ\¬ŸZg£a‹-«?ƇŽPé{-o8ûÔ,š{–=#‰žYÅ‘X«ÉlÃcyV¢ Ã0I>›×oEÇë­3ëýÇ=ˆv»ÝhDû_´[¯E‡ŸÏ¨Ž¼å§²š#7¢³r÷Tg´Y6ãsä…ˆeåÈœDžÎaÉ0 3G’Ãæ»[Ññ•Ö™VÿqGÑ~Ô®?_ND_1~â¶ËšYå©ÄnOÉŸ=¸üêô,ëexâ@FŽ#a†a°$Ëæ»[è7ZgÝn¿V«µ¿iG¨ñÂОšrÍgÀM@yë'☕¥dzð7†a V$)”Ù8רþ¸»~nµó¨Eõèx}Ìr¢.¯ã_ dÃf³ålFÎÉ‚®GR޲úÜþèö¬3Â0 óLÀŠÄ±y} ¯7îÙ·ï¶7~úÿ·w?¡q\yÇŸ@‡øÐÔà7dÁZ²n⃠9Œ`±™+Ì,ˆeçàl.»ÙaÂ\b%ÏBbyÀV³·ìa‰’9,ë=$ĆV`—I`:7¬A cPÚCÙoJïU½zõÞ«?]õý`L驪úÉ~ÕýÓïýª^¯¦ßét²N©öˆéOÆ ñeÈfC?J¯uÍÛáæeG"Q˜(u$O>øpµsþÂOÖÆ_L;Ë+³?l^éÛ‡#GÇ)-ñÝôÛÓ‰ÏÚè'×wVΟv”²ƒÍ¬ Žàƒˆä™yÿüKýñ¦bYÌ6¯¬­œX± G¡êàŒY›§¦“Ã/ÅD,‹“g†ý^ït¯sbQÑòï‡ld  LäHžù^̬tõû½Á ƒÅ G*Avà‰ˆD!v®ßËónvùÚæàÅ™#Ô‘|‘!ÄêÚTˆÎö—«îÈb#SpF6@!lb‘ÉŸ¦>™üßaçä¼ÿBïüú3;u$XÒ©`gIDATOäH¬ÌŸÌ§“ƒGßÎfb:é<øøàëo&UwªFÈŽ<‘#É6ýßé£oï<â/I‘/?¼¸Va¯ê&ª#á‘bh$ó*ÓÑw•oéò$RÞ¥"woÛ³º$Zˆˆ$ÃèWŸÍ‰ƒ'ó•åî¡ØB¬ˆóÙAÕ=«Ÿ¦>¹" &Ãz@4 ³6¶ÿéÂü‰XñpDÑ鞨¶_õ"ï²!AóÄcˆxX°{{¬G ‰™ç—Òå·ˆKÐ`D$nþjÔý›GbY¬ˆÁ³pDtO­ô'ã»%®o'é§U ;/çûódq{ êHÐ62LQ½Ñò<ñˆGo”9fmÐ`D$&;oßìžX¹ð£‹®ôdãú˽ ?í_¸´žy¸\2F?ôÆ´Åñ%rJJÜð<´Sbˆ$nPâ ñˆHRí¼}suµ·ñòÆìñA§ÓYûá\±ñrãåµþs«¹NUD$¡gMä—ñ¿å·ÌG¥˜ ™À2e#C‡9 `qQÙšlçíÝþéÞúK³ÇåÎd2Y[ëýùdýGýò;¢5k¢,‹ünñÈoΓvTb‹=žG‚¦Ò 8ЏáE?¡2‰Cšm@Ž$ÁÎ/oöOŸ\i}öøQ§Ó™|7éý ×?ÓÿÅûüO.?ò•ĉÌUèA4_#Ž/¡—VYbŽ'”£¢>D_ú¬ÏGvÍMnýµi̯cu¾%X\D$ª_Þ³µõ—Ö§ÓYçDwò?“þ_õχ|Bkb0!+EÒŽR"˜xq‰ýKëG…*O¡Ž­¢×œ¦5Zž'‚˜ƒþ@0ksLŽ\¸´öÙ¿N7.­>únÚï÷ú§{žÿNñ)%€p›%1œ!ñn´£”„gOx šG‰-ôøÃ¦Ñp´=‹+˜j‹É_ì¼}S<^»piíË/&!>ûpÒëwûgû–Ùý]ÃDŒ™Ì³-JH-C‹~”RP’·c<à‰ˆä©Ñ®vÎ_øÉÚø‹igyeöçƒÍ+ýþ™~§cŽ'RfUkDÛÓQf[”“ë;+çO;JÙÁæGŽ£Žà‰ˆä™yÿüKýñ¦bYÌ6¯¬­œX± G ¨#ø!"yj:9üòó‰X'Ÿ;Øø»^ïtou5ßCGê#Ô$Q^dJΈHžù^̬tõû½Á ƒ€wÖ´u$OD$B±sý¾Xžwû³Ë×6/¸)/²#OD$B±º6¢³ýÆåª;²À¨#ø "Bˆí7.ÿâöFÕ½XxdJΘŸ@nëÚ¾@#¹Õ‘ ç§µîÝÙ+¢?@Ý\}í*£mpõµ«"ökj.ŠHÞº~3×þ7nÿcA=i¡¨ŽÄa:,(F;`ШˆdE䨬<¼5ƺ6gŠH„—ÿá¯ûÏiO6›Ïçóy§Û• ;×ïëǦ-ƒç¹0¾Æ¯Ï©,û“¹M¯ì×t«#@jæ½6ó'³é·_O>Ù™üvköÛ‹óÛšýþÆôÛÉ|6s8›ÿ#PãkÜ8¬cçöŠ6]® Ù(¸Ë¦Bú¬Þ4F®ϵ°X‘LOßüæÆÇ»½Ù¸wb=}µûý¤ûÎ[³wņ%J¸ óúZ¾òËøÎ‰ÛÊÙ,Ïm¤uIÙ__Ž8o—dcæ±<¤B¼íh€F$·¦·:'ÄG¯~ôÖ©ÞlùÙÃà?èNu~ö¦Ûi£%1Ï!'S ÇJ2ÊQÎf8\|-_›Cìs3‰g“6!™’ªŒ÷ÇiAÉp0ŒþÄ[d{|›£€Ê)£}8Ž÷Çr[Ìò[iÛi‡ |M«#BÌ—EçûÎ+ïlÝ»~ïÍ_vN­Îf3ñ²˜ÿæ×ÝétvªkX@OVi$Lèµ–•ñÂ|6‘gÅᛳé=ÏDI=)oÖúvôF,·•ø¶lê)m´‡=…j`Dòë³7„ây1{é­­ŸnnVO¯ !Ä;7„>ëùz~ê+ŒeàbÓ%ÏÚÛHü$y‹]¸Ë¦rÑ/ŽÊ[jÚ;l¼wa4#¹‘HÝn÷Öû·¶®lÞÿ÷ûŽÕr¾67³Èâ;;ß•£deôó¤Åþ/vZý%29?¡$%néh’ب39Ô•ï0nêµÒäˆ$ÒétVWWçOæ–I𸤆óg¿ ô³ZÒ*W‚tIé›ÞÙß3z*Ÿ‚LIÝ(Iiûùu Çm´3Ôk¥•­qý3ýÑÑîû»ÝSÝ콟Q>Ýãó,zņòQís¶´‹Qâi]RöÏÕ·Ì—ÓO"„wÙŽT+­ÄÕùA~ƒD=%f#äWs$“?M•–Ã'óƒÇj#";Rñ DnnÆÉŠþ¾÷ñ=!ħ¿û4×sTQs<à£À:’É7ÓíW·Gÿ2ŠB¸íW·'ßLûg“âÕ×™3|isxü»>ë¿\Í®‘|êHôzä„"Ī=@}$ŽêÄ5ª.\Ô_±÷Ú ÖÎßzï¼Ï”uqÝä hàÀ³Ž$þŸ’¸Íÿ#>ªõF‘2ì¹Ð>!--’I_êVŠ_«Ù.´tˆyŽV?ƒÒ¢ïoÌýS5ZÀ:’ÌÕf`xŠbgmúgW/þøâ­÷FBˆ¿ÿÙ±Ûj¢F76¿F+ûØœAŸ/0¼ ¿²(|êHâ1(ÿª€Ä/?h•#’þÙÕÉ7Sy8„ ñX!30LÍ$ÎËæºÔåø¼4ð©#!; è¸Ð* ™#É”7‚§€u$t\#hƒ#’«ßõ÷ÄÄ-G¢‡þõ­ilNËÛ™çÓZ™µA{$ÖÉ%^\h›#’½L®~×ï|°¢¿¥Ô«šÏo8ƒM X×à¡™u$(ëÚ<Õ´Ž‹Å9;2ºË¨@[0Ú³…¬#A ¹Õ‘l_cñg´ÂèîˆÑŽ6ð‰¼ ‰HNž»ïŽ^ÿùöœ=û´ñÓß}ªì¶ûî¨wöd@%¨#8+$"Ù¼´yïã{»ïfJ½³'7/mÑ”Œ:€§¢fm5Z…ì`ɰ$EÞE*Ì»y>E‰‡0¡|®´‡V‰êHªî°0ü?ï‰Ð0D$Æg`}Õe½h’øŠår¨'. šv!d.T.ò_Y†“$®‚Ί€ˆH€ÌŽø¬k£<];±hù ÇÄ':Ê«À|!¤í–÷Ê2ïo·ì  ðÉŽÄñT\ ç'Ósõ¡D$ƒ: µ©mǰ¸ˆHL¨L é(¦ê¾SÛŽaq‘ Ï:‰ß·€4µ½:jÛ1,"à™‰ŠãxþZ+^1o——†ùê°Ü-Sü<擇zE ŽˆaxÖ‘(¹_J\ÑTñu¹a¸ãÆrfDß-q;óÊJœ‹IìS6ŽˆÁPG”†äš‡ˆ„ª#`‰pÍSÔº6hçum|Ö­ £0#"AQI´°½íkÛõ¨•ÑÝ£mày3kƒ`¨#8#"AÔ‘<‘ €"²#™‹:œ$m S‡îno@"„Qκ6>÷°Z)Ô ‚ñÉ”¤­Ú¥4*Û‰ åñ—òoå‰Oi9˜´sÚ4fñ1)’F‘Ü¡…""Ažu$iÙ Ùž©è‡(û뿌ÓÛÍçÌl2ÅǤðšˆt—óÛ6êõZ@FZ‹ˆa”SGWļ‰y™1s#À ‚)ùy$‰K‚Ù3Ï%¾”Z€€ˆH@AÏ#±ü°OŒ-”–Ä©z›¦ÀÚt pÀèBk‘ ÏìH|D¿#&1zH<$qùþžö*æ—3¿9²ÉÊë¼Ãh6"„áYG¢O—È» 7ˤͰ˜¿ÔÑ÷·9ÊyÂm6i£ˆ¡…v""A0Eבð[#4 (g]Â4ƒm¶\uÐQvÄ!ñY·X,ŒvÀŒˆaDu$û_íç:jûÚvAýjetwÄhGøDÞÌÚ ˜’ŸGh"PN  ÁˆH@Ù‘ &SöO|ô;¤€: "Aå¬kãs' ö@‘ ŸLIÚÂuJ£²˜ð-цü[,¦e7ìLr@fލøNÜÁ|ƒ ‡ˆxÖ‘¤e/d{b¤¢¢ì¯?}5No7Ÿ3³°¤ló%¶ƒÃ…Ô (è.ç9·3JÜGZ!/û1ã6ä“XPD$£œ:’¸"æMôsÅ–C37>Ì#Š!‡6 "A0%?ä(ÆápóLPâ )A ‰q”9žrh<"PÐóH,ßyc ¥%mz>ó„‰}à#>Ìã‡!‡Ö""AžÙ‘xFúH»#&1zH<$qùVžö*æ—3¿9²é#Í~p2Ñ`D$óŽDÏW=»S&3‰­7š¿ÔÑ÷·9Êy°Q6CÎ|ã‹…ˆÁ]GÂ/‚Ð`D$ œumGÐ c ÍrÕ@DÙ‡pÄgÝj`±0Ú3"„Ց쵟ë¨íkÛõ¨•ÑÝ£mày3kƒ`J~  IˆH@9u$€#"AEdG‚<'JÙ?ñ9Ü<{ M’kŽ,žo?ü<ª¹{‰âIš‚..®¾†!"AåԑĹeŒóžó(¶˜™¹(”ÃSBàƒÖ|£˜\Gqqµ ‚)ùy$iïw–Ì3A‰/¤%¤‹Qš´Á™yˆÏ‚w)’yårqµ (èy$–ïG‰±…Ò’6iyÂÄ>ðF‰4ö‚^çrqAAD‚<³#ñ<­2wž6 xHâþò .íUÌ/g~!sdè<Ç¡åx[:~Çá J`?¶óvÉòü\qmFD‚0<ëHô,îѳ2S»z£ùKý}›£&ÀÑ*i£]Ù!ñ¨øÎ‰gˆ_8Ê %žÁfÀ¶Óºd¸4,üÌFð ˆHLÑu$üz„6XŠaÀ£UˆH@9ëÚðîŒ6Ðs@K,WÝ4A”qG|Ö­ £0#"AQÉþWû¹ŽžÛ.¨?@­ŒŽíhƒñC÷È›YSòóHMBD‚Ê©#4 ¨$;2,)€ÅED‚0Ê_×f¼ÏÐD$Æ9S%9†ƒ¥xÚCÉ|D-ñFR#Ð$Ükƒä]6Îu$ÃÁR”óˆâ ¹­l(Û€Æ G‚üëHâA†p‚@ã‘#AnÏ#±Ç 49SÜ7ÑLMô§ˆó*GD‚J{ ™h*"PôóHÆûGÑ6äH ©ˆH†ÏóHÒÊZ•íèKÙ¨o ‚a]€3"Àº6OÜý‹¢ìˆC8â³n5°Xí€ Âp{Éðܰ þ*ñàá·™µA0Ô‘œ‘#A>ëÚÄ ‚p«#‰&zöîìÔ+À!"Anu$Å­ƒX,Ô‘ êHΈHÏ#x""AdGžˆH†Ïº6PÙŠ`œŸÜ ,JúMù‹Òs{\Ý( ðy ©þ·ˆïµŸx¯Yý{n/ígB!"AdGP´šîÞÞM >jÞs{†Ÿ‚:„A À9C¦ð1~Xö+Ï•ýŠ€  Ž¢Ì¡ü0cÖð<€'"„A À ‚!SpF  Ž54 £ñþ8í»Ê·Ë$û1÷$³·ÃÁ°ÂŸÈ‹  ;4ÞG‘„ äâs,P r$#ª#iÌà°èdþ`8ÆSõL$R:0ô®*ß•_ZÔ9C¦5SÌu#;™˜;Ñ¿+cŽøþAR/@qˆH€¼Ë†:,„Ä$™ ZÌÚ žÖ ”ÀœÛÈÌ|AÍ‘ êHPñ* ¹Ñ€ˆùGÈüð/€fcÖÁPG‚Z‰Ê& ·þÚ4V(­Þ6*w5•™J©ÛO DˆHu$XzágZcµdР¨&†)‰ßUjZ ‡5Á¬  Žµ’ø­lg6VÂÐý[‰?B®€Z!G‚0X×àƒˆÁPGpFD‚¨#x¢ŽPG1~Xu€ê‘ žGxž«º@¥˜µA0Ô‘œ‘#A2;ÂÄ Š°¸Áîâö(  Žʼn&÷îìUݑܷç@%"’«¯]Ís†õP]Aa”ðÔ‘ 8‹;®·ç@ù"’\ýÕ×F¯_ßׄ4~¸ÿàáxý\vÔ8<7´¾YZ"šL ÀYò¬MÞ¸~üßjmx.ca­ÝÛ»{wö,ÿßõp„:€§÷Ú Ï Ø®ÉvÉ(ßxÊ‘d.`Ͱ]‡í r-Yκ6¶‰å‡Óú¹¡üMíj·ƒÈ”)8³ŠHr},Õ!CÀ¶ÇæŸumž²#ûp¤ò¬Ûr[•9ÈŽ<…¬l­CV€mQêH>²#’ñ~޹šdØËr )8³Ê‘ä Jê!`[„có¿O À“í¬ÍÇRåY¶å¶„ì 9êH2?œê`[„“+7F ÀGÈÊVqü·s¶«Ý.™€³À ZŽ:€›„•öòþ¦»{»ŒÅîáìÁCñàaöÿÑÕ×®ñêdM6Ôˆ$ªØ»³WIoÐ$Œ%€=uÖ†âD„ÂXØ[úãמ|ýßûU÷´Ñ½?»ÿŸ÷©lÕ[Bì¼½Su7@«-müp£ê>€¶ûêF ºb%õÑIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/delete.png0000644000175000017500000006010612032647161024142 0ustar ebourgebourg‰PNG  IHDR‹]ä°ï IDATxœì½ˆG–ï{Ú¤!dȺȪA†N°@Um uÉwcèvôXµÐ’ÖÆmF²}‘zl¸–g.»ë™Ëz5^ÖÛ2¼±KâyÔ^O{`Ç’ÿ0n=ž/¥ïë6xºÊHê*Ù0ÍfñÜÜLpC(¡ßQù£²ª²~tÕù _EFFDfgeäÉ‘1ö¿þ¿ÿE]ú£ý¶··¡2OÍýË»—T…8.¨ 8.EZUˆC  ¨Q£FAÿü—?/³ÐRß'rý“ëgž?Óöî‹¿_œ}i6h«?úÑXßl|g°T¢Æ,‰ ßF׿£ŽKU„F½Ë5 @P÷DƒÔ¥DêAz$5€ò²ª¨½^pWH]ÚÉîì¿A»+ÿåû/ÛÛÛFÅpÀQÕqIP—…P—B˜&@XS!Pÿa€±a U`I‡P´©Nµ˜&$Qmª÷$ª[ÝÔZ¢j×tRKAzË"n¨Þ›06ãÖÉ­‡i‡¸UïK˜UbÐ)³jµ§Óã)cc·j» ýxÊXß…zÊuƒ ¼u\G%ªã:¼¿¬õ†@ êRh,EÜ ¬÷TÕG…Àž´V @€o ©ý!Þi³¤Ið^Â4QH­·'„e®%€åRp\:„ZgËG…4j‹kËW“Fm·¢÷økmÏN™²ò\kíújgGoúèä^Rm['ÕêŽ6Â4•´.ê}záëñ„±aíèjkº²ÑD§»¡ïŸ^[ˆ_Oz5EZÖÌÿd= JT¦yǺ?¦5¢ñÖ'jD·Ö‹ªŠÚ´'­õ›¤” Ú•ííír¥Ü’÷¼óÄ¡€8.U8n×õüßNÀ¯þ©Øƒº@!ÎVM«ŠælÙ\[M5iÔv3­iÖ–­º²Nhšeû齚É40MUµ½é£õ¤VmIïÓªU 5ªV­è:S÷À|tÕªëO»!:ûxªÂõTe½Wú‰Tå~ôô©RKú°^ºgƣ«~J/Uº«+uÒQ£ ¨¯ÿÚÔ{®uÏ Àî=ÿüÂÏÁK½ë¼þÉu©oõÖ>{v?ZTxïÍûüÙ³³ª¢^ûèšè(BÎ<FUÔO?ùT¨“‚[{§o¹v­kWÀríÓ'Ó'Ž¥œàç_Ó;Ôê€åonLNδWÎü{Y8÷ú2צ —þe™å™=©OM€sÿc™nÕ÷%ÄÚ²™N¢í…ôÞÔòŸÑvÒ÷4j»™Ö4kË&P×›5Ò4ÓWïmÔU¯¦©½šUµ™—œJîh=©™U›] ’66(•õ>Q'ôº˜nK©KÓã‘tyÝO?Þ\gO–ï×õ@]õ½º~¢Qß·€zµî«§£èÃzñ^üºrÏršé’¯~2Xß5ÛÓ¹nè§u©wz…ëgQ£Ö _™Ì¥ý×Z¯Ç¼gðxÏ<¥ð}@vzÒ—ÞüÕ·²Ó7ô­Š\û˯¾ÌôìÙY…õÞÜ{f]·ã:³/Í^ÿýuî=ׯª¹ð7ÿÇß|úɧì:ØÔP©ë¨ÔÝѹ'S >deÛÄ7O[¨Kƒê J¥¥ôÁ)¦S)X¯–4-M]kòÉ«b囥t:G]•nÕö%JÂܲæ_›€¥ÿY¤{œZ:I˜¶é¯·Lp=zO´MpU ŽÖ¨ _­%ŒMmnÚÔQ8ÚÞ„Y­éÔÞ„±£Sþz_ÊØ´)­ëª¨«^­7èÊF3ýx°^¯éI–¾Îä]ÜÑzqÝO?Ñ ËëU{ œé'ôò}?}XÒ†¯.FÑ÷ZÑOFÓ÷ Û–u.¢¾×Š~:’^Ž_g–ïúégÚ×3mèjÔu¸ݺ÷L…Ô|èzOÊôŽGJßLóü¼v1çCÐøÆ¼ö6\QA^}ïY…úÃEý:]àŽNHª xó׋pîT–nQ–>ÿ«Üü¯NLN.þŸ'>ø‡\joŠºŽ¾/5ÿ·S‹WN,^É}ð«ú¸ÆÊ™9–ùàr,ýÚoNh`mƒ©§Ò×þùÄâ•ÜÌ3VojŸ6ÿ·¹Å+¹kÿ|búi]j¨¡eÚ²8úä¸M}_J}¤ö¾B]G<5ÿ‹©Å+'®ýsn晌M鹟fáa€‡áúïÏèã©Ô>mþoO,¼7Íê%$aS:ÿ«ó¿Ê=*{éÓ¼K¶)eZÛ“°·vtÕWk { v´ ·€º@]'µ·QÛ;ÚÜÑ)Ó¦5lÔUJ©¬õ}ÚØ4OÔf=ZÔ7èÊ¥[u½î§è•uÛ«'=Úfú ½¤ïûéÃÍõt‡ú^4muY·½£—ï·¦‹Qt@]¾:÷´¨3iÓ_ßõÓÏDÒË‘´…µW ð ÅØ3û/QCõ¤;šûè¸.ÖÁ‹µ/~´Èó+;Ï .%„|ðáçΞã}þ™—êÓ¼Üڳç7>eùmjºe Vým>¡`>:YøÒ(Ü*ÆéìS:u—§`¥ö< 3S‰åo­é§3ÇÈå«”R»pË(üÇ ÑHþÝÙ¹Ÿê/_\:ûâô™“ºi:o½½dmÑ̸V¹¿®*ÀÃðÖ{¾ðåÇ3§%þXÐKÎÿ"çlÁ›¯_?ý\zî¥Ìò×Ë@5Þ±mõè–…ÿ(99==¥/ÝZ™<¥KVz< ¥Q/Ï:.̽¾xî§Ó³ÏëKÿQ\üS1÷ô 8s.O°¾ø··Äzg¿^†-MÓ@U!Cµå¯Ë•J!ÎÙ›&¸„²×u­íIT7-pÕ´mW-öd¨÷&ìM‹Òš6«5Ü›ò×É”Y5wô†ŸÞ·£õ})c]Ð&ÝòèñF½¾£ÍFmoMH;Z7î zÝ´m é'‚uÍSlÐS‡õJ¾ç§Ÿ Öw›ëâ=ÃÞšõÓèt.ßm¦ŸI—ïVíMÇWWcÕ3Ϥ‹ßŠÚðÑ?Öwjµ]ým3ýÔ¨Û×<]ëZòž¡66Ëqz µæðá;½0rû…ç_€º÷,Ί’j¯M’Và¡çR{^¸þÉu±ÏO(‰š÷¬À§7>eO õ—õ” Ô­E7µ½‰ÌÁÄâgËd¶ôežÿëIÖQ0^~#ùý{2c}_1Ö­…ÏV€h@Rð4-aYÆÌuøùϾªT*öÒ¿W©ãÔœw€Ù —óÞ xª¦Ú¶1ý´ÃÒ¿—¿«”*&×,Zõ¶

œ*­ ú¾ÍôÔa½¹~R¯Hz³¦‹¢¾×‰®úè§õâ½jµ©¾[­nZ’Î…è{Íô3z9méûë™§ô·¨Q·¯i}>ôθëúd¥š÷Lw—kÞ3©ýWUT•¨Ô¥<º,ö¤;Ó H),JTööÖÎ"Ó ˆÏ ¬W¿öѵٗf×QA­ur@?ý·O©K$Qëù)hsÏ&`áÊÎGRNŸÎÿ)O™ì¥@] ¥4} ñ÷¯Q07x€¥T}ÀøKU{4­*M<¢³ÇÛ¶S©Ip˜CùÀ™SÙ3§²¬Æ„¦‚T‘Û&tÒ5MÐ[+F&š=•M< K_ç^™"ŠJŽ?ªÀìsÙÙçjÅêÉTá«R½^Ð~õ>¨½o0m[ß”º6óŒÉÍÞ²ëÞ³foÑš7,jM³mAoÕÎqƒÞ«Ù6å^rÕ¶üõæŽ÷Ü\ïKuo{|_ÊØ´˜,ëj]7h³jÙ~\76L]­{Æ¢~B76šèÉÃze½ý¤^Y7™Ç9ù¤^Y·ìM @>™.­›\W|õÓéÊ}³Ú{ýLºr¯}]¬—3ãÕÕfú^]ÿxôOÒÅ»>úôO&—ïñè{¨Q³tÕ‡<×g0¾,,ü±á+cj=BzöÕ³¹ŸäˆBX óž™Î{Òú‡€ü=oøÈmêʵ{­ðÞ»áÝ:ëŸ\ù¥—¹Óýé¿Õ¼ç<¬Ï µ‘Ò6QûôO2 Ÿ‹.±}ÏŸÊËLÔŒu^!Mjj1`:÷³)õ8qò’iÛÿïÒw6W¾cR»JˆÊºØuÓЯVüÍ{7X™(Ñ’;õ~ï_/÷Â)­ Ôµ5M³·j:©iöV€€Kô^Ͷ½EÁ¥²Nj¶ÍuÒ¶-¦Ç“É*×û’ÕÍÚ¶€Rpéøx²ºYÓéñ¤á«OUmV-ZÓ:דtcÃÜÑU“nyôº±!èõ&zê°^¹ ×MjSpéÔ“¢NWî[Ú·ÖŠÚöÕ÷âÖÏëû¦½)¤w¬Yw[Ó?n]ßmª'[Ó?i]ë£YkW#ë¿ÔEÔ¨ëšÛg-ò§O@ .ð@ðG}4ó×3|T—Êú‹z¿ ¡£¾y¿ÉGnïô¤Bí/œ}×®x{xönrí÷×^xþ¯÷Ìf}y½gêÒ£O§U /QRtI1rÇ2ÏŸš~óí묹éýúÌñ4,Ý\âLMë{ÓÌuÖ÷k7n–gŸÏ|𛳠\±· µ—”¿µÖ7«ìécÇv€,ýGåùç²gþ:K-¨lØú^Í´í•?›¾-äÏD܇6MÇ0]WoÜ\®ÅháÏÆÙç²gNem‹Z6¨ ·¾®X[H@njrù[ãyG¨7™4íêÊ×&û°"Z=ïxÏLS—@Í{®kM³mA7óžµ½IÛ¶ës²*êͺNkÛfpr_²ºi׽䤤«u=ž4uÝ{ÖÍjÍKgžq¸Ç|@ð’#hÙKÞhÔ;^2×;Þðä“i£ïž±ä%Kº§î¾g^~ó•éùwgßú»/^¾x}®¡Þªóƒ©*õ2ØZ¢î= ØÉDÝ{~`'ÕlÛ€šÞ²Áx@t*iÛ¢®2=žJV¹~,YÝlEëÉêf(ÀšÖ“†¯ÞŸ4ª\‹Úd®jÚ¨éô¸¹QÓ“éq£jÐ->8nl4Ó“ãÆº ï×ôÔdº"êu‹ÚЩ§êsM›Ô¶e=U÷\Уjæõ> GŸm]ßk[Oúë£;zæèd1HßK5}¬Qß3쪟¾³>}¼î ‡ëoýuñ[£Šu]߸Y ìe5¿ÿÏýl.ÿ¯yÉ{fèÙ—Î2ç˜ùÁâP¯ïà…³/8®“Pü=4Juï¹ÖO(ríl)öõ‘±íímë/Öμ.¾ ª€ì=+*¸*”+å¿yé²¾/  8ÜZ¶ MÓÍM€ óàBö €²ç€Äž€ãP`Ýû¨(¥”(ZB#ʺ1 DÓ4UQÍMR{“ Úqºe×ÃþTÛ“Të¯æ~v´ò]\HO&sÏf¾ø²ø«·o¤öj¬B´Äâ¸.U•(޹Y€Ô^Ÿ3§íÑT’p¨eoÙ iI ”ù¶ÌÖUÕ1M€êzšR ¨y$ÁµöH‚RJ€£%tKДRÇ«S”Ú5ýhŠnÕtòÑ”í«S)Ûn¦KÙ¶Mõøc©*׺^ݬúj{³j{õ~Ý®Ötz¿nnVmË£ÓºYmªÓfµj[ÀIL›5=y0mˆºZµ¿§ÎäSic½¹6׫Õï)€st*]¹ß¶ÎVÖªéÑÏf+÷û¡f+÷|ôÌÑl±«úX¶xWÐ÷Œê_âÕÓÅ{¯>}|zùnûºx·²Žu£66Š«…¨] _Ï”Fb« 2yçå6Àõ?]Ÿ9>C)•úMyδ{fy×QUuñ÷‹§O¶m[ª‹…Õàç=óÞë=× «æaÕyਂM<šr8Rº¶Ô‡Uîõ¦Rº¸ÀI=²“’H¨¬Nâ]*Ÿí ­ª*(r²t¢$ÒôÜ3ð08¾,ÿæ·K„@C ª Ž£ª V޶7©ÖËtœÚ%Ô„åZ*ÔŽ!5ýH¢ØÑ€ªí…D"amY*¨8¢N%l@¸¬eó¤½:Ř®lTéuÀ™žLWÖôF•ÚÔgú©teÝ_ëUÛ¦8¹§Ò®§Ò¥ûmëliݰ7=úÙlé~›z¦}4[ºç¯—»ªe—ïè{†]•õ™hš½Ð®ëJ]OïhÖÝ¢F«f}Ÿw퉺“[ëªbÏ,ÿà ݹoì¹ñ›e<ªò·Ñõê„ïu³yºíݯr}æøLÐîc×ò×ê mÙæ?.w?AÙèO<ñgÓm÷ƒÉ½Éêfµ½}‰BÈB·hÐÖšÍZ¸YHO¦û{²A¶rås‹•šF‹-Z´hÑö×6øÐK7—&''AA~óÀÎ7SØ»oè÷SZ´hÑ¢E‹ãЂ 2ˆ`-Z´hÑ¢D)=qhBJY»½Æ×n¯ñ Lw‚oEÞ qU*U×yû[­´ã:ÕÖÛ´ýj'‚ ÈÐ5 k·×V‹«ÌÓ|«ï^­Z¯…—ïÍC]Ê[B]:qh‚u mÔÈËi¯„–,ï·¢×ȧˆGÝc+þ•£üÅãº*ТE‹v4m¤8´¯?âÎr7±U*Èñòuvyæ¶½Ò ChªÛs½{5-Ü{hA§Ú›èÛÎXÎUH3|3txÞAF“¨qhFPЍÙ]¸=¯Ô[ õøÞzyº¯Ï½ÆˆzâÐD\Gç­eâÐïÕ¨Kyg&úÍ|¯Ü·bþÏUÐ_<®ó†-Z´£iàß­§”§ˆ<ãïˆ6ÓQ,ãHö¯(zù­Öt\Mk‘\ÀV.(Å[xô½¢·„‡€NÎUÄ64mZ´hÑ¢ ²íÄ¡yЏUÒâ­<úóCŒvG©Ë«[ª‘÷Þ–Ä[c\µ´º×Ò+èöÎûëxË÷þÅ£Z´hÑ¢õÚúúЬÇv{rFPŠW{}Á(6(x]áûF©‘…HdtÕkoõƵ—¨y0¸ O:¼üî½YA‹-ÚÑ´ñÇ¡½9£Û }ѽ´öjôêxk Š ·z>£ä )Á÷AççªóühÑ¢E‹V´-̇nc,·w¯p‚æC‡ŒsîdyÈøä¦5¶=,9èä„Lέ¥±Ü¾Ú[~ôf7ËÝ´Þ6ªFMƶ··-ÓbÞóò­e=­“v×¹DÛ‰å#¢ûÞ’Ø-úÇÞ B{ТE‹vWXü.÷ 0Äs…‡øÐAºGó84û¦•ôúýv¾së{\â×»âµAÕñóÙÞåþž«ˆWB¿ƒ†-Z´»×âúЂ 2ˆàúÐhÑ¢E‹í Zy>t¥T¡G‹-Z´hGÜ*¬¯& aqèôÁô 4 -Z´hÑ¢q‹qhAD0-Z´hÑŠ]úréÖ­[Ìâ|hAnݺuôèQ¦£~—-Z´hÑ¢EÛmë¸×‡FAAAö¡1-Z´hÑ‚ ô¡1 ‚ }ãÐhÑ¢E‹í ZŒC#‚ È ‚qh´hÑ¢E‹v-Æ¡AdÉÌpqh´hÑ¢E‹vPl±T,ß)3‹qhAD0-Z´hÑ¢•ׇ^øÝ€%·Ð·;?GR»ê{ùýË}oZ´hшÛÞÞ6M“(\(Ü*,ýûB¢F¯¾øÚÅÌÁLùNÙ÷rÌ_ÍH;Q£FºïZ¨y0l˜»Q.|¸]À4,Hé‰nŽ >sæø0EâçC3;w~®mDéù«ùü•|xŸ84ÒÖß™€Ýóhsî•s\S—ffhcÜ…¡ûA‹-ÚÞXqä¶×Êó¡ _h|hæ=öУÍÜ…9öÌX¾Sf)ù«yÑcfqhô¡z˜Ío†¾øÏ‡Žã;ó­|“ºçΞ;wöœñ{-Èà#^]LŸ{åœ×“F‹-Z´àý.÷ò×ËÔχãz{{"cÖ¥z+ÿa^t£ç^{ëo/¡?=jx}h÷¤Ñ‡FdDˆêC7C}åÚ…Wþpö•kg_ùƒØ[7%¥'ÞüÅ¥¹³soýã›ìßÜÙ¹7ñVx÷<æGôJà ä)ˆ´{*äš{Ï,>M1-ÚѶ‡&&Mð”æqhÖ=çžžš|*++e¢À ç&Zò¤~»8srŠw—©KÏœ:qDZ±±–* ÚELdº’‘Á84‚ ÃëC³¾™±v{ "Æ¡ ôdfâÐØÄ¡±©©ŒožpˆB˜Óœ9¥fËG"âõ§EçX´-(î A?;^Ä+‡iŒC£E‹-u©Ø=C½·~<ó¡ÁJ”šÎßôˆWº©-m r”yæ½ÄÄ–ê É< ~ dˆÉ_-ÍŸ ÏÓ­84uáôyº4µGS ”lw™BÅv—¹fÝ3{š@FñoM;ˆC‹¥EÙºZ\e‰’ìÛª–RZÍÏÜVöO*AÜÄsŠ{ùæ)Á7],ŸŸô¤Ñ¢í—]Y)–¾)Ù‡öeˆB(Pè}NŸOÃ>C7 Z´\äEË5¸žûÅ9Ð÷§:¯Ù°¯çpíýšåû;bi·rO1(gøV¢Þ¥E©—}!ˆUê-Áòø~QHª+¨^ob !ß*òe¾¬„íZêÚ.®Ò)=qîõ3³Î\üo ùó 5X–!®êÁG¼º˜î^ºi:ÇK]ʺR_[ô;yþ òÅÌRN±îÓ‹-á»B!gÌ÷ˆ¤¼ûJß*á½O-Ú´lµ ü•´õžO2þó IDATvâÄúŠõ§ò­ašUê:DQë5M4’9¨ëÑóÞ}Ô®4A“º'=w~.úS§TBÄ­ÞôVù¶_ò‰Cò{szÓ¥ÚE/Ÿ‡Æ£x"Êb_Ÿ>¤d´hÑöÌ®¬”‹ßV²‡'½º[qè¶Y¾Y\ú¼`Ö»gê:¼{fÚ¶­âJeñÊË7‹}l'ÒâÃía:(<.²7¿è}6m÷G½‘]ßêÂÛÖÒ‹è‘{ãÙág-Z´=°Dìá4÷žE­xâÐ.…>âBáëÔ¥D!éǧU…8nU´•ûËlëìcøå©]{fäÚë=w/-Evƒ¢³G²GÖn¯E©%¤^æOšðzÌÞÓAu…oÛÏóøŽÊ&B ž„NŽ-Z´±[uöõ¤»‡æŒM’×`búdöÒ?Ìk{tPÀX/.ß]*Ý+ˆrî¹¹Kÿ0Ÿ;™½©HW¯.¦{‡öF‘ÞèlP;[m•דfš†Æ(¸äK-‘Fœù–àk;?F´hÑÆn}½g¦»5š366váühýúG¿{9ÊWÉæ^}+3žv\ª*D´éý:(0ùädâ1µÕfÄøýNüXw{Ä;Ú ßm•JŸÝÒtáèú6)üSh¾;F,<äcgâ&œ =†Í‡.}S¦.¿-eO²+DÝÝ8ôØØØÙWþ=œ¾øÚ¹s¯Ìæžžºö­Fñ¤U ŽKš6¾?•=˜N&Séñt2™J&uMK@ñ–‘gqþí…Âç‘¢Ñá*®‹ÕØ3#ׯ¡ÃË—£È¾c­©gD·XfôV‰)’'íÛ Š9ÅÖ†oõÖ(å :âÈm©=}÷$ТM‡ná»ÜmøÐcccg_¹vñµs‡Æ`íövé›ò 皯_É|h $­§—‚CØKxý1HkŸ||cT´4Vӊ‹p}èèà¿d¸}h¯÷Ìt×ãÐÿòvæ` å;.JÙËmêÒZÛ .ýäããiýÄ©lîd6;9Y,•¤}YWç]óJÚ*ö…R7).8í[š7[8ÞB|Kà‰ÏÒîBüë3ëCYñ,¡E‹vˆmHú!¨(ãó¡!V(ÐJ©¼v»Öë°òËwþù¢*¬gïTªU³Ö6ˆB—ž85Ͳ±NZÚ7¼ãlÚÿEÔÖj'êÛ$oEÃÚ73Ä«‹cô~Y ­÷,¡E‹vX-¹-Žè溻qèííí~÷2uié›ò‡ÅÅj¯¸3Aüç…Å¡‰Bxšž´ª4´ÐwPwtïÖwßn8²Þ&u©¢…=3rëC‡Ø(3°Ñ¢E;¶oqh†Ø-EìøXîìÁ´‡¾µRxþÅÓÇrKágEŽ£¤„lõ(ûVTÔqhAÆ@Ä¡Aè¢Zê~ØXîâÊúwfe½ÂãÐN„ŽÕ ŠCK[Eï–iñý³7%ž_Š[ûV½Ø!@¼º˜Æ84Z´hGÜös>4£ÕñÉõ±ÜÖupÁq€º”(¤²^™9:“×Z-¶d¸ýÔA&®ùЂ »þχnËpX(8.—ôPë%µ §¿DÚ€ýí¸Æ84Z´hÑö9 ­øÐÖ_œÂ͕Ÿ l>4ŸpÅìÑ©›]¸¹’;>Õ¶'ôŒC#‚0¢Ä¡¨õá¤{qhhåýváæ u6L,¡äþ”ªË¢âXîO>¾¡iZáæÊ™WsÝh-Ò%Ä«‹]u,],‰"{ϵ7:ƒg/¿™B¢Fut}ñµ‹ü~Ô¥SSÙ••"QóžE=pëCçŽOn®$50ªÝjð¡ CUˆ¦iDQsǧúØN¤ ˆ0MŽÏlc}è¾[ö&A¤%ÊwÊ™ƒöQš½;Ö‡N<¦æŽMåNNQ×Ñ“º¦i^K5w _qï>$zWÇ¡AZ…½‹‡¼õ¡º ³N°ÿvÿF ɇn{}èA°‚ ­â{?éóúÐÂ|hØÍó¡AZÅ÷~ÒÏïr#'$ ­ø¯G²Gš¦ôÞ‡ÿòÌè|—A |ï'!ßåVv¼çAˆCwÈ[æ ¨Àiª/]Á‰=½Cò¡³“Y6ŠÛ72š&M¬WÅ”¦{Åhc?3ø!¤û×ÞQÜLbº4ešºT«½Ù‡pm»ËýnïhWšq${díöšT&[V™Á·2{íößÊ5Ï#îËVeæ{…´Á»æwxºïVößð¥ÄZC÷h>tÏ .=÷‹É”ž78¸ì ÿ¾t¡@@ ´šE'.N ‡„—ÖR!Qòû¾€ YZ»í&I>4iw>4Ô»XîIó2ÙzP¬»•¶Nšà3×<K_-®Éa[Åvúúо}ª7½é²+Ò¾;‚ »_z7͇îÿÆq¬Í*ývLCs«ª¦Y‚g/&4õÓD!¶+:4è^Ùá]²7܈Eµ”§ÛýAHº¥ùÐMËôÝÊ;]IGÉß4ÝÉj§‚Œ!qèÝ1ºCØã…ù½9wïWoUçS?”4b«—&À ÿø¦õ¿r¾wê9£Î¨–<$þ_)ÝW‡”)e“–º )¿ Ú×»#ß%zGRfP!áåK>tÛó¡«ÅU_k³­Ì3ö­±©ö–ÖÞXîðUËš®i6j‹ž!Ȉà{? ™ý€' »Þ‡^Ø\P÷À³7ÞL$©ª  øw¢º$Q5Õ¿³ž³åå7Ä×’Þô–:?©žÝëõ¾, ß7¨ñ!µxó‡Ò´|ß84ˆñ˜VâÐD!ÌÍåÝ*YÍÝß ÿ8Äofÿ"¶!ˆmV·FÉ€ Èn¤iZÒ»c>t±å;þV‚µßª¹Úéwf¯_X‚gæá¥ëÖ±œ¾f%S h¦¦BÍcóñ¡yôÊWtnB:*ï.Rºä$uòš4â¾mÜ\Ó‡€è>4´;Z,yÒÞòƒjŒ¢E_<¢þ.‚ Miu>ôîˆCg'£ædÇ2Ÿ¾çÇÿøÂK/\»r-‘J€úÎ%HÕszãÐQh£Ÿ‡ì†”ÓÉ´‡³ù ŒÞý„7 Þ84Oá㿸æ^5ïT»¨ÙŽlü6x¼pß6ˆFAÚ{N|·Š¾ðÝÙ½´‡¶ùÐÒã…úˆ:ÿÞü™—ÎPJ— Ëð°”³§_öŽÒ‰úæ‰þR:öN:^$oµíùÐÌoJçIs?[Ìé«ÅqàÞ½‚æC‹g;HGÙ%‚ »VçCgZJQ‰šÞŸv¶ON:¤«c›¼/º½žPHɾåxß„ótùN¹Ë§ A¡EºŸàúÐÈ@ ùа›ãÐhÑ¢E‹ ‰Cmoo[ß×´K7—–¿^¦.]øp<”ï@æ 7¹ëô«^$væ.̱—Ã’š¿šŸ;?—ß¿LÂ4‚ È“¿Zš;?[ú¦L](~[Êž$ HzØ¾Ë 2왑붿Ë-Z´CcC¾ËÝàCn _(úÐHwðúÐÜ{f  Ȉ úÐ^ï™é¡C—KFáËeË´¬¿XAÚ2}&e!ÝC¼º˜Æ84Z´hGÜŽhzùVqòÉ,ݲ©DŽ»±H‡FaŒbzñÃë‹^7ÿbY¦S©Tnüñº½E% $‘ÿØú«—Œ~7vä`ÏŒ\c-Z´hGh}èÙWÏP—¦´¤ÓiêÒä^MÒ‹2Øü3ß:YF°¥}ÇÚ«KúbvôêZÚ1F|çCƒ8/p—̇F‹-Ú¸ì}—Øa»ÖÇK¹ ôã%ûô› Ÿ™ôž¾òïÕOþ©D]‡(@]úÅÙëodc¬:úÂlå‰ð¯XGÙ½¥J;©± ¼OâÕÅt¼qèð#Z¾xe{µ·¯o9m·¤¿g-Z´­Úú.÷¿œ6éüòcæòÍJ¶v\€Eu\ q€E¥.€B(@z_:J±âJVÞDž..¨,.cå--¨ôVä-Š{ÀR¥¾MŠˆÔT©Rï„ç÷6’Q»ÒMbý.·Tr{¶éÊÐ^ËV•æ;Nš`ºÕÚ¥rÚhIK–uÿk·×X ¯®{5¢E‹ÖkC¾Ë=Tqè/ÞÈR—ªÔ¥*kÏ'PkæàMžžƒ7'×ÿêïÓ/¤÷é™7›+ú»â"Œáþ(Ïýe²oEÞ¢‚\ç(Mò}©îÛTß'€¦ùÃ)>üÑ.Ä¡ÅZD+:¸AéÜ[õÕ!þ%ïçxЍ}}k_/™‰ ­-µVj¹ï«“ZÕjËÑ¢EÛ‰Ýõó¡CàMúâ—ÓàRP cn¦ÓûÒ¾ÝsP‡$éðDß­!U´]Q'•Š;òÄ  ÷Ô›¶‡Ñíùм³ JlO³ÿúTi”ª½ÅJEÅÕò(MŠñ„ …(ó¡¨õádãÐQž R{S¤Ö G²/ܼX|£ûMß%´™n/’-^]TX'Š­påy® [cªRªˆ)éÉ4{eäÝ7¨öèšûÄMË—Ú)¦{õjqUÚW*'®–G9M[Þò•••ð¿Z´hIýNÅSØ/hj*ë]ÕjØâÐÙ_^gbþõåéãzáf%K‹úJêÅÓöÇ7òS³ºK¦é…/+†©ñIPÌXêmcD4{ܽáZ½¤¢I“vãÐÔ¥SSS!µˆ6¨öNtPùqÕ{k¹ûW™¢ú[ Âa²0²qh† @)U8O«<=óD…Ç¡gž¨®](å–f%±•Á»UžØ^G+–)ŽóVÔF™MãÐR.ÖÛjã›fSh£ßÖIZ|õ–’—îv½ñ¶–uÏ’ï£F‹mSë{×¢.¡ùÐ_ü2ë% qàÞÔç×½1]¿ÿWæWyð˽݈”èÍ)¥H‚_{kñ­ÈW‡dˆRw—÷xCj É~ì’ïÕÉ|hv¹C°ÇÝe#¨Ãó„”Ï´¢·Ú=:¨µíE\-Z´M­ï]‹(dTæCñF–º ©KgŽÔ…âsip©ó뜔N¨Kõhc¹}ýÑn‰l’„xu1Ýö|hìCKã–y*ú‘bz{ž¥hY ¼R·ÓÁ/žÝ´|žÔÚˆGÁ[ÂO‘÷ÌøæØr´hÑ6µ¾w-:"ßåþâ—Ùˆ£¸™ÖÆr#Ý#Æïr¯¬¬ÄûÜ]Ã’wWkaHw­Ñú.wj¯žÞ§§ö¦ô}zÝsïaÏŒ\LJnÕŠó}¹o=°vwµ-Z´’ ºkíúùÐÑëežô™÷ŠÞÈ‚'Þ Ì€tçCÇëC#‚t›zTÖ‡>ñn1¤{€ï±{îâÕÅt¼qh´hÑ¢X;Òq舘†µü¹Q­Rm/MLæžÉ€[áH8‡Fé6#‡Ž‚óƒc®ÛƺíØ`܇âgvñn¹ùnHL°gF®û‡F‹-ÚžYŒC‡a™–¹No|\!;]ƒÔ>zîïr1”ŽDãЂŒ,mÄ¡wÇw¹;gáÝ/hU5·,MIÙî2€ nš±6~7m„¯.vÕµý]îá³ù«y °óÉ Ô¨QfŸ4öýÕ‘ïr‡sî—'.½ZД” ËDQÁeÏ)4¥%úÝ´¢v¥ štð]î¾!(vëûî AÝKùN9s0S¾S¹kÖw¹}™w!uؤ@5˜7;)–Ú«%'[+Ç÷KÔ»RÅ !ùЇn8¢aüÝ!Ȉ“?ÏD{qèaû.·/—ÞžOiÚÌəӯèjǘ;©ÏüL?qrºß­!$:öïrïj;|¿;Av^zãw¹}¹ôö¼¾OŸ>6mmÚ Àä1J]:s2=ý=¥û¼âö]µ)z"‚äC·n´‚ +!w­ùÐ'Ýσˆ›KoçÓãzîhα©ªê†™9&„d§àaÿ]øªM¼ëe QHËFù&"á„Ä¡¡USx84ÁVvb)G²GÄ•¦v‘‘±F¤MñÖÕ ÞÆ Tó$.šÆ¡}=é݇.– |Ç߆pé×óéñdv*kmš €±ahIMO½ù^“7Ûèw‰îÅ¡}Ëß]6ö߸بx=wøLûOC,wÈÁ×íÅ¡Ozð^¸e[Ï—~=O¶²ÓϦͪ•ÐÆ}C? ëûSMwäK7âÍ"v|ãÐâ(î¶ãоåCÝÃæ‰k·×¸Ÿí›²v{-É×âéMKã{‰šç÷å¥5‘‡æ×¿y/Û^ÿÊvKó-Vª×Û¦ÅåM½»ˆÅzÜêÒ¨áåµÓ›(•±LéVãÐÒˆîáŒC_úõ<±³¹“úÒM²G57Ì並ïkÞ=‡ƒ¹;¤{qè òùJPk·×øzPâêl¥d¾—¸º3ë.³]¨KY9!ûJšçפâ¥I–U‰÷zãÅJõ…xD´‹TlS|;þˆåû¶3z|ªí6#H«`ºÆ¥·ç‰9•.­˜à­?™©ñTæ@Ôïo³ß-¿eˆ)â¯×7 §Kqèòb”Ú{…‹)¢w ‚,µ9d_¯nêåû¶JÂ÷2ó^HÄb;‡ëÛ ¶QNÓôÎÈHWæ8tt~»¨ïÉåNé¥è–=óbJæ‹¿ÛS ñg웈„Ðû84óYAðeEÿ8h¯¦~yȾáZ|IÞyzÛC«%H àô„èMêFNéãÐÃ6š¸éégõÊ7 [ôô+iMÓZêž‘îá‡Ñ3îB𻳢' k·×Ø¿è^2%ó2£xð’ŸÍþùQë¿»Î}h‰;{±Ì —ØRïVß×Ô¾DÏ Ý9LñçC7`Ü·—¿2(ÐdÚžz.™Ú—J<Šßõz‡–<é<á)^¾5J«‚âÐщîCx8Ýe¤ï`€17lm¯¥'³“¸öó`Ñ¥84óJÙ¬hi5K‘Æcó1\âÌi©UAmæû²>&<|/^»Øž 84âÐa¿"úÖ=K¯;îmÌvã8í(U¹ÈRžð&AhGë›3| ¾èFzI{qh`Ç{Þíqèù Ë,ýqzæì™~·ñAò&³“Y¶ª•oš_Ð-ƒ->¥…¬W}ó{Ó¥>¢[ÒÞœ ¦é úþî¤îJê`¢œêðþ2(OP7’Òá ­¦»G¯=bã£TŠ qáCKw¦½«Z1=TqèÄ“(‰Ù Ø=(Ý‹Cݽ¿»¦ôë{«o$v0½Ã¹×ϼùÛ&ß 3 kñ½å…¿[^x÷‹å[eç\ºwt/=vXéWïˆ#ÂÁ¡½8ô¨¬]Ãó¾mWÁÚ²•(¬W5MÍLêýnÖ¨àñÅõ¡¹-ß)_~ÿ²÷UZ´hw©ïx\èÛŸA®áû«çéAqèÝñ]îÎY|¯`n8”@”’í:š2M]P·p´wïž(cü.÷pØòrìçAA ä®5rßåö2ûF¶TpU€u ¦©K À¾/P$0-Ú‘±Aw­8ôØöö¶õ½°tsiùëeêRßWmå;9èMî:±Ô›oêÜO×OT¤§ w<G3kðQ£âðÑ1\3æ.Ìå¯äÁã,æ¯æçÎÏ‹Â2ÎÊÊÊÔÔT—Ú‰ ;Ò]+µ4w~¶ôM™ºPü¶”=žzë·aÝ3„~±xo=²}¶4–›YœMÁÿ­‚ »òræ`¦|§r× ™½;âЙƒÿ‚˜ÿužnŽO66LuO¢|¯¢Ð3t\K£H>4Æ¡¥s‚ È‘?ÏD{qè¡ú.7gþí<µÓ§ŸËÞøØLíM™ëf怮ïKu{¡è¦K匲 ¿Ë-A† ü.·Ìü;yZ?ý\ú֭ЦÀõ+©ÇSÉñd,Þ³ïr{¾‹Ü!^$p>týÍAì§A"ä®5BëC/^¹žP¦Nÿ4»rËÔˆfÚöì+i}<¥ªQûgoÚ»žwöOiºû(‡†ýNñi”¯ô,®÷<€6hehñ­•÷5LS‰…¦qh_OzwÄ¡£C·R¹£úÊW!`n𳝤@·_nGgÄýìîÅ¡`íöÚjq&MD)¡/V<R:{ 38AÎñ® ­Ä¡‡í»ÜÖn„í1{òx&µ/5PCÃF¹{†€8t,ßåö–ϼUÆÚí5¾Õ7uê<‘å‘¶®Ý^ã%0-í%–¿v{mâÐ+A¬Ql§Ô~ïäûþ¦ Ò9­Æ¡‡ü»Ü”RZµa¡?žÌđۃE÷âÐÞòW‹«^¯š÷µl+ËÏÅübiAå‹{±ÿJ[Yùb¾%Ko­¤ù÷}OA$0 —.2n;z&3™éws™.Å¡Y<Ê+z̾¶«fˆbÑ÷=`æ7³­AGÄÛrìЇ–†2ô=A¸À84èOXÔ…s¯ŸéwCz‡æž1ó_ÅÑÔ¥¼scÕÜ»å~°ô&Iò’ƒ¼ê HsøÖÝþÖ A:ŒCÕ|èÙ gÞº’ ÏcÖõßóWX|¯°üeœÞ4 ˆCC£7ÙyZŠK[ÅNšç牢'ÔþpÏ8zNoA† œÝ ?€¹në¶cã>,fï–›ï…ÄDoâÐM=WÞ‹ù¥81÷›Y:gs=¨ü –HÞ|ñìÚ·V‚DãÐM°L«|×\úS\Bë[éËj¿Û5Bt5-呯Q3™Ï™†ÆÑ×¾1lo™b /_*MÚ‹÷ô^oÞ‡FdXi/­ìxÏ»=»_ЪjnYš’²Ýe*uÓˆµiõ»i#„äef'³lU+ß84¿ ›Z1öìMJáùW‹«¾%KéÞZ"–ÆS‚ÚÙ?‚ ½À‡–~ûL{Wµbz¨âÐ!œûå kËÑ”” ËDQÒD! ¡%úÝ´¢{qèÝnJ0‰ùwR‡m TƒipÓÌWKí%ÉÉ5§™B7ãлÚå[+ADÚ‹CïŽõ¡;äÒÛózRÏÏYSößì™%wR×h)}èÞá©Åõ¡)Ðòòå÷/û¾lG‹íîµâ§H6d}èáC_z{^ß§OÍY›6(0y J_Ò™“éìO£äþ.ÿzƒôADß Òw½y¼åŒ´;qèÝn/¾v1s0³ðáBßþ0‚tßß>OŠCÛw¹%.½OëÓÏæ,ÛVbl™éÊWFöx*hïâ<… ©c×!åŒÒeŒßåÞí¶|gý!È0r×Úõßå.– |Ç߆pé×óéñdv*kmš €±ahIMO½ùÞtÈ^¾Ÿ&ö.øãMiÚéŽf¯,"ùЀqh´hÑŽŒ ºkíú8t¶õñ\—~=O¶²ÓϦͪ•ÐÆ}C? ëû]gÖI{?Y̽á–[6ÂH>4t‡®”*´ß/¨Ñ¢E‹¶%ë½›\úÒ¯ç‰ÍÒ—þhNL˜fr\Ó÷EêžÞNé*<üÑÎâÐSSSƒðcC‹-Ú¶-¿×šǶ··­ïk_í(Ü,¾.P—úZ)ßÌÁ^ÜÇ;¬÷ÒÛód3;s*½²b€K¨Kg^ÔõñÀqa!#¼Ào°tçÒ.M£Ô£ÀÜ…¹ü•<a×üÕüÜù9žgSA†’üÕÒÜùÙÒ7eêQ€ºPü¶”=<)ê݇ŽÎÂoõ=¹Ü)½´bݲg^LEïž`»Nxâ¶øÅ˜¥]BÞ™´Ñ‡†âÐhÑ¢E;6$ÝàC/Ý\Zþz™îfzñ½âô³úò-ƒº@·ìÓ?K$ÅIÏׇfpO}hAFчözÏLÕúÐ`Ü·—¿2(ÐdÚžz.™Ú—Âîyp`ÏŒ\w²>4Z´hч YzØâÐó–XúžÔ3“™n¶ iŒC#‚0F.=a™‚•zœž9{»çD¼º˜Æ84Z´hGÜîúùÐI0¬ûúì…°’ }„Ä7z4-~»-™~rßõIDATÚÝn½÷ºQ™}îõÙ¦yLÃ*|V¡›š•~JŸ~2Ô6-|Xìû¯7völ^0Pááâw¹Û°@X˜AÝH±TḬ̀ûžx¯ÑïrË8`Þ·í*X[”l% 붦™Im$ ™|jøß¯¬ôíÐ$¾ïr¦ʵÛdtXøÝBöJVþ]ïöïrÇ‚eZÅ?…Ï k«æ«€[ŸïtWõ'nËžÊú‚äCÆ¡[·‚ì^|×!qè‡À‡îgó»Æâ{……)-ý±L@©Ø°\óH¶Tž§þDÃmYWÝ$OZLAbÙ½øþ®™Ç,zÒ\Û|è fßÈÁ€«R¨P×Ñ`ºv¤Â±¢Ým$ºíùЇ&ø¿Aðk{fùõï’-¼4\ AºŠÿï:x>ôCž8ô0ƺòï-ªO„“š2Íâê^’žÒx¯}$;&¥p;qh¬ïÞp{vp|h¯÷%=qhÖn¯±G²GÂó“äß&öîÒÿßµŸ÷ÌôHÄ¡çßɧOν¨‘º/’=¦þ™ž;žåÙ¼>t=½5;qh¬½FЇ†vãÐb «ÅU®¹c-¥P—z}nI{·²r¸ËñÖ´¯¤}ßx1(=üôŽÕ OôÍæÝ¥¥’E‹ H‡–™'ŸØ«Íœœ±6íÄž„~Ô" É×s'3)½áƒ Ü‡ž84v$;Æ:Züé ¿™åç Á÷‚<é¦&MùÖâVÆ‘ì–î[óÂYÑ#gåðÅrxùܕߗkžÇ·µÞxsô84[0!¾µ–VpñÍæ[Žo!A%­ƒ ˆÆ¡˜g!•ÔfŽÍ˜USUHù~%ûD–ÍžôY+ºîÙŒ­ÝÞ^-n¯ÝÞ®§ÃÄ¡1–âõyþ‰CcÔ¶×Úímß­Ò¾#îC·‡»=É+ ª‹ùÙÌrvíöš×#—´”‡• æ òì¥}Cêò-míöšønÀ‡n›¦(ö²Ò=ZCïŽùÐå;›B>Ù=ÿv>µOËÍY›fbO¢|¿¢ëúxê­ßútÏ û. iæ‹)<ämKZÚÚw;8>tÛó¡¹ë u¿Vô\}ë’R¼y˜w´oH™¼ÆV÷õ¶¶7qèXÞEs{t‰NÓ8´4Zº÷<°qèö–ë˜ÿužÚ㹳Ɔ™Ú›*ß«džH‡/Ýèåìt±¬K[-nóîMòG™Ç̶Š{ùnÛ/$?’(„Å¡¥/ìð­ávµ¸Ê»UÉ[åyĺ|=Wžgµ¸*µÁ›Ç«YëÛ’(ZjmSÛÚéöƒ½æº“¢X9b‚„#Ýß ‡Îz¿&6Ìqèù·óÔ?ý\öÆÇfjoÊX73t}_X÷ :¢ïëÍ#¦D)ad}hh+-EmCJö¦p盉(ßÞhï1QGd÷‚qh˜'O«ã§ŸËÞºUѸþqE<¥ë 6Ù±>6x{âЋ×ÓE Ù?hŒìòü<Ò,F½[ûnLJn;-Ž‚æñZÞûŠñi±Þ Ÿ–FPû¶YÒbl›‰ˆûú¶6¼ÒosLê¯Ü©}S¢¸Ñ¾%ÕÕ´4e†3Å+×ÊÔÔOS+·Lhæ¦9{>›jæ=3êO4Àûf&øËj!çÎEqkíàøÐÆ¡½%{ÓÅoÉ·Ó¥±ßb©„J¥rBÊ jOPÚ÷ÅrÄÄqSnµ‚pZCÛ|hº•ÊÕW¾2sÓœ}%K‰Ò=ÃÎ ·ð»Ü­[Av/¾¿ëšmm@á–A!º9ób&µ/•H%šï‚=Üvp|h4®ݪ{m.s0³ðáBŒAzŒô»‰C+PïÇ ­?awç^o§{êÒÒ7åþûIÝ·ñžö–ΰ¨Igó¡GÓòs…-ÚÝn¡‡œ=¶½½m}o±›æÒͥ寗©K}ÒËwÚüx‚0æ.Ìå¯ä |§,¦ç¯æçÎÏÀå÷/…0 2Ä䯖æÎÏ–¾)SŠß–²‡'Ù;NQww>tþ……wCl\!»Ç|h´hÑ¢&ë;Š›éºp³Pøº@cò¡óï,œ=ÿ|xž®~2÷wçZ(ÙÍx}hî=3ЇFdD}h¯÷Ìt·æC/¼wýìùçÕ„ÊþÀß¼ô7Üòô³çŸGOzt¯.¦q>4Z´hG܆̇V€°&\AÇ…°ŽùÄÉD!3'gžîùO>û„٥ϗ¨K¿øü 5¡œå92ˆkÒ8ZÑÝw»ð»Úï!$hÑ¢Jë½×ùŽâ&]M] Fżðê…+^¹ñÙ )Ã…W/KO'¨ßô`_Ž7§øiâV%RáHÄ¿5ìùÐ8£ AØ)–ŠÞÙ+¤÷ó¡ùÓAöÀôµ÷¦›æì ¸^^!>ô€Ï‡F‰—…ß-d¯d¥»M¾ËÍÊIíOÀÎÛvÐ>5òurXo*j–AZ±ê.²”ÍVï‰^HPbØY@‘|hì84‚ H¼øÞmú‡ó;+µ?qæÔ™Þ½Fxùĉ×Þû´å¯D.¥ðuú¤­¾…ønõ–Œyt$5>4‚ ÝÀ÷n[ºX‚ ¯=g'rrÚüΚçK¹öÞêùY];9c!¼{¿·Ü^'8bw‹½rćæë13Ön¯Å‡f%‹—Gа† Mx… "!Ý߸Ž!ÝÒdh?šÄåCG„½¿Qâm´—ćf°E”'MLš`:ʾG²Gø¾Mk‘^À½­ ƒ Âð½Ûôá»Ü¬œÙõ-ÂοóP®½÷î=¥IÌOì_£ôµM AúŽäC“v¿Ë-– jÑ·^-®²ü¼K·²N¥ðœ^ºUÄ‹ ¯=A$|}èïrw7½8þŸ³ë?J\™‰7ÍÇŽA'X¼QJ¯#–ÓRuHqÅ¡}KcÝ-w¬d¬Ý^ãy¸Ÿ-f“Zâ[ Cêk¥‹ ¯ A¢ÐÝ8ttxzþ“¾SKi5-݃65ÍÀñð*BjŒ˜ '®84+ûÄ,T‹˜Gò¹}½gé!5$¨ì;ˆAzDá„Ä¡yÏ(êî·îo4º‡ö-9¢ŽR‹¯£ò_þÆE|õ‚ ¡qh_;¸qhdøèFÚëõ†è }›Æ¡[ *ãkA| ò¡ƒì®ŒC#»”nÄ¡›Æ§Ctø¸îÁø4‚ Ò}æòû á®B·âÐä1ºðîâ¹_Îö;p¬–øÅç_HÙÞ]Ôöc=*ć–ÒÙØlœ^-®zkd±ç#Ù#â¸î(qhð >ð2IA¤ñþVÈ=kîCw#}æÔ™ëŸ]_xw1¼zm?9sêLçÕ!»‚¸âÐA#±Åt¾•'òœÞl¾µ@¨eà!‚ ˆˆ'M§¦¦Bòw+ Øõ"qÅ¡{`Y#±ÇE$FZ½¿=ž8tbBâÐÐÌoî½E‰¯~êVA¼Ä‡î-ß)_~ÿ2B¡ÖfÔ¨Q£ŽEG¿u+ ^âŠCwÛ^|íbæ`fáÃ…^œAFŒÖ|è.Å¡DbÅ¡ËwÊ}oZ´hGÜŽmoo[ß[즹tsiùëeêRôn0wa.%å;e1=5?w~.¿™(„iA!&5Ÿ=œ Ëý@ýûص~ãÐHw >tæ`†¥øÆ¡Ñ¢E‹v¸-ësCò4øÐ…›…Â׊>4Ò¼>4÷žèC#2"Dõ¡Y_qh¤ÛˆWÓ,Ý÷'Y´hÑ¢í½mêCwë»Üâ…Äô]îX,ó×é A‹íèØ†Ù+.%MÇrã|h¤7Pááö}>4öÊA¤7KEqöJSû€g>4 tâ7„gÆ^·ÆëA#ßñšùЇFz‡äCC¿ãЂ ½Dº ±NÚ›Î-~—é’ žtÏ,‚ H/‘ßäEñ¡q>4Ò$ºíùÐlhñŸ´Õ›ß[NÐu.®ñÜ!1Õv™Ýh‚ íÑŽqh¤7ćf¬Ý^cÿàHöˆ¸uâЄ7ïãÐM¯ÄîAFŠv|hŒC#½!®8´Xu)뤹'Íýf)¿”cu¤¥!å—„ïV±pßêB#6#®Ã J‘ÚÓR2R`\âŠCK%xËç}vˆÍÓÇÆÆ¶ëH}Ortáù½µ°l<³o3|Ë䉾a÷§iɬoi‚Œ8‡F—¸âÐbiÞ”Eë{Gy/-á¸#•èEuïp‚j‰ñ0døÀ842¸Ä‡ñ¡¡îF³ø´7Û×ù¶qS‡/x;é&Û#äp‰ŒC#ƒK—âÐAåówÝÞüm_çáNg‡/x{ßSÆâC#ŒC#ƒK—âЬ^»½æÝÊ:i)¿TŽHÓ.ªm§³/_÷A6À842¸Ä‡æ“¡`µ¸ê-OÚ[¿ÎùÛi6ʉ— ¦G9:ßB|KãD‡[Ìà›^uxEmŽ7PÉ‚D¤UZðÄ¡ñE7Ò|ãÐ +½D‹C‹ž±·|¶Õ›?$4Ö©¥~È›YJ ê¹£gˆØ¼XÇ7x Cp0 .qÅ¡ã²Ãz´²[À842¸Ä‡ŽËöŒ®ö Ø=#Èn¡UׇFz‡äC÷}}èb©˜¿š;/½Q£Fº«:ú ãÐHïˆ+‹{m.s0³ðáBÏAZõ¡k™0tɇfÞsæ`†yÒ¾š®Z^/Z´hÑ ÛÞÞ¶¾·ØMséæÒò×ËÔ¥èX Ý`îÂ\þJÊwÊbzþj~îü\~ÿ2QÓ‚ CLþj>{8;55’çC#½ƒÆ4-Z´h‡À²>7$Oƒ]¸Y(|] èC#ÝÁëCsï™>4‚ #BTšõÕ‡Fºxu1ÝßùÐhÑ¢EÛGÛšqh¤«`A„qhd°`O…\c-Z´£l1 ‡Fa`,Ä«‹iŒC£E‹vd-Æ¡‘¢«qh¶ ¥— …°ÚC¬¥“’y9k·×øúÖ¶­¥ª{V‚ ¾`,ØS!×ñÆ¡×n¯­WyÇô¸ntËœÙ*–’³i-¼ÞòöŽ:Šå«h³^o÷jD‹m‹qhd€èMÚ×G}Vo"¾¬7[H±AEI»ˆûJ¾¾×‡öfj÷Õ‡&|!(Å·ºð–##‡F ñêbºqh±|f¹ÏÊ5u)ï{D_–íäÑzK–Êç] ˜Ÿõ<]òò¥’ÅV…œ7IOš`ùÅ7âQ³2½û¶ÔòÿFhÑ¢¥|høŠCJÃ;$x}hq…«(veeEüÄ<{õ-?¤v:¡ }ƒÊ‰X>4: m´0ŠæUÄX¦oË+¥ iI´hGЊw*žÁ÷\éTxø£¯žLû¦óò¥ñu.u)…Ë:é }¹÷ ©±U-•܉f¥É 9ç¶6蜣E‹¶©mã÷!ÏúЀ>4ÒˆßúÐ >QF^š]¾¾[źĔµÛkìOîAû†—ìMoUw^‚¨Y÷îµwÞZ´hѶa½w­û³‡FzõømÇ¡ÙÅí»U,?(…[Þ™EÌ)Fd¥¨m{:h«äñ7MïF‹mÛÖ{× ¹1ûÔûjþ¢¤;ˆWNôzÒQ,mŇfë‘쑉CÌË$ ašÌòæô–,•ã»—XZÐQ{[ÈSøs€ä¥Kš·„%²£àûŠ/ÀÛk9Z´hÛ¶Þ»VÈ}ŒYŒC#½ƒ=rÝa:È®W½é<ÒÌË÷¦xsF)'$]lIæûz÷Ï•˜.æ—ö j¿X¦oí[Ž-Ú^ZœôŽçC¯¬¬„Ï#ܽÄõÙ2A é®…ó¡‘Á‚6ú…Ð8ôn·|N3~ù -Úa²Þ»VÓû~—é1~—{ˆ}hA†’6}hü.7ÒØS!×|—{ˆ}h´hÑ¥íÔ‡Æ84ÒU0 ÈÈ‚qhd ¯.¦1-Ú±‡FŒC#2²`hØS!ׇF‹íèXŒC# Æ¡Y0 4âÕÅ4ơѢE;"ãÐÈ@ƒqhAFŒC# {*äãÐhÑ¢‹qhd Á84‚ # Æ¡‘F¼º˜Æ84Z´hGÄbh0 ÈÈ‚qhd aO…\c-Z´£c1 4=ŽC³ÒØÏ J™Ãž–È_Íó›æÅ×.ö»9ƒ^]­Ò†­@½'Ç84ÒmÄ«‹]u,],ƒž.Û³ù«y4ç^£@>\àu ·]¸ºÀŽ—Ÿs¯žcçdDÎ@Köòû—¥ æÜ«çü‡ùòò ´p ,þ¾zf1ôŽÞÄ¡óWóÞZ23pîÕs .Hµ‹Lš€µÛk-mõMg‰^‚ ‘6΀·µMÛ~®Z¥§ëòû—ÙÏ{ºØ~ººÑ¦çv7^]¾?è óKûò³ñ¢õÒƒó‡FÚèCw5],Å”òr±Tä×vÐ^ímõM_»½¶Z\å¿|¦W‹«QŽŽÛ‰C‡&¢ç—ÎÛýcg ü(Ä67­7ü\Q—²z#¶V㇟ÿèíä)Ò Æ³$i¶WÈQGi‰oíâùgezkŒËúž¯åÛN±…âQ³ÿJgL|‹Â£FˆÇæm[W¯®¶_b-ü¸¼mù+‹ù¹–¼áèmëñyƒv}臀?S(µAºƒïÓ+ó¤!òs(„>{R Rù­øDÔÚ(:ÊÓzH9‡&š>é7µADÙ+¼­ž(:zK¼%0ÿ¦ó3ÖÒ™á÷è#Ù#¾¯ 6HízÁSÄàè€\]mÿ¾ø¯Ì÷,Å¥Å÷7á>nÏܵ‚îcÜbéÒÓk—âÐb]-ùI<Š žbÝ7_ß‰Ïæ’§Õ걄ü~Ûð¥ó~¤#Š˜'ºÏ*¦s_Sò/£i{çSòƒþ^Þ«x]…œ™3ßê¹òžç¸®®ϰ—ö~eáçÇ[þ œ7ß»VÈ}ŒÙ‡@*a ­ãaòÐÐîÙ¥~)yèƒ_&?OÊt´7Ò­æo}¢hŸµð—?wWòP31™¹¼<Û*–Î噿x“™³×g¿ìîìÚ’ÕsÕ–x‰m—ñþXr_ÿpðPDf§3-Ù¼¿©ÿ¬Õ†ˆjý.öX)ïšÎ¼.¦…Ÿ+l[z Q]X½Q+EÉCC{¸“¿¼­<´=ŸÝò”’›¨r<=žÎާÇ"¢ËÈ»ìÕT_¯ï]VKÜ·Uöˆuµy³ò¡(êjú¨e5“+1™‘¹bhh ZFϹ¤Î1óäÙh.¹{t¯ …%n”éÅÙa‰Æ»^œêÕ?;é%­¬6{D·Nï¯Z‰\‰ÃVIQ”\Ö?á_Ý8><ŠÛ6m-‘7Š&jú¨e•<4´‡{v©oçyh÷ˆ•%n,k#K- £aý§–§1¬Í‹h {Ì^7ïoFZåÅâaK"í´ï-<ŠßÛÖÞz\‚¢ŸŠÖµTÉCC{\žiŽ7KÊCÇÕ;be‰ÑaYûåêzV·þ¼=ÐÂõ¤÷LXCåï(ŠÆ52j•ÝBÚÃüå]ÍCÛ ¡+Û’ÂÏ’^bmé>½žÄvÚ µÄFÌ6ªN©EQO#£–û‹—ev:# í¡³Eë;›‡¶_I+ñ(6½þ”ÚÒ}z=‰ít+ÔrÛ!n$¯EQO㣖ý–)ú5$ íáž]ê;˜‡VµW©²××*·ùÝôwÕõa=al½XÏ„süø+Q-ÔÊQ+¼Ãƒ<4´Ç噿xsKyh{3”ýkx—µ8ѤNoÃûœÃšÝòÂ{ÂkKñ…õ¸÷ÛÏ’Ø3ö½n› ?…ûÊ%>GŽ¢+¬)£–w_K&òôlÈCC“¸“¿|ž¶Ó“©ÉLaڞЕzöúl¼?6âü }ÝÛ#zï=ž‡µéìÕd~KÂr÷N攚ãGñjsk(óe­µ¯‰´°ì¯aËË>‹-¯ûÿ EQÕÊïërC{4´?´.ê'²è@ ®ËšÈCC{ä×chYR:²ª­Õºõ£(Š.WÝQ+QÙÚƒý¡ ·„1ôîÎn|w>òÐÐ:+´¾,=ÞKKýáËC#&—ˆɯÊñx<¾i˜2F…þðå¡õÛ;Û"²ýýv$ÍóÐÐ&3®/{ºrÏT—Ý~ÛÝy¶ü¶M_ < /¨Ãá0åžÅþŽh¢wwg»?þ~þ÷¹ÎDÌÝϹÇãñø½½|Þ|ÔªÔµõL¦oÞ½ýçÃôÍ;“ÏÉCCSä×cèºër{ëBçþ}’rt4=|y‚ÇãñÍyã–E)£Vâks1Ùz.&[×Ú¦µ–‹C‡Ñsd]n]Ù*C›Ì<úzËÎvñx<~‰~±ºpìJ܃`m=“|~!²žÏ/äêªÐ^ -ÉÏC{»-•ÅÐÝ™eãñøÕó ÄÐ:pÅÿ‹èe -"6†nl|†¾ãÅÐ’–‡v×…ŽÇÐ]˜eãñøö ÄÐJ寀…zCC“‡††ðbèÄçÙÈš€± ,Rk #N³âj0"X©50´M•‡€±°>Ÿ /DÛ|’@!á€@d¤ˆ# ˜§¡t“ˆö0$©; #vÇŠòŒ$v pÀZÄæXK,€£Ø¬QbS0‡bOýµ,`ÒˆÀÚL9ˆ‰`aÂÀZ—ùˆŒ,,“K0ðÏ15þBá)gÊ»üŠt 㟔(üHV!¿i" ¥‹ÊØÔ‘¿Ž…¯T–s©LQY‹ˆaùÄ0€ÏÎ$\Mà è«D®r¹j“¹"P(“pUw{”[Å@bS±‰Yz±€Äï‰bHý}ØÈÿ ÄH(áZD$ˆb“†\QÃP½õ?¥œGN `0HiC¤¶#C7e‘Âú÷+{{C#ØÔF–ŽŒkÂZ,yEøkqj‘‰$µaþy™ÀbGÖï÷/@ÉQ‚\£\üƒ†lddå2f¨6úí) ­“«ó&óšD°©oÓøE6Tbô§{ÙC£ÀF1üûÎÏ7F %L#‚EˆÚ JÆ0Q‚4ö7+®×!Î5Ú²y?/„Þ†æ"”Rø*$_®?⢙lгà·2‰¦3Eì“rí°EéѵÂUØ8‚qM™|Ï"ø†®öÂXn—RØH8>]ËFƤܳ¸Ë÷)™†Âø÷ËW˜‘5®£5™ËùÆÐÝ—huc¤~… ­nŒ@â+-Dâï(2Õƒ»!D±M$& /„ìÖ©.Àb 8€Ì Žl¼†Dn„¾ÕÆ@¤ˆaÁ÷ª'½¿¿ŸËÔX÷ZåË`Éh™ÞŽŠ?'_¾3Rrñã¯ôUc®A/VßÈ5Uþí…1€M­q]‚{ \[ïÛt nìRk#C½Ex—\ý£t銑¯—®û±îÒ‘Ejû3¥+F.?Æ&BÌ휨ֽ¨ œÚ&So€T9¨_R,R°bómGÇî%P?šØ5à1Ö`‘¸Êm×ÜÆv ‰IcX$®ÃöyMéÍñ^ŒÔ)•Ðé†'æúË€506 ûMj-ŒkjmäºL×=[DÆPgS 5&ÿˆ§–#£½ äê!Åx¿S]®å²‘1)ÕêêLÊÂ=ÔWýåRÄ’ÈHÄ{KÏšÕ˜‰#ëd7I1 ØØ§$u]¾©r¹úÀÄšÖ©ólWÊå {n„zëžQšÀ·q‰Ma¨6ˆ `£ÄøÆ46)å7‚o@Sú3ÊÔ"nÄèÑ»ÊàŠ8âÐÙÈÖß¿‰î¹»w™^„7ˆ›uõÉ6êÒlj@ã+™p×)lD¯! 'M…f(ñ% ÕX DV($ߎsˆJHýsjÌÆG@²fp„˜¯¼†äâµ\ÓÏ5–nþ´îO¯É¬õÙãû‚uêÊߣµ‘50a?€Ó˜•€AÃYî8Sÿ¸t¶ˆ‘ÂD‰•Å^»þØ" 5Á7 ‰á«¤±è؈ޗ~²¡ÁÜ[i}wž Õî˜{+-5,®Ü\[íÔ|æ5J…^–pÃ`Ê!·«Å N!åçîÏJM°I ×n#òƒ+1¶’—ô À-Oäj¼5‘ñõVö8$Â|9D®zY[òâð]C ž9îÄÈRö¨÷tïidÂûK–b\IÊÕ5@›ˆÚ„ÄÐ÷õÄ—@lR¯È­k4ÒQ‹Hy@(Ôxxcâ#›Àbn-Œ{XÀú ׫²ž/µáŸ × j«¹‡Í¼q ÔXŽAvûãƒ;®¿Õ}§ýÒs?«Ù>rO^λ„EdBšúq¿{'-`R߯g›]wŠ•£CÀ7a¾wI㆘aøÂBÐø>ÏI ×â;©çòFl ÁŠÓܦ»7ĺ{Ajn"¡ÍSÚN `“ÈÆ0qŠÄY¹Rgw±îå#›¤¡êøÖ{ nI"$i‡G‰ŒúšÍ£¿m@Ã_ÀÅv @z{ß8ÆlQ ×81nÙŒ±!²™F?òm¥…u ?hqBÏ×÷Ü®x-Rc#iœ fÈ@fÃÝ6g›å{h(-|Wçj—°©È¦‡ lAŽž¬oåY‡¹w¯z¶Lg$óίCã!IM ;›( `ØØÕ‡ÈÆîÑ{ëe„jc¨¢‘áþ ÔïZÚ¦™¡ Ò˜zSî€c¤‰ ¶ ÈÆ”ÍcàÞE4Äl_aíeÓXt6™!¡\HÙº– 5½&3î¾\¯Ì)9ŸºÖÀªl¾³¡‡.žš¨´Gn+Ô"zIÉ^‚Ô$pæjÿÚ&©iˆEÆ0‹#_‚ñ’5$01 åcê-\ ‰]§ÂµÚÞB'ÊRCÔa1˜1©EdÉàA£‘‘*Ó?|½åÌý­o"zkòN)¯}­ÈÛuœ‘ÌU*oY-ß>¤BFEÊãê0üNý‰8§Tf^$YËýe0ðYTØÈÃ@í§>¥HøYpzjÀK.7$ßUDˆS›¤ˆÝ‹Ïƒ´€¬õ~À@­2MWi…Ü!adéé¸.…2¿¥×¢Ñ¬ëÂ|KèjˆŸpóÎêïßSדm ´‡­âÖ‚a Û'|«ÂfQ÷(ƒ Öç,ö{_C€ˆG}9;k¦@‚ƒ06Ã`Í–G;ðïc ŽÜs´qdœù3‰¼E#¡·&‰ÜõÁ*–·€Òí (û¿?‚2ûÁöþe÷_F:þâßüÓWqgIJÙ߮àý‹×ûwðî05²p&²dêÕuáÖ¤ÆDÖF6TVˆµâÅóÝjj?ÛÉËMëÕ¸Ã;¿N¾ÿ³l¹wÝRR”&åÇpEξ·~üí›§€ŸÕ2±3¤§ˆ# ‰¨¢d ó-‹7‰¥1 b5F]bë6Žb ÁZbÝ4%à¦/íQŒµÄ Wc0î IiVÜ} àíÕÔ0rxšúÆ”:BÁð£aÞqäÎrLÎje‚ar"Æi##ò`ÅÕ©)Iir'Ô Xêó|ã茩‰¶†ç¦¹ iPsO³$©ÕÝal3÷ïyj­Å·à@B}|, ŸÈn8Ó©›Âƒ~ªnUQž"äþ•%fêu›u_ÄÖ5šTLx^¾b¤‰›YpsÞª‘Ɔl!4‘Ã7âng¼@yÈ £0ƒaþq7^.~^‚Ò°‘EjÂø `ß—"òŒÛÃéEÖ¦¶Ä²+ ‘ï˜]i»çè¶ãH ¸a 921¯ÙÀQb’#šÊte—Sc ›I|€å•Ý£¤ÐXáÒó7JJ.L–âÒNm#qLA‰!œƒÄ¤±M‹Ä 6,»#$–,y=‰Ù®Ü”ev#4¡\=Hâ¸÷‘ÞM÷lÜtÞMÂzkºŸÈ³‘èþ±:c§ 6$j]mãŒÓ¾-uêԺ·˜G ^jóŸ©Ä5NTC¸:yÃ?èet;iP!‹òMqÅBOÊP#ƒÈZV*)ä¼Ax²Üc¦Ô™’iÿ™~ÍR ê¨ÖyWBðˆÆÁU¡4F”Ø(1i $Ö·3BÖû»‹Ä;9„ôýµèºþøðˆ× Ž(# X?È þ&Yü|¥/EÿS“¤@dcÒèÂ8Â/¦¸Y .^ô­´¨¼rñ£owü$g1%‚ì­_Öì×L­Öõš…µY·Ž>þÇõÖ<÷–-‹Ô’ð/ª¬·x^9u?¿`ý©WÙ²íÆâ .ßwÃÔ(32OD4N÷Ö²¼qØðh ÁÉå<#où"Å<ŒK Í7²PuFÆÕ©ëk…&޳£…0 %ó¯]‹ ©4X×%¯%d^¦.ÔçÍc¥ãB®4/‰ÂͪøiAV<–zèÐ|7Kè j¹¸ŒEõíQ”}…`DÇfƒªæ‰¤rº'³a^ÀŸè½}—I×wÏγÅCáùJ8Ë ?ÍÔ=?Âf[š4€ÑpÜÔXÖ% %ï !Þž$d…ë Ó„» ?/:†ê@›ÔW!·Ó¸ ’øˆ\ûH)UF›‚½F¨у‰‚Añlr¶Oõ%iA¢*ÜlÄC|kR²úÐ(¬KÜ¥3pF†­­¢÷¢<ÀR»á,6¸€ªPjZç0€0¿ì§ÉJØàT$Gk6^s#xK•D˜;f-3óà ¿2~À#)LäG𔾹scWº_š· šÌ~T®1ÒDøîð”:×`2 öT gmMÆ6ŠM”8k‡ W æÕrYÆuƒvK3ëÒÜzP{Ú|*1²ÃÑÔž¬?ÎHƒy'áÁ•›¦ˆhYE¾bª$ì@Âî"1UŒŒ'YF!®`ÁSÙ‰ìÖ8a­›ŠÄ›ë;BZáÈ#Û0öWj~ƒØuƒRžÚ½*5ŒiþM™ÍD%¡[§q>üg-Hš Ô&D°ˆmê¦S`ÓŠ­³Á“Ä7)Œkd|“B‰ÀõYÖæ‘ ãðke’5éÖI#aìÒƒÈ&©EjbQ7hdeÈ—·Ð•d^ULÈOmöûi1\KWYS«=·uî‡Û?€Áõÿuux2©ow’/ßI¾¼™|ùŽ@S¥a)&g¾CcjÙÆDÙ¢¤wÏ!¦,í‘qmRt÷¯~~íðókÝýk8Ü¿v¸-Á8Üw¿ª¸™öýpÿÚá½k1¿káE2 yn÷Vûi7:\erM?É2k üb±Õ*v¯P ¬‘ëÈ…ÿ(ÎLbʼn]sR1{ä'§à›Ø †s"¡ªi²®E@Öº pÓ@Æ`›¤Fß=;WæÂ=YØèWž§öù’PÈFîâk¹Úʰ%½… ÐýÊS*Á²"ëU*ÈØ‰È/­Èº¢àu f‘“hƹˆq;sïFr)ßZ(EûŠå.|_(ZyªaÑF0\…Áz#…qž¹lêušÜ·Ù5ÞûSƆ'³rÖ² Œl(y24Z'šùI±ôñÔ˜Ô{y‘!¦{À‰8=ÍcQ‡yâOx,°)Ô¼¹ ‘%Œ½ˆ¼ÔÐ{ Äk~lí?2ɰfã5“Gˆ×¬…:ÈL^)+]¶„]$Oý2êD£0س0HiS4tl*ó©¦â5ñbßYo$£‡ÄHë|ø ÄØ¦0®—ÍxÄ k™«Ùö!EÞsÚ[AüýQiI=í¥Ur<åâòvAm°à'8ý°zn¸î…u¦kçƒqn┽‘¨S÷ãj~I+âî1OYÀóμŸ%ÏÒ’îôû…þé˳…·´±Îúà{OaqÌCÍèAøò¡·•ȘÄÐ4FD»ŸWÁO†:K˜I›z¿1Ñ<Œ(Òµâp‡G¢ØB> ÛÆœÍLL5ø ^žÎeйýE6u#É 'oѶgÛùEñÄS›91WÜS¤oØ‹Z;Gûíg·°ýƒs[çnüÝçvž;·uîÜÖ¹üÑ9F0©p¢§¤…5¢CõÞÞ#Øaü—fAjÖ´SLl¥ÁŒ¼þÔ«ë­WÝ©<ÅÞݿƃžîþ5ÿ«KÍÛ‡}?ÁU9áSH.€¼R½ \ã}5@"(él'G„§“]nÃ8•8;S“I佑˜pnŠ˜ßÐ:P'%õÈ”‹”¬¶.ë©Øã½‚¼x¢+€ØÍt“8óC[È:Ī[ø76´ÔΤX”Ðùy™ÐÙû…´° Ù~d©Aê&›2„¿³Ç„Iž°#«€É n)UÝ£4iX}Þ µá}†ÞXÈqZm˜ä±÷ F²fI‹›ä€ÍÇ¢Î$n­eĶªr~T@‹K¨¾Y®xâ±pî³^ˆ ßwü\ìV¾œ‡P—’œ €4qð1õ¾•ˆ‘ÆÆÍe{u›=†ëàmn”Ìot9Ù…ÓyY rZàµVT8™wOúÎ;#ºhuAŠ»c+› ¼S±—eÁ+€\GÂ+æoLØq½™SìÉØBKâp³6®#3‘…×(ÆD~íB¦ÞÊrpKÔéZüvÐ(]ü“÷¼¤{ 25Á¿P ¨¶ðü+=2wAØÆü‘¾lxÖÒŸ.½N©žðPû£0¬ Ë>l°,„¢‚%ÌÍðÄG4È¡. Gðï`X·îÚ[“D©¥A>"€|@y‚"ˆ³bŸR6 />ß+þWå,›Ûzb‹^Üúß·6>üèÃZ­àÊ_\ùà×lll·ðË3×¥ûå;É—ïÄ¿‚ÉAfÍæzóg•ûãæ+®è\GzQÕ¥#ןzʼnƒÃÏÃaõ§^¥÷ÜP{mX‡ ‡Yt÷ߪ·^=Üç:uxO¤vöU~„ný쫀ɳõ:`ï¾à»g_ÿ÷{oÕ·^÷(24¥å‹0l„>LL e‡ûWÖ"LY𵨅_]þí· râ2b+ª£¨¡L„]Ðuœ¤¬8@zÚ\°…#HÆ3†ÚVøQrN„‰üp¸ ž!õÊn´ÊRŒ»vç†q×&>¢?ÙÄ»Q nÊ@æqD~­µIR‹ÔÆÏyrÄȰÔ:ø²O€8,S0âê&ô7°IÄÿF¥ óU#vÍÐú“ÁÌ ÅÝ‘·wòg…åKÙ¯¹àÜuc?I1“zFú˜4“sZ'ù¤|ÉûrëéñàRš‹ñ·ì~uwÞ\62QÔ›q£Î^ËQj’”,aîÑÓOÄS°½†;2XC™HÖ à£`°Ó±…á{SlÀ™¸Rrÿò«,}±@ôÀ0>¨åmãâŽ5²º"[{Q«-Pé·N¬³³vÞµŸºÛ4_A+@:rø©p¿`SZæ\-òwçoÙ/ĶëÁ´½DµÂmÛˆ „ài}ò&?‚£ÅËÞµ I "£šõ®ßȬÎñÏšJÏ;ƒ§V`¡äÑ~¦ Á€\kFïo^“yÏ?Kí-M ¹‘•~ÀÃLêô–Ÿ‹÷|ãFÞ’ÈÀ¸O|d¿?­°1Xó†€`3#×~?#!z9õÌ‚I^ÌXÈ¢aVÑálx¤~kíÎù·}å/®t{Ýlÿ°×üâ;ŽÛoØWž(ŠC–Žke’/ßé¼Ó v2>]®¾ gÓ–ß>üüZ—ídô$h À#6aë­×ù>²ëüÌ85,§èuú÷{ׄÌïüîÖëß=ûº3§S£ :rÙÍ Ax)æêYÄ1æ#ãÈ{†a^ªµØG‰³÷ZG u—qèÂÝÁ‘|EcjŽc_€©,¢P¶dó¬¡ ÙZžOÈîÞä¦o\‚ܬˆ^„+\Úd51adÉ“Y^iy¯59UÊëpé.¬XEO#÷Ž4#@Îaƒé¼… @êýQ|Ó!IAñ,ü$&Á½½=ÏAx³×0;`ù?óÅît’àâWaö´p2õÉ|m¯EޟחahyéBÜa‹Â!?-ir“C>Ò…ËÊt]tGy§. ¸Ð^ä ÓÙŽFâ#àÈø@”k$ËXù:@áÃrKºŠlå#÷è½?œÛ“HˆR ÃÚïe —<ü]‡«¸ý‰4Q¢+8†0ØEÄ4I,À€"ÇæÄࣃ†ªKÛr ,2N&$"½ÄwÎj^r¹Þš „$5?Ûë_fQ–p(ÉX\…g!ØG0IÔÒÃ"×o1JõÁyøÕNÛYq-®{að =VËC†Œ—¿dÂ'Sq s8èy…þ‘à™67ÜåŒÈ˜ð¶L¨.;VÞÍ?RRíðÓÙàU–QBa•b›Â 1²ÞãÒ4âuð·´† kÎiÌ r¬œ²ä&Ô7¹,2àíÔ¿¹üÐ3î Î©È‚¬À•8grS–C)·è]ÚyνƒN§V«vkµÚÕÿ÷êÆooÅ?zë_îþì{îƒ_Çïð!a“/oº-Ž+›|ù޳Š!k-3ÑŸ‘Õ3 È´€ìôêÌc4;@+Úñ{X¢ÙÔ¬·^Í©x¾h½õªè?À/¼×X_…,›?ý£\\lXé7ææ.Çô!»òtëÃßí¿þчίßö®njýkcý¿Þ<|©þ]´Ûˆ·žÝ¦Ã-[°ãÆ+®.:™ªlx3ÌÝâËä(·,% -€Íï1x7e¤æ0|VÚD“ý5$– ‘@Á?3¸V€è¬ã!ª©Vgâ¹ÿñðο3¾¡V#A?/ ·ÄÒ»ù[À¬%¬sç—«,I–ñˆ™§·B¤~?$¥Üd†¿h^äZ#ÁøE²Bè›YxX)‡0ð- KÄðahT ? ÿúg{xÃg—|4ɸ¶,HÀ߆ÐC¡3㥣¹áݪ¢ IDATE^œ…Õ×!öÄK“Àzgð”‡qâÉŠ…úÈu6%/-Ü«ùæYŠ`/[Ì+ùn508^¶¯H´Ê’<²3jÌmðw“¼_QÌ£s²¬¸>Þ€'DüO>Zrˆ‰ cSk"?%'†üó‚‘Ÿ˜ª³®Ñd[N(È_ŽC´„w9¼¹¢ÛÎ5 ){…¯â ŒÂÝHÚ"B²†änå|rd±&S,îà] Œx¬â}=®!•†ÔŠÂ,§ôè¥$õÔ…‰£'Pë‘Qcl̽ì¡{'_…$ÈkªÁЂJWÂüÍŸNÊуãP‹„¸÷9‰B—oA¡jàk{XÈådDD|x¬T© ÀQÁlˆQçK(εŸ4eéß27ŽÊÛ̸6Q2:ÝŸ^Ÿ¬k?èiÒxÉ t+`±+ü=ä´oV YúÕ¯NËÝi¾Ûñ)»Ÿê ]×%¥Ðhrþ¨€IŽ,Ö(@äÂH7ôM"ƒÔÇèv*ê;è (¡ùÑö– œ¢±j,r^üìO6øZ催öõÿÉ9ƒžµ/5ìÇÏmá‹]ØÝ_7î¢~ ðÖÅÝŸÑáâ)¸®1«M˜Íâæ+&õŽÿb¾v½ùJ÷àîçäÂOÖ593&¼ì[¯…ÆHŸýõÖ«²ºûfHäÊÎÍ_žå\Çï]ûwïÔÿºûÓy’9¾{öu_¼$¨1À­² ösw¤LœÆqJ’Ó%„ß1àWV$öH| °G0k~Øa{äUæ‚\ís ŒWn„’á×½Šâ±¾ÿ)„ŽóVÐ|æ‘´d_a‹‚o Å×ÄøÔ€aÙðøIyûÈsÃqˆa0¹ö!xfPQñš‹CÆOÐþˆ¦¡#Ø‚’žCˆÔÃŒÚSÖ‚Öß¾¼Í0¥ú)æääûvpëòh"¯ÆlD_5!¯mî°C`IÔkYâÂO^rçÉ_|þ›0–ºœÐ¤†/[€Û’ ܽi-èSQî‘9£šó_¶dò%.*ºm—®´.d*pè>8œ·{¬þÐÈ*| ôV²fÝ07p©ß³–³ û=×ê”ãz1øïwYZ§ì]-œK¸¡maK„˜¬mŒÝ¹äS4)€¦¤I4È.¶àÚ%¡lÔe˜â>wËü\¬Þ<‹,œ#/¬ËZá¢:{¹ïkˆŸ '¡¿MïöçŒ9Ô%S[áüée‘ÖÐIÎ=_ÿá >Ž ½›2H¡´ÉùÚEÖzøï«F1ä¤èä7ALÞ…÷Ô°!€5:ÎsA]Æø;Z–-ÞY6ÓÜ k¨5q*öj±Çü5©Ì«,©7Çc©MŸæ‹àãs—ÊÁÌÖ„ƒÅšÅ‘,Y„›ÿšo?Ý-„c”y‚þÙQð^? J¢.äšo¶© Ä“ãmÒ%îèL ‘¸4•YïJ?¼–S“îs+©ŸÖsñç°¼ƒPÜõ~FLŒê²]i>‡JJ·Ù ¡©CÍøçŠikþ<Ž¡~šV<¹ªå?ã/BZø/ú¡6= ®XRrÂGÏ=å—ôN“‰Xóþ"Æ[|@;vˆf«C˜žwç’p–$c2&Fc)B¥Ik >J„°¼Îl5Û&YCrdã#¿ÃI‰ü3V–8óšÀÀÛÆ2NÜ¢ò…å/¹OSÞ‡…°‚x2ݧ¨K¡L@÷‰ BF5!]]Ênøî‰Ñy7SW—äµPbiÈ%Àq~‚þZAŽù„#úæ‡_cñjð* ÑžÒ§yxŸúg 6›¹OØÁŠodùOÍ&Qˆ#¾)\Zª|gü,H‹øøô5šìÈ Âž”[ãb3Í{) G¾pó d‡6r¼Ä_zõq7üD¨u^@'tEé?Ê"ñ¤ù«äÇŠ@°¡’Œ#{pÌö3§Ýý# S–à)KrÔñF2àÈú×M¡‘õ“•`È}–ásIÜçRñLY´…,Éõþ‘ìa³0ž  \àú_mßü¥5·»‡íhnöš·›hâéNïÓ‡?®ÉÃ-5Á¢;ái2— ô‰ 8*`*–ŠÐSáŠëGTbšƒÜ|<Å8v/ƒµr*„}Œ\.©±tëÍ”î%§|e–•6ž‡(ü¡¤Vø“®÷SõaЩ?¦² ¯'­ÅüAq€C`¸ ι´ûçØ¤Þdbd”GR e£§†XÛ®xm¦Cõ¶Ú¦†áÃ8~¹™ì¯÷Î!û62aΟJžL&26¥ ŽçD£^;-˜¦BslÄãsÁ,…x|“,Bì\”xñ<`"n‡Ü©Lº©Æ úl®–ÛVÒ—AÛú ‰u±ÓÄMLÛ”êLæWòA̳–î†dù`5F>F2j¿ï! =h— °‹}ƒäü¼â—uñ·éB¯…‘ỡ¼; ø†ivr„ÍÞËÞƒ¼RB¤~ØØè§QxZø€’†ä>ó"¬¤kÙ/)àù¯ðd-¨Åc×Iwô©N 1ŠLèC+¼!$T%¹zëÊ™-ðÁ]E™»ZAՋĦáCî£:b%¦«Ü×ú{õí’SfÂ>HUÔrÆøyEáyÑŒDÙånÚòâÊ”$»ŒvPnajJ5æ˜ÖEÑrõL$H÷ÄÃ*Z*=þŒRð1ŠÈFìU”öôge ç7ÇzšR(DŠÔOÕ^›f#nRáp§–ò2)nÇ\ÿÅ‚ž¼Ùhœã.!l«"ø³{͹[!ƒ:™?¿$M¬_¦CÔᤘ‘ø&Š„éQxag"2’ g²©ŸÊl%š‰×8Ø·‰zX"cÈy`S‹gÚöœ[Xý¾VÔQŸä,¦¯QïŸö“ý?ì|Ð=ì\¿òßÞBÍo¹Æ9ÿ%%,ä ³‘á%ôp–°”GŠ`SËcqz½Ãçä›iBÇî„I°;-à«u&G wôÂ@ZNh•/àç‡ûøOø8qh2Buqwí>&-å—5œº1ºë¡ý§¹ KÇbê!‰§r&‚:W'Â|¨XŽsAîüîJkð_Î ˜lCŠyÙ” ¶ ÎIˆ˜%v—€ï8£Œ’ËSÒ=i0³Ë mäª Í¨ràæØ?q7²±"¨A0ìw¥ˆ"Â{sš³©ÐXÖ—Šz•& ÁõÚö0­îñOS.ŒØ¨&Let|œWcÅq›/CîÕxlÍšŒô5šQB“.ïÊ-Ãs³À’v”0éi|R¡1•‚>&÷AqÈÜ‘äÈîÆ²µòŽnþ,_¼QÁ=©|‹ÍcþŠY#(ùc¹ X°ÍŒ¯E£ÀÒ[æ7€ð|ñ>‚ݽ×,ŽØµß¯¦LŽ ¬Ù„¼Ê²ó•T$ÙbwÃ?½%<ÿÂËžU!6,…~ˆx„i{ÖU¹ª,ÞàáCOùÏd±Ô.uíº9·Ó;ò§lr¦ÐS¬Édíõm¦oØsŸÅóÂ"â†s`gP°I8¬g䙩Pêâ3Òn ­w0b?ÂðýY÷ÐIŠÑ'¿’ÔÆìÈ•šL{®FMFè$ä[VÏáM¡jA· „öÖÕvÃ÷›½µZ¤ÿDk€ÐÁ}÷Ó„˜dþM ÃlgÔzasvP)ëëüÇÅáÃ’EaØæ†p~e.8R¿Xåí,pi̽Cœ7À¯²L`)°Ÿ›ÁtÎ~¥³¯ð4;$ʸó;ç+7ð™ëðhŸú/×8‹þ~°ýŒÂ¨ÇOr–äÔŸï5Ÿl¹/bn¾p Âß«"<;iÅÎÐg} ·ir½ì<›uÜ–6búÓ¤B#~ ”€0FÉ ÀÛ]ê™ïlLèc„“©[­ÃúÌK.¤âC–Ô82Žüg˜!›JÄb¾’nœÉ¼mŒ§/cs¬%ÀQlÖ€H~Z'źL·â=&ßüLƒJD†@ä> 3P&ó¥vÙ°úWB<åLy—_Q "}ÿÍ…Ÿq÷ö›Fö岆¸6 a`m)R•€xiá x±X\ɉêzîðìx|®€2Öh¸Å‚Óµþ…:(þælÞ–ô‘`.=+šK×¹൙®“ ×"Bøõû\Q‡I–‰”Gö á%/6 Š-=á+ ¢S‡lÇÙ_Gd×RlX›÷ç bwc!Ëvë„?òAÏ(oÆöS“dÞf#4m$>p?_"ggõúÌ€£Â"ûÉ/_ý¶´ Ð:y-’yM"a äI*1ú“×mˆqŽ€)ÍtÓ\¶w&ã…uµÅ’uAeýÍŠkÁµEˆs¶lÞ9–¯ ˆfÖÈràñ^önAÓ‡297#iÌ–žûØÙH”^v¹XXù!Œ²ôì‚3¢È¢ÉíR¿àt-ëÝ.Ù€dÊú”LCa8HÂ*4þLSá½’ ªd«+BC—·ºŒž"·!þŽ„ë ŽvIîüÎ÷”“Ë¸Žøºdd™Ü€Á‘ûʸØ}«“Ô©p÷äi‡Ìû+ñûé°Âfq«,+Ò2>úøöî§»%‚l úª±°F#Œàý°€qc·œÓ¯Š—iøF™zLÚü¹´0ÄãéœI9˜"Ü[A ]½.L…EÆ0@L%‰U.¯ãÏç“ÈYÈ‚­€ÿ¬X^PkÀ b¬Á"ñ³5©½’Â[»—MŒæK:6ºwž]òŽ\®´ÃJÆœ½o>¨4Ø 6sE§–HCg %Ä:soªèŽèÒ΀Êm:;$¢†Úˆó.è0ñÞÆâañØ:¾¸ ,)Š¢(£Ò¯¿)î7•­²ÔÓ‹ƒÿœ¤µöÝ.n ½ÄàU6Jéw;cи§Ê¶ü³˜š2)A–‹ò¥(Š¢(Š¢ÌiËþé$EQEQe¦¨ SEQEY0*ÈEQEQŒ 2EQEQ”£‚LQEQeÁ¨ SEQEY0%Áã$›­ÌwÎ÷ö÷ܹ1öµs‰S+½Öfk³úE‡^bºÈË ½ßÈä%9¹Ë ¾úœó¦(Š¢(«ÉAæýñÔûæ* æÔÃØ—ØlmޤçF"§_h$é¦(Š¢(Êɦ’ “”šL¦+/Š—Èé°ÉEUNþäuX­Ž=ØÏ-ï$•’¢(Š¢Fö!ëÇòÛN¤_×¢ó2r3˜Óº©“Q8Š¢(Šr¼˜r2§x¦•ÔTÒ™ÏUrF¸¡ë&„Ëyv+FûùÍârŠ¢(вâLAÉ@]"¸s§÷3ùL8ù˜K|ºÖ²Áå[ŸXz#ÕKrÂ2;M]e©(Š¢(³àÔŸï5Ÿlü~€M“ÈÉP0'ã.EQey0|ôñíÝOwõÓIŠ¢(Š¢( f´O'á¸ÙHúMnNý.Ì¢.[‰W&ËvŠ¢(Šr’"ÈŽ{7<·ü£‚:FYUEQ”A§,EQEQŒ 2EQEQ”“™²Ü»§“YŠ¢(Š¢(óàÜVðêβͳöSQEQeÞ蔥¢(Š¢(Ê‚™Ú·,EQEQf÷ÓÝ~?ýì/¶ÿ»}¹G™¢(Š¢(ÊLØ~v»â‘:e©(Š¢(в`T)Š¢(Š¢,dŠ¢(Š¢( F™¢(Š¢(Ê‚QA¦(Š¢(в`T)Š¢(Š¢,dŠ¢(Š¢( Fã)Š¢(Š¢LŸŸýåϪ¬‚LQEQeúäbñF§,EQEQŒ 2EQEQ”“™²¼ñîEåCQNW._)ݯo–¢(Š’ãæ{7~æ4Õ‡LQ¦À•ËWZO·FrPEQV–â¾DÝ|ïæ,®Ýþª ñØÆ,W”réåK­§[Cëg?SEQŽ;7Þ½Q]>•ös²©SN09¥¥¦2EQ”Õ¤bã_:>Ÿ‡S¿ScŠrRɹˆíÿn_ÆEQ”~”ö3dí¯:Wÿúu·}é¥K—^º¤úL9ñ8—²EçBQE96Td§#¥îÔØÍ𳪯ýâ­›ÿpóê_¿®šL9ñ¨LQE©Îp²S§N]üÉMùçÇ+¦Þxlãµ_¼ué¥Krçk¿xk°3YNöU¼\1c2÷ÓH™W”ñ`2õâWEYe6[›öö÷ªdŠ¢(ʨ ·åìI#©±ÝOvKrf³ñ÷;9%§)ÇvØW5¦Ìý´¥¢(Š2•|ÈXÆì7 ûMãö{m·ßk»ÿÜÎÝOv«;“9Õå:LîAeÅçêºKev¨™¢(ŠR™|ËÒ)-ûM@ïAâvò†ç`ç%’SKý¦,«€2eY\  *M™õ!SEQFeVŸNr“•,®^.™»ÉH¦(ǵ)Š¢(£2 È<6˜öÁá`#™¢SÆó!»ñî€+—Ë—F»_ rp‰”0øZ¹ôKë—l•4E¿{á_ѧèJË|ìÇÚïôÒý¥yœEQ¦ÄÖ¥—oMr~UA6õ‰¼ê﬜dæ³Ör*}í`å1jfré©3ø^f-q¦[,W.oÞxwoi‹ZQN W._¬xäwïwÎÊB¶órãö{íÚéÀáƒ;¥Ç\ü«Ïèꊲ@fêCVÅâÅr¡_7\4Ÿä›QÏ]šù“!†–ù`†>‘9äAQ”ÉÙ»7¾±i&‚¬ñØFû«ÎÎË çIÖÙ?(óÚ/ÞB…ïZ*ʱcžqÈ&ï}] Õχ¤(=`ÔK÷›øËý$¯Òoö°ú|¢Ì’ܹɾQŸˆ¢('ƒYYÈœÒrù/bä¸üŠr¬9FqÈÆëûœP7 Pc(˜ˆr?}!™li†Ê¯9ÌWN=M5›)ÊÜØ<Ûb;Y¿íRf%ÈÆ¦óuï‹ÏÛoK5§Mó©Fóéá+e±,*^¿” ýºáb—_Ý÷¿¨Ãrû‡:Â÷»tÑöÆ9ÏÙ·&4éõ›ŸígéãIŸñžÈtó (ÊTØ»·÷ÞÞÖÙÍÛ¥,— ÛýÍÝηÝØvÿîÁþ݃3ëÛÏoÍ-cŠRc‡l ‡'×ßqîÐëVYæ9†qnÀñ|#Ë#_–''Š¢ŒÁÖÙM¶‡å¶œµ\‚ À?ýö}·±ÙÜ.þºwàã™]ü¯¯Ì/OŠ2 Ëð-ËÁzeh?k§þ%qçÏõ­“L5ŽñD¬çPeáŒdsÌ\ôÌíç·žxªùÖ__³iç }7±Iî€Ø¬_8aóìæÆ£µéçUQ¦Ä¢|ÈúõÇ —>9X 36Ÿž¹ýR–·¶±tÿÜÊ|ò (Š£ŸmlÁ>d§Nºø“›òÏ¡šÌ)­f£d:²ù½€Áj,÷9ËI>=Þ/ýbj|Qýì’Â,0Ù¨îGc_tG¥~ÓŽ9¿±œ_²êÉæ&+§hâZˆ¥jò (Ê2ú95æT¡ËÊÖÙ½êòÈœŽg6Ø~OýïË¿ÿi{÷³]Í'ŸØy!#Ý\âóüpxîëæªÉ” }Èûwϧ—à}?teâ¨s|º4›É+–þT1σ“|â÷2€¡nûŠ¢œÆó!›Õ·,™Í³­ÍÖ©ÍÖ)'˦Âîg»Í'Ÿh>ùÄÁ￸ýqI¸Û"§Nb;–ÛÊ_ì)M6÷ar™x¿KäR–ÿ–^E9^Ìó[–Ò½Ÿz˜ÜüSzÝâµÆŽ†Z*•$>øºƒáŽ+%ààlK‘7Ÿ2ïG•<,$ š¢¬2ÎVÜÀüœú[OcïÞÇÛy2ÇûÿçCi;øý9#Y–M6x{Àž*j©h-«hB+=^9¦ŒçC6¸¿œÄ¿ŠÎš¬úþ*w1j®ÆÈØàŸF:}FµºvTežŒíC6s ÙÞ½ý½ý‡c( s:>øCûàíö·íÜO¬Àv^Øj>ùÄФŠW—{ræ+§ÀJUƒï¢˜ÎÐŒUO\9vÌÓN¦(Š¢, ýlcCíd3d>¼õ÷—\&nýýþ­¿ß¿ôòæH²£ù½Fó{Æ™Aa`‡šÇªä“¨øÏQÓ™03Ê  õ´Ÿ?.qÈ”Q™çŒääè|¥¢Ìöž/n8k¶S–ìSÅV?·tÊr÷³ÝÿÙ§³2rs…E Y©Íl§þœ3™ê¹“Á2Ä!;ñ,\^,<Õ9FYU”ÃqÈf>eÉ"cTµ1`ÊrŠÈ J—CÞ#sžÛ38…1.1ô*ÊñÂù-:Š¢(ʼégº´qæ‚lrS–»Ÿínÿç’ðýErB'·S<Å JþSj²Òs¤0ê% “ž' õ!SEYA–чl<:_÷ÜF¿U–òEYBÔ‡LQe•χl¹YçëÞî'wܶœ²tÿ±yl÷“;'L“©aì$¡¶1EQ”gŒ8dódÕgâœk|ÇÏQò”¥ûÏí|ÿÿ|ÈG*Êr¢>dŠ¢(«É ñ!Û>@ý‘zý‘º}ä,d»Ÿíî~¶[¤ÎG*ÊÒ¢v2EQ”dl²ùEê¯ÂÆ£5§´v?¹ã„W)ÛçÏ ø¾¸¢,– ¿e9T8*Š¢ f¤ö|¼oY.— à”Ö‹±³èŒ(ʘÇ8d7ß»¹è,(Š¢,)û¿ÛõkxˇLQVõ!SE91Œ4pB|ȦÅþ¿ìþóÝÎ×Î×~Û¯;‹Î¦r’Q2EQ”ääÄ!› ­ï7˜ÓµÛn,2‹ÊÉEã)Š¢¬2'!Ù„ÜúûnýÝo;o;í¯Úþß’¹íøO6nüº·óòá¢3«œXÔ6¦(вâ,i²¹qñ'@°Æc ë5“Û¾õÁA¿ÓK¿&Î =~ÀÁ§²Œ~g£1ê =}ð‘s¸£cÇ>d7ÞÝ»ñî^¿?çC¿z>ö‹P%Á…Ô­´Š¢Ìõ!Ëc½{îwí¯w»?zýƒßt{{¿í¾ÿ7_ðýÕæG5dÉÄg(‹½Nqg¿ƒåO¥¿ÎŠWׯ›O‹ñìdóaUP{¿ýêÛÃ,*E91œ8dòÑ_möÒk{ŸîÚnV8¾QoTOÜuÓ+Üq²n_K^‘·ûÅ'b ®’Éæ’Ê[üµ_fäm™z2©Ò®\Þä=W.oòO¼í|Ö$™™Å‹ )­B¹÷}jãàÓѧž+Š¢L—ñâ YÎÜekòöNôºÜn¶w^òb£ÞhýüCÌ 9A#{i!à= Î’ÝU•ž¦˜”<·øk)cœrâ™Ð‡,g$»ñîÞ•Ë›î¿Ü¯î§Ü¶;€µWñ¬e¦´&š×% IDAT Uy/ªœ^ZÏEQfÁ>d'ÄBÆj¬½Úû-lí¡½‡­ü~ª1©{†ŽÎåžÜ ¼_3T“•캜Qo¤ßOcˆªIrrÂp>d#E¤7sâi€¢’¶®*v¯ mcE†¾è£{Šu¸Êå&ú+^-E™ýlc¼Ý"ÈFš|pñŸ_ßûùDWìç3ø¬\¿5^÷PQí—Ó¯­’ Na²xýE#Ê´Ú¨éÌ‚±_>=wð„’«Ô}SgÒE™ýbô×B›»®ÿ÷ÝÖ³ýOÛÍwíõwºܾ~öBÆí?€m<¾ Œö¢Ôy%÷ÓØ µœõ[­–›¦¬’“ÒcœX13èo/Y5&ô!Ë ¯I¿¦n+2†jÏž«*V›ÒÓè?EQ”©³ê>dyž _¿Ðjç¶oýô t•¥ôôÊí™V;.çõr‰óiBë·§xÖ`›Vñ˜Òsùœ™øÐW‡e‹CÆ4¦J£ßÈdꎃÕGƒOŸn®EQª°êqȤÀ²Ÿßê·Ýlï´?½†ÂDçÃ,¹=ò°Üu‡úç~’§˜xñà\úýÎÊÐïÖJ÷—fµß¥s·\¼ô*«1DŽ߲,:‡ª¥rgU7•ÊRÜ9õ‡û0;¥8`äPÔ2“CO?5Ì­(Š29cÇ!;!S– 5VÿÎ] ±ý_ÚíO±¡± Ø_láÓ=¹ß1çU–ʪ1ªYN3 vØï÷kõ³J)[ýØ#“Á'Žš‡Ivê˜AQ”±ê>dl3‡ö?ìÑöíü~5¦ÆñeêqÈEQ”cÄx>d'DºÊrÉÕ˜r¬™d}¥2¨(Šr,É6æ8!‚Ì ,g'»ð˾®6CP”©0v2EQåX³êqÈC•–J1en/;Ù²­ UE9¦¬º™¢,Ç·ÌÙón¾wsÑQE9 ¬´YûÀ~ÛCŠï>U¿³ûÅF}ݦIý‘õÚFmøÉŠ2ÇË6æÐÙUEQ”)2†Ù‰ŠCæè|ÝkÕ³6Åû‡µõukhö:½S§NµÿÐYt•΄qÈEQ”cÊØqÈNš ë|Õ«7Ös;ë¦þèz£Y_¯¯øèÿêKeæ¨W–¢(Ê Ò/FÿÐxýK-ÈŠÃÓþª×}`¿Ø?`»ÉÁç_ì~rg÷“;ëõu÷€kÿó ?úáló­¬6l;^³–Š¢(ÊTèg;®>d§Nºø“›òÏ¡!ˆz÷»ÆÄìƒdï÷½?ö¬M⭟߬ý§ukì<ÿÃvû0>m6ÎäýÉfôFùY˜ê§T9øTöãâÊ’p}ÈEQ”)rr|ÈœÛ:»yåòÅ+—/nݼùÞÞ`;Yû+ŽÃn·gX§ÆX½n÷Õ7^q¿®›ZûËÙæŸqjÉ¡ßÎ[Ô‡LQe59™>d›g[›­S›­SCo€}`y;>mlj‘âÈ R\ûŸïï<ÿCXC÷~¯oBYŠs¦Åï.óÎâ¹¥éðåf™`îßÒÌ Èjî\eΨ™¢(Ê r2}ȘÖÓñ6ÙÜú®ÛNX"II¨…ƒŸûÓsU®[´o•Z¼xgõSš‚Ü“ûB3ïll±*wªLõ!SEYeÆó![jA¶wooÿauI±w÷ß݆M­‰ˆÃÀ@÷MSáæßLs¡åLEÏHžg9û™ª±… ¶1EQ”g$Û˜cIú™gëìÞÞ½ý½{péåÍÁò¢þèúá×]·Ýët×kµÞ$N“%–&(SØÿèÞïŧÍlo`¨üZ¦ø-Ëïæ_ã+—‡x†S(=E¦8·ÁÉæ´]éÁ¥¿¯Ò/çÅDç°R *Š¢Ì†ñ¾e¹Ô>d#Q{ÄÔ¿³~Øí=Ѫ›Óqý;sÏlï<ÿà úÃóÏ95Öþêðýwÿé‰'ëÅ džõŽÜÎâaÅsK364…‡…•˜ükéUr'ö˪ʲE12VR‘w–J®Q“埆&[ª·Ëj•œWÌa•«+Š¢ÌŽ“ãC6Í'7zì~øÿb$æt,êvÛß"µÕ·žÕQÊlÛ‡l¯ðÒn‹%˜ƒÅͨ—ÌH V×d2ñ …T.‡Å’TE‘ÚáèC6[Ï6÷ÿÍ´?o×YG„ìlÞùÿ¾8üöðð~ÏD执[Ï6§{E5D)¥ŒíCVýÍ/ºÕçLe£^zŒj]ʨBVQ¥”QGw'Ó‡ cÉÖ÷3ë_¶oþòý;X¯™æ÷êO´š¥3•Š2]æãC†2É•›Á<.šì8*HEQ”~¬º™¤¶QÛúÏÍ ¶}ñ//\ù^ü‹íç·T)óaÎqÈÜI¹1TÙä¦ùÄ)f©âNEQ”É>d'S)Êb™õ·,e¸ þsðαS#WòÄÒƒ3“Û94ÛŠ¢(ËÃØß²<õÅç{Í'[¿ßpýW7Ü|ïæ,³z\iÕ¹û›v÷‰Y·§ëç¶š†¢Ëîÿn±Y›!U>Z¥\zù’{kr^üìCæ fUf0÷îí_ç'©ºT0)Šr2¨Ø,ßxwïÊå‹njRúŠ•nß½wÃõN}}ôñíÝOw—݇lI°l§Ý=ü&±è™N»»¾Þn}Ê딓ÁÜ|È–ÒcŠ¢(«Æx>d*ȆÓù¶søu²ûq\ºó‰ 2¥œiÅè?ލSEÁˆë+êC6„[oß~ÿ—{þã>`ì'psR¶×]pÆ”efÖ>dŠ¢(Êr2¶™ ²!\üùŽ}€5'Åb¸5µÓ‹Í—²ìÌy­¥¢(в ô[_9t­¥ ²!\ûVí©CDˆÑ"5†Ú#q£µ.ÛlʸÙ:Åÿ“Ííp°ü©4©é2‡KœxØ6¶š³–Š¢(+N?ÛØ*Æ!›Wß¼^;ï<ÿÜÎKuÞ¹u¾¾ó綆ž¾·ÿÐýW”_Åý–?•þª,jSEYq4Ù4¹úæõúöùíÞý®1¦ù¬°}¾±}¾Ùxlc¤¤f!¤Š63þSþË? >«ß‰Êx¨™¢(Êj¢>dSæê›7gêÛÏn÷îwMdÚív³Ù@d·žoÌeªœ²ÜÛ²±I›ï §œåö¸Äݿʄ¨LQeQ²irõë3ë[ÏlõîcÚß´ëß©7m¼ö«É—º§ÔRUÔCN0!+•úy• –S¹³\ÜŸªÃ¦…ú)Š¢¬2ãùi²d“¢wØk‡F½õt«¢ß˜¢ôCídŠ¢(+ˆÆ!›ˆ«—wÙZ£÷âO.´¾ßRÏ:e4™¢(Ê*£ß²Ÿf0úâ¢3¢œÔ6¦(вâŒáC¦¶ ¨"ÅÚ_uîþ¦ÝýcbÖmãéú¹­&Ok¶žžqþ”ã†ó!sk-烔€j™ë‡–ÒtÑò\*ôq, ýÖWòv?TUÂ>°v÷ð›ÄZ g:íîúz»õýæ¢ó¥,/s‹×ïZá›ïÝä=—^¾äöÌS.9ZJÓEËs©ÐDZTô‹Ñ?4^¿ ²át¾í~ì~Ü‚§ÿOT)åÌ3Ùwo¸VX6»nÏ¥—/›ãÍV¾-ØÛßs;÷ö‡[ÔG¥˜riJ¬žæPŽi)ñžÁ—.ýu©Ê…"õ¡šÛé–Éfk³z&—ÿqô{#=‘…0^2dC¸õöíÞ!ºlÕìˆÑl¯»èœ)ËÊü¿e™kpŒ‰Çî§‹ìê\Û:‡Ì»Rš„ù”§ìÚ\±¨oæöÐ%ËPágGõêí(>ŽYålÚår2Æ·,U áâÏw®¾|;†TcLí´]lÆ”ef>>dndÜï*W._ég®è‡ì8‹}miï;`çx–âÆØi:Nv) ÎØLË3×/ºN½Jyó04“î7—fŽÉËÄÝ×HéLëÒU˜nõîWŸûexÀ‘Ïõê|Œ|.’É‹trÆö!ÓU–C¸þö­ÚS‡ˆ£Ej µGâFk]vêTþû§Åds;|*ˤ÷3Œ9\bE8vk-y”œks-£ü“í¹È6“gf*iN…e(¥Ò<”îì÷ëBÊÓYbP=“¥E=8ÁI.W=Ûó¼ôtP¤Å «tîÈÒ³ú¥_ýꜸTZó·¶FãÍ„«o^¯Žwžnç¥:ïÜ:_ßùóÆÎ [COHåWqg¿ƒåO¥¿*ËÆ1C6F‹Æ­diG2x‹Ï*=¬ß¹ ovçYJ#åap:‹-Oy•²lꙜO™»ÇáúJr ¨Ò94•¬VL§TüM%c qȦÌÕ7¯olÔ·Ïo÷îw1Íg-€íóíóÍÆc£}UiBªh3ã?å¿üÓà³ú¨ŒÁ±³U§Ø×ðõ^Ÿ ¦UJ'‰œ cZ}¨ÕMéG?«RÅ"»JNÿ$=PC65®¾y£q¦¾õÌvï~×D¦Ýn7›ƒß¶·žoÌ?3R!=|ødcã_à㟤Óï¬Ò=ÊØÌLJl°ƒÈ`ç’ñà%³´h)M.ÏÜ›»ÁÁå9u ~bJul&¬Þî!ö› ìÇ$Uz<ÛáñB}ȦÉÕ7®7άo=³Õ»hŒiÓ®§Þx´ñÚ¯v&OœOÎlÆ–ª¢r“• 5–;¾xðà«Ë³\ÜŸªÃ¦ËJÙÉú6‹KO=Í1çR/ ¯Î–ÎÁýè„f¡çöKò2Ù,,?¬˜æBÇ™µ¥jFv²œ+çØÙ›õ!›W߸Ž^së™­N§gN×Ú_¶7ZO6§ø¹ñR-Å^býÎÊ 8éXVýÒųÔ5mêÌÓ‡ÌsÊïÆ»7¦nøÉy¸?K]IŠî·EFò_©˜æŽ])ÉSª{ù,myŽq;C3YZÔÅc¦~¹êþLKû8_½Ê3ìYñ¬Á~iU®^ýÒóg<²S_|¾×|²uðû}וö»j85¶óBóÎgí6¿éÔëµÆc¡j¬hÙ*Î8lÀDáÐtJ§,ï)½®NYŽ›2€ˆý“‹CæÚÊ*úlïÞÞæ°X59œþs¹Å(‘Š–Òt™CyæÖëá¤ÌgÍ­ÞÌ,ªJÅfùÆ»{W._”“’2öX.ÙÝ{>œ¯S_}|{÷Ó]õ! \}ó:î7w~Ô¼óYÛ ¾ýA{çÏëGÆT²•zzÉ?'‡“´iå&@«lÏ’™TM69óü–¥»ŠG­`+<-¥é2‡ò,õQSJÑê a3[xUÑoYNÊ­¿ý`ÜÛüÑÆÞgŽn÷ÂËÍú™zE5VêøUý°Á3•¥V¹bñà¡g©›sŽ×¿‚íïh)M—Y—çÂ{ÖãÅŠWïå©-cËR}ÈÛ8÷Lcï_;ˆÐëv/¼ÔŒOÇÕ˜¢HŽi2EQe*h²‰è´“;¿m#ÂúcÝí?­×ÏÔ76F 6¶<¨•k±œàõ•Š¢(JƈC¦‚ŒHÑ;ìÆµÃF£Þzº5Å5•Ê â|È EQeÞô³ñv?TÀÕË»ˆl­Ñ{ñ'Zßo©g29j'SEYA4ÙDl4;€¹øÓå$ >dŠ¢(«Ìx>dj €*R¬ýUçîoÚÝ?&fÝ6ž®ŸÛšf¨Xå$1çõ•Š¢(ʲ1ÒúJ‡ZÈ*aØN»{øMÒë¡Ó6w?îü¡½èL)Ë‹ú)Š¢¬&êC6C:ßv~w¸ûqÛÚ°óÎ'*È”A¨™¢(Ê ¢>d³âÖÛ·ßÿåÞ‡ÿ¸˜û \ä=Ûë.8cÊÒ¢>dŠ¢(«ŒÆ!› ¾c FÍI±®XMíôbó¥,/jSEYq4Ùô¹þö­ÚS‡ˆ£Ej µGâFk]&?dÉ{˜b²¹>•eÒûÆ.± ¨™¢(Êj¢>d3áê›×k§ãçŸÛy©Î;·Î×wþ¼±óÂÖÐÓEùUÜÙï`ùSé¯Êr¢v2EQ”D}ȦÏÕ7¯olÔ·Ïo÷îw1Íg-€íóíóÍÆc£}UiBªh3ã?å¿üÓà³ú¨Œú)Š¢¬2êC6M®¾y£q¦¾ýìvï~×D¦Ýn7› DvëùÆüc·É)K÷J·!mf¼g€œp–Ûã×OaNˆÚÆEQVœ1|È40l W߸ÞhÔ·žÙêÝ?4§kív»þzãÑÆk¿jNž¸Ô=¼ a—*ê!)Âd:¥éÕd¥;M6ê½(ýp>dû¿Û;…ïæßÞ+—‡,¦0ê)Š¢(Ê„lžmíÝÛÙÆŠÛýP Yž«o\G¯¹õÌV§Ó3§kí/ÛÇ­'§—¿ÔCŸ-UýÎÊ)-éXVýÒųÔ5mFLh'»ry“å”Ü®HQÏ)Š¢(s`l2µepjlç…æí_w¶_Ø8ü¦ÓhÔgê–Snª±ô§Éç?‹ô;«Ÿ¹N™¶Í‡L*-Vi¹ü§ÉEQæO?Û˜úUåê›×q¿¹óBóÎgmÜþ ]oÔßkT´ƒSä¿&GÎ0æç=ÒôÕoOñ¬ÒÉSedŠ¢(Ê2£>d3Ä>°v÷ð›¤×C§mî~Ü=øC{Ñ™R–ý–¥¢(ÊŠ£>d3¡ómçàw‡»·­ ;ï|¢‚LéËüã)Š¢(Ë€Æ!›·Þ¾ýþ/÷>üÇ}À$ØOྠj{ÝgLYrÔN¦(в‚Œ‡LÙ.þ|Ç>@Œš“b1œÂ5µÓ‹Í—²¼°mL}ÈEQV~¶1õ!›ˆëoߪ=uˆ1Z¤ÆP{$n´Öåa¥ŸôÎ}ÚrÀñ>•eÒû†~ÈrrÔ6¦(вâ¨Ù”¹úæõÚéxçùçv^ªóέóõ?oì¼°5ôtþLdQ~wö;ÙÏbª`:¨™¢(Êj¢>dÓçê›×76êÛç·{÷»Æ˜æ³ÀöùÆöùf㱑’š…*ÚÌøOù/ÿ4ø¬~'*c£v2EQ”D}ȦÌÕ7o4ÎÔ·ŸÝîÝïšÈ´Ûíf³Èn=ߘì69eé¾Sé6¤ÍŒ÷ SÎr{\âú)Ì Q2EQ”UF}ȦÆÕ7®7άo=³Õ»hŒiÓ®§Þx´ñÚ¯v&O\êžRKUQ9Á„¬TêçU6XNåÎrypª›jSEYqÔ‡l \}ã:zÍ­g¶:ž9]kÙn<Þh=9͸ü¥ZŠ-UýÎÊ 8éXVýÒųÔ5m¨™¢(Êj¢>dÓÁ©±š·Ý©Õj‡ßtzãL}ÂiÊÒ©Æi)¡âŠÁÈ9SÙ„9Q$j'SEYAÔ‡l \}ó:î7w^hÞù¬m€Û´ëZã{ж±bpгãÁ²‰§s òZöÏ’‡©2›õ!SEYeÔ‡l"nýíæÜΚ{ŸuL÷þ£{á¥Fãц1•ÔXÎî…>SŠ¥þa¥ûû’›jÌ%^<8—~¿³rT¹e¥jSEYqÆð!›ûŠÁ¥Å6Î=Ó¸óizÝî…—šñ鸢S”·lÿwûó¼¨T«`œ[µû­Ž–LEV³ Vó®çÉæÙÖÞ½}m¬¸ÝdžN;¹ƒ6"¬?ÚÝlÔëgêSôâŸ3jâZœl>íkao¾w“÷\zù’Û3gQ8Ví~«£%S‘Õ,¨Õ¼ëùãìanv²ßv)*Ȉ½Ãn½iFëé–Œ26l››s-¬lRÝžK/_ê×Ôn¶|£°·_bHw¿æ~*îäD˜ÒÔ°ÙÚõ”Qï7—ÉÁ—+½ñ12|,J¦˜ÏQ¯X…ÁEz\ *—ÕYÔ¬ûÅá›Ühäàç.+@•R%¦N?ÛØ`2Õpõò."[kô^üÉ‹‹Î‹rì™§mL^tÀŸ3B6²c´€Å–·:£Þ/gu’ƺz†EÉä²7aáŒÇ±((ds¸‚šóo(rznh¹-°JL—‘lcd°Ñìt6.þTÕ˜2ææCæF½ý.tåò•c_7x•]KEÃØPJm ¹üçH}Ûx÷›»._q°Ích†Ç0™,mÉ { UòYqO.ÍãXP¹œ.¨œeHn—0­âú]Ë{”·#÷33ÔŽÞÏð6ôvfW%¦ÎØ>dºÊ.þôÅ×ÞÝ|Lû«Îÿëî_ìÞzûöî?ïÛv>ySŽ)Çn­e±#é·³b:² )î,íÞæIi>üšËðàÓ«_qá%ãj•|º=¥Ê`h™”ªØY*ÍŽOÊs†È„Å;?£ÓŽã=¬ãR%üÕ5ÙL±l§Ý=ü&éõÐi›»wþÐ^t¦”%å¸Ç!+m˦ÒÀåP…YHÉä̃;x9[W1q™þ´îë¸T¡¡÷žÛ9jñÎñâà#KEÕØ9\Î*¡qÈfEçÛÎÁïw?n[a»ó‰ 2¥œcg›¹®EZ –ªËœŸ¡¹ãv–ªdrÝX΄ÓÏr6Ÿ¼-UAÍê3w'òö«p¼ª„Æ!›>·Þ¾Ý;D÷£Z‚}1Z€íu3e‰™›Ù`çRÇéfÁSïe‹ 'hÆHvŒû5ŸÕ­r@•S^2¥S`“x€M…%,¨ÙQ½xr×K"wfT%¦ŽúÍŠ‹?ß±Cª1¦vz±ùR–%·“I‡•¥ïx-2\yc±-f¿<,ÐN¶À’©’í±mÓ2Z,CAåëTnm–Ó&Ä Í[Î+nÔÄ^%£>d³âúÛ·jO"BŒ©1Ô‰­uyXé'½sŸ¶pü€ƒOe™ô~†¡²œœ9û¹±oNüÝx÷ƨcý¢cl¿Ó‘måàSvŒw¿Å¶»4Kïbèé¥,[ÉÈKWÏÒ€\Q&ÕÓYlªž¥ê÷8ç⻡9œ™1š‹ŠÌºJLñ|ÈN}ñù^óÉÖÁï÷\ÿU>ŒïŠsõÍëÔ·Ïo÷îwoÿá۹u¾Þh®7ÛG¿ žû\·üÕýÙï€Òƒ\hºÌ:ý‰› €ê“‹CæÁ*úlïÞÞæ°X5EœtA·Å'‰U»ßêhÉTdµ@£ÎRUå4n•R±Y¾ñîÞ•Ë夤Œ=–‹Cv÷žÓëÔ×GßÞýtW}ÈúrõÍëõíÿ²Ý»ß5Æ4ŸµŸšíó­óQ]ïròk*°)K*9y­R‘×ï,>ªÉ¦Áœ¿eé.$‡R'»^µû­Ž–LEV³ –ä®Ù|u,ÔØè·,§ÌÕ7o4ÎÔ·žÙîÝïšÈ´Ûíf³qðÛöÖóùgFN#²®Ê‰­¢ä*M§ßY¥{”I˜¼þUèQ$«v¿ÕÑ’©ÈB já*dáÕcá%0kÆþ–¥ú•põë3ë[ÏlõîcÚß´ëß©7m¼ö«ÉgÅÃ)Þï(ꡇò)Å㋾º<ËåMkãß•"8îqÈEQ”IÐ8dÓáê×Ñkn=³ÕéôÌéZûËvãñFëɦ9m¦u‰R-õèwVNÀ=T¿tñ,·­¾üSdÉ×W*Š¢(³fŒ8d*È285¶óBóö¯;µZíð›N£Qoœ©O8µ+çf™\ l>@î,:)SÁù-:Š¢(ʼégãí~¨ \}ó:î7w^hÞù¬m€Û´ëZã{ж±bpŠ `DIDAT³ãÁ²‰§s òZöÏÊ9“M%·+ŽÚÉEQVC6)·þöƒ snçGͽÏ:&Š{ÿѽðR£ñhØJj,g÷BŸ)ÅRÿ°ÒýýNÉM5æ/œKÿÿoï~Bã¸òŽÿ¼ô¡t(] €xÁµ$à™C tpä)$±ììÍew˜MðEéâhË#ÍÞœSl˜å°¬öcäÀ,±!p  FÐ#P ÙCÙ•Rý몮jõŸú~0Fýú½W¯-ÿô{¿z•4*Ô!ËGFjȠʨ!+ÆU ‹jï;[jâôz«ÍúL=c4‘€Š£†lp¶uxÿ[Kj2{º×~Ã0æŒF£ÑØX"Å5rÔ@5QCVØSqº½ºÞUÊhžm–xO%ª‰<T5d…t®ìJÍÕ•sþòjóå&Çå¢jȠʨ!\ôE´µwÎz!˜䯠â¨!#$"’%³~²|eõþ~¨Íºê¬±Ð*ó¨XL™c~–%`L ü,K2d™¸®mõºOGlK{p·÷è±5êEa¬‘'€ ¸†Œ YöÏv÷o‡»w-‘_Sb÷¿±š/›#\Æ–Ÿ¬†l/Cf0¶’rcé5dd}l_ßqºÒ;pë5ýPŠH]š"®ÓõÊ0®¼ÜØ`ÑØ|ê?WÀDðòa^ü:[–}¬½»ìH]‚јˆhúÌh×…±Æ9dPMœC6,×·õ—ºR“º4ŸGc¢Ÿ¬«æl°[ì#½C¶LéŸÒùÄQE?O?<Ȳ,Ô@qÙPtÖ7ô™úò«¯,_4üÆÖ’±ü¦Z^iõî?&2~E“:ËÑÇb0?Î!€*ã²’uÖ7 £½Ôvö{š¦™ç\i/©ö’©Nç{ªÒ0©hÎÌüÝ+}TÒ@ €ÜTϲ,Mg}SÍísmg¿§Õ4˲LSIÍm½ªŽÿFˆà–¥÷œJï‹`ÎÌoI §RFy-Þä< ³8jÈ š¨!+SçÚ†š›m-¶œý®¦iÖËxÁP§ÔûŸ-Ÿ<÷Äfª¢ñ0ÉÑP)©ª,=œ òÖà½$+y2¨ Î!+MçÚ†8fkÑ´mG×uëGK™Ê<]fb,6‰Õ7 &±²ôOš$¶%6Ä` žC6¡ˆ>L±\ßÏ9‡¬^4¶¼bî|a·WÝ'¶R†š3 þ9…¶cß*>¹ÿ2Ú!iT(]GLVŠ"çM´­[[£^”ïá÷ó> sÈ é¬oȾ¹¼bÞ¿gi";·-CéêŒÊøÌÊèá)»ƒñw9ý­ÆPDJ¡%µDG»QÔ_5d05ríPCVÔöç·ÚÂòëæÞ=[«ÕôV/*uJiZ¦hì—£B-ÁnѱíIC‚ÑUtòhçÐüI£B²|d¤£† *ˆsÈ sÕ¢ÚûΖš8½ÞêE³>SÏAœCUÆ9d…ØÖáýo-©Éìé^û Ø3|‡R\£En *ŽsÈ x*N·W×»Jͳ͌uc@¬jÈ6oîmÞÜKzYéõ‹«)Žp ¨!+¤seWj®®œó—W›/7¹÷Å‘'É]“ŽsÈ i˜¶ý¨±öÎùQ/Ó ôsÈ‚©²«Wæ“C-ÞËàéýžG¥5|"ððÖ¾Gïöž“kòØ·b'OºbÒ»¡Õ¦|´¤ž—:¤&}Fn°sÈȉˆ¬½sþý›íô>ÖOöí?>ØüÏÝíë;»ÿýÐ=pgm˜8忯üÀ(<Å6züFxh ×!:Ðï;*érQ±Oñ 5žˆHš$}ž”Æ,ýƒíIWÌòn°[úçê;gúϾ£E Ù°¸®mõºOGlK{p·÷è±5êEa|•~Y($ʳ’ùèËØµ`ϼW‰:]%ôVÈs¦7Ч¸r?WßdÈ€1D ÙÙ?Û¾ïîÞµÜ@Rìþ7dHSVž,˜µ EQƒþ‡ö"s œîû ²¤µJôKàXæìËH`LPC6,Û×wœ®ôÜzM?”‡"R—¦ˆëôF½2Œ«ÒkÈ¢{ŽÁö\ŽÆ+LŒC²§øò~®ØÂ²ìÙ²ôÂ5£B ÙP¬½»ìH]‚јˆhúÌh×…ñUz Yzủ«ì—KIá ¼µw<N>åú\}¯ÛÄ0¨!#CÖÇÆõmý%q©ç¡˜ˆˆ~²®šõ`·èªÁï›ÑïË¡þ)C߇ý_?s—«!Ëõ$ZïÆÆèÍŒ¡ö”ÆÁ®2À¨ôËý’í†ÊtÁŠõ²æIŸ<¶ñÄѧ¾¦ ê2úŽ0†‚ù°¾O²tõÆI£½ÔvZ½?u½ÆÖ’¡ÌYuºÿ9þI; ¡›ØÓ;ËÑo»L“ÂË“åÚµL tbÛ£±õûé_gï™k¿2å/p‘:÷ØyúN^°±È²–‘òç `j°e™¨³¾Ñhí¥¶³ßÓ4Í<çŠH{Iµ—Ì,ÑXPöŸ¤³‹öú/ƒ¿ûo¥Jˆð,ËÁðÀ*#C¯³¾©æŒÖbÛÙïi5Ͳ,ÓT¾µZ¯ªã_LtCóDäœÉ‘C#cçIÛ‚Á ƒŒeâg —`lmÞÜ.2œ€,FçÚ†RFk±åìwµݲ,ãCRïfŸËrüyŸwëÖÖ¨“Š€LD„P ¥«Zž¬:Ñ' 5d@ɨ!äE@”Œû+yMÕ–åW6rõÿðæ i%¨¸ªÕ šª€¬.9Žâ<þ³ÄU­† PÄTd"rþßÿEŽè꺮ëjºî7t®ìFÇF:éµ|eèѧʸž¾}²¬*é$óz+ÊÏ2š¶€Ìã8Î~÷ð¯wäçfÅÑf4§¦¤uU×gƒaYFÅCà ÇÓô½„×kÈòšÂ€ÌÞ·?üÛ§"î§NWfDDý©%}àè†öÞúÉø˜,”|ò¿~á÷”£ÑLÒ×)B³eœßë“´¤àäÞÇ ~º–ä7FçÏ>mQCÈe ï²¼aßÐfäË·¾üà¤áÔž?é[M\Ñí®öÞï›Ö q<¡ý¾hôë [ÁÙRæò†'MÛ¿ïœ)Ðo ϸԊã^K@vS˜!sk¢=Õ^ûèÂ+w~÷à¾v²á8Ž,‰û‡OuÛvNê)Ï ÷“d±Y®hÝUÆ*«ØýÁØÙäy•å“0$ËlÑ•G‡¥ † ×dŸžùPDäEq?¸ðæ…í›Û¹†ˆÈGŠHJ4ÖWÁ 'ÀeŒÛ²,©”R°Ði–ë"5d€¼¦pËÒ§ëúÏn\¸xaaqÁuÝŒ£²ÜƬ ò;|?¦¿eœ3öréËÈ{Ýôõ¤_:{‡jòjÈF½ ÀĘæ€Ì£išRÊ=È%ñ‚ž`ØÀ“ÄΖҒ´yZÊ’Bk M•ÞÈMš)¨!d7…[–Aê”Ú¾µ­išžç´‹P‘²ÉjìÛ!}¶”–`-ß+f¶”IˆÃRPCÈk 2ë';ÔrxàööÃÀPCÈkÚ²ÛøaÔK8‡ ÏTdïßlçéž«3y2@vÓ_Ô3ÿþJ¢1@Fd@ɸ¿P>Î!ä2IJͷÓ;\ýýÚð®Œ5d€ì†m~¼}áòk}û“aúp ¯¡lYnÿñ΅˯é'uï—ˆ\¸xÁÿÝo¿pùµ¾Y4`âPCÈkX2/{å·¯ˆÈêÊêêÊê—_}éý~çîùúÏ_{}€éÃ9d€\†XCf=¶×ÞZÛþ¯m/ Z{kÍzl«3Ø¡'$¦¿Ì2<øn‘gþðèFdG  »á Û4n|²Pd/* åŠç€‚¨!ä5Äc/’`}yXì[~8uâ9¿]"ɰ¤IüwC3„Z¢}‚¹?*ƒ2@^ÃݲTg¯üö•Ÿl‹È¿½wä†J¯q0Á,W0DKÊ„Eã§ØB-éW!Ó†Ôrb@¦Î4¬Ç¶x C¥¾PʾdlIY®,—?A2¢† ÝDfÈúÊÀ%¢† ײKOÔ–XƒeÈ¢UñÒþ$Y¦eƒÙ‘ä5Ä€lëëÒ¥}Þ.=C¬úOŠ“‚\pw2¸še†ô>@,jȹ ·†lK,ùäÙ˼X4J* Kz+TªŸ>Ê Y„'d75dÀQCÈkLkÈ€ÉEn ×DÖcŽ2@.C ÈfOÉæÇÛW¿ö?gå_Ÿ5~ýç¯CÝ6?Þ6ÎÌcÀÈ‘'d7”€lueõÎÝ;›÷ÉgfWWV‡±`„¨!ä5¬-K"-T¹1@^C¬!*‹2¨šùßÌoÞÜx80äÉ Ršg›[·¶²ô¼ôö¥h#P2jÈ šŠlŒüS‰ë Ïsc£^`’åójÈF½ ÀÄ †‚< ;2 d~nŒ2@Fõ%ãþJ¨²ùæ|lûÞý”QdÈ€òQC•x¥GcB@ 5dPY¡ð«o4&d@é¨!øAX–hLÈ€Ò‘ˆÈÞýŒÑ˜Ã@  2`(È“²# JF  /Î!JÆ9dPA7Fb2¶Z€‚’¢1þeÀ´*ø>yÅÈ[·¶ŠL „Y€á2n †Y€'~øëžùbóÑÿ=õJ*çÎÝÝÿÝå.K€«‰Hg½3êeT׉ö¹ö¨×PiÿË´×aO-IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/threadgroup.png0000644000175000017500000005310512032647161025225 0ustar ebourgebourg‰PNG  IHDR;þ8s¬ IDATxœí½}hWš/üh¨À)p Ú(¡+8 â‹»›¨“@¤I`¬kyý‡­É…±ÃXI–XI`cO–w&ɲ‰“ËMd/ï$Jx³V’È“ÈYnÖʲ¾WÈLk`Æ­ànñZL "¦šD¸ "Þ:ཛྷîÓ§ë««¿Ô­îç‡ùñó©S眪.ÕsžzÎGÏ­onA4l¿{ûkÿòÚËÿü²‹a|âÙמØ18ö³1EQ"ØBl¿{ûÆÆFúæ<Ó2ç/Í”R=g\þ÷ËýÿªlS@ª©tR{ðß;5ðÌäâ«£}ÏŸ›ûàÝÑ'g_;{1ýêhêÅ™Ù÷OO¼òÎÔ‰£¯LÏýrtï«Ïýòhòç§:L¶‘š/íÂgÎüæÌkï¾–ˆk——æõ›:‘dêØ„0Žå¾Ê]xëÂÿëJ\‰)1"kÝúþûþ§™Ošúé[ÿó­±ÇÇ!5^{5Ø~÷ö¾¾¾Ô©‰§'r7s#ûF濜z<}9=´whþò|f!óú¿¾n­YÑŸRÑÁøP‡8®õò¯H/ÜúÛ-PàÖ7·HoÇŸ˜údê—Ï-®.Ì~6k¬ÑËl‰Þ~÷öÿo>w€ØŽM€PÇ’%Âò¨;cƒ?øýÿö}kÝZKùç?;?ù¼øÞ©§&Ó¯Œ¼2{ù·ïN}vѦöKÿ+{áÅ©_ÎÌþvjòËúªþÒïÒógŸeæjäÕgÞ:¥¯êµÕËô“ÿðä‘k½êù?œÏæt2ul `®þ´xá­ ÿ1÷d ˆD@Ù¦@ŒÄŽÿË‘_üÓ/ Ë möoÁÌÕè¡Ñ#GŽÄwÄ•mŠ–Ð‰0cI$rê—§Ž<ßß~÷ööy~P£FÝ*Ýãí½n¿{; ÑRxÍ“àH@zÏ=÷ÀÆÆFU…&žxëÍÓ²Dld l‡¢ÞbÚ  ¨Q£n²þÅ/OeÿPŒj”Kqºr“Ú•%nêVhÚm@íѦDêP"EºE€@öZV–äÀ{ðÛžý·æÓÙǽªNg&©§§çÖ7·JÆŠyWzN·Á–%Ùvì‰Q‡‰P‡B˜&@X~B÷Ì@_5U_i3½jE½54³ì /K² ¶ oû‚Ýpð£Ü¬ØŽ-“B9Ç…åJ€P‡*D)Ø  ö"zíÌÖ_„+™+ÛïÞÎ<­ï¹,!«>Fb<Â4‘ ãÇX ‹ÛósM‡€íÐÑØë>šHDÔæºé£I¹¶*émþZÙV*Gq¥s­Ý¥®m½VÐñ^’¯JÇcù|IënM]ZõŽr½jÓÚt_L_5K:_YçV+èD=ú¾ÍÕ+µê]Ñ^MQo dI®ø¶/¼Û ¸RØY2‘™æéÌ@s¥àI¥’¹Á‹R»hkJå3«Ç†zgsÙª¼«’bS @l‡EDš®'ÿ¯!xùdšU—Dìõ‚–%Å^·¸6}5)×V%­(æº%;ÄvhLQLËO÷*ÓÀ4•ðjk­¨ã%­Å•|E½CÉç)´šÏ›á:Yìéûè¼ Ô£‹=»Ú¥æVš©ïWsË›¤‡îW}õÚâ’ѽlÀzÝúam1×+êa!uÛêù?ënTë]ñ÷?”{WãOƒEë0óá ó®J%{j;>ÓïOó<,eæƒnkÔ¸úÇù?n¿{û­on•‚Q.‹7v|L–äsœ)BÈè‘QY’?=ÿ©Ð@ Ná;©éX…‹—Àt¬Ãö©öwðì¯æÅô:µ¼ ýç #µ•3y6ãϧ¹6 8ýVÚt,BÈØ>mho l˜øç´¹n±sc„ZQz!Ñ«¦ÿ¢Ç¶)¦ULÒŠb®[Àt,UQŒµJºW1ò%mæ-æE‰Z‹+FÞb‘WŒÕ’ÖW)uëñ2½"¦›àPêÐD_ Î®øéûüuê¾xv¹¨wêÌRQ߬—M Lk¾z(D/õuéÜ’iWÒ‹\?T®¯µéázô#Áz±Ñú1mõVÐà…;$!Ô¿)¼îÁ•Rð±ïªô‰3)iWÉà€«vfelÇ~öijÌÖð”'Ÿ~òã?æ.‹8|B´·ÌÊÙŽ=vllöÃYî]Fz8ðÓÿþÓOÏÊ,0XÔ6ïdê”ôðC*ÈwÙfZñÍS“ÛêРz#h€ÅŹÄîA¦UVò‹Š’ ëæÀC1VÅŸç‰aêØDŠë…s‰3ÖÉçÀÜï3Å’mBbƺŽGo‹–ŽLÁV¶Åt_­”ëµ’6Ö,ꀭô–´ÚÓó~z‡Z¦×,JyzÞ«µ¾2[õÓ÷ë•‚Ø¥æVót½ 3¢^áZ+éûËtv9o­€=$ê\Z÷Õ™(z©’~(X/ë–åÖÃ!z©’~$’N×£¯s,éG«Ó#õ"ê-£ àåTï]ñÏzbìÊvì2–ÊRʼ+ܵ‹çŽc樬Þž¢¥*Y,ÑÞŠÁ±£Oýøƒ¹wBpE ÅW¹L(¬° ɉ]q9§^™™|ulüPêõ·3@€HòäËÃ0óyöÔÏ“¦¯¿ÑóF¢Ox"¡Þ+€iÀ™2ú PÇ>¼?9ò¨» À6áÔ[iË%|81ù/ä;aæ¼~á÷:‘du‡rò‰Aõ^Ùþ>øLOÿIÛ#êâESLÓŽÅä½õ]¾nܧÊwî,H„:öÀ.müq{á?õ —ô‰'RpÀì£/½™¡œ|bX½X½™ë†µNßyùä–ŒÄ.õÔkóÔ±ãJ,¿NÙ”Þ¸³Ö ÷-Þ³,?Y€Ô±µxÌðתaтޡù :ѧê¢^-O§@;q_™6V)¥@{à>UçzW™Î­øéûµÜŠåÕƒL¯uìÁÊtFÔË~ú¡Êz¸½TI?R¦Ó˵*è̲eùê¥ zäÑ Ì,µëë~ú‡:I›¨·ŠÞ{Õ{WÜOº]ð®XzwUð±øYŸ,Ô>óÁÌ“O?Yˆ!œ;{~Vl?W¢.ØÛwÞgüø¸ [7z¬8ˆ¾8÷øÓ Ÿ²üµ]7Æ”éÃ{æ/éó—uýpêa:s„öQ0Õ^€;`d0–þÊz86²œyRjÍ_Öçÿ°@2õæØÄÏ´'OÎbhô föK¯Î™ë4Ù§ä–WdI¸^úÇ#óÈØŸ<¼/>ýÛyíÞøä/†íu8õüìáÇÇ’é?¥*¼=bÛJW½nÀüG js—i™E3Ñ €Ò8‰½ôLÒv`âù™ñŸ =®Í]ÎÌ|’~䌎OÑïÌ‹¿{I¬wìDÖEYJ•ôŸ²¹Üü@b8¿f‚¨¢Ä¬5“:LçýtoÌÊ›”÷ÆŒ’VK:®y£¤WýôŽ’Öv¨úªA×=º¯\¯”´±bXë@»T½¤5}YÐ+†eMÜ_® žG™|@ˉzÉO?¬¯WÐof hÁk©B'‚tözÎ[k6~Ô­óµêÌW=âÖzAÿ0X_×óùjôW•ôQwˆžûß¹Â*?…àHÞ•82\´¶cÏ|8C]#%=vT,¹ ‹O­a<{~ÖÛ–ð=Þ‚ÂHRé1{~¶0&„Å·¤˜ 2Ëóé…O™,[Êí'u Ñ¥7–Ü›ù,M¶)s—rpäïØ‹–áɦμ}†Jšßæôsú³ nƒ¢ÄLSù¡ÏþÓÔü—¹\Κû}žÚv¡0vâÌëg/ÀmÙ²ô¡G4¸æ~ŸIßÌ-æ( ܧ˜4ïmx@)dsÆÐ`À~$9wi±0RHòd¸ðŸ™Üׯü5}`­ Ñuýð¡Ã¼ÞÜÍR½²ðìóg^ÿõyõ.ÕZ·Á¡Ô±…X–M¹^÷ӽIJlJ)u¬xo,_¦Í‚ŽÇòk´¶£Lëk&]§Ô±´¾r/i£¨÷©FÞ´ŠZ_ôªQ¦-J«`Ò¼hê“)Ê<$(ê(¥‰]±_=7*K`¬ÙpJ©|'€þu^¹+!K Ý©1iÛ`Y–ª€Íœ’;F¥F¥X1E¨än›`´ šÞ¦—ôdB;”ŠÝs_f&ž$’LöÝ%ÀØã©±Ç ÅjquþËÅb½ Äüê…‚?jX–¶s/G@E±,Zô¨k½pÿÊt¯bY”{TyËôÑq5¿VA÷íPõ¼ ×Læ9Ò™î+ÓFÞ´xújÑ‹ºO+Óù¢%êû5}ÕGܯåŠ^×Àú!-·b0¯EÔ{J,®Öe:ç«Iä–|óô£‰ÜRu:Süãôu½:½„zËhö¢ßö™/3S•­‚Á†EÀ‘Ÿ9|ð08À?÷Q§8È®è™1ßÈT¡TbÚ¦¶ËÖ°xÜ»b¶æ§ÿý§ŸþîSVŽhêÊ,–Ï8z ³çgŸ<ö$-N c¥°¯ecíha$žE$BÁ:üãäôùLæ/‹ìÜÑýƒÃû’C»}…WKã Ó´èÄÏå;áÀÁÓ†eýqn’5É6AŽAb§F׉X>È[ \[&€ÙÏ3¯¿yžO†m$ZYÛŠ%eŠÜAæþ÷âÄñ¡ñãÃÙkµò„ÈÌä¬&€6ûYæõ³X™(Qâ¥z¿õ¯—{i@óïU,KÐëêÖqŲ º/Ï[¦ÞϯhËJÁ¡}}ñüZA'úâ:×÷Åõ¼¿6ò&ez—f¬ôÀ.MÏtÝ£ï×ôUA¯øèÁ´œ¨—ËÓ- |(‘[µÉ43Ô²¸¶|õR#ô£åzÙ°Ö„ôš43EýÃhúzE=PYÿ8šþÊG3SdåCõßê êöÖ¥á0»¢eê£)1z“bümá·<ÌGŠ3« å* Áˆ{qç‰å¡•%Ù’,^ûè±Ñ Ú;úñù¹­ñcyg)BÎ}xîè‘£^÷zWÔ¡{IȦ?š"©tNÒ‡÷%:õjáeb§6²?s_,q÷&´Þs­´Ê…/²cG’ï¼~|ú· Ö:¨½$û•¹²–/Xlî-9@æþ;òxjôïRԄܪ¥õ*†e-üÅðm¡xÕ@oSðuÝÖ4ùÂéÂw[šþ‹~üñÔè¡”eRsdö:\þSÎ\‡X †Ò_éGl¡Þqc-¿ð'ƒ-ÒCR‡Pe›bYVAGð®”ÞxÞ²ŠÞ• ãñüZ€¶,æ-ÅwÄókVÑ£Šë¢Îu_Ü(×EïJ3*zT»*H»<ªÕr]ð¨¹]ÐÏià¡&{N./Ê¥óõê2/ªaÒ@¦ØSÔ?È\ÐKt¡'¾ªÿn }½¤3åzu{ë ÿ¹ÈâXümï­'~Kcy¸9){[ Q%»°/„_܋à Pì^ Q°5Bíw‘:”Ù^;·5¼Æ’ÅryW¢-e+(÷®˜óÈâX€Þ¶È„ñȾDæ+ƒ®[šš ·)¹ƒän®˜ßBêaMÉwÀÌpñ’>ýQšeꣅ“Ï ¿ôÂèü¥ììg™ÑC©‰'FNŸ³Öó‡÷žz~LÃ>õ—Š£ø€{HLÃ:}öŸfÇŸHý,w€mÂÍÛß±;cbÛèmK‘ @a¨'÷±À¡Ó¿™' ,|™+õ€XßæOýóìèÏRãO ±b§~s‘þ(}ê©¡É7Ç^úåÅ'OÎN”Õ›·¿3d©XÆm+S¬õ|AߥXë8·©[[E­Æ-+ÏtŸÏs}o<¿ ­u®¨‡Jš™"Ôª…woÙ»ÝûuMŒ]|)™Q+ÎÁ»*”s@ñs"Zƒ­á¡œ’eFUÞܸƒùXSñ¸Ê} Š<²wÀ²¬¹Ë‹Š¢D?«!lYyà÷Rb{ïJ-K1Û1 ZŽÙ·MpBõ1Û.èØ1jÛl(c,£ßq­RjÚ¶GߥÒõ‚VïR-_­ª–å§ïU-Ë´¿ªÝ«å-ÃGkšµf˜¡:±S˯¦éÑ -Ÿç:‘ÏçÙQ§v'ôUAçóæ·=ÐW}ôÐ`B_Î= /¯Ô¨ЗW £=òØÀ¢¯Þ;°¸ÔL½o`ñº —VŒ¯™Z\ÊE×£û†Ò:³”Ó™Þ?”¹¤uýk³}p(óêv׳Ÿ§óyãÿuºði°í™E-Z­ww܆ÙOfGöPJ«ý’·!ý‡‚%|üÖ, ¢ã¦Õ³‘ ³–zN?pìt"1"ìÂB*j°©íÐX,1?jÔ¨7CÓ6hê¦éÜ͹+ÿõóWjxÛÏžŸÙ?RûéÎŽ¬ñôô¥ô~"|œ~wºxaU3Ì}rÑÆÐî?òÁGÔöž'!ÛÈùßž¯ÙRÄ{ãõÔÎ.¡ÌÇbIó_Ì'­»«èv,..Žc†iñ«ÅýäG·¾¹UZ¥‰ò¹MRA######·„¹_EÃ}¬¹/æ@ ˆ!·˜=6Ê Sî«‹c}oêíâ¢RÅÙÈ<:…ŒŒŒŒŒÜ._“¡çW/ÿêõ×^Ç8@ ÚÇBFFFFÞìÇòúXAq¬þ=ý®”Wo°ÄWoð L×ߊ¼U©«ºúÛ_m¥5ÔØ¨[]g½›Ñªv"ˆ­ÿ8)n%Ž7®Þ¸’¹Â˜æG}Ϫ–x-¼|oêPÞêÐþ=ýìYC¼œÚJ¨Šù{Yô#êþ=ýº:o-ý{úù[ž:”¿ÜE¿ŠŸâ±ù¶SÌßÀ{ô‹7ê¾!##wûƱÜ{óí¹xŠÈà9•‰ª¤£0éyEÑ˯¶® ëªX‹ËE¨öê‚R¼…G?+z;A0ŠõÜ«ˆm¨Ødddd7÷Äuíq,ž"uiñÕݺ2ˆÑ²(uyuU5ò7©·%­±QµT{×®OvµÝ+öëxË÷þâѯ¹Ä~q¬ïM<7Q|ß'Ðî1¥xõ«7Ø?ßÒ¢×¥®ðs£ÔÈÚÉ|»æÕXí=lÔY¢Vm÷*ú/ýŠ‘‘‘93ÓP T@³âXÞœÑ9è\†è½øÚjôêÆÖUªö~FÉR‚¯OYÿ½ª??2222­]ÁšÇ zÏ GÐ|¬qtõ P ÿV±Æš‡½ÝœÉaâ¥U5VÐW{ËÞìŠc+Ö[CÕ¢«à;K°X†É¼«ôå´–ÐH­»˜ ×Ã|Ä]Ë[ÒpfŸ[™7ÙíAFFngÖsúè‘Qó[È-å|ö f– ×l!:x®R_h8êšÅÖ\pýƒ6øÖY'û^—¸ºDc9¨:~?k›#ÕÚ{ñIhá:ÈÈÈ[ŽIq,@ 6þë êËzá8î…ŒŒŒŒÜ&왥/ëRê¡T!U˜•[ÌÑV‡Ý‘‘‘‘»–K«¨J=”’L«ð1°É ±;Ñòæ"####w-ë9½Ì6˜–‰q,@´üãX¥ãÇBFFFFÞ,¾|ùòÜ¥9_NîNúï…ó±±ù˜»47²oÄ÷PrwræÃ™z÷ÇBFFFFFnË’tŠKⲂó±ÑB„ûX³κâXGž8‚q,ddddäp¸åcÍ|8ƒq,@´ÇBFFFFÞŒq,@l TÇÂùXÈÈÈÈÈ­ájãX€ó±Ñ$w'CŽb ¹]8{-›YÌ1Ʊ±5€ë "####oö‹cñ´²ý±¦ÿmš¶z©yäŽç‰g&˜³ïâ3oŸiyÛ‘‘[ÈÓïOç®å¸m¢e²ôUÐ0 "p`þòüÜïçØa„Eº±úäs'“»“ÙkY߇u꽩6i'jÔ¨7_³÷ÃìùÙÑ#£æ·&u¨¾¤ÿ`ø·¾¹%¥ÿ.œÀB[ˆVšC7@ÕbÍ(Ñþ˜81ÁÇ?‹ñÄ3­k#h ¦Þ›*¼œB s¥¾—z Uåq,¤­Ño€æª»1þÔ8×Ô¡ÉÝIZþýš¡-ÿ†ŽŒŒÜ .½üâXß#Ûˆx˜Y3"•´ÂÐM"5Å"¶¦ÿ­ä»‰d¯eY ÷®(Ðß ¹ƒ™¿˜(‹c…ÍÇj,ô›ÆK¯¢ÀøñññããúM³áµ ÚâÓÅ{U^O ¹kŠŒ¥p]²X…$©ì° =|3ÁÐÍÉ·NO0M$€Ó/ON0=ùÖK,¦…è*ˆOï[y=-ddä®e€€8]§âaÇêéé9þÔ¹O}|ü©sÇŸú¸*£¥j±S¿8=q|â¥×N±Ç'Nýâ¥ð€V¢W^ O©§@D à}(¦¹wž_SŒc!#w=øÇ±¤ôWiñ0³fÌhf®†x8 ÙáGnôôôlll@4h;c©†FŽ@æzš:TÛ©†ŸÂ ¯ª¢ðSê)Ñ”úP¤è]‰s³0Ž…ŒÜå 妋ëï ?:\v88ŽE€$’ý{zú÷ô &}ó„ƒH„9UÉ])jT{v¼þ–è<‰\Uâ)¼ôà ñÉaãXÈÈÈ"C¹é⺊8JŠ®Yr7øæ ¡›ŠJx]ŠJjb1÷hccCü¸·Q©ª\(~ºËhyuB|rx¯ ãXÈÈÈœâXÀQy>YXÈܸZ° Ìf!{­Ä!˜û|.õÀÓÔÔCsŸÏ… —ëݨp_Êkϼî~6lxŠiŒìˆÎ IDATc!##» Ž¡q,f†¹±°]ü3Pžü‡£¿Ð]3±H±.C7k›Mì­šµ°b“‚2ðsÑj6ÊŸŒc!##»ÊM×UÌÇÚØØ8:Þÿä?ô3Žn®ô›æüób™Ü–Î1ÏVÁhðóÝ–€÷IÀ822²ÈPnº¸®n>·RUyWéKóÖŠùÄ…÷t¸ðž>ÿãÂ{:äÖŠ–¾”®6 Å,“kºë[_µÖ‹— èf5âÓÅ{UÇBFFæ Ѐ8VÕ`«ZX+*0,Ë^§`¯S¦ë×+ôýÈÇYxÿrVHʆDDïC1q,dddøÄ±Œ¼á³ñüóóš§k·3ÿ#âÜÐ͹Ïç Ÿ0,JJ«ÂƒKÇîÓGŽàò¸]‚‰SïN@öZ–¥L½7%®ÔÎöÇ _»½OÈÑWoð¸î¼«¼„vxÚ‘»œÙ#êzž™–ôe½ìp¥8Ö¦ÁüÚÎ}¥Fž:6‘ä¢)-h¢änMÛí°5æ; ÙV7¡‘ཪjãXàé‘…¤³@‘7§+ƒ˜î#BüÌ·4ñè«7Â#R¾mæö)¼ý<ÅUKø}¨­ÈÈ›Ï>q,}Yÿ^.——l]#âX5#ýEfîóy£h®¨cssÅ´e™™…ÜÌ»Ó_d¼§ÓB:ƒ;lXŠ«×ßì8÷N¼9¼‘$Â<®’C"UÞ6µªb›#¶?èŠ*–YU;‘‘7Ÿ|âX¹\NbVñÃÌš‘–ûXÌÿéu(‘Hâ¾!Y"¶“9·œfGÇîõ™µS´ÕÐÜaCÿ]½þ†¬+(–žîÛoßIQì?äŠT…×å[Kÿž~ÑŠÒÂj¯È«¡ÈÈ›ÏPnº˜98ÒÜùX"zzzú÷DÝGxè`êô¿L*Û4@_ɤ¯Ï-.Í‹ |âô¿LLyO/Újè îl ±® XZxzP\y|GÐU,Í5Ú0¨|êP—Ù‹ÞB×Y®Z\ù]#,jh'2rKÊM×UÏǪ ==='žù˜—e‘u6d#uß°íPY""'vj ÁÀC±{eßs‹¶\ü`ªçÆÕFy?-­k},ÆMc¥øžÅã:¢w"º\Þ17®Þð=+¨UŒù)¾óˆƒZè{–Ë#tµÜ×tµÓŸCFn-´b>COOÏñ§>N=8ùÜøøScà žû®Dñ´d ¶CcŠÒ·SMíNÄãj¢/«ñ¸¦(*d.ëSoÌL¾:=ÿyY4«h«ÁÅW2¾éŒû÷ô„õr±®¦sgûX›3Ë7%è,Ùò¶YL¿’¹Âßò¾g¹Žú²ï·G1®æ[‚ë,1¿· ¾WR2r;0@}ûcÕ :8˜b&áÆÕÅ?Güf•%B`Þo[Ò}‰„,Afqø¢­.!V)^QÿžžW7x{xN–.ž+zQ®ÒLõð” Ì¥y!bŠX¯«mícÕÇ ò|ÓÅ—µ¨ƒÎuµÜ•î*!ü¨/­"r]¾gµÜ[Ž·má-DFÞ|†rÓÅõ&űþÚM|Û¡@)ûHZh›Ô¡ç?ºÐ—ÐJ L¥˜Ñ¯…½ú¯d6n\ÝðzEühÿžê Ïé:TZÿž–âõÏĺ¸æù¹·ç[¯‹¥t¶¸?Öæ÷^[ÝdäŠO©hº¸Þ¤8š[Ìò5 Y]Ùkey|'Ë+7 f´âq•HËvèCC,›küE±º!úLÂQ?¯H< Pò¨¼GyŠèl…—Æ4o’Ë o[gûXŒëŒc!WÕ{my‘+?¥­Šcmll|ðoOR‡.þ9;ý~fæƒìÑñþänÿyÁâXD"<ŽEOK–ÊZ(­¢­—ïR<êÏâQñÏB¼¨ŠGE¿§ˆ•—;ÛÇÂý±6“o\½Q+äög€–Ʊ\;GÜ^‹Å±LËÒîU]q¬……ô‘'X´ÕåžVñ¨?‹G½9ÃSBŽº|µ O«kÇ 6d>22r'1”›.®7o>–¸_pô³ØXÁ̵ÜÊM#·’ãq,;´…¬ýý{zØ¿ 8–ë¨èý0Íþ¥ˆ¥‰Ú•ŸKµbÿ¸GŬûç*¡K|,À822r9C¹éâz“âX5ƒ ¸HíN€¶]hÛÜ幑½#!g±kñúUb|È×ë≢Jñ–æòx~~Ô7îåj‰ØÆíc1Æ8222g€Öűjƒ©Û,Žl‡Š¦T.TS·}Ï-Újè îl ãXÈÈÈ.hÅþX5ÃüÚž¿´ÀâX@ÈÊM#s-—Ϲ•\>oìfvxþÒ‚ùµÑ*ÚjâÍY«¢QÜÙ>VCöÇBFFî$†rÓÅu©÷N‹CšÇ‚j"Xó_,PÇNö%l‡Æ$ß©Ê1ÍâçÊâ|,EQæ¿X}zØuzÑV{Ýwwħ‹=uuîÕ>óöv JÝ;Ô¨Q‡ë“Ϭø÷U8K0]\·ikxÿàü qE ô¼Nש¸® ¾ªËQ…HòðþAïéE[ Áíc1ÞŠq¬©w§š{§ˆÎBöZ6¹;™½–…J_þq,¡÷î”™«ÖƱb÷ÊÃûA‚¹Ï絸F;.É.&’<¼oÐw1\êÐÅ?gÛ¡'Þ(ÞüŸ ypùX©ó®|ãX-¿ó{‚""μ}fúýé¨Y-œUbš c'°ÿf¯ùÏ2öÅøÓ>[ Ú.kKÏÇB ÑQÕ_–okóæc! . ¶ò|,Uýe‰¦‹ë’Å"åq¬MºD÷ÁåcàiA5½0¶ÃSxJK|¬(;éT‹f”‰@l2ªûËÚBq¬:ñÒ‰I2@°+êÓïN´ºÉ]„Fű Oÿ•ÌW´¯åq¬Šcb£ìhŠ@t"Ƨ ¹·V«(Òu¨"‘âñ0m9éV··»Ð¨8éo\½á*Óµ?¯è‰{òrÍóˆç²¤øY!mà³CÜ 1á= åFË•¡b¢¯µsR¸o o'šRDóPkSçcm¨CÇ1 j1÷ÛàÎÒðÂÓ'æ ¸Gz»ÀüOºæ¿ç/­ªB¢ä÷ýîTñåXC“\>©u>M÷´x™lï]f~\GÙ&÷|ãyW ,ýJæÊƒ©ÙQ±¾=Áð ÷׃ä«Ãïpô[ô$‡k¢I¨ÊÇòcµé|¬:QêÿÚ¶¹–§_Í€¡+N^VTxìdLQ˜Ý"±÷ªAï”:ÿ¤›ñvˆXTUyšýò ‰cU5«b™¾GÃ÷ Ï1Ž%¢w²©? š+Ä& þ8Vû®+X˜¹5¾5&–^~)?©~·¨KV84:yí”ùÚËö·v1§ÏŒ._ˆ^HOOÿ¯+ÝW‡”éÊÖSDÅù÷¥ s½'òS¢GòCÊ *$¼|—Uóº‚ l·'ñ3 ;Ê<'ß+joi!m`ý›zFFÝáúáÛ¶æU‡@„£ºQ¸[h]Á:Á¬ôôÚ´¼ .¿p*§²€Dà÷DvH,oÈ¿:UÌ鿜nÄÏ;ÞôªŒ«žÝ+ò~t ?7¨ñ!µxó‡R±|ß8=¬ªâXD"Ì âf†ÜãîQÿâW±ÛPÕýôbC@m%T,ÜõQºyÕ!!¨?޵•æce!{ÍŸ]`í·€*Žrø±Ùsðè$›5÷½cÿÏsf\I1 =z‹ÿ‘}"{©!/nï)®tWo·Î_”skxOy»äbt j%–À<-oùA5FÑ¢¯Þ†l¾+ƒÎ¢mQÕ_÷–c¥¢æd×2™8 û‡¯=vôÜ»çbj ä7N€ZÌécEA ï}6/§ž!uñEðÞŒ£cñ>ž‚kîu±ñ„Aµ‹šÈÆ‚ÇKómƒØqñ½Þ âÏäu€‚Πdž0ØÏûIÙUµ«:bsP«3çc¹Ì­|§ó«‚RÄyZÜsújqœ¡÷,ßM¾}Žÿz+fˆ’ÊÍRô’C D ‹ªÆ v]Ë•"9±3a¯Ûžœþ>VÈ«Ÿ´]ÅrÈ[ÀÕËñ~9äy*vá}¿:ÖÞ(ÁT—÷¢\hT«@DGwű¢ÃÛ~õ^õã>ž<3)ÇdWNß8Cx?×»ïå*Ç7$ÎS|ûÎáçzó„42¤ñbá®ÿú–Ôh\«8è» "º+ŽìZ Ýô2,Ó•³¶8¢f4*ŽÕrÎ^ËN½7Uñ222çˆ_]Çšy+G²½/Ãy“ãXÚ 8Vk™ù…¸©#Q-*þ}òuϺ‚/½;\Möª2#êE©à]m•8ÛJ@T…ˆ>–hº¸îÌ8¢áò±`+DZ‘‘›ÁÇÂý±› —#‘‘‘»–|âX¯¿et溂ˆvïC1]óº‚ÈÈÈÊ>q,“Z9 ÑÎ(õ¡ÈŸ…ŒŒÜ †rÓÅôÈ#Z‡Ç±²‹úü¥´i˜æ×f6 ŸAðˆæA|º˜Æ822²ÈPnº˜^¸nvx+9 ‰m15[l±iŸ.Þ«Â8222gŸ8–¾ªwfkæýÙ™÷g¯MÓ°s¹Ü…ßÎZëԥĦ>2tLouc»¼Å4Ʊ‘‘] àÇ¢íÌ8ÖØÓ£Ô¡ª€D"AïU\zæ:‚=/G=[6Tun€Úêr­ø½ºªNl Ä{N0Ž…ŒŒìa(7]LþqªcãXD*8’æGsÃÍÓæ¬Ã§¦?3è’¶ðûüùÿ±H›H@zñ…Ôì ©V}5¹aÆÖ ã§WUi=5Ö¯EŸ.¦ÇbûŒxÿQ‡ò-HšÑ+ ÚIË·%á¥ÕßÎjkÜä{‚ŒÎPnº˜Î]×;s]Á‹/t2}¯‘þ"—*\ D’mˆDl D’©  Ø‘ˆR¬ï–EÞÝ†Ä ¥ÄeÚ½¥Ù oEÞ¢¸‡äªÔ·Iájª«Rï…„ç÷6’?ˆ ôª¸® ßÔʵ±ˆ&õ CÒÅV±ýºj+­ªöðÝ™£ÔØæ÷Üõ[4»^äcŸ8Vnµçc]|!E*P‡Ê@Ìm硆S<}N ¬üèW‰£‰Zò…™ŠÅŠþ¸éF¸¿ÒSi ùˆy‹ r­¢4É÷#¤oS}-bÅüá;C´Éq,±F1ÅÕ÷ç> ÷l¼Þ‰è²ˆeЉQÚÀ­ˆ·ß³¼õºÚäyï¶èkòsƒ®Ô{—Äü®ñ,ñê‚î¡o™è!—=±Þuoo©8VöZà?Ž‹/‘ .=k9Ö'=K$È .dVÏd é …t Ø‘H¾0Û¼67ðË[£Š ±g^KƳU›?.¢©q,±FžÒ¿§Ÿ™ ¶×pPº+Ï«7Ø?–“Ås†ìVìÛ®}ëóøÖë{'CjÁý-îE¹b~oKX™ü&p«â•ŠmØ/yK0”›.¦ï(}¤ì[aDZ’»+çQ{U"u "ýâdæ…æ7}‹ Z£X›uy¤¸:[ÁÝÕÛ"¡k–OK7:s,(¥2û® ðÈý¹•¯¨Ce #÷/æèÀ¹‹_8JFÏf\%¸Æ/ˆñ[™k`BUpÅ£>¾C<ª-3¨IAã2ª­7b~¯avõ²ëÙK–dÈ^ˆôÔÀãcyÛàÊÉ4ïõ³tþQ‹Gqèc¹êÛ^oÐ]ò^»·%Qî†WsO´b™Q®”H„yŠ xZ{âÈ[ˆmÇzVŸ^OK–µ­ÇŠŽ‹/¦l D"6,MC1.KÓbº¶ü#ãË)ð+¸QW¢7§+Å% øî­Å·"_’!JuÞaÞë ©1$øµ“òÞw=q,»¸tPïQß6„hï¹¾9]žGH\£é¢œå­—GƒBb?á×^ÛÝhT™.‰"w³ÎeôüàÇšÿühÎǺøBŠ: õe¨CGöëÔÌã p¨ýʰ+P‡jÑÆ úBœÛ¼ï{U¡ ›ä‚·ç^ó|,ög’Ç{4¨ ¢fQ׸8>â€åd‚çäïÜ 6ˆ¥‰QߺÄöøÖtuѯ],ÙÛ*ßt1?×^fÅ»*þ—GÎ;¹‘¡Üt1Íd{n}skûÝÛ766Ìo ÂÎ}1—þSš:túýið {-Òˆ†#b½_LV²p(†W„imG¢fs…¨ '&Øfó®=|§Þ›šxfμ}†H„épÌ]š;õ©îÜ 8d¶YÛ–ŒèZ\¾|yâù‰(ªSïM±÷Ã쇳£ÇF™aÊ}•ûÁO~ð×ì_;m>–Ú«%vhj¯ªíТh4W›Wß¼žùX}¬Ne¯WÔXîλŠÜ<®ÁÇò™%¤yâXƒ»…ÀÆ 2OË;˜‚ãâ )àÀ›̓+ªá%ØÀ8V§rS×’À¨rù!q,èÀ8x3b®àÀÙ š«VÁÛ‹o^ ¹¸!q,}¬BÒŸ†n¦?×óyªôRuw|øÑ$È­nS×€?| ôªjžå*¹ ¹Ë; D«3âXQ`g+–¾bÙèËùÌÊ\ïÆÐ}« v†(Ʊ‘»€ÇêÌùX!0 S¿nÍ}¢ƒSˆ—P€ÅKùV·«‹PêC&ÏÇBFFnÆ8V-˜~óâù·Ïÿ&M€XNšBŽ:”˜kv«›ÖEŸ.¦1Ž…ŒÜÙŒq¬Z0þâÓOÏ+’jAšH28lSG¶[1bsÀ>zUÇÚêÌfÑÑ&,ðƒ¼u™ÿE7*ŽÕ±ë úbòÍiõb\W¢%Ô¡j¯¨Î<û.'ѶkL´ÄÎmĺ‚Qr"7›€MüD 2‹¾'CCÖ„®Šc~uRU”‘ƒ#‡ŸÒ(®qø 6òsíÀÁ¡V·®‹PêC Þ=,ŒcmQF Dˆ×Ǫ§_ÔvhCû†Ì5 $ØG©CG&†~¬©šÏ'Aßz£'"Bàò±ãXÁùUQÄ'¤Qq¬’Å*$Ie‡;§_JôiÃ{‡m‹ÊɯÉ] BHj¿ wøŸÂW%ç¦Èw7úŠ[Ô#¼pùXàiEaô±Ú‡;ï« ¢NˆOH7ÎÇÊ,Böš?‡àô+“‰¾xj0e® ¾ª+qEëSO­ð%=§&Áåc5p>–¸®yPJ ìZU½ì]» ëš»þñüMjOÍ×ëþu3êô±¶üº‚©ªO9ýÊ$YO =–0òfL‰é˺¶KÓvªOäÃ(ðO®ápùX \W„?|=¹š¹Qåø²k­tžÎS‚SožÏT[ù.àßN—£NK4]\wrëô+“ÄJ Ôæ~km²±jÄûmGesŽŠû"Âáò± qq,ߤ¼{2¹t¸ÃKv¥{}#žÇ×]%Ñ aO© ßÅ7¥bíA- ¿±FWþ vº¾ÊàÐYD>–hº¸îØ8ÖéW'‰•9”X\0ÀËŸjŸšÜuý@ÁbvHÜ„Þõw蛈‡o/¾!q,(:"ý{ú½µ„hqKF®ÙVîÞ<<]t}\5úîÌó‹åðzyzG¬%¤v߲Ђ®Åµ*¼˜¾o²Ç¿`+:¦=£m>¤-.@×­‘'T­/pœ…/¼ûÙ‡ì4ž½áApy Œc…Ô®ùî·.”§bA;WEiOt‹Õ^»·…Õ¶DoìÆÕáW‡æ ÁÐŒ8VgÎÇ"Nbè1-÷g“Ðuzø©„¢(U™+DóàÇ‚òÞzÍ>] æ=øÖØXÍ?£E‰E)3º¥o ™çñþp—Kô8+ƱÄ)øÁ¼kq¬¨Ð—­ô—:OXƒÇÕjì.\‡©]Ðì8ó@xSWåOT«™Ïáë5ÛÇŠRŽ·…âþÅQÊá9ÃG'ò¯2®èou-ÇJ/¤;3ŽE€«–Òkj}ñÔî}Õ^hj‹kï.½ Íó½ÚÖǪê\ïý!å»sÿ,$Ž…@@âXCƒCÇš<‘¦`ª÷™£Ç$’­nÂfDZĈ Oá^WtßÂ¥ù9ÅáeŠãî\mð¶Ç[NøY¾G£´9¨…¬^qŒbÈýVô#͈cm¥ùXÛe˜ËêØ \*°MáÇjÈ|,ïX;1E•ÇϪJ{¯Â{ÈëÛyÛã*Ç;+ä,oJŽR£oËC®=¼µ^à'ÁnƱ"aüùÑS¿®`® Ýœ9›žþezúÍ‹éËYû;Ükóм8r yë~•A4 uúXÞ8tð|¬0Ø`,[V ÌÕØü'y}9ßê6ušÇBn!c áB>î`¦¾lͦS/!@.žMh­nZ·ÀåcáþXÁYÌL¿7ÍM‚ºË5ÿ6µ?VƱB0svÞXµ)€H‹–c+Òu@^ÇÑ„›‡R JÞUCâXÈ-ä“ÏLîN¦ÞOUû< :¤VK4]\—,VácàÖc…`ì…áɧç¤EêØÅˆ;ÕŸlS¸|,"Çbž–;:‚>ÖÖaþ "#»¸‹¦‹ëîŠcM‘ï× ! E¢D"r/I *­HÜUKLÄùÿàñ±@ð´ Ê~=úXÈÈ[‚q]Áª1ùÆ!pøÐáá'”b Rû”Ã?׆÷7ëSÝË÷~lRE[´ÜÇjà|,ddäöd\W°:L¾1ë1׬ضXb/%Þ¯ LªšÏN|I4—3DI—Vó.³Ö.W©@º® 22r{2ÎǪ“oL«qedß°‘7d‰d—sÉûhê`Ø^Y⦎.߈;Ll·o¢«(\`M„øt1ó±‘;›5«4ò¢$ p‡6CöZà¡äîÀC“¯Ni;âC{‡Ì5#¶-¦/ëZŸ¦õ©/ýºÂÖŽâ´6¤XfÛºvSþðЫòŽŒÂèc!×ÏgÞ>CZ=0¡S™ÿEwã|¬³„ÉW¦¨Õ7ôDJ_5Ô^5»”KÞŸ¨v£,Dc!v†(ÎÇBn9™zwª% Ìb†nÔ|¬NŽcM¾:E­ÄáÇS>2Ô^ÕX1’»4mGÓÍUÅèT7;Xàñ±0Ž…ÜZî€w]{Bü»Æ8VL¾1Eó}‡O\¾œS$˜ý(§Þ§Æûâ Ùy„™ñã¡+á —ÇBn5#šñ7$Ž5ù¯“9kæÝÙ˜4xøg©…ˆBòƞJh}ª,GµWÞ –Ëù²ðîbפ`Ø–†ËÇ‚O+ £…ÜF4âÆùXa ëêð^máK0ÖŒ±§@ }bW]|¬ÎÇâ›9ñ-6¹·îªWÜ•* ×Üþ†çoá=¬óž»®"J ®wÎôoêô±¼q¬Sÿxª3ãXæ*Ì_Ö !Šf<‘Tw¨ªZadàf¢›Íx|¬Ʊn\½Á÷'lUoÝ«£Ÿ[Cûù)µµÓÅ|ÿÆjËl­‡äM¿qõF”{(¾ëº¼7ÙXÔéc‰¦‹ëÎ\WRJó”ì2µûÉݸ({{Áåc‘Æ­+¤ù~»p%s…˶~g/5vˆë <<=ˆ]×åmÕÌ^¦·„Šíÿo#ëôIDATçg‰¥yËô½^WºX¾È¼dqßáˆ÷!ä>‡´„¥Gù¢\‹«èßÓﺊ _ º¾7ÙXˆŸ®` NŸ˜'HŸ9öôhr Ùêæ Üðí7$ޤ™»À<öÚâyØëÌ¥ƒòˆéQúû^ý`êÁÿÉ÷\n9ijÄÒ‚ò»ÚìJwÝWßö„ß±|^7A-a9ƒÚToеxKö½oAwÑXÔécuKK»ß¤Œ??Úê† üáòEÇbà Ö›våÊÏó¸tPžŠ­ò½F®Y¯?¨œ öÝ=VZ”zÃuÄöW¼¬ñÑïF=õ†è 6ܸzC¼c%`˾ëÚâ}nÔº‚¸?ÖØ‰Ê¶ÊÐÍôçz>o)½ íŽ=šlȨwD¸z» Ü‹AüÐçò‚ÚP­v•&Æ{ª-ÓÛÓ÷ú@PDRB=×UO9œùm÷z~üÃ`“ÚÏuHBž¢-³ogÔéc‰¦‹ëކïÀX±ô˶ˆ¾ éϬÌõl«ÛÔEðö‹5‹kþ-ˆ cƼþMÍšõÖ9WëUˆ:è\Wº«.oÎz®«Qíçw˜ßy~¯BJ¨§ý¢jCÏÑXÔéc‰¦‹ëŒc…Ã4Ììucî“,8„{X‹—ò­nWÁ·çÛÔ8V3tØ÷÷Fø7áéá)áÚëñ4ªý¤7ªóŠê¼– 6ôïéŠD"š:}¬n‰c…`úÍ‹çßZ<ÿ›4˜å¤Ù•škv«›ÖEpõ|ÇûÚ¢wÅ?¬ùö¾C4,ùFADfž„8™ÉåE±‰e‚0Aª¢"æÛÌÓCbi.ß4Êýáì{Õü΋³¦¼WÔæ zƒ®ÅÛß_ÁÕrñ]²Á¢ZÔécuK+ã/8ýôEER-HI'A$BPŸ-²M‚«çÛÀ8–+$öµÅC ¾G}{è®s+¶Ê7¿·(ï¹AGCïÛfo~Wº+¿«.æ‹D¼?áW”~EQêõ½–ºBZ.Ʊpt{Q§%š.®»+Ž5ùæ´ú€E*0N‚õåÕ^ؤ`¯ šÇj7ªüf·³Ìßì-oIÌgbEüuE>–hº¸ÞJûcÕ‰Ó¯Njqmxÿ°9h]ø7yWÃ5m—â» 1¢Iðd´çþX!¾Hµî]µo•Õ.uˆf NkËïUN¿:©íІö›kH0°/Ñ‘ƒ‰Ô7áþÿPÀR\ÿu¥ð]‰ùþÅ®<Þrº .Ÿ÷ÇBn1É,f¦Þ›¥„¨ë×üo³QûcuEëô«S‰>mè±aÓ²d‰è«zrW"÷¥žÚ¸Ø wy1žÂ…ËP…ërº b¯–44Ž…Œ\O<7‘Üœ~Úó¨"R«%š.®·Òº‚™E PLJSÁ¨Ó¯L&îÓRƒ)sÍ"뫺W´>õÔÙ°µq}7]ôF¡¼)PwZ).‹4n]AdäÚ˜?{ÈMâF­+¸•âX!f)§_™$ë©¡ÇFÞŒ)1}Y×viÚÎHë¸{Vˆ×Uu˺üá¡WÕžq,ddä†0ÎǪŒÓ¯L+5|P›û­A¶ÉƪïS´Ul;ƒRˆ‚–ûX œ…ŒŒÜžÜ¨ùX¹?œ~u’X©‘C‰Å¸ü‰¡ö©É]Q×ì)BÜD˜'ºR ÀÍòž‚±@º?22r{2ÎÇ Ãô¯g´mÃÇ´Åèº5ò„ªõ ôb£ˆðÄ à£rò±{ >]L·ó|,ddäúçc…8‰¡Ç´ôeÐuzø©QHts…h*øÃB¯ ãX5ðô¿MÓM¡#7Š«}Ú·4ã|¬0èË€NÆTí‹«;TÜL¤} v†(ÎǪqLöEf1#ŽíxnÔ|¬ÎŒc ƪ¡ôšZ_<5€{_µJ}(Á»¡‡…q¬ª±QÃN[š1ŽˆÉi ¦z=~ 9lusn¸|,À8V}ŒØŠh‡'g3÷Ç Dl—N¤X”ˆ-ËÇ‚O+ £Õ_±ùh‡'§Í}¬n‰c??V1¡›óŸåè€b&Ö†J›Ð4ƱÊ-ùõÃ÷ ²¶áÉçN¶ü©«q]Á:`ƒ±lYy0×)YͯXŠ¢'´V7«[PêC Þ®+X3#¶"‚~Íð¡4ÙkÙäîdöZ6¤„ödŒcÕÓ03Ñç?ÓÍõB_ž\þ<Ûêvu\>4.Ž%îÒ» Ìw¼å»ë¶„]Àéê[¾¿&û²•½–Í,f|ùÌÛg¼g‰ÏaËŸÆ ÆùXµ`æì¼± ”Ú2H9˱iˆ:T^ÇÑ„›—žVvùX®2›Ê¦a×+¶y`“Êîc¡¹Ú*ðý5K«÷³«Ý){“׬c/ Ã:€#SÈQÇV`¨p¥x­í —ÕÀuE-²Øý¬˜Î{©!Ë îo+jßÞ®Xš¯ó3Áކ·D¼±]»ÍVDø¯Y›Ÿå€ø¼¹þ  üùçGÁó÷RZ}¬.š„©³3òý:!„À€" ±x‰ÜKƒJÈY!ýVìÒÖ—?ÔÀùX¢æÌ­ ë„2ß%$Â}&1ÝëÙ„øFìôþ=ýÞü^ý`êA1?ï/GÙ¹˜ÍÕÖBø¯YƒÕ<‡ìyÿ ¼y\:$'/-¤…Ǫ“oL‡~B!ž|jŸrøçÚðþTëCco¯°Qq,Qõ@#jî3E)³ÎºàJæJHž+™+¢ç­ÍÕ–ƒï¯É¿öÔàc¹¾ˆåx5{Þ¼ïyöµ€•Æ<§œ¾¥5ÐÇM×8Ë“oLÅz•‘ƒ#æšÛÓöšD"ÃûµáƒIU‹ùžâ»ìzÈBìâ!ï‚;‡o¯°!ó±\eú¦×££ô…UWPù!>VøNˆ¶‚ï¯Yg‹ý«ö¹‚â§¿<ÕælˆÕ½q¬É7¦Õ¸2²oÄȲD²Ë¹Ôý) 4u0p¯,Öiu­ÔÎ}7#¹–r9± áê÷mB+(Oµºy>Vôz}k¬¸‡¢Ý¿©ÉÇ I ÒâÑjCôœ ñ±¶|+{-ð_&_Rãdxï°¹fĶŲ+9­OÓúÔ—~=\C"úXÕí*¸zgÍŽcÕ[ƒæìúšÏ¾òG,'¤—¤L=(Öå{uˆ­…ð_³+$%H¥ð®+:åÜúX¢éâzËı’»Ãþaò•)ºÖ7¼wX_5äm±ìR.¹+‘Ü¥Õ¼6®ï¾YU<ÚUðöÎÇräÖ…™ þÍ=(],‚¿Ñ³t^ïuŠé ÄÃx:LÞÿu•r[¾¿f=q,~>!8.+þ¸ÆûEɽµ8«2&_¢VßáÇS>2FWõ#¹KÓvT±¯#`H  ðí5d>–kJ ‡7=(¿ð¦ûzZÞ<ÓÅ AÚ[NPK\À^Ñ–€ïE²iÂ$x#ïYü9‰ò|zGŸúþø–éÍe,kÍ>–7Ž5ù¯“¸® ÃäS4ßwøg©Ë—sФÌ~”ýyB‹¼Q–‘âFË¥}óƒÄâ#¸BNìB¸zgí¶® Ø¶F•Ù<ÞÜŸÑ0ø>á'Ÿ;™Ü¬¸çYËŸº¸!ë N½?Õ™ë μ;“¦.\6¢kÆØ3)µJï*ÊV÷!‡*íZˆži¿uƒz¬mˈ­ˆ _“­XÛ¹íÌ]Ǫ t]Þ«-|©Æš1öTŠR•¹B4Þ/à¸?V=ŒØŠh‡'g3çc…Á\…ùË:!„hÆÈIu‡Sý']!6. O ªì»áÚí ùE›vxrÚÜÇê–ý±€RJó”ì2÷%’»q‘ö‚ËÇj·8ÖÖb¾ž7@…}•P·›†nznq¬@œ>‘&HŸ1ötå­›R JÞUûı¶G Ô#Úíðm7*ŽU²X…[?Ž¥Ýoè×cQv"F´.‹H„ű˜§åú¢ÞC+{-Ûò6 #Wä|,"˜.®;0Ž5vbô¥wkYϱ9Ÿ.RìUa ¹ƒy+ű¦Þ˜&¡uâ—㪠Ñþ  cMž”%Ùvlddävæ(ÑDð±ZÇšzcúø3G*æA£Õ=(õ¡H}q¬‰ç'Zq¢TåcÑÍcMŸ=þÌ9V6ئýÓc?ýôÃOóôãÏA£Õ= ‹ca¹ó˜½ˆ`º¸nn‹H„™¥Œ=ÿÙù#á»pþ“óœ©CO<}BÏ™þ^kGD_߬µñ.’[h¹UÏþXÈÈÈÉ­ˆcq›™Ú5tîìPÅœ›¶Än4Þ*ˆ¿5©/Ž…ŒŒÜ‘ å¦‹ëæ®+ÈÊQwÆ d?!@ûÔÈ—VDˆ;+†äiRí/Äßš` ÙÃPnº˜ž~z3âXc+÷7ÍÉ7Þê÷®˜§å¶«åðîä[ƒuqyTˆÖBü­™Æ822²ÈPnº˜Ösúfıfúþ6¶rOìÝ‘ÆÆ±ªÚŠ^´v®8VÄrªªñ·æ½*Œc!##shÝ|,ugl¦ïo5DZÂ7­gÉàÒÞS¼‰AF̆‡ø[SŒc!##{ uó±ZÇB´Äßš` ÙÃPnº¸n÷8¢ó þÖLc Yd(7]\oá8b‹Bü­y¯ ãXÈÈÈœZÇ"÷Òé7gÔ±ù}öìg³êΘº3vñ󋳟ÍrVwƦߜQv6 :Ä–€Ø¢ÇBFFö0€«çÖ7·¶ß½}ccÃüÖdIó_ÌÏÿiž:túýi¨³ŸÍZ7) ]^^ÙIFÖ_bK`âÄÄÔ»S½–e)SïMMœ;6Æ ÓâW‹?úÉþšýks÷Ç4Eħ‹=u5ï…ŒŒÜyÌ^¤øy¥3ÝÜý±/ħ‹¿\ãþXÈÈÈœZÇB ¼ å>Ʊ‘‘] àÇ,–k>P@ š€R €øyW8 ¹ËÊM×Í…@x!>]Lã|,ddd‘¡Ütqq,ÄfC|ºx¯ ãXÈÈÈœ|âXé…4Ʊ› Þ‡bãXÈÈÈ.ð‰c a ±Ù(õ¡Ʊ‘‘= 妋kŒc!6âÓÅ4Ʊ‘‘E†rÓÅ5Ʊ› ñéâ½*Œc!##sÀùXˆöïC1q,dddà|,D{ Ô‡ ÇBFFö0”›.®1Ž…ØlˆOÓÇBFFÊM×ÇBl6ħ‹÷ª0Ž…ŒŒÌãXˆöïC1q,ddd` Ñ(õ¡Ʊ‘‘= 妋kŒc!6âÓÅ4Ʊ‘‘E†rÓÅ5Ʊ› ñéâ½*Œc!##sð‰cMþë$Ʊ› Þ‡bãXÈÈÈ.ð‰cM½?…q,Äf£Ô‡ ÇBFFö0”›.®1Ž…ØlˆOÓÇBFFÊM×ÇBl6ħ‹÷ª0Ž…ŒŒÌçc!Ú¼Å4Ʊ‘‘] €ó±íR €` ÙÃPnº¸Æ8b³!>]Lc Yd(7]\c ±ÙŸ.Þ«Â8222gŒc!Ú¼Å4Ʊ‘‘] àÇê¹õÍ­íwo?þÿ'¯ë¶Ce‰ØMÜ›¥~ˆFcâÄÄÔ»S½–e)SïMM<3Á3œyû ‘ˆ˜‚@ ºSïM±÷ÃðÁ©D"‘Ëåd‰Ìýû“°±±Qð±R»”½û£÷îK@±‡‹@4âÓÅ4Ʊ‘‘E¢õ‘ÄÎD\‹ïýûs,©`±lôšY²ô €q,D!>]üË5Ʊ‘‘9•%BÁ&’ űë‹%K@›PÇÀ8¢‰úP@1Ž…ŒŒìa ¶Cdf•XRÉÇ"’Ì­ÁùXˆ¦AèCÁùXÈÈÈ*R|,nÍ+‡@4âÓÅ4Ʊ‘‘Eb;”úXP´f‚•C  ñéâ½*Œc!##sÀ8¢ ô¡€b ÙÞ8ÖøÓãÇBl6„>Œc!##{ÀÇš~ãXˆÍ†øt1q,ddd‘ó± «àc¢Y”Hd♉äîdêý MCPëäs'“»“¸{ÑÅ`q,“ûX“ÿ:ÇJîN¶´­ˆ®€ïWl?¢ëáŽcM½?åò±l"ÉÚN-¯ÃðÁ)¶WVžøYœ}Òa[o¡F]zthöülû´5jÔõ빿¼žhSd‰ŒìÐW,OëÖßnm¿gû[SÌ-ulr\‹§v©‹Ö—éè‘áa@lä×3ö}±èŽPnÙ° ȹ\îò<»±±Ìb1’%@¹§•Y²ˆÔ1‰$S‡†èÜÍœùí@Ko@ ÚlÆ(6…i€Â—?6bá{@zë›[ÏþÃúM=—˱ï†Å˜VMÀàãèQ£F5êr-ŽHh_r¹œ~3?÷ïO2 ˜{E$·¾¹µýîíÿNtÇyf¹¥mƒï¤¨Q£Fº=ufɬ*Že;ôò< Ü\@Ï­on¹ŠÞ~Ïv@ ¢¥mCÏ­onU”¹VCZ™Ë Ñ€ù5}lVÞƒ4 Q @ ;öâÃÑP‰Ýe ‰B 14€* âD* è @è½)_†¥h"ˆÝÁ pX q`oR+!}c@ˆ¨íTââ'#…ŸÉ: à¸T6A”t¢@AÐFb)|mÿL´ÍŽtàP EÆ$Noíe•R&E‘Ñ¥ø(ΓQPÐa bÿíÊÀ${($:b(@‡Ï B›³ &„PHÜC½÷ÒHš" ›b HB…4B Vîæ€²ñ2± ‘ˆÝqSIálŒ$T.[c¡-Ã6zŠ2é«t¢•w  4'i Tâ> Š}‰æô׿S €Úæ‘-ÿ:ÐüŽel€01¥=õ…†€÷]h˜Wèø@…VáÆŠ¢ü2) ›qérKÅ&Í ÖHU^q‚¶×ûßsª Ö\É2 XB•ÄtRA#T Ä:óm"Vˆ‘„P{+ïõó Òá>œ*P ªé}íG“_Z\M)÷îíÀß‘©šb—Sî‚0¡™9Qq€ZÙÊ~%jòݯÌá ]@ÛŠÅÄœbe3¦€Q²¤«}úî­ú5U´‚¢G¸J‰^?Ôô…z…!4Ÿ¤Bˆ$Ö‚’‚Pœéö‹3y„t™›I X€ð@:^ p ÍI¡©‹¨}A€0Ñ0õ˜Iÿæë³gÒY‰LæRå¶È´Õ>Ÿøô“ÝÖ3m38bäEüÙ[#~ã:´M”ý¢.‹ Ð\.½JË’€ZNÄDs¹D ùj#á•H*‰òkI.ô@ºEL”†VɈ´, ½ìçVÊVš ]˜¸6/S…Å ¸ÙãK¸‰TF@˜òw*@¯Äæ<`k½TµJ5‡o_*áÄT$|Uç'¦½Œ›"Î&þ˜•×ôÚ60²Ì{ôk¦*z2Å\!€‚6 ˜­ƒ­¡Ìa# ]°– ?LgTŽKJ…@Ûz¦‘Óæ¼W‡¦µ©«O]¡¢fÌ’Ò)‘aJQ“w~åتÊ6Kp5…˜…ˆ¶›`c„.|¯ÎðþdîÚ$×»Š&Ut•ýÜ lÊs¦¨Œò†WZLq² 6ãx9žú4¨0ALâ2è8PXAx ¯°y±¢BˆW<]~¬â„¿ «¢”WÇÜÔÑ«YKú˜ mâÉYƒùX—¶ü-˜<5Ù¤8O]^‡@ÛdA¨ÀȈµûZCÒ‘I¦ˆ‘„ì·ÉM¯MMÒˆgO6±¤0bÂD9ðJGR þM½ÄRƒ$@m˜«¬ bnälõå §¹)ÓþNøKII ÖÄî¿ù·yäi-¯{iÏPGQSC [K@'¦äû‰ÃŸƒ«+üîeº²µ ú3V6XÎw¯ 5+ ±"pŸªƒ»‹æHLà@…$2Bè˜/Â@[“Äh˜Ê(òL—5,è©‚^åâaäÅ{ïßÝùp§ ²wßß¿wáÆëý·:/}'úÛ†>ÿî½”h˜*€ª0Ó1Jlû¤­è@)@%ÚøþÇ£m¿Ùæ‡F¢lALLÛãŠ8uûl¯×Þ–@JPV}»°W‘B¶[áBßk‹!t‰ ýL%h×€%*¶i ¯»jz±+¡:5b+ Ȇ¡VÌ…!b+¡éë*‰•©×¨‚3M—Fh :k ûMš¨ð;B€Nõóè L*A%¶«¤å$…=Ѐ1ùÐ['©n4­½ÊTY „m*Ñ:±=Hh ­¥¥èÀd‹²×+$Šrß%uìºË®›¡ÂDlj: “ž0m^HƧÐïÊg´¨º÷¾¸¢Ë1Q ´M–˜D¨«# u*Ä®åu>L³„:‘Àv“P[ãVHeª?Dj@+P7sncÒ‚Á¶X\íjes_•56žæ;µ%MSé"}Ï%+P€Š§<8w(4”3ï­Ó…©gU„¶«[Û†ÑôF¦ZO ù½2ÚÂ(BnlŽ|VX8ýÍ©J/KÍK ÖЉ5Pé B•°1#V‘˜~°ÉJûÙÚFˆ~²éÉíYÀfQ¿‚­-›¿ÚSü¬3¨åe„ëhÁ=(ÐH”QT¼U˜(êlð lÊ:Ll_Ž>›öiaN4kñ2q åJ¶„T)¤–TÇ&š:BÚUõþ#\¦8m‘©¯Rá{}ž³.ë¨ 65'É}kK&áë$D*X“†¢lB+2fØŸœÈ&XahÏ2­°¢cø"Ã4"6Ú ]®Bߨì$…Ö¶JÙJFª»^üÖ6ÙçÛ›ßþÝÎïFºþâ?þÛO1wùÈ‹{­B¡óókÑÞ=¼=L[PãWóÙT5ÖÀV—Æt¡X'¶)d¾"g7Sí²Ø~'»”έ¡À¹~ѶšVÞ÷際֘ &aaÌŒvp$@Â’S“8Ú*/ Ĉ¥ë Ö ^b…X¯„8õAŒ•X!ÄŠ0ý!•xA¬’PÙ6À˜mC8;9'‘æ^`LÇ*-2X˜“•P¾Ô€VdvFjðµXt¬U@]L7ÔekIíjÆLǦ¹†R$ül§ÜHAß*hjC¯xZ…‘ðèèô˜ˆ-<æCµY“Øv+¶5¬âðLQIa:^\Á‘ubr0V6L;ÄÂÂönW¼î¢}©XÃŒ¶˜” Ùþä bÛY‡J´Í#Û®Sv;U­u L€½]#P¶s5µÉ 7d ÉÜEI`õ 5„ZPbž Ÿ­}d4B !TFC@ãÀŒ^Ùy|ĤHx`ŒÙƒ  ´+Ò¦YR¶¸T,å¬b°#Dœw¦Ísö†”± ¦áÑ}wÆŠ®“P%1‚X!ì1¥Ä* ©0†Ú £!·FndÄ7õ%®nTÏ€“­ë|‹Eå ùkäuÉœtŽ)©)žŒо¾À%¸=èÐO%—DöÑlÒÖ¨é†V]ÅË/h¿bD‘ ±]—T§ÑësÍlr_'¦b×(0¹ût^X„ÚÊi 3X™„0ùhÄbcJTl-¶Ú±Bû^î]¨ßeS1ÄŠÂ5^V[À{¬ \qc…¶íH ïšüòôº·²¥#† Š21äòãåNÍÙï½w¼ë'¹‹)¯ÿ¢¡_{S5¼ÙÐÐÚû^‹Hk‹Tˤ­ÚÕpš ¨MR,ÒSvx‰îï¿`õôUå³:Fb1é [ôÔå^—)‹þH65Ь—@ʼn´7n|ĘR¡iÔI{͹‚@„ ŒJQ'Þù^À¾šíÊÓ`1lb¦47l¥n>Ÿ:¶žI¦×¤S'u¢ìw‘†£² [3k Ÿ{NSÁÕÒ,5êïì6d -óÑQy 6ït`š ÷Ö\ǽ6]ÀUžã;f&ÐÎÇ”ï¡Ù3løtë$T`ºzØà|/`9WT „ !“Ô¶›¤è8QHTh$FðF¬l FŸRZ"§ëüÉÆx]âKü™<¥‘m„á@)›Ïo~{óÛqÿà‡?¸ûÛ»ý~À½û÷Ü¥ôÎ:D’ê„ÁÕÔlÀàX˜þSjLÔTòØãš\ ]±ƒ 4ÛWt÷ÞôŸÑ}ðz³}Õ|–ݬ?´?s„¾Oûa¢b²P‘´4BÙ.BÊÁ°VÎ÷‚¾V ØYÝüiŒô¼(°§8´e:ì¦Lv®¸SE ˜Ä¤zÁ›³C‰Ëya,@Ôô’µ)¥i̳¬X—ÎÉÜ.š¶P%¶šVvÅT+f¼&Ýy“5% ¼=ÑY¹}MÈß"ÐTÐЕכb/6O[ðKQî°“kl‚ë)maSöF ¯¸P'±i±ùŽ‘S…×ýw³ŒÉ:‰­×º«¹Œß¨×Ø#mœp½XÅÍ?ç9¸%NX Ú^‘N•¯ûïüolç['šœ%í`“rÚÛÌ„k<¬‡š±!hr&ÒñŠÂ"G;BáÀJ ö½0“€œþ³BÔjÚ­5‡I(3Ì ¿Z!ÅÖÓ„»¼lº`'\6w‡ì«k›(kaŠ­°B;iÈ JîÛTÖDºŸà›I8U©¼±ã ,Zɲyb‘ûQ°^½~°¦`*.Äl›IœÔ`%ðXI°L¢ÝwAã_¡Íw§?MdŒ{&×<êÁñOE]‘%Ÿ†2¾wÊWùÞM:ñý‘9}2¦Ï=Ù·sÛÞQÌ:\`mùÌÚ5̧g†Æì‚Ø$¡²†çÐzõ:o;0m%‹°FÈ0mÂÄŽ$ReMƒ¡7o€à\¶pêMJ¡ ¨°jð]OŸ^úôº¹½Ž¶@•Š…ÛÿßíèÉèÝ÷Þm4®üÝ•;¿¹³¶¶æ_hgñg·„ßx%þì­ø³·Âo¼‚ýô<”ÕÖ+¦dõ÷ßôOšê#Þw¯ž¾Šô•«í«H”‚6ÒÁÐl¿bt.·ˆÚ—™ݽ7›íkþ½¦m3¶ Ú™«|üç¯øúÆÕª{ß»fãZàÏ™_¯ýùþë_߸3HFU$™è©9°½^×—]b@¯„ ÀŠq13FÚ¼Ìhx>¡þfz]XÍÅ‘{ÜØXº©µ²»š—¾ü¼œ  x³Kš»&áþ"×AÚúÃGUmçLA+òŒáþ¨UxP ‚D oŒAÅÖÀtÂT šîµñè TLq¶‰í“Ñtž’ÀÎêéWÍH('ÅRF Õb’€ÆvEÇæx“ß yæÚ×7®‚´EsÃü‰îý×ÙZðçû¯ÃôŒ‹oˆ­39R+ôí¯„ Ð1 VB¬X¯OP ±u'´ï;m›ó:1÷»·FÖÖªØÙö4;ÔŽp_„BÐn¾7üÚBÙ}!1v¿ ØÑbWQzöm•€f¬¸ÊÅ+A¦Âcü^5Ñ0Ÿ_ÀgTÈÝ5úPí,G{±ÍÓ™ AS“¬Û ôXmDQñ|#Ø<ð\ì|ú@9bæ˜ ž£Çš7]çP1¨Ä³!ÙZLk/dKuU5j%V‹hÛÕÓ< †ÀTîž¹‚§ˆÃ¾¯ïçáì<ù0 f;!ÍÄ´gÔß5‰™(+ ÀŠ(åx኶ã @ ÁoX!ÁÄØ™çl¶¤ÆÆkKØÕ$‘{SSù¸ÈÙ€¿MÒ"1MP ­à €$ÖÔ ™ÖÈ|tŠM\ÙÉžoµf&ýwT€4ϧK—FmfQÙE#rJ >«²Ò„Mÿ´‚ÈH‚Ã6]VÖØìó¤IsßýÂŒÿ&d£=Î{TŠ “Ʀ’Ò^I³æ kiÑzÕ”É_pŽ[Ó¦òf¨ZG¢ÌÈ}¡¾°ày^®ƒÄ²žíÇ”ÉS.ñäu¬㦠ûi$±  ¬‹†ë„¸ðY[€ 󬶀‚û Hd΋ÍLìD‡Ž¡Œ¶YË'|ã}º Ï–55†¯Ú©µÞ:·eޝüÝ•þ ÿíÍïöÂæ^ün¯×3çSÖ4>ðE®o$„Tÿ­þþ[Î\ÁNÖB«´k>]Zó©îÞ›}çc¡©ö×:)£þõÊ3K4Ï\U)Çøóý×½"0-–½¸{ÿõ?ß·×Ä4ã ¹q­¹q-í{0‰Ý’Jd½°Ð+¬Ä±:©CLž€kÒxÒâÔTIØŠ’^ƒ×½ ?õ‡É÷Ô³í·³ô’O<ëEÊ©6Ðä!ï7r6ÀØtËë± [“¤à,6Õ(Û~Y¤ê: ­Sgò†ñª$µ´×ÈkŒ €ò€¢Ž”2Í;uÊ^Í;H-Ô ÌOÓ1w½Ü§’Æn÷My¯÷Â$š ßÍã§a)pž›“]J +T ç×òòÆý „QÖh—1ç”ïÎI³ ¬SˆéSâh¯´[ÅÌ=o€Ëm¨xA‹žPˆÄÊ]ÁLÿ¦ïήr’›”¡<”I᳂1×'±õ´¥äµÊÕ|Jhš]OnŒ‰+ ö.Î ó™»ðmFXm‘ðäÑgEh—lÒly‹&ì~áOÕöì%œïkÞ< Dê!e˜±±5gÚ<õ$Eà¯>@ŌʶIh•@‘A΋®ÜR:³¤q^ƒ—§4¬ìÏ1– šr +A’Ø›9º 0ˆI—xW’lÉId°_'Xd$äþLóר¬ö¼Éna¶Ž2žæ˜lº:˜b(–C—¶¾c*õ^¯×h4º½n£ÑØþŸÛkÝ¿÷úïîÿôŽ>{ç7á¯ï¼ ÀÌåŸÜÁþ[Æbap=Ýñgo`{F:"T¸]½P0æÔl_õúâ ßxgRsa™¦·ÙfGÎ̳¬§}.4ª˜êh3Jßå"ë{Ás¬Íw‡¯Ú©Œý €5Z wÎXfÄĪ7dh6þÂ)%½1 ^SËx½Ù3nº³¬R‡€úÄš¦ØnŠõÔ)uâfpmn‡ÆM²;3¦¹°ÙÆŒ¬pÙDÄVjÔ´pÏ÷"¶£Èv6?hõ7´l¬Žm甃ÔN`†iCðè²iìy°.n I·ÀÍ&PyìÂ,Ôh›œ„ú=œ5ÜØØÅ-ÀNHö ÄkÌA(¡®­33X3iNaðjZ¤ÿ4×ÚäOãÏMu}krŽ6 E“Gl.Ãf“}œ›ÀZJ»Ú?ÈCÍ_YËf() Ï÷™u/ÀØu/mß%ÙZÂh e§É¸äP¶Ûí­Ý ÏÔĺЎsÁf4iw ³b#Tº \FÔ f`,U¶àg¥Ö½ 3†rVÎ Y hÍEÒŠ¿Mž)úÀ­Ù¥Ð°,\¾¸….&xú•-ÝÞùMtÍ7¯_Üù©¹8­§Lß vð\ýÆ+*@Øz%ÞË÷îD€ÕÖÕþþ›ýOèÊÖUïW›¹ ªyú•î'oñeší«Ú~{è§g¥*¯–!I›ñm¶¯u÷R##Í3W›g®u¼Nnô§çÝùõkþ;Ç{ŽÄÞ3WðºÔJ¬„j1BµBF´ŠœýüA\Z÷"•u ‰°ÄÓgnôš, 6ƒRv6^‘ÂÛ,¹/*·îEÞý à^Y2¦QÙÕ5(xj ŒøË®{ÓçäÍ©3 Íè±sº´YÒ_25öú Îm<Ë2ãMšß4e¾6Ç1õÒLŸÕv|õbߟ7%•=þœ •¼(9xú"À¹Ê»u´8[akagrYlïå,œH¢*rŰÕhâ) [ºl‘Ñ IDATgÚ´md`Ug–’3S‚ 0Æ$BÙØèšÿf’ÈT¸¢bI›.*“Ð^¦Õͪ@Zy‰o l&Rcã6aq½L®© yáÇ$5XÙΪd&þĶsÀÍ)bZµäìiÍ?Þºö)6LŠå¯"ÅzHSËíV„³˜7²Ò$³ÖÈÓÓ$iÊt‘ت‰æxó<Ðt„‰ŽaV_ðl$^›Î>dT0å“gZ¥6‚Pd8GLa+ÕÆ+ 4=Õ ‹$^¶ùNýÉ”ÉÍdnê %·'›&¤?ì¦]’ߟÆù ³5‰',hx%¥þ3¾P´î…(sà6â1ãìhJ°ÍŽÄX/&n­g79ÎÅ?}05Ç52äeDSßæßýtçÃûû—Ÿ>ûOŸna?h4ž^\¸Ûkx+Ânÿ×½R‹aÝÂ5³î·a!¹jÒ1 •oÓ%rz‹6‹‚u¦ÁUÖ®áw?×К\hH¥xÝ 6„(çäåÉJë›æ|µ´5_Ó>/n™E«Hxí Eövš¸åЧöÒßÌe°.Ö!àM1Þ×pðxÜÄ}´*;&&n·$˜†ÙmfæÛosóGx0ÅÎ’‡¿; ]zÛ°Hb³L“3/û ûᤶ¥P¾v̱i(z/ecN™‘}lÃì‡â ·)g{§ôOüË­;‹ó 3K¯Ø¡h¬ > ÕÙÓkjYI‘Ýs$½ <©dâcR#x£sajg´ó4±fý“¤éu/HSžlœp3 ÄHÍ)°VtNk·9E‚üÜTÍM hi;*ánžmÀK‡Ù Ç›4D…Á[­Õ°}(Í}_«Èy)­„¼8)sy•'“¡[…œ ®œX9«Üª†üÉŠ'<ûQ5EQñÀ—ÕÀß5ÊTã¡»F ÍRq‹ëXxöi¤Øyz²¥€l®y³E<×(·œ‡Àÿ6Ù]×­9„œõbEÛEi\7…Î n—»0sMÃÄx×Rç#Ð!m¨ޏîÅH¶ŠY6*(– ¸ñ“Í[¿ÐêŸvv±y­õAKán -<Û|øø ïjzgWUù3ý(vUSîrxË.yÉóúñfÿÛYŽ_MnÌ®ÁxÛ›DNáxóøÉéÏÙá}ÉžØP1—;ì½”!mgeW-±µ«hn–V Ýt&(@›Ñ“p;Ħmgu³ƒRźìg®MûĦ¾æo5µæhÑrÎP‰ŸYlõqµ¤éFkrdáIíÖŒ‘ò´òz™n ¯7F2Ñ©u2úæeÏ+³ÔжÂÂm¹66Àváxô3a£ý6ÉãÛ”“P×½P@jŒp¼îElÝœÁ³rbh˜5 §­­Ühš74¬†«úÒ{ޤšë²u¸ËõúIîbJ­-ÿ¶ïýioÿN¿Û»qå¿¾Ž†^7½ÍÌáÔ1ò?lú-™zÊÓ÷½1`®è<ÍN¥–µ…¹X¶Ë½IóPZŒoôK¼'?x[/¤»€äÌl‡ó©ÜÆ´êeh{ÕÊ•’à\÷¼;½é©qÀ*hs`×Ô¢6 ÀJ¬€ƒÐNY1ÒÚǧʺ7?*3–Ìý[i d›,dlD*iË“YnqeçEåÙ h—v.,Š–ç4Ôôñ›ü¢¾‹KsÞÇ$¥-\Ö¸š\òŸ¯ç2ð´r+2¬Øk©e–†¤õwýn.Ù{Î…7¬À¶±ÖjdÓ…‚<§¿”sŸ[PËXÝÍp¯+º¾=0{²+’\”úWbncHAš…,­7@nnô%…Í‚”o-!ïZSŃå8`'"º…ÀuÄ ÿÓ® *âPfgjE:ÃéÂ0³d'à­{á—§uâ­î(ÍETxÄvgS«Î+®¦Ý#l‰ ɹÏå©Ȫ¸ùÃÖªÁsÅ™7¬ËMçI]Ææ%IX=صnmÖk›Ô€‚¦}Œ”d›»:™ÝØÍ°”ùl­žƒÛÉ *r!Ô0SEl®ÙB›É‘MÞO Ìñ·õuÆ\M•Ç,[­‰Ô- FE+ð/'ßêDÓ¨œ]ÒÞ®Ÿá6­$? o¾•S6äØ}> {¿…¼î…vö§ÔãÜÚ¬¶¦…\iíþ|دžÈ€Ší žìÆËÝj°k…툒°HT˜JZ:ê¸æêüoo~£0êõ“Üå3 Ù}õj°g¨M»M°¸>ÍÙåR6:W1ÒßÖóË´…žnðëP× Ô©å‰èÀà­Ú 2OÁuaûͱѶ—¬àwȨŸó½ð6/bOáÚ½R¨•€>0›³‡8Ä0Ki~2f;IŒë뻤F…Ö#¢ S" Ÿ•ÕËéÀýÙF€{´^»è—‹ 'Pª¶\Û¦éOMÓ·R¯é:iûG€çˆS.ø{›ÙzÎCÛ5Zœ¨¼H¹¯0xÉ j˜yˆ$´Ãóöfë¢ë´Ö…/2¼æ~ÊÁ“µ…oíSé]r¸Äò>vö€M¾»Y¬ž{¬Í·DA®Èãâ) Cë¤Fê µÎƒö» ú4IõÀígh»AƒKOÚ™ŒK—[*€·Yy‘xEº8y  óa s˜n«?HoE†1WX;GHÚ[$Ö™oÓ¸c07é ÆéZÑDî¬eS’>ÓA h–½;Û LäͼPª¦Üž#ÞÛ±òvŸ£0LN¹ ÜÒàÔ[0îJÊVÎð+ÑÔZÉöq©u/lFØŠÅ-fOŸ³±Ck'D2Õ¾7’¢½>†WܦËt—¹lºð ƒíã‘Sɸ¨Ît2¸Za#,r¥á¥‡OC~ àu/Üí$)\¯‰\ÑMgÉõ©ÈìšÊJd27e[ZPü Ù äŤÜ|¸«íyf9wÖò^ý’[ñ>5+ÚëšÛ6^‰¤òGS›2…H·ˆäÀ;@àÂzÙÏ­”?öåSlðª°Ø›o—ø¦ 3¡¯ð~^ºÐ|7¢o_Êù^¸1rOÕù‰i/ã¦ÈŸAZ#õ%€ï{z;ï5S =™bn¬ž#˜1Ð@¬‰€ve€Ç•)üôž#™¤äqee^ƒ\.¨MkSWŸ¦–‘Hib_[¤D†)E¾_'E'ðMîIô'ÈžJm˜gLR¼"8I ¯P¤æÖyúÛ›üâK ÖÄî¿ùçyOœð^÷Òž¡Ž"9y <3X™Jþ\]áw/Ó•­½ÕŸÆ”èç»WœƒœK ܧêp¾ pbÂÛŠ¶F¢âÚÑ+#ÓæÈÙÖõ?(önú›{®ï¹²¸øò"ÙÝ÷/Î)J‚ ó¢°G¨Jþ¬8¨¾¾æ5eÇÕAÕ'kOIŸ)<ÎÜ’¡ÎãêT„_ó¡ƒzçEçë\#Œ@J^è¤ì2AA„*|3ÏðEÁAAFBä… ‚ SFä… ‚ SFä… ‚ SFä… ‚ SFä… ‚ SfÈ"ëíÔîj»{»æŒ0ö³3çC+|Öz{½þC‡>bºøú ~‘ÉSr$2«~ú!ÇMAXj­æ·.Soiê˜i Ç~Äz{}$u2 Tý ‘„ˆ ‚ -F^b´°;;ÝÆ2ÿˆŒª˜\"d¤&6Ìdn1˜x–…Ï/’ R=ÿ‰þ•“Sæ­V‚ ÂÒ3ß noò ä$¡UŒkÌz€c*/RlÙ‹T¤d&VÓMó¡O/‹† ‚ RËzÁmÉ,Úõ²s¡Â˜î# ™‘v™0ØÂÛMc?^È3 ‚ B#û^”1¶8„kù:ܬ½Æª(sgY¦TAæÅÔ¶w]ü~­ï1ï¸LÌXÉ´^j9GA˜/S^÷´ßÓ j*áÎS2’¡Þ©Âé<»Y0e¾³xœ ‚°dLA^øS11zƒgnÌÜ^ÖŸp˜#øt-Õé™sQø"õSrÂ4;L™9"‚ ÔáħŸì¶žiïÿq€Næed9Úãåx Aav¨Þ{ÿî·;²(¸ ‚ Sf´EÁqÔú¯eÃ(S‹ŠñšEK±ñÒdÑÞBAXd†È‹£Þ¨ZüPB¡¨ ‚ GAaʈ¼AaʤGvˆÙ\A„q8»á|ûRòbýŒ,š$‚ ¤Èàˆ ‚ Sfj{Ž‚ ‚°Äì|¸SöÓOÿþ§{Øóψ¼A¡›ÏoÖ¼RGAA˜2"/AA˜2"/AA˜2"/AA˜2"/AA˜2"/AA˜2"/AA˜2²î… ‚ Ãùéßÿ´þÅ"/AANf]ÎjdpDA„)#òBA„)“¹ùöÍyÅC8r\¹|¥ð¼”"A„cÈ­wníÿÑžˆï…02W._i?ÛiNAXbòÎyqë[³xvçó€è©µY.—^¾Ô~¶=ô²2Û† ‚°øÜ|ûf}1PØ.’õB´ÅÒÑ bÆAXVjVï…ýÉÃpí4ÚBX2®{Øg A„ãLa+0syÑù¼·ý×Ìñ¥—.]zé’¨%øbÌ;‚ ÂQK^œð)t£-ný‹¿yõç¯ßú—[ÛÿpMÆ’!6 AÁg¸ïʼn'.þè–ÿçãÇk†=µöêÏ_¿ôÒ%ÿä«?½Ú ##bj>.1?óÓH‘êÀ¾âË)‚°Ü¬·×ìîíÖ¹xˆ¼0ÚbãÌúú™6€Ý{gvGUíÍÍs›ö>¹‡žS”‚‹aì¢-A–£-ÌA…QkpdýL{½}b½}ˆŒ10’¢}úlÿ+=^ùÑÿŒÿï¡=ú#@|/A–Ö…2škgûÙÑ" óyoõ”â?WO©1/ŒíÁÀJÂ?c,# £ø¡™{3g„úˆï… ²R(&†*ŒZë^ì>ØÛÝ{<†¶°óÁŽ1´OŸÝù`çâ_5œ¼C†9c4ÁлükDCLñ½AXnj:[d"/LK¼qfw÷ÁÞî¸ôòz}'†2CEçóÞ¨KlåZÇE£ð'ÿÑ"¾‚ BžáÖ‹L_$m±óÁNáOƤ1Þ"žFø"c»mж˜ ²‰ ‚¡–ï7Þ£j ýe¤¿Œî¾Óp÷ŽùÏœÜù`§¾†Ñ_UøgP[.ð½2—dZˆï… ‚à3“=GŒnÐ_Fbs’,ûk8WH¦í/©ŠtRÞ'T4ÇHˆï… ‚gV‹‚›a–Û— FIF2`‹‰Ø-A„<³Ú1Õ˜.ªéìw« ‘`<ß‹›oï¸r¹xj“ù5÷ !g.HáÕÏÊ„_xYY°uœeï¿¢$é Ó|ìl-»½ð|aª# Bm6.½|{’ûëÊ‹©ÄOÀåápæL¥å¨nGGÌ\=uªßeÖ öt“åÊåõ›oï.lR ÂâÊå‹5¯¼ùöýüÉYY/¶^Žî¾Óiœ tÝ+¼æâO~0£§ ‡ÆL}/êX#¸ñ+kTò]ÛÌe3j‡ #¿ÍÞÐ4¯fhŽBA¨Ãîƒñ 3‘ÑSkÏ{[/GÆ£··Ÿ¿æÕŸ¿Žû Îa®{1y[bB¨}¦ãî7i…Œúè²!†ÌOþSÊÆ)ê\øQòOÎeXaÔá¨0+ë…Ñ fu΋yNáq„Ö½¯%3‚fÂV°B[ ×}Ïü4öƒü` #0TLÂÈÈÔÓ† L‘õ3m¶a”2+y16½/Ÿ~Òé}Õ-üUT­ÓQëÙá~£Âa2¯µ;ýƯ¬QÉ7`õ=@óª"s~¨;dÙ£óvŽyÆö0¡¹¥l$¨Ì:2Ò#ÆkÈÇË‘éÆA„šì>Ø»ÿ`wãÌzÅq!‹%/v~{¿÷U¿âýHïÝßß»¿¿vjuó…C‹˜PÆ‘[÷b GÓzqïÐçÖ™º2†á¤âz~‘ÅiŒ'&‚ ²qfm™ãŠ»K^ø·~mÖ[›ù_w÷íúÿË+‡'¡œEØs¤ºõÚzÍÚµsAœ:Çs)c’A1r¤Â«W„C`$»…aæòb¤ýJ6_ØxútëõxS'½ýÎýXÇ™ BµzáÜ…õ3ëkO6¦Wa,æå{Qֺ̽!ÏÀíz>b‡3i%sÞãÍ×(<hi¾q„ãC™Ýbξ'Nœ¸ø£[þŸC†Ñ ­¨`à£õÍ@µ¶(Ü·}Š‹v†V¸íû±bŽë^Œ:l?öC'à/àÈø[d¼;ëø^Ô63,2EóÃ\¬‹A8,¢ï…ÑF㘨lœÙ­ßØ«“atj €~dÏ4Ÿ°{vv>ÞÐzæé­ó)!Rg—öé’ÙSí¸)Œ }/ª½ü§Í¨ðÁ:ÛbÔQ¾Ý7iøO,ü©fœ«ƒ­¾qŒw©`¨ó¦ Gˆñ|/fµç³~¦½Þ>±Þ>aDÆTØùx§õÌÓ­gžÞÿã§wß/X,,Ù"•á™xçÕÌÅù3…Áf¶Có/{D&dÿß#·Güaî9â;$–µ…“wÍ Ÿ›ÖØkI6üW?·z±êÕÃ|ASm_²Nš—Q'sYÀC–c«ÈWpx®íg±û`„ëõ£¬ã…á×ÿû]ßh±ÿÇO3Œ<,*ø¸âL¶?oɨiÞ(¼þH0žïEuí?‰?fVs¼ j*Œúçë¼Å¨±#bÕ?tûŒ²µ¾aºŒí{1sëÅݽÇc´—êd¸ÿ§ÎþŸ:¯:™ŸXOlßh=óôРª÷jϘŒž(4$T¿E>œ¡«ø‚#û¦ ‚ ,%ev‹¡6ŒÊ‹ÇßþçK&·ÿyïö?ï]zy}¤F´õͨõÍ(:UµˆÖPÓEx2 ãÿ9j8FæÈÑ~ÖŽy•u/„Q9̱ɑ‘A˜:ìC™?®¸k¶ƒ#ì‹ÀÖ¿·ppdçãüíw§³"2£yëE¡=c×ÎŒÆQT'‹°îÅÒ3÷Ærî¨ÏŠª !ÆX÷bæƒ#ÜdŽÚvV ŽL(ÄÄÏø1Ïœ©aŒG }Ê"c|/æ Aaú”Ù-†Nט¹¼˜„ÌàÈÎÇ;›ÿ©`)Ï<™f;sœi¿óC!ü§¯0 ï­aÔGà(¯ˆï… ÂR²ˆ¾ãÑûb`ÊfŽø×sG|/A–›ñ|/K^ô¾ì|pÏûƒ#æ?6]ì|poÉÆ5Z@ì‚ Ç€1Ö½8 yQßæo´Eô5;ƒ#æ?sò×ÿû]¾RXÄ÷BaYYß‹Ísg4Ÿh6ŸhêGqÆz±óñÎÎÇ;Í'š|¥° ˆ Ca)Û÷b±6d_{²atÃÎ÷ŒŒ(dóÜYÙ1uA˜pÏ‘ÃGd ÂH5öx{Ž,–¼í˜úâßmÍ;"B-Žâº·Þ¹5ü"A„%eï{£îä°ˆë^Kø^‚ !F2â.‰ïÅ´Øûý¿ßû¢×û¢WvÜû¢7ïh.â{!‚°”,ϺS¡ý­u²Qq¼öäÚ<£¸,Ⱥ‚ ËÍ2¬{1!·ÿù½Ûÿt§÷U¯÷U¯óyçÝÿó^œ sþÍÚÍß ¶^îÎ;²K‚Ø-A–ž]÷âиø£ ãDôT`µ¡2Ç·ïì—Ý^¸‡YÙæìùë+.>‘fô7Q_dèíÕŒá{qóí]ÎÌŸ‡CYžŽéu<„Ü/ŒÃá?T„å@|/²èßìœý×ý›þ÷®Ýùm°¿¶ûQÿ×ÿø)_ðÞOÖßûÉðÍy»|»’?Yv±ÿSᯇ@ͧ·§Úx6ŒÅÜã»"§ª3½,m§‘Æ^„#Ä’¬{1!ïýd}¼¹ûawïÃN«ÆõQ3ªøãôÞëS[šÇÞ–îþ³Níö^v߈J•à› *soþ×|˜S_÷Â×fsmsæÊåuþ‰y÷튻&‰Ì,2Ý'Ÿ•È•¤S>s\v;JòTaTÆ[÷by¬S„n¼ËÇ[Á5ÿ¸ÕÙºöÌŨµö. ß<î·~–ÏTtp+îò¤:mI>(ÿÞü¯…Lè{‘1`Ü|{÷Êåuó_æWóSæØ\ÀJ"×"S˜ÂuÊ@Û óTa<Æð½Xëk‹(¸:øQû»èìb#{À„ÚÂoŇö&ý3™NdY2Ta^l•Q_¤ì§úf|ã{1Ò -tãzF TèßQÇ&1¡Ý"ÏÐLGI+žÏ¯:›|E$… “Sf·àã2–D^Œ4Ìàâ¿_ÛýÙDO,e¯¾+Ó2×ÔÔ.ãÅ”µ …L²vgÞ€"å1j8³`ìLçÛ3O( ]|*4® ¨”­×9tíÎ%‘lЏñßvÚÏG{vZîGûÕ·úwîÞ8s¡eÎïCGßXFž˜Z8žùil†Z5Êf%dDêĤ𚊫›À }/22b‡‰©›+òÔ×[e·gÒyÂbSx{…šAƒãî{‘å9·çÙ…v's|ûÇû…3Gò3“ãedç3¾y£ìLþ®j{CþšÂ3ñÌ_Ÿ¹lÑÖ½à9®S™ìZ¦)'¹È?hè™:·O7V‚ †ã¾î…/ô'·ËŽ[­Î‡o"7¤ò8MæŒYæ¹C½ç2?ù v>ðüÅ™ðËîÊ\Pöj…ç £ZøèüÛM¸çHÞ©bTe¹«¾ãDšüÉ©÷þ3ƒš/¯füH½ýÄ0{˜ BÆ^÷bIG@Ú¢ùµû@´ùŸ;±w!ÚôÏ7ðá®ÞpÈ3G–›Q}/2  Úm³ì×úwR=²0ôüPMY}ã¨q˜ääÔE’ LJãî{Áv Õ}wÐ}w@Ç÷t²çq´ÅQi¦¾î… ‚°PŒç{±$òbÔ™# ®-Ž“Ìª9*S„¥g$»…aIä…‘ Ɔqá¥ÃöC/Æ`ìu/A„縯{aªDẌ£eÃX´Ù.‚  Ëq÷½æÅ‘ó½0¶–[ïÜšwDAŽÇÚ÷"ƒ~¤»_ àë§›÷v>]k®ê$n>±ÚXk ¿Y…£e·0È8Ž ÂHŒá{±Të^z_ :Ÿ´†Nðé^·±ºª5ðýî 78qâDçO½yÇq©˜pÝ Aaa{Ý‹e“½ÏÍh5s²¹¦šO®F­æjsÀ{ÿG¦LñfAXJÊÖëºvçBË‹üŠŠÕt>ôéO÷ºt?ÞÿäÓîí|poµ¹jþðæÿxëÂ÷¾;Ûx'Ønq´ÆGA„š”Ù-Žªïʼn'.þè–ÿçÐeûJ…ô£x÷ûƒ¿ ´Ž‘àõŸÝjü¿«Zwl½ðÝN§žTk§²~³X•»´WÜRçâé-ÍæÂQô½AFby|/Œ¶Ø8³~åòÅ+—/nœY¿õÎnµ £ó9¯É‰~ i£-bhƒ~ÿêk¯˜_WU£óÙÈ;¦Ž‡iû 輕Ŀ^‚ ,+Ëé{±~¦½Þ>±Þ>1ô5èGšÃ“J'   Á›ÿã×[/|VÐ8( (M~t&¿ŸÌß[¸ÁDÅZ~€™ #SÕ̽3E|/A–’åô½`ÚÏ¿Fëx}ãëæ8~¤q@‚8!Ùqà.þÎ÷ÏÖynÞöPhà“uÚòÂü3™½²N¤÷/{PEÄê¼éØˆï… Âr3žïÅBË‹Ý{»{Ù=Ä«®¿ÿgs ­B „PPÐD"¸õÓœ<2Ó&|$üžÝ³‰”Cì‚ KÏHv ºvš.øÆ™ÝÝ{»àÒËëÕeóÉÕî}s<èõWÁ_c£0bMC! ô_û݇ƒð¤ª IDATší ̃y9xNqÏ‘›og‹ìÐ}Õó!Þâ‡ïþúí{ú™f~Ñ xþ•†ÌÉüeù{ #64„ǹÙ%ükáS27–EõpDÆ!ø^p;ê·¯ù“…bÔ`ù§¡Áª‡ 2Q­óš1¬ótA„IXß‹ñh=³6øKÿÝý~«“¡ÿÓ Ûï|ÕE¢×žjn¡,ÈÄ0Ÿ’‚ eŒTÓ.¡ïÅxl<ßÚûÕù¤Óxb¾½µ~ïÿÿ´ûU·ûp õô³ÑÆó­é>q^• ÅØ¾õKyÞ¹2cÆõÑsdTËÇPF•e‚ [Fí,§ïÆj¼Ûߊ¢S«ûŸw»î­_¼»ûû« Õúfóév«pLD˜„Ãñ½@‘€ÈŒ•…qõ Ç™ãî{áÓXklü§Ö…¿Ý¼ø÷®ü÷ /þÝÖæ ¢-fÁ!¯{aæ}øCÛéÌ`ß8Å(Õ<)‚pDÃ÷b9å…p˜ÌzÏB)ÿY}rìƈ•cáÉêÈdN¶ Âa2öž#'>ýd·õL{ÿ{nüò&€[ïܪ¾çxÒù¼wÿ·þ_bµª£g›g7ZŠÖæÚûÃ|£6Cò˱_zù’)!_Nö½0ÆŒ:c%»v®Ó€¯!¤ùá¨P³â½ùöî•ËÍ ˆïcQx|ÿÁMÓ.-ñÞûww>ÜYtß‹A?Ò½N¿ûe¬50P½NuµÓþÖ”½D"‡æ{±h.h!‚°|Œç{!òb8½¯zÝ/â÷;€[JüÞ"/€é­×yI!Â1a¤9#ñ½Âí7îþú»ïþë bìÅ0#zПsćYû^‚ óblß ‘C¸ø³-ý!FX„0 ª'ç¯ÅBöMAXJÊæŒ ?"òb7Þ¸Ý8ÝE€mÒh<FíUÿ²õö‰Ìëíü_>ØÌÉŠ‹ýŸ ƒš.£>‚íÇs|Daé)³[Çu/¦Åöõ“áÖ ßÙzÉí°ºq®¹õÃhëüÆÐÛw÷›ÿòb"²ìbÿ§Â_ç‹Ø-A–Y÷bšl_¿±¶ÖÜ<·9xØWJµž×6ÏE›çZÑSk#5 Y·gðŸþ¿üSõ]e7ÖA|/A–ñ½˜2Û×oF§š›ÏoöU :N«!Ð/D‡?ÛÆÙÝ{ ²øö >S!*î2gLàæß‘† ÂR"¾ÓdûµÑ©Õç6»J©Î—æ×šÑ“Ñ«¿Üšíþ¾‡ƒ~ÿÂK­ðdXS[gÄn!‚°ôȺãÓëÄ÷>ê ÀêSýÍï7›§škk£-n±8Lk,¦&â{!‚°¬ˆïÅÄ$tûa£EÍö³íšþ‚Al‚ K‰¬{1Û—wèF4xñGÚßj‹GJ}dÝ A„åFöŸµVPüâ¼#rô»… ÂÒ3†ï…ôӠްè|Þ»ÿÛNÿ/±ZÕѳͳ-@i?;ãø-6Æ÷ÂÌ™¾‚3I’JÓEÒs¡ì˜esFø¸ ‘µÐt¯Óï~k T¯Ó_]í´¿Õšw¼…Ù­Ýiê”[ïÜâ3—^¾dÎÌTÐ-$•¦‹¤çB!Ù1_ÊÖëºv§È‹áô¾êu¿ˆwÞïÎßóÞ"/€¯{qó훦Nñ+sæÒË—ò•Ëz;[Ðw÷vÍÉݽᦼQɇ\Â+ë‡9”#šJ|¦úÑ…¿.Tz"—¤£fú¨±nš¬·×ëGrñ³£ì]üŠÛÔ‡™#—J“°Pé™o­-Ó}¡ÀÏŽ½?ìùºaèóÙ1ÃÈM•¼C#Yñ¾™03Lž&¦é)œi=ºœ™F×D{Ôâ]VžË"\qeÍ»F}:_ãç‹ÏäI:cû^ÈÌ‘!ÜxãvãtB´I[ ñDµWýËNœÈîÓqÂ#lædÅÅ'ÒLú>Ãï‹?„{0™<óûr4séŠ`òÈL%Ì©°©T‡Â“e¿Î%=M/¹ú‚ú‘,Lêê'y\ýh棧KE’æ#œ/Ò™+ ï* ¿þÓ9p_7¾%,ƒ¬{1¶¯ßhœ ·^øÎÖKM>¹q®¹õÃhëüÆÐÛy1‘?Yv±ÿSá¯ó娬{1Æ÷Éß|aµX ¹¥¢{QvïÜM¸‡™J#Å¡:œù¦§ÿ” ‘1õHNš¹ì0 ý}2TéL«?•¨Ö §PÊL%uu/¦ÌöõkkÍÍs›ƒ‡}¥Tëy `ó\´y®=5Úzá³y{ÿéÿË?UßUvãPßnQŸ|…2Þg\ÖõY¦•JËD¦9­LjÊ(ëñ×LÒ±‹tuøG:CeÝ‹©±}ýftª¹ñÜæàa_ªÓé´ZÑþG¢ÃŒßÞ?~üdÿà_|áŸ*Â)»«ðLMfä{Q=°Z=F>£Ë ‹¤Òt™$=§.(—&Udž³#3¶bRfhñ6w• :”1I‘Ï®³àˆïÅ4Ù~íFtjuã¹ÁîRªóe§ùµfôdôê/·&œÛïŒIƒ­ùÖÝ ‹€´EæúüÅÕO÷ï2q0Žª*|–Û†QvÙ,=õ0gÄ!§ÒxáNzNØ%zoYø“§ÉznJEÍ0ç’lœ¼‘žµaF6ŒŒ ÔØÑù¹â{1-¶_»Akã¹^o N6:Ÿu¢oDígZSÜä¬P°wEÙ]9â;dÔtþ® ]:fê{aú.áróí›Sï”gF[ÍŸ…C°y'¬<#ûÖ ³‚#—Jþ-õGÇ6=Çx¡‘,Lêü5S\}?€…ÍŽê§×É£jw¢šwUûsÔyzýGãù^œøô“ÝÖ3íý?î¸ñËìâhÇ £-¶Î·î}ÜÛ<¿Öý²×l6¢§¢¡Ú"ouÈ;T\V1$14œÂÁ‘ê3…Ï­98bl•ðVȬ{a*‚:jc÷Áîú°™ÓF¾˜Eú ù5vI¥éré™™ƒ€#k9?¤x3S)*u*^7ßÞ½rù¢?üá¯u‘Y÷âþ»ú™Ñï½wçÃñ½pl_¿‡­­ïµî}ÜQïÞélý°=)UËnQè!áÿ99Üüûö†ÌPKƒü]~$Gu¿˜éž#&X_òÃ:e(’JÓåҳЙ@(DŠ7<{ÆáÙsdRnÿêΚ:»þ½µÝ{*ýþ…—[ÍSÍšÚ¢Ða¢þeÕc"…Öybþâ¡w§„f½vç1¬MÆ@RiºÌ:=ERŒÄ1/Þs,-cï9"¾„ŽÎ>íþ¾‡ƒ~ÿÂK­ðdXS[gŽÊº‚ ÂxȺÑëÄ÷>ê ÀêSýÍï7›§škk£-n±8Lk,¦Ë4gDA(dŒu/D^ Ý~ØèFQ³ýl{ŠóD–ã{1ïX‚ Ó§ÌnÁÇeˆ¼€íË;t#¼ø£ íoµÅ#eTĆ!‚°”Ⱥ±Öêêâ_œwDŽâ{!‚°ÜŒç{!ýt¨#,:Ÿ÷îÿ¶ÓÿK¬VuôlóìÆ4Ú:ºÌzΈ ‚0wFš3bëE-ô#Ýëô»_ƃzuÿýþþŸ:óŽÔ¢ ¾‚ ËŠø^ÌÞW½ý?twÞïhíNÞû@ä…C|/A–ñ½˜·ß¸ûë_ì¾û¯{€Š±Ã,í¢ý9GlAß A„åFÖ½˜ ¶¥!DË&YUãä|ãµ(ˆÝBaé‘u/¦Ï7n7Nw D›´O„Q{Õ¿,¿ãè |°™“ŸH3éû cŒGˆï… ²"¾3aûúÆÉpë…ïl½Ôä“çš[?Œ¶Îo ½·>Ï‹‰üɲ‹ýŸ&Ù9}¦ˆ Ca)ß‹é³}ýÆÚZsóÜæàa_)Õz^Ø<mžkEO¶^ø,dAÞžÁúÿòOÕw•Ý8ñ½AXnÄ÷bšl_¿jn>¿9xØWêt:­V„@o¼þZ!þàoõž±gä7j/ §ì.Þê#nY"v A„¥g ß YV«€í×nDQsã¹Áî:Ùèt:ͯ5£'£WÙšÙ_šÍSÍ£»ßú´Æbê0Sß  ydÆJÄ€!‚0SÄ÷b2 ºý°Ñ¢fûÙöÑÕ‡Ìá¬{Á¶ >U!‚phˆïŘl_ÞA ÑàÅ]h«-6‘˜‘ï[)|=Q}rêqA8æŒí{! )¬µz½ýµ‹?~qÞ9ªÆ„ã#eã cŸA&ÄØ*Ì8HÙq!"/ Ž°è|Þ»ÿÛNÿ/±ZÕѳͳÓ\hëè2kß Aa¾ˆïÅ Ñt¯Óï~èuÔý÷ûûêÌ;R ì9"‚°ôˆïÅLè}ÕÛÿCwçýŽÖîä½D^XÝ Aápu/fÅí7îþú»ïþë bìÅ0;¸èAÎ[(Ć!‚°”Œ½î…È‹!\üÙ–~„ #,B½¦'ç¯Eíâ{!‚°””Ù-Ä÷b"n¼q»qº‹!Ú¤-Ðx"ŒÚ«þe…‰îŒZx}ÅÅ'ÒLú>Ãõb·AXzÄ÷bÊl_¿Ñ8n½ð­—š|rã\së‡ÑÖù¡·óvy1‘?Yv1ÒÛ—‚Âñ½AXVÄ÷búl_¿±¶ÖÜ<·9xØWJµž×6ÏE›çZÑSk#5 Y·gðŸþ¿üSõ]e7ÖDl‚ K‰ø^L™íë7£SÍÍç7û*PN§ÕŠè¢Ã_+Ä1û‰˜ßžÁg*ÄAÅ]æÌÐí[óˆï… Âr#¾ScûµÑ©Õç6»J©Î—æ×šÑ“Ñ«¿Üš’259ž u<ßz¦”í•ÊÇeˆ¼°ô:ñ=t`õÉþzÔlžjÝýÖ§5ScØÑÇlê‹[ïÜâ3—^¾dÎÌZÓÌ…ãö¾õ‘”©ÉñL¨ãùÖ‡€±U˜q²ãBD^ Ý~³¥£(j?Û–„© Û-f§-L}áWæÌ¥—/•Uëm[âw÷ ,xæ×ÌOù“SZëíõQoõ}3‘¬~\á‹á#‘2ùxŽúÄ:T'éQI¨LTg‘P³fì‡_¶ºÒÈÀùî€:!Ì¥HLN™Ý¢Ú÷BZQؾ¼ƒ@7¢Á‹?zqÞq9bÌÔná?¥âÏáWc|Ïùz¤>£¾/Gu’ª§~„DÊd¢7aâŒÇ‘H(¤c8—„š‡_QdÔÉÐt›c‘˜‘ì‘°Öêõö×.þX´Å8ÌÎ÷ÂôHÊB¾rùJE¿Ät,üв¦Ñb(…ý¼ÌIþs¤šz¼÷Í<—ŸXÝá1º³ ›2H¿BxÖ<“ ó(&T&æÕ •éµûÇ…L+y§þÖþ;ú¯ãŸÏGf¨³Ì(2ôufW$&glß ™9üâ«ooV_Óù¼wçÝ¿ùóÛoÜÝù÷=ýHNÜŽ‹?$_-–¬Ž_!æOVÖ‡Ia<+~ÍD¸úöúOœ{ʽU'žæLa;74M 5YE” #€£S„2ª}h‚L˜¼‡OuU pŒ—Y ^$d݋٢é^§ßý2 Ðë¨ûï÷÷ÿÔ™w¤‚#·îEá—9•Ï5SÌ\R&ÓŬn®üqšûáO뽎Jú£&ï¡1^&V_Y(ÆŽá‚ Y÷bVô¾êíÿ¡»ó~G{‹{ˆ¼Ž‚Ýbd*J¿'·Phu|†ÆvŒ×Y¨”ÉTÊ™îu™Uãpâ¶P uÔ#XÊׯ Y÷búÜ~ãî ‹þ#{B´=èÏ;f Ãì|/ªM \ýáI>˜z›‘0o #Ø1ÞwÔxÖÿµÎun™{ÊÛ'ñœ˜ ˜P³£~òÎå­¡ñÆÌŠÄäˆïŬ¸ø³-ý!|m@5NÎ7^‹Å¢Ù0üÞ …UÉxõ ÷*ø`¾̲8Ìц1Ç”©í±û…ÓêP.BBeä×T^m¤¿^ÆÐ¸e¼IF |îE"ƒø^ÌŠoÜnœî"@ˆ6i 4ž£öªYáFbe{¦ç¯¯¸øDšIßg£>bÖ¾¦_’Ñ.7ß¾9j?,ïUv²f8þ—_}²fȆñÞ7_F©æ[ ½½EKÿÑõ£T«1Ò¤~8ó-Bõ£Tÿ9yÇ®(üVGfŒê¢&³.“3žïʼnO?Ùm=ÓÞÿ〿̮zvÌÙ¾~cí‰ææ¹ÍÁÃþÝéš“çšQk5zjÍ¿2¿oYf“0ÿWógÙ…WÇí}ë#)S“¹$ÔÜÛÔ¹¹§ÀÔ{Ïñ½(`ûµÑ©Õç6»J©Î—æ×šÑ“Ñ«¿Üš.Cä…cûú â{!‚°ÜˆïÅø¬µz€ºøãç‘£‡Ø-A–ž1|/¤Ÿu„EçóÞýßvú‰ÕªŽžmžÝ˜æB[GšYï9"‚ Ì‹±÷ëE-ô#Ýëô»_ƃzuÿýþþŸ:óŽÔ!6 A„¥dlß ±^ §÷U¯ûE¼ó~pæŠ{tÚßjÍ1V Û-Æó½Ø­aaAæH™Ý¢Ú÷BäÅn¿qwÐEÿ‘ƒFŒ=!Ú€ôç³Å`’½R×+‹¦ ‚° Œ´WªAG†pñg[úBøÚ€jœœo¼Y÷BaY‘u/fÅ7n7Nw D›´O„Q{Õ¿¬p#±²=Óó×W\|"ͤï3Œñ!¾‚ K‰¬{1¶¯ßhœ ·^øÎÖKM>¹q®¹õÃhëüÆÐÛ˶E5û‡•mÈžoà§»Ãêt‘u/A–Y÷bÊl_¿±¶ÖÜ<·9xØWJµž×6ÏE›çZÑS£­> Y·gðŸ™ÍÖýã²»ÊnŠØ-A–Ùsdjl_¿jn>¿9xØWêt:­V„@o¼¾;¬?8bö1¾=ƒÏTˆƒŠ»Ì™¡Û·"¾‚ ËŠø^L“í×nD§V7žÛ<ì*¥:_vš_kFOF¯þrkòÀýV¼ÐŠP¸i{¾á/óƨ™»LÌŸ“l„&6 A„¥DÖ½˜Û¯ÝÀ µñ\«×4Îg¨µžš¦Ñ¢ÐÀ0´u÷ u®/ ¤ðL¡¬©Ã„ë^g‚ &#ÕØ²îÅ0Úbë|ëîoz›ç׺_ö¢¨jN˜N™AŸ&œÿÌ_PvWÆ”2FL&Y÷Bð¹õέyGA„cÁÞöFÝÉAÖ½˜ˆíë7ð°µu¾uïãŽîÞé4£FôͨæÞ"ùé£ããÁã)<¨‘ÑóFÙ™ü]þe#¹vB|/ƒQsM„cËHæRñ½˜”Û¿º³¦În}¯µûqOáà¯ý /EÑ“‘Rµ´Åã4™3þeù Ï—Ýâk…|àù‹3á—Ý•¹ Î+ûˆï… ÂR"ë^LŒŽÎ>íþ¾‡ƒ~ÿÂK­ðdXS[gdÝ A„åFÖ½˜ˆ^'¾÷QVŸêo~¿Ù<Õ\[mq‹ÅaZc1u»… ÂÒ#ë^L@‚A·6ºQÔl?Û®éo!`ß‹›oïò™“…WŽÃIî=BT»_Lèœ!¾‚p<ß‹‰Ø¾¼ƒ@7¢Á‹?ºÐþV[æÓŒÊ6 Óä_¹¼~åò:f©Ž‰¶ÀáZ­A8&Ⱥ±Öêõö×.þøÅyGäè1Þº¬-ÌŸW.¯ûŸ)¼¬0Á¿>s`~òÿÌܘV>¨š­yW™UÎNx;Ô ]3-?ý'?z¤À * ¼ì‰e¿fb[ñjeWÖŒFfvu<AÈ3Þºb½€‹?~ñÕ·7«¯é|Þ»ó¿îßüùÎí7îîüûž~¤'n Îì|/òÍvá¯yãË_¯ø:ßU'~øæÏê‡ÞUÕ<…‹»gNžÈQHu8'ë\ïŸ/{b_ý˪ßkh˜Õ/^?&‚ dß‹Y¡é^§ßý2 Ðë¨ûï÷÷ÿÔ™w¤…Y¯{QS Œz}¡¨Šo©°‚üßöî 4Ž+Màøô¡>´À‡nPÀ>¸‡ ¸Åú ƒn؃d&`‡X bÙ9Ø;—Ý™%![$«YpÈöÏ™‹IDAT,‚5‡…õœlã9­ç0Á0H ±aúà€VÐ kPÚCÉ•§zU¯^Õ«îª~ýÿLu©êõ+©ÓõÕ÷¾ª—£Ã±"7G~‘£MýÊÛØ+ö¸R7 {˜ öb„zßõ^~½÷ôIw(%,žý‘ðâeÝ?bYò™ïE®bü]3“”C¥'™w#i/I¨½•­Ï·{¢ÿf8[«ˆ]!Ĭh 1ôËîY5”;çH!ys¹c‹Ü{ÅROU¸·ïCÖãŠ-È0Ïdè >„¨½‰Õ_-߈Y!ÇB¯~¢Ü~UE¾¼E¤ Á¼„3iƒ|‰Hmf޲2ïªæò:÷ ÂxäN d:®Ôw‰Ý€¤µÅ[ÿ|«þã=Q³¢ý6¶õ“³~{NÞ,¶œM“†MÊèêÛ×cŽ·ÈW{©cHª{Po'1Ü]Ý2kSß4ß^ú8æP™)&‡Ã¸©d,ÛÑ7»2Ü+u—‘v#©©ª…e@5宽`pDgíözãd³³Ô,ö·»¬\\jú­9ÿtú3=“Ò°3Çï”Óo,Žç{«ùµ˜oÞTMÜYNÝR³oj;ùšÊ´e¦Ôˆæ¯oSíÛNjã–+mv)ªšß'€TIs¥¦Î›Jö"ÑÚíõF£ÙYê öûžçµ.…%¿³Ô2‰-d£¸ N½ž _Êÿ†?Òï•´cªÉsÄ00A8qæ)ÒÚí ¾Ù¹Øì÷½š×ív[-_Ô†‹?ñÇŸñ‘GnߟI~zÜNÒ^r6%ÓYjr瑟`Q ÜœAíE1Ö>Y÷çç/,ö÷<Ïë¾î6ßiú§üî-Û7.ŸÅc³±Ù]õÄŸ4nZ'ïE§î¨1êç^ÊBíEaÖ>YƒÖâ…V¯7¨×ëÝ¿uý–ß:]dÒ"6Á`rCÝL–ð’‰]cYÒ‘¯ö2Ë<ÐêÕë^/°? ,j//Ž b‹åË­íßõ:—{¯{¾ßôç›–¿§È Fìì_ª$íI¥äèI¹Ï½pFzð僲;Qùž{AxñƒµÛëb¿µüÓÖ³¯ºž˜Ý~Ø]þyÓ?å{žÑäì‘»æä5E B‡A€<°j1YP÷’;™)Î oQ” J€ Ê”·P{qd닇 ïüòO[;_õ¼ÚìàÿúW®ùæ±Åáq‘5òfꎱë“v‘GÔÆÕ#í'íÙÀäCÔ^€«˜sÄÚÐ?ÁßùKOÔÄ ß¿r­5{bÖ0¶ÀäÞ?ÐÈ=çáÅ‘^÷àÙŸ»¢&æN÷;?k6ç›F¶‡[TÇ8oœÜç^LðÜ ;ß‹Á^¶¾çûÍöÙ¶w‚¼…òà¼Ͻ ´S!Ön>µaÝ\½qµì¾Lž ö‚ÊD‡AŽ1Ï7'Ý3.'!¼BˆF«×{ÙXý±ENÜ?â˜ïby€…ÿ~J;N!ûÚ´\nœÁs/Fbýó­ú÷DMÌŠöÛØBÔOÎúí9y³Ø‰Ä’æLW·×lê_`‰Ú‹Â¬}²îÏÏ-^Xìïyž×}Ým¾ÓôOùÝ[¶o\>‹Çfb¿ŽÕ¿z n¬wy¯ 3f™íXö÷ŒÄæ’®¡sŸåk÷Ë$5Ý(¤cšñ”Ô+U=šôñž E‚¿ 8€Ú‹¬}².­Å ­^oP¯×»ëú-¿uºÈ¤Eì7EêÙýðx¹F¾h éR26¬1dS{›üW/ÊÕ;MÔÍLÞKGÈÑa{IݰïOîØ¢we ycUð‚>ëquüU`ªP{QŒ ¶X¾ÜÚþ]¯^¯ï½îù~ÓŸoZƱƒE§FZˆ¾MÚ+’ÆÈ݇Q<÷"÷õtRí…ÍÙWßx݈Íjdìc~æ¿sͧ%up$“ê\µkŽKßÉÔC0<Æêü*0U¨½(ÀÚíu±ßZ¾ÜzöU×bûa·é×ý3¾áÜ"jÍ—f¼#ŸC©Â<Òx¸FNo$­Q÷’7Ëô-fS{ñvÇhY@Ò98x©¯ŠHJKĶl^’©o¼¨nÄ®4‡4µæ{éßNýP™“?l±+5ÔÔsôG"Lêƒù¡é!©Ãšßªå1…ÈW{1óí7;­wÛ/ÿº+„X¿·!¦ujÄ­/Š¡¿ð¯z¢&ýþ•[Íù¦çMÞ¼e#ý&ºþáõàކDæJ ÒŽÍp¹óBŒ¬.µš²N€4RE}¼+ÒqÆ/ø×holîܺ¹*Èó£FæJ}þâè+"ˆ%?Ù~ú§§d/Þúç/ø;y[\kÍž˜ÄØbü¦aΑ°þc c‹Jád ŒYî9G(í<Òë<]Qs§ú ~³9ßœÜùÖÇÿýÔ^8–±ˆ ¤¨‚?Û)½$ZBÅ5A®"i9Ù‹·¾ƒ½þl}Ï÷›í³íÉ-ÆÌ¾öPeùj/È^!ÄÚͧ¢6¬ûƒ«7®–Ý— 3 y &Ŧ[¦¼E€ðB!­^ïecõÄy;ç*(øW§ºÀØä~îá…BXX"‡á<ÂG`:Q{rP{ncΔ€!ypÞ´Ï9òñÍõLÛßÙü×õdªP{®bÎ!„˜móÿÊî¬SÈa€“rÏ9âTöBqõ_~äŸnDׇÃáЫ×Ãk7Ÿªûª ÖØ?ôW~iÿü`“þ¤ncÒ«Ø_ÈêUyM˜· öœ””·˜Æç^ ß û{ß<ß};'Þ oPóÅâ­z}N2 Ù?V/2¹âžÓg2½{!ážp^Žç^858èí÷~ùêÎýæ`§yb<³þ}·~÷ãÁÝ;ƒýAÒŽ‘IÉÃSïŒ2jøRÞ8vYCѤý™ã©'Mênf>ëcRk©»OÜ#0rÏ9â`xq¿wß;!}ðèã“ÍAíí³½ÿ쉡¨÷ö¼_ÿ2_³A´POÀêÊÈ‘Y•ÕÖ4íËÂ‰Ô w1iSs€áJýîÔ^€“r×^8^ kÂûÞ{ÿîÊã›Ûââº÷O†K[ûƒy_Ôf'uƒ#‘“}ä§‘‹ûØ“nìŽÁZ(£$jkÁKË»˜´&Tj³<÷ÜÆœ#GþýÌ!„xW .|¼òó•­Í­Æ|C!îÞB(eŸØO(±QˆÈXQT E¤ÃÁAíLj/Ž©×ë÷ïÝ_¹¶rþÂùáph¸—É­‘”C˜™Èwš”Sľ˜t#ëûêû£kµà*j/yžçûþðix‘D;È*ãµ5ÍšØaš¢ºé[¤)MdÔ^€“¨½ˆçŸò·¾ÜÚ¸·Q×–\DDN¥òpFXE»qì9ؼµ¤5á^á¿ú.E¶ÏÔ·Ô·‹´@í¸Ú‹#Ý¿÷"kÞ ûûÑ•(µà¼µ®…ómÙ]˜:Ì9®Ê=çˆSáÅG›,›gÚ:ä0ÀIIy‹Ô†ãµ5j/Àmùj//`…{FÀy™î ^ÀϽWå~îÅk/6>ÝÒopëßVõ`RP{NÊ]{1ªðbãÓ­•ï§nC„1éÂ{Fˆ-ÀII÷Œ”P{±õWn¼_?YþB¬\[ ÿ ׯÜx?5Ê£öœW¡Ú‹ ª¸ôÞ¥Kï]zôûGW._ ÿ V†Û`ÒQ{®ªâœ#ÝW½ÕV…Ÿ<–ÿB¬~°Ú}•øMý„^©“l©Û˲E¦·žZä0ÀI¹çícµÚ­ó÷?;oÓB0™–å”]ò¾…Ìþ…µà¶ Õ^ü3|;j¦ƒƒH6"2§¹¼2‰Ú‚šáˆÍyØgA\BÞœ—£öb„ً¦qé½K÷?ÛBüó¯Ý$¬ÌGÎ@ÈGR–Bb[ˆ¬Ñ¿ YsŽ€«ª8爦Ñ}Õ Ãˆñ„|âO=kF@"?Š,˜ÐÌHÁs/ÀQ•{î…eö"UÖp¹Q{nËW{1ÂðâúkÿèæË^¨ñ}g“f IBÞœ—)oaxñàîõ×¾÷E§ðì…\û™tÖ—ÃyDm1iA¿ µஊÖ^<]ñÙÑˬñ„zFO*§HúQ¤`Sß¾¦“L9rà$j/Pj/ÀmNÕ^`R·çMKí*…Ú pUµj/æNM¶þ?gÄ?­üÃÿ!²ÙƧ[Í3s£èÆŒ8©ZµW._yüäqêdëÍ3sW._E06Ô^€ÛªU{AÜ0%È[€órÔ^ŒpJ3L‰ ö¢ì^Š·pîèë=È[¨ËI/PæM'%Í•š:o*ᬄy ÆGÀIIy ýøá¬·çeÊ[/`‹Ú pµ(9 pµ(µà6j/PòਤÁ GÃ8’lXIsàìh^ƺ~8Rï…µ{<–|¤½p.#?l= +Ã]¶ý`# héðà°™¡ FP#È€NÐ}ˆ¿ŒüSYÿºªZ¿²©Î?‘‘‘ßøÅ/"–¾ùz Ã0 Ã0³ãÊ»h¼ÜœuL†a†yFÙ¼¾ Pìý~w¦‘a†aæ™æÿ˜u†a†aŒD±væö¨áH@@ýH¶H@ H@@Rš‹ÝMd"$‰ DÚk¤t×C‰þ@&" % ‰‹% H¤NƒD„ƒœ‚B"1€D†B@ ÚWâ!B$± Ö¤q"0÷-ǰoÄr@š€I2ÆB›\ÒÄ_ºÉä†K@©Ó+€$™#@H€ÔÇ…¶ ì)òzê¯@ ‘úA‰{¢Î ÂÄË6iÒ¸8¨b#‘@@È@—XûºÈª áî5…0¶L½£®d‚ÔÇ„H ÃT HB¨Â “q±€þŠÝ7«ËOL C˜*̉y(ì×$ÌÇ¢ÞKç…ÎUúõ$ùSÕ ¡IülŠˆÍ[‡äK‘´~S!Ä ‘- ~ÙTµ® $ Dbë[é0ó[¿·ù”ìK!çZó[ÕQ´È©ÓÒÖ9H„ HäڛݡɾÐU$Щè—€P$KSB>ÄHìWo^*›ËØG¸,©>,»wÔ5…iƒB“þÂÄ&¾ y”®¡ývÇU¶sKSìÙßÙÖ ñ·\øâ]¨r€$]šTöÒ‡þ’… $)áÂV¦5‡e"HH$BÒÚQ_/Œ†°åÒÔÚª!wOWõš”*’JgH!´øPÉ&0Ù/Ä ÂÀÕ›î›7MWq Ax ¬J @ìCXÖ?컈ýËJšX]¢Z,]µ „4Uó2P¿ú\u½óõ§å‚Ë#zö«†Hè×iš®¼úH.í[ÐðÍ5~ý"!\#‘þªþ+uÒä—4u‰Ì´ö"Ö‰*–/aªž•95oMRHL©ö#ˆ‘èvKWp…”äH¢¤TË$©u‰y € B›oÂ}Mºd H©°€‰ÿ.T>¨ü•‰”Öy¦vFŒÚ[¤€ÐåA5oúz)üÂæn 'RWÂDÆ SâeèJ¿•Ùöe¼,°Œp?%ë¡/“&G¤.ɪÿ “êØ¨Väf"D e e"LÍct°Ž­ / ÓA}_æ}%€T[E­$ÐM”P [# …)hÂ~³´Ðq“êE.§Ló&0•¤§ú6U»îŽ©è´PŠÜPÉARGÅ  ”(Ñ:Oiz÷è³ÐÕ±&¾IF¤š/Ew™ÜÛ ˆ2€­ %´ÕGœ°6J%‘~SJk³DHH$7É—«'ä®ô× Ø¾DlcnóWu¤É)¯c tŒdK„"€Hb™„2éâÔ€e-»`_bXF }0\Öõ•jz¬.D‚"€Ä¦?¬ÄM÷#Vê?Q7’Ö䥇œíÞݽûg·nô>lŸ=ú/5yæÓr‰åª¥l*™DI`‹‘ ¤)»º;î:[&HRî…éÁè&S•i‘о¾¦Ï¡žnÍ*¦·­µ½Lu¬]ÉŽÀöó%C†‰Öª¦“mJ€ú‘è{U™]Ò†1âP'B ËpuÖ~,,‡°‹e`ÙÖ†°õ ùÂCúõÂ$“HÕqÒTEêƒ×ñ—‰@ Z Z3¸¯Wª~d"¥nçÜ„­ ©^ÔÝ)McîW$)‰D;™ª7EÚf›CÀÖž®g¬¿Éب¤$ˆÉµDÒô'Œ­ÒرT…+m× ‰)u*ô—Lu­é¡*Á@ D›^€P"VJÑ|&¡D,’A(ƒP$1ÕEØèŒ€H´¡E;‰ke#I¥M#טúN¨"‘F7ä(?ÓÏJ»HÀªUú¦Ý9ƒyÇ”½Ä]“Òsºé2=ï®@*©RÞÕ¹Ú.â$£fXF¬{pïBZ8kQÇ…j3’TœTµ ì|)Õ›ÕÆݲš³NGÆ&‘¾ MޱÖª7L4%LOÚ/ Æ Fž‚,‚ä™í9 p e¶Låiàt¿ªýˆ]Ù—wêéÚ|Hê䈺£E[ÄX_/ãD„^]áúBi--;hÚJ£óRä—+ARRæ…ÕUogu‰²—HÝ:¨S§SÎ&­¥ú–mnšÄP_¨1ðä¨Lò ¡d{á«§§¾—}òÛÚ—%–öµ^‡ëßJsÄö…j¹bb¤Mú(}ݦÌ{B$º9÷jy3žâGë?ú÷íêú ÿð¯#FRjmšö¾þÀÊñ«ÚZîúF®”ƒô{Ühµ”(ó‰±(Âi#ZlLïÙ•™ºÞÝeêSzÈ7Ÿžè¨fä2I·ýË 5—úazu±Dhu=A¸‚è|kRõEÊÊ­­-Ûæ¡«u­tDÀËYÀWɘ·Î;¨ í’’HÀˆ X‹W6|AÂ'ÊOY›uOÂôÅ¥µ Úx0è‘ï80Ž# Lÿ;Õ¢ÛtC"¤±§jOW»ÅNޏØÚz-4}&×»2VbåZ¤Û6sWH[8I,"5-̨™)äç‰%¥˜ÐêS$RºTÕövAú—Ò6öº_å4YJ÷èçJ¤ó(!âô¼õ»™±ƒñ¾î‡@¼,±/B];#ÜOY¼R¸NZ%$”ñO k˜î4ïHaFmiÞÝ«É$Èè§ÑÊ’X¡3Úµ4Hˆ­+eÓ¢5›úfUîÓ:ÍÚЧВ¦ó‘x)‘oÓÆŠ(x]œŽW†ÚõMßdGmR¹cFmBH$ÚYĈ„Nß Ö ^ ѲÞX»Ûå Œ‹êÉÀZqÔ{é*Ëi¾­7´?™Poé† ßÖðRR{‰³'Ió8iã r'ÕóIô×*AkcbÑ Þ­#¡LB{Üåˆ~MUr Sc7ªvRÅ^Ë´5Wåf$2†„QíHDÈÂŒl’¯2;"16/_+:5ÅÌrçÚQ«½Þ:ùãõA`ëŸ6cZÇÞ·ö¾ý0þöC¡KdJKÛ;Ñ^fÒ©qÕ23~JLîS´# y‚*Ag÷ýÞ×ï÷vßïì¾/ÎîûÝfÄ]?·³û~çáûªwe°mG¡óàýÎÃ÷ÕAÚ ‡õ0ò+ $A¹ãÔ ªÞb9ÕbI@î+W•V¡D,Œ×I·Ð—9eÎ)<¸ž¢õ?Ðu·4))!U?R@é€~ØÐb‚ڙȣŒ×u±9’ò#q##éX›­iqMÌs,ÛT¨¤”.)Iěժ%{D{V&4}HIË<7Uõ+W’À»ÇôMïYºZ)v¡å¼õ,!_Š;0˜…~Mä.Ó;„gýVß‹û-L»e®×>æ´8)±bÞËéK§Á†¬/i.'"Ôã›0‰/`üBt‹¸/BH,kÉ ÜOÉ3îc2Á´ÓêOiêkZ_¤ÇPl‹Eû!iÜø¦Í£¦°ˆ¹>ÕVI£;e¢k ˆI]Gr¹°$^IS·ë¯Ãê {¥2ÿh_]{·¹Â}wiS"ù‚TeDl´ÆH¹[%jˆÍ¨ä~û„DPÒ™zD9ýAÞ™³.×R5ýBIÝUšž©>ZÎ÷eGÃÓ2ØÙºb$UŽ[K˜@¬ú„¦½ %”uÓ)HŸ”FQñwN¬Z‹onûÄ‚kÚA=¦„ªKdìü à®wý±%í yéøš§f²G²Îþ­…¡Àúkë?ZÿÑÉÖÉ›ÿ|óõ×O¶Nžl¤WRÙë““Fî£3bAk”jkõ]¤€óº—¦•VšWëÍ«ô6½Ý÷ýmwvßwg—£º7`^E¡’1òôØž±âÄêGZÍP—ou6U?­?b± ‰ûb,‡®ç½ï¢ÓÓ"õ”éuÁ| iÈY×b¥:(5‹Ôc®™¡Yœ§%ì|™lNÔàÊZÕ))Ý©F‘\Ÿžê†TúûÞ†ú`"„û2C¾ö¦t³ÒÖ‘Í„´ª¶G@Â831iÅÍts™oÏ·IJ&U%vl[õH@ VnÈV%XtïSuµ«²ßzi¨õ¿ÁýìÓZ­àòß^¾óÉÕÕUz¡ÍZ5I'|ñJü퇽o? WD€Þ^jæÎÊ‹WT‰Éñ•Æõƒ^¼r\«ŠÞ×ïÛ#ê›T£9î2=²è쮹tvoÔO\µÆ}z¤~âš-K|x@ýÄUè"ÚwÎßÐÌ„y_£eÝü]³k 'ïã2ÚNϯq [lʉò9P¾#ú•öE¼¬,ØûÕ¼ƒ}Rž»Qå–xD‘%HÒJÁŒÊBù$BͧóG¬hŽyå9IÖ—ËH ¥2c›ûöÙéñ\mÕ£ovLǪ“ AH‰²½2I2^zž‘y¿Bå/Ò6E*˜!´ÇqèÞT{k/¸œ¢É@„‰D"ãÀÌéH¬[¥-$/²ýÏHËi²~ñ0÷ÊDˆ@Ò Sw‘:ʪ ]Âi¶ZÒºVØ~]ÖƒÄÚÄ2‰ÐNì—öS*t‡ik™ý‚€”ÿŸbY`ß¼‡™qî;ó-\úÓïWÕr$_@ÒU'B“2ÎÜ”j9‰›‘ùæëj©¢c¬‹Üû\;¡Üüç›Bˆõ×N–Ü’*ÖNظ²òâ½o?Tu\ظ²Ò¸²Ò¸ -D„R+«+ǯ®¿b5¾þÓHã\r¥ÞÔ…™`¿L¯ŸhM&J|ÔO\³§ìuMçá w׉kêJ%Gê­«êÏ?>pרߡ,ˆ‘ Ff½ Û?Ʋ;"÷CauIöJ¨7 mïYiå«üE*á%²± ½6ƒ#Ó Ü-ªîózZž+CJ‰“~›ëOô¶22^‡‰~¨€ð®')¦Â75šÉRb±JsØ Š€šÄ/ÃD¶YXBç7ZÝc.нÓ<û¸ZIš„ÞYÝg¢WæôõIî»ôq½L±”¨úɪIšXNç™w'sRU)Q.•ÿ®Þ×”ž›æ?E“8k³µWeúßD²ì‹v=éjÒ§¤ã ž%Lû—RÄÆ Í(°m!Ü´vóL ªò+tg‰Ã@(aô EUs¯¤šGûÆŽ"RŠºÚAÚC_縱X›¢ŠW%þXÄΧ%šIIB¤ÿ-áF FhÏ;4Cœ!)]f¡ÎY²í舓Ùé®ÑâB[&¶Þе™ïáê&o,^ùÖ_7Ó¾Û ¶1§'U!RM¢<W„õŽ |馟ûî0î%GŒ-ÐYAö]òÄ中ëqö¬Yéos…U!N¯Ù*¥Ü8½¡~_þÛ˽~ïGë?î†õŸœûq·Ûµ—¹ö0åÁ@~§RJÆ{öö>ìíYÛ­Ýx)ë·½¯?ììKIªw˜Ž¼ù±bTHýĵT}è<¼a‡rBS«B;—Ü𮩷®Õ[×èÓCÄb„±µ5”ŠýÐ3¡¿%}Ü×ञ…©ò$BãáO*@u^§‰Š¦îö&I’ð•¬qõ¯¡i•›Îæ*]â"@F¥ìº™v.lëEÇSéÒGL½’}J¾Ò1&õizE¾P–„NÉ”VËŒÚ$$"¾_‚š¶æÖ,™ð][ÓSô".Éo;Ò§Ú9@{Pæ÷ÖÔ7(ɤI½Ðx !âD‰BUÏ ¸ºU—ÂŽ¦ë³¾¸K׳´Ý%…>£°Sž¡Hã˜Èke"£Î…Œ4Êñû1s¼¡'b}™^™†4ªt|îàžkÛ3WÒ Æb$¤°ËÁ%î]$Q ÂŒ){±·áïrQbßÐt±é kjdÓ)•TyÐï¢4+™´µNUR©³®×dâ“)iAÎWà®ÉŽD“’“RØæ}]‘H­¤H¸±T8-kg]9_«J3#àªT:"iGmbÀ¬¨ßÑó Iùcio9Ãx¹&¤P’u;‹=fƒ7j3|AuqãuõºÝn·V«uºZ­¶ùo®~y;|óÆ¿?øùyòÎ'á¯ï| S¼zf]5;ÓÛû04Ã1i}¢GgÂÆAD‰%ݸ=mÕ_u&;Ò£MϲqŸ‹Hd½yÕ_x¡)#ŠšSã´âDX·’œ¸ÐÕJô5€ó#ë‘èžÛ³º1]†Ð‹X@ì‡0K¸Â¬Gâ›®I‰…™kCûÜéõH +,Hêÿ«m¡AÊÊíZ"å'èúav9,éên“œQå«&“ëì’ èU¼¤™ ‚@ؘ—ëB¿]âFyÔ· @×Ü$ÚR‚Ì4Nén-™Ô²¼Ö›$°ÉHÞ˜ÜMúǦ¶þ=ÚöníÀz>TË ‰YK?× *=cf©Ö2‰EàÙùÝÇ`’H@¯.cløzœE¤Œ=äV¥]àÖ#!)@>®©Ú\ SÌSt1h=Úù1d¸/‘³NkÎz$:w$t‹HÒjÁßôz$®E4½dý¦fY[;sÍ¥”ç“h±k Éìõ®´¨R›N³- zލ ðúZ±÷K÷áè÷2~Ƨ„ŒWŠ´ÒJ¿ÍP Û™.\q ¬&Òä”ÎSÝ &25§#õî$ú‰´VOûù@©@j2Wé3óÎÆÓÜæfã»W€Jóvn^t õ˜WvüQ§$œÊNQ”ê[ÖoDò"X$ÚƒU%’R™p%>f,ÏøÞ…6|]dÔuße¬Y³UÚ`ß–7ï:Nyè[-(Ìx™ž¿#ô©ßIz=·¦ÜL ¾#jøf ¥$ßFrù•f$ħŸ}zî?ŸÛ8½!Õ7[KÍ_Þ~©vKœoþ@ÊŸ l½¶®.–ä_¼¾¨h@úm2ý[ŸM=S¸³isAn"…T ÐQŒt_ªÕ«È®ª›ÒÚî,íCعtøÑU×çéÓi ®VkU6Àe­K­Kˆgœûzm0)REJúFz”„ô®ò<7Óµ7 ÃxÒ)«€°á¤R-3j“îI¤¼ð2×CÀÖ¶ê:U‰oofvµˆÐ7ä7U- ßy‰_:iÃh !¡íó.5t}DGšéšéu–løÖìòW§Iè’,¯# e@æã“±˜Tf:%P@ÓØâ^ÍÊòO$¯Í!ì¼¼že£zíË0Yf•¨²”_W¥Q¨=ƵX:QíŒqçÕk|¡Ì㜯’IIAÆ IÉÌvÊÌìPPªµÆSßµ_«¾Ëek£c:H_Yÿ0*¥éÙâ'eóPrD¤Gâˆ]!û§Õ‰)ù©Å×ÍøšŠ·„ÿ}é²D¾,£þiÄ3uHΗEïI= U‡ ¥E/ñl`ê½àYý'䤫èÕâ¦vOÙEˆýÃt?ÝkfímÀîù˜WÈŒÝ`ŸÌi¢wMOGEMtI;e>ͶÓI‘+G”8 ÿò®Ï•Õst-"ßFR{~å'uB /åùHÞ}½…o¶!·?‰ þ>bàÆ…íŸ›Ë¥mÅÓ5—#6†°qU+/^é}ûaÊé5ÀÊñ+½¯?´W*ßkY9~µ÷õûÔ¹µ~üªõwëí7U:ãF­¢­þ$õQýĵÎÃi÷‘«õֵ΃ƳõÚZ×þøàun­·®ºWӚÙ=SºÄuóÈYDVg|щ@W¯JBÀ‰}¸/®ÖvêJËêæGù ¦ÖYR×ë^¦îëÀ®ÐJg;€œ¶Ü¶¶ ¡+KÚÑ}uRØ6’4QdõÛò¹šõHtêÄêÛKŒÔÐ=uÕ/T«,ÈØ »ª0ã@˜¸ì*|6)Œ¨<}kâ5¦T…„Ù½ˆä¯re5£9Æ­°ëÇ“¯Cå£]àÄäuZ±Ù²‘Ö.ꈭ`Ý¢ 6GRÝ#êÑLRÓZ µº{ëÀ¤ ]¥Û‰M%àÔ¹]zK-'¿O4ý2°³‰(XDêXQ›\ºç—³¯M"e ô®iÿ>RÈœâÌ[$&§‰ï,ùÚÖ•µi%¡ ôª†æ Õ­š÷Åë‘èúJÍp¦ +‘)€þÞÕØ¡Qç&S´w°ÜL€@ÄtnX‰u(Þ¥!€‘zˆ©o ‰“;Òö“#Æ^²švZòJaÂ7õ†®©Ì{ ã‰o‡¤™gdW£ö¿»·Y$é¾±IÕˆAW×b™„BÄÖn­Cн5¨õHTÈa*G²"lÙ¸’¨ä…Ò"Ë6óí@§Z Kå‚ÔrDÛæ¥Ú^-=rm´;ÙGV}ŽÍh’%k©âJ’¯Hêûóí/ì]zéä?³½]ü¤V{i­v ·Wña„ŸÜþ¯»5¼CƒYyñŠ$Y¼òâúÕ­4®˜"¢ç¨ù5´7ƒÀ,†f$ÞJãªþˆ•ãWU@ýø•ÌÄóãWiw«2ºDš›øÔ›×L[+p⪖ÿ`vK©·®éj@Ö[×lë«ÃþAëhC¤íÿ¡ñ#”OIb õ–€XŽå> W„ž¼ ±Lü¤tOPk"Lõ¿õs òÐØðÝõzn©»uÙ~XªiR5³ß^z„vPÃìRd ú†¬i!ë KÐuø¬ÍÖ·Ûë–#tÉ«ûmvÌtÀŸ\âe’Ö‹4üÔÊ­H§³$=93I;Üx™]ç1Ô+öª:.má÷Ý`’Pïé•@(ËZýð­j´m§„iwÝsDg™ûm7ç3þVÑzVnõ‰9ÿD =2mø0!ë6#4³œt ¡½Œé,»ŒµÁ²ËJ­N ÚþìÒA[8 ã¬[,:{(¥ºXï]×ñ2Ý(§­> #­úz3Í !Ý'EϾQyª¿ÐP»¤Æˆ3%½ÒM+Ĥ IDAT©[4=ƒFç©t‡!Ùã65b¶^ ”XmcU×% +„ ØÜ1Z0 æàF’Ô#d{2Âí £wJ²Æ ›Â®bê{'£*™ð•Ê1õU ¥Yãuàø£þv<õiT¦ë1¦ì¦ª¿fJ”ÚBo ;ÇsçW¤÷…PáçÄ&=ï7^–%öM Ûá2ôBG<7±Pªf°z‚)Lf±ÿô¨ Ý Å2ÔÊfÓX­„|E"€­¿[¿õRüóöÖo¢±ÖoÜk Wºý/žþ¤F/Ö+§@$ÞokMÒm¡²6g¬Ðô·­õ„éávÅz¯´!Õ#7µ6Q-¶'°#µ±‹¹DÚ«Y¯ihÖÆ6K¹þŸ—Õ«Ë'±Z›<$ý9RýèÒ/Êýˆµ.Që´.«ÕýB‰û±™Œ£ëMÛ?Ah½tÿ/ÕóÓ i[”ÄÔÝd/ß–V…ÒOÒO%«.ÚÙ¶3aiá®·« ™ç[®YâB‡v·°ÐßÅ*]©Úk=´‹ý™ÝL@Ì¿!c9ƾ®ä~,–C,ë]dÓ=i}‹+ëéÕ«tí–Íb÷{²Ûº;}½Êu¥€k½²9÷©ØÇÖãÚsPa®W¿0K¢Á̸ÑÕ–®Sì~::Åìø±H‡À›£o½í¬R”H¬ËæÐ¿±‡jÑÓv… ÕÃK—7—n—¿úÄf§Ö¤Sw¥-öv1YÃæ5Èç¡H÷˜Õ§5eàz1í²kà òÕ¶<…HÕÈÎÒøÏÚh´äv‡R¨ý8 SÖ×fÞ#8õïG¢ÞW‡¾öQ°Qõ~¨Ñ³ú°z÷¢ž+iËAÒ'%²‘Ò¶ÌëQ9˜½ôœÓZ¿T>*]@Ïé §öÅÔªQ@êÜÈ^Q©w­’¬žât›ê3’ЍeQÉñ@ÿV½p"ÕŒiòBZoVkµ 3ª”ìW ü“$´"T*Êé‘Ê2•›”AǪh»@~›]̤r+.Á­v§Êß92”ó²R.mÜ mkQ}ÂPºfNͲQÖ»ÑÌ8y.h‘s£6.ycXßA•M¤7noW 4½A·‡6î)¼šì.»Ó`ü§ä(’ðÅ+Ùƒƒ¶‡cåFº?—²ýê¯H{Ø-'R½ÀT£¶Ü+¥ß«pýEW.Ua•Lé±ÏÑ}GXO.“ëdx£:S{Ð>·ñ1}—bÛ;O'°³jÆÍ²þaßEì‡v°ICÕb©ðc3­ƒŒ‰fòB½nEÈ€„‰p}e[;è¯Ë×pÕÔªo’E’èÅô* u‚½Q¦w>Ëô*è_©“ÎóÆM@ªI£ý xg‰ýYæ<Öb¸fÌØônc$ ž óu½`[ ¤W;4Iíeot‰y `¼ Ia +PI³[@l]4Õ\j*Ïnj/1žª©Á5zÔ_ílGp"…_ØÜMa âÄí7&2N ¼cSÏšß"TZdØ—±é)†éÈ› ÛÖeóPe^ê¾õ#!¹™H©­­ºÅ‚Û†0•J&Œö•ÎzAÝ¿ˆm? ´÷«¬·ŒeÅŽÊA:2ä™ÒzÒ~G:Oaz2Ûë£sþ%™o%Œ"·E $;íé3£œ¦ß¥óÎæ”Š›µ&†®Ž5ñ¥{§Ûw¡{©º·3ó¹qc1ƳG‘P_J »Z5Úv¡ÀÔ:Ϥ꘻f†a˜9Cd~ <% ~O<&%Q*¹+™ù‘{¶Êïò Ê) ¤è¹%*‰@¿4ýâ?û~0c‘R$³]Ÿa†a˜g j[¼Š<Ã0 Ã0Ì´aEÂ0 Ã0ÌìaEÂ0 Ã0ÌìaEÂ0 Ã0ÌìaEÂ0 Ã0ÌìaEÂ0 Ã0Ìì)\³U±ÖLmú·³»£ŽÐ#?Û <Zî³ÖškÕ:ð“…>nàƒì‹ŒŸ’Cá=®üé7†aæ™e€"QÐiâS•½æsäG¬5׆4Cáɦò ¥]†aæÐSI‘Pr;Í“m_³ð„ÈøªÂSÛüãÝ¢Qñ, ß¾H626ÜèÑ'Ò+ǧ$Ì ÚÆ†a&ËüHl•mSÇ ­dÀeÚ#/y‘’`‹^¤$%½XM6Í>½( Ã0 3)*ÙHló3 )PÔ/Ï%“}D.S’;c›{»Ò£…<æøÃ0 ÃL–¡ýHŠY=@#wøºõV®<†Räšs˜R‰a†Y †ö#)bþ{ÏÔ·cÖq™Þ Τ^êp$Ã0 ³pLx=ÕäO*¨‰„s0OñÌ0sÇĦóôæ ù‘Lãq Ã0 3EBç»bø6RÝèÝ^ÔésüÅ |²ö’òtðf©ä¾Hõ”3ÍG“çÚ0 Ã0Sb雯w/7÷~¿ @&³ŽÎaäp4á‡ã-†a˜¹BðÙÝ{Û_ló*ò Ã0 ÃÌžáV‘Ç¢õ’‹Æw&þ%Ió–b£¥É¼½Ã0 sÈ H½:°ø/PB-PT†a˜gµa†afö°"a†afö¤Fmv²=Ÿa†a˜âd˹6¦ÉÚ ^ÿŠa†a˜À£6 Ã0 ÃÌž‰íkÃ0 Ã0 CÙþb»èÔÏÿûÏw·K°"a†afZ¬¿¶^ñJµa†afö°"a†afö°"a†afö°"a†afö°"a†afö°"a†afö°"a†aföðz$ Ã0 ÃL…Ÿÿ÷ŸW¿˜ Ã0 Ã0SÁ[•µµa†afö°"a†afö¤Fmn~tsVñ`”Ë—.çç²Ä0 Ôsëã[{¿wÃ:ìGÂŒÈåK—›¯4‡#d†aE¶C›£Hn}|kÏn×½°:À™æâÛ›¯4^VdAa†ažen~t3Ûˆ Ë‘C†'5ª¨†a†QäöWB‘(9Â&<7‘Ýßí²ãÃ0 S‘Ü&cꊤý]wóﯩßÏ_¼xþ" ”C‰r+™u,†a˜E¥’"Y" º’#·þE;¦¼óË·þåÖæß_cQr(aK Ã0 32ƒçÚ,--]xëýóéÓ§C^X}ç—7.ž¿H¾óËå%žî©ø¸lÄh8êÔP‘gªc'ݰ++Ã0 3‰’#­kk'švî¶Nì +JZÍõõÓëv¿¾ þ­T6Ö"SEYGXŽ0 Ã0#SiÔfíDs­¹´Ö\Rºd” i?Ùû^ŽBv؈¡ÿ!´‘‡¥ û‘0 Ã0ã0œgkó•¡Ðþ®»rTØ?WŽŠœH”…CaÅ=¢ìCïÐÐÔ½ÞfXØ„a†™JŠdçáîÎîÓÑF=¶?ßn?iÿl?¹ýùöáx6 %ÔŸ%³wÑkì½,>&…µŽðÀ Ã0 3üHTãÝ:±³ópwç!\|{­º4)2‡´¿ë»ZZö¡UÜMrOÑ[X”Lö#a†aÆdð\o c(9RdÙþ|{ýôúhK¸*=AGjFöZe92Ax›†af*ÚØö~X9"EòQtïã6€{·Õ?upûóíê%tœ… oD¦¢Â°÷òì›ÉÂ~$ Ã0ÌÈLeï_%5ä£@ÿI¬Úš½Uœ. Ä“ E£6Õ/@ž´ÊºÄ²L^„a†“i­"¯Æk¬ Ù¼”3|3”™„™gØ:Â0 ÃŒÉTl$0’rÚ{r3 ³@ŒæGró£—/­•œÍ8»@6ÆRró£ Q=IEfVž8å›v?ÙdQñœÛ¤f&—iÙH6ÞŽî}Ü® tžÜϽæÂßýdJOg˜©ú‘T±yØöRé•lÙí@{—M©­Í|¹)bQ˜æå Ì‘ˆÃ0sÅTIôÂjû»îÆÛ‘ò&éîîe¯yç—7Paf!8ÈõHÆo~TÕ¯÷Ì´̽`ØG}x§èSŠPª©Ð(у3ï6G†9”LËF¢¤Æ…Ÿpç¦ôf~X õHFkü”³á,‘#È ¼S#?ˆ›úc±†ll8a˜…cZŠddºêóu»û}'÷¬8"Ç£Æ+ƒÝf™ƒgV+·Òö²¨ʶyÕ`³BÄ;>дèÑY당gáÓ¨S4DUdƒê£µý£åÈdãÀ0Ì\1_Šdû7ºß÷J.OäÝ{«GWÖßhXĘrn=’œ¬Gí8mÞP³rèõ#˜gJ®·/2?í÷üÄ„a˜Y1_ŠÀ¿~ùkõc­±ž=»³§×5¹ðŸ¯\œ˜AÌþ6å öÀoÚž­sâÓ:šûK㌶Œ#%NÍ Ã¦®H†ÚgýÖKÇ7þþ}™t÷Úb{„båìé³k'ÖVÕ&Wf fåGRÔ Í¼í÷°R ±ƒ™æã§ºd´.¹Ç,Íç! ÃL–é*’¥¥¥ oÝ¢%Jj4¢œ™Æ#årÄÛÚfœ}øŠÂφfúŒ¯@0–’Üžý°.#?tg…¢‘ÏwÄsn­âGR=Xo¼f‚FŽ™Ø*æ! ÃLŠ)*%GZ'ÖÖN4ì<ÜmØ©®Ä‘0:º @>ÑGêÏi‡ÖÝ/ÚÛ_mh¼üÒÆ™”vQä.zÞVϦ(Ó¤ÜÉñ`š™ÔóS†þ°·Sà }bq.¶üÆÞ¥„¾« Ã0”iíkcY;Ñ\k.­5—”.™Û_m7^~©ñòK{¿ÿæÞÝUnQ›ýÚß † »‡°wqöHn°Þ.}4ð¢Gx!ÓÿWܾxÞ8È}m¨?fQó9%;­†È6h…’ÀËŸ[¾"\ùBpT•G›ªœƒIó"ªÄa& «0 3Kß|½Óx¹¹÷û][Üpëã[ƒîªôÒÒ…·n]¾ta­¹àéÓ§·ÿçîÅ·×Z®¼}-z>‚¦±6’èX#G”iäÞÝ{¿ÿæçÿׅ죩ÝiÛIö½«ä½1û /Ã>"÷ú¹åâÛU9¡Ž#ÔD ”E™z³̶‰]¸~á"Ì0Ï7?º©%?>»{oû‹í©ÛHvîî쎲'Ž8îý¡½÷‡vûû¶wÊŽÔlœi5^~i`PÙ§{ª‚'”>È5W”¿E6œ«øBÀ;3 Ã0#3E?Õ´·Nìì<ÜÝyU $ÏF’‹çG2^”²ö•¡ÂYÐa—1Y¸õH˜aY¬%ÈØ@Â0‹ÈtçÚØñûgõ{åê/€í¯¶ò_~<˜åá —dµE®ÕdÏVÏ¡dqÍ$ó°É¡gæíëÌ#PŠ*Ã0–©ÚØVvØæ¶dÔf‚Ð1C{„ÆÜ;RÂø”ùG­G2ëX0 Ã0‹ÊÔÉ84~5~EGõ¤ßí¯¶×ÿSÎB®Y¼–Þûí5ùO Þ¤åTî½%! ûzpAa?†afdæN‘tÿÔW?rGm¼k˜9ÁZGxà†a†ùR$Ý?õ·?¿¯~ÓQõÏH¶?¿ÈDÉB›FÀÖ†aflB‘TŒPrD-F2j£þ©ƒ¿þ?µW2óû‘0 Ã0ã0_{ÿ®Ÿ>¹ýùýúsuǽ?¤|Z•‹«:»~úäLbÈ”À3n†a˜‘™/E²z¬¦¤†Õ%¹¬Ÿ>É{ÿÎ · 11 ÃLÑÚ‚ùR$0{ÿžûÛYG„‚E´ŽLj·†a†²û»]º©HuæË³•Y\Ø„a†ÁFè¹³‘L„ÝÿØëõú/½è<îåþ°zlu–±û»µÏþnð¡vKšl#”=Xt1=•{ö¨øôq¶úÍRrð*¤ %ùUžõE)ü4 ë†aCåÙúÙß­õ“÷w¾èì~ÑnT¸>ªGÕW­Èd—{·Í’ V±Ï¢O´¿‹î²7¢TXÐ`½ ¼{³g‹Âœøz$T¦¨åÕ‘Ë—Öì)ûÛn=_r×8‘™FÖS²ŠLI@:ý½ßE·£ g†aæÃc#ñ ²ö©ý½\£¿ík/_ˆêQóŸâ  {ÚÀг=RÒ.¹‹¶^UžlPôÞìÙÆô#ñÌ$7?Ú¹|iMýóΪSÞouÙ»æ™Üt®RªÜž›³ Ã0óÉ!±‘X9Wû_" `¯µƒöZþqcÊÚðì­Ò#^'µ¨½(Jr/V-а/RtjØ‘åG2Â’8Ôìa @RPkGËǘ֑,³ 6תtÅ Ü¡F”¢#ٻʭÙkroôâY˼­Gb'OdFq‘H%û GªÜ>ÙX1 à ‡J‘P…!¿¾]ô»ÑÞhñ>2c=OÓxGèeÞsº z§hŸ <{±~Ñ]ÞE¯–{<7ªEÎ}Ç1÷µÉ:ˆ +&¼»ªK–ÒdNÜÆð4=ªR"³ˆFràíKƒlo Ã0óÃ!µ‘#õçÑú_·Û_`÷l´È_¶ðÅ=®8à¹6ÏÃú‘x¢¡Ükµèlõ»r)òx| -¿qØ8Œsp⺊af²Eb­#¢ói¿óißü¾ íÇ"È‘Åj?&¾ Ã0 ó¬qHɰsmæ\Ž,¼ëïôX,mÊ0 32‡D‘(…¡,%gÿ±Ðù`àÌÈŒ¼ Ã0 ÃàÐ(Å@©ÁZdª,–¥dÞæ1 Ã<ã*EÂÌŠ…ó#Q[ßšuD†aÍáT$ò‰ì|ßG‚¯ßßþfµ¾"“¸þÜJmµ6øffxË:¢à&†a˜¹âP­G¢èþ©ßþ®/%d‚ov;µ•)'hïuúÝþÒÒRûÝYÇñ2æz$ Ã0Ì3ÎaS$ÝïúõhÅ;X_õc+Q£¾R_ðÙÿæ‰6S=3†a˜‘™ëQ›¥Aû©z´¿ëË'ò›ÝÙ‹Ûß·;ß÷\ùåí5ïÿϾùã ˜‘X8?†afÞ˜_E²´´tá­[ôÏ¢¤ÿ¸'D@>‰w~¿×ÿs_Ê nüâVíÿ\‘²`ã·ÛðˆX=êû”Lc½p]U=ðŠ1YJï´7CÑ„a†™+ætÔFɑ։µË—.\¾t¡ubíÖÇ;å»r´¿³+²¢×ëË'RÉ‘@¿×»úîuvEÔÚß½÷ïh(¹ 8ܻа Ã0 3sªHk'škÍ¥µæÒÚ‰ÁM|"íïðˆ‰DHðþÿøõÆ?€eô÷ J“ÝÛ,»%›=˜½7wû’’MÝh€Þÿs#SUïÞ€ýH†a˜‘™kEbi¾2ø)ãµÖÔïø‰Ä> âÄ(•}wñës²Ês³Ž\›‡=X¥ùÏ ñ6o³GÊÍ-%«ò¦cb­#¾5è®g‘öwÝ¿i÷þ‹½R?Ùj³ÌÚîïfµ)R´~ÿÅ·/ªrâ¹²ZK‰šzSÅj²ópgq ¨ì`ÅÀ0 S±J¿ùÑMÕˆ(ùñÙÝ{Û_lÎQ›‰#ŸÈn»×yK ôE·Ý[Yi7_åQ!Íù‘̹ 0 Ã0#ÀŠd0Ýï»?ÅÛwÛ€[{þþç¬HìG2W° a†™¬Hpû½{ýzOdÔbìGÉÌÎ IDATÑd¿7ë˜ÍÜ׆a†yaÏÖ\øÅ†|‚T޵#³×<Â;3 Ã0#Ã6’l½w»vý½Èh¨=FÍÔš°kͥݧÞûÛ;•½¾äbz*7¨É’}‘*<³~$ Ã0̤`ERÆæõ­Õçêë§×û­Þ½騃­Óõ¨±½°:ðvÛ´gõÇÎîSï`ÑÅH«Ñôy–ýH†a˜‰À£6…l^ßZ]­¯Ÿ^ï?î !¯Ië§£õÓ*r„¢ôÇd£·Ö\Rÿ¼#0fïTù]E7VgÚë‘0 Ã0‡¶‘ä³yýft´Þ:µÞÜh·ÛF´÷e»õFtð‘ÉŽéPK‰gq)Ñ%wå¶”0 Ã0#Ê$‡Íw·¢¨Þ:Õê?îˆ#µv»]¾‹Þù`Ó}m“ŸêGVdUŠ•G¹=&ë•¢Žìì>g0ˆýH†a˜1aEâ³ùîúÖ©F·Û¯ÕjíoÛQ#j¼M0©rÃ@Aà)˜ÑDE¹3,la†aÆ„ýHR(9²q¦qï“n­Vë<êFQ=:ZSŽÐ!e°ÿÆ÷/ñBȘûÏedü˜° Ã0 3l#ql^ßÂãÆÆ›û_µÂ{wÚ?­GÇ"!Äà› ¼=èŸãcÍ$T@Ð1 Š?²w¡t²OEØRÂ0 ÃŒ +Íí_ÝY'×Þ\Ýùª+‚°ßë}»Q?Z¯(GŠFC*^V¢ŠfWyböâw¦EØ„a†µ1Èèä©hç·]è÷zgÏ7Â#aE9Âðj­ Ã0̘°DÓmÇ÷ÑF€•c½µ¨^?ZGUŽÌd 5Þ׆a†¶‘ô;½°Ö‰¢zó•æâÊ‘–†afdX‘Àæ¥m²õϽu¶ùj“-GÃbgÙ° Ã0 3¬H`µÑÄ…Ÿ›uD¶Ž0 Ã0cÂÖ¨¢EÚßuü¦Ýûs,VdôJýd«aGvš¯L9~‹À¼ù‘P…Ä–›"8•& §ç\ÁÙ±p°"©„|"»í^çQ,%ÐÝvoe¥Ý|u‹Ê&æd=U Ýúø–=rñí‹êÈü¦™Ã©4Y8=ç ÎŽ…É`ºßw;Š·ï¶çîzÿsV$ŽùYäæG7U5DëuäâÛ³õÑZsÍ agwGÜÙÝ™xô²!çF ÷ÊêadASÉ)tîÙ¹JOd’tØL6¶“M“µæZõHÎv}ƒ ÄP92ϰ"Àí÷îõ;è=‘aP‹± DýÞ¬c6ỎuÄâÕ8%½¢‘[‚ÉBëzU¹@d.•Æa®Ò3ÛÀX¦Sæ¡ÀOêÙ¡ÈfÇ´b6i²ŠjqaE2€ ¿ØØ|û^*GˆÚ9ÛˆÍóàG¢úFEq¸|érQ‡µÚrÐϾèHùÁÑú¾Ù#‡©8Ü©T±ùLÏlF²ä}½0=ÆOÕZΤ]…Éï¢ò\á’++Þ5ìÓí54_(ã'éAÂsm°õÞíÚñ„h9‚ÚsaÔ\¡—--ùÛÔ-²ÁzK.^J3îû bœG²7¶ŸäÕ ^Õ@ÿ´=]ï ÒuÇø‘™H˜aR)7¹‹ÎÎ$=U_¼ü‚ê‘ÌMêòÇy\õhä£'KI’f#œ-ÒÞ•¹w…_ýé6p*5ÞÞ6)X‘”±y}«v$Üxãõóu{°uº¾ñÓhãLkàíO Yý‘=Xt1=•{v8”둌ðIÛj"·&- PÝRÒ‰)ºwæõÎA¦ÒPq(g¶éIŸR¢K&ɃI“…ËÅÀoâ]PR¤=¡0‘¨V 'WýL$ÓƒI!›×·VWëë§×û{BˆÆkÀúéhýt#zau¨ ¦¡$²Vû'ý¿=U~WÑ9dÖ‘êdë Ñ¾ü¢Öá`R©t˜ðz±“Êôv¦ˆ"»BÅ$¹H—‡ÿ¬e(û‘ä³yýft´Þ:µÞÜh·ÛF´÷e»õFtð‘¡áéÓ§0V{V){ª$œ¢»r Å<ø‘”—0FÉHùÜ©4YÆIωkÐC“ª#3fñVCEE£!EŒS¤G³VØF’Ãæ»[Ñѕ֩VÿqGÑ~Ô®?_ŽEï|°1~à¶É÷ 'ÖV‘j¼FŽx×g/.:½KÅAý9š¡°¥dàeÓxôÄÜœJ£…s0é9fÇwà½EáŸ&k™I(Üçì¨Â´mS²”xî\#GïÀ`Eâ³ùîúÖ©V·ÛGjíoÛÑ‹QóåÆ÷ÞËÖS¤è.OÁPç’êÎÞ5÷”ùñ#Q=$OÝüèæÄ»þÞȱú3w89냖e¨1ìŠa–°p©Do©>Ò?·é9Âë ŒdnRg¯™øãªû4Ìmv”?½J•»FU¼«Ü7¥ÊÓ«?znYúæëÆËͽßïØúÀ_çîYCÉ‘3û_u×ϬvuëõZôB4PŽdmÙ‘’ËJÆJ†“;jS~$÷¹CÚ(»(È,o=UT(;wÖNLò[RòH-ѨÈ.—Äp*M–HOoÖ¤×;¸x[¾¨T¬ÒíBvJ~|v÷ÞöÛìGâØ¼¾…Ç7÷¿j „÷î´7~ZŽEBT²Žäz{Ð?ÇÇ*jÕðÆ€ªüÈÞE#9š+É<ø‘(T¨°ž‡XÍœJ“åÒÓ› Ër¤.Þ V“**¬H4·ugUœ\{suç«®Â~¯wöíFýh½¢Éuþ¨~Yù`MîŸUž˜½xà]㈧¹Z¹õ¬€F€Si²L;=¨i™žñ⽈¥…ýH 2:y*Úùmú½ÞÙóðHXQŽ0óãGÂ0 Ã,(¬H4Ýv|ÿË6¬¼Ð[ÿ›zýh}uu¸EGæ‡I Uç™eÃ0 ÃL V$†ýN/¬u¢¨Þ|¥9Á™5ÏÊdÖ±`†aV$°yi¬Eýsom¾ÚdïšÑ`K Ã0 32¬H`µÑÄ…Ÿ›uDö#a†aÆ„­PE‹´¿ë>øM»÷çX¬Èè•úÉÖ$×L[tæj– Ã0 ³ˆ°¤ò‰ì¶{Gq¿n[<¸ÛÛûC{Ö‘š/Ø„a†V$ƒé~ßÝû]gûn[Jwðþç¬H|Ø„a†µÀí÷îõ;è=‘aP‹± DýÞ¬c6OØÕZyà†a† ¶‘ àÂ/6ä„ r€¨™m¼æ ¶Ž0 Ã0cŠd[ïÝ®ï @ˆ¦‘#¨=FÍzYvïÜ%B6Xï`ÉÅKiÆ}ŸAŒüö#a†aÆI›×·jGÂ7^ß8_·[§ë?6δÞþÔÕÙƒEÓS¹gç¶”0 Ã0#ʤÍë[««õõÓëýÇ=!Dã5 `ýt´~º½0ÜóÓPY«‰ý“þßž*¿«èÆŠðz$ Ã0̘°"ÉgóúÍèh}ýµõþãžD»Ýn4"²õFtðÞÀtÔFíY£~P«‰=R¢'JîRGnD\[G†a˜1á¹69l¾»EõÖ©VÿqG©µÛíúóõèXôÎñ§ ¿ý b™È ªBh8¹á%¹+Q2ì»P”É8ÛßüÈß;ûò¥µaCö†afN`Eâ³ùîúÖ©F·Û¯ÕjíoÛQ#j¼0IÓH®b(<3š€¨(wFcÌ•[•˜Pºda‘4 Ã0ÌÁŠ$…’#g÷>鮟Yí<êFQ=:Z3¼Ñ–ÜSãnÿÌ^PtW‘ÁfX¦º •V©xíŸl&a†YPØÄ±y} g÷¿j àÞv=ªE?Œ*î_“£ë9Œdñ·G¨¥èHö®Üñ£êLÏÄšL¨%{Ъ–# Ã0 +Íí_ÝY'7Þlì|ÕAØÿKïìù(: QIŽ‘Ýv¯ó(î÷Ñm‹w{{hÏ:RsïkÃ0 ÃŒ +’Át¿ïîý®³}·-¥;xÿsV$)~=†aæ0Á£6¸ýÞ½~½'2 j1v„h²ß›uÌæ‰ø‘0 Ã0Ï&l#À…_lÈ'AåQ;2ÛxÍÖ:Âr„a† V$ØzïvíxB4Aí¹0j®ÐËr÷·ó¶¹)¹¾äâ¥4ã¾Ï F{û‘0 Ã0cФŒÍë[µ#áÆ¯oœ¯Ûƒ­ÓõŸFgZo·[ÆdõGö`ÑÅHo‘s¢d4Ø„a†V$…l^ßZ]­¯Ÿ^ï?î !¯Ië§£õÓè…Õ¡‚š†’ÈZMìŸôÿöTù]E7[J†a˜‘aE’Ïæõ›ÑÑúúkëýÇ=ˆv»ÝhDdëèà½é¨Ú³Fý V{¤DO”Ü¥Ž Üˆ¸ö#a†aÆ„I›ïnEGWZ§ZýÇ!DûQ»þ|=:½óÁÆøÓ†?×V‘J1 ­ŠaE¢é¶ãûh#ÀʱÞZT¯­OЕõ€™Ô ѰÌϾ6ªŠ¹õñ-{äâÛÕ‘¹ÒL“âY{ßêpÊTäÙL¨gó­çV$†ýN¯ÞQ5_ir …µŽÌ‰QU ­SÔ‘‹o_,ªkÖškêÇÎîNÑYïTö  Ä’Z k͵aoö}½H–?.÷ÅGˆðB¤L6žÃ>± åIº( åEu 5mFþpìË–W6ßi¨ÂLŠÄ¬à†6/m#µ¨î­s³ŽËB2?Ö‹W›L‡Ö2#TÙª§:þ¯ê8µUõ/DÊxÑ3qFc! éÎ$¡&ÅîïvXZy‚fàgX$V$°Úèv÷V/üŒåÈè̉‰ê÷Eãò¥Ë%½Õ}¡ukEÓÈ@r«<ï ýs¨Ê}´÷õžkŸX^5Œð5ûܦ Ò¯P%žxa.bBy1/O(Ï6@ç^0©ä­øÖ^ƒ­’®¼x¨k²-}I•XR‹L/_gzEb†ð\¸ð³sï|´^~Mû»îzpó—Û·ß»·ýo»ò‰<˜¸-‡lÆM¶&-:X1Z‡fæÖïIn‘Ýv¯ó(î÷Ñm‹w{{hÏ:RsÄá^$÷cžÈîÕ Œe&)ãudË[8:`Q1pþ¤ÞkQŠÐÀw÷›¼Æh™X~e®ª9†‹R$raE2˜î÷ݽßu¶ï¶%1‹Üÿœ‰ãYG¦W·Òþâ\Õ¹åñÛ^g®RƫǽN|‘íä`â6W uT¼8”¯_…ÃW$Ød·ß»×ï ÷D†A-Æ.€M@ö{³ŽÙœ1'~$åÀ¹Cæt¨Õþ˜x3“ 0k£!ØÞwØxV?[å‚*·Ì›×oFGë­SëýÇ=ˆv»ÝhD{_¶[oD:’b……§6²š#7œ¢»r ˼­Üú,T©”gí}«Ã)S‘™$Ơ̂ᙙ§ÀüÀ~$9l¾»]ijõw„íGíúóõèXôÎãn›|k“°ÇYAðôéS{KöúìÅåO§w©8XãÊÈ/5W~$ Ã0Ì"ŠÄgóÝ-ô­S­n·/ŽÔÚß¶££æË nœ+&žŠîòÌSBõGgïR¿Çô™]èY6 Ã0Ì<ÀŠ$…’#g÷>éÖjµÎ£nÕ££õ1G·èÊÓ4ãOŸÉNÛ)¿€Ì:‘ŒŒò#'†aæY†‰cóú76Î4îÕÀ½;ízT‹~U´Ždçè– ÄŒ†Õ v´Å¢Ï*9’½Ës(-zl)a†aF†‰æö¯î¬Š“o6v¾êŠ ìÿ¥wö|‹„¨$G<Ë FUr}DrÝâ¶xg/öÂ/ºË» Ê+SØ„a†V$<íü¶‹ý^ïìùFx$¬(G¶Ž0 Ã0c³5Ýv|mX9Ö[‹êõ£õ º²0“$йZ„a†Y8ØFbHÐïôÂZ'ŠêÍWš‹+Gf[J†a˜‘aE›—¶ÈZÔ?÷ÖÙæ«M¶ û‘0 Ã0cŠV]@\øÙ¹YGdQaëÃ0 3&l €*Z¤ý]÷ÁoÚ½?ÇbEF¯ÔO¶&¹fÚ!€ýH†a˜q`I%äÙm÷:â~ݶxp··÷‡ö¬#5w°¥„a†¶‘ ¦û}·ó§xûnpF‘ûŸ·›¯6f«¹ÂZGFó#ÙyÈM1 Ã<ë°"Àí÷îõ;è=‘aP‹± DýÞ¬c6OŒ³ëïÚ‰µ‰Ç‡a†Y8xÔf~±!Ÿ •#DíÈlã5wð¾6 Ã0Ì8°"ÀÖ{·kÇ;¢iäjÏ…Qs…^–»¿]ח\¼”fÜ÷Ä8`?†afdX‘”±y}«v$Üxãõóu{°uº¾ñÓhãLkàíEüªmí¼ƒ%»Ov¯àiÀë‘0 Ã0cФÍë[««õõÓëýÇ=!Dã5 `ýt´~º½°:TPÓPY«‰ý“þßž*¿«èÆŠ°u„a†V$ùl^¿­¯¿¶ÞÜh·ÛF„@¶ÞˆÞ˜ŽÚ¨=kÔj5±GJôDÉ]êÈÀˆK`?†afX‘ä°ùîVtt¥uªÕÜB´µëÏ×£cÑ;lŒ8møsmYA ÒZ¡È³¤\Oxw©8¨?Çߟ-% Ã0ÌÈðì_ŸÍw·Ðo´N5ºÝ~­VkÛŽQã…IšFrÍ5cT¹¾(Ü#¹J¨:c®G2Ÿ°ºb†ÑÚV$)”Ù8Ó¸÷IwýÌjçQ7ŠêÑÑú˜éä¶äž?pûgö‚¢»<ƒÍÈ1g=’yæÖÇ·f†a˜c÷w»£m*£6ŽÍë[xÜØ8Ó¸ÿU[÷î´ëQ-úaTqÿšìÝ’˜Ñ°=v´Å“ž¥èHö.zÙž­`?†aÀfV$šÛ¿º³*Nn¼ÙØùª+‚°ÿ—ÞÙóQt,¢’yšÆ;B/ËÞ˜{¼è*/²g/öÂ/ºË» Ê+ga?†afdX‘dtòT´óÛ.ô{½³çá‘°¢ax=†afLX‘hºíøþ—mXy¡·þ7õúÑúêêp‹ŽÌ“$ª[G†a˜1aÏVC‚~§WoÈ(Šš¯49a†Eù‘ åÊtó#ËßË— wÝ»ùÑNÉÙ*áÛÛÕñ¢?'K¹ј>FtQšÙë0 3,ÜðÀæ¥m²õϽunÖqY`F›qSE dµË°áßühÇÓ4#Hœà&–a¦"¬H`µÑíî­^øË‘™àz$Öbáý€Ñ%–•k‡ºqdâ-"·Dv&¸$]vSvøPçžÊ ¼è‰Eg½Ø´îdcR1ß±è,Ã0‡ö#€ ?;÷ÎGëå×´¿ëÞù§7¹}û½{Ûÿ¶+ŸÈƒ‰ÛB0q?+¨† bâò¥µñ-M/¹+ô{—2RNÉÁ*×ÓãEO¬r–^Vô^Ù˜ *ïX7†a¬H*!ŸÈn»×y÷ûè¶Åƒ»½½?´g©ùbäõH”éBý#¡URVµ`xw7kÚ;å1B˜åG¸f|JÞk̰ñƒaµL÷ûnçOñöÝ6à&ßÿ¼Ý|µ1ÃXÍ!Óó#™ãx¨Ì?o`˜ÔÙ4Â0Ï ¬Hpû½{ýzOdÔbìÑd¿7ë˜Í º¯M®WÊhd[Ðy°Œ‡aßkRo=©Ç0Ìã6¸ð‹ ù!¨ jGf¯ùb†ë‘ЛòÉÃåT¡¤ã>ò¨ÍÁ0²É¡ä½ÊÃøÄŠQbc Ã<;°"ÀÖ{·kÇ;¢iäjÏ…Qs…^–ëWä䘽¾Ü#²<¨É2ò#&ëG’ ÜÉŽÑÂGñœ!<Íì4Oó¶3œòÀsÚ»ÞR=&åO,zñ’TTZ1 ³Xð¨M›×·VŸ«¯Ÿ^ï·z÷þ¥£¶N×£ÆJôÂà]Ÿ¦ç:ÚãKé}wË/FÚ‚=Ïuô°~$%Bîï" ‘=^ñÊŠ¢¤èÏqœXsÃø˜ǹeàÅC…9‘TeæÐÀФÍë[««õõ¿^ï?î !¯É½/Äúé¨u:6Ù²úc|hg—±ÏòzÆêwÑ]öFŒ$zfåGb­&³u-bžå#Ã0̼ÁŠ$ŸÍë7££õÖ©õþãžD»Ýn4¢½/Û­7¢ƒŒgŸGÞJVYÍ‘NÑ]¹Gª3Ú,›ñ™O!b™C92'ž§s˜2 ÃÌö#ÉaóÝ­èèJëT«ÿ¸#„h?jן¯GÇ¢w>Ø?pÛä?Í,U2¬noÉ^Ÿ½¸üéô.;`?ðÆŒìGÂ0 Ã0`I–Íw·Ðo´N5ºÝ~­VkÛŽQã…¡GjJÈ5c žc4Q4ð?‘ñ…YYJ¦ïiÌ0 s`°"I¡äÈÆ™Æ½OºëgV;ºQTŽÖÇL':¤â5üãK¬Ûlö‚¢»<ƒÍÈ1YÐõHÊQVŸ[ßšuD†až X‘86¯oáqcãÍÆý¯Úá½;íŸÖ£c‘bðÍÞôÏñ±ºŽøxc@U~dïBÚ×uØ>ëˆBÉ,†aæ`?Íí_ÝY'7Þlì|ÕAØÿKïìù¨ºI/"õÔ;B/ËÞ˜{¼è:j“ <{±~Ñ]ÞU^ÙƒýH†a˜q`EbÑÉSÑÎo»ÐïõΞo„GŠr„Q°×Ã0 32ÿ{÷"Ç•pü æÐ:´@‡iЂÐÜuƒ;ƒ%vAc6 ìé Ç—dcXlöb ^k^äirsÁ2¬±÷¢¼x‚CÂÚ…680 L ÓÃ졬ÚR½W¯^½÷«îúóý DMuýyݯºë׿úu=®Úü`2>ùBÕ’:÷Äñ°ßë]èuÎÖ5™ÿO+YG˜'r$|¯¦GÇËÝ£~¿7xzPßpd!ÈŽ‘(¥ÔÎÍûjiÖíO¯]ß<3 sä:@"¥”ZY(ÕÙzõÚ¢RodJÞÈ(¥”K,2þÓdÿ“ññÿŸtÎÍúO÷ž][åÊNŒ:@ r$NfßÍ&ãã£oO¦S5wö?>þêëñ¢U!dGÈ‘ä›üßä蛓û•úKRä‹ßϬ.°UUÕ‘pK1Ô”>Žt¡‘¥£…_¹9Œ'·/+:~ä9 8""É1úÕgÓ#uüÝly©{¢•RËj Ôlz¼è–UOSïÜ ¸K4¹±B2vñ,ô€¨/"’$©ÙcIDAT[ÿtyçÆgË*Ž(¥:ݳ³Å6¬R¨#AcD)ýLŸœc ;R+f¥^rƒËîâ™ñŸ¤IÐ Ô‘ä¸õ«Q÷oŽÔ’ZVƒGáˆêž_îÎ%3ŽoÓ7›šiYøÌãBŸO¿]PG‚f‹ÃˆdJ#u¥&)Žüûîâ™{ª†ˆÄfçÍ[ݳ˗råò˽xæÚó½Ë/ö/_]Ë]=2F?ô™Y «Ç‡È™CPâ‡û‘ ’§v÷Ó¼}IcTáÝÂT\4 I¦7o­¬ôÖŸ_Ÿ><ît:«?ž)¥ÖŸï¯?¿Úr¥Ð¦Êˆ$ô¬Iügòÿø!ûZY+B¦´{ç ëÚ å#h$êHÌvÞÜí_è­=·>}xÜYêŒÇãÕÕþWŸ×~ÒŸc’!B4fM”e‰"žø!Ëv²Ö2ÎqG š¤"ç{= ’J·&AÃ#1Øùå­þ…skÏ­Mu:ñ·ãÞzý'ú¯¿9|ãñ)?•8‰sz@]¯Q¡—UYb'RkEmˆþ ŸìÚ,7‚ ùAMœ‰'DÐTD$i;¿¼¥¦«kÏ­M&ÓÎÙîøÇý¿êž’¼C«1˜ˆ+E²ÖJE0Éâ÷]ëkI•§PG‚fˆÎ÷©³~R$c½ÂT¶ Y»3Δm°\µyLŽ\¾ºúÙ¿NÖ¯®};é÷{ý ½À×)yI%@ø]%±lÁøk¬µR ›À–p?Ô—±¦5·ÐU_Òþû—¬Ø%ë÷L ŽˆHþbçÍ[êáê埭~ñ‡qG-öáøò‹½þýNÇ);b¬öHþ.Ž’YÔ5 — }­d#=BêH€,…îý ´ÉF¿ùp¥óìðg+˜t––§ÇÇ7V{zŽáˆ±øÃ}1ûÅãŸ.{ÔÎ]Ë/x";d!QGòȬÿìsýƒÿš¨%5=>Þxyuùì²c8E É&ã“/>«%uîÉãõ¿ëõ.ôVVŠÝt¤:¤.Å/nÞˆHù^MŽ—»Gý~oðô@ð—5mgG¸pðCD¢”R;7ï«¥Y·?½v}cð̀ꚢȎ‘(¥ÔÊêD©ÎÖ«×Ý£Ž‚ˆD)¥¶^½öúõE·¢öÈ”¼q}üîGBøäWSHDÞ÷#Ù»»WF{PMÛ7¶éñ¶¡ÓÛfûƶJ|M-¤QÉ7oZþ­;ÿXRKZ(ª#ñ8=VA­Ñã-D§ÃE£"’eU ²òDñÆ[Þ‘(¥®ýÃ_÷ŸÔîl6›Íf³N·Ïعy__7k¼À!èô1~C6åØžÜe\Zå>. ãÚ5ó·6³ï¦“o¾²3þíæô·Wfÿ¶9ýý[“oƳéÔcká·@=M0ŽÄ+.·ÍQc’!Zû+›á`hü35ßåQ—í£RôÞ±ô]ÙÃÁ0úWt­’ÚS;MË‘(¥&'o}óžR³÷¦Gê¬Rª£”ê~?Vo¿1íö:¯½Ñ=ß5®˜J?ÄÓɉxIõx kÚÂ8ènîö£e²š”Üx*úñkR<3wuï:’ú†‡Ñÿ.Ë;. Ž’î Hj`Žäöävç¬úè¥Þ8ß›.=ºüç5SÝÉQ絟ûm6:Çóúé__7–Œ6’[³l?)9V°Ë*î¹ãÖâ™ÉÕ³6ÕÚLI$ú¢CÊú?¹|rŽ>ZËïëÊÅ£ñŸ©RVgY:þ­ ½_Rïôxf2Ñ ½sÝÝòà9’Ù’ê|ßyáíÍ{7ïý|ÿ‹Îù•étªžW³_¿×L¦ç»–ôâ4‰1Ï¡×^8VZè9¬­©"—Q ”‘ì¾3Ú¼þBî2%ÍÀ¸6€Èî]¿¬X)•­£¾·yý…îùnôO)µùòfü<óú ¹yÔÂB®'(žó®ÎÞk}¾z¬ì}ÁŽ—·UÊÊ‘DÈ•Ÿ^QJm\ÝØ¸ºñÑ'EÿßûøžRêÓß}Zè>ª¨¸ùßDj,D5»O3AŸ“RÍ'ÔQ‰u$ã¯'[/mþe… I[/m¿žô/šâÕÇ™³üé²zòÑÁÑìÉ»Ž$kP%F3V¦Cr&ÝQkƱ¦Sš: ôãDßfÖFTÞá¤2Ž¨Ô¨Röã0ëQ¿cÛeIûÓ÷kOIRCŠº?ëäR«(·gº(÷·6ƒÕgo¿ûlÈR±ŸB <„ב¤>§âéÔ„¢'«sí½¯ú©®ÐS›RÚ¸˜©"K,ûUÎǶ¾€ãÞ mYoO©<žµ¾®q1>+š¡Ä;¤e¥@rjCÝÆ’‡]ò*o4‘Z+÷Buj ©9ú2É™…ŸU£…בØäc¥…\Ɔt_1Wê”fù*ºû±í·ý«H~íQ¨m…Öå#¢ʽjÓ¿¸rå§Wn¿;RJýýký¬&šéÇ%¦6¦Rí[Г‡ŽßW Ê¯#! „ Üï<‘Ô{<¦Ø/+ˆ4&%wïõâñZ9®ÂgE}•‘ô/®Œ¿žÄ‘‡G’Œr#Ë¥ã%ÆBGm¼…|”§¼û‘ØãK (ï7²ýŠ€ßf=' øFT´ýîueÚ¬–9’\E#šÛýHG ËåÔî‘õ‹ìk9n³vÁJÑÊã‡@V=P½^ ”‘lÛßSc¿‰R¸~ }$Á¨ì»µž&*ð J&ðbD*“ê²qËOM¿¬qYÑû‰¸¯e\RúŽ­]¬¬¶éÏÂøPrÝ=kä*1"ÙûÑxûÛ~ç7ëâ9—c.Á$?bô/ûìË RG’u‰Í8m™@MÙ/;Ú>Ó¾ñ¬=Æ5­úòzµ™½©¹†¯UôÑ¢[§Esìt>ê«Ü:’=5VïþðgѤÐ{ÏrÔJ÷ö@1® œU3éhLÄf}e ®™u$˜3ƵA!•=Áë—~*ÛÔæá¥FEëHP/ÞÙ‘ÑíRýOVýW¯!Õ²ŽäWG²uÁŸ[dôÁˆo:½mBÐR"’sO¨ÝwF¯übë?.ž¨¿ýaæ§¿û4µØî;£ÞÅse4 A À[)ÉÆÕ{ßÛ}''Pê]<·qu£Œ`Ψ#*ëª ¡F«fGDn ¸ŠÇ6÷RÍߛ̓ã]­Œ?œY¨˜º%Ž´‡V‰êHÝŠrqs6AYwÞÔçœ>’"df¡˜"ˆñøÌãã6?n9s ´Ô£ñêÆ“™~r\ÝØ ý¬–ÜHjZßrx#õ]×”û·á›žeÍÄ¢ßVŽï ´ ÄÙ 7ÉÙY¾ÑZçÛgº¯no†»ä–EéÝ’ªYxôÀ‚ù³'±rßÑh"ðËŽH <½: ú”Lnyžl$Ç"þrgbÎì¯ÿƒTT dHÕ‘½jSËŽÊþê6·çØHÆïÖÆïå© Yæ€cvD$#’)9M(ú¨ ¹í¨R»®,ñ">/¦.4¯d§:’WmÝT „Ô‘d±ŸôÂÏ’”š&qŽmæ~½Æ¸®>3y^Œ7bœ‰2p`#  „gGÎ<a5Îëêg…¬GO¥£–]Ø7^tIcŠ~Ôê-wodKÄI‹äËkœi|éx=«Ãø>5¾w¼ßP¨;"È©#I&rõ¼njÚ˜õµ¯bYÝoIËòÉ'bßKüu<µe—]7ƒñye½ƃD¡\^ÏB € ¸#ì﬙h<"ˆYì/nµFDeÔ‘8â+4CYãÚ U¼Çµ ·uD·GD$Õ‘D#»Ûº¾UR{PA£FôxÛÐém€rÕb¨#x#"€Ö‘šˆÊÈŽ¸ßð @½„Ü#" ©qmbüˆZ…ˆb¼3%Æ[ÂP_Æ7²ýö¬Y·ëuYµCD¥Ö‘œy4@Ÿ;@}ßÈgÃԣÉ[¾Ú×E‘@À|~eÃu x##  dˆ×‘hƒBWm =ŠÚ!"îG (û z!¢vˆH €û‘ÄO‚ADÙ‘¨0-+ûj@-ßÈÉ™zž#ëѸÊÕ².ꈈ2ëHôìkò#†Ü,ÐÆ7²qŽýÑä§ MBD1Ô‘¼‘@u$€@K‹nš ÊŽx„#!ãV£Žèñ¢Óለ2¢:’Ã/ ­5¼´UR{PAFôxÛ<mߨ^t+0?{w÷¼×%"ïL €f£ø´%I PGDD‚¿²„o:bß`ü¨ø~dáfh0""ŒÊŽkspè”.v\ P"ˆ É” gô,E435ß23ùgêÿäŸúõxŽDß…¾.B_O½¿,mìDãZÆ~/´€}³ž/A+ï¼\h,½h"ù'wsn*[! þ•_Épp&JQ¤>ñã¼ErËLã£Y;:8<=8<ÕËÚˆq/ðæØ§Æ™z¸`?R+Úw¡/»Y¸ˆïõž ’7€×o¯?Ý9>ÞŽe]Ô9ª#)ôù®/œœcÜTÈùƒs¬J-ÿ™µz¡ý£9$ü: 9È𻉞²ñ´à¾Ð %]FáêLy¨rEŒˆbÄïGbÿ:KÎ)©K*‚[æH+=eò(j‡«6PöýH£›{â›nu„ôÅ;šC¨<$K@޳#Ék1Æ™ÉBËÌÜ/²Æ%S¹. ͇½×r;Úä.ØÔ¬ÖÂET”j™©'<²MV¹f­‹:""ŒÀ:÷:G—™–BE—¢HšYxpìûÌÜÍê;÷\ö ƸÁˆx?ŠZ㪠ÄÞ¹ÐÅ7¡„h$r$x?’ùàV~}AÖupADÞu$Fe´•E·PÈðôh"Èð«#^–ÔÀBì?Ø÷[‘:ˆ¡Žàˆʾ  ñˆH €ì  dDu$‹n ®ˆH †L À PGDDdGˆH ƒ:@"ˆ!SðFDÔ‘‘@Ù@ "È Ž‚ˆbÈ”¼‘@u$€@D$@vˆˆ2¨#„ "2%oD$@  "" êH!ˆH †L À PGDDdGˆH ƒ:@"ˆ!SðFDÔ‘‘@Ù@ "È Ž‚ˆbÈ”¼‘@u$€@D$@vˆˆ2¨#„ "2%oK‹nš`ðôàðËCåUGBPD$eGІ#Ñ…ž½»{%µ P#D$…Q¦Ä]ÑåME ÄPGðFD܈ˆÈŽ‘@÷#„ ²bü~qØÕ%ý¦ùui¹;ÞÝ( „ÜÈUýŸˆ~yhü­Yõ[î.ë9RˆH €ìÊVñáîݬà£â-wgyŽ€êH ƒ:@"ˆá7oD$ÀýHˆH €ì  dPGAD1dJÞøõ/p?TÐp0Œ&²M=dœ9Oq›#ö–ä¶v8.ð¹E‘#²#€ ƒÃƒ(’H(…„¬ ,9ȈêHs3(Ô]œ?†ÉTA5S#F©Æ'# ½©©Gã?Wª€ Ä)AÅ%Ãû̪‰iÌèÆ1Gry‘Ô P"à~$¨c’€Ì°X\µÆµæÀžÛÈÍ|AÅ‘@u$¨ŽdE<Ñ€ˆý)ä>Á¼h6®Ú@ u$¨”¨lÂòÓ_—™ ”Uo•»ZÖÊM¥Tí™" Žµ ~fÍ\¬8hÐ TaŠñÑTM«eu "¸jÔ‘ RŒ'ìÔtîÌ…°4@Èø -T 9È`\@"ˆ¡Žàˆ¨#""²#€@D$A  Ä)xã׿ß­•:”¡¾Án}[Ì p?”'º ¸wwoÑ )¬¾-‘lߨ.²…5©¦ 4ûsØãÚ <õ=®êÛr`þ I¡ˆ~ûÆè•›[rí¤ƒ‡ûÖ.åGÃKC÷ºÔ¬D4™€7óU›¢qýÁ¾TÚðRÎÀZ»wv÷îî9ö»ŽPG$ù[›á¥Ó™ž3Ê÷ D$¹XGט®Â´ˆBC–s?@׈Äñä´viSgz±Ó" %dJÞœ"’B§¥*d˜Vr\zŸqmò#÷pdáY¦ãi%*÷ ;$YÙZ…¬ÓjA¨#„ÈH œä*’!`Z–ã1@¦àÍ)GR((©B†€i%Ç¥÷©#r½jãrZZxV€éxZ !;˜u$¹'§*d˜Vr 寍#„¬lU;gz±ÓóG¦àM8"AËQGðci¯è7ÝÝ;óìÞö¨ýù}´}c»Œ½“5¸HG$Q5ÀÞݽ…´M±p—¾jCq"¤p,Üùã¬>5øêÝÐF÷>þìþÞ§²,Þ’RjçÍE7´Ú™õ¯/º  íþ Q@#[ ¤ôIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extthreadbind.png0000644000175000017500000007567412032647161025545 0ustar ebourgebourg‰PNG  IHDR0¤aW0sBITÛáOà IDATxœì½_ˆ$Ç•ïÿÙ ³Ð úAŒAµHà¨ÏCWjs¦…4Æ Wf®f,Øù®Ç×z¸ÒìÖ_ðz´àÙìÅòÃEÒƒÙü–m=XÌ,Ì¥Û £6Xl$èTÁd@'ÌïáÄ9ù§²²þWwƒ”•ñ'"Î|þÙ>EQEQ”ñÆ»h=Û^tLEQEQV‘oßч¿=XhdEQEQV—ÿkÑPEQEYu¢ð­WîŒR Y À@“€€‘µàÎ#r×Z0îGD,Rúˆ,¤ÁùÈÈc ,"X¤rˆ$, åÈ,ò. Rÿ,›Âqdw¡˜î‹$²€‰S6A„˜€8¥0ùO‰k¤HDˆ¤bDI†ògŒµÇtwk±pœXk1'f @l5˜ˆÞ4`#roÁo ˜Ln—Q2ZÊ; 2°°.«\þJFû,³°H"¬…‘@Ñ,"ƒÔøTåèÁå—‡Ô¸|ç‚a#ƒ”¢aØÈ©±€¡\ƒá²Æç ²®à¥ˆ#pr#ñù‹@„$€ØåšËbP~¤&Ž€ ”!²I *î5¤–˳K*ÆþIp¥B¢k9ž@[$b—³TB" õ?Q™±il_~\~ù?ÁquAE±¥E`)‘˜$ŸÀ9ká¿\ú‚ RXX!ø@8‚¤vOwß—‘ìÈ?1‚…5©ŒËGN=ëë ÜaÁ•¨qjú)¢/Ñ&‘Ë”@jãX3ɱOº>^3p ÉZ6Éá³8(]BËåÛ&62H©¾2@jûp(áÜÿsfÅ@‚T’%6H‚´ˆÄpñ@“Æ@b#±I(±Ò˜«‚î.©+®—‡æ_=S€ÝƤüš°&åJ85&r b¤>OaaL$©g\æº>Sº÷’ J.ï"þ @JŸ­l&veƒ®4H­\à—Ü'ì+z¢‹dik¦†4=¦Ðšp–ÝÁ¤Æˆ¬Ia}Ä艖Îdï´€¡è™0$ßó9æÓÉ7:©;c¢HlJ¥ ðuŽÄ2(BðM‰MùÅ¢ì¹k°8FÌ_›HÖ¬Vdâ”?F˜$B_HRHõ+ÉWm‘åFœ’5"e‰±L´Í¡Ÿùü³ýÖ³m²$A–üþg#?}¾-„ä‹F©´©ÖÈÊh3R,øTRk“©õ¼8SÙëR„iøè ½‰ Ÿ,®Íý,í·( †A„Ä·µ6N ¤vH-XÉÅÁ“ˆ« B*VÄ1e†Ø5œT‚2ƒAb×äWàf-[¥Ò]}9 Ýå’.¯aCì’…36ò îò1wÁ©aY–ŸBá««{°öJýyÊwÎkºÈ ‚%M9ÀΗ„uVÿ‰fª-95$=ÿµDÖ)0XD¤Ûlì„ô™aÉ@5ƯŸfRÞ…ЦÁ™°òeeR.cH]N±ÛìØU¦ô*’î¡ [/…“lì?L¹%µå{Uccña}â;gÜFa¯/7z™ê|Ï @dc©Iä¼Ï&9¦ÂÆÇ†ŽcÇ6‰×|ÐIFœñs}/Ž !å`¦”™“³òMe]ÐA d¿—¼6Š‘&>jªÜH¦»’ ßÉîÄDpÙ%@Û Ó D±Dš°&ã·—Ÿ‚þƒ+«©á›¡ºÂ¤T瓲"Ó!+ÓmdO:ÁgYømqÀõ—àj]ªEAUnâ¾PŽ}„$51i_$½S… Üi` Q—¿$" : ™Ü’OØ`à×Q<#JÂ¥†ï˜¹JÕUn®j ºpˆò2‘n : œa5èew‚±@RŒ[“°eI ¤®M‘²ç¥<•5×±ÁšÁqð¾®-3X“̵8F²&ß8"ªoƒ^nP6D´!G¦MÉô‘òW.$È>üèîÞ'{%6“»Þ»tóÞÏ:¯½ÔüóuûÊÃ^È·‚TˆéOªTL k#c@òßÙ6²5Õø^@ôShKK3â@ú^¥î0ù?‡f#gº3NÊ1M­Èt¯ëWúÚ#³õŽ®I"Ä)âI„$21[\¸„Z€úî®k’¤qLU*!±ïõºÇBJvŒ5à81€]‹¶“™5 =øfîÇ$–ÚãÔ«ÒìWÈpß‚3ź–†S˜sARÁr?É7E™4 üeAþäë+çÅ,‡¢£:Qòù"2ÑÈ“¥ŸZ&Ë\EŸ"‘*ž’>BìòË&°HMYª\Φ&‰lÌ­f K-A!I]K©÷ÃÆÌ¿‘',«”_¾ïåò1ÒØ[CÙ ù¦²F,NÁ§N©SÒe>TZLæËµRHlø ÈXXÞ 3Â`ËòKÔ•Í~ËR]Hšp3Ÿ—b6’>Œ/> ¨Ã#v”„o—¶9âqd’5$Ç6†‰‘À$kˆm|l’5Äk&’cÄÜq–±tØRXkå{‰¨3&ò‘“wÉärêl„b/”¬çüͪ±|_"Éi8D0pE"Û ‘’ò†McD|ŒØD ÓgzÐ…+¶åáß©Ó^–¥•|›.q¨¨P£`‚’…ÔZ8}c‚lgy$e!h}#¯À¼éše׺–¤XÌê€êá8E Kßu†4ü*ƒh¸œ’N¸ Õ¤Œ¡XnÝëÉgDçƒw÷oÇg"ƒ” ’árnMʦtW–Œ‰,=ÚÂ}’šÒVZÎ&›©ð j,“³±‰Ia#îù@l" M\Ã2ÝBÊ¡˜ZÁÊžÕ€cËM˜Áš‘X³òú L¼fÙj‘º>­kI8uƒQtÌâÛ$‘{{jy©T wþðê7FeßÜùæ¿îýëH×_þÛã)tWH‰ »÷ë t~øfóàÞªÆN妑ŒQ†uÍHxß…rµ’FÚ°”+z¹ÀU«ƒ¸ K1墌Œ!' èWjT¬<‘}0I{_þݰHdc˜$5HØNÜX¤ØÒ9m¨yHØ6“ðã¼8ˆ©¡@ƒ•°lÃqVc8N°ƒØî%ÔÖIN–×ô&&¢Æ8£€ó*©>"niHݦ–’×D\ºÎ.sÅêúë)å2Õ«H@p€‹A®¢·®7cmf0ËKš–K…‰,å5—±žŠ4äz2´cKÎÃÐgïÓŸ“"vm9Én$œ‹h8ÌÆ4ê*•X¼¦&ùîŒdR¤o-÷‚üm#Æ*§l`ââ2, §|q¾›K mvÔ2¡–ØF ÒXÚQzã@ùŽ/GÉ[;ŒûÄÄßÀ²np±0®±ñibƒ4qפÖJ¿ß…c¬ø0¸D°†Œ²’O©1‘x2nØË7BbÉ0îì]øÛ´ eSÆq2ÁºqÌc‹5þЉ5oFe©¼fd¹z±òÊ6¸ÀÀXúˆRþvR뿨›ÊÓÈÈ]m e°A©°il"˜(±©kž“ݾ§d¥ä†^Niú)JÒy~­™*;uÔ4¸f"k`ý³R*HÖK ÷µfìU®ípeÆ—Ù$æŽE^»X™Vj]¸ü2R0Îvƒ:²o#gx`ü.¬u¶^ÍúÛ—ÃÚÝ ¬™6†M_V¢cqtÌHZqØðæÕ4ÿIcD‰IQ`aôå*0¢‡ï/Â.š)\Ë%®c±€ÆH½© NÆÅ¬GÇd5&' `ãc+î<¦,¦³zpKêÍ’ˆ†³]&ÊyWfÒ’6E¨9sñÃîŽwý$w %‚쟬۷Þ5ëë}¼»nÉhø¤¯¸þ“ËÔ §ÎëFX8±e¹ ¸ÝŠ R$‡ïØxîºë©DÎv•±¤®¤ÂU÷Ö¤&¨¨a ª¡ ÎR  26µd ëCij²$¸+ޤá0X6½"‰ÄÉIêºwK»ó J€˜z–¼CÖ;;°9†…+ÓÖ‰íÈ—ˆãé…ÆþLJ‘ÍtÔ¤kèrĉ³Ô²bvB® –e~ ëÓ@2Èõ/]#ÊY`‚N¶ï5:7Dº=S*¨RóC¥ì5ȵž±)@^e.®ÙÜΛ «¾%jÜ»êÀ =[×Y§,ãÞ¶o$ÇÓ\‡™‰¶42ΗĈb j{-"¡» |«é•Š\–Á ž’ºž®IaØ(–oĈÔ׳r²Û59ôßvºøg例¡Á5p óÊ +’”1¹H˜”|FHJ¾As— ÛÆ’0S\f9Yæsy ’cñšM`p À&k&Ÿ¿þµ¬×düú€ô­”ál«F©dL ›Zj›ƒÁ)ßBç>ÖòÆY8ëlZ‰¥f˜šÏ(1i‚4¶Œg‘¸”ÁFâ9$å-1~È2f3ml¢Äp“"M®sŒ±Î^S,:mN‚SR¿ËKO׿tp}r#Zç @9ëTµ‰ý€ ¥5vÎFòµ’›«Ù8n_$+á´‹d¨TYaË>Žô-ÈWÉZÍuìåÀ• w{èÃ%'e*äcq † |›Ò55üòwíÊIÂ"ITkpY#M€Äx_…H ÙÀ"÷‰ALN«‰a÷'ñÉÕŒûr¾Îq_Al¬Y²ŽÙ/S¾5¬†2YùvŸ»¾®UÉ•05 G®—+Cä§ÙŒK] ¾²*Ñ8#ðÌs[ƒ~šÅ®¥³,Y_iû·v¾ ƒ›ÿóF€(I’ßÿ¬÷ûŸõ~ÿ3ÃrǺj‚cXõàö2×|r‰ä Å’ä-#fanr¥aŽÔ}önï³w{ï¼k#Ð1\©r%ûˆ~…æ§ŠŒô¼{ôàD†,S6fóFÌú#’ÔÆNu™„.7öÜ<Þã!ðèwŽe)’HjþÄÛ6;/±µÇ`—²ØÇæ8a2×» Œ¬cН[©¿›‘áŠÆ×hbbä†ÐuõØ@-N¤¯±†Í‰Ë ŸÎt0;GFjÀ\©p5™¼’ð.ðpNr=‡‘c"Ÿ(æBêÝBœÍ̸^uŠ$âvê즡{iÇÁ0_FµxKrQcá»DÎ>a"°›­k 9-h¸ŠGÒŒ£ÿ5åš×}D±k¶ÉØùJÜF°Qœq9 /ÐÃo9ïÌŽ:ñkzGÏÔ]Ƀh†‹\XZ”+Ng–ð¹f¢Âô pÚe)æÂÆØ&Ej󲌬_ÇÜv›À@j,hKüC#É´ŒBòNÙ¾ü°íÐ µÔúÚ©R+ýFת…M‹ }¦þYÒºÁ&øêѦl#OÅ(¨¤ÕŒ25W`l IÄV„9É)—5Öqøiî°ùÛ• W{§â}˜÷^u¤ùó‰x|Rw—*g6ŠÄäú È'æ=AS׋#nvo#Ÿ¶ÉtF¨º¡ìóˆË§‘¬Éö½|lƒô ¾Ž(x4øí"’VÖy3{ƒ4œrõV+vI}e˜KyÎØy—‰$©[hÌ1Md8Ò•çæ¾QlX¬K>úoySñ’ÒxZÂ8†kH`’cƒcKŸÖÜ „˜±‘:«69~¯“Ú¡9C×Õ>£Á»Ô³“©±Ixæ¹­œ˜+ž)2pÙ‹õ86ÆØyqç›;ß¼°}áÖßßzi÷¥ Û.l_È]ì;Äüq_l>ï«]þtý7ú£@èqi¹eeY–ñ¤£Æs×7ÚoHĈ£ƒweâÏÑÁ»î×숉;ä,ôŽ„™Ï˜¤•kkcúªa¥§~$Á°ù–Â5ðT€w2Šcº<¨Fø­b{Ldä1–P)·k1Ža~uÒcÎ5Ÿ\·¦Ô²p.ÕLkÜÏó~! Æ&’Æ&^®sìj[2ÔS…"¸4ßKΤ§oK\Md‚m0—ÓKjÌÈs%rÇbg•1ÉPËÕ±«’œ%œóÑÌX’Ô&Žl’Z2mÆ)’Iäzlt¯´ën¬“zêüÊAkኊÉÖÅ¡ÄY2R1\%®ç ¾‘¯[-·ÄÜZûÑ%×-vî‰ÞÏŒÓ<†TšAËtœ8>^™Ñg¢sãÔˆ¤u1€ó m9&HW[VŒáNQ¶Ì;÷)Èë§,“z€qS×#’Ýôé‰DCïâI7ºa¯@ %ÜHäY‘›ç‘ï.JúpsÞ«‘3vJêedYSκC^tòjQVù;“Q˜ž®Æó¯÷2_бð66ï4ÆoŽXaÈÒÔýä\7`&ˆb7Q—ˉ b“²Ub²Â‚Í+à§ø/÷˜¯%M¶›øØbÍz—éÛ”ìƒÈ$©EjYj[™ç:Ònö¥ bÒ«q-”×¾ñùgûÅuîB``£ƒ¡7 `pçÿ½Ó|²ùÁ‡¬¯¯¸ö—×Þÿåû›››™+Sj­M¯ó3ñÓolãé7,ÐËÎÙÜh]7©µ°áùÖTÝÓ¥\I½ÏÜ•Ï]7€…•3tõ˜½ï0{ņ—£ÏÞm´¯‹“_Ã3öuI’ð.€ÆùëŽøkþôü›I„£ûïhl¿ytÿ:“DˆaÈ¿˜&õ¸y|dqI!R N½ë1ÿÇQâ?ùýŒXÄ8N¼÷Ï9™Á¬ù1/g)qͳ'øö˜¢-WAÈO‚]"l0s8gG±@8}+,tÜy:mHšû`œ³‘øìKßš ÖÂzÞ™‰–&c‰‘Ö;øûå<Œô¥2Žüµ„,+È:Ãìßàzlÿ$7ÂÆöX¦[ºø42•z/]ï{—rïÓE„†œÈˆ˜HrqÃâG"Œ÷øñ­µ‰‚l`à&Ù¹¶Ö‹Ž<á‡`Òà˜Gf:ŽáFZLî»3;•^l`'^~ö(YØ‚X}‚©d– 6΂[0«° “§tä닸ÿ šGy šPI.ÉšAC–ˆ×Â"Qt7ÎàáÞ€ýÞX™™ÀÚçû¥2s™Êj$#¹^ˆK@Éwèg¨ðê*”×lq%kzV4š`Ë!Àµ¸Î„ y¾S¥1LàKç\NaἬl`ïáR|¿YŠ“ù‘Sp¶®$spNHn¬ÊdQ޹ɶ Y{âòŸ)BO2‰¡±Ò› fª!¢ñYï@æïä•z2åÖUMôF60èrR/Ö!Kù¸ï $mIæRíf,é,û¨{ã'è˜p)¥ š¾M†Ïœ;?@®É0HLš™eIeƒFÌeî‘{S×fe$XMÆ›k6q³,S šÅme “D6S㈸¾åª;KQÄÅ&£ÉØw|þÙ~h«#ã†, Û|² àîÇÎíÖßß2Æì¼˜µE°\•„Xˆ|FÜzcãéëz‡ïÒªT­7è€ÞáÏ¡Gc­76Z×7Z×%G7Z×ÝeŸ½kYŸmb/Î"®j þ—02L™[¾”h9³%¥÷—à¿ÖTZRÓ&q#›iöÙ•Ä̘ÇOnÈr(åòÊîK”‰Ýnw}}ý¨{´¾¾~ãÿ¹±ùë;ñ·ßù×ûßß^xÿ—ñ/ÞÿpI CÉám: QK:¶\Žé˜Öžõæ± á’yÄéu£ulEpËÞ¤2åÇ¿ô° eˆD©qþM_³‹U3Þ_Ãß­ˆôÌ|ÈzF%ÉHËmc˜ÄMr!í¬|!E²5à8¬%´Ô˜5ø•`yꥬÎĨ®ìª`Ùg±ð Ö0–·s 'æG¥…ç{rÅžádCm”|}è<ÆÄXεhÐÛW¾¤æqÏõ+õó:džL%,>X“¹Ì¢]ú:6eÅæMÌõ€‡r9ñ™6%Ê~2‹ ô£±Ë1}È®=ßþà7o~øùõØþí3íknü—ÛG¯5þâíwŠaÄO¿A%š$—ÿ°Ãí•™_£?§læŽ`§Ÿßìšk¶­û—Gð]Á<“ Ÿuø^§Æ|"ŒO%©už¡)/qäL¬aYq{A¸ûØA•ž k?˜é>‰ãk1ã8±ðlj]‹-b¬Iß%˜‹—ºÅ/,ë0{ƒe&¸á×ϼ¬8ò+ÈûÞ¼wU†˜Ç¥Ârƒ‰<$jPò•ÊšUa”|Ìlášg4'×DÆ÷¼Sc!—D<÷Þ-*+k S÷´PAùIòÙtÏ: ÓRïä‰Âë“åýÃJfYÂdß+7“ßÀ7c¾òks¤Àdõ8ËR̺*ÒõemêÄ­?äžÜ&Ô»ÊTöÔòóÙËÐÏÈËÌ3ì·—õ4w¦ÐLÃæürÓkHÌyû¥³DM IDAT:Ö“>7ë¼ð åq"±ñÊ6|hu’ÔÆ‡6X¥¥°‰¯Ê¹Cu š/CÏɱIÁ1üÔzwÞµ÷œ<–÷ÿ‘Ègñ‘T4ΰ|;”é<%ÝÃ+0k¼ñ’ñ¾Éá²é‹Jâ+$Åð7›4±QBk×y³Š¤vÄöT¸µûù)pÊLÜÈ_Œ]H°Sï°ñ@¶,µÀïi–ýZKV´!ΖûD¾)®ƒoÖÄ©EdyåH€ûKìgÆk\e:f–S8·ì¢Òqà›å\Ç" °<¬+·ÜT…õ-¯=YÙXŠ«‘¡^i¿Xâs5ðf ºpîOnV‚î·¸œRÌåµOB/v@›ß±ƒÃôËG»Qo÷…"øBé®`0'pÊä…û×hyX©i½ÌíyCÇì¶xW„Ü\ÌzýÅ®Ë)V4VÍb‹œ¿ø“U?«<Êë_ÛøÎŸ\€1è[ûZÓ~ôÒ6>߃Ýûeó>ï"Þ¹¼÷}CÖÚa çÅ~¶ñô6ÂFëÞáÏB~¤ØxîÞg~“½õY{,lã¹ëGÙñJwedlŠÞg‡þs×¥Çæ:Ü4bÂãh´ß<:x'ç׿ѾÞãALr;zðNè×Og@à&̦¿]ÖXN¼ƒD‰»ŒÊ›Ä¬ÛÅ£˜µ¼”äJ%6ÔËá>ŠkÅ¥˜'˺ƒ™œ¢ªÊÊÐ^„’… ]ø,ËX…¾#€ÿB²='2¤YY2Þ_šðè‘» ‹jºÚœŽAîȯˆm— <úCIêæ[¤‚µ’ƒ)ÏŸ ‡?hþÔ”¬C€ÜŠÓlG_úÁÙÄ/v 2gR ŠMä+SYmÛTÆÈóš¸3}_؜ԌÀk‰¡‹^‡LzÞ¼`iæJ7ñºAn’-‚ñšì·ä¸›dçL&FÌ äd㊄øÂ³®b›œñk(ðC9Íà4·t—ÝVWœ¿Ùu ›&‘2£b©§~ŒÄTÚäØð²IˆÅI9|koI*:ò›ZÀZC:Ì%míJö3w±oYäÞ%˜+'ë3ýÌx% h—Ñ"j%ogœÇ¡wó2"Œ­é™ ”l›ÔBç ·ƒ,½æ ÀÖ/°< ºåîqÜÍ“?ÈG^~ Õ˜,èˆÈÊsáï?ßÅá¾³¾þÌVÿÒMÜÙÄÏšøÎÿz°Ž…Ál4ß°wãé7°iÆ%•êIÄO_ÏÐÔ/?w/Lܺ.ëo´®K­·ñÜb‘o˜¤zã¹ëôqi647bŒM-Üð¥+Üó×-xÑB–öuøþ–iœ“¿vW¡7Î_'YPØÙQ`’”ƒ—KàSwT¿ž!so•®w¶5Ù( ´,ص`Âcžq‰ÀA;•Y–a?†Æ Hë@¦z…Ãj&²¼e››Ø6KUÀÏ•“ysa‰VÒ$ÍLV“9eˆxý4ël”6ž{ÒK£³Üm ûgáõ<ˆæ÷?¡¤ï6MØÀÙ=®jp³~üðG’Ú8rKÅR°~($51{òúj¾1¢¢îª`Ü!ðé‰M ›&¼ vâ·­d‘Mݸ1Z¼ÁšvÞ¯_ÈÜÚ¤‡öûæ„-Ìsս߶!7à‘½éˆ|‰ÄêÍ;‘-:à ¿F¨ß7Ë$oØ NÍþѾ÷ÎeØ€¶®b;6 n(©I"$k6–µÇh«–c›¬¬Á9ò¯ö²¤?ó«ÙÀ ñ³o>8üS°„2xpÖ@†àÙâ(e)Ûuá²”¥Ür—AþÍZÓ÷n"X.nÕ~Z8:M¬”%¸"ÞÛ”#à–Šåµ…éqd §pÙp!K|˳¨–·sïn`‚ÔãÑü ãWè7zc6olyNeÐe Jf oÛvµ.ØŽëͨn‹iëË•XúÝ"}}nD6¨s¼ ÓŸ%†+¤eŽò*rÛÐvÏný}§Éø OÙ™ŒÇ=aÖŽÒe€T:r¾H°W~*² 6úî<ã2^‰„÷E•*7æ1âSÖAš.´ñšMŽùÀ‰*—òÞ›54œË·bf»˜TŠ‚æ•VÊp«øò2’=lƳ Ê™nþõÎíŸXó÷{ûع…ÖV¿ep·…žïö?yüõðò`ç`¾C(•ÏÞ ›± €møüµßBv8À¯Žíêq÷‘X^ ;¸ Ä?Æ}TÐÛæÂ76´¥IL³èÃDò½4×î’¾ftÎ[á`æÔ‹3gý‚ÛS ñ&ù^|w9³âUµÜ«†ëIÇÜpútãi7u©óçË­Bnà:eC×¢¤€s±’;l xMcd$¾ìüc¤ÌD…²”Ò7è– ŒÙníÛç1 ck@rLÔÒxÙÑ%wè}+.*Ø$Æ~?t… ÆM4¶–Üüåù¥B<LÛ4Ì„,GG>…ilƒJƒEƒsÁvm'÷[ 6xØ4â²Á¦‰ ž®—¼¸Ì® ÍI¶nXÖrðBY©ëÅq}ËŽ¡®‹N‚–30ƒcÉzËB Š\ Lø}5ø¤ÍNx8 ÎU\Ö€ål‹Ü. A]ÄÞ±~ù‰l¹õìÄwx ï-æFù€ßÈw&Ýl\Õe–e»-p×Ô›“3ë EœõA޳Ï>ȼ_uºæÒíè`XègZmøÁJË"^/׷㌌ZòFã1lrlró·ðÙg’c‹5G¼¸zòáýëüJqö9b"á!&IUqö÷1´[Ñ F½~’»„F½>H~wpø~ï¨{óÚ}ëx0(ÙI‰ì±~u˥ĦˆŸ~@`Ï0n ¸±Äú**zöV¡þw*æ¾g"¥~Å ÷¤i!@DâôÍîü´×ÃÀ[Œ¯!9–Ôt¿&Ü¢86Úe{2.¾ÆeŸ•9Â"aƒ©y²Á—{]W$üJ"¼sŒ¹g3”Œè4ÞÄ;…ƒµéA ØSV²ð›&¥‰orþ‚<äMn¦´¨ wáøYlãÒa£®ož—9¹¡ÁÕÉSpeb$ã"îߊFÉ,ÖåÎ'A:¸†‚Œ }fy1šÐWÄðv)†V/‹C×~™“XÜ-—rå=·‚oÊñð§ ÎK+ƒÌ³‚Þ,Øß~š‚q‰PÐKLÉøö'rËÞÓ”6cpØÀy¦ÄHckà‘S±ØáÜgäçïgtA¸{¨Ûã:<Î)€8ü8 4Û­ƒ°Â ” rm+‚l*HQ°­BÔÛ7w¾‰QõúIî 9óùgû­gÛ´#æÖ+wç_’\¬–‚>bPé»1‹(ãj E“š(ïðv›ˆLÎkh…;òéJ²üG`ŒEþ€kÿ,jxÂÅ?%0º/Fè¶ï'Õ;Ç÷=ðŸWo`“*>çÄ‘k6%*m1î?*¦<öF2вd4õrMFœï6|óI!gð@¼»•t}²­‹Ë_¿†¾dÏíYé­SP`/ZIÕ°yã±Qל³õË9£°óŸ7¦Ù¹]Ò®suŸy5y÷»—ùáLdµ÷ª³ë&8KXP÷FVl3,\­Ô¼ªˆ< ¾Åu'9ž Ýå¨Õä pb®[ýOTf¼Á̽å—ÿW” @Œ(ù&d÷@XÊ‹6\.Ó€e§8HNùQªÒUМķ¼C§Ôa›(f0òãä™Ñn†ÛýÌ}E´Jí#îÛl €Leá –¡¿A9E‡tVc\§Ágb -®8 INäÿÌiG}çWò¤´ ¡ægFN·€§3­eX%ñÙM-Î}˜92Ø]@g±vs%œz}&vkÐòÑÞÊÈ»ª»>Sº÷Ì)0Š}h*˰·w–»ž÷®–î|Cã_òZ\ÉÐ]$K[“05¤é1…ÖÄÛÿŠ÷yS»ù³Ð Ó— îtr ™Æ4È÷|ŽùtòŽsí§®;mÔ&®@Ƶ?(BðM‰M“`–eXdhÝWž¼ì861„®ý‘‰½Ï®ÛMAüÂq'I·BÕ&S@|91q¿Œ´Í!€?º»÷É^‰ \×úž|“®JàœÄEJ±àSq a­î,žÑd2¬Î{NË£ƒö&*|vT°ó‰ïSÀÞøé{KÎRâÛZËn hž]n2ܯiXz¸bYãâ2ã!È`ºŠÈw#˜Úé2¬R鮈.Ç@^å5lnÕÀ'²PaдäŽ7k°\§Ð;$ÀŸ |3“º|Ïì"¶çCÜqxÉoø‚°ÎŠà?Ѽ™!§Æ‚¤±ŠY§À`‰#*¤ß‘é±ÑËæÕ¿~šIyÂ`6k¶ºgeR.y\Ç2 ^ù‚Ç.]eJ¯’í"ö‚{b‚üì*#Y,߯‘\“‘JT56&~‚' 8;à6 3x}¹ÑËôPä{nœóø k8›ä˜ZKKÂ:Kر¥åû…̼ y®ïÅ…Cu™6>PfNÎÊ7•=vA)ý^òÚ(–uÂ\Òys;—‘øNv³; qç·A¦›¬;¿ßÚAÞ^~ ú®¬¦~ƒ·„©, åIƒtÈÊtñÀH¦RòY~›„[¨=ø¢cÓÙSY¶˜–I±A¡wcuùkáŒy†LnÉ'l0ðë(ž%áRÃwÌ\¥ GP]¸»  3'ˬL5èewž‰7“ŒÆ2Ç™•úe$›\Tüî2<­’pm™¡ñJ§˜áVê‡Ódp»$¹ür½Ü lˆhCŽL›’é#å¯\2BA–ùö?º¼ ()Š¢(5©ncŠ¿šaǹ[úÄ:á ºfèÉ:Øç‡ª¯“⽃¢1èA#==¤_ãüÐãâAý)uÉöJÒA—)Š¢(Š¢(Ó$t%¾u’¢(Š¢(Š2ST)Š¢(Š¢,dŠ¢(Š¢( F™¢(Š¢(Ê‚QA¦(Š¢(в`T)Š¢(Š¢,˜!k·oµ3ûœïìÓ™ð`ìgç/†Vú¬­öVý‡}Ät 7ôAò"“§äHäWýô9ÇMQEQV“¡›éÙöxêmssêaìGlµ·FÒs#‘SÕIº)Š¢(Šrº©%ÈBJM&Ó•ÅGätØä¢*'ž0±ñ/w Bñ¾¼H12HiôÂ'†WNNE˜S´Œ*Š¢(Š’c >dÒB%Å$¡UŒ6ÎzØq*/Rì ©HÉ\¬¦›æCŸ>(Š¢(Š¢L…Z2i}g¡„YeJ5ÙtQÊŒÔÞ„Á–ÞNòh¼'üUEQeŠŒìC6ˆ±ÅÓÚøÓgÔµ:öâ ·¼Ó”JŠ¢(ŠrRÙ‡lËo; ýº—)ÁœÖKŽÄQEQ”“Å”×!#Å3­ ¦Î|ž’3 —0!’γ›1:ȇlSEQ”g ‚,\è£Kº1wû “Ï„ƒ¹À§k-«N‡ÜüÄÒ©Ÿ’¦ùØaê,KEQE™g>ÿl¿õlûð·lºèèœFN‡‚9o¡(Š¢(˃‰àÃîî}²§[')Š¢(Š¢,˜Ñ¶NÂI³‘ Üœú[TŒ¢.[Š—&ËöŠ¢(Šrš"ÈNz3<·øŸ „:AQUEQ”A‡,EQEQŒ 2EQEQ”“²Ü ƒYŠ¢(Š¢(óà¶÷êβ­óºì§¢(Š¢(ʼÑ!KEQEQ”3µ½,EQEQaA?}ÿ¯¾ð›ƒðŒ 2EQEQ”™°óâNÍ+uÈRQEQeÁ¨ SEQEY0*ÈEQEQŒ 2EQEQ”£‚LQEQeÁ¨ SEQEY0*ÈEQEQŒ®C¦(Š¢(Š2}¾ÿW߯± 2EQEQ”é“[‹¿²TEQEY0*ÈEQEQLfÈòÖ{·E9\»z­ô¼~YŠ¢(JŽÛ?¿}ø[?¦©>dŠ2®]½Ö~¾=’»€¢(в²;ð%‚ìöÏoÏâÙ/ºšOmÎ"pEY W^¿Ò~¾=ô²Aö3EQå¤së½[õåSi«1' ™ª1å“SZj*SEYMjVþ¥ýóy8õ“S”ÓJÎEìà7ê4¦(Š¢ ¢´˜¹ ë|ѽñ7oÒñ•×®\yíŠê3åÔC.e‹Ž…¢(Šrb¨%ÈÎŒ:©±ÛÿèFUôÃwnÿãíó¦j2åÔ£v2EQ¥>Ã}ÈΜ9sù»·Ã??~\3ôæS›?úá;W^»žüÑß©v&Ëɾš+F, ‡~)òŠ2âC¦^üŠ¢(«ÌV{ ÀþÁ~‹‡2RcÛ緶ηì?8Ø>¿?ª&Ûnïì\ÜpðÙ=Ôpퟢx’TŠ)sƒlcªÆEQVRctPG“Õ²Ü:ßÞjŸÙjŸ!Y6$ÂÚÏ]è}eÇ ¡8fž ÿ;FhcÉ*J)êC¦(Š²Êˆ+ý³”ÑœúÛÏ!/ºçŒü¹qÎŒá@Fö-B´Wx†¬_# n†¡Ñ½¹3Š2 êC¦(вš”ʯ¡š¬Ö:dûö¡Æì}¼Gã•Dû¹ {ï]þÞ«£†St,£3¤¢†Þ^£ªK™)êC¦(вÊÔtË1D‘vÙ>¿¿ÿà`ÿ\y}«¾3Ö cXç‹î¨‹ÄZÇÕ¬ô§ðUfÊÔQ2EQeT†[Èrö¤‘ÔØÞÇ{¥?‘Ùl¼…ûIN…Ôc;ì«Sf„nm©(Š¢ŒD-2‘;£ª1ûeÓ~Ù¼ûó€»?ïÐ?:¹÷ñ^}g2R]D¨ÃÂ3¨-°ä^w©Ìõ!SEQê3“½,IiÙ/›ú:)ŽÃM\¬ $§– YÖ¿eʲ8@Uš2!êC¦(Š¢ŒÊ¬¶N¢ÁJa7®–Œ]Žd$S”“‚ÚÆEQ”Q™‰… l«¦sxTm$S”Êx>d·ÞÛpíjùÔhúµð !ç.HéÕÏÊ…_zÙ `넹(½‹üŠIWšæcgë ÛKÏ—Æ¡:Š¢L‰í+¯ß™äþº‚lêy ÔßY9ÍÌg®åTÚÚjå1jdòè©Sý.³–8ÓM–kW·n½·¿´I­(§†kW/×¼òÖ{÷‹'ge!Û}½y÷çõ³1€£G÷J¯¹ü×ß™ÑÓeÌÔ‡¬ŽÅKä f¸h>É]6£–»4ò§C( Mój†æÈâ (Êäì?ߨ4AÖ|j³óEw÷õ&y’u‹×üè‡ï Æ¾–Šrâ˜ç:d“·¾BýësÆ¡P”^0ê£ üå~ Ÿ2hô°þxb¥ðäBûFÍEQN³²‘Ò¢ù/cäuùåDs‚Ö!¯í' 8¡n¨Pc(˜ˆr?ý 0ØÒ •_s¯œz˜j6S”¹±u¾-v²AÇ¥ÌJM÷ýÏ?ët¿:*ýÕœ5­çš­ç‡ÏP”Ų¨õúC¹0¨.6ùõ}ÿ‹:,w~¨#ü Gmoóœ}kB“Þ ñÙA¸‘1žô/G¦EQ¦Âþƒƒûö·ÏoU—²\‚lïW÷»_õ*.°ìÁýÃû‡›ç6v^Þž[Ä¥>'n²1ž¨½ãÞ¡Ï­3Ís ã\Åõò"Ë#_–'&Š¢ŒÁöù-±‡åŽ+îZ.AàŸý :ØjíÝ?të™]þ/oÌ/NŠ2 ˰—eµ^ÚÞÏÚ©IÜùÇs}Ä$CcäHÅ|EQÎH¶1bæ‚l¤}0w^Þ~æ¹Ö;ó®M»‡û‰MrÄfãÒÅK[ç·6Ÿ\Ÿ~\eJ,ʇlP{¼pé“C”P1bó™à™;ʲñæ6–žŸ[š/CE!ÙÆìCvæÌ™Ëß½þ9T“‘Òj5K†#[_o¨Vc¹í,'Ùz|PøÅÐ䡺í’",p²QÝÆ~è$ŽJƒ†s~c9¿þ:>dõƒÍ VNÑĵKÕ2ÄAQ”eô!#5Fª¢²}~¿¾<2gãæ¹Mö‘;ÓxÂùò|ÒÙût@ëÙgv_ÉH7 |ž‡çv7WM¦LèCVíß=ŸV¶Âû~èÌÄQÇþäöÐl>±ô§šq®¶úÆ1Þ¥‚¡nûŠ¢œÆó!›Õ^–ÂÖùöVûÌVû ɲ©°÷é^ëÙgZÏ>søÛÏï~T²Üm‘3gΈ‹Â?Ã_+Δ›Û˜< |Ð#r!‡ÿ-}Šr²˜ç^–¡+ú õ0¹ù§ô¹Åg½j©Tª¼ú¹Õ áV¯JÀêh‡"o>i>ˆ:qXÈ‚jвÊ=¬x\ÁüœúÛÏcÿÁ×ÛGy2âÿëƒÐ0vøÛÏsF²""›*ä¸âLµT´–Õ4¡•^¯œPÆó!«n/'ñį£3Æ» ¦&«¾Î[Œ«1"VýÓH·Ï([ëkGEQæÉØ>d3·í?8Ø?x<†Â0gãÃßu×é|ÕÉý$ l÷•íÖ³Ï ªøôðLÎ|E ¬ÔXUýÅp†F¬~àʉcžv2EQeIdj'›¡ {üøñ¸B‘¸ówþáàÊë[#ÉŽÖ×›­¯7›çª–j«Ol ’?G gÂÈ(§€öóntþ¤¬C¦ŒÊdãÑýCŸͲ ¯Q”%D}ÈEQV™ñ|È–KuÿÐßûø‡C–ôOÌc{ß;ešL c§ µ)Š¢¬8c¬C6AV$ŽÔXóknŒR†,éüÅÿú@®T”åD}ÈEQV“SâC¶sñ€ÆÆ û(ÉYÈö>ÝÛût¯ñDC®T”¥EídŠ¢(+ÈØ>dó[©¿›O®“ÒÚûø ¯Rv.^¨Ø_\QË„{YÎŽŠ¢(ÕŒTŸ·—år 2¤´^ýËÝEGDQÆä$®Cvûç·EQ”%åà7£î†·Œë)Ê ¢>dŠ¢(§†‘†N‰Ù´8ø?‡{ÿr¿û‡n÷ÝAÇÝ?tMå4£>dŠ¢(+ÈéY‡l*´¿Ñ`ήWo>¹¹È(*§]‡LQe•9 ëMÈøðÎß¿ßýªÛýªÛù¢óÁÿþ0I‘;ŽÿdóÖ/û»¯-:²Ê©EmcŠ¢(+Î’®C67.÷ØÖ|ª `cÝäŽï¼8èöÒÝÄ…¡×W\|&Ëèo6£¾ÈÐÛ«¯œÃ8Æð!»õÞþ­÷öý9•ó±?„:.¤üh¡UeF¨Yû˽ ÿ´g¹×ûö›ïÿª×?ÜÜÿuïû¹\ðá_o}ø×C¦< ؆²ØêOº8ü©ô×9Pó麻ù´ÏN6V‡ŠÒ[ý! *o³¨d9á5‰ã×ÔMbEÆPí¹ÛsEeÂbSz{…þSE™:«îC–ç¿ûø¥v'w|ç{‡¥³,CO¯Ü™iÕãá¸^.p9šÐ)ÞUmÓ*^Szc.žÕ‘ àê°lëÉ SYJcPÏdꎃõ{Õ·O7VŠ¢(uXõuÈBe?»3è¸ÕÙí|ò. ³ä΄—åž;ÔG8÷S(qŠ/Î…?è®Üƒ^­ô|iT=:÷ÊÅG¯²#&Ü˲è6ª–ÊÝUßTv&KñäÔ3÷qvH±¢çPÔa$‡Þ~f˜ZQerÆ^‡ì” Y‚ÕXãk÷æÎît>ÁÁ¥æ`¸OöÃóÄœgY*«Æ¨>d9ÍTí°?è×úw•R*¶)°1z&Õ7އINjŸAQ”±ê>db3Gô>èóñ=üyœ5¦ ÆÉeêë)Š¢('ˆñ|ÈN‰ u–å’«1åD3ÉüJ¥í¨(Šr"É6FœAF‹ìd—~2ÐÕfèŠ2Æ^‡LQE9Ѭú:dÄP¥¥RL™'ËN¶l3CEQN(«îC¦(ËÉó!#{ÞíŸß^tDEQN+íC–Ã>²G_õ‘âOŸkÜÛû|³±aÓ¤ñÄÆúæúð›e2N–mŒÐÑUEQ”)2†Ù©Z‡Œèþ¡ßù¢o-lŠÏŽÖ76¬¡sxÔïöÏœ9Óù]wÑqTN9®C¦(Š¢œPÆ^‡ì´ ²îýFs#w²±iOn4[Æ€ÿ·N±TfŽze)Š¢¬ ƒÖèº^ÿR ²âŠáÕt¾è÷ÙÏŽØ^røÙç{ßÛûøÞFcƒþx÷üìÒ·¿5Ûx+«ØÆNÖ¨¥¢(Š2ÙÆNªÙ™3g.÷vøçÐ%ˆú{ÆÄì£dÿ·‡ý?ö­MâÜ^ÿ¿7¬=°ûò·:£ø¬Ù<—÷'›ÑŒá¶0õo©sñ™ìæâÊ’p}ÈEQ”)rz|ÈHmŸßºvõòµ«—·ÏoÝþù~µ¬ó…¬Ã^¯oYRc ,€~¯wý­7è× ³ÞùýÑLã/Z"tï¼ÕA}ÈEQV“ÓéC¶u¾½Õ>³Õ>3ô5ØGVŽã³Æ¦)!Ž R Å»ÿã»/ ÖÐ{ØP–â˜iqße9Y¼·t“¾Š›Ãsÿ-LETs÷*sF}ÈEQVÓéC&´Ÿ~µÉÖöŸÒqòÈ∀IÊBíØ_üÒŸ]¨óÜ¢}«Ôâ%'먟ÒÂ3¹šåLµ±­"buÞT™"êC¦(Š²ÊŒçC¶Ô‚lÿÁÁþÁãú’bÿþ¿ÓM­‰ˆÃÀ@ïSãößNs¢åLEÏHžg9û™ª±… ¶1EQ”g$Û±¤NýdæÙ>¿¿ÿà`ÿ\y}«Z^4žÜ8úCŽûÝÞÆúzÿ?Òd‰åÊö?zGûñY3ÛX*¿–‡)îeyë½üg|íêÏÐb¥·„!f1bc„Pç,=kPE™.§p/ËÜÀÜpµá]ÈÐ>ßúÅûæ~Ï®#BÏÚ~?Ù|²1µˆÌMœÛ¢ŽT.Óšk9¡")ê¹ð¼>H´U;S…4¡^TEY§s/KÑduä…9kz=ÛØLl-v^¼ÐùC§ßïÙæOLc³Ñnoõ{½oînÝþé??ó\³4œ̹y!+%Vñ¬BiLr¿VßX3XeÌg/ËR½’;)æôVNN ÏËŹ 6§íJ/.ýµø”A1/RÃZ)¨(Š2ÆÛËr©}ÈFbý ÓøÚÆQ¯ÿL»aÎÆ¯5/¼°³ûò·.ýÙ·v/¾Dj¬óÅÑ/Þûçgžm!CàYOäN/+Þ[±¡!<.ÌÄ”_KŸ’»qPTU–-Š9ø‰òIñd©ä5Xùih°¥z«‚\Tëļf ë<]Qevœ²ñh=»ÙÿcïƒúWû(1gãð§þQ¯óÕR»ùTcûE] J™-cûí>Ú­ak æq3꣫)Àúš, |B!•‹a1%EQÆc¤zøúÇö‹­ƒÿc:ŸuÖŸØ@„oînÝûÿ>?úêèèaßDæ™ç›Û/¶¦ûD5D)¥ŒíCVÿË/ºÕçLe£>zŒj]ʨBVQ¥”Q{w§Ó‡ cÉö7šÍs‡_uŽnÿäƒýÿs¸±nZ_o<Ón•ŽT*Êt™Ê$Wnó¤h²“¨ EQ±ê>d!ë›ëÛÿ©uéÏw.ÿÕ¥kÿýÒ«¹»óò¶ª1e>Ìy2š# U6¹!B¹qŠQªyRQåT2†ÙédвXf½—e¸\…üY}rìƈUxcéÉêÈäN¶¢(Êò0ö^–g>ÿl¿õlûð·nþô€Û?¿=˨žT:_tïÿªÓûcb6lóùÆ…í–áÕe~³Ø¨Í:›V)W^¿B_M΋_|ÈÈ`VgsÿÁþÉu~ U— &EQN5«å[ïí_»z™†&C_±ÒãûnQ«AêëÃîî}²·ì>dK‚}d»ÞÑ—‰µ@ßt;½NûSž œææC¶l”.0¦(вjŒçC¦‚l8ݯºGHö>ê~Ã¥{« SÊ™Öý'aŠ¢(q~%¡>dC¸ó㻿øÉþÿt˜ hLÊö{ Ž˜²ÌÌÚ‡LQEYNÆö!SA6„Ë?صc¤X JP³~v±ñR–9ϵTEQ–Aó+‡ÎµTA6„›?¾³þÜ"Äh³Ãúq³½^¶Õ>“»q«}FþƒÍ¬¸8ü©4¨é2‡GœzÄ6¶š£–Š¢(+Î ÛØ*®C6-n¼}sýl¼ûòK»¯5ääöÅÆî_4w_ÙzûþÁcúW”_Å“ƒ.*ýUY6Ô6¦(вâè:dÓäÆÛ777;wú{Ƙ֋ÀÎÅæÎÅVó©Í‘‚š…*ÚÌäÏð¿òSõ]ƒnTÆC}ÈEQVõ!›27Þ¾Õ<רyq§ÿ°g"ÓétZ­&"»ýrsþ3SÃ!ËýƒÇ`3“3rªâ.:CÓ• Q;™¢(Ê ¢>dÓäÆ[7›ç6¶_Øî?<2Æt¾ì4¾Öh>ÙüÑOw'<Ô=¥–ª¢"Á„¬TäUV-§rwQèOÕaÓB}ÈEQV™ñ|Èt²<7Þº‰~kû…V·Û___ïü¾Ól5[OMÓ0Vj·B#VëRz¦T*ã±Êë)Š¢(ÐuÈ&‡ÔØî+­»¿ì®¯¯}Ùm6Ís ÕXéPã´œô‹3ª/OæLeÆDÔ‡LQe5Q²)pãí›xØÚ}¥uïÓŽî¾ßi4×›_oÊž•Õ§¨…‘M2Ԙ͙Ð)Þ^¦Êl*¨™¢(Ê 2¶™Y:îüÝû›æÂÖ·7÷?íš(î÷z—^o5Î5Œ©¥Æ Ö¼¬B±å~ª²¬8Sÿ.¸œœ•ÝËRQEÁ¸{Yª…Œ±Í /4÷ÿ­‹ý^ïÒk­øl\S)JˆÚÆEQV]‡l|ºäÞ¯;ˆ°ñToçÏsÍÍÑ[ÔʵpÔ‡LQe5Q²‰IÑ?êÅëGÍf£ý|»¦ß˜¢ BídŠ¢(+ˆ®C67®î!²ëÍþ«ß½ÔþF[=ë”IÐuÈEQVÝËr|6[]À\þÞ«‹ŽˆrPÛ˜¢(ÊŠ3†™Ú‚ Žë|ѽÿ«Nï‰Ù°Íç¶[2¬Ù~~ÆñSNäCFs-çC(Õ27M¥é¢é¹Thv, ƒæWÊñ TÕÂ>²ÝNïèËÄZ oºÞÆF§ýÖ¢ã¥,/s[¯ŸjáÛ?¿-g®¼~…ÎÌS.9šJÓEÓs©ÐìX*­Ñ?t½~dÃé~Õ=úC²÷Qðžþ÷>VA¦”3ÏuÈn½w‹já°Ú¥3W^¿R¬Ž·Úùº`ÿ`ŸNî ·¨J1äÒ”^Y?Ì¡œÐT’3Õ.ýu©Ò…$5ÓGítÓd«½U?’ËŸƒ¾ÁÄH9²Æ[‡LÙîüønÿ½G6ŽÖˆÑl¿·è˜)ËÊü÷²<øÍAXÉVTUc7„Ó%lê¨nCdrÍR…å`IRi–*=‹úfn™² ~vÔÏ¢˜³ŠÙ´) ÊådŒ½,U áòvo¼~7F¨Æ˜õ³v±S–™ùøQÏ8§ÆÀÝÇkW¯ 2W "l8‹ ¯TóUœÏòQ<;LBR©ôדžJÕ[Îô,Æah$+Þ7fŽÉÓ„¾¦‘™֣ë0Ýâ=¨<ŠpÅ•5ïõérM˜/!“'éäŒíC¦³,‡póÇwÖŸ;B„mVcX"n¶7ÂËΜÉïÿx& lîdÅÅg²Lú>ØÃ#V„7×Rzɹj1W3†Š#wÙªsòÈL%Ì©° ©T‡Ò“ƒ~]Hz’%¦ú‚ú‘,Mêê'y\ýhÏóÑÓ¥"I‹.éÜ•¥w ¿þÓ%ðPiÍßÚZ®C6n¼}sýl¼ûòK»¯5ääöÅÆî_4w_Ùzûc¦(¿Š']þTú«²lœÐuÈÆ¨Ñ¤–,mH*¤[*º°ƒî]xµ;ÏT)Õá,6=çTȲ©Gr>irⲃú †ä.¨(Ò94•¨Ö §TüM%c ëM™oßÜÜlì\Üé?ìcZ/Z;›;[ͧFÛUiBªh3“?ÃÿÊOÕw ºQƒg«O± ¯âÔ½>L+•N9Æ´2}¨ÕMÄ «RÍ$»HW‡š2T×!›7Þ¾Õ<ר~a§ÿ°g"ÓétZ­æá¯;Û/7ç™P!=~ülc“_IðÉOá º«ôŒ26óñ!‘Ü`Õ’ÕÎ%ãQá%³´T»Ñh*Ê$é9u ~jRul&,ÞTu  Ä$Ez<ÛáÉB}Ȧɷn6Ïml¿°ÝxdŒé|Ùi|­Ñ|²ù£ŸîN¸(žœÙL,UE=Dƒ•`5–»¾xqõÓû(ô§ê°é2g;™ØœæP£Ô‡žú£§挘s*Î|ÒsB³ÇÐ{…?yšl¦Ö s™³£³¶TÍÈN–så;z¢>dSãÆ[7Ñom¿°ÝíöÍÙõÎï;ͧ›íg[SÜn¼TK‰—Ø »r.t,«ÿèâ]êš6uæéCFýãœò»õÞ­©~r^#ôg©+IÑý¶ÈHþ+5ìàÄ¥RxK}/Ÿ¥MÏ1^gh$K“ºxÍÔWߟii³£úéuò¨Ú-²æ]Õ~iuž^ÿÑóg<²3Ÿ¶ßz¶}øÛ7š_íwÕ 5¶ûJëÞ§ÝW6¾ì6ëͧšCÕXѲU ¬¸¬b ph8¥C–ÕgJŸ«C–cCCÖþÉ­CFue}¶ÿ`kØZ59HÿÑÂÜDq•HESiºÌ!=sóõpZƳfoaE¥fµ|ë½ýkW/‡ƒ’áÚc¹uÈî?pËù’úúð£»{Ÿì©™çÆÛ7ñ°µûíÖ½O;ñÝ÷;»Ñh>Ù4¦–m¬ÔÓ+üsrD0…6­Ühƒâ]a$U“MÎ<÷²¤§„ý¨¬…‡¢©4]枥ž‘J)Z¼ØÌ^Tt/ËI¹ówïoš [ßÞÜÿ´k¢¸ßë]z½Õ8ר©ÆJ¿ê_V=RYúg'/z—J±i1çõúW°þM¥é2ëô\xËz²Xñâ½<¥eì½,Õ‡Œ±Í /4÷ÿ­‹ý^ïÒk­øl\S)JÈ ]‡LQE™ ºÙDt;ɽ_waã©ÞΟ5ç››£-6¶<¨•k±œâuÈEQ”:Œ±™ 2&Eÿ¨¯5›öóí)ΩTVò![t,EQ”y3È6&ǃPA7®î!²ëÍþ«ß½ÔþF[=ë”ÉQ;™¢(Ê ¢ëMÄf« ˜Ëß{uÑQNêC¦(Š²ÊŒçC¦¶ ¨#Å:_tïÿªÓûcb6lóùÆ…íi.«œ&æ<¿RQEY6Fš_I¨…¬ö‘ívzG_&ý>ºsÿ£Þáï:‹Ž”²¼¨™¢(Êj¢>d3¤ûU÷ð7G{u¬õ'ï}¬‚L©B}ÈEQVõ!›w~|÷?ÙÿàŸ“à ­¼gû½GLYZÔ‡LQe•ÑuÈfÂåìÚGˆ±NR,%«Y?»Øx)Ë‹ÚÆEQV]‡lúÜüñõçŽ!F›ÕÖŸˆ›íð²p#K9#ƒÍ¬¸øL–IßgsxÄ* >dŠ¢(«‰úÍ„oß\?ï¾üÒîk 9¹}±±ûÍÝW¶‡Þþ˜)ʯâÉA‡?•þª,'j'SEYAÔ‡lúÜxûææfcçâNÿaÏÓzÑعØÜ¹Øj>5Ú®J³RE›™üþW~ª¾kÐʨ™¢(Ê*£>dÓäÆÛ·šç;/îôöLd:N«ÕDd·_nÎí¶pÈ’ö©¤ƒÐf&g*äTÅ]t†×­0'DmcŠ¢(+Î>dº0l 7ÞºÙl6¶_Øî?<2g×;Nãkæ“Íý´5yà¡î‘cv©¢ EXNiøC5YéŤÉF}eäCv𛃱C¸õ^þë½vuÈ¢‚ÅF½EQE™­óíý`ÛXñxj!Ës㭛跶_Øîvûæìzç÷æÓÍö³Ó\—¿ÔC_,UƒîÊ)­Ð±¬þ£‹w©kÚŒ˜ÐNvíê–È©ð¸&E=§(Š¢Ì±}ÈÔB–ÔØî+­»¿ìî¼²yôe·Ùl4Ï5&L§ÜPcéO“./t× s2 b›…Y¨´D¥åNÊŸj$SE™?ƒlcêCV—oßÄÃÖî+­{Ÿv p÷ýN£¹Þüz³¦m¬¸8EÎñkrÂÆ\àr&4} :S¼«tðTÙù‘ÒƒýY<šÖf EQ¥]‡l|îüÝû›æÂî·[ûŸvM÷ÿ£wéµfóɦ1µÔØã,0¤8È?¬z¤²ôÏÒÀ‹çÂtWî‚:¯¬T0ÿuÈr²LQEYºÙÄØæ…šûÿÖE„~¯wéµV|6®©Æ¥ÈLídƒ.ÕuLQe±¨Ù¤t;É=taãÉÞV³Ñ8ט¢ÿœQ×b™©Ê"s#˜j$SEY êC6)úG½xý¨Ùl´ŸoŸ\5¦,œù¬C&ö09P¦(в$¨ܸ٘º‡È®7û¯~÷Rûmµ*2#2±„… ¬úäÔã (Š¢T0¶™JØlu»‡›—¿÷ê¢#¢œÈN6á¨å ÑɱO*Š¢(3…ìa4:9è¸dPGŠu¾èÞÿU§÷ÇÄlØæó ÛÓ\*V9MÌÚ‡LQEYfÔ‡l†ØG¶Ûé}™ôûèvÌýz‡¿ë,:RÊ’¢{Y*Š¢¬8êC6º_us´÷QÇZòÞÇ*È”Ì2EQeÐuÈfÅßýÅOö?ø§À$8H@;ƒÚ~oÁS–µ“)Š¢¬ c¯C¦‚l—°k!Æ:I±¤pÍúÙÅÆKY^Ä6¦>dŠ¢(+È Û˜úMÄÍßYîb´Yaý‰¸ÙÞ/+ÝÒ;·µeÅõŸÉ2éû C7²œµ)Š¢¬8êC6en¼}sýl¼ûòK»¯5ääöÅÆî_4w_Ùz»lY”_Å“ƒ.Fv[LL'õ!SEYMÔ‡lúÜxûææfcçâNÿaÏÓzÑعØÜ¹Øj>µ9RP³RE›™üþW~ª¾kÐÊØ¨LQeQ²)sãí[Íswú{&2N§Õj"²Û/7ç¿v[8dIûTÒAh3“3rªâ.:CëV˜¢>dŠ¢(«ŒúMoÝlžÛØ~a»ÿðÈÓù²ÓøZ£ùdóG?Ý<ðP÷”ZªŠzˆ²RiWYµœÊÝEq ?U‡M µ)Š¢¬8êC6n¼uýÖö ÛÝnßœ]ïü¾Ó|ºÙ~všëò—j)±T º+'àBDzú.Þ¥®i³@}ÈEQVõ!›¤Æv_iÝýew}}ýèËn³ÙhžkL8LY:Ô8-%Tœ1P}Ax2g*›0&JˆÚÉEQVõ!›7Þ¾‰‡­ÝWZ÷>íàîûFs½ùõfMÛXqqŠŠQÈñÙ$C¹ÐðYgŠw…—©2›õ!SEYeÔ‡l"îüÝû›æÂî·[ûŸvM÷ÿ£wéµfóɦ1µÔXÎî…CŠ¥þa¥çÝ’jÌ^¼8þ »rÔyeejSEYqÆð!›ûŒÁ¥Å6/¼Ð¼÷Iú½Þ¥×ZñÙ¸¦S”äCvð›ƒy>4T«`œ[µ÷­¦LMV3¡Vó­çÉÖùöþƒ°m¬x<dŽn'¹‡"l<ÙÛj6çSôâŸ3jâZÈN6ŸúŽjØÛ?¿-g®¼~…ÎÌY·U{ßúhÊÔd5j5ßzþ=ŒF'—¢‚ŒIÑ?ê5Z¶Ùl¶ŸokÂ(c#¶±¹©1ªaÃ*•Î\yýÊ ªv«í*…ýƒC:ýšû©xRJC«`«½5ê-£¾o.’Õ+}ñ1"|"R¦ÏQŸX‡ê$=) •‹ê,jÖŒýáÈËVW9$ßÃP'„…‰©3È6VíC¦ºn\ÝCd×›ýW¿ûê¢ã¢œxæi ZñçŒ+Ù1jÀbÍ[ŸQßW¢:Ie]?Â'"erÑ›0qÆãD$²1\HBM‹ùW9=74ÝX$¦ËH¶1Bl¶ºÝÃÍËßS5¦L‡¹ùQ¯wЃ®]½VÑ÷¥ÎkØ´Ô4Œ ¥Ô–;)ŽÔ¶÷¾¹çÊ«mC#<†ÉdiSÙW¨ÏšgražÄ„Êż:¡r–¡ð¸ô‚i%ïÔß:|ÇðuÂóÅÈ µ£2¼ }Ù‰©3¶™Î²€Ëß{õGïíT_Óù¢ûþÿ¼ë‡{w~|wï_ì#;Ÿ¸)'”7×²Ø :Y3œ° )ž,mÞæIi<+~ÍE¸úöúO\xÊB­O:Sª †¦I©Š­ˆRiprŠP®Ÿ34A&LÞùSGÃŽãeÖI)îéºÙL±l·Ó;ú2é÷Ñí˜ûõ×Yt¤”%夯CVZ—M¥‚ËU Š°”É™1ªøp´®fàaøÓz¯“R„†¾{îä¨É;7ÆËÄê+KEÕØ1\Î"¡ëÍŠîWÝÃßí}Ô±QìÞÇ*È”rNœmläš–ÐZ°TMNu|†ÆvŒ×Yª”É5c9Î ËÙ|â¶T 5êÜÊׯÃÉ*ºÙô¹óã»ý#ôÙ8ZOp F°ýÞ¢c¦,1só!«vþ(u Ý,ä`ê­l1ÀâÍÁŽñ¾£Æ³þ¯u.¨sËÂS¦tl°©°„ 5;ê'ïBÞzIäÎŒŠÄÔQ²Yqù»öb„j €Y?»Øx)ËÎ’ÛÉB‡•¥•ïx5²ô\å`±5æ 8,ÐN¶À”©í±mÓ2Z,CBåëT^m–Ó&$ [Î+nÔÀ^$ªQ²YqóÇwÖŸ;B„mVcX"n¶7ÂËJ·ôÎmmYq}ÅÅg²Lú>ÃÐ,'gÎ>dÔ÷͉¿[ïݵ¯_tŒt²f8a]Y}²fÈÄxï[¬»K£Tó-†Þ^ʲ¥LøèúQªˆÕiR?œÅ¡úQªÿŽsNÞ±+Š0†Õ‘£º¨É¬‹ÄÔχìÌçŸí·žmþöÀÍŸæ—ñ]qn¼}só‰ÆÎÅþÃÞÝ<¢“ÛÍÖFó©ÍðÊââ¹íºÃ_éÏA”^\ñ é2ëðO%4€`QŸÜ:dT ÖÑgûö·†­US„$ -ºMW€d¹ñöÍÍÍÆÎÞé?ìcZ/ÚÃOÌÎÅæöÅæ¨®w9ù5Ä”*¹ðY¥"oÐ]r#T“Mƒ9ïeI »R§»^µ÷­¦LMV3¡–ä­Å|u"ÔØè^–SæÆÛ·šçÛ/ìôöLd:N«Õ<üugûåæü##Š®Ê‰­¢ä* gÐ]¥g”I˜ÿzý«Ð¢„¬ÚûÖGS¦& I¨…«……§À¬{/Kõ!+áÆ[7›ç6¶_Øî?<2Æt¾ì4¾Öh>ÙüÑOw'\X¤äÝl?Û2gÍ´Qª¥3ƒîÊ ¸Çõ]¼‹ŽÕ—Š,ùüJEQeÖŒ±™ ² ¤Æv_iÝýew}}ýèËn³ÙhžkL8´Ž'>Î2¹*Nج¾ deÙ¸³Óú~_4DSÌŸDc¢u¶éÎÏÊÝôŽm©è¯è<󲢟' YÚB Ôû•býöFëLsùµ+Ë7:aãâRgùÇîòÕÅÌáá1‘ñð+Þ˜ÖY¼|,&Sõ±ÔûY¶~{£Ýîô–zþáÐqœîå‘¢·äö–ºî¹|§*•HÅsfáKù÷ð-õ¨´0@n j޳,­Y¿½éÎuz—{þáÐi8žçu»®hŒ_sÇÿ „|Ë28§2øBΙ…-ŠpJ1*h &ç(Ìâ¨!€z¢†Ì¦õ÷7ܹÙÅK‹þaßqï™×y¥ã¾ê¾ûÉrñÉå¸'1S‡‚€I¼*¥U•©Ã©È¨` ÁKâ0»È“@ ±™5ëïo¿»x©;ø­VËû«çvÝî9›‰±Ä$Vf<$'±tú§M’Ø’ÂLÁ}ÈꃀÀi‘ëÿçìCfA-_íîþvлÚî?¸nÇëüsŠÜjL|«øäáËx‡´Q‘t1™Eö!«›í»Û“^d8x|÷4<ö!+dýö†8ì._í>üÒs„ؽçuÜ–{ÞÕ<³2¾9…â.¤™ð.gx«1QERhi-ñQr7Šú‹£† ¦F®t>5dEí|z¯í\\~£»ÿåÀi4ý¿Wn¸î«®ãhEcÇ/‹´ÈÝâÛÓ†ÈÑU|òxçÈüi£"t>2Ô¨!€b²ÂFîÅKîþWÑþp¸r£Û<ÓÔŒÆû@±Y!ïèážhˆÙsÃÞ›Î\§ÝηÙXuâš,rcPsûQÔâ[á÷‡îÈuÝù óüÁ ˆ †,W¨bs륱·Öêrи•:KÅ£3ã_ €ÚJ{¾2ü: 2!„X_ÛQËõ¯Ý\™ÿÑ,È›' ¢±[k Á/‹ÏÕÇ>d…´»ƒÁ“öê;×&½L+ûÉé192K‹ÕÂþa`§v¿P_NžSgTdýš ?y×âHcâö.iÙ,Í!‘Fù Õ@œÙ>ddÈ„bõkïnõÔ}¼¯÷~ýhó_÷vîìîýñ`ô|4žµáÔ)RC¶¹µ ¶äÌ™ˆÅ=iQŽþ¨Í­}¹Oð2q`Ø3qTÚår‰Ÿî%7Æ[ŽSÎ ÓoÌ|êtp–eYFÏGoØväûbà9 Ÿ<õ&½(T—Á>d‘ I?¦I ŒÌ®+ϦHÂ\ÂJ=œ¼9‹fOƒÉ ö!+Ñà›Á“Çý½ÞHJŠ=üT òdñÜ•üµAÚÉx”0z¤ÀìrfÒÎrÍEÞÙÖÂÔ5deÙ¹³ë÷Åðù¨Ùh‰!DSÌ 1ò‡“^ªª` Yâ]?³ “YP5ÎË™±x°„<I2VPCVŠÕŸ/ž‹¦£1!„Ó:3Ùu¡ºÌjÈtÒKi}"¥÷3[”Xgešç´™¬ †Ì¾;;­ï÷EC4ÅüI4&Zg›îü¬Ü-ñ[…ânH¤QÑyæeE?O¾EYa\CÄ.rh)êÒÌB™Š4eœ*K<\Uq*«~NK=sd*þ0f\CÆ-K•õÛí³ÞRÏ_îþ¦4..uÜî¬{.{ÿ´»!ÁËH£âÖI|¬éÂøy²\w-Óâ˜x»•–´"}õ@ýQ:oÔç½&6Æ üKþ‹Ì ‚|Xpw2íëDdÈR­ßÞh·;½¥ž8t§{y$„è-¹½¥®N4&K{8¿ˆxÎ,|)ÿ¾¥•68Ëꌳ,mZ¿½éÎuz—{þáÐi8žçu»®hŒ_sÇŸU”oYʇÃÈû'ÍÄ6^Jœ'm”œ±#CPgY@ÍQCfÇúûîÜìâ¥Eÿ°ï8Ž÷Ìë¼Òq_ußýd¹øärÜ“˜©J¼‡•ÒªÊÔáTdTXC“9¹Ô¦5dÖ¬¿¿!üîâ¥î`à·Z-ﯞÛu»çl&Æ“X:{]Fê‘ .V1Cišu5d5D6À”1®!# {I-_íîþvлÚî?¸nÇëüsŠÜjL|«øäáËx‡´Q‘t1™V⬃ ¸}w{Ò ›Ìö!# ûÎúí qØ]~£ûðKÏÍÝ{Þò;î«®ã8:Ãå¸' ¿ä—Å…a“|»3rTç‹ø(y‘Df‘ÓD®0eråÆÔ½°óé½¶sqùîþ—§Ñôÿ>\¹áêGcÇ/‹´ÈÝâÛӆȷ,ã“Ç;GæOé ó‘¡@ ÔgY6r/^r÷¿ˆ†ð‡Ã•Ýæ™¦f4ÄQ5d|–%Ù ïèážhˆÙsÃÞ›Î\§ÝηÙXuâš,ö!€:c²b¾~Ølõ]·3aÞ9Cn †È@ÍìCFQ¿B¬¯í‰Æ¨åú×n^›ôZ0 ‚²JU¬#€1ý;iÏW†_§! Bˆvw0xÒ^}‡h ÖTðYK6˜ôÆf²BtB1ïëÁ£ßyÿ9³#÷Bçâb—ÛšHÄ>d0M6·6sý@k¶5dZFÏGoØväûbà9 Ÿ<õ&½(T5dPsœeYŠÁ7ƒ'û{¼Ñè»Æ‡ C*ö!€zb²²ìÜÙýÏ_íþB8GâàH·Gþp CÅ‘'€2Þ‡Œ² «?_^{·)ZA(ÖA„ë´ÎŒÔQ[f5d›[Ѩ·Ö2ÎÙˆ ×ïŸx¨—~#@²RlÜÙi}¿/¢)æO¢1Ñ:Ûtçgån‰Gz‡âÓFg^VôódÃ%¦^‘ÜØ­µ…à—H ÑÒè÷'g•FNDÕodb2ËÖoo´ÏvzK=q¸û›~и¸Ôq»³î¹ì}üÓŽë^Fg{ÇÇš~ Œ‰Ý}ÈäxK«I²à-E¶Œ¿?Pã}ÈÈ¥Z¿½ÑnwzK=ÿpè8N÷òHÑ[r{K]hLVF‚!ž3 _Ê¿‡o©G¥ „1[5da€ÅätšÈy‹Pβ´lýö¦;×é]îù‡C§áxž×íº¢1Z|ÍVQ¾e¤7â÷’ÂE8¥%gìÈ 4Ù³,åMAþë$N~fˆ4Êí/¦gYZ³þþ†;7»xiÑ?ì;Žã=ó:¯tÜWÝw?Y.>¹÷$fªâ߃€IÄî]&V•©Ã©È¨ðÛpæ@è+’ÛÜÚ~‰’3^:åbá_þn@.ÔY°þþ†ð»‹—ºƒßjµ¼¿zn×íž³™KÌ7d~Ï‹”™}LŒö¥i¶×Uí¶#+ jÈ좱å«ÝÝßZ­VÿÙÀu;î\§`4–x«ÑÖÃk3±6ÕäÆH.¤àJ ›Ô>da‚-þhþJ@^ÔY°~{Cv—¯v~é9BìÞó:nË=ïjžY)WzEZl¥°)^ñ¿»¤h‰’»ñm¸ »5da-¿â>f®m2ÿ£ë7ÔÌjȸeùÂΧ÷ÚÎÅ…7Úû_œFÓWÞîvæ:Ž£¥Ý Ôì¦øn—¶†Îã3Gñ}·¸ 7–7SܬŒ¿¥hѹé©ù—3­ äÂLþZ Ù‰‘{ñ’»ÿÕ@4„?®Üè6Ï45£1 ‚³, ž8˲¨wôð O4Äì¹aïÍNg®ÓnçÛl¬:ÈjTgY@ QCVØ·Âï›­¾ëvæ/ÌkÖq“݇ 0YÔ™[_ÛQËõ¯Ý¼6éµàÔ3«!’v05ddBÑîOÚ«ïÁ»gYZ,iûîö¤ÓÌx22!„ ƒuÌ“U*@€©”–ËÌ“QCXF ÔgY•@©Ô\Ýϲ|om#Wÿ¶þ¥¤• æ*XCβBˆ¦˜×ÿ5éÅbÊ‘'€2Þ‡lª2dBˆkÿüî¹Ø†®£Ñh4rZ­°a}m/>6~`_ÐRð ¿ÈѧÒ\OfU¥ýh¯·¦ÂÜØ8kÈþ <¹þž–«ã>d£ç¾Ø?úó}ñÍ_f…ïœqü†+oµZ³rX¦©x"Ï0ž˜&óA¬2LêùJ¶´€2<>È[…ÂY–B18üìénvüýΙQ°ç~ë[¯õá{þ‡ø‡~ÚÀ ù¾ ƒ•°qæDøRîœøµBd6Íùƒ/Ò–é?#1[RبÓ!
‘ëgY~ç³ÁgÎñùO>ïlÇoœœ€ô…#F¢5è;¿ø™Ù´A|ˆ‡,ñÆH‡œš’gSÌ/ †§M’Ø?sNÅ 㡪洵E ÔgY~gÔηÎë^¿¿¶+.o8ÿôùhigôá¦?çŠFÓ?«ºe "ïFÒB‰áHâÀ v±{—ñÙ‚—š· †èÌ&¨´iÉ)°ÔgY¾ðoç?Bˆï ÿÒ{×|}gk§=×Bˆ?BÄ þs(ôDêñã6‘³®Ëb)˜d©Çq]wô|TpùŽžñ7ƒð.g|6EKâÍS[KЬ-2•º‘ï‹ f5d·Ö‚`+ŸE^Žÿ‰@5dÉÜWÝ»;›Ÿl¶”¥c‘ï@òMư,±sâ·.ýÙÒZÂQáïê%EúçZ[æåÔ×…°QC–“éK,ïÓ¬ù‹WF¾N|WnŒ_HgTZO»Ÿ+ïª4'gY¾à}==ÃÃQ¤qÒkÄ4+éùJÍølFù`¬sÈ"ÝŽÓXQO¿ºÎ¨\W/ò¹r­*ñŠ £îgY !îýê/“^`ÿ,Ë[k yf‰‘DdšOVêH»µ'²v>–è_N”úꙟ Ɔ2 Š×åÚÛ"—™“çs#äwõç1»ºÝ9å±iŸËÊ%@ŸA `ŸñY–›[ûŠhL'D;–6%‰7fVn…cã=ÕïšÍ™ÙS¾‰YüsK |Èd|–e‰5d›í¨;ÜúåjyW&+o YZ°i׌É4uº©ëÜÓÞ->Jgm™C4×PdU 3®!++ ÛühçúÍ×3û“aú„ÏWrzÔPÚó•¨!Ûùõýë7_om¿„×o\Û¯ß|=3‹œ:%íCVOd§œFª! â°+?ºråGW>ÿÝç+WWÂ߃ư0}ŒkȧZkȼ§ƒÕŸ¬îüûÎý÷#o­þdÕ{:pÏ·FÊlÕ/u†Ëïù›ú_è+c2+Žír€¸ÊÕæ»?ûøb‘‚¨`$”+ž šH Y“Û¾»=¶+™Õ•¹çÛÞS“S#XØÙÑ;1nSÇ^ñä$ö‘‰êfü¹±ðºc¾" Q®ÜX Ü[–îùö•]ùìã!ÄOñÒ•A£™È6ErL–ÖGg†H‹ú*dÚ `ý,KÀ©Pų,ƒ YxD`r¨¤³÷c|`â[‘/tÈûIêBM*O˜ *Ö•—!Ë”7€,b2¨³ÊÕ½õÌÝžY†,Q/íO£3-7(¡ÜÔ\µjȶ_ñÞzæ:Ÿö¬gÈ‚à,üZÑ'­`_u Q kÈØqÀÓÿ»¢5dÛ¿x™7Ëu¦^â[‘R}õüŠtDÔ0OƦ¦ÒÁãýŸ±kÈÊÚ©_œÔ…‰±ŸþbUþUÞuÉ ÷è¯U4Èr=5T\Þ;i{ôŸÊ2àôªan «K Pq5¬!ˆªÕ;*6?Ú¹õËÕÿ>$þñEãïÿë÷‘n›ítÎÏ–±`âÈ“@ Uk²•«+÷Üßü(#Ö9?»ru¥Œd¶ÙæÖ¾âÖÚBâKô7 1تÆÊî6Ü"§‚K¦[µö!#ÒBm‘«‚I… „>DÕjÈ€Ú²[CdËNf^HkŒ´„9¶ÄÜ[|`ØSs”Bð„]üpX¡¯$nþŸ3ñ¢:WO|Ëxµ‰§è*þ(?Z樴žv?WÞUiNL7ã²·½ê,È“Ÿ' Œäà)±16†Ã#ƒñaÏÄQi—‹ ¾OËû*Çgb"Ýäá‰FÚÓú¨g(cµñI“ǯ®3*×Õ‹|®\«Rÿ'ê#ȇ©¿ND@XVÆ>d‘H_¤QŃ*¹§•Ú59SÉšÇ$vSL¨ž_=P¿ÏñÉæÒ‰«Í{‰xO³Q¹Þ-ò¹2—göY€©g¶`™­ÜX@ÎZE¢¨Ä¸*“ñãf—Ë+’­©²03”¶Z³Ï¢9*óê&(Wn,@ `ŸÝ²ø=G¹=—"oZ|ä3CKõ^i}&%mµ"VP•Ö-ƒ´YâÕ3)>cÔÕb±†LE'qep9ED•y³¬"ÑØÌI•zâjõiöqÔ£Šü©?—•KµE Pf5dru—Eª¾y¯b¶¶ÌËK%Þú—PŒ-ãÞ\8UâäšA›˜S¼k6gfO»ŸKN| ¶*w–%POÆû¥:‰íñÆÄú}õ×ú=sݯŒ|ÏÎUú¿˜8*íÝøðÌ«)Ò×_˜æ²Gé¬-sˆæЬ ¨ ƒ}ÈÈö5d“^`ÜÒrcá×iÈ€RØ}ÖvMkgZ?pŠPCTEûN jÈ€J¨íY–$Z½¹úÖÛoMzÀÄp–%P v÷!;‚¼}w{Ò €I2Þ‡Œ€ (E ódµ @ QZn,3OF `5dPgœe T¥TPsgYö±ÔûÕBž jÈx2ŠúËÂç+ëSCFè `ºåúÿyÚó•ìCŒU Ÿ¯B°á€iuðø ïNFœe T5d05rÝ † ¨jÈ †8˨ ö!€:c2 È@ÍìCFQ?`ŸÁY–›[Ñ®·Ö2*@Ç/X¤za333ÇÇÇf/à´3>Ë’ P ³<Ù­µ…à—H Ñ*nfffff&ü"×ËÉ®la2 *¬ïC&GfavJ³QÎimní'6&I›D!Èu‘!Psfû‘!,³[CDQ‘´Y!e6Êó¤5&‰4ÞZ[ÐÉØV˜ñÊõ¦gY•`q²0*ŠÇC‘pJÑhq%jAº+Lzåz S€}È€j1Ë“WäaüŽ¡üV¨%6Ê*ø”Lö!ª¢È>dáÝIE4&÷”û$6ÆïEj„̰P c؇,žEKk´{Ñ2¦€éC P e×Eƒ—‰‘!‰êH.ò„&@‡œËd€êÛÜÚ)2œ€ °,on pú=Züá¢n×?%4öœe 8í4jÅ„þô(ÞH@”¢ny²1<[ SŒ€ °¬†5dAFpûîö¤§`YÝrcîÏ@ìCØgq2@¥ ¦  € °¬ÈY–€z" ,#7È‹€ °2@.d@)È“ô–QCÈ‹€ °ŒÜ /2À>jȹ¥ OÐG@XF  /2À2rc€¼Èû¨!äB@”‚<@`5d€¼ÈËÈò" 죆 P òd}d€eÔò" ,#7È‹€ °2@.d@)È“ô–QCÈ‹€ °ŒÜ /2À>jȹ¥ OÐG@XF  ¯Æ¤L› 7F4µ²ðÃ…"7FÈû‚²ƒÇ“^`Læ/ÌoßÝÖéùÖÛoŠȀR'€º)òs85d€eÔò" ,ãùJ@^d€}ìCÈ…€ (y2€>ŠúËÂç+©!€Z˜_Hlß?ØWŒ"CXFn ê,1ðRGc‚€ (5dPg‘ð+3d@IÈ“@…A˜N4&¨!¬£† ´C±2À2rc€¼Èû¨!äB@”‚<@5d@Y¨!€ú(øsxB@ÆOö@Iø—Óªàÿá£YPû²}w»È¤"ø—PˆÖQ‰ ”Y…™¿üy¿û½ù'ÿ{0é•ÔÎý»{ÿ³ÇS–ÖB¬ß^Ÿô2êk¦w¹7é5ÔÚÿ¼¯ÅZ~$PIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/extviewtree.png0000644000175000017500000003043512032647161025255 0ustar ebourgebourg‰PNG  IHDRMdJ ] pHYsÃÃÇo¨d IDATxœíA’ã,³}Ô^Ì¡æH^Ì´øoÑñëa Š¢ÀRR‘1aW#@´MT[~½ÿ½våu{¾ž€Ás°3xvÏÀÎà9Ø<;ƒç`gðì ž€Ás°3xvÏÀΈžûùó÷çÏ_ýGJ™A~k.ùöpd­ô¶(uûšÎ@Ébžû¶-Ò&Íá9€hhû–ÕÙù–uUüj냞»~ @gÈseREÕ§J%hl1‹7›«^Qõô®õ™~]Ía±üš4þÅ"­ìiÕ e©’f°Ùb·¸9{\žÛ»i·¯Rg—Y dšçŒ?jZ'+¦¨e¼3–®‡¢9tÕËw_™ì9} ¥<¨¶«¯fš-*gI‘¦fì²éj½y,é|´??§8éÛžËžÚ QþTª¹zzI£rð@&{ÎXC¯çÞ5ÕÙec±—ýŠŒÖéòœ½èÂt?iZ¯.>ÊUkÐUa‘„Ò¢bÄ)•H=ì½K,ÿ“‰iž{.tŒ«1‡ç,-fñª<”Ÿ–%õ:{/Aº.eÜ€™žk–ô\W=Fy¼kn“*ﲎÝsúh 9€¸3ì ž€Ás°3xvÏÀÎà9Ø<;ƒç`gðì ž€‰è¹Ÿ??nðÜñßààýïýû/ž€ ù•ž€=Ás°3xvÆê¹ê7Ž^é¹×ë•uý7RÆ{yǬÁ=«²ÔYvcbOKŸç¤/Ú¾Ñsã\PsW…è `"Uú£÷Ä×çæ¢¶y˜` <§?NQϲ{ÎÒ©’®>Ûëiޤ4&ÐEÃs‹ã½ çÒ§ÍÓGÎÍ•-{hüÍýíÄỞ³K«TWµ¤¥þ.NϽ>Í”M@/Axå)Ùc½°TµØžž«“æÍæd*gñUÏÙGÀ^Oï8+e”F-¿&½W›ñÝü\s§/Τ’_õÜQ³Ë«¥®ê¹ÍÂÒOõ°+÷æçºæ_}-›«61Ξ«žU[Ý(ÍV¤U:¯÷Vy°+W¬çÜö2–Ùºtx.=ôs«ËÊ5Àö¬µžKÿÍJJ‘éóiLÏÜØŠ4°J£zo•»rݾeYL*é[ÏùYÏUË7ë5¼XÏ=˜øž{'nö¸lâ‚9ô9ž+ViTï­ò`WnËϹƒ–vŒž; ‚š•ÊËVª…aWV÷œ] ³¦Zòs–_Vó7âùµ¸óï-•’FÏUëï¢ü{Ëß㌤?ÍŠ•?: 3 KŲ ìM¨ü\V2 êO›ÁrÎõͶs='õSºd}Ĥb–q6þ.º~YÕþèun÷Cù™>[øà~(¾÷oüýWÁ=hº±–cƒK°€çðDÏùÞ¿eÜ2ÚîF›K«%Øàìà9<QÀs¾÷ïíÝ€àà9<QÀs¾÷ïíÝ€àà9<QÀs¾÷ïíÝ€àà9<QÀs¾÷ïíÝ€àà9<QÀs¾÷ïíÝ€àà¹öŸ \†Ãsã9hòtϽm‚ p¼€¿=bð4ðì ž€ñxŽƒƒƒƒƒc¡£ÏsKƒç`gðì ž€Ás°3xvÏÀΈž»ýFv°1¼ê૤·ˆÃsp)ïoå…?²ìtxîö{¶Bpº^$gaåUwûÛ6àÀs0‹ŸÎ¯Jù=«|!ž¯ºÛß°GÏýüù›qû” ºMk+ ”ì§gçfe²©|¼·ÕN,Ù¼e¬”¡° |ƒcÄsÇÿTל_xî|éósÊŸ·¤'¾j‹¼´dùX¾ FÌ:PíCW…zªÃø¶™#—Ásš%»‚Õ©|¼·ÍžO)Yí¡Raó*¤«N¾Á±¢çŽÂde7Ê ±«à&B~.‹§ªõ`ó”²éêÓìÜjŸ-}¨ãÛ–ñª>ž| ()½UšûÆ%tý4»éÜêá¹ïq\æ¹®ãö)\“Ÿûÿ×kr¤‘êé±åô¬¡ô”²?Õî•­Ø;&5—Ž’e.ûãóAzzuâNW§rwo›Í9®K©³Œ[ú,µ¨ÄÓÁop\ã9xÕ[•Ê8ós¿¯ÀwÆìg¥?-[ÔãR±ô§î>d£$ÍÂ͹UŸ¦›§gõ4Kö¶Ùœ#Ø{ SZ¬Öç¾Ç1è9€“ßTÌÏ•OÓ¸, ¼µ4ëL‘:f¯PïŒôÞ|-?W vMîÕ©|¼·ÆžÖ)9ip|¤!ÂsßãÀs0‹_Ï•7æ®òü\O TKJ?-{%õÓ´ô§:JŠ9ªóòk@-ÕÓ¥:«Sùxo›]ÕKº¯Ë2hÍF¥jñÜ÷8ðÌbÄsïþüÜ~gœÛ߇n&Þ^DšÓ'߸ÊݾæÀsßãÀs0‹Ós©í¤Ç³òsƒà¹óÀs÷xî{«xOñp|®ç~o §ðÜ÷8òœôa;<„lßRz<žŸƒl”nž¡ÍÇZ½½øÀsßãXËsRÕE ÌÏI«º8ù¹ÕYËkõöâÏ}ciÏq<éù¹´òÛß*1¹ý—œüƒI+zîh©®ôâëóž™S,ûštNézË Þ® ¥ééù¹ò§]lâ¹C½- ž{}Þä³7hïÒôü\èbϲê²ùº4S¹‚9Ëè2ô -’ʈR¿où•>ÕGÃ-?å¿Óósž€1¶òœ´uYÕRsfWVWvṋõž"-£áèÿùøõy|#?wû›–桞“d`,é˜Q<ƒJ“š³,®M!?ÑÀsÓý•žSµ{îP]% £¥BûÕ¥Ÿ€hà¹>©HÅz=§stIoÎ>ÆË<¿>òs <'îÔIÚ±f³QwÍRp¼BeÙWõà}œßäç`6ÏòÜé•r£¯ºSWÝ4îû•v”"FÏé5ë—c?· ZN9÷Ü›üLåžóµuïÅ.ÊôïŸ+ƒ]¬ç9Ë{îŒã¹\™Ÿ°°ƒçŽ–êªñA/¾>oÿ8Ų/á–’îz²àïáZš¾2?`aϳs×¼?Å%Kx.T[уö.]™Ÿ°°çYuÙ|]š©\ÁœetHzIeD©ß·üJŸê£á–Ÿò_Š+??`a+ÏÙ¿.Cµ¤²º² Ï]¬÷)h GÿÏǯσüD㡞“d`,é˜Q<ƒJ“š³,®M!?ÑÀsÓý•žSµ{îP]% £¥BûÕ¥Ÿ€hà¹>©HÅz=§stIoÎ>ÆË<¿>òs <'îÔIÚ±f³QwÍRp¼BeÙW5ù9ˆÆ³nù)ÿ¥ ?ÑØÊsöïŸËÄP-©¬®ìÂsë=E ZFÃÑÿóñëó ?Ñx¨ç$KºfÏ Ò¤æ, D‡kSÈÏ@4ðÜÇt¥ç”Fíž;TWIÃh©Ð~u)×äçÎK~wñ°ïžû‰À¤¿¯Û;ë‚çú¤"ëõœ^ÌÑ%½9ûh/ó|œ)äÆû[¾’[UªAé„¢ú{p€çÄ:I#Öl6ê®Y ŽW(é°:ÔW~ÿ\õqùT =—.)²FËù7U¾rnyº¥d³õjÏ_µõ¥ó½­W/A/©S–©ŽØÄÎ[N‡y–çN¯üY°œîËbMO¤Md}"e…Žšõ˱Ÿ[-§œ\ùýsÒ4T•Êà+™1õ~êMTëyÕ¦ã‰%õ‹Í~šþÛÛùÞ`õ*ÊÇÍ1Ï~˾‘Ÿ„Ey„ç|mÝ{±‹²Ö÷Ï'\åÜrž;/KuV[—z^zÎØùf°yEÆ~ÚÍ¡k¾ ¯Vd=Ïé¼ðÜ­<ùûçªÆ=§—´t£ô\ïõŽ_Ñ =7rí°(‹yÎrÜ>×?™ósMŒç*íþ°{îÊ~Ii±êƒY]òý·b%ÏA|®ÉÏÿ§É—O¥`µX•ìQÕ¸‘‚z·«¥Ó•KxÕŽ¹÷Õ w;-V-œ N×ï}üÚaEðÌ„û[fnù)ÿ¥ ?ÑØÊsöïŸËÄP-©¬®ìÂsë=E ZFÃÑÿóñëó ?Ñx¨ç$KºfÏ Ò¤æ, D‡kSÈÏ@4ðÜÇt¥ç”Fíž;TWIÃh©Ð~u)äç x®O*R±^ÏéÅ]Ò›³†ñ2ÏǯσüDω;u’6F¬ÙlÔ]³¯PYö•CM~¢ñ,Ï^)7úª;uÕý@ã¾_iG)bôœ^³~9ösË å”òsGxÎ×Ö½»(äç ëyNÏÝ ù9ˆÆbž³·ÏõO†üDc%ÏA|ÈÏ@4ðÌ„üDÏÁLÈÏ@4ðÌ„üDc%Ïñç'ñ!?ÑXÌsÒg ð\ÈÏ@4ÖóœDu ?ÑXÞsgÏEàšüܹY>¶ÙY·¿ ¿ÄÄ«Û{ `{vðÜÑR]5>èÅ×çí§Xö%ÜRÒ]O,7x»‚–¦/ËÏ¥Óî©®ìGéìly°/mãQ‚íÙÄsçìÜ5ïOqÉžK#ÕVô ½K—åçJÏIO¥ ÑsÙ0‹—M—«ÆòÜòtKÉfëÒU7[o˯öG¥ja€kØÇs‡¬º×ç|ý2ÜËÿ,SõÕÚª}“•Z×kNÏ­^£rö`ó2/ËϽ>ìGÕòR¤9çêMTëy›[R¿ØjÏuê}+[F©Zà«lå9û÷Ïeb¨–¬h Àè‰f±ÞS¤ e4JÅ.ûüœ2×Û=gœp•s³ª‘òq—½”Všý—Ò;ßì§tzµÆAøõœ$cɲX¯'Œµùj–šûqʈT³ÒŠÔîù9é©´O¾ŽsJ³8c¤çúé¾~ÚÇÕÁà¹éþJÏ)Ú=w¨®’†ÑR¡½ÿidÅü\㹃J7£Kƒ·RöíÁ•à¹>©HÅz=§stIoÎ>ƒ^“Ÿ;›=.ŸJÁj±*¯Ï£—"RPïvõ±tºr –Q’ºZ-©œn,–ÆgMaMðœ¸SW=Ë^›Ô„Þ¨»f]K#êCšËý-3˜ÐnçYž;½’Ú%•M6Ý—ÅšžH›Èú EŒžÓkÖ/Ç~nìê ÷·L9‡èöž<™GxÎ×Ö½»(Üߢ±žçtðܽpKˆÆbž³·ÏõO†üDc%ÏA|ÈÏ@4ðÌ„üDcsÏ5óy0òs <<÷&?³YÉsŽ??¹}Þäç ‹y®:·â¹8Ÿ€h¬ç9)XUÝíóþÓ ?ÑXÞsgÏE€üDcÏ)ªû|«ž–»«(œ§ŸMK"«s¼ž,ø¿{-:ƒ×xîM~¦²‰çŽÚ’ñ\5RmE^㹪ðð ²çªª«Î×¥™ÊÌYF—¤i‘TF”ú}˯ô©.x‡üš—I~¢±•çÞÅÖ¥2_7gveuež»Xï)Rp®çÊeÅÈÏ@4ê9ßZg\`Fñ *Mj®wMiô\$?ÑÀsÓý•žSµ{Nw•Q«Õ íýŸå¹ªðð ‚çú¤2Ësz1G—šZº¦Bòs <'îÔI³üˆ5›ºkѪÔ8×soòs0›gyîôJ¹áVÝ©«î:6˪”F}5ë—c?· vu†üDãžsP]Ä@òsõ<×ôž»òsŦû+=§4j÷Ü¡ºJFK…ö«K!?ÑÀs}R‘ŠõzN/æè’Þœ}4Œ—y>~}äç xNÜ©“´1bÍf£îš¥àx…ʲ¯jòsgyîôJ¹ÑWÝ©«î÷ýJ;J£çôšõ˱Ÿ[-§œŸ€h<Âs¾¶î½ØE!?ÑXÏs:xî^ÈÏ@4óœå¸}®2äç +yâC~¢ç`&äç xfB~¢ç`&äç +yŽ??‰ù9ˆÆbž“>K€ç‚@~¢±žç¤ ª‹ù9ˆÆòž;ãx.äç ;xîh©®ôbvûÇ)–•n)é®' úîoYöû[ÀBlâ¹sþíš÷§¸d Ï¥‘j+z°z™ÕN’Ÿ€hìã¹CV]6;W§ììܳŒ.IÒ"©Œ(õû–_éS}4òûªçÞäçà lå9û÷Ïeb¨–TVWvṋõž"-£áèÿùøõyŸ€h<Ôs’ Œ%Ý3ŠgPiRs½kÊë×sg¼úêp€ç>¦û+=§4j÷Ü¡ºJFK…ö«K!?ÑÀs}R‘ŠõzN/æè’Þœ}4Œ—y>~}äç xNÜ©“´1bÍf£îš¥àx…ʲ¯jòsgyîôJ¹ÑWÝ©«î÷ýJ;J£çôšõ˱Ÿ[-§œŸ€h<Âs¾¶î½ØE!?ÑXÏs:xî^ÈÏ@4óœå¸}®2äç +yâC~¢ç`&äç xfB~¢ç`&äç +yŽ??‰ù9ˆÆbž“>K€ç‚@~¢±žç¤ ª‹ù9ˆÆòž;ãx.äç ;xîh©®ôbvûÇ)–•n)é®' úîoYöû[ÀBlâ¹sþíš÷§¸d Ï¥‘j+z°z™ÕN’Ÿ€hìã¹CV]6;W§ììܳŒ.IÒ"©Œ(õû–_éS}4òûªçÞäçà lå9û÷Ïeb¨–TVWvṋõž"-£áèÿùøõyŸ€h<Ôs’ Œ%Ý3ŠgPiRs½kÊë×sg¼úêp€ç>¦û+=§4j÷Ü¡ºJFK…ö«K!?ÑÀs}R‘ŠõzN/æè’Þœ}4Œ—y>~}äç xNÜ©“´1bÍf£îš¥àx…ʲ¯jòsgyîôJ¹ÑWÝ©«î÷ýJ;J£çôšõ˱Ÿ[-§œŸ€h<Âs¾¶î½ØE!?ÑXÏs:xî^ÈÏ@4óœå¸}®2äç +yâC~¢ç`&äç xfB~¢ç`&äç +yŽ??‰ù9ˆÆbž“>K€ç‚@~¢±žç¤ ª‹ù9ˆÆòž;ãx.äç ;xîh©®ôbvûÇ)–•n)é®' úîoYöû[ÀBlâ¹sþíš÷§¸d Ï¥‘j+z°z™ÕN’Ÿ€hìã¹CV]6;W§ììܳŒ.IÒ"©Œ(õû–_éS}4òûªçÞäçà lå9û÷Ïeb¨–TVWvṋõž"-£áèÿùøõyŸ€h<Ôs’ Œ%Ý3ŠgPiRs½kÊë×sg¼úêp€ç>¦û+=§4j÷Ü¡ºJFK…ö«K!?ÑÀs}R‘ŠõzN/æè’Þœ}4Œ—y>~}äç xNÜ©“´1bÍf£îš¥àx…ʲ¯jòsgyîôJ¹ÑWÝ©«î÷ýJ;J£çôšõ˱Ÿ[-§œŸ€h<Âs¾¶î½ØE!?ÑXÏs:xî^ÈÏ@4óœå¸}®2äç +yâC~¢ç`&äç xfB~¢ç`&äç +yŽ??‰ù9ˆÆbž“>K€ç‚@~¢±žç¤ ª‹ù9ˆÆòž;ãx.äç ;xîh©®ôbvûÇ)–•n)é®' úîoÙÕ%òsM©HÅfíû¹»¤7gÁ ÉÏ@4ðœ¸S'Íò#Öl6ê®Y×ÒH…úfç’Ÿ€h<Ës§WÊ ·êN]u?б‘XV¥4ê«Y¿û¹e°«3äç 𜯭{/vQÈÏ@4Ö󜞻òsÅ©HÅfíû¹»¤7gÁ ÉÏ@4ðœ¸S'Íò#Öl6ê®Y×ÒH…úfç’Ÿ€h<Ës§WÊ ·êN]u?б‘XV¥4ê«Y¿û¹e°«3äç 𜯭{/vQÈÏ@4Ö󜞻òsÅH£çôšõ˱Ÿ[»:S5SUroòsp 𜯭{/vQøüDc=Ïéà¹{áósžžËêÁs0ÎEžK…÷íÇxn"WzŽü|ƒ9žîvñ±žûùó÷ÚÇxnþëCùu¿g¬çÈÏÀt&xN¾«S¾oyÁJÏÍEòœt/Gåäçૌzîütví”J~îÛ+9<7—®_:ù9ÈçÒ»ÔN!?·<ºç^Å÷ì8*'?_å"Ï‘Ÿ[”+=WÖ€ç`œK÷-ÉÏ-Çõû–äç`.—þ ù¹å¸þïPÞäç`*}®€üÜ¢\ù¹òsð ®» ù¹¹ø~(äç`:Ü÷ ô_âÕ÷ý"?sÁs ÿ¹¿%¬MŸçÎSпèàÏÀ0?vϽ{¾¢ÀŽòªç0zîöÙv…W|›¶ç6ÏÀÎüH£œ¹|¨^,IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldaptest/requestdefaults.png0000644000175000017500000004376012032647161026127 0ustar ebourgebourg‰PNG  IHDRm(…Q« IDATxœí½ohWºîû*”aØP t_P_pK±ˆÚ Dº Äbr˜ÈøCìc9±’&Êvœ™ÃÙ;s6{ÆÉáf[¹œq”@N” “ØöDž!òåæ Ì\)0£V°­nC %‘.á.ˆ8µÀ>V÷ê¥ú×UÝ-u«õüV­ZkU©Õ«ÞzëOß½{÷ÌoL"""¦1’hä-¬•ü_ãoL½tÞqI׺[•º` ÐvkÅ%¦‡B{W/r¾ø—™â¢®é¡³Uø6u~â…‰¦W_øráÔéSžÕµb©¨kºã:)–â.gã.gŒ ψ‘(!—H#îr"2×ËŒ˜EœˆñôŒoàKY¼’ÀïOY›íöFʲ«>m¤Ì0¿Yan·kþ`ÊÜh·O×}ÖëæR\(eZu_¶jÒgÊV%¾ÏõgÌõÝêí&üƒsm—øõ qø=ꉸœì×љœÕª³qFŒ»Ü`†(Q—‘˜õtMwÈÑ)t¬vã1’Ký½ß'ºO±”œxcÂ3‰X”V+$"¢ŠË‰ÈqyzœMé™ôl«¯lV< ÷v#¿?Øûëíx½RÇ”Þðy7Ð;u¿àÓ™Õ´O§,«îM¯ç>«úC)s}‹çÍùþ”¹^©{«±/­'ð¹vù;ç×Úá·ßû=‡ß»^DwbæÒ™.¼œ›Ä´%¼Á Y"æ2ƒäVgA]ÓI£è°:ß QJ<½kñ#ÑúÌLÌᜈ9.׉9î¶û ÿe”ˆ~õß ;З˜8…×5ÃÙ´¥¯z¶ÕÛI¼aT6mÝeŽËS†Q±ƒ}Yx⩃Ïu—üÞÞðÙ´a%ò‡ ËâTõ˪4ðýk½êjQN€·*Ä}¾v¤ÓçgJk;åΔnï}8³’È?’]¹Un¿]¦Í–ýcÙ•Ò6ú1ø=ï‰'Þ\$ZD5¢»DD2}õ•WÉOmÊ›»<ç™ý½krž8;¡kúG¤Œ±S§OéšþÙåÏ”8¹bÐTqíê¬QŵOžÈ:ãü@¯þã‚ZÞ¢×÷-þåÊððxsí\x7OD“¯-J_.ÓùYu&NdG¥È¡©Zä›ÕuSŒU6m郔;˜Yü«™bF½|¿Q±cøM›U\;eÔ}Æ0ÊüÁ­ÞªûŠe‹ˆSõÙ´Q¶lñÇöxsq¯?¤úô¿¦–WÈåÜå¹þp¿V÷EéŒçoW}þp,_¸Uóoõ·+Äý>èGãøG²…[íñ¥[§‘_ ô†û›åæüX»üã[ýÊöú¥@ÿ$üò *‹ðPD«³•ˆDɉɒjjr‘F:Õ#Ñúi^y²W«O“[æDÍÛû‹/¿¨‰™vâ섘c'^˜˜ûÝœŒDO>%bпû÷ÙåÏÄ9b"²y…Hç®C¤s·îÇÍ‘~€ØþŠm³À:Myr\â.ë7†'"ZY™Ï>“¡5kÅ0rÜ­ ?š],ýe>—ã®Cš^Þ¬®Ë´Ty³ráç£D4ÿ? |¿S-g©²]ö›eruî:lÍ“Ãö§ÊvÕûSf 7¶úº/oØÜ%Õ9ÆÁºÏL™V ÏÔý¡Œ¹as^ó–ê-¿Ïöoñ¥õ ÿ`¸_ ðÇ3¥u‹oøÂšôÙºx‹/®Y¶ô·«~Tõx¼è qü­$þÑxþ¶iÛDäŒÅô·’øÇcùÅöøÅ›Aþ‰æýx~~yîÉx4y$ʉ3UãÑÚ¹XáëJާD=;+ëËÞ×ÑüI×3/ŸùôãOe$J.U“«µsÄDT›`tîÓª>w8­§èÿzé¯'&ŸÍ¿u±@Œ˜¦_øÕ]ú¼øÆO*6½u±`Zå\fêù\æˆ*ešþ¤`®w“Ï Œ?‘MÝODäTèY´m""]£‘Çrþù¸~€.]6¯üÑdšž9dœ{~$ó€îü@ÿÁ\üÊTÇ£zªÂ‰t"ªTœTJ?öhÿµ›Îðƒý@5Ò'q×ÉÎL=—Í^ùܼòGsêù<í#"šûÝ©7ß)p—Î=?–y€D¿…¯Ë6çïýê8n–ógÞøÍwÃHÙ›œ‘Î]'m¤¬ooV÷gú`ʶCü&‘KÜuÒé”mW}6*ûLÙæU(SÞP¼àsý3̯o-çÄ]'÷àV¿^÷åuÎ9q×~0cJx‹/­ù‡³¥5ÛïG„ßôùG¶ø‚êoùGû±ý­Fþñ-~ñ¶Íí¾pÛ¶ú[ üøa~ p«Ü3È?Ë/Æòø½ì1ºÛL$Z­S˪9ÑÀHT¨zv¶Zkï—>¾¤‰9ö½ß›<;)çáS/œªvåVçóÏ®|&fx›ÛDŒoVˆ§Jíl5ãT9ylxáKsáÚŠižÌ?–åî<ãýœ*™ƒDûh|$µøueô±ÔøÓlúι½pÍ\øó3ØÌ;S?ɾxnþìó£§NdËeçÍ_ÏW6ù@¿Qº½¦kÑ>zóïO/ü¹xü™“O§gÿm!û@úÂ/ÆœMzãµ¹“Ïå¦^Xüj‘¸!Ç£Ž­6߬ÑŸWNÉÎ_[~6[X©äúS¤qn0ýüÏòŽKS¯]šüÉèÄéìüŸ —~_{ü8šœá?T¾ø÷7Õ~'¾Z¤MÃ0H×i€‹_K¥…\nÌÞ(“Ë8qcÊÚ¨K^o¤ìŠ8Â2Œ”m…ø çDă)ÛªúôÁL9Ч3e«\÷ëAþPÝgeÌ5ů—ù¦Ï÷oõku_–þp¦¼V¶7‰ˆçg̺Ϛ·¿V¶m"⹇·új¶Å<’-…ù[AþÑp³¯Fu>ÿx+>§úâÍFþ‰\ñ¦eo8ÞjÙ?‘+|æÍÿÔVÓ´¬fý×üàá{™­~Ÿ'ŠD©z­ã:µ”_5¾|ïÃ÷ê—))Wçž9}†j‘¨zÇŠ§÷ûÄk0cîò\õ$qý’–ÒI³úgW>³wmæ¢ "ân5gL I]úÃ"ÛoÌY"¢Ó?_í‚_Ÿ™¾x…ˆÆ¨|_2×*³X"fËÐ]2ŒT¥bŽ?•%¢WÿóÌŸJ¥’=ÿG‹;Nõb)¢‰W¦ßz÷ Ý%ÝÐmÛ}8§b©<:2@T{|`þË•ê•ÉÄò¤I§+ÿo¡ô·òÂJ…ˆrýdoV1Móä³'e¿¥oêýêÑ«¯M¿õÛË™û3öf…\â®mìgö¦C.÷zƒÙ¶Ã¥ß ò™½épιk§¦l»î-»àÓ)k£ÏJYVÝ›[ý&ç®íßê­º/×|îÁLÙªØÒ¯Õ½©úõrÕΘëeÛ®ùµ?¬ú‡3+·ùG2+kŠ¿m ?òH¶±4[R|á¶moù[­xKõ–ð‡û›–µQñø±«‘b‹_LêonõVSþ©`?þTn‹ÿ¾±ç®¸AQ¹¶¶v#I5eÕ«se ±ê¯º¦ëLç.—YOÒH΀õ[TyJDé2 õô®©3öG4ñ„ã::éÕ©ˆøgÿþwyŠ¥ª³1—“(SuìÉ4;?!窓όÎü~†‹hÒ!Ή»ŒˆH'Îyîpê~Jר¼áÐ>"Nœsý‘ù7˸?§kOÈŠiÛqȶíLf˜ˆ¨ ":õlþÔ³yÑcÊÐÉ!®yǦL¥UÏïòkKæ@.3ñl>u?Íÿ©0õÒÓtN¼ÿ~ˆ&žËO—?õlÞ®ðŠMú~r6éÚW¥Ê&¥R462¼øµyÚQúM§Ë¶µôUY<˜9Q¶ß°7íZ~Ô°7mî²Z”©øÆ‘¨aÛv-úL[>¶6B¼m‹h2}(mmصè3múþ´iÕ}y«¯E¢ÙrXÄè+Ñg˜¤ž+õFŸëµˆó5ú¬G–ÃæÌnˆ2=Þj§÷Fœí‡ µ£þPÿ£áÂÍþVc¿xË´Ö•h#Úÿxxñfݶú5ø=æe~”+÷tª×ÖÊkzd.SF¢r5e>U<ùTqØsm°ì½þ¹Ž¦ÎÌrŽ QÚ‰ŠÑˆü(#âwm¶ :WøºÌ7íl&Çïr¶•¾Y«|OùDz™”ND´.}?*šù×/ñÙOßxiôÂ;oþÃ/ž››ÚÒ¯åüPÖµZwm#UDù];ªE¢Â‹ëïÚéûÅDKt—‡úLÚ¶«¾?“¶l+À?¶6ùlÚÚ°ˆÝå¹lÚ ô¥MKú~Õ—Å­/wy.×_^7…Îõ›–É7#ý‘~s½‘î7oWýÈp©îs¥µ ·9Ýå#mõ"âô{ÞåÇF’{5zü“ñü­¦ýp°?V÷ãdž aþf;üÓÃ…›f°¿eÚ–RÞVò™Zdí¿®ûÂצ¿·ý•«+DLœž•ßÛS?šù×O$*¦º³/œ¦ˆ)Õ …ê‘(Ñ™³g×Ii)y.V^ˆDµH´úý®y{Ÿ»<×÷í·ßŠ+”¶õÓc¥o,r)7œ{rà‹/ ¿úõ•ÌAC´À˜‘ÚÏ—È庖"Í)oXD”9˜•[$ïU2ö:K9¼boÚDdi"â\ÄŒ"²ÌêºS.ÛD<›Íq^¡»:‘äˆs~—ˆã@ŠKŸJñMÅsÎá3œÛU†oøôý[úLƶù2¶mó¼¾ÿŒ%}6kmXÞÞ°l¿(koXv…ˆœÜCÙr ÏeËV Ï•-Ë®p"'w$W^¯úá#9Sõ–eωœáÇræZc_^³¬ï9‘sl$WºÝ´Ï—ÖL«Ì‰œcOæK·;áåK·üø±|a[ýÓùÂMÅß2­¿µ×n•„?ùÌèâÍæ}áfi ~¯zs½°¼ð·kyMå‰{ž«muÒEôY?K4÷û¹ñgÆ9çžùÎ{©’u×ÑuýÒï.|ö¤mÛj_šçl¯œuý‘hUD£ût箣+šº?ãÜu<åÆAÒ÷é2‚Ìd²êR"'s ^’Jé¢FNê@ÖÓ¾X—|^×uÒ(¥ÔåLKågÇž }ä8´ðeñ­ßÎ3F[ZÐur]O‰vŒƒéêHôTÅ©ˆ-JHUxE§ê6ÒVõRN©º¯éÆAJ¥R•ÍŠNºCN&•*+^\ô듹?eÛŠßßs2÷gD$ê“ÉdD$ê“Íd¬@ÿ@ÆÚhä³kÃ&N9¹lf-Øg×6¬ª(kYôù\Ö\W¼eñMŸ?’5×}Î\_~t8WZ³ø&ðë·•ráÛâÍ5˶¹CÎØc¹’ô#¹•ÛMûüÊšioÔüíš2™oÅË¯Ü ö‹ÛêŸÎ/ÞTü-Ó¶¼þTÃyÅq|þþ ß ðâvšªÏdl»‘ cÛç"âÙ2VÝg-»\õÙ¬µQ÷öF¹ése­r¥ésYË’>gY–¸¸Lõù#9s=Ä[Vå{‡ˆç‡sæz°/¯[åï">:’3oK?lÞ^kÒ?9lÞ^+—ÛéÇŸ^‘þØðÊ­Nø§‡WnJ?ºr«Tþ[3þÔÓ£‹ ý3£…›%³±7Í¿Ušñ'F _ÃïiOÄ,«´¼ðžmÛI#QÚGt—æ~?7öÌXõÔ$‘¨˜E<Êm.ûbÄúþ×ÿ%çöz¸©”TçðfÉ<þÂù\n¼ö68q¹'‡;.O¥Ò1ëÃÃÃï9O]0ø®÷¦¹°üÿ]à.¯Ç…I¦°K¿»tòÄɦWŸ»<7þ̸gõ¾÷þû{Lcµ!ÆÒ™O æÍËì,Ù‡OŸûéh¢9KÕôÁ´µa5·.ÓÛÏø&÷”÷ÝùîÎÂÕ…Üp®Ó;Ø}ܧ>3 …B¡Ph"í»óÝù«óÃÃÀ„ÜÇkgx© fu( …Bw—"? 4ò£P( …6¯QùÑÁ¡AOÉêõUQ¸z}UV¾;òWhW§žîZÒN›è±]»ºÅ~£Sã€NÑ ?JD«×W— ËB‰Hx¹4p­¤*½Èöýu¸ËåH¸Ë‡Åw=Êvšk!‘ÊÙ%~bÓd‰ºÕ;¬ê_9Î_¼]Ÿ ( Ý• Œ-"BCr% G‚˜ÀÀQVn: ۄ†¾¹`Ë¿VÃÆý›¶«ý…ãl˾ŠF`…÷ì äGa%ªß•ÍExþ^¸/†ó÷+Ëã×ø=ÆôƒCƒíÚ:/ƒCƒrîá.—SŽƒÊµ"¢ÛÀqªõÛ¸¯ÂþâíÚoP(º+T£Ús ië“ìå“£Ìúc ù8*8š?*;Šß~Ҿ¶«a/žp*éÖ…•ø¿Vüq’2U·²¯bŽ¡áx P(´g4A~T–¨K=^ýÂ?Ÿ Ô,lœ¾ü>QòûÝ?’ööØ®^’®%½ç¤ksûJüuüíûÿâñ· …B{@5¦1ñq šia%~ï«âhXýè¾¢×Ó£HÝÍÝÖ8é>l×Zª—IÊ&¢Òèö·ï, …î m[~Ô_3¾†­+ˆñ4ף߷·Ç°leÒý§fD ñwëûªõúP(º«µñý£M\¯ë_+š°ûG#®emå"áˆkPöØô¥§a;'âfVuÓ]¯èýíÇvÃëuöÛD×°+èûöÛo¯-fsYÖìûØ ­¨¼êµã#i»Š ÇDäÝ ãB¡ÐíP<_·Ãôð½•=¼i ÍŠçéx~¨ ÎD·¨Û¥>9¨½ÖÜŸÍÝÓÙÙ}ó“ÐÁg0A¡PèŽ)Þ? 4Þ? …B¡PhóZ½´´RâNÕB¡P(ºëTùÑÜ‘\LJ…B¡Pè®SäG€æA~ …B¡Ð&uþËyÜ? 4ɵk×<_ …B¡Ph˜:®ƒü(Ð$×®]C~ …B¡Ð&µ"? 4ò£P( …6¯È̓ü( …B¡Í+ò£@ó @~ …B¡Ð&µ°R@~häG¡P( m^«ïý³¼Ó¯žvžûù9"bó(>'P(êѾ;ßÞY¸¶0ÿÇy"""FŒ‡ß³~êgSùá|a¥øq™¾8Ý%ㄇ‡‡ï¯‰‹ŒÄå쇳´ ”Í e²©íh´‘É—'óÃy¢€HT*¯E«HÍ2bÛÑùM™0‰îäÉ]NDGÈ— `Äx§³P(Ú=Z½t᫾ ñ¨ˆD óè.aòåIñ(Þ(Š’é‹Ójô9óÁ G< [îm/æ7å7ów‰ˆ&ÏNNž4¿©´½°Èã¬s??•B¡P(ThõþÑůyP<Ú××'ý½{÷(6e³rþ¿½9óጒN½<õæ9Ø´kñÇ£•ÊxtphˆV¯¯ú‹üVVëû+6Õ°8•w IwfœvZÜ'zö&QùѾ¾¾³/}ôÊKŸž}飳/}ªÎ© ÉdSoüâüÔÙ©7ó†ø™:;õÆ/ÞŒžDû‚hf³‚”%­4ØÛÈÏ€8Î’‘蹟Ÿ“G^2?ªÖT5 ñý]?NkqÚQ+wüX5B‡ްõíòOÆ­ŒÙÓ‚Ø„ŽïI(´ƒš“èØã#à ÑÒR‘itfr0QT:ûÛKã'Ɖ¨ps‘»üÔ³§b®Ø××—¨£°UÔBá›hyï??Ú0õ, :e刵ÔÂDýväÔp„‰vfÓ½$ÂÓZ÷ïd¶›¨ü(#–êê¬ Ó˜@çy¹¥úcS5ÐT5Qƒê*²Ĭò8+"?ê©]îùÚõ×ßZ‹5EüE©‹øÖH+¢~D åjûrŸDÄ—þ­X.,ËöÑKXýè-UÇãi8q¦UýÀ ¬AÙ¬™ê*LcF†É\iRD)¢IO‰.U‰\Ý3•ú ÷ ê=£ÅÅé‹Óþ{Iý5£ËÕÅ_?NkGóGã÷+ã$µŽÚ  zêKü}…<º¹¿Í°-ŠØŸrg6ì=¬—†õÃÆ6~Y±½PhOjôý£li©°z½:W‰¹·°BÅu`þóùü#£Âs—òŒÎ>µB$ž01þT'ãÎÀ³¾žFöø)ß6æGÃŽÝÔ¥â WDWB£U5|”5ÃZV+{jª-ÈyH ­^_U—ªuüÛÑ‚]Ù²P®Äè²$ÑþŒÙ{D/r<‰¶Tõr]ÙNÄönÚZ}¾®˜JIALTc¯.-WþBÜ¥ÿÓÑøÓLÙ¬¨G¬"®e+›•æ®×õw3ÙVA®»ÇCO•ú#¯4FµHÔó¬]¾õì…ÿè,¬Ü¿Ô_3¬DâÃÕ$_&O]W,%2es´þäD•(]ürÁ^Ë2®|`N½“ºòÉ4â.1-g»´øå"ÓÆE¥ê|é "åÀ’^‹ë϶ÆOÏ£my¢RÞl<êÉ8†Ý984WE«ZSD“GóGýñ_Ä•¥ÑmzêF«þÆåxäÖ©Ûgëë$êÝß‚ø[xF•hK£G¶½ ÐíÐ6?_W<±È^Ë0¢²m;›œˆœM.¼Pófã4ð,®¼ªÈÿkÄZ%÷ü‹²÷ؾüh`v“|Y4ÿºa½4ì70*õ—¨ëz®8õ´©ú°¥ c/Ï6ÆÙ:5§÷8{5é–ÆüþM¡ÐÓÆÏ×M–ÍÊüçódåÊ6gõH—<>õ 9~b6ê6’Þ?êGM+.•>âÎÈæîMŒß`à"¶(lضì_”èáPþú 7Í¿óÛl¸¥[Ýp{èIÚü|]îrZÏq—3"^‹]üÞ¼e‹çî‚îDg5ÌÆGD¯§¥ «v=ã‰ÐÀšž¨T½6ÕSßóEvÕkàÒÀ:êRϺ2Ž l'p»<ø¯€mØ»?«ã‰¿¥Ñ[½½PhOjƒçëQñ ñS6+"Z¶íÀH”»œ´w©_L"í6â?_·3ãÛYEÀ=K›ó£Ü¥“?Ër—göZk IDAT:#¢Û]äT²ÝEéÅ$Ê}Ç­ ã$ÊîU÷ …jãüh¢x”jïÿ|i´ð×yV»ÂSêù_] ¼‘´+ÁûGUâÐþ÷f²©L65ùÚ©‰WNûûÙ™gf?Þ¢¢B»ºÛ<ÎÚËïmxÇ* …ò¶çG[Y·ò7§ôµY.[Üu˜¦×&øªg8’ÍÉ49äG )mÎ6ÍâÕÂüç rå®#'Qám»RX*]zÿ‹Å«…޳·A~ …B“jûó£Í­»øyaö÷3ÜåLc¹Gu9.Wµt{Q,xnjìD¾ÉH€¤´??*éëëò¾ã3ŒÑùóÿ|ÁØŸ%̵ÂâÍù•[ ª’Æ&Ÿ›:ÿÏ0‰îò8k/çG¡P(4ŽnW~´¯¯ï•Ÿ}Êk'?þ/Æy"ÒÔËoôç<‘¨®±ÜCYÒhøÑáÔzÒalÇþzõy¼È@R4¾ ùѾ¾¾³/}š$72’ç.•VŠ£.Ç™{tbŽËS†‘ΤtU*Õ±¥ÓY1ó®™KK‹ŽËóÃÃqÓ˜³]¯Î‹IQó£LcGŠ7м–•Ÿ¾õF¦×Ùfë¯x#ßAúþÑ–á##ùÁ¡>"Z½~oå/ņ+‘C\×wID¢rlU%ZZZìÏåt ++DäŸJý¯…QMೂE¡:•ú«ù_/XM–«MyšUWñ´1È!ÑûG;¨œ‚ÏÀγ]ùQFL>AwàH‚ö—çât.wyulq—_þäJ.{üÙü؉|~xXL¥*bò¿Ƴԓ¯õ¼ìÅ_-°Ù°ÖÂð7Ø‚,ŒÓæö!Ïûwm~º„ïmN¼´R\½~OäVkñÍ–:iW]cÄh훲˜JÓ錌G—vTT <©ý Òø“Sœ©1éT86GŸAjüöþÑÎ*t Û’sÆè£Ë+).-q¦±3“ƒqfˆj~T3ÒmÉŠÉ^ßúÚÄTü­¬Ѭgl]2kJvK~´³÷:€ÊvåG=§+cN"?Z±íìO~tiiñôó'ãwÝ ST`¸Ù%c $~~tphP62&¢…/—*kf*Å{ó£þܤ?.Œ¾ªVzYz<E™Lc«×Ws®MVå,xÏw»QDF N…@ºùS×Íc`w±ùQª%oâÔ\¸ºÄ]G<iÔÿP&$—Ngrý¹t:#ï害pui;† TbÞ?ꉥ ŠàRm-¦—+îäý£ C«°¥­g¸ý-Ü«%Λn3æØZ|» @Ð-ùѱgF®.¥ 42-“orõùºæº©kÌ0 ¦écÏŒtpœ{„ø÷®^_yM5Ç)ÊÕÖbz17ޤÅûGe†O-I_zVi=ª‹Hœ·˜Ä^70ÓÙDûíÊ4°{é–ühê}ì鑱#Üu²é¬a~eš>öôHÒGÕƒø4÷þQ9ó%Š;z5®m:?êŸöTb6¢3›({YØÚ8¥!Ð >Û÷|ÝĤ²:M¼r\üÚÊ{OAs4ý|]}ú#TR®éU[ôbEÅú× ÌzΈ–PÈ“hRô¬å¿BÇŸy ôaüã—öÇÁ’À kÙ¿j;ž‹’ü{æÞÖËÃZ`¯¡mk~ìRäY ‘O5’["õ3¿ÍèÁ7l9ºÍèÑbú@rŸÌvz$ ‹ðçGwà)E‰º„my¾îÎóæ+éœ"ÈièÏ¿?Õé!w#x¾nÛAÜ@ÏÓEùÑV0´QîrCcÜ%¦Q´·ÝÅN·KÙEï•Qrç'u(º·µGò£Üå“¿ÎdSÞŽC.Ñú%¾ç_Y`ä½â×GëO‹¾Ê£‰Ö5§¾ÿB’³/F~DÂò£ýàŠQáUÞ€n [îm&sfŽSÙ°ø×—¨l®¥F…2ôä¹”aˆÙ”iÌv½ODºç{0©ç)hÍ}±hsÄl*QÙæäË“¢„ž´SZ¼Ql¼³`ûé–ûG[D”¿/OÝúÕ›Ö…Ì+³uƒ‘ËSd²ß¼QùͯœïZ͸w úXè#ÚôTóVÆÓZÌGÏ4wÿ( …îeí»óÝ…« _-p—ž(ëÔ}œ‰ú½ðÚâÄßçfùŒ­Ù—N^šxçä?nò”c“ÆèD.#—3èÙ ¯-Úîâù÷ß𴆙è_›h°‰‘®ëoDÞQ_GÅg@F{2Ì|0Ã]®–Àg{Ÿ¯Û"…*ÞVbü6qÃ5N¾=1÷Ê<=q^˜«<ýžóTIgH3ʆ.júó£ãUjHx—zàŒ(PË=¡asH´n§”åqVôóu¡P(Úwç»;óWç¿Zä»?•×9?8g^8óÑû¥2Þ+ÂâQ º¶¨aÔèWOŠA6È®ÛbïþxT £Rģࡧò£ý€~áÝ §^85úä(Ýõ×ÜÑ'ôƉÃÜvµäG¡P(4©vËûG[¤~½®R¢3=÷PÎÙt|5ƒß`q£Ë½Ú[¢<§vÕGªFœ>õ<¶ÔsU‘çܯ¬1’°u[¤‰÷B¡Pè×®ÎÆÇ?þÌ™O?þôÂô=¥{jæG ½W#li̦<íø›•…žµ6Ö]Ä ÃÊåqò£P(­=•SóÒÿS ËäG )½“½ô/¥ÙYi¨Üå;œÝE ? …B¡IµGîm÷@Rz$? Ú‹<ÎB~ …B£µGò£ - ? Ié‘ühCÊfåÒ»‹³ÿ°8û΋׊ôC§Ô• ? …B¡IuoäG*üÙ\ú²\Ù tò¥ÌÀp¶M­÷È@Rzäý£TÊó¶½ð“‰XŠ»öyóh¼»ß?Úµ:}qZì@Fõ›ÀÃÃ÷˜ŸúÙ”ú¿ß#ï ãÒ» åuâÜ!ÒI+Ù®ch£Üåú&n}‰B}ZGw¾´kuæý™vÿ5]DñFQDõçÕ¦{1?:ñúm¹:§wƒF«[ÚƒÛÚm‹z˜™‹Õceù_ß#Ï× cæÝKúÃ&cŒÑ°¡ŠgÃêYnÄèôк<_·- èa<ß“¬gž¯È…·g£“Ïž{Þ`µX*ÿ´qò§Ù±gò]W#³pÿh Ø ÔãQ™íôÚÌ…·gRñã• ;µ?•=Va{&;vb@¾¦ÔƒçM,ä{çöÞÁŸM“  Í­žQÀ^ Çó£ޞͤñ§ÇËVY×Xñv)ÿpžÏŸÈ„­"Þ>¦¾>E–ì©´-ùÑÁ¡A"Z.,¯^_]., vCŒˆxÐ<ß“ÜåZ=?Ú}_Å¡‹"n-½ðë™Ì!cìØXe£œÚŸ*Þ.eû³ÙþÌ›¿ D)ä¢{gæG啺By£ëuÕ˜ÆV¯¯Ê1Å‘(”%«×WEä*¼X÷hþ¨êýKůƒCƒBÕv<íG¬+ÉÔ¨Ú3Z©ž^÷ 'ÙeùÑ#¡?a\ø¯3|£ìؘ¹^Ö÷§Š·J‡s‡³q^ñâ=#^ðÙÛ´’ˆI(0Nõ,¿Šrµwéå 'jzzY½¾êoG¶/bâˆu=^Ö ­gl{ÐÛôf~ô¯g¸Ýò¹ü•OÊ™ƒs­—ÞŸKi##?É,]+Ì(o”'~–Ï$ŒDªSlÄZ»—¶äGǪ̃˜‡Â¢À8‘ŸkúqªùWÿHâxÿhq½.{œ]–ßÌŒË.ýÉdŒÊ剗òŒ±ø“(ðÐJ~Ô“û ôaq¤ÌGʬgœè3Nd½4þhÕñ({™^ËVÖiášÉcÙòøó™C™T&ø&Q‡ó£òþQRr–"¶óßWêïÑS"ó¦bÝøPu]Q"¯û^+b´Ñqónÿ?ÄGþ×k½‘åœs‹³Ã•܃¹#x‘K“¨çý™Æä›^D~T~Nx£7ŸˆhR& "ÊÕ¸S­£–0-–=½xJÔµ<-xj‘Zæ#¶"p.?†«|‰ˆ¦/NŠÏ€'¨’Q©Èü €ˆzäùº§Îg1FD”Éf˜Fl¿×Ï|R`‘Ë=ëŠcŠÁ¡>"R#³Á¡>ùãÛÕWyÖÚaI»ž¯ …B¡{Gûî|wgáêÂÂW |7Ç£D4ûþ¥Éç'*›ÎÊ?Ído”ŒçOÚŸ\¹02‘uiôéÜâ—¦©ñLÿðüÕò?æÎFÇß)ˆE<:8Ô·z}ËÃrÕÏRñk`aDýÀEÛG`GÑ#ñÇ£2 ZoäGç^Ïs÷½…?š¥/Ëýb[\Nĸëè”â.׉¸ë°Ú–fÖŸy¤n»ÿ&á— ÷‡ú– ÷ÄRQQßÓZ˜?šï#¢Õë÷<%Q~4_ï×ãÃÖ].Ü^³¿wy( J‡úξtVîq–BäGÅU»òb4ÞÑkb¹Ëg>˜!"Fõ‡‡ÀÃÃÃúÙ”úÔ ÷νžgs\bsˆÓÁy¢iŒˆŸdo•øQ~’½E·ùo†){0;ðË9¹:Ûr?P]ý%ѪֳîÑ|5”q¡,¡ÚyãæÖ%"O¸ÜpÌ¢òôÅIuŸ^µË»ãzÝÀs'°ÝoEt!¿‘ºúþÑ ±;óÃÕ:s¯çwyN{µü%å4â.GVøí6BÜ¥œöjùZµœe¶N¢/U#9Ãyâ9ªM~D´\¸çYW. ¬ÑŽÁ¿®'bößzzê{å¥Wä>aÝ|ÿh÷}V{„™‹33Îrf®{ï™ÍÊ‘ËIc1õÅk¿Yüå–’Æ£¤Ìaj"ò¤ÕµdøQßÓZ`ï}Éy=~L¬ÖñÇ£]{ÿèî}4`·ÓƒÏ×xýÒÀ/ç^¿tmýœõÐùkëçÌ›9ýFF;©ÿ!=½vúÚú9+{þÚú¹éµÓóû?òo©'•ª–ȸS°zýÞrážœÉüõÃTDaõe‰kªchØWtûþkweÜìk¹šíÚûG ³Èo¤^È "FÌ!®?•¡’)ò£Z…¿¦D~tâQkѦO_7ç^‘iìø;‹bEªQ¦>Ê_åI]Rb8ÏU¯ 3©raÔöe‰4²¾,TûUוÉÁ¨cóäV=5e/ò:£ó£ò}ŸµŽV£ë7¡ÐYvG~4>s¯çuz»\'Vùz&K#â° òõŒZ>L3¥5‘%ÍÈuEMÿu­žykX‰''±–¬Öš2¶j};þ6¯È‰g´Ë…{³LÉ}ÒJ~T4"Þß)^…­¾Ë3ZÅK³ÔßÍŸUÀ®¦7ß?úÅëy¦‘qhiìØÓ%¦Ñ⳦1çF=圈i,›Îæ}×ëÆ¿.wg´6¶Õ6¾TmGúÁ¡A1­ŠÉR,%r©¨ì)A~Ð%ô`~tîõ<q— ëJùÚqóÚŒð ·%½,‘hàõºÑyÍWærgtë>i>?ª¶#'{— Ëâ4ïàРgéêõÕå²øUÄ£þñxÚ€NÑ;ùѤ×ëz&QêÖx´Óqp«÷Rmâ¤Z~TmÙïÕª\*WD~ÐmôN~tàõKT»‹ôø»…°j_¼žçD§‚*ÈxÔŸ×Üsºõ¼[ò£êÔ+[óžùQ@·áÏvïý£‰œ U"¦X¦±¥¥bWLc×ö½Tm'"cÚ°f "? èþüh<_·&Îâ¥iU¾ªyœÕÜóueƒ-Æ£a×înûŽ€FÔãÑíÈξs)ú«vò—íê lmÉzJV¯¯ªWäªISµ¦¨æ¹ùQ@·±ùÑÙw.üé¸8],'iŸ}ç¦Ò.¤]ùQyµm`¹'®].,{Zð”øÛA~Ð)¶ýþÑK¿ýâôK'S÷§ô”®ß¯Ñ‹/¿HDg^>CD²üôK'gß¹Ôzw ½´ñþÑmUäGbÛïå.×S:?qüø‰ãW>¿2~b\ª($"=¥#ËÕÍ´~ÿèv+t–íºTÌÏåo*gÏž½ü»Ë—ÙsÊîô §ËßT2¥³\}}}÷îÝ‹öÑøköõU'³…D÷*­çG·[e¬Üð$3 …¶Qýß“mÎòÚü<úðXþí1VŸ¤Iõ´³Q…˜üöÎ,Ø4íÊn·Š(¯òtùÔæûGÅüœÍeÊßTjOÉQŸäõîÝ»'f;¿Š þàRÖ¡­gô¬é©ш§;ÿº½DïÝn-Þ(îÈ.€`ä7Rûó£Dd–*™‡R/¾~†ˆ¸K/¾~FýáÍf¹Äl'3œZî)QõŸ%kDªÝETëIäߨkó£P(Ú%Úwç»;óWç¿Zä.™íô@áÏ6wmÒÄ£€ÝB=mo~ìjÚxÿ¨ÚN`‰8©;84ˆx°‹ð|Or—ßWϾ¶ö:ùQOŒÈ)q~4¬DL¥GóG¶]ò£ íÍŠ<¨È‰zjŠ©´a;Ðm ? ¢hK~T\£+&QõþQ ŠJvÛuÿ(ØÕ´ëþQõÞPÿ¢þ¥þÜ? èNü÷"? ê´1?Ú.€®ùQ‹Öó£íRèNä7U›Ÿ¯ z~´#ï-Þ(Î|0Óð42 …î˜ú¿'‘uÚ•m‹N¾49pd¯òt'òûªýÏ×»—n{ÿhñFqç6’ ¿©ð®ÉB¡Ph—kßïîÌ__üj‘»|öÃY{˜É—'ÅgÀʨTd+…@Dx¾.¨ÓÆçëB¡PèѾ;ßÝY¸º°ðÕG<ºçñÇ£2 È‚äqò£P(­È‚:È@Ru…B¡Ð¤Šü(¨ƒü($ùQ€<Îjc~tph0ð§½Ç†íjY6"ýŽÛÊ~;~” …Bã(ò£ ÎÎäGåIÛ¾®géàÐàvôÒvv¸;@{A~ÔÙ±ü¨Ú‹P5þ“åjpIµùF›béraY–¨>0N Œ8Õ^ãÑÀxº¡—êÙRµ;Ϩ’Ž …vD‘uv&?ê¿d‰º(0J‹Ýb.òû†]G¯ÇGoHÓÝùGØy4äG^;K!ò£â­/òe<ÆÛZ–––Ô’‘‘µO/½ /ÎÍF¬ëy™QàxÔµü^´VÇÓrs^FÆ£ ÛMŒ¼´RŠó×B¡M«úm&ï°v¼tø±á°6KdŒ%Jd¤%ÓœaëF—û—vÊ =š?Ú°NÓ½xö9 ½¬üe…|ß0È‚:ÌÑêõÕ岌±¸Ë=§:ÃÖ.÷/í”çµl¨Ü®ˆ½ÑJ/P(t'õ>&ß?Z{÷$س¾ÔsäÅ)n<¡j/ÑѤšö‹SSD{jä·Mñ¥'znXî)‰S§•¨ …î˜âþQ€<ÎÚ¦çëzz‘×Îø¯tõ\…«Öô·ìi'l-õ:^u$q¼XW½£&ºQKÔLxOÿ©ƒØê8ÀÞÕý/ö¿Ç˜ý·‹ˆ®âŒSýƒÊ­–-ˆ‘û·ETvþ¾ºöÓ¸?ik¼(·K-!å¿)ð¯ìiÙÓlDݲߤâþQ€ztßñûG=Q²zÔ¹\XöÙSÇÇ9òõïÿ:ºåæ4z›Ûê°-ŠÞê¤cóøˆø¸ÅÏC„Êω'µLòðŸIDATv‰³íªíDÔ—‘ns{Ìßã|º÷§:€Ö?c^="ÿ£wÅ~Sõ>™%j¨G[QéNj`4&=åI›À¨+¦y„.û%j榕h©éˆ!¢DÝ'{À³Eq¶:þØ<½ËÝö—jýó¡jôã2=#Q?W­ìÿ]ñéŠ8ÛÛ囸/èà¥TäGAŽäGÃòBò;âDÓraY¨Ü„掎cùÊe¹ç"ˆæŽ|£sÀa{ p„¯îŸÀ:ž-йÕ1Gâï] ›Ž3 Rg.ÎDdOåß+bœêÙ˜{»Ë?]MüÉ=Cµÿµæþ³’úhÝÉý–H‘u:•m"Âð×WKaÑXœ+£ÛW5iŽ'~‰êËoÿè֢ǫ›^Ës•fsû*ég)ι ÿø[ÙWÑÛµåÓÕâÿWs¾á¹Ï66wµù¶î·øŠü(@=ößü¨ˆ0ª&(¶ðçQÔ,‹ôž85¬_WÌÖâ+L¹­~ïÅX¹®ßËÊzƒ•íoÌÚà:Åöû™eÇñ¤ð™4+­5æ¤J%§1ßw U”¾7U\k…™}q´ñÕ?›=wu»\ÌšŒ1á1"%äÖj“KDÌᜈ9.׉9î–û©ŸÑëÿ%¿ }‘ÆœŠ×5ÃÙ°¥/z¶ÙÛI¼a”7lÝeŽËS†Q¶ƒ½%<ñÔ~çºK~o¯øLÚ(%òŒR‰SÅ›¥R¹Žï5Kkß×kÃ|©LÜç7‹k |îYXÝ.ÿ„Y¸¿M~è s)‘?šYºgµÆß·h£iÿTf©°…~~×{"Ɖ‘ã::Ó×Ñ5]LM•YŒ8#Æ]n0C”È¥3*sÙ""‡tÇu^¹ð ù©Ny×?ºî™ý½Ñìû³²÷‰óD¤1éš~íýkLcr4Œ±Ñ3£º¦üÑÇJŸœ\ñ1¨ìÚ•)Y£²kŸ>•=yÂt¾£Wþ~^-oÒë{‰ˆ¾º100ÒX;SoåˆhâÕé-‹.ÿÓ‚¨3v*3t½É¯ªåer9wy¶7ܯÖüŠôÇó÷+>w(–Ïß«ú'6ûûeâ~Ÿ ôCqüÑLþ^k|á^Ù©ç—ý“áþ®Õ˜n•z³_ÚZ¿蟅ßE~þ#"éD¤kzm¶Òi$æ?ƒ²D JH#îrÚC¤‘N:¥XJ´#¦ÉŠRÍ‹v6õ²¹÷—ο$üØøØìog‰HLÕº¦kbÊu\gìű뿽.£ÕÑ3£"N}á¯^øø£‰Ufl›—‰tî:D:wk~øI“ˆô}Äö–m›ÖiÈ“ãwyX¿1<ÑÒÒ\öð ð¦I«¥%ÃÈr·<ðdJt±øÕ\6;Ì]‡4ÝÚ¨¬Ë´”µQžúéÍýÏ<ßëTÊYʲ­`¿a‘«s×a{«ž¶7eÙoìM½±Ù¯×¼µns—TOäûkÞÜŸ*–½YóÌâºÍyÕ—T_òûLï&_X ò‡ûÕ?pÈ,¬•øF€Ï¯JŸ©ù'6ù•Õ’-ýýŠRýQ/ú|/‰2ž¿_´m"r†cú{IüÓ±üBk|ßÂÝ ÿLã~¤¿¿‹wùgCrZµ7¸ðÆf_ÚTNo¤l;Äow‰»Ž±¿æÍý)Û®y«æÍšO›–Ík¾Ä9÷úÌP_\S¼,ïÝì×jÞªú¬êßä «œoøü¡Ìfo ?àó¶ðOlòyÕßòGëû¡&ý½zþÉLþžmÛ¿p?™ÏÇñ÷êøá§Ã|_roû»Aþ™X~!–/ÃïfψуJ¼(æ£J´ªù¢UH‰V+uÜÊd ¢ÕJ ªÌ€5/cbÄœX©¿¹÷Ù÷gkõÙ¦uµwÞ{gb|BÎÕ£/ŽV:w+sþÇ7>G6·‰ß(1NåêYoÆ©|úøÀüçÅù/–ŠÅÓ¹§2Üc¼—SÙÜO´‡FS ·ÊCO¥FN°+ïrÎíù/ŠóZd›~slòG™—^›ÿñÐ詌e9—Þ˜+oð¾^£pU× "¢=té¯ÏÌÿiåäs}§O¤g~7Ÿy,=õ³agƒ.¾zýô³“/ö-|¹@ÜãQÇVY‰o”‰hþOK£§††3s_,<ŸÉ/•³½)Òˆ87˜~ùåœãÒ䫳?;“™ûS~ö÷ùá§OÑèÄ4ÿ®üé¿\Rûûr6 à ]§>n,|¹R(Ìg³ÃöºE.ãĽ©Òz™\òz#e¯—ÅQ˜a¤ìRˆ_/sNDÜØŸ²KŸÞoZ>mZ%«æ×‚üšÏ0‹«Š_³ø†Ï÷nö«5oIÈ´V-{ƒˆxöY¬ùLñ¾âW-Û&"ž}b³¯Di›üàÑL!Ìß òO†û»u|%ò[÷ù§›ñYկܭçŸÉ®Ü-ÙëN /5íGžÉæo…ùb€ÿÞf·(®2kÄߪç¿_ßËs U*Õ|q}³ßàܵ3½›}©æ­ªÏ>nZ¥²-ýjÍU¿fUü!³¸fÙvÕ¯øÕ?a.ݯçšK«Š¿o ?x4Sß?™)(>߶׃ü½f|Iõ%áŸ÷wK¥õ²ÇGø{õü3›üBRw³/5ä¿ìG¾—ÝäoÁÃ×÷ÜåbF¨L„¬­2U¢UÆdxZ‰VYåuM×™Î].³§¤U"Qƒ•T«L8j‰¨£3]¦uý½{¢UtƘ&fãkï_{qÌqôÊäDüãù˜»<ÅR•›Ëi•©:ülšˆf®ŽÉÙëôsCÓ¿Ÿæ"âtˆsâ.#"Ò‰sž=”úûŸŽêYëí!âÄ9×÷¿)fuÍ â©}1‘;Ù¶mšDäˆ`nÑèó¹Ñçs¢Ç”¡“C\óŽM™\+ž?à_,û²æØó¹Ô£4÷Çüä¹A¦éœxï£:ý07öÃJ³™´9ÿÇ¥j¿d¤‚ú}P‰ï-ÛÎ<Î][D¥l¯aoðJô©zðmÅoT¶«×ÛU¿ß,Ùµ5اÍÒz=À,V£ÛÞfq½,"ÎM¾×,–‚½U*Û²|­‰>ž õ¥jT*ÊeTäžÈ¤?š)¬ÖóOf «–ˆöTüÉìÒªe¯sá þélá¾UÚ~ÿL¶p/™ÏW×ñûR¤ÿ^6¯üݪÿ~ÍŸþþÀÂÝbkü=ø]äEdT¹„¶z'Ëüçó3¿›Qc'½š??>üýa¦1Q"¢UôÊHWD¢a‘.‘KòJ`îz{'"y–WD«b.xá¯^Ð*“<±ë]éÅ—dûñ¿T¢U"å<5#â•+om¦1Nöéï÷Í|”ÏÿyI¬;úÜàð‰¾¡ÃFq•*ëOŒ*9N>ù“A}Û›.úÇÓÅR°·Je.ü¡ŒµVñ‡2Å’Å7"ý™âšâWƒüÑš<š)ÜWüªÅmN.|RõÙÂ}Õ—…Ó·méí@¯Õþ™Íþ¾e¯ù{ ú‘g²yé¿ÏßMäêûï7çoU¼˜íRlÿƒPŸ‡ß}^\O$³žLcýþ#R®ï%—äM¤ï¿ÿþÈFäÕFºø;_ï(ò*b9ßÕâQM‰V«½Ÿ?Ö»&ÏA3Æ®ýöÚÙ3gýѪ¸ûÇ­r—:«3šù`Žˆ˜fñ9­8|¢ïÌóC߸.†›=˜y.KDsŸ-s‰ˆg3û³"TÍ4n|¶2v¦ï_ŽÏünÑÞ s?[¹U^]/UªÑ§KDlîO…3?Ìþ ÇËTX³3û ˶ÿlŽPËȘղœbÑÉdôŸ-TΡñù?ǘ}>g—yÙ&}/9ôÅ—…ò¥R4<8°p«xÆQúM§-»´ø¥%4Á‰‹Ü*ÛkØv5ÏjØ6wY5U|ýhÕ°m»¡¦K>.­‡xÛgú@º´nW#Ôt1Ð÷¦‹¥š·6ûj´š±Â¢Ò@H‰PÃüÑZÎÕ¡®U£Ò£j„Z‹>žÌ;!õøR+½7*m}d9¯F¡þûù»1ü½ú~á^±´¦D$Ñþ wk>¿Ù¯Âï2/ó¬\¹ÇTÍnÊkƒdNTF«rZ5e^V}éµë“›ú-9ßYºVmãm¤*Ñ*`§SÕhUxÛ&"z`§S/ÑêÍ´mW|¯™.Ù¥ÿXº´^ÏgÒ¥õq¢<›IýÁt±$}¯ê-qãÍžÍöZkEá²½ÅR‘oDúýŵz~ ·x¿âz 5Ÿ-¬–¹Íé|j³Q©ß‹¨ñ?>˜Ü‹ÈÒãŸçï5ì‚ýñš9>ów[áO äïƒý½¢]RÊ[êO?W>£ý­šÏß*–àw·¿ñÙ'uåßíÉŸLNÿó´'^“ßø‹ã"q§z R-Z%:;~Öq”–ª]¥ÕNöŠhµò÷]óö~ý£ëž§>||ããþꦱžûË¿©gE÷›¢UM'—H§•ÂÊ /^ÉÈéDŽÔ²mQÊ0ÔrkÝ&âùù)r)÷ÿ\"âbþNí5‰‡“˜r#"âœ3ÍH¬Ì‰‹©ˆ83 C×tk½HDæþ4Ñ&ï¸ß°«imnìMëÕð}ò'Ç _—È¥ì@zøÙ¾O?Ï¿þÆ s¿!Z`ÌHíeŽKär]K‘æXë%"2÷gä'’÷N{ ¥^¶7l"2Œ4q.âJ}ftݱ,›ˆg2YÎËô@'rؾqΑcìKqéS)¾¡xι#¼É¹]ñš|#À§5méMÓ¶ëùÇLÛ¶ùw^ßû˜Y’>“)­—½½^²ýþ`Æ^/Ùe"r²3V Ïf¬R ÏZ¥’]æDNöpÖZ«øÃÙ¢êK%û[Nä <•-®Ö÷Öj©ô-'rŽf ÷ö¹Âj±dq"çø³¹Âývøã¹Â½?r<—ßR"—¿«ø{ÅÒ7­õCù{áO?7´p·qŸ¿[X…ß­¾¸–¿9ÿ·«ùQå)ž+{uÒE„Z; Ltý÷×Gžáœ{æ;ï=¯JnUÔq\G×õÙßΞ~þ´mÛž¾1ÿx´Ú:Õ™Ù­VDt³Gw8º¢©GMçã)7ö“¾G—Q¦ifÔ¥D޹¯V’Jé¢FNj_ÆÓ¾X—|^×uÒ(¥ÔåLKee†¿×G{Èqhþó•_þfŽ1ÚÔ‚®“ãèzJ´cìOWF¢§ÊNY|¢Ô¾T™—uª|FÚÇ*~_ªÌ)Uóe"ÝØO©Tª¼QÖIwÈ1S)Kñâc‡óÑ”m+~Cc–Ömâä“͘«Á>³º^ªøƒ™R©Ä#}.›)®)¾Tâ>8S\ ôÙâÚªðCÙÂj‰oð¿Vâ¶R.üS›|qµdÛÜ!gø©lAúÁìÒý†}niµh¯Wýýª6™iÆÏ-Ý ö [êOäî*þ^Ñ.yýh`ÛöÜK†aÄ_«%jÛ%’Û[#c¯Q[ª1rëx]K9T&—q]O9êù})Ç ð©})î8â’æT*Å¿“Þä¼ì8>ÿ¨É7¼¸™§âMÓ¶ëùÇLÛ.;ßÏS²­ŠÏdJë5o¯[åHŸ=˜)­[år¤ÏfJ%é³¥RI\¶¦úÜálq-Ä—Jåo"žÈׂ½µV²¾uˆøÐ`¶x_úâýÕý³Åû«–ÕJ?òìÀ’ôÇ–îµÃŸXº+ýÐÒ½‚õM#~ôÄÐB]ÿÜPþn¡Xߋߔñ§†ò·àwµ'b¥Ráæü;¶m'ViѺþûëÃÏ Wî‰M­ŠPĬܿÑѪ˜7{þïÿ÷+Óruž¯=‚© Å“/^ÎfG¸K¬z±r]Ow\žJ¥cÖ‡‡‡ßuž:` ðï‹Åù›ÿcŠ»¼;*VÝ)lö·³§Onxõë]yn$æê=ïü×w˜ÆªC¯£Óä‹w?"`{É’–«¸$MDç0( ÝNÅsƒÛFßëÙÅ êgÏòü£8sݤ~.õiG­Õ°îäölìÓön«˜ß„6>7 …BÛ®ˆY€V‚wÝ@¡P(ÚJÕ KÞîd/ …B¡]£Zv ÛöA@¡P(Ú5Š<+ÐJg…B¡P(4±Î}>÷Å_*bV 1_|ñÅñãÇ!f…B¡P(4±:®¶1+ĬP( …¶R³­1+ …B¡­TĬ@+AÌ …B¡Ph+1+ÐJú÷…-BÌ …B¡PhbÍ/åWî¬*bV • f…B¡P(´•Úsáå ¼Ý/Üv޾öÓ×(ˆéw§Û>6( ÝÚ3~n\üédÄ8qø]ë'_žÌ äòKùÀ/Ê•·¯tÈ8áááá;ÙO¾<©‰?3ïÍÐ`ËDdfR[Ñ8h!ç'r9"b SÑ@·2ýîôôÕ阕ÅßÒG¸Ë±­Mñk‹0­îä”É]NÕ«ÉùæÌ#ÆÛ½€B¡Ð¶hÄ•ÀªŠ¿¥•…ÿóúÇøI·U˜ú?uÝ- K¶O`›‰F…î8%¢ÅÅ|¬úÄH<ƒ‰S ¦ºÌÁ~9KŠF¯Uäù²[´x¾ì¥ŸüÙešÍwZ‹ü0QÈÓ—8qVïÈN„GêIdØÄ´Úœº–g²‘ëúkÆ)ñ—ËiI­ã™>E¹ÚNœ¾üÞ?’°öã|Ò°m¦aíGlÙrÄROkIG…îP­žTâ$žÁD-Â̤ÌLjâÕѱ £¯ýõÌô{Ó3ïoRQ¡UÝ­€W³ ßÏêiÇSâY*ÿ‚‹ç˜¨KýY[u©š» ƒHsÊy]]*;ÏOñ0ðé*þÏñéägñ·àyzKüm(?‹[Åߪªcð ÏR™3ö´±¡Ð.Sñ}qYn˜?¨<ë¶QþÆ)Ü*ZV‰»Ótr‰4’ž¬ïp&s‘îv £mEž5p©'è_WÆýGúåŽÉúÑcP÷/UË=#ôÄÙa#þtu?KÝñÇsüv¤z¶¡Ç«KåÝíA(´ktqq%«;:áÅO e÷³6ÌÂgù¹Oæ­ê´Ê]GN«ÂÛv9¿X˜½úéÂgù6޳»iáý¬j¬é,Õ^d‰_ú—zÖò—ø•”x4ðMþNÅRÏå?a³¿µh¯nµñˆñ~¢è:qÚ‘*?¾g „õ½4bÕù@ IDATB¡]£L£ÜѬŒP=¾r‹)1ꈘեù/op—3eÒ5æ¸%U ÷ÄÒ±Ç&Û9ή&0Ï*£U¡<^Ì*Ú$þrOIàÍ‘a턵Ø‹ˆ·úôû£½°+fe¹<8»RWÍ/ú?]à=‹ø;bü‰Jâ´£ŽÜ3˜˜}.؃PhרȤ†E«[•g•ôôôôñ¾5Œ¡S¹Ëÿ8eìÍFÅÕüÂݹ¥{óª’Æ&~8yù§†OåZ>TàA5óÜ`yň´HÉáùÕßNXËa½„åkëÞáêÉzFî¹ÆÇ_ÇÿIU¾»7p+Õ-‰ÓNœÖhóñD¢ë6|ç.ºƒ4,ZÝŽ¸Ñ›Íœ|>7|*—È/-yÖ3“ÿ8ž¥žÕó¢µÀfÃZ ÃßH` ²0N›[‡<:ÃûY¡P(TÕøyÖGÔ¼KKàÄ K+Ë·+“„håΦè#F«_[ù;…RÉâ"«çÓ˜ãò“ωjbrõ¬=ÏÅŸ®â\u•tò ›¿£¶Ï©5¯ø$&( Ý*ò©êÂ~ODÔò<ëÇßÿo/q—/}µ2ó^~öýÊ©à¾Ã¤þó#ò¬Lc2ÏÊ”ÈU×60ð"áøAdôø·"p —;!B•àý¬P(­m˳ ÔY$æä!ò¬ŽËs‡³ž<ë‹óg~|:æµÁžô*…ç>ý%ÑKÕKëú‡ÖÔ6ƒ<+ÒyVRf”D³…¸68§°úµUX-È<«c„=UÂò¬aKÕhRxõ<­¿$Yß“—õ&mv;‘GgȳB¡P¨ªñó¬[³RHÐAõÚ`Êf2ä’ãw9ÓXaµ0r|Äì5’ÞÏªŽ¤sNºv,þ˜U #WĬ€Ý‰³†E«Ò×bÖö>7˜ˆÊEGäY‰“ãVr«"ϪWdQ.:ídwƒ<+ …Fk›ó¬”$f-ã̶8ÿçyq?«¼ñFèñÁaq?ëüg‹ÃÏ 6¹‚hg€@ȳjb6n9ñOÀζÈ]G\¾”ÒXú ©k¬\æêµÁ}pÃ0ŒùÏGÏoÅh„Wψ<ëÊY¢.íLyw¦öjbðððð­ðCDÄ]>8˜[\Ì3‰hÕïå|ÚþwÝ ?78ÿÙbÚÐI£b©È76Ŭŵ¢®1Ã0˜¦?7ØÆqîÔû·šynp[”SðÙh˜É ³¤ÜϺ3ÞÏšzL>18|j»N&1 ïLÓ‡OàTðÒ5yVh- äYÛ³Q*£ÑØ…“â›Éï‚ÆhùûYÛ¥ÐZ”¿Q‘ë–¿Ÿì\äÑÙN¼ŸµíW¹ºù¦Ï ;ž5QÔØ¤¿nÉÖ©8Z |J³Ç4CÏfšoXüBøi Ù|ª Ûƒü ÿ¹ÁÚN?Ò¿taŠ‘ÎÉ!Ò‰œºþòÕÉv¹Qó¬Lcòª`‘g­œ ¦úWçRõÚm¹¢¸îÇlÕ3Cüï>jI³‰ZKZ L 1Ô¿caWwbžµ mˆ»Ü¨œã¦ho» ío‡ÒÂ<+U'WOù±Ü1Ù\*^E¾|{Y.•^mA]ª®Ø»xxdØ‹rÃ^šg•ºôø^Ä¿#Y3bž¾â¼3¸G÷[w)]FyÖ­ºŸuÛà.ŸøÙ€™Iy8¹Dûj—_¾0Ï(ôêâm8¢o¦‹žä/9hl$2þkì~V"º™¿y,wLF®r­›ù›¢Žg)õék©^Ö‘mÿ‘~±Ô?ZU7°šÜ/Ñóq¢Æ#Ž b#éq@œãD/¥ ûPò¬qïgÝñyÖÚø§üMÑúä²õÞ„sõ$ýá¥ò'¯—¿±è;GÖäüˆDõ¨¿µ´pF”/žká8ýM5™g%uÄ[JJôéñžú²dùö²?&–G‹¤¼h!ÑÉUu•èÕýoYh/ #l­ùPt äYÛ?k“ˆcë[kòÞë—JSæwK³uƒ‘ËSTd¿¸XþÅëηNµf²;býW|„•¨ÿë©xùL`;þÖbŽ0bÌþ.ü=R«ïgÓ^ÿ‘~O¹:åÔó%u½\1º÷øÄ¹œ'Œ°wëúÛ”ï5j¬—†×Ic¡™MÀŽC9÷÷~ÖGÔ#ýˆ8F˜YŸÑ÷ÒñSi®äiŒþ•é.K•,ýï/Vk&x¬¿ˆHÔ¿¡%ž L­–!‹X1æß,}ÿ#P‡˜gõG„ñcV1¹Š¹j®T”«}Åô"N Ì­ú£á8ñŽóëkå´Iša:U¢®€˜UžÓóü ü»éÿç?xoæ/uÄÒÀ3Rc½ äÑYó÷³ÊI4QlZ׫±oÄý¬7ç,ã ®sõf6xÇÆ|;0ÚB÷³vèµÁ¹¸5ÅÑÄTö2Q–œïýâì‹g¯]½–2SD¤ÿê2™Õš¶šg ,÷ÿy ,‰;ÖæxX½DÅ_è)I:£¨øó¬Í<7X\v¤zy•¯¼~Xí7ÐËk—D‰-žµ.þ£¨˜+†5å.=ûKvñP¹Ž×ÿÅSwŸÝÖxÊÄSöSÿw+Æ@çàɳÆynðŽ¿ŸÕsX ïÓ§Þš}q”s¾0¿@{<5ƒó¬êÙ]ÿ¢º“ëv§÷À:ÑH«îgUïdõ—„-¥jŒèÕëŠýky®Löl‡ˆ’Àmç˜)¢Ùè#êö[w/ÇsÝ‘xJØtt+ê_›˜÷³vIžÕS¢3={0ël8¾šÞ˜5pÖ”‹ÂvøBÄøËåòä½×¯Øï›ß.f ÒÓ5–rŠ©º\þÅëNÙ¡Êseýo¿‘^-§þ#=¢Døc¹žÀò@¦j;j‰\W]ê¯I0*¿žÖëø?¯g›°ð7Þ4 þ–ƒ¶ÿ¦µ–o/‹÷°2É·ºnC¿²\ @Œ¡nïIGØð'ªûyå°ÅÈ…‰þ¼P(4¦†½åFõDDâL;:Ï*Ž®¬]Ñ÷Ò싳—ÌŒED‘ËéOÌÙà©’¥¿öJµf@žµêÉãÕ(Ö}ʓƞú§§Y"£Ìˆ‘Èø2lÝÀk}ûôˆ:a㔽ližõfþ&mŽMe_ýGúåRQI•QWõ³x£ÞèLmÙ߯ǫê)S”'òóÄ‚žFǻџ(,RCû?‘Zß³tgEäPh'hüx‰ˆ(K¿¸ý÷/œyáÃ÷>L™)"Ò߸DD©jMž•ˆ¼WÉj›7xé«%dì]Ãn|nðÅß ]º:tñ7C—®×õê´Jµ#‚â¹ÁP(­ñó¬;>fmĬ’¾Ÿ1+ ›hà¹Áz?ëöÀ]¾ôUí~Íݬê6% ßÏš¨& …v¾Š¿iñïgíþ˜Õ*–>)–JÜØÏÍÃéágú6_ƈˆ&Î#Ï ìÆ((A=™øÄß · õî³"Ï „<«ÊÌ›Ÿò’nm” Í´Ý"Ü,#V^w꯼‹©‚ ϬWÞ¾"6£Ú«,àáÛåÅY¥øßá™wgÚ>æNðI·ñ]õÜà0&þöäåóó†fÚ´À4\qLÁM#Õî¡u4LyæHÃÏ în¾:½[€¤¬ÜY‡¿ûÛË)ø 客í&4þsƒ5y^¸Ë˜zsÆ<ʬ»¦ACÜ匈»ÜÜo¤ºð0¢yÔ<+Ó˜ŒV7ÙQ²ã»¶Ç—[¤mÝQÔ¸òö•™÷føöªç¢v¡6¶Ý„‹VwÆûY›äòS¦aŒœ9}.ëGjç2#?Éœ<5ÔîÑu"Ûð~ÖnR:f¾½ð;Úqª>7Øï»ê¹Á~.¿1•9:1T^·I£œ»|äTvèû3|*¸§Š§d»†ÜAÈ£³–?7¸›€N o¯ç.h"ÿÜàGºìüòÓÙÞÌðñaÇæºÆJkVß¡,c,÷œ©¾«U¥§§çaOÉ.œ\Õc´ÀȺ[€Fh$êÚ|v šHâUÕ‹ÍÛ¡yÖüÉ‹˜=š ¿¡ãò?LeÏäsåu‹˜^\+i#Ók^|ËŒèKÌ rZì¶9yÖøÚÖ@~kêºðkjã¯ØSyÕtNÖ™gíÄkƒ»™õò?L±ÜгY«TN©âýbæP&s0jN•ø'WÏDÛõlÃûY»IèšùövÂ﨣4âªéÉ ³•:»çý¬‚Ëÿ0ÅìÜð©ÌÜï,¶W·Ö¬t¯‘9kZìÎs¿~äÑ\Kò¬ò  òw¹úNÐú~P:¾½åYý¿âÆzïp%¢•;+ù¥¼GeÝ•g½üƳs#Ïg—-ré‹ß[f¯Ùw(îóååK2N³¬zS„é2Ôã¸æó¬‚åÛËòÓ˜0ž:m?bmàsÐ^‹Ì[—ª?d":–;ÖXï®u·Lü<ëŽnðÌof3{‡‡ŸÏ,-ZDÄ7ì‘›™ÞÐë•üx._ ,Œ0ÝÁ=7XmÓsüXG{JükAË:j;þ£l/ˆYÁN¤™oo3kI¯þÊÔ’ˆóRþßlÝ_ôöDÉq¢ùøÏ Þñ÷³27;ôl¦ðU™ñ ~ú\Ö0ŒøÓ*lÑý¬j›aåÒ‹ŸŸ8(î?Ò¯.=–;æ)—A0m>‚uD¹êeÀ^³‚ÈEfu×òœsòüÊäÓó+Žè]þ*å™-µ5Ú–(9N4¿‹îg-Þ·þXäÄÓY{ð‡ió€™zÏ/lytÖ’<«À#ª}ù½¿äfþ¦„a-,ß^ô½ f;‘-ŠÌ•ª?dù›Šó+ã.—³¬ˆAÕ:jk²Ž¿…f>oÒÏ]gåY1kÍ6ö—3½éÜÞ½Ú,ê1ZËó¬žò@/{uvûô‹#Ù8õ£{AÌ v"[™*UÈž3=jkq¼ƒÊry’ÉsþÉ_sKµn/»%Ï:uaSÙ|¼<:~²o ¯ÝÃÙÁlgžÕSîñË·—oæoFSujôDz1½§Ĭ`'²E‘Yݵ⟠ëÑÿ)äoYF®ñ;K·4fEžµFêÅ´ÔØ…ÑvdÇÓ yÖÀúqj6㳂ËEfu×Jêeœ*ï %;+{‘‘kØ8厉ˆYž¯’% oDÑünɳN¼:zñ7xÂ~+‘Gg-̳ƌYåïM½0°&UpåIݺõ£{AÌ v"[™*U5TýõEü*åIqÎTqå`u-µ5ùK§ ß`«"׺­Åϳ¶øL3oÎòÈÇJMüíX«ú[zŒÖüûYåA(…™zŽRÕúµÄÓZD夽 f;‘-ŠÌüêÿÉPÐ/Ë_3,þ-‡µ&ÿ×oÛ•çê|3×°¨Óž÷³Î¼9{ú'#Lcä‰3Î>?óæ,&×Ï Ž¯mÝQÔhà·¦®Û ¿¦6þŠ=%â,]à'ÎÏÈúÛý~ÖÙß|zæÜéÔ£)=¥ëêDôÒù—ˆèìù³D$ËÏœ;=óælóÝÖ‚÷³&R:f¾½ð;ê4]¹³ø¯ö7pûó¬ÜåzJ'¢“§Nž%Øçïg T:¾½x?k3Ú†ûYå¬>ôÄðÔ¯®]{ëé_½sí­¥zb˜»µšÛî}yR¶è~ÖnU:f¾½ð;Úqÿ~Ö–],æêLÖ´¾.3­Væ=È7¤úUT³£Z"gMõùøþט«xêG4âéοn7÷³Æ×•;+ÓïNóv_‚…6ö¿vic¿ýøïgÕx‹ŽÁE;ÅB9“M$"¦‘0XPÌÚÑÓª¬û†5³¯nÅlÛÌý¬]©+wV¶bËÐI¿Ãø øíÇ¿Ÿ5*ÏÚw8ꟇjÌj™S/ýÍYQòÒßœUÿmuž5NJ5ðm¬yV( Ö¶åY_)ýûkÚ_ª1+K³ª‰UO’5> ¯¸Ëimžuqq±í§m¡P(´UZýئ<ë;鿌­ý;ý­áÖæYÕ`´î¬©N®žÂsƒ¡P(TÕøÏ nYÌúé'Ÿ®Þ)MþÝDtµé_ÍôN‹§óƒÎyV¤yÖ“§NöNOÿjfæÍÙÅ´Ú™ Ï …B¡ÑÚ†<+ØÑ Ï ´3Ï ºyt†<+ …ªÚ†<+ØÑ Ï ´3Ï v4ȳB¡Ph´"Ï ’<+‚<+hyt†<+ …ªŠ<+Hò¬ò¬ Ag…B¡ÐhEž$yVyVÐ,òè yV( U5~žUS_Ö Ó˜Ô•;+2rß“™ÿ6Ã;àEÄP(º:,þ..®äorG"¼øCªqyV°)ÏÊ4Öw¸oåÎ ¯æY+_/b‰ƒîeòüäʼnÜ@®Ý[öoÃLœŸ¡êßF¡..æý^ͳ"fDDœ*ß­R5f•KÛ7R°UpÂþíf°Fù¹Š¥âo)ò¬`¼šQ@ž …BUŸg}Dž€‚ò¬jI'ë±Ü±þ#ýR·¢ýDK·b Ð&÷Zÿ‘þèo öÚ6ì‘6þN›T¡ª‘«ß‰˜yV°Óïgí?Ò3sùö²Ô–÷¢nŸÀ¥ýGúã×ï@íäýÛò½FDê·Eî»·×vÖþmûï´Ùmû~ÖGXõ¼0ØÍæY=Çk2O³ƒT{¢õx90jñS«Û'péòíåøõ;Pwâþ­«ê^h¦¼ ´“÷ï¶ýN“ŽŠ)ç9Øæ<«ß#Ï B‘Gg;+Ϻ|{¹ÿH¿§¼ÿH¿<:V—Êòþ#ýª—¿õÈÚÍD,U·at}èö¨ºGÂÊÅw`"hÛ§IUýnpäYAèGm;+Ï*~–êñéòíeéÕO§–«^Ö\¾½œ4š‘+Ê#ÜèúÐíѰ½@D2N ûž@·BÛû;m`´j ò¬ ;=ÏJÕ#bÏñ©8ÚÂ1Û «©–«Íz–Êãîø=vˆvþþm@#öf`žoÇíµ¸Ûø;UU.¨ã݆±ó¬¸ŸQ²ûYwŠË‡œD$~9MF9ÒËf=¨5ÃÚéXíä<\ÃZwoŠ#!ý츽Öûw;§jÍè¥ÁÛ÷³‚ÆGg;+Ϩê'ò|ºèµ³2Ñ-¨KÅñxü¡ÛóˆÞ_I¿'ЭØGñ·?5ô;mRñÜ`Ð ê1šÿ¹Áp„¨ê Xy(ê91ëɨE «+zle”ãïNmGÖñÔ—•Û¾Åv‰Fì,ÿþK=õ;áSt¶ýwÚäøñÜ`ŒøÏ –u:JÅõ{LóŽP-÷—z±næozZ“99á=cP—FÔïÌ­×ùû·åß°ýåÙ³]µ5:`ÿ¶ýwÚühc>7÷³"êÚûYPu;ì*Ý%ûw×j—í_ÁvoÃØ÷³j§‚‚7¨‚7NŠl¡T‚I¬°˜. j†“–ÛmªÙž ­–Ò6ˆí³À6+¬±N9¬‘–Þy®‡yÂ+o¿kî{é·ëîÙn}ÀR[¯Šêo­¦Nñ¿WŒ¨Â褈WŒqÁï¹òÈ$#&rÉ(§¬×É*·ì2[,¿,óÌ`ÅLóÍ8¿%_Î<÷¬•Í>-4‚;môÑñ!­ôÒD3íôÓ4 õÔHKMõÕA[õÖ8kÍõ×/{=Hd—möÙh§­öÚñY4V 4 ÷Üt×m÷Ýxç­÷þÞ|÷í÷߀.øà„nøáˆ'.7 DûöUq+.ùä”Wnùå˜g®yáq;îU䛇.ú褗núéyw.£Ø@Žúë°Ç.û쯫~ ë?¹Nûî¼÷îûïxÛ~ëã¼:ËSäÔüq½5À›ÝÉÓ}áÏ‹>}ß×;½ÜÓëü÷ß ßÉH…¼òÒCŸþÜÙ·øõÙc¿Þµ±?¿ú냯¿ïâ‡L<Ý☜¦-œ/ÚCû˜Àr¯~öë^'Ø=j/zÞãžó0?f0ƒ”^#(Â.¯~”àýöÇBÊõ¯:ä“¿ˆ$C †Ø9 5¨@úð‡þ&t 7ØÃ òЃBäà…èC%¦oyF4"¥˜ÄZ1s/¤N ĪJJ]%A^óvHÆê1ƒø‹b-¸¾ù¡±‰pŒâŸÂÎñxdâ÷X¹,Êf‹œŽ²x±0~iœ`"íhÁêÅï~»ùa$í˜Ä>Ð’èƒâã˜Ç b’ Lœc³E }±_‰%™È*ò‘@T¤,)IK9걋 !i9ÄNÂ2”À4Ü(aSÊâ•TúÎ*)ØÊ½ ‘—·$cy¹É%Z³—øë¤}ÉÉ`zspÃ|M)ÛdLJÒ¯d 3ÉFOŠð™Ò´ŸQGFŽÐ±þÔ&‰ÈÍKÆó›M]ãV÷¿·ô M¨(z»‚NEw ¨D'J·p²w>(E7ÊÑoZt5EÙFÒ’šô¤(M©D:¼¯tô¥0õ¦çÀFÓ¥…´¦8ÕÔMsÊÓ™öô§7Û)P‡JJ‡õ¨Ð*R—J¥2õ©q*T§j©Rõª±*V·j2£rõ«Mõ*XÇU±’õ¬U5+ZךUµŠE¥pkDØÚ­&E£1%ã躻Î&¯ý(_áæÖ°à°Wì`­â׿ Ö›Š]¬ÎêrØÇ²0²’•J Y*ãᤲ§s¥eë†ÙÌ:eœÛR¢nZÓ‰v´s+þ­i­£Ö%©>,±Ä£Ã¾stŸOøÀÂÖn²­RPkÃXqöG5¼a{ÛÍ#V¸Å%¢<–*·5µu‘tÕů.šÓ‹Ê¬nþ®«¾ëΑ»ÝýnÍ !^̾ÉDo~ iÀz‚Б¿Mã3ß _äzW¾„}‰m½ˆ­r6÷”›©g4cùÊO¸À=0‚K_èê7YžûkÂjbSÂu´ð,1Ü€änØ|>æ«ôµ¢“³< £§?I(ÉFRRů=®‹_ܺÂ֌ŗÕ0‘5k䯴ɲò’›v(ëOÊSÞIc¹zùËQr–ik+ïoÌUÙ2þš×ÌÚ&³ùÍËu3œçœ4:Û™ÃwÎóCå¬ç>ÛDÍ~î3 çAÚΆ>ôœ­è73ºÑk~4¤Ç,éIO5„L%zX¢iœ€±ÓðbÐrj%“ÇH;«T9cB¢ G) ¶oˆDêTÏúS‘õm–sW£šºÖ-I¥®Gmë`ûcì9¶µRë+cãz@¶²—"k%¬xÆžö³—=“aׄ6ùš±ŒUÈ@šWCº-wš;È΢{Ö™¶¹\_¦;Ó¢šÒxá½î}‹›Pùf·ð[o~¿J÷yð¯Ä«n6\ß»þõÁ Nð3âJ÷lJ0òšzÜÈ”®‡þ÷í`f V âl~QéaSÈ”Ð9¦Ê3f/‰×Éæ99Ùòuó‡„<ø‚é]o‚‹™ îÌÇKoY+üè_ù›¼ Ž Ì¹2Vx®þa¨‹ëݧNù~}eÞž7ÄþÖú ±vë|íG×Ïn.”·\NB·±Ö­ýê£×½í7—;Ôóþ«çëïwÀNNxT-^¿înwnÍmãhK=ñ]79Ð[½rÇC¸R~|çs›ñ‚cŒÝ\Ä7äWÝïˆþ^28ëé~ïbç„3ßB|æqtùÝOÜò {Ö¥Ty¤+lí^O{ÓIO/ÀkïÈ—zà‡¯óž‹ËéD×–{þvJÝG]î g0Îa í³§‹ú Â<úƒî}çï}ýÔo<û5/ÿ¥#ø„Ÿ¾÷Óß{‰õ?ú°·ó‡vÕW.ÖÆxC÷}ð÷y.‡lZæk5Özd7o r^%7|ú‘|fgsù&oºµ|‡%Œ×€Ö‡qÓ÷o¯’“×~wåV|)x$ªR,å“(¨Vþç|HƒæÒ#—lláYv¡mÝF„ö(äÇmÁ_za„èAu~Öj½fiTØfUx…U‡…Zø•¶…ÊÕ…^hZ`†’5†d8Xfx†t•†j¸Vl؆gõ†p8Vr8‡_U‡v¸Ux˜‡Wµ‡|8U~ø‡Oˆ‚¸T„XˆþGuˆˆ8TЏˆ?ÕˆŽÈS‰85‰”HS–x‰_“‰š¸5œØ‰Wó‰ 85¢8ŠOSЦÈ4¨˜ŠJ³Š¬x4®øŠC‹²˜5|V‹™E‹¸È3º¸‹]s‹¾ÈW½Œ33ŒÄ6ÀxŒheŒÊ¨2ÌØŒ(óŒÐH2Ò8 SÖ¸.ؘ¶²Ü˜)Þøì’ŒâHUáXŽ…ŽòuŽê8>äØŽ†øŽð˜ˆò8ŒXöøˆø˜’¸üX‰þø˜¹‰YžxŠ ¹¤ØyŠ‘ª8‘ÙŠy‘°˜‘9‹Ù‘¶’\ÅŽ"©$Y’˜q’(™V+iŽÙ’4£ç’0 29“ŒQ“6©8™“]Å“Hµ“>9@”1”DÙFy”{‘”J™LÙ””õ’PY0O9•§!•VÙX™•ต\9Ž_ 6U–j1–d‰fy–d‘–jùV^Ù–þ—TÖrù9oY—E…—©—NC—| 9wù—ªá—‚9Y…¹‘‡‰˜‰é‘‹É˜’é3„™qF™=3™–Yx™™3˜¹™Iè™Å˜ 99š%š¦I“¨™š7¹š¬©“®ùš=)›)Sš´i…·Y2¶™›Q›¼éBfÂ9œÄYœÆyœÈée;apache-jmeter-2.8/xdocs/images/screenshots/simpledatawriter.png0000644000175000017500000005051712032647206024445 0ustar ebourgebourg‰PNG  IHDRåŸ`“·[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí¸Eö·É9IŽ’ƒ€ˆ$AP¢+Š€¸‚ dDV%ú”El@QVTrP@rN’sXrß{)··¿îž¹3÷Î…¹—ß}x†êêS§ªÞž©:}Î陸§OŸŽ§?c Âxlšˆ€ˆ€ˆ€D½¢÷ˆ€ˆ€ˆ@¸½îWHã½¢÷€ˆ€ˆ€ˆ@¸½îWHã½¢÷€ˆ€ˆ€ˆ@¸½îWHã½¢÷€ˆ€ˆ€ˆ@¸½îWHã½¢÷€ˆ€ˆ€ˆ@¸½îWHãH‚ãwþÒ¤I“%K–¤I“š&Û·o?pà@ºtéÊ”)ˆ’`e~üñÇ%K–äÍ›·M›6Á¶½ò1M5ö’ÑÈE@D@îg‘Ø+a`–pâĉ³gÏž'Ož† æÏŸßª‰Â?ÿùÏU«VÕ«Wïõ×_7ú?üðÃï¾û®J•*=zô05Ó¦MûüóÏ?þøã ¸ÇÓTÝ=ªFD@D@Ÿ@$öJ¿~ývïÞ5kÖgžyæÆkÖ¬¹yó¦™U‘"EjÕª•3gÎðœdòäÉ1¤®]»†ÉÅß¾}û–.]ÚªU«úõëG:à?ÿüsÙ²eW®\A>Ra»ÀÃ?Œ½²yóf«rëÖ­”·mÛfÕ¬[·.uêÔùòå³jìÕ(Ä®SeˆíüÙ+D0V˜a»víÊ—/OáÕW_½uë–™3>þL9 _Ó§Oß»wo3°C‡uëÖíØ±c86üñ9rø0&Åĉ³eË{Í;wî¼|ù2ÓÕ«W À£Gþç?ÿyà°ù°fJ•*• wæÐ¨U¬áEy$–D@D@D ðg¯Ia[Å@Ùµk—±W˜°µÑ~óÍ7óæÍ#ÂÒ©S'êÍ!;ñSO=5~üxBH=ô†N¦L™ÐüöÛoxb^~ùåÒ¥KjVsãÆÛ´iöAË–-Ñà ëúõë1#p9¤J•ª\¹rmÛ¶e„¾„íõ(]»víܹ3Ñ¥3f¼õÖ[œÅW´páB¦¶ÿ~Rsˆs5oÞ}Ú-ìYƒrRƒ9uøða#дiS|-h{ã7^|ñE*1C²‡D”úöíÛ¨Q#ʾ„*û+þ7nÜÈ+4|ðA\A”M" ]`ñГÕ4™4iÒ_|aUš‚{$pð£Ð¡_‡" " "[Db¯ðX ¡ “§‚×dРAwüÌíÑGmܸ±eà „ôRc+ÐðâÅ‹öæx#þþ÷¿cÓà„0»øž={ì¦Lʉ'(£Š-ŸG‡R¤HqClÈ-ì«&eÊ”œ²B˜#"VuêÔ)Ê$øj¸°±Wð¦à8Á^ÁyÃj‰'¢†`N«#¿ýöÛd435«ÒW!A)ôÕ‘êE@D@D ¬ø‹™ò +Ø5kÖÄX! Ã£Âdœ(ñœ†‰žp „WŒcøJ4±×"$töìY·f"¦rĈö³ûWhE¾-¯V²-òŒ5Š@Œ¥,«ì(.ŒuB c…«bÅŠñ(q" 5¼SdàZ¦›ébVJ£S÷a ‚RèîB5" " "†"·WÌ ‰M¼ûî»o¾ù&‡¤}Ô©S'ä“Ák‚ÎÌ™3»5g̘ÑTò˜#±ð²Xeÿi6óÀ0’dÌ0¬žxªV­nR¾4%ŒK©`Á‚xSLÒ.ö 6_µB¦Æ$¯øêË}ô9ø×¯³" " "žüѸØ]DyÌŒË$$ó!cº Ö<úËfïÖŒSÄ„K-Z„¿ÇúÃoáv×àY8p é/äâ4hÐ9+L„ôžK2ßJ‡€ik¼D‰p“D*ìîŽ$e*yÞ‡qšï§1F65žÙÄn%¦Æ1’hrðÕ‹êE@D@D Ì øó¯`@¼÷Þ{O<ñ)„i~þùg&ÃŽkHC21ì¾%….ˆžLŠýauÊ©oݺõСCÿýw •*U¾Á‡k„ï¬s›CBE c…<_,,2EL :QBê.F ´"˜^”ó Nš`åT¨Pùúv÷N ‹ù‚]“¹‚6¦À){òŠ»­£Æ1’ªU«ËÁ¡P‡" " " ø³WÈAÁÇ`¶^37ö]¾RÅ<1’Ùòõ-<<ÅkréÒ%>B z$•4{®n Ý2xt˜Éf‚|Ç ÏÙ£]dãRƒs…¶‘ »õ‡°Æ>£6„B8N©˜ àÏ¿B¸12Üù‹‰¾-¤Íž9‹k„?«mt däX:¦ÁaãÐÆcÆVM¤Â–dLì#1úCÈ!&," " "BþòmCØT‰€ˆ€ˆ€ˆ@” DвÞH’_Â:8-üä DªD" " " ÷{f¯Üp5GP<($¥DD@D@D  È^‰A¸R-" " "²WB‚QJD@D@D@b€ì•„+Õ" " " !!àïûW~úé§ô!%" " " ")† ò=®žbþìÐÒ³™*E@D@D@D „¦NêG[$ö -}Y:~”†öÔq3C«PÚD@D@D@ŠÀÛ-øOäöŠÿöwçlÿ.­ïNGêED@D@Dà.À3bý ±¯®•o닌êE@D@D@î@)²WîÆ•P" " " Ñ!Ëì•ëׯïß¿ÿÆÑ™³½íĉÿüóO{Ê" " " áF {¥Aƒ/¾øâ™3gÌèûí·êÕ«>|ø.Oæã?nÔ¨Q¿~ýè}éÒ¥ô^¿~ýÅ‹Ggß}÷ÝÁƒÑP»vmúýÛßþV£FW_}uÊ”)·nÝ ¤a¤2uêÔ™?¾ûä“OjÕªe5¡»cÇŽY‡¦ýY;êPD@D@œ@ ù¶gÏžýðÃ{öìy¯æƒ䫯¾úᇒ'O~óæM-Œä‹/¾àð® éí·ß®Y³æíÛ·7mÚÔ«W¯]»võîÝÛWï­ZµÂ°°¾$K—.½zõê§Ÿ~õëן:uêÈ‘#Ù²ecÊ)R¤È’%‹£¡5ëÀ»phСˆ€ˆ€Ä.ùW˜R’$I-Zd¼öŽ1¢uëÖõêÕ{÷Ýw÷ìÙcNuìØqРAsæÌiܸqÛ¶m÷îÝûã?¾òÊ+;w>zô¨‘Ù·o‡Ï?ÿ|›6m¶lÙB%Ê›7o¾bÅ »~«Œ3ãüù󦋄 &K–ŒSØOëÖ­£ðæ›o2¼®]»V«V »êôéÓíÚµÃV˜6mšÑ€> öÔSOuëÖíÒ¥K–fSÀËÒ²eË*Uª Ä}Ö.?~ü‡~ø¥—^š={¶q2}öÙgÌSßÖ Âcǎݼy3p ƒuå°+4ö 5H:t¨H‘"7näð÷ßì±Ç(0ø_~ù…õèуC3kGžãw4¤­þD@D@D 6Ô^!’>}úQ£Fa4Øç‰é@p„}tåÊ•–qÀ.ŽÙ½R¬X±Ý»w÷íÛwîܹ… Þ°aƒ ß\¹r£Ÿ Ùþû÷ï9rñâÅø² (À0)ø>c0 v÷Ë—/›Â°aÃ0P°“þõ¯áiÒ¤ ¯lê&ÙIB-uëÖ0`ÀÖ­[Ý_Ý;pà@L™ï¿ÿ…VtÆ>SG¹bÅŠ Ãä¾äÊ•‹æLáÂ…¸^¤÷ܹs3ÚqãÆÈ-`׆½%ÂmÛ·o/X°`ñâÅ…€e¯0xŒ0BrXxÔ›Y;ºð¿£¡½S•E@D@D Ô^I•*Õo¼ÁÒcÆŒ±O¯C‡ìÜùòåcK&–a"L3xð`ö× °a2„{}ÎâVák†¨Î | ¸Ž?Žs³†JK‰£€÷_6¶ãl³fÍ©”*UŠ åòåËW¨PëêäÉ“F’è ÊéŽ4¬+{sŒ$_®\9Œ|'Dgìg=ËY³fe^×®]ã,vRŽ9xv£jÛ¶mÔ0†D‰ #ÏSÀ®UDÖ¬YÃJ”(½‚ÍX-eÊ”1’¯½ö³3ÚL½ ?ãw7´w­²ˆ€ˆ€Ä æ¯0™J•*aüúë¯Ä†ÌÜpŠŒ?žô[¢<”Ó¤IcÍ™=Ød–`¯`ÊÐ?ŠuÖäNž<Ù|ù.gñµ `—±„í…¦M›–-[¶S§NŸ~ú©1€¬³Ö^Žóµ3tm¥4iRs˜'Ož%K–ØOT óÞ{ï™Jl?ëY¦ ᛜ9sr–`Í‚ pÌÑbÒPM"ÀÅòÇÆ"Ì”!CF‚E…õƒQbTe̘ѡÓ~ègüþÚ•¨," " aK {…9àMak$ÐcæCøcúôé&ë“àKàO eÊ” Dg𗋆y¬ƒ#(%øxJ–,io’.]:ì•¡C‡šÙOù*ã"Êœ93¦Aœ>}úÀ+‡»¼‰[ù°„q Mš4 7 ±3ì*L=’jüqKÀWÁt…ñûR¨zCÿŸ"Òñ±“k‰™ÜR_—/_NªÛíÕ«W­³~ „9pÆD2oÞ<|3Ë–-#]”W’sW­ZåÙLÛ;wr G (¸@z¸°»ãȱòB,rkH7™0a‚¿#GÇ3… .·úæ›opðà"ÞÄ\xЇ\æ#FˆÇdû°«Å¿BsÜBÀÄ?T´hQbC‘Ú+VAßÞ¯Ê" " "+g¯0%žèaw4s{òÉ'óçÏ?zôhRM ‘SÂ1L;uêÔ8ð ýJÞèÈ‘#Oœ8@Ú)¯ž°QHì¥wœ+ìèŽ`gG%î¾Hæ…^À¶ çÆ~–LòU1hÈDá‰_m3fâúöÛoÉÎA%$ÄdÏž‡ƒ8ËÓI_~ù¥Ia¡£Y³f1;_ö ©3¦’r_ð$ÙeÜe«‹ÇïÖ ˆâ“3ák ø?6léï3Ÿ;wÎd®¬š2eÊĉûRè®Ç“ñÁÞì>eÕð³æ÷ÉÁ ƒµaf¶)`åð03F>!{ž£-S ceº8Îú9´ à¿I›6­‘$ÆÄCOæÐSÀÂOÙ» I”Ç`wè1øS6zRZýXÁå¯xÑÚþñ—x ø©ÄÑâç¬ã^¢6ŽÊ ±¥ü›SQ˜‚€Á2V¨ç!ëÐS ¨Á{ Û»@ Êã÷T®J!°WÂd&þ‡Á#Є®üË謈€ˆ€ˆ@xˆö 1©@~l:Ä‹"¾ W" " " ±Ž@,°WÞnÙ€gL K¬ã«‹€ˆ€ˆ€DŸ@,°W˜d¤9¿Ñ! " " " aK èç™Ãv&˜ˆ€ˆ€ˆ@\% {%®^YÍKD@D@âÙ+qçZj&" " "W È^‰«WVó¸C väÛ†œ·ùç«•B˜ ÿJLP•NPÂ^áÇù©áýû÷›Ÿeå(¤KD@D@D@|(tíÚ5~ù«¯¾ÂRI Á­[·øY}«½ggøý?~Rçžu¯ŽE@D@D@b€@@[ûèÑ£ù­æçŸ¾I“&üBá¾}ûvïÞƒ‰®J~ùرc˜VÑU¤ö" " " áD r{åàÁƒsçÎ凑ßxãøñã3ø|wþÌ,8;f̘-[¶¤L™²råÊÍš53?€Œé#GŽâÅ‹O™2%UªTï¼óÎæÍ›)gÍšµK—.¼Ò<l£Q£Fíܹ3[¶lÈ-ZÔ4䇈«W¯>nÜ8ú¥¾P¡BÓ§OG ßOóæÍ;wî\¬X1F…í²aÃdXµjÕ–.]:~üø6mÚÔªUËŒ_¯" " " áO òü•={ö¹RªT)c¬Ø§Dœˆß=Þ¶mÛ믿^¾|ù™3gŽ;Ö>|xÅŠsæÌÁnÀÓ·o_ŒžÂ… c=,^¼8@™+W® ÿìÙ³=zô ÷þýûcŽÐåè™0a£>ºcÇú¥ò±ÇÈI‘"öJöìÙ©ùè£È¶yÿý÷1PLÍÅ‹8péÒ%3½Š€ˆ€ˆ€Ä ‘ûWÌo÷$MšÔ=,’ãÇ×®]»fÍš5jÔ˜?>J»víÈqA8yòäƒN˜0áÂ… y2d†Â’%Kp™XªüË ÿÔ©Sè/R¤æ{÷âÜ¡9æËÀÓ§OË“…šþøã þ²:vìxìØ1nßÝbw¿&ØÁ+ÏŒ–.]Êk›6m’'ONÁŽ" ó½råÊæÍ›{öìéÙ–+Ò¥K—µk׎;ÉAƒyŠE§Ò1è¨òÓÖÑK4¡ùéH§D@D@b¨Ø+%J”˜2e & »ã–-[%J„½‚»åðáÃ'Ož,Y²$3g_O—.]… &L˜ðÞ{ï5ŠÃwß}wúôé;wîD¸yóæøiŠ+¶oß>ÎR™-[6Z¹cFUtç–g@ ‰@O³fͪU«ÆZ¶lY¨P¡®]»Rnß¾}æÌ™ûôéc¿*îÁx걚¸å<8fÌZÑoåÊ•éšX%OÏÓòåË)0€'žxc…]Œr¤Œ<¶HÁ‚éÎÑÜÒ;%Ož<_~ùå‰'L¥§æ#F0l®×#<òꫯæÍ›a¼eÆ Úd.ׯ_µ£÷tW‡˜—'ÄräÈ¥Ë;'UªTï¼óVå¬Y³b`ñjïÈÝK4¡Ù•«," " D%„I³〠³ç±·]ºtiÿþý$©°'™„l'Ož\ºti6W=Šüc=Æn"E ì•ìÙ³ãèÖ­ÛÙ³g{ôèAĤÿþ&ÌdGiWÅê)ÿÑG1€÷ß7jMó?~Ü”Qbíß–rÇ`¨÷ÔãKþÚµk [íõ×_/_¾üÌ™3ñjX¦P±bE˜Pf¾O>ù$ …]2F~ÅŠ ÛÞÖ^&ã„)ƒýâÅ‹O?ý4§|iN˜0!f ØW®\iùºðÇ0¼¦M›ÒðôéÓvͦì9ëBc-ù‚ZFNˆ u÷îÝ}ûö;wnáÂ…y¹c[ž½˜÷}H¾¦f—QYD@D npÞ@»gµrße{e¹Ü„5’s‹Ïý17☵kמ7oÛ6Á nÖ-al rV?òÌ­?Æ Ù”ìIH.Z´èÔ©Sh(R¤Û07Ü{÷îÍ—/Ÿ¥Ä,UžòøPrîÜ9²2«V­jžJ܇ŽÁ°Ùû×ã_²d ƃ¯Y³f5æÏŸÏ~Ü®];û•6mZº6óuÁÔ°—ÂaÌ‹>øÀ—rV^yåÎ>ûì³7¦àKs‡8ËOZæÊ• ƒƒ2¾<1¸¦êÔ©Ãáš5kBÁþç9ëêøÂÛfðàÁØI .ä•<'Ì\šÐ©½ Êž½8d8ô55Ç;ÖÝP5" " aHÃϨ"·WhìVÁ]2[#·ÈD¸KN’$ æ ö »µÕY† ÆŠuÊ*`ñPÆ0uêT èÁ²ÎZK•§<Ž ÇÇ=0kÖ¬·Þz«@VÛÀ Áê9räÊ!À+m1³Øø1;2eÊx§FÒs^n%ä a åÎÛ}ÊÔ<øàƒx˜ˆ»™ f§fœXãÇç‘%œ”Ó¤ICs.¯Q@g]ÿ@ú˜ ¦€‘ĵš¯‰Rï95ºß®h“Œˆ€ˆÀ=$é­f@öŠ{¤°|óÍ7øˆ°U“ yá»ÅÝʪ±nÜÍÖ^·nÝÖ­[[gý|ÉŽ!7â믿ÆôÁ©3zôh£Ä<˃ ă9¾ÔZƒAÀ—{[K>}úôÔãÔ1gÙûÙ‰7Å.HÙ×¼mq®”+WÎQi?Äw…ÀË/¿Ì“Ò3fÌàidO͸‚ÈÅiÕªu¿ýöÛkP‚ÙÁ«‰ aÄ@ “®<ÒrDÚžS ¤¡dD@D@b¨ä¯0IŒnŽÏŸ?O‡C^1VræÌiv,ÿ¸ƒ' ±iÓ&ò?Ê”)ÃÍýO?ýDD‰ýž§XÉ`‚„8ŽIDATõÓÜSž<<=Ø}S§NÍžm4pÿçŸrЇ{‰@yªµÆ—{C»¼IÍa̸=ˆqp»ÿøã»Çåžó²÷kÊD@ü$¯Xò|Ë YD¤ÜjñÔ|ùrDŒ/Y²däcoë„kŠéi¢Z$_³X!@zôœZ %#" "ëDÑ^Á‹@èÙšÇy QйòÜsÏaÙµùõ×_1/H½$wÀ€Mš4Á5âΊµ3õ”çIÜ 4ñÅI¶%³Õ4ÁmCÇUèÑ2bìÚ(ÛãK½‰]žh—±„p‘ê[¶lYÂRváÀËžór4Ç"ܵk—yüÊqÊqÈC:<…9HŽÉÎnÂdþÆÂ E¦-.% 5ÂXÁ1ƒ™BÒ13ã½phöB þ;2gˆɈ€ˆ€„?øžØÇMH)&p±`¦X ¸j(󤫽k?e·<Û3Nö0{+vb²Aù³WºËöÁxêq4±ËsêÌ™3ØCQó¬84»çe kŒ¯ÃȪ ªàÖŒib2W?f ö q½ÕÂâ J¹C8„@š=ÝSóS¥ˆ€ˆ@؈ÔظgöJØ" Û‘0D¸­J•*a;B LD@D@¢F R{%ÇCÔzU«˜ P¯^½˜P+" " "þ¢˜¿þÓE@D@D@â Ù+qæRj"" " "g È^‰³—V8C@öJœ¹”šˆˆ€ˆ€ÄY÷{¾íq3ãìµÕÄîx»eƒ Hè-apË-(ÈûŠ€Vÿ—;ÀÕæ~·W€Ø¿K@?à·Î†'¾)‡o±ã5¨áµiñ›‘÷óߨ/&ßÏÓ×ÜE ä´ªøBøj#{ÅCÕÇÜÖDÁMœPqÒ¸põ5ZU¢-d¯DŸ¡4Ä5ZYâÚÕ|Dà^Ъý+ {%ú ¥!®Hœ(~\›’æ#"pO hU‰>~Ù+Ñg( q€î„âÚÕ|Dà^Ъý+ {%ú ¥!®ÐÊ×®hl›O€“øTÅ=œ}œ™HôjU‰>ÃØ+ëׯç§}‹-Êh&NœÈ/ýÖ¯_?ú#“¸W'R¾í½bïѯ}…ñ8í»*TËÑíÛ·;ÆÏ¼g̘Ñwoÿ;’~ßlÕä½J£>›äUvuQ›Ì:Äț߻Y? (¯* 8qâÄÅ‹³dÉ’"EŠà{ŽhqóæÍåË—/^¼8iÒ¤¯¾úêصK”(5m÷ªUpöJƒ Μ9cõ¥—^jÕªU¿~ýøÝà±cÇR?{ölʲW,D*ÄF×oÜ vØ{¦¦yj:s–,¥J•úÇ?:¥M›6X%a.ÏÇŸ={êÔ©!g÷îÝŸyæ™'Ÿ|mö……$þüM›6-T¨éȾÂÕuô—£ëׯO›6mƌ׮]»uëVêÔ©YëŸþù üY´Ñï—i¦LÜâìÀÈ!CmÒ$£'(žQŽÂD&MšógÏÂüá‡6lXÔº«VQXU®^½:iâ„©S§\ºt‰·4Ò¥K÷ïŸ~ŽÂ¼æÏ›ß£G÷^¨›2Uê‹—.¿óÎ;2dœôe,ûÚ‚ ?|›…õîI•*à>þøcÿŸÞ(ÀU¸‡®ß Ú^¹};^‚»vû篿Ì1}Z¦ÌYZµn{§æ]_¹reóæÍ={ö´Æi–óçÏïÚµë³Ï>ëСÃèÑ£ÉrW˜O>ùäûï¿ùå—5jtãÆ ?úè#v‘¿ÿýïÖÈc¨*Yâ(h¶¯Ïaâ™v"üòË/kÖ¬É{àÔ©SGމ‡0l…UeðàA?þ0»n½úM›·H“&íÞ={víÚ=ÐX°p¯mÛw0šq_L`׎šª{È6h{%a„9sæ´ø½÷ÞÃè{÷Ýwí•”÷íÛ7jÔ¨;wfË–­cÇŽ&`DáêÕ«7ŽÈ‡fI1bÄ–-[Nž<ùÈ#p[7o^4p6GŽÅ‹Ÿ2e ¶&!kå¬Y³véÒ…W_½8F¢CŠ@Ô>Ɖ'É_¨ðÉÓ§±W’§Hi”¼Ù®MÚt鞨Xé_ãÇõ08iÒd¾yÓ¦”©RVyªj³–­“$IòÓœ¦O™üÁàaY³eû÷³gLÒ¥{¢ÅŠ/Y´pîOsú}0hó¦S'OÚ°n­š·jS½F-¦³oïžÆìܱ=[¶ìÿèÜ¥Xñ‡ƒšc¨„Ù]ƌǗsåÊ•›5k†ŸåÛ·o>|8a”*Uª°ë°Ç8ÐêtíÚµ ¤‰Uc-,=ôPüøñGŽITÏ ö†Žpxlذ¶ôU­Z5̪R¾|yö9Ú¾þúë*T°4›‚{…Á ZµjUß¾}|ðAd0’ð™·mû?+“ò‡~`}§#sKÖºuë_~ù…»\,É“'÷µšY]{vÁ‚6~üø6mÚ<öØc–¤»páÊ we¤5FKÒ  &L€$k2+°uHtÀóò9ZqùÜØ­.ü‚ÈÑ£Gq$à­$Â"oÖyºhÙ²%›E×®])·oß>sæÌ}úô¡Ìe‚3[—ž÷@çÎÝ5ž›‘ç{ɳ2ðæ~P»ªÒ„ùã]eÎ>|Ø*[òÜ?uëÖ ‡^=`ݿނœE˜µ†OΣ>ºcÇŽ™3ÿú:|>f˜)¯\¹’†¥yÅŠsæÌ)V¬ØîÝ»YYæÎ[¸pa4‡CÆW/Ö0T(¸~ãv°ÿnÇ»Í ;i¿F Zñɧª×ªm4Þù”.XQ^±‚òâE‹2gÉFaôˆáû÷íë7`h«¶odÉ’ƒšó.uéÔñì™3Ý{rŸ¿_ßÞW¯Ý¤>Tÿ„F”„ù¶mÛ0Ø*ø8›¸0Í À²ÀÏrƧ˜¾]'5~vë’%K"¼wï^ÓľÂàÞØ¿ÿûï¿Ï~Ÿ={vK€ "qÜó`ë˜zû«{…)R¤Qü "î;/\¸ðÝwß9†ÄšÃªÅ”å?&ÆG¬ŠÍ›1ÐÊ×jfõëÙ‰ô‹‡ßó,\¼rÃÿ?ÏVŒE’¿%K– œÉ“'—.]#Ï~ˆeéëòÙÅhå‰ÝsîJÿ³à¬£ WŸÛÔßÿÿ ·»ÖY ?~Ü2ŒS>tðà±£ÇLÙ¾¦Å‹Ÿ0ú ‘›•¯š ý+,Ê„–QGꙟH6ë7Uµk׿Ë*€S„Õ'_¾|4Ä|áN‹(õÒ¥K1YÌÈx«Q@y®\¹øt™J^¹‰Š¼œõÓ‹¥A–@°wBFÿ©S'§Mž”$i’ •*'Mþ—…S %4òãH¿lÉÂãÇ=S»N•êµ*W«9ÞÏs~ü¾Åëoæ-Pˆ-aÍê?*W­±aÝÚÌY²®_·¶A£›«ÿXñ.=®Ý¸‰æsçÎî?°¿JÕÆ‹»|ù²S'OÖz¶NþB•y¬üŒ)Ù\óäËìL£)Ï-„9Þû5jÌŸ?£¡]»vTâw¡’]„.cåµ÷…qöÁØkìe<¸X9î%¬*çÎcI­ZµªeFЖ…bРAÉ’%cÃf¬¹sç¶ët¯0XxXX^{í5¼&ÜÇseorúôizpƱb¥2’ž«™¥Ä³ fƒ™†–˜gáâUçFî)æ¨ÄÂ4¡’éTªTÉœ&6¡"Ç! ©çå3`­V~°;z÷< v"ôK(×Úš5kpótêÔÉxÑ<•óFÂ,~úé§ñ¾¶GÍ¢E‹Ü›.|÷{És¦ž»ŒgsÏZ•Á®*'Ož¢mâ$IÝ —ÿ¶Ìs%ùë?Þ»†¥OŸaÙ’E;¶o¥yî|Ó¤M‡¶r"ÞF!·XŽ=rðÀþj5ÿVµÖ³UãÅ[ùûr X=ò¡µ„¼™Žµ¦-Y4ÿn.DAûWxÓã§åÏó&ÆL†WüÀ¼òÉ!îûÕW_áôÆ×bÎfÊ” c…2K h(pCx¨E‹7f¡1•F˜Ob4çJ`ÊP`e7§xõÓ‹%£‚K€h°ÿâÝŽ—7_ 3¿¯ÿr“Aýû~:f”Ñ@}úôS¥IÇááC‡ɃyóS¾qëvî¼ùo\¿~ìøñ›·ã}¸ä†µ«×¬Yý@ú UªÕÚJÄhÓÆK/)^É6:áÚ>¨çmvìØNsî‡P5mò„¦ ë};s¡¨S§O›Cò 1“[€Ëy6`nHHPeX·n5æþÄ­jÏž=|œv€]Œ¤~’E,÷‰uŠ.ØÀ cš``7X§ÈÕÀXáÐwèÂ:EÁs…A{»ŠÐÙuëÖµ7¡l"xìõ[·nµNQp¯fvaÏ.˜ÓÔ^¹vã–ÿöެ2K«YŸAdUfÈÁ2V¨´}]>ÓÐóƒÝêÂOÁÿ,8ënK^3þ9 _öîW-ëÐ-i¦€Þ:å®ñÜ&<'åYxsk ž…`?˜2eFÏš?VºúZIdÁɘ1sê´PNš,ù­[Æÿ°6ÐfʼFÝŽ8\»v5õ¹òD„™øÇ†Ì?S¦žc«ü¿zÛš’…ˆŽü Ú^ÁÉA> „ýôÁǘ³,?þ÷ÏqïboË-ÎôéÓ¹#µ Œý”ÿrP½øW¥³"`¸qóv°ÿ">þ·oÇO¸fíz)R¦\øë\@Ée!žÑ–&]„™ÎZc=ʾ•2uZ‹?RêìÙ3³fN+YºÜCŹ~ýÚÔ‰ã‹{8a¢¤œ}´l…ác'Ö{¹É®Û>5”š2D|¾ž­óâäY?›EK”2jCòj¡ð_07x;Œ÷µÌˆ ‰±EL=¡þìz¸'.W®œ½ÆQþùçˆ' Ä8ê9ÄÂøüóÏ_yå\³ž·L؈Ù70}­0Ü—söÃ?ÄBÂçAÙþG† 7H$4`„™z¼l‡ØF,ì’~Êþ»ðÓ÷ÿ~ÚxÊ×ås7»»‰U㜵$íL¶¼hØšïæV,n}ñ¢™c‡Y~z*Ý5¾¶ ÏI¹+ƒjnFåùì3Wîü %ús×Þu޶~Vû‚sÇöøk)‹X‰âýµ¡ÍË–#7õ‡¤òìÙó/œg%3ÝEÈów“H÷™kW¯ÑÆÔ[m9 ÉB1²Àþ‚ަ6^™2eøTÿôÓOÜ{™ì–0G¢®¥êòåË”¹áqÖ8y;⪵|‚êÅ—Õ‹€ƒÀàŸB®øe‹lߺéÒÅ‹ÅJ<qKsçž;Æ(,öHé)R®X¾¸âSÕîßwâøÑÒ=?A"Î>ôpD$bÓú5µž«—¯ÐCøK6®[ýJó¶œ"ýí÷¥ Š•(õÌó/Îýa÷LT/Y&Uê4óæþ˜+7âÅ÷íÙ•óÁG?Ø’ž‡ÁN„ÌYÞKÜßò¶áÍÃ;Ï:šyýóÏ?¹ÊÄI£4}YSà±gÊ䵸k<· òÜï%Ï™ÞÜsúV¥Y¬ÃH iÈP«v½gÍø=5m“%[ŽÝ;¶nZ¿ºqóv~VÔZ ŽéÂôK%‡ö1±<ù F§Zøë¿qîܾåÆÍŒXöœîÛ³›¨õü¹?Þ¼yëÇjnuá¹e½“+é£ Sö «é±< €[añÉçë|Ù+|þXóø"æ-oG’ùI‹t>Aõ©6 ˆ€!pÇÔÆáƒûG|—¯7([¾ÒsõÚ•˜2Q¡ÝúŒûpH·-Y…K”*×´mGs*[ÎÜiÒ>péâ…ÂÅJ&H˜8¡"Û6o(^²,g¯^»öÕÔ ŸŽB—[P™,Eªtÿ¿ñc†}4,"c?MºÚwêÁ­–Ê –WÁôô”\ ¸µå1=SÍ^ˆg¢wïÞlçäÕ2<6`â5œÅLyóÍ7y↬Ivw¶¬|-ÄqLF­]½ÑLC|·X?lçl·vÊlÆ;莾p~4oÞÜ LŒÃ}6­HŵêMÁ× ƒÙQ±bEÜ9uêÔq41‡ žû(L–yóæQÃ=é&)ÇSÞ]éî$9|N·˜£Æ~xÒŠ§öC–eÏËg—¡ì»CÒó0؉WËÆ*®2·»¼‘òäÉÃ!î²¹yš‰P Éw¦ÒL¯Ø µ‘Cž½¢-“rÔ¸7#¼€î÷’çL=wÏæ ÀÏ_>ƒ š´H‘*Õ쯧öïÙÍÉ“§ šÌ}Ÿ•Ä à¯¾"L”x¦|§øWÙÈü÷Tü×Úvœ6áÓ5+{ñ•f“ÇÂÍ’iRýÙºSÿõÉÄO?|­Í›‡ìãæË>Sö\ˆ2e Ôûh$ÀB|“SæGzå¾Ëår'÷#àÿ_¨ÀÛνô¸[‘FÇr@=¾YVŸÀï`hx/Ž~ùºèþ]Z;*ugôü)××OüÛ=SÞ ÿþ’»>„5çÎþ'yò”‰]7ô~º¸Îc×®b 9dðßòùJ‘Ò¹µ;Ä‚=œ:}FPßõÎgo‡e”б!œ„ñ—°Ç“ûÉ.B=7µÜ"ó€O°C²ä#@\½Ê.bÕðusøcØÌ¸Ðl$=Ö){Ás…á›Xvzõêe—t” IpãŽáà÷Û:šÒ…£ oÂZµ_pT:úaVP×ÈÑÜ~è¾|ö³¦ìÆî–q×Dm"ôE„]sÄ®ÿÙ¸üÙ+M™KÏ"ÙÑ:å®qož“ò¬Dm€Í­Ø ÑYUpfœ:qŒ×Œ™³òa·«ÂJbonÊ'MŸ!S‚„ wlÙø~Ï·Ê–²}—ˆ*8w%N”0¡p#`½Fg!²V›HÈÇa (jû²â_ƒ1VáëüKºÏÞ‹»­jDÀAÀr{:êCu˜"UZTÕK|2Y’GDŽcàA¤`U94„äÐý™åŽ–=3‚/Ù–/„l\Ü'Ñé«ÈnÙU9¶7û)Ê5©Áxs’ŽC _¾a‡¤û0À.<þ0Ë]C5îËçîÈv·°½»Ê~H™¾ŸÛUÕç!oçnÇ ‡ 㦥.¡ó–åCÕÛGk:¦ëøùß%o-ødº§ /§Ïç~¨†·!Ëë(¢å\ºgNq7ñnhÎ?ÚV^¼9MwX¶Dû¤Ésï6ÜÞÎUuÙ‚cIDAT™¤ù¸ºÇÄݘæÂ£Û¥Ïç£ô×(r¥,·§1CK…êæ²s+îн†ÍÙÛÙž‰¸p”¸)ü\5Žq†ÌǸØï÷ě¯è£{¾WN“ë…Fƒ»¡4²¦¸¿Xh´›~àÅv¶g2˜ØGùžNìñJ¯Íu}eÏèÎ"Õñó\/´ùj´K•âW{¹ÿ¶eøašoòsá¨E»¦ï锹ð}4_Ïg¡|3ˆÛ²Î…‹¯WJg²,{ç­¢T¹éÞ¾v‡l›sî’ °3ë\xÔ§{}ç¾ÑW*`üµAš­x,ë$×DöŠÕ¨=pcݪ2aF*›Ä˦KÙÑ­âÑc¦IDATúÝŠUµÏW1ÖðlÛ2!ápCzá•>Óc¹ÒÑG±~Oó8@_¬‘²VnšlÿšWrÌ=è7ðˆØÀ#bˆM<"6ðÈéï›Þï÷ÑU°“×ë•nt›†aøùù9º 67MÓ8ŽÓ4EÛ¹§p¤ÜM± €GÄ&›x¤Í…§OéŽø+ÖÇã±¼þ~¿ËÆåu[žöäKšK¬Ê!<Þ0ÕÊC¶Û­ @ÑòÌñ=Í×Éb}˜XS4jÔæ`Lòý­¡PàìC.k»ŒªÂá•8òSÕV`ùlŸ_ÌQcÙ2$#¬hc”Õü"}7AÌù„9G ¡ˆ<IDATs•Y¶Gi£U‡o,:̼¶Âµµ:ª~–Áð÷á%˸â£ëÂÇ4†KV‹©ìrÁeׄ¯Åriâèª.–5ïU[©…¥è´ˆ5ögzv¦ø ƒâšü–ÑPqŸèB¯™hh£ï°µª²rá)Úh̳ØÅT€Ö{:ñIJ Ϫk.Ew%ݯ¥¶Á˦ŠÇØ<àjªpSlŠbК/ìjSí0ñQ•¿“‰˜¶:x¨9`tÌï›–‡8îó4GãxAüò>šÙ¿bÝs`ÿ¬±)Hª +Q*ãj™Ù]æwí%¦™¤ÉÃüssUâÅ„mõ™=~«­³^¨%Á ‡Óîé”ïBIDAT'MêO©´¼ÎmIéÓÛ¹ à(•òßâ…šÛAŒtJ …ZŠ3Ý–Š[?xàw” +~óàú±ÉáÅï°J€7~cÓ4M¬~ Ü–ßggŽãxtì$]÷Òõ¸éè*8 ë7ðˆØÀ#bˆM<"6ðˆØÀ#bˆM<"6ðHû]8Î`¯×+ÝXø›•ŸŸŸm*ƒ úóçÏëõâ!a4w˜÷û=ŽcËßÓñwm¨EŸÁzÌ7ðˆØÀ#b“ðȼý‚ ¨ê9tªZĦa ßþ›†A}@ñó¯pËðûXéã°r©p%é3e—UdÓî–{½ÏãÏÂW„vIDATﺗD½-}>k/ܘîévíct—ë6}“\ã¦ÿ‡N¹.¢?t7G—è‚qÓÿÍá)êXmclFæ7±ô™¨ç4túL„ؤ‰FÚö„|rÞY[·¡ÏD¸§û%7)Þü™Æ‡áå‰Ãí™~ö•¯_úÔìä7ÅÂð´¼V¾È+æ0¿`‚ó>ôn#¾+ö™›#6 ]AœêN__ç¶à2”Ó­w¾TQpOÀ£Â¸iš&VqBú º(ĦqY vï÷ûõzÑg`¤|ŒqOàH⢗± À±rC§ò÷tÇ#Ýøý~íe?yÿ4«e{U†ÍÖT›v·ƒ‚EÃéXy÷ïËõƒ:ÀuIDATÕ·\ñ@Âkyy·ï!—cSß‚Ï{¹ž·æhs®3¾](S¸qùoß ¬º§{ü¥lœ_ˆƒ/cžKažz¡¹TbM–}¢=£×ÅCHk¥T¯jãI)'%ÜaÈ´­åœæöw³§ ‹Ë-æ#©ÒU5Ôûv´g±…Ó#ߢo¿mÿíå#ˆà®-Úøý~æˆ.æå?$w‚–T¹š<ò÷›UÄÊ«dÙxRÆ“2ä/{ò¾ïê‡cìag+‹XÊÖ}»WÏ6`nø»p±ÆQC*ÜÍÞUM6Ÿ]ûþöB‹Õw8u`Rˆí“¶|îðk›·­çl—O.Oû[ uÐûvCÏš ¿ùIDAT’xŒMb—Z6¶]rm¢ï`²;cC[ïVö¹•èÕsô|œ÷Ïâ|S_«b“}ÚjÜvž¯äh(¾lê2÷t+åmÍž¢AKqbŸÎÙç÷M ÓfözŠå^@±ÃÔžµb*¥yÛzŽ=­=ÕFõ1ö¶²èÓIDAT±5=¿WZ£»¯ßTûuƒ8ŒºR@ÙÍ_ô¬qù¾âÐFy׃»Ç¦†qòF5¹›†–ܳñ/p¢‹÷³»Õ¤M!6±jÑgÐE!6å–/DóúMG×§ÁúMN†ØÀ£»¯ßÔPtm’ |ãs;œè¾ÉÛJœ_ØË]ÿ{ºí~‘ÇúM€ì\}ueðm»º7¿·^¿)ÚÒëpÒL”zVm<处; ™ö´œÓÜžânö´aqb¹µý¤ØU5ë#æ©´ðãwX‰~ê½Q¡Un½~S¸¥×áˆi«ZL9¢1ž”!˜ìÉû¾«ޱ»–X¢½†Å¾]láT±’[ªØp.\<Ó8ä«IDATß²²_¨}/éõ¿Ò,æ îpÆÀ¤06Kî¨k[µ­çl—O.Oû[ uØ¡Â[ÊúMZ&ÅÃÙ¨ˆîåž‘ýœ®9û]zN1Ÿ^¥Ü ë72éxo õ"Î~O·R®­Öì)ÚgLqŠ3è­§±~“–ÉFÈÑÄaUÚë©q[Õ˜yÛžkò1–Ò·ˆ¹}“Éï¾iý!Ü}ý¦eKÛá(•gF–·Âl/yOg¹»O[ciXñÝAj^½U‹Ã™´’ W©ÞOŠM!µžsU­ÄV2ß®PqŽ?çîë7ç8k'_ÓôšØË=bÓÕžµb*¥UÛzŽ=­=ÕFõ1v­bcnZh1gbWIDAT„î¾FJ³Ü8yÿšœ”8ãæ‡·É—‡´pÇB‰MÎÞq×Ѐ{¶ùÎï!‡Ð±PÖoBgôtÁúMè‰õ›P…õ›œ ± €Gw_¿ Û)þö½-O{òõ¿«ÊîÝë7aQo ^¸ÚºnÛ0kKAέ×owë[ DÒÓ‘kÏÜ© wȽ…•ïï—×ö–4íPÓ¥õ:oÚ½OíÖë7å*ß·J«!¶çiÛè-ñ]¥kzKTáZ‡tïóÚð·—¹îXÜGÏÊÞú ™ë ÛªqOßäïàÄ}ì;l­ª¬èè»÷y±~“ëjœš8ßÔ‘ÃÖ>K÷>ÖoD#çjf–ÄIDAT£ªqj;Ü_´}Y|,Ýû,X¿i“ÜîùA×±õñû°A`Z~=toçX¿IË07­°¾—g™o²g"Î gÄÖœ¦bÇpÒ½9;ÇúM… í{ŠÕ¸3½{ÛPù¯ý»¹âö¶SßPÜ>ÝûX#°Z?„± N9¼øVéÂX¿ ÑgÐë7¡'ÖoBÖop2Ä&±~Sÿ Ûþ¶ùb.|hØë7ðèîë7Ó*Ç+î©'Qö¿†°©ÓÃ}–×—oÔºûúMÆ´U{›è—bÔÔz°ï‰[aý&kZû@Ø‹¸px nЀõ›êî7·ËüÎh%¤X¿Éš6£©é9IDATºõè›ùÍÑJH±~SuÚtb»-ó;”¯v® ܺûúMö´ßÌÚ=ßÊ5†rù\O:p½í¤ãòî¾~S[‰Ñ‹ô T2ÏUãbrÇh<³À#bX¿ ÑgÐE!6ã¸O=ÜÓ4MâvîéxDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± ùiwÃIDAT€GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xôoq÷û½C= ôø|>ÊÛã8îV·5MS´¥0nJÀ˜oà± €GÄ&›xDlà± €GÄ&›xDlà± €GÄ&›xDlà± €Gåµå°›S,ã÷z½¢-§¨¶]z€8±É—ŸŸŸ£« ™¦iÇtU/çÕ¶Ë öGlrÇó…ñ~¿saÈsµí”ÄΘoà± €GÄ&›xDlà± €Gü†à žÏçüBû.*IDAT|êünô–¸q7K…gz5ŠU}>ŸG¶Ã¸ ‡ù|>sL‰BU•5iáã¦Ó[†Ïç3A8.‰¢š‡±&­gôîò_crœã¦k –¾Ñ•¥†âx*}w‰>áþ]†c8±éâı øÇ=ÜÑÇ;ÅÑÃ¥k 6[8á²¼8û°H¯ñèÎ~ø˜›® šÿ‰ƒW#‹Üô¼>moùa¾œc¾éšÒÙâÜÆÍ_Ï AYj(FñÝh\IŽsaÜtnâÕ½.nÜŸRzú–XÿªpFŒ›xDlà± €GÄ&›xÄ÷t¾LÓtÆÇ½´ÚðìÁw®®Œã6X ^0IDATxtÊÒÇ=¢Úv×xžÕÙ›xÄ|ˆM<"6ðˆØÀ#bþpjhN[”IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/tcpsamplerconfig.png0000644000175000017500000001710512032647206024421 0ustar ebourgebourg‰PNG  IHDRëûän*½PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<±´Øš `ņ¶@5+šý1kÐ&]’¶ÉÔb©HK®ìÙZ’Ú^–Ô¡± o¨X%‘"ERäÝ9÷^’—e+i‰æ÷c“¼÷ÜsϹ<ç{—âý!A”4€Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö€Ö´´´´À¥<³hK/9‰Âþ¸¨ùéßUÈÉ£BÅäÃÊÆH ö­ç´¦ŠMnã%åb9ûÖ?éLe¹·F=«T}|£}زÖÕx;¥—¯5UJ¯CìÑoÇØÓ ¶TÜ~¥¾ö4@£¯=™sóüÑYt (œÖ™‘8Öi7šÄ˜{`¼EÞte­{hÒ$$Ý=gn»ÎX‡Ýhxé¹·Ð{‚ˆQÜ‘q}‰ŒF‘*›ÎÔ) e&ŠÉK"Ò4Ò [öûIÔ±hÆF_ü«DySÔ­1óµËÞD™E«ìî©0ÖðÓè’§ŒŸ:ä'½‘¨²eÂÄVâÞXRg¬äÛß^ —W×iXÐÔFNé¬[îÑš÷#š…Ózœôü¥¢9•P•¼TEÔN<¤áòóå ì饗ˆÎÄYìÁ‡û¹ìémy‡èBtHYY”#“Ie|ÇäC×Ù³£…‡în¶?øAæ0"‡Yô4ŽNÔújÖ÷3òE«Q^yg¼—蓵µ•||¾¤‹ïç<]0ý襞sÏtŠðµÚ+´Ðí—ƒœÀÐeí³/êyò3fE뙋Rßõ³VÑ{ì‚…ŸFW„`û×”!¢sÍ: Pëšu»X­×É‹ýôÔ§"ƒd¯×Òî+QoTÎkÔ<ùÕõ 4ÄejÑP=E•†žy¦~% R•&«†LäZgKµ,FRë4WOVt(ä÷0¯È¾hUñ0 —ŸÑRdq€'ãLÉW“j_^¥ôW8ÊÉ£ÉQz’§VÈ›¤Ý†Tµ R+þ «u¦c®Æè’©jí¦Ï^§B¬ÑÑ7K¾Éêê¶»_meVFï=×ßÖ|ZÔP˜D1ŸAËêO”ÑÕ ntˆm„©È¹GÍZòE1ògÝÞu› ´£äMó+Øšê`®Ýâ")ßÃü ùÄgm3ÙgÒR y:²ÐýçD•äI&š˜üs¡#oòô": r\?wLzuXÖmz~¾Gz½À5{€…òƒl_CäãlL¶¤ÎNöüŸ«%|¾K.½‘…ööãliì†%×aˆÆ: 2^¯+¼"5µ•ë¶TÔ_ ¾^SË.UëÎ…ÊkŒtϺô†ñ&£ü¿òfë©Å¬õнf—‘‘tVHä]ë¦ö·Øó¯£¾%ùªÀíëè9 ‘AK£ó¼,ÜeqDu&ŒlpRŒlêäØA¾µ^;¶ÄžíVÉlN£œAç*:•eµxSy¦âõá[_ܰMZ×èÛ‰Û¯¿Ó—^IWÅM±’Z»©ÜG6õõ …º6%£ƒ==AÇÃÙÉ:úUÜæÎqm*_PŽlvôνr‹Rð!ò?®“ÈgÒxeqnÁ¢é|xælΛúG†sG×#ÒëÚ@›'åÚ-µš£´\ÅðáQùÄf6ÿ›ÞÛüãmG)oÀmP¿Ð²Á½;”[ý€ÛŠa ËÈÛ €£æÊJè˜m Šh\7¿#¶y2P$DÚ öÐR Îò(Œ²q~¶MSÇN\›‚â×+Z¼Óâé'=¤yƒ=Ì–¾u¶.µÖ°g¡±ñ„[œ˜oAc‚Ííyfl~ûvjÏ üF”d¼@‰Äë-[ž¥1;( ­cŠvP*Z‡@¼´´´Àv_›n;ðþyǼ3µN è_ö^Ão@iàC¼pm ´@‘£º6•o+rRÔ³J5¦2¶ju–²ÌºÓ¶öþéèR#© ÀíÕ (Æu§SzÄg*î}U2Drî¶óªÖ¥YìF ‚âa|'Œ‚dˆÄ¨¡°zÝf#Ñ75íØRdæÆ²Kù0<ÓÜ ‰‘œu½0LQ÷”k6I±™iÙ$iÙ=–·Ed[¥@`Ú‘ö“l•Ð`;´¾BUéeýS¯:¬–N/[ˆXû–v“µxº,÷ÈfHnÓî{¢>ZìÞÝØã&w¯b’3‰:SZ±˜Qz{æ>‘`ƒz5ìÛ•UŒ3ýÓ5§rΘtÛ¤uç­\(öï6WDŽcò»¢FéíMô¬L£?Ë.f퇠æÑßÛäý\ܳtzö†ßf£¤oÊå9=¥  S•³%ã3?ms³t·-,åc) ˜\¯X†w›äÜã øoLGè´×5å‰Nº\^i{LónºßŸž•îïñ_¯Êxý<›¹‘’-(¾@Š.N{§§æãl‡)¹¬ÈìeJ¸§ù ™q¦1¶­üúpNÉ×åùMk•µ9³6õ²Ï)Ãõ溞â_ÁŽK¿{zÒ¬œ¼ÕttÜZÉ=c. ‡xꛎw¿Òïþ“¸”Ÿ°ÚT©`!M\žÝÛ«–ý4Ù°Ïow<õéCoýïÖ>ý†rÿå½¼Û=½WVHå+¬ÿ¹×Ï#4ÙxÀ‘U¼{àJbÿ™fE¬¬ÏíŸhô½(—µbÝ?Vãï¾e9çû^¹ÿÀD£–V ÑÉÌÞ ciNmn‰ž|Zòs©j¥e2ð Tm pjªKU´—ÎYÊÄ¢­¿x›‰_c¤½¢ŸySù´æMÝy´äèm ë.£†žcº3h)` ÖÀ^T9â4g”$V¤˜@òúÑPrM súgšIÑ+«Âɵ£”Å*Y¥ ÷b—|ôåÿx;nE ¢“–›ÅëêwhŸ°Ð §ç$H2·iIò—¨ø¯Ðc×m©h„¸gŒvlU 8´é|á—º;PŽÞ–cp9ªt®Ò©S¬·EÒôŸZU稷÷’ÃR£äÍxýdEéG/Ù#ZE¤£(e <û¼ÿGö¼¬ãj/„NB·¼6UPû¹T’(»½§¾†ô_mo_V{Æhtg†&5kòb£’®Êý¨ŠF‡Ò·î¾‹ÑN;×z’ÄúXñRt1Ö'eå²ìƒÉqöò°Èr.îNÞ‘7uÓï×3~.ÕôêÿÄ¢ðUÛ,Êo}Ö鯦š,ÏãžžQc*(Vtô+îÜc¤È«¬ƒ5ã׎¦Wwk…‘ž³ˆFɲ/¢ ½ª*K¡–"‡¹„Ú46ÞŠ¤½Óצ٨ý\ÌgÄr&qÓ…Eã„•^]à_°[Ï/ˆÜ9Fÿ‰ŒgŒÆ@µšT>P¬˜Î‡gΚÉ0¹xdÒH¿v,r‹}®Ùrn–Æëåá/R³ÁÞŠ/¢ ÓùeUY Æ ¿ìk`9ÏÔQTºÎ-4Yþ0¡™b¦)³^Ü7ÑÜñºü=ÌÌ–"dá3/óu@ÿn±potS1L†×BÓSg-P H#¾²œ·²‚Vññ&ï­~} Ö Í_Œ½kû¯M¸‹€Ö´´´ÀÎe»=îJÏ­Ô¼ÍMh.Î*óPë¶û9–Úü{¯íÝÖ&ÌOý Ûò–·X+b˜û ó•Ê[ö!^¸6Zà®`ݵéÕ]¡ÍaØè²–lê¶qÉQF…ç¿WʧoÒ͵ªÓ¢K7oSf"ûØâ*ÕÞhÝDNå·ø¾«MU;g\oêlÚýÚ±M]ñzo«Fç}Æ×=¥=À8ï3kÊJ9ؽ¥6½}©ÏVÜ[ß¹)§q+ﻩ»}ëaŠT>ù$‘¸jëDýëëü‡ëîî§z•§¬Ê÷¬ö½¥gÏIw\¬4êlôTGÜD~²jÏrÒ`’nÐò,‹&#;£ÏPs¦ ­lœ*jY;“/(ÔXˆ·g‚zNU›Úd×Ö¦]+f1ÀÚ”(øØ?7”%ý¬,‚ÔùhÂ¥¡ÿ´¼_@#Ë奤©ÆFC±t?&ýA¡¼á~ˆ[®²ŠFHzV1¾°*jÝ­ì=)oÔ—Õefp)øøË:e[ZƒùÑʺq½šŽÎð»¢õu|”©ùÍxwŒâÝc}õ–.žR«ŒIö ¿oÖ´ûžþOŸu°ýo›!o§©¡#ÀsøºLÖ£|éå,Ç(JR‰3Nka³±Ó/µç½i !{ «mú,CíÔ8À?fc/÷,Ñ—;¬¦®%Ul‘¨rh Ã"ËŠµ¿jÎôc°ÃÚØã¾ò¡¸ÓWPÖÑ\ï®–ã\=¦ù:VI3qÓuOj›¤ÁüÅë´>?N½æô%ÒJƒé#-s…U븷Õ(;™zù¯õwi|¿?ÜÀbüŸWÐÙ^µÕléCÂøñ&üNY¦1Ȇ5gIëâzžµK^ºÓ½FÕ ¦¾¬; x›ê+¥;;-Z–ùôAmªòÑ„ÊM£~š‘…]¨I}Y™éÇi+ò'ù«´Ùœ'EG"Íÿæ==™ ’«–^G'ÙÚ\•ä_ m“4É›VÖi½µùMŸ§ç¨­•d‹ÝX0«MÒ¾6â6©{Hj>ÆöÓ¥ †ØÉÛÖÆöçÉ÷KÙUwœÛ\¾™K{T·¹üçsC Ajaõ=9r›¦I·)[äÆIú|vl;V>hï(eh‘zQúq€òå á¼<º:MŠŽêì=OÀSk{•¿?®™û‰SÛÒ,P¼N‚ÁøfûŠÚCŒ0„o¯5ÂмÁ/4–¨é;/e¥§ øââÚ–b'é/K<‚áãT?=Aɲuí/·©}p}˜'Ýüí<›‘TÓqéõÛ¹ŽEéÇ=דùúÚLk:z!õc ¢„†Õ\Îß_ú­e›n,†™±=+VQ 3Vb6ÅŠÉø:7ÂxÂÑl# £Ca¢kÜÉ´äKÆŽl)!cî³RÙÙ%ú²?e1çHÔR› ó¯ÍîYa™Õ}&4ú“ÖW/ªŽem?¾@‘(S7JÙr•ƱPLy3û4â_mÂì¬Ò‘_¥Étc˜kpÓ|ieÖ=çrͯ#ã…Ź”q€ÆÈ0 “_tg[ ˆünk«ÃýÃì"êN,Ͱ¸Œ7åÿâ¹xáÇ–R&uö9u›Ö9×™4W{&npã w>í*šâÓ æI?é]š\;()ý(õ{Õæãgz†Á%EGgÝ®3ÜW¥Ìs¦Ž,Ÿ_òd”¶ O¼Å4è™›hÈۛݤgFÁð•Úïëönkòú·ì™ñá«ÜøÚeó_ïÜîÝ8^à2zçþ„­ƒmå>*­ïõ¡¿‹¯ ·§×¶XëvkÝ| Z-¾&Üž^Ûj­Û?®C¬EØ„{‹ñâ÷ë TÈ×[0·Q Qj½¥uÌlTJ”\o—#vF˜_" ^Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:(u¶÷7½Y¿½7kãú&0^4]T…ªâb¦t7ÆuÑëååÖŠ¼–ÏŒor«øø€ƒýøóátbÂD±RYyšåû¤SÅŽ+ôúÌÁoTGª|öÏ‹þƸ®àühCÏó[>w2¾‰ß Àÿ‰Â)a0“èílÞÝtl1µz GYXcäüHÙ‘È­@*_®Ý ­g¨¢’è™vye‹5î¸ÄÏκ¦&(yÒåòHþ¢oÊ5›`ªtMùyŽð¬+Â^"³ÓË$z§¦½"fÛæ.>âòR¼Ó.Ϲ잫곋vQ#ÑžI Ñ U9[”ú¦¤1œÓ#ï雚–ƒpñ_)(ÕsR2ÍJ°£œ ´ÅéßmªßfóòE¹t7´ž!Bäë²ÔwÕ©÷ìj‰.Rð]k]—j:¬M=nòu*–ÓqË †W¬Kè´Z:—èPçZŽ/îVœŒ}ƺ>.¯šU•Üë8Õšpœ¢+޾Lb5µßàþœr}3d‡O궘:d±‡ïáÎ?Ô¿+íœi÷=½¾ßS˜>EÚLiŽ„£ÏÑË ºZO½¶&˜~tUÈÎvhå½Fn&<)ÙT³hBÇmŠÃô¦–¸¯¬¾Jò#” ý²‘p„ ÎÆÌ9¤×Jeê+eßT¼ÞËLêã½c™Dë8õ\¸ªªOÆ YƒŸ¤šZ%U`‡&ƒVŽnvi|s´ª£(ûXPùêõ²²•ºZOGÀ—Gé:“kÛ¾lÏã·ìÑ#Ÿ ³´}§(&…Ù²¥êßP¿FÊ©áIŠ“1ËÕJqê£~U q²rf„HtŠþ8Þ;Þ“I¬h~sŒŽYUõɘöð³åÇ)+g’ŒºctªM6µ ŒÕÓP•=’\+SŸNã=ÊÝïaÒh-G>ñ¢†žé—¿èpŽIþÜ‹—–ñx$eˆìlŠÿ—[N¯sU–s ¢(¨O÷å²ñï9EôýÑñžÑÕå¤Aÿf;y¶³ø‹#RQÉq¥ÒUî<˜Î´Dïð@H{lâÄÕ^Ýã1©üñºãzýø÷5t4as“ÓédÁ{üKm+«£Ï‘ž›K†Èn2)r”$[a‰jåz$Sà'èxXªª;Ë]y¢G.Ÿ½¢»Kš²¿O/þ„'Jv¿ýÝÀÒ×ꤓ@3¼lù)=®ø¿üòê/øÂ_jàÚ­ü‚où±&¡úáàò7ŒÒŽì¡¼(ÛtÙøŠ¥¬ü3a=K<ÿÝ€*gºÊ•ß'ºº®%®õÚ×>’¾ž¬~È}ÝX¦ÔWu"V+ž@?§Ç+ñ®|ÝÂVÒO×’T¹Œmýôƒ!Í/èqÍÐ/ÇU˜Zù?¥|öï#Ztx “åI}ÇñÕ–%ÊÝü9”Ÿ?à'i¶ï²JÓ>£R>«ç0~#­o›ÖÕ+ùâtRõ×TÂïaÀצwšhïÞÂWîŠkS u u u u u u u6Aaþ–„ÉíÀNa/Æu€hhhhhhhhh@ë@ë@ë@ë@ë@ë@ë@ëÜ‚ìùM‰ÖNÊç'¥ô£·â&3™°s´îÌ%ÕƒrÒˆÜ}1ŒæA;ŸcôüwáoHZÏžïT™´´üóAýÏ”¹K=hX°C¨K/fÎGx—‚¼Kâu u u u u u u u u u­­­­­­­pû”¤Ô½hX€qhhhhh@ë@ë@ë@ë@ë@ëÿVíÂãh¥‚æIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/resultstatusactionhandler.png0000644000175000017500000004173412032647206026404 0ustar ebourgebourg‰PNG  IHDRíŒÞ fç[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí¸UÅõö£&v£‚¢H‘¢ˆtA:F@¢‚‚ †((½HQ‘""A@á"Å‚"Dº VP#REz‘"¢¢¨‰¢FbÉÿ§+ß|óì2{Ÿsïåž²îsŸóÌž½fÍÌ»÷ygÍš9³Žúꫯ~¥Š€" (i‹ÀÑiÛrm¸" (ŠÀÏ(ë{ (Š@z# <žÞÏO[¯(Š€ò¸¾Š€" ¤7¿Nµæ¿øâ‹o¼ñF©R¥ºví¿mŸÿò÷ÛßþöŒ3Î8î¸ãâLSÉ;vìÙ³ç´ÓN»è¢‹Ò´ ¦Ù{÷î;v,—}úô)R¤‰äÞ£PŠ@¶!Êã?üðÓO?mà€2.¸à‚N:sÎ9&3?ÐÓúõë¿ÿþû˜Ê?þøã1cÆlÛ¶ÍÈ׫WoÈ!æ2¥Ó§OŸ5kM5jTõêÕ“nÛ«¯¾ÊÓ©T©R~ð¸<ú³Ï>{Ú´i¦…‹/¾÷Þ{¹„d=öX“ŸûÄáÇyâè9tèhKôÈ}Tƒ"Ö„ò¸ôêôÓO?ÿüó±þØž¸bÅŠ÷ßêÔ©yû5vÃGo¾ù&ßðÎ;JÞ}÷Ýï½÷Þ™gžyùå—ÿðÃ6løñÇE2²¬­0!a»`üôÿûßE‹‰üÂ… ãó¸¿m<”?þñÅŠ‹_»J*Š@¦"ÁãeË–6lÿûßÿþøãÿë_ÿÚ½{w¹råŽo½õÖŒ3Š-ÈãxS qsÓM7Õ®]›Ä 7ÜðÓO?IóÜe=]HHØS6æ%U|öÙg¿ûÝïœ8pÒI'Å)ëoÛ%¿üÅ)«2Š€"ñDð¸é­Zµàq.mïó¦M› Y¬Å“O>¹f͚ݺuûÍo~#E^y啵k×"À%NÏ›o¾™!ôc=¶nݺjÕªuìØ‘Ë;wN˜0DNNÎ 'œ@Âþ[¾|ù¼yóÈùâ‹/zôèQ±bEª°¨î裆¸wíÚ%<Î]rø ,‹µþÚk¯!üÑGáLÇÓ¡C‡ã?>P8NSúi7Ò¤&=pàÀüç?ÿ¡%W^y¥¹Kâƒ>ÀñÂÈôõ×_3ÃhРAÛ¶mÛöÌ3Ï,Y²¤téÒø”EHâáY ¹D‰×\sMýúõå–¾ñÆ'Mš´yóf2ýë_)nמP: I”ĩ޾Ï;÷“O>9ï¼óš5kYuØ›fꢿ“'O汊Û*R¡ (™„@Üý*K—.¥Û !ýg5²ÿþ8¦/¾øâ£Ž:jþüù£G–[¤ñY¯^½¢¬S§îŽýû÷Ë-,zçŸÿü§\â0á’?cDK¾|°Œ¤¡æßÿþ÷0¯}—4nŸ /¼à µóÍ7F °,ôw¨xñâ8%¨úÙgŸ…¬)(ÙTG7M3LâàÁƒ V¡B…*Uª0Œ‘/´nð3«ÀNgp´cŽ9F¦mc"hð gÈìÝ»7Ÿ¬a4lØ?³¨9sæÈ]Þ¾};ãÝÿ÷¿ÿ½lÙ2XÏT–Àsmþ<+aH¢*²º×_}Ĉï¾ûnùòåO=õTq»‡µ|Ç›&u½óÎ;ƒ¦ûÆÃîЦ·ÌC ÂÿôÓOùÂc|‰Ñm¬?¨Ëòmß¾}ëÖ­¿üòK>ù¾á1Ào€¤jÔ¨¹ä2ñ°°¨wÝuW ª^½z1œÀM¸žW­ZÕ½{÷&Mš X¶]»v·Ür‹ìè„Ä¥©ÂÕÙ™ uò‚›6mŠ>™”0BÄ,'’’ãÇUß÷ÝwŸLkdl‹lë'Nä_Ë AƒÐ†ßœµÊÙ³g_zé¥ ½ÒfŒ}F¯û￟5ÒqãÆaáîÛ·ï”SN‘»þOÚæ°”Ã4zªc‘@–Oé×=÷܃¾ºP9ìÉ ùŽ3èK½eªÔbò%«—Jqˆ3¢È\wü“ à)Ë‚ Ô -˜À¬s2WÀ’Å$ä'N~ar"›êè¦4O>]è좱óÉ¡ý Qù-[¶d;:q 1R²3š1Fä=±•Hš²ø²±è™ß° rdûÐm·Ýæ—Ì“7’‘UðSÆxÄXEÇmÂÚ‰ {oZd]* dGÉÊdnºÊ.‘o¿ý–û˜¢üï¾û‚_9òø70µü·ÂrðkãöˆYÛÄàÅš£.ãNµõØeÙdž¼¬‚R³µâ‡‘"¶09‘MutÓnCü4Íc }ñ/HzÚæ×ɨFyaœè/’tN$’nÍÌíp°ˆËÈ-iiF@Š@v"<žÀi¯E@HâúUR¤¹Ú E@PÊã@ôRP4C@y<͘6WPÊã@ôRP4C@y<͘6WPÊã@ôRP4C@y<͘6WPÁ¿Ëùå—=rz©(Š€"P€Ë 6 ˜Ç¥L`ÍTE@8ÂHXͰJCyœaܦ+Ïós¦ÌËsªPPôB o§Vî»xÜ]òÈÜÑïi™ê´E@PR ìi9øÏÑ*]çt€£·E@(`â¸%”Ç ø!iõŠ€" äìåqN3—¨Ð9<øGÐêÑ[ò·uëVÉŒ²§¸^*Š@¢Dðx«V­þüç?sT´è%üÑ$*[¢5åF¾Y³fÔKðOA°"7ªLYâÇÀ\úÄd Q)¨zùòå~|ʹãŽ;ˆø#açâTAPéÀhpqÊ"¶[Nä‰þa‡WŽ©Ä#n†‰2 ²]PÓŠ€"<ŽRâ¥199íyXªÿþK—.…ÇÇŒC8…<Ôܹsgÿ~yLu ÌIB¯*ž ÎÔ(i·$RÀL¶‚x@Ç Ú\ €dÚ¨víÚa½¥(™@4‚‡Èœ~ƒtüøñDe»æškBOh7‰ømð|饗ڴiÓ­[·Ý»w4òúë¯'Ƙ!ß?üKâ/wíÚuÛ¶mDy‡V¯^íÆšð1Äù„㈠#’Ô:uÂN‡å‰=$™§ÐýþðBwJÊßyçIñ’˜’æó‘G!<1}¡#„C3ùR‹ô‹¸< òH>úè£ô±iÓ¦ìXÒ#X©¿m¦FI`Cʨ}á…Ì-‚Ýzë­ÄÛ¼ì²Ëb穈0¡„E±^½zÑq¦PDv–âÄA¥ÒAƒQ–èwFgœ„¿” Tȃ ¿´à¢õ+|R¨¢<šç/¢9Š€"hçûO䳉'öÕ°±ƒù®Y³Æ„<ÇåÃã*T 210!¦óÎ;oóæÍ2÷çK>`Àl| {lĈ0戹lˆ8¬éȉ¸téÒ&|0Á—¡­ùóç k‚P*a”¡3f÷P”L >|XÔ~òÉ'6Ñ´mÛ¶D‰ „÷´ã¨•)S†Ž“Ïö{¡i$±=©Ž]SÜÁ¥mót–¾4oÞ_ñ—%äø0ì¬Ê ¦žŠèÝG9bDƒ#°'#(ƒëöíÛQÎ]ÚI¬QÆ*Æ€À%B×ã‘¿;wš&ùû¦pÔ¨Q<å 0Q£ fôð?)QÅTQ‡–ÛšV„ˆæq‚üöìÙ“=Œp¨­®¬W¯Þ¹çžË·}Ó¦MæÖ 'œ€ëƒo&æ3̘““ƒÙÅ]Ìp>aybHbAs€ôŸþ96;Œ Ý“i”ø D†e¦N*wá}ê­Y³&îûŠ+®_¿ž|Æþ30®Ï:ë,¿O±‰ úL«<·0´™p0€1ð@ýI‚ÿý™}0¾0¦GÀ£ËȶáV&¶r­Zµ˜v€*Ã!¥lM¯i Ñ,‰½X‘ˆaÓ¤ÆoÚXôü4—Ù9ŒXˆùÆÃP${÷î5þ>Ê-BBEoܸ‘9ÐI'T§NÚIOOJ(…ïß.®iE@p#ëw@Ø€Löq›0lj„™gÙo i;Zî™gž •S+<QÄþV™[³gÏ–Ÿ™rÛ\ÎÝPÈ”àÈ h`ð@g;IŒó„ºDÃÈ‘#1öiíàÁƒsé8n×®]5c—\F#ÓH¯¾ú*†ð®]»`"“ïN¸Û†1Έ2a”wÜq˜·¸nè/HVªTÉ­™AY3taãf‘"Å‹—„'¶Qȉ-—¬sšUʰ>z2Ùâ9òÜBO"ìI!ÛS\/EÀ@,GÖ7ßF±¹Ä™ðä“O²ÚÆf‰¾}ûÆßÁ"ê! LwËšUG‘ĪÅ  ¸w0 [•¿ÒÀ¶Iq6¨üãÿhݺ5æ69+>Ö0ÀуIŽ‘Vù˜´û÷ï7?ýböã V[OXÚÑGO©Ïö8·lD2ìIyôè¥" $‡@´_Eô•ÌÙM†¬þ±¹(gã€62 6~`¼³?dÉ’%˜xYã—îÚµk‹Ø™l‰ÃÌœ9s&™˜œ8 ¦OŸ.U‹û6Ä/?çŠ+®@†)?Ÿ8@àA‰«ÄãåçnÑ¢EÍ:-—òGŽ˜¥p(k¤bìI¼ôg4îfzf)e¸ôWضÿÕ÷«_1TÀ¼xäÙìÈk`…oDºI—qá,¢jŠØ‰FÚÃ@ âªÂFnذ¡QžD"¬~UL *ôì³Ï2LâdgðPyà“òëÑE@H¸<Žvv˜ð…”j4h€ôþûïg¡3÷1ËhqZpÊ)§`Pc ±2Æz>²’/Ÿ‘`Ovn°až…¬Y=có F:þ_¶mPœ–0u¸úê«Ù ÃÕ‘yíµ×²œöãÀ¼õÔÒ¢E‹çž{ŽÆØùp7LJŒqÜ>âT1’xöñ``2ÓœÑØþâ"7•¶ÍT ²Âi.I\yå• xp÷=÷ÜàÂ]j¤©Ü²+’"x6pÚà­¢ïl®¯[·®­-ÑtXõ03cöÀš3íä%±=iÈ>©@=š©(I p”lŠð”„>gÝa6;‹gS‘9u˜ûÕÈÛ ìb¾í¸tíLOšƒ✓Eíx]Ä"ð¹Ãàø^ŒB86 k!†$nSO=ÕÈ“€@™+`ä2í0ù¶¤é>Õ™²¶@`¥þ¶åîO ´Y•1»"» ËÈ “tÖÎL:ØÇ@mÌŠ@LœBdúŸT˜¤æ+Š€ 0hÌdhÍÁÉqý㘠‰s âpdŠ¥ìˆË_»aU£Äæb“i£¿TˆßÆÈH–4Ý·ËÚ•ÚÂåîKϦ»"» .û2—éÀ>ê´ÇÑ@2ýO*LRóE >ÿßb_F%E@PR\ÙãG lÀˆslãh‰V¡(Š@j"Ò§œ(MÄþ¤)Ü%b'k8±–íÛ·—Sa¡TB(¼fΜ9K{ûí·ž4Aúõë'AjâÈ0f“󬉙€<á%©—gæ5iÒ„°ÈÔËe¹råˆËƒs"]ø>´ N'–24Œ#—/_N :N$ç°ò|‚RÕ*Š€"P ¸üãÄjÀ3^­Z5OXŠ¿…€™OèÞ½;q$æÍ›Glé1Þ¦L`øãH Ä€U S†“»ÑÏQÝDÚ¤ö#F@Ó”E9zˆTµjUBüP/™D<€Ü9ù—•™Ä›O\ˆ[r8^œhÂ&p4C?E@È\ö¸œmx®4LM¨ûfÍš¡†h÷K—.…¸‰T)¡ˆê0fÌÎï&Œ'Ÿ999(qË0± dnôý„+ƒ¦1ç‰U&Sh0@Ɖ •£°dÉ’8A êÕ«Ç%ce €@À¹FI“h$V¼@2íÑ„" (iŠ€Ë'½Z¿~½¿o‹ÐnÜ‚aX‚Ož"‰óš&ÒJdKø7?þ¸ÍÉžGØã" 3ʾoOa.ó;ºŸˆým096G3´äßèbjÔ„" (Ž€Ë?^àÓ(Š€" D"jcÆGVE@PG Ø?n;( ¼‰ÚE@P‹;l‡I+”Š€" (©†€úÇSí‰h{E@H åñÄðRiE@PR `¿J>µrÓ¦Mœm+'ÐæSajùe?@åža¹ÉÏWå¦aÆïQW®\ÉÉe×^{­ç¤#–‡ ~1ÀÑ ü°–¿}âIBæÈ@—Dôˆ"F$cs$ìªU«° aÆ6mÚÈï'ûÌõí0=“&M’Sd…ãgzÔÆ/˜„䑬ËÝ<ÎéE€Õ9è‘D¾6ŒÓlf͚šÄÉ1–r¼¥»yzWP dxœÓƉÑÙ*(HT‡Ê•+Këù¶ÃÔDÿÙ9qãP¼G_zé¥:u2¥ì0=&“„;œö²'â]Öý‡0CŽÈDvAId‰ã?ç2S ¬9b aAF’‚žºÈ„×øÄP%>ß|[?³tNž"2âO|U¶$›. qrŠ/Î' ÌU9„€sµLÔ!» Iãj X3;FÄí`ïâà¸sq7A¯"ù¦ÜÝAG-¦%ž„£®B… ùIœQ›„* IÁ#J"£™ºˆ˜Ç¼sçÎláèÛ·/svÓ5è»~Ê”)Ó¦MC€|(R¹Ñ`ŽZŒŒ$Lí+fp1ígúÅàMŒB÷…ußÓ0÷¥ÁßK´ ‰ÊSW¯ŠÝBM+)‹@bþqœ'ÄÎ:!V†Ó·lÙ‚}*XöÆñÇ›>ÛazlŒprá„lµñUaŽÑ6Z‹¯D'ê]}§õ,9²±\öÿI×ZµjU¾|ùyóæá‹ 'Žr“v×bÄì†%ZWd,Vã˱={ö°® ¡ƒXd)Ó¶À„?kàBÄF2Ñ.$*OEñ_Ó*M(i@b<¾hÑ"¢íȾ7éqè± ÉÇ'BkD999œwÎþ ÓÃ7–(=‹/¶áa¬{ 92ÑpB¶Úøªp§0{ÀÕ˶k û)Q‡Ø¨€¡mÛ¶ø‘÷îÝk·ÓÓñá8f…“ÅL|Jìß0ò¸áp³â… üE妬p×b$m­+² è›`L¬è²7ZïÞ½Y*ˆ,eÚ˜àݘ?¾àÏîIL¢]HTžêâ¿*ž¶é¥"âŸw(Æ)“„£5@,V›ëÉ+ýSjÉM8!Ú˜ªÃQëÙÆuÈ®‹íóâGÜÄ‘tÕ' IDAT.÷3ŽTX‡x¡ð8]‹¯* ;ûì³ã÷+‰ç˜mPðmåm™2e A%våÊ•ž>}úYgç‘Ì„x@'ÿ3^R¯¶Áôµå+MÚŸ òË/¿|ÕUWA7DãýðÃß{ï=¿Xœœ›o¾ù³Ï>cTáI“&9KÆQ˜´Œ€³øÇ IaÏvèÐá¶Ûn«P¡ÂðáÃ:t(Ú‹ß©S'ÊÆŒt=Š)2dÈÒ ''NDaÑ¢E)ß9c@@‰ÿ/ŒešMDcì‘3ù£ ¿;n4j×®Í`†Ý»w¯S§Ž]5*åRèC’ÈÚ¶ÀòåËm$¹%p¡ƒ™âøÑ?~<æ‹/¾¨\¹2¦w©R¥(¸sçN&Œ¦<¯ï¿ÿÞÌìêÂÒé]à ˜›7oæµäumܸ±ÿ9†ußÎÏN(Ž=öØeË–]rÉ%õêÕ³Ñ|óá °Å4áõÆœ;wn¿~ýÊ—/ÿÆo,Z´hذa¶†TK§ú~•ý‡~àßZXþ|yU«VMHÜ.ˆ¿eÀ€Û·o‡˜ ©yóæ¾]>ýôS¾*PLÕªU!n‘ñÅÃÚ'žx"<.s1ÄŒ?!°¥öìÙC˜y£vïÞ½¤:DÕXƒ ¢a#FŒ€gE&Χt6ìÓ¯¡J•*pëªU«°Ç9DÀÓ7¬¼ôÒKÀ«N˜0Á_…#‡î{D¸Ð9{öìêÕ«ÃÅhsÌ1Ð7­Y³ÆÌFMÙvíڡ䫯¾rÔx+ ´°÷§   {C|ðÁ>úréÚµ«¼„žçØëÀÌ,„â²Ë.ÃˇŰoß>ƒIØ›ñÇ—wÆ H¾þúë¤1I¿ùæ›Æp1JR-‘ê<~àÐüûQ ËÇEXìDO©Õ«WC1˜u8°”q¹@U†O¡×{ï½WÌF¨œ²%K–„Ä1ØÌO?ýt6.ýEü2’CÕø7° Î?ÿ|¾‡4c÷îÝaÂþ|élا_¢Ä¹ ¿ÿþûôhñâÅÈxºãFƒ•a´OŸ> 4€=1ýµ„å„ÁB«˜ÙÐ÷@4u€šéÓ9çœ食Q„ªëÖ­{õÕWãyOÂoZØûSPо!X$ÅÛÂz5ÈÈÎóÞ‚?? ¡8ùä“™—à Ì ao>Óh&=7ndÚÇëLjmÇ#X¿~½Ç`T¥N"åyüðñxH¾|ÕÞ±¸‰K—.Í-¸¾àñ=I¶µ0t“†ÂxxþâþœøEp Pkôºë®cŕ鶹_aX8þK1J5ꦛn¢/¸³ex³%Ýh°ÅE\%Å‹§³»¬;K¡B…d8 DƒWLÇŽÛ´iwË#xë­·¨«L™2îw¸¾W¨*è1á-e†ŒSävíÚåèiä­ì„¢~ýúL¾1e˜ž Dao>K_•*Uâ•ãw[þí·ßƯŞ7}‘ð¬@Jó8¾ï©3æ|wø‡iÏülQš?.Éä–Ç9Ž4I…3SÎÈKBhÓF.ñðäØÊâó\Æät»”¬ÂÔ‡–|¨DË–-_ü8pì"Ž´.ûÿAm°56jԊܺu«dšîÄDO"Yp´0Ñ[h¼öÚkx'™*ÍŸ?ŸY‹èäëDƒ”OzaðŒYcAˆ Ý„ƒ¦Nzýõ×3G´\æ9*‘P0bœ1ù¬o>ßʯ¿þ·j5àtì<<„¼üóû˜È±”æqàà~äÒ Í¿äT¸pá-Zp‹ÕE¦HP®.Ðð?â™eÞ„· ëÖÀªU«¦q ÉÄÄ’…ñ©9Äì[øðf°fÂ&§üQn1/ÃÂeñdÉ’%Œ´AøÑ.èNK—ýŸ¥°#xk±;ðñaP@è´ I»;n4(K¶lÙ‚‹°X±bÂ2u%‘ˆ›DQÅ$`ÅŠŒµA°ö…^ˆ_kéÒ¥t‡E…o¿ý6‰êü 9ÞŸ‚‚.^ZžP°ŸY^>é¾ý$;¡àíe‰ËåxóqE"oð8 oÈtÍš5MÙ”M¤ô~Päb©DÓ+¯6 .|ñy¹erìss^zÊdÓo?F:\Ƥn;vl—.]¸dÈeÒjô§›7o¾cÇŽ[ù»âŠ+üþL`–OñÇa°B%´ç®»î7n¾rhÉÀáGñÀœDA€¾© Ut“¾÷îݧ*—žî8Ð`ÀÃ.ÆdRÏ [`«’Î DG<Þqëã¦Ä…¸}Ymݺ5þ(–ûpI1ÍŠ4¾<­Jè1a²ÈïªxcyŽeË–5däyŽž.‡]f3ìBƵÂwp<ÀR'[8Àr7óB\äpz¤©“Ÿê¿2H ›Ë%o¤ÉKð…Çâæ“µf¾¶S'ÈÝm‰Ûò˜ä<][À“ƌ·ß'ŸKÖÍÑ9úoÅɉæ"б¸¤måžîøÑ0?wB*É¿-ó~4°¸å×§´ŠÆË®Pù=W.ç¶é%SˆÞ~ˆ¤=ÏÑs×q©P8þ7ßZÁÞŠüPÚðxÁâ˜UµϪ^çIg:£Ba È}"’ÇlÆÜתÒüQb§u/ ¤ñ ]¡0P„ÚãGd­BP䈴ÇÓ`¿Jò½×’Š€" dÊãY𵋊€"Ñ(gôãÕÎ)Š@  <žY»¨(€òxF?^íœ" dÊãY𵋊€"Ñ(gôãÕÎ)Š@  <žY»¨(€òxF?^íœ" dÊãY𵋊€"ÑDœ¯ÂïA3ºûÚ9E@PÒ×ù*iß9í€" (Y€€úU²à!kE £PÏèÇ«S,@@y< ²vQP2åñŒ~¼Ú9E@È”dzà!kE £PÏèÇ«S,@@y< ²vQP2åñŒ~¼Ú9E@È”dzà!kE £PÏèÇ«S,@@y< ²vQP2åñŒ~¼Ú9E@È”dzà!kE £ø?‘š—ÒhˆIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/whilecontroller.png0000644000175000017500000000774012032647206024301 0ustar ebourgebourg‰PNG  IHDRjfmL{sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ)ÂQJ¤`IDATxÚíÏkjÙ–Ç×ÙÜaOÒ³˜\)nšˆ<îà‰Ø7È/é»x7R\B“vRv~@« –6ñ ©‡ÜØò¨‰d —¤)ä4?•ná*™„‡H(L®™Uþ‚Þö`G=êÑhnL}?£ä¸¬stÏZûèZÒ¯¿þJÐ9 —ù@>ä Èà)ÊGbeff&œ-—Õ#ÙðÌÜÜÜL8«)—+33ÓËáÿœ©o¬¥\Ά5 êþíaŒÊÌJ¢ô€ÑzH?N€“ó1&ŸåÔUQ*^ÑUQ]¨w™ÓcÖ)ëß=æúÌ†çæærÙ¬]œÝ~àÅR S^èµOºI–“g¹õ‰ E*òDŒ(š¹›÷˜ˆˆ>óDlÌü÷­'¤‰õããõžhG)±êOcÜâÛÛ™7I’ª)³~¼•<‘½û¤‹sJž)·âOÅcDÄX¡øI¹WŸ%‰sפꙺ€ÂÈ]½¦£&>ª#÷!R`Œ»‚Çï=ªv‘¨ IR§S†ÒLª5£ÑÎr9»=ë—cL8J³†.uQIã,E°ñduç§ ¦|ЈÙJDWÅ;"¢ÜY’ˆ\.—ö̹''ÔeœÛvz£Be”€b;gÔ§XŒT;Ê]ç–¥·öVCÍúeu(&ûgW¥ÚµÝ¹ÅýUmC³t{²us0xò!I&Ç”•±ÂiæN]·æI³…óüi¦T. A±šGÔ%ÈÜâ‹¥Rét:tQÕyi‰ð),¾X»ŽŸŠy"3S[÷$N§Óé ‹3Vˆ|¨ªC3;sd_; ¹8çÜL¥T_Ft‰F ÚãmgéúdëæÂ§ ¨÷AÃŽ)!w꺵›Çˆ(_üD¹³$qn™rT—rML!b#wãJäÖtT\œÎvF”¡ªî‰ýí’E‚uk'·øöŽÖÔàÈÈ,]Ÿ¬v.ž8/š¾2l#ÊçO3ûc2cäšœ&ÈM²,Ÿí›¯ˆÈZUÎ]¡5{÷Æä€SVÿ!®ëbŒ˜­Dù«âM˜Z ¦é+NA+Ûɹ+¤Ù¦52K×'Ûd.M>$ibÒM²\ˆF jœ2b¶äh”£1³I’zò”“sËÒÞŽÇÔjÙH’ɽ)ƒ{"Lhü–G¹”X™ çÈ^7”Øh¨Ùß5¦ l|–ŽN€A^ˆhÄlá¼ÀXõí°yŒ¨@õl‚ýí’%)È9YãÃëÅÿ’ɳ*:rÿ/ºKo(ÖúIMcpÄ …¨×á®ÐQÓ ç!³4;Y;>‰à™y4옲‘æ‹ò@—:¼¥·¼'›<;G!ƒ[­ÒÄz*óYxýöÄÑÚ„$Õ Å¹+tÔ&&ÒGó%‹34K'' ÀGB®S@¼€| Èò€|äùDS\/€ õ>uJóø|ÿÃxÛøì|ûõW/O‡ÍwßàÍà3r?44¤û¶N]@—@>}Q»(œ-×yü2Ž·q¯7~[ùÓfÛÌTßPf³r@ƒzP÷Õæd6íluì†nàiÐ~ë4éßžüÌ¥F¿¿8¹!%º¹þcôË-9Féæúb|ú¥~ÇÆ¹£›å¼L»ç9G÷rp2}¾áÀÇ ÀûPZ0Ù¿º_WÂ^[¥qnnNx(ÕJ‹Ù°8¾’(UJ.®¨uØDFµ¼£‘*–/_½¾üå–ˆn¹|óæÍÅõøûõ«—UÅf³Ûí/E÷~~÷ÚZ¸™“„gWwñg6mu3›¶ÍLͤ™MÛò;XÖ:·q¯Íf«±pjl €Áw0èj¬ä( _§ÓéTÌgá<éßÖ–JóŸMŠã…¨w6H½%+å#AEƒrÛ‹‘¼ÕôY)é7VÈrô‹ñ‹ë¢ÛŸéÕ´¢%7×ã_ŒQbyƒ6ÏÏsÿý'ÚŠeš®Ëkßy.—;ߥee˜9Ix¦õÅcùòÝO¹\î§w—šŽu“:6Îwßð7»UïCip~¾áh:ˆA#k†``¼²¯Å|&´› U†Ícµ”RLÃæ±JÝ£áaµ±µúN‡cã|wü/¬ÿÞ‡ccw|ëK»ÝþåÖøn+Ï@4Ôß58H{#x2è—‰:<îïï‘4ÈGÇ|ûõWCCCØþòÑ¥÷7 €§ ö>äùÊ¥Äê¬?Iî`*•N§ŽÜ~ôB íÎHÆÀ£ÊGîC¤À˜;¤d“$“ç}5)i6¬$[Ÿ gëWródëÝ%d×vL$VæææDcÕ9Òæ£)¶Í„?òÐU>DZcÎ]“vWK‰•€Ì\ÁT*èbr`%QªÚ.Ù:= !;cò)R1Ÿ•ò‘9IšX; ¹8ç\I€X.g·#ùŠÇÔ& 3 OÞGse)eNóŠ²Ø']œçO3ª4´N¶n¤McBvíàÞùa%Ã{ò¬™C¡-O#ÊJ@GxòQÉuªA# =3ŽÉg@®$d7ˆHËjᜢ^§S¿¾ ¯ò!I“nbL>Ó©å4b¶Ö°šGzi؈ÙJœ»º @$“çýñqÐʼnH[ ðxÞ‡ýí’…ó¤UÝÑ̆ÃÙrYM˜~–#ÊÉŒY§¦Þ… ÙÛj(9UcüZÈÅ9YÍ&<š ¼h{ß92oÏú£^g”ˆˆ\ÁÔº$‘H˜^œ œ2wß{L½µL?ꋒص7ךùÀÒéb$êuF¸ëÏéúŸ¹ï”/ªu)0o’rx§è9O:Óz?Ào^èdZôÈ K^´ðUpu-ÐßûÀ ‘º½F@#Øû@>äðœyK<\¾ýú+ÈøÌ æù r?44„/­zã6B>]ùôA>DfóJ¾òjô®ÑVThQ]¡ç…Êålx&üñcXͽÞó¼AƒX,¢­ÍÍ´{ïŒ\„̦m3cè¥Ì¦Íf·Ûív»Í¶ù¿šUlM‡ý¥éÖi¹”X]ŒäÉJ‰ôå¥ýÕíìÎZ¯² ‹ôÅë•ÏÜö¬?In‘*]ûRI6ì Èãÿñ'ún‹W¦èÉÚëŸÍC?l–¤‰·K1¯Óé ¦Ö'º¹Î·ñèûÛeÜëX%º{—i÷<ç¨6øÇóó EVN¦Ï7XÄOÐûèºÂ‹¶K3»»j¸ƒ}äë µ4ÞÜ:š®~‘û“ÿ÷/Þø¯-1EÀ鬫ü¢ë髚1=íÿ®o6S»:ÚYÊJœJ RbET¿ÑxŽsss"_tÝ ¡®½JqµåE®©Ècò¼ºx·)fo>ßÉíŒoÅ2DD7מi(Ä`ÉÇC*¼h‹°(J´í—sSG)ÝûU]¡–NW#‚Û~™±ýÿ©SS©¶‰—u‡-%VüI«/–J§Ó''¡?÷Íæ¶t´öW’ÂN3wDt—9¥)‡©â ¥ÓiQIG»˜Q=‘fíO) º+4¹Èõyì“nÆdmu£db[ãÓrL{'"rlüô*jóÆo±Tm²´©ðRW„¥\.¯ˆs‹y„”ãýœ®®oñª©¶@÷,2§y¢1ópßmn_@§µ<Žè[obÃ5פu{ïü°0FÏ`½Š<¢±¦:áÀåò×ADï»Ëhü–ˆFbç›´aƒ†<ùè¼Â‹hoháõbº–}»§£¡zjsÛ¾•…£Oż[ÕJÖ8E¡#JÝaû:M§"O§¥2±­qßÂ(.ø*Œsßõ—PÏZ᥇Ó5ôí¡fs»¾Õ7kû,éž!I¹\ÚFòdõÅ‚.ÎxL†ÚëÓ¼"OgŒÛx4ÁVÕç)«,Õè…cÚsq}ƒ%;ÞG¯*¼h•HìD4_3õ…Z4±}7e$ÉdÓAa•˜±¹UõfÔZØ/›»è+L‘e¹ê{tìôµhU¼SŒ¡1s1úyš4nçzìæjÙ­: D™“ÄëW/±dB>$“gç(ä¦|Ôë»ñg“Ê¡ØZ—Ng@6RáE(‘pžM†tïl¢P‹•òQ¯³ñÛNW3õZÈÅyRω²¿UfŒ™—ŒÜŸMž÷!·r5ffÂ9î“Í]ôvLY8W6˜*ú¸r3&ûgcWVRŸµPùíOƒ³Î€ÜlÓD\ˆzÕ‡/¹³d›"¢„êiüþ÷þÍÊ®‡Ç¿{Ž—+_úX¦Ý˜Ù€'‚~®Óç„ø -íõ¼Ð¥”XYŒÐÒގǤãz|ÿÃøÉÜ ²±õ×Íwßüæ~2'ܨ±ÈT¨| ±.g?DÆBGúÚž¿‰ìKÒÄúñÞl\jùƒÍýý=’=“»Å³ßûO Thé‡÷žÐG .È÷€| Èò ü?^>­¬[dѵIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/counter.png0000644000175000017500000004556412032647206022552 0ustar ebourgebourg‰PNG  IHDR”Í ô¿9iCCPICC ProfileX…µYTUÍ·Ÿsû—¸t—t÷¤»;Eº»SEPQi’T0ABAJB‘TTD@±xõû¾ÿ«õÖ[ë½YkÎù­={öÄÞ3{ïs`^w DPn©§ÉeïàÈ…À ÀÍ#"TÃÜÜü·egæ†ËS±}Yÿ=ßYh<½"<€Ìaìîáã 4=BÃ#@~é#1‘¡0FõÁ˜.ž Œgö±Ïo¼±Ýa4êµ¥Œ™ÀQ¸¹…û@8Ó¹¢=|`9m0Ä`O¿`hía¬êáëæ sÌ#²{a,èþ/r|þL÷¿eº¹ùü¯åWÁiûE„ºÅý/·ã.AQA„+Ep é¾nàºâé¦m¿Ùàú34ð—Î`ˆÅ+ØÆê v75ûƒU½Ãu-÷…ÌC#5÷1¼>È;4ÒÜúýX¼¯–éþ80¾è¡ó—œR7Ã}Q¸9<ÊÒÆð@÷#¢­t` [´ïkm÷‡gËÓKûðöÓ5øƒ‰~‘ûcÑÁ˜' ÄÈò÷Xy`ˆáð3ˆc ´ÿ<Å€7pƒ[¢á¶^Ã8î÷ 1×>­ÿDÑýÕÏî÷ï%r˜/êï1ÿ¢þ#ÁxÂï¿ènÚögáâ—ôÏÿ*ïWOÉzÉUÉïµ£øQÒ(9”&J¥ŠR\( CÉ¢H( ”JnS„g¹ôk–æ¸/?¨Ù;:/$NÉÖ÷ÏÜÿ^í/n¿ÿrEæ>´Þ¾þ÷ A¤Wlä¾i…„Æ…ûùøFriÀ'×K”Ë ØC\”KZRJúÿÜnÿ?Ëþõ}²üuA ÃÿÐÂwP~ Çþ¡9М Õ—h|ðÎÐäÐåîý›¶4 T°…2À á}–ò@¨`Ì€5pÎðnûÂ6bÀp¤‚t.pT€p 4ƒvpt‡`Œ€ 0 æÀ2X`|ƒ   Zˆâ„ø H"Aªd YB+äCQÐè$”eCPT 5A· .¨…žCóÐ*´ }E :;‚! !4FkÄa„" HFœCä!ÊWmˆ.Äb1‡XCl#’É€äFŠ!IH-¤Òé GC¦!såÈämä#äSär¹‹Â hQ\(1ØNõQ6(Tê*U€ªAµ¡zQOQó¨ ÔO4͆A+¡ Ðöht :ƒ®B·¢ 'ÐËè ÀÀ(`ô1L&SŒiÄÜÇŒb1ÛX,–+‚UÁšaݰ‘ØTl>ö*¶;†]Æ~Á‘ã8qÒ8]œ#.—„ËÁÕá:pc¸7¸oxj<^ o†÷ÄÇá3ñ•øÛøaü2þ ™™ ™5™?Ù ²<²²d3dŸÈÉÉyÈÉ-ÈýÈ“ç‘_'ï#Ÿ'ߥ RShQ8QDQœ£¨¦¸Oñœâ@à'¨ ‘„s„ZBa–ð…’–RœÒ€Ò“2‘²²rŒò=žŠJƒÊ™*ž*‡ª…j˜jOÍO­EíF}Œºúõõ6 -MMMM?Í Kä'ê=‰ÉÄ bq‘IËK«EëA{’¶’öí2†N€Î€ÎŸ.îÝÝ=‘^–Þ–>–¾þý’ŸÁ€!!“¡™a’á+#;££ãÆÆ1ÆÏL¬LêL^LiLLL_™¹˜u˜˜Ï3·3¿dA±³X°Ä°”°<`Yg¥cUfõ`Mcmf}Á†`f³dK`«`dÛfç`×ceÏgïa_ç`àPçðç¸ÈÑÁ±ÊIË©ÊéÇy‘³“ó-=—W WW/×7·>ww÷÷7ž$žFž—¼d¼$^oÞ‹¼Ý¼8˜8r þÀ ><‰Ï—/—ïßg~~;þSüíü+Lñõ3‚A5Á0ÁrÁq!ŒI(@¨XhD!,'ì+\(<,‚‘ñ)E‹*Š‹–‹N‰QˆiˆE‹Õ‹Í‹3ˆ‹'‰·‹¿—8 á(q^â‘ÄOI9É@ÉJÉi)¢”¡T’Ôm©MiaiéBéq‚Œ®L¢ÌM™²"²^²%²ÏähåLäNÉuËýW—o_U8 àªP¤0E¢#™“2H}ŠhEMÅDŻлJòJ‘JÍJ”Å””ë”W ô:XypQ…GÅM¥LeN•KÕUµTuN[ÍM­\mAWÝS½Jý††¿ÆU÷š’šáš­šŸµ”´ŽjÝ×Fjëi§iéult tfuyt}tëu7ôäôôîë£õôÏëO°xÔl*5ì5¢0²2*0Z067¾m‚014¹`2cÊglÚnÌ Ì.˜½403¿c±0·(´xm)eyÄò‘­•‹UÕŽµ¦u¦õ´ M”M·-•­“m­íg;m»l»9{ û£ö,~7±Ž¶ŽUŽÛ‡t]:´ì$ç”ê4yXàpìá~gç@ç{.T.n.-®hW;×:×ïnfnånÛîîEîZ¹kžêž=W½T¼²½Þx«xg{¯ø¨ø\ðYõUóÍñ]÷Óò+ðûè¯ïÙÿs€Y@uÀ^ ]`c.È5èV018 ¸7„#$6d4T$45t.L)ìRØF¸QxUq8âf$F F¥DÍG«FF‰±i‰¥‰ ŽŒŽ;÷&^7þJ*Á#¡û÷‘Gæj-;s?ÖÈ›˜œ¸|\ïxÍ ²'ž$I&e'm´;y;™=ùxòbŠ^J}*ejxêÔ)åS—O£Nû:#s&ÿÌÏ4Ï´Çé’é9éß3<2Ÿ•:›wvïœ÷¹¡LùÌ’,LVpÖäyµó5Ù4ÙñÙ‹L.´]亘vqë’Ë¥þٜ˹d¹Q¹syÆy7óägå/ð-˜(Ô,l,b+:Sô¹Ø³x¬D½¤á2ûåôË_KýJŸ•镵•ó—çT`*¢+^WÚV>ºBºR[ÅR•^õ£:¸z®Æ²¦·V¡¶¶Ž­.³QU¿zÕéêÈ5ík7ÄÊÓ¯ƒëQ×ß6¹6M65w·ZnðÝ(j¥mMkƒÚâÚ6Ú}Ûçn:ܽex«û¶òíÖ;âwªïrß-¼G/³ƒ¬#¹c¯3¾sû~èýõ.Ÿ®Ån—îéûžñ^‹Þ¡Fúê>ìy¤ñ¨³O¥ïn¿Rÿ­Ç¤Çíòmƒrƒ­O䞴ɵ + ßQ¹=zp´cLm¬ë©öÓ‡ã㦣“6“Ϧœ¦æžy>[yøüã‹èߦϠgÒ^R¿Ì™e›-%ôªqN~îÞ¼öüà‚ÕÂô¢ÇâÚRÄÒ÷åäׄ×9o8ßÔ®H¯Ü]Õ]y{èíòZèÚ·õÔw4ïŠÞ ¾¿ñAýÃà†ýÆòÇð{›Ÿ˜?UoÉnuo›oÏîí|ûœö…ùKÍ.i÷ÑW»¯o¾Å|Ç~Ïû!ôãöO£Ÿ3{A{{¡nán¿B$\ÞÞlVÃñ¾œ;Œ@Fù;§øSpð€ß" ‚¢¡YØ×"¹…(^ÔU´:z“5€}Ø2¾“ìùUŠVBåKj 1„¶•î;ƒ.c1Ó‹9k=;†Ã™³…›ÀãÅ{ƒÍo/P.øV˜$rD´SHhI¦HõÈ eµä’åï*l)Š(9*gìUÙQP·ÓHÕlÖšÑAé éè{$^2ª7¾g2d:cöÞ‚ÂRÚÊÆ:Ö¦ÀöŽÝ û¯Žì‡:9ŽtÎr©síq›qÿäIîuÀ[ÑÇÐׯÏÕß? 40>èxðÉS¡§ÃR“#ŽDFDùG»ÆXÆjÅÉÄ3ÅLè=’{4ø˜n"÷qp|ñDRóÉÒäó))©q§"NŸ H I¿ñöœRæé¬±l¦ ó/åbóó½ ÎÞ.š-A^(5-‹./ªèª\¬ÂU‹Ô˜Ö†Öe×7_º¶Þˆ¿ÎߤÞ|¨%êFfkmÛÃö…›{·YîÈÝ5¹çÖÙ™r?§ëJwCÏíއƾ|´Ü÷®ùñ³ƒÍO †Ž ;(Ò~ëyš?<¡>Iœ\šjxñ\öùÖ‹ÆiïÖ™á—'f¥g—^åÌÍ#çï,D/*,¥'˹¯]ß¾ù°Ò¼öVüíÛµòu‡w„wïC?ð~˜Ù¸üÑoSéñÓÖÖÂöôÎÂçí]º¯jß"¾_ÿ±¹Ç··ëŸœ„h ;¨ÁˆFÌ!‘]pÄ?ŒöÀ 0 Xoœn?DÖJ^CQJ¨ l¡zB½Ed¦Õ§‹£obXedvg)g}ÁÎÈaÍyŠë÷G^¾f| ü•‚ï„©E¤D­ÄBÅÏJ\“쓚“þ"K%Ç#¯¤`BòPŒT:©|á`¹JƒêMµNõš=°_¹«Óª{U¯\¿È Â°É¨Óø±É¤é¼Ùšù–%°"·&Ú°ØòØ Ø‹;È8’©:éÖwÖsQw%¹Iº xpz2x¼QÞ»>|—üžùt¶Õ—„d†Æ†é†ÂÇ#J"£HÑØè1±©q‡ãåhÖ<>ZwìL¢ïq›vIn'ƒ’£SSOºpºäLuÚõô»ÎŽž{™¹’õ)\ ¾È}I:G#×*Ï;?º ¥0§¨ªøFIçåÁÒɲùòÕŠ•»UdÕB5Ƶauõ]Wß6P7ª\÷oÊm~Øò¹U°Í©=óf×­­;\wµîyv$wÝoìêêèêo§ŽGM}åý™|mžh‰Ó ïŽ<mËz0®=Á>ñeòéTó³ìç‘/§µf$^²Î’Í~}µ>77?±0°ø`©k¹ãuÇ›»+÷V;Þv®õ¬?y·ü³!û1|óîÃöÉ_R¾2}kýa÷óç/ýÛBt|úe)ˆ7H]äU;êš}CÄTbU±³¸T< ¿CÖF~œÂŠ FI Ü¤Z ¦é!vÑ>¡{IÿÅÄÄ,È¢ÎjÉæÅÃqŠóW%w O'oÿ§|¯øW6¿œ(NtOì£ø+‰ÉûRÒÅ2gd£äœåuDHT¤Š£J Êgzª¨©2«n¨õ«Wh$jºh©isè t–téÕéŸ57´1R6f7& ¦ÝfæÉÞ–¦VÊÖl(l>ØÙÕÙ';Ø; ;~?4èTxØÏYÉ…Üå¥k“[š»—‡°Ç²g±—ƒ7‹÷+Ÿ:ß8?¾(àeà üàÈÓPÐaáYV‘Œ‘/¢Š¢ÇpÅ,ÄVÄyÄóÅ¿N¨:âsTàèʱºÄˆã¦'$“h’¶O¾HîH)‡í$ð´ùé4º´ôÉŒgÏŸ É´È’;Ï‘Mžýõ»‹ —¦rÆsÇó&òŸÌ®mï]Æ—²•©•WWUAÕ²5>µ…uýõ›×äͯ{6E6Ÿh9w£¢µ£m²}ý¸M¼ÃsWöžA‡{ç‰ûU]ã=d½zÎ>œì#ï—{ì21x÷ÉÆ°ÐˆÛhéØì8Ç„ÓdÑÔ‹çL/ì§Ëfvf^Ì;-â–ž½_ůE¾'n¼ù´ø™ýkÈWûúÿými¿`ä¸BœƒšÖPç™ÆPÛ`NÀZ ¢º‚b@ƒû À¹¦40€³üxpÎûÀø1B2†®@Ýд‡àD¨"\Çá¬îbI‰”E:!“‘×S($J å‚:‡êDm¢ùÑŽèóè~ £Š‰Ç´cv° ØXììOœî,n σƒ=™+Ù r<¹+ùM ZŠŠ!‚!›°KéN9D¥BÕ@ÍCGC¤9Gĉ۴!´oé|è^ÓûÒ¯1„2l3c"cÊc`¾ÅbʲÄz”‰í»%ûG!§ç6W÷!jž~ÞStùÈøžò „j ± }~&rO´J¬L¼Q¢[rLjIú“,$G!ϨÀAâƒ=›Œ²ÂÁƒ*šªZj‚jëê75R4m´µ~j¿Ð¹©›§wLßÏÀÖÐÀHÃXÕ„dªb¦a®oaaioånb“h{Á®ÚþžÃ”ã¦õaIgk—£®ÕnãOY¯ï2Ÿi?&›€ìÀ±`ڻВ°•ÅȬ¨ÕýØêxÊ„£GÞsLì?¡™Ô‘¬˜2v*æŒPÚ«ŒòsaY&Ùryr¸òX x‹¤J´KƒË›® «}j—¯7"šJo¨´ ßò¸ó®Ãú~sǃÌ>ŠÇùOT†ß]ŸHy4í4+=·°µüqÅòmîz×û§C›··rw|¿Hìn|»öÃç×ýT€(kÒ@è¯`í3C$ÈŠ‚.B-Ð8´`D(Á¹}¢1gñHd$²9ŒÜCI™y.jcŽô-ô.F sÓ…Åa-°Øeœ,.7‰ÆŸÀ?#“&;K¶FnLÞg¿q‹3B'¥4e U 5;u) ?M#QšØL+K{‹N®ŸÞ†~‘!‚ɘË$ÁÔÇìÁ‚€}•ë[¶óìŠì¯9ò8-¸(¸s§ó˜ðÒòN¨â‹â×`ø(øX¨Bø¤ˆ‡¨IÜX"D2[ªIzRæ‹“¼¢‚)Q±R©_ù½ £ª¦Úau7 Mo­ íXÝ,½ý&ƒG†ÓF›&SA3s/‹Ó–ÕVýÖk¶ÔvJö®goZ=ÌêlîrÚõ‘;ÆÃÈ3ËkÚGÔ7Áo ¨Üò:Œ;Ü1¢0r*š&Æ<ö\Ü“Š#&GÏ{rœxÂ>©ääZŠvjÕiü™Ð´å ÷³ ™ÁçqÙUír¨r‡ós ýŠ5/3—~,­¼]uµæz]çÕ‰†&úÙVûö˜[—î\»×Ý9Üõªç݃o}èÇÔƒ¬C|#Âcâã2“²ÏT_hÎÌZÎ9.X/)¼&¾™]½´¦¹>ÿ>òÃöLjͥ-óí¶Ïô_Bwû¿q}þ1ðKÿÀøü›‚ p4‚1° ±@j°OÉ€n@3,BÖü)D [P"U‘¡ÈrøÄP:¨DÔÔ.š„ŽC߃O»!æf+ŠMÀâ8q1¸q¼¾¿GæKö”\“¼…BŽ?Ø…”\”W¨d¨º©m¨×hR‰<Äû´Î´?éÊèµà³}Qq©˜ÙŒÃÒ ŸkUv{G:§1×ì“2yC8òð«IBòŠ"*¢ªb*âÎù’#ÒHqYk¹ùK ͤ1ÅMeÖƒú*ñªmê”Aš#ÚJ:uzÌúÙ†ÔF™& ¦—ÍÅ-º¬ô¬l)í"í'ª9Lëœä²ãæþÎ3Ôk×'ÍÅ¿:P:èFˆBh[¸LÄ(ÑèÒX†¸´øïGBŽÎ&šïK:x²2y+UûTÎéÕ4ÅôŒŒ…s¤Ì̬Ù6z/Éå´æ‘òºí•””J–uTXW¾¯J¯‘¨}^Ÿ|M´aüzL3MKM«\Û›ª·nݽ[Ö!Ü9ÐØCÙÛøÐäÑJâó`óöðôhØSüxͤÆÔÂó“Ó3=³¶¯æç=¦–T—‹_¯¬¬:¾MXËZ/~—÷>ýCĆÍG‰Môæè§¢-§m¶íg;?~þüåÊ®Åî÷¯ÕßL¾}‚³å³?û÷õá-óû,D¡ zvoï?Øl~œßÛûV¾·÷£¾$f¸øûÅ/_C @Ñþ? Ðá[ö¿‘þD~Šêw—/Ì pHYs  šœ IDATxœíÝ{\g¾?ðgBá/(*uí**ÆRq½VVTüI­‘‚7ÌQºË®—U9ŠXA*¬-Ç+ˆE÷åJË![Ë¢‚,Öµ‚ÊQ¨BB‚Ð*„Éïç윜ܘ„‹¾ïW_¯Âdfžg2Ã×™Éäù¿O8‹ÀÜ0ñÿö†‡¼Ù~€Qoº` (^³Å `– xÌ/€Y‚â0KP¼f ŠÀ,Añ˜%(^³Å `–Œ+^*•ª©©éùóçÔ! ƒIs>…B‘}ùò厎ƒ¡T*._¾Ü¿½éîîf2év 0œÑ­)))ùùùAAAaaavvv"‘èéÓ§ýÛ@ •J³³³ûwµ€!‰Vñª«« …ãÇß¹s'A!.—Ëår©WSSS+**H’ô÷÷ß¼y³¥¥%B(<<|âĉ111¡;vŒ9òÀ!@Àáp/^œžžN’¤@ ˜8qâ¥K—ªªª”J%ŸÏŽŽž2eŠH$:}útUUÕ¨Q£ÁäÉ“©eçΛ‘‘‘••5@o àíGëžWuuµJ¥š1c®\ê EllìãÇ·mÛÆãñrrrΞýŸÑ kkkñÏb±øÅ‹ÔÏåååÓ§O¯¬¬ÌÉÉAùúúr86›ÍçóG-—Ëccc[[[ãââ‚8zô¨R©ÄË–••effúøøôËöÌ­â%“ÉBVVVÚ/•––666úûû/]ºtÇŽvvvyyy¸Ð@ÄñãÇñiTee%BÈÃÃÍf[ZZúùù9::–––677ÏŸ?Ò¤I¾¾¾555xY&“™œœmÔv†ZÅËÕÕ!ôÏþSû¥††„§§'Bˆ .—ÛÕÕÕÜÜlx…...NNN!•J¥=ƒT*Eeff~øá‡—/_f±X­­­ø¥#F8::Òé6`£uÏËÓÓ“ÉdVUU5559;;«¿„kP}}=þU"‘0 ükww7B¨µµµ³³“NCT!sqqAGDDÐÚÀ0CëÌËÙÙyåÊ•¡üôÓO7oÞLJJ’Ëå>>>$IWWWJ¥Ò9sæ°X,„»»û³gÏ„Báþýû{zzzmÅËËK&“=|øP¡PÌœ9ÓÞÞ>??ÿ‡~H$ÅÅÅuuu}ÜTÀPB÷!Õ-[¶lÞ¼¹¶¶6&&fýúõ'Ož|þü9AŽŽŽ¸6EDDÄÇÇÏš5K àE‚ƒƒB©©©l6»×&ÇŽ»{÷îëׯÛÙÙûìøÃ@ô†¦'NÔÔÔäääàñ¦•Je¿|úñǯ^½úƒ>èûªÍè«-‹uãÆ¢¢"éIII«V­:tèPuu5ž(òòò6lذuëÖšššï¾ûnýúõÑÑщÏ#‰¢££ƒ‚‚"##+**BEEE|>¿´´Tg¤Rinn®@  FÊg0#FŒ@544DEEýæ7¿Y³fÍ÷ß_åóùÿýßÿÞ¾}û½{÷B»víºyóf\\Ü’%KNž<‰:{öì£G’’’V­ZÕÓÓSWW>þü˜˜˜ööv¼ø®]»¾ÿþûíÛ·ÇÅÅû¾ú—ÑÅkÉ’%NNN§OŸ~ùò¥út ‹7ÆÅÅݹs‡J½‹Å¥¥¥yyyS¦LyúôéÁƒ…B¡··wyyùÍ›7B:ó_¿~][[K• 8 gЪS©TÑÑÑ®®®ùË_¶nÝzèСÇ#„jkk©øúúz¹\Ž8~ü¸ORRÒ•+Wž={6~üøðððôôt ‹ãÇÿæ7¿¹víZGGGAAµøgŸ}¶fÍ^à3ºxÙÚÚîܹS&“¥¦¦ªOŠŠòóóãr¹îîîeeeÔt›'NDGG3 ‹ÄÄÄ]»v!„D"BHg>ã’%K„Báüùóuv@&“ÙØØàPnuOž<©¬¬äóùŽŽŽ‹-šŒuww§^ÒH~¼)&>*uÿþý¼¼<ükaaá¥K—ð ï½{÷ŠÅbšë1!Ÿ‘Ëå²X¬ëׯã46Š““Ó«W¯¨gsE"5Ü>Nðîîîîèè0¼rÉápº»»Ož<‰»x ™øx”‹‹ ŸÏ§~ÅEÁÚÚúöíÛõõõííí4Sfuæ3oݺõÇÔ¹ˆƒƒÃÚµkSSSËËËñ”¦¦¦Û·oOš4ÉÕÕ5//O¥RÕÔÔ”——ûûû#„ÆŒSYYÙÞÞ~äÈûtF…?jðöö?~|FFÞ ÃKÞÓŸí òööÆ?Ï›7ÏÓÓ3%%%;;›ÇãÉåò¤¤$:+Ñ™ÏøêÕ«§OŸ¾zõJßR;vì ܺukPPК5kD"a±Xñññ/^üío»~ýúuëÖ½÷Þ{¡µkצ¥¥M›6mäÈ‘:³råÊ«W¯†……áö÷îÝûàƒV­ZõfŸ èD+·1??ßðÀ:X[[¾ÛÕÒÒB’¤ö½$èä3&¦ç¨1?Ðàèè¨~‹ !ÔÜÜÌáp,,,¨)r¹Ü‚Nº»»_¿~M=„ÑÒÒbccceeEC}wâó£û".^¼Ø?ãyÑAކ™Ïhaa1~üxíéø™/uôã#™L&U¹Ið•@€Y2³/fËd2’€Ì«xí qtt„ñȼŠz †¢¼%àžÀ,Añ˜%(^³Å `–Ìì†}¿£“°x Á™À,™R¼T*USSÓóçÏ{aˆq— …";;ûòåË C©T:88\¾|y€:×ÝÝÝLæp¿(`3îÏ;%%%???(((,,ÌÎÎN$=}út€zÖ@*•RCé†#ŠW]]P(?~üÎ;ñ0Í\.—ËåR¯¦¦¦VTT$éïï¿yóf<@ 3fÌÔ©S³²²lmm?ùä“Geee¹¹¹íÛ·vJg‘Htúô骪ªQ£F À!8ÎâÅ‹ÓÓÓI’'N¼téRUU•R©äóùÑÑÑS¦L©¨¨ÈÎÎ.//'IróæÍ‹-***:wî\dd$`¦Œ¸çU]]­R©f̘¡=À¼B¡ˆ}üøñ¶mÛx<^NNÎÙ³gñK½Ñ™GgÈ^°¼¼<##cúôé•••999!___‡Ãf³ù|>ÒþÌ™3ÏŸ?ŒŒÄS Þ~Fœyáï꙯´´´±±1 `éÒ¥K–,)((ÈËËÛ¾};ƒÁ@ÿ ²°°(,,ÄBííí·nÝÂB˜áypÈP@@ÊÊʪ©©Á'}A?~ÜÉÉ©¨¨¨²²!äááÁf³{zzüüüB*•ª¹¹¹­­­¾¾~áÂ…¸KK–,Y¼x±˜À[Έ3/WWW„zçôxzz"„‚àr¹]]]ÍÍÍøU Äb±¨!’$5Ö`x*dèÃ?¼|ù2Â/¹¸¸à 2Ÿ¡ @`kk›õóÏ?㉠ŠæËˆ3/OOO&“YUUÕÔÔ¤‘†ËG}}=þU"‘0 õ!IûÈ„!õBÆãñ¦NzåÊ•ÌÌÌäää”””þêàM1âÌËÙÙ§8pà§Ÿ~jll¼yófRR’\.÷ññ!I²¸¸¸ººº°°P*•Ι3‡Juì;!Cæ÷òò’Éd>T(r¹\(¶··¯^½ÚÎÎŽÍf#„ Þ~Æ=*±eË;;»ìì옘„›Íöôô$ÂÑÑqÿþý'OžŒˆˆ bÖ¬Y {‰C†N:uìØ1„££ãï~÷»±cÇê›?00ðÉ“'»wïÞ½{÷ûï¿þüù“'OñÎ;ïàĶ^Šo9SÒƒT*•T*U©Tnnn·ZZZØlv?žsi 2D‘Éd÷P¡PtvvjÇ|Àwx; HzATµ†ŽÛ1*dH½0±X¬+©€Á_̘%ºg^/^Ð~€Qh¯ÐÐÐî…Vñ‚ÌÀÛîyÌ/€Y‚â0KP¼fé-(91=çMwð1üÍŸ·¨x!„Žî£;h`h“ÉdŽŽŽu€ËFÀÛ¨×K1(^³dDñR©Tuuummm× ðp,@º÷¼¾þúëÜÜÜÖÖV¥Rù«_ýêÓO?ÅÓMˆGìu‘/^$&&>xðÀÛÛûÔ©SF­0LЪ;uuu.\XºtiTTTss3±™Hg’$wìØQXXxÿþ}úk +´Š—D"Q*•2™ @ˆóÒŽGLJJª¨¨hjjz÷Ýw7nÜ8aÂô¯hŹsçfddøùùi,¢³96›=nܸ~ÜHÀÐCëž×¯ýë1cÆüãÿˆŠŠªªªÂµã-,,6nÜwçÎêÜJ,—••effúøøÌž=[c0 ­3/&“™’’räÈ‘{÷î ‚={ö,Z´H#!…’Édîîîeeeê‹'''ãqM5Óн×nggwìØ±«W¯~þùç'NœðññÑý]©Tž;w®¤¤_cÚÛÛS/1†Šô/#• "88xáÂ…J¥òáÇx"XXXxéÒ¥¥K—^»vmÒ¤IÖ£3ŒB«x=zô(//¯¡¡¡¶¶¶¢¢‚ wwwôã;::BÖÖÖ·oß®¯¯oooïììÔ^•ú"ý»%€a…Vñª­­=uêÔÆ·lÙbeeµk×.„P``àØ±cwïÞ}ýúõyóæyzz¦¤¤dggóx<¹\ž””¤½*õEô5÷óÏ?ðÁéééÿøÇ?>øàƒ«W¯šºu€!‹Vn#BH¡P466’$©}÷J=±­­ ßíjii!IÒÒÒRçÚÔ¡$¦çÀ³X܉Ïî‹è‡ÜF‹¥/¡Z½œQ÷é 8Âý{@Á³féíÏK&“Á„:Þ¢âµ7<ÄÑÑn{èx‹Š‚1p´Á=/€Y‚â0KP¼f ŠÀ,½]7ì<‡€1§ÜÆAb` ·`– ·04 ÷âÅ`¦è¯ÐÐÐíJ?êîî6<Ë/bcc—/_þ§?ýipºè_CðÌK lذÁð<8rݺucŠÌ…)Ÿ6â(ÆÅ‹§§§“$)&NœˆjhhHKK{ôèA</::Z=´ñðáÃL&óôéÓUUU£F“'OÆk3fÌÔ©S³²²lmm?ùä“Geee¹¹¹íÛ·gDŠD" jwC;MRç&@4$æÎ”3/±X\^^ž‘‘1}úôÊÊÊœœ„B¡ˆ‰‰¹{÷î²eË¢¢¢¼½½Ñÿ md2™±±±­­­qqqA=zT©TâyJKKóòò¦L™òôéÓƒ …Booïòòò›7o"„är¹¾µ»¡& ’L|΋ ˆãÇ;99UVV"„îܹ#‘H,XþøWhã7š››&Mšäë뛕•USSÃårB666'Nœ°°°(,,´°°HLLloo¿uë–H$B•––ê[P»Úi’€!ÉÄâåâââä䄲±±ÁQf !íË4*´Q*•"„233/^¼ˆb±X­­­x777„ƒÁpwwg±Xê·¢ ,¨Ý À0ÑoOØã …OtrqqAGD÷Œ» B!`Èë·O}||H’,.. …MMMååå3Ìœ9ÓÞÞ>??ÿ‡~H$ÅÅÅuuutÖlì‚ ÀpÐoÅËÑÑqÿþý$I&&&†††~ùå—3ØÙÙ™LfmmïaéôòåK‚ lmm]³Q B4$f­ßréë5“ÑÎÎδ5µ DC0´ Á'ìÃÁ°Ï ¢!†Wñ‚hH†ŒáU¼ŒÀP÷¼f ŠÀ,Añ˜%(^³4ŒnØÃ˜Èmü_ðærf rCÓ(^eeeƒß®6g¤ ííí}ŸPtïy…„„´´´,\¸ð“O>ÁS¾ùæ›/¾øÂËË+--ͨ&9âäätöìYãzÚ^¼x‘˜˜øàÁooïS§NQÓe2Ùž={Øl¶D"Y±bŸÏ7m:`wþ¤¤D¡P°X,„Paa¡iM¦¥¥1oòr‡6Þ¿_}ú©S§¦OŸ¾k×®öööŸwß}ׄé€A`D™0aB{{û?ÿùO„P]]]]]³³35Z|RRRDDĪU«:T]]ª¬¬äóù'OžDÉd²ÈÈH¼ìáÇ“““ñR !!!//oÆ [·n­©©ùî»ïÖ¯_-‘Hð<ááá øç;v:tˆþ²:é m”ËåûÛß–/_Žg˜?þµk×L˜F¯Y³fYYYá,Å7nøúúZ[[SC•ZXXlܸ1..îÎ;ÙÙÙ¡‰'zxxäçç={ÖÚÚzÆŒ!±XL—^CBµµµÔüÔÐt–¥¯±±±»»›Šz=zt}}½ ӃÈËFkkëY³f•””tuunܸñ矦^ŠŠBÉd2ww÷²²2>>^^^:׉CY,ÚH’$ÍþôeY 8ÿñõë×ø×W¯^1„é€Áa\ñâñxL&óüùó³g϶²²¢¦^ºtiéÒ¥×®]›4i5ýåË—,ëÞ½{Ïž=3¹—ÝÝÝ¡ÖÖÖÎÎN“Wb˜‹‹‹½½ýóçÏñ¯T(·±ÓƒÃ¸âE’ä¯ýk…Báïï¯>½££!dmm}ûöíúúúööv\eÒÒÒFŒñÿñ*•êÔ©SJ¥Ò„.º»»?{öL(îß¿¿§§Ç„5Ðaaa±|ùòÜÜ\„Ð/¿üRTThÂtÀà0ú‘…>úhçξ¾¾êçÍ›çéé™’’’ÍãñäryRRÒÝ»wÿþ÷¿ïÝ»wÚ´iAAA?þöÛoMèbpp0B(55500Íf›° úB·oßþôéS>Ÿ¿iÓ¦ˆˆêLÊØé€AП¹mmmööö¡––’$---û¾NL.—3™L&³O_#§Ú(‹9Žv•4v: /5·W.„‡ÃéÇÕ"µõõôC§|1`–†×x^ÚÀ1ŒŠ„60” £â… ´€!îyÌ/€Y‚â0KP¼fixݰð(ýr<@ßAn#À,An#`hz×çÏŸ'IrõêÕ}\OOOÏ?þXRRbeeµvíZggç~é^ß544888h9aìt€ºg^!!!kÖ¬iiiÁ¿–””,^¼X,÷±ùÜÜÜ¿ýío}\ B¨¸¸øü#A¶¶¶7Úª:<¸«2™lóæÍGŽ ;wîœÉÓ:qæÕÚÚúÙgŸýá¸Þ˜¬¨¨!icc3Í ©TŠC’ôH”÷¼X,Ö7p™P×÷\Åüüü 6„……ݾ}O‰DÑÑÑAAA‘‘‘Ô 8  ?üðçOŸR‹ùå—xÁ;vüçþ'B¨®®î÷¿ÿýÊ•+ׯ_ÿùçŸwuué\jçQ^ºt©ªªª¥¥…Ïç?zôHç{) 4#Š×’%KœœœNŸ>ýòåKõé}ÌU”J¥yyy3fÌhjjÂa´r¹<66¶µµ5..Ž ˆ£GâÁïÅbqYYYff¦zJŸŸß˜1cB|>Þ¼y …"66öñãÇÛ¶mãñx999gÏž¥º¤¾:=ÔΣôõõÅC§òù|}#B $͈ËF[[Û;wþéOJMM7oEèä*ÚØØ$$$X[[wvvˆD¢šššæææ€€€I“&ùúúfeeQÙ¼bÅŠAKQìUHHˆJ¥JOOÇ#C”””ìß¿?##cpFqèèèHKKËÏÏçr¹J¥R$-[¶lÚ`3âÌËÓÓsß¾}?ýôÓÙ³går9w¦mSizƒ¹“'Nœ¨©©ÉÉÉÁ£Q+•J™LváÂ…Áï C†ÅËÒÒÒÓÓÓÃÃãÂ… ÔЦ"‘èôéÓUUU£F“'OVOQ|ï½÷¶lÙ¢=BH p8œ¹sçfdd>|˜Édê›gñâÅééé$I ‚‰'"„ÒÒÒ=zDÇ‹ŽŽÖÙ„œ;9þ|ÔŸ¤¤¤ŠŠŠ¦¦¦wß}wãÆ&LÀM3fêÔ©YYY¶¶¶Ÿ|òÉ£G²²²ÜÜÜöíÛçææ¦sÛu¾oR©4777==GŸÁ`@¾}dÄ•JÕØØ˜™™ùúõë  =‹)ŠtB™L¦¾yÊËË322¦OŸ^YY™““ƒR(111wïÞ]¶lYTT”···¾&4èËÔNfD4B'i6Šª©©Aé+mÓQ¼žäþ0d@ñ@áÀÀâ5° À÷¼f ŠÀ,Añ˜%(^³Å `– xÌ/€Y‚â0KP¼fÉè'ì{ÍàÆú8ÆfÊ׃v}fx†Ó_|mRgè:þqâĘ˜„ÐŽ;FŽyàÀ¤'¯ûÒ¥K8ùÏçGGGO™2…N¸§§'ձÇs8œC‡ék!TYYùé§ŸJ¥Rÿ®®.ê\Æ@[<ïÂ… AlÛ¶mîܹ†gî—{}g¨MNKKûñÇ<8nÜ8„Ð_|ÑÓÓ³uëVjí”u};ËÀ«³«:ãÐõQEEEo‹:}ÇIEEEvvvyy9I’›7o^´h‘á÷Mgç L9x-ï~-ïžï7g¾ßêg„Ðw׋ð¯ôW¥ž›M’¤vxµv>6µ¬J¥:~üøÈ‘#µ+—öR …"66öñãÇÛ¶mãñx999Ô…[mmmcc#Õ*GCg^·¯¯/‡Ãa³Ù|>ôèÑtòÀI’ÔØdê"Zg¡„„±XüÑG!„~ùå<Ñp[yyy3fÌhjjJNN6>>22o¸ G0)g^¯;»Õ^»b>Bè›ï Õ§Ñ&399H…’ÉdTx5ÎÇ^°`Axx¸Æ‚W®\‰DŸ®c0Rí¥nÝºÕØØ°téÒ%K–äååmß¾ÝðÎëvrr***ÂI‘l6»§§ÇÏÏ!tãÆæææ€€œ›••USSÃår5¶Ë¨&šššD"Ñ¢E‹~ûÛß"„îÝ»‡ÓvqF·Î¶lll¬­­;;; D"!×9s¿´Øë;£ŽÇãYYYnÚ´éûï¿wss›>}ºú ê)ë½î,o¬¾®Ò?¢´·ˆ•JÕÜÜÜÖÖV__¿páBÜCïÍ£ÐaJñRt+©Ÿqåºð×õ‰F¡r³u†Wkçccííí_ýõ¨Q£Øl¶ö:µ—ÂSð‰:A\.·¬¬¬¹¹gÇê£×­N¸aÚMÜ¿!äååE¿-{{{|%Ž¯Ëª««ñ9ÍrZìõQgmmÍãñ Ÿ.ëëëñ¯‰„Á`àíBøó„ÖÖVšŸsQ·QaÝ41!„«R©ìììd±X4ÛÂÁ·S¦LÁ=¤Ù±¾´¨Aߟý‚ ?ûì³–––Å‹^‰á¥“ήÐ?¢èÐyœðx¼©S§^¹r%333999%%e Ž  Í”{^]=Ê®žÿ©VŸó7ü«ú¦uEgxµv>65HHÈ¿ýÛ¿åääÜ»wOcUÚKQSª«« ¥Réœ9s🨻»û³gÏ„Báþýû{zzzí§———L&{øð¡B¡0*¬›¦©S§ZZZâk¥£G¶µµáéÚjhh …<¸{÷îØ±c]\\Œê˜ -öúÎh¼4sæL;;»Ç/_¾¿íØYúè쪱G”a:¹\. ÛÛÛW¯^mgg‡¯â¨ÚL)^Šn¥¢[ùYVþgYùøgÿLëŠÎðjí|ìÿí:ƒÃd2Oœ8ñòåKõUi/…§ôôôDDDÄÇÇÏš5K à™ƒƒƒB©©©:/B5Ž;v÷îÝׯ_76¬›KKËuëÖµµµ9s†ËåR¶Ú"IòÚµk{öìéîŒ4£³Ós>Xixžüo¯šüõ }áÕÚùØth/ÕÒÒÂf³5þ—ËåL&Ó¨çNe2‡Ã!ÿjrX·> ?\¢A£­üÔ«L&sppÐø‚~Çè·h˜Æ;CÙ·oŸ½½ýÿøG:+Átî,ô»ÚG”¾ãD¡PtvvjÇ÷ûQÔ™rÏ+ÿÛ«ýÞоðjÓnsj/¥3›zîÌä5›Ö­?*}mé|‹èwÌ„éw#??ÿþýûIIIô׃ú)À¼(}Ç ‹ÅÒYaûý¨êŒ.^ðë·MLL u6ñÖ=zô‘#G´?ãÀdÛhöfÍšõ¦»Ð»iÓ¦½é.€¡fh~É0äAñ˜%(^³Å `– xÌ/€Y‚â0KP¼f ŠÀ,Añ˜%(^³Å `– xÌ’Ñ£J$¦ëH…Ò#ç”)Câìú8Ìð §¿øÚ¤Î€tþüy’$MK´ï˲½ÊÎÎV©T¡¡¡úfhnn~ýúµ‹‹Ë Ó.++³´´Äy´À¦/ÒÚè¥BBBZZZB$IN›6mýúõêñ±}ÑÝÝmÔðÍæÛhåææ:99(@aaaT®º¯¾úª×eû"//OgñêêêÊÎÎÎÉÉÁãS+•J’$¯^ÀQ|Õ…„„0™Lœ]†úo«¯çÈ‘#xüvx2eØZ›2n§§§ç¾}û~úé§³gÏÊåò„„V¢A H¥Rœ„>¾ªªêÏþ3ÏÞÕÕõô'%%å¿þë¿V¬X±iÓ&{{ûçÏŸWUU½‘žô××XOZZšáÌc`˜)Åë•Ü”dlKKKOOO .Pa*"‘èôéÓUUU£Føº¢¢";;»¼¼œ$ÉÍ›7/Z´H眗.]ªªªR*•|>?::Zcˆá†††´´´GÁãñ¢££ëêêRSS+**H’ô÷÷ß¼y3=9<<|âĉ111¡;vŒ9òÀ!@Àáp/^œžžN’¤@ ˜8q¢v£:7/;wîÜŒŒŒÃ‡ãüTL_7t6§ñêl+))©¢¢¢©©éÝwßݸqã„ tn>^CQQ‘¾õ»¹¹ápÍ3fŒÆíÚËjl&“ɤٽÊÊÊO?ýT*•úûûwuuiŸÔÔ××ççç7n×®]ø/|„ xYív­¬¬Lس<ïÂ… AlÛ¶mîܹúŽ[Óöxnn®ÆVk¯çðáÃçСC}<*†-S ÿky·áÿt.¥R©333_¿~½`Á„\.mmm‹‹#âèÑ£J¥!tæÌ™çÏŸÇÇÇGFFŽ=Zßœ¾¾¾‡Ífóù|<E¡PÄÄÄܽ{wÙ²eQQQÞÞÞ …"66öñãÇÛ¶mãñx999Ôézmm-Î[E‰Åbª°ŠÅâòòòŒŒŒéÓ§WVVæää „4Õ· b±¸¬¬,33§ªwL_7t6§N_[7nŒ‹‹»sçþW]{óñ ¬ß0˪o&“ɤÙ=„PBB‚X,þè£B¿üò‹vsÏž=S©T3fÌÐyn¢Þ®¥¥¥ {¶¬¬,//oÆŒMMMÉÉÉ6Ü´=®½ÕÚ‡«X,Æ×é}9*†3Sμ^wšræõäÉ“õë×#„V¬X±aÄPiiisss@@À¤I“|}}³²²jjj&L˜ÐÜÜÜÖÖV__¿páB|ì꜓Ëå²Ùìžž???¶îܹ#‘H,XŽ§Üºu«±±1 `éÒ¥K–,Á«Û·o7|ÞNÄñãÇœœŠŠŠpƲ‡‡‡z£7nÜÐÙ1„“ÉLNNÖˆ¨)--5Ð íæ4–ÕÙVTTBH&“¹»»—••éÜ|}›CŸ¾e©ÍÔ÷Vhw¯©©I$-Z´g8Þ»wO;g[&“!µà„X,V(íš¶gmll¬­­;;; D"ÑøñãuÎiÚ×Þjõ¨ëËQ1œ™R¼L‹•7n\ddä¡C‡ðɳ………T*EeffâÛ¢,«µµ• @pêÔ©„„„«W¯îÞ½ÛËËKçœÚjhh@©_Hâ)øò .—[VVÖÜÜL¬êäââ‚£çmlltÙèØˆ#´Ãµ wÃps:ÛR*•çÎ+))‘H$J¥ÿµko>ÍÍ1á­ 6“~÷îß¿òòò2оÑF7!„âããŸ??ÿ‡~H$ÅÅÅuuur¹\(¶··¯^½ÚÎÎçªëœ!äåå%“É>|¨P(Ô[Á÷Š‹‹…BaSSSyy95¥ººº°°P*•Ι3ÿ͸»»?{öL(âˆù^7_½Q}ÓÇ@7z¥³­ŽŽ„µµõíÛ·ëëëÛÛÛ;;;µ7ŸÎúûˆ~÷¦Njii‰/ŽŽ=ÚÖÖ¦½6ggç•+W¶µµýîw¿«¨¨xõêUWW—ÎvMÛ³ B¡ðÁƒwïÞ;v¬áÓ4c÷¸Î­F4WŽŠáÌ”â¥èVþÏÀ²VVVááá …"11‘$Ƀr8œcÇŽ………%''¿xñ¢««ëüùóaaakÖ¬=z4ŸÏGÙÙÙiω ;vìîÝ»¯_¿®ÞŠ££ãþýûI’LLL ýòË/ñ”žžžˆˆˆøøøY³f ß?fwvvwfv\ðý|ðÐÙ™÷|>ïÏ{f>óšÏç3óa†††AAA"€Å ‚ ‚ ¨AAÔŽ‚ ‚ jGAAµ#‚ ‚ 2MH]k)Í1ö°ù›š*ÔLÐ&ÚQ“We#iÅ¿ÿõÜ7rf…‚ÍûËÕ 3¡^RÚQ»|£ VºiŦmZÅäDŠó!†å•*!ù“XAA¨.šeé`mw„nr´[ }™F²¦Ç¨Ë©é¸.YSÚQ““““SÓA)žF‚ ‚Ü ˆ·;&i–¥Õww[Û;ÊU¦/J;Ú­@ m™&‰a--“èkPSœËRª3ö@ˆ“S†QóŒy£&‚ ‚ ÈD 1Þ1I³,XÖÜòèh·±,¤/Ó$‰4¼Qê²”æäúÝ”“SjqùÖtÔäææÖtø~ú·GÚŒ—´J—OHÐJ8:jü[sssùEÛ¥ùîf–µUååe$•Å:ÀEL˜WØÂ†5@A‰vdÅ*]„t[sÖºU¡Ö”vÔ._cìñ'Ȳ¶ËË8±È0ŠäùÀ²=ýg’ò§¦¿‡ea~rä]჻M6–…ôä9‘ùÀ ©*[@‘Ùãšåµ±RT—E{íò¼*[äÄAA$Z$·¨²ò‰Õ*èöuXçg©D̵m,+|y…º,ekêëw9´jPe€ÍfmwT¨Õ\RÀßãìh·°¢I ¤OU^€~"$m}•_ȆóáL7èø¦5Ë7F5†Q—ïß !½Ì”Æ,‹ ‚[­ÁÝÙ5aöˆ ‚ ‚ÄL;2Œ:«l6[»£\Í) ®Ã:?K-ÖèÈiÁ£.× züã91ÚÛ¤Áþ^H/Þ´¬mc[ÿ ¨’\ý½@H¾¬t CXT0'9Ø¿ÍßÔT¡®hiávI<å²3„¤­ßQ:ðT¶°ŽðGAA$Jä¾ï¨Êòw[SêÚm²@ÁØõÝœät€îþ3ƒö¶n˜Ÿ¬JžÝmöA®EPØû,!¡ò7555777777™ŠÓaÙžú]޳gŪªõi‚!’¶ª¼ÜÜÜR‹+VÑœ°,æ''Ṋ ‚ Èõ'dÅc>±Z­&ËcªU`oë–ì°öi»´õ;¶jŒ”®Ò,K¯ïîíìo놚QCXÛìƒèò»?ŒB»u”­©z<Œ í¶-ÿ“{S»»~WǪrñb ö÷F+¥³ˆySŸLa¹fTùh ‚ ‚D‹\»#×mͲ=möÁA{[ËBA–¨â-ë7í¾SL;j„ïö&%ÏgÙž¶×_oëö¶_ª²  »íõ×ÛzX6ê¶µÀ—ÁÃú@iGàEo.Aáœät`Y›i÷ O~uÔ®©ïaå§Þéí*6ù,bFØÂFxDAA¢"A~3÷‚KwÛë¯C·ü»,ªòÍùÖ¶£.ϸ%_˜\>±ÚÞ~›@ú²9¼`³¾ý6;†ÁŽ\C¦±§§·ÔŠÈ|èÞæÁéM-`€ œpä†6z3ã¾=© “E, [؈Ž‚ ‚ H4„›ÏZ••OÛóöÛ=aä÷¥ëMùml$­xGÀÛÁs’Ó¸/DxÛÂv…kÕën³sMkò>0Œº|ÿŽâ´À­ù›Z|/+´ÛLÅiþM$­Ø´)_¢ÕÿŒQP䳈!aÙAA‰F aAAH`1‚ ‚ jGAAµ#‚ ‚ ‚ÚAAAíˆ ‚ ‚ vDAAP;"‚ ‚ jGAAd\ˆÏIØØØˆ¡AA¹‘)**:þ|DÚ‘³Æ!‚ ‚ܘ˜ÍfÑõ 2û„*Íxà¥íoâáDA™8ž^û¨Ô¦„©XCå:<¨‚ ‚ ÁùóçgÍš%µß•AAAüÈ÷ñ¢vDAA"µãuÁnÈ4Ø1 ‚ ‚L'íHiGMNNnnnN©ÅE)¿&'§¦ƒÒëë·¨ô²2ÿ¯†É2»!3Så#s¢¤^T"2À¥ v AAD„ˆÞ•a{Œ»«*Ôqä·Öb4ë4EJÁ*§ÙhÑ>ÙY¨ùçÂXe²Õ¡×ð²Mgn0d8éhôz¯7­Ù>ßAA&‹ð}Ö„¤¥¥«i·K¬­Ñe)ÍõÔ<™+AMݽÔââVFÒº©«„ƃNáçÁF¨Ôi[òìoC]¦Îìä¦Î»N³.S°ì[”mÙÚ®¾Éd½kùæ@ŸAÍŠ?)Ø ™%{Ø=eÂæC‘DÂb7dÌf°RÜCéõ‚ ‚ ±ÑŽóuº¶Ç¸Ë¼R—ý£e¦¦¦æææ¦MùlqMm€Qþ¦¦&Sq!Âe^†º,¥:cOZ±©¹¹ÙTœÖcÔñò1,Ê¢âÔj“P–™ªS‹›f] Ô9‡ÃѰ¢±Ð`P.]^ 8Ðwœ=Î/Ê¥rmŠöVKFÊ\ÉdÀn(9µá-nµ#»5¼ðc@£ï¬[IVnu8:½ˆQ'âÃRÝWìð¥#á¡äzAAjGUù¦|b5í R?ŒBûc­‚aTYù„€µo,$$?K”\_C¤Okj-­vå¼TK«Sƒ+W®ä—Sç…JGK?¬Ð˜âë°Oü-“ý˜;”Ç–ˆ¶Îo+塌ç‚ ‚ é·ÁU­O_S¿Ë±Y¸’º,ekê{XŸeY ‘g}¦¿X¶Ç¨Ë3ò»w÷ŸPD¶¿FWiÔt)9UdZ}]]{Vmñý&°2›ÓœÆÓN€V‹6»32[íú¹§Oi³õ"‚Ì7ÞÑiÖšìEzt² ÑwÖ23U, +ý#%£"&‰Hy(µAA$ÖÚ‘QhuõM¦t^8ÒŽÚ5õݾ޴U«`(í¨]¾ÑEÖs’ÓtçoÞ_.Û¾(²¨85Ód/Òƒ©:µ¸3¸ÝpnJ†v«)T}i²SÍ©m¶4 -i5§œJÍ6Éçdª3dìzd²à—ÅiÖrÆc“ãLDÊCÏAA""Šï;ª[ŸÞÝíoe dp·ÉÆF‘Ã(4ËÒYÖÆ÷„SÚQ“SÓAiä_Òè*O_xÁxŠïŠ ¾¥+N•†ôÙ ÞsS`Ë–=ÜðŹ){¶lïPF¹¬²½]¼RÉòÉÉ5ǰÝPb “‹h"Qkj %‚ ‚ !QÌgÍ5=VÙxñ§.ß±¾wM½¿Ó9JÚmMÉ5yUº\#!Þ6È(¾©\ºª«¡²Aì=e‘©Á¬S©Ê¸Ÿ+·:ô¾V{ß.‡%ÜwÄ“Õè³ þ•u ç‚¡RWèíƒ^¸¡R }!ê×ø°JEÈʺN½F<‘èÅ£TÁ%Ö#‚ ‚D*‡††B×666?>=~iû›†ÊuxäAA&}õk†Êuf³YT ✄‚ ‚ H¤ vDAA"%a*:}þüù—¶¿‰AAµcž^ûè¬Y³pÈ#‚ ‚ jLjˆÏ—xAA¦=8ÞAAAíˆ ‚ ‚ vDAAP;"‚ ‚ ñN†€cÖ¬YAAy°ÝAAAíˆ ‚ ‚Äšð}Ö”ºv—­1öxU&!ù›÷—«&>ËCiGíòV(ˆg'AA¦§v •b555AAÔŽ"8j7ÚX¶`“¿ O]QÁouYJuÆn9­Ø´M«àå¦ï ÏßÔT¡f"±‰* BÒÖïØº*ÉÁ­gÁV•gã›H©ËR¶¦¾‡eyK­‚ÁJAAh‘ïHiG»ÉÏR‰låT]Z±©¹¹ÙTœÖcÔ•Z\A°ÉTœFˆpÙjÚí¢4B›°Yp›šLÅéÐ]¿i÷ ¨Ê÷oÎ'„üMMM--j†¡´£vM}7¤›šš››÷﯂MµAAhGYYé²·u’¶L“Išei„t·Ùy]èUœIÉó—¡»ÿŒ/y›à,VéòC²Ð­JIYŒùÉI £Ðn«P3 è+ZZ8}‰ç‚ ‚ H$ŒùûŽgú»ý‚ŒSoÝÝýg’bæÛ™þn`Ù£.Ïèº,DŸè[Ÿn3ÚªòlÜaŸ8‚ ‚ íÈ0ꬰÙlíŽrµ:hãœät€îÞþAP+û{ =yN,}›“œ¤[äµîh;œÚmÍZÚQ“We³n¬ÍÂ1Ž‚ ‚ ѦÏZU¾9ŸëÆ2‹Ë«×:jj:(e…fY:Ëö´Ù`ÐÞÖòéË4ŠØ 2_6ÓîAŸdì¨É©‰v¨"¥5¥oO÷œä4B8KiGMNNNô "‚ ‚ܰ$„pêòý;’ËÖðÇ„äo.Ph·mêÏ©2êr‚— cˆB»­)¹&¯Ê›…ÿ½i*ç0ßCí³W—Wõ—-_î}ÏÒ×W­RÈ&‚ ‚ ‚ˆk­¡¡¡ÐµEEEçÏŸ¿qóY#‚ ‚ð˜ÍfQ5ˆs"‚ ‚ ‘‚ÚAA‰ÉñŽf³£ƒ ‚ ‚ÿAAÐñŽ Ú!‚ ‚ ŽwDAAP;"‚ ‚ ¨AAÔŽ‚ ‚ jGAAµ#‚ ‚ ‚Úq¢ ´£&'''§¦ƒÒ¸ Çõu’vÔäææææææäÔ!GxO¦DèÂPXº‰.È4ˆ$‚ ‚LíH©ËRš““SjqÑP¡ ØHoX9æ¢QÚQ»ÑJHZ±©©¥¥BÍ01‘PA‡ƒs/WÀä…‰(]<ä… ‚ ¨å`Eò|`Ùž6û €£ÝƲ,kkw ÚÛzXæ'+ÄîÖ £®hiÁ{y8æ''Å,\Žvkú2Mèá $SSSsssÓ¦|–µm,Ûíš$ï-Ý”‹$‚ ‚  Ñî Ê*›­»ÿ €ÂÑn%i>{­íŽ µúL7[¥®ígùFËòbå—Íß~'÷gV(àl,Ë‚­*ÏFHþæýåÜ}Ýe)Õ{¸]ÒŠMÛ´Š ÜC“åö•Ú‘º,ekê{XI[¿c«VÁp‰X¡€ÛWøS%ÌHÌIÑCÝ‹¶h¡;òázÅ6P@©«¿æg%ÉÎ|bµr‡3\ÊÂM$­xÇÖU¼*í¨É©²ùžCXDRºcÐA"SS…š™ÐH"‚ ÂýxÇ9Éi„€µ½ƒºú{æ/]:ÀÚÞA;Ú­@HZòœó´bSss³°Õ‡aÔåû7çµ~ñ›¸»8go*Në1êJ-.)/„ÉJíHiGíšúnH/65577ïß_›j#ìŸu2l‚c.šÔŽ¢D¨A{[7§ä¥q´ÛXÒ½M&eJ]ö–™øÖÊãšZïO•å÷Š0˜‘G¡Ll2§"\¶šM'$’‚ ‚økw<òÑU~yÉÝ_ô.%%Ïè†Þ~‡½­ t*€µ·ß‘Ü Ô)IH¾nUD””ºìmÝ„¤/Ó$@Ò*]~ýFk›Ýµj•h—+Ÿ¬Ì޾Œù¾K…v[Œ»{68Á芦Y–VßÝ-Q´jÐÞÖ] UN,k«Ê³ñêÍ×¼'—2Ã(´?Öz÷çZ+­íå* Š”.²²ÈGA”’|ÆY*HžÐ-\4šÆ6’ÂóAAn4üÚ/rí(ºè³ Àfë1Võ(Щ «¬Æª`YÈÏ먲3ýÝÀ²=F]žÑ'p "Y ½#£~l}ºÍè×IAý›ÑÂŒ1Á3ýÝU4.Åy Îôw§5 D×GÜQ“SeÔ•'åRvÖ{7éÒµ\¢Qš°’a")uÍ ‚ È´G¦%a ÉÍINè(à”"§&¤ÄJ„©’nÿÁ˜ì¨ÐnkÖÐŽš¼*›ucm–Ø ·ÈM0œÃs’Óº{ûA­ìïW¤" ¥íÖôe;Âè.Uùæ|+ßL+™2ßY¿Þ$0*]º±–+vQšÐSAAn\Æò}Ç$Í2nÌgŸ“œ„¤qÝc€ašeé,k3íäõJMŸ‘Ù‘ÒŽþ 5Ü0M¯Çœ¿½ýƒƒ»MRïa„ 2‰#ñÐûr:÷6ºèëϱ ÷ŠuRØÔÔYÀöw9¢8ˆ‰–nåŠM”&ô”CA™±´;zûJÑ7Ê-Ò/°;ùþS…v[SrM^•.× èW ›šôŽêòªþ²å˽¯ECúú*n(›bUÕú¶5õþÎÊH”J0|Ñ6õçT½Žó}ÞH5Øß ó³"^Ü‹óVÓîÇT«ä"¹c}¯DÄ‚J7žrÅ0J±Š$‚ ‚ RghhHjÛ‘®â¯©¥®ÝekúuûÇ3¸AA˜€Ñ™†ŒB»­〠‚ HÌa1‚ ‚ jGAAµ#‚ ‚ rÀñŽÁ¼´ýM Ÿ<½öQ<™ã*‚à ú¬ÖP;Š`¨\‡A@âóçÏÏš5ëüùóQíõÃý†.B^ýÿ‰A@8ë´x¨ÖP;"È”yàÃSMâM8.AéÖiñjGÁzAë4µ#‚ ‰ ø}xA°NCP;"‚Ïè‚`† vDëY %Âl§â›òÓ¸hX§¡vÒŽÚå­P°y¹ ü²šÁ&e‰z6ëÙ©‡°jCu:ÎÝ㤡üèkä ~ý›SôˆOã¢MÏ:ÍnP•íBVnëÌnË,±€¶®S¯AíZØXÿ#$óþržÅߌºI”÷{û¯î-ûCÀÅþðˇvß ù@8"ŒvÔ,7%ÿþ×sßÈýY@¥š¿©¥B¯qpí.[cìñzKÒŠwl]¥˜ôSâK·$Œáð…Þ¹â°u#Ú¢‰”x-Úu¯Ó|áx㉕µ'ØñWk”ÚUb!ñãÝÿñ˜’¡£öêõŒÞ0õdç«Ø©©®hi©ðFoÓõ¬'ZíH<„üã–w7ÞË0ôÐ/¿³á­§¾?o×o›ƒý ±ÀÑnM_¶CÁœVªÔe)[³1Çê© ã¯Z¯¿ptYÊÖÔwû4'ÈÖ,o[¿c«V1©§Ä—oIÃ^SBT¡hŽÚ5õÝéÜQ Ôµ»lÖi2j¯ú[O5ÀJ®Z€Ã¿ú¥ÛCFǨ‰àksî"£àÞ ö#€ÐQ¸Q”P û¬ƒqYJuÆn9­Ø´M«xLÖA½ø§Ûн„äojªP32™"jLj/jJ¸gheªúN>Ùc=ÞwÚCî€Ãÿwi9Rø«ƒ?]Â0gÞ\ûøÖÜÊo”½Q÷¨è™]¥ÕœXX±ÓøO 8ü—–[áá_ü©Îì.~dÛñ¿+Ýõí†3;ɲ@Èn%—”h²q…LmÓQ“Seiî¢ÔÕß ó³’ΓbÚ­›ûóªlk³Z*ÔAíœzëñF)Í'BêRé–ËÐz5ipw€"äbúúÐEÇ®ú–-Øä•_ £.ß\`«²Õïrh}®ÊTé@]»KÏ+)šÁNŸ_sÇF úLHþ/›¿ýŽ ˜?^‘Üż½pƒ»CQä.E[4J;Ú­0?9 €aÚm¡÷e^ë #L;jòªlAwOÑ•Rg¸è )³~ IÅV;yñ)+ËTÿ$Ó'ï2Ÿþ)/õÄk0zHXÝñÔ*…·dá•Y ¤póŸ¿Óþ\ý¶„aàÈ‹÷ýÌ*ܱðWªTƒK†KßW+FQµÆ ì„ÖªiŦææfSqZQWjq ¸MM¦âtè®ß´ÛE)Pê²´ÌÔÔÔÜÜÜ´)Ÿí1®©uÉÄ&Sq!Âe«É»{ØLä†ÓŽní÷àìæ~ÚØXÌ»S°)uý­ï4øé"|ôúo=Á­ùõé'·þÓ“¯;GÝttö·¿³àø‡ùaÙ†?Ûé¨{àÃã –«fÓ‘Qû–ÇjNÀÂîhol}g_ÛsžŸÿêÝQ2ꦒÉNä_¬ª8—¥´ÊÆò›v´·ud‰÷QeåÖöŽÀNJ;j×ÔwCz±©©¹¹yÿþ*ØT+´á3bmU¢5žh½Ê(´º`Y›i÷ çW˦/Ó GN£’೘«¢UºO¯Š$¯°\¾æ–ÿ‹öêà|ni©àe«pM„w±–– ×(}Œ&¨h,k«ÊËËÉ©‰í)U¯ª[ïÛ%Àç1 U¥ûÕ¦D^\ï¼P½É ¬a·ü_Tw.¿Ï¡¥=ÄR»K£ˆ´c”EãZƒ ¶­„/ÔúǼêŠ  ʬ”¾ŸJ6x}·æèâ6¶: €zBÖËÔ`ÁÕÝsçÀ‰ûÅäŠ&È[Jí¾jG8Aw–qw”Vegú»e{Œº<£ïìæjùšIØ|íÝ+Š‚KfŠýÖȬ£ì £€‚g÷=½ˆa¨ëÍŸþKíÚRb|ù‘;ÁÛíñ¢tàt7ÌOšMF= ­¼ §»oÀCng˜ M!k³žî?tÚ ©OþóJøß}¯ü©C°lžF=ê!K~rAÓ«|.ï\îËŸ?°^Ípɲl÷vÝ?l÷_ËÞdã#®gú»ý÷€ÿªJúêà|€ÿ}ç ò zu{n/4¾Q@V?öï{›ôÕjÛÓ÷Àœ9ßròA½íéEÂk™€;^†¢ÏINèîíµÂ'û¼ªÛ$¢)íh·¦/Û‘$u[ïaYÈÏR3LP=©ÐnkÖ¯¬k³üCÌE}ˆ¨^eÅ*]±Êf3ea~rh'2è³ Àf³µ;ÊÕüXJG»MÂUI¡A^á„Ü$>±¢Ç(ò;ÑxŠÆ¨+šš²"»]*ÜJ©û©Ta%NÔ±$Ã: `‰ú»°ŸõŽ ‹ƒ®é,°º ¨å6q ú6q †ßK¼jç:pBÆ;2ŒB³,ÝÂÕ_5ьɀÁÝ&©—c&.S™vÚ‘DûG}OÀnqŸ9}ÒÉC<$鞥 XöäÁCN·‡¸íïeÙ¯-½÷vBÝâ!*Õ è=u åÎÙÄý÷KsàDkÓIX±4ƒP·‡Œº½RþÆ·Çí!î;ïN!„ËÈ—ìÞ]{œ\F£îC¯|÷E‡Û3ê>ôÊwÿá‘ï¾èp{|ë%Fû}mÓÓfÀTq›xÉe•hoãnœ„äoi6¢´£¦Ôâíà›“œFˆPÁˆúE½ªz¬8Í[p‰a˜ *ßœOˆu£w ¥µ­¢®†A,/J;jrr"±7™Ýs2‡X´áCæEØ?UÑ‚ïnœ´õ‡˜“œî}¨:â|¡êwy_$pY,H’^)r?•*¬Ôz™[óØâ6†KûïÖ¿¸ŒýÿödƒÓ[38^~ÑáöÈ×`AÕð§Ô¦ º‹KÐg™¤H€Þ3Äí!®=ÿÑêß$UµŠÔW­ÅC»#(´Ûš’kòªt¹Æ€^™úaÔå;Ö÷®©÷·lÇ(SÈ ‹·RŠ¢Ý‘–µ½ø6߃î‚Õ«n§àñv²!Ô㻪n¨îéþe/ývÍ?ÿ åû¿ÿùC >Ó¿»¯šlð¹gQ´ IDATÀÒ Ô‹€¶fXvŸÊg þ׊þçZÖǽe)Èèö‡ê~?gËã¿ð&KHþOþð㌨ìϘ=a³þ>5¾VQh·mêÏ©2zká«£A›@Ø9?K(>R–xKšaÔåUýeË—{ßE…ôõUÜ×'¼=¾ŒHþ¦Ð/KÈ׫Ü}ÝØÓü6LP ûw$—­ñ»*ö:v„jL>/yÆÖgzø"Ì\æGxŒ&¸hV¾\ÞƒR®ò6ñV­o“8â¾»dU®ÍW(†¹•¡÷S©ÂJAuR±¬Ó¼UÍv&ýdõÎæìô ?y’zÉL®n¹j'(A߉G £È«(}·xïH$ÈW­Ru`<ÜY˜¡¡!©mG>ººäî/Þh÷Ú—¶¿i¨\‡š‰7ôÕ¯*×?>ª“¹è±ÂÐEˆy×1ŸöÿBÊ/›ÿiàG÷ëöG5 .’”Çù„ìýbNÁæIø2ùxòziû›+ –·i´¾5Eç$œ®E›ˆXM¡:ÒŽÿ·ò§ àé=ß¼NÍXã©ÖdD Îg Ó™‰ë³@äT]-TT¨ï1ÌÏZÂÎY²­%þ\uíÞTßòYªøÏ«ÑúÖt=g¦qÑn´:ÒÓ«ð/ÅjøëÞßý™e!çÛ uO¯Ï†£vDé̘úwqÁ0êò¬šÜÜ*îgÜN6Èã:Ú—‚¯K^Ó¸Õ §W¦Z½¤ví£zïåŸýÂoÖ©¦_=ŒÚA¦õ3:jÇë"}ßO™P…:Îy 'sæÃ¸šeÁ:mbùæSu槦w%ŒÚAðAë4µ#‚ ïˆ Öijljæüùó/mã€L°ÏA¬ÓÔŽËÓk5k~¦™ì»ƒ€ ÖiH Áï;"‚ ‚ ‘Š@£ƒ ‚ ‚DHBXÕ‰1BAA8äú¬AADöY#‚ ‚ ¨AAÔŽ‚ ‚ jGAAµ#‚ ‚ ‚ÚAA¹Ñÿ¾#ÎæŒL ž^û(žÀ‚ 2A*×?>"íˆ ñ¯gÍšzB‡••‚ ‚Œ‡y±‰Bâ}õk³fÍÂ8 ‚ H|iÇØòF«ã=Ë\½íûYwd<µ)Ê7@ÝÙ×åMû°•·rÛ_ð˜4ªKÿƒ€ ÓP;¶þàÖä³³fŒ^¼àz½ñØÿY±CŒ™—¶¿)l?þüKÛߌ¤“:B3düè† {Py+·ýeû3÷ãi09¬}þA¦§vt]ëSÌðŒ÷Í3†O^îÑŽvCfkv§^¸fYgv[fÉ6àÅpç¾o3ï \IÈÊmÆ„¬¬ HO6¬Í¤Zj$ ÂDáxuÕ vN8‡AÔŽ;÷=päÜ¿dæêG¸—yŸcvÚˆ›ºGÉÈðèå»R.l|Ù²ù)mTY3 Ñwvê%eVÐJ{h·:¼?f]¡ÎÜ`*R§ê·»!Sܙȷ>¢pDáˆÂA$&Dñ}G^8À#—vî;É^§]C82J†¯^»xñâ§«3~T˜§ vðµ€î)S©2’B"‚ofJGJ;jrrrrj:(ÛÆÄIŽ7&”ÞùÈwž|ä¥ãq|†#2¢hwä„#7Žgíó¹´úð{5~ÿnõÕ÷ȹüùå¡sg]_Høâm·Â³¿±Üï‚É)¤Ól´d¬ÐÉÙ[-):ŸB,ºN‡†[.4Ìã4f}uj]§Iã•{ Í“¯h:vCÉ© ®…Ón0Ø5z}g`ŸõXO‹#¥®ÝekŒ=üÐ…üÍûËÕ ƒQêÈÚå­PUdÂ…½£vùF›`´I\E~ E–Ž”þÏGb(onXxŸi\LÞ‡nð8 È4׎¡ì{Ï´æ{Ÿ‡Þÿèf…óòðB¯]¾ôÙ…³ë–>ÿqÆ×ì¿oÈ}¼ð>±„-eª=ÂßVfGí?BVÖuŠvF lnðuX;6B¥Á«â”EÅÚÌV»^£ \¯ÑUfXú䥣D:ÐÕ7 ÐèõxŽ©ñŽa›¾µkê»Ó×ïØªU0”ºv—íÂ`Æêˆ„µáõ"í¨É«²m,KÞ±u•b ʈ³×R#iqäõ"=öRé/÷n«š÷óMÚÙ(›™ÆÚñþ%3¹Ä¿Ôvÿ’™AJ1”æ÷ŽÎ[ü1;üå¯ÏZÔxzç§gÏͺÿŽsŸ¹÷4~E1cÏŸvJhGÁ0Dn,côE JDÞÆiÖšìEz ôuuíyXµ%X¹ôu¥fó T9/äµ£T:}g!3SŲ°2/‘HˆümkAËGG»æ''0ŒB»­BhಔêŒ=Þ×VÌ)›Ð63!ù›š*Ô"6$SK…Zta.iŦmZ„´Ì5ËImM ¨ËR¶¦¾‡e€4ŸVh]þT BT›û3˲`«Ê³MTë *+ŸX­ÝýgÒ1áè¨É©²7XªÀ!UÎÛÈ#³*ÉÁÅv‹|ÏR ùã;œ>0þº÷ÉŸ›Nr“u;úà¯{ÿ÷‹¥[û½î}ã‘mõ9w1"­˜Ù›_)¾—ÿ)ššXÛ§7A©Œ@Ö· Ž¿SßêKœe€¨?d~ÉÏ7iï€#œ3,ì­l¯°6Ôå5‚ÄQŒw\ýÀâû—Ìä…cØweÌo›ù·]. ~K™ÿ÷IK¿wÏOþ5ëßàЉBÁ=ì™™Òex­9>â ,2ÕA 7ÖpnJ†v«ÃO§·+ynJÆ©Óü EçéSaÒ”J‡“‡ÃñÖ†S%8Àq¼„ïæ`mUyy¡cû(uÙ?ZfjjjnnnÚ”Ïö×Ô:‚db“©8á²Õ´Û%H'­ØÔÜÜl*NcmU¥—”päÍzŒº 3nSKK…¨|n•JŠÒŽÚ5õÝ^ljjnnÞ¿¿ 6ÕF8‘aÔåû7çBHþ¦¦&)7Æ‹£ÝƲž<'\L\–Ò*ËoŠ0ù¨"ãÕ„ù½ƒv–…¯Ï»C ­’u;ëÞh{V÷~Óê_í=ãU{¥[OÂU¿n­{£­þ̓—·ò»°­¹]dR ÚkÛ¯KæÁ‰ÿ~ÙòWJe2 ›Ÿi}+Ë›^GgºržÝÕZ÷FÛ¶Ÿ=ÈöÖ=ûꆹ÷{o¾¨!„×ïj}忟愣¨1Vq2…µ#'ƒdhÿ°ñæÛÎ^¼2huüîʵKÊÛç§ß 8¸Ãí¡W¯xoþ󑺸 …&[kiµ€réŠEg7p?”KW@µÉ»ÞnªîòkDnGθÄâÓ£éøþGbÚâ8†F]¾¹@¨ sssy™Â0 íµÞ.TUV>!`mç%!ùY*€¤äùËÐÝÆß®“¶L“Išei„t·Ù]¡ò´­Ûo¶J—hFH¾nU’”ÿ­a“ j^‡‘…|ÌóªliŦ–mZÃÈ$x“f'Üõ.ÇKdXvoýcÙ%ÿ´¬ô—{“u;_ùå#³†Ò3]í'ù†j±îÈÿ !§Ûí¸wל{sr~ù4?4пËâœdß.Á© 6ùöz° _pçÜ9ðÁés~ƒ3ŠÀ7Ÿ: ÉTp•ÍÉ)~ÄÛvxÏR !°ÿ Ôk4Q#r½˜¨ï;>÷ÚÞ»—üåŠgä½t´¿ïHç;ë ~qÏ7î=vòÐà'Î/}õ £ÔM¿4»í³;¶ÿ|MœˆÇ£Y§)R™Ì:•ªŒ[¿r«CÏ7N2U*n¨Ôzû¬•E†J]¡·Z°$ÒÑè³ þ•u €FWi|X¥ºÞŸ™œªDò}Gñ{•º¢¹¹¸!wÐ]¿«cU¹ša„½™ÜH´É{E '+»»ûÏ*Á3ýÝÀ²=F]ž‘ÏEÄ,$“R0êÇÖ§ÛŒ¶ª<ßbZ¡¾þÚ‘ïî¨É©2êJëJ–‰É™þî¨NÈð=³Çß©7­þpý¿ÎÁ€eOîþQönÞ=®;›¹7ï_ØM{ëÛë­£~Öºz$õ8xúƒÓçîçàR›d¢¤2’ö- ±Lye)è {EeŒ ÈtÓŽ ·0J?½L® `†®~üãÚÕ«óJû\'P÷e7¹ÊBÜäØá—„ÚQ£ï ÒNAkB "´‘ß%`…²Èä(ßÇ+$Án¨îó[w ¬‹âéhôGð+2R9"Qµ>Žù£0Œº¢©)«vùF«·)ÅÛ›¹Þ$-½ýƒ V ö÷ð}²æ$§éQ}S‹dR ÐnkÖ/‘­k³ƒ¯;ªòÍùÖÖ6»kÕª$¹˜ÌINèŒêŒÌ‚¾¨Ùÿ“wÚíÍ×Þʤ¯ù@üµëÙ¾R÷ ÷zÍ;†-‹ÞÜàû>EïÇgaá]gÎøzÀ•I_ø@t“Éù&¬½D2õ2ooø#¿öÔ|GJ8FcŒ Èu„ t/œw_ütøÒg#×.»)@Â- _ü››_ß_øx %îKîá¡ákçG®MLœ‰‡cïHiGp˜#§E ²BÆàn“ÔË1rWÛÓf€A{[˦/Ó½DÌ0 Ͳt–µ™vŠ»¹ö•NŠÒŽšR‹·‹vNr!>;'9Ý+pÇ\ƘÀ0ê¬`{Œ»rñm ˆªP Š–eL‘™èòÞ»h9°½uMïÃÌÉÈZÀ²{­6/¡v>òÒqJ)=¼ógÿíí Nš—LˆP²ìIÇQœ;ÚÒϲó²4³Æ—šÈ&Ù A<#ß‹#’©hFçl¿³G|ŽEeŒ Èdu»ã£¥†}½ªŸxzÁ­ÔC)!ÔãöŒ$’ÑD{”z<@ÀC<„âñ ÜÛŽ‡ãkq´òý•@Ò×ï(Wqj¦|ÇúÞ5õþŽÎ1ÑcÔåHþ&áËÂÂv¯¦äš¼*ŸÿÙšè‡xI% .¯ê/[¾Üû61¤¯¯â>…£XUµ¾-\AÇîÄ}…Q•U6›Õ´û1Õ*é‚€B»mSN•/ªBé,S–è#3áE^pïCк÷7,y÷hg?øÊ6ÅK¥¿\]bâÜãÛùîýÞS/>z¿÷õgXðÈSÚÙ‚s£ßäÛ%{3ÿúóì_Y?ðzß&™7£…ZV4#.5 ßÊ4 åmegJ·ú{½›øŽr_²’Æ‚ÄÌÐÐPèZîÍCåºÐMûÞsE¢EϾ£¯~;9……ãy)y½¦6Û÷´§ “öø ò$Ï(ƒ_Õò›ÿ>¼|ÌE{èÛÖÛŸ¹¯|dÒ˜´we!x™#ÈÄ¡¯Ÿ}9®µcãá÷ïV_qŒËŸ_:wÖõ…„/Þv+<û‹´v´T÷Õu:|zIo^j*ÒwÖ_áÁ·íåÛ)HÀ@_—6[ºÌë"cJC§Cé“c{@vƒªlÏʺN“FÞXà°á²€HS,£¸½Ó¬+¯½Ól¶C‘F"¼Ê`c]¡až¨ræmì†L™W˜Â"ƒÓ¬¯Nõ‡©´Ù s/|‹cÐxG¼—#JvAbÎdwÜ÷žKê/ÈòÐûݬp^þìêèÐå+Ÿ|váãuKŸ€ƒÇÿ8ãk~ßpH"m¯Z4ÙÚ®¾ˆüʨÔy÷Òè*¡ñ 3ÔÄÞj᥋pÙ—™¾ÓßÚ¦,*Öúç¸æDЩ o9|®É üF6‹ð6¢e”²wlÞ^YT¤‘ o±¨c6A9Ø,C4þàÖ‚ 2iLv»cäßwl~ïè¼Å³Ã_þú¬E§w~zöܬûï8÷™ëpOãW3öüiçã…÷ÅίÔy|'«r^jWë€2pÒB{«E›­]¨#³®°ú¸o"+} f–²26£ò­€~\IcY"ÙKÒF´ŒRö}]©ÙÊ£7Ð×ÕµçaÕßo1Ç: oæ›\<æ>¤æ³n°˜ñ"GAÈyzí£§Î'Ä‘vŒóÛÇfþm×…Ks•‘¢ 6+í†ÂÆ &¥ïgf«o“v«#»5³P|/­Œ± ‘ì%c#ZF)û¹)û0ÌMÉÐn5é5alÂYÌ ;¼t÷|Ö‚ ‚ªñ¥íoΚ5 Î_šzÚ±ýÃÆ…Yg?ûä3«ãwÿü­ åíóáv€?Üá¾™^½âI¼Åóg{]ì´cWµÉ^¤×€ÝT +”>!ånhoµðZG¸,©òJ,þz ÑwÖ䣌qDö )•²h¥ì•KW@¡ÏÞi6ø»­CQ.]qJ8øÒn0€Þû’ϱ€¥5ëmؘKwä}M AA}õk³fÍŠ¤ &¿ïøÜk{ï^ò—+ž¯ÑsG?²•o{体‡àØÉCƒŸ8G‡ÉµK£W‡F¾4»í³;"KR£«qÿ½ $÷2ëʶBV6˜Š”Þ—ö¨ö²r[gv›àg]§wú“”ÊS[¸½nhÿnµó`cWj1/»¾þC0ëtÞï:ÍºÂÆ ÞåÇ«†îcŽÌŠrSÀG ý-5…[޳ðâöÞ}Êö°°pÃ[¼yH¬‚¥£!°Y¹Õ—ß1_î~nØZÝç{ß6 ˜>î+ÈàŽ g¢ïxÿ’™Ž\Zûüþ§ìgG 0̹ × Â€0ÞJñ?‹qó eªXVz‡JOíÝ\ä‘L#.ô%[[Òj×k4þ ƒÞ Šf¼£Hjaý‘™Ó<DA¦“vä{ `íó¹´úð{5~ÿnõÕ÷ȹüùå¡sg]_Høâm·Â³¿±HkGKu_]§Ã'±ô楦"}g¾ò­ÀŸA{ùvR†|[d ¯K›­ñ/ç|K9÷#0qw¿¾ãìñTß2ó]]!‰v¬Ð)ƒå™1¥¡Ó¡ô))ÿ¼R‹Ûs}œ½Ól¶7Á H¬”ÁƺBüÐ×m…6vC¦ÎÌ+LAšN³¾:µ®Óä5+ñOÈSÆgÑ}톒SPt‡Tëc$ÝÖ«X é»2g/3’½/ÏÀM$´!_£ïìÔ”Mjjïhç"dñ`¹g4ëæ‚Ñ¢-Ö÷šM-¬?2sšÇ¤€‚ ÈdpÝÆ;Ê÷À¡÷?ºYá¼<üÙÕÑ¡ËW>ùìÂÇë–>ÿqÆ×ü¾áDÂÁýk¹“!Ñ•&r­^:ú–•óR¹n4{«eåÊ•ürê<åØ6…ÈŽ¨:1¥ìƒúþø™©EcIG¡Lç£ Í³ ‘`FäsÀ¾ÐäM´ã}ò1`Aæa‚z¨ÿF.\á–Cº¬í‘!z£}cC›uKƒ3ºÄì•KWÇDŠg$÷º÷»Fþh\ïK…¤Ö™‚Ǧ€‚ ÈôiwŒ²— ù½£óÌùë³5žÞùéÙs³î¿ãÜg®Ã=_QÌØó§Þ;E»Ìzôøž¹€eM¶ÖxÚ ÐjÑfwfCf«]?÷ô)nãØ6…´ïEщ)eØW†H: e:eÍ /4˜ùìßW£ï¬ÓWÈljŸQ†DjÈ`õŸmP©Ê¸+ë¼í±Ê"S!S¥âzüë:ýs‹·ª|‘_¸¡Rë —o.ò²@{P™Ì:ú[aZ5ºJca5T6ˆ7åYÊT{üeû}ÇÔÂú#QðØA™6Ú1Ú^BóÛÇfþm×…Ksu(ÂÏçˆJgr ëp\â4ëôð‚iiû¸¨¯~;9ùNê ñŽ/móìµÔ|oqƒÅ,u&#‚ toåþ=Üw ,fCåºÐñ`ñØîxá¼›1ìvÓÑ«n pKÂÿææ×÷×SJ÷%7õÏ(%nš˜ø•IñHYd2‰-#áe®Ù<·¨H ޮ톹À‰ï±}‚BA)ͤjÇGJäŽ[ýÄÓ h¥J ¡·g$‘Œ&zÜ£Ôãâ!”gøãÞv<„ñf)èT*îæ• ú l­ø·­A‰ËvG8±Ï´f"[z‚Þ$‚l 9< ïÉŽm¼ã¤¡úák2[¯b:‚ ‚Ú1žx£Õq‰že®Þöý‚,<ÞÓ’øoq4ç†e†RšÀ°„PðŒñxìA);½‹×røƒ[“Ï&§Þ6ßõzã1YÛqͱqƒw±âÆ;Æm¼({ÓŠ{+¾9û»÷(–ó®%=cüãóOæ;Œëä[%Aµã¤âºÖ—8Ãã!î›g ÷^N«lršu:³3t‰ô}ÇXÁ†¡ÀÒa|â™WlûÞ‹íY€Ï?S=JSúâé‡ñGP;N}Ìû³ïqS÷(½|WÊ'_¶\/gœùO8 —‘ñ3†ù¬¯ËµFe€0`¹©ãÕuz£mÓ“bÓã¤ÜSÃÞYñ)ñ†dÒŽÑ=œfÎ<éE„ vœâœv ¹gBâÈ(¾zíâÅ‹Ÿ®ÎøQažòÀár{™u*•J¥RefrW¹ÝY²‡ÝS¦RefÞ üÉ϶bæ÷’¬œ»|SP;6v}ýnðW$N³.Ó¿üøãuõÑo«•œf]¦¯8ü/ã°¨½wn½Ð<$VÁÆÒÑØøóñ;æËÝïÎlÔYÁ©Æy‹#'€Êr3^3 ŽW×U½²«¡i%Eð)qʯé‘ÑD¸=OäÑŽ‡ß¿=ùêˆûê°ûâç—‡Îu}!á‹·Ý ÛvÉ4=ZªûЇÃáè¬K­Ö› ÑwÖ­$+·:úoþÔ„ìåÝI¤Ñb ¯K›­ñ/ç|K¹tô xWgóËÌwÿ±0úM!µ’Ý©C'çXC¥pšA)‡Åíf] Ôqë pÐ.«`ㆅbϨB›:((Loš\lf}uª×¬¸¯ZpØBÓŒ÷ñŽ”R P`€ê  wõ‘#Æu ò.¶Ó¬œ@‚G^÷ìà,‡6¡™EŽݠò!5÷¥¨˜ÜÃó‰è£…˜·ÁC1n´™´§Dïr¸¨Žõ©,’SBâ™PîLçé7ágQ D#?FãóYxbÄà*ûˆ.–È.Ì`·ÄÏU/¾Zõâ«TŒÆcgèXç¾2AÆö¿œþí¡oþï«»>xÙô?/li+ºôWJé+ûôkê²M°‹åðî ‹^xWä§Ôzþçãÿ5àû5ð_{š …$üî ‹^xA°üîX7É!ÌUÔa){Q ©˜‹úh#±P3~ë»/ð'gèyË/<ñ‹¶C½eÎäñÕ™¼xÝ«ï}L©‡R¡”ê¡Ä»L=„Ò· .^÷ªtœø¥w_X´ˆÖâÅ‹ý‘ Žá»/,ZpÊ…˜RJß}!ô 5 ?o`,° È]h$LGÊžÛ¡?À6ø´2Á‘¿ÒIAj/ñ‹N4ªÿõ_²N.táN ©c$âRìN¿ <‹‚Ü”Hs‘ð°™-Ó1ŸÏþcüWt aÝŽêÂŒìÞ‚L#¸Û%÷ï¡Þ‹Ü=4ôV;444eÚ¸G!ódÜüÞÑÄ/Ì“´/-ìÿøŒsÖ—ï8÷™ëpOãWîÝó§1uMðT¦œ—ÚÅ5jô‚9í­¾ÕÑ¿¬ÉÖž:íäVè³µ–V;8OŸÒfkƺI¤í Ó÷ ]f ã°”ý@_}]][V‰e*´‘p@ÞLÌ Óë2Þqß{.©?ÑvG ”ÿÉÃu[sÛX "(‹ŠS«õf§Ó¬o\aðMá¨-æ–4Ù+ÉJ~Y+Cmø—4zÑi-C œ¡RçµÕè*¡ñ Ó{’ûç–Tk-­¾&Ž 1û€t탽un··Z|%6”𧫟̈ÆcIGÑBµöˆ^êᣪ,*ÒÈù&:ÙSBæÉž ã=ý&î, îP•°„1Ä,CôxM¨ÏþŒÆȤ6,Q^˜ñA?ÓðûŽæ·ÍüÛ® —.æ.xê®[“¿š¨¸tù:ÑB(¸‡=3Sº ¯5ë×åÆ(ÃS§ ñvR>•‘¢½ŸèC—5٩ƃæT‹6[Ж´šSN¥f›Æ¾)ðÎZظ¢¡Óäï$i•uXÊ~nJ†À> sS2´[Mòm&(113€l_!ðcã×åûŽQ}©ž ÌM x€Þ,0@ aX–0Dt/M¶¶¬ìáB²²®3V}F}g!3SŲ°r«C¯ÀOÍ‹ ôu¥fÈýÖïìî…ÕÇYï#(•ÙâÏ'œý@_Wמ‡U[|[öå/iµë5š€«FX–Ný¤V-¢… øP¿Ä¥AT#x*‹"tAÏ"ÇHÔ¥X~z?af‡±3ƒ¾±£qø,ÈhüWAØdÂÝ…)zá!LËñŽí6Þ|ÛÙ‹W­Žß]¹vIyûüô»3àw¸=ôêOâ-Ã>R» »ªM¾‡4SµoÜ¡`¼£½Õ’‘27t`n lÙ²‡[17%cÏ–-àÛ8¦M’/ÁÙ %–0KÙ+—®ÞÞi6Ë6ê(—®¬»Á?VÌ.– ”¡f]‚†ZÇùxG¡†¤ ÀpïʰlP–!Œø=ßhY¹ÕÑY%±|µQ£ïìt8Ž·6œO7ÔÀ«ã}~>å=‡½Ï/[µT!ösS2´[~ƒ†¥n›£Ùé4Å?ÆÓî8ö§ÄBEÔê>ª‘<•EºàgH±c$&Œóô›¸³Hä SÖFÌ ÆtŒÆî³0£ñ_aS KT&¶:"7Œv|îµ½w/ùËÏÇ×è¹£ÙÊ·=òÞÉÃpìä¡ÁOœ£ÃäڥѫC#_šÝ¿öÙV‚ºÊS‚!óA?@[™bäî[%Pg* BÎÓ§2ø÷.Ëœ>ZHr+„ËcÞPw×¥òÝÇÆ”JAí&ê°¤½²ÈT%Üz=,•¯I”E¦_â*•ª5[¤Z&(±P3Þ.€¢öñü¶µ‡ï•f×UMp@(Ü$vÚMÕ\?’FWyÊ£×D|b>X„ û‹D$÷#x>‘z´»mv5þîw]bw0ß>ˆEÕd>%†êXŸÊ¢=üü1 w&Œëô›Ð³(Æ¢s'Á瀌Æ„MAÆíh.ÌÀ–2Ýú¬nÿ`”~6z™\%À ]ýøÇµ«Wç•ö¹N¡îËnr•!#„¸É±Ã/¬ ¼iDÍÈ:Aó<‘)›ùÝa…A²ìK«³HdyŒ›‹ Ñ;‚î†"y‡åì5úN‡"‰ˆO`<wH‚ :I·ßÌiÖ5¦<î àÿ˜Ìâ|>k`€¥”¹  @e†!”RÑFGm1×Y¨,2¬ÐéÍY¦y1htÌ6¨TeÜ•uMdÊ"S!S¥b€¬¬ëô?o´ª|]] 7Tj}]¾ç“²@{P™Ì:ú[ú°nÆÂj¨l˜ŒÆ®Òø°JEÈʺN½&ø§d¡ŸuÊåH¢ºpÃ[¦°OeQ…Îÿ )zŒäÏ„qž~{?aФ)gÆgí1³ÏÅà*›‚tX¢¸0ƒÜF€›ÚÐÐPèZ®ýÆP¹.tÓ¾÷\QôŠÕ¾RùÛ—Ø9{Ýn:zÕ}ísÏÅOF.}zmô¢›Rš˜È$°,õÏ(%nú™óÎCí1hÈÉlÍžÀ¦Ž˜3…¶›Ís‹Š”œÓÆ”¾…R_ýwrr’‘;c…Âñ¥íož½–úƒï-n°˜¥ÎäñÕ™¬úákÏ?YðÀß+X†ø[ú©‡ÂM  ù˜³Êhs¼ºnºÔ*SI¡œf ÜI*\Fâì,ršuzxÁ´´=öÇHÔçø9¢ )žÃ7"ܽ•û÷pß%h°˜ •ëø[í´mw¬~âé´R¥„PÛ3’HF=îQêññJˆÇ3üqo;ž(ñf)èTªã@V6èåê0n¼cèù'Ütß_\ ÃPJo€!”ê¡„%l쩲Èd[FâìAÔT +æNÞ1š¢'žÃˆÓð¦ubŸm2õMhOkœ ²)ä°R´o]‚ëò¶u„àä12UD™&ÚñVÇ%z–¹zÛ÷ ²ð˜!AÄùxÇiÔ=]¨nØBÝ@êAtšž$x#1c ¼gÝrøƒ[“Ï&§Þ6ßõzã1YÛ8œ©}:M§e‰ÿù¬AµãäáºÖ—8Ãã!î›g ÷^è«Î.*˜ãuÂäÔtÒ±ÀóÐ-SäûŽ‚ ‚Úq‚1ïs̾{ÄMÝ£ddxôò])Ÿl|ÙrݤËÁFþCYÜòÜÀ¹‘Iˆÿ\7¶>"‚ È®O»†Ü3!qd” _½vñâÅOWgü¨0Oyàð ¹½Ì:ß \#¡ÝY²‡ÝÃ}ÐûÝÀŸü¬'f~/Ôwpù)–ùeaӠӬ˔›ÜÂiÖeúœ7ö{²hQii°ŸdAÊ!e”LÓn𮚇„7ØX:€>~Ç|¹ûýÑ™ÍÂðò1JöºÌg ‚ 7&qý®Lãá÷ïV_qŒËŸ_:wÖõ…„/Þv+<ûËý÷.ØÉRÝW×É}ØÕnÈÔ›—šŠôu ø®Õ·íåÛIò5¬>ÿôÂe^S:J¯ü)4Ør°Te{VÖuš4òÆÿƒ—Dšr`Åíf] xíf³Š4áUë óB[c…6vC¦Î̯QXdpšõÕ©þ0•€6¤bî%žß°–á‰ç°ÀPÊPf„a)õüö™l¬’A8g²Û÷½ç’ú ²<ôþG7+œ—‡?»::tùÊ'Ÿ]øxÝÒçààñ?ÎøÚß7’ÈA[Ç«M¶¶«o "¿2*uÞ½4ºJh<(Òr&3W-€FßéÿŒª²¨XkiÎñ”YrjÃ[Ÿk2Æÿƒ‘Í"¼h¥ì·WiäÂd,êX€M`…E6ËSn¼ãÚ_´²@)¥,P€J= eoÔZÇõ"‚L%&»Ý1òÙ8šß;:oñÇìð—¿>kQã韞=7ëþ;Î}æ:ÜÓøÅŒ=Úùxá}±óË× Êy©]­ÊÀ/Ø[-Úl}è²@™u…ÕÇY¯ °Ò׈d)+c3*ß ø@¿¤±,‘ì%i#ZF)û¾®ÔìH?‚6Ð×ÕµÇ7C—„c 7óMö%sñÙú¸Xµè(Ã$r¡”–2à~ʰý&ÂR–!Ä}Üäϯõ%ðïG¦¬ø+ÙßBdaeNG ‚Úqr1¿}læßv]¸t1wÁSwÝšüÕDÅ¥ËàЉBÁ=ì™™Òex­Y¿.7Fž:í&Ú]ÈÝ1œt´ W4tš”üÝ´Õ·I»Õ‘ÝšY¨þŽ*c,{‡¿—Œh¥ìç¦dìÃ07%ãÿ³÷îáMUéâÿ»CƒZD9©`ÕzaêÒÇz t§Zã93™A2ÏÁvÐÊñÌ”ü¿fæëÌø;¯3_ìX‹Î1ÊÏ8ãd*U0  ¡% —êX‹¥µPiK/IöÞë÷ÇÎe'û’Ý+½¼Ÿ§OŸµ×~×Zïz÷nóf]ÞeÜêß3”\¡¸‘ÅÄ é\ÇQŽï¸½¦~]÷{4,[2mͪJÉkò .t:e§5ù ¥6þ}b’W¬B)„b6ÍÖœãÈ¥÷×uo¯©—“&  ³7ÒÙÇvõÑ]½‘ÎÞHgo¤»/RwÄWï;RçóÕú××Öûêêé)´ðyèb¤„˜l9‚ï‘ÝÞ”,ÏÝà‡¦Š6$½ R׊¤ÕÖìltšSiɶ‚ ‚ ïç¹Êó—ïeZûI{ýÙ]ÿùÊ#ÇN×ÀÑÓ‡ÏFBlw¤¯#|õœ¯{ömeUêÍ–Þ†å”K0Z²+¸O²R(Ž˜›rãÑyxé$ï°i¼žêw¡˜¼¿<Çnu6'ùóQÇÿô"Ež£/¡mtG—¿¾Ñî 4&›¥¡"áÄz\Æõ8t‰ 2‹sÖ³?‹‘¶?aêèkýÕï׬YùdcËi` ÝC³}fYš=Z»àÑdÿL/z™r •ð|ª"'VÅ‹º¡À¦¤SÅ}>Þ¬ªI¨’Þê÷[• ‹é©¤”¸ŒTåäõV¿Ï JÌ âG~¥vGP!ˆ“• :Íîìµ26çq¹Ö; ·yñõPuõFÞd"Ÿçb!EuckBõVküõ³Ø{‰*¬ƒ&“&õY¬7j=^«^²G*&ŸTO²|òv¨ROLüû^˸ޟ•)ɵAWť؅e±ÅRÚ¦æçºs.txMV½‚å­‚ úŽ :¿¥U™!š&‘>šd\™qÕµSßýø„µš¢»i°L„°4Q«¯4&‡C,-³n4^§3ËdÒ@t„«:K`󔣹ÞqÙ’iûëº{qüRvû ÕÞÙ@àÿ@ES„Ũ„.t¹M«Õ©TP]N(½åh`{¤”loâëb0–rÎcÜ©Kqú“×;F#0Ii+±#*áÛÐuDAßQ1öuï\å! !,Kš «Ùˆš¡#„a€†eX² jýâÐåõrl…v°TãÄÚ°¢Ï³NwØ…–j«FÄæ¦õü¬Ñq\³* ºä1í^޶®%y3ºy¦°Â$±êDàM©-GÝ#¥d{SªóXá4gA…˸ޚ^–ó¥´•ÚÅM:ƒYàÎ18ðOA}G圪Ù5šÎŠpÚTqAÿ8yЃîãe@#:·Îw§ì•)¹ÜzGnôqÜÇýuûc~¤<* €?g-ƒ`ÊÚk³5Õ»ãÏëFÇe%ö<Åcªì"òšü‚~lyÑÆÎã›oBÀ¸^4p=¿y+ê#Ji›š#¯Ö7ß„œûÐuDAßqüÅãë&mTߌà|fˆ(cõtV© ŦzÉ›N·»(*¼£19ÊmZNlQ¹?±çÉ£‹ÍA/,³cq1c{¤6$˃Æä¨všõoõ¥M4[* í`©w0yëyÃÅÚ&å'k«1­ÏÑVdWÿßhAôËÞÚÏ§ßØ633ÒÕÙò®ûèO IËJ…\6Æ J­/£ßq ЄPŠ}LÁcÊ6¦D¶_${ {¤moâ_jL¿Iüo˜BmSò“ÕßS ‚ ï˜†–þÆy™L„¥§f†N÷ø Ùé¬tš­`ãöf+lr,xkÝ©‰äw1›§dÙó¬ d,ÎÓŠ¢€e *±½Ô1×Q¥|„rb?㊆´{êAô%qÖøæÜ¦ aáHÏÜìΧÿàzé)ãåùX„êÉÍ8ZG8îÝŠ˜Í)·Fs½#pÁÓRï«Ã§6oJ¥U*Õ²÷è:"‚ŒaTcY¹¦–zÚ9P‡#l¨¯¿««ëšÜÿ(\©Ù_{J®TÊ©ÑϤ*.Èö§É—ñãO¤ÎÞHv]±x'ñ4?B²èÁü œfmL©t§€,Zôä“©z*hBAÍ‚>JÖ?„/.0oª°Ìi bGŒ$‹µÎ?qÄÉ7oÜæ¢•æé2ã½uÜŒ[ë­~¿Ïçó AÆ8czÜÑ]{bþâ¾0³=—z:ÚÛZ®È¸jÆtxv›kÙÒ;% ¹ìå~n_Aì\]«¿x“¿w'_¦”âÆ›2eÜÜ0ôÂtܪȮöû4Q÷‡¿‰•»¯ÛPUTîwèå…yú‹LµË6JkNqvê¼`Oèb_¤£§÷üÅÎÖ’üçààÉ2oÙÿVõa‰’OÅà«+KÒÙà>(vì´Çw]øéĨIbÄDcZotyøJɺ!.¯1™ôræMU,I&ÙÈü.§ŠåŠÚ?qDAQcTÇ4ܲçXý‚¼VUèš[g.r7m¿ÐÖ>sÙõí[jϸ¯›—Yõ÷ík ¿7|ª‰ž½‘´ç”Hšøi’{¸6lPåZÞOš‹“–EI©/"%Ÿ|òG”R"} мX,z‹ü!u£¼ÞAAÐw[8?::í¦@gw׊;Ÿš;ýÆYêyÝ=pøÔ^–b¦el•{¬%+†©AÑÓ/ø¤ueö0nõ<ÚB3Ägie„ePRj ç‹HÉ'Ÿü‘%‡”H1’N,zâHúóÇìnë‘`Ý‹ûU@B*LQjB˜7~cÀg‚ È(0F÷ÊúÒ=uF[Wï¹}oööwkfß|Ç|-ì8ø6;^F}eè@]ùð5°;¢³¬^‡¢áåxû`¼Wnv–0-é啺’2ôVy޽Pt‰@X¼Rüý:25‹öQJ^“_qù Óé•ÓE“_ÐPjãOÑ'6!yÅ*”R@(P`ó™3gr‰Iâ8>ö‚G„¢AC‘áûCöÚdwb G#Xù¤RAäò0ÇŸ«Ü9Éñ^&ÜOºë¿j¬óòÄ/üóíKž>|î|ðêYWDM®žóÕcϾýúó*¨Ro¶T<¤Ó±lQ¹ßªO½©³7â›r ÌA:É;”<Ø#á>Ú´…Z·¥ÚaJ',®¶‚R=_DR>ùä÷åOˆSrH‰Ô#2bq}$le¢Ž8æé–‰P”XB(P è§l¯OaUDE±,=¦0Àü_k)üïa‰tV4”½ïK{ã;Æø[Ç¢}ør¼?gÉÎÅ—gmõ aÿùà¯&éœ^[A± ÕÑÑ!ÌåvØ,%Â[£°KtÓß~Oe¹#!¶·+ÜÙºìíøºwÍÊ'ýrÿ™*ņY–f›ýêú½Ç‡ïÃIæ3'9&¸-¾¿d¼„ïŸaÆ£ÁÀó%ÛÜjp/'#½ãæ×ßkëÏ)þY^µË)õ&_¶×Ôï¯ë€eK¦É‡§[R¤(ÂPEqÔ‹ë¡T@¥" jV}¸¾vœ¼'ƒnB´ âÚ‚Nsaãú˜dºó»GÂÉur0"‚ c«½Òf)á~×6v@µËi³”÷ŒÅ9ëÎoé® ¡î‹áþšd\™qÕµSßýøµ'÷’KwÓ¡ŽPÿ·áþo#jõ´QÑHcr8x'ñòþß›ÒÍ_#ýˆuÆfö¹©í,ÍE‹ýÝÖqÇö×uo¯©—“&  ³7ÒÙÇvõÑ]½‘ÎÞHgo¤»/RwÄWï;RçóÕú××Öûêêé)´ÀMá…óä‡ÜôÚt1“²ÂЧib…Æ3Å¢{Jë0°(¡^›xXV9MF¼{o?¿žç8¦ M*b±øŒvÊÔ6•‹Œ9 ’¢@ˆë Ñ´T0Zùø© ß%Z™äŒÅ9kûºw®ò†–% Í„ÕlDÍÐÂ0ÀÃ2,aY† µ~qèòz9¶B;Xªqä`XÑçƒY§; ìBKµU#bsÓz~Öx‰ïÈ9ŽÜ™4½¸]÷šU’Â¥ÂÌÈTK L¨¸¡Iá}ÑHœ^[iCYutJÚk³yõü¹`}r$T…QHe¢{ŠGD”P*U7I$ˆJîµJšTÔb þ3¤-åõ¸bÛÅ$tªD4P«²ø©iÞEZAÆè>ëS5»FÓY칂z«ß?^²qtv¢Æäð™älnµWò³ÆïzGaXSþ‚ª®ÞßYŒåó=HBÄÎÉNŽÄYˆhŒ¥ôV«òwFcZoÔz¼V½>¥r.$§MŸF,IÑ|™z”“T‰Þl©° šdæ…•4ªÜhNí7 IDATbiK¹6誸»°,æÜÉè ZIR ÖXe:®üM–G€ úŽÃ‡ëï5ßœm»fîÚ/C»#Ã˸ˆï¸lÉ´ýuݽ¸?~)»t˜Šjïì ð ¢¿)B€b”®=á6liuIûE¤¿W(ŠBª$º§†¥…aD•7*j±ÁÙŒ±dÐi.txMV½ŒR•ˆjhÇE+®G‰ úŽÃû“Óÿ>uíôoÏ÷6nß9mÍóÐô#É> v±Oª>ýÑÇ5«ò”î•áhë Q’7£›g` «|á²Þê÷[AòPK £*‰î©„a©G*Œ¨Þ`,CSÒ¨r‹)/Å…àòet­D´ƒ ã§ÊW>\A Î(í•™òÅg×R=ÀôϦ:Õ]éü‹XÎ> (ÁÏÅ2…‰†ÒÊŒ¦·gB©}—[å]~UÇQ|Ǹ¿¨ÀqTQñ-2b?áÎÞ0—™²–rE6n(Še(…T*ºç@–z$ÈêÍ–†Rþ®ò´Êk‘•›83)äjzÝõ†èÙÒáQÅ+ Ôª0~ª|¿†ëQ"2Áظ#·Qô½ŽšDK½x唯2þwyïÿyôÙ—w<ÿ˨êr $æ|ðÕþ,–¹`cârÛ*Xµ jŠuòdöY$dÆ2Ë,o¯Üðëó_¯­{aßá/ºDßäË ÷ç“V,/o˲»ü-J~´y‹ 2)øtÓ¢MŸ¢¸Kî÷á/º¸ÏДZŽŒ;(ÂHœ÷úשϞèºϹté¢qVdžÿ~W·y´¦Y·½+I#³o¬ÌIŒS‚':<¶mXn;—.»‰ñß‘ƒûö•–z_þ{BAÆ Ø+³lÉ4xìÅý\.ÂHÊOJ‘£û>¹j‚¾óÐÏ;ù°¿£¿¿÷vuÇž?o•ô{áýxÕ5~%öt2M%°Ël„Ý»aA|Müí˜1ÅrظöÀ|xäXxãKÔ¿|à•Xþ+%<hsbøÐbHø£âõìKÊTB@ÉfÈÉÈY %%Ñô0’P[T=ÑL©*ö×SìùÈÊ¡ôGAd©Øà¶­¬ÏØE.õÓßO†fÿsO7wkÇ¿^ûMô1l„ûYéoå/šÇ„1Vo„—¶Áòb(®m«“°žØ&…â°PÑÌ•• Q¨²ÄB8'òA¢žå°Ú"’YùPTRØ 8ÜFŸ•óSÓ|ÇW¦¸”¯ìÙ%¦¶„z"™ i(…ºñí¹ÑÛ(3`Æ×zÇQC÷‹J™»¾×JÐD‚ ÈòïêñNéïèd!Ì@ÍžídÆn»™WP}4DX ˜þ†]6Hò…ñÿRrD*‘‘/°ÜžXDX\¢»kì¢þÏ>(‰ùˆó‹“öâ'»GÂz–ÛE<<©SêOj‹×…¤âʬ‘¢F±¬z¢™âj š“Ñ-aÏÁ?ʉßqÈ_áÖ¯f)EQ„ JŲ„øMÅhAdÌùŽ­}Ôù>6Â@?CB4|bŸÈË<ÛÅ̺J•sÝ” aÂ,aXP_9 2DÆÅyÖ£QM)øî a€šBPè~Qùâã«ð]î•8ôˆ ‚Œ†ïø¯?Êî§Rü¼íé²)Ÿ~üaY–%šE"4M7õSG;U!,°„!ì©`=>dèàè£(°À…†¤€{¤bÝâõo¨Ö¯ÖF¼6­Ç0ÎöÿŽGG§_Õ2‚ #xžõK[^8püÎ|r²¡îLãñÆæÿS]²¹%p6x⫯?ûêÜÉæs§‚mãÖt˸­)ÆÑyÖ—åoœ€Š–"@ ¨)G^+±Vìúíã?”_9áàŽíN{xwŠ€¢Ã¾E:ÍñÓ³ùé‘í2D»)|I}ÇñÀ_<¾7öîüÓ‡‡ð!Bp‡µŒÛwò E€Ö÷ZÉ3¯îDûŒÁƒn(È×Ò#Æ}D}G{k?Ÿ~cÛwDfÜÜò®ûèxûò=‘¾ÂŽÝ¾L’øŽ…BP@€ @(­«(‘½ØA§™÷ŒƒN³ÙÙ ^›Öætšu:N§³y!ÈK ߸¤VËmóÚt1ÄÞ¡AM©-zmÚÒ*UÕN«µ}š|éê)9š<èä,ˆ»Ž[çCbì1è4kyéXËÊí#öDÿ6ƒN³6ÖÁø]EO³I¢^›VŸ¨0ÚŠH_dì&ªdR[|q1”½H"e…ÏA‰â;¶ô7ª3†¥§f†¾èñ‡Ó3lóPÍ#ëNáÔ‰ˆý›AÜ$8ú(ö÷=…¢X €P@Q@(`¹@J›/Иl–† î%:­î›) Àå›Ïçóm-ªÚ ³ÆÒ® áç·ËÞ¸Þçóù|>yŽÝû.m({ŸËö< ?Ì;˜‚ƒƒ™ãÏ [Ô[ýåElÑVŸÏï·Þ|),•P3µ/Í£AŸHßw·&¿›£'U'ãi(È×(ê¦òGÿïa›Ÿ«³ÚÒPš¨5mU¢}„ Ó\ åÑ Ü…¼ 9y¿ßª—ì‹”ÝÄ•ä·eƒƒÞ4 ¤}EË Ÿ¯ð%AdúŽÎßœùašÐ6ŠôÌÍ>ÿô\—ÍuÌCeá™Q·¤Ú{R­w¬9Ö"õ#:î$t“‹¥I‘è=ˆÅãÔ˜ÖçØ­Î`ÔsŒNµ×s)½¡ˆ-Ч¨ ÄÃXÿƒHH¤ôVÑ?™ÁôÚ´ZeÃHR-Ê“k1GKéÍpqݼWÜuŒ¥5 r\/—QTTOdž'ÓÛGñ#ˆûÊŽØãi½‘kRQU¢} tCÞe9÷EYëɶ4láJ-,«Nü7Kq]9ë5ÉiþžÄ Ó\¸å¤ b5 †Í í\KµÃ¤NhÂ0ßû>õéá$=4!)#ÓGÉ:½6í†*,,{?..0oª°´y2E[cí$‹µžÐgaYY޽1nÞ¸ÍEG'ÉF%Qx_ PS°PÀ™* €°,¥R±+îtŒ6˜³š9O3€&¹/^Ëh°¦¦õcESÀã2üÐz¼Ö¬¦îfÚnîË–Ó\h?©Š°PdR›ª‡t[bw$*”ê‹hRJ67r ©oŸBDJYAÆ•ïè®=1q_˜‡ÙžK=ím-Wd\5c:<»Í%í;ºìå~_Ì_²:ó&«¿xQ'îN¾L)+¤ĪH‡2èSü¢Šìj¿Oû§mó&µàµé6T•ûzyažþ© ¤k”ÖœÜGqynЇ“:^à¾ú‹˜W“*l.´-õœã2^›ÖìŒ{˜ü.CÐiµç$ÌT FHÙ<ÆwLëC 2€@±”*ƒ XJÜã¨pmõ[Á¦yÁ†â>ú­Ò/î` F¿¦”‘þf5tš‚ ~…ljÈÍ6‹Ž:Z…i½!§â 3Çe4XAÆR3»!Çàª}¤ðÚ ÝÕ~‡&n(ÏÐú˜•kÜêP¢˜h_Dë”R2+;—'E¹B†RAá‡Êè¢|Æíð‰³Sç{Bû"=½ç/v¶–ä?O~yËþ·ªK´0ªóPÉÿ.¥fˆ¸¸†²÷ã_Á妓Ê%ÿ¿É6‘^fèsF0„ù $™d#ó»œ*–+j1p½£&>+M±ÜT5¡€ € 0EìÏßë°sO@oޝ|2^›È²’å¼¢SÝŸÿ®$ ØÞ„©¢‹Xx}ñz\¹ÙYÂ4@V6lÙRÅedeçVmÙÑ›ƒ¶òPêj5ùüE“RÏFꑉÖ)¥¤&¿âòA§Ó+§€C)TA19î¨|Æmϱúy­ªÐ5·Î\änÚ~¡­}æ²ëÛ/¶Ôžq_7/³êïÛ×~oøôìýˆ¼ªfKÅC:]lä2化ì N%¶¨Ü/XljÈ-0kiÎYóšøé‘é¦ÞZîÑÅþ*–YŒ±?%ˆ÷QcrT;Í =·ú¬xd¢uJ*©19ÊmZ.¶ff H8âe…ÏAtˆñ̽ö̽FÄpýš åeßÙåùÀs[½¿:×y–ÒÜþSMõ„êOÞZû‡¼ÒÿïîG_¹wÓk»å>Ý´hÓ§"—Rùñ˵ï4Ç®šßYË»+"šN®$µéO7-âß–V¦gêÝ´5‹öQJ^Ô Rê5¿³V¨I É&)À/+±Ì§ñ—“ÿƦ¼Àë^Øwø‹.™7y<2 ¿¾¼’×výša !L"—¥Y–BXBjüÍy%Ç8£‚èÔ{.þ¯í† ÈØ„û¸ä~þ¢‹û åÔÆ£û¬}éž:£­«÷܇¾7{û»5³o¾c¾v|›fH_/£¾2t ®|,ÌC)›!Ò[ýå9öBÑdœN–’œ²I®yèsFâ+–T¡”B±€2›c|GQ¦©9Þâ>Þöѱ–ÝÇÎí>Öê>Þî>ѺçØ×{üçX*M4ÜhLoœNbׂ Èxf,~xšd\™qÕµSßýø„µš¢»i°L„°4Q«¯4&‡C,-¤’›ëtf™LˆNmWg lžRGAdÔ‹¾£}ÝÆ;WyCˆfÂj6¢fèa`€a–°,ÄZ¿8ty½[¡,Õ¸¢iXÑçƒY§ãb˜[ª­››Ö§”ÁøŽ‚ 2y}G8U³k4ç[Hô“=è>^4&‡Ï$gs«½RxGAdòúŽ)üÅãë&mTߌà|fH ßAAÐwL°·öóé7¶ÍÌŒtu¶¼ë>ú“‚EÒ²ãsGÈåa|ÙJN[që^ܯŠŠPaŠR¼ñ<ÚAQŠjì«ØÒߨÎd–žšú¢gpsÄ){ØWÐiŽGhä§‘!sÈ`|G…<ö‚G„¢ACšAQÎè;n¯©ß_×ýÞ Ë–L[³*Oa)goÎmašÐ6ŠôÌÍî|ú®—ž2^oç  lA¢1‡}ä“§[$BQj` ¡@E( Ÿ²½>…UŲô˜Âó­¥ð¿ëFQ5œ@AßQ±ãÈ¥÷×uÔ+q›Z:èiç@ްá¾þ®K—.¬¹ëWõWžØ_{jÙÒ;%K9Ͷœ–]h©v˜4^›¶´J¥ªÒU±lÑ+~Ã>Þe¹ßª¯Mëɶ4láJ-,«? "xÐÈYw·þœfs4î`Ði.tTGÓkŸéøU7s€·’‚Æuš ·œT/’¹ŒÂ¢òÑ2ªb¾câ[¥ K[ƒ'S´5ÖNB±Xë }–•åØcNC’1%tN.Ëkàz¾&“d½£òo_yº%õGê€ w¬5‹ë¡T@¥" jPãÿAAD9£4]Å9ޝÿfÙë¿Y¿L‹»öÄìûÂt_ˆîºÔÓÑÞÖrEÆU3¦Ã+–9ÃÏeo\ïóù|>Ÿ¿<ÇnuAoõ—±E[}>¿ßzwò¥^P*Z(ê ñ§¶›Fƒ>‘¾ïnM~46G3NªNÆÓÔ,ø-Á1}^›Ö 6?§Xµ…ÂâòA§¹ʹ|ôJÚ*U¸ºÀ](6½Ï—)‡RÞäs´NζA§Õž[ßhw‰SFgѲ^[iCŠ2܈ãÄþCMùöµ½¦^NšD€‚ÎÞHgÛÕGwõF:{#½‘î¾HÝ_½ïHÏWë;\_[ï««§§Ð‚/6§Ó¬Óét:VË{¶^›.†ØK‘(¨ýáxmÚh=Ñj¸/rU2RëI’jûTF+AdBúŽBj޵¤ü¤>qvê¼`Oèb_¤£§÷üÅÎÖ’üçààÉ2oÙÿVõa‰Šåq‡Po0¢ŽY:r-æh)½ÙîƒbÇN{\q×1–Ö,Èqy¼\FQQQ<³@3¸[ÉMê­þÄ ŸÆ´ÞȉJ*,%<膸¼ÆdÒËÙ*E˜ßhÂuäË$[ŒW§@,WĘŠtN* áÙðëôí‹¢Ô@˜™ê”Ÿé™j@EÁPŠ¢(Š0J¾€E½ö²÷¹lŸÁ#êù¥|s~ ýæ–æ{ ßo½[ú«‚ 2ʌҜõ²%Óö×u?öâþøeÚ£Õö«_ת ]sëÌEî¦íÚÚg.»¾ýbKí÷uó2«þ¾}má÷†OAžÛ¦Yð4h’c"z=.£ÁššÖŒMAËhð@ëñZ³š¸›ƒ»%ß+´ŸTE]|Š r KÉ77r J—67U±®“åËð*ä+ /;,›oLE:'Êê­þr«]Ä}œlë…_·øST]½‘„7™È繘@E‘4_ÀJã7ÐKé­Ö4ßÜ8ï߯û¢õx­ú,sä×&£‚ 2}Ç5«ò¢“nJöÊ8?::í¦@gw׊;Ÿš;ýÆYêyÝ=pøÔ^–b¦el•{¬%+†IÁ†¦ 裫ïDwô†œŠƒÎ—Ñ`=K=Î솃cð·’µº ªýÞÙÙ² KÉgeçòäÓ•kÜêJ®Pò`F€A`LE:'Ê€>eèq2¬wà·/(ª½³€"Àÿ€Šþ¦ŠQ:÷ ·úËmZ­N¥€¢­>«dcÎ+ù‚ ‚Œ?FoÎ:î/*Ù%sèK÷Ôm]½ç>ô½ÙÛß­™}óóµ°ãàÛ4Cúzõ•¡uåç]ÀîˆÎ¼yöغCÞ|œ×ãÊÍΦ²²aË–*.#+;·jˈÝÔ-ÉøA^[©+ÂRòšüˆËNÙøDšüþÂJðÚ„³“IJ)  ˆP‰Î‰²quxL†õŽkVå-[2-î8*ù#jë }ÓÕßÞÕßÞjï }Óú¦+ÔýŽ]öOa•ÿÐ[ý~ŸÏç{¿,é‘ùâKàǽÕ‚ è;ŽÏUäx/ÓÚOÚëÏîúÏW9vºŽž>|î|0bû»#}á«ç|õسo+üÌ3[xËóS.ÀhÉ®à–á—B¹pcq°©!7æñÓœ³]ÈeðÓƒ¾•ôQ]ž³å¡èl /4‘¨Â’ò“£J¹|+äË„kLŽêXå:ÎcùÈçW(j1¡X\Ÿd*Ò™—¯·<†&C|Ç|ûRQñ-2b?áÎÞ0—™²GÄk— •*õ%Dèb&VÔ&ABAÆ"cñ\™ŒÙŸGÈÅHÛа@uôµþê÷kÖ¬|²±å4°„î¡Ù>Š ³,Í­Ý ðhò¸ˆ^ô2åˆdá‰É DÎPŽ— ì¨19ü&‘ô o%wAoõùx ËLò ËÉë­~Ÿ”Ø ÄO”NT¢3˜ ± ÓìÎ^+4 By‚CxžuZX¥‚”BI½Õ`Óé6pEå¾´ƒˆ“£ÚiNÙÊ=L½ÙRñN‹Ç¤1Ù,æÂèTøÂ2‹1¶(AAßQ)ßÒªÌM“HM2®Ì¸êÚ©ï~üGBˆZMÑÝ4aX&BXš¨Õ׊F“Ã!–FÒâu:³L& D§¶«³FÀ€xžµšJ±™!û€w™âå§ ‹|sû"ÈLùZeJÿÝFv%‚ 2|ÇýQNÚíÕ`_·ñÎU²„¡™°š¨:BX`X†%,Ë0¡Ö/á#ÛèóÁ¬Óq1Ì-ÕÖÙ‹#Ž)ÈXœ§EË T”ôÄ4«R>B‰ ‚ csÜNÕìJÉ©9Ö¢Äïœ3ÞÆ0Ɠ¢#O÷ޑ}œÀpÁÓRï«AT¾‡ñøÞØ»óOâåg2ì¶FAËNÆÄîÞÞÚÏ§ßØ633ÒÕÙò®ûèO IËzmZÈ(blÙ ×;*a$Gîâ±''0 Ç}AÐwÇ´ô7ÎËd",=53tºÇ°hÈ~Ò`ݦ Ól̆ŸF† ®w#üër&pïÞû 1‚ È÷5¾9·…iBGØp(Ò37»óé?¸^zÊxY”‘ óƒ •I²ÞqÔÐý¢Ræ®ïµ4‚ Ȥe®wljé §u8†úú»ºº.¬Éý•šýµ§äJ9Í\0j­Öì €×¦-­RUqÄ?M¾ŒŸ¶âŒ—â ‰»ŽØÔÁƒîÀ­óÁiŽIfm"½vmù~Ë,ÒtÐiÖÆºcKD_–TXT>Z†Ëç‹ l•*,m žL¢„b±Öú˜N^ jñZq½ãðb[¿úÅÇØôÄ^|üß=Qh[ÿ£×ÿÍ‚ ‚LØqGwí‰ù‹ûÂt8Ìö\êéhok¹"ãªÓáÙm®eKï”(ä²7–û¹˜Ç^›ÖêÌw˜¬þràMRß|™R*VH#˜Únn  úDú¾»5YgÁÑ  hn<©:™KS?0BÝ@oAY“êžUdWû}š¨VhóÆÔ‘RX\>è4—BT>ètzÁ¤—°•&UØ\h[ œÞçËxmZ³³:6{Ï« è´ÚsÊýލX)c§!7§TˆëG¢šRðÝ(Â5… (Ðý¢òÅÇWÿà»Ý/*qèAdÒ2žÆk޵Hý¤H>qvê¼`Oèb_¤£§÷üÅÎÖ’üçààÉ2oÙÿVõa‰ŒåqGGo0›é•k1GKéÍpóz\q×1–Ö,ÈáÎbóz\EEEñtÎÍàn%7©·ú *5¦õÆÄÁo¢ Kɺ!.¯1™ôr¶Jæ7špù2ÉãÕ)Ëå3¥Fq!(` IöHź߼º«æX-ƒ 2™7ãŽÚ"ºçXý‚¼VUèš[g.r7m¿ÐÖ>sÙõí[jϸ¬š± IDAT¯›—Yõ÷ík ¿7|ªñÜ6Í‚œ€§@“‚Ñëq ÖÔ´Þ`¬h x\FƒßZךÕÔÀÝÜ­'Íi.´ŸTE¿°PdSXJ¾¹1cPº6³¹1¨zH·%vÍk”/므¼Xì¨:¯ÇS×§HãzÇúnI8’¨€R ޼V²ø•¿}ü‡i‡ ©¯Z÷l½JŲ+þFém•’—LˆŠ}³ãÕ§·}­R»`]™µp6Et¾”΂ ȸô•ãüèè´›Ý]+î|jîôg©çu÷tÀáS{Ytˆ™–°Uî±–¬¦š‚ .eljÈÍ6§ ˆ»ŽzCNÅAgŽËh°‚Œ¥gvCŽÁ1ø[IÚ ÝÕ~‡&v©õÈ*,%Ÿ•Ë“OCVv®q«C~zr…â0Ä bÁÆq·õð»ET,€ €"ë{­D~' Eå=ü§‹H}Õ:¯0ÿá¸xåÕVcªãH꫞n¾ï¸üó{ʶؠÌZ8 ü#š?[BgA$ébâuéЗî©3ÚºzÏ}è{³·¿[3ûæ;æk`ÇÁ·i†ôõ2ê+Cêʇ¯Á€Ýý¤ñ:ìP¯‰ú^±½^+7;K˜Èʆ-[ª¸Œ¬ìܪ-[ vsP·x¦:’¥®4 KÉkò .t:e?T5ù ¥<¼¶ÄŽ"¯X…R Å<¦ˆÎœ9“K ã8ŒB P@aÅýÇ`ë*J Ý^leMœûdÜwÿ\1¿óɸC9ëþŸ.nl¾0òù‚ ÈdôŸ«Ü9Éñ^¦µŸ´×ŸÝõŸ¯Þ*H“¼Âròz«ßg%¶ñ¬SàT¢‡t'Ä‚N³;{mÌ€Ÿ9SuÇõŽJî*‹#\OLn5ç/@(@¢2De9÷ÉŽ/XRšF웯¾ ?#ºNqÔòAÉâ;v~K«2C4M"}4ȸ2ãªk§¾ûñ !j5EwÓ„a™ai¢V_7*iL‡XI‹×éÌ2™4ڮΊÐ*&ëåè„* @M!ÀR@d ¨€²”JÅR¬˜;8½&Ÿ¹vj~ú»9TÇñéw½´Yl'Íæ#‚ “Èw´¯Ûxç*aaYÂÐLXÍFÔ ! ,0,Öe˜Pë‡ðñmôù`ÖéN»ÐRm•Ü­ƒñG d€b)U!@±"ÎVÊ>9§PÁ # ¼òÌË_þð¥Í÷$û—# ‚L.ßNÕìMÿF8Ó:Ʋq¤°Ftn]Ž8ŽL|Všb)¢  PÀP0ehK¥?sí„{Ë®ç{“õUë¼ c£•ç÷”mqÞôó7RGG:A™ ¾ã_<¾nÒFõÍø÷îÁg†ÁõŽÃEQ,B¨)@KdEQ,!iÖ;&â8ª ¾x7›sŸìp/~ð©%†„ÔpžQ©>«x7—ÃÏÿHçKéŒ ‚Œ'ßqoíçÓol›™éêly×}ô'‹¤eSN ŒA•&f_pôqx!„°D¥J¬kTaE•ŠeÒ¹ž’ó×uÃ=¿þPL>/]ÙË• ‚$1zZúÕ™ ÃÒS3C_ôøëôðJÆALCÐi6;ƒ¼t󠫌ړž˜ÍS²1¾ãH0HÍñ÷ñ¶Žµì>vn÷±V÷ñv÷‰Ö=ǾÞã?ÇRh"AÉÉXÿpÖøæÜ¦ aáHÏÜìΧÿàzé)ãåq]áv²@3ÞÖ;Žg×1fs€?GG‚g^݉F@AÆ™ïØÔÒAO;êp„ ÷õw]ºtaÍ]¿ª¿òÄþÚSË–Þ)YÊiÞ°å$°ìBKµÃ¤ñÚ´¥U*U•®Še‹^ñöñ.ËýV=xmZO¶¥a WjaYµx¸êàAw g½&9ÍŸÆ :Í…[Nª VsJNs¡=k©v˜4â Mæ{ß§>=œ¤§‚&$edú(Y§×¦ÝP¥€…eïÇÅæM–6 O¦hk¬„b±Öú,,+˱7ÆÍ·¹°f\ï8¼ÈŸU ‚ ï8Fqמ˜¿¸/L‡ÃlÏ¥žŽö¶–+2®š1žÝæ’ö]öÆr¿/æ/Yù“Õ_¼…zw'_¦”ŠÒ–÷57Œ½0÷‹*²«ý>M̳y“ZðÚtªŠÊý½¼0OÿTÒ5JkN|Ði.…¨|Ðéô‚I/a^Mª°¹Ð¶@ÔsŽËxmZ³3îaò» A§Õž“0S) eó$pôñ²óÞ hAô‡å'[>qvê¼`O¨—%ýý¡î‹m%ùÏÀÁ“dÞâ}«zÅÚÂï‰Uc,{-zƒ±ÔÓ  I¯W®Å-¥7[*¬ƒ&ÁÈ™×ã2¬Ât¬±ä³UÖµ¯U¯{t¥ –j_¬Ražþ©È6‘^F´RòÁƒn°Øâ'ëÄ­!jÞaQÅ’d’ÌïrªX®«$mã;Ž^ÿÍ24‚ úŽÃòÃ-ö«_ת ]sëÌEî¦íÚÚg.»¾ýbKí÷uó2«þ¾]Âw9 ‡L/È p.Q’_•Æu„è”ôIUtû E±3׆ ª\ËûIÞ¨¤°,JJIʈöQJ¾¹1cÐ(´^sc PõnKìZL±ä ù È‹Ac:×GAdâúŽ q~ttÚMÎî®w>5wú³Ôóº{:àð©½,:ÄLËØ*÷XKV Sƒ MAÐG—265äf›SÒºŽ^[¡» ÚïÐÄ.µžØ-ãVŸÁ£-4C|–VFX%¥ddDû(%Ÿ•Ë“OCVv®q«C>vOr…âF0¤qp½#‚ ‚Œc4FÏ¡/ÝSg´uõžûÐ÷fo·föÍwÌ×ÀŽƒoÓ éëeÔW†Ô•_ƒ»#ºÃë°CA¾&êHÅBäx=®Üì,aZÒË+u%eè­þò{a<¬°"x¥$Cù$×,ÚG)yM~ÄåƒN§l¨ M~AC)O¯»à+–T¡”B±€b›s£ø' ‚ #ÊXw|®rçü%Ç{™p?é®ÿª±ÎÿɼðÏ·/=zúð¹óÁ«g]!4¹zÎW=ûöëÏ?ª J½ÙRñNÛÉ›r FKv…N·Ø¢r¿`­c°©!·À¬¤“¼Ãr.6o»°ÌbŒM¶òÝG›¶Pë¶T;Lé„ÅÕVPJFF´’ò“£Ü¦Õébû¬eí«19ªf®r(Ú곊ÉÄ+5²X»Q}$l×;"‚ ȨAutts¹ñ›E$NGͱåkWvÓß~Oe¹#!¶·+ÜÙºìíøºwÍÊ'ýrÿ™*ņY–f›ýêú½Ç‡l„´Ç¥f+ظ g~ÆÏ±1ãóx› Ól…MŽüCÉ6·ÚÜËŸ¤NYï¸ùõ÷ÚúsŠ–WírJ½É‚ ‚ıÚ+m–îwmc7T»œ6K‰p=ØXwìü–Ve†hšDúhqeÆU×N}÷ã?BÔjŠî¦ Ã2ÂÒD­¾nT4Ò˜±´Ìº=dðn®Ó™ÅíÀö:ìPP%°¹° ®wDAÑa,úŽöuï\å! !,Kš «Ùˆš¡#„a€†eX² jýâÐåõrl…v°Tkð=Nôù`Ö鏿–j«FÄæ¦õÂb¸ÛAA&©ï§jv¦³2ØsõV¿œâˆëAdRûŽM-ô´s GØP_WW×…5¹ÿQ¸R³¿ö”\)§Y§Óét:­–$ôÚ´¥Uªª :Vkû4ù2~ü‰3^Jôì—¨ëˆ Oó‡ƒN³6Ö´ØxaÐiÖÆ”Nh²hÑ“O¦ê©  5 ú(Y§×Íç‹ Ì›*,m@žL¢„b±Öú˜N¾yã6O©GAdÔÈËʹkOÌ_ܦÃa¶çROG{[ËW͘Ïns-[z§D!—½±ÜïÓGÝ«3ßa²úËûîäË”R±BA<íæÆ€Ñ ¦ã>PEvµß§‰º?…6oR ^›nCUQ¹ß¡—æéŸª@º&@iÍÉ}—:Í¥•:^0é%Ì«I6ÚGcù2^›Ö쌟îÍï2V{NÂL¥`4€”Í`|GAF{ܱæX‹ÔOŠäág§Î ö„.öE:zzÏ_ìl-Éžü ó–ýoU–hÁX÷Zôc ±Y‘^¹s´”Þl÷A±c§=®¸ëÂOdzú㟀ƴÞèòðxÖ–6”½ï‹©&#ÌÓ?Ù&ÒˈöQJ>xÐ qyɤ—3oа¨bI2ÉFæw9U,WÔþbàè#‚ ‚Œ£=î¨ü<Ã=Çê䵪B×Ü:s‘»iû…¶ö™Ë®o¿ØR{Æ}ݼ̪¿o_[ø½áÓ+6 š9O3€&9&¢×ã2¬Â4Ï;rš í'UQwœ…¢Ø€™kÃU®åý¤œ%…eQRJRF´Rò̓ҠçÍ@UìPl Å’+ä+ /;_[Üæ€ñAdûŽ q~ttÚMÎî®w>5wú³Ôóº{:àð©½,:ÄLËØ*÷XKV Sƒ MAÐG—2Š3˜ÖuôÚ ÝÕ~ïœëØ-ãVŸÁ£-4C|–VFX%¥ddDû(%Ÿ•Ë“OCVv®q«C~ÏPr…’g9 Ä i\G3$Œïˆ ‚ £†jì«èþäô¿„OÝ7=¸²ÿÓí;ëñ™!)à‰2‚ ‚¾c‚)_|v-ÕLÿlªSH;—}VQ@q?«à,—¹(Ëд8 «(Xµm$;š¢äÐužD`|GAAß`ûû‡¿;嫌‡ÿ#ã'¿ÎXûÿÞ;µáÙ—wÈzx à‘& R %œûµˆ}h®ãn€2€¿ÆœÑQ`È:O2pôAA&»ïøEðÂ-ÿçâ…–xN×·­··¾ç;Ù,Q¢vo„âù±ËùPù_ÜÞ¾Øx$÷Õ³Ärd†_)G6À#¯ìKdî³$jÛ'›)ÞÊ> ,°mPP?ʰ™§Xò¸c¼¸eŸXqþ ë¤#>âˆëAdRûŽïõëÔg/u]ˆç\ºtÑ8í¶ý÷»%²aåfØ&åC-Gðl„«¶­ðD3ù+Ï3ã³6¯„•óaå#°yW"Ópšbî²HgÊ´²žB€üˆ`#"2ÜÈ/^ãÅ xî‚’m“ó%ÆGA5F{Ÿuͱ©[)GÎ|r¬éû}^2µƒ„»â™$Üýý¦Þ×ßußÿ“‚E‚:æCM¬ZÜ1"++¡¦X¤¥³Û२Ypþ P¹<š_ü4P»À¾\à:î‚OÃ|(†ì³CTd74p£œö¸Ã'Ì”ie£Hsu“Š?Y %»¡¸8µøòÕ`Ø5ißcŒïˆ ‚ ÐwÐa†G÷}ò‹Ì&èë‡~Þ©‰ýýýp»º÷í?oýIÁŸÄÊ͇Mn[«@à>îƒ ±±½FؽP|'D¤Ê]›auÌ5\½víƒåË–ñ+ë!°$2•µ"I#ì¾ óð·Àî]øâ ÁøŽ‚ 2 ŒÑ9ëí;ëï½­ÐÛý¼9ëým?{±ŸýAøc[åž4µ? »’³Îª— )>F˜ +7&&²Eç‹al0Ä–6ó¦­c“àM•`°Hg*iE†lXy"±–ñì?`e¾¸|p½#‚ ‚LvßñÜí7³ÿ =­¤§åjúüïWL{‡ã­÷¬¸úN¸ë¥¹œØ™7xë ØëøNOûÇßúóçÉù-ß4ÜgwOïùõ“ñæ„õpÃ`sL_~ôçÏæ–ëoþ³•?R¸™›Úÿ×áø8Y¼†úñkOÄ\4±jÏ®=3÷Á¹±–%µjصmî/?àœEŠÊ+ú¥÷™]þ{~ž¿ K·ý lÞÂËL2àý?]ìô^˜ 9yoî¨;¿¬_øýâ—EDmË%ý§¯›ël^øFiø“†“GÅëIR-úŽŸ­/Þ=ÄáO}DAQ`Ä×;ºkO̾±/L÷…è®K=ím-Wd\5c:¼òg—xë—Ü•í>ùÀ…¯Ïäݳ²ùë€Ï¼G²ï½ýz€ó{ÊÞ„çm¯WÛ^¯.[z`‹Ãomç×?åò®Ùö—[`Þœl÷Þh:‰´õüîO–¥°íÀg±ìÏ\;!ªƒ°†ƒ:nµ¥Dµ-ß4,üN¼¨¸V„ÔŸ<ÀøŽ~ñ/W3!õ'Üv×wçÎúî½Y±Ì.|üΑì¬YüâÍäÒgÞx)›\øxóNM4ÿ¾¯·I÷ÜEë!¤¾êå/ðÛ\þÂúòнñ|»rí¶¿ûÓ“ƒsq½#‚ ‚Œƒw”‰Œ“Wåð‰³Sç{B½,éïu_ìl+Éžü óï[Õ+Ö~/¥Šºáû+|8WFùäž^¯™ Ͳ•‹×CQyEo<_µîGV• Û€†®wDA1ê;*ÇùÑÑi7:»»VÜùÔÜé7ÎRÏëîé€Ã§ö²è3-;`«Üc-Y!pªòÞûìÉ]°Ô8›ºáö¥p`—÷Ƚú‡£¾Ñ¼9Ùk­Â½Ãðe{lc ´[³³îh_8K®žTeö~lœï¹÷§SO`Þœl^‹‰LÑjçÍÉvóF ŵšÍõ/öY´ï„ÔŸ<õ‡Lœ¥Ã‚pD3•ϼGÄìÀwa¿o}¾j]ù™7Jsä”O¶-ÀB¹VÅëèN£ævÍ?Í5:<àè#‚ ‚Œ#¸ÞñЗî©3ÚºzÏ}è{³·¿[3ûæ;æk`ÇÁ·i†ôõ2ê+CêÊEËæäÔÚ=wî\˜5÷¦úC»çiã¾ÎíK¿|3±6μëxfç®h~îm°t ·÷åo¼Šñ倲õ¤*Ó\û׿מ‰ëÀÓâ-žß³ã !RÕRÔ ·/½íH}|¾[\+ÈY]ÜúòÆCßD8V½ü%7áãwŽÜ]A]Óy¯ø:N> õKä§°)*oá½î“Ÿ¬òÀ·msÂGŒ.N€dzGdŸ!õ{sø‘ÄõŽ‚ 2jŒÔ¸ãs•;ç/9ÞË„ûIwýWuþOžxà…¾}éÑÓ‡Ï^=ë €¡ÉÕs¾zìÙ·_þÑÔòßÑç±Ý2ÂOÀì[Êö”Y{ž»Ì{jGl8°à‡ÿô—ÏÞóüïVÜÀ9FE%ÁW×ýèkI1±PºžeŒ?ÜQ¼ŠË¾“zgöŠ-?óëc±}ÖÒÕoÙßm%£5çÁÇÙüëØ„¾¯I,IDAToÞ/¹`=I+!æeî­¬;ß?I=nçÍ}oÌMû¼rò ÞÜQ}ïw ¥”Oîiñbhæ|Äï—¿útt:ž/m„¼¢¼W™¿ÜqEäÝkzçåâ½ÏGAdÔ :::„¹ÜÙn6KÉ ëÝô·ßSYîHˆíí w¶….{;¾î]³òÉÆ–ÓG¿ÜEf†JE±a–¥Ùf¿º~ïq®Ô„?Ÿúüž²-µ÷ŽN$ÅxÉ'D‚;±æ¡FóV‚ÌÊZ«½’{9ù ùë7¿þ^[NñÏòª]Î!¾É‚ 2à>[¹ßµÝPírÚ,%½#5îØù-­Ê Ñ4‰ôÑ ãÊŒ«®úîÇ$„¨ÕÝM†e"„¥‰Z}Ýäy0³WlùÝŠÑúZÀÛ‹3ÀÑGAFÊw´¯Ûxç*aaYÂÐLXÍFÔ ! ,0,Öe˜Pë‡ð1 C!>∎#‚ ‚ŒWßNÕìh‘B.ó ü?;Úàˆ#‚ ‚Œ*42àâ;¢A}GQ7úˆv@Aÿ¿½; ó¾8þ¿«Ã\Zö6Heî‹° íí¤BV0Ú™qh0ä ¿(ž¬žñOy9¬¨Ð²ÀÐÌVÜ Qõ0º(NÓda‘ßí…Áƒ¬¬o’m¨SËÏíÅ)òY:ßóÿËÑÝÉù|8ÌE:=º{,ð7¿ûÝI;B+Þß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2qí ì;€v„¦ !Ÿ}GÐŽËÄ´#$°ïÚ˜>€v„|ö@;B,GÐŽÀ¾#hGH`úÚòÙwí±L@;BûŽ !é#hGÈgß´#Ä2q€¶9Òâs¯\~-þ@¿ºÿ=gs—çÞvÚ£¾ïøÙgŸ9бv¼xþlüþöŸÞý«?—¼ñÖí—JÃÎCŒï÷›ñ¯tyÒ”±þqO[@ÇÚ±þïqÒáþ°ç÷Ó]Uä$äzõõ7.ž?ùö7w&ŽÂ:ÜŽ©¾õ{ßpNi3Gèêv,•JÕjµy;=ÒÁ3qùƒÙó?hüÓ_ðáÕâÇl/ûŽÐ¥íX*•Z|öÛGŸëìã©ßÆ?ùšä£é#t];¶ÇÂoîouÕÃë¶ûÃAä£}GèÆvÌ ÇÂç]ÖjŸkǯA>š8@7¶cT«}Ñeíø…vüZ°ï]׎Õj5wôø»­¬«^·Ýö!råÑôº«còñA—µÚíø5GûŽÐ¥í˜›vY;>ÔŽÏx8Gèævlý/ºç¬is8ÖÙw€îmÇ:;çýË?Úõ§¹ãׇé#Âvìôœïÿù¿]ò̳ï]ÑŽõANäž?Þ«ÞvBw÷œˆ8¯\~mß_kâoÇúÙÅóg#ºŸ}Gèp;ÆO¡#výé#t²C/•† Ô{Õå¿û›îã ÿåßþcçº}GèŠv !|ÿ»ßtŽ8 }üÛÂsß(>åqL [ÚÚÓ·c°ïíRt èp;)ìã²÷8Io ì¹#nǧž;Úw€¶1w¤óí¸KãL [Ú±VÛ\|y¨T*ͬÕ}pm¦T* ½¼x/ûhfh¨T* ͬ5~ÕÚÌP©TšY«Õjµµ™¡¡úu§›&íx¤¸Ë®ƒÔ÷Lèp; ½#W.•³lù¹ÅÍZ¡¶¹xîÂr–•/]é-|¹v¶¼Pÿlý ËN,±leû¸ì=Žé#t¾C…ÂàÄ¥ábqcnzi³¶¹4=·Q,_š, Ç,+ß™›[X<=0––CßøØ ss†D¶ãÎõ¡—þ¤Å-Wßû¯¦÷þŽÐ6±ž‘Ñr–ÕKqt¤g×gŒ‡õ¹ë·n]Ÿ[ã#ÇœYbÛq«¶s¹ñÎOºÙw>h¼å®ÏÚw€îjÇ[³*Åb¹\.+foíùüÀéñþbejªRì?=à¼ߎ?ýVõ—{oóVõ—-ž³®³ïÝÒŽµµ™©J1+OONNN—³beªñe×uõÁdÓ©$ķデÙÒ_4Þ`éÆ/ì;À¡iÇZmm¶þÂê‰ÂÀDýe׳»Þs§Pœ\]]]l| äÚzXÛ{ùéÏß­ö§?·é `âms$/7—Î]¨‹ÃÓÛ/¬®¿ìº2U¹pîØ¿ÿøbµX™:Y©_ϲò¥·'$&_¶cÖôãÿùæ;->»‹ßg ]ÑŽ…Bï©««§v}pp²Z¬_Ÿ\]lòUƒ lzØnÇì«yÓx¯¶€Î·#´‡q“Åü>khoâM‡meµ}\`ßÚÆÜ‘N·ãïà9kûŽÐæŽtº³l—½Ç1}€60w¤Ã>õÜѾ#tK;~ôño#TÓ!b¯°€®hÇ÷ªËN­Zyóébß:ÜŽ¦8.¦Ð^+áç÷Y€v„X^a ÚÔ÷ÐŽÅôÚ êý#ÿI¶mFGxGè®v !üýδ¾ÁÿõZÛît­¶6û§–Ãð¥·'­냅¡þËh|\©åY='1¼Âº®¿u4ù7ÐÔj›KçÎÌol?-žeåîO™§©·nþ^Oúî•âößNyzerðW¦÷w€îjÇo}.õзfÏÌ­÷_»rª·P«m.»ît·V( N®®N¶÷{m'ì…Ùã‡|Hiú]ÔŽ¿¹¿•tÜZmíýå Çzê¥Ò{êêcQT[›99U©_/O¯L Üjƒí )7_ߨ°oláê©Þ¤»ÑøåYߨµ+#½…®ßÎþsõ”þ±R,Ceêd¥qPÚônìÝíÒ8ÉÛ{7zÂöãmü^{ŸkÞu–êlú šÿ-l.½ü×së;tsñÜvÏ?ú’O–*ÅbÈñ±}Gh›Ø×Y~«õ¥ùÑ‹•©“'‡†fÖjµ]Iwrª’•§«ÕjµZ=þþìÎ úƪÕêêêäN8Ö?²0Ö·1?úòâfJ¿n~øñ‰…••jµº2].nÌŸ™½Õâö…ÂàÄÛ—ÊY–eåé••ú}Øiµw£<½²²0Ö—e×—–6kµ'Ý'}¯Ü³”ô  ½#£Ã¡X¬,,}BøäÛÅbÿ‰w±¶63:¿‘e}ã×ñÐÑ+¬ ûÚñ‹­Ö—&vi¸± K¥R=¹jµÍo®gYßøéú '·Ë)ËÊ£#=Êïæz–õx±'„Ðó≾,[¿ùáæãÚ²{OýéíN8^β°üþZô—GÞ,+¡çØ _ëwï=ÅÝxÒYJ=ÚÀéñ/ïðc¤þ-––C×®œê=Ü/©ñþŽÐ±ÏYÿn+ùIÍÂàdµ:žx]Ÿ»¾621îÝ];Og?Ùã7ë9öBëëwï…Й}›‹çÎÌmì<§¼Ïgf;u7šŸ¥ä£õ¼x¢nccþúR¸³BÿN:n‹,”< ?Êö  b玶²Ö—Ö¹²2]Îvnócý!„;w?iý=¿Ù'wï„ú}'²Øjk³gæÖCÿØÂJµZ}ü$éÔÝhr–öq´Býyë*óóÅbxáØÎÖõ—Ë4}ºüpñû¬ ûÚñaÖú²·™f×ëÉ5|¼þ¬ë‹'ú‹Å¹ëÛ‹z›‹‹{ŸuݹÙÍ›ïê%Ù~EH³,{üS¡w#§ùrÏRìÑNõmÿ 7Ìkµµ™¡¡½Û¨‡Ž}Gh›|Î:„å©“•ÿÈúǯMl‡Kï©«+ÇfNNM•*!„Ð7¶p¥pïƒ=_ß{êêôÝ¡©ùÑÒüöÍâ_g]( N\¿sfn~ôäüž,™¿ÙüSƒ§Çû+ó½ÎúÀîÆîï5°çáï:KW‹½ƒO8Zn†Îoll¯c>‹¼¿#´GáÓO?ÝûÑ]{c¯¾þÆŸ ÿEëÝXþ™g »Öö»ó _Z|fÔÞXÜù¹}õõ7~uÿ{?úΌø“zYL@kÏŸ}åòkÏŸýïÿýuáÍÅŸ\<vï\&vîxcùgÎéa ÇÚæÒôÜF±8üŒN[¿¿c}$yñüY? ðô¢ÚÑ@ñ0‡ãö˜öß:ØBî+¬_¹üšŸh_;rxµó÷vГö @;BM§·?;>ûµ“_•¢SÀ3Ãr4sGžMϽýæâmç¾ZÍߣǯæPxÒ:ú€ú§¶y;À^öÐŽhG:åÿí¥K˜ÏVãIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/aggregate_graph.png0000644000175000017500000013516712032647206024201 0ustar ebourgebourg‰PNG  IHDR}ÉÄÝ9bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ -’pN IDATxÚì½tÙuçyQ¡O:Ç99«“ÌxHQ´–t 3ŠÎF`±írSΈ¿"sÙŠDØÑ2;RI<„?2dd†4±™îL˜2[!Š\ØiÏV¦a¥QašÃ_²#ZpšÌ&r‡!½ä¡Aˆræ[3þ1VZTÕþQøQª $Qà÷søGñáÕ«z÷Ýwß­ûªÞ³¼ôÒKuuuÀž±´´TRWW×ßßY€=…üN¿ø~'€ß üN`RJ2æ¤åÑÆi†Å–¡ùžZ‹å‹ly¤ap:ᯋ'·ÆÚÊö@,²äÔ ± 0ï–¦†ˆfzI0qU%iy¤¡¡¡adY’r,ay¤©©Iét³ê¹Ü8šs™‡„ÌñNa)wOKBomíá””´íïä8¥å‘Æ(@2Ä;%iy)@¢xÂávœE ,¥ö$iÛßÕÐÔÔÔÔÔÔÐåß–¶ý]IaE Êd49v¢üoô¬‘å쮨<7v!ùm†™lnÖÌœ|¡$ÿûöÄ*È-î…›v嬺¥¶wa¡·Öb1Z—x¢"ÿòHü×.ÿ¶¤êõ&Jèòo#¼ €"ó;£“ì­|Ë­V™j—¤åÑÆËžÕh9̪‡oæãÿÉ ¾ÓÝÌ{V&îfu_žˆÿËLÆ=BCWTžËLtßÑrÔt.”âé†×IOt\b3Ê4µ.™îgi´1>wÏ0«¾yd9ùn…Qe̪çò¨Ý@QùÂR€ˆZëX‹¥¬o%¢@²ã)ŒF?9rÏÎÎÍÍÍÍ͹[Ĭ2È®˜Ç³*ç‘c‡rpñ„Ã;777ën!¢x¨ÕHTÝá›››õ:Nˆ"­„·-µ=óC-¢¨¼ Å¢˜ªJæQx…ˆª*J3 4­.ª÷óH‘?hM©KÀ›pLfzppZ<ሖ w“æô;c“ì-urŒ­kE xãÁ‰(à­Ä×lÏP‹(ÌG<á¸ûj;~]¾­4q]Z?6T ÅRÛŸ /­¨2PÁô Dõ[%e]2ÞOÊ*쥎Ç”ˆ’&÷£7 `2ô¾+z|Ç;Í0 M6OÇÜT†¡Õ{ÁÇv{ˆ ŠbËPÚRD “t]åB ˜´Ôq¡ŽVT³:½$ôèX¥Z—,î§´¢Šh%¥Àš €¢õ;%i;xoE5 ºr/¸Ý¦t­Öé¶Lç*3¨:p':nÙË,Éw•¹@ÙÉkqÏöÖZbK`f}¡,–²Š*¢U xï\b³[­3»ûy^'¢êŠ£ÐMÚóìƒ÷VHùåÜÜÜ쬻Eiå^ð±ìÕÖµìNÜb~aô³ñ˜»–!ƒ†“—z–ÎO)Æ?À:n±ÅGSœàŒJGžgV=—»U?9×pß3ÜÃLŒ*ê"TUQ†…âP\”踫 C-uÊrdGmz:1ÕÎ^ê8˜XlŠÍT‹­­­@@é®éfÐtòRΊ½™©@yB|ÕÃ7{ˆÄ'ªEq•™h¤ÏÌýJü§ Ò4¶e²”ÙdžÂ̓Óò'ç…ç¨;¯s?/E P\ä}¡0±€¢C3î¼·BD­u©[×JòT»$E½±['b_ºˆ-îùžºTwM7ƒ*–2ûØüê4úZ,emƒÑ_ÅŽ[ccƒÕé?¹Ê¥k{U?Ÿ¯î¸¤µ¥ÎýÄÝ\÷¬×q"Väo’ŠKÎçKÒön7 &Þ”_g[Ü ½µF2äýŠfÛ¯àðpýúõ’]ò(¼²2­œw&&y}õŒò~EPp0»<ß[=ž"Š-Có‰`dÆ y¿"(@v;Ï@F®_¿Î@ `€ß àwøÀï……æú333Èööö'Ožõ;å 5>ŸO5=Ã~EéŽê>óúo¡ņ̃>ù ­ŸJ ÿî]}¯   Ÿ'Ož9rDëW|WòƒþL5üN°ÀïàwJÒòHCÃȲ”œ2²,ItÃA—Í4¥¨ƒ.›aËC-Ì+ F }W­›ï©µXüv#>Ï$óΚçÚËÚ‰\¬99Ã÷ÍŸ¶Ž‡*€CŠ¡yv†™è¾³ã”C¡M1䘨œØÐ0²¼<"§wù·¥mWCCCC—[Š»íïjhjjjhY–¤ÄY¨‘û3Ö1aÌ:ì &ùt6–eyŸOÿKO ºl®`ÄÇÛl±Xc4OrèQ­´ˆ…*y_„(è²uN2“i—ÓŠb½ÃÔ7¥æ¥¦ÝUêµby‚®h 4–JÉ÷–’ `F¿³ÕínaV=—GeªÅRÛ»°0777ëuœÅÀÀhÜkd˜é¥:9}ÕÃ7ºiðVG5­L¸£Î«0zyb¥ÚávTS` ¹X=‚Þak=G\½Ý¿Œ;nNr…ApÑŒŸô‰üNr…B¡“#ŠøœŽ ¡qꌹ‹j'Êi!A„»WiØ$ο(^Å;U‹RÞ÷¢ÿÔ¹3ZZå]¥_+–g±^ABŽó‰KDÏMÎ `V¿“ˆíñ:N0ÓƒÊ=”VT%'ˆbËP+§‹bËÐX[©œg%üˆH’–—DTUÁVTÑzø1±½ ½ºSùŸg­çˆˆãûÖ|y ÅEVT“¸Ò2”Å·JŸÇϼ3ÉN&WqÍw…;žkÅUž²y|ññý$(è²-f_Wo÷lFˆ+ßýµÌJëwZ,µ=·:ªWVV¢ Â+DTUQšÝ%-–2îl5ÃL{ï<–S2Wô[Ç…dÆ­Ã_ *æÈ}ÂÏKOL¡ü̹µ´qÕ·6žŠN£G6×™×6#:E%—ËŸ›9odÍ#­kùß0ýöz|€bö;‰ÈRfjM¸¡C­ 3=Ðè]¯&†™h5¸®g™ý¦»E\õðñOÚõóÇßìLvæúÖ<¾rç8uÚX–uÒ¹ø«œœZbªãÙî­_´¥¬¦©v"ç·Þ¸À²,ksÒ9»ìrÎqëpÌ•T-*õb¡úÅÄúÝްʵÙǧ*=6˲6Oå”n'̇¥¿¿¿¿¿?ý‡™™™ööö'Ožìý½þÆ[®¾W eøxïñÔénÕÄœK;²\+à€pÞÕ÷ŠÏçKw#¯_¿^bòÚ)¾Â/Ž‡Úµs. ä³ûœ3rJ̹´B¨#b€ß¹÷õÉO9rÄè+ž~gÎø·M`÷0€ß àw¿%‡°ÎGŽAÃì3ˆwø X04Ï.IË£ÓÑËOtܳ—Y ;`œÌñNiÛßÝ8 V÷ììÜÜÜüü ¹G—%© ª!IË# #…vcÀ¨ß)ÜžXe˜Ö¡žZ‹…ˆ,–2ûÍ^ù˜ˆ–GššššššF–S]Àåù§.ÿ¶´íïjhhhèòoKó‘$mû»šššâeüD¿¿«©©IÎÇ2Ìô@cÔ'–K‹Þ[ÃÈÛâÛpL ×奉bK«òë¶¿kpšiqÏκ[˜éÁ.ÿv¢\fz`©nÖë8!Š«¾ÑMƒ·:ªieÂ}g;æùeÌ#Œ^žX©v¸Õ”…ߣÁY¯£šV&n KmÏüP‹(ŠbËÐ|O­Å"IË£—'Vb1Ú……„£ ÑïÔuI·ƒ÷V¢.)[×"Š+÷‚qŸR[†zX*­¨’ÇÚJK+ªˆh%ü(V‚~Ùå%ªª`+ªˆh=¬,œo+•O¤À’V“a¦º£.¬ÅRÛ»°À|~'Ñ£ðJr‚§ÌÛý1ÓƒÍƒÓ “UáKmÏ­Ž¢È¬zøææ‘eÌ­¶ßi±ÔÖµÃL/ é?­¨NN¨®8šÏ{;ZQM¢Ø’Û\¹¥Ì~saÁÝ"Q``¯u´ßID쥎¢èŽî³<2²,IKw¶:ê’ KÓ S}–+Ëß,v¼|ïÇT¢õpr^¶g¨E©º¢ ¼(™×ï´”ÙÇæ+F<|³‡ˆˆZܳ½ •ÙoºÃ ƒƒÍÓDb‹û¦½,¿7-ßÃ7yHþfˆÕvRÛ;î]žððÍbËgæ^úZÓ§£ ŽRuÇ`[™E@c –þþþþþþôfffÚÛÛŸì­ßÙÞÞé€=÷;‹ò‹"pPàýN¿Àï~'€ß àw¿Àï _~§$mû»ºüÛIÒòHCCÃÈrô×mW—[’’OYihhhYNN?öÿf¤å‘¦¦¦¦¦¦††‘·Å·ãWÏíNT%¯W“‚‘ei/¤¤¬ÎÞÉ0¿B€)ýN‹¥¬¢Šf5üˆˆˆ‡×‰(°õ…Wª*Ê,–äSj{zk-Sû 9ܼ$-D±Å=;»°Ðû"ób\9Þ´š„ãÈšu·ˆb``4ïBN©NîµØg¡ÀŒ~'±u­DXˆèqðÞ*Ã0Ìô’@D$,ZëØ„¶<¢ŒW½-¾=Ú80Í0 3=ÐõŠäªVü,¥¨eIRÍ/a•q8¥¨ê/JÒ²Êͤ•£ŸŸˆ–GbùcA_ÕS››SBwi™õäG–p–n\jÉ)ÁÑxd4žÞØí]WuµªkU(Qþ©Ë¿›Çç{*4˜Õ藍'D‘ÖÃÛ’ô(¼ÒÒÒ"»¡’´^¯®8+—™XªS†©,–Úžù¡QÅ–¡ù9]½<±Ríp;ª)00*¨ß¢¢¨ôü’´‰/J5iܭ鮸5ÖV¶»ÙXãåHÒvðÞŠ(ÊŽ`]‹Ü n·årå@ÃëÕ—to~°yšˆÄÖ¡…ÞÚÌ%—VT­Äª^'QËå6ËoLÂ+†‚‘¥mƒŽâʄۿ-i”¬Ú”%&WG[b†j±{äOh0»ßYÊ­VD³ä LÑZ,emƒÕ´âá›åoËì7Ý-⪇7øUrzþøWØÍ̓ªîŒ¾aÉ^Š^È[Ñ¡ÕK¹ù»éôr2Þüô`sóà´Øâ¾iÏyŽ2ËAX Ä>Ê,d¾•aVåOvÒK¶Xj{†Zfz Ñ»^Mñ/ôÙK'Dqz°y©n(·8h’¡ °ô÷÷÷÷÷kýüö·~„æ 呆¥ºùÜ^]Ø7´¼ÇëׯcŸL²F€) ‹¥Ì~ó&äSƒx'€ß àw¿‡ú»¢×ßx €YøÔ'?¾?¢À°ì‘µ9ìß³»ú^–PøþÐæ>ú`àC|F Í£ðJU]™BDñ‘BöŸ×e‡Ãb©í àmoû»/O¬TwÜk+¥Çwº/Çol¯/ý“/¼'‡³ Ä×̹"²Ó)KÜ^f‘¤í;Ý£ËcæLånXˆHzô%ÇÇÿàºxciàC‹$Eþüß¹—þ8kÛ"IÁáG¤‹7d»$|û*‰Ò32‡¶«X±$-4444Œ,§y’´íïjhjjŠÿÏì÷w55554tù·éM1F–“2//Èé]þmiÛßÕÐ?Qõ*»òïÏй3åtÙ:'™ÉN›+uì\Á ‹eY–e]A9Å;NÍ`ã}õbc9#>Þf³E øx˲±£åE‹RÞ)®rê­¦Ÿ›ZÅÔË)ò? ˆO¾û´L76´ô_EEº¤}¬4k»7Dù÷;fz°¹9ãÜɪ*ØŠ*"ZÇ=E±…o+¥ÒŠ*¢TK$'¦Ì2ô°rº(¶ µ•ÊyVÂt¯²+·S…S}SNŽˆÊ[~³Ê;Nd°ÇÝ<®Þî_ jkO¼ç¹?C•ÇRÎ:VyJy~VèŸ\ôÛë9Ýüß·æ‰F8#>ÏZù{p¸ââs"†™ú݆º_úéµÙ¿¾q±4ž.Š/ÿÇžZ9<ù`áQ|ùC6ñ™íL³(þãÂRxçùÏ”€ˆäã¿ñ®1 ÃLÝÿ›hþãåÿ*^¾³ãϱp»;îˆè¥¶cljhý[ἆ<ÏŠï­D=3¶®EWî·%I’¶Ãë$Š'*ŽªXiz^¯®8šóŒ3=Ð}'ÅtG‡ ‡UuÈ(åΞÅÀ’@DÂt–+Íáfô†'µKȰ7å‡ÿ¼£ÿg|À‹)£¤v󩞥*vC~g–©í]p·ˆ ³êá›3Æå*Äã£)šã¾j¥R³==¿†…Hzž–®eLâ6çW/ü«gï;vœˆ_ùz,]YTüßwwÂßZ'Q¬>Z*FO‰e{®}¬0ky0Dù÷;E±ÅøÃL6N3Œì&êiÛ¶¿«¡¡YΜ½Ù2x•ÜÝN²/W=Þe±[Þ¸ Otwû£‰åíÞqêTÎã'ÛsÓó—Ÿ9G3÷#™î€bõ;%‘H[÷Ë_ñüæ7_kþè~ý¹rþ=fë·6WâÿJ"­ll=Ÿ>Ó(Š´²±õüëKŸû·¿ßõQœù“?‹<ßÚ\9ÿ¡ÓâŽøâoüÉo}@™Õ?z%¹p†ùËךûf&ZÔ̳˳¢ ¢F5i¶4Õí Þ##‘¿4ßÔb©í¹ÕqB™UßÜ,¿aeÔEN2J¹³Õ²±^W¿Õݲ‹K¼»#êÿí~ÀÕn¾¼‰=·ŠÔö.ÌÎz'DŽ]ZTRTÆ}ÕJéÔÔÈé{aXTýNMc’tŠÖqÊ¿rQU¥ÿÒàé*EíÒåßï4ÌÑŠj£}F’¶ï¸'V¨Úáu·ˆâ]eWþáy³t¬ò”]žæNž眩óøÆÑ9÷Xå©Ìùcsí˜cÅÀÎs)Ë?нß)ýôË¿V/гÎáåQ™¾ó\Úy~ôèãÿ’HD<þ/žKÏÅk?F øÚèWg?Øxú´ý#úÇù¿¹óÕÙ}ô”H;Ï¥çïû¸ûËýé_‰(VøÑ£$Qüß?¸÷gõ•?ÿò§äœùúËÊ¢ê;‹jªLÁEaiša¨ª"Ý7µ”Ùo.,¸[D"R¾a¥ªC†<N+áGƒ÷ªêÒÇ‚øœï’|c­uŽŒ—ÐsSvDý¿| »FšÏØóZ‹¥¬ml¨E3…‡Òª ‘’>î«VJ-1‹ÓóhX–a9ýWuc’ls´Ž f3XT Ñù±Wa¦½w~ÈÎú 5˫賵‘ê®mfñA_ñer6;½Ø¤pã™skƦÔ囉øøN¿æ¯™£›Ç­Ffð9¾o­›íÆ;( ¿SÌöOŠvmnщ÷ÿË”ôçâs±ôÎüÃüÕ×—Åå¯,2ÌÎ|ègDiç¹øón%¢Åÿò(àªí IDATWrÊϸ•aþÑûÇõòRåU~¾ã³gEQ.<^ÚíɈü볯ÿßûèÇ?öÙågÁ”açy¶5ÊÖ¢. QŸL~…Qé±É/z&[o=Ó-IË£”IÞØž¡QLv’ÖÃuVõ!£”;[M¥Ûá*·MÙK'D1à½#¿\Sú\”¤_ø?~õgºûWzû ¿ÜÿUy?EáÑÒ¾pùW¿@¢ØÒw÷Lìr”v½ÝÃ0ÓƒÍÓ-¶eh¾§V¶¨ƒÍÓDb‹û¦½,1¦›É=Ô(b™ÖºÞ4«›TruÇ­±¶t(i)Mªî”—ÿŒþzÏÝèYeTVÕ!ch¾‡-åÎVOLh¨Gc¬)³ÍWŒ6ðÍ"ÅìWåÌt -ÞÍ)¢™Ò@‡Å2æË(ö=ªˆÅRÛ3înl\•/wÂ×öRGu`ÂÃ7Ÿpt´ˆE†Â ƒ|³G¡“é)iÞ… ¦Kê5-3vz~ Ñûì¯ýű/ürÿŸþFßÑ/þ‡ùO*»²1‘”6‡4Ž-$%›¦ŸÿÍë¿8Óï÷ÄÿpýgúïÅÓ/t}`ææŸþFCå¯uý¢xóžZQ ³3D¿ó¿ý¿íÁ¢W–þþþþþ~­ŸßþÖ^|ÿOë˜ôúo¹ú^!¢ ‹ßäs^×]sÍÝ Hàþ¼«ï•'OždÕÁÛ/ý Dç»ýgùÚº0ºfëÐBo--4,ÕÍ÷ÖæmdÚÍ:í)÷¶äv‰×ßxë\ëý<3»¦Ø'³8*²{9¾a‘¾íÿŽñõæë_ì¨=k£å=^¿~ûdRæ°da 0ÊÎsBÈ—; UwÜŠ}@^¯®¸T w¸}Ç=±Ê0ºK:Ø%fw‹CЦ"ÅjX$iÙûñO/É]ÕÚ1ôŠ­o~'qN/·«ÓCÜ Ø-¹L‡4T÷²XÊì7oîÃ…ŒXf¿¹`ß[!äx‰¢‰ÿ} ³( {ù­¹Ë ?”žÞf’ð;EËüN üNØïÀ°Àï€}ð~'†~gáðäÉ“×ßx z@Q‚é0 üÎBáSŸüÄ‘#G䥔ÅÇü—§  üÎB!«åæz°„0,€} s¼óíoýb{ëwñ&™`?Á<;€ß àw¿Àïð;Ø J„ÞÁå`Oyz§¤þ#5¯î ÊßÇíä9@ä9@9ËÁȢϿ³QòôéSìQNبr€ Èr€ ˆbÁûÀ´~§$-4Œ,KR^²åy¯‘¶ý]]þmIФÝjCSSSSSSÃÜsA‰Â¤w¸_Bhèòo'R–G²Ò‡¸M*OiyDî#Ë’~ú¶¿KN‰‹KÚöw%W9]E¦fú súÔëÛ¤ ï•5Ò³ö­vñ îƒ2›Õf&ßv¬CH)ÂLµ¨ÒòHC—Û4•-ë Â+Uue‹;PhÀö«µZñ<¾ãfV×ï\ªµ—rMY¹Ünk“5DX µæPˆÅRÛ»Pk:§³q©na®—ˆ–GFh¾·ÖM÷VÜš-¥ÇwºGh¾‡nOãÖlÝé¾|{¹­‡%aôr˜Ÿï©µXŠL,9+LQVvﺌyhuÏfÐóÝ81¹õ¬¼`±Ôö.,ôIÒòhãR⢦ðÓoû`LèBoLbQU‘–GF“nìqx½úì¥RÓ(ýþͳKÛþ®˜Ã®|¢%a4ú$¤JÒ¶¿«aâ…yð«ÂëÕG•É>ik›¹úÑ'Eì'þL#?ͤdhH ¬j *O:éIÒvð^•{Ö]5q{YJÄ„“DÑå$>J¹óh}·ý] ÑÇb5‰W¹ËïIœ[˜ ÓÚZu/ø8jÅ–¨µ5SÛÉ^š\åQAå!XS‘béIëÀLöö/ õD»{©cÝ{GÖ^ai½c°­Ìb±XÊÚ;Ö—•Ç–noÅ­Ìæ>5œ&7#Y)LÆÊ¦×eÒ•_½3]ÔGO«cfðmñíT«&t,§f@ÀXÏÚ·ø„R‡Uì¿VMUŽUÍK¤ ©éž-¾=Ú80ÍL4ŽˆéØöw5.Õ-ôª=j²u)bƒ÷è,'?ª¥þêNÂÚFfßúÒ¨›çççææf½š¸«j``©nnnnnnn~ܱ‘öñw˜ŸŸ›››¢Q¡ÀŒBïY]õðMMMòÒ#´Xj{nUx»“<-ê{vvÖëX÷ŽŒt/ÕÍÏÏzë£*òá×ÓD‘.(IZ ÷ììÜÜÜÂBï˜áöDU]­¥¶®5°$ÅRÖÆWMÜ’~çÛ,“ŸQkâÀ€›ççzYT…&§ÎÍÍ Ò½€¶ „ººØ(*,Q]~ÛÉæÆ[qKnñº¥€ñ~ä¦ÁùùäÄ‚¡´¢j%üHö$U¥ŠôÀ’@lÏP•‡onæ=UC=4z9ÌÙ˲Õ[ ¬Vä¦0ú•-´$ ªü–2ûX¬qßñÒPšS€$Ì`­Å’ò¯0:°ÞqknnîVǺªåŒÛ|‹¥6=koë¨jÇtkª6æ¨ š—ÐR¢›j[†"Þ¾Óí¦Au§“ˆ„¥@k"x¼¼Gg¹R­Ñ_Õ ÊqïƒröÉï´Xj{oÚ£óÑ¥UЧÛxP„J¹³ëKr„,x¢aD¶®5°T8†5®ŽîÙÙÙY·|°¯šœ§Ì>6?HîÆ¸?ª]ýêùé³´¢jeãýƒ±cUù¤‰BCPG+ªK4ÈJÒöïzÇ%6)ÊÅ^êX÷ÊŽ¸´í÷®wüJV·E§ØT…&IÛáõ¨ãRÚÆ·êÉ¡0`ëªî·%IX"e\õž•„ˆØž¡VãýH–[Râv“²6^iãRèÔüµ½òHp)Üí­¸Õ›Ë;*©(h­È^aô+[ThH@Kù-µ½C40â÷»ï½ÄšÏÅlnN›žJ˜Á”%iy)ÐÊ·•F  šåÌwÏÚ«À¶š©©Ê “>(è]B{H-•ðxVWîÓ¦7£ª’}¬4RGfy)ÐZwpeÿÞåÑÆi†!"‘ZÔä…W¨"z°2Í7{ˆ´3SÕ}Ù³ÊCÓÍÓ²ßh¤ôG"‹¥Ì~s¡my¤±ûέ±¶2‹E£úŠØOÒ±ATe±”µ 6661L‹{v¿ p{¢Š_(³Èþ7_Õp[hë­-ãÎ’;øØn/{¼GgË,†šXMhq%É ‡BE½ÁÇaªë!ZÊpÏÂ+Uu¥»ìG…ñ„VÛ;O#MMƒDÔâj]ÍØ¿–G.‡ù[U":áðÞÜÕûÁ…¬9(ÌáASZÊÏ^êð^ž¨š/³˜.Ø™ú~ç^xAùîY…†ê `^Zݳ=¬0wRTeÛßÕ0Bq×36¤ZH}ô/D3¸O~§òkùuÝØ/ëáÇT[wÕã­î±=ï9Dqì78—›oÚ˶c:ö³u`éQ©fõw‰Š (öBw϶¿ûòèò>NHÒöo€YnšŽ§1âúKl[i_Õx{¹­ni¢ŠŸ/%¢ŒM,e!4u9Ê(zéì}·× ú÷œQÉ¥½R¤½r=çæzåa¯±ª®×b!ª­kõ&ºüãðz«œNÒ¶¿Û[qkŒn7&} ±‹6-h­È^a“ã©&ånß;ÛÑ:±$ôÖÖH1ùïY`ŸžÛÓ\O"9¦Û¸´ÜÃÖZ,Ñ)²ÁR­ÑŸUhâ¾ÖÁ°oß= ¯Ä¾Ày^O¤¯L\Ž½Ëø8x¯ª®Öb±Xʸ³ëK…jr…WäÈdü@a)­´Võ3H¼×œüV‡ì– „ÛUCsÉ UMÜÈb©½Ô±>Ø<¸ÞqÉp«Í{m”ˆßñ S)”r離”I Õ{VÖŽÔ§§sV¤ößÕUM¸ïlK’$mßqOÈr‘¤åÑËa~¬-_dºVd©0‡ u ¨+¿´<2@¼ÝÞ;D)ëË¡;b©­k xï<ŽÀäAíI5ÿ=ë kº~} h Ù©©ÅÆÒõä×»ï¤N¸'ü "zNL²5ƒK™üfýA±wñÎÀ`s4ê%Š-Có==CKÍ|³‡H<áèh 4Ògæ^"j¢ÁææX¶6ù”2ûͺ‘†¦A&~zaIÚ¯WW\J¨ôóøLØ24/?¬ÔjT?#­C·*¼ƒ #žpÜKƒš „ø ´ Íîo°s½c°'-tÑáußÙfÛJÛø– oE¬‹dlb‹EEhCó=lÏÐRccÜp8Z)¬UZá<Í[,eö›ñµ0ôÚ®Öba{n…»åÄ÷Pk`)£LŒ)Ò>w“”^hù9¾¹¹™ˆN8n݌Ʈ¼·Æj-¢ÚK^žoöèð¦5b’UÉXñBÖŠæ{Ô$ ®ü_¬øâ ͳDÄö -5vûo™ëÓ¢„JÔj¶gh©ñr“‡Å¹âºÝÐ`Ï*DÒkj±ÔöÌÓhcc#UwÜj½¼¤È™:(RU‹•õ­ñòhÅÁÙhÔ³±û7¿x%®*¢x¢ãVO4*,­Ÿ½T–øÆh9}ô×hÄ0Zúûûûûûñ“5½þÆ[®¾W p“«}^?¬`å H»]q³·öËú9@äqPØ£!õE±<Ò¾T(Z¯¿ñ–‘ýÙ¯_¿Žuã™H'C&€Aá° ’´¼´n¦åâã”<½óúorÅ}òäI ¡½ü«_øó¯BI2qüRìp„c9@ Èr€²öfH=0Qü½ù…?7Ÿê¼úê«Òáf𳟓ä9@ä9@E®r0"ŠW_}óì ?Ñ__Ÿ>}Ê@F`PúA—ÍÌxFÐŲ,˲éY#>Þ¦WBÐe³±É$啜šžZHÊOÆnûБ¶Š0µÑlUT«Zº–rfRZÓÉ!©—%õ.Eºjþâ’CJÕx_DÝ ¥ÔÚ´ú`¨Ýµ¬AjbÄÇ›U+´ô\×î©§«ê Ù¶–CÄÇË)‰úG||¨„q-U)‚.£Ízx| -3¢%þÅR¢(Å3ɼ³æã¹ör½»òTN B¹¬}rrñ:×úúì´¡}-Î 9£™ëã§&  ñÀÁcÌqiGû×”7Ö®šh*">Þ³vЬÒµ”ÓˆÒšNŠv—Íe¢yícBzSk뉹åññ ƒtÙÎ»Ž‡œ\’|¢¦ˆ+}Ðjwújô—ˆ?¿á…LkŠUõ\Ûî©§kéOÁ» m{rz‡éê”ÐN>þ¼7Øîä(è:¿á99¢À÷wƒZª9Rl®:Ç—ì\‡Ä1Ñ>ò9tÆã‘û3Ö1aÌ:ìÕ{LZ\ësÉÃRy»«om1¨¼]oûñÜûË¢ß>î„Ó¹7ºTo¸±•¹MõXv~ÃáuX ¥k)çn•¶€å=1¹¶6žª<ûïXå)ʼn³:IauŠ@2I)©¾êúôΜ›*BS¬e÷4Òèiê¸ 9¤zp•…¡†µTÓBFîÏй3åq+)Ö ûÅ¢yñxgÐescqVóÄÀ÷Ä=5n*›šššššÔüΠwØZÏWo÷kû!ÁE¿õxüù ü¸ÕŸ/Ÿ%¸è·×ÃëÜ3käOͽkÄý?ÕÍŸVzñúzõøZéÅk´ê}Xw’Kñ3ç …A„»•·bÍ©'šràêíôðÆ–e»Užj#>çÌ9ž+®ž®ÒîšõÕÛÖÆCçb½ ‚ Ô/ÚÌÔɨçÆKÒÕŸCç”5ßä é™Þ–ê)n'ê“+W~Üúð›U®Ø±Ê™ö¨‘TÿµØÍH®NgÊ¿%Dr°Ó’/QÞî°ÚäW9 •”×w‚.Û"¼KmJ{•Öä5ò?œdØÉØs“ßFã!'§™^´-«]_ùˆ?ÏSúëšåíÞqï‹$½Çm^=Ñ”CÐ婜 å±ú%¿ì¦´yÅã#h·{Z}µäv¬òTâ'Î9¾Èß´›ñiNUϳ2zús؆‘óŽ©J'˾CD'¯Þ=èçS#Zª7"DîÏÐ9—"¿"Ö›t|(5ô†ÜÎxbcc#Cô=ŸÇÏL&bˆÝ“Œ_=äÉÕÛ×6ã?D6×òö¨?¿òètî]#îs1²w ‹ÈæšÚûšAW'9±EúRì±ÊSÉã¨BAï°ÕQ¼od¤µ{VõåøJOl~:âói•¢çZvO#]O ØñÌlÛ³”C¾Ûº;-ÝÚ€Û™ëð‘J¾!|§ï5.­QûÏ… ì ¢“}w~%u-56Ö× . t£UšÃ‡R°»6•Úû³?¸vútMMMMMÍéÓ×ä²]g!”€ÍU!Èr€ Èr½Š+onA{¸?ûwuéïï/Ñ}tR,8œãÃ×—€hgAPàÀ9½ø¤á€±œij=Óô2r㟞f^h tïOJê?RóZß+‡YRÎáÏ»· Èr€ Èr€(v#"úÄË\Ï~ôÓ˜gyàgKê½?þcï}¡ä'_xÏžîüðéÎÿyçÝñÙŽøì¹øãïù12û€Òï ºŒìgtÉÛ)²F7ôdYÖ¦WB"[œ¤ü±’uËI*Ä…-Ž H[E˜*hÒ*¦Ö â㓵¦ˆ)]ºTU+Òäfv9$Õ7µj¯Ñ;L+ú¬--+an•H½¥IŒïQbÈ>dÚ «Ö™mšVž´ôˆ—S{ºD||ˆB»“!Mºl·ª1æ¹È Bº¦Õ ñõ;·Þ¼RSS“aa«×NGsl½yEmEÍDýRÒN}pÍØ ŠsžrèßJiF4™¶Þ¼råJ²>¸vúô•7ß¼¦©4~JJ7½2vÒÔ«ËÍärx ©šR) 9hÕ]¥¿èž‘–ßäúÜêêc‡¶Î(~)h9ìûªyTÒcI‰Œ A°´ë'Ôü­7¯äiO“»ÉjŸY…4»Éàg?÷ëÿñÞÌ}´þíïûÉÿüþÞ•$éû?zöí'?Zÿö÷W"ÿãï7Ÿüíúw~½«/ïŒÜŸ±Ž cú;r×ú\ò¶ åí®¾µôk¹zûíÜïE¿}<Û-Žêíi>¸Í†(é7JæF4ÅãÚù ‡×‘ü3ç …¼íÇWT;MÚ7èê$Eo+¹©êƒFVïÌ9õ}A‹Xôå“¢ÙÉÓ$õÝÚx¨ØõïXå©,öL—O¡VÛ€m×ÊcàÜèNí… í^lTó{´]6W0)Èu'bÎD<ÞtÙ\ÁXœµ(÷õÞ÷€‰7ã°µž#®Þî×¾PpÑo=_pµü¸5=opÑŸËžžÁE¿=ë}Â']k}S‚ Lõ­uÂóÔkh‚Q%óñyÖúxÎpº9å¹}#>9FÑÝꃿ[e¶(²¹f=¾å*âuÒõY¿¿¤ëCný«°õsŽ[‡ÏË®‚úžã:öÁ$ýňm×Ê£šÎ9Ç­7.°ì…Öq'ÐNíF{±¶&+ÜN""g' ‚p÷êšçÚ5~±>î^Us&üNr…BÂÝ«¤¤3§¹0訚֬ýÎÄ¥9¾oÍ“³tuÒøžkf´ÎŠýBƒ‹~»£½œˆÊÛvÿ"Ï}o”ýì'üb}Võ‰>¼:É•|šVz±Ê!zšsæ_D^§†8g($‚ Ü­ô('A¶6ú;ëA¡~ÑVDA u}Π'iú£^~¿àêíôðÆ–e»“£ºv èúKvpN¹§ð›|!=‹êÅzšœâvÒ©>¹råÇ­¿Y劫œi¦ê¿šÞ\Ò uÓš%Dr°Ó’/]Þî°Ú¼Áöì5,eçø½Ã>&8¹èûÍrbïBh”ý«‘wøá$ÃNÆž›ü6ÏPAy·Õˆ?ÏÓ”¢i¥«RûúáЇòv︋÷E8¹UžJ¼ÑÃ9Çùû‘öâx*SÕç òIÓ‡õªðõ!èòTN…„ò˜]LŒzv èúKŽÃÈù ÇT¥“eß!¢“Wï´µ4Ò‹õ49r†Î¹ùA¾¤ã¢~¤Øíð—bZ³€!úžÏãg&»ã(uO2~õ'Wo_ÛŒÿÙ\K<5îÒ¿ÑŸßת4B›98:hšÞ"D»(^4<(–·{ÇÕ^_ÖJ7©tÛ×¼¯äML¦ÈRÏu壢9÷¯ׇä D•G͘¬¿±íZy´Ï¾ÕIÞaºzW(Œùe#½XG“S£‡˜Ts±?îC‘¿¶Ž ÉhÃ\½uØ)»¤ŸsØ»¥Ý¿ÄÕÛýYNy%^[äêíQW9âóøMæHíשÞ(ZXüD6×T_>ÖJ7©#¦Ý¾Aï°ÕÑ^~è:B')jÍñ•žØäPÄç¡âˆa}>Lúp¬òTò€š.¢´DÓÉLjm×Ê£‘, ·:•µØU/ÞÚ€Û©¡öY¹)¦Õ8%ß¾Ó÷—Ö¨}§Zø”s†ÈŲ,¼:ååâàÃÉIö‰¹="sÎи‹½`¤7;ID¢x²oÊY={|Ñvž½ÁˆâÅñP¬Ã$¢}ZÇÅ<Új6Šz#…ƒaëœdbh’ŒU9–ByJæÔô"p<µÚ7²¹vª’7(·bQ¢‹cÉõ)o÷Ö»X¶›äC®8äƒ>kéC±Æu.›•EtòjlfQGn&”Æ4äiÙ•ô Ë橌fáø>Ï… ì ¢“}w9¢À·§J/66¸×Îñ‡ÛíÔVûÌ*¤mZ_¿Su5»šššššš\—É,„°~'ä9@ä9@²W‘§u;¡¹®ßY¢ûèrîöáëÀK@´³ (pàœ^|rÀXÎ4µžiz‚¹ñOO­ŸxÙú³¥?õÞÿ±÷¾Pò“/¼çOw~øtç‡ÿ¼óîŽølG|ö\œ*©ÿHÍk}¯fI9‡?ï:Ü€ Èr€ 颯 æÄ<;È=Ã_SM½óßàw€¼1Ú÷ÒO¾ðžôôמEéw\ûÊÅvOÑEy·Êè‰Ñõœ’ÓÓÎTd“IZ$/V2é­ß™Tˆ(žì›ò¶ãÛ4]A©S¥MZÅøÖg©Ú•Tëˆ??ü޶4å˜]™;i²tåf*=O¾yÝzié¿ùûEÄÇŸ¶èï†ôÁ¬rPéïºõÒ¶êò,ì‘Y‡ ëÄÇ_¸‘¼7fÄÇŸßpÂ23úV=³…®NjÀ8$k~grÔ³iú`šñοÞL¬ß¹õ敚šš [=¸v:šcëÍ+ª+j>¸–y¡Mµ<®[¡3ùÜÄý`ñ-#­¦×ˆ&“ÃÖ›W®\¹¢¥3J5ÑRUrL/EÝÕ{£N¯Qœ`918ɹ´äcú~ñàÚéÓWÞ|3U ¹ëCR©Î²Ö IDATvÓÈA¿¿§‹A3¿º< Z™hí<*鱤DÆ„èX™[9ÓH±õæ•<­ãYœ.„¦YHS…J¤¯ß™Î«¯¾DîÏXÇ„1ýªƒ‹k}.Ùµ-owõ­åowôà¢ß>žÃ.Gõö‡[‰Ç˲6› ›¶kKiq_ËÎo8¼«Ö¯צ wæÜ”ös›^9f”CÄçIÔãûÖQ/Mù˜¿_pÎPÈÛ~<5(”»>˜³±õú{VùUåYØu7 ÃZy œÝ©3S+kZxÅíA—Í ºX–eYÖ”Sl±ãX†øAÄÇÛl,Ëf¹¯·¹Ý[k«<¥±+oÏð×>ùû_Iÿ›úëM&ÞŒÃÖzޏz»_ÛÞýÖãñ€jùqkZވϳÖÇs9ô—œvUW^.âsn8B‚ „Æ©žgŠtš‘¹ÍàG虿¤‘–"›kÖã[J›b´³Ë!Ú¾é¶#I´äf"üÝjk¨^ ùC¿ÈL–ú“1?àÉWþ®V¯ÌùMeè3ê°VÕtÎ9n½qe/ܰŽ;©€vj7ÚjÚRávù;;iL„»W×<×®ñ‹õ¡p÷Ꚋ'áït’+î^%Ý ]q¹ ÉÏcãÖáó²×ÔQŠÑ¾—ÞøÝþwþ£Ç™”ž¨þ@ld´ÙX–u’kï3:Ì$_.r†¢BÒwžŸ×éê¤ñ"z 6âãëµëñ9gÎ)FË­‡þÎÅzAA¨_´ÅR3”cV9”·;Ï]AW§ß >¤ÊÍ4OåÎPHA¸[éQ›éH­WFù›§™½>ì§1Ï;šý]£^:ùç”%Ãoò…ôŒn¨Õô,|ŠÛI§úäÊ•·>üf•+v¬r¦=ÚYÔ=nWo§‡7.°,Û1`øƒ§;ÿôߟnüÓþñÑ÷~뿇6¾ùÎÿ,!’ƒŽPyÌLYmÞ`{–&ohññçyÚë/}ìòKÏï=®4'/°7ˆˆH¤‹õ0QS[d/D½Ã'6úC~[Ò ãJ]&"¢c•§oppÎñEþ~¤½½ì§1Ï;Zý]«^:ùABMÎo8¦*,›üQ!¶²¡‘"r†Î¹ù±Þ¤c¸ ª?{*§BBy,¯‹²9¢ïù<~f2Cd»'¿zÈ“«·¯mƈl®¥ººåíÞqk.Áç\B”åí®JO<Àq¬ò”}Lˆ:Ÿžå¦=Ñ,ñ-AÆ.¦|s§25¨õXª[ŽÙå‹R8I9{¦mMÌ9¥š­z©ÈÇìýÂPÔʨ>ìʘðãG¦0TJ½Š)leD‡µòhŸ}«“¼Ãtõ®PóËFZMÇB¦F;A6±ªäW2rš^f(òwÃÖq!-{ÃÕ[‡²Kñ9‡­éZÙ\ÓxÉ4³ãÙ™íGy»«Ò=©ü̹5L®§=”¨hOæF4o•½ÃVGê“8Ç'O">9M0#âã•ßWi¿ ª*7*|gJãf¨W²|Џ_d«»4æì|eìïÉõ*&û`D‡µòh¤ è­Î¼Yõ­ ¸Yº ŽUžJ~DÉÞJ”|CøNßk\Z£öyœ©3VÑGr±,KD'¯Ny5–‚Ë¥A9ghÜÅÆ'Ê ÆŸÊÛ½—÷MyÛËÛ½õ.Û²f[Üs×:.ZýYô?œœT“§z#øº¹vª’WS’úè<ãÉ«w½\±Û u5õAKnf«ïű”.­Z/íêLß/bUch’L_·Ò˜>äØp,Lµ¿k×KÓ>¨Ê³ÀO­Z1Þié¹Jzt…K.æ\¸ÀÞ :Ùw—# h+Yƒ|qí·3·A)XÙë²±ro:y5—wqâëwª®^VSSSSSsÚàBY…XÖï„ Èr€ ÈAö*ò´n'T"Méëw~ÿGϾýäGëßþþJäüýæ“¿]ÿίwõ•è>:írS‚B(Ñ΂û³à0À9½øêø€±œij=Óô2r㟞Z?ñ²õgKê½?þcï}¡ä'_xÏžîüðéÎÿyçÝñÙŽøì¹812TRÿ‘š×ú^9Ì’rÞu¸%9@ä9@D±9ÌÉ@X`€ß öÛï ºÔö7N%è’·5RÏtÙ4 ‰n«$)s¬äÔtBbyŒÝö¡#]P†Ñ$õJ¾­úêÈAù“é¶eΗR{¥Íd½IKDDññ*æÂ–¡²zFÌtý]«}³ÕŸâé:VQ»Ë˜Ç>±íZyÒÒ#>^NIÔ?âã D1Tz·aËÍ`°Y‘Qhyr!âëwn½y¥¦¦&ÃÂV®ŽæØzóJÚŠš[o^¹råJæ…6\KÏóàš±:ÕÎÅâ[e¦lWF4¡4”!¥¾êéÉ ¬P¿C&Í’L/5•Ù€¤1óÉÁXûf«?ÅÓ/TImwsÚýZ?Jz,)‘1!¸–ƒvýŒjÂÖ›Wò´Žg‘ººÝGÃ…0¸~g<Þ¹?cÆô7ä .®õ¹äµéËÛ]}ÉSÊj9rÛí6¸è·ç¶„òY$âãm¦}Rß3¸zûÃ-CX„õÕHßÚx¨ØÞëXå)n ˜9$w%Å>Цr÷Μ›Ê¶2»2b…ÞîÙ¶¯f9æê¤Ê!½ÝMiŒØv­<ÎîÔΙµw'W&±G{Ðes“xѰ_̈ûA—ÍŒÅYM7G¶Ÿj¦oÆak=—a÷äýàË[y lë™ÁíÜý~ÈA×ù GH„P‘tFS¯ÍEÄçYëã¹ õÕJçœãÖáó²é(Ð=ˆ÷EIå˜ÚëL–CdsÍz|Ku2Èß­1C´;#V˜ý=sûf­?&ïérPkw3Ú#¶]+j:ç·Þ¸À²nXÇT@RÐéÝ5Aávù;;iL„»W×<×®ñ‹õ¡p÷êZgzÙþN'¹B!áîUÒ Ò™M³IÍÞúË5÷ççØßô í“¿ÿ•žá%çØ×ÝŸ^ÿO¡?üâÿ;ñŸÿ>ôÎ+I\Âå$Ù3Ü"¿Xïݯ­|ýÝì$©ìá\ôÛë±»‘êÃ}¨½¼˜jdëœd˜“WïªYA­ú¦¥sõvò߸ÀÞ ícÎC+‡XvΜsy‹F¶6ú‡ÇC‚SÎÁoÊÛÇ·@‹øx›‹»Ôï«Û÷þ®Ò¾¹éÉûEš4ÛÝôö!pNApÊRrVNÌ‚ëZ½Û°&DîÏÐ9W"íTŸüàQ~Üúp&ZÑòãVÚH+Ó>.—¥þkѯxß kmjÕÏóÏ~º„Hv:Bò%ÊÛV›7ØžÍSÐ;üp’a'åÿòÛh|#Žö1áLã:´X_lÑ_Ùuˆøøó<¥˜­úª¤]žÊ©Pû]éƒ&9ÄûpÜ…>«<•xs‡sŽ/ò÷#íJ•·{Ç]|ü{ŸØ~÷wµöÍAÌÞ/Òå Ùîæ·ùT«óŽ©J'˾CD¹y$y%cïΠ ©n')xILJòQC»ûäÅ÷ÿ„ί÷þ—÷0DßóyüÌdwü#¦îIÆïQ}s«·¯mƈl®EçÆ9g($D»˜†4TUÝù}ãºG3ã ¤Õˆ¦£¼Ý;žü:rVÎVòdA^ДrˆÆ|´æTL+‡òãÙ½¤¹{#VÀ™zík\ÌÞ/Tå Õîf´Fl»æ ®ynô­NòÓÕ»BaÌ/gÕ»Ó5!e’ë>ùs!Šüݰu\HFû‚Öa§ì’F|Îakþ<®ÞîïÜå{ºf~WqOF!õ—Õö®÷›Èæšâý3­új¤«<•ÜyÌû*Û®ä™ÿMŒd9p|¥'övVÄç¡´ ]ä(ž÷Oro_cúcv}ÈRÏMiŒØv­<éúnkÆÞ­« [p;³ï>yt!J¾!|§ï5.­Q5Þòäœ!r±,KD'¯æõmÎw±ØD¤òî¦Á2¦6yÛÍÄNW>¸k­Û¹è89©&ϽkÄ} êtN2L¼Råê«•^Þîu¸l6V.êäÕ)“}W”/9Ä oZwK]DåíÞzËv“<3È¥æ¿8VL& ÛöÍV̯Ùé¹9탺mOï´ì¿JzÐeóÄÞêäø>Ï… ì ¢“}w9¢ÀÇãÔ{·r”×ЄàâÚ9ngVÊ!2N|ýNµ5šN×ÔÔÔÔÔœÎqÉÌB(ëwBä9@ä {yZ·*‘&‡ÁÏ~næ¿>ú®.ýýý%ºN!çn¾¼D; ‚ˆ‡ÎéÅr8ŒåLS뙦—!3mjÕ_Géúõë%õ©y­ï•Ã,&çðç]‡[ä9@ä9@»‘ƒÁœ „öø`¿ýÎ ËæÊ¼ìzÐ%ok¤ÈtÙlñíŽlš…$eSÉ+Ùx!6Û.—š/b‚R¦J#YÕ“k¦U߈ב’ÉÛ=­¾J•ˆwƒ·èõA·¿§È Å*‡äÚeÛ_LPÑ̶]+OZzÄÇË)‰úG||(†qën¢©›Õ˜ktȈøøœMD‰¢Ï$óΚçtÖǕב„rYû;ÖÙ3=¾(’Ú²íA—­“ÆC‚/Í× ºlNßo;VEЖv´%Ö=ÖlÄbé žµSdͬ´~à qÅÚî²¹ŒV7âã,è²wþd¤ó—>,Ö‡'%m»­Ý_ŠÓhéÃ!CL¸ûKa{×m»V•ô w˜®N íäãÏ{ƒíNNÞ¾(ä<øuã[ït Mß\;epA%ÎÂ'ð©îÚZ_Ÿ6Ò{ñý?ñúoéœü ôN<Þ¹?cƬº[¯×ú\²*owõ­åoWÊà¢ß>ž}¯æêí7¶þwÑÆlver•RÚÃF,ˆþp~ÃáuX (mÐ;snÊyhÌÉÖÆCÅ®gÇ*O™w_Ð]éCÄ硸¥áø¾5OZÈ#¹¿©0 Å* º:)ÓhcÊþbĶkÚÃÌçFwj/›iØz«Œq'¶YfÐes“b½ÑPwÌ“ˆÇ;ƒ.›+‹³âÉVÎ yÛ«þväÈWß+:õ©aâÍ8l­çˆ«·ëlq\ô[ÇŸ’¶C÷wïjÞ6¸è·ç°OxÄçYëãcÑ+ç†#$Bhœ:áy¦H7a4u±Æ“t³¨UßÈæšõøV1¿o ìDœsÜ:|^6•){.ï²óšK’)?nMw­’úK±Ú}(r9$=yäÒ_ ¹3Úv­<ªéœsÜzãË^¸awRIÁ¨õÖ¶ ·“ˆÈßÙIc‚ ܽºæ¹v_¬…„»W×T< §“\¡p÷*éé3Otyúô)“ÒãÔœ_Aán¥g‚Ña’eY'¹bý r†¢6Rßy>|^§«“ÆÁ«¿Xo¼ž[ý‹õ‚ ‚P¿XLo GÖ½#Ö/èá ,Ëv+žòö¹ó¸>”·;Ï¥AW§ÿ°ô—´z©ëC±Ë!âsΜ㹜ûË¡ lÉ’ß,˜P§aë­7"¤¸tªO®\ùqëÃoV¹bÇ*gÚ£BýW`ˆ"9Øé•Ç̲Õ&¿Ê‘=åíÞqï‹p{j­¢¯£E|¼7ñ€¶µñðáäö‰t±m5©i¯ÒiM½Ã'vRþ!¿Æõ*~¬òTâÍÎ9¾Èß´Ó«lž'åk½žÊ©PÓ‹Ô—¿ö§ó€>pιX¶›ˆ.ŽÛ×6Q©—®>­ÝPŽu»ë/‡k9¿á˜ªt²ì;Dtòê݃~1b½õF„Èý:çRäWÄz“ŽÁžÀ}Ïçñ3“ñ"Û=ÉøÕCž\½}m3þCds-oO¹„(ËÛ]•žx€æXå)û˜%tx-DF§sïñà­Xû]/ÆLŒV}‹þqµ¼Ý;®x];y­øç´ô!)Šã$¥T‘Ó©«Åû°š<•^týňm×Ê£}nô­NòÓÕ»BaÌ/±Þ: 5Ú öÝïŒüݰu\Hf\ãó"®Þ:ì”]ÒˆÏ9lMÓê «“¹< qõvg¶Såí®JOô¤ò3çÖ0¹N©ñ •Á#c#›¢Q_ŽO<¶D|žÜô¶°GÙ͵ÄûyÇ*O%+i¯îåÜyÍë…ðŠïK2¿ ZTv@SŠU vjkx–ýÅD¶Î=TO/Ðw[wg½·6àv(%ß¾Ó÷—Ö¨}§ÚŒ[tŠŠ%¢“W§¼‰ÕŒ:'†ˆ.Žåú˜Ì9Cã.6>QžŸÐ‰é8b‹}´{ë]6¶›Qœ®|p×:.Z·sÑÿprRMžêXÄŽ§F}ËÛ½õÑùÖ“Wï‹Qnôò¤®bcåŸN^M(æ£óšY>\ÆþRœv@SŠT1ç‘ße1£­Kï´ì¡Jº¼´’œ…ãû<.°7ˆNöÝ=øu”Ô­·±‘=¸¸fp%@ª‚õ†&ÙI-+ÑÔÔ¤ZVcc#½úê«’:®>]SSSSSsúôµRB ™üìç$9@ä9@Å.‡×®¼¹Qì‰JÈ¢ønŒš4¾ûÝïö÷÷—è>:)ÚÍñáëÀK@´s_™››SF=çææäìÏ€Ãçćûëz¦‘åLS뙦—!3®¾Wžþüð;* ã)Ë®”')g¬dÒ[7.}ù½Ã³dVh­S¨Ûˆæ®—ò§“}Ñ÷’´NqŠVºùä ÚŽ~Øj ÝuõÄürˆeIÞ4U_ÿÓó›uã¬Ú_tõÇìú "];`F;iäžµò¤¥G|ü…É{cF|üù G!,3“ÁåÈh¢«“øÈèm7ÙœfR³'Ož¼þÆ[:×xz߀=çþÜ_â»"°ç¼öÃm¼ß öƒ’§OŸê/¶À.yúô)â`?`^xá…ø?GŽÁ1ŽqŒcãÇ8Æ1Žó~ü /0OŸ>ô®üÇ8Æ1ŽqŒcãÇ8Î×ñÓ§O-ýýýýýýGމ¿å‰cãÇ8Æ1ŽqŒcç÷øúõë ¼oãÇ8Æ1ŽqŒcïÃq4ÞIì‰x'{JɃÐ;ú›i°K„Þ)ùˆíä§>ù ÈìÏÿöî?®©zÿøûL~l€SšTLEL 5ˆHŠHÑ®„vMÈ~˜á[zµ0$šÉEÉ_áÌkiÜ~HiÔ7ÅKâ@É ÄðJ ‰¡sL”nƒï‡ÖÛ˜ˆÇ1_Ïœ½?g|Î>Ÿíðæì|>ŸßÎã{vàƒSëÃ|ínrwѦ2»=ÔÕsñ^€»+ï\óÁ.ÇøÚÝ${^´©ìƒåÛç¡Î\™7"Ü]y§Ã$&¸¤óøùßÑßwŠI'ð—w"é€Ûʩͤ“ek²çM}¿B@Dzý 9o|Æ›iGM,[üÞ˜%{é©U⃆‡×fKÒɲÇ?Y|LÀ½º€É›2F÷º¥cã~aEÏݵ`// S|WZÞfÒ™qfð«™ûóòòXJ)ﳬ¥ÌrýèÑ£G¯çv0yÈ0Áó?Ig­Æ¿í¤óòîwcQôœÏmþâpÆ®·(}m¹…W·Â©­äÏQÿ>R""†ñ~fÓ|ã”ôý ^?~Õø *yoÌ’}€ö-C©y£Š"  ;p×; ÛsæT½ÿ~…ñeTî²è>@?hÐà3gÎüq}”­ùrÞÔŒŠ– “ã;ä¢éO_o¼(ŒJh¹0É0>£S’ñ5Ëe´éúçþÛrM”ˆB½8‚1ì39®*;ólëk¥—÷ÍÉ0¸;µ1o<Ç=EÁ¾%cæ}Yó— %ïMÍ83øÕ”WÓÞ%ï•0LpüUãõz.)|HðñC³9¢@°ï0-ÝŸùê`:“ñyÉ¿vÉ>`|ÊþK# {²lñ{S3ÎÐS)û÷çååuÈES–=~òéõQ#†[hAΦãnÙ½p¨ äÅÝ›¿8¼iÃ?ûèõEïüyMT È)¡·6%D gwýƒñsKè­MþéG?ÇwZ<ÿ`Êx½@Pñþ´±Æß¡ÝKDýûõéODUknþëi½~ü´IR’öéOD{³,ËÖ\¬"½~Pj‰ÿ5O]2/»†¯ïÁõú¨¹¯<ô—¤·O«}žïMà ÕëéÀC>Úçö7Š ïl#õÜ¿?óÕAz“ÌO Ø·tìÒ}¹(ï˜ãùË×ú ÿñœAz½ âýicÇ®/îø4Že29|öä5fsDöòî´ÉásŸ]bø¶:>ï$"†ñž´qÕx½þÓ§Ï`ÒëÇwàßm€÷3›L¯'¢½K,Žmº‰_È„ŒCAÎÉÛLIå‡Ò7VÓý“6¬ Õë-î7ÐÏ o(€öå,[¼~î—-8KŽîhp"†ñ,ìËÌVíîÓg0U]T˜}hK.Ør;éÑ’–=MvŠ_5^¯çŽáÖÝÿô<“û5-¸¤ø™ˆú÷’´.ªº\Kôã‘cõí}/&Nh_ÞÉ0ÁñK)e̘ÈÈȱK÷é½úñÆIÞ CDÞÏlJ¯¯xZdd$wß'ÃxOZ:g0áî-!©ñC¯Pr™å¾¥c†­ÿÇÅEnJ¦ÈÈȱc—î¥Ás–¶Ã-bzM^¼ëÝQ´'ãÙ'¬|‡Î0!/,‹r6Å|$HAΦ˜µå¼š’ôÇç¦æ˜¹ŒsªG#Ÿú¿Ïÿc‡GÆMœtæ©Uç·ãé·{¥¢œ~Û§'VÏ Ä{XZZ𓽓aþN"Òžóq|ú ÀØ]ÞÉ-k4ßîŽaB^Ü]ð"ÞA¶Á¬@ÀfDÄ´‘/;êË›õƒöÛ>=7"8¶ÒÃ9MxÌ/qùãŽú o߸¢ôã¶?'±9ßI~­©S$g íO~­ ÷wœ|º»„Ü× ·Ï»»àz'ðy' ïäÈ;y' ï@Þ Ã0 ø¹¹]¿~½uéÈ‘#¹Ú÷ky;~KqKn÷!yzz^¸pÁÊ¡ÊåòQ£F¹¸¸Œ5J¡Pï&—Ë?ÿüóiÓ¦õïßïO@Þ ŽF­VoÙ²Å$xøðá“'O¢qL<ùä“ݺu³¾R©|æ™gššš,íûÜsÏ555=û쳓'O6.òõõ2eÊþóŸóçÏ£µy'8 M›6éõzãHbbbç}9¬K‘öùöÛoÿý÷6w;qâļyó,•Ï;—ˆ^{íµââbã¢AƒÍŸ?oH@Þ Žé±Ç»téÒ§Ÿ~jœ6>òÈ#†HHHÃ0‡6DΟ?Ï0LhhèÍVwêÔ©Ñ£G»¹¹¹¹¹=úÔ©SÆ¥û÷ï=z´P(äJÏ;g(’ËåS§NíÖ­›P(|á…êêênñ…;v,((ÈÅÅÅËËkÉ’%†Ì[¥R-_¾< @(;oø¢¼Íïë»víúïÿ{çÎfKCBB6lØÀ¥ûÁÁÁÆEgÏž]·nÞ“À«+V°·wÂÙ³g1Ÿ8q"}ùå—†‹…7n$¢éÓ§öyë­·ˆè£>²ôkÍÖxæÌ™®]»š¤hååå–.FŽê×_íÕ«—É¥A+µy0eee"‘ÈøΟ?Ÿ+úûßÿnöª•«ª&Õ}öÙgÜKûùçŸ[FMMMXX˜³³sXXØ¥K—nª:ÖŠ+wy'˲}úô!¢ï¿ÿžeÙŠŠ "8p ñW¯^uvv‰DZ­–{nŸ>}zöìixhcÚôÒK/Ñßÿþw¥R©T*¹ 綾^2ìðüóÏsiè¡C‡ˆ¨K—.\œûÚzذaÿûßÿX–­®®~ýõ×o%ïœ2e ½þúëÍÍÍ[·n%"WWW®ÈÙÙ™ˆ¸Šn6#4ì0{öl" T«Õ7›J"ïäà°yçªU«ˆ(&&†eÙüãD´qãF“(&&†»’Dzl^^-Z´èfÓ&±XLDÕÕÕÜÃêêjîº`›¿‡ËŒKJJn6?³´wÙU©T²,ÛÜÜÌíÖØØÈ²lXX 2äí·ß>yòdûòN­VûàƒÑÌ™3‘w€=縿x5sæLggçììì#GŽ|øá‡={öä²OcÓ§O'"î6Ð?üˆ^}õÕ›­H©TQß¾}¹‡Ü†F£á644¼öÚknnn­o ”ËåDÄerB8lir IDAT¥R‘X,f¦K—.-7× D´{÷î)S¦œ={6))iĈAAA?ýôÓÍþ~''§¯¾úª{÷î|ð¥=ìòNàU=fΜÙÜÜÛÜÜôÐC†ûAmúK øâ‹/zöì‰7Ø'fÅŠz±pH§OŸ Òétr¹\"‘ A:»ÄÄD\ﻣR©&OžÜØØƒ¤Àa ï»3þüêêjWW×vLŸÈ;lµuëVF£ÑhÂÃÃÑÈ;wòN@Þ €¼wÞ¢]»¾‘J‡xzöÏÎÞkR$“ÉýýCBe2¹í°+ö²^‘§gÿ’’z½~ôèI2Y™qÑ+¯,xøá ½^âDYFÆ»6FÀ~$&&:ÙÉ¡tï.¾v­¾G{šåæJOO˜¤¤5¶GÀ®ØKÞùOؽ{»I‘BQ+ºr¶Gy§ß|“›—·ûøñÒM›>\±bQþæ .|õÕWtwwGð©¡¡a˜°°0;Ê;wíú¿?Î  }LòN©T¢Ñ4êt:©Tb{„ˆ†AgÜqùùùv”wvïîyäÈ÷DäåÕÓ¤(:zÜÎÙZ­6**Òö±,KD999O=õTzzz`` z€O?þøc||<·m/yç† ©“&MsrrÚ±c#a/–­#¢eËæ‡…EQaá®È–ˆ÷õz```xx8ú€OÜu@ûÊ;cb&ÄÄL0<¬¬¬òõõæ¶¥RIUU‰ñζDÀ®ØézEqqóòòv£{†“}VQÑ>ô €#Áú쀼w ï䀼óNa/ÃO›E2™Üß?$ T&“[ŠòN3X¶Že몪J&Nü›¥Rnù""JN^—¿hÑÜÔÔtK°+ö5çòå©kÖü«ÍÝrs¥§§LRÒK°+vtç©S?yx¸Яu‘Pè3a‹r¹‚{¨PÔ …®... E­¥ ï4oÁ‚·ß|óµÖq–­»r¥20pHlì t@'e/ß³Ÿtuu¹ï¾¾fK=<ÜW®LHKÛÈ=”J%M£N§“J%–"DÄ0Œa»¬¬ À3ãÌ^òÎŒŒíS§ÆZÙ!33+ `·=nçÎl­Vi)BD,ËQ~~~DDD```xx8ú€O\>f_y'70È8Â0^Üv†ñrvv1bXVÖ6®hÙ²ùaaQDTX¸ÇR슽ä E¹ñÃÊÊ*__ï?Òä:“¥RIUU‰õØ;]¯(.n^^Þnt€Ãp²ÏÃ**Ú‡¾p$XŸwòN䀼wÞ) ãeø1)’Éäþþ!¡2™Üö ï4ƒeëX¶®ªªdâÄ¿™%'¯KHˆ_´hnjjºí°+ö5çòå©kÖüË$È-¡)0IIklòNóNúÉÃÃ}À€~&q…¢V(tå6lòNó,x{ëÖµèä·QqñIWW—ûîëÛºH*•h4:N*•Ø!"†a Ûeeeèlžç`ö’wfdlŸ:5ÖlQtô¸;³µZmTT¤í"bY–ˆòóó#""ÃÃÃÑ÷|âò1ûÊ;¹AƆñbÙ:"Z¶l~XXîáŠl‰€]±—¼S¡(7~XYYåëëÍmK¥’ªªãR["`Wìt½¢¸¸yyy»Ñ=ÃÉ>«¨húÀ‘`}v@Þ È;wòN@Þy§h4“'Ç …> ãeRÄ0^†."“ÉýýCBe2¹¥ ï4#-mÃ#<¤Ñȹ5ŠL°l÷Ã=LN^—¿hÑÜÔÔtK°+ö2ç®]ß9bë—ܢ𓔴ÆR슽\שּׁ¬Z¸p…›[ïÏ?ÿºu©Pè3a‹r¹‚{¨PÔ …®... E­¥ ï4C¯×OŸþB^Þ— ®0)bÙº+W*‡ÄÆÎ@‡tRöò={÷îâQ£"¢ºº+­K=<ÜW®LHKÛÈ=”J%M£N§“J%–"DÄ0Œa»¬¬ À3ãÌ^òΧžûÍ7¹‰×СƒÍî™™0€ÛŽŽ·sg¶V«ŠŠ´!"–e‰(???"""000<<}À'.³¯¼31qqdäd¥òú×_ÿ‡‹0Œ7€a¼œGŒ–•µ+Z¶l~XXî±»b/ygß¾½++VVVùúzÿ‘&›Î¬$•JªªJ¬GÀ®ØézEqqóòòv£{†“}VQÑ>ô €#Áú쀼w ï䀼óNÑh'OŽ }ÆË¤H&“ûû‡„ÊdrÛ#€¼ÓŒ´´ <òF#o=K|ròº„„øE‹æ¦¦¦Û»b/ówîÚõÍ‘#æ—¸ÌÍ=”žž"0IIkl€]±—ë••U ®psëýùç_›)µB¡«‹‹‹BQk{wš¡×ë§O!/ïË… W W½|ÏÞ½»xÔ¨‡ˆ¨®îŠI‘T*Ñhu:T*±=BD öËÊÊÐÙ<3ÎÁì%ï|ꩱß|“+‘x :ؤ(:zÜÎÙZ­6**Òö±,KDùùùáááè{>qù˜}剉‹##'+•׿þú?\„a¼¸±íË–Í ‹"¢Â–G¶DÀ®ØKÞÙ·oïÊÊㆇ••U¾¾ÞܶT*©ª*1ÞÙ–Ø;]¯(.n^^Þnt€Ãp²ÏÃ**Ú‡¾@Þ à°jêkõ >k: ‡ø AËòN€»Ë—Å_¾ø}>kìoÿoâ¿Aˀà y' ïèty'Ãx~Ú,’Éäþþ!¡2™ÜRìŠ+âV'²¥(9y]BB¼^¯OMMÏÈx×lwÞªÜÜCéé)“”´ÆRwš'úŒ±eËj©õ"…¢V(tå6¸ZG:PyJ¹a{ÈÒ!Ö‹ô{pÍ”57šnücû?jêkˆ¨—¸×ö™Ûõ¬~æ‡3/+/£=yçIJu 7ÒÒ6ÄÆÎ0Y¬ÈJ‘u öËÊÊÐÙ`‹ .˜›¤›&qß{|ßÿ&Ix*aÞ'ózxô˜9w鮥DôjÄ«Ûò· Á¬Çg­ü¿•&¿A¥R åÀ!ç`vt½ÓÃÃ}åÊ„´´mI¥¦Q§ÓI¥K"bY–ˆòóó#""ÃÃÃÑ÷ЦSM§èüM?ëµÈ×Vÿw5·=P2ðô¥ÓF›ÆEÂüÃR÷¦êYýì'f¯$Ó¼ÓÍÍ '(pT\>fwy'eff h³(:zÜÎÙZ­6**ÒR cL:ùݹNª½nz?/U£êâo¹‡òzùƒ~êY½ÈYÄE¼ºz5ê¹ ´$ܵì%ïd/ggç#†eem3D¸aì­‹–-›ED……{,E:Ð¥CÜ\Üf„ÏX÷üºÞÁ¤tñøÅ‰_'®Þ·zëË[sÊrtzšÀîòN“™’*+«|}½Í‘T*©ª*±èXª&ÕÆ¼3›iê;´©¹éÒÕK†Èá3‡ƒƒœ»8ì;’‹Ôý^çêäÚEÐ¥î÷:´$ ï´/qqóòòv£{À®L9ñ|齟Ï=üÜž“¦ß´pCˆ + ¹‡ùgóÇŽwêâTPñC€¼ÓÎÜÔ¸u€Û­<¥\׬;£8³0k¡!Âd–º'Õdçf}ó¡Ÿ-ݽ”‹l=¼õ“W>!¢—þýw€E&“(ùõô«U¶Œ. O ·¾3Õý^7nÍ84#Üåh€›õÎäwflŸv¸)¸Þ pÓZi€6áz' ïä‹a¼ ?&E2™Üß?$ T&“Û»bG÷w¶žž“œ¼.!!^¯×§¦¦gd¼kcwÞœÜÜCéé)“”´ÆöØ;º¿S(ô™0áE¹\aW(j…BW…¢ÖöØ;ZŸ½¡áFZ򠯯µXÃ0†í²²2t6ØâÂ… <רR© °~&8&ãÌŽ¾g÷ðp_¹2!-m£I\*•h4:N*•Ø!"–e‰(???"""000<<}m:ÕtŠÎóZ£››NPਸ|ÌîòN"ÊÌÌ `ŒŽ·sg¶V«ŠŠ´=vÅ^òN†ñrvv1bXVÖ6C„á¾lÙü°°("*,ÜÃÙǰxqim­†Ï»=tÍàÈy§É$J••U¾¾ÞܶT*©ª*1.µ%Ž¡¢âºL¦â³ÆáCthvGÎ;MÄÅÍËËÛîé@ggŸÙø ϕŸW?4>ØoÞÙQCÚÀN`}vàƒšlÔtñ¢"5•çJÙæÉhyäpwÑþúë¯ï¿Ïw­›„–p øžì)ïtrêÅm¼ð«NN½öîݶ€;($¤giéøÖñ#îùöÛ'²³Ã¥R‰í{äÈØÿþ÷‰G½—‹”–Ž7ü %ì.ïìÖ­+…„Œ›9óEæÒ”)³:üP(`¯Öq†ñ2üp™Lîï*“É-EÀ‘Ï\fáÂûÍ-ZtÿoœX¿þÌìÙþ\D*=ñÄ¥K|ë­¡\däÈ}#GÎÏϯEcØ]Þ¹uëZ'§^Ó¦=æääÔÔ¤íØãÐëõññoY*eÙ:î‡{˜œ¼.!!~Ñ¢¹©©é–"`£Ð¡å)å­ãã†+H(øþíïÇ ÃEÊSÊ ?\dxŸáÍümü{þy¿ï¾«3[4`@×òreQQÝãK¸HzúY­VêÔ5±ØÅxÏ9süׯ?ƒÆà­ãŠbb&ÄÄL0ùDyùY[vÎÍ=”žž"0IIk,EÀ¦;Á’¨%f‹þõ÷ÅnŽ0‚í3¶(?@DC–!"ß{|ßÿ&·Ïk‘¯ßŒf¼—•—uͼ®Ž#vwvíÔ&»LœØ{Ú´¢©SͬJPS£1â–e…Â.ÆñÉ“ûìÚuÁðpàÀ®jµŽç•wÞy¿ývuûöϾÿ>wíÚ ³;…>cÇFlÙ²ÚÇGJD E­PèÊmp;´Ž€-¦Žšzôç£$Z]W_ï&êV¯ª?_wÞ8þZäk«ÿ»šÛžþát³×JÁv3>œQ}¥šÏ玙;û‰ÙºÑæÌñß±ãœJÕl¶týú³›6çæÖ47ë Áàà¡¡^ œ0DÞxcpròi¼ì+ï4Œ(jnnîÒ¥ ·áììÜ—<—/_•𺇇»ÙR–­kh¸‘–¶!6vÆM­cÄ0Œa»¬¬ì.ïéK¿_2‰xºyNzpÒs[ž{9ìåÖû¯Í]ûÑÌN_:ÿY¼!èßË_Õ¨ºøÛE+-..¾è~3+Ôj5Ï5VWW´ï¹‚Š ¡¹x·1cåå}âZ²=–ýóÍÀ0D$ ïûäϧžb\] û[z:G£ÑýåÊeLLŸ˜˜>ÉÉɨ´tüÈ‘9-ÔŽõ­³³`øðî\¤o_÷_ì·paissËñ "njÒËåæ/v*•Jž;E¥Rµ»SìœqÖvÞ©Ó]&¢ñ㧬[·2 ` 8PбãÙ·lÙ±eËŽ_œMD ãe¸ÓÀÃÃ}åÊ„´´ÜC©T¢Ñ4êt:©Tb)BD,ËQ~~~DDD```xxøÝÜëgg黿DæEÎÛV°MÕdþOoÄàˆ™Ûg>ÐûçCŸÏ8ØrzñøÅ‰_'Ú^ipp0Ög·NtBD7x­ÑÏϯݟ…îî?™ÉF}Þ{Ïü? CD®÷Ý×gÝ:.ÒëÍ7¾ûîÜäɶ<# ‰þrC¹!Ñltþñ+™éÓû=Úr&Y¶lè;ïœÖjõF™kßœ‹cÅb1ÕóÚ)nnnwù kt ÂÖqE‡Q*¯ëõz½^ï½^›6}Ø¡ôç°¡ÖI''33+  åëàèèq;wföÙ—QQ‘–"Ц)!SÒbÓ¸/Ê[]>nè¸/þøŸ¢ÿÌ o™»`¨ïЦæ¦KW/¡éÀX¯øxen®•|V®¼¸p!·}OLÌ•;nêé62̈TZ:þ‡ž0 ëÖ­•\$(¨ÇW_…Ïš4j”WQQú€g¶ÞßYZz(*ê9¹ü2uï.Þ¹óß·ûÈ >ÆËÙÙyĈaYYÛþ¸z1?,,Šˆ ÷XŠÜ”k_}¥¿ÁëE'·‘#E÷ßgûž'Ä%†mƒëêëú=HD×n\ã"Ï=üÜž“{𙿜Azôè9}úO?ÜkÁóoõÐ744ž;Ç=úû÷^³æžçžû%.îê矷ùtë ;ûöu¯­Õ˜[ïfy}`¿yçý÷úå—ÒÛ}4†‹••U¾¾Þ&A©TRUUb=rS.ÆÇ7]äõ6DßU«îxÞi–!MÙ›’þBz³¾yٗ˸¢°a©{RMv¶”¶Â]ÂgåJEjª¾¡ÁÒ½×®­~å•? uÛ·×mßÞ?+ëê矷ùt%&>0{öèÉ;y7//o··{Ù¯û><ÇgÂË–Š Y£_O¿ZeË„ßþïÛoÿ÷­ñná©á–žw­{gϾwöìû>ù„ˆ‚YÖdl{p°¾±±ñüŸS"4_»ÖPTDDÎ^^m>ýfÎÇÐŽ“wfgïix(:| Oc75n½3*Uxì>\Ég}†)ɧ}Þ™üÎŒí3ð©Û2E³Yã½sæüöñÇÆ‘ú½{='LÐÖÖªNŸnóép—æS¦üC¥ºèââ‚&s`/¼ÿÁN„ý`ú­¯(ãJ]\ÓbÓÂÂ]œ\¸Èð>ÃãÇÆ¿üÁËwêà I¤øÉ'/¾þºq‘<1qP^^±øÜÓO£—wš·fÍ¿6múð7f£Én7+ëHQ«Ûf„Ï8yñ¤ñ4«wd)ÃÕJ¡¿Ó¥–I~”JMvkºpáþþVžŽüÎÆýÞxcùâÅÿrrêÅý¸¸x£ínn)w7tÜW'¾2ŽLÿpú<ø~;vTDb:3¸…¼S§»lüs[oqëHm>°ÙÒ'“Nn~i³¤[Ë ~=ý_tâ_'þöÀßìáøÏŒ¥9{ýíÏ;ïNÝÆŒ1^èÏJ‘GhhÀáÃÆ;´ŽØÂú:RC–•<ê¬âìºç[Vb&»${æö™‹þ¶­öÌÖû;Oœ({úé—ŠZ"òñ‘þ÷¿Y÷ß?¨cåÀ‚ÈÈÉ­gë”Éä£GOyy»{÷ö±1Ò9¹ååûZù$'w}üqë¸)Êo¿m8z”Ͻ½ï}çï`ž2…[JŠ,̪jRmÌÛ8ó±–ù%®«¯Ÿ¼p’ˆº»wÇÛ!ï ŸpôhÎÜODÅÅ'ƒ‚ƨT²<½^ÿ–Ù¢ääu ñz½>55=#ã]#·Ž[¾O4dˆ-E£G›\m±EHHÏ-[j½¼Jiéx½ž=uª~óæŠ'®’Ѫ€ôÇr,±±}çÍÔРKI9}äȯý­yýàÁË«WóY£ÛÈ‘öwZ_GŠ3qäÄóu-“bTD Žø­á·ŸkÆ !ï$¢ÆÆF@Àåˆ~ï½·õÉ'Ÿ(/7s[Xnî¡ôô€IJZc{äVÛÅòò}·¸²Ÿ³p¡ùEŒ¸Ì²o_÷?õØcûƒR©è‰' ê¹jÕðqãáÍ}³®Q·ôt¾oLÔëmúçă–§”ëšuggfµ¬x¾ùÀæf|ÐÕµë¼Oæv&¬#7ï,)90n\ìß³÷úùçŽ\’î·ß®nßþÙ÷ßç®]›ÑºT¡¨ ]¹ Û#·ÈÊò}µ²_kÏ?ï÷Ýwuýû{XÚÁÛ[tüøK¥\ÎtêÔ5±Ó¬¶‡’Ü33Ïó\iÏg-æfבjJÖÔ׌_;Þì:eÞ0ðÂ…“·é –/_•𺇇{ÇþZÆhFÀ²²2+{ŠM&´²|_‡¬ìW¯TyGÄb—‰{O›V4uj?³O)-_YyÝxêï¿òûﯤ¤œþõW!8yrŸ]».´~ºZ­æÿíU\\|ѽ ß;ËdÎü­Z­&!ßM¤ÑhÚܧcבª®®.((hßs¼·×D]xýD©äù5ªTªvw €3ÎÁìb}ö-[vlÙ²ãÅgÃx™ -’J%M£N§“J%¶GˆˆeY"ÊÏψˆ ·Ø"®®M& “ååû:de?O±˜‰Ì™ã¿cÇ9•ªÙÒSFŽÜí»zõÈ™3¿çº¹uyùåþii# ‹S÷ õZ°à„™ÜZ$â¿gƒƒƒûyõkßse99—ù=Z‘HD,ßM$ ©±}:v)???+Ÿën¸»ÿDw¢‰HËgb±˜êy}nnníî;Ç w±5ïtrê¥Ó]¶ôð–¨%ÑltQtô¸;³µZmTT¤í‘Û’EYN4¹!DÆ;´ŽXÓ'&¦Oròp"*-ßzhíÙsiùòaF×Hš32*ø¡eÖÆ¾}Ý_|±ßÂ…¥ÍÍ,Þå`olÍ;]\œ¿ù&wüø1DôÍ7¹..·ý+PCºlÙü°°("*,ÜÃÙé(fWÿ3)"s«üÝì¥PC¢i)é$¢èhßêêK‘eˆ¾óÎi­V·5tâ¼ó»ïþýBmmùøô*-½-Ã¥ ;++«|}[–â”J%UU%Æ»Ùépwdõ?CÊÍšôË/ o¿]f(Ò騳g•K–´ÜwÔ㫯ÂM²XÇÓm̘Ayy­ÓzÐPß””³†H0˲ÍÍ7Ž»ôÖ[¿˜€ÝåÇ•ÉÊx;¬¸¸yyy»íª¥ÎŒÅOE†”±o_÷ÚZ¥<Ò–ˆ²<™ë‰ú¹ÜTèïÿ?”zzšÆíó°ŠŠö ¼Ëû&1ñãÑë@ÌØo¶¨bôh³qW?¿ëXXÒÓx–~‰Døõ×áÙÙáIË ïÒÒñ†.òÀÝÿýïtÙ~½óë¯÷MŸþúõë¿sÉ:v\˜e¥-oÖ›Ÿ±?˜eUeeÆ7H´Ž´ñŸ™åÉügͰ}{•@ÀLŸ> 5õ4ýqÉÙÇÇmÁ‚ÁÜ>ÿü§PPôÙ~½sÊ”YÕÕ¥†‡<Œ+0ÑŽû‹¦výú»w[‰XÇMæo¶è‘G¼rskrrä>ú—©XçÌñ_¿þ ·ýÊ+ÇÑq7—wº¹¹ÕÔ\&¢¦¦¦ãÇOôéã‹¶žqÓõ&¨²ñYW23=BC­G,á&óߺµÒliϞ¦&½V«ïÙóÏÉÔìªVëd2ú À„­ß³_ºtjäÈ'‡‡_pðð³gñ0ð­}3ö÷œ6Msö¬õˆ%mNæßÚÏ—%Ú IDATo NN>ÎhÞéæ&B® vȃZšº_}æÌ/Ó¦YŠXg}2ÿ+W4..''æÊ•–i† 75éår\ìè`ª&Õä¹Òá}†»¹¸¡ñî@Þy»1ŒW—.]BCƒ’“—†‡?bRdØæ&ø”Éä£GOyy»{÷ö1fv2[¦îïØÉü }òIo''Á‘#uä©}sräè €'¿&Ÿµ}Ï•~ýú×%ÑøÈÖû;œzq/¼ðª“S¯½{÷wìq°lNwùÃÓ'Nœj¶”ûá&'¯KHˆ_´hnjjº¥Ü îÔdþÜÆœ›5k@\Ü}~xŽ‹ŒåUTT×zg³Ó0Üml½ÞÙ­[W" ·jÕòÌÌMžžý.tøÑTW_3æ±6wËÍ=”žž"0IIk,Eànpg'ó¿r¥1::ßx·Èȃ–ž¶æ[·®urêµaCJDD55i;üPÆ+0pH^Þ—­‹„BŸ±c#¶lYíã#%"…¢V(tå6¸ZGnLæpÛóΘ˜ 11 ›šj:üPX¶.33kò丂‚oLâ 7ÒÒ6ÄÆÎ(*º‰«GŒÑÍ|eeÖù562ü¶{½RIäÅgjµšÿ·WqqñE÷‹í{®³LÆó$±jµš„mìÓá“ùk4ž;¥ººº ½kÓ **„¼¿‹4 Q>kT*•<¿F•JÕîN¹KÔ4Ôð_iIIIG :—ß›~¿Þx×T²‹“ÄMbeãÌÉ®kÚ´)³f½Ñ:îáá¾reBZÚFî¡T*Ñhu:T*±!"–e‰(???"""000<<Üb‹¸º6ñûJ=ÅbRðZ£H$â¿Cƒƒƒûyõkßse99<¯ˆ%‰ˆå»‰„B!5òZ£ŸŸŸ•Ï‚u7ÜÝ¢;ÑD¤å³F±XLõ¼¾F77·vwÊ]âçÚŸ©ˆïJƒ‚‚0®:Œƒ›¿ÛÌ럕ž~9oäXÙ5šr»í¼ÓÅÅ»©©Æ0®¨å²‡@p;.yfff h³(:zÜÎÙZ­6**ÒRìJÛy'—_ÞîÕØ¹É’öÏÌÜdˆpØÆËÙÙyĈaYYÛ¸¢eËæ‡…EQaáKplå)åÍú沋eò6ÿRl\äêäš›îâä2déngC)!¢Ð¡LÿÀðî|ÞÉÃIœÊÊ*__o³ED$•JªªJ¬GÀ±qù¢_O¿¬9Y'=l\4#|ÆÉ‹'ã?‹o½¿€,‰Z‚f°¯¼Óäö–ëíùžÝ .n^^ÞntXçÝÝûûsß›Ç 7õßS­?qꨩG>:@2mÀ›¶ç×é.·þ¹­I'í ÀÝÜ`MyJùÂ'&ý_’Iܯ§ß¢ñ‹NüëÄßø›!x2éäæ—6KºIˆÈÓÍsÒƒ“6ØŒ6°¯¼À> Y:$³(sýóëMâ Ãd—dÏÜ>sÑßö•<ê¬âìºç×ѼÈyÛ ¶©šThCûÊ;œzµþqqñFÛÀ÷¥ÿ7¼Ïp“àuõõ“Nž¼p²»{wCPÕ¤Ú˜·q¨ÏP"š2%-6ld<äÀ!•§”ŸJ>õñ?>îܺ4t@¨ñ§àA¿/9¼÷½ÞžÞ–öi·¶ïï¼Ý#ÙàVü2}ºVÁë„À?Í<®òã³Fá½u–Š&Žœx¾î¼I° ¢ bpÄo ¿ý\û³Ù cŒÊSÊ1žž•Ax­Ø%<•0ï“y=í`é_¬‰#'®~ý´mÓ A³ìVï[½õå­9e9:½Ž:zž}}Ï^]}q̘ÇL‚¹¹‡ÒÓS&)ií¸«¼ðþ h°»‡Þ9][«æ³Æ.÷ÿn©èÿJÿ/éï™tlJÈnŒݦrøÌá Ä ç.Î#ûŽ´´ÏmÌ;¹oÀM‚·cÞx†ñ ’—÷¥I\¡¨ ]¹ Û#wÖ‰W««ø¬q¸O“¥¢Öƒð, °0‚YÏ*¬,¤Ž„×vÞY]]úòËóôzýŽﻯïík)–­ËÌÌš<9® à¼S:„•AxfwnÖ7úéÐÒÝK;üHÚÎ;ûöí}øð×*•zõêMë׿ÿÈ#Á[¶¬îÛ·÷íh—iӦ̚õ†IP*•h4:N*•Ø!"†a ÛeeeVê562ü¾ê•J"/>kT«Õü¿Ñ‹‹‹/º_lßse2g~V­V“ï&Òh4<×X]]]PPоç **xo!®‰ºðY£R©äù5ªTªvw ‰4žÏ`Êúz" ¿Ï;0Á{IIIG ÜÒ§›ï?¾fÏ`VáµÞáfá©Õjëg0ãÌÖû;ÝÜD+V,Z±bÑ;ï¬ïß?ø6 3ÊÌÌ 0¥=nçÎl­Vi{„ˆX–%¢üüüˆˆˆÀÀÀððp‹-âêÚÄïÛÂS,&^§Û#‘HÄÿç-88¸ŸW¿ö=W–“Ãó̱"‘ˆX¾›H(R#¯5úùùYù,XwÃÝý'ºMDZ>k‹ÅTÏëktsskw§Ñ)¡°õ›(˜eÙææÇŽ]zë­ßÿú'áÞ9s|W­jV*/Ìž]¿w¯ÙÈ=11}6lˆD¿LŸ~-;Û´‰<=©Õç³´t¼^Ïž:U¿ysʼnW‹bcûΛ7¨¡A—’rúÈ‘_ÍFJKÿ~>rä¾VO7þÏ`AAA%X±nIzz!¯ß³‹Åbjë玄'‰¬ŸÁ¸|ìæòÎë×ë­”íÛ?{üñQ••Ç;¼™Æ‹ˆöÏÌÜdˆpƒÜ—-›ED……{¸"["w³b†!"¡¿ÿý?üPêéi\äêçw²gOþYY?úø˜ømÛVălwšÅ%‹}ûºüñ¨ÇÛo\$•ŠžxâÀСž«V 7îÙ÷t· £ûn«;8¯í¼óüù O?=ÕÛ»WFÆê RoÓqp)¦Aee•¯¯÷',IUUÉ_OamGÀÕÏïú&AÙâÅDÔpì˜S–"ºkלºw×ýö›æìÙ›ªÑÛ[tüø“`zúY":uêšXìb)™3Çýú3è8GÕvÞéïBD?ýTÉmpnÇxvcqqóòòv£{Ú-˜eUee‘‘fK½^}õ׌ K‘K‹>|£¸øÜäɶ×XZ:¾²òúìÙ?˜-<¹Ï®]¬DìªVëd2úàîÍ;ïÈúìEEûÐ7·¢˜azN›6`÷î³­n½ê!;öܤI–"ž&TDFº‡„Ü;wnÍ¿þec#Gö]½zäÌ™¦kñ÷ õZ°à„•Èo NN>ŽƒÛDsöìÏ'ò\)ëŸaö?4K7C?ð@÷¹sýÿñ?oh”H„[·†èõ4{öñÚZ ™»=Ú¡òN褮dfúmÛfúûK,87i«ÓYŠÜs~êÔ†cÇ‚4ÛóN"Ú³çÒòåÃL‚}ûº¿øb¿… K››YK‘!CÄMMz¹;ávÑk4šÊJ¾kÈšý,Ü ýÏúõ0ŽÌš5`ûö*€™>}@jêi2w{t'"ÀÀQõœ6­õ š~[·ÊÞxƒmj²Ñ]»ÖõÑG»>ú¨¶®î¦jŒŽöm=Kö²eC×­;£Õê­DbbúæäÈÑep÷0{3ô+¯˜Ý~ä¯ÜÜšœù£¶L¿˜ž~V«Õ·¾=ºSÀõN̲D¤>sæ—iÓ n{×ÇVQÁ-E.¾öÚ€ìlV§û%.ÎÆ¹‰~ù¥áí·Ë îºNPP¯¾jù®ßRdÔ(¯Õ«BÇÁ]ÂúÍÐùï±§°©IÏmÇ[ß0¼îŒbæ/sÉ ýý›.]2[d6ru×®«»vÝT&“nöíëÎÝ‹Fææãl‰Œ<ˆ^ƒ»‡•›¡múDzÕíѾgp|ývì°4°ý6IL|À–k9w­={.=ð@÷6w»rEãâ"psëråŠÆðOÝ‹/ö[´èÏÛ£‘wÞ´ŒŒíݺõëÝ;pïÞý&E ãeøá"2™Üß?$ T&“[Š€Á™Q£nv&Î[w¬õž``öfèÖ }òIï'Ÿô9r¤åfëÖ·Gw"öò={uµìÊ•ŠãÇK§L™%—ÿϤÔdVùääu ñz½>55=#ã]³;dåfh®Èðˆ>øàÜŽ¡D4cFË7ò­oFÞyÓÞ}w…†ýöÛÕ6wÎÍ=”žž"0IIk,E¬»wÎßU«š•Ê ³g×ïÝk\tOLLŸ "Ñ/Ó§s«Å­3ÎÝÝ:b‹›ºúÊ•Æèè|+OGÞÙ~ï¿ÿÑœ9Ó[Ç…BŸ±c#¶lYíã#%"…¢V(tå6¸ZG¬sõó;Ù³§GHHÿ¬¬}|Œ‹ü¶m+ b‚Ary'Ù6,ïfÝU7CÛѸ¢Ã‡îߟÏ]ø4ƲuW®T‰OtÙâÅlSSñcN=z˜é®]sêÞÕén÷½ÑwÕÍÐör½³²²jíÚŒì윜Ì’‡‡ûÊ• ii¹‡R©D£iÔétR©ÄR„ˆ£AÊÊʬÔ.jldø}½õJ%‘Ÿ5ªÕjþ»µ¸¸ø¢ûÅö=×Y&sæ÷hÕj5 ùn"FÃsÕÕÕíü?µ¢‚÷⚨ Ÿ5*•Jž_£J¥jw§‘H£áù ¦¬¯'’ðûñ¼ë•””ÔxÔ 3s‚sç,Á¼^}õ× Ó-/-^pøðââs“'‚Arÿþ ³g7Éå–"­þø:øL­V[?ƒç`ö’w¾òÊ‚­[׺¸Xœy?33+ `·=nçÎl­Vi)BD,ËQ~~~DDD```x«ŠÿlW×&~_¯§XL ^k‰Düwkppp?¯~íü4'ç2ñÞD¼OI! ©‘×ýüü¬|¬»áîÎÿ¼ÞB¡HËgb±˜êy}nnníî":%òû&"±§']æùãéÆÿ,((h d Ò5‡¡‹ËÍÅ»EDˆÇŽ=7i’é_ê *"#ÝCBî;—[-¶˜aÒ7ßìÿÅgF21ó—å¯)†X,&%ÏO‘õ3kt¬½äùùEƒ=üÇñÕÃx6œGŒ–•Õ²Êð²eó∨°p¥@ÿÙúûK,87i«Ó™Ýs~êÔ†cÇ‚4.ï$"}Cƒ|ùré›ovk+ì%ï4™)©²²Ê××ÛlI¥’ªªëëü¶n­~å¶ÉÌ%Iݵk]}”ˆ´uÉCzN›frÇgëØ{Þi".n^^ÞntÜ>]|XE·m˜‰Û¸øÚk²³Yî—¸8n‡`–eµZÕÉ“US¦XŠ@§Ì;‹Šö¡oà¶2™Ièïßté·}u×®«»vYÙ™:b¥» Ög "ê·cGEd$ÚáöqB‘Ù1éÐp½wòN€Î—wfdlïÖ­_ïÞ{÷î7)’Éäþþ!¡2™ÜöØ{WT]-»r¥âøñÒ)SfÉåÿ3.JN^—¯×ëSSÓ32Þµ1È;Íx÷ÝDôÛoWMŠrs¥§§LRÒÛ#€¼Ó¢÷ßÿhΜé&A…¢V(tå6lòNó>º~vöGèä·KeeÕÚµÙÙ99™’T*Ñhu:T*±=BDŒÑêUeeeVj56ò¼ÐU½RIäÅgjµšÿn-..¾è~±}Ïu–Éœù=ZµZMB¾›H£Ñð\cuuuAAAûž+¨¨à½…¸&êÂgJ¥’çרR©ÚÝ)D$Òhx>ƒ)ëë‰$ü~f_yg~~Ñ Aÿq|uDÄ0^ÜÆ²eó∨°p·ƒ-°+ö’wr)¦Aee•¯¯7·-•JªªJŒKm‰€]±ÓõŠââæååíF÷8 'û<¬¢¢}èG‚õÙy' ï@Þ È;yçrìXqDÄÓf‹ÆËðÃEd2¹¿H@@¨L&·»b/ó(½õVj~~‘¥R“Yå““×%$ÄëõúÔÔôŒŒwÍFy§f.g¶)7÷PzzŠ@À$%­±»Ò9îï }&LxQ.WpŠZ¡ÐÕÅÅE¡¨µä7‡eë®\© ;ÐI9uŠ£ôðp_¹2!-m#÷P*•h4:N*•XŠÃ0†í²²2+¿_ÔØÈðûŠê•J"/>kT«Õüw\qqñE÷‹í{®³LæÌïѪÕjòÝD†ç««« ÚùjEï-Ä5Q>kT*•<¿F•JÕîN!"‘FÃóLY_O$á÷ã©âÿ VRRRãQƒDÁaÎãÿ ¦V«þ ¦V«­ŸÁŒs0§ÎòvÉÌÌ ÀmGGÛ¹3[«ÕFEEZŠ˲D”ŸŸn±E\]›ø}9žb1)x­Q$ñßkÁÁÁý¼úµï¹²œœËÄ{±|7‘P(¤F^kôóó³òY°î†»ûOt'šˆ´|Ö(‹©ž××èææÖîN!¢SB!¿o"{zÒež?žnüŸÁ‚‚‚J"]s*±¸œ÷JE"]ã5ŋŤäû5Z?ƒqù˜}åÜ "†ñ2 ]7l3Œ—³³óˆò²¶qEË–Í ‹"¢ÂÂ=–"`Wì%ï4™)©²²Ê××ÛlI¥’ªªë°+v:®(.n^^Þnt€Ã°Óû;‹Šö¡o Ög䀼y' ïäwʱcÅO›-’Éäþþ!¡2™ÜöØ{™Gé­·Róó‹Ì%'¯KHˆ×ëõ©©éïÚäf<˜Í-•ÙZnî¡ôô€IJZc{wÞ…¢V(tå6l€]Á¸"àC'¸Þ)•J4šFN'•JlÃ0†í²²2+Uˆ~_T½RIäÅgjµšÿ¾+..¾è~±}Ïu–Éœù=ZµZMB¾›H£Ñð\cuuuAAA;ÿO­¨à½…¸&êÂgJ¥’çרR©ÚÝ)D$Òhx>ƒ)ëë‰$ü~f_y'7¨ˆa¼X¶Îá¶—-›ED……{¸"["`Wì%ï4¤›œÊÊ*__on[*•TU•—Ú»b§ãŠââæååíF÷8 ;½¿³¨húÀ‘`%@Þ È;wòN@Þi‡ÆËðÃEd2¹¿H@@¨L&·»âÔ)ŽÒdVùääu ñz½>55=#ã]³@Þy«rs¥§§LRÒK°+ãþN¡Ðg„år÷P¡¨ ]]\\ŠZK@ÞysX¶îÊ•ÊÀÀ!±±3ÐaTçøžÝÃÃ}åÊ„´´ÜC©T¢Ñ4êt:©Tb)BD öËÊʬü~Qc#Ãï+ªW*‰¼ø¬Q­VóßqÅÅÅÝ/¶ï¹Î2™3¿G«V«IÈwi4žk¬®®.((hçÿ©¼·×D]ø¬Q©TòüU*U»;…ˆD Ïg0e}=‘„ß§Šÿ3XIIIG +²+²ë5õ|Ö8\2|d¯‘í<ƒ;ÇÿL­V;üL­V[?ƒç`æþÎÌ̬€€Üvtô¸;³µZmTT¤¥±,KDùùùááá[ÄÕµ‰ß—ã)“‚×E"ÿ½ÜÏ«_ûž+ËɹL¼7Ëw …BjäµF???+Ÿën¸»ÿDw¢‰HËgb±˜xýKJnnníî":%òû&"±§']æùãéÆÿ,((h d ’K+Öž\[õk¯rP»?,*±¸œ÷&‰Dt×C,“’ï×h½S¸|¬Óä ãåìì½&êýÖ[ŠÔTF &$\˜3‡ˆz½ùfÃwß›<¹C*äòȾ}Ý?þxÔcí'¢åˇ½ðÂQ€yÿý.ï´%Ýhÿ»MÀ¿^ññÊÜ\ãˆøÉ'¯îÜyåã=£¢¸È=11WvìèØz½½EÇ·\‹½~]Û­›³NÇVW7 Gy'€rêÑ£çôéòÄDã ³Tª×hئ&g©”‹ýý{¯Yó JuϳÏvH½¥¥ã_= %å4÷0=ýì¿ÿýðŠÖ,ùѰÏ÷ß?ùÞ{A÷Þ+D7òN€NÏgåJEjª¾¡­«ŒAÝöí‘‘½×tÌ*Ð#GîûôÓêÕ«[¦À ¿wöìòó2¥¯a‡'žÈ«¬¼ž–6¢Cj ZžòçüEú=xxÉá½oìõöôæ"Ï=üÜ+~8ôæ¡ð€p¼1w@»wöìû>ù$˜e‰(øaáZ…B  <<´Š–ž›¯]k(*j(*röê°¥Föì¹ôÀݹí1c¤§N]ûì³_ââúvP©š32*‡ ñì€$ƒ,‰ZbIx*aÞ'óVï[=7r.ñîî=*yÔ¢Ï%>ˆ7†Ãø"¾§³¬a»~Ïž{ž{Žqv®ÏÉi‰ìÝë9a‚¶¶VuútGUík¸›ó÷ßµ#FÜCD×þ:·¹ñ>·bꨩG>:@2À(xúÒi#H‹Mã"kÿ»–ˆ~¼ø£§›'ÞÈ;;™L>zô$@—·»woô+t:5ï¼3øèQ":ûØc\Dž˜8(/¯‹X|îé§oý÷ss$ýòKÃÛo·¬[øî»?­];²¹™]±â”aŽ={V¹dÉÉ[¬ÎÓÍsÒƒ“žÛòÜËa/‚òzùƒ~êY½Èù/«è=òlÖñ,¼wvÉÉëâõz}jjzFÆ»èWèŒgåÔ*§ú÷7.mºpáþþUWë ’òòyy ëû´Û¼ÈyÛ ¶©šTÆÁÕûVo}ykNYŽN¯3ºï¡QG½öÉkx? ïìrs¥§§LRÒt*À7%dÊ”)Ü÷éå)åC–!¢Ãg%9wqÙ·el“_O¿—}ùõO^oÖ7£Ñwv E­PèÊm Sî8.Ñ4N:9F0ëñY…•…ÜÃħ¿NÔ6kÑbwfÅŠ‰?¬3rqñnjª1Þ0Ø»wottô{hþàÓ?þ8þüüüüÇ;ÈõN©T¢Ñ4êt:©TògNmtÓL||<:àr¼3:zÜÎÙZ­6**ÒdY–ˆd2ÙW_}5`Àwwwx¥?þx~~>Þ¸è@¿ S‚~éwʇÈIDATnܸADÇ?|ø°ƒ|Ï®PÔ†…EQaá©¿†aÿ˜aÐ)€~A§:ýÒY$&&:Î÷ìUU%x›Ø-¬“ÙÉà¿Rt  _þ¿½û‹ªÎ8þa˜`– ¦¥tFÔ2¼“k†þX/WcsÝK+k%ˆ?SC2Ýe72Ë×®²7ëyìña·}¢ÄŸ-l,)µ>ú˜×UpUR°üÁòK¤‘Æq†ûDZ‰ÐðÇp¾#ï×3ÌŒãpø|ù|Ïç|¿ç|…v¡î¨;@݉î(,Üf4†ët}•—î'Š^o"*ê2/H2´ B݉k“˜8ïôéòˆþÄDB·-@¦Ð. Q¨;}Á`¨¯?#„p8ûö• П˜BBî°Ù.v|§µõ›>}n'2@݉kP[{xòäZ­6(hPzú²ÊÊRb"!f©ÔµzõòÑ£'ÖÕ5¸\.—ËUW×pÿý?ÍÊZFdÈÐ.4Š t´¨¯0©5åÇ,•ºfÎL¼xÑ{îÜy!DHÈ+W¾ôÔSÓˆ ™Ú…F¡î€›,5uVjê,âbžÝgL›–ªÓõu?˜ ‘í)´ h”+a¼ÓgäçÙíµ:M&5f©Ô¥Ñ„úùùy^kµ´ ™Ú…F‘ã>£¸xÓ’%+ˆƒDm¬ )ŸÓ§ËcbF;òøñ}NçåÁ®¨;qmöìù¿µkßbž]AA?¢ú”ÍÀa»vnßþ— ò‚ƒÇÅ%VW×ÕД‡Fê~B&Ûñ³r*WqñGÄ„d¡î„B¼úêÚÖÖj†pä±fÍÿèt}ÛÚÚ8ïV6C`fæsÍÍ'ÆŽ5xp4Q—ÒeýüçãûTyþ÷¿ÿ5-m6‘‘²ºí¨QçÎM±Ûkç’…ºB±råK‹-%ò˜93Ñé<ãïïï>àx@---z!(h`iéþãÇ÷ìܹçüùe]Õ»î ]»6‡˜ÈàÍ7_ÓéúΜùäÃÿ§N§s8¾%&$‹Wq‘ŠÏÈÈX.„øóŸ×_>bàR Õ“G×—BS6'OVOž<Ýdê›ýêo¬" ò(/ßùè£Iuug„!!wlÙògb"ƒ„„ø„„x÷K:4’…º—9g‚TÜçwÒ4ò2d”âèÑãÊÒä1tèœ:UN€^ž,ÔÀuêx~'%‡g€/*,Ü6gÎâ–– Jîp oãüNŸQVv(,ìAåâ•G=ZELÔÅù=˜¯KLœwúô÷Ckz½?1!Y¨;!„ãÆÅ¿ÿþ&‡£Þá¨ÏË{롇!&2pšvû¥ìì·Íæˆ‰ê ·áîqhÖº¢Õ †úú3B‡Ã±o_Ù€ý‰ ÉB݉Ë.]º¤ÕjµZ­Ëå"ò¨¨8f±Œ ì_Vv¨¼|'QC8ô`è¦ÚÚÓ'ÏÐjµAAƒÒÓ—UV–’Å«8¿Óg8°câÄ© B³¹ïçŸÿƒ˜¨«¡¡1#cy~þÖAƒ®6,&'g a‘AÇ!œƒ0„C†+'K µ&ÉB݉.X,áÕÕ‰ƒçüNI(³5qîÜ»½61q1Q=Y¦L™“‘±œd‘Ä‚Ïmßþ‡£þoË>=€H…ì Yzº—¦™}⨔ HëÍ7_Óéú¾ñÆÊ‡þO!„Ãñ-1!YÐÑùó-11£…AA?Úºu;‘Šr ËÂ…s ÉB݉j<.3’@BB|BB¼û%³T€???îò¾Æf»H@¤òâ‹+…¿þõKÊKÎï$Y¨;à†É8B“¡E<žSßH‚Ô Yzçw7¤°p›Ñîî)<Ö¿€*ôzÿ¢¢§Óét: й?»ê• ׯ$Ëå½$Í ÜˆÄÄygÏVá˜¨îÓO·Oš4­±±Ia6÷-/ßIL€®‹ÖUEÏb¼Ó—OKó©Ï`0ÔןB8Ž}ûÊ èOLT1¬¦ærŸÌS§Ê-–pb¢:fäÔq\mõêåÿüç.bB²x÷P‡ö]•Ê ¶öpdd¬V« QYYJLT§×›ÈÙ03 ¿ùóg&wHêÎޮ˫"¸TBC µ¦lXFÊLù~fààÁ#Ì È³q?×jµëˆ ÉBÝ ×€¥a$ÄÌ€œ¿ Y¨;á)$ä›í¢Áè~§µõå69P]AAñÔ©s;Pâ°+EgÌ $‹àº"Ÿ°zõòÑ£'ÖÕ5¸\.—ËUW×pÿý?ÍÊZFdd˜8ßfû«ÃðEee‡ÂÂTî(;pàˆ£G«ˆ ¨;{»™3ÓÒæDFÆôèkµfÌŸ?ƒÈHrT°vmq —NK¨  X)n”·—ĸqñï¿¿IYü!/ï­‡z„˜,^Å<»oHM•š:‹8H(=}™"#cùå#9æÙ%À¥ÓJIY`³ýK¯× Ù\ºtIY•Ïår ’ÅÛïnwa‘‹ªJhóæ7™Ð;¦N«×›ôzSròÓŸþbB²xã¾ÐH,™\ .–­s?gf@6KxuõAâ@²Pw¾ëÙ%Ä¥ÓRá° Y¨;}I[[[ç #¨o$¡\ÏÎYk|²è0ŸÖÚúMpð`ŽàUœßéüüüýtû¤IÓ›„fsßòòÄDæý HêNø¡K§e1¬¦æqMaá¶9s·´\P¡Î Y¼ \à†p—9©t>š“¡«HLœwút¹û%ç?À룄¸ãÆÅòÉÇBìß𡇱Ùj С”19õ×F0-‰Ž7Y8xð7Y Y¨;qE\o$ î2']¿öïs…LªKÙeÒrâ& $ u'®íê:p`ÇĉS…fs_î2'ǘ—NÝÂM@Ý øî2'!.–k7Óa¼™±gÉÅÅ%nÛö.q Y¼‡‰Zþë$@—”«AŽz‡£þÔ©r‹%œ˜^ýf½Þ1^QR²Ó`{ñÅt"êÎÞîž{";Þ|EyÕíÝû®ï˜1ÿ-„˜0aŠ^o2ÂÞyg ‘:'»;.n"%‰%KVìÚUh·×>ûì<£1¼¸ø#›­fìØ‘D†dñ*Mff¦Õj¥¥eV]]3a”ãÇ÷u|“›L¨.8xð‘#Ÿqq‰AΞ ½-YH{ÐÜ|bݺwM¦az½I¯7õï?|ãÆ|;ÎX’Їpý Ð “…yvß8Ð)(XG€´dÉŠÝ»·ŽõÎ;[ŒÆðää'XÖJýÝLWgžp:ŠÌ{‚@²xñŒföé?P‚@¯Ž\.ט1ÑZ­vö줖– k×fàš0 êN€^×p<æ¾Ã·Æ‘AHÈ6ÛÅŽï´¶~Ó§ÏíDFõLéæ› Y¨;zmtÁé<ÓùÁ‘€ºV¯^>zôĺº—Ëår¹êêî¿ÿ§YYˈ Ð “…ó;ôŠƒÎ&TËÌ™‰/Ú##cÏ;/„ ¹cåÊ—žzj‘Q—2´f0ºßašd¡îÄÕp!½6àRSg¥¦Î"RQ†Ö¶oÿK¿~w !GþãÐ$‹×KÚØçØí—²³ß6›`öP†^›ÙC¾hæÌÄ´´9‘‘±ýúGFÆZ­óçÏ 2ð*Æ;}IEű)SæTU}1gNryùN¢z¯Íì!ðûNrãÐ$ u'ºÐÐИ‘±œ”¢¢¶¶¶Îët:ùùE‘‘±55‡ˆ‰ê½vç^ƒ±¸•„®”ÌóªKZ#$KO×Ö4³ï+ètIIStJÒk3{(·º»ûgªÔ0„ ×¾e°¸ÐMŒCƒº ×Æbq+65v?̽/YH{·–Lò!œ ôÂd¡îpl€ïÊÆ¡%ÈŽ?ýi]pð`&Ôl~àð᣷ÔïH3ôÚ· ·’F*„ðóóëØF4Š´h,XðܱcŸZ,áGVEFÆÚíu·Î.’Öèµo,n%¡v„„§¦ÎRšCi#Euî#4—Ëö Fz÷Ý÷744ÅÄŒÎÎ~Ûf»øÄ¿räzmÀƒÃáˆO1Õ*Çh üñY.—‹È¨}äÜÅ Ð,^?Ú¡™ë“ž¾ ãËàS§Ê àÁh ÏËËÉËË ¸Ma³]ܱc·ÑÞÜ|‚à½-Y›pëcZÝà;N8eÃ84ÉBÝ ÐkÃKÅì¡jš›O¬[÷®É4L¯7éõ¦þý‡oܘÏ`§êŒÆðÔÔYõõÊl{míáY³Æp"C²xóìÀõ÷ÚÌÊf×®Obc›8ñá’’¼Áƒ:y²úÇ?6–––Üwß=G-Z­¶ `q°]‡&YTøif€^û–‘’² ¶öð /ü:&æ—¯¼²´½½);ûÕ1c~Ad$ÄâVêbšdQçw¡9ëîµ§L™3cÆ36ÛE!DPÐyä¿èµÕÕØØd6÷ë×ïîÒÒ{ö !â“’æ ó‘3ãРîèµqC".EŸñx@·Ê]ߎéÜä^š7½×&jéòú!.*êN@/Þý0 ô¾d!íÜ:XÜJ~vû¥ìì·Íæ‡za²Pw¸u°$¡Ì**ŽY,cû—•*/ßI@$- ‡&Y¨;zmt3ø,n%›††ÆéÓÓÌS¦Ì),\ïçç—“³æî»C‰ŒT‡&Y¨;zm\–$”É4Lqöleee©ÅÂØ³t‡&Y¨;zm\W¦Õ¬kn>ápÔ;õ_ýy^^aQ×—_V™ÍýL¦a˘£G«ˆ$‡&Y¨;zmx‹[©èÎ;YYËZ[«‹‹7Ïž½¨­­mÞ¼ß45}EdÔÅ84ÉBÝ Ðk·¬ûî»gß¾¿ý¶!66&22–€¨‹qh’…º ×nq:.)éñššC„B]ŒC“,Ô½6ô(Æ¡AÝ Ðkã¦öt,n\ãРîèµqCXÜ ¨;À»XÜ ¨;À‹XÜ ¨; '°¸Pw@O`q+ î€žÀâV@Ý =ŠÅ­€ºz‹[u'¨;êNPwÔ îu'@Ý êN€ºÔn!_|ñ…F£©¨¨ð• Öh4»wïv¿,++Óh4Ýù_OzÀž={Ìf³Åb©®®VÞ©©©2dˆÅb©©©B¬^½Z¯×ÿáPþuÿþý&Lèr³{~ãPwÀM–››µ~ýzÚæuëÖ¹Ÿçää\Óÿmooï±í\¼xqaaáêÕ«_~ùeåW^yå…^xî¹çV­Z%„°Z­•••+V¬B455-\¸póæÍ’l<êNè®ýMÇÇ•>¶qãÆ7nÚ´Éår !†® Å544DDD!Ž?n±XúôéS\\¬üF“ <×h4AAA•••Ê¿–––†††>õÔSîÁ¹Îßp‘‘Û:>ºüŒN§S6²©©©­­Íý~çäÞ÷g:|zl¹F£ÉÍÍ -**êN„²ô'?PQQ·uëVå’’’¤¤¤éÓ§ðÁÊ;þþþB—Ë•œœœz•ŸØqã=6õš‚ ÔzÚŽ;FŒa±X¢££KJJ„=öØ{ï½'„غuë¯~õ+!Ä3Ï<³aÆÏ>û,##Ãýív»ÍfB´·····WWWÏœ9Sù§¥K—fgg/^¼Øýá.¿áF$$$¼õÖ[Bˆììì„„„«ü —_~9777--­ó—tÞr¥­¬¬œ:uêMÙÎAƒíÙ³§´´T‰•RÍèõú††!„Õj|ØÏÏïJ?¨óƸŸtÞòΟ¹:1ÎÏV~æñ¢¢¢ää䤤¤M›6)¥§^¯W6ÌýD‘››[VV6`À€¥K—®X±âùçŸïøËvÜ’Î[x}A€Î¬V«Ž(ð’–––üü|÷ …þþþçÎ‹ŠŠ:yòduuõéÓ§•yv!D[[›VÛõôKJJÊš5kâããÝSÀN§³ó‡¯ò ×A«ÕÆÄÄLžù¤Gçñƒ† ¢lLw¶Ü\.תU«ââ.ÚNš4iË–-›7o~ôÑG…MMM‹-Ú°aƒòIå\Ïë®q9³ÀÊÌÌl/9rdUU•ûå‘#G¢¢¢ÚÛÛwîÜ)„øøã•÷Ïœ93~üøÛo¿]|wN¤ûI{{ûúõëýýý“““SRRîºë®ööö­[·>ÿüóWú†ÑùKÜïtþAï½÷Þm·Ý¦\NîñáÎ[Þå/xƒ›êçç÷ÄO\¸pAy§¾¾þÞ{ï½÷Þ{kkkÛÛÛ'NœxàÀ埲²²üýý³²²<¾Á­Ë-¼Êï×$33“ó;ø¤‚‚‚W_}µ´´”P€OàüN¾'88Øn·0 77—h€¡îàcš›› ø"®+u'¨;êNPw€º îu'@Ý êNÜútuçûN^ ðžºsÆ;ÐtUÇŽ½·…@À{ªŽÑUŸ8.ÄûÄÞS}âøÿ´Óïyò¥<ÝIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion_results.png0000644000175000017500000001251112032647206024645 0ustar ebourgebourg‰PNG  IHDR’Ü·’ÌIDATxÚíÝmr£ºPçVv”¬)YS²¦dMó\ãO ! ‰Ïs~Ly ¢4 Øzùùù¹G🀴 HÛ mÒ6 m€´ HÛ€´ Ò6 mÒ6HÛ€´ xÍŸôýýýñb“±>ïK.÷Ñ’¶Íx®] ÷Êë2\M8dµË©'[ô†« À©ªígQøþ×¶a¿¥s~¬µ €ƒ¥í¢2q˜äºE.¼Ob§‰¥ÌÎ*?Ûp‹ß,ˆ­i¬µ±ÿšŽWÓà"y"±%þ”x{'³³³ªžs§ö×-Õv*>>Žš¶ï¾¾¾lB.â÷÷÷íííþobÉ`r.3KÛpÒ6HÛÀÊiûý¯Ø×ôòòÒ{ÎKñ2²«æpYO’ßSõ¶Ãrß3ÖŸ?ÿö[Ê™ïÝZ¤íòû‘ÔïÜ_?_ ßœýTu:ÌŽ™o>Ïb§锿ã¢VMfýÇÄÏ7'g€´=]pÿû¸r>üï#s³øóÍa¶^RÄOf¸ü7c¤Ógâ#Mšš.å«? ÀµÒö3ãNÊã‰'_'fž™öb×É'óVN", Vú#Á½çüù/É»r6€´-¸ÇÿgôÒùd¬“Õgº&ß¼­õ0W¢Îlþ‚\$¶ îêÒuŸßrŽ¥Éô›ë_H_¨¸Ðí"9À5mö½íçÍïô—ÊÆùïùpVNQ^:Ao™ßæZòWTÛaÁ=|è¬tÙ,¬hƒÒ³èÊyÎÉAu¥>,¸+š:üë¸.’\Ö˶_ÈNøþþ6×ñùùyO|F€“¶à0^÷ܸßßßœÁGà"ö{oûîííÍàRÒ÷¶_Ût¸÷¶@Ú¤m¶i¶@Ú¤m`™šŸ[yŒ¼ùüyµñ@œÁã7ï¯ó-1ÿñ‚‚±Dg—’ß’¢6Ϯ˳y‰u€i»Î8Í÷^ÖclïD"ÌoIÛ6›$OÐ7m?JÃGFç³ | ÊÊqñL–˜[i½|*ÖžÙ–äO9Îñ9å~ìÊ„¼@ Í½íq2þi²¸~ä9M¿Bü‘q‡ ·$˜ Öæ`½&OG–¬Ñj1àœÕv0¤ÇæšMù92=MÎ|Æwë+¶'““^_ÎkI)¼B8&¯ÞMÐjA9ÙzüYØœXfmVùHÚó¶ñ3 ß)-…©k|w¹:•VOÐjA cÀ•íh¼íX«~ý_©ò­0†6ø¹•àa´Û¿oj5ÌOã šmIu›Óó)Šœ @à%'+üþþº± ýd¦Z?n ‡!m€´ HÛ mÒ6 mÀÕ¼^p¿¿¿mxöéããCgî1BÞ÷^¯/}޽yüØBéPoWîÌuÃ!ôÐ}ïUÿƒý1uGÃËæ­êˆÑ$oÙ[7Y´{ÛpÒ6HÛ€´ —å‘4à´r¾ªä+dHÛ{‘~Ü×WÈ8yÚ~þ÷çççñÎð…˜Âž{ñvÛDV§Õ¡lÃ8^èÊÇíü†e& i;×0Xò4ÑsÏ}ÿËŽÜ;Î+Ÿ–=–»«»°a*ÃEi{6”ãSªXQž9åì§€æ•Pb÷|¼ž|sòÌà;lbÕò/73ÉyúØù±ˆÇ–J4uòÛvKV”/žÓë’˜xò¯™aܹÿ:u‚Ðûù㿳SŽ?›?°¼: .§MîhÃ1½ïŸi‡­ZéJÅ‚œˆyðfu<ƒÃé>;nêd¾¯Ø­Âx¼jû¹†¥g(Áô‰x¹ë׎± *ÃÉvÛt4i£¨¤Ëyu'?2Y”oØ¢6Tœ<×Ò{Û û_õéª"Ö7Ï]©îöçx·}¾» {å87œa,È´=;UÚn›ÚëºÎ ›$¡GšíÅã»`vØNG×q¹Héû+iÁ~¸ùûcìhøœ ñBѶ$ÈÁÇüÒhòáßN§=6÷äÜò/ú«ïý×oóÌö€`ÊæóÒ‡ªœ0;Mú#ÝaßfW-±RÁ|–Üf§ÙmÀ{tÉM³]G^ršûø!¡Ó°ŒÑË>}~~Þ{fÑ/v=:óÅÇÛNÿšÊÇÇGú'N«8L '¨"òWa?½nÃMÐ#™©Ö›§uÏÙ÷ã`§ÓôÉo7aqN³ ŠHÛÀ™u- Ï‘'½¼OjàN¶i.ë¢÷¶Ó—‚Î zÝ]ñ `w'[Nv@Ô™»F ‡Ð}ö=_³Ÿ£3ƒ^w6îmÀaäVÛέàiÛm ØÉ@Ú¤m¶i¶·õþO×E —%æo{¿§Ï×P€I/RBuN½‡îù"‘k3ߌÕÓÁRbÌiL0‡ã"yû\>Ì‘ùo>óëóýXŠüàýuæ"8.ÉÛ'ïaÞM¼Y}f+Êg£ÎPm&Îád“oÆÞéݤí+ÖÓ±ÃÒ6ýæmp=¼S[.Òökë ã>ëÚÙ7W¨¹Ó@Ú–ÈÆù2ÿÍØÜf‘ߎÎÀ@µ HÛpY3ßÛþþþ#XÇÇÇÇ¢´}÷õõ%ŽPáóó3?Þ'~{{ûýý]”¶€%Ò™8¿Ô¾¹· ;‘scZÚ€ÃÈMÛ/=ÚQ4ÛŠ6tj6¬)ëÞö=çýùó'öß•ÉÙڒ߯\z‘|\‚?^ßœ`vžKζ=É€qξÕòTó$ù3 3âäëGê}¾žœ È©±y‹®h-ì$g?ÿ[Zsg¥í{æÖ¾ÏDˈÃ÷'§‘J¸xήËܹÕvìÞvÛÆuó|~Ê9;Ôd쮚GÒzçﺼ+[pzm¾·]š³3§÷8WÛ‰{ÛχΊRìðƒ‰e) àÿ Úô¥öïïïæC‰øFñJ$ó7É97=±7€ÃØ`0¥6×q¯žsÆÙoÚ€K¥í···Ì)¥mØXôíÞ6†´ Òöé¼L¹mý›0ÃaÖα Þíßÿê'ƶÏYz“æÏdŸNŠØcÝ;…tŸ¼SÇžÜ4ã.ìñ4Û¥9÷¶s%Æ%ã@›Oka峇ÙáTUÛ›ÕâE'’Áxä³½Ï0çuÑÉïäü‹>{=ŠØèìé«éùM‡zÍ8g¿‚Æ'bRºôt¯žÝ|9aI?ͤt)ù[ªbÏïÃé Wºów¥…ûuzuÚ&àÕººjûŠ9;8œ=‘LOYzúøEØü½¥t¡Áü+Ö·(z³- tÏY»Ø%“ɉ#ÒvspxJß3ùÙa v­ô‚©ØŽùÝ&½é«—R±Ã…7ÌØ•.hvÓ7ܯ«Ó6g¯ÓÕUÛ.À6þHõxhϳÑàuÎ<Ó5)Ý’…Y¸"M6}ó8ÿùg23’ã6éZMB7yÎÔu§›<¾§·Z¿Ý°èãEù¯Ç0‰9¡[g·Z¹««¶™¹Ðš3å ã©4_è~®DÍ®H°ÛwmyiœÛnîMºÖGêô|Sõ³T+,¨U3Žû8Þ‰G¥’¶·/Ác%W¿Ë;±Ò—,tW;FbEº^Ö[!ÎË7Ê KßÕÅÉØVXÞÓáíºgWªI32C·Ûã­‹ä¬Wv79Þû‰Ý”Íy«Õioº%«U!Í ‹¶qžmC:¼ »VfKöPç-,ŽAkUÚ–¶°î’@E‡9JͽZWWmSv}frÊô›±»žE7êÆ³*½¶\·¾mƒ6ŠÄ|‚§Oƒ[È¥ÏjõˆólcÕ-ÌïZ‰G~rzàäƒNË;zãÆö‚ÒÞRöüð.l^Q”›¾¢?WD{áQn“®~¼Rpýñ¶¡í)¹o|. ‚êÌBÔÏçççÛ_9猷­Úæ»îð”\4AgÖÕ/Õ6¥ÚöH†´ Ò6 mÀeå>IÞûqÇêŠï)DΟ¶Ç¿á¼aþ«øí!£ºpK/’çŒÆZ7úl«Á\åi®UmÇaÎh¬ÏéKGŸ½­;êœ$m?H;;Ròì »›d_WȸJµ»·½Úà²ùŸ’›¸tÚNŒp×#×åÝÙÑܤsŽ®Í÷¶{Œ,{k:p¯œ ÀUªíĽíºÑX©6¹yœû]Bà6Lí ÀE ®kƒ´­Ô€Ã¤m@Úi¶i»‹—)·>?ïZÔªàÅÑÔ»ýû_ý ƒ•®E“æÏdŸNŠØcÝ;…tŸ¼SÇžÜ4ã.ìñ4Û¥¹×y Ú}ŽÍ§µ°òÙÃìðªªíÍjñ¢É`<òÙÇ^g˜óºèäwrþEŸ½ž EltöôÕŽô|‚¿¦C½fœ3_Aã1)]zºWÏn¾œÎ°¤ŸÇfRº”ü-U±ç÷áô†+ÝŽù»ÒÂý:½:mðj]]µ}Åœœ?ΞH¦§,=}ü"lþÞRºÐ`þë[½Ùºç¬]ì’Éäĉi»Æ98<¥Çï™üì°… »VzA‰€TlÇün“ÞôÕK©Øa‹Â›flJ4»éî׉Õi›³×éêªm`¤z<´çÙhð:gžé Šš”nÉÂÆ,\‘&›¾yœÿü3™™ÆGÉqH›t­&¡›39eúÍØ]Ï¢uãY•^[®[ß¶A› Eb>ãÁ×''Î|V«Gœgƒ«>ha~×J<ò“Ó'tZÞùÓ7¶”ö–ê°ç‡waóŠ¢”Øôý¹"Ú r›tõã•‚ë· mOÉ}ãsaÄPg¢~š·­Úæ»îð”\4AgÖÕ/Õ6¥ÚöH†´ Ò6 mÀeå>IÞûqÇêŠï)DΟ¶Ç¿á¼aþ«øí!£ºpK/’çŒÆZ7úl«Á\åi®UmÇaÎh¬ÏéKGŸ½­;êœ$m?H;;Ròì »ëgßÙß¶€óTÛ±{Û« .›ÿ©Ä‰‚{Ûœ?m'F¸ë‘¿ë2«| ÀéµùÞv‘eoG)6«¶÷¶ëFcM ¤Údäæ®3€­l0˜Ì\„Ààº6HÛJm8LÚ¤m¶i¶»x™rÛúç\†Ã¬cA½Û¿ÿÕ:XéZ¬ü#EëütRl<ÀëÞ)¤ûìä:öä¦wéô`§Ù.ͽÞÈcÐîsl>­…•Ïf‡tPUmoV‹Hã‘Ï~<öz<Ü×E'¿“ó/úlìõl(b£³§¯v¤çü5ê5ãœyü ŸˆIéÒÓ½zvóåt†%ý<6“Ò¥äo©Š}<¿§7\évÌß•î×éÕi›€Wëêªí+æìàüqöD2=eéyèã\ó÷–Ò…ó¯XߢèͶ0Ð=gíb—L&'NŒHÛ5ÎÁá)=~Ïäg‡-\ØµÒ J¤b;æw›ô¦¯^JÅ[ÞD0ckTº ÙMßp¿N¬NÛœ½NWWm»Ûø#Õã¡=ÏFƒ×9óLOPÔ¤tK6fáŠ4ÙôÍãüçŸÉÌ4>JŽCÚ¤kµ Ó¶HœIä¼S´…ÏùxQþë1LbNèÖÙ­Vîêªmf.´æL¹Âð'ͺŸ+Q³+ìö][^ç¶›{“®µÃÁ{:=ßTý,Õ jÕŒã>ŽwâA¤¤ííKðXÉÕïòNl ô% ÝÕŽ‘X‘®—õVˆóò²ÂÒwuq2¶–wàtx»nÇÙ•jÒŒÌÐíöxë"9ë•ÝMΣ‡÷~b7esžÃjuÚ›nÉjUHó¢mœgÛﮕْ=Ôy ‹ãDÐZ•¶¥-¬»$PÑaŽRs¯ÖÕUÛ”]Ÿ™œ2ýfì®gѺñ¬J¯-×­oÛ M†"1ŸàéÓàré³Z=â<„ÄXõA ó»V⑟œ8ù ÓòΟ޸±½ ´·T‡=?¼ ›W¥Ä¦¯èÏÑ^x”Û¤«¯\¼mh{JîŸ ƒ †:³õÓ|¼mÕ6‡Üu‡§ä¢!:³®~¡8¨¶à(Õ¶GÒà0¤m¶i¤m@Ú¤m¶i¶@Ú¤m@Ú€s3p'tôöööýý-mÀ1ÒvæØŸŸŸÒ6l,=„v÷¶à0¤m¶i.Ë#i°†÷÷÷É÷~~TÛ°/“é¹(gKÛ°Yæ.ÍÙÒ6l“¹+röͽmضæVmÀ9IÛ m­¹· ýþþ®:pgÛåÀ¥´Í¡/³Ï³½½½ :¬V/­¶öÀ#i mÒ6HÛ€´ HÛ mÒ6 m€´ HÛ€´ Ò6 mÒ6HÛ€´ HÛ møfêø¶[áIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/scoping1.png0000644000175000017500000000760712032647206022612 0ustar ebourgebourg‰PNG  IHDR¸†á!×M pHYsÄÄ•+tIMEÓ 7»ÚçtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí}låÇç8MìÆIÚ„¼Ù΋iÒ:¤@pZ¥%m–…RÔncÚ&EP$„´6i ReŒ ¦‘­ª6!´Š½¦­ ¢"Q ‚Ín´nmט9oNÒÄiÇq'¶o<éõzw¾Ü]Î÷ú|TE?~žîëïóÜÝï~&Ž9ÒÙÙ Y  €§ÞÅß,ÈÆàñùÔžV±d©_*Áè…¬©c$äJ(~õµ—Q¹½½½½½ëÆp … !ª;¤’S§N¡—ÇŽvœ:uêÕ×^ÆZÑ;VvAGŽtÒ_’$)°;O½ëØÑŽöövzå±£x³¢w˜¢žáÃIDATBA*ñù|>Ÿ@g§_¬V¸oïÞ}@鹿€-mKËm¾å÷ «¥…`´¤÷ƒÞb·ÁHƒ{éñù|--DK á“z¾ˆÄÑ|÷ö©±…Uûý$:œTA2¨¿Ÿdˆ³FVÙÌJÐI(ÞXi£^n¬´IÛ  ¥Ò7½†þWBoÔDZž±G€@ à÷“t•0.‹ñè\WZwÍwo?×Õã©FÔ´èK*ó×ˆí³€á)’$ ‚èìô$ŽçŸo¾AÉd¡`Xì~–½qA5üËõ)zΕ‹CŽ‚´B)°¯P0|®«‡ó­s]=‹Ò û@ ©œÝùIDAT1ηŽ"| î= %±*Yv/ »Ïœ À™“!ôUžëꑼYÛ­BòÁÆ*‘ ÷E,HKÃn˜™M Jª°Âå2Ø'´Cº¨"ö²"p{A_¶°V¤Adº{ŒVŽBÙ S·Sv×ÄÞ}Ìß=Ö²ÝëAvÂOè¿×å£0…â÷“Â7(B˜Ë¹$co…‘g?ë9s2T\˜áø?9Û<÷½§å£0òÅSï Ã?ëA§Çã/³Û;Ú8”I·Èæ(Hè ì}g„ï ñþQÈ&É …Æû.\¹‘Nsl‰…öM^÷Vß&å'†3oº¼IDAT¡£²P>þè‹ë#7xÄfç{¿¼Öûåµ gÉcïWlbê;JׅߣB³w'ûÝÞ«çQá»O¿¨Üœ0,äЍûD¼ËÖºŸ½þËøòĵþÞùÅ9FƒõvGÛ£‡›·m­ö”Ë>UŒpdŠ„0J¤€ÍuÍì·êî¬- §PÖF¹Þ^På*€å…Oª([9—þòÓkç/t€·ÑÛvxcPúKtë[ÆK…œ½QƒÊ{MRËÈ¿ô 0JðûÉ€L7rÎ_èö6zàê•«@× :TòŠƒúXJŽ«.ÙzRÄ_ ‰Ï37(ˆÞÿIÛá]ÞF/ÒʪП5AuÏÒRIDATúKÆ“(™j8»¥+ƒ®ž!=ÓÿŠ} F-äwÉa”ëíÁ¾ÿ¡r­û¶ '”…0ÖLP‡“§@•yjDEž!„·×,r ea”ps÷JíQ8¢ö ôÎmM¦~x´ÂØ©ˆ=ØÚ™Er%¬,=̳›óº¿ùÌSòLî&ŒY1 @l?zY;ÖˆüK¥±ßž¥'K0<Ÿ}ÈÙ5œK•¨3®qÔ¿2K‡±ôœ¿Ð½ó¡Vy‡ {µdPÊÎTàïA°†o”*dñ¬G C¡qTÈtÖCo“ Î3Ȱ{ o¨¡·d׬ڃØ!è•ÚGeG wŸõ£2}éAP%ˆ%°IDATvÒ}Öߺ¿_ŸU‘¬Eø·©Äår¢—œg=¼ÿaY‰«û¬ÿ;/´É:M5Ñ‹‘P¨ì(­û[ºÏúËJ\0q#ì»mõþ л­û[T™!¡²Pª=åH”\8ÁëŽê¨Öƒ@-+€œÁ‘¡¾ÑÏþ>05·¦î-ñ=àu8 dëÝL¨/”쟛œZH,ÀÜœHÿLц¡æmjÏK—¨zœ%†‡F/÷Žô|4”XHS•ŸŸRqJºÆ˜ŽÒùÆ_£c–Xl>ßZŒ<+HÝ DznJí™éc:Êó?8°OååÞR ›Ã÷e²1å­×;Ë6î; IDAT¶æN]v¯H²¸4ÿN_®ªóÒ1F I’':Þ¾£¼ä‘ÇZ'·MuývÕ?¸ß]ã-ðÔsUTTÔ¬ÛìÜTïÉÍ•¸{åyDÜaéyååŸZ£[=ÔôÉé!‡Ã1uçGÌIDAT{Ê]n'çr#’†ŒÝêÝ åÄñ·,S›9Ôäï´X,ŸîwÖ”mjð8«z#€MàšbNkÑâÒ#œßüâý²üm[¿^uñüpŽ5'?udKeU™Íf[ýà ®QT3£oGɉ×úvÕ\úbÔš›3;?оiýú|»Ý.ªþ¸FFp¤9Uzw”±ù Z,–âÚ™æG«*å‡CíI}; I¦'Çg­Gܵå÷ÜÛ„U’=tì(?~áã4‘Úà™þö³â~º#;JYc$rŸ{«D tì(X"J¢c¡Ð™Æ'Çb©¥tÃ=ÎÏ?¹RZaO¥ÓJ K“f“IDATË«JÔžšA0‚PFú§b3‹¨|õâ$äòÒòÀd*œ¥}Wë½ÕjNQÿèx‚ Þpy˜¶±±"¿¼ÚQ»ùŽ g)üùScj†B[Ž"6eÆ@pbq.‰\d6°Ä‹Go%Ý?qüCß0Î#†j¡!¡HÈ(9™³Ùò`vvîò¿û&#Ó‹ ’$;¾ßYRº1–ˆÀ¶'áHÃ^é*ÍêüV„"!£ä@p‚*ÏÅâs±ùDb)M¦I’´–h4ö£×^8qü‹…°ÛmýÁN¡°=LBÊQ·…w.¼gRî\˜l´"„¨Œ’ñØ"U¶Ûó“Éâ´ªëIDATd*•"ÂBé4™\^~óø{_;°¬ÖœñÑvìD:Yº›c€¸'nf…Ä.-'R÷í¸•æ——“¹V+J¥ ‚‚H.§¨Æ¿Õºj‡”£0þ² œ1‘™b%yI²3GR5™þò ÄßíªÿùühËQÄf”¼øÙJ>•Äòb^~^*•&ˆ´ÅbÉ]—›J¥fæ'ÒiÒb!’©Ô»oü‰=Î#ÊÒ©–Œµ)“Oñ ÎöBâ/ùZõ#’ÑŠPHñ%+ª‹ÆW”ñÑ©âbÇ||!ÇšCD,1y³Ûtt&>™¶­çމ¤»;k£Àù’bíßZþ€pæ“>B‡fIDAT§›hE( >£dr)7›4o÷ž>ÍôŒBG!AXæçg£1W-_Ö Y¾yÙydiÚÚ£dúsbwäE£±¥Ä,'ÈÝ­;këÜEEyùëJJ6455|ò‰èÌìž'š[šjÙ=Hó€U?ÅhÀ¸”0¨äHCŽ"–¥…ÕÅcƒÓ{žh¾zqÄfs;«\·önÑ™Ùþð{¿:SÛP^å.c÷ Ößâ|&ˆ³ö»c+Ù&'v ¹Ð±P`KSÍTdæ¿û4‹Ø$’$'Æ'ÃCדÉdͦ²‡öpüÆ ‚óÿ5py›XIž©fˆ§O›$Q%£I%IDAT­¥Gî¾Ç³¥²ÿ«¡‘áëãc‘FŸ321u©÷ê.õ-,,Ö7ºZ÷mS{ŽF@sŽÂ8=BóöÍU®ÒPpdt8òë7ÿò¯Þ+ŽB[Ã]nïÖ:WÌ™ß4²cUÍ EåU%8ô$«è~éÁ(ƒA3JfC EFpFIxéág”dƒ… Î(É v&8£$'ØQ˜àŒ’œ`¡Ü‚“Q’}çO¹‰ªÊ ¤ÈŒ’2Æé¼GYAlFI6™b †0j£9Šv2JrFn³ËzÁhBQ1£$ç3zÔ'f_z”É(iL-”µd”ä„n* <”¥$æýÞ¬=£¤(²¤2‚T3IDAT¨ æu¹2JòÔ°£õ›WÒ¼Ž‚3JŠÂ¼Ž‚3JŠÂ¤Ž‚3JŠÅ¤Ž‚3JŠÅ¤Ž"D"8’ŽI…²*8’I—~p($ì(Lp($'ØQ˜àPHN°£0Á¡œ`¡Üb¡FºÈ e ÉÞ£¬°öPHOFFv(¤Ž‚#æ(ê†BòdŽd‡Bê+8ÒPB‘ö„ºŒ?®ÍuÀÖœ.¼aö¥GÉPH’F¦Íbj¡È )=Z‹¡–Q¨ ©¯àHó:Šì¡u]W€_¥AÂá®×ë?GïPJ)]ש"86B5B 5B 5B 5B 5B 5B 5B 5B 5B 5B 5BН–….—K)åv»ÍM|¾ž[¦Z¬Z¦eÓ[×z—ËåÒowÇÎÃ&Ž}Õëÿ«Oø7¥©Æ¹Âxú{‹<üåv»90ò«šÎTK)·Ûír¹<ÏÜBÎÙª>‡û³0«Ìœýöÿ¨jÝjúÜVV‡:ü¿‹|›ïâ,£Æ_p¿÷%8Þ~ʬ…×sSw`u¨ÃíäÛPã0hÔa,IDAT­…Ìž_vï=M;Y½ý˜ÜÛñ¬~Ì~Öꘓã®ÕmžÆÝƒ±Ö3ÕLú¶Îš´©œa±“)¶%ÿžêåG5½ºN[¸„sŠÈßbóuãò·üÝï+V檪[¸§²|Sgh÷NÂ{µÖØr÷v Ùô½M³úª%÷Y¸o;løYœÉé;Ž-o¼ÄZÈ`rV×þ#>“Çùñ8-CÁ²÷ßS?÷™;Ñ]> ÞS™›µðzlÓ\)òºS×užü‡ótc¢FH¡FH¡FH¡FH¡FH¡FH¡FHý‰ªëõzô.ð‡ø”^c)åûûûè]à×Ýï÷óù|¿ßÞ‘ƒ9Såä‰IDATxN‚žÔ)Ô)Ô)Ök¬> ÿçŸ4s:&§ÌMŸœÕ2ì»lÚ èm{Ç!ÇðËút:=þõpzû˜ÏA~»–~?¡ÅKïpŒŸC1ùdîêÓú k­nq˜âÛõq7Ñ8±Ê»ÿëøÇä*º¥ì~‚cùy(Îäc‚ûçåô¿, _ z~Tã!wî8ÖO½ÒçOUT-‡Ó˨®ÕUœÓR¶þŽjJ™Ôäë…ÁW—©5¯èÇ™sr+«›Þ±o‰ m;S]þ1»Çi1>÷{ÅøX4<@õ›˜œ8¹:¼nCUu¯<ÂxëZo¿\œ¼T]ѵL„7:òýÆþÍ’öwMñ¬ÔIDATÆ—X[˜ÕÂÃ+ÏÉ…WGkÜ.¬ÚVãø‚pëÛÕZ;î£6Þó8ý×êòÏaŸª3Õ–‰ã­¯•õ3Õ…Çøî{ŽðòZcswYÆç-g’ ÷lÚoÞ,ßø™°q>™ŸŒƒj„éŸ6¾ßï>üƇˆ®±ëºóùìãÿ|ˆèK)žÎÀçpÝ)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô¾Q§IDAT)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)ÿ;t*-IDATÔ)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)Ô)¾ž\¯×c÷øêņŒáÓIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldap_request.png0000644000175000017500000003406312032647206023553 0ustar ebourgebourg‰PNG  IHDRmÎE ©4sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ 3¾G|× IDATxÚíÝlkçç÷ïyzH°SBDÙLj˜™ y%œndŠÜ”æ‰TÏ…·Õ²Åx]A¡¶T×F^ÌÅà2Ø»TG׬šñ"ËÑN¼77”³Ω‡­E‡‰’KÖÿÌd¹Ê®‚1}E¡ÿHHv²ÎëçôCQER¯t¯~¼_ÐÒÃÃç>äчßçò»»»¢ÈQÈQÈQÈQpŒkG›,«¼8ËI(¹õÆÑ›LÕž¾zlveiÊqxáÖåµ¶õÖ±«cûéga.X=ª6—Ã@ªlµßP)Ùá§”YªôÕÏÌb¥ÿ•Î̯Ö-ë|ެe•S>ŸÏ—*Ÿ×-œI=z¬¶â²Y,æbóΕ¥i‡Ñ£¹fTçJ•§GWõl$¼¼)¹R9êötª2[¶êÙù™tµZÛqð4.n=jžèÚÊì˜Vj3}§ÒZ•r¢õØlbvLkÉ•zWfÃSá Öý®uØ9*".çHk XÏF|>¿ßï÷û}©òáê°žìßÉÖíE}©²eu,6ö輜j´7nõ¥îé{ö{ ¥Ìx @U ähï(uLÅçÆ´–­ÚÁD«=© O¹Ç'\ÇLíZV}u>f*ÕÝTc¦R¡ðÁñQ»BÝÜ?†ªÌx3í,«¼89³¼¹Óær8nþÙ—S¾¸ÉéZpE];µž†£"­­ö¤nÈë6 c*ZŽ›G§v•2ã³ù—Öcsñ®§µ.¬µk®mùNzS©±ÙÌíi‡UNâfsŠØÝÖiᓆ_·ÎÝR)åDKðè9Yžµ¤t9] @=z\×˜Ô zÝ""âöµ–\&[ï:½©ÇfWÖEc¡ä¡%›« O ¬N¶j;bYõÚ–h=6·rgîh²ÿ9䋌8]Ò˜¼=<Ù  =‰Ú–°ÜY͘J)i)7•R²¹¾±3=}pbÐÑÏÃô`/ì–Õù™ô‘sšÚ«[¥D:‡Ed»Vû÷‡xÇÑ©sÃpL-­ÈüÌò¦RfÜožìÈÑ{æÓ51î0 ˪o¬W;»ÕõúÔC}èÓ0SKÉÚd,=³è<œXZÍ ×ýõ[µñô}j¯ý>@´ôîÜÞžéÛÅéƒó–ÍØ¼seij˜\§0¯kŸÚ7ÕÁÌçÎÆzU´&òù¾|>ÔZªë;»FÃðDWæ\’‹í~Ô0<Þ´0Ü\¸í¦ŽßêÐ< Ê>³wf]Æö'~{tÞ¾UkÉ ÖR­m4ÛÓ¿€+V>È.È‚_-|¶ãM¢”ˆ„’êpgc}S) z[‹E;L³}jwÀ(uL/%køòÌ¢³¸à÷¹±\zÓŒû̓ ¶§XÝÞ˜¦j½) år¹Æ_#N—ÈæÁ´Ö®¹•pm&VÝ_]·ÎÝRiäýnY#N—¨ÍÍåp Íd/Pö ƒ‰B¡°à1ìznc½*"¡Æ)FÜÞØS»§ñaJóO•÷E²uË2ÓKkÏ2< ùÌl³¾ÔÁÄZÔÛðûÚ9ÈöiÙ·›ÍعÞÖ-àR2vww¯àÃîñÂ<êzrœÌ×€zrrr£<¾ðí·ßf\hõ /ìííõ•£öÒ ¶7ß|óõ¨­cê>J¯½q—gðؽüâó=n½vž7ýÖ+/ñü£½½½¡¡¡ pž];9JŽ08r€3ÈQË*§|¾TÙ:Ü’*ŸÆ%¸ObãÖ³·6Ú[žuï{öÙð›÷½×¡»´u×wŸœ°ÍÅypöcz©Òðîëϼú…öØ»ÿæò[ê­åC­ûwùö?þá—;%i[Ÿ7q’}»¸ø9ª”›_­ŽR»Tõï³kV»ÑçK•Ë)»=’­[õlÄçóù"Ùºµßz6âóûý>_ªlY÷8­Ço¾ûú3¯fZ3èþ_¾ýÌRe©­µáÉOÝs{:õðÔÓ¿Ù)ãÍñßÃ0<Ÿ]ŸIÇæ+áf£UÏÎϤ7•¥DŸ0º•˜¢”®ŽSˆÎ¿ùáo>>(Fgßµ3îÉfŸy6³ñÂÍq™^ªô®ö Ü3œùÄ“ûïÿè¯þê­/ºÿ‰ý.A¾ô\£ñ™çžìsã:öðä ™×o=û¬[©/·Y€‹£†á˜ZJÖ&céDÆ%£^˪¯&ÒUqÍeµ™Xî«qºDWƒÉµèé rÿ/ßþ«gfŸl£Yõƒ·Üo¤¶þá›ÿ`üý÷öä ·žßÚ·Óí©§sz)ó0I×­‡ñ›ï¾{óþ›á/ÜÚ`:.¬¾>?jžèÊœ«Z­6¶kUuŸle†áŸp)efVwuíßg´që ¯JãhæFæÕg^¯öú3¯f¾{¢Ÿ|áÖÓËS€ŸüíÏÿðÈì¡#¯·Zþðoî‹Èý7ÃÍÆŽ=tdßpérTD ÇôR2t«ÉRfl2³å¥ÌØd¿qLßNõær¸yÊnw:8rùì³·¾ÛÖòeyý]ûhfëéA-¡~å‡Ëïüí “43û#ûÓ4O¾yîg›kßhÔ’öôr£ñçšÇGÇo¾;û£/<ûì³7åÖÁAÓN=ì\õ‹ÿä™×íbtüæëϼúÎ×€ ÆØÝÝmkzûí·»]eíQzí»ä{ê7n=ûÎsÌÍÀetóÕ¯Ýzå¥7ß|³[2ò½€ îCðÐÆo¾K- äèù³··ÇÕ¼äè ^~ñù¡¡!.å G¯Gy†çç@Ž@Ž@ŽpU\­Ï ñ”¨G G¸àŽ™×µ¬òâdÌTJD´›[YšvŒÇ×£V=;?ËI(‘Ï …µµ¸$¿PèÙ8…+˜p9Z¹“ÞT*”Œz CD Ã1}{Áþ]DÊ)Ÿßï÷ûý¾T¹=ÒÊ)û¦H¶nÕ³ŸÏç‹dëVŸËˆˆeÕ³_ë5J›wÌf#~¿ß^¸Y.·^Õî­±m¾Ô=} <구r)'Z½î·Ö³‘¸©‚‰|>Tf<’­ô¨ÌXÉ›ÏÌŽi½¹žLH|eÎ%Õtbµ¾ŸdÇ.SYœIW]³‰Y—äb‹•ÖÎ×%žÏ̺¤š¾S1 Ot-ÔZë`r-ê1 Ë*/Τ«û5t±xü<Òz´{ÄÖ7Ö«ˆu{ƒZW×7š©u0u˰sÔþ}ijxØ9*"ÕÚö~½—±#\dÔévŽŠÈV­µóðÔ°}GÉ•º•˜J™±ùF$†g¡X$Pç%GE¶kÕà -yj[¦Ìx n*u¢Î Ã]™ÓZm.‡T™¹\ÀãÈQÃðxC¢”Yª½qÄé:ÜàrŽœæV8]¢up°¹YÃ1}»XLµˆäb‹<žzÔ}cnLë\l¾yúO9•*[–a8Æ'\ˆ­”L¥\ãŽÓ›5möŸYÝé3tE¶j‡—uG“A­ÅåtpB/àÌ\ë]Ø-­9'cËáÀ²ˆˆùÃÇôíDÍLLÜžvœîf5ú_û—Å>‡ÈÝ=t§âsë3éåp ­ƒ_-|ö;þ¯4>ð*®¹ø”èð4Έ±»»ÛÖôöÛo¿ð —òÚ|¿.`o¾ùf·dä{9 Àà®u+`ŽÕáø(8ªãñÑk}.Žâø(ä(ä(ä(ä( G G G¸²9jÆ…<ëľ—ßï÷ûý>_¤y=Ô¯½œÚï$uOß{”×%µ¸ *\F¾°G,NÆrJ®E=§wÕîã×[ÏÎϤ«û뵬úêüçÒ‰·áoÿã.À9­G{(§ö‹ÅTùhé‹D"û¥XkYÖü=›ô(4+wÒ›J…’42 Çôí…f2]uÇníT3•RÊŒGëÑþ·öÐïåT³+ÿ¾TùÐêb“‹mw?Ñ–ó€Kž£õl$nª`"ŸO•dëü[Œ™JùµøD¯-PæºÄó™Y—TÓw*G«ºRN´zÝ'XõÑn Ã]KµÖ:˜Èç‹Å…¶±Ï­mÛòXÉ[,.\W׊ÅB¡ÏÌŽi‹-VÄÝ\]Çz´ÿ-ç5 çÙµn7Ü{ïƒÖ?¯ü£³¬úÆzUë×-"Þ ÎåÖ7êSSòSÛ­Çœ#"ÃÎQ‘j—i O ‹8GEª¹R9êîs´ûª;wëîÙUŸ[Û¶åÉèá^û»ïI·ÜcmOàQꂽr´÷ÝZl×Úr£ZÛn´:‡Ïîqu[õÀ] ¾µöAÜM¥D)ѧ¿åý=€Ó×»’yøyݧëpƒË9rz[ooH”2K•G½ê„¨U_M¤«âšÍ$‚Z?öA<2›£†áŸp5r®R2•rMŒ; £5ÿìC¯Â}cnLë\l¾yÒM9•*[V·U?dZ·n­Ý.²UÛéý(:–³vXnÕvú4^ŽpùsÔ>ßµù)̲e9¦o'‚ÚŒqS·§ü‹&ƒZ›ñ@É›ì¯JërŽé¥µdHªËáÆzKÞÆ™;ÝV=HZwÙZ÷9—T—ÃŒs®Û£0 O4RÊŒMf¶\bŸ£[‘á©xã¾G?6zŠ[xŒº~~ôÞ{œÖ1¹Æ@CÉâ‚çüÈÅÚZÀYëˆ×Î0ö?C)"Ú5·uŸëø¼P[ ¸Bõ(—µå{ê9 9 9 ÀÅríê<Ô×Þ¸Ëó èÓË/>O޶»õÊK¼2ÇÚÛÛÚÛÛ;vIæuh×ÿ&9 ÀàÈQÎ2G-«œòùšß´Þö'ä(x9jÕ³Ÿ¯õ2j"bYõlÄw¸e¿Š-§|¾Ô=}Ïþ3›øý~Ÿ/b_[Ô^Ì¿/Un¿¯ÝÉÖíõ6ïØq¥œëµ¬òâLº*¡D>_(ŠÅû² •Å™tÕ5›˜uI.¶X9X™2c%os1¥Ìu‰ç3³.©¦ïTDÄ0< Åb¡PÈgfÇ´ÎÅ›‰hß×nß\O&$¾2ç’j:±Z·¬+àüÖ£„›o„™®¥œˆŒ:ÝÎQÙª5oÒ:˜l¹™ÖÁðÔ° ;GE$W:TDÚ-÷vŽÚ¿/M ÛËTkÛ=W À9ÍQÃðDWæÆ´V›Ëá@Àž†m†k<7•²sî5n=ñùö}Ožèƒ­€Á<ì÷ŽéÛÅérÊ7U.¶è]‹ºeÄé] &×¢öü­ˆôYZV}5‘®Šk.®ÍÄr'Ø+àñ×£†áñ†D)3³º#"R)™JIÈÛWîh2¨µ¸œ#"†áŸp,2ÛµªˆŒ:‡OZ?ÌJ8ËzÔ³PÌ8#áå°YDDÅØçMÆì X-®¹ø”Ã0DÄ1};QóÅ—ÃþeÑ:˜\k9(z\fG“!3nÆ&·\.Q›flR¾Zøl?÷=ºR SÀY3vww;Þpï½®ü£—顾öÆ]¾§Л¯~íÖ+/ÙßSß;ùGŽ0¸«uýѽ½=®æ 8EWèø¨ˆ ñ”ú¯¾Ž ÄkWpD8-€€€સçñYÀI½üâóäè¾п½½½¡¡¡~>åÁ¼.íúŸÈ$G9 ÀàŽ?>Úz‘Q[0‘_ðœ»K{ÚÛ™“Wœ»zTë`"ŸÏgfÇ´ÎÅË–ÅØpÂyÝaçè~ñ—òùüûRåF¬Zõld¿ÝçKÙqÛÖxOog#>Ÿ/’­["bYõlÄÉÖzˆdë–%"åÔþ½ReiY¯Ï—*—SvÿÍ-™œÏlñ|ÎuŽVJ¦Rò^W׊ÅB¡ÐZ¡ZVyq&]•P"Ÿ/ Åâ‚Ç0Ž6^W#ã.¥6×7vDDv6Ö«RMß±Cwgc]&ƆQÏF⦠&òùDP™ñfЊˆRf¬äµû¯,ÆL¥‚‰üZ|‚§pNsT)3⦛]‰ºV¨‡Bn~µ~xⷭѾSu}£nY•;éM¥”2K±¬úÆzuÔ9lÿ¢uÐëq{ƒZÛ Ûw×:˜ŒºíZ¶¶%Z9G:l ç%Gí㣅B¡x{Úa²?[Ä›§ †'º27¦µÚ\ödoÇF;¥ZÛ–J)çšMÌŽiˬîÈv­òºEd»V=¼ÕÚv‡í²uóTÎq޶±¬új"]×l&ÔºÙn8¦o‹‰ ‘æéHG Ãã ‰Rfi±”sMŒ»§Â!‘êúÆj)òz CdÄé:¼J—s„§ p9r´w!èŽ&ƒZ·%_[£ÛÓ4]ãÃp{CJm./›öí†áŸpÙ“½öAY{±¶äqEì¥<£€GiÀï×5 O42ãflrËåµiÆ&å«…Ï~Çÿ;Ì´¸æâSû<£ýŸ6EDFœcZWÅ51>,"â¾1;–KW÷ÿqLßNÔ|ñxÀÑÁÄíiGÇ-qߘË¥Íx@É`.–ã)_$[·DĪg#‘l½±X¯;ú|©{úžýg6ñûýXå”Ïçß—*·ß×ndëV=ñ¬½ãJ[ îýx8õõ†D)369ßÌ$[eq&]uÍ&f]’‹-VºPf¬ä}çß¿1áRjs}cGDv6ÖebÜaÇÞ±Xlä´RæºÄó™Y—TÓw*"bž…b±P(ä3³cZçb•±}_»}s9<™øÊœKªéĪÞÝV ÀÙæ¨g¡˜j¥6—ÃÖ ²”‘Q§Û9*"[µú~¤iLFÝ"2ì‘jmÛ²êëU»¤íçŽÍ?ÃSÃ^r¥CÅ¢ÝØ¢qßaç¨ýûÒÔpsõ=WÚŒçf~pš9jGi>Ÿ™ÓJ™±ùÕzKÄM¥ì¸jçöµ–\©"ÛµjÈë–ÖÒ³×»³'lö}OúØ])}êú}F†á˜ZJÖ&c¹jm[dXFœ.ÑÕ`r-Ú,ãÚ/†ÇÓ4K‹’ y‹Ç®!jÕW骸æ2áÚL,w‚ÇÕa¥<Šz4µ~TJ¦RârŽˆ†c|Â¥”™YÝ9&¾DLÓlV£}Þ±‹íÖ“žú×{¥œg8ÃÆ%19é÷ûqSÍ®,MÙ§ 9¦o'‚zs9Üñ$XÛðøÄ˜ÖZ9Gû¹c—8ôD“!¥ÌØdfËeŸýÔï‡p^)'¨Üvww…¦×Þ¸Ë÷ÔÚÜ|õk·^y‰ï©à”‘£ Žë¶ÛÛÛãjÞ€>q|´ÝÐЃèXhQ8LtÄñQÈQÈQÈQ®ŠÇsž,\,/¿øü9ÊQáë÷ÅÞÞÞÐÐß À zL£’£ Ž`pŽZVyq2fªƒˆ &ò ƒÁ ßzTë`"ŸÏgfÇ´ÎÅú½z¶e•S>×Í\õmv޶üUNùü~¿ßï÷¥ÊíÁYN=÷\ì+“1S)¥ÌØäâ=}L\í­”L¥$äõF=‰›*˜ÈçAeÆ#ÙúA/ÊŒ•¼ï¼“üêZ2¨µÖÁäZÔc0 ¸äº~~T)30EDÍ®DÝ–UßX¯jòºEÄÔ¹ÜúF}jjXDD´&£î¶ óP,.0Æ€+˜£m5¥emת‡—¨Ö¶E†BÀÖÿç^Fœ®Ã .çã GûaŽñ —Rf©Ò8hêšwt8jÇíVm‡swäh ÇôíDP›ñ@ nê`âö´£cÜNÅç\R]|¾ìÿÇ.5cww÷ѯõµ7îò=õ€‹âæ«_»õÊK|O=§Œ`píú£{{{\ÍpÑ=žã£"244Äè.ŽÇG¯«­àbáø(ä(ä(ä(WÅžgÄÇZ—ÆË/>ÿ¨sTDøò?À%°··744Ä÷0ˆ3¬ä(ƒ#G\‡ã£–U^œŒ™ê bµ&×¢ÃhÞ*ɵѲ|É»¿Ô£¢u0‘Ï …|>’\lr>[·š·æb‹eËbøäè1 ÃM†”ÚLß©ÜM™±ùÕ:Q Gçöµ–\i¿ %Aµ¹<³Xaäèɹ£™Ù1eÆSeJR9Ú—s¤å¯á©øì˜ÎÅæWwF9ÚC¥d*%£NG˹†á˜ZJ†¤šNd¶H9Ú‘e•c9­ƒÉ¨»í&ÃðDWæ\Õj•\I]¿_W)30íßµkneiÊÑé㡆cz)Y›Œ1’rt¿Ê\(ºÜÁ0< EÏ¡ÏB±ÈH®"¾r€Çál¯?º··ÇÕ¼—˜±»»{v½ 1Āˡãu¼¯=úUpip|rrrr£££\.ý~ƒe•'c¦jÏ]­ƒÉµ¨§Ó%Õк­ÇæV–¦ƒôl•S¸ioÞW ŸýŽÿ+9 âvûÙê׉¿ðar¢÷}­zv~&]ݿղê«ówœK§¼‚pŠNg^ײêÙˆÏï÷û|©²e5s1âóùý~»ýž¾gךJ™±ÉÅæbM•;éM¥BÉF†cúöB3™Ê©ý®Råf€¥|>Ÿ/•ÍFü~¿ÏÉÖ­fE«”ìõÚ‹Ùk´ïå÷û}‘Hd¿½ÙU×ßË©fWþ}©ò¡ÕÙªõî'Úr^‹pus´²8“®ºf³.ÉÅ+*m&]•P"Ÿ/ ÅâÂuu=º– jÝq*زʥœhôº;ô_ÏF⦠&òùDP™ñH¶~ð”¹.ñ|fÖ%ÕôŠaxškIäóÅâBÛŠ*‹1S©`"¿ŸèwŒ”+y퇰P, …|fvLë\l±"îêD[Îk.¢®ÇGï½÷AëŸ×?þÑîÅh¹”‘Q§Û9*RݪÕ-÷p3æ+KSއ˜ð´¬úÆzUë×-"Þ ÎåÖ7êSSö*´†§†Eœ£"Õ\©u»{vUÛ­Çœ#"ÃÎQ‘j u0=Ük÷=é–{ £mØçA¼6ØÝ:mñ€)JIµ¶-â0<Ñ•¹­™ôæær8°Lä<Gév­-²ªµm‘áÁ»u¸)öAÜM¥D)ѧ¿å'sÀ#лÂ9•yݧKìyT{ ·q€Ó1}»XLµˆäbˆ¶2 7$J™¥Jçþq9GÇPZV}5‘®Šk6“jÝçÈœ‡-œ‘SÈQÃpŒO¸”23«;GouG“A­÷óÃΕ­Z‡Å}cnLë\l¾yÒM9•*[V³ÿRE¤R2•rMŒ6QÜšÖöÒÖv{ÃZÛû+g»>¨SÜrÀ¥ÍQqLßNõær¸yÊnó´Ø@ ž×\|Êa†á˜ŠÏ¹¤º´žÑÚHÇôÒZ2$ÕåpÀ>Áµämœ¹c÷oƸ©ƒ‰ÛÓŽ7ÕÎu3(y“­5¥ûFcÃ2ιnµ¦ax¢ÉRfl2³åûÝŠ ÷xP§¸å€s¨ëçGï½÷Áå>V×ø¸j(Y\ðð:tÓ;¯]µá8ô•I®¹•¨›—``W.G óP,.ðÌNßS9 9 9 9 ÈQÈQÈQÈQ@Ž@Ž@Ž@Ž@Ž€þ\c½×Þ¸ÛüýåŸgxI0\ ÈQœ`ÿ½ð÷[Z¾q¥övF€áb¸pÉ»»»o¸÷Þ×?þQètwòôg:ÞôGgì‘§IDAT¼ÒcW·¬úêüLºJ®E=†qäÖòâd,'í·vl·MÕ>Ÿ¯u°cçwŽní±ÛÙm4sц«¾:?³¼©DDë±¹•¥iÇiná±c{_]9qµ”UNâfÿÜ:&n©´ŽÝUÿ/ÚÇ5nèGï@¤}¤þÎG®‰Èç¼ãÍ–]Ú8þn•;Ë›J)³T‰z<÷¾Éð,‹ —7s_{N¤ùßÄ^olrëaâD†kÿÍV#,«¾:¿X^z¤ÿ…/â«K©ÍôÊôBc¿ª”rŸ5Ò|øGËé ò2ÃCâ<£GWŒÞzå¥_ýȯ´†¨©¿ú‘_¹õÊK­uÚÿ?f¶f³cZç2«uËjî6)ŸÏï÷OÎg¶ïNÛûü_œøü~¿Ï—*7WTÏF|>¿ßo·ßÓ÷ì÷ÎJ™±ÉÅæbý@ÇŸ#Ðúï&š ÙÿøzlpGÔ|ãߺñÇvrA†k»V‘Qç°=VŽéÛ öÿÓ£ÛÙ|‘ØRåƒFŸ/U.§šK–S¥¹ñµÕy¿ßïóE²uë‚¿º\ccZr¥Æ°Ô³™-ט֭KŒ@ªÜ{/k`룈Ï=÷©ˆ¯9\V9å‹dë}?´37£ÌßþìÁßþìAÿíÍb4=žrO¸Dªë;ûÍ‹1S©`"¿Ÿ8´x—ö~TgÒU×lbÖ%¹Øb¥ñ&w&]•P"Ÿ/ ÅâÂuu=º– j=À¤“ýH»ýôÕ…ÛÔÿøŽnpïGdž£l'b¸ Ãã ‰Rflr¾-ÞŽn§] …|fvLë\ìà?¯Rf¬ä-<†QÏFb9×l¦ñXìWÊ\—x>3ë’jó Í…}u†Ã!¥ÌÌꎈìl¬ËÄÄhËÍõl$nª`"ŸO•dëýìe­/³D>ÿÎ;¿cÂ¥Ôfm[Dd§¶åšwôýÐÎzÜ@Ž^$?ýÙƒŸvÚŸ»µ7‹Ñ¹nÃpŒO¸”Ú´ƒÔ²êµ-ÑzÌ9"2ìmY¾c{ŸóB¥œˆŒ:ÝÎQÙªÕ[ÿ·Î¯ÖúM®ýH»ý 0CÛmƒû\ Ïe.ÊpyЉ Vjs9h-={=À#/­ƒÉ¨Û~-m¬W›nëá©áÆ÷ßÐ\àW—ÛÔºº¾Q·êë21îlÝû6Ö«Z½îÖŬö²áñ‰1­s¥Šˆl×db|øüì• G/TŽþüÁOþ ÿv»]ÞÜ\ü~xySDì=¹m¯ÛäÞ /eÆqS)©Ö¶íwÖ+scZ«Íåp `O>ätû9AG.çH— >öÉ Ë\ˆáò,óùÌì˜nû'{ôÚƒ»±3ûµtªÿnÎã«Ëí ‰Ú\¾³x'=žî9Ñ;ù^6<>á²S°^Û:ñîy¦ãrôÂxùÅçÿÙŸ|ã?þüÁ?_]kmÿç«kÿñçþÙŸ|£óé—™-{V­P(Øÿ[§vOÛˆÓ%öLTë<žá˜¾],&‚ZDZ'Ž?G Ó‹’©”Œ:†Ñmƒ}D'_æ" —a8¦–’A­÷ÿéwØN˪¯&ÒUqÍfÁÇÛàUxu¹oÌimšfÈë>fZÞÀˆ=Ÿ$ÕÚöÎÆú¨÷$ó®g;n G/ž~ñá¿øðÿü—Ñü±[º£éÑpóÄÔÖ©ÝæÁ°R¥q¨f™ÎíýïêÍcEíÿk¢É ÖûÿGìÿ/[µGàèOŸs\‹±\sâ±÷w_àÐÆÛÉE.Ë*§šg¯Øï6\Α®Ûy|EÕø×?Ðf_°W×ðø„Kó·¶¹Ti ©}\s°½lx|Â%¹ÒÚh{Z?þq9z‘JÒo¿•ýö[Ù~ñ ùc·t+Fçn¸Ûvűýƒ47Ññ@É›l-)ºµ÷Ã1};Ô›ËáÖ\íóxN\sñ)‡a†c*>ç’jëq¸SÓZÆ6¸æVZN£8ºÁÇ>¢£l'b¸ ÃKbrÒï÷⦛]Yš²Ofé4ö™Ïfl2³å’n'y:¦o'CUû°ÂIOf¾(¯.iœÛ\ì8ao³â¦&nO;ßËì ÍÉIbôQŒNám"ßÃðèñ½eŒÃuՆ˪gí/S).xxŽ.œÞHŽÀ‡èþWMùJ¹l9Ê÷ÀÙ²§Ž§ˆKŠã£££££€€€€ä(ä(ä(ä(ä(èÏÉ®›ÖzܸÔ0€íìýÃ™Þ üѯ0¬r´³¿ó‘“ÝŲʋ“±œ„’kQa´ýùðÀîÐTÔZíÜ*§qÓ^ø«…Ï~Çÿ•‡Ü¤Žëè¶õ¿…€Ë™£¿ú‘_éØîv»+•ÊãzÍd²£+6¹5·²4í0ºf^,§[2ïz±¸p[ež…bq¡KÊ>LBΉŸgô·?{pôÇív7o:YHÔ³ŸÏï÷ûý~Ÿ/U¶,±¬z6â;ÜRNù|>_ª\N5»EW4Rj3}§²ŸC‡zkÖˆJ™ñ@ÀçKÝÓ÷[VsEÙlÄï÷û|‘lÝêØO3äR>ŸßÏl¸„íÔáá¹§ï5·66¹Øã.FŽþôg~ú³Ÿó~úsÞO7‘?_+Ùž¬ÒšIW%”Èç …B±¸`×[•Å™tÕ5›˜uI.¶xPã*eÆJÞæb]¹½A­%W²S§­7ÃðD×’A­µ&òù޽)e®K<Ÿ™uIµ™Ç·ª²3• &òkñ‰“ŽäÑÈuu½¹µÔ£p)rôç~úóÍßgÒ+"ßüóm·7o:Á(36¿Zo©ðJ9uº£"²UkÞ¤u0uŸ°æëÚ[ZÃSÃ2ì±ó¸c?–U¯m‰ÖcÎi,|Ö6 €K•£¿x ñ@Û¿ÿîï|NDþÅ¿zÇnl½©†á‰®Ìi­6—Ã@ªlµ†k<7•’jm{°GærŽœboûÙ®UEdÔ9|:öÀùtâóŒ~y8)¿ž]ûåI²³=JÓ·‹Óå”/nª\lÑ»uˈÓ%º<|âëI:­”L¥dÔé0 ËzèÞN«Ÿ^vÀ%ªGù¡þå‡àüÚ7óöŸ­?G‹NoH”23«;!ò¶†‡;š jmW†áŸp,Bsq÷g€²·–GÑ¡ŸæC+UJ²ÃŽb'®ÈVm‡—+\üzÔž¹½ý·›¿˳PÌ8#áå°YDDÅþx¥×\|Êa"☾¨ùâËaÿrã-ÇÖdJ™ñ€iÿ®]s+K®ë­££ýx Ã}cn,—6ãI$ƒ¹Xîá:tK¥Ó€8¦âsë3éåp ÍÙFpλ»»o¸÷Þ×?þѶÆ×Þ¸ûùÐ{÷øvîÛ|/ àÒ舃ףoç¾Í˜0HŽRhЊë¦@Ž@Ž@Ž@Žr€³Óës/÷Þû€ ‡®ßgŽÅ¼.ä(ä(ä(ä( G8;×.ÇÃxí»<—€³ÓíÊ¡×.Í#¼õÊK<Í€³°··744´··wô&æu8FYOr€Á‘£ ®ÃñQË*/NÆLu±Z“kQaœúê{¯Ë¾U’k £eù’÷l6€SÈÑe§u9 =LÐ6×e÷›Üš[Yšv4zËÅ NÀùÔï¼®e•S>ŸÏ—Êf#~¿ßç‹dëV³šTÊŒM.–-«¹X¹œzî¹?HE|ö’"b•Söz¬Å0<ÑdH©ÍôÊÁ&*36¿ÚûŽœëmFÚºÄó™Y—TÓw*†á‰®%ƒZ·¯J™±’÷w~ÿÆ„K©ÍÚ¶ˆÈNmË51î8¶¬t{ƒZK®Tng(‘ªÍå™Å ÏàÂä¨Rf<ðûý>_j?ÒDë`xjX†£"-Q×Në`2ê‘áñ‰1­s¥Šˆl×db|xmtG3³cÊŒ§Ê”¤€ó¥ßã£ΪO¸ÒÕ­ZÝ©m:ûQ—s¤µ›©øìúL:6ï\ óœ.@=z* Ã1>á’jm{gc}ÔÛ×¹B•’©”Œ:[g€ Ã1µ” I5Èlñ¤.QŽŽ8]"²UÛé^‘J®t§6êuÛ—e•c¹æ´ðáHöDWæ\Õj•' pnt×UÊŒLûw­ƒ_-|¶[Å9Ÿ[ŸI/‡鎋 O¸Òéœ$£Ò׺\s+KSOG2ÓKÉÚdŒg p^»»»gº«žŸIWCÉâ‚çìÖòÚwùžzÀ¹ùê×n½òÒcøžz˪¯&Ò›J…ú˜ÔàÂ9Û릆cúvqša£çÜÞÞWóÔZë`"Ÿ/ ÅâBÿ!jYå”Ïçó¥Ê–Å“Pç¾ÍlÍ&f×cé\fõ†»q=Ýfe©ÇÆ\GÊÓ£íý¾Ë›ªµ<µ/V¸©”ì_<ø;þ¯˜J)1c“B Pç½M†§Üã.‘êúÆÎ~óbÌT*˜È¯Å'-Þ¥½¯U-Τ«®ÙĬKr±ÅJ#•gÒU 5ËÖëêzt-iײ„(@Ž »á6 Çø„K©M;H-«^Û­Çœ#"ÃÎÑ–å;¶÷·®r)'"£N·sTD¶jõýi[¥ÌØüjY\€.\1º¼¹¹øýþðò¦ˆT×7ê–%²]«ŠÈ¨s¸íÝÚûÞ‡•ÄM¥¤ZÛ1 OtenLkµ¹Re¢ G UŒÎfò…B¡P(äó™Ù1Ý:µ{ÚFœ.9zæ‘ᘾ],&‚ZDr±EÎ-ÈQà£éÑð´£q²uj×0<ÞØgðÚD÷—éÜÞýþÍÌj‡ vG“A­ÅåÙO\‘­ÚO@Žç•}d´µex|bLk{j×}cnLk3(y“A­¯K{?Ó·A½¹öûýöÇZì¸øýþ@ ž×\|Êa†á˜ŠÏ¹¤ºø|)ž)à»»»ŒÔ££££€€€àòèpÝ´×޸˸ÐêåŸï7GEäÖ+/1dÀcwóÕ¯±3çaO‘¡¡¡½½½~sTD:. àÑcgÎ3Ž@Ž^^ö׎·^EÒ²Ê)_Š‹ai—¬g#‘l½ß]’–ÅyàÚÊpIà\0 Çø„´^Tvg5³5wþø+ÈQœO£á¸3³XéðV·žø|~¿ßï÷G²õƒ7¿å”ݘ*\H«YÔZV=ñ5¯´Å[fàD†Ç'd}£ÞØwêë21>Üm—ìX˜þ½}9гØq§âÎLë쮽+.&$¾¶V(ò™YIßÙß s±˜$òù|fv+“JÍ—¼kkùÌìV¬QÔî¬&jáµB¡°–”ØbED óP\à 5p‚ µ+Òƒí¾Kört9Š3JÒ°dVë-»¥axnO;ìðvŽ,ëš[‰z C†£Õ}<¾ÿû~1º±.Îq{C¹oiÚµcÔÞ »ï’]±?^ׂ‹³ëz¢áÒüêÎÒÔá’t2f*%"Z‚ÞFó¨s¸¹Hëï¶íZµj†Ë"‡ïà$ib£>5¾±>^>n—ìý‘Å£ŒRÏB¸YÝ 7ßÉ®ÎÇ$¹Vð–U^œ,õ×͈ÓJ,E™Å6H+²>ê½½¿+ ´K²?^xÌë^0îë‰ÌÖÁ;YWcFh§¶Õo]ëŸØ*qx˜7µ†c|B–ãË£^÷áâ²÷.¹UÛiÄmŽý‘ÅãÙ{Óñ ©6ö@O49ºøýþÉ„L„r±É¾>㘾í-MÚ§Ú§r¾.0@E:¦ƒ­1Ú{—4 Ot-\›™œœLH<ê¾?2¶ìßòîîn[ÓkoܽõÊK|ðر3çdO‘n;#õ(ƒë|žÑÞÞWOÎvFàBæ¨t¿Ð€GŒxìz¼e^€ÁßÎ’£Pð8£££££€€€€ä(ä(ä(ä(ä( G G G G9 9 9 9 9 ÈQÈQÈQÈQ@Ž@Ž@Ž@Ž@Žrrrr£££££€€€€ä(ä(ä(—ɵn7¼öÆ]F€ÞŒÝÝÝ£­CCC ­öööú­G;. Úp|rrr€«âC€KæÂ}dëåŸoýóîÝËü‘³çŸž—(ÈQà¼ûŸÿ§ÿþ¢lêÿõõ?½:as¹ß"€._ùO8`€ÈQä(ðrôšÁ GêQä(@Ž G‹”£×ÈQä(0¨_>ЃÝѲÞÿæï}éŸþõÔÿñý¯|Ú0ŽÜºñ‡ŸšKÚoíÖþÈXÖýïßýîû‡6é©Ï<ÿ©'»oŒ}—š8{/€Å•ÌÑÍÑïýÉâ¿QJ}»øÝÿí·>}4Gõ‡""Öƒõ/…VçöGž¦ì´3ò»wüŸ|ò cÐÞZ€9zÂäX}ãßͽú¿¼óSöÆ¿ü]÷ˆXÖ÷þéoGM¥´ë“ŸlÉËníýáÆ“ŸúŒóý÷ÿúßlòÓOŠˆeý¤šû?1ºÕ©m ŒÈ¶]àòþwïÊ~<Ó p5q —1GXƒülü‹ÛÿÅïý7Ï~öï~RäùïÔí5•ú¯“¥¿ˆOÚùü gû‰~ÎjFž|ʲ¤vÿ¾e‰Èö÷ßþëì×ÇýcRûî÷·.Þ¶€a<ù©ç?ó”eµFæ±ä(pyêÑ“þüâA-ûõ÷Ò Ï=ü[Ÿûu¥ªï|ç}»ý½-ÑÚ52¬ùkO}BDÄú°{ûI×ûFòî߯‰ÈÇžyâc"òãŸüIJN´@ŸËW󺸜9zâ°)ÿé›U ÿWoì·l¾ó÷ÿÛÿî×äý¿©ŠÈèð®ù¡¥›yÙ­ý\Ív~ì‰'ö5Œ÷7¾õ¾†üø'?ùO,{ìG—y‚—@ŽâRzðáÉJ%ËÚ6Wþ}ø×Ça4þü__øú¿]ûþýéà°ØùàCëôñû9‰Ñíûï†|ì‰' òžxâcbýøÐAÍÃÅä± t^€0¯‹Kš£úd?å?ýú'þÇ¿÷k–ýç‡zø¿üíO*õoÿò{÷?Ôn÷çE©?ÿ^Yÿ¿ôò;JÙug·ö“®ú,¾eÝÿþwk–õÔg>5""†ñÄ“O}Ì0ÞÿAõ?Hç*³ãO4&pÿƒôÓ @Ž—LJÚêÿçÁ‡÷ÿü?ú¾ènmüÏ~ë¹§µþ÷ÿÏÆö‡ú7¾yZëõÿÝ÷ýOÿáßÕZD´¶>ÔV·öýœâ£6Œ÷7¾õ­»wï~ë[µýÆç[ Ç'>ù÷ÆŸ²~òƒ¿¸{÷î7¿ù½ûG‹Í# Æ®ñßø˜üøñ-»åØN€«ÉØÝÝep™¼öÆÝnüîEÙÚ7ï|óèu¼/ñõG¹Ž7.ŽâzðH΃r—ÓéΗ9Š+V’£ÈQ€z9 <Žåø(róºÈQ`pkÿ÷Ÿ]èí¿{÷.O"pQðùQÇ÷@Ž@Ž@Ž@Žrrrr££<>ÿ?¹Xœ2uŠIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/smtp_sampler.png0000644000175000017500000005345612032647206023600 0ustar ebourgebourg‰PNG  IHDRÉ"«®*PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<Õ~Ÿe¯ÒTG@?‚=Wt§ŸòàÅxªÆ«¤dõ›‘`¬‹^måNSÝjõ/s*竪õòb'„ÃÝähÔѶ«1_ŒIæªÇŸ§úNz¸³®SQÅ”K´—‡R¥Nج–’Yp¬¯ømýR«µëy}IýE—Ò adþ耎"Ó]ü:/Vó ¢å·ÿ_—»¥GA.`µ”<ÞõŽZÐU)ºÓSˆô7n|ÿûoiDƒž¾ð Ív×êÚ–©sm'¥dqõö¼+(›˜”\ßXE“ :ëWtWåèvTݸñ_ÑtœR³4N'ƒnn¹:ÍIqštéSJê´Å «ƒU>ãsX¥¹|.&hI{ÏYÝ'78ÇâÚÍBènæ¹›ùâ:y¹†ÚÙcæBVéŒoóp´Ë¡ù%¦0Þ,¸ Mã¹Pw¯žÅT?VªiË’:›ú’õJt¡i¹¢ºV…GXÝlZ¸Û” N <¢‹U ×(@Y(y;, ]%(((€C勬Öî»–S2áÖ°¾h]Þ'Ýu«{ðÈ ôÔ†VRò­33‚Rs×{­8ãe@~d%ƒòJP2k‡¼3> ]ÖßòÍñÇÙô2›½,­¼|\Þ*Ï_Ϋ²ò.^F€ÕP2 ¢õ·ÚPRáqEÊÇsDý2eå µ‚Evi|tÒ3>æ “Å2çu×Ç#tÖçó‹lË=ÉñãÇ%Íg9‹ùeè P@%;æRìñóÖ-Ö¶°P×} ÕÔõík£ñPpIë—åxâF~WòÕ/KA›?ž]T\{zú0º0¸Ä_ˆù#Ä%mxr,z–BT££ )'‚~y¥ 8»=]åå\Ýg—¼'(˜’}³ì1x`°AÊê&È^»{tNžLçÇÊÑÞržôå¥UŽßäÄ€B+YU}€=ÎÒ[öüí•tM¼íëé*73œ1X8™LNöð( çoÖÓß%,ÞåÏø^¾QßhnÜ'“XÏ~:=aX?¿vÕæë÷¦5'§—/)ÊÆÒpËàÓ“ƒ(ä¾õ»:?ä½p¸R> d d€3¾[—4@1A¾ €è(€bÅÉ1_B4šÕ·Ñ>>Ó#‚µæ“[^:<};íw[aC°æ”<ÛS£z|´™(0æòY,a·+0ÿu9aÀX xýþ 3®1Šm™÷ŽGÆxº—¸Ç5æMÜi  ®ä( KóÀÁ†Úv~·[tS÷ÁèÏì|q¡¶ç`²ñýiš9\Ûx($méšÚN4J^ëæÖŽiج™8¹‹:¥ùgH¯¢P-Q­À&ÅÙ¶ÉI“HóT“¢¹¢êì»À[}MÄ/Tƒ5ã“J"€gI¥|J–€clö1yêfÛw¶Ñ‚\Ð-U¯lûÇNÖ`Íød-ŵ$ 8%fÅ‹®FCG°%X3>¹öÕ±LR EB¤[¡…Ž‚ VG¡—ùhO›ªž g|`­ødM«o\½Ö´cª¹ù˜Wœl…1A ¹³,+;ˆ@1A–Pæq2e'·~èßûE¬ Ö€’ñc¿ <”Œ‘ÿq2P2P2P2€’€’€’€’” À:U²øuרø×·»«Ø$›¼„;îÁZQòä«›¶7¼:y»»Ús”MD£š Ö†’cìO7º™ßø˜_d>Ö땆;MZé\TÑûË“Rê3oÌ'î“-–ˆçú<%'dòa°Šä~’ïê4jh¿ö¢–È×~©bïQM¥öè;êäѹÃ#Â}kˆþæK¼æ´ýÝÄîþV¹ÞV’ò(9ÚpoŸ!pôò<[öv½“ºw …B07($yƒœòóÂI7vÞÕ¼ãýØžcßT‡ÉHô™Wˆ´ª_îêë2Ș”r]|™ç ò˜~ÖJ™z9˜VúyÒÉãZ¥|¸m”Ö•}²rg§êóæì¯þÇ–8µñÜ<1:„TÈqñã´“¤\’é%‡úÂúL½X…žÑg»¥zu‚/>ŽÛFAA ÝHÉ2d¼´*³™-ÓÁ¡î ×ós]<.ŒD;õ•K2`dHq)#(ÍŸÛ2¯ª`×Q añÊÛŒŽ£ã¢\äÙYi&J×ãŒÒYŒ”Fõñjr> ЬäMC3cÓÃÍTlÖ=¤èVý—¤Só\˜ÍuAÓÃîë›ÒõêÒ”åú ¿’Ô|Ì;>8[ƒÕ$'ßEA2^äÑv¡z_´`5âä\»(0#¿0Гƒ"°ªJÖëa`PÂ8(((@É@É@É’²¼Â~-µPr ™‚ Å]ï­“›q]€òø|ƒ’Îø€’Xõ3¾ÔL4%TÕ«a°¾}òÔ‘æí G'`°Î•£(éG7ÓYŸKIÜâ¶ðËZS–øÌ¸’¸Å‹œY`Í+YCÜ16ß×þFã¡ [¨™é?’¤Ä‘ùÃu‡æØs#,Ö¼’›úȶÇ{–BT£#®díÎj ÐÚI_%e¨R!ûXóJVo¹ØOwÓl“ý«¨fG(9¿£ú5jÛE|«Ãµí‚Äã¥ý‰ÜÄ-âO vÝ#¨èT'LÖ‹Ov[^QU’–ôôw™Ä-G‡ãGô:˜Ù‚3>°Ö}róPlL~³ÓüzØ=¤Ü ¥6ðÄ-÷~Á/æ$n`í°ª™[J…÷ŒƩ5«‰|¹âÛjP¶q2å'—waÔ”\Ô¾‡Ž…’ËÃ'£c'%%%%ƒ2¡L’© דk!(¹äà΋u“} ºX}¿ d d%P6g|¢W+´ yÏlØ_:ûŸßdéÕTWg¶ㆦE&]b¡d`N5Öøª*¾›hT/6šcßX "h›„Ô.© ¿]¶}v{rÂ>ÊŸáøEmòîœF¢o>Y¡­W/~|=ó´R]žaJUÙÀ3L){HMÅD}Z©æÎgøäÑß1ýFÞ–ÝÖ*äžý·ÈGÔû#™SAûG–æûXb¡™öÖm›K×P^¢¨dÖQyÊÚw&ÚÚÜ1EÍd]H·ËiŸ!hgáýæÖ¿Ÿ¥½žm4u¸ùwŽþþ’WÁ×3O+×<Ò¼ýÍ)ÃT\~Zoǯ6™fUF¿ICT5+–UtQMÿŽÈ7îòó¡§Þ=cÜílÌ1¨[ºª$§÷×4'eezPtuS›˜t¹Ü§%›Hv‘,tÚ366™T ¡0iG[ÙRßïR¬o©}YµÖmša¦ò/PU¶(Ý.Û^vûl§©0_ õ4Ûš™’5¹â¤}EzIkÌÎö[><ÃÔý£›ùþ¢òÓ&è~­ôVKÝ×[K?ê ••’Eöço7ÕË9ˆ.o'Ú¨‰ZBô¾4ÿ2S ÏÊôöÜ6nŒiã¶M¶Ùj’…NX·´V¶TÑAw\^ŠÐŸT-µ¯Ìè»äsyÅEí²í³n^ú®&¢ò¸<)Z Ù±ÉkJ‰†ö{"Ê«ðš·m±ùWê7 ð(Ÿ. šý€½ñª('#[Ÿ·ÕjèKTVJN…Ø¡…©ZGnS9mçÆÌ:£Ò\`až•) ­¶TøöSjÉûÿ¾è»ÍŠ¡ê´dÛ=ÅüVÙcïW.µ¯T-2Kõ$8¶ÖwL*eévÙöiëǤßïé2×[§)Õ×Òxt“Rº©¬{'å×ÓªòO0gú-Ÿ&^Ó›’žÝÙÜ|ÔG¿êÛ»Ûi&:;ë4ò§…2R²e|öu3;"A%¹Ž qèÑ´ø¤Àòd›"ß¹Ý —¨gQÝ7±ýŸ §ß?^ÚAG¦%ï$ýRûJï“éîKzjÚ¦2RlQ»lû4eA«gÑ@ófM¥ŸLµåB)ùUƒ{âÒK[¶ßÔ­û¨CJZÒ´µRGB{ìß|³ËGÔÞ¥WñwcªœÎø¶o«W³¢³"òfQâþ)\In—V}ÔÈÃÔ^Êíø[¯ ¿ŸÑžPýù‹Rü©ÂNõRûò·Ç¤øéje÷´¸]¦}š#ßäQ99¨ŸäÕŸíÑÔzIñ¦³ô–æ$Ô´\bEöøÂ-ý“Ôÿ³,ÐÑ\Â2©\½\˜“ÌŸËZÈÓ¦ªg%²¡<–HgkÂìÑ.÷Ég¡À#-³%÷x,Æ,ß.§½R[ºT1Ê^ÇÁ8;eô~ogËr£ë–°PÁ^+ÒÑ´«–Öó¹nyAUÉ¢eÖÎ3–³^Öð8™ÅñQ#Yé/×gGÝà¢Ëçüâ=5JtÕ;Õ¼1}²vpõj¾ª§ú×~%+S­ÓÍMó‚sZÉÉÔøêtSóàdjЬ4lx}RÏIž@Çö²,sïßË]tãô¤xžùfGn»l{®Õœs”ºó³©sfª<ª×/wÒ«RØ><¬®—úé§SÞL,“×oÒ~6 ÅÆTÃoòËÎõ³nÕ¹zqÓД8\Ç?ÔRõŸ×gG•e¢Âd!’³ï¤<úbÝÝ?ñÊœ‘δÖráÖõ^ Ñí…_µÑ¢½ý^¸ƒFÁçéûÝÚu'W@«7A¯/Ö3ÝQüVè_xs½öS¹*Yˆ6eªdd!‚’ËÅ'£k7Ú L d d d dP¦ä_»h Á"  ”ì†=@Y(aâd d d d%%° ,wW§…èudov¤%“/ž>ON¡7 C‚5¨dFLŸ›‰f¡îf|‚ŽÁZ.´óé'>°Ø5æ g3]$Ü.ž‹Lô¹|ÂÌY§SZ,aïýa=׃l-æý€g. D>Y¾ëÂHäì|3ÁóØLüôñäÝ}Ù!™]ï¤î¤à¡Ëâ¾s¿#;kÅ#'ÌïÏè§­—xR¾iû»‰Ýý­„»8Àj’—% ?ºn¼`ņXÂΓµ>ø“ÜŒw"MžW ÏNE‘ü½N|Œ•F¨æ¿³åò˜~ÖŠû8ÀªÒz£8Yy%ù‰g— |þÞžl\ï°Òþzý³Ým´8¥ãLjºGEÙœ^rب/¬Ç}`5 ÝŸfGÔÉ£‹mÊ w º+¡#½ÛºªZ!Vyê½Ç…‘èa§¶¥>ã£ÿÖ-gr§XžðÝ»TõtœEÒ‘¸ÅCJ-J¡WI¡Y6óì¬4ô tg|9/h˜'lopxó¨ d€3> dVÿŒ/q/ѯ*¥E%)ËÍr³HYö¬5%ó©òööƒµ§äyìHœHU³µkMñ:Éí'ZS `¸ÒŸN¦ªê4±ÙpEE“:Ç3¨ši&œª©eË—ÂÑZšK5èl ”(N^ î—}Ö <@kGÝ÷¥Í†M4w¨ñÃûÈkÛÜÚ1M3Û›­ä¶47’ÿ°¹áP€ï¥®ç@²©ëØ”È'‹V§Îi;Õ9O5µ’‡ÖÝû3¾]'Pªj(̶NTŸjajŸ¨N§ °HF•@íd)hbªˆL*z”HÉaÒÒ™"»©“¯v“ªó$_xÖ€]DqªsÚÈÑ5:lä¬3äÄɬÊk=‚@¢¼Ì=~7„ J¤ä:J<[gŸ]JÃÒÛ“²…ïòe%‹~ëH¬ÝaX¼Ã³6`XPú89J#£#챊^äñn5EŸLUSøšÅ#'pÑ·Mc¢GµÖÓÁ‹³sÈdú ¨>9Jç;«(!Ööۻتi`*#wó¹iÓ`mòŠÚªö,MÐ2rÎ/Þc‚aA‘)læ–u÷Â-¥qjmÊ"_®ø¶”mœ @yÄÉš»0jJ.j߃  äòðÉ0âd d d'/W.–=†’×øŽo™³`仸 ‚’€’” À:¥€ù.0`¬5%Óíæ»%¤kOÉwšï‚2¹. j°âä;Îw‘ÉuÀðÉw”ïBBÉu Ö„OÎÉwÁGûó|Òv9ßÅI9ßÅþOD¨ÑaÛ}>§åk$àZX3>ùÎó]H¹.X#>ùÎó](¹.ଠŸ|çù.FÎ#×(Èw‘ò],ò]PÒ8€òˆ“74Èw%—Èw%—‹O† '%%€8y1¸r±ìy0”¼þÀw|Ëœ#ßÀ” ”  dÖ)«•ï"Œ º7;3sŠï“Êt댎ÊS†Ø”ð‘7ŽÜ™P%ÏÓ …‰DÏõ [»æç£N-–)7¥üc®™³wyó~0îɽSŸfÆÇäÝPw­xb´%3Ç€(P% ßÅ<©)w@ñãäÔÒ–ô)0@ñ}r!ò]ô’˜7 ø>¹ù.Œ´ ÉP|Ÿü¡ó]ðŠ¿f5ÓsœñR(ù<Éù.¾Ã=ö’|M<ߟœïâúÀ‹9-GÎû§å|•¢kzøÌ€Uù.ò@¾‹e@¾ J]P×.64Èw%—Èw%—‹O† '%%€8y1¸r±ìy0”¼þÀw|Ëœ#ßÀ” ”  dÖ)«”ï‚mè*šÕÈ{Jè“ ï‚­no´y‘÷”RÉÈwÁÑÑò^€R*¹ù.8ªFÞ PÂ8¹ù.¤H¹¿y/@ }r!ò]ð°ù²Í¼ „>¹ù.8z¦^ä½¥óÉ…ÈwÁ‰1e#ï(¥’?|¾ 'yþy/@±@¾‹<ïbF”ǵ‹ ò]@Éeò]@Éåâ“aÄÉ@É@É N^ ®\,{ %¯?ðß2gÁÈwðA%%(€uJÁò]8ÄÊ:íâ­ù0ãø@q•̧ÊÛÛÏ(Åw´Ü°‚:Å.î,ßE%ÅÓåKÄ彯¶]·$(nqçû£ @1”|gù.bT•.'Š4t´Øe9cV)x¨ÎÜŽï@1¢‹;ÊwÁ|ìPm¶¼V¤ùz®äPu„t9;‘¨ý]Ä`õ•œ“ò|'ù‚œï‚ä|äˆè6rÖÉw42µP‘.gu^´½‰dÌ™r‹|ûk°;(‚’ï,ß…Îtð\RÎ+Ê©ZŒ‡‡»ïù‰%{ÑB T?¾"E‰“ï0ß…©?WÊÙy]”GÄöq„þfóxÖÐüAtàŒCÉw–ïÂØPʉ4SCRÞ Ý«Ô—w•¹ú¿ÿ\-ì ͪä»È\9&쿪\Gæ@¾‹eXù.V%du¤Óþ‹J5R )€Òœñ}x¶¥¶ÃÀ`=+yƒ|PrY€|Pr¹ød˜`‚û“” ” ÀjÆÉ­!X”’ݰ( %ãÄ NJJJP2P2«À²w]{€è§;Ók±ÙæóÅM7, ”Jîgӿʬí¹JyŸ c°£‹iæå”W˸œ0â½?"yaï.OŠßø˜_äeR¹…ÿG<×ç)9yÿ[‹{¤„[”Â'Ëw])AMn•“UDjß÷mfóiû»‰Ýý­¾öKÿõù J™â‘£õ»û £—y9o×;©{Z7r€Uã#R¥/îmŽm'lWóݵYEÒ0ìò˜~ÖJa2~ùùϼ’_E`¥s¤“³gy«¯‰¸•¬­7Š“%‘‡©Š´Õ/Cº¹ï}Éa£¾yCœÚˆžÍo,õŒÊi´ä„[/>Ž[9Àªºé_\I§ÕÛCÉ%… #ÑÃNC%]Wx)ù–A%tÄkƒRžñÉé´"¬,Æeï¤\ÍzwVšÙLG¤Å+•å—)êc3O›ªƒAI•,&˜Nu”vÌð·Þ1‘S:9ì¾>°‰êÍþvhR*Ë/¿>è¯$5óŽÎÀ¾ X<›VÛ…ê…{oø; &N^ÝlZ#¿0Ð3ƒ"Sp%ëõ0*X#g|@É@É@ÉJJJ àÖˆ;åçe~|Ÿ„’7 ŸÄÑP2·]äýú~ά_Ÿêcsi]ú¹ôe3=a±X♵ÈZ7?­¾ò1²‰.Hè&‘M]lº <•ÀBæç|÷œ`Mùd‘D§è`å:y?÷$é¬Ï5æ—Kæip]”âe<²~Ž?ÿ˜,¯‡=„Ý×ç)19æº~š¯y\þyÛ"úÇÆ}<ùúQ²3Iv'ÿ[4²z¦c{³ÕKûÚßh<T|r -¤‹Ó)^êºX?Ç/ÓÙcª™fÑû,M·ì'¸Ø›ºÅ6³-ÁC uí>hfý(ÙÖ·Ðgë³²iaQ,1‘¸ÚÊœpŽ$%Ÿµ9t‚-•ߺV³8ÆZ†Sìê ÙcÒòÄŽ—+Ùû³¥Â÷YâÇfV³ƒR³-> &B£H‚·^”,Øll²²IZw(Û>ö!»@'Û丣´,¼XKDÝkÿ¸sŽiú˜Ri{tõÐüî…‹l&””†s[!×Ý::ã[´öw ZØ$”Rñ˜Y¿}$ÖîÈIÚ£^Ý”ZwGžsLË&¢™¤FÕâwýU|‘´®|ò UeU&i½š}øFÈHÞ=Jzú»„ÅË ¢tyô«f+>G‹S¼¬mø1…Ù£tLäSÎ{|!ߦ†"q‹g|ëÇ'}fuö²Ùgvâë¦ó³~º§–ê†=4Ð@æsóî!þÝŸ˜ *úƒ§â Ω¶^ç˜X7y.L÷°c:obÇ4!ÓëaÏPþ÷™õN÷7©ÿž| ©<Ö&Ëdnñ›’ƒjyÚ‡o«WâçŸÄá•–›gn оÉ Öot7 Ê䌀ò8ã·IÂPr9ðI˜ÑP2P2@œ 6Ü ò]à”oTD@ÉJJg|¥ÄBÔKú:õm7à >øä5ÆèöÚ#³|rPMÁú„/*TÔêÓ QW«‰£‚¦Yå2Ô^ªö…¶‘/$šM̦ZÎÞª†[†O^“Ç®¦éKÛ[lФusËQù:¶ñŒqŠQ”h77Tò`ìµ^X€`à“×¢ŸtÔò_”ž¥$Ý÷Ëw6sÿ䪊´!1"DÄp …è¢fk¤<óTÃ!À#Ã'¯±s¾™n ¹ç“õÔMo8cû?¦†^û‹žHèñõüC·ï˜@qêÒvêN/(yMñýζF|T?ÌVNl¹2üþé}ùuû~ÒR´×üj”Í+IL‘¢ß>¾  äµ]-d3O›ªŽ4ä9©q3“ ]/ìln¤¹y2ÉU«èEžé. äµˆ¹o‚çÇjòþv°š†Ý¦&:FÌW›×œ ø/ÔÈUkû¿ƒû­Ö.Ëä»·ò]”š|¹âÛj€è(€BŸ»ƒ;$a(¹@¾ D@É@É`ãÄÉ­!X”’ݰ( %ã»j€8(((@É@ÉIÉâ×]cã_OÜ •ÅBqL6­T›ýŠîVjºÌFÚ5Ø sƒBÆÉ7¸vq{\ÿøï}õ–„L¾YqXE>Œ’·Ò›·XS·–Å“€’€’€’” ” ” ” ”  d d d d°Q¸Ñ½p~6Õ–ï¡—ùám4Ó¬ì“ýþ:ÓˆÉï/×Îò›Øñ•íá}8ÓŒ0Û¬7Ó¬è“ýæ>{¿½ÏÞ·O~sZx KAò ±½ÄgZ²ësÁ¸¡)¯Fd®iµ{kÄ.Ÿÿ&‡—š‰¦T• êôÜRö©•xÏK¶¹YÏ's*QgªŒÍæâër"µQ¥Y28G¢±º²4>YÝÕv²í¤º«ðÏ9:J»­¹¦³¤1¿ÆÞ£«Þ_]jùïfõ¦Ž4o³c"3ß(–¹iÏûÚ[¶6™¢=ùÛù:ëci’™9Ô²mÓáé’DþzÚÉçŸêó?eN{\c{’”zÐåò•Þ²–ù=ãav\®1yìuœÕð&HôûD:ë“êgrqMò\\<Ù–Û§„å:‘«›ÚeIÖÖv)¹¸”îô¾N{ÆÆ&“ñ;õÉ‹/¶gŒ'ügÆ]>itxŒ¢tÿèæÌ¼üc‹zÅ2‹{>¿_afíèf©·“.—û´Ô¿Òz>VW;ÚZš8Y\4Osº¹56Mso7Ô·ï“7-\êú·äo77 òU/«ÑÁj´7Öµûé¾ö7xý F>¶z;{Ã$qåÄ\éýM˜·mµù·Qîg™aÛêÚgÙsoi=Z w¶HIeÊc:¶­Ù:AþÃuís|ƒ†x"9óò'™±M>ùýʨ¢×cJÿM·m²ú7¿÷H®yÐ/ÕŸ3™?Ï*à¾è»Í¤ªóì&ÁâŸgÙòEÍÊ&#§ZØr•‘I5B5šÑœ8ÊNaTI!ö—Ѫìo³ÊïYœÅ輊¤3²=)Ï]îr&ûä)û¹®¶²çÒkIz_6õ‘u¯7•™—?}Û,.ÉíWF]?Ù÷LÉÙ‰[*|û¥'a™]Öiɶ{*Y%ÛTùóÒc/½áˆíÿT˜‰j×IŠgöÑMQ§JvpuNëOH5vR‚ìÔ¹¬¯'#q-ÞW™Ù,í/¸'ÞH=ù¯¤“ÒûRž» ÝeSÙäI^w(‡×Økßçy ºm—üRÕ­û¨Ã›™—?¶ŒmH1ŠÜÿùýÊ?¦6]tÒŸ|Ö¾{á’Ôqâr»Ôüã¥tduãä•®]Ôú§N²ù;ýÊìoHβèé„xyþÈ4ûy7ÿÍ÷»(Ê{3è>ýÙýÛUrj­>»È+¾zlI..Ý‘á#糫Òþfé-»²ÞÛCg³ï7i_'Ä+!é¹?4µûú;­| ¤¯›ŠBŠžþ×—#‡ì O¥ß€BñÒþDv^îÔú­Šm”žWÑÙN‘Î,êW©¤¦úâ¨|öG7Ú©PýùÂ¥ñÉ4h½úÖ©w„ôyé/Ù‡íA xÚÔuô)ª¦pLJœFOs)o'¹w=\ËÂÊ9µ–Ž^ä)¹*)1›S›'Û¦#,€RPö÷(åÇëdom ÅïK—Jûr³çVÕ¨¼9°Îø”ßY¤aÞ“73ŠòW͸nyAUÉ^Lz¾Ûdzö½Èóû•w´å´ eì` ‚æÒí´8ÂðX"Ų«úªWÌAä'ÃÙÎç>—þ®GôETú+©©xªÊ¬gƒªÊF•r¹‘MÂÌ|Êl’®ÀNG“se*´*a:œÒÕjÂþÔ¦{•ë‹ì!2YÕ,ºzœ[Ó,•ýE¦Èp˜Fç}-ó³Ô”nÁ÷¥iV)Ï]˜St:ßy¶s>}xüÄj“:é ©5 š³÷…’Æ:~‰.9K©ªÞìLÏ• ¥e}õ‚ Ï=|öPÚ4gï›_¨Ð× ùýÊ Á@÷ÎùMKx&UsHé-¾ž¹ -Y+œ'nݾÎüD7ʦµºßYŠâ„íMmI; ßV¯kÓÜz6­Õ=–qR_.¥¡âò2MEÉžyŠrÆ” ” ”  d d d d d%°YîÛê¼á[åwwB™ÞF5Ͳ÷]Ô®pleB™Þ5Í-ÝAô¤ôøÄ2%©ˆ!¯ÞO.[‘üÙ ^¥4ß_\'5_]JH¯y¹¾ÒÁÈÛó=C"¡_#ÇUÓäö|""¨nx»|êé?!±²RXÈÿÅQ¾®ìJ±i*W‰šJu‘•üÄŠ}úÔJÂ]Âwd‹ÄÎ|mi“[ßËZb…WýÝìæõy\‹û>Kø_S‰7ªUÉï|ÑðÝEÎ×óE{ú«¬æ#|§ßÎß“OÎϳ¾@‰ÓÁàüÙ ò®MÍææsîÙcl=Eg#ÁÀiQjà5Ÿ|2x†¾-°æbd.N)í¤2¥®¼ßÒtZ2,=·À^[$3轞å¿^¹ (ÑéŒI’ssÁùäßœäõRÒq?.^žOã:tÍOÆOÏ%? o‹KŽ'E"·‘Ôg ” õÉ©p`n.É+ÎÍ¥{–8««~¢Y·wí¢ª*ûî3éž9X£¼g£“á™ùœO“Ózý3/Ñá§µúXBjg’kf<­­þ~Ti'•yºŠ×•÷[šþŠ~ß4öÌ! ?­5<zé´OÇò_¯\¢Ê£™Aµóg ÕÏD«ùæè35ìø¥ãŠqðAèZ]ÖëñKg"ËOu,J‰˜¡êé#ò'üé¹”ÉmPaÒŸ ñÆê¥¡i}ï…Âf ¸=% ™¸Fd>ék™·”¾"Ɇ¡ õ'ØÛn¸BJ ,އR¤žÐç¶‹Ó¯›¿ß"ûd ü_3H¯biu“z˜½¶¥¯7Me& ‚@‘ø=r¹@¡ÔWO(ÇÅlÀS¾ª¬=Ö•;æ9Ä"Za¹ãQ1«DI’3Fh¿HgžR>Ϙ­¢’¼†–Ë€¡û"½ÿp²dJÎÖÖ=t满k™ÏЧèÿ£3Ùz?;Eo{ùgyF΋ÓN©›¿ßâðˆôø0z8ô·žÊ¾wIÕÉ^ÛÒ×›}Kg>°yæô¹oôŸùî|B9®NA²†*Çë)NfHvÈôSöxÎȹLzêm9„Zÿ•‡ééh¾&:—U’þ+Ð÷£%S²ÔáÒ‹Ö\úOùHæs™ªÆó+¥ä¯?ñDÍòâ9»¨Š¾Æëæï·8°HO¤š?wŒuÌ=ÙWÍJx¥¯7‡‡d=k ŸøÒs!i‹¦ú+Ú3å¸ÄTÚ¯lõCîñ<"¿EÞu&ù_yñ+rZž3nüFï•ÆÇ)YJ% t¿Òù·Õ•R'ʉzHÌË®YEÉä“/°GSO†óÄ “ŽŠOΧÛñ² ŠóºÊ~‹Jû˜\ mú¹¥×–Î2¢¥…8Û’ÿzÓ3ËË Oõè$Ñ‹þvÅcÙãJ’6]1kõJîñ(}Æl”|R:{?™ì¬ ³ÀlEG³Žkq„1ÿdR¨(húÛ‘ª¨‚·Ñ=6§ú¢ŽŒGøÕSÍCyä+´zÄHú/Åc_ҦѨ>[áõÇ¢‘Ç´évVÆêFY]e¿E¥òñ°J|\“~î׋ñ×–-c+ù¯WÆøPD¯„sÙì#á;í#aƒö±?~å¸R_QÞœ¹öXOW”sO×–9n£/J¦ÐjçIÔV1„ ¹¶âëù{Ô=R‰ÒËå»ðç~ÓS†ßV—÷ámÓÜB¾‹2ÿ_Q—£i–Sr™û)¸á²4 îêå”  d dVÿŒ¯Ìùy™ß'¡äÂ'ñFEt” ” ” 6¬’-–•ëËe±åa1žÝÙÛ‚µï“ÿz¼Âîìæ½1ج%ûÆÇü—ê\.OŠ’žñ1r—¸ôkñ‹×#¹h6żc¬Îßwó_œ—~ŠÍ?6îãå“nù²pCwÀê(9Ðnj8¤ÀÁ†€ÕK˜¶n±ÎÈ%ʯÅ×d~ˆxºc[³Õ»o>aÛÒÚ1½•/Õ™¥_¿¸‰-7Ôµû`oP%‡è¢žfÙL·s´…^¨ð{ýô´vgz)Iî?·EZVÿëË‘ÃNi¨–Aw%t¤w;_(ÕŸ~!û ô×'ëinžLTMÑk=JG³£‚éaÅjŠÙÌs²ÂÍvÕËÂ÷.u=iÈÉjÔÐüAR†¡*¿@3>PTŸÌõ6j>/ÔùÜ”i°~:5‘Ûà˜Cá:ÇKlÖ4ì1 4ÐK½SÍ›†&’ÚV0ÑR}ŸÎ+jªÏÏÐ`#ì V‹åÆV—9?ÿ$¯,È—+‚WPöq2P2k⌯Ìet;”\|½Žè((€Û‹“[C°(%»aPJ¾ öˆ“€’€’€’” ” @áYî" Ñ;êÈ^9©Å 6K“…”HÉŒ¨aáCîx/S0Ÿ cPÂèb L‘6f\cþżð„Zqëo‚®yÇ\×#$z®-ž&Ëå“2bļc㞤҆'ÜR’n±ÿˆûú<%¼ãól-ávM^ƒåÁ*údù® #‘:A þëØ3‡/©ï»ç'Óöw»û[½]ï¤îhùìùæønçÖië¥8«MoÔ¡‘J¯ñdC #ÑÃ>CõÕhèH/MSƒJ*EÊM“eÐ_޶; J›¥|‘'×ÊK·À*Ÿñ‘±[Çg: &,“äÝYifkž6O”UI Éo‡f¥¨:ÊÓdñУ­¢šÔé6:KN6eùñ+{äÞÅör–«xÆ—ã”iøoÏÍ>2TO“Ãh æc^qp²µÖ鮿QÂàÜ?0½šÎMÓ`oÓ0|âYVKiósêumÎ>Mƒ>3kÐ<ä}t°–…åγi¹ÌFÚ5Ø| L—¬w´Àæ @qrž\ï\ɱ館3WÞzƒù`\UѤF€ÕPòç»Ðn¾ÍŒŠ}Æ” ” ”  d d d FQó'ûaï‚oüK§dš‚Á Æ]ïá¾XDå>à d€è¬iϼ¡#gøäu޹Î<"ýÕ™],&ù kll*‘^U~5}ɧÇ<ÐQé飾®¾.U›Këgg\c㓉;ØSjf|Ì5™¼i·{³Û—ÒJK£dßÛ-Û7™^´utq–=Vè¨ôt ]B·@lê’ÖwnÞÞptâö4µlË¥ÝÞ±~|r˜ýiG[¤7—ô›sy“|I`ïZŠ'k÷$Ç”¼, ¤8D§Hlbsi=JqÒnMwžÅ2?îI±YxLêC¯‡Îú\c~‘'Ú‘Òñ¸]c^É…ÇX[ýèæl·¯»yK©¿}k7þÁdBJÇ“ƒ¢‰Û›;B)Ïõ wïþ1×ÌYÖvÒ]R%WÑAwޏfšöµ¿Ñx(HÓÛX/’×¶¥µCúüÕÐw,/ʼ`›ásÖßuí>ÖîÒ–£¾m‹ºÝ'kbúÒöÛ4c½ÀD5¾qx[0n*鵋:mÌFÃuÙqJûôªgóä)d ^PŽZ.yœlí³õYØÔÇ¥C›úìVjÈz(³@ÿžÍ®Øi®ŽH»“BT££ )IîŸð :4a<% ®lê³Ûhð­ÎLKSœ’‡õ7{'Ô²všÜþ¶(à’&Z~ã‹Ò³<?ñ QU …k‰tBI•¬ùÇÐlבœÁ¦Rî¢×zÚØ;•ºI€‚Ö ¶~«`뷱ɔ>d·\Ùö·æ~ꦲ}¨âYuNž$‘zíô ÙPç´‘#ÂsB¨·\ Ù:r>¯;OJç"±nOPuæGÐ’˜HÒÄÜóÖS÷h·\G¤]Düc½ˆBYöz²P}áâ0õö(ù*D1]ù¡Î®.Þ­ú­ƒÖ~6 ì“;ËTsi’Ý’€™Ê¤R̤ө”Sëè}9rØiÈI¤#ÖGö%xKùFJå¡’“óôÙEa9IšðQ}¿\G~žw‹îì–“¤Çé¬" œâ²qžŒð´‡<‘ËÁ„ÅKìC'n9Aúgœñ•«Ê:¨LÒúuKX¨`j(>'m¢²ÙŸ*}È$LÇ{Ñs²Âͺ߽KÍÓñ0Ü–WT¤%5Å‚rËyXAr{Øò‹¼ƒòRLýXÖD-”N±^äÑx5…¯YŠ|‘v9ŸÜðú”H÷Ô³kªQÚðåé;K¦ËçüâP=Uß3- 6²§ãoBI¥¦—Ïì N6?Ä×[†§“¯×Ò Îéz¹‡gÞa³¯Ì š”Àùܼ{¨–š†=¦º:4!j¥Ì;ÍC±1aøÍÎ:çK²óþÎ@-‚ê{fXüÜb>âí¹9Kîý‚¤ sߣÔöÛ»¤§˜6 Õ×·œï"µË¹õÃ>™÷ÂŽÆ)ÞY~ã`‡:)O¡e¾­V~RàŽY@l[»¹vî0s‹7úÒãPòÚSrî¦e”<&lã³ñÔ¦”ô$ôëCÉ·|Q3=õ¬=nvÓ"à;þ8]?ÉÏŠ{/Ü]¸©”ƒ’k߃ÁAyød¬øŠ@É@É@É@É \)]"¤Ðë×'˜FÌÊÓƒu¬ä®þ.µ2IëKn Íß·™¼ñ°]^~#nÐv¥aÄqŒGt±yyDQtHÙ KØs=L©]|¤¯âÙtV¥Ë¶ûøÈ—2”Ûb™wæ\maYÙÌYæ9ùè`©\á›S‡íÞå>«ì—­¸Ù6îmÝ.—7‘3Œx|4z\œwù¤Ñã.¯[¿•M¶ìÆËŠóѸ•£­¹a/Õð1Aª:Oá¼\Vý™†b¼¬F*›ŒÈ£ƒ©¹Ò7MÏ*uêÔÒ Èôáôs)á3m$®èhN~V½–í7@úüW ä<ú™ŒûmlêÏnì$:F]‹_I7uJ)i×IÊK¾!Þx¥¬Îi=ð Yìs÷&ë¨;·!LÉüçbð6;sÞ ì¹¤!” Ô¶‹í£ÇqÆwc:úã½]ýV6Å•8ºÓw•Ý‚x £t¥2ƒîÓŸ=,VFøæ‘héO³6éݾdô¸ £Çá“o…AkeÏ U`ÓbqUS$f‘R/±Xã>6ûef”nL¥ëÌÓ›nã!÷®‡kY+^^AÉ‹Ÿ3ð"U-y!¬ Q¬¡Ä}Òº?*<6äŒw“Chà“ûä^êíê%âS>æóÞŠAiˆ¯©oª‰ø(Ýd…´}Z5Ø(-‹ÛLñ²MCÞäY*7÷yª—¼W÷,ý:‘·¬eÏ5Ù$­ë¦®×ɣǓÃuT}~Zh¦†Þé&HdpË#R ߔ̌ÞWœo«ocP±Ø¶ãbq‡#R B€ö…HžŠôŒ½·~ê6ÙûÔèâ–(ÁMC·18£ÇqÆ” ” ” pÆwç#†¢À':óˆiu'ô(”\ RdïOöÙûWo äbÐGLnö>ûêÍÁF¥¸ßV×9»ø¿Ùl•æû'oî0xA”\/ «ü烒7¨’‹|N«;¡]É'­êŸ Ÿ\ V]ÈðÉ–"ç»X×&î&zK+-ï¤âóOеô£²%ÿO._ñ=ºQ)²Oæ¿zŸ;ñÎqy™äm$ÏÉ).W?S¾Ò äbàL9íySˆižÍ¯_?ÀJ;¼®y"¾ˆ•³-£³wMóò±ïeÊ÷ºþeֿܹóÞ‰ÅûÃW#PrQà_^äýuÑ_S—½o·­úaVúá¿}Üg—Ù–§¾d>¼¯¯í§[kO—ï;lzéàgY¿®[¼?|5%çÙì}6&7[zN1çcÎXŸ-Jcýßé±+\î6öªN¶dõ¿E¶ ±myø3D/§ËÃdzŒ‚L´¶ÊEûSÙÑ£Pr1XP2¥çaªì¯¤ƒýÝdgÂì!ž›ˆ—z竟¢NR¬vÏwÿ–zÒåqÚ¹‹žµ/Þß|2”\lý¶Üé Ôq²ƒ²õQ?f¿ƒ¶öK)·ØãíÀéSWÿ[ÞúR¶¼’N]=µE®Ó¿hBBÉÅÀÚo}'ÔJÏŸ¢KöUúN¿†|š•þ)õïe‚µrY¿ÆnYkèÔá]w÷‹t8”-¯¢ýÿå¤×&×ÌÛŸµ=ºQ)îõdæ7{&9e¾u.ô¤žJlýÕ@à/ÒÀcM±sŸleþ–•Ÿ¤ö­©Á·¬ßwNÿ²åÇÇþ¨F`Ò^´?6 K7(êoä¬ÄçêWõÉ¢ÿúŽ¿ˆ¿g“çþ{>Úá¸ë£¿õÛ.µýâÏ?÷·]~`ËŸóò~—•ÿ›Ã¶_<ª¿çbü½ÿu¤-”SÞzÏåŸÝñÑ“ÞOÎ|«}ºQÈ—k±ó öȹáVkŽþݨ÷"£“¨kU§C¸ƒhÃ/×âFºcªc6õªÍãˆ.6htQ\%ÿâÿµžÙóÜ=7µjó@ÉTÉÅ.žÿê¤:©JýŪÍCˆ.6htQÜ3¾?9³p&Á¦Õ›£qÆW Ÿ\„‚OÞ >¹Ü³Î‚òÂ((€ÂRÔ89 {=LP*%çüì.øÐÌÜ”LÉ4‹ÄÉ@ÉJJJJP2P2P2P2P2€’€’€’€’” ” ” ”  d d d d%%%%%((((@ɬ*`‚uMÞunèß;„O^ç˜GL#ÊŸ¼ ÑUUlÑ(„²æéërv lbûøzj&š´ êåºut¹•6/»å…§ß´ÜL‘¹¦å XK^¶üb³ÍìµÿvÛ^мñúß>~;ÑEÄðsˆd]ÐÍþD?vK?G4Õñ«ÊW¾Ù·ù–wpîêŸ÷[o^}ï ªð²åK÷ðí/¹…×¥?!ˆ·]ôEéH›‹¾±qŸH§=®±=IŠísyR”dkî0%½®9‹…Îú\cŠÄ–@)pˆ¢èìOîßEéþÑÍÙ~ {\§)åvÏ)^Íó&ù’Ò¬çØ6÷uåÇçÆ= ~³ü¬çzÈmIRÒÂ>¢iKW•ÒÑâ̸˗¢Ì.=®‘oÜå'—ô™Î7λÇs®ëÒ3Èͤ2ùùøkHL޹®Ÿfk“n¹U¿VÚ•Î5Î[Å]nJíK¤t¹fβcØÃAÛ¸8Y¦h›ÛêÚýtº¹56MÓ±mÍÖ š0oÛbóS £>ʪìk£ñí9(ªTØI§Ýic“$OÒÐO,·_uÝ'hÆV½ù¼mè´ ô£D´Ñ®,%ê­A ª3òÓë¶Ó*š§ý‚•…èýô‰æasc{¶×ÙsL“¿ÝT(¸-ãMcÍ]ã-öœsÒl™ô¦Û7ÙO°5c‹\ò¦¹hS÷¡Äæ.Þª²Ú ÅÌš¹·êïcÇðK~ U½ %kºâ]•l Qjx_ôÝfZ wòj+mVù'ØòéˆÿîiŽÕEL]¢8ÙÖoS&i½©¬{¼bº_˜L´$²>¬Éœ^Ñ‘¤A¥%.k(./ÕW1ÁÎ’ÁÈö ·2R„yz#+‹ÓÎô»ï6˜yÕü9ÂT-?£Âe«_Éì7é5´Tøöÿ$1ÒF1ÁbÝZµ4I¯Ëìœó÷W³ç©¯Åˆ/ÑIDAT:Ÿy5´Òï“.¯ä*ö<Ü'‹´k'%è’#¶ÿSajÜa¿Ïó÷Ä©‡·¤£;ÙF)(ªTXûmýÊ$­«[/öQÇD¶_Ô<–î"1ÓÓ*’”“éG¾è˜¼$Ê¥¬oX+V—*ád¤_Ã6>’yÖjÛEb®ŠºÙ6A•³ï3g¿ùðýÒÜî…K¬¥%4l+r6I¯K¨±÷üˆïs×Iv<Ê1(¯þÏø4ÎPŸFju•7>!^ž?2½MÿùöÈa'{þe—ÊRÜ ü½+@O¥£·«?Î&+›¤k¬û—öÇõ‹³ë¬=½œ’å’îÇEHõÞ·$ˆRð­íê9ÇËÎt‰BZº§:—:EÖv9-¼zl‰«Kñê>jÌÛýÏ?ɯ%û’B’½¥CQŽA\Á+\Oþa.¨†"q‹‡8‰æ’ž~I/Jñ •[héŸä“92ÐÁ¤Å›ßëF:f-K´¦¥Ä¬ò†J—I¯¡‚2¡¶ƒ½ÿÇ¢†¾® µìü®š"1¦Â*:””¬»«p_yµJŠÎO ƒÔ48™4SÃðoM ôÓ© WùÏÌ^Zýëa÷P-U2ŸÌÿº¤ÇC|½yhfJ®_Ô/õ¾Lœ\55XÃçJ?.>ÙŸ4‘ñ‚O8WKµýI®moO¿äØ ´#Ÿóû†ëò[Žœ›/ÔPs¢%¿ÀÜ7±I^Ê”Uò×Pët×d^ ÃÝ^$£øáþVhË|~JÅTøæÀ¬IŠ’«–5„ÌY ¹oãçé]fÓè-·cõp¿À^@xgùêä`‡:ÉÿB·âP,·ý}—H¿ízS+Å}A|–åÃ|çm—“ëßwÑ0ë7 ÖAO%&D´/tõâí>øx|D+‡¢µ‚¼æÛ 9Ì׊·]Üz=dTznÛGn£Ûoñfû|Û‡iÜz{g|¬3 d%%%%((((@É@É@É@ÉJJJJJP2P2P2P2€’€’€’€’” ” ” ” ”  d6¶’ñ3#`µ¨(æ“éï‚Á¢  d%€8¬:þÕÙí:üÑ[øäuŽyÄTǦ‘‚Î]€¢ÓgïO±É^Ðùz4ÄÿnõÚù(Ü H€ß¬öBO³ë"ºÈ—kq•<ýŒ»Þ“~}¤‹ÈYèi” %Æ)IÉuBR-zò­C%#N^確ðÎø@ ¤L$ žCÉ è8˜ðœl*ð¼L®]$î%úU%Å|-ŸiYÔÂB£ÊÒ¼OÔXi4»"¾ÍÊ’Ûd@œ\Š8ùD½¤3é'KJ–§=V¢ÝÖ•÷4ݵåÑÑœ â”1½¨›MAlÅÀ)ö‰¹Ñ©¼tô€¸xûmMe]ÌÓ¢1æ]Ü'=®1O˜Dÿý./×gÌs=Ìfc=´«Ób‘$ì¿ß'Ò\·†޹¹ßÖgïûÒs¢“mÏéÙüKƒö]ü ö9ÿsÆ:œ} tü¹Ÿ^eÛ/ÙÖoe“-=?I§¬ß?ª½r’¬}ÿšlýôìæÏ½}ü÷ã§6ú_>¶Ÿ[èéÐF?ãEÇoT' ÿ˜PlÎ$Váo=>yûäUŠ'ƒâR  ºP2P2«âäõÍ“«³Û' dPdžXGïD¬-ŸüsØ»|&(Ytñq¼pü&@t dÖWt‘÷}>¾ë×'˜3°XÇg|]B—`WóÇ._¿¶9D¢Þ¬YZ3'WçmÕáI¢GRº5®xÄ‚’Ý\P2mjß´í¥#ˆ·öy¢ºú™|r†œ|ºÒz˜"•?ζÏc½h¡+þdáZS¼.+þ™ùTY°Ð¥p´–üT·\"÷´À|óŽ…“)]%µÚø÷þ³:«¹ö¯*ç Âü‚X¥Q•ÙA¯€3Ù—T&i½Šºy^Ãà¡ÆúvoD»fisG]4ÓÄ×nn:Ä“~,ÔöH6¿? M•†$qòû:Š|_«ÿ^œ*â” (Å+è£ß¯ù—÷Cþ~•þôm %ÛT¶>e’Ö'ûɶ{2IŸ!QÊ([«¡‡(Dº¬O“±Š•³º•Ò$eûDÂ΢GÊO~ç‹ü£VÅ]³VÍ$Ü/Š©IQìgñc_«æÛ+(¶A”Ü¿ðšU™¤õ-tt’ž¥¶RN>¿OݤÊþPPœÚÚX9ÑÇ䩪*IœüÄ'ž™'å§oDÞÁ¿y.zfü¹øs¿!ÝCï/gÛ¿õíõù»8w'+9Âø$g jLD™}®æ¨Çû©lNÎJ9c'(5¿÷OÊOc°Sv¾ôÈ÷âW‡¢ôiÌÿéÙ3Tªéëe×S+úäŽÞxoGo›KënËiQK2R4'cç_QdF^²XXpà;óAÂÎRÄÉštïÆØŽš~ T?`óð·Ô_’·§ž ³8Dù/k%[Õ=•]ê®A6—Ög†ÿÐ5ñz=™ÎMO 6§k™§µ™&õÇfÝC“R©ãä¹Ð«äŪÇbáÇ+ù’†‹ûÿfææ¿hàÛç¾TU^‡½R–ÿúÁÃÏ=üÜC?xèŸ+Ô·Õ?ǽpä×ü®Î'WçNûu1fä3·|.ü¹yöf X¿g|¸i”Iœ @YøäU í`pPJÆÀ3€è€5]€‚ó$L%—OÀˆ.” ” @âäÖ,Ê@ÉnØ”…’ñ{9q2P2P2P2€’€’X–½ƒ(q/ѯ¤!¹é´nlÆþc¦ó¼ÉÛ“Ò›*•ñ™iBr8P%ó©rÑF¦Å=ìáÆ’ôyKsúùþVeu7«¾û¦X¥èâ;4D§ˆRîësÜÏzïç3‹ÅÅ=/ÏÄò-—+À7Ì{Æ#¬Øõ;å4Ìþm%Ñ?æò ÷³J÷+,–°÷þ0¥<׃l-æ½ßåMÁü`u|²|×…‘ú©šú¿E3¶žo¶ã²œsÉÎÕÿ³GUû.Ö}ᇻ[½ææÿëO[å=TÒÁþz-ÏèyYÜwþUd"‹˜ùýýŒõÏø9m7±›¹nÜç|ùÑ…tãÅ]bÌ©sv‰B„Œ:Iß:C^­0Õ$)À”üc‰ÔñÿO”Î`:Ýo³ÑP½ú3T¥¦p~ªßîdµ£TÃë.ÇÄóËáNpÇ´Þ(N–Da®UKaC·œé±‡„ütx |»(‡&Ý£ƒƒ tLñ»;ÅKþÍÏvï"Z” w'¯"‘§DlrبÏlÀàÎ Ý4NNP‡å(ÅÉI"׫ƒRâ"õ³í¦×´)çÇG„ê­é?ðŒž££Û—fDë¶óu»VõŒ/L—GG˜’õž•âæè¬\à”sîê)¢Ÿd´K±p6<±œ´ô_Y›ïÄ-þ&¦,Uò>=;{̸– VëŒO&• S\èl¤ÆW§š{§š³;¯¨—¦‡ÝªþF˜Œ•ru®.³‘v 6ÃðàÃÇÉ7¸v±ú4úfÅ!3z!ºXUt›asP¬3> d d d%%%%%((((l–¹Ο»‚߯.°kÑ}òˆ¹Î<"ýÕÁ@v-²O¦.gW›ø\ÞŸIˆÕ&µR¼$5VvCl¶€£AÊ.×b»Z¤Çåy#ß8ŸÙ-lÏF„ª_un% ÝÔÅ&‘M ¾9¶w¨éæ{ÛSHñ•] ®Åv-Ò!.y’iÛ¯’{6‚OÑÙ%OÒúlÏ›*³GÂU©ky2—ÔgÿŒ4ͪlŠ¡”7‘üƒóÓÌŒ¦AÁp¥Sr—Â1³J5èÎÞkÌBl6*°vñédªªN£ìOœHU œv±ÙpEE“ZʪÈ{Bœ ª õ⺷õb»f|æ¿h6\kŽê¿}œhn¶²Žç]PlÆ­;AÕ¼}Ús~mƒZ1~Ê+YOÙ׃FÆ:Ö¢‘mKNÇê÷I©)-ty.Ö¨S¶·ŽÒY)÷_ÙÇÉΤÓîL›œÒz”äl‡Ó—¶o²=À—o7¬Þœ&^ó¶-1¿”n+p¨ñÃûåÍ uÝRM]оö7iºc[3kçµmní˜NïÏg½ÀÍšm7Ó±½Ù*=Ïèè¦à¡†úö2HŽ±Ø®¢ öYj0nØOðÀúŽ ßªØŒñ ›‰gÁÉØáÙúŽ@ºí7¬æ¬(o׿Ñ «I²hG}&CÂÜ=ÞÎÞ»é d[ŸµÏÖ·À&«ß‘ Í[~㟢gùRˆªv޶ä4iQ=8EqRÊjÒéaÌÌ·˜4¬Mˆjt¤$¹ÿü]Þn"zª%½¿yª©Ík— ‰ØÕd“O u¬^G¿»þm½Ø®©,MJ`ݕٖê_ä¶”íÛFEÚ>yЪ²*“´^ûjPŒX¼Lõ •Ï*Š\³xXãxæS.ʨƒ·šÂ¼,=ý]‚íÁs²ÂÍZ¹w©êI“Þ_½ö™nçmÓ˜ä¼s³] 챆"ñ%{\‡,¶ëâžXƒß}Q2æØŒñC:4—k‡'#¬F%%ž”Ëf3û0QäE2¤·)²7ï)2u-Ú>ùh/û{fuöÒ!¾®yùߺèž2÷M•ø÷Ü´i°^p¦ólÕ;&¹mpL´(eù˜_»‡j©iØch MC^Q›ÙßÿßÞÝó$ Äq?ÄbÚršè»Ð¸WX|¼âèÀÆ r4 2ð|j¢Ep‘„(¥OòМ„¥M<¾Ÿ¤¡9ŽåŸ_J¹’ÿIçúJÜ‹åçŽúo9'<«‹ ÿ+Ø<Šž­·’uV”—Ž»¯ð¤ä–*+5 ²Ý¯‹:ܺŽ-d÷½}¼76ýêE¬{9°Eí&³Æ–qYŠÇõ¤è¦5²z|tÔ2xªú$Mol¥S×gyè%Öú㱫òØtN6ÏýÇÖ»i©’¼:;ƒ$OFßž!‹ú'9•ºN>f³¹¯ûúœîªùÍsµI²âî"ë?·†Ø éÔUÕž,+—·˜«õ/>€$$ É ÉIH2@’¤õ'#§ì# ’Ì.ÒÐ#Éì" î“’ d€$ƒ$$ ÉÀæyA/ÔœIgIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/function_helper_dialog.png0000644000175000017500000003073612032647206025571 0ustar ebourgebourg‰PNG  IHDR›Fª¸Ã_ IDATxœíÝ/xÛHúÀñwû (0(0(0X°À Àà@À‚€0XPp `Á‚ ,8Pð ,XP`P`0Ààd+ÊÌh4ýµüý<}vYšyGéÕȲüÞéû?×"¢w""óŸEFJDD‹Èᵈ(%"¢DF";‘‘ÈHÉNd§ŸæIìÑéÿ”h-*ýK‰>¼$ÖQºŒ’ˆÞ¬>èlIߥ}ö³™L奫C‰(‹ˆe–¢ì2#äü‘°¶ÞÚj‘í£lEÖ÷ò¸]}Ü«÷}ö³’ñD”%¢Ôx$’Ë“9G¢2¹<}mWRi¢LRçþÏtt­¬Œ¾{6xÖÏÆáOnEDä›–‡‡Õ¯Z’Œ®~\Ëx"¢åÕøÙrûd®žÕ7ÊT¶ËL‘‚ è5_hÈÈLÒ{:™®e'Oÿ’™“ô›¼+ék‘­÷E%ÿÕZ¾me§V¶éX{#ã±S?jùz/2ýNfw2™ˆlEèûËìjË[ö´"{Üîù…€õˆ•1÷3ÿÍÎæL£Ù·vò4ÔÖ‡·¾>ŒDD6+Yw­‡Ädä €“åÎÐ""Ÿþ­ÎgcU”{ ŸWÛËwO¹\o“ßÉ÷7òr*c%/ƒr%"jÿý4q]ú6wP0Lpt8p¡iÙ[ÐD>ý[]¼Þno—²Ýj½­÷ß ã²ü!Ïî´Ö[ýr2y³ú6¹üé~?ÃVËh#›û‘<*y)²Ñ"/ŸJX^ì/Â__)ýÛ'y5¥ÔëÉ|±ZO/žb²÷ö lÏóãÅ|¼ýð^&SõZäq+®¤¾½;LÔ[õ¨ôv»z{}þ¿•Œ”ì´ìžnv{aÖ§DD-ÿ>¾¾R×_ßïÓùV«‹su>׫õêóÕìásæÖ÷’ @’…·[¥D”Úß»6Ê^ Wû”ü”g÷ïê̓JïxÙÀG™ùTòšååxŸÈï·JD6õãùSÆEø¼ûãà¸ðø,4ÄóÁ´ÖúQËHKrÕ]kÙiÙi­ŸÔµ9|É-MùO—Û¿ÎéÂë{ÙlÔÇ"¢¾Ÿn.®'×2›nÿs3Ù¬EÎêk('Jk­’ïk=þñRfóÍ¿¯“¤.;Þû6ùíNÿþiûñ½ö>¼u$2Þ?¡=[ÇNo?ÞN¾ŸŠÈûwÓoõäLm·ê—òï·òùÖßíĘ¢®6Q--ö°‹Èt±-œ3Om6B{Šáþ×ñ䥌¯ã+ÐG\bDÓwžiyÜî¿V>›‹Èä¿7›Ÿ.ŸÒùNOnW"¢~¼”å/ùEk9|Ž~xŒû!í«ï§""ú¯‡ÉßÎõn,¿ÝÊåÅøÍ™|Ý®~¿š}ý¼Ÿu¡¹?-aüú}úOýqSidÜý2Þ||þ`»Èêb±v„ž˜§¯”RJþüœ7€£4âÿšùç‘Üõ¦µìôöÝu2mòë§ÃWÉöé\D6—gr¸Î~è±JDd÷tþùq;‘ÅÿéÛ;5¹]nfçòÃÙöµ|Y«_~9ŸË—•ˆ¯‹lÞ^%Ó&?‹Èä·L:ßY7®‰˜)>3]ntWW—Jälr'"“÷ïdµ’oy)2ß~?¼û<ÿñlõûÕüÇÛõë‹üÒŸ'øÛ±ˆ¨«­ýúþ«ž¾¥ÔÃ7}ó»~ÿIDäóÏj6•ñKµ}Ô·+yûQ'K‰ˆþr¥®¶‡?/“rVïÕlªDdý çïtZ©³pû¦}å,3;CÃöQ_ª‡oúì§ýW²Û~þYÿ î´zói³Ùž½ÜŠÞªî?º¿~¯þX¦ª?–wÿQ³©ºý}sóÛz6Uw??Ujn_ I£MOä•?ý±/sõë<ëðzzöáÓÝfúj?ÁûõýíÝVþºëþBÐ1þ€cuø„Z¾¥&ÉCcÒ¤¾émOCåÍÕL$9úé̬èýđ쇣;-£ñócäHd$‹ßµˆ,þ}~óáîáõù¿.&­fÛÕÕÕìíóév4žn¶ãô‡ÚF*óƒí{ã×ïÓèóEaC?üòIϯÞ^Ët¢dó0›NDäâb)?\Ì~Qòu-j,/ŸÒ­QæìµˆÈâúF¿¹¼þ§Ì¾Wòí^^M…ËtfÔžF+"Û¯ï’g‘ë«=»¼þ§œ½V²YËÄ}ŸÿÕG¥Ï÷óœMfž?}Öo.嵂ԣz:|íž¾o¶ÜH‰èý“bF2ùõéÓäÉízsu–”kÙ‰ÚÊL¦èýo¥Žžªyªl?RŸþ0}øóáì‡ñ½œmgóÉt|±[]üc¶|7›OϜμ]O/÷i1/³Ÿ¿ÍiYΕyµ¿I^=¬Æ/Ï÷_‰ˆ¼ž{ •>÷åtÿç×ûý²Vázj—æˆ6)3MðJ)Ù<È$›‰Í†$ó(5/XðåÔ0XOVÅEDößA‘‘JòüäÃþ³áÍâ|²¼‘ÉÍz{=“ä²üþÓôä—Q•ˆ}xðë(ùùõôN¹‘ˆ¨å…\_)™~?¾ýõAë»é÷5Þ¾ûi~>ýü¿õÅßÏf›Î¼]%r8Ýp| Ó°¼Ú3¯µÖû$Rˆ5¿ÖZmt@Ež‰I™Ùáûþ$*¿Ì}½¥D)Ü~à¨í/¶§/ôþI®#-¢&ö_ßüt!"ÛÍÇW¢Ôøö~û©­“úÓýÙï'ÉWÒŸRͧ›õåõìòŸóO¿­ô£Þ~Ó—³Ëë§æþ賫g êÙ—íž%®í£Œ_ÊÛŸæ“yq¦]ý¥ÎO·W7jýÙ>Êù{­å0Vøú«š/Ë_/Tr?ÚŸýjtî?1aûrzq&믾nR"rÿ×V¿šæ-X°æû÷RGr¸N«ýÃdÔd™Iç‡E¶×³ñÍZDÆÿ{Øþ}"¢õ.Sˆì¯·‹ËÓ…€‘6¾’~÷û½(¿_ýt~þãôóÿî/þq&"w¿?ܯ&¯Æó‹i&©‚Î~Ìùü#ÏÏÊåLÿòîü~£ŸÌ9ó_ü*ŸÛÙýQ¶rûùA¾i™œ}ZËÕ\¶_ß©çÍŸÿWVÿÖW—3YÝë‹Ë[ys™Œó³XkbÃüÍD)Ù>êÏŸïå›’ÉÙ͹~£o?^^n›øóíx,ë}~q#³‹¼ Ð-ž0ƒ†½}ùÎlÕv#÷wjó gjý9';ÿ³e7²¹Wk=ÉÙ\Ô8)DÝݸçÿºV_>‹ˆž_¦4·ðtMXÍVjóð,†Çüy'ßÏõíTDƯßëéL=¬õ›‹§[Þ\ æ®#££™Ÿ#×7òp>Q/Çòrüt÷ûÞþ¡îjwx¢»Nž÷®·rÿ(—÷Z]>ƒÑ÷òuýLV2ì3ú~˜®d$Ë¿éåÇÜïn'Ö3G:7_šþU$Éè$i€‡•%õGy˜eŸÑEF*ó¹bú3-éO©î¿ä¶Ïèiuyø—CFw]ÿÝi©ÅJÒñ·q3¼3¾QæÏ¼ª|‚MîÄÉœ,#KîDkÙ¾šÊv#»íþÆuyúX:û+é‡Ëìd»y=1 ‘~žˆÒ¸óRµÇÎzqÔOû é'Õj@iVš¸[ëùoWo¯¶_”rÜ÷«ÒOÓ÷y]´ˆL&çËOŸWŽoþ<¿ê¾¿^=ÝQ¬äÙíÅÙoÔí£ã8R®_Iÿ´ÐórßáÑZîÖúòýá9|Žþ°ÊŒÑµ(½ÔœVûÇË=*Q‡gƒuW'9LÀgwH é£^_ »ü ûOÊÓ ;z¾àNïošK¿†®sŸËqXt«e,²Ù$ÎÞ´¾c–Üvïù̘\àHñü"4$}ªŒ-ý95ûÃîg™Ëdtcâþ7ÍŸê1jÕ‡gÔÙ5Y]~ÿ=wõôhŽãÇ ßBƺ£ü?Ó›ÓÃi=‘ÇäÈöOÕã7cým{÷Ÿ§YÊ…kü hÞüç±ÈF6Ùé]j@F`Èè €! £0dt†€ŒÀÑ‚â~D;8£ýó4ùYo Ywww]‡€½óóó®CDFwÿç}×!@–—ëõÚ7ÃrÙZ0Õ-‹®C@ïÑV°«ug±XÌf³9%©¯×ëÙlæ?AÁ â0´äX²ÅÀ$ɯÔüÍS—årIw‚Œ´ç(²ÅÀüp:øöC@F`Èè €!x!"²ë: P ÷º#Èrùt“öb1K§$¯{" ²zTË康ͬÝüÍ<ûçê˪–2“r’Âk)³‡ŒÖù;ìU> ££X6«-—ë4ÛõJ©×>}95fšì) h ŒLig8cg:¬8ѨË~7žœm§ Ékû…³Ì¢²µç•Y#;;:óe:þËó–-=;gsVa×’þ™ Óã)5~5.*zrá9­‰k5Pˆ;ãP‰qu:Ml5N4êr¾ë9á(p^QžØŒ2›°ú²2R`öO#C$œsVg\N·kIóS^³ã1Ê,äI=ÉŽ!+¿l«BŒÑQIÅQiš¤Ã몘5=uE·¥?W椞7C:O6ÿ9':KˆxË/bAgK»Jçq)¹''2:º‘^©¶¯W{r¶q•ûd…§gÚs^ì=ºc$õãw~aÿ 4ŒŽÎW¿ ¯œŸÂmç³—=§ñ9waµ®çE÷3* Ÿ££€q­;¹×½z±i9žü]½¢R%ÔÕ´Öd¯Ÿ§Süs–ýp½Ô(ÓŽ§i[z+oµ0‚Gí^ˆˆî:ô\ö{kðQ´1gʼny…‡\8 ÷‡·•fâìØÔ¾+-oβµ.å§pΡ ilÏ/0à}'“•LÆãùXÛÞ½Ûv04www÷ÞËH–ËeC¿¦šM½$ Cö×Týë?™³…_¼­¾Z ý7ÿùL7ò°’Ç Ÿ£¿ârÜïÏ=b:DF:P{Ò%‹6Âq €! £0dt†€;〖¬×ëôkTè'¶ŽhÃb±˜Ífd‹>cáØ‘Ñ6Ìf<ŽþðÌ5>G·üȰ@ã£Í:??gä ŒÑ2:C@F`Èè €! £0/DDu¨ˆ1:C@F`Èè €! £0dt†€ŒÀÑ2:CðBDt×A€Š£0dt†€ŒÀÑ2:C@F`Èè €!x!"ªë @EŒÑ2:C0ê:àø,—ë쟋Ŭ–2“r’ÂãÊ4«+¶¸Hºª8Ydt R+›‰«›–°\®;ɬö‰€ÑdÖékûEvæDú®ƵvQéœÎÂKEh2%dÙæDW  ,>Gše$¶4¦Ófd2{μ2cpeDâ¯.¢9žVóLj”¶zfó¼=-»`H¦ôÌ“­®¹tzJÑPùÀà‘ÑH½Í=Î+Øöõó¼ýóÖ1CZc•»Ñ¡±3bH¦¬’M — œ!Íë$u Ÿ£u*5ºMîEo.˜–6'o†t:‰¨‚ŒÔÀ¾/¬pÎls~†íœ³bxžŒ2OáRvsBZQcKSöLVj2Vó±þ¶½{·í:jþó™7g°tÎyù-q,á£1²I=}í¹¾°„äEû·ÒÈãßµ '¶¿/“Ñ öÎé¼ñÍ~ø:o €ÖxvÉÂ]Û?±\u`Èè ÁHDtæ±qëõšß ô é©ù9úl6c•zåæã é)ëæãý=WÝ8>‹Å˜BFàøØW,Ü]”ñ¯®j,ªM= Û£µCZQxõöÞºô0¤ÃhŽÐû}t½ÓÙ?ÕHSNÊ)·ýxõ¶Óö3*àˆç÷ìS‰˜«îÎ{:Å9ržIÙå%äÍ™·ˆ¿4OØ…×yå53°ÿļ’ý Œ®®pM:Ë ²p…G´ÚèþEì-XØœðžæïáám÷lßð•lÌ^‘³Qy hšÞé$‹§/ ÏŒS™qOú:û¢J9Æë¼wõN'/üÁÔ81£kŒ›³ì²!' UŠò,’t$øl¯P•¾Z=Žžè‰tŒÞu =2çI»ÀWKÝ¥ôÆ”ˆS³¼BÒמ‰µË«¥¡Ë˜¥ªkôRjàVÔÎÆ*«‰Xª¥¨whMñUw;wÖ²K×ñ cp.^*©ûG6Ù¢J]Žæ¯º«êJm—*aÆV¶Àþ\|k(Œð–V  öm •¾nñ#r@©E<3GŒøÛ¡†×RoÕ5¡+”-¤M=­ú§}q-­¸‡Ö²´&èθìñÈ¥Úx×s p.âŸ3­ÑÆ,o„xÝ1âò£³qñ8eïT*vø¦t‘ŸZnux ¥Dô´RÁ„w˜ˆ2 ÷ÐR;ãu´^çáÎèΔày7|¢³œÂkÎÆô¼`<³5và» M ¬ºJuyÛ%ps„,[j¢3ž•SC`Ê›^¶5v˜¸j™ÈQ ãy”þöšSöLŸÕ @ûêÉègñÎÀ‰@O@8™ýæãMaàCz*dfôë]w¹n>Þž²œç7üš*C@F`Ýx¢»jঠ¿j^NÏŸ˜Ñ·GsÆÓá³wºª®^µï5=yØË‘n”Ú·EsÇF»®Â)že•õ³~-lAg¥ m{zàœCåÈèɃ;ôá±-º¯¿U—>c¤ë@NEË«úx·,=³ojßé±ý­X£ó™`á‹Wá|Qá3£Âå•éLçµ×Þs宺;OúäùIYá þ2Óùój œÍ˜!oŠQ²ç„.¼ÆÀ–†ÇP¸’×2Ö€sÙìlö=-M§xvž¼=0/þèêìw·`©Úý=3¢Ï„ôöRñ„„!ù«Ë~í©±T³ñ—æ ;p_( ÛÓoCøWHÄ^ì\Ÿþ¶89³xÓ;H`¥eª†ìàX”ø>ºzþöëd‹¦¯3«ÕžM—ÿõëÂÀìEœQy–õ4$º¥¥bð¯äÀxŒ5² ÂW…a)µW—÷nø¶¬Ý^¼°›å½ÎÛ}BʬØu#¶]àNç|7mNøŠª81<ìÂÎPe…”Ý‹;la¥¢mhi߉$ìB5Ügzü3„¿U¿ðˆª ‰ni©’Ã#/ÛÆðÍ×Ü6­·:ãݸتl»&¶l]·lÉysFoý²Û½…Å=ìñkHÉþm]eÇq–¦\C|ÿ‚µï a”­.°Ì&jï¹rÏŒkb½øËlyK”£4Tx\“£W”®üË%Õõ!†Rzp£]·öý£ÏR…¤¯=k×PÉ¥6MaK×BÚ×Dáeöd%´¦\F¯}×vZ¨Ñ¯Ñ“zK£K®²”±l.šˎ׷€›ëºNáýÙYcÄAÖ? ÏÕ·M¨Ô*M~¾Ð¡&Â/³'+¡M‘WÝKK†Ì\8ÏQ Ö£[>1®üço¢À*1´pÇ.¤Ïñª ›Þvž™#®q¯é•F/æõ¶Ô¢Ä=úrVº çÞláòüÆÂKæ9k /'oβ-µç[ÉUÖ@Þ²eOo ´ 16tDüžêßÍ«±pæ*›©úÕàæº®¿súËñÏæ¬1mHv˜îÙw Ã.œè/Ç)ºÿ–\X‚ó`X¶Æô]çâMï þ0<ë6}Ë~Ø´¸9×ћÇ3%ïµÿOûZ™§œª= VXgÎR- Œ<$ÚÀ¥ü«%0Ôˆµç¯."†Âê Wl`¥9ß*¬1bk6ÔuËngHUvŠÂ8kÛÿnøúŒ¨·ðµ'ŒR»€ÿ,Ð?¥ââ £Ô¾ã9› :àž ÙcôYQೞ½¹î:†Y¹±':®º_ÿ‹¤è‹›ë®C8ü>:Càþ}ôÂ?Ë>Û¡‰GDWדç!Ôø”žZÔ“•–¨øD㟿pÏ þrJ…Z×óUj©¢°¢vzcÅrZ{þLq6Zcuþc¯gw¨ÑüMŽHýQ0F·¿êàÁ-ŽáJ­XézÝv~©—Îü¸µv=Í£0©;‹ª²–"¶o›]ÂXE­Õ‹ò»ÔáÉ`MÇ@:ÏSú÷ѳ[Ký±½¸çÄYUøåàðêœ žÎÛMó‡Á^ Î`œëª°EéCœ` ŸÏXŽ3ŒðàÃÉ«=Z`¶Î;(ÕÙòºsŠÿݲ$N]['/¤}­ð„ÃÓØð€ ·HàâžãR^¢×Lõ‰áJmÙ*uÍߨÕFnŽ;ã²£òŸÒç|Ë3¿ñ®Æžr²A–ªÎ¹`^TžVÖÁ¿Šòf+l‘±n= qV]˜ÎËq†‘×ê²›¾°öNÄu6OÇÎKWqûKa$vCÒÿÚ‹WÙ:…sÖ²Ïz’z`À÷)çÁ­Tüe×Lʼn¥8Gu‘Î=|côt];Ç(‚ÀùýsnòðêjQ=s먇7E×[v“Uá)§ÔC\<…g!ÙöÁÅîðÎ] !á«.ïÝ>œÍxT94Qoáz‹Þ"ö<ž*ÔaŒF û©“?)4T)ÂÍS`[;žúeûq¶_– ¯¹æ„—Ü“Uš•7-»ˆŸ°èYª'Cÿµ¯´F+ÊÛ­Ú×âvbµ¬¢SXÏ8ŽŒn ¤º ƙʆškNx$=LNvH…›¾J+ì$ÝŸnVEôJ‹8e©ëKÅK¾µèÕq¦QUbÕWÑé¬çö¹¯º;t{Zí[«µ‘Gt!3Ø+¶†È"ñ|ŽØDyBª ¾T±þÅ ·‹cu>‚ot¥ªì›};¬wOÅ5.ºWÔ~ìêÛv€FÆèé–®ñÞ´@ûV”ˆêŒËÓ³ç¶öÄ–ïž9×^]×9ÃËÉÛˆþ¢7}^í…[¡ì©ªFö-ç"¡†Wš÷nõ•V6HÏõÛRM®8gàú)TØEýe6ôÙAàñ-üÐÔæA,|§Në²_ \nFwf8ÿë¼üo…”쬥öêlÎw'敜7g`Ìe×|-1—}«lÛã loÙmj¯ÿé……„ê/³J7.»Òj,*nëÄ¢ÃÈ{+¼±ÈîEÕC*5Ñ?CáÚ+¬+ä…w¼;Ççè¨"dy:aýÄÕ}'“•šŒÕ|¬¿m¯Æïço]‡€ß^{fýåfõeµ\.Õßµ* TØä†Ž†ÍGJmÙZú¿Œëìö}¸8Ür0uíqák…o²®Öyû‡ñ «îy½ÐbíÑWÜÇ<Ñ5WoD!öœý?»,aÈÌíl”*ÅÖ²™êZoa÷êšSo»}]k5jÿ2[Y­]},÷ûèRt)}ט­°=FQÙ›²u¥sÚ÷øO~ó¿üXØ ϵ}g3%jM†_Üó¬«òb‘m—ç-û ¬Ê¥Ë*íõÏYe3ö¨ÀþïY¥…aNô—S çzˆ¨®b„ݯJ'‰ yw¥¸ãyõÃŽ'ÂRª”Ò¿î|×È‘ž‰þÙ ´ßò”S¶gzøDã­¼àK53°Ì×|`q-òlļ9˶=¤;UloÞœÛ@Ü®%ì²ïÆm‚ˆ~Xq‘Rݯ®¶ ¬ÀMÖD œ­öNŽ_Sâå]Ê€ö‘ÑÑžáå¼Î[ÔyúƒßGÒS!~Ðwü>ºßG`°Èè Á ±o­éÉsNTÉ_ ,ÓxQ‹Ú×X½¶¹ùš¨«úv¯QÓ=§µ2«ì µ/ҟ틞Ë;6z¦ÿ²3何}×91ûnO2¦øŸ0Óím´y©«|n>wÅ£Ãê°)×s?uÎoеGxÞÊ«¢ðÑ žùÛ”{Õ]ç?RÇy¦#ÏRç;yïÚ'>Ù)ötg v$žB [TEÙ@g ò¼±Ñ+ÓÓXáy«Ý³óux÷(|UG¿ë\ÿ!ùKï…;…]Z` á‘x:aáÎÕôþø)×OwO¸~Ýx­2µSÏÔj/•WŽqÊ#ÖI?¶¼ÎBBZTå„«°Lg´F!ÙÈ«¬ÌR _á!3ÇUZ*øz«Ž{·J`Ml¦¼nœ7ª¨e£îÑž«éýv§ô¿ÎéõÖX*¤«.Å—ÑÁåÅê¿(ÑO½!5ÑŠÀ2ë:% oBÈœv—ípµ¿HtöÑÇØ³êÝLq‹4·Ï:KŽØUÉâ‘7l3æ y˘!{ré\¤ót.…côµèX®ZÔÎ8…L§7´Bòª W*°ˆVä]H_—-0P܆ð¼Ûè–-,¤…*°ŠÚ7èÉ+ÐÏ­Á·<ï“y‹ô}Œîd\ _ð”O±ý©…QQ\ß _$®3ømî"ðÝÚ·là¦QUÆ÷Ñ4új.ãf¯\v˜Ô‹¿žw8zgëd/mºRc-•:*Õ[¥ù?ί^iºT;]¢â†°ß /Ðø¨¢ÔŒƒõZb&ãÑÄé9ž÷\Ðݾõ@ò3}H ¥Þõ—8§qQÔøÔ?°vÿvÍ+Ç9½p¢'€¸•²¬gq'g(œè_Ub««êˆwkù¡ÞÍäáéÒ…Uxz”¿Êóž“WoàîPÐBà9ãTÀÿ¡¸11ogNé¤s†þ>ºnÞ‹À×ek )-°Þ˜=ïF_õ_– )!/¤ÀêÂ[¶ððÎ11¤ÀF×yaqµÄí/ᛩl'Øg#V‚?þˆ# éü4ù»G៞óf‹˜ØUçä)° @«[ á÷ÑG€ôTÈÌè³7³NâáV_VÆ®º0dt†€ŒÀÑÇf–Ëeûq€*žeôÅb1›ÍÈèsŒ¾^¯;‰”w–¾âst†€ŒÀÑ2:Càþ}t‰cùêÇb±0¦Käáì6È"£úŸ×ëõl6³¿¨ÒÿÈÃåµ@ŠŒëy"Y.—yɻ瑇ó´@‚ÏÑ2:C@F`Èè €! £0|{ hÄüÍGZbß8–7±[É-î’É»iÎ|ì|׸'γ8€º0FjæLxÆë‰ð`¿ålB©Ô‹1:C@F`Èè Á Q]*bŒÀѾ½X¯×Ëå²ë(boä"|'“•šŒÕ|¬¿mïÞm»ŽèÙlÖuAÖëµ1åX"g·8qóŸÏäq#+yÜ0F o9ÞÈDàst†€ŒÀÑ2:CðBDt×A€Š£0dt†€ŒÀÑ2:C@F`Èè €!x!"ªë @EŒÑ2:C@F`Èè €!uå,—Ë®CèØb±°'’ÑÇ甓úz½žÍfëõÚ˜NF%;¥ˆåré<¡!£#È)Ÿè–ó 3l#Ñ<6HêÚ—w…6îuôc‰pdt†€ŒÀÑß½îËåӋŬù`|’`ê c¹\˜®Šê¤•¶Ù¢zëR£ý”z§³³v+0Q=°´uÑÍ´Ì+ʹzóJpÎYX…]H^$e[ÞÌZx ÷×›§gºQB:›ç-ÉßYìEò¶oo÷²#53O_¯¾¬Ú¬·…êr3z6,—ëðäw,²ç+!sÖÒüFO’<-ª±®ì¯zžkNCñÔ’ÎÓzÞ!ÛÎ.vțӮ%<0Cß¶i½œ«×^íékÏ™JÈY…±ªíEòª6*êá¾vD’tždÖù›y;YVžŸF4ÊÑ–ÍvNJg¶_8K ,$oY;Hç"FäÆÄôOcÄìio2§q¢Òð¼Jí¢BVHÞ:tn¼²J¾T<²Ø§v±iÎË;þŠ÷¸iWg¼ÎŽÀœõ¦¯=YÖ(Ö3êÍ Û3›Q¬N£±þ¤žm—§9Î¥$u•ªÂpvfÏx×Yxá0·5v 'w+›Îåùݸ§3KåÍé™’þ™ž@4w ÜçèéáÞÎCÎÔ˜WHRBa!Fšñ”–]Ä.ÜÛ8Yñ´ËyZ‰¿Òì‚yµç­ÕÀÂÓC ¿nQ#³&ÿ²CXcŠsÎôEÜӮŘ’”é¢yÂ3JsV2Œ¶«®k‘l»òšcßLUdËñlçvñwguyݦbwò(,ÍYux?Aœ4gÛéÖÈÁž9³“×Ù?Óyü…T7’š/c$’ôB½=æó$þ¼¬éI6Æ"žÂÓd_Ø–8ž’£+õ/Ý¢ˆõœª÷xXBÄAÍ3 ¡¡T*9g Rfõv²! ©’{ /JW/$<’¼Oµ…{Þ2f°/ðÓÊ·#Í£þ!rĺ‰<®›{Ý›¸)ÌSxöÚ²¸ßþ 5N`‹’f£z‡2ÉÈ,ðÓ_cNû8˜ŽçªÖ2cõÖ2gˆÀõ¾™j×aÕò¼Gý*}+¯ËÙÓó ù„…!{uvªN>VY¶pNãB}\!q:x®{ËéK-hŸšclxûûZß,‹åriüöZrD:ÙdË6þó™GO‡‰¤Û£`½p‘¼ÒÃÇ@!G%c¸Xr•½ºÛÄœ8F¤s”RCFÏ» ­iœ.Ô¨úÊtÞ\K™ÃPx5»ÍZ†´bK9º†Û§Î]E‚£À/µ0|{ Gj½^g?Jô A‹Ål6#£@o‘Ñêdo+€£@F>´‘ÑG†ÏÈè€ãÃç€6¾½ÀÑ2:C@F`wÆm´šŒÏß‹ÖãÒeìNî7¤è…Çl’—ûŒ®µú¦åQD—ÿAÕ]}‘€púé÷{F²{Ðß´|~Ó€£´Ó"2ÙÊcùq9è“ÿU§L iöIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/test_fragment.png0000644000175000017500000000437112032647206023724 0ustar ebourgebourg‰PNG  IHDRì^XPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<Ô¶Þ„¾¾lÿÎ *¸”/õ"Ž ¦ô|#:Ÿé^•›L˜Âm7'ž;‘mEÞ"¶€ïMG0˘ ÀFÐNò°X}Ñ[ó‚É£üS3³ßÛHˆ:æ[ðÈ&†¸­ÛüÙÝ™¶EÄU0‚Q[Ÿí•r8õ¸xؤS ´¤EÄcÝItª€sr…èœ\¤lAl ÀîTØaû¬tu¨²ýŒu5ßWVÛ|07Y«½ é$5HìaK­+¨Z¬> q‹€‹ûŽe1<@Rù’QWÜÑI¬)Û Š¶2ð#™T³Ft’œtshÑ:Þ¤Ô´—È Ü“¨bÑ…Ç{ØJ'­E“•Áj§}q˜õ€åY¨gTG®Ô8UfÖ2êë±n®žöÆk›k»mÅÑV:™‡/³Ì‘=þpõÍh…À•|ý[Å+¨$èÏÀO¨°–‰p\ƒ¡"À2fºy§`)X –‚=‚Ñ8PžÝ-ŠS»±Úòͳ-…Zð• V6pøEÅJ‰`myi«œÊG§ ¶ŒçY1"<¥/0Xï >Gʧêøý\…ƒ?~°¤Cë Ôã÷ºB¾4ܸgSÌK ®¥ 8nÓ3ïßX\á‘wÞåˆd7)Gªpì¾M¾#£r½$JëmK²ôŽÙáÍ:’ø£.qa„7]ÄdÓÅæû—¯}ñnûŸÊH¹à³ÉNɥώ|F…|ÊÇWÿ"ù¯_bd×È ’u³A£ó5žîм,HËxRÒby|ØúÑu’û¯ŽDŸS~ŒAÝîŒc`Bþ‘ŠwdÛ5åáPD°š†«ÈýÛ“-×"ß3 ~ÏKòTÕ b¹ólãÉ>EW0[¬Ç/1Σ4@É$9^;I9T@nîF@c„?¯¾ªËéËA÷8«Dì¿;nœË.‘KUr±[ïx'ÚŒ'wá[¼ìzÅp\ËŠ-ÏæýÿKu¬4ެJ–TÛR:±ŠCƒe_¢rÀ­*z ÐÍ;KÁ–GXæÐI…ƒ´º1[Î}6â õƪ}è§þ;PrÌÆ^xã·ÎÕýèéŽìzŸAó¹Ó l¸æ½ÇÝó娪kÿx'fmÞåKÉ–g!ä#ëÑ¥y—'–'Œ¡Z°a<•ÊŽ“ìuq_>eïÿÞ#žÆÙ¾Ž„enk¬åZ@’ô®¼)¾~ì¹yÆvcµÔúl/nIåGÐk`Éî†!‡Q"[>+¶`HbÓ4¤o”§aV(…d1;²-#HqãíPj?)ÎʇÈÏ—^*c¬RsÓ}Åu¯Ô˜­A´Æ$ƒê¼¹QÕºçáÀ;Ã¥6@±Bˆ[†¡ty4tðÇH›íô0½t^c&÷@ýT³Õ6ï‚ð̈†É5f’Í¥x¶þÉxê¥Ì¦æ«µß#Œ-ÛÔÏìÁB©¥´È@Eׯ•°6¶ú…>[É€uW³-´ÏR°,KÁR°,KÁR°l…¤ÿrÜÞò$1ôËIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/url_rewrite_example_b.gif0000644000175000017500000000774712032647206025434 0ustar ebourgebourgGIF89a™ª÷€€€€€€€€€ÀÀÀÀÜÀ¦ÊðcecÎÏÎÿÿÿÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿ!ù,™ª‡€€€€€€€€€ÀÀÀÀÜÀ¦ÊðcecÎÏÎÿÿÿÿûð  ¤€€€ÿÿÿÿÿÿÿÿÿÿÿÿþH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(¨\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ Jt Ñ£H“*]Ê´©Ó§P£¶(µªÕ«X³jÝÊU¦Ñ®`ÊK¶lÕ¯fÓª]˶íX´nãÊK·.N¸vóêÝËW,Þ¾€ ,ô/áÈ+6¬¸±ãÇsCžL¹2WÉ–3kÞœ3çÏ CÛô,º´iѤO«^MÙ3._3xM»¶íÛ³oÃ~)»eoÝ»Uö¦ \éðÙ+ûTž<øÍßÎiçf}صsá×™c÷ýúvîß›þ‹¯©\ûQó?¥s÷Nœ=zꀭÇî³¼wæøwç?s?Ó÷=Áv€¼¹Ç|ÉKæÙ7߃ úG üÕ6ÞtÛÙ†¡†ÃáÆ †¾aˆÝq®§tÒÙGb‰š¥à‡ BxáŒn8`õÝøtʶbÁ¤~ù‘("ã $ŒGØ¢_TÉœƒƈ£„ôáX%“"Ú˜Ûo¹äŽÑÝÈ#’d2Ù¡˜ajùdX/ÒØ`wʘ¤n\ö‡çŒgN‡f“czI£ŸD šæþØå›dÅIáœVJ©ãš‘ÆDé‡ú8b¡‰²iè¢6"©è¨ž®™©“Œ^¥¥:ú(ªþyúe¬›r:««_ùç¥€Ê *Šœ’ªf©žVš*XŽ. )­9B¨¨›V>ª®¶öjí®“^*,¢áñúé±p®Úl¤Ëâºe·Y‚:.ŸÕ>뮀ײ©—¼b;"ºìâ î[âž+çTÚTç¯Ô²XéŠ[Û¤Äb:o§ÏWb½t–¹/¿ \<Ö„S—ZÇÆ ò±Œˆ&ƒ[rÊ,·ìÓÊ.Ç,3M0ÏlóÍ*ÕŒóÎ.ëÌóÏ#û ôÐû MôÑoôÒ÷ËôÓ+ õÔ IMõÕ™YÝJ\wíõ×`‡½QOZ#µ@h§­öÚl·íöÛpÇ-÷Üt×m÷Ýxç­÷þÞ|÷í÷ßh3ÐOeu6àˆ'®øâŒ7îøãï}6áN#ùå˜g®ùæœw÷ä;^”礗nú騟ºN¢uxê°Ç.ûì´Ã½zN%{k6Ú¬Ýû”¶5¼ïÄ ?¼ðpßÖwïÈ77óiCŸ<ïÑ¿Vûõس}û]•çXíîÎS=ÛÒ—_üøá7/=ùçó½þóÐ[/÷úïgo?íÛß”»¨J¢9±w‡£ŸÚÞg>ôP|L_ûœGñ1y¿3^!X¾ V“_Õ'AjЂ÷ aæò7šîˆaÈÉÃÄBº$€í#àgHCô%°~ä õâ7>ù1ï‡þÔ¡wAÑxL"q(Â&2Ž„5ÙrLÕB/ýi*<ž+ØÀþðxL”`XÄ òPˆ6Ìa͘F%ñŒat¢Eš™ðAÿ#Tš†Åô°† ¤ÃG?pxkäÈÈ&’Œptcm8ÇJ*®Ž3‘â¬Î¬*f’’„d_½HÉ3ºí2|d$ÙÈ’m\ä-I˾aÒ+wŒ õhÅB1†€”á(ÏgJ2ž²†¦Lf,ùÅâÉRˆ²<â kIMÉ .t¹¤WÁ¬ó¢eÛÆèÇ,’³œYD¦›)Íøé¼`4«WÌjÚÓn·þŒIë sÏÌűŸUÝ5Y—M¬¼. Š›$B*»|ÂdŸA9(C'JQ€:ô%JÆÄÆÑŽzô£ õÈ@qWP¬Tô¤(µ'å2†µ–&­¤.éf2*Óšê…¦6Íid`ªÓž"§> ª‹x*Ô¢î¨FMêVªÔ¦Z…©NêS *Õª*…ªVͪ눪ծj«^ +AY*Ö²b̨!M«Z×JÖŸ€dM©\/'¸ˆrjq«^wÑLÞõiyÝ«`×W\¶Õ§¬bùVX}þ•i‰]¬dïÖØ‡òe<á˜Ä¸’.ÍÞ…žîT¨8F. ’‰_<çdIWYŒÂTwQyþØUT-²•Rœ¡Ì­2ƒˆ[%övµškí _k *6‡œÄ#µ\˜\ÿõ…#SrÆžoNœº%ëIÃ×s q…5Ý]úr—âqî&Ï ]^®—Çm¡˜R„Â+2ÀºÃ¬Ÿ~µKÄßJó·ß\xY²2q²L+/}ÔëÞ**¸—àñ¤…ø÷­û‚´$§hÿ OÔò7ÀðJj6aÏ+†ƒÍë`öÒ×…*~.7¡+[ ‹òŸû½n;é[ƒØq"ÎÙ_Ñ»L5øSxÒV‹g¬¬óêrÉ~u9|Û좓‡Fçƒ;R²7½N>2‹‘<ß2ËwÌbóþ ÜÉ O·Œó:™å?ny„]^)NPÆ¢>+)W¾¢ÔšÛf@3yL*´ÁF|asfxˆ&­y¬>ÑÞÏv=,_DÖ—È^:ÀA¾ïcÓ²èøÌN7ŸF]¨ßµT»zÕ£FÚFÙJëZw-ÏØÔtO]ÍëL›õ×áÒ5°‡-V›ØÆ>6°“­l³2»Ùb}6´½*íikµÚÖ¶*¶³-ÕmsÛ©Þþ¶RÃ-n´ÆºÜâ&7ºƒªîu÷3 q7·á ·ºÊ{ÚôÖçHù"uå =°jOfƒBd"«%à¹öëx;ØúŠYÆzŠgYÕ%ƒ›…c·i¾ºoyÑ·¾é’®þ¦kènÂ79‡ò³ƒ@Þdãš(¾0.ùÈi¼©š§°ªÇhÇÓ æ{I ½<3ŒÙ[ñ6§x]¼éyчÞ^MżÌ(?yÆešóî]hFØÌSÎæ‡y[ïåÖr>~ÂaªÄ/²Åp¾p\ç¬ã~>òÒe¬¬ËXî\·9¿sÂâ"lÉz4à Žðw·]ß´JñÏeþª0 ï‡öyá^ôâ6™é½²ûÜ»}xŽ'þëíÊ’æøƒï„B(8X„MUƒHJ¸„ŸÑ„N8SD…C…ThVx…­1…Z¨€Tak`†b8†dø;apache-jmeter-2.8/xdocs/images/screenshots/debug_postprocessor.png0000644000175000017500000001455412032647206025161 0ustar ebourgebourg‰PNG  IHDRXÁ½¬XMPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<ʶ1§ÃµážvéøÔ(°R,{ã7”±ÇÃMhÒàé:È“*“¬ˆ»/@ppüSËjߣÿ‚ª|*_?1Ì òÊWiÄ_ÚBöI³Ò4B®èßz?Žx‡®«6º‚̓3¿{íX¤5Ókƒ º0FÖ¤…¤hDv¬Ý/u×»GdJ=>c ÉÑ›¦ÖíNµ^h£YòæIdÇ6ÕÔ¼s7.F_ [,½~ØÓFçZvfnmGb‹!Ý@©²À§#'¯×Sø* ¬DO1ݱ¹E‰K¥ÀR¢ÀÖU¡hÜ+-<\ÒÜZ ÈܵofÇ>\n  b ÒGîu€°Ba,¢‡ÙN;¯ûAjPs‹Ki ;?™¹®*à ŽÐ0þÉÛ)¯^¶vé&°H—ÿÀnd 4˪Wn„*°­áovñöübÌæ5ï­pèÎíŒùoÍ8TR€ »ááa^ ‡å y‘ÌR¾Éò’íìÁšYQ«µ"±Ž5ì ðü»Jö«N$¼)Ãc0ÝüØþ‹‡º¿ûÔ?o,y¯dSNþ2·zQ5>+‘ÜAÑNqV;"^¬îÈUôý¯qÍÐ18Ð*!Ü8»Í-_$Í‚üŽ”ª™90²y+#E…5£: €Õ¸‚è;|dÜC³Ø)€(‹ÁÙœ>½™Êðö:V ÷È6 ç×Ìc¨åÎKÒp}áS›¸\s\¹¢º-ÎÛÝÎ#¢š#µÙÅÚ±Nôu ú¢âbü$iöu^Ãywõpßxç1—ÇP# vúÀ·Tàͦ»]˜ÐA0’ws£œ¿sIÁpVÇŠu@¦¶XsG kÖªFÈó„‰,”?mXÎìÖƒk£–¦¦•öM&º+HÃô¨ênTA…hwƒzÀ>LŸ!Ü`õ¿¤ÈÝ'‰¥È• Èv,¥û4@ D¥ÀÒÎëži— Ô¯€ª ,¥-uì†?ÉitÒð'VéË^ÛKlrIöÿÖëÛ ÿA Åp{`ƒCZÉk³-¡ù[~³9ºp+´þôþIø|(|çé0«·æiT²î½›Ç^‰Å[óÞdÑã l–â0IòÐQ“¾Ï_Å[ÆjÛ)ýÐQ¶éW>XíÕ7uGH‰}eŽDàµ<ÔÞï£Xn®cíB, ’@D gP’·Œ—!‰ƒuЦ‡#jÈ]oÃWžgÒî”X§ð„û0ñ+ã¸;ði•wt’ÐÙ8ÆzxþMŠåæ[ gˆ4òM9 Ÿ„«gâ‘cŠåæ«¿ábæeÐB,›5SB8‰ê4Š$x±SbDxÓÎkS‰•·ûosS:h˜^e¦7{Y?|u"3£yÿJKËq/7¾ÜNÁ̧»{üM'aJOÂä!H‡´t® vulû=¿ôIõl)`éŸ÷ XúH›êX ,–¶‡´¿~zÀœõU,LÕ,ˆ=:—Uš¥CÕ#±P£¸þ \6— l.«;›©Ž­!<]]w.§WEÈe—Ø]ä“É)°!;Œ|²9¶Äp΂D­qÌ`A*ÇŽ5ìàSùFWn ƒà]®ò‚ý6 ÜAž”ÍæN[;KÖ/¥²Í­¤xˆw¯„$ðW5²N{Gvç¬Ê×±c HŽ¡üPÏÇMŸ­íŲµö™É؃GšV¾ÎK& ¶‹µ×!ÐÓhìch>²ø´§kÞ'eø3Óǽ‡J{$ù4{[­d:ŸeOk¿7Ç_µ”vÚœ7³¸ÚœigÙÀª,I޾Åñ5B¤( õӀ߹W ¤¯‡u”ÕKQi_«Qñ<ëŠxµ„w9v¶ f³k6›¡Mæ?̯·’„¥äL{þ9«ÕŽÅ#ƒ›\É8¬\U ‡ qˆIàøüÂ&âË•‘{†ÉhòÞæø‹•Îñä.ÀkpZÀU‰uìÚቫqPhrXñê?yç¬Ú‘—UbsÍ ßsi—!»Ý\ÁüÐM†¬}¢pÄx4ÜÌ)»›b½Çå ÿ˜x{±´­(¬˜åU+_8Ù;ºO|ÄM™Ûdϵ?±;Ô%ù«Kb­n‹Çêþü«p6…r‹ËÚF(!±Á¯¡TòkØ«È`k€è†y1¯r †Wƒ!•áh”,…êâù0ë‰äàE¯b˜wáÀ+zt#ˆ=’dª·SþOèDùüÕIV·ÕƒÓÌY>·º·SƉ%ɤ‘?JœäŒWB = mºiŸd¼)_]x'„¨Q×§Ü£xµI٪ǀxr19L£¾fÜM¯`ÞÖ /;¡+8§Þ¹ ,Ti¸²È¸[DüÕInËå!q ç[¹ì=5^ ߑ˜ªÙiÞF·E‰ҡÊMt;ŠcíNwbÔî´‚"›Wp®`ï¾â¢½»X‹bh}¹¼ü!-¥-hFíâDg·*Bv…]*NØŠÐù¾ó©óÇÎ's9TÎ*¸W LÕ,®=jiZš’²²T6WÑãïžÚ•Øõ-RUpŸˆ:lÜõ½v cÝØŸ ›‡ªÉܪ]‡ ‚¦‹÷ØàóCTTdäeã½5r©ª¬‚Ú+00¬”¥U=•Ø “sqâD%¶B›yR›É©ÄV„x_W`väW øm|бc¿ s¡ÆÖµé[°…¿Fyë-8ßÕ_ËlÙHáš³µˆ«iUqÚéÁ-‡˜ÛŠdu=­Õ}Iü6Ba‰ÊÄ™a"Õ]“M+ÇnS©zÒ ãЂt®9ÎH J€µ b{6ðüÌF0.‘a'Y±àz  —aÏŽ`˜Ñ¹*ÖÆØ§Oƒð™sÚvìm(OB?÷÷èš»Ã{ˆßF·ÉÐëÞo£ÎsŒöX]@·g¯jM˜ídþVvÌHú‚,?¬öïi¶x‹O£kÎl…»›Œ=þj—Xë´ÍìÜtÚ\ìNU[“6¾? šzà˜…A©‚>†˜†¼ÿÑ. x‰Ò¨#>ŸÈ^÷‘§ãÆ/ùµ 3íÅ·}Ö³ã(5­v`‰_€ìM—M²sn‰ÊH@g§àG†°‚[Öa¿éЄ»’&?†otíà›HÔî¾ß8j;|g½d/+Ð9èì agª[bmnÖe%ÈΠ1-[¶'Ìdz~ñý EƒùS‘;Å@øÈ¸ý#&-ùwƒL<ÂÇã/ð«U×ã=uÉþ`Pˆñ3Sf Ubu[¥V¤`gpî¶JÊ”X Ä¿ ¥ý¢à'¬ÙKb½+öÛP:ûóx,_)~º'm¿·SÖÒ’!dH„ø3'ÌUÿ2º;å¶âtös>w§ÊÖ0ù¼w’øfLyœcüÚ“w&–ÁèXíô Þñœ9+WÃ;`ÚïÝÈã×;øS)ÿÈ£Íã7M>·èi.yJ“Ó‡}º§|Kã-U/±‹[œè¶"CÚkOÿ¸eÔ>žÍÃtH[ ²x,Ó¡ñ\¾Ó¥’Dý î _‚!i.§ÀVFbûÎ_vöý0•Ë)°!»ìUJ¹¼ªtìÏjØó¯ŒÙοòö+¹¼šÌ­Kˆ©¹uÿ‰:lÜ-õ4ºŸ‚l¢6*Ò7¢°Q«Àe“"4¥¹œš[•B–“ ”Ë)°¡4cgĉ[’ɶRĤM¬ö¥3¨tòMÛ¹Ûø‰@˃è°Á9Åi3`ýŸµÉ7º<•_îh˳5¯$_¥ö‚´°Qˆ6֡ߘôG¥2½Ò ×B¬Vâ—éUhÓ/mÅjƒ †%j=Ã{j`q»¾RoÂ6ÒmàpºFê2¾hZÛ(1ƒç©‘L„ Ìkä’¾$«ÖË‹6&“í‚ÆÀ[åÀºìÀuf÷Înw«Ž.`·ß•¯´YŸGÛd?z®¬á“¸j%ãúp·ÉЃ á„1S?~þ§õA¨çcÃÑp¦®¿×ÐÔM"lÜÈFØÀ¼~X¶„ê+ᎡÎÞ*«Þê¶¶œi&/Âcß4†¡¬WXh»ðÁ9Tð˜œ$ v£–K$*ü¾ ç `ê: Z 3u£ ª'~õÙSÞ°prãfK±Ã†2«þ{3¼ÕmnÙ\©¼lÚ¶°òÿºê„c>X{?e ž|"> ̃uv’µè¦&³ÔO oC¦n :–\oÉaÞ$|ìÜ8üL´tËÓå ou÷]›ÛÊ#{¿ƒÀI6„a~þÑ‘(øÁè.¶†ùGàE¾\¶/Tàm&SWg Úð¼Ïq7"Ç|%_e¾tœt­%x«ÈÛ2V»ä,έØo°´Ä.šcõ ÆÑ.޶ú÷ÝÐB,!аñ—ÙH'Äø‚þŽ&Í‚ëÛ¨à‰Äó.vJ ›¬ù£€ä_c¥Ç[½Dü`ÜéÌY>GØÈÖtee~ñQ#蘥dÑ0ãÉq2‹ÛðèªØ—â/VÇ…º©Ðê´–¯«ƒÇ¦ &þHóèr–÷shžð~é1•ü_õÎåÓ@budy«Xb-îÄe‹'‘ËEwYªl ë~÷FØÐz,ŸGظ´Y5gq§ÑÝ2Jµ{úÅ);ö+›ØS\´o·L y,qªª'5,±£ÈÚüá~Èæëtv«"#/™]Áûdr:mX:Ÿrö‰Óέ‚ûFµaC#e >!a£´õdU÷‰¨ÃÆ]ßk׬…4ÂF%F^BüXü~W&§6*B.»;í²»Ò¹œêØŠ±»Ä‰[‰åš€R6¯¦Î«†i°hí*±¢-ü5Š%– ‡NÓ z„¬ir´j~—Dǃ)Œ±Q$±«Ýí{[{ Ö8h¹§¡«oË ³5`œO'\.Ï?*ý~Aõü/ÖÉ^nX<ü-){à¸bõÅCqÕ3~¸ð2ðè¯gÌ^ ¬2‰åOaW$ó½6ªF…ϼ4 åpZ‰Š¾ñìïª$éÀJøozñ‘PàLjÝ|áeæ{ûCé:fcueð¼ ÿ¿ß¾/ãÅƤr´“XœèQfø«ÖÿùÍN†•<}á/LômÉo11å{ŽÜIÔA †•¾þoí_ºˆïÕ`îPñÇÐe[~%µÅhYE™æEu›ôÝØ«#ö#KNö —°—¦u¯p«¯^2šºO‚¯ÿ¿[-K§õþho»…Ø+–‡>ì_ÎñW±ÄºØl„9ëÜz­ƒlWæÔGm ñú$˜¢ ùs_£é_­"ãÖ¨á#m à¸üŠ'ìmñ:Ž’‘ÁA(†#l¼)8EØÀK¢´¿Z†Ëx/ Ëñ¹¶Õ’Õiâ@Ìàmç–—¼åjÐ~l¢Î±žŽ»¥Í+¸t$hC:!³â H‘µÁ#á£< tnmã9I†AuÈú'Ù„RÐw›rm :¥ð‘ñf K¢\Å+¦4)³üUKn)ðcå›|ÔÈ­ç $ Úテú¾‰¡¯}O¹ï¯º{j¾æ\©¸Bs¿“‘z{j`ÅK|8N/i"ã‹T¹6s„Lƒç¸o :öžªú%QpL ”ì0#á··œ+è2Ǹ§A ïAÔÃbÇÕÁkšh \Ê‹â­(ëñh!†´2Úð¿j´Ízv8y±UB$iîBmþ/n³Ða#)Ìo.vJ~€®A>uÒe‹;uÙêNùœÏ/[¶T‡—nêNóŸ=;ènßä‚ÄÝM—VZ WÜäRQÜ‹·ýaÞ¼aÚ'™ÂÛŠ¯£Þ ú˜ÌÚ)ç"ÖÓÆ©`jˆڌÞq74Óäð ×§eÜËëDüÕIO1V÷J¹\4xØäÑ _Ú?©Û¶ñÝì°q­Ÿ­‘KýöÀÞ~õïÕÛ7?Ï9·Ýâöí`µ‹$-JåxÂì¹XVó%0Ü-+¢ð15D)B'a*AC$®F~¢Ó†•‘X> äòn l%È>Þ/eQÊåU%±5aã;ç¿ów¢-ÃÜú5уaCV5ÿÉFÔ* ÀR`)Q`)°XJ<ý?™Ÿt‰8FŠ´IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/mailreader_sampler.png0000644000175000017500000003224412032647206024712 0ustar ebourgebourg‰PNG  IHDR#™lMÁ PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<5 ØP;†#õ×%€5RnêþþÏ3«§“lÚjˆ ÜÔ¥Ú#M‡O?ý‰† ;: BXòÑm÷¿¼½Â’¼=Úð[áM”dy˜v(pÝü­»¯=×ùQ6 2Ü‚ù®¨0ÅÞÔ^|1ÖHO?gÁ†Ú1©q/óËnúøÃž;ñð¿‡âÑ“F2°¤€ÎBIKﻌÆÉXBÎØ5`f€ðל0I탯þǤ\ZØ+JGÏš4O¿¶>hcÕ@#I+ 5ð([ÓH}ØN;è½ÆÐ1Ù?)ôõ:s=]8™â~ðXÿ2}«éašéY“4²“~maŒÃjy)éYàn,ÓB2HÃ4ë*á§Šî¯ÈoO~ÃÙq©‡'…¡~ïîd}íGV'àÏ&¡û\Î;BÓ×µuGÈŽ»?[wØû‘RóÙ»o×ðzüñe÷OÖ×.R˜;‡ 'ÐààÝÛœxšÃfz (xFë‡ï /—@_Ÿ(šDûœLP:¯&Ó@ü†ú%aZºËµT ^MÒ°<ŒLC.>€ Éz±XÎÍY>â{Íÿ‚0Ñ1ƒ-´ãúN :N|y`¤7[µ:i¬ûSC3œ û:º‚@¬;Ö<@\©Âæ@ެ`kàXƒ@Ž #äAlð½&Žw!cæ¡¢ï¾øBB[ñ~à¡rsãMÜݰÄKq¤|ÌãmÜÍxèŸÛpΊ¸‡q9‚Àw_r±­q8tUfÒÁÁA¶üZÜÄûº‹û‘{x©’I¢`ÅÞÔÝÍ‘^&¯žõû<þéQÞXtÚ—„«!¯'Ì+û˜AÊ…¡ÁÕ v"»œ#®ÅYÒ¼oo÷ÙY±:åšú? G;ßh숭N.…FîX» ßÐÌǨBøË©p(YÌU·„K£b¦¡äAÕÈ‚ƒÌû£1ŒDÈ:Öž¶3eJNˆá„¸pXV¹Ë³b¨Ø$±»ûMÃ1²ŽÀÛ½êóµp‡_‹“‘÷C?&7Y‡Sjœ:øAÆPÎYÙÔƒÍCÈîP~ðAìö~xª—÷wÁY}Á<åÕÄÌ„Ú ÈÐ`Á„œÀ9ën„BO/>S¾lþÑ8ߦ ~‹GÜë|Xo>R&BI4äÈÚ°ü3Þ9äÈzýÞ¹Ý8ÎG8gE GÈDåÏYK_wv P¿c 9‚xpó‘T(ÃÌ÷bß0½ òp#È•Z…L×’iÅ „¨²T ÝDIÈÁ‘̬®ù[/2çCåâ‘û­[Š)¥%’ :ÆŽk"FÍÓS„"Q7ÄT²f¼Ñ¥3Ó‚…'›>“nÁë çÈ™¥€/顿™Ó~¯')PÞ’4´¤ÔQ²žÅà "Õ1v>G–áÛFÛ-ô—ÝåçñåWzéîŠeàx¶ñnNX;âìLÿüê…1н§­+XØ%0EŠüF…†Ä¡cHvT«\ :ÆŽkúAð8utˆ[,Y4&çæ>È–À˜ƒE#@Cž_†;¼0è ªÇÅÞ`±¡c¨p$AuŒÎw?Ï“\rr<Ó¯u'¨7,Bº8§rp˜³*èË ¬\¸~ø´ÔªâŒS9‰-Cê؉ì4ŽÔAšy&á ÇAMÉ…jú[Ëñ“.E‘ï6¨Oê;n>b¹瓎90B2.ù£Z-Ä2$ŽˆaÒßøkl„:« ¨, ”ÑÔ¨ŽQýHM[ÈÇ_7CÃä7YÊ_ªåzä˲磦ƒóÍͧüø\›ª#5+D}ŠUj«/ŠŸEuŒ€ûÓ(üMo·u'÷=A Ö™´mØxÞÐÝÍ4ŽX#¨Àù9‚@Ž #ä9‚@Ž #rq¨®„B¢a­í‡¥Â8‚.·ý3Ê Êﺑ#œ³"#ˆm|¯q¸²«Êj@2VBAÜ!¨å½ÜÑz/WËÎex­©N•ÅZðOž÷ÐnÀéG¦öÛO†TÁv­™:w¼îž®\iÞ{JÒ žZ—"Pw<'î!EvÌXc€?‡#àxÆë‚—õ.a—LsùïL K޼¾g¤èK½Zv>Ä4÷r~_LVÄr8–|3Y1rô²×Ÿƒæ}uWäK’¨‚e‚Å3¾Ü x¼ÓIzƸ©Ào õ½IQµkPmd@ivpm÷|äYþ¶¯X,Çcû©Y€h‡ÝÒ†H§ù•®9ˆuXL¯DÅÈ ¨¥çv2wŒ ÝÖŒ"§”¹'"æCŽºmÌ‹£ïë#MÊË-ÿÜy<óJžh8ÐÒK»˜e[×· Øõã–®Y¨SÙÎPš@ëÛË.ÂT8¿¢!­oÔƒ@…s 5’cr¦jª•œÓ7È-—†*rÞð`YƒY‘™Ù ¤ò1 I6û_ï]P^Ñò;d©"½UZ`ûlZø¬€?s«Ì–RŠ!)¯F<´j±h›8âøñkTK“£†xèdñhxrÜ+ò á˜± ŠƓâ;ÆðÊ /‰·’χäA7¼‰4»’•ÂrÎZÁIcÐ"5¹zŽú—€‡^üT£ËŽ5Ûõ^Ê÷ŒjÚ:œØŒÌŠ€»Ÿ£ vž6b­« 8>oG@£nÑ\ÉEÎç·>fKä³`øJ.vþ²öÀ×;N¸õ|‰wóÕ¶°ð½gû¿è ž¸àªdEÀ@íøÉQáósŽË!¯ïžžQÛüä_ÓLžõ ý¯ yVv‚u«¼oI V¹Ý*ô°µ:_\±ÅßGjáø¨­ Òq>JÝ>{¤ëíšÌ©‘ÿúõðÊŸÐ3õªw®WÎk޾nœï}®å‘ÑËê_©ÿ,’<0)œ1 ~oç„ ›tRƒ2ï¡"ñ[ÞG¡§}> OB½žt)ú>3Ä©”ë3 $\õiFâ`Q QX#+·«Ñåɳ–6†V•н–{.ìG¶‡øŸEúOŽ7_r¤_y¨‰™"#ú03)vFÀÓÓå_]=0bÖß×<´¼ø8ìŽ×`xýX8¸%õX]ÇØÀ¤æ<ܿЖ‡pæüe ÏZ²ÉïÕ?ÖІsÀ±f«0ã¸ÈÕ ðlÚ!¾Èš®t›àHÈgÐA<ßÿ¡¡ò¬.È•!ϺFÇ0¸Fø ö,;¢Y¸–ðò¯šÁ4 Œ‰Òguéiœ rã«Ïå_ƒ×Ó£Ð8<_TßX-Ï*¸Ýým)\ó^´VK¼ªæÖ^¢gh“J²‡_ø7ÍNµê²}W^qžÅ½$ÄuB¬}¹ „È<6Qå¼×€¦ÁøÕo&A!‡Êé:Æ&I“H¦’ÿû4g.»Š<'ÛwevXåRp¿¹»‰@SžPØD•Ó´;’üÐ’éh^õÆp×ð 2¬|³˜dª¢ÏJ†\©\*ŒÈF¶ïÊì°Rû¯tnÑ!Ùè+é2â4d û¬ˆ×¼›ãøëÓM/Dòr¨}a0ô ²ª«ÅNÍ×#ŸúÑkã&—ZËzÙ¾+³ÃJí¿“býÔSF)¥ÝÐIc›èc[åÐø½ Yÿ-ÃÁ¬kŸ±ePÊ¡mëxϽ´$íº–“í³VÖœu3 ÓI{û/—¿ è}Ç‘ûʳ"GÖʳ"GÖʳ>€ç²ÒÆ|¯ÙöÑåYëuÝŠ}äb= GÈD…p¤¸ùÕÍÂàzÎ[Ñ ë®÷]‡!Ì€ÄàZf$ÐÂD5‚ÝUàC¾3!žÉº’UÒïKÀ€Ç{–J¯.ù}áEïôeàÃANVì V`eæW‡†dYÑ kEsd¾ëó-]³é4í¤þç¨4Ѳ½žh8Ðú¨4}º©¿#ÓÚû—ëhäd•}ÆÐÐР¼‘¬1jƒÂY¶TET¤W%—â!vÎXÃì®j †¯¼3ÔSŽš©Óù·2¡“L´’•…ƒŸÂ9* ›°L­1pÚêÑL ÖÊãˆËÉÖ’ÝÕ4 ³²nŒ8=µøØ5+8§„ÓäÌÀ”lÓUÙÀ¢Q;uß°FScQAýHNC˜E»«Õp§P˜ù³`/÷6] {޲Ÿ~4ÃZ9ó,‘æ/$»«ˆe˜Wß…L´0 ³é*¿1«'Ÿ«Í«ï7Ð k…ô#æÉp˜¿n–ì®Z_ ó×fU2°–¿Q†ÊÉÊ\‹`ULAÕYALfša½T¾]EÙ«ì±qì.û¬CÒ 3„YwÅ»ïÖßc‘#ëȳNb3"GPž9²îœåY·ÿ¹¬´±åY·}tGyVÄz]·b9‚XÈrQ)ï5€+UõÜ='“ÄG$¡QVDñÝ]úº*nñc|å¾ûNAôøDÓý¦¢yYÁ›·ìí[ b?Û!I*w¬1òd{5%ȵ¦ýÞ3,xB°èX‚°‡Ì§=^f¨uî,dgA)Mm¿û9’žÚ^më> Á®S¹Öùî=?욃Á$È_r¢vK}ï2|"]/eÊÍzi´ÆÈ-Bµ½‡ŸÂ øM·4ƒ9î&s)÷r.sΖʰèû Z=ˆF~‰æüÔDvë;$K°᯾ß8Þ‹¼j’l¯6¹zŽú—Àìî~Ì“„jgÔiêTÃ_†g2¬rXpÞþùÆËñhI¥Îv)¤,­ÏªþCpœ½‰#t©-—ë¥K¤€"D±±¦wQz^Ùs·è÷Äb>/é]`ÑÈöøBu2-PÊë‰‚× ‡9–*á÷†—¼ÓKR¼Œßûë¹ é<^²~uJ’ x—HæWIÚ0I! ÀÇ”±h:±ËøÅ8^")uæÂïÂEísæ!eÿ¶Á!ºýp•Mì–`Å»p|]l8ڔϑƒ1•VK.8p,Ûì ÒGÑÖƒX‡ÝÚIñZip´ó ëñØ~ùO59;R{ÈS)Æ›ëŽî9‚`×þæî|Ò¼oo÷D»l´ÉŽv¾Ñ؃°æë°š;Åö2Å8bþÆ »dGã'>?v*ÙS£q!ø‚-¬€Jx8á!ËñÀs<²à8òýÞ¸ò°<“¦Z Ï¹¥ž<‘QÐé€ö*F–*F(úis‰WEZEŒ—…'R·›ÉfæÜn…—5áY’Õ"è¨rDŒZ’ »Õ*eƒAzèëIqäc–¬Þ É% bø”r rgÕ[¾Û­u÷\-Zuwv$ëfHƒò9bùla˜†êWpöà>ÌÊ>ñíS¹Çã„e@Š÷†;õØÇ`îýáÌÄÚÓTUSÈj.&Œ¡aþ—YpÌ1‰p]‡W•“‡# mt/eã.£*\DF½M@|:‹V½GÓ3",Hƒò笚†»@õ)aÕ“uµ‡)åÞRÞÎZàyàŠòŽÅ;Ë¿?ܯ{÷fò„[·{…l”¥eÊšBXžd$¬Z‘…ÎÛ䂼ñø„ó5¾H¸%løÆŸ“í;£G-"OÑQPW¤”–°qx`´Ë= ÅE”õ}¤a„N÷!+Œvt ddO¦~ùœ“`*’§ÏXc%Mî¿P=C.sNÑaÄÉGYÚPeMÿ…š¡nÂA#,"Ç¥è+ q‡äìury¥põ;íøÀíwž{GÓ-.ÃW§nuQŒ hºÇ丈²8™ÉÊê>¦/ŒV¬3CÃo.ÌŽ¿“Ÿ\.L‹ä)Ækš¼7f‡¦k~ÓXuϦH˜i"RKšÝüêcþ + ›¡aô¢®9’.ž´(òl†Ä±»f§‚¦‰&8¤í!)\Ý9¥¿}òÛ‘˜ ¿LˆW™¢ÓÒ‚¸2>ôî»øê«bÅ6OØ|FóÔ'ÇZ·ð ûÿ“û—A£M‚-1“Îe aÙ¢¸8gÝ.ètxÏ+{>‚@ GÈDåÏGv"êÀ‚¬â8õ«Žјm?µ‰¥ôïm+ÚŽÚ ;‹#¼¨ËËÚU}ˆ÷5¯7œcB>OHPÕæC^ß×—Ž—ýÞØË>_R ‡”ßãõg!=ãñî@vîŒg&¹ÀôË9]ÚïõÎÝ!©Ïœ†#¼Ã1w–ª…{ÃLÁ|Æ]<ã£äôîÄSþéËÀ‡ÏxC¬dbþb¹ŽÀ SŸw¤„ë35rÄVpDÔ€UiÁÖÀ2„®ØìOУH§ùG‚ªö¹N›õЍ¯5jwméŠáp¬{_s÷zöµv5Áœár[Ï„»Œ?%qÅtî½-§hž—½oÃg Úa·tЉóòÏÇ3¯ô/ÝBhÜÞû,D:^²3µt)¹\Û2zêï!s².!\À؄ͻ%‘u`{FòÃ0»õÀ|ySß»¢ªö3 5À’éojØÂKá?ÿÊ­VrX¾Ý ­Õ¡ßÂ^R¦#ao寭ïƒs 52µpËïˆ æ2ì50OB½^Pó—ËõÍ?€oÀ?Èå««ÂæÝŠw_XíþOd:ÉÀCë0 yß»ôøéôód#‹sJ ·÷‚ûggmînpÙuKG'^owN­P­o9UËs—œžCT0?=¥ ˜ºä<qÄüårq`tÇM_øC°„o`Äfqdl`¬{l€#ËØQ™7 %ñnsR YûO哪uïý7—;] ×¾™81| vÁo/÷Ë|:½öæÒÉáª3ä82¶•~ “ÕÒÅüó傾èññþ׸{ô Œ¸ç±¦k8=Ü5|…,iùŽ@aI<ã`vÏDß»‚wB©$.@ ®n€*˜9¢1à ¹L–š6ÑAìY:SÒÍ©¶‚Ú/¯’qr-5†óZáxV¼¢˜¾\$ÐÕå2¨|#¶¢©êïæúÇ»ÈVú$r¥î†l×#+ÔºŒä{×êö·½ rã9ˆáökÓUcMÐ21·2n!ÃÊ Õ·ŽÅ¾sì ˆéš'4L‰†É æzá÷ÝÆáyiúišŒ%r1ÿ|¹HÙõP_µ†o`Äæ|CÓ_íûΗ„eió¿Å{¬†ÜG&ð}£²9¢<Ø|Ž$Ã+矷Öàm¯ä±f‹ÆÓjé·DeÏYä9‚@Ž #ä9‚@Ž #rA GÈrAì. N8â^û‘æ&qÁ›ƒ(Ö@¿›üqlÍÔá²ÑE´¦ÚT¤”qr±i«4¶‹eëx§Šú[›rи¥I?Â(Xô‹Ÿ,¡;ÊE…oæ­œdtrþÃ1ɹâè,JåùmH¹U5ˆ÷WS…ðvé¤È‹Ž%Rv¨¾Çßޏ{ÝY²ô…×ÃñéSþ“ÍÜ%' ­°ØaãÕäýx'-ý ‚gïE!£å&gGfObvkgÎvïm=¼†ÏBÀ¼oO¢]VÚ (Ó1,tïkéõ¨2VçYrâuÙÛ÷óHËÝ_}þP=‚,3.ãM˜®Q·Lˆ¾ÏÖ‘óËØà›À‘ž‘žQqaÇÖQèmŸÚ'Ú×>ŠzŽì×Aa–ÄRËT¾ZˆŠ'ò^õÒñðQÑkøÊ­6h£^ÃW`´vÖYåÓ ¼€ÙÌ-qVa ÉÌSIDAT¨#i—Á ÛUú³žL¯AæHoên­0QqM‚Õ©¾ ö×àVr)w*—ဃ6ø&pd´{´G\ØqMËën8Æ!ÐôÁSlGôØ­˜Ç™Á¤ïßÒ Ékø‘CÔk¸Kð~°÷èô˰(x '×§ñ”é]=G§EƒU4çp²€ò†.«èÔ¶ ýÈÔ”Ò«<ÉVôL^íŒ:ýQg5õQŽ ¾ sÖîáþÑ4YÈV¼5Ɔ×-‹÷Ã'Å,¢^[ì¤F8)y ÿ|'õ ¼†k$¯áRºáÆݾ›ÿ¹ß¥WfrµWæˆkÙ-s¤ŠKºÕ6$8ɼŽè™¼]F×"ÔªŠoN?260Þ]K²Þ¹zò¤º¨ñH,„¯’)A9Û¿÷Zøa†YR‚)€ÏP¯á6òøÏàj¯áùtHÓyIàpõÿV=ôdZ‘´NÅ dÜYWðö"•G¼F58ë¸:'üOr^ ¾ ýHzÈ_?] ½þµ„^i´¹fZ“Aͤè<Þ<9¯g~z­îYÉÜåÕÄÌDá×Ù†É 7Ö Íãs¹q3Ø©gp;üÝü,m/ãDÈLH–Ogw©‚·õšŸU~±Å R‘H (µVjx‡øþ[Ë…Äkp49óe2©©Å¿êûš²UÙñ®*²®Šný·x¯©L¯á^³ÿÈxYÆø÷Œ¦â!Ñsø}d38¢<ØzŽ$"®Æ^†Žx2”åë-µefZâ;ë´U‹ ¾ñ±f›Æ+Ûk¸vÏ&dº›{Sæ¬rA GÈrA GÈ9‚@Ž #ä9‚¨|Žd?çõzæ3k¤r8 ]Ú£arŽ,킲 ¢òQ]äÜÂ?µÖ¤ÚG×ð¦:ðHiõ<ª¹÷(zäÝÅýHP7Õ|Øã qp5äóÌe$:‡c~†¬¨CÕG2Ži’BÔ¾ã|žpÎG‚è"ÄNÎL/AfŽéã¥g|ž@oz%÷#‚¶„¡ŽÚkb7¸NZŽv|õc+dIõõ 8TÂrí2Pu¨`ïítûXkèIðÚ>¡{‘¤ý‘}ìÔMê#-Ð+ûðX+ JåNÇÌC%ÇšºzÈZ—êkÖ*¦ÝôÛoÅÁX£6´’àp-$‚÷»,Ì|ÿ6 ã!®–8¾Ù+°õG¯Ð£Ù†çZÅË v.ÚÖš0úÔü<þÙ»''šxêuú¡OG–-×§î˜F¨ 2u¤ú9³þ§‡)_Tè£.WɘÖwªYô€+©…‡°v6âëÎYkøü±cK’£Ô‘^¦øvåô*E7ÝÉk''Ùλ7“'Üz <×Wâª9ÁYë›ñg­ˆÊœ³úɾzÐSGªÔQªŽjÑÈÈ’ùïŠHÔ¡ê58)(Ûú/TSí»ïÃqÉ­«[E(,ÿ9ÊŽ0]=De¡ê/éEæµþ÷"‘øZ4µ?ÿhü\Wÿ‰–Å'­UÕÇ{¾_|¾@Vu§Sï—0´-t¿®ÿlcÕÒ‹->i×T?žl ËóBlùcñ“ã2é£ÑËO¡‹÷‘Ò°¢œ>Ägîi¦Àeg{Þª+'¦ÏhN?¼ÖÄΚ¨ˆ°‘oñž÷²7Ë¢XOý« Ý2ï†ï#÷ˆýeÇÔ¿…wzwÍYä9‚@Ž #ä9‚@Ž #rA GÈÄÎÁ¿ûR{¾•àv±RÊY±u,Ù„Ã7L7LáðŽ¿{RÎ ®c©~$lÖôŽÐ¿£}™ûÃÍq­HrQyp\Š<õ¼Zþ(+[©ìrÞi[^g®‘¶ŽÊQ# ›i 5æõë¸'ÎêVxÿè±è”RL–‹,§5Õn¬‘þ‘~MÿæWyj Ú»ÇÁÞÏ7©c<ÚU~nå–³åDËþœ“·•„‘þÃY¿Ž´nó«î=¦ òN ‚mšO>¶¡~$lsB?G=tÚTã`za%Wo­ÉEcg¤¾OÛµZÊYÌÌü ¯ â#1Î`ã¹…%ŸÒ—ùZXisP'#ŽÑž_ÔfÙ¾¸Ð'æ— døZSOÉ)®eÚÄ¼Ò ™¬ÎZsåL@²öé§óÛ ilÎÓíçª:²û±ªŽÔ æT&œäªmuôþ­ÐcužK0Õ•Û‘–êGxïæzèTŸt·µu©ËEë Áƒ¬Xúç!Üi²w0—x³={ZO5A¬£ÑÖ¹ æ½$¾ C Š zHA˜ê§˜Ÿß¼owx¿J\×*ä"×Þ£ÊëžÊYÇgRŠm/ØæëÈî©ãÏ„:Ö uc÷/¨?ÐÚ`÷oÿjõ|ŸNotÎêî¥:¬ CËwZ©ûEib†ÁÝbƒÎ 5™»|»™ì3W‹I0TM)Ôè¥ ^cÞ2ëÅ#1¿=šð'a¥ :œW‚]ûvë}–snzÚç²ò¶‚àΪ·Ê:Þ¦u|ïBƒŠºµÖ„ƒŒUºb>{ì£ÐûÈüq¤g¤{¤gd…,Âñ°¸¶º{ó\„9 )9‹êÿ’ƒKôÐæêþæ{ ²ø9Û[àçP~θ–3™iÒ$ækO?Ì\1*@Ò‹y™¹žÇ|ﳜ‡Z_wé ¼­ Hu“¶WÄ:Š÷#WÕQ˜k->’±²[YÔ­SUËÏÜpò‰ ÍG,áî±nŽ,£â\ZÏ‘µ^÷fü¤ þ´Ð»b5ÕÔa§D…MY”£´(¢ª?1á|M:ó‹BËW^{ ŸBÌ«áÖ2Éù~ËÉQ瑉ü¶b@êÈöN¬cµXGñ~¨êh’d†À¾–²›¦ÁøÚñ¡ ~î¾BiÐÒC„úô\'Và ].Ê\4 ÌbSؤê›TT ±,ÙÔAFùv?LÈ_ §òþíÄüxHQud7\%×ȧ`yÉnﯜ‚óHƒ¼­$ w}ãßx{øŠ|¯u¬QÔÑï¸Èבº ÷/+{L¦Çj´;’¼Êt VL—“BÛœþð¿=XÕòâLZ7óáHêlœÞÿÁèÁæºßûÜñsM”¾¢¶¦.øo’_dÑ}<úÄÿ¸ªîl$~®Q£›ùw±'盫>öÄï+Ak'e¨éÿÁÁO˜ƒ˜_ÍãKßù|±úñ}†‰§V)Ë«I#^[Uþ²Ëù¯üÁèâ,iû<Q¢ŠÓ>@}­UuT%8pktMŽO½]“j¯{«°Ží¬9”ÍÚrâµ_ÙS‡¬¸¨ž:G yLK<>Ö#ò:3÷k¯R! ®ÓB>O˜gé~-øN£º4IÎ}Íç™»#¦c¹ˆq…|˽ÅË i¿÷× äÂß‚|kiþä¹ {iþ9¿×ãeZE·nùº¥òuËÌxI9½¬š¤N!\Åña²ÏmGJµE"p&á€#}°àóDé¿_º¯ùò-1·wo±:Þ x¼ÓIqnÆ'uHy$ OOí)w>’ugGÄE`´Ë}`×¾¦îÀ‘ÕAý]‘ã-ݳê47uÄXº1E7j°pÅÜvªILÇr!qDâ ù–yûJ•s•Þ -° ÿ³Øak&ù zÑp ¥—*Zö­ž:¬¡wTŒ##=šqQÔÉ’Ö+à_¹-û‘h­ •D´µSm„š†zˆ©ÒIã(u¿Ö¬LGâ~Îä»J–³Pï„åÏôbBÉŠèñ¨ê–¾Õ&>Äs?¾-ÌEÎÎÈüC)õ}¶«ëèp0Ÿ¸³uò3½T¼¹¾Jº¯ùò)õhÞª~F¸Ûúb¾†ÞQ±èÝ£+?—R‘íýGß[’ŽY±*Õbî £gf…Zu‘~¡~Št,|×Aa9Kê°†gú?ýBYŠèñäËhî}lZ(Õò d¸O²TêûlV·ÅÔSÛý €S¬ÿAv;9ù¾æË§Ô£Y|äì, _ìBk蛳Žu ˆËÑÂ0—“9ÌÓýÆÍåN—^ë t9Üý9 Ëû_âéܯ)ÒÕ qÕù®ƒÂr–Ö;‘õÞe%Sèñ(0<Àê¦×ÉeP8w㨻·iyk»¾=®ÕRÍx^šÑŠ÷UQ>…Mìk•º´ÞQ±T]c]Ãìolµþ~• 8TÝ@ö‡Ù“Eu9bÊH¢>Œ~uˆ“ —S„âÔ©š˜Žæ¢…(+æ[ ËYRïdýŸ ™"%õxDFK–F¬Ûa¹nLW¨–é§!—RÄúmÄúÑu‰ZX5›äûš/Ÿ¤GCëX +ÑUu–±†ÞQ±~dœò¶¿ª(w­ƒt¬¹vöÛcvhtÍÓÑÚìö7(#™®aܶÿÖôD@ÎÎ+¾1X®‡ÏOؤtM$Ìv:&qÅ|ËCa9­¯Æ"šÓ6h>àÇçÚŒ“AnBÊËúñ¼fãä§/7‚Ýø^~lqÍ ïöƒ v¡n—h݆盛'çÇl`uÕAÃä7iQÕo;0.ÔÖSþ¨£žpZ&£9R3å}Í—ïfd¸ëÓM´Ž÷Lê:Ë9.\KzùWÍå~CÓ}÷©ï~é;ï>õݧ;ù[|…”sCuÔ õ£õìØ¾:ª¿¡ãÈNø R~ËØu\÷;k¥ÜnÔ½Ú& l9‚@Ž #ˆêÊ-úOvyÓ<ŽÙE7q—?8Ö #ä9‚Øq8JGÂRÅMò§òÆ8“¼µïï~¤ýTñÓÝòî½xŽ@T.GdIr¯? Y…$¹W”$÷Ë’ä~W”$OÏx<Q’<ìñ†iøÜYàÃg¨¤öZ]¢ò8í4½Ô…':l-ÝsxiÿÞnQâHôc`”Õzº÷5wÏ1)í@ϾÖ.Q’¼Ãné ?n>‘Ž—ìÛ$IŽØ>Ž,AßÁ9x†J’·BÛ—¢³ðSU„¼$yü+·¹&žÊ¤K’äZ#“ÎÖ÷Á“P¯'ûSSxÇwGRÀi”’äËM%%ɇ{J’äîîc²$¹†gÒÙ<Ý?²]’äˆÍFõ!Ü/¡ Þe¢Öh*gx~E6ºý7“'dIòÄ I’üW=IrÄöõ#ˆ‘Õ H3éòLIòjHQ¿VÃÕF&IÎSIr3 ‚‹I’ïUH’?KsÁ9ë®éG˜ ´õzäSbãä\Õx#4º:9Üꥪ­¢$ù«~N$oj™˜[·€ÍU “AÍuI’|2kÂÛ]‘XÃïÄNÇOvùï¾°zj"à,qÿó9‚Øè»oŒØØ|È‘µñ8¶Ž5ä9‚Øó‘¶8ÞÄš™ÁûX‡#áý@à|A GÈrA Gï?ü˜Oó̰d`ÝIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webtest/0000755000175000017500000000000012165514774022036 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/webtest/threadgroup2.png0000644000175000017500000011007512032647205025143 0ustar ebourgebourg‰PNG  IHDRO{çª"sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ'] ¨„ IDATxÚì]w|Åõ3»{ý¤Ó©ëÔ,[ÕÈMîÆl\ÀSœü€ b ÆÆÔÐB½Ù!˜HB `0¸áî½wIVïíNW·ÍüþXé|–d[w:;8Ùo>1'ioßÌ›ö¾óÞ¼A£FŽ5z”N§*T¨P¡B… *T¨ŸÏ 7ldGõØÂ…‘U)*T¨P¡B… *T¨PÐæ°€³­U~&„¨JQ¡B… *T¨P¡BE'´J©ª *T¨P¡B… *TtOºz(ÝùÚèùË1öÿ†^ß2v˘ùßÀŒ7¶>: v½6ºýóp„B.A·‚ß©<.¡”V}yßíïžÀ@Hîß/¹5…Q¡¥ ¡„]µqÃk›G—´ í¤üËPåp©ú¢ÅøO•S… *T¨P¡â¿•0P @Èô×7/`] Û²ePJÚ½”BzEºD)épzÐA]½ £2ÙùúØßÂJxAYÕ_Þ?ûÝãys?{ÿV¢´úËû_Ýñ~O¿Þóꄬ–@m\ »_»à›ù¯ŽÙÎv–XýE‡JnI‚š/ïŸ=t‘¢Ÿór×¹š?Û(ä2ºª:©ú¢š§aê±*T¨P¡B… *aè°Ø( °®(ÝõƸ…Ëá†W¿Ÿ5œó¥ÕKøéObB¦½úýüž¸Ý òËZ‰1ÉÉÉëx@†ÝJ^Ù4fëø…+1ưbÁXÚC‰”V”€¾É „8ëOóÛÉO—òû  |wÚË Cg5ð*,\Ê“»^¿æñ•Êöü´W6QªSþÅý ÿx’œ?}ï[HÚа¿â¯~?ÿêî>?ø`Ƀ»þùîIŒoøù͉”RH¼ùç7,~|å»ÿÜ9kÁ0e_>+i·¢¿æË£´ÂY…L{ù‡Ã{N×rÒê/øé¢“íþ :O§žÓåÇ® Ú>CÖ› *T¨P¡B…JºÙŽ=ç—pÎ»ßøé¢ãys^™°ñ±Å _½iþÕ=6‘»ß÷ÝýÆÂ•OýÃúGl_͹ãx'¡@‡ÎÛø ðØ ˜þÊÆy…=ÝÛ.=V®Z¹p\Éœ,že ×µü…lÚô­^:çŽÅ˾>zã#…@)Æ+nþæMW¥•_>°pyžÿm”îÞ€ñÊ ô“õŸìœsÇâEŸîº94mÔT”ÀôÑ…ü9Ðùs/ÄíÞ¼L=TaP@‡ŽžJ–¯X¾y缡…/ÿÃg×>±JyyWͶ`õÒß<¾OýÃúGàÍkŸxü×iŸüq–M©W×rRºûÍŸ.:Ó_YÿÈÕJë÷ØMqaC×íÚ{»VMT¨P¡B… *º' ]=+¿ÀxÕ×®B¦¾²aÞÐ@c-à3¡{¶¬€Œ”¡)ÇK*ªÈP[O÷‰»TSQ„d§%Qš˜’p¼‹Ðî?_”1<²ñ0á‰U'ß»ëÚÅdê+æ"D/Xþ® dê+ó†RJ)­Þ±á8Àô”D¿5ÚþÀÏnJ¤’p|Å–Ý󆆦é¯l|¤Ò€vWñ^Š |U×ßt¼|ÌT²bÅŠ-»ç íÔ ¿BhõŽ Ç ™>f(mÿʆU7Ýœtžr*¯ÂxÕc¿Iûûâ›mÁ8GWÊ@ÎÛ!“àâU+TC•T¨P¡B… *º% ݆$)ÕÖ=Txvë—øŸ'Ðù3Æ«ž¸n` 'Ê«Iìq`Iw‚ªÊO@GìÐ…„¶ÆÎ+xxýš‡j¾ž{×û§V=6'õ“woJU}ªúT]êWb«©úTÇ»ZÓMU\a„A…º©Põ©êS…Újª>Õšª5UkªB% *ÔÁ¬êSÕ§ µÕT}ª5UkªÖT…JT¨ƒYÕ§ªOj«©úTkªÖT­©Š a @e@ ºB5"66}öÙ¦mÛ’l6ÔÒBFʘ3ÇЧ:˜/€U«—×7ÔO™<-!!±ë_=´cçv«5ú–›o öÍ¥egìöVZ,Q}ÒÃ|èpÑ¢EEEEþ333|ðAurTj«]¹ú,++Sι:ŽÔÔÔ®ì\µÄ¬×÷WØ¥üðåkI)Y™ÃføÛ»îc –LüåÑso[ÑöœÜ´„÷µå]sÏ žú¯#Û·ow: 𑩘e a„!@Bl±–äø(u6øŸ& {÷íÙ`ïEß…‰¶øc] ¦–è!Y¹×SЄP¦Ã§Š-&#  2¡@"Ë^_ßÔœ””˜×·W¶û®]»’““Â(½]B aýúÒçž8cF¿ßþ–5›I[[óŽk'O¶hQâäÉ=ñЃsËÊÊ0ƒšÿÇ`ðë#E Ev»X^”Þzíe"“!Ï>÷ìJJȃùÈÑCÍ-Í……ÃvîÚ>sƬ®:|pê”éßÿ°iíúï&]{}P/oii5rtZv÷ÎpÌÝD–D¨¬¬úð£ÚÚœÙJ/¡”îÛwêé§ŸúÅÏž–– Ë!„ÕÉ1( G6û6æ1Ç9Çζ¦çDôPQª>ÿG \^ÿ¼w]rDJAt^JsI‹çt:kjjA@QJõz}rr²N§»zð§ˆAaŒ/³q)IÆX‘ëv» 7nTLùsþÚÖ,:ë“úŽê¥§ÓyÕUW@II‰"ÅÞPNygtl‚ÿy·ÓîµW'f ¸RÆûÑuï´ÿP8v&üÞŸ[’ú§Ìü»Ý~æÌ™ æâR.š–·+¶mÛVTTÔ¿–e5zŒXa #@ˆB ¥2!@}ý_;ߘ{=ƒ‘:‡ÿï†ýö>öè“ëŽ"ˆÇ‰g£H£)Z°$FD…€¸ŠÕ¯OºÁ ïôËï¾ßRYQk =›¯F£‰Ž‰¡0FcשSG}tð„ñÖü«øÒÁ/EæçgÖÖnýÙϦîÙcLI鉈òŠòyóæ—”ŽiÐ)šEÖR‡5!… ;ÜÞâÇdY^³vMÏ+v)!æ²²ÒI×]o4˜JŠŠŽŸ8–—Û?ð¯[·mNLHŒ²XÇŽWTt2ûxÞwáÇ´Z]ï]Z‡6ÿ{Õ_óyÜൠ‹ËžŸ;5j@UUã’×çë[wRÞ8õ¯ ºæ6urìÑŠE¨$ÑÖzùàzÞQÁ4ÅÊnÏÌÇ|–h­JTÂàǤÎX´¾ E?8sdëOGgÇ1Ð%ðX;β²2ŸÏç/¤Ïç“$)--M¯×‡Q,Ë¥¥¥<Ï+ ‰ˆˆHIIA!U)´QÐÜÜÌ0 ÔÖÖFEEåçç{½^„PAAAMMÛíNOO—eÙétFFFÚë‹4 ÒÆe‡ E–eÅ–5›Íýû÷XUU%ŠRKÙŽ¨ÈIw–0Øë‹±Ì›â³¯”ñ~fç¿F\{‹³x6"1ð˜½KŸJ4 3Üe#pðàÁ™3g¹ýF-êÿ7àmoÖh4K—.0aBPR6nÜøùçŸGGG‹¢8hÚ<“-W”ˆ—)¡ˆRÐj8·O„•EŸdõ‰Ô¨U Ãÿ0aPPZZÊ0 ¥T1¯¡ÝUzåP¯g8=ÕÌBŒ5"憑Q[°eÒj4>ÞWSS]VVøûºÆæ[n˜ö/¿¹iêuZ&ä:cŒ»% ^x!Á¨c3Sæ>TòùŽuK­nMûé=åûöÅéõ;}ôÚÏ>ëÉû !o¾õfvV¶(I!¿fœcÄB#%RTT$Ë2!A §‹J!¢·æÑ|c“í‰'̃‡\TJȃÙÑÖëõzÇŒ÷ý÷ ƒËå<]têö["˲N§kjnãPr`‰ôn2¢”¬ýä©iCcëÅþ{ÚòÜmrttlß¾Y{‚íÿò<ÔÕei“r #ŽGBýÚ¿?¥†Âë’·/sVž U%u8Öapä6•ag=X¢/á²z™á|aL9æÒÆd677×××wý}\\\LLÌM$QÉ õ¤ŒXð¤ÓQtëФ´8ƒž «³ÁÏ w„òûôôôpqBÈ™3g\.—¢ Jicc£,Ë}B s AŸ¢(bŒãââ!ÉÉÉ<ÏBdYF€0fRSS5Çã—Û-Bcé¡$[ª!*9X)>Ÿ/99RSSª Há8.55U}•{Î$§ö%¬Q±" ®d_l‚-"¾ß•3Þ‘$Ìh\µ‡có3-Q1§·~™’\|`ñ¨™_‡ÆB«©ÉdZ±b…Óå5j4!4RO  @¡=\¨ÝÎ 2$%$„ÀQ1Æ---‚ ˜†Øe%Y´¸®Vô/Šz3–8JHûZEõò T¬®‰ÿë„!€¥µÓYå2F.„xŠR[0€Àääê½–x1>>Þl6þѽÿV«½v̈ýÇOŽ4 7„Á_?c ”6lÛ–LœüÞ/ü%cȯžjéŸm0~çÛÏûv}Ë:ÝÍ{÷ö|üK’DÁq^³§øO–IB!”’ f™ I¡´ý!šªÕo/]~Í5c¿^Æva)!f½^¿|Ų©Sn ”ÆÅ%ìÚ³sXápåO[·o1|¤$É Ã|ÿƼܼ^XH-þÏ;wo¯««íOF)=pp_§o¥$§\;±G±d²$z\Ž‹ÞÛ’÷øo_vØo¾ùÆ¡CÇ;=f6›ü‰(kÔK/©5>ñ„ýcGóÈ4ï€tcŒ‰ÑéÃ.TSS#Š¢V«UŒWY–1Ʋ,³,ëñxª««ûõëA§OŸöz½&“ÉétB8ŽcY¶¹¹Ùçóåææ^ãR„’’’ˆˆJ©(Š^¯×ápH’H@fXaÑiŒÊFÒ¡C‡û&G¶5UgäÞ‚”ŠŠŠØØXE>Ÿ¯­­M’$ 2æP„)ÒÝPJx·1>ïø±#Q#GjµZGc…«¹>uè„nûj/Ç»,˯¾úêúõë~ûÛßæää(=ùw¿û]]]ݵ×^»páBÅëúÿɱý« ›à©=ØV±;+¿pç÷Ïš’L²äõ8+L–¾—0<ÿüó#GŽ?~¼ÏçKMMmiµ#±-ê‹.ÅQ”G›Õˆ¢ÈjÆÑF¡gnËk MÇqÇ0Œ(ŠáZÉŽÇVãðPeݵ{ÀbÀvOGð3 –EWô¦Š0J)œu0(¿c2ˆe¥3o6[ðífµÑ€ŒA•†ß}«Ø°Í‡Ç¡IŸ¹Ýî£Gþµ¡¾þ³eËÓR’9Ö/5%Ö2a ”º0B­v;ƒžêôÎÆ•O×& žT¶sM˺ç’¡¥°·§ä‡’“C)Eq š><3`ÀJ)PJ)B)/J²LdY–e™ÈA† K9ñý‚¾Öš›×‹Ã=âhQÜ|ï½×ì>xa)!æÉ×]ÿégÿðù¼h@þÀïÖ®TC]]mSSã¨cdY®o¨§ò¯rO޶úW‚êꪅ ž¸hBo¾ýZpÛG¹xˆ¶F³ óâ‹/J’ÔyÀ°,B(2Òâ.b‘…qr<]åxþ¾ñà¹%›®Ð‰†²vÙv[¾.!>vÛ§CXVÈŸ ¹ãôQ =µ©{£Ï!?¿çæ7ö˜b9ÓÐ/^qÛë³FƆ·‚Íç¯^~öÛ;Y±±fÍ{;>"±p@r´IÇøÿÂÃ*++»e ŠÝVYY áâ G•eÙOü:4pàÀKÑjÔçm.– î˜f)Æk44Ycš‹½åm¾üX’™(DÇF„‡)lAé™lj¢È0Œbq×uà‡†#GŽ(-¥ÑhÛm,»âr¹z¨Ã^êÓh4:BÏó’$‰¢h2™0b)¡¢,9ì­^GÇš}|×ÚúSšØ3gÍA Ïó², ‚ HÑë cJ(¡tﺯª+‹’ã"em¬FãÔjµÅ‡·ïß±>ÂÀâ³/Åü¹lٲ̜9óĉóçÏ_±bÌŸ??--møðá^¯wÙ²e³fÍ öµƒoxêÀ¶õŸŽžÂðM [,i¦©·Ý¿kÓjGã±ËCH’¤¹€Ý‹ÄíA2E"a”ÐöcÈ€(€DBtÏù Ã0 ÃR@eÍ4?YaÔö× ‹`ëíâ×{Û¼"Uæ_Ž5ñ?®þS`ÌbÌ *aè)a@BÜ~F! @ Á#4ô$'ìaéñ3%UÙWý’@p‡ Dg¥9*Y”rFËàüüüÀ¿æççBÊjj9vËÚÆ´P¤1'‰Ï ®ýyBu0½F#I¾6¤ÞõtÂàIÇצŸ,üìqçç/s`$¦ç㟂’e⤠ûK/ððè«R$BeYV6ÿƒšeÎ'ÅSúÏ[²Öþß Ò¾c-B†8üÆ|æ*Q&–ò`6™ÌÙY9˾ýêÿ~r—Ëå<°`ûŽ­#GŒÞ²í‡ 㯕$‰ã¸6o¼í–Ù½2È:< 2‘K¨­Íqá¯DDDöF"Bˆã¸ )Š^&Âp¥CðŠŸ®+ŽˆM‚„$m²©ï¯M™x76Fž ¸m“@!ÔíÎ_oôI%* z©Éȹáû†šŠ—×Þ0-'??U®:"ˆË©5 Œ5¶•±tWQIý™ë¯ŠMLŽ4u(,ýáÂl¡g°Z­½·w•Ø¿@ß‚ò¯$ITÎΆwÁë¬#‘(’E·9Òëóù’­bŒpROÕ©~S#“ çy–eeYfFÙLÑétŠa®sÏ ñ ”677'&&bŒyžokkóï}\ãÒl6{½^QÝnw”%º¾±Ìî+ÂŒLŸ˜¨T·Û!i<Ž–k”9?<å°ÛõÆ 'O½^ïóù!'""¢±¥¢?Ãh0ëŽli©ÏOÒ?}2&¯‰å4>ãØ‘}Ù Ú²âb‡ÃaŒŒ ãx'„lÙ²eñâÅ111ýë_[ZZÌfóÝwßM)­¨¨8vìØÎ;gÍš¥<0f̘à #4øÆ§­)·ú %ƒˆ5^7ñ&†º ß´•¯¸G¸ë—}^~ùò´)Ã0þ¨9‹žró¬S±£úi~]Ø(ìßU̳PÏØ·e›ŒaaÏÛê–ßZÝ(H€1üb¬õ7“bÞ\ݤ؃óßéaàZ¾ÑU,.Š/ÅÜ¢†‹ÛOÊÞ<êÈÁƒüAr!ÐPd!Z†<½‘Û}¤-3?…Bp!}‚§ÅM#\ÆA:­öĉãÝé6ŒJÒšÏþ™ãÚ+ˆÄ^?!X Dü㪠 ,Kd$ÎÊrÚkŒ”óÏ—~ý[Zò"´&!5Œó§Ëåš={6ÏówÞygSSSRRÒW_}5fÌeJÑëõË—/3fLJJÊwÞùâ‹/jµÚÏ>ûÌd2%%&#ßœ¥‹I`ûéï­Üwø7g4 476ñØ'Åw JÉžÔa†`kúì³ÏÀ¶mÛêëë_}õ5ÇCãxÍI(PÀeƒßÂ@½pq2 £Ñh0Æ Ã`Ì`Œ¦-¶´‘@ ´á˜û‰c³t% BÀü—z4Å¿cÓ^¡’ =ýäaøøãÏ÷§‡~¸¥¹)h°gßîÃFúIÆþ¼¤ÈÏ(2RdFšh—ç›`sªR™÷yˆ)}Æ(555..®ÛmŒH³‰÷y,QzY&ewK(PØÆ!†a’Ü1{vëÆƒ›o/àÈÁˆDàë_lZ¿¼áßDZ¤}衞e’dêÄýEuxøªôXÅ”§”’ Ï0t•"Ú]o}mñ×⊭„ðï=Î:QŸeGÇ̸¾!ôÂRz9˜ÇŒ»éû 9Ù¹mmÎÃG9v(%5RÊ0¸¦¶úö[ÒËÝÜÜ¢óþ 8qâÄùê’““ÛK‰S¦LéºöSJHÏx]Ø'Ç+q®%~Ù'‡’̱zˆ7@¤67Â$Sñ䑱 ð¼@Ož;øì2ØtÕ xÀ)iòÆ¢Z¦!óæÂ„0‡^Á^Aãâ •âÍœËÒ×[ÑVY×<¨$Ç0Q ÖЪÔ××ó<¯D‚ÀqœâïõÇâûÿJ¡¾¾>dÂpèÐ!¥Ÿ+Y}0ÆÑÑÑMMM111Æb±øMÞÝút)¸ IDAT»w_}õÕá2Õè&@ P-f¥3²¶æ’ä4v€¤°ôL­Vëp8Ç‚(ŠÊŒR ׉g¿O†eY§Ói·Ûcbb†QÖ Ÿ‚ÕgyyyJJ ˲‚ B4œöPұƒ«Ëì>Šp*jh<™V4>5šuzd¸d“l°€Ûí2MAIINNVB¹! éþ»uPÅ®9²ã445¦Dƒô†’ƒë,œS’)/¡D“ÄdŸ»M£‰ ×xùå—SSS¬ÕjÇ·cǽ^¿{÷n%JCCƒ^¯ÏÈÈ4hБ#Gn»í¶¼üòË/¾øb+QÍ®ßÞž™—˜Ü'ɾçtå#•‰º(‹Ñp´®2ò—Yµ§Þ>¾ã…c_¶eÞx‰Ú´cãLºûî»Ë+*)% ƒ="îRb?üÿú CÉ|ƒb%1˜Å—7 ¯,J(Æ„›Ý@($Gs`Ðbcஜ3 {Þšøä* dêKæ^ˆ-4|Èhà Œ¶?Wû˜ø«ÿl©hÍÒ_‚'ÝœÔÝþiÏ«æÇO~~_8= à ‡'&&ÖÕÕ)wø£’:‘Ô‘Û3ø¥6Ÿ­4*6Ò$ØËŽl]çsÖS ë€ÕkÖÈ™â&L˜ÐÚêÐÓV·W¢”$˜Á2¬8L:Ø‚‚~£Fí˜7ÏòÎ;Îee4Eƒ€mgUûá÷»[ÿô5u´ÖÿõImD”uéÉ™W—”rQ)½Ì}3ú?qlë¶-ƒp§ÕêdIB­Y÷Ý5cÆõ~uÄWÐ@ƒr”­Û:ôêÐn< lÐë®»îRÿ)çs E&=¶ÊÿË^žî*¥[„,E’Äß#- .Õ¬Ç1,ˆ@|2rzQ& ahmne^l9!¢ìl–9VˆË+÷rÕ‡Íé©2'%Ǥ¸¿(ŠK’³GåCï $ŸØR-b9í`²xR£ž78”e¬ˆÖ7èÓÝå­™-|_G]üÞÖSûD6§É--ÅCPBX–5™L’$)¬À`0¸\.½^ϲ¬¢"½^OaFñ÷~k\Éê«Ñh’’’ú®®Nq5_TD(B8ÄÈ fõGxÆç-¿6I?yfö”¯\'¸Çä%'ööŒÍf“$Éétúk!I’òÙjµÚl6²²²\.WUUUSS“$I”Ò††¥i233Ùà]NÁêSá #ÂS·§ÞYsº­‰Pd²¯ÁC<§Åæry-F’$ŸOð9êƒ" ‚ ˆ¢¨”M9·àq»é1!ÕE$^”$»e„X€–’Q}Ó[ìnK¤ÉM€Hr[sUDTxÃÁƒ7lØÐ¯_¿•+WFŸÏ×ÔÔ4~üø 6TWW€Ñhœ8qâW_}µsçNŒ±Ûí6›Í¸å–[.\çÇé½oʲØPÇ;Ö’ÿêȉµùDápCUÚ«Yñ×%ëÍC-uû¶=_|`QÁ¤%&KÆ%Z)ŒFãòåËÝnÏ5ã®@Cû%j¡â˜vdV‚pÜiϘ®Íp5áh4J)Ã0#ŒQCùÝׂ ZdÔ€ £©ÍÍbI½¨l"³øÊ 5Kç<¹ O}iíÃðö¤'Ÿœ“úñâYçÝŒà*1 íýã«@IÁ¸òw.a¢TÕ'úŽî–-Uµ³=Jwñé(¸¤ºº:„¦X‰H:ËŸB Ð®xvYÚzx‘†‹‹Ð²Ü¡ZÍQ93Pì[JÑiw8«½[ŠÞ8Zê‹ u/J=Áûv 8Æ 0˜Q lKK–,‰,)áªdÐhšûô);ö¶ûîëùž“ÿQTþ (`{ø,[ðŸ~dYùbÏkÑIŠ,´¥yÞ.*.~b ã°7¾|?ù`ûÄ„ôÄ̼^Aº¨”Þæñ×Løü‹ <„Rš“•[T|êLÙ™(KT·×?¹LBs{JV*ËÄ_Tþ–+§ýcnno“á(†¯¥”(VT[›#..á-íkR•ãõ¹×Š„¢Ž!·O¢þð›‰Qº €g–lìM¥ˆ2íªóÞH‘eyïæ’ÖÓQfS|S©Û»Dì‰ññ­qï[}dBª36Q²©øÃ#"".‡Á瓈® $À ƒærÙk&œ®<Þ à0@Rÿþb[Ë7‡úÏr_¥2Ï‹ÐëèðïGýp÷ïí×èJ¨J8ñÞá:/ôIÐ7'UÔý½aÔ?Ò‡–-ø§/¯×«„#jµZžçÍf³ÇãÁ+K»âgP‚mÂBAhhhHHHð;:”›Î.m¦’, Dƒem¤X[›&,˜œ5idnúÿ=öFμ/=±†}û&”ßÃð^ÐÐëõiiieee~W‰RT«Õš’’¢ƒ®®®Vî+P,'›Í¬çÁl6›ÍfI’jkk¡Ã¹MÉÌÌTnA€ÖÖÖ††åOƒAÉL.}J’´gÏžþýûF½^ïr;â¸ë«wøLI>Â0Ðl­Õ/ÊçáurÖU!£‘à5E+eÿþý¹¹¹f³Y¯×{¼.+7N·¦šŽ6‹ õƒÑçñFEE‰¯e‘»±h8 :£5,5u:sçÎÍÌÌ6l˜V«eY¶¼¼üÛo¿Ýµk׸qã¶nÝ £GÞµkÃ0999iiiʹa„ÐܹsW®\Ù)+ãù0âÆÏ½®gËéÒgîî_ïv4³|ŸCj¹äiôI§#ÍC&Ýü‹ê²“[¾œÚgÀ½YC˜ c›vÊ’ät¹9êÒý\«…h#¶Q´EQŒG™P´Eèñ¯Fˆp¦^p›ÉµÁœRƒ’= !Ì $‚0·&LÈ1ò|ð}¡ˆi' —dM /(­Ù±é!¹©6HÍ&äĦ57w¿[¯©~ k󜎓§¡ÁŒ6«|]LYð,ÕÞ­+¦~¸—/ „Iwqïw(‡ž)¢½BølŽzÅøISÍG?Jì“£Œ+ÔþŠ0 £Õs¦Hƒ²˜çæÑ›“]ž !¯7”¤öË0ö³¥ÑÑÑeêÔÒÒR%’µ0==úÌ™ R›SÒ~©ç rk†&yö^]µsË=/›Zíž{®o“¯¹ÿ-sc[ߌº]›ÖôDJï³ÉdοjÀú¯—Nžu»Çã1™Ì ÇŽNúÉaJg= òYƒ?/a€cz´÷yAïÀªU«\ dÒ¤Iʇ6g[ׇîO/—7z(U®Ò™P™€D@–©D(!‘†¨‰K'EðÑæ“[R©}ŽØt2=_®-9B¢Ñ?+åkr“ŽJWý±Öo1èNl²iµ Š¢N§ËÎÎŽ ¿‡A倎GŸC` @꡼5 DÊ3‘²KS:¹¥¢H½”xtíØW~¾ôž‡àý\›ª½vP»×ï÷Nùõ?â ·mÏ-¹œPI’<ÙlVrtúg`¥*ŸM&“,Ën·»7ø|tç§­Vk]]òÌEiC(÷0ÈN¯‰ñ”M˜UøØÃû(I“›š2uŠDè7j{Y™ëo;îšÚ?3."ôÛôz}zzzuuµÿh²^¯·ÙlÇ ‚PUUÕÜÜìw¤ „DQ í~†””A‡’¿5%%ÅÏGee¥fI)u¹\¡ ø7‚ÕçÔ©S`ùòåyyy¢(bŒ ‡L,_VÜŒÖ!k›¯6 gUkL‚Y¢TôºÜZ£Þ#q¦KR¾ýöÛœœQ†³ˆPéà«Z¤#x^ä} ±n–aD b[k«Îlt{iLbxÎ0¼ûî»F£1).öã?-j²;ÌFÝôo*((ذaÃÑ£G Gu:'N\Ž·þð¼Ó틱DN¸~Zccã»ï¾ûÔSOõ´ç˜’ô¦$þž_ŸzãÓØ>™–aU\¦Q™?Šå²ÔÔ‚Ä;>¸gëº 2 æ¥åý„aµaœÙüY’Û˜~!ÅÆ%ò™R^`€“ur½68ׯX«Õ ‚À0 f0nDoÿŸNƒGôÓøƒÃ'P„1F”f/vè¡K{GMÏP]qú¦&@j_€'*ªºÝ‡ÇUcl7Tkç ®b"ÌLÅGa' =/¥{ΫÚ9Æ€O:‘`C! þ–ÆgCµªAg¯Æ¡ôÞç–EßÙX™Òp¾‚DǘJOI:ö8Cô0øÝ x/WÇž²ý äÍ(-- êý„"‡rŒ’uè9@Ê7¹ÓûšußI—×;1¿îþ›4s™JjpNV2èTriB’Ä¿¥ØÓvôÐá£Æœ):ÕxúTùk¯¥=úè¥ó0œ›¿Ea9”B¨ÖõkiòäI~¯‚ÿ JicCã%Ú[õ#+9²SՇﻯľeÇáNõF«]¥œï±^Î`¶æ°Eì×”~«pBlt´OègCðºêKL³²zF{¢ ¬ 4 Ã0}ûöíÛ·ïù–“^õOI ü:Çžå ¥-›ûÀXÐ YÔÞ‹\«€Ë‚rDHxõàͦ/ÿÕ 9) Ü¿¶”ÀOÆô‰‘ÉêÌÜéª`Ù‚2A) Ñ•ƒÈÊÖx UðÊÁè^ÿçèèhFCinn¶Z­Z­6&&¦©©é‚¿ŸõëŸõí;jÁ=¿Ž³È=Jöµ@“ÀK:{„©BWø¯5Ã3\ÙV«‘cÙà‰ƒ’¢ë} ¢(VVV¶´´ø»¢¢^—ËÂn²,{½Þ¾}»I¸ép8ÊËË•÷+Ó2Ã0µµµc%k¸FÂ÷<b¤gãÄkne¹Ÿ°oÿü…ÜÜF:Zf÷I`0м/#3;´>£P}¯×'x+n¼*/K½§*¼¢DbuzÞç0ë#áXi³O‚Aòò ‰Éáê9û÷ïOJJZ³ìó‚!S­f¯D·®ù檑)¥6›M6›­¡¡Ã°uÍ7SÇ\­gQE‹sͲχ\3yÿþýAóÀ öj_zûdwÓß)qw¬!“$ñœpPÇ• =8oàÕGö,[ý—úþuöй˜Ñ†¥MýY’ÂÑ&„na´q(Úˆ£Œ¨Ó= f~` €Óu²7í`ŒY–E!Ô~Õm€É?:Û¸l¿»ÍKõ À€Áô|ÆÛ‰0ô\Ùó¬!1µ€Þ‰9-h݈òLD4[ò¬Ô÷ùÿL±j+JrSoë+Ýá% ;wí5r´r€Fñ&ô1À9G‚„Èû$>ÀWÐù%ÖéÀå–)Yð½îxKPÎàïÍ!»õý{ÿÁ/Ò$)ãóë®™pçí÷}P^#fÆV¾tûÌ_uÛBNVª’÷£‡Rzcy+*ªÞx£eÅ ¯Û=©^óžýëwÝœ2ìêI^ïÑcÇëÞß:}zòüùúÔÔPm¿‡dYò·Qvv¶ßµà÷0 „Y–E1´Vð?[PB’jk«].·Çãéa3õFŸÎ Lzl•¬}ej¸&ˆKzܞ岃oÌÉõ ¾&Îd2J0A":=gÌZxŠ ŒŒLÅö¨ñ˜˜˜ ¬%½" 2pÚ³_%ÐE23ât¸u¬†IŸ¢Åþóx<àõz^«œp•å0d‰-((Ø·oŸB¹%Iª©©Q䊢XUU¸õ^XXÞV›õá×QÝÖ‡ÿ¯ó«DÞY'i̘÷aYt™-n§¡-Ñ"FÄ1ÍÄ]UÖﺾi8ÈÔ?çBœN§2ux½^%^E%󒀕ã8Y–ý·eõRJMMÒR.—+66V¯×SJý§ÉkkkÃEA¨««KOOÇGDDð¼˜;¸b1C¼ii¶òò2C’t$%F3¸1ÅJTž õ ™Y9Eëß“$!#-¥´¬ÔÀiëZÝ1C”‰Ev\ÓðÏ2×Pm2eHÒ©E‹tÙÙQÇk»ÏßÔ”Òìì¬Àˆ$Œ%{Œr.¥wÙÏÚC’(Q¨B[[›Ëuñlðaž˜Ò;æcÄvJnÖ2³sC‹7û€Ã2áXd3¢Üœ\–c/©>‰D@"˜ÅŒî,[¨/7Ÿþ¬pþÍÓ~qWt8Ú@¢²XD,KDVv Å”¿N™úx/¼óäÛÊÔ ¾DÄÇÇWUU¬þyÆçk¡«B£ÑÄÇÇ÷’3ìß¿?~tšf1ÆC‡ {«%Dy©]h•ÝÉbœa*ñ²p`'uŠXŒ²k™J³6IcÔ´ðqŠ{1¨)TI[”žžeeeIII±±±Êqå¼2Ÿø]7J~ª`—ƒn¥ø•£Äãµ/ƒƒr 7Œú46›­¢¢B–eÇãö‰q¨¦O„}éþ¦ëâZЉ6®jHŒ2êµØ ãL±i!ô£Ñ˜Ù¯ß‰ éc%Åg|}x 0Q]s›[«ã4,2ô§ÓU^ß’m6h±ADZƘpÕtúôéK—.6fœ\{Øeo²˜MÃs²wz3 RÙçž{®}ÿî¹çšššˆ, ïgh*?e’\Ré¶A…Ã~(å§OŸŠ}×ïÆ=k¿è“ýSäøPŸ HZ=•I„×m7[m„æ5Ôž‰í3©øðîªòÚq³ÿÆ™Íd2-_¾\”¤ñãÇ%KR‡cÁo†µÿ« â÷ëH(Jy!ó‹ Çqídá¨rq4¢ì>Ã+©[ a(@ˆÅôÇOJ1>÷ýS§*ª âƹãGtÚ°G²‡-׎sƒ€à ö] $.°@›Åó+—Bî À.[© =ARb/_Ò^áâ;Ml( Ùžá·ƒ*ø] €üä3Xh£ó¼­Çt:öÂŽ…Àÿ l›ÛÇjµ¢(j4AÜù€:¢’:­‚ÊQkjjX–KOOÛµÿ@ºÍf±X‚]!¤Ž…œRêu»¥ŽjeÉEQq_È¢¨lšK¢¨Ü6Ús) ¢Oß­}ý½Ë·Z éߨ+¹9ox‡(¸óÎ;EQ VJhƒ¹ö_Ÿa˜ ‡Ý|s|T”þÓOO76öÍÏOºé¦ÚeËŠÿô§¬ØØøŸþTnmmþê«!VkÉ¿> Š0P „ÀØ0J™€Ÿ ‹à8!¬¤³à³ŸH¡£D–½ˆP*‰Í'ÍÒOòÅ–ÿò†~-¬l §`ÍòÊ:1dÑÑÑ¡‹Þô¬Ø )))½¿éyÈ!~?Cl!´V;ÝКaÜ_U?$9~_eýâÍû–Ü>9#ÆB%Ê` ”bb@¯C£†„ľƒ,éÁº ƒr¡Ä¡C‡”ÔÚÚZÅ!Ì0í[Jù•k.B»úRÚ×`–EÕ××+w\\ŠQ‘‘aµZ†1›Í§÷®×5”þó»c“çÉØgÑhDYˆ³š5,44µ¥Úb Ò„Ö[š‹w ICK¾<Ò/¼U‹ŽþlÉß~iŽÞ”8vâãónÌ9Pâ\²âÔô›°VÉoßò,^~4?!*4)ÊttaΠ°…&®óùüœ!ÐŒ¸ðϽiµ™2—.zì›ïS£"êž}•õs—nøòW· *k4@Æ ÒY6Ê÷õ7¸g ŽŸbLMŒáB\ ÊÌïp8t:Ã0,Ëz<Q•ì±þIÊ  jsêR”û4ÚÚÚDQ¬««óù|ÕÕÕJfO½^Ïq\xG²íUqros}9Óê‰1 mCmKT´þDEã°¼ä3å&ƒ&6RŠcêä- :öW ÌH@·Êd¨¯pFéPY#ß?#VðŠ‘š¢šæÁy)õ->žÏÎHŠIL WÏÑjµûÛßÞzë­Õ›¶-õx0Æ øè£RÏ=8—žžþÑG½óÎ;‹?Y¦Üd2jÔ¨yóæ•!€âv»=Ûí³ŽÆ” IDAT¶¤ÿæèþßN¸áVÉWе:«Yg8cŽÝXy\ÖÒ][׺¼}†½ëp‘8M&Sש»—Y’Æ­.D¿Ò íA3(`wŒáHU+ÁIñ‡"1 ˜“d‚:Î0 JÕX8>®”1B2cz¥(œ·aݼóþU<¸%âv `©(€ ±s[8d âµ)‘î/¶1c._©àü UƒzI×½¼ð¿½Ý‘É CÇM Bó0XÓG:¡[Û¿ï"-œë(jÿѤ'D¢çjkkƒ" èÜ`¤@ Œâr¹LfÓæmÛS“m¡Ý“Š(ø¼^åRžçEQðú|Yãt:íxI’¼>/Ïû$I’DÑÙÖ”‡áºñÃDoÕŽù~Ýgc ¢f=eH²%jµZ„’Ø>X)! fB_QÑÆq:ãÞ{ó­Ö£<ÏΘQSS£è“™>ýÄ7ßäëõU÷Þ¡Óµù|B¥“çy–eý×^}Ò3ú¤wN}ðÐŽD„àDR.—!@§\7 ›öØ››×?ØJ¥#/ýîqpÞYïÛNsñy7\“#¥ôÝߌ¸óKt3ݰ¬nK¶åææÝÑ«{-vî¾îÎi¢ÜÚ¯àõe/Œ¼DµëŸ•÷í’Ua–Õ° *ÌŽ¶þúé2àJ6ôßs>oñ¶Þœ—@]˜3øÙB»J¹A¸ZíéÉ#[<¾ÕÇϯkV¾¾½´ºÙãBA@,%z+ñˆT:xóˆÔ£R'FE°lˆÅÓjµÊQžç !6›M¹oAE%é””0!BˆN§Sn¯ë½%oRII‰’ÿ cLq8&“)''çRÜwN‰œ–Í9OþpÂ9qpž¨ ÀhuŒAËy/!ƒ2bœ$”P~Y2rÕ¹»ùÁ9{!jÐk¼^^¯×$F›ê[yŒd£A#{½ NßðüÔ oð•V«}üñÇ!À1Û-RSSßxã‹>v‚y<Çãr¹\.—$xòÀ†œÁ7º›Wê#ú:Z]æ¸>£°ö«?ñÜ(KÚ½.7È¥´r§³ïÐû,IQF„f‹}úà~qlß8Ȉeæ\¶#ê¡öDú 'œö³ !V#ÉRGJUôçM-Ãû¶y%¨#I¦r×ó•B.R÷Ü­KÿÍW ç#“v¤ór#n¿œ¥¢´&ü ’z¾‚÷¼!{{a‚`ÈýåéÍsâä®t z°k’ëëëÃÓ?"„øx¡²¶®ojjÈ[tÌŸÿúk¯™ŒF–eNçüG ¢@édÇ‹¢èq¹}^Ÿ(¢Fã?×#uñ>AâÛx[ަ§ \_=þþ‡Sz)%ØÁ¬lóÛn¿½ê¯Öé­öHm-3i¹ñF»Ý®Dà 7Ъª#k×&EDèªr8âî¼SY}qÇ©¬Ð ˲ríDZ Ã*s±’wªkª;4hpANVnOç_Vc4E¹¼ÒÐ$G!ÝÚÉíÐ-ï´»$SdÌ¥ž»’Û+.—KI"YPP`±X‚MúÙK}®ûûÊK¾À dÐ]K&Là‹‹½;Ž/_qê_«Ö€IÓï¾éÙ½—bµZ !ʦu'ÄÅÅõ>)¬Ë[Эo6¼û$¯(!@‹6ï[¼yÿ‡?b3j›jbe ¸~gúÛ“¿¸v˜IkÒipXÊÉq\jjª²Ë£ÜÏP^^ît:˯ÓéÒÓÓ{x½×E¥(ÈÈÈ ”¶´´(-«Õj/Àz? (‘©%;;©Üc`¤j;k¶·µöOj©w0 #¸$)*¨ (83aF–ˆêŸÝ§‰×°|y —Yߨ<ì*[}mKK³‡w -.ɬ“²Ò¬^‡W§åD·È˜R(‘‘sÖšö„À ËÑG„.inIÑB³¥81e´F—(Ö۽铢¢Fj½×s5 XéºuO…œ%©®¶öwßu»Ý„ý”À€ÚÏä*‡€”âB”Ë[ Δ,–e›››N§ >K2tD K2Zw¤íl0:B€eðeØD»<`®} ®}Mÿ#+BI³/þmùõ¤!òÊk/õÞ¡µÿ¢S7f?~¬d+‘eJ‰D)¥T¦D (Àˆ" @Â(¥z”3l¦ÿö®2“òòò®Öªò#/J•UÕÙý2”D¡aöOB(yõ•WˆLN:¥\”èÏåèܯ®©¼^/˜#zºmÛ´ü¹×?{`vÿO¿©*­rÜõ‹!·—R‚ÌÊd”°`AÁP³e ¡Ô8z47mš,ËÊ™cåü%ûè£|NNýÖ­,ØGJ¸ÿþž».åž/ÿõRJÌ1¥T–IcSÃÑc‡®;>;+'¨êL»÷.ô8šÎÕí†+(„)jìmOK’Ȳܕ>9^ø|ÿßÞ݇·uÝžÿÝ+Y’ß;±“’G¬E£®³ 8eBw,@5(k×ĶzØ ‹ŒøáPdCn*53;ÝáÖö’J ×qܰj«Õø•¨X”á‹äŽ™pj L§®‹Ò^ª%Mc[mâWY¾wÿ¸ ˆw Hä÷óàÑ]ž{ιäùÝsνï¼ýöÛŸþô§s=šmU†µW}&þ„l[ͧEÊ<¬qË-·õ4Éu0ˆÈ۷ݸ}Û{ïkŸ0ÝúÌÃÚ÷|LD"φ~óóí8¿«ëÑÇ>}çŽòÖ3>K{‘3\¸pÁxÒ³®ëÛ¶m3™L+‰2K1~íìÞ½ûãÿxòÝUú(ê–í×ßô‘Ûï¾îÆ›ß}ëgï}ü­7/ýäÍù§Kï¿§¨ÿzÍVõŸ_“&“^ü$UÝríªúÅÚ?ø‘ËoýìݽõîÏ~"Ûbß”k”×´-×¼þ¯—å†Û·Ü°õ+?ÛzÍÂök¶¼úÆöëw~Lrß%¥’¿ï×_½1³ßxòµ×^{ÝŽÇÿçóÛ¯k¸üö_¿ùŸêõ÷Þtçî¸î¦;v\{íµ×^{íM7Ýtà 7d QJ;ÒË—/?üÈ#¹;ú)q‘qÞž>pº¾¾¾¸ŽœÕúÓŸþôwÞyë­·®¼óóËï]I{r•")ÿÝzå]‘ë6Ìïp”0جŸ²Y?UÔç]TwÐX¨zë­·^ÿï¼÷™‡§§'ž–µ4#ñ ×øÅºmÛ¶ë®».×}K³úÔ§–‰dª>òá•7ëï~ö³¿ûÙÏ.›Ì?-åJÕ¶íú'Oßvûž}!—µ{wõ7þuÖEW%¶pñáÏ}akñÓ~éS¿ô©Æ+WÞ{ûí·ßzëÍ7ß|ãÍ7ßx㟿ñÆ—/¿»mÛ¶;®½þún¸áÆk¯½îºë®¿þúë·oß¡¬Ã?xWÅ-·Üòàƒ®q×ë1`ˆÿ–Û¢þ¯¿’2 óOZ³šïر£¨ç-¬$ŠXËoÁ–kvÜôÑj]Óuíý+—ß~ï7Þ{÷wÞ¸´ãÝËêÏÎ_û‘;Œ[¤—òym¿þ¦Þ!º¦iW®\~û½·ß¸òî[?{ý'¿¼ýºŸÍMÿ/¶ßÞª\¹üÎï¾ù/×¼ùƵïÿL¹%_Yþ}ß¾}û­·ÞªiÚ{ï½÷Î;ï\¾¼ë#·~ûù3-7Þú+·ûÀ‡k¯¹æã©)Û¶m3Öµ—÷Hï¼óÎ?û³?Kd›œIÖ÷º®/ÛùÉŒI¶lÙòè£^¼xqË–-[n}O½îeíý÷µ÷¯÷WUu‹ªnݺuëÖ-ª¢nݺ¥úVåâÅ+øÀ®½öÚÌèˆßá›"`(- (âʇ¢lß¾}ûöí¥­Ø„ê÷=P!Úq†Äß¼¢žZ²}÷7컿aµ¾[¯¹ñÆkn¼ñ®J{‚öäSÃ*·§¢¨Š¢ªÛ¶^³íº_(cõEeËuË–­Û·_w“ˆÜdÚ#";ïˆ/ƒ¹~c9ªª]¹õÖûïø¥ókö™~ä#q¹\«ztÛ¶mûà?øHîq ~0€?E =iOð©Ñž)GÊ‘‚€|™iOÚ|j´'GÊ‘r¤ `_fÚ“öŸíÉ‘r¤)Ê0<ùä“kP*¥T`)Ë~™iOÚ“ö\›RÎ;·1J©OöäûΑVþ‘¢Â)‡úòáÃÿò¯?‘›o¾¹\ÏÍãÒ¥K”R¥äÿkǹA{ÒžkÖžæLþcY³OöäûΑVÈ‘®AA(s¤§½/"GŽI €Õ@À°~†­|„r‰ k3Å›ÓîÝ»i„õ0Œœù!m„?øüogÝþøSÏÐ8 ô6וžC¾þÚ«)n¾ùæ´LÅv“ÿ»5-’X"Ͻ|ADvß±‹Ö¯pÝ=YÈj–\ãXïê™´¡ºÚE-¬ßh’¥ð›¼C¸êƒ-`”Éÿ½té‹6s‡pu†s/_øê×þ“ñþá‡~øá‡‰ÖcˆÉ8Àf¶Zƒ-<ýôÓÆ|åŸ~úé¯~í?3¬;Œ3lf«u—¤Ýwì:ò•?|øá‡“7ùÊ.·˜aº§ö̾™îºåKH¤ÌºKáù”¥2«íêÔ$q»$V90d÷§ßûá³Ïÿ\Dî¿÷Æ÷ë÷3ÔÕÚí¿þoDäGû¼”yés]÷L]e´a±½ùʉC–aŒ--lfj!Ñ‚ˆ<ûüÏÿô{¥ù‰{__x»À]^9á±Z­µµž=ìžiI{Ÿ¼1¹/^kµZ='^É‘÷…žÅ½.œðÔ.fqá„Çsâü…žÚZ«ÕšœoFe2KXum⿬º¶° Qé‰D"3Çö<Ö}¢¨Ó=åØL$é‘Ñ@ö$»îÛÿÒ™i‘ Ͼ¨ª/½rÁx¯ÿzõT÷èþÓ3‘ï|饡D¹ËV¦®{æØCÚCÇâ#N¤g2=üØžH$‰ÌÌt:=}±-P×=3‰DffZÏ-ý(p°[zfffNïZ…˜5  …úÞßÄÒ^yO~ï¯>ù‰{ÿýä'îüÞ_Pˆ»µy—ˆHÝ>÷ çÎ/œ ¸÷Õ‰ˆìjnu'‚ˆÚÚÄþ饈áÂs£ò¥/ÉèsäÂs£²ÿ¾÷Ͻð¿eµþÖ/,•›Y™ô SÏȤ®û˜t¤ŽZ¤Ä8YrËÛñŒŽ@R% 7ï‘]·ï)ëÉ‘[`VÀ¦•o Ãý÷Þøìó?ÿüÿñlâ¿¿þ+¦óÍ5˜pîå kû·ºî™™îä »îÛÿR÷‰éý£²¿§î>ê~nZFeÿWo“÷@dÙ¥f<é™ÔuG"žžZÏ+§Ž}1¹e„ Ý£ûOÏ ïšî©=³ÚmÇäaøw¿~Ïý÷Þ˜ˆ _ô|îå ¹&¿÷WËML S†’ D$>uè„ç` 玷í¾;¾ïtOžd»îÛ/Ot&kÓfeT&KÐ}L‹˜32IL:êXÌ"%}ÖØ/Ý9 Ýußþ—:¬ÖÚÚ3â¬íùÁêŸ"¬aØÌ”Ç}ùðá'ž‘žCf¦0¦$ëž ‰ŒADþågïŠH÷7=ÿa<-YóÿfYÛ‰IëÈÕ¼éj÷cOç€ñø…ÄsŒÈIJÕãO=ct_íU9räHùÜ6ù½¿¹ÍˆD$3ZXLóoˆ*\ikúìöš}äJÓ\½V‰ô7xƒÒØ;ÑiS”µ?.]RpŸÝZ:­¦õø@“éjTà*RËžãåó·-›æÜ?üMŸC]w%=Óms®aÐÃ}‡#9Zuv¨¥¡?¬ëœ£`SY~„á·sOá7G*Ä[þ–v_GŠgèšœì2ºÝ9.äWx—[:¼AQÕ´!=Ü×àåt›NùGþíçw‹ÈM¿°ý¦_ØþÆ–¿Í|‰È¾x€¦¯|kð=h·Û‡Ãá°·bºnD}v»ÝÞÖu#ñ>=}_8gV‹éC”X }©”…¼UŠœœUUÍåŸ<êNž€¤Øº&'»lŠ’¯zz¸/[’wIªUR>IïÃ}‰Ú14ÀÆ Œe ÿöó»·Ýv~ÛmçòÖ‹™/#Z`Cå[õû#Eúž¡ÙÅêìPK$ùçó#É ôX £ep)}È—ˆt=ÜŸü#5äíI„ý -C³K¥xœ¾\«,t=6?'šVÓvÀºlõ³T¯ÁJ®CCG±=þ©þ†ÄT(Uò8ûÂÄ àj*ÿ¢g#Ø}ÇgEÄü7{Ë;)—üÏœÞ`Ö¦I Ɔ´{%•'TUC>ßÒJb=Üçô…$8î´Z Å×I3šÂ'gUµ¦uø¨Û”œ>>ßÉÒ6ld t´ F£óEL"‘~oHUSòI]Íœêâ|TDªÍUË×?kõ4—²Ë¶XÊìàɈ»ËVx›ƒiõ °²Øl €¡dóç~òÒ‹¯üÓÅ×4-Ë%Õáº_´Üv÷=¿Èg¶ÆVïyω¾µˆˆµÞ¥ƒi ’Vèzx*(š¸à6¥ÏÏ1¢—¬Ë¦,Ž$‹D,KQLæj‘Y)u"PRA ósy“.Œ ‡–›¬)æçDÄbÞɹ®µBêá|ðW¿öÕ'n½q÷u;n˜ýÇý(ú\Úëúënü?÷µ¯>ÁðÂZªœç0(Š­¾QTuvðd$íGñé@ZM¼g™J¬<ÎÜË'r-zc"¦©³C-Å,YÎ,ȸے4Ö'¦©jh*bÔ!h··œ•-%\PÕ·?©žÆ2îj3 ÀUTA# æÝ‘š2óGwì©‘OÚî6ÒdÒõžzä?ÿ0µ¨iNÏS¿ú÷Ÿÿw}ë`Mùº\ºþÃSLgæ©¿pôÈ×ÇE®¬…^E•3Î`ÌéŸ ù¡ÄGl<:Ú˜G4;äq‰h55M›UCÞéè´Ö7J(¤&ïÕØØ æZà˜Ü½óN_ȸIÑPRw>ßh@–ê©Iw[Úi¶ˆÌJbB•¦YÚŽ{æ[¼i3Ž’ë)ÆZíN+¿§CŠë¯»Á´ë#"òÞÛñ÷G?¿ë_Ÿ}nêY±ü’å7Ü¿¶ÔÉSîiz:ؔћ×õþýšÔYᨯO>÷­ïÖl ‹Á«º†¡ŠÉ=0aÎPS“¯ílËàìâÓÖd¤Ã34ÿ©­klØœ¸«æòOtJ0ßšgÅÖ5>Þ•y3%KÛ›¢äzð\Zõ’W0'×0)Ήô§æ i®Þ‰óñ›À¦=9€€ayÏM=kù%‹ˆDÿ>*"É1C>?==èýæyÙo\õ½·M.nÜóÓÓßð~ó¢ªÞóÅï6Ý­$Æ+4íŽßè}¼þÃñØÃظóÀ#M‹ô…ïwÔÖõéc™ÉÌbÎΔʤ¾ß#3§™þpó?þåÉ—“ë°ÆV8¶ :+l{êÆì;æËÓä>:é^ú¿ûè¸;÷O“G‡­kr¼«ˆ:,ó£Œ:$fRR•™€€!Å›o½!’eêÑû³ï$,Dÿ>ZXÀ0úí'¿ð¥oýŇ~zú“oÜ“´ñEÑõ…ï?ùß?ÑûÿANãÉÓ¯þò·$Wôœ~µû[å¥áÿ,]Ñs·òêø—žß•RDìŸÏí¿ë—ó•~‹¢ˆÈì·ã™è/õ Ï|ís÷ä©ößÊ7{žªÒ_8ê{òôÝÜr5®4¯Þs@À ’÷‘j¹@výu7¼üRü3·ß–òà…D„PèØ‚ˆÈþÏu?p‹¢è·îú¨œOÛ¸ØÝŸý¡ïÁ¿Ñ4çk"·ˆèÿü]cÌAÓœw‰|Hÿá‹ÿ}ÿ]‘5ü®íÄt±¥‹ˆž”‰ür­ozÖS»'÷Žö†&Rµº**ð^IØ CÉÏ$6V9'Ö0dUL̰|·þ÷¾¹´FyiÌáÖ™S˜>¼{ôÅ¿;Xs·±{bfÑúVik6°óàþpßLý³^hA7þµºÅåúSÑõ…ï÷$ç<:9ñO)×”1¶À—`3«Ð»$åš’´JöxþË‹üf÷ÒZäª;?õ}_xPÓœ¶_ýö#ò¹oüÌ£_ø†÷7»Uuç/Ø–¦6-w·û»Žñ=ø—""¢‰ó®å ª5¢ˆ‡¾%§ùMŸÔüFï±yû?!wþåDÊ«‚5  •(mJÒsSÏÞW!;*Ê=MOß“õ¿IïSÒHÒ]Ynq<Ñã0Þ¶7}NDD>ü`ÛÓÆìÈVôÝí=O¥=…zù‚Ò7>},Þ3çÖ†Ç{Wÿ–š¬aØÌ*hJÒü¹Ÿo²NIJKƒ5xÆ3ÑÀ¦U)# óç~òìhÄxŸ<%É^xv4rÿ~k®ç=oiã$W c ¨”€ÁˆvíÚiü7ë]’þÛŸ}çÃÚõìhä÷Ú~ƒOnm”°†att”v¨LÍÍÍÅ.O­”€áþýÖgG#þÐ.ùç×.¼üRʬ¤WÎÿ"büôþýV>éµTÂ8Css3íPiNœ8QÂ^•0˜wĈaC®¸bÃÏGª+yÃU¿±7„HVò<ó ºK’ ”6ݨä'Ä!§]¯aè9ô("€Ñ¯KÜϦ"†¯÷þqþ_ôþ{>¶õ‰ò€õîñ§ž)ùZjù†¯÷þqóÃ˦!fXGñ(÷JØ´Êü†oõ}§ùáÆøVã%"Ÿÿü#‰Û›n\vWÏa@ùÜfÄ <ðÀ< ý¿MMM‰‰4¨pÆØBiûêz¸Ïnï ë©[úº¾æÇ1ÝSÛ3Së9q!å'ñ­j¹Yÿ °Yyù~ìñ|NDFR‰ˆÇó¹—ÿáÇ9ö»p³ػpÂS›ô>¥—Wx-Þ%´Z­iÅrôÿ6c CÉ»½ýW#BÈç…Ñç'Âô™:ÀUDäwÝóÄ d¾>qWžïº}Ï ç΋ˆÈùs/ª/Æ»vçϽ°çö]¥×Å=‰ÌœÞ?ú=¿R¬dœAUCÞŽ‘XjÌ` >8£ÆF»½/î3¶·bz,Ðn·Ûí혾¸o,Ðnw8v{_X×—ö*4,q»÷$"†é3âv§‡¬Fx™‘8xJ=up)fHK°Q\8á©­-b°bºÇjµ¦æS@ÎYöXŸÃw~¬´ëö¹g¦EdúLࡇ2¢‡é3÷¾ºÅ.T¾NÕRûdµµž??Ÿ´åîÝ·-õÍj­Vëb.¹ú|™ÅÅ÷Ý$=¶¯ahôû]êìPK$y«¢Øº&'ÇÇÇdž[k4-yBUCÞ©zcûì§Á/¾ãm‰úãQG¤¿e0jiõ·Z$èMͶ@ûö-F Ógdß¾Ôp¡û\ëL$™9&{¦EêºgŽ=¤=tl¦».{Cà`·ôÌÌÌ,&[>\8(‘H$™)"ç,{¬×€áåøñw~ìK‡;Œÿ~épGò+ßž·í¾û¥W.È…W^º{÷¾¤÷·-ö³ŽåëT}:¹WfßÌÌðïÞ&"«µ¶[z†›wÅûf£ûOÏD¾ó¥—†Ó”39½{h1˜îÚ}z&µ–%Ù¶’±…8kçpkò%/fXRe®NÝ i®ÞN«±]Ó\½MUFšèüE]OE¤Úl5W‹ÈÜü‚X»&'''»lŠRxTjD Ógd_J¿ûÂs£)‘«’À},~jè¶Ýw§å^HΙ{¬…‚n«ú½¿‰åúQÖ'¦ÝqçÇ^þ‡?ñGÆo–·ëö=/œ9/·Ÿ“ýžºûd¨û¹ ·Ÿ“ýž]iè^ìT<3Ý]W—­»öÊ ÏôÌt'¶¹"ÝuÓ=µ=Ó3Ýu"çϽð©߲>!¢iÙ•œÉ®Û÷È9#^8Ø/nIf² nåÏa¨jòµžmôv˜{õX £epVUEUE+2ÆUC>gHTÕˆ"Ц‹‘ IDATb_ݾ=CÏ]¸ýœìë9³´}éÄMÚ—¾ã² =Ë›‡õÔÖZUõ¡Hw]9gîPC Q6Fxà#THUÈ?Ôís<Ó#=ûºèa8[¿=ŸÀèèÝ/ìY R3NÄô¸ ·Âç0(Š©i w¾Á;è¶Hu½ˆ®ÇFüƒQ±´ {æ[¼Á"2Ûi¶ˆuõNt1¤y’yöOv)­Ã"ÉWìoÛ}·{`8ω±l‚"ªÐ=3Ó}á„ç#Š-0ç´½ÖªLI:xþ®´†äWþ}oÛ}÷©S§ŒIHÉïSæj$-kÈànžÙw&}ÆÐ…W^Z  ™ÚQ`²¬\ÏaP[çñ6K4o¸8‘jsUѱGÝ^‹ª††GŒ-Å/z‘]÷UËžŒh×}û_Êö‰¿ôÊ…ü ;….¼òRΓ¶ØœÖÎÖÕÈôØm/<׎}Å0È®ûößõ˜ì¿oWÚ{©ë>v¦¶Öªªšöб™¼Xëºg¤§¶vè¾Û*è°ž‘‡ŽEê²ä“óJmÉ6°2>ãY1¹z缋ñCocÈò6ÌY,¢Î†¼ òµñÏ’É}Ô?o÷ yC¢i®÷Ê<Ëš‡»³nÝ×SkíPEdñC¯ë>v¦öžÛgºë²'Èž~Å“œ¾Ùˆw{jžRÕäs²€œ³ì°”Ç}ùðá'ž‘žC®0»oõ}瑮ߑÜ[¹ãÎ}½÷¿èý÷|¥û±'s yÑBòc tþbtt´¹¹y%ËÊâñ§ž‰ŸÏNx––¼lÞnÞ‰'–í§%:Q¯¿öªˆ9rdUFV°†§Œã k¯§¶6 w:=L´PšU ž¿ë˜¼XÊ]’PIc ë4Z‘î™™n>H€J V²†•c]-HYž#@ÀPÞìn2kÆâ„±;ßG|ãéÓ§Ó’}½÷wÝñZ¿ò­ü9 W·æ+_–@ÀPNnwS 0òõÞ?Οl×p»›hýuaýŽ3¬Ç8`ƒ FÌ@³n ` VH¥ k@À€|Œ•´ã ›ÙVš¹°†!³Ah°Ù0€œ[òa ÏJÆt=Üg·;‡Ãa··b:í @À€ "1¶PÚ=èhð¥Ñ?66>>>1áX¯¬˜Áiìö¾J«*Ý ×0DNΪjco§MQDDQLî£]Æ{ ÷-Ž<ô…Óûîá>ãGí˜ ´Ûí‰Ñ‰BÒˆˆ®Çív‡Ã‘ˆ;í‰á]÷7xCªªª!oC<˜1r[é{^{žˆ0Ù•¼†A×ÃSAÑ4W½5ËOcv_HuùÇÆü.5äkÄ–ÎH5äªn­Ñ´Ù!Oƒ_|ÇÛ,ôÄ»ì˦‰ô· F-­þV‹½ý‘äÌÏŠol¸Õ"ÑÁ“E±uNôº4MÓ\½6EÑõpË`tqTdrr) `²(û½’t=6}6%¬õ.M‹žNšæêí´J•¹Úx?ÐTUe®‘èüÅÅò§1b‘j³Õ\-"sóÉ™{šªŒ%8•kÐ@UCÞŽxì¡(¶®ÉI"@À¤[á†Ü.ÎGS7$e;³ÕÏé ©jQ™+Š­óx[¦©³C§³/Ì4$@Àä°’±E±Õ7Šª†¦"™?Üi¶¤n°˜w–³â;ÍÑ4WiÓŠ“ûèä¤ß¥‰HÐÛÏÒ@Àä´’ç0X´ÕhZÐÛ‘X‹îë 뺢˜êöZâ±Dd*¤ª–½u¦òMøIä?<²P`t!27ŸšÖÚÙëÒ4±˜MÜF 0y”<Π˜Ü½ò8›MÕÇï˜drõ»´Ïéô…4—ÿ¨ÛTÞ:ùÏy’o””+ºhòµY$:äq&î‰äp8œN_P,m¾&KÀæ¦>|èˇ?ñôˆˆôz”Ù̺{Ò8.]º$"7ß|³ñ&Áˆò/imnnNÛqcà¡×`];qâIJý´ÇŸzÆè¾þÚ«"räÈFSÙï€u‡€ù¬d 6€­4ò3ÆŠº³ê‰'h7lp‰5 EE ÍÍÍ46¾ÆdqÁ46Ö0 Ö00ùp¯$ ‹ÄØB±³’@À€o•Æt=h·çsÆ.á>{q»”¯¶«Xôš—î3¶½eé±@»}±¸ö@L_wŸ `@¡Ve CääЬªª¡©H¡ÝAE±uMNNNvÙe½ô2+§G«ëá~oPÓ\þ±±ÉÉ.«DV3Št´ F-­Ãcããã>ñ÷Ó§€€YyÇt=62<×êo­Ñ´àðH,©+î‹_–Þ·Ïû•oHUU5ämèëzfç;‘ØÞNë íY¯mëz¸?5Û\Ye5?Ò‘–mâRzfç;³,£zŽE}á,}h=Ügom’™ù²˜H“\JrM|NgfÛæ/+îK;ºåäâ|TDªÍU""Šbrí²)JÖ½’K1¶·bññ§Å£+䨋=„BÒ?¯=Ÿ¹{ž³.k)0`ƒ[•5 ‘“ƒÕž&kÝ^‹HôìôB|s,Ðî Æ/KŸ9Óûµ‰^—¦iš«w¢3sT!h÷…T—lÌïRC¾ö@lé„VCgÅ76Üj‘èàÉ”! E±ufd›'«”­ß¥ª³‰l#ý-ƒQK«¿Õ"Aoÿ2eƒ$ãããcí5šô¦_w×cŽaóñ&“¢äÉ<ÏÊâPLr)±&jâËÚ¶yÊòNÕ§ ìä?E±Õ7Šª†¼ É=û<{¥Ûg‡< ~ño³HtпOfmÿ”Óª˜C(<}òóŸuYK`cà9 È©´ç0žÿñÛÉÿ½÷c×ÊâðB›¯SQ”º½–¡ÙÙ³Ó n·I×cÓg£"ÆeéüŒÄšÖXo‘z— žŽ55»jšËÓT%b®‰§ÂÖ<}¸\Y™2vY̶ޥƒÁ©p§Õ*‘© ˆT›­æj‘èÜ|L·š é/V™«E¢Yz¼óž‰N#]gf^Üf/%k#ä+«·ÓZ䈭kÒ/v_hvÈãÌ ù2öJ”R-Õ\½MU©‰Fç/ŠTålÿÒ¡ðô‰ÿ.{Ö%öJ;ó¨(F—Œ€åd¬a(íYlYÎÈÈÉ¡ÙYñ8‡7Dã½.cK2'õ,‹”=+SÁû«jÈç ‰ª²£ t´ Ϊª¨ªhÉ?™îF{»R»þi™x€¹K)â@ªVV„­kr¬36ÒÑ24òvćMJ«˜ÈªBñé =ëJûE À(ùª–±’q†”^¦±zaxÌmRdiuìÙé…¦¦ªfKa×ÃED2[Ì;K¬TIYÅÓì4[D‹fŸ4•ýðýƒQ±´ {æ[¼ÁÔŸîÝÛ8;䳋²Ë&92/dz|þRò4BáeX„¢˜šzç¼A£c]JÅò·é‡PRó–ñ¬`a r*ó†ÈÉÁj-ʺ½U=;½`¼™›_Hퟥl‘ÔCS‘ÈTHU-{ëL…ÎOɶ˜¬ææâi¤ÚlR”ľÃ# …”•¶8Uµ¹©sl¸Õô«i È<—<¥,Ó—•¯]÷-®ÛŽ7W¼c]HÅòHoÿ¬§D‡PBó®ì¬€€Tï_½p e6yUÝÞM‹žŽéºÉ}´·1:äq7®‰HU“¯Í"Ñ!3óæ3&÷Q¿K ùœN_Hsùº C¤(¦´l ÏꬿÁé %ÏV7öòd½QRZY±vö6ªjÈÛ0 ²ZwŸÑkº•Tf³5Å M€›÷JZ¿ꙞCÞ°ãšûëë’·ß__wÃŽkz=šõ“œœUÕÆÞø5$E1¹.ýù ÷Ù‡Ãá°÷…ÓþÞí‡ÃnoÄôÄ¥/U yÒÿFfÝ%íOWÚŸ1]Ú퇣ؿ²‰FÈúÊÖç£"Rm®’Äá[%’õp‹ú©õ÷íÛçýJê.Y~ÿª!oÇH,ãGi›ø¯QŠˆÄíûö}u¹üó˜éÈÞòá¾´B“>‚,‡œ¼½¡cx®ÈS4ót*ê4»ê§Á*Õ¶¢>£õÕtYQè±@ûb³Øí}ÏkÏ÷—ôÝÙœM‘ë×Tf“ÎØX ÝÞˆ-݈{0`ãá9 Àï\yã+…o×õðTP4ÍUoÍ’[,Ðî ©.ÿؘߥ†|‰¿Æ•³ânµHtðdDQl½ÆE¯\ƒãi»ä?HË`ÔÒêoµHÐÛ)¡r½2/ÚÕ7Šª†¼ ‰?Ï™‡³tmo¸µFÓ’/©jÈ;UæLï×–iF¿ß¥ÎµdNÚÁ*Š©i ×¥iAoG ¦ëá¾–yÏ™c]G–k᜿÷s´¼Qsãòdfƒç:äH¿7¤ª.ÿØ„ooQŸK®ÓiùÓÌïRÕÙeÏ™58 V¯¶ò­»¦Ël]÷· F‡L''»îUïí,õ»³ùš"篩Ì:+Š©n¯EUgÏN/ˆˆ,LŸJtð¤q.LŸ•½u&æ20`ãalaxó+of rmϽjúl4KXë]š=;¸\¤i.OS•T™«E$8UÈE»Âw1‘j³Õ\-"sóE]¦26×+3½­kÒïÒTuvÈã\~@èêqõvZ ª™µs¸µF ùW‚s¬¢Ø:·Y$:äq6 ›˜‘-Ÿ¨ù2 žtȺ›ŸM«1ïÌÒ%œNfÖz—¦xš­êi°zµ­„ÏhÝ5]ž6És™œ¦(é×Tö:ç—ñÞ¬VÕÐT$ž>>Ôl<¬aX÷ûWÞ|÷JáÛó2†×“Dç/®åo+5äsúBªZl¹ÆÁæzeÝÅÖ5966ÜZ£åùãj ¿;*•ªªÉ×Z£½# ˬbrûÚ,"bY««t™uÈvÈ)“.Êq:­Öi¶:§AÅ})Êú­Ë¦Kk#Ø®Ñ4uvÈãt&÷ziŠüšÊQg#°‰Î_”ÈTÐÒêo­Ñ´àðÈ‚\œ6Ö[ ذgX×ñÞ·þäÏßz÷Ê·G&’·{dâ­w¯|ëOþüÄÓ#"ÒsèQZd3ë~ìIã0ðlH<ïYŸpYÈ€Ãó?~ûÞ]K“VŽäØoÓÑëWŸþ¶§A…<«n=~ƒÖKÓÑX§ ìž7‘×_{UDŽ9“ž± ž÷¼1ð Òà4 éh  4 È)1¶ÀoFW—ñ„.jËMSWkk@À€|xã  @<‡ ȉ±0 Ö00ù0Î@ÀdÁ0 'Æ@À€|XÃ@ÀäÃ8Àf¶•&@.7ß|ó¥K—¤Ô5 ÏÿømÚ€€–1¶PZ´pïÇ®¥6¦$!Ö00ù°†€€È‚ç0€€91¶äà ƀ,XÃäÄØk€|gØÌ¶ÒÈåæ›o¾té’”i ƒ®‡û¼!5=FÕ4×ׯ?ó}ÇW‚ÒØ;ÑiS”ò…Qnfæ™õqùǺlÊ7r®êTFSyÇÅÖ599>>>6æwiš¦¹üccããã““]W±£lTcl¸µFÓ‚Þþ°®¯A„Ðg·Ûí}FYF³\ÝF `@‰Öx ÃüH‡Ãá°ÛÛ1=¥oî3zغ ´ÛG¢Ãm¤q,ê ëÉýr‡ÃÑÐ1<·lÁUæê´Þüb‰"î‹çoï §uúöä ‹H®yîÛçýJƒ7¤ªªò6ô‡u=-~ÈÜ]DôX }ñ“·0àê[³5 ª:+¾±áV‹DOF’·{§êkð‘þ–Á¨¥Õßj‘ ·?"É©£‘~oHU]þ± ßÞåËŽL…TUëËüÉ%Æí¾êòù]jÈ׈¥WØïRÕÙD…3k˜|gÎô~m¢×`É:)sw]÷· F¥±dÀ&Ää´’5 £££i[öïߟMsyšªDÌÕ"ÑàT¸Ój]ÜÞÛi5ºÎSA©6[ÍÕ"ѹù˜n5%zÏUæj‘¨ˆˆèzl~N4­Æ¼3e{Ö(Åç ‰ˆVÓz¼Ó*I-16}6ªiõV©wiÁàÙéXSSUJ…ë]Z0¯p$³†U©G‘GÖ¬JÄæãM‰ãÍla€<š››®ÊÆ[(yÅssssZne©U¼‹¯ª¿(bÑcŽ–ÁYUUÍHuq>*"Õæ*Y6JI¾ÒŸ1ÙÇÈ'Itþ¢HU15¬Zá*¶Îãms-ƒ³³CçPbevZóäqâĉ’÷%`@>Ɔ’ûúå í4[D‹¦uñc#þÁ¨XÚ†=ó-Þ`™`§Ù’:»/¤½ýõ6E)wÛdÇ,ßé¯ç0(Š©n¯EUCÃ# I›³ &(Š­¾QT54‰/fXa‰S‘ø:ËÞº¥IP27¿°¸þ¡ÚlR”5Ì„ût€qÖÎ^—¦åŒX°Æ÷G*ËsÊÂä>êwi³CžÄý‚ÅÖÙÛ¨ª!oÃðœEw²h«Ñ´Ï9UßëÒ´–ò9¾æòu›’zÖßàô…’×'dÖ03*hòµY$:äqf&ÈÜ=q»'§ÓK›¯ÉÄ¢g°†”Ç}ùðá'ž‘žCÒ"›Y÷cOç@bºKÚc¨¡øatt´ä…5•§­€õ¥ð¾ÙãO=ct_íU9rä# ÈgŸÃ€JCÀ€eTΆÊÁã™P‰k@À€JÁØk€|g `²` ¶ÒÈÅ[ Z@¹0TÀ+KGŽ€Ëœd7ß|óF}þÖO‡`Í\ºt©,9¦$aùS ÃëN¹ºp ȉ5 `@NŒ-€€ù”å9 ºî³ÛûÂzê–¾°®¯<[ûŠóÉWD¸Ïáp8ŽäRŒrìö¾çµçW¯J¥oYšºÜEL÷ÔÖZÕÖöLóM ‚±èË(×½’‚Þþú‰N›¢¬—×õp¿7¨IcojµÅÖ59Ùe$hð“èzøûuá>§/TÓ6ܵšÍ®(¶mçÓåë²X{ Ò]Ç· €õ€äTÞ5 ªòvŒÄR¯C'_5Ïþ~ñ{ ¦Çív»ÝÞˆ¥d2?Òáp8’·ëz,ÐnOHÎ0ëEúp_|ÐÀÞ–Å` ¤ªªò9Å^×O«Rfé¹j˜¯H È$¶7t Ï%7],о˜>kõâË?Ðt1k#çʤÖKÛñbӀߥ½ý™ElXe]ÃÐè÷»ÔÙ¡–þHq1ÆTýØpk¦Íyüâ;Þf‘è )ðPÕÐYñù]ª:;x2žy¤¿e0jiõ·Z$èM*ÑÈpr²+m #h÷…T—lÌïRC¾ö@LQl½.MÓ4—l,s—üÕ>+¾±áV‹DUJ+=³†ÆÀÅøø¸q¼Fç[D"ýÞªºüc¾½)Á@Ë`TýccãããY«gìØXoÍUÏ\™,ÛzV#IêŽÖúFU y ý|V«Õje6 Xßʲ†!ÎÚ9ÜZ£†|É‹òÓ4Wo§UªÌÕÆû¦ª*sµˆDç/&¥ñ4U‰µÞ¥iœ2®pOE¤Úl5W‹ÈÜ|"ºˆg˜ÞoŽMŸjš«Þ*F>ѳӱ\Wɨjp*œQzžŠH|ÇźÍω¦Õ˜w¦l_êÁg Ú¤îèÊ/dϤðÖK/ÝøææÄÚ59™7Ī랙‰D"‘Èwv±‚¬seg¨jòµÖhAoÇÈÂêŸÙjÈçô…T59ºÈáâ|4uÃò»¬J y>NccJݪÍU)û*Š­óx[¦©³C§3[ –qPòd’¿õò•^\Óíj>&C'.ð5€€ëQٟà(¦¦ÞF‰úS¦ã—żSDd§Ù"ÆT¢\ÓuRí4[²æ³z²ÔP×c#þÁ¨XZ‡ý.M[¾1M“~—&"‰ùKùªÐL j½œ¥¯zÓTŒÕxƒqqÚFÿ[ß("só ñ9÷Åg97¿ ™ ©ªT›MŠ¢(¦º½U 6‘H?‰çcÙ[gZÝÛ e­a–Á£}Œºemkg¯KÓ2»éŠb2WÇw\¶‘“3)ªõRJ_üª$Rø¢ç鞃ÒÚ¼‹/ X§Ê¹†!Ñ—5¹z—:Ú,ò8‡Ím…\YÏtÖßàô…’gØ›ÜGý.mvÈ“ëBiŒô!ŸÓé i.ÿQ·iµ6³†ŠbëìmTÕ·axÎ"ªò6ô‡uÝz ­FÓB>çT}o¢}·Nr:}A±´ùš2#£7œŠäjä\™,ÛzYwŒL³.É&,>‡á̾î® @…S>ôåÇŸxzDDz=J‹lfÝ=iœ—.]JÞžxƒ1àPÈ ¥ÑÑÑæææ´|°ÆôX £ePÚŽ¯v ´· JÛñ·)ßÈÌãO=Ã/Ö¸kgôÇ ï›%þ^¿þÚ«"räÈFSÙ×0`­¯˜Ü½Õƒ'WûIÏ'«{'–‰À:EÀ€œVc Ö:fPl]Żݑ¤/¬¯åQ°ÛûºžùßÕ«iåI¯ëáÿkŸ×[LžWKžcÑõp_Iõ¿pÂS[Û3Í×T”r3hšË?666æwiZÐÛ_áýÝœõn­)¸þŠbëšœœœì²)Jºàá>§Ówîàï÷–/Ï«BQlÚæ|Ng1qãtOmm·ìwó…€€•cµ×0¤]¹7ºKW¦Ã}Æöö@LÚív»½=KI´;ŽÄö’ëPDVUæê¥}cv»ÃáÈ2vî³Ûûž×žO»Ê½/œÙ Ãs¹ëÙï j.ÿ@ÓÅDžVÞh½x¹KUM¯|z ·gÖ9O¹¹Ž%­›ü®xÜUØ8L]÷ÌÌpóí|+ `@Y•5 ós"ÒXoSãüøøxæe{U y§êí³Cž¿øŽ·Y$:è‰%¥9+¾1¿KUgOFVô5(<«ÈTHUúGú[£–V«E‚ÞþHrnÞ©úÌA€X ÝR]þ±1¿K ùÚ±x–ýÞªºüc¾½9‹í÷†Tµ±Þš³òí‰fV^×Ãý-ƒQiô'j•µò±@»7hi^J™«Î¹ÊÍz,Yë`­oTÕPr»¬?eYÃè_úœN§g(ÚØ;ÙeKùYÒe{ƒ¦¹z;­ÆvMsõ4Ui¢ó“ÒxšªÄZïÒ4 N­dŽS!YÅëï i5­Ç;­ºž ŠHµÙj®‘¹ùD$¯|zÇ=6}6ªi®z«EÏNÇt]×cós¢i5æYÚ!±ïüœÄ÷ÍUycßÜ•÷v,ÅZY+oÔP¤Ú\µLs•›ÿXÒêoí¹ù±v­óIV0`S+ëZܘ©âtúBjNÅ´9Nå]l¬aŸ<ê6-vmU5ä3*ŸÉäpq>šº!¾‹±}©›^оS[çñ¶MSg‡<©Ë2*ŸYJ®:ç¯gú±ä©CíP©Va ƒõ@›EUCÃ# "¢ë±ÿ`T,­Ã~—¦­(c‹yçâ"ãñE%^´¶˜w”n§Ù’E,_ÖN³¥´‚²í[TÌ`rœô»4Yœ÷•µò™¥¬¤ÎËÖaE\}«±†¡ªÉ×Z£Eý˜^ØÅõ<ææT›M¹ûëŠb«o”D ’¼¡Ø¬’ò4Õí] ~ O?‰dÙ[gR”Dݦ"ñY÷5WÇÓ”«uöº4m1²ÊRycc¼)òÖyÙvÎu,ÉuH´v•DúÖÃb `²(ã†D´ÉÓ¨ª³ƒþ‘±vö6ªjÈÛ0|ø‰§GD¤çУ´ÈfÖýØ“Æ9péÒ¥äí?õŒ1+Ép(d†ÒèèhsssZ>å¢ëáþoP{':W¸R¶ŒY­6=èh”¶ãËöÚ+_,ÐÞ2(mÇܦ|mþøSÏðK €víŒþXá}³Äßß×_{UDŽ9ÂrZíç0 ¸àÞä˜è­<¹Þ§îèzøä`uïÄ2Ѩ[iäb¬a¨ÀhÁXÜÜUaY­ÕÛÖ}ä³!Ž@dq Ã*Í, ŒZiPé=6f%ájÅ«,c€€*1¶@´€«¯Ò\],zF¾¾³A€œÊþ0`Caœ€€È‚ç0€EÏȉû#!ƨ|eéÈ0`™“Œç0 nx @%»téRY:rLIÂò§×’Öruák@À€œ[kkV®À ‹a@À€u‰{%­Üï¡%‚ÿúÍã´ `À:“[Xa´ ëáþoP{':mвÚÕ6Š ©ªˆhZMÛñ·I¹º-yýŽ­%‚AÓ\kÓzÅ›î©=x*ÞÚ›é®ã›6‰õ8¶ Ç-ƒQiìë´)Š®ÇF:úÃeëj—üܰãšʪà !Y]÷ÌLw"vðœ8=ܼ‹/‹ž‘±†aõò÷Ù‡Ãá°÷…óo×õpŸÝn·÷í‡ÃnoÄôÌ #'gUµ±7ÞÏV“ûhW¢Ï'Û°®g}Ÿ\\⿪†¼ ýÏkÏ'Òç?Ì7Þ¹’ÿµ’[ªv¸o±ò±@»Ýáp$ÿ7Ñbz,Ðވ麈¤¥Ìš[1±Ã>÷ çÎóµ€€›ÊêÝ+)h÷…T—lÌïRC¾ö@,ÿvQÕÐYñù]ª:;x2’–¡®‡§‚¢i®zkÅåûzÅ ·Z$:x2¢(¶Î‰^—¦{íÿÍw®ä­°ÅŒªz§ê''»lŠéoŒZZý­ zû#ŠbªÛkQÕÙ³Ó "²0}VöÖ™EDÒRfÍ­ˆOtúLàîÝ·ñ€€›Äª>‡A×cÓg£ñνµÞ¥iѳÓ1]ÏµÝØKÓ\ž¦*c»§ ¿þ?Û\âÅU™«E2‹S[×äd!½ê7ß½’ÿ•+\ñ9Éù[¦·ÓšˆšDªÍVsµˆÌÍÇtÝ8‚èüE#“jsU®”i¹cºç c>kÓ*¯a¸8MÝ¿(R•sû*·._ÑJØ+mC׋8U ùœ!QÕxk½K ƒS‘ÎúùhcòLzÊqº§öÌ>V<@À€Íf5ŸÃ°ÓlIî[Ì;ómϱ]Qlõ …¦"6[Å­…÷J  n±,É´hÚ¤©Å–é—`c}W|{–”E­Y Z`3`J–±Jk'Ö‡¦""‘©ªZöÖ™%×öÅýææâÛ¥Úlʘ d=ÐV£iAoGbIt¸¯/¬ë¹‹³Õ7Ƴô§ÜÉ4_¯]ææRL/0¼¯å­¤År%YȬw(JŒ/äJY|¸0´û4Ñ# È©\ÏaˆÇ¦ÆÔIL¶qõÏÛ}>gHDsùºMÆOM9¶Îú†fÕ\“ì“{`ÂÜßàò8‡DDÄå3.¨çÊÖz Íò8kZÛ\Ú`p¹^{“¯ílËàÇyìý{î-lIðåòŒ0,Ó2éɆ<Ž¡¥yMUu{k£ÑÔQ‰Ì”Ö¢+5}&ð©SÖ'âŸ,b€€›F¹Ö0‹ƒ»²ýÈÖ59ÞUÄv‘jÏÀ@þEÆÅ§˜ÜG'Ýñÿ¸Ý]Ki'³½OM_˜ÇJ;„¬‰³$ËQ팔9‹Î!é9 €€›Íj®aØDFƒß¡6¦ yÞsž‹î•tq€õ‹EÏÈiUŸÃ¬o«÷Œg¬LIB>¬a!% ÀòBf%!k0ÙsèQšlRå}6d0I#°á±†ùºƒL8 `r2¦Ð @vŒ30Yð0 'Æ@À€|XÃ@ÀäÃ8k@À€œ[OzF>Ɔ2>зÀ„1 ¬Æ8C{ð¿ÿ…–ü þë7Óì‚)IÈi•Ö0\¿ckþWZz]Úí‡ÃápØí혞5[]÷Ùív{_X׋ªO!;–œ96¬UZÃpÃŽkò¿Ò¢…‘Ž–Á¨¥uxl|||bÂ'þ~zí ¨«ñ†7Þ¹’ÿ•šüâ|TDªÍU""Šbrí²)Šñ³p_bäaéÚÿüHGÚXDbŒ"9™1hàp8:†ç–â“¥‘„<£ ™.%÷1°‰”}œáÍw®ä%'V[}£¨jÈÛБ6)h÷ã#““ñ(BUCgÅ76Üj‘èàɈ‘2Òß2µ´ú[-ôö'6zCªêòMøö{Y34J÷NÕ'*@À€l•Ö0¼ùî•ü¯´ô¶®I¿KSÕÙ!3éŠ~lúl41ò i.OS•T™«E$8e LE¤Úl5W‹ÈÜ|L×u=6?'šVcÞ)ñÄËša¢ôÞN+g `À¦°Jk._Ñò¿2w±uMŽ ·ÖhªòvŒÄt}qªRÁ'ºò9}!U•èüE‘´™N¥|sÒ3ؘ¸­*ò)ûsDä½l!Á²ÅÔ4Ð;ßà Fç/ŠTÉN³E¤ ˜a§Ù"ZÔÕ;Ñ™˜)´²%eÏ r1€e”}œá½÷µü¯äĺîkÄçüD¦Bª*óNE1ÕíµˆÌÍ/,iÔíµ¨jhxd!ic|iÄT$¾˜!y»‘mòöe3 `À¦³JkŠš’¤(¶NŸø‡ÓÒjZ4™EDLÑ!3íöG™Lî£~—6;äINi=ÐV£i!Ÿsª¾×¥-j=Ðf‘èÇ9lnKÞ¾l†S’SÙŸñlHCX–brtgý‘­kr¼ké¿÷NNv-ýd²+wÊôl“§lw» Î0=6¾ÕXÃ0ü @À€ ¢¼ã e¯Àªb rZ¥5 `ÀF°JÏa6c í@ÀdÇ8k@À€œ[·UE>+yÉ'h@lp¥=‡¡¹¹™¦ `ÀF–[(a Cy €«…5 È×ég Ïa `òaœ€€È‚ç0€€91¶äà ƀ,XÀ­ßŸúþÿ)4ý£¨ˆüïoÆh‘Íì¹üÐ8ÞyçcËf^ütí]‰?˜yQDÞím°!ý`æE£CøöÛo‰H8ùÿðŽj«úiIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webtest/http-defaults1.png0000644000175000017500000007700712032647205025411 0ustar ebourgebourg‰PNG  IHDR ÿ³}³sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜq§1? IDATxÚìÝ}t×}'üßLÕn›ÆmµñA vEK ì8[S€\ÄTj $ÂEÅ"’è06‹Ö±–"Ÿu$Ã@ÒnšÆFvÉ,_¸JZ”I¹ŽÊQ`”HJŽàâ±3IU¡\22D‚‰“<Ú³Íi7žyþ`0¯Éùýp0sqçΙû›;w†¹ç=ïi9tˆˆˆ(tá®{Zîùð‡?Œ²€ ²wï^BmáynMÏ¿‚²€-ñɇäcÔ'O?‹ÂØ>ÐÚ¬)ÎÑ.lU„°{÷îk×®¡(ÕH>ìÊŠªnùµ"Ú»¯…"Ç©§wïÞ]z5€MðäégÅF»¡¿„ J J‰`3i'A€l¨*ýóÚµk ¨FÚFŠ˯­|>?øàƒ>ø Â(¼¢W@96$N‚„¯|å+ŸŸzü¯¾ò•¯|@¨ W@96äyG{÷5|êñ¿zðÁ¥?õø_¨v6Ï^pè‹ÿ‚8§ì"¥§S•Ìl4åäd£ˆ>ÂÀe€ˆ¾úÂ+ç/¾ID÷¼î÷(7TÐ7 ïû#"úÎ?_¤*fÖ;Òl.·¿ýýz$([4H ¢óßüê •¼Cˆ îz÷Áÿoí—%.reʪÕj››­S+bÃÚ¦¬ÏÒ‰Ò&x³V«µN]É“öÊ”5µÔÊ”µ9•ÄÊ”Õ:uueÊÚܬÕj¥éæd&÷ŸaÏoÎHVšÈÊ”U«ÕjµÚæfç?åÎ/“ s*ï&W0»pV¦¬ÍÍÍyÓ¬ ŸPq‚$œþô½§?}¯øgé–_[ùÏu¿%þùŸë~«´Á ÞrF£Ñ…±ý§Sef;ÓØB4uÒŒW~–†C—çÃDD+f^eÙËWV„ÏüûCޙ޳ Ñç½·‡~H–‘hÑa9 æÄ9Ù‰èѨuÊÚl½rVhÏ—“ZN”à˜é8»ài;›ç·S-Äø¥ÉÛŸðÀûÜ{ð:1H(}óòk+ùºæ^x±ØÝG^á¾ I÷%ïš²÷æ]pÏÞ;“ˆfk8ÔAOõ?E‡$Ÿ÷þ°%õÓE2S(ŠK„ˆºÞ¬Õj'öžÈ?5긃»£ãPòV.õYï£ãÍY·ådF&6pŒ‘8.9'ñ΢þTóË–@9òüháŽËýZmsó[¿zrÄ¢*zQ5#ŽLè¨U¾¼÷_ÚKD¿÷;ÿé÷~ç?ýâ×þ9÷=ü‰c(wª­÷'ÔuZMWòÜêF"Ò¨ë%Óø„·Ï`hooooo7 E¤³ó|ÂÛ—úªÏ›f5 Ex^öªyîĉG†’ӓ߆.r…æ>ËúíFcé—äF70;ÙÓıìâø3Ñ«&¹¿’1jz‰kZ4ñÜõE‡ÀÖÄ ÂƒÿúÐÞߨsõ7ö\ýñ¿½šûO08¤jèIGéûg2›þùD‡m~–5[Ó÷ñ = ‹©;pX¿=³=Ý=±˜újqÂj´Š–”½ü‰G† v5÷w†QuÚ{›8Ž–âÂ]U~=OaF†¥ó³~[õnЪúúì4UÇ,{÷ÝODêï¶V÷ž%ØÆ„ñ YO=*)Òeýv£?w*qÕÌ^毰×ÔkÏ;„W:3Çiz3oˉ>3¾È²M=žQ‹Š í~ñ&!¨ÞáSnc7_âZІ|ò·ýèfÝTñ˜à:u#‘xWUþUÓ äûM¯g¤SÅ0Ò´êÊ WdçùH¾õ€­‰*_þñåW¯ühõg's5ñºßyÛmš=w¸ l«•·2—õœ³;#HÛ¯ÖÎ:""m‹‰óùh)¾FÚºD|‰8®©w2Ý´Õ¸M>›¯´ŒL¼^­!vÑo7ú9“knPWõb)ðë:UÞ&þà¨.#ä¨Zv6|}'l†À7ÿß­þ¬À oþüß¾óòâw^^¼¹þÆþ!6Û6#ö$T$ä>a35"¹ª±A9ÏñL=Pumº¿{\n˜oFïËר®#a¤/‘ð¹r²‰3Œªsd’ú»'YÖoo÷¯÷ɤIkñ%Ê}‘gÕòÊè0©^/ÐF­/â„Í÷BhJøp—æPî·ß‰]>Xõa›m?µÒ“P~SÕo³w«3[¨×Ô›<¤nË/t^¦¡>íñg6¯eòc³¤þúmýêÉ‘ÎõD%ÂFšV½ŠaR†’ÿõA‚ÉÔ1E£»Ü5-Zþ²ë«B¨PEŒó3~ðŸøÜS7\·÷m¿ùöÅ~ç;± Yÿ~ûm×}äƒòÄçžBgÂvU[ïO(¹©ª˜ìÕOžË0º3e=#Hœ9ë+Ùœ±¬?¾Mxû Ýç¨)õð¥‰gçjÖmâ8ŠÅWÓ“—âke¬šðô!»Ÿå¸äF%þº4…8®)Ù •¾¦yȯBžõ€"”ÒŸ Þ{5ýþ]¹_íÛßHDwéîæÉ#ìlž?¼àÐSØÙ|œÆ$¯+[™²Yî©æûËÄß’ý*´={T–wÜhŸèV wÉkõ6ùÆýööÔí9â-1Ú3ùý¬ô+³Ùì󥮲׫5D‹$ÞÙÃqšÞIk¼Û&ÞÖŸ/q™·J³,™Zt Ãó­ü‹Vãxþ›sdÆ‹³,™Ý’ÑùWM®lÒ¿;AÄ55i8n‘õÛÚè‰àGŠ®i¾¤Æ‹­/v4€mTÂW_xåÙo]~è³ç¿úÂ+e-øÛo{û¾ýûö7Þºç6áßÍ7î¹ùÆ=Dôò¹Å'?û¥'?û¥ç½ß.œˆwbjE .Ì\*Ôâw†Q ¶Zm½?¡ìPA7p™X¿ÝÐçMð<£²Œ—·eçôôˆWÍ9“kv %ý­øÒt<û¶¡‰giêñqKV²¥ãL®`08¨c*øõ¬ßåšz&GF콚Ò×4_RE×JmÜ~†e‰èèXT/ÿ‹YdÙ™0>`GÄ ë‘ußÑ…ÐùC-÷YfåÊå;÷Z…–ù‚>»UŸž¢w,,8²¾\ <ßæ&EyÓ)ubVš²‹ìPŸ ¬Bò_þ±ðAö¾£¬y2…ÍÍÚûžÚß³Sïî¯}Ûûý µHý ñ域‰ Ÿ¥÷ Ä΄ó3Ñ{;´9oeÆ%ùš‡ž€'ïO(…$44Ô Ê>ïèë_{îÆw4œŸ‰þqïû±Ù¶Ÿ Æ'ÌÌÌ ÜJ×ÕÕUzsKý ÷vhÏÏDo|G½ñ³•×.gÜztåê¿‘ðí½Zlàíª‚^…®®.”@)¦¦¦Êš_q‚zïMB F ù‰œ›Ž`;XÏû¶üIx¢+(_­,¥<ïHÄ{Š^øn¢¬W³U,÷EѰùj}|‚óÄ#؈ ä¶–øØ˜Ò±(8PHŒ[Aõ€¢*»ýa×v*‚W^þçŸÿï_ÜÖ´—ˆÞøÑ²Ÿ‰hÏ-7£º(3ÒÅSb[õ'¸ûÝDôö·¿­Àg „÷'(ÍvèOð<ýõ·8Îhj%¢¥×®üp9ÞÚvh%þcéçߺîÆñ¯^ûÆó?ýNq‚⬧'ç#Ãm6rÏêÉ”PË쀎a6q%ÂÎæùà }æ”Ö…Ã皟a3rŽ;:šgúØ‚COa§ä«£#Q‡>÷·Ò3pÜ'Îz”ñ–Áò3vjûϤV¼â¢Ä r¬|ä+ÿóºëÞöæ›ÿÖ¸ïÖ.Ççwû—¿üwéç¯üÿÞr›&OCó•3 ßñåãM #þyûé?üþCÿí•ÌfÜ[oýÁ>fa9»mg´fÎ|àß켓‘$þ—²_m2iN8nßûÝO¶Ü˜7'ü¥ÑO}!ÀqÆ?IK ‰§Ë°¼?AÊgÞôÀ $Lú=€Ù­Û÷ä™NDD–dt°2e=â Ë´‰-éð!ìlvLÚÔH¡@K=3cG¬T(T;ÓÈBT_ýlâ„L¿|&¨ýþÕÿöÚÿ N°427|烈D^Œ‹3<÷çwÑ}ýr‘æs ó+¾Î<-àÜÐâûÔñÇs¼‰aøK£ö¡±Ìù |µq!l«=•þ•3ûd(O¨À󯜢?þò7+Èçz†õô*°¬ßÖ¯žéTel¦Èp›ÍŸ ÒL®À Ž&úÈìv“Ýî'¢¦ψ>Üß=#MïäˆE%lÓÄt÷Ä"Ëq&÷쀖¢É¥69i¸u?-™GØr|þ*Q%‹§^e³®Ð‡ÍýgX"::2BÇ…¶µ´‘-ý,—BØ©í?C™=!Þf*Ò  w,Œ9›=á®ä\Y)';Òé¬LYœz•e‰èŽGŸót5PÞLŸ»¸$“cÖm;ŒOxîÏïþÉnXøöÚ×þú_J™ÿÕF>qõ]z] _ño|süA³ã¡#Ó—x±…=ý ÙñБñà7§]äyžEøú6õ9gÙŸuÁìr™ØÅ‰îáhæjêçæ‚Á`ÀÓÓÄq>Ûp$•–õÛB-ÂôÅ k›‹ì“½Š»¦wqI&$¬_Í÷'ý¢ÿø]?ÑÂgÓ¯ÿåâ¯\âgzîxÝ¢RÝõÉ39ÉÌüýÃñŽŒwTœ¡Ÿ¬üè½úN¹KÎ?›ý‡È{?ÚÉ0<¿öÒÓß~·û[Fg¿øôÙŸ¾ëÈõ sÙó—4ø-çÌOƒ>E¿Ÿ/¹Ë¾ƒ¾=õûüå'ÅKøM_þ ½¨CÃÍË៽#3ÁŸ½ëÈÑŒÅ%ý*γ?uyG¦s@º,Ï¿’•±|ªð¤#퀧gÉ:aj ä¾³»NÝH“Là8“{@KDD1Îä鬣h#Q,_%ªã#!5ªµêF¢ØR|:çæ‹dÂۯͨZ=\áú$“âîxô¬G_ø·R—Þ‰hå íu¦èÇçýžV.ÌP‡3yëÞ1fñÎäRس÷N¯ði=\Ê!…C\ÓRzQ²U%“P qB7 ‰¯`ƒ„&Öþ¿_¤&–ˆhYiùÊ%úC"¢¦]öŸ_HN'Ê$xC¥îœ)?¿ÉHƒ»õc:še¿ª?ö¥'þ¤Žˆˆo,/¾bÿà?qœñgDïà_yõÛwX‰ˆÞÑöQÝT d/{=sàè`øS°ÒÁ9™ÉŠLÞøæm³Ê²g¼#ç[*6”œ±uŽO ¢ºN{Ϲîq[¿zÒšÎ|ÂÛß=¾È²Ä²Ä•— ËúíF?±,Åâ«D%tBY2‡‡Íó•®Efô²Ü +SVÏ­âíÿW—/]:sŸö©Œ(åêò¥ý‡K» ›BC—gÌÙܬe٣Ų•\¹|ç^kÞ”³¤‡A—b­#“PCqB‰/c.÷¢ŸúÎ'7(ËéHCö«ý´pÆyñ§mG®OΓ1þ[rJú-æÎ¾Ïýå%çÆô7½íu%¥ñ/áÈÞ=ï•KPš™t÷Å „Oeel½ £êqÇÛlã.†[„1®ñiz=Öx·ÍWFbõj q1“[‘c£3[ÇνVgX/4Œ÷ì½Ó2âYO#9_ zÇ‚#ï êüaÂ…™Kû{JÊÛÊ”õ8 ƒš+ ±*Ì$Ȫíñ w}òŒð/°Ò÷¿öý÷ÀJßZì~ÍûŽ›~£k×ôõ_|ýãxßµÆÏVú¾øúÇý¿>¼…Ye˜G¡¯{„Ïw¼wæÕŒÁª÷&§\öüe$=ý‡?ù ñüÚKÎäD¹e…éu÷8>só”w±„˜ƒç_934£ûà‘ë&_‚¿à YS²sUpÅ‹g¬ZïO`ÝÀd¯&KÝb´Q£º®ÜtTúV Ëú=Ók©‹  ÃP¤Ìns"… ëÔ QáŽËóÙÑœdˆQØ)ŸpùÊJ²žš(›‚,aÙ‚ÂÎ#§(5t¢hÊW—/ݹw2\¹\(“efv`œÆq ðe˜º{yøGCp`ÿØ“ôÈgÄ1ÐYËŠC?õðghðxÃ0Ì£ƒ$7Žyæïþ`jÎo‰÷e%˜ÕÊçÝ?üû‡?hÿX˜Þ;ów»LͲ¹J‡C©ŸÎÍX¾’zªSÈ*ˈۜÜf–õÛÚÒÜÜì §8Q6…°³¹Y«Õjï{jÿ˜p^ïÛêˆS®Ùïí×&5§±…ôCQeó&gcûŸºO«Õj›Ôañov†ódRºH*¹™€õ5«Nž<±ëúÛˆÈyâ‘ܯ_øn¢Ä[€¶Ðs~÷â¯>§k½%rîõ¦]ŸÚ~×õ]ÆŸN–õÿ".Î/¥P`ÄVYÿ»”ïÛAŸPߤ¤ã„°¡p÷ÂÌÌLWW×z†4TÅ“§Ÿ•Ýw” ïØq§žvžxdjjªhÛIlØ<öØÉšïO:êÔ¯Ñaà }ײˆþÝÖ’5=7HE©b¯¬Sm?U¼ƒèwg~ž8óóÔç‹Dt%{z­ s ó+vT-{Ö9>J w, /¶{œPîóŽÐ“ LUx‚ò툔Bh÷ ½ ÷ýõËùf+:l¹õ¿?aks^SC¶{œ ( B¨ µÛ«P‹á ÀöÖCùOsÚ–¾Ìøã¶œð÷ßžá¶?E¹ƒT­O@œP&þ/NïzÐ\´Ïv <5@9ªÜŸ „GŽ!¢ÎÎÎÎÎN¿ÿyáÿééi":{ö¬0€ãr …[«úïc~í¯[­BDÓ™ˆÈjý“×~ðzžåV¦¬Ö©•ÔÇfÉçÔÇbÂÎfg8{J³V«mn.5‰r‡ªAO€ÒlÈóŽÞ}ǧ>_î…nÝiþ*QÑÕåWÙWéÂJWW]]¾´ÿpCåy±ŒDú•)ëç­ ¼‡V±0>@QªßŸ°ï·T¶ þ°Å;&¢ð¼÷èÑ£—–¯ Ÿ-‡…æ½Ø9 ^×;›á•)ksss³óŸ¤i…ÍÍÖ¸*™rçÞ=‡•)ks³V«M¥’‘H83‰ÌŸK.ÛŒŽ…±ž^ž  ííííííCŸ7Á£<”'¼öƒ×÷½ó–GOö >z²_ú¯Ð’{öÞyùÊ ­\¹|çÞÃ’Ï{„fûq[ˆF£ ct<ÝP÷wsaaaÁñic~þð‚ç£{ˆÈÛ¯Õ6;Èééj¾tÌtœ]ˆ>÷èå ñ^¤T"g÷N¤b€°sbïÙ…h4ºî…™ ªB¼¿²ñ |ÂÛßfó‘ÙƒÁÙY;¹†#¼²B!’1†”–1YÅï;zỉ|_ɾ¤lß;oyí¯?õùáOñCqÉ;n]¦«þM8.¬ÜºLÖJö+8ˆˆHØr|>ìÐ뉈,cÉ éÊ”u‚œ qše$êЇÍÎð‚COtuùÒ¥3÷iŸ"⸣Â]NéDnÝOËB˜0ïÝŸü¹´ÜÙ :Öùþ„è3ã‹,kv 膈Fe¿ ì~–ˆ8“knP'4Ù‡Ûl>2»Ýd·û‰¨©Ç3¢÷wÇHÓ;9bQ1¥ÌCD<Ÿ˜îïžXd9ÎäžÐ1é{{—&&9®©wr¤³.:Üfó³,K~[%çLxû»ÇY–ˆ8ÎôDðž—Ú÷‘Ù=;`D€­V¤?á} *ðOv‘Êû„;œóÞý·6Píû/-{„Ï¥óÎÌpÃRnÂátäÍì(€­'ŒO¨`Až„|Äq¦­Ì· oŸÝÏš\€ËÄúí}ÞtÐ˲~[¨%àéiâ¸Å k›‹ì“½Š»¦©KþEç‰wÇ4=® ùlÃQiâçÈðôh(6þL”at³nÇe„Ýã±TÈÜÜ äÔFœPãWïÈêOþ+¼ìž½wž9sF¸ÓHú9£¥/²ÃÒãñ,žÏ¾-håÊe¹ˆ¡HÄ‚[‹6WÕŸzÄó‰ð¹X2„ж˜8.v.,Ægrh©NÝ(|鬫S7Q,¾šJ¡ðJ™QYFç,Âð Ÿm¸E’À–SÒóŽ`«x|iõ6qœÏÖ/>524áy†Qé[5,ëE‰¢!?ËjZõªêµÅÅô=Ók%DKñÌyµnÇ‘F­Â‘@IªßŸpüêcôj%Ï;‚­â^Fe™U·Ù&¬Æ ""2¹ƒ CD*˨+n°Û~"Î䵨ª›çdúÖö Æ(kóöÞsÝãVãxêéF~áaG¤éµwª˜(ê(sòä‰]×ßFDά3­/=÷±Áû^ûÁë…Ç'ì{ç-_pÿí'lŠÒß±§žê›0,!÷MÌ€æÂ1ÃÌÌLWW×¶|…sÅ]+ùLMMm;=yúY¡‘öØc'«ÙŸð{jNïüµ''ž={6k¶/¸ÿ¶aßïbShïO€ª«fœ`±tz½Ó_pÿmáÙöý®ÅÒ‰¢)a|¶ìØéq‚* L¡2ô*LMM¡Üj N¨@eïOèêêBÑ N€m«²ñ ¸I `ã°(P‚õ¼?'À¶%ô* 'I^€G£ NHBO⟀8@z'¤a|â€lèI@œ £Šãx>áí3 }ÞOD<2 C‘ä· o_Ÿ7Áór F† ƒa("÷­4ñööööövñ'`gNí9 †¡‹ÜŢ煭Hñ¬JO”¥|ÞÚí"›‡×'€²T«WaTêFbÙÅø*­Å—ˆÈJVã±FµŠa*‹@¦û»ÇcšO  ÎÎÚÉ5Œc ÀŽÅ0ºÁ¹¹`0¸LÇq&W  çæ²çæææuqªÞ>.´TdÈh´/õ+šUa} ¯T)ólí&;Ö»d7‡"8}#N€ZPõñ Ú3ùBQ"Z Ÿ[dY–õ‡¢DDÑÏÜ¢%IÏ@îñ4>ÝŸ§»`5#¢Fu]2 ±Œ&ƒ¹©¥Ö‘¡Ã‡?;$íâôi^ЀkµIþ{dHèpèó&’ß’sM¾Sd(Õ-öË%~‘»8Üfó³,ËúmmÉËX¯ˆ½²×ׇm>Îäé\-šÉÒ:Þ3æ‘Í@ñ5MM/°î^o_ÖÉZìÞië÷,I³”™‡ÕΗ‰óÙp¥qÔ‚êO¨W7q-Å<¿™L&!làùD|I£®'"ŠwÇ4=® ùlÃÑô.ÁúÏ‘=à2±ìâø3Ѭ‹-fbY¿­­?+„(š-Ô2?ÿéc­–]<^BjÕ }…Tìõ(»ÉÅúm¡–€§§‰ã'¬m.²Oöj(6ɞÞ>»Ÿ5¹—‰õÛû¼‰|é3Œn`Ö-tk¸gt Ãó‘áîñ™Å^ŽÜsJtØægYá Z)™,7X’Í@¾5µù’=öœÖ=y²öôh(&ž¬…u1¹³öÖÂyж˜YÖ/=킬](Pa|µk×Ê]pff&kJGGÕé[5ã±X|Uè?˜m!ŸÏç E©ÏQ«½Žx>òQ£Z«n$Š-ż¶Žˆˆ8Îdí¬#j1q>Ÿ/ÐJªºÁ9ìþÅ «q\r .š{@KDuêF¢ÅX|•ç)|.Öh­^E”]GØ]]]Ò“ü§d⽑(Æ™Ü#um$ŠÅâ«Duòg„µð¹Ç Íøçó ':;ëÊOúÕ“#¹÷Üò|"¾DgJ… Å2Yq€$ÉŸM‰ÌêºtÞ ¬{êd­n$ŠùB‘­–ÖâKÄqMêúäI7V ´-&Îç[Š'x­ŠavÈy6«>#N€Z"ô*TpëQWWWV:É! ‹þÐ0ùÌ-T×Å–âaŠ5¶¨F¸&²~»ÑO,KåþtƒsÄt÷Äbò SG%¤¦MÑ–xL¼pSR6²V6ÁÔÔT)gœêþhÎA¸ßU¢œÃè&{—ºÇ'¬Æ “+0¨Ë rÒ¯ª(¾¦e¯{ƽÁ%B,¾J¤ÚçYÙúŒ8j€Ø“Pñø„Ü#µ¶ÅL~¿ßï7»†Ñ·j&'&Í®""ªWkˆ‹%;R—.rÒMÞ£”{àSuޏãm6_ò˜U<5áž%¿?º &g+)U?@Å6ì˜,{F¨Wk2/Œç91åm©«,£s–ÈÁîg}¶áIââÒ†† 9Ж¸¦´Þu/˜‡ŒqžÍ¸¢@ ÇÜê¿?¡^ÝÄqb_j¾µ‰ã’Ý‘D £Ò·jXÖï™^ËYr)¾F ùY–2ŸŒÄó‘!ñ™ªÂ u}‘Ô²xä÷ûÅÞ„€mOöŒ N E“çM«^Å0µ'á„%Ü”ŸyªYŠgžU´nÇå¶³SOL>êcãH3P`M¥9Ï·îù 09†0Í*¹B;ËâP¨*¾?!©Nߪ‘\{þ”tGª,£.·8aÍ}ÞÂ9W›Ñî—ŽAvrµµµ··í~®©G¼Ó±@jÒIc•¢Ù€EöŒ LôÛF»Ÿ3¹F-ªd«÷X¯†bV£GÝkâ8±mÝiONßáÐÞÞn4Ú}¤éµË QZϾ Äee ßšºÍ± «Qœ˜oÝóF#Çz›8Îo7†ZÜb™Èæ!òåžåA&ú:yòÄ®ëo#"ç‰GP°9§žê[VOŸ8>Aè^(å6¤™™™ Æå”{~Ù®g>áíï§ÞÉ¢ ñí!áíë§ÞÉ‹ŠÙÉõ9Ÿ'O?+4Ò{ì$ú`ëUýý P"Fe™u7Ž?³ú´y>òÌx£{vg Cœ[oCÆ'@‰¡£ÜoìÙ9kŠ8¶êOÄ °  Wq@Æ' NȆžÄ 20>@Qv¡@!„^Üz¤XèóØ8è)íð²]· E8jÒîÝ»…à|©px#@u]»vM<âð‚-‚BFQ+­¨qß(¢ãZ5ì@8ôa‹ AÉE8ãq(z”ã`ëUk|Ï'¦û»'Y"⸦ÞÉ‹jó^ÌÎó‘á6¹guŒdJ¨ev@Qï‡òé#³{v@KÑá6›ŸM_/0¹bþ`3÷ʪï‰tP’CupÛòm·ùçì°ÑП[¯Z= ÓýÝã1M' ggíäŽðü&¯‹Ï¶?ºNgrOOÇÕbþ¶‡ÊöDž  ÃP¾ù±So`Ó6áío³ùÈì låy§h¨½½ à2á|„8@T•ñ ñ5ªëˆˆFe®uñ|ÂÛghoo£é£jdèðáÏõ †>o‚Žû}}ÞDr¶B Ê”YÖoëŸNdN–jOŠd'%Lïó&ø„·ÏÎŒlrE†’‰†"Ù§<ù”Q§n$âù{ÛÚ¶Çù &Õ©KÞ»¶=Þfó³,Ëúmmòª%aO—ÿ\ð¸”<äN÷···>^eåÖ¶]š³‚è3ã‹,kv'ûU¤çÂÛÎëí“]¾éNbâYuà"wqh{r¾Bªe²„3kon1–µ9dÏÍÆv Ï'@ X¯B‹™XÖokëÏ:™E‡»ÇcšW†|¶áhÆé3Ô2?ÿéc­–]<^#¢µð9jÕ«¦è‚ssƒ9}îf—ËÄ.NtKf&"†Ñ Î̓ÁÜ+…BRÂôÅ k›‹ì“½Š»’çõ|y%¼}v?kr.ë·÷y%äSöŒò³,™ßuê"ÀV¶=…=±EÇ0E÷îùy÷³nÇqœ)Ï]@ò¥"-ƒbÇ%ažsd¸L,»8þL´”ƒíÜœe;^x>òÇ™Z´Tî‘ùÙž ÅÄ¢Ë7]¶HÞ>›/Ùy^B¨Akñ%"a/-ž wÇR=9ÒÓœlÍ,ksäK¼èéqÀ†{Ö9>A78ç2q,»8a5J¯f…|DÔ¨Öª‰h).žç8ÎäЊ×ïbñUžO„ÏÅ„.‰R”¡ðô4±~»ÐiPøJa:©:u£ðy¤³NÌMÁ<ˆWYÂçbÉ•¶ÅÄq±sá’ò™Ù&°F»Ÿkêùêàýƒss¥†PÅó±dOœÐVeï.~P’Sø¸$Îcí¬2F¾pyµð1S¸b²/E·µ³.y:ð…"ù§Ë©¸Øyž¥Ö 9¹X'bf÷Ü ®ð¹X¶¯L®fV²9²ÏÍÆiwB}Fœ[¯ŠO:Ò Î ·÷fíá,ë·í~–•žç$çÑä%J«ñ˜Yzq¨È‚rê:í=MœÏÖ?½&9m$¼}ƒQHª’ãf¾<¬Æc™JΧô¨š¼j2jQ!<Ø"9{böî¥lç•wÌÜŽª¶íäŠ4'ñí¶¸Ä&~¾B`ÝÀdoDZ‹V£±X \Þæ(ø¬Þˆ@ªøþ†QuޏM—ÚëÕÉ X.ôgpÏRh8äKut–²` ˜)6îò,¥®-M»Æc¤éñ¸LWÎÚÍC½Z“9A£®G}ت¶w甪,™± ™5*}âˆnܶ“-Ҝķí±^ Ëú=ɸV¾^1*ËèÜœËÄQÁú’šYÖæK|gUoÄ  8ëïUJ?NÞà«Q×1ŒJß*=â:!ûý~±7¡Ä \ÐÄb±Œ‹òÝÄ…Ïî…ó Ί&×Z“\Q™20  š¡%îÝÂÑk)¾VÆAIhã KE‡môs&Q8Ø6ªU Sôxµý/Úc½Mç³¥ÅE††"<_­#³l‘ 3·xºlBzÀbã.o‚/\¯´nÇe¶ûóÖÌr7‡4ñÜl`3À&©Öø„;¹ÚÚÚÛÛ“7øŽt •eÔeâ'¬žT§omâ8Žk’lJY°ÀÕˆ·9}†v›YÖokó,i¨À“Ir̓0ƒßn4ÚýœÉ5jQ¡Fl¥ìÝ £ê´÷j(&—Uô $´q…¥<êÞ2û9“ιڌv¿t¤ÄzŽ™5Ë©,#³n3Å&¬FáÙ8¡–äHâj™e‹Teu›“?j0 E©NR¼?ÞAr§Õ̲‹ÂÐùÜBŸ"h4Ú}¤éµwJÛýùjf‰›#_â;­z'·ÅÉ“'v]9O<‚ƒ2lÇ©§…ú&¼^ˆž<ý¬4H:J fffºººÄt`ãtüÅøÄ I⛘ñhTÄ IèI@œ CŸ€r@œ½ ÊçÁÖ[çûrñ|d¸Íæ#³{v@Ç0âŸOïy©ýq?›¿õÖƒL䕜égÊ]Ää ꘬ß*0@-Bl½MëI`ÝàÜ\0 \&Žã8“+ƒóón·Üô¹¹AÃ+xzš8ÎgŽð|nDá „ÅegØh<2 †¡Íÿi@œ°Qjc|Bº±¼¶{ÂÛghoo—6ß…}{{»¡¯¯/Õ²—¶ò³Züò‰$¼}C{{»0ý"wQèÓ`Y¿­m¡ N€í£Æ'DC~–%s‹ÐÉ c-¾D$Îîiz\=òÙ†£É4†m~–5¹³öÖ’~3'ž wÇÈ,vzd̺…žáV+T'X'ŒO€­·žñ 333YS:::’A0ë·ý©ˆ˜%nñt*)®©gr@[h³{nP'´æC>"jTkÕD±¥x‚×ÖÑZ|‰8®I]ŸìˆüÝ<‰$ÑÖ¯žéTå‰ rKv¬®®®rß)Ž8¶žÐ“Pñ æ®®®¬Ô„âÅõÔ8æÊ½NÏq&÷lK¨Íæó…"ZqÎdüÀ²‹¯ÕÑjé¨ZïOØ* £ê´šYvqÜ5ày•eÔeâ'¬Ò§iõ6qœßn µ¸M\zÌ„öX¯†bV£GÝ+ž›ˆøÄ$£Ñî#M¯½SÅ0 £ê´'SÀÓQ  ›“'Oìºþ6"ržxÅ›Ãqêi¡¾‰÷ÆdO:J fff*—£Y/ƒC­€ Rz{éÉÓÏ ´Ç;‰þP„ÚxÀŽ8”bŒO(‹ðrhñ•ψ2l›ñ ˆªf§õ$ N( Æ' N^Ä iŸ€8 z'ÈÀøÄ 2Ы€8 ã'dCO⟀8@z'¤a|â€lèI@œ ãeŠBèUÀ­GŠ533ƒBØ(@œ c÷îÝ×®]#ŒOP¼……Bu:uJ¨üˆ²¡'¡†üÆûPÕâ<ñ '"ŒOÀ…ÕšðÞv3 Aôí ïãz ~éo¿†ÒÄ Å¡W¡†¼å·PDtñõ_ѯÿ±•õ´4ÁP{â€jÂø¨iˆ¶œBîàºvíúEQv8ìÛ No ˆÃ ®è@ Ç »˜ þ¡Ü¶ǰl3èOEÀø¨á8ý °áôJ^¨Ý8¡‚(7@œP„ø&æ ŸÀó‘!ƒÁ`Šð¼ÒÙP5‘Éí'ìb+øWÖ¦l—ŠðJ«WÒéÕ­{¨ÉYuÀ`èó&ø¸úQ»qÔô$¬¿©”5Ãèçæææu îƒßpÿ÷W\ÿÊú Ž3¹€§§‰ã|¶áI›Û¨2»g Ô·¬Ì”˜7†Ñ ̺wòƒxù„·¿Íæ#³+ƒ³³vr W°A×S”Ó:Ç‘ qìDÂø„-hyG†„«t}ÞŸðö âå:q¯·¯Àe<žOxû ííí2  ü‰^Pú‹<n³ùY–eý¶¶añŠšôêr¾y¤çõÈPêzäP$«²~—ëÊŽÞâ*øWÉ/Õ©s*°¸±²6qn­ÈW²§çI°\ñéþ|Õø"w1_Í·»íØš}f|‘eÍîd Æ0*Ëhº•\ú~[*>•~ ”Ýš%Ö4ñ@×ÖïY’«~E\ÖÐ××g0 C¹‹8² N€¶ù½ ,ë·…Z„k´‹Ö6Ù'{5wM'Rç–õŸ#{ÀebÙÅñg¢2gñáîñ˜¦ÇÕ£!Ÿm8Zzâ¡Dç\mF»_¼<‹Ê2ê2q‹Véã;JQú‚ £ê´÷j(6a5 CQÒ¸Í,ë·µy–4$<„$JuÒy²R~Ëo7í~Î䵨Pëª'p²ÿþáìü?œÏ÷muó »‰³jN„çóÕ•eÔmŽMXbm¬zÉ©Æò5¶ðî¶1*ËȬÛLÉ­ÓÞÞjI^¹/kå« ‚d/%K¯iB€ä·C-nWÞþ¢p›*]2vÿ“'Oìºþ6"ržxÅ›Ãqêi¡¾‰7eO:J fffººº6â†%ái€¾bO…ß9fff~ãÆ}ïm7¼å·P Dtñõ_~;軿ëXË~mꙬ½ vñ|d¸-Ô²Ž=¥ÀîV4ñ'O?«ó—pdÛtÛ†rÅÌî¹A]¾y”S¶Óù{2Oâ%¶—Äâ±ÇNb|(BmŒOóÖ[¸`ID>[U=¨ã‡0”Ym„;Ž8Mï$ú¦*…8”BiO=ž£7ˆ ÅüŠÛéw<¯gÉ—vCÀÑqìhbOBí>vtœðFFn1¥>P'Tã j5NÀ@É-%ܵˆ[Ìõqlç#5Æ'@-z ý [ ‡@ý@œÛüH^…Zqñõ_¢DèOÄ ãjË·ƒ>‚TÐ…ˆª= 5wñìx3(‚0>å p§NB!ìèO¥@¯‚Âutt`´ÀÎþØzbO‚Ä IxÇ âŸ€8@z'¤a|â€lèI@œ ã'È@¯â€4ŒOP¼¶^ͽ‰ý |ël\!N¥ÔãÝ»w_»v­V2ì<ñ¶(Öµk×ÖÙ¸Â}G  ÚŒëôU±þfâØzŸ 4ˆ`ë¡'@i0>¡*ãx>2Üfó³éè×ä ê˜ô‘Ù=; clô'€RT«WãL®@ àéiâ8Ÿm8Âó²ÁÁ`0 É~ ˆ`ëmÈø„:u£$$hOŠðb·ËúmmD|º¿½½Ý`èó&xÄ€8`+mÈø„hÈϲdn9Èœ› ƒbC”´³nÇqœIz£ËúÏ‘=àéÑPlü™(¶ ìdŸŠPÅ÷'°¬ßnô×Ô39 MQ§n$Šå_ãLÖÎ:"u#QÌŠ ÎÍ bÛâ€-T­·2gõŸðöw/²,±,q(i€âpßl½ }Ï'¦]ã1Òôx\&Qâ¨üþ„ÕxŒˆÕuÒ‰õj -Å× Ç ˆ¶”0>a#RfÝ€Û̲~[›gICÂ3Ž¢T×iïÕPlÂjD$ ã@)Ö?>at²#Ý`0˜3Ye³ˆL/˜Nä Æ1ÀN…þØz:>'@MÚàñ P6ÜwŠPÅ÷' ¶@œÛGµÞŸ°iQóÄ#Øj€8`£ˆ= 54>¡†º>*€ñ  ˆ67îáPô'€"lèø‚›²Î IDAT„£ßÛ±{ªï¿ vâ¨a4>áÄè÷NúÞY¤}ö<ê N€Zµqã„ áåå7QÈeÁøØz4>Aâ¨mÂø ûŽ@)ª8>¡pÀó/íÃ'Ãl:HÖ?>ÿÀ] 6€ý °õÄž„MD÷þÞgæGÿÇq5ǽä|êUžß䵿ù—¿ú¡?ú³=¹ù? Pú`ëm囘oÚSOt…ˆç/~UÒÉ ô0=/Ñú4ê¤ã_?ôÝšgü‰ç‰HmýêÉáÏ÷\¡Û?4:n¸™!"ž_·tz‰å¸÷÷=ûèítQèÓ`éùÑSß³ÞÁ0YóÜÁdg ïÙGoÿ±÷ó}#q–Ba6T!¨:ô'€"T}|B©¾{!̲Ôvè]ìÝ|ãű¯ŸËía`ÙçG_>ôÅo|²è<Âô¸çÞ/ПŽößJßÿƼoð<}ÿKýÆk·w>~üVúÖè—.2ÌÝ÷?ûy=ÇIÛúYó¤÷ÒTn§‹_ë¹Bè}f~ìëç¾øO"HÄ °Ímò[™Yöùñc‡ûžxžk<þ™LqÓžúÌ99îý}Ò ÌsÓžzá³Ërƒ0ÏkW~BÄó/g–ˆoþƒ=õDôúÕ7rî5*0OVXöùQ»÷ Ü­ ÷ÁÖÛ¸÷'{Óÿ£o$oéaYâä—*ež‚‘ÉóIJBðpCùó0ÌÝ÷ö¯öÄ—Æ>sl ï`ã ?¶Þ&÷$ÈüêüF®Ðíÿí縊çÉ£¡n_rätþû…J™‡˜›?ôØ7^ì=ÌÑ– ¿Ä ›gËÆ'¤­¬½FD7ß´Îyd0Lý-·³ìó>"+0 ZúÑ Ì#ïö^Ïq´ïÖPuqlo[Û«À0wßïøË>?úá¿[ÝG,ûü臟z•/{ž|n|ÿ{sqÏÇ?Ò*< •aê¢ÿVúþôÿsX˜’;OV"£T¤µï˜í%ºýCŸ°Üˆq̰10>¶Þ&O`˜»øÆ‹äN¿ë“c_ÿdÖÄweÎYliÊÙ¿rGÏ‹c=™¿xó‡ûƇ¨Ð<‰äË9@Õ¡?¶žÆ'âPŒOÄ  <èUPŒO€­W­ñ 'F¿'|xè³ç¾ÿ VZ&°ÓÜô›—×Ó¸Bœ[OèI¨Ê æÓŸ¾Wøðòò›(X±4`rœº¼žÅ'€"ã„^…õ@x€Ò€ªÀøP ŒOPô'ÀÖ«îûöïþŠv²ËתÐÈGl=ô$( âP¼?q€ ô* NH{ª2>'Àv€žÄ 20>q€ ô* NHÃøåàù„·ÏÐÞÞÞÞÞn0ôyüúR‹  ÃP„çs§·K EømSzb¹%W(’ü6áíëó®reˤ@qUPÂ%.¸ý6 N€m= Ê1Ýß=ÓôxÁ`pvÖN®ár ¥ã8“+xzš8ÎgÛÀªz#;†Q©‰eã«DD´_""_(™þj<Ö¨®gÎÍÍÍ êf3ƒB› à2m—Mˆ`»Áø…ˆÇˆ¨Q]—lõZFu C’~±I'¶ð¼Þ¾¬ÎñZu[¿g©èOÖ©3—’^ÞN·##CÃÐEîbáy„é}ÞDòÊ~F®2Vç#Ãm6?˲¬ßÖ6œZ©¼«)d Â'û R].Ù \m‹™ˆ|¡(­…Ï-²,ËúCQ"¢hÈgnÑŠ ^ä.æf ¹¦ûeûsdóœo‘Üu)¹í.³ ¸u }}}©–½´•ŸÕâ—O$³è²Jàbþž@œ;z” ÅL,ë·µõgµP£ÃÝã1M«GC>Ûp4}aýçÈðôh(6þL45³Íϲ&W`ÖÞZü'£!?Ë’¹å {ppn. æö0°¬ßj™›,:0}qÂÚæ"ûd¯†bã®éÏç®ÃèfÝ&Žã8“{v@‡ ¬¦­0 ™]@0º2V§^ÝÄq´Oðüj=£lòi‹ä[B¿‡¹¥@!”·MåáùHVÑdÊ® NHÂøåРιLË.NXÒkê!5ªµêF"¡,ÌÏq&kg]²OÀŠð<Ï'âKÄqMêút_üˆõÛF£ÝÏ5õLhÓ_ä,Åq&·t†óÔ©…Ï#uÂ<±øjÁU^MiXÖoëŸNÈ^ö®Ó·j„†|æ–Ç‘/] Ÿ£V}]ñM[¤,RÊú¦7u"fvÏ êòBéÛ´hI(:†Ñ‰wdaO@œ@„žå…  ¬&ËúíF»Ÿe…–w~«Ò›— ·n“—–G-*á·Ï`0 ¿’¯ ZÂ<#“"«Px†Ñ Lö6q»8a5sÇþ¦†(øCÃ!Ÿ¹EKõj -ÅÃñX£Zµ¹-à¢ëËq&WÀ%D2Ò€$gÁR·i_/Zt€8@Æ'( è:GÜ&ŽK5ëÕI³~c®øò|bÚ5#MÇe⸊çÉ£”U(i5•etnÎeâˆHvì¯0DÁï÷›[´ £Ò·jXvqbÂonÑnâ6,}“iõjXÖï™^£ªmkùDŠ N^%êó&;„au=Qª±+6% Ç:aC(𼩽ä/å¢u%¶)ï*¤.ö¯˜'OãzÀmâ8ÊqNµ‰ã8Î$ÄuúÖ&ŽKÞ´#מ3Pz¼è"e­K]§½§‰‹»¼ ^vÁ|ÛT˜.d&sz¡_Ï,ºôêàÙGˆ²a|€r ØÉÕÖÖÞÞž60Ò)Ü*£²ŒºLÜℵ”ççhõ6qœßn µ¸K¿êÏ0º·™eý¶6Ï’†réSâ<ùä®è:í½Љƒ1Š®¦øØ£Ñî#M¯½SæV"aˆ‚BÊÅ6¹(%à)q‘Ò7è:­f–]Æ|Ë.˜o›j%3ãQ÷J§ç&"[t™«ãý1ö@%aNž<±ëúÛˆÈyâlÇ©§…úvíÚ5aÊ“§Ÿ• BÇB)aÃÌÌLWW—ΉÑï=|ÿý»…Ø Â³Y}dÆŠ”ìòµ]DtÖ;%´¦¤í¥Âž<ý¬ÐH{챓èOEÀøEAœJñ ʇ§— NØ<Ÿ€8 z'ÈÀøÄ 2Ы€8 ã”fжœÐ“P­ °“U«M…8”R¡wïÞ]Êë?J—(ø‚EÀމcÈÆ• wj\{qlÕíU¨VÈUßÓQØ1q © Ÿ[ã'dÓŽvž  C>sÊP„çQ8[½{&¼}}ÞD©»'vÞp¸n—0Tus¨?ÒŸ62êdUªbYó—>ó•X¾ ”[JëûŽ@ª;>”J³äŽht ƒ²P†Qé[É^³XT”µiÏR¯}»êÎev¶àXÍ0ºÁ¹¹A¡5œðö»¦õ#ªÚ¨‡›Wb›YJèO¥@¯ÂÐhµ«=ÃÑÜ/ø„·/uu¤Ï› ñ:JdH˜8áÅ+(b§Ï'¼}é•\æ¨L¾•Î…Éý(>G­úº|»gzÏ•ìq™Ÿ³÷M¨uÉ훪 bMÈs–Ùú‘¡d-’ž U•:uc,¾Zí쮺•ä³ 1µ¡HòWòî5ùw4"âSgÃì ”SJˆ &a|ÂNjŒtÚÕéÝGÂrØEöÙÙ`0ðôÐø3©ƒ Ïf#W ðô,y††úC-³³OÏ’mX˜amڷ΃ÁY7Ù†£©«,ƒè¯¨0PX#"¢µt˜÷,$wß„mÁgs‘}vVZ¢ÃݶžK{£Ã¶¥ÞÉ`08Ù»$ný„·Ï£ž ƒÁ`°%dó«*<Ÿ˜î÷¨'˺B_Rö +7Ÿ•¥&çØÑx>2l#W µ"•â¨5èIØa‘‚•<Ó Éatƒ£–dŸiº1=¯¦W8üÕ©cË·ØSŸSÇÇð9Rב¶Åì á²%@Å„[„@A„]2ÿîY Åƒ}s;„v£1ç¶Ù-Üß’>GB>s‹6£½ò™­uÂÑ^ØúY=TÚ·¹`UáùÄt¿‹ì#UYÍßâÙ+¥ê–žÏÂ%–/µ<;`á­^­ñ…¢Ù¹­¨”ʃñ  Ÿ°“š#ºk¨zm¤3óRJ›ÍϲDÄ‘©%9¹Q]'Î"ý,XÇb~«q‚(s)¨(†×·’+œèÔ‡Ï5ZGêŠíž`ßܲï¶__¬·5¶Ô•ZU¢ÃÞü­J>‹•X¾ÔòE)yw4†Quޏ‡ÛÚÚYÖä ê˜M+%Ä  Õ}(:TÐ ZC}ÓkVÉE¹gƒ:†ç#Ãm¡Ò’©WkÌ®ŒŠ¨j ¥s-£76”»{bßÜ9êÕšu.ž]Ux>ò5¶ (!{›W¥‹îhÂØå„·¿{82; ¥hõJ©Üw[ãv í±Ös.ÏRò¯ÕxL“ìÒ]‹/•l0*}ëRw>T+€gTúVš°O4fܨQt÷\Н%[9>ì›;¯Î¨3î‡a]‹Ùç™^#¢µiÏÜ¢ca¢8[t¸PU©â0³Ü쫺e䳄_—OMö§Ë=nÚ`<ô'ÀÖCOÂN<»¨,öÖsݱäñnÀ2ZD\SO¯Ùgk£'‚÷MDem2´ÛY"â8“{v@KÑá¶PË,.dT¢NßÚ4ž&Þ=F70KÃmmm¤ét›»CùöMì’µÆg7úÅ?8Δ˜Œ÷·µÛYqCkÜ¡¶îö aŠ6k6"2¹Üf_hsãYÙÓJ+¶\Õ-=Ÿ9ÙË.1÷ì€lj²?]xG“Þ’drtL²ÏaNvÌÉ“'v]9O<‚Ý6‡ãÔÓB}“HŽO†5—9ÌÌÌtuu žýÞÃ÷8ëržxC”æÉÓÏbßÀ޹3!›Ö²ÿÿÛ»û¨¸ÎûÀã¿{×='9[ÃjëÃS7¸Å#)[¿0–I²˜ÉSì8`I%YJ“4 aQ I$‘I{N¼=ãÚ ÄR94qš%+Ë5q'Ä‹I R MzŽ¥1n”ÄŒœý£ZáíIÖ‚{÷;Ì 3w^€f¾ŸÃp¹/ÏsŸ{Ÿûüîó<3F êÉcG.ýü-yiðŒÑš o/%sžEäĉãŒ;B¶àS²ãŽyÁž„T ="äx ÷nÌ­]‡4ýðëç~Hœ¬ã¶Oíüf;Ù‰{àÆ¤I«†RŒ;B¶ÜöÁO=@ÆC)âd $lý È)|@¶!N@æÑ“@œ˜`~q`‚^â „ù Ä @$zˆÌO NLЫ@œ„0?€8ˆDOq`‚ù Ä € zˆ€æ''‘èI NL0?€80A¯qÂüâ = Ä € æ''&èU NB˜Ÿ@œD¢'€80ÁüâÀ½ Ä @óˆ€Hô$'&˜Ÿ@œ˜ W€8a~q‰žâÀóˆô*'!ÌO N"Ñ“@œ˜`~q`‚^â „ù Ä @$zˆÌO NLЫ@œ„0?€8ˆDOq`‚ù Ä € zˆ€æ''‘èI NL0?€80A¯qÂüâ = Ä € æ''&èU NB˜Ÿ@œD¢'€80ÁüâÀ½ Ä @óˆ€Hô$'&˜Ÿ@œ˜ W€8a~q‰žâÀóˆô*'!ÌO N"Ñ“mná ó®_¿žªx' ½ zd„O;Â) NÀìIHÕü„öKlÏF>óyÌOÈ6Ä È |q`‚^â „ïOÈ6ÌcFæ¥ê“Žmr²ƒ(âBÝryÜêéÇú z` — úàÁ­qUo‡»G9q–š%µßŸ€,ñÉ~$—²ó7ßøö–ÎãVO?6RÐéœaeáU½î>Ó<‚8HzrÒoý•<’~€«š»Ä Àz¤üûÀSášøZçýJØ’vÁÄHFÊ b“÷Ÿt2±LÜØ} vgž²Þ½mR ±¾š'x¶7íäoB l^ÈF¯ç!÷â„5þèZðñ¼¬-i{Ú¿ô¨ª^ùÊ7§ŒÞ^ò½ðg÷¿ÿ½å®W––ß^š|zßãnUUÕï~vßSÆ’®òûßÿÀ^ã§krùæ²f,46‰8Äš~R”Ç@FÎ>ÿ¯­Ï<~—¦½ôü ¿\Z^YHÿû>ñµŸ…¥3ÖòÜHx9«(¯(wMÜ|%Pd“®•‚Ó^y*P²OM†ÎXÍø×‘|oûÎ)¿¿¢üc/ø–£S>ùÍ/{UµîKÇïÕô›ËÚ’fyôoNÜ«éáFøüý…>öþö†í6°þ/Î~|õr-NRc^™+ÙL_Ao¢íÙgU”ÅW¯,¬´Y¯\xq``àÅ/ÎëºY£vÕ Á E™›¸dl’p'©yL/†¨ #w_‚2úÚ3êÌ`²?¼à \–¾3GþìÌ/Vn·täÄ À†ìØ±Ãø…¡G9',éký1Z KÁ%÷~à!M“—~0yS»¹¤O=ýة˻>Ùõé»ä;'ž¾¸´¼çèx÷Cš¦i<9~üžeYZÞóéL ½üÊ÷Oú4ÍýÙ§ Ãwyˆ¤R•Ç›KúÍ©oú½?|ïØ)ryø_`ùÔÓíU}¨k₳Z Kg¬å¹‘þðrü˱‰áœ¸gYtU}éÄøŒ?ßxáãŸw«uM|¿ëÕý™O½0¼`ŒÕŒí䡟лý.yõÔg߸©…'ûí›Sÿø’hÚ#å÷&¸ö"~WÕ—F—¿øý®GTõÊ©ÓoÆ]nšÔ8Wfx6ÓWÐ)PXT¬ëâ›7ô —†^½‘¿«|W¾ø&/-D¯±‚¢í9¸¯X×ÃÇ/%ÜI¦jžd.€ŒÜ}ñkÈèkoi¹°¬r—ª^ýÑÂÍ%ý¦obô²\ùÊ·Œõ}?Ö*x×Êí6ºüÅïŸþô]òj ó„¤ê­^ »ÙlÉÛK“?r‹È÷ß!"Wßð--›nrsY»y{ñaË—cüž‘÷ño/ù¿ñ¯GÛ—´‚ûþÛ.Uõ¾üÊœ±ü«¢i¶Â‚Uéµ<ÇÒQ.Ë"šöðÿl·{ž»¬iï¹W»yïûj5íµ±‰`éV»½øã÷ç»Í8Ê•_ø’¸ÀLÿñ»¦=üáGßmZÜ?¸vèˆåq’ëÊ Ïfú :µt}~Þ'"ùy…yù"rcqquo@Â’\'S5O2@F5¤ùµw[Ñ"bü~éLÏ몪ª/ýèR`ý;ŠÞ½*Æ…—ºv»ÌýÒ+"%ï 0X^ÖnÆZžCé(ú¨?=„•`té'QÊјù¿d#¿›'õ6EIpe†²™–‚N™ü¼¼•_enêÜœ(ŠÜX\¹5jÝ„+D¯“—5ORC&î¾D5dŒÛäž÷Ukßöþ|nùâ”{çGŸ¬þÑžú»½ÇúKï#å÷DÜ­Ùzá8ÛŸz”“––×övP×eeô­¾¤ˆˆèÿôÃQU•߳ަɒ^Xx—h¯ýÑ<Ÿ»Çx€i²´z]_ðt=÷ºìüè×>6÷ñÏË%l‰<ĦçqÁsúgÍ_ÿ#‹øó3ßxmôÒ|ƒ£ F:·AúõÈrŒø³°ð.‘×Âöp×ÿe=gé~ûC2zÁýÊôgß{_ìk/þnc:°Ü<©7%Ñ•©ÄNC–´ÖæçEòóòE×óòòE¿±êVw$\Á|l¨y\ FA+YZCF_{ËÊÊeߣÞU}Ꞇw?ôܓ߽t¾dø¡‰¨E³ðÂCæ0î™Çü„œŽ´µþè+¯²––µ›Kûþü4ÍÑÙzßÒ²¶¬Üý¾ªú½³?¶I¥TD®Î-Îù^‘÷Üþ®U»Šõûš~R“ÇéoãŽ?Ý»nü¹’©×~tq~Y++; ªú½‹ÓÚ?=÷¹—UÕHg¬å9–þˆr ÿ3Xô§µ¥é¼¬ªw¾oÏmš§dc•òîú¶÷hÚèŸê¥ùecÉÌWþjfi9Ñ®®Î--w…:ryì¤&¾2ÓZФëó—&}º^¼oO¡ˆ(J^Qq¾¢Ì]ö¾eº~ŒòŒÞ’dv²i5OðÌê£@¼ï½± :3w_r5dôm²{oˆ¼|á{Æ’Ý{ëTõµþ¯}ï΢‚¥4× N6„ù 9lYÓ×ú£‰¨ªç¯>XõáGüÈ;ÇJÛ¾ôÝϼWì궇ÿús5ÚÏ¿ÞôáGüãºgÿyYÓtKmGÛrå[Ÿ¬úãºg¢•}ô‹uªêézøïÞ(Uõt=ü¥ôª‹¶rˆàïkúÙx—–ç¿÷¿~þß- _ø;÷=øMûÙ?N-,k»m{¦?QuiïÓд`:c-Ï¥ôG”KÄŸFÑ?Qõ‘'»FډǙŸ€lÁü„œ´z¢·z-¨™¨'hyY[bZçö»ªÓzp÷!Ë' ó‚=  ¹g;ôDoõ<2Z ‘²¦‘&ÑeYç\më:wˆ€èIÈaKÛà)¸Õó¸DKÜ•¤ N@Öâûrý ¤àªæîq°!ô*äæÓzŒ¾Ýêy\f„4¸+I'@œ€ìÄü„Ƹ#ÒpUs÷8X'zrØè÷_"¤Ù```}MÍV¹ª¹û@œ$Æü„\-VòHú‘ rõ˶ôUÍ݇ìÇ÷1#[ð­ÌÄ @ÈŽ;Œ_x¹@œГ@œ˜0æ'p²ó˜‘-Rõ©G¯_çªØ(úyÌOÈ6¼yE楪'áöw¼þÒàëœOâ䈔|ݩ¸#d >õ {П€Ì ö$¬¯CàÌ™3œCâäšÌOhllä' 7­{~§4Àó-˜Ÿ@œ„ðý Ä @$zˆÆüÎq° ½ ÙƒÏ;Bæmðû¢éú^-,2cIDATtOu§G …Á×p‡]I_tÝþhS߬*"šVÚzúdƒE¡dÀÖE2/M= šæp ÷·”jš»³gZ×Ó$ôzm-ýÃ###££Nq¥ñpÄ Ø.Ò8?¡ÀZhÍOwWUUUuOOwWUuíøéîªššššššªîi£Å?ØVUSSÓ=håûÛü_ÿÛ¶ªªª¶A¿."útwUÛ U°àóŠH‰µ@DDQ, §:슾ÃàÓñàƒÙ¾gÿ`ÛÊžão\@œ€—®ù 3U•º £á®ªžÎ‰Š±±»¢øÛœÕáv9T³mЯ(–ú“]Mswôëútw“¯ùå¿þøJ›ªÎúDD®ù®Ú*Ë-JhX‘¢Ø+êDU=ÕGèà=M½^[‹«Å&îΞ™Ð§z:'*^~ù/WÚTuv|Ꚉ\›—•=ÇßÐH?× Hæ' ó62?ahh(bÉ‚Mjg­GD´Ò–Óíe"3"¢iŽ®ö2ÑuÿÔ¸WÓê*ÊD¤Â¡¹ÝãSþúz‹bo?Ýzµ©·¯¹¶·´åôÉ2)(¯,íõº'f:ìöŸT.ˆ8¨½cÌ%UNÏl_sm¯æèm·+Š®OO¸E¤ÄZf-ñ^õùõ2cË`2 ¬%"³^ß‚®ËÔ¸·¤¹@D’ÙÐ4ï¦æq¶£'aÝ“˜#ö&Á&õh{ð½{Ô8c°P¯oAÄ"¢Xœ­ãÍ}³¡~ƒ‚òJ[¯÷ªÏ¯ú®ÆE‡ ÃíÆlfOçQëé“õáኪûÜ´¬Â¡¹Ýö Ÿ×ZD’Ù0*ã¦Îœ9³Ž­ˆŒù k s£cƒµ(´ÚDÂC›µ0Qø§Æ½"ª·×5X~²Á¢(Š¥¼ÒÖÛë[¸&ã%§bŒù1†-ùª;Ý–}¡Õ&š7^¸bŒYòx<=⮫謖xÃõæ )ÌO@¶ØäïO0šþªê™˜ Ìa°…Í ð5÷·ØÄÛÛøä¢‚òJ›¸'ÎúJÂßùZðÓÝÁ™ÍÆt›µ0ìýç¯%ŠWÄãñ{’Ü€8¹,øIG©úþ„$YN¹šÇY[ëôhש‹ñ)C£vE±4œìªSUOçÑó~] n‰ DQìíNqUW×ÔÔÔ:=ZiËé“õFÈab¶¯9ü“‹"”W–jš¦•º3ÂÒC€ôaÜ2oƒó¢)нcl¬#‰…öޱ‘Žðu, §ÆBÚ;FVþ‹´ò¹I‘G´4œk0MLÄ!D"“kÛ„¤ý È iüþ„TÐuÿyWשׁÖE÷&'é³ÉóÖÄègé°ó­€8Ø™šŸâd¯lîI N2&Ëç''™A¯qÂü€lÃ÷' óRþý Hz{€$Q›e[‘K%²µªâœ¼¶U' [®ã;v\¿~S‘ÍžØùùêNªªª§³Ú¼ý§ž ï*Œü=nU¨EÏèMTvvæÄ;WㄬtGsšàðcíÇÆŸƒƒmáç-Ýu~îݦg,f¹¬^øcma0ü!®ûÛªÚý¡=¬<Ó“yVSR}´ÿ*uq²Aªæ'TÔ‰ªz:«F<ùfzšz½¶W‹MÜ=3«žµ/¿ü‡+mª:;>uMD®MKe¹EQn86ˆCÂÔ¹\u¶¯)leQ{ÇØØÈÈHô»cWÆòÙ¾æj—8O·ÚÄÛë 4b¥!È?Øæô¨×ð°Ë¡zœÁÊ1n:ÍÌLxTUêvßÎ ¤Vàæª°+JÂöå—»žírhš¦9ºFÛÍn^óz&ÁÃ>QUc¬3.Îa—CUg{ÏÎ$SŽ5ä@¡ëÓ=M½^©s ŒŒëÌ$óÖßb¯qÞÒZççä­q¿zô3-—è…÷«…åaq¹65îoïY㜟éI>+gz:=ªêp :+©ºˆ-R2?ÁÞ1ærhª:Û×\þúgÂ-"%Ö2k‰ˆ\õŠšæèj/ ¾ÑðútÝ?5î5º$’ÙÐDY{K©êqš¸\ýZ1´«k‰ñûÉú‚`jâ¦!øæijÜ«iŽŠ2‘² ‡¦yǧ’Jçꄳ¶¶ÖéÑJ[¾Õñ‘ޱ±dC Iß\§ÛËRrÃ&®gÌįj‚ë4× ÷„ÑP‹_  âܨ1"zi’Λq>Ý«:R]ççê­猙öžE, œÂñ)¿®ÏœíUUUõLÌHð™žä­§ë~ßUÑ´Rk¡IJˆ€LJI¯‚½cÌðQ‰¨ªÇYëô¨jøC1ì¡x.ÎÈ‚Ï[WQQ—ÅÞÐLA½³¥Tsw=-¬Aïl«ªª5vµžú4V|ÞÕ ’Ngøs+ðbæTƒ…ðH¨›+7lœz&MºµUƒ[‹¢ØÛO·–jš:Û×\[}­;ïi«ósõÖ09c¦åb^XÆCÜë[™ ·­ÅÕRªiîþó×BÏô$o½…ðÌ N@VHí÷'(Š¥þd×J•!"…V[X•döÞKQìÆ˜¥‰ž w]ÅÊ ‰7Œ“€:ñöº£uÝÞÕë[K¿Ë¡ikÉMÂ4Zm«ج…\R@–JÙ ]ϤX a묷^¨`i856ærhš&¾þ¼§³ÎÏM±Î˜Y¹˜,\õ·U–—Õ7׉xǧΟé<+‰°e¥j~B÷Ê\¥ÀG›µPDQ,å•6UõôÇ}ífT!'Ø›ä†1áööÓ­6¯×»±W Ó\ab&kÛÊäŠõVÖ|¶Æh²7¬Q!]õ][C=c4•Œ­Œ1ÖkOàUßµ•ú³ÄjQ”„UЪ1‚MÉ@^Â&×)kïrhÚšž1¤«ÎÏ]ñÎXx¹ÄZXVQg<Ä{ª¬¢NUgûú<Æÿ“¼õBñÆÌºo"â R2?¡Ý)®êêšššÀÇ“õF-`i8årh³}Íq>A¢ ¼²TÓ£W$³aœ·S'»êBó®:UõtV÷_µIœ1‰–0 Æ gm­Ó£9\§,\N@ÖJæ†UK½³Õ&Þð©V ë);تßÚºÆ×Øã®êZ§'|üýFªÁlcïëo)5òbœÿ±»„}ØNm­Ó-¶Vçž1C¸´Õù9B›œ1ãã¤"Ê%VaI¡ÕxˆW–7CKiØŸI?+Ë·–jšÇY;Qѵ¾›(׊æøñc·Üv§ˆå¯¯/Xµ+k‰ˆ×=1Ý^jŽXKD¼<5Q;QUOçÑ@0°zÕ™ž&_óh{øòè•£OÈmÆ0oâl%œŸÐØØo¤! ¾ˆÆ¾×· R'´ðmêUUQUÑÖyÔè(нýtëÕ¦ÞÙÙ¾æÚ>‡k¸Ã ®öu{ëº:VâX+Gœ1ÛΜ9³Ž­ˆyÿ¤£ˆØ@Qìuâñx&fÚív™™ð¨ª8*ìŠb2Èf-Lp„B«mõ+ý¸›èºÿ¼«×+¶Öþf_S§{}ABŒ(–†Sc ÓÝUNêîì©mö„TVÖÍö9«Ä5Öaµ²]QÒJ€œÂüd…”BÙáÖRMs÷Ÿ÷뺮ûÏ÷»5­´õpøØ¢«¾k+ñC‰Õ¢(`ÀX¾š¢XÊ+mªê™˜ lb«,·Äëoô?”X 6’‰x;)kïrhÚêp¥ÄZß>ÜßbswgZÇ^ ú-Rûý Š¥á䨵§º³¹¶OD4ÍäóFÇ]Õ}³ª¦9ºÚËŒ` ÞÙ:ÞÔÛ×\Û«9žy |eKÃ)—¯Êé¬õˆhשK¼£+öö®:ÓÓY}ÕfuÖÓY-;Lœ…;y¥æó/…[«Ó˜¯l’ñ*·íSßü“¹?‰\™+ $Õ9~üØ-·Ý)"O;ÂéÀæøÂ3_5®7cLp~Bñ1©ÉÄ CCCk—Ã7€m%ùöҳϴ'Ž3î™—ŽïOÀF0îYÁ˜Ÿ°9ók7ç‹–¶4ú-èU NB‚Ÿt”ªIÌ NÀ–GOq`"åߟâäzˆ€æ'd>™—Úob`M~üƯӴçû÷œ^'²™ßŸ@„ýw[R¾Ï ?õsb±¥1îÙ‚ù Ä @ó² ãŽy队dב «¨€8¹ ó>ý‰¦ø+<÷µÓœy ·+–”ÄØŽþÏ¿ ýBî¹ç?ßΩqq)ïUøïXÛå­ëÓ=Õ54Ïáî°+ë8´±+·Ôu¶Û%åçJ×ýç6õzCû?b™Ì˜=:ƒšæH&…ëÎN¬ ×´Ãø;IIyeœ>Ý]ëô$_"¿&ƒ>5òÀ+5Ÿ?ÁkÃø—[l­§O6X”ð¤éŒu¥Å¿äVv[—Ì6» ôùK“>±î;¸§HQ"þ¤–Nß©6[aÑ;‡Àkïà’è ç/¾85·j«Ð’âòC{‹Â›æ»w߸|y1ø=zå.œ›2ñ…²lЇ~ß'““ZmŸLNʾƒ{ å­ˆ¤šÔvëÂ¥É9EQdnr@"2•l:Wòyl‹‹7D$?ïV#šÍÛ¹oDcäw.t+™—Hø)J2æùÕ/ßúmÛ»n—_¿ÉãÛŸw„¬`ÌOHí>ÿý7Kñâm|ÍwUDê*ŒÉLOS¯×Öâj±‰»³gFQìí£]M‹hµ¨ª§s¢bl¬#¢µ¹¥¼Ò¦ª³ãS×DäÚÔ¸T–[Ìdž¶™³½%Íõeå•6¯± Wª§s¢b¸¿¥TÓfûš«]â<Ýjo¯ë¼啯ªzÆÅ9ìr/˜M³¶²°Ó£ª×ð¨³rõyˆµ| ;YGyÚ¦M½^©s ŒŒËÈ?Øæô¨×ð°Ë¡zœmƒþ$Ï•±ÿ`[§ÛÖÒÚgò‡6„_K®ááà#Ž+‘ÉÜÆ”47שª§ÿ|ðZ­,I[=°Ö³·©A‚>ièÕb-챃:´×ht.\zõFþ®ò]ù⛼´`Òà½raÒ—¿kh«Å+¦æ”âòÇ+/Væ¦.\Y »ææ¤ü±ý»ò寫Wbí!N:enr¾(¸ZøŸ±’qPE)Úsp_±®Ç‰|›”+Êbx:Mó'¿±sQTdE™›¾²¨ÇZgï¡C|¬¼XDÄZ”d‰$xp\ûßoþ§w•¼ƒÇ2@œ€l’òïOø÷ÿ·ÿ'V+ÐY[[ÛÜç­ë ¾¸p‹H‰µÌZ""W}±Z`šæèŠ|Cj¾yµDD¼¾]÷O{K¬IÈèLh=\l¬)$pÖÖÖÔÔTUuO¯ì?òk‰ñûÉú‚`Ãr×\_ eM÷Ä´®›&X×ý¾«¢i¥ÖB1vLyŒåkØÉËKU=GC hãäkš£¢LŒ|yǧ6¯ƒ¥ll.b”ž¬éÐ E%V"“)8ÓÒ¯­uFÏI0:¨j\*Ë­ëˆB£/9³†xÊÎ^ú(ÊÜä°w1t ÍÏûD$?¯0/_Dn,.®N¤®/ÎÏݾ.Ñõâ¢B‘¢b]¿17¶Ãâ]¶[åÖ¼|ñÍÏëzôÅ3ÅûöFÿ'©ÑMæ(»l·éOgt¾âç7Ž¢½‡Ê‹uEY¼|áÜ‹/^Œ•*]Ÿ¿4é‹“Í·¤pï¡C ã«¿þÙ›7ßü¥ÿÂOý~zýMå7?ùÉ¿ýŠÇ3ˆ€ JÓ÷'¼½¤Åÿ‰Õ>s »‚MáÕm§GUcµÀ’h*…m¾ÒÚž‘Ÿ·®¢L’=ÐÌÙ¾ÙÙ¾æÚšššæ¾YI¦i•ÁT¾šJð‚Ï+á­ç±–¯i'ë,/E±·Ÿn-Õ4u¶¯¹¶¶{ZKR˜µnÔæk8ô޲®+0¢ô‡“–d P'êlßÙž³½%Íõë?h2—\ªÏ^ #„¢=vç麲xù¹sçõðàaêÜÔœ¢ÈŨW寸™¸KL¶Š¿‡ Å9±“ºA±òµÖü® {lÿ®<="< ÷–÷òœ¢X÷­ê÷Ø@6ßù‡÷î¿Û²ÿnËþ»w¼[Ÿw„mŽù ȼ4ÍO¸¹¤­wӲí6OŸ§ÿüa{ƒE¤ÐjÍ1¬<ù½™l.b¯¨Ç3Ñ#ŽÀrÓ5C3ú‡Ãçôzǧ®Õ¯£õ¶!6kaŒ¯ýïÆw’¸¼DD±4œk0ú3žË¤ÐjñFçk )_µyÒ‡^K„¶ÁD¦@ÙáÖRw¯Çã©sµ‹Ì¤í8é8{) òvî?´ÓjTtpO¡äåå‹~£8öØ÷¼¼|‘q—äçåÅ;lôÖÇ$©©é¡ ¤?V¾ÖšßˆÀ&ÏV»oq`ÒwcqQ$¢OE_¼2õê¼Ýö)q² `ÝèO@VHÇü„›ËZüŸ8ÛÔ;[J5o¯kЯ¯Œð Ñ^Õz“«¾D£~blØÞãñ{b­2s¶·¤98?uÝCÖëªïšÈÌ„GU¥ÄjQÓ+н¢NTÕ31˜chùv²òZiò¶w94Íhjל˜ äËVYnQãèF~ãÝØ<üHþÐkh›ÆHä¦ÞŸå•6 Œ}J_+< goíi ‹¿ì}KDda~NQ‚ßwîž}źn4v%¯¨8?´¾Y3·¨8ßþ¾DQææûÏ/.Ê‹] f{(*²Š±dáRh"oÂwü¤š'arcñ­•ó“Ÿ—§(±ò•0¿º>ñÅ#FéúüÅ WÁ£D%báÊ«7òw—Ûn“MÓý NÀ“òù ëwl²Ô7שê¬1ÔÒpÊåÐfûšƒc¬ÅRïlµ‰·¯¹6þ¨k‰ÞÜhz•jZ`~Ü5Wžv™ í·ÒäFÕ‡îù•Áâ Ç‹GwU>;e†i‚Ë·–jšÇY;QÑ>¸%Öò5íd}å¥ëÓÝUUƸ|·ØZ‰2Öô8kkÍá:Õ` &Õ(Ü~kkœ£[NuÕya`Æ’?tòb%rÓ(Š¥áÔX¬QC¹¢Þ)?{kU´÷Ðþ]y‹—/ œ›š ÿ<¢‹/¾800pîÜ”Oòw—ÛŒÆnÞÎýåź±¾ic4oçþ}Ö—/œ ®`l27uÎØÿþ ^¯Gï¡pçî|¹qù¹Ëy»‹“>á “ÞÚ¶•k͹©sSsáÓ!båk­ù5b¡=å250(…¼]jmÑ”1Áž£ä³™È;ÿAGØö”ãÇÝrÛ"òä±#œlŽ/<óUãz3¾6!ú›˜€!™‘HCCCÑ_äüìóêM°­û;)ì K$3š1#s[®~÷Üßøõþ»S_ø©ÿþß}'— ²A¬ö’iÅh4ÒNœ8Îüd^šæ' ¹¿Ã¹¶y¨ÀI€u#N@V0æ'$æ&¿CÎ*°ÍkNBÊ)›ôȲó-R>?ëF2/Ø“Àû?@F\ø©Ÿ“' ë¤i~É`¶1`ŠqGÈ éøþ'`Ëc~qìI`è@–`~2oƒóΜ9Ã9 N@Z÷÷'466röˆ³Ö׫¯f@óyÌO N"ñIGÄ € ¾?€80A¯qÂüâ = ÙæÚjȱz¸&2'³HŸLD »ÞÓôž}èC¨ Ø õõõ¨„겋ˆ¦æ_FEÀ–øÔÃòêãgŸFålhmV•·¼å-,j¶*„ÃaM{å“Ôn_š­¾0ý Ë.]]>ó÷7,اÛ/DÂÏ<²ä—[°0{düwl<Ñ3°:™™IÐsfÿh8‡#û»3Ó—Z{$‡#‘ž•ÔWÞ>;9"‘È…zw•Ç “ ô !Ûsß‹güË“xî¹çïy×!ñÏ{Þuhî¹ç‹Xˆ¹§«ŽˆÈÐl¾²r­”aÞkn6Õuõ˜ÅÀA«/äSQÂê ÓôÈè#4ýÂ*­¾0Mí‡ß\¹rå‰tºž¸’Znva23Lw-+ƒ}œÒ{'Òâ™ÜòÖ@¢§bÀ+)丧«Žˆêöî¯Ú½PìCÀGJsLÂ}‡nºtù‡?wIüóþßW™i®Nƒ•WW7÷Åj{$b—N¨;ܾdŸ ¶OS»Ãp˜Üö‚4MíŸßC?$óh¸àP¬ ³‚œÌL öpØ2iÑZ®^ó¥ä–"اÛ/DmÆ?Y…‘ ìã$DÎÊD¼¡h ™EZzÙh'{Ž…Ön_Ðé´Úy2{û´ŽÜ^û"Æ$(sêÔÉ]7ßIDŽ“'²¿n7Æ.!QýÏŸÿ;Ù¿ÔêøÓ™Œd]¦ÙÜ›ŽªÈNy@ªýÌ“Âþ&¼A|O‚HˆpÀfzüìÓŽ“'NŸ>]á—©Í=÷<Ñ!B ¢ì!™æ'€¨¼1 <i±ú¨Ã5;¨g˜ìéͼçÅÖGý¬|wÇ™ &pÍê(<ÒbÍHÃ5öœíTI*]t‘‰«…ìJ•±^Ò|„ºÕ—['¹6=T [ÙìþãÚž‚iV~ð#Ô{ûN}ÏZuI`ÝÝ#áLÅy^±1À°Ñh4‡J,!»è¶´µ ‡øâ–Ÿ°æŠÇ¶j —= zÿþâjTŒ_üÚ?£ÒAVÅŸqÄ0ú¡¹¹¡d;RöÚó¡B „f§ôÊwÜÛoq/’o!4¨“½Œ-MÌǽÝÑhì:‘ªš·NƵ±[ÀgPŸ5« ^ο‹G&\û¨ ¾°÷_®'¢ßýíÿô»¿ýŸ~ñkÿœýˆ>þÉã¨wª®÷$ÔtZLWtjuiÔµ’i|ÜÛo4¶¶¶¶¶¶‡CÒä<÷ö'¿ê÷Æ…¤ÆáÏË^/Ïž˜'óÐpbzâ[ãðeî²ÐÖgY¿­­­ø‹ñ £œ=×ÓȱìâÄSáü«&FÙKIKŸœ^äšÌ<{}ÑÕ°A‚0Ìà¿<\ÿ{®ýÆžk?þ·W²ÿ $€T=×(uÛLz»?—ðˆÕϲ–Ô½ûBßÂbòÆÖoKoLw»“_-º-mñÏ¢Š—;óÐ°Ñæ¯äïaT¶ÞFŽ£å˜p3Už¥ç¨ÌЈ4=ë·Vî¾¬Š¯/ÀŽRáËBë¿~ßG‰Hý½#•½U ¶1aLBÆ3ŽŠ sY¿­ÍŸ=•¸J/}),Ç5öÚrŽÙ•&æ8MoúÝ8á§&Y¶±Ç3fVñ¡á6›_¼sIˆ(¤7ö”ÚÒÍ•¹ŽÂ >ù»}ô³.*{pºH¼™*÷ªés-EÓëíT1Œô¾¬šÒb™Ìy>”k}` ‚„²ÅV~¼ôÊÕ]ÿÇÉ\G¼é·ßz§fσwbƒmcÕòÞå’žêÓáJ‹ÄÆ«¥³†ˆH×dâ|>ZŽ­‘®&[&Žkì=—j×ê]&ŸÕW\Áòf^«Ö»è·µù9“snH_ñjɳt½*gû~hLŸoT¬8¾¾6\à[ÿÿ®ÿ,O‚7~þoß}iñ»/-Þ^ûö¶ü6Û6#ö!”!d?L39¹¢A)ìL>;umj {Bn\oZ¿Ë× ®!ah/‘ð¹|²™3Œªsô t»YÖokõ¯÷!¤ k±eJq‘cÕrJë*©\ÿÏF­/‚„MöܤðáÍáìo¿}Aø`9Þm¶ýTKBéíTW¬Å:Ñ=¢Nožr\coVä¼?ߥw™Vú”ÇŸÞ¶–Í\(ylΜéë·¨Ïv®'$î/Ò1¨&ù(ù¥ç‰LÎÀž)Úe¯iÁú—]_â€"(b`_Ûþà±Ï?qËMõo}ËÛøÝïF_Èø÷[o½éÃøãÇ>ÿº¶«êzOBÑíTýà¹^ ùÄñ¸ £oê Œ'‰‰3¾’}‹Ëú·qo¿±û"5&µ”'óÌRͺLGÑØõÔäåØZ «&JéIP×ßFD¿wOöWûö7Ñ=úBš‚í|sÄn  CÛGã’w’­NZŽ®ôTò%eâ²dÿ„2mÏþ•yÔk³¹»GÔÂñºã½¾‰E¿­5yWŽx'Œ®©ƒü~VúUGG‡Ï—¼¾^«Ö-’xCÇizÏYbÝVñVþ\™Ë¼7šeÉÔ¤gžnß_t[Ú&rß“#3@œe‰¨Ã%A‘{Õäê&µ\7ר¨á¸EÖom¡Çf>\pMse5Qh}ñC(ÆFõ$|í¹—ŸþöÒß»ôµç^.iÆßzëÛöíoØ·¿aïž;…·ßºçö[÷ÑKÿÜ—ÿÜ—Ÿõ~'&^÷äª#¼0}%_sßÄ^°Õªë= %Ç ú¡€ÓÄúmÆ~oœç•yT¸°-›ÒÓ#^/çLÎÙÁ¦Ô·â#GSíïÌ»…òdž¡±Ç#-Ù39gff†ôLKÏX.רsntÔÖ«)~MseUp} ¨3õ©S'wÝ|'9NžÈþú¹ïÅËxŒéמ{ùÒå7Ä?ï;tÓƒ÷,8×à'þ¼®®ö·Þú6UÝmDô~™h|ì¹£ŽˆjîøÝo|ýÍ]"Š~?ª¹Kó>ó{Ó›ûbOÂ<™—ê-ž®:" :óä¥Ä•þÕIËÑ3¯°ì±Ñ°Ýthûγ,Ç—ù6™ç…z÷Ñ3WÈ<ž³ë õçê¤å'^!¢âóÜ“=Ë`?ó¤°¿‰Ï<ÍèC^›°-c†’äz4ÀFxüìÓŽ“'NŸ>½!· ÂÙÏÜGDîÒ¥Ëo€$ïI(†!ÔÕÕ Ê>Ýè_æÖ·×]šÿQïû°Ù¶Ÿ2Æ$LOO£ÞŠ×ÕÕUdsK= ÷µë.M‡o}{½þ³ÕW—Òî8ºzí_‰Høö¾v¶îvUFBWWê  “““Å'VD ®¿Mhý‹¡B®X"ë^#ØÖóž„- Þ ÊWj+K)O7Zÿâ­DÏ}/^Òû×Ê–ý*hØ|Õ>&Áqò6"(¹­%>'¦H,j Ý–ºï@1ʸña×vZÿ—_úçŸÿ¯_ÜÙXOD¯ÿèuÙÏD´çŽÛ±¯(3ÆÅ3Ž”`[õ$¼÷]Dô¶·½5ÏgD „÷$(ÊvèIð<ù79®Ít„ˆ–_½úÕؑ–ë±K?ÿæM·N|íÆ7Ÿýéwg=}<i±’kvHÏH¦,4ÍêfW"èÐÎ7Gì†ô)G"͵}çÙ´hœãŽå˜>±(è|ul4l7d/+•€ãî>yÁ£ŒW –^° C7p>¹âeW5 HÈb9ñ᯺ÿûM7½õ7þ­aßÞ®Ä~ûw~ë—¿üwéç¯þý¿Þq§&G+óåó Þý•¾F†ÿ¼ëì|ÿáÓ/§·áÞ|ó÷÷1‘•̆]›%=ñÁO~«ó#Éü/d¿ÚdÒ’pܾ÷¹oº5gIø+cŸþb€ãÚþ8Y-EdžªÃ2”ñž)ŸudÓ£‚¢0©—ýe6mßc:™¡Áê¤å¨#(Ó 6§b‡ CkŸ<¼©aBžfzzÁŽZ(_œtôÑh$l¨|1`Ç R¿|jF÷ýkÿþìÿ>3yÐÜÀÜòO·ý$ô|LLðÌŸÝKDüÕKÚvÌÁίú:s4³ãŠïSûýu_#ÃðWÆlÃãééó|µqñ€l“=YþåóûÔBŽ8ç_>?Lô•o•QÎõD ëéO`Y¿u@}n´S•¶™B#-V2B39CzF˜è£—‹l6?5öxF Áî‰(izÏšUÂ6O t»YŽ3¹fuN̵ɡHÝÞý´R ¡ÙÜ7¨ŽQů°׿ƒíÀy–ˆŽŽRŸÐ°–¶°¥Ÿår:tç)½Ä«¥—ÿ öȸCë v%ReäœèvHå³:i9zæ–%¢»yÆÓUG9 I|öì’BŽ#rXŸí0&á™?»÷'?¸%òµ¯ÿÕ¿“þÕF>\õ}_ñ¯kâ¡ûÃG§®ðbózê¡ûÃG'f¾5õÐØ"Ïóüˇä·ÉÏYóþtæûÃGí}ô¡±páóû‹—ÙÀß~l\H/s½÷ŸŸ¼ðÓ¬ “‰ÙÅR=úÐ# ¯g•Dò™R©EK –«0T1 N§‰]tw„ÓWS?47733ðô4rœÏ:J–eýÖ…&aú¢ÛÒâ$Û¹^ E'œSqž'¢ðH÷DTÓãìÑÏšží¦Z½ºdnÎßÞ]t/´$›áö•žH8ŽŒSŸ#˜L`q×_‡Ãáp¸y¾Ï[ ·ì‚Ž> ‡Ãáp$b7ì‘ñcE6Ä Ífï|P>çŒ|‚;9"‘p8~æ:ã æã³g—À:U}O‚Ð3 úßñ>›~ý/å?Ókt÷;é•êžOÏÊfúï>ÿà¨íî² ô“Õ½×Ð)w±ùg³zïG:†ç×^|ò;ïr}ûOé—ž¼ðÓw½™a–<ACßv`~:óÈô{¹ =ïÛ)òÉßû£¯<.^¼oüÊg©àåü[ên_ þŒèíéþìG¥Í.éQq\ø©ýèÛó´Û˜ƒÒyyþ匂åRçé==Ë·m¸)0˜ýVîuQT2ãL®A5E9“k´³†Â DÑhì:Q ZðQƒZ§n Š.ÇÖ¨shnn¨@!¼º´]‹£cÍe®O"+îîG.x ù—•¼èND«/LS½#Ù:ï›Ú Z}ašÚ‰;~ öq³w>OŒ —Þú^áÓz¹œÓâ »¸¦ÅôŸdªH!@ñABž×œ‰ïY#„FÖö¿ž§F–ˆhÅpeåêú"¢Æ]¶Ÿ¿˜N”+B ñ>JÞ0Szya·÷cص²_Õÿòc\CDDñ×W_¶}àˆ8®ígDoç_~å;íw[ˆˆÞÞòýdždÎ{3sðØPðÓÿ@¹² “–¼þ­/Yÿú:Ër\ÛÝYßRþ˜¡è‚­sLÕtÚz.vOXÔç,©ÂǽÝ‹,K,K\i²¬ßÖæ'–¥hì:QÝOæô1ÆA‡v¾Üµ1Ë W–K°:iñìoù¿¶råÊùtO¤…(×V®ìo.v¼‚lu]žq‡V«cÙc…Š•\]:PoÉ™s†Ô¸çÒã«uª%H(òuË¥Þ8ôPàÓßýÔ9fÈ~µŸ"ç—ÚrôæDš´ô¹ïÄ)jYÌþÏÿµùEÇû'~ô×½­5Eåñ/ÁPýž÷Êe(-Lªãâ–H±SI[gè:G]±ë„Ó£¡†&a\s"Jš^%Ömõ•Y­ZC\ÔäRä`èô¦±£Þâ„VñžúæQÏzZȹr0Ø#{ÎQÔ¹c„¦¯ìï©+ªl«“–>F1—_•YHÈVÝcîùÔyá_`µÿîûÿ«ýkÑßÿ5ïÛoû®]S7éµObý7¾XíÿÒkŸðÿúÈ•a;AßðD„Ïw¿wú•´ª[ëS–<JMÿáO~B<¿ö¢#1Qn^azÍ{쟽}Ò»XDÀÁó/ŸžÖàèÍ “+C‰ß»å–Œ)™¥Ê»â… V©÷$0Œ~ð\¯&MÞYt=%¢uM©ù¨ G4,ë÷L­%k,4l4áã¹Í Ü–ÉU"¢ºÃíKó™¡œdXQÐ!“°tu5Ñ:ON”ÍA–0o^AÇÑ3”.Q0çk+WÔïâ…«Kù Yb1`§ )ÇsDÇ¿çíDD ñ<÷{þUøL\âó“ýÿòÌŸÝ›1Œaóâ„[?ð§ƒ~þ[?åùý–ÏÒðûŽ SóžÿÑðûí«ý¸^Œ+¾ò‘×­ï·}ìq:ñYqÐsƼâØâOü³4Ô×È0 sðØÉ \žþ» ™òÛâ-@f4ñßqïÿîã°},HïþÛ/‘V¶T©X(¹èì‚媡¡2•¬2º:R1ƒ«ƒeýÖϲ†XÖom)²•¯29MÜ¢ÛÒÚÚªÈØ -Lðô¬µL®Õuyšçµ:N§Óiµ‰qÇû…zwbâ|ó¸9<Ø#=+GµZ­âDÙ‚­V§Óéxbÿ¸p…Þ`ßæ¨C®ÍïÐ%hûh<’zþ©lÙ¤ÁŒ}|ÿèt:ÖNífoŸÖÌQHé,ÉbdÖѦ:uêä®›ï$"ÇÉÙ_?÷½x‘wþl¡gþìÞÅ_}^äŽÐÅ×w}º>øÎ›»Ú~:X1ü‹tº˜^:2!Ïȇ­²þw(ßwf|Âþ&„ “ Ä ù;¦§§»ººÖ3Œ¡"?û´ìoG©ðn€Ç~æIÇÉ“““ÛNBÃæôéÓUß“ t Ô¨_&¢fã*}ϼˆþÝÚ”1=;BE©`¬Gu?U¼qè·ãç?ÿóäçËDt5szµD s°ó«wÔ^(ö!¬sLÁ` ¶uPêÓЇ LxO‚ÊíAhô ý üÕK¹’L[nýïIØÚ’WÕ°€m$ ¶þT…êíO¨ÆØ`› ë¡üg7mKß™Iûc¶yðE×ßäOðI럠ÞAªÚÇ$ H(!t=ÔQ0 âÈP½c¶ŸJ¾'á+ÃÏt=Ôqë­·ÿˆèá‡?&þ/Nïz¨£`oì@xF€BT¸'Aˆ Ž=JD~ÿ³ÂÿSSSDtáÂ! €c²+•[¨òo\~õ¯Y,LDSéˆÈbùãWðZŽùV'-–ÉÕäG­äsòc!A‡ÖÌœ¢ÕétZm±Y”’9T úeCžnô®»>ñ…Rß\·wÿ•ùkDuD×V^a_¡V»ºêèÚÊ•ýÍuå—Å<¶V'-G{#v¼iV±0&@9*ß“°ïw”7£¡ÙìQpÞ{ìØ±++×„Ïæf¡m/v ˆWôƒ­#¸:iÑjµZÇ?Jó :´ZËß_“L9P¿Gø°:iÑju:]2—´L‚éY¤/.1¯] c=ý <6[[[[[[Æ~oœG}((Hxõ¯í{Çœþ|äÔ€ô_¾9÷ÔXººJ«W—Ô7K>ïÚì}4 ‡Ã‘qêKµÒ½}vrD"‘ˆýÝÒ–ü|s$âùÈ"òètZ;9<]u—öéö ‘ð3,¹Å[’™\¨w'€ Ã]!‡#©þ™dPâ-øåIàãÞ«:œÀÌÌÌ쬜#!^Yq‚ÆÃJ+@¶Â·=÷½x®¯dßD¶ïw¼úƒ×žøÂ¨ð§ø¡°Ä G{W¨Ýb8Lnû «{W¨ÝRG‰;šÍ}óA»Á@DdO´þ®NZÜäˆØÅiæÑ°ÝthÁˆÝ@tmåÊ•óèž â¸cÂÍM©Lêöî§!F˜÷îO,.%;TÆ:ß“~jb‘e;œƒz†!"†Q™Ç†ÄoCÃF›Ÿ%"ÎäœÒ íõ‘«:\.²ÙüDÔØã5º'¢¤é=7jV1Ť!"žO t»YŽ3¹fõLjÆÞÞe·{‘ã{ÏvÖ„GZ¬~–eÉom¡Dʸw {b‘e‰ˆãLͼçÅÖG}ÔášlÃ>[ª@OÂý¿¯ÊóOv–ò{„ŽóÞý{ë¨nïþ++ásñ¼ÓÓ$ܧ”q06„Ó»`ë cʘ‘çC >â8S“NæÛ¸·ßægMÎ@Àibý¶~o*âeY¿u¡)àéiä¸E·¥ÅI¶s½ŠN8§âÉ‹ýÓ„Gº'¢šg†|Ö‘°4ó‹d xz4x*Ì0úÁY—‰ãÒb‰î‰h²÷cnnHˆpª H(Cßµ»3z¤ÿòÏ»§þÀùóç…Œ¤ŸÓšù’a YÌ=O¤y>ón Õ«KráBpwm®Š?ãˆçãÁ‹ÑDü k2q\ôbP 8ÎäÔQºAø<ÚYS£n ¢hìz2‡üi„ø„¨A­S7ÑrLš¹¥³F˜‘| ¹n1bY¿u o0Œ~hnÑ(AåŸn4¾ç•¾kw¿e´Y 2zòÇ u‡Ûï>Cí‡ë2>‘Á>>¯ÕêX–ãŽGòöìrhµîO}«‡È; ;ODÇÆÃ™|rv&™ *bÃÞ“p=MŸ]'ª©lœÍúmm~bÙ’2gýà¹Þåî‰ÅE·¥Ímr†ôˆ `û ûÞqÇ8½B_(**ÈŠº<‘.™Ï‰¶Ä¥Gü* IDATž äÿ4Ø#""Êœ%;i&Ÿ‹I°ž1 £oê ¿ß¿Ôë3¾¬Ukˆ¤q‚F][ɂת5ÄEw “Š–̨ÌcsfaÈ„Ï:Ò$É`k)ééF°ƒ•=&ˆtÇ{9ÎgŸ|ñ<è G4,ë_…ü,«9bPU®!.æï™Z+2¢ ZŽ¥§Õ ºLGµ ?Ũ|OBßµ»Çé•ržn;[Ùý ŒÊ<:«i±º-mn""29C CD*ó˜3f´ÙÚüDœÉ9fVU¶Ì‰üÝ–V7 ƒ’u¹#ŠN[ïÅî ·¥m"ù,#¿ðh#ÒôÚ:ULû(sêÔÉ]7ßIDŽ“'Ö™×W†ŸùØÐ¯þàµücö½ãŽ/ºþæ“Ö?AíïXö3O û›0!û]ËÂæüÃôôtWW×¶|IsÙ*¹LNNl;=~öiÇɧOŸ®dOÂïª9¡õxÇ/¨51ñÂ… ɾèú›º}¿ƒí¢u¾'*«’A‚ÙÜéõN}Ñõ7ù“Õíû³¹UR˜„mÙ-°£ƒ!N@ByÊèO˜œœD½(=H(CyïIèêêBÕ H€í©¼1 ¸7 `ƒ°¨P‚õ¼'$Àö$ô' $¤^ €§  H B‚€l“€  ú$$`L‚€4èC@©‚cx>îí7ýÞ8OD<6áķqo¿7Îór3††F£q8$÷­4óÖÖÖÖÖVq°3 'ŽÖ,FãðeîrÁsŠÂV¤pQ¥'Êb>oív‘-C‘k @A*ÕŸÀ0*u±ìbì:­Å–‰È·8"\EÔ*†)/ü˜螈jz<™™™ÙY9Gp رF?477338MÇq&g 033377tˆ=447777¤/ëŒSñÆq¾¹BÃmm¶åÞã‹*¬oþ•*&ÍÖn²ã½Ë¶¶¶áNß@ñ*>&A×ÔAD¾…0­/.²,ËúÂDDá_G“Ž$}ÙÓØÔ@ŽŽ‚ë±(5¨kшy,qÌÎ-u¤ 77nXÚ¹!éÍÈ?£W;ª“üÅõаÐÕÐï'º½%çš\'¦Ðp²[ì—Ëü2wy¤ÅêgY–õ[[×°„¥ˆý²WÖG¬>Îäí¼^°Åu¹§¥‘-@á5MNϳî^oÆÉZìØið,K‹”^†ë£Nç³â2‚P¼ÊI¨U7r-Çâ<=5™LBÌÀóñزF]KD鞈jzœ=òYG©Ÿë¿H¶€ÓIJ‹O…3.?4uËú­-ñCžÜ¬ MóóŸ9~Dò‹ƒkBÜBG BoFþ{%Jnr±~ëBSÀÓÓÈq‹nK‹“lçz5pN —dÏqo¿ÍÏšœ€ÓÄúmýÞx®üF?8ë:4\³ƒz†áùÐH÷D”:ÄþìsJxÄêgYáòY1…,5R’-@®5µú}õBÊ<ëž8Y{z4OÖº˜œYÛ‘üeÐ5u°¬_zÚ…l»P ˜„7n”:ãôôtÆ”öövª1ÑLD£±ëBÏÁlù|>ßBø¸ú"±Õχ|DÔ Ö©ˆ¢Ë±8¯«!""Ž3Y:kˆšLœÏç[ ꤇TýМ“Œ6ÿ¢ÛÒ6!9 çÉÍ5¨#¢uÑb4vç)x1Ú`©Ž\g”]GØ]]]Ò“ü§hâ½(Ê™\£5n ŠFc׉jäÏkÁ‹QŽÚðM&Î绌wvÖ”œ ¨ÏvfßjËóñØ2qœ)#*dÙÑ‘¤|î5%êPפʖgÝ“'kuQÔ·Ôéh-¶Lר®Mœt£y*A×dâ|¾åXœ×©f‡œg3ög P5„þ„2î8êêêÊÈ'1,aÑ¿0B¾Ž¦Aªiˆ¢Ë± EšT #\ aY¿­ÍO,K¥ûôCsÁøÔ@·{1qÄ©¡"rÓ%¢Žð`S,*^²)ª+›`rr²˜3NešuFns•(å„Å0úÁs½ËÝ‹‹nK›Ûä é3ℬü+*O ¯iÉëžvKpQ•]'RíŒó¬ìþŒ ”NìC({LBöaZ×ÔA~¿ßïïp2 c8¢q/.ºÝ‹ÎA""ªUkˆ‹&º’-²òMÜš”}ÔSuŽºb-V_â€U87áV%¿?· %’UŒŠŸ„ lvL–=#Ôª5é—Äsœ˜r6ÓUæ±9shØhó³>ëH“$sq¡´¡qBVtE®)­wÝó–!-CœgåCVT(á€[ù÷$Ôª9NìB­1iä¸D/$è G4,ë÷L­e͹[# /øY–ÒŸƒÄó¡aññ©Bº¶@nG;òûýb?B‘3À¶'{F'.„ç̓Ša„ O K¸?ýT³K?«è]&ŽËnd'Ÿ˜x¶ÇÆ‘ ÏšJKžkÝsW`bÜàB8£Nä*Aî,@‰*øž„„Ã䪃ð§¤Resš¸E·%ûé -m6¿tT€x´‘³¥¥µµµÍæç{Ä»óä&-‘4P)X ØQdÏÂD¿­­ÍæçLÎ1³*Ñä=Þ«¡¨ÛÒæQ÷š8NlXwÚÓÅw5´¶¶¶µÙ|¤éµÉ KšÎ¾‰ÄÇ e ךº:¢nK›81׺ç EŽ÷6rœßÖ¶ÐäëD¶ á_öY2ã®S§NîºùN"rœ<ê€Ía?ó¤°¿etð‰c„Ž…bî>šžž.u @ç—ízÆáãÞî ê=W°¾=ĽýÝÔ{nÔ¬bvòþœËãgŸvœ ™0&@9v¡ @!„þÜq¤XèíØ8è)íð²]·*U ªÏîÝ»…·{àd©pxå"@eݸqC<âð‚-‚JFU+ªªq»(b'ÆUjØpè“ÒétØ"ØíA9U c”A(ú$$Tê= <÷ö[[[[[[Æ~oœß̵àùаÑ8âÓ§ ‡x^Qµ-”Óhñ¼ð¹UBZþÜ‚­#¸}vÀm¶:P}Êý%nÍAIz Á¶“n»Í?ïàW`›«TÂÔ@÷DTÓã ÌÌÌÌÎÚÈ9²ùç0Ÿu¤êNœgrOO#ÇW~ƒ=b7 Q°Å¿Ä¢šìÕxPªšvmÜ;ÐbõQ‡3°•çí¶%~§©”_ H€í¬"cbQ"jP×1ŒÊ<6¤g’ô0ˆÇÐÔ!54ÜÜü¹á~£xˆ{ûû½ñD²|3Ê‘YÖo˜Š§Oϸ@"\‘f%Lï÷Æù¸·ßh”^ŽÊ.C¶Ðpò:Öp(󜑣œ2jÔ D<ÿcoKK¡YÄV~СuƒN§ÓéAaŠ6ùY°:iÑêt:mj–¾óìù¾Tœ‘ ™íê¤E«Õf‡«“­VX¢er•²Š¡MNÍ‘Xv‰©”’eÖCÁ’'2±LN"4‚¢Ô¨Šþu77[m±úY–eýÖùUžƒ’´G1ósÞãRâ;5qù¼ÐÁÖjÝ^]á§&Y¶Ã5(œk¤çüÛÎëí—V]®éyNbæûÀeîòöëç‘­a·Löá¤í½ÙÕXÒæÍ<»;¡K A(Åúûš:ˆeýÖ–Œ3Yx¤{"ªéqöhÈg §;šæç?süˆ†e/׈h-x‘ŽT Spƹ¹ÔÉ ©Ãé4±‹înIb"býÐÜÜÌÌLö5B!+aú¢ÛÒâ$Û¹^ E'œ‰“z®2ˆâÞ~›Ÿ59§‰õÛú½ñ"Ê){º[ð³,u¼ó¶ÒjÝÛ×G£ápø™G–ÜŸÿ¼e¾9 ?óÈR_¢A¼:i_鉄ÃáÈ8õ9‚D{düwl<Ù‘• ™­‘H$³Ë"è°“# ‡Ãág¡3ž ˜~¾9‡ÃáHÏÊÑD>ò‰ƒŽ£‰%¦2O,Nš,GÁ¤Eé[:y!_8¹”«äB Âá°ƒ¦½ø‘CQ Oá—Ø¤g˜‚¿îùy×c³.ÇqœÉ5;(÷K—?(h:. i.’-à4±ìâÄSáb¶ssæÛ¶Ñ†âùЂ8ÎÔ$÷L¦üÛî"Ùž EŪË5]¶JãÞ~«/Ñm^Ä>P…ÖbËD¯@¶x>4Ò=MöáHOs²{fI›#WæOÇ*¯RcôCsNDz‹nK›ô:Ö‚ˆÔ:u-ÇēǙ\ƒ:ñÊ]4vçãÁ‹Q¡3¢˜eè==¬ß&3eú5ÂTV5êáóhgXš¼e¯¯/Fg)]“‰ã¢ƒE•3½A`kkk³ù¹Æž¯ }thn®Ø¸‚ˆèÀÉ vÕíÝåÕGòsâÛÕ¦©~šÍÞù¬¶v®æqOWÌâ vqzj)Ddü©|dç½ææÌ›¥’‹+¡äÁy¯¹G˜©«'GÉW¯.íß[G‰4ø©CÑ¿ÄsƒºŠüº ”ää?.‰i,5BÁÈ· \XÍÌ.—”rx©Þø¡À¶³tÖ$N¾…Pîé²U*d.v›g¨öJNü ,îh‡knHŸÿ\,ÛK&·g–³922Ï.Æé¶ýþŒ ¶^Ÿk¤šnéÍøy³¬ßÖfó³¬ô$'9‰&Ž&aº‹vH/ ˜QNM§­§‘óY¦Ö$猸·ßhl²*ç ™« ×cÑô E—SzHM\/3«J>Ø%ÁYŸ×V®\yâá~Ÿ¹KédKÜäS\ú’¯³`²™à÷ eÿ+ðëÎsPÚÈF^iÇÌí¨bÛN®J³2ßn¿§Ø¾ÏU £<×ÛÈqì¢ÛÒÖV(.msäÉ|§íÞxã2(‚0&¡"ï_dUç¨+ÖbõEc׉j¨V­!.šÖ›q!Ãè›:Èï÷/Œ¯£i(‘¬ðŒù 0áôh¨¡‰ˆçãSΉ(iz=–X·ÕWÂÚÈ”!;Iu­‚6ìžúæQOžQÎdX´ôÑx$l€ùÒï©?P‘’l´Šýº³J–(X™ÇÌ*•:q„õú Úv²Uš•ùv£;Þ«ñ»ýž©ãz³*×yQ™ÇæÌ¡a£ÍÏú¬#M³r=k’=³¤Í!—yÁÓñ6„žPŠõ÷' ''nêÕ¨k‰Fe8¢aY¿'ï5´Zµ†ˆü~¿ØPäŒy®Ch¢ÑhÚe ùÞáü§öüe,„k­I¨(O¥GbÕn_š—¹Ÿéêjþ¹\[¹r qÐêÕ¥Ôtoj$tê~"ÙÄu{÷{‹XbÁ‚šÍ^÷ä*­Nºeî`J¦™OŒ_vcL”÷ó/ôëŽ^˱µJBW˜+kj \hx8Äó•:2ËV©01}‹§öíQÉBßWtÂéóù÷+Ý ËÄqéþœ{f©›Cšyv10p`3TjL œ--­­­‰›zG;…£€Ê<æ4q‹nKžgÕŽ4rÇ5J4Å̘ç:Ĩ«#uzvu°¬ßÚâYÖPžçd+X!ßÖÖfós&ç˜Y¥¨[×åižO<_(ùÀƒ}|ÿ™äàb¹¤L5ØÇ÷ wiíÔnööiÿHDd¿Pïž5䮿èI$2Ø/Ô»ó?¶(WÁÒÞ*¬†N§;zfÿxŽ.ƒ}œú´:ÎNí“¥*æ×Í0ªN[¯†¢Ò±XJBW˜Ë£î5q\Å»èli³ù¥£#Ös̬Ê@NeuuPÔmiž„³Ð”¸Ì\©#³l•ªÌc®ŽÄBÆá0ÕHöï·E„Üié`ÙEa¬|v%ˆÏ lk³ùHÓkë”6úsí™EnŽ\™ï´Ý›ˆ˜S§NîºùN"rœ<#2lû™'…ýM¼¿èñ³OK#¡K¡˜˜azzº«««"÷)A~Ÿ}:q”X´ØÉ!?°xKÚù戲o Z´xöâö%=â&^t:]8VÎÉ>¿Tõ'u ߦ»=χFZ¬>êØò;‚”YÕÅï½BùOŸ>1  “ʡ՞gÙ»y¦uQTôÒwže‰ˆãŽGºP#P-$€RcÖyÇl4{$bW\¡ öˆ2¯ÐY]Ûðø×!T‚ØNÄ>DUÈ¡`#/÷?a?ó$ªÇpT5‚€´ß"…n Ãà%Àá• ;¡ª$€‚~Q“ üp•8¼ ’a'T5 úE¡@ Г[oc&''Q‡° pÆ ›g=cººðXIØ 8ã‚€ÍVö˜Üa ›gØQ0&tðŘ DD»wï>à)¨ˆÐ‡€  ›0&õ€  ý §ÁÖ[ç{²ñ|h¤Åê£×ì žaÄ?›yÏ‹­úÙÌØøÍ7bB/gMç8Sö,&g`HÏd,+O€ªƒžØz›Ö‡À0ú¡¹¹™™™@Àiâ8Ž39™™™ùy—KnúÜÜža„hÁ<=糎„x>;œpÂì² 6χ†F£qxó 6DuŒI¨Q7”Öp{û­­­Ò¶»Ðšomm5ö÷÷'›õÒ&~Fs_>“¸·ßhlmm¦_æ. ½,ë·¶Œ N °MTÁ˜„ð‚Ÿe©£Iè^±[&„Gº'¢šg†|Ö‘p"«ŸeMÎÀ¬íHQËÌÊ„çC#ÝQê»;±‡g]Bˆp‡v'XŒI€­·ž1 ÓÓÓSÚÛÛ0ë·µù“á0KÜ:‚édV\cϹA]¾®¹!½Ð”_ðQƒZ§n Š.Çâ¼®†ÖbËÄqêÚD¿D4ïrsd’X¢u@}n´S•#$È®رºººJzk8‚ØzBBÙ£–»ºº2r>ˆ—Õ“—ËWð =Ç™\³M -VŸo!4¨S&‚–¥hì:Q ]E‰¨A]Szˆ’ÌDÅèÏõ.wO,.º-mî\ã¤3ªv¬ÉÉÉRgAŠ ŒI()À• ¶”îx¯Æïö{¦ŽëÍ*¢Zµ†¸hZtQú`™LˆˆQ™ÇæÌ¡a£ÍÏú¬#M³2½ʨ¨J“J± Þ“PÓiëiä¢Noœg•ሆeýž©µTãžÑ7uËú‰Á ÒéD˱µŒé2™¤‚’A—‰ãH£®M†B ê‰Ï5ªÔ{¶ è:-,»8ᜊó¼Ê<æ4q‹n‹ôÙDºã½ç·µ-4¹L\jœ„îx¯†¢nK›GÝ+ž‰ø|¤¶6›4½¶NÃ0ŒªÓ–ÈB€õ¶jN:¹ëæ;‰Èqòª6‡ýÌ“Âþ&Þ“1&AèR(&f˜žž.u ŽBd¼ñ {lâÛKŸ}ÚqòÄéÓ§Ñ“ŠPïIØ$€Rlƒ1 %^ÿ,¾ÔA@ʶ“€  2vZ‚€Â0&A@&ô' HHÀ˜ iЇ€  Æ$ HÈ„þ “€  ú$d˜ ™ÐŸ€  c$¤A‚€L“ »P Bî8R¬ééiTÂFhooG%‚€L»wï¾qãaL‚âE"TBe9sFØù$¤ABù[÷¡*Åqò*$ä$ŒIÀ%ÕªðÞÖT‚è;3¾OüÉG˘ñËóuÔ H(ý Uäп‰J ¢Ë¯ý’ˆ~ý×ðˆ­¤¨g£á†ýð+@P1“U A–SÈ[7nÜ@(öŸ¿‚íç6PÄ1×r Šƒ„]LÿPoÛŽcøl'èIEÀ˜¨â = °íàÜJþ¨Þ ¡Œ¨7@ø®å “Àó¡a£Ñhñ¼òÙPUQÈí$ìbËøWÒ¦l•ñJÛ¯¤Ó+»ïaOÎØŒÆ~oœß«¿{ H¥CÂúÛIiF?47777¤gpïû†û?¿âÊøWÒ"8Îä žžFŽóYGŠl!mn‹ªÃ5;˜gË(L‘ecýà¬k'?s—{Z¬>êp333³³6rŽ”±A׳3(§iŽ#‚Øq„1 [Ðì ×çú½q>îí7Å ub¯·?Ï<ž{û­­­2­ŸÜ™çŸQºDž´Xý,˲~kˈx-Mz]9WéI=4œ¼9ʨ„ŒÅáB]ÉA›\ÿÊYRº!k7VÆ&ÎÞ+rí ™ÓsdXªØÔ@®Ýø2w9×›ëç¶c÷ÌðS‹,ÛáJ` £2¥šÈÅÿ®³w†²AÅe·f‘{šx kð,Ëíy–"Îkìïï7ÆáËÜeÙ$@µÚüþ–õ[š„«³‹nK‹“lçz5pNÅ“'–õ_$[ÀibÙʼn§Â2§ð‘¦ÇÙ£!Ÿu$\|æyf¼H¶€§GCщ§Â•TÇqœI¸R+\K›™™¯+‡I—‘&£qo¿ÍÏšœ€ÓÄúmýÞx®Åa?\gðÞ÷üAžë  ~–¥Ž&a û˜pU5{gï9yö„¸·ßêÓôx333¹2,õÇ•g7>Ä’Ýc þÜvž-øˆãLM:™o‹ÿ]Ëî e‚Š?f[ŠßÓÂ#V?ËšœYÛ‘â÷´’æ  t›3&!Ç™\ƒ:áê,Ç™\£5•Úhìº$¥³†tM&Ž#ßBö­Ø >"jPëÔ D´£‹ü™çŸÑÒY“¸fœµÄ4ÉëÊ…ÚñàÅh¢¡k2q\ôb0×â¤Co~ÉA¯xñßôü‹¹’MÏ¿(MYj›ÛÖÖÖfós=çuiûX¡M\pO¦5¨kŠÚgŠüq»gÏ%÷sÃ}&ëù]Ë]þ¯Ä!¨Ä|ŠßÓx>[&ŽkT×8ÐÉ.%{^ì?eÀ#PaëUû»–YÖokóË @ÍÆÏÈǽÝ‹,K,K…/I_EÓ'”¸8($¤w |{æ…÷·ÎHóí™Êì=ãÉEܬf[‘›8W²¬éØgª@¶QÙ‡ ró)~O¦§Â‰Òk¦¼yA(Lu¼'A£®ÍœT«ÖÍ߀“UöŒÄóñ)çD”4½K¬Ûê+nYÍ¿"P± ˆ¦¦ŸïlÿCéŸë‰¨b›8W²¬éJØg°—1Œ¾©ƒü~ÿBxP¯¯ìïºüCÐ:òQäž¹âT(„RŸq´[KÞ Þ V¥wU3ŒÊpDò~ÏÔZ‰çþ’f¬Uk’%!Êq,#̲‰Ñ1¨rô¹càr~õ&ŸýïÏ^¾ýƳ—dT´)™k§í¹’ Ó¥;OIûLi‘Lj)²{lΟێÝ3uÇ{9ÎgG円‡C<_ú6’ßÊ:•y(+~O¢#aº0À ÔÈ*c^Ù$@UÚª1 Eºèli³ùÅû¿3¨ÌcN·è¶HÖQŒâgdU§­WCQ·¥Íh“nÐÕÁ²~k‹gYCÂ#GÂT#M“‘›°,¿­­ÍæçLÎ1³ {]EƒNößß_˜ÿû ó¹¾­ld7qÆžâù\{‚Ê<æêˆº-mâÞXñ}&k7–ßcóÿÜv FeuuPbë´¶¶.4%®Ù—´rí e‚d/E‹ßÓ„èÈok[hr™¸Ò~/ºA—©Üy õÛ?uêä®›ï$"ÇɨØö3O û›xQƘ¡K¡˜˜azzº««k#îSüç+ôô÷czz:‰üÆ­ûÞÛÚqèŽßD…Ñå×~ùßG»Ž—1ï×'ŸÊøT/ž´,4­ã—’ççV0óÇÏ>­ó—pdÛtÛ†oE;\sCú\i”³ÿl§ó;~Ê<‰Ù^~§OŸÆ˜P„ê“ çÍ7q©’ˆ|ÖªxD-M¨`(q·n4â4½çÐ+P  J{Æ‘ðȼ!l(äWÜN¿Ëyý?–\9àg8z H€KìC¨Þ§ ÂŽÞÄPÈ-¦ÔÇö ë>@#B€j 02rK 7+â¶rÀþ€ ¶íac ½‰ž„­†C`ÿ@Ûù0þ„jqùµ_¢DèI •‡1 Õå;3>T‚ÔŒÿ*$TúªîÜØ ðÆePaLêAáΜ9ƒJØ Ð“Jþ…kooÇð>€= °õÄ>Dˆð" Ù0&7(÷ IDATA@&ô' HHÀ˜ iЇ€  Æ$ HÈ„þ “ (xã2l½ª{×2z<@ùÖÓ¸BJÙ‰wïÞ}ãÆj)°ãä l5P¬7n¬§q…Û@A»2®ÐTÄ:›U`ëaL€¢ H€­‡>EÁ˜P„ŠŒIàùÐH‹ÕϦB_“30¤gŠœÑG®ÙA=Ã`sÀ‡žPŠJõ'pœÉ<=糎„x^6*6ÆaÙo$l± “P£nÄ­IÃ!^ìp`Y¿µ%-ŠˆM ´¶¶ýÞ8@$l™ “^ð³,u4b ÍÍÍÌ̈} aÒ ÎºLÇq&éýE,ë¿H¶€§GCщ§ÂØ.°caL(Bß“À²~[›Ÿˆ¸ÆžsƒºÔ5ê¢hî9Îdé¬!R7E} áÁÁ¡¹¹!l@°U*õÞåŒþ"âãÞî‰E–%–%5 Pn7‚­·¡ïIàùø”s"JšÓÄ!D@Õ`ƒß“p=%¢utb­ZCD˱µ<Ñ.‚€­#ŒI؈œF?èê`Y¿µÅ³¬!á‰Faªé´õj(ê¶´! È€1  ë“À0zÙ¡ÆŒ~hf&k²Ê<6gÿ:”š1•É! \€ = °õ6tL H€ê³Ác 4¸Ý¡‚ïI@`€ ¶‰J½'aÓBÇÉØj€ `Cˆ}U4&¡Š:=J…1  ˆ7nÝPô$€"l蘄“cÿ´c+öLÿÿƒ½ $@µÚ 1 'ÇþéìgîÛ™Uúðç.a¿ P•6nL‚!¼´ò* x“[oƒÆ$ B@UL“€@ p»(EÇ$äxþ¥¯èTMEȆG缇Á& '¶žØ‡° ‚ˆãÞ×ûÔüØëSsÜ‹Ž'^áùM^kžéküÃ?ýà㛿h€üГ[o+ßµ|ÛžZ¢«D<ùk’î¡oAèsx‘Þßo§1õ}ãð÷>œ/ÍÄcÏ‘ÚòµSƒ_è½Jw}plÂx;CD<}Þö‘©e–ãÞ×ÿô#wÑe¡7ƒ¥gÇ>DýO?r7Ãd¤¹›É,@ÿÓÜõcïúGc,+Ä9B2ìBPYèIE¨ø˜„b}ï… ËRËáw²÷>øÍçÇ¿q1»oeŸ{éð—¾ù©‚i„é1σ½_¤?ØKßÿ潯ó<}ÿËùæ«wu>Ú·—¾=öåË sïGŸþ‚㤠ýŒ4©_i²wÑå¯÷^¥÷÷>5?þ‹_úæ§!‚ØÎ6ù½Ë,ûìÄñæþÇžåú>û‰C©/nÛS›ž’ãÞ×/M'Ím{j…ÏNó-BšW¯þ„ˆç_úî,5Üþû{j‰èµk¯gÝb”'MFXöÙ1›÷uܤ·ÁÖÛ¸÷$ä‘}¯ÿ£o&îäaYâäç*&MÞ°äYbY!r¸¥ô4 sïGÇ®÷Æ–Ç?{|ã­`ƒ '¶Þ&÷!È·þùëó_½Jwuþ7—ãÊN“C];ÄPéÜ· “†˜Û?ø_¿ù|o3GD[2Þ$l’-“²ºö*5Ü~Û:ÓÈ`˜ÚMw±ì³><#* ZþÑó¤‘w×'¾`à8Ú·÷ì:€ ¶±­íO`˜{?j?Ë>;ö¡¿½¾XöÙ±=ñ _rš\n}ß—z›¹˜çÁ¾{Ê0µÍŸØKߟú›…)Ùi22žšÚ÷á#ýÇ­/Ò]ü¤ùV \€ €1 °õ6yLÃÜûà7Ÿ0{ú=ŸÿƧ2&¾3=e¡4Òœ3—rwÏóã=éK¼ýƒÿõ›¤|iÒ2ÉUr€ÊBOl=%ŒI  , “@aП “[¯RcNŽý“ðááÏ]úøG¢b¥u;ÍmoY*»q… ¶žÐ‡P‘QËg?sŸðᥕ7P±bmÀd?³Tö¼@„1 BÂz 6@mÀúaL(Æ$(z`ëUö= ûwÿ U ;ÙÒõ6òÑ“[}Š‚ ïI@ ý Ä>„ŠŒI PõЇ€  Æ$ HÈ„þ “ <÷ö[[[[[[Æ~oœ__n¡a£Ñhñ|öôV‰á¿mjO¬·Äê‡߯½ýýÞëÜeÙ:ÉS]eÔp‘3n¿M`û@€rL tOD5=žÀÌÌÌ쬜#¥¶>‹Çq&g ðô4rœÏº ªx ;†Q©ˆec׉ˆh-¶LD¾…Dþ×cÑu-{hhnnnnHÏ0›äÛ§i»l@Û Æ$(D,JD êšD“×<6¤g’ô0ˆí9±yçõögt;ˆW©[<ËY£nHŸKza;Õˆ ×¹ËùÓÓû½ñÄ5ý´R¥­χFZ¬~–eY¿µe$¹R9WS(@ˆOô$;[2[·º¦"ò-„‰h-xq‘eYÖ¿&" /ø:štb†—¹ËÙHl…©ÙžÙ2çš%{]Šn¸ËÌ(nc²Y/mâg4÷å3I¯ºŒ¸œ»$ÀÎ…þ%hê –õ[[2š§á‘¦ÇÙ£!Ÿu$œ:‹°þ‹d xz4x*œLlõ³¬É˜µ)¼Èð‚Ÿe©£é{hhnnff&»oeýÖ…¦¹¹¡‚i„é‹nK‹“lçz5pNÅy>{F?8ë2qÇ™\³ƒB,”g5…è„$Ôá fff„´Õ©U7r-Çâ<=5™LBÌÀóñزF]›J([€\UZÆ,¹ÖE†ÐãÑÑ”§JÛ¦r™ð|(£ê±‡dW$aL€’è‡æœ&ŽeÝ–6éÕô5¨uê"¡,¤ç8“¥³&Ñà[ñ<ÏÇcËÄqêÚT/üˆõÛÚÚÚl~®±çÜ .õEÖ\grIäIS£n>vÖi¢±ëyWA”5¥`Y¿u`*.{Á»ÆpD#,4¼àëhl2qùÂkÁ‹tÄPSxdWi³³¾©M`qG;\sCú\•Pü6-X“yªŽaôâXø% H@€ââa @F{Žeý¶6›Ÿe…fwn×¥÷,åoÚ&.*™UÂMMqo¿ÑØ&,%W´ˆ4yÃ’«? ÃèÏõ6r»è¶´µeöMKð/Œ,ø:štT«ÖÑr,‹6¨U›Ûü-¸¾grœB#F²f,v›æYzÁª ™0&@QFÕ9ê2q\²X«ÖHÚôs­—çãSΉ(izE¦É%{FÕiëÕPT€Qp5Ňü´µÙ|¤éµuÊÜA$ KãáO¹À&»ÅD;EÎRü&cU§¥ƒe…AÞ²3æÚ¦ºã‰ÂxÔ½ÒéÙ™ÈV]úêxŒ_ €b0§NÜuóDä8yÕ›Ã~æIa»qã†0åñ³OK#¡K¡˜˜azzº««KÈçäØ?}ü£÷ïþj`ƒaõQžG dK7vÑï¤Ðš’¶—ò{üìÓŽ“'NŸ>žPŒIP  “ |xP)‚€M‚1 Ò A@&ŒI@ ý 0&@Qv¡ `Ë }•ŠÐ;YEÚT@){óîÝ»‹yÇG1ðf@ߢøaâ²qµDÂ=7Þ@ÛDeû*o@Åé¨ü0q Q>ŒI€­‡1 Òà¹F;χ†ÆáŸ>e8Ä󨀭þyƽýýÞx±?OüxwÂáºUÂXÑÍgÿ‘.ÚhLÛ'+²+–”¾øÄTc¹ Pj-• ·"TvL(•fÙ3Ò êu  £2!gpÍlV SÖ¦<˽¶!üTw®g` ŽÕ £š›šÂqï€sÊ0Ú©ªŽýpójlÓj =  èOØ,6µg$œý÷ö'¯‹ô{ã$^A ‡C¼xíDìŽàù¸·ß(½fƒ œå©1¡‹Áxâw^¤#†š\?ÏÔ/Wò‹KÿœùÛ„j—ؾÉAÜr‡e¶~h8±IOùv•uC4v½ÒÅË¿ë–SμÄ܆C‰¥äüÕäþ¡Ÿ<f ”ZBÕcvRK¤Ó¦öHo:Ž’#N²ÍÎÎÌÌ<=4ñTòè³ZÉ<=Ëžáá…¦ÙÙ€§gÙ:"$X›rÆ,³333³.²Ž„“×W†ÐSPf”°FDDk©!÷Ï3Ÿìß&l >«“l³³Ò=!<Ò-lë¹ä±7WÒµù¢Š—_©å,/7Ù 'ÏçC#Vr+RV-!H€ª‚>„&XÈ3—þF?4fNt•Ö¨Ri5½Â±¯FÝ]¹Ã–üœ<8/’º–ˆˆtM¾\°ü¿íÝ}T\ç}àñ߽랓œ­ÑzëÀ¦Þà¥lc›±„L’żH™bÇË*ÉRš¤Q $‘C&í9ÊöhŒk§KåÐÄiJ”¬,#hâN&ˆ‘6cmÒs,IC^¥{v«Þ®³Ü»Üa˜÷7f˜aø~Àå¾<÷>Ï}îó»ÏóÌi3FQ‚#·dìÛ3Ns‡{³â{}}Ä«ë†^cXËf=<çv6TU„4vÝÎ†ÖÆb£¶7r?¬oª¢«·!nQÑußh§Cì§›L)µ}'/™¢›|:ã_±X{‹qÆ¿ÑJ̧{><µi]¥0'y9 »©-bíjuwŽ^?Ýú¥¶Ç¥ª"¢‰­Ê¿¸Ì\X%øwÊ×ãqµÖŠ„n ­¾²Z³¾ÆÊÙé²ÖÓʼnnÏ8¸7 @øû­z+^OYUq²Ee¾?»mßL¥3Ñ‹µ·X!JÌMQL§{ûkkëTÕæï¶*Ûs•/2û= Èë8ÁÚÝêî½Þô:¤Gz''¬Š®Ïõ׺“ÛM‰ÙÒà8Í4h £Q¼L—U Ïêíɽ¹{”˜-[Ü<¼¨èúœÛYVÕ•ÉÛ¾"ðF3&+wùF:[úç&»*d>sW)&†!÷˜“° U«žv -úÿZñz,þžÜëÞÅ$# ÅTY½èf´3©è]1UVË }°,d|FÂÛsÑ{ÝßÄqroî¾2c. £(ÖªçÐèu¹>:äl¨²*б0°Ú|¼¢’Á©e‘ÉKTtSHgG¾·¨‡Nõ9¸=ðèI@îч°-¦&{õt‹Ç_Ùuõºë[ëE´ò¶ögO­<=ñp˜šÎTõÕÔÙUÑ4[ïdW…Ì÷׺«&y… ¤£¸²º| $Fˆ{*еkRúkkkÅÒ~¶·¡ÅëÞä–ÜiœözWàM³Åª“+ºÎz;këìj £+ºzݵ-uƒÆ’аÕDÄæèmpº·§K^EpÁŽVt“OgDò¯XïdWÔ½E=tü-x$’­wܪø{²ý°SžzêÄmwÞ#"§NçžÀöøÜ³_2Ê[ð$„à9 Æ<æd†±±±ææfcÃgþñ#xðå‘s§Ngzož{a˜{àÆÜuÈö4ë-¨S'Ž_ùÉë"òòÈ9£5Ü^Jæ:Ÿ‚ s€pô'$~ÌI HBЇ@„cNAŽþ‚À9  @ú€pÌI HÂÑŸ@ø1'€ AAŽ9  @8ú?æ$$!èC HÂ1'€ GAàÇœ‚ } @8æ$$áèO Hü˜“@„ € Çœ‚ ý  €s€ô!$ᘓ@„£?€ ðcNA‚>‚ s€pô'$~ÌI HBЇ@„cNAŽþ‚À9  @ú€pÌI HÂÑŸ@ø1'€ AAŽ9  @8ú?æ$$!èC HÂ1'€ GAàÇœ‚ } @8æ$$áèO Hü˜“@„ € Çœ‚ ý  €s€ô!ä•Û¸ÈÆœ„7ndj‡D ØñŒþ„­82âS'ŽsI°Sú25'!ƒ=»°‘Ïœäsò Aòß“@„£?€ ðã{ò —‘{™ú\#䛂ì +¨;îwzú‘^FrF=º3Jõn¸ûx”$™¯V2û= Èýà étþâ«ßØÑç¸ÓÓ­dtXKº`Dò°T/ê9‚ Ø*ú Ò¯ý•s$ý¥š» @Ê2þ= àÈ9’G æ!Av6ú ùQ}›Â9’~€RÍÝ‚ ÌI(ØG5= ¤ Ts÷ Hý <ª9GÒ$ €s ùQ}›Ê9’~€RÍÝ‚ eô!°[kZJëëúì3:¿¥n>85íñ/^ùìAeK#wÝþµ4~ñÊgÈåÀï[Ümz甪¥—>ü¾?{5zJ‚ÓüßXË ýú¬ãP÷73•éI3MÛ÷ÉÑ¿ûì¡O|âÀ>qá+GKb¶Õž=ô‰—å}Æ&1v|àS³ßÿ”ˆhú-][Ñ×Öµ[id¯§ÛȾüµþkªª~sjæ3T¢^ŠÈtêš~]Ÿ}ö£Z 5ý–èYiû®¼ØöÄŸ]•÷}Ám”±å q¸¿Üól&lM *01’‘ñŒØæý' ``3Ã7÷©¿¯HIwoÛE¤Wó®ö¶]üm¨!´ÑÏ…|aô'p /HHñG×ÏæumM;Ðõ…ÇUõÚ¿6k¬ð«5ï‹øÐ»>XUéxemýWk3Ïú„SUUõ[Ÿ:ô´±¤·ò¡w=|ÐøéY¿µ® M‘ÒO†ÎÑ"ç_ø§ög?q¯¦½ü‹?[[ßXîOÿ;?òå¥3ÖòÂHp>ž¨ª¬ªt¸o½âϲÇFÆi¯<íÏÙª§g‚g¬füëø‹Þ_yϯ|¨ªòC/z×#S>óµ?ó¨jÞz@Óo­kkšéñ¿øÌš\0‚ Là÷_üл>´[ÿú?=ÿáÐåZœ¤Æ,™§™½ŒÞ"E)=pȬ(«¯^[Ùh°®^»øÒðððK/]^Öõh-Ú]в43|ÅØ$áNrRóD-  'w_‚2²ìuf ÙÆŸÇ_ôú‹¥÷Üñ?<÷ÓÛ-ç‚ }wÜq‡ñ #Ž 0HXÓSý1š k%¼û=š&/wæ–vkMŸ}æ‰3W÷}´÷ã÷Ê7?óÌåµõÓ}ïÑ4M{ìÔôS÷¯ËÚúwvìÒ+ß9ûñßÖ4ç§ž16 Þmø!’þÉÔ9ÞZÓoÍ~ýÌüð£<üîûD®Ž¿âõ/Ÿ}¦Ë¥ªïéu_´×jA錵¼0Òœ2åÿîgî_]DU_þÌô»?þâ‡?ëTßÓëþNïcªó“{q9P`ŒÕŒíô“|^ê]÷Ê«g>þç·´àdÿêÖìß½,šöXå Ê^ØïªúòäúÉïô>¦ª×Μ½|+îò¨IS2ƒO3{%¥{u]¼ËFk~åÊØ«7÷ì«Ü·G¼3WV"W[AQJ=´W׃‡-%ÜI®jžd @Nî¾ø5ddÙ[[/©¨Þ§ª×&¿·rkM¿åuO^•k_üº±¾÷{ãZõÃoÙ¸Ý&×O~çìÇï•W3xŽ HèC@fÞR½üëÑ–üjmæ{N¹§ø½w‹ÈâϽkëQ7¹µ®ÝºkïÝAË×cüž“7ñ¿ZóŽ|õŸŽ³®iÅþç}ªê¹ôÊ’±üç‹¢i–’âôÇZ^`éË—uM{ô¿uY=ÏL]Õ´G< ÝzàõšöÚ”;ûþÕîÚ{·ñûóOÜiåÚO½I°¨ÿ û]Ó}ÿão5-Îï^:tØò8IU2ƒO3{Yº¾¼ì‘=E%E{Däæêjh?@Â’\'W5O2 'w_Ü2zÙ»³ô1~¿r®ÿGªªª/ïŠý»KßrŽFÁËÜ9bçbNòs 8HH±åáïL_ß ì_rïo¾e]»%º&¢ªs²þoDUÅó“¥uí7$bßðgþàù«ª¨ªhúúƆþu"Ößæs}î/,x¤õ]/l,Y¸ôÊÒ{Ÿ¸K–~摲â·lŽ+X_×nÅZ^@éËúˆ?=å`dî'‘Ë‘,ú¿d+¿GOꊒ dnžfV2:cömüª(K³–DQäæêªÈíë&\!r¢<¨y’* ¹¸ûÕ1n“ûßY«}kÜó“¥õ˳Îû>xªö{Ÿ{~ì¯^zü~óÏ㨠­­§ö^P×ecÄ­¾¦ˆˆèÿ·“ª*ÿÑ|§&kzIɽ¢½ö»Ÿs}ú~ãé¥ÉZè&º¾âê}þGrß¿ü¡¥zÒX.AëHø!¶ýW\gÜúåéß5)þ??ÙüÕ×&¯,7ÙŠc¤s¤_Ïǰ?KJîy-h÷ÞýÒ¹JYß#“¯Ì}êíÆ.{ñwëÐþåÑ“zK•L%vò¤©¶²¼¤(²§¨HQt½¨hè7C>ï(´ á Ñ×ɇš'Aa02ZÉÓ2²ì­+ž_Ÿ¼·öÌýMo}Ïó§¾3ye´lü=ï>V‹æaÁCŽ0ܹǜ„‚´Tô—XkëÚ­µËƒô7šfëipm][׊ßñÎûTõÛçÿz9h“bS¹ˆ,.­.y_‘·Ýõ–]Åú=¥ŸÌœãÜ7¾z÷¾K7þÜ8©×¾wyy]«¨8"ªúíËsÚß?ÿéKªj¤3ÖòKX¾ÿÈúËsÚÚÜw/©ê=ïïÒ4ÛS«X» IDATWîÕW¯^ŒõÙD‘+(J‘¥rÿ¹yõâcIÂl[Íóööég?t¯Q·÷vküŒÞæ»/ù2ò6Y¿ëî·iš¦Ý{ðÁâuM_Çï½ÿ·‚þÔ²XCbçRžzêÄmwÞ#"§Nçr`{|îÙ/å-xBðœ#fH¦call¬¹¹ÙØðÄ™üÈüí;Ö¸Ây⹆›=YHgtîüKaÅrgãNONèúÜWß÷™ïJçÿºû?í!Ú‘=<<|ôhavÕFžZfKu¦ Àn¸û"Ï9ô£·‰ÈË#çŒL n/%|vŸ:qüäÉ“ÌI@¾`NBAÚ Ð;ý$¨¨h}][cçî+ÕY-Ü}Èg Ƚ@BáÙ Ð;ý$HEËðD‹ˆè²®s­va©ÎbàîA}lm<wú9®ÑLw%éŸøž„BEOé(ÕÜ} HÒGBa>ªwÁˆÛ~ŽëŒŠw%釘“PÀnDúJ5w€tЇPÀ&¿ó2çHú‘†‡wÑ×Ñì”RÍÝ‚ æ$j¶rޤù P¿$aG—jî>ä9¾qù‚ï] Hüî¸ãã^«$"ô!$‘Œ9 \€|ÀÄeä‹L}ÆÑnPª¶„žäsò ï\‘{™êC¸ëM?zyäG\O‚‚Œ|OÁp#ä >ã OГ€Ü ô!¤×pîÜ9®!A ÊVæ$477sP€Òž“°Åi ˆÄœä æ$$~|OA‚>‚ œ1'ë@l¢? OðéFȽ-~OB$]Ÿë¯íq©›1°Í1ÞmU²w ºîíl\PEDÓÊÛÏžn2)ä,Ø¡èI@îe©AÓlŽñññ¡¶rMsöôÏézV#„¥mh|bbbrÒ.Ž,€ »Bç$›ËüMù¹¾šššš¾¹¹¾šš>£?×WSWWWWWWÓ7g4÷G:jêêêúæüM|ßHÇ#ÿõ+ÙQSSÓ1âÓEDŸë«éñ…Ä+^ˆ”™‹EDÅÔt¦Ûª(Á; 18<ò'}Á{ötlì9þ†… (dÙš“0ïv©ª4T­vUuõ¸«¦¦º­Šâé°»T›c|ÜaS]öŽŸ¢˜O÷Ú4ÍÙÓ9âÓõ¹¾oë¥?ÿð‘j‹ª.xWDD®{-Õ•&es4‘¢X«DU]=µFsóàý-K›£Í"ΞþùÍOuõ¸«.]úãcÕU]˜ž½."×g§ecÏñ74ÒO™YœäÞVæ$Œ…-9räH =m¯w‰ˆVÞv¶«Bd^D4ÍÖÛU!"ºî›öhZCU…ˆTÙ4§szÖרhR¬]gÛ[[ëÊÛΞ®‘âÊêòÓ=ßmµ®x¥úXqØA­ÝS©±»[ë4[ïd—UQt}Îí‘2s…¹Lijèõ鯖d›ËD<Þ]—ÙiOYk±ˆ$³aÔsˆª¹¹Ùhn$`Ç0úÒžµÜÜܶ7 ´§'»oÜ#†çc„‚x¼+"&ÅÔdoŸn\Øì1(®¬¶ x½>½Ä»èV'ŒwÓ—]=æ³§‹ƒcU5ö¾iE•Ms:îù®*¯ÇˆXD’Ù0âÄ¢:wî\ª›$ /sR p£©(1[D‚㋹ÄNøf§="ªgÀ1RyºÉ¤(Š©²Ú20à]¹.ÓeUgb õ1F+yk{œþf}‰Ù"š'^¬b Ur¹\î~q6TuûWK¼aºg s/¶ù{Œv¿ªºÜóþy – ùÞÖÉñ¡6‹xZüŸST\Ym§û¼·,øm¿¿ù>טÊlL°˜K‚14z=Q°".—+Ðä† (XÏ5ÊÔ÷$$ÉÔtÆaÓ\öúz»K³9Î4™ŒÏrWMv[ÅÔtº·AU]=£>]÷G N‰ˆDQ¬]vqÔÖÖÕÕÕÛ]ZyÛÙÓF¼aba°5øsŠÂWV—kš¦•û;2‚ÒC€,a¸ro‹s")е{jª;‰…ÖîàuLMg¦6ÿ´vOlüÛ?iãS’Âhj:3Õ51a‡ OF¬mn%ô$ /dñ{2A×}£ŽUmˆìG H²d›ç$¤Äèa˜˜˜è¶òí€ Ⱦ\ÍIAòT>÷!$¹‘çs€ ?€ ðcN@^á{{ÿždý<@’¨Íò­Æ(¤ÙYUqAÞ »' /…øŽ;î¸qã—"Ÿ:qœ‹ÄwãÆ j³¼ª1 /GvJU\À÷Â.Ɇ!Š2ïªìtÔcä¸ò…‘ È=æ$ä‚ä} @¸Œ|O‚®ûF:jêêêêêêjj:F|úvž‚®ÏõÕÔôÍé¡Kúæt=¯.µ‘Κš¾9]7~¯ œ~[¼Ñ2~se©ž ® ;Gç¸NyWÝÙ.0 @.m½?a´³eÀciŸ˜˜˜œ´‹£ûïmgOÿŽ«P4Íæj+×´˜~ Àn®„­îSìÎ[ Øu25'Áë‘2s±ˆˆ¢˜šÎt[E‚z¢¼Cšë{ä‘?éë¨ ô<è¾‘ŽŽŸµxF}„«ª«§sÔº<ìʼnñÖ$xWÆòŽŸî騩 î‰LC¤¹¾þ“¾¹ðFFŒtFQl.Ñõ©­åíIÅæ²¤oØGéùlmKUUÕÕS½ñ§ž î$ ÿ=nUã¯EG;ÃzbÕŸ==ñ¶Õ¸ Ñ3Mðø¾ö}ãÏ‘‘Žàë–í:¿ðn¨W,f¾„.ü¾¶2ü×}#5#¾Í=l<Ó“yVRRÛ9´H@íœËÔœ„ªQUWOmgØco¾¿eÀcis´YÄÙÓ?ò uW]ºôÇǪ-ªº0={]D®ÏNKu¥IQn85åB‚486ua°%heQk÷ÔÔÄÄDä[cWÆò…ÁÖZ‡ØÏ¶[Ä3àð·b¥!À7Òaw©6Çø¸Ã¦ºìš1n:£™w»TUößE‰2ËsUY%á {éRïÓ“½6MÓ4[ïdW´›7z=“àaŸ¨ª1Ö™û¸Ã¦ª çç“©?§¦š  ÆÐõ¹þ–48ÆÇ'&&uf’ÿuj³ˆÇ¸nY­ó òÖxH}(òŠEÍ—È…©%•Aq¹>;íÏÀyãšžéI>+çû{\ªjsŒOÚ«©º22'ÁÚ=å°iªº0ØZüâÇí‘2s…¹LD½'¢¦Ùz»*ï2<Þ]÷ÍN{ŒÎˆd6Œ¢¢k¨­\uÙ£² }¡¸¹«bs™ñûéÆâ@jâ¦!ðÎivÚ£i¶ª ‘Š*›¦y¦g“JghëÁ^__owiåm_ïþ@÷ÔT²q€¤o®³]¹a×3Ñįjë´6 §Ûh¥Å¯ÖpaÔaý3É?ü×͸žNwÈëÿL×ù…zkĹbQûÍÂú/áô¬O×çÏ,¨ªªºÜóx¦'yëéºÏ»(šVn.‰’‚ g2ÒŸ`íž29†Õ ªê²×Û]ªüD zâúŠó²âõ4TU„Ud±7Œ¦¸ÑÞV®9{:G¯µæ}#55õƮҩLc¥aÅë ]t:ƒZþW2gšLÄ@æDÜ\¸aãÔ3ÙlÏ¥V î,Šbí:Û^®iêÂ`k}}pè•ö¹g­Î/Ô[#Ê‹š/Ñ3Ëxˆ{¼+2ïvZÚmåšæ½¾ùLOòÖ[ · ‚ä^f¿'AQL§{7ê )1[‚ê£ho¼Åj Ur÷» U+$Þ0NÄ3àðhÔuߨcÀ#–¶!‡MÓR9›„i(1[BXÌ%) Oe솬g2ÌŸ°4«Á'˜šÎLM9lšlÎ OÿܳYç¦XW,Z¾DYò·TWV4¶6ˆx¦gGÏtž• Ø™25'¡ocr’˜£Å\"¢(¦Êj‹ªº†â¾p3ê—ËèGHrÃÏok×Ùv‹ÇãÙÚˉ„i¬àž÷ŸµecBEº55úd­%šì kTH‹Þë)Ô3F;ÉØÊWz½×7êÏ2³IQVA;¨Æ´#ýç4Q$°NEW¯MÓRzvÄ­:¿pÅ»bÁùkaEUƒñ7ªU]tÿOòÖÛ 6æÓ¾‰€LËÈœ„.»8jkëêêüÃO7U€©éŒÃ¦- ¶Æù¼ˆâÊêrMóDÜ̆qÞKîmØ|–÷6¨ª«§vhÑ"q>´$RÂ4+¸ìõõv—fsœi2Qœ€¼•Ì «(¦F{»E<ÁÓ«Ö3"Rq̿չ=ÅØ~ÓŽÚz»+xÌýVªÁ|cížj+7ΟþSÝV úhúz»S,íöž1ã·¬Õù?G¹bƇG…åK¬Ì’³ñ¯®,6n†¶ò ?“~VVk/×4—½Þ]Õ›ÞMTPùòÔS'n»ó9uâ8Õ7¶Ççžý’QÞnܸ¼ü¹†GFÇB2£ÆÆÆš››Ãöƒlxî…aj ÉúJ)jŒË‘Tê½°C³ ùö’q‚'Ož¤'¹—Ù9 Ø"‚ä^¦æ$ #nã sè 'œ@.,Y@„ßrŒ8Êó@Ži ¨1¸°dÁnÈ‚ä^ !ÿ9.j .,Y°N“9 È‹›žS€üAOòÂVæ$œ;wŽ @€”Þœ„ææf.A ÍVæ$04 㘓€ÜcNAΘ“Àu H6ÑŸ@øúøž‚@„>‚ s€pô'$~ÌI HBЇ@„cN@þ¸K€¾‘»Kµ9ÆÇ6ÕeïñmÞEÆ®†Ú,â1â£`bbb|¨­\Óœ=ýi´Î£îD×çú[<ÒàŸ˜˜˜šêKªîé2Ÿ=ÝhR”„+DÅp#ä‹ôæ$Œ…-9räH2jš­µ±X¤Ê¦9N÷\WEE¼¨Ã7;íÑ´†ª ño2=ëkl,Ù•¹LÄãtÏuUl¶Å‹Íe"ž-^šˆ¨ª«§Ó „®:ßßâmì ^¹räE…­¹¹ÙÝM€c‹sš››Ã‚,¤qÅÖÒ÷xWDŠãľ‘ΖUU-Í£FîDQ¬]gÛ[[ëmŽñnk Xêtzz»7‚X+‡]1PØÎ;—ê& Ƚ­®QX` (Öªq¹\îù.«UDDæÝ.U[•UQ¢ ü±˜K¡Äl }™w]÷:Ë• »bÉH ÝèÿËØOåþûÿý]\ $¹•ñþ„û¦ÔŠ·®Ïõ×ö¸ÔÍ1x6Çx·UIãÐÆ®œÒÐ;ÙeU”Œ_+]÷v¶ x6÷|Ä ™zôÈÔ4[2)Lûtbm˜Òãï$#ù•sú\_½Ý•|Žl½Lþ|zâáWê>|eÃø—S,ígO7™”à¤éŒUÒâ¹Ý6$³‡íÎ}ùÊðŒẆŽ(U”°?©¥³w©£­°ê»ºjÔoEûÔßW´9òË×Ý¿XûuÚH Hr+ЇÙ~ÿ_Ó¯¥±UHë§§¿*në'VãFQ¬ÝSSÝÙ»dóçTUu¹ç»¬ÖtNÐZ(-ž$ó+¿[Ksý=N-G å@Y,Òº>÷Šˆª. œŸoêö—³y·3ÕÉl‘Eî¡»Cשÿvd >û XõŒ½zsÏFl°ê¿²\ T)=øä“³~ü7þÑsë·î¿ý?xƒÂ‚ —²ô= ÿç—k™{bùF;[Ôà&©KUUqõÔJÈ Ñ^éé‘àw¥VE‰ØüúhgË€Çÿ‚V÷t:Ä~ºÑ±fŒøÄ7:´Øæh›îp«h4má)¾Ù4ì»Ý%"åmC§+g;[<¡¯EÄ;Úi\дòÀò¨ ¼?ÖÊË-ÇŠ¶<…¤‘_þúF:[T5¬Ù:×Wcw©"¢ÙSÝV‰Ý-–ËÆ67ÊÜ$|šª¸ìõ®íQ™È$2n ,ååÓ=×UaUÝ72´h)×<ž-E›—4ýŒËAËuõÚøØ««þò¹w£·ÁÿÂ;°$rÃåË/Í.…lµ¹doå“KƒÛåû÷ß¼zu5ðîqxß¹ù굕X{ˆ“NEYšY. ¬üg¬¤†TQJ=´W×ã„=þM*÷*Êjp:£žWœó}¥¥fQ”¥™áñk«z¬u>ùäÑ£GŸ¨Ü+"b.M2G<8®ÿ_ü»·”½‰Ç2@€¼‘ñïIø×ÿ·ÿ'VÐ^__ß:èiè ¼²u;E¤Ì\a.‘Eo¬æ—¦ÙzÃßFß¼Ø\&"ûf§=eæâ$dt#´«‹4RŠìõõuuu55}sû÷§¼Ø\fü~º±8Ä ³km,–Š*›¦‰Ó=§ëQ¬ë>ï¢hZ¹¹DŒRcy ;Ùb~©ª«§s³õl\|M³UUˆq^žéÙ„më@.›‹¹'):¡°£ÄJd25÷ëëí‘ó¢Û<¨ovZª+Íi„ ‘E.Z+™0¸ÚðÆqë?ó]ü¡ïâoüBùå~ð/ÿÌã @®dé{~µ¦Åÿ‰Õ8sŒ;íàІŽÝ¥ª±š_I´“‚6ßhjÏËŠ×ÓPU!ÉhþüàÂÂ`k}]]]ëà‚ˆ$Ó®8ÁL¾”HðŠ×#ÁMç ±–§´“4óKQ¬]gÛË5M]l­¯ï›Óƒ’$µÌØ<…Coá(i•À°Ü7.Z’QBƒ¨ ƒçûÏ”µ6§ÐdŠ\¦¯^ÃÒGö麲zõâ… ——õàÈaöÂì’¢ÈÍÕˆ—䯰™¸K¢l[ rb'u‹bWªç'<ñÄá}EzXlìuÏÕ%E1 éñØÂi¾ùwî/9üÓáw˜¿ãŽ·êoâÓ°›1'¹—¥9 ·Ö´t7­8Önq º†FY›L"%f‹hž°¡äÉï-Êæ"Öªq¹\î~q6Tuû—G]s“6ÂÐxð|€ÏôìõÆ4šn[b1—ÄHpêo{·¾“Äù%"Š©éÌT“1¸ß˜â\!%f‹ˆ'ò¼RHyÈæI:•ðl‹‰Ì€ŠcíåΗËÕàè™ÏÚq²qõ2'ÝwøÉûŒáõÞ™+¥G”HQÑÑoî=Þ½¨hÈ͸KöÅ;läÒ%©™é›ñ§?Öy¥z¾aQM‘¥þÐêðŒ÷æêªHXoоzmöÕ›Eû,Uâœ&€ôГ€¼9 ·Öµø?q¶-n´·•kžLjOߨã–Òt“Eo¢Á>16÷oïr¹ý±ÖÜ4~ ¬50!5íGéZô^™w»TUÊÌ&E‰š`E±V5ˆªºÜóþy‰–§°“-ä×F{·«×¦iF;;°¦{Þ^–êJ“¢G7Î7ÎÑ̓Ë@ò‡N¡a#‘ÛzWV[Ä?ä){Mð,\½ÔÓà ÕóºˆÈÊò’¢»ûï܇öêºÑÒU”¢Ò½{6×ÖÆ-Ý»Çõ¼DQ––Wüûß³·´(v†FÛCi©YŒ%+W6gî&lmÇOj”È$è n®¾¾q}ö)J¬óJx¾º¾|ù¥—Âéúòå‹×ü]£D$båÚ«7÷쯴Üç4£îAv’ŒÏIHo¸Q ½ÒØÚ ª ÆPSÓ‡M[l Œ«VS£½Ý"žÁÖúø#­E$rs£ÝU®iþa÷q×ÜxÔùg#„5ÞÊ“I¿yÏo O8F<Ò´£ÖÿùS/¢&¸âX{¹¦¹ìõîªÞà1-±–§´“ôòK×çújjŒ±øN±´Ûý e¬é²××Û]šÍq¦ÉHª‘¹Cæö8G75ém𣿌%èäÅJä¶QSÓ™©Xƒ…¶R¢Þ)[¿z©*=øäá}E«W/_˜] þô¡Ë/½4<<|á¬Wö쯴-Ý¢ûWîÕõ£¶D‹î;|È|óêÅ ŒM–f/û?|_‚ë‘{(¹oÿ¹yõâ…«Eû÷&}Á&5¸©m©ô"ÖšK³Ãf—‚§@Ä:¯TÏׄTÊìð°?Šö©·„…RÆôcôWð%š‰¼ùwk„ÝMyê©·Ýyˆœ:qœËíñ¹g¿d”7ãë"¿kÙˆ’€466ÖÜÜùUÍϽ0|¤áñÛ:¿™ñ1NòD2ƒ³1б°êÌ}ÿço~GæÃï‹?ô=ô›o¦Ø Äj/E­O8~òäIæ$ ÷²4'aÌùM®-°Ëã.¤‡ yÁ˜“L€›ü¹ªÀ.¯U¸§lÓwÈ=æ$ _d|NÒCOr/ЇÀ›?@N\ü¡‹$ ¿diNÉ`z1‰áFÈ Ùøž$`gcNAàèC`Ä@>`Nro‹sÎ;Ç5 H@¡Iû{š››¹z (Léõ'dðû×``Nr9  @>×€ Ç÷$$áèO Hü˜“@„  ¯ÜFC ù Ve gA‚1môÔ‰ã\äOØ@™ÈY@; ù†2 ã á_þ×ÿäSµôj.IDATB ¯P&rå7þ/—„¸íÒÔ¥×WW¹DdnnþÿF¤ 9IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webtest/http-request1.png0000644000175000017500000012760012032647205025265 0ustar ebourgebourg‰PNG  IHDRŒ¥&Gà<sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ7@¾¸à IDATxÚìÝ}|W/þïLÃCKäR VµÄmŒ(ån) ê°Id«¾B„Öºl~¾à+¶”®¯cÿÖÞnzU‰.¿¥XU6íµYÛZmé–Õð†¾ä” f]ù)P-‘jX²]átRÅ‘yÐB/»íÌï‘ÆzI£§X’?ï—_y)£™33gΜ™ïœsFÌíü`ûÞ½- n¹½ýö}ìcÈ ¨’;w"”ÛBDÓ Ï!# îüù=òyüId@mÁÝ&€bßYz~ rê1<Û¶mÛåË—‘ÐxÖƒ´‘#÷Vcç_X%¢77#¯¡"ÇÛ¶m›’@yuçµ_œg«ºDhPqÑ—’€  ŽT1H#4€ÊÊrvùòe BiŠ"´Ï?üâç»ï¾ûî»ïFÌU"QC>‚´ÚO§NLÚ´Z­uêBŽ´W§¬É¥V§¬mÉ$V§¬Ö©‹«SÖ¶6­V›šnÖÆd¯ñðIöäá¶´dSY²jµZ­VÛÖ6òìùe™Ê¹ÒÄffÎꔵ­­-gšcÒ`Sib„öøƒûpŸô_åο°ú_š®–þû_š®V6 Í7C#‘Hdir×1ÇTQ#ØB#‡ir)‰ŒÐŒO~–æ½]çBDD«ÏÌ<ϲç.¬ŠŸ…;Z‚Ž™®SK‘§î;ç‘Ö[pcôޥɻø»&-c«S™‰„¼ÇvG"‘HdiÉñÁÌù‹Í½ci)‰,-õ_ÿÊwØA#KKK§vz6qœ†1iÐøAZ¶§¿ÏøË3óüÓߺí}{¤ÿÞö¾=óOKÁJ,}=ÍDDú–³ç/£-ø,ôDDÍ=})pkk“²BëQÚê33tßø}4óÌ*­>3C]{_;öì£wjµw>zv}½Ù“™`º‹Y‰è“4˜Þ:—Wʤ–7-uƒ¾”œôö4Qó»6e –ÚÐÐãCÎ1iûöl=}æ¥{:-ý÷Ž?P)L4W£ÙùV¯ì[ëKKŽÔ Í{»Î9¦B]3Ô5¢ßKÇ3!š¡®Ïï ‘e±;bJÃ%º%NYûr.¸cç­‰eC#yfkÞÛE>J]{›S>ï ýKrÕ6&_'—5÷x'wó*ë‹èKö””]é®›Qh3aLlŠ MŒÓ2>(ŒÐþãâŽÿ¸¸ãŸ?ODÿôøyñOœX(N³ÐB›V«m;L“‰)½c©ïüÁ¶¶6LZrG_=#GÎnÓjµžGrÏFÍ{»náoéÚ›è!È'?ë“t¸-£çaÖÆÈfŽI’^’•ˆÔ¡q0™DÚü²9ÐEŽ+mÞÛunP«mk[ ‹ïpÛÈwP~“0& sÿýG¶\w¹7ûk±»£øî%š•ѯ~ó{"rüMçÈÿšÍ˜­çÏ4W¶ÓcÁ ú s{L,«âÏ£I¿“&£5t€€ztôèÑ ÿ˜õüÓß"Ú!FhD”¡%çùCÄiP¥I„ðX‡ÍOf×ÜŽa²§?<{û³p¬|S3Ï› ÎàšÒRd¬Ã–1ßÚw|¼[•²ÒÔU+œ[Ùäþã⎂óœÿá‘ï9èhF+^}Ic—=½c‘"fœŽ Bmî‹ „G ƒa4\«[P ´¤}ì#»”¿ÔQ‰—¯ú2*®âïxdÝðüüp2‘mvÛSh1r[ÕÄéq߀ճLþ`xH«“kKYˆû{ÝÑhì‘ Ç`Ó¨pKÚ»g'½õÍoxë›ßðòU?Èþ#¢Oÿé!ä;TJ}ýNZS·ÕÄóŠçV·‘F½=eš÷  †Ñpêì‚÷ $¿ðÅÅY £aAmòÊž˜'ñðhbzâ[ÃèþŒØ?“e9»Ñˆö4€Z ÒÄafÿ힯ßqñõ;.þäwÏgÿ‰¤A¥ÔÑ{!>=hãX6#îÊ%2fãXÖl]“&¶­-'Ç­±œ] ¥!<ÖÑëYN~µì±­Òm^îÄã;Ç¢°\~qˆ}í¼ùãD¤þþþÊv•%ŽIËxÇ£¢G,g7rÙS‰¯ä楯…åùÖ~{Îw¤ÎÌóšþããÕúœ‘îe–míóNXTBxÔh礞“bD—Ú[²ØÈ*WâZŠýÄ“)£3'éæ\$×Ïj(H+YìüOÎ=áÇ—~Áó2=¦¶¾ùš›4;nÝ}Ȫø˜´*)êmfWZ„&a1X²v7iÛM¼ßO+±5Ò6Åc+Äó­ýÇ׃%íËä·ù•mXÞÄ·«5Ä.sv#Ç›œóÃ:”7€ÆÒ_ÿç_úEž^úÍï¾÷Ýåï}wùÛßfüèpØ@"µ¡•¡¥¶;I±ÊX‡ÒÀ¦äµœYKkÓƒ½nÛ :½%2ÚåX–øu]ŠE‰Hü\:ÙÄFÕ=~œ{=Ë,ËÙ;¹âöê2H#¢§ƒSâ‡Û4{³¿ý^ôñƒõÐŽ¤ª—6´¢0Œª{Üë°¹{ÇÔéáÏ·ögEnÉv¬ÄÖH§¸‹ñÚ´—KïÛ)›¸¸=–‰yËú¹q¶Aõññî&”?€*¨‰—?ú‡?ÿèÛ·î¼æ×.ÿè{ß‹>“ñ÷¦k¶þÑG?ùðçE3d«¯ßIS§é†Ž÷kÈoKþNÃèÚÍIJËî‘ì™3¾’ýil–å‚ñÛ¸oÀлH­ÉWMæIÏÔª£=3s6_¸5B)¨gõõ;iEÇiºá€ÓÄrvÀ/.ŒÊ2.6dÉÎéí“ZÆx“sn¨}ý[FÕmï_ÿ–7¹æ2{+æIOD<—Â4wd/Å(­ atÃóóÃʦ皹´ÔŠND7<;;¬$ÍäÀ±Açù–ˆˆ2“Ê‘x¾½Kj/H#´ÇÜGD÷q‡Òeû»—‰dº5~í+OiÞ£‘³è¿EsitÀÚåñ†zúÕ©ùVÃyßB"†rÌtZòÒ”Õ1µªïq,MÒzOÅÌo›‰ˆ|‡GN--)ûíí÷Ø®ñ%¯>5j+fh$s(ZÉ¿“°Y‚´lO?ž1%×ï\¿éšk_8·"~¾qGÚ£IQYžð,¡yo×9oˆv\XiÙÛCçS/ž?{öäÚG‰xþ®‹Dé¡—ì·–IoO³Ò½Ô;&´Zm²ÑLIšÙ‹@)rL H«˜}{¶ž>óÒ=–þ›+$“%¾)ä?_É÷‚BqZóÞ®sÞï¹k]L™nÉ YÊ•ôŽHÄ:em³^8• Ä ¥)³¡œßIklEu¶€ÚQ•‡|âŽÝûöl•"´¢¤ýöw/gO|&xú>~gQÛм·ëœï\×ÞÔ°GÀâ[ÈùžüßfÌyîBòÍ$«Sß­;w¤¬¹Ç;¹ë˜7TDš©‹@qÄ64ä4ŒjuwüÄ»OŸ9-~(jÁ<Ý‹ÓÜã]êÉŒ®“ mmZ–M¾¥Cœ0"¾±#ëÛÜQš£Oœ“/üèI 0k;|’e‰è®Éˆ^~dbaL H«®ŒîŽÏOïmßW`™Õ çnÝiâ%}fHµ>EïXZrd|¹D9¾ÍNŠr¦£tbFš²‹@Ñ0& [#Û;ÿñƒlwÇŒyÒ…FÚÚ´w>º«#º6£Æþ4Ø„j¢%-vþ'§g"âçÔîŽ"©íôLd_—V½3ãýhŒÚÔІÒ”'M 1BknÞ.þWöíŽ_ûÊS׿­ùôLäö‡ R•0&mffù¥§§'ÏíkM´¤íëÒžž‰\ÿ¶f"úé/V_8—ÖãñÂÅ'"ñÛ}]ZQÈVB{ZOOò ®¼©©©ü3ÔD¦Þù1ú’Bµ\±\V_GØìÊù´ !$~<`³Qr×Z+ow£/©+ãÓßõû×°iÕû˜´‘#÷â lž{Wé½wy°È)¨wâ˜4äÔ8…©¶4Ò>?÷Ýüæ×/ßÔº“ˆ~úãŸÊ~&¢7¼å£ÁàÐ0ª%m÷ûßGD×^{MžÏˆÐ ~' ¤Õïc_{Â󫱟¬Æ~²òÂ…“Or¯þçkŸ¯Þz½ûË—~úyƒÛÐJ[V£ÃhXHŸ2„+»¡‘¶‘P)_c›6©ªk€b5BwGë½ô„ç·n½æ¥—~×ró?:{ó[ÞôÊ+¿OýüÄWÿý†›4¹oX,9ô)ÿÝ¿t`±íðI6-ˆ}íµÜÎ|çŸÓ'òü]é3ß5‘Ò" äüê [ßž¿åÈ)oOs¾yµƒ'yþ®É%…Û›‘‡WT ¿“–ÊokŸÒ1Ì&;÷-‰Â¸:e=8ZÚ¸‚ éíÅ!¯œ˜Õzç~?¸üÿ|fê¿ùÙ¿½ý_‚?ûÊÿùWi†§þìýOýÙû ¦ÃÞ±´‰D"‘ñ»ø»Æ#‘H$ò½ïMLdM\Zr|0qË›øÆw8£e"ÏWÕ‹ÇdWdInsßùƒÖ©ÕÜ‹¦ñHd©”÷j7É+§=e9Ûàt<½õLldëL[ÛĉÃh8<*NðÅ…¸oÀ`0|q!¹lÜ7`èìì4F°¾T‰ t‰V¯¶õŒ ´„B#)í`‰yR²~uÊš±TÍ7îJ[(Ñ–R>IY§¦R®âô`iOýÙûö÷/}{-5ËãU5_î¯?`QòUòn8å7qŸr+œð¤|ÎZvuÊ*ÞX·µ|'Ñbvòp¾»g½ãT׌#yž–`ÆâR„ Ý´çØ*"!kÕ©V¥[ù²Ç¤™N»ì鋤EéŒnx~~vv6àíkåy¿mL ±X–³ÛÅéËk‡“ìÇû5u;‘^d¬×Õô9û4ä·¥'[RˆvøÜ‘S‘HäÔ‘s)1¾ïðaD"OÝwÎóùÏ[,-EžºOšcuÊq¾o)‰,MR'«ÎYèÅU9hD| ñÔ}tÌ¢õ©‘Hd„f|ëåWqú°Ù‚´Œf±ÿx '}6½î³©Ÿoyñ>ûÞþTªÛþüdV2¾Ai€ŽvÐWέßòf}3åñ%¾ZrÌtZŠq_hI~N’gfhçŽä£õ¥dÖØæ ‘ÄÁÑ;¤>°)I]8·ëÆfJl@é@‰jwLÚÓßçúJúk)Bkeí¿þµ²DDçõgÏ_8K "jÝbÿÍ3‰éD”#B£õñ9b¸Ô¶Püöúµ'‰ˆ¿å¾S^½ìW·Ü÷Ô’C¼¾xþìÙ“wj%âù».5ShÁg9àHÞ ˳ÙËê“ Z­¶ÔoÙ fF…փǞgYž¿ë@ö·ù”¹aJ•9&ˆšºí}‹½nÛ ú¸Uš(Ä}ƒ½îe–%–%¾È‡,g7rIJb䦠éÖ’žI a"pÊúœyL‰ˆ§»^£´ÞäÀÅÄRÏŸ¥©„ô á‚4)ˣ؎‹w>ó½?¯ÒöZrG"âW¡ë3«=ÒÛ:,eD.YËꑈuÊÚf½ÿ} ©wã ¾[wZ oL¢ÍÛ\RìZ†•¤ÌßIcU÷¸+Öas;½ji'„ø´Ó%M¿×ëµù‹Hl»ZC|ÔäÚÈ—‘ìØy«eÜ[l[²¦É¥ˆ¾`”XZú H}ww¼íÏOŠÕ_Ý|4°:°ýƒ«|o{Çë{¶L_÷7/þI 6p¹å¯«óâŸp¯ÛÐÕ;FÈ‘½“ÝElÇÎ[SB#‡Sº;ž»°š¸{NNÌÕ½¬¹Ç;¹+9ލ`ˆ6r8Ù‹®pµì†šì­Ê£¨ +Z¥~'atCÇû5Ñh41áR,JD-ꦢã=ý~ ËrÞé5qJy/ѰøÄn­)Ýe çùÞ®sÅ÷A¼xþì­‰NŒ«Îe•·Õ)¯¬ô`iëx^à‰x^¸ýmDD ÿÑÛþ]üL|âócÿªðíŽUÑÜã=° ¾€Cé/Çkî9rîp›V«õì(»/½ÿþ#[®»‰ˆFŽÜ›ýõÓß+évXqE­÷©?{ÿò«Ÿ×í¿!¼øbë–Ïì ½÷ºãϧçõÿš:]š?÷È´±‘¿9VûÇËjê ´Ô1ibÌ–¿amff¦§§§œalñÈãOÊžw5juÊê½ʼ•ššÊs/zôèÑy»c“ú9":`X%¢ï[n&¢ßÛÚ3¦×I„¥¨`{d=2H¶˜<߇  ú¶ÔõÖKß?ù›øÉß$?Ÿ!¢ ™Óë'BÓ;–p+¬”Ô†Væ˜4È]—Èi ûvG´¡5ž2ßëX#Ûã ¤‰A—Øžvçÿùn®Ù Îu­üßIÛØ-¯§ai€ M‰‚ѳ†W¿íiõ[‚´r?–»ðËŸÿöê7¿¶ëÞ¶[¯ÙºõZñ«{:]¿ûõøƒûP‚1& ¤Õ™ß¾ü»µõ“Ø+¿…^þÅU?ûѯ޲-v›î=Ò ûÈ®zܯ'¿qÅ—êL@¶±wïb,þü÷.}ëë±ß¿ÂK¿3Ão$âÈ.ä4†FnIûÛcßøõûÒK¿{ã–·¾|ÕˆèÚ×ÞG ÿò/qÜ ÚÓAZø“#ùË?9õ†«Þ¼¡‘À^½•Ço“–!È€ºÖÈÝÇŽþíõ·þœaØk_{_"Bc„·¾ý »v¿9u6Axnúî‰eAýo¥ÂsÓw›÷ÿ¦Ï (|߀Ә-i‚ ¸>÷…·¿ãmÆ}?×ýòé¿ÿ©8ýƒ];nÐ\»óæ´]]ÿó‹‡[F8;a¼åï·2 Š`ùê÷wÒ6E&‚ëscMÛßñ‡ûoÿùÏ.¿ñW¿gßkÿvúª½ÞùÁ®¶lÙRLRÏüÔgŸcYž7~òï·2Œ þÓñ"":çý, cäVF8;a÷.%#±™¿î/_ÔŸüÔgí$~-[ÛZFÖž}ìÛïs}ãÑ©¿yìÔÏß{ð:Ù5þlõÇÒw³»ßý„¿[ ÌFNýÜqð:†9çýì{¾8ÒÙôóÙû¥wÝB¤4ÍͪÌ1iBÜ7ØëŽ’ÙÒ1Œ ħÇÂãCºZÊd1Œô“Ù5W[›+H{úûñ\_Ýñª\_ýåƒuã»vܾ÷?ÿéå­oÞzáG›¶¿­Y­²}a“ïî6Ñ‘mY!ñÃóßîºÅJDDïÕëFCËÖ¶]DD]Ÿ´¶-¥|Äz~ù9ûGÿ‰ˆç¿ ºN.äoüÔ}Ž6Jivãyã-Dož{þÛ]†¿{'½­ãè¦B ÒÜìÊ|¯cä„{™eÍÎDðÃ0*ËİômxÔ`çX"âMÎùa]Z¼ä"»#¢Ö>ï¸>4ØëŽ’Fl…S2 B|z°×³Ìò¼IŒ¾¤ûûW<že±Y¯»)"6ô±ÄÙ:(1gÜ7Øë^N´þ™ž½ýÙÎÄ(Έ2€ ­ò„ay|îÁc¯ûµæöö÷þì'¿|Ë[Þò£^|Wëö›nÞùº×½î nûz¼—ÿ«õ&²·/‰aaIiBécÒ!ôO¦v­Ì·q߀cMÎÀíöµwÂ’(–,ËÙ‚Î9¯z°×½ì±v,ö?Þïìu»Óúñî&ó¨&2ÖëŽjú]ûmnÛX»Š .’7à öºÝ'"–aÝМ‹RZÒ!<–Òú'îȳ(¢qÞîøÐ_<²å×ïîì~ïÜ?ƶnÝzi5¾cç;šwl/jZ*†Ù}ˇfžÿW""ú×PøCú‚aRÚ"мëíoOý¯êú‰ÅÏy?.1Íͨâïx„xh1Êó¦v-‘¶ÝÄóÑÅP<ùÎOž7¹†´Ô¤n?w75©[ˆ(»”L!ÿJŸ´¶µÈ…ÞãÏ0Mï~ÿþáÓµ*DšùûOMž£wÞ~ï§<úÇ=ç·ZW|š›ô³`•þ´K±hú„”¬b§ËÙvŽe‹JœatCÇû[yž]öXÆÑ0Š@Ci„‡|qâ+׿QwëW-=sñª-W½ôëßÞyï»›T×_}õÕÊnyww?±[ö¿ ³»û ·üÌÙä‘]‹èºÎGG:ÅÝŸ$"¢ë?ÚÿÄG‰H8;aß¹ãCyÓ*oLÃèÚÍÄq\02¤Óe|¹]­!JÓ4êí•Üðíj ñQSê»@”àŒÊ21o‡Ìùmcíx¡@i„–´«~{ãîÝðƒŽoyÝU¿ùÕo?r÷MozÓ¯¹æšºÛ‘Ô¼¶Ò'x‘£"☴ҖÕêoåy¿mÐODHáÑѰ 0ŒJ¿_ò\0B r,«Ù¯WUîpHé{§×FtD+±ôyµC.Ï“F­£ƒÁ0FC+@ýk„–´µ ¿{Ž^dYö­7þê¶NUÓöwlݺµw-f%+¹=QYÆçÔc6Õè!""“30Ì0D¤²L8c»ÝÈñ&§ôÖJI¤ï±vzH|Á£6wD×mï_ìu{¬Fwò]މv#M¿½[ÅDPsÿýG¶\w¹7ûë§¿/íE‹WÒçûž~ý5|Ó{~«yßÎÛvÿ׫®ºJù²÷˜I-XZòþDäÔjÛ4âíi¿tÌtZФ+)5H¿‚ë†ç燉!<Öaó“Ù5·~‘Ý3??|Ń“ìÍ(¼TxÔhçZû½Ã…‘ö—ˆr…9©óÔæ!;Ôïµ&g`X‡Û¡êi7¿û†IzžþJQT–¥õx—zd>'b¯%Gf4¦—ÿ¯Þ±´DDD™‹d§“šHÆg%³Á«ø˜4m»™8ÎŒ ëtk¡Åe–e‰ F†t:Šýæö!)âò,³í)j¯;Jfg 0;;+{ŽŒÙ8–5·kndÑ‘ªÜäÚS›_Óç]Ÿ3Ͼ'n~¼}ŠJ7?⾘œ9ûþüÛ m7³,—z¢Ê·¤¾xË$=_ÊÛJ"ŽIÛÓŠ233“1¥««‹šôû5îh4vIl9›k'¿ßïF©i¿½‰!ôQ‹Z«n!Š®Äâ‚¶‰H|&dín"j7ñ~¿ÔI2I7<ï$ƒ[öXî”Z;Oj®!-5©[ˆ–£±K‚@¡Åh‹µI¬é .(»u§§§'õB/WLºP¶Ey“k¼»‰"-DÑhìQ“üv-´åy1†j7ñ~ÿb(ÞÝÝTlp8¨>>Þ=tBâ±âyS2F+´‘%G§) äÞS"³ºi}Ûòì{òæGÝBõÃCZ-­ÅVˆç[ÕÛ71Ñ<™ m7ñ~ÿJ,.hU ³Iî[2Êó ÒÊ“Pš’Ǥõôôd¤“–ÆÇÈon¢í1 Qt%"q@šøôŠe9»‘#–¥bêJÝð|`HìW¨¡šHAjÚDÔjE¥GlŠ6#cêÎÔÔ”’+xeWšu…‡-¤(æ€atCÇûWzÝËË«Ñ#7 ++ýŠÊ³…÷´è}Oâ¡(¢‰·l†ûÙò\Ý í­jþ ®/ý©íï~™:O:•1Û\_j¾ù-¨q "Ê“–]­‹ÃÒ8Ž3;‡†Ñï×x–—=že³sˆˆˆ¶«5ÄGÓºnËô;HtÌ®%UÝã®X‡ÍŸ¨à §&v•ä¸DܘL¬h3*~ѨU»ÆÉ^a·«5éMB9.ô9Ã$•ebÞ"ŽìòËŒÂÊJ¿âqZÖhî)•»ïy·!-AÜ·¬?&¨`ZKwóÍoù‚ëKùÿšo~‹ÅÒ¬‡JUГF‰aiR—ƒ&ýþVžO´Ú1ŒJ¿_òœwz-kÉ•ØQ$ȱ,µ¨S;3BxTz}¿8ƒF½½@jµ#q'µ£)\Š $ä®°ÒÄ`$q×ì׫F|*Þˆ±Ò/Ý+±ô«´vÈeâùì 'Ñ‘GL¿šR7 Ïž¦ny®}ωqøÁHFžÈe‚Ü]PÅ»;"ú‚+¯ä1i9‰ÃÒ(Y&F©­·Ú«,ΘÁî±vzo=’z .:;¯HJÙÃè†ì±ÁŽŽÄZû¤ÞØyRKÝ¢Vw4š^©+YŠ•}…Õ1Lb¢ÝÈñ&ç„E•9õkünÕØÚ×oâÝþd`Ómï_ìu‹Ñ¥÷=Oš~»Ì°4íËä·ùƒ‘j\Î¥×-fl@®=uÅ v«Ñ#½Ý1Ǿç õ·úÝœÝHN—ÉoóçÞ†pÐÏófna²cÝûï?²åº›ˆhäȽȨ}Žc‰e5#*“Ƥ‰ kJz?ÎÌÌ(¸ (ûzݨWpñ õÔ¼`Ôâ¾^7eýjѦ+ÏÙŽ=Êâ̇º¶mÛ6ñC¥~' `C0*Ëøœ«Å}"\üKöë/"Â'Ü-®¹Í¡)‡ ê[UƤlHœÆè†7Ç/nž=E›”8& ùÒjÚÓA@MÀ˜4@PCІÒj Ƥ@#Ù‚,€ ¶§¡ÇcÍBk'Ô>\Dj­ºnÔ#‚LFV#HƒÆ·mÛ6ñ×qq­qâOԦ˗/KT×8"Èddõ†g5º;BÝ_VÑJeÂ¥G™ 5•ÕÒ îaL4iÐО cÒ ¾UjLš ħ{=Ë,ñ|kÿñq‹Š¹b{!á±¹æ†uLÊ”`ûÜŽaj'·Åíô“Ù57¤¥ÈX‡c×ô˜œiûê‘XËU¼f«R%ŸZ'×ÔÅbÃÝ•¿Žã,€ŠCKÔ·Jµ¡Möº£š>o`vvvnÎNα° \á}ñÛ6`¥eây“3xûZy¾· R5› „G ƒa4×ü¨$«WÄ}ƒ6?™¼Ž,õwœ&\ߤ”¦"cÒbQ"jQ71ŒÊ21,>•„¸oÀÐÙÙ)Õ¹ëUpxôÀ‡F À/.ˆ‰_<1[¾ekp–ålƒÓñôéâRI£á̤Ä龸÷ Ö7Fv²…G‰FÙטÛ)£IÝB$?ñut4ÆÅ @¬ÙÖ–Øè°q,˲œ­CþŽ6O%/ÖœòŸóÖó‰KØô`gggþú?ckmKˆ"'ÜË,kv%ZS¯ãùÏ7šu¹¦ç¹¤J‰g”3ü™ÑÆÊä\™ ËD§—Þìl,êpÈ&ž½#HƒFS~{Z»™X–³u f\ù"c½î¨¦ÏÙ§!¿m,’v­ ¶/,¯ÓÄóÅìMÁmخ֤OШ·£<ÈU§©-³+ù KlX‰× :µ~!ŽTïØÉfiVâF{¨_òœ7ñPA¾\1*ËÄü¼ÓÄSž·ã¤”Ì¢‡\⛥x#HƒFP~{Úhò…‰Aõv"†Qé÷§VOù®ÞÇIíh Ìu±:Þ¯‰F“›.¥¾Ô¤¨[üÛ ÍŒ$öZ“PWšF¹ ›œâÚR¼¬ÄÖŠ¨äÅC\*2f+¡ÇDbâÅ«E­b˜‚õãU×ÚCý­<ï·­,ކ¡RW:Ù,'¦ñõ2Й,¶ýFÝN_\È_®´C.ϧ]9Kf±‡#5ñìÍÀ‹CjQ¥Æ¤ ÙÉÙÑÑÙÙ™„0Þ-Ö*Ë„ÓÄ/{¬yޑؤßßÊó<ßšZ3)Y0Ïs£q—yýrî2³,gëð®h(Ï{òÜqÎn4Ú9Þ䜰¨P¢rU§ùkK†QuÛû5MÛ\°’ q)¯º¿È ‹Î£KWÎ5¨.i•e|Îe¦¨ÇjßlO¼º£RW:Ù,UY&\æÄJ †Ñ5¥”ßOâ E·Õ̲Ëâ»j²3AzµÑh÷“¦ßÞtå*™ G®Ä7Iñfî¿ÿÈ–ën"¢‘#÷¢†Úç8ö˜XVÅß°&¢G25B›Ô”Äl333===R:P=<þ$j¨ý‹ ®µS]§‘ìëu]_Ák3“+¨v~f½^Ês¶£G¢% ê^Ǥl8iÐ*øŽG(Ùæù‡ªÚ‚,€º¶mÛ6±½¸Ì1i€@P]#“‘ÕÒ*vî!B«qb—T K@u Èdd5‚4ØDg F{×~8L@u Èddµ“ r¢Û4´¤A}+sLÚÔÔò îà ÒjW9cÒzzzuWp@PëJ“†áõWphx“ RYcL HØxÛ¶m?à-ü€ `ã¡ ¤ÔqLò¤Ô ´§@ÃÀÛ¡¾•ù;iÙ!<Öaó“Ù57¤cé¿ÏÞþlç›ù\ãµ×vïaÂÏeMçySö"&g`XÇd¬+Ï ° ¡% êÛkCcÝðüüììl à4ñ<Ï›œÀììì‚Ë%7}~~XÇ0b´æ Þ¾Vž÷ÛÆÂ‚Î9qqÙªM£ƒÁ0zåW Ò Õǘ´&uKqSÜ7`èììLÄhª³³Ó000 «RC¬ŒpK>‘¸oÀ`èìì§Ÿáψ­y,ËÙ:Ƨ H¨€:“ r,Kæv±yMÆZl…Hš!2ÖëŽjúœ}òÛÆ"‰4ÆlËšœ9û~EëÌJDÂc½î(™¥æ¾=ìž¡9—Ø(öðDqØX“õ­œ1i333SºººÄ,ËÙ%ÿC|é[(%Å·öÒæ›ÁìšÖ‰¡TÐOD-j­º…(º‹ Ú&Z‹­Ï·ª·'Úå¢y×›#‘Ämƒêããݪ!YvÎ@Eôôôˆ·¯Ò a‰mh%¿5¤§§'#5ñƒÔ¬”|qHé ¶Pñ¼É5×ì°ùýÁðVš3¼±,Ec—ˆšèR,JD-ê¦âCÄd"*F7t¼¥×½¼ì±=¹ÞS’‘-PSSSJfCuO“VðDž0¯vB{¨_Ãy8ïô!EE´]­!>šÝ?XL&"bT–‰yKxÔ`çX¿m¬}N¦u¯6ò`“˜4h ð;iMÝö¾V>êvúâèôû5,Ëy§×Öƒ+F×n&–å‚‘Äà´ÔéD+±µŒé2‰¬…C.Ï“F½=Ή)‚4€²Hïu¬Ôï¤m†Qu[Í,»ìvNÇAe™pšøe5õÝŒÚCý­<ÏÙÁv—‰_'§=Ô¯¡¨ÇjôªûS§g'"½Òh´ûIÓoïV1 èºí‰ð"~€¿3¼ÿþ#[®»‰ˆFŽÜ‹ì€Úç8ö˜XV¥.ycÒÄ&5%1ÛÌÌŒ’›5(ã·Q*ê‚’ûÏ£G¢% ê^}üN€2Ò 4À˜´¢0Œnx~~~~ÍhÒjKÃŒI@`³µ¡‚4€Z‡1i€  ¶ = ¤ÔŒIi5mh€  ¶`L H¨-hOi5cÒA@ A H¨-“Òj ÚÓA@MÀ˜4@PCІÒj Ƥ@#Ù‚,€ ¶§¡ÇcÍš™™A&TCWW2Pà´iµeÛ¶m—/_&ŒI«yKKKÈ„Ê:vì˜XøPà´i5mhuäõ×ߌL¨”‘#÷"UN[@P£Ä1ix6Y>ÔiF&H¾=ëÿ“?þx þí—¾‚ÜT8mA@MC{ZÙsÃÕÈ":óâ+Dôº«ðö¦TSï†Ýl5X=V8mQ-*7iŠ`LÔ5Üím¸évùòeôÀi ¨*·’¡¢º?ùñÐ êøno SÂò­ñ Ãi €Ê R¡% êƤAßíá‘<N[iÐ0& p·8m a ¢ú¶mÛ6ñCU#4A ÃhXj!ªª‹lœ»½-l EÊΣa¡ÖÊUêôÊ–½ÍV’“û;à‹¯ï¯íììTž ådZÉ˦Tiû³Kï6[ú”ä"WúWõ´-9Ç6êUÒ*cÒÊ¿mʘ‡atÃóóóóÃ:ƒ(ªî?_åKø+j‘þ úk<”â¾Á›ŸÌÎ@`vvvnÎNÎõR*–ÞÙÙÙÙÙÙ…—k~~vv6pšx^úêÊWVWà´-9Ç®ÌSŒÚ pÁiµK“¶aOxT|9à‹ qß@Ê3liŸo Ï“NAˆû ©O‚•$žÁÔ5 Bx¬ÃƱ,Ër¶Ž1é¡cj»J®yR¯¾áÑä#ÛÑpF&d¬O4‹¾Û{/ᯔ55©[² °t°2qv©ÈU2§çH°X±éÁ\Åø &W‰Íuºm¦’©imåÉLT qŸwEÓÊó¹êœ\:ãÈè”Ã*Õ*ƒÞ•â3yÏ¿ µ»)Ñf’µÆ4Év•B7ñÐb4qC m7ñ|t1”kuÒ¢ÛIÑw{¯ Òß̳¹f›Yx6uÎbc»Ñh´s|kßñ!mZ+tˆ –q:Q‹ºIQ™Qxr)-ÆÙKÉn›«CÔzžÇC‹´_¯VRç<y @l…x¾U½}½V©`†‹¥wCžmìi[RüVDu-×üU‰+K‘é(¯@dKšòÒ[ÕR P%x»#Ô·z¯#Ërv#G,+`MÕ_Pˆû{ÝË,K,K…Ÿí^ŠEÓ'¹:(p·—þ|ý³Ï|¤soÆ<ߘ}¦œÇðO»³î¯â\³eMG™Ùð(ÍLç91ó·Xçšh¬2UGþ°~“]^˜ë°ùÉìšKítGIÓçušx^Ạí”u·—ñ7=ó­Ô¦g¾U½Á-Åâ\³eM¯…2³¹K©öP+ÏsgÎìWzÕQ¥ÃÊ0ºv3±,Œà´-?ÇÊŸ¾µ*ËøœËL~»Ñh4Ú3n¾¥1i55,mcOÛdŽ%NºÎÎÎ`{¢GhQ§^®s¼„+‹ìUCá¥MyRNIÓ¹Le”R€©Ìï¿ÿÈ–ën"¢‘#÷"; ö9Ž=&–ÕË—/‹S2Ƥ‰MjJb¶™™™žž) JYAÉbV/--½þú›?ÔiÞsÃÕÈ":óâ+ßžõ¼çP Ë~eêDÆYP¿!<Öl/ãLÉsºLü‘ÇŸ¬‘kŸX³5Àm쪧mÝW8qß`¯;jvÍërÍS;ÕB#ݶ¡Ø{ÿyôèQ¼8êž8& ç?Ô£×^Ã3]"òÛ:¨âO4¤à­ 8m7yl–üm7"â5ýÇ7wc;Ô iÐjíâ»}‡q` WùÍ>¢ü“%W 8 §- 6iCjC«ß·ðæ¾Û{ w{¬V_;8mÕ H¨óšÔë݆°o(±³4ÆŸN[@µÒªRŸbLÔ£×ðH~£¡êœ¶€j¤T«>E{Z½8óâ+È Éªœ¶Ò Ñ`LZ}ùö¬™j–;…LT8m¤ACAZYvYÜ IDATA@U ‹,€z'ŽIC>Ô¸cÇŽ!U€hIƒF€ö´×ÕÕ…qØ€ª@!´¤A}“ÚС‚4€‡_œiµcÒA@mA{ H¨ “ÒjÚÐA@mÁ˜4@P[ОÒjƤ@ƒÙ‚,€º&¶¡ÕQ„†?€Í¦Ø›UiÐ…~Û¶m—/_®— 9r/ŽÀ&qùòåboVÑݤ装 jP ·©Ò ¾aL4iPßІ cÒ îUdLš „Ç:l»þØÂä ë… úÉìšÒ1 ” -iÐ*ÕžÆó&g ðöµò¼ß6Ù¨lÔ`0Fe¿@›ZUƤ5©[Râ±Î¤Ñ° 5¸±,gëH‹âbÓƒÀ/. i°IUeLZ$ȱ,™Û÷°{†ççggg¥¶µi‡æ\&žçySjÿF–åÉðöi(ê>Áq€’aLÔ½ þNËrv#GD|kßñ!íúMê¢hîyÞdín"R·EýÁÈÐÐðüü0Ž HƒÍIlO+¿ÇcFû qß`¯{™e‰e‰GN@Õ¡»#Ô·ªþNš ħî(iú¼N ¤RåßI»‹Q‹º)uâvµ†ˆVbky¢;¼8¤Áf%ŽI«FÊ £r™Y–³uxW4$¾Ñ1BMÝö~ E=V#Â0¨8ŒIƒFPþ˜4†ÑɾêƒÑ ÏÎfMVY&æ-Òÿö¬/¸žÈ¼8J‚–4¨oU“€  8U“p¥¡»#Ô½ þNK@P±°§.z<Š!åÈ‘{qÔA4 © ­ŽÆ¤ÕQ£\y“õ ]A@m©Þï¤ H(ÚÓA@MÀ車4€‚64@P[0& ¤Ô´§‚4€š€1i€  †  ÌdÔ;qLÚåË—«”¾Â My G‡™ŒLoi¥ÛÓªW«þ¿ŸîÍ?Ã_ñ8ŽB£ÂÑÇá@&#“Åà CwG¨oWfLÚ›Þ¸%ÿ_Æü‚5:SŒ†%+4FÂú¹z»&qß@Õ×RÒ†½ûUʽò~žÍ¨ê¯£rXíÃ!mù»“‚÷ |q¡ª'æ•<(žÉUª:ª½aBÜ70à‹K‡,í]ésöµò¼ß;Ïz .}>ß“KMZa4œ¹ÙÉÇ®¾x¢U ù2ãÁähX„pFúÙ÷ëë2ŒžáÏd¤?Ã×W5¤<ê.ùèkµZé+åIegWQógîK²'±§éOñk¹ŠûQÚSù Ž\[’k§ä#´`ûü„E•¼É‘±™¥œôù²ŸÍËž˜²wBgøKiE"¥ (ß‹ªÖx¥e²òj$ÏCúüµJ®C];elOžª5ô›Ûµ«¶Ò†å¯0¥š-ÿ޼E–=…•Ô·¹jÔ’w'gÁkR·¬?Žp/³¬ÙÚ­b†Qu[Í,»ì>!º‹Q‹ºI|0¡²LTæ^¿¬â²å²;[Z¥­ðQš½YWL%Ç«à‰VðLQr'¢Øô`žI…Wv"¹²+OËmêi¢0Ã˹x!HƒMªÚíi¿ý¿¯æÿË·ðZl…ˆÌíâÕ%2ÖëŽjúœ}òÛÆÉ#c6ŽeMÎÀœ}¾Ó•ålÁvñ¡”l:q߀͟xàzxÎ%>ktÍ É_Û"'Ü-Ön­~¿†(ºZ˹j†Ñ e¥÷ Ø9Öä œ&–³KiSÅÇ¥Ëk‡“ìÇû5u;§ã‚ >]›•ž§FH;”wkSwm~~x»'#…\u%èôû5,»»”8šýzU1WzñïkÿÀ¾öHŸ‰è›sÁÂG?}re—Âù¥}IªµÐb”¢î⾯…)Ï®ÕL9„ðX¯;JæWðp$n=å¶Dv§dï:‚íóú´SJ>cådYn‘ì§)yWZ‰™V$Rˀ½¨|W¹LÎ_\µl­•½ŠŒC];Iu‹¸=¹ªVA'c´´UKMO+L)sJÞqÙSXI}›g¯Ëß¹ r,Kæv-E‚~ây“˜oDDÚvÏ“?!m»™X–Öjå‚ r,«é?$íZêΖVi7‰gƒâs¤pöf]1•¯üåMÉ™Rð:ž¯ÒË[…Ê'"¶jžÈYÍæ*Õ¹®t3\›ãH!HweƤýö÷¯æÿËUØF£Õ5»Ä;9AýDÔ¢Öª[ˆh%AˆÇVˆç[ÕÛÓžÒeãy“kH›'ÐbTz-eÚ»ÒH›yQÜ$ZŒ&.®ÚvÏGCR…žØÔ&u‹øy¼»Iܵ¨+É<•,¸.ù]SB“~+Ïûƒ"º£ýú¦޾ôùÃíDôµožVrô¥‡mù³Kyö&rq1ñ ´Ø#Nœ_öØ×f9dYÎ68/þ1di‡Cù–Èî”ìRÏ2ËÙSÛrdHÎyÞdín’îJ¥ÇçE˜Ò‰•ZîEek¼Šg²Òj¤ ²‡ WÝ"•üœÏA4êíåT˜åíxáSXI}[L¬pwdª#;Ç·öÏ“™DD¤žwšx–]öXlµ(ç‚Þa#g 0aQÉÕ‡eUÚÊÏ‘åPîŠYþõº¨3¥Ä3®˜šÁÚÝ”X¯?Î[ÍfµÊŸ&Ê3¼ä‹‚4@ZUüÇ«|þ¿\•‘3àÌ®‰X–³íË&kÀ´NEÝ÷È¥£Xä„gyÙc5vvvZ=ËÒUDñòY«+æÎIì3`·¿„u•B“~¿F¬s㱕¢ó9õÿч÷Ñ—¿¾ ìè§>l+6»rÌ/^Û¢±K ú5R¸5º‹šÛµuPF7t¼¿•çÙeÕhTø.“2G±[’µS²¹êíkåý¶ÌÇü²ËL°ôs½å!³ ±ÒJÔxÏäRd플Ñò7e—WafÜȦ¿ÇBŠ^ržÂJö¨Ü:YÙî¬WŒ)„óÇiâ¶ Þ—qAï_±ç¬µJ¬´K>G •„ª¿òÏ”â¯)¥/(·…ù®tùW]æÅ AlFW`LÚ¾Êçÿ˽¨öP¿†e9ï´ø,|»ZC¥uN'›ÎvµFùe>>í]ûBÌÎΊWÁü«d·!Mî§È2kwº£¤éó:M<_ºŠJAl‘ hìÒZh±¥½Ø<Ï8Ä_òÍ)>úåd—üü £»Ç‚~Í~½¶Ûj&Š.†¦ƒ~sž]«­rȨ,óóNODžˤB‡#Ï–(Ïœ¦îq—9í-93¤p‚õö’NÌ´"±^Ê:ÄeÔxÏä+H:ÅÕN‰)Ñs­ fö;q)|/‘’=*¿N.mwÖK¯Ô¹,ÙRÚ)†Qu»’qÎÆ^Щ©Ûšû L¥WÚ¥#¹KBv%\±âWæ™RhJ®d,r ­ºœ‹‚4ؤªÝžöŸ¯ñùÿòÖéö¾V>êvúâB²ÿ’t¯œy•»J+¸°É¦£J4­eÔË©S¤ á w‹Uz]jÇ*q{Ä¥Ò·'-5i‚‘d7ý"ÆzÉ>Êʹµr»V\³O“~¿†üÁ±–vmiG_üüØ×EýìC¦0»ò̯m7Çqâm»™e—=.ÿ5·Ë¡vÈeâùbïŠ=Ò~%62ë0cKdw*Ï-æÐñ~ ùÅQòy2$G‚+±µä&‰oÌ}b¼_æ8NjG+j/ʯñªšÉùïïåj*EµJÎC ¨nÉNöR,šo‘ò*Ì¢žô QRßW£Vpw´‡ú¥äB|ÚëçùÖþCZAJoBP9qE….è‰Á½r[R~¥]©s$»®ÄñRx¦”pÆ‘²Ú²è‹‘ìæ:MŠZui/i°é\™1iåtþY]•s:.*Ë„ÓÄ/{¬©Ä«g7Û] ŸHɦ£²L¸ÌQ±£”Á0¡¦n{¿†¢ú¥A/aLk²ŸºöPb)¯º_Ú†Qe¤&ng7íor¦vÓ/|kë2³,gëð®hÄ¡ác¹¶VÚßô]Óf§ï™–¥ù©ø-qô'¾:3ñÕ™rº~›]9çß®nåyžoM<¶×êkMùoÍ—CéÍœF£ÝOš~{wQ÷ %Ýð¼·¯UÜH13¥±y²["»S93VeOÄiƒ¾¸+Cr%¸èì0Ú9qÌCÁ3Oé‹Dê-CQ{Q~WÕLÎsŸ]SeûܵJö!ÈU;e,(“l$Sv)5@ÉOÆ)¬¤¾-ºF­Üî0*ËøœËu[F£Ñꎚ]sãÃ0º!;9;:%ªµïøxwEÂÚÒ.èëƒ{s×Z¥UÚÕ8G2*ár®×E)ù¯ã²é(¹¦”v1Êu.çºÒ\u®#U=Ìý÷ÙrÝMD4rä^ÜñCís{L,«—/_§<òø“©𨤦$f›™™ééé‘ÒÉå‘ÇŸì2ßY )ÿSU¡LBÜ7Øë–Þœ¡Ž~Mi˜Ã!¾«ÚOæœo^E&×Õ!‚ísÃ:üꆻzÖpeU¿”Ü=zt r ê8&­`¬UÖéä ù\Ïטø´Ó½Ì²æÚÑpôkíÚ†ÃL®½&¶¢QBN xT‚4h☴*=úµzÇ0*ËļG¿þ5ÌáGü#“â0ŒÊ21ÓuΨ,ŒIƒúveƤ HPäÊüN‚4¥®Àï¤ H(ÚÓA@MÀ˜4@PCІÒj Ƥ‚4€Ú‚ö4@P0& ¤Ô´¡‚4€Ú‚1iÐH¶  ˆíiÕèñxdâ_6sÆø¯©ÿÝ$–è: ÒJ·mÛ¶Ë—/WéÆúÈÄ¿<þà¾M›·÷q³ #4Auظ”¬09úÊdEFâ<ßÚ|Ü¢b”/ë'³knHÇ08G î % êÛ†´¡ñü‡ûO,Lüõa5Ï?;òèó‚ðÿ³wÿA‘œç¡ïŸî³©Ê­±µ'Še`w¢%hVʽ±Åh…<ŽƒøayG<$‹÷œ^ˆºëÉ©w¾Üü™€®ëð4I®¬×æ…g]þzòMÕÖÚãSbã=¿?±›Y8#<Ð4j»p¾µŠô°62i(Åͧåë_¾;§ëÒô®»õ¿wé;_yn6=·¦ë/ ]y×_\úÔ–eÌéÑÑßëú’|h¨çvyãÒ—ÆÿÃ0Dä¿üà¥oýÌÇn—úËW5íÄ£cŸ«W*9ÐJ)³q„¯W฼úîó?–‡º.¾ô•çfÿâÒ§î*b¬2 躸M‹w{ºË ú\zÀÛ=‹GP§‡#âöƒSSS33}÷ê÷öN÷»”RʵÅ}‰ó¡€®Û»N™e2._Dæ=]wù‚ÓÞsЦUÕ7Øu}!º,"²]´7Ô¡‚4`w%žë¸—·Ðõ†O=Ðýä ªæcŸýè½ÿ¸íXõæ’J½¯;¹@Ž2·«6÷µý’Yæ?þ¿E ãÊ?O‹HÍ[ãXµˆüdé?ÒîúËQ&¥ºþÂwü?Šwß ®¼---Þ€ªí¼Ð[g±¹ÙˆR.gHÓ¥Tdv.¶Ž<=±¼?Ý\x“G|ÁàP[•ˆd[¾aÄ¢‹¢T­­:žy3UÖ7Ô*åÍ‹ÈrTê+9dA°»ö%‡fŽIûÊs³ñäÃoÑ41þýÒ¹‡ßÝ}Ê“üL‘ÔP*29ÃBÏœ®›‘Û6ÊhÚ‰G‡zlJé‹_ù쩾þÏF‘šÂOŽ µUišÈr4²¹D$º,¢iŽÞ ]µJé #--a#ÿ…_èZônÌ’yùëÓkl)QXe}ƒ]d13bÑÅ´ÿ¤»a7Þ“VÃX~éKç,Ç[¿Ü_¯Ô¶Ëdq´òW“ÂÂÌ·)æSF´·>üéKßéz@‰È®=ï¤Úfß<Án33‡ZUÛÐ̌ϥD¤ GŒT¶v¸6žJ’uù™w–ló0°ºÞ~—Rë‘•q-FWr.t%º¸Œe[¾¦9œn1§›ƒÓ6b¼ú»øC£5Î:Ž@ìº}“–™œxôñ‡tý…¡“½ü«¢ë/ üÂëFÁe²yËûþ¢ëý½=Ò`>v_ÓªøDÏíòÆÄÇ0§¤—IYˆùÔþ=ÒÐ}Êó²ømoÙ´RUÛÏ¥Þ–o@¹|ëcÉÂÍÍÍ--^¿Ø»¼­Uš¦iU­Þ.»DF:Z2>ˆ?>à­c$²>K¶å‹HÝ©®Z¥Þ–³ß•œ«4£4¿£€R¡={æÐ­wˆÈg£9`}?õ´¹¯&ž¹ŸòÂe3¥–OÌ699ÙÞÞžüìþ<ß“v@|õÿôT÷ÿYêka>ú?âîO<¬?·ïïØ¡ôëÏtçÎ#“†’·ïcÒ`Ý͈Mø†tÝM ”‚4”ƒý“‹Ò´ª¶¡™©©©> iÀž°Â˜4 ˆÑ(ifmçÚ™¡5ù£?ÿöG½‡†Mi–ƒä×äZ€]tÛÏ¿ ëU‚4”<ÐØ8ðªz5wsz÷x,žÓÚT«M«`áÁ&O@×u=ài\_©¬«iV lijeëÉÆÔè¢Îéh^DVæft]סy‘ùßí¬K,ðUõjzâ[a¢'c&3c³Í’¾.yNfLlÆîîîõ°*9ÄJ ·2/dsÓ¥´À«ÙsŒ@†òÁ˜4…rºEמ¦ž”ð`~ðôpÄÞéë´‹ß38¿q¦Ô³â ŽvÚ%2|q~½°' ë._pÚÛ°õG·º.nç½ú½}33SSSé¹5]xBΙ™¾-˘ÓF:š|â½Ðe—Ȱo"fé« iŽÞé~—RJ¹ú§{ÍX4Çjš¨3‹ˆÛ NMM™ ±M«Sm«UJ£1ÃXŽF\.—³F,ºh·UoÌXlMºY²­KfÆÏíÌÑ…mÓL 1ŒpJÓݫߛqu€ 匀B9úf|.¥ë #-ÉÙ¤_Djlu¶31Ë+åêh­ŒgÃü¡°aF,º(JÕÚª7²d™Ï²zÀÛÒÒâ ¨ÚÎ ½uÿH›K)Wre*m5æïç[+Í2‘èrÎUHȽšÉÐõ€§g"–1áSYß`7?t>äw;{.¥Äš_™›•†úÊ­7Az“nc–|ÖwctŒDÜý3}Žlÿ6ݲ%s4¦97‚r$ HC9cL€mÄiæ@±”ëi]x[¼]7Þ얓ï™ÌZÄ“*CmUæM•±ñîÆÆóS²y”Én± ¹Ëhš£÷BW­RúÂHGKKúÃ6Ö‡¥Bƒ!¿ÛY'Õ6»ˆ,F碑[ÕÞ†[®¯R._Ðg†‘ÉÑ`ÚŒùnÓŸ¾eÓAòi ¥iU­çû]J­_£WÛìI1Õîä: #6ᎈ½sÔçRjÛe²ÈgòZM­ªmhfÆçR"’ñaæ°´@ àvÖiZU}ƒ]×FFngÝnÃü7YÝ©.»®F'V¤hÛ:óB¶l: HCùcL€B tÇSgæP1»­Zd=ÒH\ÇçðæÀ¶Ð|| SÞžOºf;)ɺ ëi®•e²D6½ý.¥dÓ(³¥Ö*¥”Ë Ê*ëj•Šß+˜)˜IT ÿøgËY Z—ÊVog­Š ûÆcFƳmSsºY™ÍÓs}úæ¦ÛXžô€ 94…êõН©©¹¹9>Tì|«y‡^UÛÏ¥F:òyZ`Ý©®Z¥Þ–³?ÿ|—¦9zûݺð4.Ú%ý†y–É&}4­ªÕÛe—HbÞ–«™xÈaK‹×/ö.ok†;Íai‰øÍü3S`™^|¢Í­(w<òVwÛöøSOÓ‡(û„¾.ÏVs`ε7 ÒpàìÆ{ÒŠ’”p`ч8}Ý®bLJ¾/ãE¤Â{Ò° †hl›§ „ ƒÆ_7ïîåÛÐÉ`{§ªæ$EÝ…rì“ÉÝØ¸i?/Êî]Pùü ïR‹e«@¡­TnwD9(â˜4$öÅÑÁp]¯CÓh …Ò´ªúñÍ­´µU™SV&F»¼}t)(&·/¸ç)MsôÍÌô™¡Hl¼Ç7Q¾µª4öí½k±]m%2i(m¼' ;PÓáµΧÿÈw¯7Ö=“Ä·hásâ@ØH|–HÇFl¼»1ù{;¾8Ê[e}ƒÌÎÅâÇ{lnVê+³u#=LRϰù÷Ô>Èp†2÷™õ,±we9eØ£Âñ=3ù˜k÷«´ÕD¢ËÅ®^îÃa;õÌ)±´püS²‰Ù^1Ö¯R+PH+¤¡ü1& ;»ÂjõÚF“oz4{êAŸx§§§¦¦‚£2|q½ö{<â ƒ£‹£=!çôtp´sÑ3hX™ðE;¦§¦¦¦ûÅ38/ñïØúÈÔe¥­ˆˆÈÊFŒ–½É%½²ð{|âžNÞ»æO›ûÏÌúyg~гØuajjêB×56ÄŸ IDATbbŠwÚ.LMMMMM9CÿV»ŸaÄ&zFm ÊMåU½Ü ­çö––1ÈÌqðFxÐ#¾`0eE¶ÕJi(wŒIÃδˆ%uÁšæèj‹ß®Pi«Ù(kï2ûßJ[MäG¿ì]ÿ}½ƒž›[µˆˆÔ9Ýþ_„eϼãÑŒÒÌÍì:²w#9. éC9àñ¶´¤¥nÜýæmuç pÈïvÖm 6B~wGk¥y¦3÷¨”|o]o¿;çîg±‰ŸxÏ·U{l]½|‡ü뙻Ų--ËAûà­¶Ùý¡ùÔÚn«•¶À˜4”Ƥa×XŽÞŽPÏÄÊùÖMç¶Á&O@×ED‰ËŸ\c«LIþÝ´D-#"›çPÎ*ëÄ7k­Ÿ›­é8_¹U7’}2<)#¬v¼/G#5ÎÊ|w¿ùÁâÇ»QÏ­Z,ÛÒ²…ˆY^M«j=ß?ØÔÔ¬ë._°Ï¡í^+¤¡´íÆ{Òpàâ4G_G¨{b¥c½wŽMôx¤zÊ¡Fx°)”ßbªmv·ïÚЇ`'ªmöΞºûF8ä¯qöZ¡z{w˜lyðš é÷œ O÷ÖÉ|ñZinwDicLŠ¢îTìot1þ×r4bßM±]Ì3ÒÓªêCŒ"óŽÇïHͦ{¹¶ìF£+ñËA?}бÚj6݆§i§Û?:±""+£~·Ó¡iæÄD±ùÁ\»_‡U§Wo«Ã¡€zæñé™—–ñ£ ½ؽÁçdÒPòÌ1i¼ö;:TµyfOGâno¨¥£eDDÕvv¹ýž&yrê[.¤ªmÈ9ÐØìÕED)WÿtoÌ6…œÓ|5”³Êú†ÚáM1ZînDÓ½Ó2ØÔÔ$ö® ýîÓ¡l}]DüÞ–@â¥\ÙÎGu½¢=MÍ^=±óÔõö‡šN7˜SêRЉˆË×ïö‡öæ–R½ºäƒ%Óá=Óª—ÚbýÓ½—–ñ£s¼ÉwBºúƒ-žmÛ½vöì™C·Þ!"OœyŒãÖ÷øSO›ûjJT–“f&Öò¹ûqrr²½½Ý\Ι¡ýÈ£÷@Ùw %Ý×í^X•ÞJf„uåGoŠÈóãÏšW§Éןٜ;wŽÛQÚxOÊ ·;¢´ý¹Ž r@€¤œûºö£ßù«Kß!HvUÑǤ‘”@€„¾n‡vÇr»#Ê_] lâX‚4”6ƤÀ‚Ȥáà"‡€2C†’gŽI£@Xù4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐ@X cÒ@X ù4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐ@X cÒ@X ù4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐ@X cÒ@X ù4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐ@X cÒ@X ù4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐ@X cÒ@X ù4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐ@X cÒ@X ù4¤–À˜4¤B i€µ0& åäM€2`æÓŠuÇ#©9¤ÛtäÈ‘k×®I‘Ƥ™I¹'΀ ØÀ˜4쯛«ª ò†1wîDÏßë.J}àKW>sŸ¶£‘æbÿVZ¿tå3'ä•Äï;\ìöÖ1©VKÏ}øw¾øZæš$×9ù¿Ù¦—Aý9ßý}W¬žçn¦Ô]2ñßOÕ ÝIо!öxùyTàꕱËK›¶Ý±ûOž8š½2æ,Q±å.fÙž'ÑÚ{Öøé!‚4`OÃ~^*­z ¢ÖD”úí/\öœÐ4Ø{êþO|âÄ÷?qé¯NVg½V~êþO9÷ê'ED7 µ&"b¬®©›E rÖ¶ä¼ò7ƒoèºþw3—?}Ï}ZƦH¯§Q¦õ7Œ¹§>1¡ÛQ7ÅØ•Øcù›ñuù/„Ì}ìê¥øB_õÜ+[Õ’v˜,Õ(ú†Øãåç]x`f`—Ç®ßý`Ëñ m»KÛ£(n{=O¢µ÷¬ñ÷ ‡Ê9h”¶#GŽ˜¿¡aƒ´ •¸6ZS«êDï> ëo|éoæÌ?[~óîýÍwÞç¬÷½¼ºö³ÕËçîÿ„_×uýï?yÿ“æ”þú{ó÷™?ý—×n®)s¢9KÊGôS¤uŒ¯ÈÅg~ÐõÔ'îTêùg¾ùãÕµõéñú¿ë#_ýaR=³M/ú'oÇ3Îzg½/tóåø&»ì[ßpêå'ã[Öùäåä3‹™ÿzì›ÑŸEŸ}¬þ^gý~3º–^óËóň®»¿pöʸ¹¦VUÕþòÓïPFòŽ‘¼Ã$~ÿæ7ÿð7ßy_Òbãåÿíâ‡7OW9ªšuÏ\_ÍÝÛÐ;¤iGOÜoÓ´¯½±¼0ÜxãÅçÆÆÆž{î•«†‘)¢ØT ‘šÓ´¥ËcWÌY¶\Ⱦô<w†´`_޾-zÈô}Ïì3Õ6ÿ|ì›Ñøn}ö±?zößÖ·ÝXG€ HeæÐhìg¶júc^¦­&¦¼ãÝïUJžÿöå›êæª1wîá¡×ïúhÿÇûô¹WV×Nô̼W)¥ÞÿÄìÙ·¯ÉêÚ‰{nò¥—¿uá㿦”ÿ“çÌ“›úyÿko®7ç¾>ô+~èï|÷q‘׃/GãÓçÎõtý½ý¡½M*©žÙ¦—Gý“·ãŸÏ„‚ßþôÛ×ÄÑõç?=ûnóÏŸ|óßñëïí}«ÿýºÿOþø›W;ŒYÌÜâß;ÿÈŸ5Î~£÷Nymè³rS%Wûg7çþñyQêýõïØbßKù]ןŸ^û³oõ¿_×ߺðÊÍœÓ3V5Çž™¼š»·¡‹ úè1ÃèU3šZ¾2ùÚõÃwÕßuX¢—¯,§O) iGOœ¼ÿ˜a$ß6¹åBö«çÉgØ—£/w™¾ï­®U×5Ü¥ëoLwùæªq3š~]ÞøÒ×ÍòÑïUÃ;ß²~¸M¯ýÙ·.|üNy­ˆë¤˜cÒhì[Vøw±æ]Fk™¦ülõòwý"rGå;ŽÝ."‹?‰®®eœå暺yÛ±Û“¦¯eù}_2Q?[Žír¬ªÊ{~ë.]¼ôò’9ý'‹¢”½ºrSý³M/³ú§l—5¥ú¿zæ’/ϼ®ÔC'Þ¡n¾ã]-J}o&”Øúñb·»ÝüýËßj~ÊÿÍcËø¯”ß•zèƒx«ùÑâÿö+I2=GU³í™É«¹{º¸ ãêÕ¨ˆ®¨®8,"×oÜØœÛ²@žeö«çÉgØ—£/g™yß»õè"bþ~åÙÁï뺮?ÿÝ+ñò·}ë¦u4w¼â­#°“†rÀ˜4ìoVà•_üfžµõ¡ ñ)wþò[ÖÔM1”ˆ®ÿßµüƒèºD~´´¦~QÒf‰}ú¾üC]]e¬­Ï/“V~×QDŒð7žYˆHÇo>³>eᥗ—~ûáÛdéÇ©©|ËÆ}Mkkêf¶éeTÿ”MŸö§¹„¤-˜¾õóØÊé;XæÉN~Ï\Õ[5m‹=sc5weCÍኊõ_5miîÒ’hš\¿qCä–´²[H/Saž'¯a?޾­zÈ,‡ÉÛßÕ¤þ>ùÑÒÚ+sþãz¢é»yò¯ŸûÀÛm?޼¿þí)G«Uw<€ eƒ÷¤aß­®ö½¸aÈúˆ cU1þé;Óº.¿b»UɪQ]}§¨ï½ïñÀ§Þn^=(YÝ<‹a,ú¿ü}9þ¡¯þáÒ‡?5mN—¤2’ú{¾ŽË ?ìøêìûª´øŸÒþµïM_¹ÚæªÌRÏP#u;¦üY]}§È÷’–pçí¿´Vº×ñ^™~Ñÿrø“¿~Oö}/÷b³}t|zæªÞ”­öL-{,r©¼|uIÓäpE…¦FEÅa1®ozÞãæ4Ø–2—±BϳÅÎ`nhÍ¢=dú¾·¦­ïöƒÆôMCoo{ë{¿üÄ·¦¯LÔßûîÇRzQ îx@nwDicL,¤©B óKÜÕ5usõ•‘ÿöJ¹<]÷¬®©5Uùï:®ë/\üÛ«I³TVÕŠÈâÒ²ùçRô{"ò¶ÛÞ²iQÙ~/è§8ëþÆ×nÿƒ÷Üf˜®¯Ô÷¾ûÊÕ5UW÷ èú ¯„Õ?}ùS/éºYÏlÓˬþ)Û%ùÏĦ%¬VÃß~I×ïx׉[•‘cËfÛÊw·v¿M©éÿöÇÏ_]3§Ìésó«k[-jqi9þÑrûѤNž½ª[ï™»º¡wÈ0®^¹5Œc÷Ÿ¨M«8zì°¦-½y3cù,*â÷5¾)ù,dÏzžDËÇûsƒ>ø®_Ͼ¡÷çè˯‡L?Lî¾Ï-"/½ø‚9åîûܺþ½Ñ¯¾pÇÑÊÕ]î!‚4 Ƥa­)£Ð%¢ëÏývãßÿÀ£¿í™©íþÂßÿɯñEÝúÐW>Õ¬~ôW§?øþ~×ýùÿ¹¦”QÕÒ×}‡¼ñõ6þ®ûóÿ¬ê>ôgn]ô?ô×?©]ô?ô…ÿ¿™GÔúG$~/ègç븺võ…ÿñ£ßû@]òÄ_¼ç·)õÜ[^Sw ûmJÍ~¶ñÊ}çÞ­T¢žÙ¦—SýS¶Kʟ榟ýl㣟 ¨æ'?ûPUz±|¶²º­íÏþþ\ƒ¼ñõ6~ðý|ðý\¹/¾ƒå^ÔåÏ7<úÙ€R®³\·–szƪ*ñ垹«z{4miîÒ¥±±±K—梇ï~0)åUqü=õÇŒ¯¿˜íÙŒé4­Â^÷a¹þú‹—Ì)[.dÏzž_ïš}êï4ûsÃ}£Ë‘{CïñÑ—™~˜¬ÝvûÛ”RêÎûî©\SÆÚoüî5éOµ‹=$°´³gϺõyâÌc4¬ïñ§ž6÷Õ”·W'Ƥ™‰µ|î~œœœloo7—sfè_?òè=¿vd•FA>ÿÌXû©GÊiž½ø\ÊáSZëXêõ߆þÚï|úÛâþÔßöý%2D'}C`{ÒPÚx®#öÝA¸¦Ôב›”¶Rwzlê´ˆ²fÐVp¯ÞÅ€£ HÃeŽIË5vÏê¸)õu\å2•Ô Höù4ì#2iÔ`¯æèÒ€ ŒIÃþ_‚€¥¾ŽkŒŠG%õÒ€=C ûŽÛ©?À^ÍѤ›0& ûkú[ϳŽÔV066FÏC=‚4À*ȧa¿#`©?¬ \_’VÒ{5G°m:M€’väÈÎ H¬ÂÌ¡Ñ H¬Â“F;€ ° òi(<8¥­¸ïIûþ5Žì32i(mäÐPfÈ äå=i·ýü÷Ÿÿ> ‚4 vþž4žà‹àvG”6Þ“‚4ÀB“‚4ÀZxOÒk!Ÿ‚4À“‚4ÀBÈ¡€ °Ƥ€ °òiöŒaÄÆ»››››››»ÇcÆÎ–hlllFúôæ$¯ªW…³ÍXÐZ$ê_Ú@8þߨxw÷ørÒÇåYím¬iž3&7Å@Ø`?@XcÒ챉žÓÃ{çhpjjjzÚ+¾Áí…IùPÊå §¦¦¦¦¦ffúîÕïí›™™™éshÚ—¬iU¶Ñõ…貈ˆ¬DEÄНËr4Rc«Nú¸½ŒÊr4E0ès)å÷ìb›ïÍêAÊ94{,‘[e<ÔiЇL‰ [â:>qY?>Þ’vKd‡šzF‹'¤º˜ ±ÆDÒ/u®:§[Dü¡yY™›]Ðu]„æEDæC~·³.ñq¯ªW›<]×õ€§iS€èɘQ4Œpþ³d¬|~ ’i­×Û¶±»»;Sâ1¥óiº”x5{ŽÒƤØ[N·èzÀÓÔ“–ÌžŽØ;}vñ{ç7N´z`V¼ÁÑN»D†/ίötÝå N{ŠR«ôO7ŒðàéሸÍ\\†ü[µ­V)YŒÆ c9q¹\fÌf±è¢ÝV½QPÓ½Óý.¥”rõO÷&–“qÕ¶1K¶¦ËÀÌø¹æ3ÎXhÛæÓt÷ê÷f\ H²"Ÿ`Ï8úf|.¥ë #-ÉI³_Djlu¶3ò1Ë+åêh­”J[Äï'4ŒXtQ”ªµUK|z¶“´ð¶´l™bÊñéºðôLÄ2Î[Yß`‰D—ÍÌY¯Ó¥”øCó+s³ÒP_¹uS¤¯Ú6fÉQùô¦h鉸ûgúÙÖ:ÿ¶ÝIÓiš£X÷AÊcÒìKœ ŽvÖª”ëx]x[¼]—H|¨WËÉ÷Læi²æÁ2‡1Ÿ®iŽÞ ]µJé #--éÛX– †üngTÛì"²‹FjlU{~lÙtJ¹|AŸF&Gƒi3æÛ¶;i: Hr!‡`_hZUëù~—Rë±AµÍ^XLUT™?]«jš™ñ¹”ˆd|؆9,-¸ušVUß`×õ…‘‘€ÛY·ï•ϤîT—]×£+R´6ßfÓA cÒì¥îñxêl>Ðu±ÛªEÖ#œDü;Às˜ÛBóñT;s|z]o¿K)Ù4Êl#B©UJ)—”UÖ7Ô*¿W0S0#²]É¿^yÍRPÓU¶z;kUdØ732Θ­mÍéfe6OÏ¿é6V‡'= H¶F> ÀžéõН©©¹¹¹ÅPµηšwVµ ù\ja¤#Ÿ§ÖêªU*àm 9û]Jí¼V韞xÈaK‹×/ö.ok†;Íai‰øÍü3Ó½‚šVÕêí²K$y$Þ–¡cž³äßtšVÕÚáÖõ…aßDÌ02Θ­mëNÅ+3jëJžžgÓm^ñŸr$ØMÚÙ³gÝz‡ˆùL1ºØÕ~‡ø=!çÔÔÔÔÔÔtGôôz“î|5 ÒPΓ ßÛÒ’#Kf±¹Y±U‹ˆHÓíe*_H“O¼½uñ³ïP›y_Mò÷囹ûÏ·ViZöʶÏÉ£»Xï"r•±w]èu˜ÝHäG¿ì]ÿ=¿î+{Ψ²µCF'bIKÛ¥æ¥ÎY3;3Œù8ë¶W,¾Q oVwªkq½ #|q¸¦£õ¿Š¸û{ëŸh®QqV3'Ƥ¡´1& @z¤”<!Óys9‰:ZFDDD‰Ë¹ÕBÖeÞV¤gŸ ÀAïsòï.²”©±U&Š$ÿžg÷•Oÿ–¦9z;B=+ç[w»†yFi£s+¶¨8{EBÛ)–uLZ®F¨jë¨éž[im«™ùÝÎ^M^Î\¶(«I†²VÄ÷¤8ªmv·ï|açoÈMôx¤zÊ¡™ÃÍiGÛî.¶Û¥dè¾6µeì!Š£¯#Ô=±ÒQôn'J;Õð]ߨÖq^d~çÅ Š=ç[{«'F»¼½Ù[œÕÌÛQ“ šVUß°*ø„¾Øã7·¬D7¦/FWhTùt…–É¿ûŠwDÛíß6bžYßèâ®Ô°@•õ¿,5¹îu,¨X!MеšŸ¿8\ÓÑVµ>Ø8ñt¨ùßíthZÑV“ åŠ1i¶¡ªmÈj*h¸‚¦9zûkF:â#OÜ~OÓà¼Ôõö× Ÿ̶žî@»‹”~ Ÿ2yv_æ¢Ñ6ú·ZUµy$Rìn£'Ô´ª¶¡­‘½ØÆ˜´‚ÚÁŒ¾<žÅ®S‰ÈÏÝÁ6ÚÔÔÜÜÜ4j»°>>­(«™«&gÏž9të"òÄ™Ç8¨`}?õ´¹¯&îoL“f¦Ôò‰Ù&''ÛÛÛÍå|þ™±'Î<Æ=“ ®B{á¦s¦Ï|ÁfÞ¥f^š&Ö4ùú3›sçΑICÉã=i(B„f„7¥Ñö A9(Ê3ظZ8èíÙþî \úüÆŸG¿óW—¾C$ñ\Ç¢ŒIc`àjö,®m¢ÜîˆÒÆZ(³@” å°ß3& ÖD& ù4” ‚4”6Þ“‚4ÀBÈ¡€ °Ƥ€ °òi H,1i H,„ÒkaLÒk!Ÿ‚4À“‚4ÀBÈ¡€ °Ƥ€ °òi H,1i H,„ÒkaLÒk!Ÿ‚4À“‚4ÀBÈ¡€ °Ƥ€ °òi H,1i H,„ÒkaLÒk!Ÿ‚4À“‚4ÀBÈ¡€ °Ƥ€ °òi H,1i H,„ÒkaLÒk!Ÿ‚4À“‚4ÀBÈ¡€ °Ƥ€ °òi H,1i H,„ÒkaLÒk!Ÿ‚4À“‚4ÀBÈ¡€ °Ƥ€ °òi H,1i H,„ÒkaLÒk!Ÿ€²qˆ&@I;räȵkפHcÒˆô@숙CÛy„fÞ3ùÄ™ÇhR¤Eˆ¯Ì|Úã=ûŽ1i(ŒIA` ¼' i€…CA`-¼' 儇 ëÊLÉeÚSú±±1îˆ;yòµLÊÊ HJLqß“ üRû¹Ù IDAT|ôC–JUÿòkßàz=£Œ!Y¹¶ ‘9‚4”MKûïܹ=+©ÿÍ6}ÏÆÕ+c——Ö?Ú0*î~°åxóR[FD ãØý'O;™ÌY¢bË] Ò€M“`‹ mm»AÚ+3ø†®ë7sùÓ÷Ü—¤©5cuMÝÜtÝŸyúž$Çî?y¢úÍHpòµ×&¯Tc¤ffvyìúN‚X¢8i@äÐìFfW'žùA×SŸxé“Ï?óÍGê©Ö41ŒW¾ø®Þ€®+ûñãIÁX¶éû¼ò·T¹žNÜ/—/‹T\}å¹¹%MDŒcõÜwÔ0nD‚“¯]?lÆ-æŸKÇ|Ïñ 1n¼œ“úû-oF‚“¯Ýˆ7H"æ¹ N¾~CÛ2=ešvôÄý¶¥¹¥×ÞX>~ßQÙrR T˲™šÓdéò˜”h;°&îÔGÉ3ǤÑ2i«Æv~æ¾>ô+~èï|÷q‘׃/GãÓçÎõtý½ý¡½Mfð·šszA?Å_ùå«Kšvøîã‰PAÓ–._=úÈ#÷Õ´o¼8·¤«øáúcÚÒÜ‹oÜÐ´Š£ÇkÚ¥«oŠˆ¼yuéº\í«†aþ%ÇŽÞ"ËW&_».¶ú‡>yò¤¹(sêá»êï:,ÑËW–Kcç¨>zÌ0$zÕ\Á-W!¥€¦=qòþc†‘•d; Hvƒ™O£dÒÖT¡??[Žír¬ªÊ{~ë.]¼ôò’9ý'‹¢”½ºRݼíØí""ÆZöé…~n×ZÓ–æ.]»,õ?læÁL†qìþÕ"b7®.]7ŒcG«ã±Êõ¥«7 ã–ŠÃ"bþ¾üÆk74MÓ–®.ÇË®¸e#Ø FnÆúb¯^ŠÈáŠjsþ‰•Š-W!Ÿu,ƒv`ÜîˆÒƘ4[i_¯‡¿ñÌBD:~ó™õ) /½¼ôÛß&K?ŽˆHMå[ÔÍ5C%‚±lÓ÷{LZE$øâ¥KÇê¾ïhzMnܸ¾yÂõ7Dn©>z̈F¯ß¸!ËW£‡ïºÿØÒå×¢¯GŽWWܸn;Z-švôăw_Ÿ|íÆ×_¼ôzòÂ5miîÒ’hš¹¨ŠRÙEWTl n7Vá–ÌÑo®%ÜÒ€baL€ÜV× KeÆràÂ;¾:û¾*-þ矴í{ÓW®¶¹*Å ÀV׌UÉã÷}’f¿ëØk—£—¯=y¢:õŸãÕ’bM;zÔ&KKKW¯Hôð±«í¶×.G—®FGmGÍçUjÇßóÈqs<ÛúÂ+*‹q½ÔFa-_]Ò49\Q¡i†‘a6§Á¶,¹ l·;¢ä1& @Î MöþÆ×nÿƒ÷Üf˜®©Êßx×q]ÿÞw_¹º¦êê]á•°ú§/ê%]73fÙ¦úÑÅ_ù7o\—M™¢„õágKW—ׇ®;Z¡i"R}Ô&"KKKæ”ê£6M»ñúëK)‹©>qÿ1ÃXíâK{=òæzôrõ•çž{î¹W–ÔRÊ/W­q a\½r9š¸ÿ3}²µØæñûß”|i8@“ ›5eäÿ³ºvõ…ÿñ£ßû@]òÄ_¼ç·)õÜ[^Sw ûmJÍ~¶ñÊ}çÞ­”ˆ(e¬)#Ûô‚~Џֿ˜´K/¾~]ß]o¯È”Õ©8þžúcÆÒÜ¥KsKƱú¡k†aÇŽÞ""R}ü®Š?ÍèkllìÒ¥¹hÒÂÍ¥Ýxýű±1ëDbÙZ&^ÿÃw?˜”òÚrÒ hZ…½þîÃrýõ/™SJ¥Xœvöì™C·Þ!"OœyŒæ€õ=þÔÓæ¾jEKŒIK0£µ|n€œœœlooO™@9ùü3cí§)•Ú>{ñ¹”¾kllìäInçÎÐeÜ2lt ¼åsýyîÜ9Ƥ¡´1& @n»r!»‰ %Ï“FB @FŽ‚4 /äÓd³J HöïI™4A°§È¡Ø"HcL€ ØcŒI·;Ò€}@> @6Óßz¾¤ë?6ÆK ii@IaL€J½gà}Y´ €ƒI§ PÒÌí‚4À*Ì1i´Ò« Ÿ‚4À94Ƥ€ ØäÐ@X cÒPNx?ÊÁ¶ß“öì³ÏÒz HŠf'ïIkoo§@Ó¶shæ¼4 ¬†1i(yŒIA`-<ãi€%ðž4¤B i€µ0& å„§;¢ìä) #<Øä èß_¸|Á>‡¶{•7ŒØDÏé‘]D”ªíºp¾­Jc›XdÒPÚviLšR._0í¬UÊï Æ®FhÃ{çhpjjjzÚ+¾]ü8¤»kwǤUÚjâ¡Tx ±±±q hl0ƒ¨ð@cssssssã@Ø ·Æ»›››Âñ+6ÞýÀÇþê¿w766vÇ 1ÂÝã±M1Ør4""5¶JM«jêshZòŸ˜\øóä%ÇÆ»×—œ{ÆÄD¤»bǤ͇º.n§5ézÀrÎÌô94-6Þí è._0èséo÷xLÓªZÏ÷»”ò{zÆc†8íxé+~°Á®ë Ñe‘•袽¡¾JÛ¸›QÓN·èzÀÓÔc†[>xz8bïôuÚÅïœß8hõ€'ä|é¥?=Õ`×õ…Ù¹Y™›•õ%çžÑ¬?» €e1& å`{cÒ&''S¦<øàƒ‰xÆÛUÛy¡·Nd^D”rõ÷Ö‰ˆaÄæf#J¹u"ât)¿v.ÖÚZ¥9z/t-žéh®í¼p¾ND*ëj‡#þÐ|ŸÃ±•†S•)êè›ñI£7°0ÒÑ2¬\ýÓ½M3ŒpÈ/"5¶:[Hd13êÌ9Õ¨´Õˆ,D¢Ë†!s³‘šŽJÉgÆŒë€=ÐÞÞ~íÚ5‚4”³#GŽ˜{ùöƤµ··§{’ˆg¦{§´ÛÍ{“D¢Ë"U"ZU›·k¶cda#cVYß`Ž,FcFut1~[czœì5ðôØ.œo­LŽuÝ\~ê¬uN—òûý¡ù^g4bFŒ"ù̘¶âØÏ>ûl>ÅÒPÚvþ\Ç-¿ÉȤÚfIŽÓì¶êx8››ˆè‘aßxýù¶*MÓªêìÃÃÑå™­qe¹Õм[2ÚäñÇêj›]T$W¬hÞ*Bƒâw;ûâŶžq»k €½À˜4”¼½Ošwéz 4·fO혎vÚ%2|:þœÆÊú»øC£5ÉÙ®xøH— x[Z¼åò µU™ÏT 9§ûšVÕv¾ß­ëOÏDÌ0âQš_Òb4Ñ4G¯W|MMÍÍÍ-Þ€ªí¼p¾ÕŒ÷ÌXéH~NcŠÊú†Z¥”ª'ò’ê–{FX–vöì™C·Þ!"OœyŒæ€õ=þÔÓæ¾jÞ°—“–`FkùÜ999™ÏÀÍ3bã=§‡#îþ™>[àÀÊçúóܹsdÒPÚö>‡Vp„fÄ&|à ºîNÏ£ixpJž9&ͲOÂдª¶¡™6¶òC& åÀúù4€ B⹎;y ?@94¤Ö²÷ïIÒ€\ȧ lðtG”¶Äs“fe„Ðö§«õÀå´EJëÔV–ÇByo‚4”63‡ÆiØúÌWÀ^ž ¬ü‚–Ø—ß)•S[ e¼ ¸Ý%1i€täðÙ" åKw¤¡0& eƒ ¥÷¤€ °båÐ #6ÞÝØÜÜÜÜÜÜØØ=3ör- #<ÐØ866O†¥ZÛ¬gcã@Ø0Ìß›“$×,Õq½³Ú¥~;¹›-ï-’Xǃ°ÊêÐØí† (E“6Ñsz8bï NMMMO{Å7¸÷}ß3XrR._0í¬Uªëà€Ø^gµåÕ!ýæ¡‚4 /;ϧE#"Rc«Ñ´ª¶¡>‡¦IR†-Ãw~áøóîÆDæÍˆwwÇâÅr͘ñ”¯ëOÏDlóô”/ºÌo¹’eNï±ñîÆÆä4`zÒ…Öó‡áÔ‹’,õÌ ÒV#b?ojâÛPÖUi«É»|àÏgš<]×õ€§)óÅkŽ~;ù¦ƒÔßsvÝñ³ÒDOÊ[<ž²È6˜ ²~cKbM·8¥¾ª^5ÿïNn·Ý>‡–ß¡‘±Å²n—Í_UËãÉEFl¼»±{<¶±„õk¤|®=5iê]$HJN±Æ¤9Ý¢ëOSOÊir~ðôpÄÞéë´‹ß38¿éÄr¾ôÒŸžj°ëúÂìÜŠˆ¬ÌÍJC}•¦m9ãÌL<Lâöù\úÂÈé¤Â"¢i޾™™©©©ôo¹ÌE™ÓF:š|â½Ðe—Ȱ/~Å­ ±ñno@wù‚AŸKx=iÎzf2 躸ï¾=€•Å;+§CÓ¶ì_z©ÿÉé~—RJ¹ú§{3u†™ûí-.¼¶êºÍ2³â ú\º¾0|q>ŸóÑÌL[ôÀ†<=·/œššJœƒò<¥ÆÛm´Ó.³ÝvõZ–‡Æ½ú½é-–q»¤O¼W¯®Oº(’•¹ÙˆD†/šmž¸FÊóÚc~ÐÐu—/8ím8˜ÝAJ[±Æ¤9úf|.¥ë #-É_Ô…ü"Rc«³ÕˆÈb4qUÊÕß[—øî)]6ŒØÜlÄLÆå3cu½£µzÀ›ù¦ðÍ_o,ªÒVcþ~¾µ2Q›œuX?Ææf#J¹œu"uN—R‘Ù¹¼ê¹ùjÃÛÒÒâ ¨Úί÷=Ú73“o\{y¹“ÔY]è­+J¸u¿Iî®;Q¦£µÒ¬˜øCæUrîÓŠ”Gœ’ŸÌÿ”o7³=ý¡Mé¯bŸCËõÐÈÑbóÆ)ãM8;3Œù‹Ã º®ëм$®‘ò<ô #]¥jmÕjB”†b½'ÍÑ7cÞ”ÒãèzÀÛâ èzò4é ?‰ÎËr4âvÖ¥t|Ùg̤²ÕÛY«üžž‰•¤h*6ÞÝØØb.j;o¶:,G#›'ä]Ïä“\ü+´¡¶*b3V•ÖY¡ÌÑoïæõta§•Ò¢iŽÞ ]µJé #--É¡ï¶×}×Ρåzhdh±ŒÛ%óÆ2/Š"Ñe™ùí¾ÎZ¥ü£+×HyzËÉãPèWKtÜ(ÅʧiZUëùþõþEDªmö¤þ+Ó7”šæ0o• †ünçz­gÌQ·D†}ñ;° #6ᎈ½sÔçRªµÙ²Õ6ûæ v[5;€¡h`z¿]dñŠmó´RzqZUÛÐ̌ϥdã¹,Û_÷Ý<‡–§l-–i»d˜¸é¢ÈÞP_×Úá‰ÌÎM$®‘¸ö HÃÁP¬1iëƒYã·eÛmÕ"šVUß`×õÀhÎ/HÍþ&$òhyΘå|ïè½ÐeDÖ¿iÚæ—I[Ö!Q 4_kûú€ºíö쪱UiÚ–]z õÀ‰ëøøº$ L”©ëíw)Uй8‹Ý:‡–¯\-–¼]²M¬sºÍ‹"ó˜ªsºu}ad$`þ?ÏCo#Ø›ßöADì«båÐz½âkjjnnŽß–}¾Õì2ªÚ†|.µ0Ò‘ãùN•õ µJÅïœ^—ÏŒYÏ UmçûÝçþ~·®ר­«ÀNܬ¯©ÅHsµ“ÓŠÕ8úfF;kÍu1Û¦Ï!IliñúÅÞå-à\œ5~Þµsh™~‘¡Å̇g¦l—lKªmæEQC}¥y0tÖ&ý™÷µGÝ©®Z¥Þ–³{QÉo‹³gϺõyâÌctÙ°¾ÇŸzÚÜW¯]»–˜xäȑğfÌ–Obmrr²½½=y9Ø%ŸfŒÀ¾œ/èä­Ó—Ù)¡S[¹ %º ò¹þËì\¬µµrÓ¢l5"(Ü[· UÚjD";l´…èzÀÓÄ6<í˜îMžž^8½Ñ¿ööö-/\ ÒPÌ|Ú6îxlooOYÎ.Ôn9šiE¢Ë"•9âºØxÏéá]]µÍOM_ˆ¦9z/t-ž^Xéhqù‚}ŽD<¶8Úã¸ûûÖƒ±l…SZ ù{öÙgó)F†Ò–È¡m{LZJ`¦i§[@h¾×á‘ùP@×ÅåthZ†í¶ê->¡ÚfßœÌÊ9‹aÄ&|ñwvDO{üۋв,D«jši 4zºß3èœîMäÜ #ÞFñÍô9²vhÚîıØÀ˜4”¶ÝxOZÝ©®Z¥ü£1Ã0ŒØÄ¨_©Ú®SÉ·4.FWÖƒ·[•¦Å#1súfšVUß`×õ@h>>‹½¡¾*×ø.3óVc«ÜÉJäZH]o¿K©Í±b­µ78Úi÷{6É^»ˆLJ^Ñß“¦UµŸ¶ 6y:ZFDD© ï›õ5,èJ¹ú{ëÌH¬ÕÛ5{zx¤£eX¹žœzgr᪶!_´Ñëm ˆ(—o¨­*×§kŽÞ~wÀð4-Úí¢/ã§§¯ R®|j¸íÕÉ6cA ̽¢l¯}g„Z¼ü·ÈÎ÷ÉÄŸON½óåæÏ$7cbß0ÿå{×…ómUZrUÍzfÛÓrïrë‹u糄½ÞÆÕ+c—£b»ÿ䉣š–ò'õî5u¦7"ÁÉ×o˜ý[Åݶ¯ØÃ-ò¿Þ ýûê/õúj{§¤ôcv–õÏÍÚZ™½\‘ÂÛ<6ÑszdA¥j“WEßsÌþ?Û5I>W,;ß—²^`lœ”wº¤¡=Ÿö ?ÿsÛ˜kÓÕ§gЙóê3[× i޾™™¾Ýk¬ù‹# º®Bó½ÇvVÐQ.Wœyn/«ŸÉ<~µOJb_Mߥ #ü²ˆ®/ _œoë‹ïgó!¡¡Ów¹{×àç+Éj÷+p#œ|íúáõØìF$xåjˉ£ÚÑûyä¾]ÿüÿü×ÈÍ_}û-ÿþÏÿYÄ…nï”d;ï2žw;`+¨Í׿ýŒ†›è Ÿ/ŸÓ¥5÷œÄ ÂÜ-Êt«ül9úè}!;-ò¢>¨sHKçĹÀQóF•Q„þðQµZ;"òüœî.6]:×ñ»7?ØÿØ%>®íÑô¨bqv–ïæª\JHqTÈ,ï0ÌÈÂólB’Z¬ËŠ™òh©´Øb§ Ƀ±1Že÷¶*ÇDt\Ù¢±XЬ sÙv冒3ÑØGTUòè|¬KÌ”G‹«©ˆ$íå“ñÓUs³zc²ƒeÅ-â‹BB3­ZãbFdÙ„P|Î5ëÁ꺋L<•­î¹>7wëÖ­›±QxÐáiã8Žÿûë¿ü«¡Qo¹$ãH‡Ù{aïA”)¬ÍÍMÅb2ËÛ²ììkcìmÔñÅÕGUÍq­ŸæIÛš;WFÀ•ÎfdtšXVÌLÜ[«Ë6zÛ¡þNœ¸¾"®Œž©v¥ü^k9­DG’D…ò¶ê¿ |<>99999iãÕt+°e+Ý)‹,Ë¥owâw¤ O7¾“öÝÿý`ÿcõ¶óñx<™¯Ngµ©rˆ†ÂÑðí׬º¿’”ȶΠ˜'ïQµv$ËõÊVU¸sR2–¾m‰ô\ÅcŠÕ_jØÁ†äýá!å÷3ýšˆºÚ%gúõ6ÔT`Y®×öI’"áuJ“Ü⺋L:|^,+fîE/Šò%)1U}Cu«Ò6¶Ñž²’\vuUt[ZJ±ÒɃ3}úñ8o܇fã5«[•º\¯lÑX,ìaÀØäLû~i¯{0ÌÁ‹bõô¬ Öˆ¨/0è#¢“ÓϬúÄIDATÓf!eùôðàD›Ò®Èrhp€h`0$Ë'‡º CÃÜôA ˆj‡‡²lÌ¡]÷=tãÚ€ñOQ…:)e˜û@‘_/§±^öõµaðú\,$3ÌéîÆÓÇ¿°’J–_¾¨ÙTó[¸>7×6¸mðÇûúû¯ÿ£¾ñU}ã«o¾fÞüáÿû_çê’Ú 54§®ÊhTÛ¿bÖv ­JÎô«%žu¾­Ú•s×M,–„„IJ{ùdÜÄ^éôæÙ‰7›wwFÏÌ {Q~´œvÆV ´”X‹rwÇ—¶­Ü¥es&°iêN„HŠŸéïh]|€ù4#úA²ÿ±zÛ…¢Ð<–£u4y‘e­º¿ú©ºä #»CGµêôh”œ´ó(¿·—OÆ'''“ù="rW*è礄Aà¦#:¬®»ÊÄãób˜‘…‡éˆ$±{ùd<¾´-ëDÒáîá’»(ºƒR<µÀ–§_T”æ0J›&v/ÿhùQn(éÁ[¹jr~kÏÇðlðÚ'W²Ìœîn<}úÅ¡~ ý ò´rÀ0trj˜$R–íÙ^1IeŸCGA¦µ¨bU/·õmŠÓnÞœÈ-±±žo«» ¾Ñ4ã×A5ßÿéϦ> N}œúèÿ–äãéŽÞ\’UÿÕê½°÷ r}m~|\?Fãø³±>Ú(?Í7,–ŠÅÕTDÒ÷æzóîÄ}6zî4Öc-Ç.<`¶ ò}¸ÑÛZΈKóí(A.<Úš¿{Ò¾ÿA²ÿ±é•ÞNsÚ=Ñ@˜ë$¶1I®-«(/— Ezm Rw£­Õ±¥âj*"ùµâѪ íP3Dþdâèy1ÁÙ•RIHHD¤,~PîlãÚIî¤.fEwPŠ;!} z;‘$Q›z"þÓ íù§®LÍÍÅB2Õ^¼<”e¢@ OÙ'fµ1è£6Wú»b9x£­¨^Qå·ª—Ûú¶ô)\üFH–MÃ-ùôuåÕI`xêú Óõjž§K2ÓŒ…AkãA„\•¸ÔjÓÃWÌÚøh£|6wÞtÎ0Á™Ù„$)ኩ޼9q?žÎ »ÒX/µc`TY–†ÂÆE LúÙÅþN_|iàbÓ¥=ißÿY²ÿ±IÛ?ç"R5'¬ÕåÆÂB-Ðû’ýZ»É"¹š^o¶¬îÔÙ¯G¹¡¤¶WØóŠG¯ì׎›l¨©Àg®kGÝWÖL:x^ o±MH’âÆ´;Ë;¥çc±`#„VêkSº’\ßœí¢+f!ä[}Eûcc©+jºuA{îeP·BíV¿%"::<`m³“úæ^»’e%Ò`˜À`¨ïì~³c0Ô§¬ºÓ_a˜ƒÃ#5ÿ¾Ð`Àúšå08&åÊÑ˳“3ÚF;ö¢šE†g…89ý¶¡Ÿ¾@€a¬êÕ¶¾²|øÅãÇ- eùð‹×êÔ™VŠAˆ£×¯Nú®Æ¸lªišÿùi.]’fÕ7B±½gñ€¥A³ô ¶+Ú¿bv 3ÕäI}7w®t.ËÛKókêÊEÛª6ÌõæÅ‰wjô,½°[õBË1ÆEË™‚~-è’¶¾±yÛ¹:¸±ØÒ—G8Ý\xºñ´?¹˜lHKNçyQ=zuvE¨óùäd^;Â(8ç·îæòÉxNJüÓæßÙäf–œéErÕj³0½óldhu?Í/´˜¾H®ZݪÔÿ!ätP‡ù¸¨ü.µ“¼…-aB=ý©±1ÀTàèít¤ù8 ÙD!SЧ™]w•‰·ç¥ÿ‹¤[À ÞÉÇE")!¬Ì5Q¹B.ŸŒGRé„”+X?ÙlmœOÆóÚÙVŽ‹vŽ•o † ή”fÕvئEurúb° ÚsËàõ¹©ÀÆÆîÆ“]"Ãé‹JD$SßÕ§D+S±ÓÇ•Ý'»dzÒFàÊÔÓÇ•§»Ú „J’ÊÓ"9›ºÒfbɘÃÀ•«}µW»OÃWCò«š³ªE°Žè¸ØÕƒõW»O_YrPy¢ž ØÈ&`Q¯€Ëú*èµØëâ“'êYšáOâ\€aôÍOÙ~Æ0»OwIwºcK5c7=ÇõïÿôgKY,­†ç“ùädžÈpvŸ¥A3ó ¤;=/3±ÏqÄ Ò)Ñþ³±žmÓìIÏL¨OæÎõ"R¾vobB=ý/’z¨¼n¢·ìó…¨K'Þ‰ÑÓné…i¬×ZN«áÒ ÃŒ,Œ.MNòÊ¿"é‡%íÊ©ÀVC7>~‚ùì³OßûñOˆè—ŸþÝ}ÐûüâW¿QÚjKT¦}'M™Xs²úq}}ýÎ;Æèî׿}òÉôß·I[ø¿ ,½ƒ“ï.úûmÆwËúï/ÿóSul|UÿøoÞ·iipIoß\Ÿ×§Ì‡þ§žû÷ïc& \lºô´õÂï [Þñ^”z¥K—ƒwiàb£ìIó7BÃx$ï80Ý@ù:Ùu(­:«ïÝÈb©´ˆ‡zÁÁ!à2Sß¿“Ày™4pèÆ|à„¯êPAgtiOà›3?À3Xî.6]úNçfÒÀ…§ßIÀŒ <;,(öàõGÞ°' ¼eðaI€W…!EØg€×ß!Xî.6Ú¹ŽˆÐô2˜ä¯?‚4ð®€=ià’ \xð4€ €Þ¢óù4YÞ^ŸÔ1>¾´-Ë:¼ÙIBW:ÌDÿ§±¦KÛr'¹¼Ëu¼uƒS_›o8šùµº|Nb´÷ oÙ£¤Ëƒ¿{Ò$)!‹››››››¥ÒâÃ\V½)5-…„$2˽ã>»áÑÑKôÏîÝÍU¹Ôjqssóùsž„^±Àª_XMEzÌ/€ €‹GW÷¤uî·—”ÁÅùµº\_›7ÖžÝkÕ†Kõá6`9qoußP–Ùu™tE õµùñq«ÙE'*2Ž×žMñ5gþ¥ôåòDFdY–3ËžËÒËò¶ižÛK&•Ò?D„v€nP«ÑP¸Ÿˆˆa‚³+g‚gvii»Õî5ÛO½=ÔÌT‹Y3uíéYxCã<›+f”ÙÜÁ™9£³€}Òèuº½'eÅLyT\ÜË''â¦9ªæ„gõ†{`Yq‹ø¢`ٽܣåâÎòÝ\•K )Ž ™eíbFdÙ„P|ÎéK±¾î"××ö‰hzÔjÎP–·—ïæª4­L0ZÍ.:Q‘“Ì?f?^xžMH’$%²Ï<”Å0#‹¥Òææ¦6¼CQcžõµùLAÉÖ*¥>ÄÕGUí!€¿ŒNËŠ™‰{-#}õµy^dB±($X‘Ÿ_«;tOŠ3š5S÷Ñž²È²-~ÁhZ•èÈ­Gk‘Ù(¡©Óqè‰@@Ïá×|ËŠ|<Þ2ª'I‰ìBT\”¤DöÁL¿2ÐX­5JR"9ÓOÑÑ„$Q¡¬ s– D4ކ‡ˆh¿V—eY®×öI’"á¦ÑJëë.2ñPÓx2_ΖGÚ÷îÙ…[NTä9seYkF–ë•­ª6’M-QIX(ïPt±TBoà/#‹%!!±ì^>×í®W¶ª’”’âJª[•¶†Qµ‡ffÍÔ}8ò ¼(ER¢æ79ò\vNJ'³¥„¦~AQ aŸ‚4z—.íIóËô³¬ÈÇy‘e!Ä‘~¡‹«ë®2q[SA )­nc˜‘…‡éˆ$±{ùd<îv+¹=]Ê\YW4fŽ¢@8·8MÙû¥ < vÉÁ W[³fpÎ<àÊlÐàÍL«f/¡©_èª'A]¡¿“Æ…ˆˆÂ\çQŸ/™X½æXV\}vlJgWJ%!!‘ï[É}Ï\–ëÏ„\•¸Ôª$­À9Â0Á™Ù„$5Â'ƒ]R]‰ gÑ=÷áÌ´úãàLýBW=Òè ½ñ´ýÚqc)ÿP8È0 Œµ†@ 3¢ìF(ï¨KöÛ]w‘I³ûWïQší1 ¢þ>‘ª9¡íÐÑ…lB’\vš„QTd*psæJWc¿vìíA˜Žà6å©hµm88Ð –æ×Ô…|ŠeæÂ:k_ÞQ¯sc± ôµŸzg¡7k¦î£LL«[f*³•„¦NG»„}Ò¸ø¾'ÍõqXD[ÂDœµÕöDœ]Ò^>©Ï-z;‘$‘—G³úñH«ë®2Ñ3²XZME”„q^”‚qïÃg’Ó,»§ðÑ¢å­ÉÉÉxœ/—æg‚žÆb£·ÓUóÉøj8­ ¬ÿ¥Ïœa‚3¼z³Ì0# Ùi–3«ûœ²;y‡ú[ò ήd§«ùdÜÀNXàI˜˜P-s$õðjWk/òqÅb¯Ìmì§£Y3uÞ05­Û²ìÖ£en‘ÐÔ/˜^DC—æ³Ï>}ïÇ?!¢_~ús¨ô>¿øÕo”¶úÍ7ßч~¨ü¢¡DkN¶¨­¯¯ß¹s§%9mùõoŸÀ`¼ù/8ØgðŽ¿þNúŸ÷ïßÇL¸Øôâž4:A¸ðôÆž4üá=¨\”ù4_NáÀy“ƒöi´¢íIC„ÞÊä-¶=ì3Ò0sh༔°Ït ìIìI— ̤ˀçù´Ï?ÿÚÒðNö¤Ý¹s Òð“Nö¤aÙ:èA°' \x°' H ·ÀGQ‚4zm §ðiœ?˜CÒè-°' \&Þû}ù÷ì_T‰è¿«C ÷ùçÿ¢´Õ7oÞ诿ø×Ý;¬üBDþŸ‡®À…£\.ÿ?á…«WˆVIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webtest/threadgroup.png0000644000175000017500000002733412032647205025066 0ustar ebourgebourg‰PNG  IHDRd 3eÞ\sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÚ _QòE IDATxÚíÝ_l+×}'ð߸@ŠöEû@ÊË`‚òrK •u©ug…lM¸½ pù°®AÐR@&¾€Bí«h-® •Ì%RèT@ï^”³;UIñªØÈ ²÷Åf@FÌXä›ô’4Nz}f†É™áú/}?ÐÅ™9çÌ™áüø;3œNNN¬1t‚%‚%‚%‚%‚%ÀõÒè[¹…™™QÎÅý”Ÿ›÷WK´´±Ÿ ÂÕ®€ªÖ6¦ž[ÈḚ̀.ÞäÎVÔ-`'d–¤ÖsápØ)‰ˆ±f>¶YWUì0qf™®VÓ¶IÛÍŠ/j»¸²Z"Ƹ˜­¦ïÇZØ`š`9Îîr,ßìÙzÒvÔ=eýÍÅŒL½!Ü€ ¨j{w%Vhv—Òß7&‚Ú"CÅ’!„ëÅb6k߯ÆÓ|s$R‘àŽnWÊtÚ`obg+â«ï¥éCÖ”é­Ôè*Àu6ý0,cr&^hÎn6 ñåbÛ8Ïáæ}cØë’~àÑÊY½¿Rl«½Ú»Rɸˆ±Xµ]\1DJ"’3«3¬Zi­#âÜ›|àw²R& nW†Ü,Ä vÚW†b‡VnsfiÌÚÅåx¡©ÔÚ‘ˆ«J¥á!ÜznUf̘,ªíâJ,ŸÚˆ¦D$îèv5:˜G–jíHÄ-Ý4±—Û å|fŽ[ Íy\ŽBšIƒÍklê vÚWg.n^fɹ7¹Ó+®H\䜔ֱŠZä;,u“ÅpÏ¢–ž–õkmê¹…þÔŌ̘V¬¶8çÞd¦; *îH&éå|¢–«j=·Ð­ba!§×kÕ`ó vÔWg+nd°t®9Êç† ýÀc|±.ÏœÝ̳µ:gY£‰j¼ àʼtùUÚüÀ±›ÉQ†ÞÅ2FG­ô+~:­#ëºÁœ÷šÍ|v7¸¥çvtµš2)ÙÊ5ZÌ0a p[2ˉ B ´DŒ5óÙݶaR­çŒÃ¡FÍþå<£‹«j{7›o2»µÐƇ§¸*gLK¡€ h™+c²´ÛÑãýfl¸I¶%2ËAþÔ†XZ•›…øbapЍ'y`2·8ðR;É£X¾ÉFjeŒø fœ‹)¿1smâá‚¡ØÑo%%2K“Е®V³â@ŒâÞÄNïTj'áíO³YÑpýŽ Rûú;œ{ÒÀ 敺£ÛÕª”ð½ÏÅlµš¶Oï!Úh’±µDäŽnK6mçbVJxûÍÆï,náää½pqœßºY XÜR†@f €` €` €` €` ps™ÜînooýwÓÇOOOÇKmVôÜ5Ožf\¿wïc6æ9cûùk× Z¿£5Œóo<ú±ôðeì`·:XösÏfái#’\£F¯=¾Ö NÏ^{¾ìŪƒ+lÓOâßÞ{ýÇÏ/ëÿ¯×$½mp{ƒ%ç^ŸO)I»ü×ÈÔvq9^hvçL@ef>À+fËé€0º¸7!mGÝzF;uþú‹'ñ•ül0·«­ß{öõG?ÿÁ~Æù<_ ÕÖï­|̈ˆã{† ð‹'ñoÿàgZjØsèýo|ï{¯˜&•ÒãW>xnH%_~(­õÒMëÚߨêU2ø{ÿöi-\’±ç,çâñ%Ö,f‘Iç€sæôw–þIŸ¢4-.ÛéìJVWô˜G_Áœ÷1&냻ªZÏ-äꪪªõÜÂÂÂBNÑ=o/ÿéëýó‘DT[7ùÝdmýb~z,ug©I?5M'ã~îäüãHiôúŸ¾Ü ¢ÝaßÁÚ‰èS³ùàše–zr™‘õhHí$bùþ8ê„ÜÑí²'·˜‰‡ DDœw³Ì‹ ‘ÆxõPúñ“¸ß¿¢ýûÆVcˆ(¸öÁ3oxöß{í ·¾üPú`ýžßφÞ.ôù¯ß»ç7üÎ2hQ»^C¿‚öå‡ëâßî.>XKôÑ× Zk óÀåNNN†ÞÚÛÛ3}š×uðþ‡ݱ©ý¤.ÄÚã®?zûÉ“'¦÷†Á`Œ›÷<ËÓÓÓ»õè‡ÿ¡ôø‡%쪖½ûÖ›333xþ3 XŽÉ,±Ùà2áœ%‚%‚%‚%ÀUz ]@D333è@f €` p1Æ Ãªj{w%Vhöž‡Ì¯ä ”Nõ«¹t ·*XŽÆžz.‡.Ë¾ÆæªÌØR¶Ÿ¥Òi}j»¸/4µ×Þ„´uëñÕêAÐb¶œN晨 νɭˆ«¡½ÏHÎ,Êýd¶‹+±|³û˜Iorg+ꃀsÌ&­<,çbÈo2U cÞ„T©T¤„·Yˆ/ÛC1¯,%¼œ_—¤Ý¶ááÎöóŒ­B›T–>RòÙÝùSû"看Ùr¹ZMAUë›±¼B¾„T®T*ûûÊnÖ/áÓp‚¥ Um×νóA¹‚ó^Εƒš»!Öå™|MJ븟ÚÍ3\E$.ŽT¸ˆLJ63çq ‚;º‚ ÒÕªP±€½é~gyÜRúH WŠÒ:&r[ÃŽ[ 1Ö,Ä ݰÎhò*!ð é“ rfQÖÓY}˜àLÁR¡%’eù°‘ †&Îz|DÊQ«C7Q§uDD>Ïìy6lÖã#®˜\|;éª;º]‰©õÜbF.­n†pž&a7 ëOmˆœ—VWŠín€ªçruUwpÞÇXó Ö!¢Ní É˜o>è>¿Ô«B–v;½YÏ-ä&=ݨªõÜr±;x;ëñr®uU­ç&/Y'—©ýÏJL å\ÜHuÓµlk!Sˆ‡ D†KUÏ‘;º]öä3Ý*úW·ªv Ö]{óR™ÖÊýûÝ«aÉ—ÌDܶ… Ç—“““¡·ööö>|x§ž±Œ{Ã=yòÄ4âvwc XŒñ’UŠ®Иœ³Ä <¸ËFÏY¾äd&€» ç,,nP°¼&÷͹äf\ÕZ«õ\8‡ÃwçFE¸1\—`©œ‚/úÈu…GÆëPVÕúæj‰soB*W«i?5.¿ÁªÚ../„{Ãàæšü©#CíÁËŒ™ÞcÝŽö`¬4zýòôž s›±¼âë=m»½»òÛîJ°l–ô|´tØH¢¥öXíõŸ¯¯ ßÿ¾Ì£þZýÔØ¼¿Z¢%ýY"ÚžµEô̪j}óþª’5œ{µcî@ætu¨|›2MrjÖn³ÕtEìKpX5÷&v¶"îáG¦t—Õ§Nݦ­ÕŠuQÃØÂ¯¾ú“W…ú¿:î«¡ÚóÛT:º¦‡%z’èØFWÜH{¼šIç n>«Z¦^A›ß«|ë“ð÷G‹šº^¸ž&†ÕŽ€œ‹ÙrVäœJ‡úÀZ»¸¼˜‘¹˜­T*•JåO?ùä[•÷DÎ9³å²éc–µŠ7!U*)ámâËŶqmRYJøHÉgwÛ†AÛØ¬ªVÕvíóy©\®T*å¬Èš…Øfc8׺¿*3æMHÕí¨)§ëÞ1©t¨…Ïžm¼7U_i“F·ƒ55~#Y€[‚˜-—¥„—sãë’4Ц›oŠlt§XÐøÎÔõÀÍË,úùoŒÿ¾úG¿¯å•2c$†B€ O»TÕví@áÜ—|à׿¤ÓªZÿÄ.îv™ºˆÈœ÷æå ÖŽD\½ïÝqí¥ááÒî1±Ü²ÌÑLJqî5«º3PB$.æWK% wô»Ñî?þÈK¥Òa=å÷YÆ yFÛª.ç=`_é}eS»ã55ú!ÚX’3²1‰××ݾٜ‹!?yæˆãkÃÓ¿-6ß9¬à ß™`Ç6û ÀÕ껉†a‡–QÕö®T"bK!?ùCK$Ë%i÷?â¢ã–Bž!\Ä5|4œŠe™fQÖ´êã–BŒ5õ§’cä N‘Ú.®ÄòM}x1â4¡J˺œ÷€“JmújºÚV*Ò•JÚ8>¯äŸÖ#©€ œ¡Ùö›ï\VðŒÛe²Ûê“ —ÏæËë$ç,;µ…H;ñ¥¿©Ô:‘ˆkÖã#RŽZ 8}®åà"Ö‘ödæ3˜¨LÓÙf=>âÊÄ'“Tµ¾Ë+äKJÚõ,õÍû«¥Á0¹±A™Œ¼ºâéᳬËáE£c+ÛWSÔ>E¥B ].‡ôÙÎÖlûÍw+xæír;6\± ÎYvjMÆô³’•J%+rÆšµŽ ¸ƒó>Æšù§Ý3OíbÑþwú"µŽ^¸o>è>ÃYœ‰Ê4­W‚,ívôØ›ü7]Éä*Êx~î¼êS阾º˜5-M‹K¡Ñ¯ 5Û~óË ž±g.bÇ€+ç4³ÔÎÄèc°Ýƒh‰d¹{R0º]öä3™°L¤bî—“>¹`¼v€;ºm-d ñp¡·HÔí¼é‚x0X~@&*³Ù›‹Y}¶ÞŠô&™]²hVu µ“<Šåûcw9–”8Š2 G‰­ˆU]–à¬R›¾š¢vç••ŒcÜ—ÜIù',ÁŽéæÚÁ¦ëÞ3n—3îØp ™°Ö3Î56cyÅ—ÜÙŠºUmï®<½ÌÖ²fái#’ܹïŒ×v3é{òèGFU럠{/¬{ÑKWÛK×ðXtÖ`ùþ‡­?z›ˆü~¿ñý? Æú£·×ÿpôkQcsUfl)Ûïñ@ºÚÚÅåx¡©½ö&¤í¨ÛôÛ çÞäÎVÄÕÐÞg$geíËŽŸúFÕ^.ugÝL[2iϘ2íU­–ˆhÎãÒöQwt;m\wã:޶p軘¾Ê_}õ'¯ õ5[|ð{¢×çSJÒîÄ5ÒàѮп؊Ùr: ¨õÜbFþêqþÿ•þ︺¬Øt¸Ó½BÌV'ù„]þf:ÇÆcrfQ6ݱõ’õ–8ì^}GÒþ­ç22Óë#Nw§{­zLmWbù&cö"‡{>zéŒÇ"½.Å—ÜÙŠ¸ŽÿÝ•þ·Š3Åï³ÇÛ_}ùâW_¾pþ¾¶™9C~Ë~÷&¤J¥"%¼ÍB|¹Ø6ΠM*K )ùìn‡ü©ý ‘sÎÅl¹\­¦­vСÛªêd°i‰Ãž±ú³=ü-.,äê½ BÀtUµ]û|^*—+•J9+²f!¶Ù]ågÏ6ÞsÔEsñøkž6u… ¸#["ç¥ÕͺZß\-q.þÏíÔÿp¶9&êp‡{…”ð29sÝ6Ó…6Þ~ÇÖ&i-±i†ÍŽÔ..gd¦/5õñá&v¯UɪZߌåò%¤r¥RÙßÏPv³áø@„^:÷c‘+8ï#RZÇDÔ8”cL>lÑqK!òÍ]gNvÏ,ýå‹_›mN«÷m‡gÛµ…s¯¶f®à¼—så ¦þ9ãÚW —gŽz]ãÀ¤ ·$[â¼g¬þL‡;RKÆA8¶ÙqÁýn´›øC"çT:¬ö•sþTVä%i·ã¬+´3&g32cKÓÎØlz{…å¤+ßLÝx›Û¸ØïÏV;’iã§;>ܸîupÈêÎ8,‰^šæXdh­ ¸=sDtÔêPã°Ä½þç^^:lP§uDDs÷™ÇÏáœå¯ûb¢÷m·”~ÿjŸEi¹è’·b¬Yˆ/ô(¥uLä>sÏØ¤+•4i£šD¤äŸÖ#)¿éžjå˜bˆÌ|}ôÅòO»B¤³b)#3.fÓáŒn±éÇî&“®ÍfºØÆŸËþl½#™5þœŽ×¾{­{L  ªõœáÜÀD=3úgÿªÐv…¥“mlü9$—ŠÒtÐjïTe¶,%¼ü,‡ ›M?v¯8ûsq›é?I÷ŽßŸÍ>-œúøp³º×~·Ï-»#³/ççò½äøXdÞZ- k6›ÝÔÓZ"åŸþ©éðzðï¾õ¦ösÚÿôŸÿ‹þæ?ÿãÿ!ëŸÓ B µ¿ãY‰éÉ;çâFŠ´/#ÙÖB¦ˆœ]ƒ*òýÞÕ°N ‘Lò –ï!¸£ÛeOn1ÓmÉ?*š¢gˆJú¨q_r'å7]Ç€Hí$,?¶‹lVDpGãKùŒ<¦+üÔÙ]Y-‘/¹“ ‚?“<ˆåWW<;[‘±u ^ÃÙÇfÓÝ+š½I\ÌNtÑòÅo&áBïœõþl·# 5þrŽפ{íz,ÓZ¹¿{'ù’íâá >e襩E6+â-‘,÷¢c ÷Ÿÿ\>AÂÉɉ鄟~þ›Wÿè÷'* 7jBÏ\²óýá×%o¦k{3Ûñ)¸¡Ý‹^ºZ6ï<ï ‹0€žÁft/zéVÂSGÆ8ÏaX€›Ë&ð!³ÁÁÁÁÁÁÁÁÁLÙÝHý§Ÿÿ`yoXÐ`ÁÁÁÁÁÁÁÁ.0Xªj=·°°°««êå´ûòkDË&:ÊoÞ_•Ùp|å\|¯ò­ëІɽ‰­ˆ[®°=%ZÚØO®¨ pyÁRéj5mTµþÉuZ+ÎE­míâr¼PˆmzªéÀ5i›Þp ƒåXŒÉ™E¹®¼É­¨[JõÃXS{Ó›¶£n½㤡¼°ž[ÈÈL¯ø˜&¹"q1¿Z*ÖS~?5œ·Ä$C³Æˆëd©¯¾ú“W…ú¿2ÆHÎ,ÊZZ3Œ_5¬ºBmWbù&cÆþÄ. pùÎùoBªT*e)á#%ŸÝmNËi“ªÕ´Ÿ´w¤„·Yˆ/ÛÝ¡¶kŸÏKår¥R)gEÖ,Ä6z|ÊÈL_êŒÛãÌRÂËäŒ>ÉáRÏžm¼·¿!rι˜-—µ‡cU”ªÖ7cy…| ©\©Tö÷3”ÝÄiN€ë•Yîíí ½óúë¯Û—ʏˆˆ\ž9"Ei¹†&iáð@áÜ7tõ“¿ƒZ;q ‚ ¸£ßvKô‡D^êå…¥‚óÞ¼¢Œ[½Î®$3Fb( Z ±k‰VæA­‰ôší5›Ô±jÿèÊÚ³éŠÞòs‘ ¸£Ûi«Mg÷ðáÃÓÓÓÉ‚¥¶˜ñ_«"&wÜRˆ±f!¾Xèæ·Œ”Ö1‘{pì±;‰÷—ÒƒG7[åËÆaob'å·iÉp™†o1ɲý®sì !ð é“ ý³åt@Ý.pvOž<™&³<ïi4ëñWÄÑ Dõ±Ç¤Ô?ßY2,EÊQ«C7Q§ud›ã:»úÔ¬LŸg¶?ƒé$›öŸ[W‘;º]‰©õÜbF.­n†öSA¸˜–®à¦‚àÎû“¥ÝŽ#sf¿;ì¢,Õ<¨uˆ¨S;h2vN-(Ó7Ô¯'2ä¼ýgé U­ç–‹Ý“¾³/çƒQ.ÏKWR«;º]öä3ñpa( ¤v’G±|Xrp©lk!Sè.u^-1–9t].5{“¸˜Õ'Yµ4\ †ÑÔÞÕ°Ž»"ÓZ¹¿{5,ù’™+ûµ(À'œœœ˜NØÛÛ³9ÕyëáfwŠ}ÔýaÆ@°ã%t)Ü”Y X X X\ ¸À®Æû~„N€+÷î[o"Xµ¶þèmt\¡ÓÓÓ™™'·ßÁ0,ÜQ·¸,®}°TÕznaaaª§vLYc=‡Ãá°ÃJ¯ …SÕØ..‡ÃáýY%—½ÛÅå…p8¼\lãs·Œ£s–Ú]ÅeƸ7±³q ÂͽϸªÖ7WKœ|É­¨[]Ç¡ù9ß«|ëF¬×Ó¼ÂiicëjN"îÈÖFëþj)ÿ´q¾WÔÖï½ó1cœ¿ñÁóµ >‘p 2KÖ,ûs)t…­„@h‰Œçt ¸öüy£±ÅgnzfÙ˱¼>ŸR’vø#®‘¼SÏ2ÿú©aš®iÄl9г,gånEb¶šè³µ‹ËñBS{­?or(4<’lÔ—bÔÀ¤Ãè2ÐBîÕS«f˜¶y´Uz¦®ý[Ï-dd¦×G¼×ÃíâJ,ß}°e¯êÁ´²];PˆØRÈo¿E‚`Sšó®öwvM ñ‡–H–•ƒZ;qQ9€;˜YÎÅãKÓ%—b¶\–^ίKÒ®ñìš7!U*)áerF?量õIÍB|蔘6i4ÿ3]P©ý =qœ4kÔJ+K )ù¬IãµmÚ¬ªíÚçóR¹\©TÊY‘5 ±Í†ÞàŒÌô¥¾‹Äò ùR¹R©ìïg(»9r.ó¸¥çbÈ?flJsÞÕ~jX6É9'¥uŒÏÜÕ`IäOeE^šd”MËEB~"—gnðµñʹw>è""WpÞ˹rPk«ª–0õ'Eâbo’^r<â2 ƒ Êœº§úu™4¾ß û6 ‚;úÝh7•ÔâJé°>º¦Áyí‹…ñ›Š6n,îèöÙG†‡K›ª«Ç4IÙ¾)ãØ6&¾)ÿAÒË?mlœwKz']ž9"Ei¹è¸¥cÍB|±Ð “ì·«2/še›ÝƒªÝIܺÁ½ó é“ ýA`ãðõ¤¬K› «Ï·I·0X îh|)¿*I¾snÉQ«C7Q§uDD>Ï,ѬÇG\19³8.EœõøˆÓ2/šM›»C I©¾³dÓàwt»%"Rë¹ÅŒ\ZÝ >ëñkʇT 0¦}¦¥ù'ìjË&5eÆÈ{9] pI¦ù¥ÿAÒ§(ýôH;ÐÓQ«C¤_–9i;Xó Ö!¢Ní É˜o>è`¡¸aPIDATApç}Æ«+UµžsðëÃÞ‚&e^t‡:o³±£LÜ_\ÿéä¬ÇËùhÔ×'¢ÒaÃ~‹X•6QWÛ4©qX""­«/ÿ÷©×%³Ô“ËŒÜ?RG2ɃX¾?‚7•f!.q1«_>êŽn—=¹ÅLoRïrÓ±‡_wt;ÛZÈôʺ$õBYµ™(ÚIYtÔPƒ 0Ê´Vîßï^zJ¾dÆä—”®H\̯–JRñ?ê¶Ü"6¥9ïj«BÔvQ*'óɺ¿³$Fû?Ư-àzNNNL'ìíí=|øÐÉíeášÐ.gú9Ê¥QÕöîJ¬Ðd¿—¼ÿáG¸‘:\­µÇ?\ô¶é죞:r{èç¯æk—àŽnWqo¸•p#u€1Y•9==Å# ÁÀÒ»o½933ƒÓ–€` 0&³D'À€s––––W øÀu‡Ÿ—ÀÅy÷­7,á–À/Là"œžžÎÌÌ8¹2ðpG9¸B°@°¼Ó=©Ñ~©vq9/,ùOoôc ÇvŽª¶‹Ë ápx¹ØÆ¾·'Xj‡¿°ÁåÊGÁSD,“Ñb|Õæi^á\܏Чk]2ApG¶6DΕüÓIö¢Úú½{~¿ÿÞ½õ>¸pm3KÎÅl¹\©TÊY‘1yue·}3S}E¤„—5 ±ÍÆä‡û@ºZ­VÓs l]IfŒ–BA8÷¯e¼ „–ˆ1YÚí8^(¸öüy£±…§€Àå›êjXH䥒Ò:&Òò«=v¸ŠzVÕúæýU™™Çc1[NLæáb¶šL‘™MQŽ+ó«¥Òa=å×"“qEô‡ιø^å[Ÿ„¿_¢¥ý”Í‚šzn!#÷ÆñÑÆ·k [ ùõê´ÂýÔ^/îMîlEÝÃqTmWbù&c£óØ´M­ç3²q‹8ì„ÑZ¬VÓªaþÐɲrPkG".j諸í‰5Üò̲¯q(3F>Ϭ~¬ÿ|^ғΑ\MÌ–ËRÂ˹ñuIHL½ ©›êÉ™³œÊ:K9ZÐKhâC%h“Fs>›ÛÅåŒÌôI5·â\ ùǬWYJøHÉg‡szU­oÆò ùR¹R©ìïg(»©pÚ·m1#s1[©T*•Jèp³®ª;a¨%V«iÓ0ò‡DÎIiãS·)X2&gÃáðbFö&¤êvT;»&îèw»¯»GÀÒ¡~.ª\ž¹Áׯ£$çÞù ‹ˆ\Áy/çÊAmºÞIË1~jé]¿„H\,s1q™%µƒ ª64ÕzõªéºAsu·ÈvÚ~¥ôIÉÝH§ýÔ±Z›–8XÍᆠµû.Œ<À6Á0,ç¢6JVÏ-d ñeê ÐÆÙ´ JG„îÁT;+Jë˜Èe÷ÓF>§+Çmõ»cÜ›ØIùõôޱf!¾XÐWDkɘJ[ŠÅ*˜Nº€­(IŸ\è¯WoLÕf¥Û6~]&ì1 ¸¥ÁRçOmˆ¥Õ’~¶)–WÈ—”¶¢n¡w¾mRG­ÜDÖ‘>ÀKSŽõßžõøˆ+&“Æe¹³‘bZµÙ$‹XS>l¤)×ÜÝ®D‰z§!K«›¡ý”ßn¥Û6~]&ìÛ†¡;˜ïz[\žiÎYv/elžŽ\FÚØœ´¬yPëQ§vÐdÌ7t÷. ÕN§U«éWÙ«C×OQmÊq¼Rîà¼ÏX¾ªÖs~—Ò[ÐtL&Y•@D¥ÃÆt[QUë9ý70³/çZ„³Y)½mùÞVl‹ rY­Ë¤=`ß0"j–ˆH+|ºß­\ëÌ’z—2–¤ÝþHj'yË÷ú¦Ò,ÄÃ"".f—kÒUɳïÍI#×v:,Ç&9+{r‹™^ ½tìÜÝζ2½ª­šd¥w]®T|à¸&î=A¤2­•û÷»’/™éþ^Ój¥ “2a¹×lA ëuqÞc¦¶‹R‰8™Ÿ¶P[¿÷ÎÇŒ£ýsþÆÏׂøÀ¥NNNL'ìíí=|øÐÉíeÏÂø3‰³\Üq^å\!í2Tý‡7·xŸSÕöîJ¬Ðd#ñû~„©ÀEX{üÃõGok‘Î>êá©#×…~nïöAÜÑí*î-7î 0Æg–ÚU<ékS\O§§§x4ÜÝ` 0Ö»o½933ƒÓ–€` 0&³D'ÀÂ9KKKK€«„ |`2ø Ü&ï¾õ&‚%\üŠn‡ÓÓÓ™™'×Ûcî(çCe––gƒs–—”Å;<‡ –·Ówþ*f?Ã_ÿÍz à–Ë+|´²þ `í_ÎÅ‹hÃWð¾öÒÕɬ?~Aëu‘jë÷Þù˜1ÎßøàùZŸ$@°¼*£1¬žË]Ãvþá×~oŠ¥n`€4 ®=¾Fµõ{Ïð)ËñÚÅåx¡©½ö&¤í¨Û~’I^%f«éÀhÉÍU™±¥l?¢Òi'…ëñÕø¯Ÿ#ùœ7¹³qußg$ge-†i3;Ì5õå‹sÜ$N:M´£3«íâJ,¯ø’;[w¿|É­¨[˜¨p|<4g½V;øzR¥R‘Þf!¾\l¤¬µILÎ MÒŽà‡%â\ ù'«w,m©²”ð‘’ÏîvÈŸÚß9ç\Ì–ËÕjzÒ8ñë/_ØÿK¯5ÒtfÁ/)µŽöãPfŒ–âz¤tX8>ç,Uµ];P8÷Î]Dä Î{9WjmUµ™¤guV“ÎRïØe9ã‘Ë3GDJëØl6A¤«U‡aã׿}aÿgÞõLÎ,.†Ãáp8¼°«;ê´^ãG;!{3ûCKŒ5µhÙ8,ÑRÈo3ÿhá`tÆaØã–BDsíëòÌ)Jë˜Èe7Ic2É}õ^ß½àS,5:Ú©ª­×qK!Æš…øb¡~µØïò?HxKùüÓz$tX"îK<ðÛÎÏÀEËYH9ju(à&ê´ŽˆÈç™3Ic3©›Û…–H–åÃF*p^ïø÷©‚å„ýi>3WLÏ/ºƒó¾BS>Ü$™1ß|Ð-ªj9¿ã”àŽ:Ó0¬ ¸ƒó>}įS;höÍ6“zYå$?µ!r^Z])¶»‡óz.WWUÛÂg=¾n$&¢Î®d¼¢Ç9U­ç´ÑÑñÁò+nÿwöþ´žY–v;†6w¬ áʲ¬»ÚÏç“Y2&geíµ>„èŽng[ ™B<\ ¼Öf’¦Ù›ÄÅìÐ$=¹LíïxVbúÈ!çâFÊ®pApG2ɃX¾?Øè(J$}rÁx5ì~wn™åøNš¹ìÉ-fzÝh×uç}ùf“ȧÅJ»ù§ —ÝßY£ýã×–p» '''¦ööö>|èäÁ%S$mWu‹ƒ‹ðþ‡½¾ôöóì•~tknw÷þ‡á]p;¬=þáú£·µHgõp»»s°Wú:àC°<+Ü!Áòüi?aL£ïà†Àó,®_f 7Ýéé©Ã§x XÂ]ôî[oÎÌÌà‚X@°“Y¢àNÁ9KKKKKKKKK05ñ|Þ®€»,‰è;³Ÿá¯ÿfç,mRÕúæýÕ-mì§‚p¡…œK]€`9ì¾6ñRªÚÞ]‰šÝQ_ÎE'¸ÍÁò¿ö{“.ÒØŒå_rg+êTµ½»ò]·9Xþê˦•õÃÍy\DD‚àŽn§f¨ç3²öZÌ–S~""ÆäÌ¢ÜËD½Z Õþm—ã…¦öÚ›¶£n½¨zn!#÷®ZbŒx·ƱVã¿þ‘Öš®-"3dÆwÑ4WÃþúËöæ519³¸¸°««êPpZÌÈ\ÌV*•J¥:ÜÔgð&¤J¥R–>RòÙݶªêÁL›$%¼ÍB|¹ØÖ‹ÊÈLŸ4ŪÙnlRµšF¤@°´ –¿}aÿ74¿ RKƇµ ¤ªíÚ¹7ù ›ãÒÝ8Ÿˆˆ\ž9"RZdžùçƒ."rEâ"çÊA­­ªÃ“‚ó^Î'Ì€- ×Ên“à.™föw/ø¤‹t¥’&È«’Z¤ütÜRH¡uลcÍB|±Ð ¿Zu åòÌ)“5Ó¦p@°œÄ¿O,Q³\mÞ_-uߘõøˆ”£V‡n'Ìz|Ä“S†ª:XT§u4qël Ç®pwM3 ûï_qû¿¡ùUµž3žªÔÂØR( ‚àÎûkæŸ6´‰íb±nšzóËÒng¨p½¨ƒZ‡ˆ:µƒ&cÆ(HtÔêuv%™±‰ ÇŽ€Ìr2¿›&³,é—¶÷%wz¢º£ÛeOn1“ ËDDÞ„´%b]Poþx¸@4xaª;ºm-d ÝIÆ(É$bùþøê„…#\ÜeÂÉɉ鄽½½‡žžž½ÿþ‡½¾ôö…î•~„ÛÝÀ bõ¦Ï,÷J?B·ÀÝ1q°DÊw Ñ€` €` €` €` €` psÙýtäÉ“'è Ë;øÌÌÌ wàN™ø>V Ü58g €` €` €` €` €` €` pký85+a˜ïæƒIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webtest/http-request2.png0000644000175000017500000013253712032647205025273 0ustar ebourgebourg‰PNG  IHDRŒ¤í3™sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ/SÒ ¶ IDATxÚìÝxW/þÏLRhKSÈ-¤X±Õ`“¸"„K•q©¨ÓM,Ûõ 7m¬]òõWÜRН|×Þnî,´Rµ„^›uì5¥”ÕXx䴩кò¯´1h7šŠ~Év…ݵ›*ŽLii€¶ô²—Ì|ÿi¬ß¿,Ç’ü~=~ò(£™33gΜ™Ïœ9GÌí·ß^__O°Þfgg7ïÞ½û/ÿò/‘PpÕÕÕÈ€\m¼›~%äoîOþXá›ÿ™P\pŸ £Ÿù_ÜŒ\€Ò ϶nÝzéÒ%d”«ÍDd9òÀZ$½øÒUï¬D.CA˜>¶uëÖl9䔨3O³k”4"4(¸¸è+›€  ´|R½{M‚4)B(¬¸.g—.]B'4(3?ó¿Xø mñ¥¥‡ù[éó}÷Ýwß}÷!fƒ5"uQC>@9)p&EhO<ñ„ôß/éëO<ñÄÃü-â4X#hO€2SàÑ«wV~ùK_¿ï¾û¢'~ùK_ÏÔ9ÍkQO7øÍšÌkçLºHöédcÖZñlI1’‡yÄH!PþAÚ÷ŸyþôÙ7‰hÿ­[>{çÞ\ã4Z«½óψèç¿8K>DcöIÌ’k…ˆ«À¤64DhPfØ4>ûæ÷ŸÉç'¥Àì–ÝúÆò;Y.rÞaà8N­68–ä¨Æâ¥¸ÏÑ£ã5ÇqÇùi/9 ‘¥–u$‰%‡Áะä0¨ÕÇE§›°1‰kì>ÉžìVÇ$È’ÃÀqÇqjµåg‰ó'IÐâH¹ÒðÆgΒàV«S¦YþÐ' 6D&Eheÿã_Ù/ÿ7{‹/-ý—Škäÿþ—Šk²ëæ' Ïóþá]GÍŽœz°y-Ý4ìçyÞBãÎä³Tîk™Ÿö-‘eçÏ/IŸÅ;kfÍã-§üü“ÎÊë͸1³øph8Ü2¶äˆOÄk?ºkˆçyž÷ûÍŸŒŸ?×Иý~žçýþÎÅ•¯œÝf²øýþSÕ£8NCŸ4(ÿ -Ñ3/„âþÒÌ<õ̳·|ìVù¿·|ìÖ©gžÍb%úÎöJ""MƒþÜâ…\b´i§¾ACDTÙÞ©—7µZnÈò®DiKgÆéÁ¡iüÌ-§–}—Ï{ôŽ»çÑs+ëMܘøc]HHDc¦ÞØÖ¹˜¸2Ijis ÜR×ëŒÚÈa{{%UîØµ!ˮ܆†7 œ$é“¶ÿÖ-§Ï¾yÿC§åÿÞùqE–É¥j4[|iéÊþ°µÆì÷›£'Tîk™7;¼-ãÔbÑì£Qó/SËÃUô2釸Œ]ÅL2ãјyÞà0¨ çOIÁT.©%„hæñ–S~{¥×¢žF©• O”¥$-iŸ½sïþ[·ÈZö‡,¾´”ªÑlê™g3½ôè”^GŒj#¢ðk‰C·3å‚UÕ{ÂËz-if«Ü×Bö>J-û*£>W‘¦AYu†IÂ%K„ˆ*ÛíûŽÚ³{ÑyS2éJwí¨Dq‡>i°!‚4)N‹ûe„öŸªþóBÕ??¾HDÿüø¢ô'M̧éiZÍqœº›†Ã-R³¿sñ Z­6“eXŸ:új·™ïVs7Z}$õlT¹¯e·°»e_ø A!òYc¦nuÜ›‡ “$03“<HB"ò ½‘$bæOš-dN±ÒÊ}-ó½§VO“ÞÙ­¶ü %7}Ò Ì0ûšZŸó<ø…ôº£4vH6š•ÑoÿG"2ÿC“åLÄÍÖþת+ûÒc Áý™™>f9ò€˜QÔï¤É¤h /@@éºûð½û1ë©gž%ª’"4"JŒÐ"óüâ4(ˆüú¤‰¢o°Ñè¢VÛd_Ã$NdâöŸ6}ÉÍ&od]Æl“}ñƒÆ¸y„ÚÎãCmЍ•F¯:Ë™ ì±…Jè?/Teœgñ—¿Bާ 1£-w¥Õ'íäs˜¹w,$ŠÅ¹/¢èÐjµÚ_±n!@éJÙ’ö—wíÊ~PÇl¼µéÈn(¸‚ñÈ0uýSSý‘P$i³Û­™f"©UMšröFçÈ5ëëãê’µEÏ,†œ½#@ð"‘Ç`ƒ)XKÚŸß_MDï»þÝï»þÝomúEâ}á¯#Ç¡PJëwÒ*Ú :AÈzne ©”Û£¦‰!gVÛÔÔÔÔÔ¤ðEÏ.Š!gOä«gHšU;àŤM^‰Ó$îO«8+œ•ÞÏdY·©¹íiŤIÝÌþüþêwU]xWÕ…Wÿðb⟡¡CJ ë(Š¡±^£›eãâ®TøA£›e[ +}Ò¤¶µ¹H¿5Öm’C)Qô 6vŒÎE¾š54äÿfµy©÷ hMn… àJ*ØÀ!RôU½ó3D¤|á@a_•HJê“7ÆcV'X·©Ù8•„Bn^ìZXA¨í2¥ $zfAPuÒ+VæäOŒÌ±lm§ý˜^!úšMnùÍI)¢‹~[2×È*Uâñ³.H÷2'ÕMÚ(Ù{žPDAZÞ‚‹¯Î¿xþW#IÞ˜ÚrýµVUíÙûa*Hªà}ÒÖHN£5¶Úb"4QôIÁ’¡­‚ˆˆ«× .-—‰«Hj»Ž¯K\ŸMç2º²Û°´‰oWªˆs›šÝ‚Î:Õ_‡òPþAšç©ùÕÅߤ™áÍßÿáçÿ:÷óûàöšï¾  drZZt»“« 6fØä½–Œ3s´<ÖÛ1bìUƶ¤Q\»Ë’P£¬ ¢‹ÁIŸó—4q†Q´ §ÞŽÑ9–u›šÜ¹í”dFDÏÌ:¤·¨ö%~ûóÀéƒápŽD+•6´œ0Œ¢mÈl4Žt *cÃ!A¨íJˆÜ"v,—©.ëWŒ—ÇìîØw;“&.mþØ”~åÇÜÜÆ^åñ¡¶ ”?€5³ÎC4ß}Û#?ú-Õ×^}ÝÜË?ÿyàLÜß{®Ýòé»?÷Èâ •Öï¤e§ÕõïR‘Ëù4†©«o%–9Á'Î÷UÒŸÆfY÷,/}röh;f¨62ÔdšÄã·jÒ¦ /®L^.£Øú·¤)«o$¢ÚÝ’øÕÎ]5DtKÝiž¼õtƒß¬!¯EÝMÃQ¿ ½ä0\ì,äDËëJú_XåÙž¦ÐقͦюA¥ÔŒ;ÜUë™s›š"ï$Êorõ­äv³Ñ_µ¶¶º\‘W7·+UDs$¿Î(ª®ã†`‡1Y]ªÄ9âãã=–%]}È¢Ô]mnÔÐ<‚w  ªð-ißæù?=ÿC§¿ÿÌó9-øžk¯Û¹«f箚U–þ>¸­êƒÛªˆè_gæ¾ùз¿ùзâ|.}"ÎQÇ’£?—.ܲxqüKYiýNZÎqZ]¿ÇªcÝ&m3$ŠŒB?$5d%ÓÞ)·Œ :ëd_ýÊ·Œ¢ÍÔµò­ ³MÆ¿­˜&ñ8µv)hŒK ¨À-ißæùÓgß”>Ÿ>û&ÑóŸ½sïê“=3{Zõþ=@DŸÒß‘bF½~×ø™¥ööJ"òÚwéåo–†ƒG_dÙCC¼Y㵨»O²¬Six‹ù–ÂMd§ªG=Gúá,ÚÊ–†{}‘ˆáP–iV%.¹È¯ aêú§¦ú³›žjæüRË9‘ºþ‰‰þlÒŒt E_šo‰ˆ(>©‰§Û‹dÉ@ñiR„öøWöÑý>}öÍÏÞ™í²oÿá-¢$¯5þèOª>¢’³À¿RiÔ`hµ{ÛÍš%ÇTµA»èœÇPæñ–S~;9 fÇ’¦Ý즕7ã¿­$"rv›œòû³ûím¯ýè®!¿]µeHÓk‰_r–÷ï¤l” -Ñ3/„⦤úë÷\{ÝKó ÒçU1?Œ&Gei³°Ê}-óv/U_¨Ù×N‹á©Ï;y÷(‘ º@z%ýV?lo¯Ìv/5æáiŽã"fÙ¤™¸ä£,û¤‚´‚Ùë–Ógß¼ÿ¡ÓòS…dII#…üßwÒ@)N«Ü×2o·Øçk ít!jº>m4¤_m¬¤1ó¼ÁaPΟŠb™ÒL²ä`5¿“VÞrzÙŠMùì{÷ߺEŽÐrêööÞJœxföô§?sONÛP¹¯eÞ9ß²/:ìÑ4èÓ)Ç IÿmÜœóç##“,9F{ª«¢ÖÜnÞuÔîÍ!ÍèE 7RòÊLá_wüì{OŸ=-}ÈiÁ4¯;榲Ýîo®ÌÃÓj5Dz‘Q:¤ iÄŽ„oSGiæNiN øÑî`¦î>ɲDth˜×$_cœ$‹@®Ð' ʳ¯©õ9ÏÓ‰_<óB(§7£I¯;JÇd£ï‹[Y¹ý=×^§¨¼‘¢^w<á?öÕﯸé}é~'mÉa0“ï næ£YŽ<@DqQ™Ü'MjXÃÛPºî>|/»î\|UúôuǸyby-j5wÏ£»:¡mDåý;i°am^ßÕ_==ÎKŸ£_w”ì«ß/}8=ÎïoáÚÓ4f¿ßŒc¸Qa\G@–­ì_t”"´ÊÊíÒ“Žîø£<¹í†ÊÓãü½]ŸÂƒhyôIG¾ÀziooÏxûºÎ-iû[¸Óãü¶*‰è׿Yzi>æÇóþƒˆ¤o÷·p8¢(ö´öövä\y‡#›ÙÖ9HSVß(E_r¨–*–K7vlH«ù´u?°Ñd׺yÝ·UоäWW3ª$l(¥Þ'M©6Ƚ«<î]F,ò J—Ô' ùE.§©6—Ç>?ÿ¯¿øýïÞúpm5ýúW¿Nú™ˆªnú ÊG™ÁPfʤ%mï'>FD×]wmšÏˆÐÊ ~' ¤ûc?zbô‡KÁW—‚¯.¼tþäÝú¿—ã>_³eÛÈ÷/üÂEì2#µ¡å·¬(ú´ÚŸ;eÀ'Šë°'^ ¡V[¼Ò¤ðØpJûuGß~bô‡[¶\û曨ٹãåÅàõï}Ï;ïü1úóÿô7}X•òîX=Ýà7k¢þ{Àß0£î>ÉÆ„¯—/ßv;ó³‰(‡ŽÅÎ|hˆ—Ó"òZR~uŃ€È–Âî#§ìí•i†Þ“‚phØŸåöÆåá•Çï¤Esë'ûêf= ±×¢î¦a?¯AmDTN‡¼sb‚³OþÑá¹ôÿ|Ùñôï_û÷ü³¯ýàÿ›<Óý‰'ÿúÓaHcöûyžçù¡C¡!žçyþç??v,a¢ßoþ$‘^ú/?tÈÙ×ú‘櫵»åOº"}d›;K©ï¦!ž÷çt­OãÏjÚÓXÖmì ŶžIlMRk›4Q«ðù¤é=ÎröhµZm3$F– 9{´MMMZí€OW–JÝ@çvê‡Säö’àVs·rÀ"S¢&z-j‹7qNZr¤)ލ㞨Ž>R‘v<5Úޓý‰×~ùÿsËÑÁX7)ÖrpMƒ>›¯"÷Ó1·Éê¸ûéè€'ês²Kƒ|‡ý³p‹ÙÉîtwÛó©–qsä^>&Á¸ÅÃ[¥VËwþ)¶ŠHLXuô†­Ñ­ÿªû¤µZ­:vn´c‰Ò™ºþ©©‰‰ ½³V\ÆA9ÄbY·q¶^š>7jh´’éx—Š#Öp¤ÇvŒTÖN¹Œ±É¦‰Ñ’‡hÎn3Yü~þÉé¨=|D¤)<51éœáYyž·Ð¸s¥è™;ý<Ïû‡)òÐ –óyFæ€ -6B‹þï¾×-Ö]õÕèÏ»_ùôW?Úu“BqËßœL¼î•ûq½ÎÕlÐÒùù÷ÛKŽÑÈ­ø’Ã<ÞrÊÏ?ùàü¨ÜÒMÃñ÷ÓÉ“‰_Ök?º+ªYOcöÊø¦båŽ]ç/$I0nñp‹¢ßß¹hNÝö&6ñËÆlØÝú¯¦ -Œë³wÖ²nStç´Ê𨠂 ³õqÒtAÐÙ†Ú*¤yÁ‹D¢è›uQ’SÖÑBp™¸þ©©©©þ¼Þ¨ÔKï¥VîØ%Øò›ª+“ιt~~׎J"¢ÊöÎÈ‚¥3ãT]yjàœöUUï €"QŒ}Òžy!”ê+ùw®å­–5ýîYªe‰ˆ5çÏŸ£Ûˆˆj7›~&<ˆRDhD¤ê,浨§sß^g/w’ˆ„Ýž²k’~µûÁ'ýféîúÂâ¹s'ïá%„Cˆ*¥¶sä~úhš H\Vcžæ8.ßo‰ ÆG…†ƒG_dYA8Ôøm:«Ü°l­²OU´™:g:FŒ½Êãy¢rövŒÌ±,±, 9>ö`ݦf7±¬¹ºé6ª{!jHwdiGêõxe»}Ø¢Vs,»®Ý& ¸ƒ49K#×ïó|ùç³FÛ«O}s+}åµÎ,µË£uèWq3œ°¬ÆÌó‡Am8Ÿ~<èûüiçžjCæ ·³Ù+óŠ]󨰼¬òwÒFÑ6d 6G¬vÕÔ‰bhÌ: U—Ýì0ºrHl»REB@gËa0Mƒ¾{ÚkÖdU –yŒ‘<JUõý=ñpkÌ~¿yÉa8hñâG€"Pª¯;Þò7'¥?ÏRÏowþg©g9ðñMÎn|Wûæ±÷ÿÃ+_ô{.Õ|óÔó¯|Ñ}Õàºn¬Æl!s¸ ÐÊ{fQ·Îá)^KwÔëŽóç—Â÷åΕú¤o¦U¶Û‡w­ôPÊ¢YºúN)lJ• ,üÊ¥Ûª4rÚ°œêwÒ¦®ïx—*„'\ ˆ¨FY‘s¼§9 bY·}lYš’ÍÀ!š½³ÛáuÒ° ‹çö„ßW\:?Ÿ!ö Ù%ÇhäHUîk™Ç›ÒÖž ˆ‘ ˆ·ß@DÄ( wßòÒgŸëù·,Gw\•íö†iiy˜º£GØ«l·™ïVs7Z}D/ÇuþÎŃjµÚL–aýJ´·lxlŽë¥áHG²aJ6pˆÜõ®—¢º¬%$³ÑûZæ{9N­ž&½³[mñ¦ØªØ­Kµa…W€>ir|¥ÐÙZWb6[+˺ö±¬ÛØ8˜åï§)ôǬ:anÔ ð˜MïÞõè=\ã¬hÌ‘9ÕfjÑ;»Õ–Ÿ¥žU:²fjÑÇÄdSsÇÝóè®a4£f_Sësž§¿xæ…P6¯\Në}ò¯?1÷§‡ëÜä›y¥vó—«½}{óëÏ¢æß¢§Ëó§î™V$Öó7ÇŠŸùèc–#Há™<1ºOš³¥oXooo_M7¶‚øæã?–öeÍ-9 öv”)€"¸•u8ïEï>|oÉîX¡|žˆ´KDô‚~'ýÑX7½D"4ÈGÛÓʈܒɩ.v"B()›Kt»å¯ü}èäï#ŸÏÑùøé¥¡iÌ~ÜOgKnC[eŸ´r¤1ûýfd‚´+)×ÑцV~V9®c‘l?Ž#”I&]R{Ú=ÿû_SÍ–q(i«ÿ´õÝò+Ô- ¤]1£/„ge¯tÛÓJ1¶i«µ8ú©ûü¯¿}Íõ—w}ü†½Õ–-×ᨗôI€²Ä–ñ¾½ýÖ–_ùí«ÁwÞú ½öò¦Ÿžüíü2ˆC^6Ч ¤•’ ÁЋ?¿øìSÁ?¾#È6Ž ­¬H=»PNÊóuÇo}úwËì›oþáêÍï{kÓ/ˆèºË#Fxë ñrSêc<lˆ í‹GîúÚO½{Óõ+‰ì5[ò²>i‰‚L(åùºãàß}{۞׆½îòÇÂ#¾ïïÞµ÷úؽµÅ›ò¿…⵨Õ\ÄZ¬`cBŸ4@VDQ|äkƒ×½÷Ú?×5Ýù¹mòôO¶TýyLJZîÖ¬Óvé‡xžçy~è³aZÁ O H+öÍöõÁŠíÛ´Mw¼þÚ¥«¯¾æ#û/ѾOUïÓí¬ÞY•Kbáæ/õJÛš×¢¶x½ŽãÔ/ÉdKƒZ¡­LÓ 'W78–â×hp8Vô²Isc[M{š(ú´Ú¦¦¦¦¦&­¶Ç‘Ÿ€ ­þî¡¿ß^UqÇþÛ/½ñæ»Þõî¥ ¡ÚÝb¯ö}ªzóæT½ïœ½ò›ˆ\¯s%`ê¦a?ÏóþaŠjúrvO7ðüÞÙ­˜öÊ!šy¼å”ŸòÁùѨÈ+ÎÒùy}Ã'Icöûyž÷û;Íᙽ–îù#§xž·Ð¸3§47*¹ -¿>ibÈÙÛhtQ«Õ㙘˜˜œ4‘uÐ'Wœ&…‘Zí@±m¬b8ä™B©¾ºóãŠT_}í+ߨñ¡ªÛ÷Ýöú¯/m¹~Ëù—/Tl¿¡R©0~kÃ0©×¦âÍ94SOK¦ú3iôÝÓ^³FCD¤6kˆ¼QdÏ;y÷(‘ º@T ž$"a÷ƒ§ì)þ2<ú"Ë Â¡¢JòN;õþJ"ªlïÔÎ"Ín•ã:ò'FæX¶ÕÚWÇ0DÄ0 ý±~ù[߀Öäf‰HÐY§úë¤xi°Ñè¢V›L&7ÕvÚ‡4ÞÞŽ‘©ºŽéL6ó‘(†Æz;FçXAÐÙ&ûꘕ»ºFGç¡¶ëøP[?Øht³,Knc#…ç 9{;FæX–ˆA÷ÈÄí?mú’‹Zm“}Í(e¡[Òîü¸"Õ_ªE¾þ•£WýNu{ým¯½úÆ–-[^~é•5»÷Ü|ýõ[ÒFh…îxæ÷›5©¾²·WJ!šÔDÆéóOòï“&оY ‚®žKòmÈÙcr³:«ÇcÕ±nSså©˺³õ{g­ Ì­d:Þ¥¢Àˆu,iìÊ8?Ø1PuZ;Uä2òщÏÉcïTQ`äÏ0u}“6 ÄÄr#HëßÔTÝ•+Þ°ƒ´\=ô·ßÜü»››Ú>:ùÃà–-[..…ªªo¬¬ÚžúÇŒ4 ò‹ŒÞi§¾A“Ó"YÙµ#¦]¬ªzOxq¯¥Û™gšQÁÇxÅw&Žß¸z f¼r&:[GÊéóP[E…²†ˆÁ‹‘ÒÏ#ŇD5JNYCD ÁèÄ mÒ‚äšMõŠ#˺½áxaêú§¦­ H+"¶¯ ²oÔ6¶}”ö–e=?|yûMÛ>¼«zË–ëVÓ†¦1S·šã8u7 g׈µ²Hæqü+÷µÌ÷rœZ=Mzg·Úâ¥ÊvË‘ùn5Çq£ÕGôù¤¹á¬²OZjƒØ QXÁN<Ömj6¹Y6§Ä¦®ïxW­ °s£†ææ:ª”¡Òþ1ëïûÁ¶«ëöü…ÂæÂ¦Í›ÞüÝÛ÷çy:ñ‹g^¥Mqíä´Þ‡;Ÿy×µBÅGÞV}¬ú–½ÿuÓ¦M8¢eÌ|ô1Ë‘¤ÀŒˆ¶nÝ*}I#ˆ¤ØÆÇÇÛÛÛã,y7*À•áp82Þ‹Þ}øÞ~ÝÑÒå˜Ë[«ßè¸ÿ/¸[ÕˆÐ6š‚ëP J8HÛö‘×6ÑU_èù Žâ†µš>iÅ©„û¤ež-·~ê>ÿÆëo_sýå]¿a¯FµeËuÒW÷?tº8÷ëñ¯ìG¹Ì^}Òò ¤­ƒ·ßúÃò+¿}5øÎß¡·~³éµ—ûÞ­Á[ê>"Ïð—wí*¶mþñÓó(”Y’û¤å¡µ··#ëAÚ:¸ -¿òö³OÅË+}Õ~6¤AIËo\Dz2¤»o}úwËì›oþáêÍï{kÓ/ˆèºË#Fxë ñ²"õICÜå„-˽úâ‘»Þyûò»7]¿¡‘È^³…Á!/3ãÊLy¶¤ þÝ··í¹ê«Âá1âûÞuÍÞ«gÏûò·<ÒgAhþÜw»w‘ÿäç½»¿Û]Ë ¨+^ùõI@vE‰¢hûú·>gmà IDATpã Íû_¯{ã™üµ4ý“-U7©®«ÞY•¡™èsß}*:EŒ_Ÿ4iW8B¬Ø~㟸ýõ×.]}õ5ÙùßOoÚ÷©êO¶Ü´yóæ„ù—úÔx]ÿÓÉ[Ì^;5büÎjùÜw»kFŸ?ùù¯>ϲ‚°óS¶oÖo“¦xwÛª¦¢f#"yÎí‡?ÿAÇ©ENüõSÿ`üÎE–ÝûWOµíaˆèõ‰N¼D‘æ;´Úå}Ò ü”UŸ´¿{èï·WUܱÿöKo¼ù®w½{éB¨v÷‡Ø«„}ŸªNŒÐˆˆ(ôëÅ–ÝMšØø?>FŸþîÓV[ÕÔç‡çD‘aö¶=á²<~ÊúÝÿöëÇN½nn‹Ÿˆæí_ýUûw,Ÿú4=ç“£ÁÇžû˜í釭ŸÿÕS§^EQ|þ9LJîýÎS–ÇO=òD"´¼¡O”™blI{æ…Pª¯îü¸"ÕW_ûÊ7v|¨êö}·½þëK[®ßrþå Ûo¨T*ŒßÚÅäµ|Î|ðý #~ òƒtAš$·† Bón¢’Í&ŠÏ¿ø\‹ö»$¢ÿ[Éçž7ÝýÏD‚Ðü¢÷3{õ{¿ü…»å†5Èú¤‚´+!M–Æ×¿rôªß©n¯ÿèk¯¾ñÞ÷¾÷å—^ùPíöמּꪫÒ.§ØV=þâ¿u×îɼ ¹5ì|ÀòóÞ<¢¾{¿óN#³§çáïèj¹käWßéjª@YÌú¤@Y*‡×úÛonþÝÍMmüapË–-—BUÕ7VVmOñŠã †©¸ýîß@ø5Å,|èÈ8øÍÛ¿ê ¯hïî;Âã7Àüµ:œs«$/RŸ´‚$%Š!gV«íq†D"E߀V«ð…¿ 9{zœ¡d‡)<§vÀ—ú J‰755555É«€B\Á}ÚðE6šV;pV8›ñ]d;’yS£o<²ù¼¾Ç%é6d¹§\ÉbûÚ ûFmã_|”ö•M›6y~ørKÇM;>¤¼æšk²YœÙÓcí?öå/Ü-ý72òˆîæO¼<ð…»¡¹îŽñü<¿-yà÷ÀþÁx—™e·þB]äUÉ]†¯½øù»Ì,5ÊÿWŸgY"ÚÛÿú¤å­Píi £PÖ;7¼H¤ Z.‘kÖ×ÇÕ1 ] jêy&Q õvŒT]LJô FCc½ƒ¾¡¾:t€Uc˜ºþ©©~"Qô 6]Ôj›\¹ÈÞ:5ÕŃ“ÄÍȼ”o Ùä®í²÷gZDÞ_J= yô<ÅyÈwÙ ÍÍ:«§¿·Cå¤}çØ¶]]·ç/þ36mÞôæïÞ¾ç›+Û²ŒÐä8ÍòxOì´½mO죕ÏïozÔÒ$}ìiûÑÍOp‰³1Ûîîzân’Æ÷¯®ºceW[Ì*¢ÿ 9+xŸ4®¾•Ün×,ß_W·ì™cY–ܳ|_]ñ³®Öú>9âcAWùÇzM£s‚P+cQ _ ˆ¨FYŽõÇú£ã·èÔVjvý¯ÿõÖ]9í’£»³×J¦¡6ä_Ðh¤œ. e):^∗/”&“›ˆj;íCooÇH€Tòµ;Õ…Þ7 5¹Y"tÖ©þºT‰?2qûO›¾äfY–ÜÆÆðåX 9{;FæX–ˆïÂI]B«m¨í‶#ýFÆ®7«@1édÞÓÈô4ûÞÕµ0{ó#}åfY¡¶V½IñÛ0d 6ƒõ¸cI¡´_wÜôö޽wÜô‹ m¾jÓïûö]÷}ø=ï¹úÚk¯]×êàù±ûZÍ÷4ßÐ4@Ò°"(gk¡ðã:nWÖ -C¢x1ÐétDäšåE1\P)·ñƒ#U§µSE.ã ¿r"±î2y¬:–9ÁÇ=.ªo%–u{ã^tL“šq¶~zú+‡¨XvnÆ»LDËÞ: ‘ZóÒ/85Õú É/ë6ÎÖ{쵂07jh´’éx—Š#Ö1©SCÒ+lÈÙcr³:«ÇcÕ±nS3åw S×7iÓ BÌSÔŽ‘µZ=ž‰‰‰¤×h~ÐèfÙÖz.ËÌ9RM¶©öÔèRuÚWæL³ïá›{§ŠòÍ´/:«gÒt ý6põ­,뎾h¥Ý’¶|þÏÓ+,˾oÇooiRTl¿qË–-ë»I -f°†òþ´ñññ¸)---T¡9  ‚¥–³Ézr¹\®Yþ°r†˜*H}³."ªQrÊ¢ÀB0$rÒ/‚ 3´UÕë—K~I2¢®ÊJZ“{nÔÐ<Uk§IÍÖÇQ…²†h.¼(Šä Ô*¤š.ã‚I÷ ä´··G_è“_Á³&_(kˆ‚Î6ÔVA| Q ¼HT‘ü »ì ‚CÕë—kÆjkËiÌ7–u{•LJÚ»Nˆb(¸@‚ ‹Äh™62ïè4jÄÔ{JÔª¬XÙ¶4û¹ùQÖ\³¾>Ž£åà B­r{ø&&&¸zàr-C"§`˜ rßWžË6HEáõW_ñ‘·«vTÿ×tÓ¦M¨Ë6š¼û¤µ··Ç¥é–æž$Wk}mªˆ A/IÒ¤§W,ë65»‰e)—º²®ÊÓ'½W®¡*(‹Ô¸pÔÇ÷Õò#¶¬6#nJŽÃáÈæ ^Ø•&\a¥n Qr¹`˜º¾ã] #ss£†æÑd½°Ò/¨4yOsÞ÷˜.YeB <ÀF¸oIZžË0H³tyæòÖêK÷µØ´ú>i‰ÕºÔ-Íív·Zû†ÑPÎ͎εZûˆˆh»REB æÕí$ï„_L¬%mC¶`£Ñ®à2§&½*év‡ãÆHgâ¬6£à-€"±f׸¤WØíJUl“PŠ }Ê0I¡?6¥—zv¹’ôÂJH¿àqZÂpYî)­vßÓnCL‚¸o)Ÿ mÛG^ûõ‹Û¾Ð“„öã§çQJº‚.üï¤mWÖ B€ÂmVšµ#@¤þ`…æ€jtÎm;\§ûA¿…à2qgÝ,K5Êè—DÑ7Ø<,5îó³n–¥Zåö ©ÅÕŽsRÜ({Ù,¹É®°òÄY¾£Y7˪Â]Äëê[ÉåZ.0ºY–„èÀf!¸LuQWi®Ï¦s] AÎÊ‹<|Ç­áÞEo@š=‰ÚòTûžfTÉðÃe¾f£ó$Y&ðIîš ‚´Õ„gDôøWöã𗺼û¤¥$uK£HÒj¯Ð³µ¦QCÓhxÔ#¹:±6†‡HŠl‰aêúLÁÞÆÆðˆFµòÛØiR‹Þ¢è@1ãf@Þ¯°u žhjv :ë±HTÃîR¹FF ͵]:aÄ uÚL]3#RGty¼G"HÕeJÒ--ºÌòkq9—‡[ŒÛ€T{j jM†æQytÇûž2<ÜUëq›šÉjÓ¹Œ®ÔÛà›u B« ·0©ìkj}Îótâϼºóã¹=¤ÿ–í{égø+ãGŽCÞÌG³y€Äåö4i°ÇlÚÖÆÇÇ³ï¸ ë"ñz]®Wpi„zê:~lc¼#rötŒP¯m¸òœÊ݇ï-XKÚ·lßk¿¯5ã<ˆÓ P þ;ië‚Qè‡&•ƒ'|måÿ»a¢è;1RƒßtM¯0¿“öÝ'ÛïkݶíÒÝÿçååéí÷µflmÈRá' `½â4¦®cüÒéÆÙÓÕ(XKš›iP– Ù’¶óæ›ò[PÓ wN{‰È;í¦ /ÉlP Ð' 6VöÌ ¡T_%ý µ7ßôÒ/_‘ƒ±tQYœð ;©Å ÙG£æ3K;©ÅPIá53iôÝÓ^³FCD¤G_aç†Q²øÍò4ýoÖ¬ÄuÏ;y÷(‘ ’^®\I¤rÇ.Z$’V·+¼º‰³A±ÚÓðÆcÑBk'?\DŠ­º.×#‚LFV HËõ—¬i5-iRøe!箳±Ù“ÅJé8ÇÇ÷œÛ ¾b–ãº!`å}ÒJ…ôäÅéÒ¥Kx)£¨ªëò>"Èddu– Ù'­ûÂ´è¿ôËVUï9yò¤Ô},úsT‡µ˜nj ôv»¿a:¾×ØÒùù•p-’N:YÎEQèÑJ«„K Ž2Š0« Ù'm¸êÅî »¯jȽ%*÷µì>J-û*ã>‘Æ<<­Vs,+‡†ýi[Â4f?YÔêÑ¿yª“ÈÙË$¢Cü&I:)›Ô²œ Šú¤@ù)d¶ó曆éEúFVQYB”Ön÷·'ù޽üæøhL“ü¿³ßODDñ‹$¦HÜçlfƒ¢€>i€ -¥UôIÈY¡ú¤‰bh¬·ctŽ%"A¨í:>¤W0Wl/DÑ7Øh$Ûd5e¶~²¯ŽaŠ'·¥ítQ«m²#~°ÑèfW^–ÖY=òö”"©–+xͶF•|t\T‹u?vWþ:޳ÖH±ôIÈU¡ú¤õvŒTvÏÄÄÄ䤉¬ƒ>Q¼Âûâ2®ÃJWItVÇcfflRÜ~€BÕl¢èÐjµÚTó£’\ø"äìm4º¨ÕêYÏëxÆ2PzgǪÃõ½l‚4©OšÜ€öàÿìþC^CÁI}ÒV™H0@D5Ê ""†QèõKO%E1äìÑ655ÉuîJìhhxh G«Õö8C¢t‘èéq†Â³¥[0i βncïX(vº´TSÄ€/>)iz3$†œ=Ú•Iº ‰|áĵ¾økLŠíL¢BYC$Н:Ëãâ ÕlYÖ– Æ/5Ý,˲nccò;Ú4•¼Ts&ÿœ¶ž_ÂÆz›ššÒ×ÿq[k,—XBŸ™cÙV[¸E1ú:žþØ9=ÑY—jzšKªœx\8+œ(¯LN• R± çpléMÌÆœGÒÄ7£œbãµ ÒÞ§¾eûÞΛoò4½uêÔ©7ß´óæ›NÅÚyóMß²}¯rç{QùC­¾=­¾•XÖmlì»òñƒ#U§µSE.ã s­­ŸžþÊá*–›ñ.Ѳw†h “qÁ©©þ„WSZ­V;7Ú531L]ÿÔÔÄÄDâ3]))iúܨ¡ÑJ¦ã]* ŒXÃ7©¶Arö˜Ü¬ÎêñXu¬ÛÔã e±I/³n–¥ÖÞˆ²e#\³Õ×1LÆÚrzÚöȤM'‚ KñòaòJ>ÃýY¦z^šg†L«ŽeçFNðÙ\¼¦¦ôåT]‹¢oÖE‚ «ç(×+Ý ™<öNä¬K5=i–†œ=FWø5œ,Ê@ Z.IgAÒLEß`ÇH Ò†}Û´dæt8R%žñöAZ<½¾­rç{¿eû^ú¿ÊïÕëÛPùCAÈmh«ì“V×?eÕ ,;7jhŽ~î8ë"¢%§¬!¢… |Q­£È“Ö@ð¢(†¼3©1.›“àú쵬Û$5—Å‹}¦»’T…²Fú<ÔV!oMÚmŸ‡ygá«W¯„ÀŒ7«íŒ½0577›ÜBmç÷û?Ó?5•m\P´wEQ5Ûñ>® µeæJ>™ôõ¼<¡­BÚ0rÍJ é¯AÒã¿P]gh~Œ—aÁd*ÚL3#Æ^åqÃÊ5&äìí™cYbYò¨dW¶!öÇé/±sg½17è°å%®fÅÔ–i*ùµ¼ÉÎíTŽ vì’eiBâåvÔÏ6]®Y_Ý>s_ÁÔõïZè™›54fb$·ÃÁ¤N<ííMy=3B ¥« }Ò"Õ¢mȦ„ÈCÊíJU¸ïl\#~t "½*9;8늼Í‚i6 •#VûBøæ 4f ªÓnÕ 9…h·a»R;A¥ÜŽò¬:-Hm™XÉXxÃò¼•¨• 1¿vÇ.i–&$^n¸Ã]*–uÛÇ–ÓÜW0 ý±©)«N 4£ãD•ÌœG²Ä7VñF¥mõ}Ò"~„;!¨”Û‰F¡9]=¥»z»Ýn¹-ËS]lúŽw©Èæ‹Ñƒšät+~äfùð^«"êòSÞ=w`Ãʺ¶”® Áå*y)À–âcÆ=ÏÚBp9rñªQ*&cý_~Õ5w¸«V\Æ•Žå¾Ÿ(êJ—4K¥‰±G|¥ ”G&W´™:k…ÀˆÕÓ—+®Ï¦„Ø +eÉÌõpD'ž¸8 ªOZŸ‰¬MMMáNCmR­¡Ð³ê„¹QCš1+4jAj£k¦lLóÜhÈÖºr9·µ²¬ÛØh_PQšqÃeÜi·©¹ÙätÖczJ@ªê4}mÉ0Š6S—ŠÑ}›3VòR€!-eWvåøÆDØŒµ±ÙäŽî·škPIÒ ýФ­•£†fi$ÀÙúð «…ºÒ%ÍR…þ˜­5¼R­v€§Š¨2à|µ,žP´ZYvN«&1ä1¨››M.Ru™Ú¢ƒ®T%3ËÑ*ñ U¼™}M­ÏyžF- ÅÏ|ô1Ë‘ˆHú k"Šë“&5©e³···ËéÀÚùæã?–Ž@1_\pE(žê:úˆ$^¯Kú ^œ™\@Åó3ë¥RžS¹ûð½hIƒVÀ>iEA”¶Õ÷I€ÕÛ8¿ñplF@‰Úºu«Ô^\Qø4ªkT×Èdd5‚4€œ{ˆÐŠœôJ*º¥ ºd2²Al 3½½‹?œF& ºd2²:{è“%âµ('hIƒRµÊ>i‡yPrpiÅk5}ÒÚÛÛ‘%Wp@Pìò7ÂJ®à°A O”|e>i€ `ýmݺUú€QøAÀúC H(.RŸ4ä H(hO€2ƒÑ¡T­òwÒ‰¢o°Ñè¢VÛd_ÃÈÿ}dâöŸ6}ÉÍÆ?Ѹ|yï­Œïù„é‚ K\Dgõô×1qëJ3lXhIƒRuÅÚЦ®jjbbÂã±êAtVgbbbzÚfK6}jª¿Ža¤hÍêñx쵂à2úD11œ³z<ÒâIgXk¢èÐjµÚ+¿j@e¨4ú¤U(kr œBÎmSSStì$ESMMMÚžžžHXbÅ…[É 9{´Ú¦¦&iúYá¬ÔšÇ²ncã â4iP}ÒøY7ËRk½Ô¼–ÄrpHžì ¨:­*rùpƒF7Ë꬞IÓ¬Ö™ˆ(ú;FÔ*7÷ÝÊÞÚ7i“Ú¥7v¸N¯ Ú®T‘ˆ‰îrï,–$"búcSz߀Öäf]ÆÁúÉ$­{Å‘'ú¤Ai+ƒßI«h3uÖ «3$2ŒBs@ŲnûØòJpÅÔÕ·˺gùpç´èéD Áå¸éIY ûl:A •r{$œ“Ri«"ëX¨ßI[/ £h3´²ì܈u,$Š ý1«N˜5DÍÈ©y¶Þ¦VúÉq‡»T54Û•]ÑÓ‘LJln6¹HÕejS0 Ã(ÚLá0?@±Üîkj}Îó42ŠŸùèc–#PÔ+yq}Ò¤&µlb¶ñññì;n•¸_ÜF©( ÙßÞ}ø^´¤A +ßIÈ‚4(meÐ'-' S×?555Õf4iÅ¥lú¤ Hƒr°ÑÚÐA@±CŸ4@P\ОÒŠú¤‚4€"‚64@P\Ð' ¤´§‚4€¢€>i€  ˆ  ¤ôIiÅíi€  ( O H("hCiÅ}Ò ülF@I“ÚÓðÆcÑG&¬…––d *Ài ÒŠËÖ­[/]ºDè“Vôü~?2¡°Ž=*~T8mA@AZ y×¶È„B±y™¨ pÚ‚4€"%õIóɒpGS+2AöÜ„ë‹ÿý3y,øíïý¹¨ pÚ‚4€¢†ö´rëM× ˆèì+ïÑU›0nÓz*ª±a7Z VŠUN[T €Ê A@VÐ' JîöÖ]‘¼véÒ%¼€ÓP-”Tn«„êJøäÇC/(ỽÍLÈ·òƒz §-*7H„–4(aè“%|·‡Gò8m¤AYBŸ4ÀÝà´€2ƒêJÕÖ­[¥k¡‰¢o@«Õj|¢X 鬩’ØÈò¹ÛÛÌæñ—Ó¡lŠ2à‹­\EO/lÙÛh%9²¿=ÎÐÊþ¦ì3a5™–÷²ÑUÞþÄÒÛÐ`4ÆN‰,r¥ñšž¶yçØÆ±v•‚4€‚AŸ´Õß6ÅÍÃ0uýSSSSýu :Q¬¹ÿû'!¿œV!:«Çã±wÖ ‚Ë8xnÖs×j›ìKSÞâ6&Ëmc˜º¾IÛFûÍ–9ÁËÿåg]EÊŠ!go£ÑE­VgbbbrÒDÖ•R*•Þ‰‰‰‰‰‰éi›mjjbbÂã±êAþêÊWVWà´Í;Ç®ÌSŒâ pÁiÅKê“¶ao@zÙã ‰!gOÔ3ly§³'Í“NQ 9{´ÑO‚³I<ý‚ÑkEß`£ÑͲ,ë66Ê£ÛURÍ}õõ DÙøâ2!nux¢™óÝÞe!¿|ÖT¡¬I(ÀòÁŠ;ĉ¥"UIˆŸž"Á\ÇzSã³ÂÙT%6Õé¶‘J¦ª¶V ×l¸Z9í ªZAHUç¤:Ðq‡ ÉŽ:¬r­ÒØk_È=Ãù#s,Ûj Gé £Ð+öî+wÚæžcÙW׉‡>ï+Kö—¶¤'i–HbI£­j‰k‘—ÕöôôhµZíÀYá,.X€ `Í]ùö4–ugë¥Ö‰¹QC£•LÇ»T±Ž…"5>˺gÈä±êâžm¯\k;FªNk§Š\ÆA>ûÄÓ,8C&½SE‘¼Ô’ =r–Z*¤‡Žr» O\Üï+Kö—¶¤å*Ë $Ë’–t-«)¥Òòqeú¤%­“Z'Agj«Z*Á‹QóÚ*ˆ«× +϶㮵D5JNYCD ÁPÔ>iO¿ ¡­"Üf’°Æ‘v•L7!ïL |CÀÕë!0ãMµ:ž8¼v’óÝÞŸDùo|ú§©fŸþiôœ¹Æ<¦ææf“[¨í<ÞÇÅ”±L‡8cI¦Õ(+²*3Yž\ÙãÄ¥’në…¨•<ygè€F™M“ñ¤)Á„Zåö•Z¥€.•Þuéx¶¾§m^ñ[Õu²æ¯B\YrL'û $iI˾ô®i)XSÝJU©ëȲnS³›XV À*Ö~A1äìí™cYbYÊül÷b0;!ÇÕA†»½ØçëOOœ¹«i_ÜiyR)·ÇOÚ®TQ^}ßó^D14f ªÓnÕ B–ëÊ´#°ª»½¸¿±ñg£gví:·ärˆSÍ–0½ÊÌÆ.¥Üá®ZAp»Ý­ñ¯Äå_u¬Ñae˜ºúVbY÷,Óvõ9¶Êc´šâ‘w:EY H(”bãq!¸é T£TÄ^¨F¡9 ’{är‘ÎiAé‚· Ï›ôbÜQLUúc¶ÖÀ¨a¥ãPÁËLB1N^bÓŸnÃ(ôÇ’w¶I¬:tNåDŽܦæÙz[víó±[«ÐMÚZÉejnnn6ÅÝ|Ë}ÒŠª[Úúž¶‘ ŸtMMM³õá7Bs:õRãy\Y’^5²¼´e_¬¦¤q}6Ý*J)ÀzVéûšZŸó<Œ€âg>ú˜åÈDtéÒ%iJ\Ÿ4©I-›˜m||¼½½]N§€¢{V S²”Õ~¿ÿ]ÛvÞÑÔzëM× Cˆèì+ï<7áúLûá<–ýãDÜYPºDÑ7Ø8[¿Š3%Íé–1ño>þc)'‹¤f+ƒZÞUNÛ’¯pBÎÞŽ‘@«mª¿.Õ<ÅS-”ÓmŠ}~÷Ÿw¾‡@ “ú¤áü‡Rtù2žé‘ËØH¢!oõÈ`Ài»Ác³Èo»‘ ê:¾±Û¡´ HƒÒVlciPŠ.ã‘üzCÕ8mÕ HX«úíi¥âì+ï dx$¨ pÚ Hƒrƒ>i¥å¹ 2!Ú„û2Pà´@emh%¯øª€ì±È(]RŸ4äC‘;zô(2Pd-iPÚОVäZZZÐPä-iPªä64Dh€ `ýá'A@qAŸ4@P\ОÒŠú¤‚4€"‚64@P\Ð' ¤´§‚4€¢€>iP–6#  DImh%¡¡Å`£ÉïfA”v¡ßºuë¥K—Jeƒ-GÀQØ .]º”ßÍ*^w„’/úh¡€"”÷m*‚4(Uè“e A”*´¡‚4€âRßIE߀VÛeÀ'f¿ V;àżÖ쵨 Ž¥T_Y¼ëŸÁ«ßŒ"ÙiWJ¡ÚÓAgõx<öÎZAp“Æ]«ŽÊb-ŸßÓ²¯²ä²q‚4€dÖ¤OZ…²&*‹n[Eß`£ÑͲ,ë66ÆDqÁ±Þ¦¦&­¶Ç³ä–ÎŒÓJŒ¶ä0¨9ŽSGÇ?KƒZÍqÜJs[dJÔD¯Emñ&ÎIÐàpDÅTÉÖâµH ªS…^1‰{-êî“ìÉîðÌ^‹Úâ¤`ñJSÔ‘Ï€ 6’5é“ÆÏºY–Zëoeoퟚš˜˜ÛÖxâú&m:Am²¯Ža§ëž!“ÇÞ©¢ÀÈ >ë5ÅÄh^ËÁÅN?Ïó~¿YžÁÙm&‹ßÏ?ù µ‡#"i ÏGML:gxVžç-4î\‰¶Ìáµ S·%2c7 ñ|쪣Å%®1û‡ ‡†£·SJáÉçG~Ø0Ýà÷óO>8ß0 Al<é“&ÇZ¦ææf“[¨í<ÞÇ­|i[KEt†¶Šðl®Yž¸þ©©©©~9ŠË&F›vêâ#$ý°½½’ˆ*wì Oј¥)1“ιt~~׎J"¢ÊöN}Ô*««¤”ôÎi/QUõžð§³çÈ)³FšáÜK5–Èg”N€|áǬ¡´Iíi«ã1®}ŒˆÄ³·cdŽe‰eI(ðf/§KîýѤ· Y"èPCÊÙ.,ž£I&ž;y÷¨´¿áÅ+ÛíõšcÙCC|Ò¦´LÂÑ`ÂgÈZÒ T­é契bhÌ: U§Ýª ¢ÅõG£ªê=Y-å0tÓ°ŸçyžÒç¼Òªê=zéÍÆØ—5f¼ € `õÖøwÒ.DT£¬ˆž¸]©"¢…àršè.›C.,FÇhT¹cWúw#KÛ~_qéü|º9W^g\rŒFú¤Uîk™Ÿ.L6~ A@‚öI‹Ã0u}¶V–uí *’Ftä©¢ÍÔ¥¢À¨¡yUñ{§çcÇÞטOUªÓ ±(Í5¼ëÑ{8ŽãÔfjÑ;»Õ–Ÿ¥ž•ºÕÇ™©Ens«l·7L«cÇr ÆÈÝóè®a©m-ãûóð®£Ñì°V˜}M­ÏyžFF@ñ3}Ìrä"ºtéRôt¹OšÔ°–ÍÛãããíííq鬵o>þciû½Ãyƒ<È[rì;ìyõ6€Õß¾J÷œÙßÞ}ø^ ¥jëÖ­R)_‹>ikÉ;=ßbXÛ-j|áа¿¥ „ HƒRU¨q¯8Ù®YóUøýfiW˜Ô'í ¿µ¸úÀ¤AÙ*¡ö4)¤”º¥ HƒrSŠ}ÒJ¨ÑÖ †à‡R…WA@qY»ßI@´§‚4€¢ ·¡•à(üÒ ì  ¤ôIiÅíi€  ( O H("hC€²´Y¥Kê“véÒ¥5J?Ë Mye G‡™ŒLoiùÚÓÖ®Vý¿Ð‘~†¿ÿÎq…r…£ÃLF&Š7ÀºÀëŽPª®LŸ´÷\½9ý_Üü¢èÐj›¢ øÄlV$-¨ÕøD1úóÚíš(†œ=k¾–¼6,çÝ_£Ü[ýÑO³kzÄK¨®õá·õ»“˜‚röh{œ!qMOÌ+yPÖ=“רêXë CΞgH>d¾Œ5@ñÔŸ™Ó\Ýî¤©Ž¢¿Š-ó!g<½ÇÉc“VY¥k }²—±lj­œÊja v±]ݤA¹¹2}Ò®»úªôI—Õãñx¬:Aps­¦®jjjª¿ŽaÖ°âOŒÎ±,ëžå×¹:‹Kõ»¿ÖG½&ãÑŸ˜˜˜˜˜Xß½(r¸Æ‡c ïB|V2Mé=ÄiO̵>;ò«ñŠü±€ù–²H_ j” †‘æ4º¤³¯ê±Už•…Úpudï¬TGbÈÙÛht©ºìÇcïR¹Œ½Î(Š¡±ÞŽ‘€ªÓ˜˜œ4‘u'®jjbbBªÐäj6§MZÕÝÞ©¢ÀHÇ`‘ßÖ—Ù·Á!Hƒv~'í­ÿó§ô¹TaáGƒ‰ÏÈ›šš{í éAù"S’¤CD¾ð¿†ã—n–eY·±1ùECcö…Nkg­ ¸ìc¡„§àòç³ÂÙÁd©É«Óøâ7;òصÇ · D@Æ=˜ð‰¢è‹K?ñbe]Ú³ÂÙ¸ÒgøÊª}Ú¨GÝy}Žã䯲O*1»rš?~_"-8á=}Š_ÌåPÚüžÊðp¤Ú’T;•ioÿñOéÿRÕ#¦ææfÃh Õ&Ýɉ¢oÖED5JNYCD Á(Šb(¸@‚P«Üó”.‘ èl}\št¼3ù¹c6m)cö…®Ã\üU$ë&AïL |qåêu‚˜ñÊzxS+”5Òç¡¶ i×R¬”ä©dÆu%ßµ,R¨Ð¨×,ODƒt@S‘ÇÑ—?ª±žˆ~ô“ÓÙ}ùa[úìÊ>{ù8ã ‰¢ôZz#Nš?é±/ÎrȲncïX(÷ÇùŽì·$éN%]jttŽu›¢ÛRdHÊAgh«ïJåÇç9˜ò‰]²Ü‹ÂÖxÏäl«‘UøÿÙ»ÿ¨FÎûÐÿŸ™ë{Îý'ìÙoÓ8À®ê†´Xk÷Þ&^ãÈM°€8Чàõ–8š¦q(š8!òí9Í·Ç Ž@²„n÷¦t:k𨲂,‰#/^‹ÞÞœc[! i"qÛï{vý_žùþ1BýBFâý:üÃüxžgfž™>óŒ2î‚l}KâÈÏú9ˆÝV»“sgßþΧ¿-¤Oγ:º#o@ÕwÍј""ÒÐ?ës+]_<ÓÙZ¬ÅN.èÍâ GÚk2õ‡;ê´ó?G¶93]1w~½.èL)òŒ+¤gèl«Žo× çìfÓòŸ™O“ü¼è‹AÈ¡íŠß¬©Ü?Ù:#_ЗÞézÀÛê èúF¸å¡Ž‚î{2­'o çÎ,.žélmiié<³˜¸Šä½|Úæ ¹s2Ÿh5Ë_Ķ ZCuc“ÝìscÑ¥‚Û9y?ðÁ÷‰ÈÓß¿ßÞOþ°­ÐæÊ2¿ym‹DWd!ä·'žˆ[••hÄãt”Áq¨i }g»ë•ÒÏt¶¶æù.“îŽBK’V©Œ­:ÖU¯ü©óg\vÛbnfR6ZНä¼_ ì6b´Ü©ìu˜)7²[ßc‘ˆ^²žÂùÔh§}r~ÕÙì“Χ™#ØJxg¼ƒ zðl÷’7k¯Ud§]ô9²Ý‘°+‡ßÎϔ¯)Å/˜©„¹®t¹7½Ã‹A¢=“v}Måþɾ¨ãd·]×c“ægáµ6»7Öy«Œë©µÙó¿ÌÇ&Ç–Ìg!¦§§Í«`î«2–a‹ìŸ"gغo4"ö®1Ÿ[©"¶UÐÌŒ„D¢+«ósuÎBÛÞó?’ÿ< IKi@ñ>|åÊ•]º±~xä'OýõûlÛþùßþ0%B;Ñ OÏ‚4`Gv5‡öÔ_¿ïÒ/ߤ‘N„`ŒICÛ1iDhDhi@ñJûŽG"4"4€}ÇãŽ(W%“–;B3ŒKß9ñùy}ósÆ/^øè»´¡Fx¸y Ôn_°¿¡4M‘²r¥ê»Ïžn¯Ñò_Ö/žÁ™¾MãeŠLÊÕ¾äДú`÷¹ #ßø´M©—ýê놱ǵ6ŒKOßÿÞ¿¸ÿ‰ÝÞô¶¡¯Rn_0ëªWÊ?0.¤<†r¹\®¡lK%Vn—Èè©ÂVPîȤ¡Œ™cÒÌ|Úžºñh­È¯D ãÕ§“ÒkfnÍ̹½,÷ö<"#ʧŸ½ëÿuûæ?nØ“‡aÄæç"J¹‡Ó­Tdn>¶Žz'cyoÝ\yó€ø‚Á‘öɶ~ÈE—D©z[m<ófªnlªWÊZ‘•¨45VsÊ‚4`wíKÍ“öÍgçþîË÷¿MÓDÄø¿ç»ÿ½='’ß)’Jå1Oΰp`^×ÍÈ­ˆy4íøƒ#½6¥ô¥o~éäÝOÿ›Q¢¦pÇ“c#í5š&²l#]Ñ´†¾³ÝõJé‹g:[[‡ÂFþ+?Û½äÝ\$óú7¦×ÙR¢°êÆ&»ÈR4fÄ¢Kiÿ HvÃn|OZA cåÂ×OÿJ޵}c°Q©¢çÉâHõï%……™SÌgÑÞ~ÿÎÿ¨ûn%"»ö¾“Z›}ë»ÍÌj5í#³³>·‘‚^1RÝÖéÞ|+IÖõgd>ñ(‘èÊêü\“—=‚4`ìϘ´M—W."uo¿q‡ód 3jÿÀyL×_ðb)Q™ÈÒÿýódvìS_iTJ~ï¦ßÞ…†Ø-lŒ%Û: ÌÑ7èVj#²2#®¥èjΕ®F—6‚±lë×´§GÌéæà´Í¯±É.þйhÓÁ™Ò€]·/cÒÒ"“ã>r¯®¿0râW~Otý…‘_}Ý(xžlÞöÁ¿ë¾[EÇ>úéšÌ×îkZíÝŸé½IÞ˜üË»Í)éó¤¬Ä|kÿ§hê99ð²»ÿ3íoÛ´RMûˆÏ­ÞÖVo@¹}cÉÂC.WKKKk«×/öno[¦iZM›·Û.‘3­_ÄðÖy&²±H¶õ‹ˆãdw½RokÈ9èNÎUšQš_ˆÑ@yÑîjñ¼|ž†€õ=òø“>üˆ$Þ¹Ÿò…ËfJ-Ÿ˜mjjª££#ùÝýy~OÚñ­ïüëã=ÿ£Üka¾ú?âL¼¬?·ßß °Cé÷ŸÙÜwòcdÒPÆö}L¬¡±Iß袮{È£€rC†ò¶ßcÒ`QšVÓ>2;==ÝßÀ+CA°'¬0& (¹h”)3‡¶óíᑟ˜¿üùßþð“ÞFæ4ËAòû²Ö`Ýøß~VÄý*Aʘ9&-Ÿñ—¹=õ×ï3áÅ!) €xäñŸ±AÊ[IòiÄf4€u0& åŠ1i¨HdÒP®J5&Íôû‡×hR”ÊÏ®j‘ICã{ÒPyÒPÞøž4¤–À˜4¤B i€µ0& i€µOA` ŒIA`!äÐÊ0b=®–––––—«g"fìlmá!—Ëå Fúô–$Ca£bZ/Ñnñê…ãÿMôôL¬¨W3¶IŽæ*¢…ó\°òv‚4  0& @A&{OFì]cÁéé陯ø† ½ûÏŸRn_0ëªWÊ?°‹*y„“¦ÕØêD×£+""²](¾þ•h¤ÎV«ßÞ?;;;Ûß i{•åÚAŸ»Rv‚4 <är ½ª^Í=9½g"Ïim)Õ–*Fx¸y  ëºhÞ¨TÖjšñlÙF²15ºp8="â-ˆÈêüÜ¢®ëz ´ "²ò{œŽÄ _U¯¦ ¾&{3f23–9Û"éuÉ;pʰ`bï¸zzz6ªä+%Üʼ’­M—Ò¯fÏ1A*cÒÊé] 4÷¦„ çF#ö._—]üà ›×H=0'ÞàX—]"£ç6fèºÛœñ6m¿É…P@×Åã¼]¿½vvz~9¤ç IDATz:=·¦ësv¶ÛyÌé‹g:›}â=Ûm—Ȩo2féUд†¾™A·RJ¹gúÌX4G5Í8ÌYÄã §§§Í„Ø–êÔÚê•’¥hÌ0V¢·ÛmÆl†‹.Ùmµ›3f,@¶&-b‘luÉÀÌøyœ9¡°}ši%†NiºÛõÛ3VÒPÉÈ¡(TCÿ¬Ï­t}ñLgkr6)ä‘:›ÃV'bF æüJ¹;ÛªãÙ0(l†‹.‰Rõ¶ÚÍ,Yæë«ð¶¶¶zª¾ëlŸcóiK)åLž!Ç<Õ¶:ó÷ÓmÕæ<‘èJÎ*$ä®frt=0Ð;˘ð©nl²›]ù=Î>§[)ñ‡Vç礩±zû]Þ¤E,’O}7wA癈gp¶¿![#ä¿O·mÉM§i ‰A9¤¡’1& @qš9P,å~Z×ÞVo@×Ͱ'»•äg&s‡ñ¤ÊH{ùPel¢Çåj5·’-Ècžœaá6UÈ=¦5ôí®WJ_<ÓÙÚšþ²aiÐpÈïq:¤Öf‘¥è|4Rg«ÙÛðcÛú*åö}f™ ¦-˜ï>ͱõm›Òp€OP(M«i;=èVjã½ÖfOŠ©v'×a±IßhDì]c>·REÏ“E>UÈ«šZMûÈì¬Ï­D$ãË6Ìai@ÀãthZMc“]×Ïœ xœŽ=܇ùï2ÇÉn»®Æ&W¥dû:óJ¶m: HCåcL€B õLÄSgæP1»­Vd#ÒHÜÇçðÌm¡…ø@¦¼7žOº¦˜”Žd­ÂFšk5ǯøš›[ZZâCÅN·™OèÕ´øÜjñLg>o tœì®W*àm 9óÏwiZCß G×ÍcKvIažód“^M«ióvÛ%’€·m5/9lmõúÅÞímËð£9,-¿™f ,Ó O´™ç"ùï2M«iëôèú¢ù’•Œ fÛ§Ž“ñŒٺ“§§¯$cÓm­ÎÄpÈ›vW‹ç¥àó4¬ï‘ÇŸ|ôá‡Ìð,1ñðáÉ?͘-ŸÄÚÔÔTGG‡¹àÃ#?ù䃷ýþá5Z8óküâá}ŒvîgWn‘ç&ž1ïN“ï?s»ïäÇȤ¡¼‘O@…¹&@™JäГ( óEùý4€ýF& åŠÒká{Ò@X ù4¤–À÷¤€ °rh¨H¼ÝeÌ“–Ï×Ml‹x%¼M%HÃÁeæÓJòÄ£ùMÙP„G’>@Åw ôuy¶’˜s®¼I†g7¾'­$I9}€ƒÐÐ×íƤ¡Œû2žQA`!|OŠ`á!—k(ll26 @~ÝHl¢§g"–o7B'ƒâ.U-I\%=„r“É›v¹¶ç%9¼ š?ÿ™w©Å² ÐV*;¢¼•pLûÒØpØÑ× i´€BiZMc“øæWÛÛkÌ)«“cKÝÞ~º”’Ç܇딦5ôÏÎö›¡Hl¢×7Ùxº­¦<Ží½k±=h%2i(W|Ov ®Ók^Hÿ‡›èÙøl¬g"&‰OÑÂCæÄ¡°‘øü,‘Ž3ŒØD+ùs;>8*[uc“ÌÍÇâç{l~Nš«³u#›=LRϰõ÷Ô>Èp…2™,qte¹e8¢ÂCñ#3ù˜ëð«¶ÕE¢+¥.^îÓ¡˜ræ”XÛP8¾•¬gbö“WDŒ;ÔÒJi¨|ŒIÃÎî°Ú¼¶±ä‡ÍžzØ'Þ™™éééàX—ŒžÛè…ýâ ƒc]KcCC½!çÌLp¬ki`ØœauÒ휙žžž”á‰ÆÖO¦¨ð(mUDDV7c´ìÝH.é}…À'Þ™™ä£kaø”yüÌn\w†–ºÏNOOŸí^JQ±‰ž1ÛÙéééééighÀ¿Ýág±ÉÞ1ÛÙ‚rSy/·BËYÜÚ2™9N^È/L©HQ­D†Jǘ4ì,Lë”±ÉXR¬i ý#íñǪmu›óÚ»Íþ·ÚVùåïx7~ßè ççÄV+""§Çâƒp â™O<šQš£™]Gön$Ç­!}2<ÞÖÖ´ÔgÐ|¬nóù=NÇ–`#ä÷t¶U›W:óˆJÉ÷:ú=9?ÈMöúÄ{º½¦ Øcûâås:ä_ÎÜ-–mmYNêÜ'o­Íî-¤–¶¨VÊ cÒPÞ“†Üc5ôu†z'WO·m¹¶ 7t]D”¸ñÉu¶êÄ,É¿›V¢‘H ³õŒÈÖ¥T²êÆ&ñÍÇÚççê:OWo×ä@‚ÌOÊ«ï+ÑH³:ßÃoax·bÒ–s»˶¶l!bÖ“WÓjÚN77·èºÛìoÐv»•ÒP®vã{Òpàâ´†þÎPÏäjçFï›ìÁ™éÍ0ÂÃÍ¡üVSk³{|§y p £´™«sŽlyö©Ðn„>;Qk³ïpñÔÃÏ0Â!³Ï ÅÛ»ÓdÛ“×|YH_l¢÷Ôpx¦Ï! ¥k¥ xÜåŠ1i( Çɦ9ߨRü¯•hÄšb5º”g¤§Õ46-…E0æg¼gê¶<˵m7²]ßúéCPŠãÐV·å1„®"~ok ñ‡Rîl×#GßÙhos‹WO<޾ÁPó©–3æGÊl"âö zü¡½¹„¥Ï‘|²d:ò/gZñR[lp¦/ãÚ2n:÷É›ü$¤{0ؠųm»w¡×îjñ¼|žóÖ÷ÈãO>úðC"’•%Ƥ™‰µ|ž~œššêèè0×óðÈO>ùàmÏM<óèÃï(ÎOÓ‡¨ø¤¬ûºÝ«’[ID}ø¡K¿|SDž›xƼ;M¾ÿÌí¾“ãqG”+¾' ‰ÇQ®Jþ^G¹ @RÉ}]Ç‘ýÃù¤»ªäcÒHÊ @B_·C;cyÜå®Paq,AÊcÒ`AdÒpp‘C@E"HC3ǤÑ H¬‚|ÒK`LÒ !‡‚4ÀZ“‚4ÀZȧ€ °Ƥ€ °rh H¬…1i H¬…|ÒK`LÒ !‡‚4ÀZ“‚4ÀZȧ€ °Ƥ€ °rh H¬…1i H¬…|ÒK`LÒ !‡‚4ÀZ“‚4ÀZȧ€ °Ƥ€ °rh H¬…1i H¬…|ÒK`LÒ !‡‚4ÀZ“‚4ÀZȧ€ °Ƥ€ °rh H¬…1i H¬…|ÒK`LÒ !‡‚4ÀZ“‚4ÀZȧ€ °Ƥ€ °rh H¬…1i H¬…|ÒK`LÒ !‡‚4ÀZ“‚4ÀZȧ€ °Ƥ€ °rh H¬…1i H¬…|ÒK`LÒ !‡‚4ÀZ“€ÊsM€²fæÓJõÄ#©9¤E:|øð•+W¤DcÒ̤ܣ?DÀ (Fishæ iUì{¨Å˜4”1Ƥ ò¤¡¼ñŽG¤–À÷¤€ °rh¨H¼8eÌ“Æ ?°/*ò3‚”¼tÙÕ±ÜËâvôøx%ïè'Êã¨>gOî€ ÈWÉßñäïS°’ªó÷ßþNY×±ÜËìè”H¦bdŒ?-xT„³/c‚4 Ui¿' (Âý/:u¤üG5g@Ä‘C· Ô‘}zÊ ¤Ö˜4ìó-È u¤üG5g@lA> ûy B&òÕœ}AÀ˜4p BÙG ç¡œA`!äаÿ· 7èÔ‘òÕœ}A°‰1iØ_××TAóÆücÇ{¿¯oÞ¸(õá¯_úâÚŽFn˜«ýiûú¥/—W¿ïpµÅÕ1©TËÏ~â¿öZæ’$—9ù¿Ù¦W@ùyßýß+ÕNÏó0Sê–¿šü_'h…$%ß{¼þ< pùÒøÅå-ûîè'ŽÉ^s‘¨ØrÏfÙž'ÑÚ{Öøé!‚4`OÃ~Þ*­z ¢ÖE”ºï«ŽkšaÌ?~çg>sügŸ9ÿ'j³Þ+?~çgž“?6ɲâãŸõ³"¢Œë†Z1ÖÖÕõ’9ëÅ9¯üÓðº®oöân»CËØéå4*´ü†1ÿøg&Ub?*㺻{¬|·ëþ¯½.üÕyŒ]>ÿI_è[·ËfÁÖ´¤&K1J¾#öxýy#˜™ØÅñ«·ÞÓz¬J+vm{Å×ó$Z{ÏzH ‚‘‰F¹:|ø°ù ö1H+ðÇP‰{£uµ¦Ž÷}õúþÆ×ÿiÞœá7kÑïþùíôž;œ¾—×Ö³vñ±;?ã×u]ÿþgïü²9e°ñö?zÏæÏàÅõëëÊœh.’²‰‚~JTÇxEÎ=õóîÇ?s³RÏ=õÝ_­­oL—ÿ®O~ëIåÌ6½2ÊŸ¼v6:}¡ë/ÇwÙE߯ŽS/9¾g_¾˜¼9s6ó_}7ú›è35Þîlü³ïF×ÓK~ñŸ¾ÑuÏW?ÿne\_WkªæÃÿ…w+#ùÀH>`¿÷»öGï¹#iµñùÿýÜ'¶NW9ŠšõÈܨæîíèÒ´#Çï´iÚµ×ÞXÙ®½ñâ³ãããÏ>ûÊeÃÈQl™!‘šÓ´å‹ã—ÌE¶]ɾô<†´`_ξmzÈôcÏì3Å6ÿ|è»Ñøa}æ¡?æß7N·Ý¨#@¤2sh´ö3H[3 ý1oÓÖSÞýÞ(%Ïýðâuu}͘ìþ‘×oùÔà_Þ,ßûÂc¯¬­ïú€RJ}èѹϿk]ÖÖÿåç§.¼üƒ³ùûJù?û˜¹`òjS7‘÷O©êx}͸>ÿôÈï~âÞw¿ç½ÇD^¾OŸ¬/ ë ½èmVIåÌ6½2ÊŸ¼ÿv6üáÞµ.†ˆ®?÷…¹÷šþú»Ÿø¢_ÿÀ`èƒÒýõß½œ8`ÌÙÌ=þÓÓÜý%ãóßé»Y^ùÒ¹__WÉÅþÍõù—ž¥>Ôøîm޽”ßuý¹™õ¿ùÁà‡tý‘³¯\Ï9=cQs™ÉÕܽ]µGކD/›ÑÔÊ¥©×®º¥ñ–C½xi%}ö”4íÈñw5ŒäÇ&·]É~õ<ùûröåî!Ó½µõZGÓ-ºþÆÌW®¯×£¡™×å¯?mÎýqP5½çm§ÛÌúßüàì_Þ,¯•°ŽA9&vÀ¾i…k>e´žiÊoÖ.þØ/"ï¬~÷Ñ›Ddé×ѵõŒ‹\_W×oåæßyÛºº.†Ñõçÿ¦õyÑu‰üry]ý–¤-ÿŸ~ãº.º.ÊXßX0>OÚü{\G1Âßyj1"ôÔÆ”Å //ßwÿ²ü«ˆˆÔU¿mó¹¦õuu=Ûô *Ê®OûÓ\CÒLßûyìåô,ó¿d'¿g.ê[5m›#s³š»²£KæPUÕÆ¯š¶<~Y4M®^»&ò–´y·!}ž* ôþhóùÆÔ?>ûáwÙ~ùPã»RÎV«xA*ß“†}·¶^Øçâ†!#.Œ5MDÄø×Íèºü®í­JÖŒÚÚ›Eýôƒ>÷.óîAÉÚÖE c%0øŸÉ±ëÏ–?ñ¹sº$Í#©›Øó:®Îþ¢ó[s¬ÑâþUÇ·:sér»»:K9@ùÔý˜ògmíÍ"?MZÃÍ7ýv1­t{ÃdæEÿËáÏþÁmٽܫͶéøôÌE½.Û™Zö2XäVyåò²¦É¡ª*M3ŒªªCb\Ýò¾Ç­i°mgÈ<zžmsGkí!Ó½umã°6fnnyWûÛ?ðG0si².ø÷>”Ò‹ZðÀ²àqG”+ƤÁAš*ôÇ1?Ä][W××^9ó?ŸWÊ=Ð}ÛÚºZWÕx×1]áÜ¿\NZ¤º¦^D––WÌ?—£?‘wÜø¶-«Êö{A?¥©cø;ß¾éOߣaþ¹Q©Ÿþø•ËëÊá¸Gtý…WÂê_¿ñ¹ ºn–3Ûô +Ê~Iþ3±ë_ «µð/èú;ï:þVe䨳Ùöò­m=ïPjæþÅs—×Í) _ÿÊÂÚúv«ZZ^‰oZn:’´éÔéÙ‹ºý‘¹«;z‡ ãò¥‹QÃ8zçñZÑ´ª#GiÚòë‘73Οe†ªøsoJ>+Ù³ž'Ñòñ¾ÅÜ¡÷ÜõÙwôþœ}ùõé§É­wxDä‹/˜Sn½Ã£ë?ûÖ ï[>{YÝØþ7߬IÞxúS®|èî|èîKwİܫºøDÓƒ_ (åþü_8ÖsNÏXTe4l{dîêŽ.ަ-ÏŸ??>>~þü|ôЭ÷$¥¼ªŽ½¿ñ¨qíõ³½›1}M«²7ÞzH®¾þâysʶ+Ù³žçºçÿ³›Í¾ÅÜqßénȽ£÷øìË¿‡L?MÖo¼éJ)uó·U¯+cýÿä#¿—ô§ÚÅØ=Ú]-ž—‚ÏÓ°¾Gòч‘”o¯NŒI3kù<ý855ÕÑÑa®çᑟ|òÁÛ~ÿð-Œ‚<ñÔxÇÉ*©FÏœ{6åô)¯:–{ù÷…a„¿ýÇ_ø¡x>÷/ýÿ½L†è¤ïèñññ'*ó¹÷ôª•ö¨.Õpξô:ÛúÙ•D义g̃'ùþ3·ûN~Œ1i(WŒIþ;À”{yHi»{te6ÐúºZã= ï¨ÞÕ€³Ø ‚4”+Þëˆ}w€)÷:òÒv§Æ§O‰ˆ!ëmuê]<8û‚4P昴|²ÆÀnX;· å^Ç5nÁYI9‚4`‘OÃ>"“FùŽjÎ>€ ØÄ˜4ìÿ-ÈqQîu\gT 8+)'@ìrhØw<îHùŽjÎ>€ Ø‚1iØ_3?xŽ:R~XÁøø8=åÒ« Ÿ†}üŒ€:R~XA¥~IZYÕœ}Àé4ÊÔáǹ€ ° 3‡F;€ ° sLí‚4À*ȧ Âð┫Ò~OÚÏ®p.ÀȤ¡\‘C@E"{€2V’ïI»ñ¿ý칉ŸÑ˜ HJ`çß“Æü`)<îˆrÅ÷¤€ °Ƥ€ °¾' i€µOA` ŒIA`!äÐ@X cÒ@X ù4{Æ0b=®–––––—«g"fìlmá!—Ëå Fúô–$.×ЫêÕÄÌÙ,¨‰òÇ×6Žÿ76ÑÓ3±’´¹<‹]DMó\0¹)†ÂÇ!‚4Àº“`MöžػƂÓÓÓ33^ñ &åC)·/œžžžžžží¿]¿½vvv¶¿AÓv¸fM«±Õ‰®/FWDDd5º$"þP¼.+ÑH­6is{•åhŠ`ÐçVÊ?°‹m¾7Õ‚4T2rhöX4""u¶êx¨Ó>™¶Ä}|â¶~b¢'%í–È5÷Ž-•"NHߺ˜ 1W"é—º”ÃéhADVççu]ס‘…ßãt$6÷ªzu¸y  ëºhÞ E'{3f #œÿ" Ÿ_ƒdªõFÛºzzz2%Sš1Ÿ¦KiW³ç€ aL€½åôˆ®š{SÂ’…áS£{—¯Ë.þá…ÍK¬˜op¬Ë.‘Ñs 3tÝí Îx›JRªô­FxøÔhD·ÒõÅ3­ÉI³_Dêl[ˆù˜ó+åîl«–j[ÄŸ'4ŒXtI”ª·ÕJ|z¶Ë³ð¶¶n›bʱu] ôNÆ2.[ÝØd‰DWÌÌYŸÓ­”øC «ósÒÔX½}S¤W­ˆEr>½)Z;ÏD<ƒ³ý ÙjÛî¤é4­¡TÏA*cÒìKœ ŽuÕ«”ûx]x[½]—H|¨W+ÉÏLæi²æÁ2‡1›[×´†¾³ÝõJé‹g:[[Ó_¶±1,-ù=N‡ÔÚì"²Fêl5{~lÛtJ¹}AŸF&Gƒi æÛ¶;i: Hr!‡`_hZMÛéA·R±A­Í^XLUR™·®Õ´ÌÎúÜJD2¾lÖ †·;¢\%Þë¸Ã1iÄxØ%ÅÝ©¤¡\™9´’¼5ÄüŽl€ŒyüIîhÏ"ª)Iy‚4%üž4¾l p·@{ZcÒPö§7Ï+€ Ø|O€d†r¹ZZZZZZ\®¡°aFxhë/­¤¥¥e(lä½é¼Ö "ûœü» «•?¹ØûÛ•™å陈mN‰ÐH.[³mî”Äå ã.KŸÁRxÜ媄cÒT /Ø× i6ôÏ6ˆH×ßøJŒØDï©áðLò ·ÜO 7‡œYþ à@õ9¹»‹] lvÖٗƆà õc‘¹ùX[[¦‰ÈBÈ/â)|¶” Á&MkèŸí/“œLÊß“ ÷íKú§Â†›èqåõéiµ­.±Tl¢gãóמ‰˜a„‡›z` yxs%«“æ<æG¼¤×€${w±ÙÄ&z\®xž?Û<á¡D^.‘öI$»Rº¯ôŽ(½KßôÖr×uzmcà úÏR”°ðžÐã©››_wà!ñxv4[Þ‹ØDÏÖBFøkww~:©¾®ž‰˜Qªj¤á`L€‚¬Nú¢3ÓÓÓ3ƒ2éÖ$iÖè’ÇÙ i†ö‰wffzz:8Ö%£çÄÑ73èVîÁÍbý>ñÎ̘3„ CÓúgûɳ£gÉÚ]lܸǻˆÙÙ~‡,dÈèÞù IDATg@|Á`p¬kilh¨7䜙 Žu- Äc°”îKÓR:¢,ýÛæ¦3ôHÕm^ÛXʳš¹jQH %ž¼* 't:7¯…8;œ-OZM{§ÇZH¾RŒ-uw¼Sü!çôôôôôôLgôÔF“i¨dŒIÆïmmÍ‘%3ŒØüœØjEDÄáôøC™f‹¯¤Ù'Þ>Güê;Òn>W“üyùVžÁÓm5š–}ÛçäÑ]lt¹æ±wŸík0»‘È/Ç»ñ{~ÝWö67Qu[§ŒMÆ’Ö¶K%Ì‹ÃY773Œ…8ÅÍß)7sœì^Úhß­ëlûD<ƒ}ŽÄÍ•¦šy`LÊcÒ¤GJÉC2]7W¢‘H ³õŒˆˆ(q;·[ÉÆªÌÇŠôìK8è}NþÝE–yêlÕ‰Y’ϳûʧË@Óú:C½“«§Ûv»„yFic󫶨8ûDBÅÌ–uLZ®F¨iï¬ë™_mk¯Yù=Î>M^βýK8²Ï¶9&­ v0£¯¥î“‰ÈÏ3xÖ6ÖÜÜÒÒÒ­$ÕܾÏIë{äñ'}ø!I<ߘ2&ÍL©å³MMMutt˜ëyâ©ñG~ˆg&@6Ü-„ö4ÂCÍ!çl¿ù›%ø.5óÖ4QÓäûÏÜî;ù12i(c|OJ¡áá-i´}Æ‹CPÞJòŽG¶îz{v¼÷ßçŸØüóÈþáüÒ€‚$ÞëX’1i lÜ-О¥Ut ÊãŽ(W| €Š D ÒPÞÇ=cÒ`MdÒp@‘O@…!HC¹â{Ò@X94¤Ö˜4¤ÖB> i€%0& i€…CA`-ŒIA`-äÓ@XcÒ@X94¤Ö˜4¤ÖB> i€%0& i€…CA`-ŒIA`-äÓ@XcÒ@X94¤Ö˜4¤ÖB> i€%0& i€…CA`-ŒIA`-äÓ@XcÒ@X94¤Ö˜4¤ÖB> i€%0& i€…CA`-ŒIA`-äÓ@XcÒ@X94¤Ö˜4¤ÖB> i€%0& i€…CA`-ŒIA`-äÓ@XcÒ@X94¤Ö˜4¤ÖB> i€%0& i€…CA`-ŒIA`-äÓPan  P¦>|åÊ)ј4"=¤;bæÐv¡™ÏL>úðC4)Ò€ÄWf>m‡ñ ‹`LÊcÒ@Xß“‚4ÀBÈ¡€ °¾' •‡‡ ¼•ê*LÙeÚSú±ñqžˆ;qâµLJe¤e¦´ß“ ò|êã–KQÿþÛßá~=£Œ!Y¥¶ ‘9‚4”=rhrû¯ÿ…GúiÀÞ*Õ÷¤ H€ ( òi²i7h4€ Ø;ŒI°MF& @ì%rhÒi€µ0& @® í‚4A°çȧÈæúš*nAÃX~öüµ×Ú¾~é‹whZÚç;Þû/’úßlÓ÷Œa\¾4~qycÓ†Quë=­Çª˜—Ú2"bGï½Ðí–°Öš¶<þüøEi¼ÿ~3f2Œ£w¯øvyùªa=RU®._¾fo©:$"æï+o¼vMÓ4mùòJ|þCUoÙ ö‚‘k†±±ÚË—£"r¨ªÖ\þZâ_åbÛ*äSÇ h–ÂãŽ(WŒI°mVðýzø;O-F¤óžÚ˜²xáååûî¿Q–‘ºê·©ëë†JcÙ¦ï÷˜´ªHðÅóç6ÞÇ‘ô’\»vuë„«×®‰¼¥öÈQ#½z횬\ŽºåΣË_‹¾9V[uíªíH­hÚ‘ã÷Üzuêµk×^ñüëÉ+×´åùóË¢i檪Êå9TUµ%¸Ý¬Â[2G¿¹f(ãv@” cÒä¶¶^X*Ã0VgÑù­¹Öhñ?ÿªãÛ?¹t¹Ý]-f¶¶n¬I¿ïû4û-G_»½xéȉ㵩ÿ¬Ú¯–«hÚ‘#6Y^^¾|I¢‡ŽÞSk¯²½v1º|9r(j;b¾¯R«:öþŽ™ãÙ6V^UuHŒ«å6 kåò²¦É¡ª*M3Œ UØšÛv†Ìó@ÑxÜeŒ1iriª°Ÿðw¾}ÓŸ¾ÿFÃüs]Uÿá]Çtý§?~åòºr8î]á•°ú×o|î‚®›³lÓ Ýté+ÿ浫²%S”°1ülùòÊÆÐµ£Gª4MDjØDdyyÙœR{Ħi×^}9e5µÇïûʲZNùå²5ž4ŒË—.FϦW![‹m¡*þ\ã›’ÏJ€ cÒd³®ŒüÖÖ/¿ðÏ¿üè‡É붻ߡÔ/^š_YW·~¸çJÍ}ÉuéŽÇÞ«”ˆ(e¬+#Ûô‚~JXksLÚù_¿*‡nm´WeÊêT{ãQcyþüùùeãhãæÐµªª*Ã0Œª£GÞ""R{ì–ªÍ?Íèk||üüùùhÒÊ͵]{ýÅññqëDbÙZ&^þC·Þ“”òÚ¶ é3hZ•½ñÖCrõõÏ›SÊ¥”í®ÏKÁçiXß#?ùèÙ™$IK0£µ|€œššêèèHY@%yâ©ñŽ“”KiŸ9÷lJß5>>~âsgh‡ nv:PÙò¿ÿ¼ïäÇ“†rŘ4¹íÊc„ì>‚4”1sL 1•ö1BÒ€¼OÍA€ ØK|O€ÜȤÒ€=E À6AcÒiÀcL€xÜ@ìòi²™ùÁse]þñq¾’–@”ƤÈ¡Ü{¾/‹–pé4Ê”™C£@X…9&vA`äÓ@XB"‡Æ˜4¤ûÒkaL*¯àGy+ú{ÒžyæZi@Éìä{Ò:::h@¤¥TtÍ\–€51& eŒ1i H¬…w<€ °¾' i€…CA`-ŒI@åáíŽ(o;yÇc Ã7ôÍO.ܾ`ƒ¶{…7ŒØdï©3‹ºˆ(Uß}öt{Æ>8àȤ¡\íÒ˜4¥Ü¾`08ÖU¯”`8l»¡Fì]cÁéé陯øvqs Hv×îŽI«¶ÕÅC©ðËår …ÃC.×D…‡\------®¡°nMô¸ZZZ†Âñ+6Ñs÷§ÿáõ¸\®ž‰˜!"FxÈÕ3Ûƒ­D#"Rg«Ñ´šö‘þMK^ab‹ÉŸûî¿J^sl¢gc͹LLA°+vqLÚB( ëâqšQ“®BÎÙÙþM‹MôxºÛ úÜzÀÛ3Ó´š¶Óƒn¥ü½1Êv^øæ'îi²ëúbtEDd5ºdoj¬Ñ6ŸfÔ´§Gt=0ÐÜk†[›>5±wùºìâ^Ø<]õÀ@ÈyáÂ_Ÿl²ëúâÜüªˆ¬ÎÏÉÆšs/h–ŸÃÀⓆòVܘ´©©©”)÷ÜsO"žñ¶DDÕwísˆ,ˆˆRîÁ>‡ˆFl~.¢”Çé§[ùýsó±¶¶­¡ïl÷Ò©Ñ3­£õ]gO;D¤º±©~4â-ô74¬D¥éduÊFúg}âòÏt¶Ž*÷àL_ƒ¦F8ä‘:›ÃV'YŠÆ ‡¹d¢Õ¶:‘ÅHtÅ0d~.R×Y-"ù,˜±îØW®\!HC%;|ø°y”7&­££#%Ø“D<3Ó—È8¥=h>£˜$]©ÑjÚ½Ýsg73fÕMöÑÈR4fÔF—â5¦ÇiÁ>óõ!^ÛÙÓmÕɱ¢®›ëO]Ôát+¿ßZèsF#fÄ(’Ï‚iÀxæ™gòŸ™ åjçïuÌ󓌭jmv‘ä8Ín«‡s±ù¹ˆˆõM4žn¯Ñ4­¦±É>:]Y•¹:çH–G ͧ%£ÍþxXUk³‹ŠäŠÍG%@hXüg|¶í,¶ÖØ;ŒICÛûïI3ã.]„âãÖìIãÁ¢3Á±.»DFOÅßÓXÝØdè\´.9ÛŸÂC‰W‰˜Càì¶Ú¤MŒM®n,J HäÑò\iÀ.ÚÝwâs«€·µÕPnßH{ùNÅs¦¿AÓjÚOzt=0Ð;3Œx”æ—´M4­¡Ï+¾ææ–––Vo@Õw=ÝfÆ{æ&Ït&¿§1EucS½RJÕÇyIe˽ ,N»«ÅóRðyÖ÷ÈãO>úðC²ñÀ^bLZ‚­åóäÔÔTþ7wˆMôžxgû؃Vþ÷Ÿ÷ü™4”«½Ï¡¡±Iß袮{Òóh@¼8eÌ“fÙ7ahZMûÈl;û … “†òfý|@†!ñ^Ǽ… HJƒÒkÙûïIÒ€\ȧ ÂðvG”«Ä{“fe„Ðö—«õÀ•´GÊëÒV‘çÂAØi(Wf˰õ™_A{y°ò´À¸òöH¹\Ú*ø\¨ø]ÀãŽ(cŒI¤#‡Ï-_ å1i¨0i(W|OÒ )UÍ0b=®–––––—«g"fìe- #<är …­S†Â†a©Ö6Ëér … Ãü½%IrùÀRWÉ;«]ê·“»ÙÊÞ#‰:„*¨Sc·‚4 l”dLÚdï©Ñˆ½k,8===3ãßðÞ÷þá²ë€”rû‚ÁàXW½RåX~DqÕ¶w‡ô{8˜§Ò€¼ì<ŸˆH­ZDDÓjÚGú4M’2l>ó Ý}÷ßõ¸™7#6ÑÓ3‹Ï–kÁŒ—|] ôNƶNOù Ëü”+yUæôž‰˜›èq¹’Ó€éeHÚÈ…SoJ²”3ƒj[ˆaüÇDs3Ÿ†°®j[]ÞàÝw|±y  ëºhÎ|óš£ßN~è õ÷œ]wüª4Ù›òdÇv×£ŠÈ6˜ ²ñ`K¢¦Û\R_U¯šNLô$·Ûn_C+ïÔÈØbY÷ËÖ‰¯ª•‰ä›"#6ÑãꙈm®aã)Ÿ{DIš{Ç–Ò€²Sª1iNèz` ¹7å2¹0|j4bïòuÙÅ?0¼°åÂr^¸ð×'›ìº¾87¿*"«ósÒÔX£iÛ.8;“x|>·¾xæTÒÌ"¢i ý³³ÓÓÓéŸr™«2§/žélö‰÷l·]"£¾øC¶2$Ä&z¼Ýí }n=àMô¤9Ë™ÉB( ëâ¹õFŽHV﬜ š¶mxáÂà—gÝJ)åœéËÔfî··¹åÚ®ë6ç™oÐçÖõÅÑs ù\fgÛ+ 6Œðð©Ñˆx|Áàôôtâ”ç%5Þnc]v‰˜í¶«×Њ<5n×oOo±Œû%}âízmcÒM‘¬ÎÏE$2zÎlóÄ=Rž÷ Ã]wû‚3Þ¦ƒÜi¤¡\•jLZCÿ¬Ï­t}ñLgkòu!¿ˆÔÙ¶:YŠ&® J¹û‰Ïž"ÑÈÍÏEÌd\> fàèëª×ÞÌ…oýxsUÕ¶:ó÷ÓmÕ‰Òä,ÃÆµ06?QÊítˆ8œn¥"sóy•së݆·µµÕPõ]O÷?Ø?;›o\{y£“ÔYís”¤ܾßÎ$wט§³­Ú,˜øCæ]rîËŠTFœ’ŸÌÿ’o7³=ý¡-é¯R_C+õÔÈÑbóÆ)ãM873Œ…s£‹º®ëЂ$î‘ò<õ #]¥êmµJB”‡R}OZCÿ¬ùPvJ£ëo«7 ëÉWФ+tü"º +шÇéHéø²/˜Iu›·«^ùz'W“¢©ØDËÕj®ª˜Î7[V¢‘­ò.gòE.þÚH{ ±«Jë¬JÐæè·wó~º°ËJyÑ´†¾³ÝõJé‹g:[[“Cߢë¾k×ÐJ=52´XÆý’yg™7E‘èŠ,„üö._W½Rþ±ÉÕÍ{¤ f½6Ô´Ÿôl^û=ºh[²KŽ—Œ¥Û¶ æ ok«7 Ü¾‘öŽ(D> ¦Õ´y»íI®¼m¿-"Ž“ñ¥ÆlÝ&pâæ|Í­Þ@ò˜«\V¬¦¡v¬«Þ¬‹Ùþ³ý ’ôjÁÖV¯_ìÝÞ®ÅYãç]»†VèçZÌ|yfÊ~ɶ³¤ÖfÞ55V›'CW}ÒŸyß{8Nv×+𶆜ƒÅD²Gîjñ¼|ž.Ö÷ÈãO>úðCfx–˜xøðáÄŸfÌ–Obmjjª££#y=Ø%O<5nî5Øãë¼uzà Û#eti«Ôs¡LwAþ÷Ÿ÷ü™4”·RåÓ‹ HC¹*Õ˜4ÀRn  P¦ÌZ¹ì)ÚèiX° ÒPùÌïIcÔõ÷ÃÒ€˜†»€ ù´²ØG4ÐÓ°`ä1i(WŒI@E"“†rµÃÚ3χ#WÔ›Ÿ‹(åq:$¾ÈÜ|¬­­z˪lu"(ÜçØŒ…ªmu"‘¶NÚJt=0ÐĶκ0|*Ú9Ó—<=}æôF@þ:::ò¼q%HCy3óiE<ñØÑÑ‘²ž](ÝJ4%ÒŠDWDªsÄu±‰ÿ¿½³‹id=ïø3£TÚ£fM·I1àHE­5»+åœÖ>»Þ ˜#ËRZØíÇêE#jA‘œÉu¤Du‘e¥¹q÷bµÐH±F`ÖE:"pö@›SiYËRQÞM/ÒÂ6:ۜә^Œ={> &Cñ̼_ñÇR³é\xa¾ìŒ½\#1`XNèT”9´†÷¤Õ8f ã“ [{s~?ím ,K¡?Ãè,<ä<=uRèñpÕ“Y¦A$©¸O䈋¦"…©Xº1Í Æ=¾œß]â6[x:§Ì†óI~ˆâÙy¿ÑË~†i jÁž4Щ´âž4ßdÔ+ŠéÔjQ’$©¸šJ‹¢7:©^ÒxPxYvÞú=n†)ybòójÆäXVØÚ+án³ý]òÌ[¿§»™B˜Eâ›[‰bµ¯Øï›Ë¤¦¹tL9ÚÄøeÐr0“:ÇïIcÜã÷žz–†c‘`’ˆDQç±Íøp2ÏŠbhaÎ'{bc|ts*‘ŒbèßP¿ì_ކx>(‰¡øò¸Û,uÆ?·x!6|ÀqÄæ…Ø0ÕDX¿‘ü|以Ë߈‹òò!:Jsû~Xû2À™Á|s$üQægh¾÷Ãÿ;ß&Í2EeOš<±feõãÚÚšõ›2¸ú4Œõþç·&?ÄrGЩ´âž4Î8i SiÅž4äûÇpi€“€!òž4ÈÀI ]8ãù4ठö¤8i´˜CpÒh/°' ÀI ½À|¸`| "Ê•+WäÛ±' ÀÙóɯ>k>’÷¿ö$ €“.ò<4çÅè»îf‚¯Z„ º`¹#è`°' ÀI ½Àž4pÁÀrGЩ´bOšEk,¸¨@ ´FÈ2pÒhœíIû»¿™2áïÿá>„À¦®VÁì=0俳öôÞ{øU˜¤Ž2pÒp /¥Ì§9Åï_²÷QHÒîÒpL`++‡Cñ̼Ÿi i9ª4…žÎùÆqqIRquv*‘«Ä¯NÑG{º©k (Š!+9l¸8FmEh‰#õuîH»‹A^°^#Í·IåÏl|ãç#ßU‹Qiò¿ÒÄEïßw3ê¬Êù4jiæM®mØJ g]ÒѳÇÛòܺs£—ajþ„¢n¨õ^8ÍeÖöOeýæºþAðªë käÍë­W_|ÙѨŽ€£IDATžUc&IûÍžñÇRN×PØÍÌYľ̋«³SÉÿ“÷.¿úÅgFÚ˜Ijš×ºö±Õ›-™—G?KN…$Wg—vï]sÙž-G1rcˆ ¨œ¢p~öxûa:Ü~L5…²šÏr¹ÌŸszzBD]®Ër·Þuuôf÷(—÷°ò)é׈ZDÎ_ÿòõ—¹¯|•>{åhûqÐ$}æ¤fjBYz`᫯LtT4zTí4¾bIëëd•VlÌ 9"ê÷tË­Î=¾<¯+·9_ƒF\[‹&C±>5´+ü6l9jï}n!,ð‚Ú©³HMçÄz†}ú1øçåQ„nO?Q.W8&r7÷ÁâtGЩ´è\Çß¾ùÂüÇ,ðËÂ…d³·4•ÈqÓñiŽÒ±¥=†ñÏ=]‰bVbY!¶5ÍÎ×è)Mpw`cÙüæÎK"z¹³Iƒ·^BúyÛ{˜èŒùƒQNŽ£ù±.!¶5IM{E1ŸŒ lj¿å(—ˆ¯Ë“,+lŸ‰‡ä1Ý¢•Æ– Å3OùÁj9=·IõU²1S‰…ã™ÌÆÆ†RGÅ•^`CñL&b~f¥hQVr Å•™Xš›NUâ´žtÅ,•ÛR<“Qþ[“ŠQ&­T\sôG"a–R«J[ìo™*°+½³[=z¶öü„<Û·ïܹ31qSîñ?[{~Òu-p­‹ ÛÏŽu¼ëÛ…®k£•P§/Öw™¾ÀíÛ>æpgýÅ©ª=Ràöèµ.:yþâØ(ÓiŠÃí£^å5õŸFY­I”azoܹÕ'I&ng)H aNÕùÔ-—IyKÑÛë!†9Ü~œyq*½ssbâÎ;·}DDž^‹5RÇp¼üÏWð•þKÔ^&I;Ò¡÷]˜[y kccCÖéØÒ®$YûÄêèsµI|&5ÍQN1Zí§XÒºêΖ°%s†ñ„‰e…ØðìJQ2‘Ûu7cÄÕ±¥ôt­°-á·[Ë©Å7EJoí–ìWšGFFFFFL¬³¶˜v3lØJ÷¶–墓ÍÛ8i ƒiÅ=i¿ýß/ÌŒ¾v> F’¹ð‚2"µ•&¢~ÏÓOD£î¯(†jçôƒw{ú‰(W8–¤âÎfN¸³’<ôÕxz¶ü1Yë -–õ`9çÝž~ù÷{cÝJU¥‹Œu«u¨n†%©X8 QôzzJ£PJÎ žÛˆ¤ÉúbY!6[ñ^dá‹bhÀW² ¹Íº¾RËrpeØÕVÒu©IÅ(“V*N·öƒA^»ÍÄjæ6wŠRqg“ž†´MN·ßé”ôZÃngr§•&ttT ¢.W«‹ˆNNO«3)I§G‡'ÊŒòD’úz{ˆzzû$éäðHaß5î2]vuQáèH’´1Ôë¾÷ݺѣýÓ$«ÚD­¤r»,ç_Om¹ÌËkBï͉@ŸÄ0§ûëO=úØ(W’tôl»`RÌ×Ôssb¢®s[æ³õù«_×?-®ú_¯˜7¿øÅo~}®&©Î€Q•B³jª´Jµþ'f¬êê¨ÈXw)ÅJçÛ¨]YPw­”¹>‰,›OF‚:úJ%·†xµz·§ôô¬p#Âo“–SOÙ–-Ù×¢ÄÔÐ⮑¹4lcÖ2¬Ci'‚wšëv`(}€ù45¿ûB4ÿ1úÚã™xõXŽÒÑä–5êþZ觪‚—•ìráYMhïa2ŸOF‚###‘džˆ¬øš:9)¡ÉpÕŠFÏmEÒ`}1Œî~Ô+Šl> w%U–TØ«\MpI7‘JC-°¦ö3²Ð,ziabóɇKý‘¬•­&ç´ôtÏzo|pÝ%IÌéþú“'©Úwžì2 œj&‰äe{¦OtB™ÇД“iœÕ&1*—ÝòVùi·o^sI5¾±š×¹ýC†ñܪšñk¢˜ï|ý½žÑwÝ£ïºGß½òGÒ%OwlÌ$õ_¾ s "Wf††Ôc4–?1=à ŽrRÝ5&sÿ|6“IM{Euo^+·Æ¸ÃJÏžÄÚ¬åÀyztÃzN¾C.÷¶–biâ¢|³»Ñà¤ÎF™CsvOÚç_ˆæ?&½ÒÉ(§LÐõx¸f|àÊ²Š­¥­ty‘^Ý„J»ÑR™ÒØR&5íZñh’mR2DÎDb©¾÷ør6‰D$/~߬cêåÜJYô’n"{™tßdÔ+Š‚ TõDœ§ÒsÔOs]˜ôIDTØ~v$ID.W—¼OÌh-¢ËÕEužt¹\fÉjchŒºYm”RþÊe·¼5}J¼Õ'Iºî–túbçù‰ëÚèÍ^¦åÅéž´áº:zëôÑÎú“}åB9ÈΓC"©/0zµÎÄ’6†ž«×» Ï÷ן¸®]¬M›ÕcŽ \?\{¾¿þä¹Áñ!‡;K'(–£q”Ëe³¼²#z#ð"óøqé,M×µ‚œ‹aÔÍOÞ~Æ0ûëOöIuºcM1·öëßùú{IòÏgSž™H22’$ÒœÝg¨Ðô,©NÏ‹ p±y!6Lê›Í?1=аŽbª-iE…:¤îl/"å ³ÃÃ¥Óÿ¼Ó÷K¯ëÈmáéœÏ¦oFé)7´ÂÖ$Ön-§Ö‚pѲ̉aüs‹##¼ü/oô~ÖF»²ša£¡Ç/‡`¾9þ(ó3t÷Aûó½þøûßù6ÕxeÊ=iòÄš•ÕkkkwïÞÕzw?úÉãÂY'lú§Î.°´Vî]tönÆ·‹zÁ÷'¿úlôݦüõO‹ïí“–“töàÂÈü¼®2 ô?µ|kòC̤N¥E÷¤­¥ Ùð–÷Ò Ð.]:˜$ȼ­ÀIм'ÍY 㑼å@ ´ùv²›Z#d~¦ß>›G¥v,88t¶2uüž4Î̤Φói€Ö?-B8iThÑž4À &g~@“`¹#èTZtOç fÒ@ÓŠ{Ò0〆 „ý ðùÃIo Ø“Îù²>°eª0¤ý ðùÛËA§¢œë @;ƒIðùÃIo Ø“.$pÒ@ƒ{Òœ4Ú‹æçÓ$iwqhhDÅÐÐâ®$Y hñe+mEh1õŸÚ’.îJÍäð6—pæ §¸23T643+E露Qß.œ±EÀIg÷¤‰b(žÉlllllld³ó~†¹¨r“KšÉÄC¢˜Ž-µùl…EG/Ð>¬ÎN%rÜt*³±±ñô)OñvÑÀ%»šö¶™]NGK÷¤U:÷»‹òàâÌJQ*®Ì i‡? «³5âÊp©Ú=P,‡gSš´ôžÛˆ¤%B(®Ì Í.Z‘v¼¶2ÅWù'â'KÃ1eYVˆ /5œ–z0X’vuãÜ]Ô)”ºáÚZA!GDýžn""†q/W+ziq·VïUëOµ>TÔTZÓ5õéöôXCí<›-‹¦Í³¾Ó3:Zcý à¤Ðî´zOË ±­yp1ŸŒ lj¿å(—ˆ¯Ëæe…Mâ3ñËæ÷ä‡{KS‰7Ÿæ([RÆ– Å3OùAu*ÆÏmDb›—…" ÍJÒîÒT"Gay‚ÑhvÑŠˆ¬Dþ>ûþÜÓ…(Šbháé\i1Œ>›ÝØØPƒ÷ȧ³¸2K—F²•B•*15ÍQN©Dp–0±¬ž­é+®ÌðŠg2ñ+ð3+E‹æIVbZµ¦k>ê³·%°l]ЪVÙ;²kÑjò¬Í¡®Ñ±h‰€“@ÛáÔ|Ë |0X3ª'Š¡…9Ÿ<¸(Š¡…{cÝò@c®p\(Š¡ÈX7ùB¢Hé-y˜s+MDýŸ§Ÿˆ EI’¤bá€DÑëé©­4~n#’JŒ$sá…켿~?`ÖÌݲ"¢†#o0-cÉHRqg3§ŒdSM%ÊÓ[{ä›ÏfÑ8‹>‰,›OF‚ªÃÅÍœ(†|$›’ÜæN]ÅXÒ‡zjM×|X² ¼ z§ïÏùô_²d¹ÌŒ”*φ9Ôµ ꇲÓý à¤о´hOšSªŸe>È ,[v!ŽÕ ]T=·‰Ý’Æ—Òè5†ñÏÝzE‘Í'#Á Ý­äæ´(ryULP–˜>²àÜü4yï—ÊñÐè% ƒ\uÕšÆ|X³€ËãnÔS­X4óêÚ…–Z"à¤ÐÚñž4ÎÓCDÔãáš÷ú‰Äßd”cY!µúÒÌ•r/g³ñHDŽo%w¬©Vg œ®]h©%N-¡=îI;(¼,/åï÷¸†aÜÁZˆaüòn„­½Ò’ýzÏmDRmþKï”êí1 ¢î1~Ú+æñºg@ûæB¢h³ÓP•YDº®Ž\îj^6Vº#¸UqÊR­›´‚Å™•ÒB>Y3sž•¶ßÚ+=çn†©«?ÕÆB­ÖtÍGè¨V»M7ÏF9Ô5:ÊC7ô3€“@Gàøž4ÛÇamƇƒ¼ ¬¶'"÷ør<$æ“ul¾É¨W>¸5° 4zn+5þùljÚ+ ò‚Šk÷ž1Œ{,fÙ¼rÂGä´FFF‚A>M\”s74뛌r”KF‚)OTɰrü—:r†qñ¥—0À ãŸ[³¬Npòîü¥=ꮉÓ=¾¼Î%#Á*šaާøðpI3{§ïß+éUYÛ |PÖØËãný©E«ÖtÍGcèªÖ]I²kÑ´y®É¡®]Ð}ˆ†Þ˜oŽ„?Êü ‚íÏ÷~øãïçÛ²cFDW®\‘Q½5+[ÔÖÖÖîÞ½[€ºüè'åFvíŒô3xË?ëýÏoM~ˆ™4Щ´ãž4šNè`ÚcONò%ˆt4ò|š#§ð`½ÉAý œ4jQö¤ÁCg†Ýú³kèP<þ§ÿ}âŸ{"Yß<IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webtest/http_login.png0000644000175000017500000022131012032647205024677 0ustar ebourgebourg‰PNG  IHDR–±§·¤[iCCPICC ProfilexÕYgXK³îÙ¼°KXr^rÎiÉ9ç(KÎ9£¢¨€‚ˆd‘ DEÁ  ’DPA$**" ˜¸ƒžs¾ï>ß½ÿîŸ;Ï3=ïVUW×NuwuÕÀ±JŒ E0mg¬Gvqu#c'ðPÒTŸ˜H] ð¿^[ãÚe>•ÞÕõ¿ŠýÏ F_¿ ˜ííããk ô|"£c@~…éà ±‘0F=‚1s4l Œ§vqÀ¼¶‹½c4ê·Œƒ>hvp*5:¢L'ÇûÀzˆ`Há¾Aá0¹ÀXË'ê G1,#±‹{a,æýozþ S©Þÿè¤RþÁþ ÜØ (&2”šôûÇÿe¿¯ß n á¡V»¾a…ï%_ª9üä†ï_‘¡¿}Ë@œ~áŽö0mK…{[Yÿ…µü£ì` ÷…l"cõv1üÎ ÿÈX‡¿è“õ­`L€é~1†ë© ¦šíúŒ¦·FÇÙ9ÂXÆ÷bâí a Ï(h!9ÐÁù/™ _?ƒ¿è„‘é)(Ötw,fØç!æ»6Àc!T€9~ DÃm8@üÕJ@…9ñ0/„€70ƒ{DÀ}"`LþKNÿ?(F¿ûÀýþ»F2ðeãþóÏhdxÌ¿u_ÿM§Âcìòv­‹ñ JûטKìêûm\“ܲܿmB‰ PÊ(=”&J ¥È(V'F)¡((]”6Jæ©#°køÛÆ]ýa­þñÅIêN0w÷¿{ÿÍN¿¥ƒþùý€ ÁÕë«[@¬_"¼ЈLŠ Œ%ëÂ+×OŠlî##EV“—ßeÿ¿¹v÷¬?Æ~¶û½A¬Cÿ¢Eo ñž£ÿ¢y”ÐZý×Ñ„ `, ËÛ'.:þ>Ôî h=Òé†ôGF#"³…Èjd3òò!ò)r¹ŠÜFaPL(2Jž§&(G”* u•ƒ*EÕ£ÚQ½¨§¨YÔꚈæFK¢ÕѦht:‰.D×¢ÛÐ÷ÑÏЋè- ÊŨbL0®˜`L &sÓ‚¹‡ÁÌc6±X,V«‰µÆR±±ØLl ö"¶;Š]Ä~ÅÑâøp 8#œ.—†+Ä5â:p£¸·¸ïx¼0^o÷Å'ásñçñ·ðCøEüwFQMš`šÃ4Å4Í4÷i¦h>ÓÒÒ ÐªÑÚÒÑ¢-¦½Lûˆv–v›@"Hô î„8ÂIBááá3‘H!ê݈±Ä“Äbqšø•Ž‰N†Î”Η.•®Œ®n”î=ž^˜^—Þƒ>™¾þ*ýý*žA„AŸÊp¡Œá&ÃÃ&#£<£5ccc#cã K!’|Ié¤Riž É$ȤÏäÃt„é<Ó}¦Ef ³(³)s0s6ó%æAæ5‹‹K"KË]–V$««)k(k.k+ë8ë766]6?¶ãlÍl£l_عØuØýسØ[ØŸ±ã sr„pœâ¸ÎñŠÅ)ÁiË™ÀYÁyŸs•‹™KƒË‡+‹«•ë%7‚[‚ÛŽ;…»†{€{“‡—ǘ'’§„§‡g•—•W‡7˜·€·ƒw™‰O‹/ˆ¯€¯“ï™…¬K%“{ÉküÜü&üqüUüƒüßDÒZ^ ÒRý »ׄø„,…ö 5 ½Æ S„…‹„ q9*r]dI”]ÔT4Y´ItJŒ(¦-%V-6&ާˆ‡ˆŸ–@H(KJ”I I"$U$ƒ$ÏJŽH¡¥Ô¤Â¥ª¥&¤ ÒºÒñÒMÒ³2¬22i2×e>È ÉºÉž’}(ûKNY.Tî¼Ü¤Mþ–üº‚„‚B™Â˜"QÑH1Uñ†â'%I%?¥ ¥çÊLÊ–ÊG•»•ª¨ªD«4«,« ©z©–«NP˜)6”Ê#5´šžZªÚµmuõXõVõÒ!K{D÷øí9¿g^S@“ªY¥9£EÖòÒªÔšÑæ×¦jWkÏéêøêÔê¼Õ× Ö½¨ûAON/Z¯Mºþý{Hcƒ,ƒAC’¡£a©á´‘€Q€Q“Ñš±²qŠñ=´‰¹É)“ SSÓÓ53U³f½æs{óRó9 ‹h‹[–K3ËÓ–SVÂVáV×­µ©õiëW6¢6Q6·m1¶6¶e¶oìäíöÛ=´g²÷´o´ßrÐsÈu˜tsŒsìv¢wrwjpúâlàœï<ã"ërÀ¥ß•Ó5Èõ†ÖÍÉ­Öms¯áÞ3{Ý•Ý3ÝÇ÷‰îKÜ×çÁéêqדޓêyÕ íåìÕèõƒjM­¦nz›z—{¯ùèûù¬øêøø.ûiúåû½õ×ôÏ÷_ Ð 8°¨X¸¤Tô)Ø$ø\ð—ëºPçЖ0\˜WØÍpRxHxooDbÄH¤ddfäL”zÔ™¨µhóèÚ(f_ÌXføp8'—7¯_ÿ5Á)áj"cbxâ@’DÒñ¤·ÉFÉRP)>)Ýûù÷Þ?{@÷@ÕAè ÷ÁîTÁÔôÔÅCƇêÓ9ü$M.-?mãˆó‘[é<é‡Òç3Œ3š2é2£3'Žj=w u,èØàqÅã%Çeùf=ΖË.Ìþ‘ã“óø„ü‰â;'ýOæªäVäaòÂóÆOiŸªÏgÌOΟ?myº½€\U°qÆóL_¡Rá¹"𢏢™b‹â%B%y%?JKŸ•镵”s—/ÿrÖ÷ìh…NEó9žsÙç¾UU>¯2®j¯©.¬ÁÔÄ×¼9ïtþáÊ…†ZÎÚìÚŸuáu3õvõ½ ª ܹMˆ¦¸¦å‹î‡/\ºÑ,Ý\ÕÂÚ’}\Ž»üîŠ×•ñVóÖî«”«Íׄ¯•·1µeµCíIíkׯÏÜp½1rÓìf÷-[m·en×Ýá¿Sv—ånnMGzÇNgrçæ½È{«]]óݞݓ=.=c½¶½ƒ÷Íï?z`ô ç¡îÃÎGšîô©÷Ý|Ly|½_¥¿}@y í‰ò“¶A•Áö!Õ¡Ãj÷FöŒtŒjv=5xú`Ìt¬ÿ™Õ³‘qÇñçî3Ï}Ÿ/½}ñéeüË¦ÐSY¯^NsOW¿Ý2£2swÖ`v`Î~nrÞg~e!fáÇbúâ›Â·|o––î,-¿Ûûnq%råûjæ{Æ÷åÄ>\û¨óq`ÍemñSô§õœÏŸë6”6º7m6§·Â¶¾ÉúÊñµ~›²ýð›ó··ß~`ÿÿyë—ù¯©°Hj4õ÷Y ·ÖëàÂΆ ¡û“Sü–€Ó–±$è…Ä¡xhŽÀ H2² %ˆºˆÖAOar°¦p [ÄwÒ\¢½Hh#öнbÀ0*’"˜Ú˜°±eßâ´ájâÁðzð]å' ø ^F‹¸ˆV‹½“ Hî—ꔲúrò=ŠH%}åt•;ªj’êny{z5·´Euœu3õZõ§ QFâÆ¦&þ¦©fgÌ›,îZZMY°%Ø)Ø;:$:–:Ýv~éòÍgïw×}±yž^=Ô)ïϾ´~BþjfŽA^ÁÁ!‘¡Éa‡ÂD<•³?6&.8Þ+Á.Q?I1™=ùSJïþ¢áRùCó‡ûÒZT¦ŸÊÈÈL:s,üxHVDöéœw'Õsåæ³Ÿv-(93Z„-V+ñ/=Yv«|ºyN´Òª*¾º¼¦ëü|-®N²Þª!²1¿©õâà¥Õüe‘+:­{¯Æ]Ëmkhp}îÆÎ-ÎÛÊw,ïR;b;3îv]ènî¹Õûàþ؃W½ï[|ü¼ÿþ@ë“ÒÁƒCÃ#,#G{ž–Œ…?Ó'/L4?y¡ôbãeˤÿ×ÔЫÃÓ Ó ¯ gÌg‘³·çâçUÀ“Ţ7^oÅÞ~\j]Žz'óîÝJõªë{âûŽ‘?N­û´®þ™ôyccnsrkîËæ6ó7íï1?.ÿ\ßÞÙýÏŽ@Œ3tÁ‹ˆGÌ -]ð‰íƒA`š±þ8QÜ~¦¶žPI¬¡»Jÿ„aƒÄÁdœÄr…u™]ŒÃ›³šë%¯ßQò]þO‚ÂBÖÂ)"çEûÅÞK0HÊKÙKGÊœ½$÷H~F᫽²€Šºª%ÅG-VýˆÆé=ÕšÍZ7´;uztïëõÀqåŽa›ÑEãj“rÓ³+æ-Ç­f­Wl6ì€=­É‘ÓIÀYÔEÆUѲWËÝpŸ‰‡±§Ž…*ç-êÃçËêGôGùo| \z<Òz=¬1¼""721Ê(š=SG‰ÇÆ¿LhIÌLÚ—¬’˜²ºÿñƃÇS9vN£ KÏHÍžß®¥©¯·hˆj,mêºø®™¡Eórð•¢ÖW¿´‰µ»_ϽÑusã6ùŽþ]ߎôÎò{-]]Ýý=ƒ½ÃðîÔñðÊ£ê¾ÜÇ)ýŽOô¥†˜‡¶‡_Œ´æ= 3xÆóìëøÓ‰Öçù/b_ºMêOɾ⚦™þözufföÙ\ÿüý…®ÅŽ7oï,Ý]îx×¹Ò³úäýâGÌšÒ§èõ;¬›G¶~~ÍøÆþ½í§ó¯_¿ýï1C~ðêWBd Þ"Q<¨“hZôq s«…Æeâ)ø-švÚC{¢4‘n~Žaˆ±‡ÔÅô„ùËG6;;‡§—·OïQ¾3äóüW:û„ž ¿Y]û*$qR8©éO2¯e‡åîÉ·(œU<®§ì¡b¤*I¡§|TQoÖ8¾ÇWS[‹CkM»O§F7UÏS_Û€×a¸`ôиÑä„i´™£¹†%°œ³ê¶®±I·õ·³²×pr$8~ttntIwuq“pû±wÀ½l_‡º'­ç+¯+Ô,o? ŸEß³~®þœþ¯“‚,ƒ…C W¡·ÃJÂc#¬"E#FõGçÅØÇ²Å¾Œ+ß—@N˜K¬IòIN~“R»?à€è¥ƒ©1‡¬Ë¥1¦my™Þ‘Q Ï“Ðc6Dz˜³¶²Çs®8u2"×6Oùo>mþ·Óï æÎLŽ?+yQ:S¶\¾yvç¾’»J»:¼æìùÁZ¨N©> ¡¬±¯iýk³J‹Íeß+±­‡¯ž¼VÓÖÑ>~}õ&¸Eº-pGé®i‡wçá{µ]c=4½Æ÷O<DÛ§üس?gàΓµ!ñaêHåèôï3÷ñò‰—/Ø_ºLVMmM»¾žuŸÇ-<3¶Œ_‰ý@Z{ûyþ Ï·ˆŸ¯wýÿ§¶´0*\`À ÎA­š¨Œ@®×0Àõ"j× „å ü?€çš ÀÎò“Aœ=>sàÄ)BÖPt ºuC3Ђ¡…ðD‚³ºûˆe$R éŽLG^BN (y”'ê$ªµŽA»¡O¡û0HŒ&s³…UÅ&bocá q'px|‘èi¼h®Ñâi½ho˜„A¢,1Ÿ¸MçM7H¯IßÌ ÀPÌHb·ßw8ÜkíὟûˆð¸ä‰æÐ‡ÑËÏ2ž‡MºO+ÌÌÍÇ-~Z²{W´ÚõáéÚàú­¢­À¯²Ûkß/ý ø½ ázƒ \ap€kHY ô€×°÷9àš€\(€®BcÐ&‚ ¡çöiˆ:Ä œÅó"M‘±ÈJär%gæE¨A4>s¤ o¢·1ꘘ.,k‹-Å.â”pé¸q¼þ0þ9Í šZ Úf8ûM"Ì­‰t tõôô < •Œ"Œ-$R+“ÓMfæ>G–yÖ6$[»,û#N« ¹ÞqŸâQãyÃ[ÌgK&óg X 2 N Õ Ç‰Šrˆ~{,^#qDÒGÊTš"c!!—/Ea\ñ«2»Ššª;%Uí¼zŸÆM6-=í}:T]=ý0ƒDà £<ã “+¦Í&Í×-‰VbÖ†6~¶ÇìêìûVœœÕ]¼\»ÝØ»¼ËÃÆó˜×CoŒ¹ožßd€T`JP&T7,>üJÄ›(þh·˜²Ø‰xƛēIORû-œ8øäé°KZÅ‘• ƒÌÚcøã‘Y‹9Þ'ærÃOáòk œ 鋆JŠÊ‚Îêã¨üT=rþVíÅúËŸ5¯]a¹ªÔær=áæ™Û—îvwu½îyÿû#ôc†®Aáa‰Q™1Åq¥çZ/õ¦L§ífÜæTßÞN/ŸYÑ[ýûqóSÌú†Ífû–¯‘Û}ßÉ?âöÿö?p€^ÿVpEéh£`ℴᘒ]ƒ¦X„ìù£ˆ«ðÙ‚©…Œ„ë4("Ê•ŠºÚFSÐIè»ðj7ÜÆLc¥°)ظn’€Ã+ãKñ;44Oiõh¯Äàó7±ŒŽLw^‘¾›Á‘a…1“$@ºÇäÁô‹¹ŠE^Û§Ù´ÙVÙÏrXsb8;áu­ÅƒàyÄ›ÍgAf&ÏÀ1)W0BÈMØTDS”"FW‘P“Ô”Ò’Ö”ñ-‘V@*Ê(9('¨œQm¥Œª­kpí1ÑLÖj×¡Ó Ó6P7l4æ0É7c0ϵdµ:g#cÛeoìÐìDçëòÌmÏÞú}Liž[Ô(ï÷¾‘~ÛYAœÁu¡ a×"T#Û£c®ÅIÅW&²&e%ÿØq`:ÕúУ´=GΧod-<¶œ¥–“3w’’››÷1ßñtïå¶bJÉã2ïòŠŠJ¹ªŽ‡ój³ëe^4¥_’j»œÐÊxµ¾M¹ýö ­›7oKÝ©êèìï í¡ëmy`ùp©/µŸc uÐ`hr$ê)~¬~\wbîÅ‘IÑ©ži§×³³¾s Z‹gß,-‰.»½KYÉ[=û¾øCöǘ5ÇO²ëèõ‘Ïåî›Ü›Ï· ¾˜}ùòõ¶íöouß-¿†³ŸÓ¿úvý㯨°=DЃËÓ;;ŸEÀæðóÔÎÎ÷êŸ5p²¹úç{Å®0®¹—ï~ý1U»Ï¿þ ÷7‹TŒ²Ë pHYs  šœ IDATxì½ ÜNÕúÿÿ5ÏBæ9„/„¤ Rq¢ôÕ ƒ„TœB:éDe*C9Dfé”:…$J%džç)óð×úý÷ÙgOϾïç~žç~n¯^wk¯}­k­õ^k¯}ík]{?žï?òôOD@D@D@D@Ò >ÝÛgL'MU3E@D@D@D@Dີk…̆„9ˆ[GOÏŸ??Í“6nÇH ø/–×U&ìqш€ˆ€ˆ€ˆ@ÜÀ kÚ&6nÇH ð& Ö›‹rE@D@D@D@â–€Lظ5LD@D@D@DÀ›€LXo.ʈ[2aãvhÔ0o2a½¹(WD@D@D@D n ȄۡQÃD@D@D@D@¼ È„õæ¢\¸% 6n‡F ð& Ö›‹rE@D@D@D@â–€Lظ5LD@D@D@DÀ›@fïlWî;ï¼3cÆŒ%J¼÷Þ{Öɹsçöë×Ãýë_O<ñÄÖ­[­SŽD±bŲeË,0~üxS‹)›1cÆ|ùò•/_þᇮR¥ŠC!‡vaF¬]»v¥J•r +GD@D@D@D a„5a“ìðu×]gÙŽkÖ¬9xð 6åUW]e (P S¦LÁV¹sç®^½úÚµkùå—C‡­_¿~ìØ±yòä±ì‰üùóW®\yݺuH.Y²dóæÍÿøÇ?²fÍj—‰Ÿ4Í[¼xñ©S§{ì±øi•Z"" " " é‹@ÌLØÇÜêyïÞ½1Ôp ¾øâ‹V¦=,€ËÖÄ/ûþûï9r+¶Fv VúÊ+¯|ùå—93fÌäÉ“÷îÝ‹¯·bÅŠ–@\%~øá:EeÂÆÕ¸¨1" " " é‹@ÌLØ”èvƒ 0aÑ|üøñ$õßpà ˜°ˆ±` ÿøã˜Œø>ñì^ýõ;vÌ’%‹9»`Á‚iÓ¦íÚµ«R¥J>úèˆ#Î;÷÷¿ÿ½hÑ¢à÷ýöÛoq-sŠClè!C†8p`Ž9Œ†åŸ}öÙòåË@²páÂ]ºtÁÔ^´hÑôéÓÉ9pàq¸¨iQ¥_ð"6aOŸ>mi?{ö¬•N‰ÄW_}eÔ–.]:IýóçÏG´L™2F˜â¯¾ú*1µ˜ÂÄ6Ìœ9óèÑ£={öäìÂ… ûôéCç.! Ï<óÌ™3g8´z‡7³w©QÅÖ?‡¤/\¸`r”SѰaðt6lˆ<ÆÏž=;–4ö+M*T¨PÞ¼y*ýŠ€ˆ€ˆ€ˆ€DD 2Ÿe“&M"ª á'N|ñÅË–-ÃmIqâbË–-ë§g÷îÝ£FZ±b…qµbŒI\ªo¿ý6d›6mZ¶lIl.¿Ø„Ì>k^J«Y³æk¯½†ùä“|aåÊ•ÿüç?›5kFÙ‚  =zô°¼­ä`¿²›oNY–¨9tÿ^¼xÑd:¢~”#O“ð7jÔhÒ¤I|™×ˆ[°"ܵ(GD@D@D@D " ò׹ʕ+×´iSz>zôhc¡òW̧d¿üòKœÇÖ?>Ë+_¼P…0Æ%Á²Ø©¸oÔÌg´%Ÿ—±`µ (·Äø°¯wÝu9|Àä›W¸Ì5oYÂJˆ€ˆ€ˆ€ˆ€„'^Øð­·K{€µzøðáþýûó,LÕöíÛ4è›o¾!AL-_à/ àßÅ?Z¿~}>ª5oÞ¼ 6œ?>sæÿÇÁr»Ö®]›?9¶qãFü©D˜/mQVþ /ðé®k®¹æ²Ë.3ßÕªV­ši*_þâö+ÕìÆo¼õÖ[í]PZD@D@D@D ñÂÒU¾We¾áŠÊ>9˜ªX“XŸ[¶láë°|ðîOÄ8ÅgY11Ið6QĪ’æŸõ:ÛâS\˜¶X±˜¿Áå|ñ€ÀÜáÇó:÷ÜsѺ¦¸i$N\¾êE“L¦~E@D@D@D@""áùþ#)Э]‹ˆŠ¥/ácÇŽñEXþÄ€õw LûqÙQÀæ>†,ßÞ"“?Nk}€CJØüçjý”“Ïx5Í“ßå¯`Íž•)" " " —,£§÷éþ»c1q Æ’ Xë!@Ö‘ã8 ó×ü”ûå›*¬ÈG:H’@â$ÙU ˆ€ˆ€ˆ€ˆ€$K ›äP/^Üü}„0n×$µI@D@D@D@D E È„ý/±I¤è0H¹ˆ€ˆ€ˆ€ˆ@x $ÏJ’" " " " qA@&l\ ƒ!" " " "ž€LØð¬$)" " " "dÂÆÅ0¨" " " " á „zköìÙá5JRD@D@D@D@¢ ðÀüúë¯a †2aQ„Æ0ê$#" " " " Q˜ü¤ùóç¨^½Î. ‹€ˆ€ˆ€ˆ€Ę@;í2ac<R'" " " "Òd¦4aéˆ1ÈLØ-ZÜwß}‡6­øúë¯o»í¶Ý»wǸQI©kҤɜ9s’’ò>ß¼yó… zŸS®ˆ€ˆ€ˆ€ˆ@z ™ KŽ9òÖ[o¥‡®y·qìØ±uêÔñ>§\ô@ â/dÍšõË/¿¼ùæ›ëÖ­kïààÁƒ×¬YsàÀk®¹æ‘G¹âŠ+8Û¥K—%JT«VmÒ¤I¹sç~î¹çV¯^MºhѢݻwç™mÛ¶ :tÆ ÅŠC¾J•*‹-3fL‡j×®m¯" ½gÏž¾}û®ZµêòË/§ ¾a„·oßÞ»wï­[·Ö«Wï·ß~»ãŽ;Èá…ZµjU«V­Î;ãQÆ›»|ùrNuíÚ5@¿N‰€ˆ€ˆ€ˆ€Äˆ½°·ß~{0:;fïF¦L™°\{öì¹lÙ²)S¦˜SÄ,]ºtÖ¬YU«VÝ´i%&c¥J•V®\ivóO:Õ£G<»Ì!CŸ>}.\¸€¹¹cÇŽ'NØõ¤/^¼ˆZ¤H‘?ü°cÇŽ/½ôÒÚµk‘ýõ×±¤?þøã»îºkÅŠ¦Á»ví:yò$gIôëׯFß3fÌØ¼ys@:%" " " "?"6aq¦>ùä“|¾kĈön<õÔSøeË•+WªT©üÑ:•#GŽ`bf̘3wàÀ¸?9‹ó•_ ܃âÓ­\¹2>×ýû÷ã4ÅJÆÒ%ÓRœX·nÝúõëÛ¶mËÅ6lˆ÷ÓO?ÅÆlm×®]ž DiÂbz²qouÉD—âõ\²d 1¦„±ž>}Ú:¨Y³&.ÛÙ³gÏ›7gêâÅ‹wîÜÉ/!­¼ePÐ~ £™@Xìi‚b‰C жAƒÆŠ}íµ×ºå. \ÜÀöRJ‹€ˆ€ˆ€ˆ€¤SÑ[u¼#Å–½évýúõ 66l/rcÀKZ¼#†ª¼ã•/_>^½âCC† ùå—_ð˜òîW°ß”R„Þš|å€ÏŠp÷Ýw?ôÐC-[¶¼é¦›¨ýå—_Æ’&J`sca‡i’dD@D@D@D@âœ@†çû¤‰ÝÚµh(^RÞ|²vêý$=j¢`ùÛ¹råŠ(À”ÏÿJH«Ÿròùû¹}º·àÍ0¬a^sÈÐr‚&L˜@tã”E@D@D@D@Ò–@Ï£°ñpG&ipZÖ`4¯sùuÒz‹ ;ÒOÆ/w¬ß©ðù|Ö.üꫯbQÀ›gúÓŸd¿Úá(-" " " é—@,MØx£Àwj7nÜÈ]üIþ–A¼5O툎@:3a ÀiW¿ßrè£ßGZJò" " " " ñI =™°ìòÇ ‚Ãa㓲Z%" " " "CéÉ„¥ÛI¾RC4R%" " " "Ÿ¢ÿ¨V|öG­Hx2a~ˆÕAH42amDÕHx2a~ˆÕAH4éìu®˜ãç1×)…" " " " )J@^ØÅ+å" " " " ±' {ñâÅlß¾ýäÉ“±o‘4Š€ˆ€ˆ€ˆ€ˆ@ È Μ93eÊ”>øã5cÆŒ.\¸ì²Ë8 ¬"mNž;w.sæÈz—6 U­" " " " ˆÌÈ6lØìÙ³ïºë®V­ZåÉ“gÛ¶m›6mаÆÔïҥ˾}û°¶S£2Õ!" " " "º"0awîÜ9gΜ2eÊ<ùä“2d åþøgÌÙ#F¬Y³&W®\ 4hÓ¦M–,Y8…5Y¢D‰jÕªMš4)wîÜÏ=÷ÜêÕ«I-Z´{÷îü†”Á\:tè† Š+†Î*Uª˜‚ùòå»í¶ÛFM½äW¬XqêÔ©ˆá!nÛ¶m×®]«V­J«0gW®\‰ kذá¢E‹ÆŒÓ¡C‡F™öëWD@D@D@D ½ˆ vË–-DÁ^wÝuÆ~µ÷ƒ=z¬]»öñǯS§ÎôéÓGŽivïÞ½téÒY³faJâ²íÝ»7vp¥J•0(.\RæÔ©Sè?räHÏž=©½OŸ>X¨”E9zÆW½zõõë×S/™µkׯ®Í™3'&lñâÅÉ>|8‘»}ûöÅf59¿ýöÛŽ;Nœ8a _tD /쯿þJDzeËæîFêþýû›4irÇwÜ~ûíóçÏÇfíÔ©ñ²çÈ‘cÀ€™2eZ°`¿Ävüꫯp¬Zª‚eÐðàAôW®\ 'îÖ­[qS‹¶_¿~ À±ŠKNÙ²e±_ÏŸ?_·n]1»){ôèÑ]»vÝzë­¦I4ß­Û·Ú£„ˆ€ˆ€ˆ€ˆ@܈À [¤HºñÝwß¹;³gÏ2Ë—/Ï/v!ÆåÙ³g1$ÑX¨Y³fÅ|,Uª 6ôJ‚elE~âĉ>ø o¡¬ÑP¨P!ìWÒTµêPË!í!À€†þýû?õÔS7n4™4F&¬—rD@D@D@D þ Dà…ÅBåÂLù¢VÁ‚í}3F$nN“¹wï^ D>V`—IN;•â÷Þ{oûöíCê±›³Ä6Œ;cÆ Œà!C†ðRZH%ˆCxa1[ï¹çúЫW¯ï¿ÿžÈ‚YL j5p¬.^¼˜xY¢pšÞpà øJcÕáš5kæÍ›—!Ì›7û˜Šx{,@y… {XµjAº4è[Bš7oÎWˆ1  :vì¸|ùò%:%" " " "Ÿ"ðÂÒG}+·ûŸ}öY1qͲÏŸi}ñÅ „—”ÃZµj±wÃS)ï½ù曯¿þ:j©îoû[É’%ýªhÚ´éºuëžþã_½zõÆOÛhØ•W^É;^”:~ü8ï–ñë§Aù" " " " qK Ãóýÿt@·v-šˆûó0¯s!Æ=~V~ `u„“>|»6†þWG«Ž;F¶:ò=i0Ÿ&0-Ä{úôiLa‡$Ö°#G‡" " " " ©O`òäÉvƒÓ³GOïÓý÷°Òȼ°FF¡ùž«[5&£;3†9n4@¹Ý<ŪN9Ã:  :%" " " "sÄÂÆ¼n)(„õÂâÚB»Šˆ€ˆ€ˆ€ˆ€ˆ@Ì „2a‰KˆyÅR(" " " " ÑeÂZ/rEW‡J‰€ˆ€ˆ€ˆ€ˆ@ (6†0¥JD@D@D@D 5È„M ʪCD@D@D@D †dÂÆ¦T‰€ˆ€ˆ€ˆ€¤™°©AYuˆ€ˆ€ˆ€ˆ€Ä€LØ”*Ô 65(« C˜R%" " " "ÒÌ„?~üŒ3’ìâÅ‹wîÜyôèÑ$%% " " "žÀ?þ¸fÍšðòi(¹qãÆµÛ;e·4ìi»LHµ1›2eJÀß=ݺuë¹sçb^i‚) õ§ úܵk×M›6}øá‡3f\¿~ýO<ñàƒ¶iÓ†"ýúõË”)S·nÝ<‹òÉ' hÞ¼¹çY“ùþûï#väÈ‘ .\uÕUo¼ñF€°N‰€ˆ€ˆ€8´jÕjïÞ½ŽLß{ï½W_}•ñÈ‘#ÝgS4ã,sæÌE‹ýóŸÿ4hP˜VÙ;e·4ìi»L)!3kÖ,œt~ýtûöí£GîÕ«W–,YR¢öÄÐÁòìpµjÕV®\¹eË–òåËÿôÓOȬ]»ÖHþðÃ>ú¨g©0™8_'L˜pÇw<õÔSܳgO˜R’° 0Àøóúöí»aÆwÞy'[¶lœ-R¤ÈÛo¿ûÉ’LD—.]öíÛ‡2duß|óMŸ>}R>L§ÂÈ„¬.…ÄêÕ«ÇNõ /¼€70…ªHµÉ5a¯¾úêI“&aÅb²Ás&,NÓÝ»w8pàÚk¯…ѶmۆʕS¬X1æn•*U,p³gÏÆNÍ!Ãã?~ã7Zù$xjDÛ–Ç”¢ü3g=µ¡6_¾|h7nÜu×]GKxv)S¦ E˜XØ8ƒ“,øÊ+¯Ð {”tM€û§i¿±\K”(‘={v“Ã][çK/½Ä!·QNá–âžž;wîçž{nõêÕ¤)Þ½{w£Äó6Š¿iĈÜvsåÊÕ A¶aã°]»v+V|öÙgQÎmáÂ…¹/O:c€›{Û¶mÙÅ­Zµ*1g±"(NÙ† š¶Y¿ 5jÔ@2d#í²”8vÏxöW¶/X0ZêÔ©Cûýúnl’Ûn» O*ýâ´Íjö“±àuöìYËínU@òTgúîè‚!ÜÇ/ìQžá˜|èb •'Nà'Є‹¡`Á‚§NêÑ£Á={ödHx–bîôŒ"Žt,NŒÝ!C†8Æó <~á…eÆ›³~Ú°˜©qâĉLtš´cÇŽÏ?ÿÜa0™gŽ6èPD@D@•·N+Æ€ôÒ¥K¹)c0Ø»wï9sæTªT‰ûûÂ… !ày=sæ ·x\Wø¡°ê¦OŸn…%p#Þ¿¿A‡ò_~ù…tíÚµ1šsæÌ‰ [¼xqr†ŽÍ€‡¸C‡&Ç1¿¸±Ö­[wÅW˜Ã$‰˜½SvUö´]ÆÝ¿žbŽûí·7Æ,L@ßÑ7|jÕ«WÇl‹©½ÿþœjݺ5‡‡²šän§Ê–-Ëï’%K,1%"ðÂâ1unÔ¨QŽ9®¼òJž°G±S›4i2oÞ¸‘–XÈ„g<{j¬Þ[n¹ï²Q™€¾ã³#€Pcy±b)‚·’X2wß}7‡Ø6ÔN³ äcëã7Ïî‘E ñþ9æs’ŒÀ„E—#îØ\9<±ñÄã»ð<—dÍš‹–IL3ÿðš7ï8‹¥kš•7o^³QºtirØî·›°ääÉ“çõ×_ÿè£FÅu…‡5@Ûå—_ŽýJ)lÙ›o¾yæÌ™<-^¼øúë¯g„)HYGÉÑ?ˆCžï³;îbv7É.-€ˆ¦d©R¥¸_c‡Y¥v옉BN¡1u72}å$7–Þ2ù04M¨‡üb¿âö7£[³fM¼­øÀ 0`rã5+’<Á`eò MøÌ¤±ðáÊe?âiˆ²¥ d´YIüÊ«cÔÈnE­ZµÈ YЮDiCÀó6Êî(¯‘pgg•ðü—7Üpƒ±Ì¸eoÞ¼™»ü‹/¾È½ØÂˆƒ Ÿ±¤D"@¸_Ødß•KÌ$0$'XÖ‘«CÏ÷”À6o@ß=›‡±„›ÏÄZð^õÁ{Ï6 ÁôšLOmÊ„@ LXž·L$†#‰%à׸`I0)‰ '¤ƒ¾NÇ3–‰éæ¥>þøc‚\yPsûh±\Ù\xä‘Gø2ïQvîÜ™šm(´ÿÃËsæÕÈðíJ”€€çm”ø=c¡rç•,|F\ì ’àcM›6µÛ¦âäbƒtîܹ¼•Ï_À6¸ï¾ûx—‹7Xܨ[´hñõ×_c"»O%?dz=Å^'D˜mý±cÇôݳaX#-[¶Äråå-ö«-·gÐÀ»C|Ç€nOmÊ„@†çûÿþMãníZ$‰O*õ77-žTÂR>|7­;ˆ1Ñp¹3cL«½ Ÿ6»Œg:ꂞڔ)" " iBÀ}Svç¤DÃ@ëæc÷Lq¯çŸ[ÆÊiÖ¬™å³´2c˜ðk€gOí-7mðì»_ó춯]ÆÑ/)ûÕŽ"|:õLØðm’¤ˆ€ˆ€ˆ€XøkUVúRH(~ Ì(Ç 6L5’X +’Ò#" 4C^6 IDAT" " "Jd¦hU#" " " "+2acERzD@D@D@D@R‰€LØT­jD@D@D@D@bE@_$ˆÉXêá›g±T']" "-0_ Vwº)Wkr¢Žˆ §Úõ0¨e¦ڜ‰¬"óÙÞÈÊHZD@bJ€¯¸ǫ́ÿ¢MLÛ’ÆÊâdMNìäT›å‰Z©6aT‘ˆ€¤3qå­IgìR¦¹‘”áú_Zù¿p¤äA2QË„MÉÁ‘n ,öâÅ‹;wî9räÈ… ®ºêª7Þx#í «£E‹\–£G6›øë¯¿~ñÅÇW¼xñ°*REŽvfΜyòäÉÔFúðáÃ$²eËV²dÉN:]šAîã?.[¶l¹råReT‰ˆ@ $sù:wî+¡»)´’so*P @óæÍÝ5^R9gΜ™2eÊ|€ñš1cFnÖ—]v‡iÁo¤Ic¢«Ôº råÊÅíû¡‡ªT©RtªT*&¢ôÂâ|0a 7Üðé§Ÿb˶jÕ*&­‰H Öó[o½Q‘4.R¤È¨Q£Ú´i³iÓ& î4o " ! D½|uéÒåá‡ö«%=®ä~}‰·üaÆqƒ¾í¶Û¦OŸ>kÖ¬‘#GvèÐ!M<Ò¤IÑUZ¾|ùwÞy‡ùŒãìÿøGtJT*V<‹Ã¨Þ»w/Ïs¼‰+´èÿL©mÛ¶ :tÆ ÅŠcÊV©R…|øJo¼ñFŒ¶ë®»nÍš5½zõ*S¦ §ØëÙ²eK·nÝ’,øÊ+¯0uìmËš5ë—_~yóÍ7×­[מ?xð`ª`ßäšk®yä‘G®¸â Ó†%JT«VmÒ¤I¹sç~î¹çV¯^Mš¶wïÞ_d<Û`׌á>bÄ”óÖ A,Ñ,Y²åVÝí´k@žöðoêÔ©?ÿüóÂ… ß{ï=Ö”ÚµkÛÅLú™gžiÙ²åõ×_Ï“4Ì“O>Y¿~}°·mÛ–'ižÿ"=õöÛoçȑêˆîôîÝ{ãÆè!‘3gÎ={ö<ýôÓ/¼ð {þùç7n\¯^½wß}Ô¿üò éž={fȳ;wÆÉñ¯ýkÅŠ÷Üsσ>HA"Z·nM³ùø\W®\I :UXµ“p7À~–4íéß¿ÿ?þˆÿJTGNß¾}W­Zuùå—“ÃÒŒX’-q¨Õ¡ˆ@ËkÑîÝ»“\YŸ¹#˜…«k×®U«VuTí·’·k×®bÅŠÏ>û,òO<ñDáÂ…YCHsCIr17UÌž=W ëÕã?Î ˆLÏEÞ~‡jÖ¬¦žßšlÔ¦—_Ø9sæp«åÞamö¾¬í¯àÛK+›œÜé€Ã(ÐeCÉ…šÛ 7Yê­S§»Žö9€å0f̘t ™«S„D¦÷D3,[œb™Ã ™8qb50jwìØñù矛"l÷¦ “ÀÑŸÛo¿­",æcÇŽÙOeÊ” Ë•6,[¶Œ dNц¥K—²6±€âÅbãÚf €é…‰Œ_,ÍØ‘ôníÚµ¬†Ì?jy¢µ”[t·ÓÒ`l¦P5×p… ØÜƉ'2æÇ€Å‹“þî»ï[²d éŸ~ú‰Ÿ!ŠSvûUýúõûÓŸþ4sæLš1þ|r¨ñÏþóßÿþwr`µÿ~óxPªT)„¹`ÁÌG$ù·k×.¢G5j„•‰!ÎsÎx~ÁBO«÷Þ{ïë¯¿Ž½Îíärÿùq7à?çþç˜<Üð~ûí7 hv¾°žy^"WЇ~رcÇ—^z‰á0·Ä®Vi¨ Ø—/Òa–D_yÂçñ•goÏ@/¿•œE%È4•Ü2’\ÌM‘}ûö±ˆá4Á1dÈ2ýyûŠe'`MŽš[šÄ=Äš c¿ÚÛ|;㶈¿©zõêëׯçNg BÉï‰åbÁ‚ñò0ÇC­{}1eaˆ Hš 4€4 ¦³¥K—Žâ”½Iô8´ð\B™±’é¸{1Žñ%ÿðÃÄi˜¶a§š²˜ÝXÈ›Cž,Í5Ìý‰4–=jy¢àžaÛ=önr„é&OôÝäׯ–ÀºuëX@é¦ñ¾çÍ›—ªÉaà˜HÌ·iÓ¦ÇÂd£H’-±Ô*!"Çò~Id}8þ¼c»ÌjƒßJn ¸Á‹¹‘G†§ëìÙ³Ÿ>}šåšužûQ’w( ”ûî»ÏoMv·$žs¸ Ò<^½p72xìè>þ¸Üø¬"ñ™àÆÄ(m»óÎ;MxŒ'öZ!ÃËîøzn½õVc'˜¹g&–n€uáÆÎ,u+÷lFºFfDi¢:Ožúè#‚;1 ñ°òÔK>O'æí%œ…xdM#ØöÅì ©‡Mƒçç9L%ÐY¿Â4z¿xæ0›æÎK]æÏиͱùL¨vU£Š©Ã!“ ë–"öu*  FË7 cNQÓiT¨P!ò­a¿_Úƒ±ÅŽÎ`ÖVÄìmp”)ûò,Cx»±äðX:tŸ16ÕEqÊ® •Ç LU“ “NLOÌMkË ¯ù_|åMÔ±Y0kœIÐ 3¾ö •SÖêɶ Æ·6¿~ °d´ÙßxcL™-Öã,÷fP(’dK,µJˆ€DGÀ±|á¿@O2—DÓ÷JÜÂàÅÜ”¥µfåŸ\’Ƨ|‡b)ã_píéå,V4÷Ä£>êhsð팛šYQ¹cb-YeÝùž÷M£Ü1béI×™NxUÙ4¡¸ÃWŒ!¢æ+a¦X`¸-ÙÔæqг”;3É6˜Kš'*Ss ‹˜T·ª€ Ø[ °ŸB˜( X‘ v¶up:âÌ0+rt§,ýlë`Â4ÈtÜÊç€&|œóæÍ#gyè$ ª˜¹x-Ɉ¸@>±ñk€%ƒ¡Ocð˜À\òpüøqlzc.£Óøz­"Jˆ€¤ÇòÑ’h·„<[èXÉ k \!xR=K…É$Ê1,*Ó†$ïPat¦ L"|FXZl‹±ïgosDcg/èH{Þ7ñì fwßšRI·òø<ÄŒë÷=øp;<ð€'›/üðÔÄ.4׎Y3ÓÌóˆ¬ ·r¿f8*M°Ãß7Á£øG˜6V#[D´VŒ-‹}S³fM/yÄúÁÂÃÉjFȡۋ˜Kd°ÆjÕªÅÙzÌ!ÃFL‚u O!i¾‰eB°[ríK² øDYÁéOóÊ<ñðAËûk5 ¢Úpy._¾Ü¯±„™ÞtÓMбcÇZ!Ñ"ºÃ„½âÂ$ÌŸ€'ÃÇŠ'F€Kÿ:~,W–?†•zü¾ +HýZëÎÇOƒî@8’i°]  öò:-¡LšAÌÍ`â¡“=Aù¼Tgש´ˆ@ª¿$ââÉ71~Ís¬äˆqOaÍÁÙÁYü úås{¢,/à+Aú“\äQ•äšìW]æc¶òB- c%ÿþûïqB³‰ÇëÎM†»à~y"µ”ßu›…%ö9ï¿ÿ~ðòJžO@¦ûÜ.ñ¦±eÍ]Õ"iŸ™¼ÖÂÌ´ˆ…´.<•{6#P[Ü<Qš°X®xÈykŠ 6‹ ©d§˜qâ5)¼k@¼ÙÃc‡€ï¨G,VæþðzÌá]wÝ…=dÒXxz"5Êñøó†“Ï Jìs  cöéË#}¤§nËçìÙ³¸i1„­æjw´!Ïæª™™Ä$'ÒáðTî9 €:xfx¾ÿï¯Õwk×"X޳¸W™Ž&BœC§:ú޲XZ\$„-:ò“<Œº C31Ô8ÉÄG ¡ìñ;L² èd=M¦ÿÕ¯v“Ï_ îÓ=(#¸xDgéOVЪ_Y ).Õá<}båó kÜ ‡§ò$@0ÅÙ³Š³QÅ“F°•£„ˆ@Jè9`k‘µì{VrID —-·O%ž™ø ¸ðí×¾§X@&mcõpÄè'¹È»¦æšì®ÝžcÇM1w™8ŒØ6ä—È+ÿcgo€gÚ)#ÎŽ¨yÅ” žñ Ù³¿ž™n˜Iìsb\Zòøtˆâà»= àNꘙ ‡[¹©ÅÝ «v+Ÿ¨=g¯Õf{ÂjÿÌûé0il8¬=%íæ)à—uA‡BË`bÅtœJò0É6D¡3ÉJÓP dw,¤!íW«G@az<…Ùê÷Ú€'Ÿ(úè‰Ô=âîœ(êŠÛ"n˜Iüól°'Šˆ†ÃO¹»ž HŒÌèMØÄè¿z‘røf¤yÅ2åªfH/ˆèö餗ŽÄI;eÂÆÉ@8›Á.®rgnº;þò‡t×d5XD@ÜdMvw,žr²y…='j™°ñ0—œm 4™]†T ‡uV¯c­É6)•ä”"ëÒ›0¨eºÆ6>2xBІ¨" " ¿ÿÅGQHi‚œÒ„-ý‰:ÊjY”T&™ÖüåØTn¢ªC@·é0”$“"0aù(lbôY½Ä# Ûtâ©z@ 61"'X蔈€ˆ€¤_ºM§ß±SË£  XØ( ©ˆˆ€ˆ€ˆ€ˆ@Z ›–ôU·ˆ€ˆ€ˆ€ˆ@dÂFMED@D@D@D@Ò’€LØ´¤¯ºE@D@D@D@¢ 6 h*"" " " "–"ø"_3[´h‘9sfë[tcÆŒ!ýÚk¯ 2dïÞ½îR ½`Á“>xð C,¢Ã={ö4kÖ ›˜ÙÎ;»Ë®[·ŽXòï¼ó·~˜ÄÒ¥K©´I“&•+Wƾœ4iÒÖ­[óæÍ‹W§éÝwß ‘ &zÁ­Ðäx*ÁŒæ£GîÚµëÖ[o5ö4`ì×óçÏ×­[×”u“ñ«Eù" " " " nü…äˆþÂ\&,•9þþ²U^IBWMkÌë\î–…ÌÁôd¿žÍ}6èFCéÒ¥qˆ¾ôÒKf7?S¦L„ p ¿¬y¥,kÖ¬xd7oÞL&~Üõz*Á§KX›o¾‰C÷£>zúé§=:°„¬Qb" " " " °¾ žFd&,z-³5|IrÚ¸qã€"x@¯¿þú–-[Ž?~Ú´i˜… BþÞ{ïmß¾½U÷½H›€â ðcÚZgÍ{fXºä›LO%œªS§NµjÕf̘‰Ì7† fäí>Ý”fb5[ Ä&6õQÞÿýDðFÑ5kÖÄwËnþ¼yóøŒ×âÅ‹wî܉ÝÉ‹_óçÏŸ5kѱX,Uª>ZÂm_|ñEâL¾§dã=°æÍ›çÉ“ëÙã‹Ål]µjÕ™3g,µJˆ€ˆ€ˆ€ˆ€¤ôjÂò5>,€9pà@·½{÷&˜áõ×_oÕª¾RÞÐÂ~ÅS‹åÊûXåÊ•3NVÃ-‰#F4mÚÔ²J±PÝJΞ=‹¯÷Ýwonñþ–Ñ@A>[K\ÁܹsSgœT‹ˆ€ˆ€ˆ€ˆ€E ÃóýGrЭ] +Ë/›3ÒH[?U)”ìØ1¢WsçÎméçµ0ÞÁÂÞ}ä‘GØúÿý÷Í)Ü«üaÏ¿MàV‚¡L¼6®¥Ö$pÄb7S£#_‡" " " " á „72ŽžÞ§ûï£džoMêKº­Ì9rx6ÃóE1#éVB­=ŽÖR˜?~+­„ˆ€ˆ€ˆ€ˆ@ªH(6€ºÖþV€¤N‰€ˆ€ˆ€ˆ€Ä9KÅ„½îºëâ|$Ô<Òëë\!»'1Ä# 6ñÆT=' 6ÁXÝÄ# 6ñÆT=' 6ÁXÝÄ# 6ñÆT=' 6ÁXÝÄ# 6ñÆT=' 6ÁXÝÄ# 6ñÆT=' 6ÁXÝÄ# 6ñÆT=' 6ÁXÝÄ# 6ñÆT='9Áû—>»7{öìôÙðxou£F⽉jŸØh)†.[ÛŒPRDà?dÂþ‡E\¥V¬XWíI€Æ 0à×_M€Ž¨ —K|)Ðe{IÍvuV"" 6"\©*œµð•©Z_BWÖ§{û„îŸ:—È.Ù¥@—m"OkõM’M@&l²¦¤‚ú·5IIõéL÷ÂÏ?íÐæ¡(=rìÄ(J©ˆÄô»貟Y¤–ˆ@‚ ïz}™ñÞÄTiß²m'©'K&½€˜*¸}*8zºÏ™4ÈîÖ®EÔšvU¦Ç¥@—mÚÍ—Ô«9®–…ÔëvJÖt©-nQ³” 5:L2aÓúW'{»„5çÏŸ_ÁÍÿ=8qz¤Ë6N&vÍŠ“e!vJKMZÜÂÓ—O+<+I¦=,™3Dñ_Ú·[-ˆ59~bM4õEqÍR$$Õ"Ç´¸…yaó’dÚ;'íÇ@- 貘ÄE@Bˆwvüøñ¹råjÞ¼y¨Þ¤‘Ð?þ˜%K–*Uª¤Qý—Pµ—Ô½ÐoòO›6íðáÃyóæmÙ²¥ŸLsbÍš5‹-¢`ãÆK•*…†K³Hr†`Ê”)/^|à¢@wðàÁß~û­P¡B9rÄ{¸|<\¶p†Ø‰'Ò±(æCpûLÓ +˜•Φ#)e¶hÑ"sæÌ“'ON&‹O>ù¤@©lž;wŽÆ·Ü.óꫯÒÈ‘#GÑÙäÈ’9eC_˜·X‡´3[¶l%K–ìÔ©ÓÕW_¾ÙöY¾”Ÿ¤ßäÿ÷¿ÿýúç?ÿ™‚~2œr4Æqè®4{öì<‰Mš4éšk®¹DLX3Ü·ÞzësÏ=g€ðxðî»ïV¨Páí·ßv#²rì0†À’÷KÌš5+RöìÙ³˜#Ó§O?yòdÆŒ/\¸ÀCþG}DÖì5Õ=òÈ#Ÿ}öÙÞ½{ݵ¿÷Þ{%J”pç§PNJ_¶ÁÍ>sæ Ä>øà‹Øe—]Æap)¿³ö¡÷“ñËONY?!óí3M7¬Ð$ÿ’0Ôâ¿1oa—.]öíÛÇ’ Ù!ÃÝŽ{I€¼NÅŠÀÙsb¥ÊOO‘"E^yå¾'ÿÎ;ïŒ7nРA~’Ž|ǬpœíáW\qÇwèt4ÆqèY°\¹rY³fÅ„õ<›À™_ý5V}§ ,H²§a`&©$jaÆñ sçwþå/áIfûöí6l°´ñŠÛo¼a9{Ûm·a6qØ·o_ĘÒ<›qÈ$·Š¤B".Û€^@Œ?rv×]wµjÕ*Ož<Û¶mÛ´iS€|À©ä }rÊ4)ŠSºaEMEâ“@j˜°\º<ñW«V»cîܹqx¬^½štÑ¢E»wïÎ/hÉ—/_:u&L˜!C†ÇüÆot cé:t( q±bÅ7÷a”û¤F–øÑ£GãÆ@OÅŠ§NŠ~mÛ¶íÚµkÕªUÌëpMáÕÀtpË`ñ ê¥—^¢Á;wî1bEÐÙ Aƒ6mÚàÙ²:討}Û1cÆtèСvíÚŽÎêГÀÙó)nÂ2^Œ²èŸþ™ÉðôÓO3¾LH,ZÆ#À=ÄîYá7öìÙÃ-„K€y΄gšùIzðÌd"LãU«V9fu’—Û¥33è-[¶|÷ÝwŒÁ¿‚ â5œÝK‡{ ¤cÈD•{ž¿~ýz¬Lž“Yp©š ŸÀwíÚ…5VºtéÎ;›Çæ?¦ê¦ üfÊ”‰Ýë+Ö¤åÊ:Œ¯Ý:›j‰T¸lýúÂ(Ì™3§L™2O>ù$Wb<ªñÏÈû‘¹@˵{èÝÓµ!ËÚ^¥Â/ ž3 ö–gk‘Y·nÝ›o¾É,½ùæ› À8}út¿~ýBÎR{×”%¾ÃÝ»w/]º” ,B{÷îÍšR©R¥•+W.\¸Ðtt¹îºë°‡ âèö©S§zôèqäÈ‘ž={²õéÓÛ™$•¤%Õ«WçRgcm˜’+9sæÄ„-^¼89ܰ\©tÙ²eÆ5ë–¡ f·_\»v-&8wDtZÑȸ«#”mÇŽ„g9:«C?Ü ­ÿêßtCÀ–X·OWLQ¾l†2†‚™œ'N¬Q£®ç;f…ßL ÿÙgŸýöÛo‰7}ê©§¸ ü$ý¸ó÷ïß<mCƒéQÀåvéÌÌZµjaÞ™…èË/¿„Fž±u<—7Lxº‡ `Xû÷ïÿÖ­[SðСCüò/$ðÍ›7c^³Húmû`j0uù÷ÕW_Íñðk¿®YNÙ%cÒržO 13¦vcä¹\;†Þsz ?LY{3"ÒÑâ9ÓL ­ðÏÖ"óúë¯#Ó¾}{±¸}#FfÈYjïÒ"¢Rà Kxá€?u9È>¿Änc‘åéÓê2\rÜ?X…çÏŸÏ)­³\E< 6iÒ¤råÊ,%8q·nÝj¦ƒ•dQãÉ’0V.±b©«lٲدçÏŸ¯[·®©;ƒÖ ÑÙž2F’_êâfF#Ùä½ýöÛéVñ”æ~ã®ôÝk«¥P ³çþŸ{ŒüÙó7ºå&‡€9ä”]ÒSÆ/'G³f͛ǯˈ±Žó@)Ì IDATXÅ.-“Ösˆ3ÇOŒ!n ·ÜrK»víŒf?I?ÅÝl÷¼r4†f;f5J‚/·Kgf²à`ÅK€C”Õ‰çÕ7È~K‡¦{ü–lVV¶† Þ}÷ÝÔB¼Šñø†n¾ƒkùVÑ€mYÈ›6cdð¬EšÝ­zõê™Ì4ÿµ_Œ)tÙúõÑ3Nh‡Œßù-׎ˊ¿[’{>8ÊÚ[â7Íqë ¿€øÍ4{Õ&í®…5 ÿ4w1ž´‘¡…ÍRwÊ"J&,ë)·LúÀê€-HØ—£K¬Ëf“‹m2Nñôl7aÙÑ “ÕÙ¼"†<²FC°ò€‚¼šŠýŠÚf.Q£ÐúÅÑËF?·7.iÒö;‡%cO`ýpX¾|y~é 6V/Ë‘ã®þÙ5(LÀáRýäó¯šÞæ¼O“é Öé8Ë(þQ¸pa6 Ì„DàòË/Ç$<Ä–*?1“æ$%Íœ±Äîy l ¾Ü.©™yÓM7ñûá‡r™_ýõ\ò†RÀÒaa4 ÷øMóŒwß¡!$pÃÊC”Uœ Wö|q»Ë/$Xgã$á¸Sâ²õë©!F È£>êñ#sé¹ÇÔQ<`z$YÖ®*"=á¿™f¯Ú¤Ý­ýá‡8e…[XEBÎRK^ Hi©dÂFÔ žÿ·ßæ94Ëʽ÷ÞËÖFDÚ¢(h™³xeˆzì±Çø$B·nÝÌfŠ©Ý’±7ÆÄÄ«™LîˆÜWxûÕ.£tr8î…¨úpö—Í5°tr薱ΆIÄl|žÂÁClÍ ?1c—¿Ñï'éY{D™VcL)Ç¡¥Êór³Î^ b~ð²cùÝpà vw]ÀÒáÓÂå7¬< !clPžŠÙq2¯‘Yƒ<ÓÔ%K–tìØ‘‰,?gÝ—dÌ/[¿ÎbÄ‚ŸÆ¾Š]ÌoŒì2î´5ôÓÃ]ÊäXeíé ¿€$g¦瑹‘ÿã_:šlv¶J'<Ôˆ… ‘çK| ?ýô‘‚¼‘`.l«lÍš5ññ*üyó0 /^ln½–€_"Ò‚8HØ{â ¶çØMF-®8î\Ï?pË!Ç.c¯—XI.uÚ† ó—ÇknŠ·($¹-_¾Ü®DéçÎ_tÿ7í_ Lî³ä(ŒôTÀÛg…Ÿ˜•ÏTçžJx´•r΄l°½1q’|¹]R3“köÚk¯åzçý*;^¿¥Ã Ó^ʤý†•·Z §6!Fô=zÔȇŽvÏ=÷PêoûïŒb]ÿ`¯C<ŽæÞYû©4L{^•©sÙbô½W¯^ßÿ=Ä=ó’.¨~cÊ>ô~Ó︽¬]&"=V›“\@üfš½j¿41ú¼xMÇ'ôŸwÌnaÈYê§Vù"sqdÂr#™9sæ3Ï<ÃÃKúŽ®ò1Þã]+ÂÌù6 ‰¿üò‹CÆó0Ò‚M›6Å€æ%ô¹sçÖ¯_Ÿ‡x¾É‹\¸jXõXû¨Å.c¯”Gä_|‘PZ\ÅlðcÇûžvGš;ï·ñëÈסsç/xþ7iæ|þó+üÄL>Spp>h?vìX?É(Úf/bo ùŽCr‚/·Kmfòro¬dogè·t¸aÚK™´ß°b¿ò)°A1بµÔÃgCœ—M ¨emaWŠWÌG]L½„WñÉó*Ü K“¿ 3u.[ˆÄ‹³¼IùÐCñ™<¾D†Mæ7FˆìCï7=üŠÛËÚe"Ò~ñ›iöªýÒlò>£o¾ù†Øš0Ž˜ð³ÔO³òE ¶2<ßÿ÷òwk×"I½x@¹éšèø$…#à£Ülëðþ>úÙy7q]žJŽ;ÆêÃ3¢çـ̈ Ò ÌeóèÉý†‹Í|ôž?Kƒ©Å.ã¨IÞùð¿:䇠æ=¬…¯¬[“ëËÄûŸÞq4>…—m;¹ðóOzàÿ¢Ð?qòÔ>Ý?‰áìõbǬûoÄMü$Ýýå~Ìwå°„’ü³ ŽÆX‡ž—*¼w|ï‰/Ÿ;Œ9« üñnCÒÊI«DÏ£hI 4 #žK‡3  §<‡Õ|cß´à§Äo)`Kš {^Þb&D½ÎøUÃüø¹l!ƶ¿Xüfa·ºé9FÖYwÂ1ôžÓÃ]Êä8ÊÚÅ"Õf ?Óì-!ÍV'ÏW¼{;(~%^ Ä;ã±ãgY°š”®©¹¸Å¨ðF¦5åâ.–§Ì`¦<³ ø¨ ½Æ~E-F­]¹]Æžï–tœÕaÔÎÇÔ¥u3(è˜ –*Ǭ) ÐÒl%Ø"äfÌ÷í“4aq¢ÐžÃ†À_|Á7æ½m¡6 ϥÎÎ!o?ôœöG»pø4F[äü _$ %ãá²…˜Ý]m§á9FvGÚ1ôžÓÃQÄ:t”µòI$Sg/¢žiìyòî~%"èøœ0Ž{S•8!/&,[<–w3NШqHàÜ…X¶ÆaÃ4‰¿†F,@Æór#T†¥tJ¢# Ë6:niXŠ`òL‹Ë{ÕöO¥a“Tµ¸ Ä‹ Kب»qÊؾ›åP~é&çrc'”MœK‡•zš|ºl“Ï0•5àæGþ…¬WËBHP‹-x1acÛ+iKTçþø“l‰Ú»øïAóì„ÆI8lüãR ]¶‰=´,$öøÆsïdÂÆóè¨mNçcú…,§v‡ €»%„”DDà?tÙþ‡E‚¦´,$èÀÆ{·dÂÆûñJo¼71Û'wN*ÂVUñE ý.ºlãk&©5"(dÂÆõHò©¸n_ª7îóY3S½NU(iO ]/ºlÓ~©"ˆdÂÆï¨*â0~ÇF-T$ ¥ a«*tC Žþ:Wºa–* å›&©R*ˆkZ âzxÔ8´# /lÚ±÷¯¹Q£FŠŽ÷Ç£3"p©ÐRp©Œ´ú)"9ya#g¦" " " " iJ@&lšâWå" " " " ‘ 93•HS2aÓ¿*ˆœ€LØÈ™©„ˆ€ˆ€ˆ€ˆ@𠛦øU¹ˆ€ˆ€ˆ€ˆ@ädÂFÎL%D@D@D@D@Ò”€LØ4ůÊE@D@D@D@"' 6rf*!" " " "¦âý¯s ==Mù¨r!Э]‹¨õÆ» KÇútou÷TPD@D@D@D  üúë¯ùóçç7º¶) :n*%" " " "=dî´Ë„½JŠ€ˆ€ˆ€ˆ€¤ 40aÇ?cÆŒä÷=›7oN¾Kùsçþýï÷îÝ{Ú´iVf¬Éomò5Ī/Ò#" " " iK z¶E‹·ýñ¯I“&;v\¹re@O°­³Ÿ|òÉgŸ}fFš¸çž{NžûlÆ ßzë­C‡qªQ£FS¦L1mpüâ<¶×8räH€@ŒÏŸ?òˆ´9”ëPD@D@D@.É2aÁD„–D¨P¡BÆŒ3eÊôÈ#`¨-[¶ÌXrµk×Η/_Μ91(‹/nÈîß¿¯mõêÕ±_§Oÿý˯¿ýöÛŽ;Nœ8Œ~ñâÅuëÖµË\¼x±k×®øƒ?üðCâ0×®]‹À믿ŽyIz×]w­X±âرcdîÚµË!èׯ>W,Hs‰©Å޼ñÆ7ni<64§pEÛìé€XDÚìš•KŠ€¯½†B®\¹ØyÇ͉½ˆü‚ ˆ|½ãŽ;fΜi|––c§Z‡Ñ%<a1ûŽ?nýi‡mÛ¶‘Ã'ˆL 8•Š0¦ˆ¨FOi/2á«“¤ˆ€ˆ€ˆ€$d™°Žþ›0SÌÙ%K–ÙÉ–úéÓ§‘!LsÕªUgΜq± r%’uùòåVŽ#%Ê›X„Ï:ò±• „5k¶àÖ­[ù¶Wƒ ŒûÚk¯ñίpQ{€sÔ¡COn±$s&Mš4þü1üÄæ¥·pˆ¥ [¿~}¢N‡ Æ‹\ìøŸ:uŠ—¥¨¯iÓ¦| ëé§Ÿž;w®£zëG)_æ p—®Y³æÊ+¯Ìš5«UÄ$ÈéÛ·/ßs½ûî»zè¡–-[šO¼üòËÐ'N$Ä–¸ã'v”õ;ôÓé'ï—ÏËdxŽýÎ’Ï7n?úè#Þë Ñ) Ï÷IV·v-'܇|Á”’¬-{·€Éá¥+ˇ´ˆ4°"M)ȧ ’ xu¨åïçöéÞžÌwÞy‡ [ó–CÆêâ*(" " " "oâÝ„%H—oìÔ4!ï&,PLœošÐQ¥" " " " qH –ÕŠÃî©I" " " " ‰G@&lâ©z$" " "  N@&l‚°º'" " " ‰G@&lâ©z$" " "  N@&l‚°º'" " " ‰G@&lâ©z$" " "  N@&l‚°º'" " " ‰G@&lâ©z$" " "  N@&l‚°º'" " " ‰G ökàèéa0ñ—cÈI&}ÐèÇÏxi,Ra,9 «Š´" éVäUoH±7a©¸óc­‚«úîûÁáÏN™2åâÅ‹<ðE~üñÇ,Y²T©R%|ñD’Œ¢ûãÇÏ•+WóæÍá`O'KJ¾½ötrڜ̲q; Sz,’É-E‹ÛçF—Fø¶¥wÈvPŽ^§(7G]çÏŸ_¾|ù×_-[¶ûï¿¿`Á‚=´_Â1©(E»Ã-oß¾}™3gvSâÔ®]»òþñ/&IïÓ;&RG‰ýró»*ýò=[‘°§{f̯»ò¨Ó)bÂæÊ±Ú-Z>|˜n`Q]}õÕ=ôP¥J•ÂôjÖ¬Y– ûꫯ(P`äÈ‘a úÉœ;wŽ¥ÁïìË/¿üÕW_=òÈ#­Z%a¦ ÁÚüj Ÿo×E÷?ùäˆÖžß·drFßhãöØc¹5›{;íi?ùðùée†ïQcqÇw”-[ÖºˆºuëvôèÑQ£F…¯Ô! UëªüþûïŸþù>}ú\wÝu±äz^•ö¹Å¥¾=ñ9|kÝ’vPœMæ’âÖorìj-™¿ýío7®_¿>9‹/~å•Wî¼óÎܹsŸ>}Ú’I„ý>âW£gü„“ßk9¦/Y²d§N¸3ž={KbÚ´igΜ¹páBž|8ÿÿýßÿíܹs„ <‚>õÔSܳg­0`b$úöí»aÃä¹qˆfw›=s¢›Þ,¤O?ýôüùó?üðÃÂ… ·iÓÆSù%žé˜T)ºL%*ê1aŸúýš‰ô1Ì{<@\‡ÜíLñmÛ¶ :”k¯X±bŒ· X¿~=æ¶fƒ x*µœ¦\íùòå{饗(‹0éo¼‘+Ÿ|dÜz¸È™4,££uêÔáI—Šx~mÛ¶m×®]«V­êè$ͨU«ÖŒ3V®\Éó¥h×®]ÅŠŸ}öYŸxâ ®Ø^½zM:Õ¡%fĈkÖ¬ÁÓL˹ªé²i*ÄÕªU›4iÖÛsÏ=G“H-Z›ž_dLÁP)ÝW\q…[¿½ûŽ®Ñ·Óx÷/LØÑëÝ»wéÒ¥9ûî»ï²)Ö±cG·¤gŽçèß\÷„=O%™2e‚¿]¡.»Œ=í)?gÎ@±|ƒqöìÙx/@ú¿ÿû¿¸Ò?ÿüs¼wv ¤ãp2î”°$ð뾚Â,•ad¬¾ˆ¨;ö‚'f€È4îSL~Ó ¶òì2p~y»ëõ×_g¡àýK|"ì@š; ]>ÒtÓ›*¸Áq¥sûà’§…ì=šz­± `°bGº YÕQ»ç40Ͱ› CI’“ ™ˆ.ƒÅó×­Ç~½„\µ00°_ÑYI³ ç”ö»F<5˜.XÀ=Gʳ›ÉÌLölT&,OêÜQTçKÄ,ò,cÞÝ{ï½DüXýÄ£FÚìˆÁÛ-ŸuÖ3ᩇ °y.±—2ÃlÏ!kÏ +‚QÅ31Ûëì`Z&¬ ™Ç¶ßþ)hi3Ó_šÑŒ1Ê nŽºÜ‡X“ÄÍð’>Ö$q{ø-K¿•CÂ,[ö®h°´Òxp)Â6Þ ü—V~˜„côÇΘëÈñTÂM8cëT¤¸äq!cý³‡‚ŽÅ‘¸16VX³x ±ª³q8 yœ Nš¨Mžå°òq´X­M2á f,¸_²ˆãø1Kû¼Úl*r·ÄóÊòlSç>®nîÊÈx–5Þ2Ç%ïPH¤9Œ`’W¥£ 9Ä™ ‹íKH dz¶Ä³¬g¦²§Œ#3… ;jqú-œ IDATSvIÏ%Å.@Ú‚ð ‹C-3ÕÞ¡Ö: ¸œ-™ð ÏÏ›p¯Eƒû>Ð#« 2ž­Šº;ì Y»ðhƹËÍŽ'p"ËÙˆ7íçjÅÖ1aä`:pù°aÈ _µjûøžM ŸÅô6Êiá=÷ÜÃõÎV¯RÐ0{¥L‚Wì¨W!Ïià¾W4ÌÞþ0é0—‰5©Zzì2Q¯Zž1oÜ6†ß5â©ÁÞ6“v”[&ù9) {öü…àÿÚm¾H3lÞaçâd rÞ¼yØ|xMKnç\g#ž'<öX´™Sžz°GY ÐÉ¥ŽÃ¯ Â<”³#ÕO@Œ]- .7ubgyšäÿé§Ÿhb¸"ð £çÅ_ä¶j´k³ªÃýÀ ÈsÌ 7ܤñmTQ5 žÂyã#¢1”íú­JIXuY]óÓ`/eOCŒz÷ÿüç?‡l¤UÜ ½95í3÷L°$VBâ 7ï¿óäC§°{èé€Û'­ŠŸIˆ³ŸAdÄ1,ìhîSQŒ÷ž ¹ñpwÿàƒpYñöš=[âye¹›arˆÜàö€Ü<…z–õÌ4ŹUƒ‚‹Ó“7ÿXFƒ¯J¿füÊÃK —*O5ˆTê§ÄžïžáŽ»°I§dw]VŽß2e ð[RŒŒ{B.,nµìEZ°ö˜tÀåìŽ.Çï>â×#{üdüZ«î`o±poâÓܳ¸’ RB°¸'ò0÷DƈhÌ\LFFܯIáó“Ù}詊uƒ]JÞ÷ :‡ýJ‘&+vòW!Gk­fX÷J+'ä­Ç¡Ãð—‰}Rëa(áh‰E½jyôœÒ~׈§«a&á9R™˜¦ˆ ËÖCðMÇ7Fp*W)ñ ˜˜¼ÛÄ.$›#|ß±k\«xj±\ f·Â1®žš¹÷»õ°`qRáñåRÊ6mÚ”»#¾™¹sçÚUñÉã¬Ùë7ùijòüdÞ á©—L^®¤¸ÝȰk3Õq×ģ̫9Ü;Ù ¶W&œˆÜoÜþy²arðò òvýöâî®ùi°—²§LPžQpl?•dÚ ý[“fóŸç4HR‘â gó…)Dˆã—¸jôs4#~&!î¬I&ÿ}÷ÝÇ»\Dp4Û}*б ˜¿;óŸÀtxØgÀ G³gK<¯,w3L£Àë\\5D@ò èYÖ3ÓçRÅ{J„®DIfðUé× òqÄÒ " ˜T Ä:å9Éí™–¤•H9ÈVî„ß2e—ô[RŒŒ{B.,µ¼$Jø&×£½j{:àr¶‹%'ÍÐ{ÞGüzdŒ_{bجU61ð¼pÏ"F®ÚFÕX®DñÖ/ßs`#v–hK¿&…Ï·ÏdÏ´§*Ãûõ\¡ÜGìo›XÂLVìä¯BVLÂ4Ãn4ÌQÖï0üebŸTnmDL±ÙkV<ûF´‘ŒzÕò,è9¥ý®O Žö{Ž”C&&‡žïÿûóç^ñ†rÙpï ®˜?IרÉ=Á2³?ý(L–’cÇŽñg ç¡xϽ`«”;áÖƒ =ÂÁi7OÉávë~pt+´r0+ ³ãŸ•c%ÚØ*ÅÌÔµ‰6¬v|Ò$ÐÀEbî¾:ô[õšSö®ùi°±ÒøÌ¨îïÿ»•&óÑW¤òa:edÜ“'Õ&!OtøÝY8·ÉäŒþ~Œf®2{¥~-qñ— N{–udZÙNø£UÁúßuT¦`zlú°LÙ;빤 AÈ…ÅRËûµ8½x’·Wê™N¹ËÙTçw ûõÈêÅýd<;b2cÕöI'cm'¤Í^—'›'ܰÃìùQ§“3½CV“”X…Yû½’ÆGÑ0JEq™Ø'•ÍàF°âE±j™ZÜ=§´ß5‚·GûýFÊ!f†42‘gföéþ{|©‡Ée©‹:…uYςÝâô,â™éÖƒ˜ûjwçxj³g2ûí‡ö´CƱýlø´±_‘whpè·+tœòÓ`/bÒÌ$B¹¯×}68'¶£ïèlpÕœT>I…–€{ò¤Ú$ä'ŠgZõXðüæøL¯áà×7‹[’ ϲž™¨rLé$•G$àWi°’tÙt!`™²÷1²ûlÈ…Å*È{ìbÙkôK§Üåljô»„ýzduâ~2~}!?VÝÁ ñ»<=óš”䩨§w’š@LRb²lÔ ³wÙ­Ðo¸%íz’äݪE-ô»F<5Ø[NÚo¤bÉ9Œ½ ‘{59MWÙ”#€û³ØßÓ Y—F?$¨TK¤± ÝÚvHtá«H$ÈÁ½Žáð¡¨àºt6N\:Ó;VÀcx™ÄªI‰­'ö&lbóºDzÇ›û—HOÕÍtAÀ¼w•.šš¨Ô$êȪ_1$ Ë$†0èú¯@·0$#" " " " iK@&lÚòWí" " " "  12H[2aÓ–¿jˆ˜€L؈‘©€ˆ€ˆ€ˆ€ˆ@Ú ›¶üU»ˆ€ˆ€ˆ€ˆ@ÄdÂFŒLD@D@D@D@Ò–€LØ´å¯ÚE@D@D@D@"& 6bd* " " " "¶d¦-Õ." " " "1ÿÙîoýq¨À€'¯±÷fàèéöÃDMëïh'êȪ_" " "·biÂb¿ŽþûÍqÛÕ”nX»WØ«À~½l»KÄL·¬Ò" " " iN f&¬±_—n>–æ]Ї\"ök< VD@D@D@.A±‰…•ýjŸ:²_í4”˜ˆ +ûÕ>*éÑ~2eÊäÉ“í½PZD@D@D@â™@r ’´_{´»÷øÑà Ț-[áb¥îkýä•Uþë§T£sþü¹L™’ÛßàÖÛ¯-Z´8|øwÙ²e+Y²d§N®¾úê`…î³çΘ٣–òB… ]sÍ5?þxÞ¼yÝÅ=sfÍšuñâÅxÀó¬2E@D@D@D Þ$Ë ›¤ýjz[ P‘žÿÑ´e»[7~:mlš øÂ“"ÅM´$ßß*R¤È¨Q£Ú´i³iÓ¦qãÆEŠ¢K—.?ü°_©òåË¿õÖ[õêÕ›;wîŒ3üÄ”/" " " 逇?/æ]Êœ9KñÒåøïó'o]¿æÂ… SGÞ¼~õáC¿T¬rí÷·æ•beæÉ›ïêZ7ýkÚ{{ôùê³™ž2…‹–(_ùªÙÿœ3Wž¿<õüæu«æ|8¡@ábtzîòÂEѳgçÖ)£ïؼ¾`‘â-{º\ŪÔË!õ¾üô_îØ½\¥jnwΞ9=ç£I×ü˜#g.ìïëëß–|2Y²d¹âS§NýùçŸiÒîÝ»GŒ±fÍš\¹r5hÐë*"‡ýý•+W’OfÆ )²aÊ´mÛ¶k×®U«Vu´‡‚•*U:räȇ~H)svçΞúׯ_ÿÆoìÛ·JÏž=k<»o¿ýöòåË{÷î]ºtiŠ¿ûî»çÏŸïØ±££"Š€ˆ€ˆ€ˆ@ÚH–6|ÓÙÄÿú‹=|¨T¹+3ò/S&,×¶]^\ýòÏ>šdôü²w׆5?Ìžñþÿ^S3GÎÜ~2«V|³xÞ§å+Uç;jÀß¿Y0»tùÊš+¾Y€žÓ§N {µûoG´ýë‹2d;øel¾ª×Ýç²üÙsæ¼ëv…Š–ð”¡¬£ÓÆ Ý·kûÏ÷»·Õã…Š7Lþ/‘sæÌùõ×_+T¨@ºGk×®eß¿N:Ó§O9r¤©bøðáÛ·oïÛ·o‡Šÿ½öÚµkçË—/gΜ˜°&ÇÑŒ×I“&GlãÆ9{æÌ?ýýû÷Çznݺ5b‡2ª*W®¼cÇŽ/¾ø‚ÃãÇüñÇTjNéWD@D@D@â‡@jxaìÛÓ½Í]§OÌW PËv¥óÿ÷h~ùµHñRë×üç¯!«ÚõÕ·òæ+ “-GŽ.½ÞÄ þnÉ™2gîòâhþaé½;¶RjõН:Pﶦe¯ü_,W´{vl)Q¦|ö9/\8íõõY±ä ONY 6ôÈáC˜Âû÷îªU·!Õq6ùÿöìÙÓ¬Y³“'O,X°sçÎK—.Ý¿“&MîøÿØ;ø(ªîïHH BïMzïM@º/R"%”@EA¥ib¡ˆô*šAzG‘Þ;H @Úû WÇùOÙ-ÉÎîþ"ŸõÎsÏ=ç{wgÏž93Ó¨QÆ ·nÝŠ²TÔÈ"ø¾ÿ~ddä7êÕ«'fÏ—/âW¤EkÖ¬©i †àª,ÚÖªU+((2zú³^½z™ÝæÍ›CìСCð „Ѿ}ûöwß}wÓ¦MÙ²e+W®œæ\ì$   HŽ60]úÿ×®{H¦¬8ƒï€´èšesÜ{ÿND|\\Pú ’ÿ2fñ«™ÐÌÙýÒ`ˆOʬÙsû¥öGÀ'i¸ï6Ú¿þ°(üÇ%høú¥“IhX‘ €Îöa—Ìš¼p渿þøN¯A¹ò½&Wb_—X¡* K–,(@ì=¨aÅ+f,P ÀÑ£G‰â’,”½N:¹ÒŸþyàÀHÙZÃQ°víÚ1cÆ J™]DÌšú1 úÕ:a¢X„°gÏž…žV­ZY”$@$@$@$üœ“\´l7jI«×{ åˆ_!‰ì)ŠS«Öi}ºÀ«H—J›ŠÊaß~ûmÌ‚*$õô‡††b Àx–/^HzêÖ­‹6ªpó„ Hýl €y$G«ðöEô3ôøû;°çέëÑÏ£^ÊB(!lDF¡Vl/S)0(ýÞ­ìÚŒ,ïÑ»1våÊ_u ÏÇEZz2r…¨—Eñnôógõš¶I”. ­|¯³ÚˆenîÙ³çòåËÈ}â⪪U«¦N:::õ²Ïž=C4]ºt¨3"oŠ"Ú'N ÈUmCTTÔÎ;QM‹$‘ÖÕÓ_²dI»¢n)[T,HÚ*V¬ˆQžÛ¤IX"õ³A$@$@$@æ!à‚¶|Õ:¹òZñÝt\È…û X\6ç #2Š!báfÏ!£pñÖü/ÇŒø_ûe³§<¼Ÿ˜k¬Õ°9ên§ŒèÿÇÎMz2r…q±1V͇†ÂÞÆ`¸L¾×Yí#F ¼µgÏž¸r«R¥J¨€rÜ"`áÂ…:ujݺ5®ÜÂõ[bÆf͚ᆲ¨+Àm³Ô6àJ¬Q£F!ÿŠbÙ°°Dƒõô#~m×®"W\4†òÔ-HÚ° ÃS¥J%Êd¥~6H€H€H€HÀ<|>š˜x ¼ÕšB&<<w¿GP²Þà}a%yy#êi$Ò¥èA­j@Ú@ÜxK¾W´È¨G‰žgOŸ ¼4m`âUMÒ±A郥ÚYMI ¤lc^¾DÈ+ïÔkÏYrpÒÿÊèíµÜ³öHµ*²žHµâ?r¢Š±XÜš@òB±WsSS?®*CÝ®ßR 2djv?ùäE¿æ¦å§9ha' È ¨ƒLù^yǘ!=Ñã+ïMζˆ_1#bJ½yÈèÕŒ;‘•ËkÊÈp­þÉ{’¨T­­"¨2È­ª…-÷hêO“&ñª8ÅÞCGŽ™6mš¢Ÿ›$@$@$@$`.($0ó´DMu £GV?7A-É   p—ea]å0çµL téÒ–¸—H€H€H€\NÀÎU°Âô°QÛ{tøû®U.wÆåHX\nI2PØ+½NFÀœŠH€H€<”@Ö€sF.ÇÒôÞκæ~RGhüýÒMÕÞÖ)ñ6Çé/ ØA`ø¤svŒCìa¹* ˆ7I€H€H€H ‰ðr®$Kµ$@$@$@$@IEÀþ,,,*›TvQ/ €‡8÷СT˜…õзÝ"   Ï%ÀÖs×–ž‘ €‡`ë¡ K·H€H€H€HÀs 0„õܵ¥g$@$@$@$à¡ÂzèÂÒ-   ð\ a=wmé x(†°º°t‹œA !!áúõë‘‘‘Ž+[¾|ù²eË×ãIŽ=zêÔ)M.\¸zõjÍ]zv ÑSÅ~ 0?GoÊe~i! €}-Z´víÚÇÇÇÇ—*UjÊ”)öé£6lØ€€¸}ûö %mÚ´yôè:ýýýsåÊÕ§OŸÒ¥K+d’g366Ö××i‡ÄAƒ]¼xñÇL™2å¹sçúöíûÎ;ïtíÚ¾L˜0!UªTƒ=ztÆŒgÍš%”òØÕªU+˾Û1D­PZ‚ÀÀ@ÀïСC‘"EÔbÉÐ#w'¦ã$@nM€YX·^>OIEÉ×Å‹W­Zuݺuˆe;uê”T3¥H‘5kÖÙ³g#¼CÌ·`Á‚¤›È‚ætìØÑ‚€­»J–,uùòe <~ü8^Ïœ9#”9r¤lÙ²hóÍ7ãÆv`Ç1—úµ`Á‚ß~û-ìÛ·ï»ï¾S $CÝIk9 €Ë 8-åàrOh € DDD ùúðáC¤N³½úʯ^½:cÆŒóçÏgÏž1GñâÅÑFpppƒ æÎ‹L6 .Œ~d‘»½}ûvíÚµcbbôrœ~~~ù_ý­X±âôéÓ˜Sà û½{÷Ê”)Ó¹sgì”f©^½:ÂÜQ£F!O©)“3gN„K—. 6lØÉ“'цC† Á+ô¨]À¼ðóvëÖ ÙÓ%J¨eÔ¼xñÕÇŽƒËˆ¿ëׯééLÌ‹½ˆa'|G‹)nÞ¼ ¿D /Àí³Ï>S ôìÞ½[TÒo|ˆ¦/’ÑÀÀÎ|ùòáwËÝ»wE§æ@ùš"CÿìÙ3$•!†EÿàƒÐFÊ9K–,#GŽD[S €(Ð)ÜÁoÞ¼y½zõªR¥Š0†¯$@$  À,¬7I€ ÆB,¸ÿþ~ýú!¼P¢££‡ŠÀeøðá>>>cÆŒAL†]Ë«!²,W®BœU«V ù‰'bW—.]°ùàÁÑ©ùŠ3È7nDàR¨P!œyÇyvD®˜å?þ@¬#†@ŠG—,YR¡BDz2¿ÿþ;І"§ûé§ŸB-N‹Ã¼;wB¦ ˆ“J¦M›!lŽ94e0VaÀW_}õ×_;‘F)üBpG0/ú±!ˆG´y¸°™2e ñS …BÕ;wÔHÅ.ãCô|‘ôˆ~¨`:°Eæ¸nݺèÔ(_Ó½{÷‚‰ÐpíÚ5hmtŠ8XO‰‚Ì€B ùJ$@j̪™°‡H ²†_~ù%Š5:„¬êûï¿,#¢Ãû÷ï7mÚ´hÑ¢ˆ9e¼råJÀ -²q(ßDâQ,zkD£š7oŽMèAœ¤IöÖ­[-[¶|þü9»þýûCq3^ÑæÎ1Ÿ4 VMŸ>=$$Ä‚Lš4i&Mš„wûöíx}ªÎŠ’ =6­1è rÀ•+Wn×®î̵råJÜ8BsàáÇaŒÞš¢{ñ«k-lÖT‚]z謺#Ôò•H€@@yò‹PH€H/DE)Nñ£$¥œˆe‘ѬX±"r¢ááá8'Žéž={pã=\ï·mݺzP5kü沨(€N¤cQj‰Óô(B"i.#2’°¼¡ç2‹¨[@˜þòåK=¹Ty"¬‡mˆ³‘®F(ß+Ú nOžpà€d$@$  ÀV„›$@‰¹â,9®©êÞ½;îØŠUT+"VÃR¸ò ¸ÍRÒÕëjjˆ_‘ÕCäŠkw€ 9µ˜º§V­Z8óޤ&.äBºÏ´iÓbFdCĦž Íš5Cp‰z€Í›7ëÉÈâ HXBëÖ­q-®“ïí 2à=Úâ¾ âf«z)X¹jUš=F†ñERŽ…ÆÄ£€©qõZ[XSäæ¡ç믿†UR@¯9»:¹;ˆõ‘ûÇ«d$@$  àóÑÄÄ»jk£Ø¡ÞDêg—¨À®!3öèP¡pHâi#þ‘ x$„28eŒPF”ŸÊ}DfùEܵJÞ©ÙFº5©ˆ4÷ZèDì+ª`ñàØ€àI-lDF=Jôhº€ãt¸fAF®ˆ!F &ït¤­0Àˆ*ƒC4ý5¢_=PZSüÂÁ©Ü6XèÁ \î†?µZµ=tÝQOÁ ÷"pîaâ±bÍêe"•™–™ RY*Þ-xŸàgÒèÑ£­âWS||<¾ƒž={†< R*ø¢A¶=™3gFµK—.(Š;þ<è͘1£P¡B‹/Æ»z¤¤ŒÞïç;wî„……'oÄ<¹6Í‚­vʪ‰Éµá·âÓ§O…¼æÔ>¶À5kÖ,Ð@±*¤Ií $5Ò`k„’·Ë¤J•ª_¿~H£^¼xQÎqjöìÙƒƒƒóçÏ/Žboûöí¤–.]:Mš4hW¬X±R¥Jøl!¬ðHïСç¯ÞqCOžýÞ@©zdþð‡PRòiTä\ .œ+W® ¯þðµÕ©S§|ùò¥K—.S¦LèCêSñÍU«V-¤N6mÚsüøqœ-L›6-¾­ Œ`Щ÷ÆÃÙÅùóç#PÆwœ4µ‘†Uó,+±ÕN…61=mŠQÒ¦…-páoÿþýøÍ-[61ÄnJÒŒV¬…µŠˆ‰ð9oܸñÔ©SÛµk'ÁÏ_œ%ŒŽŽÆ™ĬR? ¢÷´h‹Ô :Oœ8+<¤ 6…‘ô³A$àF¼öÚk^Å%/øÕ*ÌÖ;tè9Åã†oîoÞ¼¹ºVúNÁåV€s÷î]|û”(QB…x700P ³:A]+©S§Î’%‹$&zo<|ña b…¼ÕM«æYÖ`« m bzÚ£¤MË[”I „2¸^9)Œ²›’4£ÕCX«ˆ(ð7” áï—_~Ûø-;a„9sæà3ùÁÄ„‚”  644ÔàŠ‘ ¸/\ ºaÜêE GxaäÐ\„q¬@ 7Ü÷ àZËQ0€÷Ò®ÒípG}ÜO B‘^Á-2¹ŠNÔ ƒ¥*½7^Ö¬YÕѳžªÍS(Q|lµS¡M±©§Mˆ)¦¶ú±ÅÕ¹sçþðß}öÙêÕ«ñ“ÀY”fË7YH §Á¶%AAA=zô8räˆøxãä ÎËàÃz#üÒß4–Æ¿ÚW°`A$fV¬X!jݤʛ7nˆ³V5P€HÀà^BýõWxx¸ÂZ=t C†˜‡œöA´gõŽnĦº„€xç @¥k8ˆ÷²§·lÙ‚/2į§Nª^½:nå†x¿µð« ïU„kâkNï‡JDlŽ{¤6O®SýA°ÕN¹6u[O$ÕS[þØ¢&áÊ•+¨9D톋ïwgQR[.õ0„•P°a*¨pråË—Ç»×x¢Eøí%/‡ÕÓ…·8.óB ,ªŽºví:nÜ8!‰_o¿ýö›Þ(ö“ ¸)ä±P\˜#G醯V8݉BCÔ/¢ü@œ«Õ;n¸)šíøêiúÏŸt …f¼spg·K—.uìØ_:R‘>|8înÞ¹sçÞ½{ã úÊ•+cÞo¸Þ ›F˜‹*8tê½ñp6rÉ’%йìØT›'W¢þ `¯Mvʵ¡­&¦© ’ê©-lqÍ%nò¤ƒ~÷Ýw‘ð‚gQRx!ßôùhâ,lk#ïÕlã§ .ÍON2óhÖ¬^†ÇóYjš¸¼¤óÉ“'ÈÅÂÙÈÈÈôéÓ÷¿‰Q£‰ñ!”ô“ç®âAÃÖÑq,:ðˆFQÎ(Ÿ‹Ç 9 /i;å ÊÄUx` ¡ ¾³DJ=È"S«y…–Á7žÝ¦ªÍVi~·Sr IÓ€j“&M,Lmùc‹0¥K_ä³ÈÛ „M|ü~é ˆ$E*2åòê¶àŒþ—S-İJ@į³)~…tHOCP¸Ïã†7 .2–äQ9 µEÃBJ%©ßxjó„IšçÚ©§MsjË[[Ã;6 añ;FÔvÌÍ!$@^H€ /\tºLŽp£ƒ†™ªX‘Å«ºuêUŠT±Ë´›Ž†°øƒl°iÝ£a$@¦"0|Òl4Lµ"4†LNÀndª ”œ5»£!¬³ì    H Ã&wOɹ‹›F®¿2ò6`k„eH€’›žHŒçe(PÀ¦‰W­Z…ûç—,YÒ¦Q&ðxý{t²ìãŒ9‹, ¸Å^·pSºËA¤ aÈá$@öÀXžâNÃzƒqCÜVÐÖ·fÃEÇ aõ¨²Ÿ¼–@`€W<^â¦x{ÅŠzí'–Ž“€i àfòÛÙ˜ÖNF$à‚9ëñzn⡯þù§‡¹ïœG๣§OŸhúôésèÐ!´wî܉;Üâ!l£F»®_¿†‡µày¤x’›èìß¿ÿ¦M›0 wF61í† ~ñÅBO1Å}‰5j4zôhéÉoÄÓx¡ w2›9s&%7^¾|¹…éÄ.¾’ ¸–À·ß~»fÍaí[·úõë‡cEëÖ­q4 Ãó™‡Íã,8ááO#GŽŒŽŽ–†kªÕ< ICØ ðTO£c-ÿó Ç5}Dü ïÄ.ÏpSxáœOià x…F<)ß"4ñl@|-á¼^÷îÝÅ® &à[ ß[øfÚºu«$_]ƒ B†C¬B… Ó¦MÃcvñœ tæÎˆM·oß~âÄ ià”)S³Nœ8rÁ3!𜠼Κ5 ψƒŒætb,_I€\KàÞ½{¸[8lÀ±Ÿ} _ÑyìØ1<]&[¶l G4Õò°  ÄMð/cã½ÁY¹›mߪ—ÿ²UÞéIœÂÆÇ'¾9¤"ЀŠ-ºråÊÅ‹£\,žŸ†½(oÍœ9³M‘MA‰ÛŠ+õ¢ÚÕàX»§3¨Ÿb$@N!€¢OŸ>Å#mįЫW¯ªãQ ‰áQQQÈÂBLT ¡©–‡ $¹‹<›@Œw„° 7¿_½YÑãI«ìœBœåÇ©@œ¤ÃåV8@111/^ÄÇMš4Á&Nö!¹‚€ ˆªY!f%ªðà]”Ê¡.™Ìbd”ÝÓQN gÀo]|º7lØ€èóÊ•+Ȫ֮]Û¸rÜu+44ô§Ÿ~Â/d܇ ¿xE«©–‡ã`)IF &.Þò?ÏðWø(|™½ò7µËžá¦ðÂ9YضmÛâ"‰¹sç"KŠº4¨Æ]¸– •ˆb{õê•.]:tBwÒAa+Ò-H©NŸ>ÝÊ*Uªà$#.ÔÀ”Ê!­[µjU|?Y‹yí›Î²Zî%p.”ˆ¢#œi¹ÿ>.ʬQ£†MSàæ²“&MÂuœÍ›7G*jaõÔò°`[ “€ÇðÔ“éŠnÎ\Ž~wÙ9!,R­(QEÔˆ˜Wb  H«àŠc¯R}*ò%K—.Åå\iÒ¤ñ÷÷b¸í€|ä›x<Ø5oÞ¼ÈÈHäb±Ù¡C‡ 2 !—Äݵ„d@@€tç3Íé„_I€\K•RA|™2ep âWœèÇaD&ÿ€K‡ÍÎV­Z5mÚWŽâ²N¹SšjyX#b›¼‡ò‘Þଗ¸)–Ò9!,t!vT¿9D¬©èÇ·”¢ÇȦˆ_!©©Ó‚û¦³ »H€!€‚xÄš(4Âé¹ÔÈ7mjK?‰Õ£4Õò° Åðláë~öl…w^â¦pÖi!¬7¼3è# €ãêÕ«‡»·â.°¢¾Èq…Ô@$@– ŒÒÓ²€gìõ7¥År4„>i¶¤‹  °J`Õ¦? ³÷Ô2«’  p£HÃLõ€·–£!¬·…ü°ät\HÇw4\ÈŸS“€Ûp£ƒ†™ê·£|GCXRàÔ$@$@$@$`•€Á°ÉÝ`{‰›Òr{~»jÕªbÅŠ•,YRò™    ¯"пG'ËþΘ³È²€[ìõ7ÅZx~ûÛo¿ùúú2„u‹Ï$  ¤ àù¸y‰›ââ+šê$0-<ì7‹ÅSTLk! #HfA~É<£K¦Ós³bÅŠÒ]ó]bXRLêœÌöïßëÖ­ xã7†*=vΜ9;văµðàYéÙå;wî|÷Ýw!9jÔ(á’¢çý÷ßÿãÄk–ñXZ<÷ {ÑŽïÒ¥ËóçÏoݺ…ç~axëÖ­7mÚ$4À´ñl°áÇ£çúõëݺuÃÓFŽ‰ç„ ¾’ ˜‡€âSÃð± «S§Î| Cðy8p >Ë 6Ï5Pأ𘮓'ON›6 YÁóÌã2-!p!§Ñ±–ÿ¹Ð6'N­é#âWL!v9q.—«rN‹»<~ûí·-Z´?~üéÓ§Ãßl†?<}s\¾|ùöíÛOœ8²S§NE ŠóûÝ»w×ìÉž=ûž={°ëàÁƒ×®]Û»w/ÚÇÇ#ñ…Aƒá‰ê¸©dïÞ½?ûì³3gÎ`/ ˜9s&‚ZìÅ&ÌÀs&×®]‹è»¤è»øG$àrêãL±?M׬Yƒ_ªøIŒüpÅ':** ?†øá‡×_Š»zQ›7o^ĵxäµô¬/—»LH€\K *:Öò?ךç¬Ù…ujVÅ?© åë7ï›ÎšÈ zœÂœ¹Cú¤J•* 49TtâD^Μ9CBB *$bM<¾HÀ ;’#GȨ{ äÀصoß>œ D ‹ö®]»jÕªuöìÙsçÎ!à õë×/^¼8žK‰½øCf©šŒ3"w{øðalV¯^½`Á‚˜BÈð•HÀ ÔŸz¤]=Z¹re<€ºT©RâS/>ï={öħÏçË’%‹0^ú°kŽÂ£¿Pþ„£œ¥ $@f õ"Öò?3é¸ ÂG¡í·ê×D{åúí’ïŽOa N a¥<æË—ïÒ¥KÂCœÜÿè£pðÂ… R*tìØ±H²â"T!¦è©P¡4àêû÷ïG´zçÎ êEo&ûb,R­èJ2eÊ$ÇŽC¾6[¶lb“¯$@&$ øÔ9r$66ÅEüñîÝ»ñC6ß¾};eÊ”¥K—VØ/}Ø5G)„¹I$@ ð26Þò?Ï $|¾´}«‹Ù*wÜ3Ü^8ÿr®«W¯–-[Ú‘AA)êŠ+PN€*U‰ZÑ¢EW®\¹xñbT¼mÞ¼±¯¢ÙS¤Wq> äQÊ•+‡T+²¶yòäA†æéÓ§ˆn‘……BÌ¥U128ùˆá‘BgÉ6H€\N@ñ©FûÅ_dΜY² iWÔàÄ‹ÞE4G‰áüàKÙ ˜Øxoà póûÕ›=žÁiYØC‡á;ãñãÇH¢ŒîÝ»‡s¨[EJ¹Rq}FLLÌÅ‹Q Ö¤IÈ ×¢îA?4ÌŸ?¿Fh£ ùûï¿G m|íAᆠ0ו+Wp­]»6úå  ýé§ŸðøË/¿ ’æ—™œÛ$àrêO=Ψ €uÁ‚/^¼€yOž<Á«è\´h~»âG,) Ë5GAõô—/_Vs“HÀ› ÄÄÅ[þçp„—Ù+S»ìn /œ–…½yóf›6mîß¿_¾|ùš5k/†âŒ?.¨Bu«H»V­Z¥±¸–ËÏÏQl¯^½Ò¥K‡ï*EÆ¢$pH!,..!,*pþ·@rsẠ!£XæNš4 &7oÞ_r¬…Uðá& ¸–î¢þÔãÂ,T €çXpИ>}:ŽãÆ6lX³fÍpº¦]»v¸HKn9Ô£ ðöÛoúé§(UBø+—g›HÀk àdº7ø.Üœ¹4ñªzwÙi!lÓ¦M«U«†K‰‘yï\Q1oÞ¼ÈÈHÑÓ¡C‡ 2`r¨HÖ"xE•6ÑPô ÅÒ Ìy•ÚØU¦LÔ ~Å9D|¡ân;¢W\{¶Á…R'$@&! ù©Çù“¥K—"áš&M©¶¾pá¸ýªáqÁ!ö+>욣p'Ž*¨&2‰¿4ƒHÀåt¹ É`€—¸)H:-„…:äVñ§X!)¢ñ«Ø+oëõ(ô(6Q* èQlJ_Š~n’ ˜„€ú8ÃðÓTmžÕ{ ¨G!ÞÕÔ¯VÎ o ¾îgºéaœÂâq¸ë‡¡¡;$@$@$@@`Ìžà…U¼ÄM‰ƒ£!ìðI³ÿֵ㈤”  Ð#ðïACO‚ý$@$ #àF 72UØ]›Ž†°ƒÃÚ¸«ë´›H€H€H€H y Lž»Ê):í¦ZN±†JH€H€H€H€HÀ*†°VQ€H€H€H€HÀ\šk=h €U a­"¢ €¹0„5×zÐ    «ÂZED    s`k®õ 5$@$@$@$@V 0„µŠˆ$@$@$@$@æ"ÀÖ\ëAkH€H€H€H€¬`kH€H€H€H€ÌE€!¬¹ÖƒÖ X%ÀÖ*" ˜‹CXs­­!   °J€!¬UD    0†°æZZC$@$@$@$`•CX«ˆ(@$@$@$@$`. a͵´†H€H€H€HÀ*†°VQ€H€H€H€HÀ\šk=h €U a­"¢ €¹0„5×zÐ    «ÂZED    s`k®õ 5$@$@$@$@V 0„µŠˆ$@$@$@$@æ"ÀÖ\ëAkH€H€H€H€¬`kH€H€H€H€ÌE€!¬¹ÖƒÖ X%ÀÖ*" ˜‹CXs­­!   °J€!¬UD    0†°æZZC$@$@$@$`•CX«ˆ(@$@$@$@$`. a͵´†H€H€H€HÀ*†°VQ€H€H€H€HÀ\šk=h €U¾V%¬ Lž»Êª H€H€H€H€HÀY a‡µ 3¤§³¬¡    °JÀ¡Ú>|hu €Œ€£!(kae0Ù$   p aÝa•h# €ŒCX 6I€H€H€H€ÜCXwX%ÚH$@$@$@$ #àh-­L›$`nw£7ÜÜCÎÎíì—϶^µÐî⬻Øiá}ey—ÂAËÂÜKnD€!¬-Mµ@¯®lv©è¬ï—¨çw#ûÕÆ³G“€W-´»8ë.vj¾£Œtj:hd eHÀüšh¡=üR¹w‘Œ»ÛoÏšyå¯ZhwqÖ]ìôÊO & 0„ý—[žDÀÝ¿„ÜÝ~Oz/%©/^µÐî⬻ؙ¤ïL*'ó`kþ5¢…öðóõ±g˜iƸ»ý¦ivC¼j¡ÝÅYw±ÓìonÚGIL€!l¦zp÷<Š»Ûï¢ew¿i½j¡ÝÅYw±ÓýÞî´˜œJ€!¬SqR™i¸û—»Ûoš7‚Ù ñª…vgÝÅN³¿¹i $1†°I ˜ê]DÀÏ7©.çš?~BBB×®]žéõ+Ä nšÇþ¸¸¸½{÷îܹÓßß¿sçÎY²d1è‚b{÷îݨ¨¨¬Y³¦M›Vh˜={v```‡‰·˜8xð ŸŸ_éÒ¥-(—Ë[³{—»,´ÜÁ¤f"ŸËB;éÞÕ&µc—»Øi‡kBžD€!¬'­&}ù—@Llü¿¶´>üpèömÛÂÂztë¡9îÇB¤Õ±Ó»Š½zý 1ƒ›æ±떭ÇøöÛ-ƒÒE={n·a–ñâÅ¢… –-[úìÙ³”)SÆÇÇÿþF­Zµ*44SÛÿ´G{ذah/Z¬q2I¿\^êtbÃå ÝäÍF>eÊ”éµ×^ëѳW±bÅ-øh„Ill¬¯oÒ~#Øñæ©Q½j¥ïÛ§÷ãÇ‘‹—,µà¬ã»ì°ÓŽEqÜNj /'´,/‡K÷]H &Ξ62òñžÝ»Ö¯_שK7ÍkÂR¤HÐÒ¯×o-ýÖõ$…ýÛ¶oÃĽûöiQû ³jú¤Iׯ[Û¢e«.ݺ§OŸáÊåË.œs%$¤À¢=÷ûp-Û —·:¯].^h8˜1cè—_}ù$òü¹sß|=3¬{·Ysæ)ZTÏ«Lúôêñã/kõ48¥ßòÂéM!­>âeo=yÇûí°ÓŽEqÜNj /'ÀÖËßë¾_B`¾1GŽœ•ªVýaÅòƒ‡•)[N:wöÌä ãnGDÔ©[ïeL ’UB¿^¿ãXMbÿ¼9³víÚ wzvïZãõZa½þÛ¿O¯ ÁÁ5j¾>ÞÜ1ã'ùû|5cêÉ'ƒë¼Q¯kXÏÔ©SCb9ræ*Uºô’E ‚‚Ò}ôÉÈÇ¡-{Ž¡~œ-{v9¢ë×®mX¿.o¾ü}¼Ÿ øñ‘'ü“ >íÇì£ÆNSKΟ‡Q}û½W½æëB-ä×®]£èÇ,š¦N<ñä‰ã÷îÞ-S®\—naù ”+n¢šBó ÷¾¶ä£MÃS¦J™-g®l)R.Z<>!aÚ“¾›;{Ì„ÉPrõÊåiS&Ÿ?w6{öï R¢d)¡Yb¨X¾tñÙ³gùîØþ?ƒ†~X²TiµŒMæé Ûç¬d9Ô∴)½ ­7»ñ~ûì´°(šï½ð ëV,]2nÒ|~]¿vå²¥C>^¼DÉ];¶o ß0zÜDá`£ÆMæÌú:00hÀûƒ‹-fÜ J’€ÇHªzAGMN &6ÁŽáÖ×mظnýÆðî×õë$ ãÇŒºyãFçn=âãÜ¿Ÿø%úJ¿^¿4ÐHC“¤‘j§Û_­fí9rÁÂw»÷ªQë Ìxýúµ£‡/Z0¿|ÅÊ)Sú Øÿô©S½û¨Z­æÊåK¿™ù¥° b¿ïÛ³nÍšâ%J_¼pþ“†Á¶Â…‹;rxë–- ËÏ_¸€À¤lùбqƒ• ï&‡Ú[7oISÀ’uk~)W¡Щ_LýÇ ETT´ž©>>);¾Û}Ø'Ÿýñûþ%‹É• 7ýMµÐ¯‘ÿ‚*U¦èò¥K°üÉÓgCÞðøÑ£?þ,E ŸÑŸŽxñ2ýCM •ª‡¤MˆUΚ-—¦ŒÀbüÕYïjè‘V?Ñ‘Dçÿö]¼ mÜB!é,;-,ŠÞ{/gîüýuõ?þ€%(^Jlÿþ;Ú;wìÈ’5;pðØ‘#ß7§LÙ gÏœ^±l™°Ù¦WMÙIžA€YXÏXGz¡$`Gå ¢€‹ç?þ|\h¦Ìù B.¤Gß÷Ò¤I{ÿÞ]$¥Þ¨ßèÍf-0Í¡ƒðE ýzýJSìÚ6‰ýy ¼–>C0<¨\=1Á)¬Jå›jâôoBB2îÙµýÎÛo6m^§AãÚõmÝòÛ†õkºÿ·?ÎõC8 MÚÑ“¦ÊA IDAT¥J•jǶͩRùŽž4ýù³ç»wm¿rå²Â»{÷îCÞ/µ¿¢âñ´KÞH“æó SÒ<½c릋—.åÉ›CÔý×þº¢gjÏÿ ÄGæÌ•ûè‘CÒD’›f[hX›ÆýS*“%{Nœˆz…ž½{÷Ü¿w¯ñ[Í .V±Jµ•K^¼x1ß«¼²à¦'&m 2Íb•wíØª§S;ò'Ùl“ùŠÃq„´’õB‹7€MúÕÂ’~õ. =º‹²oæ{/¡Â¸NñÐÁ?k×kˆŸvY²f;zäp›wâþùû{C†ÿmƒOŠÏÆOAÝÈž];Î=mŸalæ.pk aÝzùh¼.;Žõ›Â×ã¢ûY_M‡ÒhÄDÑÏwîØV·Á›‡DOÞ…„ÎW­ÄB¯_×&[v˜Ç~0ü_{ 13¥F2ÓØ•'A±7oþ‚'¹}çN¦ÌY0(sÖl¾© à“2eŽ\¹}Rùù$ªÂ‰ïµa;EŠPÈã·ÁŸ¼ÓEë: ú§ ÑY;]ºô©üßœ¹ó@ÃÅ‹²çÊuÿ½;·! 65ch¦%óçØ¿çNDD\|Êpÿ¶Mæ¦Ù:‚lE?~„+±²eÏ Ë#nÝ®åK¬\º ?¿Ô÷<È™7¿ÄMO« ­Âw=™ÄYûû›­-Jðãçå‹ÒÀ˜˜Ÿ”©þÞÔZèÄ7€ÃÒt6hÒ_ “â¥Ê;Œ’¥ƒ!CÈþ´ré‰ÇŸE=+Z²t¢ )2eÊ’.CÚþip ÈÃlð¢$àfºقÑ\ƒbã^}¥”F\‡4^©rCB3cPpÆL·×ý´u㯵ê6Nœ=wn߆NÔ ¾|ù÷uB[¯ßðœ–Ícbh“"…d¶ðOl ø†›ˆ‘ L—›‰b ÿŽBØŠN!ÿo¿@;oÁT¾¾—.œ»sçNÆWüåhä3êµQkˆ!¯-ñ÷ÔÿX(õ¿|µ©;·mAÜб[ï¦o·ùôÃ÷nߺ)Œ”Odª…† ¶[6þŠNC°\¼{ßjÞ¡SüÉ™è $¤À{[ø®'ó>ûÿ/ôÛ4>S–,·n>}ú Wœýøëêåb%J =ò5’ÚŽ)ÔöءĢXø˜”,S?Ÿ~^µ¼l…ÊÅJ–Y¹dþ²…óŠ–(•Ê×6È¿$í0Lí{HÀc0„õ˜¥¤#ÿ‡@ì?§YÿO¯þÆÁ?ö!íÚ{À0|S ©›7®;tàÖÍ›…Š–@6kÏŽ-9rå=~äÏÈÇ3fÊýzýú“ذÇ<ö'–&F„¸Èêï?ôˆÍe* €ò÷½;k¾Ñàú_WïÞ‰¨P¥†OJ_±WCÌõ*œE„”¨äßþ¦ mÜ´åúŸWNø|ø;]zeÍžóâ¹Ó'ŽìØ­@bW>DÞ¾qÅ Y³å8rðì9sgI\ÈËûsäʃ~=S£¢žA5 û÷î¾uã:Þ¸q’ñòIMµÐ0 11/‘´Æ¹‚3§Žý¶î§àÐf­ßï%ËV J—~ËÆõ¹ó(\¬äÕËråÉ—íU5³à¦'€“ {¶o>yü(ÎnëɈ©y«c“†¥Êa]V,þ¾Q³–ûwo{U°HqI|¡åo›¦P KúÕ»,ôè-ŠÞ{³+U O=Ô¸YK,Ž3ÇìЭ·d€üÝI©ß‚ÜEÞC€—syÏZ{—§qñ 6ýÛ¹ec¥j¯ûùH£j¾Ñß;¶lL™Ê¯i«vO"/˜ýeî|P)‹˜ bzý’ƒ Í…18VK:û؉þŠÂZÑF9A¿¡#QC9´_ØÌÉ£K—¯Ü¥÷µ†€¤Ô€V´å¯m:uoÓ±Û­ׯ|<¨÷v³gLBLŒ;(AF>£¢ú·õ¿|þá{8“Þ¾K/i üØØ¸î'ÑßîÝžè×3µRõZ¨.øþÛé¿ü°´|åê/¢£ç~5E1©©Z؆wãø‘̘øÙáûñF3mv@š@ì HôÞ‡ŸgùjÊØ=Þ™ûõÔ»wîÈÝѨۨBÀφ عu“ž ôÿ'VJñj|¸$Ù®Koü@Úµí7¼+~Yµ´VÝFMÞn+öB¹æ@k¤¡°Pl¨Á@½EÑ{ïACö\yÓgñõõ+R¢,Þf …ž’e+ årc^åÞÿý*f·°)”ð•<’€ÏGgÁ±Áam¬ºÞ¾}{qKí!3öèP¡pH¬ÕQ ä'0yîªöÿiëÜy‘ñÂYòÔ¯òsrÍzýrËíe+V*>€îe?¼‹|ü0Mš@¿W·Ó²ì¬å½ˆtïß½×LY²éÜ”÷_ýº¶É8jÊlÌž.]TÜþ»ïUK³_ÓÔ§O"‘¼Ä '¥ DH¡P…MwYhayÔÓ'˜60HíˆDbéƒ%òV•è)G¿sßÕxKܾuévù*[}X0OÚå\;%µš Í÷ž¦¤;Õ:Q9U‘€#Î=L,X³z™ø”™–Õâ+rÌža!ePÜ뮜~ÆÍ7uâÉeµZ½~Á©'rP¡žzý6M—6(ƒ&›”áàÐÄK»UBêÖÊðê0{b峬ÔA Ôì×4yGô‚ì&ÀÖnth^ŠÛ¬š×PËÜÝ~·Ø­$àU í.κ‹Ê7·IÀû(oî}è1 €›`ëf FsI€H€H€H€Âò=@$@$@$@$àfºقÑ\    ‡.ç:÷Сá¤O$@$@$@$@v`ÖhB$@$@$@$àJv¦Q³œ[³úœ+ çÜ$@$@$@$@ÞJÀΖwÎóÖ7 ý&   ×`!ë×€ ØD€!¬M¸(L$@$@$@$àz a]¿´€H€H€H€HÀ& amÂEa    ×`ëú5 $@$@$@$@6`k. “ ¸žCXׯ- $pýúõÈÈHǽ[¾|ù²eË ê9zôè©S§„ðÂ… W¯^mp }bòéì˜ÝŽ!ŠI¹I$@^BÀÎûÂz ºI$`E‹­]»öñãÇñññ¥J•š2eŠ}zĨ 6 nß¾½BI›6m=z$u¶mÛ¶G£GΘ1ã¬Y³ÐÐnÕª•$cScРA/^üñÇS¦Lyîܹ¾}û¾óÎ;]»v…’ &¤J•jðàÁòéÐëëû÷qÕàìv Q{!¡ ,]ºt‡Š)¢K†¹;É0§ ðZ a½véé8 $$_/^ܨQ£~ýúÝ¿ÿÖ­[I5SŠ!!!R|„‰¾ùæDœN™±dÉ’ÇŽ»|ùrÁ‚?gΜš9Ò½{wÅt ¸}û6rÆÆg·cˆžr9dÈÇ#|ŽŽž8q¢ždÒõ;Ѥ3’šI€<ƒCXÏXGzA&"äëÇ‘:ÍöêOwõêÕ3fœ?>{öìˆuŠ/Ž~4‚ƒƒ4h0wî\d±Y¸paô#ë‰ØaíÚµcbb¤Ô¦ÂO¤BsåÊ%ï5j~öÙgòN´5gGÉ"NÄ©˜éÕúõëËG!¹téRìEtIØ€®Ý¼yóÞ½{eË–…°4ÝŠ+àövëÖ éÛ%JU»wïV¸&Ma|ˆ¦ñ’ÑðóóƒùòåÃwïŠNÍr¶È”?{ö Ieȇ……þ|€6RÎY²d9r$ÚšJÔèîà 0oÞ¼^½zU©REÃW p"çä*œhU‘ ¸;Äv9sæÜ¿?²°ˆê„;È :ÓðáÃ}||ÆŒƒh»"F\°`A¹råZ­ZµJÈ#‰ˆ]]ºtÁæƒD§ú5..îÆ«?ÄÍb/FImI^oö¯¾ú꯿þ;v,"­9rHò¢  ]˜‡MDl¦íAõ¯p0S¦Lè—¦C †Ð9mÚ´a%UwîÜQ»&Íbpˆžñ’ÑÀL·dÉ’¨¨¨ºuë¢So œíÞ½{á‚ÐpíÚ5hmtŠ8XO‰Â˜… &ò•H€œK€!¬syR @ d+¿üòËòåË_ºt YÕÍ›7Êï¿ÿŽ¢‚:uê-Z±B¥+W®Xˆh‘éXD±èDŽ™¿5j4oÞü½÷ÞËš5«T¿"Õ‡0Tï•z4gGÌ“` bàš5kЬ°44iÒ¼öÚk'OžD2ÁwÓ¦MщD,ªÊ”)#—DéOįH…BÊÄ^µkòQ‡h/×#ÚgÏžE ,ªßzë­Ž;¢Ss q¶B­¦Mt w6l¸qãF¬¸ÐÃW p.†°ÎåIm$@‰Ò¥K7~üø>}ú Ö™4iMDèGŽWDýðéS§FP(`eΜ]¡òh FÄk¡B…„€…W‹¸ŠÓ§O· ¦9;âKÄͨ EV ã .¨5 Æ#Ã9z\ ³Ñ m”ÃâŽ?ÿü3rŠÈ°(Pµ­OŸ>UgaÅ@‚+”XÞ´:DÏx…Zä€+W®Ü®];ô+W®Ä 4âz/ Ôc‹û `/~]€¹Ð¯©»ôÐYuG¨å+ 8H€YXr8 €’ò”¸ nD€RH”"–Í;wÅŠÓ§O¾eËÔªîÙ³7.PŽüga%âÅ­[·B2‹Žß\VsvTy"¼F±&´1BÀæÿ÷ÿ°ö?yòõèÅ+âW\@&ÒÆÿʽj!mŒ”-âõ—/_*vém¢i¼žBÜY Eº¸¢ •š-°Å2¡öLFŒ"c1…¦=trw°Ä½{÷>pà€ž©ì' G0„u„Ç’ h@ä:uêÔÎ;ã¶Sþþþýû÷G•$bÄO?ý<¡À S§NHyJWÍ«U ~E6‘+®BâS$ÕbÆ{4gǰ„1­[·ÆX¸ K­0C† 8A~Q)+n¶ª—‚mÖ¬¢[TåŠò_µ6u‘!šÆ«U‰ÇCOž<·YP3·À9r(ùúë¯a•Ðkή‡Nîb}äàñªg*ûI€HÀ>ML¼øà°6Vµ }‚3SÈ1X•¤ €—@…SÕ¡¤ ›$ Èh"¯)îá*uj6ž?ŽbJÄdš{íëTÏSqÒš} Õ£pD¤Õ»ôz Q¯§Pѯ(±Å/ œúÇE`bÒ«¸ ØT+ÑCgÐõì!ðZƃÌÉsW’X¦qœòZ|tœHÀYPºª¸]«¤Ùx°ˆ«»¤QÎj¨g‡©øs–~èQGíV•¢6Þªf! ¨Ç6 @O§Z‰:ƒîèMÄ~ 0B€!¬J”! Ï$€{–ñ,Ï\ZzEžN€!¬§¯0ý# }¸}¯þNî! óàå\æ]ZF$@$@$@$ I€!¬&v’ ˜—CXó® -#   Ð$ÀV ;I€H€H€H€ÌKÀÎ˹pS.óúDËH€H€H€H€LOÀÈs ôœ°3„…:q_Y=½ì'  ðÃ'ÍfHàÄ…öžpÐpi»Ÿ™e‹‰ížÕ‰+MU$@$@$@.'ÀÀ¹K@žVy²Ö*" €X¹råÕ«W“Îá¤ÖŸt–S3 €©8”…5•'4†HÀ :àéöâQ¢~~~óæÍëÚµkÏž=«U«ö믿æÎ;oÞ¼VU %qqqxÊh£F Áê×oDeH€LKÀ¾C„yÜý¥J•6l˜0iß¾}?þøã¤I“\e!쉌Œüá‡üýý… K—.ýþûïg̘Q¬X±wÞyÇð:uêX‹"?øËÝéׯߣGÐsïÞ½´¯þÐnÕªÕÛo¿-3O›!¬yÖ‚–@òèÓ§Ïo¼!͇ƒ 8¨I=FÿûßÿjÕªuøðaåëÕ«—'OÍQï¿ÿ~Ó¦MëÖ­«¹—$@žJÀà!"éÜwðà³mÛ¶ T¨P!é,´U3"iÄ©bÔöíÛ‘AÐÔ`ALqð—ÿòË/Åf¯^½pÐnÖ¬™|¯ Û,$0á¢Ð$HnãÆ;qâ„|Ö›7o8?¾?ÿüóçÏŸËwÉÛ>>>%J”@*÷âÅ‹è_´hŽmÛ¶2eJBBz.\xöìÙY³fuéÒ)[ôDGG;2ß|óP5sæÌõë׋6_I€<‰€ÕCœýè£vìØ1tèP°©>Œ™½{÷âpÔºuëï¾ûÉBÈÿç?ÿùé§Ÿ.õ!KqðQ ¨§ª¤×·ÞzkÚ´i/^¼zDÃYB›MG¿ªU«nݺUØpáÂ\¥™z0(¦pÊÂæ„ Ö¬Y#ž={Ö»wo|)`ÕvïÞ=|øð-ZÈ¿&49Ûä¦K»Â*€p“¼‚À­[·YâïñãÇp›ˆ,åžãçxÍš5q¤Æ¡j×®]ò]òv||¼ˆ>q& ý9sæüä“OfÏž/›3gΠ§M›6¹råêØ±#¾ R¥J…ž9sæ”)SfôèÑëÖ­u·8à)RD®–m Ï `õ7qüATŠ´~cS}2ß~û-NæŒ1bùòå#GŽÄ±¥oß¾ˆSccc! >d)>jõÔè‘ÿ!„Í!¦w¢í, ¡Ê¦£_íÚµÿüóϧOŸbàæÍ›ågÒäZ;}ú4~0à/""B>ÊB»hÑ¢6lHýfÍš5Mš4Xµùóç7iÒÇüóçÏK±µ&g›Ü´`‰bCXn’€WØ´iÓׯþp8S;Œ°õäÉ“åÊ•C€‹Øôرcjô¬X±¢]»v8¾#_›-[6ôà &{öìÁÁÁùóçÇA =8Òùúú¢S(iÙ²%¾ .ŒÐ‰tV¬X±P¡Bb/_I€<†€‘C„pùÔ×_]%Ô‡!Ó¾}{ü®.]º4Ž*hã¸Q©R%Äs<Кê©äñ«å¡HôгLÒ^gY…6ýpÌD½rŸøa°gÏÐL’7,‹;weø»sçŽ|”…6J®\¹"27nlܸ±îÔ©S5Ê—/ ùСCèÔãl“›,Qìb-¬7IÀ+tîÜYï<üGQNúñÅ‚RšPãâš/_>|Uü²Çá ÝË—/ë^%m(?ÐTËN Ï `ü‘1cFÉe½Ãˆô3Å ¢2åßi8«‡, ò©%¤N!b›:u*~®KIa¡¤Ür— ByÐ é [kÞ¼¹…ƒ¿¦B¤¢ƒ"ÏÚ°aCÔ T®\YˆI•¸¸xÿþýè´ÀYS³ƒ aÈá$àpÀ¹9”7…††Zp™TQ? dREÉê¤~ðÁò¢.VÞÃ6 €Ç0~ˆPX8ŒH2ꆅC–8øXPkSôt{õ÷Ë/¿ˆ~§[¨˜Îò&bÓ  =ŒhÒ‚¤A1 »êׯ{×&¢$L.pýúõ’%K¢ÇÎr…Û,$0Šb$àE ,ˆSQ8 ˆ{oÁmQzeÕœÎK—.]–,Yp¾éîÝ»8£$† að×_Y~ãÆ Œµ À]$@@@ï!w͈Œ\^´õYÒÁGO@­J݃dg=Ž9"¢açZhëÑGf”i?~÷@T›*õ“ä­6ªW¯ŽKèp[1©ŠCPc&¸Õ×ÁƒÅ}ô8Ûê¦U{„CXƒ (F^D?²qÍO(Pà _q¿#Σ" ±¸Õnˆî_(Êaß|óMÜ^è)™;wîo¿ý¦·—ý$@žA@ï!÷ΈŒ\^´õYÒÁGO@­J³·ÖB ®Øå\ í8úáVe~ø¡twXMƒÑ©'†ã3®œ¨‹Õ®èGÍŠ•qËpù]ÃqAX÷îÝß}÷ÝÌ™3W©RCô8Ûá¦ÂÍMŸ&ÎÂŽÁam4wË;ÃÃÃQ@-žx6yî*<™O?“óa›<.çB«TðdÄÁ'Ož  Iü4OŸ>½‚²ÜŠEÚ4¢‡2$@îBÀ¦@ó¡ðÔˆŒbˆØT²µ€¦«N´P=—M<ÕÓ¨¥e(n–n+ˆƒY\ü Žùòyp†›"“ò S®JÝ|ÐÏ,¬{H€þ&€Â&›âW “Žeò€7%o’/ €×Ð    †° Ü$   0;†°f_!ÚG$@$@$@$  ÀV„›$@$@$@$@f'ÀÖì+DûH€H€H€H€Â*€p“H€H€H€HÀìš}…h €‚CXn’ ˜CX³¯í#   P`«ÂM    ³`kö¢}$@$@$@$@  a@¸I$@$@$@$`v a;B´H€H€H€H@A€!¬7I€H€H€H€ÌN€!¬ÙWˆö‘ (0„Uá& €Ù 0„5û Ñ>    †° Ü$   0;†°f_!ÚG$@$@$@$  ÀV„›$@$@$@$@f'ÀÖì+DûH€H€H€H€Â*€p“H€H€H€HÀìš}…h €‚CXn’ ˜CX³¯í#   P`«ÂM    ³`kö¢}$@$@$@$@  a@¸I$@$@$@$`v a;B´H€H€H€H@A€!¬7I€H€H€H€ÌN€!¬ÙWˆö‘ (0„Uá& €Ù 0„5û Ñ>    †° Ü$   0;†°f_!ÚG$@$@$@$  ÀV„›$@$@$@$@f'ÀÖì+DûH€H€H€H€Â*€p“H€H€H€HÀìš}…h €‚CXn’ ˜CX³¯í#   P`«ÂM    ³`kö¢}$@$@$@$@  a@¸I$@$@$@$`v¾Ž8yî*G†s, "42 IDAT ØAÀÎvpX›1CzÚ1%‡ €#ì a1åÇ™˜cI€H€H€H€HÀ>¬…µG‘ ¸ŒCX—¡çÄ$@$@$@$@ö`k7Ž"   p†°.CωI€H€H€H€ì#`ÿå\öÍÇQ$@f#àvwÇÃQä W­âÝýy´iãEXÎÊßl“ x †°^²Ðt“,èÕµƒ¥ÝfÚ7ëû%jsÐhÆñžŠEÓYõ»‚=$@žM€!¬g¯/½#CüR±¦È( ‘ ˜„CX“,Í W`ëJúœ›H€HÀv amgÆ$àqü|}<Î':D$@$àÉÂzòêÒ70H€YXƒ (F$@$` aM²4ƒ\I€!¬+ésn  Û 0„µG€ÇðóMªË¹æÏŸŸÐµkW3½~…7ÍOàäÉ“~~~… 6¿©´HÀ“0„õ¤Õ¤/$`'˜ØxûF~øáÐíÛ¶……õèÖCSÃ?þ„¶c§w{õúbI·¹fÍš/^@Ú´i3gÎ\¦Lÿ¤›Î]4KX`p@@@pppÉ’%CBB,ØñâEHZaãããS¦LªŸIlã. &ÀÖƒ—®‘€Q1qö„°‘‘÷ìÞðeýúuºtóñѼ&,!EŠ-ýzýFmv\ñY… þúë¯óçÏ#E¬æ¸NЀ­S§NLLÌÇ;¶eË–zõêYŽb-{½uëÖ¨¨¨fÍšYã^ °‰CX›pQ˜<“€VˆiÝÓðð9rä¬Tµê+–råÊUªT)ŒºråÊ™3g^ýõÀÀÀË—/Ÿ={¶råÊPuýúõ«W¯bä!p÷î]ŒBdœ7o^(ŒŒ}ú'Ož@ m„­hGDD }ãÆ „§h>|b\Ô'¡'..nÇŽ—«V­Šqÿþý¨¯@¿Éÿ²dÉ ?~ŒW«.h dÏž? ð3Ñ?PhʘÍ#0'†°æ\ZEÉJYR[ÿ¿páÒÅóµë6̯`þ‚…víØùô)”Dܾ}õÊåª5^³Y‹ÿœ%k6xb¡ßÖyÈåùóçUqÆ!lêÔ©%͈\ßxã ¤ †>{ö,wîÜùòå+W®d.]º„ÐgÕ‘^½}û6J<‘jE^1=|Ñ€f Dh›3gN‘m½uëVtt4T!µ‰¨{¡\šÑ´ ¤cA#66ZuAS C† ˆ_¡(ËjʘÖ}F$`f,$0óêÐ6H&ˆ#miSøz\ÿ4ë«éýüytôó;¶ÕmðæáCÑ“·@!¡©ÆÄ,l\¼^¿­ó:QÑBU\„œ(Ný#Õ*”#ÒÂÚ¨àÄ+ÄD?jg‘yEx*®CiҤɓ'N—ß»w¡žH[¢NààÁƒ¸páÚy…*DÌ„6Ô'ˆ‹É„fÓ¾ÂH„é"‘lÕ«pÓˆŒiiÐ0 S`kªå 1$à±q¶ÔŽÇiñ­›J•«šgÌt{ÝO[7þZ«nãôÁ‰”wn߆ND?/_¾@Âm½~×8üϬÈ*Tµž¨a•BØv&^’6J D¨7.@¨zóæMTÁ"튜:u JpEl aT è%¶èG-).‡B¤‹~Ì…Ò¡Í-^Qõ ;á ^­º`UÀˆÈðH€Œ`k„eHÀà ÄÚ˜…=øÇ>¤]{ð*2›7®;tàÖÍ›…Š–ðóK½gÇ–¹ò?ògäãÇ3e‚~½~’E *Y‘=ECdOÆ zôµ¨ =~ü8F!ÖW4 ,¨0&Ù6a *"QFuìG_¬X1=Ä…_Â6M!€ì5nûÎð]O&Ù¼ãD$@C€µ°³”t„ì'Ÿ`Ó¿[6VªöºŸ€4ªæ Q$ºcËÆ”©üš¶j÷$òñ‚Ù_æÎW 4Sæ ) ¦×/i0ذßIÕHÔªîÛ·ùW¦¥K—VíOÌÂV«V !Ýo¿ý†b„_åË—b@’"‰‹P¯ââ}×"„EFvýúõ¸Ç*NÁ‹{u¡Ž¶zõêòûï¿oذ©Y$€„ñªn¨I¶à"6AÝ*b÷† Š(\Ó¹UzÇÈnÛ¶ ¬žŒ\Û$@$`„€ÏGgAnpX«Ò¸%JûöíÅíQ¬ S€HÀ]Lž»ªýÚ:×ZTÇ"°K­zX€^¿ñÙ—­X©8^­ZµªMëG0ãS¨%Õáš$‘UïÕìAlŠ?Dlн¸ ªDP¨ØåȦ‚ºÇýò±V]ÐÀÕl¢0C¨Ò”‘Ïb¡t®Y˜”»H€’”€ñ ßYc†ô„1,$HÒ¡rp¶XõÊ7uâ“®Ôjõú­*t­€¨µÉÄ»š!¯:¨µI­„­º ) _á…¦Œ¼£ $@îB€!¬»¬í$$$€“øI¨ªI€H€HÀÙÂ:›(õ‘€ˆe놫F“I€HÀ› 0„õæÕ§ï$ð7faùV  p/ aÝk½h- $ 8oª•$FP) &ÀÖ0* ’€ç`!ç®-=# Ï$ÀÖ3ו^‘€M6ÿºÆ&y³ ã.Kf3É ö‹V6 $†°I–jIÀm(n³ê6vÿchRßöŸyÜìÿÄâf FsI€l$À§sÙŒâ$@$@$@$@®&ÀÖÕ+ÀùI€H€H€H€l$ÀÖF`'   p5†°®^ÎO$@$@$@$`#†°6£8 €« 0„uõ p~     ØvS­eË–Ù¨Ÿâ$@$@$@$@$àd6„°íÛ·wòäTG$@$@$@$@¶°!„}øð¡íú9‚H€H€H€H€œL€µ°NJu$@$@$@$@IM€!lR¦~    '`ëd TG$@$@$@$ÔÂ&5aê'   p2w a®_¿édTG$@$@$@$`z6Ü‘@Ï—6mÚäèÀƒƒƒ«W¯ŽˆvÔ¨QHÐ~ýõ×§N ¬]»6‚] 9wîÜøñãK”(1hÐ Ütvذa={öüã?8ðé§ŸæÉ“šçÌ™×»wo \DDôCµÙ^ý‰]W¯^1cÆùóç³gÏ>`À€âÅ‹£ ÉŒòåËÀ‘#GæÍ›»V¯^}ùòåÁƒ[û ,(À €k 8' bcc7n܈ȲP¡B)S¦¼yóæÑ£G—,YR¡BD«C‡=sæÌÿûßjÕª­ZµjÖ¬YR¸pá|ùò…‡‡ïÞ½=ˆ2‹-zíÚµmÛ¶AàéÓ§¿üòK•*UäŒÊ–-›3gÎýû÷÷ë׫Ø)PZ0|øpŸ1cÆ ÌÅ.¹j¡yÓ¦MbJÐcd Ân¹l“ ¸–€ YXÄš [7n,znݺղeËçÏŸgÊ”©ÿþ¢Ó××wúôé!!!»víºsçNÓ¦M5jÔ°aí[·nذ%³ˆtñú矢˜5**ꫯ¾Bô‰)ÛíÛ·¿ûî»7‘f-W®œ|^¨ýòË/G}èÐ!$Yßÿýúõëÿþûï÷ïßLj€ò.]ºôÊ•+ À@É Ùß}÷fïÖ­bß»wïÖªUËÈ@(Qû.7‰m    G´oßÞ¦ÁÚÂÂ,h—'Í”>}zÔdÉ’UH¦ ™ÐÐPįh#ÀÅ«8 ‘%´ˆ83gÎŒ·I“&8§_©R%¤o!†áˆbž={‰ÒV­Z mò×téÒ¡áçŸFî¤I“è½}û6ô]¶l©S§FFV ‘Ì@,[§N5kÖ;vlÏž=•+W 22zŽ Í|%   pœ€ˆßlÒc[ ÕRØ*Ÿ§Úß|óMy¼1cFlÞ¸qCt¢˜ù× 2`óÉ“'H‹"âDJõÒ¥K"oZ·n]„°3gÎÄ4h W%µ ·hÑW¡záĉˆ†± =¨¦•dÔzõê!„Ť~Q­ ƒ5½Vëg @2pZ-¬[‘%EŒ‹Ä'.ŸBlŠÄ'î'€°C¾ùædILJk³¦N* X+V¬ˆ<+jg‘ brå'OžD2»(lÅåYˆesçÎ!Èãtÿ–-["c.ܸ@>J´QüŠ‹½ ƒKÄ÷E§ÁjUì!   päaQN0bÄDH‘Ž;±#jXá0R¡¸l ÷À}dÿßÿûˆYqŸ,ôãò¯š5k¦J•ªyóæj.ˆ\ìvîܹ{÷Eé-® CÈ‹›àæ(0Àm¶Pƒ‹RWõXô ‹p˜›Æjjc' @òðùhbâ͇µ±:7rœ¶VÚ*t¢0 mÚ´êĪB ›C† AVõ“O>QïBÏË—/q}2»¢ÖV.ƒÊäeQä*ï4Ò¶{ å”!   Ð#`<Èœ|ˆçÂàÕ£½4äœIŽ´ž·"&kõMàyä…Ë^Ÿ…Vßá  "à^IB¯ã WDL’w“|’#¶8ƒüÂZ¤Ë$@$@$@$@æ#àP›pýúõÈÈHóùE‹H€H€<ŠÀÂ… W¯^íQ.Ñp€ÀòåË—-[怷j-ì¢E‹Ö®]ûøñãøøøR¥JM™2%9a´iÓôܹsƒƒƒ1ï¾}ûFŒ±`Á<œ69Ͱ:ìôõõo2´=z„!þþþ¹råêÓ§ŸCf H€’Ž€ƒ¥ØØXßÔæ%Ññß83flÕª•zFéiÔ¨Q¾|ùfÍš%<y¦3á,vfa‘|]¼xqÕªU×­[‡X¶S§NÉï¢ç™3g&ÿ¼ŽÌ˜5kVŒºvízñâEÜŽ¨âX pœ€Ý¥tìØQÏw<>ëùÂ~ï$`÷GÃ;q¹ÄkÐF숈ˆ@ò—òá@¶WbÔÕ«Wg̘qþüùìÙ³ãW¼xqô£\iõêÕ´•/_þÔ©S#GŽÌ›7/vá¬ÐåË—ñCÓêÀQ£F,XPn[êÔ©wìØQ§Nš5kÊû§M›†)îÝ»W¦L™Î;çÏŸ_Ø3gÎ’%K.]º4((hذa'OžD¶2¯Ñ´A®û×_ åµk×F$êçç'”Kªí”k€<ìÁߊ+NŸ>½sçÎùóç÷êÕ«J•*r1¶I€H y(J8°ß¼yÓêG]ç!Ü­[·Aƒ•(QBa­Þñ9,,¬páÂ|ðäûöí›%K| ¯ «‡h1Exx8(>>>ÿýïñµ‚NÍC·ü{§eË–ÈW¹û‘_=8q|ìØ1|áÛ§~ýúF|ÇW¾”ñ Õ Aœ·ÄXÁ`lÒ}WŠ•r÷WõG$Õх溨;7n܈ïý±cÇ"ÞÀ{xåÊ•ˆ=Š+¶k×®M›6}þù猸¸8œô¾}û6‚˜˜ÍÓ îNÞ¸ývfaË–-‹ÃÍþýûûõ뇙˜/::zèСøñ=|øp_ÆŒƒvá€xôèÑ%K–T¨PAíµk×°`bN ¡ÇÈ@|ð^5lØ'•ð–zòä‰|WªÿßÞy@[U\ÿ@ €bWTPŒb"*ºý«`°1öÐÔ„KD#E ‚Ø+š# *  bCEPPš…Þÿ3Éx~3sÎ=·=Þ}ï{ë1gŸ={ö|gΞ={ö¹·Z5cñ-Zdº†å\¼x±-'›hÃÆÊ'BbðàÁãLwÔ,³UK;tèÐyóæáá‹ÌÓô% (Xé!5oÞ|Ö¬Y,^Ì"­•FxÅø}4ªV­DÌúî Û1 §OŸÎ]¼ÊÓ¦M£ž Y ì+à|çwǦ|îØ¹1çq·Î8ã ôÁCB‰Â[µstai»V­ZwÜqǨQ£HîÄ5$ÂÊþ:ÑVóöIDd–uêÔÁ¥ÌsÅÑÿ˜1c<6lå±ti*9ÎßãŽ;Ž€è¸qãhËÜb·=bÄÞî2©;ì°ƒ­ÂFóÇ%?Þ-U¢-A#ÙLÁ$3PלYˆM©W¯tÛAÃ÷}8âìŒ`0V¶¨qµDB@ Ç(™(Qž†Î¨êÛçä.$›hSmålذ!òÐLL7yÝÁÌ–Š¥%¼‚wn"è…Kô'Z4hÐ wÔ†¡/ul ¥î.,0Ngžy&çòœŒÏ˜1Ã8sPºuë– ;H\XªEç9„3eÅ LvE *Qs—+é&—^z)o­’bK¼=XË'fÔÁ<ÿì€M]\dfdíÚµ}Q 6a§žzjƒn ! ÊÇ(eeè2F€ûlú…[FGÔW˶Ë$R…X€Ñ!㺓­ü-ÅO€ƒp 'uÆ×$ÆÌþeˆ×ð:/à¯sªÉAhÆe+¡Å[+-­[Σ‡˜?.t3H$‘ƒø‰-Z´ÀåUx²;˜Ã|IQÊçßáfÛ†KÍdãw¥…m¡´Í1–w¡ðyÒÈç`/K\óÈ#d×Bžò«¯¾Š‡GÕXGW’_yÙ ¡HèÈ1—<Ãä$Ø[<ù”Ù¦Ož<w“ýMJ+™QÂÌLh:žŸ©Ìö—/dÈsö í·¿ýíÛo¿mõWA!°Ho葯Eð‚4¾8…û +Åœ9sað5ˆ,qãè,:ÔýðÉ€ ùM7¢JÈÒâåàšð ¸¸)Ï=÷ÜÊ•+yã‡.öJÇYшÎpJÄ4}C²xke\‹¥N"— ‘î“ÃÍ_r 8²ìr®ˆçj»` 9ôÝT,ÒZY~€u€ò/ä}‡D,8.A¢#Í¿LóÜfb=ô«J‰âï8™q½ƒn;˜»Á‡c lÃÀ‚l>1犎(ã¿BĶ:·2^fÔ!™ƒB \!ÒÐù!ŒŒ½0ïcedK`ê–Ñt',o·Ø—W–]>¾¶9÷½¨k¥¯g  ŽK˜àÜvj™Óbå¼Ì1‘ r‚¥^ ! „€B@”r–í+°Ï*¯ÀTׄ€[YÚ" €-°)ÅVüsÏ…M‰£ØrC ‡ã¹ÜR-! *',r•³ãÑ^—+K[‘F¤\ñ`¹"!o:XŠø—i.lpˆX(*ÞU(d$G!P(di …¤#GÀ:€”ñe%Á_¹°e<¯ÔœB@! „@¾d— k~96ß6U_! „€B@ä@.,_ ›GCª*„€B@!  ƒ@.l%I­( ®’"„€B@!P4” [4h%X! „€B 8È…-®’*„€B@!P4ä Z B@! „€(ra‹ƒ«¤ ! „€B@ ¹°EƒV‚…€B@! Šƒ€\Øâà*©B@! „€EC@.lÑ •`! „€B@â ¶8¸JªB@! „@Ñ [4h%X! „€B 8̅ݼyó7ß|³dÉ’Üô|ÿý÷?þøãÜêk=úè£Ï?ÿ|ðVžÄâIÎS1UB@! „@%A ‹˜CdýúõO?ýô³Ï>»nݺM›6ÕªU뢋.:ýôÓ«VÍàoذa«­þ«@ß¾}wÞyçx ®•lé/¼ðÏ>ûìhÅ /¼?;J1å‡~x=öðéAJPrSD! „€B@b Pöþûï3fL§NÎ;ï<¼R.‡ºvíÚ_ÿú× _{íµß~û-¾¯á¹ï¾û2º¼ ÒRÞ0`Â|ûí·Ïž=U·Ýv[.ëׯŸR‚Ø„€B@! ¶8ùº° .|ñÅkÖ¬Ù¥Kテ2Ï IDATvëÖí•W^yì±ÇÄÖ¨QWuÇwlÕªÕã?^¥J•Ë/¿ü˜cŽyæ™gð Ù^|ñÅ={ö<ðÀo½õVØn¹åùúë¯ï½÷^ò ¶Ûn»ã?É[o½5t#ꤓN>|8·¸Üwß}¡ß}÷Ý0“Ãp衇Þ{ï½ã`Ýu×]Í-ã¹y­^½º¡… 'ûƒ> 9Ô8ñÄ£’—.]Ú§OŸßüæ7ôz2s´¢ÊB@! „€ù ¯ ûùçŸã‰â;ÚjíÚµ›4iòÙgŸÍ›7¯Y³f ,˜;wîwß}wøá‡ãÚ<ö¨£Ž=zôš5kpawß}w:—ÈF¸þúëW¯^³‹›;räH(W]u•áA&œÍ›7Çoæ$ôjÕªá¹â.ßxãÛl³Íïÿ{ˆÙ~‚B'¯\¹’-þqݺu£2Éýíׯß.»ìbüWn%0G+ª,„€B@!'Y¸°/¿ü²ÓØ)§œ²lÙ2ˆ5ŠÞjذ!.,n«!â\öïߟx'ÙãÇÇ£Ýk¯½ÜnܸñØcV¤fçÂ"Ýq÷ÙgÎîIå{ LÆ*1TÜP\Iÿ’\‘@æ«ÑÒø ŽÆÆC%ðiè8¦„?INpØìå„ Ȭ½ôÒKùò^½z‘f`o¥/Ä !Ià ƒ"àúÄO1dÈ#Ï•81)¹|•MbÙ+½JâB@! „€ˆC Ã÷^ÅU³ôvÚ ß‘tÕ;3„QœT Üíܹ³ñh)ãÑŽ;öÃ?œ6mÚž{îiâ©D4qïf̘A]+ÂGÁ»S“&M"X‹gÉ·}ôÑxÉQžh™¬Y.‰òNž<Ç—ø(é Q†4å rsQto ³W#°cÇŽûï¿?ù¸Ó§O‡’ÌœFñ! „€B@¤D _–fðVy[§“Cs dÁöèÑ£}ûöV\R¾u "_huÙe—: ¸³œÎ7ÎrRÀ'æ­,ÒdùfÞ£jÑ¢§ùQ§Üºuk²ˆòÕÄAq%ùn‡'ãePqe~Å€¯’íСïœñæYT±áë®»Žïµå‹º–/_žÌ­¨²B@! „@žTùCÿÑ«kÇŒ‚x3)!Ó–tRñ‰†:oî­$7€ß, æJ>€óRD¾K‹DR¿õï¿ÿžÀgBü5Z…—®L,µð˜m8Ê“±B˜°.QØŒÕaÈŠ9@ñ! „€B Â#ìdF»?pøÈÛzwƒ’u.lTJ´ŒoJT5JqÊ„W —A¢aõõùã(ö-®¬j9Ò‚Bð¡SºÑHËŠÙi]—B@! „€)(˜ ×§í¹ÅDãŠ.„€B@!PÉ(º K2k%‡XÝB@! „€(,x«° IšB@! „€HF@.l2>º+„€B@!Pî [î†D ! „€B@$# 6ÝB@! „€(wÈ…-wC"…„€B@! ’(ú7$7¯»B@!P©˜:÷§_/Ô§e£…%9B@”raKk¼¤­B äh{ØîéÃØ÷DŽ„!PŠ(‘ GM: ! „€B R# ¶R¿:/„€B@RD ‰‡LÓó^];¦a%‡€Œ@É YePXÓ²ìGY˜—=敹Ÿ°ÀwÍ¥&ƒxÏ_KfÈçîûï¿¿õÖ[pÀùɪî£>ºÝvÛ}öÙÔŠ–³Çœ³À§Ÿ~zóæÍçž{®#9Žî°™Ë¬˜ƒÊ9qãÆo¿ýö›o¾¹í¶ÛžsÎ9uëÖ-ç ç©^ôéÈyj¥Ñ!ã5åÚ–¦-ñd‹ÀG}„‘Üwß}“+._¾|›m¶áÑ0l‹-ªV­Z:u’kåywÓæÍoÍZR»æÖ6Ø1OQ~õ-»6ùúlAJÔUÜ0gñš?þÿùU= Ïü—’ü%˜^Æ…Ý®zÖr:vìøý÷ߣ¾à!‡rþùç7kÖ,Ù 6lµU¸•¾}ûî¼óÎ<ð@BõœoýéOzã7.ºè¢ /üÙMá…hѸ°Ñr´ÛACt$D9rœ@‡Í¿|饗‚.lÝ—%ŽÙv'åx…—â¤I“n½õÖÓN;mûí·_»vm‘T.¦ëSO=eä1‚òŸÿüçÁƒóÍ7~£?üðï~÷;žˆ6mÚÜpà †áÙgŸýë_ÿÚ´iÓû#ÓbÇÈÜÂA¿ôÒK£OGÎSËo« ”çž{Žëä“O6Ò^{í5FÄ^¤‰R²iÓ¦ªU‹˜ÖõùçŸW¯^=Á…ýøãálûº_ýêW@÷Ö[oQ«Ø#2kÁx±E©Ö¦¶mÛîµ×^vAéÕ«×?þ8lذ"i'Ö<Î !®b=j àIXRã$¤¤ç€ùc=†uúá‡x>øà»îº+e[bóÈ8s¢+žL“&M:wîl믾zÇwX±§œrJÏž=í¥)ä¿”ä/Áhv u3^n_}ëŒ<>ÀõîÝûÝwßÅX¬Y³¦ÿþ>¡\{íµß~û-  |‘¬?– #NLâ_ÿú×\P¥J• qÄvÚÉ>Š,Õql¥BO?^å¹G'ND½Ë.»¬F-ð]< `å@Ûo¿}öìÙ÷ß¿‰xÕ¯_߀FxxݺuD¸œ0a‚!¦ÿrøèT,ÞÓ‘^+q�~üø•+W¶oß>™­xw ¾âÂâ·~øá«W¯FÓÖI'”­ÑËVÉ%?®]¾zCúÛ-_½>Ûºiøs[›ÒH.ž< BTɨ)H^R£µr(g‹ù×_ýøã³s¸úê«—.]ºpáÂUä™cV üÏ>ûŒ@ È2Äz±¸+„TŒ@»69òËÉea\Øk~Z•³ýp°…W„Ýdú.^¼ØTŸ;wî=÷ÜÃê¾Ûn»ñ˜‘ðÌ3ÏpÉæìâ‹/f7pàBßqÇ9æ˜Gy„ˆü\ÞrË-Hð«>|òäÉ7ÝtS£F`xþùç¿øâ 6Ö>§¯?K j´hÑ‚Z|ðÁ¡‡êó$P8ƒÛsÏ=£ h¾Ç{tÐAO>ù$ñ6ø(ïºë®xóüµÌ/¿ü2°°~\~ùåôzPáY³fá%ãßüñëׯ·ê8zVB¬2¦r¼`f9d¿b„l»térâ‰'BÄNÝ{ï½Ü‚ˆ¶Ð½k×®<9×]wå+¯¼r—]va°(;£\³fML0pI«V­˜ Á¾›Fšù<ôÐCLÊ4ô‹_üâ’K.qZÁ¡ *™~àþ×Tø;ÄÆse2岬{ï½7“ówÞ¡ƒÀŇxQ1˱àO9ûtD«ç€^´z±Ë¬d3gÎÄ,0Ix^ÌÃË–rúôéß}÷Sèˆ#Žð¸W¬XÁi)uQo÷Ýw?òÈ#±Ñï½÷äð0à1Û]mG,³”[HæSË—0vìXîŽ7ŽyhžG#V˜“Ì%C ½¤_Õ`£t“!œG…ÌS+ÄÄfæc‚˜30Çõ+ŽN•„ϪU«˜fÄø ¶| 3« ¢¿Ür6T ‰&þˆpüᇢ':'´hn­Û°iæüŽlRgñò5™scÈmmŠk+h^‚RTÂÝwßMÅ%K– Çq<æÜ ŠŠÖ¢œl°qÆŠGžíkC‰í2®‰5þ’š,Ê.µ¬×ކÁËl1ç`Šõ§€é‡…äcÄú¸å¼š;vž…Òq3h18"¦"ÙYŽ“óÁ ßR3‡ÎÚ•bÿý÷ǰp<ÈÉ>qzƒ<.ìqÇgÊ ‰9sÌ2ªûnÄZ C‡Mh(áVaŽ®V®Ùü/¨ó•\«'žx‚Mÿ 'œ†òúë¯ç4¡OŸ>ÀzÛm·1³:ê(HV\XVØ,XÀBEEQ.Íál°:.ïW_}õÊ+¯_ã9}% ¾2ùp‹²ÏLáTŽõ©†U§L™Âa=ZqlwóÍ7s— ÖÑ×_ÝJÃ%…‡ˆV¹=NaB×ÈäžeË–Y Az¶B¬4SH9^03çÍ›G ‘`§2"‹Œ,«59æ`äÈ‘öœŽÑa˜&è‹ÝÌP¶£Œ“;mÚ´SO=•ý"ˆÅõÅo:Ú‹c=ÖxÌ¥Ö­[sËi%NIØÒ \´-¢YøñæÃ3½WÆOµ53Suf>B¿O'Ó‚MW@s[¶ü¹¡g«—AÃÜ#Ì(«¾ 'Ó5“ipôÑGƒ Ç#LȨ&0eáçÙÁ%5ž‹Ã;ŒyȾŽeªàª2ëð>‰1°v~úé§Ð} q ñðl-†Õ–‘ðÉ'Ÿ ùišKü× ªÁFqõeÖTœBÓS#?ÚÊœ9sh…¦q‹¡Çõ+Ž,׫W¦‰~q†hüiÛ::S¦ƒ¨ÇÇO,6™æün²‘1þrˆ3æ}ßd×ZÕ·©æÐ x™¼0q7«¶|ó÷(EÅâ.๲¨M:ƒ`nù¢¢UL9Á $XTyâ;Í›7gÎcl4k œ%5Y”5ÂvcãëéP²ÅœÇ³Ìm'\e¥ù¸å¼šÓwÛž5ßÍ Ñàˆ˜ŠÎrœŒX|_ø–š9^[Ê_~ù¥¥° ãœñ‰:ö®)`ýü9æÌ~ß} Žðô—…‰Â®\›!0ú±lK™ÄDŽé)à%/i×®Ý~ûíÇcFxX7nlÌ%þ‡í³ßÎN,1X+À–‚`^ cƒïä¤!+Šñ0¼Lra‰‹°ûdu¼êª«²:}ÆÐãg#Šm¥ÝÓ ÓdFš¨È‰Ë†Ì¶>( N0šs |dè·ˆqžqÆÔey3‹:Žoìuœ«Œ-¤/TÅÿÀ‘"‘˽hšÏÈrZDjÂ(\qÅæ®mÂ)ØQf¯†kÂ>‡­áaíô 6•¹Ï>ûÔ®]Jp.1 J¦¸h[Œ \¡jôV\™gºú .˧a¾™­@¿,ÊšG¿b%̙ۼBDPm ñàîqËy5GUÛ‘à%Œˆ¿'#æƒT# i ¨h-[Ž›9–Áx˜InÎK!âÑžyæ™üãIöïµç–ßünf«pT‚#<ýea¢°ëC† £lY¤;uêÄ¢ËË×|]¢ðuëÖÍ©žñ9„?®:†1cÆà’rݽ{÷NÛ(++ÑÖQ#“uqôèÑäD´qBà|Ò©ä/’@Ìn_ж±§ÄeLü3œë[˜7œX›§Ä*`¶+ÑpB°/ðûM[! ÉJf¬^ôÇLóDp\nòe³ËZ›&±èe¥§afFá1út À: ØSÊøLä`›áf1†ç‰Ô‚`[.N¾Ì&ã_š£p.)°$ êK0 ñpQ`rFns+ø7£ªÁZ‰¦#<ÝF¿_Ùö×o‘c Ö3üTNrœ<~ì QžB°¦bžÝ¬¹íVü3¢Ö®ß¸zÝÆz;üœîë–%‡µ‰t||¶:Æÿ ×÷ÍKÜ£dµå8…ÜS¾„o°á ¦Í-_”­-Ä„ü•]RóU˜r˜S‹g“Ž“OVjB€Ä8‚¸å°š;êÅ YƱ˱Y°â–3§9sé SÃV/Ò̱òmÁ$Iúv•˜7<ÆÁ°Ì …<Nœp«0QX΀’ÿ%h`¾›“\iv¨`±ãáµB/x9|ÿ‘™4¬[l˘֜-&ˆŠ«Nþë:2Y̨ÄqZá$-aÂÈ¿$w“»CÜY^S@+Ë“±ÀCÈ«9æc’í2V1 PcšÃç&RË\*Œ›HÉÊÏæxÑT£g%$NÕŒãEüåÙ½a²Ù[㦠Êd-3 D”™èl@qÑŒÃM9Þ¥Ê7Þç"Øê°±¸²”ûl:®#>ݶâ+é3‰BHžHóœ7Þü&¢3Šx¤Ï’R ôR6e#¿“u”„Tf ûzgv_LüÖ <*&‰‰’ÇÅ„Î)Ž/ëiŽ48¡ÃÃÃËÁ‹ÉRÅiÀ9&åšVðŒMD-ZÑ– T·˜ÃÆ«cöÚUßV 2ªêÔ"<ÌÔebç?¥GÜÅø˜*®_qôhsì ˆñã(D‰gÎã©9¡¡(ê‘f…—?°3Xcú`7A²²“ц ^N^˜¸ë·ˆÎ&m$‹7‡àO¯a š—ࣕi¢þì.x‘p˜„@­eËq!Oc]RóeUµ…l1ÇWƪÇCÊ–_–E!ˆMä°š[ÅL!8d #]ŽÙ×±g‹XPxP¨ªA‚¢¢µl9næ³”gÂKÒ>ø ÛûòÌRpÖ Î»`6“ߊM(ä©p‚ä„[…qas88°:±,‘à^d…:IÄtÎøVx¬Cpòu3L¨dØŠ~³¬'[7–2 Ìr˜ÀiÄb…É^5aC!ƒ öµ0¿uŸÂÂÉw˜Í>C…#{‚¾¤±Š›€tPaúB ›áÍ›]2ãèY ‰Ó-ãxñl`ý¾:à1‚Œ(¨ÆC¥;¼æÅF‚dÓ;o ¼ZË(×oÚTgz0IxÒH3ö%Ø´/-Ž’ d\•bÐIf%ëš\p_xÎ3ÊU ôœ&Ò\²ï'-½+¶œ²ùrh<9V5ˆž‘– iø²¼Íô#‡ŒЬ±˜¶!¼BL~ÎÁ_|ñEv¼†‚;B˜ —‹×¼,¿_ð%ÀƒÍ_’sîšh±_Ñ¡dTÕáG2#òïÿïܹÅ%="‡»tÄDJâúGÊĈ¯ã‹ã¹²[þç?ÿIø€>‚’=!1u™x8^(€æÃ¨»É3ˆÇŸkˆêcÊë×*Æï <‡µ‰—Py…—>òª 圼±oGTм¥hIÏ`|9‰â@–ù‰ Â[ÛAQÑZÑrÐ äi¬¢Kjž¢¢ªšr¶˜ã¹4ˆÔÒ-xÀ¯¹æLA7#?ÛÕÜÑ08d #ºƒ!2Ë1siÙ"T#ªj ¨h­h98s ƒYJø’ Ì)¾ oWciÍ-‚}Lø³Î:‹ÌÉÓO?ݼ§WÎ_á8É ô*èÿ·3þ²Hs&w‚ü`õ zÎ`õ¢ñ×}ù¾ÂQ.ÊG‡'½¨À„²/ÏÃw>ìTúUÓŸé›NÐß¹TÒá©—D›’3&¾ˆÂã :ÁymÚŸNþ/Êï— A5üZ>%£ªÑ*N£Ñ[”ƒwãúGwdF/écp¢äCÎ?ÿüfÍš:?¼ôª2û»aÃ4)lsÉ2sÄÂ*)iB@T{ì1 Ë?ü°iÓ¦ƒ>ø®»îÚ"]Ãà[Ãn?¿ÙË/ ^qÅ,Yi·âÄѳ.f!PÉÈËï!ßZûøÐ&MšôîÝûÝwßÅÇ]³fMÿþýËO7¯½öÚo¿ý–=}U*†Ìª'QB@T0¾>þøã„®¾úê¥K—.\¸°œt°~ýú·ÞzëôéÓï¿ÿþGyäÎ;ï,'ŠI ! òra«U«ÆÆ4 "®Ï{ìqÐA=ùä“Ûo¿ý 7ÜðÑGQægq£?–øòË/c°ªT©rùå—sÌ1™;wî=÷Ü3{öìÝvÛ 9pÄY³fá%ã¢üñëׯ·±Æ8zVB¢š'—ù•d¼X´è¼xñâæ?þoòƒ> dÛ¥K—O<ÑaNQ×®]÷Ýw_~™ºW^yå.»ìrÓM7Qö…?óÌ3 FÐââ‹/îÙ³çm.M[wß}7b—,Y2úÍÜ ³IDATr衇Jß{ï½}™,'÷ÝwCÉxµjÕŠ†L+'N>|8=¥!ærĈ—]vÙQGUCe! „@2ß|ó vŒ×“9jc¥°‹®í½÷Þ‹Âΰ `TÍoÖÇIlÑŽ;îÈš‚»‰ëY³fMÇv׈Ýh«h ã'Ÿ|‚’U«þœ€çÛODÅ-OqtGg–9)ô? ùDá„¡Ô­Š‡ÀÏb}[»víØÿ|Þxã S}Á‚S¦Láˆ_êóÏ?¿ù曹ϱ;.Ý믿n›À%…çðÃÇs¬ 3gÎ$ÒÁæ;cs½âŒ$Fïý÷ßÇVqÄxŸŽíŠ[#ãYU,d¸×M›6ú¯Üòí'Äàò”@êŒÿ\ }ã@Ÿ(# ,úTòŠÂò´`)‹óqÇgP«Q£Æ€x°'L˜ÀßâÓàã²÷µ°ÂÃC^½zuœàñãÇsëË/¿äð¨]»vûí·.[($'p‹@ægœA]Žrp%)àøéxÏé…XeÒ>ýôSR`á<í´Ó.¸à‚¸*¨‡$ÑΟ?¿M›6ޱ³µÒ@d™m!(œÀ0þëÆ=öXË-dl‹~¬sƒ 0ý”™lë à¸öˆJf§Ñ¯_?ÒšaÀ‹åÖÉ'Ÿ|ÒI'A²©,„€Ȉ®Û!Cúöí‹'*Ù£G,?&­2ë ˜ b$¤Æ™VÓ ¢ˆŒçæÛ®×^{Í_#7nœ gPguÖêÕ«ëÖ­{Í5×8œ¾ýŒ[žâèŽÎA ‰û+KpEvH—¼\XÜÞLwÂÅm‚ˆ•Á+Úf›m|Ÿßÿž† ò÷‹/¾0AGbóvµˆÈΙ3‡»l|ùý¼÷Þ{\út‚»ÐS ‰ ¤Œ·?m‰l»¡ØKô$ªzË-·˜Sûè-ËCžb| „ƒ>jÔ¨îÝ»ûJ–¢¨XSN)Ü©˜Ü¡nŽþß|óMsŠLh6IiNŠ­Ô«W @á6[ 4äã( K! „@jÕªuÇw`9y–8aTc|Hâ¢:¶_“m6ÎÆ'A`:uð_aðmWpHÅ-¬"Ù dsaͲeùƒö3nyŠ£iVç †ôÝ_Yâˆ2Âv€T¨ðTݲ=$Ï 0 Æ$yæ™ÿøß‡jžjîïca]Ì8zVBœŽc¡°wlµ¡ãfÏmyˆt¶lÙ²S§N„Ÿ}öYK÷ œv=øàƒ„lá49>O >4løñ¶×\Æ 7d±‘r2_‰pŒ3†øwô®•ig2¨,„€(,¸_¬aaðg̘a6Éj™VØi©]»¶¹ ɨ>¾í ®Ñ*~™\r¨ð§ÿΠýŒ[žâèN‹qèÔ¥¨Àä…åýªwÞyÇ ÃË[6K2#^8‹¤‘»I†%‘ZÚ#<’Í.ïx±á6y´5âµ0’™8<¢LCз2Žž•GIT²¢°³Ž©µ·Òü¼+S7N¸oôÓ·eüWøqd:—éå‹S!Œ[œùuL“g$ý†|Ûå¯~­”” ýŒ[žâè~[¾†Aã$úÒD¼ *$"ê”B@! „@9G`KFaË94R¯€pGä¿€%J! Ò# #œ+q– raKe¤JXO2­9ÈS:l ¡TB ”.åÑ“î±È……F7 ˆ€J“(! „€È á¬àsI  \Ø’&))„€B@!ð3ÙEaͯ¿þ\[%! „€B@!P†ð%ô|«}.,_ [†ê©)! „€B@!ðønéâQ£FõìÙ3 V™4ÿB]! „€B@”!sæÌ™ÿŧ·öD›Ê…-CàÕ”B@! „@Nà¿ò#^]ºt©S§äÂæ„¢* ! „€B@”ä¿â¿vîÜùígS¦Y¹°e…½ÚB@! „€ÈÙ³g;ÿµfÍš&ra³R5„€B@! Êü×W^yÅø¯Ä_É…¥LËraË~5"„€B@!%ŽÿJ,V¹°YB(v! „€B@2DàÓO?Æ_M.¹°|Ðâç/Õ8|dj¥¦„€B@! „@eK-ürVç.]î}òNy̘1|/l•?ô W׎;í´SX€¨B@! „€B   ΊŸJÎ+ߟW®²yóæ2TIM ! „€B@|øÿ¡³ûàÚý$IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/html_link_parser.png0000644000175000017500000000214312032647206024412 0ustar ebourgebourg‰PNG  IHDRïq²~cÝ*IDATxÚíÝQ’¢:€aº;Â5ÙϽŸÛåøÜ½¦ë:E¥BH¢üþ‡)B@òçpBCÜï€MðÇ)›6lØ 6lØ °`3Ø °`3Àf¼)ÿK‡ë¿ÃGûå·c„¢J¢åc;ª?¤šµ3J&¿ 'iÅæíïÃh46 £T1jö«gâæðk†_±¹Í¨e/aç¹?EæWÑ£NÛ—jìx’‰Y²¼,Ó6ÀÓš$oÞT•k*ÌÈ®/‰ù±y©óx»:?¿UòNÊà £òù]ÔŽãð?câ-2©™ô¼®ÖY dî­zæàílžtÒu‰Êœ[¼Ö¼y7ý¾òKìž¼<k“»Žð¢µ=mÔæ5ÝÅë¹eÃõÃÈmØ·î¼¹8ØšQ²>¸çò$óÆFŠýl‰ò bó­y6ÖHÉÛõ#Â䀒Ê3Ø;e›6lØ 6lØ °(üeûr¹8Gh„ÏÏÏŸŸŸù6ߪpñrN§Ó½±ùF¾C<”óù¬!q<È4ZàëëKs¾3×`Úu]MÒkˆÖ©¿>³ÛÍ`3°R›£Ô^ò¾Ú~¿O.Ù§È”O®ÊïhÞ&ýªèÀð8&ÜÓhsÚµßßßÞ›þópÉ&E5ÏÞvxh(Ó8D‘;¹°¸U›Dq=hë»Í0`GW•dD/nÅæ î£uÿ&}äk¿0ü¼Lóó8‰¯Q°oé#â­¶¾ò±«Ae%Q=} ÉÅ­dµ çËè8õÝãš2„Ÿ1oÆ” »/0VIryÑT*O¶y,<ï*fØ/Ö3C£¦®­™ƒÉØ_safÞ¬]ÆæÈÚ{æàÚØÌazPŸiäMp…áŽD>nx‹p-0{4)H/iD¿Ê3ÃÂh«—éH…|Sßê;OŸH$G“c™ÆXú ——ér¹‘~(çóÙ3toÎÇÇÇÕÓéTTÑ_¶!o67?ŸëÅÅ(Ø‚ÍÇã±ë:©3¶›µäÍ`3Àf€ÍÀÛŒ¡ë:½j̧™Àf`5ysøäg;ÏÚ·ù&9šŽÍO{5uªÊšÓbsôÆT ‡;zS0ZXS ²Úpö‚aKV ±¹ÀÔŠ2×°dÔ»Ú¼z Ñ¼yÒ…¾8Á¼ŸG/–ì§øh-¿Ç[ßÓ˜úÆa˜¥Ìbs[Ì«Qº"0‹ÍKžüê÷Õ—Œ©â4›G…I.\**×T›¼aâ>ÆÛÒú Ká©£µcÈ4€uR¾§Qóšíã'–Ùìg‰±!›½ýy3Àf€Í›Áf€Í›6ƒÍ›6lØ 6lØ °lØ °`3Àf°`3Àf€Í›Áf€Í›6ãíø ØŒ‘‡7èIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/user_params.png0000644000175000017500000001233412032647206023401 0ustar ebourgebourg‰PNG  IHDR~ìlO‹ pHYsÄÄ•+tIMEÓ -8©BÛGtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíÝm¶¢°–Pn¯7#5¦ë˜dLÕ?è¢ó„ða€¸÷ZV ˆž{<$ ü´mÛ¥ü§iÕŠùŸ³7¾‹Ò E)½P”Ò E)½P”Ò E)½P”Ò E)½P”Ò E)½P”Ò E)½P”Ò Eý'§Óóùlšæý~g¶¥_äs/·ßóù¼òæp÷õNÖã+¸ì†p)Y£Þs…ãȾ¼\p_G–ÞhØUÇáÙq)}¿ß™s×CÏÅ\sfçqÿÅ÷2´Do$ÿ]§?=ªqØ„óxº5l™{<×’ù*‹«ZõºQçœíOoyþ«ïø”^±IDATùL¸—ƒ'œÇ£½fj 8ž1N òÆEhnٜӲr:Ï}ïe=ªqXé ”û££ôzV /;šüܧÀÕ9ê¦g£ùÕOÔ’ÄÌðÎÎiùïemϹO€j¬8Í*}ŠÓp^ÒÜ|iXTŽ}nž¯Þ,ÿ½dö\üô¨FÖ¨w˜]<ãiîÜ¥hñc«KÉ9çÅ÷Vеïú²óá(wÔ;Y6ÒóÉsÏXw'OŒZuÕ†j—ÿ¾òßuzYjòÓ¶mÛ¶go|‹û]ÃnM逢”^(‰Ï,’IDATJ逢”^(J逢”^(J逢¾ià±^¯×Ù›Ç.`uéÒÛ4ÍïïïÙ›{u]÷x<º®kL8@á<®Ò E)½P”Ò E-—ÞçóÞÔ6úo???‹-›×:d¶á”×๣Þò嶘¿U€OÛõ㢰¿ßï¡åý~ÂÆÅ¥¶mÆP/ÿþý›hüùùé‹kØmÕj£5$: áãÉÕöÿÍYç\îeűÞhàû|>ßÿDÏöO5ÿf§ÃC•/µM_“¢1ëdcT¸m«mþ»F&:ôáã¹ÕökËYg¢7’;ê²aK3S;Ãþ™êIDATñkÎXvóx7²XV';„5lè0·ªü9Û“ir=F½7µnÂy<ðm¦ªòÚõìŽÿ&çusÖ0Ù¾¸†mãÎôRégçÞ,7²¢ôF%vÏÚ£†¹½è°hÔ¸M¸ªÉr¸ØaNzÃòîù“ç\Ê™¿ë~§´øƒ¥Ä!ÛMóß¼þ Ã_Çw*°®ôŽâ®ý™o´Tþðw8q)íM¶ÏuΞ'µ­Ãªw1œr•Þìýï €Ó-O8GÕ1} ÕܳùK%äœÙ”h\{²Òxî:êœîóxí³é à\HŠRz ¨]W³* ëºð‡pw—.½mÛ>ßßß³77ÇŽˆIDATséÒÛ4M×ugoɱ^(J逢”^(J逢”^(J逢”^(J逢”^(J逢Ö]H2çNmÛnݨßêk8§ofÐuÝãñpáe˜³åö ‰Êúz½¢Úü|>›¦y¿ß“ÿMXìù|>sÖ®­—¿Ô†•o~‰ðý®zk‰kÛ¶I|ÂaÇzÇåç£V½ÜP{ÂRt¸÷?;_âÍ‹v5Ô]€ë8榪ÅPs†ÅQ!þ 솓/.Þ/˜Þ†hmÛÆÍã¥ÒëÉyk‹-ÑJ¢ñôä²ã€Ù8êí«×ð¸Ùú•˜¨ „}ÂeXGÜæerIDAT›ÝƒÚ¹mXlÌYóÜRs#Ñü·} ‰ÏgüãµMVz>aï¨wçPinÁ°ú~º$$6þCÀüÏ'Ñçï »Jo±)ÊÉÑðdŸ›‘ólø™ìß°Å5ä|>\ÄÞQoɺ{ú–¤_"1‚ÿèë:F p/»Îp>ä0«ÚsV-ÍÇ®*TãµÍ5n[Uá5pKoþïU†Ê7TŽpÁèÄÚñ‰BÑÆãã [ì°ØyÕ¶½î¶·6î3^ÉÎíàX?mÛæ_úñõzµm›¾œäïïoÎÕ¬|ûðÖëmÛöñx¤¯% $¬>Íê¨ë3ïðÜ4ŠRz (¥‰5àŒIDATŠRz (¥ŠRz (¥ŠRz ¨åKjŒ/ÙÖÕ0¢k;ÀåŽzßÿ4EîŒ;æ¦=Ôa×ýzÓ·ÊI·D÷,Šî¦-Þòoí …-pºíÇzû*89çú„E4*¨CßC0ªÓé—žë'Ú>êÍ)i‰>ã;ò~ÂPû?´~X+·ôNNÞFSljÓ}_qC‡áÝ€KÉ-½ãÒ•SÒö”½Å¥2; Xõà ®þ»ÞþHð†C»Š À¥l/½áIR{ú,.Õÿw|"tº¸æô€ò~Ú¶mÛöìÍ€oqõ g¨ŒÒ E-Ÿáüz½ lÔm ‚“IDAT8¼›õã¢ßßßOn Eýùó§mÛÇãqö†p ­˜V¦èëõz<]×5ù¿ëí{S1­Œ€ÖGLkåX/¥ô@QÕ–ÞñE<ܼè¾JFÓßIÅúüç+'$¦«ìº_ïŹn3kÝ=Ÿ …ß¾ êPML«õ6ÉÛ%÷›†», 㫹¥8×ä^p"ĉõÜ7“krT@Eó:Ä4Ró¨wÎÜ~Óð8ºRtô |\ÍßÁ}ÍE0âI¢y”‹Ó±šG½ÍÌÀw.®aû7ľ>ûo4É¥Ð/ù6¿…CbÚ•oÓúG½}õ‚´m¢Øôò…{Wa”릴>‡ßKžfIDATÇtÝÍ‹Ó*íõNîFÍí[¥;çôlþýõ,.ÅfÛbê“¿¬ÍIÊe‰éÝ9á¼ݰøóÜâ饸¨U1åú6Ô÷Å­©ðì-½ÿþ&7ÂXn›þ-¹sŽ)§Ðúì‰éxˆLyŒz'§565š!Ù°娘r›ê ú²$é­mù]ïÜaÿÅÎÖ_fA>S ;$ êî¥ì©Ì½Ž£ÞaŠ#šëÏ{ÌM†lXþR«^‹Þ§cJa4<3v®SY^2RIDAT|ë&œ'§5æbœhY|¼øBν:ÊQ1M,HIŸHRÎu`’ ëE¸$¥ô@QYÎ5Ý%‘ž˜VF@ë#¦Ë*½“w-æ¾ú[ž½F@ë#¦•q¿^8“Ò EURzýTüjD¤&“7ÉáÖÄô\î×ËñäsMܧ>bzº¥·Ðø®é«x'3ï®d؆°ƒ¿›Íi´N ûD@å׹ĴJëF½ãCæß6rí~VNaŽ*4SY}®’IJbZŸuÇz7\80qµ³aW.Ü­[üãpñÂcSN÷¹€úâ>ˇbÚëÓSp¬w<蜼H÷d#×$¦•Ð^{ØIDATÐúìéxXL1{Ko4›1´ONq˜÷¸1­Ì!ßK‘¤w·nÂ9qT5|j²ÛdcxÎTøø¨­bÑá1å\Ÿ¨¯ìsS™{ºÕ7 ŒN´ûû±¾.öŸ|iÖ*S 8< ÃIQ;ÅS™{ºÕΉþáSùgâ$–Z<¹`ò¥Yëð˜&Ú)àØ€ å|ô‹—ò*¹šÜÅŠÒk/©>bZ­˜VÉýz¿”˜VF@ë#¦s¿ÞoäV •ÐúˆieܯΤô@QÇ—^?±­OS!¾»è: ½·‡ýÄô^ܯ—uäsMÜÖ¦>bz «/$9…Ñ…o&w¾†V=KIDAT–ônÚÐgñJiì±*¦2ùúVT4oALë³bÔû3ºäx÷*¼óäÎWø`¼æÉÇÊí笩¬¾¸µåúÄ´J[ŽõrùÆÌË87£Ûún~E\’³2k*¹®oULû1±˜^Ö7 Üü,×$j•Ðú,Æt<>æRv•ÞhÞcÜAÔog1¦ÜKN@}Aß‹$­À– çq°ÿa‘#Ÿ¶3@\M~@eÖ]dÆTæÞŠQoæ=#›ÿ>ò?ôL,âæ‘gYÓS6’|kžÛȾK:ä‹—«Y7áœsÏÈ£n馌µ1\„ëXP¡¼…C¾x¹”Ò—Ô÷Ñòÿ> ¹¨ÃôªõIDATFéÒ»­‚ª»TÃýz¿”˜VF@ë#¦Ë*½‡ÛFV¥ë^bZ­˜V¦ëܯΣô@QÇ—ÞçÓºë$²‡0ꀢ֕Þçó'úô-sã¡ñ³ýcã§‹ˆÂ1ÍD|¹ !^aX›¼(O¦ªèÃáVü®÷ùüy¿ÿN>ˆ[Ò=9Q:šáƒ7’LsñÊŒrN`¿-Î;“P_Jf8Dí^¢xm Ÿ Ã‡”¾šWfhû &£,ôP’ÒËÿ3Êù“Qz(iË„³äêC,è÷’/Ã_8ËŠQïûý·OËayhi¦öšÓÏr5“ñ ƒîKùú㕎r#U¡ˆu(0#IDATΓõ5Ñ’ÓŸ圌~A—Ø&öYLºÌ çt"{8Ö õGºê%\–Ò õPná²Jot·#* ¦•ÐúˆiÅ2ï×ûøôv@ź®»}¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/¥ô@QJ/õŸÌ~¯×ë£Û_b¹ô¶mûx<~ l To¹ôïÂŵm+OϨ!IDATáâÚ¶gM8òÂeu]÷x<y Öçi×uýsõ —òz½†¢+OášÂsDò~£ÞÚôY~k¬Ê®÷û-a0dDT‰WÉ\Vò~£Þ Òìù|†ûÈY=Îóþ¥çžÊyõÄ"p_QV¦ÿÎ'sª ¾ÛÒDòÖĨ÷êÂzœnÌYÕûŸf”iãüœë<ù nÕþQ\Vúï|üìYaÿµi"y+£ôÞÆä~h¢±OžpwhhÁ@IDATÏÉ«Dg{Äð!’÷K˜pþ.«†Ë›ÇÖ›7î"ýw¾˜ÒDòÖD齊ð€ÐðàØ]ÔU‡‡7Ÿúh·šoþ;_Ì‚mgiHÞj˜p¾–ðMdr‡tn/5:ªtè6fígÎŒÁ-$NMJü/fAbNXòÖM齺ñÉsù«Ú¸hò{!ZÄ4ÿ=§ÿÎ'ŸWÓµi"y+óÓ¶mÛ¶‰ý]Ý®©ÏÐ?þÈS¸¬¨’õ@QJ/¥ô@QJ/¥ô@QY—Ôèºîõz}zS€=ä)ÜÅò‹š¦y<e¶ئë:y 7ü¸hyÔk?.®m[y Žr³röµÝIDAT&œ?¶1À.ÃxWžÂeõyºbÔ;,ö±M¶ë¯’Ó?–§pMaž6Îp€Â”^(J逢”^(J逢”^(*÷ÇE\Áóùì¼ßï¹g£§ÆQËäR@ÚŒ½t-fÙóùÌÉAÉ[ £^€Þïw_ù¢J¼Êže¹)£ÞÛöpŸÏg¸œ9ØÍ‰^´þ°q²|­(+Ó =;ü7sñ9’÷^Œzï-¬ÇéÆüU…):ÙØA"e&Ÿ’(ì¿v0-yoGé­Äd"mÈ®(]»¼7b™ÿ3Œ’çÎÌ2¥Sf1¡Öfœä½¥÷ÂBÃÃ÷m£Ùªh* È53é™ÏIDAT”N™Å„Úq’÷^L8ßÉûŸñS“û¶kõ¦OÎ:¡¹ÄI§ÌbBågœä½¥÷ÞÆ'kÌ5ŽŸÒ5lO7½qj¤S&e«—¼·fÂù&30z¼Ø8·¶tû¸QC" Ò)³˜eÛ&«%ï½õ@QJ/¥ô@QJ/¥ô@QYg8w]÷z½>½)Àòîâ§mÛ¶mÓG™­¶éºNžÂÅu]×?Èõ~rc€ÈS¸ Çz (¥ŠRz (¥Šú_"Jê·¯èÿIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/mirrorserver.png0000644000175000017500000004413512032647206023625 0ustar ebourgebourg‰PNG  IHDRŸ®ÿ3ñ~[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí˜TEÖ¿—  Y²  ° *Y2.HXA³(È‚¢¨eWáO¬À "‚Š(‹aYA$(HX@rÎIPrô½ZßÞïþïíî¹ÝÓ=ÓÝ󛇧ŸºuOªzoqOSÕ]^šôý‰€ˆ€ˆ€ÄÌô¥gǶqÔ#uED@D@Ò;Œé€ú/" " qG@Ö=î©:$" "î Ⱥ§û! " " qG@Ö=î©:$" "î Ⱥ§û! " " qG@Ö=î©:$" "î Ⱥ§û! " " qG@Ö=î©:$" "î Ⱥ§û! " " qG@Ö=î©:$" "î Ⱥ§û! " " qG ö¬ûÚµk7nܹqíÚµýû÷Ÿ:u*rUH³ˆ€ˆ€D”Ào§È$û×¶mÛÌ™3øá‡Frâĉ¤_ýõQ£F>|Ø]¼`Á‚ÇŽsçOš4é…^8qâ·²eËV¢D‰.]ºÜrË-vIêB qãÆ½{÷6ùüñ;ï¼S®\¹qãÆ‘3`À€üùó'%Eäh»)S¦|ñÅ'Ož¼zõjåÊ•GŽio›Ò" " "}ú¦M›ð’Öš›»víZµjUíÚµ±¸ü 0Ó”33È›7o¿~ýH?ÿüó¤ëÔ©Ã,üÑ£GÛ/©}ìØ±„ñsæÌÙ°aÃöíÛSµ»TÙ²eM›‰CИ_~ù…ºèšÕ»={ö ™éKÑ¢E©±bÅŠ%U«V¥–×^{­T©RÜúôÓOiÏž=“-8mÚ4Sµ>E@D@D Œ¼:ÁçÏŸÿè¿)_öÆãŸ;w.v”x»Ã´Ó·5j`˜-ZDúÛo¿­U«“â¦Û´–H³ ?uêÔjÕªaÂí—ò^½zmÞ¼ùé§Ÿf–0cÆ +˜o£”Eó¶Ûnc‚²lÙ2|wl¹É¿pázˆÕ÷éÓ‡6 8·ìJ°÷ûöí›7ož)BlŸ/­ª•0ðê»_¼xÑŠµNI ˆx·iÓ†éùsÏ=çV…-ÇÀœ¿té•¶k×nûöín1“Æ–ÿóåËç¸\¼xñÑ£G[¶lI¤½iÓ¦ ,˜={6Ëüf2á(e•3f ëú¬à£wïÞ½I“&Ë—/§¿è©P¡ó ¼íÝ»w—)S†"–&+ï¾û.UtèÐiÁO?ýÔ A/M½úððj݉x³Lnê6»êBnGbb"Aòë®»®R¥JŽH¾¥³nݺK–,™9s&nzÍš5©ÑºåH(PÀ2íܲ.ͪ¹‰ºãscñò±Ó… ²‹9´åÎ{ðàÁ³fÍ?~<»  9rÂfS![ðãM)«.Ì|£F>ÿüóuëÖ-]º”çÊ•ËKAGíº°ðjÝÃR™QB0¼E‹KÇd¾ÿþû·ß~»Y¼,ï¾Ë¾z28`n1KÀkÏ“'[Ò‘ÃT uëÖ;vì`í`ýúõf6@N§N’öK6ùcÝ)²råÊnݺqËcA»¥E@D@D ,ÒÀº{i73VÁ±”ì†ó"ï–1+ñxÒ„åÙ݆'Íæ;³ ß-lr6lØ€d•*Uˆ´³·3_²dIt‚ sæÌ! @°«ÏÖ9¾ËçPÂB;{îæÏŸ×βw«W¯î¥ C.E@D@D å¢ÔºÓ±'žxÇ¥îÐ:I¸þÕW_åëvøÜØi,.KéU±3î7Þ@yl9{J—.Íeß¾}É'bOµ/¿ü²Ûºs ÷/Ô¢7;ó ò{,HYý‰€ˆ€ˆ@ dxehRÏŽmè1ÚTñÛ8 ½v«Í|Éž½xDìkùæîéÓ§±ú¸æ–°ÇDÈ=ê—˜ˆ€ˆ€8D¯ïîhhÈ—ìô^–I€O¿ øâÞõØ%C.hW¢´ˆ€ˆ€x'àõûîÞ5JRD@D@D m Ⱥ§-Õ." " á' ë~¦Ò(" " iK@Ö=mù«v?Y÷ð3•FH[²îiË_µ‹€ˆ€ˆ@ø $ÿ8~¦-üÕJ£ˆ€ˆ€ˆ@¨zè!ÎY P:yëNa´P¡[" " " ©FÀœj¸:OÖçëËÝáf„E”ˆ€ˆ€ˆ@ìðøó²^­{4€øb SÚ¢¡…jƒˆ€ˆ€DŽž¶û‡Ò}V§]u>±(SD@D@¢Ž€÷0¶¬{Ô=<5HD@D@RH &­û¥K—öîÝË)ì)켊‹€ˆ€ˆ@\bݽmÛ¶×®]›0a‚9uíûï¿çõÉ“'+V,5ÑŒ7nÁ‚,óxàT]¼xñÊ•+Ù²ekÕªU—.]u%{yï½÷r†}ƒ ’•D (a/ %#" "=‚°î4úäÉ“ÿøÇ?þö·¿¥UvîÜùÉ'Ÿ|ùå—9räÀâħUK×;iÒ$#À— ±£÷ÝwŸ¹ÄŠûÌ7™/½ôR“&MV¬XñÌ3Ï´hÑâ†n0ù?ß{ï=°DBØ£N‰‰€ˆ€D à"óþí·ß.Y²ÄÑz¼ÕN:µiÓ¦_¿~»ví2wñ#‡:{öìG}ô©§žÚ½{÷¿þõ/ü×=z>|ØÈìÙ³‡Ë»ï¾»sçÎ7n$å:tX¾|¹£ syõêÕÓ§O›*2eÊ”={vò÷ïßß±cÇFaÏ;g$Ÿ{î¹yóæá÷éÓ‡ÃW_}eòÙpH{˜ø,EÕ›6m2’”]½z5i»*s+rŸ2d¸å–[à¼uëVG-4øfÀ‹-lÞ¼ùG}d$™u­Y³†´£Á‡"ÀpÇw0É€I`aG¥ºˆEÁY÷¦M›æÏŸôèјX{o1´íڵÎþðÖ±9xð Fë^©R¥;vôíÛwîܹåË—_·nÝ¢E‹(~áÂ…^½z  VmàÀï³gÏîÛ·Ï2ÒöZH—+WŽ6`Ëù.?Ëæî!C0]Ÿþùùóç Ú›Ì`±gÌhwM>f¾téÒY²dñYŠª [h!i»*sËþ¹råÊÏþûç6ÉvI/iÌœ9“®U®\Ù!O3Fމ9gÎDl gÏž=öŸIIIf  ”½Á¨‚@áÂ…QË‹é×æÍ›Œ[ØQ£.E@D@b”@pÖ=W®\Ï>û,îïØ±cíÆ5dý»L™2%K–\»v­u‹@ñ°að.3fd0|øpÜJîâ²ó‰í?~ü8>w… jÕªÅ5þ=Æ›I™–GbÀ€Ä ˜a03Àú2 Æš5kž8q‹¸jÕ*KþñÇÿÓŸþÄt„p7ùfÁ›øÁ]wÝ ”UÜž°TÙ3Mš ÁúÿþýôÓOnï9lb ?~üx¼pŸ»Ú·oOªV­š@ºvíÚuêÔa¦uìØ1G-Vƒ·lÙœƒ˜;àP±bEÖ5ü ;òu)" "£‚[w§“õë×Ǩ|ýõ×DMŸq7'NœÈ&;âí¤-EŠ1+ÁXw ?EðÑ­»GŽ!=uêTó£zÜÅGÀ.c ÛìY«Q£F÷îÝ1„Õ«WÇse{ K²`Á‚&] @*UªÌŸ?ŸR`fË–-óWÊ*nOXªì™&ݺukÇ®:·ŒÇæ(!Ê–-‹ñöY„™ŠÉ‘ùAÀú”´ÌCaNf͈¨w±„ùºˆQA[wú‰§Îú.!wÓç… NŸ>ý¯ý+ÛÇ÷È¢P¡BHbñÅ=±Ä¶SÝâÅ‹ñG±Ó#FŒ0Ú,G‚>+¦È6‘mÿþJ1A¡,wMàÚ¡'¢—üãÝùÖÈ„àÌ™3ÖÏ5aÊ•B*." "å|{~%ÒkÉ+È·ï¾ûŽ_‚ÞÖÒµ%ã3Û£ÏtxÕ¸˜K—.e§Ÿ,³oÜgöÓñ•3naƒÙþ†§Ž3ZªT)bÚ¦RdžK mvíÍš5‹°<™þJ/^œ86] þïO•¥3&¬z°èÎTŒx>ØôаaØh¹)" "2P¬;•±Ëijå Ö“ÇŒÃ~:‚ö¬…³…ÞKƒrçÎÍV;ÜèÁƒ³AlÔ¨QøÖ8šlÁãÓ§,:Û÷¨Çè4«ø,ç³?ŽÍí8ålÚ÷÷m=¦ä A³/ÍþJÝÿý|Ÿýl\¿îºë|¶!¶2Yï4hk÷Üs_XxðÁëÖ­[]PkE@D@‚%á•¡IœÁ·NöYj=uê”Yqgw?Þ¦tïMÁKÆT³< ?®kN‘ákî¸øø£æëpVêeŸŸ‚±r¼$Ü¥˜`ûƒj¿—ŠÒ\† ŒL¤èZš·D @Ÿaã1…8lÉÚåPÖÝ}¶ÉÚLg~ÉΧŒ¿Lœx·ÜùØ'BñîüêE‰»”cÒà®(FsØZ£-W³E@D@‚%bd>Øj$/" " "jÂæ»§B‹Ùøíýð»Thªè$3ÖÍ|ÃÛ,½G'JµJD@D@¢„@ÌXwxá»G 55CD@D@¢™€ÖÝ£ùé¨m" " " Y÷P¨©Œˆ€ˆ€D3Y÷h~:j›ˆ€ˆ€„B@Ö=j*#" " ÑL –vÕ…£9f-ìj¥PD@D@Ò–€|÷´å¯ÚE@D@D ü‚¶î5vìØ±½{÷¦þ©áï½4Š€ˆ€ˆ@<"2ÿ믿r Ü'Ÿ|‚]çˆtÎ`Í“'—Qˆ…ÓÙ3g¢kQØ5ID@D@B&„ äŒW΋ãtTNkåÜ—={öpTkÈG®àóÏ?äÈ&"‘«BšE@D@D š xµîº:wî\g{öÙg9­•.•ùýÏô»cǎݸq#g¿6lذ}ûöæU mñâÅo¾ùæiÓ¦qÀkïÞ½7lØ@ºH‘"/¾ø"Ÿ÷"ÃLbôèÑÛ¶m+Z´(ò+V49áíÎ;ïœ0aõ’ÓM7MŸ>1â :tèÑ£G¥J•h–~ݺuÈа&Mš,Y²dâĉ;wæHxÓ~}Š€ˆ€ˆ@<ðºî¾k×.VÜ«V­jL»û^½zmÞ¼ùé§Ÿ®]»öŒ3’’’ŒÀÁƒ—/_>{öl¬,Ž~ß¾}™"”/_[»hÑ"2¸Žþ“'OöéÓ‡Úˆñ¦,ÊÑ3yòä*Uªlݺ•zɬU«&?!!ë^¬X1rÞzë-v 4snrΞ=»oß¾sçΙèSD@D@⌀WßÝüÆ{¶lÙÜýÇ~=z´eË–Íš5kÚ´é‚ 0ç]ºtamá9r 6ŒCÙ.\ÈçðáÃ1«‹/Æ·T–AÿñãÇÑ_¡BŒ7®ÿîÝ» Pc?dÈüùóãŽcàÉ)]º4¦ýÊ•+õêÕã’ eO:uàÀÆ›&ÑH<~÷4Åj" " "Ó¼úî… ¦Ÿ«V­r÷öСCd–-[–OL&v÷Ò¥KØT#Iøã5kV,kÉ’%I!w( ,Ã":òS§N}øá‡Ùćüx£¡P¡B˜vÒT!w¨å’ö±gQ`èС]»vݾ}»É¤1²în\ʈ^}wŒ7»ÐYÒæëp ´wÞØWœc“yøðal'Ûéí2)IcÂ)ÞºuëN:yÔc·ô,°ðÿé§Ÿ2?5j{=*‘˜ˆ€ˆ€Ä(¯¾;ý/ù |íµ×þóŸÿŠgáüÍ7ßdQ¼Zµj¸ãK—.emžð;®öí·ßއ."Õ«WOLLd»þüùó™:P›ø(/W®ëëׯgCÍc¥Ÿµ€{ï½—}þí)ˆ†§žzjÅŠ”è–ˆ€ˆ€Ä.¯¾;=|òÉ'1ì?饗¸ÄRâÐßæ÷\_}õÕ#Fà[sY£F ‚áa$B¥lÇ{ã7ŒZª{ùå—K”(ᯊV­ZmÙ²¥Ûïõë×ÿý÷i »ñÆÙjG©3gΰÅO”/" " 1M Ã+C“zvl 8Í=ôÙU‡Ao¼s>Y,w,]Ÿ8q“F¯ÝѪӧOS#‹èŽ|Ÿ—4˜Íó¦…8ñ/^d–àÔïÌ;€èRD@D ú |øá‡v»ì³ÁAøî¦<öÒ|OÝ­kêÎ cŽÛ<Pn·ÜL8"7çÐÝ4!àuÝ=M§JE@D@D@B àÉw'‚jHÉ[w‚ûiÒ2U*" " "ä­»µŸ.´ TJD@D@D • hÝ=•«:ˆ8Y÷ˆ#V" " "ÊdÝS¸ªˆu8bU " " ©L@Ö=•«:ˆ8Y÷ˆ#V" " "ÊdÝS¸ªˆƒuçDŽd=uêTJ»víÚ7¦DƒÊŠ€ˆ€ˆ€ÉÿšM`RS¦Lùâ‹/Nžø Y³f]»v=~üø¡C‡öK}çèXއ7™ŽËqãÆĕ@‚½F¥E@D@D }H‘u?|ø0.;?UkŽ{·N†Ý³gÏèÑ£·mÛV´hQ¬xÅŠ§OŸÎ%Â:tèÑ£Çúõëí—•*Uêß¿?Èöë×Ç@ÒwÞyç„ ræÌÉåM7ÝDþ–-[Þxã ¦5b2Á‘íC† !Ÿ>“†uëÖ!ܾ}û&Mš¤Ïg©^‹€ˆ€ˆ€!"wù¶Ûn+^¼ø²eËðݱÖFã… zõêE¬¾OŸ>?pà@Œz­Zµ0Ø X÷bÅŠ9.)xðàAæ FiLõäÉ“«T©²uëÖ3f˜üÁƒ#Ó©S'ÂûË—/GÌä¿õÖ[{÷î4hPçÎQn2õ)" " é–€Wß}Μ9FÍ›7ÇÊŽ3†%óÕ«WãawïÞ¿»‹cݲeË *`ŧM›¶{÷î2eÊ`Ú¯\¹R¯^=ôäË—Ï~éÐÌ%ÓürVâ—,Y‚'»ÎB«-Z´à’Zà“êØÓwàÀÆ[á}wƒÖŸˆ€ˆ€Ä4nõrº›Wë ÇQ°F{îܹq©gÍš5~üøaÆU«VÈ9ÂS§N5§ÂgÍš?>X”… ´S*GޯНY³†Kf U̘X±:t(ÍèÖ­[¹råq´ÖQJ—" " "sŒaõÒì ¬;ê|ΰ¯­[·Þ±cÇܹsYPÇ0#I!tG Œ¶2—V¾ÏD©R¥ÈÇAçóÌגּÉÚµkß|óÍŸ~ú)SŠQ£FN ßgS¼>E@D@D ¾ ¤hÝ}Æ ³gÏf«ü¾}ûØÚ†™/Y²dõêÕ ŒÏŸ?ŸpúÒ¥K‰¨—‹‹ùÿõ×_Ý—ÉR._¾|®\¹˜@°Êκ>ߦ£:J±ÌOæ¹sçî½÷^ ü“U%ˆo)²îuBâíÚµ{òÉ'³eËöÜsÏ•.]Û·o_öбì±Çp¦úé' ¶jÕªD‰Dοþúk÷e²”YPG?ó6ñµiÓ†êˆùSêÒ¥Kï¿ÿ>Ýwß}l©c×^²ª$ " " ñM Ã+C“zvl›l'ñÅ}®äãˆ=z” 9åJNŸ>{ÃmÏÇ}Çð·›|Ç¥]Ò&@Ø?S¦L?þø#;øêׯÿꫯ1šÁä˜X¸K)GD@D@⃀?[ìî]pëîîò8Ðxäî|r|ÚZÇ$ÀqéS•IH€oÁ±ÛŽÕw¾‰gwÓi–¤" " "ž ¤Ôº§&;öä³wϯߘMv©Y»êX!KÖ`¿ŸÃ_¬ÀU;E@D@D M¤hW]š´X•Š€ˆ€ˆ€& ë˜îŠ€ˆ€ˆ@ìu½g¦‹€ˆ€ˆ@`²îù讈€ˆ€Ä(ÝU7|Âÿž {D#Ób/¿I™š¥5õhØ;XkØ;€„|©¡å@—†V”ZwžÄÀ?Sïx<éç’ßüá‡øL?]N·=Õ°·½†½…", - c:ZŠÌ[ObhÓ»ât2´dÝÓû@WÿE@D@â@lXwŽ€ûùçŸÝô9žŽ[î|òH*¾íÆ• 9œôý‘«èÊ•+/Ä™FcÇŽ=v옗Š"Ú¤>úÈû1Ì^Z+™tH`íÚµœ½öŽs€ù<€Ûß5ìmÂT âº{Û¶mOœ8Aû8«ß™ïÒ¥Ë-·Üâ½¹œßš9³§ª¯^½ú·¿ýíäÉ“œôŠ~ÞÝÔH#ÍA2œ÷ÊÑ2wÝu—õ›óþä9§nøðá?ÃI²ØïMfIó7nÜ»woÓÎ?þøwÞá°ÝqãÆEUË¿øâ à”ÞµŠƒ†û÷ïÏHàÔ"βjáð@Fˆui%&MšÑ&q22oO^²j *1kÖ¬×_ÝÀ‘K‹- ªx| ÇаOáƒ0`ÿk’’’R¨Ç^|РAÌ (°k×®Ž;Þ}÷Ýæ®¿7ª½¬Ò±EÀ“‰õ٥… ó>]½zõÛo¿=yòä#Føsg>ÿüóGŽÁ¹qßrç|óÍ7L8Ó[˜sŽr7à ]¥J΄ÅMç{µjÕn½õVdüÉsŠÝ3Ï<³páÂ5kÖ¸k‰éœï¿ÿž#òŒ% ƒ1Ý—¿dÉÊvîÜ9GŽv%œMÀø!‡—Ú¶mÛ«fvÈ赋Eaš™Šub6/Í›”†=stN¾/j<£sþüù£G¶¬»¿7jxk—¶Ô$ºuÏ’%Ë ¿ÿMŸ>}Ó¦M8Íœï‚oÍÄSÚ°aÃöíÛ#Cg0çœúZ§N&õêÕã%‹0Þv=˜0Nœ8‘—r­Zµ|v›¸~ýz™eÓ8GÃÝ|ó͈áÇõÕW|ðiÜ÷F}þùçÆºû”7b×_½Ï*b:“'À|ÕªUµk×Þÿû_Á‚­˜Û›o¾Éã R œvíÚ!¼uëÖÁƒs ÏõN:17²C0ÏëÎ;ïœ0a’Ë›nº fú$^zé%ÒL•®»îº×^{4ÙÇ£™6m®3:7lØ@ºH‘"/¾ø"Ÿ–rÎ.ä©áŒ>ýôÓŒò÷ìÙÃ+†!Q´hQôT¬XÑ(´ 3ȲeËZè¢{Œ½÷Þ{ß}÷2´ªnݺO>ù¤%oÕnŒ:íÌž=»u—ÓG7M÷Íp¥v‚LîºÁ¢ ¶#GŽdæÊà¿té’â0—]·n0ùOѤI* <ìí-TÚM ÃÞþøâ6 2„ªý {ŸC7(a{¿Üƒ„» ?þ#ôë×÷$ÿaíòTÄu·!Ù¡eMΗ.]Úè ðFµWªtlHÑįgš‘G(˜t¯^½6oÞÌ‹K3cÆ + „ÕgiêÔ©X‘š5k2^1ÉX÷bÅŠ={–AæsíÜpäEYµjÕGy7·v™2eÈÇØSÅ ys+.?kÔ¨Ý2‘Ûo¿ý–IÖ ói:›)S&ŒzŸ>}~øá,Á<ó_+Ë[€„0xdx^˜"¦bDGxåñ(O ò& ‹VzùòåÄ¢™4pˆõ2*XA‰=¤ŒÙC†ê˜mŒ5в¼S3¼Ii!m8p Ó>òí‹hjá“…Ï1Æ”³ƒªAƒ–|² ºãv,´ÏºÁR×СC)ûÄO¶o!ò´wï^‚ÌbÍ MvØ£ôÊ+¯ð¤¬¹™ú3"1ìíÉ"ÒÔåsØûºA ÛŸ¦{p—6˜u%þ0¶ùc¥‰÷-«ãLâ}¶ÁËК9s&a!æü¿3mðFµ7RéØ"ºïÎkÓ¦Íùóçg˜^Þï ‘–-[6kÖ¬iÓ¦ ,àUÎz¼™*ò–ä…nNsÇ´³Š72¤ÄG´¬‘›ú± LæÍ›‡Ç3/Ö3gÎ i9a˜7“C¦Oy·Ú¸Éo:¢”8‹„å±åÛ·o·z×µkWÒ¼J–,ÉËäóPV®\‰—É‹€wŠOød⸰æ‡ÁÀ[ ý%ˆ‡çÑÐ>ÊE‘±œIDATÙâÀŒmñâÅøVdxÒ`ÖÅÜÚ½{÷ñãÇ3*T`^‚»OŽ™ÀÙŒ¥Áß»ñÆóäɃ˜T–|² Ý´jgÂä³…n°LYè~ù=÷ÜC½¬X«Ì'N:Å”Ñkþ;$;ì GñÈÉ6زe á„dû’®Â>ìý=>TŠ>†Oùd…}»*ÖÝÌØæïºgŸ}–iºÏÁ™ìÐB-ejάšw8r¼QíÍP:¶„nÝ 328ðØøÏÆëŒž› */MÞјþ*Tˆ|6qÓî ƒ$ŽLû%«AX/¢Ç÷Ýw_Ïž=ÑöøãcuÁ8q&, †&úM)Ÿòv…ñ—& f>Î4ŸÐ!_ÓGü`Ò~òIó¼L>³±?ÿùÏì`,AŸ@àl c’½øŽÀÍ‚7Ö ³ÄËÈýXiã„êÌ &@PÇl/§oÓŸ† %wý1Ÿ œé¯›VíÌ,Ñàh¡O°f?‡›'°Í KÞËì•ëÖ­2¿ ú€Ãžø.þxXL³ˆ‡™}»“®î†wØû{|þú! 3܃ĭíŸÿü'NNóæÍÍ Òg~YÞ¨¨åuÊç—_~ùòË/ýõ׬Ÿx£º›¡œX!zdž`Q‹-x™W¶V„‹Â‹ÞxTn^ †)EHÙèΞüG}w|^ʘ ¢FÆrø¸ô)oÄâõ“À¾&ßï´›ÕeÓSÜh¶DJaSαÕ}¾ƒëŒµ`B¶sçN+ßKÂìPÃÛ÷¥{)h—aíœK&…[è,› ñ̂śºX¥×ÀçÛ€„šX–"?Ùaoµ“Ý£ÌiLøÔÊTáöþùö>F°ÂÖsô9H¬»$‚òí8ü%æˆx5DÔùB²Ï6$;´¬‘I€k6¬x£Ú›¡tl›u'ðn^ú„}Ø@DÔ×ßb!–˜¯È¢$(DP}XfÕÇ'8âðõûï¿ÿÀ8±àdÄX<¦ ÛL F³XË-òü ¢Åîh~ó„1RŸÕÅh&;¹ ãøÞûËb3†ýtx¼AØéeåKƒ¬q áË0ì‚$@ç±×8ÙH²e'h¬”Ç‚FŒ€ügŸ}Æ×qnLlkÇ<¢Ðlãg»~­µSϧfïcÌgñ2}¶Ð'X^”>ø ¯N¶20_Eì‡ ¬BïXZbnʈ%3Ùa"U?ü0cæaÃø!ô+>Š„qØû{|€ò9ì}Œ`…­§àsXwIà2aÎãË2 Lˆ}¶!Ù¡Å@öK1ºømŒ¿ÿýïÖ‚©¿7ª½JÇ ¯ MòrZ?Íá%BÈ(äÕïÓk·£A¯u¯-~Ø~æSW–uÝ…=¥f¾]3iò±X¹ì3l<4¼Àw÷{ƒL>Ïw‡·˜[Æ{SVøó^Ä!I3hÙ\fÝb±€‘À·é¬œÀ c,°’ îº[è,n=]³¯˜Zˆ¬07åu¸RkØ#ÌØfÑ=Ù"ÆôÝÔöÖãcw*‘­)S¦€†½{`%l@‰½ˆI»Ûà–±†ýbMìï ºÅü½QÝ’1“’¡•æ÷n‹CMûë$æÖß-{¾5g´gúK›U1÷]¨wçû“wKÆ}Ž1ítÓãs Äì±,ø®ÏfkÃ|* \o ïº[è¬ÙZ讋Én²ó]{)æ|¥Ûž£tP|>d5ø{|†½{`%loR°ƒÄ*ënƒuË``¡ÇßÕ­G9ÑO üÖ=úû¬Š€ˆ@/¼ð‚÷¿ôè–¤!èµî¢ÓÉ9}iøøUu´а†'âþ‰§hhU Û ¡•B€1W<üëîáBTè>\•F³žÐÖÝ£¹Gj››€†½ƒ‰†½HÈ—Zt1:´ÒrÝÝA0äËErUP  a¯a!ZµjÃö¸¨í¡&" " é@ëîæçBÓ õWD@D@bŽ€WëΗÝc®oj°ˆ€ˆ€¤O^­»ÖlÒçøP¯E@D@b‘€ÖÝcñ©©Í" " "ˆ€¬{ :º'" " ±H@Ö=ŸšÚ," " Ⱥ¢£{" " "‹dÝcñ©©Í" " "ˆ€¬{ :º'" " ±HÀë7âb±oj³„—@LkÔ³c[;3fØ/c(ݶíÿבj¹š*©I@Ö=5i«®˜'йý#±Ø‡¤÷¦º›‹f2v'%nþʈu(^)7Y2i1+Þž©ú#qI@Ö=.«:)²î‘"+½" a% ëVœRï²dÎï]TÿD@‬{<5kÖlÙ²…S©t‰€„•€¬{XqJY¼¸tùj°]|÷Ý ÿœù)g(_½zõ¶ÛªŒ{;Éh¸|ùræÌÁý ¡H°­ ,¿qãÆ;v\¼x‘ùJÁ‚ï¸ã#O×2f eÞ¸:Ý™@p/—«QAˆ—®gÝ÷íÝ;ñÝ ¾«å Ý{?~üÐÁFC—Î=|øðÌϾðŽ%„"Þ•{‘ÄeǺ—.]ºjÕªçÏŸ?{ö¬)µ`ÁÒ­Zµò¢D2" ©C@Ö=u8«–8!´u?p¿»NÁ‚׿‰¦}°eËfò}è½^¾¹ò-o ºaýÇ~úéÖ*UžèÐñ†2eáõ\—Îyòæ­[¯þ¤‰ê7hä(’ú@Ï;‡Ë~áÂ>sþþG6oÞLX‚Äœ9sªW¯ŽCÏ$`Íš5t9K–,%J”¨\¹²që™dÏž½hÑ¢L2dÈpë­·/^<õ{¡E P0-sÒ;cß6¨r•êyòæ»ö‡k×~·ëèÁ4NôΊeK>|åê•ÄÄ<ÿ[˵?äÏ_0Wb^si/â½öðJ²U¾AƒÛ¶m[·nÝŠ+ðÂqÜíU˜Åxë«|MO=!!1ŠcÚIäΛϓ'OʺÛé)-a$ È|aJUü¸|åZÿ؊׬e›w܉!ÿqÝZ4`ÛIU‹¾™ÿϧ5jÒâýOfßXþ@4ù˜þYÕÙ‹X™á}07Þxãõ×_OŽ;æÐlŒ=Ax“O¯ÝýÝ9#P @Gq]Š€„‹€¬{¸HJOº pù &9ˆׯûjöØ»g÷–M0uEŠ–@C©2åNžøeÃkÏý¶ùüì²dͶì»%‡Ù&ã<2dbA­êìE¬L‰°<lù®]»0Ìì›cÓ: ŽƒÎV;îoÇ›g3ÝÁƒñË÷íÛG”žÕwã¯#g¿{÷n$ù¾eC–¶I‰ˆ€ƒ€"ó º@®\ÅâïÀþ}ÞAìúõ7”}¢óóEK–FÉŸšµÚ¹mK¿ÞÏwèÒ½fóþýÙ{oº¡\ùª5ë|óÕ¿&¼5ò©z›j¬íEîhzW“(F}åÊ•FY¾|ùø^œ‰À³ÊÎ&»o¾ù†•øn¸¡víÚˆ}õÕWH)R1«~ ÿöíÛ&Ážy+_ °u;R)Œg–­õØÉºw4«Y÷ŽãÇŽ$äÌ•˜'¥Œ†²å+½>æ½S'ɘÃÿÿF$9}*Wîß¶˜µy¨}Žœ9ýÞ'–< {‘`›Añ”ÿa¹ ÈãŽc›íËí| ®yóæ¸ï&÷ý®»îâoØCgyí¦vÖÝ›4i‚$±zzò&Iƒˆ€?²îþÈ(_|0s7ügeÈ”¹`áß¾Øí.›+Ïïvú·x@ö„\F G®ßl¼[ØÔ`/brRókm¢ñîJíöž»îµv«ˆCÒÊWBD ŒdÝÃSªâŸ@š8ÍñµfÍšúµÚøx”êELu‰Ç¤FF ËA®»GK»£ ¬ÁGA+ÔH/dÝÓË“V?ÃB@¾{X0J‰ˆ@¤ ȺGš°ôÇ+Až"WWgD@b‡€¬{ì<+µ4 (2AMHž€¬{òŒ$!¯ÿý¹•ŽõÄŒ3b½ j¿ˆ€?²îþÈ(_œzvlëÌŠÙë¶mã§/1ûÔpˆ ýmáJµˆ€ˆ€¤ Y÷4Á®JE@D@D ‚dÝ#WªE@D@D MȺ§ vU*" " $ ëA¸R-" " iB@Ö=M°«Rˆ Y÷•jH²îi‚]•Š€ˆ€ˆ@ ȺG®T‹€ˆ€ˆ@šuOìªTD@D@"H@Ö=‚p¥ZD@D@Ò„€¬{š`W¥" " ");wî”u\éÔ'€iŸ3gŽÎˆK}òªQD@D@"B`ÇŽsçÎ}â‰'dÝ#ÂWJE@D@D • lÛ¶mÞ¼y˜ö„„EæS¾ªð°›v$ÇsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 75@ IDATxÚìÝ_lcY~à÷ß=Ûƒt0ó"½‰²™…X¸ r`Å20jŠŒqͶ„NaÐòa{„†HH7–feŸ’ºC`:!áÒ0¸YnîÔ6(O îM›K ˜Ž€"·a`±¦§¨7éefç{ÎÍÃ¥(ŠÿDý«ÒŸï|PÞ{î9ç²x~÷wI€«1Däè舗399©pEÄ€xO€ûO¸n- …B™šëvþ‡;%g7n½ÏºµLøÄÀ½Nw{Ë-¼QGãõ€;O ÝG9ùíÃÞÒúó­ý3µµ ‰HÊéÞ+¹˜8ûŽ¿%¸…ÞºÜnÜóÚÒzÐ0:ɉí|±;:qÝÚó\C”²ìÒFÐðJ²‹Õ×ýcnùfFp£RÙà%@®á¢;h=;;«•rªõ®Òý݆èÙÙY­ÏnlͺçãNÒWí€-ÞSv£¡– Ü.IZƒŸê¿ŸÒ¹MÓýT÷!ÜV! …B™—úå°#ííÞ~6SëïB§~^‹€OˆÌÄbQ)æ·['3kýyn_©h,6Óu5?ëÎÅø[ŽPÍ.¦œv_”ÚߊE25·3ÙwžêOdWznÓtkn¯Eb[ûJ]îÐn«°¶’ë쮜T'¤¿~n¿KÝï<ŠÏsݽåeŸ¸­B¾(ÚŒ? Èóî­ÖŸÅV¶öTÄ‘Ùx~sÙ7¸¾±·)§XŒ¦wÚ÷_¼¢˜ß~Xš’zµ(Z¬Î³ÝêÙ¤£”ž?{ºäëzÖ‹j”r¶¶Dëö¾®[ûë‹Úg^˜åuÇ­e")GŠÕÚz êçµxPù ™š[0•ÚÏ=¯w’æÂÜToâÁ·¼Y)—˶¥Ed+Ö;à¢[Ô3%­Îj-æ+‘i¿)J9©H¤'7ີjQ´ž]M &ÎÔ<6r²qè“ú­ØÒ”ˆH`ÞÒZä yxú¸Çñ„L-Å,­¥˜/Ô ùîYsàF¥\.çã³JíçìÓ»$WÙrdãü]·]|KOŸÅgµˆ('5èè3þ©á±ÂÓ¡¡Æ¹‡î$0R‘H8ŽDRŽR݇»LýܧxâdÑÃþVjk_)sõѹÙí¤6¸ü–‡Ûygô‚ƒÃ战þé³ÉRɶ´VÊI®uG*gWuöÐ"¢õl<_*Ÿ¨ _‘ Àƒ‹'¤“Û—ÁÉ ×­eÎÞ³hÇ]sí˜[v>Kâ}beWz>E¢”“ÌÖ;µe½%3þžKîï¤;‘J'$Ê­\~èˆCŸÖÿ¼Îë p¿½uù]§æÌÜþ¾Ht~È5wc+Ù:[ ÌðÛòÐoŠìK{¡¦ˆÖæê³Xs%Ùè™×TØ9äµ¶Òëö¿˜<“ÏPJ¬vƒëi«˜tT§úözˆÀ…BŠ!‡n‡\ÅÜ~×—¨€;žŸ¨WfN.÷Û÷*ÁAÏ×wÚ :S©]jcÕ˜[†o)µÚÉFhm¥wžö¯ÓЖ]*å;5Œ^ä8ÏwÜè‹}h÷üÔˈp¯"rttÔSš …:×ôýô&xP&''ÏY?¡gã©áÜaù €1ŸŸ8ñ žÄ€xO\ÍàïÛþüóÏ0Ð7¿ùÍãããóã oSÆ ôøôÓOû GýXOèñú}üÉgœ6nßo`ù[·¼ÝO>ú€“Àmp||<111ð)Öc€±Œ¸o@<®ŠxÜd<ẵL(”©¹gK25×}ííÜ{òΓ½öïÄ>ýñ™gÚOµÿ@Wá™M‡?Û¬ëmöuÕ À­sþzÌb2;¿³4ŒÛÓè}þW?þæ7Í›±_D–EDäǟƾ-ßÿ¢>7p§ÑÏÞ¹Ç_Ìñ"<èüD{ å$×¶[gs^ê"|ÂËax…¡P¦VËxå‰BËm¡P(”(´Ü“}[…D(‡B™šëžî5nÚcyù7?ÿ«v†bï…,/·Ëÿáï~´üîÐé{à³Ýiƒ³)„½'íLFw2¤Sxºå?½ÓU²÷ä'{?þ4öÎ;ï¼óäÿ§ÎÞz+!«¸ñDÔ¶-µ¿µ’­w—Fp£R)—Ë¥||Vëb2Û‰”r’Õy¯|+¶hKêÙª)œÝJêÙ•\ÃŒÛqSŠÉ³ÕŽéÝwOнòî»§É€¿ø­³sõ™TÁ¨g{¾ýâÝz½^¯×¿x"ÛsúÞ“oËS¯ð‹Çsí¢?ø»øÝ%"…o?–'_|ñÅÿ»óë”ú¸]Ã÷åÛ§ÁÃi%ä7÷!?!õ||V9©î…§¦ü3g ´¶Òë¯\k+ýtiÊÛ¦Ñ|%⺵jQDfüÿŒˆ4%°Q©T*¸¥2×(ö^È™”ï}3ÿÅyüÎà°aô³gS ßïÌã¿ö»¿÷·/öDD~ý7~«ðâLº`ïE¡?ç±üý|û^Ìuþø¯>—ßøõv§–O«V w4ž™ZJÅgu1¹¶}xZèÝȈDRŽºð‡D”rRÞŽæ«Ë4Û (zÉNÔðEüïþ`pÐ0úÙþáï~ÔÙ÷ûòíwÀ•oBtêü‡¿ûÑþ·?ônƒ¬x=îqzœ_û§¿Ùsd„užÞùàîºÀïw¾å§éæbò$¼HG”“\<0MQûNrQ¾[þqêñ-oÚÍPj+Þ­­1÷êŸË¿™Ü&ýôÓž arrò­Ûßú'ï¼Sßúè/òÜNw žxüÅ9QO\Úñññˆ_GÄçøðý÷&&&ÚK(ñÄå¼ñ5¡à\Š!Ä€xO€î­‡Ö቉ Î:׋ü žoÚù÷;\·–]L:í_æœ]}ötÙg0p ãœü„Û*¬-&‹µK¥r¹¼³“;[sÝ[Õ×­eB¡P(sÛñ„ˆHýyn_©hz=h"b¾åÍ ïo©eBáp8‡2µÞ©½–ñžJZn«…B¡D¡å޹ˆ¸n«…ÃáN ÐÙ±PH„ÃaoãNúD)'¹ØŽu¼ÚÚm e^ê—¼™xÂukÕ¢hmÍ<Û*$R޲ìRɶ”“JZ§•*'Y/åã³ZïoÅmI=[5¥‘³·['3ú¹ÛÔ³+¹†·ã¦“Ùzwå»’*åã¦4rÏë†\ßI[Zkm¥wÖƒ†áºµìJ®q’S©TN ðòÃCÖÞn£jæ-­»{XAk+½)ÿŒ÷÷Ó¥©)ÿŒˆ4š¯Nj½ÊˆÌøþ9hvW[šòv”buXÊA)'¹ÖM #¸Q©Xp»â ‘WÍÆÙ‚®XáÚ§œT$å(u¡Ê #¸þluVkµ¿‹D25îqðæâ ÃÎGE)§ZïrÚož-0ýÓ×Ù°i¿)Z[—»gaø–7+ÛÒ"RLfY6À‹'D$ðhuVëbr­³L²–ÉÔ\×0|s f;Ô¨W¥Ì…9ßõÝMèÔŸß>3ø9hžÝ6°ž¶´Óïã ܤ·Î½ÐºãÏ.&·b‘-±ìÒ†aˆˆoyÓn†R©ˆ#¢-{sÙw½-k׿ o‰·Ö20<øXJ­î®ä¶b‘œ¶¾[þ¿ÿqû 3Ä\M-ùŒ:g€›cˆÈÑÑQOéçŸþÍo~óøøøþu˜ßïà*>ýôÓž arr’ïÛWE<®jèú‰O?ý”Ñã¼~‚E`„žõo»Àh¬ŸÄ€xO€‡î­s·øø“ÏÆ©èÃ÷ßc4 žê;ßZ½ÁŸüé3†€k¬û_}û­Ñžíݳ¿çé^ùç=/ZC÷öîíþqÑkiž[Ë„Ãáp8 e^ê—w¥ï€‡•ŸøÚÛ_y³­4ŒàF¥²ñÚ÷½¡"»˜,J4½³4Œ«7ÏukÙdQŸT("_?©(p‹ò?ùù—£›ÿZ…D(Ô¹ž>Éa´ ‰Pwɹù†B!‡C¡D¡åvo‡×ò#Ã*9ݸ–éìRËœ´6S½ûÀŽt×ùî»É?^L:J)å$³ý)„ã0pĺ£¯ÂT$Ò“ŸèÆQƒ ÀÍÆ?ýù—£»˜^É5$j—Jår¹RÙð.©ëÙ•\ÃŒÛqSŠÉlýüv+gWR¥|Ü”Fîy{ûz6é(eÙ¥ÔÂX÷*±-¥ö;•xåÉê¼×¶V!‘r”e—J¶¥œT¢Ð½û°Žxu¾x‘þîNÚÒZk«“NèÖ¿û°ëd_ÖO*´K¥žgÏ­€×OüâËÑ U9ɵí–{šW¨EdÆðψÈA³uÞÕ³ÖVliJ¦ü3"R¬Ö\×u[ÍÑzÖ?-íòó´+ Ì[Z{•tÊÓëï‚~o·¡µ5o³Æî^«k³žÝGt¤Sçè`kØî=#v —d®3žøå—zôcüãFpýÙê¬Öj+‰djnw‘Ф¥¤Ñ|u™¾¼j6DdÆ?uããÕÙeŒ¶]±#=»1¹rå\‹±ÖcþãE"†óC ßòfe¹– ¥ULfçwÖ2í7E7ßxMLÿô€Òi¿)Ò8w³Nù€Ž\$ 0xúGìR£t ðóÿø+=úÑŸ„˜ŠRN~ûPD¤^u”’è|÷4XO[Z{Ó°aøæÌÓí/¦œ´Zo/¤èÙ`ÐẪæáIófü¾¾Y¶Ó°j½½™¹0×µYïîãudÚožì;äpwï±KÏ5 2—ÏOüòâù‰àF%ïOĶbá-mÙ• t}AD´˜«©%ozö-oÚÍPj+Þ’akÏx´:[Ì9©ˆØi«˜,Ž±Ë®½¸µ¯F,nh7,qD´eo.ûFïÞß‘@ß¼¾”ZÝ]ÉmÅ"9m}·ü;wf÷úÀ»„kd\µŠÈÑÑш->þä³ß‹þáèZ>/þðF¿o»ý æê³§—ŸMTØõ ¯swî“ÉÉɱòŸø¦šØÉg\ñÒÜœóó#LNNò{åઈ'ñ žÄ€x€xOâ ð°½ÅÜuòƒxú´‹xâ>xòÑ àõ8>>ž˜˜8>>î.ä~¸€yqâ pUÄàfâ ×­eB¡P(SsÝa{ŽØæÜÝGoà=‡Ãáp(”(´Ü[2XÝ ;iÞ¨!àAÇã0ŒàF¥R©l £'>è~êÂsv«°¶˜,JÔ.•ÊåòÎNJìì%æìqB¢Ëí¨µåµ­\.ßÇK·€ûOt&ÂB!Ñ0蔿Ô/³‹IG)¥œäb¶æºÝsgÏ5}¦vÎlZžÛW*š^÷æiÃð-ožÎÙµÌIÞ"SÑ<×­õ4ID\·UH„:I…Î?;Mjï~;ó¿öíx¡¤Ew;­}÷ÝäªvDwjµÌ»ïþ/™DètÀk¯s¼jw5?¡”³+©R>nJ#÷¼Þ“¨XßI[Zkm¥wÖ{®×½\E¹\.åã³Z“ÙÑ÷PªEÑÚš x¶UH¤eÙ¥’m)'•(´†5o`“êÙ•\ÃŒÛqSŠÉlÝ0|KOÓ–ÖÅäZ¡åºµÌJ3öâûÿóð¾ŒÈÓôw°UH$‹f<_*—Ë/^¤¿ÛWíèî$«ó/^ü«G ¦RûÍW""‡ÍsaÎwñ”·%žÐÚŠ-MÉ”FDŠÕË$í½}/Ëu[{»v¨˜·´nìîu.ÖÏmž©ˆÌøþ9h¶\×0‚ëÏVMilÅ"‹yÿ³õÀ˜¡U*°x¢«ƒ^kEfüS—ìNz= "Ss ³Z«uyÕ”…¹)^²€[èu|Ÿ•Û*¬­äö•¥D_ºšWÍÆÙ‚Fó•È…&X¥œTÄ¥¼}}"†o9µºÛÚÿÒ¿?u1¨ƒ}­½\w¦æÌ\ã Ùr§›C£îF~â*y…m;×3ž·-}N4aÁù¨(åTëýONûͳ¦ú ™ö›§K);ë(O ÒÈÙ—û ÉöµöRÝ1 ßÜ‚)æ«Ã½Ý™ù 7;÷:žðfǃæá° ñq¯­VgOÖ4x%µL¦æºÞÌÚ5êUG©ó2 gšÔÙ=¿}¦‰õìJ3¶Ó^x±â-}Ñ—™†3lÇg*Üžs»35·`J±ú¼93àõ ¸Ïñ„aø–Rí…=« #¸žŽ*å$ó¦œû¹ ÷üt'•ÆV,â}ö¡:ß¾¹à[Þ´-í¤"‘”£-{sÙw¡&y»ïoż¥/õ«B"TßÙ†où©×ȵíC™Ö—a9•ô-o¦£í^„B™z_µãvÇ (ŠB8¸µ 9::b n-oqF#š®lnðñ'Ÿñ{`€×æñ÷~ð䣺lrr’ïÛ¾ÝÁ„ÛÚ¶sûJEÉNn1~¯üV3 ßòfe™Oà¦üõX^Ó°°~â˜`¯ùR¶ó÷ää$ù‰ûvRxýX ˆ'ñ žë1{ñÁKFûðý÷ˆ'ÎÇ×W0ÌñññÄÄDÏG ¹ß.``"Ÿx\ñ¸™xÂuk™P(Ü%Ss¯r¯ÂP(SsÝqÊ/Qg÷?‡µÿ*‡‹'ädpë≓¥NµÞ^caž,•ð Çqf'NŽz{!EO…cÎýzÚÛŸ]çÑ1µ”ŠÏêFÎö–ˆ€[•Ÿßò¦mi'‰¤mٛ˾ö>·0«u{…ĤÁ¬ÖN*RO[Z÷T¸¿ëþˆÇÁJ>>ëmﵡ„aø–bQ¥ösövËu¥}K%ÒþXJ(Ë€+2Däèèˆèøø“Ïø=0†yü½<ùèƒîß›œœäû¶ÀUO€«z‹!èw||<ðÇXÀ@¬Ÿ`bb‚A`ôµwçïÉÉIòçŒ8ë'ñ žÄà¡c=æ-‡Tw‡ï¿G>«u1™­¹î8MÝŒduþÅ‹õhÁTj¿ùJDä°y`.ÌLîy<1ò"¾µ·Ûh‡yKëÆî^Ëu½gµ¶bKS2埑bµ6¼Ü YDfüÿŒˆ4[®ëU.2㟺©–œé¼rR‘H8…2g6ðöê:ʈ&ÛŒôz@D¦æfµ.Vë"òª) sS¼ø÷Æ%¾ÏêU³q¶ Ñ|%r¹éQ)'qD©“Jú*¿É–ô§=¼U#ûJ‰R¢‡år͘š[0sƒfËnŒ0p·ó†œŠRNuÀ‚i¿y¶ÀôO_æÐÓ~S´¶ìR©\.W*AÃPùy5\GKN3 Ûv®!fþä³ï|k¥§Ð+ùøOŸ˜J½ç÷äù¢ãp•yóöLjWiɨõZ[v©T.—K%;*ÅäâZ¡å^´e™P(ÊÔ\WD #¸Q©T*måuÕwÅöÚJ®aÆó¥r¹¼³“;뽞ûyu_}û­¯¾ýÖï/þnçᕜ³[ýùÖ¾RÊ©Ö/Ù°KtäÚûÞ?ýqæÍr¹üÐ&©±ÖcFp=Uj?÷¼Þ‰C ‰P8î>‹n«…Âá°WþR¿ô‚5¥œäb¶æºÝ'¾ów¡‡Ã¡P V¼òð‰LÍí}ëñ]Ëœ7Sëy‘õÔwB³!"3þ)ïMØ·¼ÙžœzÞ~G¿CŽó®ÛsQþ䣾ööW¾1?×]þù¹¯½ý•'}0ìC­®ÛÚÎÄíø¬ÖÅüvkPÃzwoÊèžÎµÌ»ï&ÿøúú>p>FŒÃÀp§§ ½ÓV×\ÖÜ^Ѽžgˆ¼òD¡åíÛ3Õž; çú+Å""yKk)V½ëÙ•\ÃŒÛqSŠÉl½$YÉ5$ê…f•ÊÆ×Õ××wÒ–Ö#r>J9»’*åã¦4¼`ÅË=”ËåR>>«u1™­K`t=­B"å(Ë.•lK9©D¡5¢~¸棢”ÓŸîyû5Œà¹ï´Þum«û±ÛO~þåO~þåøåäDn&¶˜[0E»{‡2ºaãLýÓAgJSÊIVç_¼H÷ZûÞßßa1Oâ°.´ ‰d±|ê¤1FOXý#6Îyåû[±E[RÏVMiäìíV×6£¤®¿Žxâl¯ªE™ñü3"rÐìn\rí´­çÒÚŠ-MÉ”F¤¬´y…ç7¦µ·ÛÐÚš´ƒžÆî^§£ê€[,¸Q±-­ÔþV,Ò¹:ñö{±wݳ—ˆÝ~úó/:h¾VÞIN¬> †onÁTjwïpœÆŒ;eôMZ[éõÀE‡ôܾ÷÷wØcDR‘È€ ú®.xÓV'ù4Ö„xîˆ ¢)ÿŒ÷÷Ó¥)o›FóÕxrÑÛ?ßaú§ÏŒš#JyóÁõg«+¹ýý­Xd˲KÁKÞ7r[…µ•ܾR¢”ès7Õlœ-h4_‰LñnàuoU6#¶ IDAT¦“\ó?{º45èí÷zßî~ú‹//Tî%'¶ö÷%Ùê¼ ïîµ––¦F^¸3e\p:xãpnÈÒ“)Ô…¾ik¼TÇÀ»é!êë¯!?Q¯:JÉŒßg"Ó~ótÕI'Wcø–7+ÛÒ"Òu¹`ò£µmçbÆó¶¥Ç›i¿94è€;Í0|KOÓ–Ö'—•ƒß~/©ïÝòÃ÷ßû×ÿöÏþó/¾ü7Û;Ýåÿf{ç?ÿâËýoÿlÐçZÛù/u_.—K¥||V{·<ÎéÚySÆÅ§ƒ+õ}à8 | ‡‹Ìh}ÓÖ˜/†¾»Î!0 {±©ñF¤–M;ù¥“Œ–“ßðz ¬§-­OZæÚAópü>½ê^…tvôÔÓiLµÞzÌ…9ŸûpÇe…vzÙ»œ3ýÓCß~ϼCFp>Úþg={æŒ"'›¹Dìõ³_þêg¿üÕÿñÿeçá• KNäfbϲž½åqþ0rÊ8 ¼¤¼¶¾÷Cÿã"§q@¼!ºàÌ8lÄÆ¢F Èè¹þbñDç>P$’*š«Ïºr8¾åMÛÒû[±þU¦‘Hª(æjjÉg†á[J­šÒè¾ÿw~J'UÊI.æLo9R¶.S#êñã¤"‘”£-{sÙÇ;€»n=%öâb8ޤ=ötÉ{»ïûí§ >ž˜˜èùt$÷;À L{O€«"ž7O¸n- …»„B™šë^ýx^Íýµ +RI«4,Qh¹—8âõ¶ÿ54 »ž›;A\s~BkË.•Êår©dG¥˜\\=s¿®ÛÚ^[É5Ìx¾T.—wvRbg_ÛTêýf|¥²4Œ1ˆqv¹œÛy‚ÄC'ÑõtT©ýÜóúÀ åÞ¿k™P(óR¿ì¾†ÎÔÎLuÍíµÙ…NbÐe÷«fCDfüS^Û|Ë›AÃÖªGt[…D(Ô}_Ëœz½èéTÏQ …D§f×­e“ŽRJ9ÉÅìÀƜ֟©õ„ ÝU](Êé>AÜÆxBD$0oi-Åê¹™¥œdu¾RÙøºúúF¥R.—Kùø¬ÖÅäiA)gWR%Û6Ö³+¹†·ã¦“ÙzÏÜ9¥œ ]Ž÷ÑukÙ•\C¢Þ%~'Ð*$’Åvò£SØéTŽ¡§fîï¤-­µ¶Ò;ëýÛ· ‰”£,»T²-夅VoUù¸) GcŸ Þ\<16­­ôzàLÑ”¦o›ØÒÔ°)ÐukÕ¢ˆÌøþ9h¶ÎnܨؖVj+sÝÀ°#*å$×¶;õ»nko·ÑI~ŒêÔx}éÏ»ìí6´¶æí ±»×9z»*o¸ˆ ÷6ž0ýÓÙÜ»¡‰¤uáÀE)'åíØh¾ê{6¸Q)•òñYÝŒÏ0‚ëÏVgµVû[±HäävŒw3åæôÕ?¨w—wÁÀë'êUG)™ñûÆ^T躭m;×3ž·-­/2NûÍÓņÃV2†oéiÚÒúÂSòÉ ßòf¥b[ZDNnÇLûÍÎûê¿®àâ'€×O¸n-›,vrþÞ ‘ƒæ¡Ô³Éṇ3 'Ï:h Ã7·`*åä·6&“(´^ ¦úüV =b`=mi}R‰onÁlo<®þš½ a@%®Uëí]Ì…¹«G='€×lÔïw(å¤"Ž÷·6WŸ=]êÌ|G«f1·‹ÌÆW-+ÚÝûГr’‹¦)jßI.ÊwË¿ã=»k/ní«aS oyÓn†R[±ð–ô,l4Œàzª¹¶¸¸¯”ˆèÙx§a£[ÕsÄÎ1DD‹¹šjWâ[ÞL7C©XdKDk«Óàzj6 ßRjuw%·‹äújhw-qD´eo.û. ?A¼N†ˆ1—Ì ,&‹ø9ŽÛããO>ã÷À×åñ÷~ð䣺lrr’ïÛWÅï•_ž÷Å— €x‚!xŽþ¼,×s-¬Ÿx&&&Àõ^©vþžœœ$?ñàÎ:׎õ˜€xOâ ðÐÝŸõ˜|€×ãÃ÷ß»·ñ„ˆð­ÒÜ´ãã㉉‰žOr¿\ÀÀÄઈ'ÀMÆ®[Ë„Báp8‡B‰BËí†B™šëvÿ}] ê¯?Üåzn6žp[…µÅdQ¢v©T.—wvRbg{ærï6+• a\:h8wc­-¯ ¥’•brqÍ‹lÀm'êÏsûJEÓë^¬`¾åÍÞ¸¡',pÝV!êÎ"t6($‡ëÖ²‹IG)¥œäbvü|ƒa×ÓQ¥ösÏëœ9n{<ẵjQ´¶æ¨«ž]É5̸7¥˜ÌžNùJ9»’*åã¦4rÏë†\ßI[Zkm¥wÖ/–ÛÌ[ZK±Ê]î@~⢼DdÆðψÈA³u2åkmÅ–¦dÊ?#B(ÀýsÍßg¥”“Š8¢”4š¯D¦n¨Õ¦šSÀ-' #8Çqªõõ`p̪¦ý¦èÆ™[ן‰¨W¥dÆï»à Pps†Þï–R«»+¹­X$wÞªÌö=Ñæê³§K$'¸U 9::º=ùø“Ïø=0nÚãïýàÉGtÿØää$ß· ®Šx\Õ[÷©3ÇÇÇDܨû³~BD&&&8£¼žkøÎß“““oÝ×¾€×†õ€xOâ ðнÅxø )cúðý÷ˆ'†âëº8×ñññÄÄDÏg*¹ß.``FŸx\ñ¸±xÂuk™P(ÊÔ\÷äïD¡åžnPË„Ãá“ Z…D(‡ÃážÍNj;gƒÇåôp·ã‰›ªýÜózçŸõj±+l¯­äf<_*—Ë;;)±³ÝÑÀ¹\!w%ž0ggµ«Þœí¶ ùsVkyÕlˆÈŒJDÄ0|Ë›AÃèÚwè¼Å°h`صL;Ûñî»É?^L:J)å$OÔΡL­7ì¨eB¡ ç€×OÌÄbQ¥œüö¡ˆîíÊÂÂŒxñAp>*J9Éŵ72FlPÏ®äfÜŽ›RLfëýûÜ UH$‹ílÇ‹éïî¤-­µ¶Ò;ë^˜Ò*$R޲ìRɶ”“JZ]Y'Y¯T68÷¼þxB$0oiÝØÝk¹­½]Y˜ówž nTlK+µ¿‹ Ì4 ÜÀukÕ¢ˆÌøþ9h¶Îî8p×míí6:ÙŽ)½Ý†ÖÖ| »Ííšµ¶ÒëN<o(žÀ|TÔþÖóìóÜLliª7b(•òñY­”“\Ûn )n ”“Ф¥¤Ñ|5°‰½xwOFèÛ`HÍàõÇx´:«µã8Ñù—ø†á[zš¶´6÷m0í7EkË.•Êår¥Ò³êbØÓ~st3û60ýÓœjnI«u1ßžS»çìÎß/õËìbÒQJ)'¹˜í®°¹½Ö•_Ëœ´'Së j¯Âž£„O ,ÌÔ\×­õ´¡?ÄqÜB!Ñi§a76‚""Sþi4_ñÊܹxâ§?ÿrôãb—Ú+¹†DíR©\.w.ÖëÙ•\ÃŒÛqSŠÉl}Xr"7[ Ì-˜"ݽÃQé„õ´¥µÖVzg½“PÊÙ•Tû*ÿyû(­B"å(Ë.•lK9©D¡u::ÊIVç{2 ^š¡\.—lKD$:4ŒÓÂ||Vëb2[—ÀÀ6tŒ>n;EDêUG)sõÑE3Ü‚xâ_Ž~\ø¨ÊI®&í]·V-ŠÈŒ?àŸ‘ƒf>ßKN¬> †onÁTjT@1„ÖVliª}•_¬Ö\×u[{» ­­ù€H`ÞÒº±»×9ºÖVz=040JlàU~~\uÎq{ÚyzÄÙxjiŠ.àVëó¿üR_×ñ #¸þlõ`%·¿¿‹lYvi#xšißõ÷Öt¶ ¬§-­½IôäÆÉö®ÍŸçfbË>ã¤þÓ[Þ±Dš‡RÏ&¥ÎNØÍÃÑù’ö¡«õ“Õ sç&êÏs sõì}/ßÐ3ßmÃE{éφp[â‰_~©G?úw nTòñÙý­X8ޤmÙ• œ|~!G"©îì½oyÓ¶´·}ÏG<:+'ºëŸš[˜=Ysx´jJc+ÉûW;¹Ãð-¥Úå£?5êÚIE¼vn.ûÎIN¸µjQÔþV,é´Ö0‚ëé¨RNr1`Š÷™ŽºLhÃ…Ž{½àz"rtt4b‹?ùì÷¢8º–Ï‹?äû¶x˜&''ÇZùyñ‡ æüüÀ“““ü^9¸*â @<ˆ'ñ ž žÄ€x+pUÄ€x¼io½Ácÿåß´8O\^÷:p§q¿Oâ @<º·îkÇ^þýÏ8»ÜžÏU¼u»Ê÷ypú¿ñûઈ'ñxÓ¯ŸpÝZv1é¨ÓhòKAã¶µÞkgQ¢éõ ap:x#Få'´¶ìR©”Ïj]Lfk®Ëx€‹ÅmSþ™“d@& ŸÈÔÚá…Û*$NÊC¡Œvô¾Ô¯ ‰P(”(´\qÝV!JZ§5$ -בZæd¯LMºŽ ejµŒW§%‹kùÎ!w ž¨W¥$:ÿuõõJ¥\.wg,\·–]É5$j—Jår¹RÙFá×ÕôÜ‚©ÔþîÞ¡ˆÈáÞnC¹ç^ðq¸·+ s>Ãh)GYv©d[ÊIuQÊIVç½úëÙ¤£”e—vR œBnu<¡”“ŠD")GÏÆŸ­ú3g&ûµíÖÙ"=…ÞNݽ–ëÖŸçö•RÊ©ÖÅu[{»ÿ”÷‡ÖÖ|@$0oiímìí®µ•^x¹æh=ëŸÐp»â oýD¹\®l.û CNîbD"©ÎRMî?[ÕZíoÅ"ï&ÈÀB/DFó•Ô«E3nÇgµ.æ·åU³ˆÈ«fãl ÍWÚåm6ãŸâôpë㉮ÛÚ¶s 1ãyÛÒºSnø–7+ÛÒ"ÒY¶Ù_hÁù¨(åT³Õ¢¹0XŠEE»{ÛÕbt>h"Ó~óì!Mÿ4§€ûOŒN ÖÓ–Ö=@Oa`>*"Žã˜ s>ÃÌG•ÚßÚr¼ç Ã7·`z7A¼EÞf=:Kêâ-¤à,ðf]à÷; #¸žŽ:)'¹x`š¢öä¢|·ü;þcoR×b®¦–|ÞzÌ“¯¯èŠˆLûgµnˆ¹07%"xŸ-æ'ÿñ-oÚÍP*qD´eo.þŽÀ£ÕÙbÎIEÄN[Åd‘ÓÀeˆÈÑÑÑýëØË¿ÿ¿ÀMøË¿iuÿ¾èää$7 ÀUOâ ð¦½uûö—Óâ@þä3î„ßx·×“>`à–;>>ž˜˜8>>î.ä~¸€édâ pUÄàfâ ×­eB¡LÍ=[’©¹îUæUºr=£QË„Ãáp8|£Gyƒ|8~üiìwžì1pwã O1™½[ó¢ëֲɢ֖]*U*AøsçãÞD$WëÈÞ“wÞy,¿·ÌP¸ñ„RNrm»uv>èž'ÿ}’!HZn«…B¡D¡u¦’æöZ8î.wÝV!êÎ+tW8pZªeBíTD¦Ö&“ŽRJ9©H¤¯1ÝÙ ïá^>fœŽt¶)=9;V½ØŒ3ñÐI’‹§Á\OOÎÜ=½è.%‰®©}`yÿhnüð}»0°#+bîñ_ä¿ùOùÿ ÷ žˆÚ¶¥ö·V²õ T§œdu¾”Ïj½¿[´%õlÕ”FÎ>K”rv%U²-¥ösÏە׳+¹†·ã¦“]Gô*ìO6´ ‰”£,»T²-夅–a×wÒ–Öó®[Ë®äµK¥r¹ì=kÁJ¥\.{ îÎÇ\º#Ýú;5°í»»ÞY÷žêïiÏQ†õ¢žM:JYvi'µp¶UƒË{F{à¸oêèïȰS ¸çù ¬çã³ÊIu/¤Mk+½)ÿŒ÷÷Ó¥©)ÿŒˆ4š¯º¶‰-MI`ÞÒZŠUï·Z‘À?#"ÍΜݮ°ïºo·¡µ5¯žÆî^kŒ¼úÀŒ‹ˆx ¾zGzÒÃ:5´ƒ2èiW/\·Õ<­gýÓc•÷ŒöÀÆÞwà0Ž3€ûOˆL-¥â³º˜\Û>¼ù¦('I9JuÏÙC¼j6Μ·‹aן­Îj­ö·b‘ÈéMV! E¼ãÞ|§†5ãŠ=Ô oÇÿÔÀ ûËÇ9#C÷s/rŠ÷(ž0 ßÒÓtT9;pÇ7ýÓ""Ó~S¼ûýw™ö›ëÙßòf¥b[ZN–šºnkÛÎ5ÄŒçmKëëèHo#û;Õߌ+öô:{q^ã‡%QÆhÀEO1àÅ+{³Ñhœüs>*"ÍÃöÝô‹ô y(R¯:JÉŒßg†á›[0•ròã¥A:ÛWëízÌ…9ßxóS`=mi}2+_àb}œŽ läÀNmFqÐ<¿§zá&oÇîÓ4¬|Øw7~ø¾‡qpGò¯!Ó¸…ñ„wIý4= ­šÒØŠEòþÕË]ïÚ‹‘”Ó½6·¼i[z+6æWGxÛ;©H$åhËÞ\öÞ¾ó„H$Us5µä3 î§£J9ÉÅü)=Ÿª¸\GúÙÝ©ÍèM¥ÚÃëírnO‡õ YœT¤:Ÿî>MÃÊÏmü°}6 .S;2Þ)Þ{òÎ;ÀÚŸ«?_ ø ¸ý 9::b .Äûã÷Ààö{ü½<ùèƒîß›œœä÷EïyÐãÝ•Ðæê³“ ʰò«Ô xàÈOà¶ ?wù ÜvÇÇÇpË‘ŸÀ-211Á À]¹ìüM~·÷Õ ¸CCˆ'ñ žÄÄ€xOâ €+8ÿû1Çü=…ßÑ€xb¨ï|keôò§ÏJˆ'FùêÛû™×­e“Ž:½™bÙ¥ q¹&zµ%šÞYÆ \ÚXë'¾ööW>¾1?çý1p/­-»T*•lKëb2[sÝ›èÀë9 a¬ÄÃO~þeá7æ{ØS#“ ­íµ•­}¥µååzÒ C§\ÏΚìUÿQDÄmÖVrûJyQHzg= u/ó±ºz°µµ¯õì곧˾v†£– ¥%"Ú²+AéÊ”ôoß_yÐ06€šŸøéÏ¿üéÏ¿üÆüocþ·;‹È¿ß©zÿµóaó@D¢óÞlZÏ®äfÜŽ›RLfë"bÁJ¥\.—òñÙ®C=›t”²ìÒNjáü&žw×­eWr ‰Ú¥R¹\®T6:³»Rή¤J¶¥Ô~îyÝ+l)GYv©d[ÊI% ­Ó!ó¶ÏÇMixÛ«¼¿<àxâ_þô_vþþýÅyùwÿþ?xå§z«VN*‰Ä¶Ñtçú¾Z‘À?#"ÍV÷í‰)ÿLW‚¡y ZÏú§Ï”_ñ(J9ɵíÖÙ{"Z[±¥) Ì[ZK±Zs]×míí6´¶æâ•7v÷:{µ·÷ZU¬Ö†T~NgxhñÄ/¿Ô¿üR{ÿ¿ÿ ù¿þŸ^a÷S=´¶ì’Ý™¤ÏF)G)i4_ySo«…"^aÛ«fCDfüSç´mÌ£FpýÙê¬Öj+‰dj£§vïè]Nš:ЈÊû; À'þñKý]AÃÿYØñJ:á»­šJ9ùíC™ö›í”û®ÛÚ¶s 1ãyÛÒúR½8ÿ("bø–7+ÛÒ"2tå¦éŸ>©aPùðb@僛ÀC'~¥ÿñWí™þÿ®äý³û1bß©¥T|V7rv¡å†on¡{⚊0Œà|T”rªõöBŠÑ-ã('¡ÇzÚÒúl|pÐ<©W¥dÆï3ŒN Õz»Ü\˜ó tW>º<¸x»©±ùgŸoþÙçÝ·9Fßï8‰ |K±¨Rû9{»åº¾åMÛÒû[±p8 ej®kÁõtT)'¹˜?0E)'¹˜­¹nàÑê¬ÖN*ROŸ›·8÷(®[Ë„Báp8IÅ\M-uÇ»öb$åhm¥×^‰Wƒ“ŠDR޶ìÍe߈£«¼¿¼à÷’!"GGG#¶øø“Ï~/ú‡£kù¼øÃ»ø}Ûþ) Œorrr¬ïŸø¼øC s~~`„ÉÉI~¯\ñ žÄ€xOOâ @<¶·‚{æãO>c7ªÿG»ˆ'î¡'}À nÈñññÄÄÄññqw!÷;À L„O€«"ž7OdB¡pŸP(óR¿Ì„B¡P¦æº·ª®[ËŒÑ*×­uÚ?Îßo´;ƒÛ0fOx¯ÇܨT6D\·–]L%šÞY†÷Ô×+•×>¹ö7ã̵L$åâïxˆ.IDATÌ®æ7=ÛÍ0‚'í6#wos FðÑj>‰Xvi#hð ÜÞüÄÅ®ïk/‘(´ÜV! …B‰BË=Ù¥UH„¼ôF÷Uu-ÓN„2µ•¿Ô/³‹IG)¥œäbvàõz6YÔ–ýtéÕ¹í'÷гWC'CÓ.<·S'å#ºY($ÂáðÙ±ªy™¡ÅµüAw“ζáÕÒSÛÒÅd–,àNÆöWN²:_ÊÇgµÞߊ-Ú’z¶jJ#go·\WDêÙ•\ÃŒÛqSŠÉlÝÛ«UH¤eÙ¥’m)'•(´F\ޝï¤-­µ¶æ'êÙ¤£Tt>0f{.œYÉ5$j—Jår¹RÙð0¬Sɢϟn9¢›J9»’*åã¦4rÏëÝ}±ìÒNjatóQ¥œÎ¡¸Ûñ„ÖVz= Sþïï§KSSþi4_‰¸n­Z‘À?#"Í–ëºnko·¡µ5 Ì[Z7v÷Z—ºÔvÝVó@ÚUÑžËÇLk§áȈN‰Ìø§NÛ6¢›Z[±¥)¯R¬Ö\÷¤/³þii—oƒW¡wh^Ä€;OŒ9§")G©“IýU³qv‹ËOö}U]+î?[ÕZíoÅ"‘Lͽ@§.ÜMoûÓˆäÜ6\%HàÅÓ~S´¶ÎÞ/˜ö›g·2ýÓW¨ÿF¾åÍJŶ´ˆœ,Y¯S××ÍAm¸â¸pwâ ÃðÍ-˜J9ùíÃþÂj]¤^u”2æ|†aÁù¨ˆ4Û+ ÎNÌÍÃõûg¤]ÕM ¬§-­½ù{D§º9¬›#r!óÑv_Îv@¼ eÆï3øˆàþç'Ä·¼i[z+Öý©¯ÐIE")G[ö沯=e>Z5¥±‹äý«–Ö‰y)Õ.ïÿh†7Ëo& è|à"IÅ\M-yó÷°N¥£­X¤S8¬›C£–G«³Z;©Hu>ÝéþÀ6Ô«ÅöJnCDŽŽŽîtÜVam%'«Ïΰï‡V!±’“ÕgO—}’ò¿¸9¿÷ƒ'}Ðý{`“““÷áû¶ ßòÓôLîùCø>×­=Ïͤw¼÷ä÷Ê #¸Q >„öpz žÀ›t||<ðÇd¸©Ë]¹ûë'Ðcbb‚AÜôµkçïÉÉIò÷üð(†Oâ @<ˆ'ˆ'ñ žÄÄ€xOâ â ðÆÜáß+ÿø“Ï:øþ{œKðrÞà {^óÄ·úü/þù?ë*ù3^²àå ¼~ßùÖÊè þäOŸ1JÁîw¸n- …Ãáp8 % -·S ej®Ûý÷¾;ç[+ßùÖÊWÿ‹Òyx%#åžV]½‘'5´G ]XË„Ãá›îû%ÚÙs¾¬«œw×­eBÉä»ÿû%öååz¹SózÞLn²;wâýá’¯ê_}û­Ñ¾C· ‰|kº»/ž[õîç½h/tŽÆ'ÜVam1Y”¨]*•Ëå”ØÙžÆFp£R©T6‚†q£½õ^£¿¿ø»ÇÀWíÍbj?÷¼Þùg½Z¼]/ 1Î׃réçÉÙ­ýÇòÿVë×ùnËËõ*çë–Ïw`À¯öªîöµ·¿2úÑLl¯­äf<æ­éMP‚aÃ’­Î—ËåR>nJ#go·ÆŸqã‰úóܾRÑôº÷ßÛ0|Ë›½ÿÕû.­ÚAhÿÅV¡èD=®[Ë.&¥”r’‹çÌyòÙ“>øÚÛ_ùÆü\wù7æç¾ööWž|ôÁ˜7óºçÝÄéEüЖ÷1ggµ«íí[…ü9«uÞ]ÃàcõvçÂáp¦æöäB‰Dbä8Ÿ{¾j™“#fj=ç®ûÔ kö°¤Ôéß'm¢Ðòv?SáðF­–93b}åÃNÍi†lÖ©ê¥~UHœ¶Çm‰BkøHºn-›,J4m[º˜¼XLÖy¹|ðr1˜½o&gûR¿ìÓó ç¢/ÂKü—¹ý~•Wu¿ŸüüËѳ›¿j6DdÆ?%·¦€ÔÎö^ÍíµÑç½göé}sp[…D(Qhž oÊ<¤xùþO=ðóî:îÇxùÕ%°±™òψH£ùêºò®[«Ekk>p‘ð7»’k˜q;nJ1™­wEîή¤ÚQÏóºa×wÒ–ÖZ[éõs/½@G•Ÿ‚­ä'ñ‹¡a-ï2‹E•úÿÛ»ƒ×Æ­<€ãOþ“…;àKÆ{¶¾„$f>, ¥—r)ƒ $Ђў+ [H !›--4 ”ŠÓŒØub|1ßMÙƒaœÛä´ílú¼‡g;Ž-É’L=ï:ªô$ýÞÏO??ÉŽstr-„¸>¯Š……9ßswÝ—ëBýÉL†qu÷n¯ïæ)M»|f-ˆQûòé¯VqÃr¤i—˶)«÷nîŸù~2sòµ´>øËõ%[XÇëý®Obäkéá]ô/wݶUÜÈ—:w|Vë~ðÎ/$¤¼¬ž÷ún>êÝï:ìÙt2™ÎJéxäØC-é:Þ‰?•O‡€ÎÈÑi8 C½eÞ‰€O˜Õþóß[ÿ×ÀÌS:+¤tòK›½«ëU`tØms`h`Ü^g û}*gûq}^mˆÆÁ áÞXáÒéçÿ¦öêâ £kàL¿Þ<–#ebý£ 3»õ}Q}Ib.–ŒÍ !®š½³UÊ\[‰tªžn 6wƒ/03éä7ï:ÃçÈïI¦M¥ÕóV»u^ ó± ç>°/Ÿ…w…a·¢l^ ¥â±ÙåÁ޶¯ój£Sj܈®ñú½QÊßÝñºØñ{œª{—ºs1HÒ qÕ¼t0¯ßüòúÍ/ûÇ¿z/½Ä¿êI½æH)î®"B‘Ü*˜JéЇ8òÈüBÂå1ÿú÷å±Ðå£F‰ ï}úïË«¿zë×êÝcݧF$À½¥ÒÙNõL°ÚtDx}·vÝV/ìOž =¨®¬÷j<6'úÃ%æbÑ•±NÎáéÖýýÞ4Bµ* Ç~ËLmÀ$«ïÕ¿(ÿ×`l»O@wöîÛ¡a¿j^<øÁu<"?xõI¦³zpÐ{L¦³R^:ú0}F¡±;H‡áœàé7Æwâ‚^ ŒèêÞY!+‡kýh-=âÙÉèê¾mªËõ‘ÏrFtÅZOˆ†¾6ò3ßßø¾øúÍm綾x}ÚKmWŽrq}$ËQ¦]ÙN‰¾'¢3«V'à‘º¢s ÷p ®ûr]h©­BVJ'¿tt•½žuO;V¦–.ô­®GëÓ_z}ÇÊèPì¯F}¢í¢äGþ:Š­‡­ ƒ'FÀm£«û…lçLõ‘»ˆÌ/Ä•êÜoöm\‡½T«×k%¯'aVOr¿Ã0R[–°—–:éÏïùu¨WØ«öRÆrü~xáh ïWÌÆôà°0ÑÎrñ¾zBc k¡º8xø'Tú…¢ !Ä«W¯Ä;è½ýãv«¸ùì ‘-èË ÞBÀŸÿùà߯ÜúñßW£éJºþþ Y­ûÙ?ù¯óÏÒ•óúž%‘ òeÀ÷®ëÕàÌÌ̼ÿã}û¹âÞW¥…*±~<ÙG „‰ýÁHý®ýûq§IWÒuúþYÝ+ˆ?Þíù 0 fffø{å`RÔ€zPOê @=@=¨'õ ž žÔ€zPOŒïƒßäY}þåwt-ä“?|/ê !ÄgŸ>§¿xp777Ož<¹¹¹é_Èý‚ëMê 0)ê 0)÷ç'ÚíÖÉæ³ÃK)„P*¾~¼·5på>?q²ùì ‘È•OOOÏÎ,aï^´Ûoç€Úí‹ÅÅÅÅ·¶Gð(õD³!„˜‹E„Â0¢«ûÛ)ÃB´Û­âÆâòòrïzß»ü‹ËËË‹‹ÅÖÝò宋{+_\ì,.îü¨~X§Ý¾Ø]Ê;RJéä—‹Îj‹;ƒeÇÅÎââ ÀÔÕé¬ÒÉ/mêâ §¾ûì ‘ÈÙ¹„(åwëw­H§*¬²mJyyð¢.„0ŒÔv¥rzzZ>ÊÅ•*åïŠ)|-]©l?•OÖ©‹äÖYÁTJ)³p¶¥‹˜VqÃr¤i—˶)k£Øê߯nŠŽ`êê‰ÔvÅ6•”—‡k™þ©ˆZI1KÆæ„WÍV·DPÊ\[‰ˆdÚTJ”j÷nUDbs÷WÊ,l%ï-Z§§ÝnWJ™é¤Ðí7ªçýûl ¼už¿g•Ú®”·ôS™N~3v¼·éN XGH)Í—BD¼›n·Š›Ï.¥R 5ö:/›û FíLÅü„fÑ•½‚©”¾„ 1K¥L»\>==­T:U JÄfõ7D샆HäŽlS)¯¹‡‘ëè·¦½žØÙ(vî)ÔkŽ”únÑù…„”ÎÑÉõÐWÍëîÊs±¨atç:uzp]GWÍëNM£wZ«wÚO,ÌG ¾¼ ÀÔ×[–°—––——3–£â¹ã½} ®îÛ¦º<\ëÿЇVµ—2–Ó{ Á0R[…¬”N~éè*!¾¯ÑÿpY§."+ÖzB4znè:V&c9Ê´÷W£tSÅB¼zõjìíõ7}Þÿ÷Àfffø½m0©Iÿ^¹þ ~ÿê‰ß ››×?¨ ܤÏOL­'OžÐ»<ÞçöÞÏÌÌ|ð>œ'xT< ¨'õ žÔÔ€zPOê ê @=¨'õõ žÔ€zà×ò«åVå5IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/bsf_preprocessor.png0000644000175000017500000002300212032647206024432 0ustar ebourgebourg‰PNG  IHDRzeKµíPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<[YÍ;<µZ¹à€I¯°L\+6 [õµ3ås^¤7xß¶tö*åþ|-ý^¹0bdáÿ.LQá›wØÒx‡…²ï¿Ï–Xš[!zñ–•¢§yªk>Z<£,äƒÃlárô¨R.8PÒ“gvöç«g·;kµÕ3ʼn^â/®/×(~ö¦-{<Þ¢mñðÇϼ¹3Õ$EOÜH úøVï ¬MŒ¼ò£ìñ´•–éóÚ•—–}”¥?XÞyŸ-ć'?Xêûg¿RÊ­×c$êÈòY&™¦Ñ¶ú2 FÍ5q…u›ê˜v^dK«ò–‹–ZŸÈáâëšÌLˆy¥ñ í¦‰÷+Ô@‹µö/̼Aû÷ÿøH=Daú+µ\pЦ¦\úäd+[¶Z¥[ñþ+å¦F†Å«T²…_X௵|ì7L&m,Ó8ÑÏzUŸš/³ëõhÆJ9~¥>Š3rp{=©ÖMß»@óƒŸ×š¬ bʱ9\`c#·¥2±5o¡Û|qlD’µ76òÛ§ÅB]ûïWÖOÛ©¶ó³ÕÕ3ãO²šXy ‰/ºO²” ÿΤAKktI™3lI-]JûçËn‰òm|èØ@ÑKÿ_h‘2þãDwýë^7ë)à/¸}¼Ó´Ñ¢Tˆ¾<ÈÓ r°iÆx¿Xôn[‚‡z7IçíãsÖyŸ’ÆMä¤>Ÿå»à#D'ã üêÎÊ=#æÃ8'õ‚;&5ؘ",Wsƒcµض-¡îVlÍÔX.¥c2W°y:YšW¾½N?fšõfbµÎÉúÁÆéÔȘƒM†›?^·Ý"ËSü{= ÎÉÁ„_€‡e¬¤ = =ééHH<ì~ÍXFk€ý&x¤œô(ˆ–ûKGù^èÈNKˆ¡Á.ð.o&½³ˆfsä«L3@5ˆa†  =éƒEÑ4ÃO7mìef'Ïó—”… ï K°É 7fÛqN!»øÿâ_ƒ²Ô5°Ùw0Å_ó¡¹ÙPšüþT8LÌÏeèR40“Øš Š>Ï;»óçÏo²J}ÝôŸótççàôzc)þÔ‹oÿÒšvœu€ë¾çhºå¹Ã^êùÿâÅOÜ[õ€e´'÷‰ÆÞN_¥ý¿é?è&”ô<Ý7Øë‡ÙX†ÇÈ’ÇDä6Ó»´L.+%Ý3%ã7~=¯ù>*Úbd™U¥‚ýhÃJ(ï IÏq9Î^“Ý“MtvF}†Ì¬Ó[o‘TvøV~¬W4ÁØBEòöÎk2†Þ¨ôÌÎnö§Ï‹××Q¹§[Ðö“‡í”¤÷uŠ|q•= Ó r³—7¨¯ä‘Ž6ú?kþpeÓŒ’ŽoÓ çKà öz$5²—ÿµtÏ^2ü8œònŽq¬W¾SÛx Õ/®•^iqÝ=Hž>°ÜùMS¸sTNób‡Acø! <$c=ª4ÖÛ!GpŸ2¨Šô¼_¡å@•z=´ØËëL3¤¤0ͨL|Á– à‚ =ª:ÖËFפÊ\Srx&ƒûïõÖîÕ<ñ›Þ¥Jò?ß6÷/½øY—ùG3­D‰Ù@”ÈïO‰•—çå¸ÈÙDrþå ™"ÙX­Y ÏefyÜx.˜ ¯íîféqVIö}Oœlòžâ÷¦¬¶œ\ýí _\÷ž=™o¾³D‘^osϲX3¼ØÅMpÃýg–Ж`÷c½aÿ¾F63-{‰¼&ög¦[·ð´ø“h…\J¹ˆœºlÃÎÛÒΞ—@¹^o\‰w|—L’ˆÃU‚!ϱž–ÿFØú£Ç„C3’É}¦³ï -Áî{½zÊÕ“P\ÁDµ›æ(‹´±º|z m vßëy/.Kÿ¹(³ÌÝ‘Ëb¥äK£0ÊzÁÐ1s#S$¦`×½^mGtNºæ!çtÄ4½™ÿ·÷ZüS껖Ë­­çÂÒäì»AEì.r3pûØC‚‡m¬@uÆz÷mU…ñØôàSª$=8Œõ¤¤ = =ééHH<"Ò“ÞÌν½V´N¿4.YQnú{ÝJ,NÂÞi+v^=e.´é®ÙŠà Ô±¯”{ÜÏÂÅ·ë2¿Ûi\§Çü¿¯øŸÂIë¾ÇÌ.R>¯-—ËmZqIxн^–ýgé$StNޝ ‡åfe.X‘·2ùÐÜ]á]š¿œ¦Bh>©ôCìOlËÐíðÜ {§Äî2VD¹1ß!ÉyT’óÁ‚švmán ˜eEe‚s+¬« ñ»Z³¡ù’b³¨©´›ºž °â¸¥Ç¢?-ï_ÉgŠÌÍ.Üf‰B!õHB…»ú‘°ur™Ù@È,ßSÃ0º½'½eÕÒ‰ãYö6rÊ󄈯u5)W(Ï@¤Kï#ž'»úyŒîšçN„"ý.Ã5šm;Ô¥Î3>~#½rì.¥éEOyZz’üÝRQÊ»"jœï’ý©ö~mÏ4Ç)ræÉ–~þn¹i0AÉžæÆS‘ÒCiqvµ &&Nç)º>.ï_Ééõuôµ°4´¨GÒyª¨·eFëÉ•~ñè;¬®J‹€=â«Í/¸bv¤õðìñs?±dÈa'§^èÂZ5¤îàÞ¥ÏJ Åá´NΣÎ4¼|%m 哆¡ãѧ^WerZÅ´iJ ­'ø¾ÆúƬêþ•|VZæ{4tÊiV“1*è¹´šó)6ì|$.†ƒTyØ[{>Š¡EAY¼û-=ZD#ƒ2ùê.¸ Ä0Ö˜fH€‡Dz°¿èõÀ”ÞïB»Ç3<Ò1x‡ ¡c†HÇß…³l[~a.ÅÃ#sh½%Ø#éý©çСl”-¬ùF¾E‘þ놨Å?uz‚m‹÷5ò›Ðc½¾æS)4%¨ŒM¿RîÈ$VD¤£ÃB­’Ë֑ÛV¨áñˆF›DI7)Òøý A9[š{ìæ^Néá%JËþº9¶¼š‹¥š'¯(I9&Qå8xï ÌŠÖ[ ÏeØ» â»%ס³¤™uà×Ax ¯ÜÛ·v8õ8IOñà Gëºß­«Iõ·%Z÷ž=™o¾³¤øÖâŸOÍŸÖÖNKgþI[ÿ=¶ü¤¼Åç>•P®v®þˆÁ —]«Ïtª¾·áþNù× ÿÜø™F9ð\)Ë«”¥ìcK¿ÞU²²3Æ¡ß_ÿ]w )/ºÙ燔4¥gËrÝDßÃÕ+d’ýu—ätÚr¶e¸g­Sõ䊒´câí$#ä9ô„h½uïð"EúyuˆS®«Mƒñ’:pŒuP¼…ï troߦ`zìüpÙŸ”"—îw[oÖ—ž’ê[Ëshþ´6w uÿVe%(x„–ÝrGÊÓ/ܤ¼Â'ѲOó½ ;¿4ük¹î2Y ¡I ²›ä²”}lé×›aŸ*å’UWçºëæoZ¯ ôÓT“’Ü®\²<&Z£×ɪ]¡I:AïýTöוӱå¿Ë’pè]SýsŨRõ÷õÇÁèÌÆ¾'œSfñIP×6­ÃzqäÄê~Y:Ö|x'Ñ´ØCæ‘ûÑ}{?\v)¥?ñê~·æbï[ÙÿV÷¸%ÍŸ–µÈoÆÈô÷ªb <­b³'ÎÆ±~:Ñh3N×£Âüpywñ¿‹ýn‹½o圷õvÓýidútµ7ªJïMîq«ì£Àfu/\â^¸o^P|oí_ä’§GUÿZ¥ì±‘‚á\¼¡•%ö1nÛÆ¯·`Vz½¯G&®»å”&÷é—ÖÊ7Œ¾/žoHñ×Uæ†å Çl<&å8D‹µýð}-ùø°ûgrí¤÷+Ú’íÁzkùôh—Dë4Cn]Ýï¶Øû–£øÖŽÑ¥"ÚðÑ:ÒÚ¬q~E+ õR“â´VJäUgZv¥ý…ê{:FT«û׊²´ÓËrie…ä}lé×k¸rÕÞjwÉçiÞŸ6™©Þàé«Ïi5ZúÙZO¦.}YKÏýsyIŠ¿¯@9ÑŸe Ÿr%•iAEu0î×Eîä|Æìc{yÏÔ­¤gô»-ö¾å(¾µcÏùÓ.\ Î_i“¯ ÷È9O»Äÿˆ%ÿ8þµì…ËVü«I—ê{Ûz.<7ÑýkEÙóKŠ2/ë—Ÿük¥¬%¶‰¶­ýz¯êþvM†mW#w?n6xúêß“MƸs¯ñe]yyÇ6˜’î1»ýŽy‡^:êðV’{ÎåZn¢ºvÇ>q*uÇRÒBÅÞ¯þçÓ£&¶]ûáî1sëOím%~½™hEާéĪ¥¶ÅRÕS“NäLrfMR×]‹ÔeÜ*¼…µ½Vz´¥WSµz<¹×–(¹B¯]ÛCð»”^‡®ÇSâ-ÜA:¸}@zÒÒ{Ì>ÎpñÌ) ã}Òƒ7.Ѐ.¨ðØfHM–.,8|;û!½’X@¶ëõfºOGw–½òX@¶ºà:)MkáÙ@P‰ÃÓ–W‚s‰TàXš ±@ rIDôi~¸áã” äøD´,Ø•ôÌd¢¨£«}àÛì½M_ζŸüy»£TOÓß÷¾$"ú4?\×M tvœYB³‚ÝŒõ¦(Y©u-šqVÓCúòÍ!¢¿2QŽ’ÔàRb?\¢~Ûì‚ýgío\°«^ÏÿÿRW›(õ\ÞG#Äc³Š–yÜÞ9’è™·D\®Á—mð÷wM£YÁîz=¹ÏŠQÓeuM”¯”¦úÒ¤©W÷õ[_ùNïhÚìr¬Ç±Ðz·.ÐüÉÒ‰H&뉈>ÅW|æß{©Ó °Ë±žÀs9äÔ—ƒ®’­Ó‹æÉ&j]l5úá¶M…ó“^4+Øž}ŒHƒ7.ÐØ½.n¬@•Æz÷¼qAu¤o\Pµ^Í 0Öy¯?\PéÁTIzœŒõ¤¤ = =épÿÒ“ÞÌν]ìg£ßwœ•oHþp~6,< ©ÒÛ}3¨$ßá]ÌÅ; "æã±¢Üo¸ ß®Ë\ünÑØõ³ãòò7¿”JÏ.ÝÎÁ¦²PµâZ—þïNØãÝëeeÇÖ-ýf#tÌ,÷J…Øì\DÄä´Ü'6ççæ9 þ5Ù×Öï…4ï×Bpží*ºº¬âóÊׇx–…yÅ)v6”~¸u#Ý8_k¯'ÿ‚먥õ×ë‰"§nØ„=Kq5ÎyN\U|\é}Rªç¦ôÒ4ÈÈ=ŸNL×÷ýÁ’ï›Hõ~jzñº‹èƒÿÀ ÖJ‘Ü{))ç ÿ¡ äÜãK“ï¹Yóü•"»b"‘n~ñcá‡k£UáGæG™-,[d?ÜÖÃw²ÇÏýIJ¥ß¬N’Ç~gdé™è5²™iùïNüõÛ ²'d_[¢ò^Qö~Íë‰t?YÕ?Vñyý ²Ê;µ)Á–>ö‘h”3ø™ù‘f{?\óëÝ©Á‹ßoßÒoV§@Ïð‹4ɴ$*8ÆL…å±ë¬zæ*ââŒô4iºº¬âózGÝ©ækRMü_üÌü³?Ü!rÜ8±NÛøÍª¼©Eƒ3Í™MÜÓµÖä>95òÉмÁ)Våò $?ª@øÉêþ±ŠÏëøp¡x’¤I<îÓŒ Å\ÃD¹¥ß¬Î/)•“ñÑ™‹2Ë,§c¬oÌ¡úÚQGinñªøÉêþ±ŠÏ«²^'ʽÛÇE—iÅùzÌ¥×6™]ºÚºµß¬Žkú•ðd+_â´ÎéHüš—,ï‘Õ¢úÚÑ8 ÍOV÷U|^Ý×ïÉ¥©R]œš~¸«¬|ðøPAøö¶—ŽºÜ{\?ÃNÉÛø^ïÑëíÖ”ôâ¶Ï¸ÊÄöZzcúXq¹Ê{œ¨@z;pN¶îùhÌà®Ü‰³õØõ€ô¤¤ =Ì wàÑR`öÝe.¨ðØfHM–®õ™ñ‹ÿk?µïàÞv/=9Þg£Æv´x\9ÎQŠÎÎE•Û–VøëÚñÙÙùwØæt(KæÒjxS½ë%O5ùN)óâñ(ÀXšîjü[XméYëŽÉiâhI°\¿v½Mð»Ü•øGGÏuöÚž‹ö‹8 ¯Iü­Ëi2^ŒÁÞŒõd$ç¨<|Å3Î:1uãù‘9@‘ý1¦ྤg¼¡]‘MžÄq›7¤ÑœqØ«±ž‹29-Ò~EHu=Uš&Í£1Í{Ùë9§—L“j7gæ!?ÞñRg\žf¢- *doýpa Ê?\ð¨Œõ¨ÒX¯b` ª#=Xà‚ªõzhQ€±x”z=øá‚êH*U’Fjc=ééHH@zTF¹Ò¤ÿ¥dþ?®5®Ó£¿³qù¾Ðt¼ccV=™²´uÔx6Úþuc]ÊÕ®x]¹wåƒä·ß;]´44íì³®6re‡Çk$W)›øî»õ¾Z¹Â¢¦¢ÎA·ýá–ÞŽüpË{ßV—vü}œÁLå‡*r$»§Zö±afT­…k^ï\vÔê[„­QëÃs™Û­.uK~îöž Ìgt¿ÛP`6Ä »ó!ai¥øå*~·ª‡n`.”çeåó$…ꡛ•ó ]%ÿH _\¹.Äê#¥>†49–“Õ÷¶ZŸ•Ð\,˜_) u‘äº*p_^¶!4Ÿ( /Y[¸rÓÁÔËl¿J¾¢NF¤æmã¦Ã/§Õc÷ó6I&ææ2êv7­êiØñm–^øÿ*í&êš Ï²ö2ÔKøç^N±j(Çm 5Ò8dqŸÝÝ0¼òŽõ–TK'ŽóFœòÀ?[¹Ø~µ|¥DOyZD]ÖPê>è;ÛM­Ã‹úvAž$½}øñm’^øÿ*í&ê9ódK¸¨^öJô}°ª·QzTGtm£ƒl ¥Õ³\¾Úü‚[n†‡ ­Ô-“Ë™ûéë"*\ö»íÌÆ¾'ŒH=fn`«ùå*~·ò…$IV³rIñ^N­_á¡FЇ®KÍÏr)yŠ/.«KšœD¯^PêcLvÞ–¨U­¥®×å§Ã_Þ½vµ'’ý{½irwjí¹Øª(EìW˧«”±qGÒMtïi–ºã‰#öçb»všÙm»D§Ø»NÃñm™^ófu]§K>H­^6½®zäˆã.‚¥zë6H/WÍ_ê÷È—m²]N¹“—©WÝÄ£Âå£O˜|îÎò qI^£øå*~·rîa½»59NÒ4ß‘â¡{RËOEy_\3wÑe ïªõÑÓ(ÞºZ}´(uc]þLöîÕΔìßËË,Ž&N˜ò‘R “ž¯tH›£cra¬.#3ÉîÉ÷ŸS2ñšžÑ¶sÁŽÑÇCû0um•^ófoGiÜg/©«;éÇ]$¼×ñ¡Ñ³üí˜a}5©ß3?Ü‚ÙÖ3qvÚ¥¢i[œÚ~ø¾Øn’S+~¹Šß­œèðÍõVzír~ù룬]dÝ95IÍ—ÕÙ”'KÔGOcÿbuùô•ÔG¾Ò™å#}sC¼ºìß+—Yt%¥&ÙN¬s³8÷º"Çßµ6ß>SÜ>Û¥7îÓzjÜn¬)m¬·e­¬›o`eH¦‚þ93=L_¦íÚ—÷ôî‹ý£nž0~5CYYÝ©4;vÒür¿[ytþKÊdýAQVôŽÇ;,fÓ²‡®–Ÿ„Gn#W´À}q6JdÈ­ÖG)—2±Ô5¥õ‘/ðÅu1 ø÷Ú(ù’Ïd^¢Eø~7æS°R"/¦[ÅǾÉöÒ4›¦çþ¿Æ}†Ö8ås¥ÕK(l5ª·ûx´°Ö3ê¡_°aß*Ÿ¨}týÃ-½ùárï[6Ús˜Ù`-¸nHÔ4þ¹X¨ÿ‘°ÂUür¿[å„óum¼¬Û½vç•S|‚&{èjùIx䞟¼¡ôÜWõýY<ò‰K­^®â­[R%2á•÷».rÛUý{½ÉÿJ‡Õ¹+û|xÆCr) ‘Éù2ù?Ž=¥™M7…s[m/jŸ­Òsÿ_Ýg˜%¼ú­Ð„˜KiõbÌOÆêØÕT÷V©o­=ë¨%÷ô«³KÓóÚ´¢ïõví‡{é¨Ã[Õ¯ƒ+xÆéRÎz…á~)±IDATgë?{´¾^<ö‰sý¹‰vãQn}¨±t{5¯¸Åúª@zw-‡Œo3Ñ麶©ÏVº2?¹]’L,¿nóÕ>ZÒK'r¦Ú‹ÖR׬ic;¹ªÚëíÚŠ¹Ä×ú@ýim[Ÿ-èÚ>ÉÞ;ù>l¶ÒöØæHÛ¦ÚãöéHH@z@zÒÒÞ^SˆÌÍŠo­Òï©'Œ‚ôö‰ÅÞÖ®¦¾{Eëf´ëß?ƒ‚ôö‰,­’m¦“.Eçî.ˆh©PI´lk ½}¡–ºEˆÚK§n<ÑÇoÑt)÷2æn ĺ6ÕRƒ&Ø)-—hòó¡erÕÊÑRGå n­ˆ›b!>ôzû‚å‰ëWè̳4LCÅmg¢<šÒÛG$WÛ§´F—©$ð° ñ°WéíAÿs Õ“~½V铸5Yi”$L30ÖÛZ§²³¦«Ÿ y®-§Œq)–oLzè7c °Ç¬ˆ½u†<ˆø1»Ø)»ŽÍeŘÜêÐ…&Ø+éÁÛìÞôzpò{NóW¦¨€êtzx Ä =ðÐéH@z@zÒÒ€ô€ô¤¤ =é¡ ¤ = =ééHH@z@zÒÒ€ô€ô¤¤ = =ééHH@z@zÒ€ô€ô¤¤ = =ééHH@zÒÒ€ô€ô¤¤ = =ééH@z@zÒÒ{GÍÆUGbhP éy¿B«€*õzh€±8(½^Ç2ZTCzA´¨Žô0ÊëHH@z@zÒÒÿ X!å‚ßIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/regex_extractor.png0000644000175000017500000003002012032647206024255 0ustar ebourgebourg‰PNG  IHDRØ-ºçPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<ÒAnÇßá[5¸Úå©7ë@ª'õ›§ò*•ƒ\lÀؤzÎÄ*¥žVÿ(”Í™Ìêñ²wÚT¹é¥ö'˜,¤ÿH]Äc<¯³’º‰Xª®®Eí%½q»š~¹>ӨЇûa&v.„ ÙéÓdû†Ò‡¡¼å £ô}„z²!÷XI¡ÆØyöG׸†–¦ûXGB=¹ßÙnZñŠÂ'鯏E<è¢~þo(¤\n.éºÞzlÜsþ¶^Úê» ±ctk´ÒO‰ ·Ì´·¡ô yúô퇖ØÂ5ÚÀÿ~¢§¯k“OÆ›!—­#õå pM÷×ÿ1K7 /[Нñ|`âç{ÙníM>r"Ö"Ö“ûMÃ'êW^[°B>ªO<ºˆ¹.[¹Ùî9møÑè‘c (íÚèkè6QcÍþv?Í!¯é²O¤€l<þjæPF,ü“Çl#O²“ã?]£ýP[l¸b| O}'žn>•/¯µóÖBô ÀB›N•û3-‡àí¶iWe¯XOî·úû/:`¦QwS¼íøM ¾‡–[NqÀ•u­²<ƒ¶Âw3×ÜLGÒÂéö N#»ã/ºHy¡·Ÿsõx´Þ‹ÇKaw–’Ì;#×û*ÞíNi•Ó”Dª Wx¯ó+7"qmTâV¡ßf¯“ümHjÁ¦!C6+ø©«žVÏÐm2.n_Y׺!—ZS,L2Bú€>‘V)*/ÈÎNËöCl±OÙMÿt¹>Œå@_N bŽžÙvÿþíñƆÇó\¡ßE'¤õìj¯n±ËQVOî·~çTª{èh¸‘YÌžôêĆ·ö‘Ñêî%ò¼ œWõ N~ç{—ÿÕ²1è&íe<Lv•@rÄÄ2[¬û-œx…:Q>áïÉ_ Ñ’AXàs!©ÞÐ7&–í6†+fdŠäóí • ä~ýŽ|“•Òm±d±€èë`G>Ý=$ÎÏÁã!§Ú\’N³,46.ÒFø>I»ò<ùÎ] ß³7ÄCãc›FzÎñœº¨ÿJ¾Â €Q4G(»%_x9uùÅ'qÂîw­c'¯XÉ— ±¤C&©†Üo#s¶ á @ïd„bãà z YÊ•»Ž¹®XÃÇÇ-ð=8ÿ¤M:ì¹­7ÂÇûôô:0Öò¿¦é—=<ÌHl‚ÖA×XKÃõHŽ£·Ÿ5WcY•˜Gh¾œÌéåŸnšG3¼Ás¶J½¦O Y¡y¨‹Þå³k< fÙ'–ûm~7åÒ]?æÇ_t ˜šÄâ—*íO°d;½f0{;?ªÿeˆO‹;§/'8½ù±y«öZ,Õ #™½ê[È~z¯ñÐ[)ÅÙ?ž¾¡É/n__ÿüÉQ#»úW N2±-,v>ö |}£uýûùݨdD Zl•åâFúï@#ð ÄF Ø@b#+BqWdµØÚì­Dl f[í•-6ÀÞÕöE%"j–…刽zÌ¢5†½ŸµãÅ#bû¡Ø@b#¶%Ø$6±UPtñè€kºÕ†ô³wøÅS¡‚G®èY¶øØDb|õ¯«d#eí½˜‹¤FÜWÄ9OßsS“S p8æƒþxìîd.EüQžì©d¸ûûAøG¶˜!§ïý‚Mgœöô‹AªÒ/×é·Å?Äf{pžf4xÚüÈ®ž0ÙX²ºæ[\OÃᮚ;ã• .¡¥ÇÑ­ð0ÓwOe[,VQÖñ ÕFl¶+b>ú>y#M²Ô8f I`LZˆ7ùJlO‘OáYÙÁðT¬àé÷ £ØDb¼sä=~tÔN†±ÜMĦ»}Kpþ|I2%ÌÉÒ+ÊU\t"÷•Ø*ãQò>9‹÷7À-~e¢² Å 5<+UA 6×dž¦! 9ïN–d/ÓÁ¯²Ž`…‹GáʰŒçýŠRdÔû—·Ùè‰ 6ÕbO3;ý24­/ñ½ßMÆ,妚Ò#ߊ¦,î>¤"Ⲭ¿Ø€ÞÈFTм" Õ?¶Zõ§ûÛˆ ¢y¶]ÁàùIyØ\ûyØ\{•Ø‹14ˆmHlËg¨9Ķ´Ø¨9DÍa¡ö|lb[^<"Hl‰À‹Ço–  0¯]‰@Ô¤ŽdyƒY½†ö™p*Qã;;]·ë×ÇCki°uˆ¨ubÏõ™T/øZbþ€Ã‘øc‹gî ™&bñ»g’À…ýÑ<Ù³œLNÐ,;™)ÿD0[1¼¨b§à2ûŒ³[ºèó{©îc©ß8éæ’¥ïX®ùvÂÇ-Í lkv7€‚=;Û»C¨KD­úØ.8Å>Ÿ ,޼T!ûfe/Á”‡y€±pR·x\4Q«{H̰p8žåÓ/œ& /7Ù¿o?, nVÝÊõ™xu‰¨U‹­ŒŸóÔ/Û¢4ƒþfjáÄ êQ«ÛòöŸtÌ€ ’  ]¦…âYRGıàSûU6Âw¼xDԨŮoLòWÌ`sã–eZX®Ì}wÌ&}kÙ3ÛÚz:Èδ£2µƒõ¥_Xøâ¢Ó/ ›èc#ÛÑÇnßð¢Óèg#jظâ4b[S* ÐÇF ب®-#÷ÀG¥Š(×5MÇZPsˆ-g±SâkY:‰ŠCl=b§aŒ>‚íp¼áŸ¢¡2‰3Sô‡÷€#YÇ]?µßõO²(Ô!b‹; FÁb÷ØØ2¦É×{è"yZÂø$ü€6óL§ÅÜC"¶€ý}ûRÞ9 ÝãüD Ф&L°ò°`h„ã"ü…X÷E—žƒ¶¤é[¨FD-àKË^<~IðDtðç'2ZbÎyRÃq,”F;˜Éf‡Ī<5ö™²þˆ…·VpERpÂqþ+ÙºÅØ üï„}_Ômj=< ¨MÄ–ñ±3pÝw Þ![»ÄxDÞÆç8ɾ³ØH,ÄÈn¼xDÔ¾ÍÀ%ƒÿ<ÄûPGFhMÃWþ°‰Yì¾!išn{5áÆ›Pˆ­Blþsä‚pŸz×&Ûc4½r©·ZŸDOøßÄX9[„Ø28ö1(ŤþÎóWÑ©Flybï>:¤ïpõ…غ@b#Hl‰@£U€¨:¢÷{@ q?0{‡ÛûÙ^tEÅ_$6/$6ñQw¯Åò€½&˃UM ˆ€S©²ÅŽF­MW›¢Ñv ðøL„&"ázS¹Jæ²-¦²A‹5{ÃN¯Ó{X8ÍŸ¨“Ož¾v¬å9ì{T^¦¨tü|8•ç4võÚG_¹êr"\u 2DeÜTeV_ËWo’T›l.‡-Ê&e3*_=|ª‡†tgŸi«8š¸å¨É‡ò+»"j×>8nWDÞ“Ö-)Ê7{&jÇþ‰ãÏvØpñ?{wÞOňp…=IýÅû¨‚ÍÓf¿>§Ì‹t°lN:ˆ“sa^ˆÜb¯äŠDm°~~ž³I¾†!5L>sSþ‰]šæÑ™º›`gº°ât.8á$éRÔÉØ¼?­µè\¢UøÈÄdDXxÆ/¬fýÊÔä"ùzב…¬#P:>'üÇOC Îøv²KdŸú…LÀï'cg+Œ(û"å!aÁȤ?J;Z<4I'p䈇JD%YÞœðRHc1øÙú–é© 0$c01¦&â󓓯ÐyúY¶!¸ñO<ÃT ëiên\´˜…•»ÅIyÓ‡&hæ"¹Ý|Ћ%Ä9ñáI$/ÉqomÊðþKHÓñ䘄/±4Hb?Gêã} K$Á(ëw&@eçY8Šã[Ó>6_ò ð³,d¨qŸ6w<Ò+ê'egkQK+N‡ »ÛzŸ¦Ç¡Õuì¿´ñ4ÇNæƒ^F˜x—ÝÚEw@ìc›gç›vÝa œM¡tüœøPG§ÒÊ ¹÷…~!Ø»³ŒQŽÙÉS¹ÒâØó]ÍÖ®(œ#R¦ÙºØÑ®&['%ÓÒû®?š/eðàÞ2€6)ºD e!› 0jÒÁØÀÚPÉÒ¥çVN–AÚSïʸh¦Ny,ÚT#? ÓÙ›íб ›ô †¶¸±…ž7lT“0*´«¢Ólîlü$˜äh6×a^df`‰ö.µkªg/*Ãu­P' : Ñ­(G‰a–çRJlgúv;&&H€¢RÆ.hÉщODžó8ã‹<Ïòã[ÛÄîUR›eKõÆeš¡OØwJX‹¬C=G?Ÿ€ù'rV¶5]ÊT§àyÁüØG´Î¶È¾ŒPƒö£ÈäÒCšÒñ{½ÂKtÛë¥%’úecï[vìœbìÓG¾ÌŽÞp*ÆGqÍ송D.9\’]Ö+Ë Ó€PˆÚ7y,*˜¸ê¶}°÷ðÝExãÉ´][(£äÄ9dàü~Æô‚Ùøn8%Öõ(CÚö=ÎÃwß(j'ÉNêpœö så(Ѧ<—Rb ë m”ذØ89õù䀡X¿ ˜gÙñ­é‹GKÔðòyòùɰ|]?˜ªgæï#giu½ökÏØÛpiQžƒNŸ›*…Ÿó•…*†ãcîÇÿgéø£=ÃÝä%Ï™ ïÉÀ [ íã§ôF…Œý̉eÇnPŒ}Ž¿¶x"ÔÁv\r‚â¢4®±¾+%*8ÌÆ'¯˜¬‚¡/UA¥±ôºkßt ê¿Íürn]|*ŽY¬CŽçù"=ôpý@ösl’ºov%UÔ}^¶O/Ÿ*ÈQ¢Íq.¢6ýnRw€žz\bH¸Ó$‰&õ# §;qÅ=Æ•ÎYž';%Ç·¦ïcöÜüèåO¸î­›]?'¥•¾c!æ¼rÇJ‹boÂßÐOò+#\!6AbÆŠÌÆIøóòñ¹nú’Fp$Tu„jÏàþº×ˆn8È,–]‰'…¾µð¦¸Rw±ÿÞŒé‘8xO -éµäÔùú9P•tOêÅ9eAIŽpâ\¤óº²ÂŽÑ>ö§ÒÉ4Ñ]=\ìGq_¤‹ÁýÊódÇ¡èøÖöí>Ëá¸þÒ©NůU¡æ/g§õ¥µwŒscf0{¦²ÓæÈ(ëÂ8âF˜ƒk©Šòìhß>íÕ¬0~ëXx–»lëàÑ÷© [ä±Éfï”±|ìyìÑfhÉšÙµÁ•(ÿ¸RTÍ [ÓPöWëðÀ©K§â üû·Ù‰RižÖw§¸áVâ Ì”i§>8Ʀk{7³: *îŸY†suEzlòÎ iõµ³#¤Z.Ì#ö’v¢Y˜5‰sÊ]¶Jr”NNþéw.uÆÅ©4†øÇ­ÂÉÆÄ5Ϫˆ†Zf[Å~dŒºßþPª_yžÒq(ßš§¼¢x«^²?®æÎ=ç³:?¬­d£ã¯áWî¸nhª/Âæÿx±êÞï÷OêÑûü:á(¢àh=ñÉÄŒ0Ì  í ¸ð$m N&¥úù¨RH0“ œÉãáAT™Øšm ÓþþñL÷îl;I£ð2æž0Í6cï¤Ñ§Yóí0-k'eñÎf[Wq­H—ù×,+ „zMB”În–‘EjáãÖvÖoÒâ Iõç;m­=4˜4;½ôôÿÕqEØ/ê_b†u,؇;_ýIÒÂÃÌ8 Ï7« I³Í<{`úQàA,{´*HÈ٩ÑÃ÷_£õhF˜¿/ !·‡E0ðÌ5±p—êÇIOlçŒóªâG¬ ˇ†‰%¾äÌÒä¾<œ¥iólƒ=pĦ£0‘—hFšèQ·–}Ñ®»àÞR~(Ÿdò÷ õÀ ü£…äöà’RnÐÔ9>±¾Kú²äëñ7~ÄZðÖŠ 5»ßò¨èµ×N ?"§"µëhø¯ìN‹e\y¾”¸%òvÈÅóÊñ¤ö^'Ï•Õßs;/ô´#Ñy]‹Ç Qe»ix!ó*$h•À• úɾx‚8Þ:ˆ% ÙfXYÍ,Yš/E ±œy¥ÄŒ04#K¡½¹YÄú¯ÒÜ-´'éíy<:ˆjŒî9Óx(8Ö ­cÁþQš§F±€õì\ø=9a -±AÓ•Ðôhq¾Ûé¹;c,ñ‘mdnDØ×²gVÑÞr%úÕ1{I}Ӹׂ£,£§Z2ƒ‡±^¬:¯þf‚¨u{]yEðæb aÕÄÞºBl@b#Hl‰@ ±$6‰@ ±$6ÄF Ø$6ÄF Ø@b#÷Æf,®´þ•»ï÷šß›/úz{@j¨í×°ÅŽF›®š®F£ëiiºÚ´®–Õ”¾š2¬KÑ(iÓtßÕ°þãöpXìèÕÞa§—¼¢rf¨h´4(ª,½ÊÚy{ -ù{´|£³m#‚’¾íŠ2ø6¶\BoÂÌÌšŠ}D›„6ÞêÔÍõëšd2žR5ÚT«»òq[wÎÝ›ªÌAxñßÕ·Ø®áóûÏp©å¾ÝmÝGVÕRí¦¯BËŽ¶îðrµóÇ4U?{iE6¨ ¡¿²_ÇŽî£Ë4Û¸ ´÷ήkütˆûgÖÁõÉêÛ½¼Œ+ŸQäß¶rE¢6î<ýܶµø+R⟌:îÎ9È:¦J[禯¢–DJ&üdO~*˜rd!ÇRê,:µ4­+}‰¹_¹ýþhÒÁ3þ`øÈä™`n'üç’´Š?Hóž¡ya…¾à²û¬,…Ø.ôŸ $áÖÔÝE²SÏáNA&01¼UÖ›[èÏVþžæ³­¬@± §h¤…%:Ÿ‰é© ÿTNš¨‡#˜LHe¢\q—…×ûÚhŽÛ3¤Z±Ü+ËÊrîFü“/òÒüŽ7üBÎÝ3…œ»™)¿¿$ç®7 oAo¤=¢|¹)ÿÄT‚(óÌ<9xâ¼jÞbòÅŸ¯€žé´˜»bî5gY(rF7–¶äyž¾+O|Ä:í–Î(D{Œß¡ºN’¶ZV¤pRÒ4÷kä76{çsêþ«ÝÓ0×e~³{ž3înû»©’²uÎ×í]±/"@©YƧrïÛ_ï ÁK=æÙ)Žð—­ì}¤­»¥LRåzzE)~‘²Ó#.#™Ï¯»âp´ç‘Öži>¢nˆ6š]Q e²\dz‚Žu5=Ñ+“»Tû¸Å2>×e³þf®0¿[OXêOÔ{°g׎“ÏåÜmLBª± ·ÙžôXˆò_ïhï9 sÝOPiÄyÕ<±CÅŸô¼~mT/‚ÞÀèl0R䟡¸eïs(G^½Š–OŽþœær5A‚ü3ýBh™;ØŠ¿ð&ê–$ÀÐHÆY‚©ìÍvZ¿ž«õ‘KiÓÂ<|õr_à,#¶0>•£ ]¥Al×ÎE¿@ú ´ÖÂxßW‘‚©O[Ët!õWæ…:^»ª¬À!Y…ʇFZY>Zˆ“¿}SK7Û¤ùˆº°ÔC²B™,¸Åã»Æº¥rË*[,ã‹ 55Éók2# ö'êhÙ ò½ÑÀd!uf\£½åa&u«M’¯ý;±x‡tò» WÍ_L7L„Ó¾fZfÕËrÁ@Ÿø3© ¥r—È*Ž+Ï<9Cdäá˹+ÍŒ——úõnÊD1œýIŒ¼d½™i7_å‹m>'H#Ϋ։m9ÌÝ$s—{b…‹˜…çé‘h ¹WÙŸª£§¯”¶éáˆv¹^EË^ûw9øÝ^¨'-9šg»ñäXßÙ1rü@üN9–V·û‡ÝLJô¤>êÁ.X­<Ï_óÂ’2šÚ-_.ýp¹ ÀxÃÚÅ`m·ç6;/Äñ„ëPíõÄñÝ¥ºèú{#:àÄ1uüäJeFÅ6ÜaY­ýȸ¥NÈG«ë¸–ê,̇|È‚”%ê ré`©^Ð ™¯º’ÜËÊJ‡½Jd|^ι+̯sW]˜ûµÅ’œ»ê¡o © z3®ÿÄ=(É7-‚NÉq¥Òܪ>­7ã®ÈÛï|ôãÿ83PâOšhÒUQubŽi¼›x%èxû y)/ëág¤å.êUë þÙc€“‚sÞHÎõ:HïÅù³u‚©}_6“y N¯Oÿ ²‚ š#þÙùR†ì$}Í‹MJ@Çï.–ب¬)꼿þáÂx *3ËI[¢ ¡?ñëÿ ÎÃKâ¼Ï Ï/“tóQŠ]Æá¹›O‚û댌Sl>&H.&AÊL¤¬ WÓ`ôR‚Èm€ØKä­‚ÜJY…q»¨Œ¯B"#äÜ5rîŠý4÷:+)u$^wÞnTèmj¿êÉÁåÈ.Ðó‰°*qEÖݪaÕI)×ðû•)ÿ³o/H¿a±û¡Úà>>>Ç-.5_î®{¸½¼åkßVç”-ùFk}>W魟Ι(Z.¾®M>ýßì…UÊÈ‹.æµ6õ­ ®®¹ž -òºé}‰è’©“Vy?¤³«i_u-j~Šõ•xê‡çÊdhÊ©ò „;Ïb»äÓ ]D†PÊ~XÕɇÒK:KC…Þ3"½p¼É$´˜?2vRrvJ~ömu¬Hâíæ“‹,¨ë[ÔŠù݈ ÈÍ-põözQ.võ8—¡÷±¹ðon‚b¹W:n‚ŒÍsqNÓ¬çç€ßÆêZ¥þ¤aìŒÊÒЬÚιª/è-?›¦÷íEù!Nwœj1c=<Ø!§*0¯ˆ¾Õ'öj~šÍsg¥¼î+·äáŽKh™ŸÖ®á÷ߊ¿KÄâ·N­C†êêb}6#ùí}vÒdÎ<1ÒV=ù‹è«þOŠ/ÿÏ«2€–`…9ÅÕ­«ågÝ$\¢qêEã~*ù¿_-ßùÌïÿÞzd¨®.Öרâ|6_V׿nªÚpõ _?úls}á"ún†ÅF Šè‹­"¶%Ø$6ÄF Ø@b#Ø@b#Hlbã(4x ‚Ø†ÄÆg èŠ [Æ©1Dñø ÖË!6Ìâ±B¬{?Û‹®bû!Š>6â!ò±Kòk.Føú5DZ:àšnSBLˆu Èbå× ¹v}²¦®æP›ˆZ´Ø,¿f,®ÒÙÿ©øhÎS“Ê#Ð&o_]ÈØµ\xqI'äüÐY…¼B½Wi*˜ltQ]gÓ>·ÔTª³è„þøõZó~`yIûYrÒ~OÑy“Ôxä-(TD Å‘F˜ïl7IÎ ¿IDAT¶즙\ÂÇmÍ4kÏë-dÛ"l/Y\³î2wt‡à¹N»ù¸hª½,‡lHÿ¹¶^šØ'Õê>–Ú匊ý­WÀ~ÇÓ_²§_$<£±ÇÃ^ò+E^£Å.ò“a,؇F’ì–à"r0oø>G¶My¶m¤'C ±À/ºîìë‚áØÉ{[&šb9-„æVšKQìoöÚ#˜ãò’±Jbû’3K“ûòB~MŠ<ÍË)&ó”· ¯Ý>§¨4g¥º`¢ÉDçŒY¡ÏÇš9@ýÝP¯9ÄVBk>v¾WHƩ̄YœÓëd¹Lu3Ó=°—d…û^…äž!­gy;޶QÉÇnò.Ðüši1k¦–fœ²mö-G*)ê_ÄËøŸ+Éâ-Öa Ô«Âì~ù‚buÄ“{Î4þµà¨œßreî«c6(Û°½½3ÓxHªKLö{äÍ<4µTÒe¡¿u¹Ä {Ð #VBQî¾ZCtV¸z”ïï‘—|›íƒâÛ¢‚®ÈÉæÙ½ËøØ5êo0{ÄÚ¥…ÄV´ØÄz,6>…x(.ˆmÚö±÷b bÛò Ä6$v´b-–p«¸"xW±ÏcÛóˆx˜|lóÈiä˜Çb”Ç¿Ï4­ú)k ‡D<°‹G¤in¬ºíš˜Š´FÜO”¸",æ1:1怟ºw8ØÓ¦Â§·‚þ»Iòe&Ph8\ÀŸv8’Á) ‹LNDyH'&§r ø'fn±>è~Ú["x&Q½ÇX> U=V^Ü¿ÆÅÿåƒÈö+G[ëˆûKl!æÑþþñ„zLÙ¢²çŒ»w8Cd𣰳ޜ^Œõˆÿ’hî¦Á&;DºÌ-qw?ÒÒ„éÞm'[˜oßÕdï¤kgͷÛ:+ÏæõQáÉA|«Ö‰íp›8Üù*$É?S ¨êºC,šQ¯’ª«kŽÄöÐû‡V-ÐP_`h$½,ÁTæf;i1sñSö8vŒ:x†lLkÈ^ߪœ“~ÑB ÑÂ7åžòª’y.©%ÄøŠßÄ÷~É,÷—Ž ýë/7ÿROÿ6 jÓÇcY#ü¾¢ªóG.7›Ð‘WºÍ*ý1x\Œoä„3%ûi%Û€†¬zÛ`±éØŸRáÙxX?«s <ÒSØÒÙ Ø#ðŠ†§ËU ‰äï(<§]°¸¬¯"K,?ò-Çž)âá…^ O|÷+©.¨EbÅ<ÖO<Ð'9ö 7s CÏ“¾4:R¯»–êÔëµ×N ì&;èC²k ôùžÁSÁyðÜÓ™ðˆÞ³§Ä‰ðTltÀ`O¿²'DMš† ¯KÔik€…,«Ê`)YÞAÌyméèåfre¨ƒ°K¿:ûØhk°ûC#¨!Ð{Ãýô^‹buÐ$û=kºQÒ¿Š=+¶c<ClÖãTx0Xg‹ŒGÆšÇCܘl£ó ƒp}h¦E(² ŒEuémºFtð{'>$¼Ÿ»keûmg¿xw,Øj¿|îˆZǂϲñ­gçà=Óún{xʘçQx «½ô,6Va„bÊ#ƒ·*±™5’w £á³á+?ÑÀ¡„ü×餭Buáã ÖÒ-ÂNþGä­ÔÍé7u \ê±ýB ßÚol÷W"£ç^7,Š# •^…§¸Ï{\Ò6ž ûî[ÌbКãÇÌ«ígßÜûwý¥7Õ*„@z”þ®ð¥¸VÙ7! RùQ|R”›wñä(®þHíaÅ<®‡^+·YæÏÀ†GFTó¸æWø5y{3-6-öVÉ+‚1ˆª_<Ö0æ±-‰1ˆµYÂ-BlŒyD¬ÉsŘGÄvÆ<"&{¥ ÆÂSKÉx+j±Uˆí[õwOb#bë[„¼žã;³fˆ]ë€ë3le™|0Ë74…ˆõöñsqÎ`ã7=ø¼¿háÆ~|ì±*”ûØòzŽN»ûèwv¸ž9ž¦_ïØÕí Ö=ÞÙlëŠlº|l)%ƒ¹<`ˆX§Å–×s4q¿PÁŸ’}V€ºüLûwcßa‰™gA«‚„å~ø$Š 0@‹X§ÅÎþýÒÚŽ´¸nrBHWü`ê5¶ƒÆ.îßK÷KLd3b£»x=GR6b½Ä.^ÏQg¤ŸöÁ`†||0ø4] Mnþíì{fxB V劰+AÎjcå—Ϩc7Dà=#¬V¹ QkXM Ÿßý`„c ˜â}lÄ*±ÖаŽÝPXOQÊL¸„X¯]kðÜã±e‰@lôâ±æ€1ˆíHlŒyDlKbcÌ#bm–p«¸"óˆX‹çŠ1ˆíŒyD¶àuæ`ágòL¸­Pæ“·®éÊcȱ¶|4ñÝŸ[艒øƒ š’§Hè’Ð8³¯\€Š!8³ b#(¶Ø)ò¯€ƒ=›Ì•ïâØ;n~ý8+ Þ~¤¥¬Šo÷ŽîçV+•6œÇCƒ¨±½iH{Égvæýô5§tÍÆ ]²#<#.ÔÑ»È>b~92,áÒB]+ŒMœ†ýœ¼¦c0(U¢kHÞ NLÞM“ÝÉ©»‹ N²e@¤ºóÁ‰xü.§Ñµ(?‹Oô!6JìÆEH5’Ïþsm½ÁÝÔ) w™wuÓÅ“–Û"½s4š&vÌné’¼õ84ÖrBg¬[Ó1lÝGɳ!•ZŒ»[ôaï”Ý9sÝ6zÎÈë?.YúŽæšo‡à6$¤VÈkƉ=êʸFÉg[}$$®–ƒÚG]msˆœ¿ó¨3±…)² "Æd‚­éø,°u_Úqp,­u/†YÏæzX"͵P¬ÿ8ÓÀ^<|žœÂ:0ƒØ8±ÏBŒ®ñó—¬bh£SZ¿ŽTt [¦Á—€ÆZ‰­ÿÈIë?²5 I©Ô3ò±qb«½‰!j`#`o”Üîò…9 Ϙ™ç¡^î…#~Ÿ/T®._ÜTkî}JÙ3г<íª¡¬.‡·!Õ¼+R××(°2g68O# sŽ©â6†aj·!I< ñ¯Xh ,$¥•ÙšŽÉÂšŽ MÞ…L,ÅA**ÔM×ÍÞ6=šñð[ ŒØæ¡)šX¡eÏ,ØNGJLöß’7ãxxnÜ"34æw£_{W¦§õì\¸tMG“{Îâ (R6Ü i„º¡âºK…3Xª³ ÐYª)U4ÑFÏ8¶ ^>"V‰ê¯Æ™SU•0eF±!Téé>½¾ªRµ)¶Ñ`#6ìc#HlbÛ»"›ŒyDlGbcÌ#b[ck³„[ÅÁ˜GÄZ·´˜£gÅ••*”}Ãå˜ØÀÃO!öÃM¡X×±Ú…K‹ƒÚòò<œ•Ú"µãŠÐ ߃O¥Dq]Ç>(^úQõßß¾|bT¥X÷qÐÍ‚Øm«g²—u%–_‘ƃþZl¥Á]3¼ ‰´æ(®ëXYñÞ÷Èð øK¹œ^v [bÛªÆ+.ïJx<žµ7B<|ÄvL¦®iÀ4þµ ¸‚£¸®ã{C3F¡†mpš}6Áà÷årZsOXKïñPð>¬þˆ@¬€êÄòÞG¿§øÞ‡\Ò¯¬Fõã]‘‡ ʘǺ­ 0ó+<ËzÔrIQÖˆ5Ä#Ž»æ,6±.‹A!¶ÿÅ#±]€1$öýÆ<"¶©ÅÆ„@@b#Ø@b#Hl‰@b#HlbKàÿÓ´™X¶A)IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/searching/0000755000175000017500000000000012165514774022324 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/searching/regexp-search.png0000644000175000017500000007311612032647155025570 0ustar ebourgebourg‰PNG  IHDR‚3*ìõbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 2 2”£p IDATxÚì{\SWº÷Ÿ½rDш Æ[k ¦bG¹É j%ÓéñÌ0™··aÎ §ã{(™ÎÔvBéXÌ ½žá8sh§l-“Aäb´éHL{´61@¨‚Üï½ß?vr' (Âóýä•uyöÚ+û·ŸµÖ^‹x$<|wd$ ‚ ro©««szä{<ùä“X‚ réîîv€²š‹X23~ù¬õ§Ø7Þù+Aû¨nhœ°dÆìããÓÝÝU ÈŒ™”aé‘ç碀¦«­¼>ëYHH޽åãã3c_A´wšÈ9-5YÀ®°ñWG$AÄ’9”aFƒdAb6ôÛÝ݃Á‚Ì#nºÚúÛ×~Í?ýôÓO?ý4ª2²àýcô‰™2Ìhð{ï½Ç|ýÕ‹¯¼÷Þ{¿}íרÄÈÂ}bA¦ËœÌ”^ð«_yúé§õâ+v‰åR~Ê)Òä±€¢(%ÂZa’áÁ|…D(—òk"gž!‚ØÄ0eçd!2k2üç3Ï]è€]xþdÏöé*±µçûðå¥ 0õD-¡D©”èäsºbi+‰(_!êYº[‰‹…!së£#2]È)5Î]èÿó™™,ñÁHï¶­tµÏÜÆÖ1Ÿ/¤òÉ@ ø|éç:¯÷T ßð»¥ÄGŠÌe›/ø|qI«!D*o-óù|;ù ˆmplAÙ”aFƒßyi×;/í2|uœ¦«­ËÙn†¯ËÙn3n-‘TÄV*>z¡±ˆMyñ±Ð|…B¡P(•’Ç@(Q´ß}ÝÚÜ(Š|ÌÔóV(Jer“D/ÄPš"©R©<\„JŒÜ…OŒõ€ ˆãLcløÌW³=slE®>ó)Ó#Ͱmë#Õg> ^ÿãé[ØÒtùò©'Ç(ê` @%5à ®ÇÙ¥i‚S@mzát±@nâaï?v…$)ê`$@€¨ øP…B¶ dZàØ0‚ ³,ûñ7*K6y"TXòÉüDÎý0A8fy1KÆžÂiþö;¬wdá±8džéúܘ˜c ²¡():¯ž¦±U ÈÝzÃOî u|‚´# °.a¥#è3dTWgØu:ç¹ÑšÒ´Ìr I3÷—®ÏÎÄæ€ ÷ÃþÁ³Áàíåâíå2Àºdù€çþïSXïÈÃàÏÝØ0­)MŠŠ‰‰‰‰‰‰J-ÕÐ4£ß¹QQQQ¹õ4ÍD`ŽÍãçÖÛÌJ_/üšÒÔÉRÚ횤ø °$©øìê"ã.h"<£º:#œ ì™G×çZ³Á8‰‘UFù×çrH-Õ ó,zf†{ðlð’À–%-·†®X~ ÆadAúÁsX€"/V\Ô H&Š’òÆ¿«ËÒŒ#КҴ¤ÂÉø²,ƒÓt}žñO¤,3­Ì êyÑIE “¥ˆc³l^Ó´F}(*ìðS‚)Í·b^t¦Ì؆è´éêh]^´¡3œ$ŠÄ±¹õ¨ÄȃÇ,OÑbô•Y-‹ûÕîÙíж…åò^ ˜{S¥È `Ɔ™ùÒ³ü°Lʲ²&ç=Ñõ¹±Y2(¯«OôŠŠt³º˜>íú H2,¹ø„ˆc_×ãÍ;\Ìd¥)MK*T©ÔmE^¦Œ$Mò1{eJ›Z!\öÔö[5ŠÏ®Î×—ÒPøB”îx”—'˜ÙY^\ö”§†!‹[†gŒºéVã•æïÚîP”•çYO/÷u¼À-Û×áCæ¿O<ýÒÅDÄSååfŒFgiº¾®(ˆ'²â_W·C8"<ã„>+67@eæÝžœŸ¤çÄ—g–OÇTãqn=ó&ÝhÁS‡ÃÊ UFSWˆ‘¨Oæ ž@”áéQùñߵݱ¡¿oèË4|ù†Õþ¾±ňÌ7æô½aŠŠÏILÁâ!’”eÅÊ _€št[M|\’jzÞ­.ÈY"=<¦kžIAFO3äîs@Eî Ÿ©+a¶ñvZþú¥ê4¶…oaâXBÓO=󛋦7 ŠŠ¿óè7Ï~±éÝ”°ÙûgÒôÅSÏÈ-ó¤/ŸøÕï+ EÿlV EÐ'ž.ÌXiƒ,+FføG0Ër1=É EâØ"*,ŒGQ ¤,3rªÒ “‘Æ©ÊËm Q~Ž:6KÆLT.2I{ž«óH£×þ\@ºÔ)Šwø¤X”iÖçll'03ËÒØ”a>sñÜ…þ?iœÖîL°Ô݃° Ƈu2¶ÚO÷vÓ?jÎ×ÞFÞ^ÑãF×Ûß+O´ÐHš¾øÍ=©Dúò‰¬\øÙ»£ô.ZæÛšÒG”_ŵôe ‚“˜u¸6©°A¿æ”¥‰‹t¿†gTs o:QñÙUéWno†žqöl†å„jÞá§Â ÂÖò#fæÏ·2¶Œõ4Í¢âsªžR§é^¯Âå3”a+ÌŸ»ÐpqZJl‹óuçxy úFÆJlŽÓ…™o·@ã¡ê¤:'°ZÚqú™o·‘äöÿûqâÂà[SÔú½9oDøÆ·ÿSϬ6÷Û?û¸"<ãsÿز PêsŽ51Æô8”§ž‘ûºñ÷®Û€,`?˜`¼p,Ü4ÐzB{yrD'ªE“ßE'Ίlÿj´Ô—Â3ªÏfLÆ)~²°Áø4¤mA8ædl˜Ñàw^ÚõÎK» _dphÀjø_ÿòãï=ÎÛÈc”Ø*þôüèÝO²s«Ÿ)hÐýƒu¯½— ß}öÖÿlÍùä·ÙÏ|÷ñéNšf|ké;§³ßýçÛoî¤ih,þ d|"}çôàêÍ‹ÐÜnŠÛ´Ù^鯽—F†L²3àOÅJûf_‚_Jß9±öozyî7Œ È|ñ†-±\aÃÖ2KÝ=®6êfMš¼(lpõƒâ~&Ù¿‚ è•«¡Å,P/¢ ³ü€¢bﬠoÌøÇ» À—¾xåâ6‰|£ÿ9¼D>ÝÒçØ l†çÊÄüPÛ £¢Wb2V! Þ'FexvØõˆç¹ ýϾzÎðuZk?1s² cÃV™ŽO-–?}{rFM·3þñ/V*O=ãˆârü‚+®|¶…Inè[F¸ßð=ÃNo6‚<ˆÌI§ôOölßõˆ§Aƒ§50lµSú|ݹýø‰¹ùKoßôxÅ•¯Í‚×®\i)´Å¿©7Ͻã@\}î/ënÓŽôµ¼þq¡^øottM·&5ι¢ºê;‹˜È|÷ƒ±™Þ0£Äç.œc¦•ÐN§ô*>zå™}’É™Sì ß»‘ûÜŠŠ ¼âOÏÀÏÞMÙñüsÌÜ'!Iÿ§ž ŸìÜÖKì–Ô쌿Ê:ðw  vÓÔñm>ø.œzf_„íÍ9žip¾ã¶Â’g¯b"óŸ¹[SA ‘ššâÅÝ Ò#Ï[þ|æ+ÍŒ÷`:¥™YZŽþó_ø[¾°ÔÜrmgÄ.öo[ï /°­l½šÌ€[;Ì$ÇÞbþ2fºkfœcì£Fį¿þ:9OLQ7ÝblÍ”6Žƒ ó{°ß0‚ ’y±Š–ºéÖ¹ ݺtÆÒ ;#tþô¹ Å®8-ŸxátPÛßÛŽMóÁçH#2ïdØñîhFƒt«²[)ý׿|äçp®BñÓÃ{ñ²!óŒ WTT`½!ÈbæÚµkóÂÞ'8W¡ðó €ÛwZ¯6šôK7·\æ×]q¸f,² |âC‡a½!È¢¥¡¡a^È07x£¯1¶¥Ö ¾Gy@¹›÷†ïûäj|Õ Aîç?¿8¿vX2t8Ok†ö”1›5ŸÉš»:ݼ´¡ûnò<==ðò#÷מWX}QA¹æåA ¹àOrp`¨ýfÏ-õðÀè¸ÁúìTϵoÕxí‘Y×”Fd,pnQk®|ÙöéÇêÑáÉíO?¯@FæÐ'Æz@Äqœð¹½yì“Þv²¿ÈÕÉ{€u <´[ ºðº#³ ®) zÃæüüȾáA­ ËkRƒ€&Ý_*KusÌåÆ&ñçÐAžò^ÓoK'AÚ­: &hï•.¡Û½¬þÛù|qIë,ÜUft 3D³ß<Ϲ¾ý!3á.džË3óêïëÆÒ¥R¡P(ù©ƒù …B¡P*%ÂûeMk‰˜ŸŒI÷ÛAž¾{A¿v4Ïc™ûâcöüÌÏþX\à’ÖÆ°ü;‹ò å鸊ýw©LriJã Íî]c.òDæOL’²Ì´2©3ŽrŒÆcf£¢rëës™ðÔR ­)MŠŠŠJ-ÕÐú´šÒÔ¨˜˜˜¨¨ÜzšžL53±o-óù@ÿ¬*—ò¥òÖ1Ÿ¯:l-óÍõ©Œê36áâcpä´µænY®á1Ú™ñ#¦é®á‰v6¹eئç¼’Çö÷‹Šy¼³£ÛÕÕmã.-ìܼ3~}ðú@{‰·šÞ>ôÿfKÙòv0Å-ÌêíiF²oùT ð¥r0݉JJÄ6=~+'ëð©!0 kJ'dgÇ“ EIy ãPfoݳgÏV'‡Q”±ÇL’²Ìº&¼¡H Y'ó@U˜­ÓrE^R¡Š—œÌƒòLÓl§OiФJ¥â£àX±Ü4y:l-‘4%+ …²Rt­F.eR)Æ [KÄEÁ§7²&¥ÔZ ¯)Ý·3À¾1L¹riJã‘Ó …âô‘Æ”)ZkiJM¤Î·NnÚMAž#^õþìÇwíèîê_²Ä¥µE¶i-éLíÜìädkJZiš@À—€´øPs£TÄV*>z¡±ˆ‘-!Óe§T&7I B¦¿œ.ÒÉ•PRzü ©ÖYF³Ìß–yÚ0¦&R¡È•¦ðu5F·™Ò * eAè1‰Y‰V1¹Ó!sêë¤'‡‘²,ãAâIØÜÓŠŠÏI0៓ŸÈfâ¨Ôm4]_W!\7®«ÛAQ]]]>“í«EÌ_# (Ô2 õ|èža…‘ú¶'”"L&l=_‰J DÖK ˜Ê`‹’Ó%›¶yk ÍyÒH¹ÏÌß™Òv¶/´³^ÇÑ—~´6pÇÎG;ow{zy6ßhaûûp9™¿%ìÝ}Dù ‰P.åKåJ‰ ¥éòåSOŽPÔÁ€æ~ÿ±+$IQ#™“{S“A"ŠH)_R²Óp«°Œf-»Blž§Uc$B¹ÑÉ 2·*FŠRjLK´jŒñqˆ»ßo˜˜•\›T˜™Æ=)žìÝÑ”¦%6$$PÓ|Ê&eY±2 IF›çrÌÉVŒœì‰I9E’F-M—C#§Ý¶äR~M$>"(Ã÷’l¬ûÊKÇœ{y;"6wÜêZ¶lÙ«7׆ù¯[ììììPza¤(¥F. Âlá2È¥üš)3’(Á éö„'gœç´ŒqÈ×™¦1ˆ=ŸxÆï,'1?GY˜]̃šÖ”eª€w¸X¬NÊ,ŸFfþ\Pªøœªô¹¿Ó%0x‹(¿Ø¬µ–ˆS @©êtÔñÖ)*jn!> "‹€…Ó)ýê¯ßpêÝ“¸¹ê}µ§§g[«&0xU@ ¿íŽh Z›'ï–=Vvzɬeef¶~—™~˜IžÓ1 T×ß,¯)E ïÞÄ”ÙÚo˜ ÂÓOæ©T*]@›Z!\ö´]¸›G’²â²vW}—S´¦ `g\£E+jiº¬o²6þ\r©Õ±aŠœ/)ŒéÚvkI‘QÛnlnÕ=å_šb˜ë`å€ è ß9GóÈ®°ènV|z“ÅbU¾#.iMÐZ®›››ƒ*•&8 BïYPÃç H’¢(%BØ×ø„@@QE¢Ò>œPFZËG×GQ›Žœ.°çÛšåoË<4ÆÄ߉@p…¢(…wa 2'~°‰‚rDù9êèL½*ç$Ȳd™Ñ×y< d™ÑðÚÙŽäÃÈVGe‰cŠ€¢âL5s>T)å ÒHÐ7$¡¤ FÀŒwlzረ4…J‰PrºY¬‹y0¿@TZc=;¥\Êç§‘:WÁ¨£Û²õî'Ú6ÓuÄçÖ#§ Dû ù‹ Nñùi$Imzát1¶td^@¤¦¦xq·‚µÝ§µÅÂ,2­rß>ñÖ`Жïq”ç[’èï|âù lŽŸ»»;^`½ã¸Ú,#9öó—1 6fflÙ把ŠC‡͇–ÁÖø/@æ#/¿üòBè”f m|Í¥/4Nά¾žÁ}O¯[ºÔ5¹_>1Ö‚ ޳:¥Û›‡.ÂM’$½ƒz¶ÅpØþ«<==ñÒ!”(ј[pMiü Èâ•aš¦:oõ±7?ôðf‹…×¹/~ðƒ«ÁèÇ#È}áüçx–®¤­OpwÒ³?Æ+ŠÜGîþ½áûkù"FyÇ˃š^†ý6vܾâ÷\*j0‚>ñ]YŽ—Aî=###¼ £#óFdf,¨5¥ûz›¾ýîê% AòjÕÕ+7¿½|ã–æ^fäÞøÁX‚,^n»Ñ¥iꦴZP)Û|–/›u$š:niîqU¥ÆëÌw¹ß0‚ (Ã0ê«w‚}Í—¯v]Åõ [¹Ú”}ø7¼ÞúÄ‚Ì+ KÍWo L¨”mÐ×ÛßrS£ÑÜ& "õŧ qrŽ&>¹¯72GàØ°e…`% È”¸ºº.o¸»c€9èë¸r¹±ézKOWßΞW~ùfA·9G sŽîÛ»¿µ©«½µÓzr©@ Sír/—òYnÞhú(ôî1Øã ýúÁ‚,boøÏg.ž»Ðÿá'»ñüÉžíSºÂ†ãþÁþ¡ÑÑ1Цhš& ²··?ëµÃ9G I’pww»qµ°ÂŠJ¥4¾pZáÀþº†…xîn}Z¹”oØÿm†équÜyǃûÞ0‚ ÷‘yç 3ÌŸ»Ðÿç3íÇì1»»»NLLhµZ‚ X$ISôÄøøñ£'ì;NN¬ÎÛ=˜ÐZ"Ö»Œ­%bƒ¯ÚZòÓŸJ_äK?×mytjrÓ4Kù|s¿¶µDÌç[ót[KŠJEVEÔ2¹”/•›deVºÕü©ìÖ1Ÿ/ ¿YäƒÜSŸ˜Ùˆ0&&&&&&**µTCc}"Êð}€Ñàw^ÚõÎK» _í0>ªåïaއ‡FÆÇ'œœ€­–"bb\kˆ|àŸvY÷q B?!3;òíœÚz¾â Iêv.=_q[<J”ö”K‹‚O+ …rÒC-M‘€T©Tž.2Wµ–¦ËÖw:•KS @©P(”2™È,+óÒ'#(%B›™Xˆ°¤"î´RñÑ ºˆÍóA¦Å]î7LkJÓ¢3Ë!!»²òìÙ³UUY77Ïœ9Þ±AP†ç+g¾Ò˜}Ì"(?»ÎŒŽ¸¸º$II’ÎKœ ‚èºMQ4LhµEÇJ­—!”(ù¡Ç$Œ"éu¸õ|¼ÿTœoeTxçJk‰å5¥¡AæÚ¢‚âCêè‰mDn²3ú”Yé#ØËÄŒ–¦Ë—?!B`åWMij–ŒŒÏ®¬ÌŽ'eY©¥“¡$)ˬ‹¨,N£¨†"qt6d<ÌUav™F/„SÆQä%ªxÉÙÉ<(ÏÌSg^ Y•ÅÉ']lnsœŸÈfsC@¥nÓç`?óÂpCàºÚ8sq"›Iåu¶\’”e¦é Â3ª«QäÁ–aF‰ÍìàîéÒÛÛ?6:ã£ôî];ƒÖ.[æáâºÄ××góæö'ôöôE&lݰ9ÈZú9Mû+⤺^Ù€q›¨Mq;uÁ”þxÒu.Ã-æË4^=J”fñÂÒd>)P`ÏG5)ÝêoSf2m›»Ü娰mÚÔ*Ó#‰µ»)ËŠÍ’‘ä´2'ˆðô“‡Ã(Šl(ÇÆæÖcG4‚Ì„~ùŽå+¼Vs½ÛovG&lS)ÛÜÜý9̽=}Í7ZOþñïA¡«8~6TQ)±pY‹•‡Œ~7 --s0Þ`ÜÆfãB‰B!qÀYY5iêLÌr³e32C?xfLá “Éêéááf?úsyÆJÌãúϦáþ\P*]?³ÞwØrŽèDµ¨>7*KF–gæEe‚ Èì O— ›×¸¸ÿ]\Ûß?H@A$Iзou\¿zslt,`­oDä6¼ÞÈÜq7kJ ž:FQå™i†™Sõ¹¹õ4MánIÊêŠ:Iòv 9³'u†ü‹ËÚÔl€ëjÓ¸‚ôœxŠ—ƒS©dqÊ0<¶û¡à ì×Ôm-ßÝjïØ¸Ý¿ãv×¥/U__jY¿1`מp¼ØÈ½ñ‰g"‡Q~UN¨ŠÄ±ÌÄãºgÉÈŽ§dY±±Y2*>û„ˆ3»63ù7‰'KÛÒìĬÃfÏÏ&× ~,.ðIkãÌîÂËr)Ÿ/8Ö;úÁÖ[#³?ð4–‡¤ïߊ’sZô=;/Z¿=ó½(K¿Ù³a_çîº (ó¯Á9¯ä±ýý¢bïìèvuuÛ¸K ;÷ïŒ_¼>Ю§k8–KùRyk‰˜Ïçó¥ŸÛ+P(Q*‹aÍ/æä½aÅE ¤nMiÇn²³µÛོwÏ éú¼Ì0)» IDATrŠŠÏ®¬¬®Î€b.,4eiI…*^rqåÙ³g«ª² ;•ex±óú«ðd?¾kGwWÿ’%.­-š°MkIgjçÞ`'§iMg+M‘€T©T*%aµ¢O<ãÛtñõäìä0Š*/.ÓÝ ësu.Tddæ‹Ñ™2’$IYft^=M[Jš!rTn½™ì•–¦ZõÃhº>Ï4[[YYE]–f–­Áí³”4˲óbôXÝB‘®ÏJ-eêÄ2ó)OÐǸcK²bc-ëÖ~Yõõ¹fg7Õ‰0»X†pÙÁÈ'«©ŒKaÂSK5º¾ýÙ9rÖÓ=Gâ3«‹›%·Óꬖ‚2¼Ð8ó•ÆÖÇNª£/ýŽà·c磷»ÝÜÜÚZÛWs|¸œÌßÇÓv,DҬ¸Î|³=†‘…ÁœŒ +>( ' „»yªZ¹~_#Mijf¹Î…ª©Éy­*'ž¢(Êd³BšÒÔ,Ÿ]Y™OʲRK'ÿ$)«…¬Êâd¨ ?0q· "<Ý"[;Y™ÜS˜l³ãI²Á­"/©PÅKÎNæAyfÞe1ýÙ³g+‹“Ã(ª<ÓÜG¤5¥iÅÜ“ùºÍ$lenç ÝÆ¥(@`°$»²ÒjÝÚ)+³.¬Âþ‰0\’¤,3:ÍX/í¤bJaŠÄÑÙuò0T…Ù“OiVëߤYMçoüÕ~«³ZÊbfa¾°4ƒU´^yé˜s/oGÄæŽ[]Ë–-»qõæÚ0ÿuëƒgÏ.k# Èž™_¸9lüõ‘5nWøpV:AÂݼ¢††Zy»HÄ¡i¼VÀ¸PSúÓòZE%D "ž*/¯•k™¤/NdpCTåuõé;wF[YYÏ6"ž*//¯«O@QW!\7@u]­¡mÇÄæ†˜î¶¬×µ¸*ɦë-3ŸÞ Z/Åj%Ø++']0ÍðŒêlˆÊ’5‰c -¤,RJ PQñ9ù‰lP„¨Tê6¶ÍúŸù)8ßðuÊVgHeÖò'm=ãøÞ0À«¿~éwCLâæª÷Õ;pÚZ5Á«ýëˆnlna@k‰8¥D‘X›‹•»yo˜‘^3W¸¨¡ıEú•î^Æôd:ú7lt¿žîíÂjVŽ?ð’¤,+V$éHBZSš–TØ@’@’@ÿr½8­\•“a*¨f™;x‚¶K™Æ‰°ï®ˆðŒêÊtMYZRQƒ,3MçâÏÌ0€99…éÇw´ÕYiö‹Zog”aÈ9šGv…Eÿp³âÓ›,«òýqIk‚ÖrÝÜi"B‰¤|>¶9] Ú_3ÍÂåR~Ê)’N NQÔÁ¥Dˆ—dQúÄf®gYñõäâJ‡€É¹<µòöÄD¶?—ç˜ï`™ÇõŸ¡Q3ÊJÇŸËJe½ÛÜúégª€w¸X¬NÊ,7ýu÷¢¬(ȮΙ;2ìh¿;•àxYAœÄüutf9#W31Ì~ýÏüfT½³Øê‹}ŠÖÛ'þâçûÃÍ_žoa9±úû÷?º&(Ð1 6(±R©,> ”èDÔp`ˆ`K\…¥R¡G‰üÀ2ËcÊ CÄŒ3·iánI6ÔÊÛ™c€ëêvÓ»žI˜&”Õ)u2’äír“3Év:Y]W·ëâ@—C†´Åe펔e6wÉ”nbzeq2¯<“™ûã@æö¶»ÝûÖ+Áá²ìAÓõ¹úYfºêÒÉ•#†ÙÁ¼þ­6 OaÕ{w­exñÁ ÚþøšK_hœœY}=ƒûž^·t©«»»;¶ d~ð¬d¥~Êd”Ž-ÜFQªZ¹†¦9¢9 ª"q,3yUìĬÃ!r´™ 8fÙ:žUmvtl–ÌxIÛP$¶:YÚ¬,ÒsHR–]|f³µ€àˆò«rÊ3™ÉÀö3·}‚áöK±S –e¿‚OÏ‚ìè蘘˜Ø,–ÌôH;b˜},ëß²I8^]3¨Þ·ºÅ ‘ššâÅÝ Ò#Ï[þ<»›:ÎÝ”;­´Ò_œe¹éÔ³&„³>4ØÓÓ›2%’co1ãÁ`ã±aF•qŽ/ÜÆA2d6àêó¢3Ë!ÁÁÎd>ðú믓‹¾áR·úœ–·­zèáͨÁÈ<ñ‰Y$,ê)ZÒÕ¡õ îNzöÇØ»afû #È,¼pœñ ±¨½a¿,p~.5A?Aô†ï9ŽpS£æ3YsWç ›—6ôaßíBž§§¶ÄÜoAô†g™Á¡ö›=·ÔÃw ãë³S=×¾Ucµ è#‚2<ç´¨5W¾lûôcõèðä26ŸW  #VÀý†™¸Š–uÞ<öIo;Ùß?äêä=ÀºÚ­@P]X7ˆM?5Aô†g‡ŸÙ7<¨uayMj0Ф›'¾‡XgNöFexq’÷ú›~[: ‚ôÐnÕi0A{¯t Ýî5ýÌäR»Û¶–ˆqßÃ…äc= ‚2Ë¥|¾âDXï886Œ ÈÌÀ±as Îy%í¿êû»wtvt»ººmÜ¥ýækçÞàÇâÖXÛ÷P.å×Dê¶d0Ë¥üšÈÓÁEû]Ñ ¥Í…¥@.=Ö„•?G¿~.²]¸Í~ÎË·À{g®9’Û×ßâ…BæOïY‡•€2|¯yýÕ?ø²#vwõ/YâÒÚ¢ Û´öÛÏšwî &¦·FkiŠäÈi¥2@^‹5{ŸØyÉß+Ü]—8;á >‚8„–¢) †FÆNÖªÇÇÆPŒQ†g™¯4¶~²³ëÃÑ—~´6pÇÎG;ow{zy6ßhaûûp9™¿%¦½Nº¨ øP€×9åIn-|4x©ÇR_o/‚$˜; Ö ‚8I‚‡û’¥®¾wzúÞ;s •exÚÌ`w¦W^:æÜËÛ±¹ãVײeËn\½¹6ÌÝú`ggçÙ³K(Q*%Øèî ÎÎNÞ˼(@KÀÄø v|ÒŽO}b9³œ—:9/Å:Dïe^£££X(ÃsΫ¿~éwCLâæª÷Õ;pÚZ5Á«ý­ [ÒØÜ Â€ÖqJ)ˆ"±6ç‡+ìååeìŽô=º~Eÿ*’4Ÿ–¨ÕjY,sLQTsÛ­/®v ÷œF77wtˆQ†ç–œ£ydWXô7+>½Éb±*ß¿—´&h-×ÍÍ‘-`…%Hù|>l9rº@´¿fš…뻩I8%8…=Õ³Ëy‰‰ ®ö qqq1_ izddd¢í«%ka”˜¦éÕ¾ËF/ÝtrÃNlpv^‚•€2<‡¼}â/~®á[~ÈQžoa9±ú{Ÿx~›ã瘔XßÕ¬êC„¦„S§Ef‚Ôj'¥tl|œÖcÐàÑÑѱ/Þ¤/ÿ÷øÏ« òLÓôØø¸«eøn9]õEÃ㻿·çÇÍFG†úº;=½}]Ý&Ç\F†û{îxù¬pqµÞDæHÆ/Çãz(Ãwí3 m|âÓ›Nάî;ýûŸY·t©«»;vH>ð˜ÍÉ×jµ5¹<øðððØoßu:ü¡kŸÁºÌ„V«ŸXpSº&Fz.«Z;z‡ÇiÂe‰³‡§Gئ`Ö\ ¤¬úä<µ„€û͇Úï |l(qMí…!kUýè÷ÃW8áªSÓÓù]K“ ƒyÞ+VÛ‰962Ô¬ª˜ô¿ßÔûq7,ó]½wnÝVû/è«+‚xáK\§¸õ1üÌOÿÙ(ä¿PŒQ†ïŠöæ¡‹p“$Iï žm1¶ÿ*OOOl Q†Ç(ŠÒjµº_µÚ‘‹&>ÿ½öµŸå“_ý™ú¿™_)Š[`3«µ#=ÿhèúàcÛƒ–¹tïÀpK{WÙ™ëTh÷]*1MANy-´”•ðsŸÖÿþÕ'WYSè—^þð¶`»/ó“E,N:ÚÕ=íM©?ÞCÓô[ïWŽŒŽ®dsm v÷‡6¬ùñþïG ·þû{Ÿ0-üN[ã¿>½õJšuw×òUnö5ø_žK2 dBÞxû¤¥Ó´¦,-©¨y7$ìðÉ|g–ûhº>/:rª2 £ºˆªôp‚˜•Ìe³I(*þµ³;>‹y±rf£ Å.Ã4MuÞêco ~èá͆©:ÈB“áÑQ­Vk,ÃDõo\þßõÑß…À’ÿwÝø§ÑÑÑ…%ôBq텬ćÜYý]ÿ{g|™÷Òͼ5çËšq®'AjÇú[o÷ Ó„‡×²u¡A+ÝXðí×ßvôŽkdyxz…èë>­§¶là4߸=L{D>¢ºz­õV÷à˜\ÜÜ‚ 3.þkÅWƒ#Z/ßUÛ7k®——Çõ›],€àùÀí–;w´4 jáÒùzÓ"­iËøO÷mMw{Ó¿>½/`õ Èxzß¿¿÷ A°|ü¬¿'âá½RyEõØCì•>Oï;þÎÇ@À ÏX½Ò§½£û╦ MÂ)›ýRW'‡o­š²´¤BQ_šÖ”¥åÕç§ @‘9-cäÐN’ò̼»Ñ][ùDxFuu†µ4]ÿzó‚ôp%Eh}‚»“žý1êÖB“a­™ ËðÄÄxõööºŒ:ý[óÄÄÄðð0‹ÅruuÕjµ££cÚ46LiûûX¾¹³(íÈÓoœe¹º¥÷­¡ë½ êR6ö%=ñ½Gƒ}<œhµZó_e_ª6 Þ¼·?<<ÀËÇ} hÇ[Z¾{¿ì«ï‚6|­ø’émÎýàʳÿú=¶Kï?½*_ºté¡}‚G×/÷^Bôtõ~Tü}éËCÖ?¿aÓµo®¾zºyû–5÷{óæ°ÿø ~”¦úÆ>z-d'Ïý]ë:20ð¡e–F®rê·j¼ÿÒ~gëë¾ÝÙÚøÂ3û €€Õ+2þϾãïž’ååãg™„ }7þîíÿõÿ$²WHRž¯¥-íÿþå+7¤³fÿÆ;Jþ޽{ºýv—×R¯¥íÝÇÞ=íã¿ÁÝË×NqL#v>æªO„G$IÊ2£ÓJ5´!0½*'ž¢ šÄxœgÏž­,N£¨ò̼zý$J’”eÖEÔÔä¼fšÄ⿞O6%å)Ì~Pä%ªxÉÙÉ<(ÏÌS'1?'ž¢Ê3ÓJ54]Ÿ›¤×düjŠümB’²ZȪ,Næªð…ÉcA]DuuF8A˜Ù`p² §ÜXõÅ¢ö†à¦FÍg²æ®ÎA7/mèþۅ-E²XÎÿ¸ñøoö».儲>kÔßo/ü¥2WíìCKÃ7º³&F»~‘wÞu…÷øð×®Á¡\b¢ÿ³lÝðÔ~»ÕÃÿ᥃²Q­Ï³>Aßݨæ Ex†[3Ò)·ÿ!«Æ¿3ºÅ×e7ï‰ñ‰Ñ±‰«7Ûóþô·‚ß< 9o}”ñ³½£ãvZïØØ˜3‹µD¿*Ñ''gklªÉŒ4 Zh­}Â3ª³!*KÖP$Ž-œRäØÜ•IKˆÏI8T’ ½8ùº¸(+7¢Ò‚¦ëëÊ „+à†¨®«5´€C„§Ÿ<|=©°H[–|2_p7W¢âʼnln€ª¼®>] 0µÜ† „ñ)×àØ°}†ÚoöÜRÃÀVÇže>êmá±f€žXӻСSZ«Õþî¾¾ÑN cãZbׯ¯¯o‰‹Ð -°‰ÒK¼ý–´´e¾Þ°lÅr^_T$oËò¿8´ü¹wo­¸€«Çš“¿^cˆïâ2ô÷fÑÁˆ¸Í~>®“C­>,ÂP1MÃë7….éhìä¸ÀÈÀAgöæ •0ð>Zmëèš•®ƒ·Ç€µ„ µæ—h›¢lV„¥‘Ko[ýl‚Z¾exuÐÆ?ü¥F‡‡uÝÔÃ9ïV°ƒ6Új½=šá;Í’_ôõñl»Õþ«–¿˜|PúÇSE{¯´¹ø ÓG'¦kgxFue:Ó3¬ë7f[Ä¡5¥iI… $ $ Ô +„˜•\›T˜™Æ=)6sX³be@’ R·pŽ(ëp­¸¨·[È!îÅ«t–6˜œ2ʰZÔšö›ƒŸ~¬¦µ“·¡Ï+P†HoØ0E‹ ˆ‰‰‰þç{G`ÙRׇCb~ýŸgxA«ŸŠÜ600°Ð¦hÑÚ[=ƒ›W:ë {zå U“³ÿö._âéFQä fFnf¿ÃÂi|Ô;8ü€=6Øö»÷®vÑ/?¿Ë…4Y[}”EnÎL®kÝÇjo OŒ ¸…¢Ð@i-m^·¦Þ0m¼èŠiæFNŒ ‚µpziŸËÂ^EÜÍÓ'dëøú‹ ýs'Í„€Ôµãc=ß]“$\áãÕv«+ûÍ€þ„ÿªå¿|fßoÿxÊÝË—ec¥À/Ÿ}òwþëÐS?²¡äƒ¿Úzg‰é VGg–«Ômf2LÓš²ìBð‹ÕI™å3­C)…ÙÅ<‰ðçò€R™{á4­‘תHUav©pö'o›bųS~eØoû¤·ìïruò`]íV ¨.¬›’ѱ1ggg‹522¢ÕjÿõÉÇÍDZò“(’$ÇÇÇGÇÆÒ¹Ó´öfówyÒ„gFGZnõu’B| MqËÍϼUÙ8ÂY¿tMâÃ#—:Ƽ½=6†\z¯¼Õƒ`pVK“Kù)GŽˆ  k~Ná®ÝüŸÕ—òÿ»zʘË|Vr×n^p@²ýØ6zÉ%žÁë-Õщ».trM&ÎÆÃG·™çà¼tíºõkM£-ålxÔγ1ÁzÔ4O+EX7Òf8bEM]Ý-µÖÅÍcÊmK·+sA¶Ôà<¶ÿªïïÞÑÙÑíêê¶q—ö›s¬{ƒ‹[cmßCcO×p,—òk"Oí?vD'”v6?J”J¹ôÊðËpÐFnέCdþ=#c˜ô¼úÿ@öã»vtwõ/YâÒÚ¢ Û´–t¦vî vlïa¥)*•J¥ä1¬VAdQyÃg¾ÒØúÉΰñÑ—~´6pÇÎG;ow{zy6ßhaûûp9™¿%¦=b/*(>`ÅuN9ÅLXÀ­…A…*Ã3˜¢õÊKÇœ{y;"6wÜêZ¶lÙ«7׆ù¯[ì¬_nf6ÀÝ…ïÉQ+±dVxïL/VÂÜÒ¯þú §Þ 1‰›«ÞW{zz¶µjƒWú;ÖÝØÜ ­%â”R¬JAexZäÍ#»Â¢7+>½I’dåû7ü×ø­ öôôp /Z(Q&7íçóùˆ¦]¸\Êç i§ÈSiŸ/•ãõ@YL,ö™ÒoŸø‹Ÿkø–r”ç[XN¬þÞÁ'žßÀæø¹¹¹9œ‡QW³R¨šFNAAox±Á ÚþøšK_hœœY}=ƒûž^·t©«»»;¶ A½á9§½yè"Ü$IÒ;¨g[ ‡í¿ÊÓ—@Aо'Ð4Õy«Ïiy[`Ъ‡ÞŒŒ ‚ 7|®¤­OpwÒ³?Ʀ€Ü{Œ×æEy®X‰2|/ðÛØqûŠßs©¨ÁÈý{´¶¥ ‚Ü_º»»}||º»»±*P†çG¸©Q󙬹«sÐÍKú°ïv!ÏÓÓÛ ‚ ˜7ÞùÐìñÂÍa¬–¹ ­g·v°ÇàÀPûÍž[êáÑa¸Ãê¸Ñ³ÌG½-w@dqñÈ7¬„¹ ÖÛ—ï°I‹Zså˶O?VS†ÀÏ+ÔX3‚ Èl2l7}R’÷å'ÿù­e °. °.Ô@ÖÍMkJS£bbbbbb¢¢RK5ôlç_Ÿ•[OÏ4çÖ±ùjré\.©ÖZ"6Y²íž€ ÊðüüȾáA­ Ë‹`íVštó$°r,ÊÒ’ U¼äâʳgÏVUeAvÞÌõrŽØ·…Y™|Jf ŽfIäR>_q¢€ Êð=!ïõ7ý¶té¡ÝªÓ`‚ö^éºÝkú™Mqë4wMYE­€.€ 8¢áaì%YƯѓ[O›8»õ¹†˜õ¹÷zÒ V—¥îiºÈ;ã â|«eÀ/.iÕ5¤”Sä©”ÉÖÒZ"æ ÌV#7¤âK?·’D(Q*‹ÍÈAP†çš¦_;šç±Ìýñ1{~æg,.ðIkãÌîÁÖ\dV‰H’”eF§™uG+ò’ U¼äìd”gæ)€ Â3ª«Ïž=[YœFQ噓~3IÊ2ë"ª«3 BSššY®s¯™&B-dU'ó@Uøbþ°… –¦ÔD* …B¡”‚D*J”vªn-‘4%+ …²Rt:+—¦@>“J)yÌ"ÉÝ€ ÊðÜkpÎ+yl¿¨˜Ç;;º]]Ý6îÒÀνÁ;ãׯ´ëéŽåR¾TÞZ"æóù|éçö ´êš ³IxFuv´¼Vep¯#ˆÙº„åu dTWDzF:,*0HgÀθÆ l=_ÁL“FŠJ™Á[Jkf ˜31A”áÙæõWÿàÈ~|׎î®þ%K\Z[4a›Ö’ÎÔνÁŽí=läIH@ªT*•’ǰZçWV'‡Q$)ËLÅóX IDAT+Óù¸Y±Y2’•ºyÓ”¦FEÅ2ÖiS«æÂFÝÂ:Zš.[ ¼|ü ¦Û8M¿×uÀ¡âHá ‚iº¯30AY`a¾7|æ+­Ÿö<̱õÓÑ—~´6pÇÎG;ow{zy6ßhaûûp9™¿%ˆéÎÌ °â:§œ"I è'Df‚à$æç¨£3ËUê66øsy@©âsªÒ +Mkʲ UÀ;\,V'e–[Ïɟ˘%Ø’ó­‡ Í¦±¹„º/Á[,Soå[¶"¡D©”´–ˆ÷KåÓicÓ7Aô†m­­T¯¼t̹—·#âÑŽ[]žžž7®Þ aoÚ²ÁËËsúl ¡D©TèÇíPƒï ¹©¥:÷WQ'#Iàqý‚#ÜÍ#IYqY»…§kÞál&çÂÝ<€ëêv{…Îä-¦€qÐÔ2ùýò±ýz‡¶õ|Eh¤ÐHõ ì)vl´£ ‚2<Û¼úë7œz7Ä$n®z_íééÙÖª ^èïXG4sk-§”bUÎ?Ò³ ;::&&&6KF…%ŸÌOäpD'²ã©†"±aÂ3A„§ç$¤,3ºø:™Øeåí&ŽèDN‚ªHk6Sz6üacY@3QyS²î±M()5¨cÀ¡âȾa^´~^_ ž8ªÚ5I¢vŠ<•f6ÅÚ!™eˆÔÔ/îV°±Äü™¯4v<ȹã^–›s4OÛóÃÍ?½Éb±‡ã’֭庹9¸x›\ÊO)…-GN'7í¯‰TJ„ —ò™Cã¯æiOé‡!±§z¶8þ~ýÓ{ÖÍ;ÍWîm-ßÇ&pß @æ’coIñü6ÇÏa ÝPs¨Ô»,J¡iáÔi$`g\c±„ÂEk‚,>» ³ƒ¶?¾FñéM'gV÷þýϬ[ºÔÕÝÝ[r_dðP±dq€ (ËŒöæ¡‹p“$Iï žm1¶ÿ*OOOlÈ=£»»ûw>Äz@”áE MS·ú؃‚zx3‹ÅÂ6Ü3~ùì“>>>V§e ȼ¢¢¢+a.¸víÚ¢–aéáJŠÐúw'=ûcl Èýò†±ùÏ¡C‡°悆††E-Ã~;n_ñ{.5AŸï###‹Z†Q€AûË‚’á¾ÞÁÎö~íúÿçU߬Xí®¥(_¯U_¼Ò‚ ÊðÒv£«¿g„9V)Û`b”oîì€Õþ+¿¹¹žÇÅKŽ ‚ÌÈb–ê«w‚Í]Þå«]Wq=ƒÂV®ö_eþ ¯7‚ ‚Þð,Ó|õöÈÀã÷õö·ÜÔh4·I‚H}ñ)Cœœ£…‰OîÅë ‚  Ï2Ýnn®Ð×7pårcgG÷Èð(MÓ¯üòMßËûG;`ßÞý­Mžî쀦©MVuf¸¯k;ÛY€ÚÑ i§îÕ‰¬½k³AP†ç >sñÜ…þ?iÜõˆçOölŸÒ6ôôŽŽQ4EÓ4I½½ýY¯Î9ZH’„»»Û«m2lXÕù> ‰qÑv v,§(P*„³` ‚`Áàt¶–ˆŸ8~ÅÈÕyÛF ']pŠ:hȹ”ænåd´‚É+…êi-)*(ílåd7+]K¬E˜ÂÉn-ï?v…$æ+$Â)m^Œ8¸zå/Ÿ}ïP3¨«TÌèdAÉ0£Áï¼´ ž}õܹ ý?Ùc/þø¨–¿#„Ÿpvrš˜Ðj)Š$I ˆ‰q­!òÚE?åøî°¥)’#§•JF:38Íâ’Vžê#´–ˆùRPJ„ />š¯,Zõ¶õ åÒ¢àÓJ…N’á1eXóAåR½c+—ò¥rýï–…hiº,Š´.Âe%1·Ä¤ldb!Â’Š¸ÓÊb(KJZ…¦…8=ÿò\’ýxû$ÖÖ²xfJŸùJcö1‹ üì:s0:>ââêB$A$I:/q&¢gè6EÑ0¡Õ+NÉ¢ƒûÊ8y|¾@Vz¹©Å,B@P¨At M 0ÞKÝ"¡¼¦44hjE’×”ê5U)*5lÇnYèÜee\¶21£¥éòåãOO¿lYQˆž¥®Nö?VSÑõ¹111111QQ¹õ4}O¦ës-̰x늦ës£¢˜ŠJ-ÕÌî "ÈÂ÷†w=âyîBÿ³¯ž3|Ýó0ÇNüÕÜeí7u]Í·4]ÞÞžCƒÃ,'Aý£ú¿ÕÛ3ØÙÑí¶Ôy¦vé¼¹”_c/¢P¢PˆKÄ|q3ÓípÂY 0xKi\r¿w‹éz£Ûx¸ZoŠ@¡PXýISššT»ûde%‡ æÃ)DxFu8#WyÑuUéáa¼¿u]™.h/KKú >1=|~ÔØ î6G|®¼2ïdø'{¶膇™¢51¦ýÓê¶Gxï¿oîïzyz944Ò×Û´ê.LsÄ…e8T\ÐÄ/–bÔÈ,¡0R”â€XE“×”Š"%Ž”›,â§H-ú·gÕŒíqðì;#VžA#µõMkäµp8+ÑXƒiº>/:SF’vød¾ˆC0sl–Œ¢âsªÒà ‚Ö”¦%6d|veF8aæ[ۉɈ+÷ðõ¢¢CZã$PäE×í8»ã³˜e$Y F?jù—× +_Ä!hMiZ6då'²ÛËlY2»u5 ›jÝÉZÔ¢JHH(‡½å¦6ëÙP9……!LíY–’î_––T»{2~1÷d~"[‘] å2Ù´ëáþ‚û€Í/jæc§´Az§Ô`p÷téíí€ñQz÷®Ak—-ópq]âëë³yóÆûz{ú"¶ŒŒnØ4S£vÆ5¦ |~ ˆJSøÒÏ­G“Kù|@ ¤A£…æ åLÏu _ ðùLï5 •›ûÕúh)ú̦ÖJ‰²Ò:ôù;ž•uK¦eÅÙ!V™™Øñ讈G Çð·ª:æ«EŠ6µ*„˶ôG«Ïž=[U%Vg—ihš¦ëó2!»²²º:#œ hZS–]»ûdUeqòõâ2Qÿªc1Ëk!«²22óê-27Ø^•¯×r} G¸jåíÐ.¯…ÝB6´Û²dêJ¢®™/Ð?Ę]›Z•!€ˆ¨›n=UŽÙ£’é9rDùâÜØØØøìÊ Ž¡Æ˜r¹!ªºiÕ‚2<Ù°yMWGÏ×ö÷zx¸ŒÓ4}ûVg«ú»‰‰‰5ëü""·áõFæ c”á˜Ñ•?\ch?—w]ÝáF·mƒû•ÏtuGt¢Š›§¨Î`Æh²+­ŽÚiÕO³Hb_‡?h®v?¥S+›–Ìv]éÊ‚¼è‰zK§>;›l­ží”k|ŽíêëÆõÇ&Ød¬)ýØî‡‚7°o\S·µ|w«½cãvÿŽÛ]—¾T}}©qxxdýÆ€]{Âñb#ó‡ñ jÜHHþ£´Š 1|Ìâ3ݼ…ٖݘæ=Õ‚ˆ„òºzš&ˆðˆ„ò:…m;i‘Ä~,‚àw_¯Ë«»¾[È!ˆiä×u5iizÓn­tÝc (êÌ:¥y™Öº©­Õ³ù)›—BkJ³kwŸ¬Ê‚ì<£Ó—ËCuFæ± ?¹/”yuØq¶=öý¸‡—z;ßé¾óÖñSÿûå7#£Ã¡›ã>úØî‡ðJ#óK†µÔ¸V§oýµ’ùjü±î‰ŠÕâØXà KŒÔeÅÆFG×AByftÞêBnTTlläè|2AzdF[¾ãļÕãHL;I ò“ž™Ñyf©ØÜ™Lf¯)óŸÅº21,­LCÓf¥'QR$Ž®ƒ£ÈY±±u9 Ö)ŒëÙ–ýÆ¥\h+MKªÝ•È!8‰YÜâè´R.Umvtl–,AœÈ!|- !RSS¼¸[ÁÆD¸3_iì¿/4Gܯr‘…Áñ÷ëŸÞ³nÞš÷Æ;î;h?Î'—á*Z3¨«¿]hšÖ*Zt}.3…ùÞ¼für—ÙOÓµü^òÞ™k/üv(Î /¿ü²Ö‚Üo+á>Ö•é;Hé|±¹,@ž]Oº©Q󙬹«sÐÍKú°ïv!ÏÓÓÛ r—T”„•pëŠy)㞟Ë\,o‚  /d†ÚoöÜRÃÀVÇže>êmá±f»{›ç´®pexТִßüôc5­e?¯@Fù îˆüÿöÎ=®‰3ßÿßÄâ/Õb !"*ˆˆkãÐ6­t K©eÅtÛe÷å+Ý^Ž®¬ÕRæ×=¶»¡XµÒ"”n»§›ãXʦx!î.hº%ÍöÔR*VÄâñ²à…Ìüþ˜$äN‰Bò}¿æåkòÌ÷¹}3òÉ÷yž™e8@xgǧ—Ï’W¯^ ›4«/äk˜n\Ó׃¾AA|‰.pʆ-]ï7Þ2cXƒ€%§„ãRAeØÏTl'"é"AÓËML°³îº#nå ßV¤—KðÝË‚ (È –e_{¥búÌ©dgüè©áwP?ýÈúY?¶{=²ZêˆZÛ«¥B! Ybt:‚ Ê0Âipù«‘Qé]¼Ð6eéÃFHy46%{qìâhM-¨%k‡·$ÒË%B!EQ¥ÕË%–ÍŽŽÙÛ‹h­V–ƒnG Zp‰– ÛóVTt䪇D½=W'O¾CßeˆO\ðÝÑΔGc 'ø‹hmUæý}õrº!«N+¹„–ëEy|PËvÄUje–ú{A‰½ãwèÐtìËÀ”á_\]rófW^~=fAôƒ)÷_<ß>#¼ótWdÔ¾€WòfáÑKvº:ޝ]Kí`˜Ü.>ˆè*EQ¹•^A&.NßvŒŒmý†À”áQ¼EëÕ—w„^NxpÕ² çzfΜyúä™ñQ‹dž††zSŒØ^pE´F#‘K„’Î:Yï9A&"½½½è000€sÿùõÎI——d¬[vø]xxx·Þ;5i’W?SDib…ÊÉz-~ž¬*n‡ —C#‚ v  Cù+dOüêuË4?C’äÁNGÍX>݃±h]–%ZÜnA–€[ MQEA%[ÛsW‹jÉÚ¢á,‚ HìK´ÞÝ󧈰ä¤ÇyÚ¦®I!W/÷¯ý%‘¼ˆ)S¦xÓZ­Í\}´³wvAÁh8xéYùÐü¯?7L ¹r©ÿ±§M›6uêT¼3AŒ†ýÎÙÎk_Â’$gÅ\º'ƒ5/<<o ä¶³ó½¸wvû&vg! öÔ øïèvqLÛì2̲ÌÅsW"—öGÇÄþ`Ų¼-q†_ü< ûõÎû žÎºêï„XòûÀ’§7ÖÆƒ aœÛ»þÙŸãÝ€Œ7BCHì,‚K^½z-lÒ¬¾¯`ºq9L_ú¹UÊ4‰ÄÎ"Êp²aËc¯l¨»#dưKN gÐ9È­apÈ»›e»>z&·â[&ñWûþûI¾/'\YV½ý¾¢ZX÷æ?_ºŸ nog­›ô é¯.ßš¾#(È*¶¿‘ÚÓm` ØYsî õmEz¹$gG\ÕðÄj©° Öüge nËÌ2lôB™XVÿ—çÖ½Ùºì—ùýO¢–Õÿå¹²æwKîóf°,c`‡ŒÌ ÏeØèµ ³Ýä?þF+äîj.¹ðK—oMß”aÄîÿ[þê›wÍ›³:óá‹É=þpžK +z~ÂôØÅѶæj©P•¦õ|7ak{µTXоe‹:¬ ¬^4­—Khy 1ʰG÷­îT+,âÍcoí;/Ã˲ú}ùW·‘ “³½éÅ{ ‚e?#e“’4gï8ºù>Sb=¬Ý¾ ^Ü œå¯ßÿR=÷£0§ü?dØÓ>³¥ò[†YZøá»â(âÖw–ã‹ÿy£$×ìØ*dØA`-]¾ÉªÝô®ð—ßW;4Þº›Û›^L†n± Ê0âp>ÆQƒ+"£"Ò3ºx¡7,lÊÒ‡òhlJöbg\PKÖZvX½\"ReÙ,I/—PÅí¹tÌÞ^Dkµ²¼—­áÇÄïèÂo%hexˆõü2Þ'Z$Y÷bʳa¬/©·?¾§5qCùóK`ÿ‹Û?猟ÿ›ºAuô³½ÏÇ1LýæíÇ™Á!– ɺüðàß^¼Çg>xæÅºÄ {›TG¹Îà°qÛg{Ÿ_ßìÙû¹W䎱wvpˆ½9¨þG0LŽHèÄnzçØxÇn:zŒËC>ê/‚  ;gûoÞŠŠŽ|èá{{®Nž|‡¾ËŸ¸€ eRu¶÷°ˆÖVå2¹æ!e½œnȪÓjöon¯‘ëÔ²q•F£ÑjéìíG@/¯1oˆi4ìÕ±¢øè¶l†$ÛÞY¿*óáòχŒƒFææÐ±¦zX)ŒŽ€SgtCÆá\ó¢cX£‘42F†yìÕMɃFææîXc+À¢ÈyÃUp?[{·)cýß>·.ͳÃ'åci¹óÃYïìïØMW¹:oú‹ sPúÀWW—~´‚çêÒ+/¿³ úÁ”û/žï ŸÞyº+2j_À+y3Žðhª«ãøñÚµÔ.†Éíàƒˆ®RQ•[©ñVNÕRaMl E8¸eØÛ,ËŸoRu×ÿò§ï·úëÂù5o>>X€$?Ý–ù)$´ut™¹Á>~ñ©·¾'I I`X£‘Ó¸«ÑÈ Ëvu¶ äÆŠ† lo}gmãЀzgsî¼›v›ãëþ"H€Ë°­uÅ«/|ðàªeÎõÌœ9óôÉ3 â£-Ž õjM–Ø^pE´F#‘K„’NÏW[éå’œŽ|-jp3dÝx&/ëg²_8üÝé.#;¢¢–óÝ£´ò…{8ý``Õ+Ëßj‡¥¿x÷é®g^8 ì‘0O²C°lTÔ€ïL€e­ loGgïM~¨?Ú²9i¥BwÐ;›sÇn:ñØëãþ"ˆ”øÍ¯wNº¼$cݲÃèÂÃûõ†èØyüè(gÑn¥‰*µc:?OV·C¦ö4¦AªÅÁhdÈÈx~ }þö¦º‡ŒCFf¨åo*’„øùFÆÈD®HYJ’ý°VoeߥûbçE0¬9È2ÚœsNuu×âÊØ«cìåŽeë cæðÿûÏ:½‘KѼùºfÈèIï,çŽÝtá1÷A<öŠòW*ÈžøÕ/ÓüýLHHÈÁNg­Ÿ³@0eÊO¤—®R …Rnº—û@‘$cš~ú(·J#²·7_%¡–ªµdQ)Ž×ÖR»€ñx" °ê¾¦†oνpùòe`aÒ¤Ð3f̘òȲޞ+³fÍ U( ** oÄßLô'M±³>°ä'‚ú%>ŸOÓôÅ‹‹7·ÛÙªyüŽÉa<^d$îÍÁS§L »Îèß­8ñ¿ßª{ûþﱜ5wß}÷Œ3ð¾AA|EPÏ óx<÷Üúâo¿ùnÚÔ)ÂäKîáýÇmSJÊC÷?|Äþë?¯ $.Z”óèãáí‚ ‚øÜÚ®ô^_²dÕÃ÷-¹‡}×®èºÎ\¹r™»ºúÑûD«¨¾«×N}{Ö!«^.‘p ƒ^.Z›OmQK…R§<èå¡‹K‚ ÊpÀr öÆ{V& âæp)7n \¾rùÆÍ‹Í½«’fÍ™~òD‡Cn~LÜñŽ.èêh%[šôÜùñ¸g›ŠhÓ> Öz¬– …4d‰ñfDA6Nžü>JÀ[*œ?_½ÜÛÛsíz¿µYì"Á•+WtçìuÕ¼µ¡Z¥ÈÍÍå4Y­RˆÓDœ¾R%´DÉ – ¥ÇL+Õ˜”XDkµ²¼¼AP†ƒ‹­{Î?*¶™ô$¢§§çüù –ÄÅK!“ØëׯÙ›ÔÞ©}g{RlšÕy´I_5V›ßAQ ¢µU¹¸ƒ!‚ ¨K´|epuÉzÄÁÁÁëׯÛ$%-ïììüæ›o""æ‰Åë,é °ƒCƒöÅñc⎫º ¦²$¢¨¡›ô1%ᆤõrIÎŽV’d˜Ü4>Þn‚ HÀË°ç› 3,ÂÑ.qåJahè¤Ï>û¬½½ýKÍ¿VR÷péF£‘{­‡-¢4qJ Џ4šÓd™J—Fs"L7dÕie|µT¨Â[íÃ2Ft‚ 㟠” »#lJXí‡ véË—/â‰'‚øƒì]:tœÔ3Fvò“ ‰ŽMª­­å†¡­ÏÀùJ-AA†™3f ¢ç×v¢½µÓîÒ‚ ž’<õ|Ñ/£<èêìž6%|F¸“wwðS²™Ä¬¾Ý9?%«½ˆ¢„BˆBé1«š®ó-n%WQ-Y[DQøØ’¯D' þWÿ……3ËÁÅ»Ê|eð|Œ×‡Ü²zù×ÏE ¢[ûÈÝü;Ú´?Õ¢þßÅ‹‹R“ðŽ™(ìú € >aóO“Ñ ~bÛ¶m“‚ܦÞóï =êcÿløkcjzÊüEw[_½Üs­³C÷Í×ßÍ‹˜‡Œ8¬¡wüŽûåÚÛÛkIœ={¶å#÷*|OÞ–ÜÐЗ—ÇedÙ–ŠÕ%õ°¦üð¦d´e ûŠÖW·­)?¼‰MÅê’ú„{+×EÂYéK!Öé<ÂfqCËîôR%™]v°8Ù&ÝuuÅz|žLžxuç{ÿô‰'ÜÛ|ðÑGÖ^õÒc6M²6³n¡É3ÙÙõ°ª±8Ù®@«ZZ<ìàÎ÷>¶sÔR¡* Ÿ•@Ÿ€œ'ÒïÝ{êäé埨>·¾ô·ÃGÿ¡ú|føì­}…ŒHoo¯?6¢!ž(5$•ÍM³’$RE<‚p•nÎwJwÖ” < žÜÏ0õ%E k–ŸÝ-,뺺äUkLÅj*J”äˆ=¢ &{–mÙžžž¾»…aCÃA#ãþ‹Ç\™Éöul·R©\³Šro‰ cgº~üäê;çÜùõW­ÿ8rôÓO”,¹¡ËÓ·IDAT!!äŒ3#G¸bÕêè"Ä=–8Ø'›‘¤²4SÉ3LvùáMÉâ=eºôÒÒL%“]¶Glš²á¹Hç8R¶ºæÉ0Ùå›('ZÅWT¬.©‘dÖ@vÙÁb‚pS,õ䯄úêIf|þÆl¦º~$-\WºñÈúêIf•qå½ÅÃpsˆñÉ7âÞ3öf5’Œ³« "R”_ÝÖ ‚(w–ÔhÚŽ½‡j©Z߀àܰ5ݺ —.]êïïg&„$§N›6kÖ¬(Á]x— Ž8Jï|ïck Ý ´Oð|°t¼±ó½³Ö¬Á]õû'ÜÆˆƒÒbç†mˆÜ…¢‹Œšžý‰õÜ02:ê÷£ eA|77|Ûc5‚H.nl,ž˜?eð.B‚ \¢… >`öìÙ($‚  #È팃Ñ‚xK J¿T¸Ë+û×ölÆ/ñ987Œà5Ä[šŽ}2<ݸÜs㾯ñ‹Güú§Ç¥§?Ñp±4âȶ~C€,ÑÊûUBìb>°,K˜ŸÐ¸10pcàúŒY³-fÒÿ<äU/—Ð •åñm~+‹ùŸÑ¿æÆüh äVjÆö` W/ܱ©šŸM¼øö¹a$ ¢¡Gg¥4˲Wú._ºÐ5øM=¾ g.…M ¿4™õ¾ç¦ÏŽ˜9{¶‹|ü”, ›ôyfÖ75@–4ø´v,Ê%6‰¯Z*,úè­užè±ˆÖji¯ÅÁ8AÛCà,Ñ:{ñìËß¾ZÞó»»{5wO˜6-,çÜ<=óµ²¾²²Þ \eäçåÇí™÷5RËvÄåçñÔRËfGz¹D(¤(Jªæ>ؤ›>èå‰\ïDÓÄÖ÷p9¦Š¢¨á•¬*µ9ÖæÖXUh›wD —ªõr‰Ph²whŒ“ĸGô‚ A*ÃUçÞòɳŠßDD_| €z*Ü„™çÏOÚºÕM™&V¨8íQ«â4ÛR/§²ê´šý›Ûkäzà§dµsÆú¦†V’lïÔ›cèÇÍ…õòsvå˜$¿R£Ñh4Ú‘ÂVD´¶*wxxÙ‹¼f4HµZ­–9iŒc 2ʘý€ ˆçŒßAé_\]rúžK#a  ûÉoŸTÖ=:eîÜ«—z ®îÞ=óÜù+s熻Õᕚ‰Ô*…8¶½ØÕqüxíZjÃävˆR²ÚejE75ÀæÊÍ 5Mú¼”¦È’Z«°¢ˆª€ÄÍûµ4ßi9|ÑU*Š¢F5y<мâªápÇÆ8¦ ^€sš {ûNéòÄ2€$ø¯^–H${öìAÌ.{ fŽ j’-5´\ÝÙоEJ;0±ã§dµÓruVdIE)PC7©Á^…MYÔR‰Õ´³]9 ¢5‰\"”tÖY-óTˆGŸ×icœ¤ ÞÅÁ¨Á‚xK¾¾ãÎ;ﬨ¨Ø°aCjjêÀÀ€g™ø)Y°«h—³e«!k'Æn2€ˆ–mšku,ÇTZž¬ÊjrÚ4È-—(nÇ.Úf%IÂB X6JL›Íð¦u¸Å²†}eÕm°Q&Ñ­/©‚à‰Rª«uÝgáÈÂU{Ÿ/õrÚ*'-ñ¼4hówuµXýÐÇ8íûw…%àÿþ±ý0 Œnäý*~;ƒ~;£´z5wB¿ñÂ×(ËGw«¥E××)[^MQ…¯{ÿ1±/eØÈ¸?ÜggÙ–Š’zËx,'¨$©”í;ë6ȳk"E© Pßü¡ná*ÊçNsÑ*'-!ˆäUk€$•ÍÓd¤«ÒNéÎŽµ:“Ö:+ÊRH³ÆôCÇó)s®\±®záDò]÷hŒ®v‘èÜÕ^#Á%ÃÀ²ìå«—t§¿ù¾îµïk~~®úÑŸêýLÚÝqâòŠZZоy¿F£Ñhµãs§?q¥F£Ñh4•¹ŠŸ ±ZŠ{9Œ?Í ßbÜÎÿW“ÊÒÌÌŒŒŒÌÌÒú„{­žxOY6s¢Fât±´yeµ²dµìTXVçšt¸ü ÂÎ[åª%Ô“ãFYšÙ¼ª<›a\•V¾¦­F’éjA¸‡Õi r]éÆh«‘d:–â,ÍÌ,U2Ùe{Ä^¼{ŸzÒT¬L°ÑU/¬eÒM3ÆîjW‰®\í•1âÑÏ£€ÙÚ!lYÞ±s0dpG«Áæróô˳"¦nÝ:û®»\lí – kbm6íUK…ª4“$[ÎÕR¡*­ ŠŠj™ÜJmšŠâNLÂ=âÕ‚Z’d˜Ä-¦ŠÔR¡*­.¶&gÇ×처åTšê÷°1z¹$gG+Iæšv VK…ªØ-í»vµZÕb]un•u!¦ªx8ö¹ÍUÄ#ì¶v»¹á±oí°ó½³Ö¬!oýþ[ð2KnÞ´mMycq2~õâCjk‡ªso‡ÎùKÞ3^{bÓ¥óÓoÞ$€õT¸ 3ÏŸg·n…÷ßw‘UDW©¨µTÃæýÖêç EªJ«I“ „À¨Ô´H4òU­ÕÒœJäzS5ŠzKVËPK…2u-P«â|­‹Vèå5 q>ÍÒ YuZÈ%´\/2Øu ÔR!-O‘åñÔÒ¨ÒjD¦ ×,µÃUÛÊ<2zü17ÜP¿Œ3ö•UŸ É5~Š…$¸¿2|à+ƒ«KNe#a  ûÉoŸTÖ=:eîÜ«—z ®îÞ=óÜù+s熻©LDk4iÃÚåq-P[x|Õ¼2LnŸ³7×&’l©‘©A$R«Ú·HhGù/¢j qó~-Íåèê8~¼v-µ €ar»Ìæså‰ÒĪ.>¨U qWž(M\`ùY0\5âC|»^zœìÙ@<ñžF1~»T2<Š‘ðòÄ2€$ø¯^–H${öìAÌ.{ fŽ\€ˆÖ‚uÀèSÌÁ+_-ªœ\ç§dµËÔúΚö,©yWjh¨¥’&}žE>ŦÑhd`‰ƒq¿#A¼"—´Ýyç6lHMMðF+;Û“b£MÚ;õ\ [ ðM»âbÜ…Ÿü¼|¨¡ +…ïæ‡‚hÓj*QšX¡²_X¥¨‘븑í4‘Ùp"â¯8ý€ ʰ‰ÐÐP@Ð××ç­é‰ aNC–Ô4ªKkó;r„B! Ò*_ ÇñS²Ú‹(J(TXQ ”s"²iqÇãòÝóódi*¡D®ÑUP ´}ÈJœ4EQ¨2ÇÉÃfV‰öê^¸XzÌøãÒ‚<ãt¥´Wp+¥cÛXwwwXXØœ9sì,­”èåYŒlôÃ̸Òê–â¸RšÃ27<ö•Ò‚<µRºã¤Þ.寵ë—{ô¤ùz9Ý%•áM9AÁ¹aAFG€È°ü¶ Þ~žlŒ,¢µ ß6üôNiAP†'îÞRé„ üÖàç† xðåŸâã˜ý€ Ê0‚ÜRüôNiAP†Á8Aáû¹á7ËßwoðË’_ ß‘À熹ý2üfùûyO¯Ñ• à˜Ç¥ñ_Jÿ~÷þ¼§×DDÜÅðì³ÏXþµ¤ç=½fĈA&87Œ Èí—aNk '''''G©üëºuë,ÿr‰ ¼8ý€ ˆ·ø~nøäwg$’§d²?ìÛ·Ïî’DòÔÉïÎ,^2ßY>½\BƒT–ÇçölȪ3Ÿ›“GÂñmŽ–ï·Ôqc?|U$2>ŸöP×1þF”a{–'®ÜõúJ/3ñcâŽs{äBWG+Ù Üž~]ÇãÒÆ  âJ -ÒË%9ÒQä–ÄÄ>ÔÅçŸ[ïÞà­w÷¢ÛdBãû–\»#cÙ“O­Räææïè›ÝùÌû 烙 ¥j½\" íö,RK…BÉŸ»¬R,;êå¡¢(s)6…¨m‹°­Î”Wˆ›!øinxZØ$÷‡=Ë…ééé… ë´X–mÙžžž¾»…e½j'G]8‚`4ì¸a眜œ]¯WÀæ­EÖW¹DçDÇ&µwê!º³=)6?6©Æ|.áT±ª´‘I7Í‘­¢€ÞR§ÕòÔGÌZ™Ó‘¯ÕÒj)(ЍZ&q³yLZ/§²ê´2Kh¹^Ä%š ÑË%B)hi€ZZ[§ÕØ„áNÌÄOq0Çô°Po4Ò°¯h}u[ÂÆ½•bÁ²†}E-•›’ ¿ ™À2|à+ƒ«KN÷@\¼dþÉïÎXäÖîÚa–Žé€,‰(jè&}LdIøæ¨˜6GÍ*5-ˆ«lç|;å’jiKš¸RC‹†•»«ãøñÚµÔ.†Éå†À‡ áÇÄA «q¦ê†q4CaüñÜpßÀ7æÝº6X(ˆ žxO±åZËîôR% “ýÚ¡¹Dݾ¢Òš Ï)·EËkN “]~Ø$á,ÛR±ºDI’L||‚UÔ[±º¤Ö”ÞDÆêÜÉë‡3–CI XjA”aO…Ö_Ñ0'°RPĥќ&Ëœ©¡; IÇãÌòj[°E¹+5È"#&î÷F† "yÕP*•%«OYd•à(,©O°ÒÚ–£$©<²ƒ2uÑúêê5ââdÐT¬¯nKØXžz¤¤º¤bU£)±DI’Ùe7Eí+ZïÝnfN ’T–4—56&ãmƒ9¾Ÿ.èJ´‹†­÷y£c“jkk¹i\ës«‰c›ébÄù2™6Me?{«ïlds9îðÐ ALøin¸ÿÆûÃÎ>¹¸±,›!É5’LËì,ËÔGÚ,Q²†É–¬‹„HÁB¨onaY–mi®€…J°Né ,˲Ý)`˜xA˜Œ=Æi–ÚËí#gÁhØTE·t%†U¦y ?%+qd¥ðíÎ@DW©„BŠ$&·Êýƺ"Z R¡°æ…OòET-äViDNÊq{h† ~Šƒ9n1ÞfI.n<¸‰V– öV®‹4 V{üÛœT–f*$¡M× i;Ö=šûö"âO^¼d~´Âë鮃çÉ´yNÎMꪥíõVäü£ˆÖjÀ>‹c9Ö…Ø{b† `‰ƒ}>7<è½ AðÖU–ëV—Ô›d/Jà‘G €i˶ž¯ÛzgŸˆ †ï¥¹¹aK¼yk‘õG>&ö¥ ÷‡µ1˶ì.T˜F}5ÍJ’„AAðD© §tgGÖoQjI*eûÎZ%&¯Z$©lÖ˜&‰­Ó¹b­ÓG,AÿFÃ]‰UÐ:š•Ò2a±ÄÁ¾—öjPš ’7•êŠV¯>A’ÀÄçï­\Ç#à‰÷”ëÒK%™5¶+¥á‰÷”éÒKk$5`YÛL=¹1¾¾ZYš eåÙõ%õfcêÉ õÕ5’ÌøüÙLu½gâ„0‚øW†Ç27Œ :öùܰ]¼;²óÄ{ÅN/%7~| îml,¾ÒXìÚÒ¾X+c›t±Øãí eØ7Ì0Ü&†—ôA†)±®®ÎÎìÍò÷ù‹g¢ë‘Ãsà õûѱ‚2ì)bñ:…b߈›òϋס댉GÔut)‚  {­ÄèS$ñÓÜ0‚ ‰.@_ÅÁèAP†äöÀÍ £AFŒ‰AF ÁOï”FeAŒƒñ“ÐâÆòܰ\.G"Hòý÷ߣ #ˆcboÇ¥óòòÐuœœ8qeA|ÀXžöí‹·™@ àÜ0‚ø,F? â-(Ãâð¹aAP†cbAP†$ÈÀç†AFŒƒAF ç†AFŒ‰AF 熓¾øçwœ8Ûú èñ¦c_rÿe¸”cÚÖ„‰ƒcÚV0þ»}… ˆ+š››ÿ?4 ƒ±ªOEÕIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/searching/raw-search-result.png0000644000175000017500000005346512032647155026410 0ustar ebourgebourg‰PNG  IHDR›?†•ŸVbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 2±G&· IDATxÚì½{XSW¾ÿÿÙ; €¯E€ˆÄK«qã4*þ,ˆR¼TMg:<3Nútjë9G¿ÏÃqªmCq¬_™Qz™9ÃéÌÐ9ý¦´ê0ˆJm½dFÒ´Gk)X!„*”‹\¼²óûc‡r# Þ¯'ÏÎÚë¶×^á½?ŸµöZLxdÔ´Qp‡ÅÒ9vÃÏë.£qŸëW+|¦ÍˆŠK\‹¶ÀE~ñÂ'L˜ÐÔÔd÷ì›ï~€& G}â/ܽóÅ>&g˜áßDF#º 0£Ü÷ö„ \Q}´àaÒù}¥ÏÀ ^å=EΔ á ,ÀMÝò«c2ìå;䬜êMMMp³†³¢ rÀ±Ú]ñÃÀÐSôÊ+ú×ßøµpüüóÏ?ÿüóx0¼¥†Š.ÈùÿøGáë¯~ùêÿøÇ×ßø5D KÌÖ9¦ÂÏf9Sò«_¾úüóÏ[þê—¯:Pר¤©lg žß£SÊúX‹n8¨UÊ4*iI|ß3À™u9x©¢ÿùøç§/´ÑòE⟮ZØQ—IVýDôÅÅ Ôûü8™R§Sš”Ø]Ýu”D~P«”™Ä]õ¤.w Î_O€‡ëHΉèô…Ö?ÿ¼ÏÆ:-xlQcÝí¾×NŸ¯J9ŽSiº8Žã8N*U7Ùâ©RóyÛ§…x¹õ€”ã8©T‘¯7‡¨4ú|…T*u’½Yêh€w)º çïîZþî®åæ¯nQyE?1Øßüub°_ÑõùÊ¢¤#:íG/Wä ú«ÉÛuP«Õjµ:r1É”ºœ Îýóúª yüâžþ­V«Óm©Tvi:©S•¤ÒétG"s!êÀ0ŽðzG?þ¥Á*dÕü'ñOÿTp¹ ,xlÑ©ãŸFÎü‰ûu«©¼t©`=·Ÿˆç7ÔIH¦Ì)á8nƒÉ¥îuW@Düœ—äɈ4=ìþuû.³,Ïoˆ'’ÉsòR$D$‰ˆ¢Jô à®u9x£¢/_$>}¡õ…×N›¿:×o[ÝQxŸV›‘[k·L©Õ*òREÕA…]MØÓîÏ“hTÒÜ~Ð0Žð¬½î?]µpù"±YÎÝšWyEêø§Ž w÷}ï²x¹ºÄŽ\’’—µ/¯¯îñ¨,dÀRG;¼KÑQ·:p]ÎïÕ„Ý« ûÇ»•Dôw+…ØQ—)s(U˜È& o›æµq\å&¸ÅõÁoI\REÇI¥%$W§JUçÑ@?À8:À{ðÌûè‚Tß« #¢æ[w…@ó‰ËA´ª7×ÉlB„Ûì~5‡¹’ÌlàkS„C¥RID´¸;²mBz·ÎÝ•ó …¬ýÅx>9ëäöØ!¸EÑXš½"ý­èú—HÈ(ìn=>zË{7†xA‹YµÀCkœÙè}Cð·›U\õo'ìÆÁâq`˜12×u7K$$$$(}ˆÛ K$&&ZÊ9±å¹›Vd÷³ƒr9x©n6Ð{1å¿ù.aÚŒtK}Ç©S;®]û`˜Xóu ˆœÔiéLje­Œrcééèƒ8¶Ñ¸6Jx݃´‰.¢¹Á0c€ÆÑ-MF£A½ÍÂ|¾&&&&&&vÚÄ7Eئ6X¥LáVÉeÛUƒz[‚eª ü…ìé…,˲…+WšÊµgæ vŠs­Â–hÿv¸œeùäÌS‡ä–>váABxê[qÂs•“˱¾Jqñ¹¤»ô¥Nn7~\ÀcŠÞžz!’ˆÆŽ8ºMtÑöCD›ÿãY´8~ÖùÀå_ýaÚJEny× »ÑXš½é°ù+˦§}ØCµÙ–ñÙòÜMÙZ³œ[ù«-u×Q¶FciöŠM¹å}ùGa4¨ÓV¤Zf»"Mm詎+ܳ††ê«ÄóÑ[ŸåBqÎn+¥8©¡e;f˜EÝnY¸‹g¼î‘3%•WôO½)Œ¦ßÐ]¶ó«_¾J½¯ñÀcàÞGgÙÂÜÜsåŒF¢˜­y7†0Œ eeÕµDÁ]ñ32ºgŠK¬Ì(¤cgK·siÏ#žO»³—m‘6;½ÐÆÑMD±'³¨çx­¥ÚmUïˆíz¤(?ü7­|G,õVa›JÖV—ÑŒð`‡ÍÕçâ´Û·owp9¶· ´·Rœ Ô0zKÞ!yHÏ»c¿,º¢wõ¼H‹¿›íÆü¯ÿBsƒal©Ä lVRÊ0±;u)Gpø ¢2«ø]JCDÄ-Mæ3} !¶¼0cea8N³5KÏ#ž¢·f¸=™¼;m—UÍ=»5úØá2 sZaò’â,o‹¥8­a²bc°EéW«ëˆ ¶»x¸Šnoéø——–™*½Ö«ê‰‰¸^†Ù:9瓳lþ¿÷pž³,ñ=ãoçôâߣ´M¹å,[˜‘Xhm :ÉÖ¹eÜimAœT؆Ð𢲫ÕuòŠsv œ—Ò«ß%ce¡E;wgå ,Ü`PlŒF|ÜøoµÎZq‚î&gŸ8q¢¸83™çÝy4 ‘:eNh9XÞ[¶W«ëú\e‹´uÕWûþ\>ƒX¶üpæ‡g¿Ï7pÅóÑ[òŠOtažÓÀÐWt""ª®¼qòè¿þœ[øß‡ÿnû)øó'—>ÿ÷ x-í}t“Û–%""íÙÂ>M¡b˜Øí'³’yžÊªkfË0±K×Ë–Þäè…o‡bßöo¦©gÂ(2­YÚ7 ãžÝÍó¶oŸ êm ´Äy¢¸^ž]úsQ¶ið8>ƒ[|ñÇÿü®ö{'Zou|ñ¯ò/þU>5tÒʧŸÀ ^k©üB°ÂXxy®be.Ãóålaú zãÄ’^Ÿ²-fh±,%/e£Ña¶Y'·sÛ³’¥ZøŠw=gQ™Ã¦{|ìpyaF¢))ë|²z/Š"?˜U½2£°‡ãZ¨%÷»¸Þ/§ÿe“Öܘ ýøÙ|ásó{½íÇ|· x!s]w† Ù˜±5šçÉ4…ê`ÆÖ˜>ç½%O˜#æ<[†‰Ý~ò½-Ѽ“Ê8Ó`ÁЭ^å!}w23±;Š‹ó¬*cžПâ\¹œþ_”UZ<ÿ_â•W^Ù½{·µÊº8»Í®B»>3Îh$¢êÊÿwoNûý›DÔq§Í*Ö˜ñêDù‚Øyá‘SFü½b0š>è(÷½­Úù¢`— !VÖ¹0¬Ž[™½{÷ú z%©Žž¾ÀöǪ̂DäTÎ5*ijAÏÑDžßpHÿ‰´$^§ôè¾+•Ý<5*.­À\tއ ÞöGx Vô?ÿüô…ÖŽV¸»·: "™BD÷o›\XSƒLËÑüë“ò3gOQÌì˜Õòe‰Ì»±Yɭ擇Ó~•4•rtZ¨øHæa£€3<9Ž.ȹp|úBëŸϜ=3;&fvLÙ×eWæj2}¾B*•vïž®QIUË@}¾B*å8®+†iÿu©T‘¯·m)ÇqŠü*;äªå9¶F¹MAÝ9÷¬Œõ±F%Uåç+lê¼ìžŠ.Èù»»– »¼˜ÕÝEÚ;Úì†ÿÏ_>LóÕòe‚¨»–Ÿ:UI*Nw$2·[;»uJéó•EIGtÚ^®ÈÔS¦Ôé´Z­N·¥RiÒS*•rtZ­VEEjë"j*/ÉãeNK×)e™èr(Õ\Õ."•V«ÕåDíSBÓ‡†uŽvx;Ž~üKƒUˆ“IscÆ^©0­Öö¨å)³§½§ËÝ9òœ¼ I"¢¨Ò:ФǗ Ösû‰x~C ‘D°Ú×í»Ì²<¿!žHBšµ<^ID$IÙ"ßWâvéDd‘ Éâå©%¥Ì±—^¾EH'‹—§–˜j¼Œ£†¡¢/_$>}¡õ…×N›¿º;a^˜ gG·‹;¢Þ»îÔZúÌMV{žD£’º"Þa‘óÔúì`ê–:ï€ÁÅ“^÷Ÿ®Z¸|‘Ø,çîÎŒ³ëu?söô~²~`®]/W—X»À£"$¶š-Èuª×]’²E®NíuÀÛ¢ M‰ºÛO_Q¥Ü–9«M#=b/ãè€ái£ ¢~úÂiáÀÝ´N¼î„L™S"•r,ÛõÖ™$.©b=Çñü¹\*¥2EµS±Nʱ윗wÊ»½÷ÝYèrTÜzn?ñ´!¾÷‚d])I%•JiÞÎ#9òuf—€<‰”wÙ"&€u½ãùf¯»09ÎiÉÝë¥lé×I¨íÛkU5߯-]èÓãñÞÉ3ç?÷¼¢÷îo·@s‰DØÇÑþ\÷ÿùËGA“$§‹´?Ûº÷ uëÜ«FÀÝí†A¶Ñ—'q§‹´A“$Dtó{ý•ŠÓÝ«j¾%"áìò$l9¼¼ðYÑÃ#§RmÖuGÂqtK¼UцˆÂ‰ˆèg¸`ÒŸqtð,ì •l4Ú~ŽQk7¼oŸÊòÚ÷œû­²øí½ÿ8}üBë­Vf>8à•Öy_¥”{†(}¸7ZØCÈ‹ý„Ë­ŒúžÇC¼¨û-iðÛ#ÎFHÚÛ:ê®7ߨ¾}÷6µ}/ª¿Ö£gÏ'gmç„pžOÎ:¸1XˆSV]Kd4–ž=FD3¹ðDtµºŽ¸§N:µ£OŽ}ËMeJó±$"Ê6Nw`÷þFä,­‹›iJÔ¦-†%)[,6W²-×%ÇC_s³ÞÙ^&Ö‚~¦ˆ"Ĉ·SPô^ÉÞûVм†aÇv>f’sÆ8þ‘ÑQ ­ÖM~³^7Oså…•›ÑÅÙ1NgÓØº.=¦íxa½?9oÌØÍKOû°®;Pp§¯\™QȺý#eÙ !aYu­'¯UÓ5.Mí,š$%/‡R¥ÇYt5Ó'j*/]Ú¿žaW “a53Îh4f½úÛG¦LZ±ryClãñ?ÝÂ'…M‹93Ìö¹û V)Óç+Ö©"úåÓ¨R+^>¢õèƒ÷@ä ÐRïó l ²ñ`VõŠôÙy14c)‘Ñhø0ópÅlÍSToJ?æFf¡á1Ä—%gy~¶>_aži¦QIKœF–)u:¥>_±N¥Ñ)eöÓ†Eθ{"‹—§–h”²Áôk‡EΓ̃kÀFg‡%$.k¨oòó󟽼“ˆâVGÆ%Ï´'çÌ3ùÆÌówºl [;Þ‰-¶Ñ¬óï‹…d]Šã8©JCæ s?×%?½9Yªm·w+7Ûʸ•‰$.©¢?$Eï{_û]hXð²åKš[G­¯1DÏ™Îúòq«#}|¹"Ôi'U’Ê4¬¥ÏW%Ñi?z¹Bø½’L©fîl©Tšÿ9tMl9™kR>™2'jÿz«9·¶ÑlówjåXçé 2%ñZíA¹:Uj:°ü¢."•V«ÕåDíSZ•h·2˜³ÓëÜ#Y1!òƒYkº>k ˦¯È»C,[˜¾"ÛEI‘ÊLæËsæéîž²z…ÉqœTIIruªTuÞé£'·~TN׫h6i5D2å‘È\Ë©à2eNÔ¾uÖO“B(ÇqëöEå¸Þ1eJ]W¡–CW.çf¿2nUI’’_"õ¦·üÁ0Çóû£÷‡ã_œœuR¥=»~1=liœìûúfq ¸êZMpè¤ÈG#ÄⱌCßc×û¦Ýï ¯¬°DÄ›§¹êóëö]fٮ˷T­ÞXÕ¨¤¹‘G„§»Ñló·ŽêÐke€C<µ?zJJŠ7콆Z6ìÞ½ÛëÆÑûð$ñê®}¾-1K–έ¿Ñ8nܸkW®O}tf¤¯¯¯«î¹î7ùA­¥¤™ Ù-³7Î=ù~µX,®ÕÂ"§HÂB{ÚmèØëñŠIQ®ÏMÓWU˜‡äí?;¨ÝWë‘§;•!"2öÙ{Q¨O•=ñÔ8:ôŸ¡=×=kO6۽♹ÚO¯‹D¢â÷¯%mš1=ÜßßßEÁKã ˆhCŽi©H™2§D*åºÝÚ’¸¤ŠõÇóäruª”éâíåcò`óüœGò$Î,n«ü`›§‹•éa…'‘’ã.óü†›55Ý© žÖ¹ç—3ç?÷ºqt×Ë}çÐ_Díó~¢;SðLkKûúg‡àÖv=`\Üà §qtK`¨ããè®#jX¸lšöÓë>¾¢¦ï[×ýüÑ1cü ç–º[5Çí`xpçÎ!¬èuUŸÓu–eÇG4/H "‹qS-è÷îUÀû£¼„!<3ÎhänÜò™X1åñùs!ç`°¬s´Àª6ºjk1ÏtNˆlÚôÂOpÁ ÒÏýÑ`¤ÛèA³ëEä»yäÀR€¡k£3Ìfá wp ñآÌ£Û6€AÁÏÏoÈŽ£ø ìÀ:ÀFøÜjio¨kí¼ÇG=zþäד§tòü„ISB&áƒãè/a8ì½V{­ÑPÙrï6ßÙIeºÚ Ç=¸ës¯©*¯¿aøža˜+eÕ¸ÓÀ;-ua·ÓÄÄÄÄÄÄ„„mj¼#€‘ªèÕW¾—DZâ§úM GD?25t2}øÁßq§Á@ÐÏuÝuÚŠôc´&³¸øÄ‰'OfPfv©— yxn‡uÝ1UWnv´Ý-ÓÕÑ­–ÖËËO9uüìÔÐɇˆ²öÞøÃÕ¸ÓÀÛ¬s"Òþíp9Ë®ÉÚË0DÄ0!òC;b»öÿ-=Ðe»(µ×Ò©mjƒÑ Þ–`¶ï]‰CDF£A½-ÁrusBµz›Ùa`4–f¯H/dYË=څܺü .ð ù@Ñûýÿ´¾M8¸u«íò¥ŠÊ«5Í·¾oh~õoåd}µçpÖžÃkW¯ÓW6Öéìg¡QqÇqœTªrº™FÕK—£u•èB¡ýÇ\ëÜFGï›í{öñ|òRÎÎYƒz[F!›œY\œ™ÌflSº´laúÙ¥Åy[¢y¾)3‰=·4™çË>ј՚瓳¶s>C8>¸188|•U›{¹ó8ÂÃÑŒp.|]­¶Ì\±1XHHÇÎ:2»Y¶0=ÍôpÀ0±;N‚´Eï–óÓZ…ãÓZ]õöÖ;æã€¿tvv2 #bY#o|pÿþþ=ï=½öi"òñ5Ülv¡ú|E—^êóf ZŸÿ³Ÿ©~)U7ípZÚ-«•TjmmëóR©=û[ŸŸ«–çØUqÛ|4*©JÓ#+«ÒíFönúëóR)Çq]‘ló®2`û£×V—õ °PkýøÙÂŒ•…,ëVæ »ý½­Ñ<Ï–ç*V®

¹ožs&D~èÔ©ÌdžˆŽ¥gcø(z/ÿÒ`õ±£;wU8¸{ÿÎh¿Ñ Ë2 ò¬ï(_†aš;nò¼‘ˆtvæîSÛ/F¦ÔjFíS âÖ%éú3EôòÁ—©èŒ^ô¸Gì%Ö”¨£"$Vòœ¼ I"¢\½VM‰ºKéeñru‰ÆÕ¬º"8ËÄŠšÊK—ö¯ç¸õû/]ª¬±“p>£÷ìÖhž?–žfž°Vzà@©ÑÈ0!²'cLb¯=[Ȳ1OÊB<çÓ6çŸ÷a‹òOtµºg\n{V2ÏSLx&ÃàxË 3ˉO_h}áµÓ毫æ‡8O25|\Ýu“/ý†¡qüxqGûm‘ˆa˜Ö»¦ypF#ßÒÜÞPßä?Æ×qN2¥ŽTR•F§”Iâ’*”ùš¤"JRÉâ(WyFCE”ôz]óÀU†EÎS—h”²A6„åµ°Å=o©÷Áñ΄Èž Ï^‘ž«X)¬hœœY¼ƒaˆ(D~(³:!#ce!ŸœyHâÙ:›òÏU$æ’0ës,ÿ3¶~²ép®båa>ùKÎ%þ²e‰ˆ§˜­C-úPôn~ºj!‘i(}ù"ñOW-ì5Ƀ{Ôe,XóþûÖVx 8aØŽŽ;·ZZ%Sœå¥¯ª˜©0Yé´>mÿœ—?’X‡QÝGxyª; -IÙ"—¦ªâ­ÛùhJÔòxe_šÐÅLÜ­3pFÿ×u¦•í°w*vÇ©;œDîϱÝüFfBä‡NÉÍñYWØá%&^äu7«¸+rNDâÑ--­÷îÞ#¢ûwO.‹˜6nÜØÑ~£&Mš0wîì§×­ii¾¿fÁ;wgͰ—G×T²uEI*“ÛY—4‡Ÿ“gòvó]ÇÝ}™gÆ _ÜxM¦ÔåPšÍÛkÝù¤RŽ3û¹GévÏõš‰Ûu½Yçh€7À¼òÊ+»wï¶ =þ¥¡W§÷@ xÝ…ÉqÎía+‘o¾º^w½)~Í‚2]-ωŒDÂJ µ4ߺVYÓù 3"jÊÒø¸ÙîدÅå¾·U;_´ÜÖR'"Aà›ìEEE)))Ãr)xì½À`±{÷Sˬ¹Óë›ÿ_Þ'­­ícÇ1‚šÆ›7ôÕß=xð`Ú£Asð,u·ïùùùh7€ùꫯ†üÞk‹Ÿ|ü‹ åW¾ªž8i¼èÉ5 >+ºdÐ×ÐÐ4zô¨ÙG,~òqÜi0p&iÆÑSRRÐtÏR^^î]ŠþõQ}ðö/X"™\y¥ÖPSÿöþ‚ÿýâkq Ôœ°˜yÓ%Ó¦à6¯²Î©§Ç<Â;w†ÉþèSB&a+t0(`t€—À¢ ðˆ¥Žv .CÖFÇžÀ èÿûè0²mt£Ñösü‹Z»áÖŸ¡|û``£{»Xº@e…á\aUcC»`gÔüI e1bñXx €GÀF÷jÚÛ:ê®7ߨ¾Ýö=Õ_+hþö›j4 €¥€¢%jª —¿¨ýôãê»·ysàù"(:°fÀöG·ñAXñÖ¾£-ulkk‡ŸÏø6ÑE"Ûù1|[#ÚØ·Î!çØèÞÈK;×Þnï- ì–s"2²þbŒm;ôgt€>€dï}+hžoãå0“–c?ÙoÆB_÷3Ó¨¤%6{§v£ÏW¬Û•£Ãnå#×RwqnÝ ŒFcÖ«¿}dʤ+—7Ä6ÿÓM!|qRØ´˜±‘3ÃÖÏ×ùÇŽrÔi+ÒÑšÌââ'Nœ<™A™ÙME¼V· ¨`„3¬¼îÇ¿48:å|K·=»~1=lIÜ 7›Äâªk5Á¡“$á!é¿bÜ^ìEž“—"±cЧ°,ñü œKK½ÏŽ÷¶;ÜM¢ýÛár–]“¹=–aˆˆaBä‡vt©šáôM¹å,Ï'gÜË0FciöŠôc´fëÖ«¹¹å<½õ½ƒòÆyä¬,JO§7N,9—øËBÖô蟜Y¼Óf¯H/dY– ÓWPW*ë|¬„Ön„pËÌwÄZW ëävŽê\¹¢Áv*fý´ép¹ég˜œur;GZçÈÈ($¢è-yeš´M‡Ë(Ʋæv›´ç…;k`£;cÕüG'©^ݵϷ%fÉÒ'êo4ŠÅâkW®GÌž3oV` ˜ñØ/P¦Ôé´Z­V«ÕA·y½ýÎç[Kôì1âù䥜=±ÏÞt¸,fKæ–:–ž­íþ©³…ŸPFqÞ–*;ü7m¯‘ÓÏ.=ujÇ"vÑŽS§Nœ8Qœ·%šç¥gk‰Û~2+™ç-UÊQ>=þ×ÈLfÙr¡ k•¹Ù¶6W –a\¼"†‰µ­X§ŠM‡Ëº¼BνV@/ÏU¬È¤Œ÷¶ÆPÙáÌ q¬®ÈÅ{}@xí×oú´ÌJÜ8÷äûÕb±¸Vo‹œ" uÍÓ^Q¥'"}¾"U®4‚­ó~fÒ~÷óëY bO4#œ ŸADW«ÍòÃóÉŠÁ>ƒˆŽ-5GÎÚÞóyAHèf¡–˜*À-Mæy¡N27WÀ­+êýÿ[˜žö¡ê9ª@pø áøàÆ`!NYu­+Wär³àAFô\÷¬=ÙlcôŠgæj?½.‰Šß¿–´iZÄôp×ÌnRI¥Rš·óHŽ|]‰›…wùáY*à àŠºô]÷{øþT ÛK|Ò$Â,[˜±²XVŸàÞDÎyäng5Ëïj>!.V¾O™»ßJ »ý½­W7./ÏU¬Ìì®W ï6SŸš(º{¼sè/A~±óž Ñ©ùˆZ[Ú׿8+8$È597‹ºN)êd]!²žd½§ÃÂRï³ãý¾›ŠÎ0±K×PaaáYíöØX«“¡á1Ä—õp;;¶ {l4>Ì<\F1[óÕ›Ò¹œO/Ä„‡ö#ó¾ÙºLˆüÐ)y鄌BöXzöRa„¾÷ ëWÔßf ŸO#öÊEí —M»øOƒ¯èVsûÚç3Æ/ }¸ŽGÆÑïwòÎ?¶I¸g·Zûv‰}ˆìÉ–-Ìû°Î…'W"×V—ÑŒð`k­"ºZ]çV¡W«ëˆ´g Y–f„‡0ŒƒÌ©ÏWdU1»pÛ³’y¾K€{¯€›WÔçšEïuUŸveÙ‰‘·â:ejðTtÐ뼟™Ü{À;ÿØ57žÌZCÇ2V®\¹2Ã<[›ˆBä‡2“ùò\Ebbb¯ïqõ™ab·g­aÙÂôyWcˆe ÓWdk)xcÆÖ*ËU¬R¹Xè'™+VfšÇÈífn›Öõ+b˜«ŠY8L¯ï¯\™qŒb¶fl a+à«+êsÍðÌ+¯¼²{÷n«Ðã_œÏ úS®«iFðÙ½¾åø¨>xv{Ìc‘ >.‰¼é¶0„¿W¢Ü÷¶jç‹‚–[Zêæ¯‚À»n²¿ùîIkÖ;Stì£!½ ¬åHÿðð?¿+À½{÷ŽÐqtÕÖbžéœÙ´é…Ÿ Xê}Ý¢c¡ ýg„*zÐìú›—ƒ6oƒœƒ~ÑÿuÝGÂ,Âkß;pE@Ñâç¸Y8ÈEƒi€Áºîô ì€>x¸6鬲Âp®°ª±¡Ý?°3jþ¤…²±xìCª!æÚÀRØè¡½­£îzóêÛmßSý5ѹ‚æo¿©F³+<ò>:@ÑŠšjÃå/j?ý¸úîíîWÏAÑ}ëíð|ÐV¼µïhKÛÚÚáç3¾Mt‘ˆÆv>F ßÖˆ¶vèÿºî}@xiçÚÛí£EÝrNDFÖ_Œ±mKE:dï}+h^ðc;3É9cÿÈ訅îg¦QIUǧõù ©ÓÀËÁ8:ŠîÆ7ödðTrâªç‚ÌዓžÚ4=éiÏnvªQI¥JJ’£ÝaݳržõjvphPBⲆú&??ÿÙË;‰(nud\òÌÈ™aNíoó±F%Uiôù ©T*UwV L©Óå¥D å‡:xE÷.ö¾ö»Ð°àeË—45¶Ž5Z_cˆž3õåãVGúø¸5Pª$•N§Ó)£Ya©ÀÃbXÍu?þ¥ÁÑ)çÛ²íÙõ›ˆéaKâžh¸Ù$W]« $ Iÿmãöb/òœ¼‰ƒ>µ€e‰ˆç7äè”2t½aAÿ×u(ºÛ²íˆWwíóm‰Y²tnýÆqãÆ]»r}ztè£3#}}}=W5™R§S¢» SërðFº×ýµ_¿éÓ2+qãÜ“ïW‹ÅâZ½!,rŠ$,Ô5O{E•žˆôùŠT5ºÒHãèØèƒOÖžl¶1zÅ3sµŸ^‰DÅï_KÚ4-bz¸¿¿¿kf7©¤R)ÍÛy$G¾®ÄÍ»üð,ppÅXKÝÅx¸Pt‡¼sè/A~±óž Ñ©ùˆZ[Ú׿8+8$È597‹z—/]'ë ‘õŒ ë=-²xdýß7oráw'¦ôÊÈõº‹Ú#.›vñŸ_Ñ­æöµÏ?:fŒ_@@úp×:ïg&cü|œ¬â¥”º¶‹`ßRõ­”þ$”l{Qz 11111Ñy)¡&^ÛDÀËïÑȵÑëª:>§ë,ËŽh^:E,£ÃwéÿºîcýìÏÁä8N«ÕŽäÿ}Ù+ÒÑš¬“Ûc†abwœ:µc@‹K?Æw7ˆ5±·x$\ò@wvw&¾áÆ-Ÿ‰µaSŸ?rËRo»óÀöÃqœù”+üjõ¶ÄÄÄ„„mjC÷³é»F§¥¡`e4_W¤å]íQA½-Á‰ýj7¡£‚ºK$$¸À_Ò (5 ÿë Y–e ÓWdÛÖ³ÇÕ(u¥5,±JkY\ÆÊ•–¥8¯‰å…nSŒõ¶„ËÒm[ϪlïŽek8¿4G·¬×Nb[‡^ï²Û¯ëÖ‘Ð,æy¿`Õ°}«³£âlû¿Ý«³ª•éîØ tÞåºÛÐAZ'¿çÝÕ|¶mÛÖã§jÛ©jG¨¢«¶óLç„ÈÆM/<Ã-’ŠD"ÈèY×½ý΃ö;–/}bùÒ'ÌÇDô÷“g…¯½?˜³…ŸPFqÞ–*;ü7“YoPoK?³%¯øÄ‰§NípÑÒf§²lrfñÉŒ'{†o:\³%sK KÏÖºžÐyµÓÏ.=ujÇ"vÑŽS§Nœ8Qœ·%šç¥gk‰Û~2+™çy>Ù®gPoË(d“3‹‹3“ÙÂŒmjƒóÖpž–abÍÅe[6—å)G¦¤p!BåËs+2)ã½­1Tv8óCƒÑè¤õÌ-`™­`ÆY¶†Yì^š‹-oJ›™Ì²å–ÍbY‡^ï²+yÚ½5Fciö¦Ãe´&³ØÔ!±‹\iØ^ëì¨'ØöÛ«³­U,ÃØ ìµË õá„[m“ÖÝoŸ’#Tуf׋Èwó¶Ÿ@“À Zç&E¿û ýîóñêK‰èþ~Z7ŸrÏ'+6Spø ":vV0G4Ÿ”ÍvËqe¨¾J<J¦Üº¬„³ÇˆhF8>ƒˆ®V¬-û {­vÖv®Gki…«ãù䥷4™çË>ј«dÛ®§í¦ Ÿ!Ü,”^V]ë´õì´€ÓÖ°{£]lySZni2Ï[6‹¹½ÞeWòtÞ¼,[˜žö¡ë­íBígÛÿ\ÝZYöÚå,ï£[—Ùkwuë'9"a6§ýT™»’ÆK?`èÐÿ÷Ñï=àï=à…ã­^NDþ¸D´<å&µÕe}Neÿ9€e 3Vf²¬ T®'téa ޖ°RÈ¿Wg§J‘¶ï8m½þ´F[Þy=­†\˜Òe¿y&vû{[£yž-ÏU¬\) %xGwÓ~ÿ·º:»µrPU—ºÍ\¦{?I¬ëÀ [ê÷ð÷-dû¿Ô'…ó§O¹††ÇxðCÃcHðH»åÃwÝ7ðaæá2ŠÙ’—™Ìó}¹º˜ðÐ>·ŒiFë¹ßîcÿ’íÔÓ< à¬ò¦<6/"?têTf2OD–C ý¯³KÕppìÖÊ^ «Ý¦¿—Ù¿N5"ÝhtåSY^ûÞs¿U¿½÷§_h½ÕêbB|ÀÁ#ãè÷;ùû¦ÜoÿO±ðÕòÓ'?TˆìÉ¢«ÕuvÏÆ.]CÂYa”Î2œe Ïj­ÂCdOưlaÞ‡uŠs”Ð~A®"ÂÿP;—`®ÏY-‘öl!ËÆ<) qí!£OiÖÄ­µ^ÌnG-o«Õu¦K¦á¶—ì~=íäÙkórÛ³’y¾§î:iXWëlUœmÿw~u=ke'ÐÝnc7Ã>u÷~’°ÑíÓÞÖQw½ùFõí¶ï©þšè\Aó·ßT£Y€g­sÁµ~è¯E‡þZdélïŸ×B䇲֔å*VÚu–rÏn¡²\Åʼ𭖆 ÷ìÖhž/ÌXyvi–exˆüPf2_ž«päzu”ÐQA־ʬ5,[˜¾"ïj “Ÿµ¼1ÔֶD¡>…+WfòÉ™‡ä!nµŒ[i&ÄIM\/ÑIëõÚN’8jy[>É\±2£ÐÉà½[õt”§Ýæ5{ïW®Ì8F1[36 ºÛkúXgÛ»iÛÿm¯În­ìºØm¥íÂË?Iæ•W^Ù½{·UÇ¿4ômד~ÒŸr]MË0½Á5Õ†ºëí'ÿvÕØÙ=~|Hgꮤ‡Ô.T Ê}o«v¾(h¹¥¥nþ*¼ë&û›ï~´f½ó8EÇ>Â*° NIÏ¿ö=Я’ÀWÕ{oƒ:mÓá²5Y§vÄÚ°wï^4“oí;ÚRǶ¶vøùŒo]$¢±÷5¢m€3K½Ï¢[tì#´!ÀÉÃàoçc¶¾çä刾S‹]^Ú¹vÏKGF‹»åœˆŒ¬¿˜Gã+ú¿®;Œo0Ð Ä:e½öæë[S`Ýšì½oÍk`vlçc&9gŒãµ0ÐýÌ4*©Jãø´>_!u ëíð èÝÆ7ödðTrâªç‚ÌዓžÚ4=éiÏnvªQI¥JJ’£Ý‡8ØE÷:9Ïz5;84(!qYC}“ŸŸÿìåD·:2.yfäÌ0§ö·ùX£’ª4ú|…T*•ªÎ;+P¦ÔéòR"Ðò°ÔŠîIö¾ö»Ð°àeË—45¶Ž5Z_cˆž3õåãVGúø¸5Û@ª$•N§Ó)£Y‡;y<°šwüKƒ£SÎ_lÛ³ë7ÓÖÄ=Ñp³I(®ºV:I’þÛ(Æí'ä9y);}j0Y‘ߣSÊÐõ†‘u9@Ñ=LßÞeu×>ß–˜%KçÖßh7nܵ+×§G‡>:3Ò×××sU“)u:%ºÛp¤ÿû£€Gé^÷×~ý¦OˬÄsO¾_-‹kõ†°È)’°P×<íUz"Òç+RÕèJ#ÞRG; èƒFÖžl¶1zÅÆ¹ÚO¯³,[üþµÐiAFEŠÅc]p¶Ë”º-•ë¤R©’T9îOYר¤RŽK+` Ò8ï° Q0ŽðFî 3ïúK_ì¼gBtgjD>¢Ö–öõ/Î  ò÷÷w9 _ºNÖ"ëAÖ{Z0Ä­sÈ96ú`"jX¸lÚÅ||E·šÛ×>ÿè˜1~èÀ-ð>:Š>ÈÔUu|þÙu–e'FÞŠÿqpp蔩ÁSÑ!@Ÿ-u´Š>8|Ã[>kÃ"¦<>®X,Foî‚qt}Qm-æ™Î ‘›^x†[$‰Dè Ö9Š>ôš]/"ßÍÛ~‚ú ÆÑ^ˆœëÎ0›…ƒ\tà1KŽwlt†*GÀFTŒFWbUVÎV56´ûvFÍŸ´P#}H5t{1yëØ£½­£îzóêÛmßSý5ѹ‚æo¿©F³[0Ž€¢{/5Õ†Ë_Ô~úqõÝÛ¼9ð|8³ÔÑ€ÁÅM`Å[ûŽ¶Ô±­­~>ãÛD‰hlçcÄðmh`y×58Þ°Ñ½Ž—v®½ÝÞ9ZØ-çDddýÅÛ°ÎPô¡CöÞ·‚æ50 ;¶ó1“œ3ÆñŒŽZè~f•ÓMÕôù ìº6ÔÁ8:ŠîuÆ7ödðTrâªç‚ÌዓžÚ4=éi™GKÓ¨¤R%%ÉÑî°ÔŠîY9Ïz5;84(!qYC}“ŸŸÿìåD·:2.yfäÌ0§ö·ùX£’ª4ú|…T*•ªÎ;+P¦ÔéòR"ÐòC¼€¢{{_û]hXð²åKš[G­¯1DÏ™Îúòq«#}|Üš?¨NU’J§Ó锋Ѭ°Îàa1¬æºÿÒàèÔªù!NîÙõ›ˆéaKâžh¸Ù$W]« $ Iÿmãöb/òœ¼‰ƒ>µ€e‰ˆç7äè”2t½á‚0Ž.Ìx(ºp®ÙNxu×>ß–˜%KçÖßh7nܵ+×§G‡>:3Ò×××sµ“)u:%ºÛ°¶Ôáx .#ÝëþÚ¯ßôi™•¸qîÉ÷«Åbq­Þ9Eêš§½¢JODú|Eª]iD‚qtÝ+ÈÚ“Í6F¯Ø8Wûéu–e‹ß¿:-èѨH±x¬ Îv™R·¥rT*U’*Çý)ë•TÊqilAÇá¶!m£ÞÀÈ]3îC ò‹÷LˆîLÈGÔÚÒ¾þÅYÁ!Aþþþ.çaáK×ɺBd=#ÈzO †2GÀFdDí —M»øOƒ¯èVsûÚç3Æ/ }ÀRÀFJÔUu|N×Y–Ѽ 1$8tŠX,F‡nuݰѣ‘o¸qËgbmXÄ”ÇçÏ…œXçØèCÕÖbžéœÙ´é…Ÿ €þ€qtlôÁ$hv½ˆ|7oƒœXêØèC†Ù,䢀~qt}ð0‰è…×N{{=½¿†}âÝ]ˇŸu9@Ñ=í–ö†ºÖÎ{|Ôã¡çO~=yj@'ÏO˜8%d’“T?\…ÛÿùàhÅð»(Œ£¼„!?Ž^{­ÑPÙrï6ßÙIeºÚ Ç=¸ës¯©*¯¿aøža˜+eÕ¸Íà!Xêh½ïT_ù^imˆOœê7%\ýÈÔÐÉDôáÇmÖu@Ñ=@Õ•›mwËtµDt«¥õòÅòEgN?;5t²ð!¢¬=‡7þp5n3€uö áqô¦ú6?"ºu«íò¥Š†ú¦;·ïÆWñÖ¤É[ïÖÑÚÕëô•õcÅÁ’É–iƲŸÿ?Ÿ³=hx~åsHv{Ct`4~^ðsÍœ~”n¼tèW¿-~8b®méúYíaÆÑPtkþ|üóÓZ?8Z±|‘ø§«öj ›ÛZÛÛZ;îÞ½Çy£ÑÈ2lKKkÆ[³öfY& ÀÿÚ•Z+Eg˜˜<¶ÑRêg˜…ÿ¸°ïY]:”q€žûÃÇ}»ŠAl„ád©Ãñ€¢w˹p|úB+ÑçÎE½½õŽù8 ÀïÁƒ ð ÃóÆ÷ïïßó^òÚx"òñÝ04»§mYa§Òß©¡$Å»O|ýÂîÏY–çg®ÎzsicÁl 7œxùÀß®˜íã(ÒüüË„]™ +Í9—þœžëiìZF{®;ÄN¡]u®;÷qQ쎣¶zìJVæªö¨‰½ÎMãÍŸþN-Ë.ü7Îë¥Îü€¢[#ȹð²ò ¯>}¡õ§«œÅ¿·Sºd†0ˆ~»ãÎýû|}|<èìäy–e‰aÜï4G~úÇËÏ]®KÑŸÞÞüòŽNf"še6åUG”ë&YD˜Tä÷?Ï¡?¤F‘î³üé?ûÛ¢µpcÏ„“¦"ï¯AYGUA¦8ÑØCÝ*Þ]|EÞ+´ã¨jc¼t(#O÷Æs É^¡enV&Í™kçJ\ÌjƒuMz´@ùŸìfbõèPwîíÏË:úotä÷oi˜Û£¡&_ÓÖ9À{ðÞ™qÇ¿4X}¬"èÎ]îÞ¿3Úo4ò ð,ë;Ê—a˜æŽ›üüš_mÞSZYó½U„G$S‰ˆˆanØAÿ½ùé/-mVË„Fãç—?›þÈ#½; .Ö%Ïse±ŸiÊMjo]¨+þ†¾fÕÝŽ3±Âp³²üOÿ*ã5¶ 5¬ÆÑñ¯ÝÄòEâÓZÍK¹-_$^5?ÄIü©áãê®›|é7 ãÇ‹;Úo‹|D ôÞmè’4¾¥¹½¡¾ÉŒoßjÕmz>¢+ø¹ÆILfÞ¶×ß‘ŸS­=üÝ;[ƒ]Oè B‚"‹.•=opïaÒÏÞéö#èWK½›Ÿ®Z¸|‘Ø,ç½ÎŒ{p¯“º4cÁ¢˜òʯ[ï6´ÝûÞ,çâ@†a;:îÜji•DLéGÕz7¬M¢Î/Q¯î²b{$d˜…s–]þª×L,¢}¥)]&ëuø™a‚—茈š²4~mAX×ýáóÁÑŠ¡¾S‹rßÛª/ Zni©›¿ Î@㙽{÷á5ãfÍ6:€ùyŸ´¶¶3 1 Ã0 Ë2DÆ›7ê¯^¹~ïî=ÉôI¶rÀ@XêhÀà2´×u_üä㑳‚¯}[][óݺúÙ Cëo6^ü¢ì«‹·oß™9[²|U,î180Žð¼kØ®r×Û¿`Qtˆdrå•ZCMýÛû þ÷‹¯ÅþQsÂbæM—L›‚ ‚u9@Ñ=ÔIηB`àÀºî(ú óÁÑ Ü~KE÷:ÜšŸßëŒëÊ Ã¹ÂªÆ†vÿÀΨù“ÊbÄâ±è.À ¬ëðX4-ímu×›oTßnûžê¯‰Î4ûM5š8²ÎÑ(º7RSm¸üEí§W߽͛ÏAÑ}°®;ÀKðAXòÖ¾£-ulkk‡ŸÏø6ÑE"Ûù1|[#Úôb©Ãñ€îE¼´sííöÎÑ¢Àn9'"#ë/fÐ8À¼€¢{)Ù{ß š×À0ìØÎÇLrÎÇ?2:ja g Òç+¤R•->,¬s´ŠîEÆ7ödðTrâªç‚ÌዓžÚ4=éiYÏè•{zl_£’J•”$G£ 0Ž€¢{—œg½š”¸¬¡¾ÉÏÏöòN"Š[—<3rf˜<§°©f‘Öç+¤RŽãÌ¢­ÏWpÇqœTª:o_¦ÔéòR"Ðì°ÔÀƒ`fÑÞ×~¼t™¬©±uÔ¨ÑúCôœéßœ«Š[ÉØÙ\¦Ôå´$^§” ò­,J:¢Ë£|…2_/K‘&o_ÔA]žÙ®_Ü#>>à}t}@8þ¥ÁÑ)'‹ÏìÙõ›ˆéaKâžh¸Ù$W]« $ Iÿm”=9·¥¦òÒ¥‚õÜ~"žßPC$!™2§„㸠µÐð‘`CÎPtÓ‡=Ý_ݵϷ%fÉÒ¹õ7ÇwíÊõéѡΌôõõu'¹µvË”Z­"_!UTÉK‘ Ÿ c°®;ÀKÑãè¯ýúMŸ–Y‰çž|¿Z,×ê a‘S$a¡>>n=èÈâåê;Óä$)y9Qûò0¡}„Xêh}pÈÚ“Í6F¯Ø8Wûéu–e‹ß¿:-èѨH±x¬ Îv™2‡Ì3ã„/Â<8 ‘0›ã8ŽK£Áv·Œ/œM+` Òº“€! ÞGx#tfÜ;‡þä;ï™Ý™‘¨µ¥}ý‹³‚C‚üýý]¶Ì•:]/JrôÕ*¾½³`([çslôACÔ±pÙ´‹ÿ4øøŠn5·¯}þÑ1cüÐ!€»à}t}0©«êøü³ë,ËNŒ¼ÿãààÐ)Sƒ§)-MªIDAT¢7€þXêh}0ù†·|&Ö†ELy|þ\±XŒ®úÆÑPôÁDµµ˜g:'D6nzán‘T$¡Xç(úÐ#hv½ˆ|7oû n?è?Gx #q®»+Z^Ya8WXÕØÐîØ5ÒBYŒX<Ý8±ÔáxÀF÷:ÚÛ:ê®7ߨ¾Ýö=Õ_+hþö›j4 °ãè(º÷RSm¸üEí§W߽͛ÏAÑCëíð°÷ZÞÚw´¥Žmmíðóß&ºHDc;#†okDÛû`]wltoä¥ko·wŽvË9Y1ƒÆ°ÔPô!CöÞ·‚æ50 ;¶ó1“œ3ÆñŒŽZèÙ‚ôùŠž+º›—‚ç¤RE¾·bh€qtÝë0oìÉ;.à©äÄUÏ™Ã'…=µizÒÓVûœkTîí°b_£’J•”$ïA¦Ôé´Z­V«ÕI*RBÓa½OržõjvphPBⲆú&??ÿÙË;‰(nud\òÌÈ™a6òœZÀ˜÷^,nŽãÌ¢­ÏWtܪóÖñeJ./%Âam$Q—*kpW†xà%`fÑÞ×~¼t™¬©±uÔ¨ÑúCôœéßœ«Š[iogU™R—CÒ’x°Sª>_Y”tD—Gù e¾^–"!MÞ¾¨ƒº<³]¿¸Gü^ÐççRNž we¨Yêp¼ èãø—G§VÍqtjÏ®ßDL[÷DÃÍ&q ¸êZMpè$IxHúo£\Ø(ˆj*/]*XÏí'âù 5D’)sJ8ŽÛpP«tS™5*inäèùPÁ<Ër€¢{'²íˆWwíóm‰Y²tnýÆqãÆ]»r}ztè£3#}}}ÝÉFn­Ý2¥V«ÈWHUGòR$®e¢ÏW¬«Ü¢ƒœÃ:€>0¢ÇÑ_ûõ›>-³7Î=ù~µX,®ÕÂ"§HÂB}|ÜzБÅËÕ%v¦ÉIRòr¢öå¹8N£R’J§„œ50Ž€¢2Y{²ÙÆèçj?½Î²lñû×B§=)uÁÙ.SæyfœðE˜§ÔÙô*Zåm_8›VÀ¤Y$)Q_Ú¿ž3ϧӠo5Kí\Fè̸wý%È/vÞ3!º35"QkKûúg‡ùûû»l™+uº_”äè«U|{gíoãèØèƒŒ¨=bá²iÿiðñÝjn_ûü£cÆø CXçØèC‰ºªŽÏé:˲ã#š$†‡N‹Åè  `]wlôÁÄhänÜò™X1åñùs!ç–:6úÐCµµ˜g:'D6mzá'è ?`}0 š]/"ßÍÛ çÖ9Š>”ù±b]Lbë_ÿúWçÑÕjuEEz pÞG@Ñ‡ŽŽŽ£G¾þúë§OŸîïï:ꪛ¾«nþ®º¹ñ»!°¡¡áÔ©S¿øÅ/4¼`©¼7ŽÞØØxîܹùóçOš4éüÙ-^úƒ3E_ݨ«oii!#ùøøNš÷ÔܦÆ[ãÇ÷õõU«Õááá¡¡¡è.À Œ£ èƒ†D"Q*• ;¶ï¨øºê²ö™Ñ£üBB‚ƒ%“ïÝ¿à?†ˆ­¹®'»ü¿Ö4µ}·vÝš©S§¢¯GÖ9äEBBBBBB6oÚñõWߌ ð—ÆÎŸµ äÜg´º3qqËžXûŠ>ù÷uÜ™óè£ëV?³ ½8„‘»®û­¦Ûѳf-]þƒY Bˆ¨­ãVuÍõ[·Z„³+Vÿ@¶”kkí¸úuMR}¾B‘¯ï:”ZwöD£r°N»>_%܇¥Žv@Ñãç‰é\°p^xÔ$!äîÝ;-·ZîÞ»c޳hé¼ñ“Æ^)¯´I-‰ˆºTYCDD5•—ÙËEgôÂñ¥¨{;§Ê”¦=Õ,¥]£’J•”$Gʘg¹Ãñ€¢W®|2[:­Ûdomijjì¸Ýn-òÑð[·nUWÞ°–è®ýS5%ê 6ò®)QËãeæ×¤fÛ4*©êR~¹²¡ñæjyòî3 ÓØØxóf½9pæìp‘ñöíë,Â"çUTéI_U1/2Þâ8Ì$ÕZ­V§ÛR©ìvÂ3$Sêr6ðr°úð„a53îø—G§VÍ1ß¿ÿöíÛVæÍ{¬ªªê«¯¾ š"—o4‡ód¼ÿà¾uv’ˆ¨K%5QII Yå*Ïè#*)I!øÜõùŠuû.³,Ïoˆ'’ — KŽwÝ3Xj¶sx#o¤N«À… ¥¾¾>ÿøÇ?***>×~±[ „wvv2ÄØä!‹—§–¨H¯ä=¯D¯ô\Y”tD—'Ѩ¤%èaüðF¢×ÝÏo´Ÿ¿_Áߊ¬Â{ì±ýèG Ãü)ïO5Õ"ª¼¢ç;£F²Í$,r^AAàg·<&""ûäÀpµÎÑ(úà0.p|xØ´oÊÊ+.WYš>}úsŠçþ=í?ÂÂCˆ¨¦ªvŒ¿8PlgyI\Ò~NRœÄê˜H—T‘ÆqRi ÉÕ©RÕy Ë^™C]3ã„ tilAÇá¶¡ ÆÑ^ÂH\afJèĘٳªÿQóé'çÇN•L´<;5xÊÔ`"¢²KW¯_«9sæ”P{ÿ¯%)yº;ÇD’”<­é›R©$"Z¬“™5]§ë>R¢#KŽwlôA`É“ 8naå·×‹þ~êú·ßYmiìø_í7ºÒKS‚¦Èžœ‡^÷ÑPôÁgÝž-ºzåÚù—ýÓòÔé“ç>+ùç8ñ„Uë— ‹€^­s´ÀðÉÿô³+&NšxñËËŸ}rîèÇ…FžD"60p\Ð#A ¤ó—®˜þz뺠è^AÜ idTXsss{{;Ïó"– 3füøñ¡á s·,u8ÞPôA&4üè7èxà=°húi£Pt†æzä6ÑEÜl0@Ö9äEï/)ÿ'&r¦„ˆŒF#ØvH»{çÎÝ;·Çwmªþí„MR}¾BIª¼I€×ó"þ[ZßÇ-Ì5*ijkÈØpPÛ¿Ð5*7jÒ£h{±?ð>:ŠîŒFã­¶–æúšû_#ÃWb¾ÙoŒ¸y”¤õ›ÇNçpÊ’$.‰”gô)]’®?SDIª0’(uýA¹IÇ5*iª*Þ3‚ꊴ›W‰wë9ÀR †ü̸º†º]_¿šÕøöÔ&íTÿ;cÆø‰èþ¤{ׯ½‘Ù–™ÙT_ï(¡$eKÔ¾¼®Ï4yû¢¶¤Hˆ4*ó6hú|…TÊqœJ#|énú¢ÏW(òõv6^néèÎÇÀq×½åšE¡=ŽÉh2¾ R- ì™¶×§•FŸ¯JMñm*c'¸ Öu@Ñ=FÎßûŠ>~AýZPXë¨ÑFbˆˆ4tÆÝ¼éóŸÿéÄ®—«KÓ”¨åñ=íZ}¾²(éˆNûÑ˹ùz’Ä%U‘õgŠ.³lE•¾Ë²³Ý ]ŸŸÛ•¡U>¦§‡ƒZ­V«ÕõfL3$Sêr6tûÏÝHÛ…:UI*N§SÊìTÆ6¸m£Þ€×yÝiptjÕüÛÀN¦Óïß_V½íÈŽsçü'Onmn¤dj=p`Ü›·&O;•ôÔR&Ó”¨åñV[›ÖT^ºT°žÛOÄójˆdqIy’…)¢—¾\”{FŸw¦ˆ’T–‚®Nã ˆhÎËé”»ùHH¦Ì)á8®Oí}H+Ïéž-`[ÛàG@ÑÝm'dÍÉ$"šG¯,Þ¥P(:Î0Ì„Ì7ˆh\/ú¨Ø™«Ì×TUìTÙÙ«\ÞC7%qIÊ|MR%©dq”«<£!kA7%ѨCôVù‘L©Õ*òREÕ‹¹y®jzßÓÚ­ŒÐKŽwÀà2|V˜™8qbvvöK/½ôä“OÞ¹sǵD’¸$ÚŸ¶ßžçÜÂ'o'²“„D$SªHi—¶ÍÇ”[J^ŽÅ@¾É‹Ÿ¯HU»PížiÝx°©Œ£ê—À8:Š>Pøúú†‡‡·µµ¹_—4‡ŸcW—eÊJ•ZÎA³Œ,‰ˆâ$4in|‰T‘¯·“F%•rÇqi”#Ç2¥nKå:©Tª$UŽÜ~E¥u×·¾(Ûà®uŽvxÌ+¯¼²{÷n«Ðã_Üõ~{·ÊUýÛ óûèfjkkýüü&Mšd³MtkÆþ£Ü÷¶jç‹‚–[Zêæ¯‚ÀÃd°Œæì¬°­™"_o_Ÿ¯J,øÙs0iTÝqlÅwoȦÏWH¥Çu¢QIUùùŠž¥XÝóŠLEoÛ&M-` R±ßšç,u´ŠÞ/rnüÞ7Pôñ êׂÂZG6CD¤  {4îæMŸÿüOÇIeÊœ¨ýë9ÇBjFZ¯Õ”«S¥¦Ë-Åœ•)u:­V«Óm©Tš‹Q§*I¥Ó}ñÅÿ§y“sM‰Z¾Å‘·@ŸŸ«–ÇË„CeQÒö£—+r»3,"•V«ÕåDíë*E£J¥V«ÕåPj·j›‹>tH—³Ádžxà=x×ýø—G§ìn´ÚÉtú=ðûáëϪ·ÙqîœÿäÉ­Í”L­Œ»qóÖäÉbr¦éZm¼JªÌËsê{—ç(eD‹—Ïêóëö]fYžßO$âw•&SìÌÍÓL¦)©Ø©PÚ>I¤qD4çåtJ!EMå¥Kë¹ýD<¿¡¦+CÓ³€,^žZRC$!M‰Z¯$s F)“õ,xÐ:ÿÿÛ»ŸÐ&ï8Žãßv½¹)ó”þ¡ÐP(Ýá1—Šr`›SwyœŠv„2†S£½<®UœJ ‚H.Ë)Ö&uƒ\sÉd¥¬¤Zòèq ”­»”~É“4¦éŸ¤õIö~Ê“§¿< Â'ßß÷Éó#Îè»ÊìÚ¦nŠˆ ÊäÐwº®?xð «««­­í“›ß‹ÈÑà7,153} Õj¡¤Ž{Ò¦–ªò{Ïp0OÛ«±lЬ’´ªž6õö˜“Äa.’súè\¢uî0sìØ±{÷î]½zõÌ™3{‰ÝÕì`ogáIvÕV•u$Ù˜÷åí©U{ÆÆ%f,HpØSã3‡)FaæÜØ:ã¯JùÂ|:Uœœ/VÚ‰ƒ­Ô9HôF:räHWW×úúú.Ư -Í´µaçBš¦bFà x;žá`vÂçÓ´”„“Í|U%¯ÞEïxí¹pÏXºãÍ›7ǯ¹þÑ.½gœÐã=ñýÏ£ó%´CeÜ~h^¿¢êrµ§¢®ŠuÀ!›™™iúï£çV*¯Tÿ÷ïÞýe7ÉÛ·ÆBÐŒó±yÑGàÍè‰þlòóï‹×ç~â>ÿÀ¸â‰^ãdz{~–l4÷uଦ Ô[sè@Óc}t$:@¥ Ó°>úýéǵ|õíœn´úèZ-ÑïO?»xnÇ1„:Z²:'θAfÝÝ}:vñ܉Ÿª‡ˆ\¾|Éùéì»xnÇ:h:ôÑ´N¢«Ø‘P( …ž=ûettÔù©v:c€V­Ô9Z!ÑEdeyM×/ˆÈ“­DD×/¬,¯mó:;¡(·ºV¶½‹uËED$mVÞœ¼xÃvm·‡ØËÁîëÀ=y‡™ÏNÞ¹ur/òôxÕšÞ’Ï-µ/‰Z84Ÿ[ôêXÉ;<›1üvB™=Üó\çZªFïëïÞß …?Ó©äÈÈÈb./[–u n§VN›š™¶º¦i«™¥MMÓÊ—íq–Iµº¦ù|¾âQ¶$]¥¾/ÛYe NuN@K%úÊòZ_÷µêéµåZ¯ììÌ®Új•ò@Ùv§ ؈D­L&cE%RŠÔdÄÓ²,Ë*ÝTÀ²âŸwŠHrÂçÓ 1ãj™R;a,ç­ÌÓkÙ˜3_<È|o¬˜Öi3Ö;oe2«TÙW¼_©s|XÛκ?ýv»_U]hµ¯¿{eyíέYõÔÙØYaÞ½''AÝ?,1ã…Ý““ î)ÖêF±–¤Ò†ß/"ŽÆ·¬(¾šÐcbZ†³/<›1üiS3Ó–áÉççÎûîˆlnލ9þÒA<=^É©@O%½…?Wòþ0 €ï£p{¢ïcqtU£‡B!•åuyÍ€÷‘”)IoÀPñ¯¬µ$½Å¤Þz`çCÀl††:¤:'θAÃfÝ#ùнüQûµ½ƒsssjž½|»¬É¾¥µþžðx|¢ܵ©ä¿ö¯ËÙÂÎùùùŠa÷§{úŽrÆÑJø>:€–Jôpx4™|²ãJ©ž¾£áð(gTçàÒDW¡Î©Äÿ}t.ÑÎ)R©sè@³b}t$:@u$:àÜ׉P©‰¸}t$:@u$:àôÑè•:è€ ÐG@¢Tç@¢®A‰P©‰¸}t$:@u$:àôѸDÛ©S§NŸ>͉v#õê÷ÀÐIÙØØ(ßÿÊZÒÔ†ˆ¨m84/_¾üùóƒø§Þ_IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/searching/raw-search.png0000644000175000017500000006740312032647155025071 0ustar ebourgebourg‰PNG  IHDR—,ëíbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 1-"×Ð{ IDATxÚì{\Sgžÿ¿ç„;PL¸ˆ `¼UC°MEÇŠ Å»Ìl×_‡¡¿^]Ù®¿¥dÚë„âØ.Ì( ö¶ËÚ.ívÑÖ2D±:^2#1u´–‚Ê%@¨‚Üïs~œr'á¢|߯üqòä¹ïyr>çû<Ïybmdäê5kAAY…L&sXûäZÏ Uh d6ò¯/ÿÌhø»~ÆAÄæq¯U: YªßsæÌiooGS bÏŒ©¸øÀ«ÓQ@ÍFY€¶F¦ Ñ‘÷çÌ™3aOAÄ6P=¬!§µ”pdšqí¯–(:‚ ˆM2*ÎH8‚L9zÃÞííí8Ž ªøKøoßy‹9~ñÅ_|ñEudZ½sôÈAŸJ ÿøã™¯¿zãí?þø·ï¼…BŽLè‘#b‡LËõ%¿zãí_|Q;ðWo¼mv€\*æ§œ"už*(jwž\$œ`-t2Ü}T&JÅüó›&ž!2CÑLVÇél‚ ŠñÉ™ë®uÀƵìŸo‰°VÈ…üèè-?€oo^ƒñç¸ Er¹H­¾Öj­©$ Ge"¡ZÐÅÏÈ7áõ¶a/%A;„WÂàµîOÎ\Ÿ˜SkV­mkîŸx‹’ø|@ –Ž@À狯ª}îS)|Íï†O›ôUŸ/øü¤¢FMˆXÚX”ÄçóÍäƒÌTp\ATq ÿð;¹QóÕrjî4Îå¸j¾Îå¸NtP¼±HTwZ.ûòõêFs¥…GÂŽÊd2™L.= B‘Ô8ÔøçkàÏÖ0&pB.åA 3®VÏMÒ qµ™(–f¬«NøüóPœÂ_ņ`+9ÚA»b*ßgäy¨!:º™@ÍšÛ¾°e<Õ– B˜—ÐŒ~Õ„Y’PãÈËö2‡"‘àé±È† ‘ Ž‹#‚*>5”Ÿ¹¨Qnñ/ÏšˆóÜ"™Z/ÜZ Ï‰Ž–Æû¢(*>ûÜþH‚˜u¦ éŠÜÍ%°mºë_‘)³ž|âèî °˜ž™Aäq1Å+°2Žø8.û?¢Ý‘©Å>ÇÅiº"'::::§‚¦]¡9111ÚdUAâæÜIV㱜‚ظ/þ³ía–OM·„ÖM4:2<òôòòôGë¿>"Rs^Ó"áÊâ´Œ I=ç›®ÈÙœmAfžŠ[˳/‡üùÃoOghì­0ç•~íŽL!Ó4.®­î‚æ“i‰ù•š~ZeqZb~I‚V÷»a|u]ÁÓï‹Öê½7šíhe”'Ó ªHMªwή»ó†„$IdÆJ˜ø>‘0“dka…µ‘}ž_E’T|Vyz¤ÎÓCdzy9L¦8ȘT¦NGÿ˜(ÅÒgMé£çbôrOç‚L S٣Πu?ûrˆS`ƒS`Ãý¾Û†FÂqP™r/|úòWœL‹M*¨D§éŠÜQ ’”d¤TjwËrµã“U‰¹2£®ÿÐ`"[š®ÈÝ<&áV{Ï£j§ÎvsZ±R·ËÚt…uk¨TÜŠ ß÷œàgîXRФ$3:§ÂLYb_¾8#ÏÌmA7ž™ÚÞx13.ÎxäSüœKJ ô|J޾£{¸£Nye¥¢ €3?3sÌ¥+rb3%Pr¹b¿@²Ë%@iÇÑX¶\Yn†Ä "Ïeƒ®çm8 ¬ç=WäDgJªò?—%Œ:Óf*lPÉ&E%„qLškÂÅÉöïßoât /AÅx¥˜©axrá±®îÕ1^‚Ø—ŠOÜÝ©¹_}»îǦ‡eäší鶘¸2b1^0ļG>/›éÉ'AD¦U NP(@¥^|ígAT5…ø@ø¢5†?- €5‘+™8ÆŠù)§to¦µû˜|Ó7üó›ä¢)]OU*6š§T,H;¥):oŠ EfŽGÎŒmW$ÅPáá<Šª"%›á³ëÆ}ÈÕšY @’I4m2Ûìsûû³ãK2$ZýÀ£/b¥ÊW‡ÓÝ’ü*IfŒ:)i~’ù8*ÈM8š­ˆÍ”ètJ3U‚øI7þéLþ¤ ÒjŒ‰ è‹kñÉ™ë_|]ýò¡ Ÿœ¹nUBw7%a¡KÂBƒ3Ÿ¾ |àoßT½{èø»‡Žÿ©ø/º‰„"¹\&“ÉdGwS»Êd2™L.=ýȬ(óS€)—)%üQ¢ñÂA§:Ap÷dî §(POƒ:š¹7áÜ“ ™y^æ³%ˆÈýçN$‡Sf*cNw§L±ô;“­³@dzYY¡^e4ü“)Î’Ó™üIé¥EÙ‘ššâ´ Ä^5üùÌ åÞûäÌõ ׺5_-ÜØtÿkoø»»ypü`¸_ýŸ \œ…Þÿóé—¼e<¨ü¾’·Œ·5aÃx޲TÌ?¿étHÁŽ#· aÔ?6l,JÚqä6IîVïF®öì)jù±íËÕË_=ìH®/ÞX”´£&Ù˜{®_º&çÝ:•Ñ?–ŠùçCT¿÷ÞmÝ: jDGÞgš«æÕ2=/œy}7GAĶ9|øð´øâŒ„øæÆßܨùj!½}=Fà ߚ°akÂÞ2^å÷ÎH-NX.—Ÿ)Ûºt4P.Bc‘¨4î´\öåëÕEZž½\ž\#bB@*N<¹L&Ci±~ 5·6 Í–. µ2‘çAÊ8Û¨—‚X&“ÉóÂŽŒÖ1î/Ž ˆ}òˆÆÅÏÜPê…˜rñÝÝ<îT«'œê¼ ®q¾yá¦HÈc\Ù€à0¨ÑTkð­S»ïPÔw}ä6IRÔîM =_œ°I°79áÈy«K­L@¸)!å¼T$4ÝñžÌ¤nJH9¯®b–GMEyçù|Áؤ³€õqÕ»ŠÚPœÂ‡<¹h¯ø@Ò¾€$—¿~ a¬g~, yžX°KðP°{Óø GS‚˜ÏçÃʧóvh\ÿ„8 ·µb"显uÔAf2Ó2GéQg&¸Y‚©9êu w×Gmä,ô6ý¾¸}òã`8GA3.ŽsÔ±¦kŽúPÔÜgLÍQ׎ƒ Ú<Ê÷ÅAf3bí6EÍý ¥êµ{ÔÖG©½ù ¥²q;ðÈ…"ìE·œŽ ªøÔcy_:#áÌÒÆç¨ÿϧ_úú\(•ýbßV¼lˆ/--E»!2«¹{÷îŒðÅ7Æ .”Ê|}àÁÃÆ;Õ:êu w€ùuc®vŒL™G¾wï^´‚ ³—ªªª¡âA!~Œ³ö4Óô–Ofn¼!5ÕÊ+’º¶Ö^WOUØjŸ!ÍöÀËoÏ^øŒÂèë!‚ ãò›^%ió'ÙÛÓ×\ßq_ÑßóZjYWNuÜýA×ÞÆÀuÔ±Ol\ÅÊÛß6]üJ1Ø?¶áÕRTq›õÈÑ‚Ø6|nÇ|ÝÙLvw÷¹8x÷°n€‡jTO^w›×QG}qäµÛû{UÎ,Ï1 štexáÑ g éŠœèèœ Z7$§‚¦å)ˆù|.|þ8›×>¤âÉWC*~„'¥©ðTÔAPÅ/¹‡û®l%ÒCµJ-áí=ß9,ÂÓàŸÏ|~Òlå=zÏâ[w71{÷ÑÏsÆÜ g “/ÉÈ}IJ­³¥½Lvt7µû¨L&“Éäm ^í†!M²R1?˜3šÐI¡#ˆ]ª8MÓïÌõðr{6>fË ¾šð§ãŸM\·ÓðN’pT&“ŸŽ+Ý1É[†TœRýú—S{žŽ<Ñ#×ý’Œ´“J]!gÜô˜Q ŒŽÎ©¨ÈaÂS‹•´²85::::µXI¦U§FÇÄÄDGçTÐôX*«Ÿ¤b¾XÚX”Ä竟á‹’F÷ѧα8ZÆþŒ¤U‡2Ñ®‚TÌO9EžJ1òL©yØÕ1V®víÏ'äm´–äf¬2Ú¦0’‰QÆNPjʪ‚*>£$<ûí\Ž¿ot֖̆v×eU°~kÈúø%!KÍ%^¨{¿ý‹úëÖÜ £éçoíÝXe¤b@ÀKAs uÏ**J2Ùß`ädgÓ=nÒë¨oËÊŠ'« seÚ¡™^^~öìÙ²ÂäpŠÒö×IR’q9Š ¯*HÚœ™'öñ 2?Ký( ËM̯ä%g%ó $C7[ë)NX.—ËEBŠE f÷/_‡#…RÝ8ZRñ¨<úðg<­T¼£&YÎD{„"yÞnõæ~Ï’NËd²ÓªSÆ…a¹ú"¾IhâÉtüÜ +£m S™¶n‘úóÀ°,|2FPÅg‡ýÁ?³aãºö¶n''çÆeøòE¤#µ~kˆƒƒ©Ù|Åi_â½ê?~iÜi¹ìË׫Õ} ™>O¹<¹F¤ÑÁÑÁéµÚ EyaïíÒóK £æoÃŒ0wM8* ¥b¾X* jnÝ:µKðEín`ÖGn“$EíÞÄ„èÜtj4·J™l“˜/*Z¯¹IF3–¿Y×ÏÓheDB©ÖÎ 2÷;nJH9¯[¢ÑÊ̲{Üä÷çìÉLþ&1?#-èDÒX¿Ž²8-1¿Š$$²ò™”dÆJ€$iŸ²5ŒÔýÌ$˜ÞÉžê½…yb>_@’»ÊFŸÅ,LkKŒ5o{:kU|0µÛÞ~óˆc'o]ÔŠ–ûm^^^µwê…û/^âèèhQzᦄ”óR‘P¨Ñu‡µ0@*æŸ7#‘4O枬89í<­ªŒEÞž••™¹ù„_6#يÍùY…< iåɬüJàí+LR$f”X‘™¨Êøìsû'ä|›¡±()òä2!#ÉçÇk3rQcQÒŽÑfc$m`ÈÊé»&:ÿ¨ÇD`ÈÊ„£…ØmŽØ,¶Ó£~è­w:—ÆìYqî3›ÍnjT†øú›îE7¼CÖUÝ} {è‚-wNëª5CìÆïn&{-ËӚʫ;Ët N¨23‰©Ú_œ "÷ŸØÇ«¬¬T4)* 4ˆcõðIJ O6«}ú‰Ïn3ô,GÁXsLÚ€à0ë_]×h¤Å2M¨±¨À¢>xM²éVåfX«2 XW}'°!è‹Ïp²æ’m᛺Bv±žÅb•}V—¸0xQ«««…"—&8»ódBµ“wžÏ$¥ž\°>®z—@@Q»ŠSøpLn´gNÝcIQËœ. 0ç%éåoÃ<-¬ŒŽ·"à6EíÎ3Ø¼ÜšÊØ ®#ÀÜ„£ÙŠÍ£¢ž½M’)ÉØ|DzJ’±Þ9»Î’|¸ DzÑ™I1@Qñ¦²¨K&ï¼€þXþú š¢V«6’6O.ŠN×%ñiš«/åçïë¶&Tði´ ™ëÈ 4Ú£ ÌâÜŒWƪ*ì-Ü$æ ÒHí ˆÍ@¤¦¦x­[2Lí®$–cU¹û”Õ¼òI®üRAݽ»^]Êáúº¹¹á½¡ŸßdC7/Ñ‘÷™æª=®=.ÎLv3¯ë¥¥¥{÷î {šán(‚LŒßüæ7¶Ð£Îê ŽØ°ðæ_•ެ®ŽÞí/.vwwA ·7puAì[èQo®ë»õ$Izw¬‰árüýØl6^Z-„"¹-w"â:ê‚ ŠÏbhšj½ßÅYÖòÄê, ¯«zá³W±A‰qéêõY¯ââ}e¡šÒžøòóxEí–É¿/þxkŽCã‚L€ßô*g½Šû.kypÛ÷•T”pôÈg«G>>™ ÌzGýFp\A»Å¦ÖQïêì­ùáÇ;7•AHË+ïÜ®ÿáVí}åC¼Ìöà…£AŸÅ4Õ¶)k:‡ú)• *åMsæz : õuU-÷• ‚¸S©Àëm«LrqATñljâÎÀ½À¹ \ü‚ØÁáóøÏ€“_ü ¯7zä‚ ¶„-¼iVwçÁ@ÏH¥¼ º:»ê•Jå’ RßxN'û`þžŸmÅëm“ุ¡AÐb¸¸¸Ø‚/ÞÞÒÃtuõܾU]s¯¡£­ëakÇÛÿzQ>9sýµî/¾®Þ¸–ýó-ã:âšãžîÞžî¾ÁÁ!Цhš& ²³³;ó}ÙóI’pss­½ÓÄ ˜gDäRª_?-³`?mÍ"h“[™\*æk¶ˆœ`z›Z}òÌÞ÷ÅA&ÃŒóÅ gŽ/\ëþäÌuóñ{»4Çnn.###*•Š IÒ=2<üÞÁ;·ïVëƒ ªÐX”4ê°6%i<寢_üBü_|U½[Ô©”1¿V*æóõ½êÆ¢$>ߘŸÝXTPœgTƒ ó‘Šùb©NVz¥ÀßÅo,JâóÁh$Ã|ìÈ#gv‰‰‰‰‰‰ŽN-VÒxk@U|"0þá›?|s£æ«†Uüu¡ÌqßÀððˆ£ƒРRQAAŒ «4‘wþãFãv^Ø{»£Û mHÜx©ô6I2û7^*…¸•Eò¼ÝZ[JÅ!§å2™L>槈@,—ËO‡è‹bCÍ-ã›!KÅ)'—Édò!¯po‡Yz¢ÒóÅ£ê.Ü”P|^jiV£Ìe¢GCÍ­[ïív½wëVMƒ‘|ìÅ ÙçùU$¹-{$AApŽ¥3ÇP‘3ê£çTè jEóSj±’V§FGküxKâM+‹S£cbb4ò¬IX\œªé éŠÜÍ’$IIÆfõ“ÛhÿAÎ5êÊ<‚ Š?~6®eÀˇ.¼|èóuËj®ÞG;þ‚ /Íñ}e›·7X,G'ÇîÁÖ¾‘v iª³£«õA›«»£é’…"yrͱT-ãEÒK¥·^¸>J/1ÇSrŠ!+Mªë#$á¨L¦Û0‹™ðûâ4]q¹(*>J`äWeqj¦„ŒÏ*+ËŠ'%™©ÅcO$)ɸUV˜NQUI›³ óÄ>TægTŽêè¸qd¹‰ù•¼ä¬d”däÊ´3ÿ2Ë “yP™ÿ¹Œ "÷ŸËާ(ŠŠÏ>·?’ hº"71¿r´ÿ ¼|ì±ATñÇÉÏ·D0BÎHø¸³ÛF†T0ê{¬YË«ªù¾{°µgèa÷ z:º'Û“ Ⱦ¾®Îî€`?sy5ÖU¯ T{ãð^Ú{·>@ëØ„ˆ›óy°79¡ØHg·V>Zµ•X˜‰µu¶}ܘÀ+¥ßTª^OQ•ßH5 MQñÙûÀ eŽîáp‚B RÑ4šƒù8Ì@h (î)´3OÚÃaBÉeSî5IJ2ÒÔ™^^ŽrŽ ¨â3BÈõÌàÆvîìì€áAú™ëƒzyy8»8ùøÌY±bÙÎÛ:;º6m[300¸tE°±À=…n\ÁþìxŠ^'±#ªøìåégžYÊ©½«hjøñ~s˲ÿ–m7¿­üîfuÿÀ’e·DâŶm&<.NpŽžËÞ•I±Ì”ïËQj¿–›p,+ž’dÆÆfJ¨ø¬c Ü©­3“UA’ö4uS’¿'s* ’b53Òcbbbc3K€·/sq±KˆÔÔÏ U >ðªáÏgn(õæ„?&Vî}åÚ;Mʆ–¶݃CClOWnÐ|ÞÊE ýðJÛ¢#ï3Í•Y¬ÍpÕ6FÎÍ÷±—––îÝ»×&—{ÃuÔÄNøÍo~ã`KçãÇõñãúàuµO/·BAÄ!ш €û‹#bŸ8ØÞ)Mí(@MµòФ®­µ×ÕS¶Ú'BÈc³=°Ý؆G^TT„vCdöòÝwß9 ÌÐÛÓ×\ßq_Ñ?Ø=Y-µ^sk"—¡efÛ_|ïÞ½h:Af5UUU¨â&iP(›ë{/~¥ U,MàÕRTq[ðÂatf‚ Èìe``UÜ8Ç|ÝÙLvw÷¹8x÷°n€‡jTOÚf&‚û‹#bŸàì6ã¼v`{¯Ê™å9&á@“®l|+wF{ähAPÅÈ=|Üwe+AªUj 'hïùÎažÖg&›]«¼±(É3ŒLÛ:ê‚ ¨â³ š¦ß9˜ëáåöl|Ì–ÆÖ]:.ðÙÄEq;§v±q©˜ÏA\Ú½pATñÉKxöÛ¹ßè˜ ­-í..®Ë6ª`ýÖõñKB–šõ³5ÇR1_,m,Jâóù|ñUs EryáÞ`´ü$Á÷ÅAGàð¡?ør6l\×ÞÖíääÜØ  _¾ˆt¤Öo qp°j&`qŠÄr¹\.zÍŠ9‚ Èô`›sÔ‚"ŸÈ IDATÏÜPšúÉÌ‚0ßü]ð¢ÀuëŸj}ÐÎöd×Õ6pü}‚¸¿#¬Þj"!¯po€Ç=åIEíΓ‹„ا‚‰½/Ž ‚*>C™ÀÚmo¿yı“·.jEËý6//¯Ú;õ‹Âý/ qttœºzÛÈ™"/%A;{Ô½õ®CçÒ˜=+Î}¦`³ÙMÊÀ¿€@Ëzѫ렱()¥Mù˜ÀqqAзS²æ’m᛺Bv±žÅb•}V—¸0xQ«««eî5ˆù|>¬J`$7Ynb~%/9+™%¹²±ÿ)ù2Ë “yP™ÿ¹lÜÈ—£ÊËÓ×’kÓËËÏž=[V˜NQ%¹2ì?—OQŸ}Nýa*?¬¢Ì “žÛ§7Ž;*ð\á3<’”žl¶àiÀ’ÈMŠJ âèëÀ=E³U…ÞS4È.KHBƒ¸a"s˜ðéUÌ(‚ýÙñ5*ºãWÀÊ3špÍUÜV8~äë¢Üo¿þ¯´ŠÕúÙú @P=mh›ê…O2“¡ÊüǨ[yô\ö6(Ɍ͔cÿ&n±¬xªª É’©ÑãF&ˆÈýÙÛHR’±¹ð˜éß2àìÉÜǃʂ¤X&•……~“µ96S¢ó6š¹aZËψ ¸zÓêTPOGÍ,Þ¾Ì=\‚°°fÐ;£ ×Af#DjjŠgÐ*xÕðç37”ØYdòL¦Ü©ªóÁ×N³ç^‡ïÀCµŠ dϧþéí-Øn/¢#ï3ÍU{ \{\œuË]ów?ü"nÛ.óqJK¾œÕ+°jÜÛFß²í‚XËáÇq\Ü8¹‡û®tl»¨Ño hïy.¡ØâL*æŸßdzôÆ¢¤GÂpõ)ñÈ',´¥%_¢ ™u Š>àÓÙoÿ~¾ŸÏæØ­‘mgþóþt\àBžGÈ’À)-M*æ§T85hù 3ùuÔía›æµìt<#±-p\ÜPÂs9þ¾Ñ1Z[Ú]\\—mTÀú­!ëã—“p©˜/–êKÅ|±´±(‰ÏçóÅWÍ(Éå…{ƒÑò“÷ÂÑ‚ ŠÛ;‡ýÁ?³aãºö¶n''çÆeøòE¤#µ~kˆe{k(NX.—ËEO£Y§Ü_AûÄ6{ÔÏÜPšúÉÌÄ·ƒoþ.xQàºõOµ>hg{²ëj8þ>A܌߇VÏIÈ+Ü`ÄqO9E’€[‰O“GŽ[€#‚*>ë™Àõ·ß<âØÉ[µ¢å~›——WíúEáþ‹—„8::N]½p7ñiaJöG™`:À¡·Þuè\³gŹÏl6»©QâèoY/zu]#4%¥£)ŸŽv@UÜÉ>˜K¶…oÞ³Bv±ž$ɲÏjýú. a³=,èHŠäÉ5;ø|¾Äy V.óùAÚ)òTš@À›(‡XŽ‹#bŸØû›fûÔ×%råO¹òK ,Vwgï®W—r¸¾®®®ç¡ÕO.ކu#ÇO‹L…GŽê‚ /nG°zƒ#6,¼ùW¥ƒ#««£wû‹‹ÝÝ]ÜÜܰeÌ"¦duATñÙGs]ßõ¿Ô“$97¤kÓ?r8þ~ 8 °YÌF/í€ ª¸ÝAÓTëý.‡¹MÁ~O¬^Áf³±MÌFp\ATq»C¼¯Œ"TsBÚ_þ©`-ŸÅbaƒ@AU|v໬…ޝ¤>í`Vƒãâ‚Ø-v=GÝý®©V^‘ÔµµöºzªÂVûDyl¶¶›è…£„#‚¾8¢CoO_s}Ç}EÏCh©e]9Õq÷še‚ãâ‚ /ŽèРP6×÷^üJA«ÆÆË¯–*ÖD.CãØ˜Gná€:ºû‚ ŠÏŽùº³™ìîîsqðîaÝÕ* ¨ž6´ÍŒcJÖQÿ§WÍGøÃ'ÐÔ‚Ì4°GÝ8¯ØÞß«rfyŽI8Ф+›@ãÌL/|’™¸»8˜ÿèŧ銜èèèèœ š¶¼kSM¬”É$|,ÙêQ‘c¾”GP“k"¯ªøøä>• HÕ*µ„´÷|ç°Oë3“ŠÍ.ÞX”„+¨O’É‹{¸8ýlŒ2x¿‚ˆL////O$ˆi*.7£„¢â³ÊÊôJyÄ5AI³afWã÷¡ŠšŒ~ç`®‡—Û³ñ1[^ðÕ„?øl⢸S»'¸TÌç‹ .íþ¸=òžÃ@ ÐüdÉ߬¸85&&&::µX9ö«È‰6ê\jÿ9õþ¨Ìט˜˜Íi…÷t R§F›ñS&4UÐØqENttÎ5ê“–!§‚¦éŠÜÍ’$IIÆæ\Ãzêœ]N…%ÖÐF/­vq™±±Ú¥˜¯‰ö‰0¦+ieqjt´vé†ÖÓ³€áÕѶ†ùS3uÉÆm$†u÷*[ÝðF/ 0fÑ4ÈkÔ5=ÃN¬Î¦Š3lÿFÏN¯Vê«c,Ð|“³¡‰´fþ曫æúF§¦¦êüUM6*cdœhÉP/Ÿ&šF×—ðì·s9þ¾Ñ1Z[Ú]\\—mTÀú­!ëã—„, 4ëgkŽ¥b¾XÚX”Äçóùâ«æ Šäò½ÁhùÉ0%ï‹÷ŒôŒlŒzjcÔSšcøÓ¹ËÌ×ñûµHÉ7YV˜ÌƒÊüÏeL ²85£„—\XvöìYËŸýe¹’ŒÏ*;—ùŒnxb~%/9+™%¹2Ëš¯vÆå¨òòôµäÚôòò³gÏ–&‡STIF® ûÏeÇSEÅgŸÛoXyeqj¦„ŒÏ*+ËŠ'%™©ÅJóÖ0Ÿ– "5ÅéùâÚ?­‰æD˜ÊW$m΂ÌûxP™ŸuRIÓf¬§±€v¶Œ»¦m =5 -¯N›O’UÚfѮøWÙ’<^š®ÈM̯„mYeê¹–\k‰aÇ­³©–`Øþ ÏΰV‘a4pÜ&ÇÔGÀ\jƒ´Öþy'ó—4ÑHÆiþµó9÷W%ª¸‡ýÁ?³aãºö¶n''çÆeøòE¤#µ~kˆe{k(NX.—ËEO£Yg¶®VñÁ‘ÞÁÍñÖÍQð?ºÀ„k~2EÅ'íá'(J.3n‡ô›J€Ð ŽU’JÅ= ¨ð Pç6ê \.€Ð AP(ÜS(õ= ã Ç­vö~Nei™³£¨ø(€ *ž¢*¿‘jªdh ËÓN õ‰p‚B™ã£{8L镊&³Ö3b³Ö0z¡-´¼:­ *ž¢´Í¢©Ã¸WÙ’<Í›—$%i'-·¶u6^œaû7svFk¥8n“Ó¾ŽVæ¸ÍÕÚ¿¤±FbM 4ÝŠôóiï´Í9êgn(Mý´e5×ÔOßü]ð¢ÀuëŸj}ÐÎöd×Õ6pü}‚¸¿#¬>IÈ+Ü`ÄqO9E’@Q»óä"! S3.ÎÌTŸC#”æø¶n€O¾:¯8!š•Ne\ûIR’+’dĉkqB‹ ”Åi‰ùU$ $ ”õgW©hàLÌ2V¤8zÖãL™5&kùqê9Ú­:vÓ7á7›7/—ˆÜbß½Äüªª‚¤Ø‚ø¬²ôÈ)6u5·ý6l¬V„ñªZÔlˆ©?M+þ’œÉµ@ [ÝX>-6ªâf¤Úo¿yı“·.jEËý6//¯Ú;õ‹Âý/ qtœÂiM¸›ø´{äîTÖìÿ(>7’ÌØØL Ÿu,k•e¬JK\35±¼D3Ö×f’˜²¼!ßdmŽÍ”˜Œ·ªž¦ò4j^ÍDëØØÌàíËÜÃhí¸†µ°Î†WÓ°ýžÑZ ´°Ù˜J;˜‚ ü%­º²þµó),”©©)žA«@|àUÃRÏÜPN wzòL¦\«Ò~pìSVoðÊ'¹òK Itwöîzu)‡ëëææ†ê8cyŸi®ÚáÚã⌨[îš¿ûáqÛv™SZò%®ÀŠLæ•¡Ø6…"Ó‘ç£ÌV^GeqZb~å¶ìòôÈ™PŸÃ‡Ûû ¬¬Þàˆ eëYí»w¼´ØÝÝ%|özäÚÒ’/ц‚˜y aúÒ)Þ¾VN'˜Vì]Å›ëú®C=I’ÞÁkb¸?6›Mvv1ùuÔÑÉF¦æôôŸç£ÌßÎ/ßTaïãâ4MµÞïr˜Ûì÷Äê(á³× G; b‡Øµ/.ÞWFª9!í‰/?MaV3ù÷ÅAf#ví‹û.kaã+©(áè‘#‚ />Û°D¿kª•W$um­½®žª°Õ>B›íífF1%û‹#‚ /nkôöô5×wÜWô÷<„–ZÖ•SwP YÐ GAŸé4(”·¿mºø•b°ìÿ«¥¨â3‘Éï/Ž 2q@åø‘¯;›Éîî>ïÖMðP­‚êiCÛÌh;ÕA_×lïïU9³<Ç$hÒ• Í8¦duATqÛ!÷ðqß•­Az¨V©%œ ½ç;‡ExZŸ™TlvôÆ¢$\A}ò^8ÚATqhš~ç`®‡—Û³ñ1[^ðÕ„?øl⢸S»'¸TÌç‹ .í>9p\ATqhšÎ~;—ãﳡµ¥ÝÅÅuÙF¬ß²>~IÈ’@³~¶æX*æ‹¥EI|>Ÿ/¾j®@¡H./ÜŒ–GAU|²>ôÿ@ΆëÚÛºœœ”áË‘ŽÔú­!–í5®¡8Eb¹\.=ffp\A»Å6稟¹¡4õ“™MK¾ù»àEëÖ?Õú íÉ®«màøûq3~FX½+_B^áÞ#Ž{Ê)fWjwž\$Ä8u^8J8‚ ¨â¶ÀÄ6&ûÍ#޼uQ+Zî·yyyÕÞ©_î¿xIˆ££ãÔUM(’ËEØè¦\GAû{Ô½õ®CçÒ˜=+Î}¦`³ÙMÊÀ¿€@Ëzѫ렱()¥Mù¸=r´‚ ¨âöEöÁ\²-|󞲋õ$I–}Vë¿ÐwqX›íaAGºP$O®ÙÁçóE γ~ª¹TÌç i§ÈSi¾o61p\A»ÅÞ×nûàØ§¾.‘+Ê•_j`9°º;{w½º”Ãõuuuµ8­~r¹p4D¨A8~Zdr^¸IøÇgîâ•E ðâ–Ũâv«78bÃBÙÅzGVûÃî/-vwwqssÃÂì–ÆÅ?>s×ÑÉÉgÞ<7'G\+A,BEÑ}C'¾Q  Ù–Û»Š7×õ]‡z’$½ƒ;ÖÄp9þ~l6ÿè‘?F w÷p÷ñö$H‚¹1á•E !IðpsrwñyØÑõñ™»v"äö®â4MµÞïâ,ë ybõ ‹…ÿ„Y‡-í/îèèàíåIÑ*F†{Uý”jxüûË‘åèîàèŽíA¼½<Ñ·}ÄûÊ(B5'¤=ñåç±Ý£>qOOOmÿ{p ë©%ó‚ýýHR"ªJ¥ÒDQ”J¥RÿªR \ÿ„¸ú{Õ/¯«®%o|BýóuæWŠ¢‡†llN»j ãoUÝ/î~:"ØË ;{úšÛNž¹G…{ORÈi ÆóÕT­¢Œ„_¸XñûC?ó3&ðoþæ‹‚æ' аOZšÍ5©Ïo¡iúýÏÊçsLÞ™;Ú>±táó;~-\õïÍ´ð‡MÕÿòâŽóçÐ4(ÚÛæú¹Ú³=mDÅw. ›Çˆ·†¹ \\Ø üçÀÉ/þôooýÿB6‰ÍŒ‹ë«øà J¥ÒVq¢ü×ÎÿïÞàïBÀéÿÝÓþippжTœ–É¹ç 7VwkÛß{y»¯à-¼tR¦b¤j¨»ªºñAGß0Mxxz- žïÊ€¾û¡¥»pX$˃í:~îb°r)·®öA?í±é©PÕpß»÷Û{‡TàìêüD¸vñßÉnô¨<}ü"–hK¶§§Ç½úÖ6@ð‚}àAÃÇ*zUpóR…n½F+iªò¶ÿÌý@ÙÞ\ó//nX0Ò_ÜþïM¬9¾Æ‡Ø<¼çËoK£Ÿ~‚3Nú‹Ûßûð+ àõ—v.˜?§¹¥ýúíšàåB;!ÓT¼î΃žF»:»ê•Jå’ RßxN'û`þžŸmEµC|¦«¸JOŇ´U|dd¼ƒ;;;‡þ­ndd¤¿¿ŸÅb¹¸¸¨TªÁÁ!• ‹Sªî.–Ïn,J5ðâ»gY..@©ÀÙmUØoûÚäÕ]‰»ž|*dއ­P(ÿûä·Š€¥½õ÷âvDFxÎqsÕpCß¼ñcðÒïdß2]å9Ÿß~ù_žä8wþã!©»»ûÞí‚§–Ìõv":Ú:¿,ü[•Æ]òbüÒÅsî~çÐ麈• 5ÎÿŠáÿñyÅ Muõ }ùΜ¸ðg•Ë@OφExxVÒÏ¡ÛhåýÝm|¢RWûƒÖÆê×_ÚÁH8,˜—þ·¿÷Ñi Yžs| “¤£Oà²ß}ðÕ¿üßmœy¢”ŸÀO÷†æÖÿ’yËÒQ¥BŸí·ï–WWèêê¹}«ºµ¥} ¦é·ÿõ¸Ï¼¹Ýƒ-°}ëŽÆš¶'`žÎÓ>}ýÔK¿¾®ûEžðQJ8ñæ¶ÐôõS/I—O¢túÖ±_ý¾ìÑœˆ¦¶a Ÿdµ'ƒ ‹ ©}ñ‘‘‘žž ~ú…SaôÀº¥ººÿÅÇÓuïfÁðððÀMùâ4¸°FºÚFè¹.ÙIOþ­æáEË­¦ÁvpæÐÃßþ])ÊÜÊseý ¯þ¶Ç9aýÂŒòJýíÅ.š^àòÝÍš¦Îá‹Åò‚ìsx.ë¦&Û´Ÿ.‘ßR69Ñ™¾q™«÷Áƒ³w»}ø.u‡¯[ÔÑÒÿOøÍÚûç._ÉK¿q/¯u`¥³&“eËÀV]üÛmMˆÿÒ%µ²oõŠ`´(ý'•¼ÐH¿2VyÏ5<7Ò–§Ô)wÿùù-œy Í­œyÀüòÿlùýŸw÷šo4•›§Ïÿ¥G>:ýÆ«»8¾s ¹¥ýÈG§ç.sóôÁ•‘f¢Šræú…kÝ_|]½q-ûç["ÆuÄ5Ç=ݽ=Ý}ƒƒCMÑ4Mdggwæ;û²æ“$áææZ{§IOÅ "bÏÇ%{¦B>§D¹ "bÏÇÏêÖ±Ìxᣯ&vÑè…WñÁAf\\¥Rýê£?;°Xî®N݃éÔ5Úëûo"Â÷ÿÃ3¯;IÃõ]Oól­Gµ*dΟÞzcÏòP^p(/úÛZsÞÿ[ó<–ƒ?ŸçÊè©—|í‹ìãzý2œõn_à¡ìÒ.E²XŽ«Ýðë.îÜ0Ö•êu¦×>-ËQ8z@Ÿ{`ä27ÖÈ`Û/s/¹ÌóîÿÎ%$ŒµÞ_ú³¬\úܳ¿]åá¿Ú½W2¨šã¤÷oÑ}ôûª)‚i¬’9ÝO­ü{µŸl‘á‘Á¡‘;õ͹ÿù§¼_¿ Ùï™þÂÖÁá‘‘‘3­whhÈ‘ÅrÝ'ÚÉÁÁ‘Åo"ˆ¼c0ãTœ‘pæøÂµn€ëæ…¼·{`ì‘ÍÍeddD¥RAEÑ#ÃÃï<¿}88°î+;¬Ó³ìÀòŒ .éç¾ù7×I’¢–lÍ~7ʗЋ qy[ϾžóùrÆ××$Ôî ¨XMÎ/Á ºN­v´ÆBŒ:Zçæ+_•F¦m¨Á–d¥©ªNMŒE0ïâÓ¾úcÆM$ñÏ_íY9N§ ›×»)izÔU*Õï~¹ó»ÚfhVKƒ|»ººœX„z\|ÈÆÜ'o_§†¦ŒÃU^óæò‚}£7ñVÎ÷˽s_ùèþ+¸x,<ñÖ±^™Pç¾?×%쎊[á;Çel˜y‹Ð¦´¦Éò0§–êV®+ ôÔö:rVÏ€€G£}Ó8¸p¾Kïƒa`9´JÿÒmRÓõŠ0¬¤ûãáƒWF¨¹¶¬â ‚—ýáÓó0ØßÏ„tõôgTJÀ ^fªõv´(ûÖ‰~¹Ûg»é~øûÍ}#y·ø§(ŠöžoòU;Y‰sÆ©8#á¾¹^>táµîŸo1xPÅ_Ê Š÷÷ 8:8ŒŒ¨TE’$ÄȰJyç?n¤Ÿ³ü>WúŸï¿òúG_Ï#2*„à IDATXªqÙŧ[E;|´"ø´œþãKyðQJÈÿR´è½«%TZ¾¾øt«hÇ<‚¨.üoßì¯Å¾ê8á„1å+¾ºð×þµx%Aß:–Y(ç…0V¨VYÊ5qËW9 ³Ú­_ Tý§ÑLôîeÍWÞÿ˪ì¯ §ÿøþéÖ:†š7.¾Œ‹›˜ÝFÄÈÈÈ—ù{gï@x¹»¬yë¿Îð‚<·iMOO­Ín£U÷;zWÌw¸ÐBvtôJe•5ŽþØ:׉íJQd¯²zê³>«» z‡Dîp†z›~÷ñö!ú7¯nt&uv¤EÑ„«#“ƒ‹Ç"·¡oªkûGz\ƒÃÆn,4ÐZRMëÛV×§µ×êÑ-B¿’#C½`,œvöu¶íþaWöœÐUë໿–Ž>¶ÒL˜Ø5@5<Ôñã]Qòîys<›î·eÿ’xãµ]þ~sÿõ¥í¿ýã)7O–‰^PÅg †«²è-"¿rOýçpvqV©(‚ H’ttrT©T}(Š&IbD¥*8RlMÉq/ˆvh„GãbRTìr­ôü€Ð±;]ú«Wv2n¨ñ„ôõÛY´¨©ºž¹óÏûP×PÓÔBli\\Á¡!GGG‹500 R©þågô4^ôóh’$‡‡‡‡†léÜiZU_÷c®xÛKƒ ÷»ÚÉ¥¡s IvßÕ׸Q^=À]â¾pÏê›-CÞÞËÂn~\ÒèA0~2Ár_ælb˜ÙÉ#`¸Fþ}g™ÛÜ?îºt¯gŽß|UÙ•#SWG€á{Æ*ù’ïÚ‡Ÿsóö²áqrq¿Y¥ (ÊÙÕÃ|Ì®öËCüýæ2î¹` dÿ2óµ]þ~s+Uµ´Ì™ïvÌŒSñkÙ®u¿|è‚æ«ùE¾y5׫ûÉï+Û¼½Ù}½ý,A݃­£·ª³£·µ¥ÝÕÝq¢7”Qs¾üÔKR31‰•©¿ý áŠx{þì‹áXžp*àú†”Þþ.%|å㽆q¿ø`¬‡€ž~×Â&÷Uña‚ dw¼Ûô°ùa—aœ_%n&IÒÁÁaphØ–Î ‚|Ý>>Wîä3g¡+«§«ûâͻǯ9/_ʦ}üæ\üÅÎO®X¼Ê:»ûîÕÖ}Ëò®¿vêÖº¸eÜ´Ÿy_½üm»j¾ñ%bG#ιðüŽ•Â%ó¶<5¯½­óTÏT6V‚p\Ê3VIÒ3$ÌÕh¸·Ý¬Ã]´<÷“s'x™ù˜îžs+¾»²ïj¼¹ažsý˜pqÁ©ˆå!ßÕrG€}3ãTüç["ÔCã–ÌnRiz½Ö¬å}ö™¾·íÉö$²¯o «³; ØoU[4¾…ÿ^Î:ÑÁ/WmN 3HHË7üz\­Õ‰ö´bƒpn»ñrwÆeæäéMO›@V®…g7åØÒþâÚÎÿ~ÃSQ+‚£Vü‡Vñ÷ïIR%øsoÜn¼pµ²opxDE±½çÎ[¾”K€óœe þ÷«kt÷PààèèÁöä. #Ue’žø´XŽsýòÏ1LÓakžxÒ|.ãs `95›Eéäµ,ÄáË?U|ÜÕ7B£³ wé’'Eóf½•—vžëwöZ¼&Ì`Ãb‚õ$Ÿ·óß>€…O<Áq"9‘kôŠ`¯¤¿‹`/ì6 g³ìeÍW¯¹Kžˆ²Ìkwã,ޏó°Ë/tÆq÷œëçìê~çagq„/Ü3³Gýç[".\»0ªèãàÆvîìT²X¤“³Óð ýÌÆõµõuímíƒCîîgÍ«;Ú»6m[óñN/5q´D˜—>Y›óÊNŠŠÜPúŸ/AÒ‡OsÙÇÞ[‹Hg&Šë'|ᣔ°¤ƒ·_Ú.›&±;]šùRÞ ¥h÷QëFã[TÏ•©YéÇ~õÊNæ«fš…Y&jbU}ôÎ.ìQ5›ôȃ­ø¯ò›Gÿ·|ܘ^sæ-Zas7(’ãÀ1Ñ]J:±C–° ïiA‹ÃÆVã®Ö®\£Ÿƒ£û¢ÅKéjGsç.}ÊLW ÁzJ7O#E¯¤ÉpĨJµ³«Ç¸½ñv‘ššâ´ Ä^5üùÌ å”ïZa L:3Çm\~ø®¾¹¾}Ó¶5•ò&Š¢™A1`æ´tvtÕÖ4¨FTÁa~Q›Öž 6‚ÇÂdÚ•èÈûLseœoC/üÝ¿€Y8Lþñ™»C^Ø6djä¤Óæw&=|ø°- Ã,]±ÐÙøßÂoº»{ ‚ ‚$ úÁý–{wꇇùJ8b0^8ÚA;ÄF&S<ýÌ!K9µwM ?ÞonYáßò íæ·•ßݬîïX²,`ã–H¼Ø6 3.Žv@ÄÞ˜¡ošýl{˜µ=®kÖ†sæÕÜiR6´¼ÿÞ©¿û=ÛÓ5ly o墀…~x¥íÄ#ŸíãâÉÑóñR"È”ðñ™NTñY†×··Clø}qAóàö·ˆxáhAìÜϪyõãÆ¬©V^‘ÔµµöºzªÂVûDyl6¾Þ0ã°Õ÷ÅAП8½=}Íõ÷ý=¡¥–uåTÇÝhôÈAPÅg: åío›.~¥ì§4WKQÅgšÙé8.Ž ˆ½á€&0Êñ#_w6“ÝÝ}.Þ=¬›à¡ZÕÓ†¶™¡^8J8‚ ¨âˆš×l?øÚig–瘄Mº²)4Î ÇÅ%8rÌä[ª8{ø¸ïJǶÛjý‚öžçá8µ5%í8–' Ñèè‘ÏŒ.ØŒ ý&`‡Oó8.®MÓïÌõðr{6>fË ¾šð§ãŸM\·SOm¥b¾Øš GµãKÅ|¾âÐè“ÇÅm@€F@&‰}ö¡ŠëKxöÛ¹ßè˜ ­-í..®Ë6ª`ýÖõñKB–HrÊ)òTŠF˜‹’ø|@ êÆ¢$@ ø|ñUýøB‘\^¸7Í>%^8ÚA;{Ôu8|èþœ¨ Âö¶n''çÆeøòE?\©[¿5„ ·þŠäyÀ?¿IÝÞX$*;-/„¢$QQ£poH „•jü÷§uâ#SŽ‹#‚*n;˜ÙoÔÌ2/ßü]ð¢ÀuëŸj}ÐÎöd×Õ6pü}‚¸¿3&á†4Ôܺuj—à=ŠÚÝBQÞy@°û¨ uûÑxä6Ó©NÓÊ“i‰U$PTø¾G¸Ä”æ_‘»9£¶eŸÛI䜤b|„ETqK˜ÀÞÕo¿yı“·.jEËý6//¯Ú;õ‹Âý/ qt´j:[‚¾^ E2YRQ?©îtáÞlpÓM®£~2-1¿’Lj7M+O¦åV}dr‹ ȬÇŽõ®CçÒ˜=+Î}¦`³ÙMÊÀ¿€@«žr„›ŠÏ™ê°·0/ìH¡ =^¸”¢Bƒ8ÁM8–ÎH8M+‹S£cbb¢£s*hšñªs¢£cFÉ© ŒŽÎ©¨ÈÑĬÈQGÓ„€âdZLLLttj±’K5ú«5~¶ö´MæX*æ‹¥EI|>Ÿ/¾Š-APŧƒìƒ¹d[øæ=+dëI’,û¬Ö¡ïâ°6ÛÂŽt¡(4³Û˜/Ì\¶Ñ»_ iÇøèÚñ™_ÓN‘§ÒÆ’ ÁööÚ$)ÉØœV¬ÔTYnb~%/9+™%¹2 ˆÈôòò³gÏ–&‡STIF®FƒIR’q9ª¼<=’ ”Å©%¼ä²³gÏ2!L„o ³¬0™•ùŸË¦á<ŠSD –ËårÑÓØLd°÷ÙmûÔ×%råO¹òK ,Vwgï®W—r¸¾®®®{à"¹\ç‹L}Õ‹oìWdr¹ÍtªG¦—gAt¦¤ª )6ŸŠgF¯iºâr „ ‚B*ï)”´€«yÖä…TjeBQñÙûŒ/ý¦`ãÜkGHÚà ¨,¹,Û¿?½¼<}*Ï#!G’U|ú`õGlX(»XïàÈjؽã¥Åîî.nnnØ2f¶º¿xdzyÙ~fŽ›$#-èÄÑ=œQ;3V$ •Š&.­,NK̯"I I0¾º`“¢ræœóÊ%9ú$±;ŸfU|b4×õ]‡z’$½ƒ;ÖÄp9þ~l6›zá3‚àî9š­ØœQR©hà€¨Êxí‰å4­<™•_ ¼}…IŠÄŒã9ùñtýôÇ öB!È”aïãâ4MµÞïr˜Ûì÷Äê(á³ÛÏI-V2Ã۲˒^?Ap…ÏðHRRx²ÙÀÏÕë-×{>ø§h6ÿw˜ðì6¨®k€Æ¢¤”bl‘‚*þï+£Õœ¶Ä—*XËg±XØ f»Gn3§³?²6oމ‰‰Í”PáÉ'ŽîaÆ¿¹ Dz⩪‚$ÍTs‚ˆÜŸ½$%› ïñ˜9q¹†2ÌM8–½­² )VoŽúÔ¹×É5;ø|¾Äy¸¨0‚<2ìºGÝwY˃۾¯¤>í`Vc“ãâ7áX¹q5ŒL/?«;ˆL?{VRÚZƒyjz µ"Dj&µ­øì6­~r¹p4D¨W|ATñ©Ãý®©V^‘ÔµµöºzªÂVûDyl¶¶›è…ãV(‚Ø!ø¾¸9z{úšë;î+ú{BK-ëÊ©Ž»?(Ð,3ÛGA_|R4(”Íõ½¿RЪ±ñò«¥Š5‘ËÐ8è‘£µ§v–ç^y ‹ ¨âSÃñ#_w6“ÝÝ}.Þ=¬›à¡ZÕÓ†¶™qØêûâ3¦çC|àU4‚ ŠÏP^;°ýàk§Yžc4éʦÐ8è…#¸ ,‚Ìp\Ü8¹‡û®l%ÒCµJ-áí=ß9,Âsj j,JÒ]A]³ôº€ÏO*jÄKa…wˆv@UÜÞ¡iúƒ¹^nÏÆÇlyÁWþt\೉‹âvê½*£½•“%èmýÄAœîëDB‘\.“Éd2™üt\©uÜ:í€ ª¸]KxöÛ¹ßè˜ ­-í..®Ë6ª`ýÖõñKB–HrÊ)ò”fO3Ƴ¡n,Ju¬ÅWõã EryáÞ`“µ »UóÿÛ;ÿ¸&®tÿ? j±°jU DDE+ÕµãÐ:z—”k‘ÒÛ^º¯Þ´¶»Ú ´Z«µÛ½ÝÞĪ….f˶߮›u·±Ý(¥)†¶€ck6··HµXIÀ­õâ/T”dæûDŽ߄Ÿ†äy¿æÅkræ9gÎy2á3Ï9sæñ[é[Žê‚8.îÀ¶ÿþ]tLdÒƒÔ…Î+&Üf2vÌO˜}¢¡5ùá8w«”R´A„NfV5i誌rƒ4 Zc¢r%Àª·Ç—Ô¶øýû~0iJA¥Æ×dø…£„#‚* üºÃÓ¡‡–Dy:ô›W߈³yföüè¹óâÆ?bäÎzMÑz½B£ ­å>¯³lÒ(²ZÖPÂ1"GñŽ‹ü÷¯wŒ»´ -çžš½maaaí¦Ž˜¸’˜èqãt—CÉäZ›GÝ$¹jUüvµÁ± ŒF ÷GUñÌ#ä}JøØߣ>:tu›]7’$m‡\î’;ØZøÕ+9QŽoÑŠiii+Väi;x[¼ž––¶bEÑQž¾C›·bEZZZÑQÞ5²÷bÉóG‹Viµyöyí³_q_§n©WnI-¶Kl׿Y«Äw»¼—š ÂWö›Çœ‘Ò9¶Æºœ]HYQTTd×û/~¶9g…“¥ÝYømžƒ½à…£E+ŠŠŠãU|™¾ðÇÿ‹¼Ÿãu09úaD¹Úm¾ÚmþiÒ²Ÿ&-³íÀÇ5õÂG—ímÇçH#]£áCŸ~úiM¢­`_ÏóüÑâ-PP]}èІD‘ˆç;öԦ쩩V¯;¥Þ×á¨L>XVÔÂ+ÕհŪÐöYluX_S¸Ò±‡_$Š¢R –= gÙZH¡"ᬧšøè+/›ÇœúúŠÌ$·­ãùŽ}¿ŸSXS“>õ:8øÙæ{W8åldNÉž”Ú‚}<¯/VK÷”È£Ë HŒTñäßYw§]yÿý÷½›uvvjµÚææf¼\üœ/>z*~Ã|õ†Ù¶ÿpj|øñgBºíP¿Á_zú+ÇÛÚD¢ÄÇ~ujK¾MÚÛŽ/U¤§+JokwT&,39‘ž³x#’JZ¶ƒï°Š¸çšøè+/›»L¯¤§§ª¥{Ö“Z×Þv<3‰ “2îgWç¸=‹(J^¢hS¤§×'Ù$2“H€Héœúi‚w\üÚµk}ôÑŽ;H’|üñÇ­‚ýÏk7nÞ&L˜0eæípþüùC‡©Õê—_~™¢ðm,~…£„7Íœmÿч 9 ³Ot!Zz÷©¶³h÷¨–-ø+‰Ô§Ö ‰Qò]5Ò¢Ôbý¡ ÂøtfAµûaï–n•Ú%‹wÿ ¤mò˜Uì<ÖÄw_ùLfAõz(Ný@ŸÓ[Óþ[çQÂÝùÙËyíÛx¶íÇÍ—Fã%±¸ÓÙÙÙÐаdÉ’©S§®ÿꪎé>ù²rßçk?;x áóƒÿ¨ûä\è¼øÚ‚ÔÒïÄ™ÕQ"ÎgóDyyÊpéb`6ýÒõðÁ¯;±²ÈÐÊyšwïîŠoX0!‘¸dÁ½Q _|u˜­KN~pÙ‰Póñ—MßÎ;çáGÄËÅO ·¿#\®Â4q×·¶ ¹9EÿãÁï×<4×o«·ãÿýmÕÏr¼Û|t`ÞH‚¯ø£E©jéž’œÑ™¿7F5ÛÏPömÛð=êpùÂõù $ýôþ÷F@×µËmÆ3—/_ަ>|?•Dv]¹vêÛ³.YM…BcêÝ%ìö{waïE7iøÊô!Fáè‡Ñ‰Å½oè¢õ•mòXê–SNó÷ %Øßúr°ì0ˆ,÷.]$Ÿ*¤Ü¸Ñ}éò¥7»m6÷%-ºÐyéäw-s: 1IbãuF €±¥IÜu¦Ü\ [ãeîV!¥hÕ+ç:™uÝ2–!”Í›6É¡/ÇAƒïQª*ö£n¡¯„ÉcF½-#ñVU|x8yòûÙsb³úBó+—.\è¼výª½YÜ\éÿmjkùA7ÃA–er¥Ž¥)ŠÕi³³åÚ#€„Õiå2Zç2±˜ã6Y×gB—bÕÊ2±XK€Ê@SÖÕQXf;ªø0DäØ;¢·JèôâouúwM-ç;Ï=,wð6›{D"Qggç¹s?Úç-”†Œã¯_¿æ\DLÜ¢æV˜Z›ÅÉìöc„ÈÛ ×ë †u-t_»(Ú Êæ²U¸†ø0óÅÁX< 8øu‡§Cö¾õôô\¿~ÝÉ`Ѣŭ­­ÇŽ›>}†\Þ÷| |¹Ç¹8kŸzl d(¨d(¥ëL±-¡úÓMEÖö&±˜ã²e¼Ü0 GA÷Žï¨s<ǃÅ)qéRbüøqŸ|òIssó?ôÿ³”¼WH·X,ÂÛ`¡dr¥Žm¼Œ$]­ÓÆËhAÃ验rƒZÂ2„/µÇÅ N‚ºG=4ô¶Ð‰¡eT9¥/^¼øÑG‰DRÿÉØÖ-'Mœ…ŸpÛ×Bbâ••• }èöû‹øèFäèAPŃ…ˆðÉÒ˜Y'Ž×ÜÔêthöìÙO*ž|.ÿùi[Û'M sóÊIrF—‘,qÚ$g4ç“$Aè@®UÌa»žVÒ:µŒe‚$óËÄeù$‰óÍŽ‹#´õ3ê3¢§Ü½pAÛ'ÆÏkÂ#ÂgJ¦Ø9cf$ÀñÆSgN·Ï›7oF´»w|JrÕ†\7û’\µÞú‰¦i€ ”MÇ †¾=¯Ä!Gá(á‚`,t,O¹—$—¶|¦êãCg¾ÿ§ÓÑK×þWÂp´qÆôTÊ"¼\ü|:‚ ¨âAJÖ£+–Q÷:yúošºª#ö‡>«iøBw$"ì·V/GG‰ˆý€ HP1]?{,uÊÔ)ß|ÝôEmÃG*yBBÄááÓïš~/±$)u ºÈŸ±=Žê‚ Š)É©D\|ÌÅ‹¯^½Êq\ˆX|û¤I“'OŽ–Þ…ÎQ8J8‚ ¨âAM´ô.Ôì1 ÎG$8Áqq$ "rô‚ ¨â2–Àùâ‚-Ø£ŽHŽîvwˆÓ5ð}?ø›B%^ÎÛ9 û­»6âxÿnp\ÜOXûÔϲ]Øý×ài¬§ö"¨â#–žw…|ƒß:FäÈÈ1>DŒETñ‘ûÂÝqó$Àó¼Hd]yìFw÷îëá“û^éÅ<û©KV“FA£Î•8$üVûgB'äà,C(ËÄÖŸwv‰~h ‰³Ìjâpj.Ð×2Çùâ(lØXU|ÌÃóüå®K4ö«€ŽcaÜÅÐIa'H®Üÿ‹;îœáñõœ’ä  ëL¹½2nª«‚ &$´a(Â'·j7ËJF6<"ꋜÛÞÊ> íÇ(>a'ÂÆ"Ȩ87’gÏŸ}õÛ× ;ß™yA?sb÷¤I¡!Ð3õæéˆ­]~üÑSFIîºøíêÞ•ÄXõöøu¹–±-/fÒ(‚$I†>8¤[?˜4 …ÆäFUerû°¿¯kI’dßRfv'uØÞd—)íN蘷ß;†5iaµw©Œ›”±¾GݯÂӀ܂ª±ØÇ€±ø-@õÃÛãÃCþž»7|ë£ë/ž»ãæMðÀÞ7!âÜ9~ófؽÛSü*“+u,MQ¬N+—9®0fÒÐUå5h´ÆDå&g4«Y (0ÕU5‰ÅÐjJ"D𮋉›4¥Zù:Ú]9`ÕÛãK j_ÂeP´A}áõòö¢UÒ›Ê ‰ûʸ¦`DŽ Rű±‚*¿îðtè¡%Q®‰‘%Ôúo¿}L›W¾¡¡aâ´iW.vÂJ¸RTñùËÓ¦…y>—MÆÝˆ8[ËV“;8.Û@Ye<¦® 6–l¬*­3å&»ˆ¸6Ÿ,€„û ´Äm9 h•Ž$ÉA œ"¯\Õ7úïZ×”1Ž‹û—°ccUܽT{¡0¡`üׯ*Š]»vI¥R‘HtgÁVˆèG›Ji ÛZÕ¼‰q³Ö·ÜA+%ÉÍ´†Í¨‚ †J†RºŽ—H\ÈÂ2 »!w§r€¢õz…FA(ZËÕ~‡’×meܤ`Ž ˜37 {ž7~øtvñ·bคöýñ1Ép6ó<»íþü2ÈyëË——‰D·¶±öU: ©&NÛ?!o$§L™R\\¼víÚ”””îînß2I’3`gþNÈH–¸ Ôµ:Ö“±—Œ@Ñ Ðr%‹.lIDATÖqf×r¬¥åªUvóÍ­&0iJ­ÕvÌ;€[—ÊxªÞØÇÅýHÅ-œïÛMs›fMö›ÇîÉÿý¢áHÝáßX^-¨7[TH¿›€7­¡7ÖÚä¶÷Ÿ¾?¿ ²·×`“‡Þv¼’QÅouO×øñR©´««ËG{IrF—àV‹)ZJÂþ92{cIl<ç!£Uge:B¡1¹)‡e‚$I’Ì•S´a]KA40*¹ûŠxÊ;ÐHÞ¹Q®)c1"ÇŸôØRñKÛ©&˜5ƒë±pf.jõ^"8^ø½ÏÜ÷àòeITAƒÙÒcánšR÷=¸|™°îKL¢ Ø,¶ZÍ’¨‚3Çð§?xúÁåË’¨5{Û,·PÅÿùÍãbqæÎÍB3mMöÞº½{׸VÞ±™WõXxU<Ð Ì7°Î™3§´´444têÔ©¾æ‘äª ¹2×7ÓÌ6}Ë1E .i?K­ï“S9.Å:%Z³Ù•Öw.·y=×Áù£Ûú-ÓOÁqqÿRq3?óû©L¨¬,)ùä³}7;º¯×÷èŽGv5%<ûFZíæâ—¶ýKõ‹Ëîî3ö9¾ýƒç^\±qU»™ž‹Ë_ªÝYýÙ2°À™¿?ýRy‚­4Þr¤@,.¯±|øÉžúç^¼kÏ‘¬—ÝŠÆÏù¢8È¢¾Çìì /­s­|Çߟ±o&X€uñÏóBýÌf¾;ÔQÅýœ–“Îó¼n\»~©Ó„ßqÀƒãâþ‹È~Ɇ†×`ùk•ÇÿðDÒÛܪ×k6-‰xþH]Ì$bbNœ:ÓfNŒìÙågÄÄœÞbáz€³pܪ××'öX8ž7>Ôð³È\EvU?W§Ío¯xþßw7ôë¼Y¥o=2x@,þèµô@,†ã-F 7M$â;þöÒ“¿û^,±8Aç¬Æ‚Pñ¼±õ¸ƒnñ¼£ñ­Pqoè§uûî›é䱩ÃÝ^U|D ßNˆy~ë‘##‡ÙÂ*_TÆ›;ά|±æÄi£…Ÿ ÑÑ €;ñ0]ù⽂üpÐÛ* × Ÿzwñék€7[x3@ïÐ/oÏGG/8aý?ËùeÀqÙ*ƒ¿­ëÅ2„²Ll˜=F×È3»Dç›(û “ãâø{F$Øåå)Ã¥‹€ÙôK×ÿîDçö(Ã<û©m¾¸öööÐÐЩS§:Yv…|ã§ïn3iêXõàûÈá!5¡·¿#\®N³ÙÆÅ…Ð|Ìu°ÿñà÷kš‹ÿ•P>²mÛ¶ÀyF½å¤É)寵ë—:Mc¤ú& ]•Á¨ñ‡7p\A %@T\óæñ1ÞI®zˆNц }Ö ŸNGU| C¿6ó4üÖ€™/Îsü6ñ1º ¤ˆý€ ª8‚Œ%lO§@§zOO~¡‚?%߇_6QxHøš‡æþñà÷ø…"Èpý PÅÃ[…»½<¿å)¼¼á%`ÆÅq¦‚ ·RÅß*Ü»&³_r#rA¡3œãâïíÏ]“9}ú]ÂÏ<ó´í¯-=wMf¿ñ:‚øN ‹#‚Ü2¤²²²²²²*+?ÎÉɱým62¼Q8úATñaàä‰3 Å“°ÏP(žAda`6›Ã7nÜøñÇc_ ‚ „;w†ßºu«££ûAY ܺu+¼opøð‰Ï±/$þù…±¦¿õÞ±sdÎÒ78޽€ ÁÉÞ=÷Ü388ˆ] ¡ˆMüÔ{_ ¾‚˜ÿýDÓx­ Tûß¹çž{‚ö ¹»|òÑN“çç]:.t@ÒÚøî§… îH€nŸó[t$ä g´öù |âÛ”Þàà Nò!ŠŸ‹ò!ÈñýEdž‹_Ç…î{ã—Ìëçž{î¹çžC-Dæ7èÿ!ÈB?Fù~÷»ß1oÿå•×~÷»ßýÛ¿DýCæ%ŸW¸ H¨0#:$­ÿ—W^{î¹çœÿå•×|NþÔ‚â#¤‹SÔž“J¤.î©6ªDµàĶà+D_>*‚Ìñûý±ÏO€ÌÇbžÝ¾)ý Äâíÿ_|u&_ö"R™L*›h*QފȪ*‘MÕ[MÛð|#3>ö‡ ¡é[ùàÔ™áß r Fð}ø±Þ›ÁÛØ]/„B¡Ú0‘  …B¡@ þÌæá)8>÷Öm2w±…B@^ßíHQºëåÀG=2™ÿ‡ý€ !,~Œò½÷jæ{¯f:ÞDÇ…î{9QŽ·÷r¢‚ðë®W5æ5ÿôòù:Fª Úý)ÕF£Ñh4™TO€HeªÙã{€´ûòyÙ¶'\½L£Ñh2v¨ìòºb¨M&ÓѤ:Ô?$pÎABçüŽ}iuKÙþ×Gþ–cŸ0cž >üX˱O’Öþ4p »:Ξ=²[ø6Eí鈑ªæ„P(ÜcÓô®Tx¨õ/ÕŠ .Þä®ýçH’¢ölˆÕhóã >1p§o$`Ÿ•AB^ü2‹9ufø…×O9Þú–:O·Ï[zP¼ËÜeN¤2åõrüòQF°ü-èêMjã jÁ ¼©ƒs~Z°{>»}Sæc1å hÁKÇ…î–cŸxsüm“éN°ŒBÆçkkRökƒŸLIÄmgðÿ°$„ÅÑ?·þ+ß®„;] y¯þò^óÇ$¡"U 3ëS˜©8Ûr¡°jÇŽÉâÿD]|FÎùR¡P 82]±@ý^ÈÀ9? 9¦ó9?FÕît%Àµë·™DÇ çbaûdbgy¤0OA°¾u¤ùSÈá6ó™—*• à‰‰ÌždrŸ/På«‹õ$ûÝ'EI+Ž— ÁX•¥h€ÜŠãeiwcwušnóÇ€¶J±R?q Tjá¡ê<.n„¨çÌ€§CðÔÿ£™5nõ‚Ì3æÞžt[¥D"qV> Ûë ²ªÚ0 ²ph«®TÑ$éæêÑm•Y ¼Pöü~´3…yÎo û ;™gÌœmÕ•ˆÅ‰D"‘ˆKtVšfT³R,‹+ÛhšÉÀ¼vÏ_Ùæµ*{~»ÜZu%­ôú4Éøam;IRRMË™ó '‘VÞÒRžF¾Ì£Û*Ùlp.âd•S=N¯Û*5”è¬èh"Ó'~Aðä I°bÙâË„}åù/þÏg°ß‘ùçóÍ`ƪly]»}‚l¯+¨2:n9\ꜶêJ j'òë•ý£é¶*çH½¢ô°CJ«² êÚ'Z‘g+½ÍJÒ´Õr(*µèá¤æ³˜—¥Ð;ÛU¨zµVe9†[I²½Nž]Ù†ú‡Ü%ñcžá{ò…¤E ]‹º®Ü8çùÇ(ßÄÓ~sÍNdî1ss~$©W*õTj¡¶©©¹¹¹I#hhuøF$©¯«k§(©¦©‰q¹Ÿ,µPËšøE¶ª´…©fKMaz’dêinnnnnÖH)ïvõXÌÌãLn?«y”Tãh…$Ûk?4Ô' ¹nv6hm*Ž þ0Ms~ö_ä$§ÿ/²æüßÿ{zàØ= ê„m4¯Ú¹ìÿÍÄÈ'%Õ´”§ÙÞÓ¥TCƒ[§Y7šnkm ¤ò<ŽSþ‹–^HãA¤•°WÅá%˜Ý<¹CóŽÂ² iƒ¢!Sç/…¾Ì›p…Ï¥6ÔšZÛÊ„B?;„’:ÏÚj0[z¸x!"³'~lw[Ǿ´úµ) A0Å-WΟ»ümÏwÅR[̲èù 7=ÈRƒÇ¾k2Ë8öv™壤eÂI2x”¦??òü¿~îz‹JQÙò÷ÿú…¿®ÿmqêôÝÒôçGž7xÖIŸ=ð/¿nr4ýóim™ãÌèœ_0ÎWV}œçé·7OYt² ¶Ýþd:.•×µÛ>M+oÒòÏHPRÍñ2¨jðµÞ…H+on.wÛÞ øEϤ„·¥—næ9¯^q¶œ·ys­¢¤ÇŸ±”ÚÌÀ Õ`¾&¼¤”g _Vï}Éó3­xà?yDû‚(ûÅ/ããã–D/寝€ïoÚ.å„ÕñÀY½¢·óÚ§­§€¿Ž¿C¶Åa¤7eò&TÓ.~ôÙÊJ˜ÁÛþhàzî»jÿ;ÌWÆÃÈÍçcûÃ}®§?·Eßìܹsú=?‡ò-üçÅ…ðÁ§­§øëø`þÚ ý›„¾£µŠw» ‡'›zU$´ØSúŽþ»âÝ’Üô??ÊÛH8üHŠZ»£â­ôXÂÙ¹Œ{æùÜ¿½§?jL+ÿØÝôlLöš³]Œq}¦#Ïbó/ýåà Î6 sŒç‡ ¡Åô/xa”ï½W3™­ÑBè'£7FXÓÿÏþÄ8|;d[øëøŒþùAã¼ÿøÛ5 -Ï×´Û|&[â¿+IoO¿ó_W|üošç¿ýèh?MĦ¼ß5¨ß;ªùíO®¾s´Ÿ¦à¼ö_¡ücõ{Gÿþ«Í½ ëÕŽœõ|µþÆïJR ÂQ‰¦þCkòmöWðÏê÷ŽjÊ×üÙn2ÇÁx~BÌÆœß1Gñ|Œ¦.‰^zá¼måsb‚˃}WÏ_Ÿ ççª]÷}üÐå–h—®öÏ•Oý€¢²¿¸€¾úã RTöz€•ôççþ+g½`eÖOÒê ¶Î8‚ŽJ`ƒ(­ÒÐ.¤x/(ÎzÀ‘“± ™³Ìµ9¿y ÁìŠÌAñË|,æÔ™á^?åxèÄ!³ÂÅ1çÇJ ú7¹Dýì݉é:šîe|Áÿq¿éÈóþè76©ñÜߊS72Å£—ÈÂòùPù$„˜þaÏg·oÊ|,Æ¡|Nø±{~Úzêº{fn$7­ßÒxîonÉkî¿ßSÞÎkÿµÍ½Îæ§rÚ*ÿ¹õ*íoC3´mÙåöR_ÐtïiµsÍ-Ç¿õȉÌ]fì !æÄ/–Ž+§m;õ9{2d¤ÛÜÇSÆÌá¼ßጠ6åýn^š¡EÏù566b¿!È]a```¦ÄoòO'å‹·íÉκÚóÿüáO±+ãO5V´Ï2gý¿€†:óóó±ßdö9xðàœðü2s„§±+ãàêwÝλŒ|^îú;0Ÿfæà޵Ȝc*ÏùÝõMapÀY€\êêâÇKZŨšC½i$Fu@æ‡Ï7§`]ï† ó˜Ó~ˆA~xéíx‘9îí‰ ¡ÅÝ?¶UûSyÄ“ŽóÖÓúËý£QËÆSY¹IĉYŠ'AÿA2äü>¼Ñ‘½×®XnŽ|}—ÂN¹ö÷o,xÖ‘éű· *‚ øÝ}º,Ös_ô|ò‘åö͉ÀÒŸ5¢ø!3âóW–¦Û*ÅâÊ6Ú5¥²mv·2P BWµÀ ¶½˜ |Tnp6I0ƒ6 ”ðùz`÷<ÔK߈ _1ö,jdO:2ýLqίAQ•~W£³ªL&•MrNl3©Dw·7»ëå»ö§Ô˜Œ"¼²ôüä{wÞ_¶lBù€&£bp“hdÎù$©W”¶ºz{ŒS(±Ãx‡L¢X\ÙÖVɤ—謴UW"‹Å%:+m/kÕ•ˆ%‰X\ÙFÓ¥‚s(»ëåP(”×wOxlÝõrÀî“u×Ëî.š½”SA[a&ѫӧÝ{²)°g»6Ñ©]goÒñÚ ¨ µÍt¶Añ›gT½y0vc?AKǶ)A¯¸qʦe¬£+‚iùB8¾] ¹~E'©sZ˜Ñ±¬Ç”çür5)Ù^WPetNeb×5777i S)ªAQå.’Ô+ZÓ™ôö:y–”‡Šø`®ÕØÔXUPkæj ùРp­6ptÅ*P›LÆ?½ ûµ×D“I%è®WušŒF£©ŠmW–AÍ”2 v×Ëë’ŽF£Ñ¸íD±Žíâ<¡Û˜“ïÛ¦]ƒºøüÞ£F£ñèÞóÅ“\ѺâÛ˜vM…»ðòGñ›‡DÓôûª–.~R*ÙþóXGú9 O¬ÉyÊó~RVm4šŽæ4Nõ aPŸùOF£Ñhš¶£™¨™C>Ÿ a™¶0•Ô+'ÿ&àð’](JZQ&dÒ)JZQÇaò˜-=4ÝÖÚÉvsÆãýW£¢¢zº{஌çq¿Î&|}ùeÕ.ÓöÛØÝoŸ=ÛÑåâ•ê)¬cA"•ÑXíª0žÙØê÷)îu²cÓ)§±§d††@´MæÞ"«1Î#KÈäL×s~‘Vv¨ˆo6›m =3$ó8ë¨h+Ÿ$õZ»9Õ/“Ÿ‘sÞc±«ã¬},¥ûòù a›¸/3¨Yçü@$÷sB´M¦cîÙºëët²möKŸÑÎîz¹sýºb‡ûh8á”Y ÌÑG‚ØáåµW÷G ñ7§oè»2°|ùòK:פÆ=¸6)""ÂßÛÍâ•Hd“Cg ±¹GÚxƒZpbr±2Z 6ør›Üê‡@ê ÈÔ„Ýç›–'Ü ®¬ºÂ’¥°kaE®^©Wd]äól×+²àæÍþÔÕÐXÄÊ:¹¤(Jêg©àÕ/_»M-–’@Q{jL*ˆT5'„»…oPë_Þ+Ó  Æ¤©Ž^–Ûrî©®‘éN°Wg2¨‚Rû`/{¶y9!Ø%|›¤¨=5&‘Ó—E €{ÖÈv˜¸ =šT'”’$µþå£Z¼äQüæ¯ÿò­ð¡‡$yŽ`ÉxŠÛÓmMHZŸç}¨ÓƒîËç¶yÈ @&*º/Ÿß˜$÷Ofƒª3ÐY]]½\”ÏÜðª¦n âAÐÏùDZyKšKJZyKËÄëæær·"µ´Ø“ÒÊÙ_ÛÞ;}ÌõSï·Y"ï)Ž×žÙ@¤2Užƒޤü|Õ„²MDr2‰¼[bRùek6{¢s~×–¿§b_9šõôã'aaaM\Ê)X¸†å§6” Àž£hâvR $Iû=l|FÎùÝB!Eí‘ÉtÅ8`b½ 5¨ÅGH’¢Öï=ª÷õãV¿<ëôÓß.TBá9§»ãàŒAfÉÿCd¦!xI)ϾÌÓdz7˜öŸ€Ú}÷ÀÂF7þkú´‹ ‰á¡ÑÝ/=ÄáÆFGGãÙµËçسc~¡Úÿó•a\=OŸYùâ[óóóçBdA166Úâ§.j¢ˆñ{’ ^ø)žNänáðùpµ ‚„ ¡½ÃK캾0ˆx±•¹û>ö‚„¡íù¡ì!s„ÐóCôüB›ëC£ß|{á++A†ó…sßœ½tÅúžcý?Aæ•çç çÒÀðµ[Ìk³©ÆnÓßßùþr<wßù¯;×òyx¾‘™çü<;;™ÓÊ>iº­*KÁD¬¥¨Ô¢CÕ2.]Š 3Çœöüý±Ïÿøñù^?õûcŸûãö9^ Ž ß¸}ûESMÑCCÊ-’$¢££.]èa׆âó/ÿÉ9§7D*[†©Å•6¨Åàù3 òÕzn1Åx~´UWš¥h€\&öìñãJÐTÍLà½à™áˆ€²°Åï÷Ç>?uf˜y}êÌð¤ú7:|Ëñ:::rlll||œ ˆ0’¤)zìûïßÞwè©O@xxXÿÕk~˜Ð]/·KKw½\`×™îúŸýLýŠ@ý™-Ì‘‰À˜`P B¡Pà¬IÝõr@À¢RÝõu:Ö€³lõÔµÁ¥*·ÖY3xÃz”P(t÷ô¨ Øç º¸ñÃÚv’Ì­(câ­Wv`"öz[¥X"‘H$qe›»µU2•謴UW"‹Å%:+íg i«®D,‘Hªæ(¨Ó•H$&³Ã1%I½"Ë&ÌLm6ÛÄ•g¨3¨ŽŠ_0Ê÷Þ«™ï½šéxëƒïo 6'3¯oÞ¸õý÷cáá@Ãø8EÄØ÷ãŽÌOý8“ÝŸ«Iy{·Pn ”>“ºûÓÆs$i‹ ýi#äl\ @€HeªÙã4ViP×%5¹úpºb¨M&ÓѤ:w-éê8ËCÚ .†“Ñh4Õ@ñD!·ªÜ[ŸÈ`R‰¼Vâ!}ªÆœ£&ãŸ^>_çˆïR(Ìœ_pUkP”4]Èò©UW¢Ô“RMS“FJê•%:ëÄW—Ô+ZÓ›´…©Õ^'ÏÒ€òP̵šÃV»üLšÇXUPkæj ùР¨2:W~”MÚB>˜k?4DZÙñ )EQ”´âxYAÐt[UA­Ùî­¶´L¨5‚ øMǾ´ºý¹e0¾È¼¸ýý­Å‘‹ ’$‚$ɈEA\»q•¢h¯Û¯coC¤2«Sö«°«_÷§ðrõËÐøi7£}÷³6œÐy†–•Õhóã >1Åß5œÐÙEQ´M¦;að·*{_•¸ÑÕqöìÛ»…ÂÝoŸ=ÛÑÅRrü?6]´Nšmº(L—R”ù¤Á!l%­(‡—̼®ÎãpxÉ`¶8Æ÷}çat ™'ä%ÀE‹såò<SZ½9s$©W”Út” ÒÊ[ZP¿`È|,^xýÔ ¯ŸbÞn„ëöçœÿÞrÇë+Ö+b ,<,bQÄðíþcƒ@ÓÔеëýW¢–DxoY¤2vìRlêWWoø´r2D9Ðø)ó:aZ1!i£WQšEdÕAÎ8",LqÎÏ;=³k‚“°MÛO©Wf+õ$På‘Vv¨(•¢Èö:yvveu"(~SàÙí›ýc”ïÙí›|ç»3ö/Ý£ñÛ;¾¾Ý?rç»áÛýLⲘeAÞ¸qëúÐp|â*_uu_>¿1)ÁæûÁÛ¥oCNF¼Ók/ÚçËÃb#>¿P¦c‘tªÇÉ ?+ Ôfd}>‚HKÏ’Ô·=?Œãñ]ø¼¸é4<ŽÇŠ’7tIpeZZ4R U8Õ‡ øMUÿÜ^ø :fñÐÐðÛwàûÛôÖÌŒÄ5 Ë—/]¹håÊ{6lX÷Ԯܡk×·å>zëÖí‡6$²Õa_!²«1Gm÷‹ÏÈYO­Ïɰ 7Rö×nb 8¼0o&_câìdÖ@©Ð†À³žb¨ñå¹´ÎúÙ¤•l32AÏù€ð™¢TŠjP”:Ö¡´UV¶Ñ4ApE[ù6]4¶êI’¿UľAEGýÚý~*%ÀE‹k^aY…”¢€ÏãârP$¤íçüî½oÙ¼½ƒÛr5›z¢¢â¸ñÌ’9†®]¿|©ûпÿ%1e7!Ö‹™Tî™Ö”ïô¹ã•È#ѳçà±^ÉŠTF£ÊK¼TÅjÒ䕏տÍfdJþ_#ŸWV}œW•¥¨“g×€TÓTNÀ•ÐXÄJe¶€’jȸÓk³­þ:¹¤˜Å,BïJ™§,:YP['Ï®¥¤o4o>-yÅö`"ð‹”y\ˆ×B¼¤”g _fã|ìK«ÛÛìÀLø1 >ý᳓ÿÝÛ5ÈKŒ[º4Úö=%€¦é«Wú»-ߎ­~06s{žldºPí‡ùÊ0[ºxîíÂŒ‚úÂÆÆÆüüüy¹) îí‰Ìq233çÃÞžOlýAÒCœK·ôt}{¥·oݦ¸¾«_}aþÛWçoÞ¼µv]<*2 >ö‚„sqØóG;Sõ8},•_Ç…kWß;oùï/¾ŽY•²>¿qMüêUxš‘™÷öD¿»Ã*îÊUÜ•xF‘»ëÿ4çW__ý† ³ÏÕ«WñdŠÏ/??»Aî œoâ7½‹t:Î[Oë/ôF-Oydå&?&f)^7ÈÔ}>°/–Adö#±¼1:r£·óÚËÍ‘ï ïRØé#×þþ»ae*Ïù!2û ø±Óe±žû¢ç“,·oRŽÄÏQüIü?ì pÎ…ƒû?ê%‡‡oD†¯ û –Ž? 52€}ƒ°Üœ‚ èùÍ-~±wçÍÑñÅaË&”h2*·«GfÏç£mñ÷Ø0ì.†œÑ¦gí¸h{øÃÙhËLÑ71äÎ Šß|£ê̓±û ‚\:þ°MùzÅý‹S6- ¼²I¯;GÌEB—™ó3~X×NzÙóšý§mºâ Íæ/æÜùu¦é¶*E³ÓwKK¹Œ3)çÖÃ¥µf~¡¶©¹¹ùøq%hpsp¿»yõÓoì«Zº<úI©dûÏ'ö}"'áÉ‚5ÏãË IDAT9OM@ ‚ö;ú¬?ŽÚ‹…šÂTŠjÐNħ§ØîÛ¶)^q °î)$>Á;Çjw׸í¬U±b9\êV­g¼xm1æIì°K¢Û*™óàw0zVÅunÅÙev¶gßún«­­Òíè&;&^U2@\Ùr&J°g)çV˜ôÕ6.`?:Ž:ÐCð'ÿêŒgqWk+(~w_ù*^«âÄÅŠ%[úû##£ÖeŽ@ÆŽ¤ éÚ¤µ >½:ÇkƒZ 6t×Ë@ý™¯E*“I›Ÿˆ=êÌH!.<ÜŸ;ƒó—» »^^¬Ã®\¨LóœŸñÃÚd9£|0o½ý¤¡—yíN=ÀºSÁàÁ»THU-½¶<Ìã„ñâÝÁe%ˆ+ɼ¼²&m!¿AÁ¬¤0½§ƒ’ìs™½ünËW4ÝVi_³cë.›Høc˜ÜûŸõ’ðó‚èÞ©]u(~³Hž*r 5+oƒñ“N’$›>¸·:öÁ”¤˜˜¥~ŒvŠT¦ÂŽ]@êšÀmÔPXz„i°Ò4Wv "×\'Ïfà“§,⃹Nží¹ˆŽ+; ‘Rzev¶RP x&n»sµþWuR“•­Ô;Ïî0eÛëä¬ >ÝÚ2‚°¬"—$õŠ,íE>¸­8[àûŠÜ³ ÑwåÞ0Íw+>:Á϶|7AieJÐdeI$’l¥žJ-dÆ<ý1Ì7žýïyIøß]AtoÐWÝ,3#¹O¥Ý€Ê¾{àa£‰È5}ÚEÄðÐèî—âpc£££ññ[$w‡ÿçxëO$w†37ïîä2?`Õh€\?‡—8;wî\О_Øhâ¦-«¿ú«5<"ìúµÑÏ=¸dI$*r×ý?Afšý¨CïåŸC'I’+¯=*árâVÅÄÄà5 îí‰Üu˜˱#üfA{~4Mõ_¹~oOBâª<²•AŸAÐó›ç¨‹š(büž¤Á‚~Š×2E¦òœ‚ èùͱëú âÅT>ý?AÏoÁàìuœ·žÖ_èZ6žòÈÊM"~LÌR¼h7pÎAÐó›?ŒŽÜèí¼vÅrsä;è»vúȵ¿ƒ‘ÜôùÅoþÒe±žû¢ç“,·oNl®÷Y#ŠÂÎŒÄóCdÆÀ¨,ÜÿñP/9<|#2|ÅD0w‚À¾A&ñÿpäAÐó U~±wçÍÑñÅaË&”h2*÷M@X˜‘x~‚ øÍ2UoŒÝØOäÒñ‡mÊGÐ+î_œ²iYà•9¼e¡»^Ž»zΟûAPüBš¦ßØWµtyô“RÉöŸÇ:ÒŸÈIx²`MÎSӃϠT#Ã~}pÎAPüBXù*^«âÄÅŠ%[úû##£ÖeŽ@ÆŽ¤ éÚ¤µ >½:ÇkƒZ 6t×Ë@ý™¯E*“I›Ÿˆ=þ‚ (~w7_ÿM\gKææÁáE‹wwYSׯ!#¨ŒIþÅös +VÚd2™TO`·.pÎABŽy¸ÚóØ—Voùˆv´ïÕ_%®IØœñxÿÕÁ˜e1—/uqâVÆó¸Š_§Ç‘ÕhóãYÜÄâ#$ µ§Æ¤áÕ7¿|>T>Añ»› ðµW÷G ñ7§oè»2°|ùòK:פÆ=¸6)""búì©L&^qóÜÛAPüBŒ×ùVøÐC’¼ Ç?°d<Åíé¶&$­ŠOˆóo¨óüånÅw×Ë‹u Û†½‰þúóç9Ý{¢çM',tñ«ØWE¤f=½ÁøIgXXXÓ—r V'®áEEù\[¤2Z ÀƽGkd»Nظ} ”„#Â#8ºàÞž äÿùŸýÄ)åý…vÆçY',hñ{÷Àb#Ó6>Í5}Ú6<4ºû¥‡8ÜXÿ”Ï¡öÁL“Èž"rÍ š¼,‚>2‡ôÿéÅ·D&å­wy;ï4ÝV•¥ÐÛ¦ùS‹U˸SÝ%ƒ©³r+Ž—¥Ä\îš¶.-¨kŸÎÃgí ¨8^žF8¥´¦û×9 zµgØhâ¦-«¿ú«5<"ìúµÑÏ=¸dIdtt4~Û‘@Áçüæ7K"×D†ïÈÊpü1)^—­ºÒ,Eäjššš››W‚¦ª¦ƒø}¯‹ÅâJ¦,®½¥¥|–•Ϲ<ÿØÌ¶.-¨5ó µ.‡ïv8Aô€' Š`:v¡‹_ïåŸÿW'I’÷&]ßöc'nÕœð{ŽLÅÿÃ~˜nŸzïKK##2Ó]†p2ÓEK##Ô{_b=éÆkÛI2·Âæ‚Wv`B±Ú*ʼnD"‘ˆ+ÛÜ~âuº‰D"—謴Ãw$I½"Ë]r;XÇ[¦•….~4Mõ_¹~oOBâª<²!&&¿êHàs~ó›‘[c#·ÆüO§é¶Ö (iº¥6«®D©'¥š¦&”Ô+KtVçßñ“ lÒòÁ\û¡‘ ÒÊŽWH)Š¢¤ÞÆ9ÝŠø>cUA­™_¨)äCƒ¢ÊD'xûsËLié¹@’zEV)#ÉL¢Ûá0Žlsss“¶0•¢œ}8’Ô+ZÓOœ¨xc’ÈÕh¤d{]Çá¸,Apóª+¤Õ (ÕYiî^¸â§.j¢ˆñ{’ ^xZø˜ ,, ¿äú|ˆ'£·ÆFÙDÎ[ºÏn«á¤Ù¦‹Ât)E™O^ EIåyàð’ ¡ÕçÌÿ"Œ$$ó„¼d¸h±âü1ëíÏ3Zy‹FJ‘d{<{rG“±ßõ¸*Ê„~Y&,Ó¦’z¥Ã¥óv°‘Vv¨ˆæ:yö»xáŠ_캾0ˆð'ž;‚L ÎùÍgñ»=6z{ÌÿtŸ0ãN˜-=³x,$©Wf+õ$h»ÌÁzûc-’VÞÒÔ¤-L¥¼LmÕ•ˆÅÙŒIÁÂÉS¦R ŠÒý“,Á•)‹ø½bù¿K~ªúw‰ï<ç­‡ª>ûõ¿4¿ó«ÆSMmÃÃ#øC€ ÿ·Ðnk~ûŸï߸=ö‡;§ÿÇáã7nýö?ß÷ëv úµ²Œ,Æñø® |^Ü,J%eÖà´jÆÑ ¬¬`ï Û`#«ÖÒ´õ°¦Ö üB­FJQAÓJ.˜k5Ú‹>–ñ¼à†µ÷öô~§3r£·óÚËÍ‘ï ïRØé#×þþ FrGXÀ9¿yÏÍ;ã7ïŒÿûÇLŠ·üÂgŠRÓKÐVYÙFÓÁmåÛtÑØª'IþV×—1byÑÒ뿤¥çÚŠ«ÊÑ´öpïT:ÁóÅŸ£Û*Kt6WÏØª'I»Æ»ŽËº˜©ô€mHÓl6ûkDñCÐç[ˆÎߟŽèþtDwóΘãIñêñpeÕÇ+rÁ\'Ïf–2¶¦ÛÖkpe4RJ¯ÌÎVê)©æ€Œ;‰O£´MSù¿DSøŒ­ˆ–WäìQ1M·×ɃXðP'DZ™4YY‰$[©§R Uçq ÂípŒ ,«È%I½"K{‘¬K:ýï‚+«®Èõv°g¨]‰¸5ýxyApek“V¼¤”g _Vï}ɳ®c_ZƒØ'sêL¥Ýi±ùàþ‡zÉáá‘á+&‚¹Tøbúÿ­ÌÁßDµÿæ+ã¼™§óÞžŒúãžé¼ùØê(ìÒ·7›7°sçNÜÛ“…_ìݹïG‡-›P> É¨ ;ñíÿáÈçüv±æM'à°' UoŒÝØOäÒñ‡mÊGÐ+î_œ²iYà•9¼e¡»^.ð™™ûàœ‚ ø…64M¿±¯jéòè'¥’í?u¤?‘“ðdÁšœ§¦wßiƒZ PAŽ û}^ø|Ø‚âªÊWñZ'.V,ÙÒß7µ.s2v$eH×&­MðéÕ9^Ôµ¡»^.êÏ|5(R™LÚüDìùy>ç‡ (~¡Ê›¯ÿ&.³%sóàÀð¢E‹»»¬©ë×TÆŽ$ÿbû9Ы@m2™Lª'°[ÑÿCdî1¼ûÒêí# A÷½ú«Ä5 ›3ï¿:³,æò¥.NÜÊxWñë"à Ôe5Úüx7±øˆ-¾ †î›W`í ÝýÒCnlT”ÿ;n8 fšDö‘kÑäe‘Pçü=¿P"l4qÓ–Õ_ýÕvýÚèÎç\²$2::/ }>AÏoÞÒ{ùÆçÐI’äŠÄkJ¸œ¸UÌ fÎÏy«OAÐó›£Ð4Õåzø½= ‰«~ðÈT>ý?AÏož£.j¢ˆñ{’ ^À`îÈ”˜âœß™Î›Ø‡2› ߢ®øÅ®ë»z.öÅT>dz|¾à”ã!ÈìI.\ñóGö:Î[Oë/ôF-Oydå&?&f)^7ˆ'8ç‡ ¡>äî•Ñ‘½×®XnŽ|}—ÂN¹ö÷o0’;2‰ÿ‡ý€ (~!L—ÅzO>²Ü¾9Àö³F?„Œç‡ !Frgáàþ‡zÉáá‘á+&‚¹ÔÈö âÕçCåCôüB›_ìÝyst|qز 嚌Š!°sVpoOAñ yªÞ<»±Ÿ È¥ãÛ” WÜ¿8eÓ²À+sxËBw½wõœOþö‚ ø…4M¿±¯jéòè'¥’í?u¤?‘“ðdÁšœ§¦7ŸA-¨ G†ýâàœ‚ ø…¶òU¼Vʼn‹K¶ô÷ FFF­Ë€ŒIÒµIk|zuŽ×µ@mè®— ú3_ ŠT&“6?{}>APüîo¾þ›¸ΖÌ̓Ë-î®_CFP;’ü‹íç@W¬µÉd2©žÀn]àœ‚„ópµç±/­Þ>òä}ß«¿J\“°9ãñþ«ƒ1Ëb._êâÄ­Œçq¿Nñ#°Ÿ²m~<‹›X|„$€¢öÔ˜T"¼úæ£ÿ‡#Ÿ‚âwð!o>xíÕýCüÍéú® ,_¾üÒ…Î5©q®MŠˆˆ˜>Ó0zß¼ezãùÑt[U–BOºÊP”ôæÍ§%¯4@nÅñ²4bš×3ízVîiTÓTž6Û+Ÿ½™‡ ÁÞðú/ß zH’·áø–˜˜˜žnkBÒªø„8ÿ†:Ï_î€îzy±»raû|ÓUA¤•·´47775i¤EQRMSSsssKKù]üÑgÌhÒ¦RTƒ¢ª¦gAí*Åb±¸’i‹é–»Û Šßü¡b_9š•·ÁøI'I’M\Š[û`JRLÌR?F;E*SaÇ.@ uMà‹6 j@(,=B) ñ‡f–çü,‡K%‰X\¢³Ò.:ÑVɨM[u%b‰Dâ&ÄNeí¬1‰$«T{qÒ†9¼d7e²·m•¶úÅ•mn¦Ó•8 Þ,dêܶMñJ–BO’$©WdUµÑ´›zÚª+±£s:‚ ø¹ðî?ÄF¦e?½á‹O»ÂÂÆ¯îz>eubBT”ÿí‹T&“ɤÍ©lÓxŽŽ Þ¦÷D*“ÉhÇ„³€èÿùù¥%õ'AÙ¤-䃹öC£sº¢5ñŒUµf~¡¦ Š*£‹Cé꽫z’”jšŽ+·NÞ¶±UO’›Î¸_Î-Zu%J=)Õ45i¤¤^Y¢³º¬‘’d»Ã`O âĉŠ7ŽW0Ž/ë8§gqšn«*¨5Cî\p”‘¹Ï‚ÞÞ,l4qÓ–ÕÆO:Ã#¿ÞõüƒK–DFGGãeÄTæüÝRrrr|¡(©<ÀK07´¶• …öôŠ2!#­ Ìò’Ì-VZÈu(‡— `¶»_–‹@Q©¼8—tVÅUfë€J-`=@ŽC;Ky‡ªóÇëÙÃ200° Å¯÷òÏ¡“$ɉוp9q«0˜;´Ïôj—üü|·Ú¦ËATfë$ÁléàÐV]iAm;II‚mÃö‹’y˜Tq=0E¦'Ì–N r¦x€DZÙ¡¢‹µííuòì:Ǫ·îE8xðà‚?š¦ú¯\ç¬MHLúÁ#ÂÂÂðš@‚cŠñü¦;`”ÙM®¬‡5µfàiå–EÃ4w@ïê6òyq¬mé¬Né€àÊ´ÈÚ*ÅJ=Ù ¨J?^–FdñdllláÎù©‹š(büž¤‚ž>&@åC¦Åÿ› –W´•O’zíá^çÌÅÉ#ˆ´ô\ I}«Ñ6ù7Å[¶yAþVÑÄ@+\´ôÚç “y\‚ðb!› 2eý:@² )EyU_aFì‘Ç®ë ƒâ¹#ˆoæàÞž\Ù”j¯“;Ö=DZYE.IêYÚ‹|p¬¢>S”JQzevkz…”¢¦Ø¢^™­ÔSR͙˷'5YÙJ½ó|ž§…ž —§,⃹Nží™Á³¸cÙjv¶²øEÊ<..xA|ܱñ’Rž-|Y½÷%ÏÏŽ}i î™ñ)âo»xe‡:!»]µÿæ+ãRs›óc\@´°±±1??¾Íá“éÈÜdçÎá¡þݳ²÷]óê§pŠs~‚Ì2ójÁËõ¡ÑþÞáñ;TÊâ>;þõ}DSÔ=+—­â®Ä3Ì4¸·'ÛNZyKK9v2÷˜?s~=—¬CwnRãã`6õÜsïò±ÛáwF‰Ëí}W¬ßqÁlÁóÌÏAPüî– ßÅ'¹»w÷>¹Š“˜zÿq÷Àá?þÏ72s>ö‚„óaØóò…«·FÆÌ¦¸>4ÜÕiµZ¯’QòÊ3Ž<ûjó~´Ï72Càœ‚ øÍú}wßHTT$\¿>rîìùþ¾Á[7oÓ4ýÚ?\y߽÷û`çŽ]Ý}Kc¢9ñ÷¹–ž³çà®ÆÛ3¨'¶M¥uƒZXzd¶Äaí”Íž/þŽ|"Š_0üþØç§Î ÿñãó™Å<»}“?nŸãõÈðèÈðÛ·ïP4EÓ4ICCÃÊ7Š*öÕ’$uéB‡ø9ÂìÝÅŸoç¦E*“hJ5CÉ(šK™Þx~‚,8ñc”y}êÌ0Àç“êßèð-Çëèèȱ±±ññq‚ H‚ (zìûïßÞwHºs„‡‡]±^ LŽ&ÕíÚdLÛN Š$E­ß{” Óî’Áá`u×Ëw¿}ÎÉë²y–N'ÜMŠÚã¨Y'€wj"[ÍD K£vºëët²Vñô§*[KØ2LâPv×Ëwí?G’{ª*Ѥ6£Ï‡ îàòLÓÕÛ7·ÄQ¾÷^Í€^?uêÌð³Û')òýíqÁædfÂïæ[ß?>66>NQ$IAŒ}?îÈüÔ3égü4PW¬Ú{Ôdbë ‡ƒ(¯ï¶©˜=Cw½\ “Jíþ”j“VÄêYÚ ÔuIGMF›Â¦`ó· j»gP ÔûçžNœÐ޳²mìÒçWU*wK\zÀK%Ò§jÌ9jÒB½\Uß-rí¨ùû]Â9?dzaÝx™.Nÿùý¹¾ÚóØ—V·?Ï<¦Ó¶œ·¿¿µ8r1A’A$±(‚ ˆk7®R cããuû ·.«q¸jŒC#…¥º³]nâSRW¥B¡K\Z÷‚†º”ÄÉuÀpBgW2Ñ6™î„Ák£3W•sx«ÄýŽªãìÙ·w …»ß>ëÙQó\ó‰ !ÄÜòü2‹9ufø…×O9ÞNºÏټ彶ÁÌ+Ö+bnŒÞ #bøv?“NÓÔеÑþ¾Á¨%Ášfwhâ jÁ _E*£Q^/È/3£œ~œ’6êNT¢»<°(³w.pÎAB޹åù=»}Sæc1åógÁËØq°d>ú¿½ãëáÛý#w¾s(ß²˜eAÞ¸qëúÐp|âª)Xç»ÆŸ¯­IÙ¯5°ôå7±gsrº&i·P¦+V¦¡ª íñóèÐçCÅÏUÿÜ^ø&:fñÐÐðÛwàûÛôÖÌŒÄ5 Ë—/]¹håÊ{6lX÷Ԯܡk×·å>zëÖí‡6$kW|FÎùR¡P 82]±@ý{6ƒZ  …Ba)Ô0Þ{A36Z, …#TL‚»hMd+¶W6¹B©L5P*´a¯ßÿªØ- È£[0s~S¬„‰KPÙF»¦°D<¢Zñ”ëñÕD[¥D"q‹Ïà³à†X\y†:3s&w¼ÓÒÕ3ÔDw½|A}›f‡¹Õöd–½ø´`6¶þæo½ƒÛr5›z(Š  †®]¿ÔÑ5>6ž˜²*}Û£xÊçÌ¥Ģ¨ Ž5ŸÁEuðŒ@ÓmUY­éS ‰0Ó¡&­ßËqÍ”IATN·Uf+õ©…Z·HLÓŽUW"¯kwD™÷Æ[ïýÑþ›lP ŠÏïÝ›²¿ŸAšF233çÃöfmX½8šøÿ´'‡‡G ‚ ‚$ úꕾ‹:ïܾ¿f%*2CLïÞž$©W”¶ºÞ8{3ì¯í¾W‰ÎJ[u%b±X\¢³ºTb9\*‘HœÓiÚª+;{lβ:Om•6gN\ÙæP=I’¤^™¨¿åf’gëÞ,tø‘GÙ‘žUª½èÜuV]‰=?«y4ÝV¥h ¤šê¼ÖNöV‰?½çV°'¯Z#¥UžMxÌ1ióñ[6íÌ“½=ŸØúƒ¤‡8—þnééúöJoߺMq}W¾úÂü·¯Îß¼ykíºøÌíix²‘bZçür5)Ù^WPe L/[Ó›´…©Õ^'ÏÒ€òP̵š %IýIP6i¤$Ù^û¡­rcUA­™_¨)äCƒÂ©E¦Â––r7Ïɪ+QêI©¦©I#%õÊ• ÒÊŽWH)Š¢¤š¦&Ï"¾Í> Ê&m!Ì“ÜZ÷´‰ÑÜÜÌ/#$¶HôRMÓqåVa+¨5C®¦©©¹¹™Õ<¦`nºÐ—+ÉVɤ½'d²¸¦ç’¤^ÈùEŠøýhgÊäcž<úXê?ä<²dEÄwƒß½óö‘ÿþâë[·o¦¬OÈÙóø[€g™Q¦eÎφ°L[˜Jê•Γ¾±EHçð’™×Õy/Ì–§<ò<Ó¥ ­ŒçÑÚÉœiׂRïÚÇ^‰ÿ½çÞ:s .Z0­´» IDATzAXÞÒÐ킞;«¸+Eÿð°ìYñ‹ÿÏîÅ?Ê‹vJr_½ O3Zþ'OY˜J5(J÷ÎüO©Wf+õ$鬔^豘]&/2#2c‰ÙL¢‹mÉ<ŽKY‚H+;T”JQd{<;›í~Âã <ðQ‰ïÞóÕú¬t²PÄAî ÓÏ ¸yÕ¹`®Õ¸L_M|^@Ìp¥·!AWâx|Özf iÚzXSk~¡V#¥¨É;“+;ÐÒ¢‘Rà#õuPþVâWïym}Æ»™ßâGøªèóùámðÍf³ýmz.\´ôÚæ¨¯ò¢¥Àت'IHæq ‚ ¸¢­|’Ôkýs0ù[¶zø[EÜ™<•^,dqò˜þalcíaY…”¢<%‡ ¸¼d[ÁI;Ù¹’€zÏ¥uû)à€q¦AAæ©øÑ´çß±/zXÓÝÿBöçÕߠɨ ;ññk…#ŸÈtÝKá´ßÌqúÏï£ø±SõæÁØçl²½â¾ÈäMÓÛPw½|×þ”ܲ6”Áx~ÈLÜKa'Ìccc8ççMÓoì«Zº<úI©dûÏcéOä$ö‚„(~îÊWñZ'.V,ÙÒß7µ.s2v$eH×&­MðP²â#䑉xÝõr@(:ô­»^î­÷™{~ܯ}þ0Ïù!2sà°§ o¾þ›¸NúÑàÀð¢E‹»»¬©ë×|súrÆŽ$‚e–HeªÁ {œ­îzUcÎQ“êåªúnQ~<´ûSªMZ‡·ø„K~dú8ò‰ (~w‡c_Z½}äûù÷}¯þ*qMÂæŒÇû¯Æ,‹¹|©‹·2žÇUü:…ðkurWÇÙ³Gv ß ¨=]ñ RÕœ …{ª(wóœóC¿»Op»Ã¼öêþˆ!þæô }W–/_~éBçšÔ¸×&ED´ÂEæ.s"•Ñ(¯— ä—jóãñ‚CŸA¦œr”®Þ>öxý—o…=$ÉÛpüKÆSÜžnkBÒªø„¸ðð€úG´MV| ¹;yñùÚšÖîß¼ŸóCî.ø\D@œþóû¸à*öU‘©YyŒŸt’$ÙôÁ¥¸Õ±¦$ÅÄ,õc´S¤ªÇ‚æpbÿYfSZ¡PX 5Œò9çÇ-kç¡ÿ‡ý€ !ÁB÷üÞ=ð‡ØÈ´OsMŸv……‡ î~é!76**ÊoOe2¹¼Q··nùÙ>EBœóCc¡{~a£‰›¶¬þê¯Öðˆ°ë×Fw>÷à’%‘ÑÑÑxe èó!Šß¼¥÷òÏÿ«“$É{“®oû1‡·êÎxY 2-Ïù9¿9¨l›Õ°VŒŽÐtnogÎþàò‘Ÿ¦Ûþ×6…"BÅú8šn« Êþîz9N£ øMzåQýW®‡ßÛ“¸êlˆ‰‰Ák¹»þEI5MMMM)E5(ªB.Ì·Í~maªßöDZyKKË4E< Û*³³•ÅÿT1}uÞ"홢‹Êìì@îpß(??P5QÄø=I/<-|L†3ÏÏÍ£b~ '<†¶J&½Dg¥­º±X,.ÑY]òèt%‰Ä‘>Åߪ8¼ä‰²V]‰Ø9ܹ³ñbqåꌛ÷ÓVi;^qe›g?d•j/z·³JÑ@I5Õy=Ž:ý4žé=[»¦ºïn¡=ÝÓfíz;7zòª5RÛ=„þ1î…âç±ëú âÅ’Ÿâu€ÌŸÏ…^ËEÈMO#Æ1jnnöt§HR¯hMgÒÛëäYP*⃹VsØê”ç$(›4R’l¯ýÐ8¥ß ÿ«2¶êI’±ßXUPkæj ùР¨2:צhM÷tάº¥ž”jšš4RR¯,ÑÙ¶­0V)ô$)Õ4WnõÚl•BO’¹éB¯Æk ù`ö4ž¦Ûª jÍ«ijjnnvXÅj¼UW¢hàj'rz³Ù[»¬ÇÂjƒ0=—$õÎý† øMuLáÅÒgUuÙ@sñ )¦qoO’Ô+³³³åuæÜŠ–ò4oîEI+Ê„L:EI+ªó8L³¥Ç)<Ât)EACëTÆQý©Êf¿RO¥*Òt[k$ó„¼d¸hq¨²Íxw²Nš)Jš.¦!óIƒ•¦iÚj¹•Ê‹céGYËE°•õfl`*äâ× =¿Y`täFoçµ+–›#ßAߥ°ÓG®ýý v âÉ Ìù Ÿ)ⓤ^{¸—q,kjÍÀ/Ôj¤ÔԤϋ³/0i¶¤3ÁçÅù•/ŽÇ·­‚ñ¯­8?¸†ØÊ¤\Ù–”ûØ2«ñž­LÅæIm˜R…Š_`tY¬ç¾èùä#Ë훿5Ÿ5¢ø!^}¾é­““§,L¥Ìµ•¿œ\´ôÚ'á’y\ïÚCié¹à]çy»@«rª“+Ú:!äþço5Úâoq Âa[«Ñ6aÆZ–—lËü}GY…”¢ìw ,Æ3‰¶®ðió¤ýìíXœmpô6Œ•¡ððŠ_spÿÇõU_|üŸ_Òãa#a_„}@P#Ø7;ÓÏ ¸yò\’l¯ÕîaYE.IêYÚ‹| I½"+°G Nj²²•zÖ967ÒÊ[´…©íur‰D’­ÔSRÛ¼£ÿU9àÊh¤S§?¿ÝL~½2›1à€Œëp‡S)J¯ÌnM¯ðæ3²Ñ¸ú9–_fg+€_¤ÌcÔ‹Õx®ì@E®¹NžíHôf³×ÞóXXm0¶6ÒÛ¸i¢ß_1^Rʳ…/³nŠzìKkp¦ÈTÚ.›÷ýâh±x4üo°tüa&1æ~êŸ^ÛŽ ¢Úÿó•qÛÉÚ1çÇ8‚þŒ‚666æççÏÐŽØÌÜ^äN}Jo«ši˜ùQ(:4©Í}¬º’‚Z(:T-ãúêó·Þû#nl™™™èù±PõæÁØýA.ئ|½âþÅ)›–MoC186 òún<¡ÁL?ç‡vGÏ•U¯H®ý0Ô‡iºíÃÚäŠã“((~nWýƾª¥Ë£Ÿ”J¶ÿ<Ö‘þDN“kržyŒ04ªàœŸu#‘Êd2F£Ñt4§Q…òÌÙ½=§qç”éÝ„eV<ä ˜G1gÁx~.ÊWñZ'nÕ?lÝÜß7µ.süëSa;’žÈYíÛÏ !IjL*ãÇíÚŽ$qÛ»ëå»ß>µç€iÛI—üLpƒz»5ñ‰)gOt`Üãù!xB\êêEñ›àÍ×—ÀIß"^´hqw—5uýšoN_ÎØ‘ÄØO¤2Õ€àÄ6“]éT9GMZ¨—«ê»Eùñ`ÐîO©6iÞâ.ù'¡»¾j´ü6ä~}pä¹[÷^8íç?§ÿüþ<¿c_Z½}äc-̾W•¸&asÆãýWc–Å\¾Ôʼn[Ïã*~Bø5ìÐÕqöì‘Ý·(jO@<ˆT5'„B¡ÃôƒZP—t¥/TÀx~È\¸÷ÂN🱱±y(~A¬ö|íÕýCüÍéú® ,_¾üÒ…Î5©q®MŠˆˆ¤™»Ì‰TF£¼^._>ªÍ÷sü²»^¾«£Ð„ʇ>‚ 3.x×ùVøÐC’¼ Ç?°ÄÄÄôt[’VÅ'ÄyLòùF´M¦;Á²ú%>_[“²_ë纃Zj“ •/Ô˜öçüAñ›A*öU‘©YyŒŸt’$ÙôÁ¥¸Õ±¦$ÅÄ,õc´S¤ªbûNæpâÁRÇs ¥PÃÈ™s~ÖgQ 'tgßÞ-´?퀨†žÿ‡ý€ !Á‚^ðòî?ÄF¦m|škú´+,* ŽÌAºzû´øõ^¾ñ9t’$¹"ñÚ£.'nULL ^Hàs~ˆð!„¹Æé?¿¿ çühšê¿r=üÞž„ÄU?xd*2uÿûAB‚…ëù©‹š(büž¤Á‚~Š×2pÎABŽ…ëùÅ®ë ƒˆKPùôù=¿Ã廚››ßÿýŸüä'>² œ>^¥Rõ÷÷——•Ÿÿúò9ãÓ‹Er¹Nü}w¾¿µ€ìêì~·ªý¿¿6 Ž|»sWî<°lÙ2¼bùáó1áÎÍ[ÑT–F4m=\ZÕV=m²œ/Œ¢­¹/xv jAñù½{eÐßš»ÎÂ]ðÂår~øá Ê×?¸iItÔc¢G³v `ñMãÙOèÅ#?ÜšúôÏÅkÖÆ¯MZÿ“¼—~üãgffⳈ7fzo϶J±D"‘H$âÊ6ßé4ÝV)‹Å•:]‰D"‹KtV–€æÆkÛI2·Â¦Á•˜ˆ›ê£Ú6šf}íÜœÃ!#I½"«ê uÆ‘ß÷aŽÜóý7•›0»­Òn¼UW"–H$Îo=F[u%%:+M€[NÖÚü0J¤2™´ù‰ø}Añ»û\¼™úÐCé™?|èQ.ŒÜ¸néê¼~}ˆù4kÇEé‘á¿îe½ÛB­w×ËN¯å¬ؽ†}ï®—ã6žóÆÿ›‰š­º¥ž”jšš4RR¯,ÑY}§IêO‚²I#%ÿÿöÎ>¸‰óÎã?-!qJx Y!ø0Q2ͲNO©}3~­ÇçpØšã›rʵIãbÜÃå’q½“éLÛžã¨Ýú%jzVe¦®#L8Uq 6wÅTzOͨ‚©" ûÂk0`vï•d½¬dÉ–Œe¾ŸÙñ¬ýžßóìcIßý=/û0g;Š‘aÙ€$©"ŸK ¸X¿#JqÖZ=¹;ŠMÞîcÍ’”hLvsb2ö1ËSªÚ8¯lI/¶îètëk͵z²7¶ŠM–¡PÏ0g;ljhÜyœ Y …YªzÃWâ—6¼×ý;ÒÜ{~Ëf]î*%åö퉫׮޾3°y!óŠU;ÙM¡]—{jd”ˆˆFGÎ0gzNx•óS¹ë´ê7}J/° :–å©ÜˆOb:ˆùRÑó)ËcÎãnŸPqù’ä>î“åhéJ.Iª0Ug*édˆ/.‰U\ì\¾â2u9D‘Åi4y }}ñ(ÄÍÛ“±hÒÛTVÀÅn™æÝ\à€(GÇérˆhØ3&Ëʸ='9ºÌh–aÞÄ/8wîÏkuYŸgŸž ¯_ýôÓ˟ݺl¶þ¯t×®]óŒ|®fþMŒœý¶ªª*E ý6c‘!°¥ˆÉ)°ÂïÈ)°uÝL·otƒ æ›– wh‚Ûs!VzŠŠ› îLJ±hÒkîí=zô¨__¸†q4•59Ægã¿]é‚Ç]‡[ˆ_šröÌÈ_._ü[ãß'NNÞÕh4—/_¾xñR qÃçu‹’oÝú,ÜEöúÍCç½ä=?´y}QÐy¶OÕDQt¹jGø©^P xWG•T…¹^ ŒTŽù­ÕéCôºµ±Ò#ˆH×hòò+‰abüÅÍw'¥ØÇìZLÅ,L8§Z¦uÀ^™ïUU,ñ™‡øÍ;Þ{,Úò5»{÷Ö­[ay7o~ŽeÙÓ§OŸ8q"ä֒仓wÃKòu|ŽŽPy¡ œzNxGG¨¼@éôôv™X–ãêmþÎQ€øoø¢"‘8à`}¡!K£‰–îÏ7ì÷¥SŽ.+âÇšÛ¾s£$ÙëÓa[Ze9zqyù•>·bkÈꂘ 4ì™,3øÝ“b³i±hfÖCã‘õv8¸/š%HkÚR‡/!+NKI–dº–¸e »xñCï¾ûîÐÐÐÿˆÜÂ=¯¤ß»wOYüŠ¡ÈX×/-·ˆ'íºÜSýÖ~[n¯HßS~ÄeÕ:¶Ÿ³…MrŸíÉ0ަ2‡ïSªL1¶›=ÅMMe"©ÂÜnô}ȳ¢¤+7—XÎ2Ñ¥4YƶcºÖ’F‹©ÌBDDæÞ&†[nûN½½Ób*ÛX»³Bê´O§@ÕM;ïè´˜Ê:îmy!¾HéN¼±Ý4Än™p3‹©Ô2µ^"ÓP¸±Óí#-g4ЧŒz0ÄP7×-¡âw_ÈÈx$ãÑŒîƒ=UÛ˃ӟ{î¹¥K—<ø¿°þbÍš'³uY#ç¼Ò=ùáGŽt’½~s÷þîÍ{LaçDD¤>ï,Ô˜oöʧL iP{+¯¡ïhCéD9¦¶¶Ø½s‰§É2¶÷ùçf S¶}jç¡öñgl7³KP5V1‹Rí˨EG»UCüæË—­Ðe?ý¡ûìЙgs7­ ~ë™gžyÙôòõë7³uYD4zþÂ’G—.[ª²Â][P¾iŸ¯£3øœH[P>´ã$©Êh´Õ±Ôî*šútô³¬Ðáâ ¸\(àÙžI¡Ç~ ~©åɵ+õŸÖóîè?¹lù²§´+ƒß}*óɧ2‰ˆÜ§†?þè† ž\«6A[cuÕ¨œik¬¢ïÏóDD/º A÷¸Dü—bCóÿŸ"0g<ÐK¾Tø<ÇmùóÇ=¿éûøÏÿöîÕËŸý¯ø¡kðÔ“kž4nÆgD#¥ëü¿ä³õï‹ÿÚðÂð¹~ÝõNÏïƒßú¯c'ÛÿûåKÿò¶/ღùФ¡ þn{ÉÊU+?xÿÌoŸüÏw²D‹1Ë–-_óÄšçÙ/ä—|M¦c~·GiÄG£ã?"¢‚v}nö•+WnÞ¼)IÒ"†ùÜ’%+V¬X«{úCÏ'P½1^ÿšbþpò7¿‚øùX«{RfFr×ùyc„F˜WLNN2h’ó¡H# ~$Tïç€ø€ø0+Ò~Ìï;»ö'd¿·}þë ¹`̈ß\óؽçâ7¾±èüËAŠb>(¿9¥æÛúõ´D$˲Æÿ$ßÛ·'n-[15 #|óhDVo—‰'ÁZ£ IøuÝ/Ùþ¢>fÓÿ¸N""ªjg÷°N§@MBŠVÀóBç¬óâweùÚ«W.Þ=m§±ÓK¥+K–^yX{ý‹¯>öøšåQg"h ʉ?á­ñ«Ÿ÷D• Ù¤å]³Ñ £Oòœ['%G{âQÁÀ“B’L€ø€Ž2áeü/ãoþé{Í—ß~êSñ©G'–,ÉXDwWÝùhù^ó ³ùÓK—¢eÔÖÔæî³:ýcÝ—[[£%r ¬à Ä‚,ËqœàT^„¤û^x»L¦©íڃĨÈdNùñ%pÇqœßMP¡!ç$ûBºîº CóN+œ‚ÓÛebYŸ}DeTR@ÜàÙž@üµxÙ¢w^±}Möõ‡‘•gŸ£;´üâŇÞx#F´Td´õ+¿øÎ~›±(4ZòíI+Þ3déò’¶ |H1öžè9Ã0Cç½þx± ró>o—Åï0ÌOhÛDQE×t!š† ¼«£jª3¼~lu< .—ËÅT*™ŽùФó´Ûó½÷Ç¢½¥ºWû=ͽŒÉŒ¯ü`»mב†“']½úú•ËTA×[Z–rñÚêÕKcª_]¿“7œý6cQØþB£#§NuoãöIRÕ(‘¡ |Èê$Cö‰ÚÓ¶§ÇrÂ[Sp¢‡Ê…`í³ÕsÝD´iÏa¯Uõ£%ßÑÏqÜŒgר15²Y™ÈIó‹SMk° ÄOUábмÉLD´™¾ûâ›&“©½½]§Ói4šÇÍ{‰hù4RbzÝÂw9Ï÷ ½.¨ì­g ‘mAùßå,ï¡rÁP@þ„“µϗÅ)˜‚†Ãü‘ES—‰5?4å&^ù›y^Õʨ¤€™ÄIT£o½º#¶ÁzÍÀÌXh‹ÜW®\ÙÚÚúÚk¯NLLÄ—I[PNûë÷«u]uŠªÇÈHD^ Þ7†éÇç­ÆÚ4èèëFí2ÕÙâ¨vhÞ”3¢2Ѫâ"Ec~K2Š}„ÙËò`KqqiÅÅ-ƒ²£%Ë´f±³—FP\Üòé³ñO¹)r>OJœ¶sS¥„J™'­ô€ŠŸÂâÅ‹u:Ý7â´×”o’6©J˜ï :6xjI°±v]®%£OžŠúYS—WÅS`YŽã8®ž:”ËÀ»jG¶²,Ë“ÐaT¯H´¼‰Æá™ù’îö±ŒÅ±Õ\’Taîí=zôho¯¹’ì%õ¶±Tý)»Æ+eUHR è¾¾†<ÿ¢£4%ìw\¹Ò¹¿®yRÉÜÕ!''Çb±ddd¬Zµ*Þ<Ú««&D¦–:Ö¨x—+BY‚—IL½ óá6,Ñ—-ÈÛTYªy£×!ü¥ª‡i}‚X¤b߉ÉY*ÓîæJG“£ó hlÈ#"Y;T¿Ãr–‘¤Šæc»Ã~@ey°µ¤Ñá_'ZaîÝͪßÑéÖï<ÐfÌÒȃ-%Vݶê¬D~y=‡ê›,g%i£Ï‰<ØZÒh§Êæfjl¤æc»9«UdMò4Á5”6nÔG/q°¥¸ÉÁ(÷{~édéw-n7'*) 9K”\¢¯Úþv›*¥ÂÜçk^ߥíÜ9l ºäÈFVüû œç­ÎŒU .º^F«†ê J¢zS'dŒÈo.9ç >n&_½|+,?Ð ½â¿›“±é]pù’Dö%n[wtºõµæZ=Ù[Ũaœµv£$ÙÊ4êæ¬çѸgX_hHHùÆqœšz­µzrwƒÓò•&²V‘5ñ׿ÑÁ0æÞcM…ÑJ³íj´ëk­!h¢Å‰Äí>֬IJ‘w J)M¦ÂÜÛk®`M»lcÓ^ò šK£É‹]D[^õ%Q½©2Fä—rº~èÆ//¸¤èÙž7oO&Ñ›,؉(GÇérˆÜÞ1™ËT5ÍÔå)_ªLCáÆN·}@lÈË»à¡Âí™ *I¦êL"]‘Û>0¸›ãüéÍ»¹hµšÒ× šÈò˜g˜$i£nmHzè5Ž9»‰*u™áÕH´¸˜-9æ<î–¤Ê|Žˆò+$»ý¸s¬º:3Ê%Ç/ZÑšk¨¹Õ>ª‰ãªMå#4>íÿâ—ø·J1/%Ró%}ÕÁI)9ŽôºµAAS™ƒ†Üž DaR&Ùêwtžeb’üê§ït{Æäµžá]fJ0¬VYª5¡ 7Å®ƒb“”â)E­1çi_ŸÚ "1VS'd ñ`“Š1¿»³?qÀÁ0”£ËÒhdy­NO’;¤-xRž,2wºI¿Ójòìh´‘F“e(Ôwvz.ŒÓñœüöäϳP­•JMâ÷3ôHJq¥Ý^ÌcT¯}šOEÒõ;‹ýüHfü—Lñ»'Å>bg—åÁÖF{ ÇO‘1†qXÇ hÂoá3 …z²ôääsIo´(µR©‰F“—_I ã}ƒLѼ {Æg[œOáÔ\œ ˆ¾Û‹ø‡B•«PÜF» ¡~E³lê(‰êM1Ä€…OŠÖùÝ™”bê_iÆÑTVVZZZVÖd×ï<t“žel7WHg-&Õ%€ÊìP†q4–X‡õÄ0ŽÆ’ÖAYö©ŸR }êµm‚¬ñ –IDATŠVnûÎ’äh*Èo®¤hÞš+ÝSY´eŽq'RfuÓN=¹-¦²H?ŠGSYY“Cª0·x(·ÝçÖªÛí*‚Å)F5fßÔÑ£5uBÆón}îWk÷¯#ò½÷ÞKôI+Iá~• @œðûÞV¾2~ΰ1?%ŒG {zzjjj"ûKÿíß]^¹mš¼öÃsðx3e<Ì]Ù¬Lè`ðÒK/aÌ€$Š1¿ûáû~]ÊxØY†©LQÜÀ}"íÅï;»ö'd¿·}þë $wÎçÿü?V’É)LÙD`(šzñv™X–ã8!NººL¡¥zE¾¢wíb뺙î:ìä¼øíÄoîèøä­Å˽óŠíûk²¯?üˆL""ççè-¿xñ¡7ÞˆžÕÀwäî߯Eל¶ºþ"Ql3ÚêXßIðx1Þ5ð.—(Š.Wí(ÆVÇ“àrýñ¿|#°)Ÿ³ßf¬ƒz»,6c‘A9å{ʸÄÃ{†,S{HEÑÕ‘»Ï_ŠS¨£—(Š®ª›¸@Ñíí®ŽªùØÙ›f¤h uÌÓnÏ÷Þ‹ö–êÀ{š{“_ùÁvÛ®# 'O>ºzõõ+—©‚®·´,ÿäâµÕ«—R,ùÅ"å» boŠnìà DΠ“¸ßõv™¶î;Ã0’TUD¤Uìý¥L¯[¬N2œýC¯›"·²ÕsÝD´iÏa¯ä9uª{·ŸH’ªFý}²i(2ÖõiÉÙo3ñHtòChÑ ‰1”ˆß¬˜Á ÷æMf"¢ÍôÝß4™Lííí:N£Ñ´ˆüx°Hú˜_œjŠXˆ÷?þK¢}ëÕ± ~üÓhvæ…øý¨ùç± þ¹ñŸÐè`‘¢1¿%‰}=eyìPýËY†ˆ$iãÎmÆ,šÙ`kI£*›íÎÓhñ?}Æ; ÅïGÍ?¯ùZå´6Ð?€˜/ËXœ¨òuºõŠæÉòØ¡úÖÁ6(ê$mÂËÏZ×|­rÍš'”ƒˆ^yåë¿ôš¯UNv(c~Éõycb2öj~Áã&¢]&‘F“elo(ß`KqiiiiiiqqË ,+‰žCõ¥¥¥ÅÅ»lcr@Am»ŠÃÌdy°¥¸¸´´´¤Þ:áµ+fÁç‘’æpÊx°E5 i&~ŠÂÑÖ­[·nÝêpü¦ºº:ðWI ذPã¿$:¼91û6Öhòò+‰a%õ1S³íj´ëk­½Gíëó)"Ã8ŽSS¯µVOî΃¢b)¶îètëk͵z²7¶ Saî=ÖT˜è%¨:TJoÈT€ô?":÷áÇ&ÓËDt("2™^>÷áÇQòy»Lþ õ¼]&6è<Ž}öˆ(tÚ@ ±¹ë̈tÀ)z¶çÍÛ“±0û¼†>s…Ä0g-¦² HkÌy܈HR…©:“2u9DdP¸;åè8] {ÆdY–Ç<Ã$IukÉg7ª¥7ïæðÉ÷‘äÏö|nÓ–ýÿº%ÁLÚu¹§”=èhtä s†”Ý{FGNåÍbç9c›È¼]¦­Â:<÷¤8æKú˜ßI)Ñ,y }½»•i/ŽÆzݶêL_whÜ·ÃŒ£©ÌA CnÏ¢ÌÐÞÔ™Ü_‡;`!F~ž}zf»ï8ûmUUU§FF)dž@ˆÀœ+8½]&–eÃöIp ,kúÕhPJ`¯"o—‰e9Žó{ qâT‰ƒUÌ @Ì—ô1¿»“RìC5—F“UÝÖ\!IŠØ­Õéã,p­NO’Taî é IwÀ|¿s~¼áÙ§÷¼Q¯¼ÜóF}ð+göúÍCç½Ê®zEAçÙŠÕQ‡KEWÕM©­Ž'Áår¹øƒª¿Èå²þC6Ùê9ŽåIðm\îÛTV<¼gÈè õ;9²Þâ6§`YÄ%Š¢k*^T1 2þK¦øÝ“bÁƲ<Ø²ËæëW CzÝZ"&ËP¨'öŒOSœbÉ0ë¡ñ DßPâ€èü NWܧOë€yÂ4Ýžï½?í-ÕÝŽ6<ûô¹?Þÿ¯mÊËÀÉôø:>×P¹ÉP@þ„wÝ•›´þ÷GˆuýNÞ` "2vXCvÀ;ße²àâiÆ6‘78;´Žœ:Õ½ÛO$IUJ'ë”íº\Q´¯ß–ë+nŠH3|¤h_BÝžMÞî&O}IÉY†!"icí¶ê,†ˆ²ŒíÍžâ&S™…H’*öýR4'YÆv³§¸Éb*µ$U(kõ¸í;7Ú;Medn®°7ÚýÆÜöz{§ÅT¶±vg…ÔiÏ!ú@ˆß 6óS"¿­[·*²íÅÔBC‘±®_ [n¯(¡UMƒbaëéÙ|*×/j¡ŽzÙ&bð¤$æKú˜_Xl7½þeÛûÔw_Îkè;Ú0õò…¾¾†©wú¢[†» 2I7ãvnÀ|Œü¥ntS™IäG”½~s÷þîÍ{Laç!òF`¬µ*q…Ìnñž"*ŠÁidxz3¦HÅ~~=öÃhXÒCü:²ÏÔnÊh+J<ò#mAù¦}T^  ;'"ßÑϲÃHRUGìë ¼‹–µüË;µD¶z®›ˆª:DƒŠŸ¨!`œf¤.þëH)ÝúܯÖî^ÿÆ,ý¬åð×¶QôÅ|DDž}O8é¿ïmå+£„z‘1Ÿ2ó%ëéé©©©ÁðÌ%/½ôR’#¿YŒù€˜0GÌ£1?Ò—TŒùÒFüf3æâ?@š‰ß ¤ æõ>{ƒJ}‰GŽ 3ûQóϵ–£ÝÁB"Eëüi ~FcµÍvhÚ튴–Õhw€˜°ÄOÑ?4(x0™Í˜_WW€¹äòåË¡¸ñ_MM š€9æ'?ù Ä€Ù2›1?L`œdÐ $%æC;F@üH©ØÏññâÀ¼!óaµ?ó ~,\0æÄĈ Œùñ1âÀÆü€ø€øñ`Aƒ1? ~ æ@üxÀ˜?ÿ ~,h0æÄÄ|ˆóââ?Ä€ Æü€ø€˜ñàc~@ü@ü€ø° Á˜?ó ~<`̈ˆÿ?4ó íÐ<’ñè“YÙÏdg¢-ˆ“FÇ•¯Ìä䤒2:~);ó‰€Áèø%" NÌNŸ>ýÿÂTeÏÿŽ IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/proxy_control.png0000644000175000017500000007005712032647206024007 0ustar ebourgebourg‰PNG  IHDR«Wú§UbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ  ü¶T IDATxÚìÝ_lbibçý眭H‰67uõʸ†Dc©ý¢(ÛÒø2Š ƒJ£I­ßÈ‹öÕì,rãÖNË u¹*†RwŠÝˆÍöûFÈÉxkZ8Ùsd]N2´,líE.-9Ê.|é›ògºŸó^ÀpÀʾùÂΟç<çœçüxüp¬|ó›ßt»Ý¸Êåò=·Û½¾¾N]àŽP©€0@HÀ  $`àÒÝ럤ë•ôB¬ ɽ¨KQú§ÿ°ôÍϼ?ÐTóô,¥ä ɽ¨STÓ ±žyälxkcÑÖµÑîM[œùŠé•”/®uïšëm C\¯>`µž]NW/cæKÒÌG:ñW¡ªZl!]ÑuN,€këÞË(ŠkmM1¸Ãøá¨Œ”ØÝiÚÌGBÙº(”+Q§i7êX3_]¯¼ÈÔ„ªúÅ5—ÒÞÙ2gÀuvú€§C~)'˜Y×+)ÇãIUt]oæ#íß;oy½^¯×Û5±™x¼^¯'U鬰’òx½ÞGïý¿ÿ_ÄãõzS•Ó~ÜÖ:#ù¦Yç®”~·³û³ÁZ'‘ ¶¶ÞÞVi=ú/) µ¸6'Åi p°®7wVcšª ‡}zÒ™;«¾P¶Þ.¬7ó«]£‡UU‹-¬æ›º¢Ø7¶Â³RÕâFèlæ#qM•³á?ÙüÏ;„…òéøŠãúªB½cŽÅå ù 7ó«Ë™NaT-Þ¸»K«(¿üبc~ÎØ¨õµqN 7p„ªjqŸÖ?UÈ‹ÜüÙ­¨RήÄ~¹mÐÌFøTU-›=3R¢ò"SWUéO쯹„•”'®Õ3/ªÁ5—¢Øã+Ë™BlÕžœ?ÈÔ¤p´Ö¶ògb…öø ]oÔ¤ t:z»9£[á£ål½U°Ùpn3h3Þª¾ÈÔUÕ˜Òú¶\¡\‰:¤´z3ÿ“L­vºÑÊ‹LMŠ@hqj‚µqZ ‹ ×§(r6¼µ·´)Ï,gÃ[í¨ë•rAH9»ò¤]OVf¥…²Ñ_«Ø‚É€ªÖ³ñl]UÉÖÚ:=»­Ùê‹l]u¬<1M–Šb nî—J¥„_ !êÙPkàBkëþV„uºýR qÔ86/­b †Îl´¬©ª¸Ïî‹Õµ`ˆ}ÀýŠíï´]hê§ÛrøÌRú“&G›±Oµ²ÏQëί®µ„¿×TéO_ekeew@hZ¡\]s¹ªå‚”Žù¹©áes­í—ÖZßÏË$v¾ñ‡_=Öª*äiaúKÛ³Q!Ôžnç±Ö€±ðmqÔ8.c`Âqãèì{z%×T!„ªÅSîâivºý²P(”+QQ.Y왞2FPÔoÄׄRήlõvT|TZk£¹üÑ()ü=ã.Æ[¸µ_œjf¨g^´¾^f ¥=ZÐÌ¯Æ RΆáY) ±Õ|Sï,ûdÅ¡ªZÜ×TÕ|pë9 ‘ÎRBˆãœñý¼}[·^àl(®©gÆ](㯠ƒÜæ>`ç“•ÙB¦®Å½­±jgX°®7w™ºª:Âñ Ë6·r`Œ^˜k%˜š›ŸÍÔêª*gÃOœC6Rˆ|Ù³“Œ§FLõn½óÏðØš&„r¶gÜ…süµÀÔm~x–b nì%; –ÒŸÜÛÚ]oî¬.gëªô'ŒG7L-ÆÃ³R­g—WwZÏßš›w!Dçyd&ëW\ѽ­ðìéÓ1¤ô'Š­Ñ=[·˜Ù[këx<ÉÚ`šâÖ××××שˆÆówkÂÑ?ô7×óçÏïQ &ñ·=FBøCÄ_€[†!fW—³uU1è;p¸¹èîeü“‹ pKÑ 0@HÀ ¸ÞLž±»»K½àXZZ:99€Y©/ÜhÛÛÛ¦Ó>¸?,_±?þ„ÀÉ|ÿ»ßôÖµþÏÞÿã:99¹ÿþ wù&n›á£ HÀ¸[HÀ¸[ŽÖõJz!&’{k.¥kJÙ½u)Ê–ððÙ»/½~:wvÊüëGï¾÷gê™/åïn˜þÑë§sâðY×[¿»Qí^i{ÍÃg¸Øýjm«]<¼Õl(ÄÒWy-QÄÜÓׯŸšEäÿkÀt!„ÁV¬ýb;ôíg‡&¹sä â‹íÐ{â£×Ub/À•1 BUµØêNS×»'êz%åñxÛR½3ÑãIU*)cz$ßÔ›ùˆÇãñDòM½½l3ñx½^'UÑõÓ¥ÎnâÒ=øÕw¬ÎpøìÝg‡_l‡Þ}÷ÝwŸ¶¦¼ët:Û/…øb;Ôù]>{7ô£WÝSN§oaüþ÷û7ÁGs¦Éøìš»¶þoþMìY¨³†öì¡í¿ºÔ»½Å H$üj=»œ®vOU×Úþ~©T*æÂ³RbéN~UU-VvÓëÙÐBBÄ·V¢–I´bt5½œ©9‰°CbgW{¥¾ø»ÏM#¨ù ù÷žŠg¯_¿~ýtNˆÃgï}þþ§ÕjõÓ÷?ψ—–r ã÷/¶³â£Üÿýp)Ì¿<ì«ÙÏß¶ôÀx5÷ôÓ¯gß=g…øbûé߆_W«Õ×íµuoýý¯äÓð;äNWz˜ûàð’2t©×Œ¯' áŒæÂ³ª7:z{MÙgÎNÒŸŒ:éRú“‹SÆ<µÆ!t½R.!fìNûŒâ¨q,œkûûûûkCZäWÝVó“ïokUï>ÏÌ“¡é Áríì*_æƒá¥BˆÝ)wîéGâ½gÛÛOw‡æ„b.ôþçÙNÄ5ÂêƒÓíXÎÄVí[¡ÎD½™_]ÎÔUU¨ªc†nU‹û4¡ªF,¶^"xö;i‡ÏÞ}9éþG}½-8ñ÷ßæBïg¿ýÁ;½~ÐθáwB?ýbié›=í]âÁRîõÒá³wCÛŸæ–ˆ¿ÿÛ¿ù›?ûçŸ%Äï>2Ùȃß|,žþô‹¥¥_ütW<~ö5KK`œ¬(¶Ådc!–IäbÆ-„®7w™šp¬äBåXaŒÍMÛBÖüÉkùíºs:Ìí>~?øÁËçs­=÷è÷r‡KO¿¶ýüýgOçGÁ÷^þ½Ä×¾þëÁ܈üý`)üλ¹Ã¥G/?x'üúÂÊRè°ô<`EqE·VµZ­5áM£&„˜±O·1E±ÍÍ;TUËíSÞÚ7á&7÷(˜7"|±ÍwÆ >{O„—–žž‹;zÿó—‡}# Îç—ù_7F1<øÍÇŸ¿ýµµ¹ÐûŸ¯:W?ßmaq)Œ“€…Š-¸‘ œâd@UµØBîÈ!TU‹-¤-FX[p3á—õl¨ó8ˆWesO?zçƒo;ÎoðÎGFß«ñp³§s¢5¸3¶÷Áo>þü½÷Úaµ+öO“p:ï¾':v,å½lOü ‡Káß•¿öø7;£-,-€Vš]_____ïž´»»»´´trròvKöáÇŸ<{ÿ{7¾‚MŸJ €Ëôôƒ?zöþ÷¶··ûcíóçÏù¯È—œM:€ð6Ý£ .ÓÜÓ×Ä_°e'''~ü  w"ÿ»ß¹ÿþm °EoýÛx¸}ø&HÀ  7ÏÝzðýû÷9äw}À ·×ˆQº^I/Ä4UBH9»²µ´)Ôn®a}Àz3¿º+ˆ@¢X,•J{{q‘HWtýZ퀮WRÇ“ºnÀÍKÀÕ™ºª’Q—¢!ÅÜ\3~BTR¯×ëõz=©Jo­¤Œ·"ù¦ÞÌG<'’oêçBèz3ñx½ÞN´í,˜ÏG¼^¯1s§‹ZUµØB+kk•Í“z%_‘0:ëz¥\RúÝN“w›ùH\Sý‰b1áWµx$ß<]£ªÅÊîb.<+e=ZHˆøÖŠCÔ2‰f;ƒŽœ§š^ÎÔáDØ! ±tµ{å"^Ì…¢–yQUWt/é—RJr/êR]¯¤—3µv¿õþþidÄdß„ÓõæáA­Žn¿”µƒÃNº•ÒŸŒ:Å”}Æø}cqjÊ>#„¨5Þ´×0|#| 1cwÚg„G§ŒE¡<¨[WUµØj+L+ŠkmŸ( €É°oµ³ºÒí…•LÕ⾸¦ªc­\Q\Ñ­•Y)Õz6äó¥*Œ|€µ¬(.w@¨ªV®ö¿9mwœà°O_d©¦í!¥²‘ Š-¸¹¿ŸðK!D!–fø/,%`!„óÉʬ”…Øjç j•Tª¢ëŠb››w´Âqµ¬©ªc~Îvqc :ëÏí[ŒËB5ÎÎëŒ&ýR ‡ÝÆÃ"ÐeØó€[pcÏž^ˆeC¾¬B¢¸¦(B[p3ÑðÄã>MéOlm[¬Öú³!oVßrsŽË‹ñ•ƒåL6äËHÿKßüÌûƒÖŒ…c%¾hSªfœÈõõõõõõîI»»»KKK'''·ooïß¿Ï!¸#¶··ûcíóçÏù¯È¸[HÀ¸[ÌÇoooS5¸+ xii‰zÀJÀ·ò;p€qÀ $`€ €0@HÀÀõLÀº^Iy<^¯×ëõz<‘|SïLôxR]¾àðyFάëÍ|¤wëï…ÅÂàî&`½™_]ˆD Q,–J¥½½¸H¤¯,Dêzsgu9Ss„s£·Þ“q{^*ŠkmÍ¥(œwǽq¨¾ÈÔU5ˆÁQQlÁÍ5!D ­¤ß]éåL­ÝNG2À 2°xww·gÊãÇ-åæáAMÊ€Û)„pûe¡ppØ\\œB!¥?´8Õš^(W¢ÎÓø8eŸ¢6t宵ý„ðĵz6äË´ã¬Í…˜±;í3BÔŽMÝ95f]´ fŸ¢V(W¢N§8n )gíÓ&eSU-¶jßÚX´µËß_ix+–––NNNÆKÀÆbÝ/ûWaŒh$èfŒUèRk¼bH$=T ªBŽØ×Ú~1jŒyheЩv$û4¡ª#7gÙ™AŠâŠn­-gêõlÈ—í Ûè©1¼ÛÛÛCÞ1¸'õƒ4M+W£.×å¦í޳ý¥û´éŒû´1„7‘© ÇJ.ÔXŽ,ì•¢Ø7’…X¡v§í!kgF8\ê×ó[ps?hŒu.ÄÒKQ}ÎÀõ1ö³ œOV†Õ5âéܼCUµrUˆjYSUÇüœít¤ìQã¸5]ÌØmŠ2¨«µŸ®WR‘|ÓØ´±‡}ºk‹¹ãÞ nlÎ䥕œÝv\®¶÷ÖF4é—r`¾À-HÀŠ-¸±— ˆBÜçóùâý¡Ð` n&üR‹û|qMú›A[÷»‰_\“ÒŸŒ: MTU‹-äŽÆÝ̶¢¸¢q‘XXðz½¾¸&gÃa¸ÆëÙ×ë5y¦(¶ÅøŠCÔ²!ŸÇ“ªŠ©î—Ÿàfd\-î+»“~)Oƒ¸Çãõz}¾xA8Vâ‹6¾ pC(ëëëëëëýoìîî>|#•kdÏ“ÝpÝ ‰²ÏŸ?¿G¾]Ï*–Ž•­¨“:¸ÑHÀ#Ï*^£"n •*  $`€ \k×åY~üÉ ªµï÷;œ:$àózöþ÷nD•œœÜ¿ŸÿpC1 bl7«»$`€€;ÃÒ8`]¯¤bšz—ý‰âšK¹œ">{÷½?SU!„”¿öþ§¹¥§ï8WÿLñ»Õ§sÏ€;mŒ>`)ý‰b±˜ ÏJYˆ¥+ºn1=§<'emþ/¶Cï‰^W«Õjµúú£w>øö³ÃNÐÍ~ýÏ«ÕjõÏ¿ž}·=uÜù@×”}¦ëU%åñz½^¯×“ªôFÞJêÑ£Øbšªªª[H¿’¯F¥á¿ÿÛ¿ùõ¯­ýêk_ÿõö«Ã—Ÿ¿ÿÌèÞ}°ôìýÏ_N4?HÀ㪖5U·KQšùH\Sý‰b1áWµx$ß<]¯ªÅÊî—/“?ÜKú¥”ÒŸÜ‹º”‘'æž~ôÎßm!„8|öí¿ ·5¾Ì¿ó«á ~õ¼iÇwÝÏVU-îÓ„r6¼uêzóð &eÀíB¸ý²P88l..N !„ÒŸŒ:{Ö (®µýýµøQPäÿàwœ „ n<Y¬qç Ø¢ž~\]Ó¨£Öx#ÄÔù tø,ûõO_W´^¼ûL¼ú-¶qçÀwž§¡MÛg'8ìÓç-ÏÙÑ s‚íÑ‚ŸÿÝíé_üÝçÁGs“Ìð¤Å67ïPU­\m vÌÏÙLFúAù¨qlå¹_ûú¯ŸM®ío¶Í=z烧Û_!ÄÛO?x§hÇwݽó,l n&žxܧ !ý‰Í Í4(/ÆW–3Ù~ãáˆïÂ=XÊ…Ÿ½û®Óx¾ï¯ýçÓÇûÎ=}-ž9N!įýçOss“ͰC¾ÁæZÛ/­˜Y±7÷ƒ–‹4÷ôõë§Þ©VŸž{~ÜiüWd€€ÛëÞõ)ÊÉÉɇÂ!ÀHÀßÿîwîß¿ÿìýïqHp'°âää„ã€ËÆ8`Ü-Ãú€···© Ü•¼´´Díà%`FåàVb0HÀ  $`€ €0@HÀÀäîYŸU×+é…˜¦ö†f)ýɽ¨KQ.©ˆÆv "p©[À1F°¢¸Öö÷K¥R±˜ðK)¥?Q,–J¥ýý5ëÁT×+)ÇãIUtýfÕÔyJ~s÷àN'àQ!¯™x¼^owÎÓ›ùˆÇãõzé¯ä+£YUµØBº'vbb>ñz½O$ßÔM£¤·-UÑ-.h¨¤N clýtJª2¤þïî’÷ï²õepãp5½œ©9‰°CbéªÓË™štºŠª£{I£ÿxÐUÕD¼˜ð«j=ó¢Úóîi?t.<+e!v([ æÂQë_PÑÌGbG8wÚoÝÌGâšêO‹ ¿ªÅ#ùfo1ÚkSWÉûwÙú²x[ŽÞÝÝí™òøñãA3ëz¥\BÌØö!jG¦îœjÇÁت}kcÑf-ùIé-N áöËB¡P®DNÓù¦ì3BÔL´ÏQ+”+QgwÖÔõæáAMˆ€}êÌ)n§hmîà°¹¸85`mNË»M¨ª¨5ÞaS\Ñ­•£åL½ž ù²þDqÍuÝŸz3¿ºœ©«ªPU!­/÷¦Q5¥Öx#ÄÔ8…éÙå©q ç%À%ÙÞÞòîˆgAŒL½mÓv‡µÞ¿ò+¶àæ~°’òÄ5µK»÷¢Î±Êî°O÷Ä_½¹“ÈÔ„c%j,Ç c¬kÚî8ÛiÜ?¥osãî²õ!¾–+ìbÆ+ŠmnÞ¡ªZnç¸ÿ]g4é—²/§í!ÄQãxÐÊŽÇBTËšªŠ{ߨ £ãvÆ>5I »·Û)s¹ÚÚœc~nèP3%¾Ë×ÀOÀB[p3á—õl¨ól„Îs|¾xA8Vâ‹6EQÛb|Å!jÙoÐÓÁ ¾¸&¥?Ù×e¬(®h2 ªZl!wäc=]ÁÜLjÙ¯SB£ÌZÜç‹kÒŸØ Ú†gèž’÷ï²õe9óÞe}}}}}½ÿÝÝÝ!Ç/ÿùbH”}þü9ÿw˽ëSãY¿k\&ú€@HÀ  ×Û=ªà-úðãO¨“ùþw¿C«“5$à·ì[Þ•ÜY]*üÇÿû,ø_ÿøOiÐ`¸òæ‘ $`¸[Í#-ïµ ë•”Çãñ¤*ºÞÿrâz»¤*ú•íÂùË?h_<žH¾©¿•ãr±;œ6ñ÷Ô ~îH«ØÝˆqõ]Ù=¸ Í£¥>à”Ç£©½k”ÒŸÜ‹º劯ÒôBÌ(Œ”³+[A›r•›.ˆ@r/êÕÎïW\c1ŽQ«´±´ûªJ«(®µýýµ ©öf~u9Sd1êR]o+cïH÷á»Î‡ wÐÏ¿”7´‘¼‚˪s£1¶[8º¼=¢•nwóØÃRR^Ûß/•JÅbÂ/¥”þD±X*•ö÷×.¼þ1ToæWb0 °·‰ôXo܇]½™œv‚vú‰›ùˆg‚~‘A VR½›8’ªôV]%ÕÝ3êõzVsGf5Üù=Ÿôtâv–õD"‘G¤ú"SWÕ@²uCR[póôÄRÂîÍu2ªj±…ô™ÝöŽ˜®m¬j4]'0º‰ÿJNð3ðãE4’c}Ö½Œ{鶢ɀªÖ3/ª&­–Ù5;¤ñé_¶¿•0][O{e±%ôפá%r èé 7þÄ×]cz$ß4–í¬Ùê-´o¦7&àÚ6&àáQrÈEØs­öžkldtCÃУG±Ø9·®WÒË™Zû–Ö¹ÙTÓË™š#œ;D!–®[ÅqãHpY°™Ä ŽpîtÍ|$®©þD±˜ð«Z<’ožž4ª+»Ùªé˜¦ªþDq/>?ì¿u÷îtïȵ™TÿÝë¤ñ¸Mü·¾ù!?#›øAä%µ‰?ë¾’¯&é†pºýRŠBÙXÊâ5kÚøô/;¨•èºä¶WçiINK˜ð÷äû!·ã³G©T*æÂ³Rb§wL£0Æôz6´ñ­‡¨e;Í®y†lÑJûæ4fé»1×¶y¼à<ò"’z®±á ÐMCÁÿãü}õª[=m¿ŒÚbÆî´Ï!ŽM³‰ªjqŸÏÊÖÉý5× u½yxPbÆ>ušéj­ÚvºýRÖ;›ÒŸŒ:ÙGBÊYû´Sö™Áå—ÒZœjÍS(WtÝú²ƒ>u /aÏæ•ª³#CÖ6(š›Ög€Õ&þK½ó³ûò³A³í¾ü¬{Îq?1^vP;Ïg݉º¬^³¦ÏX×ûȶnâ–äL Ïæûá·€Sƒ 3eŸ1~ßXœ2æ©5ÞXÛ¢õöm`©€kÖ<^|}n8,f¸[†Îù‡BEqE·Vf¥TëÙÏ×ý…6UÕ⾸¦ªÝM[ÏN%Љþ6®oÁ7ZÏ¢}SÌ7aÌvÇqže­—ð×6²þq;9~þ•ü‹ÒOûçù‹ÒO'û3ß5‹ŸuÏÕ*:ìÓçm&XÖb{u±íÒ°[€1Ág4A—`xû6äÆÜ”æñ¼WŽ…‹pXÃqAâ–‡!ÅÜÜßOø¥¢ÝÑ>mwkc²OVªªåvŽ…œ¶;z–ê›Òºë\)Eq¹BUµ²IÓÅ–pܵY¯`¼&þç_ÉÝ¿êžag÷¯&è6ô Ô.í³n—jYSU1c·™¶Zc´—×¾{Ífó÷ßt½¹“ÈÔ„#œKøåù¾*d²EKí›Ù ¸Íã$àó]„ãeˆÛ†:{×Ê©FCß¹ÛJ²Ñ¤_J£0Šb››ïεÃL-ÆÃ³²–Iä›ºé‚ÆD!ŽÇg¦´j»ZÖTÕ1?gëÛ¯îƒbü¡s²t;dYç“•Y) ±ÕΘÂJ*UÑu‹%ì;¬§ûx¶0ã­m¬ú†ûò+½ÿçÇ?ùKãÝÿä/Mg³‘¼Š v©t½’Ž:ÝØã·V®÷­„ÅöjКÅ5›-~Ô8îÉ÷fa×-àÜŸ+†mq¬öíl©€kÚ<^|¶rj8\cÃbÊ C=áZÛÏ…gëϳ(  IDATÙ×ëõÅ5éOtFî_"ñùâáX‰/…±7~iÌ?|åŠb[ Tµn|ÂtA[p3¨eC¾ÎDc6-î3 ³´ I¨ZÜWv'Çýd4×UlÁ½d@´ÊæõzËîÖèm‹%<­„øŠCÔ²!Ÿiuµ¶±êÕÄKÓŸ}úòGŸ¾ôîÐOŒ#:ä.5¨Y¹X ñe†VèXÙêúòƸ×ìÈë}x+a¥½R*ç“Öšsö•þÅ ¾¸fú-Ó[@ûÉZl!w䃾>>Ä-Zißݘ€kÛ<š´Nëëëëëëýoìîî.--œœœùÞ÷¬D½’òÅ5)gŽZ½®Jéÿa雟yÐ=[çñ þDBÄά¡’òÄ5㹕í‡>6ó«Ë™ºªú>\çQ—B¢¸æ:}DkU]ÙqÐ|»·Ò_àq×Ö¿#Ý3 yxð‡ò-oàá¯üÒ?Å[ým]¸#^ýìÿºTøý¥',û§Û/¾ÿÝï˜÷•v5’ý-ÒV®s1ÖUu6žÉdÎ6bŽN;ßýŒÞþ†®·½í»˜¶º7¥U¼ÀöêêŸ@Ì3q§šÇþ(Ûñüùó10AçÂÝñ|æÑý³á­ zp›øû{ß™`ÙÿþãOLðuŽMVn×¶U¼ŒöŠ \jó8<ß»ê†Ã±²Å³¢ „¸ÐÜ\_Ê[>„ævÜ.£½ºú6V4÷¸äàm6ñ_]÷|Î6œ[€kØ<Þ£~àm6ñRR pÅÍ# Þ¦¯¾âA"pÕÍ# øí{õ³¤€;‹>`ZEWß<’€ß²¿.¨à.+iŸR ´Š®¸y$¿MWö0# U€•*  $`€ €0@HÀÀ…ûÂ}øñ'VfãÿúÜ>zj€;š€…ÿé?,ŸáÿÛ5{+qè©yîhþ׿8ÉRº^I/Ä4UBH9»²µ´)ס Œ‚D ¹u)JçåKßüÌû£Àݾúê7*•ÿÙ7]Jÿ"þDqÍ¥ŒÜ–ñòü…¿ìºšìÐ !t½¹³ºœ©™—sÐ^ŒÜ»á«½ìSå*ÏÒqk¾ûr3=o¢‰Ï. ÿò/þ‚ét§ÓY­VÍo]Íüêr¦&É¢‘üš;«éÊÆx·«+¾Ï)Škmmœû®®W>BJr/ê<ÞY]Îbi÷-º+:ô£U_d몪jåjÔ庸]ÒjâÎ)qSj¾u*Šjz!výOʼn/ð·x\7Ô$ß„ûßÿôeÿÓéì¼eT2uU $[76E±7׌NДÇãmKUtãF˜òx<žT>ñz½O$ßÔ;}ZªªÅÒ]ïÌ6ð÷Jª=¥™x¼^¯ñòŠªvÊ>3vè-§iýtO_XÍYXÙÚhæ#íuŽ[!¦‡¾ûgÐ~íäŽÂ‰ð¬”…ÜNS¹æÓ­®ÖlÍ'­®Gb?|ÊÛª¤ÚëLUº ßsö)Ø¥Ö¼ÅÓ¬»Î=‘H¤k{fî¼ìœŠÍ|ĸ@{ŸQ‡ÆÎFòMcß;µÑb÷_à½5ÜUÚÆÎjwÝš^þ&õ?`$`Kþ៾ü‡úò·Üßø-÷7:¿ !~²W6^öwí” BJ¿ÛiÞyS*•Š¹ð¬”…ØéOUµ/&üªZϼ¨*Š+º—ôKitkì"RU-Vvïﯹ¥š^ÎÔáDØ! ±tõŠª¶ZÖTUÜÖ{³úË9¨~ªé˜¦ªþDq/>?| =µá4fD±X*•Œú÷Ðù°c/23¡EçܼCˆÚÁáq§´ƒöÂ|º•Õêz¥M'ެ®—/“?zÊ5󑸦úÅb¯jñH¾Ù½†/æÂQ˼¨*Ø¥×¼á¸q$DçT4Ýk‹g”¢Ø7’~) ±Õ|S×+©åFh3hëÛ£ó¶ž -$D|kÅ!j™ÄNS×ûOìªpö_àÍ|$Vp„sgj¬¿nM/ÿþy¬žW°ùÍøŸ¿ü‡þ²óûo/¸…?þÉ_Ó;o³ÇTJhqJ8Ý~)E¡Ÿ×ëõùâýcÇ«SU‹û|¾¸&gÃ[Q§Åm(gWýèz³q$¤œµO÷L¸†Nmœ¦“Õæø`C<ègPOíʧ¢ØææªZ7²êà½0ŸnqµCv°g¢õêT€ÃƒZësÓí—²vpؽ†ÐâT«ü]gïUÖüé©ÊÖÉý5× ½ëŒRWtkÅ!jÙo!gßPQ­:œ²Ï¿o,Nk®5Þ ½ð{jXˆû”YËÐW·Ãç±x^HÀýË—ò_¾”Æï¿÷Û¿%„ø“ÿñÒ˜Øý–EÆŸGÏŸ;-¤Ò¸¦ª½7à®[¦Ñ9W,&üRžg[U™ö ßV9ÍêçM£&ú“•=5âˬ”j=òù:ËëÐù1Y¦ú"[¯gC>¯×ÊÖ…í¤8h/†íÝÈÕšîà½yb f”³ËÐ5¼…šoi‰þÏ}{=ޥ؂ñ‡Â1?g›t`±… ¿¯†ÏÅÚy òó/åϻß3¦t~úïýî€PU­\5éæÙIdjÂÎ Íûôäû8mwt¥Ò1ÿú|…LÊiµ~ÆÙSÅÜÜßOø¥¢{؉õC?äÇäøæŽŒ¿b—J¥b1ž•Ý!& OCWkºƒfÏybLÛã¥WYó]œOVªªåvŽÇ¿Ìgn÷ΊZ&Ñe;ö}b÷Õ0o3%þUë¦õG?./»LoÂ³í±ƒÆ”JÊøÊŽ™£Æq{4íŒÝ¦(í;âQãø4X/~æ±£õWòN¸¦”Ó¤~º?QtïøX{êŒ&ýRŽûÑ¢ÿX8ôÕ™™Pç±wÝ#ï…ùt‹«¾ƒÝ­U×™SÎôx•«­³Ôb‡èÕ|—©ÅxxViÕt¯Ç=£ªéåFh¯5Êv9=Ñ÷ÉL/üž Ü67ï0­ü‰®/ ç€<„ñW×Íínþh×âd[pc/5ãÏÖ^¯·ìn=^*š ¨ª[È9DÏ×À ¾¸Ö”©(¶Åxk¢ñ=nç“ÖËœ}eH©-¸™ðËz6tÕƒS9Õñ‰B‹ûÊîd÷ŽÜÓÎ×á}¾xA8Vâ‹cý{¬¿Åw†êžIcsó³í!³ƒöbÐt+«}#_õïà ½Y]ý§\ÿñÒâ>_\“þÄfÐ6¤ê®²æMö"PÕºñ-4Ó½6rùÈ3ê•|“xÊî½5—¢Ø‚ÆÉ9þÈfÓ»*¦zjÛÜLZÆù¯ÜAû¸ƒ”õõõõõõþ7vww—––NNNz¦øñ'¿3|¥»…??Ï?håùö×Óz¼õšo=º»ý͹[é.ì#`P”B<þ|’ÿˆ±[øsªõŽžLú[Zógþe£cekÔ£0ndð½û°hì>`àšÞÌ×Ap·€@HÀ  ×Û°çoooSA¸+ xii‰ÚÀJÀü/ ÜJŒ  $`€ €0@HÀ ˜Ü½±æÖõJz!Vä^Ô¥(—?,}ó3ï4µ7OõÕo€;eiiéääd¼l,Öý²³ŠNçe{<ëä†ôƒ!¸5¾wšðôf~u9SWÕs†ï¡\UEWt6¥(®èÖÊÑr¦^φ|ÙîoòY_‰eg†…Œ,Cϱ¸S¶··‡¼;â›pƒ‚ó•QÛâF²±+QRoî$25áXÉ…Ëç ßÂaŸî4mwY;ʇªUlÁÍý`%å‰kªñM>çø+9oõ•Á¥(oýÀ\[×ôyÀº^IEò­ñ»Æ(áV`5ï µì¨qÜ^áŒÝv¶ïYQlsóUÕr;Çc­ÔMú¥4J8`%ÓvG{ë&/­|h Œ.W[‚‡”7/+Š+‰…¯×ë‹kr6l PW4PU-¶;rˆÎ㬯ù ±à‹kƒÆõÚ‚› ¿¬gCVž«Ðy8ƒÏ/ÇJ¼5 ·%Šb[Œ¯8D-òy<©ª˜ê~i±üFÆÕâ¾²;é—rx00j®¯¯¯¯¯÷¿±»»;døðs›þë„1ºH8ƒÆŠ²ÏŸ?¿GݬoŒŽ•­ϦÀpw%ß‚ÿ»Æ¿Ž¸*U0@HÀ ¸Ö®é³ >üøŽÍEùþw¿C%\÷,„ø–7ÀáéøëRá?þûߟ`ÁÿúÇJíÜŒ,„xø+¿ÄB¼úÙ? !~á_1dà¶'`t#€ïX¾§P $à»”€é “€ÏÉâ37xšÄ­ÄÑçpPÉT2@¾¦t½’^ˆD ¹u)JÏËs®VSU!„”³+[AÛ™•;EõB64hG&IÀ÷.¥ø?ý‡åá3üáÛâ:¹­8ú*™Jî&K¡*åñxûx<©Š®¿Ýpœòx:Åèy9lÁf~u!VD±X*•ööâ"‘îYJQ\kûûûûkã¦UÓbèzsgµ¸'öó/å?#Wû¯ñÞðÓì>R}Üš±~°Îw†4óÏ[?Q-ž$o¥öÎô‡ãRø :/ûpLÐZ?3õf>â‰ä›ú¥^˜WyP®¬Å» ÿ *v¬‹úBvgxIιõ <^oÿNQI]vÜÔ†¼’¯?ã-ÏÙfÁ(ªÅKØô”k¯öJ[fK}ÀkûûkÑ‹y±‡-íý¦ªªÐb ⇥o~Öõ²»weå(›­w:z…Õ™ºª­½P[psMÑ]Õ}}ÏÍÕål]•ÒßÓݽþÅ©ªÑµÜ)F{Ù„ˆ'ý˱ÂyðWò2jò—ñ&Xʨ‡V%ÇÒî1O ãÆÚ9O€‘gcõE¶®ªªV®F]®s¯íâJ{þÝ¿ì£ït:«Õêð£ÿÖs^òá¸ÔðBξµ·a»Øc=ô¼ì«ãR[¼áçÃ¥_ø–[¼ë|Q_‡–ášt”¤cù–Wç\í?¥u½ò™ªZϼ¨×ZçYµ\÷ ÷ŸrÛWÇ•õH¨ç8<ÆÇÍÖç½’òDòÍ®ðžÏG¼^o÷c놞è^Ò/¥Q‰Õ‡Ý/;uªªÚˆ~ãh¯\RúÝÎq–ôr¦æ'ÂQˆ¥OoE­õçÂQ˼¨ö”Ê(F5½Üm,N÷Pýü+ÙùùÖ7¿1ä§{Α«ýßÿôåðŸqO‰ž¬O{ «¹£áýp•T{ŠÉz„•TëSã£G±Ÿ4T-¶6=t½¹“; '³Rr;;N²î»i³µu6çIUz‹ÝþhÉ7[×AçB8ûé6UÑ;Cn:ëï?óO·Õ÷á{HÆ kÐú!3=âN§³ó–õUõW×Xó÷îK»ïñ´'Òò®½ÝóÐØÉzn.ðp *É 2¿e÷þf°TlïÄ!·€A¦i§Ô+ùæÌ)ÑuXß‹«lñ†]é•TO/—ÙâÍóìïÈŠ°kpp[×ÑØY~¯r >ÆJ&o\°ÃÚÿ³mxÓÑÓ¤jL†´ÝçRÜç;sò˜neœ›ÔEpÌÎJQ(w½Ü‘cVÊ‹9åLÚ„ñjï*°¢ØææªZo¼BˆãÆ‘c~Î68zÉ‘£K©jqŸÏëõú|ñ±ÆHé-N §Û/OÖ¦\BÌØö!ÄQ£Ó¸´Ö?eŸÂtýÍ|$gßZs]À¸Ÿ©w~v_~6h¶Ý—ŸuÏ9rµÿðO_ÿ¶ðqãHpw²~ÿñ­¦cšªúŽøüðC+»a'¦ëiæ#±‚#œ+–J¥—/“?4ûÀÓÓ’™ -:çæBÔ­~š2ÖÖÌGâšêO‹ ¿ªÅ;Q¬SÔb.<+e=ZHˆøÖŠCÔ2‰¦®K¥’1C!–® gthi»wmí¡ú°g ƒÎÛá× Æ!þ-÷7~ËýÎïBˆŸì•Gý³»0¨º,ÎßÙ—Ö¡:><¨‰Zæ…±ïLJbÈ®]›óP×+éåL­=ÂjÜaTu8ZwP³’Xl„;« e÷þškdGÀˆÞ³·€1/Ì3§D÷90ñ­äR[<Ó–¤ç¤RŸçÝ_Ë;ÖwH[7î½~Ð58xúä²Å–aÐe2nƒÖs”{štÓÆdx[Ñ}.%ŠÅλ=[™ì&u x& ¨ª–Û霫ó3—÷·1kï*°bjn~VÊB¹*„xÓósSC¢gŽ<N‹cm“ T*‹ ¿”âmPU-näïš‘7,Ý„^djõl¨“݇ôYŽÕüó¯ä_”~Ú?Ï_”~Ú3ÛèûÁ?9ügÈg_([ $Û¤éç]o6Ž„”³öiÑúœ0ä"QçõÔ„˜±OY¬ùæNîh剳7WYî*8<¨µþPàtû¥¬vìIFÆîHéOn,N»Ösb Ýßžm™ïš…5 ¹-¥®Cüÿüåo/¸…?þÉ_Z9úÝÝCªËzõ¶jñà°©ëÆP%UÕÊÕÖü¦Çþzž‡ªªÅV'¹ÓLv8¬—dȇùž¥²ÙºªÅ»ÿþ0 BFõœí}÷Âì\XÝç€Å½x+-Þð“jdÇÊÄû{ίÿ¢¶ÞÖY¹×¹O?×…<Öñê»LÆkÐúšŽÞVÂú¦-èÚÊyoRçéd<Ýhóð@ÌÏÙ'ÊT¾‘=¸X{œ€ÅÔܼÃ(P³qd)L#/ŒÃ>-„¢¸ÜaÜY-›¶;NS¸õOîÀNv?ÏX«žhûó¯äÎî_uϰ³ûWýóŒ\í¿|)‡ÿ þL’èïYï;¾o5a=¹ŽZõÏŒ/²õz6äóz½¡l½“«,/ß·¹qNWã¯3–›“]c ã_ƒýGßøý÷~û·„ò?^Z;úÝ׸Õ5`~ã&Zk¼ÕrÁÑù{î±xÓ¨L‡-]·óPQ\Ñ­•Y)Õz6äóûœÉǸ%ÙKéOsáYYˆ­öüÙÔtÙ1Zõq/Ìv®ªößJ.¹Å;ß 6ñþž·Å›ä7ѵÓ »6'¾-¯—ɹÚÿA­„µM‹«¹I]D'£Ój=û"ý"3š`œçX§ÜE×ÞE$`ã㦨5Þ̸îƒÃ>}Ž9<˜Éf/ Gc!ªeMUÅŒÝø‹’óÉʬ<Ó¸WRÃ>‚´?U·:üÇ,Õ…ùò+½ÿçÇ?ùKãÝÿä/Mg¬'š„óÉJwµ\Ôñ5]Q«ct*•JÅb.<+Çü³`ßæZç°µ­'25áç,6%½Ûk V¯Á¡G¿óòó{ã>Kd¢ê2ŸÿôÓiº\pÌÏ9C!j‡;åB`È®]¯óP±7÷÷~)„2‚å2Ç’X¯œ©Åd@Ô2Ë]X!£Wè°OOtaž9%NÏsâkÓâ™,>Ùþ^D‹w‘ÝLt ž%–Ž× Ëd²öß¼}cÓWq“º(F”Ò4-0Öת.èL8_í]Hp«ªP~ј魂ÞèÙŸ#ÏùÀ E±-ÆW¢– ù<žTULu¿ì¬ó ±à‹k݇RlÁ½d@ÔŒOÌ^¯·ìÑ/k n&üÒÏ0¼À=¥ºÀgy|ù•4ýùѧ/ôéËAïNеl½yj1ž•µL"ßÔM?'t÷¸ã·,~¬ê[­ÕÕylá“FõEf&d<÷CœMh”ÇXêlyά­S†rµu3¾Ö´—b`iÍvm¼ËÁ× Õ?,¿ÿÑ‹ü a‚ê2¿ÓBhšfLqºªZÏfµámû5<Ѥ_ÊqïIãŽÎ~µ i´·g?-t—d¬óF/‹CŒ[C*dÀ ûz_˜#ïóÝwÙ1»$®´Å³Þ2h/&Ù߉*ö⌾×¹O¿€ ÙÂñv™ô4Pƒo#štë›·ÿqÒ›Ô™š›wŒý\ÉzZ/¶ö.,·n¿Ñ_ýÑÓzŽì>ã»Ç ÷¾´7÷÷O?@Ÿ})„b&´±g:̼3>¡T*ßTë^yÿó€]k­ùûg^*Ó™$K}‚ŸKú›àiÜTµnŒ¯7=¾­‰q_Ù´øçÓõØ‚›É@ëCË<ñp='él{˜”óIk©œ}¥SžþÏ-F´¸Ïפ?±´Y¾\]Ñd@UµØBîÈ!Œ‘߃JÛÙß³»æì_ð‹eð5hñèoþhwóG»ãýþCf½ºÎ?mŸ•RÊÙÖ€fç“ðl×Ëkvžãáóб_ëž4Ááp­íç³­/Ä5éOtF=š–d¬FX±7Z!x5ßÔUÈ vßF^˜CÎnã”è¾ÅMp+¹šo¬Ó½w'®ØÞ(Д9A•Z¼×ºM?ÿ…<òx ¿Lú(ÓÛ‡é‘ín%*ãlÚº‰oR˜Mƒ›SÍyΨ‘WÊùk¯µ ëëëëëëýoìîî.--œœŒø›o3¿ºœé 6ô€Ì?þä[ÞÀÃ_ù¥‰«ìZ=½øœ^ýìÿºTø·¿7É?êüï?þdÈøüðãO~gøv Îÿ½Îú¯AëWGÿú¸5‡ã:·½œóÀ2$Ê>þü\ÿÙ°XWÕK2Ù§“ëòO.Š•ÝIΟs‘Üàø{¾k£½k• જ+}àÁÛ=¯Kþêâ0]7é5ÈÑ¿‰nÍá¸Î·Îy“€q¥ ø-=€Œ·ã«¯t*à–'àW?ûGŽP}À·<ÿu©ÀáéVÒ>¥nmæû ¸$*U€;eXðöö6€»’€—––¨Ü¡<òÿ!7ã€@HÀ  $`€ €0@®6ëz%åñx½^¯×ëñDòMýnÖ^Iµ+!õJ¾Jy<Oª¢ëFý¿s†Üø¬7ó« ±‚$ŠÅR©´·‰ôQï<1Ñâ²—šDu½’ޤô'ŠÅýýµ‡êõýýýý5—¢\Yp ¸ú"SWÕ@2jD=E±7Oc_%ÕîNUz"`>éôëz%½ÓTUUµØB+@ëz3ñ]ªí)V—5O¨]³½’oòO§ÇZ¯¤Z+3ÛD{ ½å1]yÜçëéT†‘»Y©¤ÈÊ×+ëz¥\RúÝN“w›ùH\Sý‰b1áWµx$ß<ÝŒªˆx1vˆZæEUQ\ѽ¤_J)ýɽV˜®¦—35G8vˆB,]kÙ~=³=T§çæªZo¼BˆãÆ‘c~ÎÖ^¶µ‰„_Uë™­M*OÏÊ>`ÓbŒ»›±²{ЪpQî zcww·gÊãLJ†ãæáAMÊ€Û)„pûe¡ppØ\\œB!¥?´8%„}FˆZ¡\‰:fÙZˆ»Ó>#Dí¨ÑÔ—µhjn~6S+”«k.×›†˜2Õy«½ ·_ ­MTûËc;w6¾›É¨sPå`,KKK'''ã%`c±î—ƒVÑö¦Q;;¡Öx#ÄÔ8UU-îÓ„ªŽµlg°A'Κ÷ OÍÍ;2µ£FSŸnÍØ§Æ.킎ÇÈÝì©yŒe{{{È»÷†/Ü“zÅåMÓÊÕ¨ËÕ3ï´Ý!DwvاÇ(ç´Ý!díLxµ8 VQ\kûûk£g³ÍÍ;2™Æ›cq0ãÞÔ¡Û*¶Iy.‚¥Ýõa“û›pÎ'+³Rb«oŒUR©Š®ùRUµrUˆjYSÕ² \½U IDATGãÓxªªZnçØbŽì,k}¶©¹y‡(”_4fz25Ž[Å3v›¢ŒYq9» €k€[pc/µlÈg<ö¡ìnugÚ‚› ¿Ôâ>_\“þÄfpبE±-ÆW¢– ùŒ ‹×³!ÓÇ/ _ÖêlF.ˆþoò$|q­{0®õò\Ònà2(ëëëëëëýoìîî>|CéÍüêr¦HÆpcˆ "pÑ£ðÖ ‰²ÏŸ?¿CÿY×›;‰L]Un'§Àuïî쪢؂›ûÁÞ‰–¾E€[C¥ @HÀ  ×ÚmxćÂp#|ÿ»ß¡™€·ÞÌÞ’§¡={ÿ{r×ÜÉÉÉýû÷o袙p›šYFAÀ¡'®I3KÀÝB ¸®WRÇ“ªèºõU»Ôd[€Íhú¼].¯Ù¤™Ã=ªÞ:)ýɽ¨KQ¨ ¸c‚èt!äó¯×ëñDòÍÓ¾„JÊcÚ‡ÑÝñÐÓ ÑéÿXXÍÙP3ñtVE×€;¢Óú¥*­æ®™x"ù¦®ÓÌÀÛIÀ­ÅTí@Ä‹¹°CÔ2/ª6:Vp„sÅR©´¿¿f±3£šŽiªêO÷âóg§/gjŽp"ì…XºÊ¡pG(Šmq#é—²[Í7u½’Zn„ö7ƒ6E¡™€·™€¥ô‡§Ä”}FQ(Wt]×›‡5!fìSãuu4Ž„”³öiÑZ[»3£\BÌØö!ÄQãX8×ö÷­·øp“ÚbU‹û|îXEqE·V¢– ùrö­¨Óh0ifàB\à8à7ÚÄK™7說Å}šPUQk¼ÂÆápKõVlÁøÊA([wÌÏÙZÓifàÚ%ài»CˆÚE®MÖøj€;ªÝã«Ö2‰üÜFЦÐÌÀE¹°ç+ŠmnÞaü!Íì]—; ŒwiÝÓUU+W{¦ÛææªªåvŽÛ7¾¢à©¦—¡½Ö×-–Ó]§™€k—€…¶àf2Pˆ|¦Ï³t>iiËÙWüRvOŸ•R‹ûÊîd÷t[p3á—õlh¬§cÀl‹Û〽^ï£Gÿ%ñ”Ý{k.E±7’UÕb«;M]§™€ ¡¬¯¯¯¯¯÷¿±»»»´´trrrý÷áÃ?yöþ÷8–®¹§üѳ÷¿w#ÚUšY7½™eŸ?ÎEÀÝBÀÝrKþ+òÉÉɇÂášY¸ øûßýÎýû÷£4³pW°â&~³hfà­`0î–a}ÀÛÛÛTîJ^ZZ¢vp‡0C¾p+1$`€ €0@HÀ  $`ર®WRÇ“ªèzÏKãwo—TEï_dÐ:û¼éFîø…,5ÙVHÀFJ¢X,~) ±´õXÖZ0ž¼àü}=ã,n>¯)ûLWâìîÖõJz!¦©ªªj±…ô+ùªûe;7ó×ë5IÉ•”Ç“z%_/óùˆ×ëõx"ùf+ÑêÍ|¤½Åž¤Û³éÎ[•T{þTÅb€îßî™õôm·§‹½g¿¼^ïÂjîè̆zkW’€GBˆ€Û¥(ã-X-kª*î‡êõýýR©Ôé® gt/é—RJr/úP}ØýÒØP5½œ©9‰°CbéêéNªZ¬ìÞß_3fSUí@Ä‹¹°CÔ2/ª­Œ»œ©‰@¢X,•J9 ŠâêßV3‰kª?Q,&üª䛣ëºo»ÆzbG8g²Ýaõ”ŽiªêO÷âóg§›×:î zcww·gÊãÇ­„¼¸OBÈ@rÍ5Fï,8ÞŠ:Oߘ²ÏQ³°]¯” Bˆ»Ó>#Dí¨ÑÔSB!¤ô'»Ö)¥?´8%„}FˆZ¡\‰: ¼jßÚX´Š¡ºÞ<<¨Ip;…n¿,›‹#4ÛîñáAMˆ€}jŒc¦ëÍÆ‘rÖ>}¦~LkÀ¦(ý‡àÖ[ZZ:99/‹u¿´Šž—Üs—b…B¹uZïîî^må¼f~u9SWU¡ªBŽ™¤UUÔo„°,ÅÝZ9ZÎÔëÙ/ëO×\ÃKþ¦Ñ“Êk7BØÆ>4}ëc©ÓÜÜS¶¾ãpëmooy÷Þð…­¤Þ>Î'+-«åvž¸‚¶É ­ëÍD¦&+¹Pc9V°´Ð´Ý!díL’¶>V±7÷ƒ•”'®©…XÚ}6Ž›nëL×´Ã>=ÉŽö­ç\Lj`Òƒpk7XQ\î€PU-·s,Äé°Ýž°8µÏÊZ&Ñý}¯1™vsNÛBˆ£Æ±ÉKE±ÍÍ;NË6g4é—Ò,Κo«\mU‚c~Î6î çözºöȤ¶w¿=G¡\í™~5@îåZÛÏ…gëÙ×ëõÅ5éOô÷UÛb( ªõLb§©ë¢õ§yŸéEíh2 ªZl!wäÆCªbj1¾âµlÈçñ¤z^VtÝÜLø¥Q¶±†Ðy´‚Ï/ÇJ¼wD¯¢ØL·¥Å}F%lNÚÛm n&µlÈgZfç“ÖFsö¿”ÝÓg¥Ôâ¾²;Ù=}â¸;”õõõõõõþ7vww‡ ®­!QöùóçüWdÜ-$`€0@HÀ ¸>îY™éÃ?¡¦pÍ}ÿ»ß¹°,„xöþ÷¨S\OO?ø#!Äýû÷­üC·{Ö×Ëÿ‡À-À8`€àzÓõJÊ“ªèzÏK]¯¤<o›ÇÉ7õþùÍÖvºTª¢ß‚:¹ØùÇ]9€à*Åb©T*•J{É™Lb§i)·µ–*æÂG±ôÐ¬Ü ‚W É@€19ÝZãÍX‹LÙg:´™´û†#ù¦®WÒ 1MÕb éWòUç÷v næ#¯×ëé‰ÈÍ|ÄãñxR¯ä«ÎKc…­­TRíë3a·{s]+ôôÏiž›û7ÔW‘±¾’jí~ºÚ½~óõÀ r*p[ïäŽVâkŠ2FN;nÜkŠ¢ë•tBÄ÷ölŠ¢7ó«Ë/ª‹Ñè^R,”Ý{Q—¢¸º~Bï$¡½’KÑ+©…tuÍ%„¢K¬l+Ñ+Ÿµ_Nï¬.¿¨,F¢šŽ‰Ä^ÑXI7EqEÏn¢šŽ­l•‚¶f>²|º S½r)J5½l”°dGÔD3ÉÙ·J%›…c"ànÕªéžÀMB0€[¦÷ùŒžË„ˆomc-µñ¨Ó k›A›L»:†Mézóð@ا…B8ÝB¹Ý9Hn,ÚNÓmûåé §íŽB¹:º|º^)þÿöî?*ÎêÞ÷ø÷yšóg“åjŽ9 “o#‰=«"&Áx~¨”D…ôp¨šjÌ":˜èp8½w™ÓŠCM„šo¼¦×ÆhóƒÖˆˆ„˜œÊ/…zÿ1!¶Ò6ÃÜ?î]Y¡kÝ?Â<{ß?ža†$ ¼_ëùcfÏóã»÷3êÇ={†¼’ü8‰Ë/ ºDX¡²ÏH‰ví­wÆÙOS\ž¼ z ±„9`sL^e“+Õ0êJ'ÆMö¨ÐY“UÞ`š"¢$7c¼Ãû½ÝÝ %9E¢Øy„a8ò÷{j²²²M3·²©,Õ˜5ÃØïí^ž7m=0̸¸üŠÄ5)®± ¢¡õÀ©åâi>“jhÝY“Õ2îîñ‰Iy•ûG]+ʹQÃH-;{Ö5P·³¸¦³yŠÕF!>1iºÎÚSˆ9¬‚{ #5#/hñÀoO^FH&3 G~EâáQþÄXýÞî$ÿÇýW¼=#í=Þ+¡ Ãá\ßÍb†É \"5#¯þð©+"råÔáú1ýhĉËÇYnÑã½âýõáF¸«&Ð>s=€›‡9`1)ÅuÄ»3+»Â¥r=ÍùabŸ£`IuÖÎSム R_‘Ó`·+•ë™h¶Õ0R]ž–œ’œƒ"jÅöyõåYâiv¹<-YÅ5‰Í®T#5è±á(8QT+š5·Á -r=McBü¨K¤¸<-YÅÙM¥r=Í)S±ò #ÕÕ,5YYY’´ãˆ'¯¸eìçVzòêýíc{Ê|0€Ø›Iq»Ýn·{ì EEEö_BÞ{¨ö•Ÿæ¯"`vÚ{¨VD‘58ʆ¨ªªbæ—hWA\½zÕNÖÀ¼HÀ"²{[!ã€Ù)úéZVA`.ˆ~º– €¹€9`€ €@HÀ  $`€ €0@HÀ  $`€0@HÀ  $`€ €0@HÀ $`€ €0@HÀ  ÓiAô»î=TËx`^$àÝÛ o»í¶W^|šñÀ¼HÀ"rõêU së€@HÀ ˆ=  FÅÜîÞVÓõÓYLx£€̸gžxtù½INNþÙgCV¸W[šæÕHíÑlÓR¿]@J ‹¹‘š§¼Íò›uý³ŸE9z7¸߯ää’÷þb…ÍÝ™é;8íïj19` –°5ÅÿëŽwk.š¦ùÛ³mî{ÓC¿¡¥µ²DD´ÏRC†1aûM«ß.@©‡÷µ•§†Öí¯­yþù´?<ò—…ñÆ8‡ŒS³}’Óò¨}Î9³´níùS*Ð_¥‡DÏDuÿ±í›_¿ îk±oVßÉW¶¼]¾ZF ói»Ú¿Ø%2NÓþ®»Éç0;1 ÄvžÂvÝç=~è;^{þ.¥N:öŸ5ÜÞæq®^·6ý¾¿ýM DnŸÔ6MõkT€O¥¹ö=bšñn{ kǶ­^·6=ÃYÙêïרCBv¸îk«Zó|½išæ»Ö¼jî$·¤³Ó³‚ûûb†3ÃYÙ2Ôêq®ÎpV¶¶UúÛúêêukÓ×­MÏxµ-ørönöKOó^÷}Ú¹:Ãùä1o˜Qj{÷õnÓÌÛ÷R²ÒC–ò)Ç#o¹“•¾##§õYÇÇŽ=¹nmzÐiýûÿùøS£ÛÕ8¥ÚëÖ¦{Ú¬úƒ/7ïj$`3œ€}z*[û{¾ûÔÆäµ÷¯¹ÐÔêõ··W¹Ló!OË'YöÛ}ã¶Oj›®úuHÉ÷?¤”œ>ß6¤†|º½jó «žñ½5Õ§âîýÇU¦Ùýik¯Ý~¹G”JŠSCK–‰ˆh+rû­šµÆ`”ÚöY½ˆÜ—œ°LDz.{}Ö¤vмÏ-éì ݬ1´D”Úøï®TûÌmg/(µ1-Y %ß—£Ô¥³-Qòï¶$a™ýøÍ‹í«\ü³7Š;ö¥ÇJm|ì‘¿³/-õç;‚.Ò>N©þmô„tsæÞÕbë€ØNÀ“=Dw¾èën)Ywh¸åëO[{Þ¼DzÿÒ-"ËãnùÜÙ²ÔP¤ö[³8´Ë]»¥†D+ÓüðåœÅ4¥ûO½–úŽ÷e¢ Ã>aÈ>‹oEggèf…Œá˜§öF†+Ò0†yù*o¢ÜÈãð¥.6 =PëþÑߘ¦˜¦¨0uwsFÞÕHÀf–ÏšÜç°Z÷7ù¦äís?tþ§/½s©ùó¾‚Ü8^©}Åcã–ÔZ€þý6›¦|7q±ŸŽ¿KÔ¥þ[Ãî{ì(£Ä|ˆL´ƒ!:ìI¦ã»b³äféÐþ†é¾\ :Ã]Ëþv*o‰Õ©Ió'õ­»¾oä›8þi#]Úß¾Ô!éoð¼ñYùÄÛOö>µ»9\k ó« €˜NÀjr[çûï,ûÑK´ýÔRq?¸o¥i^ú¬£ÏR))Ši~ÔÑ©~ÿÆîOMÓž‹Ô>ÙKOOý–Ò"†|ò¡R¹å;î êÎGÇÓö;Ä9VˆHOo¿ç$· ³3v³‚Ç0äi ûÊ×yþSÓ¼ó¾´ÅJ‡ìéqðvw~éJ5ÿäÙÓ}–ÝÒõ‹Ÿwù¬‰NÕÓÛï¿´,[téÐöÈ¥öz/‰ÈKnx¡}W ˜Y–ÒÑo>«ï£_ÿéŸI nüνîPê›ßµ÷[êîGJïPêÜžÌÏÓ«îWJD”Ò–Ò‘Ú'µÝxýö¦DL³áçg>¶iÃã—Ÿ]Qºïƒ¾¯ý§Z¼ñ?vg«?ý²ø±Mþ)oï—–² Ô¶iÃc›6|žî¿S㟪mïúÇ÷4(•ûÒ³)Ö¸íaKU:õ‰—óL³Á³ñW—Wˆi6x6îûÒ ­sæÞÕb‚áv»Ýn÷Ø‹ŠŠ®^½Ê³ÓÞCµE[·ÄJµGŸØ½­0vë§³3MëÎwuŸ—¼Ý¿)û‡Y;öF˜=Ɖ²UUU¬bX¬;¯>GæCó‰°²Ȳ”o¤˜a$` †Åúç°óêsd>4ŸHJqí™bÑbiÆ @¾U¾ù }$` ¸qÌÓY ˜g 8Æ—–Zóii¬Å:` ¸q¬‚ ³00¿4|šúé,€ ̱þC¤óê‡TùÕX˜Uø›p $`€ €00{Œ÷khGe€0_pQQ£€y”€¯^½Êè`îa0HÀ  $``v[0©½µî¬É*¯—²cû¥Tn¤Aœ§}€ùlšç€•Ê­ljjjªÌUª¾¼¦SëÉxxûŠÈjÝY™™™Ym¿òt¦ãìÔ®e÷ëÌ™3gΜ9{¶Œx 0×ðŠK\”8³‡UwêÀ”ªi6”gÕ|¡¾~:œ‰êJ3³³³Ã¤äÎêÌÌê/ÔöÓººÒìììÌÌÒº¢Õu¥ÃW Iº!—¼ÔY=¼ugt1Ú_^u§ÿ u¥™¥uZ:Û˜«ÂwØÿÈÎÎÎÚy¸'Ü…nÎÿ€E®x{D$/cÒSž]- ¦)y«ÍÕegÏž9s&0+Ü%)®fO®RöZ‚Õæêà§ö…ºjŠßìNÚ^¹=IêËkºF:i6”·d¦`M³áœT4Þž$ÝoïògÜâ7»%Ïž¯ ™¬5ŒÔ±×¨+­h0s+›š*s͆ŠÒº ;gŽüýž\¥êËwÖ hÝY]ì-9{ Àau¥åõIÛ7Mjª¸«¦¼Á4s+›š+Ön?qÖ766†´<øàƒj³¡"§ADTžçlYê$’xàÀÛ¸RF^ˆK\.ÒÅ´îl©‘å‰)‰ËEº{¼:%NDì¸AçT*·$?N$q¹Hw}K§+%%”w&ÙŸï˜(€j=Ð~®[©¼ŒÉÈUõõçÚòÃ8Ò/zNuÙÑSüæÁ’œ7Wl?²?%p6‘¼Ä¸IÜ9­¼=¢ÔŠÄøQ£v†1ö†ÌaEEE‘þÈñ‚ñ ~ÍßIV*×ӜђU^_ßÒéJ‰~xì·Äô@ÝÎâ7¿6M1MQ“LÒ¦)ÝÞ~‘(#¥1L¿þú`IÎÁ(¾Š×ï IåÝÞ~Gý2;Εü:i½s819[T죖‡ÍÍ!ãàs7æ°£GŽóê¿Mê#e뎤†ƒ ‡OmM-pL­h­NU¾Ù-I;—x‹Ëë£:(>1IT÷¨Äý"XÃQpàlAgufEƒY_^“1Á*Ä'&žšNJŒºkíçºEÌî7+ëœû F˜³Ý0ã0Õ[ 0Mn°a¤fä‰i6>uEddÙnHXŒË¯Ø¾Bu¿YøžÙä…àŒOL‘ï•0O Ãá\Ÿ4RÛ”¤¸<¹J…‹³á¯ÕÒå„  Ý tÕ{Kšý«‹k:µ¶ÏÔ¯0cn¿j/ü ¹-]!íÓ0$à©ego_ñõÁ’ìì윊•[9v½¯a8òKòLóë7+OÙ?t`š 99aë RÔvyòL³¡<ëpO’Ø?ÂÐ%qù;’¤û`INffuÈÓN­*s•]Û¤~!ð£ 99õ’´£"tE¯a8Â^«¡"Ç„f»ƒ;¾aÃO«K3[2šËR ÃQ°ßîàÎSZ; xòº–ä„­0Ün·ÛíûBccã8ˇ€Ykœ([UUÅ_EÀüB  $`€ €€ÙcA4;í=TËH`–Û½­pÚ°ˆ¼òâÓŒ)f§{íˆÈm·ÝÍt[ýyùûp˜X €ùeC †hÝY“Õ’ÑìJ5Œà§)ÒU“UÞ`úÿ¯^©;Žì/p!û‡;ÛÈQ¹•Me©FlŽÉH/DD©\O„.?žÓ¸3€à&È«lNÆÕY•§œûóã¢>JÔí,®é/+ûÃßM‚“¿ÄHßb€¹(%#¯ÛÛ?©Câ—è@]iffvvvvvviÝÀð$kCyVÍê‹ÀãN­EDëºÒÌìììÌÌêá–ÎêÌêκÒÌÌÌÌê/Ô§ö ýW鬶/80(þ†\¢³:3sìžãeèºÒQõ”Ö „¯6pÑêú‡_í¬öEMWpFˆ ̘ƒ®œ:ܳ£¢Ì0&‘Í®x{ò2Êì)ÞJ©hnvø'†wå»\Íž”M z,"WNUzKšÏ¤º³:«¦ëlYªˆˆÔ—Wî8bŸDw¶?»rjgññÎ|WŠtÕ”KesÓØ‰[ÃHu¾DWMyÏŽ#g u¥Å#—á(Øïñ×såÔañì/pا*¶«²œg ®ôpâ‘3gv.—¼ ÿ‡í5Äæ€Ìõ99öle¥T(pLꨬJ©p¥Ø´ì@æAÃai=Ð~NãED$%#¯¾exB4ϳ?ß1’n‡ŸŽœ0>1©¾¥kâú´îl©Ï+É‘¸ü’ K„ï{`RÖH-óHyu]]å¹õ[SFN•‘í€Ú½[ïô¯%Iqyò&è5Äæ€Ìþµ°u¥Çã&{THè |·LInÆx‡÷{»»JrŠD±óÃpäï÷Ôdee›æt|/ü:à”­;¿¹ÜÓì˜âá~o÷òŒ¸ië5€`FÄåW$î¬éL™â7ô8µ³\<ÍgRý_zw÷øÄ¤¼Êý£®å|¨a¤–=ë÷x7¨ëø¹õ;òÞlé*KM®vZN¦×CX –FjF^Ðâ+Þž¼ŒfŽüŠÄÃ;O Lñ£ù~ow’ÿ#þ+Þž‘öï•Ðdžáp®ï‰f1Ãä.‘š‘WøÔ¹rêpý˜þFŒòÕåRRPPæ‘òêNmW›¸|œ¥=Þ+þÿ¨7Ú]5ö™ë5Ü Ìˆ1)®#ÞYÙ¦øø6?LPvì/©ÎÚyêÝ7Dê+rìöh~(×0R]ž–œ’œƒ"jÅöyõåYâiv¹<-YÅ5‰Í®T#5è±á(8QT+šu¶Á -r=McBü¨K¤¸<-YÅÙM¥r=ÍaO?ÒG»ŒWßM|·\ìS\ž–¬uGö8ŒÀè…”j©®f©ÉÊÊ’¤G²Â½ÚúÓä0¯Fjf›–úíR‚LXÌÔ<åm–߬ëŸý,ÊÑ»Á-ø~%'—¼÷+¤°hîÎLßÁiWˆ ̱œ€­)þ7Xw¼[sÑ4Íßžmsß›ú -­•%"¢}–2Œ ÛoZývJ=¼¯­<Í0´nmÍóϧýáù“¿,Œ7Æ9dœší“œ–GísÎù›¥uûkÏŸRþ*=$z&ú«ûmßüúyt_‹}³úNþ¸²åíòÕ2R˜ÏHÛÕþÅ.‘qʘöwÝM>?€Ù‰9` ¶ð¶ë>ïñCÜñÚów)uúб¿ø¬áö6sõºµé÷ýøío™ rû¤¶iª_« |*͵ïÓ¼ø‹wÛ];¶mõºµéÎÊV¿F²Ãu_[ÕšçëMÓ4?صæUûp'¹%þ›Üß3œÎÊ–¡Vsu†³²µ­2ÐßÖWW¯[›¾nmzÆ«mÁ—³w³_zú˜÷º÷èÓÎÕÎ'yÃŒRÛ»¯w›fÞ¾—’•²”O9yˬtð9­Ï <>vìÉukÓƒNëßÿÏÇŸÝ®Æ)Õn\·6ÝÓf…Ô|¹™xW ˜áìÓSÙÚß;ðݧ6&¯½¥È…¦V¯¿½½ÊÕ`šyZ>©È²ÿÛî·}RÛtÕ¯C H¾ÿ!¥äôù¶!5äÓíU›\XõŒç¹»ä·îªŽ±‡„ìà³Òvž«~H)¥6½rî¥{,‰t’[ÒÙi¿YÁýýéÙ–¦óî{,Ñ"¦yÚ}î~ûéåcOýk½ù§åcÏ&³þ…gõ†ÑÞíã#Ï}O©Kû·lØ£_zßu—|u`ÏñËC*¸ìëCí¿;-Jmr&OpC›æéfëå=›Lóâ#C㶇-Õg¥=w¾½ñÓV»Îú]Uö{#¤›3÷®@0ëæ€¯û¼uïüñé­©>wï?®2ÍîO[{íöË=¢TR|œZ’°LDD[‘ÛoÕ´¨5¦k¤Ô¶ÏêEäθä„e"ÒsÙë³&µÃPä}nIggèf…Œ¡%¢ÔÆw¥Úgn;{A©iÉj(ù¾¥.m Œ’·% ËìÇol^l_å⟽QÜ©°/…‡Õº¿áÈ7%oŸû¡Ãð?}¡èKÍŸ÷äÆÉðêLí“(·¤þÐôïÿ³Ù4廉‹•øt|ü]¢.ýðßvßcG%¾àCd¢ ÑaO2ß›%7K‡ö7L÷åRÐîZö·SyK¬N}Hš?©oíÜõý{#ßÄñOéÒþöð¥Iƒç?ÈÊ'Þ~²÷©ÝÍáêŒX˜7XÄtV“Û:ßgÙX¢í§–ŠûÁ}+MóÒg}–JIyPLó£ŽNõû7vjšö¬X¤öÉ^zzê·” 0äë8ø“•Ê-ßqoPw>:þ›¾°‡DØ!αBDzzûÕ8'¹±›<†!OÝïèT¾ÎóŸšæ÷¥-V:d·Hƒ·»óKïPªù'Ïžî³ì–®_ü¼ËgMtªžÞ~ÿ¥eÙÒ K‡¶G.µ×{IDîXr{Ä Íè» À̲”Ž~óY}ýúOÿüHJpãwîÝp‡Rßü®½ßRw?Rz‡Rçöd~ž^u¿R"¢”¶”ŽÔ>©íÆë·7%bš ?8ó±M¸üìŠÒ}¼ð}í?Õâÿ±;[ýé—ÅmÚðOy{¿´”}H æ±;(íÈ)+½S.¾÷L¦Ýö$7¹³3z³‚dìS»ûçöd>¾§Ae¿ºg£cìn‘ºÊ’‚—?¨Z/ß{&ó±MÛ´áótÿÿTm{×?¾§A©Ü—žM±Æm[ªÒ©O¼œgš ž¿º¼BL³Á³qß—Vh3÷® ·Ûív»Ç¾ÐØØXTTtõêUƘöª-Úº%Vª=züÄîm…±[?iZw¾ó¨û¼äíþMÙ?ÄÈzܱ7Àì1N”­ªªb0ÃbýsØyõ92šO”€•=@–¥||# À #1,Ö?‡WŸ#ó¡ùDRŠkÏ‹ˆK3VHÀ"ðÅx¨òͧPè# Àc˜ÎHÀÀ뺯õ•Õ)i«_iñYQŸjÒ‡oÓ¿º¶hÕ› ÒþyŸÖZ÷uœ8qâDGŸÖ±–ƒœ›7oÞìLÐÚÛöù¤êŸB¯cw Ì̸Ñ<™œäí¹ "w:–¨!Ëq<ò–[[íU÷¹LÓ”v­ÑUŸ¹Såó×ïs5˜þÿEÏ}­uWš¡uÇë÷¹ê呪}òÒ ÿ{µÑñû CV7Ârpðšˆ,ZømÃX¸òôÀdª!½mµ²¦0m©aˆH_ljö^CDt‚sKúRžvõJâÝw_»papÖN!æ¹µNtG^ljüjÐ~¬œ›ãûO¶÷:^úƒ'•íå@—׬‘ÖÖÿ÷·Æÿù¿c næ€ÜXöéè7Ÿ•æÌÓ<í¾oÛ‰Ë*иó\õCJ)µé•s/Ýc‰ÏJ{î|{ã§­yî{JÕïªjRC>­ELó´ûÜýgþ³úg£™TC¾i˜t4Œ¥KÅ0zÛj›.ê@cZáš­ƒóâàÅOÚ{çæÍΣ·ý“‹ƒA'éíçfg‚a ~u±VÜÑ¿^‘Ä¥vñýŸ7~umÑ*çªEâmû¼ßŸÝ¿º&‰ÎÍ› ·lIO0BzmKÓ·l),,ÜüÀª…£g” £·­oéÖ­Ö( ˆ‘<Éå?(k}9W™f÷[Å9ÿèé^Ã`‰ˆh+dÿ% Ë‚Ú-¥6þ»+u¼CnÖ*Yš¾Å™  cðÂ''#}š¯õ`_ï5­–Æ‹Ä/MÐúZoßàðžZ'¬Jú¶Ý.Þ¾[»À0zÛOž<ùÉ…k‰kÕ}^Y´0~á"¹68d›º',øÛ …Hš´xþÁ@0ð¥þá¹Ïê>þõßS¦ùá+=Ñ볆,­FÇÙë½ÇË2×nÊy±É4‡ÛCö =äæ'`;oÞüÀª…:r"´K¹688+o¥Ö ÎÍαYÜ0zÛO¶÷†]¹a,M{ðî…Zƒ>9y²£/|Öƒ?9qâ¤} €Ì%>KOa³”ãÁ×÷nPJ.ý¹×Ò>Kì8k¿:äë;íyã²²äíŸoPj¸}Ô>cžNn›Æ0Œ…I9k´Žm†Î‚.Z¸0ì‰"µßTñ+ï^d½ºÿ(Þþ†œ½àÁ^®`,\ùÀ–-Î-"a¿3§õ`wûW×dѪœ |Ñ ÀœKÀ*úmÈ×ñß]'ú}–ÏR¾Î󟚦¬øûÛ-å³â+D¤§·ßÞ³×{IDîXr»Ò"öD¯ÏõxÌ!“Ûn¼ãZ÷u|rÑ?éÛß×kÃv¡ÅÀ_ýùxiÂ"Ãèíë÷ï¶(aé‘iÑkƒ :|L—~;ɹj¡¾öUûÅA(~8Ëik´Ûë¯ Fr€ÄKéè7¥SŸ(“ý×?¶iÃã{ÔÙ±ïçù‹µ(íÈ)+½S.¾÷Læ?åíý_*剗óL³Á³ñW—Wˆi6x6îûÒ¿ìA”ÿT£ùÒR“ªäÆ;nKÓœÒ^[[[[{²½W/\õ`NÒBÃ0Œ…IλɵÀâà…+p&èÞö“'Û{u‚󕣦z{ÛkO¶÷Ξձ†±0iU¢a ~ÕÞ=8\üà…OjkkíîØ¿bV[[{òd»WÝí Óë~‰O[“h½mµ®-²¿/:U{oø'®í¾ò-«+î[àÁÚàó&ðŠ˜NÎ?>JËkµC¯ýÆÞøväßC¾µ»ç¾mð]o¨Ïê±_Ki<Ó½CÄŒú¢S°œù½ÂbeÿòÁ¬ø†¹7§Äë¨}SÆ1êÝ.xÍž€_—}!cŸ:îN/ €68  ÁàŒrÜçÁ???½=À+»\.šà?>>>¼…Àkúþþ>ŸÏ?ÿ6æÑ‹pD‘~ ð¨$8€`_ Ÿdæ#…Ÿvÿ-¤···?þäS~þ –ÏœØXËõ¼ÀÚRI µ‡ïœü»z]Mæ{`ø†§à³(CF˜®£ùÄù{cnu®­^p]Ŷge1¾/À@ë{Q~Í̧œþ0Ãd`ÃÆR¯æíŸvã=ÿ;òïü¿É*¦)½]¬pqJ­JÅBÖUèHð|páù¾IFOçÏ;aò¥^0¾ÿü³"¼’æíõïÚÈ|ù”¼=Ej~×/­X¥ÚVk­Ã {Q¦ÑfçSjÜ;ªadž! ´y!½y±Ø>vÁkÀÿí-§½Š9[Jßpï5ËáÞ[Ί3|cÿì–eWw ?$,þ÷¹ãLo Ü!Á“¤ÞòPÊC ”´…·,Øø õ‰inÃ@w{¼ø±çÝ£yÞTÜ-kŠÍÒy⯾l¬k ¯Xݺ®|§ìÔOšá׿{“7Yêhñyˆ/ö ×¹ .\Wo&.5­··çºXáÞÒn±ÕðÊŽ;Òñçç§ß&¼uÛ_ŒÂaýþýû'Û¿Møn7½ZjGn€‡ Á_‹Ô ¾“ŸÛ#õTïªülßù|ö¯ìûÁÛUxq~@‚ ÁàÏÌóàOÈ#˜ð.—‹E~Ý÷÷÷ù|n?’§àQo¦%8À£’à€}-’Yãx£-ƒ´%µ:ÚïºüT,©R²±Û·½KñçdkCËŸê??[+§8O>È}R¥ÆO$N¯®]$x5}ò„Zᡇʌ_íÚɾO|×´ˆµùå'FæR¼t¼–¼ó´J˜‹ç†Æ«µæê|†)#åäë]|uq’?ºÂ:¸í‹•¹»|çäj±=o1X(<ºP?x>$æ”)óˆ‰OÌ/ ù«ÅhŽ\cŠQïýȯ M˜Ï9…i-Uó}øõO£Øxeºš´[æ£ðmð¤iiôMÁ´8±@£Z—ÁŸ¯.¾ê®9‹Ÿ(Ô.iCöC2q­_{z©6£-h8t/J4óÆfII;±6ñuµvƒ…ôÞ(¬¨LW?xpþuY,Äá Þh0æqœÜïO!žOÜ‚+ú7¶åÇÞ l¹¤—êMÌÚü’Žé¿Å¸\lîMóL$xÞ¢õ=ïA^Ñ\]Ý Žì=o R™¤›¥–øÉl]\E » >=ï‘´þ’é½kåLùù“*óòó‰ñ¢+™<Ón†çûvleNûöƒÏçiDmWˆoì|‡§÷öÄfßëK4w÷ùùé· áÑýþýûçD~à‘Ž··Á“[Ôv(µÄ5´ad/Ê£‡¸7ø°„5HpÊ~ÔÏ/«¡ú”Îç³ÏÑÓ÷®OÈïƒHp$8@‚ Áà €`YÇ·ê#¿”t¹\ìS€Ã%øö¸ßßßçóÙ/r1ÁOÍŸLʇ†É‡kÿâ4°N{T®bGƒ¼} Ÿ±#2'ãÜ'c“Ö^z,]{lŸ¯á±|…ùhgÓlň‘Á˜»[—›î1!Ž¿Ãù9-9 ã­ÈùœÉÉŸ4íç‰\k®6æì*'¿äåÔʬMÜx—°bEÁEzwfcJ~<,.Ò5z5<‡û<‹r=-¯’ÔN⻘Ƚ­æ$_ò2“5æL"£]N¼9Y\c»ÓôéÈKùž_\QoÝò™¯1߇‘ã¡]ˆ{´ÁwÌåÅNó¼ 6M캛.Î<ÅJüî~{OKqûy{¾½öxÝòËÉâ{½8\†»µÁý“ßYo‰¼¯™b£»Q™`EfxI+®qxò=ßÞÞíu‹¼×þ¡+}ßÎ]1¼ Ž~ðŸø>ŸÏí/ÖÓhÞº{Á÷YÄ7Úà<¿. ÁàHp €@‚Hp$8  ÁàHp À#êá¡=:ÏÕår±O—à§¿ƒ¨5^ýþþ>ŸÏFY8b‚_cºÑHO">Wìã=ÖÐbÁ±o1äã´£>jço¯Òµ&‹ål¯ð¨½—¹×®vdÎdTèÞù¡XÜ«ù«Á |©áßwXÇ| ñá©ô”ïÊðãï;j`™CRõ–ȆǯÓ/æukoTþj|_'Äß÷‹òõWíŠZ;Óò{¨®sc^fqbp‘`+ «ðà]gûÕ|½ÅU+3X±¤ÌÆRyõË”iYωW8™¯LWµƒowû o·‡âu+¶¥¸êu‡bï¾ nà‹„øû]ÖÙ¹Å&ϸ!·W‹!æÅútÝló¢k'L÷Oë–ox£Ú+Þµ}ýż½Úë’7¾óßö­@¤ƒb¾läN¨÷Òµî-n 6ø“ô,Ï“¨6%þêêÌF}F] 7~0Xûô¬ý[üÊq‹ ß¾™;Wõkæ)Ï»×LÕçoƒß1Äç÷w+Z¸ÝZ}ŽpÎ4ZǪWz£ ²™‡­ªøæÎmðýßΤ‡®]Þ–x­Kº·õw‹çÒ†7Q{{í#{ò8'v­ÂCªz÷ûŒà#¤Cî36–°nñáÏÈJðå3aþyÈ©çI©d‘b m/^¬F{‘bá5F6gõ)ÚØ¨ü(_±ŸƒgN×Rñ}¾±½ºÂC6ªÝ?ûkæF©½úœZqdn<ã}Ù]x>··øv~~~^.—öwë?>>^ç;™w¿ì»K=ò~8N­v¨É}7¶ø£çÁS?ñ}>ŸÛ_¬‡»t¼Îó¿ëú%žû“ÒÚÍœ68Çå×e$8  ÁàHp €@‚ Á$8  ÁxD#<´G繺\.ö)ÀáüôwµÆ«ßßßçóùuFYx¤¿Æt£‘žD|q â±’ñ…oªð½Fók¯÷µºÅ&z߇ŒF¢w{…Gí½|Dºvµ#s&ãGö”ÌÅâ^Í_ nàþÛþ¾Ã:æCV†Çº`æƒvÍðZÝâ=XæT}Ä5²áñkF2Êð£Ÿ}ù«ñ Ü9Äß÷6ÆžÁS¯÷Plù‹µmoàÎ×°{>‹òõWí²V;Üó™®t^fqbí˜Þ^x»ÂÅjwÂ|b2Ãõ¿Å¢¦‰]-¬bj¯æk/nr­ÌöÛ‘ŸíÉɶ¸÷"åÇß…vsl¾H¼ÂÉÄxeºª|»Û‡k»)¶xJÆwÂâ1¿åPìÝWÁ Ü3Äßï’Ý‘-,ÆÍ^°Þ{œ-×ÕÈ…/6ú’âgl°uÖu³\{×þŸnÝÖ-Gzß…:£ŠUŸñ£®«1œs~ÏÝ>Ø"c~㉰å-nàÓ¶ÁïÒë7ƒÚ”Õç[íÆpÏkr×Á4¼bC>¬}zÖþÀ-~åØùYQáªú5ó”§üSuOï§—‘ßd l.êŸ~äk<ÂQ{‹»!çL£uÜØ‡Á•îÿŽliäªâûÈþ{â}št“->EWK´Zp»œÅ5ê’¶}ߨ‰ì´XøŽÔ*<¤ªw¿Ï>B:ä>cc ë¿ïcÁû%x~8Î?”8õ<®”,R<«‹Ïl¶/V£]κÂÛÞ~($EípŠ66¹÷:ßÅâKµßîЭ8ÕÛ+²QíþÙ_3û7 Vœ7=ã}Ù]xîà-¾²ÏÏÏËåÒþnýÇÇÇS~'óunÊì'ØÇ©Õ5¹ïÆa<èóà?ñ}>ŸÛ_¬‡—²ÿó¿um{âË|mwÞÞ7Í(€å×e$8  ÁàHp €@‚ Á$8  ÁxD#<´G繺\.ö)ÀáüôwµÆ«ßßßçóù)GYxø¿Æt£‘^Œø|°Ñ¸uã·ÞhËxÅe“qoÇÖxcúÁCN9³|TÔŽ]éTÚM+¼Ï.^´ ¾.¾óÖe±ÕÙhŠÇ„Ž4Z×­4ŸØn2O¯.6Õó4ºýÚà¿þÚØË‘·‘MÑëü‘9‹•l4uãkMòF=ñ]«³@vêEY8SÌÕ’.é²èZEÒèŽtJ$‘ݘؾçˆ×3ŸS|û%øÆÄÙXñ @ÒL®u›LÓ‹ŽfS?øã;²x±C#_*é?¹þ·8ñ¦´¾ýÚà‘ÄI24Þ¤Ý2gdÙižébßËíR5¯¡ö>Ðë-R×ǽŸÏgX|ØãxÆãÔóu­Ý½Ã³(Å;Œâ«Å§k´Ä[%øåri·¾ñÜ'ÁœÏçÅy$8À>ú>É”ÎÇá×e$8  ÁàHp €@‚ Á$8  ÁàHp$8€@‚ Á$8 €àHp$8€@‚ Áà €àHp$8@‚ Áà €@‚Hp$8@‚ ÁàHp €@‚Hp$8  ÁàHp €@‚ Á$8  ÁàHp$8€@‚ Á$8 €àHpúýìªA Ï׫IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/comparison_assertion_visualizer.png0000644000175000017500000002566712032647206027613 0ustar ebourgebourg‰PNG  IHDR  nNé9PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<Ì|,3_«3ôþ͇¯?¡Í@Û~¶:±ñX7[ŧǼ]±º7–³/ß<²ÌX©í7nÁh{§ÝQ4ëpy:B—#År ŠG·i+YªNó·Ý1WÔò9­¬Ô~˜Hu¹¦Vn!Gþ(vÊýQ¼Î>4ܶ2í¾hœL(ùº"(æWa<6CÇãh;(ÀS)oxʶÀ;´jƒcöŽ®3üj¯ö¡Æþ–×ÊQ¼NOóvõ¾MÙÞô·­ú¸ýQò›î>‚2Oy_ šO'”ü ¼øÞæ¬Ùà¬#··šP×lÊz§¼å²S·¥Æø²ÍŽ[&Ñ[¬Y-×r ®YªÓõ%_Ù0vŸ¦¿NŸkêÜ}šJnu_4ŸN(Ù ]Ç>Pßq|-ÇØêÎ eE¹´+„¼ó6µ¡¶m}¿#ÇåÕv Ø'\~wÚ´+ò…}`å4L?­œ¦µy€‡ëc(ú¼Ú·/'öñ'¸ÌÕr_—ëð¢²ãrQcÈú2oÃŒó«ûÙkßò;üHŒmÃ+rZÆ©Êi£T/—@v‚žW5vBw™©ïÅ<¼¯¥roY–w€ZBWú#Ôü~™_Íë{ÖÎPcôÀØ$FŽí‡Ýo!_Þí >Ü.Éwåh;Aõß9É_ø)T{šO'êú–q,Žcè.ŽŸ;,ëVæíy¹|ÙÏçÊãpäoËñ}¿ÿÆòÍe,ßé°eeSt23¾¹íbìo÷Û•v ËxŰ%íã(älZþfß¼±á‡ý´»ño](‚ãç¦ýÞà}vBQ®yËvBæŒÃ›~ÅN°cu‡×ÊQ²6¾ö=tõ˜¾j'Hk—8ý1}tö±Zæ©ì‹ÆÉ„’°*LÞ4ãx;wÇÔ ].y·²NÅNPãð-+ÇÛwd9òí¼Å>›¥6 »_y±¯öÛ eŸ‚•³U9Þî?ðʾ„ƒÆ'”|ÂâÆ'pš{&P|« Ÿ çðWiLI |GD‰R¾#¢D)ß@v@þaQÀ¿ø"ËZ>]ÿ7¿þT<ü5Q¢ BŸ-sý;vÂÇÏ0–{ÂÂàþ“¬ÎNà,ïÝCáî#f¹ðjý >/†=ƒÑ‡>3þɽ?Ÿ×úØÐó¯ë¤FúÌüç.àOøø1ìÜëù÷hŒI˜u¼qc 0ôÜë)’0óXg}v‚šS}ðùÞ°s¯÷ŸÕ-F”è¬Òsï}¢ì„¾ø„|§#ã÷—»‡‚’x{Ø'{Õ'{¶O‹ûË¥À|[ÓÚú„N8Ñ=)Žljã>~&æE^ }í„tEaÔÇTº’†{ÔÇQ]y ®+ê „ÃÚ &ù®Ì}ªs†ê|¨*¯¨µü¬lã9Æ»z”Ix1çÐïæ1n#•uêI‚wóXwÆjE¹nãÈô±½#K>Aò(V?wÿRW¼±ê“–E'Ÿ0ØNXÞšŸð‚Ìü¼Ûðs¿ùF»k]Ñmv1§P;8…y„ºËP'ù/ß`>b¼†/!ŒDB–ýïÆ^É ¨¯îÒXÜP—…:”á3T—ë6®ÌëY@€Ÿ+äÅþAVfåä(ÛD®,¹?AáÊ i#èë¿äO0ù¶X§-s55Lž¡fÓúxer–‡À— `,Ô5Š"¿*—L;¸@ƒ´T–eª:V©3rl1WûJå•þч>Îg½äOð×à>àxXäþIx`¬a´2|¾AæŸìf†Ï_»¼,GãƒÉû²§¶5à ‘Äifëƒ4N˜­ƒr à‡rÃ4Æ´A~ ¹ò4¿–¥†Gø”²x‹}3ã[Þ4(ÉbB+Ì\Ï’Vü 2·ÉKäæZml5]‚/ÇZÛ8ΗÀm ÷¶Ãh…Ûz¶…‰­ãj,üPŽí¢9ö‡6(3êÊÓüF–,72€7¶¼1ÈÉ ¯´eY46& ´ä8IX;ÆLðQtÃøI#çÂ;vÃ)Å ZCšï¹æ.ïYðXáó4·õ±®Ãñ}®ïí8sB9 RUž¨r_MŸy–ßgJž‡û˜,OíþS%?QüºO’_ËÊõ‘(Q´rm'H,µÖ`Œ¤sDlBt2ü΋uÒœ5Z§4ïK86O29öÖTß¡•àÈ=ŒyXÌ÷CYáE%g^WhªË¡M“AÊTò’PØòºya½lK9¡ñ?Ä÷éôæÑ‰öùÌõ?‰÷Žöô óÞQFJ&Ìæ{GŸ@Ÿüœ»1†øq÷ÜGò(ÑY¥ëcˆOð=^ sÇ<|~˜!ã „iÆèñ Â<à—ƒâ(>ÖO8˜@ Ìþet;@˜ŒìOD9MRÓg†>£ûSúÐg–>#û€Ó5a±ü @Ê%Ìöð't<¹rýædÛîúÌKôº/Ñ¢óµ:¬±Å:™‡mWÖg&%:0ßQC}ï ?[ŵ—Ûð„Ðèš\Hm?¾6oÈzõ](²se'tÄ\Øð½½•uÛ <ÂoóæªÀ¼G;M¬÷­¶ßP3íO¨æ;’ù_„ÌeQÎw´fàe«ËÁ²ª×<ËAæŸD9”C‡0K˜ïHŽÿMîÓJ¾£Ê ÷éµÌõÏ¿ïgü„<*<a¡ ¯}Ųe°Àð)× Pö'‹ #åø¢D˜ú#æ7"Jt>(Ù B½ cvÚŒgn›øƒV{¸ñÖð•ã:•úÈ×rm|ƒÜG[í³¾?Ø—=÷[#—@ÅŸÐeÀ„@Å3«rŒKf^VÅ9;eßP‘íÊU< Í׮˵¤Ú”åÔóÔ·'çOh²v«#ã“Û¼ wÚCˆ†TåBÚn1Y'Zð]Ö)H>[Ç:‚w ¿®œeÀƒq 6^Z—ë}Y”£ÊìþTË%Fó'¨ÜF&ŸF°•òOó"éüGm›ûHó™¼H27’Ðån›¢Ìo>WÎjÑ’n÷g0P.pX;aýÓO×me«BÝr·l'[môÅ;ËHƒã¡«eÒ€6¦ ó,)ÞÕ>~†F½ÜOå±{a ?áá5Ö_VùŒtürÇ,d¼²c¬³ãóR̳·ÄT¬3Èub¡a?ɯdû²î/(ñùFžê‡ò ý¹˜É¥yr¢{Su½×ù®JÚ„‹ª)0?ê–C™|G*^Yå9º Ûó,m'/Èk68ëH¹NÎ$»¹Ýl.o9ó¹2oRÇ”«}o–ë­~¹D‰¢Wúþ–¤8þ–¹Qµ]0¤Ðöe't¼ÆN°¹XÚ ûÚÂÞÐ×{puà˜óžÊ±{³§s™çhUÈñ½Ê‘Šü˜;U׿Wm¢O`µ,Ó)+°*s­b¹¶@NÕNÐûdÔÊ%êpu ?ÁŒ›„E@éz/ù®Ò¼2apu ?¡‰ÜÝçé»ú÷ŸÞ\ó³Í³<Û\;ÿîad@+ÝÞÏÎ_gßôõ4þ§û»{Ç'´e¾ NG¨|E‡Àú\¯ß»Î*Ç{9ÿŒ:$I¼$å²ã²Î+U«cyŽvêêu>ª2Lî)6Xfoó6™ÿG-tÝ´9PÞ¨uÛžùº/íC_C¥ë©_? ßøV­Þ ãõ}âl °ŒU&;aÂÏo9ØQ~ë¤ܪ”ÊŸ0àÈ8óÚ:;Þ_æ”×¶sÏÙ¹ë*çÕÁλ{熻­ë>²ðnU?lK¢Tóåƒé¸j'ð¿­¾Æ_}©uÜ ¾·<ýIöÁ‰Î½÷މ{Ç`ÛúÉ=,û`é“§Z]_´—xõè<Û ¿´r¼ßú³Íè‡k›‘wBÓ{ü©®ÝÏž]º¿ûñéMþññûOýðäý§¼¥ÿmGÜßýû5]î¶+ÑoþG”ç©Ö3è|ÏGËÝ{ðtç^åÝãOù»§øô9ʶNøO=õÈÿI¦eÝÃsjÎÙÿyÑËo½ˆÞ+?…²™<¯ZÖ'Î~Šï%=\8jÚç·.5}J^/'Š~šý*9J~«¾Îöí§ýtáG°yúØ ¥CoéþS Wîg’¢Žùǧ»»ÏžèîþýÉâôéùÕŸâõ^ì§êO°ùƒŠœB˜#ó5u¹A³È7´Èþ„ç²bŒ´Ë>\óSÌû¤(O1oÓ‡'}„Éü¡ËÝv%zçµëä¼SÎ7ÕwŽdž*™Šyn®YÌ?ýÑy¬€2™W*°Çqþ]¹ï5üûäiÅïéãg _·X/C¯¥Ñðêíןðצ½Ÿ}ýz‘;WçªÝóZª­+®§ëeýÞFý¡•^¥ž•ÕS@êY–«:­ÿnWÎÓ×÷ñ'glÚ›ÁæFE;a§l?”ëÕŸðZëÌM¸Þ6섟wØ @aûCñóSì…›=Ð×kâê~ª+þÑ”gxWsÚKzYŸ9'¯õ cÿ&³å¼Y>[i›h;¡8ê¼5mKuÖŸpóËoÿ­Æ:sÖȰ<î¹®;ïë¶ýßÞÜ0ýØQùuE?›èÏh˜>m©ã¨­+®§Š~_vºb ôiõ¬ôˆý¢ž¡î L`ùmÃW=OëÏw´pv™Ûãÿ«‹Oh¯žçï/ßËÔWwþ{\üø5…7¯æ¼_øžiÿã×Þ|w¬ïýõA4·Ód[Cp~Þ;³ðÚÍ×nnŽ•ÖÙ [íR^ÚÚñ·³Þ]cµðªuoþó›_ÒØ8Ôy_·í¿ôæúxß;:þ¾°sòçÙÖ0üŸ0n³Y1Æ~Añ özzrú<¨øø_dùæ‹,ký««¨Ù>ýÂÑyþ%¼ò¹¼|¼ßòþéÌw?7¾ûÕ‘ÏüÐ/üxúüë'Ê×;Ù #Û ¯cì±â˜km˜qâM²Æl'|ù»½ï~ùVïÖX)Å1×Ó$ô ôÄ'¼{~ƒ‹Ë—ß¾4´ÏŸðŒ@O;ï-“~ü­o`®§ïM@¿@¿Qñ' €c% =n ÆÿøèŸ{þæ’²¼|¼ßzõ¿ü;ø{õâX镯Ž|æ&¡_ ëO”¯wÊ‹J ¼¨”•@yQëý \,õ„EÁÀø„ÿía(Ñ… ã„ÅE1nºPÊY3=˜öþfKµþ„_Låüýõ%1Õý›Bzl—ô0½îñ¼ð]ë'œß8>}ñ=ÏÄ4÷o é¹÷Þ¸Az‚Þ=Ž‘!5ë'ì^¾1}¯70õ¸—Omÿ¦½¥»ÇIC][9˜Ëæú_‚1ÒšÂåõú¿k_ļóè;üÑóð‹õw?Ø£„2.ܸüéa¨kKàÐ[_ÿŽ?á—nÔ¾ˆ|ú5ÿú2»óYÄ0ýÃñÜ þѧüÙ}îîqÒÂp±&ÊN¨ú.­hñðñ#/=þò×îœþÌò ‰Ý=úGŸÒç»LJæcbÒÕõï¯ù9‚¯ùo_Á±S?Ø;’Þù›ßÔ×OpRsÿ+~þÜàþÊxn¤‡!p…ÉëÞ\ÿ…?áÒ€q8»¨è—¿vZ—Å’Æ,ÞŽ“LÒ¼Ä3z<@ÞÊòݽúG(ž ¤‡!cM¼Úõ˜ß¾"§—4£Chzço˜.÷%åyDþx ¿‡©þ!ø}rC¯0ìÛ³_qú—¤ø#c)Ð4a±¦ÀŸêz–§%9Pž¾é|éÈÇ9F Ï}Üqªõ:ÒúJ™¾IÕéÊÓÃï7‚/™"=1¼žŠëßÉwticÀ¼ëCO?Nî°Ón¹@ÊÕ¶Àr^´‹£±æwmÿ’p%Jð Ð0dÔô§FŽX¬yòK¹²ÐTê)`a¸Â‘ç©O/\ŸÇÑ^OE¾#=FBl\Ö¼W¦ÒNP¿¤¯iAž¬Ç»>¨.×O‰ÜÈïÉíHÓy¢hp°Ž›þÅ!”‡1säû–¦PžfðÌ€Ã;bžÈe$êÎ'±Ö|‚¤ÐN>I \mËz“Èá_*'E~u‡•ûIcÕ¶ÚAŸF=Î1Ò OÚ iÛxÜ™­–âñÅ~œfØy|€4]õëŸ  W5Ü…rµ-ëAŽÖNl(}!‡ÞOœªv±Ô;>q‚)ÒÜ0ìµ_¶ì|ý¯¾ó«¿T(Ù €‹ZvA†ß}U§¾£°¢yŸíÕ?_ÿÐù™¡pŒÜù"A_àŽ˜{¡ºÓI _Ë@;3È·Ãhe+Œà„É»)œÈš²/Ã}«ƒ)Áee'(ý¨ã×u¦ŸJ70°]™ã‹¤~8ë×WO %t‚?®tr´núÊJ¼¨³˜ëš˜ i;i»àÏŸÐz[—3¶¤©öØø=Suê;Ú †××t4H;!Óv‚ÙŸ´ |kpÍËCù=—ûÎ"Ó7¹ ''‘;&•€!V,<æ dÛPí‡Ër]–yŽ<—×·:˜h;ÁW¶”|¦iûÀôS놻ÇÁôv¿~Ø’@žHóE²mÄŒn"[æ3GžË›ëšðz*®ÿ:Âê?Á~ûu©Ç”Œ÷Ÿ¨?÷I³ Œ}àôÇ|—|nx¹¯¢R&Tö“$1wdI^UVû™ÀqÇŸ6ü"eØ~ê㕆}ztø,oš$N»DååãWeÕó1“þ„wjý ˆw˜¢e;¡úÝå»?Aí#såûõM¨ð  B}÷%ô¶â;_˜Ùû} ?2aäê2e‘Ç ^³¯©ó'Øs”Ù:áPáèªÄÛ¯_—!O„ou‚N£ø„{?;`|ž¨ï/ ÞÏ$œíø„Cõ_*ê€í’`æâzGJ‘Ò{wwyÒCÆ'jÈ’ðñ ?‹¦í5‚»ÇŸfÈb§Cóû_™¶×-Þ¸áÆ'x™O¸°þ¼ö'<1Mïç·t|‚íaŸ|Žâ†»¶zûÄ'ô–¦érŠO ø„Ï*>áá>~ù_}ghP|Å'Ì‹?¡ï¼uí-ÀÅ¡(Å'P|ÂLÄ' a'ôÅ1ÿ g‘ÌlÒ~ô ²ÈN˜;ÁäzOM/õxiº©ˆcþ]Ü“K£MwI;AxÊNxÒ“ A ;ô±Ïtsæä;ª‹OxXOÐqÌÿ ×|xµwuhŒ=>Näñ ¤Å'ðïû?!ñêå×õcƒ—#ÿã_~é7þôÂÿú†*ûⵋÿ l€#ÃÐßíöÍ×YÆÇËžtûGØ ¯}ås¤‡¡®-xœ0×?ÿ Ñ:áK|ký¨búõ‘Rƒïýwµý'/}íOÿDÖ_;õ´îÿàTòÛðËÿ¿¬üÿÿ§k¿‹ö|_Azd´ÿþÑ|ó„·ûS·„}NðþcÒÃP×–ZÇZ]ÿCøN`¶O«ŒG½Þûˆ6ÀûvÀíÿ Êß‹:Y6¢o‚ü äO˜ÂCVŽc~x•I€I; Wù®êþÀ–‘?ü sâOè‹c~ç-&ýLú ”߀¡ÿ€¡Y#ùf:ßÑEÃüËq̯²÷O½ê'ìêūٷ¯Á¸ÿePúþÈí‹W¿ý“/ë)ßå;š…|Guþ„ÊtÓ鬡÷ò}íëKøÑò'?a¦ý uùŽÔvío'üèCò'?avü Ãä;zÌn_“‚Ó¶€± Ó6ÁcÚfÀíwN}¨è¸óMQ¾œ)¥:ßécô|GÕ¼¨½ŠOm\„ŸÀE¸ó_¼†6C]”å¸} l†Éú1ç;" ™ïˆp;a¿õ¬Oà7ÚN8à{GäO ÂLúªŸ‡6Þ w¨÷ŽÈŸ@þ„é÷'8qÌ÷.ÕÇ ÷Å1ÿå[WñïâµaèŸ-ŽyPÿeà3ô0–8æý@ñ Ÿ°ñ ûM?}¦ñ ±Õ^e_¨¦mI¼`Qü .}K"õ™Vô’Šˆü û â2^áÈãCÑqûøp?½®C5Q¸ëÂòUo'ÂtÍûöù®ƒ óòëu lþ~³­ò÷ µü•ÝÖëø ãOðäñ'Å:j½g;ÕëCÈu#êôGþ„©šóí_?A­“`Ö1ÈMþ~½­ó÷û2ùwsüãúÙÂø„Y'Á¬c ‡ŒÎ¶Yu#óVõ·€ë¬UÖO˜²÷}ë'ë$¨ü&?só÷g^•·eW>…Ç8±õŠuôqûVÜÑW–·eNÛlîõ4Äú Óô©[?¡//ÝúÜ®‡ òùGI³éÎç?v¯×We;1Ûj ‰°nM„O˜&Ô­ŸPÉË_Íßo×;HJùüÇþÂÄ'xî: ÎZUýyF/è gÐW:mkBLÇzÌÓb'\²vB)/^“¿_¸ë¨tçIÑv1â„»N‚>n!õPÖŸ«+\/".ÚR|ÂMwõû"™Ýç¿Sᇊ/•Ó¥z;ñp.\æðП ¶Y¼•þyó9ö'„ZrmìÐõ§èm¥/ô'¤¡£ÏB åO¨[?aš:Ü·~¡ÖE¨:Üæý/‹fIDATüËõF\×aD=Ï-¯Ÿ0{þ„tyñùâQä$äO˜vB4Ò‚Q¸0þ„•h9a´vÂÞñ Ÿñ;äŸ@ñ ÓŸ0UþúP|ù(Gå;"å;¢|G|=f6E´=f/IãáÚ§¹—Ô×§#¶ŸjjÖcVoßÓ.–ëL×Õ'#¶ŸjZ^ù0ñ ’öç;J•(ª½èO8µýgŸ ß¾ªïO8µ=Å'ÆŸ£Ã(,âb&ã&Ÿy§æ=üØwã,ÊÅ÷oÒÊ{úi®âT¼C¢ÞÍA òU-w†ü ).$ÕãÓz@­(}A½pã,ÊÃw“b£­¯Ø³q! gäRÿ2ÎÁÈ%£ˆO@¿@ñ½zç>«Æ($y”¹ñ š/´ï߬TßÓß–|:ÞAÇ2pýîN 1Kñ LoùøüjŒBì…¾Ÿ ù”?AêÏèC·á±ÕEËé÷½ŠXŠO˜||3ïÚ»ïàWß±·Ûe>Ó6íO?P¼*ŽA¿×Ÿ³0EÞ"b–âÔvùøÊ1 ¹‰E¨ÕnÇZoN›Èê"²±œÁx‹XŠO˜||«Æ&8ïà«wì‹÷ð«|¥wòÓ$©¶Qß“$æEû*ÏLûŒ¾ô±›²Aq±ä×úpÛÀwfb?Lû*ÏLù–à×ÀÞžÆ|B—o ‹çLÿ„y‘Γã}¹íÄ,Dú=|Ͼƒ_æSr=å¾zÉÌiƒ÷;&Ã>½¸h_ȉǾô'xZiXÄm”ôX;Àè¯ÌÇŒnÒO¨¡’Ó&YÛ"iѾ;¸rCÚæúŸ5‚Ëã#[Ô½ƒ¯ß±·ïáó*c¹¿`âäøØŒ­e¼ƒ}ge;´<³äOcyÓw^§/u챟Pð1c'è6IÑ&6q!RÏV—Þ@4Ï Ú KŽ?AÅ'L™?á†ò'ä¶‘Ž7ÐÔÃæ^ ߱ϡ.„‡5œš*ŸœQÁ;X˜€±çcü³jãc™ã÷¤òòÔØÙÊ)‚>.{|ú)©ã¾ñØåq¡nÒWùÔëëR!èõ©õ—¼”Ë”žWÿFîløÞsý 3Ÿ0±ýø>ÿÔÅ'LL~P|Â4ø&¶?ÖOŽfŸ0þ„‰aeV ½Ïzý„hNôDñ Ÿ@ŠO øúP|Å'(>âó–ïh¦ïh=æ)™nuý„Ï6>N$­Ç<‰øþ}?ã'$^½üúô=¾ù:ËøïxÙ“SÚ¿)Ä+G_ùéa¨k ž'ìõOþZ™ìò'?ü äO ùÈŸ@þùÈŸ@ ùˆ’?ü DÉŸ@þùÈŸ@ ùèCþò'Їü äO =?ü d'?(ùÈŸ@”ü äO ?ü ò'?>äO }ÈŸ@þùÈŸ@ ùhúü äO ùÈŸ@þò'?ü äO ùÈŸ@þò'?ü äO ùÈŸ@þò'ìïOˆ}æÉuƒ!Oµe!®5@?œ“Ùö'ÌÜzÌB–gx‡OcäKc¼x ÈŸÄ)Þ¡€Ê;yœ äÔò|¹møU9H@9²> <õDûñÌ:Í™?ezÙƒêõ˜={¼êø´¾b&õ…[xœLê‹Å%}Y=§†ßÕclëµ$­¯ÎG@ë1?R‚/˹¼Ex7Z‘w£ (œÌí0Â;•ØvëâHÖIy™–!ùKmÔzÌ!Œñé¡ö#4â(›9‚0Ç«OëË]ðØ­ÓúbVÏBó—ÚDº~ÛÑ)gI<ãvŒ‘Öü ¼·¯0|lL Oпg¿bû—¥ Üã`Ôw"®z0hè{8”¥:¦À Í4©Ù§¯(¶eì+’e| u3oËÇ>óQOITèŽ+Rǯt‘G¥:s܆úš¿ÔF×§þxàY*÷‘†0Œœ™k‹×ÿÌù¸Ãâ·Ûp±&øÈ¥©K“ÄÔIÊ ~!‡ Iÿ޹܅´`LÜ/{úý Ðwe0«ã •¾xùøÕÇÔ¾¸{ü¿lãè‘á9<Ê ÈŸð¨ý 0>eŽ{½ Â\žðX‡õx5cö>¨ë¼(”<_ËÐü² È Š}zŠ ó ÒØgÍŸ /Rs| ¯T—¨êËÔžV>~Í/Û8z´åe9äOxtþ„òøƶfܯǫºÞÔ)#¹l'0 l³]ìS”ÇÉgѬù„¶§ÌñÅfÜï¿®7u¹ÒYÉNÈ-\=š²¸$‡ü ÒŸ æùáÙ¬æúõ¼v$μ6΃£_ …'‡ò#˜yuéHÓµ-Û?ÂüøBÓou|Z_q”8~©ÇЧ֗=~Ðc±RÈ?‡þïæÜu%ÎoLa€ÇGÏ3ý»÷³½û§.\zï^žà7nìáHOšÞ=.x¯e®ÿ™ó' à›¡ùþGäOP/HOsâO€Þ£.>!"Q|Å'Їâ(>>sàOX£øŠOx¤þ„üî›.H;aŠû7…€gBô0Ôµ5ÈŸpŒMåt—˜òþMí-‘†¢ƒâ¦õB›öþM¥”×ç;úªŸyð¸ðÄ”ÑiïѦ¼.ß°Àpü D‰.0uü D‰.0õz¾à°èøÿƒ3vA SeIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-request-confirm-raw-body.png0000644000175000017500000004451512032647206026710 0ustar ebourgebourg‰PNG  IHDRŒÔX:òsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 7ˆ<§ IDATxÚí{xÕ™ÿß9vn„ $`9QS 8 !´ADÁØÖn…€ÖòK©ë½PjŒ Ζ€Ý¥táBZ»Ø¨.ÐízÓ–REd}‰iQ0`q+eÌR%–È=¶ÎüþIÖef,Ùr"ËßÏãç±4:sæ=ï9sÎwÞsf†€4C ¢¡¡!ÙßvìØ±~ýúœLƒ6?ù̦·¡b2ûy|ÓÆÛ$y©"5-Z”†Ö8p`ó“Ï ¦-i'Rï¾õ¦… "˜ ‘š^œä Ý`p€H"@¤‘ R€H©@¤M Þ8µùÉgIv÷­7ÁÝ™jÕ'ÃÉÍ€4©Dtçw+Ô<úÄø:SAí£:àd8 yrR3Ý?wv¶ú_LzQìm(.. ¡WLä@ÒŽÅÅ ½¢ùyò$Š~Gͤe\†%]üIòÞÄk_ÅŒI­ñ)Ô'»:ÂöO¼8ñ9ˆ~GMqÃ/Nê‰y2+å”;y’ºŽÉ6Lô;jjþp•õ6ŒÙ¤Oÿ9vž+ŽJwùSt›÷;jÂÛk~1>“q˜4Á.½8Õ'{“H¯•T[MmÃN‡Ñ-5"õôÙ3Ôÿd÷âÜdkooo·™8wZ“õ‚ lèêêêÚP “Xž­-}Œ1—ÛsŠ«3&ÿ‰?U(UúÕ†Â1k¿£££££ãÔ–bj´ÃI®ŽIì…{Jldíl*פ´ŠUOÌÉ>;Æ×ã¥ù™B¿)6éŸ7O«)M£Å)}éÐMð¬LUq‚ÝQkU~¨;ýŽÚ‹SWÝÚÞÞÞÞZ­sZJj~Qýmµv¯®ªµ½£££³ÓJ¶Fé7tuuttHZ¸›Mʤ è­U:òÚ+Ó-¬“Ùg"©cpèØˆú_²’¸ëÅà…ZImk¿ú%HoCh‹L>DÔÛ¼à»æË}%cŒ¹,%òg”(úÛZû«lUùœ;[ÛüqQðç×økr¹…WÜÐkvè²»ÆáF…B 1¦ ½¢(öÆä߇Ž«¸á5þZLcE¤B‡îm(ŽuŒ»öõz}ø§Ä³ŠwWRécËŠàÉFqÒ¹Jå_T&…Õ¡d‰R¡äªÛÐÕ\® uÁ ŽÝö¤ÃQ›‘=1eG‚×ø@T“ˆh‰—bR{¼ñ99ñnD%H£Þ«(UA|ïcJ×êq;Í}Ì¡­FcØ0õ3ܳ©<‘heü)œH«Ô£Ž»8Š /G›7z9fïcÌ\Y¦AДUšë³oõ ø¼D”§Í‘.Ì4åÍ©Ñ:jÞ–Ëv|v‚çH¢î1©¯1O´1Ï”DÆq"òµÕª¤ì¸â3Qr—Jä>ò4IÐá¼&Q¤>6¢þ§¶ó ¯ŸˆÌéìò4Vؽº*[•Žœ–Æ`ÄÓhq1f²µwZ‹Ô Ã\·Aº(‘ÍÇ僧8ƒ×;wÖ?ÔY/]kÖwÖÉŸÛž­ö¼Ê2}a‘ŽÈÛÝ3¨N«‹ËÍ僧º˜ÉÖÞn31—5|â…M•.—ûZ*KldÝR­#¯ÝÖæEéꪣ£#|=í!}ªµ‘EëêÚ°–­ÉA©­‚¦°HÇXŸo Xº¢BM2=TÅW.»ÚpYø3mït]ûÑEPrW‚éÃe VÕ`O·—¼ö­RÙ{ºI¥hiÓE±·±Âî%ó8B )¬ŽàÐ+g‰l¡d{É·¡kCAÔ)%ïXù su“µÝf Êã81£šDdH°©ïñRçdõn$‘I€º±úÀø*ˆïÂ}‹dR×*н!uèpèqÌ3ìœq\öN¤¿U)õÄ‹#g¨ÛÅ™ zò¸Ä¹Iò‘Þ`✜né fbÌ%VS»šPóö¸]Œéª×…‹YØñuÚ9ÒÙð92¶{ãFÌDêK½½%r¦Œ9Ž«uzª]¨|&RT{«b7«Ôª•Fº1®W¨©4©ÇGÔÿ”üh5•-^s½4’‰b¯ÛIDyZ½6ˆú}~QE¿¯Ÿ8Ï׿F]¥ÉN7Ô×éUòééö†¯;‰¥µµöW¯ÓÇžE ‡„{º½ÁÎEo0qîíî 7è ©9Ú<ésSYŽT4¯¤e®JÇ<–|ÑÈ!§°(Ÿs§ÛCD>**ÌGí‡?_[b ¢§·¿˜Hí‡/¶ÔÝ•¸{ƒ^ìîñ‹¢f„¥ô²uŸží1—¥¶ÍŸüeèøª#qKd %»WKKsY#cN QÌsSeYNxT‡O’:1Ã'VdH°©íñRîäD»‘ [J}K¸å+^ê´¹é0'Vð±OáDúÛdúä‹#ÓY]<¿j‹Š3‰ˆ¨`C—ÍÄëk©4¦p¥ÙDô ÙÚÛ›Ë5rýá„:íÄÏ‘1ڡ܈9ññ:©3eœg\2=CeYNð¸Nw¯j7ÿ–?Mwø¸¯I©'F¸úŸò[|M0æ²­.ÆB- jR#©~_.Ÿ„ñlméëk©4–––V¶ô…Ï¢„÷;\2#‡37JöãXIåSX¤“Úœßן´Ÿ#«øæk¯&¢ß<¿3±Ú¼ØJÖ] é¥sÛë Û© ÏÒ€Ïk6è§@;„‚º-Õùœ³¾–J£1Á{¹&XÉZW(Y¯¶Vås§%6Ì#»ï˜ŽÿÄ<Ŷ$šŠ/åN>U$Ù;…4ªúTÆÄ:LÙ9ý¸9GÅS8‘M´ON¬8£cÄ"u*­`M¡2˜À€Þ¾¥ºßªØk³Ó÷92VK˜”æ7ñ3%ù1eü;ÊY¨6Ò©z‚ƒ×$ŠÔá®þ§¼«~]µŽ1Wk› ÉÕêh|k½£‘Í'W«K"ÚÖÚ/ÍtttH½€úÄ¢¬ Q(GdŽn³{IWÕj3q>Žc%•ƒ‘"¯o`°§;ϬÏcªø×ŽÎ„k"î’O/Ò˜»ÑíÔêË*ÍDÞîž6·Ó¬R´ôj‡‚¦¼¹«ËfâD”ì½\)ªKwNNYS½9ê. E‡Œ¡N›;®3ªIŒ¶ Uñz¼”;ù$®‚äz§p¤J}–füf|K“˜ Þ—™H‰&Þ'¯8£­7<¹Z .” hÊšêC:ïÔè”SV©|êø;íñ#Ê-!¾NYó›à™2– ãîdvLÒ„=‘Ák2Ej€«ÿ©¶ikU>÷Úm¿š¿ k…سTZ*‘À‰-›&0Œi—‘[F£5ö¼ÊðýÈ‘‹’=Ò^ÑöDå¶Áí -ÓIb­§ì¥Œ¢µrEK.ì—SX¤#§{«/Ï _íKŸº=©Ú¯²Ý¥’^o0‘Ëå’¶è fÆúZZ\ê}N¶C}]½‰ódûÊd«#\® ‘qC`Œ%²…RêÈ)Ý% â… û}ƒ!“¤»Â•OÌ1õ‚Ëå ÇQ“*ÅÄ{¼Iu²º¾‘ë©êU« ¡¾%>ÛŸWm—‰u˜I ¾h‡$Òß&×£¦°8úuÕáEÑßÖêä<¿z^{Âw‚J4]•¢=¸¸_Î’‰wÚ©:Gâ;áTÔW‚gÊ8Î8J¬·Lz0’µPé4IêÐã¼&Q¤NdòkôvE[›_5åÍ6ïk©Œ ÎKg©Ëjtê¼"‘ÍGSÞ\oöJ…ÅÅ Ê)³Vëȳ '¼è-FÆå‡Ö©è×÷jÕV‡íMLn’ .«Ñhuq“-r™ÎØC{½™1—¥¤µ_'-oT²6\Þè¢éãsP»¦‘Tª“’רÁÚoþÝŽæßí˜ÈÔg²îRLŸ«Íçœóü`ØF¿®*?âkÚ·Ãð“ŒF«“tÕÖ²¤úÊqTGÁ†®Öª|ÉHəᵹ²–ÈJ%LØÔ©µ¿¨ä¥ »m%F«KZó4扩Һ¥&Ùe&UЉ÷x“êdµ‰ª¸ž*¶Ù+÷*ñU Ô;Åì(“­G}*c<=À¸_Ì)œH›tšºâšò¦Îz³×^i4•v¯¹¾³©\#BA•l%%Á•_µ¥©,%²~|úèâ~å^k|ödœ#1ðDÆë¤Îõq\6ŸDÆ”ñ FJç²ÒH7æ¡•jjB×–D444$ûÛŽ;Ö¯_àÀõ,6?ùÌß›¿¡žf‡ó9¼E-ýŽÚ {øÎ¡ÄAí§SÒ³ZœdV|òœ<¥ª ·¡ØmèÜP€‡A¢ɸÑ3;«)ŠÔ\´hQj^‹ºÃù=•Ï1›ÍÞǘyqTÔ~ºð¨89ýz_¿N»ž@ó 9RI é‹"ÕH*ƒƒ@º‘ R€H©@¤ˆT RD*©@¤€t'{‚ûol~{:»ï‘š‹#¿n~ò™éPê»o½ gÒW¤nl~ûɽzÚúîÖ1F¡Nõ6M„8¦ªH•ê«„§B89ŒsM***@z‰T(T(T€I%éé~u…*Нþö¦{zبö-¼oç·¿*LC…*н%W„+L¶ö ©qELæœçWoi*׉ïë$s}g] à@’\$5Á*ç×VoÝÙüèZÎwmú黢x’K%НþæÆ«n¿qódzÌ*ç&[{{{kU>çNKco2öˆboCqqqqƒÒ^áÌuäµW$—9@:“=‰yŸ½,—èC"Q|í7áU)¶*Å\wÑu5÷Só&ºãé+ߺY-ý¡íD¤­üÍ=—ô<\Óô!­¼±Ù^|Ž@D¢8°Óú­¶~Æùµ5Ï|%½&Esmo¾‰jžùþ…‚“æB!Ö€šg¾¿ò#ÇÃ5M>Æ$-%K+r´yDÞзކb«‹7Ùº6%©ßQ[aï ÝôPÇ»Jïs1ÆÈe)!µ¨gtæŠù‡‚¯\Ó´kÓO¿úÌ÷WcÛ›_­ÿų—‘zû£Ë®iòµ~»Ú}ǃ͵¿®izö王låKáù­gß[yãýÅžMMÍ¿¼òU—ÞòÌÃ$ ÐÐŒOCш⫿­iú®«Ùš:mÆãv1F&C ø5V3ÙÚë¨ÑhµÖh[›Ë5¢ØÛXa÷’¹¾}TŒtÖS"óò·‹1]Õ:)lþDäi´¸3ÙÚërÛj+¼D$šÂ"]K_Ÿo€HCƒ¾~]Ѻ S¨ëîúNr@f³õçÿ'ˆÔDal»}Ýv"âyw<ø½µ£?„b«a8¿¶&2jš\¢ùµ5¶òÅôZ.чï}ø7¢Åâ«ovQÞ9_Y–Kôá_÷~,®]m¨œ&ÆÆ¶7[—?h+_’"­Æ˜ËjtϯÚR§EO·—s³AODw:»{üee9¡Ä–Ú$b™R望ê;Û%…ªœÿ ¯Ÿ8Ï׿FE^s ‹òí^§Û³¡ `ÀGEër2¦eËòäìÅùµwmÀIÈlþé§/û[ßïêo…+DêØÄÏ•KñQcÄqù½I3†,fŒ$åš|A¸ô–æÚš&_ÿc®{,U÷{qnŠŒƒŠâ€ÏÂë Òu[ªû+ì}}-•Æ–o±’2Ïm«­4C»ÈçŸÜž§Q¡9…E:»·ßçs}ýq¿Ne…Z}Û?ÑàМ䀩§Ÿ $:þeg±3çŸFD×]Ntù·,OB§ˆÔ¤Å?oúVÞøè? Öܳk¼iXšs>ñ÷¢dqÜD‰¤!áœï}öÆw[®²ïdÒzƒÔÏûS®V½€T§Í•Ž®)oî*—–“:-†Î:}b9æ”Ušì–Ð.ŠùË"ÍøÛí¾AêÎ34gÄ\¿¤P>9ŒÓ0µêЇÿ··+Áô+ Š9ÏœÚÇŸ%¢Ë¯¹:@¤Žƒ}ƒïQÞ9gÓà„ÒÈʬ܋ +Ûú·;]ë/¼67R•Ò{ýû?¢ ÏQJ£pÚïáÂÎ{v¿|ñ$8"´ ÔåöÔéÉíbLWT9¹¯¯«79-Π²”g¿o 4Ê™úúCbT9ÿƒ™\.—ÛSGn‹+"VSX¤³ÛÝ[Íy†²Ìhӳ瑈g¦C_ýä³C»_ßYüõ²üe ÇLß·÷@× m+.¹†ˆ1'²÷"5)evé-÷_×óÐöæ›ú—ŸO¬{óMtÇÓW&›F‰%×þ¢zïUöÖoßÑ^i{Í]µžš¦¶;¯yVÚ—fet&‘Oxå´òÆ»R¶,5My³ÍWlµ]DÜd“îjŠ|î)']µUZ–ª)³VwWØ[*öèe£ ^Gw‘ÏŸˆôëªóv—ÕH¶z“Óâ ç"©T'Õ×eBƒ^w×ÏÖÿÃí¾ñ¦ .xܯ ð\¼V3ÞJÙýúί•Þpæs>ùüؘéÏbs—/ȈhîY }ùè[tÁZ" Úu4ûªla ¯Ï÷ùác'F"͘9ûÌÅKò—Ÿ-iÑ7{<Føçæ/øbÀ?tø í…iæüùµ×Œð3ν`á¡ýþOr6óœeçæçλøÒK~üã6‘aѹ…Ìæ¢Ú=6%‰#{vÿßþÏŽdÍÍ8mnÖܳb•ÝÁT‡Í<çøgÞ⊙ý}î̦†ž·–ˆ>ýläÌ‹.žyÔ?uþߟNDGôeÍÎܳGûµ‹î8wáâ3fÍbôŇÞ|û½'_ò}uµöW=ÿòƒ²Õs²öüáOï^~éßéÎüä•®ºíC?ü·òÕs²öüá¥?/[ów+Ï>Ú½óÕ§}\xï¡é~ÛþÙìÃwC»Ç¦\­™ñæ[û¾õÿ.¿ú¼Ç>ÿì¹?ôÔýèÆe3Ø_~·ý‘¿å]¼ ¶‰¢•fZ+‹¤J4Ý}}íæmÒ‡Ñëðˆ4LÐÀt©›ß–>Üúï/~÷–KืL'.HÿRÇÄ4KO×,]õ拟úþ²gÞás÷ìè(,,ÌÊÊÚ½{w^^ÞŒ3Ž;vÉ%—ÄD2@&utggè<8b:#[k˜xË'^?Oé—/ Y×/ùú9³ù뱺Å3‰h¿ço³—,;èßwîgeüâ­OhæìÕçŸuõU—|‰uýàƒáóÜÃy3†÷v”³¬ðaÎ3Îþø“}ŸtKæþ½ùê·~ôßïˆÑÊR9åŸ?æåß»þïsf‰"ÿdxÆú £¾‚Š‹›"’šy„k[ªÙÒ«.«Ý¼M¦‘ò´vó¶Ò«.‹¬}Aˆí²¦åÀ¦gÏÞ“Èý-IDRŸü׫¥¸q*Æ! }0~§‹Ö¤Îd‚9sNË–-óù|K–,Ñh4ï¼ó΂ –,YŒœ81{æðQÿ›ïý•hÉò+æ±ý òf2"zû# –ÏXºxµ«ù¿ü"pƼ9sf°¥k¯ø×«ä^¢;²ãÏáe"¢ðé]ÿþÇ(kÖâ¼yÂ'ÒÆc_¼ÿO¾Ã…¬ßýøú9Œ™–Íô¼4R[†?ŧ|ËŸsCÎ,"úÓo_øùî£ ¾tá|W–¤$ÌäÃÁGÿ~<"ÎD´Ò #>’Z|å¥aV¨ÅW^j_“б ¤?÷?²'¡Câ9B›Â!S…Ãȯ¢(¾þÇ?ÎQ³²²fÏžM‚Àûø£X`Xüì°èØõô®ŽWÖ ^ó-£^IÌî È^|Ú_{Кy3O[úåyKVÎfŸ¾ß?|xÐ?|é¢åËçif‘ÈÛ¾àç1úø¯^íÚKþÍ ]<{ôæ¤ì™ ÅÀÚ0øúÛŸ‘÷Õ/Í¹è ­aìý`VNíïÏ›%ÌZ)ÄÀè}Ûñ)O;|„óy_ü•‹ÿüú[ŸVÌϤ‡³XàÐgq>¼Çø .¢•fᙜÃÇN¨$‹ÿU„˜Æ€± dN× €Ì#~&t1çƒ{÷ž»ú¢£{÷ú'ß¡·¼ñvôtßpö!>Ñ‘9ÙûõÅç/ÍÕäæ.åâø0Ã`³Î:Ô¿‡H+·u+‰h¯ûóÙ3ÙsC÷/ùÒW¯>FDÇ}pPXHÇýƒ¼Ÿ•,'¢—_|k×¾#gh/üÞ׿Sè]uÒ¿#gÏa\IÝ8|ˆ ÙDD#rQNQ…RŠ¢Ô€…ȹ(Ο5ãõO|eÆÑcÙ§19©™ÅŒ¬àP€_µÒûúÛ‘aT ­O-¸$øèÃ,ƈˆ1a8Àá@‘J,Ë@ú3ù%‚¶¨èǽ¯þòß…§¯?ø…0ƒœ1{8wÑÐEKÎ\¤=6çây ®¯\ºæ2ƲO°ÊL•zÚœ‘÷ÿ|4°zNÖš–Q—ïØ™gÍÜÝ{X0/úÞù§ÑPÿÞ™ó Ùú9:"âc?yaÏé3(Õj¹FF$Ê5•¶#ª}=òÉ>¢"úvþÜæ·ÿ² ï¢ù£O¶9?>ûÌÅûßú`Ѫ%óø\& V3 !zºÿõ7ÿV¨‘7NI:õ’¯®&"IÖ qÓý©A:³ç@Ê‘Tù"õÏ~.Šâ²K,‹WnȪcÃÇŽgg1!;;kÖL&0"‘Hø\>ß{Xvw,™“½}ÿ‰Õ_žÃ²…Àð!÷Ѭ‹¿|Fß;~2/š)}ðòÁÓ/Κ1ïà¾A¢³YÖì}s•wøô²UsG[VlCãÔ¦šJUI8öáóƒ«oÈ™Uô¯¯øøÈYgÍ:ÆÅÙ’I ÿh(p‹ñ""z¼×ñγN›ç¤fÖeTøÆ©è yíæm_½ø"éCX¶FßÝ. d,© #EjÔ×ç^ÁsOÍY<ëÿv}A_žCDGô±™‹Yö‚ß;Â/< D´ýã‹/ÈbY‹5³Þÿ¡k^õÕ_º¨à‚ÓßÿëÏŸZÖ%×Îäž5ÞHꬳµOÿòÅYë×^}Þü¹3†ÿ›?^{‹i6£‘£\`Bœ:Æ#¨2˜§‹\¼z•@½xõ*¥-áÑD*SH¤¢Ï±ÌœÿåÅŸyn¸÷eÏÖ¬^q¦H´zÕyß¶>‰ˆ.¸hÕéŒDQœŸ“÷Å{ܱëáÍ™·àœÇo¸÷° dõb=üqî² òÏœ)µ´ó/Z¹‘Î\õ£={8 Î]vÁÅ«¿ó“RÊóæ?-û‰ÿìhá" Âz|Ñü¹æo¬K0ýñá‘ÃGGoÃÉD*©j>ýìÐDv?"ˆTÒŽó>yî^‚Ó¶„D*iÊó?Y7ôé'D$°,x0y€ˆöí}âñá 1à%"ˆT‘ D*€H"@¤‘ @ x㘾X¿/µnúç ‚ ½>/Ñ Rë*þ7 IDATHQ‰HõšTeèyñ'N0Ʋ²²c©ÀDÀt?)ãèÑ£ÇáœÃD*I#ERSË¡C‡Ž=zâĉ@ ¤1~GMqiiiiiiqqÃ/&¶WoCqqqqCoeQJœT&©®‚Þ†â`©%zÅx·„m } ú'hyCo0±ßQSãðG”bÌü'nüøü–ZŸGæ¦ôy žžSØxD*i'RÇIm«­°{uU­íV²5&26 BÁ†®®®® ‚0îA=2“S¢*87ÙÚÛÛÛm&Ζè‚{¶¶ô1Æ\ndªF›GŒõùˆˆhÐ×ODNwp—Ÿ7O«‰+E0ÿÖªüøü3B*¥ªO­ôÌÆ¹Üžº‚ò¸fCbv9Ú<¢pÍÉ&úµö>6ê1Y¯ÆÖ]´?Õòôa¨ŒŽÚïŒÖroCI«vKS™fÔ±~é&‘fPßY§Oؽ‘mC*Z¼Íá¶ÙÊr£Lò;jmdm*ÓAóZúX8ÏÑÖUO÷ÞûÑZ¡÷u9Æ·½²{ã# eÛpøR2“­}CA”y …k\)Õê"¢üªÖ¦ÂžÚ »—tJVI§RLãQ÷ÅBõuúÁ¶ÈF¨Ôê0Rƒ)ÊÝ·Þ4‰"•ˆ6m¼ ^iËwÜž’|V¬ÒµwüÏSÛŸò úF7~yÅúk×®¼RI§ι(ŠÉŠTƒ™\.—¥¤?<æ ‚¦°H×Ò××Ý3X^®¡Ážn/y½[{Ëê a°§›Š¬a K«ë¬§Ö”F5¿£ÆâŒD{w1æê¦ÖöÖžÚ »}«§\N8ʦñ4Z\Œ™líu¹mµÞø`ž¬V3ÙÚë¨ÑhµÖh[%i%5F‡dÏV{^e§>—tv¯·»g°¬\C”«ÍçÜÛïó‹úŸ×d2»\.§ÛS§Ïõõë´ë”]ìq»#“¡@d ÅÞÆ »—Ìõí£²  ®Pò¾²m5Z]a_)<Þ‡áZö ihÐׯ+Z Nª$NLÛP¯¬øöiRȈ<v¯®º¾¨Ûb·4Âêœ1—ÅmÛ¹³ òЍ ª˜±íG:š¢üQÔëEŠ7o]Š8-†–Ìëê* ¢µªi:[µµö¾–Ê’îª-[ªmv»­­°©L#ñVÅŸêþéê*m„ã 3†éûy|ªd ™zj½DD .¤'Q¤ÑànÁ¬X¥ûÉÏëÛ_n¡þßîšøçÁþÖÍ·¨ÄSÇAÁ†.[]}-•F{(|’£Í#êóv÷øËʶÚÃQC½ÞßÓíÍ«Ì!P Cöt{‰ÌRt6 ç¦Ê²"m‘×éî­ÓÇÇÞäÒ úú‰ó|mnlHRÝÎÍ=LÜéìîñ—•ÅOÇ3æ²]DÄÍõAG[kµµN„(•–SX¤³{½¾)rÚi §Óét{Öi»©ÈšC²z%˜~Õ–:½’a9a¹PËT'ä+ƒ‰;!_)ä/ïÜ¢|»WŠ ø¨h]Ž\xœÍ Á¶¡î™ö ™äE Ù@¢ØëvQžV¯Í#’.$Â9Ô'äUoŠžø£È®ñˆ©—QÍ×€eÌSN“Gäå¦ú¦²òäy½¾¢å²G†xôO²0³Çè)TH£ÉkR‰¡F*ÔÓfŸ™àùÏOÆq 6tI 'sYjÛü¢Hzƒ‰s 2]•­*ŸsgkÛ ø¼’žPaÀ—J=¹ !™]"ðú„ˆ­Ýfâ|tu)I«QûZ*¥¥¥•-}Däíîñ‹bhYªËÝèvš zÊÕꈨß×#¿ 5”{GGGWs¹F” „‚º-Õùœ³¾–J£q·X)\Á‡9…E:¢~Ÿ_ôûúå<<¡f`ÛH´²¢Lrº=q60æ²­.ÆÆÈa‚ãÖ¸Ž"Ýwg”vœ@š‰X¥ž&uˆT¡Hëý#ûGQìm˜NËÿw½±+üÙx¹ñ­Î®­;ÏZx–´å“ŸLÒqASÖTR$$sHéŠ õe•f"owO›Û9-.¤ÞN!q费ʪg]µŽ1WkÛ …W£¶¶wtttttHÚ¼Ý=ƒ’@2‘Ëå2ôÒl8c}--®„õš¢a‚¦¼¹«ËfâD”ì-Vù$Uðà„>y}ƒ=Ýy2Õ:±f`ÛHÖæ“FmÈÕê". &ëF®ä¢ÓæJÊf÷’®ªÕfR¸¯1‘4°*!Ë'Ú§ÁØù¼ŽÔÞ—¦2ÒE:‘°$;h&•>ñÄ“ä1%’õD*7ºþÖéÛ?^±æŠ5+׬Y¹F›£½÷.‹4³OM- ág'IK'C!,ÈtE…ÒmC’ ““¡˜â`„ô }°z‰Opa¥²ô‰2 xc¾ÇíbL*‚Ò!rʬUùÜk·9ü¢´5¼\2¬Dƒ*5W›Ï9ç&I”æåsœFOìJ@Ý0}]½‰óhÅ©âÆ~ß`¨Öò´APÊ_Ň9…E:rº·úòtv2Í QD*ÙÊ ûEºTˆÉDºÒPÝOÖŸcº:ñ£ÈÔKb³ã˜1P±JþŒËò¨F¨Á#b1K*_â¤=ÔBZÓ,´sKQ·­Í?ejääyl2¼‘ dÉ«´j[=2—P~GMèR©Æá½¨êm?Š2|9džŸñÌË4Îîþ‹×Xúw<°ù‘6ÿºñ?wÿÅ»b•nãƒw‡ï ÒæhS~Ð:+ÙJJJKKVϯ]ŽdùE…9RÀ±*?âkô0Yf­Ö‘·¥Ò(9YSÞ\oöJ3æä¤QÓe5º õ²A&Yl&î²V7ÙÔîš’v¯43Ö÷ئÿøukõº(¹&)QiÆ?8?hÒ×d„…¬aáFk4Z¤«¶–IŠ3¦Pñ¹uÛJŒVWä²B¥‚ë×UçËúPR©NRŒ'Ü ÷@LÛHª²”® ¤LúZ*•šœŠ?qu‚G‘­A(¨«73æ²”´öëˆ1—¥$ö:<‘4‰[¥tF¨X.Û1%Õ LÒ¨¤<èÇ;¿·!8¢EŽxñ»G´~m^ÂëL7/>H3J&m§*áÜzƒGQ:tü UÀÐÐk@2^RˆhhhHö·;v¬_¿^Z ¼±ùíïÞrÉ6ÇS›6Þ†ÕÁÎ7–¸ u¹mµ[µM¡‡°¸ ÒsUj}ë¤ÇÍøµ¾ÊˆçŸŸbûë¹$\Ù$=KÅWÙY'ÝO̪·¡ÄmHöiD‰óÀ¬>ö‹¡O?!"e©¤ùÁü«úkQW¬Ò ~4øí;o‰Üø›Gûùß>‹Oìyñu7Ÿ~úéóçÏŸ;wîܹs3³yøµvoÄMN.M³îKí [p ¢}{ŸxüñlË€m~ò™½‰"k6XãºðãÑ‚ƒNoC±Ûй¡@ˆ”e­Ú-Íå¿£¦ÂWÙz‡¬ÒUYoC±Ål9Jc–(úÛjmd}2†º©Áñq,ó¢ÓËYÞdíTñ˜R©e­<èÇZ}\y/Ѧ·½úÁA"ÚæxJzU¤ÔŒaÑ¢Eˆ¤å`IY%µF…ë¡`Cðî“à °!tÕ[ê r´yÞ¾d }µ×žnÀ޼?&í¹ížïŽjÖ/¯èÚºSV¡NpEqii©±²Å««Þ2®›µœcým6{cã» €i†Ój4Æ…îÌõÒìÓè Ó+ÝYÙƒ¹æÊ²ih“†!il ÏHèëêͪc–¬öJ€±Í³—HÊNu)å&‹ò /‘«Õ9ÝS¡Ž›l4y Ò:ë*ݵmƒMe± iE'“!¸9r²5~âuÀçõº*-DÑ{MŽ;"}0^n ¯OžAzÌ$Hµc5åÍ]åp*HLðÙÚc"©ÉmÀçÍ3äÈn—³<)Ó^“jçXSÊM1B!7軯²¦úÆ’’RƤ—_¤ÜK©@µÇ/ØPé®i¬Œ¸B²P}gGh @bÙäjuf[ÓÔž}›Î ¦|¼‰Ì˜%нngžÊ[íN¢y'olsЗ. ëüŽÚŠÆÞÎ:=yRç%"Ü8ÆD¿®¨ÛÖÚ?zݺcEzEPB± MaQ¿Û3õʾû/Þ®­;¥?(T˜‚F›5 -³Sz´Â`[«ôè4ic8™§ÑâT³¡`CŠn7/š~ß`P:#ŒOÐÎŽ.Ÿ›ì¡“ôSè% DRÁXmNSn-ê–^„)uõnc¥±…ˆçWU›– ¿^My³¡¡¸Ô:úBj¥×éƒôTÿ_9~%}-½¼ÔXúwªpêpJ/“àܤ4éë¶øjKJ­Œ‡Þ᧯«w—T”¶H[ô1ɈÈd«7;Ý'gÌŠ1O!òê:©±¤¤„tÕ[êÍîdíŒ3/Öcõu²¹ÉZ}Ð\ `ªo¹Ù+5 „pw?È RxwÿŠUºGÿùó]Á÷KÝP|÷ݥ"R§ÉÝý€4d:ÜÝS'¥å¤ZVªx‰pw?È’žî?pà€$‡ndÌ=…ôÆÔ–Fë—þñWÏþ13DêÂ… 7m¼ ½HOî¼ãöTeµû/Þ;o»ëÎÛîŠÜ2IfG®ì‘?Î#ÃPzÖzjŸÁ™[ÔË&">OÒÑOÎÃäÇ}”LzÖý´}nÿ˜dÆ}ÿ#O½1…L=µ^:"€éÃI¾M*¸¤}°­¶Âî´4žü»Ê&8ê§hˆ|X&Þy k!Œ2[ÖO•bJ‹P!R˜Êähóˆ¼ÒKžJî ‡W¥Øêè([O =ÔqÅ®Rµ4V«‹ˆò«Z› {j+ì^ÒUo >fYýmµ-},âÞU‹‹1F.K Õ_Ž•&tóæ¨áÁ> ïÎ0Ò¶p)}mµÖ–>ÎóÃöD‹‰ØãÆüd÷ "}í.Ú"½âOô;jmtߣ˞.½/=M‚x«T, ÓÛPlu﮹×XÉêÕZßY§§Áøã†÷åùù:–g/iتêêþ¹ÊŠ=boCI«vKSðó£n1Ù¤·5*E¸cß©èwÔVØûXÔ ËcV„R‚°À%k…Þ×£[8ú›ŒçÎïV¨'xô‰-(æÉAºÃ,©]pãi†ÇíbŒÌ†µl톮®ŽŽŽöÖª|ΖÆð+ïsY܆®® c¦‘¶÷µT–ØÈº¥ZG^»-øª[Oc…Ý««²UéÈiiôBA]g½‰óÈ1>&ÍhÇ2 <ÌÇï.…3•lë&k»ÍÄXŸ}«ÌSþ”ŽKÁGêëëî$"ìéö’×¾UÊ|°§›Š 5ã²V©X"áwÔXœºªÖöŽŽŽ®¸Æï®î–°Weëi´¸3ÙÚ;­Eñ–$î™`I[«t䳤²‰cŽè "ôõëB‡ð;j¬.f²µ·ÛLÌe­qø“vVؽd¶µG¹tÌŠMY;;wÖ?×Â3”žMkÖèClêQI&ý•~͚ʧöEeúN?•˜;;[ý/3ªÆs¹=Ò›¬½ñ¯åMx«Æ´D:¢Ü«€(ˆrµÊî(Š~_?qž¯Í•}‰vž –TJ=VIãG±°(ŸséÉà¾à Á¥Ãqn2èIò§dRRç‚¥¶-¼K!ï1•ÚÉtÊ›<Çãyîû{îHDY†Ò{Åõ¢f ø¼Iïž [âHn—ÂûßxlÓšÖžõ÷ª¦Û÷Tåõ?}—qþÍÇÞ’ölZsdzÈ-§žCÇF¦C=ËójÃeSÝ©`úòoßþ×ÇñŇ>qâÄÈÈ„Îäìì쬬,Ƙ B*fEÑßf³{IWÝZ髈|s]riÈÕêˆ{£dq\¨+‘4²Ÿˆ(ôÊ=õãÆèƒ™\.—»‘œº¢-ú2­Ùnqv÷´å9͆ ‚‚›¥‚VaIðÜÞ¤œœˆ[Æéù xfÜGÔéìvßÀ u皃ûƹE¦–•óÔ”7w•KkI¥;õc›'›@½v¦û>ÜS~ÍýÉîUxMù;{î/Tš=›®ÿ ê Oaä–;ölÜæY¿tßS•×oêI™zxzˆT©˜×–ˆh{§;òó”ö¦ûÁ4E’’YYY3f̘5kÖÌ™3gM )‡3fdee ©Yî–@ä,¡4ŠÚ‚1—ô2ë(ÉEý¾A•4cßðõûC«oó´1KH9®Þ`&"—Ë%-‚ÔÌŒõµ´¸’ÑBc[5¦%R‚ˆ"'â䱫LvGI€JÓ÷ÒâÔz&ùº%§°HGN÷V_^(TÎÍí úS2F*‚ä.•" RWoâ\R· VDœÇâk'¦‰f0ŽZiéý´i¢bqÙ¹ÉhÔŽòk c·T­_JDK×W•;v¦É ÃÇGÔÿ2D¤F”åðñI¡>½ýÅ©^LˆT0}E*c,;;{Ö¬YsæÌ™;wîécîܹsæÌ™5kVvv6c,ÔÕ›sYJZûuĘËRÒ³"0‘4JhÊ›m&Þ×RYZZZ\ÜÐ+Š‚ )³VëÈÛRi”¶Ä§Q:‘»{H¯b[·­Ähu)­mû¸¹Ú|Î9Ï—A’~]U~Ä×ñoÕ˜–hÊ›ëÍÞ–J£l9''Te²ÇÕ¯«ÎçÜe5º õ&Ε®Æç™¤êZF¥:)r9”›Ëj4Z]Üd“ž0 Aj!­ÚjÙ"ˆboCqqii©Ñhu’®Ú|V@"Ÿ ¦v<”ÓÂ3·‡ ®1}£uýÒqì½ïÃ=|-]¿éÜ–5›^žšŽ81ÂÕÿ2£¾#ËróµWÑožß™ÅˆhhhHö·Èªnl~û»·\²ÍñW Ò™;ï¸ýÑÇ~1ôé'D$°,•”¢(‘‘i¢?ˆ±¤¸lvvöÌ™3³³³³³±–L ¤%¶^s½ôœ)pjjˆh`ßÞ'üÑǾ³iÍÎkÆžnï %ë‰I¿ï©Êë?¨ mØ÷TeëòÖ˜dáñ¹Å|'÷?òøÄõÆý<þÿn¾Y=ÍïŸ~z‚J‰©))æ?–—H[~íèLy1'n$mÚxÛ«$¢mާ¤Ç¦FJÍ-Z„qL_¤Hª 3fÌEqâ"UŠÎJ+Sá^0-´‘èo³ÙûKý kàTѳéúGhã¶°ÂÜûÁ;´<6ÑÒå8¢W­^S~GËS•…ë—î{ªÅQ^uz”f8À§C¥Eóñ§Û3¦Ô©`šÖ”y0óHSÞÜUGLyµúÿ–>qþÍÇÞh3Zxÿ¶+×èkGïå/¼ÿ±k®×ÿTÚR¼òáÕ„Z$c&ô)fóïvdX‘1<™DáýoÄË¿àó¡B2ôþÂÑd…÷¿ñFòÏ¥ë[ßX{ܘ|"-Qú<¹LÃHj&‘ Lå:%Ú³iÍôØ…S¶Ø;œÏM‡ÚÍÔbB¤@QÚF|žbbušÜêÁÅLZ¤J÷g ɘaz Ò(]DªôÈÒ“~ð&œ˜Î`˜éÉæ'ŸIv<(¤©d&Ò›{NíkuÒÁ†éVœ ó9" &Ë¥ãÎu €Hœz1T¢¡WŒ(GMiiiqqÃ?ªTz‚é‹z¥Ä%cñï‚÷µÕÆì.Š~GMqä+ÎGÅPoCŒ$JÊŒ˜â”Ô¶öG3ö¸ñÄg¨b‰~GMÈuÒ¯ñΔŽ¶\ô;jjþ`ÁMš KÕó‘MS–×økJŒY/ãnW‘ E 6tuutt´·Våsî´Œ*Æ\Ýdmo­Ò‘×¾Õ#mô;j¬.f²µ·ÛLÌe­qø¡ ®³ÞÄ9ç¦úκAPÙÝÓXa÷êªlU:rZ=£ÝsY܆®® áÝ#JÄŒPþc&[{§µ(2¥ã†QÊPÉ6Qìm¬°{Élkoïèè~w¦‡r ‹tŒõu÷ Ñ`O7jAݤ”¸T)ŸøôñeYËÖÊ S/6c}acÆÝ®" @Ž6/zç¦Ê²œàv§»WEÑßÓíåÜdÐé &νÝ=~…À¤Üî½n'åiõÚ<"ê÷…÷åÜT_§O8y3DÑïë'Îóµ¹QÅQ9n(Z¹TlcÌe©m“ñ@ÄÑ¥^߀t”ç.«Ñm¨ ày\¥ Õ¥Uii©Ñhu’®ÚZ&©dYgæås\,›˜I©ri|>ñéÊ2¶ݶ£Õ%»f7Ùvé58ÑÐÐìo;vìX¿~ýˆhcóÛß½å’mާð¾5Î<ðë£ýbèÓOˆH`YpÈT¤'[9ɬtã?˜^íˆh`ßÞ'üÁÛà†l~ò™Mo{õƒƒDÖ“‘R3†E‹!’ ÒŽl¸¦Ò3P7À€Ì‘T‘ D*€H"@¤‘ Àt!üΡ˜·Å¿²Rô;jŠk~1ã½|SoCÈ-^j©¤™&ó;jK,N]uk{{{{kµÎi)©•dboC‰¬MåAIÕe˜Zmt:::Ú[«täµÛÚüx±'@¤Nž­ö>ÆÌ•¡7¶Wšë³oõÈ(T·¡«¹\#Ä*ÔÆ‹‹±˜÷³÷6„B³ ½²úOÒµGMdœrTïö6„U¯RV£Ûƒï ÷;jŠã‚Á‰o †“Kj[û‰Hzjý†"¢my}h.‘ 8 ˆb¯ÛIœ› úÐ&½ÁÄ99Ý‘aQ_[m‰ÛÐ%)¶h¡ ®³ÞÄ9ç¦ðËÜýŽ«‹™líí6sYk~ù^€¹ºÉÚn3ÅÈbÆ\·¡«kC (eåwÔXœºªÖöŽŽ)¥§±ÂîÕUÙªtä´4sKf£ÅŘÉÖÞi-ŠòncºêuxU=@¤Òæ\e®––>æ²6ô&4Ù-ŠþžnoPøê &νÝ=²圛*Ërâe1ç¦ú:½JVÒv¢^ÎÖm©Ö‘3òî¨()Iý¾A)¥¦°HǘËí ­æ,*TCöûC²8OŸF)+i{øˆ‘)[ÛãwO`cÁLҤũáíºº¤5¯h*‘ 8yšò¦Îz³×^i4•v¯¹>î!S£)ƒ:5jÞ_4eÖjy[*Òýòšòf›‰»¬F£ÕÅM¶ærÒÑ»m%F«+¼5¥¬4åÍõfoK¥1|“¾”²¯¥2ò¶ýÄ7JbÝe5º õ&Î¥£dêÓµ¨€é~ÒF§ A‚FصIDATºº6$°]Д7w•Ëêטíº:6Œyä¼Ê¦¦È ¥¬%JYÅo—M™àƨ"ŒÚ ï "© í@$€é‹Rì8å ’ R€H©@¤ˆT RD*©Ä€7NN›Ÿ|&S‹v÷­7MçÂD*`jó½¼%ó õË_ÿ5 ©€)ÌŒ¬éµÄ¨æÖŠL*Nó“[І©ˆT” Rà$ˆ¶låç/½sjí¼îÊ‹Ð8©€i,RIU ìê‹O•‘m/¾ˆ/"‘Šò¦g R©€é-R³Ê›†ž™nõ€H€(†Gø˜iD±ç'—Ö>Ïq~á¿´ýǺ¥ãYÉ*öØ.ßðqþÆW®þãewþ7•ýüÕû.„´*odÊT•=A'KIÊN€Hd¢H Œ!†ÄßWÝø³wé›?u[.QÜ÷ìwmî',—&©,E±ç‘»Ú8}ó§/[.IßóÚ÷‰ˆ‹Ã$¦Oy#S¦ªì‰ù‡ˆˆÄ‘OÊN8i`ŠpREªúßËÿõ3/cæŸÞ³†‹Ã>Â5ßøå½ÒçáßõÐÚ¯]qÙ×®¸ÌðÐËÒ–#/×®5Ú~ÿûúÚ— ÿé÷¾À‰‘—rù]NÆ{~£¡ÐPhsï’’í „wÙõ²-ê§—mRæ·ýÞwÂ÷Ôm…k¥ÜÆ´y"å ç RvÉ`ɶ¯]qYýË¥‚‡3uT°È¾ßߺ6üu8À‡"© Ú 'ñDR3øu€É©#jQLQ|åOÛˆÓõ…kÄá‘Ø_ýÏÞzŸ“}½Þ}'=üu˿ܮ}úÑsEQ‰ÛÖxú…-î»nilÞòÊõw_VÛÝ mØNߨÔ}O ˆW^""¢‘q˜‚»ÜÛýÓö/“~’¾þÏ–åwÝÒ¸»éæk:îüÏßÖÕßÒØüàVýc7kÆËT/o$'†{”Ë~é/öÜI$l½ë–Fç÷RØ}žä .9êÞmÞþÛ'¾™+¨góÍï^xûÃ¥Ý÷4Þû“«Úï¾Lò›ä¤ìéÆh0MEêÝ·Þ´páÂMoƒã@zrç·Ã i-RU£qá9è@€GëBQÜ÷r×»œßpé>LWùs;ºÜ¾oÜxñç×}ëç Ó²åD»/¾RW°†¢²ŠÊ9´Ëê †\ú)ø•ør¢Ýüº=zãYôêr¢Ýÿû¾_$éÿ’“ˆÎËY³l9Ñîþ¿úF Ήðaº?³À ¦©H%¢Àk€É©Á9h9‘º÷CoXeŠœˆ¼ì ð3)b¥Ï‚•s‚?‘¢1“#RÕ'úŸ¹÷}Ÿ1bŒ¸ª©á(A{•±?üÐøb,Þo©†i1ÊkR'‘€¨òàk ¾NŒ9wõÆÿš›»‚ˆ¤ÏĉhÅòÅáÏ‘Ûe>律dŠã.od*eÙ·­þÑ=´²ò‰‡¯á|,S#5º…ókïsv?½ýÅg_¸û"N‘»$e'œ4 R'S¤rõ¿Ue5çrÞùƒÛ·í H[ ¤˜Lå§èd“UÞÈ” eçTð?4wÿÈUÝçå{ÏUm|îJ%SϺî±{|E›¿Wü"ÎM÷<ÿ/K®ûUÅ·~ܲ:b—¤ì€“†@DCCC²¿íرcýúõÒê–Ío÷–K.X8—tæX}ìCŸ~BDË‚CÒŠÍO>³~ÝÍ™W®§¶>}÷­7Å–ˆ,ï[Þþ¯èòN•ý‰ý©­OQ|aÁ)Gº3p`ßÞ'üÁÛà¶ì9MDÛOI=I¤ÔŒaÑ¢Eˆ¤‚ Q?p”`ºM'^ÞSëLågXˆ @¤‚ á{ÿx m~àM¸"™nÓÊÉM÷£^"d3²pà`dš‰¡ÄËë}ÿCÔ @¤ˆTpj@$U–s—kQ/‘ 2T¤f pÂmÓlíck="Lw‘ŠHêT`ºM+ïØþ<* RD*Hw:_Ø'€HÓI¤fC¤¦;Óê±8x@¤@D4<‚ÅD*é&Rq‡ ‘ D* RK¤ŽàAD*é&RI R€HD*c0Àt?‘ @Ú‰TDRˆTÒŒG$€H"©¨ƒé~"€´#>’*òÜ@¤p*Át?‘ @ºIØ· RH‘Z“zç·ÃD*i4ÝÿÍÛHS;_Øv÷­7EnÙüä3%_¿•˜aL«Šž*…•ÒùÂ6œ}"ô˰ ¢§|aqö‘ Àdý¢R˜ê0¸@¤‘ R˜ ÉÝ8µçn´“"© íH42zöì=Û{à/F"O’L_þ?Ôž@¹áIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/mailervisualizer.png0000644000175000017500000005367612032647206024465 0ustar ebourgebourg‰PNG  IHDR\“³¦„ÛsBITÛáOàtEXtSoftwareShutterc‚Ð IDATxÚìÝ_tY~ø_ÝÈ{â³û¢³N€Ü+Ίu6z3ìqHˆáÈ-bzµtƒco§ óCº[4°Îqâšãn°I"ȸ½ Bçpä6¨¶SÀ9žÆ4ÆB-^¦¼ÔéA“àî‹ø²9ÎvK·ö¡ ‚ÿ|?‡ÀEý¹õ·¾u« ?~Lp¾1¬@(„B@(„Bh %´Zm6›ÕÌ(Jݧ…ØTÃOë§S¬æíQ¨u°Z§b…ºê•>Ùå÷»5»ç²ŒÏ9|ƤèÊ^m©|'²õœûAo42¶¾#×|´—ÞÜbÌ8hÑ ¶.@B!åÂw*;½¥°·Ý̳Éd29k>†|¦u98§xªºz™;áçרîXçþ\à9„BÎûûû9cRª²3n/½™#ÞßßÏyåÀêE[›ÍVyY¹•k©U#3ålW±x9¸n"‚`¡ÚêÉ)‰10 ‚æÜ3Áâ¼*«ª9d}¡æ2Ö.ŽÖÕd[µ†ÓlºøØSàù„B¢>—k„ˆâÑ•B)ÄÈwÂ[Œ¸\}ÕI(4ÞbÅI1&y¦FiB)Ħ+G”¼å`¤Ê¯LÛ]‘ò5Ä"ŠW¤B9'¢‘QsøLÐê•:¼ðÝñ2ßâ<›PH$Þt÷sÊm¦÷Š!&'Þï¾YºŒÑDbmm-u÷sN¹ün óV#f¿;º¶¶–8ˆ¨òr0cR$²Å¹#Hh_*¯ +J&'Κ™°üi ‘X+iï:oû˨^MVç•HDÝýœˆFæfÔ™¶µøØSàù…BÒU>Ï¡†ã EW}œÅ;t†¾Öf\Ni®QÝA£í|Å“-¼ß½´>Ó(· ‚ù愱ü4ÌÞJ´|íXkðƒ‘“¼v{M‡\+:[ƪl1G 1kº²ø]t¡ùǺQ—#ì‰Ç£±üfœ8©!¦¶¬êÊ,cÄ[ΤLòÚ¥Šû ¥Èɹcn~´ùCÄ:Ë`8—ÛLF-éÍçÆ‰›bƒT§_¢éñÈc’×&玹v"WÇËX·œ»µøÏ(ªÏsHÒVÄ»EŒÝ7Í‚Ps+]eâQ”LhØoyöœ÷O,Í;õUѧ[õt–Ac8—ÛLË´™#ªïƬ΅΅¤S½ApØ#1É3mXšÕ£ØïÈ»°Œa KˆA¼9¡>k|p­³*Á¨—Aû =DTzþ·¥Ç‡5~k°uå,Œx#­ÿ<¡ ˜gÖçÕ÷–dVŸøߤòÖ/#bSš‰°+‹Ð-Dg4†·¶¨Áíz=#±­­ˆË!âýýFη˜ä¦·Ö¾|xÜŒ‡·$¯­tU½¤+¶³ên‰1Îû›ô–z+ÂcäP¼¦Ç`$Ú¢ò¥\ÎK®ü¸'w´eT7±ú"ñÁeë®,>@WÞã¥^u][[KΚ5?õ–ºûÝKóóÞ c‹óôÎyµÇîÔ.7"¢WÍuØæúÝQu‰*¡”̪.*e{ñºBxüø1ÖÀ9‡F„B@(„B@(„B@(„B(Ñø7w«««X/gÌØØØþþ~¡P+àÌX^^n>À…F4 ’ÏÆ;ヌípto¼úÊ¡Ã\8É à¿õ¶"ÀQìïï_¼xñÐÁð  ÀYÖâÕW„B@(€&¡PQ2A«5˜QªK‚Ey¶5LûM&×òNu?}È(êåmÙYvUÍðÈìnõža(TÅ=¡gž5Kçsë}éUÌv–#o¹,]˜rwë ð¬B!c’gz¥P ÕND[‰Ú›¨Z­ÁL&¨–OÅ J!6eµZ­S±‚R·›²Úl6«5˜Q”ƒ±šEO§óJ9¤¥7Èé¬üpgÙe2‰¢(Šb©O³ngÙeE±¢—1í7ùÓ;Ë.“©¦ë±:î|°J×^ê­rÚ¯ÎÔ¤ÑíWñZ£ze•]†ÅaªkØFŽ/޶ɕ¥‚`žM&×ÖÖQw?畽‰ŒIžÔ€Z¾q È»4a¤\8PL–rh<œ3ºn#Å=Õ“mbh¨” Ó44T•«|äÏfeY–ßÞŽ6ÊI;˾Gî¬,ËÙEšX¥Ë—Š“rÆ6J ˹X´S¡v&¤K—¯L¥I½[«ÞAtuE.ß+†½vë йüZ7êuoއ=Ó†%W¹P)ĦÇÃ[ŒcÄÛÌ¡LòÚ%bLMŠú–F² ]‰|°óÂ#òmT}”ö›&ï2FDœn iþñ£î¾,ÞV“kÃÁªS¡ïƒ±—>X½âŽÖg°Þ±è¢ßd»1/7í²k¥z¥!¯?rg}½ÖàC¡ èGççòÞp j¤¾"E)¬Â92ND]ùqO¼ÙõŒÄs޹õ™CºëS¡ëZÒÜQ¢Êºe×$-fe‹¿6Œ}éòUç|´ë­j*LÓê•¡hƒù²Yßβëº?ÝðJn‹Õ£R'aÔr”:tª¥ß)óÌÒ„1—Ë vó9"ê3èÚ›™ è-ƒFƤèÊžZÒÚƒ&Å”ÖGW†j#ÒÇ\-^cÝùèa³ˆ÷p£½ç2z_ºF·§o×ϲ±‡íƒ`¬½ê©„5W…;¨3Àq†B"ôÎù¹‘ƒŒ87˜äŽn‰1É3Üê/×è ߊ¸Ê ·žÒÆ4ºÍ,¾Å+·_EQ4ùèš36iòØ`ä¡ SÝ㽇¤ÂÏñ 2aéyá—o_Yô•~­ÆýèºÉdò‘ÑÙ^õÒ1º;]ûôquèŒðøñ㚢ÕÕÕ±±±ýýýç[³wÞ}Ïë5l!€£ð½ýmÿ­×–——›<ü›;@(€Vž>~Žö÷÷ßy÷=l$€ó ßxõ•‹/â¶B€s ‰è¹?ìpNàžB@(„B@(¢þ I×]¼x› z ¡½|¬(™Ð°GbŒˆ8ïŸXšwê¬5€3¦YO¡RˆM{â4H$ÖÖÖÖ×½eåD-€¢d‚V«Õƒhè#¢í|åÄ]£:uDЧuþ1&y¦‹ùR̳É$Ò!@—C!Ñn>W]PøºV3&yí^‰±¶&.晥‰~ÎÙVÄe·3¸d p„P(æbLJÉõöŒÕFCO7kÕc0çŽÎ. zçB2pp"Š{B¸• óPHDâ͉~Îãžéòó™`0£(‚ · ‹yQNIŒ-úî]œ-O?º²×b‚$ÚÎW+ÎÌ98'£AÇ“Óìw ½s~ÝöD\ö9‰YA "½s!·z½v‰ˆ; N}w«Uœ~Äe‹ú‰Ø8AŽz'6Ç×=Ìo­}ù‡¶7‹?¬HÆ ï¨^±™š?~\S´ºº:66¶¿¿ö–ÿûΧåååæÿæ  Ñ=…ËËËX5ç‡Æ=…¸ñàLjrOá…¶†€3 ÷B! B! B! B!´ ¥›²Z­S±‚BDŠ’ Z­Ö`¦øi!65+(Jõ(™ Õjµ3ÕåÏų¯Œ’ Úl6›Ífµïóûå¹wVÍ5\^.[…`F9޵T¹8Ç·»»Ò û¡Pô†>bl+¿KDD{ùm"ЧŠéÝ|®Ï „êQ̳Éd29k„S;¨¼¢dBž8çŽ@"‘LξÈ^,¯Š+­µ†ËÔ%çqO¨ë+¹fq:_Šg¼Ò ë¡ˆÄ"Чd"ÚKon1Ƙ”’‰ˆäT|d@<O™`eOÏ}~?4ì‘cLò #‹Úõبç©fREÑ^í¾¬ìÁª pšaNQ2•©›Nóá‰(, _ê.ÕÅk·×tzÕ Ül=”©k¸ÍŒU;åšnÅrŸb¹|x:º­™Õ-Niëh®Ê¨~4+{œK]ÎǺÒàXB!õú9§í|AQvó9‡Ã¡fDE)ä·†žÒ™äI Tvð‚yf}ÎÁ9玹õµ\‡sFwÀm¤¸'$kW®bRõÃ+J&4ÎÑH ‘X[[k±K©¾2ͧ£YùBlÊ+1G ‘8˜äŠÍâЮµVÖƒ¢dZÊ„j÷íÈ@£5¬öÝ®­­%¢îþŠ>E9ä‘sëÞÁæk¬rq*·N“¢¦Îq+âwiÂH¹p`¥òjx×W´åB£îÿøo+ß¾ø3?I:Ë 1œËåwÕ~«õŠÇãñ”|Ó°Iƒ^]qHÎs3‡äEɤâDÔg }D¹í|A믖'¥9¼®œ9¦ Kó£ú£]dl}:ŠRHoæ8WSÚ€ƒÇã›éÂh'hq=Ð^~Ûh¸Ù´ò^»DD|d.9k>|Ê:CQ®´8ùmâ¼ßÐSU~¨Š­£½BtÕƒõå¸cn~TGrQ.—ß%Ò·¿¥-ZÍ µY®³PX?rñ¶Â-)¢øÈÀ õäD¹í|šr}zAh÷:^1Ê0F­åƒÚáóÌÒÄöxxk+â²GĬ¹“\(´=Ý|Mnê4ß´¸öÒ›4èm:9wÌ­¤†=ñx*3#–ûØê§¬bÓãá-ƈ1â•‹ÓgÐu¼›i¯ÝqîÙõ‹vè¾pnµÒuÒÞOÒ¨·J’42 ‚Þ2hdl+‘ڽݨÇ`,>ÑÚ•_íá½s!™ 88å‹6§Óc0V\<§®¯E)¤7iÐrhÄoN“¢+{¦¬(…•@8GFw4àà¼{{ZWÈqì<p¸6§°ÇÐÏ9ç5ê,ƒýœ¯<¶”¶ó{DD¥@YN0‡…¶¦Ã‹3sÎÕ "æ‘âŒÔ[å­ŒætZ©|J&’ScÆAKg¯[[»ù\KÝxºQ¯»ŸçÂXAi0eNAu©‹Óxµ´G_!Ý[ip¬¡Pg4Vô©o[¸ò(úQï„‘r—]}bTï\8øVÄÕâ3¤õן™µÛ½q2Nx‹wõ‰7‹3Š&4ûÃj*£>åZ?C+/yív¯ÄgÇ—Žéðõ §â¥gG_É®ƶÔg8ê§,晹Æ$ÏptÛHåç©Å›ýœK^{j`®³Ä.®î¬4h“ðøñcÍîÿøoq“ÖI ZSëÝ. Ðb®Ã¿¹;Ñj~îà˜\À*8ÉAï\XÀz€ã†žB@(„B@(¢sû É;ヌmpto¼ú ¾zÏfÕ–ãnmÎïÓÇþ[¯aG8Šýýý‹/îïï·5Ö¯þò?Ūû·ÿî?b%t–®´6øIèü켃“«Ÿø;¸kº KW Ún@Ã…ðŒÛî øŸ€†¡Ðvã„а  í†ç®Å‡UOþâgfAа À¹ …ÐvÃó÷ëÿ|¼ùð‡KX4,…µ%öHì`usîxkíË?´½§‘¹õ‘äаG}mpQšùô okxEIë ÓVj‚8ÿÜo¬üï7{ÏZS£¶´ÝjH•Bl:@ÞùQ½ h¶áå¹t<ßnU¸²z•;îùþ·÷BÇõ¬_ÏQû RX™l©+¼biÞ©ÎaÃRß¼¥mQÒ/;ODœ¿úÑ?úó/þú]ýý¿xó‹§-µº3Õïý/&“³ÅuŠÃ´Üv?m7ò§Dœÿâí=/þ{¿7èùÐóœ‚6±›Ïõ è+VQ¹ WÃgx[M‚`ž-5æÏ! bÓãáœqbi~TG{+ÓãåŠ÷¬ÿ»¿ûŒuB‚`Ç ¢&Bu;õ‚¢V¦C™ù³Ð¡ÓnÃBDÊîwÜ_ÿ½¿¤·Sž/‚¢ìüé?¤þ°í¶EQÒoÿ‹N7n«í’BbúþëDÄ•Oé”%¤»[%´Z­Ö`¦.*J!6eµÙlåOËÇbS6›ÍjŠÊm%ÁLÕÀ™LP-ŸŠ”BlÊj-¨98-mw› '"Rž<åŸþ´á(½þäɇs–,~°~øäé§Oùßzñ+_þâW¾üÅ·>üô)ÿäIþ;¯¾8`ù•ï䟖߾ö¼:åOò˯½ºüÑ“§Ÿä—_³”F,MJ¸²¤‹m­±L°ØNZƒ™šFØf³Y§¦¦êZc95§&晹ƶÂwäúÆ\ml‹³³3ŠÒ¨¯?"T6æJ±Õ.µö™ u*V¨k«å;á-ÆF\£zAý¨K£bæ«9‹]~¿Ñ±©Æÿû_Ÿ4ÿkïP˜ Z­Áûå¹g‚å:Ôo¾š±Êk«rµ·¾{´¹ »ùõtêΠw.̪§ åõV|?X„ú…*Ž¢qDÖ\(í–GïjÃÂ?ü¿—cläöoš¸òéSþ„ë_þ·ßP_×7&ŸV´9ßùί|åË_T–Ož|ø­/ý‹8cŒýÙ­Ë€%úô‡Å¦©Ø’|8gyñ+_þâÀ«¿òZ©ü ùjôºÔ¬½!z¡° 94ÎÝ·‘âž|0'&m’7u)§~çÕ3ÔµµµDÔÝÏyÜ*ouÆ$Oj@-ߊ¸†ä]š0R.XQ›•Fs€“ Ÿ(íþ©í“'ʧéïKŒ}vêŸ}þ)©åŒÝûÆæ/$¾ÿÏ?¥ç}3ξ:—úÞÜuÿ_ûÎΓ§=âàçû«õv?}¢|šO­ÿ%ýÕïÿñ‡ŸòOŸ(ù|ðËïÉnß þ½ü;ÉÔêÆÕI}úDIëë ù¹_ûõÏÒûßøÖ:¨v“¿ÖWW!6啘#HLòNÅ ¥–Ö#1æ$Ö½ƒõI¥q&$""qÀÁ9ÅS5ZEÉ„ÆÃ9 $kkkÉäl¹©Ø€åÐV4ks™t–A#c[ù]"¢½ü¶qТ¯î€Q”L*Nœ;ªZW±úGÅLõ‡Î¢‰ÿò_Ÿ4ÿkã8Ê$Oj ¼º*ß6Ú|•ƒ‰êMkµw}AÁ<0BŒIžáéúpßhôÄîèAÝêKêÈšûR£¬Åѻ۰|òiú÷ˆóë“ƧõI¹-bìÞúÓßþÞÒ¯–þóÂÒž<ýÂôfð«œs~ýw’)µ9h²ž(éoÍHŒ}u.õŸ¼Ã¼¢\iüº²Y;zCt,¡1Ék·ØÕ/9QŸA4ôÑv¾|jȹÃ5ª#¡¨¶1R kºègDµœsÇÜü¨N&—ßm:8s=…ü)c÷~Ë:ðSùíÄnßЕË9ÿÚ¿ž1«{&ÿ’ó¯}ÁÄ?5½dçü¯“©ü“§?Õû"R_ÿÅrè!cŒÝûà/ŠÃ¿ÐûÊÓ÷MüI¾t"þÉ“?ˆÑgt¦K/Ñöó]í,lùšL!½™+Æ&qÀÁyn3]PE)ä·‰ó~CFûI{ùm£¡§ãëGLòL¯Ô4ªÅ¼AšÔlÌu–Á~Îã)™ˆvó4hÑuP™f­Y¨ñ´• ñ_þ¿'ÍÿZ?X5ǯƛOs,ÍÕÞR(lsA̳ɀƒ3¶qÙíS¡Ü³Ø ¤áYs¡j Û½» ‘ò´®¼QcRns~éåðéO_zˆâßÿQ©¼rRå·Ÿ<Éÿx›87öèxq”Ò`O¿®hÖºÐK(äÜÑz`gLòÚ½cj†k¶ÃbSV«]¸ý–«Å¹Ài… 'â|ä·¾÷ýȯýÍoÛ¿òû?zZyY¹ÔüQ®üVáD”{ôñSþéç_æœr>~ú£Tügùw¦>Ãùê¿ÿ“§”»þ…Ïó'üÅ_ý÷¿þÎÙÖ¼V=qÆþß¶ßJ0VœÔs¸|¬^ì«Plîª.ÖfÂô&µÒgVÁ<³4ÑÏ9ÛŠ¸ìvõ–žVók}c®³ Õc|!¿­]Õ£:Â,>y›ÿýPØxóumµw¶ æÙd"u÷óRWÝ"h”h‘5ªÉ’¶2úq4,š¡°acR5J£×5oÕIõéþ~‹£kLêˆ Ñ±„–õŒ­~m¥°çÈ莜Ó\àDyòTióJ÷*ÿý×~eˆó„ïíÌ^Yþä©òäiOÏgËo‰Ñg_ø{O•§üEóW‰±øCžøìðç?ï|å«D½þ+žøêW®rzòTyúÓ_|ïoþcND¥‰÷ô|–8ÿ'oÆ7ÿä»ßÿÓ。Ù­¿¶ÚºæIN«kç°n99%1F}†úà(è ÉdÀÁ‰¨ò–žæuÐlÌÕË»”Ëïî¥7ûê[éò¥Ì”\]±‘›ôCgÑ,C<áÍÿºu@leóµ´Ú»º ‚ Ÿsp~X¯JÝ"4(©?"k.”Va£w±a9h2õŸj7&ÕmN£×-Ö⤺Ð=ÏPXºÉCŠ®ìµ|Üöd›s€ y»JéÔùÉîGQÿÏüýšò§ü)×ý×~–±ïþ(ßd¾¿ÁØg^úÂOqåÉSþs_!¢ÿô]µäç¾8ÂØ_Gÿð»ŸéÕUÎåç&~wsuâå©Ý¹»£~úé“ý›¯~åë_ýÝ̧éšò“§í.Q»m]J.&õ¶¹Ê8¥Þ\XÝ®6kT%òÄk®]ÖgæœW'˜íü^“4©Ý˜ë,ƒFЧîäûÜá(Þœèç<]Q¯‰¯Dãœ÷OÜÛì+<˜E“‡ ÛíXêâ±fóµ³Ú»Ðõ^³õƒå'~Ô­i4ô”ºº•+÷¨bìV·~Ó’FGdÍ…ª,ì`ôn5,?7:u™óõÿí×îí¿Âòïÿ®üäi“Ƥ²ÍiôºòíS.Š×HÔÿùol0VYN´ýñnUy£f­Üuð×ÖNÛý¯Ö;y«7â²EŠOï‹ ¿0晹É+y†·Fb[’g˜ÞZûrgsAg!À©PlôZ¦(êéwQ""N?ûÏfGJ¡§Šz…8Wž DD?õµÅ7òƒïü+ë&·½õ¯¾¦Wç¥üô —9ÿ¿èg¿øóº§\QþáÿòKÿcü·Jo•ûô‹ßøsõ‡Ê*&^œÚÿÒçŽ[ï¿TšÕ½(Và蓼v‰Š“ṷϘնÎk—ˆ¸#°àÔ,ãÉk§Àœ#î‰WôÆGfëÚê)'–æGëÓIÕO’q«þÌañÓÍÀpd‹i¦IÍÆ|n}FÔYápœæfôÎùuChØã²Gˆˆóö}ð°Y4òIG}5èЖ¾Áæ;tµÓ‚‚yÆ›ŸÞRg×ï.ï âÍ c<qÙûÝŽW,Â\ÞêuÙ#ûd}IÝq_ÖÚ—´—TßÚèÝmXˆˆ~ÚùÛvé~ñü«Ö?&"¢_ø—ë¯V~ý«¥²Í¡¯Rª›¦ŸûµoýÂê76ÿ••ÿËoýÂê76Ëå/O}fuáÕzùW¦~/ljMê Y+5D¿ùg¿ñ?gÚ?~¬ùÁýÿí‹?ó“gõ°ôλïùo½†Ã3ÀQøÞþ¶ÿÖkûûûm}õÆnþÏXuËwþ¤[ÿy¬øS#sÉY3e‚ÖÔÀú¬¹k‡£üXtMÝŽCg³xçÝ÷®¼Ü|˜Õøû§âßÜ9úz8ù ‹òÇþµ{qÛþ­ÿ0a~.­M+¹ÿæž©'O9VB·²Z±+Å8±TzÜ5¿m4Ü—k„1)º²GD{éMì+}¦v­­­%¢î~ÎãžPóÌ$‡ÆÃ9£;à6RÜ:è}dLò¤j:ó%çh$H¬­­•?­™ˆ ˜gÖçœsî˜[Ÿy‘½XùV³w1i“¼‰¨ÛH¹r'¨òHŒ9‰uïà¡u8Õ.4ú`uuµ¦äÚµkÅW Çã›é¨%½Iƒ^C>\7¾ÎÐG”k:oEɤâDÔg }D¹í|AuDDĹcnFÔŽ±LòL–æGõ‚Ð|"­ãÜáÕúˆrñTfFi/¿Mœ÷z4–¥¦š« à„Ûßßï0ªãW¾­˜–80B’¹ÊÇû\ë: UF½Blz<¼Å1FüðZ2&yí1F¹ü.Q“<'晥‰íñðÖVÄe8‰Y³ÐîDZ¶›ÏQŸA×RjÖÀ ±¼¼ÜÊ`šÜ(TŠ7'úãaI’F3D—}¥°çÈ8uåÇ=‡–CãáœÑp)î ÉÅH7ÎÑH ‘X[[K&gÍ‚ Y(æÙdrmm-u÷s÷„ÔKÒrÈ#1æ$Ö½ƒÔt^p¨6z WWWkJ®]»V|%8x<¾™.ŒZÒ›4è5äÃÅO%“ŠQŸA4ôå¶óEÔ©”IžiÃÒü¨¾¢?O³ˆHgè#ʧYÈoçý†žšry顾ægÕØØØþþþ1†Bu•o+æ'Œ$Eî„òñ>׺ŽBÕ#2&yí1F¹ü.‘^0Ï,Ml‡·¶".{D½(,hRå…fƈ«ÓÛÍ爨ϠӨdí¼êª pV-//w6bÛ÷6 žâ͉þxX’¤‘À QåuÛƒ‘x®ö?Aï\H:3A«WbqOh`}Æ,õ…"í­Â92ND]ùqÏa°hÏ«ƒ° p®tïw u–A#qAo4–ï8¬’3sÎÉhèiX¨Ñ)(æbLJÉÅ› [™{(T{ùÔ§Cj>Ò;¾q•¼PýuC›Íf·{ãdœðŽêA³PÌ3s#ŒIžáè¶‘“<ጢ¨ÁQòÚSsÎ›Ì Ûàð,÷øñcÍVWWkîR¬/9 Ô;s#sÉY36'œsG¸ §tË¿SHDÜ8±4#b'èØi …êïÎbtÃ*„B@(„B@(„B@(ÕiúÂwÞ}  co¼ú V@#B!ùo½†­Ðýýý‹/ž´S‰†àä4ò¸| p. ? Ö\FP¿é5—´ 5G×.Ì„õd:»H“þ4‘Å—]¼Áo,–úçê(MÖGþl6›õYˆÒÑ·é–ìc¿icH–å÷_ÿÜÕk/õZ†¾þŸék‡O-íWk(ËÙ¬ïKu¨Zù³Yùý×éíhidù³²,ûi5¦Ýè^/α4Á´òá­{²,ß»õ°j‰š®(8ÏÝ„á>רh4å6Ó{¥âGbÌH¬{«oP^óõ—CãáœÑp)î ÉÅô6Îшz…AL³ˆêGo\è‘5'%Œ0&•n»;®âËÛb‹ñ%íï²úUÎʲ\ùo¿#jÜ"9<Ê7™ÑÆP±[Ñý躿²©¸¾UÑl¬ŠªÕ§ÝU¶®‡5qp:B!c’×n¯9kçÜ17#ªçôéÍ玑HppžÛLjÓúÔ×ó£:¡ˆrù‚`žM&[¾}õÖ=Ÿ…ˆz_¸òàoúü¥×¥ÙVéò%""² 9cuíV£œ‹Ñ±ÞÒ0=tºÇh9òð–Kˆ®¼ÐK;=¼ZµéÔ.]¾ª1c-¥™VÔÿ£‡W^è%"ês;µZ1祶ĭNfÌ]±DÍWœën‰›¢ è-ƒFƶÔT¨(…ü6qÞoè!õ{Z^³¼îëŸIʼn¨Ï úˆh;_þî3&y¦kÏýj 5GoP¨ÖÇ1 jOJm|h;¿Gb; ‹ªþËÛJ‹¡ù]¶øÊT}ï:hÁšµH††3r.–ÞÁ¤4®oU´[§ÃZ×FmQMëÚ¼‰€gçH?^͹cn}¦ÜÂÖuðíæsÕ¹ü.‘®Ë‹PlPê^«>~ôàÁÝ—ÅÛj…鯵;€: ½@?zpe¨—ÒþÈëN·…Òþ·¯¸³—(}ØÔzÇ¢‹~“IdìÆ¼Üæýƒê¬ŸÁŠ‚óÛMÙÚ"—=Rþšn¦ ££ºâ÷·Ï Óü^×—7:o”ˆ1õ»¯Ì3KÛãá­­ˆËq³fAÐ*Ô]§]xÐÎ4™T±m¯ú/o+-Fã~GÓä]ƪGì kÖ"õ6œQ[µj±uêxUGÏ5¦Ç`$ªÌ…FCϳ^ÀK—¯:ç£M’Ø¡”{ |®[‘—EñÆüü•Øä´x÷Æ|ýàFS³ø²Yßβëº?ÝåÇJ.]¾ŠÝ:T¼›0špê…âÛéñpn3½7:ªëÂןçªÎ‰HÐ;’ÎLÐê•XÜXŸ1 B}¡¨5º¢4,,·3Z“:bãSóåm¥Åд³ìš¤Å¬lQsØÆZ°æ-R[3Ò¸ÅV¥ãU'Ô1þNaéj””’‰ä”ĘqТoáÂMWç¢÷¥kµ.Ý>üh§ùÕ½nglÒõÁKQY–}‹/›•åÊ>¿¶¦V3Ê!¤ƒ+FË­nz_¸RsÙÆ2tp»yDã*@™|'ÜçRaÅwvk3½'æR¿¿êM{¥a´Ë}ý£+{õŸŠ3sÎk‚Ze¡æè }TóÜtÕôå”Äõt$Ö°¨ßÊe×d¬í&åP?zPºÝd磇GjÁš·Hf;xîàú°æÀõ­Jg«¢•¶èÐ&ÎD($"½s!àà’×n÷Jê³Ï~ {Ç¢C¦êç-¾Å+o—n´Ö@«³àÞµÕë&g÷ŸZñù;ñåÛWŠ7õTrX7Å"MšDQôÑµÒ 7U?‚cñÝ»©z¾Oº(Š×ß¾²ˆÓxhL½›°²Dgì/Ýþ+Þœèç\òÚSsÎ"WƒrͯÿVÄU¾í¸üزÝî“qÂ;ªÍBÍѪ0ž’5'%§âå;ùªeÝ®›Lês¼ßµš/ok-†öWùÊí—‹O _sÆ&Mþ;lÁo‘´fä\¼w9¢> ¹|¯¸4§µZ•–ëVÓ:Þi5qð|?Öü`uuull¬ò?+×—kxÈž»ýýý‹/â)«3sÔîÊÅåc€sW®°A ¡º ¥›²Úl6›ÍfµNÅ ÊÉY¤¶ê¦(™ Õjµ3ŠÒJyWøM&±šÉäOwkêiy²MûMÕïL®åìÿpZîÇåvÖÜÓåw7×'O‡š¬L‡sƉ¥y§^P”ÂÊt(3?c„“°Cw¥n‚`žM&gÛÜ_CÞ8Ì­2»Ò?€OûMCY_ûÿ¦¾ñˆ;Ë®IšÏÊ–â`®å{ѱ^­±ñ?èà”Ü»u°®¾õ£6‘ÅW>j68´ž öæsDÔgЩ«Xï\˜5 Be¯ã™`ùä£XXSR>A©K)Ħ¬µ#j–ìvP7"ʯLWžÕ £Y·ÊEò¼9ì‘cLò ‡îóûv4î,»Lµç"¥Î?“Éÿ!¥ý¦É»ìî¤ÖÉJ:úö•ÅrX´ø¯¼M×N½³ gÝ >¸7ìŽÑ¨[&¨Nd*VP§Yp¿Ïï‡:;j[†œ}|Fw€CáÀ1&y†§[ì[.Ħ”dRq"ê3ˆ†>"ÚΗ7c’gºj[6*ì n*ήQ‰Î)žª¿¿°¾nõ‹PIí nŸÞù`•ŠûÚAž»tùjE²ë\ìöí¿|°úî$€Swpo玹‘t†>õõü¨Ngè#¢\~·ñX-µÓþIZ<£×Žé(O›g“‰DÔÝÏ[Ø„ê%Ýæ%ŽÁk÷JŒ©OÌ3Kýœ³­ˆËnfjPx„ºµqòQY·F‹p4?zðàöËêµâéX±°w,ºH“¦êG:àœ—å¬ûÑuƒ¾º÷X³nõ‹Pú2lç÷:~è½÷¥k[»Rüð#­XgqݪŽiÿäÃ[®º¹NÕÁýx´qÔNû#—ïý[ò;üIš/Mo1FD¼ß½4?ª)ñæ„1ޏìýî ÇKÃë sy«×e¨×ø×gÌZ%¼ÕqÙ"Å‘dõá "âdœðŽêÕ{Që +²šyÆ›o«nªÍÀpd‹ïE¨£¯«›YêjÔ;±9ޏì‹OþÅŽ5é‹ùMâ4#"^|šD}ܘÑEõ·f,¾Å Óuÿ õ§,½cÑE¿(áÆ¢¬}ãƒÅ—%¿ÉäºuïìÞgåà~ЕÅ$¯]R_sîxkíË/¬ è[>j§7bîÞoç«ù¬çY <~üXóƒÕÕÕ±±±Êÿ¬\_r†¾È8QþJtÅ;ï¾wZþµ6œa¾·¿í¿õÚ99¦Ÿ‡£våí8Â]À&׌ƒcMÎT΄ÂZü/„BhÏþþþ;ヌõ€£6BáùõÆ«¯\¼x·à¨PˆsÜÕ €£ö‰Ã°½¡ ÷+c„&Ây6™œ-nŒ®ï¬…•éñpÎ8±4ïÔ ŠRX™eæ©RóJ¶¾w††=q9t ø²Y_q—ÚÊú,„¿F#:çå&pš÷Ý:|WW²Õã8‘¥t('JûM®å{ѱ޳¸¡»yù¸æ|"˜Q¨µÎ9í×™`©¤Ø¨íwó9"ê3èÔ­w.ÌšáÐó•üÊteÏbÍ0æ˜ —nhÈóæ°GbŒ1É3ºÏïwzJ´³ì2Õžy¤ýåÓ‘)í7MÞew'[=5IûMþôβËd*~ð6]qºS1ÇúaNÔá¾YMê'¨Vl*VP ±)«µþpŸßuv· 9<úøŒnÙn†B5€¯­­%¢î~ÎãžPÇýÆŒIžÔ@29k94ÎÝ·‘âž\3ÇbLò O7¿p\3ñMò&ƶÂwäú4çXˆMyâFw4±¶¶¶±1÷ÖúœƒóVNžšFBß#wV–åì"MóXÚ?Ió²,Ër6ëûY|ÙÅüÆb]Œ±Iù³ÙlÖ÷¥ê·¢´òá­{²,ß»õpò V p¢÷íNP­ØVÄ5 ïÒ„‘ráÀJ¡¢’‚`žéì8žÞˆ]½| ¡PsÕ{ívP¯3ô­Zœ;æfD5Ô§âDÔg }D´/TïyæÙdÀÁÛŠ¸ì-ž[pîpêHppNñTý9Mý¥ÞÌ•»$5¿ê>ÝV&ü`•Š{–eÈÛH]º|µøª•ü7­qC¡s±ª[»òmz#ætõQï˜Ûy0ŸšQNÖá¾½ ê }êëùQZÉ\~÷°˜ÛÂq<ퟤ3|Äìò=…J!6=ÞbŒ#ÞÝÝQ"ÆÔª¯þÔ<›LÌV¦Ç#[’gÚ°4?ªëöuÅëÔÝõñ£î¾,ÞVW&Ý""ê‹.úM&‘±‡ß0ˆ{ àØÃýóÖñ³ç#ÖP”ÂJ œ#ãDÔ•÷Ä»3Õƒ‘xîÞ]AÐÎÏå‡=ñb†k™ÑÐÓÂ¥Ç`$êr.¼tùªs>Z¿{Y|Ù¬ogÙuÝŸÆõ\8ažãá‰ðXu÷w «ûhN½h;¿GrÈ#1Ö(íYŒIÑ•=­ý2œŠ{˜å”Ęò›øv~¯4|ŸA_½óiÎQ-,ŽX±ûª%>âÞûÒµ‡­])~øÑNW6eÈ‹,ïÑÎr$æB–¸?mÇÓþÈå{g¿›¦ËšÌÌ0&y†£ÛFõùf7ŸŠ7'Œ”‹¸ìQă7ì}Ö;¾qÕßÍ æ/†‡m6›Ý+ñ~÷Òü¨òšO|30l÷Jå[Z™£Þ¹07’‹¸Š7UȤõgaµÆþŸŽÖXïXth£æ§J?†ôòí+‹êþgñ-^yûºæsÁ÷–žV>,ú¯¼}]Åëo—&p²÷©¥twc[)7Š¡-ÇÓ±·_>û¿ ,<~üXóƒÕÕÕ±±±Êÿ¬\_rf¬È8QΔ]ñλï–¤ çœïíoûo½v&òçá8^¹ù:ŽpÎùöVã Ä'ã„·›‰à9ï¡°ƒÿe€PíÙßßçÝ÷°pG(<¿Þxõ•‹/â¶BÇ q†;vp?¶7 B!´{Oáòò2VÀ¹…cccX_ç=âAZ€³ ÷B! B! B! B! B!¸pÄñ¥°2=ÙbDÄyÿÄÒ¼S/(J&4쉓Q}[2´{%Îo­}ù‡¶7%V›G5?r³fÛ àX©§PM„áœÑM¬­­­¯{)Ê(JqÒl+|G.,§âê A0Ï&“kkk‰DÀÁ9çŽ@"±¶¶–LΚAM‡D"u÷s÷LNb($ÚÍ爨ϠSÓžÞ¹P vDÆþ~Nñ”é”B,ºmìç¼ië }šI´›²Zm6›Íf³ZƒÅé+…Ø”µº$´Z­Ö`&úà”ÕjŠŠ•™šŠZ±\€PØ ˜Fˆ1É3<­æ­ }.×cRteˆöÒ›48Ø×ÖÔå”Ä ”R&©‰-4ÎÑHMç¢çŒî€ÛHqOè {’1É“ØØø­›ƒFƶ6ÓåÊXô-ŒXž>ÀÙÖÆ=…«««5%×®]3Ï&dõJ[—=Ìsë3)Jpðx|3]µ¤7iÐkȇ[ ªLòÚ%"âýî¥QsÏ´ai~T vŠ’Iʼn¨Ï úˆrÛù‚"ꈈˆsÇÜŒHÅnÇ­\~WQ(½™ëséZQsÁN¬±±±ýýýc …ê<*ߪó3Ï&3êã&Ŭ¦+§Â’¤ÈP>ÞçZ×Q¨µ¹ðšpYAÌ3KÛãá­­ˆË©| ¥%£\~—HW3¦šPã)yf Ÿë2h£ë–àÄZ^^îlĶŸ>Ö ž‚ ŸË{âÕ¹J¼9ÑK’4˜!’»²¨‚Þ¹tf‚V¯ÄâžÐÀúŒH=#ñ\U”¬¹P½Ò-IR*Dñ‘Ùâ`‡Øh‘Î’#>}œ –žØ(Þh4ôT¡³ ‰sÇ€Øåz‹3sÎÕÙ ‚Þ2h,ß¿ØHÁHD’$•û [àÌ;Òï ‚yÆ›ŸÞbŒÔ[çGõ‚PîlÔn½b‚ìBuÕ_@TÈ“qÂ[¼­Pï\ä­ÞˆË)^}®O¡:Ë`8—«Î­­Œpæ ?Öü`uuµæ.Åú8Q:Žpø7w€P…€P…€P…€P…PváäWñwßÃv8>o¼ú îØˆNÅrúo½† pö÷÷/^¼øìÿ-î'm#âò1À¹†N;lD„B@(¶gÕËBIDAT€#†BEÉ­V«5˜Q”ú·'IÚoò§«^ÇÄÎõÈn«Ìó!>í7ÕUw–]&“(Š¢(š޿ŒŠBx®¡°»ûÜq¦I‹/ë³t3ÕUŽÒ|â§çŽ@"‘ˆºû9{B-¬;9¸ï,»"¯Ö”\äÎfeY–e9{pÀuÎËr]!œàP˜ O/¬ÁÌÁ^RˆM•N;¬Öà}~?4ì‘cLò ‡îóûM÷¡´ßäO§ýêÉ?}pºpë*N)\Ë;‡Å¾´ß4y—Ý<`gÙeª=ó(ÍÑdòX;Ju7diî¥YLе¼Ü õs,.TuÉa p|t†¾¦‡øƒ˜  yÞlãà^:Ò]䎺¯TEW¯ÝCæ;ý¡°›òJÌH$&y§bu ‡s4H$ÖÖÖ’ÉÙÙ‹3ësÎ9w̭Ϙá° Ç&'i^–å÷_ùæ7]CÙ¬üþë'KÉÌG~õ”âý×éíèa‘ÉâË.Þà7Kç;˾Gî¬,ËÙE*N’Ò~u޲œÍú¾T7JUÝÔ¹WÌZ­,Ë~Z5üd+ÏuÒþɇ·îɲ|ïVi±_p€ã$§$ÆhdÀ,š‡øb¤`’'5°±1÷V{wJû#—kóßÎG¯¼ðqe‡ÈÁwZ£žw(dLòÚí6›Ín÷JŒ•N éÍ玑HppžÛLJçŒIžé•‚Öé‚ ˜g“Édr¶ñtõ–ºÓô¾påÁßôùK¯Ë!/:Ö«¾<(lÝΫtù’:¥!gl#MDtéòÕâ«Ã8Õ¹Ìz磇W^è%"ês;µ¾1祶ĭNfÌí<˜só8ž”À$¯Ýn÷J¼ß½4#6?ÄsÛ=¸ï,»6†ÊÇï²=ˆMn ©—‰‡6L¥«p_ñ‚òû—#¸£ð$…BõVƒµµµD"àà¼T¼›ÏU—Ëï ‚yfi¢Ÿs¶qÙíݯZÌXu¯+N6Š—§cmOüãGÜ~Y¬½w,ºH“]«ýøÑƒnm¦C ûÊúä‚S/ñG޾ýàîtñà[qƒÖ¥ËW‹¥ÞC‹oñÊê;U#öŽE)²¼ƒtBBa=cuÑУž.è ÉdÀÁ‰¨õûU[¶³ìš¤EõbÞÙöè—._Õ¼wÕâ;®kµ—._ŧHÃC|§Ê=²,ÏWÜ …Ëag" ‚Þ2hdLJÉÅ»Œƒ}E§±83ç༴©»×v~ïèO"üèÁÕâõß¶:ÖÊg½/]{ØÚ•âò(‡ìèå‹Ð;Ë­žËÞ®Ô\›¶ 9cêiÏÎr¤öÚ2Àsuè!¾:;éànq]Ž”zcv–#䮽œöOÖÂQËÿ>Ö;y«×k—ˆ¸#°àÔ“ú É°G½õ“qÂ;ª"ý¨wbs<qÙŸþü‹ÂQfkñ-nˆ/‹·‰øç^¿åŒMšh!;T7XÚoÚ*žˆX|‹¦ëþ²> QïXtÈo§ñâÉŠú¸1#¢‹rý(‡WÈdûÜë¯;éQÝÜÉâ»÷‘Ë$N³ÒìŠSo«%È„p²hâë³cî½cÑ!¿(NÑç^?j)ÄKÇåyü M·CÿãÇ5?X]]«üÏÊõ%ÏÆ;ï¾wêÿgöβ+úB;/œ<¾·¿í¿õÚ3>¾Ÿ…ƒûI݈G¸ XÇæàl†ó‹Ù1¬8± Å—Íú°¡°[ö÷÷ßy÷=l-€3w„¶½ñê+/^Ägî…ŸL`Sœ%8¸Ÿ4 «Nåƒ&¸N‘7^}å¬.Zcì-çÇ©ØÛ¸ÿœÖ§qœ ûûû/^<×ÉÐco9?¾bysùÁZÜýËÿ´ƒ#ÿî?qÖøI€c„_èì-gÉ‹?ó“Ç:ýû?þ["úo.<Ÿ»û NŸ@(ôÀs …§ý'iÒ~“?Ýž %´Ùl6›Íj f¥ö­’ ZƒE9Z(ü;ü}Ñ:ì)T”Lhا‘¹õ³ <¿‰X|YËÑ2åÆPÖgÁ>Ïò ¢dBÉœ–;‰Y³p2ëyĦº¾ÏpÞ?±4ïÔ Ø=ž}U%òl»—êú¯yKDGKƒEŸ<áÏeE=ÏžBA0Ï&“Éäì¶P¹§0í7ùÓi¿(Š¢(úÓj‰©ôZµ³ì2‰¢h:eò.»;yÐ×X3@i²;Ë.“É„.Iè*ÎD"u÷s÷„2]9˜<7Å&·º©|f…g=bÓÞ8‰µµµõu/žÃ£(™ Õj-uƒuã þòFÍRœLŸ<áüÄP˜ Z‹ý¨ÁLÍžd³Ù¬SSS¥Q¹aʯc±)›ÍfµNÅ J›[.69Ió²,¿ÿúÃÈ7¿éÚÊfå÷_8Yl8v–}ÜYY–³‹4éOY|ÙÅüÆb©§°n€Òd}äÏf³èP€ã 3ôU·“ª`F)‚©Ry¹=¬)¼ÏwcSVµå$"E)Ħ¬S±ÂÁ¦bEÑl¢ZÚL°²A¶ÙlÃÓÑm­4PggÙ5y—1"bìî¤ky癞}òðc#sÅ^.AÐ;¢X“mZyHmR^Þg*÷±š‰ yÞöHŒ1&y†C5ñvkRŸz5vòêdµïóûÁ¦¡Bݫ˃Ýç÷CKQûÅÉ­S±ÝŠijæË™uW~|Xý~Õ¼í–OŸðòß?øb“¿Ê!O\(,Ħ¼s‰€ƒIÞò:’C‰1G ±îlV&m’7u)¾#·9ó«·îù,DÔû•Óç/½.µY¬ÒåKDDdrÆ6êN1 à\ŒŽõâ¸ÇuÀOIŒÑÈÀ‹ìÅÙdrmm­²ïPQ2¡ñp®ÔETîê¨)|‘õXŒmm¦÷ˆˆöÒ›9Ê…ï¨Gµ½ô& Zô‚Ш‰V›_Oj@~‹-v…=¨x÷àÑÇÏ´ð¬w*™Tœ8w ˆmv›R5ËåÐx8gtÜFŠ{Bry➸ÑM¬­­ml̽µ>çàœs‡æEØjR^Àú¼•*ÚIY¹WWDºƒ¥(qò»DD{ùmã EXǧ:‘¾p@’5o»ÞSøÝõT£Á¾»ž:¹=…ŠRHoæŠ;®8àà<·™.(Š¢òÛÄy¿¡çàœXçר®8L<%“ØN×ô•z5_—Û¬·_V//OÇ´µætc’×n·{%Þï^šëû«ŽmÓ+…ê~‹šBu$µÕU;–“Rr±eî3è5ÑåæwnFT[òúû° …—._­ƒî¸jÒd>z•*÷ê&t–Á~Îã)™ˆvó4hѵrY¼ÔA*_I¯|ÛÝPøÉ~wõõÃÜ]ýÁ ¿|¼›ÏUäÔð­–·ºÇ¥ËWór‘ÖµàCè&õžÂÿ¿½û n¢Îã8þÝ=|àCfœ,žu,ñð¼cjµxS[â]¬¶xLÏcª3Žt:Àµ‚RÂçb´ÈÕ\ïÎ+ÜÉð¯ü1¦!”ƒB…vx¤Ö¢e$ÒöYû›ýí=ئ„6m“ô%}¿fd7¿l~ÙÝl>ùý~›ƒÁP]‰Õ8au¢¹\ž¡kP4ÍY¹¿"[)½³¾Ìå²ú”ã.´>‰¥#Ü-í-~{¹·<[)Cc¯t‡;Šòcœ¢ãžÉ“:c/(møô¥DD©W¢½+Ó¶p6KpŸ&þ-ÅÐõ»?»§¼&ñçI¨Rb2róíVèì w%sØ÷†»ì™óG›˜C ›:[àЩó#ËÌ´P8?Ó~÷‚ÉÛ@¶`Ùo¯Ÿ‹3,ùú·Æ.ÓÔêÓèõuˆ½¼ÁëVwÎïš­¤.òº•ˆ ]2r¡¦9óŠD×-»Züöü\GqY‘HGskc‹¿(Ï©iS|ŠÎÝzíÚˆoÔÓ¶0ÝÙ³íS÷±;?Óó-e°‘lÄʧ,Ä;È'^¥7¯-7ß.áîÞÖæ¬¼q{&]Óœï)ÎöØÙh׳ßãr ™¸ˆ¡FNŸŸ`Ý?Ú)zŒ2tƾ/.ØLcŽÕÙJù«×Zk«­m3Í÷iâß ½ÃÓ’t…{‡%¿Ø%ã€ä^fÌñœ`•¬ÃÕZ’pÀþ*2róíâo9ÎÊsŒ{´[ËÁ`0dµðß=[ ‘Q£†BeÆöí;íÞ‰iúG]x\ëöàÈÓ’:o¸ÀãqD”Û[Wb»³§ýÕK¼5nµ²Þ(·~¸þÔceƒßsc¾Gƽ-¹[¯µoùåVF/0ÁßA€$„*kŠž@ua—Ý.zg ºP>>wiù–Á_§{…§Øf]h2ô“uÑ…Ö‡]¶RbÏÏͰ¢Dy¶ß×±rŠŽAü¾É?c#åcÃVò׳™» «ëË\õ"bý°¥¦%¾OÇ5¸žú²åõ2t)‰­¤®&\à)sÕG?å‹=Ík|õe.Ÿr|.Î’¯ÉhÇs‚Ur¬®°û}õe®ìò ·òùÇ£Ùb_EÍÙJGFn¾ÝçóKMåLÙã†qo~§Pëëë‹{Ç™3gJKKûûûÇX’³çèú5¾Ž¢šP•3å•ìÜsxÛ;om[²ä˜®ÿbãqF•˜±¶îøÇ¶wÞšà™sÆ²ÎÆìeŽ–ûZ‚ÉdçžÃÏ//ZºðÁ)­ÌÕ›·/ý«V­Já±GŽÙô櫉pÓôßÇw}°Wìïj „Þ<×®måX©ç“žF¯¯S׋ò3§VãތӘ¦Phu±Wqô€CÓl%u¡’V«ˆº7ÝÇs8 f#½[ ']ÿÎ=‡9n€³10m®Þ¼= ÏBKa6½ùêܹsÝ œis!8M×â' …É}7åèÎÆÀ´}Jûר³›\KáØd³:–––²½f{(dà@ºbL!… €PB!…°Ìa€ô°sÏa6B¬¤þPÒÇÚ7^c#XþþÙ“*O(éãŸ14.E„B@(¡¤S(œ£±…`Ö‡BZ …„BB!€<0‡PH(³Þ@D%^Ø4[·ç¬?¡Ï‘J­üäÊ–g´‰O´ÖLžz»ñ_« ®Ílõ>[u|Œ§ˆ>ªø“+[räˡۯ¡ÌšPh¨dŠçll½ºQÄ4[w<ûç“òÊG—«s¬ì¥Ì1L~Ã{ç.eˆèú×ï»\¼9×Zx¥¹QD1#†ˆŸók%Ê0•!2faB!ÀDCáPz3Õˆìeš·ËWù:t¥Vl¿¸y©¦‰ˆÙ}pÝêÚou]D”ZQsá7-ÏWt]—Ÿ5‡ŠÅ¬vñ"ûWßo¾´qéRM3»îýnñ"õÕ7bF õ“\ùxYe ÚTéÞqicŽfš_~¼¬Ò/+·_Üì”8›"ô»€4 …3µÉjŒÄ,iݾªîë_¬­Ù°HŽoÞþå@Äüi õ£ÕµßÈÊ÷C-gÎ]j:¿y‰zf}síï”RjŶæwmȈÕ>þZÙJ]?ùÙÁؤò }®ˆ‘³á|ë™s—Nïßð„RþÛ/¨a•Y±'B!˜Å¡ÐP©MV/­ý)rù¢_DÏXòÈ£"Òu31¬bº~rkÅ!k6îcï^­i,YæRêÛPK8¾’çs‰SþáGYhŒr;©)ÙMG÷1H«P˜Â£†ºh/­µD׿xÏõ…èºtÜøÑPiK×þ{Ã×wß¹û-×îÂ÷ÏW8µ‘½{µ¦a8s^’¦Ó»ÕÞhzìcó̿Ŕ7{o~}÷÷º.º.Ê4 5 1+”QW>éh)é#b˜)Mº74ÍŸ¿H”zi‹¿ùЩóGNozJIÄ0‡WyO_Øò¢‘¦­;Ú"*ÞccWkF sqñ†,¥Îžöæ:cËDn¬Ù}]ž,ûç‡/(]Iì ÇXù8¡ÌæP¨R›L«AΚ5TƯ–=©ë§»5²ðâŠó•’ì…ó 12lÙ"ÒõcwÜÕš†¡"órr³E)·ãéaÏõcø[yìáywU`´ÛIMÉn:º@ú QIŠv‹R¦í¤}èåO7…ówî]óǽ¢”ûÝoÿRÚöþ~óÿ¬KåÉ?U?dŠ›«jÝåòºÿ¬-اÜïžxûé;×/›JD)Si¶w4¿("¦1Ï¥4çï5ÿ%PóòdzEÿ.Pó²¼s|ÙÊHœŠM­¯¯/îgΜ)--íïïçð÷…{—®þÛÁràà¡Mo¾šx¨£¥¤HJš€PÒJjÝÇ €´! h)$ˆÁ˜BB!ÝÇ„B9{ú$Pf5ëgùþæc¶8p€ 0Œú7wsçÎe뤇ÔÿæŽ=˜=SB!… €PB!… €PB!… €PB!… `¸9÷oÕ¯Þ¼ÍþHÜÒ…¦a(û… ÖØ jt€PB!â‡BÓl«-(X£  ¶Í4G+iÝ{{ú_†ÙVkUµ¶Íd§$kÔ M”rל­tjÚÖ4gU(T5ïÙk0Ûj 2÷75eHoãúÂZ9[åÔØµ‰K´ûxXó¡Õ 7Zëàh-ˆwn·ÕF—ô]W0¬1Òì9º.ú\µWÕÕ±Û Û[º*<Å6MÓ4[±§¢«¥ý 0%¡Ðj ƒM åÙJù«w¥ÜM¬ëê–¼P¨Ê©ií»Öø:ìåÞr»ø«wµ[r×_‡y›š‚Á Ulì´ÚâÏÊ̈Îgdfù[ÚL:‘&#êzÀãrÅP˜‘™5±§TÊ]Séˆæ9ÉÊtdf‰HW¸'úDº¨^ßhÍZytÜt€”%1¦Ðì9º~¯S×E×EM^,ÕW@t]:ÂÝ"6ÍY¹¿¢k¯³³¾ÌUïö61@`ª%>¦°§Ñëë{yƒ×­&+ÎÏ´‹Rîa=Åš­¤.òº•ˆŒÛO­iμ¢®pot¾7ÜU”G›"À”„B‘îp‡ˆÄŒÞ'¨‰HW¸WÚwUt}”b¶Ü|»®{GÞ먬q+%öLÛx?vãÈËòy{LÓJ®Yyö+À”„BMsVÖéz º°¡Ë.º¨.« ϱºÂ.õe®†ÌŠ1Zm%u^·ê¬/¼8t™³Ëåñ‹Ýº¬xœº9«Î–…Ë\.—«¬9?ÝÍÉÒúúúîÓª_½y{éÂÙ…ÏNüÍ… @ÆøÂûÂÕ›·Ù…w_h€ÉB÷1… €PB!… €P€¨ÿÅ~«L§–0¹IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/test_action.png0000644000175000017500000004407012032647206023376 0ustar ebourgebourg‰PNG  IHDRÓ¸7Ø‘×[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí ÜMÕúǯTÜæ"]©Œ•Ý$J¦›¤BuKJ\S¢ºBÝ(—x‰R*!»ˆ¿h CfQ†"7Dš ½·ÊØÿ›u[wötö9ï9çÎï||޵×zÖ³žõÛûüö³ŸµÞýê‘5üú! „@ºèÖöÆÃ‹ÿÒ5¢ÆB@d4ƒFN9ñÄËh 4y! „@z0ž®˜7½¨k4! 2|^óföU Ù !ˆysu)„@f# æÍìó¯Ù !ˆysu)„@f# æÍìó¯Ù !ˆysu)„@f# æÍìó¯Ù !ˆysu)„@f# æÍìó¯Ù !ˆysu)„@f#ðÛs2ç³qãÆÏ>ûì„N¨V­ZæÌZ3B ¯!›yÛµk·mÛ¶ »K–,9vìØ ÖdÕ3füøñhëß¿ÿ…^˜°Ú·ÞzkêÔ©UªTó&Œ¡: !sb3oÕªUO?ýt3Ò† ¾ýö[|ÆÊ•+›š“N:)a#¶nݺtéÒ_~ùrQò믿Ι3ÇÌž=;:ózõW¬XñÊ+¯<í´ÓB†S“B ÕÄfÞŽ;Z#z÷î W–/_þᇶ• Ö®]‹¿Œ×μˆ}óÍ7P|vv6£ïÞ½û裎2¨W½CŸ(}%#„€H±™7âØï½÷4Š›yÌ1ÇT¯^ýŽ;î8âˆ#Lß7ß|ówÞA€Ã%JÜsÏ=gžyæ’%K¦Lùími;wîìÔ©N4]|Ç¢;õ>øàý÷ß¿wïÞ \sÍ5NÉ?þ˜pÄ–-[¾ûî»?ýéOuêÔ¹í¶Û|õO›6mÞ¼yÜ9î½÷^£aÓ¦M/¾ø"f£¹téÒÍš5«]»¶i²Â·ß~û³Ï>ûþûï¦hÞ¼9Ý£«,„€ˆäìmX¼xñ}÷ÝG,¢F… š1cFVV–1…òÀW¬XQ«V­š5kî߿׮]4-ZަpØa‡|òÉÇwœ¯é?ÿü3ÊÏ=÷Ü?ÿùÏÄ=1Dl…W­Zuçwâ Côè/\¸0L«¯þíÛ·Cµ_|ñ…éÎýàî»ïæ»R¥JuëÖeýíÑG8q¢i5Â~ø!Œ¿lÙ²ÿüç? .|þùçíÐ*! C >/dŠKxðàÁÖ­[ß|óÍ‚ù†. "à‘Ë.ºè"8Îi"k\Ÿ~ú)‘!ˆálr–-Z´gÏž† RÉ÷»ï¾ ¿C¥J•¢†AŸxâ €;xð`ãeSISLý:t(ßD zöìIâ¿Ï=÷Ü„ .»ì2|gjøàP~ê©§X2džû?þxì±ÇšV} ! @ >/<¸cÇƆàY¶muÔQ0ðTšµ8ˆ¸_¿~8•ñšÈ’Z‘"EpHéx饗7™J£çË/¿üúë¯)Þ6¸e”¯¾úÊôµKvƧ&ì°nÝ:«áŒ3ÎøûßÿþÇ?þ¿›Jæõý÷ßÛV„€ Ÿ—§r30î§Ó|^¯ºê*¸øÕW_Ågäƒ+Ú½{÷ˆ;" VHõ4ëÊ@'[ZµjÞfD»×Âi@xÙö­P¡‚‘,S¦ ô½oß>ÛD=9ˆ`P0ßá:Õ*„€ˆ‚@˜·xñâf$â¡Î}²x¾Ôo%ÎÀ;ñS¢±„ XѲ \á&šÍd„€-¹SæaŸE¹5kÖà«Zß¼yóYg®ÍÕjûâ³òE-´‹X±bÅ\Â:B@$Hæáãr5qO ðíçÈ#´¡EüÖk¯½–V´L½YU#.̾•´³÷”SNaßdm?<þ#cl46üN8Øv´…pý¶ï|`ºØ`H¼$nGTA!$ø¼0lûöíüñ·ß~›»²øãXìòË/ÇÕ}衇x„?ÿüó?þx³±ì¼óÎ3–]|ñÅ4A» `[Býúõ›m¼-[¶4Û„N6ؽ„žyæ™Õ«W÷êÕ‹u<ø­ìv@>\?f›¾¯½öëiØù„C\×:lذJ”ÿío[±b…S”òçŸÞ¶mÛzõêÝwß}ä¿0]pHI>ô—¿ü¥OŸ>Ô >œ|—X‹©p©%«&4Ú°aCrÔÛ&»uéÒ…älW\qÅÔ©S]È2G¾8„»ë®»ˆÇ“2™J’.c@Ïž=éKž:«S! 2ø˜!mÏСCÉîãŽ<¤ª„bV®\ù¯ýË4ˆ€@aÞsÏ=wË–-ä†ÚÎ>ûì÷ßß<¡“t’DñøÑt$ Oß¾}ñ7wïÞýÙgŸYêtŽ^&&ćLN ùóç#Löâ!C†@ˆ¤t#á5äX+]º4MÊ8oÒ ú6nܸQ£F¤×ÌÎÎF{¸1`Òˆ#^~ùe’{º41žá1M›6{ ·Ÿ?üî´bÙéázX{ëÖ­Tê#„€ˆyÉYÙ¹sgv®‘î׉ìV«V­råÊ‘JÝ$6­¤Å8p ¬DNL˜nРA¸4áêò /“ /µbÅŠ5jÔØ¾};~1äASi4Dü†©·zõê„¡+W®¼jÕ*:Âæ|`yÜ[’oRCŠxRd2 î.Í›7oÞ¹s'ácR#3 nAyÓ¦M¸óåË—'‡<‰Ú|51\u6ô‘q¹R¥JÖkæÏÿð¯©ñmVy×Ð:B Óˆû/)ðûx$Ÿ;w®MX‰cøÂ /°àF 2 eA$äË!Ì Ñ*´­ß|ó å &˜?¹£ÿ÷[þOÆ ‡xä'…¥ ) ÉXF¾_¿~8ÔXûü#< ‹Ã #?ùä“t,R¤‘ ’`!–W©R%|t&N_CîHâ×|0]Î8ã Sp¥ W¨V!  6q3/pàáÂtÆ+äìëì.`݉…þnݺEßípòÉ'ÓÔë8•9Dù„N€y‰¥VÞôäÉ“ÇOðþ…Ri"8`LÍ o¼ñ)ßqi©!ÔËB"qgœ\î%¸½8ÂÎ.. xлví²Ä‚G3ç¦S›ÊB@dñE :°OÖ)”‹-ÊÆ"›<øïٳǶ†ªU«†ƒÌNƒyóæá6]e•ŒoB¥ï¼óNHGon&ócÆŒ1C›04|J|™(ÇÕW_M—½{÷ò]²dI»hõ°™®$þ{Ë¡1kl#b`ÔŽ7Ž ! ¾àw‚¼ÜŠ`d&²ëÖ­k•« „€p!ó¢‚ݰ’ÑU§N O=õkk<ѳnÆ‚’kßCRÁ³ì†»Ú¿V®xÒß±cÎ#tÉ·o— J蕵¬Õ«W_yå•ÄUÙr€$–àž_wÝulœàcÒÑ7iÒdúôé çTõÊ+¯°¶æ¬¹æšk¸%À¶=ö!`Zq„鈌WqÂÄL‹ÍøÎ—^z©S›ÊB@'…zd Åå“l†5^Üã>:®°&.*á]B¥NË\eþ,:ÊsȲ‰* ÄŽá\µV!q ¶+üñ¶&f­ÌŽÕ9#¤Cn$Þ]1õK@|@ÏÏCP¸_1ÙÒPY"q^_€ íÒõø „To4D z“wt/ÃB ÞÊð!\{!‚4+V,\Z…€ ð?OPp! „@zHšÏ›sÙ<ï«ØÒ`•†B@Ä‹@¾a^‚ÑüB”Po¼H^!fò ó‚ >ošÑÑpB@T  8o*P•N! „@bÞ0tÔ&„€HbÞT *B@0ļaè¨M! òÓ [ÒçW–æ¤.…B@d,òy3öÔkâB@äq3/¯ãâ•]Ÿ~ú©yEY®®…€ù8¢ ¼e‘·‘‘Îå4¼¸–·p˜çÎmìÛmò y2I G æå=¼·Œ÷CòŠEÞqÃû¿yc„̛䒰éàò …2I G *óòÎrÒ£ñöqò°™Œ>d]ãcࣕÌl$qàý¼¼uëÖæ-‘`©R¥Hè0qâD^ùÀú—2¯!ïÞ½»IÜE–'í&ïÉå½æÈ“ÖŒq)ðf² Î’q9<묳Ȏþ8ïn'ÿÉ7± æmåÈ`yÒHoLú"ÞØËË|3üôkúB@ä Qã¼äq Â[µjUg"5c1QR“m·cÇŽ¼}Ê”)¤F7M1Ó#SÆ7E±éŸ’‡â‚ . aãRI&M蘤>0¯IŒ6lØ0¢Ò¼¹ª55 §76“Ò·B ‡DõyÍ;œo·“B˜´Á$K'k™ƒÉ¸N^œ;ï¼Ó¼ŒÜ¤æeá¤kã›ôä "ûn¬Õ.cR£ß¤(Æe&ãŽq·¹ Š‚—çâÆB¾(,S¦ ´K. r!sÈÝ‚·•óÖvÒÕ¯_ߘ„‘xÊÞ[ˆµG! „@Jˆêó’g ;L6u—A&Ï. ¨‡ÎàD ÁwFŒÄJ¾XϤæ©ß¥!\Ʀ(&G z&E±Ñ@F8óÎr†€d]j9Ä¢:²²²È ôÑG™JŒózáRéA ªÏ ±²[€*[ÊŠ/î4ÎpN¥©$—%¼oÒ§BW9ÅN&B yêÔ©¤—'Õë„.ý:B@¤¨>/lKæGŒëիך5k/,Z´ˆL—a/¼ðBÜXr &¤€‹zñÅã™&k&¾)ŠC”W¨PØÈúõë @c ƒÄ7ÈHÏ~ “Ô=±ôÆ!#ªI!Q}^”¶iÓòbŸÀ}÷ÝÇ!,†#Ì3;ƒûðÃ?þøãíÛ·çð¢‹.â?.#Â…”ÅC† !E1’ ÷àƒžvÚiA½È¼qãÆ.‡>µk×;v,¶aØ™gži’Õ'–Þ8h8Õ ! âE îÜÃ<ÈãÕòMpÖ*%ï/tœDo×5™()ŠmÜ^69 q~÷ìÙƒÛVSÐ{\€èPœ ÂÜÃp™Ù‡ëµÏ›÷×+““/u†hs²*7ƒÔÝBlP“BÀ¨q^ßΪB@ˆçÅ…N@µº! „€/±™·yóæ¾=U)„€‰!›y•ñ71dÕK!„€â¼AȨ^!*ļ©BVz…€AˆyƒQ½B UˆyS…¬ô ! ‚ˆ½ÂÔ3ÍõƒFþöú]}„€ynmoŒia¾a^fR§A£˜ó‘€B ç,šój‡Ö-Ð3|ô„(½òó2Ÿê¥ÿeV’B@$ŒÀÊO~¦ï…SŒÍgÌ›0”ê(„€ˆ 1o\pIX!Ž8¼P´¨ÏŒª…€ÈläóúŸÞL¶7òM.ˆo:‡nȆùóÏ?“óíàÁƒ¤}ãÐ-—²ãýû÷“•Î¥þ¶Ûn#«’Ã_|qæÌ™d«Kó’éYÌë…]5B ‡qx®®°…J©R¥r87ow_Rs‰‘ÅrÖ¬Y×^{-¶ñºtÈoÙ²Å%“ºCr‘•êw 1pà@Œ§²_¿~¤ }î¹çŠ)¡IÛìÖ¡y}û¦ÎB·ãæ)„DjN«>ÿüs’Z–.]ºsçÎ&Ùyæù™¶mÛžuÖY&S\§NJ”(AÊNšÐLÊŒš5kŽ3¦OŸ>C‡uâÀR]–,YÉJ•*Ù. 49r$±êÑýôS¾/¸à‚W_}uÊ”)Ô¨Qã•W^!¥1Ì{ê©§: /“­ÒwªB>Š… †p d“f”œFdÿ¤cVV ÉIÊŒ²³³¹Á„®V! âEÀɼõëÔ é>oѲVߦØ>¯o7SéK N6ÁU„)xÃo‡¶nݺbÅ Ã0——ì"’šy_°ñ+Cló6Á°O>ù¤ÍÏf.\È-¡Q£F+VƉ'nÛ¶Í8Ñ7÷ B´¸«¸™è,S¦ Y>8P«V-ï!5^UF8¦wÝu’ÌúôÓOï½÷(ãÿr¹üò˯»î:W¯^Í­ÈhÓ·ÉB`ßþÿý¬fÍ_zåe—új¦É)é+ã­ÌózIÁ `Ù„'‚ 6¼êª«h‚y GPð%»(¤f¦«V­ÂãóÎ'¤¦X±b–v³‡øãN˜0Á$=¯üþûïvM@»”q9sÈnAªÂÍ ¬ñ /,_¾$)wÜq³víZ¾+T¨`ŒÔ·©@Àéó¢æœÅÔv D¥KÌ%t˜8óú’‚Ʋ‰á„µF„• *”/_f'ØŠëW¼xq¯˜Yæ‚=‰lx[½5p"•M›6mß¾½·Õ·&‡,ì«Ó׌ùóç„i×®û"ºuëÆó}—o¢ |s˜¦2+ûBªJ!¼”:mÖÂfWÖµ:9ôÊØÖðBâÛ&,X)àÏΘ1ƒçtßaX£þ‹/¾à{ס³,óÚï ¦)&©Á¶Mš4A˜¥³5kÖ@@‹-"âLƒJÉ k°GT”˜€Ñþ]­Z5|I6KÌ›7×réÒ¥øé!]p6yö_¿~=›ÛBÄâmò5ƒmsèa¥nÙ²eÀÈæexö¼óÎ;âˆ# eö“•þá‡âKòB@ÄD`ÿ_½ÿ&¿¶Àt¤àm¥&¦Z#8óú’‚kÔ³Ï>›•+xpذavñFÍ’—/ËÐ7"©ghݺ5‹iìahÑ¢Åã?ÎR˜ÑŒëŠžgžy¦qãÆÄ.\öø²/­wïÞ¬ËõïߟmjÄ‚wìØá+i*Ñ|Úi§uéÒeîܹ!bñ6ùšQ§N||vѱ‰í’K.áîÂ=Ú½ùæ›!\PåyÂÜÆâNòB@„#°ÿÀAßgÌçŸo•á:mk¡Yã¼M’p Ž`6KýøãÝ»wg#-{­`Lü/Ö| ×o¼‘ØèðáÃÍo½õÖˆ#X‹kÕª[\ù“vVÑ´nÝ:ö<Àž” ¿²‡ÛûÁ 4—“±®¾új£Á|ó~^Þé|WÞ1Q ¾Ù}ah×HBO„#ø8»G)3#ôp«ˆ"ŒÛ Y;ÇÒ+ŠŒ× HÖDx¿ûî;-a^ô˜¿"I`¥1Š ’™Œï*ã-‘-šß”^šΨPYßîíã 'ˆÒi>LjI'R@€ÝWN±sÎ9‡MZ0/T qT®\Ù´R`íÈÅ2le_—!5§ß2¬gw¼9\»hMáef.àlu.Ö9ës^öšahÍvÃå<þÓ9ÇA„@î"p ²›€q0¯¯v_RpJò Ϻ^0aJþ¸€m°ÎV/ËК:Rs­²B ý£mC”5å”yƒôÚzþŽˆä‹?kÜl“ B@<‹@ô岦ræÅ«ýó¡OÆ©‹B ·Ø0êrY¦œy°I]„€¹ŽÀÈ[Ä05Ÿ1¯É”À<ÕE!òyÿ û<âNÂB@„˜óúŒ„ûÆì˜o|Þð-r1ç)! „@ÞA ñ¿aË;s%B@ü…€˜7/Y+„@A@@Ì[΢æ „@þB@Ì›¿Î—¬B  æ-gQsB ! æÍ_çKÖ !P󄳨9!¿óæ¯ó%k…€(ˆy ÂYÔ„€È_䛿a ‚•¼Û¦üûwnùkùËZ{y¤¢ (Rj&èL9ó¾÷Þ{d¯©T©RÒÑ4}›–·X̓FN¤œ¿ø7Y‰×ÌóNzûZz‹@ª ùËÚ”¢‘Æžo¿ýv÷îÝdÏË×YEÆŽKRb§äÔñ†58 Cر¼…8ò°=ú裋/nÙ²%i"½Šœ5dº´iÐ\iÙœb9)sÝßÝÎߌ¡#Æù’/–ŽˆAÉ]F Ë;ï¼³J•*9±!ç}˜©•H…GN{ò½“QiðàÁÆ 'æ97ÌWC´–sÊ}ˆÌ~&OÒòåËÉ9=f̘SO=Õw ɪLŠ}ûö‘Æ”\Y&§æš>}zt“ÒpнÆ š¢ßµ5À¥?È +±àÔã"¢†œ‹qñÄ‘‡|ko¿ý6œõæ›oÞzë­!™ï¹çSr‘Ÿ}öÙÃKI4ù袿9ìõj]b±X°d¹-ûN9å”>}ú¬^½š rü>IZì+–ÎJ3‹ˆ#’tüøñ 6¼ë®»p¾úê+ÓÑ…yDm ˆåAk¹ =ýôÓ=ôPÓÉI—¸ ` H¿ñÆ×\sÍí·ßÎà ٲ7oÞÝ€´b§I¹2¨1ÀÉÉ2Ã¥Ç9„sÖé)G6ÌŸ?¿dÉ’]tÑÔ©SßÿýóÏ?ßØÇŸ 3.&-9¾$×÷sò­uíÚ• @0þÈ#<‚<ÄA>ö 6p·¯[·.I3M]A¦Aƒ8/4qH>ãù››dwŠÁÂï¾û.÷“žŸ÷u{®ì¡Ï¤I“þýïcçСC±gçÎÌwžF¶mÛH)O¹S§N%J”èÕ«e$¹£0}ŒÄxr-SùÉ'Ÿ „Yƒ–G«ØY ÄûñÅ×_Íd5—MPæâÂ<gNôÍùêØ±cÍš5½CûÖäYk<òÈ… Ö«W¯V­ZNË}A˜={6põë×èfÍš5yòdòg“¤•‡¹9sæðTçÔTN ¢C wÆgÜ}÷ÝÆ1סÂ×TçèÑO±³WÐÏÊ{ÅnÚ´©ÿþüZùÍru=ðÀíÛ·ÿè£\וS¹³dP½1,ü:´¼á»×~Œ1:¹žñ¨èËs¡ëwíÕc‡ {¸©Ñ©É Kx9ª7Š«Ëð|PGÙ(Ý»w/ôÙ]uÕUxagŸ}v5àУŽ: æ5O|d`ƒ/G˜œð~ø!?x@ç±Ëf†G:2¿s¸²ûN`×/ûùçm ª·’gvÕªU®ç'«Ê·/˜‡çŠ(Ìb.• SãÆuн?« +–e® – Þzë-~tt êTë,ÙToúF¿]fÙZ®7œ Üvn¢ÞßµKO”)/†Î¾ —#1/N"^®lǸçð|ÒÄyH‰2¼†ºf2W?´eú²Ô‹çB™SÂ/!¦ÂÝ{öóÏ+To$¹ôñ¸y°=z4>/¼O|£M›6D®á ðq±²ãwsq^yC'm¾¹ÓÞrË-/¿ü2O¾ø¿^«‚jŒµAß¾½¸ca?¿¬%¯³ùI;%Ãq<äyòå›{ª³ox9ÈÎÌÓc-÷~ž¢¸ñ4`¦.'˪k}Š+†¿L ŒÇÒŸ~úÉÐÂA0­ñBÅÓÑ>HQæÉ©]»v\A¦†˜½‹÷gtÅâ‹\}õÕ<7à3òÓÝÕdLP½éžðud?j9¡ÆÛ‹ëwMÇpS½ºHì06ó8p€ /ç øT¯^Ë×Ì<½.ª/…bÅa4†â,£çøãOÀnb¸£ÆNüiÏþ§ýæôÙ‡TÒääE ‡Às1ì³`Á¢?øà3fÌÀiµz(”àݳg­çç=jÔ¨-Z0eó¨ ´6mÚôµß?L¬|xÁΛ½ÿBfÁ=€ëׯ϶~ýz3ŠÅ<"ζèñ®‰d·–{!÷lž¢ ! p‚ØâBD‹E X˜Û?a.pÀ·0}c~'Ù²eËØOæÒbªK2ÞSìênƒ®X8—Ÿ9®¡ž¨l_;¨­q‚ìªwuxZ3‚ìwª ù][=Nùˆ¦:»ä¼›y )[ ž‹·Èo æZ·nÔI.#F†SLÜ7 ↉##èqÚg…ñ³€†{×Å_Ì™vÊÄUþyïþ=û¯ÙöŸ©‰®ÄÄL`a~Üp| ÏyàâcRlQâÆcâéSƒ {qåªPÏ#*wodóæÍ 0WR6š…±Üùí« ráM€O ÆT$˜‡ãL_fÁé#¾Ér¨¹Ž}Çò­tZè,û §ÓZ&ÂÒ‚5#b5ˆpàÜA¸\”ñ'l߈çôeßîx”Mš4aƒÐƒ>ȉ۵kŒo$CLuªŠ~н¼å +–ur|ÆÇ{ n2d7uú:õª25AöÕ›^q]‡N3‚ìwšô»vêqʇ›ê”Lb96ó²æËÓ…•g4Nõø¼päKä´yóæ<Â#Ó¸qc~Ò]ºt1QHÛËCd,›ò¨…ÇÁûm·€ß1ýÿ¦òïç½ûí?SCSDmÄ:qFˆœ²¶†? ·>ñÄôÅ£ä›è s1 Ë!?v³—ù†n`yÍüΡàÞ½{³¨H€&a»ņxgáò«`I >¡j¢W äÄ<gN>q^œzÖ £ieò¸µ×^{-k¼ÆÚXdã|±Á ßæY‡ß³f”B¼P “SÆ5CP‹Ëž Œ ¯YÓ 1ÕiIôSììå-û^±Ü† ïvëÖ‡`düÕWË6ëÔ«ÊÔÙTozÅu:Íðµße[ÐïÚ©ÇÙ%ÜT§dËqü%EȨ8¹xŽNv¦†ë§ÌÛ‹g=è,'Þ®S'[|ìatε](à‰à·RÀ0.~”aaù8%)ãÈãsú]õ<¬1Y¢À®úˆ‡Ñg„ ±“Ëť܅¹g»uIâ<Þuv— Ã|d­„ I%V £—…µ bìAtý¢˜óGŸEô+Ö5hÐAö{ë»]fÄ´ß÷wñ.=ÎéxMu¶&«Ì5Ç_R„êeoÕ#ÛrÎ ‰±­s\C»Ô8 3`§˜)ókqý`L½—‹½}Cj¢Ï‚Ñy¤ðUåÂÜ9—¼KÒÕó0YBÌiFˆ…ÑÆí™È¯ò(¦ºN\”.ÞLMô+Ö5h c‚êÑQ³Ñ%Ó~ßßuø !¦Í:áz·O—°"uÌû¬7}Þ7 ó—µùÒž)O⸠ܶm[(˜·SîÔ©S‰%zõêEVåï5kÖ$·kŸ>}ð‰$(“ôÚd+[¶,y7oÞL®=òSuíÚ•t„ˆÑå‘G¡;©$É„F2ßÔ­[·uëÖæ­ÞF-Þ7 ÛiâÐ{?~}: Ò¼ys3%¼È­[·Îž=›€¡ßyÒ‘zR©‚„O9„DŠ)‚77oÞ¼õë׳J†ŸhûšÐðÒ¥K 5à#ãQ²Rç°’Þ¶¡–À®·))5„t.\H°ûúë¯çFBÀµÕªU#||8ÛÆ&= ìChܸ±¡!¯­uêԒ؈Ɩœ5Èë‰'ž@Œ.d»té2wî\g/¼EâàñöíÛ³E²Rðáe6 /_¾œ%©p±ÄZ¹ ±¯ã¶Ûn»á†¹°<ˆžc=–µ;¬ýû÷§ GxÇŽfD6ˆ,s£bå-ÞyA»,B¸¬§r1ž5ÃùÚ@=ñeîaUªTIljê%„@z(Ô#kxÄ—ë„“²˜Æ'D†&Ç‘bøÈìãe78‹¥·;’°yDo×Ù}Ú´i+W®„•I,³K·ÂuéäaŸ‰ØÛ’ie‚øûÄš­p\óâ` ¶»)¸lx÷Ýw ¦³–赊?'×s\èéP$žŸç‡Æï=D³ù1ÆàÊþÎ&hÅyT6´K«Ý…f$M<Ô·—KÒWÆ·’\ÖCôÈa%7ßû—õÈ;Á¸æå¤l§Ù.8ô¥]g•…€È $‡yóÂL¼6ð7]ÞÊ\£ C>¹šZC  3o;U9œO@Ñ_a—ñÔ]pļáøVBùD<ê- §SÓÈÿˆyóÿ9Œ6ƒð¨4’B 9DÝU–œÑ¤E! þð1¯®! „@ºó¦q'„€óêB@¤1oº×xB@1¯®! „@ºó¦q'„€óêB@¤1oº×xB@1¯®! „@ºó¦q'„€óêB@¤²…‰yÓŠ¸B ÃøÏ·;He)æÍðË@ÓB },ø‹7¶jÕJÌ›>Ð5’™Œ´KzòÖ­[+VLÌ›ÉW‚æ.„@š ¶ íâí¾³n3e½=M¸k! 2Í›7Ï™3Ú%“ºâ¼{hâB@¤'íâí*Λ>è5’™‰€‹vgÏž­8of^ šµiB`ãÆ6È€· íš8/tüß8¯ò§éTh! 2ìÛ¿Ú¶©UëÖÏL|ÍUž1cF¡ììlògš¥B àÕB¯x¸l ó-úõ×_ÓaˆÆB@ßøÓ+VC­MÛIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/0000755000175000017500000000000012165514774022370 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/assertion/assertionscopevar.png0000644000175000017500000000570312032647203026640 0ustar ebourgebourg‰PNG  IHDRô7Tá.PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<ñ"}Ú¾(ª*€@ $AQòfUVB¶§»g¬Éù9°dQTþ}•$ؤ3ÿc0îßÕHÿÁ¸{ÌHÏ`|0éLzƒIÏ`Ü?é;hçŒïköã¾H_#é«÷H?}Ï`Üé XCn©½”©Æ—f‘vø’ÀÑ´#Á²¾”ª`þ3î„ô1ì-·Ê6ø’7¸ð'Lÿ;xò™þ ª ¶LzÆ“þ?Fƒ0 °¹]Ÿ@âKo?\ ©I1ÛéèÞ.pƒñ÷Çk¤wß÷˜Þ7°wÔvlÇË}#E+U¨é¥ýxÅIƒqCx›ô%Xü©ýµe3ý‰ô9Öúe ýú“Ïô Æ­“>Ã,ßÀ#Õô¶˜ÏŸ¡°D¯p-ì½­éw\Ó3îƒô§Öó_AœvÊݽ©ÄÚVøF pÕ©Ujú­%ß½aÜG¦ð|héÄ]Æ2wKz!Ý‹þg)5ûqפg0˜ô “žÁ`Ò3LzƒIÏ`0éwˆòÚ`Ò3~9é¯Ý×㓞ñÉH_2éLz&=ƒIϤg0é_!ý\ØõÿßàÄÝMaÒÿéËò¤#ýëbþ«å;4êp´/Ëm¹¦)·Hú²èËû :³‡ñ‘ztäÁoìšË×%dÖý„ô?ú– ^ƒ~t6ÇpÁ[»ÿ:#çÞô‡\XtLçG¦`}ÞBúº´ù7Nú—“}Löå4F¼q þÔ²ÿ Ò¿œèËËÏàhþ=>{Ò{ ^FÔfù.¸égÞI¿4»w—ñÖ=]Àö]¹÷AúòåÅ=/>äÉÆl´®K¥HòY“Æ e)²Öt™‰í¡P'j[É;ª–Id÷…PEïæz’ÒõˆzNU/1´˜J’Y”| »Á½NôNá¼Nv"%Ên_‘ÝœË~F-édQ(zб~TkbÕ¡ ï«€šæf[YÎòÙî=¤îLô%CNTì*¥ž­ÒuÊ2Q!Å“sÁàC'?JãÑÆûqb¤?¹…íº5Wer»{PVPcm²FæJ:èñ¾)éã‚,ê1&yäZxùy2ëÈ=ƒü»N졃.çñ½YÒŸ<éOCÄOL¼Fëâ½Ñ˜rÏŠ–’¯‚Ξ³©³°Ÿw8Þ \ºnQ˜2êš)à;zž¼lÝ<[¨ð²›gÙþ…¶ÒŸf!=LIïæ}KvÞ¹™ƒì4542sÓîF‰(ûHÇà”Óγ£×!¸ PF8ß ËÎp §†ÐG4yA²qf»ÙVuÊB©Ë†ìœŽZ˜ ,K"½·e02oPmãXצ³£ëìfuÈkzf¿€znõz̪›Á–éóØ,rf‰ö[Á~€½[:k8`”6×vAL4¹ˆïí’>ê‰ô¡¢ÅŒ-nè•CS/ÜëûÞ(Hw6ï¶EêZ…صßÛ}X4F¾cŽí•Ð`ü,¦¡ƒTF=.ëé ¿Ã|™ùàæý1Ù«>pH;>jêçc£ºžu¬êàP c~Å•Õ È2öJ‡ô ŒÙo’MûuÊrƒcô¦®>øÐÉ—é@zgË`dd{lщ.v³OŽ ºGÔ‡+Øôx×›ék88‹†˜L|C®Úá‚ÝØ¾¦£ݰÁ΋øÞ.éõ‰H¯‡4×ÒÂ¥ÍìèbcloikþÍaòyxër¢°³  !N†BtÔAjâ2{ß„6¦~‡´OgóÙêMÙ«‰ì%ž¾ 14t¯òÕªóô :Œ.È FYàäÊÖüëã+j8Y«Á£_õãôs"}³ÀÙ—³ãÎgwFÊ ÇÌ›ƒ-3Òw°Á \oR?O(Ó{¡´ýÔ¿öÛÔÎY|oøB¶¬Ýx÷ÆH©hIÛ³Ày°Œ~ÎÑba×ý,&º‡C¹ÄO-¡ï]O5ÛAêižœÚ¨‹ì6FIW(WŒvGõÔ… ¬ìÍÛ²ã©ì¾ÙPZV”sGÖ¨Bq‘½£ ”ˆ)ÀAÖÄ}ó—µ{=WUõ™¾\|h·:fêGCóûs>?ÎéÏ# ¢‰3S:oK9È÷ë„j®˜ü<õé‹¿µ™ú×p‡I|o˜ôQ§[»ßPeº€c=xç6¼$­æ1Áš/÷5Ÿ¯5‡š>0®¤Îw.?ÆØ:(†CIµ´÷\öî]Ù¶ ç¡£«Õ*ªéƒ X·]ô6)[¯Ãè‚ß©~í]Á±Ãœ§àpá‚¢ U÷²××ô!-úPÓ{[8ã‘tIÓ~Å|~ÜP÷—4{e¯X¼óTïmî…5-™‚«.7šz™æH_»{ÊT…NÎîÝ ¨Áqê‚ ‹[»J;G´¹I‡ú©b®Fµ¢NY§\‰µ»pÀQù8J'ªšù1nÝî½LéB£Û…oÏóe¹È½¡Õ¦ z\zó_oê íïÈ¢ÚÝ{Á˜ ‡ö" 󌽎$¬0÷OüK,ðvº8œÅ÷ÓÿÂ÷Üj>}_í õgåÿÀmî¾Wçškºà ³óŸ!|éÿ ù=câé õ=²C-?¬‰•É­IÏ`0é &=ƒÁ¤g|^Ò_»“žñËñíÚ`Ò3LzãMÒ3Ÿí_j2ŸLz“žÁ`Ò3Lzã¶ñ½à”àÔd-IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/XMLSchemaAssertion.png0000644000175000017500000001067712032647203026545 0ustar ebourgebourg‰PNG  IHDR«µç×jsRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<=IDATx^íÝk–âºÐΘîœ2œŒ¬çTñjw´½, „½ù‘U²,mô嘺ý¯ß¿ÿò @€ÜOàŸþùµ%¡íño @€ÀÍ~~~$¡›­¹é @€ÿ(“Ð^ò @€\^`‹C’ÐåWÙ  @€®€$äâ @€n* &tÓ…7m @`„\ @€À}$¡û®½™ @€’k€¸¯€$tßµ7s @@r  @€÷„î»öfN€HB® @ྒÐ}×ÞÌ  @€IÈ5@€ÜW@ºïÚ›9 ¹ @€û œIB¿þ< ³üÉýç^›ô|³Í`)R·øPã÷\=Ÿ·=hAœ÷ 8 ØÎ'¡<è[{D*bÐü>ßòm×Ä“P¡± ÎÛVÁ‰ @€ÀÉ$´6ÞPóÔR”êÒÑÌ2ÔÑa>L¬¶Ù§ñ|d`9éÌkC€>"p¦&´t°£%¡¨ÞÔçMnFf®*&XÜÔËKbEçÅK½aG2ž]}ŠÉ)D“†õrKTy»:)¼\àÙ$t¸ç5¡¢˜4¿›6#N3aÔ-óg#Zž0zNž¢·T“ ²€m¦Yo›ŸB¯¶7£Ô\÷—_:$@€Ñç“P^9,{4·ÿù$T]z%™}$yÏõž]¿ZDм“^)h²“žL=Î^.9lY0ÎÏ} Õ‹bM«èËTÿ @ Hàk’P‘NÛÿ8|ô¶ÿ^¥§·ñ7cÜaíj<ìÁá“/5ãKr›zëù>dƒ._Ý @€'Î'¡â~Ms­KAƒRÊC39Üò¥‹fÕäÉ$Tß½jN§nÖ+nõ’G¯ÄÕ\ŽÃø2^ŽùWZ;  @€À:Ï&¡¢Ä’WnŠ*N屢A¦îöDMhZfjB“±¬ƒ­-&¶A¨^¬ù¬sªfÖQ °šÀÉ$4s—çåI(/Ÿ4ÃGjðè?sàü}¥Þm£GóÜ`ͲÖLÖ<œEAÑ”9LŸ«]åÆC€zg’Ðà͉šPô}¥ÃbFó¾Ò¸|R¼Ú,öÔâ“IhpŸk<ÔÞºÔU¢4’f0ªËNµFóo3 ðuç“P1Õq#5n3z|óõ~_tž—Ž&·ðfŸóu¯t–^Âç†I/ÄsÌPÒcàÆGIèëÞêL€M3I% @à’Ð5ÖÑ, @€3’Ð5Ç @€×„®±ŽfA€œ„Ψ9†¸†€$tu4  @àŒ€$tFÍ1 @€À5$¡k¬£Y @€g$¡3jŽ!@€®!ðMIh« @`^àççgœØ¾, móñ @€ÌlHšÒ†¸ À^ïQºàÒš p( i@€\V@ºìÒš p(’„~ýy¤[nů¡P·Ï'=¶Sû3½ç›/Õ=ì3ª;Ÿúp1ži0ÌKzŽ;Å3Ãs,xF 0 ¥0ôÁ$T$›´—9&ÿõ¡|3hüÎÜЋwÏ\ƒ4ù’nuB€VxwJÕ”:'å©YU4Hu¦¢&”'¡<šD$¡ºÏýìE$ªëI)Çô‚Zê§—®šI¨>Q¯ŸñÒjÀâ™æ|W¸Êôb“ÐwR‚Ié§x2oPüœ·¬ªo´ÕI(…¡æ¶]¿úPM¨.œ4ÓLþdóGå+Z'¡z²ƒòØáöÍÂ[Ž|…@`ÚƒKeÒ¯uâ™ =é¨Þ—šI¨Eú)bÄ8 åe•fÚ¨SÅL†U‡žÞ3ͰÒìü™qÎǬ¯x$ÜY < ¥;/{v™,ù4‹FEWÍ0]*®•AòèÅ…4‹q‰¥.áÔ÷°R©¦î3OlElÚçIhrH‡5¡qäºóÛÌÜ  @`YØ$”W€-ù4‹F‡w6ÿ=¡fe¨®õ¢OJ!Åóµ–Ã:ÐaTªOÝ,hŸ<<¤†šÐ²ïg#@€G¾, Æ£AÊSÎ`wß+^ìç\5¥ÙyoE®š+'ZÎòèå¨=x³@xj–‚òû\)ÜôŠFõW‹êïõþv¬Ž5û3ã“ß-jöä«UßuêU}æ[æ=#?¬E YÇ©ñêS×7ãÑ›¯f§#@€ „$¡Ã{Xq zߘ~ÔE{ @à’ÐVÙ  @€¶€$äÊ @€î+pÁ$´ÝzÛfåA€˜Øbàø{;{Zúû/ªî=Æ}ÑçùžïkÍœ8%p©$ô|–Ò @ øËô¯© Y9 @€À ¾ìîØ g®+ @€€$ä @€î+ ÝwíÍœ„\ @€À}$¡û®½™ @€’k€¸¯€$tßµ7s @@r  @€÷„î»öfN€HB® @ྒÐ}×ÞÌ  @€IÈ5@€ÜW@ºïÚ›9 ðÊ$ôëÏ#™¦_÷ê—ögŠ—ê%I‡O¶´¨ @€I¨$”§Ÿg’P/]5§w•&Q4#@€n"ðÊ$”xòP’uR›¢bÔã„›¢ÛÞÙë3ŽÇYÔ´¤«›¼L“î)p2 ý§zì|Í;YÏ'¡:ŽÔI+?ûaÖ镬ò|VD¢ý×zâž!@€øùù™Évç“Ðv‚üQ—Rê$‘¾4¨ßÔƒ¤«¢ñ åA-?ûàçf1©˜µ_  @€¶döŽ$ôhj9—„êjS_šÅ›úûÚu¨ˆG½TäÙL¦Ö†¬#ðá$4ŽÅŸŒ=”3Æß.:¬ 3Óá=µuØH @€Àg’Pó[Òu¼x( õþvì0ô43ÓøIIÈ›Š\CàóIh*Š{RÅ×€öœ”?šßJý7#Q³(5ß2a~Oí‡Y @€Ë |& ]žÕ  @€¯„¾b™ ’„BXuJ€|…€$ôËd @€@ˆ€$ªS @à+$¡¯X&ƒ$@€B$¡V @€_! }Å2$ " Ͳnÿ­q“ÿâì;V;Ì HBsN¿oÀ‚ÿ‚®!¸†Àö>”„f?Œ´#@॒Ð,ç‰$´ýûר¥Ì‚@´Àþþš}7jG€× HB³–’Pô^¨ÿ; HB³ŸDÚ ðjIhVTºó>mîÑ’Ðì'‘v¼Z@š•„¢÷BýßY@šý$ÒŽW ¼5 mß›ÉÛ\ö_óÆLí÷fů¯Æù¿þŠ$”&Rï^éëA'¾'´rúÀ·ÒsYp†- …~|éœÀ’Ps4“™&åÏ&¡|w¯wzI(ß5%¡è qþ%!ŸøpjÖ„ŠºQN3HBõQƒÎSŸƒ£Š%I5¡™èS—vòx´Ÿ´ˆ Å!Eز÷“oö\G·¼Ã^烙慫d8žÑ56l³„>µ8/Ë%¡¼8TŠŠà’g"ܤ{g[›æÏÅ͵flʯAêÝ K £Y%ªŸ,ÒIqŠŸŸ<¶ˆe½Î›÷鯉­îªŽSA[©n¿Z@² ð)$¡”fò,Ò "½$´XO¨—“fBO}®ùšÐ¹$”Žª 6EÅeðU¤ÉNz6O=¾·5HBãÁ|õ>mðÑ’Чöç%@àI¨¾ÛUG¢"Ó ê={$z(T©«w®—$¡º¬RßK'¡½‡¼\4(Õ4K2Åá½ôS<_Ÿ´t‡§&!®Ñ¿$d7"@àS‹&¡G^¹iÖ–š‘h¦&t¸3ß*²Â Liš¢¾)6_:,Ø4;¯‡Qd²fé°ÔtÍÛ,^( ~i@€@ÀÒIhpw,…›ú6YQò)*F‡Q©w›,ÿ+ú™>Aã‘¿Z÷<®Mö|¼š š¡g?ãäy±é…›¨®. }Äë–Cå’Pqö”“?Š˜Ò,Í'¡æ¹f’Pó–PqÓªEÜ)j-©q/÷Ô‘¢×s½è6x¾™xN ¯˜éölSˆ„?¬5 @ Hà­I(hïéÖc:bÿÓ']@zÏ瘳 P HB³W…$dÏ&' Í~iG€À«$¡YQI(nÔ3Ihö“H;^- ÍŠnŸÔ[Óí=ˆØâàì»Q;¼N@zÀÒÿq'@ Tàw£¦x‘€$ô"HÝ @€_( }á¢2 ð"w$¡í @€5&¿§¸ÿmÇßÿÔáþ}É™4ú­ @€ž˜‰4'“ÐL×Ú @€„_ Ã#@€$¡@\] @€‹ HB‹/á @€’P ®®  @€Å$¡ÅÈð @€@I(W× @€Àâ’Ðâ dx @€@ €$ˆ«k @`qIhñ2< @ P@ ÄÕ5 °¸€$´ø ( âêšX\@Z| „quM€,. -¾@†G€ HB¸º&@€„_ Ã#@€$¡@\] @€‹ HB‹/á @€’P ®®  @€Å$¡ÅÈð @€@I(W× @€Àâ’Ðâ dx @€@ €$ˆ«k @`qIhñ2< @ P@ ÄÕ5 °¸€$´ø ( âêšX\@Z| „quM€,. -¾@†G€ HB¸º&@€„_ Ã#@€$¡@\] @€‹ HB‹/á @€’P ®®  @€Å$¡ÅÈð @€@I(W× @€Àâ’Ðâ dx @€@ €$ˆ«k @`qIhñ2< @ P@ ÄÕ5 °¸€$´ø ( âêšX\@Z| „quM€,. -¾@†G€ HB¸º&@€„_ Ã#@€$¡@\] @€‹ HB‹/á @€’P ®®  @€Å$¡ÅÈð @€@I(W× @€Àâ“Ð @à®ÿ×{0_³÷ÈIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/assertionscope.png0000644000175000017500000000216112032647203026122 0ustar ebourgebourg‰PNG  IHDR74}/=8IDATxÚíÝ[’ª:PúVÏHǤcjǤsº©¢8$„ð–°ÖW7b‚;ðÁÏûýn`¢ÿ„ùùù€«çûý~¿ß{ÿ&·t7&Ÿ;éÑ­-¬½ü¹ój902I¿{VVëg½$@þ(Êa©þHÎt݇Ú-É¿“y¥»ÛÐ4Ú>oìÃPÕ½fTÔÛb²|ÏÞÆøYß`…÷?â©°;c&m'îøÑIO ;–“,sjECÜÎéÝɽdÏŠ’åœàüãóùtÿ½ÝnSSˤ}òOiÆhêêÍæóŽ-_ûÐ>Ë[%_Q¯E¶0:Ûÿ®RÊÚ+9½‹Nñ³UôJªýо¡9€º•¬Sç¼Þ¾ÒNpñ–RHóï•«íjŒËŒk?WEë:þû…œ]=?Mªtëì¸[EçÎÝw¶›)o“Äç=Íܯn ¾”T4ô”å{æ7ê¯À÷ø»?ŸOeÜ-ð–Ïü~¿€9~/øšy,çüùùùùäääää?˜k…ß¿z½^íßÇCLw&þΗ?€ùûûk·<ŸÏ°Å=ºw›°Ä_CÀÉòÇëõ ¦;B–çóœööG½[—7Ã?ˆû%7êØèžç œÿ&u¯õÝ^òá1ÿž†0V/ü"ݵ¶ó0fº³ÒºôCë%ñÏü›éâá‡"¼C\=„5W/y„Yéý~?¡%p»O|7Ö8µS^üÇès l¢»ÉΨhÒKÈLèå3Eÿä£ùø'£‡bô¨Žy a ŒF;SNMÝõ¼¾åóWa,ÍÀ½¾Ûõrœ´B«tÍØ-'Y椊ây¹¼ÀCâ\~ ™Ã>6æ4DÅ¡°Æx..écµvWùcò™xüw~vËçí^#e :†… „©GžìaûD¾0‹Œϱ1ïÕ~–†¨~ ÖXXÑP+WÓ]åÕV^ó¦wMy+.á¿J¯ï.yÇÆ|¨ö:T0V©qÅVÖ]72óýöÂnïÜ3D*Q8‚¹¤tOK·[H~Ãò!a=ÿÙ'ѽ ó¸öÓ5D­aÅ—´²îzŽówÇQëµu»BÉܺÊRbèmÀM£4u.‹úð˜¯^ûž a V”9Wî®5ä°òê~ç6,¸F×\Ýå@<€gôÅdYX`²½ó}q£žºVü»‡— TrÑ4ôZŽù©âj¡ä€óïKÕÝ]OígôÅ|>ŸÛí–|(l_µ â/Rn·s/©±ŽøWðå8á:®™ÌÌßú]XAóïÏ6øµ†§À³û¢øk8ëù—=ÿðûíÌ!    @á÷?|˜€Éù×?ˆ¹~€ü€ü€ü€üMó?Úßg4¹r†“IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/example1b.png0000644000175000017500000004063312032647203024745 0ustar ebourgebourg‰PNG  IHDRŒ4«ˆ6sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ6`ˆ IDATxÚíÝop#÷}çùo÷Žë䊟LmÖYbÈkn‰Áæ\{ã0fþP ÁúÝìdÆ]4RXé€kéÁäÁ]UÃgeÁÍŒœ4JLÏÆãY”í }2Hй :D[[NÓ ]<n9Uœ'‰Ç–f~}›øüÿ~ÍÆ¯À¿þÐ677=¢Ó¤+Òé ]9Óp«iæçF"†¾#{©‰WGšvJº¦Ú JâKaÏh¸U¥ŒH}@½.æ®ôµÔøôBÙ4OKßrV¾Ôu#W8œ,•ðz½ÞDþôô9Çß™³ÏÙ˜åôôx²X,Ýqœ–p•©¦ÏL®0ãñz•4Í3³¼<Ãi À1MW;ô9ûEŠ.ç9Û6+r­éºˆ¨@lyf;äÞ¨¡×5·ª¶dnÄÚA©ÉWÇÛ×¹ì×%w$<Ûu1÷ÆÂö¡w^²lxh{FlXᦙÏeDÉÀd|x%’,frù°»æb\‹u[‡ú¦ýµé¹ åÿB×u1¢~£¾«•Ùcw€ÞêôÊ`a.bèz0´ýªlO "¢Qo"ß0vÔËmE+ÑõµTÈŸÈ›ÛÅÚ–|麙N—ÍšÚøC©íC¯¥Æç mݢœ3t]‚¡Q÷à°«ÁÅÁÚKJ Óö¦µµÇî=×jîJ׍ߨš}qÕÌ0n%×t}`bþÚ˜ÃÌ'üQC2¹|Øí–B.#J¬·–麑Ék¦y2ó Ý£M³Š­NêäÞ¨±–¼UÛšgÒu#Ýž€éðÐ-*Üpy¸uY08äÖ4m4LE ûÅÁ­™­†mÌï¢î­¦¥RÛóOõkØë×_í¥»XÀ~ètŽ$¯½x—ˈRÐhŸˆˆ{( ”ÈziCDÎ9]V2ó7œªù<÷ÅÉ¥¤Xº»]ìÀäE÷Ž¿frö•Ý*[¾6V™E«ÚÒôÐ-+\7!´µóU kç̼mN¨E÷T50q£ãÿÜsw€Þk¿ªÝ- ÓãÉÈ´sçÜ•ìœÜ]ÕïìMsŒ^½!Óã©5]7¢>CÚ|¢µ¢kǦ~g_Ó¿*ˆ‡Ý Kj{膮·±0ol-xªî¬ËÚÊêÆØ˜£õöR¥ñݬˆÚew€ƒNW¶È/D’ãsÎ!©~Azõ.cזǶ\‘iç«£} °QZ‘ëå×KâqØþÚ±Ö‡nVa;Ó,¯®ÎêWVË£•ôÓì@MÛEöö‘ »ï.Ðs]Ô4OøÆ¤K2‘­Ï»Ò4ÏPPt}-y«ÐæŽKñÀÖ…¿Ê!u#²µªÚ4ósÖ*ï~§CÓꋵÖIp¨ÛEB5‡î°Â""«+EQ*Ëf·d³±€RR\YÝè¨{­C]xjÖÆ^uè•N?‘AsŒ]—üÑÔøœÓZ@í¾89I®QßÖe.û§ìøœw]—ÀGÓª34ºí^b}zضrhG±º}]Qk >b~ëÐ-*\D6VWÖl÷²çè\lq ÝÕ¡IóÎ9]¢¯­¥Bþd“ÝöÒ]`?tñYíšg& èFÔ;•.›¦æ»jMÌ´301oÿd)¥±ìüÄ@åŽ5ë¸kŠU*_js-¯ÃCwRá­Ë‚ª (î¡ X]Æ«iã^ê`‹tŽÑèä@Ë{Û]`ï´ÍÍÍ;_“N<. ]QzeàÄcî €t@º ]€tpxÎ믿N×tîÒ¥K÷îÝ“ß3xéÒ%º  7oÞ¬þÜê[œ­üuˆ^¸þ*£ޏç.?iÿõ̯îìóÏ0fàȺwïÞÙ³gí[XÕ°{õ—ÚHW½Dº8¨tešù„כț;·$ò¦y°•\=Þ½åüùÐÍ;Ǩ‡WgÏÏ®ûC€^¤+K&2wàqªÞØÕBÅ›/>þÙ+Ç&_ݹ™zM-ÕûúÚÕà•7¯ r.p\Ò•®‘é…ò΀eMkù¶Xó[ÖF¯7‘Ï'¬íSé²YNOy½^ïTºlnÝ·œžòú|>¯7‘7Íí{u˜áŸûÆ·¿SM/¡ón·û¼}òfuvk–ËÚ¸:{~vµºqÇÌWeVÌv÷ÕÙó³«wn†ÎŸw»ÝÛûÖ–ÙäÐuáêO_üjáêãŸo^½ ß®ØOüÄÔÔùg_Ó_{ÖÞÀn[)]c±€¾–Ÿ+Ø·jšgfyyqq1;?1 ”}~K×HnÈÚ¾– Ä$zcÒ%Åd¬Ñ sãÉ¢k"6á’Ldg±¸s3õ­çCƒ•Ÿ¯|{âÍB¡ðæ‹òl%N¬Î>+ÖD×›Û3:égßx¢2õ5ñíl§šg¿õüW …ÂWžÿÖ³Û)ýì™}óÍ—>%•TÔ ÌF‡®³:ÿÙÇŸ”Á'ÆÒol³¦¨Î ¯Tì¿þ×k×Þ|ñãêã/ÖMYuÜ"phéJÄžŸШ}Ö¶>gÿÎ Jâa·µ]©@üêhŸµO±tWÄ4󹌈ô;ÝÎ~Y/mˆ{fyyyyÆ£iÍ+‘žÞZwuEfç/=º53$ïÿQ[€ùÑ÷ eªÆ^¬æí=WßHM\zTD½4±dìEë¾ïñÊ–ú2ºi =ÿ­ÊÕÁú¢:/|«bMuÞ"pˆéJ¤o4:1 2‘é…íÖ%?¿?jè]ÿã¡®QëŽÅÒÝŽîQYwõ¥Oýøã頻ï|ûßøíY¡k:]Ùøè¥ùåÙón·»w+½ëËlx蚨3ÿÙÇ'*ièÑK•«ƒõEíªppTuôYíšæ½/D’±y—ô‰˜fy!–,Škr>Tdº8â9§KT1_ ·œ¬jsfßš]´f¢~ôý»:_¿ {ðÊ›o^¹s3ô‘ÙÕž-÷®)³Ù¡«îÜL¥õ¿zÍýÚv¤Tߺ¼ôhƒêu[88º:vÒ4OøÆ¤«X,V6Ü-E¤ßÙ×Ýñ4Í18ìÒuc~k¬ËUí^š}ª²6ûÑŸþ…o½ÑÑUúÙí%äo¤Çž°2ÍciëzÝ›©­Æ¼6‡^ÿìã/vzññ=uØ®oý]í õ½´ôFß3¨9Æ®ÆK#‘­°Q#2²îr‰¾fDFäÓ‹î¤ÇصXÉM…|)Q*Ðá½ìùj~bö|èæWæ/=ziþ‰Ùóîi]DTe•÷êìùg_Óuùø‹…­x1öâWÞŸ:~Z×Õê+ó•̓W^|ãüGÜ¿­+õñßlE”ÙèÐUwn¦¾õüì•Úìzþw£³¿ñlzqGQÝn¯ûìûvþ©ã€ý¢mnnÖo}ýõ×/]ºtïÞ½Ã­Ü ×_íÅ·8¯Îžã > ìƒ+Ÿ}iöùgnÞ¼YÍN|@/9m¼Â52@º²Ü»wï…ë¯2N€tÕÏ]~òìÙ³½Xz@º‘C_YÐVµ®HW¤+tçÌikðÙ³gu°˜» ]Uí¯ šf~n$b躈(50yãê˜C£ãj3we–ÓÓ#‘ŒcÙìâââÒRTbsyÓŸÏçó&òµA'Ÿ°þ4•.›åô”×ëõN¥Ëf‡ûˆˆi–ÓS^ŸÏWMÕ;¦ÓS>ŸÏÚ¹:µ¦ëFd¤’ü¬Ò*uó&n«ÛÄ/pøéÊ4ó¹Œ(r7øk9=5ô@,›t#:•.oª‘ÜPv~b@©µTh$&Ñ“.)&c å­|ÓvŸÂÜx²èšˆM¸$™+Ø _‘hv~Â%Åä­‚¦yÂKñ€RJâKa¦™f~n K\“ÑQ‡V`¤ÀÁÐ677ë·¾þúë—.]ºwïÞÉk0ß3zîæÍ›ÕìÄ7áôé  —š®»ºyó&½ЭÆë®XœÐ-kÝÕ™@·Xw@º ]®š2ÍrzjOß-còí4€tµ­p+µ¦7ù‚çÞ#Š€“œ®L³¼0¿>›P*3¿P6M{J§§|>Ÿ×;e}ñs³íöÒÒSÞíýó ïTºlKQ¦™Ÿ‰º®ëFdd®°ò ¯Ïçóù|ÞDžŽqº’­dhÔ=8ì)®¬nØŠÓ‰fc]_KÞ*´Ý."šævéúZ鮈ÈFiÝ5<èÐ4ÛžðR< ”õ]ÎM‘rz*jèX6 èFt*]f,ÀQp¦Åßn¿ußþë…ÇÞ-[W“Ѱ¦iƒÃ®ÔÚÚÊêÆØ˜ÃÚG©@h´Od( 2™L.v»[n·ô $‹™\aÆã¹[’á‹}­+mšåÕ•¢RÁ!·TÊ\YÝY^žiRy€ýcŤöéªf׊­ÔÚš„ü©­ Å•Õòèhß^jÔ78ìJ×Keó\i½ßÙ¾¬»¥âÎ ÅÒ]Gëš샚9î® VV\Íg³Ùù‰Usqp›ËyN:Ún]”béîÆêJÿÇvY°‰sNWgÇ8X]®»*ÜJö‡Æš=éúš-^­—6D 9C×¥ßi[>Õl{Eßà°K2¹[¥þ!wó8µ^Ú°×È*eº†û¤ÀªvpœÒUeÅÕEwM*Pª¸²Zý/¿•؈?j(ˆ‡wìÙlûŽx•‘†áJÓ£ÑI—S!¿•Ÿc×beDýþ¨¡±kcÆÚææf³¿Ý~ë~ç«—¬ÏMÈH°úo}­·×Þ½œžOƒñ壎‘šÈt$¾ Ç4Ë ±äš®_86z6wp:Ź+€ƒt@º ]œgèÑ ×_¥zë¹ËO’®8ÕfŸ†Nè•{÷î={öÞ½{‡X® €“ã(Ì’®HWGÕžÖ]Ù'ß}#Æ àäŽqº²fO}âWl[¾ÀCî>2FŒÀÉ 0}w´O>=þɧÇèø'Õ›µ¥áR2ÓÌ'¼^¯w*]6·7æ>ŸÏëMäM³áQ¶îÕt‡C±¯µêaáÝQ9=åõù|>Ÿ¯f¤š#9^<¦á(§³»=9kª´»suoRNOÕ±œžšJ—;8\Ûþl¶ÃÑ<=pXv9wõCœ‘Ÿ¬nù“Üj›§¯%oÆf<Ö¯…\¦u¶Ó4ÏÌòò C´[Öuød´0=ž,º&o\sh¦Y^˜žË_ {4n<‚ãÅc GÿäÜã¹jšù¹‘HF‚ñ¥®Ÿˆ4Í18ìJ­­­¬nŒ9¬«+2utPôD×sW/\uöùgÞóÈ»ìÑÊJZïyä]³Ï?ÓäÝŒk`@I&g…z³œž_w (eü¾-‰¼ÙäÝO"žj1¹b½cÙš€Ù¾cÓ’ó kûTº\y·³Ur§GÜšòiñ~%ŸØªR"_ó§Yá5ï½Ì|ÂÛÙ»®š1jxk4FwKEéwöUž›Æ®Íx4­áØ›YZ˜îd®ëè M}5ŽçxÞÇTë£×—\Ýdz~½Ë“ó´ù==9»8WëëlE+C×u݈ŒÌUîU×.{§Õ4ªopx@©âÊjykÏ[IìkÛù^oⶺ]3ú5ûwxtòêÒÕÿðýÿðýo‘þP(¨ëÆüÂÆÖÛˆáþï³óJe"s ÏE]7V$šŸpI1y«Ðà½Îx²(ÁX6»¸¸¸¼<ãÑ´%ëºÉ YÛ×R¡‘˜DoLº¤˜Œ-”mû¬H4 Xo¼ê«T˜O]± —d"s v(§§¢†ˆe³±€nD§ÒåNšc½÷ÒõµÒ]‘ÒºkxÐÑÍ8k,šÝêß« E×ÈÈtÛW‹Úú764 «qÇë4?¦Z½¾-…¹ˆ¡ëXv):ÜùÉy Ïü^Ÿœ]œ«õuÖ4Ox)PJ©@uîªÙ‰auZm£ú‡]¢¯¥*=TÈe\Ã}Ò¶ókÊi¾íáÕ¤«ZÿøýÿØèAÕl{…{(Py3Q^]‘áAgƒ}úœýÍ«T 4ÚWÙgëmPý_dz¡Á´A]ÉJâa·µ]©@üêhŸµOÑz‰´Ñ=Pªþˆ¦™ÏeD¤ßévö‹Èz©\»Cyu¥¨T`Èmo¾ÙIs¬÷^™\ADî–dx°ocÔìV¿¿gf9Pº¾– ù;|§ÕºsŽìÐ4­Æ±¯Sû˜j}ôš¶˜f¹´.J 8ϵé‡gÅi8ó÷åäìø\ídÐ[ìSé´º‹ƒ£¡ ˆXI+\íxÃÓ¬ó›iv¾íýLéjûÁöƒÿøƒoß~xE_KÝš»•ìö5˜?÷û£†¾ËàÒ4OøÆä€RúZ*ä÷W§p÷^rۧΨU¸ípç7›û4{0»¬Çd¹´^¹f×í5»5¼‹gf9›ŸP»~®™E¯¦´#24ͪqLÇë´>¦º:úŽKÞ]µñ”ùûqrvq®¶ôÎ÷©És’ÉåÍ|eæjW¿—Áê®Â8åéê¹ËO¾òù/|ï>·°dßþ¹…¥ïýàÁ+ŸÿB‹ÿÑu_œPÊ0Œà»fÎ`!–,Škb>°]ŒïúÅÀ1vmy9P"bMáöªd—ó\í¦sN—(h>ß~Îéj[H³'}Çà°KŠ¥»«+ýC]ÍäWǨá­Åišcôj< T×Ï.ç9Û,ºÅÞ!Gdhê«q¬Çë>¦zyôæm<}gþ¾œœž«<‘v¸Omn¶<äær™`hÌ¡íâüétÿݼ:€tÕÈý·Þûáï~ñ«Õ›µ¥“÷÷•+/]¾Åìœ;(µuºï±äõÒ†H!gèºô;kVÒl­¶©,&höŠ«ëF®P)¤«å8}ƒÃ.Éän•ú‡Ü»£ú[ãwÞÕUØVc·^3†‚•N°Ö¯tÞ9GyhvVãø×i~Luuôí××BøiOÛ™¿_'ggçj“:[ouÖKžM¦ËDvæ¹n;¿Åþ{<“qÂíæÿlŸ»ü¤õ"?ÿK­nüêYÚ}¸œ¦9Æ®-U^Ñw< †ãA#jDFÖ].Ñ׌Ȉ|zñÃ]Õªúo&"¢Ä5uhšÈ^K^‰¤Öôf—äc×b%o4ò¥Ä¾³v‡¨ßQص­îøÉ(™ÌH<¼¿c¤ižp´4=2²fõÞÀÄ«Vï‰ûâ¤+“L…ü“•ÌtÓ9GmhÜRhT 9vãušSݶË}qr “4¢~‰Å™H¦Ó6žº3?NÎÏÕ&ƒîN®Œ'S!ÒÚÒ ]íãU@e2²®º=Zï¿ÇWœlÚææf³¿Ý~ëþ…ÇÞÝâÎ'ø‹öòi+=«C9==ž,ãË[³ 'oŒŽÂÐ0^'iàèÀžŸœ•Ç‚k²ú> mûvöùgè‡^¹òÙ—fŸæÞ½{yКȴ§Ïˆãköó™´¼K®ézpW—™#Æ è­NNÎêtÝ.&É€“dOsW`˜»ê­£0w¥3 =Dºè¥3t‡ëÞ½{}i#ŽÖ]pÈΞ=K'ô<°äázù?ƒàØEì7Ö]ôR›¹«Ûoݧ:×jݺŕAÒé €tÒÀáéîÓDM3?71ôíLˆeg<Úqim}ý• |zñÃ_óýFF‚ñ¥°GӚݫ~‡fÛ÷^«jÝöX28êéÊþªï–ÂÜH$™:n  >µ\X^žéu†ëŸß͈k2ºc…ÐJlÄ5” Ä·>Y%Q¿?j¨@ìÚX«KgÍ ¯¯F·íj[‚ûâä€RFÔŸŠ”jÜ3ÑI—S!¿UBWMk[Ÿ†m¯?('7‡BÛÜÜlö·ÛoÝïùÚ>– œ05‘‰oÂè¥3|¼êç’œHÌ]®HW¤+®HW¤+®HW¤+ÒHW¤+ÒÚ9³¯¥¿pýÕêÏÏ]~’éLÐóŒ}ŒZ`øŽtº²Fñ©OüŠmË6ºšÎ=ÏØá°|òéñÖ;üÎË7襣›®^¸þjýZ[^xùFÍCÎ4ós#C¯½F©T ¾öhÚ+S_~ –ñh'cüºêêjod$hõ­ýW·vTÍ]õpyaz<µ¦‹ˆR“7®Ž9zß½m«±ë÷Ø™ÇýÔ²·¢«áÛ]'Óó¶®sÙ{ÛÌ'üQ£WÏ{Gü)èø]ƒ§ÐÝZGø¡GÎåê5©ÃA¼Äôœ¾CøCœù¥‘Ÿ®Þ¬-õ{jšgfyyqq1›”R*Ëf——g:KÓÌ'¼^¯7‘7͆;XÅZ‡ÈDæšívY[Û]iÝv”uÞ'‹®‰ùìâââÒRTbǸ{wÑ™ÇúÔ2Ëéé‘HF‚Öƒî‡ï´õ¼ˆèúZòV¡úk!—áQƒýöžGÞÕúvôâlã—˜¶/úƒc–®^¸þêìóϼç‘wýÜР}ûÏ ¾ç‘wÍ>ÿL‡—~«=›žòú|>«ƒª¿&ò•Î*§§žx6ñ[#C×u݈Œtñ@­)¼úz3åõú|>ÛA+#”NOù|>¯w*]Þ>D>±µs"_3¢õû×Þ¬]uuÃ[·]½[wKEéwöYYÙ1vmÆzK—Øjiu¼¶Ïõ|ÂÚ>•.[}Rí¥Ö½Ýfì¶:2=¿¾Ûó¶'y\N­Â­äš®ã•w¥ÕákV|DNããó v (Éä*û—Óó뮥ºmH‹ÖÕ<úìcçšš²½ê0v=yBnxß¶cÑöqdÚ¬ô@£jwè¾ÿ õ­“‰ŒšSh×#²Ý¢V}Þà%¦z¥¥ú¢_ßÏÕYÒš}jêÜìAtD箚 R'ƒWûì?7ž,º&b.ÉDæ šæ½(•‰L§Ë¦™OŒ—Bo¼8ó›KqkÞ«ÍìåFi]D‚CÖ>5…WfAǓŭ·òöù3]7V$šìï8Ë驨¡bÙl, Ñ©tÙöÆÔX‘hv~Â%Ekÿf…×W£W•ÝáÎŽjAÓ©õöÕúÖù:=iâªõ­§q Ãé¬Õ;_bêçÕöòг—.=й+¹ÿöÃûo?üÝ/~µz³¶t™(ƒÃ ^æ sã¥ÐRåúîøöCBd½Ô2ôF'”•Éš^y܇ã¥vž ë¥ ‘BÎÐuéw:4­ZB®PÙÞá\š½ðÖÕ輫ëoÍBºõ‚Z9œÕœºõUöŽj{õ61•®¼“°J«tÚg’j{»í‰aÏ Öâ€ýîÌpjY¯îÖ*FkK>‘È›f³ 4ëä>O΃ºopØÕ`é[÷ ©ÙØàÑÇØí÷r“ûî×X4< Ú§«‡ªõ­õOWϱŽHëV7‰©yÑoøŠ³c«þÖ¯ ë¿».=ÐtõÜå'¿ôZúK¯¥ï¿ý z³¶t;›â» ¨µTÈZÉ[ÝMOysCK3MsŒ]­y éVcµ¸.«iŽÑPP×׬Ô5…ÛÿïÀïfÄ5µŸ +±‘ÊÒl]ÿ¶J0¢~ÔPص1G› Ò¨ðújìkW{f–ç'¬ÃYÕ®__UÓQb[gPSIM󄣩”60qãê¨õ2¶Fgd~Ý%Ýþ;gÃÞnqbX%Wf¢þÜP|o_örÞÓSKsŒ]]Š¥˜ U77TYþÙ¬Í:ù€Oã“ñ Ö¬·ÌÞ¬w؆›=ú¬ÆnÿžëïÛt,vû8jÝ'û|ePšB­;¤íˆ´huó—‡ýE¿ îú~.Ô÷ÅʯóÎÉjý÷Ø¥MOïÍÍÍf»ýÖý ½{/¥ŸŒïF8 §vJºúˆôöuæ±8µèù“Ç,§§Ç“ÿç cwb_¿üXë}^Ï|©“áÛS踫‰Lûû=ƒ|¡«éLzä’Êçò»&;ü‡kÆî$y=ó¥#{ 0û;wpâÕD&è!Òé €t@ºé €t@ºé €t@º8Ú|‹óí·îÓGkõ-ÎèWHW¤+ÒHWÇ%]™f>áõúlyókoÕÇëJ—·«aæ>ŸÏëMäMsoÅÖ–ÐlûîÊï¼{u\päÒ•E©@,›ÍÎO (•‰Ì5|ɯ ûšt}-y«PýµËì.<µ¥iž™åååå¦í½Ú•nÌÆÍ»œŠtUÑçì·…û4ŒiæçF"†®ëº™»­nÛÝÊ[åô”×>É´zò ¯7q[ݶ~M§§|>_Í•k`@I&W)¤œž_w (%Õ­šiò‰ÊnöÔUZ˜¶Ú˪?×W¯zPïÔÔT71®aùõ÷­ï:«áSÞMÇ']r†®Kpè‚~afyyqq±:›Uwx)PJ©@|)|A¿`ÿÕšø)Ì'‹®‰Ø„K2‘¹í™']7"¹¡êü®+ÍÎO¸¤hŸ ²é…‚ºnÌ/lˆÈÆêŠ ÷oýÍšmjQ7ë(åôT$㚘Ï...vsèÆûæ"†®bÙ¥èpûnÜ(­‹Hp¨óù°ú®3ÍüÜx²(ÁXvGÀÁkõM85_ƒsá±wW#EÔoˆˆ˜¸voïÑçì)vpTÓÌç2"Òït;ûEŠë¥²éî¥q[™JB£}"Î~‘b&—»ä÷P@e2+«åÑÁÕŽ:KɺC6¯›i–WWŠ"Agߎíõ‡v×Ý·Ñ>¥uQjÀy®M‡lwc0¾<ãépÀZt®‘iç«£Ž­.⋌8Õ˜$m¿gо«=RTg}*/ùåôôxrM×E×EuZJ¼Ðu)–îŠôí¾Eî¡ FêÖ\)ÓZê“9{i_·»¥b»×*­ßÙ®=JâKC¹‘H¦Yjì¸ëš'|cr}<¹¶– ùSXvÆ£5>Ð[5Ó=øDÓ,/Ä’EqMÌǪÃluÎéª,ëîÉ•,÷ÅÉ¥ ù»¯Û9§ë°†Ã}qÒU½¬¹—®Óc×–—c%"¬‘àõäó®ÎÖX‘e½´ÑàWMs w›*Zêv‰R!w×u³*c«êžhšg((ºnä •Xm*>PÅd,]6­ûZ5ivßÖ]çÇJ‰ËyŽS€ã›®4ÍŽu݈ŒÌ¯»Äú_¼‚ôF']RL…ü^o¢æ×¼i:Æ®Åj-êÉÿ¸iÖÔMÝX'u³*S!O*cE#êÏ ÅÛNæišc4Ôõµdl¡lšî‹•ŠÍ;'›Ý·¾ëªÿ¥è÷G3⚌n/½LÛÜÜlö·ÛoÝgáÎ^XK¾ŠÝ,ZÇNMd:Cô>Tm}¤–ˆ(×䎫'éª÷¬Ùš¡#8•øgÒé €tÒé €tÒé €t@ºé €t@º@;gèM/\µúós—Ÿ¤h2:=ÐÂé쮀}.~ê¿bÛò…Sõä{ {àD6™3¹ê“O·Þáw^¾ÁSHWÀ>¾ Õ?[[^xùF³—%ÓÌÏD ]¥&o\shûQ=ë@ Æ—ÂM; =°U%—½Õf>áJv]Ïhé›l ·e/-ݧVwߨòÂôxj­£s¸‡õ<˜þ¡GÎì¢V_šñh¶-¹¡ý?ÒN&ë‰øç†«[þ$·ÚꉸœžO%φ=šfšå…é¹üÕ®Ÿ…;y™Ñ4ÏÌòòÌô@Wt}-y«06ã±~-ä2­WUdxÚ§&÷*Q…FYÑ*Y¬Dä]ŸÃ»ëƒ9¥ßóÈ»vq¯Ld®ó8uÔNiœr¬jÇòÂõWgŸæ=¼Ë­¬¤õžGÞ5ûü3 pn%×t=¯<¥jšcìÚLõé5Ÿðú|>ŸÏçMä«Ï ¯×ëM¤ÓS>ŸÏëJ—Íêtˆ®‘‘¹¼iZ»ù¶$ò¦ý¾ÕjÊ©¾©­ûZ;wÛ oÍz@Ä50 $“³d–Óó뮥ìíµ7¤¾±µ}e«siaº¶uf9=å­ÙíÀ›ÜøõÕj©wjjªn˜þ\3¾õÁý u·T‘~gŸØÏáf•¯Þ­Áèì¬ómu»á‰íõ&òù„µCG§t£¾íü¡ýßÐúÖä=ƒ™^(7:PÍãºÙ) ®€ígáη›f>—¥CÓSQCIJÙX@7¢Sé²ý‰{E¢Ùù —“· šæ /ÅJUgD¬÷ô‹‹‹Ùù‰¥2‘ÆOÙ5åTžèÇ“E ƲÙÅÅÅåå™®ÞIïâEH¤? êº1¿°!"«+2<Ü¿srÂÞ‚¸kkõU$㚘ßQçúÖ‰HanM4+§ÅÛî½¼5½ÛvË«+2<èìª!V_UçNZ´Îг"ýN·³_DÖKåCj²®Q¿¿:«dšåÒº(5à<×fȺßk”gf9Pº¾– ù;œªŒŽ{( T·çžRxØÝá)½û¾­öÆ´¾59«ÃóºµÏ,¶~\¤+ é³pçÛ[²®¶ØKw»Êgåô”×ë÷Gí ¨;™ ߘPJ_K…üþ†—œvý:$-âUPôµÔ­¹[ÉþÐh_· ©ë«v³&Q«´béî!5Y©ÀÎY¥×ö>¾ß(ÏÌr6;?1 véöXçv¥.ú¶ÆÛTë[Óè;P™ÈôÂFÏ×é §Ës—Ÿ|åó_øÞ|naɾýs KßûÁƒW>ÿ…úÿ´ª^RÉêË;çtíÜàržëfêk!–,Škb>Pª»9ÇØµååX@‰H³KŠ­{ á­alÇ«‹“J†Üy•´³†ÔõUS眮úds8MÞ‹Nºåà¥iŽÑ«ñ€R]'†­s{×uÞWïè\«oq@·¸2@º ]®@º8áõ&n«ÛÖ¯éô”Ïçóz§ÒåJp1Ëé©­#ÖššCWÿ”OlíŸÈw™ÕjëY_† ¤«.r†®Kpè‚~¡2÷³5›Uwx)nÍÅ—Âô ö_­ ¡ÂÜx²èšˆM¸$™+lWH7"¹¡ê¼‘®+ÍÎO¸¤˜¼U¨ä§ñdQ‚ g˜4ÍS¬rz*jèX6 èFt*]uõ¬¯@Àөպ«š¯Á¹ðØ»«(ê7DD LÜ»·÷èsö‹;8ªiæséwºý"ÅõRÙt÷‰ˆµÚÉV¦RÐhŸˆ³_¤˜ÉåÃnw5„M;o\u´‹2¦Y^])*r‹ÈP@e2+«åÑöwl]϶àK„8=ª1IÚ®j·ïjO<534f9==ž\ÓuÑuQÖ£’Òt]Š¥»"}ÝKÓ<á“ëãɵµTÈŸê`YýÝRMâ+–îŠ8d—õttV†]Nžš)•|"ƒi–bÉ¢¸&æcÕa¶:çtÉîÖ‹ˆæ»¶¼ (i¶¬¾æX;¸œç:=TãzvYpŠôäó®¬É¡~g_}¦Y/m4øUÓƒÃ.]7æ6v}Tw8PªQTj|¬\¡²VÌ5<èè,̵®çÎ Ô´®vKÓ<áxP×ÈÈüºK¬ÿ›+HßhtÒ%ÅTÈïõ&j~Í›¦cìZ, ÖR¡úÿûk­ú/Š~4#®ÉhíÊ'Ms4<–õû£† Ä®u~UPêëÙ°õåÜàtÒ677›ýíö[÷Y<ÐZMdâ›pz‰t@º ]®@º8ŸÏ7•.oÍ‘‘¹Ûêvõç­°UNOy}>Ÿ·&~•ÓS^¯×›¸­nWµ ¬%Ÿ°áÝn쇳è­ß³ƒäT[·šãÖ7âÊ €îm”ÖƒC3šfšù¹˜D—–šf–ÓÓã· £áðR\FrCKa¦yl?‹ÈÆB¬ZZôhf>12WXžñˆˆH&›¼abæ¿¶õk߯Âôø­ühØ-…¹ˆÄ–²õ“Lšæ ïycqÌQNOo¢ƒ6ÕÕÍ4ó5Ç­i4ÄÜ€Îe¢~¿Ïç‰I4ì¶ÂÍ̵1‡5lZ ™fyuEœçDDÄ=Ìä¶f€‚ñ«£Ží¼²õëv眮L®Ð¾~¦™Ïe‚¡Ñ>é ÙÑöŽ ëÖéqÀ޹+ ƲµÓ6ö¥âJC­î~·T,!J¤ƒ·išcôj|ndħëû¶š¾AÝä¸HW°#Z•¦#_Zôh¦™ŸɵÜýœÓŒ]Ý‘Ï:\¿d-H—ÓÓãsù}¹0× nõÇu3ä:À•A{q·TtU.¨m”Ö··¯—6jÖ4Çàðúþ\h«Â3ÌÌ/lˆÈÆÂ|&8Ôaë¦nö¦@Ì]Ø=Mó„ã9ÈŸQ“ÁLdDâKáp<72>ç\ {4ígÍ1vm(áõEuÙú ©Nfƒìñlýô’ýîp<72îKéJâK]L65ª[¡î¸;ŽÅ  ñsãææf³¿Ý~ëþ…ÇÞ-"/\uöùgø&+‰H5U#“…+ƒ½Ôé•Á{÷îY1 =HW÷ÖÙ_ö=CüáâK-þÊ•A€®=wùIÒ@Ï´X1Õãteš«ó¿Zü®õÃì7Ì=µ§^¯ç®þþïî¼ÿþõ?#0ÒU—LóÎâoÕF¥¿ÿo¯Ë‡~ú½ÕÏØûû›³¿zþéËîÙÅ;¦¹úù§žÍé¯Í=5û s+i}cöéËî§/»ç¿am9oýÜ –ýÖÍïËÀIMWß] ]~êŠMÔ4Wß¼ÓÉeA€îLOJÑ´ÁÐoÒ›|‹3é €t@ºé €t@ºé €t@º ]€t@º ]€t@º ]€t@º8ºÎt¸ß.¾Dgô,]=wùI: ÀòÂõW›ý‰+ƒ½Dº ]®HW ]®HW ]®HW¤+®HW¤+®HW¤+®HW¤+ÒHW¤+ÒHW¤+Òé ¤+Òé ¤+Òé ¤+Òé €tÒé €tÒé €t@ºé €tpré|×®¿J´¦mnn6ûÛí·î_xìÝÖÏgÏž¥³ìîÝ»W™¤ó¹+ëÎhuW¤+Òé Ý9C'Þ±û8•ç.?y¬ë¿—Æ ]8~íûwÇ¥ªÿ÷ïÿÁ±®ÿÞ €tàx×?Ñ©?®NHWHWŽf:9£Q ]è]:aî HWH'¤+¤+G5œÑ©?®ôÌ;Ôîîhšßù/O}ü?þåèúóßøIM«ûëêg>4ýšÔþµÙö«¿U/ëÛ™L©µ®LÏë €tàD§«‡»MW_ÿüÜ_ëºþ¥å?ûüÉút¥Šˆ˜ªwv¤«ÆÛ¬þV”úèoÿYäCšfš«Ÿý©_ÿõ}ë×ÿð•'Ïi-îÒ¢ÎV!_‘[erRh†Évà´¤«]ÜÞ~Pºuýo&?ûë?¦ÔW®ñï<ÜÚþgñÁ ?óáŸüé§_þÛj"i¾½«[êo*[¨…ûcºþ×ÿéó«Õ¦}ñò…ŸùðO ƾVi׎»Ôìðöƒ?ûÌOýzF×uýËŸú©O[wiTH €tà8¤«ænn«ÿùÚ¿xêßœÿðÏþ+‘¿Ê~­TÙ¾ú™°¡ë¿Ï}5:b„-·wuëUýÍš œÿÙ_TJ¾ò'öŽzç¹ú™_¾öW?þkñOþ˜|é?|æëõw©ÙáÁÃM¯$~Q)¥>2»ò¿ÿÄCiVÈÞ à¸ãÊ pZ殺½‹iÞùÊïÿÍ3Ñç(íƒ?÷ãú7‹o|í;Á±GMóÎ[뢔ë\ŸzçG~ô}"ßóáCõ¶Üm¸ý¯ Š­ö-oËŸÿiFDþeßù}ŸÈ7×ß*=ðüséb‡w4Í4¿^¿OW ®ÒUÓ€’ÿƒëkE ýÌõ­-ko|í;ýå‘ïü]QDúûÞ»}5íáCõN³í‡“®j+PÙòc½÷¡zGL%¢ëôøÿHt]ŠßþÎCõOÅÞ–v;hšU`Í>?Lº@ºN‰»»ešwzyå—Zå×é÷¿¹ôçwÆ}²µ>É| ü¬Jýk+`þÅÿ»¤ëò/œ?¬äyî܉úæ/]1žû +)y`¿‹´ÛA³a!ÂÅ>¬»NKºRÝÝòðûïû_þGLëׇªïúé¥ëßüÓ¯ßy¨Üî_]ÿã¯çÕ_üÎsoèº5Ól{·‡îMý*S¤Zw|=õ›¤T 2ùA[sþøÖkwÞ¥É}ŽYÿÎ]Õ¢½7é À1ðP™ß<¼óÇ_øöÿò1·}ã?ýàïWêoÿ¿Õ»Õÿø±©÷+µòzÿü'?ó³J‰ˆRæCe6ÛÞÕmïõ·nJD×ÿë£Þ_ùÈÿå©ßþò¿ÿ€Y)ê‡ÿÍ‹Ïù£ÖCEIDATÔ·_ÿ•<ñoƒ/¼ùPYw©Ö¹~e:ü3SÿRþú?ÿš×ÚÒ°½7Àq§mnn6ûÛí·î_xìÝôpܽpýÕKÿçãRÛ›·þËs—Ÿ<¾õßccG5‘‰uWÀ©pÜ/Bq À1BºN…ã~Š‹hHWŽ–Ç<< ] ]8R˜»Ò€ž¦“c¾né!ë®®)\Ò€^Zú¾Býà`ðyW{R™ø¬v€^"]®HW¤+®O›Ï»ºýÖ}ú s­>ï ÝâÊ é à¨úÿ.àò ¨ûIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/example1a.png0000644000175000017500000001235012032647203024737 0ustar ebourgebourg‰PNG  IHDRò{ÁµJãsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ7"KSC*hIDATxÚí]}te¾þ%¥Z å«P(¤P²4PJÕNG4JÙZº‹VÚ\õôè5n k5p\ìţƩ" .d©òe=+ñê†BY5è5´ÈʆàµV õ†–„B[¾ÛBA›Ü?&™L2“϶iÏáÀ0ó¾ï¼3óä7ϼó>ó½üÎû€@ ,ˆG´ki´€4Eâ¿Øâ7«#öÔly5ù!P ¹‰œ¦ñÈC²ÿ©­ªé"Q}p8W¿Î4˜ùÜîüYæÊbcZ¸ "­ÿ¾÷põ¡Èž÷Ä‚ÌP™-'î¿Áoàȇ>8ŠD©ÛþYà¤chäó]%÷Éͪé"‘£nãËë43·Ü—y°Óšá4Tê8*³i*[m·ÍþfoMØ=s´íÞôâæSbqæs» ÒEpöëÒuÿÝH‡så–»ZüçÃbñ¿‹ÁghŸ%¿ŒÜ@n·§,,{wN‚ÈùÃ(KúæÅÍVÈ} #ú@¥5ÍizÈvñ›ÕÕ‡:žXš¼“8”ùï˜Ä¡–F[#}ž‘øô¾½­lÏ3Pµéƒª³³òâÁü­vê“[ße˜7}ëà?À·ÛÎÌ•ç‹à'ç!Ó}g ªÎªóâô~°¤tëžøöªMÅ@fm½÷û¯5 î˜è«ð7{khBƒØÒ”ÇCïXK›åøá—þÀnŸ`¬(3¹ñ•%3ÁÛ7ô-ù ìÉÅ¥jÀ̽ØíóÓârŸRç‰ã$ÀŠ„˜´ÎžW}¨ƒyù—=;Ή¹¡Ú×ú06#‘ÝB<}éªÍŠÔC;³ùÙy‰AVdÞ¢ºïãÌ•ÅF¼öÞ|O,ÈÌžÇp:xami´ùRÒßì­ uŒO$ÊL›«¯ÿ‘»>ñ^õ´ºãa¾óŸ:n^ôA)BžXY}¨š^‰Ó×­Iðå‹êmÉ—[,®I4³~RÌ–)ߨ/~H-Óã}203#w™ËwO‰2ó—_.Öù¨'%θëĺ%Ûíóÿ°”8H2@Á?Õ‰!AÎõ¡#1Íã‹—¯€zÓ<꙯½Š>ŸÊ¥õâ7«#vNNu8"$<Ðòƒæ4p9žA n&­iù ¨;ƒ§qÓ´5<ò,ø`ÐõžkÄM¦u¨øÝbé—[,£FÜ ¶®ó–YòÜcxº‚¡5ýªüw‹¥´Ân5×s˼òÒJð1?'ì#úü#!{¿o [„ô¦.A"$lœ´´6Ô79uÎnçùuň–š”ž9 ¯B0´þj÷¿Îœ:ç§@Çå+G¾;~ä»ã&ÅÏ_ ­÷î×Ò ©YÜ­GŽÖÒ ÊÇ–â¥BƒÖó¾{FúÔ¿¼­éú¥íø‰#Wº;½ ‹[8O‘qgúdéx¼TÁDkš¯Ó§fp7¥È~~9m¤U¥·a,£9gaÈ1«å}ÙS#ÅÛ¦‘"—U2»ÖôñN‘AkÚ\óÙž†P cÃb‡O”Œ€_®:'-MHpŽ~·ïxíþjH™ºP1—UI®6›Õ<œ3î»1'ÏH*ИMHåHƒ¸Ï9M/WêøûÞÃ}ÒlíþêÔ™©©3SþtôsÝ·ÁV³i•A”ÑÍAÊÈ^iÓ* ‚$IW #E$I„Rkc3— IR©mâÙA¹N¡á†gÎŽÜ-{vÆ{ÙH”V«äôqSiÍÆè¹o ŃAוNÞõŸ~¼‹Ò sifמN¥Êl6WIËÝr­4«å`Óªõ¹UfÓ®Ò†ršBrµÙl2™Ìæ‹ÚI*#¥Ùd2Q ×yïÂj©SäÈýîݬ–³1k@Eù·/èô@™L&³F¶FÄŽTm¼alXìðƆÿ£—““<ªáá©@üC¡©(”€$Yï•NRÖU."רíùV ¿óÖÔ‹Åv{~€Œ"G ),Q¬1„¼w`5ò…Ê`TË}‹E ]Ož£Pœ½BÜ\Z÷Æ0Æ<#2Úš¡0;0ù6˜ØÂ¿+$FІÁIÒt‹¤>ž)B!aÆ|‰ÚýÕ>¾¨\ž£Ð¼,YÂ%®SpDˆ¤°D¡SÁ¬ :·lih²Ñ7vË:§ ò(‰¸Ù"$ ÃX@ÒO«5‚ Åb×Àœ$+·aIÚíù …NE€Æ¬.¤V(óR,N+]¡p‹ÖHŒ†"‘kÀù9w$wÕŠ H_Q¥Qä17E.¨I²žUú~ªSH†1øÓÓ¯I$“¸|MÖŸ³æd'N5hÞÅ Œ‰HNZZý„°Ë 1ÓÕzW„ÐÈšãŒ÷ÕzSv.9b¶\Â#bEHðøèoŸ@Û9ð½eLš"¡Ÿâ%ðä³ ñj!­³sÉj½‰fmÛ9[cƒ‡i²þ ôÖì\/B´ž,Oó•!·/öã >„`DHï×ÒÐrà‹¦óg»†Žè‘ÝŸ)O‹Ž—£µ€ÑÕyåtóÅÖ“W¯]…ÎsQí'.Ž}2ãΙxÉÄò¨¬'[ꜪÙ}òÚU;³ò þ$^oŒÖBÅûkö\:-îè¸3dýÙá=·ÈÞy/7FkÁâé]íê¹5j„›ÓàÃ4­‹õo¿Ÿ}¾>ÉIh9FùMf´gAoO Eî3çìãÉzzî¾Wtð_üî2wá| †4ÏM7~ÞÉ÷ßëzžs{#çD­Ã6Œ1p8e+ß7>þùÙgï<¿÷Ã6zý=¹ISR‡KSÿRäÓHƵö1³[¡¢<ËûÙtã, ] Ò{ØÃá([¹>qRÂýóæžm¿3tfvd-”fý>%N÷ òE0›¼fÀò•iÙî/{§®M«$I’¶“tÞ*U„/¯«½Q¹ÃÊ-ãö°ed,]ê± ¿ úûaðYàŒI’efÁßIH´îe†1xûÍ¿NJJœ3W~á|Ç-·Üj³¶LO›zì@SÖB©Èg®Ý2²Ò­+|Ì, ¶¦— Æ{‹¶\§(QÓ‹´S´JµÖ&/”0–09Ø´Ê<ùî·®±blƒ¹‚ œ÷˜5à/”²nDJ­Ííß›V™g)qnä)£S©WT™Íïhí³A?ç–9^šÌ®ÎêTÙ”C*èÆ¡ÁsÒ¬­CÊ0öÆ«ï$OMº7ëî³mâFÄ5°&NŠ—Lžøâ{2‘¿ülƒL¦þ†=­´ªBλ)­t—YM_ ®Ó,x_·®\­1$‚p÷vµ4i•å@¹zÈ[†ía Ü ßsëËG{¬?.Z÷Æ0¶òÕ5Ñ—Rï3«½õüÈ‘#O46O>iZŠ4::ºÿ;®ðM*z“‘RÖÚ Z(zñôÈ©+W›LJ­’P6UUŽb¼®6^Ÿ^'cØ’ó-T›\œäÈÖÖaÆÞ|íÝ!—fÌ+˜õ?ŸœŒ‹‹;ekI’Ž—$M2$B~±r5j§*ä:Í|ùʸ–0^—H +4²5ÁÉN/W(J**Ì9––å– ©Á€ ¼¸àªŽÖÀò‰Ïé²7Ö‹ÏO `–©¦Y,õɉIS¦É¤qqÃE‘“ WRX‘c «äj ¨ØL’BjEƒŠ I²\ºBáÁ%–<‚ Ô@iî߇W]ç³I.KìjÀ÷#£$+·aI„:Ad«îA(µ6ße¹Ãêþ—]ŒU1ýѹÄ*ç±ä*êÞ·AîNyºéY·W›eõÇ»Šîû;þÅ€ŠÖ{¿oñõ‡[¸\³}È-QÆOè¾z]åxð‘¹ÄÜ$ZrЪ#@Ý2’$IR ”K€X-uuk‘䢵uu+}wÖÀ2ï8ÊJçå,ÆšQï1iž¯Ìykà4ÈÝ)K(¸ÚõœŠÏm$Èf}»¿¼wð@P[‡^1îÖéÅ“ÇϘ`·÷\½rùÞì»ü¿Ú:§+4_VàiЗ'ÊhÐAe¥Ë(kwZ2n#!4‹#!‰?úäÄá¨Ø¡Ã¾ÿ¶½ûʯ\Nñ¼Èb™?O /_7W¨V(vƒ>=Q6myÊ*“ …k¿ü½ ¶Y𜪧 £u_ õô¹è«Ò·ÅûßÖi·Ÿ“C„ÅfOzäPt”ãdsÛ)_äFçIçÅ— Ì×øƒwƒœºs)÷ýA®\Q®¦o,ÜF‚o–­[ Aym ú@úùûÖ¼hi¾ôÅŽ£¢I³àÜ9¾Š1"$~‡<.†@ÒG8e¹Üb;#›-öÃi„Ð1èDÈþã,–ÏÌðí²¾Ò¬»4¦óBZ÷9–ÿùQ¼ê(B¤5´F ÖÒ1X!à‘—–® ©üê¥x½‘Ö‘wÆ£ @gýB ­€ÂçS¥)p8Ì—¯uw_ë¾:bÔh¦õÌ×>›°i•yúܪ~ý¢ho^˜÷mưÁòê^ð¯cÇåÎKÛ­¿üøOhù1Î~1fXÜÅ[$w->:aäèÑþ« ÁÕî²ÎoÁ?2ž>{úÕŸV–ÿ`ÂÓ„¡ÝÆÅDÁ/ñ×OŒ\ýVç[o]hoÄjáx¢Bw—ñ¤ ppr‚ñFë› Më¦èQÿ(üdÄêGÿt±møõë"p€1®Ãȶ6Ç /Àöí¾cVÅY‰Y.O6ÆBWìòΠŷ†7ý”¯ŒXì é#Ï]ѦUø¢~3†q{è"«=r‚…Pi&x Z4xç¬öˆzb~ydÕcº¥UË:vlÇÅóð{èX·ndkÛå±cý|òšI;å‘tŠ'ƒw oú©à2Àmi™kßÉ ±’$YVg ',[-nÿ•ÕR'ËéÅIÅ“ZnÓ*ó¨düê.Fë°‘2cJx™I–Fƒ.??ŸNTš¶À%uÐ;L+w°¨¤K“˜»‚–ç<îîœu Ûƒ0Z7kN™1%//oí; ô…eì­ôJ~$IÓšlÔÔ.-‘¦—»–•4Ëüº¤Œû\Ü˳”˜Íj#ºed¥=­Ô5+Þ¯G‹eµ2RåÒ*³Éã6”# ! Z‡j¾J™1¥ñX3C_<æ—!ÉÈUʳ \]kK¶@®R]R.4i•å@¹=»K…»Ä\/™\‰ÜÙ«mÙks–4ÚE_Y ù:'ËlVR¡ž¿•–ÈÚôÐ۽ˉDbù¬œÜJ#á“C2¼¼ü“ŸLL,Ÿ}B=q¶dú*6|òÊé ‰DâÂé+¥;&^û²ä§=ËT8ºrÚW¾­-GçPA;kØìÁŒ%âœêmÖ£ü…Y[› ”òŒ :Ìr¥<#ãÝ æ6ÉÔUÈ/ED¤©ÑÑØ$"«©kâ8µ°°°pªUÓª‰+Nßé+™ë…÷z —·L¥%k?º(‡î)ˆgâ=;uâ`ÅLw)ìí=qPDžèµØñàý‡­w d×c Épö –Í(mmõv³/Ø K¤¡;ÐÛ¬"þ™k[…æEÀÎÎ@T¯ù=‰º ˜;&SW«Ù!6uæpo&®<Ñ›¹^xðÄÔY9Ùâp8²ÓL¥%ï¾ýÖ[/>nfžð­èÉÌz¬×¾üÑÃ÷çRœe3J[[½Ýì nJŸó®i¶îñ‘T‡28e—¦6ÃHÏ'“bï›ò¥zü‘t Ñ.*陬8q•om:ÖúªãÕ­¦®Lûœ'ŠshyyhmÚwl8–¹dVTrß¡¼ãS·ájÚÁÇ|Ã1§yèrÍ(mõv³/¸E¶™‹Ò´ÖÁs}öd2™)¸šJŠHScCm‡Ñ4›³Ý®ëÑ©ìœØökÞcSgŸM:{x»ÅPÙ¨óȧ®TqMíÊ;Åë×G½aóšäÚt(ì=Z{ˆ9xbøP(³0¾ÊfäZ²6í;®ªàNÎX"¢Ù¼ã#][‘k¤K×£þŽ©U»èzÔßQíG<ؼAZ ùro-¬¼}ÞÂñ¼ä;½òÃÏšFõø‹‡ÏfW‚—ÈÁSG/µT| žsèìá3ÇŠï2KDZ3¹ÊjNYS½oóM¯Y7£´µÎ¡åÞ·µ´´ ÉðYo¥vZœ)؃´ëׯç~¹xñâ‰'Ö××oo›^xé¾ì}Cg¾1|ú©éééÒÅwéÔ  þöíÍf­¯¯¿ðÒ+<<€ŒU7O?ù¹ýû÷³$ ±ê춯»Ø Öc±ÈXd,ÔǾ{ä<÷ïßσ næ±ÈXw‚²× #>Öá꺈(ÕÜwnÜkÓè/€jXÏcéð@‡?"]ÁÙÙ¹¹¹ùù€Ç↱§šnñQ—ËåÝk °ÎX‰ó“+ºÞ52تi"¢i6ïÄ)ó¶ˆÄG]n·Ûív»FãÅq'>jÞÕNép¿Ëårõ‡ÓF•Ûˆˆa¤Ãý.·Û O¹Ãá~·Ûmnœ›fÓõ¨¿#“ÿÌÚ2ms^V— a`¯d,È/ED)O›Ãb‡t¸?Õ=ÁÙÙ GúÃé­ºô¨©mvª·Y©•¯#(s}vINgÒÙ”³í6‰±žÉ¤½7Øk—ˆ,‘_ù¢f§zí’œ<ŸÐ´ÖÁùRJyFæ[5Í0âc=“ÉìÜÛÂÂV(¸ý«ÃHÇ“™øåhó(•\Œåò“Rž‘A‡446™·Ç»›D$™ºš­¡ò6f¼ijt46‰Èj*¿r_wƒ¹£D–ÊMMézÔ?‰kšÖzja°özƹšJä姺µI:Q]¯©rMk<×׬”¾òuvŽÆ¹>öRÆÒ´Ö¶.ÑõèR¢ôÎöÂ{ãz¶ç@£]”òììzŸfóN,,=JD"þ1–a€=”±DÄq¼¯Y©ˆ ·=>:7 M³9Ûí™ø•XŠêº½Ýi«ß•¸\ýS3ת d"«©Âmƒ#¥ÄÞhã‡à6±þ|,ÍæŸoëð‡|!ñgOišˆØ¼Á”+茊(OpÂk«oƒ2õ‡|î˜ëÙåYw o±g2äëœTžçæ~Ýýlæ½ÄÞè¶i `p[hׯ_ÏýrñâÅ'N¬¯¯ß}çÉ÷€›dzzº4Añ]:õGƨ¿âõXÓÓÓt À.¬ÇbÑÀέÇÚWá>ì ë±ÈXd,2ÈXd,2ÈXwVÆ2Œt¸ßårõ‡Ó†ˆF|ÔårÆ3÷¦Ãýýá´aîu¹\®ÑxaùmqëcÄGÝn·Ûív¹F/«Ë¹£ï¬%–=œ;/wžÑ¸q3z)ÿtn^Ö·Ó¸2–¦Ù›D×WRWEDäZjUD"K™×¼«©dS£MÓ wi=µ°°°pªUÓîè¼µƒÆF|ÌQÊœ]X8uD?’ëŠ6Úª‡sÌÍÎ=JEücuïä¢ÓÙùYÜâN`ïg,q´u‰Hd)!"×b‹+º®ëÑ¥„ˆHb)ÒÕæØÊ"ñÑüyˆËêòX‡?ªëºõwd€91Vn^¤¨ª¸aXnoN®åϯäç!Ëldq‹Æ”ÔSy{‰f·ÏNæYîèì,š’)Ù¸R?ä˜=\cd)®¹hÒ+7ã•+ï˜ZµŒ>åN'ûèXvHþƒhÞÕNgæC³¢7µÓ¸32–hlVJVSiøšJz<3rF:µjo<­Kú—Úò§4­up~Ä£”Rž‘ùA³<1Ö3™´÷{íñ%¬›•WUéö†ë™LJWpvvnn®Ê ÒÆT®Ç²ñép ª{‚³³A ô‡Óå±íÄO5ý`ñª"–9¹ØÕV®‡Í™Å¹¹¹Ù©Þ漯Ę?ªëžàì| ½råŸNþ£S¡CÌÍÌ#®„|A œë³Kr28“é³îÀ^°¯´èòÏ‘ÿ둾OœíöÉd2uÕœU™o“H$YJo\”ö@CfK¥<#ƒŽí¦XâKijt46‰$WSiÃQz!,W•åö ¹—ðÆsãݶÝ]Qª¾ÃHÇ“J™¡§Í£"‘ÅXº{' ¨²äZjÕÞx¼bãQQ]# §Z·¯¹¡±I$™=Ôª(ÕÜx  |[yŽu‡4nÖ$’Tž‘ñîI4‰$“©«"¶Ú©r§VôŒà;òÁ÷U•±J7Í,ÉZ‰.I¤«mP¤ì"ÉÕTL’Mm6M«õ¢M&èºT÷r[¼½Ö:x®oµgre%äë y‚³§Zw³´šë¹š*Š!; Uöõآ´*d8¥<#ómKþHd)>èÈÍ•Öl¤Ã=“+º.º.*ÿtšvü¤²î†›ù<.=5Ëg6·F¹õ«ýìsIV4íjshšÍÙn×õ•P(ZëR!‘öÌJíê.óYo¯Ù¼ A‘ݬõ®±žö‚­+¥R÷~0ŒtlQÚÛ&Çñ>»®G§f®•«Ù0Ò3ÁɤØ{§‚¥ê÷¼ªc‡ÜŒ'·MÕŸu ±Y)¥»$C¾Nó½`6ïDУVB¾*ßVº}îÝpˆØû™QŽã™M5öYÎÖ5Æ|ÿZi=Û6>èì D•'8áÝñuBÙ¾K‘ì2öí;Ù×¥ë+æròÒš5­up¤K×£þŽ©U»äÞ)é8Þ׬T4йÔ6²³ù­:vH}: €½A»~ýzQÑåŸÿ‚.{A|ÔµÔ6¿³¥fàÖ(œø.=ªès1Àe]°7išÍ;1A?p‡b €Œ@Æ c >î¹5ï/¼ô :ö¦§ŸüOæ[ÓuXnÁhs/¾¯pøôSóâþ#éó½ŸýÚ׺ƒÞðœÿ‘*¸šJ6µÙòº(7*šYÁß±j¾¸jZë©ìðx’e:<Ð3™´÷ïnk3=¹†ÝìCÿ«_þ¥ìµGrÕŽOÄ Xf{mša¤gÆâãwÃŒC­‹ˆW_îýì×~*O¼¸äÿ¸¦ÆÚßþnpé¯j[ #væ÷f”<ñ¢9.âˆ]þ²ˆ(ã†Üy™£æù@Ⱥ\.×h¼$aF:Üïr»Ý¹{s‡Ãýn·Ûåê§·ÊÝY£ñ‚ãñQ³¼?œ6Òá~—+·£åQ€{9cÕøc(ccSÝø@ã¿ÉÞ~oãç‘6gðõ7‚mÎàë›76ÕëÏyôá‡}ø¡¶çÞ¸±©ÞÛH½üä‘6çç_Nmæ~}êå”Yó{©é§žœ~gcó½ÔôSÎìŽÙªÌóKêøSSÅG3#k4^4¬¹ÝnWÉø–XŠtµ9,kÓ´ÖÁ‘.]_™<Ÿ(Íá+s8×hÜ0Ê ‰¥clþðhdÆÁìøuõ‡Ó%£_âü䊮wùºmš¦i¶nŸEÃÊ×òWÕår£}‘ÿûÏ•j{q‰º\£—sGæÚPúðí•ë­ün¯þéQã‰\M%E¤©±Á|2ؼ§Ìäë·ÒWÌ­S(=©Ì.¯q–'e]XõîuXÔ󵤮w½ø-ʸ±©6”íñ¿|Ƽ]:˜ÜÈs^~ùó>ü9°¼·ñÆóŸø½ˆ®ëúwN·9ÛœÁ¥¯g†¦ÌHòƈóÈ£?ÔöäçŸÊ–o _ång‡µÝD7=cUë™LÚ{ƒ½v‰øÇ[ÇУ‹˜êµKÒüƒ7ÿÛ››››êmV*âË=äºõ/µ™å+!_GPçúì’œ ΘcJ¹£÷bÆÚ0jý1ÿÒ66Œ±ïGuýÃý¿ýঘåº~á™ÅOÎ~ÿ™7åç/ÿ—g#úc#Kß9¦G~ÿ‹/¯mlp´T×6ÿ£«76Œ©¥ùŸÊϾþ­7n¨FêG³ªýá_ÙxóÅã£?“Çÿtaéâ¥×ͪnl±ç?;ñÓ~aäK–מyþÍ4»ÂOõÝ•÷¢º'8;ôèÑ@8»üQ]÷gçí¥/üå#–ˆˆ8Ú°8ú˜RJûÓ…%sÙ²6ŒØóƒQ]ldéï*¯Ü(;XÛý@TÿŒ¥ëÑ@gç¶á×ü ijt46‰Èj*÷o–R_wƒ446‰DfaÑìñ Ã,WÊ32ÞÝ`n“L]­x€y¬j~6EtýºÚ~㌯ÌþðÅ'råJ}úO[Íi§7~ªÔ§?Þ¢n´<Ò©Ô?,,¥66ßðC"bÞþñôØ]×õ ?úqfûûþZ®þ¡¾o§²ÿ&¾·ñÆ""ò¡†–ûî‘ÕŸ§ê:•Uý•Øb2“Bm¥’‹±´aF:µ*J57°‘äZjÕÞx`ÇW ô¨`¦h˜Ê ‰e™åðØàloV*²”‘«)iw6ììÚ\Ù¡ØêfÚ«æ%ùŸþßFåŸê_\2/E¯å>˽,»½ªŒU㉴žZz”®¯„|ÛΙ§›÷*SRö5Îò¤Š kݽ¾‹ˆ±YR^n0É9¿õø¯ÝøÀ}÷‹HäûofËó«ÊýúÞFêç«¢”ý@ƒÊì’Ýl³üí¼a­Qý3–Ržêï®G¨®›‘¨Ò³-îw¹:Ík¶ª< @Æ*½V¨T×~ïû¡/þãW:ýú››ù׳ãÚ»ï$s¿JD’o¿»©n<øH‡R’|ûÝÍ7—"ù?íÿRÿúÛk›ï¾“<öñÕ†:ò…¿þÒ‡”ÒWþü©ÂÊuý~¥óô¬®gªº × Í+;y2HÁŸâˆ[”jftJr˜¦µžëkVJ_ ù:;ÍÕÆÁÒá±ÁÙn7_2Ó©Uë¦îÖ.ñÞ†ªü³û—ò_ݺ}g'Òzjavvª·YUbJNÁ¢Äâ5Îò¤*œi5»ßŒÅ2c•L v)w»èW³ª¦†_­rw‹ªv9ÝÆk…íÕþÍFz&8™{ïTУÔM: p×ÛØ4jü‘ìz,ã_úóG•š:ßPùå›ÆÆæÎý*JD>|ÿ¯l›êHëc¢ë‘×Ç~0ûáŽô~î1‘˜ÿñÌf{ô%›Ææ>üÞŸý %"ÙÊø°(õ›ÏF¿ýÝïÿí÷ž6·¬×OM£Gå`d5ñ°Ý¤Qb)ªëÒÔXšÃ4›wba!èQ"’¿"¢r,‡GóZž$SW¯Å›ÚJǽÜu«¥Daúڪ$·=DÅKKªòO½^bªyøªêöºžˆ¦ÙºÇGc©ZŒì?vWßyGDš?ø«Eå›jS5üú#Ñõï¾Wñï_Òõ=òñ÷+ccS}ì¡.¹ôwß5K>öP—®ÿÃÔ_}÷Còò±¾¯¶+eVž«íü«kæ½76Þü‹Çýìc_߈ÝHllÖzFµŽK‰Lþ0—å§saVáHUi˜2Œø˜?Rt¡ªˆcpÄ£Ta XM]«ά‡Çg»]"KçSMeV‡9Ž÷5+™š1/€ÎLE”jî;î¨q&këÞáTë´G_bоZº½ÃEþhîÍæ£io<ͻ棜ÿŒÊ¤XóѯXRî5Îò¤ò w°{½–u÷Rjþ¿~ñÂZæO8ñõ¯&66+ &ùcN¹Ûù¿n*‡ãSbVõ÷þô%]Ï/Y}÷jAy¹a-7íà§Öçm=?ƒÔæ¦\Ïʼ)×Qö¯¥up¤+ˆú;VívÑW¢þynîá…©,ܳ2cHÕ Ãœ-~õ3QQò‘ß>Õý~C6 sR]”265‘÷úìÓ©öþص(¢ÜÏýñ§m汌ÜH©ÿ-yèß7l*Ãøõÿô[ÿ6ò­•ì¯Æåo~晘“Wy¦¶oöüÖ7E)Ïé×ÉNJnd°{º tF%S­gd~°Õ=Qå Nxm[¯=4Ð)ÁOÄÉ›£Štµ*a j¶÷ï.}±/ø¨*±÷Ì×ÊÜ»ì­è–áÌrx™t48Ûí““,3®Ú¼ãóc~_gHD”ªýS¯¶;D9ïíh¦ªèÚö%ÀVæáÛ¶ÛoÒ‰hZë` 5Ðѱb®¹7÷Lpï³G&C¾ÎæÞ>šŒäÂHÊðu†òž“¥%%¯¤ «ç’õ™ÚªÛ½¾‹ˆÈ¼_ùÎ}ßüÌ3ßú‚ë[""òÉ?š2ÿÏ¿p01òÇ)s[£phúØŸÿäÅgÿØ¥þèùO^|f1Wþxÿ‡.N|ë ®CŸïÿ¤šX´ªjkXËDðßÿw79?hׯ_/*ºüó_ùàûîÖפ^zeøôS¼6c¯:óáÓO­¯¯×ôd>qü?ÒuÓç¿]¯¯7É|ÄT×È©V‰º–ÚæOµÖmÞÍg~µífØÙ!^xé•Ou=^y›‹‘×îˆïÒ¹;Nd÷ý°÷ãÿ„ÿ¤÷ìjçóÓ׺F›rÁ‰ïÒî`›ŠN¨WôÉü£oï;—}#[jÕÞx|´0=œ\ÑõŠ#qÛq1òÚÝñL¸kNänX #>õÙg—Ì?ÕÃ}#Oµìñ1ŒÜÁv2¥–ŸÏ®i6ïÄÄ-8Pu;Ú¼ Þ›Û ;<Ä]3¯s/|Ùó?°8z^™ÛúRIC6÷öç7‘±€;ùßM22€{éßM ,d,w´û ; uIDATîPÈz, ,d¬½c}}ý…—^á±Ç]€)} ,d¬½âé'?·ÿ~>¾w‡ùï] 0°ìM÷ÜçcÔQ¹à¤Ó5u·¯\"£kvÌâZ!v‰k…d,2 d¬=Ì0Òá~—Ë5¿%_ nñQ×­; cÝ&‰ó¡]×£K‰[ª4­õÔ©VM£ï cÝ #=3µÚìmV*25“ÎÎ-™s[n·Ûívçâ‘u¡‘÷» K²¡*>zô¨ÿÙT×u=êï‹Fé¯-‰,/:G €]ÛGÔÑÌÔj_`0¿¤ÁÙÞ<™L.Æ®>qß·ÝÏFu]D”ØûÝ6sÍ{‡¿¨PDlÞ‰`ÊùÜ!1¶;J‚Tw o±g2äëœTžçæο7³{ 3*¢<Á ¯­B›­Úà¡`—´ë×¯Ó õŵB2À `=Ö /½BÔêé'?W)c‰Èðé§è&p:óêCÑЙoìß¿}}½RÆ€©(6•S:‰%¬ÇØ%ËÕV¥óX±á–KG—‡œ…%íËG[N¾ªd2¥ž˜(S~vyÈ)±á¼»žOäWš­yk¥>zúÂÔ‰ƒ{¤»Jû¡ú{o^nÍqÀnU{­PçÐòòÕËü'Ê”‹ˆˆ7“¬Ö¦}džcáÀ»½bÃ-CÓÜÒ”uë# ! €{­ºVxðþÃÛnã<ê}ëíw3¿¬MûZGKËp¬0¡8‡Ã1‹ gîÊÝ(ºmUClØÜ½¥eøÌ,Ú«' aamÚ×’9®ozÍ"5µd‹-¶Œ · ÇÖ¦}-->Øß_tÄÊ5o׊N06Ü2Ëžãplk›¼3´îX°-·Ûív»÷XÆZ{çŠ÷¨s›$ºrÚçÌÜz»w9‘H,Ÿ•“y$tèB"‘H$G/ oS[i ±á“2žH$‰åå¡Oˆshùì™Ëš£Ì //'‰Äk_–3S±¢œ:taÙœ|+·eøä //ÿä'G¬Xóö ëä•ӉąÓWNnå¥ðIó_ûò•Пý™ïÒÑååÄk_ÎmaÙ± š€Utc+<àÈ7Þy{2Uµ ɰu’Ù:Ö g¯®ý袺ODDœG½áK±lá§É\HtõVŒXV5ÜwèÌ­Z8‡r—/ gãÞ™öµ„å-!+·¥÷¬õв5WñXÄ.…½½'ŠÈÁ½Þ­Ózàô…!§Yá[ÿØ4œ½]©[@µ«ú˜e¹Ë[¸<=6Üri§MòZ¬t·Ú`mÚ7u.‡¼ûö[o½ú¸ãEQòÄÑLáá£Õ®Õ²¬áà‰©³Ã--]b»fÚZ›Ÿ­JDÂ/¾¨ËG?UÅ–µÖ¼›ÇâðV/Ü®Ð- †€•+œ››«5cÝO ò Çœfž¸ïÐÞñ©Ý, /Wƒshyy¨ì|KkÓ¾“rv9á,Š8ÞñÄÐ}Ó¾c>ÉNe•Û²ÖšožÝw,÷œÊYªœ½óùXO  e~|äSWJ®c\ÜŠ ç¯ÇºòÎZ&²d -k°dî[Á»o¿õ@æúÚÚ;WŠ=µÜûö±L³+miuÄ*··ä<ê ‡¦ÍÓ…·[ë&5w Ø•½ô¤OLeóÊÁSG/µäÞh¦çÐ…C¡Lᥣ¹õXΡåÞ·µ´´ ÉðÖ"-«2o²s<þâá³æ\Žsèìá3Ç*¯ýv=üâã™UeŸò†O¶ ¿QxÿrïÛÇZ|ÓkÛmY|D‹í«Ï?fE‡ãØ™ìÙT×Ç¥ êN»~ýzî—^zåÎù¾Â›üASkÓ¾¼Eøàžb~_a•ߥc&(¾¯°šôv2,œ¾0EÀ;sçf,çвó¦Õl~r=À=—±n¢õõuË/{&cìÜåŸÿâQwW5[þp.Bƨ֑¾¯ªŒeU¨Ó}uGÆ c±ÈX c±ÈX c±ÈX c±ÈX c±ÈX c±ÈX c±ÈXd,±ÈXd,±ÈXd,±ÈXd,±ÈXd,±ÈXd,±ÈXd,±ÈXd,2ÈXd,2ÈXd,€{Ã>º Ô‘¾ï…—^!cÔÓþýû‡O?UÍ–Cg¾AƨÖúúúŽ÷e=@ý‘±ÈXd,€{kÞ*q»Ý–åsssöb  Ë,U9`‘±jŽYÛ,2@m1«š€%¬Ç¨5fUƒy,€ú#c±î¬Ç°°¾¾þÂK¯Ô-cí²:€»Ã.‘výúõüß÷ïßOŸÔj}}=ÿ×}•ïÀ°æ€Œp'øÿ¿é aI–~IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/smime.png0000644000175000017500000002371312032647203024201 0ustar ebourgebourg‰PNG  IHDR׬¸¿ñPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<7Øé ÐAnÏÜ"ol”@l¯¦ÂÀ¨¦‰ Žbšþ7T…«UÇ@”WkÉ€ú¯ÞÐB¬hèüû“oÄžø3€(Yf­tGMúDuòL„’¦}Ó8“_2ý§ßO™'ë›6“ã¿1É"‡cHÆ&ñ*ÿ4IÚáB;%O>µDÇ‹ÆFÅh‚OŒ*ËÔ‘‹5€r|%'#Õ=h¸ÉÑ_Á’Bó™ŒN½³ ˜@¬¨ÐOž–c9ˆQ^Mr0‡dlÖ>T*þ“àÀx;=n¸<4]|QÛsÅ~¥ÜÊ':$|^ÕÁÎq2ƒŽ´¨À‚t5@C‰„qjPK Åë¦(L‹~Tpæ ùAž IM”¿^r𿞑vK°ª…ür‘.÷‘‚Í_7u\JØŠ·ÅÑW «ž44@ÙÝk»Ü&ˆé›/ÇÇT„,ó•e‡Sk …®÷žÛѤ“2ÆR¼° k¹Dö¯Íø|zsÀ¡G]åyE ¯ä¼"Wä¼"¶Šž7E±7¶9\•ã\Ø3Ûíååà¡õÖÄN¬=£•x]?–°k }ÑŽë¦:D×øÏA ¯ˆZåÕjÑ·õ•|š€~'Òñøiñ*äsT¬æNÁªõppÝF6OŸߨ«(‘Ÿ+Îøô¹ÛWuiØl^¯5‘÷¬7“SêÕV¸Køh΢ºøD”׸{0p|Zà¯äƒP.ñ^H@–7a~u.SEíã†Ý»l~r19åZìÇ¡»÷ãæžHYI#Tä²øxµxŸH,þ ŸE 8*o‚¼Qê³É`œiâ8½ NAt*ˆè‹¤•õÿ¹ÛH'HŒ4Ÿ[3ìžÃ!¹:¼jÇBä=rhÒC3‚†>‘hÇL^}ø5Tœ9Ï­¢˜ý Îå?p©Te^eM‡È{~7Xš®„Ïù2ë¦õ@\J‰+¬Â¢šûWý(PÛ™¾UV‹jx7mõ”߯w׬}Ÿ–¦à5{Ù*Ê+ðÔnñߢfÕ¼;sMKÙ\ßüZ”ýܚḘy”áû‰"}ÿ¨ký§Ã¿çÔš—Ú‹ÄçˆÆüЍÏùux5&ê‘WãØsõ)¯Øsµ‡(ί¸nB ¯äQ‹ë¦ ÀeòVõ‡qF ¯ˆZ_“4¯5Èï¢<óרmyM/îØõþßÝ”̆}X󼆆t²WfZ³s¦&îš ¯<µ#‡ËžÙpdá©8pþ¹Ù`ޤ¬xæã³ÔUbÊ=7ëI¯[¡Qm^p‰}†[Œ½ô/6‰ŽÃ‰_ÒÃŒqèp¶ù–üGŒÍ=Q–b_ÚK}_zlíý>ìËš_í xô>jDF޼d"iÞ‡Ù‹‡Ðå`YÐTøMxš>ç1ÊFÍÊ먨Jz 8žé‹z¦4ØÊÃÂËAÒ;»˜ëiª€Ê²›¸ƒ³'±/kV^ Å<Ñrã@Q±Äj•SÍg‰èQ'öeÍÊ«ñB”[½ ƒxTJ¨ ’&yDŒùuwÉÌ„n\7Õª¼*Úóüe4]ñsW*yò6^ý`Ê,µì[jmöð“ÞvìÌÂÆôL+Ÿûo%PÏô›_u9¿¶ß³'=œckWt£WŸ¼¢î(ίä¼"6a=,"ޝÖ++9õ‰GZ±ß¶¡¼zÛö¼Ô3þðöx?vÛvä5Fþ½2ÓNŸãç< gɇÕó<ƒ¬{nÖ›£*ô?»à}øàì\£-×<¯J8ìJ ‡Á~݇ì i¸åÏÛ{ÚmÝ{J¢5k¿‘žfso»²vç×èÛ“¾ñ¸d’3ÑÕ¾½Ÿ&êèYû÷ÉÌûaiyÍ18rˆ…Òˆ­Ã“×MìJ'í¹[G'éâ(BpeÂÙ>94ÙÂÜu8åØOs–T‹¨>>¸Ãz¸¦ß,zñ<»Êýc!=-ÒáÈPÁûŸáni̯.ëI®þ =TCä/‹/¥é_œp‘žå§XøË”Õ]YëûWÿ¥ø?m ‡¦‰ÈÏ].XœêžØìT€aÌ›—]ý•ˆg²»²¦P‡ûƒÕSä¬I›{dª»i[̯OÞa~- %|yÒˆ]VãpT*8}T'ë&òŠ@^È+yE ¯È+yE ¯ä¼"Wä¼"WòŠØvT·¹’pJÆúo÷‘WÃõü¿¢Ý­‚üÇE'ÿøÏ7»¹„æd ûgrúW¸jHþËᦢLÖÓ/®,=ß«]U–$—­3ÐÜu»¤²Ó&‹?zºBëC< ]ÇýÝéÚýB {;ªýCâ€ãåôiayÿs(ápÀ7ôæ-ÈJ~5¬Ëãfi»×™{ü.—´\S~?«¾nâ!Ë‘—h.0 òþ:ÌrùÙ V«‡F…ž‚W­iÈ2}ó‚cÞ½af|Ô÷1dÝó_ºcó¥ö}.ÈgçýÜíÛ%A|œ.øSNz¾œsçh[_’¶>÷ÌÎ-Ä¥ö ƒ¢e!2a`–…·¹?ñ;}î™_©{^³£Ù1ñEO;'íqˆÛ':½†–ʱÎBÞv“_Ä! ä¬àߨgÓ¥Y5£ý8x »÷Ú‚»KíûvÂrO³éHàöíÒ‘*i:Z‰þ”}ý_Ûi[¤mí"mµ4íÝ9è“Úcƒ~¡XšZ,‡#’ea¥û¿SG¿)Q÷¼Ž ÈÄ—8^É{ ´Lv¤è’žhOâsF :ÁµN ?ƒvYp‘ùF.‚FFjiT“œ·o—ä´¥éļ:,CÜé_·³¶n¶AëŽ×}D´ÅöN€J+Õ¸Ø@Òc ÿ Â…ÚËßûN'ÈSeª{^mã™Å;W9£|Ô©!ôtu±12C ÎX.1F½åüóÀ?,Ζ0‘i ó\2ÜBöwAòíR3ß yäOù}ç@÷Ÿ¬°¶æOÂòca‡ÔÞ)èê±óÁœ¡éù½Òý±ïtŠd—Ußê»Úë¦ ÛÄøêf¿«Æ¾KŽIéáÕ^¡±ojhøu(öo¼ø¢\!h•Õ Ã…Ñá&wÇvûNäý)¿Â]O h4Ÿ¥"GGÀY¡½5ƒ,=ßH¥û¿Ó¾[9yÝËkÿDÿHj¤„| Mp”¼@á¬ÕS’U }ð=ý³žŠ†Š—¸ :8R/ç öKÉoA,¹Æ¾oM»¿t0Ë¢?eO§ÒÀÚ3(HC™p¡=2—Z ’;zfYx›û#ß)M¾Ó…¸¿îy´É‡”v¹|JÃ-8ÉâÈ<újÊ[*¯N£%´{æ'Yט'–ÿ'ŒH,ûý¢õôsï )¸×ö…s œõôSËÔ\•ïŽi8>è;ÑßÈRŸ Íl‚©CJs¯=”ü²5íö‰˜òOè5’7”kÄXv[2¿ǧ³ǧó_0[z^ gË4dC=o·Ù!Ôkèî¥SM-ç3ÉÎÌÿks{ ø4çÛ<ìÉû>Ë‹¨æüZ9>^Ƭ˴Y 3?b÷]Pq3,ÏÎDô«#$?O2´¥’””ŸWnîŸ.d_ŸŽPæ˜É@'3X-Žn Ÿ)è‚RK8 ƒ‚ÉÙJ÷%)]œXnÖŸN{µ\|º¥†j£öœ`s¶ÆNÄØ OóûÀR¨¡R^ĦϯãÓ© š¶ÈŸ²¸t.òIK–pNÈAqþÍ/ƒLT¼VœQåý«:ZŸ®`v9”™2çóѸt-`šò—[£æ KEFGæËÌ”L£.½6²ÔZœQµý+ƧÛÖóëúí®šCŸ®nÆá"¨ÕŸ®nÖMä¼"WòŠ@^‘WòŠ@^È+yE” Òóaêxø×›¼ƒ&ýu}0ˆýSW¼ ×sãƒã†ë"±Vkœ…EXƒriåµ ¯r;û7X2,#¶9¯A3‹3Ãñr³ÄçÀ2ûÐð"|`ž†ˆ{æcp‘¤yÈ=?GC•dærØ·5'¯BœoFÂH„{ixŽv±Ð"q£Ýݽ7÷,Cø÷ª„Ðêy©ÚµÇëšX3`¤*…1¸ªæÀ>:ù µ£2*YØ Â4Úr†šõ,¼-Ç®­=^×ÄšíØsäý%8&t½¥(# ;’‚W» v©¶Ìè2ölíñj §Æmãô¶°\Ó-òþÏ ;ÞQ!…%Üœ™ÙËc0¼¯íc×ÖàzxÒÆõOÚFú )ú1òv™†a‘5p8[ˆ<¢‚÷h¨-Ä“V9E«jWcw$3Ú÷³žhá‰OõÄ Bx‚—ƒ_]Ê›g§º¦Œ`¸âñ Á(dÚþöíV¢’^8>GÜvX—^8rZó+yE ¯ä¼"Wä¼"WòŠ@^È+òŠ@^È+yEÜ-ÐîêA’×`P]í®êŒ×àuÃø |ðºA"6éž›õgïÊÌ ­¯jP^í2ûŒÙÇÄÓô¢|×ûG|Ø[Û›× ™ÎÁÙ9‡hwÒË^™¡¤qÏ|¸À<3³ ÎÍ»™:cÚõTRV/9ôZOÙvÇ$‘%¯\pvÞÏ‘Ls³ÞϱǷR^ùQÞI^’þ~.‰âF»½†–ž,÷˜[mÔùwÖ›ùµ” }YÈöM7ìÙe+ž™—{,׎`q £­]o%¯Y¥ÿ$Ýb;D3+m#DÈ?•hf5h¦fVo@4í²ð"dŠj‹ÀWß‚8)ç=]…o%¯c™±1y‰ôä o$3«®.’R0³£Æv u>Ÿ‹:¯F$Z`¨¨¶|³ ’`vÚÞø*†=¾uûWc÷„mÜ6aãla Û©†’2,ªÆ¾[9رžOT„sýá)ÇGÇæa§hÓ<2Tâ(„ñШ>‰Ù‹]¾…ókÿHj¤ä‚±Áx!ÊÇÙ²ˆAïf­xK2³jÐ]X¶oTK9“êNRA~ bI«\ûefx{| y5F{”v¹½§G|â¤hO͟ΛY™¿ùG S^Ð]yÖ3¹“&È5}ÔÌJþKh”ƒeÔóŸ…|–}~"Æ$ŸÏ3Õ ­Sž§'¯aWhwU7@»«v~E ¯ä¼"Wòм"WòŠ@^ÃŽmt¯¨YÆmÏ+,!‹kðÐá8\‡âüŠë&òŠØëálx™•^i…™;–%y ÙRþ6¨T¨¾6ÇzBÜ3¯£¿U&Œu¬³³ Ù#Ç3wÌ…Ø¢q8qh˜é`öî®ù°ZWˆ1ržçÉ™‡¹Ïz¨"¹žt9çÉÎRÉc¹c…² $BÒ3+ÄÖ9éž_>0;àá¢{AôoµÆizšärÅi“®ùðò\WŒ‹Ìù/"O÷Êk#^H ‡~ÛUA/ŠeÕ{o$zôû_ y]°ÆdJ2ËSÞ.èƒ)æÍ_€ ÂÔÇxÁ›ÿêsRŽNºjˆ,•M“²žÎM §~ÿMBƒˆÍãµmÊ7ëfÓݯ¦žm§tAÙ·X¤lž}5å-.iõü´Ìù„Æò0ŽóM™‡C.RÖré×D õû?7šß÷·Ó ×_³=2ÑVÍ»AÍï2(h~ß%ìÝæ9¢9ö/¨§ þ8º ¯m^Ó¾4¯2*â‘§h•Q=oòâC™¦ ~ñ‘\0íñ”/Ã7šÉñ ó÷ÿI7hÒÁ¤á àý_@êÌjŒ "בßQq¾XN§—e})“(µpc9Ù¬Êz39¦Z~-–4ðÑœEuñ‰(¯3 GÓû1¿zmm}PßyÍ´HÅÄÔ¯2ŘÇm‰ªÂÏ ìjï÷íÎKeÜ2‚HŸù§«ê wôÑâqï-RõSsÏ2„úMÉüÉàðÁqÃî]6?9˘‡r-öãÌKyOiº¼fá‰äÍVòáþ«›yí¦0u«G Y‰Љ:þo)AÝPB†zï^Uç I¦ümè$ǽ n„(ù§Î?-i¢^ÆÏÊ‚æîÖ@$[¯€S$‹NÈë}áõãÑäÁ?ŽAóÈÀ{®³…ä®. jÅ‚—pGÓèÀÁ?Œ²¦.y/­“µç€¡k?¡wHÒ—Ò#RVš“R2ÔK94Ýùõþ“èÑ¥½ª¿¿A=|;L‚V©…Ú%OßÔº™2øÈälšÕéÛ“'ñMJ»Ó‘+õ‚ß –V³Vý±Qyuw1Em·àᛃ‹Â!xø– Î{úví—›IîÑ©ÒBâß³ÊSËEuæCÿSÅp-ÄKGë—¡o•A‡ÞM—ªŸ#6*¯-Sê;¸Eðð}v”9oºâ‡Éæ|ž‚§ïS‹Ù ˜œ‹E“¬aÒÿï.8IYŸ¹Pç„Yºüè¿ òSfÐOúÍ%-¿ã[\¥i(õRŽX/n£~˜×RŽ·ßß[E¥ñ2(R_¯^ø=ÀÔ÷ÿÜhû¸mŸ7U‚æSìÙzäus€JãuÉ+*׫¼"]÷²E ¯ä¼"¶Åº 7(eøÛ=ŒË,ï¿ØÄ>ŽÃ[†MÄW\7!WDm­‡sÁXFÞh–§å] ‹GVøDU”X6'¢¶äÕw¤åëÍ}®’´™5d°ã¶¯ H‚jf7p¯ÍÍs`µzÜÔÖ"ë}jÖ•Wö…AæpšÚ`0c޳î¹ÈÙùyª•¸ü”; |`nþ5ž\𺱇kƒ×pÈEù \0[z^ ËÔ¼Úóí7—ÎP®¸Ð Åqh|§ÝGSoÛBp¢×lº@µ~µ¨3Q#¼¶ŽÁÀãÞœàÓûu’ð#–£mGàŠ4‚ÀJhRüJÁ®[¨Â÷ëÔ·8Í¡ÁeYð*ßõQô-B:÷‹ŠÃ+e®‚#ŸK3Z] Sãà©fjöwµQ÷·VÖÃÀëÿwô`š¤ß,¶vò¥øTÖtˆŽÆÈ­.ÎôXZ±õòº`q; TM[eË–8oe¢œ ¯®ÏŸ è V¬DŽØzyÝ9å÷È/YÀ|9”™*hm›F]º±¤Ž–¼Úwª¥I—ù­+R"GT›£¾¨Ò]ëõ¾^TA/Qkó+¢N×ÛTé®K^Q¥»^å{çWòŠ@^‘W®›î¸ù)»yØö¼¢ºx¹­Ã}QÇq¸Öp1ä×MäQ›ëá l®b+ä5¼®7郸©/^ƒ†ëƒã¹qÃu‰Ø¤{vÞ_ª£vÒԗ»f=k|ô§Jþ;¤y}ûÇaòŠ@^È+y}÷9 ‚¿€ÛZ˜'mwÓH<ÒZ•P“´J í§ümLÄK.[®îTê.{§Zy‡v¤(¦ò¯I: /’÷ÔBTÇ/ú´²7’UðR rëéÁzúØ»púioËKzIDATEÎï ñ Ô:2ë rE<à_Ž©eiO0”ú§V^(g=ýÇ¡Ðÿ ÙiÉ)¡"IϾ3¤ M…=‘,Mx~)"WÒž?ý(—ñDåJ±|ʤí&ý¬îÜb0—+²¾g w@ëk¤w ¤»i;¬–ç]I• ‚K´vñ~¬§Ί·!¤“Ûð ­>Pó«R;‰ÚLŠHO³¹7þ^Þ~Ÿx¹ð16÷0ãsa÷^[‚ý»[lXèhïk±€¦}8ª{õÍ=4ÌdÚpËÏh=l1öRâxó ð.ÙbïIw †¥ò[Ç.Ò®_¬ûí=»HKá¾·$o ×ÐÂêÓ÷ägXsˆÔ`Ô÷†¥ûøºxYL'mYÃÄüÊ#>)̰3Ʊå̸NùåÇŒqÐr¥£Ø èr°L£`µ'ƒqHA¾ýßnrÀƒ÷ ù˨óÆí1hxþ<¡áaÁxö¨e%yŒ¼tžå1óì,](ïi"µeÀ­#í?ÿ99þ¨T¬>-©ƒ–Óó0DÍaÐpÕ‹÷S€˜` íÔѳÓÊötâF §= W88åè¢N×øÈA'}94eá‹ÓÑ=jÒ˜68hV‹åŠ}dèñ)rð0€ƒ¶qÊÁñRÐÊ[B^8šË›¸p¾÷ŠydHÝ‘C“g¥×X¥)èê1½°j ÿy:e@¼ŸÂ‹éb;õóðôƒ;¬‡¥¯b,ýª“ƒÏèX=6ÈÑ.¿0œçi|.Z¬‡ •®¾Ô{o$zê“èÑ‘½b¹Ò¶È*­øçÁAŽE…P^óY*rt4ZR÷¨& ;O9Z2ùtéÞiúË““6Åû)\ÓÔýkà–Áhï C]"eu "Y« MgÆ"e$%mõ $hˆgOçŽ&ƒk¿ÌDÈË18á"ýPC8ú¢&t‚ª|óbyw˜Im¬nµdT¸Fgn„E·bºØ¹÷É£ƒ•0ùïòîOÄônÿ*̯ïŸÐÀxïïô—}0iót00åi3Œ}ë,¹Ø<²Ôj¼úàTÀ²ÏC»Ér陟MX uÊ“0ƒXŽác'ëWÓ7CðQqXʦ+~îJ j±|ë°‡Ÿô¶“ºO‘º-NP&ƒ:Â’y8œòÐ-«˜.¶C$yijÁôVä¹SWôÒýл޷D3‹éÐþõƒm2×t}Ô”yt¢ ÷©¥óëzüÔ4®‡ƒÜDKÅËN ÿ½=yU«o{yÒŠÏý‘WòŠ@^È+yE^È+yE ¯ˆûŠMŽˆžòÊÁ¸íyÅØ½epb÷â8\kØüA yÅuyE ¯ä¼"¯ä¼"WòŠ@^‘WòŠ@^ÕÇæÿ]c Ö%¯[°^å;çWòŠ@^‘WòŠ@^[¸ÏÁø9uÉ+ÆÏÁq¼"WòŠ@^‘WòŠ@^È+yE ¯È+yE ¯ˆªàÿŒÉâL˜½1IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/HTMLAssertion.png0000644000175000017500000001132112032647203025513 0ustar ebourgebourg‰PNG  IHDRЀ’±¤ ˜IDATxÚíÝMvªJ`½ëÌÈ´ÏpLÛ‘¤‡C;S>¿Ã=¬ºUP¿òó<,ƒˆˆøº-‘}þúú:0¿l p¸@à p.@à\.€À@à¬Ô¯§s¼½½=þ¦gql¦×º„3D ‰¦wÝÑÓuë{«©<î½¹ß+¨pé—õ“U¸O…e]¾ÐKKÂñ‘WWÐá’_Bm ,¸›¨@Ów…®¬l¦è?‰¦wÝËÓEÉk0¤0o 8_ʤås3%sUærߪ¼5—{Í·Â*êÏþŽ'dF2íWEUjÉ2[ß3Z¿ ìµz€!…MŽ*|ýÑ÷ªÂ"½¤¢o}ƒ1†·Ç€Àê²®u3.*E3WÌjÑÃÂo[˜³Ñ×P™¯°òß¡…ì"€!…Σ ÒƒÂ«š&ycˆ–°ºÀp¸3“t­W5£ å?`k åt9.€Óò¿4kŽ+™È]™å¯==;:­ëòÓú:­´β`Ÿ.€À@à\.€À¸\€=xòÓÞªªl#€·Ûíûû{xàÖ‹°ò>>>ÆV¸µ|fÏê~¿{"•»^¯%³màôŒŸŸŸžN`µ%éår)€õ¥ÀBÄ.ÀB.€À8`à¾ýÑõï2Îçsë”s›Ìü­W•ÜÝäd¾»Ö©ÇQ MWÄUùùùiò«¹œNé•nõ Óδæ€À-MáærÔU,l/µËÜjµ[ª‰ì0( '6 Þèù›ˆf8ÐBk¼65oW7òfbÔ0üi£ò KÈfxadfÕK¨E¹Y21œžèÓ›|€ÃU¸MÑÚZœ¦3·^Î,¼¼Æœ»’mb±5©[³ûi H|…-}H!-r[³¸ïrÐßk¥År¸­O¾ & Ü(XÇ ¼®y¸¶õ«¶ÖoçòB/>·9Âl¦CÍúlÍŽâP꣆Â"·¾Ü7(£[½¤Ô¢°d¶pH¡kœ¡$ÖUǰoç|ÞUUõô”º³ºßïάÙûûû#¦>>>ž¦¥Ÿö,Dà,d' ”èú>wv×ëõr¹ÆîB®ç Øc¸@à pÖë×Açårñdó©ªJ… °@àìK¿®½Íåõœ>|½„†W¸‹u~ì›¶žB`WnÔJ'¬(´IÙG=í¢un½•gØL…›Ñ·MúÓ2Õt8gô°Î _…;àýÓ6é}û¨ÎYqk1°ù w&}»¥…ÃÊ[`oѸ„òØ^…Š.YB–ßW3gôžjØØBøWóoëÄ©jےŶáÈ`ÖÞ&}*N^ÌJ›t€ )0Òó£uògÉ©*^¸·ÛÍ6X"pµ(˜Š1\ p¸@àÚ@à p.€À@à\.ÀZ o“žvÃýúújmàXØÕ1Z`~þ° zsYûH`ŸÛšqƒÃ.ZNÝ|·kia4‡—E-°ÏÀ}š›i†fþmMóÖHmþb7¬¯Ó Ѧë)²UnÚì÷ïß…É›Ž<”×¹i‚GÁšîfæÖ8Î,ÿ¤ÐÇÓéý*ܨ¹Yyë(éÒÄì*]Ç›™ò9z¨×*œ_37 Py§ÝC s÷7‹>àG_‹Íw§õ£”×Ì xÍÂ’ÒqÕÓÌC«á=f¾©iöãpÓ¯¤º{ZÆ–ÌÓw•šeÊY`«Ûdka…_[… NO'vUÄå«Ôº|€9œK"¦ªªÂïà «Ë—äZ:(,^ñÊr¹1ܦ}UÌE'H[`aËîNÈ/ää5@à p.ÀáýÚßCºßïZÛëõj/»aŸŸŸ›XÏïïïËåâD9 p·m)ö(Æ·òÞŒg @à\.€À8¼ÞG)LÒüfýl¢³›;Íð‚À s6ì+>8²×ipÿÊüü‚îðT 3·õôÞÑĨúÓ9»®=õéÚ¹mÚ§§µgO¯^A]™+máà&Ãýúã4Á&6¡“OŸ(ÄÓåŒ\±ô^òo½²²ufi L¸OC°‰¼Öb3*WKâ)]`ßK»IN>"!m¹*ÜYMÕ&}êc`Ƕt.…Í%—¨&«p{5o­O»¾þÊT²Ír¶Uð Ü&ì¢ÎÑôüÄ|møt9½ÊÌa·-\[€ç’ªªêv»ÍtÂÃÖÿÆ|¯Ïy¸¡Ó3:.lZyB¾r 7=`Ç^¸ŽWÅÉk.€À`€}6‘üþþÞV³t@ànÒõz½\.ºáw¡ ×S ¬1\ p¸@àÚ@à pVkÊ_šE}hæ>³íãîœ<8hà.“³­ápÄÀÍ$cÚ1lv3kmtÝD‘ "p«ªŠ¦üþý;_óÖ}s£.¿Ñø@Ø[·™?¼U81\Hº>3ÜT÷ט» ÿmî>l YþÁ?Ìß(‹K•G+0“× )´füŸñ£a‡Â5X• \^¸á×eƒ«Ôh!ÑDO!°ç’¬ª*úV.pcòÐÀ.†¸@à p.@à\.€À@à,kÆ&’÷û½¹|½^mk@àεŸŸŸÍ”÷÷÷zŠ3:wÊ´­£6ÌÖzÊ#vÓÌmíˆÞÚ¾,œ˜vPO[ùbHᑪiƒ†^ž2؉¿4«ËÛ(m›Ü¼^¯"÷r¹Œ¿£zZìÇ \Ö¸o•ÌŽ0m¶â×JÖ#ý @…›ÓŒÒF…gýo3Â;UQìùT¸>ì̸u‘{úï¯ËšŸBLUÞÖGݶfúÈÃÑfr.‰¤ªªn·[˜•é”P}àW»µô§[Ô7gR¨ï8üi¯¨˜q WÈ„üð@à\.€À¸6€À¸\ p¸ pnÆóáÖmuja»;qÔ†êv;ö4¸ÿöB?ý·ãC=å»iæÖ=›ÖjÍ¿ùé¡pb4ë¢v5¤¥jaa›†iªÎM lÎÄ_šÕåmW¼ÖÔëž¾­U©ÔË) n€mîR¸³ KÚ¨¼}ûkärn\ÛFÙúõ—§ ¸ÿÑ:JÛÈðN•ª†&n.ô•˜À.MXX]äžþûë²æ§ùãÃZ³í¥^Bk±<ÕÜK¢§ªªÛífe:%T)Ô±[K °E}ópÞ · Öð§½¢`Æ“×Y€Ó3\ €À¸×&¸ p.@à p.ÀÁÍx>ܺ­N-l· p'ŽÚ°ãCÝnçiO3Û/mÓfõ”G즙uímþmz>FW…×ê Rˆû붤;6ñ—fuyÛ¯uõº§o£®R3=Ìë«d1 p'#R;»°¤ÊÛÌUwTm«În‘ÖQÚF~„7SÀJa@àNVÞ†i+^]šþ°°ºÈ=ý÷×eÍO!òLJ…‡ßF[ëß̱ ks.É©ªªn·[˜•é”P=¤PÇn-ý)ÀõÍÃy+Ü&XßöŠZ€O^#dBNÏ p.@à\›`à ûøø°ùfÜÛífÛ,¸~ÔЗ1\ p¸@àÚ@à p.€À@àìɨ®½÷ûýé<×ëÕV8o“þùù™¹öûûûr¹8µÀ{ÊžªñQG‰üööÍóõõµžÍQ¯ÞªV ¸£H4@ྲ®l²8ú7¡pJæ.Âb6­j£)Ê^`+:Jáë§ÿFÑ¥g:O~ Ë™›l>pß½êß’9£¤Î/¡µn #Xy l{HaòüjFä# Â]tDÂø pçÒŒNLUÛFCÃv`¼× )ä(h.hnÒ5êš™§d s;—¤OUU·Û-ýÃý~¿^¯ùø~~~nô—fÊ[ DWBN\á>Òör¹äݻݨ•¶Àº†vyž9 ÌÁé.€À@à\k\ €ÀX­_6ÁTJ𯝇öõö {…Àݶ­œVBûz{…½â% )(»À^!p.`½zi–ögœüì±»˜£¥XùÒZçìµ2çó¹¾ðóó³•]!z€éYØG>ãon¯àp;SÈf}s¯«æ^>¸1ûŒ½‚CnæõPwlŒ^f%S‰M9“Ö}õ´*Éw´LK˜½ö:kZmFÏà€§ ™9½U×µ­3Ø+Ø™¦}ņ;\׿ѮÍ“îâÑgÉÖ¥Eÿ¶N,_Zú*ÚA…5¸&M·É×_ùg³uSw]›ÙÔö Ž^áöês>r¿9ê—¶L°ná«ëàUL&C{=q]×™½‚îÚv¯èÒ¼|Лok¯¿Ä³W°“À]gÙÕUˆEcäK¶0Ò)J+{k³«ãp›hˆ2bÚZ©Y8 ”¥ö î¿»WáNÖ”%»{ùafáå÷˜Ÿ³¹¶×Kôçççü×þŽþ‰¶Øä‹mÝÔö öá\²ÓTUu»ÝœF(ï~¿oå¼PïïïU]Õæ×žÆXíGPžNÏÈZ ç^‡¾À \Ö5X—"ÏN*н;»ëõz¹\¶2`‡½»ùZÆFÀ^Açø p®M p.ýMÙD²o‡íè´Ö}JŸï‚5¾©õLZiùÃïêbàDp”À¦µCêàåD¹³Îêj§8ì 8bàvØÎtS?uwN_twµãΗç§g-¸3 ½OÙsf§ç~-yøÑœ™~Ío9pdsáfâ&ß=ÓËzdòöZT¾áv>"»&¶Vß]3áÛ•¤“o:`nt>ŽËå²þ‡V…Q=>¬Ö[{À˜ÃHNž“z¿¾¿æÎžÖ§×ªnâí6dp3Ù—f%¶é§æå«ã­ì †naµV}î´­a3ß} [Ÿ5—½ºvƒÀÍeÑqùÕåY9ø8ß§÷ —¬[ë×Yåðªk0°MúãòÖGǤ’Dƒ#‹P›ô¢±‰ ,éˆ;>g%50€“×\ €À¸‡÷Ë&x¸ßï6ët½^í̳n1ûŸŸŸ6kS`ß÷T)GÞ™‡m1 ü¿\–ž‡='çà-¶ c¸@à p.€Àµ –1ö°°´yAÔ–|sg2<ŸÏ¿???Ãn;솓¬öã®ë•ÔÓÓ{º¶]3¼ða2‡´“®4pÓ§gÓOÕÖ£¤YùèÈGÊ_Åu—&™»ÞÀMß-£g+ÓÀ1š¿pΧ·\Û6¥bX6•c”ha9Üzó(ìÒå„5u˜’­sNòF­UtU4[:³"÷˜•oÚŽ¯µ_ëÄÖL?f5ýÏbOÛ×Ñ¶Žž¡úß§s¦·êZþ€ò0MŸúB-üÌÞLS)ºyx“Ö夳eîqªä-Ylópš™›Û*™VùFa[_há‹1ÿÚŸê{Ü wp—°®¦¼kµxš)ùÒkŸÎ?m¶>]ù¨²V´ªgó/±ÁÉØR6òôc¸%OgI9Ü÷ÙÝÄûdy¤.¾…é,Žw_É6/¥ac¸é˶™’Ž4ª°8p§ åaï„ëÿl¢\_ŸH]Uú³¶˜®ºëUœŽnå;‡¥Ãž›Í-’j½ªkþ™Â.\lI»ðˆ»¦ÈWQÍ ™ *ÜQï™w¶ôÝrÚåù@]Xx6É•¥ ›–LÌßc¯ËÜÝÓJ<|Dá‰egá˜ÿ¼XòB‹FZo2÷ vÕsKmUU·Û-<Ãf}–ßÝl…ÉÏ¡9,^þ» ¡³6ïïï=³×ÉmëùàçÃûáG˜&ä++\Ê?Ú÷…˜*"¥-ìgHá€Êó«|(` k Œáä5@à0€1Ü}ßïwÛ;3w^×ëõr¹¬¹»2Ø™;3³2† °ú ×»(À»§ßõ,ÀÀ¸ P:†ûññac̸·ÛÍ–X"p0ž1\ p¸@àÚ@à p.€À@à\.€À8¸ÿQÇ©;Ë4IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/assertion.png0000644000175000017500000003303012032647203025067 0ustar ebourgebourg‰PNG  IHDRú¡'`àNPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<< °÷ÿÿ÷Å‹âûùýËöÿþíwÿûÛ%ð[)NìDL0€ô€ô€ô€ô€ô€ô€ô€ô€ô€ô€ô€ô€ôX'ò ¯üÏ#¯ä•—¯^ýÒS÷Ú>&/&gd²†w¡ûl̬¯ÙutzõꟺG-3‹Êy¨{lЬObÊ•'NL®Þ´?G×B¥‹ÎŽ9lŒô…‹b'î „'ây¶b¢Äø\ÂTR)1_äƒÉÈgûJXZl"š(±pÿäÖ䜩Èn¢xpZ¢2‹™(T)ߢ‰ýê'Ú­!Y2Ô²³@¹…nBj}º1‘çÞŽpxb“3y…v3ßðáXLþý¿4c?u~úaᩳ Ã¥¿ñ‰}<Á~šüLÌlk•‰¬ô¥·Ù6öªŒ;HE4š_z‡{1¢`H©Juì¥ÂŽ0óxôz h¤¨DÉùÚkjN‹TlÿKd5Q…¸àý»NKØI`.s¯Ö7Çø]Ÿfñ~ž¨ºƒ¹ma>73¤Ž¸ÛÎï åÓ+¤l3QK?Ù»˜³î©,¥å‚A©oúŒ²~¯"Y½½ðØKRsx¥9Ÿ×;Ï_ױÇWÀÏú§™{™·âiúHeþÞ[ssž‡¹n¦8ŸáMüÕÝTÑìùÞìüIO)=rï£dBX[W$ë)¸ê(¡öæ;Ú­Õ”[¬Ý­c åa瀵$ã¾~É{tòeî–äc˜ÈëHX*Å=»š˜ ßãÎÍx"¾›RnYþÔ1o³°ó}‹|™d$=ýœŽÆx²ž–ÓÆçô" ÊaÇ!­†6J\Uz@»‰1*ÅÎëëëWt9Ÿ•%5°×V.Pî»s‡"çÎQûn¢Ê6~“¦c¨ÒPªŒždËYqQðÿ>+ü*‰E4eÓëQr–ñÌõüÊ"Ù“ƒ=âE¹‡ß-òذsÀ:_æÖ´7õì*¸9—¬L¹Õïι=%7O³„ꮹÏV³ëQsmw4QbÝk,dï›nn/c‡Já†Kyåêýrõ¸øÅ[z=ÖO]hj«°°Ãàƒà\A¹>¹[;æ•<Ôôòûú¸¼kŠ´èÀƒøx ØÞ¾>;ÖáÉgÖ;RúÃX>>>>›ÃžXlw†Í&}†eÀö¦6û¬OôèbkÀˆ` b›É%ýÅ3 3‚-Ç£?®Åe.؉¤:+>Ø¡@úÒ`'‘r™ë Jû•”§ÅßKËm÷éKH}úvX7é³ ’E—¼ô`/¤í•„òÁºJß}›6>2Ÿ(°”8èz(b•gUÅWŸœ‘+¬RÖ3ÂÓŠN•ÓtÎwÚ*GQCõÐH­€5”~û4ÿ𸝼Zÿ¤‡æ+§¾]?òö‘ú¯üÒ“ßµär]T%ù2ë;mcŽ¢©e’ÉpÀ:Hßzì:ûûz$æ1uÈ*YLô ÍPE1MYúÓýKNÊ¥nË¥´ÃEóx.e$_‚ïÖ_úe“ìïÔ±î*î15÷ÏÓ¹s$§ Rœ•·OçÖ襤G“z‘¬lÏL`½¥o*?ÆþNÒ‡îÔítWÎ&éK)óvN·DMK9<²=5€5'ý¾¾ÅÃþ¼H§B©›Kèïb?99nØ$§ì§³'§¼TŽ˜§µíOgÍ ÀzÎú$óÐÞ;v?-â¥õÝÐp-ë´Ÿæµ(·cRÝŸ´,9¶“µƒg°V¢¯Í /þCË9?¹‰[1`ÓR=ZkÐ8>Èàë¯ ˜ôÁõõÉ£øžؑҷý–;tÖ‡åÀdf }}vèe.>>Ûå27¸ñ65ˆÃ¤ }v°¯™ˆÉeVóÊGÇ÷Àˆ`ËÏú±ûy½ybl)åŸp†`ëK²¥ÂôR QpÀ;Aäp„†½ÁÙ³C!örÚ?œ:&iÜ;H°-³þÁð[õyü±œ_á`ÓKŽzÅ:x¼ÊÖÀ?›9·»ùøÜ[nþrÞÖr<^}oŒÆOتëgÄ–¦ÑýDýäwî­mƒ-ÁÖõõ›è´XJL4c#²Il1Q”mù¸Xdš¥ŠMW•'ù]yqñ ØŒ³¾G7ò I²ˆÃ£#9ÃVW–f¶½îÍ+ Í"{¥ä::ð2l ¶î¬_HÑBŠOH”Ÿ³Dz\’Ò;s3'ÛaK°ug}Ûå9ì¡ ÏPqŽÅ4cyTÚØYÀwÀdgG.sÁ–õók'åkV*ï—úl9JØ®MþV]{·ë‘Ñšš3~¹{¤Æ[‰å#É>¾65F¤àë³³ÁÌŠÏ'0(؂҆5ÀΔ>Œøú@ú@úlO__'þI¢Ó?Âc|nh$¸ –ÛpÖŸS—œ:Ãí(ýõðè;¯{}üëX¡³>þq‡aG”bŽ!"/?PÀ;(¾É‚m#ý0•+³¾Óîçï¿ãä-fÇD˜þ;Ñ>þÕ¬Ï×Û¬ Al _ÿþç©„»­ø÷m3‘ÅÌ´NT)ÓŒ¨ˆfÊgé/Ô¼šJ%š‘~f[ƒ§r^æ>¥ø;%ô­“ÑbvJÅ×¶$I|]«¸=‹y Ô¬2?aD3ê`óòΞ9:é8Iÿƒ½º+ôMò¿* ¥-æ2-׋$KTk‚mäëGéfÿt…½z(ÄNDWH(¾€N‰÷â;¼4d›q™ ¶ƒ¯/BLã?¡KÌÇ1Otñïj|ö9‹˜õÛZ<â»»•žû{^šú,0 Ø>Ò—Ž]ºÖõs/¿¢Bl)/'~Oçª+Ÿjϧ”!¡{D ÛFú:m’XµkñûÙ‹7à܃ ýýÊjŸö~½ {í|™ ¤¤¤¤ÀV%&«N`½´Aú`s0º¾Í=úãe„ÃvèYÒ¸ÌÒ`Û“·€÷dÛÀ~mtû›£ ʺÏú@¥å†%ذ]µÁí‹.XX6´ «7”l,Ûb(k>ë¬îNw‡»ãˆ2U8ˆn›Ã‡“ŸÎw,åsú dΑ”Þ~b|.!V™—Þúƒ³æê ·Ò‡€n‚;¦è«o‚\É«7HnM1–#6c‘ŒEÇ÷¤•ô9yp‚Øã]{²¶¦¾rlÑ/mdwxÌMutŽš›&ô-‘’yCúZÕÜ$‰µýÑÆï¼ý{×Ó0j¤ä–péÛëh‚µ³f’7Ÿ5F{"cL%4ÅŽ–iå[©[pàKwxvªãëÇ$»v’윥¹N¶Žû¼Ã!þ\‡#ä ‰Ù‚móÇ(îð‡ÙöÙáÁà´÷Ï5ë¾Ê³ÈƒÊW^>ïõŠÈU/ûgÙÛ!GŒbŽáôö%åGm?Bst¶¯ø"°ø2ðÔ R/E‡½^Öv,KÛ¡Ô¶_f½<¤<8lbÐàÍävÄY¥uAíé&蘣“ÜZ[Â^ñ¼àˆoÀëÓ?øY¢¾©éÁÁ—ù8½"~]ð|^˜@·¡hÿªohJu;éWú94Àcéå¦ýÞàÔAÞPH“<>èHhýXØš:¿H>"™í“ñ«"°˜ZÃáçö¸Nüa#a*×í;2Ìû¦Ž3¹ ûw‹ûúrÚšè›1ŠòÄ}뾇]ªçªÜâ•ß¹·¶qŒÆÊöïqý ßS5MÇÿhÌ£VEßw IM5TU6ð ü¾]‰\õŪ&¾¡Œ©zŽÊÒÛ«‹B>óEŒâוzÉïÚ»‡µ=al;ºWæýЍmO7TW6èYÖËȘÐBƒÅ^Ïå6½éW‰Çš¥ýZ¸T¢9þ@U}œŒXeó³|=î|xw£Ÿþmž‡"|n··KÔ4ñ´ªDü.:Òð~õ÷§EŸ­û6ír~WÕªjG˜½Q ñ5ÙWã¼o(WÙ|<þ½&Þ‡pUDä œ¨¬n˜Öú‘J\KEaúµ"¾w¾_õþ‰#"°˜ZQÅìÏ鞦EÝÝ&ݾ¥»yA}œÚ~Hîß­.}Oh[ò›¢M<¯Þ/Z¨1º»SKµô‹¶YÍTV 8oãG–hµBi•jMûbì¢ý0Uè_îcѹYDÓªv‡çyíZ9K¾Xxn+yÂTRÈl«ö#mr×Ç’.}wä^Ø'E"C=,M\X±½dþŽ>æ>¡}œ™ûw«KßeJ]óy7 Ÿ>u(ZM-ʶÓDgøºÒã<öXˆ¦WR³²‡¬âi¦Óô¢2…¬cûE¼bÛ¢J^Oq[4ñ¦·ïêPÕY­}¯ƒŒ³™V¯h».gÛqCÛï·GŽþ²Ø¿ó$™„bYí¼L'w¦E–îÐû  …‰ŒÏ‘z[¼cJ TÕî:24K¯ŽT)m+i|€’:†(; Ž…¤ EûÍtZÍ¡ÚQGÛNU¸ ½žRNë;Ë#)c:pIíGš5õ±¤KŸ‰¼D±Ð9uSë!¥V*o %Âme©ö%Ã83öï¿ÌµÊ.žcëÛú=üö9O¾˜B?t§g/-þÜó'ÚöO½3=)!ÑO”ìŽÉàM}öV2KÙ‰žæOýuzûÝÎÎF¶híKe×F©½Y¯ãOøM—~ÖöçOæl»ÀÐö³ò³'Çö‰ WÝd¸|¥Â¦ž–ki&8"ÚgKP7g¦ƒ› [[¥%|±©½ôÓT-çr è#µÍTJ²,§Ø±­…”ë¶]ƒ,ùbCø„'«íú vñt²iÖtªcQ­émfyÛøÁ)…<Ê]3­kZ=zçJN^kî‘ÒǬS쇴ý»Åïëw;ï|xñ¶Ô˜ÜRÜ,.ó_¤S¡ôÌÿlc§„<ŠOO ¾AÿÈ×ì¼U®e-š¦ž”©ç}+³}©‘/Z Ž)‰ÇLŠgKSo°éª¿¿Ÿ·mWÚ>–¥í"½mù˜+é—…ÄèxˆŒ„ÊXÊÒ‹7ª}Hnù‹–e²È§ÿ@ÞkÌ6Eg3î„•º‹é˜c$Ó†ÿHoSìÈÜÈ'•’üˆÒw.˜í¨l¶gyÊÕ1Å~­iHêX´#bÊM›îqº-§p„Y¨Hj=†{< |¦ÙW§Ø)ûw«ßÜ´™*½zº­ÞðÀB%çߎÞ/MϽ»Çï±’µc¸"ãÀ:Ú-ª(„£]Ñ7fJ‰\U|ùLGáÚ¯é•z«¨²ýØu¥×Ç;mzÛ¬ k‡¯<³í.½íîjªéIt[Å5ʵ€ü)cW Û› 2Î|GÚN_==e0Á½,¥lã¬|×'uÖ0c$Ã:ùþ1\û»¡á›bC¿án¡­3ž—bGKǨòàŽâÑ.eP»z‡­]UiåÔ‰c´»BS¼·RëGúPèÔÿüòÕú)u(ÕÝcò§*•ÃQt×Ú7jbÚÕ6Z£Ö£Ó×Þ|ù‡”n_}œÚ~Hîß-„d¼öy'8v5þõ½˜ÿuHý•îïe‰î³Òö—ð™~Öt«põ»°öÿîYtíëýA†À:^¿ztqŸ×ç©EH5ö-"ÙZºÆXLÛ*^ùék¥k´O¼òþ5Üãk[ûv—þZ~Kkÿ*åY«¶UöÑ­53Á¾5Ýãû¬öe.>Û|-¬ }°±ý³>Ø¡³>|}¶Æ¬Ç€‚)}<ìàðHHHH€mD–i9ø#s ­…Ë©ŽÑàѲF)Jq$²¦à<Ü…}6Jú\‘C…Ëü$o?åŒR”ã¨?Û7-áñë`cžBºD‰ÀÀà¸D±aïÀÈ]1iЗàñ›Dü¦ÿlHK“Þ Ã·X’x>ñÝeyX±4 fz¥|µlÔ78à j'6HúQ{£¾êú‰ ºïÚ»çwC¢Vç8ßTUÏ¿G³Þçiµ,mª¾ÚÞÖn¢Áú¦ˆóDc® å›`ûEŒ#­¼†(;N~gmmãØÃ„Yl„Ã#>Çð”˜y{ü5Sô³g¾¶É4Ò'‚UXMæñ›ˆ¾ð6Ñý“LjÚ¨ØD!=.+WoˆÊ~÷5žÇXúQ² ½¼†(Ë£ùËïʆn°úäþ‚¢šÒ™¬KÐgx¸K{»“ŽÚKxÄ&õyÁ†Çáú8Qs?OûtUÉ+ÍH‹ÉÖ¯6(ù¨™ä'[ÐËk¨e+=.j㥌þ°z¼óÀË\*¶¿F¿­D&*-¾9s²y+qËǿȮ»õj𔍀´9ÜÓ$ËÆöŒå‰ÇteKKXMíØ9`£}}KçLôU ñÈDÃMvzš{å!vPBÁp2~“H+à1cÓ#S0®Ä2*¢Õ·ç1ŽRË)ey„(VSyHÆ>ëïë(?ÚSÝ7&õTQMÿEHÊ<Þe£ÊÏLÒwõL<­ËN–kcÔ]•RÞ~f2À®ø«®I%nízd´&µ>>>>>>>>>>>>>>+`Á¯ªð0i¶õíÏú5¹ƒÛÀf7uoRÂñ­[w˜õ7,õ|j `am®G“ÛÀz?Þulºpo˜½7Ao¬7ôŸÍ0ë,î[ŽèaÕ(#.`xªFMk3™«óWº+n¸”6Z“ý⫾].²&¿NKr‰5wƒ©ß¢ÏøN}à†26—޵NjìËêvd"&—YÍ µ—ۦ˶+{Û>¼‚P«bƒÎdo.›ó«–Ù›þÃ^L<³ÛÜ$)Ë¢Ëè*°âs§Fó^î¬ßÙtàÜÁsæ&õm¿²¤p¸QKÝ_å]ñØÔÙdæKFBÿ¾ÝÇ ï'j÷½yr *í4uZØë_VU±ûy½yblQyÕñ5%›]‰Ý"”X‘¹UzósÕΑ ˜õe3I|y̼¤b\»OŽÑ¡Sú¦'œ+wxöæ:¾~L²§œÞÁ rÔû,ɾŸz ‘‘‹ižä‰Á³2E|^_œ‡cöúﲪ¼"8sØ7ÒÒ¤¯z½Dz“R³D|±gžƒyìç$!öóR-ÅGÎ GxKÃÞàôYV?=,*Vc8'|ÃS™ƒSÚ‘š -Ðo²2g•¸ÏÞ³~1€Áá8ѯ7È0ë kiŠx¹É–û¦—úk´qªí%ÓSlª¶khvùv뜥?v¥ b[ÄÖëOhý»ëð>f½œr8´q¥õFµAzoRëc½9˦€wpB„Øö ÍRTISûm@ퟺ_T[ÈÌ_•YÙŸ6ŽTxLK¶­ÉvY–ÛÅOfw^&£7R@Ç™e‰FÊÞ®u‰–þ©ùxì­&>oG¬.±+ÕøÏgù—3§¶cŒ‰¡oÒdýwªX™QçÞ7EµV×$Þ²ÙŽó]ø›ö¦1-M±ƒpúhP”WÇ©¶—LOiVkרìrí–šæ¸w2ñ–Ø6Öø÷»ïëý+ß¿ç_ÆX••1~x*ãJßÃZ ,3mj}lÛwœ“ôùz›µ‡Ñ‹ØÝŸ¦ÑÆ/ò4µßƉX韺_T[|Ùâ2ÏVV£#ÍsñÀrT·¹ð³É<Ç+d’…&ÙIê Uñ´×Ùûºƒž*»âr±ÅÙ¡míúßþÚcƒ†œu{®{ˆyy³O̿Ǵ'êVêgC’”¨Ï¯ðžÎS“Ò‹4Ÿ[m§S?®Y ñ<­ŒÕã<:ð²V×<¯AVŒÕ¬¤…5;p©ásÕqªí%ÓSlªµ»v˧qq*ÛXév×ֿ߬éÇ㕬· îGë¶HÅ©Û[ïÍçÚ2êcí›Xdý$~œ·ð´'YšÚoõZ°_+›Ðö‹j‹„f –UG¦ÖÎÑí+®NCMŠYE{º-dãXòk¸ ”K\u¼ôþ/õ-àb½!º-I¹Óú¢Yþ|G|v¨.¹½¸êhŸ-O‰¯\²ïƒð‰öR6f‰^|[¢}”ôÛ,m®¡µû‘”Ñä‰í¾mj[²¤îæ’÷¿v-Å;,/{ïXˆÆ¨*£š„Y•ÃÙÓ$ý(³%¥ÉÔWb=ö™¯ªeÊËn~­¹]«+\oFIÛ÷¢>€"š+TÚãTÛ{1Ûêø 6]Ýò™óä‹}(¶•ìÿJã O©Ú¿ç¨Ê$ŽVá\e‰…Íz£Ú 3Ù›—¦EoŒõ±}ýce_˜’>gÉþ?¨giyz<í¤žDYu¿0[ðóÛo:­Ž#Í×w2©Ýîj‘œ]Gtk–¸Iòµ×úXLå_ùšâ©ãse³˜ôþ/ýÏ•ÆVFÛåÔ­¯RˆGFž¸gµ5}ƒÍÈWuItNÆËh*æð“ÿ@^ñÉf2Lìç¡vù¤ÂÒÊYZ1Íćқ¼|%ÚvùJc›úö/iš¾NJçŸíœŽ&3;^– YЉâ3é•LNw¨Œ¾Î{ZBS_ÏœÒÎå+†MÏÅÔ2¾¦?ÇÏä +_B3¡dth5MµÃryF;F´qªí%ÓSlª¶kØ´»}«¹H¹4Û|u¿leQû÷gã>Z …&“¶H£Mµ·±7…S±Ôú˜ÿ~…•¯à³Ët#Ôý„§©ý6 –U÷ ³Å4·¬Áê8Òö;Ûã­mÌ.mz_XõI…u[$ÇrÈ–ϲÍ<>·:^Í›‚¢jÿ—|_ßV?ÓôÍ_7Óþ½VÑ7&uWGNt–R—3foOÞ.uõÔ¼{ï×T½ë“º¸§V8Ú]Eå}c¦kz%U½Cæ®]d¿69ßcÏh’,qs|¦^Ímé Lþêo¨q™Ëö(÷“øyu¼7ä•ßµR¥g¸"ã–] »R)=åï®&[ç䟥l-™šfRW~¬×ÎʰÞÕtûånî#›Ç»*Ézm2aˆ.}F¤)v—ܵãƒò5‹6Nµ½dzj³e温>¥ÙåÛ­Ä鯯úǶõKÕZÿl>Þe[W°”éÁ¢Œ+[oÌÁcozŽwïJ© ð³ÏYèÕ© ©O?þÇzCC,­Ré·¡¸Ú?u¿TvNr+¾:™´…:ŽT )Þ픚ºõƒâ/Ç'¬¤_‰m¡îWÆûS#’|mhW¥çþu¼Õmc»ªÞµÊçSnþ}ÛýBjÎbÆJþAõOÏ,¹Ì ›$êþ˪µ´èºVw€Ë±[. ‚Áàó6óJzóÖüÃs±OÅ>¦.š[Ó[cŸy®Ê¼º ¥|ÑñõØò¤Z;H@ú@ú@ú@ú@ú@ú@ú@ú@úlFR?´ü v¤ôñé5‡HHHH€-H–ˆ <ü/•Ü×bìD&k(2‘ëûÁñ~ÕØËJZ¿a•ÙF‘µ05'*}.ã©c½Ú›Cìí¡…¤9Wj ëu8#kö¢ý9Tx ;l2‡‡5ä±k‡ÂlNæ IãÞ¼ëó‰è“Ž’MÇIDAT¿CjL·Î…y½„Ï;à ‰P·rpÀëã°¢ÃC<ö±–?>rvÚ¡‡f汓ՠ¸¤ÇEŽú¼?õǰ_ÀFI¿“$ÚU¾·{l?Ï'éñ¶êzRËÊÍU¹Õ0ÂyóãçŸußC΀u;y¼z·“Ǹ Öh¹Dþà©ïÌ%ÛˆR‘¡E5~®ß¹÷¡Æ1ì°¾øÿ—®|”¾}¡&z዆À‡³T‘ é ¢"?Ñ*iÑKK|è¾ÁÖ{#_W·½@Å’psª$úÏo‹M"ÿ)õ…Mõ=~Ch¤/P±‰B6"9ЈT€5ੜ¾¾šâh“zoÑôÑ^ 5ëžz‚êH ü+þ´(IaH§v?þ/ʶ{ZpV‰¿&=ÿ+Íɬýá‘ùAC¸ÚWšðê+%µ¿ñ>SÖ€wq™Ëc;O$c×*9ïÊÙ2ç?2'oNÒîß}MÙäiJäp¤Ií[_£Ëg’G‰ˆŸ[z':u² ; l”¯¯h}^‹]Ë—bU7Ûƒ–¾Ý,¼™"üJ€Ç^.£¹¨c8ÛÅóœ!z®¥s:ZH±q=—ñ ;åc¿€”¾­c˜û7Õm£b±]›|²˜öIÜ­òøÿˆ­ìíŸ$˵ÑûÙBœu ([½¼eÒÚñŒ¸ÚrmŒ—©9ãìÇ~kκÆÜ<ðÝòùUž À¢}ý§äë¯7‚)#¶:ºJ¿¤[À×ÒÒÒÒÒÒÒÒÒÒÒÒÒÒÒ`™ämÃ1ØbÛ¼õ­Fu«=DQ¡ŽmGHûÍú€åFÅ@`“ÖÜ`õ­¬ºÕ¨#Vý³þUþ W§»ƒ-uÍËåCu©¹2ãA/¶>ÑSô‰dÝèøžEV%ª³v(õÑ«£\ysU—^G"š7ÙÍY‹E‚»Õ¹&ÉmV—I%ûRCÃ(!ýÍJ“çÜ9:w×sDyó•ì™;Ü“–ɺÿõ5IlÑêãÇMiØþÄÒ¤w¨õM,¶ý,˜y’uŒºU>ìy8k^=HöÚ‘d³Xêîj‡PíåÏLúvé_×5Û Ðb‘ŠûÙÌð^àaC¾¡×E<èØÈÙáˆ:ä?¢èðÀ€ÿnF}Í’Ì­>&ÞE;øA%ÊŸ¡¥'ÏúyX—°ÿl˜¤¯z½Eü?UâM§T׬ÖgOqWâþYÑxZ‰q-ælÿY¯?£ÑöS©Ô1G*î8¶:8ÈÚú¼¬Ob¤‡ßggÂ78• x­"K2Å%ù1¦í|RšãvÐÎOþæ¥]N]GÔXnSõ6Ë[<š\Äîþºˆ=Vúv­Ë¯æ²Þ'¿ëá=»2ê“eÜ.·ëQ‹Â4ÇcD+åß¡¥¬o4òÈtaÛ½ ¿l¯ªžÆ¨Ä›NQ˜^_ÊæÉÆïD’ïž/ß¿Ç-ÂM5þýîÆŒ:”þ°z´3÷±aãyˆ~«Ò9N£Î½¬Oû”é¾b—aœãÎÊÌ0îžxÝcñ:º÷h[ƯêvÛO˜õ7=nOêºI ê¤Òrâ‘+ èŠØ²'Bfn)$™ýøç>ªÉ¨/îq{\­>¢nw´©;µ|ˆ*òû¹3l- 8…©¬ˆ.Ð<ŒÝ©MW˜^ŸîÑ3XÇ~ÏØî¯YjóäËZ‡K©Gy_ÓA®Ã#†sëe¬ ™»«9è…fÃ8ç¨Ìša7;‘¹Ð]W‡KÝRÖtÌh7ÜáÙìh{N[ó bª$“DQñ‚ZÄ–Ù'â•Ô¬›¡™ìç±ÁPF}.eѶ|†¦Ù’RÞ­cõÌSÝA¶¡ºÝuÄ7›¡0­>Ý×g°™ ±|§×jÞµ˜:Ì}·“NÝ7úí¬ùëçÑpÚnýKlΰÛ6¾ƒtqþŠ«S»çã™6Ú ÒßäØŽHwøú¢3¨Üþø6ë™7+‚¡ëŒQUÊ{*Ý{óÝæÑŒú\ÎN¶µ»ÝfÏ—<æÔò’Rn|Ôß¿JöÿÁ»î‰´ê‚Nµ¾#)7Ï=”à³vÑ¿²ÕsT¥>u£8{¼?R²Ù²ç:Åx4SeêO0½Ò³Ý<“>mŸË™1³[ø>ruµHÚ1~ÚêÎj7H³rùJ+£Q T~¾-(¿ìðSÍLQ™îÁ³s‰æSOäÃÍVz:³¾h[ôJ£!ðyá½"ÅtóJhé«w*æðiéÅ4s"_ÝO¬™ömSëKÝZJsãâ ‰|­~B± ²ÝW×’­ÞVúvÈ’ò¨ˆ~Q¥Øó!*!ßÓ² =”!ó eþK í2QëeQ¯¶©ŒÏÿªÝÚHÆÍÍÍ>íד%ÞÝ8S¯Îˆù{ÆŸyÁB¯NMH}-—½=Ÿ*=Ã)Ew÷øç»m¨OH[PTËW·ÖT¾{ïk޵ýÚä|ÆzCCÕ™Õ•™ãÝGfôêø“þ¡î±Ý¼ÊGÆÿâ æj|jÏÆz‡MYë05}ósÚ]w÷ŒûͽUTåS.þW ÓF5Ý~¹ÛÊzy?ý޼­+XJéÏ0hêþõË)5±±j~S9¿nPìÆF¹Ý‚¥®k¤åõºÁI[òƒ Ky‚ꊺ䵖ÑÁ´ ð¾Óúå«Êò¶ý CŠÀ·£ô·(Ò¾õi(<—‹lÇRò´°#¤ŸÉmö¯WCÅ{³ø‰;ÏÞøÐ2Ø¡@úÒÒÒÒÒÒÒÒÒ`3’úžw`°#¥n8<@ú@ú@ú@úlA²|AÑAÔ&ß×bG&kIJ z<_­ʈT÷À:ØðY¿¿õ¤íîP£²,È¡S)åû•%5K#¬ 6¿ÃSF3j¼_cWÄٕƽ9>µ7ìšMÆ3}``0%P˜418Y®A_|;ÆêÛPú$ñx¿»Ýc<Æ®ˆ³;~Â^]Ï£Y¹o3W垤±Æ)±„æ¦ê+- AC% Ö]õS4Þøð.§;ÆêÛÆ×ŸcàÿÒ•Ò·/ÜŠ^xÁnn–Êâ4]ATÄ£3Z%šçq€-oéžQ†¥K²ºô7ea¹*î˜ -°AäŽÃ£¦8Ú¤Þ*š>Úk¡f}ªNPzMJdUö§¥ÿÍvIï—ê>®dЈÒ©×Þæ&OeiFÓ¬3ïäœõõËTñwŒªL)9ï¦G}Iº1wbB“þoSœRŸZ¢´äƒ¹†öRl_ŸS@óÜsocÓ9_Šy4á‘”þºõ<žï_S8˜ŒeÌ5OwøÉ ¯œÌ¢¶‚ômžaî¾T·Ruû(Ù®M>ÓcOÉ1Òëêâ‚ÉÞ~ŸÊûÆ&û ®>Ù?ó類ªê}Ö×µKÔÀ¦áfÁòõŸZܬÀux€ô€ô€ô€ô€ôؤ!“€í‰íÒ'üËlGªéÇ>@úô(̶øú@ú—¹`5_AN~ÓÑÏ,ПV8㻜|·Òß ô¯@¬ýÐ9¤¿-¦6ãóŸùUY‹åèP'wG29½p²þR¾z¿âð8úɸ¶P¿ñMjaCÒßÎ~ŽØ+ý)Žü¢ ÙCú[É×7\²fy#r9Tµc1™¤¿ižæî…¯hûqÙ»Æà¾þZ»>‹{—£4b5bÖߊ~Cø+ÊÕj¦çbØ’%YÝ mÇÌ¿ú¤GdŒâ3<` ¦lDd ‹Ãó(>±v¦ôÿ6ÛúŒ-pxÀÎÀéƒz éKúçÙïùóÊ } e{^,³íwáìçWϳȖXúe.R+ÿåK«¶©õ|ëòªo]@­çÓR[±7ÀÏú)³©2ÿ§Ì¯çÕ¿©«´é÷¼á'™OÏÐÚʵƒ uÁ¼jžÅ¶ Àòf}®±Ö”w|þk%A9+¨ ÉÕyqvP³ð•rªPOz=ZåçU.˜W/²˜–X¾Ã“Ô|ª'¢miÍžWÞªªÌí)©­É— çÍìÈ-°Réë:OΦiëùl—˜J–lSðyc£h[s^¶æªl–Xñ¬Ÿ1M§O¬­I‡(ó€Éœ‚[ÓÏ%¹2fäÍȳPˬð2·•²M­Y§_Ã$ܺàýšìsvÿ(íìžg¡–XÞ¬¯\k¦9<™êlÕÝñJYeõšÔ+Øô‹çÅæ¥å´ ÀƒÈø¼~_öI³*ØÒÔ/æóú9§o¶¹¯ßºˆ-lÓË\ } } } } } } } } } } } } } } } } } } }RɈÃS›€)ý>ØlCð9 }éé'AW€Y€#ý,ÏMyt%õ¦>ü-ù6[žóYk9>˃êpÂëC^VÝg Ÿ|tézK{¦[Î<ç[3kQw>ó©)x8Øég(žKŠ­”íY*¹ˆÛšþþ|®JÖ¬»ôõ9÷ü‚óoN¯dsöù¬ï’íaÖâðhsn+-¤ÀE<4§òS§×¤·‡lØen뢦ÝóK;ÓÎgLø‹:ªXËY—?éÌ´æ|nÎ<Ê–ŒÀá¢lY#·vdNðmÀúù¹¼ë w 6¥Ã³´Â¥›ü2HHHHHHHHHHHHHHHHHHH€tð9é+Ø`° ÀáÒ>>>Û˜¼_ °¤oû1lvæ¬ÿ(làëééé°}.sÁ¢Yîm`ÛJ g© `Ö_o¬7,7–¾¨…—U6mÁ.€ô7†w§{é‹ZxYeÓì‚þÜ\°‡ÇjŽw¸Í²Ç½¤õ¸âðØ—Z.ËzÏ’H8fý•Ìú²©©C¦¦%®–^.s]€YcfýJ)n–—¼h³þrʦ-˜õ1ëo̼!›—±h³¾y™å v.s7JûË\VR6½é¯?ílî^Æ¢!·¯|ðõ7…¯Ÿ8@tG¯£øúýó"}ý:¢¶‚¾ÿ¨½W˳evº¾>|ýM†Ü!{Ø¢¯ClÛ¬òžßÿak‘'5_²lÊv¢»3}mV{¯–gé‡Oe´£­ž!!¹=n©É£¯#ÔKÑ&OÿýºY¢&ÏÐÏŽ±óª!]¬µómÚv"O¢’fÜÒ“Þ§&\^~là±ç~~€¨Nr=÷‰'=ía@úCÇ|‡»#žpëë9*¡¹„ûfÆ!WÅ—‰Œéb­NßNäî0S¨c¼Áz¤þyv$$ž)^u¸^¡ƒçh>½=Ìú+Z^.³«ÓÉmýük'ØÖ:¹çìd©uMfç92¤+kµpúösÔéŠS±s˜.ºÌq^ÞGwã{ͼ‰þÖïLoÏÄ>À¬¿!tÎ_qv½sÅ©­]ôÌíÏQÄYA])¢àçˆ éÊZ-œ¾Èùç*éúotôëüN¥üŸ{òvúóùÿFþúÁƒéíub¬Ü×_>Š.§)Ñåä?bý‰–[ÑC—xj2\y”nwŒW§‹Éte}D¹¯#mû'‰Úžî-OtšK”T`凿K­=Ç&óo?¼wÚ”wÛ™Öžs ÷õ—îë¯L}óliÔÖ?¸Ý;ß{û‡=ö]¼ÝÕx§öú‡ éÊZ-œ¾ýöÅðÁ{ìý­Ý?¨ìçåoÖþÐÖã|oÏmç`ùjo7¦·×…]€Yƒf}>÷.yQ>d°.§lÚ‚Y³>¤¿é÷)ë&Ï’Öõ6µðËeY×Cúþ†H¿¬»Ñ_ò¢ùúË)›¶Ì@úË—¾ù÷ o~ô °Î˜ëv^ýù«Î?ýKZÇŠEá³ÔrYÖ+Æ^X )Ǭ¿’Y_™{ùÏÖAeÖ·,µ\–5f}ÜáÙþ$ö''Ù[ÚZ-¼ärYÖØ¸Ã³1³þ2Ë!Õ¦˜õñA† ÒD»ÑÀá>>>>>[Ô››ïÀ `GJÿÑpx€ô€ô€ô€ô€ôØ*ügÝ|²«õ9IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/example1c-fail.png0000644000175000017500000003012612032647203025653 0ustar ebourgebourg‰PNG  IHDR éSÄÞsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ6$»+×^ IDATxÚíÝ_t×}'ðß̪çlÎî‹Î¦M RˆWô’F­° lÄ´³$ÖÆ2ŠD$«e· N³®‚ðOJÖf Ûž´ `8²B¦üS$uv‹*XqA9ZQùGLbXp”yð:(Õ¥Ž ‘Ð>‘/Û“®EÞه̀ IßÏáx1sçÞ;Ã;?Þ{1à¶¶¶ê‡G À@€€ ` À@€ZRM„ÄT+ÊóŒÙüKcwà‹¡¾ý(O®¾òDÖî¼0ݯÛϺïk¥à ”ÁJÆÄhƒç£±äÁ„S“‹Å2™„kšµÀàè|æ j {w¨D|ÉÅ^‘Xr¼£ãÀ ÊqãËËãûyùp Î¥RéM".Øc€%‰X„µù»V\s©H,1f*šÀJLZÜQ^54)󖵬ñ<1›oy¼ƒ §ÉLwæGç~)tœàÇó˜[”ÁxžÖVâwìvqœ®úÖx>ê¶FóÃNeÞÊæT-±V}S6b6-ÏDÈç ­š’½Ç˜Í_°Ì©‚ì©;ó£ƒs®Q}áV©òW¬õ^ìkæp/,AÈÄWRª ³R+ñL¿qœÎ>³lϯˎºFõâ4\©·š¤¦}Hµìí‰ëé;Ô!~ÌïNz½-ÂqºþiºÇ578¥/ eTË_¦AšÔòCXbU”§TkãòhL…±ÔøJгù³|6Æ(µ¿£¼÷wŒ-ùmŒQ*½Yö-Žëèì#ž_›»XÕcµ æ‹ò/ÊP\#E}{ÝḎ± CЏ²ÏÁÒX~ÕÉ}J@2áËà µW˜©T¯u™Ö€†r¨(¾Zãy²Ä(blJ³„*=ÏîRæ-×HEæÖ¢nkv’-;%§ªYo ~m-àè+±™"C^¾$k¯1–Î>íO÷ºƒSzq}éò'K7H³Þ@´–ŸpeÌ0tÁ‘t¥´Ö:Y¦I 1Œ`ÅWRDÔ×Y£˜:ûHœ%T›ÏkwåO„*õ§³O‹0ZâN×ï*?ÒS”!c6ÿ’Êü]í1VÇø‚ÏÆGÝ–‘pF´—?Wë¢Zˆ%TŸ8Ô\ë2­ ‚ÛÚÚB+Ôž` € ,@€€  À8_•såÊ´@µ¶··Õ,ñm´€v¡P¨(år#yüu ^{ýMœ*¸/¼øü畉‡³¬Þ‰³8aÐà¶··>¬LÇ"w€•švC€Pg°ö?À„ĤÅ2™ S&‚p@…Œ{ÞxC"î5MYF£#´q_ÔîU€%Џ¦.¢*° \â/ê³”Ž`ÌžUyO¹Ù§“’ÕÙ¶sž:‘Àƒ`ñ|Ô5:Ÿ)Œ±ÄÁ-k–8Ê%&Z,“‰Ä¤˜>ΙðˆÅb±Œ„3BvßLxÄbµZ-–É„ ä÷ªÆm¼}¥m:9Ýv.—…Ù±¢lä¡L¡ÃX˜÷½ñÃh<~|dÄ8|‰¿4,½+b¤á(ÕM&Såá)s·ý½›·KCYÚ¢£ç·(î-(§jMàþ°ú|>¿œJÊS9®c|yyqqq!èlgL>ÊÅóQW¬SL_ 8z|ä¾0d ÔœOŠÒ’Sƒs)ƒÓç4PÄU˜m9ñ๶n3™»í᫹c˜Äá¢UiØI™B!ÏMçj2™\¥á|(öwuõ¿˜™Y=ÍNÏ*®âÞá—“Éäå‰Ê“o½@òPO5$ nL8JC¥´¥pdö”³Š} Ñ,"ÓXÐÙÎGÝòÅXyMúÖÂÆlþ1“˜Î˜Í?Ýß$n“Jo B"!¢V½IßJDëé;d_^^^ïà8-±ŠÙ1qCš&Bc7Bó@ ™=««žã¤7.Í”¥9zÌ><€I´–ïQ‡7n]ªÊòk·—}à^¨0 Åqc† ©TJJØL§ˆ¨UßTÝa8Ngî2ð|4˜ «¼È=<×6›,4ÛViT6ÎyúÙ¦ÒnÜ*^°nũÈP lï®>‚ið H+á5#W’c8¬©œpßXDÄéìÓþ¾|¼åïãù¨«'¸n žºz´>ÍAgŸñÙØZÀ‘û aùíe+Åeácbí/¼/‹:u¾m6»ô»8…Z‚ÝWe?pgö̶;Yü–˜j2™NžËeVuˆtÞ<ém¨CYZ³gÕyó¤ÑhôwÖ^®œ*5€FÃmmmå~¹råÊÀÀÀöööÁ–éµ×ßÄ—=@ãóœûŽwâl(*Š ðU9u†  Î5f±¶··_{ýMœ@€U/>ÿùÇc Àª§_hP3¬Á@€€ ÔîÐCRÏÇãdÀ½,X­ä¡ $¦z\Qž'"ÆÚ‡.LÛuÚ  "õ,!íqE¨Ï·°°¸¸¸´ä&ßTBªè‚˜´X,–ÉF+ ÀR‘¼8·Æó}þ±Ž#"ŽÓÙgÆÅ×D”˜´X­V«Õj™LÇ:‰Iñ­‘pFÈ„G,‹e$œ4nCD‚ X¬Vk.rÊíX­VqãÜÏG]=Rð'æ&•Í2y]G ` B"!Æl&•2áw”·ù|6>ê gòyñQW¬s!èlgl-àèñ‘ûÂRs¾ùL6Ä©¸Mrjp.epúœЏ¦’òÌWȽt(5w1ÉqcK~cŒÙüKc'‰©Á¹TvÔmy9p€U† dâ+))ö2uÚK­ÄsÁc6ÿ˜‰šô­âëéþ¦&}+¥Ò›ÙÊo#ÆvD­z“¾•ˆÖÓòÌýM⎉•”âù¨kTŠÕ8®c|y‘4t€E´™N&È‚§º•‰º{ÝQž¯*sŽë»0ÔοpôöN&0- `q\Ggñ|4–T¾Ù¬7&ôÍõ,O³Þ@ŒÙj›æãtö™åeŸQÄ5…¥WÐ(™Î µ3qæÖž'&'‚Àq:s—Aн’±(Ϻ̺úMÀåòÎßÑ­§ ·5ùmŒ‘A¯ÃÇ à ¨?‹ÓÙ§—ôS=®€£7@DD6ßÂ8Ç‘Î>ãK[ÜîÞ(³ùfìºúHÊ?à°H\Àn*õ»‡VçŽÞ9f{eñ©w¬/Kî"û_Ç%q‚àÞã¶¶¶r¿\¹re```{{ûÁ«'¾‹öI(*Š ðU9u†  ÎŠ×`…B!4 À^¬ÁÂB%€ÚÈ×`*õÔk°` À@€°` ÀX` B&ÕÂgÂ#î(oó-,øl|Ô=Δ:DÅ!-í  Mñ•8¬Ø×Yª…Å1ÅÅÅÅ… ³]6Ö•œrEyÞæ[Xrw•o1yuäg§Lƒˆ›‰G\ 8z|ä¾0d Ôœo^>ãY÷F8p‡”I×?ø•ü×ÿ5™» s©TzSOYê¤H$‰%ÏèW¨ËÝ$mɘÍ?fª4¸’ˆEˆ¨UoÒ·¥ÖÓÁ¤œÿÊe¥º}Sîþ=ª¿0ݯÛÛD’ö|!_I1&F<6‰¬Ä3ýµ@c;ÐôºA¦láݽQ"b}þåñŽÊ97é[‰RÙê¤×‰±v}sAzE²³£Þ M…›µ¥˜Í?ÝßDÉV¢T*½I¤«þL•ªZÑ pøøG*XÊí¤eXkÑØEú:Ǩ9m J­§ã”jíÔq\µs5RXÀó¤í^[¼=×1vah}pnm-àè Ø| ãµÄX\Õùl¦‹bZcíp'¾B]î2c6ÿRg¬Ç‰Äc¦ÜØ2g!œ[ãyâybòê´ê›j¾¢Ô¤i?/beÕ”—5À=£ú¾ÖÇ4ˆË°¢Ñh_§‰ãtæ.ϯÑj—5ë ÒÒlm³{êÛs:ûÌò²Ïƈh/‹»«Ì§Yo(LÈORÝÛA2ñê2W WLg† < Îß)•³ dæ}s)28ƒ>cõ»¨êØ ûqñ ÍÏÁjÖ·3ƘM ¨šÌ]íŒI³KšîÁëé;DDÙà, T €ÊnoóÛoê×ÑÙ'H\ZT±0ªùh)|,I”ŒEyÞÐe®m‚R[;l¦Sš†—šúÝÎv–šó…3B‰œU«Ä«SºÅ4Õbï R¿F¸¬&s—A6>!þªav‰ãtýî!¥Ž^ñ“_:ûŒÏÆÖŸSnŸûì[o¯;B†!·´ ÊtF:PP?¤:NSTñÓjÊ|*>êîíuG™Í7c¯yz*·C2É®[¯ÜÈŽ>ž_×+s渎1ÏG]=Áuå>i:3ÔÎXÔÝëô×6²UÇ©O£4nkk«(éú¿Â¢–F˜´Ä:—j[^÷†jà„¯ÊiPEÀ€ûÈ!4Acâ8}fíp?Â,X° vÝ"÷×^gÓ‹Ïó½i:@Dz߽ÍÃø)BïÄY\"Ðh¶··>¼½½]Õ^_ú½ÿŒ¦ûöÿh€:BÇR—Þih”ÿkýíŸa–ê K] À@?€ŽäúÁCø&%@Ç‚ ð& cA€èÊÐø¡³Æÿ¤çSt,°`Ïýà!ôƒpð¾òûƒå7øó¿¼€Š cA€•'‰©W”Ï74c¶WŸzÇúr„úüKc&JNõ¸Äצlîµ»;¬ªí!þê£?ÌþQ3öøÎÿ·3-Ú¯ØwÕ«k2áQ¹§ûu§Ú+æŽRóqëU`yñäÛïãþ‹~¨ær*›ñU_‘Ìüè``Mlðö¡ Óv÷v,Êîe/}‹÷}jü-"bìÔÔ»ÿþ§O~åõëç/?y¿…•/&åubyy\jMÜà´Ü­6Àb»DŒ}öü5׉ÌEçç¾ùÍ~_ó5×ø©ŒÍtªµS'k¢\¯( ®žuñÎÊqãÙîñÂÊLxtp.eº0ÝßDwæGsÛïCÿËþk5ìÕ AUÍ£+±Åí:N2ó£S‰éa¸¡ÚŽ…ˆ„Í7œŸûæûtú|ÌõÇ ÂÆßü¾/ö—U÷-‚?÷óŒNŸû%Lñë/îÒ}sT= (‰I‹Åb™L(Â+AÈ„G,V«5÷nnãpxÄjµZ,#áL>Ýš5™(Ø8‘˜ÓGÂ!±Xr;ªàa°ªü‘°³Ëî~Lÿ¯³¯?ܹæ7Ÿè4ûÞ¹æë4ûÞÙÙ½»ËÞyåÄ3O=ùÌSOv¾ríî.ûp'ýÆó':Í_|#½›ûõìi1çÓ¡³Ï‡níì~˜5gwÌf%n,O©ãOU-–˜”zËd¢¨[³Z­–‘‘Eÿ–ŒEú:Mª¹q\ǘ¿ç׿.&•Ý£Ø}I‡³L&¡T—¨ìcåÝ£ õƒÙþ31i g½_òâÜÏ÷9úuÇqº~‡JÁJWõ›ìz©Þ¾Èÿý§ò?ÕÝ\“ËäõÜÑ“¹2(O_Ñ^¹Ö’7»öˣʊl¦SDÔªo/}f\ »sí¦¼cæ« ¬”´‹Ê=NµRꉚw¯kÇ®ýõ7S<ßwþŒL¸»Ëv˜îÔ·__+;“»²>ç7¾øÌSOЎ;×^ýÔDxžç8Ñiî4ûbwß‘º&©'¹æ7Ÿxæ©';ŸÿâÙlz¾û*õ:Û­í½#Úß«ŒäÔà\Êàô9 qM%óÇà£+ä^: ”ÿÚÅÿó‚ÎvÆ"®©Üùæù¨+Ö)¦¯=>r_2PjÎ7/v(¥Žð0X;Bµ?â_ÚÎŽp7þ“(Ï?6ò»ÇwILçùË/­|zá'/ߥÞø//Gøçü±ûOò‘?üò;»Í¦®Çyþ—KooÞÝî¦cKïÓ/¿õ½kwÙÝ!ýöëzê×wÞ=fò—têk˱+Wß³º»#Ä_ýÜÌûÉÿ•Çè­—^}·†b—ùÑÞ\™ðˆ;ÊÛ| >u„3Ù¾Ëåy›oaÉÝ¥¼ë—ޝˆˆÈÔicŒ"±¢›– $¦çRÔç[XX\\\^Ï lH]¢Ï– €Š‚¶¢î1IMæ.ϯ¥7‰ˆî¤× ]f]áÀ€ $bbÌ–/ª¢`Ê®XvP]ÅC”ñÿ´Sþ§Š{uÅ:sÍ%ÿµÔé“ofojÍ^÷Šp\Ggñ|ÔÕ3ª ”K]®ˆÁÌ—M™¢¼Ç©^K¥.0»×·cùðnüg—‰±“f£Ê»ÊÎ$×ñüå¥Ý¯þøÂW£ÿ5sáÝÝ'FW&ŸcŒ±“_[މH¾ËÚ⯎Eyþ9ìoÝ=L–.”~-ïÖöÞÕ9Àâù¨»··bØ+þyµêMúV"ZOçþÁbÌæèo¢&}+Qq7$& ™ÄtÆlþéþ&q›Tz³ìQ0‚¥åg—ˆç/ÿ±¥ó·ÿHøêÂÏΟnÊ¥3ö™?뜮-¿ÏØgž0²»Æ§{ûûåXzg÷£-‘øúç¡©<Ïó—ßþ¹´ý#-¿™Ëß3ôƒtöÄw®½!¢G›ŒG!¢õÒuÄÒ>¡_II!ˆ©ÓÆXj%žAȤ׉±v}³JDwÒë}sÍs|Ô5:_ÔMI]b‰ÈLµ{l2wµ3‰%‰h3M]æ¦Ú¦äJvÅj‡C=-÷ãü;å´ß\¤[@Ñ¡ôéSÝKµÙ5XUV¤c|Ùgc<¿pôV«ñ*‘Rò§Z©¢Äjw¯oÇB$ì*ÒKu&¹>çwNýæÝy„ˆ"?y7›.Ï*÷ë‡;éÖ‰1Cs“vÉn¶[úµ¬[«CGTç‹1›ö°—ç£î^w”çÅx¨Ü¥– X,½âÆÕ÷Y€K9EÈXßÿø'/ÿÃW{ŸùÖ»»ò©Ãl§vûV*÷«Àˆ(uóö.»{üéÆ(uóöî»±È'~ïk#2vå¯~°±{ûVêäÇÙ;ñ¥¿úÊ£Œñk~¶0sžÿŸ_íXày)«˜"'td¤¤`¢§8¾Š¯–±EÆqc†Úã׎Þ^q!„ÖXPÙ=6™» âý2“^W/ê^íáî°ò?{¿¹”>}uköÚ*Ò1¾¼°t¶3 Œ¢ *)*÷8ÕJ•©©–Ý÷£cQ °Jv&»”z]ô«˜UkÓohÜ]%«=vD5Eج7hýƒ„̼o.EgÐgclŸŽðÀÛÙªü¡ì,á_}æ‹ÝŒ-xÎ%v˜<}gWØÙmn~,÷+1"zì‘_ßvÙ‰Žçˆç#ïLýtᱞãÇퟎèï—~>ÿÓ…çž9ÆhgWØýØç|?þÙ˿͈(›ysócÄØx9²òƒýäo~ü¢¸e½~ªê=ÊGEjC•†‹’±(ÏS«^„q:ûÌò²ÏƈH¾¢|T»Gq RéÍ;ñ•ÖNe¿—›®Š% Öש±“¬xˆ²3J¬üO½n1ZNŸ¦f¯kE8N×?í·1Vé~EJ¤(ïqª•RK¬b÷:v,ùž!¡|W½3)ìsJ½Ö¸™Æ¬êÐL€•ÂçïhþW²êÿê< À`±j„ì¿t;›·nQûÇ£(}—í²¦ßzú<ÿ£wl'ñ“«<ÿèÓO|” ;»ì“OöÑÕ¿ý‘˜òÉ'ûxþïƒù£G[šäGùäÐ7º3ÏåvñÒ†øîÝwÿâ¹g>÷Ü7wãE/’;»ÕÖ¨ÚÞ#–”‚q™‘<4cöTåº)AHL¹"EóSELc~c…ÑÀzúN™ÈL½{l2w(»˜n-±"Ìtf¨±Hp^œ÷œFk:cªr +ˆ2iªvÀ£Ž·˜¢ÓWM³×aH¸èìOæ>m žMƒ¾9ìŠgY~EI!¬xö˦”ºÇ©VJžXÃîõêX>Ù?r”±¥ÿúåËÒŸpò[ßHîì–éLä}N©×ò_w™Éô,‰YýÝŸ¿x•çåéDë·7 ÒKuk¹Ž¨†Ÿª.Úz>hTgŸñ¥-î€Ã>k*ù§Ò1æï‹º£®žuƒøµ¨«‡^Y|ª¶£` ZR¢™ ˆƒäÑo|6JDŒ>ñ»ãýhWÇÒ‰1a—#"úègf_Lw½ö§–"f}åO?£%|ì‘£ŒýoúÄ“ÿ®i— Âoý§ßù7‘ï­e®÷³/ýT|Ž,s)·ïþÎw‰1ÛÄ[OgGŠRöŽç£îÞ(IÙÚüKcbïáî1›oÆ®Ëßx"®¨»—|~[Ä‘NEú:Ç=LAΆ¡ ÓýÊ;}Á#©È0ä£%½»âë ¬ñª‘™j÷è_35™» ssò•èWuöé%ýTËÑ "ƪºU¥C”òaMcTE'¨â-@WâôUlö}ªÇuŒ¹Ó£==kâáÚ¹+ÁtfÈ™ 8zÛC66‘UÁŸ¶¸½Ù5©LQÜI“j×’zMuÚv¯oÇBDô1ûWx仟}é{_²|ˆˆ>ý'KÏËÿü ;AÞçP‰× …]Ó'¿üꧯ¼´ò§ö'¯~úÊK+¹ôS#^™ùÞ—,G¿8òi6³¢–U¾[ËvDôÃ?ü·û?p[[[EI×?øÕ‰äA½!½öú›Þ‰³¸1C£ñœûŽwâìöövUóÀ™ÿˆ¦ ]üA½¾½Dz”TŸy¼ƒˆ“–XçÒxGݺà½<س¨lû¡¶C¼öú›Ïö*¿Í•È[÷ÅWå<Ù{;4~Ç"üŸðŸ9g×{_ý롎FèmT'|UÀ}lg—¡ê÷Hÿâ†.d?¶–^7èÏ4H 3ó¾¹5ž/ûĈ;Ä•È[Æ•ðÀTäAíX!üÜË1ñOµmÈÖØÈ} ,€ûX-#ù  úvŽÓÙgfîÁ´í¨³Ï,Û÷·j<Ä3¢ó0|‹óýß±˜ß\Ìa¤@» ü¨&X÷ó?š° ,xhþÑt,°à>í± б Àjp•´-ÊIDATÛÛÛ¯½þ&Î=<0’èX`5„ŸÿüáÇñ¤x0,ýø2б4 ‡î9Xu¤8ñh€ú:T*CÓÔFeŠöS„°` ÀX F2á‹Å2™¸'_ô-‰I˽; À:É‹5žç£±ä½ˆ¨8®c|yyyy¼ƒãÐö°@‚™®;}ÎvÆ"ÁùLvTIÕ²Z­V«5©' ™ðˆ¥0%Q%&»»]/÷¸¢<ÏóQWÏTB”#X‰Élž“‰¢˜,±Z­ËH8£^°ëì:ÆÃ`5˜äŹVG¿ÉÜe J­ÄïHñÍÔà\Šú| ‹‹‹âh“j"%§çR§Ïi ˆk*?ÆóQW¬óêUÿ+K~cŒÙüKcÊQ«LxÄåm¾…ŸºGÂy+ä^: ”š»˜,U0œCX D¾:câ8¹ËÀókR„•‹FócZª‰‚ˆEˆ¨UoÒ·Ñz:÷c6ÿ˜©bâ+)Æl&"S§±ÔJ\žƒ£¿‰šô­D‰åƨäeÀ„#¬“¼X[ 8z­V«#°FDb|Ãqc†Úã׎ÞÞÉ„Ê(s»×åyJ¥7«+Áf:U˜P6‡2eXOZ}\X\\\\\\X:ÛYn–ÓÙg–—}6FD×”´>]%±Yo ÆlµÎÙ5ë … }sÙT °Còâ\«Ã®“â!ÕYBÓ˜ßÆXQÐ#OÌî Îß©E­§›äv%‰’±(ϺÌ: !Z® :<ô`o¡ êh>¸>ä“§4™»ÚçR©•øæé#?°¾åy"bdr÷ëÄEî=®¢D"ÒÙg|i‹;à°H\ÉnRDQýî¡•Á¹€£wŽÙ^Y|Jþ®´»»7JÄl¾»®L™ÕÊÄ©Ø nkk ­PG˜"@€ÐØ Ö`½öú›h€j½øüçKXDä8‹6€‡œçÜw´Ežsß9|øðöövÉ Dò˜©Œ¢á+Â,€=R.²RŽ`ŽƫݫsaJ×j÷Šqø_1vz¦DúìªÇLq¯ì­ÓÓIy¦Ùœó0öøÄåà@Kƒ´•²´¿»e¸7Ç€=Ñ:EȑٳºêQ»ÇªD:Ù¥°j#ä8é«Dö|Ü÷=¡§ïiˆuïãDH¾{5EØòH[ÅmÌÝö÷nÞ–~Ù9Œ&“ÉhôÆ Ã“Éd2™¼ñ¸Wz+÷¢èµZq¯¸»Ñè½&Ÿ].<„ŠÃ(×ÚP ™ŒÙd•-ã^£7¾rÇŒ±|Εcµ¢ ƽFo<[Go<¿¬†ê Y­V«ÕÚHÖÆ­öns…0&pcÂa–^{n:W“Éäê, Ë¢‘ÀÑËÉd2™Lv_WÈM™CÜ;LÓÉd2™\]õ|ŠÌžÕÙÓÒlfÙ8ÆCÞÕÕd2™|ë:Œ9£—WÅa·R[†‡=ä]]ýÅ/ff ŽX6çÊáÕð‰ËÉdòòÄá|°ëøÖ 7_ÿºãj÷êjò­r[¨6,h‰®Š^T`…GMr£áÚ #eeôW=ŒÉËCÞìôàÆÛWèè""2wÛÃWãÙÄgŸ–æÍžY{ÙøJ-‡#GI¯ªaöäf- Çán…ÆÀQÙ²±R[ÚgÕç=Kæ¬á\į†íÎ"jpÚóÕ:6qÙc3|ïZ½Ù×åš´FWc,Õ5XöÂõèq¯ñj­å±«,mWÛ`#ä>’ Bnß|ï½K§L版ˆÑén)±­[ëú,ÕZ‚³^£ÑÄó§+«P~1~6+" Ÿ?ÏÓãÏjزڜ÷r.Úò­XðºL³@ÑU.qqq±ªë´ x:¼q³L9zÌ>ÜËJðR9˜=««ž’+îUm„Ã4»š4Å7öé¤çHÈqÒAÙA¬R[V›óþÙ{Ûàá °öÑöö¶ò[œ`Ôîú¿zÆÚ§eËŸ-F`hrâãÑ`)Rx´] Ùg:HO4¨þ»˜¸ðûý†ý8DA›×ùYqoÙÜT¿;¼Ú×Û}ZÁ¸·ºN#·ýÞ³Úª-*h‚« »øÍÐÉdru¶íœç¾é‚6BKü¥@ýË+ï¸Ížú?#Ãì¿ú:9}šÎ}-·¹Æ¦Ót¹Üö£:5ß,<^¹Ç(}ÖîQ1*¨úËcãÖc¹¯NÝûöûÙÕ`ÕõÖßmïæí\ã0‡Ä½Š‡šzã¹Ä‚ÿ¥qÙîq¯Ñß9ŒF“ɔ߶8χVô—o_i›NN· –.žÆÌó;~|dÄ8|‰¿4¬2Ò£¹F{ºaThökÒ;^R<¯U‘ž-˜¬lªåQoí¸WÚ· *»+Ë£Èp#ä(h4Ç÷o—ª…Öò£ ê—Ÿj¥ò‰×´»d;(N±Ê5Ptµh>k*—YÅó¥åʬêò¨xaçÿ©dвrW¡xûr%,8¹Þx¾šjí÷Vœ*[T؃-÷7¾-€äÚ×ýZö—Ûßÿ¾;÷Zz#¿IÁÆÙ”ãù4Ùû×¾~\Ìêö÷¿ Ûý¸"U™§ê¡K¼ð˜ÊâiÉ\V°â½ 6ÒV£¿ÊfW=VaÉå粸µó[ª¶¶üJ(<Çš®"•‚g_çß-}v«ÉAýòSÍAq¼ÊÅÖÐê×@‰«¥âYSݱ¹¯éo­âå¡å–7Oñò¿(µí5”ðx¶Áoÿ _øÚ×¾}­Úu”8dÅ¢€ûß¾ò‹Í-mÄJž‚¬2£ٕ@²‡ºo¼}…¤/Ì;â‘£ÇÂŠïø³ç¿Á&¿eüjØîh!¢–§ìËí³âZi“R”yªZ9=xcÂa&"³câ†4M¨ÌJ{æÙ‚•ž^Ñ\£=Mchnv ‘¹•+›ê þÛ7{ò_ÍTkˆÌžYö†Bž+Ï:ÌuÌAõòSÍ!~µÜ—Y×@©«¥ò,^¥•µ¨íʬxyh¸°U…â^±'Y]UüEo_ñÇ&.{ÌâïýC«7ûZuÛ–àꪗ<êC\¿Ø7øaöé¤ÇL´rÉõ@·o¾÷Þ¥S¦óDDÄèt·Ô‡ÍzFÏŸ÷©ežª‡.êăçÚœ«-RÎ6c0>à1+³ª)óƒTßfç\ø²5U=âí›ïµu·Ô± $†Â“çÚfW[.‡*wÙK;4>-—GÅI7oKa†aûìjÒ£mûŠÚòRÁër½Ir€â^£qØ>+[OVý¡Vý´ x:¼q³Ø+9zÌ>TÞÍÍžÕUÏFÈqÒ¯Ûré¢|æß¿dº”KáÙÃ<ТR¼j3?Xulöc˜fW“fñÎwµÊ#Ö½ ^yvÂ~îjÜc6DGŽ«å w…Ô%—G5ñ•x•ƽ&Óèã/¼¥>~µÏAÎFÈqêüû§§‹¾¤ñÀ>¡Ö+ ­myúÙÚ&6Âùe³ùé s·=,NÜm„åffÔŠQáÐñ๶Ùd¡Ù‚µî{È\rãVñŠÙ½Ô¨~u/WBåÌ1iÎkãÖêŽX0{÷‡«(O‰*ĽÃäðÌÒ°lGµUå zù©æÐòH›rÊ­|±kh‡òWK©³–K¯x™)kQÕ•™;ÆË£ì¦:éfö$“I/yÏ|)±}ÕvéØÊhô7™TŽòj<4 ÀÚÏ+è¼yÒÚ jv_5*>3h4™L¦SçÛò+_ì³—Ä1Ž^Î&›=³mçNšL¦“çdÛª…KÊ<Õ-¾’V_ôꎉµ¿ð¾\œUµ™ËË^ü–æÕ®ºOjkvõ*Ë{þ”Éd2=ô¬=É]Œ ¶··1‚Pÿ ¥ÊA¡DÂøÀþÂ"÷}bö¬bøpù=|-4ïçöXT¨F°` À@€°` ÀX°`,X°`,X°,X€ ,@€€ ,@€€  À@€€ ` À@€°` ÀxB(øøG^{ýMXusøðaïÄY-[zÎ}€&ÛÛÛµíˆ5Xu† ,€‡ ¹”cµZUÓKí‚,€rT©2Ñ,€ªc¬òÑ,€êb¬ŠÑa @µ1VEÁ¨3X°Ö`¨ØÞÞ~íõ7ë`í%/€Æ^""nkkKþûáÇѠÕÚÞÞν>Tæ=¨¹ Àhlÿz]§o¬îYÐIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/MD5HexAssertion.png0000644000175000017500000000436612032647203026014 0ustar ebourgebourg‰PNG  IHDR›•‡Àk½IDATxÚíÝMrâ8`˜ê‘u‡¬s’¬Ãq²îœ)“jj\ýY’m0æyV‰±…mð›O‚XÇ?þvá§h @¢H4@¢H4‰ Ñ$ Ñ$€DhÀ“ú5¹ÆËËËõ‡à¾CÁòá×±Ü&ñ ׇâ[å–Ï”;¨ÛøyöÉ6W£½üå,—c¸]V¨,:в-Ô#CYt Üûîê î“h}—ëKÕ&ÉcÐw›Ó• ö3~–ÉøNîX°m°<÷,“M DèéuÆWN÷µôòŸ™q·p]2':sm–ªÜ±Ž˜lJúk´Å«­š^j¡Zˆ÷*¸ãFrÏBç:ùPaÇr&w/ùaKÓîD»©àjìÆ* á ¥ß̾ØÐHá³×ÜC•nÍ)JþñÐÍ„M$Z\hÔ\®+•!åXLS…‡€ÇK´™EÐR)0§…\KÅàëu• 8؂տvÈ|×]|[È f•ÿóAã¹~eá¡òŽÍ9@oP¸g¯³<–Ù:À´P#ŸóE³ÂQä¾a—Û±¦Šuþ)5Zs¯þ Ê™Ügv}]ÎÜJj>匷*?z˜úþJ}÷³éQqMŽ®àIk4‰ Ñ$ Ñ$€DhiÿõùùéñöööõõÕŸh×&œGàîÞßßçÖhWåP\ÕårñBçóy^ç|||x9á™ýU§Ó©fÌ'ÀÖÕ÷Õ$° hšhñýo üãñ˜[rü¿xµà¡BS‹ìØâ‡¼ÞSÀÎ4|Ö9çÎýK]áßßßÉ‹|X¬?ºÆ.Åϸ¬U‡'M´\Ì ?7ì'gJNtR¾Íßõ?DLGÖ Y·PÙZÐBÓÂ!"s‰YÞDö¡×Ù™_CÕ6LôL‡…ãŸÑ´äõØáºmÊ©\o´Ps] Ñô¤q M ÇËㄚÜDÿ5Z­xôB$µNÍ»^6Ya-rå æ:žÉœŒÅŽ:Ki½Î¸LK†]k;kÇYyyPﺱ¹f\HŽŸ%¹ð`Èî›hArÍüÚì¬zqrr'Yô%«ÂòB`wþ>ÚðEÊo„Ô|°¸Tï2© ©`7ÆÃm5¥\ë À*½Îq™vý¹µÿlµH±–,‘ ݽrbŽ×Ÿ,ëîuÖì[.7Õw¾dÊòùù9y‹µU].÷Þ€'÷úúú“ïïï“qä¿ €ýhÀ~<ÀŠLw²öhçóùt:JöS£y€ÆÑ‰ Ñ$À´_Orœ§ÓÉ‹ Í|€^'€D¸¯¶¹ †Ÿ·s¿Æ»ÏP<^Ö=ÝÉÚqæ%Új´àîÛ㚨cv»™ÓßÅ3sM%·òJƒ­Jëìv“+êÁñšAÂn³Š6W£utú&g·kþ®rÍa ÑÖ–5ÚŠZg0÷Xh FÛ–Žò*èº*Ð@6‘7.‚êŸkX3øàB½-jãÔH.\ª:«i6ùAªÏ7áim}v»¥øOuxtf·ô:Óôg?•Þ޳æÎJÀÎí§×ê;I43ËÄ8 Ñ$€Dh€Dh @¢H4@¢H4‰ Ñ€gÕ?»Ý0ÇÒx¢ÌaI0S0?SðP0×ÉÌ©O𿵋bqæÙƒH´ãù™‚«z¥‹|ksÙ™[,Ñ®iU¸t¯ŽW먡™¹ì’Eâ ñæqããÝË=iýÂäyP¦Á†-¾Iÿïß¿©\Ê×y<gyýdbÖo^xÒú…ÉÈ~5Ýô©œfóW}sã_‡¦ÇÕY¹R›ìÖo;ž)½Rsz|× O.l}U¼5¡UýüM ½ÎE昜 =N¢8˜:z¯M{xm<˜=>^Ø‘›æm€û÷:ë{‘kÈæO Zˆ•Öühu‹ï£ÅãM}URa$¾).ƒŽäðD“ “»>>¼/¡Ã×××étzô/ÒëuûéâH4`?$ Ѷ§ù“ÍNj—t<¿¿¿Ç¿^/ŒWK®9,É-/?Qró\›…]|¨faßîUîaå YiaáEŸ\¹é%®ß<~tòÕçv‰Vãö“Úåâ¬ðæË½ kN¾¡‡wjåæ¹…¹&Ê5U8öŽÝ+ŸÌʲÆÂäñ–b2¯›Nxî•JîÆäkÇM{ã;Ê–s­£þz/‰^¶ˆ[ä¯åÌÍã«1yu•ZûOEn7úÎC_ªÞìûö¤þÕ¹åk'Ñ–„T9+gÞw»ò]òï¤ÂN–³à^{xü«òeºWy’{‡äzî…’¿þHËîÖëÜò¤v­½Ñ9Ãpã¿Ã“XMƒAË^´qG¬pZê¡ÊOZóŒÉ5¯OZ?J8y¼3OrýÕ„¾{¼q´\–•ZpR»\_r¸Túê‚Êq´¦Rkí7wý‘.µ{Íäòòù̽š•ýߦX™¹ùÁ¨ÿ£$Ú–'µKa´væ¼üS\hª>FWíÜÝ î˜ho=Þš±ÿÖÍ7xޞ͊ãhwœÔîû?Ý—ôã,.:’ÜCãxsweÚ´‡+U”…/ ôoòÒt&7/žÎæj´k07©]Pg5‚-8d–»kF”jVN¶Y¿yÇ®ÖÅüóPGË5’\>saò|Î?kŸ®ÉÓÂ*µüžf·»\.î½}^__.Ÿm^æf·ž‘Döcow|ü©KÝÉ$ÚœÏçÓéd( $Ú~j4/*<-ãhÀóÕhïïïN°‡D{{{s¦€$šÁ)à!G$€Dh h @¢H4‰H4€mûÔêe2#¿uIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/assertion/compare.png0000644000175000017500000001772312032647203024521 0ustar ebourgebourg‰PNG  IHDR$(Æå|¥PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<Û”XJ~ܰ Î²x½V^ÀrÞêºPÞöuÐ ‚e¾!|J{¨³Bu²Þ}\ô}g'u4,Ÿ/8fp|Á² œcÞ;{ð³K¾øöÒ†·‘Xg£öek~ >6Zgƒ'é¶ÑrĽ.üYaJ…†2þwwü ê#{IôoŒ7L„_¾|h’“‹§dÅ.½¶zxúÖ©{j¢¬¼dWŽO.†ößÿr¸ 7¦$½]^]i¯Ããòje•œ¬]n_6Z••ÕÖ 9>ª(ý®>[!ªN–7×.«v'eãÙJÈ'ïgÞò¯þøw×äuy#Ì“(±8/hÇæsl–5fY>O¢fAËRÀž'à¥eYSÖÍàY+7Cå¢Ö.âs!žý9¸2…ñ$¶ûWüwIõöÆ“Lr~ǸÓÏE¥ ?Ã2ùxÒ9ã~ãIyl[ò:¬11iùådrL:21Oê§éò0¥ÉyR½4?SàI}„æ<)Ås¼<|rOrô˜µTbëëº/,Ïü[ßy·ºC´˜µTbGÖu/Íå€y7?6DÆ£©˜!-öÍ1i¼Þ•ñ#ÜænúÏÀ“¯sa†k䈺.nï–Ç»åy&ó<“y nž Ï çÈ%Ǥ)ó$[æ{ÇN,ߣšk³Ó炘wi¸§”5ždSË*ˆünçÚl*óE¦à*×$ëÓß`?Nöx’Ÿ#)È#iyÜä\›–s­#s¶UTŽH1'´wű° ÍÛù9)ýy<+ðgª6šÝçÜ0‰þ=«Ã»­Ï;èýú?¯š‡Ï/Áñ³øÙÕ“‹ÏÝUø®W¡Ìqo6®šE´‡rÞ®ëV.>?\=¤‡•Ãç(—NÜçÖÉág*EûÊÅúUó¢´“¾¤ïçÄý úm€½ïÏZe]kõ"ú¤–é·k¼¥>›Çx¾3‘— íº\ÀØ WÆP<|‡ªð=y€!Õ”upæÄ•³&8_R4JsáQ××|¿Ü%^EØÅÜJçMCÚq?v©(ý6Ê|†>KÍœWñJë_Žx滼<«a’c¢_—OjÖ{ÄÏÉsÐ:Ÿs«‰¼~þÇÈ<\,¤œs;ÄRíy| òP²h>I}ޝãøþlŒ·‹åù¶xþJ·Æð|{4uMH_ž¤¯ a†–72À,…I‘µ6u‚õANI+lÁ$-·ž7â[âå óx‡ÇûÍ„u‚z^mۉ̵‰ÜÚu™cR«I7!‡m×6 Iyn…ž£ÒNÊ«Kãùqm•¿rVÜ(<ÞâIÿú ñ$>-<'sÓúü¦#ómû"×H?ZÞ\ž76Æ:ªÑ$¼¦=Ä“šR7ļ›6Ÿšc*‡­¨çyn±Î*y‘ð#m”]dÞNóÃós‡ü‰Ï±ù>ÿ|fÇH_ž¤cÒ$bÇa2”Ãr8&M,•ÂXí2”Ã2“Ô¸‰Â¤|I`RâxR3?ò×£§âIç[æ€Ig_Rð¤\Rð¤¹ÈáÖÁíý;ÙÓóáIér |HÙ½¿üà½{ï-Rï~}“ºµMÊ|}ãJ“BãI½ßªùŸg.ßøÇ?üÊŸÝþÊÿøÅé÷ÿú¿ªõë5º¯¿ÿ“…ǓǓN_yiñ|èÅݔժÔ{\õõÁjvxRï^øÐ½½šgÞªyäV ·3Ä“¶þéåÅó¡/ï~b0ê…î¤Ìð¤½2À‡îíf#Òe;C<é·/-ž½¸ûilòÁjždwg îãØÝøü˜Ýwm÷ƒ~’ÚÌQîí>‚kó$ÐÛixR°×ÚHÏw')GeÜ?Ö´õáK‹ß/é‹ïÅ1iÿÊpL²qŸ#Ìß&öŠäû?²º–wÒÏ9)ÊÔØ7ß/©ÎQiS×ÑrT¢/ÿæãä{÷Ô˜5¯—}ùûNÎG>Ø}Ìj^»Ùi ©yÙNŠñ¤ŽÜ¿ÖkSb‰¹Ž’Ü·6a_6—h±rÂV“3ŠAœœäIþøw4Æn¾qrÂ&âó¤ÿ`[™#O‚k´RFÍj›©x’Œk æÐq†×û1pÃ4ûxœ\ÄŸàI!L’þ繇܋»?«’·Óð$™SÒÂù+‹kÉým}n£åŸ”öòå+†k|ù²~FæI4ž‡’i«zÿŽÌÇéÇMÍÉÉ8·ä•>O"å%àI³š‡;'ïn“ÍÙŸ¡w73”@jwš²ÛûïÜÞ?:È–†ëãn(/€–g’ø[Ƶ:ž­Îl^KV«>í‘v¾y¼[ï6‹x·[B?Ìuˆ'!&ásÇe‰rŽO¬i×EË}ëR™÷ÕÌ53®›yîÛ<Ïdžg2Ï3™ç™ÌóqŸ¿|܇–r~m@¼ÆÍÙà‹Ût—-wom¢gYËWYÈPn¤é`ϯ†9DìÆ­É=–Ôø´ë¦Å¨éqmÚ8xWäx³ók›"OÂw·‡·^Uó÷~|ˆ’¢#Ʋm hn§Çµùùnƒoš¿OÓço‰w¦ŒIh}Rd<‰§´i‘£qÜFUÊ›¤X“X5øL=‹ÛuQ{Øû6V í°½GøqGØjþ°ÎÂ~3:¨tO ½»ýÞË=ܯãÔ]åǨAÍ·L)'î•ë'îêu@˜Có·}åÐ|vªÙ¬^G;l_¾Èí¥í©{úÌþ\lsòŽfrÏ’/^^ëûîæÕ‡ïí†sû|?7=‡u¤|¡ù7ËFµ6g8Ò€˜5IA}Ü®£åˆìƒI~ÞÉÒΟ$cÖ’bÏ ~L[°@Ú…ãÚô¹Â&äoÎqmóÌ3Ù™e¾Ù¥ã¦çwŒ;Ï3™ç™ÌóLæónyžÉ<ÏäY—ŒÄ»å˜”ó¤œ'å.ëæ×;b/7´ûº~dn%¿·®Œ³Ÿv܇h‡û¡ðñ)?ד%óÉùqz6úí±gOR˜Þç(¶¯[“b†âáÂû+ñÏþ>K±=•ü}•ü89½^¶óÂëG › &ɱn;iL»®í™¤a”Ub1t]¾—×8æm'­×EþÊ&Év}sÏ…ÿnüîœùñ$5o&òKù(¼(úy(‰ž·ÒHç~±ç¤ŸÏRŸÇSýÆòÅÉváþ“æy½ˆ{±æÆ“´86ŽnGŽ…ãÛBíŠbÏ¸ÐØ· Øbã~muÇq‘}ÞT{•×ÒïÃ8U³bqxvR{‡W¤z¼Ý¬y’rI —ÔÞ’1L ð"À±dl/ÊÐ^—:&}Ø¡v}÷–£A¹†‰óÀ$‘WøŒÀ[æ„ϼŒñrËTÜçÚDä@ +ðÁµäQhW—vÊFæ°,ˆº p;Þ—éC‡«Õ‰²ÅŒ'´×Z†çÚf:ž4Ò^k…ÆO2«¦G•¼G@o=»scëä¼j~-ˆ~]âù“×h±ýßÞ»š"Ò)æZàx΂û? iò'õ<ž³àþwRåØÂÔŽ//¸ÿƒ41¸<µ?‡ÀµŽáw¬D‘{tµü©csSú®'ù¶ÕúÌÐñcI;©òÜÁ¸øy‘8Ïq†äSâõÂP»Ä¼J^:ßò¸âh¢<( ìRÊÁNš¼»ÃÆ‘´}JÄšo1öƒ{8Ú¾$b[ ŽÿØrÝ÷à\L»©÷I‘BÔyØu>n¤„øŸÕ¹ªs$;©ò Á»¢Æ•ñ]ª Æ“ñ»±+~}dü™¿Sq»!{• Å$Í·î¿Â”ÿÄcífI| ·³¶âë—7¨÷áï_Ú8ÐD˜¤û¦!•Ä5TúšÍ 0ižÄ×p—äø¾§‹cž¯Ç™ }§H?à»tÀ®ÀË'æIï\Í?žOQ•‡úÇüž’ç>sžÄ÷á¸cE¾‘O©aYÅšÀWj–”w©Þg¼)=Or’Ë¡ÿNr¾ÕöW™)OâÏ´|Ƈ`RŒ˜&Ißl&ÉóŠÃ0‰?Û8& Ø„c7˜ß ¾G‡çykÀ±|\-šß$‚gãb’Å5Ko¨ó°+|ŽŽŠ½UÄy‰cy®sãIý¹SjÌ]Æèš2žwsìƈ0®0ž4IâIññ¤ôFyõï.þpû‚ý`»ûŸ¶ÞûA>ž4µñ¤EçÃ^h÷û+4OZtžÇ…þìÆyb’Â%S`’×j¶› ^ î?’(m_+®›²¾™X֔훤¯_”4ýKMÙ‡<ÿsSï}ézˆ&™“üë’Ä“Êk×(ˆQîûì2_»²ŒkSÖ›‰e4]^É4ýK¦ìCžÛ‚Ï-|>š˜ãSØ´®­•ך†I;ýrº1=§ÛÚz˜¶í-Òl.Ähµyßèk­Å=“ð~¡žÂ1)¡]»<^”aû2”y¼¬þàûßžÌ3›¨Óô/ê±ÊÛ™¼œb¿®)® ôËmx½Ò}ûUßÑâÈé¦$‰'©Ÿü™§BK1Kâ¦4d=î}\àØ ”)òa§í_Ã$"°þ2.Pîq!2G3–)=,÷^BžÉA<‰ÅH„Ÿ?»Œÿ¿ÄSÀ°k [À*þ_I*ã¸NZ©yÒ€þÅ Û0è«$ÊËüšH›Ê“zéxÑ0øRžQöy‰Ç%ñ-¯5Ûˆ?MnÏ>âORü%ðáãI)ú>Ή;­©ì}œt9g*µE;¥ÇáIù»[Šw·>›ßoY”ƒTãI—Îw¼ÛéYXŸD2±>jؼÛýó»•jÞíœÇߦ›w{p¾sÜ™Á¼ÛÒIºõI9&å˜4.&å<)çI9OÊ1)çI9OÊyRŽI{õý­ƒ;çWRñ$#³[ŠÍë'O"Œ=b¬r^užg2Ïé–ç™ÌóLž±¼fw}4o?íõÖüœ&õÓÿo:ïÖw>ê³Ízµ6²Ü¹íñßÚæÔäŸüúÿNägëAÿù·aón}ÇY.Õª¦[Û¤îHúÆ ¶?úù¨íê-þ~ ÿNâçpuúù“zµ[5·v«îަwxûí‘Û Ôâýjw2?Û3ÈŸ´õ€z«#Ëþlxeœ¶}å]þ~y瓉ü¼½:}ž´WóŒ[£Ëo¿=VÛ¾"Ƽv'ó³=žtçÓñÖd­`ûgW§ºÖêèǤÉö‰?X>OÚ{M´ß™îZ«?§½ÉülÏ Ï$|oÞ¿>&SüU˜4‘—ý+3À¤Çà9,íæSùùi“kÿ8“ÂåMhÛl{qŸ©DaR¬|6ñ¼ÒøÙ™AžÉÓË£^Hš&)‹Ï-£ˆÚQÇì žt%Rþ”­aûRÌg*Q<)ZŽýƒ¤ó{0 žôØ«±4©Eš¨;Œ°k7Á.jãIž-g4%½N ÚaÛVÛãŸ;-ô‰u yY¤oÅ“"åò ¯fýBó+ÛÃçNÔ› OнYtÜÆºiÕÖ1Ï#Jc²Fì B`ÒÏãm7ë똲!ü(A?UÌ Éë™ð{£˜ô Rþ”V~á|¤ÏØ›ÉLxR}³V ‰kV‘ãƒAÝl€Dl6%&ÅÛ®w×Í"ú~RÐHÑ\¯C½ôñY“˜-‡2¥¥ßƦ³.}F}Tg“î×7)Ó¥Ë*m£@¥À½¾‰¶©ß<é³x[)˜?;Á\!îë Ÿ›§‚'Ý”ãU—Zú•ç˜p^øî6žôÓzO—£mº=>Ž6\za;É“¢åŒö~ú:mƒ.üßë åCóC ÚÖ€ú¨Oi·-‡6JK¿ðœ)Ÿ13áIÃÓ¸¡ ~o]ÄüÞ@JmÊJa› ó™À¤Ë‘rh·a¶é먅ºðã Ê">½;“îGËeÛ˜ßnü¼<@Ë`Ò“^}ã |JS´kn4ÜÎëÔÅû¢÷ÇFØNbR´Ú=é5Ø/¿f®ÿþhÏý ?øýýÇà{~-Ü/h‰I±rÙÖdO¤_ÞÞ­'œÜã³àI¯>Ù0Ý‘E'Ó¶¯ü©àIOäç(5OºP¯¨Â³W•ȧ í¤nrŽL®vÔ3¾ˆÚ܉©aOâ&Wù,!vµåŒX5µz³™cЕ{]—Ê‹d…Sâ¹íyIlIx #+IóÛ§§ÛwvW¯g6ÃYbŒÛBÏ÷–-’dŠ'Œo€;ŒY8W\²Y¶ç%IÓê™ ·Û½‘©kæÁ ô[ôFæ#mÜ«5­”ð„UÆS#>Ÿù.ì ƒò‹d•1®ÄO÷†p‘P°yI2æÖiÈìVtšë:ùÎCÚ‚‘ñb½뻥^Ós»wqá‚IÔIšwù»Ç)’d±ÎcÕÚGý².d‰ˆ¨r^¼‹¸ 2FsVóî $<«©jï|m9á ¦ªŒ5D¹Û8õÚ;âܶöDîç˜xª1SÞMCG2g¦v´i>d(+}f¸šlZW#†|tµÀ$úòÖó‹;­×ëÝÈÔ·f¬v"ÊÊM¥ ¦š\ÕÞ‘ß%·‰ÑÖÉŽÂ9çJ<—3r"¬2Æm¡t.—Ïçóù¼ñ–Xx‘ˆj¼›‹+DDÙB·;ùÇZ…ˆæ¬Ó½U¨á˜Cq…3VM¾(›s:]Í•Iî:yqH*U5oh¥âX[(ÝõdÛl᪒d 쟊«Ÿˆª© §L;lœÓ»Z]ÓÊ…,)Š"V™¦Õ‹çÎmÖ™!n³Z©%Îmk‘å^NJK "»ÎÇ̆¶މüdÍÆy›aŽÛBÏO¶Œ˜h+}g¨—§MÖßÕ®ºÛ`ró‚ùíÓ|>ŸÙ«&ãGuM£iëUjéªöŽ8W\O¬b…”Åýß¾àœ~=Ε-y¸A„3Ô²ÒØg1¦9Ó!{Â×ÏÊ€/£áèù|•1óP=l0©Ú¡/å Â9UD\2cµcjá¨x^!²[g¦ béìh0pÁÆÈÂèê6Œ-\}Ʒ¹-”Ö÷¶€/@;4­´kú%…ˆ®ŽÒ*cd·ÎI’EH…šJU³/8-’Ź`g¬šJ©Db¯Á몑‘­&W7nBDOshõ̆{·L²n«‘zÉò»æoOæšg4º•Îc˜pîõØ^I}©ÖMþ î3O[爪â>)â“Î-]à V­¦‚¾$WvN¶æ%IÞÚQ²a•©ŸÚôÌOFŒÄÚ³övj¾ˆÊL£éc’¢‹K6YU#^ýMÖÿw™þ“—ûHظV:ŽÿÓàóø’4¿uòžÓŸ#2åÔF3³Ø=!I–åÈš­5ûØièF‘Ëüv.—n7tJ²öNvŒô'çÊÎÉ^À2”ÓÑuò=%ll+­Ç0áH¨¸¿ hÚ€v í@;D—gÒñ¹Ì¬¬¬\__б>,€àððp(¿CЦ1wÏ?ÿ‚ï €ÏÎß};lÌ29Äž~o€ÏÈõõõÔÔT×·+ŒãþC;ãíܪvˆ–B»%­uËÝ÷U,ÆY–eYv8bÅÁ;ÜgèÝŠ1¹c¨aoxšÂħÀgf@®4N¸>k]ÿÃà:\”CîîŒ^8Kñlñ"ê¼ÉZÉr—ão6¾è˜…15¼Ù^|ÜÜ6Ñëõ ߤÙú°´+¶odêˆÍÊÉFÉÎæŒ]'ðþM`±eý]ƒ‡——Óëàá*ƱÿR1æXÉ^®7oà—‡AG»ûpyt8dYn ѺôÏ2ƒ®+_÷ƒLCcŽX±e´¶ 4wp4·8†pg:§Ý9“¨þx\él­(úTçóù\:dã<N˜Û—… .±½š zây¾f§ŠÑý œXMVì¡xÈNÙpbpMðè«û)‡yuÏ~󈎽$¢Ë_c¿¯éÑ7_‰é‘3zq°Ä—·ýbìñûÐE¹\¾h:™õ(Å..Êÿþ;=K»IÇbwåXûôU¹\~õôízsñ¶Ö>c1ƒt*GTŸöuÚº€S&Ùï y+²15bN|4éÕ!iÚ:×hG4Ýìeô¯³ÊÖ9M äíÓÓ~HfWÒ1Š: ™ýæ½ÿ@DÞ¿YZZzÓxýàëÙ^áC7!¤Wf‰höë£D"g™@H· dÎŠÃŽÖØ¡ß íÒñë1Ýrè\ìb €‰Ö¢éåHÈÆ³áÍ#SwŒ4Ú—h’©q Þ,j ³+é‹‹ÐûÇB>f¿~9+ EˆŠEÕÓMø’ùðþÍ›ýMäj73¸TÁ„1ø¹RI²,ïíÔ<ád‘ßÑ[VêÅóŠ.+²Ká¼r^4t¡©ôaöé,§n<¸<­×gÏz¹æ¶2¢#D€Ï¯z¥&†­x>ÊÌF.§NÔ(­jãœUSAŸ¯{kÀ§ÓIšwù‰1µÐ¥ÓŒÕÞºÁn¹ÍYÍXíĹ2^Ü!Yû§§q…‘¹ïàŽüùÉšólxÓHa–vwKšf”;/”‰Ê•1û‚Ór{Ag9õB#úDµL~kGáœìV ~ˆàp¯ÿ |ïÄšð„SA_Šˆˆ”xn[’H”;¯¹#ŸJÄ•ø~Àr»ÓÒÇO½)yP¹·Ð,GÖÎW“© /É•æÿúï?ôRȾY¶He|ÍÜ:“['ýS€ÿg` P'pk@;ãp¯—‹‚Ї.ù$´å;î Ü:A¾í@;ÐÀ{øÌ u6]ùá»o¡@÷lÚ¸¾¾žššÂ3é€[ðÇ¡€q€vnI;ŒåF9òa©×ÁÀ5½tz‹u­žÙØÈÔ»rÛŠ1‡C6ápÄŠ¸Xè¯G›«ÉŠ=”­'‹¹¤ðÍWr£tXõ¼Ø,vU<§[-PÖgôâ¢l°·DE'.úkG­BDsÖi} ö·eº2{Â)0ú*wàc£ Êkþº³g ™û¹˜4¥v´ÙË»™v.ØLØ5­ô"I Îi!LÞÕŒÍÊÕ¦bm_†òAÖé é`vˆÇaO³Li»pU<¯P%ùB,¿6w ³g Õ3á¬î˵‹Ûš­P§x؉USú;åBÖ¾àœÖœ|>/Ú»ŒT͸WÛ—>\¦  ¥óÛ§q…3VM}ÆýYoŸr^¬kšè'j‹^-º—Ò3»Q/žW _Æ ³I²,ýD”-” éh XÄCÓ§íKåˆ? B9F;„|äré7›$É.…sªÔ>R¹µ‡â!çÙôÑ}¬Uü.¹¿•Ž~.C"Œf %­¤{F”ävûD÷–QOx”¶/Åô³¡•Y\& ©úmo§¡¦v-‰BÖ¾à”—ƒ~¢Êyñ¨õ»õOéèç2-FýÁ€E^ÌQ…ÓÀ°Ú±küZ.¨Œ}›d—ŸˆTU±ƒìò3VM¥Ôn}Zz¦ˆtIg •á<ݨɷùhÎæöRa®œ¾Éˆm_àt0¢vlE(îñx½^_Då¶Ðó½e=Ë0cµqιMä'!›éÏ6Ÿ%²f§Š‘1±öwü•TÐ7âozØbn©-Ió[;~ÆÔ°'ýÎNm¿æè=Ñ­§­kfßÄØ+¼š 1Ëÿ½}xÿ+\!ô¸IwÖ+ý3óãÏ¿àáh#úì§ØÓïñ¿p€O³À@P¿£ëëkT` Èw´ƒö4ôº­Âïátù´í@;Ѐv hÚ€v´0.ÿ uµhqæô‹IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldapext_defaults.png0000644000175000017500000016355512032647206024424 0ustar ebourgebourg‰PNG  IHDRU!èר2 pHYsÃÃÇo¨d IDATxœìœÙr[ו†7@ $’E'žÊ¯æŠ*V¥òn¾±Ë¢E‘Î<î3Ï8H*¢*ÑEÞ /¾Òiu"ú&íN;…u{Æú×ÿ¯µ)þüç?¿xñâ{ÛÛÞö¶·½ýÙwß}÷‡?üáÛo¿}þüù‹/þô§?½xñâùóçÏŸ?ç1›Í¢(’{ÛÛÞö¶·½ý™ïûQ%IE‘ïû®ëADZišMÓ¸®+Ú¶].—I’X–DZçyŸEÁ‘Ð4­iš$IX.*Ïó‡ÎeEŠ¢l·[]×UUmÛ–é¤iÊÑÊó|±XÐ~O¶•Y†Áº±›ëõzµZ±Èš¦Ù¶]×µã8UUÑfEªªfY–eKjÛv–e–eñ#‘RÚ¶Í\‚ à°±’¿þ/wo{ÛÛ¯eø“º®…®ë777QÅq¼Ùl<Ï›Ïçq×umÛišâ2ÇI’Øô}?MS¼Ïëׯëºö}±XxžÇë4MEÁ¹X–…ç].—ëõ‡ÒuÝl63M3 ú®MÓ\¯×@šeY´àû¾¦iº®A ëúf³¹¹¹±m;IUU›¦É²ì‡~hÛVÓ´®ëÀòÞgÕu Õu-¥\,eYfY–$ T…iš›Íf¹\†ahšæv»Õ4Íó¼<Ïó<÷xóæM¿RJ DQ”ëëk|:Åéš÷‰Š¢H’d±X´m›ç¹ëºRJv¹®k`À÷ý$Iš—eYìÂr¹lš&‚ªªt]ïºîêêêåË—]ׂa2ÈO#Ñu=ÏóªªATUUUµ( B“ÛÛ[Ã04Mû…óÁÕÕÕz½Þl6®ë¶m«(Jš¦Y–­V+N]UUDàºmÛÄ7išrÆTUõ<'Ã0äÍ8Ž5MK’$ŽcdµZÖØ¶ýöCÝÛÞöö¿nPß÷Ž5 ÃÅb¡iZQAdYÍ"BŸÏçUU–eÁ(!ÎQÁW –e†Ñu¦i–e%I²Z­Öëuš¦«Õ ·H¼/¥ô}*iY–çyŒ/ŽcUUó<ïºÎ¶í¶m¥”žç¡ÖÞÜÜÀꚦéºNUU0Piš†#‹¢È¶m×uqµøz†Ý¶íÅÅEUUÌHƒØÑxsuuµÙllÛ^,PÛ²,ñÚmÇ€(>4ÏsèEO\|߯ëZUUEQ š¦ù˜çÝÞÞ^^^VU½X­V÷÷÷ ²®ë(ŠV«•ªª€¼°iEQ˜òv»Í²Œà*I”EQžçì`žç,šiš«Õª®ë4MA``NÓô¡yA­t]§!Í€4<2Ïs"€_8€®çyÄ(eY-¹ªªTU…ðÍf³‡Î§eYïÞ½Óu]Q”  aY’$z)%”cM¢(ÒuHˆP ( 6TQHðf³™Ïçì  .¥lÛÖ²¬_ÿº·½íí×2×uQƒŽ#MÓûû{D!ÇqÇäLÓ\.—www)%š$>ÐÂ}DQ4ŸÏ¡M‹ž ²¹®[UêÖn·£_¯mÛ8Žñ°´œe™išY–c`-@Ыë<`œMÓ8Žóã?æyŽðAÛ¶EQ@2¶Û-"-ÜÅ¶í«««º®—Ë¥išUUI)MÓL’¤ª*:¥ßªª °Ã0-W«Nv>ŸÛ¶Ý ›À9XÕ€Ëzž§ë:@‚¶&¥Äõ†A¢( _̲¬,ËËËKÇq®¯¯AwEØäf³1 ƒÅg –e- ]×Q}é—Y–µÛíÇQU5MSX”ïû¬RïÞ½ƒsƒÍP·OÎkµZ½yóF×u×uïîîlÛ«ÀÎÃz½F_-Šâ¡ó‡¾JÖ ø¾Ï1€«]ÝÜÜdôðõzM Cx¡ªêÝÝ]†××כ͆u] !Š"6º_U°ÍµmÛqœ0 ˲¤#PŸ÷{Õ}o{ÛÛoÑÐÛ¤”¢ë:!„âââ!2çû>麳³3xòäÉp8ä5>þ‚ªªÞÞÞ !ƒÁh4£A@Íû|÷àà€xù LÓBÐøï~÷;>}ôè/š¦“õÚ”aˆ™UU¥ijY–BQ”¿ýíoUUA‰ }§“ÉD|°ÑhT×uQ¸Q Ñó¼¶mW«žÇJ: ª´\.«ªBþEdÖMÓ ÅÁÛE)Ë* 7å»È›ˆi}25I’4M‹¢ïÛ¶­ªj0 áÂ9îïïW«•mÛ‡‡‡Bˆ££#&òìÙ³º® ;+ã8.Šb¹\Â5»®c§—Ëå›7oúE>::"/+¥4MSJ‰F ØC’>9¯ªªú½#?'„pǶmˆ,Ò%ðö :aŒ¤Ï ‡a8hrFÓuÝ_8ŸmÛ !ÎÏÏ9-Óéôôôôðð¹âÕ«WEQ<}úTf§izyyÉF!ÆãqÓ4t'¥¬ëš¾¦Ó)ë`YVY–BˆÇ·m Cý^»·½ííÿ¿‘Ùñ}_†qrr"„Øl6(rDú°"ß÷§ÓiÃáp<ãkÎÎÎ\×EÄ•{ž×»0<¾ï¿}û|:??ÿØwã•H :ŽóäÉ“ñxÌGGGG£Ñèøø˜?i¹×¯Ò4mš¾¸X,×ñx ATU'®ëz]×}wBˆ/¾øBqzzÚ˜eÙÍÍeYdDÇÙn·ü¹Ýn‘]×Ýív———À0Ü«mÛ>3¤ëúb±‚àîîN×uÇq–Ë%ä¡AÀe©ë‰¢h¹\~\ÂØÈ\fY¦ëzš¦@/kûøñcžé_œŸŸ3÷ €"R¶¤ú–Ë%¥1|åì쌕ßl6Ì·ªªëëktKðNùÉy±Ú£Ñ(Ïs€AS'")Ë@½¿¿wç¡ó'„8>>nÛöåË—oß¾].—išRÒBò²,K‚˜OžOÓ4§Ó)PÚÇUý±¡¬†?·Û-ZY–¨Ç¬§çyƒI)ã8žN§´á¾¼¼|ûöm?Sèéÿö¶·ß´á:Ç}DO}JEëõMIJ t=yò„jçƒñ)%Y(¤6!Ä`0Ã@%éÿƒDA@!‰¦i²““ÜYÏ*HAI)}ßﺎr†²,g³¡:DJEÖ뵮븿²,»®ËóœHŸô[?¤,Ë^¿~MÙ!;™LTU½¿¿ŸÍf¯_¿¾¹¹¡jƒjI(•ŸÔ^ÂH¨‰€¢gE1ŸÏw»ÝÝÝåÈ¿]סÈQ˜J~ jõ÷¿ÿýââ9Lž2¢Ò`TpÀG ÃÇ£Ñ(Š"2‘EQ¨ªúøñãñxüóÏ?SÞÉZI)¡Œëõºë:zg…]×e Y–Ù¶=ŸÏÙnLMÓnooçóùCóRå›o¾ ‚ `yw»ËÞÇ–eQìúÐùc0­ãÏž=BäyÎî ŒSêù ç\ŸN§¬yQQžž²ŒaÞÝÝ !ž={FÈEæÜÒ,j'ï¤iJÌ'¥|ÿþýO?ý$¥$Ú ˜‹¾ö¶·½ýF ñÓó<¡ª*Ä‹º.à”á+üòÛ¶µmÛ¶m í\×E‹+Ë’œJ¥–)ÞŽŽŽPºÐ'=σœ!ÐáI¥”ÔIRÇ(¥Ìó•’ø ñx<ƒ `ð=ï$[©iÓe*)¢¡ä¡§€‚îv»ž7ðL_ÿ"¥hkxFr–Ò“'“ IVñAí!'MSùœ>9/>‡I’ ‡Ãž£³ïRJ¦3†ÃáCço4 ‡Ã8Ž)a%x:??7M“q’éDAíc£>ŸQ±õ¿d1™ït:%,cU©yá>JâC`Ç·ú í—ež™ŽmÛûË{ÛÛoݸéäyžˆãÁ_É]x\!2ÑÇn´#Y5NG£e ýë_¿ÿþû'Ož>÷`KôÛí¨Ñ×4m<ƒƒƒ¢é¾ä©$IlÛ¦,…Ë‚xU2‹ÓéM,I’-z/ èœðû 75‡¦i3åÞöP­O„50€'!v½cEc­F£õóù|2™ð ’#¥¤=á*„Œ'ÚT!£”ݺ®;F£ —¦i_ÒI#øý^¯¦ÇÃÃCù!þ˜L&=Ú¥iʤú„"ÂAyæ“ó‚o}ÜÂÇøÇȃ1Óááád2‘R꺎tÉ3@}DÂáùâ‹/Ø,ˆi6þù|J)ŽŽƒŨT¾ðüp8DC çç犢H)‘:i™Ç¸#A¸C”SÅǹI ©‚ hÑþ]¿Û½ímoÿº!1†a(Â0$¶¥ ‘ëÕRJÊázoeÛ6arq ŽŸšÍfÈbRJnƒO ‘ªª}Ž÷ÏÏÏ{ÐêF£Ñ`0àÓ tÁL+qñHdQýþ÷¿BÜßßSGºX,ªª‚%Ð`ßòùù9®m8‚.ëõÔAý#öŸL&(«âCá Ò+¯ƒ×?ƒ¥yžÏf3Ã0 rå×_ ”.—K×ué—;æBˆÇÓ;Žx4I){˜/Š¢¯z­ëšÜ!- «ªºÛíV«Õ|>ÇÓé”,,Äåñž»“³dõþò—¿ød"”½ôc0M3ŽãG=4/¾øÙgŸ½zõ* ÃãããÑh„šªi½Çq<›Í^À“C4Ð4 ·bLi<;à:Ÿžç ‡CJ®NNN&“ÉçŸÎó¦iÞßß¼‰gggËáp8™LxÍ­S)%Gt·Û!Ûrü¸wÈý;ÿ¾_îÞö¶·Õþÿ’$9::‚mP4È]=’I¤úŽŽŽp¦i–e çÃÇqL%!.Œ«è}ÍxIHþÙgŸáA¾üòË>¢·,KUÕõzÍ׿úê+üÎh4:;;ã55¢4Ê¢þõ#ÄU‘®£>W.„888899é•:JûH~ÞÝÝÍçó¾Ç+}P8AbÈ×éh‡[t|ñââ‚ ŽI’ðªøÙGÓÎéé)µ0}U*nª:›Íâ8&QJ5 %*, ¥ † ¥œÍfïß¿§©ÛÛ[ÈYOqú¤9£(êÓ‡p þê_Ø_Þùä¼z ô»œçyO¼NOOÇã±išh˜¤B†ÇåEQz0v]w»ÝJ)ONNháÕ«WLê¡óÉÿCYìÓ§OùèúúºiÞ'¿È“ý^£É÷L§Sî9Ð)e>º®ó?"úc¶Ïÿímo¿iûüöb±ð}ŸÚ})%¢®kœ5Úa»ÝªÑ{%ÔE7ñ‘¬'>Ô1öÔ­ëº4MøáþÓy>*ñJ/_¾äÕö‹Åï/¥DË¿£ž…a¸Z­pL=Z­V\çÿtðIpÜT±{ÿÅÞÙ=5u}}|''É! µ¥N§£ÿP¯Úé¨UZA‰(;ë´ýƒ¼éM­µFMŒ€pÂK@C”*U¬á5!¯û¹ø˜å m­-òüÎ÷Â9œìì³öÞq}ÏZ{­µïÜ ÃH¥R=ºqãÖ˜…Šü$ü† …âñ8ùs‰D‚a²¿ˆŠ¼ÿ~4]ZZB+¥ð¶µµÉTø|>ˆ$¼ññqÓ4q·µµa‡Áªn²ñ†ÍD¬?]ÍÎÎ%$á?J©ýû÷G"‘H$bš¦ØÍ¼ ƒÁL&366o;CAšañ)Q—^¯·Ñ¸âñ8ƒÂ1ØÒÒ …†††ÈµH$ JÀ>å½{÷ÆÇǯ]»kò&Dòbÿää$¢n¢±ùùy.¹¿åï“QìÙ³‡Š<Q´‘‘(•íx—"°kïÞ½„.ó'ž[¨Ÿí ¿B6*íìÿ^ü¼ä?‰ @w PÕ“8o±ä +Ô1 Pè/vëÊ+ ‰ÙÁq3BÑhtppŒO,‘HLLL\½zÕëõº\®¹¹9’®?~L€Û”ýL&“@À0 v3™ AžÁ`ð ‚ãÉÓ"(/+4Ì’pa™###HN yÌŽe‹¼À‚Ágš&q†âÒ„‰1ì‚ÁàÀÀ@?ï ÈOyLGâ } Jf˜ØÔææfJYÎÍÍ—ˆ©Ä”²@¼‚ qrÎÌÌð*`š&ѽäþ_½zýî÷û©ªsûöm–ÏårçÂKÀàà „Úh\333Ðѧ´”vŲ,Ç#?â}]Éd2?ýô“ôOº=’ÀR†aðEæ–Ð*¸yËß§°8YíRUnrròáÇ©TêöíÛ>Ÿ¯¹¹™P&~½Ä ±M¤F³=ITÀþ_&“A «ž1éÀƒ]Š—üGÒžÛíÆDÙ*¢.QÓ> ŠØ)Nc±”W®\„àJÓ²¬t:===}óæÍ[·nI™4 DÓ4)¼ÒßßOÍ-*u=|øˆJ*¾VªfÇb1øÛªGK"9{6^¯×ëõRNÓ¾ÿäñxÞNB”JA “N êÁ/ÄG(¥<ˆ÷U¾HÖñ)Ø.ÔÞt»Ý^¯·¥¥e||<òQ6›ýå—_ Æéééùùù7nÿBeÆ(+[{½Þ¡¡¡ÁÁAdšfSS“Ý_Í„p½å¸Òé´Çã ‘HIJ,&‡ßõe_JÕ(¥¢Ñèýû÷9„Á"çF)¯×{óæMbY Le˜¼9ÉV"„Äõ–¿Oö/V]&“‘͹ùùùl6{åÊÙ¼Ä):77‡Iøñüü|,Sõ´ªÇáoà¹=bã“uawçþç:pààŸâ%ÿY–¥êÞK1u]‚&E¡M()BN_asõJ,åèè(¬&!8Í,Ë"Ã’à´Ußø±sƒÛíÆP“0X,677‡Ýã÷ûù®<ˆ„3ö Ù6ƒ±ð}Q;³FȃàæÍ››"(I¾H•H$Ün·ßï'2vxx˜Ù໒؀텡L·ÛÍޕȦlÞ62á,ËÄj~Ò?oTªîþ%|”làdX¦R)Ö}hhˆÉÁòvâ?8ØÕx%þs§…Ù€°!!2áØMÜi¹v+xš™™ùùçŸ9Žãr§åÚ ¶úÆÆÆ‚Á ø`ó8ØÕx%þÅÉçýSpú®ÿ¨½ÓríV`NÅãñ……¶™1¿vZ®ÍÀš”|¢Àœ0ìj¼ä? ÝiyÞu!ÎÞÑÑѰ¡åà @XÊþýû -¡zÙN µb±ŽbŠíݽ{—(›–ËoŽWì?JC9ØØ(d/NIÃN˵[Aù¶9º¯¿¿ŸCˆÞ)<~üXN l‚³eàÀÁ®ÆKþã„ñ–g€òÊÔ~ãÜó–hƒßÑ:ýýýÉd2“ÉPîõÂÏ?ÿÌ1¿6ŒŒ<~üøäiüu¼ä?òóvZžw¤ÍMOOSì†S;à155533322FÒéôààà7vZ®ÍàLàëׯ ÌÍÍÁ…;-—Þ¯ä?dí`5Áá®É”SμFGG/_¾LÌ‹Ôb}÷Õâñ8Çc Q“b§;-—Þ¯Ôÿ$'ÏÁ6 ö ¥IHã°Ü–k·‚C!¨Cf/´¶Órmð&“ɉ‰ „’î8p°KñŠý'‡ ¤Ói*O’ÌþãÑÉ;¶,‹”ù[·ne³ÙH$«ô­[·P1–eIòèS©ǰQº…¤rzà"êf5jÏC©sÆq9 ›T}²úݳ,khhèîÝ»‰D‚‚g¤çãïšå 8ò¾±ÿRÿ28ãb``€Š3hát:Mi$§f éçHKi7tw<§+*ÅH?œl°eûFëÒHN9}>g³Ù¡¡¡‘‘‘¡¡¡7X_ªQÓÛÄÄy–ֽѸþíuqàÀÁî¬wçÎÅÙ¤“““wîÜAye³YJ`¼E?Á~°”“H$.\¸püøñsçε··ÿý÷ápøÐ¡C===çÏŸ¿páBGGÇÑ£GÃáðÑ£G?ÞÕÕÕÛÛûùçŸwuu}ýõ×ß|óÍ‘#GΟ?‡¿üòËFí>üí·ßvuuuwwwwwwuu}ûí·‡>{öì±cÇΞ=ÛÑÑÑ×ׇ>|ñâųgÏvvvžééééëëCÎÞÞÞ®®®ãÇ#yGGÇéÓ§»ºº>ûì³3gÎ|õÕWáp!ÛÛÛ;;;ûúú.^¼xòäÉ“'O^¼x±¯¯¯³³³½½½£££··77jßh]Éùé§Ÿ†Ãá®®®Ó§OüñÇçÎëéééììü»ë{äÈ‘ÎÎÎsçÎ9r¤««ëèѣǎëëëk´îÆõo¯‹v/ÚÛÛûúú¾ûî;•ÉdnݺE4ˆ©EÄÇÛâ?ÞÍ-Ë¢Ì6Ö¡C‡´ÖëëëZë?þøCk­µ®V«ëëë¹\Nk]«ÕŠÅ¢Ü¯ÕjZër¹\.—i µ^^^ÖZoÓ^k½´´´éÂŽµµµ••>- ȃ`…BAš‰„éÿ_EµZå"ŸÏ‹lö6¥RIk½¶¶¦µ.—Ëü©µ–q1pþ¤}¹\æzËöºÁºl/j¥R‘9‘©û»ë»´´ÄŽtµåºo3.8Ø?þø£¢Â$ž+Žâ礷·¸ƒKŠð9\ˆããã§NÒZW*mSv›€ÞÌçóºÎ›X§\.Ûï¼Þ~“BäO”2ÿŠ pV¨T*Ò R©¬­­Á‹Õjõ?Pµp“ƒ}ú4¢<|ø »½õûï¿Ë5/ûúU5º¸¸%¬®®6j¯µ.•JµZ ë¡V«‰­S*•J¥’êÔ)Å ì‰D‚“îÝ»ÇiÙl–“Qß îÝ»—H$ öã@ƒŽŽm3³ e‡â³|´yúô©¶éÓFíí&ˆ\Øo‹ÅJ¥y ñ+¢U—––ìÖ!ùn¡Pø+¬ðÏa÷Ùb'­¯¯çóyî3LÑø…Ba“$4¹‰/kµChÔ~ËuÙ^T^)¤¤ý[ëËü‹Ãóu:Ü´îÆµ½œ8ppâÄ •J¥ˆÿä¨9Âc†††úûûßbüçÔÔÇ QòŠp˜/¿üRHHk]*•ìú»Mt¨è5TdµZµÛ´çß\.ÇÖ‘t"ÏâBx.ŸÏC'Ò3 ²Ù,_ü/=lvöeàö§3¢jµÊGÂOB™ dyyKhrÓ>èëí·Y—F擯kÛKÆëfÝžè IDATý4Z/Ë<‹l[®ûöãràÀƒ×Q«Õ*•Jww÷‹Õ¤š ZõŠ'o‹ÿàÔ©©©±±±X,–L&Óétww·ÖºT*)¥´ÍzxöìY¥RQ¶óf[[[%øBülJ)ôiµZmÔ¾Z­r"Ás®žðÖÖÖx(½I‡ëëëÁ`c ø×ëõÚ½ÕÆá[‡aÚFlˢª” …BJ)™8:±›†ËËË------P7i€`ËöºÁºl/j¥RA Ã0„êþÖúV*Ó4¥¥,n°îÆõOçÝÿ¯Q©Tzzz^%jYð± $iI¢7©fñx¦äÌšt:Í ãwîÜá0÷»wï^½z;orr’zQä–ŽŽ’G±ÞÞ^Ô¥ÛíËáÊ岨9XG)…AÀ¿J)È•·ºº uÝVÛØØp»ÝèA(„þ%P°R©Àšb: d¥ÿZ­ær¹´Í ,‹ˆdläq+++b–ñˆZ­&®TÚØ÷¹ gI¢[%Î2Ò¥%ri™Ïç ×fù|ž'rßårÙ[˜áb±(£» y`&>òz½v™íNKúG¶jµ*«ÃÂåóyfOk½¶¶ÖÔÔ$K ¶õ–ëU«Õ”RÂ÷,“Çãi´î2!öp$»«Ü^G¥R ‡ÃÊår¹ÝnÓ4­ú¹ärΙªŸüÎÛ·o»Ýn¯×›L&9ܲ¬l6Ë9ÚÔFá\›ƒò-Â>åôp ÁÙÙY˲FGG;†òu»ÝÚÆ˜.—kS¬£R ½´´„zM­µöx<(w‚MÓä¾RJ8‰;èk® …‚Ëå’ãŹùüùsiCFÿ¢²u]˃õõuéY)…ñhæõzóù<ÃTJA«««bV ½år9L:—Ë…r—GØ7´ †€…¥Ö××ioš&SÁ¸x( ˜\---²Ù†ýT©TVVVöìÙwZ­Æ+¥Êår>Ÿ—ƒ¶Ù£uÉl^ÛAZºnÿ‹EÖN ÖmÖKËÌ6ëžËåÚÚÚ„ðì;¸8pÐ/øÏ0 Ó4•R@ ¿¿ßï÷†‰D<eYÑhttt´­­M)5;;+n·+W®8pýøôéS¥”ß˜PJ555±wˆÏpzzšf333”œ£–N§Oœ8¡ëz™ ms*ŠŽ#2SkÝÜܬµ^XXàS”²ðíWWWÅiöÇ Çñ§­¯¯Ûƒ,Ъ---° _·.ºÝîb±(*^Û ÉçÏŸk›ê¬ÕjЮ[KÁ` ±áf¯×ËX<(Ü|>¡–Ïç?úè#ÚÏÎÎê:+c)¥ØD¤Á³gϸFG»\.)[[[…~0¹´ÖMMMBTâ´s­t §–J%{ć äuwßÚÚôóh¬ë\kï–´E]÷ ‹Å÷ߟIÞ»wo¡PÞb¶‘ÓîF”þe7®T*™¦)³-cÔZ»Ýn\¯~¿qqQ2èå¢Ñzñ{SJíß¿Ÿ?­;£°Ûšvϳl‰—þOÃ0‰„Çã1 •9a¸d2ÙÜÜÜÔÔtåÊL:²×QL‰DbxxØçó555A¢BÍÍÍ^¯÷Ò¥KT:¾téÒÔÔT&“¡²èõë×ûúúDYcRÀv€ÖzeeE¶¾`Gô&þC·Û½¶¶V(p`ºîQôÔ¡ë»w>ŸO×)Yžb/›"v OCùÕjuyy¹¹¹Yl)Ã0^—™ŒžÅü˧¦iâüÔZ#ª0Özii Zòx<1–™iš<…à+¦CÉ|jü_… â`þ4þç8  ‚ ܼy“3‘ c "¦ÁçQa¨1Æ3HGGGñSEÇqÒéôÔÔ”(Š˜VM’¤ lÛFþËíÛ·Óé4O4å#mø" -ä‰*x¢†qðp̉?Êïß¿ÏÒ`0€7…0#.7J EZéîîn6›Ež¾uûöm<ýyyÀ`0Èf³04h¥#{{{Üpàú`Ä‹;¼( þì“øÙmooóº ùá>gÇgQÁ><Îɧj㇫ïpµçŒ1œ#w¢ƒ!µ†SÄ8"?úôô4& Å@]*•⇞y`ø‡‹ðøç<îÊ÷·÷ëÞ½{ù|þöíÛÃÓ¼aŒöoï;!àö”ß ‚ ˆýø?ýC1ßaƒ²?AÂ0D„,Ëï¼óÎ`0@ÕùÞÞÞ_+ä^\¸ýâvvxJÒ—ö0Afooï‰ËD<[¤…–ó,P‚ ˆýÀ›ôéÓ§&äú装……“'Ož:ujaaáÔ©S§OŸ~ë­·þë~ï½÷ÞÛo¿ýÁœ}š9ŽcÛöaëŸçyXùÏ0 ¬2A±XÜÛÛûõ×_[Xç%xG,—ÿÊ«è^Vþøã¯áš#óñ<çG âA*;;;wîÜaº®þ¹®+Š¢,ËXVBUUÏóâ8n·ÛŽã`ÑyA07&Ú~¡éõzXF±P(xž‡åŸ Ãø¯ûuX8Žãû¾¦iý~_QUUËå²ïû‡}Ü¥¥%EQÖ××1µP»ÝV¥Õjöq ‚xqQUuuuµ×ë1Ó4ƒ 8lýÓu!PÔÂc}AUU%IÂrH°¡¾ïA ëºó‚S,=ÏÓu‹``Û÷ýÿº_‡…,ËÍfSQ”¥¥¥õõõ8ŽMÓ4 ã°Ûëõ°´–(ŠabÞ"˲û¸A¼¸´Ûm×u-Ëb–eÁu*¶mãi¨ªªªªŽã˜¦é8ÊáÇAE„a¶mÃ*½Ð躎ÊH^ïÄŸÿº_‡…çy‚ `EQªÕªa¾ïöqeY–$ Ó I’Ç1ÒŒû¸A¼¸Ôëõ(ŠJ¥ÒÕÿAÄó€a¦iZ–uDõAñ<ðHÿަþ ‚ žþäÿŽ þ ‚ žéŸs$õAñ<ðHÿô#©ÿ#‚ ˆçGúgIýAA<<Ò¿£©ÿ#‚ ˆçGúGõAÄ«ÕÿA¯"TÿGA¼ŠPýAñ*BõAÄ«ÕÿA¯"TÿGA¼ŠPýAñ*ò´õ†a8Žãû¾,˶m»®«ëºëºÉd’1666–H$FFFr¹\±X Ãжm¬êDZªª¦iÚ¶-Š¢çy•JÅ0Œ(Š$I Ã1&I’ã8𦹮+Š¢®ëq3Æc£££Œ1Ïó† ¦iv:A°X®¦iæCÛ*BÇ‚ ‚Ðjµc‰Dbtt4N3ÆlÛÖu= C,º[­V=Ïs]W–e·\.GQd†®ëº®W*•n·[¯×}ß÷<Ïq]×ÑáJ¥‚ÅÜc¸,è*v¯T*®ë:ŽƒÞb™ß $IÂÊ·h ëãê뺮ª*®çáßq‚ ˆ—<` Ãð<Ï4MMÓ¨kxÚú?ÈZÄcºV«‰¢Øn·K¥TжíZ­Á0MSUÕ^¯'B±Xì÷ûÍfÓ¶mY–»Ýn·ÛÅjÝŒ±ÙÙY¬ù.B½^ßÜÜÔ4-“É@]jµÚüü|2™üñÇljãxuuµ×ë)Šâ8N«Õ²,ëêÕ«¶moll …f³Ùh4c“““õzÍ6 I’‚ €8ù¾¡Ýn;ŽS*•úý>ÄÉó<ÏóšÍf½^·m»T*A`†$IívÛ²,Û¶%IÏf³–eU*˲Ð1Y–]×E³¸×®][^^†ÚA`YV±Xl6›¾ïc±{¤Aw͇ ÄAÿ_àÍ,Ë2 žGQk]{Úú?×u¹=ÂLÓl4¥R) Cx¬N§£ªj»Ý.‹ðm©T îMÅ+W®LOOg³Y¸%MÓc333Œ±‘‘Ïó¢(rgmm ÖM–å0 ã8–eY–åV«A"‘€4NMM­¬¬8Žƒ¹®‹v`(ÇÇÇñ¿2Æ|ßWU†Rt£Ñh@¹¯_¿îyöDSœN§#IçMår9lOMM•Ëål6;66fYV»Ýžœœäßµ,KQ”l6;33ÃmâæææÒÒ^)$IÒuï,Ox·!‚ öÁ0 !¤JÓ4MÓ Yûío>MýŸ Žã ž‰x#ÜUE¶mãÉ^©Têõº¦iŸ0 %IšeŒõû}h¤ Qaÿ(ŠÆÆÆ …²,+Š¢ªêÆÆclbbáS˲VVVÖ×׋Ţ¢(ÐEMÓ [N‡1†–}ßGk?ÿü3Úo4•J…1–L&Ç€Y–Ńþ•J¥±±±\.“šË妦¦ étŽGhÛívµZ…‚–J¥|>?11!IR§ÓAg‚ (—ËŒ±k×®yž—Ïçc<›J¥*• >´,+Š"Ó4EÑ4ë¹AÄ?@Ó48?˲t]G<ï€çêÓÖÿEQ¤ªê矾¸¸øÙgŸ]¼xñ‡~Ð4­T*Ù¶N§s¹œeYˆâ‰ÇñÕ«W!?µZ-—Ëe2™ùùùååeŒ)Š‚= Èãæjêyža¾ïã§çy­V«…}fgg«Õj2™Ìçó¦i |±Z­Â#êº.Ë2¼š,Ëø«,Ëׯ_‡Å„8)Š‚`,¤Jiš¦(Š+++¢(Þ¸qƒ1–Ëå `ÜVFQäû>c,ŸÏ†‘ÉdÆÇÇ¿ûî;ì099©(Êüü|>ŸE±Ûír©^ZZº|ùò×_}ñâÅ‹/ž?~qqqqqñ‚ ˆĹsç¾üò˯¾úêÂ… ‹‹‹—.]ºtéÒ'Ÿ|òdý{býŸëº—/_æƒUŠ¢Ø¶ ]„¿ƒ8ABòù|*•J§Ó–e‹E<ýcÇŽSeee%“ÉÌÌÌȲ\¯×£(* ®ëb·^¯«§( áØÃ¸h»Ý†u»]®µqÏÌÌÌÍÍiš–N§³Ù¬,˾ï'‰t:¯çr¹n·ûÍ7ߌÃö¥Óé‘‘‘ ¸îë7ÆN1 8==],ñ§z½Žlll,//OMM1Æ çù|þ·ß~[]]…‰¬T*»®[¯×ÑŽ¦iívÛóý!Ä© ‚ ˆƒAÞ¥ã8æÃ˜¥¦iß~ûí~û?mýŸ$IŠ¢œ;w_@îFžçɲœH$&''kµZ½^ït:“““‰D²,Œá©ªªiZ£ÑÀW Œ±[·nñq2Û¶E ‚€ „¢¨X,ÎÍÍ¥R)Û¶¹Õ³m;‘Här¹(ŠœdŒñAAŒ¨!ÚiÛ6¢”š¦Ý¼yaLn 5M ‚`zzztt*522R(LÓ䫪jÇ<´‹~úé§(Š’ÉäÈȈ®ëxX]]5 ãµ×^ÞÙlvtttmmm}}vSEDw%I‚aGØÚ÷}› ‚øGø¾4F˲DQô}_Q”óçÏ?Yÿ¬ëÿ|ßw]÷üùóüHªª†\G.cžç ‚À£šH*çÙ%†ap‡‡Èa*•r]×u]¤t–ËeŠô??Ó&Ë2jà°?†16??_¯×Ëå2â###hÜqžTÉ·“É$|X2™Ä"v@ ÔNÓ4 "öÈ›™™)—ËðvŽã$ n›Íf¥R^ò“‚´ãW¨Z*•BåâÄÄöÉd2ÛClp© ‚ ˆT™/(ÎÖuýÂ… ûíÿ´õûéŸ žç ˲PçÐjµEY[[CµR(kµÚÆÆÆÚÚšmÛÕjµV«…aØét¸ìišæyžmÛõz]UÕn·ûý÷ßÇqŒÇq:Ú©V«w„ Û^YYÙÚÚE±\Hi¹\†ÿ%zС0 Ã0t]wyyÙqœ(Š*•Šã8®ëB°QóŽnA Ër¹\ƸišAˆ¢¸µµµ²²‚÷ŽN§S(P“¿öÛÏø¶A¼òüsý;¸þo?ýëv»ªª¶Z­f³©ªªëº¶m‹¢Øh4P ñ‚&5f³)Šb¹\º ÅB¼m4NDz,Û¶A(—Ë¢(¢¼Ý4MMÓ %¨ðàÛA@–*•J£Ñ( º®7 Û¶1ü–ÏçáÛ<Ï“$©X,êºÎsmF­Vs§Ýn_¹r¥Ó阦Y(|ßGy" u¡P@qºž/--iš†ÚvÔJŠ¢ø×bûßv‚ ˆWžåÿ¨ÿÛOÿEÁÅbÑó¼8ŽK¥R³Ù4MSE|±ÙlÆq캮aPÁZ­ÖívEQì÷ûªªZS? Ã@©;f#ƒ­TUµßï£~ V«A ª*òndYÆt-|Û¶mY–ã8–$©×ëÁr!1µP(DQ„lRTµ‡aˆÌO˲0>‡9ÒdY†t¡q¤ðàC¨—a½^Ö)¯Š¢¬¯¯Ãκ®+I:ü×bûYÞs‚ âßèßÁõûéB—®ë†aˆ3DîÛÜÜÄ'år:‡nÙ¶ ±å}¦ibŠ24«iZǾï£þOìíA%>FÔEÉ·mÛ®Õjpi(ŸÇlgý~¿Z­B;Ã0TžÏ¶m$—ªªêû¾$I˜™L’¤õõõåååjµŠÞmß÷-ËÂyÁ/òð&$§Õj¡cõÛÏòžAÿFÿ®ÿÛOÿ†a˜S’$Y–1?5aªÕ*42†B]כͦ¢(ˆvZóNÞ ‚‰ µZM’¤jµ ˆ¶f³©ëÿËÞ™ý¸M½}ü$“d2K§ÒBA\À„„‰ª,*]@â‰+þî‰2KÆYìØIì$ÇÙì,N&™ÌLKÙÄ-4¿‹z„Þß8¯Ú·´¯¿Ušxìãçœóìçyj$¶20d¤úÌy ]×1C=ÏÓ4Í÷ýB¡€ïüá‡RGÔqœ~¿oÛ¶iš­VKÉéf³éû~xD ïûš¦yž7 òù¼®ëTǦTi­V‡ŽãP_›0áÿá's„"D¸oÜ¿ü“sÏÿ…É?œŠÝn·ßï#ET½mœ™ý~ƒ‰ÜNä“ã8JðP]z4q¬¾X,*#’Ÿ<Ïë÷ûêO7¸iàð×Ïa½^zÖù|žEmµZÕjµP(L&¼£÷öö8Þ0¾øâ Þ(—Ë …z½nÆÞÞòŒòÙù|¾Z­îííõz½R©„qnÛ¶ïû®ëš¦©ZLü÷hô¼Gˆ!ÂÿwÜ¿üsçžÿ “äFb<ÁÙ1ž°Øˆu©ŒdlÛîv»DÚòùÚT5’RRG7ìþaô£O=)oÛ¶*·«iÚp8 {.Õ—èåÒív)º¤–ǃÂRŠfm[[[ƒÁ€ÚôT ¦È"õ1:ÎÎÎ…õ¹U®˜ŠIF£jµÊ|…=÷Q¡ÕjÑ{GM(ÕHõ¸þ.Dçÿ޽€5M³m»×놱½½ýÃ?”ËåV«Å¶9<<„#H)©…†€¤ƒà`0(‹7nÜ ’ õÒ*• µ`à8uºé•7¡²ŒëºSµ,‹þ‚”› ív{gg§Z­A`|\‰ Ä€®ëº®Ãàä]&8Ÿ¯†ƒSS×û³Ï>»}ûöÖÖ–ïû;;;®ëRsN×uH§ê› ¤Î½>7 •JÅ4MV6åd]ׇat£Š[‚Ÿà€t¹‚MK)iî8Vôt½§R©P/Ðq˲vvv($¤äÇüºê4ã,•Jª\­*ØD{Çqjµš"—aT¾…ûS°w£}ÂèIu'ä1µOØs¹˜À ˜"Ma×;ŽS,Ñ0Ð&YT«gCQ¬ŠÂ÷¼ʇ®ë–eI)Ùƒ¦ijš6¨Ì`žû¨`Û¶çy¹P(ÀߨNõ¯Dtþïh0å­V«×뙦yýúõV«õñÇ÷ûýl6;N‹Åâææ&-p;¬':7ai5ÍÍM]×'“ :ºä\OƒÁ€=‘RZ–Åö£t]2Ø™t‰’R G£ü·ÛízžG]r6Àt:N§RJ¥êr+t$®_¿¾±±1iôaÛv¥R™N§š¦aŒÇcUæ )Òl6 À öz=dɽ>7 ­VKuׂQm<Œnð&¬ eÙÃ1ù›‡f ÇŠžAt:L=4-ܾïcÈRq°Ûír·°çªQ]JƒÂCJI ?,3\T.D ¬ÕjDF Α£}ÂèIqÝv»@j4»»»sÎe± ]ÖïÉ IDATØž:T½»{´Ûí"ŒMÓFív›¦lõz}2™`SÖ1ŸÏ«n64EK@¡Ö¿ZTǰ¯ j…þÏžçÍ¡ç?Ñù¿£Q*• H½^§OE³Ù<88èt:žça¸  SÛ²,ôq\X 7nÜÀ¦ÙÛÛ“R²ªîÃŽ ý.àt“@gÓ–J%ôÍR©dšæ7ß|ƒ‹F]F]Søvƒ”²ÛíAÏç³Ùl6›ÍçóAÀËðžÍñ†¡Xíh4ÊçóøOLÓüî»ï,ËÚØØ‚À²¬Ñhdš&%U)‹Õ’Édƽ>7 ¨çÕj•W¦²ëd2 £[¯×ó}ÎøW±”ÍfñÎyž‡SÓð¸Ñ3ŸÏÛ¶mY–ã8A`òbµ´Ûmˆ ¼—aÏL&•J¥X,B%EFuô)•Jøöǡ­",ÝÁæ¼×‘ô£O=‹Å"½b0¿j´¼>lX ÿÒ†ºZ­f³Ù°ëÑ(µ’áº.Z&Å~1›\×¥ ?†)?¡1xž·½½M“Ñ\.÷`™À„iš™L†mR«Õt]?žC} ˆÎÿ Û¶Yñì@úB æ?ÿüóW¯^}õÕW_|ñÅÝÝ])%Žy×§ŠZ­Vu]W=àDÝn÷êS4Ê9fš&j;ýx©ëí8Îh4*•Jš¦Y–E# Ã0F£Q³ÙÌçóý~_• Ç£Åç °'ØÆD\ð…‡P®ëW®\yë­·._¾üÖ[oq7MÓ¨HN¿_´æÁ`+ÄÍE' ¼ˆ÷ôÜ0à\Åh ¦åû~&“ £Ò©.•(ïT]G Ð Is¬èÉ’ (¥iš¦i¸@qQÐÛ¤Ùl"!æÄu2™ ´‚nÊ‘ŽÛŸ0©ßï÷óù|³ÙF†aÔëõñxŒ…w$ÂèFŸ0zŽF#& ››;Ïa5jâè–eµZ­9òÒ²¬F£¡b´ív;—Ë ƒ .\¹råÝwß½té~ íímFK—ìÁ`иÛ[›@š”r2™ û¾OC´°ç>*0/lÆr¹¬ëú—_~yzç?Ñù¿£Ñï÷Qí}߯V«Ýn×0 –ûŸþ9»‹K—.½òÊ+³Ù N«¥¯=6„â¤*éƒ'·Â½©Üq­Vk4e2™étŠŠŠÇϾjgáû~½^W1-ýp[Ó4÷÷÷s¹\.—Ûßß7MS×uäÁü ½eY—/_~çw¾ûî»ßÿýÖ­[üñÇ¥K—.^¼8›ÍH<¡Åj{¥RÁþ#Ê’Íf÷ööǹ×çÎ'Q§Ó)•JãñXJ •Âè6N Ãøþû凜*œF?ÈÃÃCÒs®_¿®ë:|ö¸Ñ“Ó4é.Bô ìªjµ OŸ¯¿B)åx<¦}&cÀŽãàùþûï ØN§ÄÒXið}¼Äs&åHúϡϑô¤Q6‚¼P(ôû}×uçû?±ÏˆhÔjµÃÃÃ9×Ó¯”Xéáááæææûï¿ÿòË/Ïf³;wîܸqãÇüàƒ.^¼øûï¿“)|…BAu¼3”Ëåz½žËåð£Î™úG˲&“ ”‡›››z\î_þÉõù?¢&†aàNÑuýòåË?þøãO?ý„Ì4Íb±ˆ<þül6ÛÙÙQ>Ÿk×®=óÌ3â/XXXÐuýܹsBˆ9ú潂¶½¹\.™L&“I”S4ñd2)„xâ‰'Àúú:þ=!Äââ":;뛬ÈR©Dôbww7MÓVWWWWW5M ‚`ww·Õjåóy\^aãyûí·ÿøãÛ·oàiµZÝn÷·ß~»sçÎùóçûí7h[­V ÃPƒB<ýôÓBˆS§Nmmm­¬¬ÜësÃ@ê ÊG±XBÄb1ÞôHº !âñx&“QñÈr¹L§å­­-!D*•򯯬×ëx=›Í¦bmm-•JAÕíím)¥âÙgŸýüóσ ©aNðOJY*•b±˜¢X,,‹$Òü C!“ÉÄãq!D¥R‡H J¥²¸¸(„˜ã_ £}æÐ“D„Z­vóæÍO>ù$‘Hœ8q"ì¹–eÑ¡lcc‘Ïv=:Vf&“yï½÷~þùg4âý®ë~óÍ7·nÝzÿý÷ýõWæ¨^¯E~ê©§Xr'Ož„ ŒÇcÞB‰ícl}Ô}æT1™Lõ¸þ.Ü¿üsÿÕçÿð•á=3Ms0¼ð Øyøm¾þúk²™Ûíö… f³Ž&ÔÞf³‰ 4‘H!ÃŒF#!D2™œ“Ÿv¯À %¥DŠH)17†"N£ÐñßÅÅÅR©4{½:³.¥Tyü„7øž{²,P`åÿ–×þúë¯ß¹sF@ÎE©Tzûí·g³™¼›cÆmd‰Åb$ŒÇãûxnHŒ$V­îŒ3óHºñ_Ì,FKJ-ãÄõŽ=c±X*•ÂDkµZ¨žçF£ÍÍÍétJ„ ‡áºõû}F;ÉôÁ¥)qºÝ®" b˜>ÃápŸCÿ#éFÏd2©i‚v{{ûæÍ›š¦Íñ¯0BbŠø^¯7GÇÀ`¯½öÚl6Ãï}xx˜ÉdšÍ&FêK/½4›Í+ªd7ôNðÕW_É»fb®”G ôƒåMäµZ­¾þúë³ÙŒÃ¾ÄÒét:Îf³™`U«¯sòäIMÓNœ8‹Åð©·X\\<88ØÞÞæÏ¡ÞTÖs-„P¶8¤>{ö,Êßúúz"‘èv»–eår9u’㘂N§…‰„š Åš&“‰ÒêXºÌ +™ Ç9;„‡ì!°è‚û—ÿîó–eíîîr"{<?÷Üs³ÙìæÍ›œ óÍŠòÉ'…ù|¾^¯#N\×ÅbKKKLÖÊÊJ,£zÈp8dé U>7â¾ï‹ERpdÁÓñã?±mGq¡Pð}Ÿe‡­ŒFÙh4à×p\—0\ÅתÕêþþ¾¼ë7#KÏè8ýΞ= û³m{aa!ollìíí!‚ ( A8ޣĕ;„§OŸ6M*‘¹L&WWW;Àm ¯?nôTÒ:N+CªÛí.--¥R)ÅÚÈÄöUô÷}ß4Mþ¶\.ó«iš°H¼š,ªýý}õ¸«½A^eD=B|úé§®ë.--Åãq8þéÓ§?úè£ÉdÂ’fê———kµšY¸=ö˜‚û ;MÓm¥”¸¬Å]Z}O¢ùw†aœ8q‚[%“IÇqØÎ¡…kkkÊ™|òäÉÿ°wn=Ž\å^±Ýn·{<13#‚àÿpÇ(D †@®8ŒP®ù \"!PP6Ùì­-͈ÛícÙurÕªƒ].—Ûvw&&#B¢H ’ÞÏî¥ÎNÜ03í´Û³^Y#kfºzÕªUßùý¾ápÈõ &qY¥I¼Jív;Š"Î£ÑØÝÝÍçó¼’üˆišœ¢f³‰]Îò¢(â¹ã‘ó8p£ B¬Z8Ÿ#ÉÿÛ`þŸïûý~ÑÁøÃ¿ýíoÔ͆‘¦éb± $m÷ /ú pJQ^©T¨Âè÷ûÈJ)¥Š$I‚£Ô"Žc²úAä8›^,óù<†m¥Ryå•WPœ”iḨÂ3‚ü+6®æº./ ¨V«„RñN‰…Ÿ5àSÛ ËS€§*ï…^øûßÿŽN¢yU÷ïßÇ$FO?ýô_ÿú×{÷îÑ–… 2óŽŽxùÙ¼4Öðî»ï"(“$ ˆ Bìîîrï‹ÅâôšùbÛ6áPyâ±KwïÞuçöíÛ(­$I‹ÅxqõêU´>N¡ ˆd ô–ºAe·EQ´½½}åÊ•£££F£Á’”ÿêUÙY)%ÛA¿ßga*VÙjµ&“‰:\‡2Q!D±XDS'ŠœÓrýúõ½½=~d±Xض­‚+ªÍÛ§!’eÙ`0¸yóæññ1¹ ¢_ívûîÝ»°¤Â0üö·¿­ŠráJq/H qäçN1^UR£Ùl¢HÈïªToÇd2QöŠ"—Ëõz½8Ž18Þ\Í0Œ'žx¢Z­ær¹k×®)½E \F–8±0„Nçõ×_ßÞÞ¾víÚ`0PÁ±X$q{çÎV¥ÞŽÙlÖëõØ“3ú¬4ÿï³eG±m«~üã“k! U¯×¥”dÎô£}ðÁ”ÿq>ð •¹= (=B”Ëeúf‹ÅB¡Ðív1N‰¿aó#‹Åbz²ƒv|OÓ4ŸÏ_½zõøæX¡PÀív»¯¾ú*/~§ëº‚ú¾_­Vóùü[o½¥dŠŽªMüÏB¡0ŸÏé䤘UˆéÁ`@17q$IšÍ&2‚"@x ­V˲¬V«õ³ŸýŒ©eYµZ‚Z#¢K(0M³P(äóùÙl†a±XDŠñÎ{ž7N{½Á"’ õzržâ‹_ü"Œ1Þm.NÎOJÉ;EQ­V›Ífj·¹Aœ'bbBˆÝÝ]rc•Je{{{6›åóùB¡ ¥d‘k¸Ÿ–e†Ï!‚b±HÄÑ©$…ZJår¹|>™¿då[[[ƒÁ@…IÃ0|ûí·ñH#©p%­a0ÇÙÞÞ®V«*;HX ‰©Ü rBˆ7nð*©](‚ 0 ckk«X,ªlÖ_þò—?ýéOüF×uËå2!ýv»],‹Å¢2˜”FËò«=Ïc臠÷¥ W|ß_,{{{·nݺwï‡m>Ÿû¾ßjµ¨–$XMìz8v:"óè˲ÔaÃP PŒ[¿X,”'MºQQ©TÔ3B:Kèõz8”än…¥R ]È¡½wïžÚáF£AG)åÑÑ‘òÿx(RJD¿”ËP“Z§ªŸRù”ð¤ÔÖÖV¥RQN?D&ß÷i·r}NÐü¿Ïy]JÅ¢(:88xæ™gŽéq"FJ™¦)q˜Ñt@ó}óã[‰¶X,J)…W¯^m4$K¥R>ŸÇ†RÒ é/¥4 Ã\¹8ªšÑ#¥$7‰uA­VS™!õFµÛmeG«„²æâ8F–qú§Ó)õÐÉ{›¦IŽ‘t~þùç?üðClž&\'IòÕ¯~õÿøG–eÃá’98jJTqµÓ:IEóˆ\±² ²,Ë ÃPÅDX˜ÞØÂêjDЏ)õˆ[­–JøQÏžø¾¯Äº2Æ÷ööÐÓù|žR•G볟Åbqgg§V«¡AÅ©ôØîî®*R‡ÃjµZ*•<ÏÛÚÚR'ªP(ìììdY–ËåHû¡Dég¤n‡àp8dÙvñɬm¿ßßÝÝE«5 ¤v¿ß¯V«O>ùd£Ñ(‹l)ÁX‰ÈÓápÈ#B¨4êþþ¾ª3RÊ•r0¾[–õ•¯|…³”Ëå*• ï›W1X!Äõë× Ãø—uì° îÞ½ûõ¯ýøø8MS¨î´•@¾Ý¼yóÃ?¤ôšÒ4Ü׫¯¾Êã`D}UM@£ÑB”J%’v|¯×ë7nܨV«‰¹7 ñC©¥ÓÕOjg0°øK’5Xœ\"2€ßNÒäh¥RA~ùË_†ÿ·µµU*• Ã@Ï©³ý…/|JxUôwïeÝððúOn4ÿ[˜Ú9z|˜¦ùÜsÏ=ûì³´\¢ºï?øÁ7¿ùÍ>ú(Š¢~¿?›Í0ýIê€L6ÊI’ŒÇãÿW}ðç?ÿÙqœ?þñªLŸà;ñä® ÿjÛ6.àÎÎç©§žÂið<I‡t ©NÚƒ*•å®T*­Vëðð0—Ëmoo‡aˆ¬,(„¸víÚ;w0HÉЉ_ AE‘ëºôÜFßøÆ7¾ÿýïã9Ññ;ßùÎóÏ?||üî»ïÖjµv» YJEÜ/}éK´NÆ–/—ËóùܶmiµZíúõëäÿ|ß?::º}û¶8•YQeý»»»Äv*• µÓéó¿ßïSÄ8›Í¨ãϲ¬V«Á'éR*˜T¶Ûí–ËåR©¤ s@QS³nûiÆÎÎŽª)—Ëõz]ÅØq‘ )‡c>Ÿ«hišdžN;‚¨OÂhårÙu]j@ø§R©”$Éõë×óù|«ÕÂïd£ØRjv¸}Çqå(<ÞÒáá¡aÊ“ÇÄHêõ:‰•Æ¥.‹ðvvv …ÂéKõZeY†@E1ƒeˆ“¨ïü6â@„Ç™žñ“Ÿüäk_û% ô=xî¹ç¾ûÝï’þ ÜJêD•þ*Ã7Rû™Ëår¹\š¦³ÙŒ­ %–Üd2Qw„^§ŠwlÛ®×ëÅbñÚµk$ty#FÇDSy¬4Ï«×ë4«SÂSAJq4N•G{Šííír¹Ì2xúìƒ*_ÂÄ’ãèžÑ÷nÝððú/ØhþŸ”’œ ~=FÙÇüÑGýô§?}æ™gž}öÙ[·nýóŸÿ¤ì…ˆá¼¸RJ2:d(A¦hŠ,¿…x©ªVç©ð<‹ôª ¨Å;¦2ayñ84–eµÛí7ß|ß":3{½‘zÇqhU´9% ÇAÀOÙ¶¢L#:™ÀûÌqW¼(+ 5Æ·¾õ­[·n=ýôÓDðŽ‘éxZÌÁ ,C9ÖF†ü%Mш¥`LÐe•Ðn·ßxã LZ¢…|a[ÈwÒ|Kõq¥À’m·,Kz˜Ïçò¤3Ê•$,º¥PØ5­âERJÇqÖm?¹ìUl¸ÃÃCŽïû(3ÿ¤©&?ÒëõÊå2KRŽüŠù|N´S5¤¦A¼ÇqÈQs˃ É¥è1Æ©Ž¢H£rªÃ“É$¤Ópq’$áüÓÿ Ú=liJBó)¥mÛdÝ&“Éþþ¾”R Bâ"ª›"û£™ˆÓ¯gp2†i™à9*šJElþ÷¾÷=š Þ¼y“†PbÓ6Ïó<ÕKŒÒîf³I»Än·K›ºÁ`@ œ3L>Øó¼ñxÌÆi›L&ÍfŸ^uÐ o¿ý¶a°AšÍ&MÀyĪï+§ ᓦ)ÅS¶m/ Ø\êÁa¥ˆ‡HQ· ’È [[[…BÁuÝV«E‹Ì—³[+¬^ÿm6ÿoæóù{ï½Ç;ðþûï3iìÕû®lÅl6{ÿý÷Ù¥÷Þ{£ñXõ~­u‡0æO<‘Ëå‚óëϰ©øøãy|ðÁl6ó}ßó¼5䳟°³qûLÓ$#NR —TÿyÆ{²©úbk2)¥rJ.z]ë‚ÓB¦Š’ý‹^×eŪ÷“80T¢âIŸ×õ7¤pÓÇ!w{¹¨ßåŽgYvÿþýÛ·oŸ]7tYððúo³ùË@z¤¶33q.z]ëÒœÄ Ü/z]—«ÞO´)sy¤”Íf“n çuýMsâÃt=¼èu­ ´Yg: Í"T%Ú¥Æ#ùÌÿ[&aòTÛw±«Z(»X=îápx‰ø@ë†Uï'Aª·àãm¯üK0‰é ÓWžôDÝH?–'ã¥(Ý€8¹æÿ=˜=¦vAJ‰xÑëZÐ1UžlŽj¨ÆC`Õû©¢vNg<Ó^nƒý˜ó‚·½®UÞô°!!ª2yê¢×õ¨Ðü¿æÞéXG†k8Çë¢@±ßÕFm€xQXõ~2ã) CˆÏ­ÿþ%(=¥Æ[É· –ÐÀÆã1Mˆ DŸã·‹‚æÿ=3>ÅT~kÿOZsv†ì;vÑ뺬Xõ~R(_«Õà fYåñ¼®¿©@J)!9ÐÆhü¡e‚`<Ck¡+f _jhþ߃z /:™´wÑ‹Z/`«Œ;vÑ‹ºÄXé~B€ÃˤoC§ÓÑ|•”À`‘œ] ¿àîâòÄ VÅÿC+üüç?‡¿)Oˆœè H”QQAsÆÑµÍôgÏóè½¹u·‹Uñÿh‚ð»ßýŽ®ØJÝn—ð1:â-ŒnYv££#OÐ}`³I¦ŸVÅÿ3MÓ4Í—_~.Ñh4šL&Óé”9|JÎȬ.»äÜN§3›Í(¼4 c³C ŸVÅÿK’Ķí—^z ÂÀ`0h4d/Úí64#¢ Œ]vN§óÎ;ïôz=ÚúeYfšæÔihhhh\,VÅÿ#3üë_ÿšæÎt°%dêû>£¿(…Ò´ì:ô[1M³^¯°Ð æÙhhhhh|>X!ÿ/˲_üâív»ÙlR/„Ï—$‰iš­V«ÛíÒeü þ@EL]¿wï^¿ß÷<æýxÛ9VÅÿcÊ‹/¾˜¦é;ï¼óûßÿžAŒ²»}ûöýû÷™{Áý,XÜo¼±··Ç>×uuüSCCCCã±*þ_’$NçW¿ú­Õ g!ÄÕ«Ws¹3«|ßgŠô²ë0E–™ü #Cá–544444V9ÿ/ Ã_þò—„Iù±\.·³³Ã©àdöãþþ>i¤ ¹íÈá0 Qœ£Ñ" j¾ ¡¡¡¡¡ñpXÿo™þBÌçóÙl6™LZ­–âÆ8…Ífs:!DµZB”J%Rïìì Ûíö[o½¥ùˆUñÿ–é¿R©Ôn·;Žçyù|~ggÇ0ŒÅb!„¸råŠrõ ð,‹ïBˆ­­­ÉdÇq£ÑÐþŸ††††Æ#bUü¿eú¯Z­Z–…&B‹ÅƒƒƒV«•Ïç…¶m—J%!Ä“O>)¥Ì²,ŽãZ­&„ØÞÞn6›Aš¦yþ;¡¡¡¡¡ñ8aUü¿3âŸÝnw:Ú¶­*b®\¹‚.ìv»Qñ¢3ïÖÖV¹\¦qšçyŽŽ^{í5¥g³™ªñ<¯ßïë‘ ˆÎÿ[æÿµÛmÏóæó¹bww—ßM‘‹”U7N'“I¡P(‹‡‡‡ÛÛÛBˆ^¯—e™mÛ“ÉäüwBCCCCãq çÿ-Ó³ÙLJÙëõ‚ B”Ëe”ŸmÛüÏ|>Oh4ŸÏû¾ßh4Æã1)@.~_^CCã³>àGCcó±BþßFžé!* IDATοÕx\±L+xK>òÁUÎ*?~,ýá¿ý‰µ Ôx°BþŸÖ„[ÿî‰þ[hý§¡ñX!ÿOë? ÂÙQÁe^àú|二›òÿ´þÓØ < þ Üõú<Œ¾ÔÐØp¬ÿ§õŸÆã ôŸ³NŸ‡Ð—Žòÿ´þÓx,J)/Þá;QCcñBþŸÖå•–ÿ)½ðœß#æ 546+äÿiý§±Ñø4Áà“¥ ×áOÍÿÓÐøwþŸã8–eA$IaÆqìyž”2Š¢f³E‘mÛ£Ñ(Š¢³oy­ÀžÛ¶íyÞd2FŽã¸®;8A†ãñ˜†gÔñ>n°,+IÇqâ8Žã˜GoYVøa(1øƒ”²ß·Æã‰ôã(Ln0Œ'axƒÈ÷âK?‘~"½t]þ\òñ½Q Çéx1pã8ʆñÔ2e$ËTàòý Â0üäþô™ëy©Á=ÆqÌäQÓ4ã8ö}ß²,ß÷Ó4ug<{ž—¦©îËqéð¸óÿ¢(¢›Z¿ßwÇ4Í^¯†!*0˲4MÌÛn·/Ñù楢Èq4Ÿëº¾ïgY¦4ßþþ>s† øèõ® F£mÖ}ß÷}ßuÝ F£Q·ÛN’áÑÑQš¦N'Žã$I;# FÞ tlIŽ£p2NæÉp!½lý>é§ÿôÜÔµ‡ÒËú†ôÜtÍlsè{£eúoùþt“$ùäþ$Nçs~|çLF˲\×L&‹Å"Š¢~¿¿X,šÍæh4 £ÑÈ4Ín·;ŸÏ/z½†Çÿ7q’â8æMNÓ”ñô½^ëOJ‰Ž¼Döl¿ß¢ˆŽá®ëâ׆aÈß÷ûý~¿xx¸X,¸÷‹^ïº9>ŸÏ]×uçàà€0@’ ]×n6÷ £ƒõàºÞh4>˜ºNàØ¡c‡®9VìÆŽþ4ðÖì3ýôŸ“ñ›Q0‹‚¹c\{œ¥oúƒ,”™ô?ûH,ߟÄuÝf³iÆÉþ¸W˜Ïç +Ïç–e½öÚk|o·ÛqsƒhÁÉd¢ç²]:<îü?Ú¦iŠª0MÓuÝ8ŽÑîžçù¾ÏÄ Ïó.ÑÜù0 C§"~‹¦ïõzÃáðððp0à®ç£¹ ‡Cß÷»ÝnQY–5ºeõÓ4£(Š\× ‚(ÃV³÷›_þïÿzå·ÿñ?ÿùÛ;/ýæÙ»òæ8ª$ÿúTw[‡%›Å|'6Â\ÖÆ²lÉ–%¾ß`€á˜0˧½È:úªû~uŸ­V·,_˜ <–¨åqí?T1„´136+2êV©Ž÷²2ó—™/³êÏ}ðù{ï\z÷wÿ"¶ß½õÑÛo~øÇßzéï.}ø•*ûºúîênø·;ê¢(Aà8Îè/H_v#A(¥a:Ž£ª*r*ívÛ÷}¬˜hš¦iøÁ£ï¯ôóh¿÷ÿ9ŽÓétX–­×ëI’„aˆ©Ñht:Y–»Ý.Ã0’$!áó¨ÇûS _XÔ4Íó<觪ªŠ¢ø¾ï8Ã0­V˲,˲ Ãèv»z¼ qçy˲aAÀ0 ص¶ÖãyÖ4••DQ}?TjèÎ|ü™Àë£kJ HÕc£& Lê=6[`ÒÀ4¢o¶™à‡$XŸ||Y,£†¾ëúßîüYƒ›¸²²²ÃØ/š†ñ}ŸRŠ•øÁÝnWE†aºÝ®¢(’$õû}|¾íQ÷Wúy´ßûÿ4MC¿Ûíò<¯(JDz,SJ£(bY–R*IR’G=ÞŸJŽãðMÓõõõ4M_~ùåsçÎ¥i*BǦi6›Í~¿ÿ¨ÇûS •Ÿx´²,ÇqÜh4^{íµÙÙÙï¾û.MÓ4M777_ýõ_|1MÓG=ÞÇ…2#>99933sÿþý4MÓô¯iº=ùo/NM½’¦AQ4ËôM¸NòÞ;—’h]W}‹Æ²h»öŠ¡;”RjªÑFõÿ½ý@¦ijš¡(ša˜ï¿ÿÛv-˱,çgò'MÓtrrrjj *ƒÃO•ÿY$B–Ûô}zzú¹çžÃ|ïÞ½›¦éÔÔÔ /¼¦éÿƒdï>¤ýÞÿÇqÜÙ³gÓ4½sç–¸Á‘íííÌÌ̤iŠö&ÔŰ,‹€|>ŸËå!žçY–¥ªjǺ®cm_±w£å_ôµm[–åv»½¶¶Æq>Ç1Ïóh=£P` v›¦‰ë ™!Bþü3rSˆÿÀÿ™™™Á`ðàÁƒ °Š£iÚöövš¦ÇŽÛÚÚê÷ûívk„Q¡ÆÂA)—Ë®ëÖëõ8ŽÁ"I’±ø‚1 m@F¡©ã8h#„ ‡Œƒ!h#C[UEÈyž÷å—_öû}Û¶†AwŠ$I¢(º®KÁ# Ã㸠P}Ž{A|10\ E 8 mj²,CÐwã¾Û|âĉ4MïÝ»†!˲¶m¡¦ƒ­Áý‹/þå/ž›F¤)Õã>øRSŸEdYÖó<øå¥R©X,&IÂ0Ìøø8!úÈȈçyªªöû}dSªÕ*lÇq<Ï>|“†;Å/•JÕj5ŸÏ ‚Õ†q[XX¸wïÊ)¡Eñ§Yë¿?í÷þ¿3gÎ h/r;YO+ùÙÙÙ4Má‘!6ÂÓEö¶î¤syyù™gžÉçóÕj!¡Pèt:°¤€8ŽáëeZ]¯×!C5쇘Â@ò ߸ûÊÊÊïmA(wX×u$¬²n×uái·µmûÂ… ›››Š¢hš¶ººú·)\(ÃÐÐ¥*„Ð `´CCC8¥T*!¤Ãtîܹ“†!N ÃS ÃÐ÷}ظ·ø­iÚèè(ø†,øµZ ñ%Ø‚÷Œ@!‘‡êõzp´+•Jf7£(Òu=Žcp~zÓ4Ož>.Š¢¦i°ÐÄ\.‡¼Åüü¼ H ‚ðû¯ö{ÿßìììöö6Þp<Èú–à•LOO?|øK†aÀ„LàI—Ëeß÷‘RÏårèšø[l€|·FGGëõ:|d´ŠÅ"Ö-àîá}4@MEQ`èK¥RöšA–e!¦{¿lb7üƒ~"纮išˆù°ªlçåË—1ÇB¡€ôfµ!„ qú©( ´Î÷}`<Ò/PË,[‹Ø¬$IøofJ¥’(Š™úe™¢F£áû>Ã0·oßÎx~íÚ5܉ ‰‰ Bˆ(Š;±Z¾Ùl"álb¤tZ­VYö`®ëÓÓÓNƒÄìòBrÄlJé¿>û\ú0U$G•ýÀ[ûðO_DÁð¯\®` Yðwà@ÕumUýÁ÷}ËuÃõr¹Hyúé§â8ÌçI©TRýØ»Ò9ªõ|z­^ƳÙ1_ý—ÙaÀÆØcÀö_à$J¤\éÞ,ÜpC–pÇž™žî®êÚ×S[×ÒûÂx&ˆ;²Œ‘-¼t><ôÑèÂ4ñPnJþPîé®åÔ»>Ïû¾Õé$øØÁ~¿ûùçŸN&#BÈêê²®«Š"Í×§ÇmQ¾új¾>—_NªÕ2!d2 Bs}}•¢éRu‰#„d³d¾>>¥ÞÊòqBòÔ }/þ«¿ü•ª8q4ÐTû(ÿgš&ÀOàêH¡`@꘦‰*DZ;;;Œ–——5MÓu}¿V«áËÈ pd<}<úõõuõ Šp'QA;€y¦V…ºnö …\.‡ ²×ëAB{â, „ûýþUöþûïÏf3 d~ÀŠ`7mÛ¾råÊ£G@”€¢&óL4—Ë)Š‚K‚ëõz¸¨*ÌÈp8,—Ëù|ž)]±X\„ròäIÛ¶álr¹~»¾¾>766€Hƒ(Õ4-“Éà–×××YéXh"IÒîî.ó”ðŽq ‚€#€°˜N§QÁ£*?$Ãp Ü#±;síV s©`è,Ë»´`ýÖíϽÿ`Æ: Ê Â0 ³.\¸ÿ>ÖÁ´CøàÒ …¸:쫪ªë:䨶mHÏx<þâ‹/!Õj•RªáÌÎ óíØ±c°Úq³X –²,KâÉu_GáŸpP!ðÞˆš¯]»vÿþ}°úívÚR­VÑ üŠçy€3Øð!ÂêÕÕU†Ìa®d Ïîi¹\Žã8hòñãÇëõ:SKÇqNž´>¥ùú˜aèÃÎ×Gívû„ä3¤ÐëŽmËÿÝGŸ¨Šã{©Kœÿ©iÚ7XÈhÛ¶(ŠÍ /½^ïܹs=Bƒ)ã•••R©$IxeÔ$#'XYYù›Ë¾ÙlÚ¶ Y7LÉf³Íf€„®ë,öÒ4 ¦üøñã²,#pañ&â …S§N±õAWßÓ„ 2 ÃW^ye6›ÔÔ4M–e˜Bè—eY—/_~üøq¯×ãyVþ¹çž+—˵Z-›Í†Q­V!íÇ™¦ wŽ¢\ H|ßßÝÝÅ]àCøk»ÝF¸, ²”ÈÁä#$„`K¥XC³Ñhp·¶¶æûþíÛ·Oœ8±²²ÒjµªÕ*X à+Œ¡ày¨r¥RA_È!$ Cžç™&–ËeI’Øýöû}0MÃä~ÚRÿ<Ûÿ÷ÿùo¼ñƃÊÑ9« ïŽ:¨7*Ð$IZ]]…u&„à1‹Eß÷:9®T*,ˆ †AU ¢( ¸+Žã NFc2™hšV«Õz½CJ«Õ*âA€øp¢?ºUÿŠÓ¹›¦Ùh4®_¿þàÁ¼&!›išP0Ó4ááNœ8 Îçó”RÃ0$IRUõàà6HEìt»ÝétZ«ÕÇ©Õj„µµµÛ·o÷û}èÀÖÖµ„+$3Š",¦(Š(%P!…çyÌ3ɲ}€ †B÷z=DW ²?Ê4)\)¢(ß÷EQ\ZZªV«Ð…l6 §ÚßßgÚÚìS§N5 2O¡Ðƀˀ“@šã8q/®ÆÄÑhôÚk¯=|ø$úh4¸DJ©mÛ¯¿þú“'OP>–¦)`vœyù5Â.//'I²±±ÁqÜòò2ã¹™ÒU«ÕÍÍMæs¹Üêê*Ëóù<³ Oƒ6e[£â8ŽÅ”(œÎçó«««tJÂ'aßu]·+Š¢ièsÀ•°,SÇS[__G» V,Š¢4M777¡Ñx@lñu]—e˜“ã8¨Vý?Yÿéþ"úÿLÓ|ï½÷ž>}E‘(Ѝ§ÇƒI’䥗^züø1ÔÕ¶í$I˜X§iŠ”ÿ¥sU„D‚¢`%-”Rw2/YÆ€`ˆ¦ïû‚ à› p(&‘àZòù|¡PÐuž©Ûí.àêÀØQqGÝn±íÓ§O1& Á#.˜±zð"*+• Ä=›Í"ßÅE2º…R*Š"èÒöz=:რ€ †e \*•ŠÅ¢$IH—––:¦³T›Å¶Ç…a¸½½]©T€2‘9#ôQ6ÌmdƒõŸ¨Ï¾xñ" PÐTiš¢‘@×õK—.=~4 ƒÄ2½$Ê¢óÑo?åŠË„pÔ -Óëv†H]×iY†ãX„jµ†ß?Ó ð’$"„¬¬ž™ÏgmÛ”eq0èá;N‚ï‹yÓÔ !å2'I-°zKK$ˆAàu»)!¤Pȹ®ƒŸp\! ýííÍJ¥th} a)Š–Íæ¹bÕ4(!ù|®DÐs£ü‡uÍ ÷ .x`/^D1ˆa¶mƒÐEV‡>qØ>D<”R]×áö™d2J)c¼à½ &À —––ÜÏ×-€ü‹Eä1ù|T‰%…Œ£Á8J)ƒ^aµØ_8rêùóçg³š³v©7ß|óÉ“'Ð ˜QÃ02™ÌÚÚÚÖÖV¹\Æ•°P€R èØ ãð°cYV&“ÁmBƒ …CJlÛF–\*•/lƒ²¼¼\«Õ˜Â2d ûƒŸK’´²²•d–=‹8ޱŸÍfµ°.&\†mÛ°ZhŽÄ7‘ÃtÖ‚RãYƒ‹ÙoÂ×E6úçÜþtÿ÷ËèÿCÍÕÍ›7/_¾ÜjµÐ'†á¥K—nܸ1›ÍdYît:”Òíím@7dë3®Î0 Hµ8Žã8>,úÐUÔΡq ð¥TŽã²Ù,+.A–eðøõÐ vGÝ8uÇqƒÁÆÆÆÍ›7_}õUÌ;Åû\Ξ={îÜ9œqƒÑA}f«ÕÊçóÙl–Ý282ßÊå2+Ì©T*¨eµ©PNæJŸõ80‘hç2 £Ùl"„cÛ6+xCòMÕ—cƒ¼±ŠYI’úý>*Èšº4M{ë­·.]º„4‚4OŸ~ÅPŠl8¶ï{1uBÇnÿî£OÙ®VÖ )RàŠUB²°Œº®³º'w`Jpÿ¹\^á°YdcfÙ¯8ŽƒµekÅȰÃëƒR…l6 &ŒAƒã¸”z¨vÁ?êŽí{nDHaùØqÜ^ ‘ IDATE6ûáÇbKömË_PÿrÄú¤§OŸþ~}¦„R –è°[bÖ) žc&“N±˜Û‡À07€‡Î Ð+Ëûÿ(|DCª Ì…0õ}ã=’x>O5›Í«W¯¾ýöÛpŠ¢ ƒóçÏŸ>}€9n–AÁ¸_ô5þðŽ˜dþ¨¾CYÖÖÖA€§ô}Qõ3?)•J¢(Âu;v ±&™{_H#ƒdEa¾µ9L2-Ë‚õ`+Ì’E” šÔäóùV« Ý„èîø 3ý³mîý˜|6›Í?~|õêÕ^xáƒ>8sæÌ“'OF£ÑÁÁÏ?ï‘Rж\QQ!¹±±7~¡Íh0ì¬(Šûûû››››››ûûû¢(Bnèœ0@SFl7étŠº,tS¡E ìÐK¤,pcqF#ôQ÷…w>@ÑÓ3ïß¿‰×®];{ö,ül6CýãXQøÝ»wkµZ­Vûúë¯ÑNG)…( ‚©¢ô5{*æ@Âj ¾›N§FãYƒ*»^¯@ ÏóèñÂêÁ)‚ð`r‰†$ˆœã8ðøçyHùˆ°"ñÍ7ß\¿~ýÝwß}þùç_|ñùÙìÉl6k6ßïì~uk£–&ƒ$þÍ_ÿ:ŽõÉ÷bß‹^‰Úv;ÖuÝ÷CY–ã8õ}ŸRÏ4Í(J(¥²¬Æq¬ë¦®ëºnN&×õá¥lÛ¶mê8>‰"taÆišÊ²Š}MÓ Ãò<¯ÛíëºÇi’$qœ6›Í(JLÓÇFƒç[ÓéÔ4mÏ lËslߥ!ûçØ¾my¾w;#ÛòUÅúøŸ?ñ½X–¬ï¿=z}^„,á•Ñwîܹuëf€iÞÛÛÛÚÚ¸ U-˜L KЏ ‰íw:ñxÜl6ƒ €í†@w /h©î÷ûFð)UHæüáÔív{kkkooÍm ð€ vvv`%5M›Íf÷îÝ»zõêË/¿|åÊ‚¸k×uqS½^h¤ëºõz€Äïˆíÿ¨¾£>|{{6„" ôžé8¨C·Æd2©×ëø4ô U½^Ç=  ©À‰|ßçy§ÃK‘Ü#Œ@×Ôy¸{÷.Ö–uÓ£ÝþeûÓýß/£ÿOh©mÛ‡Ç%I2­Ãÿ¡å%‹…Úí6RFPÁ Ä™p˜¦‰b_PqL^ñ5´ÎàC¤•›››X¨N§ƒ$ ­Í°æ¸†V«Ô™Ä‚¾QæöºÝ.®:`Æl6ûöÛo>|øàÁ }@^{DpÍfÓ4Í~¿{¡ªj«Õêt:hÄwBç¥qÐLÔþ¡mgg%y ¸™Éûïu¶Fü¥išõz}0´Ûí[·naÚ{Y#^˜?”ÝCñpðÝÝ]|8 ¢(ª×ëÌÇÿpC¿¿¿±³Ù #r€nɲê8îxÞ‰ì_’¤$IC‰?ëö?Êÿ~ýxNìæ½ù›ßQ·Ýjµ0À£7‹P¯×ŽÃ4뺦ÊXr],帮‹Ôˆ“¦iŠÁHÝn„œ%F„ÀûN&DXìDà Q9¹ÀÿA|Ñ—¨ÝweGVƒjOFZàzæb‚”®ë xF£<0®1¸ªªø+¥E€ŒÒ4…K{ÖãA IR§ÓA‚¨+xxÜ&h ‡C¬Ld’$õzú¾¾¹µã8öÂ÷ý¢z 2Â;I’° Qù~Øhð£ÑDDIÔ¢vÇÐé¿ÿÛ˜†«©öçŸÝJ“KcÏMÒdG½vØÑ5Ç4\¸œ4P'¾Ô5G‘ͨÝM“¦Úi2èuǯL'ûšjkª=ì ¼ÒëŽ}/æ›r𠯣;-A5 w:Ù÷܈:!ß”Ûa'‰ûšjË’µ»²d˜†;ï~bè4 RMµUÅ wóð¹ý)ß”-Ó³-ÿ7¿þÐ¥íng´½Õ8ÊÿýÔúøè.@¥àw¨?,H# ó0²(²Àû¹y@k–±}JéÞÞXyUU‘²@n¾bú ?×uaåá`y=ÏKÓ×€hß\\Ç€·V«!·Ã ü°ßïÃÜ#ä‚Ïãyï „W óbò?º#ì¥ï%ƒ\0è‰g=H»Á`×èº.BFzÛ¶ûý>\c¯×à .0›¦Ñh ܬ×ëXd{>Æ, CI’0P‰u@jÿÅÞ™<ÇUäyüIòŠm0p€ÿŒ0D@Ÿ¹ðÌzbzðnÉ,3ÐÐ=´iKª½^U½=ßVo¥*YÇø¸hŸVŽÇ ÅDn*ò ÅS©*ßR™ùÍß÷·¤aPÜ Š"4ž_œLÓD¸âz­Gø[ã×óß|äÿÁN&ÀB²m›iT÷È FÍf3Ïsb»©Ÿ‚PÀ]ôÖï÷rt>¼ú° k%&e*~¡æÓÉè¸RHËãƒN'Š"ß÷óºñéåK7._º±|ý–üá•O>þüÆÊí‹–/^X¾±rûÆÊíKWþóOWo¯~ùéí¿üùó¿ýé?®|þÙWׯ}²zë‹o~¶²¼º²¼zéâ oþøæg_~ñµl™6?×µ«}òñ}ùÅßn~tûúµ›É¸,òÍÑÐ> ÿaŸçãt:!%:ázµØ+q)#tcµP/w:®­­Ñÿ™LŸ8æ»f“,ËŠ¢ ƒÁ:Ýn—~õàÁ) FQDœE»Ýn4eYêºÎgO\ÒëȪªèß~û-=“-6ýÍž¶··åZ“e&ìÏïˆãýÆ;²2 *2>m;,J0a âá³|ñ<nf˜ K=>9Æé€éÆÖ§¬`ÖÖÖðõz=!‚Í~ó€œX03˜Ž¨ãø[ã×óŸ;ù”°+Š‚’Œ° –å1¹ML=ækÓ4u]³ÚBA0›Í Ãh·Ûäºù¾OÁVa;;;ív›0}LŸ,Ë&“IEôÊ`ÂdÝ!¢Êõ)tE®.Ðú³µWzXÖF•þ !s˽ªª˜ÔXE"„¢ŽÆqÜëõHšF?$²‹–¹ÆyUUqÃúrä1ñ´í 2óg³V5­‘¦Éh”±ÒFdáB$:ö%9Μ4Ü‹Õþ9°oHºà‹0 £,KÓ´ëz3ËŠ^Oo4ZaçyQe­fÏ4<Óð’q=zQX¤É$‰7ót+E–ÌŒaàÚIè—¡_fÉ,E:ž 7k5Fæ(Ì’™eDY2+²{–9ÖØ±Æ–Ù=>ËGkœ%³(¨k\;zϵÍxÐ÷\;™TßFA¥÷ÜÐ/…› u!ÜlR}ëÚɠp3Ç[fPä³,ÝÌÒÍ"ŸYfàØ‘cýž1:–)LóL¡÷ÍöÿÛÿù˜u]ã©j4aJUfJù 6A@”<#‹)’©\ Áé?NÓT–Vg‚~¼ ó5}ÈÀ¹CáúúúÖÖg$ùŒ.Gî×èi8é¹|"å2ð÷“GHPŒLü ¸«4~wûwÖptcŒ]þõ´í°vl·Ûð´çyÝnw6›aûò Qäbää\ôU¾ ´žçñ' €3ä@Ƹßo`œ2ÃÈ2‡?üzþs‘ÿ7(ÈÉhᛣ(-«'×u{½K!¾à,˪ªZ__oµZ|Ä0 ºNˆ¥Äª#¶KUUøÛPN°ÿ~óëJ1Z$ÊDQÔjµÖ×׫ªâbö»/Æ¡€ˆxËÈßbQ9Þ+ŠÏ|DŸNÓ±B*L[[[[¬ñÇã1wÍJSͰxäF„i½ñiÛA…oxpûñ|uY’?Nmš&¬-vvv>|ˆóƒyးY–´Ü‚¬žcYV–¦áŽF¦Až—Q4v]1ÆÈ™Mwêjk4t\'èNÖI¼é9ùh®ý]OÇ[®åévU|Ûïz­†)Ü"ôëAßOâYn†~úµ1ŒôžHÇ[ü™Ž·ôž0†QÏ\;síL¸…m&ë=±5ýŸ@Tž“ÙŽeŒ+õœÜsò<ÝýÚÅÆ0ŠÃMÏÉ{7Eè—éxª÷\c#¡÷í4™„Až&Û ‹|3 RÓðmqF>åóù‡÷KAÿq÷jp»{;{ ¾bÙdL5B·L÷”ãQ¨Â@)åËåD 93 ÃBüöʯã;BÈà²_D·Û•ò  =èºÎR˜ñí1¬äRL®Æˆ:yâŽ8Þo¼CÛT8Â;ðõ×_óŸª~¿Ï*œ;•+’íím)Zâ:eXI ›Œ±É e¹Ì|øðáÖԲR1;Œ²rÝoà7’5Ë_âe›§+üzþ;T7ÿ]ðáIbo·¢ÅpªCTŒOidšhš&kIMÝNŽqfF]D>(;ofТ€GQĺ•¡ÎIÓ4%Ÿ—A‹íUÛmÛ> ÿO†“ÈIq•ôWzªLH0ö6{’!$L<Ã0ð«1öW]˜•˜X€cwR{åiÛÁ&`ÒD"f«zˆ (Pìu0”!DQ¤uòTeãû=7¾D´ `/SÓ²,Ûv-Ë©ª‰ë !‚áÐȲ""]–Åf¿7²LoRß‹£Ü4|Û ;Š£2ëÀÏz; ‹^ÇžÔ;I¼ø™1 òlêÚ‰/ÒÑÀ÷ܱïåqTZF$¼D¸™eqXû"5Ga(!,bˆlÛ>ÿæÿA­ËËËžç!ˆs¦gÍ÷ AÈ“b/†@âåååÃùïÐü?Ïó®_¿.ëq°1Ð3¤z‰ <Ï#ZJìmwáÂ…Ãùïàü?¯^½J!°­‚‚‚‚‚Â3µg‰ð‡žÇ9’þ)Ìÿ#vyyy4Qúäñ„…g ÏóH‰BÈ<ã[·nÎçÿA`Ûö|°ººzíÚµååå .\¸p᪂‚‚‚‚Â?.]ºtåÊ•«W¯®¬¬|øá‡—/_^]]}ÿý÷ç¿èÙí~†ðö’Ð¥œ+Ó9æÔs¥J1ýÇöY;$ÿo^áyž,÷Îãð}ŸRC óÛ¶e=}YÇ;zþß\"Tc¼¦ì9I @…9@QáÅs]—MØUC%ÿo^Áã‚€MŨØíÕçTPPPPø½ƒ"±”YÇÓÇnÞóÿæÞÞ®âróFß÷ÙfSAAAAa€“KVáÇ(÷XöÍÿ›W`{žÿaâ UPPPP˜°#,›CQ›Íœ½#æÿÍ+äžÈ< ¤áþû©*((((ü¾ÀΔq†Ajü`0 òC%ÿo^E‘eYAäy~çÎ÷Þ{ïõ×_çwþEAAAAa.ðî»ï¶ÛmöJt]×÷}¹ƒ8JþÙõ£Ñ(MÓ8Ž[­VUU¦iî·_"ÕaØ51ÏsI¹ûíÓ ù¾Ï˜º®»®›ç9={žçû~§Ó‰¢h6›éº¾ß>™ûíÃ)öÙOõqAðæ›oî*((((Ì:Îîî.Ò½ÅæÏâ(ùf–eðD·ÛE-ì÷ûUU±ÿx–eëëëìBó%I‚äj†aÛÛÛÛÛÛóz’$ðÁ©u]“„¦ét:½sçŽ4Ί¢`«â~¿ÏÏÐøx<.ŠBfràÉÃÚu]·(Šªªúý>¥áØ Ü4M]×Ó4}‚òÿ)(((ÌÞ{ï½ï¿ÿÞuÝ0 1º°‘¼#æÿ Œ§n·EÑt:•A¥aº®kF–epU’$iš¶Ûm(Ðó¼²,…º®ëº.„ ðòk·Û8$ƒјDéø¾OBB·ÛmµZÃáVlA\—loašf¿ßï÷ûD¯äyA–e´ÃbbB¢Y–EAi8Å ó×^{í‡~(Ë ”½#æÿEQ4›ÍfÇìü>§Ói†kkkÓé4MÓ^¯‡˜‰5fYVEò4ãñeCÄýæy¬iš&jg]×ȧ¾ïcºÇcÃ0ˆUálÛîv»Pïƒdž¬Öëõ0"×ÖÖÈj AòÿYø<©ö)3ßÿ)(((Ì1ÞxãüÁ*h8쎚ÿíµÛí$IªªâÏ $Ê0 É.DÏL’Ä÷ýf³EÑ`0°,«ª*<ˆqƒªª,Ë Q5›Mbr†Ãá©S§`¸ ’$Á|ÜÞÞv]÷«¯¾â¿EQø¾ßjµîÝ»G ÄV×u«ÕJ’Ý•Mê^Y–wïÞÕ4M…2‡ö…0Ñ.ò¤h¡gΜ Ãpqqñ¹çžÓu=˲—^zI^Œâ?…9ÆáüwpþV¦i/¼ðÓét8`B çsÏ=Gúçy˜b“ÉDÓ´Ó§O“{Aú=dçQÏ“ö)uµÇ;ƒA–eˆ–÷ï߇/ Ã(Ë[ €‘Oå©?žeúªo5Mët:³ÙLñŸ‚‚‚Â|ãpþæÿ±m®çyFÃ÷ýétÚï÷ƒ ç½ÛínnnR”`–V«Õï÷ïÝ»—$IY–º®ãlc׈n·[×u£Ñ@öÔuâœä`PÛ“¬‰²,»Ý.Éò(Ÿ¾ï÷þ—½sûm£Ü¢øçKœÄnZJ¥ þ#@B D+ÚD%¨U/‚ê+â©Ð6Wßæ~ûææ™‰gl'¥)•‚B’¦™ó°Ä¨Tç8N›bá³UjÙã±#uuïo¯½êuEQPóI’$‚$IÞq§V«EQ$Ë2¢*LÓ¬ÕjaÆq,IR­VÃN5,é&ý#‚m׿þþ?lCæÌHiÈ”Ã0 4dµZ-ÄAkáRTUU×u%I‚«[c’$qžsŽñNXïña0Ól6ññ²ÍÝ–eݿ߲,”ä'‚y׿þþ¿QÛaðC³Ù¼téRš¦{{{Ãþ}AÇùsçÒ4M’ÿàsÎ Ãxv/Ø!þ¿Q)PøÁqœ………[·n]½zõ‚ b$øòË/þùg§sΣ(âœcw¦5ˆÿoTAë ‚A躞¦éîîîS‚ b$ØÞÞNÓÔ÷}Ã00n²ºº /Ÿ5ˆÿoTùá‡<Ï‹ãÚ/B‚ b$ð}ßqAá×ív5MÃL¥5ˆÿoTq‰À²,cËšªª!‚ F˲à‚AµZ YëÖ þ¿Q“«¢(¢ýEB9A1`æ6 ×uÛíöææ¦9 ÿo„áœ#ABUUdÓ#׉ ‚E1ÿrå! O×u”:Ö þ¿Q…sŽ|%Çq²Ü]]ׇ}_AÄñ€](’$™¦é8òû0êa âÿƒí]UÕv»Ø???ìy]‚ âx¸r劮ëH¥Õ4- é3ôÿá5P MÓÖ××5M{.?èeh6›Žã`%Ó<¬tqG×õv»E‘ïû¶m˲ŒÙ¦iŠ¢èº®¦iªªV«Uæéº¾±±aÛvv·ÿë}Æ„c¿$InÞ¼¹µµ•¦é°çu ‚ ˆãAÅ4M-ËBlm;s@ÿq×ëuY–ÑBÍöŸ½Æ9ÉZ­¶µµe†ëº<¨×ë˜Ïñ}ß4Í ¯ä8Ž$IéV«Ngmm '™H–÷}G•KKKPèv»-ËrŸ·Æ·À9—$éƒ>HÓ”Z A#Ç~¸¿¿Ÿi‚ŒAÔÿç8bf!ûÖ[o-..—øY–Õn·ïÞ½Ë+•J·oß6M3Žc´[u]GÈBÛÏž=‹Ûn·‹ò^(`ìÏçó¶mÇq ½„”þ¯÷E¯r]×qœO>ùdØ¿)‚ â8¹|ùrš¦ü¯Ì#L‡ ªÏÄÿ—ËåJ¥’®ë𦹮‹(öcô? á–1–Ëå<ÏÓu£+º®#Þ òù|>»uApþgÛv>ŸgŒY–…ÀwI’DQìv»È ì3§º¾¾nÛ6&E]×½zõêÎÎõ? ‚ F†ùùù4M³R^Ö³óŸýý…B1Ÿ^]áœC´c333–e)Šâû>cl||õ™®ëœó'NdÏÌôŒ1vòäI\YEÔ™ŒY–…Íd–e†Á+‹‚ à­ã8Æ677qe\Zh†ïûxS\-“ØìÆ0D“Aù·A£Çáù·ýýÐHK’$õzÝqhR>ŸGÞ:D¥Ñh ÎyµZ Ãpbb¢P(H’áEÑ÷}(Öôô4ö–ËåLÆÆÆÆPÀ …±±1”z0çá|ßGKS’¤ééé\.'Ë2clbbBÓ4È0¬Ž¸Ÿ šÍ&¤¶m3Æ*• >?éAÄÈs¸þõ÷ÿAÀ 3(³8ça‹EH´çÌ™3ð*H’T,s¹\¥RÁƒ À™\¥RÉçó°ô%I’$I™‚âH1†ÑMß÷WWW³º­P(LMMݺu ÂÁÄÄDvÈs]wcc#Ó?Îy¹\®T*ËËË“““Œ1ß÷³ä[Ò?‚ ˆf ú¯ÿossSUÕV«…ðĉ˜7Ɋ¬ñˆþäo¼‘ÈMLL ðš™™±m»^¯·ÛmÔa–eAP«ÕdY6 b)Š"º£cccð¿W«U\êôéÓ‚ `SÌæææÄÄD©TªV«¥RéÍ7ß\\\Äûjš¦( ® Ù½^/+X1)JúG1Ú®ýý²,7›Í8Žq˜W*•r¹œiš7t#Ûí¶ã88Ä‘ž®ëŒ±S§NU«U>®( äœô b´9\ÿúûÿJ¥Òäääââ"çG}8œcŒMMMa-u¡P(‹+++åryll Ѳ™Œá¬Î÷ý$I²áT`ù|~bbB’¤S§N1ÆîÞ½ÛëõÆÆÆ¦§§a{çœ///çóùÉÉÉ;wîôz½V«åº.Úžh½â`òõ×_gŒ…aˆQtP³²OUU<†!ŠHÒ?‚ ˆÑæpý³úúÿšÍæäädÖQ,—ËËËË­VëÞ½{(1 *I񮮠 xÊ2Æ샌1Ó4«Õª,Ë-Nì0MÃÛÜÜ\]]ÅÏ–e­¯¯£;Š«až[ÍcÅbÑq(nö`©TÂlKvdxæÌ™ååå(Špd¸¼¼ŒœwÒ?‚ ˆÑæpýëïÿËb“‚ °m»Ñhôz=,ÂVŲ¬,B> ¤È ‚P¯×£(jµZ¢("®¨Óé ~ §t®ëbÛ'|~†a@óêõºçy®ë*Š¢ëzÇŠ¢`MŒ žça(¡}ˆFBo6Š"MÓ² lÓE1Üš®èÙ’þAŒ6‡ë_ÿߨ"˲ïû0 :ŽóÎ;ï¤iº³³3ìßAq<ÌÍÍ¥išmûBìM¬Aü£ \€FIW®\IÓtwwwØ¿/‚ âx¸páBš¦ìÃ1NÜõÿ*hŸ"ÚPUÕk×®}óÍ77oÞv^1Aq<|ñÅ>äœgÇd¾ïK’4¨ÿoT‰ãùGȲe9MÓ?ÿüsÈÿ]!‚ މ½½½4Mr Š"&HÂ055äœ#%éAñ TÿõñÿÙ¶ž'clrròÌ™3+++q Æж LÓ|¶ÔÓ4mzzš1¦i4I’ï¾û®\.W*QOž< ù|ðà®EQµZźl;#ý#‚ ^˜Ãõ¯¿ÿOÅ^¯§ë:®ëõµµ,Q)Žã¬ª3 ƒ16==-IÒØØX¥Ri4N§\.3ƺÝî³½Ó©©©|>™A666¨ÿIA¼$‡ë_ÿ<ƒkkk–emnn2Æ …BE¥R ¥^Ǿïcž3¢¶m{ž‡g¢ÿ933sÿþ}MÓ xŽãœ8qb||¼Ó騪Ún·eY^[[Cíêꪮë¤AÄËp¸þY}ý4t8QÕ1ƪÕ*úŸNGEÌÈ$I’ÕŠ¢à€0(%cLQ”éééÓ§Oã:årc/ù|¾X,®¯¯cÄT×õn·KúGA¼ ‡ë_ÿŸ¦i˜OãããH&Òu{…B¡R©ÀToYc ’Y(Z­V£ÑÀÓ²AEQ pþ|¶eŠ+K’+éAñ®ýýG¥Õj©ªjYv¤eÓ¡G½çüüùó½'Ož¤¤‚AÄÀ\ºt)MSMÓ\×u]ÉGhgZƒøÿŽŠ$I²,GQÔjµ4M[ZZÂìèQ¯Áììl𦻻»¿ÊB"‚ dvvvwwWQhJ«Õâœc7‹5ˆÿït ËbêõºeY¿ýö[£Ñ¸wïÞQ¯Ól6‘ôÓO?¡ìƒ AÄ ,,,¤iŠI’4MC îòÿŽ„¦i†aAàº.œFò{$LÓüì³ÏêõúÂÂÂÅ‹çææfgg¯\¹2ìznSöØ;“ß(În¿=¹íö€Á ”?*+ô‰ $ ÃuD)Ù$ÿS6lˆq»Û=Õ\õ֟ߪ\®®êòæñžshX(AÄyæÖ­[Ož< ‚#@5MÓ4 }”Ö¿áÿ›[[[ù»ùçÏŸçyþ7Aq.ùâ‹/ò<‡ì%I⺮eYÿ¢ÿo^Ü»w/ÏógÏžåyŽÈúGAœOnܸ‘çyEišrÎÛí¶eYašÿ’ÿo^à=Áqå›÷ÿAÄ|¸{÷î›7oÚí¶ùvìYÇš¦Õÿ7±Àouu›Œ²,Seii‰16`uÇv%˲àvÇð„•º®ãyŠ¢8޳°°P­Vwww¯^½ÊÃ×uã8vóBeYFƒÁ@×uAVVVp¥¦iµZ É\]×}ßE†‡ÍÍÍ¿iMAñ–Ó÷ßžìÿcŒmllˆ¢˜¦i³Ù¼pácÌqœ0 »Ýn¿ßÇ.xÃ08ç‚ ŒÇcUU]×ͲL„Á`0Qot]7Š"¨é/¿ürÿþý£££‡N&“N§Óëõ0/t2™xž‡'jš64M3 £×ëaƒ¼,ËarÎG£‘ïûI’ôû}Ò?‚ â8§ëßÉþ¿ÅÅEƘ$IÐ0ß÷Çñ}Ÿ1Öh4t]¯×댱jµº¼¼\©TlÛÖ4½eeeEE¨#ÆÏÔëõjµÚï÷/^¼È›N§¥R©ÑhÌf3D™éðñ,ËDQ,•JkkkxÐ¥K—ciš:Ž£i6ŽÇcÒ?‚ â8gŠÿNðÿ1Æjµ²–e¹® =clyyF ä!¡X®k×®aäD C± ÃPU—©ªŠPRQ”B,÷÷÷cò²,«Õj«««ƒÁ`aaOߨØ`ŒZ–¥išçyA8޳··GúGAçtý;ÙÿwppqBÜV¯×ƒ àœ×j5ÆX«Õr]WÓ4”èF£‘,ËW®\aŒ ƒÑh„χCQ9çQ5R©¤ëúÂÂB¹\vQª†[DŠø¬išFúÇ«T*²,dM£(E‘â?‚ ✮'ûÿ$Iâœ'IÂŽÇqµZeŒ¿šN§;;;ЭJ¥R«ÕÒ§®ëú¾E€¸Øó< íÉët:œóJ¥‚û»®»²²R«ÕŠ çÂ… ívûñãÇ–e9Ž#únHÿ‚ ˆãœ®Ö‰þ?MÓ&“‰¢(žç=zô¨È^}1‚ >Cgš¦(ã¡åT–åÃÃC4° Gwp§T*mll¨ªºººÊãœgY¶¾¾Ž[I’„+£(*•J8Yh§$IEó§a¦i’þAÇ9]ÿNöÿ!Î ‚@Åä9}ßG`gšf¥R)—ˆahšÆ9×uÁ6¿ŠÅ9·,Ë0Œr¹\.—‹Ô¨iš°U`{Zf8ç†aàƒÁÍ/Ífg²,3 CQ,ÅM’„sNúGAçtý;Ùÿ‡¨k}}¿z½Ž{Œ±F£t² 퉴äñd)’«Ô ŽæÐSSDuX×[GQ„+!¢ÕjUÓ4äB |UØ-677ÿüóÏ<Ï_¾| !|õêÕœÿöAÄüØÜÜÌóÜ÷}tÀ¼À9?«ÿo:*o ÃPÓ4rÎŽŽ`Q¢H’¤ãsÕ°iwÆÉ4M±Š0‚ ¶··³,3MWB“‹ã‡>~üM4‚ I ·ßýû÷'“‰®ë¢(â} øuëÖ?Þ¼B‚ ârçοþúKÓ´(ŠF£ìy’$Õÿ·»»;Õ™¦ W»a0üøãðÂ뺞¦iX­„h)P8ßÛí6–0a3»(ŠQÁMˆ+¡|Å1ÚAñ<º°ú¥i*Ëòp8Äaʲ|óæÍ<ÏŸÑ~é8Ž ™†IkÅòwY–MÓĘ˜~¿t¥¢(£ÑHÓ´N§3›Íƒ òaB¨]×5 C’$˜6‚ ˆã¸Ùl"gEQψ‡AÄyæôý·Î‰þ?ÆØG}„µ´õz}eeEÓ4ühYV»»»š¦aGfÌ`€õþþ¾¢(ý~ß²¬ápè8œy²,Ùî8N£Ñ(6Ü^»vM„,Ëf³Ùîîn·Û…ÊA€92’$†Gcà6Ë ‚àû>éAqœÓõïdÿ¦ˆaÛ{¯×SU•sŽ!œœsÃ0¦Ó©çy÷ïßǾˆ†ÒV«¥(J–eY–I’ÔívÚívš¦ˆçp[蟮늢û"’$9<<ìv»ˆ1±Æ¶m×u±ÿA–åÕÕUÆ6bŸéAQp¦øïÿŸ¦i²,C¨°~Ý÷}üè8N½^gŒ%I²²²‚hLUÕ‹/2Æ¢(züøq±•J¥µµ5ÌÎ><<Ôu]×uÆØòò²¢(õz½T*9ŽS.—qg„›ˆc—/_~ðàÁþþ>c¬Z­ñ(c,MSÌÈ&ý#‚ N׿“ýØ1±I’dww÷àà"„ d©TbŒ†Ñh4*• äú$Ë2ÎL§Ó(ŠŠ¬)†ÐL&“â²B_+• ’¢º®/,,à|EåryiiIEÆØêêª,ËPAl„Ÿ‘ô ‚(8]ÿNöÿišÖjµF½^ÇN¢n·[«Õc£Ñ¨\.¯¯¯s΃ €Va cìÊ•+­Vkmmmyy¹Ùlöz½Z­váÂôÞhšvü#~ø!Ä ziY²£/^E±×ë-///--I’Q‡ËËËŒ±ÃÃC̶!ý#‚ ŽsºþY'úÿÆã±,ËˆÉŽŽŽz½^’$Õjuqqq{{{cc±šmÛ+++FÃóÿüó›7oþAq.ùî»ï~ÿýwÏóP¶C•íøÏ:Ñÿçy^á+@r2Iι$I¸cE¨ºéºÎ9ÿá‡=zdšf§ÓIÓt2™¨ªjF¿ß÷}ÿèèHQ´tfYÑ*º7mÛ–e¹(F†aÆ?ŽŽŽvww!àÚ½½½4ME±,K–å0 A(âßyçŸ ‚ ˆù€°¾ï«ª*IRQ<«ÿÏu]EQÐðE’œEbS„$IEj~y¸à¡g®ë¢{Å4M´}"  £ÑúWl@ yÜ¥ügq¬(ŠaI’H’„1Ü…@N§S¼!"Ü0 ƒCAœK5+üP¼³ÞîK?Ýÿ÷¾…wÇ4M¬ D6uÞß‹ ‚˜…étjš&Ú>%IBˆeÅÿ÷¾àyºit]Gw BI› ‚8—À° IÒ`0ðyòä¸þAÄñpåÊ•étjš¦®ë¶m#_ì_ó/ûÿŠ(Î(Š0Nƒ36ŒŒB81iŠU´ŽãpÎчtþYK„‹„a(Ë2 ‰yžß»wo2™¸®‹(,Ìó¼Ýn#ÆZE”«²,gYÆ9Çٞ뺊¢À8oÛ¶ïû)p]—VàAœrßëèÿÃÒ†Éd"¤+ Ch•išØQt/p]MÓ¶··%IÂ٣뺸B†¢(J’4™LDQÔu}<K’„ÔI’‹†„MӆáëºX(׺®û¾¯ëzžçØ©„µ¤ADÁáúw°ÿ%cìüùóXQë8N·Û ‚€1&Ër·Ûu§Ñh(Š‚¨kÓ4%Ir][Úcªªb#¼3 ðI]×9çõz½Z­‡Ãâ¸E£Ñ`ŒF#Ž`qq+“ ÇsssÅ5Iÿ‚ ˆÿp¸þìÿCŸ³R©lll@o‚ HÓ´R©Ôj5EQ iŸ~ú)R7cóóó¾ïoooC;›Íæúú:cìܹs(÷ *cLÅ,ËðÚ4Íz½ÎÔêÒÒc e„_¯T*išB_cyž“þAû9\ÿìÃöÿAc<σ2¥iÚívñ¦mÛžç¡\Ã.¤âÀϲ,œä•J¥<Ï¡dØCXÔmõz}vvaŒ•ËåÉdy ‚_Ÿ™™ÁŒh¡š¥R©x¤V«vð’þA‡ëßÁþ?Ti‹‹‹Å I’â8fŒ5 ¸ÎÑ´Œ¢HUÕZ­Æ‹ãî…r¹\©T8çû{•ÕjµÙl¢Xć5McŒU«UA ™–e'‹år¹èvZ–…'™™™Á½‚ øOýJúGA®ûÿšÍ&ÛÇÙ³g‹f¥R‰¢H„3gΠu‰^èìì¬ëºpÎÎÎ2Æ’$©V«Œ1EQÐê,—Ë8Û«T*º®[–…³@‚ÍfÓu]|²Ùl"´ Ûçñ´˜-—Ëx*̯bâÔ²,Ïó¾øâ‹ãþÉAÇÉ•+Wž={E&1-Ë2 ã-öÿ•ËåjµŠåï8 D Yar¨T*ãñxyyúçy^»Ýv§R©ÌÍÍɲ ̓¢zSUC¡hi¢«iÛö'Ÿ|¥\]]Åí¶¶¶P 2ÆdY.•JsssAhšvá´^í¬úØ/ÿÍ7ß<þüÕ«WÇýó'‚ އ[·nM§SÏó$IÒu=Š¢·óÿaž¥ßï÷Îûàƒîß¿_4'E)Fcò}úôxÿ÷AAßÿýÞÞ„ >:MÓ°×>ŠÿsÎ9—ey8"Õ%Žc|Å÷ý  ¥’$ɲŒÜjTšQ…aˆlkÃ0PÒ!ä·Cp(çÜ0ŒÛ¶G£Q‘Ò= xfÛ¶ qCÞ,Ë Ã3†aôû}¼‰iš¦ëz’$?üðÃt:}õêÕAq*¹téÒ³gÏ’$±, Ï ÞbÿºŽh?®¬¬ " ‚@’$tQA@ª'†3ã8–e‹|ßÇQnllX–Å9ßÚÚZ^^E1Š¢,ËÖÖÖ4M3 £ÛíîîY‚ÐZhTÐó»~ýúW_}uíÚµ¯‚ ˆ“F§ÓQUu4á¤Û¬#úÿNªªÞºuëÑ£G{{{Åí_ýu|¼AÄÿ‚(ŠÓéT×uA`þà ŒuDÿßiÃ0Œbwà‹/h‰AÄ åæÍ›/_¾DÏs0ضýßüëƒýŽãhš†_EQUÃ3°ÀÃŽìD—Ù¶€5drÂ9`š&¼óÈÿÔ4-MSY–mÛFMŠ ÐñxŒƒJ¤ÉDQaÇ«««¸‚eYpÙ[–Å9O’žzMÓð•¢· O}¿ßÇ38Žožs2™¬¬¬H’´±±Ñn·Ñ&Æ“_»vm:¾yó¦ø• ‚8q¾ÿöPÿŸeYš¦F£8Ž{½¾¬Ó4'“‰eYä„@æyŽëÝ»w5MƒA¥0#Šbžçº®#8›™’$YYYÉó\UUä«!wúðáC˜Bê¢(Š¢–~˜9 ‡¶m#tcc mHY–-˰¤×ÇêyÄmcÈ…ô âýàpý;Øÿ×étP9bm„ã8Ýn»gG£ÑÊÊÊx<6 cuuŸG\XidY–aš¦M&Çq\×¢[ PŽF#¤¦AÐétÆã1Ö$!«{}}Ý0 I’VWW±V[  £¦iîììàïõ}¿ÕjÙ¶Ýjµ²,ƒ(ªª ˆçy¢(ÂØ†!çÜqœ~¿¿½½QÒ?‚ ˆ÷ƒ#Õøÿ«Õ*–³3ÆÎ;W\+ TU…ºpÎ'“I¥RE‘sEÑòòr†­F•†¾¥¦i(ÈÒ4u]WUUÛíöÖÖ–ïûh~"xL–åÍÍMA†Ãa–eƒÁ ÑhT«UÜ4Ïóz½^¹\.—˾ïã„3Žãv»ýøñcY–±–>4Qã8.•JhÀ.//#'Š"Ò?‚ ˆ÷ƒÃõï`ÿdÏ÷ý$I8çø-NÚÐl䜇CÇqTUÅNv³A€€ƒÁ@–å<ϱ ú„&üXÝ>×ÖÖP B\qJ‰£Äµµ5˲dYfŒ-,,@5=zäºn±S {zUUõ}±o‚ t:Äm ‚€çA•1væÌQ‘†!Š?Ò?‚ ˆ÷ƒÃõï`ÿ_½^gŒÙ¶ÆãÌÌÌÜÜf^P–ËeÆ”é£>bŒÍÏÏA¥ô???CÄ……è1Þo·ÛqW*ÆjM\üìÙ³Œ±4M‡Ã¡ëºüñÌÌ n—¦)c¬Ñh0Æ.\¸À9o·Û’$EQ$Ë2éAÄûÁáúgèÿƒ´˜¦ùðáC×u Uƒ„„ak6›Ð¼R©u„4¢áY*•.\¸ðóÏ?—J¥?ü»j]×-—˸>ç::Ó4ÅHêp8dŒa¤svv¶¸/J7EQc/^”e¹\.—J¥ÑhTT«ËËË¥R©T*õû}¼©ëúƒðÚ²,ÜNÅ8Ž777'“‰(ŠY–‘þA¼®ûÿ OÅù_£Ñˆ¢HÓ´BTPr1Æ µZ ‹úPoáL(>‰#@Ã0jµc,˲$IcsssØèyZ¯‹‹‹KAé†7ççç1½ QÜÞÞÆe!uFÃqœ<Ï -dŒ?Þ0 Q±,0 CÆØÒÒ~¦iŠ¢8E!ý#‚x?8\ÿöÿAx0Éž¡ išBÞÊå2^ÔëuÇq QÇø"¼ƒÏBð†Ã¡¢(¢(â‚°Fà38„­ö<e_­V3 Ã8˜ˆÁ›EQXh.577W¨2cl2™ôz=Œ¡v»]<3‚­1&#Šb¶m_¿~}ºOùöÁA'…wõÿá"´ººZ.—kµzž žç©ªŠs;¼9??ټƴ Îä ĽÑM­V«P èeªªÂÛ‡wã2tÿ±¢(Šx­ªj³ÙdŒ­¬¬ ",AQªÖjµùùyQÃ0ÜÚÚÂèMµZEÿÓ4Í<ÏÇñ}çŽ7nܘN§ÿý÷ÞÞÞëׯ_¿~MHqâxWÿ4&MSlŽGŦiÚùóçcÝnòV«ÕÇ¡·YHÄ1†»jµŠ°Ïóp7™LÒ4ÅŒaðä麎oÁ«ÇöÌà[I’ ÎÃ<ËÒÒº²KKKÝn·)$3ÏsI’Š •1vöìYÃ0vvvàŽ€ß4Íï¾ûnº¯ì{ýúõóçÏóß ‚x{ÞÕÿ‡&$çœsžçùÊÊÊÒÒÒÂÂÂÚÚZ³Ù¬×ë•J¥^¯ ‚ ëzQáAA³Ùl6›ÅlËï¿ÿŽ? ÃPUUˆN¼æœoooa1l(Ñð<ÅL)Ü÷ UUggΜÁÇlÛ–$)IH)ð}?Ïs Ë”ËåN§ƒ¤˜ÝÝ]Û¶E¹zõêt:}ñâÅqÿÛAÿ;ïêÿƒ· ˲àÉ[__GÙýû÷G£‘ I’´Z-ß÷Ó4µmÛ4MÛ¶9ç÷ï߇9/Š¢_~ù 2–e!œV<| &¼(ŠZ­–çyš¦éºž5]×5MC š¢(»»»¦i ‚°¾¾^rJ³,“$É4M\snF1#˲ ’$Á³?ƒ àœÿöÛo£Ñ(Ïó¯¿þz:¾|ùr:>}úÅßAq¢xWÿŸeYŠ¢ ¶C~ŠëºH/Cf 4ÌqœÑh„QAp¦(J†0ÎGQ†a†ðØù¾ð³$I:Ž –eÁ;<²]Œ}xž³¼ªªY–¡ÉÁÅ‹q"ÇqEXrŸ¦)¤â纮®ë’$AÎã8î÷û¸»$I8|ðàA«ÕâœþùçÅÞ¼yCÍO‚ ˆ“È»úÿ vØ™äyÞ½{÷×9™LÃišf¿ßÇ‚ÁV«¥ü?{÷Öã´ÕõÜ9gÌ P¨Tª~¬^ôéE«Ò#*í÷B-¢L†LƉíØñi;v;Žc'™C© HUi{Sªy/þÂâ½y53Pñúÿ»@aÈÁ RÖ¬½÷ZË0NNN<Ï“e9I’$It]Gú…s1yWkôm±, €-F˲¢(Òu}0 LæÐüÓuÝv»íº.&9 ‡Ãv»Çq²,#SÄ!R´ƒÇhƒ35A ƒn·E.@Ó4tîF¦(„¸uëÖé‹ó/øÿ!"¢·ÍyëÿБbbp„eY¦iA€nÝxlEŸ|ò‰®ëßÿýÇüÙgŸÝºuëæÍ›ŸÑ[å¼õEcYÖ|>öì2¿<|ÝëÔx•çÏŸÿñÇÏŸ?GÒ‰DDôÊ<ÏÃ’!’UUÏZÿW4†a`5OXÑ€ÛÍ0:«Íè*‡C°½ô6ÉG£c¬ëºg­ÿ+šü4¬ã8X¼õ<{¯6)ó¶¸,2Ñ+˜Ïçžçáüæp8 ‚ Š"ÏóÎZÿW4ˆFy‡|ˆ¯;ùó} Ó˜§¨(J8@ûºã.ÑÿWh´Ç1ÎWÚ¶íº.6½³ÔÿÐË»£Þ‹‡¯ûÿ©ßï‡Ã$IÂ0´mÛqœ 0 ‘ˆˆ^Aš¦¾ïA`Û6&뉼³Ôÿ –‰ù/çÕ¯ûÿ 5‘˜koY–¢(Þ‹`LDDÿ-TxžgÆp8Ä©÷åý?ïÿ¬ÿ+Çqì—!|ßù·†×äÃ?üöÛooÞ¼ùÑG}÷ÝwwîÜùôÓOoݺõoŸ&"z[}ñņa,—Ëù|†a·ÛE‰¹8cý_A€ÆiHŸ^÷‹Þ¹sçÉ“'§§§þùçßÿ}zzú×_ýÛdž‰ˆÞbBüÙjµPçEï,õ¸ˆ !â86MÓó<Û¶ã8Æ:áh4Šãøþýû$¤i ]×Ç®ëâ•xQünš&š¡&= CÇq†A€ût:ô‹A¯5TÇ !úý¾õõ8Ìê8®$xÑ2-¼¨mÛI’ À£4>?‹7Øï÷—Ëe†ív[¡ëú|>WGƒÁl6CßÑ(аPŒ¶5X·Ä¬%\ þbí‡ab®¯ëº–e !püÕ÷ý›7oþóÏ?§7HDtAÎ;ÿo0 môd2¹wïžiš?ÿüs¯×ÃÂàÁÁ‡$ÑŸe¹\ !ðµŽò5ß÷ñí?N1ÞM¨u]O’'MÓt]KŽÝnwµZ%I‚€‘eY¦i"ª¥iêº.Zrkš†^£Þ‹S*–eÅqÇ1zÐä%tI’8Ž£ª*º€bƒM×õÅbÑn·Û\×].—Y–ɲ|||Œâ‡ÃÃCK¢BÓ4ÄfY–±¬¬ë:¢þÞÞNl∑ÂqœÁ`Çq«Õ‡óù¼ßïƒ$Iæó¹¦iý~µZɲ<™Lÿˆˆ.ÖyçÿeYvïÞ=Üõ×_N§(‰C*³X,&“ X{žç8Ž,ËZŠ¢8Ž£ëºb0L§ÓV«DZã8h`œo? Ã_~ùaaf0Ü¿µZ9ŽóàÁäO8§“§b8Ìcšæl6C‡¶4MqÈÍÏp¢g)qÍÈÉpVQ”$I,ËZ­Vš¦áÍöz=MÓ,:Žƒ)BˆétŠ#šÓéôøøØ0ŒÕjÕívQ¨>›ÍpÄhµZáS–e¹Ûí"@®V+œ°ETβ¬Ûí s~cPU•ñˆèbwþŸçyOŸ>E0ë÷û?ýôB–Ñ„CòÝ2Û¶±„˜¦)ò*dB³Ù,ohbš&BKÇH Ñ_´ÛíâI²,Ãâa–e†a`Ä’aXÆT%Ë2„(LuÀcódTÑívq“t]÷}?I’ÝÝ]¤e{{{Qiš†ËétŠ˜„˶mk¡XDõ}mH‘‰jšöèÑ#Çq\×Åóã3l·ÛÓéôèèèøø8Žãv»°ša’e¹ V‰;ÒGÆ?"¢‹uÞùùØØjµŠÁ¶ÓéTUUEQžä¡K¬q !TUMÓÓ$’$Á ìb~Ö*‘ó麞OåB4›MŒÕÅÁY$vpˆÝA®Å8 ¤˜‡‡‡­VKUUMÓööö>ñr£ÑèÑ£GØ×ô<¿pÿˆèÂwþŸ$I•JÅqœñx,IÒÚÚš¦iQF£ýýý“““ù|Þn·?~Œ¬9öêð¥L ùÒ4Íg¾çóÒõz½ÕjÕn·÷÷÷‘Ɔds‹TU¢È²,3. „º4MUUÅ«ãíáâb°Ô‰êt:ÈÕ}b<–1³,CضmûÊ•+y¤O’äàà MÓN§“ÏÁüúÉd’$ vþ°‘‰hŠ5á0 ‹v1à·Õjyž÷ðáÓ““»wï>zô(ÿ LÓdü#"ºXçÿW¯×%IšL&Ƚ°‚'Iþucc“cßÿ}äL•JeµZíîîÖjµJ¥²±±!IR¿ßÇñ'†ümmmI’T«ÕšÍ&Æõ}ðÁxæíím˲ Ãh4’$]¿~]’¤,Ë/!ÄÑÑfÁãúkµšªªI’àò\×Ũ^OEЪT*¥R©ÑhDQ„¨Œë¯Õj®ë"eDÇ¿ŽÇc|ˆvHþ|ßÇ1¶-ñp$ʈÜùò,ÖÑóOÎøGDt±Î[ÿ‡dÁwúÕ«W5M×;‚V½^¯ÕjÝn?‡˜ºŽd1·¹¹‰´ ÷Ñ4­Ùlâ!P*•¢(’$éÒ¥K‹Å¢ÛífY† @ˆÂçó9‚¢(®ëÖëõR©„0¼³³“e™ïûªªbSibž/æé&Þ<’³F£‘/¥îïï߸qckkk±X ÂáD®ªÕjáUPJˆ§ÅŠ®¢(u¸'ª$IØqÄõç+«Bˆ4Mó N‡ñˆèb·þ_ÙBœ™l6›¥R)ßD#Y–±¯Öl6×ÖÖPT¯ÙlbAå?üðÃööv¥RéõzY–áI&“ FÿL&MÓ6pìIصk×Â0Ä‚!¸ CQ bp¾zïÞ=]Á \ÿl6›ÍfBY–Q&ˆ|¬ÐæW{éÒ¥<EÐZ[[Ë£Nºæ·Q&1Ö×××ÖÖjµÖ]¯_¿þðáCœGMÓ´ÕjáØ*žgggG’$Y–£(ÂÙW|†ŒDDë¼õˆ ùA’õõõýýý$IªÕêõë×ÑÁ«V«mll áË=MS<¶Ñh¨ª:N·¶¶êõºmÛX Œ¢¨Óé\»v­\.›¦iŽÒ`•òƶm£áжív»m¶Ÿ£ ý_ˆˆ.Üyëÿ?ÁåË—ÑÓÛ{ùÊäÎÎÎÁÁAEkkkëëë«Õ û‚¨vÈÏC¢JYÚt:FÝn7_–¬×ë½^/?íéyªÝg³Y©TÚÜÜD$6MS–eTöû}Û¶±ÿgYV~§T*!#D§±üú766PÉ7 p‘Š¢Ôj5<ÞN¾µÙétð¢ˆýlP¯×eYF•J¥Z­nnn¾óÎ;NÍQó],çú¾ï8NµZ­Õj—/_ÞÚÚB7¬9£åÍ`0`ü#"ºXç­ÿó<ïñãLj4(ÖFÉ9î'I‚/ý££#䑨jè÷ûiš*Š‚/zž‡Ã(ŠºÝîl6Ó4- C|ûcu4I¬âð$QQfÞétTUͲ 1Õx«Õ 7pÄuÝápˆù采‡¨*1…ìËIDAT¸‡Y–¡wv½^o±X†aš¦ýÉt]Gs²¼7Ûx<îv»®ëbÿGZÐY&Š"¬¦zž‡wmÛör¹D3R˲Â0DfŒwzxx¨(J«ÕBC54÷Ÿ[–…¾0ˆdè¯íyžªª(6ßÛÛó<ØB`õçBß÷Q#aš&C ýJ¯×CØC—2ĹÑh„aC‹ÅõïØó<[€èI†Ø™'…žç¡,÷AóôËFGlôŽA¯EQòH‰~¤x]Ïót]Ï›¼¡;Ê0#Â0 D>¼Ù0 Ñ®†®4ãñ8MS|²/ÌEÀöŸ—ã8ÆWh¸ÝnÇcùÃcŒ1¶ÿ÷Ÿßcø„ã8¶m»ßïËétòþ@Äårc¬ëºÌ9¯×ë·ÏŸ°®ë¾ïû¾/ï÷{]×oþE€O™s¾^¯9ç?(6íï2•'¤IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/graphfullresults.png0000644000175000017500000000567412032647206024477 0ustar ebourgebourg‰PNG  IHDR <”7 ƒIDATxÚíÝm–¢ºЮ^ÎÈ“5&“Ž©·9—Å !„ aï½R6òÁ‡¾Ç/ .¿ux@Àð€€x@Àð àxà.ºÎéûû»ÿçFOŽn§’3ò`~fÍX*cS\2þ{àõ§‡t£‚¶ŠœaÚåßÙvtª™¨àá¤úud<{(.·ž`üûYpðÀ Edg¯?û!× 3<ô=LÊ`à±î¿½ M‡³ð?÷‰ƒѽD¤ç­{{N¯ÂrÑñhégÏä!ýâ÷°»“³ [œÔp¢<°‹ÔjÖèÀc½Ó﬒·KôD-Þ^¬ÐŸ‡Ì¥H-(ëð@yàEÃ,'„º¢½w{äyòlBô¿­û¬;NðÀ¢Ú÷=‰»Åøç^^×ßqYåôÿFãd•æÁÿF/ ;è‚OžMˆöU?’WÉøÕÇ -ÙÁ½ìª·Dö•è!'Œ-NY†íÉcéùó–?NPÁå9™1ù×Çmz_¼-FÛÎp¿¬.Èäéùü¥pm*x`ý"~xP:ÉуØc‰¾EºgE/m4ÑÓ Õ¿®0sÞ&‡Tdz¢/ë°¼ªöM*x@Àó9DÚïUôMÓøx êv»5à_î÷»Ïçóz½¾þM ã<LÎAnð à€#˜¸È.zÏäü²îëë«müùógù¨#é&49¹n<Ã#Ye¶'' ¹ßåúg.ß³7Û*ãF¾<àmÊÑ÷ô_ù5òŒÅÉweܯvW·þŸ­ ’^ì<÷øA´:/Ø_N}læ£\p|nœkúî TA„w/öÛ¿zGø£O¤.+ŽƒCÖ­ 3_|çш`êc3Ÿîô‚pfY‡è»g$÷_Kè¹Oœuðx&~ØHì ¤_LL¥,Èó§X6äºïàt?VÄG³îx l¬N]«~]÷|æ%xÅ{KÞ ÀÙ>ò%—Óot½^p!Þ~º¸ àà2‚Y;Kv&8§ý>zEÞd…š“aÑëÑVÜØbléÑ.ù_Tð3Šø¶=÷`{ð®üR>ç(t7L°CÐ}a>yA]–ô‹c^*¨|àߌØíóà›¦Yþ49‡¬¨ÏÏÏÏ+"=MN§ò€W¾pN—=ÏÜóùÌyä-Øï9ø—ëõꀱ2øÀ¼Ï ¸È< à€(9܈~xgºèêû/v‘ÍŸ\tüà EŸz—yæœÌšçÉeéf/±,ðÖ€/3Ü!ØzZýÒçÄm~0¯Õ€|wKùè³b£‘ÙEo0Xblskèà]có39'ùC÷r!Œí°@±uÎÁc¯ÿ_Ñ‚µÿ–n˜íŠû6›ûÎI0ÀØ<ËÝqY²DoëÎ^Á¿G?âýg&Ã2?MÓÃ䌧àyz¿Ü€9A|Yq\KÊë7tGôÜÁ¬ÖšPN®ßë¾~ä×{…ÙõŸìÞÆÕð•¹åu"ä†gÁ‹C·x€µ&´°O`Àߴ‹º¹…u?<óÛ9Ê|àF7Áåu¿þÿ{¶“l8Â`B“sR<ÏéñÌêé@±¬§É=ŸO'€`2CÙ­j B< àx@ÀÀy\N¸ÌMÓøàÙ§ÛífeÞ´ÇðzžuïrÎæ~¿[;Ù›öæsx敹¬Çðz’uïbM…ýFeß›§M¸âc•„³µî|&ƒ€ xð€€>ÂEv@µr~Ðå‡vx€ãI_êì‡vø}÷ÿ|<í+ý†>…= ¶â3l¶‰üþØi­¯²ösÒ鉾ù{;Æ2Èæ¼~ßïV] GÔm¹ßÙ·îç7ïÀµÓÝÕ‡»pÆÔo øÉNî¦ú™CN¾ X½ºJlžm;úbt¢‚ 6±hù‡0ƒ‘ä÷yú•±/äví'•˜Õè캟ÔpÆfåE7L°,‰£ÿ›ÙÕø½Ñfðø+èÄà¡ýsrÈá»ÆÆ,¯8ƒCtÑ ­¿1¦·ýš6رE›»PcœèóàÅâþ ¾N÷Ù±ÃYî|kucÍ|×s÷z‚á=ë,¼¿  B*ÛlÓ½‘˜Yeb~Ÿwrô-ÑBÿã;k v³Î`é9ø…kjñ.°ÏÖLݦTvšv¸Ùv¯Œ>s?¯8±NfÝý¶“üº;e+¨Õ>WíÁØV<<gƒÝèÛuØÉÈ‘À¶w² ¾ 7~ `{ûÞìH4‚K:98ï™_DE/gÞh§d‹;:¶üɵæÈïí>ÈÉu%rõñé/µœ¨˜&ý–ƒn°ß=“‹–X¨`<Ë¿Ü&‡Ùm‡o±zD?‚œÏå$9ò•³`íÍžªYfÏfŸ~~~^k欻ªµ+óÉŸŸ¾ÍívKß°¶¸ûRANä/Â~Öº~Ÿí„ÌPv«Z Z¯t}n´Cýuõq£ýˆ‹PÍG°ÔlÓ«ŽD9ôRõ‹xà#Nzþù|¦/¬+3XëíŒ?“{©lq¨ì«Óʼiá+ôè랟ÉùFÀÊ Öºór*”[ÁÛ_€ÚÞé8‡è@Àð€€<œÇ×ívÓ P“ûý®‚€ª´¥û¥ÿphMÓ´·§SÁ@m廀€Ú*xÕð àx@À< àx@À€€× àx@À< à€¹t­¦itÔáëö×õzÕPO¿ßõÔðÏçS/@e\dU|ÿ4¼¶¶¶¶¶¶öqÛÿ øçóÙ]H¯­­­­­­}ÜöË×ãñèþ+ÿ»³òÚÚÚÚÚÚÚÇjG*xû;ÚÚÚÚÚÚÔîñ ¨€«è Bÿ»“^€Ê\tÔ¤½ý¥ûCÀÑ5MÓþ Þ9x¨ª|oªªà<TKÀ€€< àxð€€< à^€€< àxð€€< àð€€< àð€€< à@Àð€€< à@Àð€€<x@Àð€€<x@Àð€€x@Àð€€x@Àð àx@Àð àx@À< àx@À< àx@À€€< àx@À€€< àxð€€< àxð€€< àð€€< àð€€< à@Àð€€< à@Àð€€<x@Àð€€<x@Àð€€x@Àð€€x@Àð àx@Àð àx`e—®Õ4î€:|Ýþº^¯úê©àï÷»^€ÊüœDÛØ z¿IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/sample_result_config.png0000644000175000017500000006322212032647206025266 0ustar ebourgebourg‰PNG  IHDRu,*üÒ¡ pHYsÄÄ•+ IDATxÚì{\WÞÿ¿„„KÔŠZý­¶Vq·(¸ "xéE´¥h1åÁxÉj+¤Ô²O@«€ Péòà.ñV„"VE XZ4«²¨(Æß§MÃdˆˆò}¿òÒÉ™sΜ9çs¾ßs2:-Š€ ‚ ÈÀÉ€fã±.Ad@øßÌ$à’/U•åX#‚ 2Ppé£1cͰ:AäI¸ÝЬî_`TÑ`\\tz?¥ÓóS¨¦S:þg‰Â\>¦$¬§tØSõˆû‡3šO©„éh® 5«££¹5tØ ª£m#êh™Jcñuzi&¦ÚÒPáÚ¶{c³·”JyuúÐL,®ŽæSÚ4¢Ž6í«¡9túÙR:š/¨E_ëM8Ú4¢NŸÚW+™ôÞR½vrmQG램uºÞ¬¢vÖ‘½9túÔR:}¨Á^ûšŽÖ¦OãÍô«¥@‡­Gõ‘w~¢98Ö@A‡‹U€ ‚ jö!òFáÚóÿ/ý+‚ ‚ôNkóMm¢àüAAú€òÑÃ~§ÅýWAxп"‚ Èsè_fûÇ>>l¹aäSºÄ±O-î&Ñ&棌—éÏÕV›=ìï‘d3ÿ÷^«^£Åù™Ô'X¶¥I4}Jµñõ‡ÆÿÚ3ªõ«ïÂÌgNÐí_&G6ŒhN¶<ý™œúÌìÔgƒ÷·ÑE[Fm=Aç¶ý×LJ­=¦¸A§ãq§^»ט=/wo©…å2Ó`rPƒ¹§èóQ™F¾¿«iÀïaÁ ƒ>Å×[ùoˆZa²ÃÇt’w´åÉË0úÊðÅ»ÆËÞ4˜.º§ç¨È|þtý×6Ý57âÈþfžh껯e`«â_{FÀÜȦÝ£RF,µ7¨¼ÑÖ×Lv}`<ï5}§/š*ovë<} †-yÉûÏzvá-ØšŒ=îݹÊÒ7ÿ %´q;L¸\½.CÐ¥@§oó]—™pýn÷uè¶XÝ0¤ê+4óþß¼LÖÎ7ÿªÊæÅÆ|°>ÈïQÿºGYý Àöcý b¹‘¹çóÃ÷ÿu¿ÄÖþå³ÚÉ*ot“âýuGóSmˆõn/ýA3oÅÎŒ ÈÐô²Ä¡çÚ+½øK®ç%ÎKõx§JNŸÒ¬qߨ{ûFe‡Œ˜`Á€{û~‹|o¯üº×‚|H`ŒÏK¿&Xüš`³â?>øn‚EòãŸþÛün¼Åáu&,t°Û#òT¡ç©£FO¥+ûä´ÜÕhooðàAhh(ŸÏçr¹ŸþymmíÑ£G)ª]©ì€ýëzÏ„Ÿ$)štâbüKÜèùoèÑᯆÜá¼w‹¿®Áe†½/ýÙ§-S‚Ì0¨ˆÜ<%ø6 ¯pÛ\éŸÖß HR,˜a°×ß´§s]»À8 Yáöå½µ ŒØ],Ù|9ú€8×µóS wÜ[;ß(~õÈ6³¬7Fp[ÑFýuº¾–Í`è{›¼ôûMðþŃîç]r~G‡¿ñ·{F~·_ß|÷¯ÓõÓƒL`gÞCXílHÿ»3ÿán_“5ó^ NmY,nZãüRO;ÉŠ dòª6¯]íô’ï¾f¯XÅj§—"–©¸dç¨&§/罦O\¯ÙÚ_É)r`.ø•Žœ#1ï5}稦¥»šg½ÂsžÆÓ¦B¾»ªÜxè9¶û¼Ùâ¿îý9´Éyšžt­ Œú¯ßVÑG6€e`ã¼ ?šc¸&¥uùž–æ†zÒ§¼mõ]þÞ²àïÍNSõb}Œ°ó#2h.VKçÚ»=²qc{k¸»»é<îe6Þ˜£gÐþhÌëÿ×Â¹ï® ÖcZZîOœ8©gò“WñƒnUvðÇðN|nõŽÃo›”ûÖšÝ“Ž­‹ vüÿ¸®ìòŽëw›P^¿ÛMŽùcÔíxÊ©‡ðŽƒ¡ZørCøæÔÃS?>€åÌû²äù¦>¦ÿ{?FÖËß2€oN·Ÿ®zDmn{ “¬tßþ¼QzºýÉ›çtµò5ѽ“?vN¶âæm± ÓMØó‘É­x˪+øó$=øÇùNŃî5N†°ÆÉPñ ûç;—Ùë@êwgj”°ÔN[—OÖ{ÿùãïj”àçô‡zû×=ªòF7Ì{­— I„ÊÝ$¾ókZ ÷£â«]ä8v¥Ñ/1#/D›‰½¸g_G8zQYüSý•æF#uùf78MÕÞ È¤ÿêË}Éð›÷_z ¿ïÏ «SWNvýK´‹‹G…wçÑnÜOs'Œ¾ÙuÏÔÔDSÍ»FÝ“=É'æp%ÿß~s 7z@ÏYÙ¨b#‚<9j{®ÚlÁöò|“®ŽÎcÇ36|ov`úŒÿûÎŽg™á¦ÃKçtuë—Ò}ŸÇ‰×¦dIÍŸ¸¿å2ò¿ïx»¥·NUCFëò|êYßdªºÜÁpí|£ÿ-o?]õˆ$Ô_õïßÒèÈ¥¦múõãy†{?6ûët½—îT;…¤Þÿxžqdå¹ç¦©ô»ö/Þ3ùxÞKäºÍuMVßÑtS§«M²â.±ÕûÇTÃm”ªsR´Qý+öÒ¯[.í°8:NWwn<ø OÉ_Ӏ܋´Ü/¨b#‚ ”sU}¾‰~Ü©?óWwoé¼{‹·âßoÆZè¬j°Oü3ãÌ V5è¿÷oÞÊ;Ü•õzï78äÓ3‡DYE´%g”~›Å= !kçÿöÐ ý“–øÿõ%Èþ¾]ÍÑŠsÀæÅÆÿÕðNòè/W˜°d²r¢éAwFˆ9ü¾ »ÉÓèãy† «¨÷Œ ‹yÔ{Æj+Ã×îtÀ+–œy¯ýaYR¡âì=?!ÎϤ$b$—È,–üûÊ(Îêß—mÉÙ–‡¿9ý¾9ý°åác2£¡ûK~s nìµ}¹ú¾cxöEµýcSC€Ô€dKuÿwíàm«÷ÑHý®ŸkÝû#À9ªÉ\ðë²Ý­ÿjüÍá]ÿµ &ZpæNe®¥·“h¾ýÛÂ2yÄI“ãL/é€Å³x$>ùŠ ò¬ ½©6›¯ð´_âïÿ¸¯xðøñaëó·Š>ÒÔ ÉÍ’¢uñc'æ_;¹/þõ§ÝV‰ó¤S~û»š»›štü×—bŽ>ø4£Eäeœ¸Ö¼¹íqòI¶?ýl~øxåÅHcÝCÁf±²¶Ï¾mÙ¼Øx¯¿ysÛã”Ó åôC‘—IÇÁ±?\{ô—°ß–4C3[›t_Ý9úã¿þá¯JVÅ7+t¯q6€ ý­Àôüp¬¬MÑöøaÚ˜’í±²!©÷ $íþ7§Ûªb¬&Yê‡úÊïµAüâþßÝᮂ‡aY÷7z¼çgÚüð±´‡›lys#›.þ«ëf¼Uë7V“,uÿq¾"þ·mÿwÓÿËlÏG#vå·Eä´õ¯5å÷ºàLèHE’¥BbùC”¹×Ÿõ`{N›¢º¸c¤ß¶?Dޔіúí¢F¾b©›öíôHbÓ¡ðûóêDý³=íÿÚ¥þ#v®4Þ]ø0*·»7‚ Ïʳö|¾©W/«Ó¢¸1Âl|Ueù˜±fCüýêÝÿ3¸+ê{ž|¿:kÍÈûÕ'ŽâØLàþóÂ#r|i‡…¢âolTO‹ïW×ÜL€ïWÇ÷«C;)¾_ý½_½8Z›ojóûþgNw¶¬‚¼ŸîÈ;?Ýnh¾zµòlY¾?Ñ–]ÛLäÉï5WÞè&œ#ÿµ«A„ô¯ˆ¶¬–´†/3>²ÁÌ܈sý×®Ôâvú[AçØ¿ê®¨ÇŸêy†´´ÃÆC~ó©:€m ‚óWAéE…è_Ad Ù(\‹óWA`ÈóÀOþæ‚ ‚ <˜¿ÞKhÃAAö¯žÖ‚ ‚ôJùŸ_ªÇõaAxп"‚ ÈÀ3`Ïç»öÂWÖ¢7'£bAAõ¯/¼ûAd ÀõaAÄùkLÊamÒoö+yBPlŠ FþB¾ì‰÷$¥c "Š A±!ÃÈ¿ë÷mw¶µµU*•ž:uJ©Tòx<[[[ÿqãÆ TYïܹóÁã”””‰'²Ç¯«« ˜2eʾ}û€¢¨€€€ëׯ'&&8™™™#Gެªª …$¤¨¨ÈÅÅ… >!%6"š^%Áx¶g ‰ˆˆxûí·5¥zÚgdd$&&@uuµD"©­­åñxsçÎõ÷÷733c¬Ø;vÔÖÖ&''¿òÊ+$Ÿk×®}òÉ'S¦LéîîþàƒæÎ‹b4ËÖª««¥RiLLÌ ¯g×`ï(rúÒŒFûùó¯FÌgíììΟ?ϰðSVV–˜˜Èçó/]º$‰ärùþýûP"ôñO?ýÔ« ù|¾££cII‰L&óôôÌÈȸ~ýº››ŸÏ§ã\¾|ÙÙÙù—_~A÷lÑ$6MJ¥rïÞ½ , R$½ùæ›2™ì‡~ضmÛíÛ·cbb+ÖÓÓ³¶¶öôéÓ«W¯V­ ´¶¶ÆÇÇÏž=›Çã¡ØDzõƒõë× ˜{Íá©:¼çÈh³é¬­£«g “£ƒ¦SpáÂ>ŸoccCWñ;wÄbqMM EQ'N\°`D"±··ß±c‰Z^^.‹ËÊÊòóóÀÃÃC èêêªæÿÃ?ÀìÙ³ËÊÊ.^¼èêê µµµ µµµgÚ´i[¶l±´´¤“øûû—––J¥RkkëøùùÑg­­­ÏŸ?ïìì|ùòekkë[·n¡Ÿ{V0*Š…§-6MãqŠ¢$‰¦„ÍÍÍáááMMM+V¬Ð”Õõë×Oœ8Aœc™×®]kkkK®¸eË–ÜÜ\¹\¾bÅ ccãÔÔT===¡PèààÀXöîpüøñÆÆÆéÓ§“IÀ£G>üðC]]Ý7ß|“®@ÆŠmnnNLL<~ü8í_Ïœ9NNN¿üòKFFFaa¡§§'Šíi[6Æ@F%ýØÙÙµ¶¶ÊårZÆjsJ‰D’——÷øñcoooÕU–¬¬¬†††ààà9sæ°O¾5©·çâ Q›Ý’B&$$°w.v£­}w` d¼‹æææ¨¨¨úúzŸ¸¸8m,€lÏ?èìzÐÙåäèàäè@@ÞÉòU-þ«¯¾ IIIUUUtxddäòåËóòò¤Ri]]]vv6ŸÏ¯¨¨hhh€úúúòòr20ÌÉÉ …"‘(''çСCjù×ÖÖÀâÅ‹àêÕ«$ð‹/¾¨®®ÎÊÊÚ³gOeeåöíÛU“Œ7nñâÅ÷ï߉DE½ÿþû£F¢ÏN:•”³ªªjÚ´ièäž!DQ,ŸA›&ÒÓÓY¦¤¤TWWøá‡7nÜДƒ‰‰Izz:EQšÊ,‹éSr¹üÓO?mooß¿CCC\\\ccãîÝ»5•„½;œ={–ÈÊËË€^ïe¯X33³Y³fÝ»wïÊ•+dqïÞ½™3gŽ5ŠäFrF±=mËÆÈ¢Iooﯾú*//qZyðàÁììl@”™™™‘‘¡Z¤…B±wï^öÊdQ¯–BöڹضöÝ1ñ.¤RieeåêÕ«éFѲZù×¶Ž.z ×Öѵh¾#då!á=Ç€aaa&L€ºº:¡PÞÜÜ ÉÉÉ‘‘‘ P(–,Y¹¹¹ “Ɉ¶Ž;sçÎuttì)…ÎÎÎëׯØÛÛ›˜˜ÜºuëþýûÐÒÒ"‘èçŸÎÏÏW+•»»ûoSu.×ÛÛ[m¡ûÖ­[r¹¼±±ÑÖÖܳR°Slôˆ› Èž°¸¸æÏŸO¦Œ¼ÿþû G¥Cz–™>õÑG;–ûúú’=¿¦¦&M%aï?þø#q–ÐÖÖGËŠýë_ÿ §OŸ€S§NÀ¼yó`ĈÄØ¡ØÁ²1²äoooOˆâwÝÜÜæÏŸO›°råJ²Fk°¨WKèBjÓ+5mí»c ã]îñã?¾ýöÛÎÎÎsæÌ9wîÜÙ³g cbbTe¬¯¯/((000øì³Ï""">ìéé9räHzõØÄĤ´´ÔÜÜ|ŸDúA¯ÒL±±ÀžÐÄÄäþýûìΆÇã­\¹’lçz–¹ß%aï<¯««‹¢(‡coo_\\,—Ë'Ož¬MÅêëë;88”””ìÚµ«­­möìÙ/½ôm‰hsŒb{ª–1ðIÄÜØØHËUuïL{´T/‡ÃQuZýè\ìF[ûîÀÈx&&&---J¥RuÐЧÚÖvþš”u¼×Qž@ pqq9w®î”)SÀÆÆ†”’ì$Б½¼¼¸\îÅ‹¹\®——]ýãÇËår—M›6©fNQTTFoZ„„„,\¸ÐÂÂbÍš5`aa¡¶FQÔš5kfÏžíããÓÑÑ!•JU#Ìœ9óÑ£GdØˆŠŽŽ&_ËÜ¿’°txë­·JJJ®^½êàà0yòä¿ÿýïIIIîî†‹-"æFSÅÀìÙ³ ÛÛÛõôôè?1"Î`öìÙ(¶A°lŒÚˆY$EGGoݺ566–\µjUgg'ùcèU«Vùøøô£2µTo``à×_š™™ÙÎÅn´µïŒŒwáççwãÆ´´´wÞyôôôúj:tZ7F˜¯ª,3ÖLõýê1)‡z.a¯Ùc²п"–wîÚ ÿûþøþœ§D_ņôîîn___Õ¿R{BÒÓÓ‹ŠŠÒÒÒúº8‰bC†8K–,YµjÕ²eËšššV®\9cÆ Õщ&(åÝÛ ÍW¯Vž-«à²‹ «Plƒ€®®îºuë<8€þµ¬¬, àyq®(6D{¶nÝšššššš 3gÎ$>õ óWœÞáüAéÚÎ_ûá°rAðýê8·CA|¿:‚ ‚ EAô¯‚ ‚þAAô¯‚ ‚þAAп"‚ ‚þAA†_"&å°6éñW°‘'ņ Øaä_ DàËžxOR:Ö 2  Ø2Œü«±~ß~=±µµU*•ž:uJ©Tòx<[[[ÕWÌ? ôÛX9—ËåóùB¡pòä!ý£Œ¤Ìô»cÕ¾>anOHqqqFF†H$ ˜2eʾ}û€¢¨€€€ëׯ'&&Òo0ÍÌÌ9rdUUý2Ñ¢¢"ÆÂ‚>ø€¼”¸¯ ØT©®®–J¥111(§þÉé9ܹsçƒ> Ç)))'N|ªŠz’¦J]ƒ.£òŸ_Õ±í¿pÙ?ê /11yyy»ví*((ˆŒŒ,)) X•FGG×ÔÔˆÅbõ¥R¹wï^;;;>ŸïèèøË/¿Èd2ÈÈȸ~ýº››ŸÏ§#_¾|~ùå—^³={v||¼R©ìG‘Plª¬_¿¾²²åÔo9õOlNŽÏDlÕÕÕôñO?ýô´UTTô„㪧×5´Wþs¡:¶q\[GWŸòª¨¨€ .ðù|º ïܹ#‹kjj(Šš8qâ‚ $‰½½ýŽ;H„ÐÐÐòòr±X\VV–ŸŸ@WW—ñBäÍõr¹œŒV$‰ZªÚÚÚ„„„ÚÚZ‡3mÚ´-[¶XZZ’ÑJXXØÎ;'L˜iff‰$//ïñãÇÞÞÞþþþô`*"""++«¡¡!88xΜ9Œy2^½×ŠbL¥VKk×®µµµmnnojjZ±b{rRf;;»ÖÖVRΞ¥¥s8~üxccãôéÓÀßß¿´´T*•Z[[8pÀÀÀ@õå ÖÖÖçÏŸwvv¾|ù²µµõ­[·XîkÚ´i………žžž}âó+¶æææíÛ·×ÕÕ­_¿>::ºçИ>ÖR«tý»¸¸hcQN"6'GM§ž¶Ø~øábÙËÊÊ.^¼èêê Œu®½RmA¢^ZQªâÔÒú ¸Vë$ÃE‹©–óPÛüõAgûG-þ«¯¾ IIIUUUtxddäòåËóòò¤Ri]]]vv6ŸÏ¯¨¨hhh€úúúòòr>ŸéÒ¥œœ¡P(‰rrr:¤©`d0B.—žžÞ3Õ_|Q]]••µgÏžÊÊÊíÛ·Ói¯\¹²nÝºššš””8xð`vv¶@  ÊÌÌÌÈÈ cÖÖÖ†„„(н{÷jÊ“ñê½Â˜J­–Ȩ0%%¥ººúÃ?¼qã{r‚··÷W_}Å^pöìY˜:u*Œ7nñâÅ÷ï߉DE½ÿþû£F¢cN:•4eUUÕ´iÓØï‹dH2ï+ϯØRRR~üñÇÀÀÀ^GÇZj5//ž% œú''mÄæäèàäè@@ÞÉ’g"¶ÚÚZX¼x1\½z•2Öy_­iAMŠÒÞú ¸fD­œ/€ê8ì£<öZü°°° &@]]P( onn€„„ ‹äääÈÈHP(K–,€ÜÜ\ “úÅ‹;v æÎëèè¨É¸¸¸¸¸¸¸lÚ´ÉÎÎnÛ¶mÀ˜ª¥¥D"ÑÏ?ÿœŸŸ¯º¼îääDÖîéuss›?>]$ÂÊ•+É ¹ Æ<µ/3½o¡)UÏZ¢ 9þ|2´dIN°··1b{ À?þdúîîî¿­fp¹ÞÞÞª1íììnݺ%—ËmmmÙÅD.­j€ú4¥xNÅVRRBÚhÍš5ì÷ØW­jÚ©B9=ùü•VT[G×¢ùŽ•w晈­³³óúõëööö&&&·nݺÿ¾¦:ï«¢[ÅŸicýÜkà  :6ÿªì¢Ø?jñ---“““­¬¬ ´´”Œ8rssƒ-dÜ IDAT‚‚nÞ¼¹aò’àêêjnn.“ÉZ[[e2™©©©««+1nnnp÷î]Æuÿèèh‡ÓÖÖFj–1ÕÆŒŒêêêbcc}||ˆY!ðx<G–ïiõФE úúúä ««KSžZ–YmÃ1UÏZ€öövÐÕÕ%ÅcIN ×Xj€¾wš£GÒwzäÈ‘ž£92%Çlbâpzf®íÞs+¶¶¶6U ±ÐW­jÚúB9=醱ТÞ[ä ‡þyêY‰íÂ… ÄÀÌ™3éy!c÷Õ ±oWioýÜkà  :¶ý×GÝTŸÝ5‡³téR///™LOÖ:$ YÐWæééyàÀ¨¨¨ŽŽŽwß}—Ç㙚š*ŠÂÂBr‡š°µµ ŒOMMýä“OS9;;Ï™3çܹsgÏž-,,Œ‰‰¡Ÿ{øð!“‘‘˜šš666Òµ©ºª cžZ–Y ÆT=k LLLîß¿¯ÖØÚ\”¥Hêêê¢(ŠÃáÔ××|öÙg‡öôô9r$‰9nÜ8“ÒÒRssó^˜$Fœî™}âù›¹¹¹B¡èîî~øð¡êEU]Kñ·Ê©rê“ØöçœèU~OOldªTRRB¯Iüøão¿ý6c ê“õ@;ÌØ5^TÕ äüU ¸¸¸œ;wNWWwÊ”)`ccCz5Ù/(( #{yyq¹Ü‹/r¹\/// »úÇ—ËådñASÁ¼½½'M𔓓S__Ϙ*$$dáÂ…dÉ΂N›––FÖÖISyxxä'Ož¤¿2˜§öeV…1c-‘B§¥¥±'צ´ª}Z[[ÉžEQkÖ¬™={¶OGG‡T*UßÆÆ†nÎ;wîˆÅâššŠ¢&Nœ¸`Á‰Dboo¿cÇ!44´¼¼\,—••åç瀇‡‡@ ÐÕÕe,y ½\.Š¢$‰ZªÚÚÚ„„„ÚÚZ‡3mÚ´-[¶XZZ»¶sçÎ &DFF’©¤D"ÉËË{üø±···¿¿?m#""²²²‚ƒƒç̙Ø'ãÕérfff>zôèÃ?ÔÕÕ}óÍ7UõÝó¢ÍÍÍáááMMM+V¬ £±çÿ"14Ŧ««ëëë[^^ž““ccc£–ùÚµk?ÿüsz–PTTÔ3‚­­-Ë]ÔÕÕ¥¦¦Ž7®¡¡Á××—Ïç×ÕÕõêðQ³ ƒfÙÔ&j&ˆ¢¨äää‚‚¥RI› í‰ÚDV-óæææ¨¨¨úúzŸ¸¸8ôÇÛóÃ:»tv99:89:ÐÇw²„|U‹ÿꫯ@RRR@@@UU¹|ùò¼¼<©TZWW—Íçó+** ¾¾¾¼¼œ srr„B¡H$ÊÉÉ9t覂]¾|™¾\zzzÏT_|ñEuuuVVÖž={*++·oßN§½råʺuëjjjRRRààÁƒÙÙÙ (((333##ƒŽY[[¢P(öîÝ«)OƫӔ——À+¯¼¢V~Æ‹¦¤¤TWWøá‡7nÜ c²çÿ"1dÅ6eʸtéRÏÌÅbq^^žêä gö»~ë­·àûï¿€ÒÒRøË_þÂ(ÔᣄAËçY‰M 5$•J³³³ƒƒƒi¤½1é5óÊÊÊÕ«W_½z2þµ­£‹èµut-šïYygHxÏ1`XXØ„  ®®N(†‡‡777@BB‚……Errrdd$(Š%K–@nn.Èd2X¼xñ±cÇ`îÜ¹ŽŽŽšFO......›6m²³³Û¶m0¦jii‘HôóÏ?çççÇÇÇÓ9'''(..bÝÜÜæÏŸO‰°råJ>ŸOƒšòd/s[[p8ê•ÌxQRžùóç“(A›:ya¦CMl¿õ”J%cæj‘{ ™Ý–••Ñ£±¹sç2 uø(aÐÄÆòyV– É8qæÍ›7~üø¢¢"b‚´7&j¨eN’Ì›7/882þUÙE)»(rüÞ"g8ôÏS$Põ¥¥errr`` ••“VnnnPPÐÍ›77lØ@Ö<]]]ÍÍÍe2Ykk«L&355uuu%ÆÈÃÃÃÍÍ î޽˸…ÍápÚÚÚÈê.cª7ÕÕÕÅÆÆúøøéx<Ç£-&ÑHœ(A__ŸtuuiÊ“½Ì†††ä~Õî‚ñ¢ííídA’´©“ƒ!(6z‰ž4cæj‘{ ÆŒ3 ¯\¹rïÞ½ÊÊʱcÇÒ«jB>J4±±|ž‰e£Ñd‚{Ž×µ7&j¨eN’ðx>ž,5H$²Ü¯ÍÓÓóÀQQQï¾û.Ç355U(………='|jCþÀÀÀøøøÔÔÔO>ù„1•³³óœ9sÎ;wöìÙ˜˜zZððáC¢9###055mll$& F¥éºŒy²—ÙÞÞ¾¸¸X.—«=çÌxQ“û÷ïÓtLmêä`hŠ ~ßæŸ>}:cæjôq‰øÌ™3qqqE½ýöÛtxO¡% ¾Ø´šˆ ŠØØ±°° vCÕkjoLØ111iiiQ*•½ ‘Ÿ¿&eïu”'\\\Î;§««Kv­È#—&&&ÄNБ½¼¼¸\îÅ‹¹\®——¸ººÀñãÇår9YÖT0ooïI“&åääÔ××3¦ Y¸p¡……Åš5kˆ.é´iiigÏž¥â<<|Þ{ï=M™“ñ>±eŒØ!®dó•,3 uø(aÎ_Ͳ±³`Á8}ú4Égݺu}2&ì$ß}÷4 O}þªì¦ áÛcô1;_~ùeRRRTTTgg§¾¾¾››YýÞµk—P(tww§#›™™¹»»=zÔÙÙ™¬ô®^½Z©T&$$Peoo¿yóf–k¹¹¹%&&J$’ðððž©"""âââ6lØ@QÔôéÓ…B!ðå—_‹Å³fÍòóó#.°³³311‘ûøøhº"cžìež‹ˆ ‚ úWAAÿŠ ‚ è_Aý+‚ ‚ è_Aý+‚ ‚ EAý+‚ ‚ EA¿?“rX›ôÃíW°‘§Š A±!ÃÈ¿@ˆÀ—=ñž¤t¬Ad@@±!(6dùWc}nŸòjmm•J¥§NR*•<ÏÖÖÖßßܸqRPí_Úõ4b"O›çTlÕÕÕR©4&&[Åö$b‡Ãårù|¾P(œBž8qæÍ›7~üø¢¢¢øøx²îRVVååå$TÅ𛋋‹‹‹Ë¦M›ììì¶mÛ¦IN--- ‰~þùçüüüøøxU‹çääD[<2øsss›?>]$F52æ©M™íììnݺ%—Ëé…Ã>•œ1±£‘›š7o^pp°6=î9ð¯Ê.JÙE‘ã÷9À¡ž"ª§h,--“““­¬¬È0œŒGrssƒ‚‚nÞ¼¹aòzàêêjnn.“ÉZ[[e2™©©©««+©G777¸{÷n¯¥ï™3}JWW—Çã€R©¤©O™#ƒÉs-6Kžúúúä «« €ÃùOï›1c†¡¡á•+WîÝ»WYY9vìØW^yU1|ÄVTTÍápÚÚÚÈê.cª7ÕÕÕÅÆÆúøø¯CàñxªøN:x2F52æ©M™§N dÖHŽY:ãU;Z{{;¹CCCmzÜmÿõQ÷t¶?ç„Zƒ»æp–.]êåå%“ÉâããÉ\^"‘EÕhžžžˆŠŠêèèx÷Ýwy<ž©©©B¡(,,Tµ;ìôÌù?]H©TS?2G“çZlíó´°°hll$£Òo½õÖ™3gâââ(Šzûí·QÃMl¶¶¶ñññ©©©Ÿ|ò c*ggç9sæœ;wîìÙ³………111ô:ÇljœŒŒŒˆ‰ÆÈÙQ£Fiº.cžÚ”yܸq&&&¥¥¥æææªOSk_rÆ@ÆŽfbbÒÒÒ¢T*UǵCߪk;MÊ:®:¾cå —sçÎéêêN™2lllHÕ€\./(( #{yyq¹Ü‹/r¹\///puu€ãÇËår²TÒkés&¤¦¦–””ví_æÈ³šR·Oyµ¶¶J¥ÒS§N)•Jgkkëïï¯ú^û'~'‡Ãár¹|>_(Nž>^©T>“ZRb%£¢ž!š4æäèðˆíéITÔ@Î_Û:ºú”WEE\¸pÏçÛØØÐC;wîˆÅâššŠ¢&Nœ¸`Á‰Dboo¿cÇ!44´¼¼\,—••åç瀇‡‡@ ÐÕÕe¼Ðo¼r¹œ ˆ$‰ZªÚÚÚ„„„ÚÚZ‡3mÚ´-[¶XZZ’QXXØÎ;'L˜iff‰$//ïñãÇÞÞÞþþþôx-"""++«¡¡!88xΜ9Œy2^½guuu}}}ËËËsrrlllÔ*díÚµŸþ9=T,**êÁÖÖ–ÎíøñãÓ§OÿÒÒR©Tjmm}àÀ???:¦µµõùóç/_¾lmm}ëÖ-–æ›6mZFFFaa¡§§çà qH‰MËÌI»µlÙ²%77W.—¯X±ÂØØ855UOOO(:88hQB$‰]kkkBB*jÄæäè éÔ3›êNm2wäÈ‘¬¬,KKK5- ”‘d¼è¢E‹TŘ|Ø*ª?ó×]ìµø¯¾ú*$%%TUUÑá‘‘‘Ë—/ÏËË“J¥uuuÙÙÙ|>¿¢¢¢¡¡êëëËËËù|þ¥K—rrr„B¡H$ÊÉÉ9t覂‘ñ¹\zzzÏT_|ñEuuuVVÖž={*++·oßN§½råʺuëjjjRRRààÁƒÙÙÙ (((333##ƒŽY[[¢P(öîÝ«)OÆ«32eÊ ³ µ ‹ÅyyyôØ“1‚jVgÏž€©S§À¸qã/^|ÿþ}‘HDQÔûï¿?jÔ(:æÔ©SICTUUM›6] $C’ùà3¤Ä¦eæªí"—Ë?ýôÓöööýû÷744ÄÅÅ566îÞ½[“ðhX$äííýÕW_¡¢ž’ØœœècÈ;Y2tÄÆÂíÛ·ýýý{ji Œ$#jŠbO>ÜÕÿÚÖÑÅþQ‹6a¨«« …áááÍÍÍ`aa‘œœ …bÉ’%›› dÝ`ñâÅÇŽ€¹sç:::jÚcpqqqqqÙ´i“ݶmÛ€1UKK ˆD¢Ÿþ9???>>^ußÉɉlТqss›?>]$ÂÊ•+É"¹ Æ<µ)3½#B–M+D-2{„üèq«»»;½'çíí­ÓÎÎîÖ­[r¹¼±±Qu¾ÂȈ#ˆÊŸÕ”bèˆMûÌé$}ôÑØ±cɱ¯¯/Ù?kjjÒ$<–’ØÛÛ“FAE= ±ÑÇ‹æ;@VÞ™!%6ÙƒTÓÒ@Im`O>ÜÕÿªì¢Ø?jñ---“““­¬¬ ´´” jrssƒ‚‚nÞ¼¹aòXáêêjnn.“ÉZ[[e2™©©©««+éónnnp÷î]Æ­…èèh‡ÓÖÖF1ÕÆŒŒêêêbcc}||TUÈãñx<m˜ˆ”é@"‚¾¾>9èêêÒ”§6e¦—É…+D-2{µí‡£GÒåê¦úì®9œ¥K—zyyÉd²øøø«W¯’ N²©ÍÓÓóÀQQQï¾û.Ç355U(………¤5akkŸššúÉ'Ÿ0¦rvvž3gιsçΞ=[XXC?röðáC"M###055mll¤LuáB Æ<µ,3½B6$zVˆìx<^WWEQ§¾¾¾  ÀÀÀà³Ï>‹ˆˆ8|ø°§§çÈ‘#IÌqãÆ™˜˜”––š››÷ú¸#±¹ô¨bjbÓ2síQöBE=%±íÏ9Ñ«ü_l‡T`{{»úøàw{¥©nûm$Y.ª=¶ŠŒù«@ pqq9w®.Ù²±±b èÈ^^^\.÷âÅ‹\.×ËË \]]àøñãr¹œ¬oh*˜··÷¤I“rrrêëëS…„„,\¸ÐÂÂbÍš5`aaA§MKK#Ë÷D $ùÉ“'鯌0æ©e™)Š:|ø0¼÷Þ{š*„LzHÏaŒ Úy µµRRR(ŠZ³fÍìÙ³}||:::¤R©jä™3g>zôhæÌ™½JLågÍšõ\Ì_Ÿª×DÆr IDATØú”¹–¨ F{Ù£¢žÆü5)ëøÐÛèѣɢqϧ:RSSKJJˆ“X#ÉrQ5E±ØØa¨¨~ù×nŠý£ÿË/¿tvvŽŠŠrssûôÓOÝÜܶlÙÁÁÁ¦¦¦B¡ðÆtd333²(ïììL1V¯^½lÙ²„„„   {{{²s  777òPcªˆˆGGÇ 6¬ZµjúôéªÌ—_~Y,Ïš5‹<öjÕª÷Þ{/111!!aÕªU>>>š®È˜§6evqqqww¯­­Ý¶mé9Œ"‰ôôô¶nݪ)Í[o½W¯^­­­-))áóùK—.%Û~“&M*,,¬««£#Ϙ1~˜qŸ†µµµ0{öìgcò†’Øú”¹–¨ ¦O²GE  Ø¾=–ðí±!+¶ÀÀ@ ‹¨¨¨žâüÚk¯%$$üéORÓÒ“I–‹ª)ŠÅÆCEiB§Eqc„ÙøªÊò1cÍ8<+úDLÊá…žKØ“ýã9ú±þýEÿ¤»»Û×××ÅÅ…½wõ•ôôô¢¢¢´´´¾.T>9/žØž/á½xжbCE=s(åÝÛ ÍW¯Vž-«à²‹ìEjr==½ãFtuu×­[wðàÁÕnYYY@@À³î &¶çKx/¤¢†§ØPQÏÇüAA~Ï_ñýt‚ 2ð EAô¯‚ ‚þAAп"‚ ‚þAAп"‚ úWAAп"‚ úWAy±ÑøûÃ1)‡µI¿‚<9(6ņ #ÿ !_öÄ{’Ò±‘ņ Øaä_õ¹}Ê«µµU*•ž:uJ©Tòx<[[[ÿ^_I?2Gž9CJlärª=½×ÌõÌ™„DDD¼ýöÛð½ZÅöÌŦ¥öžUy†‘52`>kggwþüùžá111eee‰‰‰|>ÿÒ¥K"‘H.—ïß¿@ úT3Gž9CJlÄŽ;v,9öõõ%»ƒMMMšJ…bRbsQA5œ¥Å““­%FÅxim´ÇŠmü«²‹Rvý6v~o‘3úç)¨zŠÆÒÒ299900ÐÊÊ JKKÉ*777((èæÍ›6lŠ¢\]]ÍÍÍe2Ykk«L&355uuu%Òñððpss€»wïj“9#Àápz d¼èÆŒŒêêêbcc}||ˆ‘bH‰­Ãü®Ÿ®®ÿXazŒ1ÛžE€ööv’ÇãiºÖ²eË,,,¾ýö[:„1+‚j>†††ä€Dè÷Í¢ØMlE*¨†³·8it¥R©É@1^Zí±ƒbÓ¶ý×GÝÐÙþœj!ŒÖgéÒ¥^^^2™,>>þêÕ«@VÒ"""T£yzz8p **ª££ãÝwßåñx¦¦¦ …¢°°PͲgÎápT Á¢±±‘<ìÇÈxQggç9sæœ;wîìÙ³………111sçÎe D¿8P 5±õÆl{‰¬ýÞ¿ŸXF+¶råʸ¸8ö¬úW*Ûs!6–øð!1eFFFš¬㥵ÑÞÀvœ¿ö2ÊKÊ:®:¾cå —sçÎéêêN™2lllHs’%û‚‚:²———˽xñ"—ËõòòWWW8~ü¸\.wqqÙ´i“6™=š¬Û¨.ô“GBNŸ>M²Z·n¦@Æ‹†„„,\¸ÐÂÂbÍš5Ä1k DžÆ”♋­ß0fËX$28+..NKKcÉÐÓÓ“^ˆÓ”UÿJ…b{.ÄÆÒâiiigÏž¥µÄh /­¥ö° àü•I…Ý$|{Œ>fçË/¿LJJŠŠŠêììÔ××wss#ëûÁÁÁ»ví …îîîtd333ww÷£G:;;›™™ÀêÕ«•J%yÓÞÞ~óæÍÚdøõ×_GEE…††fff’È$+²ßngg·qãFö@µ‹FDDÄÅÅmذ¢¨éÓ§ …BMÈ€™¼¡$¶~Ø-c‘üüü®]»À>mú裢££ÉWƬúW*ۛ궫ê1K‹¿üòËb±xÖ¬Y~~~š 㥵ÔÞva‹N‹âƳñU•åcÆšqxVô‰˜”à =—°'>&ûþŠòä Ø›öà¯= e(åÝÛ ÍW¯Vž-«à²‹ + PlŠMKôôô°Ÿïù+‚ ‚ ýž¿â#^‚ 2ð EAô¯‚ ‚þAAп"‚ ‚þAAп"‚ úWAAп"‚ úWAy±ÑøûÃ1)‡µI?¹Ž<9(6ņ #ÿ !_öÄ{’Ò±‘ņ Øaä_õ¹}Ê«µµU*•ž:uJ©Tòx<[[[ÿqãÆ HAUßH(**¨÷4i*yuuµT*‰‰A¡xxx]]]-‡~ä`Ë–-¹¹¹r¹|ÅŠÆÆÆ©©©zzzB¡ÐÁÁ¢(‰D¢)sÆ’/Z´ˆ¾JQQ‘Ú]¬]»ÖÖÖ¶×ë’aaa;wîœ0aBdd¤™™ÊNK±±0øbSã7Þ¹\Žm÷bˆíÙZ¶#GŽdeeYZZFFFnݺµ®®.55uܸq ¾¾¾:::ª¶ˆÝšQ•œœ\PP T*§M›¶eËKKKH$yyy?öööö÷÷W›®¨ÙÒˆˆˆ¬¬¬†††àààèèhÕ«£~´‡íùá]:»œœècÈ;YB¾ªÅõÕW )))  ªªŠŒŒ\¾|y^^žT*­««ËÎÎæóù P___^^N†999B¡P$åää:t¨¯7#—Ë?ýôÓöööýû÷744ÄÅÅ566îÞ½ÒÓÓY2g,y^^žê|Eí.Äb±6×%\¹reݺu555)))¨9±±|†šØ._¾LyÅ6¤,ÛíÛ·ýýý‰‰xë­·àûï¿€ÒÒRøàƒTm»5“J¥ÙÙÙÁÁÁ‰‰‰•••Û·o€ƒfgg ‚   ÌÌÌŒŒ ö*ª­­ Q({÷îU³„ÈÀø×¶Ž.z4×Öѵh¾#då!á=zaaa&L€ºº:¡PÞÜÜ ÉÉÉ‘‘‘ P(–,Y¹¹¹ “É`ñâÅÇŽ€¹sç:::ö¯-?ú裱cÇ’c___²AÒÔÔì™k*¹*=ïB›ë““£æXÄÆò:bsqqqqqÙ´i“ݶmÛ°ížS± )Ë&æÎKL„­­-”••@yy9I«™=Ã'NÀ¼yóÆ_TTOÏÜÜÜæÏŸO—…•+Wòù|èi ‘ñ¯Ê.JÙE‘ã÷9À¡ž"ª§h,--“““­¬¬ÈÈ‹ rssƒ‚‚nÞ¼¹aò|áêêjnn.“ÉZ[[e2™©©©««+ñXnnnp÷îÝ¾Þ Ç£ éÕÚjÊ\SÉUéyÚ\—Ž@â(ÿ{wÖÔ•çüg^D\Ô­/5ºmµ/¸@ëT¥´ Å uíˆTK# ‚aÔ­ ˆhéT+` 0€omA†Î`P‘ª]žRxªe‘Ò'u…® \ö3½›†p J€ïçá¼Ü{îɹ¿s~9ç†D§CÌ ›Àßã 6‰Äðº‰þ#¥¥¥ "‘èÁƒXí¾ÁfQ#›X,懈_|ÑÚÚúêÕ«÷îÝ«©©qpp˜={¶þÆÂ655‘Hô‹±¥I~ jmmn"+++v£«« 3`B×_vÿ"Îr ¿4xÄHº‰V¯^-—ËÕjujjj]]©T*"ŠÕßÌÇÇçøñãñññk×®•J¥¶¶¶Z­¶¤¤Ä 2Ìâ‘…­¹¾Þ¯Ât?ýô kÄœ)ÁfÒ{Ã_-ج­­ïß¿ÏqœH$bï“ôßB‘““SHHHjjjnnî–-[pú†u°YÂÈÆ¿óf‰í•W^ùꫯRRR8Ž[¼xq¿F3{{û¦¦&öQgý]؃ìîäÉ“YmYx···#*†rþš‘þ‘S …Báîî^UU%‹çÎKDŽŽŽD4aÂ"Òh4gÏžå7–Ëå‰äÊ•+‰D.—‘‡‡?^£Ñ°õ73¾NáÂûª9›Œ² 4ú*LtôèÑòòòÞë<0àùë¯ll í‹/¾àWÛÞxã ƒ øúú>ýôÓ………·nÝÂé¾óW Ùrss¿þúk"rss#¢W_}•~¾øÊ.-éEÂ._¾œˆ.]ºÄžÝºu+›ì²].\¸Àß}â‰'ˆ¨¡¡á‘Ÿ?Ð?:˜gþªëæˆ(í³sümaû÷ïÏÈȈïìì´²²òôôdŸR ;xð R©ôòòâ7¶³³óòò:}ú´›› Ôétiiiǹ¸¸DFFšñu ÞWÍ£¢¢víÚ•œœlôU˜hÚ´i‰‰‰ . @Ì ›é~Õ`S("‘èäÉ“VVV¾¾¾ï¾ûnï:xzz¦§§³I ýò_´ñIË6‹ÙæÏŸðàÁgžy† ÎÎÎlrùÔSO=ûì³c‘pìYöùJgg爈"ò÷÷ïììLOOg·ýüüˆ($$äСCñññ{öìÉËËhý£#~L7¦U{s¢ÝŒk5•O:؉¤Sù'’²N­ðY%¼ó9õŸð-bÂðͦ@°‚Çq\GGGpppccã¡C‡,X€³6Œpº»·[êêjÊ+ª%ÂA†Æ¤±cÇ¢L`óÖ[oétº©S§îÚµ ÉudÎ_`ÀóWü>€ù!¿ ¿ ¿ ¿ò+ò+ò+ ¿ ¿Œl}~ÿpRÖ)SöÇW®Ãà!ØÁ£(¿Q¸b£ð·3Ž¡Á,l€`ƒQ”_Ç[IúUV[[[vvöÅ‹u:T*urr š>}ºY*Êÿ¸¦H$’H$2™L©TΙ3Ç’WÿA‰¨´´”ÿ¹:ün%ݹsçwÞa·³²²fÍšÕ×–µµµÙÙÙIII4ˆŸ#4•_;HŒ–\[[«R©êëë¥R©««kPPûùÒÁÐoÛD2ýÊ¿’Ù»p£ÁlÞƒ—XŠ3›qý‹Â¤¤¤ŠŠŠôôt™LöÝwßEEEi4šœœ3V—§«W¯FDD$&&~òÉ'–Ÿ9ôc u¸[mm-ûûï¿ȯ۶müùe;á»®7nDEE½üòËjµúÛo¿}ÿý÷oß¾=ø±F¿qlC5lù¸7jcU(Îttõ«¬êêj"º|ù²L&sttäÛ÷Î;‰‰‰×¯_ç8nÖ¬YË—/W©T...`ìÙ³§²²211±¢¢âÌ™3Däíí­P(Äb±Ñ½ð D¤Ñhˆˆã8•Je°W}}}ZZZ}}½H$zî¹çvîÜ9eÊ6xEGGôÑG3gÎŒ‹‹coyT*UqqqOO¯¯oPP?ÌÅÆÆæçç766†……-]ºÔh™FÞ¯÷zFK0Zƒf|ï½÷œœœØ–;wî,**Òh4ëÖ­?~|nnîØ±c•Jå¢E‹ú[ábiÁöí·ßÑo~󛊊Š+W®xxx°“•™™yöìYNÇb €?³üŒ“ˆÞþò—¿üá¸{÷î¶mÛ-ZÄáììÜÖÖ–––fôü •–––˜˜˜æææuëÖõ>J^^ÞÇ7lØ ‹_~ùeýí«ƒ¼'è´ úc´!ØL,ÜÄþÞ×('0Úè¯ÙôuDƒ±H8–†>>n î „™þ6Ã.V…>?ü¿]ÂÛÏ›7ˆ222‚ƒƒ¯]»Æ?·fÍšâââìì솆†‚‚™LV]]ÝØØHD·nݪ¬¬dïÝ •JeTTTaaáÉ“'FþpÇŽë½×¾}ûjkkóóó>\SS³wï^~ß«W¯nݺõúõëYYYDtâĉ‚‚…Bš——÷é§Ÿò[Ö×ׇ‡‡kµÚ#GŽôU¦Ñ£÷‹@ 0hÆÄÄD~KF³{÷îöööœœœÆÆÆ”””¦¦¦?þØ,5|<,-Øêëë‰håÊ•DTWWÇÌÎÎ.(( KOOg1P\\ÜûÝú ÃÛÀÅ‹###ïÝ»§R©ø}}}?øàƒ¾Î¯ÑPÉÊʪ­­Ý°aÃÍ›7{¥²²’ˆfÏžmð¸@1J?h G WŽæ`3±pû»ÑQΔÑFøˆc‘p, àãÖà®@˜ì2¼bU$ü.OøÏ`ûèèè™3gQCCƒR©Œ‰‰iii!¢´´4{{ûÌÌ̸¸8"Òjµ«V­"¢¢¢""R«Õl ;wº.Y²¤¯åwwwww÷;v8;;¿ÿþûDdt¯ÖÖV"ŠŠŠúá‡Μ9“ššÊ— P(^{í5"*++#"Ö¬žžžË–-ã«Ä¬_¿^&“{FË4½Î½¯I0%T w3ò[nÚ´ÉÁÁÝÞ¸q#»xÓÜÜlb -dþj9ÁÖÙÙù·¿ýmܸq...&Løûßÿ~ÿþ}"úòË/‰èõ×_Ÿ1cFii©~\épx>cÆ "º}û6ÿ ‹‹Ëĉû:¿FC…ü²eËØûzÃöð€ˆD"ÃA ƒe´úzåh6Ó 7¥¿åLm„hpZ…cÉ`ÜÓúø¸5¸+f» ¯Xʯº.NøÏ`û)S¦dff†„„L:•ˆ¾ùæ–ö‹ŠŠBCCüñÇíÛ·³5 I“&©Õê¶¶6µZmkkëááÁN§···§§'ݽ{×èš~BB‚H$zðà[÷0ºWDD„MCCCrr²ŸŸŸ~I¥R©TJD:ŽoYþAÖ¬Œ••»ÑÕÕÕW™&Ö™1ÚÈ%T w3ê¿(þ¶µµ5¿db -EÛåË—Ù½ôÒKü’ISS“ÑŽm`Àám¼‹þ|8 ¿¬g´X£¡ÒÞÞÎvÔƒ°Ñ*F ƒe´úzåh6Ó 7¥¿åLm„hpZ…cÉ`ÜÓú ®‰ðw¬÷e”a«B×_vsýN×"ÑêÕ«år¹Z­NMMe kl]+66V3ŸãÇÇÇÇwtt¬]»V*•ÚÚÚjµÚ’’áñËÉÉ)$$$55577wË–-F÷rss[ºtiUUUyyyIIIRR’««+{ê§Ÿ~b­occCD¶¶¶MMM|Nž<¹¯ã-ÓÄ: 0½„ÞÍhÞò‡–E[¦ûúë¯ù·Þýë_/^looÏ¢E`Xdx›%~Œ†Ê„ îß¿o0àêÏÊÊÊ4Ágòv‘H¤Ÿ³M$Ð+Gs°™^¸é F9GÓ(K cÇáá«æœ¿* ww÷ªª*±Xéââ)p,OOÏôôt•JÓ{¯ØØØ”””íÛ·s÷üóÏ+•J~ÇiÓ¦%&&.\¸}òÓßß¿³³3==ÝöóóëëˆFËìW2½£ÍhÆò‡8¿ZL°qÇæ¯ , ¢ùóçQmm-Çql/öAgg爈v‘&!!a×®]ÉÉÉæ ïAž_£pãÆ”””àààÞåÌ™3çÃ?ÌÈÈðòò²¶¶~óÍ7ÙÈb´ƒ„„„:t(>>~Ïž=yyyÕÓo^9jƒ­¿…›È`”3q40ýˆÂ±Äè_v}ä§ L‡‡W¬ŽiÕÞœh7ãZMå“v"éTþ‰¤¬S+|V ï|Ný§aô-bøJ‹5ò‚ låF'Nw÷vcK]]MyEµD8ÈFÒË;v,νÅaÁ6ŒrÐçü<ÅïÓ˜ò+ò+ò+ò+ ¿ ¿ ¿ò+ò+ÀÈÖç÷'e2e|å: ‚ FQ~%¢pÅFágC ‚Y Ø`å×ñV’~•ÕÖÖ–}ñâEN'•Jœœ‚‚‚¦OŸn–ŠüîÒ~†©¶¶6;;;)) gÝYr°>>ÇïèèX»v­T*µµµÕjµ%%%"Q?¾õÂÖÖ¶©©I§Ó±»“'O&"77·¥K—VUU•———””$%%¹ºº>²¨Þõ4±¨6 ‹`›0aÂýû÷ùèzœ§q€ùëÿS(îîîUUUb±xîܹDäèèÈ)"Òh4gÏžå7–Ëå‰äÊ•+‰D.—‘‡‡?^£Ñ¸»»ïرÔàííÍöºpá7<<|ÅŠööö›7o&"{{{~~Ð×XÙW=i`Õ†alìmYYYÙÑ£Gó©G\Œäù«®ŸSŠýû÷gddÄÇÇwvvZYYyzz²«VaaaT*•^^^üÆvvv^^^§OŸvss³³³#¢ÀÀ@N—––Æqœ‹‹Kdd¤)õ÷÷ïììLOOg·ýüüØô%%%eûöíÇ=ÿüóJ¥’ˆ¢¢¢víÚ•œœl´(£õ|¤U†E°ܸq#%%%88ø1ŸzÄÀp7¦U{s¢ÝŒk5•O:؉¤Sù'’²N­ðY%¼ó9õŸð•u0x68ÝÝÛ-uu5åÕá ‚ F˜>ó+æ ðØ Ø`äÁG___ùùù___ùùù___ùùù____ùùù__F ‰þ¤¬Sh€‰ØôšñüJDÁï ú+=çDŸóW"’JÆ É0¿Jĸ" `îü*E~@~ù×_0ùU×Í¡QÌ_»zÐ(“ëâWþÑ%‡iÓ7-w÷@³`þ fp¡¬¢»»û÷ÿ±3.6ÚvÒ$Ç…NhäW,]7G4fý¦Àÿª(?•÷ù‚Qæ'©gNÿ¹§§G¾zÍfſъ×Ñï÷}pêó“·ÿ;tÛŽ%®nÇe~’zV]DD^>ò àP±XŒ&°¬üÚ…ü 0X×›=gÕ\¹ÜÕÍ}~"÷ùŸ…*#ÅbñáäÇY[¿½~#Ûøûë×CÂw„m ü$åТŮÇs²¾(È‹Ü-‘Höý~œõ?ùoÚŒ&°°ù+®¿ Éüõ]o =Ô=Ôuõ°ù¨Û2/":œü¡úÏ_¬~{Ûxõoß±²GD--Z]WOé¹b"zåU7‘XLDΟ{Û?M `aùóW€!ɯÝqGDR©T×͵´h‰¨Gô•ÞÖÖ¾{Š$cÙíî®.]7×¢m&¢µ+—±gïýÏtd‹Ë¯Ýæ¯C€u½›šDôÌüº¹ž‰í´Í÷:>dü³ýd¾{ê÷Ón®g¢­]‹¶ùäŸ/ˆD"tdäWøE×ã8îôóˆèÍÕ뺹7ï/>?v©ôœX$"¢×=|úʯK^÷P~þÕ—çdÿòì®°wŸ]ðÒžѤ––_±¬0Þñ}cŒHä0í©ï?³àÅnŽ“ÿ›ggçÉì#D$_ëÿæ[ëøî©ßO»9nÍú@Nw,3…ëæ^üW—w·F¡# ¹1­Ú›íf\«©|ÒÁÿùÛ·×¢Qú+/ÿTĦ×n7¶ÔÕÕ”WTc}Àüzÿÿ+ò+€¹ó+æ¯È¯Ã#¿âc‡˜¿X~~ýòlÀœù5bÓkhsæ×Û-h³å×?æe !ÌhÌömAhóú?@"–ËPÐÚIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/testplan.png0000644000175000017500000011027512032647206022715 0ustar ebourgebourg‰PNG  IHDR0Éæ”t9iCCPICC ProfileX…µYTUÍ·Ÿsû—¸t—t÷¤»;Eº»SEPQi’T0ABAJB‘TTD@±xõû¾ÿ«õÖ[ë½YkÎù­={öÄÞ3{ïs`^w DPn©§ÉeïàÈ…À ÀÍ#"TÃÜÜü·egæ†ËS±}Yÿ=ßYh<½"<€Ìaìîáã 4=BÃ#@~é#1‘¡0FõÁ˜.ž Œgö±Ïo¼±Ýa4êµ¥Œ™ÀQ¸¹…û@8Ó¹¢=|`9m0Ä`O¿`hía¬êáëæ sÌ#²{a,èþ/r|þL÷¿eº¹ùü¯åWÁiûE„ºÅý/·ã.AQA„+Ep é¾nàºâé¦m¿Ùàú34ð—Î`ˆÅ+ØÆê v75ûƒU½Ãu-÷…ÌC#5÷1¼>È;4ÒÜúýX¼¯–éþ80¾è¡ó—œR7Ã}Q¸9<ÊÒÆð@÷#¢­t` [´ïkm÷‡gËÓKûðöÓ5øƒ‰~‘ûcÑÁ˜' ÄÈò÷Xy`ˆáð3ˆc ´ÿ<Å€7pƒ[¢á¶^Ã8î÷ 1×>­ÿDÑýÕÏî÷ï%r˜/êï1ÿ¢þ#ÁxÂï¿ènÚögáâ—ôÏÿ*ïWOÉzÉUÉïµ£øQÒ(9”&J¥ŠR\( CÉ¢H( ”JnS„g¹ôk–æ¸/?¨Ù;:/$NÉÖ÷ÏÜÿ^í/n¿ÿrEæ>´Þ¾þ÷ A¤Wlä¾i…„Æ…ûùøFriÀ'×K”Ë ØC\”KZRJúÿÜnÿ?Ëþõ}²üuA ÃÿÐÂwP~ Çþ¡9М Õ—h|ðÎÐäÐåîý›¶4 T°…2À á}–ò@¨`Ì€5pÎðnûÂ6bÀp¤‚t.pT€p 4ƒvpt‡`Œ€ 0 æÀ2X`|ƒ   Zˆâ„ø H"Aªd YB+äCQÐè$”eCPT 5A· .¨…žCóÐ*´ }E :;‚! !4FkÄa„" HFœCä!ÊWmˆ.Äb1‡XCl#’É€äFŠ!IH-¤Òé GC¦!såÈämä#äSär¹‹Â hQ\(1ØNõQ6(Tê*U€ªAµ¡zQOQó¨ ÔO4͆A+¡ Ðöht :ƒ®B·¢ 'ÐËè ÀÀ(`ô1L&SŒiÄÜÇŒb1ÛX,–+‚UÁšaݰ‘ØTl>ö*¶;†]Æ~Á‘ã8qÒ8]œ#.—„ËÁÕá:pc¸7¸oxj<^ o†÷ÄÇá3ñ•øÛøaü2þ ™™ ™5™?Ù ²<²²d3dŸÈÉÉyÈÉ-ÈýÈ“ç‘_'ï#Ÿ'ߥ RShQ8QDQœ£¨¦¸Oñœâ@à'¨ ‘„s„ZBa–ð…’–RœÒ€Ò“2‘²²rŒò=žŠJƒÊ™*ž*‡ª…j˜jOÍO­EíF}Œºúõõ6 -MMMM?Í Kä'ê=‰ÉÄ bq‘IËK«EëA{’¶’öí2†N€Î€ÎŸ.îÝÝ=‘^–Þ–>–¾þý’ŸÁ€!!“¡™a’á+#;££ãÆÆ1ÆÏL¬LêL^LiLLL_™¹˜u˜˜Ï3·3¿dA±³X°Ä°”°<`Yg¥cUfõ`Mcmf}Á†`f³dK`«`dÛfç`×ceÏgïa_ç`àPçðç¸ÈÑÁ±ÊIË©ÊéÇy‘³“ó-=—W WW/×7·>ww÷÷7ž$žFž—¼d¼$^oÞ‹¼Ý¼8˜8r þÀ ><‰Ï—/—ïßg~~;þSüíü+Lñõ3‚A5Á0ÁrÁq!ŒI(@¨XhD!,'ì+\(<,‚‘ñ)E‹*Š‹–‹N‰QˆiˆE‹Õ‹Í‹3ˆ‹'‰·‹¿—8 á(q^â‘ÄOI9É@ÉJÉi)¢”¡T’Ôm©MiaiéBéq‚Œ®L¢ÌM™²"²^²%²ÏähåLäNÉuËýW—o_U8 àªP¤0E¢#™“2H}ŠhEMÅDŻлJòJ‘JÍJ”Å””ë”W ô:XypQ…GÅM¥LeN•KÕUµTuN[ÍM­\mAWÝS½Jý††¿ÆU÷š’šáš­šŸµ”´ŽjÝ×Fjëi§iéult tfuyt}tëu7ôäôôîë£õôÏëO°xÔl*5ì5¢0²2*0Z067¾m‚014¹`2cÊglÚnÌ Ì.˜½403¿c±0·(´xm)eyÄò‘­•‹UÕŽµ¦u¦õ´ M”M·-•­“m­íg;m»l»9{ û£ö,~7±Ž¶ŽUŽÛ‡t]:´ì$ç”ê4yXàpìá~gç@ç{.T.n.-®hW;×:×ïnfnånÛîîEîZ¹kžêž=W½T¼²½Þx«xg{¯ø¨ø\ðYõUóÍñ]÷Óò+ðûè¯ïÙÿs€Y@uÀ^ ]`c.È5èV018 ¸7„#$6d4T$45t.L)ìRØF¸QxUq8âf$F F¥DÍG«FF‰±i‰¥‰ ŽŒŽ;÷&^7þJ*Á#¡û÷‘Gæj-;s?ÖÈ›˜œ¸|\ïxÍ ²'ž$I&e'm´;y;™=ùxòbŠ^J}*ejxêÔ)åS—O£Nû:#s&ÿÌÏ4Ï´Çé’é9éß3<2Ÿ•:›wvïœ÷¹¡LùÌ’,LVpÖäyµó5Ù4ÙñÙ‹L.´]亘vqë’Ë¥þٜ˹d¹Q¹syÆy7óägå/ð-˜(Ô,l,b+:Sô¹Ø³x¬D½¤á2ûåôË_KýJŸ•镵•ó—çT`*¢+^WÚV>ºBºR[ÅR•^õ£:¸z®Æ²¦·V¡¶¶Ž­.³QU¿zÕéêÈ5ík7ÄÊÓ¯ƒëQ×ß6¹6M65w·ZnðÝ(j¥mMkƒÚâÚ6Ú}Ûçn:ܽex«û¶òíÖ;âwªïrß-¼G/³ƒ¬#¹c¯3¾sû~èýõ.Ÿ®Ån—îéûžñ^‹Þ¡Fúê>ìy¤ñ¨³O¥ïn¿Rÿ­Ç¤Çíòmƒrƒ­O䞴ɵ + ßQ¹=zp´cLm¬ë©öÓ‡ã㦣“6“Ϧœ¦æžy>[yøüã‹èߦϠgÒ^R¿Ì™e›-%ôªqN~îÞ¼öüà‚ÕÂô¢ÇâÚRÄÒ÷åäׄ×9o8ßÔ®H¯Ü]Õ]y{èíòZèÚ·õÔw4ïŠÞ ¾¿ñAýÃà†ýÆòÇð{›Ÿ˜?UoÉnuo›oÏîí|ûœö…ùKÍ.i÷ÑW»¯o¾Å|Ç~Ïû!ôãöO£Ÿ3{A{{¡nán¿B$\ÞÞlVÃñ¾œ;Œ@Fù;§øSpð€ß" ‚¢¡YØ×"¹…(^ÔU´:z“5€}Ø2¾“ìùUŠVBåKj 1„¶•î;ƒ.c1Ó‹9k=;†Ã™³…›ÀãÅ{ƒÍo/P.øV˜$rD´SHhI¦HõÈ eµä’åï*l)Š(9*gìUÙQP·ÓHÕlÖšÑAé éè{$^2ª7¾g2d:cöÞ‚ÂRÚÊÆ:Ö¦ÀöŽÝ û¯Žì‡:9ŽtÎr©síq›qÿäIîuÀ[ÑÇÐׯÏÕß? 40>èxðÉS¡§ÃR“#ŽDFDùG»ÆXÆjÅÉÄ3ÅLè=’{4ø˜n"÷qp|ñDRóÉÒäó))©q§"NŸ H I¿ñöœRæé¬±l¦ ó/åbóó½ ÎÞ.š-A^(5-‹./ªèª\¬ÂU‹Ô˜Ö†Öe×7_º¶Þˆ¿ÎߤÞ|¨%êFfkmÛÃö…›{·YîÈÝ5¹çÖÙ™r?§ëJwCÏíއƾ|´Ü÷®ùñ³ƒÍO †Ž ;(Ò~ëyš?<¡>Iœ\šjxñ\öùÖ‹ÆiïÖ™á—'f¥g—^åÌÍ#çï,D/*,¥'˹¯]ß¾ù°Ò¼öVüíÛµòu‡w„wïC?ð~˜Ù¸üÑoSéñÓÖÖÂöôÎÂçí]º¯jß"¾_ÿ±¹Ç··ëŸœ„h ;¨ÁˆFÌ!‘]pÄ?ŒöÀ 0 Xoœn?DÖJ^CQJ¨ l¡zB½Ed¦Õ§‹£obXedvg)g}ÁÎÈaÍyŠë÷G^¾f| ü•‚ï„©E¤D­ÄBÅÏJ\“쓚“þ"K%Ç#¯¤`BòPŒT:©|á`¹JƒêMµNõš=°_¹«Óª{U¯\¿È Â°É¨Óø±É¤é¼Ùšù–%°"·&Ú°ØòØ Ø‹;È8’©:éÖwÖsQw%¹Iº xpz2x¼QÞ»>|—üžùt¶Õ—„d†Æ†é†ÂÇ#J"£HÑØè1±©q‡ãåhÖ<>ZwìL¢ïq›vIn'ƒ’£SSOºpºäLuÚõô»ÎŽž{™¹’õ)\ ¾È}I:G#×*Ï;?º ¥0§¨ªøFIçåÁÒɲùòÕŠ•»UdÕB5Ƶauõ]Wß6P7ª\÷oÊm~Øò¹U°Í©=óf×­­;\wµîyv$wÝoìêêèêo§ŽGM}åý™|mžh‰Ó ïŽ<mËz0®=Á>ñeòéTó³ìç‘/§µf$^²Î’Í~}µ>77?±0°ø`©k¹ãuÇ›»+÷V;Þv®õ¬?y·ü³!û1|óîÃöÉ_R¾2}kýa÷óç/ýÛBt|úe)ˆ7H]äU;êš}CÄTbU±³¸T< ¿CÖF~œÂŠ FI Ü¤Z ¦é!vÑ>¡{IÿÅÄÄ,È¢ÎjÉæÅÃqŠóW%w O'oÿ§|¯øW6¿œ(NtOì£ø+‰ÉûRÒÅ2gd£äœåuDHT¤Š£J Êgzª¨©2«n¨õ«Wh$jºh©isè t–téÕéŸ57´1R6f7& ¦ÝfæÉÞ–¦VÊÖl(l>ØÙÕÙ';Ø; ;~?4èTxØÏYÉ…Üå¥k“[š»—‡°Ç²g±—ƒ7‹÷+Ÿ:ß8?¾(àeà üàÈÓPÐaáYV‘Œ‘/¢Š¢ÇpÅ,ÄVÄyÄóÅ¿N¨:âsTàèʱºÄˆã¦'$“h’¶O¾HîH)‡í$ð´ùé4º´ôÉŒgÏŸ É´È’;Ï‘Mžýõ»‹ —¦rÆsÇó&òŸÌ®mï]Æ—²•©•WWUAÕ²5>µ…uýõ›×äͯ{6E6Ÿh9w£¢µ£m²}ý¸M¼ÃsWöžA‡{ç‰ûU]ã=d½zÎ>œì#ï—{ì21x÷ÉÆ°ÐˆÛhéØì8Ç„ÓdÑÔ‹çL/ì§Ëfvf^Ì;-â–ž½_ůE¾'n¼ù´ø™ýkÈWûúÿými¿`ä¸BœƒšÖPç™ÆPÛ`NÀZ ¢º‚b@ƒû À¹¦40€³üxpÎûÀø1B2†®@Ýд‡àD¨"\Çá¬îbI‰”E:!“‘×S($J å‚:‡êDm¢ùÑŽèóè~ £Š‰Ç´cv° ØXììOœî,n σƒ=™+Ù r<¹+ùM ZŠŠ!‚!›°KéN9D¥BÕ@ÍCGC¤9Gĉ۴!´oé|è^ÓûÒ¯1„2l3c"cÊc`¾ÅbʲÄz”‰í»%ûG!§ç6W÷!jž~ÞStùÈøžò „j ± }~&rO´J¬L¼Q¢[rLjIú“,$G!ϨÀAâƒ=›Œ²ÂÁƒ*šªZj‚jëê75R4m´µ~j¿Ð¹©›§wLßÏÀÖÐÀHÃXÕ„dªb¦a®oaaioånb“h{Á®ÚþžÃ”ã¦õaIgk—£®ÕnãOY¯ï2Ÿi?&›€ìÀ±`ڻВ°•ÅȬ¨ÕýØêxÊ„£GÞsLì?¡™Ô‘¬˜2v*æŒPÚ«ŒòsaY&Ùryr¸òX x‹¤J´KƒË›® «}j—¯7"šJo¨´ ßò¸ó®Ãú~sǃÌ>ŠÇùOT†ß]ŸHy4í4+=·°µüqÅòmîz×û§C›··rw|¿Hìn|»öÃç×ýT€(kÒ@è¯`í3C$ÈŠ‚.B-Ð8´`D(Á¹}¢1gñHd$²9ŒÜCI™y.jcŽô-ô.F sÓ…Åa-°Øeœ,.7‰ÆŸÀ?#“&;K¶FnLÞg¿q‹3B'¥4e U 5;u) ?M#QšØL+K{‹N®ŸÞ†~‘!‚ɘË$ÁÔÇìÁ‚€}•ë[¶óìŠì¯9ò8-¸(¸s§ó˜ðÒòN¨â‹â×`ø(øX¨Bø¤ˆ‡¨IÜX"D2[ªIzRæ‹“¼¢‚)Q±R©_ù½ £ª¦Úau7 Mo­ íXÝ,½ý&ƒG†ÓF›&SA3s/‹Ó–ÕVýÖk¶ÔvJö®goZ=ÌêlîrÚõ‘;ÆÃÈ3ËkÚGÔ7Áo ¨Üò:Œ;Ü1¢0r*š&Æ<ö\Ü“Š#&GÏ{rœxÂ>©ääZŠvjÕiü™Ð´å ÷³ ™ÁçqÙUír¨r‡ós ýŠ5/3—~,­¼]uµæz]çÕ‰†&úÙVûö˜[—î\»×Ý9Üõªç݃o}èÇÔƒ¬C|#Âcâã2“²ÏT_hÎÌZÎ9.X/)¼&¾™]½´¦¹>ÿ>òÃöLjͥ-óí¶Ïô_Bwû¿q}þ1ðKÿÀøü›‚ p4‚1° ±@j°OÉ€n@3,BÖü)D [P"U‘¡ÈrøÄP:¨DÔÔ.š„ŽC߃O»!æf+ŠMÀâ8q1¸q¼¾¿GæKö”\“¼…BŽ?Ø…”\”W¨d¨º©m¨×hR‰<Äû´Î´?éÊèµà³}Qq©˜ÙŒÃÒ ŸkUv{G:§1×ì“2yC8òð«IBòŠ"*¢ªb*âÎù’#ÒHqYk¹ùK ͤ1ÅMeÖƒú*ñªmê”Aš#ÚJ:uzÌúÙ†ÔF™& ¦—ÍÅ-º¬ô¬l)í"í'ª9Lëœä²ãæþÎ3Ôk×'ÍÅ¿:P:èFˆBh[¸LÄ(ÑèÒX†¸´øïGBŽÎ&šïK:x²2y+UûTÎéÕ4ÅôŒŒ…s¤Ì̬Ù6z/Éå´æ‘òºí•””J–uTXW¾¯J¯‘¨}^Ÿ|M´aüzL3MKM«\Û›ª·nݽ[Ö!Ü9ÐØCÙÛøÐäÑJâó`óöðôhØSüxͤÆÔÂó“Ó3=³¶¯æç=¦–T—‹_¯¬¬:¾MXËZ/~—÷>ýCĆÍG‰Môæè§¢-§m¶íg;?~þüåÊ®Åî÷¯ÕßL¾}‚³å³?û÷õá-óû,D¡ zvoï?Øl~œßÛûV¾·÷£¾$f¸øûÅ/_C @Ñþ? Ðá[ö¿‘þD~Šêw—/Ì pHYs  šœ IDATxœìÝi\×ÚðgÈÂ’AYU–ŠŠbq-—ºa¯z[µZ½+¸àr1×*b/­K®"*hÕZi+¤vÑ–B«ˆ XÜ¡JTY‚adÞó67—,$!À`Ÿÿádæœçœ9“'3“dˆçÏŸB!Ô«,,, z;„BuÑÉ€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-Ð1!ÅÆÆž={¶·£@!Ô£˜êŸöõõŠå§N²··×¼±XÌd*ikÑ¢Euuu`hhèàà°~ýzóçÏ[ZZ.\¸PóúBõu$¤ýû÷‹Åb +,,üì³Ï `À€š·Áç󫪪•>;`À€Ý»wß¾}û³Ï>‹‰‰9pà€æ5#„zit’lll¨T²··722¢JJJJ>\XXhkkËçó‡ùùù‰‰‰yyyÇÏÏoÆŒIII………R©ÔßßóæÍîîîš`±XNNNNNNIIIüñ‡T*•6222??¿¦¦fÔ¨QË—/wrr>ŸÏãñfΜÍápø|þ!Cô1!„zŽ×D"Qppp}}}HHA¡¡¡T"9zôhiiiXXX@@€L˜0Ç㙘˜øûûS%ŠÄbqZZšP(tuu50øŸ ÆòåËCBB®_¿.;ƪ¨¨ÈËË‹‰‰ñôô,((HNNÖ­!„裓#$UrrrjkkçÎ;tèÐ &$$$;99ÕÖÖ644”——OŸ>J-ƒ611‘H$ÞÞÞJ«ª¬¬\°`AKK‹••ÕÆ;<B¡ÐÑÑ177WVNľ}û,--333 tëB!úÐ1!UUU@||üéÓ§€Íf×××Áçó:þý÷ßoÚ´ÉÕÕµÓªÌÌÌüüüú÷ïïîî.;H‘J¥_~ùåµk×T*533“=emmmii ÆÆÆ$IêÖ „Bô¡ã);kkk˜?þOòôô//¯/¾øbÙ²eQQQ²åÕä ‡óæ›oŽ3¦C6€ŒŒŒ¤¤$ŸsçÎ :T·PBõ :&¤±cÇš™™¥¦¦^¼xQ dee•••‰D¢´´´æææ… šššš˜˜P »ºº …Â{÷îµµµiÕJKK egg———777·¶¶ê0B!šÓ1!™ššîܹ“ÇãíÝ»×××7**êÙ³gííí±±±¾¾¾ï¼óŽ¿¿?µð¼yó6mÚtá­Z™ú¨û¢QïÔ©SÔƒ¥K—.\¸ðwÞѶ†Õ«W/\¸pöìÙŠOmݺuÆŒ7nÜØ°aÛo¾éääÔÅhBiE‹Svl6ûòåË™™™Ê###׬Y³`Á‚]»vQ…|>?<<<%%å½÷Þ[»vmqqñO?ý´lٲ͛7 j™’’’Í›7ÿýïÈÏÏ€ÌÌLÿœœm»QVV¶jÕª©S§nݺµ¹¹™*¼råÊûï¿ÿÆoìÞ½Nœ8qÿþýÈÈÈ H$ÅJ‚ððð`³Ùòå'Ož|ï½÷|||öìÙC’$U¸qãÆ+W®„„„Ìš5ëÀÚŒB¨-Ò¬Y³,-->ÜØØ(_Î`0–/_rýúõÄÄDª°¢¢"'''%%ÅÝÝýñãÇ;wîLKKsssËËË»rå ˆD¢àààúúú‚ BCC¥RiSSÓÓ§OeEsûöí{ã7Î;×ÒÒ’žž$I:t(00ð—_~Y¹r%øúú4hÕªUÑÑÑ C±©Túí·ß’$9räHùrGGÇ}ûö%&&fddÜ»w*,//ß·oߘ1c"##Ïž=‹W›B¨‹´HH\.÷Ÿÿü§P(ú¨Ã…±Ù³gÛÛÛ[XX¸ºº>xð@V¾téÒ  >|РA>Ô*f„Bh÷ÅØI“&yyy]¸pAv“r©Túå—_^»vM H¥RÙíÆÀÆÆÆØØ Ùl6A²g«ªª >>žúU 6›]__Oemûp÷î]±XL—GGGêAXXXHHÈ… >þøc///õ•Œ?þ7Þpqq111éðÔ¯¿þzéÒ¥–––GM›6MV>pà@ê‹ÅÒ6f„BhýK wïÞMII¡þÍÈÈHJJ¢>,°eË–ŠŠ ë±¶¶€ùóç¯YÓÕŸ`àñxb±øÀT2C‡=sæL\\ÜÖ­[/\¸`hh²‹@ 6¬Ã™:ÊÇwìØ‘””äèèH}ú!„PwÐú{HÖÖÖþþþ²[ZZÀÈÈ(;;»¼¼¼¹¹¹µµU“zÆŽkff–ššzñâE@••UVV–••µvíÚ7nh’››Û Aƒbbb¨¦©K\ííí?f0ûÛß ­­ lmme»ÐPMM™™Ù€žJÓî#Gޤ¦¦þýï÷õõ555-))yüøq·F¦>Ÿ_UU•˜˜ØÛ „ÒŽF ©¬¬,--mРAÿüç?©[Œ;;;;;;Ëž=vìX~~>‡Ã™2eŠŸŸuû >Ÿooo?bĈ„„.—»mÛ¶û÷ï'$$ØØØÙØØh¸LIIÉáÇ mmmù|þðáéy<ÞÌ™3£££9ŸÏ2dHRRRaa¡T*õ÷÷ß¼y³»»{~~~bbb^^‡Ãñóó›1cFffæ—_~0{öìnS„B:ÐèRQQI’£G¦²‘¼¶¶¶ààà¬[·ÎËË+99ùĉÔS999)))îîî?Þ¹sgZZš››[^^Þ•+W4\F$××ׇ„„*•J©óòòbbb<== ’““`„ <ÏÄÄÄßßßÎÎŽ=ZZZ@•455=}úoüŠBt£Ñõ;rò7¾“ÉÉÉ©®®ž;w®Ï¬Y³ÒÓÓSRRÖ¯_OÝÏØØxÿþý ###ƒÁ`DDD477_½zµ¤¤DVƒúerrrjkkçÎ;tèÐ &$$$SgAìÛ·ÏÒÒ233³  lbb"‘H¼½½€$ÉÚÚÚ†††òòòéÓ§S!Íš5kæÌ™Š™!„PïÒèiÀ€pëÖ-ŧ*++ÀÅÅ‚pvvnoo¯­­¥žµ±±166f³ÙŽŽŽl6›Ãát¨Aý2UUUÿüã›o¾a³ÙõõõÔSÖÖÖ–––`llL’¤blAðù|.—øèÑ#ªÐÀÀBÑFGH...L&³°°°¦¦ÆÊÊJþ)*%”——Sÿ =ÞVÕÚÚæÏŸ¿f¦÷žON^^^#FŒ8{öl|||TTÔ‘#GôB!ýÒèÉÊÊêí·ß€;vܹs§ººúÊ•+‘‘‘"‘h̘1'++«¨¨(##£ªªêµ×^c³ÙúŠoìØ±fff©©©/^YYYeeej–wuu …÷îÝkkk‰DiiiÍÍÍ .455511€¬¬¬µk×Þ¸qC_"„Ò M?ö½råJSSÓÄÄÄ­[·€‰‰‰‹‹ AÛ·o?pàÀš5k‚7nŸÏ×c|¦¦¦;wî|¸iÓ¦M›6Mš4)66öÀA¼òÊ+þþþðâŋǿxñBA"„ê:âùóçjžNMM]ºt©ìæx$IVUU‘$iccÓá2L]]‰‰‰:hll$‚Ëåj²°P(äñxT„mmm­­­¦¦¦–Áß²C¡púôiù<¢TDtrhÐí~Ñ€ ê»AŠx<žVUiK1£¨!ŸlØlv÷¥I„Bú‚?®ŠBˆ:?B:}útÄBè/®“„´téÒž‰!„Ð_\' Iýe(„BH_ðB!ZÀ„„Bˆ0!!„¢LH!„hB!ZÀ„„Bˆ0!!„¢LH!„hB!ZÀ„„Bˆ0!!„¢LH!„hB!ZÀ„„Bˆ0!!„¢LH!„h¡ó[˜#ôÒ“H$7nܸvíš¡¡áâÅ‹ËËËY,ÖðáûRgbb"I’ú½çrnn®úÀbcc9ÎÂ… 5,GˆVð õ4Ÿ€€Ù¿[¶lY³fë_´hÑÌ?½ûî»ÿþ÷¿ Ô¯’••õñÇÁår[[[÷ìÙÕÅ0RRRRRR:îÚµkæÌ™¹¹¹²’‡úøø<þ\“:; ìüùó¿üò‹æåÑ !¡—……ÅÁƒ=ztòäÉÀÀÀ#GŽ 2DÕò™™™`ll Ç70è–÷jÓ§OÏÌ̼pá¨Q£¨’K—.yxxXZZj²z÷†`BB4’ŸŸŸ˜˜˜——Çápüüüf̘%%%‡.,,´µµåóùÔ +>ŸÏãñ&Nœ³{÷nùz †ƒƒ 6Œ ˆ¨¨¨ØØØ={ö(­í«¯¾ÊÎ΀ 6¼þúë+W®Ü½{7ÇÛµk—¬¡™3gFGGs8>ŸO%6¥QŸèСðððï¿ÿ~Ó¦M®®®UUUúôi`³ÙõõõÔŠýúõë4@]]X,¦Þõ«©M kkkê±±1•c”ÖóäÉpuuU_›‡‡‡••Õõë×…BáÕ«W×®] R©ôË/¿¼víš@ J¥TŠRÓM5Ë›™™ÀÀ ¨¨H>!)\éÈw:,é&$ÔÓú÷ï_YYÙÒÒB½¾9’zÊËËkĈgÏžŠŠ:r䈵µ5ÌŸ?_çOâQŸ.£>DÐõÚ(Jë¹sçTWW€T*mmme³ÙŠë1mÚ´3gÎDFF¶´´¼þúë‘‘‘””´zõê… nÙ²¥¢¢B}š,_VVîîîFÊF^£@H¯ðØõ4OOO©T[]]ýÍ7ß455 6 D"QZZZssóÂ… MMMMLL`ìØ±fff©©©/^YYYÔë¬zííí·nÝÊÌÌ<~üø_|aiiI}H·Ú)­gĈ,+===%%%44´¡¡AÕêÓ§O€ììì×^{êfKK egg———777ËD*R³|eeeZZÚï¿ÿ~óæMGGG*©\éÈ#Ôó0!¡ž0sæÌ .,[¶ìôéÓ>>>‹/€öööØØX__ßwÞyÇÎÎÎßßLMMwîÜÉãñöîÝëëëõìÙ³N›¨¯¯ß¶mÛîÝ»srrfÍšuâÄ .—«smŠ”ÖÃb±–,YÒÐÐpôèQggç™@ž³³óàÁƒ`êÔ©TÉäÉ“]\\Ž9’˜˜èåå%‰"##Õ fùþðÃ|ðX,V<T¹Ò‘G¨ç~#!ý"I²¼¼ÜÎήÃ%ô¶¶¶ÖÖVSSÓË766R_\ÕKëúªM±ž––CCCjkhh ®ÕÕÕq8‹¥óòuuufffj>ž ¹ª‘G¨DD'‡­ÁkH¨wA}U¨6›­ôÒ‹~_(õU›b=ÔWku#ûlÇëâòÖ ¹ª‘G¨Çà);„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-tò±ïˆè䞉!„ÐËj˪Eš,Öù÷Bƒôy7O„^2!û?Ç}!UBöB¡°Ó…5úb¬&!ôW†ûB]‡×B/•3gΔ””ôvH˜zÓ²eËöîÝ+û÷ÚµkAAA½B4tðàÁýû÷Ë—œ9sæÀª–ÿùçŸ;½¢'LH½ìÒ¥K·nÝêí(¢¯3f\½zUþ~éééÓ¦MëÅP7Á„ÔËæÌ™©x󛯿þzýúõ‹/>xð ìNØÿþ÷¿³³³?ùä“wÞyç‹/¾¨«« ~÷Ýw¿ûî;jŠŠŠM›6½ýöÛŸ|ò uËøôÓOúé§ëBú5räHssóÌÌLêß’’’ÚÚZꎋJw>ŸOÝr‚ƒƒóòò@Å>‚hR/›3g޹¹ylll‡r{{û?þøóÏ?ÏÎÎ~ðàUXYYùÙgŸM›6mûö퉉‰;vìX´hц bccÅb19rÄÛÛû믿nii¹zõ*µÖk¯½æææÖ“BH‚˜>}ú… ¨ÓÓÓßxã êÎJw™ŠŠŠ¶¶6êqee%õ¶Oé>‚hR/c0ß}÷ÝãÇå˧M›fkkËãñœœœ eåK—.õöööðð066^ºt騱cÇ÷âÅ‹çÏŸ·´´Ü¿ßÓÓ³¾¾~ذaÔûA;v¬««kö !½š1cÆíÛ·©›·Q ‰*Wµ›¨¢jA4÷Cê}nnn³gÏ>tèÐ’%Kd…—/_ÎÌ̉DEEEÞÞÞ²rÙ}n‚ ËnÂvïÞ=‰D"»ØkooßC@¨›988¼òÊ+éééÇêž÷ z7Q÷šÃ„D þþþþþþ?üðõï£GöíÛwòäI{{û­[·jX‰¹¹¹X,þä“Oúõë×m‘"Ô;fΜ™’’"dgÐd7‘J¥ ‹©ËE¸Ðž²£.—»zõê»wïRfŸ?njjÚ¿ÿ’’’gÏžixéÕÅÅÅÁÁ!))‰:oþâÅ ª¼¼¼oTúº©S§–––¦¦¦ÊR§»‰ÍãÇ[ZZ:ÔÔÔª÷D˜èbæÌ™ÔãÑ£GÛØØ,^¼xÿþý“'Oþæ›o49?Î`0¶oßž——÷î»ïúùùýç?ÿ¡Ê£££ùå—n ¡îgnn>nÜ8;;»AƒQ%î&o½õÖ©S§|}}‡neeª÷D„ú÷ÎÑÉ¡AkðgQzEcc£©©)444˜™™i¾b}}½±±1›Íî¶ÐÐá>Ò»Ôï&­­­,«C9î#=†ú…îN÷j?ÂkHôEíf U6ssón!:R¿›*] ÷zê‚^ht„¤á­,úËÂ}!U4»†j@!Ô4»† !„P7Â#$„B} &$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D LMŠˆNîî8BýÅu’¶¬Zdaa´¦g¢A!ô—Õù’P(ì8BýÅá5$„B´€ !„-`BB!D ˜BÑ‚FûÖÐKùéð-«ÉÿÛçúØ×ãGê°¡““_æ ½hQߘÕ/ýÞסƒ]§Ï„~Ëô[aï:ñU¼baêc_iHé†îðªýÒPški8«_ú½Oi»HÏ ‰ÅxùÏöõ>öõøRÔWfu_‰³·`BÒZ_ïc_!E}eV÷•8{‹¾“Ðo…4Ô×ûØ×ãGHQ_™Õ}%ÎÞ‚GHZëë}ìëñ#¤¨¯Ìê¾goÁ„¤µ¾ÞǾ?BŠúʬî+qö½Ÿ²£Ëpߺu‹ÅbyxxÀçŸÎáp–-ÓÏç[º¯§N"IÒÏÏOÃrÝÐ'~‰D’}åÊCCÃåË—÷ïß¿›’$Ÿ={ÖÔÔ4`ÀªP~bÈOUô;‘éwC÷Œû÷ï³X¬!C†ônôyåQ¯¯ÄÙ[ôœÚÅRmWùÛ›>²ßoµ²²zå•WV¯ 6l¸úµÄb1“©.ømÛ¶õëgõu\<$''÷ëgµøÝ¥ÚƦ”}¤|øapÆ¥K«V­^¹jµÒ¾ýö;’$ßó}_ÃrÝÐ'þô‹é!!¾ýö|×´©¹EçÀÔkmmý:6æô鄿æf©TÊãñ~NýþwbÈOUô;‘éwCëàܹs­­­Ôc###7bÄ 5«<~üØÈÈH}B’J¥ÝûB¬Ãäy}âkÎÎ.²-¾aýÚúú†¸ø}‡ö?zì²ÒwB’h=Ü$ ––ýŽ=ÞÐØPXPpüا«VúŸ8ù¥ÛСªVY°Z |ûÃy5ÕFc``@ÅC’@©ClJéVOCC}Vf¦‘‘ÑO?ýèÙK IDAT»ÂŸ ”^Û$AyœªÊuAŸø/e\€µ©C}u°ƒýûÃúñüü Wø¯433/.*zô¨@qbÈOUô;‘”¶ Ç ­##£©S§¶·· …¼¼¼‹/NŸ>]}NR/==½©©iÞ¼yz R‘nƒ&¿5¥Ý¾qzê²ïêý„ {€!C‡KI2òÀþ/¢?Ý%ÅE‘# ÚÚÚýksûˆ‘‰ q>J¥ï-}wsð‡#FzŠ¿ï÷šgÏFyz®ð_åäìÛ? 1çñv‡í£š I½½ÞéVOjjšý¸×^û&)ñÖíÛ£^õ¤Ê >ˆØ÷Ÿ*`ê´émííL&“ª_UùKÿ—'O\½zÖ¬ô{}ÒäUë6®0çñ^÷žtêËèнû Ž>tÿÞ=—3õé~«Ö°Ùlظ>ÀÎÞa¤‡Gü×1\®é¿?Þqï÷¼ø¯cllí‚?üÈÆÖV¾•²§OS~úqÐ`§ ü‚ trèä, F61ä'Œ,’ØS_±!ð_½'É–?þ\‡ò²§O•†ªtfvè¦D"é¦ ­‚ LMMÀÒÒnß¾}ÿþ}ooohhh¸}û¶P(äp8cÆŒéׯ_‡uxðàõî>55uìØ±VVVV¢’ÜËI’²ÕL€^‰SÍ+¤Ò¹—šòcRBüö´±µýù§ógN'}2Ü}ÄÕËi©){þNuÐgößNž8Æápùlq:L/ì"=G·‹ImÿH üïŠ#G€¢'OÚÅdã‹æ øõuu~´ €Ø³s{k›dÌ8/ÏÂÄ„óþÊ€6íb’ Þ{å¶w]Ïù-þ믩zÊÊžVVTÊš I]bÓWÛÅdjÊOÓfÍž6c6üüÓ²ò½¡»+ÊË—û¯–JÉçµµ²8U•¿4ñ{yO±³s€÷W¼>ù j“åÞ¹óuÌ©Ñcǰ‚6mü#?íþk^ÞgŽzD¶es®eýxîÜpwÇ ?þ÷¶Ô”Ÿ† –w÷NúÅ‹Z)|ôˆ$ÉWGK”t\~bÈO*’Ïýà9f\ͳg‡„Ë–¯:”75‰T…ªjfʺihÄé¾ ÝuÔU½úúzH$—/_nmm}íµ×‚øí·ßHòÚUº€­­­‘‘“É9r$—Ëí´é6hò£M’@Â'ƒÒ Ð+{ŸšWHUsÏÞÑ©´´äúõëíb2ãÒ¥ÒÒ’ë99íbòÊåËýØRÌ»{÷«/NŽzuÌÃ$>M“YG‹#$RnÅþ¶öL&³©¹©]"ÍÎΪ­©™=ç-—!ÃÆNð:“ûøñãÁÎ.Æ&‰D2~â$ªÅ5ÿÜuB¡½ƒcîÝÛÿ}Ë#wÞ»§ìŠ‹ž+ïîþlrïÞYôÉ­›9ÿ ùÿªص÷ ¥e¿¬«— þA“YGƒ„DþÏŠõõub±ØÆÖ¾]"TV@b|Ì™„¯€Åb×>n?ȉR¶…¤Riü©“7~˪$R‰™™ùÿWEÈŽÇå÷FMýÉÐÐðÄÑ(µ´ˆD-W._š6óÍ;·oÀ g×ÿ^Ò ¡]"UUþ’ÅOù?ñ`iiÅ5ãµK¤åå0ÐÉ…zv“Ëý¼»UÕÕVÖýë6L¶vŽƒÅ2"@ªðjÞϺ?ܾyý+”}CÕ$!ÁÔÔŒÁ2l—HíÀãÇl*-¯©®Rªe?+U3SÖÍnÝÐ]×ÚÚ*•J¹\.455ÀüñàÁ`0²?P:]@Ãet£Ã 1̶ÖVÙŠííí„£“ Ðqªy…T³› ùjÞ[·oß²°ì7eú¬ïÎ$Ü»÷{sSóÐí)`eÕßÔÜ¢]"542–Jéò6HÏ I,Ñú8Ž Éÿ®x1íg>òU±„´èg sÞzç=ÿµòM$H¥Rj•ÌŒ‹ßIxÏíÜ·íüð_U•T9 @þüã®Ó¶©Dr9ýבžc©îð,­ª~ü.=íçÉÓf›ñ, ºªJ,!¥Ri[[+‹ÅKHUå/YüÔÙY¹üf¢j¨(/§þ­ 8¦æb ÙaÂHIR,!©¥Ò޽säÂ`2Ÿ<*¨®®¶ìgÝ1“DþqÙÓ§ðÊP÷ÿoZ¡¼­­]i¨W.u>3»uCw]qq1X[[€±±1¸ººŽ5JéÂ. á2ºÑaЬú÷TV¼xÑldlL’diIÑ0wõ WâTó ©f71jôß²¾ON|uÌøa#F‰?u:öË¡î#LÃ3™z_H“Y§÷„¤Kšmoo»}󺨥åA~Þ/?~dzè7ïˆ%Ò¯Žåšš]LûÉqóa#JŠ9 lcç0ÈÙ5+ãÂýßs\‡455‹mø[vfey™HÔÒÔÜbhh$IÊâ‘ÜÃ}¼uýšHÔ²–¿ÍÈØ˜*©(šwûFeE…ëPw‹uù¢Ã ßïÞl¨¯·´²K¤ªÊ_²ø©ëòå²Íä>jŒ‰ ''ûŠ÷3ËJKžU ÆLx0`ŠÿÿHâÏ­IRûª´cùŸÌ,úÍž»à§ïÏìû$ä+ØÚ?.øã^î­÷ü×êIR%¨¸øKÊ»»·®ÛÚ;š[üüòåvÍ-¬T…ªÉÌìÖ ­©TZUU%‹Ÿ={öèÑ###£aÆ€¡¡aqq±……E¿~ýêêêÌĮ̀?PT-ÀãñJKKkjj,,,:­Dg: šûHÏÊò²¤¸¯|æ-ø-óRsS“‹ÛðN'@ÏÇ ª_!Õì&ÃFzÀ½ÜÛ³ç-p2ŒÅbÿ~÷Ö2ÿµª^{wÖÉèùC )©í46Ôïݱõpø®;7~ó~cVhäçFƉ”42áþëÃOÌyG†ñWÿ#úØ¡gÕÕ)9Ígž­½ã®mü+鿎›8y “ËWŸEýðMÂèñ[E¢è£©jeñt%¶®÷ñÊÅ´q^“X†F²ï7f‘$yùbšƒ5wá’Æ†ú˜Ï8vîge $H¤¤ªò—,~òã‘kÆ Þ!‘H‚W}±ÇcôøkùŠ‹Iþwu”Ä¿Èwå¢÷ü+ËŸ†~´yãÊ%ŸÞ_VZ"%AÍ$Î/?ýðɇÿ‹ÅKWÈÊí¥ýøU¾äý5jBÕdfvë†ÖMkkë•+W®]»VYY9xðàY³f±X,`³Ù'N444ÌÉÉIII¹}ûvKK‹üŠªpqq155½téRiii§•èL‡A[²b­÷3¯^úeãÊ%?$'Lžæó··«Ÿ=¿÷IÔ¾BªÙMl™™[0™,7÷W ,—!C`Ä«ã”Ìvz}ÖÉÏŸ?×W]ÑÉKß]¬¯Úä5½h$„Õ/l¨ššñ¨/ļhlàšš@c}1‡Ãd²ôÒîé¤3Š·ØÒ{E--lCC Ë5××〆z¡±1‡Åfw¥ I²öYI’VýmT|‰ê¿ýÞáYXî>øyC½ÐÔÔœPøR§Òr¥¡j23»cC'''wÓýÚÚÚ‚ ²”æ ˆD"###Í+QC±k]™Õ$IVU–°±“ßšNMôÌÞGÑ×n¢ÅvEDtrhÐZœ²ë”¡1G±r®¹DJ #.õ¬1׬û è½r&ÛPiµªÊ»¨oÅoÂ5ïz%^¿þ ›3êüy&Єk.!ZWZ®4TMff7mènÂîìUOéòÙH“J´Õ•ѳ`×qkv6tÖM[Y»IïÒsBê¦ã8Zéë}ìëñ÷¿ [˜,6T¢ßÕ}'•zú>Bú w_ïc_¿¸yŒ¨>E¿«û&N*õðIk}½}=~„õ•YÝWâì-úNH}ÿ$f§úzûzü)ê+³º¯ÄÙ[ð”Öúzûzü)ê+³º¯ÄÙ[ôœ.ü|N¿ÒP_ïc_i(99¹·Cè9}eV÷•8{‹>¿‡„Bé€úÞO!„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑSóE#¢“5Yl˪EºƒBè¯K‹„Wûª_àðɯ»LWÅÆÆr8œ… vG剉‰$I.]ºTÕµµµMMMÖÖÖÆÆÆÝÀK&77—Åb >\«µtØÄ=ruuÕ­9DC]ß”ÅÅÅL¦v¯~¨h·I8FZoÂE‹ÕÕÕ‡ÃñððX¶l™›››¶•ÈóõõŠå§N:þ¼¥¥e7%¤””¥ ©½½=11199¹¥¥ÅÀÀ@*•r8œï¿ÿ¾;bèëÄb±ìU`Ïž=–––'NœÐªm7qffæwß}wàÀÝšCz$¿õ»²n×7eiiittôŽ;X,–Ε î Ýüàé²ý\\\‚‚‚îܹsâÄ ‘H®C%2û÷ï‹ÅVXXøÙgŸÀ€ºR­ÎŽ9òóÏ?Ï™3çý÷ß733+---,,ì•HhŽÏçWUU%&&Rÿ?~ÜÀ {/aþöÛo¡¡¡=ÓR£ÃÖïʺ]ß”“&M:{öìG}´oß¾®ÔƒôN»„ôB$Ö¡ ‹åââ2xðุ¸gÏžQ…«V­2dÈÖ­[`Æ ýû÷ß±cðù|7sæÌèèh‡Ãçó‡ "_› õ€ÊCöööFFFò dffvX—ªsâĉ111»wïf2™‡.,,´µµåóùÔ±ddd~~~MMͨQ£–/_îä䬪ªš2eJ{{»âû»òòòÔÔÔnܸ‘ÚIœœœ¨uÛ544‡Ã™2eŠŸŸõMýPxyyÅÅűnݺ‰'@~~~bbb^^‡Ãñóó›1cF‡¨*++?~ÿþ}‚ ¼¼¼6oÞ\VV¦´iU£­´‰’’ÅqSlKiw’’’ ¥R©¿¿ÿæÍ›ÝÝÝwïÞÍãñvíÚ½cÇŽAƒÀÙ³g‹ŠŠ¶lÙ¢´9™ãÇ߸qcç΀“'OJ$’µk×Ê/7fÌwww5'¿€ú&äuØ”ÿùÏt›½ððáÃC‡UUUM:µ¶¶¶µµ•zYì­Ù¢íÜètÐw%Å­¯~yùgÕÌ*H{{û#F$$$p¹ÜmÛ¶Ý¿?!!ÁÆÆ&((ˆz­P ˜ ??¿   û÷ïwõ.íÞh4‰Äêÿ”®E’duuu|||SSÓ´iӨ§OŸVWWS+**d‰ª¢¢"///&&ÆÓÓ³   9Y£ORÈTWW+®[QQ‘››?fÌ&“\__BDhh¨T*ƒ±|ùòëׯËÞ‹…‡‡WTT¬X±ž?®ØÜ“'OH’=z´Ò·lòí²X¬ààà¬[·ÎËË+99YvÎAÍPäææ¦¤¤Œ=º¦¦&**Š*?zôhiiiXXX@@€]‡FÛÚÚ¶nÝzóæÍ7ß|300ÐÍÍ­­­MUÓªF[± ‘H¤8nŠm©ê΄ x<ž‰‰‰¿¿?UaEEuêÕÝÝýéÓ§¿þú+µÊùó燮´9ùn:ôéÓ§—.]€/^üðÃ&L_@(>|øPöê&kN¦Ó&TmJ‡Ó•Ù»wï^@°fÍ&“™““SQQ¡ØDOέæ†&ƒ¦¸+)n}õËËS3s¨Ç999)))îîî?Þ¹sgZZš››[^^Þ•+WÔ>>³fÍJOOOIIY¿~½ú“ÆÆÆáááFFF­­­ééé%%%¬­­mhh(//Ÿ>}ºâêׯ_Ó¦M[µjU¢¾iÅ#IR±‰œœÅq£^äÛReðàÁ&&&‰ÄÛÛ»ÃSãÆ333KOO÷÷÷/,,|öìÙäÉ“•6çìì,[ËËËËÐÐ0##ãý÷ßÿõ×_mll<==å«­ªªU!uÚD²M©¾§êg¯@ (++óññyóÍ7©ä'UÏÏ–œœ­æ†&ƒ¦¸+©ÙúJ——§~]ª×û÷ïg0 #""¢¹¹ùêÕ«%%%jæñx\.WéÕhÔ‹´;BjKÕÿ)]kàÀ¡¡¡l6›:ôî´kkkKKK066V̺­Û¯_?ꥄzŠÿÇ?þñÍ7ß°Ùìúúz©T½råÊ÷Þ{¯¤¤„ZñîÝ»àêꪦ9ê•ì+„……­^½ZÖMY»•••àââA8;;···×Ö֪™uB’:1UTTDŸÏçr¹ááá=ê° Õü‰õM+Ž˜Ò&”Ž›b[:`2™S§N}öìY^^Þ… ÆÏår•6'¿–‘‘‘——WYYÙÇÏŸ??þüÕv:s:m¢Ù¦TOýì¥&•ª´×[³Eó¹Ñé )Ý•ÔÐvyE666ÆÆÆl6ÛÀÀÀÑÑ‘Ífs8Ù³j&B‡æP·Ò.!µ‹¥êÿ”®ebb2~üø%K–œ9sFVN}6¡¾¾¾µµµ+}Њµµ5ÌŸ?ÿ§?yzzfdd$%%ùøøœ;wnèСԒýúõƒ?“T*U¤‹‹ “ÉÌÎÎnjjRß.µc———Sÿ sssêßN‡¢¬¬ þ|é÷òòúâ‹/–-[VPP ;3#C½¢É¿7Wß´RŠM(7ŶÔwGÕþ?}útHKKËÈȘ9s¦ªæ:¬EþýôÓOëêꨵäQïd'ÄiÒ„ºÍ^ê:µ-^¼xñâÅ ¥‹õØlÑvnt:hJw%ŠÒ­¯fùN×Õ„ª€e¤Mh™$RõjÖ]¼x±••U\\u(íèèøäÉ“´´´íÛ·K$’.uBcÇŽ533KMM½xñ¢@ ÈÊÊ*++kii##£ìììòòòæææÖÖÖ#F°X,ê$FhhhCCƒbmVVVo¿ývCCÇ~˜ŸŸÿâÅ‹ööv¥íRײ²²ŠŠŠ222ªªª^{í56› j‡¢²²2--í÷ß¿y󦃃ƒµµµH$JKKknn^¸p¡©©©‰‰‰ª†ÒÒÒjjjòòòÔ4­”Ò&”Ž›b[jºãêê* ïÝ»×ÖÖÖ¡ÅáÇÛÚÚ^¼xQ"‘Œ7NUsŠ›ÒÔÔôÁƒûÛß»ciiéêêZZZÚ¡üÛo¿3gÎùóç•6!{VÕàPtž½nnn\.7--íèÑ£ÁÁÁb±˜ ÅÅz~¶h87:Ý.Jw%P½õU-/OÍÌ锪€©‰Ñáº#êu=qÊŽbhh¸jÕª¶¶¶ˆˆ©TJc9vìØ¼yó÷“îcjjºsçN·wï^__ߨ¨(ꢅ‹‹Ë‘#G½¼¼D"Qdd$‹ÅZ²dICCÃÑ£G©·ZŠV®\éïï_RRÂçóçÏŸ_\\¬ôm—……õ ²fÍš°°°qãÆñù|ê)5CÁápÎ;÷ÁˆÅ hooõõõ}çwìììüýý•6Äáp"""–.]úÕW_©iZ)¥M(7ŶÔtgÞ¼y›6mºpá‚b£Ó§O'IrêÔ©ÔG¼”6×a‹åííÍ`0¨‹|Š-ZtíÚµ¢¢"ùB‰DÒÖÖ&•J•6!{VÍø¨éc§ 6nÜhfföÛo¿-X°ÀÐÐPé«ÏÍçF§ÛE鮪·¾ªå婟9ê© 8!!aÈ!ÚVˆº¡ôÃcJED'Ïžû¶úeRü^óŸ‰DL&³·¾/ÝØØH—Ë••444PO¨««ãp8Ô+#õuWê#æjPhjj²µµUó“ªÜÄĤÃ2J‡bÑ¢EÔ…B¡¹¹¹üé¶¶¶ÖÖVSSS5 …B###ùŸPÚ´*ªšP7ŶÔlY¡PÈãñ”(¥´9™   33³?þXÕêß~ûíõë×÷îÝ«sªè<{µµ5ƒÁøý÷ß?øàƒI“&mß¾]ÕÂ=6[´šÐÙ )Ý•@õÖWµ¼Ðis”ÔÔÔ»wï*¾¡–·`ÁU‡¶š4¡†Î³wçΖ––åååöööŠG-òzl¶h57 ³ASº+)Mýòš¬«!ù€Ùl6f#zÒâ õ°7n°X¬W_}µ·¡©¼¼¼–––>w ±±ññãÇîîîÔgôg êÓ¨#$LH!„z•ð×½BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ‚÷CŠˆNÖd1ÍoЇBÉhwƒ¾«}Õ/pøä×]æ¯.66–Ãá,\¸°;*OLL$IréÒ¥ª îxkmm­á= {˜D"¹qãÆµk× /^¬É½µ¥Çñït´»UwŒUnn.‹Å>|¸n«÷îÜF}…v ‰c¤õ ›-ZTWWÇÃÃcÙ²ennnÚV¢H,wýÞç²ØÀÒÒÒÅÅeÅŠC† értêøúú ÅòS§N?ÞÒÒ²›vÚ””¥;m{{{bbbrr2u³v©TÊáp¾ÿ^Ÿ·Ö‹¬¬¬Ý»wÏ™3‡Ëå¶¶¶‚žæ€<Æ_U ªF»g(ŽU×íÙ³‡ºEºæ«ÈN¯ÌmÔçh·?s”Üë¾S...AAAwîÜ9qâ„H$ סy|>¿ªª*11±‹õ€……ÅÁƒ=ztòäÉÀÀÀ#GŽtkNÚ¿¿X,€°°°ÂÂÂÏ>ûÌÐÐ Ð}ªqäÈ‘ŸþyΜ9ï¿ÿ¾™™Yiiiaaa¯D¢^ff&Ppzœ:£C Ju+½8~ü¸—œi;8ˆÎ´KH/DbÚ`±X...ƒŽ‹‹{öìU¸jÕª!C†lݺ6lØÐ¿ÿ;vŸÏçñx3gÎŒŽŽæp8|>¿CzHJJ*,,”J¥þþþ›7ovww/))9|øpaa¡­­-ŸÏ§Î*DFFæçç×ÔÔŒ5jùòåNNN²Ê'Nœ³{÷n`00lØ0‚ ¢¢¢bcc÷ìÙeeeÇŽËÏÏçp8S¦Lñóóc±XiiiIIIaaa666©©©gΜ 6lØÕ«Wýõ×O>ù¤Óømll¨T²··722’_ 33³ÃºÂf2™ö·  ààÁƒUUUS¦LiooW|/_^^žšš:pàÀ7R/7NNNÔºŠí*H§›ÒËË+..Ž ˆuëÖMœ8òóóóòò8ŽŸŸßŒ3:D¥Ø—¯¾ú*;;›ªÿõ×_çr¹šÌñ»¸¸ÈšPƒâø+í â­®®¦WTTÈUEEE^^^LLŒ§§gAAArrÇORL˜0Ç㙘˜øûûÛÙÙ‰D¢àààúúú‚ BCC¥R)0ŒåË—‡„„\¿~]ö6­¢¢"777>>~̘1§Cͯ¾ú*@[[[ppðƒÖ­[çå啜œL¬4hÐÓ§Ooß¾ W®\yúôéÍ›7 ++‹Ú™;_½êêjÅuåÃf2™š÷7<<¼¢¢bÅŠ ô^õOž>þôéÓÀf³ëëë¥Ré—_~yíÚ5@ •Jå_pûõë§4@]]X,¦ÞUUVVu’‡ ggçÜÜÜÚÚZkkk»wïÞ½{·_¿~3fÌHLLÌÏÏonn5j”ñkØwYØš÷÷îÝ»àêꪦ9ê•ìí?„……=|ø0--Ú™eíª5õ›™™Q'$EEEƒ âóù‡ ÿþûï7mÚÔ!B5ÛN¥cÒaÜä¡*·ªÑ¤ÛêÚ’££#›Í&Bö¬†ã¯Ã@õÀÜV³eQŸ Ý;ˆv±TýŸÒµLLLÆ¿dÉ’‚‚‚3gÎÈÊ©kûõõõ:|H6¡©Ýoþüù?ýÉÓÓ3###))ÉÇÇçܹsC‡Õ°Î_~ù¨—jÏ)//§žÔOOOϺººäääqãÆyxx´··ÇÄĸ»»Sׄº›æýíׯü™l¤R©ÒAvqqa2™ÙÙÙMMMêÛU3  Á¦,++êZ‚——×_|±lÙ²‚‚Ùy<Í·ú9 ¾;êcP¤ªƒ²Tv÷M$õ[Dgºí;Jéðn º<·µÝ²ˆV´LH©ú?5ëR߇ˆ‹‹£Î 8::>yò$--mûöí‰D«0\]]…Bá½{÷ÚÚÚÆŽkff–ššzñâE@••UVVÖÒÒFFFÙÙÙåååÍÍͪ^(ÛÛÛoݺ•™™yüøñ/¾øÂÒÒ’úð(uÕ!++«¨¨(##£ªªêµ×^c³Ù0zôh¸sçÎØ±cÝÝÝÙlö;wƯUt¦yGŒÁb±¨39¡¡¡ еYYY½ýöÛ ~øa~~þ‹/ÚÛÛ•¶«f@ÔlÊÊÊÊ´´´ßÿýæÍ›ÖÖÖ"‘(--­¹¹yáÂ…¦¦¦&&&ÒpÛu:ÔŒa§1t ªƒò1¨íî›Hjjî Í÷õäGÃUº>·µÝ²ˆn´KHmb©ú?5ë®Zµª­­-""B*•Ο?Ž;6oÞþüùÅÅŲÏÊS3 j6%‡Ã9wîÜ| ‹ ½½=66Ö××÷wÞ±³³ó÷÷ïІۮÓ9 f ;¡U”AÕhwßDRSsWh¾ï¨'?8®Òõ¹­í–EtC(ýð•RÑɳ羭~™Ô¿×ü§ƒD"“ÉÔù»B¡ÇãÉN766A¥JCCuƹ®®ŽÃáPŸQÖV]]‰‰I×ßxê†ý¥¾îÚéY êjpSS“­­­úÎ*¥›rÑ¢EÔW)…B¡¹¹¹üæ¶¶¶ÖÖVSSSU­h¸í:jtƒ<5sU>5£Ý}©;jÖ˾ HC]œÛZmYDÑÉ¡Ak´K©?êó ü¾£­«çŸìz,ÇÓ¹•®¬Û­4쯆_$ÂÊÊJ“ߘQ: ê7¥âÇ Øl¶úP ·]§s@Nc§¦ƒò1¨íî›HÝQ³^öP¶é5ÑŹ­Õ–E´¢EBÂ_MEZÙºu«Îï¬BAúü)0„ä7®·C@õ%øÅ1„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´€ !„-`BB!D ˜BÑ&$„B´ Å¯}GD'k²Þ¥!„´»ýÄÆÕ¾ê8|òë.£»ÜÜ\‹5|øp}UËáp.\¨¯ {Lbb"I’K—.Õ|•G¹ººê} Q_¡fÎ$Y^^nff&»EžÞÑm_+..vppÐùNÖ¨+´tŽ‘ÖiÑ¢Euuu²/^¼zõjm+QJ,Ë&Íž={¨»eë¥f8þ¼¥¥e‡Ä××W (.|êÔ){{{Í+—\5VÓ§Oß¶mUræÌ™“'Oººº?~\ÃÊSRR´JH™™™ß}÷Ýô>†ú%›HÇÃÃcÙ²ennn½”äwKKK—+V 2DýZª¦Š~©š3_ýõùóçëëë¥RéÈ‘#<Ø­+Ý×4Ô£ZZZ½cǼ½dÏÓn®stÙB²©Ìåru¨AŸÏ¯ªªJLL¤þ=~ü¸A·_Û¿¿X,€°°°ÂÂÂÏ>ûÌÐÐ  y%"WtíÚµ¶¶6êÌ] Z­ß~û-444""zj »ÂÅÅ%((èÎ;'Nœ‰Dááὑv¨¡±±ñÑ£G'Ož ŸÇãÍœ93::šÃáðù|jbUVV?~üþýûAxyy988J¥RÿÍ›7»»»ïÞ½›ÇãíÚµ ÊÊÊŽ;–ŸŸÏáp¦L™âççG½ÓQUyddd~~~MMͨQ£–/_îä䤪#666Ô*ÙÛÛQ%%%%‡.,,´µµåóùÔ‰¯üüüÄÄļ¼<‡ãçç7cÆŒ¤¤¤‘whÂÉÉ©¨¨èÖ­[^^^eeeeeeVVV$IRϪêZAAÁÁƒ«ªª¦L™ÒÞÞ.{÷§4*yqqqcÆŒ¡ÂC™NkQì¬Ò±ŽŽÎÎÎÞ±cÇ AƒàìÙ³EEE[¶lѤ!‹åââ2xðุ¸gÏži5ò² àååGĺuë&Nœ¨Ã„QZ¹&ñËv„aÆ»gÏ¥¥8U:¨JPÕ UsFF H¥R¡PH’¤lò«jÅÞÞ~Ĉ \.wÛ¶m÷ïßOHH°±± ¢ÖU5þÎ7jʼn'ÆÄÄìÞ½ÛÅÅ¥[G• ??¿   û÷ï+[i÷ޏI$Vÿ§t-‰DR^^^^^.;ßõôéÓêêjêqEE…ìÅ¥¢¢"///&&ÆÓÓ³   99ÚÚÚ¶nÝzóæÍ7ß|300ÐÍÍm„ <ÏÄÄÄßßßÎÎŽZ‘ª¼­­-88øÁƒëÖ­óòòJNN–ƒRZ90ŒåË—‡„„\¿~]·w£"‘(88¸¾¾>$$„ ˆÐÐP©T G---  âTŒ¼ƒÿkïÎ㚸ևŸ°CXB‘E¤‚+"ź"UÔ*®U¡õWåºao­V+* Vq­{]PÄjq)TDÜ­¢ ¢€ˆ(»@X ²ÌûÇÜ››7³dP¦åù~ü#NΜ<çÉ™y2Kˆ»»»®®nFFBèÆzzz‡~h111¥¥¥AAA¡ššú¨dAnn®l¿&Ë¡Òq‘"‘åÖÅÅåÝ»wW®\Á\¼x±OŸ> _ðÊÊÊøøøÆÆF///•20+++99yРAUUUqqqôY¥š0ÄÎUJnÀ€¡7oÞP%Š8U”NTÒT£ 3 Z[[ß»woñâÅùùùJ_åþýûÉÉÉ...ëÖ­KIIéÝ»wvv6>™©ò/*øŠñññnnn\.÷#dµgÏž¡;wîмøT;BjlQçI àóÞÜÜüÔ©Sô9Ntt4ŸÏ¿uëV^^BèÁƒååå^^^!!!²f‰dذa «ß¿¿²²Òßßß×××ÇÇ'---99yÑ¢EøÉ(bç¡Å‹ãAÚØØdee©1Àû÷ïWWWûûû;;;{xxœ÷‘255Å? ijj*mlaaÁçóBúúúøF‚Ÿ¼fxìŒ7Æê9޽½}VVVuuµ……içR©ôðáÃwïÞÅOP¨w+¾gÇË­ŽŽN]]‡Ã ß¶m[LLLRRÒÒ¥K™ôöÙgŸÝºuëܹsåååC† 9|ø0ýÐð­ˆØ9iTò ˆû U{!,inµ´´FuáÂ…ìììÛ·o2ÄÐÐá õèÑ#,,lýúõøYMMMU3ollŒŸeíÑ£B¨°°?Rg>aH;gž(™ÚÚZ±XŒHg2 •¶¡i@Å“'OÙœQ`dd•””´ÿþ-[¶¸¹¹™˜˜P½J×®]õõõB666:::ø‘½íëë{áÂgggúH¨à;¯É“'ÿþ_Dyzz:thöìÙyyyò'(è'º§§§––Ö±cdž ‚_¬¢š™™Bß±J¥RY>©¢’ÁïÅ(--Uu\Ta+ –*·cÆŒA¥¤¤¤§§;–ù  2dæÌ™yyy‰‰‰4+Re^¦¸¸!äââ¢ê„!í\¥DáRSSBýû÷§I’›*J'ªJ3™jÎq8œÉ“'3F*•>{ö¬]¶$—ù…j¤QA{eµ¾¾¾¡¡AvÙ |4*$‰”þÃ~lll^¿~’’²víZ‰DBß?q|ûöí”””ªªªììl„£££@ xöìYkk+iãÂÂÂôôôŠŠŠO?ý¿cTss3BHOOïÎ;%%%MMMJ $ÑàÁƒ/_¾|íÚµòòòÛ·o …”””¦¦¦€€###¼1Uä2\.wÀ€­­­#GŽd24WWWmmmü\ÓÆëëëi¢’ïÏç;::¾}ûV!€sçÎ?þâÅ‹¤=Èž•_…t°T¹íÓ§••Õµk×$‰»»;“PåMŸ>ÝÜÜüĉEEE*e!TVV–’’òôéÓ‡vïÞÝÂÂBÕ CÚ9ÃøE"Ñ£GnݺµwïÞC‡ñù|üNkªDÉO¥U¥™L5gä=þ<99¹¬¬ìÝ»w999ÇÆÆ¦Û 1ÿòϪ4 d>DVñÂÃÃùÐ@»P­ µŠ¥ôÿö3yòd„О={&L˜ ¿¿ ejjºvíZ.—;kÖ¬#GŽ „&L˜Ð½{÷¥K—^½z•ØX"‘„††nÚ´ÉÝÝ=<<œ¦ó#F888ìܹ3!!ÁÓÓS(nß¾á(dŒŒŒÖ­[Çãñ¢¢¢ãââÞ¿/‰Ž;8uêÔnݺã©"—ôÍ7ß(lTCÓÖÖž9sf}}ýîÝ»íííe9iT /4mÚ´»wïÊ/”H$­­­R©”´Ù³ò«–&·cÆŒÁ0lÔ¨QøýlLB•ÑÕÕ immår¹Ì3âr¹.\X¶l™X, £É*ÒÎÆ_WW÷í·ßnذáþýû>>>ûöíÿA•(ù©¢t¢ª4“©æŒ¼wïÞmÛ¶mîܹ ,ÐÕÕ]²dIÏž=Û¸½ó/O¥i ó!²zòäI''§~ýú1hÒlHÅ<ãçÿ}›Ë—’þé ¡P¨¥¥¥Ò—þžž~žZ¶„ÇãOU#„jkk h>êÊ«¯¯ÇO×ÖÖr¹\µ¿×ÐÐÀápä¿kÕÚÚÚÒÒbdd¤Ð’&r¥H‡ÖÜܬ¡¡!Š&*yçÎ{ðàATTÍ+Ò÷ C:X•rËð…˜¬H fÚ´iø7‰‰‰Â—®Tš0To«Úñ#êDÉO¥ÉT)Û4s×ÚÚZYYÉår®ß¨·½Ðç_^[Ò¨@¬fee¡M›6É3Dÿæ¶=$ØIÉ’T*mhhÀQTSSÿ£âââQ£FEDD455)¬BúlYYÙÒ¥K½¼¼|||Ξ=»oß¾çÏŸoß¾}Ê”)‰äûï¿òä BhÉ’%«W¯öññÙºu+¾îÛ·oƒƒƒ½¼¼~øá‡+V\¹rE騂ƒƒ_¼x?^´hQff&Uç +++[¼xñèÑ£§N* €´ÃÌ™3Ç××722Ã0¥¡‘&0##cÞ¼y£GÞ°aBH!N…†~ùòeüqnn®™™™¬¬’¤¸¸X–aùC+ú7ÏÀ7"""¼½½wíÚUSS³hÑ"??¿„„ªl¬]»öÌ™3ø³_~ù¥BϤ $píÚµ©©©øc@0gΑHDó’%K®\¹²hÑ¢Õ«W“I?R5>qâDJJÊùóç§L™²oß>Ù㪪*5¶…„§¥¥…‡‡=zÕªU²”ŽZ>¤ªª*ªù,Ÿ%5Þ\Äl+c2µ@礤 9::úøø„„„œ:uJ6碣£G}áÂ…æææ´´4…UˆÏJ¥ÒåË—7668pà×_>|x`` ­­mHHÈÁƒ555KJJð·/))‰ŽŽvssÛ¾}ûÙ³gñ3øQQQvvvçÏŸŸ8qbfffCC1Î’’’œœœœœœÚÚZ„лwïZZZdOá»0bç Ã0lùòå–––çÎûꫯ֯_ÿòåKªhmll¢££ÒÓÓÕ»ÔAL †aÛ¶m[¼xqjjê‚ B q*ôàíí}÷î]zôhš´¶¶>~üxÞ¼y\.wèС² Ó¿Ñ2óçÏ÷òò4hÁüùó===‡ÚÐÐPUUEš Ÿ‚‚¼x_¼xqÒ¤I W¡ŠÐÛÛûÑ£Gø/Lþþûïãǧ‰yÞ¼y^^^|>Ÿ˜Lú‘ª°®®®¾¾>ŸÏ744”= …mÜ:B .5j”‡‡Çرcyò„ølEE…††F¿~ý˜¼V=ðÚÚÚ¡§OŸêééYYYѯÆä’Bç +//744Äw^¡Þ½{—••‘vˆºråÊõë×›››_½zååå¥4$¤ DmÚ´iõêÕW¯^]³f§§§Ò~¼½½SRR¬¬¬zõê%û1fÒdggëèètíÚ•a$ d;/‡ƒkMCãŸrˆÙàñxžžž—/_ö÷÷/..þì³Ï:$®B¡™™ÙÀ¯]»æîîþþý{{÷îQÅlnn.{¬Lú‘ª0•¶o!]]]üAÏž=oÞ¼IÕ-qÔ24óY¡½ªo.NéVÆpjNˆé/ƺ¸¸ܼyÓÛÛ[,oݺÕ‚،ÇãŸíÒ¥‹T*ÍËËsuu•oÌä‹““ScccMM ŸÏ—J¥ýõÀ¥R)BH,ã'I1 ŒÏçÿõ×_ß&‹ŠŠˆ;G\nnî?üpúôi›E‹1 UiBÎÎΉ‰‰'Nœˆˆˆ¸zõ*¾W¢I ··÷Ï?ÿ¬¥¥åïïO?|acc#—Ë•ï“*樲1nܸݻwc6nÜ8…SR¤«PEˆòññ¹téÒû÷ïýüü444ƬL¥k©0•öÝ:ŠŠŠðŸWõb>Ÿi08q€mŸZàŸJÉ)»ÂÂBü[©TúâÅ ›Þ½{ÛÚÚ=z¿H£pE‡ôY|áñãÇkkk% ~¼oee…ß+AÏç;99mÞ¼9##ãûï¿òŸÑ¨X[[çåå555EFF’^s’Vi`ÎÎΖ––ÉÉɆ½yó&;;{äÈ‘¤VUUZ¾~ýº¼¼\«µ¤ ‰DšššãÆCµ¶¶’Æ)¯GŽŽŽ?1bý@ìííÍÌÌ~ûí7±X|þüùÜÜ\|WHÿF3A•‘#G ‚S§NMœ8‘É*T"„¼¼¼rrr’’’ÆÏ0fb2•®¥jÀTÚeëÈÌÌÄ0¬®®îÞ½{ G-ù|¦Á|àÄR|òäI¸žÔÉ)Ù¹¿xñbîܹ'N àp8K–,ÑÔÔŒŽŽÎÌÌôóó›2eÊ÷ß/ßžôYMMÍÍ›7çççO˜0Á××7)) !ôÅ_$%%* ñÇlii‰;v¬……~§½éÓ§ïÝ»wâĉýúõëÒ¥ U3†éèèlÚ´éÔ©S“&Mš={öÌ™3‰çmpݺuóõõ]·n··÷‰'T½ŒDš@¡P¸xñâI“&………………á§à”&0"""22R>]TY¸pá®]»FŸŸH!]ÖIDATß»woü ýÍU6tuu½¼¼ìííííí®B!BÈØØØÃÃÃÜÜÜÑÑ‘aÌÄd*]K€IµËÖQZZ:mÚ´/¾øÂÒÒrذa G-ù|¦Á|àÄR|þüyšo:‚N¡††ab±øÍ›7øÍfòP(Ä(>[]]-‰dÿ‰DµµµT=ÕÔÔ¸»»ã•jnnnmmeØ3ÃÀªªªÄb±ÒÞêêêð*N1øLù%ª&P†8¡PØØØÈ0•f#""âÌ™3*­B!‘Ò˜‰É¤_K€U É$œ2eÊ7Z[[e¯È0~R ç3 •®0@¬ÍS ü½ÐךïböaÆÁoR¢Â†?®Éápø|þÕ«W£££;:"Ð&¥¥¥3fÌHNN–ÝmÁrì 8 <<\þ4,ô\5öà™+C™ÞÔÐæÎûêÕ«šššo¿ýÖÝݽ£Ãí ..®Ãwî*aIÀ«V­rppèè(øP”!~„??€  `(HX V€‚€  `(HX V€‚€þ:t±Ïtt¬°"dšüÿÙiùGVaP@%P[„ÍŸÝÑ!t°}G≠ÿ©iùG–tP€9(H€-´5á2‰N•–N5X@ °ìŒHuª´tªÁ"(H€-´µ8uª´tªÁ"(H€-àÓ1©N•–N5X@ °ìŒHuª´tªÁ¢v+H †Íš5‹árª6YYYÚÚÚ}úôi¯À:PNNŽH$êß¿GpìØ1.—ÐQ¨†¶ìŒH|œ´ìß¿ŸËåΞÝÁ7¹©=X ÃÞ¿ߨØhiii``€/dÉ sL Ò?þxóæÍ¹sç’6HNN&-Ÿß!I>x†aˆÄRU_eÜç¾!ÔÅÒrРAÿú×25¢e³¶¤!dnnÞ«W¯…¡aŸ|B÷!ïÌ™3ffæÓgÐm§a³Rc°---Ç=uêdSS“†††T*åñx\NEÌX…Ñôª¯¯¿wïž®®njjêœ9s8œxáqïÞ½múH^QQ‘Ð^!©-**J*UyñgjP/x‘Då\arìÕ+bÕwW¯¤$žN°èb¹0ô+U;a9õÒÂç›íܽ·¾¡>?/oïž]! ‚÷8ÜÛÙ™f a4¯µ(layyù¹óU F%j vË–˜ß/]œ<% (x±±É›ÂÂW¯òð~” ° £‚”––feeåîî~öìÙììlÙ9¨¼¼¼Ÿ~ú©¢¢bäÈ‘"‘Höé‰j¹<ª66làñxëׯG…‡‡óx¼¡C‡=ztÆ ZZZ;vìÈÏÏ·²² ÇOë•••íÝ»÷ùóçÇÓÓ³{÷îùùùR©488xùòå...ÅÅÅ{öìÉÉÉár¹#GŽœ?¾¶¶¶Bç}ûöÍÏÏ_·n]=BH$_}õÿíÚ˜ô³aÃÙ*Û·o¯¯¯ß¾};þ8''§ªªªÿþsçε³³£Y÷ôéÓ G!O!Ë—/—–4€œœœ„„„ììl.—;þ|oooª…x¨žžž'Nœàp8_ýõСCI»%pëÖ­ƒr¹Üððp'''â”PoÇ¡­­ãàÔ»ª¦&ñt‚¾ïdÉ¢0ï³aÃ9|pcÔ]]½Ý;¶=öŒkÈ5zÌüPËÉ—NŸŒß¼å§®VVü~1ñÔÉ•ÿ^ÝÇÅõæô”ËÉ‘›cž?{z*þxö“'\Cnð°±>~¡¢7…ÛŠÍÏ˵²êö¯å+]\ûª³JÔK‹†¦FWëî]rrî#Űí[·:¸ct,¢†ý絈 NžÈÍ})•JçÌš±|Õ¿]ûöû@yPu°ÅïÞ%ÿ~ɶ§Ýÿ…/ãp8R„zØÙ÷°³—õC3(„жؘçÏžV½ßàÀ à;{D˜<޽Úeh€ FÇ"©©©cÇŽ;v,þX¶<&&¦´´4((!TSS£t¹<ª6¥¥¥ååå²ÇYYYñññnnnZZZ«V­ª««[½z5‡ÃÙ¸q£T*mmmˆˆxøðá矾xñâÞ½{{xxðx<ƒààànݺµ¶¶®ZµêåË—_ýµ§§ç™3gd'å;wvv~÷îÝõë×Býõ×ùóç=<<ä£eØ—Ë•_«¼¼¼´´¬©©9wîÜÕ«W?xð@vè@µ.óQÈG¨ …¤ìÞ½ûíÛ·›6m ëÖ­ÍB<ÔäääAƒUUUÅÅÅQu«<Þ¬²²òèÑ£ÌËË;s†ü/ĈĘªÿ0„ ‚ãGÙ±më°£ÇúùãË‹‹ße=~|üè/ƒÑÐÐ^¹tÉ‹œœ¯þ/üSÏa‰ '÷îÚ)cÖ6voß=xð@$ÆÒ¯_û¶èÁýû"1–qãFK+‘Û¹}ÛÛ¢¢È¨­ ¿úÆÒÒZ$ÆþjZ¹,¼®¶öß߯Gˆ¹nmK«D°©þµcZö¿ûöwC¾~M3 a†¨¸¹{òx¦Üy Â,»vo—<´Ë`ó_½Â0lÀ Áb ɺôƒ‰1Gcμß®Yÿàþ½øãlj“GWÛöAæ”!üøãæææß|ó¾¾~UUUQQ‘··÷¤I“B™™™†!„¨–ËcÒæ?ñiiÅÅÅ™ššÞ¸q£ººÚßßßÙÙÙÃÃãäÉ“oÞ¼Á«———WHHˆl‰D2lØ0„ÐÍ›7+++ýýý}}}}||ÒÒÒ’““-Z„Ÿ”u. :”žž>oÞ¼+W®tíÚuàÀòaÜ¿ŸI?4i\¼x1BH ØØØdee(߸gÏžÌG{ðà1ô`V]]]___RR2f̼7Ò…8}}ý˜˜==½–––´´´¢¢"[[[b· Áã8Ntt4ŸÏ¿uëV^^i„ê TWW%Ä×ÑÕ:|¤®>WÖ‰¦–fLÜ^SSþí›é••ŸûO5Öo¤·oÚµÔäß/,øz‰£—ËÍ|ôpäŸì'»XvÍzòxÚ—’GïÿkåêV±¤ººª¾¾îí»·£Æøhhhˆ$Ò;wnWWUùŸäàôÉ`ÏÄ“Ç zÚ;ÐGØF꥓[±‹•µ––VcS#ýð³[T ô ¸‰dÈÐá¡›7Ò>PTlUU5BH[G—jEúA…~³!T+Xw·Éz’Iœ++«ººÚÂÂB¾s===OOÏôôôÜÜÜ‹//¿3쇊T*=|øðÝ»wËËË¥R©±±1q€4è_]¾ U*Hàp8áááÛ¶m‹‰‰IJJZºt©££#éB¼ccc===„~b³°°ÐÆÆ†j\ ,,,ø|>BH__ŸêÇ:[>†ìì7l‰»|é|ÌÆu9ÏŸµ_Îç›óDiiI B¨‡Þ¿­Ãóì'••æ]úôýøQfæ#S¾ÙÈ1>¿%ž|öìiSc“³k?± [¼lÏö-Ûb6^L:ûuø ;‡^åee¡„ø£‰'#„´µuªkj¬míT[ê¥E~źºZ±XÜÕÊZ$‘RCC4 0„Ɋ܇˃ªƒ5³è‚Ê|øàË …$OÓÊÊÆ6þ—Þ»]Y^.‘JŒMþóêr“§ÍªQR$IZZš››¾ï377?þ|jjª¯¯¯™™B¨²²!$•J[ZZtttBTËå1i£`òäÉ¡¡¡²…ÕÕÕ!â'nÙ.ß –””àÿ-//×ÐÐ ½ËËË+==}×®]µµµøÉIyÌû!•žž~úôé… ¬X±BvžJ£À«ÕÁUžžž®®®gÏž‹‹Û¹s'ÕByÅÅÅ!šqQUb‰Ê«`aÆÑÐöõŸrúÄ‘ô«)!ÿÇáp0„°ÿvhÌã#„JKJðÿV–—khhpLÄ̵ÿ ?ïÝN:“0ÀmÈ'®ýã9uì°³K_M-]±è>tÛ¾c—~K<—püç[7þ´×ÔÌ!4~ÒÔ9Áÿ»¾¨FØ*Q7-ÿ[ñZÊ¡>}ˆ%Õd£l€!©TŠ÷ùáò j'6¶šZZ¯_åUVVòÍ,ž¥TÆõ«¿%žœü•ÿÓÖýû_e¥ø«ËOð‘))H>>EEEC‡%-~ƒ622zùòåŒ3ˆ ˜÷Cª¹¹!¤§§wçÎ’’’æææ––]]]šUTi*èÀ0ìÆ ¸páþí ¡PH\ˆ+++KIIéÖ­ÛÇ»wïnaaA5.ùà™gI¬ÖÒÆÆÆÛ×s_qjÊ¥$]=}±Dê:`°¡‘ñµ”ßmlí>q-*|Õ½GÏÇï%=²H$jUxàýùD5FÔ.i‰Z3>67¿ÌÉN½ôÏÔlÂÔ/©†Ðµ[wYƨØÚ;ÞN¿úüi–£M'y°Æ¦f~þS~OJŒþqõ—Aa–VÖy/že=š¼HWO~PM!mÝ{wn•• …ÍMÍøV)›<à#SrSÕ+W†.«F! î\¹¢­­=sæÌúúúÝ»wÛÛÛËNQ-—Ǥ##£uëÖñx¼¨¨¨ÀÀÀ¸¸¸÷ïß›šš®]»–Ë寯ÆÎš5ëÈ‘#¡ &tïÞ}éÒ¥W¯^ÅH$’ÐÐÐM›6¹»»‡‡‡“ö¯­­=lØ0MMMü²–æý(ÀFŒáàà°sç΄„OOO¡PˆßzGCÕQ¦B†4‘HtìØ±ÀÀÀ©S§vëÖ-88!DºÇår/\¸°lÙ2±XF3.ùà™d '‘bªþC•¿‹^3-ÕÝsøŒ¹ eËeó¯úA"‘¬Z²+6²ß !A_…ãOYu·561ÕÒÒîí2@CSÛÁÉ!ä:À]"ÅZZ[=u4|á—as&[ZYO›³@"Åô ÿõïMx¦»Ú¾ð˃{¶½¯¬‹%"Q«X"!>Pc8í•–†úº¨"vĬüç½a£}6n߯§Ï¥‚|ƨxùN°²¶YÿmxFÚª62Øi ¦Í .+y·ñûåKÌÜ¿cKñÛ")†”Ê}èˆvG~Ž;ÿëÉAC†¶…wÿ¤0yÚeP€9Õ]p 577khh?ìS-Wµ QCC‡Ã144”_(ôôôä §@ àñx²¯LÕÖÖÐZ_¹r¥±±ñš5khÚ0éG&  W¯^QQQøëëëñ«,µµµ\.—xß6‘£ ¦B†4€ÖÖÖ––###ù–Ä…Ó¦Mÿ°,LLLäov —Bðôbž™5c:“–j«¯èësµ±!„D­­­­-\C#…å5p8®!éZj;u:‘ø›u(-J‡@Ú ¾N`dü¿÷´-yhßÁbVý¾Ã0ó.]i¦1à¿ê ŒB uµú\®––ò­’qP€¡Øƒg6® më÷®Iw|4ËUmC¤°ëÄï PXÂãñ軽|ùò“'O”¸(í!$ ¿ùæ##£†††Q£FÉ–Ë®ù3é§ê(ˆ«È# @GG‡XáHRõO5.¥7k(øÐ'I MT}ަ–®¾q]}®ª]©í½ŠÒ!6004‘eÒ‰ªÚÒϬ BH><"bÀz†øõ Ûh»Žÿû:,Ñ­[·ÈÈHšö˜ÓÑÑ «W¯Vzmìï"""‚É!][ÀR*-j°€ ÒÈßÐFC† i¯ÞXÂÝÝýC¿„vFd:UZ:Õ`$Àðé˜T§JK§, ‚‚ØB§ïÉtª´tªÁ"(H€-àt ©N•–N5X@ °ÅÕ?.ttlÔ©ÒÒ© ˆÚú=$ ðï!ÁF`(HX V€‚€”Üe{üצ*êý‘Yå·}o\ª´ €Z½e?BÈÔÔT ¨º.£ï!©Ñ/ ¸†¥ÄÄÄ¢¢¢ŽŽ€Î èìfÏž}ýúuù%óçÏ¿{÷.Bè?þ(--í ¸ètàO hÇŽzzz$mÞ¼yÚ´iD544¬^½:''gàÀ+W®Äæø»ï¾óõõMNN611ùî»ïŽ?~÷îݪªªO?ýtéÒ¥øOhË·ÑÔÔüä“O&NœˆjjjZ¶lÙ¶mÛÔûÅdþÁà”ŠÊÊÊ„B!þ811qܸqkÖ¬ÉÏÏOKK“58tè¿¿ÿ¢E‹BÖÖÖkÖ¬Ù¿ÿ;w^¾|Ilãì윜œŒ/OOO·´´„j$è~öÙgƒ 9rdff¦lùŒ3†ÎãñB^^^VVV<ÏÎÎ.??ŸØfÔ¨QoÞ¼ÁïHIIñóóûø€ýà”ttttð666÷îÝ“-çóù²Ç7nܸuë–P(,,,6l±‰‰ÉàÁƒÓÒÒ|||JKKÿy¿p@»€‚#ÅÅÅ®®®Äå¯^½ŠŽŽ>pà€µµuDDÕêÞÞÞ‡Æ0ÌÛÛ[SSóCF Àßœ²€Nvv6†aõõõ=rss#6¨©©122êÒ¥KQQÑû÷ï›››Iû:thmmí¹sçà|Tà ´eË–­[·â7oÞ,ÿT}}ý‚ A¿~ý<<<ˆë4¨k×®Ó§O·¶¶1bį¿þêææÖ«W/…f:::Çóæ­­íwP@g¯°äÈ‘#øƒ]»véëëK$¡PhddDl€ÒÒÒŠ‹‹khhÀ+´Á577Ãá4à””¸\®†††¶¶¶|5"%k€W#¢òòò?ÿüsôèÑí"ÿ Êüm7rÒÜŸþèè(`/F§ìÔûe ÚÇ0pÊ@{Rû €öGHþÞ  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HX V€‚€  `(HXA‹I£Øƒg>t:9%iEÈ4SSÓ+C?N4:-åGHà#Ä “ƒkHX V€‚ ã@AÐÁÕ•IIIPt¤×¯_—æ1úð!¤¤¤ÌŸ?ßÌÌ ŽtŒüüü”””   ?ŸæÃ5$#??ÿÊ•+AAA5Up @G¯Feoþ{ þT€¦ª¢¬â]AÐüù{Nþ^SUYö&/hþ|333†a€Î"??ÿÂ… AAAfff 9555€N¿§Nv¦Náñÿ¾seR…œ>¹IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/log_errors_counter.png0000644000175000017500000000634012032647206024774 0ustar ebourgebourg‰PNG  IHDRÑZ©/$£sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ#Á1» `IDATxÚí{pTÕÇ¿¿ß9{7›ÇæE‚€‚+`P@}°&ÀTDmÑ ÚÇéè0Sm4ÌЙNkÇ©£5V;ØŽƒ–éT‡2`K-´Ö@gLb[ Š€j ò !Éf÷Þ{úÇMšl’]Ìãfs¾“ÌìÞ=÷»'÷|ò;¿sî½çÒœù‹®_°ZZæT›í ÷. ¼¼\^ûíïÜW¬‹ûÕp¡Ý´ì( KÁ™©‰.q¸ÏŸàÕ7~ÿæ³JÁ¶•nQ÷רÒöé¾²(Ë_·°Ð¶U84£èp®¹À­wý`ÃksÓ!¡”Rš9W«±¥ã|óÅ£U{ ïX5óªôAË;ÕT¶{Ǭ¼~ŸK$dÍ„Y)`kæÜ­Îy´jÏ’e÷dú}ç/-Ÿé÷ÍÊ+8Zµgá’NãºÁ!ÃïË™óVé R)hä\."¸"#ÙŠ: ÊÎH9 u5®.åy€î[Ý.v1gÞLä4n/‡¿—U °×…‹uè1 /ÜwK¸Ã%æ”Ò}«ûã\w{ÇØRDäìÒ×aÓº»#îR\º3ü[úsؽ§Òq(.ÝyGÁ­·ôrcºoï8³Cx™A6­»»¸tg/ˆ#:„Ç9¥ãܘÈç.+Ρ;JEppXéP¯2ý9,»íæâÒNùpÚŠKw.»íæˆáùt>7Þò¹.¾©çuÙûÿí'JEv(\|Sv=À.¾©×WDÈç,ˆ,Ý®c"Ÿk cÝÑiÜþ"†oÔa€}{9|-ŸÓ}«Ëåì¼°lÀ¾ªƒ^˜7€`ÀL!ËîëУ^oÃ7ê°¯ê`¯ˆ“Û9èëðµ|N÷­cfÜjG1ê´‡êîרŸ¾5"¾Ñ8T}x¨§ác»¼oèë ó¹±•ÏárGèÎÆ"|Ú¸Ñ;8ÀÝ8÷zçEaD‡ð8§çJÆNœënª¾CÎKÄ|}v­û,Â;̽aŽã0÷†9ýméåçtß:fÆ­N.5gÎuOÑúŽ:‡Ê¡Ç$¼pß-Ðç!Ætœ;Óx1ú¹’s­èsatz$¦Í^0möBÝ®®Žs,¾5+wï?Þ–Iن᱕ø§±¹õäÇï/»óÞ iC¦K(…O*wÑ’ïÿhɪGu»º\‰ †GвÝ;¢,_xǪiµ‡Í–¹ÁA)¼Uú˜s¾U÷­nW[GgFjÒÊï­Ž²|gÈlëèt›@€¾Nx쨡ùâXwp’By®þü'‡èÕMð¶Ëû—æ>õÔj},´†U çÔœ>õÈ^çZ&ÛÖEkĤ™ÓÒÌiÅ=sÐs%Z:Îiiæ´´4sZš9-­Ø˜Óc-ç´4sZZßL=·Shæ´Fйî[¡ç„µtߪ¯š9-ç´Æs:ŸÓÒqN+®™KHHHMMÕBkX¥ìKËɦ¦¦“'Oꃢ5¬š~õ´KÌMš4)//Ï ÕjjjÒm3.â\UUÕæÍ›#–+**Ú¶mÛpצ¨¨(--M·Ê8ÊçòòòÖ¬YÓ÷ƒÍ›7§§§ˆøéPÉù=ˆ_ÌA;µáîõôdÍøbν;˜k)/o­¨psk¥,ZäÏÏ×ÌÅs­5Ï=çæÖš²~½fN÷­Z#È\eeekk«B¦Ne) (1@ä¬À£Èy~ aJVÚ•ÓÇ snëÂÜßéÇÆ\]]]sss¬³ÇÏÍÍ•R>&é!f ض²•r––µmUúÖ^xü»"üjQ3çÏÏŸ²~½«ªWÌMŸ>ýÀ1í¶gÏž­[·fff†B¡yw®Mž2;dÚ!e+€”‚×ð´‚ Ø Ê ÌŒ@H%yÇsZÃÞ·ö,ý˜¹¾¾¾±±1 &Ïožwíä4/Ÿ© õ¸ùRØô(Ûîzë%?k͛ʚ9-¾¼Ý<Ý"""®»` BF²ÌL$˜›Û‘–ÈÌÌLÌÄÄRÒùœÆN!¢bNtI*З êú+ ’wÆDoÐTÙ~y¶9ôöþ–Žr¨‡õ¸ž³oB¤„&Ü¥™»L椔D$¤Ä ß¿(«©Ízqw}Ð3~¸$ã±å~½û¼3ŠõçÌyÿšP½žt…NsÂ}š¹Ø$„0 ƒ™…Ì‚™æNKJK”_Ôw$•n{òî¬k¯H8q.H1îãœñùÓrÚsÊ z?ÛÌmÙ²¥¿JJJœµ]/1ÇsVדÌ1³`ÉÌ_^è°B&MHæ†6Ø Wfz$zÙy¦¢GÆgœSjßKK7¼ƒ•ϾW²°ÿјqîu㤠¼¹žºÍ¡IkF·Jªv{ñ3ظiÕäHe¢4 ×Ú’µ‘™CIï8÷ië”ÐÉä¥91,Ã.¥4 C)%„pF çZì§ß®Zð{)É@ТsSªB'Ά˜ €ä8dN©ÚÅv1c°+c<Õ›ÄOìÿí¯ ì¼ <_ýf8˜s@ÙÅŒ(ª„šê#3òû›Éå[Ož ~t*6o‡9)¥”’ˆ13™61Q[„ ‚ܤN›ÿÝb+rz_9`ß:±SªvGñ3ØøìŠÁ®Å2j^dïu@ë…£Ÿ]8ö9Q“ðNóœ*ò*-\[Vöî»Ï¬ˆâò°ýåï¬Ì_ð M.“¹£g¬C§ÌØvcöz½RJ! fîÂN0³àCÞrïOAEÌ‚ÁÌRÄÛ\Éþ—¬~hÓªIQ®Óé9@—ÉË>-ü)¢úÑM úAnØÅ>;c:eÅÊœ3h%"¦îI8g6Ž(fÒ_´µt(Ÿ‡™‰H0‘`OÌÕnÿñ–©\»pðDÇóå/db6‰:È_JjRF6¼mä»(ü™òÄÏGí¨«>1{ê”Ñ·Ö7sÎ;Væ ÃB"Ä ºÎB¤$ðçg-)زa0Yâ,ŸÛú»#Çø¡e¯tìÚ°Òm;„“[äUm謂@ú´,e5€Ž€áÉôŽœBÎOAžQ@¸}ãäØOA sï­5çÏW—çø’9Øn´@dÙä‘¶eA€@gs%kËÊÖF1¾‡×K?(5 Hä׃'­ìN#Ë<ü¤5§t„+¯Tí{qûÆI£rèÀ+gýÙñ¢X™óx<]¼ ÐõK üïd'ˆÉ¶¥Â)cˆÁ3z«]ÿ›7§ É@2‚º×Óê^MƒHá½¶SÛ«}Ä«VS}dÆÔÑA àX]ý?¼ì8aضmÙʲ•e[yÓ<ëV¤Îš$-Ë6mË´lÛ¶mËðß.NÏ·VWKJÁ¼€$‰ »Cw3¨ò‰!¼XX¸|ùÆ]ÌÌ»6._^Xøâ¾¾Çvù;+óû›u‹Ö¤×$\I‰‚Šø¡oýøt‚ˆ•¹®'ØcZ6uçsó¦I<ÑO‡NYLdĬ¸ž`LçÌ,Dœ }ô¾u0ÏB²o‚Z 0Lô^•Ú¶­B,öÊôA®äšôRô7jI¨|±þmÔ•Ç‘4LËìJè@¯îm¼ùšÄÊ㦠çL+Ιˆ¸dn £4ûž¦íî¬ Þ~Š4SB‡ç–}®¤RµÕ'fO½gYvoÍNÎŽm7)Z[[ƒÁ` ½MˑӢ}ÜB]É®RðÀ}k\2'–>¥ÏûÜöŸ@“ï}ùåQ¬€°sõÎü/ÿ_°`A}}} hoo7­ÁI=3%ݱ-ü­4;ÄñÆœVdæ<øÀÄ´O0B¬Y³¦¦¦F!²Bœxܶ,Û2m¥”m³s²KJ)K)fdQM™ššêóù„š¹qÍÜÌ™3³³cëX ÃÈÈÈxøá‡‡.Ãps-ååº>ÃžÏ®ÜÆ\kEE<Ýg¥™ÓùœfN3×­”E‹Üv[k߯s‡x‘¹þV§‹?æüùùq°È`®¿õç9«Ðé¾UkȘt=a½äªÖ3çóùF ’iiÅçFL999º=ÆsG¾¨Ý±§ÊuqI5´†Z¿üÉšðû[Y­aÕºGz_,oŸÛw«–Ö¨ôµm}G :ÎihÓÌi {œÓÌi¾4sZ#-Y_×fi¹J•?ÕV  ££@kKKMMíÿ“@ˆŸ‰[qIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/savetofile.png0000644000175000017500000001423412032647206023222 0ustar ebourgebourg‰PNG  IHDRfáÌ:ïðPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<”–ÔK±m6X`ü–èŸí¯Øÿ©äÍ~)h³)ŠˆL¶—ç‹f4öØ‘Æ3NÀ‹7Iêè Ïw>*çÁ75­œ¯|3*¯ª\S60†‘©Êu¥Œx•kʦ0Þ5­œ¢þPU®)źª\UVKà(–FÕ›GÑÍu¶U»¹ÚÍUV»¹ÚÍÕn®r5y߈#ÊÂÇæã}’êaÕGê=G¶œŸÏí‚t‹žwU9ÑÍ|æ}ó¼k/ÇÏ™éækœÙcš'ƒ‚Û®ø8æïÊ0ñiÐ`ìƒõž!¡÷”oø¸ï=ïºòZìºõàønúŽFú΢OÏçx×Q9Ö [Ð’¨ejƒßX#eý É!´ýà÷9b¿Iæúœ—Û³å¡7ÕõñÜñúOYö@«ƒ¼ ×#ÖÁ·ážC }ëí h¼Õ€­ûð=ð_”ç±=ÖÇþ©¾á²[£Ç×ú¨h‡ç³V™–òs9öƒ²Õ†KÎÊnvÖâ8iãû Û¢ë¹^×[;°M¢R~øŽº;£äÝJãÁõãÜããŸó;'lò‡ M+×Az¨h‡ç3ºçü²\úÇÏyÙÍ-ÙÁá½6¢Î óXô²ègêÛÐ…w™Å§G+üM6l°e;´=x†ñàzžglnzïЦÁ„åÍ€Z^ìe|íøºàÆiðÓòÔ??açc7³lhþ‚½ìB¦#ýæ®™ØÔƒÌwÝ€ádm²§Û\­lnúp–ÏïN6ö5´_—Mùã–Í,ç>'»9̃vœ£ëï; y$–Û`Oãü»Yñænh¥é÷ ¼I`?Á¾Å²ž¬6z²YŸv¤‚ön±=8¢b/Co`Èíø¹˜”ûØOì߾ݓž§v>–Û³“~Ènvr½§¾Þ¬Òm‹&C¿UM9­±Þ|†kç¸Þ-„ºÎœ¤²ôf!Üb•+Êêy®8ŠÓ¨²â4*NãÒqŸÿú×çϹÏU.$¿Ëc«ÐïÄënýŒ+ 5-•~ÿÙÉú¨k^á@ýq_µ¿ò꾦ÓWqÍ9ü+Ö›G8xý´ùêçá5ìYo~âºEý<ðùs2ž¥Ý O°¼*5íMøoÖnf]rx_ßp%å§ã™ì»¶QkHUÎËûÉx–8 ô¹ öáÜpwô|HïSÉyØW~ˆÄñÙ|ìÕÖ3û=޼" Q³ë1Úèûé?ŸÊùsÒ+åCý÷o÷<5@£@užýäÁž§qT¢ÿNZkxAðx8+Æ[`}‡¸ cFÄ]´ŒÛÐ-æ³-usRèüüîÂߟ¥Ï£Ô?Žxø„òðÁ|® ?ä2ßHYÃ}à#á?(5í'd6‚kˆíNZ7ïÆŽŒ[ vˆ¶7ZĽÝúJ« I,´#áÖÐnÎJ#ÌØpÃ+ÿ/üÁÇ8TX ŠÕnr½ sYã¥ÌsøªnÞyyH?œÍ}K;™÷§–îåwo©›É¨F;Ïù…“DXŸlÖÍI5ˆ:baú¨B7ËÇÏælÿµ{´/ë´?WÄ»8n'º™í”žueçyÄÒzz†'[ÎúáLçg®ñ’ÿÖË[®‡¢>k_¶ïßݼ‹oFÝŒš°S,öMÞùÚxÂ?v3Ï)zYÑÃ@o¹;R±"ÆYª²JIå*Ï݆ۃè÷¨)¶ë¥r¥ÎÑn&ÌœÆdvB3ºY¥5/9ŽõÉJx:úT/Z×¹UÀïK~çñ•ó›qjŽû3±›'ëÍy}ôùé—ç=I{íì×—~{S®7OìæƒñºÏ]Óè.nMcÎn>x…®y¦=éádíÜ#ÚÍÇR€ûãŠßŽc•{ä~»ù`¼îßý³®v>šöÙ͇ǹ}EÝî9N¡Êy¹×n®xŠ%e9ž¥/ÐW¬Û¢ÉW>—‹ ¼‚Ê{±¤,Çóy8}ÒTà@þ,Ó¨ø>ߎӘ—Ÿ1IßŠÓØ'믒"•ãyí“þ…ÇÂ>Ië ßQÅgdÉv3ËÔnÆ8ÞøŽRÌ4ìêæ“ÆOSîÁ7«~Ã룷pc!6Fr _HÈgN‘PÏ`ŽÓħcúŽëéª-æñÍ[8 ±ó:‡ñÚa®:h5ÎïÚŒÙôGÜuwÈ0`y_‡è¨ºyG7Ïã4øÍ¨£ÈJR‘ÿ‚y†FZŸ·Ù_Øz7(ëFu9ëɧr½¹™‹µ~£m0&äÀ(ë OŒ®vóCvó6NCx21ÁiïKˆoƒy-x6 êe¹USìYožØÍ]úNøÇš NÆ>ò»¯%^ ù¾t‹¼㮺yŸÝ<] ãlàF Ä‹³Ó踵íŒa½ŒGˆµÃ÷$ëíj/ïØÍ<¾*ïIõùǯߺ÷Ò÷Õ^Îòb<—]oθã*a½õ檓÷ØÍåzó‘Ûí^¡]\å²Xo.p?UCwi»y§a™ç-ò$/-?]\DñÏóüÍëÊûKCÐ|ýÞÍò7¯+›K³›?ÂËì{rÁëÍGÅi\–Ý<¾È¾'÷Õn¦Q'¾Z§Á¶ßºŸ‰Ž÷I¾`¢Õ^Œ³ò3ùÊå;mŸ#ãNn½ÙÏÛÍÂ[ëSÜÈs“F.üÙ8ï>9†å”íæÂ{ÂÚDßÒª\«oM3ƒÇ([yÊ´>¤1–s}.ãúX_S½P_êÑT”ðU ~/«ï) 6†Ha¼ ªÇºŽä{´ÁCÞ{ŽTï=p bZK9±4Îã4„§¹ã½rì¦×¸oò&·ƒ¢oР0–Sý;önÆFÿàt}ëQ,!Dy”<]]ÌïS$q8æè{²O>x’=…ʿź÷o?p`q(?«õæ÷‚ˆ¬/“éÔ Ð/Uúãú3Ú,7ÿ~OˆñÞ¡½½Iv3Æ&»Ò³âUµYÆf¼‡—ø??OøNâOuÛï‰ $ÝõJ[ú²x_žÉ§ÝSø…=cõZÞC%êf? èž9NR•ù9þ/tŒ3]»¹ð>/ÑQ‡ÔýøæÂV›{ó%ÝÿõÚûû8ŸP…ûµÄàüSÑÍNCÙcÅÉýqiëÍÿùÕ¥û/ðÍ+ËÆ}ºÇ7áå¤ß|}´=óþ¡¹¸õæ9»yEùé"Ù…‚4óŠòþ#é¿~ÿ¥‡#ì”ÐÀâ›?Âñ÷=©qGÙÿãã÷¬7¯(ï/C·¨ûñʸ@Íû]æü‰Ÿ0ä!£{Ônn›eäÊå Ìa5faõ¼ºê#wìòßžô{ìfܯýx…½k“í'þÁ‰Ÿp/íCü†< [v¥ßæiŽ>ÕQX0ÇWi7Óz³¬w÷¼qÀëÍÄi™Êi=ƒ×£ýN!µ¶!ßn­gÀîÊedžÑìA=s­ñðzóØ´N 08\WÖ®ˆ,Ö‘i}™êy³ÙŽ#¼Ã½†ŠûrOt3Ì?e‘§ÄsuúLØÏ[o¶F[ÔÅVÉêrCëÅ÷¹F^V›Ö}Çì¤zClQÄÒ÷i…‡Q¼¾´+3ÂBt+³‚š8óçžeÚ‹ÓlÆ•zÑ¹áØ .˜Ä ~@hñºy/%³Œ®:wÎæƒðÍ1þOSD+íc3ð–5rŽL~@<¶&Ô£[q„¶\ožêæ /sÁÇÌ÷%öYëæù¸À&èWdŽ)ñ"ÉxçK?aâaìú=q„wšâwts?å í$®“ô1á7|âo~v3[³#ûùp\);ÌWùÝx#>¿Òˆþ¿Îíú ­a_"Lðs>òîCtFf`¯JKÊz¯Ânþf_àü€†oþí×µâ÷Ë Œ <>¾ùr×4víæõý€¨µ/Hî±›×ô^ä>ŽóvóŠÒ®oxâr×n®²î³ýjöÙ®i½Tù›Íß\åzò8vó–üXØ—?¼Àù/‡¡+’ÊV´5îøç?~:’Ý<•’ý§!‰þFæ·›«Ïñ·r|Û9ñ·K¹¦õoMû Ë]çíþëyº<ŸF)}æ™ óÓ¸õÚî©Oë®ñxãØ–ÊÑï‹|š!ß´Ãb×ÉñŒ Ý÷ñðÍ…¼ÏÇ„ÈàuéÇqãËÒ§¬X×’[pxÌ\»ˆ‰~Ié‡}êRN޳دŠñèÒVú§2y.Š6ÐI?vû~»ù*ÿ}/¼¤Ä;Ú‹üÑ)ÆPüåŒ3Çáî-´XǰORüúÔc9@Ëmˆ—q%¹Lú/8«·ÚÈu,qÏÇÁ7oKˆBbeSy q;ž‹ævC˜Fq }1ažõtß…ß‘÷‘d¯–‰x.7ƒ%¿¥"&׎ñ·›=vaTI'…s'?&ï«Ê×±Ä}¿ŒÝì3¯1¿îÞ†w¸²ø‘G7Æ‘;ô¶M§Hó¿/âÝÀñ‹­ Ò¢T±|ßêáþáÒ¿ðõªÂIíÒuœ­Ý<ñ?Š”!¤ÍȈ™Hø<Ž¿Õ‰?š1!øt ßÃ~IídoêO[)—øFYoo°ÌØØ?êlÂîÄ3Šsû~ݬ¶u³1“}WP?;:6…nNüÑ/¢ ²¥›Q†ùŒ\²;±ç¢kSõÎí¶0Øñ¯=~S‹\Ç‹ØÍ?“=í«žOøÕŸ×ÞD=ÿí×qœÆÅ§ºÞ\×›_‘| KãòdõÇXgÛQfsÅQTœFÅiÔTqÕn®8ŠÓ¨8ŠÓX§AÂ~ó”ó´©>ã-Zâ©sË݇~Òõ¼ŒÝì·Ž5 ‰z¦>òB#ôáçA~i9f¼òK£¿z¹ûèžRÿ|pˆ¿ƒ÷IžÁY”øŒù½5c.(¾1óK'|GâLH| á¼zo¿%NDÓ~‰Zp"¯§‘}‚ŒF³˜à3,ˆ/1ùa¶-ó«‡rj‹ß;~Ùw^´Ä¼rºv3¤ã+`/\¸E¤'Î\¸õŒ-¯µíý™"¾[yKø 5Xâó ¿Qq_ÆÛäÏc¼Ç%ò&ïµmC;ËüÔÒ¯Ëe[ý†ë5±?Ëùà>à ÛÍOÄi¨Ë<Ñ2?#>ÇÁt=¶CÿøŸ!x Ò̓+ž‡ÒÏóScÙÝv¿ÓþB~Ž_58 Ä%…²&E|Ó#éÑp76<Ú­â324¶qµ s|`í0ÅoĘóPÖá®Ö“~Dz?âI¼ÿ¯§Ñš„³ÐŒFÜß;´u†)#c8 Ý,mC;Ë{†ïî+žÊÊ~'8iƒ:{8ìž•}x¹o²Ýüë—ÒnÙBzÿCi7‡14A2¾3–³íÌ·¤L°ßÚÑnæÿ-—“íbc²;$Íô ñ|·¹Ž×÷è}¿rœÆº8 Ã:­â4‘‘ïãYíõî¾[§Qqu½¹ÊŠÓ¨8š*N£â4*N£ÊŠÓ¨8*«Ý\q§QqOM/hûbñߟä=Áý¹owêÑþÝÛí¥–=pÓÎæ›Ç®Ï¤ýÃ_ƒÝ¼Ó˜ÃaŸÀ|<|€y¼Ç#×Ex·Â}ŸNæ¼ l,Çk‹¿Ä1_ºåujÁY~Cp¦>áш¸í2îBx3øXöÅ€vÆ2<§†Óˆ¾¶’÷ù38fšñèÒŒµ01ìËCœ…)81LìÏ¢ÏnÜ÷»À]\„ÁˆûÝ/Ç£qZ8¸¿sâ½Tä(§zŒß@œ†eòÒÎŽynÆY¸äç}£¥\⺕>ÿ1ófÈyr}‰û>{»y§ÑÍò^x•p~#ï[æÞœú ãÅå¢×!î0Åqô@ߣô§6=íwævóNCxü·y/âþ*~£ÄS4ã<Î"ï»ÂýòH “ì>Å]9 Zúù°à}ŸNƒôoÆ<À”C£ÜBpf‚]+ðÓ}Wk[ýƾ ®ŒùÈ|Iç¾Þ¼Ã§Ìw±Å{ʧ&|=²ç„÷ña 2› çó‹Ù¼Ë£çÃý›²Þ úÛŽÏ#û»_‡œ©û¾`œÆ]gv¾ ÆiŠ«|§Qe]o®8ŠÓ¨©â4*N£ÊŠÓ¨8ŠÓ¨²ÚͧQq§ñêù4æù2Èïlçy,Ú´Êt«æÍxMûž ‡Ôô7[õJœFÊÇýM œFY_SÜ%î‹rìû9£}OžƒÓÈõy§FxSÑÏçÓH8 â_äÊmØö#^¢Ý¼N£ÝPòlHJ¼üm7/…ÓØ ¾¢™Ái ‡€»ôõf_ ÞB ®BùYœFçüNCÝ8æj؞̈́—»ôõæÅp²gÉ.N#ó$]ðzób8 ©?‡ÓHzý$fóeóiTœÆë’WÿìÞQÓßÿoŒé%ÎôT×›ëzsÅiTYq§QqUVœFÅiÔTqÕn®vs•Õn>Çô+<ëªÃnŸÉIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/graph_results.png0000644000175000017500000016173612032647206023755 0ustar ebourgebourg‰PNG  IHDR“®³ß[iCCPICC ProfilexÕYgXK³îÙ¼°KXr^rÎiÉ9ç(KÎ9£¢¨€‚ˆd‘ DEÁ  ’DPA$**" ˜¸ƒžs¾ï>ß½ÿîŸ;Ï3=ïVUW×NuwuÕÀ±JŒ E0mg¬Gvqu#c'ðPÒTŸ˜H] ð¿^[ãÚe>•ÞÕõ¿ŠýÏ F_¿ ˜ííããk ô|"£c@~…éà ±‘0F=‚1s4l Œ§vqÀ¼¶‹½c4ê·Œƒ>hvp*5:¢L'ÇûÀzˆ`Há¾Aá0¹ÀXË'ê G1,#±‹{a,æýozþ S©Þÿè¤RþÁþ ÜØ (&2”šôûÇÿe¿¯ß n á¡V»¾a…ï%_ª9üä†ï_‘¡¿}Ë@œ~áŽö0mK…{[Yÿ…µü£ì` ÷…l"cõv1üÎ ÿÈX‡¿è“õ­`L€é~1†ë© ¦šíúŒ¦·FÇÙ9ÂXÆ÷bâí a Ï(h!9ÐÁù/™ _?ƒ¿è„‘é)(Ötw,fØç!æ»6Àc!T€9~ DÃm8@üÕJ@…9ñ0/„€70ƒ{DÀ}"`LþKNÿ?(F¿ûÀýþ»F2ðeãþóÏhdxÌ¿u_ÿM§Âcìòv­‹ñ JûטKìêûm\“ܲܿmB‰ PÊ(=”&J ¥È(V'F)¡((]”6Jæ©#°køÛÆ]ýa­þñÅIêN0w÷¿{ÿÍN¿¥ƒþùý€ ÁÕë«[@¬_"¼ЈLŠ Œ%ëÂ+×OŠlî##EV“—ßeÿ¿¹v÷¬?Æ~¶û½A¬Cÿ¢Eo ñž£ÿ¢y”ÐZý×Ñ„ `, ËÛ'.:þ>Ôî h=Òé†ôGF#"³…Èjd3òò!ò)r¹ŠÜFaPL(2Jž§&(G”* u•ƒ*EÕ£ÚQ½¨§¨YÔꚈæFK¢ÕѦht:‰.D×¢ÛÐ÷ÑÏЋè- ÊŨbL0®˜`L &sÓ‚¹‡ÁÌc6±X,V«‰µÆR±±ØLl ö"¶;Š]Ä~ÅÑâøp 8#œ.—†+Ä5â:p£¸·¸ïx¼0^o÷Å'ásñçñ·ðCøEüwFQMš`šÃ4Å4Í4÷i¦h>ÓÒÒ ÐªÑÚÒÑ¢-¦½Lûˆv–v›@"Hô î„8ÂIBááá3‘H!ê݈±Ä“Äbqšø•Ž‰N†Î”Η.•®Œ®n”î=ž^˜^—Þƒ>™¾þ*ýý*žA„AŸÊp¡Œá&ÃÃ&#£<£5ccc#cã K!’|Ié¤Riž É$ȤÏäÃt„é<Ó}¦Ef ³(³)s0s6ó%æAæ5‹‹K"KË]–V$««)k(k.k+ë8ë766]6?¶ãlÍl£l_عØuØýسØ[ØŸ±ã sr„pœâ¸ÎñŠÅ)ÁiË™ÀYÁyŸs•‹™KƒË‡+‹«•ë%7‚[‚ÛŽ;…»†{€{“‡—ǘ'’§„§‡g•—•W‡7˜·€·ƒw™‰O‹/ˆ¯€¯“ï™…¬K%“{ÉküÜü&üqüUüƒüßDÒZ^ ÒRý »ׄø„,…ö 5 ½Æ S„…‹„ q9*r]dI”]ÔT4Y´ItJŒ(¦-%V-6&ާˆ‡ˆŸ–@H(KJ”I I"$U$ƒ$ÏJŽH¡¥Ô¤Â¥ª¥&¤ ÒºÒñÒMÒ³2¬22i2×e>È ÉºÉž’}(ûKNY.Tî¼Ü¤Mþ–üº‚„‚B™Â˜"QÑH1Uñ†â'%I%?¥ ¥çÊLÊ–ÊG•»•ª¨ªD«4«,« ©z©–«NP˜)6”Ê#5´šžZªÚµmuõXõVõÒ!K{D÷øí9¿g^S@“ªY¥9£EÖòÒªÔšÑæ×¦jWkÏéêøêÔê¼Õ× Ö½¨ûAON/Z¯Mºþý{Hcƒ,ƒAC’¡£a©á´‘€Q€Q“Ñš±²qŠñ=´‰¹É)“ SSÓÓ53U³f½æs{óRó9 ‹h‹[–K3ËÓ–SVÂVáV×­µ©õiëW6¢6Q6·m1¶6¶e¶oìäíöÛ=´g²÷´o´ßrÐsÈu˜tsŒsìv¢wrwjpúâlàœï<ã"ërÀ¥ß•Ó5Èõ†ÖÍÉ­Öms¯áÞ3{Ý•Ý3ÝÇ÷‰îKÜ×çÁéêqדޓêyÕ íåìÕèõƒjM­¦nz›z—{¯ùèûù¬øêøø.ûiúåû½õ×ôÏ÷_ Ð 8°¨X¸¤Tô)Ø$ø\ð—ëºPçЖ0\˜WØÍpRxHxooDbÄH¤ddfäL”zÔ™¨µhóèÚ(f_ÌXføp8'—7¯_ÿ5Á)áj"cbxâ@’DÒñ¤·ÉFÉRP)>)Ýûù÷Þ?{@÷@ÕAè ÷ÁîTÁÔôÔÅCƇêÓ9ü$M.-?mãˆó‘[é<é‡Òç3Œ3š2é2£3'Žj=w u,èØàqÅã%Çeùf=ΖË.Ìþ‘ã“óø„ü‰â;'ýOæªäVäaòÂóÆOiŸªÏgÌOΟ?myº½€\U°qÆóL_¡Rá¹"𢏢™b‹â%B%y%?JKŸ•镵”s—/ÿrÖ÷ìh…NEó9žsÙç¾UU>¯2®j¯©.¬ÁÔÄ×¼9ïtþáÊ…†ZÎÚìÚŸuáu3õvõ½ ª ܹMˆ¦¸¦å‹î‡/\ºÑ,Ý\ÕÂÚ’}\Ž»üîŠ×•ñVóÖî«”«Íׄ¯•·1µeµCíIíkׯÏÜp½1rÓìf÷-[m·en×Ýá¿Sv—ånnMGzÇNgrçæ½È{«]]óݞݓ=.=c½¶½ƒ÷Íï?z`ô ç¡îÃÎGšîô©÷Ý|Ly|½_¥¿}@y í‰ò“¶A•Áö!Õ¡Ãj÷FöŒtŒjv=5xú`Ìt¬ÿ™Õ³‘qÇñçî3Ï}Ÿ/½}ñéeüË¦ÐSY¯^NsOW¿Ý2£2swÖ`v`Î~nrÞg~e!fáÇbúâ›Â·|o––î,-¿Ûûnq%råûjæ{Æ÷åÄ>\û¨óq`ÍemñSô§õœÏŸë6”6º7m6§·Â¶¾ÉúÊñµ~›²ýð›ó··ß~`ÿÿyë—ù¯©°Hj4õ÷Y ·ÖëàÂΆ ¡û“Sü–€Ó–±$è…Ä¡xhŽÀ H2² %ˆºˆÖAOar°¦p [ÄwÒ\¢½Hh#öнbÀ0*’"˜Ú˜°±eßâ´ájâÁðzð]å' ø ^F‹¸ˆV‹½“ Hî—ꔲúrò=ŠH%}åt•;ªj’êny{z5·´Euœu3õZõ§ QFâÆ¦&þ¦©fgÌ›,îZZMY°%Ø)Ø;:$:–:Ýv~éòÍgïw×}±yž^=Ô)ïϾ´~BþjfŽA^ÁÁ!‘¡Éa‡ÂD<•³?6&.8Þ+Á.Q?I1™=ùSJïþ¢áRùCó‡ûÒZT¦ŸÊÈÈL:s,üxHVDöéœw'Õsåæ³Ÿv-(93Z„-V+ñ/=Yv«|ºyN´Òª*¾º¼¦ëü|-®N²Þª!²1¿©õâà¥Õüe‘+:­{¯Æ]Ëmkhp}îÆÎ-ÎÛÊw,ïR;b;3îv]ènî¹Õûàþ؃W½ï[|ü¼ÿþ@ë“ÒÁƒCÃ#,#G{ž–Œ…?Ó'/L4?y¡ôbãeˤÿ×ÔЫÃÓ Ó ¯ gÌg‘³·çâçUÀ“Ţ7^oÅÞ~\j]Žz'óîÝJõªë{âûŽ‘?N­û´®þ™ôyccnsrkîËæ6ó7íï1?.ÿ\ßÞÙýÏŽ@Œ3tÁ‹ˆGÌ -]ð‰íƒA`š±þ8QÜ~¦¶žPI¬¡»Jÿ„aƒÄÁdœÄr…u™]ŒÃ›³šë%¯ßQò]þO‚ÂBÖÂ)"çEûÅÞK0HÊKÙKGÊœ½$÷H~F᫽²€Šºª%ÅG-VýˆÆé=ÕšÍZ7´;uztïëõÀqåŽa›ÑEãj“rÓ³+æ-Ç­f­Wl6ì€=­É‘ÓIÀYÔEÆUѲWËÝpŸ‰‡±§Ž…*ç-êÃçËêGôGùo| \z<Òz=¬1¼""721Ê(š=SG‰ÇÆ¿LhIÌLÚ—¬’˜²ºÿñƃÇS9vN£ KÏHÍžß®¥©¯·hˆj,mêºø®™¡Eórð•¢ÖW¿´‰µ»_ϽÑusã6ùŽþ]ߎôÎò{-]]Ýý=ƒ½ÃðîÔñðÊ£ê¾ÜÇ)ýŽOô¥†˜‡¶‡_Œ´æ= 3xÆóìëøÓ‰Öçù/b_ºMêOɾ⚦™þözufföÙ\ÿüý…®ÅŽ7oï,Ý]îx×¹Ò³úäýâGÌšÒ§èõ;¬›G¶~~ÍøÆþ½í§ó¯_¿ýï1C~ðêWBd Þ"Q<¨“hZôq s«…Æeâ)ø-švÚC{¢4‘n~Žaˆ±‡ÔÅô„ùËG6;;‡§—·OïQ¾3äóüW:û„ž ¿Y]û*$qR8©éO2¯e‡åîÉ·(œU<®§ì¡b¤*I¡§|TQoÖ8¾ÇWS[‹CkM»O§F7UÏS_Û€×a¸`ôиÑä„i´™£¹†%°œ³ê¶®±I·õ·³²×pr$8~ttntIwuq“pû±wÀ½l_‡º'­ç+¯+Ô,o? ŸEß³~®þœþ¯“‚,ƒ…C W¡·ÃJÂc#¬"E#FõGçÅØÇ²Å¾Œ+ß—@N˜K¬IòIN~“R»?à€è¥ƒ©1‡¬Ë¥1¦my™Þ‘Q Ï“Ðc6Dz˜³¶²Çs®8u2"×6Oùo>mþ·Óï æÎLŽ?+yQ:S¶\¾yvç¾’»J»:¼æìùÁZ¨N©> ¡¬±¯iýk³J‹Íeß+±­‡¯ž¼VÓÖÑ>~}õ&¸Eº-pGé®i‡wçá{µ]c=4½Æ÷O<DÛ§üس?gàΓµ!ñaêHåèôï3÷ñò‰—/Ø_ºLVMmM»¾žuŸÇ-<3¶Œ_‰ý@Z{ûyþ Ï·ˆŸ¯wýÿ§¶´0*\`À ÎA­š¨Œ@®×0Àõ"j× „å ü?€çš ÀÎò“Aœ=>sàÄ)BÖPt ºuC3Ђ¡…ðD‚³ºûˆe$R éŽLG^BN (y”'ê$ªµŽA»¡O¡û0HŒ&s³…UÅ&bocá q'px|‘èi¼h®Ñâi½ho˜„A¢,1Ÿ¸MçM7H¯IßÌ ÀPÌHb·ßw8ÜkíὟûˆð¸ä‰æÐ‡ÑËÏ2ž‡MºO+ÌÌÍÇ-~Z²{W´ÚõáéÚàú­¢­À¯²Ûkß/ý ø½ ázƒ \ap€kHY ô€×°÷9àš€\(€®BcÐ&‚ ¡çöiˆ:Ä œÅó"M‘±ÈJär%gæE¨A4>s¤ o¢·1ꘘ.,k‹-Å.â”pé¸q¼þ0þ9Í šZ Úf8ûM"Ì­‰t tõôô < •Œ"Œ-$R+“ÓMfæ>G–yÖ6$[»,û#N« ¹ÞqŸâQãyÃ[ÌgK&óg X 2 N Õ Ç‰Šrˆ~{,^#qDÒGÊTš"c!!—/Ea\ñ«2»Ššª;%Uí¼zŸÆM6-=í}:T]=ý0ƒDà £<ã “+¦Í&Í×-‰VbÖ†6~¶ÇìêìûVœœÕ]¼\»ÝØ»¼ËÃÆó˜×CoŒ¹ožßd€T`JP&T7,>üJÄ›(þh·˜²Ø‰xƛēIORû-œ8øäé°KZÅ‘• ƒÌÚcøã‘Y‹9Þ'ærÃOáòk œ 鋆JŠÊ‚Îêã¨üT=rþVíÅúËŸ5¯]a¹ªÔær=áæ™Û—îvwu½îyÿû#ôc†®Aáa‰Q™1Åq¥çZ/õ¦L§ífÜæTßÞN/ŸYÑ[ýûqóSÌú†Ífû–¯‘Û}ßÉ?âöÿö?p€^ÿVpEéh£`ℴᘒ]ƒ¦X„ìù£ˆ«ðÙ‚©…Œ„ë4("Ê•ŠºÚFSÐIè»ðj7ÜÆLc¥°)ظn’€Ã+ãKñ;44Oiõh¯Äàó7±ŒŽLw^‘¾›Á‘a…1“$@ºÇäÁô‹¹ŠE^Û§Ù´ÙVÙÏrXsb8;áu­ÅƒàyÄ›ÍgAf&ÏÀ1)W0BÈMØTDS”"FW‘P“Ô”Ò’Ö”ñ-‘V@*Ê(9('¨œQm¥Œª­kpí1ÑLÖj×¡Ó Ó6P7l4æ0É7c0ϵdµ:g#cÛeoìÐìDçëòÌmÏÞú}Liž[Ô(ï÷¾‘~ÛYAœÁu¡ a×"T#Û£c®ÅIÅW&²&e%ÿØq`:ÕúУ´=GΧod-<¶œ¥–“3w’’››÷1ßñtïå¶bJÉã2ïòŠŠJ¹ªŽ‡ój³ëe^4¥_’j»œÐÊxµ¾M¹ýö ­›7oKÝ©êèìï í¡ëmy`ùp©/µŸc uÐ`hr$ê)~¬~\wbîÅ‘IÑ©ži§×³³¾s Z‹gß,-‰.»½KYÉ[=û¾øCöǘ5ÇO²ëèõ‘Ïåî›Ü›Ï· ¾˜}ùòõ¶íöouß-¿†³ŸÓ¿úvý㯨°=DЃËÓ;;ŸEÀæðóÔÎÎ÷êŸ5p²¹úç{Å®0®¹—ï~ý1U»Ï¿þ ÷7‹TŒ²Ë pHYs  šœ IDATxì|ÅûÆI'…B。IGŠHW@QºÒˆ‚HTPšRE"E@þ*E@zG¤÷ÞB‡ÐÒÿOÖݽ½’»äîòäÃç˜}ç™ï\öž{÷GDDD:þ €³7cÉÈþÝ1:*Wg]#Ž‹H€H€H€HàL™2¡äI$@$@$@$@$àÌsãruæeâØH€H€H€H€ž r}΂%    g&@åê̫ñ‘ <'@åúœK$@$@$@$@ÎL€ÊÕ™W‡c#   xN€Êõ9 –H€H€H€H€œ™•«3¯ÇF$@$@$@$ðœ•ës,‘ 83*Wg^ŽH€H€H€Hà9*×ç,X"   pfÞ–.222<<<111{öì3fôðð°¼­U–+W®ÜºukÁ‚{ôèaUÃ6v•q¦0vG$@$@$@"`^¹Bª®Y³fîܹ·nÝ’ƒðõõmРAŸ>}d —/_Þ»woll¬…>¿ÿþû_ýU‡„„”,Y²k×®yóæ••Ž(X;NGŒ>I€H€H€H í0¯\‡º{÷n)W®Ü‹/¾|õêÕ}ûöݿߩ0eÊ”©D‰'OžŒˆˆØ±cǹsçfΜ …bƒDÛ·oòäI·nÝR¬SvD$@$@$@i‡€åºaÃ![;tèбcG%—¨¨(åaª—‹-úùçŸc³fÍZ¸páõë×/\¸P¬X±Ø™Î™3'•kŠ1gG$@$@$@iŠ€å )ùòåkß¾½Š‹¿¿¿¨Y¶lÙúõë .Ü¢E‹~øáÒ¥K?ÿü3‚²›6m:sæ ¦­Q£FçÎÓ§O&Ò¾eË–3fÌ8räÔnî# «êâÎ;Ó¦M;tèP™2eÚ´iƒ.Tº‡U«V…rÅ)???ipðàAÌaÑ   Ê•+÷ìÙÓÇÇGœ]»víž={`€ÃlÙ²!"åŸ~úéŸþÁ¨ºté‚ÃS§NMœ8…qãÆÉ¹ãPülÛ¶mÉ’%(ß¾}ûý÷ß/]º4ºÀ¡)çÏšñ?    ‹ )WÜø¾rå \½òÊ+žž&ŸBpóæM¨º˜˜ä Ò‰Í[hÙŠ[ö+VDÊ)·ÿ÷ÿ‡]ï½÷NIû!C†Ü»w½œ>}úÓO?>}zþüùåÈ>|8`Àd& áuóæÍ8=z´Á)‘>+l”¯¢ßåË—Cë£ ”«seC–I€H€H€H€,!à!6*YbŠg bÿ>öKaçR`Í6A$õîÝ»x¸),!O¯]»†OH!øþûïýõWl¨‚¸ŒŒŒÄ³®²gÏnÖ›] Ðf„Zåþ0xF=F¢; ØcÌÊÔ³#AL3•M œ›uE    q3–ŒìßÌÄ\•¤Ç‰?+ ¬1.{{{ Ù 3Ä)ÑÔÚC["‚µ m«A0?Ú¶¦êa)²WµM jd^°1pnà„§H€H€H€H€TÌìÐRYóH€H€H€H€R‹€1W{ ‰¤ø+VˆÈÚË!ý ¤© ±Y ?i.çH$@$@$@$`G̰#Lº"   p *WÂ¥k    ; rµ#Lº"   p *WÂ¥k    ;0Ú¡µzõj;öDW$@$@$@$@$ %ЦMüù*m½¶ÆH¹ÂŽ´mXC$@$@$@$@v!°páBËý˜Q®pd¡¶¼Kk-ñ÷¾¬mB{    ç'ðq×VV Ò¼rµÊƒŒÅ_ªusº%   Hyfʔɪ~¹CË*\4&   °î«S¹Ú=½ 8š€ë)ׄ„„Ë—/߸q»Ð™;wî¹sçìâÊr'©Ò©åã% 8!‹ò\[µj•˜˜8cÆŒÌaçÎÆ ›3gN®\¹RrJQQQÓ¦Móº *$ôkãÆ?øàƒdŽá÷ß/P |šòÓ¤I“èèèØØØüùó7mÚôÍ7ß4eiy½ÙN-wEK   H#,R®`qÿþý)S¦ 2$¹Œ;öÂ… K–,ɘ1#†ñzïÞ½”Ï'Ÿ|R·nÝM›6 4¨F9rä°W¿ÝºukÙ²e£Fìå~H€H€H€HÀ] Xš-àëë»yóæmÛ¶©@L˜0¡{÷î-Z´1bÄùóçÅÙ>}úŒ3fÕªUíÛ·ïÙ³'äæÊ•+Ûµkׯ_¿ëׯ ›‹/â°Y³f=zô8vì*á¼sçλwïVu!‘°|ùrx²•žžž¡¡¡â,"¯ýõW¯^½Œšü]7lØðË/¿D´XÚlذêÔ©3`À€ÈÈHQWDsѰAƒãÇ—•ªº ƒ\~øð¡8Þµk×—_~ºVzÛ²eË;#.¾øâ a†I?~\”1Â}ûöIÏÓ§O?zô(`||¼¶­´dH€H€H€HÀRå U™8iÒ$©Û;//¯Ž;Böýý÷ß‹-•W¯^……r-UªÔÙ³g‡¾fÍšâÅ‹:tâ 6Ož>>²b?ò‘ÎW^yEDaqó=wîÜxBX‘"ENœ8!mpkþÑcýúõ!µe=þT¢žÅБ'Ož”õ²ñ É{êÔ©™3gŠJ(lÌ·råÊXéÒ¥÷îÝ‹z¨pü@#€jIp@@€··7ØbØÖ¶•ccH€H€H€ÒKó\£fÍšÕªU[·n2ÇY³faÃrP–Ô ¡‰C(WˆZ42“gqëåùóç‹¿÷…³ˆ¿ é&mT…ìÙ³C,>zô:OœBBj>ÿüsq˜%KÙ™7nD(ôÌ™3³²ÞÏÏO”±%këÖ­²>_¾|¢¬TÆò, ˆgÍšB#{¹8'S0Ga?jÔ(’AièСÀ¥tb¶œœ¶fÓ€H€H€H€\€ÊSE„Š ibÚ¸ÿË/¿ˆ=Fü1’,ÄKD1‘#kaèE\ôˆþÆM4ýì³Ï00¨Iä•ê#ô[®\9ÝSº•Pá¡å"ø:{ölÈq»&   °‚•«°hJ$@$@$@$Š\c‡–Ýáav÷I‡$@$@$@$@%À˜«CñÒ9 €ÝX¡\oß¾}éÒ¥¨¨(»õOG$@$@$@$@$`‹²bbb-Z´téRhVOOÏ„„„Œ3âв.RÔ*..ÎÛÛ¢I¥è°Ø @² X$ò&Ož¼zõêfÍšuèÐ!C† /^<{öl²»¶¿ƒ>}úܸq"Ûþ®é‘H€H€H€H µ ˜W®ááák֬ɟ?ÿÿþ÷? ¸ÐÓ1rœýî»ïŽ;X»víN:ùøøàDdîܹÃÂÂ,X4pàÀ£G¢œ#GŽþýûãÕB¨äI“&>}:gΜðY²dIÑ0$$¤~ýú3fÌ@¿¨/V¬Ø/¿ü3ă;wîܯ_¿R¥JaTP±‡‚ V¯^½mÛ¶Íš5«G5ãç+ €«0Ÿçzþüyd¸¾øâ‹B¶*'†,‚œ8qâ½÷Þ«V­Ú’%K¦OŸ. ®^½º{÷îU«VAA"@;|øpÈßâÅ‹CGnÙ²ÅB›'OžÀÿýû÷ŒÞGŽ aжp?sæÌ)_¾ü©S§Ð/*«T©9åš+W.ÔL:Y¹£F‚T5?¾|ùrdd¤_I€H€H€H€\ˆ€ù˜ëÝ»w1???í¬ MoÞ¼Ù¤I“† 6hÐ`Æ ª½zõB.,ŒýýýÇŽëååµiÓ&¼Ž7’qëÖ­£JWÆ6ðçÎø/Q¢„)B¶.\@ÀÍ!dGŠ0*Ä+j (Ù_£F Bm£íƒ®\¹R·n]1$ ‘Z­—ãaH€H€H€HÀi ˜¹fÏž£ß»w¯v×®]CeáÂ…ñ 9M ½(,‘aêëë Õ˜7o^p×^åÄØI«°Ÿ?~Û¶m±! ²fÍ ÙŠ2º€HU¹Å!ƃ,$*Œ3¦wïÞgΜ• •«kH€H€H€HÀù ˜¹B˜b·>RHñH¬,Y²(§$´#‚š¢òúõëÐ…xì€Ò&9eÈS4oÞ¼y÷îÝ-ô£T±H`@¢í¯¿þ í;qâDì3³Ð ÍH€H€H€H€œ€ù˜+Ôêo¼¡öÙgû÷ïGzU'L˜€$Ô * Œº}ûväÂ"%!ÒªU«"2j¯yV¬X1885X¿~=d1:†0çEŠAnÑ#G€‹á!³ù -[¶ÄóH€†ðгgÏ={ö8á)    ç$`>æŠqwéÒâûô?ùäB"‹{îøªÃ† ?~tèP   èèh% ÕHäŒ ƒ Ú²e‹Ö¦U«VX ü`u† vòäI­å5«žþhíUÓÑØ¥FÕKò¡ÙeTtB$@$@$ºl‰¹†……:tèüùó… >|ø0&pâÄ 1téÒE;¥iÓ¦yz>SÉ}úô¹qãBzZ³”¯±v0ÖÚcFÛ¶mÃk=üýýQP¢°a¾Ož<9zôè!CtÛbEú÷ï¿ÿþéÓ§Ãr̘1ºfÉ©TM'9® ÚªzI&4ƒŽxŠH€H€HÀ…Ø¢\Ë”)³`ÁˆWè¤cÇŽy{{C¹"{õêÕÛ·o—+Wó‡Â ©^½úœ9s¾øâ‹I“&ápĈ¿üòËéÓ§aܹsgÄnK•*uñâEœEeΜ9ÑJ›Q r…î´ö¤0†„4€N:Õ«WcèÚµk±bÅ>ùä”ßÿýlÙ²}öÙgʵÑF×l¢µÿî»ïÐ ýÖ®]]#@Ú£€hôŽ;PÀ^zé%ÈzÐ(”f(›å ì¡J‹-ŠîTÍÅ!zÇ¢(Pà矾uë–¨Ôõúè£"EŠÈ¶–¬õsíÚ58¼¢-7$ hÖ¬Y-ïTXêÎKë¹ÅÅùóçמ5ùòåCÔY"%Q×3Û³fÍÂãÈD988ͱ|xµ\c H ™¾˜ä2ÖÐLMÄ’zÝ©¡¡öíj‰7Ú ¤<kãM)Wí4êºlÙ2ÈDÄq¢ [j=z¤Œ¹j[ÉÌ"¯yóæÝ»w—g ¦ìq³9”¿þú+D0½“'ONÄs †±©ß”[9˜ò£l+íCCCQ@¯8 M&"¬J{Kʦæ¥j‹€kåÊ•U•ÊCijaкuk|ˆ»ü8Ä+dkž}zìƒò:èT¬)¾„ˆœ$#ûB:´°`G –ô¨;5KÒ†H€H€HÀE ب\YÄiÌY< ([pmÚ´)4.îé¯[·B›u°gë믿îСÂ¥Ú}TJ²ºöØ#š¿ùæ›Øž…½P¢ B¹(`«;z”rVé eå`LùQ6QÚ#BhbŒ±9¬R¥JHZP[^Ö—ª9¾œ9sF<ºAuJuˆ þx®¾ —Ûã´„±W IˆLcoÂÌìxÔd+‚µ¬Ø¦† ºˆhª<ÚˆqGâ¬%Ð,ñC   W!à¡»…\9zä8"qaWV™éˆð-Êx^’²kƒ²ÖB C¨e+h2ì²R[VFת‰Ò§îÝ»el[´UåY;/i€ÝiˆC"Ë« ZÏ©"Ãã‡À…r…C„c‘óík•s•±¨<ëj§¦kÆJ   g#`¡Î7cÉÈþI™¥f$㦧ڼ¥RœfûÕÚC8jµ#nˆ›uå`tý¨œ(íq \e`ó¡v^Òö~!«XZ[Ðz²~”㛨¬u®²W:TrÄ¡vjŽè…>I€H€H€R@ª)×TŸ¹Ë  E‹.7f˜H€H€H€ìHÀÆ´¾C YHýEàH@ÀÇ][éU›¬ã›Y ±–›I ÞÜ¡e §²Q^­êÒ^ÒÄÄÄ7nx{{gɒŒإߺu0îkÒóŒ œä¬mó+W®?ýq’‰$s6_U€âÖ­[?Ξ={@@€mÈ߱cÇ–-[üüü:vìxùòeè2eÊØæ­Üƒ€uʵU«V÷îÝ“3ë­·ºuëöå—_†††NŸ>õË—/G™ÊU"bR’@l\‚µÝ½Ú¸¡xöV¶ìÙ_|ñÅ?ì›1cFk8¹=.\Po .´Ë8 Ô¸qãZµjÁ›ò’ˆK_áÂ…ß}÷ÝbÅŠ‰Ž”×F«ºNþ…466vÑ¢E‹/މ‰IHHÈ!>õ›5kæéiôÝ&ùýbšé­ûXQaÄ!†Ú¡ƒùkOÛŒm˜È¼yóÀðþýû`^ºtéo¾ùƶ®ª• W•èèèysç,\¸ 22o9Ð ùsõZæµaý†Áƒ½ñFóÀ  #£˜9s–y?óáw6°tŸ&V_bðŒIùÛÓ¦M3¾º-΄œ›@l¼ÕÊ511]‘¢E?ð麿Ö,þeQÖlÙ»uïéܳLÍÑ=yòäèÑ£C† ‘ƒ—ćž9sæÇìÝ»÷äÉ“…xMÅkã÷ßÿÇ´nݺmÛ¶qqq8œ:u*ôÄÛo¿-Gî BPz<+?Y¯´ÁƒÝ›X;‘ðððŸþ¹aÆxܹsçÚµkvRª8´áª2v옕+–7oÑòÝÎ]‚ƒ3^8þÌ™S6øÁ|7nڈמï÷QÛ?ÍÞ°ÍUªÐc§Ž `µrõòòÊ“'r(_|ñ¾N1BY‰òÅ‹'Mštúôéœ9söéÓG¤ ãúõëϘ1y8—ø &;vìöíÛeË–Åî‚ ÂÎæÎ;,,lÁ‚PÉø²…Ï ”säÈÑ¿¼šêE5’@!`ÛÝÇÇ·p±â·#" \ý…“zõÈòRš³gÍùõX?¿ôS'}{ôÈ‘À À—ëÔíÔµ»¯¯ïêU+~Y0ÿ«±ßäÈ™óÏ•Ë/\ÐÐà’¥Â¶nÞ´fõª/¿sôÈá…óç:p­:wëQ¿A#,ÄÅ ç'|3îô©“9sæú°_ÿRa¥Seu 3¾ûî;\vp!ª]»v§Np#9yòä·ß~‹›ì/¿ü2ôÔÞèÑ£å÷ïß_´hQ4‘5ò’øÂ /xxxLœ8÷Üm…òÚˆŽ=tèÚ¢¯zõêÁ@\«U«Ѷï½÷^õêÕ¥gQÐ^!ˆ÷ìÙ3|øð|ùòÁrwT{ö|þ}šiÅŠø¤GG"¬Ð½{÷¿þú A„]ýýýM]‡e׺]àRAùý÷ßÏ–-ÛgŸ}†2– œñ¡†¥Ç{ _¿~ÚÝQÝ÷’n¥åÍ PX{U ¿|yÕÊù |¿O_L _¦ó,„ÂÎj¯$è]\p6zõÇéßõéûqñ/ÌúqúÖ­[p¶{—N/Õ¬ÕµÇ{Æ Æué‹QI¿’'Žûfìèׯש[ïöí[ÑOžŒývê;wlW¬x‰ƒ‡¢Ü«{ÜMþÅ(”U×4܇q† Æk Ý9Òõ…K$’xðƒßRapõêUY–M™0`nš <ïÝ‘#GâWgaŒk7®DåË—?uêÔ’%Ïþø*.[¬0þûï¿q¡‘žwïÞ½jÕªR¥J={Wê5kÖ/^õS½Èa°@iŠ@l\¢µÿÓ%â³vޜٓ¾_£Vúšáá—îßú+VöôôéÿÑÇëù~ŸªÕj,^´`Ú”É0Ë·à¥Kñ;‹ò¦“Ê»w£¼eóælÙs¢0y·—.^üòëñÝzþ/{öܨyø(²ß>÷ïÝ4ßu=¾>,:&õöúgárã:.P'Nœ€X„hÀ…Hä;¡ù×_ ¤>ØpýÁ%Ké5º­\¹r0¾pá‚h¢¼6"äyéÒ¥Q£FAùåÊ•K —8äià{;T¯¨W¾j¯%J”@¶ßÆI±¨Gýþûïª!áj‰ë-¢òn2@ɇ1 •©ë°ìW· $,¢_Üÿ•fº…ÇOâŒÿé¶ÂØpyÇÏÖ­[… 8óçϯP¡ä¾òß1L-ŸÒ ­t±ë@[i< œU5Áê#Ô²k×.Ä\²‘gíæÍ›âÃCê'ÊxBËþóÏ?È<=>×´5¦>àt'¥­´ª¹­¶`íïæé3g Ý˽X1.>ªíãÇOt¯$0Ã_qšùcÙrNž8þËÂ…¨¬V£v®\I‘²wºôx©Vavíê5áö«/?¿~íZ×ï{xzíÞ¹²DÔ_¾trV”¯„‡ß¸~C”•×´t^É¿iY±&eXsŇ¹08¤üäáúŽpE“&MpÄUR\Í *„†²ˆa 'lÛ¶m¯bžøÕEÎóæÍ‹«•¨Ä+Âcǎŵ{Ó¦Mx7n®›¸´á«$Îô"=°@i‡€µÑAæÎÛ‹æÏóõó­^³¶Ÿÿ³˜+Nyy{™8-S¦Ðí[7ݼy£q“×_®ß¨v½†Ö¯]µò.ï}P°H1ˆƒ}{ÿ©]·Á¡û³eÏqðÀþVmã÷þ³ûÃþƒcââáùÁƒû—._z¹nqoÇŽíwnßnôÚë…‹½P±JµÅ æBf(T8…×—ˆ \ po·Aƒ6l€|ìÕ«*‹E%ô†3|+Ç™þÕW_)k”eÜ‚ÞÕj;8ÁõðÁƒøp­[·®”h‹Kܘ1cÒ§Oé†aàÊ–?~¥OíµRG\ßyçDRÛC @Ù$""‡*?Ð"Ÿ×Xa©{–Nt»À,p» ¥™náq´ZÒéš©*!‹!RQ‰éÔ¬YSœL¨y$¨ñ »|¬le€]ջA¿HA¸}ß¾}ýöíÛWDÖuã„/H¯¼ò "²ÂˆªšÍ›7k?FqCRû^Ò©îç£nsÝÊJk¯*·oßA[_?mÃ;·ë^IžýFx¤ñõ7¡¡™·oÝ|êäq4Ï_¨hpÆx«\=é-!âË6 7®_ ¿|©^ÃWë6z­nºtïÚ²GüÒJca/¦#¯i[7op† ‘_­%`uÌÜ Ãnx@v{m(ãJ„,«¥K—âÆ"â¯âlÖ¬Y![QÆ%o5@ò@—.]Ú·o ·¨ƸŠÁ ÍñΆ¨EŸ”â^ z‘6,@Ú!€‹µµÿÒ%¦+X¨Èœ%´lÝaÌÈá?|7Ix@}hh– à^½r ó,Œr\Bbþ‚…ãbcoܼŸ˜®dér‡öïÝ·oo¦ÐÌ/×ktùGG>Ž,V–=z÷Å¿oÇŒì׻ǩS'Ñ1¸Z4λmZüß’EHT¸!z´Ë«…k-r†„=¤¾TcKÁP#¾ck]?"•"Tša+’JeHUžB2Hy‚H……‚”§Ó ÙŠCqë]ÈS(è^ae …ÄìjÞ¼¹² Êâ>5"ÊÊúãÇËS(h¯ÃJcÝ.0 L߬r‰K0þ§ìH–ñ¡ >Y€HVfΜYÊVTÊCSË'J3ì² ƒ‚ñ,pVÛ;á³ÇW |Š!æ"¿'h-Åp;QžÒÖè~ÀéNJ·Òòær ºk13gÍ?ûþù[ÛÐÔ•–¸àdÉ’-CÆL(û¥÷OHH’¡øÝ o¢Œ×¤£Ä¤Ãýû÷¢>o¤$üƒ”À?QF=Žeùy½âšf— :âOª°Z¹"ð‰¼Uü YÇ`ĸ,â,.©+ÿýQE”m<øå—_çÀ–Äh•§ŒËVõbìŠgIÀ ÄÅ'Zû/éƒ 1ÑÃÓ§a“›Ö­ÁVb8yú‘Nx Iúª‰Oqxóúu(˜À qVöÅû÷ïý¶dQ¹ •_+³pJ{yûálùJÕ¿>·EëgNø~ÒxÔdÊœtexíõ7çÿ¶Vü+YæEáÖ.¯.¢øòŒ¨°G¬ 3Â-u¡JE=nÄãGéq²Ê•++kTåµk“vOã6½ª‡Ðš3gÎl×®n4é~퇅™RÊàÐÔµ±:œ2e ´2â (+‰‹/ùH|„õˆPBA%ãv¶ÒÒ lÜ…AC¼Œÿ´µð”©åÓ67‹]ÛDÖÏg¥¥²‰>DÖñ­_ãÄ)|ŸAáDÖEPäò®#*µ5¦>àt'¥­´ª¹•¿˜yóöòö>wæÞuª¶Wåç© }v)Kº¥{v!‚7i–3w~Ô_ Gåýû?zˆ+™è.É?ñȃºƒ6¢^¶Å¡].DI#ãOj°:[ÀÂAV¬XWÉÕ«W#ª!²Tñ‘ ÚÚ%]EEE¡Œoùxl>3pˆ_oÜ“¦ VõbÊ ëIÀmÄYÿlÌ7j·oÙxòø‘ÈÇK•)Ÿæx瀢K•­¸{Ç–uê‡_ºxëæõ U^òðôÆÙJ'ݧ>rp_£¦- {1ÔÃö¶ëܧ°ab×¶¥Ê¼Ø¸Ù›kVü†8 *ÃÊU ʼ~Íʼùavñü™<ù ìÿg×¢93:tíá«*ÔkÜÌ.« ·woR?غ$R'·oߎTÜçAt [ önˆÈ(²-!d¡üðñ!"Zá·_µ{ó…g\µ>üÛo¿ATµiÓF6dâÎ/ò ñÄ@|?W>Û‚Ý!L‹”G\!…ÚÍM]qéCxQUŒÖö¢ „ŽÍ5~üxÜŒF︋SHô»ÐTöº‡Ú.€ {¼ps¬R¥JºMD%b]gMR.– aÊõ¦–OÕÄ»ÊR÷ÐÚ‰`¯ÞKˆÑàmƒ7Þ9¸OÏx=wîV)Ø("ú’SÀóPFþ«¶F÷yzÚ÷’îL-o®;}Y).òÐl!8SæFMZ¬ümñèÏ·}·Göœ¹Ïž:~äàÞö{\IàV^pD¢_TâP9aV 0R•‚6­û7MNŸ<‡‚0Ë•'ßÅóg‘Ó´aÍÊøø8è`Ù\v¡{!Êñ4§Öìiê¥\qUņ*lÑÅ­LWR<Ñ”rÅ“qÏK~T¼T9O/ŸÂÅJœ8z(¬\%œŽ‰YºpΓǡ >fZµï‚ÊôAú|ÖwßLý&i·opH¦÷ûFxš52š‚èÅê)i Ü…‡“ˆj¨"D+‡ a‡X¤îæã,ë|€ÝúØg‡‡II]ˆø+îò‹=XJ÷Â3âNt0„„—ÒeÈ2Ü Gwè ÑÎ;K¤?AË"ö†Vؼ%ëEÁÔµ´Fñ¾þúëª&âƒG,âuýúõ¨Ai—"yW×^[©í”¬ŠCkêÞFך©j” „§4àI*å!>Pt—Oiƒ²v•¥î¡µÁN,|äÁV!¼‘ (€C„`±ÿOB@¢ˆØ!‡J16ròÁXüepëþüÃ=&ÂY 8 ^Uœd!8 I ­+W€@ÌUâ`\—wC»îÚqä$àœxUqÎuIã£Òðu‡Âé“ 8!‹b®øóN8t‰H€H€H€H M0¯\“ó§_ÓJN–H€H€H€HÀ¡˜-àP¼tN$@$@$@$`7T®vCIG$@$@$@$@%@åêP¼tN$@$@$@$`7T®vCIG$@$@$@$@%@åêP¼tN$@$@$@$`7T®vCIG$@$@$@$@%@åêP¼tN$@$@$@$`7T®vCIG$@$@$@$@%@åêP¼tN$@$@$@$`7T®vCIG$@$@$@$@%@åêP¼tN$@$@$@$`7ÞvóDG$@)B`ÜŒ%–ôóq×V–˜¥€Ë 8™LÜ~¾n?A«Þ¤a.“@ò P¹&Ÿ!=¨ ܹsçñãÇY³fõ÷÷WŸ³þxîܹ-[¶´¾©[èÖÁx “~œglÂg]nÀÉä“*ó=>áxbbbÉ’ÞŸ7·ÝôòóÊ\)s2'bªyªLP Æ{Û¶t~~q•*™›ªÞZ{UsKíHcôîÑ|3ô*ßË’~“o“ÂÝ%Àô@ @åÊ·ÝÄÆÆ.Z´hÉ’%QQQžžž Pœ¿ýö[2;X¾|yhh¨mÊ5..ÎÛÛŠ7y«V­îÝ»'ŒN .üî»ï+VLÔ|ùå—¨œ>}ºµ3JÎtû LoŤ„ÌâöíÛ¢œ={ö°°°O?ý´|ùòºþe%Öb]Ú\°aÀ¢¯wÞ Z¾ÜgÀ€'DÙÜ{Ê7´a¾¿ûíÉí'ù[å¯6½šð‰É'|v S™L 75´d gçžMLx¦\wtÞ‘>{úF[YÒÐ&R¬˜Ç¿ïÀ„ìÙãÞ|úiœ¹w vlA;£ùƒ­[µ§ž×ÄÆ¦û÷}k‘ýó–¶”¬¥Q~vù‹.j{ÚÓqÏÌC3³fO1åjÇîbb}<íp­Ðba ¨Xýù§jÏC&Ožü矾öÚkï¼óNppð¥K—NŸ>-Ϧ|¡OŸ>7nÜ€˜¶ªëL™2}óÍ7>‰òð°¼ÃT¶´m¾ôÕÕWã£ã.EùÒ²K6O£á憞äeÛ²e{´b…ǽ{^‡ùž¡Aƒýoú¨;ý›7§3ü5ÌШ‘ç¥K÷ÿ}ßšµ×íŪJkiüÖâ7èøâÏËË«`Á‚ÐFÂDägŸ}¶fÍš¶mÛž={v„ Ý»woѢň#Ο?¯´“öíÛwèÐaÇŽÊÞ·mÛ†ðçûï¿êÔ)QE5lذ7Þx£]»vëÖ­S£üË/¿@7C¥uîÜùèÑ£¨ G”QØÿðÈ&ªšˆCŒ|pæNÿt‰Ïz»âþ†¦–æ]ººæê;{îˆÚˆkj¯YVpÙž¾{ yåÀ¶wÚþO¿gßapjuÕË -ÛÖqÛ½cÏn)¬kZ<¨ IDAT´n[ûmá+ÂWVZ¹¶îÚˆý²­%Û&˜ÎÛ;¾H,|tçÎQ#F¤‹÷ÿ÷èuâD†¦MCòæ ®YÓ{ÏŒÁĈà*U¼Nžãñ›6- wo”;u è×OTôí\£FH¡BA;z=•ªé'Nô>pÀóöm´õ~ú¾UÚ{ž=ÔªUHË”ñ6Ì#:ZøØ jßÞgÅŠàJ•2ԭ뽿¨·ðÕZùƒó )‚þÞI‚µp¦ÂâPÆ,Wœ]Qin¥º‹êî¿ùl$†íW´Ÿl~éY¥Ü>röÞÙV¿·*ð}2?•¶mXtü³‰Tÿ¹z¯¿že ù;+ßSØwc_í…µ N/Øoc¿v+Ú5ÿ¿æÊ©tWö§²åf—[un•°×õ?qïÄ7ÜŽº]e^•Ý×’®ü!‡ ru(Þ4äüܹsȱ{ñÅu£’W¯^E’èüùó+T¨€¨C(¤Áƒÿý÷ß2&*lV­Z'LR#âÍ›7çÌ™ƒ[Û­ÈFX§N µ7jÔ¨=zäÊ•KÅz+$$$ * gcbb pâĉ÷Þ{¯ZµjpbÉM¼pá‚pŽ^¿ž¤*ð£Û»ÁD+¼jç^¢D‰Ë—/oܸg=zôûï¿cðÒ^·ðøIþ½\£*þÉ2,W®Û&u[)+kÕª…ÃãÇ‹JŒjàÀ3gÎÄwhkTâ[2•ƒ‚‚† E‹­hkÉ«¤U^¸Ð¯uëüC(‹ŽªT‰;}ÚkÑ"_q8k–_¥Jñ‘‘-Zݾí1sæcÄãºt LHH:îœ×¶mÞãǧ¯S'6C†D/¯tFÁfÝ:ï Ò ={\¼èùùçQ¸½¼v­ÏùóIWESE³¯¶Í7GÝ^þ^—¿ ÿ—þïR®¹¼¼Ó=œÆEÆmj± éÕgVG0u{—íH €Ù®÷v=<÷°ôàÒ¸On<‘{tîÑ£‹Ä¡§—gØÀ04¼¶îraE% nn¿yø«ÃÙke‡l=1õ„lkIÁ¶ *=Ç>}z=}zDFµh\‚Ç3g"žØ¥Kº„„8ÈÖÓ§}ÿ½gâ7kVüÓÜV¯sç::zÆ /^ÌŸ??ê=<GŽfÓOGÇI‡(¿õÚË8\¼r“²^è‹VeqvìØ±(ܺu«hÑ¢€Œ2¢Î­H4S6¢Þ’WåÀ,0b¢‡{ÍŸ“+WBXXüï¿ûŒã˜X·nlhh"±C‡F8àîõúë1Pœ×¯{vêU¡B\ƒ±ªÇ{•*•ƒ„]½úa¶lIJvìØ¤¥¼uË£hÑ(Z”¡YÏœñjÛ6¦C‡¤¨üÉkàffl˜/|B§æ¬›óÊŸWb \ÄÝ=”ôk…Ÿkk¯E]*Ò©Hæ ™¡hŽ?zÿø}¿P¿'x»@Ñ®Eascó !gŸ¶xþRal<¹õ$¸h0vn=?᙮β:H‡½¼â²µ1WÛ&ø¼ëté ÆÚx<}ú¬]ëyýzT§Nq*@z¦?Š6¶nÝÄÐPߥK¡AFõ yýu¥”#Ÿ¾o=nÝJ(Z4i'Vºtñ/¼Ùš...öß÷­l’ÔKxxt§N1Xï6màÙoΨX|'K²ñô|´l2hyµ6æš|rIñð\Ö|Yö€ì+άØãYÌõ>^>«[­Îí3@nv*Ý©mɶmÒµYzr)$&T¬—dzÛJo(#§ö̽30îP*igçÚ kŸ~±{jgª»@Ÿ@d5xDÅE¡‹'J„–Py‡/d~!È7(.!®Iág× ]3V’€½0æj/’iÝ6ýÔ¡hh·nÝp·]ÔdΜYÈVÔ̘1£K—.È €6… ”M |![qˆ¬¼ÊDÿ [Q](ì¡eqkÒ JZ9©Ò‰náÚµk¨‡\Ã+Ú"ˆˆlh_]cY‰dH7m@× wSS>uçŽ)C¼"™áäÉ“ØËÕ¼ùnäÉÁ( 1q ø'j„lýù÷ ¢RyJÙDUFTÄ÷ Œ ÉU«V-[¶,ÂÒÊ‘­,±‘ÆÚ‚rTxÁ_¬ö§Ÿú¿ûn " øñ ÏP¢Í›Ç\¹’”?°x±oƒ13&^¾œt)7Î?,,dÊ”ô~~énß~vqˑٕI¬ðND¦AÕªÁeËfDjxß ý*4®rØ•f¦Ê6ÌW¸ÊÓ$OìƒØ“ÓN>¾ø8Wýçw_~ ƒ£ãŽþölj)'};úÆ–¨ÌT:éÛ ©hÙƒ#®ªºjyÙåÈ7P.n@®ÈV4ô ô‘9 ¦ü¨êmž ô“´[+66áé7[ÏËIafÿqãB ţp»+Ó¼¹ç•+ˆ†ú.^Ó AbÆŒ²yR!!!)£ jÕŒeË"Ù_(ÿsVs "µØ–tÆÃ#¾T©t11PÌÂ0ßž^ÄÒšu¥ò|J‡¹‚rA¶¢&Ð70Q±09s@¶¢^ìî Ë’4t¥²”Љ¹þøÙD”®DÁZ`¦=…SÝ…ú‡B¶Â X¦¤-ªÇï<‹Öë:a% ¤$*×”¤íÎ}A"<‰äT<Ëxž." ±Ï?þø7Êu!ãP_ -¦ öpwI®ˆÂ*S ”-äç´¾Њ³¸éhkFÕ¡²åÓòÚµkñ?ôœæL:³½ëNÁÔÜ_yåt1eÊhåúõëk»SÕÄÆ%àŸ¬üé×u¢F¾ÊS¦ .Ä©š5kâuÙ²eˆdd_ CÙ‚UØ(íM•­p\\º%KüêÔÁ׆Dü«_?q1™0ðÖ[Iù ø-[æûöÛIe¨¼öèñäÚµ»â_íÚê,Y²`óÓÒ¥K Ô³gOMMmÂ3³Ð¹’8Dnn—£‘QìâBŒäq§¡VS{òäÉæÍ›‘‡Š§eA#1@k‰ÝHëׯ?räž òk·oߎTzñÌêÕ«ûú>Ë•T¶Å°÷îÝ‹Q>|ô‚ämÓ¦ÒeƒÞ§`jîØ«”!CÄ;ß~ûmÝQ©ÿüCâ‡Åk•‡*Kå!8#›;wîÄ>0„É?úè#ˆ/È?Æ£!°‡'ÂÛeÊ”ABð®]»ÀÙ”Ò¿AY9BK¼n¾M›öéÂí™3ž6øàæ~þü •*Å(€€kHHb½zIŸÓ¯¼’”Bðt'V|åÊqØŒU¢D|áÂÏ)Áæñã$U ‡þésö¬üGEy”/‡-¤”ñž=^113IZâ0ÉÎĵó•n|‚}²ÕÌv}Ãõ|oä“•(ä|%'rÎÍ?‡kæÊ™ï¹—±DƬU³zúy^øõBp‰`ì늉ˆIÚÑõߟ¸ÇIrÖ;ÐIØõ…Ãø¨x¥&þ¯¹¥G¶M;¢|6nD†€÷Î~?þ)ùäé;0ö•Wà7~|éÒq•+{9_¢Ò ðÐVepM ‰­WO58§_’}þüÓëìÙ¤ŽŠJô÷/SÆkÉï]»ðԂħ÷pDÃØ:uƒƒ}W®Dªb´ôƾú*â»*·6ÚFÆŽD¤ºû¯<·²MÉ6'üðò«…^õóJšH‘LEŽÞ>ºàØ‚¹Gçâö½°/Ÿ½|F¿Œ¨D:Ážk{ …Ò5Û;1š )¸þâzl ˔۔ԗÉZfÉÉ%»®î*—½\z¯¤@>HÀqÌ¿}×7=»$`;t!îãã–÷… ²©#ö!@‹GMao"—PbK,!ž C±‡÷è±ïJÛVÖ@_bË?Aðæ›oBé¢_yJðpÈ_ˆ3ì:B¢D€´W<.i •*U ¥¥²pÿþ}ìUÂc°¡2¹“ 4@Ù wã)˜š;RN‘‹-P¯k2ùT]‹CqwrÊ‚Õø'ʪWÝVÈŽ€ÐïÔ©bÉ­[·F:£S<ÞµÿþXˆÆ#¯K  õÿꫯ.^¼Ø”nGÚJkŒðj³f±R¶Âa›61¸¼hÑ3ѪUÒ!ÒÄ·L™çÍ{”%KBåËgìÛ7éªa ù²ýû`oVãÆ1H?À£ XÇ‹„êÅã·zöŒ€ÔIÒÊ–8TùWZ;_eÛ2ƒËTSɬÊJßL¾5æÕðËâ·³ÇÎåWüÓ÷ŸÈ+‘­%?,s'f߀}!¥Brë|ËûzÞ°½ý÷boVîÆ¹±Ó Pz¶­lÛ=îÜ jÙ›ý‘rŠwx&«HHÌ”éѼyö葱|ùÀ¾}‘$ ÓªîÝ#m æ{&Ò^që? ìÍŠiÜ %xÔZáÁx‚A†W_…äUÎ.1kÖdzg##ìÖ R8rüx¥ÍeÛhØÜ]Ö€¬³_› aZc~ ¿]€0*ž6`FŽˆFÈCÅÓ |ƒ}=}Õ²^; ƒÇMzEª:ŸÕ`(HôŒˆ@¼&HœEHU \lÛJD&À¿¿øJž8…'M(±ʳ֖GÃìHnEÝ‚¾TÉÐȸH<@ÿ”Í‘‹ ©·§÷Ϋ;!F›i6ûÕÙJU¹ØÅð¶¶Ýz+ò^•{¿tý‹æ0Ω·*o<$»ÀïÚÈþÝáŠÙváI'Ï @8@èàçy•^IÈVœ¬T¹T•º‡PWR`é RåMÛ©†fë zWuªr¥;‹‡§ÊسÊ^{aª­Lf­p¢Z;eΆ)³];bÀº"@·^V ÙŠÃ,YžYvè„'aa#R J2äù³¥`fÖ¡ô¬,8n¾¾!Ï5«è™Ê®uËB¶âTú,ö¹“ë  "+@wü•B¶Â I§*~aUý§ˆÇfýç8Ù¢av\x•ÖFl«RÕwXÑOÂÂ/$­ )4¤ú•©CÄwU§tý ­±ª-IÀ.sµ F:±={ö òjð'ìЇƒ]Ø<üQ+¤–š}Œ«ƒ‡ŸFÝ#ªŠÇo?ï…'Å/ŸF)pÚnMà^ô½Ã·C¼VÉYElØ2žîº‹ë8[3OÒNþ€“1W*W'YƒH€H€H€H@Ÿ€T®ÉÊvÒ÷ÍZ    p*W@¥K     ruTº$   p*W@¥K     ruTº$   p*W@¥K     ruTº$   p*W@¥K    0ÿgЩ»¹ÄÓqÝmJœ ¤»¶²°+*W A™1³œ¸Go¿ý¶XªÛ·o·mÛ6(((<<¼uëÖhëÆKÈ©‘ @!àÊuܸq÷îÝÛ¼y³§gR811Q,OÿþýsåÊ…òÖ­[;wîܬY3:´Zµj#FŒxôè /½ôR•*UD¾’ ¸(×P®3gΜ={¶­íáá!p ÙŠrîܹqO¹P®QQQË–-Û¸q#êv}íµ×æÏŸoJ¹"R‹¶aaa ,€ñÀ=ŠrŽ9 ‹ñ 'ÇŽ[´hÑ¡C‡;uêT¯^=Ñ;_“Cûfx79Ù–H€H€Ò Ès½sçÎýû÷qßÿå—_.^¼8"©2æ*lÞ¼yÕ«WÏ’% j®^½‹¼q6_¾|/^”–ªŒwïÞ½jÕªR¥J={vøðákÖ¬A/Щ[¶lÆS§N½téÒ¨Q£zôè!µ²ÊI€œŸ$à «àfcà›ÊÍ”Óqu.s½uë(C\"ð‰|V$°6lذjÕªýòåËÿýw(NQóàÁDÚ éÓ§5Ò^U€åرc½¼¼6mÚ„Wd&DFF"ý@è]¨dHgx@×uëÖ•q_•ZK€Wk‰ÑžH€H€HÀb®øS¶X'ÜÖǽû *4hÐÉrå6lØ0lØ0ÔdÍšUTŠÂÇÅ!Dg¶lÙ¤½¶·¯¾¾¾P¥yóæEYÒ ™ è‰cÆŒéÝ»÷™3gä)H€œ¿9ÛŠ¸Áxø¦rƒEä܉€ (Wä@JŠÈ+ÐC˜Êê‰'Þ{ï=¤±(P@® ”hHHný‹šÓ§Oãî¿-±qÕùsÜ$@$@$`+*W[ɱ @š!À;àif©9Qg'@åjÿZºÈþNÝÂcÊÇS¾GKÊ’@Kl,é‹6$@$@$àN¨\Ýi59   pgT®ö_ÝÖ­íïÔ-<¦|1å{t‹…â$H€H€HÀI P¹:daBC39Ä/’ @&@嚆ŸS'   —"@åê劈¸ë¿tJ$@$@$@i˜•k^|NH€H€H€\Š•«K-K$@$@$@i˜•k^|NH€H€H€\Š•«K-K$@$@$@i˜•k^|NH€H€H€\Š•«K-K$@$@$@i˜•k^|NH€H€H€\Š•«K-—« 6tR¨« ™ã%  p^T®Î»6®>2ÊVW_AŽŸH€H€œ€·³ ˆãqR³F|áÓáH€H€H€œ„c®N²î3 ÊV÷YK΄H€H€œŒc®N¶ .>![juñeäðI€H€HÀI 0æê¤ ãŠÃ2%[eÖ'Å1“ 8*WçY w‰6ÚjGÙ*\ÙÑ¡;çH€H€H -`¶@ZZmG΂R+[E‡¦ê­e«U¸hL$@$`/ʈ‰]>Ñì50³~”#Æ©2~9 »ôNåjvÝi`ž€|SjMíò6þá »8ÔŽ“5$@$Æ h¯äÚë­%6n€Q;M9)qJKF( º~,l«ôƒ²®+iŸÆÒÒ”™m£’neÁ”a Î*GkC¿T®’6 6oDÛ›k¦ô¯z‹+O™sÃó$@$@ψ‹§Y–˜Û¨.Úf{LIã‘+G¢œ…hey[¥QNN[­7cŸÊ‘[ ~` ôfl¯§l(ZYÕVå ‡T®Z&ɪÉz7" =ÄT¼ÿä›2YìôëúOæ›^¯Ö‘ €k0ua”×gSrÚÒRÖh›Xb#›£ $4Õ¬HMbùA’škàî}[þ‹oáõD¼]…[ÙDpV–Ñ 3å«%öÆ6ò,§$ Ò,*×4»ôÉš8.ÊV]@ÅEÜÂ&V'klìbùTŽ­}èšó@@÷­¥KÆ”¥%— a#-¥+YPö(Í”•°D½|UžeU+]ϲ•ÊXÖ³@i–•kš]zÛ'n|5ö+®æÆ68kÕÅÚ*c³]ÓÀBâm ‚/ߢ^&ǧ…miæ®L½‹ð3uJ…Bõ.U5>”mÑ—,[ÒD[ÒÄãy–Ò*×4µÜɬüœ°öRk¹½åªÉˆ†67Wyã¡ù66ªCݵ•¦VGåÁ kžJ#tߺo-] –[ê6×­t„OÝŽXI$`L€ÊÕ˜Ïê°ù nJ¸È>t?®äYƒ‚hhssÏ<% ¨ðŠ·n¥l¢|«¨,qˆ³ªJ­O¥é–·$ z3È9¼ NÉæ, ¸*WG-hhh¦ˆˆ»ŽòžJ~ú9!>·lî …J%6îÜ­JR¨ÖHuhB¬‘4n-÷ Û²àä{@5¾%T@xH$ P¹æqé IDATJ,˜!|](?L¹’f†¢9-ÚÜ\ãϦæîÀ.“çZj ]¼º•ºª,qh …ÊRëÍTC­¥A]œøç)òM¥´1»îJc–I€Ò,*WG-½›\u?ilc§r%íõ¹%ÚË›msÔ¶’Ó§pèl#TY9`;UéJYVõ.•Õºa Ÿª&²ÔkÏêºb¥ƒ¨–½ÈÕqPtK$à~¨\ÝoMí?#© ìå:­ å¶jîvg›ü5RŽÞœP[ˆ!©Æ)&®­TÖ(Ëöš—ôi/‡É_AûzÔ¾pÊxÖʶÊQ·RZ²L$@*T®* <Ô'`ÇO•+Õ¡~÷ÖÔÚÝ¡5«må'·jTâPžU7K¥cåxTN¥™ÔÍÊ¡Š±I¤ª‘KKÔ£¬<«:´dŽ¢‰ô©jbƒC•'94˜ v„’‰$lª¹¾ÖkH€HÀT®–PJë6Žø¼q„Og['ùù­š¬8gå)ññïˆ){–ƒ”]Ë!Éç,èŽS[©¬Q–­š”–’l.}ØHc'/èNANƒWà”¨Ñ¾Š™*Û:ùÜ9< W!@åê*+•jãÄg?~l />ËÑÉ³ÂØ†^Ì61ð¬=%ÇcÖmªØe¨–8QQML5D½°7e`GnèÈT/ª1ËN…½ò¬°´Sžuë…Õ«Ê!I€HÀ^¨\íEÒ=ý(?äÜs†Ž™•à¦û1/;T‡h¨ª—öÖäÚÁ¡v<ʳÖzv3{Á\õªš£%‹b‰Ê­m‡ríDAö+ëM¹Õ¨j¤+S´õ¢‰öUkÉ ° *W»`tg'6|˜¹3ù)u€UÜ„±²¹a?fN*ý(‡¡¬‡ å)3Ý÷´`¢}•3¶–’%ö¢;K,å0PÐ.ŸrØJKSžµý¢Æ”±Ò!Ë$@$à<¨\g-œn$üT³jI„,MlVh¨•– CÙ»v b¥®þ‰èˆ)H…¡„#*•5ÉYáGvdàJic¯Þ ºã)Ë ¨‡X,íÉåRªz‘6ªz’ @Ú$@åš6×Ý̬ >GÍ´tšÓª)èê««r(ÛŠz»Ë •C1~Ý1¨,åÀXHuÊ¥Q–ÅÀ”5Êrª›  g&@åêÌ«“šcsƒR1]µg-YéD‰E·ÒZÏ–Ø‹Ždw²‰r0²’  pcT®n¼¸¶OÍ $‘J¶&gFB2ª`ª€{¯/gG$@$@nO€ÊÕKšÉÞéšH€þ¿½7“£*÷÷3Kö}HX„} »a²{ÁË* € ¢¢€Q”E–{$( Àÿþ/Ë¢Hd HADÙ¶°&=3“Ìï;œÉÉKUWuuwuwu÷“Ï|:oóž÷¼ç9ÕUß9}ª€ŒÊµN&<Éz*[êd² @ Q  \Ë8óíí³Ë½ÀÐI¤m!q‡ @%€r­(îòuÆzjùØ€ Œ@¹fd"JJ#Éz*Ò¶$Ä4† @ P®˜„|)$¦ñ1JŸZ@€ P(× @.{¬§–1@€ (× LB¾â…©]Oµ¶‹êJâ#äëŸz@€ (×JOCX\–)uäúªXea!@€€#€r­ù3Á®§ZÛ ,\Róf€ 4*”kyg>üg´ •’E¯˜ª#×W¡=–—Ñ!@€@±P®Å’+ª]Ñ24ª7ÐÛÞˆjE9 @¨E(×òÎZéF«¸SÄkyç•è€ TƒÊµ¢Ô‹“¡1)Ú€ÞöFLCª @€@Í@¹ÖÜ”-O8fañº @õBåšé™ŒÑ¦QyÑ$*å€ @ SP®™˜Žâä& «™˜<’€ @ RP®é“ÙÖ–VÐ"´iMÒÊ–8€ @ ¬P®eÅ›4xXnj6f!6¦*i—øA€ Z#€rMÆf··ç Z¢Ü 4æì‘B@€ POP®ÕŸÍœT«°á…XåêœsVU$d@€ÊIåZº9·ºæ”›9ekΜ͇9›P@€ê‰Êµú³Y•sr±[ý±‘ @HÊ5=–&RÔVWãRØçþN­¢Y-@l@€Ê5s3žWž´F›¹á‘ @(–ʵXr%·‹ añêœcš”œ @€@Ö  \«0Caaj“@žZØ€ @À@¹zU0¢$,âµ “A—€ džÊµ S„0­tº„ @ ö  \«9‡ µ[Íé€ d†Ê53Sñi"ˆ×lÍÙ@€ %(× ÍF` 6C™‘  @È”k…&!áb*âµBóA7€ Ô ”k N)C€ †$€r­Ð´ç]LM¸([¡té€ dÊ5{sBF€ @¹ \sQIµ¬­md8^x…5ï¢l8%€ @ ¡ \jº, @¨a(ײO^{ûìp¬°†™P@€â  \ãù¤S›sÃ@:¡‰@€†Êµa¦šB€ '€r­ÄæÜ0P‰Žé€ Ô”k%&3üM•è•> @€@}@¹Ö×|2@€ P¿P®•˜[¾I ”é€ z'€r-û ³U ìˆé€ Æ €rmŒyf”€ @ ö  \Ë>‡l(;b:€ @ 1 \cž% @¨}(×ÚŸCF@€ƒÊµ1æ™QB™$ÐÖ֖ɼH €@F  \3:1¤@€  €r Iíp$K)©±$ê–@{{{ÝŽA X|Q,¹†h‡rmˆif€ @  \Ë5‰³YJ)ZâB€@=ೈzžÝ’džr-! ¢dçÁìdRHAh (ךl†Z7PZu3••§M%iÓ P&(×2 †mk,â8K¸©W~6²ó`v2Ñ,p*VþT¤G@ † \kh²H½2¥´˜•Z!ÀiS+3ÕÈyò›[#Ï~±£\‚*Õ­½}v©!h_NÉoê\XË9 ÛZÉOņ†Åààb•RÍ»4à,£\kþ¬e€ ú Àonõ1eʵ¬x ^‡¸°Öá¤fcHöÔjÀu”lLB]eaϨºƒ1p–Q®fþ1!¤M š6QâA MåZé竪Ã^!P#ÒZGA7ga™…Jδ+I»*}¡\ˈ}¤Þ@—·©ÞHe¤LèÄí<´ãµvb`é8¦¥AÓɆ(€–Hra´>Ö^£ ÿ£\«]]òUÕáN¯M #—ÝJNº¹’´£úb¢È¸òtߘµHÛH—C<óš®E¹–qúfë tr»:¨Å7R¹”š7v ðêð<Œ?ìûÎÚ¥0,ºm|ªE‡¥aݨÅ3¤sN÷„©uI.ŒÖÇÚé’,(ʵ \eqv§>;_Ë7´¶.46ÛeçIÏþ“¬ý³y†s‹¯ û»ÛÊÚQþ¶<Ê?Ée7ª­ŸA»FÓ†d „SJrv9Ÿ$žáøIÞ˜áV¶¤¸~m„Rìâz·­Ò9”2ŠämmæÉ[¥è‰rMf ¡ª~B¤0†r†(î¦.)gÖÄ.â·re·†RGîJÞPŽK)jñ )4çRøä>óª]j ÔßèªM7²”k$šŠU¸S?ùÎ×zz{T~,öBS±).º#›í²ó¤gÿI)ÿÊÁÜæÎ-¾6ìïJl+k'ÉßúGÅ—»Èŵ G«pI¦]aJIºƒd˜R&ÎÇz&y«†û —$‰cû G(wIq½תÜcI¿ê™£\“LS1>“Û&«™} G ¿!“Ÿá¶6~|­õ¬';jÔaª®$Ê?ª¼žXUw,ÅŽjU^Ý1ÖPï¥ ¿Åjhø)¦j9”Bµ”¶)'ªô¬â/¼î‡¥÷˜ú¡ýÔƒÐ@¹Z)Ûî+±|Ðä;Yãߢ…¾=â£ùôªb”r!+GÂYf•Öx =Òê7­8åË¿|‘Ó;qªN Ü—ˆrǯ$À´ÞPiÅ©äØé«¬P®åÂ{xûá m_Ã=Å¿!ã/añmãkÙÔGI¡£Žò*SŠŸ£°?%Ž@r–XT«¨rÛ;†@¡£N{WU“@]VJÕB(¥­“®VVÅÅ)®Uºˆ–(×2N„ûJ,ßA`'«–`«°¾$­·¨»…¤Í$u#;f'“Ô!(@¹/åŽ_:"@ êP®UŸ‚ȸ„E¢ÉLs”™© ‘ʈ:í]yTmåò£'@ ®  \«0½n©UK°UØpI ¹Àm 6|È-$Ì„@€j—ʵvçŽÌ!@€@c@¹Va¾K­I2ðË´Iœñ @uIåš¹iõÏie.3‚ @U%€r­*þÄÛeÚBw»&îG@€ i­™Î®’ o°"5 ÙfB  @ B€5ך™h¯Yã¥mÍŒ‡D!@€@Xs-XÚî…ÊÐBýÓΗx€ @ jXs­(z¿nš¤×€s@³j“Ä€ Ô4”ky§O൸â…i|mq=Ò € dœÊµ¢X7ï;Þ9ªQO•Z@€j—ʵ¼s§?ðZ\QÂÔE‹¯-®GZA€ Œ@¹fb‚¢J£Ê]Ò9k¨ÍY•‰¡’ @(–ʵXrn‡lÍðä @Å@¹Ï.Å–QŸþG•»®µV°ªRL•P€ @ ZP®Õ"ŸN¿V­úˆN¶ª*g­wÀ @µEåZ[ó—-ë¬qt¨ƒ @ ö  \Ë5‡m—çþ&×B×AãýjÕ:«Ê/¾–kÄ… @$€r-;ì¢ÿAÂ̬Z 7‰¯ ûS@€2KåZ®©i?9÷7¹VIóv_Ng¢_órÆ€ ì@¹–}ŽŠþc 3Ë©V}ÛøZï†@€²Oåšý9ê“wÅ4¯Ë®50ͤ@€@>(×|„¨‡ @È”k6æ!6‹¼ŸøçuPø$>±YP @€ªLåZå H«û¼ÔQŸ´ò! @HÊ5u¤„ @( ”kY°V>h’ÍòaÙµòSC€ ¤EåšÉš‰ƒx­™©"Q@€>KåúYõ~”di¶Þ0>@€j•ʵVg®è¼Ù3P4:B€ P](×êò§w@€ ¤P®IIÕ“{êi6  @ q \g®?3RžÓú  @¨(×Z˜¥òäˆx-W¢B€ P.(×r‘µqG¶µÙÃ,ØlÈÂ, @@¹„«®œù’ºšN@h(ײLrÛåŸYdÝÞ^–n @€‰Êµ‘f;4V–]CH(€ @ »P®e™›ö“ki‘•GµÊr€ ´  \Ó&ZkñxT«ÖfŒ|!@KåÚ¸sïGΞ€ ,@¹Vhv2øÅX‘7ìž7ð†~à4à€ e(×,ÏNårk„=1 ÕWÉp?•COO€ $&€rMŒª4Çì1V#ì° UóéjhwWUڜӀ ”  \SZëáêX±ªW±š2_%Ãý¨Pî§Öç”ü!@uCåZ7S™Â@œ€K!PfBÔ§U¨Ê1f¼¶ÊiÜ*Ž©ê Tqìt @°P®–v˜«ä4«ŸÑ𠼊õ>CîGåáæ®$\’Ö¡:ò?9óI«#â@€²L 5ËÉ‘[µH$9aW­Òê×¢‰© N5ú¬\XÓ½ú޼O‰†Âú˜.Ðöë ½§÷ÁÈ7S6;SáZë°mÃ@‡€Šk®•›îì1–cáî‘ÝV+1qO…½Ù[;qŒåŽæ‚ãJ|¹JÒ"æã¸˜îPù¥åûu)ú&Ë3ƪ*7wá윆kcJbÆTŤ €@`͵F'®¼iKévXÞ>j-º‹Ž+q¯®D¯Ö­è!º8.f8ˆí×ÕÊÓ9§Ò{¸Ç:.É 9-Œá8¾;áÚζa”›÷‘CAÁ£R@ ƒP®•›-šU®³’{үЛkÉ}ÖL€°,p%"æÕCØ'ïð\[G^ÎÉ#ø&¾÷@s•;ÿš7™Fv°‡äsá'1'@'ÜEN_Ó0gU¡ñÃù @™"€rÍÔtd.Ýÿü}1sÉe/!±òŠÁ éùVnL [Y®‰HÀÚ×"z±=Ö‡‚Åè†éKrú{Ÿ˜Ú®äžÉÚ˜>á@󼇾¡ÓJþò´¯1ÎTA(ʵt†uÁÝêvx嘿ß;àîè »òmú‡ÝlŸ€ÜÜTÚW:Û$°¾K¢f'ÌırÐFG&à°ò‰%OÀŽÔ·òÑ|­¯’á í«¯õ }    \KXçÍuãq7¤Ôï@þèºH1¾"§­è v9(;RÍehËË‘°OÀuêí«KÀ§!·r¤Q4Àø†6mï©üs–{k4Xïˆo êÝf’);çHí0ÙºQÛWëÕÐ÷b±!$!€rMB Ÿ4 èffï[îÞ(LÞ_[[[{hqÑÑ’÷›ÐÓÝѳ©»³}¹’0rB·˜È93Qؘ& ;MÑ̓RVnZÝkÎ.¼sÎÚ@aLœ€§=tp<¢@¾Ü6©QÛŽÅÓúq¹Bûê«|C_â [ž3fÀŸC@žÊÕ£ÀÈMÀÝWt§Iñc£9[¯¶0w*ÉJ•§B%ó­„—çæ²rôƒ­n¶>=±ðʶå•À”¯››¥gÛE•[o»€þ°8#k”ŠEÞVE3ª¡…oí(ÿ¼â4”kEçZꬶ¾aÀÒ)H؆Þvts ß«\¡+/èîå\]d÷ªî ŠàÓ+·á² 1;ÙÚ ]žŽIŠÚ°x ¾õñU*”í_}[kxg[eä„òâXøvº­m#[[îl×*Þ'ÜjYÛÚD9SdÊ5 ³P9è® Ûƒ~Š»=øº9ƒ¸.äY\/jUt[Ÿ^Œœc¯@¿É»p:ž®•·KIÞ gâ«bâ»*ûŽCI-°“îÏ„À@ly””O ‡€@­@¹VtkwÁU˜tÃнA?öΑŸ»©¸1M\d׋ë1ÆÙW¹”ü«/Ç(…€e7}Šæ Ù~²Â½ø¶Öß¹ù*ÛÊ»9#§õψ=rdÛìÙµô%Íá“FÔÔû3Dm­íB¹V¶ÜÚî]„wÉüý¡bª­{õ…€@å  \+ϼ†{tî$×zà¶‘“…ëEUI:ò\ä$ñ}Œ„™œËë°âã6^KA³Ür‚m<*Œ€ (×LLCÎ$¤ŸÊ&«´¡’ 4lðCqs?â YH8 áM€¬ht4„û\ëdÆcÄ«F¨ûb¼CP(Ã0ÄÍ© ¯-I–vý„ôgKxHþ𠺆Þ9‡@I€5×LÏ»—M¥dé•V)A¹­Z!…áD†7Ê '§¦)w§Ä/wÚæÔž`¶ßœÎÖ€@£`͵!f\÷Ew ŒºA6…ÒéÑ9Íá*¤}Ui=ĵöÆ9Q—1§„›Je𠺡xgo„ffÐ$@ P®• \JºŸé¦•ó®VPX'•Põ[Î~.œ!¤éª 7Gv¦Ü܉dºÕßÔ1"ÔOkAl;q¶ÜÛuä}žŠcmÖ¾•-Ć PØ-Pó˜hî~–÷¶—(NËT‚ðMØ7t†?TWê%ÅŽ–åÎÿË ˆ¶ûY^T¬e'®ØÁvîŸA¿OýXÊ‘IÎ)„ P1¬¹V uñ$Kñ>@ÜÌJ˜³­ ‡W¯¶0g+[èýá_eÈ͇ò† ]UÀÁÆÄNBÀ#u$=X¾*Iï£V>”/L×È›˜MÀÚJ#oÛtS% Ô  \SGšõ€þÎÊ=¬Så¨J.XŵüSãsæé;R­íK‡IºË³‘ =4Ó‹w³…Îvþrˆñ ·*G‰M 0ŠÀa wÛ0PÅ! Œ@¹fd"H£®HX‰à5MÔ ½@:Ã̓íK>áîT’7T8xc–xPªŽ†#&œYV~8>ÿ˜Tí Ã̓o’Ó?¦/ª GåZ·Únåo9ÜlÊ7‘–­»»äNàÐúšU mLwŠp.´¯ÆñÏ Ê±u¼ín²‡þ ðþ¾€@AP®áª+gÝBtwÑ÷’ÊÌ«ãìïèÃÔsÄ÷³ìPÞöµ©§Q¦€©d® ¥ Ü·õÉ”i°U ëG§ÞsÐ:È'p˜³I8T UUFJ§€@m@¹ÖÖ|¥œ­nºÁè§’÷ w—2²’ÃPK ŽoK¼¼p†­ ªÒq޳šŠÉW±ëÊLKŒjâçËe8ŒjU™aÒ  PP®51MeLR· Ý<ôSÖ{†¿?¹^‡e¡c øIw3âçÅ5òµ±1Ê^ÈJý)1Ÿ›¯õF΄¼¿­ÍYh°S'`˜µÀ¡í=ÐÐUÉ_åîÕ:cCuLåZÇ“›thîÒ_™«¿¿Ó¸ä*ÓiR ìçd¦Ã2ð‡9EƒõLn:ãîä Ä·A|n>Û€³;ôµÞ?§…&˜?Má4U¾¡+ª Ç¡¨u(×ZŸÁtò×m@—~ýøûA:q—EñaÝ Æ–¯ÓeóR~^\7Y²³fÃ%Ÿ¾@4 tgÃZ;ìæCÅ»ÙZßÄá°Ö»*b&ÅOœKÌÊ_†{µ œcÂÚVØ€@M@¹ÖÄ4U"Iwõw·òõ¸…øN]Úò¥Aä$üt8¥¢ÊÕ…«òqTâfÜõhèj}+çcÛºïæ“>ŽïT†/LŸêL–ŸGWUëröÎ9‡h›Ó‡B@ ;P®Ù™‹êg¢+¸.ñ¾£»NÝà+Üuõ‰×HîÖ¸ý»C;}~áZÉöž9Ë]¡{ ta«Ò²Y¥–8&àç1g¿Úøó*Pëڪж‹@d[… T†Êµ2œk¦]—uÉöWíÊäío©t­ JÛǬÌ¡—RÇ9ŒÚ—ËpM|I€R  jg¸<Ð0•ÃÊô’Jª)‘@ü\ÎOè Û{ 0>²mˆ ¤EåšÉú‰£k±®Îî]áër»®Ÿù«ÔH¢Î _îïñ¾$ojÉ=ó†Â Î:éó†ãÏjW8´žñ¶í4gëŠZ4”k£Íx¢ñꢙóbš¨qiN¾k—@ÂË·œ½§7JK„Ö¥`"J%Hûjðç­7l¢¯“y†]Û¬°!ÐPP® 5Ý Ö]%ÝÕ³ÂWLÛu’œ¿ÐW8Û˜â Ô¢¯6þz%9ƒXÇ,\f™3TØÔ4”kMO_…’׳òD×£»XçM@ÎI.ëâE7€b ä½¢†’\âÂ>kc8llšTB ‹P®Yœ•ìää.sºê§*—<›€°äÌÁæ¬ÊI2 P $—¸°r ”•O’°¥¤è±ÜÝ•’*mk…ʵVfªšyêZ£«»Uåºã.‚Õ<èÈ6ðõY×L[¸„j4á’‚†è/ή•í+gœÒ»Ë–†"€rm¨é.~°ËSñŠmé.ˆ«žó^(‹ív€jž@à 8ÔðÕBh8T´@a‡‚zÌÙ<ÐEAq®E(×Zœµêä쮺pTñ2èZÉT7Ÿê̽BH‰@à¢ZhÔÀX‡ñJï.?¾Ó{ wGIÕ  \«>µ—€»Ldár â¯Yµ—Œ!ÔÀ p˜ú8rÆ¿ Ä×Ú s·ÎÎ0aœpdJ@¹&…[/½'ÝûV¯Yxf!N@¨ø»@^¡éÓŽòŒï›{#oœ¼>FN(לX(Œ#àÞÆzïé§Ð·t\\ê @©H~“Š”ò¼þ~4Qåyòöè#”n(ÉJvW\Â(×â¸Ñªgß½Nq÷VŒ9Ñ‹{´µµµ··C9ž”âùP[N§‚pá\¢ndî6—|¼yãäuôUh¾yÎŽòFËëàãG~íµ%<àÓ–£\- ìÂè„sg¡^cN¾øÚºÄ€@JFŽl›=»¶C¶š %*å S»´cînÁÊ'Ê!¬öö[DCåPD«@>ݪÎ÷è^ Bü!Ê5žOÁµ“Û&Þ~xÎWÅrU… ¨òBC¥îïÞi:Mõ“ó]WÜÛ€×$3¦T™ÛXezIBŸ „O§´‚×î S»™§5w©Ä©®f­nï©ÌyoM9  ]“¼Ñ¼CÑçÎ~öžd\(×$”ªì#¬ ¢^3¢_xUžþ¤÷ÔÂ%¾*¡Q—ž„#ÍŽÌKœ æXô½0g´ k}ÁUÃ/î÷˜YHrÞ&ñ OMiÇpç_\Iq¬ÔWLnÉc–xó-îìRò%ö›5Ê5/¢ÂœŽŒzU¬¡u:æ\ÁU§e ˯lÞ:SݯYz-÷Y›wQ$ó6¬u‡¢/4 ¼2½”ÎY&Ps'Œ¿€Ô\æÙ< ª«Y“÷îç]­]aª1šµôLêc\(×ÒÏ„Ô"D½Á¢tpŒN-§B9Áê_Ó¯Qd ÉßÂͼ¬—ÝÂÆPUï¢V5ë²wŽ,;âÄÌB’ó6‰O‚,ªïÃ!IryU`)ØÜê†È9}šs–R¢ XýZtfð­KX‰ƒj¨æº%Ô÷xë~€EL_…™Ä¼%3x)‚gÞ&1ò¶q¨ð<ÆdRh•wo§EÉÇÉË'F³:¢°¿W¸ªÜ%9Ç•—FάP®9±PX¿àêö”‹Æ¥ð—Ë„a õ‡Íyy »ÕbIqÙZ)9×1âNãâZecòü“{æUu|1L2³ÉI&‰f}P®–FÚ:uª²VâÕë×:ÄZøüV(°¼·„B–î_º¦·9dp€6½ªØfRá·dùîâEOV™Tx‹~†iQòqŠã“Áó' »`Æ_6U[ ”k<ü*×&9Y%L6ÍùzUÓ•ƒ÷±ãIrb9ÿø“ÏÆ Ø (^‹f@s˜ä¬ðÍýåÒ—X#|ÄûÛ¶©Ø%•}ø™²µÞ_dÃ}üœF)þ…¶ $àQâøò€U]nIºN³mÅ8äì=œdZ%áq…Oãø¾\ߪbù‡3ÏÓÕFµòùGñãÊë!ªÜGŽrˆ)wmí«sŽiý­í; PŠæ[ 9lË9u’>”«GQ·F9ä*îD/q%û*.ÃøVåοÜñãGW‹µb‹¸‘õtšÞ—xÃú;;&`ع¸’œ½«_ýs¯ ›Ó§¸îr¶J?‰O8¸knUî"Xÿ$v¸ß„%Åͯ»‹û¶6Äý&t‹UkË­°Óª¸¹×Ã;ôKænîïv<ªÍ«tùýØÆ@#ЕÁÿÒÛãeŒå&`Ï(wW ÷¿(öw%jå׆£|ÂåþÆç÷ÀR‘më}Thm†[¹’p¹ _k=­m[…ípIT[[îl×ÖF°>QåÖ'¹î«”ø¬¹&'é^sš’¨òÈЩVÄ÷_›j"5¬K[)ƒ,¢wuW\«ÊçYJIÚ:aQåᘶmÎVÖÁ6—ÛæÖv­ÂþQÑl[k[kGE¶m­µ“ı>éÚQ™¤ÛKÖ¢¥;êt£e™U}ŒÔŽÂÚaò¶ÖÚÖÓ•G½†=]‰õ—ؾžá˜ÖßF³vÀ§ Ý<¡e™§lkbý&ë@yØÓ:Ä×ZOk'oå<ù¹ò¨8IÊ“û„=]‰-·¶i¡¶Õ‹¥aý£ú’ÿm>ìޤÄÅqžöÕÆ—Ûg‡ãØk[Û‹µmü¨¶á8IJl/áÈáaWbçÎú¸ò¨Ú¨qÙÞŽ â 2l×ÖvAìÀílÖÇvŽæjm[[å.·=†kÙ‡KlWk3±%6¾µ“Ä´½Ø¶áòøhÖ?ì. û;Ÿ(O;#á¶á’¨8ÎÓF {†3 Çw%Qå6¦õ Û¶Äökmç~ ÷â|ÜèldÛÖFNnÛháV6~¼g8çp´(Ùöh#Ø™µ¶õ±v¼OT­ë=\k3´½$±ÃÑÂ%Iâ8”krVxÚ)‰:]¸¨S!y¹oípº6«p­Í'¾÷pm¸$*~’òR¢Ù¶aÛ–—‰‹`_Ãql­íÑÚ®UTI’™ ÷Õ*Ü‹m[Jm¸Çp4[âl[ÅÁf¶ÃÂq¹…ãD•ضζ%Q­Tv³Í­í‚„ýmp[kmëeGùÛrk‡ã8Èñ>Q­ì9;\âÚ†kmy8¾-±1ÃåQµÖ³P;3¾ÄÕ†}\¿Qå¶ÖúØháòðX¬O¡µaÿtKìXJ‰\èùYh_ñ “G‹cGaíäñ­§‹`ã„K¬¿³£|Âåá-¾Ööe[j£\ %V€¿›Â$ â=]­=õ“¼íãcº¬\œ(OWîݵ/ûØümQ½ØrÍfncºò$¯6óø^l¿Q}Å3´œåï2 ço3 ûØZÛW|¹õ´¶k•d¤6“¨¾lëo{tvÔ«ìlÓµr%áò¨˜Qå¶/çÎ9ªm‰å¶kk'O#*Õp´øT£üm¹CíJ¬íJlüø’p­mëìp|×ʶ²]„pmòá¶6C[Õ—õ·¶mkípœ¨’p¹‹Žf=Ão“¨Vñå6¦í1lÛ×*üjû²v¸-lÛ’p/ñ%ñm]­}M-yL;RkÇGˆÏ¡”Ú¨~£ÊK髸¶(×â¸ÐÊMvÔ”—^nã[»€k|„¨ZW¾,šÀ˜.Z Œ«m¶m‰iÔk†óû»ûŽckmk»VIJÂñ - ÷b#”Rkã8;Í–8Û–Dµ G¶%áÅű1±¢ ܇á)Ž*q õ¶<´Öâ0>üðÃ#|¸ ‰ÎW\1fÌÚàd®Téꫯޯ_¿¦¦&ï/[; ~ñ‹_üìg?»õÖ[O9å”u×]××–hh’b" Ð7¦–ªlp³f_³™'YA€²F ñZ{ÊUJtĈÓ§Oßj«­4%¯¼òŠ>ý/enôŒ—6ÂÞrË-Ú/{Ùe—ýò—¿,%šo/[å6oQ—wƨQLbNiC€@U”.^kO¹¶¶¶vØazÊJÊuÖ¬Y÷ÜsÏÔ©S‹¦¿hÑ¢|p‹-¶øÒ—¾tûí·4¨èP¶a^Ù*çù(W‹¬6m&±6ç¬!@ jJ¯µ§\EúŒ3ÎxÝ{ï½ß}÷Ýþð‡¥¬¹êa¯ë®»î’K.ѶõÖ[ï¸ãŽ«ØLÎ_ÌškÅ`—«#&±\d‰ @ÈE &•«¾ßêÎ;ïÔ#Vú*}•U®qõ–Ý|óò?ð§?ýÉ•öíÛ×?55tèPmèèèX¼x±ì˜PU)~Þe׎®¥ÅÄ9ƒ˜Ä N )A€@– x V\’5©\ÝPýc7rÛJméŸ-)ÝÎ+^;Q®¥S®v&±Ú3@ÿ€ PKJ”­j +×ìOT¼xí\šköç0O†Lb@TC€–(]¶*ÊuÎòü3I|Ð\äÊ$V7A€@͈QD åZ®4Y®K“fEb}å?7V?ö•I¬x: ô@¹VíT`‹dÕЗÐñýϾ§Ööµ„`4… @ 0(×ÂxEyÏž={Òo–A”›+_i@Ÿ¿Þûïxj!rp﾿–#41!@`3.þÿ—™)ÿrMè÷¿vÈÈ‘#ÿ{â7RˆE@€ (×0k͵À¸C€ F ¹0w¼!@€ P%ÕQ®]]]Ó¦MûÞ÷¾÷£ýHÁ50öîîîW_}µ½½=PžâáE]tå•W¦pþüù³fÍ „úä“Of̘¡Ê5ð×_=PÈ!*C ›ï¬˜7Å[o½¥÷WNÔ›+àÆ! }]]}^=‡Yº´ÏŒÍsç6…‡0~Ó¬Y9š„=)©Wy¦ýõ×_o½õ>üðC7~ýÕ¶¶¶×^{­DúÛ­GqDSSÓˆ#.\h£ýìg?Ûh£¶Ûn»u×]w¿ýö³U)ÚW_}õM7ÝTbÀ¥K—~ík_;úè£9æ˜}öÙgÑ¢E.à)§œòÿñå[mµ•þ´¬ïEå;ï¼óĉwØa‡ßýîw¾£AèÝ4nܸ„ƒíììLèp‹j˜ÍwVÔ›Bל½öÚë»ßýîn»íöóŸÿÜ1êÍå0 Oà+_ÒÖ6ò¢‹ú’L§œ2hç‡Mœ8h‡†ýîwËÿŒåË/·l¿ý°SN¼ùæÃò“åÉKÎ~íkƒ>zð1Ç ÞgŸ¡‹åе™ É”‰@þ}®}ôÑ~ðƒßþö·)f0uêTEû¯ÿú¯ÁƒÛ°ZjÕýõË_þ²^ß{ï½7ÞxÃÖfÍÖ(¤¦L™¢ÄŽ<òÈ[n¹E™Ë¾ä’Kš›{~%¸ýöÛÏ9çW¨CiÖUW]UÆC=tÜqÇxà.OªœpöÞ{ï7ß|ó…^(HTÃ̾³¢ÞguÖöÛoî¹çΛ7OÆŽ;î¸í¶ÛŠFÔ›«PPøC î ´·7M›ÖwàÀî›nê÷ƒ,lʞ̛8qѪ«öü-ɇj=î¸!Ø©luxÒIƒ¿õ­ÅdzXk®ŸûܰvêÚsÏžßä§Ní×ÙÙ4eÊ<ÙG9ä–[ú~ù˲ù×hò¬¹ Gÿþýo½õV§5-éÓ§rÈ!cÇŽÝl³ÍÎ>ûìÅ‹ÛZgçô‘`½ë®»ä°ûwÞy¶•îÖZÈüàƒT¸æškî²Ë.®öÔSOÝi§Ö^{m­núÛ¹nÒ'tÒu×]·ùæ›ËóÅ_¼æšk”Ìà%¯|Ž:ê(-|Êg‹-¶pýÚe¿ôÒKj²úê«kAô‰'žpµÿûß%FÝè~ÿûßš¸CÉÓþóŸÚíÐÑÑ¡·Þzk_î mЊµoëd«W[m5í… ê=1‡@øÜ¾ì²Ëž~úi-:J«=þøãB‘ð 7ô³óÎò)9#ç›BŸÃèÂÃ;L>C† Ñg/þ³ ÷;¡Êo®@X!?ü¡ßرKŽ=vñ›o6?òHï*Õ¹çÜvÛaZÔt|®ºªÿw¾3HöK/µpÀÐÕW¡EÐ'žèuÞ{ï¡G5ä†úoºéðçžk9õÔA;í4líµGsÌ^èðä“­Ÿÿü°µÖqÚiƒ¾üå!4ÔEÎ00)N¶ªpµÕ–Jg»A‹7=ýtËÎ;÷HÕ¡C»'Lèºå–Þ娿æîþ³åÝw›;:ú¼ñFóÖ[/ ä°AäW®p+­´Ò÷¿ÿ}ûø¼>?è ƒž|òÉ .¸@”ÿêW¿’x ‹ò‘L”•³–U¾øÅ/ÚVÒŽªÒØ=öØã_ÿú—¯jii9ýôÓõÿ}÷Ýw饗ºrݺî¹çžk¯½V7øçž{NŸÚßxã[n¹å#»îº«$æi§æc:cÁ‚|°T‚‚ë¦xüñÇK:«JݽòÊ+Ҭ矾ôk •;Üwß}õ¹ÿç?ÿùC=T|6ÜpCï¦O<ñħžzê¿ø…/ôÆõ×_¯†£Fò% K |nëSòÑ£GK±é ¢·CòS4ÐÐ"ÍÎ;Ëfemû¦xçwôi†~wuk¬±†ÿ]T%ño.Lছú~x‡~A¶C±í¶]¯¼Ò2yr¯üíoû¿dÁ‚¦ƒòá‡MW_=_ŸüàOoƒúý°åá‡[/¹dÀn»uJD¶´èθP>÷Ý×zé¥\ÀO$yÞy ûöísÏ=}_{­GTDtM¯×_߇ºFêYpíß¿{ã—<÷\¯zž7¯éí·{…ʾûvÊMBùÐC‡~ÿû‹6ÜåfÙ%ù•ëðáÃõ<“ÖAüã{$’Œ3gÎÔnNéÚ /¼PßfªÛÉ’%Ÿ9¢|´üéDÛþûï/Ûǔѷo_iS©ÌçŸ^Ë¥~3èÅ_,gíÔ¦”¨o¢Í©—_~¹Dgkk«>ׇ‰ª}ùå—­ÖŒµ%•üþûïkùÊWÉP’Ú– ñªSÝø5(­ÝêAêé‰céìm¶ÙÆ6ñ¶Mß~ûí &<öØcZ£Õƒ&¾JÍõO‚ý ±¯ºãŽ;”sº»/|pŒš#>·µÏ[²UŸu蜗„M~ŠZygÙ”¬xSÌ™3Gµ~/Í€\‰kóæ²1±!ÐÈ´&úì³-‡Ú1nÜýÜv[_=Ø$ &t¶µuk9VÚTË¥3g¶|ñ‹Rœï½×|ðÁ[oݵ×^3g6¿øbï’ªôèÝwϽüòk®¹ôâ‹ì¿ç¸q]ë­·TŠVѤY_}µE…G½øÂ ¬¾zϺþÅtöõŽ;úÞv[¿ßþvù³˜‡Öqá…î¾»ï/~1àñÇ{3Q A*VCxì±Ö¿ÿ½ÕÜrm<ìú'_¹Švd:©ÕP‡Ä-¸ÇMô Õ&›l¢OÌuG±À’øXgë™-mýéOªµÏo}ë[zl_†¶»é™-É\éNûÀ¾Vet×M Wµ2†íý¨ÂGÖ#eƒõ|¢çcô*aê«dHžêuÒ¤I‹VŽ%´þªé¡IvíFØsÏ=ŸyæÛÄÛgžy¦v)\uÕUºïêÃÍ+®¸ÂWýð‡?”\þæ7¿©E\‘ñå÷ß¿§å,Eâ 1–@̹화rŠú 2²ðβùx;ü¦psç:ÉÖW\ÑûG½¹¼ pãý´gôÇ?øÕ¯Ö ¨~$^…EJô ƒ:¤ÿ´à÷¿ï·×^Çw¿õV˜4ià¸q#~õ«ýû÷ùðÃ^m°òÊKW\±GJéj§ÁvÛ ÓSSÚ à¾8Çé×M6ùÌ¢•œcªÖþ»ÿþ¾gŸ=hÊ”¹£G÷ª^ÕžtÒ¢#ŽèÐBì AÝÛm×¥½®É™gÜe—®«®šÇs§Lé{Žë¾6 v#H¤\B+CZàÔ¦REûdhIÒJ¤jÕ3ðñw×<ð*áx 'è#xÝ×}ôQé<­˜jqW{õü^Ò@“$‡Út+·ÀªÛf§î´—ÀýÓ§ÿr“R×CíÐ'þá=®»|PzZöøñã%²½¬wµzÕvÝ}Ÿ}öYW"Ù--«{QÛ|CŒ!snëäw =E}Ã0Ã,¼³Yå|S¬¼òÊÒÙî +íÛÙ`ƒ  o®@-‡hdZŒ¼ùæþ»íÖµêªÝúÑãMú ßoÐB¬àÜxcÿ)SúiuS¶Ûoz ‹Þ}w¶ûùüçƒßm"çË.pä‘o¾ù±–fÞ 6è¹Léë«ôúÉ'MúqåIÊS ø›ßtà óÆŽí½Ü¹æÚ±ðío/Rù ',þÇ?Z·Ù¦·»ì»Ýv=‰ߥG¸ôü™óçµÑ$U®z¨H»î<}UͰaÃôåVú4\w_- IêiÁÒ;ÈHâcýeK,J¿þúëºWéówÝhµ’êžd’nÖwréf&-ø"­@À¡Tµö¿JÿùÏÖ7mi ÖAO‰iQVjòæ›o–§F¤.´³P%êHBSwP-ëÚ&ÞÖ#Ïþ‘/=R£Ýx®ÊoÖ²k¿~ýüv==F­ cƌђþÅ( ßFЃŒ,û÷ü#êÜÖƒ†ú´A»P´Y¼ SÔ6´è2òβ)9;ç›B;ôx–Þ¶òí—ð_Ðõæ G¦ Kà¾û´7 Ö&/¸`~~úÓ»îÚù·¿µj‰IL$û¤µàªý}{ìÑ#wß½g žÄºùæ~ò¹óξӧµÛl0xp÷Ÿþ¤Ú=õ¿paÓ–[viÉVë»§Ÿ>H;eõù¢Dg€rÓ÷ais˜1KçÌiÒϲßÖûø‡<з££Ië¯=AûôÙ~û®»îêÝ¡«§¸ÖXã3z×ùðÚ‚gg̘õÝ¥ú‚Rç óô ¿vvê‘ÿ¯ýëz Êm0µÍ“øXÙúîýyõ¢µLírÓ‡øÚº§ý©ú(_w8=›¥§Á$+õ8v aÌ¡öèé+=ž¬g>ô¸UÀS;tõhˆV‹µìª§»Y[Wõù¾¶öê»´Á@ÈXÉn›Ÿ|òÉZ‘Õ³VúÊ) ÿŒšî²Z…•pÿõ¯­Õb¿­GÇÜ‚«Ö\õÏ/)Ù˜ØõM@ß1÷¥eÿô©wÔ¹­/MÓoYZVÔ3‚¢¶¡%™‘w–MÉÙQoŠ3Î8C{ôû°®-å×\£Þ\áÈ”@ a hyUß0%•é HüéóýÉ“{W—9¤çPÛú}ªGŽì¾þúy£F-=á„Á[n9üÔSû‡¢|m‡Õ~YiM=›µÏ>Ú~ ¯ÐRî¤I ¤zµüy≋õáþ€=& (7íX\;v„û‘ vÝ}ï{=ßðzàCO?}à­·Îu_•¥ª“O^ôÔS-ªÚqÇaú2׳Ï^èüym4M%þ©*­ˆHjƒi ¸$>¾¹$ “ÒÓÀNPå©ÅQ¹iª–{µ–é›Ä’žÚ´ ïOUj®í°QÎü±–xÕ¯wP&ú§5W_’ÓгkÚGk×eµWô¼š¾i+g !` DÛ:iõkNKçœü 4tÍu2gäeÇoëcÐç-Þ7—GÔ |zì£eÔ¨Èúî*éTÕêyaúuÖ­ö¡¶¶öyôÑÖýözà×\³üY«¼sv$U-鬕W=vøàƒfIä!C"“ 7¡¤>LúÍÍÿ=ñK©Ê5ã8¼rÍxž¤Ú"À;«¶æ‹l!P&»ì2Lß„¥¹´bºöÚK'Ož·îºÁ¶ÊÔ5a€W®½_™V¯ã¿òÊ+»oëu¤Œ •$À;«’´é ™%pûíz ¹åµ×ZôM±l€fÍìDÕUbu®\µI®®¦‹Á@ xgecÈU&0bD÷Î;wé§ÊyÐ}#(à ­FÂÂX!@€2G BʵU_XüÄÉG_¨òÈ){vu5¿þzȚ? Wéo3·üûßM‹‡«(iL=~Ñ•O]Y±±W¸»„ãúpaŽ7KζK»—ÎøxÆÜŽÞ¿SÓÇFÅŒ* EÀ‹—¾øÂ/^p£þàá>zâ£rXÚµtÞëórFžÿÖü®ù,åædÓè…yv ŒX}/¿–®´’þŠÜ¢ÿ¸kË- Å6ä¸ãÔ|ÎCÅ5ìììùûŸþKä«uƒN9¥õ±Ç–ŽÓüöÛ‹¾ûÝŽÃs½6¿÷ÞÀÓO—R_²ÙfónºÉ§Ò´hÑ SOÕŸä[ºæš-Ï=7ÿ—¿ÔG,¾£¾ lyÍ–oÌy#<Æ'Žyâêg®^iðJ'myR¸¶%)v×¹´³osI_þÞü÷Nðô'Þ}b³7»é€åo7ðÅKïù»=·Zi«K'\êJ^nù˜;YyðÊÏÎzöèMŽ>w§sÈ¢bF•_ÿüõ§=pZ¿æž¯+inj~ó›obn}íÖ}ù¡A­=Š/þß6×m£”öY{Ÿx7j!Pn·®ë¢­yÈšÛÿÏö®¯—~ùÒÓ?yzäf#¿ð—/$é}úuÓ»—vo|ÊÆrþÛq°Ò€½Ú;IÃä>OœòĬÇf 3xÁÛ 6úîFcëÚ*ó‡Ž|¨uHë‚™ Ö:|­OíÉÁÿ[²xɽ{Þ»ÂV+Œ¿t¼/Äh(y”«XèO¿Í›:µéã[žyfà9ç Ýk¯9÷Þ»d‹- Â4çÁ{¿¡8¢Ùн÷n~óÍO^èý /¯D˜Š/š8q骫ªËÖ‡’Ôî<ðÀîu¨¯ëXxÖYýî¼SºÖ&4`Ò$a\>4÷çó¬vý¸õà[¥ó4¾¯ßýõ}ð¯xp`ßž³ea½À¢æ†¾÷Í{¿9çÍŽï}Ï—ÿ~CÎÚá¬;§ßùØ;Ÿy³¸hçýí¼Ž%½_BîJNº÷¤omõ­c69Fk®Ÿ»ös;Ùiϱ{ºŽŠU®æ‡mxØ/÷øe Ž;|þÃçÇ›D¶ÊÚ¡Ó÷]þ^9 ÷ûÃ~ÇnzìnðŸr!P:wî~G:¯¥Ï×A¾9%ø+Yòø_xð Mͽ_Ï—¼U^ÏM&n2hÕž_ßè}‰ãÕ\½e`OªOŸõôèíGoqî]óºîÚþ®w\qÔ¶£|´gÎ{fiGŽoËòuO ÁnÖÖ%ë®Ûõ¹Ï->瞫¿n1ð —–—^zÀ#V_}ØÎ;»ÍÏ=wض۶¼ü²sèÕUƒ¾óÙƒ=vÐi§¹B­;Ûi§k¯=ä˜cZ>•ª.»¬õé§›õE­ÛnÛúøãÿæéÓ‡rˆ¾ªxøf› <ûlÿ9»Äê;uê°ñã‡N˜ÐúÔS.~Å^lUwKW[Mß.ÖG´äÓR®K×Y§Ï²¯áôùô¿úêÅ'œ°\Á‡¼'FýXsØšëŽXW?[{ë:#×q‡~Írêô©ã¯?aò„§>è=“% šzÔ /ܰéo7}îÃç¦<ýÛûÿÝì7;ûá³µé(íð;HÏ9[Í¿rçWœýäûO~þ¦Ï¯õ?kiAñËS¿|Ðråî5¦»Íÿwó-®Ùâ®w9Ïœñ/ûçeOð´>vßöúm·ç=[Ü¿!}‡¬3bÿµ6ÈŸßø³V¿¾ù×}­†üôûOï<¦ç“Š¡ý†N;á–ßb›8;*fTy8‚-¹çõ{¼8aùÊ]_Yï×ëIUÏZ8KT7úÍFÿóôÿ¸&ߘö 'Áåy÷kwë·” ~³ÁÿúcWû…ßAМ­†{ûo>~¡¦é¬‡ÎÒÔw-ízí“×öýþšbu1¿sù—bÚ|°!ÀˆGtÎí|ï÷ä?wúÜ9¯Î¸ÊÀ>˾õ“—>¹ÿ€ûÿ°úîÞùn¿ ýéöiŸŸ6e­)Oœú„$¯ïè‘cùÇiÿp‡ªº{§»§¬=åácþø…]á}{ß÷ðQÏœ:óÎñwÞ3ážö§Ú}ÛÃÉV9 ZmÐâöÅó{~·_²p‰D¶[Õ²ë˜ýÆÌ¸a†òîŸßýììõ¾¾^Ÿô…´ï#ë(W3„Î]vÑQË‹/êµiÁ‚!¬½ó¯¾ZjlðñÇ÷Yº´K²õ•WúMžìõÿío—ŒïYÏoÑ6~cÙG¥-- O?]­Zï»oÀ¥=vîµ×ÒÑ£ÝRå’µ×¶þú„}èAµ>ù¤þ†]ç>û øÕ¯$^]pÅl}ä‘?ýi×.»H¶ö¿â W^ù×þ×_ßµÃÝ£–ÿRΡé£ôG›gζë®Ã7Ø@¿k®aLZ2sîÌŸ>öÓ]VßE²õŠ'{Ïdíæ|xæÃ—xäƒgúìJ»¬$ÙúÒ/¹ò„¯3®Ÿ±â+5@þ ÞY°´sé5{ÿèúà5Ï£÷·¸E³=ù£'·»r;å02nuI ÿn;장ľ}›æõœÁ}ï¹G:{l×Ö[Kz¸ä)ÚÎ ºÛÚúýáú¸\˨-3gv|ñ‹6‚ì_¬×¦Y³–®·žžÄ’½d£$[ûtuuî¿À¹§—™3{lÇ‘Gvq„"÷¿öZ©Ø>î¯a57Ï›2E;hµòZù5W—jß;îèwÛms§M d8lž5K%}ïºkÞäÉÚ;øÈ#;¿ð…®í¶ ¸qؘ´½rÊASV´ÒÔW§>õþòOú¶ô½û»W´¢tŒä¦>V>rã#ès„4–$¦TlKÓragÑiOí«¿*gmU¹õ`“wˆêNŸtkWƒ>_صP]¼ÔþÒ†múVÖØh…ôá»– ¥´lyZö·ïûö¶ýÁ˜¡cõ±þ…](-þâG/>þÎãë·­p(âpßµ÷]køZ¼ýÈOþÉ3³ž‘Ö÷A>^üqûÂöµG,†à) áIDAT—æ§|î”Ö9@buêøSw_cwIÕOòþü÷Ùž¸å‰_÷UyJ›*ìmø°Þô×X†õ¦_æuÎÓ굶ɶ/j¿ÊxåsÄFGxO J@:u• «¼ý§·õÙº”븎›ýÌläÝ{Þ]øÞÂu]w…­W¢}þ’ç?yñ“þmýç¼zI²Uåîé®q£zÞM}š6µ‰–cõÈÑjCzÞáªU¡ÜÂU*‰ê®m`›ÛйþÈE(u¥\s†M«PÛ^™ùÈÈ#ï{ã¾Wg¿*ù8é¿Í÷ß=Ǧgªv³Ëv«nçö —Øï WÐ~YýˆöÄ¿Lum„]üáâŸëùèä¦=·ª¨Ò² "5<ÿÍùÝKºûµ-?·õÑ¿d«öÜ×\â"õ–¿wÿ{ÿ:û_»þq×þ£{ßtF÷Ñ>‡~Ã{‚K¶ö_±§jæ3g=2«ÿÈþZëÕ·Î;•ÿ&ßÏ}‰ëÎuJ 0åÚÿÓ'å;?}"Þíò\t Ï[¾D!J‡*åÚÿÆûþùÏó?Ý `ÑI®iWëÂsÎYtÒIú Çͯ-ÿ³iéò5!ßÄ Óæ3\Imn^û¹¼o[nCÛ|}ó›ó$[?•òñÝ)çîÁƒµÒìܤt›ßy'¾ µðœ®ÕþW¢£{”Ó2Õ¹¤g•⣅ù£Ý Ÿó׊ ~´1ÔGËkhO­|¶YeçŽïÊ—öÉñžÍ<¯Ã†+lxÑ®97­þjgðæ+nî5j}®^þÏËOÛ¦wKCÞ˜I$…¥µy×ÿ> µêÃ7:Kº{öjköø&îw hõ~Ã7H@û* ”B`µ½WkîÛüÜ…Ï­º÷ª~S®Ú³Û~ýÖßâ¼-||-²ÊÖãüz•*íZØåíò2´õÅË^ÜüœÍ78iƒ|`îksmm¡¶öÚ>úÍGwûãnCÆñm¬< ßˆ~ó¦ÏkÛªM…s^™3|ƒá2†o8|«‹¶rnÚ »xàâ¶Í{ø×€ò+W=Õ÷´C õÑGûÿú×’’‹N9E¤:wß]úßpÃ’M7íÚf}ÍÓ’ 7Ôv‚®ñã¥äúýþ÷Ý#Ft†þ„•¾ÍTm¥á´ìÚ2}ºžjjZ¸Päë ¤Zn¾Yãë[ ºôüÊåþuî¶[÷°a=Ë·G!¥¨…ÞÎ}÷Õúî²újþ?hâÄžºcÆ4Í™£ûÏ}ÁjëàV-»ê©/JDZMüY÷á„á[n9øÔSµ}Ó5ê8ä}v¯m}ú-ÿ(¡·ê‹_ÔGÿÒ|z6«cŸ}ô˜—¾j@Uúâ}ƒÁÐ}÷•ä]ÖsÏÿÝ£GÏ¿æmÕ× þú×%…\r‰u¨¢­îúÒ÷Ó#Ä?ý§/L¾ÑF.¾XŠ_†žßrå Ïß…Ê_UÇmvœÔ­ž…ÿýKŸyϺV __øè=›ñãK‰ÊÐ6€ø†ßûó÷ô]N9Pß{ëA·º/jP“ÿ{áÿô”•k3ªüü¿¿ÛäÝv¹qéÔ«÷¹Z›1\=-§í~ç@|bIjõ= WÙJåZÙy 7@€ XÙª•×c=v…z`E¹Æ’£€ @ ‚^~ùe»Úê6 <ñ¬Ôì+Ê¢éÇ?ûŸ &CW€ @ÈM ýÃÞ}ýß_=öXIÕ€½îŠõ}®MÝÝݹ›R @€ JЪêí·ß®ý¬Úeÿ? ºtÊÙÂIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/tcpsampler.png0000644000175000017500000002132712032647206023234 0ustar ebourgebourg‰PNG  IHDRçeI¶´PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<âû!{ï9çžœó½?üîîïY`ߣBèèèèèèèè@ç@ç@ç@ç@çì0Õ««ö•5'Q<œUùïÔrò¸ žyFÉLDÒöºÆ¬ÞBåv^%¥óBÝÒâ›k¤å{ ¥ÕøIö4Lã­jt(G;W-pº{ÂdÓ¾¡ÉV9#éŠÊ:÷ÓŒYÈùú®4¢ó@™Ûó™L"Õ4OÕ+ UfJËk"R5Q’­‡Ã$j™c§¯ü«lus*˜ÒYøÖí@¶ÊªQvw©M:~ÝòWµ¢ÇAéèiy[ýÌufÖ{ ‰J4nÍÝìùžAWƒÒóÏÞ'A§¯Y—£n¸~W§g§¥õWcÕ:=±®Lóålu½â·ÔÞì«6ÑÓ`/¶?î~ÕÊÄ? "ü–ÇáÝ*t+Øÿ:ÿ,zÀo::::•LÁõ–zì+al5sìA;¡ãÁÞéœ9ïÚ-î7–Wëh~mŒ “ ePÂ~Ë€tÿ~ÖëžõÆÉnú\‘ð}w‚.\³A‘¥lhšÇF7±Û££’uç‹‚Õâ<ŒØuODsìùYóÁ'úüleÙ:|&×8ô,êþ ¡+ò 뾡Á“޶]]UŽ|Æìºßb>ó>{~;L¼Yà!åèuŠ‘QC“ó!»,Ú1eu¬à(Û䀀ÌÁè\9Äž#g¦mR¤DA¶øÃÎeºx1Uîá6=ïŸ>üD€=йÊp†xøó_§×Ð'â–/ ä·(ur°wþ9™ìéE:/NÖÒßfì¾ ÎCâd>h&ì‘='‘Ï`ñ7‹sº5~ûµ¸çʆÑËÇF×Ùæÿ|tÝ•ž´Ùnìñ¸bž­ÿ.÷Sþ^WWÀnѰÐZ h|ï*Ñ?ßY`ÎAiøç[¤ wý¯sËô¨{Žž¥NlÏüs*á<èè€]?Ý\†¥â·ø-@甿ž dD½ùQæ‹Kû[Љ ¼ìyf®ú‰Ÿõ,>Êþ'úЇ Ìt1ª^r6…g]"»=îq…—ž¾/‡¸˜ Gî? Áïš æXʒϘåÁÒ^׬/³ÁÍF”¢Î“tUZ†;m–nþ‹Ädópgò¿ðÕeËHg¶áî"ù{, ]1)ehá0‘“|}Z{Ñ— Lüó!”–_%­Šb"‹À*J³´ù'¥‡HKdÌQÔHdX=F|†OÄ-…«`ïí¹C ]ñ: ¢¿E‰kqž-ž”Ã,ýh;-ËÃRq«Ðzö5ô%({^KéZ’äH½ékC\è>JÆÎN /A™ØsË»11aŸ'#%b¤Ùd E2¬ŒÂ8³ïÞvU=“?ÎCAyØsukÀ-^7“aÆ/ÌX6ÙÃr=ôgWêó[GššÎûÄéùVt&(Y>]\‹ÍÀï¸@逸 ¢ýs*À?o}ì™Ïᣃ’×9¦=• sĪðÏ€Î€Î€ÎØÍóÐ=1xÁ¶b)MÓ†lmwð½?Øÿៜ‡P†œ‡Ê·9)å_&¹ŠmNˆZkÕê¶Ó¾ö^çT¨‰ +À­Ð äí¹Ó)=2õÁw¤`EÎCÖ³‚m©D½èAPž~Kð¼I‚1t/ܶÛI κ[Kxî/¹”ÁïæŠ9¯ë·qJùf]Þ¥=n9€Ñ’Ï—órÈ£HÄíJHûI!0`·už¤Ú•uýnEºlÖî[IØB‡HöTü=Ö'ä@E>ó¡'RAZì=ÔÔç#_¿À(mzŽæÌ‡¥ø®¹ù‘3Ù¦áE ôXº¢°:¦•°—"¤)Üf„I«¥[¹U#q‘è!m•SŠ'Ú¢º°@iÊ’ç?~Ìæ’¯ò…©†^§VÕŸòÈpTJÉQ7ië(¶Þ`Çuî¢InÊ?‰œ¯/Ø–io'î¢ ä“Ä•"áŽï7Ðy²¼ãY"«£ÿô礄4Štü‡)ä‘J~ŒÐßQû1ÊbÀn^oQ¨¥TrbJôç…Û²'óÑúCãòÀ¥AÅ­¡&®[í?ÞJô8t:ÍíØÙñÃ+Íٵ٫ƒ°'öÜ<ÍÅW­Ù6R"m÷æó&dŸæ'Ô™É'&—Ø“÷bµ‡Uí9¦ª/Œë%åðßχóP°ö¼¦Ù®›6Ù6Ìøiº!Ÿg›˜ãî÷ñ? Šrè¢ú‰y[4^õš¦lÔ|Å'ÖÚò…•¼V÷`GJÈ=â÷Š`iXÀïA¥ûçT‚¾‡´áŽ"°ÿunARPöãàŸèèèèèè€íc£ïCó\6%”nÿÏþÑ÷HÔšÕèÅrEé-ÞIüó_nƃŠªq®üo¹å|IY»G:w>,âÐ å6ÿ[Ô©ŽIL2W¶(#½q~¾hKxîÇÅÕ¬]ytÏý\ØS¿e%ÞŠÏK—¼÷Ãv;傳.ÿ¥YÅ$(NµÎÖÕ˜.ón»¥ûìq©KYÀ$vå`Öíù¨:÷Ý ºpÍE¢ð¬+ 屇›yÊ÷[·Wº/'|·¶0ÏÊl%íqñ˜=Š&.Ü¿Ï]pÉu%¼÷—(ësó(3^×,Ë«¾»‘MŠì¹<¨^Ùš³h²©û|2Þmù|ÏË<ôV´ëÖß½2cQÜ:ꜴÕð˜.7…“<õ½/LöþÍÑLïïd¤rü`Õäk%‚4xñHK,[ÓLãñ#¿8Õõòœ¼a wÞå†r¿äA>äþþ–OüÎÛÄcüÔqC8ÿ,Í4p,¬æ™»eOµ0MЩ «ë‹Ç§›ÂÖËu%mǺPïÍ+9?ð›ì‰é& %;¢OÛ¦~‹d}óÙ­© ¯HñVjÒùäª3Ri玦¥ÂîO;íÌÄðéÅŒ ¿t %S–mxßuæÚÒ±çÍÝ͇~vvKg·OÕ¢ó°é]åçaËÙâ[;Î=V~z™{Õ‡º¿¶•¢}Ûð¾›{Ï”=S¢æ¥—ˆÄPDÐ׋vºò¯ïòžûz_´6ž²,ÔÀûöœóeÄ“ÖN/weÌ&›Fð/åŒfé~)ÿ’h6±£yŠ ‚‘’;f£Ê=Åê)Qé¬Äû2ˬ³ ?írT•‚þ$Š>ÿC[U.¼ÚÿÛÑ}¡‘ÿ-hx5Á¨ ½–[áœYg§›±ôÊæÂQ¡ºñ‰Ýd-‘ô¬BfaYÔøŽ²¶ÕM* °¶,üD_xK«ä­èo{t²Îž×Q§‡ßÁéj¨ïæF÷óÉÞ4ez/t5X{xоY.:å·Ïy͇žèãrlÃgþMóгè67vE¤ë;=f['_{«±¨‘U0“$°ÞµšºÃR_\ ï#÷ç +ýÉLï[½!Š®íÿÇ$¥Ü±é²È¯%eà‹eËÐB~ £]õM}¾Ã´jK3m}­Ëfî Ñ\ÿÖs\isŸŸ‚ݦI/ó]>oE;ä·ÌORÿ‰ù,}•4zf܉´‚‰–x°ƒÕiy Ò);™ûù¯í¨‚Ï¿—ÛÈ|úŸ¨é/Ø^ú:¶¿ôá`ºG¼ï¾]µÚ‚e&ÍY±æ\GÇÚ‰˜Éßÿ¡ø½ÑÑŽôq¡•À#ìÀmogûsÓ@â“Rñ‚»Ãí®àç,•kÍí®ðÕï±´'©w 陋ûs…•þd«<øÃºþL&è’|à‘J |Ð ¹Íay Ev,l×çíñe7{_âï¡~¢ï•{܈ \×Ëüýq½<É[VòVô·Cþ9 FÓ{g’…Á*)X…ð­µÁ*T7ø‰Eˆš¿ýfQºAª]iMv€þ´‚½Ù>}‹rUëú^îÏ‚@«c’•öÙÞ`!u$Ÿ¿¸ÑkQÆðÈÝÜv ]cJð ¢¬Šµ\ÍßßÊ[+Œ±c~‹ÇþšXK:æZ$Óv%L’é]¬â¯(ž*VarHæ µ&j˜†Â)Ð"[‹&È´ñÇX%»èô-…óaß+ZêOÒáµÅýIV¸°ÿ·£û,ãá\Â>OÆ‚×R8†Y6†E‰SdòØMš&£iå=xŽ©êi”ŸÄÙᦥpJXw¡èo»t²Nçþ«_vÍ]«'ÓõŹü þ*VaœùНø–‘ßmsø¾_\Eýù‡ùb¼+¯‡o ¬Å0å=ÔOÌ÷ç⺘u‹Ó÷7èÿÇCÝòM÷Âu¦åχfÖ£úk¡{l ¥6›©a|;~ng gù{hºâ~Ÿ%Uù§,dýRÈ¿ª–çš²éoØb\‹#XI¿WlXhÛÓîãí?v\‹Gorós•­_Æù´otsÿ€]b|÷¾‡ÎÁžq˜*GçmAŒwyußÞŒØc¶º×:·ÜVË«ûöfÄ·Õ½·çk™u_[9¾QüþTÅö¼s U•6ÒE:ÇLB•BÅt5|e¸õüsè€ýÊÞþ.·è·ó–rmÀž?ÓMóMå±SMÜ\mà {.Åî}·ºÚ¦ÞÖúS¡¦ÝÖ=9ä`>µ’˜ GQkªQ6ÓþùåÝÒTÅ# « †Õ¿YùúÙ_ã {Îp~¶±ï+Û[Gï#ó üO. ë‰î–CÍgó›'òA‰×„ïq~¦êtâá¯@ª_nà ËÔÒ÷Iô»]9ô†Ä¯y]³YÊ]p¹üRL>18ëòf™"]³a^"îu%Ø"áu/‘˜uDºÄòæ³.niy-·+ÈK.ùÜñ‚ö&Ä QŸ#qb51FIªu¶*íÍJ¶›Ó'ïœuËN·øß(*µsA h•e¯Òï°gèØ ~_Íëåv0ÜйL‚Ôì±6tG SŸé;КZ¤è‡¶úɽˆtÙšû|ìVÂ>g¬ÃÜü&mC!ŠtÛ¬Ý!:ÙýAë¹ÅCJ@Á`·©¾K :ü\AÍýŽ‹G³Ž‹ô‘c`5±ŽÎÜçñ2åöVƒ;‚‚Ô¶ÕÜ% ýÛìõžêþ áCéÕΙ=Ñü{ŠÓï“fµ6GÖ1àèg¬Ã ËæûóÓL;ÚZŠ;™ü¸‰&ž‘BE3BËÃÇé= ñ¯†Z)F YMË,OÃCÿ&Ȩv6­?T§¡Fޤ›÷ÏûÙƒÉ|²ÿòj¢m’:>)hOÆ8ÀÛº@:½’*°—'£Föh¨‚s´¬¥û8(ˆu×ÏêVnè\òxoÓ]&Õöcű‡ßŸHþbœ¥»HiÉ­–Û~“URI)”°X˜•:J Á‚2$•\!ÑEúÍdÿdÁÌ ê–÷.ÓY[A{2æ#üHù‹|c’‚e§éb»`6Ò‘n ‘Ú‰DnérUá¡4Ù§<0ܸÞ"¡±žþÝ7Tôê |AÃ9>"ÅÈ~F¼µt–û ùÀÄŽ!)\ðÿåaŸ×E7–K ¢(&^  Î'û.}o|h²o¼«àÔÑhxï xq dñ¯OKUå&•F—™‹ó…•B!ú5w~4g§Ï_/Ø«w2-Õ?4™ÆpÞË&¿›ÕQ' ìt:™³ž9ÉR½íUõôE2ð ÁR`b#%xÐÞë<ì³aMFŠó¼kô=!«›Õ¹a€è¾)¢ßÔŒL÷M¬&zí)¡–´ùöÆWâë¹E6Q¢“¤ˆ²Bˆôr;RpÞé\\jª·(ÊñtŸ\?[b¸+–ª¿²úCz(×;ú«ïDB\/ªÑ%ë_Ò ÚÑHøkߨ®ûÃ`ü«\·5\z¾Y¨{&ºô “´#{( %Oû/["d­ª~*n`‰×¾)(¹Òdòï³==w²wú'²w>³rîX÷å`$ö'¦*¥½Úói½üòú ½ ~6ü+Ûüá ½ '©KËýƒ/ÄTM/¨F~:Yð¥Sòÿ)õ³¿Ïh0àJQ\è]'¨¯ÊVe§{ùsl{¾”Ï‘wàvžƒ&¥~ÖÎ)|ïï‰Î 7¶G„î\Á·¤„ß·€ ÎCw›ÐÝÁo”ýy(Ð9Ð9Ð9Ð9Ð9Ð9Ð9´Sßa9P ´Ážø-@ç@ç@ç@ç@ç@ç@ç:::::::::Ð9û’âùC‰ÖNÃÉçÿ¤•9<Æf  4tîÜH¦rÒ ì/¿Ežÿ3íòP®cÖ%›yyOyPFñ|¢Ê¼¡Yþ@™è\žÿ³ÆÐ‰¥ÌÊüŸÒžÒ Ò|‹kç•æ ÷YSèOP.:Wæÿ4;¢ÁÉ¢9¶â|PeîñâùD¥yC£¤EL}P>~‹<ÿ§`©+Ê]ÎϺn>QiÞÐô'(ùóÐåKr^:z9»dª*ÊÈϺn>QÎÄpÑ‚²±çÊüŸ'‡nX†Âùù?ùžz:—ç]7Ÿ(Ç@É“èOPšÌªÌ *Ïÿ™ù½ÉSµ_8÷õÚ§âÜIçsx^ûN$þ IçÅó‰*“‚V)jø±27¨ J€ú•µ™WqDA)€8¢ Òýs s s s s s s s sƒÊ¤zGjmCÇØs s s s sP~:·Ûéa‰)¯kÖ¿62ãÒý§}î›'íݤrv˜­~Z4 WfNÓôƒ7§›Š‹,Ž¼ÚøÀÙºød^˜Î ”˜ßâwφ‰²óOG™–þã¾§ù4-1©^r2™‡g]n£žûKîº(°b¢÷~DÞAÞiÁC™ùߺ<)i2/žœuË{yïcæ.°Ç:ö˜l Ÿ{+¹bÇÍw¥ÈæIº*m‡;m–n>]¢a tP1ú‹}ÆLa=ÚZÔ}¶¥ßwX)鲚ºùîIy~¢!”¶¿JZÅ,D¾ù ¥P‚ŒEΉV –t %ï)äi£˜‰È,вÒ(ÛÎS›úç…9Ë$rY ´:Ñ“DÃ\ÃŽ!QJ|}X)GÒD\wó…DÖÉò¢§¯Xi$¯þ¯gYÎa‰Oa@ÀNðË­ù-Õ$æ$çĵYµÒ,s\¨,O½Ñ~|F£U  [ÝjoQNØ¡ßð¨þ¹†¢ 2‘ž’µY–wcbÂ>OFJÄH³&³†b!Iî™àªô³’'ób¼A‰0«€=òÏóðkÜNËL8wÃH÷§ƒFš(ÎW·Ü/^³aÆ/̬·~:úl‡ÛŽùÆ|’Ùáå“y5Yà—" 3‹ÂŒ ]v‘¢y¸~¹¯Ü~ð||ªeë5ºÌz:¶öÚ:»îŸ?õ(:‡Ó‚º±jëÕ§³¢Æ\ƒ~%¤ó‡žjµX}ít1(ŸóP s s s s¶Ÿíþþ=ˆ.%€e‡uN èc°ç´Ýiƒßö=Aøçç¡@çìKq'|Àž°otžê˜uys$úÝ®@Žx_‡ˆÂ½DY߬˓`[Kw8êj“xÁåò_B_‚òÓùbêPSß{¬ ÝQ¶m¼Åž’¶¡-ê·ô?Ë…¦¡Îï·ˆ!Š|hû çú”ŸÎ—ɳüQ+%H[KüÞÎ:~§…YÍÒ›j‹ô:ۺŒ¾§¦˯3R} ÊGçò ãÔ0>pÊû6“uû1é¾})ŽDAÑãY+ ³­A9å<Ë?vQ‰@I²þ{Qàá,´ÿx+Ñã`‡Á«ƒkòT?¹vŸô$('{®§sVô仨ö°Lufì¾5GF¶³x%Rv/ú”=7Ï‚âuÙ®Þ3MÙèÖõ`öªµ¸Äeqí> ªéô%(]z¿ÿ#ÄïÁÞÓ°ÐV¬f|O*Ñ? üóǦ wý¯sËô)¨{Ž>ðπ΀΀ÎصóP\T%ÁNÇ)Â×þ @œ"P NÀy(Ð9eËÚóP;Ѹð£ï>ªüíäD_‚r²çÎæwýè°¯í9ÇLIÊÎ//×™´‰HRUÝX•YX5¾£³FKäÌ-m0r˜‚QAgefüÊrk&¶¢#AÙùç9Z&Ÿùࡾ {6öùh®ÿ@ë¹FªKP‚b”¬£H—ÅÔfeõÍíµ&Ñ‘ Üì¹%#µ¦‚ J3Á{Í $Òü [™\êHRÌÔQ˜tÅLD:‘ _£EG‚2³çvWðsŠtdltžlã§î-QýDß+î8ýÛ‘ÐðÃÁa5¾JB‰DÃ|€r;=üS…¨‰›zígn]ò“î‰ÛW‡è?Ó×' ޝ³)'P¼Ã¾@¹ùç’ ¶ð­6PyŽ©ê™¬«énPs—-ß ¥0éå¢ÿ•’¸>ÊSç¶#¾_\}Æ3ÕHMW|£SõLðTGbKÃçC3&¹¨iú¹Zt$(i¶9NÂRqŠüö)Û}ŸÂ Ð9ÂʰçèRÿ€°ç¿D‡€ý¯ó§Ð~ Ð9Ð9Ð9Ð9Ð9Ð9Ð9€Î€Î€Î€Î€Î€Î€Î€Îttttttttt s s s s s s s sèè€råÿН'wöRÙIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/response_time_graph_settings.png0000644000175000017500000006736012032647206027046 0ustar ebourgebourg‰PNG  IHDRgé‰ Ó³bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ  À.¶, IDATxÚìÝoT[×7úßÙug=³î}ãÕÔ ²£ä1­]¥I›b‰˜»!%Ue·{2ÄÃÃãŒÓP 1$v¢È3ý“)²â8…Li›N‡º qˆã( #!plKã™gõ&*nHmÙȽÏ}Á‹{gu‚tö¾/Ž$ô ûûYz!ŽöÙ{Ÿ}Ž9_ïsŽÔk×Õîx˜2]qGñºgŸ}cY¬ÈòÙþ®ÿuclä‹M_ÿñð+Ç—lW÷íÞƒ–SjÜßõ¿^ùÇn€-ÜýO§’"ã’MfK9ÎRcÆÈøá§ÿï ¶µK92,e ‘òNˆŒjEî‘QˆÉa료ˆ8ÿÊö®nýmÒšâÃWwú‡®—÷ÜI¿yâ|´ÚgÆ+{n¸{¯>VRˆ_mê¼D[ yc¤ –BxGĹ©\›aŒ˜Ó2Zîñ´–²ÒVÇív»zÖsî°ÌÌG2æ!«Ëfbl¼û˜/~ݲºz4ä_pc¦F"újÃû•œ±? øH!&ÿ|™8ÿJQE–'¦Ì.kÿÿ^¬+Èœ›ì-‰‰²H]œR¦¾ºˆ´å&ÎÉ1K“‘åJù¸å7ljT‚c×±ßUó¤ÜÆØ»ÝXÆ£?^ú Ó±„ â1’tßήf5çlâÈ©üÝ¿>„ ám×ëõúö´ Oû›ôz£Ñ»N €Ô˜†$­®´*ã<×}™8ÿv/ÏÒÛ¶?ûæû•œˆÎ´e|"'Ÿ-Ò•›‰1çèl…غý¤ièµ™8ÏXN£^# nÎÔ(ć¿{îÍÈäâ|0Æ}ùÎ/IÒê{Êïbì]‡3W|MÑ—‰hâÏÿwÚsIr‘Û(ÿý?"78&¸ë‰Ceœ+}˜?í#I÷)f0ðQ±º(õ£‰À5"ߨ“1*V«ðU;pcÉõjIºoçÞ+‡v<yx¹xÏm5«$‰ˆV}ûçW¾ÙÝûw{zc5¯®ÜÛìkêx²òMþí¦ãOÇÿ¸ç͹´xׇʆž;XIÏ*zæL4¼*V§»¶ïôaž$UM纣Êb5:‰ˆ#žvt-v³Óê´TMh4ÄÆ–*:èÞ¤|:b«êgin‚Xþ¤ÍóÛÇ~KKø¯Â(_µs©êÐÏî›Ãê¿zõß^lúúv¯pßæ?`KÓ /¼°bÉv.aZñËÍ?~¢; àzYº©Qù2·äGP’t­O+%¸¡áëc`vÒfƒyÝæ§c??¾sà ¶…¿zõß°›æãâ/E®P¿ò(o–àÓ0óÛ4˜›-Æhj¼ñÂbÌ ¼i‹÷5Àìfž¡^·2Œá€x§"qs0;¤F@j¤F@j¤F@j¤F@j@j¤F@j¤F@j€åjÅÜV;üÊqŒÝ¢Ù·{™äúF‹snï‰];1è‹à¿yƒ€LrÝ£ÅÜSãç?‡«Ûpý!“,¤F@j„M+$ \ÿÔˆL²ÔS#r=,…ÔˆL‚Ô€L²üSã ì!X©™d‰§ÆP˜çU^ˆ±îk~›ÍìWοû³ŸÛ(I±Oß¢êØ’¼ªÃŠYºÇùWŸøçGÖÌë&‰Bu I®¼ñ÷w|\°“þM-æ‘å|÷—‰8ÿÎKg-÷I’c/Þ¿wï}÷¾ùë«%¢ûž;ÿ4q"‘oµD",óÐ\GPL¾Þ°ý§ÑÃ/*}»úæã¶Ñ_Yî›W -@Ç °™Dˆ«o>^ý³îVHANú7I´`óÙCy¾mªÌÃü¾–—¾ËØÇ?ûíXHæÓá³ö²Òò2Û™°’ùt ï{e¥[6mܲi£²0Vàõ×Û²icyÙc¯ä¤j•2ÊZ[6m´Ÿ•§Ã×w—Æ OŸµ•ïî»–“úvö·?õ3f~é™.B2sÕwñl 3½:k+/³†Î$ÕßóLûÓ±¿O\žß ¿ šIÑ—T·òÔ“~¶èû^4E(ÅRJj+7d´˜Gj ‹|_Êb8¶¤ä›ßâœNž:âñŸN‡Æ^z¤ýcúî?yF‡Ï¸N=û ™”Œ’ôž}cw=—TmX¾ïÉScƒÃgÞ;úä:ÎO¿0Vi+¾ÊØÇº,BaøÓ¿R±i•œÐùéÐØé“Äù¶²’ô}fìä³#ßtz¶„oLª?ÖóL‹,?úäWèÿŠ-Ïë…ßÌ$aù¾231vòÙͻ߸Ìã—gJCL†Â"ð‹GSÄØ Û»>úêö'¿B'ž}!ùü~£F‹ÅœkŒL«Ê–$½gìäÆ7qù]&â|ë£ß½-T²ÙÈ99N Ëi« ÝzûÑ…·Ügø2çïž ÉE¬ùýáÒåépà¬ç£;×ܦÌ~à ¢/•Ü~'M\¤œßoÈh±˜÷5F¦UåèÅøÈ’¯Ü±Jæ!šù4,•>ñ/O~ú?_þdüåï_®ú§S:)auÊð^’Dðø³ÿóåO#ƈ Yæ¡UË¿BãŸ\¾^}ù“â5«xH–²tLˆþà>mûá¿î»—RúœZ?åб”z €©1ßU¾öäýÍ“Ž½û›‹ïü éŽžŸm¿-mŠøÆæ*þ¶Ëñ¾·yË%ÿ¶²oðÉ$Œ½ó#ã;Äù?½"ó[âÎï7j´˜û\cXy¾(zbôå}ˆ1úïê[8%}*ߺÝöÞéçäDä:ð¢7Ì '¢¯ÜùÅÄjCá«'í/_¤»êu¨’se¡ÌUßøæ]ô‡?]¹zöôßrOî¹ÌKuß"Æg¼©ýLèUÚúséXšmÏù…ß…Î$‘„ðÐOWrNøÓ•Œ)":Þw}+–"V¯þ qþíç#o¼{êÍ÷ö%¥‹5ZÌ'5ò|_"ŠÃ2…ÏõüÃ;œ›,R?U^w7ªàœÖß±j¦ÀÄ•IöžfŒî\s ‰+^ üˆÖÞº*¡¶/h+¿Dïœ;þ©zㆴ»»ºi-çCÿð¢/,'õ$±WéëÏ¡ci¶.Ç~0“„Âç~ÞòÆdXËÑw$i¤?˯Zs ÿë»úhŠyѽ›ïbìÝco]ÍÔÊ -æ~…:ÒÛœE§s‡¾ãT–ðõM/ª¾M,Dt.—8a:ÿëï<û¾òýFt×ßµVß"HŽ8{¸âwdœ›žù¾Væ +rI·ëGæ‘çö­Ÿ~i=±?:í[é™·ŸúÚª×wýnžù¾H?V·ÖüèíÛýg#}cŒ8q.dš©\–ˆ(MýûOlžµc)õ@Áä™It»Z?ÚZñ©’4¾ÜøÒ¡ê[qÊ"6T®ýÕÇŸÐ]E·Î¤ˆ[¶Ù¨8üëºGMœ›žyû©¯']&¾£…´Ù`^·ùéÇwnX·2œûj‡_9^ûÈß,æ!„÷7?{ŠÌûÞjýZž×ïÅŸûŸo82a|á·º%Õ±\ô{cßîø°D2ÉRÎ< -.N­ ¢ý Î}®q‘/ž Á•öd™‡óûã1Á¡Ÿùc[JK¢ÏsîÄ vC×’‹w…zÞ´uÇÝuD$Hy5]TÙæ®\À>ϹcP‹žI–læYª©1Ì‘àúC&Yê©QÆ€%™dɧF|) ,…ÔˆL²ÄS#fƒ`)@&Yê©q轓>¸îI–tjÄ7ÀR€L²h†©©©©©àfOBxÛõzƒÁ`0ôú¦þ (H…z}»Wˆ……Ål àæM"Øß\eqÙær¹Ýî¡!+Ù:–TKÊ…I?J’®ÕãñxZu’„c`¡R£ïX÷8cf{‹’º$IUÓÕª“¤™pæm×ëÛÏóó±ùHƒÁÐîMpýýMiç)ÍYæ/E°¿ifŽ3 ƒýMúØ!¼U'cŒ9-Uçùùø•±™¥?±ùT}SSS|MפÆÄÜ&¼£âÜT®ÍÐsZFË=žÖRVÚêñ¸ÝnWoÃzΖ™ùHÆœ#duÙLŒwóů;BVWoƒ†üñËcMwÔuû£sœ±ÉB_G]·_Ó`kÐÃÒá“$]ËÝÄ9ç&ûPK)+ÿ1íübÚv}'c&›kÈZ1kn$+ò*=88˜´ä¡‡šu-ÎMö–ÄDY¤.&ò'–©¯."*7q‡Ã1êmÑj–«‹‰üŽQo‹65“1æ´4«vV«$)–b‰ŠÕZu1‘"Ú¢<Ç%µ]-] LçëÕ«Óô?©iÇ `騭­ššZ¨Ô¨4ÿcjcÊå`™íC-©“"Øß\×=Î1F|¾[+Iº–£uÝãã=õÆ“ÍÕª“b1ÎjtcäL`l'~"*VåÔ‡¤X:úúúò]eÅšIJŠ’¤+7“ÓéõµètÙV"8`ëö“¦±·>Pgqd*§Q¯Î=8ªjº<5Þv½ÕÉ–Žò¡-­Vkˆû®>/è­†©}ÐIR^á`‰+ÌÓ0ÚG“îSÌ ýtM®ùFŒQ±Z•ç­Ú»‰s%nJ’ª¬BسwàZ\‘ÕjM´•4?æ %]¹™sŽú"78féRcºD¥ªé²›Éa5Fkj¢Š¯»™1§¥ªwBC±G˜•OGlUF«3ÍM™Åj6­Ò4Z#·ªjºl&>ÞS{¨Y’TÕÖF ù{êz}»ŠâÌñ©g%:­ÆÑr»‰óì}¸‘H› æu›Ÿ~|ç†u+ó–Ì÷ÆÉ\’_ì>Èåòô±rw¦ßl÷´êp À²“{¨»8µ‚ˆö7<º£–oÀUfR¹¦ñhÎs¢ËÝõOÊßei]ƒµŒº PX CH€ÔH€Ô˾yòpø•ã„ÜíÛ½ƒHp“jصƒ‹žß¼ŠA¤F ºù&Þ”™³¿Z»!Omû¿w“léÔÔÔÊ•+‰èóHH™~帑1×€Ô0;¤F¤F€\Rãç07¡¹Ï ám×ëõúv¯×¥ë³v@o{þÝ›ÛZDtµ¯¾¤¤m,iéX›V«ÕjµÉjù¢›ó9¼>»ôÚÿ(©?zIÎc•ЙçK~r:$Ϲ@A^sn¿\©qy$Kám7­è$)¯%I÷Hã„Õhl÷æÞç±¶’’ôPMêâžµ'|>ŸïÄÚž¸DY¨åË'5^:=ø1ûè_O_Ék-™D8ó§!ù¾§ÎZJd‘6굕¶(PfïR# 5Î%ö÷7 ½¾©?(„ðvTYœŒ1æ´Tu(ÁQˆ`“Þ`0Ä¢äL²ô¶WVþS{“^YˆD°¿I©IxÛõzCÔ¬yNo‡ÅÁM¶ÎêÉXåʺMýAìoÒÏ´i(Z¿^ß>YÝi3q‡¥Ãmz¶à[vàÂ…ÞÚ;“CãðÅýmµkˆˆÖÔ¶í¿8²­(q‰ò†O‡¯\òô«úÍæú—ÿ×Ö#ÛŠ¦Ãü º*î9s9t嬇6銦Ãü³À±½•÷› ûÞKìR#Üä®Ã3ÔŒ9­F'1¦„¶¢¤µå&îp8F}-ålºD°¿¹®{œ1bŒf9#OüyôG’t-G'êºÇÇ{ê=&›«U ˆþÀ$‘ ‡Iœœ_âü™wiø½oº#^œß£½—„L",óP.oVmÜ4ñÚù+—ߘÐï]ÅC²­9‡u%I!ÓÖçû¾¡ä~.B"îÓU7ÑkWäÛ/“þ»«øt8è´»7ýúý¶"ï/Lï'U…½7³Eþî½Õj qnŠ¿œšáÊÍĘs´cÔa.W °uûIÓÐk3qžK+y‘T5]Íĉ(áò·F½zîYsñÒÕèOW/]¬©,+äòë#,ó¼^Á·þùÒ㯾vrXyýìñ‰co] Ë\ÐÄ•IöžZÇ*™gX"d™Ë¼ÈX+Ž›ï»…‹øÊ•ÙßÈ\«}ès^žvE™Ý»yâÜ˧.E+—ÅÚ[W¥¯*¯~¹RcÞ1‘h"pMI„ª² cÎÞk³®ãt:gf#Ó‡É׫ÓG@I¥.&Æœ£yÞ”¨m±›8$Eߨ“1*V‘oΗU®{ñ@ßU"¢«}^\ {…Z~]È\äþ ËW½§iㆢؒ/l¨¤Óc“²àDgWìü±³¢¶úA2O¿„++Þ»ùöñµÕ梤úc’Þp¡Ûõ#²o}é‚Ìe.îþþ ü‡n«ü[óaeÉLÍ\|aõÚ—óöÕE2\¨¾¾ùÓCßÑ×n=ÍtØ·¾tAN(œû ¿\à³°W¨%IUmm©ëî©7v+ÏÄÔtÙzkO½¡‡”§d´)k•U¬ïöûã&ú$I×b7;­NKÕ„FClÜi©¢ƒîMÙòŸÃâõ¥©=EìYo"â¤i´V«$É;êàÜloÑå’=ÇÚJö¼Å1zKûç¹p ŒˆÊ\ 6­VKD_}údo,ìjùuJùW_èJXë¶ê¼@Bx­ý®½ók’¤|*%-!Òí:¡#A²âÏ€qó.ArBvà)od!èÞ§~{‚"ïI·ëÄð®ÈþN,FD÷>õ/OÅ:ùEs׿˜•¢Oíú>Ñ=ñ…nVÒfƒyÝæ§ß¹aÝÊð¬¥kkk§¦¦–þ†)÷ARãÑ®š¼ïK ö7ÕuSãÑÎU¶[ÙbšùfpàÅ_¶íÿÞ¹cûöìáíÝ~fÛ{LKâ ‡¬iïˆۖӅÇß|sßîøKSî¡îâÔ "Úßðè û%UM纣꘷º%¯ÇŸ…ðë.Ž}U$)еWmÝqmâ^ê’˜¢Ê¶— ×4ÌÅüw¨%I×êÑ-ÎZ70¢R#äkjjêð+ÇoªMÆ„R#ägßî+W®¼ynmŒ¤F|§ R#äkY<TX¸B €Ô0»¡÷Nb²ÁWÉÜ´† p…æîfûÖ!XjRo›Áï¥L#€Ô×ÙÍöÅC°tLMM­\¹2õ»,ví¼ÉG¦ç7¯âð¤F€ˆÃ¯Oû׿Z›¯fóy¤F¤F€Ya®`I§Æï>ÆÍ¹€Ô¸ÈpŽÆà,­ÔHDO>^—½ÀË¿:Šá€…OŸÃ àÁYûÙÿñßVd%•"Øß¤7 ƒA¯oê.È_7ÂÛ®×ëõí^! ¾n^•ϧ'K§†ÜŒµ•´%üX¢Š~0³°$¡p¦Jr5æsx}véµÿQRô’œÇ*¡3Ï—üät(Û*Ÿ}ð­V[Rò“÷§G•¹¬5Ï×üÏÑ‘³†·=zš^èGާ°än¤]¸ðÆÛ®˜¦þ`a·h‰+Ø\ãÿùß>Ÿv¹V«õù|©‘q ¹®Û¯i<ÚY£’„4wx;[t’„ßw…ý7ÖQeqÙ>Ô¢“$IÒµz<­ ØàÕ¾úm/}ĈÑ[Ú·øWŸ>Ù[»†ˆ¨¦Ów ,òyÛÙ õ—ë÷Б ¾²¼*È55Îa­ÉÓƒ³ùé+ÿM®¿r„à2‰p˜Og8y 1vx¯8tf¬T’ˆÓ†³IÓѵ>£s‡7úæKéŸû2£³ö7ÕTu¹TKãÔ,IºV.zj-Ÿ9¯é3ÀD™m®íµæºcÞê›(½l®ñÿû¯pêK«ÕÆ>JúçðQ±ºH9T5]­:IŠÏÝ+fÈ¢ÿéiêŠ`“^›¤Œ•éïoÊ2y›àŒý·)¾òY§“:hNj4µ¡l¿w‚ýMz}Òÿçf­!So{¤ªÊJËsU'cŒ9-U^!Rçc…õíÞø-MÉœ')×Ôö^ðu>üðÃõéRÓÞš;×]ùô÷5•es­ «P˜çûš>p}É6òÓµ¿=’Ca>:{è~Û¡ƒ¥”ov¾nooÏiïgjüÏÿ ÿç…(ßø@ùÆØ{"zwhTù1é åfbÌi©jŽwÊd˜Ûívõ6¬çÜaéˆ cNËh¹²|¼§¾ÊFÖ£òwÛ‚qeFÈê²™ï>–æÿ¾Žºn¿¦ÁÖ !‡¥c¦€R¹ÇÓšé¿ Ù;–Úh¦†ÒOÖuûÉls¹Ünw¬³Ö¶@°¿ÉâÐ4ôºÜn÷ð°ýàÝÄ9ç&e®1õÿ‘V'3Ù\.›‰9­ñÓì‘êmÐ?íHf6ÖÖ³¶þ@ýCƒ½i®/_½t±¦ò~*;prmOI}ßÕ9U0Û\cÞ¯sG»×nùº\ºÑ|âýs‘…2ËÏ8zŸüä×Ç.…ä K„|ëŽkÛ_SÖ:7â0?¶õV1æ!¹´ÑóÓùÖŸxö]Jáp¤f!'~úY(püy×–£ÉÍ Ë?xoøeõù\¡VNÄY^©s¯df'õT84T° …ÂÛa!›Ë¥œ¼„ØF*޹z&zgÎΑ“Ýì%#du¹ld‰$ÂøUb}h²›Ïk’¤*« ‘±kDtml„*ÊŠèZ¦žÌ3À$ž‰Gæò´›#DpÀÖ]l*'GNÓ¨ ømOjåZQuçÑŠÛ@P_G¯úhgJ)é òœ6üº¦ÆÏÂÿùY8öþÛUå³” IDATDôÆ»§”å±bt­›‰36ÞSoL3‰—ßœ›ì-Ze9ç&{gu‘RƘŒ+S_]DÚrçäM½ûaÔADÅj­º˜ˆ&±ÑŒTž‹tKj4KCwsZšgöî¬5¤- DplÄ›ÁíÂJplÄϹ©\KJçý#cñR_]ÙXǨ´­O–T§ì@oíZSÛ{ n2±¿Y¹…ñµ)‹×Ôö^h£%¢cÚJ*5~xúíËtÓa~wÙ¶÷NŸ›óé°à´­ô^>½êö;üŸ2.¡0¿{ûÞ‰Óç¦ÃüÃÓŸüýv]\Í‘‰ïSßðéð•Kþ~U¿Ù\ÿòâš{d[QAîkŒ‹3½r[e®Ëh´:üI"IÒ=Ò8wþš øý=õFc}?îìL¹–4×We^%ëɹ¬‚FÆ‚" ™{2ÿ£$3«ÑXÕ«> ©ÍMüfå kÎ`SG#m+’ª¦³>Po4Ž–Ç"#™ËµDEêâÙ6|Vð_iìýß|û"úÝÛÃÙo.ѵz\-Á溞q§¥Y}´³Z%I"Øß\×=Î1F¼ð¿MsZNbL‰›E9¯˜oÇrlH’t-G'êºÇÇ{ê=&›«U'åXCJ庎R ç9 ùˆÞט`Mmï…Ú±¶’ú>ܹ’ó;yqþÌ»4üÞ7Ý‘ÿ7‹ó{´÷’I„eÊåͪ›&^;åòú½«xHŽME HÒÌûÔÕ#Ÿn}αïÊιÅ­[ØstnV«5k¤S%L7(s]E¾ŽªQe¡ª¦kHÝ^Õáó´*÷šm®ô÷ùe/™6¦¬’=6›$u€*‰œÉ2ödþF©œ:ªŽùª£]›}s²Ìã¤l–vã7êZ`‚óõêÕ‹ô«`sI÷Rü¦hÖÛ,”YåêN»‰s%²(3º~Ò4ôÚL|~™Q“:†«ÕâÜ”t-8ç=šCÇ"æ×¤ªéòxl&NDÑkß³Ö¶Àjµ&¯ß³ŽØÂ+«¬ùý§Wp–€Â Ë<¯Wð­¾ôø«¯V^?{|âØ[WÃ24qe’‡½§†Öß±Jæ–Yæ2/2ÖŠc‡†Äæûná"¾r¥@ÒûÔ72×jz眗gZ7¯W¦stî·B*×|ãï‹Jw9K[nvŒz…$]¹Ù1šå¶¦ÜK¦¬’½”$©Ê*&F;F'*ÊT’”Gýs 0D¤m±+ÓÓ5‰ÝäMºBíë°¤»f=ûuÂÔVD°ß6RqtÈJ¶Ž¸!ж»§õÂ¥F™Çþ{÷Ë7\Êñ¯ÄæmoꋾQ'cÑÈ’ð”Lþ"#ådŒŠÕI}I’ª¬BسwàZþ5géXr£skHÛb7q®ŒÃ¬5¤- ,Œô'!Æ/I®aÔ鼦¢L•ñ1ÀûÊž±áþ{ÖÞŽ³ŽÌE|Õ{š6n(Š-ù†J:=6) NtöpÅÎ;+j«o$óôK¸²â½›o_[m.Jª¦@Ü{å º]?"ûÖ—.È\æâîï¿ÀXñè¶Ê¿5V–į›×+Ó9:Ë+ý<_} ÞhŒ=¢$3«ÑXU5Jf‡¥ªã©©œGr)™e•Xxj±“ò4LÂl£ºØétÆÎÓ³Ö?·“ãZì¤\COjN’TÕõÅ=õƪQ2Ƕ£åvsºÈ?°™:ßÊùÉþ溑 kµJRU[Õ½qŠŒØªŒV§¹¾Zyθ`§ï_¡îzm0—™pIÒµXÍUUãŒ_ß \ž&ÒµØÍN«ÓR5¡ÑwZªè {SîݱUõŒ³L÷)ªjºl½µ§ÞÐCÊ3"¹Ý̨ììŒKm4÷†”/Çq*ã@šØk³ÖZ@'Iªš.{@o­7öPdaµµq¤®»§ÞØÍMI#©Ájtq“­«F5çè×V2\y!÷{ÇÚJö¼¥l2øÈåòt¾•dLùW_èJXë¶ê¼@Bx­ý®½ók’¤|*%-!Òí:¡#A²âÏ€qó.ArÂéy¦@ì=_xïS¿=Aq†wEÎ ‰Å tŽÎ—¤ku»[“Nîåmkk+QiâºeúŠ·Ôå)Kbß¡ÿf¦@ü—ìHºV'i­äÞæþesy˜4=ÑQjocýÞöª õ#I=LÞÒ´[J³ c©'²Ž¤ªéòÔPäÊxq}ggüóCóÿr¢™l6˜×m~úñÖ­œýfØÁÁÁÚÚÚ©©©¤å‡_9þù»³¬ë8±p'é‹ ñKsq~åxÛþïaàº8ðâ/Ûö/é”tø•ã;¶o/Èi¥wû™ oî½gæNµä%q…ƒCÖƒ´÷eÃmKâtüÍ7ãO¸×ý½ÄOd 18±)!Î×7TeaÅ™åœC]ª‹S+ˆhã›ktœÀ¯0¸îòœkÌD[w\›8Õ—º$¦¨²íåÂ5]x8G/òà,üŸÕÈÒ®náê/Lj¼îÿA¹^»–š0„%uŽÆàÜ0V`àF"#5 5ÌžeŽA@j„%gjjêð+Ç1°tà 5R#,9ûvïX¹r%£€%e轓¤FXrryb`1ÿ7‹AX CH€ÔH°Däý4L__F ©1›ÚÚZ Rã,ð5+7'Ü×H€ÔH€ÔH€ÔHH€Ô…·bžë áí¨²8YrúäÜtнéŒá9™íC-:IJ]+íGp¦FIÒµz<­‚`©ÇÓŠ˜°ü-àj!¼íz½^ß~žŸWæ#sZª:¼B¤” ö7é ƒ^ßžú)ÜÈ©1F’t-Cv眛ÒÎ5ú:êºýš[ƒ†–ö ÀR“ßêÁÁÁ¤%=ôÐ<{ „wÔADÅj­º˜È? ­J’RÛ€B©­­ššZ¨Ô¨4ÿc^eÁ˜ÓjtcäL©R€BéëëËw•¹< S¨¤µZ­!îO¾x]èV`îíûW«5D4¸–ü$©Ê*4Œ9{®aÜÔ©Q’TÕÖF ù{ê©J«jºl&>ÞSǨ–¦…ª(öÅ™–Hªš.OMìÓÒĺV»»`‰Â_¤F@j¤F@j¤F@j€›Ë AZ‡_9ŽAÈbßî8].Ó‡ÔX`mû¿‡AHkjjjåÊ•DÔ°k'FcéùÍ«s^©òvø•ãÊôÊ_­ÀÝn7 ¤F˜»Ï#5"5Ì sHH€Ô…IŸÃ Ü$æûÿ!¼íz½Á`0 z}SP¤B½¾Ý+ÄüW™Cm‰ÆÚJÚÆ 3Ô¬*SýI Ì´8ÖV¢Õj“>¾ÚW_²°]º¾zÀ€ˆh:Ìóz}öÁO´Z­V«-)ùÉéœ÷ê¡3ÏÏiÅÖ0km…m¢°¯ùìëyÍ5Š`s]·ŸÌvW‹N’„4wx;[t’´ ¨ÞŽ*‹ƒÌö¡$I’®ÕãiM÷ÑrH6Õ”f•{.ö´•¥~46Ü_Óy¡r¸dxì@YY¤’=÷ﯡOo¸¤œ²ÊðÛ`Rc>gð±Ã{/6½1¶}DD$‹iÊoZG.“‡ùôÜÏò÷=uö¾94½¶ÏÄÙÛN}óŒ¥T’ ÑÉ¥h^s¾cÝ㌙í‘|&Iªš®V$ÍÌðyÛõúöóü|l>Ò`0´{ÅÍö÷7¥§ 4§]®äB'cŒ9-U^!bUçç“>J9Ô‚ýMzƒÁ Ì>Îu&r¬­¤D«Õ&LÔ]í«/)QþóTßw5¾¨²0ݬ×X[Éž·Ø[{fê¹ÚWŸRóX[ôÿdmgÓ¬o]CÛÚž4Ÿ”UÖô7k›ûk*£1ªìÀ… ½µwæ697ÖVÒ6vµ¯¾¤$Ú±Yú9[+¶0~PÒ àL ˜\g†¦ÓglszÒ66Ó¤ý—¡ZÈ&æù¼„ Ë‘§/÷=±»ïrH…ùtèì¡ûë»tæÐý¶×_ìò‡ÎÊ3Åî/Ýr¿ílH…… ;+0:«¬¢ˆ~ìõË Ÿ&•?’§CgÝ_ú@ùÆÊ7F+´ßzÂ*gmÊG‰•ØÎLŸyqÓÞwÙÛû6LÛɤªRúSú@ùÆ´}~âõ€Òè–ƒgãG#µæ_×'5 áuç¦rm†ª™Ó2Zîñ´–²ÒVÇív»zÖsî°Ìä9Æœ#duÙLŒwóů;BVWoƒ†üñˉH’t-Cv眛’&³|‰¹uÝ~Mƒ­ACK‡o®ÓY{.î?éóùN'vøµ]¸àóù|'ž¦{Ç¢I¤gíIŸÏçóù*‡÷ô§„¹Ž<Ì>8¼ÚwàÓ† >Ÿïš©yuú|>ŸïÂ…÷§¬’lMmÚÜXvà‚Ïç›mN³ì@Æý{PÛ… .(Ë¡Ÿe±µ†+•Í¿Ððé¶h·Ò àLq˜¦ÎtMgÏ„þ+UxúbÏO~R?\yá‚ïÄÓ±æ³V ³Ì5æþ É¥žÇþT[¶çX`:ÌC·îع¶ýµs|:̧Ï8Ìm½UÈtbXþÃ}XÞg ÉŸ…ÇŸo¿ó…3ï ?óuYL‡¹L',§¶Ä (K†å¼7üÌ×ÂW”ÂΊ»Ÿ?v)îÓÄò"æ!¹tÏðÙw‡F·’yË×eñY(püy×–£g½O~òëÈêÓa>V­ÖüñO~îÔ‰M[§Æ¦—>ÑÜùÅ0Wj“åÒFÏOä[âÙŸ©“±WRbÝpzûS\Ÿ»?}Ìá>|çËÛ«Nmq¸ë‘èh¤íáb\¡^Àçž87Ù[e‘º8¥L}uiËMœ“c4–&#Ë•òqËçC‰¹DÅj­º˜ˆ&×HÛêñx<­ù\Ëî¯i¨]CDkjjú‡Ç”¼Ò[»&’Ûî\¾ú`Ú¼&šhŽÔÌRóÕiíí±ÉA¥æÛ×Þy—£5µ Ô?±W5Gb˜G?kŽÄòÛLÉ´×Ä̦֙¶é\ܳÿä2¥òßÿ±¸-ú~¾Õ@Þ÷5†äÒ'þõ¥;ŽüøÍ€<æwoß;qúÜt˜xú“¿ß®› NÛÙV4œD(̧ÃW.ù·•Þ«ApÚöÃf]\Ø*q…ïÝò ÿÓ@§ñå•7|:Ì? kùÍ=ͺèêýª~³¹þå?DVWú¬ºmíG—ç>pl+mÞò ãÔ‡Oÿ°öö[d‘¡ÚÔN&ô?±?ü³À±½•÷› ûÞ‹ëstõ¤zÒ÷pÜט”Éb7¦N>*w@Ž3FŒ¿ž7cN«ÑIŒ‘?0I¤*XÅÊåQFDœ®$"ºòéï×U®É½†+Ÿþþ÷o}Wû’’›#•¬©í=ÒVR¢eìáN_n÷?–h®ï»Ú[»@CX¨~怓ëLÛt.Öݹ&íû,[9 És8¯ëv;Å/L‡Î;÷Ý»j㦉×Î_¹üÆ„~ï*’…L",󥼑$""[lŸ¦/?é´»7íÿù-\„H!dÚúœcß7”é$.BÑ{¿¸æ.9pùò·¶<Îuáoý:(þòUHæiZLÛèüTêGÓtÚÝ›~ý~[‘÷¦÷sè|ú.Fˆšóš’¤+7cÎÑÙ®ô °uûIÓÐk3ñÌÇ–F½za7vµZCœ›l.—ÛíÎsŠq–i¾ú=tä‚Ïçóù:kæXÉíkï©Q.È&^ç-;x95§Üøé‚Ï7¾Ÿ¹lIB™š^ -€Ù…e>—×ä¥KëïX%s™kűCCbó}·p–¹ !Ë<îM‘jý;ç¼3릘y–‹Të'®Lò°÷ÔÐú;VÍVþß^® ÔyðV¡Ô,s­ö¡„¶b¯/¨ÖÿªK½qCXæwo\Ûû«wÕªÛ»‘~a¦d±öÖU³tUy“¥‡9¾®Oj$"í#I÷)f0ðQ±º(õ£‰À5"ߨ“1*V«rq«Õšèº9$Iª² cÎÞkÑ8;‡§aÊ*kú•+ÀWûz¢Ï—\ùô÷÷D.q^½t1®äðÌã©÷5*.^ŠÄ»5›º˜ÛÅÑØ*™{YÿÐàž‹ òû!÷~öÏ<µ36«´XÀ¦gœyl$“¹Èý–?ü…ùG·UÖ>>¼±µúA2ò½›o_[m.RÊp"÷† •±µéò+þÖ|ø‚ÌS $¼*ckåÙÇ+jøéßEëÏT>,øá üXÿè¶ÊXåwÿþÊø%‘×­w®å¦ ÷ ¥Ãßäœ !'ôS·ëGdßúR¦NÆ^©øõÍŸú޾vëiþ Ã¾õ¥ r¶mÌØÃÜ^óÙ×óºB-©j:‡ÔU«ÑID™®>K’®ÅnvZ–ª †Ø¸ÓREÝ›”OGlU=ã,ÍMÙ¦9UÕÖÆ‘ºîžzc77ŪÊþ©jºl½µ§ÞÐC<åÓLѧYû–òŽ+OZ82\²Mûãüá#‘ïv);pdXû]íKDü«Oï¯éßSBG.(;pòR}‰¶™ÑÃGjú‡ÓÌ¥.ÙÖvç…eDkj{+Û"å#mÅ]ø~øˆ¯,e•ÌA¨¶í¡Ám¿Ïôq´ZFoiߊk+§¯Ê­ŸDTsääÚž’’fÆøWŸ>Ù[¿Í‰˜µ“qu¦k:ãxæg©²¥Æ|ŠëvÞ•¸®øs `ܼK,‘n×  âÑ7²t[õNTQürž¶$ÑLáHýËóÄÎÐL¢ cuFªM(“T¿,ÝûÔoOP¶¾EF ù£/š»þŬ|úÔ®ïÝ“m3ôpáI› æu›Ÿ~|ç†u+ó–¬­­šššÃKü‹¿r¼mÿ÷ð»`æðU”°lxñ—mû¿wàÅ_îØ¾}~y 8d=H{_6Ü&aTÁñ7ßÜ·{G^¡îâÔ "Úßð(þ¢ ÌÝé+ÁþæºîqƲ ºÕóéüœûY[Ï8\…ÞG…[€Â§Æ‚$żÎJVèök¢Ù(8ÐÜáí,d0šO’¤kõxZcÛeqðÌÛ ó…ìíLO žŒc”Ø}%2ú5G;«U™ÇjA·ZK¾…ËÊi{íµæºîîºõ·8«‚Œ-@¼Å˜ð¶ë ƒÁ`з{c£]¯×ëÛûû› ƒ^ßÔ±˜ÓRÕqžŸWÊx…ÈPñdÀODÅê"%¥©jºZu’¤Tnˆj÷ŠL-Æ"NS´|Jsé›PÂJ“>~•X^o»^ßëÿy~>¶]V£1í…d>‡W^¢´›48qOØœøU²Çb—ËfâÉ=ñëö“¦Ñš-2.èV+‘1îXšìoÒÇvºð¶+G\jÍw©‹g;òS“·²;ªš{' › 3¶‹˜ƒýMV'3Ù\.›‰9­MýÁ™¶™s„¬®Þ ù»ù$I×2d7qžã„¥$éÊÍĘÓRÕ‹€±4ãv»]½ ë9wX:bgý¤#fuÝ~2Û\.·Ûíñ´Æ·›© "òuÔuû5 ¶ 9,¾ø²Œ–Ç׿]6—+©‰Ôsü–M³¼²œã³ô6ÍàØLDDær¥3™6gn“ "*«J è‹¶ÕIÇR)[]V¡al<0IDt-0¡©(KM´óߨ“1Mã#Êf9òãZ´83Ù\CÖŠÏ5bl05*Óiq³5Á±?ç¦r-‘¶ÜĹd,6Çù©¾º(2CãMšÑQòMÚŒ£kõØLœ±ñžútsx)s?™ZdÌii¦›RJÛ„ÞQ«µêb"šÄo”½E›÷9>,b¯Áá3™Š Ÿ‰/™÷€ÄMquX±®¦nÎ5ÒÎ:ø™MüĘ“ʇ\6cãݶôc»˜[]TV±žsǨˆ&TQV”:&så°¯²ÍåêªQ)Ñ9Ë‘¯9_¯^æXoj,ÐØ,TjT¦Óâ&픫‡qüÊtOÁèZ=.WoÃzŸü”‹ÎF£5þ霴$I×r´q=çl¼§ÞhT.gçÒD4+XŒÍ£’.¾ãþ µÌ;îr¹ž˜©·ñ® ô:3Û&t ¸9Ê‘ L™*\Ô­.*«Ð(ù>˜ˆ\ÎÎÿòå°?Ú8a9„r9ò®­VÇ`ARcŠÕjMâzu¡Û$Uu§=–N„غý¤ièMsË]šÕU5]Íĉ(þrv–&”íJ‰È;LJd>0ø~|Á÷s¿ -¥· D°ßÖí_ßÐÛª“âwSá6'e§/­–$UY…†üÉkc#Ååé6p¾ƒPT]oš¹#b1ŽüE[€OÊ©š1ç¨/z×WºûÉRÇDàÍú,‚ÞöØ3 ¾Q'cÑó\¦p´-vçI§öLMĶ«wàZA*,‹Ô×ïžR>}ãÝSi ä< |ǺýšFkuQênŠmNÞ‚dÝé±»'w«gŽ¥Hª+«ÐcôX ¸\›¥Ûs„k‰h:ÌåÈÝ‘9ê‹ÜàXÀz[€x þ-ߪš.[@oµDÜdSîúÊ6]dm©ëî©7‘7”JÙÓ‰®Åh®ªŠ|)àú†è÷¼èZìf§Õi©šÐhˆ;-Utн)SôŒ}ßOyì7sÑíê©7ôD¿xe^çøôÓ<¯ÎòiŽŸy”»÷ë©7öPÜ7%%mN¦áJ?tŒ1rZÎäÚ¢;ÝÓª[ü­&š9–º•TTV¡éîv½%ë±šÏ DþïÅœV£3éÊåÈ×>Ò¸ÞÑí´Éf79,ŽB¦ÆŒ-@Â9w³Á¼nóÓïܰnexÖÒƒƒƒµµµSSS×·Ó‡_9¾Å`.½ã¯o€pþò_N»;k™Ãº¯öÛ·{Çrüë²Õ‘o‘4Û3¥Øã\vG\¹‡º‹S+ˆhãø‹‚K‚|SÎý,æV+w»Ž3f.×blæ©qIs­^P’¤ªéòÔ`l—÷9þ¦|_`l©ò<ÇsŽ­Œ- 5Â,ä›rfHÆ|ÆÁù˹avò›*Èà/÷ù°¥|b®#N»7Ònp;OÞ„ƒ¿¼¶zyËzl©±`ð•r| À"c@j¤F@j¤F@j€HÞß¼Ó×ׇQ@j̦¶¶C€Ô8‹©©) ÀM÷5R# 5R# 5R# 5R#R# 5À’LBxÛõz½¾Ý+Dö…×Ë’ê ÀMšÓ’$]«Çãñ´ê$iñsaҋܤƹĸØûþþ&ƒÁ ×7õE´X°¿Io02MŠ`“^o0âË$­%„·£ÊâdŒ1§¥ªãÚY­|$„7u­¢<7;]g®&ˆóõêÕDEêb"æ>¤ €e¤¶¶vjjj¡R£Ò@üy5–cN«ÑIŒ‘?0I¤ŠûH’t-G'êºÇÇ{ê=&›«U'¥]«¨C7ðQ±:±®L}H€e¤¯¯/ßUVÌ¡™ù'ŨÕj qÆëÈD$©jº<5Þv½ÕÉ–Žò¡mºµôVÃÔ>è$©pƒ° \Ïïk”$UY…†1gïÀµì%µ-vç¤Q¯Î¸Öjµ†ˆ&×Òþ˜KgtåfbÌ9ê‹Üà˜¥Hs­ˆ9­Fc¾«jºl&>ÞSŸv­ØCé±ÇŒ IDATÍF£ÕAšFkä¶ÂÔµ$IUmmÔ¿§Þ¨×·û¨(þÇ;£äB§Õ8Zn7qž½7i³Á¼nóÓïܰnexÖÒƒƒƒùÞ8¹‰`s]·ßl÷´êpˆÀ'÷PwqjíoxtFm&,F¿÷‘ˆ¸¦ñh‹c @jœ¡ü ™V @ †!¤F@j¤F@j€eÏPØáWŽ/Ù¾íÛ½;h)ï €ÔxsÙb0/\å§ÝŽ'víœÃŠ¿øÍ«Ø5‹°ƒŽ@j¼q”Þñ× QíùË!¢Ï÷,Ñ´p R#ä ‰p R#äVH@j„Ùæ™p à¤F@b°ìÜ#D°¿Io0 ƒ^ßÔó¨ÊÛ®×ëõí^! »µ™jÎÒâ|:#‚ýMú蘴{Ó–ñ¶§) ¼íÑ‘LÓîçW°9¼rÜe 7ø ±ã Uó|ẌX¡Ž€Üf®Qˆà@s]·_Óx´³F% hîðv¶hÉ×QeqÙ>Ô¢“®ÿX’¤kõxZg é³ÞY‡†T’$‚ýÍuýDãÑÎjU\Áþ&«“™l®ê0Z­MêÞ®•Þ‹ƒgî@(Ìr—-E ´ãD°¿¹®ÛOf»«E'Í ‚.‡æ®¯‚y)ÔôÃdÀODÅê"寪éjU"£“1Æœ–ª¯3³2ÞöØÜLÚɶ„S»·]ßÔÊ$Pdz,Ý|a°¿I7]ìoÒ7õcù ©©’ŸŸŠÍ3U5÷NÄ%ø>Çê 4Ǧ£r™^’$]kWM$#•UhˆüÉÄø9_¯^M´Z½žsÿÈØ$?ë€ÕhLÛDHæsxå²ËâÃVüöR✜Á`h÷&ÌÉõ÷7%Í1gÙSÙWL{HÄxÚu“vÜùĉïX÷8cf{$eÆ!mséÚ Ça¦ /Xj,Ì1°è©Q’tåfbÌi©jŽþ%I×2d7qι)~ú‡1§e´ÜãiÕIRl²Íe31§5òfƒzÕ±):_G]·_Ó`kÐÃÒáK샪¬BÃØøÈØ5"¢kc#~òwSÎÜׯF¨¢L•8åë°83Ù\CÖŠYû}ãÝSi ä¼Ë2É25;¸­¤X­’¤\öTö3¹ä¹‰Àµ\¿ GûHãzΖ™;;½í³¬¢ôpÖCz¶ Ÿ¯‚y)Ì7ïH’®Åh®ªgŒˆøú†èó+ªjkãH]wO½±››º7%­¨ªé²ôV«ÑIÄM¶®UrͪšÎ!uG•EïÐ4í¬QÊ÷Ôz(ýsÊÃȤ©(+RrAÃzG·?úcjhpt;­F²ÙM‹#zâÏÞç<Ƥ¼Ý`°*?*cRD¾¼6?CbH?iôÚÉá,Ÿæ¸Ë2E&IÒµØÍN«ÓR5¡ÑwZª(68#¶ªžq»ùofÓ²ì©ì+æ9&I;¡4‡¨;ºzê=DDd²¹Z3B¬‡ö€ÞZoì!â)GHŽ>ïÔX€c ¿l³Ù`^·ùéÇwnX·2õ–êÑóVÉ{ƒÕ·¶¶ÚyñÅû¾J×ÃéxkF9æ©¶.ñ‡õB¡P*ǽޖÇÝã"ÕB©÷vÖUUK,¹7Vf\=J††QÎ& ºDÌf˜i®È¸Ûë©Öê†×¥(½¸«æææNNN.+k47`ý³scç³Ò»ñÎâãù„²ªŠ~ÑÞ*Š/¾±x8Ÿ;8X‹†ÖÌ)ïÎÅŽ7×5Ëz3×L†4QU©ÖŽD\]¸«?~<èK†¹®±-STŸ?"š¦•*qŸÏî…†QßLåªâY\Öæ…^ËyÜœ'Ž®ÙÕâl9Hjj!‘õw¤ªF=ŸÊU'7, å·Gôjû¥ÛÏ”Ñ|óŽ÷¥Å¶ë{8ªUEdÜ=ÖùÔaíX¤RÒTUÆÝ®oOñÆÓa]ïšnVžäªžÅä̘%ÍuMNyTU[ßj kY#È@Ö²F5àÙràzúÑ'w¬GÏåKÄœ˜Y#0zö'®;Ó—Ÿÿ¦N̉9ÜvÌP ¿ÑÔß|ë]'‹ýà»ß&âÏnÖ("ùʼýý·„à–Ù õ|ñžýOÛò†QÎA‹@ S6Œ«ì¼Ù†«ßî·~ÙÍÎÇ@,_7η•)76]ÏÇbù#ýiר4ìzC}µ¤o|œ nGÖø‡_üBןü“æ/]_¥ëáÔööÎÎÎöv*"…Äô’™¬\ Eñ-‹Åâ²OQnÑ>»ìf»ÇEUjG""r\;‘B©‘ˆÕªãîêó}@ssv:ûp³²Æß~zÚùãõz›Oõ=)ÆÓU=È=©F½¥ÜUÎbùºa4O~ù|, ¶ÕÚ5ËL¹µxSΘÇòõÆŠÛ i–³i9èUøln%‹ÅÎ^eÝJ yª?µiI[³›j›K]ol·žZZemv[ß-µ«z>®‚ëõGD¤PªˆÈñþÞªªªVªˆˆTJ…ˆßÛµN §—ÖÏb•NhªªªZb:km€µ³d3½ó¼öÝ×+æÖÑØ+ÈÖ}ñ´G€«Ë?þôôãOO_ðíÿך¿‹È{»%óO'ÙJX×¥PªÈØä”§Yî:®z¦&]g%UÕö$¹½¾à‘jîI¥Y†ÙÙÙÙ^_˜ÐõBâ~ü˜¨5Ú™››#dd}8ù·3¸{¸®d kY#È@Ö²F5d kÀÍË £ž‚Á`¦lœ?XÎbùºaôZ>È”»=kY¬œ ô_ ÀÕ㨲Æa(Škf%ÖõB"k¾×õüÒº{ceÆ¥(]^Py²v ªªVªØ¯Ö·\,‹Ë¾®+p}Å5“\œh;ê’æ¨²Æ~§_<QU-‘­F9;_‹ö8yF}sýp!µ0¡ë…õͺat-êùX –?ÒŸZ«f©" ƒAJÀõ'Ž®Ùä¢GUµõÍcèo¦rã鸣ÈûŸB|Ë©°®jÉP()=NfÉ!7ñNNyDª{ûÇÖRåR¾nåÌ|-Z\µ&†QÎÎçªImoïììPŠn‚±™ä„^Í¥2™Tn<½ì㨀;îÞ@Kommµ=òâ‹/š¿xãép!QˆßÛýµfÉa1Werʳvp°·<;ëR_|cñp>· å&6Vº¿^UµÄRËÄwgc\ÜÜÜÜÉÉIߣ^Q\3ÑÈZR{ï½pz×ËQ·ý ÄY£¹ëŸç«”4UUEKdýÅe_×’ÃÚÁDCkgT÷öë33.EQ\³ÉŽèÚgj²sj»y‚98X‹†Ö©m³ªÑÖ÷øñãŽz¯?¬ 6«ã¨€[õ†?⬱åœq^Q(g’ÚÝ–ìtRKfüÛmÓUk›Ö·g]JãÏ¥ù\uoÿxfÖ%†Qß߫ЍÕ\*?¹b.Ór qÍ®gË™@RS ‰¬7îS”²c1ÄáÆQwÌ®k4ŒúæÒº{#îSo¼å~jkÉ!7mžÅ59åQÕƒ½ýc©dçkÑÝíõTsóÙ^—½›+ûû ¸ù8ꀬ±#eœ¯E¥‚óû©—6›ßÜÖ¸¶é¥–K—Æ&§&tý¾ÿßÿk,Pòï.ûÅ5»ÒñZ9û·`0 % âYLöøv7G=Ü=Ê£`äá£W_yù¹‡÷Oû.½µµ5è…“n‘Îcœ£ž‘7ü^><¹'"¯-|‡ÿ(€þÈ@Ö²F5€¬d¸KîÜ:o¾õ.A­|÷Û@Öˆ;è×¾GFåäääþýû|7€¬€7ßz—,üîíS‚`E5 ktÇ'&ªéÀ¨p7 à.£ò ŒÊðµÆL  ©íI§®‡ÿjçë¿þÇ‚DÒ»qŸ¢Œ¤•F9JjæúG¸ÚáÛc”3-åßüB;PED×'7Vf]Ša”³Ó‰‹÷½ïz̬ñId.iµƒl½ä`sûo|õý?ýàõÉ.Ø<€<ÒQɼ60²¬q¹X\î‘ß<_,.6™Hô‘¦¡ÊØÊ™éDá_üKù?UÏY²Xß\Ê–Wâ>Å·<Ò¾Ûk¦tf›Ó‡f{†ë×µdŠm {iq= …SÛË>…ƒÀåùËWæíøë¿Ý J@›ÑÏPF9™²aœÿ^΃Á`0Ë×z>±|Ý8{I= ƒAóU)…¦ªªª%C¡æåLÀ\a Snßn9džêOûnÚ|IðL¦lX7—˜Î¶5¦™Âßü‹û¿EdÜ=&"¢(®ÙÕe3{¨ïÍeòùX0´Æ¤u£=ãcR_<QՃܓŠó~õ]­ÕÕühf%Ö ‰lKûµm@ûo|õ}ëïûox½^¯×ûƾùÈWÏ~w¼€eÝæ’_ýêùóíÜfÍ1c3\¼3\y³¯mÓw¦…wÏ|ñžý“ÁëvÜ-ii¶qvJô- W”5vÙ†ª%Jþíõ… ]?X‹N§$¹±è‘j.µY7 ©dçsUÏBjÁ#…D¶Òží¦Ãº®ëáÔöv±¸ìS”z>–ÔÔpj{;Vµd,_oÛ–¹XßM+Šo¹XÜÙÙ1($²ñ67×µÞVÉ&4Uýw^öGDUµÄô’ý(ìÛws™=In§ÂÍ´¯c£=ãsÎëëºJeÇýr´Z¹Ê€{ýUÕìÛs1“¯·ÌSç¿ÿ}Y©T*?}õõþ0úþŸ~ðA姯~øýf’g¿€umûo˜KV*4ì|ävÛ\šÏU= ëÛ;;;»»IIeoŹÇxÍQ ˆÈ~ñ ]^ðOš¿´¥Œ·tðß C†QΖüæI§íÌ‹››5êz8÷ʘ{Üü}eflÌ=."ÕÚ‘ˆa”Kw{Ýã"rX³ß©†Qßß«êzØïm¤JÕ½ýæKÛr¶ésæƒ -µC17í[.¦Âºª¬EC6€œ4@×ÃÑ™1kÚ×6èŠ8ë—ÍjͲn³yÕ7ãpX;¯ƒ·‰ü’×j)ïè)«?~íg¯OŠÈ—ÿèáÿø_ãoœý>ÀMÿê_ÿqþý}ûGn·ZU:KìæSçÕè³Â³µ¨lS¶ìzø8/Õ·–®ëln±žbù£f!|ÀI€¶š·ÃÉkÏ×YÏÇbùúÙJl‚ÓkëA£By¿ýô´óÇëõ6Ÿj]üÈfð‹Hms©³šÕ6EÓ>$ sx6>„7GHçHh›ŒÉøìlpç!Ù6¡Ôyn2Gr ‹ukƒ£¹Á]pÒåÎ9ºÎ&UÄ»¼ì;?é´‰p3³F‡õÈd(©©ªƒj½æ27Ý_˦}ËÅííõ… ]UµÄÒå~‚qûÁ ýêºZ³¬»³³s–±]GÀnbÖ¬äY™uô”ÕÃ?úr×ß/Ðôå¹õ¿‘ï[ç¯;¹Ýz•ØëùX¢Ð(ËËϫϷ•;Ó'¥îÁK×c3+é°®Kùºa”3óµhquÖÕñÁÃÉ$ÀE&ÌÄbrÊ£ª{ûÇ"r¼¿'S“.Eél¶óœÏùüúúøÓÓ?=}Áÿµü_kþ."ïí–Ì?Ûj]6óKù"³šu6_Ô9EÓ6$äx¯*ÕÜs4Gˆ“•_p|vàê5ºÚ&”,£1¡©j8µ½›œêÚ†¾sƒ6]°Ÿë›&I¥¤©ªgñ%&î@ÖøÀíéÌTú,ß5U8ƒ1ꛩ\U< ë©°®;ljë[‰Ë>;'¸lɶ ¥æ›yíPt}Âý ËHn¾Ä~ªÊ¦ 6óo61ïÕ¤Æ=µ É™1Fþ­ÏÏ>~ië›Ç-_ªœ}zèöùÌ™–I‡Ö$é°vÜeÓîqQUíWår¦9•`¦kÊrkÇ-iß ñiçÇvÿ~9ûUü,cRaöíf&Ž%öŽj´³¢ò 3 ”®×lrÑ#"¨#rvÚ«ÈQ­ñ{Îå ¦ßŸê¿?m|výóo¾ "÷÷ï›ZŸê7øíßë,Ìýe‰jíH*¥‚g!µ0¡ë…õÍãÖrm ÁÀ“~]]q¸=›TÉ& âYLθø|u'jâš]M…õƒµ¨ÃûyÍåµd(”ÔôpjuÖ5lÂjÞz¬%¦×=æìC¶"c3ÉF­¢³1Þx:¬ëïýZ‰'%5= CIMŸXØX¹ÐpÜKM‡’Z×t6ñi^€ % žÅ³Û\öËyد2à?)zÅaDZïzåÚ·W{¿õŸþÍÙÝ0íÜ%ööj´ƒ¢ò 3 ]?,ußÊYíSª¹ÔõÞ2ÙœÖ,eK…ˆßìãàS£ š>;Õ?³¤†?Îïš4œ ~»ÕÂã~Ð6$B®Z£äqI£ëÂSUžw:/£Rg…‹þGA¥ã [qò{ãïe§›èº|ÛbΚ!Šoy§sîÙÕâlϼgcñp>±äÞè\fоŸåiãÑ•ë!ÚÙåŽþöùbH‡ýr¾Ú« x=›Ïy7Ìô·ï—_N¾þÁdG>Õ÷÷Aøàõö¶=r»ebù—ÌHfIxÂ<º&§<¹êaíX|®öýµ§Þ™ý‚BYIDATÉ)ÏÚ¶¾ù’oØ!½¶RÉÎ×¢»Û6—æs¹ù¬{wà æ©½P8¬‹¸|—Xk¬dçsUÏBjÁ#…D¶rö`BSÕpj{79ÕwaQUmO’Ûë ©æžôY .É`µÆ­­­¶G^|ñÅ®KF¹T‘q·×=.R=¬Õ ï˜×E×'ÜDÆÜã"U»…EDt=q‹T ¥rÜëí±’®Í@Wsss'''—•5š°þi¿1UÕ’!MTUªµ#‘19ªUEdÜ=ædá^z®¤­mèêñãǃ¾d˜ë¥¥ÜÑ«çW4ŠHïZø‚ ÀÀ.ëºFEqMNyTU[ß<¶<èóGDUµR¥qm¢Í½×Ü}%¸Y£ªjÉP( ƒAó ]³«©°~°m>""Þx:¬ëZ2Tò§ÃºÞ|y×…{ñ¾´8Ñm%¸$Ê£`äá£W_yù¹‡÷Oû.½µµ5è…“½õüÒ|®I—}쀫ä<©ûð䞈¼¶ð{WÜÄæW-ŠˆîY܈{Ùm7ßUgŠâ[.— <À­Â­$ kY#È@Ö€Ûã!°ñæ[ïÞáÞýà»ß&°Ïà^¸ Á¿Æ±wçGàµÇYã³ëÁÈMnÞ/w ÿþ/^â…ÿåÇ?!°Ïì^IðoïØ»ù#ð¶ÇYã³ëù¯|éf6ìéGŸˆÈþ™J`Ù WüÛ>önò¼±@Öˆ›ˆ³ {^[ k„ƒ³Ë=… °è5±²Fô;»P“`/Ðkb dàìÂ^ ×ÄîTÖhåìtBSÏßéÂ©í¸·’N$’Þû”[<áÒµwË>Å|ܾƒN–¹ÐÙåžzI}Ôõðeï8èo.ͯ¨"¢ë‹+³.å†l¢mÇåL(©õ ËèöB—Ö^êêµòr&ÔTÑéâ²ï’ÇÞhöÑÐÝ—ôî²O±hž! £žš¶ä"匹d,_7êùX Äòu£yúéõÂ|> Í…›E5UÕÓÙ§úÓ¡ONm'¶f±X¬cµÍ¥^m¸Èë³Ïõ!~ÚÄùÊ”Û:~±ÀÕª"2î3³4×ìj#Eë*]·ØhL= ´ ¡¾›°-år&È4ÛÿTÚìW2êÚ£í»€œ-Á±4¾¥;NR.35?µ¥qû{U]Ÿp?yàžÐõêÞ~½Ûz.¯×^©´Ž¥£|ìü`7ÊsÄu& ƒ¡ñ>¨j‰¥Í®}´ümãÄæÝÉæÝïk¸Yc¥¤©ªDüÖÒˆyŠÚÙÙi«DÖó±D¡Qf0«)•ì|®êYH-x¤ÈVZÞÙK~óåkÑé”$7=RÍ¥o÷6/Ü“äöú‚Gª¹'EñÅwÓa]rö¸v(ÒÖ»F¿³ MUéíÝäTçii”mèqvùÆ×¿fó3ÜÙŦìtÁN)ŠÏUÕÓKÍÐf¨tnÑ<gçsU‰˜%Ò¶‚\¯MØ–DÉo]µ_=k£Ø 6­íœTX,ã°Ww†bIãÌO€ÕÚÑ¥½®½nKÏ«&§<ªz`¶ã¸v虚tu9‡ B$• «kó/±üÖqbÿîd3¤¯ë¸€ëÏÍbL(©é qoßJ¤YÕh–Ì$ T‘q·×=."‡µf@×Ãé¸×|¹®‡Ó+3c–Sšý £3cíJmï×Χÿ½‹®U#éÎ+½ £^;”F…¦£Új߆‹øìÔhþl½ÿë^‹m½ÿkë’ö}´Ö}÷÷ªºö{E¼þpkÙéâõ-Sa]UÖ¢ÝjxŽÃhS+꺉þÃìšöBŸ€XŠÜ挹ÙÔÎî‹÷2&µ¯±×c“Sº^(UDä¨&S“c1>Þøú„ª%­UÀ¾ƒß:Nìßìça®à¸€›˜56¯Š+®ÎvVÌY›Öë¨ÌªF×Ü%©©j¯"‡mÒ3Ì ÷.Öõi_ËDÛ•i›¢ú‡_u.ó;¿r8“u¾çÚŽ4êÀú–‹æ•°Ö̯ÛPéY°Œo,Nèºz° …ºÎýuÝÄhGË÷B¯ÖZo®kªI·t/uð_¯Ç&§p{:s'†~á@¼/-zTU[·œ[®WçµM›[ÿh]`së/pýSÇò¸Œº ŠâšYI‡uý¬lÜu¨ô~¹kvµXL…ué}[CÛ&F>ZF»:ZÛž¤rÕ‰…õæm¿£î޹ÓkÇg×côØéWÙkEqMNy¤Z;:Þß÷wëà…‚`n="Õ\jýpÔƒÐ!}ùÇ5Ü쬱k)®q&0ÏO–G†HË|áùyqÐ[5ÍšD5—j»ò¬yyV©Ò¸Àq€sóœ~ntþ¼óÞ/Ìgßyï]4ª¥Jãrծד XÃ(gš÷4˜×Â6ÎÊÃTm½ñtX×ÛÎë½61ô0»Ô½Ð; -*OrUÏbrfÌfð_ää³µÔŽDŽj½wú%÷ºý›œòH¡ô¤6î÷:y4fÝÚS­V‡üƒ½û]ãq 7=kT_<QU-1½~è‘æ½Ã®ÙÕt¤º=¿–Î5»š ëkÑn·ÄÚqþBEqÍ$=R]‹†ü? Z‹FTõ yN[â¢%C%ºoE¡µ ýÈéçzן·öþÛ?{¿×³Î×oFUK†BIM§Vg]Ž;Õ'°Šâ‹'%5= ×®̸¥×Pé™zÁ`0Jij˜œqµÞ Óu–+Û 6­µö·Ts:ÞÚò!ºcýæ¶ÛÃîôKíu—ÄL â÷^ô ç˜tÍ®¤#à þ!Þý®ñ¸€aÞÍ#½úÊËÏ=¼Úwé­­­¹¹¹“““g$:o¾õî7‚‘ç¿ò¥A_hÔóKó¹®7ÍŒÐÓ>ùåNáå¹—†xíO?ùÁw¿}ë{ݺ½0’à_K¯GxXÝäx{k·‹ó¤îÓ{"òÚÂwø‚£dý÷*ºgqcð[q‡ð9†àÙÜ WÙkóÒÀUø½Ä®Yã(™ß5³|µ=Õ¹˜éú=›{á*{­(®ÙÕâ,±²F váxö½&¶@Öˆþg™,ö½&¶@Öˆ~>§&Á^ ×ÄÈo‚§}r“›w{k7<°w{/Œ$ø·½v“G µFd·Ï/w 7¼…;ÚÏ,{áZ‚KÇÞ­·:¶ÈŸE|ó%ø`R ú¸Öøøñc¢@ÖhgnnŽ5öñìüjXq]#È@Ö²F5€¬d kÈ@Ö²F5€¬d kY#@Ö²F5€¬d kY#@Ö²FŒÒ½?üíé{ëÿnÿó/é„VÿïUD>:üðÿ¯.&V )G IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/table_results.png0000644000175000017500000050300612032647206023731 0ustar ebourgebourg‰PNG  IHDRÆ«¼î¦9iCCPICC ProfileX…µYTUÍ·Ÿsû—¸t—t÷¤»;Eº»SEPQi’T0ABAJB‘TTD@±xõû¾ÿ«õÖ[ë½YkÎù­={öÄÞ3{ïs`^w DPn©§ÉeïàÈ…À ÀÍ#"TÃÜÜü·egæ†ËS±}Yÿ=ßYh<½"<€Ìaìîáã 4=BÃ#@~é#1‘¡0FõÁ˜.ž Œgö±Ïo¼±Ýa4êµ¥Œ™ÀQ¸¹…û@8Ó¹¢=|`9m0Ä`O¿`hía¬êáëæ sÌ#²{a,èþ/r|þL÷¿eº¹ùü¯åWÁiûE„ºÅý/·ã.AQA„+Ep é¾nàºâé¦m¿Ùàú34ð—Î`ˆÅ+ØÆê v75ûƒU½Ãu-÷…ÌC#5÷1¼>È;4ÒÜúýX¼¯–éþ80¾è¡ó—œR7Ã}Q¸9<ÊÒÆð@÷#¢­t` [´ïkm÷‡gËÓKûðöÓ5øƒ‰~‘ûcÑÁ˜' ÄÈò÷Xy`ˆáð3ˆc ´ÿ<Å€7pƒ[¢á¶^Ã8î÷ 1×>­ÿDÑýÕÏî÷ï%r˜/êï1ÿ¢þ#ÁxÂï¿ènÚögáâ—ôÏÿ*ïWOÉzÉUÉïµ£øQÒ(9”&J¥ŠR\( CÉ¢H( ”JnS„g¹ôk–æ¸/?¨Ù;:/$NÉÖ÷ÏÜÿ^í/n¿ÿrEæ>´Þ¾þ÷ A¤Wlä¾i…„Æ…ûùøFriÀ'×K”Ë ØC\”KZRJúÿÜnÿ?Ëþõ}²üuA ÃÿÐÂwP~ Çþ¡9М Õ—h|ðÎÐäÐåîý›¶4 T°…2À á}–ò@¨`Ì€5pÎðnûÂ6bÀp¤‚t.pT€p 4ƒvpt‡`Œ€ 0 æÀ2X`|ƒ   Zˆâ„ø H"Aªd YB+äCQÐè$”eCPT 5A· .¨…žCóÐ*´ }E :;‚! !4FkÄa„" HFœCä!ÊWmˆ.Äb1‡XCl#’É€äFŠ!IH-¤Òé GC¦!såÈämä#äSär¹‹Â hQ\(1ØNõQ6(Tê*U€ªAµ¡zQOQó¨ ÔO4͆A+¡ Ðöht :ƒ®B·¢ 'ÐËè ÀÀ(`ô1L&SŒiÄÜÇŒb1ÛX,–+‚UÁšaݰ‘ØTl>ö*¶;†]Æ~Á‘ã8qÒ8]œ#.—„ËÁÕá:pc¸7¸oxj<^ o†÷ÄÇá3ñ•øÛøaü2þ ™™ ™5™?Ù ²<²²d3dŸÈÉÉyÈÉ-ÈýÈ“ç‘_'ï#Ÿ'ߥ RShQ8QDQœ£¨¦¸Oñœâ@à'¨ ‘„s„ZBa–ð…’–RœÒ€Ò“2‘²²rŒò=žŠJƒÊ™*ž*‡ª…j˜jOÍO­EíF}Œºúõõ6 -MMMM?Í Kä'ê=‰ÉÄ bq‘IËK«EëA{’¶’öí2†N€Î€ÎŸ.îÝÝ=‘^–Þ–>–¾þý’ŸÁ€!!“¡™a’á+#;££ãÆÆ1ÆÏL¬LêL^LiLLL_™¹˜u˜˜Ï3·3¿dA±³X°Ä°”°<`Yg¥cUfõ`Mcmf}Á†`f³dK`«`dÛfç`×ceÏgïa_ç`àPçðç¸ÈÑÁ±ÊIË©ÊéÇy‘³“ó-=—W WW/×7·>ww÷÷7ž$žFž—¼d¼$^oÞ‹¼Ý¼8˜8r þÀ ><‰Ï—/—ïßg~~;þSüíü+Lñõ3‚A5Á0ÁrÁq!ŒI(@¨XhD!,'ì+\(<,‚‘ñ)E‹*Š‹–‹N‰QˆiˆE‹Õ‹Í‹3ˆ‹'‰·‹¿—8 á(q^â‘ÄOI9É@ÉJÉi)¢”¡T’Ôm©MiaiéBéq‚Œ®L¢ÌM™²"²^²%²ÏähåLäNÉuËýW—o_U8 àªP¤0E¢#™“2H}ŠhEMÅDŻлJòJ‘JÍJ”Å””ë”W ô:XypQ…GÅM¥LeN•KÕUµTuN[ÍM­\mAWÝS½Jý††¿ÆU÷š’šáš­šŸµ”´ŽjÝ×Fjëi§iéult tfuyt}tëu7ôäôôîë£õôÏëO°xÔl*5ì5¢0²2*0Z067¾m‚014¹`2cÊglÚnÌ Ì.˜½403¿c±0·(´xm)eyÄò‘­•‹UÕŽµ¦u¦õ´ M”M·-•­“m­íg;m»l»9{ û£ö,~7±Ž¶ŽUŽÛ‡t]:´ì$ç”ê4yXàpìá~gç@ç{.T.n.-®hW;×:×ïnfnånÛîîEîZ¹kžêž=W½T¼²½Þx«xg{¯ø¨ø\ðYõUóÍñ]÷Óò+ðûè¯ïÙÿs€Y@uÀ^ ]`c.È5èV018 ¸7„#$6d4T$45t.L)ìRØF¸QxUq8âf$F F¥DÍG«FF‰±i‰¥‰ ŽŒŽ;÷&^7þJ*Á#¡û÷‘Gæj-;s?ÖÈ›˜œ¸|\ïxÍ ²'ž$I&e'm´;y;™=ùxòbŠ^J}*ejxêÔ)åS—O£Nû:#s&ÿÌÏ4Ï´Çé’é9éß3<2Ÿ•:›wvïœ÷¹¡LùÌ’,LVpÖäyµó5Ù4ÙñÙ‹L.´]亘vqë’Ë¥þٜ˹d¹Q¹syÆy7óägå/ð-˜(Ô,l,b+:Sô¹Ø³x¬D½¤á2ûåôË_KýJŸ•镵•ó—çT`*¢+^WÚV>ºBºR[ÅR•^õ£:¸z®Æ²¦·V¡¶¶Ž­.³QU¿zÕéêÈ5ík7ÄÊÓ¯ƒëQ×ß6¹6M65w·ZnðÝ(j¥mMkƒÚâÚ6Ú}Ûçn:ܽex«û¶òíÖ;âwªïrß-¼G/³ƒ¬#¹c¯3¾sû~èýõ.Ÿ®Ån—îéûžñ^‹Þ¡Fúê>ìy¤ñ¨³O¥ïn¿Rÿ­Ç¤Çíòmƒrƒ­O䞴ɵ + ßQ¹=zp´cLm¬ë©öÓ‡ã㦣“6“Ϧœ¦æžy>[yøüã‹èߦϠgÒ^R¿Ì™e›-%ôªqN~îÞ¼öüà‚ÕÂô¢ÇâÚRÄÒ÷åäׄ×9o8ßÔ®H¯Ü]Õ]y{èíòZèÚ·õÔw4ïŠÞ ¾¿ñAýÃà†ýÆòÇð{›Ÿ˜?UoÉnuo›oÏîí|ûœö…ùKÍ.i÷ÑW»¯o¾Å|Ç~Ïû!ôãöO£Ÿ3{A{{¡nán¿B$\ÞÞlVÃñ¾œ;Œ@Fù;§øSpð€ß" ‚¢¡YØ×"¹…(^ÔU´:z“5€}Ø2¾“ìùUŠVBåKj 1„¶•î;ƒ.c1Ó‹9k=;†Ã™³…›ÀãÅ{ƒÍo/P.øV˜$rD´SHhI¦HõÈ eµä’åï*l)Š(9*gìUÙQP·ÓHÕlÖšÑAé éè{$^2ª7¾g2d:cöÞ‚ÂRÚÊÆ:Ö¦ÀöŽÝ û¯Žì‡:9ŽtÎr©síq›qÿäIîuÀ[ÑÇÐׯÏÕß? 40>èxðÉS¡§ÃR“#ŽDFDùG»ÆXÆjÅÉÄ3ÅLè=’{4ø˜n"÷qp|ñDRóÉÒäó))©q§"NŸ H I¿ñöœRæé¬±l¦ ó/åbóó½ ÎÞ.š-A^(5-‹./ªèª\¬ÂU‹Ô˜Ö†Öe×7_º¶Þˆ¿ÎߤÞ|¨%êFfkmÛÃö…›{·YîÈÝ5¹çÖÙ™r?§ëJwCÏíއƾ|´Ü÷®ùñ³ƒÍO †Ž ;(Ò~ëyš?<¡>Iœ\šjxñ\öùÖ‹ÆiïÖ™á—'f¥g—^åÌÍ#çï,D/*,¥'˹¯]ß¾ù°Ò¼öVüíÛµòu‡w„wïC?ð~˜Ù¸üÑoSéñÓÖÖÂöôÎÂçí]º¯jß"¾_ÿ±¹Ç··ëŸœ„h ;¨ÁˆFÌ!‘]pÄ?ŒöÀ 0 Xoœn?DÖJ^CQJ¨ l¡zB½Ed¦Õ§‹£obXedvg)g}ÁÎÈaÍyŠë÷G^¾f| ü•‚ï„©E¤D­ÄBÅÏJ\“쓚“þ"K%Ç#¯¤`BòPŒT:©|á`¹JƒêMµNõš=°_¹«Óª{U¯\¿È Â°É¨Óø±É¤é¼Ùšù–%°"·&Ú°ØòØ Ø‹;È8’©:éÖwÖsQw%¹Iº xpz2x¼QÞ»>|—üžùt¶Õ—„d†Æ†é†ÂÇ#J"£HÑØè1±©q‡ãåhÖ<>ZwìL¢ïq›vIn'ƒ’£SSOºpºäLuÚõô»ÎŽž{™¹’õ)\ ¾È}I:G#×*Ï;?º ¥0§¨ªøFIçåÁÒɲùòÕŠ•»UdÕB5Ƶauõ]Wß6P7ª\÷oÊm~Øò¹U°Í©=óf×­­;\wµîyv$wÝoìêêèêo§ŽGM}åý™|mžh‰Ó ïŽ<mËz0®=Á>ñeòéTó³ìç‘/§µf$^²Î’Í~}µ>77?±0°ø`©k¹ãuÇ›»+÷V;Þv®õ¬?y·ü³!û1|óîÃöÉ_R¾2}kýa÷óç/ýÛBt|úe)ˆ7H]äU;êš}CÄTbU±³¸T< ¿CÖF~œÂŠ FI Ü¤Z ¦é!vÑ>¡{IÿÅÄÄ,È¢ÎjÉæÅÃqŠóW%w O'oÿ§|¯øW6¿œ(NtOì£ø+‰ÉûRÒÅ2gd£äœåuDHT¤Š£J Êgzª¨©2«n¨õ«Wh$jºh©isè t–téÕéŸ57´1R6f7& ¦ÝfæÉÞ–¦VÊÖl(l>ØÙÕÙ';Ø; ;~?4èTxØÏYÉ…Üå¥k“[š»—‡°Ç²g±—ƒ7‹÷+Ÿ:ß8?¾(àeà üàÈÓPÐaáYV‘Œ‘/¢Š¢ÇpÅ,ÄVÄyÄóÅ¿N¨:âsTàèʱºÄˆã¦'$“h’¶O¾HîH)‡í$ð´ùé4º´ôÉŒgÏŸ É´È’;Ï‘Mžýõ»‹ —¦rÆsÇó&òŸÌ®mï]Æ—²•©•WWUAÕ²5>µ…uýõ›×äͯ{6E6Ÿh9w£¢µ£m²}ý¸M¼ÃsWöžA‡{ç‰ûU]ã=d½zÎ>œì#ï—{ì21x÷ÉÆ°ÐˆÛhéØì8Ç„ÓdÑÔ‹çL/ì§Ëfvf^Ì;-â–ž½_ůE¾'n¼ù´ø™ýkÈWûúÿými¿`ä¸BœƒšÖPç™ÆPÛ`NÀZ ¢º‚b@ƒû À¹¦40€³üxpÎûÀø1B2†®@Ýд‡àD¨"\Çá¬îbI‰”E:!“‘×S($J å‚:‡êDm¢ùÑŽèóè~ £Š‰Ç´cv° ØXììOœî,n σƒ=™+Ù r<¹+ùM ZŠŠ!‚!›°KéN9D¥BÕ@ÍCGC¤9Gĉ۴!´oé|è^ÓûÒ¯1„2l3c"cÊc`¾ÅbʲÄz”‰í»%ûG!§ç6W÷!jž~ÞStùÈøžò „j ± }~&rO´J¬L¼Q¢[rLjIú“,$G!ϨÀAâƒ=›Œ²ÂÁƒ*šªZj‚jëê75R4m´µ~j¿Ð¹©›§wLßÏÀÖÐÀHÃXÕ„dªb¦a®oaaioånb“h{Á®ÚþžÃ”ã¦õaIgk—£®ÕnãOY¯ï2Ÿi?&›€ìÀ±`ڻВ°•ÅȬ¨ÕýØêxÊ„£GÞsLì?¡™Ô‘¬˜2v*æŒPÚ«ŒòsaY&Ùryr¸òX x‹¤J´KƒË›® «}j—¯7"šJo¨´ ßò¸ó®Ãú~sǃÌ>ŠÇùOT†ß]ŸHy4í4+=·°µüqÅòmîz×û§C›··rw|¿Hìn|»öÃç×ýT€(kÒ@è¯`í3C$ÈŠ‚.B-Ð8´`D(Á¹}¢1gñHd$²9ŒÜCI™y.jcŽô-ô.F sÓ…Åa-°Øeœ,.7‰ÆŸÀ?#“&;K¶FnLÞg¿q‹3B'¥4e U 5;u) ?M#QšØL+K{‹N®ŸÞ†~‘!‚ɘË$ÁÔÇìÁ‚€}•ë[¶óìŠì¯9ò8-¸(¸s§ó˜ðÒòN¨â‹â×`ø(øX¨Bø¤ˆ‡¨IÜX"D2[ªIzRæ‹“¼¢‚)Q±R©_ù½ £ª¦Úau7 Mo­ íXÝ,½ý&ƒG†ÓF›&SA3s/‹Ó–ÕVýÖk¶ÔvJö®goZ=ÌêlîrÚõ‘;ÆÃÈ3ËkÚGÔ7Áo ¨Üò:Œ;Ü1¢0r*š&Æ<ö\Ü“Š#&GÏ{rœxÂ>©ääZŠvjÕiü™Ð´å ÷³ ™ÁçqÙUír¨r‡ós ýŠ5/3—~,­¼]uµæz]çÕ‰†&úÙVûö˜[—î\»×Ý9Üõªç݃o}èÇÔƒ¬C|#Âcâã2“²ÏT_hÎÌZÎ9.X/)¼&¾™]½´¦¹>ÿ>òÃöLjͥ-óí¶Ïô_Bwû¿q}þ1ðKÿÀøü›‚ p4‚1° ±@j°OÉ€n@3,BÖü)D [P"U‘¡ÈrøÄP:¨DÔÔ.š„ŽC߃O»!æf+ŠMÀâ8q1¸q¼¾¿GæKö”\“¼…BŽ?Ø…”\”W¨d¨º©m¨×hR‰<Äû´Î´?éÊèµà³}Qq©˜ÙŒÃÒ ŸkUv{G:§1×ì“2yC8òð«IBòŠ"*¢ªb*âÎù’#ÒHqYk¹ùK ͤ1ÅMeÖƒú*ñªmê”Aš#ÚJ:uzÌúÙ†ÔF™& ¦—ÍÅ-º¬ô¬l)í"í'ª9Lëœä²ãæþÎ3Ôk×'ÍÅ¿:P:èFˆBh[¸LÄ(ÑèÒX†¸´øïGBŽÎ&šïK:x²2y+UûTÎéÕ4ÅôŒŒ…s¤Ì̬Ù6z/Éå´æ‘òºí•””J–uTXW¾¯J¯‘¨}^Ÿ|M´aüzL3MKM«\Û›ª·nݽ[Ö!Ü9ÐØCÙÛøÐäÑJâó`óöðôhØSüxͤÆÔÂó“Ó3=³¶¯æç=¦–T—‹_¯¬¬:¾MXËZ/~—÷>ýCĆÍG‰Môæè§¢-§m¶íg;?~þüåÊ®Åî÷¯ÕßL¾}‚³å³?û÷õá-óû,D¡ zvoï?Øl~œßÛûV¾·÷£¾$f¸øûÅ/_C @Ñþ? Ðá[ö¿‘þD~Šêw—/Ì pHYs  šœ IDATxœìÝyX×Úð3I°EQPA±(Š"-î‚.Hq)®ˆàr‘ë®Å*VETÜ¥¢UE±­KKÁQ\ nˆ‚ "F„BX³çûczó¥ÙHBØôý=>áäÌ™sÞfÞ '3Ø÷1k|@Q±‰;×"„mÝ:$ñ…iH©ÐDTl"þRjšRjšRjšRjšRjšRjšRjšRjšRjš¥Y)õ‹/rssµÕ•÷Ë/¿h¶l‹PQÇšÓaÐúHMÖØ¶mÛýû÷£¢¢ €—¼}ûvåÊ•.\رc‡©©iLLLóûáëë[]]¢R©NNN~~~öööÍo!týúuSSSüG>ŸO"5=jœZœ7o“É”-?}ú´¥¥e“k²´OM'—cÇŽ½ÿþ­[·Ä)õ;wœœœLMM;F hmêˆÝºuëž?Ãf³#""´Õ²XHHHYYYBB‚ŠõÕ`dd$ŸÏG…‡‡ççç?~\WW!ÔµkWÍz :„¦óÅ¡C‡¤§§s¹\„P(LKK5jBhûöíÀ«Ñéô5kÖL:5((Ÿ,‘’’âïï_¸MNNö÷÷ýú5B(==}Ë–-²+ÒÑѱ³³óöö¦R©Ÿ>}RÔ,B(77wË–-Ó§O÷óó»uë^ ÎÂW¬X±mÛ6©ö/^¼˜ŸŸ_]]íï“£¨I’ Ùºuëýû÷.\¸bÅŠ¼¼<©ÊæææVVVVVVx&mii‰ÿH"‘¢££g̘±mÛ¶ÂÂBÉ¥’““çÎ;oÞ¼‡Êv@îð@»ÒtJM&“‡^__Ÿ™™‰zùò%‹Å>|8B¨¤¤ϘÙlö† X,Vhh(†a;wî …666EEEÏž=CÝ»w¯¨¨èÉ“'¡˜››Ë®H$•——ÇÇÇ×××3FQ³¡#GŽ|üø1<<<((ÈÂÂ_¼¨¨¨¼¼]RR"NÊÅ\]]i4…Bñ÷÷Ç—’ÛŽ$ññ×ÙÙÙgΜqvvÎËËKLLl:ºÿC$çÏŸš™™)y¼¬¬,))iРAâÜ]LÑð@»¢Ò¬†±cÇ"„ðë¸wîÜqvv622’¬‘‘QYY9jÔ(WW×òòò>ôéÓ‡J¥>þœÇã½xñ¢k×®ÙÙÙ"‘èéÓ§...²kyûö­ŸŸßÙ³g'Ož6l…B‘z×ÅÅÅÈÈ(99ùöíÛL&óÁƒxŽ8hÐ „ÐóçÏ]\\ÉdòóçχªdE3gÎìܹó¹sçètºÜfÙlvJJJCCƒ¡¡¡¸3ÖÖÖïß¿OIIÙ²e‹@ Ûx¯^½ªªª^½zÅårµ£u!==½‡2Œ††qÆ_ZZš’’òòåË'OžX[[ã9´˜¢¨€vEÕ”ÚÖÖ¶G!ü^R ÃÂÂh4ÚîÝ»çÍ›wàÀüÛ6664MGGgàÀ:::ø5Z¹©Åtuu¸\nTT•J•m–ÇãÅÅÅÍ›7ïÛo¿µ°°ð÷÷ÇôööF=ztÊ”)Šòã)S¦XYY­ZµêÖ­[ŠÚѺ#FØÙÙ:t(!!ÁÍÍÍfGGGãouïÞýêÕ««W¯æóùR *Š*hW°ï#bÖøj«¹ÚÚZ à ´Õ ¢f¹\.‡Ã144”¬Æf³I$R“Or©ªª¢Ñh†)j§%ÔÔÔàß鬮®¦R©:::â·ª««ŒŒ”Ü»…¢ š#*6qçº@¤Ê£^ÔÒB¹©l³d2™L&Kâ_õk’‰‰‰òvZ‚ø)4Mê-Ù)­ñiíÙ‡|™ ¥ Y ¥ Y ¥ Y ¥ Y ¥ Yš¾‰^rrr+ô€veΜ9UUUªÔTé¾ÔsæÌi^èH.\¸ zeUõ¢b†Þr¢bÛ¶à ¡îÃŵüôÄ…?SUU%ù°mUÀ×øLŽ€”€f”ºÅÅÅŽÿ¾­{âž´ŸtDj¤Ô¾¾¾ß~ûmuu5þã£G<<}úÚµk×®]ëÙ³ç²eËð׳fÍjvO€ÔK©ÉdòÝ»wïß¿/U8cÆŒmÛ¶â…!!!IIIsçÎ]ºté‡þøã??¿5kÖˆSU:¾fÍš©S§åææ"„îß¿ïï‘!·ÎÎÎ4íÎ;øïß¿¯¨¨pqqAmÞ¼9++ !T\\0jÔ¨õë×744 „V¯^™™‰âr¹3gÎÄ/ …Â… 666Ê Ð¿¡PX[[‹—ȶ‰ºwïÞ‚ F½}ûv¼Äßßÿõë×øëåË—?{öLÜfLLLNNNttôŒ3ì²’ÄcY¹rå½{÷BCC===÷îÝ«h»È:qâÄܹsÇ¿cÇ‘H$.¯©© =zô† Ä“;L œz)µ§§§©©éÁƒŹ&ŽH$Ο??444333!!/,))ÉÈÈHJJrtt,(( KII±··ÏÎÎÆ“Z6›½aËŠaØÎ;…Ba}}}QQ‘¢|ð‰'&%%á?&''{zz„ƒÁÀóã={öŒ=úÚµk©©©¡nݺ=xð!ôôéÓ¢¢¢‡"„^¾|I&“õõõe×RTTtôèQ;;»Þ½{ã%²mŠD¢ýû÷߸qcñâÅâ9þšÁ`H^MŸ7ožM@@@ll,@]V’x, cÏž=ƒŽŽŽþå—_TŸñlmm½gÏž„„„´´´W¯^‰Ëãââ¼½½wïÞýúõkÙKæ²ÃMR/¥600øÏþSUUuôèQÉòàà`www[[[kkë/^ˆËõõõ###׬YC ˆDbTTÔÊ•+Bt:!”‘‘QYY9jÔ(WW×òòò>xzz¦¤¤Œ5JQ&M𔑑QQQJNN?~¼ä» /^¼:thuuõW_}õôéS„««ëãÇB=òññÁ ÓÓÓGŒ!Û~XX˜··w^^ÞÉ“'•´‰a†a÷îÝM†ŽB¡H$SSSµ–3gÎŒ3úõëgccóöíÛ&W„›0a‚¥¥¥‰‰I¯^½Þ¼y#._²dɨQ£\]]=<<ð+÷br‡ š¤ö£^†îæævëÖ-2™Œ—…ÂS§N=zôˆÉd …B###qesssü20@°¶¶&“Ɇ‰ß-++CÅÇÇãÏ{$“É, O7•tÀÆÆ¦oß¾ÉÉÉNNN¡¯¾úJòݬ¬,>Ÿ/žMammŸ¿wï^¼q•JíׯߵkרTª©©©³³óï¿ÿ.ÄÙª$}}}77· &„……>}š@ Èm!äààpéÒ¥sçέ_¿þÖ­[x¶* B|>_î,mñ´f¹ËjËÛ·o·nÝzñâEkkëåË—Ë­C§Ó(Y¢h˜@9MîKmffæïï/þÏõôô>|È`0Äó‰•sqq122JNN¾}û6“É|ðàAqqñƒ–.]ŠÏÓPÄÓÓ³°°ðÚµk²)µ½½½Í™3gð>ˆç|»ººž>}ú›o¾Á×ûóÏ?Ëõ!ößÿþ·´´ôìÙ³ŠÚäñxD"qÒ¤I!.—‹²´´ÌËËkhhرc‡Ôts„P·nÝðïnÊ]V‹***ŒŒŒºvíúþý{&“)91ýÙ³g"‘ˆÅbýõ×_®®®’K) PNÃG½L:ÕÞÞ=bÄ;;»C‡%$$¸¹¹±ÙìèèhU144 £Ñh»wïž7oÞ>}úTWWWPPPWW§dAöõ×_[YYá3$‰Ä={ö<{öl„ 3fÌØ¼y3^>tèÐÚÚZqJ][[«<¥622ZµjULLLaa¡Ü6Ùlvppð´iÓ‚‚‚‚‚‚ B3gÎs挳³s^^^bb"BÈÕÕ•F£Q( „Б#G>~ü„—Ô××544h!~à‹§êUꪪ*„®®®ì[ååå^^^ãÇ÷ôôLMMMJJZ¾|9@@éëëGFF‰Ä´´4"‘ÕÐОžN§ÓÅ-(¯“‘‘QYYéåååàààêêzþüù>àÈ1 Û³g©©éýû÷óòòB=zô P(ÀÝÝ!$‰*++kjj ÆØ±cñ.yzzzxxÈ~6@ª^¥îÚµ+BèéÓ§²o•––"„ìììB†ÙÚÚòx¼ÊÊJü]sss}}}2™L ¬­­Éd2•J•jAy²²2„P||üwß}wùòe2™Ìb±ð·ÌÌÌLMMBúúú"‘H¶o†…„„DDD¿{÷/$R­Põ*µ‰DÊÏϯ¨¨èܹ³ä[xRË`0ð™L&@066ÖVÍÌÌBÞÞÞ*."™^»¹¹õïßÿ—_~‰?pàÀ¡C‡´Õ1êW©;wî<}út„ÐÖ­[Ÿ?^^^~ïÞ½èèh6›=xð`*•úàÁƒÂ´´´²²²aÆ‘ÉdmuÑÅÅÅÈÈ(99ùöíÛL&óÁƒÅÅÅJê÷êÕ«ªªêÕ«W\.—Íf§¤¤444øøøR(„Ѓ–.]úøñcmõ|ÉÔ¸‰ÞâÅ‹ Ö¯_¢P(vvv†™˜˜lÙ²eïÞ½† 2$$$D‹]444 Û¿ÿîÝ»B&&&›6m²²²RTÊ”)oß¾]µjÕªU«†·wï^ Ãz÷îíï磌«+((¨««Ób'À û>"fm€¯’ÉÉÉsæÌÁ¿žˆ‰Deee"‘ÈÜÜ\j:ruu5…BÑâõi)µµµ†¨R¹ªªŠF£á=är¹ÇÐÐPªŽ‰‰‰ö{ :¾ .HæÀrEÅ&î\ˆÔºJÃ0 ¿W´,¦nkj‘͉•L—ÉdrË%úà §ê\j€\*]¥¾páBK÷€ªé”zΜ9­Ð:¨¦Sj哲øÂÁ\jšRjšRjšRjšRjšRjšRjšE¥§'jË‹/tttúõëך+U$..ŽJ¥úøø´ÎêÁãÇ=z¤««;sæLƒ!E+÷D- "‘Höq?RÃéܹsK¬½ƒ _ͯR¯Y³fúôéB¡!”——çááñóÏ?ãoíÙ³'**Jv‘;v8p@ü#ŸÏ×xíÍwýúõ7nhÜuë?xðà‡~À0ÌÀÀ€ÃáH†Bª'*Ú´iÓ½{÷dË}}}=<<<<<¦OŸ¾eË–·oߪ۲¤¤¤¤¤¤$Ùr©á4gJh=h-Aó«Ôýû÷ÏÎÎ.,,´³³{ùò%BèÍ›7ø[YYY‹/–]䨱cÂ?I|HHHYYYBB‚ÆÐ"u;£Açïß¿ Ò××Gÿ…ØlvNNÎæÍ›å¾kgg·nݺçÏŸÇÄİÙ숈W¤ˆÔpZˆvƒÐB4O©œœÎŸ?Ÿmgg—››K"‘Þ¼y# KJJ***ˆ ¡Ñh_ýõ™3g¶oß~ðàA¶mÛ¶‹/æçç …Bÿ5kÖ8::ÒéôƒæççwëÖ-$$DvrˆTS$I¶~nnnBBBvv6•J]´hѸqãB}úôY¿~=BhÅŠ]ºtÙºu«d˲‘ÛŽ’úÅÅÅGÍÍÍ¥R©#GŽ\´h‘ŽŽŽä"?ÿüóÇñ|óÍ7‹/Þ¾}; ©a6ÜóçÏ{÷îM¥R徫££cgg×£GsçÎ}úôIIËÑÑѹ¹¹ ˜?~Ïž=Byyyûöí+++9r$Ç#‘¤wÙáHm]]]¹ ±´´ìß¿ÿùóç 6nܘ““sþüyssóuëÖ™››·hÐZˆæ×üúõëG ²³³B¹¹¹#GŽlhhøøñã‹/,--ñɵ%%%/^¼ˆnܸiÓ¦!„ž={&‰¤Ú—;ñÖQ}}ýÈÈH"‘˜––F$£¢¢ÒÓÓétº*kQ=hR{,€Z†Ú¨1»U‰²í:::¾}û6%%ÅÎÎÎÞÞžL&çäädee-_¾\\§S§NRù´¬²²2„P||ü… Bd2™ÅbÉV7%·>†a!!!û÷¸råʪU«zõê¥úèÄÔm§´´!dgg‡/kkkûâÅ‹ÊÊJ333uW­b ‚¢vºwï´mÛ6|‚ ‘H”Û²P(1š@ X[[“Éd ÃÔ]—$EASë×@’º×æšu=''§_ýõÊ•+žžž:::¶¶¶÷ï߯««“¼J­„øò'žly{{ª² ¢únnnýû÷ÿå—_âãã8pèÐ!¼¿;‹ÅRro Ék±ŠÚ‘[ßÔÔ!Ä`0ð™L&@À/¯ªKÅ8dff:TI …2tèÐÙ³gÇÅÅ]ºtiΜ9r[NMM½xñâ’%K|||Ö®][RR‚êÔ©BŸ*# 9™LVkZ ˆ*ÔÝy´®Y÷Oèß¿?†aµµµ!‡ºº:+++<©R®W¯^UUU¯^½âr¹...FFFÉÉÉ·oßf2™<(..V²¬Üúl6;%%¥¡¡ÁÇÇÇÐÐB¡à•­­­ß¿Ÿ’’²eË@Ðdgµ£¨>>MüÁƒ………iiieeeÆ S7 U2.ÙjÊ'R‹á·‹>wîN—Ûrcc#BHOOïáÇ £¡¡Ãáôïß_GGŸ­±sçΚšuG¡Å€¨BÝ@ëš•RwïÞ!„ßcÁÞÞ!¤â%ê)S¦XYY­ZµêÖ­[†††aaa4m÷îÝóæÍ;pà€ì—%É­ÏãñâââæÍ›÷í·ßZXXøûû㕽½½BG2eŠÜüXª3ŠÚQTßÄÄOÖÃÃÇ ¢JT—TºººwïÞá7TQNWW7 €ËåFEEQ©TÙ–GŒaggwèС„„7776›­££3{öìššš#GŽØÚÚj0}E‹Q…º;€ÖaßGĬ ðm²^&½±%&§VUUÑh4ñlÚÚÚZü¹*..[ŸËår8CCCÉjl6›D"ÉÞ NIgä¶£¼óÕÕÕ E+—c•ÄáîÝ»)))áááÚj¹¦¦ŸE]]]M¥Rñ»Ý566]]]ÍÖ‚Ób@T¡îΠˆŠ©oTlâÎu¨•H.KꛋÊSXY²õÉd²l§§§§ngä¶£¤>BˆF£©²U(‰Cee¥§§§[Æóiôïþ‘KK¸ IDATkå.Z ˆ*ÔÝy´¥Sj ®3f´uÀ¿ÀãhH©hH©hH©h–/åë‰Q±‰mÝh.Uîy ÊAR¤œfGÚ/%¥Fáw €ªªªÊÄĤªªJ²ðË95ÂÇ ´(h‘_[w¡Šù9^³¿ ”:4ñ¤,ýNÇ5=ÉäÒ!ÂÔ_-ƒ”:62 Nõ@J­uR@Ǧ)5@M:$¬­»ð¹”:6¸J P\¥Ö:H© cƒ”´4¿Ûþ¿BúÙ ¤ù ¥Ö:­¥Ô/^¼ÐÑÑéׯB(..ŽJ¥úøøh«qŠIĶî—Eò|§mE"QYY‰Dêܹs«­wå’yÊ+tèžU·áùîøñã×®]›={öwß}Ççó?~äȇ3kÖ¬–^µžŽKIf íäú®º)..>wîÜøñッƒ+++KKK[¨c­Œ'P;¥ŽŒŒøã÷ëÞ3|ú/622þPXøî]ží „î¤ÝA-]Œ_çŽýù @Ь©öCÔšH$ZYYI–lß¾F£mÛ¶Mª&N?xð`~~~·nÝBBBð¿”…„„Ðh4ØØX*•‚§¢££sss+** 0þüž={â•---û÷ïþüyƒ7æääœ?ÞÜÜ|ݺuæææŠÖ_u¯6ñøB$B<¾B5426æ D<.'ä?A£ÆŒ»}3%ædÜÍ”?Ï9%‰&LžòÝܛ֯Z¿ñSÓ½»zõî3ÍÛçéãLú‡Â¾³N?òüÙ ÃŽÄœBýqýÊ/‰{ÚÚ.ýOWsó–nŠ‹‹=š››K¥RG޹hÑ"„ÐÛ·o÷ïß_VV6jÔ¨ÊÊJ‡³gÏñRÏŸ?ïÝ»7•J—ˆOs}ûöÅ0ìÀqqq;vì@ÿ>ßåææ&$$dggS©ÔE‹7ýïçæævîÜ9 Ö-[öõ×_KõSö|wìØ±Ç‡……uïÞ!tâÄ @°téRñ"¥¥¥¿ÿþ;…BY´hžÓÞ¼yóìÙ³S§NÕ××Wtn“»ŠþýûŸ:u*((ÈÕÕUI`ëØ| 6‡l¶€wò믿>sæÌöíÛ<(ù£®®®ÜÍ'µ‡Ã‘ »ŠÔ“É …UUU"‘ÈÜÜÜü;v@@@Ÿ>}Ö¯_Z±bE—.]¶nÝŠ*--=vìXNN†annnkÖ¬‘-‘›´Èݗ䪾¸êæ¯ÅEEIünÓ£çŠÕ† êÞÓ¶{O[¼â¢¢#÷ç¼zE5 Ž=vQ@ ™LF­\dL£Ÿ0éDÌQ*Õ dõZ{‡¾§NĤ§ßC.^ôÍðA˶l5¦Ñ¶‡ïA½y»/rO“9z츊ŠO6;rÿA„ÿ|¿>öC@-\Ü¥k×°íáâU|ã>üô©Ø»#I$Rô¾¨ü¼·ÝºYüwÍ:Çþ_©5ÌæÐðs¶@ `0 ƒÉdâ%%%%â×bl6{Æ ,+44ð;w …B¼rvvö™3gœóòòÿùº‘Hœ?~hhhfffBB‚¸åŒŒŒ¤¤$GGÇ‚‚‚°°°””{{ûììì{÷î)Y | ¸|¡Zÿx|_À?r(úðÁýë¾ßÊå 9|AÁ»|¡‹>z²¾}æçØð¨ƒÑGO¦¥Þ.f”tíjñäé“F/ëùÓ¿=äò…é÷îÚöq(-+O¿—¶ÿHìÞC?qùº†Æ«¿ýzðø)7÷‘W¯üªn¯”ÿS5\î† Þ¼y³lÙ277·ÄÄDñôŒÝ»w3™ÌÀÀ@‰”‘‘QRR"¹`FF†’„ràÀ¡>à?JžïŽ9òñãÇððð   q…/^$%% 4¨¢¢âÀ²mʞŠîܹƒª««»zõªT— „Bá€Ä×Èíìì8ÎÇ‘âs«˜ÜUÔ××544(m=›¯üŸÜ¥8NJJJJJJzzºdpâããL¥R%ÔÑÑQ´ù¤–’v©;ZZZþõ×_ÁÁÁùùùâò¢¢¢òòrq÷>}ú„âr¹ëׯòäÉĉƒƒƒíííeK%-r%[¨ÖâJðø"µþå¿{'‰rá ¤—­¯g¯[µòunîÒ!ÃÜÜ/%œ?vøþVqqQvVÖÏ'O 8øí›×/\àñEnî#-,¬B }3b4^­´¤_d׎™¥¥A+01ãÑCƒ—}¤—1™økFqq³L¼ŠÏŸŸ=szËP„×­aUWoÚ¼ !lGØW îHÕÚ$ix•ºªªjáÂ…¡Î;+™Ç–‘‘QYYéåååàààêêzþüù>ØÚÚ"„0 Û³g©©éýû÷óòòðúÁÁÁxãÖÖÖ/^¼·£¯¯I$ÓÒÒˆDbTTTCCCzz:NW¾øì©;ñƒË0‚]Ÿ¾E?Þº‘¼ `9—/¤P©^Þ3"ôüù³î=lMÍBN΃>¸ï8À9ëéc“NfnÃGýuÿ›Ëý:ÇYBˆ@ D„o[¼,ÄÈÈøéÓ§|ÿôÉŸêjk‹‹>ªÛ+­ÈÈÈ(//÷òò?~¼§§gjjjRRÒòåËËËË‹‹‹Ç?qâD¼šHô¯gffæ®]»5keeE"‘d“N‘HTYYYSSÃ`0ÆŽ+9D__?""BOOÃᤦ¦ÒétÉeeÏwnnnºººiii ,¸y󦹹¹³³³ä"ÿý7BHªîÝ»¿{÷Nü˜z¹çV1¹«‰DMNþ©çhr•º¾¾>>>!dnn>|øp¼D"8pÀÄÄDêÇôôt¹›¬¸š’°«Ô%5B"‘:´cÇŽgÏž…„„¬^½ZÉàÌÌL&“9f̘€€¼äþýûR%wïÞ•MZzöì);(¹#•›óÈ]\9u¯RWTT"„tȺ² >|ô ¼¼l¢×´QFŽŸzûFÒ×/[ùO70´m÷>SÓNÒïæ½}Íml{ÓBC¿.xa³´¸èã¸ñ“ÆN˜<¡Ì¿ŠD"ñE•ñúx9‘DŒ8pÌÄÄ4ýnjeEÅ„ÉÓìúôuqu»t>®   ‡­Z#Õ˜†W©MLLââââââä~ø+++CÅÇÇ÷Ýw—/_&“É, ËÌÌÌÔÔ!¤¯¯Ú„BallìâÅ‹çÎK§Ó%wæææúúúd2™@ X[[“ÉdÉ?Ï)Y |öx¡zÿ„BŒ€¹º^õý¶Ô›É… y!Bþn]}=~Öä „Dr}CƒCÿ/³Ÿ?}’9`°k÷ž¶i©7-­m"$¡ðý1ºú”ÿ.]XͪáryFÆ&]†¹ö˜°\í^)ý§b(ðy®vvv! Ãlmmy<^eeeVVBHÑ¥–ÂÂB •ªJª®®æóù²Wþ0 100ˆˆˆ~÷îø-###===„>Å¢°°PrA¹ç;===77·âââ·oß^¿~ÝÛÛ[juø”ƒ7oÞH¾~ýZü’wn•$w†„&SjÍþ’`jjŠg âÂN:‰óiÉm>©jJ® bhh¸{÷îåË—‹D¢ÈÈHñYø•”ÈMZäJn¡ê‹+§îï`'³.¡gO2eß*a0BÝ{ÚñB¾PdÓÓŽÏã••—óB$B;w146á „ºzúB¡_D„D’}@"„Dˆ'>þ!dÝÃöŸj"$!ñA@(‰_ÿ¹™šv60¢ñBfi)B(!þÌÂ93~KLÐÑ!Wþýw mdi˜R‰ÄnݺuëÖ­K—.Jª™™™!„¼½½ÿø©ÏÜ’ÒÒÒ.^¼8~üøk×®988¨ÞµÖŸ¾@¨Ö?@ˆ/UUUÍa7ŠDˆÿ¿¾@èè4ø}þ[6‡Ãåñs_¾8ØUb@&ë>~tß®O_û~NÏ0Ø•/²9¢yÑÒÿšv2ûH/t8¸”Qdݳ—½ãÛÞ|Çd<º_[['ûBÝ>« <›d0øL&“@ ãé2^^WWWWW'¹TffæÐ¡C•4{ãÆ „Ѐdßrss;yò¤ŸŸ_^^žÜkLÅÅÅèßR|¾3f BèðáÃÕÕÕRMõîÝ›L&çææòx<¼¤¼¼¼´´ÔÈÈÈÒÒRIÿ%)_…<¾Pù?Õ›RDÑæ“­Ùdص> ü½½ÇŽ+ _½z…òù|„‹Åâp8x žôKþ}@¶DQÒ"wP²…j-®_ R럵‘Dzÿ.¯¼¼\ê-#š)B¨„ÁÀ,g2 ÕИ/‰ýo]ø¥å^‹þÕqµn–6¡’âb¾@ÄbÕÖ×Õ¢ÿ-‚œ/UUUs9\‘I-ˈL:™!„&Oû6þÊ ü_?§AêŽTÕ=IFË>êÅÅÅÅÈÈ(99ÙÎΟ mcc#õM±ÆÆF„žžÞÇ Fcc#‡ÃÑÕÕÕîZà3#ªwE\gõÒùÑÓkF—nV\.WÜYO´own^‹a˜}?§nÖ=BQ¿¯œË˜%#Ú;8wòhÿ.¡è㇇£¶›[X›˜ôìÝÃ0/Ÿ9«—ÎïaÛ[WWwå†0€¿wÇæÑ',­»K½èÞC;sóx<ÞÓ§Oñ× ŸhûàÁOOO:^VVöõ×_“Éd{{{ƒ””››Ëçó%/ÊfddÈÞ1o¹±±ñåË—W®\1553gŽT6›}÷îÝúøø\»vMò½¥¥¥)))Ož<±²²ÂÓ 1Eç;CCÃ7oÞÌš5 ÿv—$Ÿ .ìÝ»7 €Íf:t!´páBü;|ª]ŃΞ=»xñâ!C†(YP³«w’ÈÀÀÀÞÞ^IeE›Oªš’°«Ô%5’““C§Óù|~nn.†aÖÖÖ!kkë÷ïß§¤¤$%% ©!|õÕWƒ.))‘-‘›´tîÜYvPrGªúâÊ©þIgdÒi‚׌?®\Úócèw ƒºv³,È{ýêÅÓ¹þË ¦P¨ï¹ö(þHÿTÎìú F ñÿ¹œ,’\—¸Pªxµv}¨Tƒ´[" Ë›Ëð†áÕ,¬ºÓ nßHJMùC à‹Ðÿ7+^Eÿ.†F·Sþ°¶±íÓ·?½ðU÷æ­”¶lJmhh¶ÿþÝ»w#„LLL6mÚ¤(Ù1bÄõë×ñ»¹¹¹%%%EGGoذA»k€ÏŒº)µÅàÔåÿ¿•¬@("’tŸùUÜÎ(Ï)#ÇMŠ„D" /œµp)^Ó²{O|YPdÕÃnסŸÙìF}}ŠP„H4f´Q^[ŸBE#žþõÞ¦Ô uû¬‹ÅÚ¸q#þÚÞÞþðáÃ[¶lÙ»wo`` †aC† ùgÎ÷Ê•+Oœ8ñ×_-\¸ðøñãâD­®®îÝ»wøe[&ݺuóôô\¼x1~ÇXI</..nïÞ½†õîÝÛßß_ü•J½víZ^^žAPPÔ‚ŠÎw:::îîî7nܘ6mšÜñ.\¸POOïÂ… ·oßF­^½Ÿ ®"ÙUÔÕÕH]¹—¥ÙäxÉ Ô·o߃*©lbb"wóIQvU¨;¢¢¢ýû÷#„0 ³³³[¹re=BÞÞÞ111G Æ¿*¾}û¢¢¢Býû÷ß¿¿l‰lÒbll,;(¹#•›óÈ]\9 ~}ç-¦\ÿåÂÎÍkBúú”î=í„"d`D Þ°5öpÔ†à Ü ]¸4D²ý^‹þÿµH^BBØ‚¥! g~z–ùè[¿Eñ§Žëèñj“½/œ>÷ÓáA+Et$B²«Ð£üwÓ§Žî;²/!dD3Y±:ÔÌ\Õ¿á4ö}DŒ*Þ̤7µÑ×x5µµµ†ÉdÕÔÔà·®¬®®¦R©ªòV¾–¨ØÄëUo Ú›ÐÈŸv® ”šÇ›èûí·mÕ¥V“xù²Zψ®®®¦P(’8™L¦™™‘H|ùòåêÕ«‡¾eË„ÐÝ»wSRRÂÃÃ5î—Ëåp8†††â___üY0UUUÆÆÆŠ¾+&÷|·nÝ:##£~øAÉ…BaII‰žžžŠOO”¢Ê*¤DÅ&N𚮼NòïW´õoÙÍ'K6ìªÐl \.·¼¼œJ¥JNG±Ùl‰D"ɹ:YUU¥§§§¯¯¯¤D6i‘;(E#Uqq¹¢bçÌšÙd5¹D"Qå§2‘HÔ¹‹¹ÔüV•¾>UGé†kRE9Ó´“HÌË}¾yÕ·+ÖmÁßâ°Ù$‘ØôåàúºZ Ã(Ô¦ÓNY.^ÂwS_q†Ù²W©ÅTßéÅ·‚§Ñh-·ølhëŠïçDö VRRbjjÊ`0,--Å—ñ*++===›³.2™¬(ù“ÊÀ¤Èžï’““³²²¢££•¯‘@ hü—XW!gÁ߯h¶F ¨’( »r „L&Ë 8þ T¹d7½l‰lÒ"wPŠFªâ⊨;ñC­SôÏ‘ç_Šq3[Fؽõ³ÄØÄ´¬”ÑÅÜbÚì…â‰:d‘jíëêS›ßuµRJ  …ð!¥VAdddAAAII‰£££äÍ=f̘¡õu­_¿^­?±ŠYXXìØ±C껌ڥÙ*´uù¹Í}6i¾vûQ|Õ{ŠéïË™%vöý,¬lP;îªH© cë(ç›¶ehh8pà@Ù9Ó-Aù÷ü”prrÒnOÚd Ch·Åu)v}ìú:¡vÜI¹ ¥€ŽMкÜ|ࣸÖAJ [ǺhࣸÖ}A)uUUUTlb[÷´ìÖŸ×Úº €>ŠkÝ—’R¯ ð511ûè>3ðu+€ࣸÖ}))5BHêf®_ ø(Þäß "5®RgÒ[®tPª¦ÔÍy9Ÿ1˜ø@³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³@J @³BQ±‰mÝ :’µ¾â×$ü¿ëÛ¨3_ŠÐÈŸ È- ‚Ü: έ‚Ü: έ‚Ü: έ 4ò'É:*6ÑÄÄDü#IüªªªªUûõE‚ ·rë€8·rë€8·rë€8·¡VKÍãñ ŸÏo‰Æ/]ºD§Ó[¢åŽ¢EÃû…k¹½ëÚµkoÞ¼i‰–˜Z›¯cI¾„ƒjiii«-ÕVàè Àg€Ôt-9}útzz:F{ÿþýÆ]]]µÛþŸþimmmcc£bý7îØ±ãÒ¥K}ûöuvvÖngZ_ …788¸ºº!TQQA¡P( BÈÇÇgúôé‹- tssÓÊŠÚ%ƒUwïR]ZZ‰Drpp*÷óóûꫯ6n܈ÿøèÑ£_ý522RëèÐüüüF­¼šZ›¯å¶µÖµ“ƒj‹%Î;çèèØ­[7uÌÉÉyþüù¤I“4^u«iéí$ùùùq8¡PاO__ßÁƒ·u:<Ã_‚VJ©étúõë×ãããõôôA›oll$“É$éÕ«W¾¾¾M/Ð¾É ïêÕ«½¼¼ÆŒ£b#rë:täåå5eÊñ[ÔÓÓÓÒÚ%ƒmwîÜñðð€#>«ýT[î(qóæÍ²²²¹sçj°ì¸qã6oÞlff6dÈ;Ð 4;z«{x’‚ƒƒÝÜÜΜ9³oß¾³gÏrþ\Öº/!¤­”R …ººº?öéÓ‡H$‰D„ÐÙ³g=zTQQ1lذU«Va†úþûï½¼¼nݺ•=qâDŸ]»v}øðaöìÙÞÞÞx…I“&ýù矹¹¹ÎÎÎëÖ­Ó××—\WIIIdddaaá Aƒdße0ÉÉÉ,ëäÉ“t:=..nèС_}õUë„¢%Ȇ7..îíÛ· #..îäÉ“çÏŸ—êñãÇ'%%YIÖÇ7r»víòõõuvvnr“)ß"›ÍÏÊÊ=zô²eËпøý÷ß˦ܼ¤¤dÏž=EEEÆ ãp8ŠÖ8yòäèèèØØX]]]ÉrÍ~q>­Ð$¹ÁAÕÖÖ†††J4:tLÚÏAU‰f%nÞ¼„7Õd =Šg0îîîkÖ¬AM›6-55µ§Ô½¥*¬^½zÅŠ}úôAmذÁÏÏÏÉÉI6@™L¶°°Ð××'{öìéÛ·ïÔ©SB «W¯2dˆd„ËÊÊdwNˆ°²"©VnH¿ÿþû)S¦Ü¹sGò<[VVvøð᜜‰4þüœœ©µÿþösèn¥¹Ô={ö5jÔÿûß_ýU$á…–––?üðÃO?ýôðáCñtÒÒÒÒãÇ3fË–- [·nõõõ]±bE\\þñ½´´ôôéÓ“&Múá‡òóóSSS¥ÖuèÐ!ww÷³gÏ666¦§§K½K¥R‡ Âår'L˜@£ÑVVVï޽à ÅT4LÙÈóx¼—/_Κ5‹B¡ 2¤Gâ+©RˆDbppðo¿ýVPP Y®Á/Îg³š¤(8²Ï &íä ª"u÷Ï?*•ªJ †aö×_ …BqÞµk×’’‹¥Y‡[ºGï&×r£Äž?~õêU …‚ÏÑ5jÔ‡ð %)))&LŒ°Ü"¬œòVÉ!Eê<ûîÝ»‚‚‚yóæõèÑÃÐаsçβ«Í)Oë}=!4{ölggç~ø!..nÉ’%wïÞ½ÿ>›Í.,,twwW&0 Ã_KMu"“Éø kkë¿þúKò­W¯^ ‚½{÷â?ZZZJõáÒ¥K•••t:ýĉ?f0¯^½Z°`VÚ6¤Â+ù–¢P›ššjeÕJ6Y“[¤£÷\GGG\( ¢aÊF>''‡L&wéÒE••ÚÛÛO˜0aÿþý³gÏjð‹óÙl…&) ŽìAãóˆI{8¨ªHÝý“@ …B[@}ÿý÷áááwïÞ]³f‹‹ B¿è+w¦l{£ÁÑ[9Ùh±éÓ§9òÒ¥KAAA—.]266vqqIMMõôô”B€¹ IDAT,)):t¨deEû?DX å;­’CŠÔyöÓ§OÁÑÑQ\AùÆjs­šR#„ìíí½¼¼222Þ½{·gÏž'NXZZ®_¿^³ÖŠ‹‹û÷ï/YbllÌçóüñÇN:É]ÄÙÙùõë×...#GŽ|õêÕ¤I“Äç’Ï€8¼øøEõP+šÐMn‘σÜaʼ‰‰I}}}CC~c„&cîïïïïïõêU%mjÖ½Ï*Á4>›˜´ùAµùä®ÂÚÚðÚÚZCCCUéÝ»wllìåË—·mÛöË/¿Éd&“iaa¡ââmNÝ£·ä¡ÿìÁçóñÙh´Ò0:Ž)S¦üüóÏÏž=sss7nÜ©S§D"ѸqãÄSñ+Úÿ!Š4¹Óª~H133 …’7Å’»±Ú‰VúøþñãÇ÷ïß#„„Ba~~¾……ÅßÿmhhØ¥K:þéÓ'ñ@ÙÙÙ"‘¨¦¦æéÓ§R÷C°³³³²²ºxñ">·¬®®NjÙÞ½{³ÙìáÇS©Ô¾}ûöíÛ×ÎήÙãkc²áEuíÚõãÇ!C-®¯]Mn‘σÜaʼ‰‰IRRŸÏONN~÷îò¬ÚÀÀ`É’%YYYx5Í~q¾­ $8²Ž“ösPm>¹«À0ÌÞÞžÉdªÒÇûðá‘H7nBo‡Édöë×Oë½Õ.ÍŽÞ’‡kssó‚‚‚ÆÆÆýû÷×××#Ñ’„Báo¿ý&‰ð\í믿®®®þõ×_Å Ä–»sB„•hr§Uý‚×¼té‹ÅøD5ÙÕ~´ÒUê¼¼¼}ûöuêÔ‰H$vïÞ}É’%¦¦¦æææ3gδ´´1bÄåË—Ü»woUZc2™‹/®ªªrrr’º…'‘HܲeË®]»fÍšE£Ñ,,,vîÜ)µxnnî¤I“îÞ½+u1¦ã’ /Bhâĉ‘‘‘Ož<9pà€*¡×?räˆû¦Êù Èæ AƒäF~Þ¼yGŽ9sæÌĉ{õê¥h.µ˜‡‡Grr2þZQ›tO;#ok‘‘‘â? îØ±CQpjjj¤=&íê ÚLŠV1zôè«W¯®]»¶É8ΦM›tttˆDâ‚ B×®]kó[a6I³£·äázÚ´i‡Š_´hÑË—/‘‚h±={öìÞ½»OŸ>+V¬À¿IE&“‡þáÃñ]Ø%#,»sB„¥¨rVR¹Í‰ÄÍ›7oß¾}îܹºººÓ§OŸ;w®ìÆj?°ï#bB;×¶ôC,Aii©™™™äÁÄÔ«©©122R¥üÙ...l6[É_ôX,–¾¾~ûù[LTlb‹Ynxù|~CCXUB-Y_ëZa‹´tU!;L¹‘çr¹@ã¯*kð‹£¨{hqVB68õõõúúú@îA£½+pªùó;¨Ê®âðáÃöööª,^SSc``€Ož~ôèÑû÷C{Ø™5;zKVàp8AòkèßÑh[í!ÈMúñÇ%?ƒIewÎöa\»Šs“;-RçR]]m``@"ýsXvcµš¨ØÄµ¾’?î\ùÓÎu¨5ïøA$­¬¬¤î°+>|«›Æéèè(Ÿ!gllÜÞΑ-JnxI$’8°ª„Z²¾Ö}![Dv˜r#O&“›sëq¾„­ *•Š'r7&ŸßAUvË—/Wý;FFFâüÆØØ¸£ÜÝL³£·d]]]©|ý;@9&“ùøñc©çÿIewNˆ°Mî´HC FçÓr7V;ñO«ªª¢bÛ¶+*rüfÒƒœâ9£·’:P;.rë€8·‚V rû?¨þ~ÿ¥K%=ÌQ¥ìÌ­ ýyä´ùÇþlë^4Wû³V´ÛõÏÄÉëØ%Úl⟩ëÑÿºãÇgðÁvNüQ´rë€8·rë€8·rë€8·‚ÐÈŸðd¿J-.oíG½ 9.¥>©•aÆþ^ª>OÐÒ`âGËjÃÛÙƒ¡z¹•––644HÖÖÖ5ùåý†††Â½s~\\þl­KLL|õê•¢w…BaQQQYY™Ôc–[Šûa+ìh—¢ÿuÃ}"«ÜhL3·3òº—uïË3¶+IH~ÞÖÝjS²s644à4Q…ŠgU IÉiNQú!7¥‘ ®R·ˆOŸ>EEE½|ùÒÞÞ~ÿþý­ßððð¬¬,sss&“¹páÂI“&)/—tåÊ•]»vá·¶Á0ìÞ½{xùêիůB–––â§d‹UUU­^½šB¡0™ÌÉ“'ûûû‹×›››Û©S§Â€€€©S§Ê®—Ãᄇ‡çååYXXäççoÙ²ÅÅÅ¥Éõr¹Ü… :::†††J¶¶páBüÀT^^N¥R©T*BÈÏÏoÖ¬YW¯^íÑ£‡­­­j±TÃ7H$’ì#„;–œœlkk‹L'Nœ¸råJ­w@ŠZû¡*û†\^^^ÁÁÁãÇÇ|˜ÇãɶvúôiüÅœ9s|||Ú6÷ŠŒŒüðáCbb¢±±1BH(VWW·ÂzÕÚUÜ7T§hÌš5Kn9nýúõãÆ{üøñŠ+&NœØ³gO©fׯ_?vìØ´´´M›6¹»»›››7§“êZ²d‰O;|î—IÑNæçççíí]__ïíí=xðào¾ùµƒ#só]HyÒÅžËñyB.‡WonËÚxà—Ý!>mÝ/ *E;ç;wø|>þôâÕ«W§¤¤à'JEg@UΪ@Š¢#†¢ôCQJ£Lüh ¥{÷îmØ|§AuíÚ•Åb566*/ˆˆøõ×_•·I H$‰D*))¹~ýú²eˤ–e³Ù7nÜÀ?öQ(”Q£F]»vM¼,þ¢¨¨¨GrÛOLLœ={¶¸¦ø1ÝŠÖ‹zøðáÛ·ogΜÙä3½¥466†††zzzŠŸ¡ºråÊ›7o._¾¿Ú]\\0jÔ¨õë׋ÿâsâĉ¹sçŽ?~ÇŽâ_¹ââbÿ1cÆlݺ¿º ¥¬¬ìúõë!!!x>ÈÔÔTîzKKKƒƒƒGýí·ßÞ¼y¯ãïïÿúõküõòåËŸ={†/˜šš2zôè 6Èý³”Zû¡¢}£õaæääD&“óòòäV ýû÷ …µµµx‰Üí%¹iÖ®]«<žr[¸wïÞ‚ F½}ûv„PLLLNNNttôŒ3A‹¨JîNËår_¿~=dÈ„•JussKIIÁ«µù‘¹™>”üÍ7,E:\žÓÈ®©©©œûÕÊ©žVi¹mÝ5 %;'@xõêUyy9Çc0â¿v*:ªrVRæä¦JRE ¥þÌ]¹rÅÙÙYö^.RåÇwü?öÞ=.Š#kü.†t@„EaPÄE‰\/`TÑâ%?$°¨D@Q1HPAqAV!ýÄÛ“U‰(“@Â*OD£#£BÄaë sŸžî÷zÓ;;ÓÝ * dûûWs¦«úô9EÕéîSU®®ø¯555{÷î-++#LÒÊÌÌüøã5˾zõ A(·±±QÍX***Ú¿ÿãÇÕ24 }}}ýýý</$$dÙ²eÿøÇ?4/­vÝžžž£G¦¥¥éëëkmÿŸÜÜ\œœœ+W®À¼ê¶¶¶ãÇïܹ^ËÇÇçúõ뉤ªª –²³³ËÌ̼xñbuu5ž3‘‘áìì\RRâëëÛÖÖ¦©vss3`úô鄚¨^ð;wZ[[mÙ²%--íéÓ§‡#“ÉðóaàÞÖÖöå—_fdd|×××çæævÿþý€€þ¹êÔ©OŸ>uss“Ëå}ÚØØ˜••enn¾dÉ’Ë—/—––º¸¸ÝETT”··7`éÒ¥wïÞ…w4 …Fù8S§NÅ•!k3Ôp8ü¸³³SÓ¿ÚsöìÙ¬¬,™L–œœŒ÷eª¤¦¦Êd²wß}÷ôéÓPBè/m\ƒCXƒžžœK0cÆ ¨ ‹Åb2™&&&øGš‘€f£õ÷÷/((`2™ÏŸ?øðáã^m}‹¡M«H&F1©TÖßÇïˆ^ ¸õk kêís×—~¼ê}]ëH30dS"‘tttxyyUTT899}ðÁªÏíš# hT¥!C­Ç ?¨CBèúËíÛ·srròóóÕ†29Ž™™™‡‡‡‡‡‡¥¥effæÖ­[áTE€R©ÌÍÍU q`…"‘hܸq¡P8aÂü×èèh@iiégŸ}VYY©Vƒ©©) <<ÜÊÊÊÊÊjþüùåååxH­yÝêêj6›=~üøŸ~ú©¥¥E œ>}¾JÔü㯪–––ð ®®Aø­`gg***~üñG‰DòìÙ3×××R‡õÖÖÖb±X(š˜˜@ÉáÇÅbñ矮v]gbb‚Ç‘ÎÎÎííí5ÃÉ+‡[·nisã>ŸŸ••¥*ÉÉÉa±X@‹¶AF`` ÚôÄAWÅÓÓÓÇÇÇÉÉ ª¤Éž={¬¬¬vîÜÙÑÑŸ…ý¥kpÈ<~ðàÁ¤¤¤ÊÊÊ}ûö©>vÒŒmHHàÚµkžžžîîîo8+`„PQwßÁƒÇ™¼c>«ìÅ…îŽNso«Î>î†2 ÖÕ] CêQYãÌÎΞ3gNtttppð®]»¬¬¬ÂÂÂàOd#/õ¨JCˆfA~P‡4„Ð!õ“¦¦¦”””¼¼<[[[m䄸»»+•ÊÞÞ^kkk()--‹-"<ßÊÊÊÔÔôåË—0äÅ‹šŸ®-Z”ššÚÐР¶,†……‹Å²°°xõêþ«æuwïÞ ¥R©‘‘ÅÛÜÁbff† ÈÑ£G­¬¬paCCCJJÊ¥K—ìììð•(,,,„B¡H$‚ËVæÉ8::VWWÃWÝÀÚz{{áר––<"„/¶!LqniiQ}£O¥¥åÉ“'5åƒjCÇ´iÓÈò= cÇŽõòòòóóKMM=sæ ƒÁ ôµkÔìIXÀÅÅåòåË.\HLL¬¬¬„Ï0ô’U#²FË`0BCCCCCçÎpžþÈçŸß?7å~¿`éôø‰¦“'Øô‹ø€ÚÇ7P 2å8Ç_œ¬HŠ^ªkMi€¬qÞ½{7990sæÌ7‰ð'ê‘—lT¥Ñ„°Ç ?´ iÔ s©ÿ˜dddÀÅ„B¡P(Äç “É9NWW—Z%åå媟“ .\¨ö(Œ—Õ××÷÷÷/))ôôôÔÔÔ¬\¹ž#àAEE…Þš¿ù昷Ê`0üüüÊÊÊ …L&«©©™;w.Åu'Ož¼êw\\\à¤é·‚³³³½½ýÙ³gaÆ-ÌÁíêê255µ¶¶njjâñxp›££ã„ ®^½Š HqqqCCƒf¼5~üøµkמ8qŸG†‹‹‹µµõwß}‡aØ‹/êëëajkkÛØØ(‹ÓÓÓñ„`›ÍÆ0ŒÏç×ÖÖªšëõ k#“íÛ····Ÿ?ø‹Â5šö$¬A¡P<þ¶j\¬tÒ¤Iji34:„¬Ñâµµµr¹|À§Ù‘OMs™áø¸½ôÞ±´ÿÏ–NÓìgŠoG”˜D¬4#»y÷„®Õ¤²Æéîî^]] Ÿ;õÛo¿… [dòÜÜ\WW×ððpÀ‰'nß¾¢¨©©é¡C‡ð T@ÐØØ¸yófµk©–‰‰‰ˆˆèììŒŽŽÆézzzX,‚ ûöíÃ'X»ººÂ$Š˜˜˜íÛ·Éåòyóæ-_¾œúºC‡¾¾~fffrr²ŸŸŸ¹¹¹Ý±cÇæÎkccãëëkgg·dÉ’ .¼ÿþû...QQQGŽ)((øðà v·mÛÆd2£¢¢&Mš4f̨yš¡¡!Ì4¸téRwwwhh(|NX·n]ffæ©S§bbb<ø÷Î\.wíÚµÝÝݳgÏž?Ÿ`µAµC²¶12155ݱcGzzúÂ… §L™¢é/™k4íIèq©T ¿´êëëoÞ¼~û[½zujjêíÛ·a4O£[Èmzzú£GÌÍÍ»»»óóóñoë:ï™_Ô“ÿkïùP¬”K±þû/›î²ÿ/&àsw—¹žÖ¶wµO0@!˜ñŸ^F¦œ?•ªk}i¨ kœaaaééép+[[Û;v@9ÙH6ªÒP@Öc…d! z{àfå´K†š¤#'U·ƒ™Èd2.—kii cˆ×€Ëåš™™©æÂbÖÙÙ©T*'Mš4`Ù1cƼÉô¯·hd8³OY˜wÅçóñEñàî$d¹¿8(ж¶¶á‰4dtww›™™©ÎM‘J¥úúúªo)Ö¬Yïåå%‘H JÃÌlÌšþÂ]åïï?ÉhÚ“¬>Ÿ?nÜ8|ú&A‘H„{HF`·)%œáªÉ·szQŽž]™B†Šr~‡¬»UÜÓ&Þ¸l[÷éƒæj#“ÁÐCå(Š ¶Áýu­/1#ÜÈÃuãìîî;v쀣 Ui;¿6dá‡fH“tä$ ›³NØÛœ~KM£Ž‘‘‘æþƒB³§ÐÓÓÓr>²–Càð`ff¦&ÁƒWÕˆJ5£€Á`h¹&®æ²ùUô”M‘¹†Ìžš5h†ÎL&sxâiš×FOOo˜÷Rø½ƒ%CL!A0˜c˜cÍ /Væaf` ‡ô#˜U*0Á èµhF:ÔsÀ pªõЫ|¼]ÈÂíÃ:¤¦¡•ìÙ³ÇÉÉI×ZŒbbbü8@C329²i×tß*L‰a(Š)¥ÜU(¦T D•(†¢J¥Œ÷¼F×ÊÒÐü÷ò‰Y§ u­ ÍÈeàÄ:ÿf¨¡“œ†ÚÈÃmça€6òð@Ûy <<Ðv’Ž,D èÄšÑÅåª{ýX‡žd|DÁR?444:^—z¨P*•n¯†A±ööv¸l³*ýýý‡z› ²sÈä(Šr8‘H4(õÎ;×ÔÔ4¨"ZRXXøèÑ#²_¡¶p®÷P\‚ÞÞÞ!:™†FçˆÅâææf¸p8Î`;“QÄ;¿™Nî˜~üx„ ÍÍÍ‘‘‘«V­"Ô™ð2ySSSbb¢¥¥eccãêÕ«ãââTk ‡Ó«W¯Œáz!!!ëׯ/..vpppÉ× ¼¼œÉdjna%‘HòóóËÊÊáÿçòåËÕ :;;³²²~ùåggçììì·x²*±±±j’çää¹àûï¿'sM@@\öÎÈÈhåÊ•ø.•ª×’Éd …ÂÞÞ~åÊ•ÁÁÁÚëIóÇC&“ø@"‘À?÷.ЭdrU®^½š––¦)W*•Šß9vìØ4ÏÙ·oß±cÇ0 ‰DþþþuuuxYxPYY¹jÕ*BÉÎ!“‡††a& —.]ZSSåjFÞ°aCaa¡ª$((è_ÿú¡oHdd$TI´´´¿ýío}}}ðO¥RÙÝÝ= ¨!‰ZZZΞ=»cÇŽ·{2¦bç+V”••áòãÇÇÇÇ«ž©é2ùŠ+ÊËËQ½sçÎ{ï½×ÔÔ¤Vž T*oܸáééÙÞÞ®ªo‘ÈÈÈï¿ÿ~Ø.7l=Æ(åĉ;vìÀ»EáÁ`;“QdçoÊ~.k¾^ÖzåzËÿþ–б'ç[]+¥£ÈÈC ÙÈUYY¹{÷nx¼cÇŽââbxL6òþóðCÞ9…"Ì€a3´6ns:ñcHÀW‹´¶¶æóù‰d„(@&?|øpQQu ƒÉd2™L.—[RR²uëVµ²R©´¼¼¾ùf±XÞÞÞøEøN‡lO>²sår¹üÉ“'sæÌ{yyýðÃÔú«"‘H’’’–-[vôèQ(‰‹‹«¨¨ˆ‰‰IJJ´¶¶FFFz{{'&&âI,_}õÕÆ}}}ÓÓӱ߿µµ¶¶FDD,^¼8%%¾]P££££¤¤$>>_̘Á`à‹É«]·½½=66ÖÇÇ'88¸¢¢žofÃf³aÁªªªøøxŸ={öhfÚX,––+aöä!EOOoæÌ™†††„'0Œ3f (ŠoÏNè/U×ìÚµ‹Úž„5ܼy3,,ÌÇÇç‹/¾üúë¯999AAAJ¥rÈ @£-………6lÀ»|ƒÌAu&£ˆÜd\;0+P™D*º7ºÅ­Zöçê;u­VPŒ\ ãÑ£G¯^½R(mmmø×N²‘w´7æ‘™S^#Ì Cê¡åÚµk³fÍÒá¶”d ¨É,XàêêŠÿZSS³wï^øêQ³ÎÌÌÌ?þX³ì«W¯ÁE·±±QMÚ.**Ú¿ÿãÇaìHÙ9šrCCéS§â!—X,æñx›ãwrss=<>>ׯ_—H$UUU°”]ffæÅ‹«««ñœéŒŒ ggç’’__ß¶¶6M‹577¦OŸN¨‰êu1 Û¹s§µµuQQÑ–-[ÒÒÒž>} àp82™ ?îmmm_~ùe```FFÆ“'OÊÊÊ´¿ý·Î½{÷Ї,ÖEá‹777Â8N^^ž““Ó;ï¼%„þRu ›ÍÆãoB{jÖ€aXvvvlllyyù¦M›¡¡¡ööö‘‘‘§NRÝÛ’F'ôõõõ÷÷óx¼eË–ýãÿPýïÓ¾3E”Ý©·œ,‘#"Šz:;¸F̱ãMÁñKWt­VPŒ\‹-š={vHHH\\ܦM›4SÕF^0ʳ®Ð oÈœòaK=„TUUUVV~ýõ×#MM¹——~ìíímggwÿþýÜÜ܆††øøxÕ²7nÜàr¹6lÐ,+ ʾtFFFPéêêêììäóùÏž=#Ûó‰ìB¹¿¿AA“É|þüùÇõ˜þÑGìíí`ç¶xñb€X,~øða\\\__Ÿ››Ûýû÷~~~°øÔ©SŸ>}êææ&—Ë?++KU’““Ãb±´,NH`` ÚôÄ×®ÊÓÓÓÇÇÇÉɉL¥={öXYYíܹ³££> úK×àyüàÁƒIII•••ûöíS}ì¤ ˜ššÂÃí¬¬¬¬¬æÏŸ_^^Ž‡ÔƒêLFu÷ïÏþ™´ Ä=ñoó“µo @dÊqŽ¿8Y¡k5i†läº{÷.ìÆgΜ¹qãFÕ·$Ô#ï¨kÌ#µð†Ì)ƒ 3èzHÈÈȘ?þĉ…B¡P(þuˆÉ “s8œ®®.µJÊËË-,,T?'.\¸PíQ/«¯¯ïïï_RRèéé©©©Y¹r%%Ž kkëï¾ûð/^Ô××Ã>ÔÖÖ¶±±Q,§§§ã Á6›aŸÏ¯­­;wîÛºýQÁöíÛÛÛÛÏŸ?HüEáM{Ö P(ž?[5.{ww™ûàim{W«ñ#‚ÿéedÊùSi¡ºÖ—† ²‘+,,,==}ݺuzzz¶¶¶;vì€r²‘w”6fÝBÞ9e°a†ÞÞÀ]‘k´K†š¤#'ìŽÖµ “ɸ\®¥¥%Œ!^.—kff¦úíðÎÎN¥R9iÒ$²RdçPÈáN„j“ØÞ¢‘áÌB¢hkk«‘‘‘µµ5õ™ÝÝÝfffªsS¤R©¾¾¾ê[Š5kÖÄÇÇ{yyI$¨Ò03³¦¿p×DEEùûûãO2šö$«Ïç7Nuú&‚ "‘÷þ2<ár¹cÆŒQ2ØÎd„Û9½(GÏ®L!CÅ9¿CÖÝ*îio\¶­‰ûôAsµ‹É`è¡rEPÛàþ‡ºÖ—˜näaƒlä‚tww;V›d¼QÚ˜u YxCæŠ0†ÍY§ ìŽÆmN¿¥¦QÇÈÈhÊ”)oRƒfO¡§§7à|d²s(äZN>{mÌÌÌÔ$xðªQ©F`0 -~VÖ !{8600 §¤àhú‹Ì5döÔ¬A3tf2™ÃOÓh‰öŽ6фߋ0X2Á€9†9ÖÌðbe†azH?‚)Q¥CÌÀ€^‹f¤C=rivþõŒÆÆ¬[ÈÂ2§ 6Ì CjšQÉž={œœœt­Å¨!&&fÀ44#“#›vM÷­Â”†¢˜QÊ P…Q`J%@JT‰b(ªTÊxÏkt­, Í/ÿ‘ø‘uªP×úÐÐÐÐÐÐÐÐÐÐŒ\Nü óo†:Éi <<Ðvh#´‡ÚÈÃmça éÈIB9øACCCCC3š¸\u¯ëГŒ Xꇆ†F'ÐëRýýýG‡»B(•ʶ¶6íåo‘ööv¸l³*ÚEQ‡ƒoÏ1 üõîåܹsMMMƒ-¥ ………="ûÞœ><W§@u¿ †¡mÐм]È­Î{à¡ãÆßL'wLž¦ïĽXö`à4# ² ‹ñÝ‹äÜȇŠaŽ0tÔ°H¿¥<øøñã &477GFF®Zµjø¨««›8q"Ç ‡{UPÈU¹víÚ¡C‡à.zzz7oÞ„ò„„ü`kk[\\¬V¶··7!!Åbñx¼+VDDDà×Ð MMM‰‰‰–––«W¯Ž‹‹£–SßKxx8ì˜^½zelllll  Y¿~}qq±ƒƒƒæÎŽoNyy9“Éœ1c†š\"‘äçç—••9::ÂÎtùòåø YYY¿üò‹³³svv6õÉÚ´ BbccÕ6$ÏÉÉ!sÁ÷ßO暀€¸ì‘‘ÑÊ•+cbb4¯%“É …½½ýÊ•+ƒƒƒcš?E‡#—ËÃÃÃ]]]“’’t¡õ›Â•6Ù°” 1dÉžŠØÌÒµF4ƒ€lDCQ499™ÏçK¥R@^^\°ˆläÕy˜1!ë1(B—Á ‹{ì=\ÐÓÓÓÓӃѼ%”J%<¨¬¬\µj.ß{¸`xèèè€?ÿüó| ‘H¨åª\½z5--MS®T*¿sìØ±hž³oß¾cÇŽa&‰üýýëêêð²ð@Í ª„††a& —.]ZSSC-'»5#oذ¡°°PUô¯ý‹P‡7$22ªªFZZÚßþö·¾¾>ø§R©ìîî Ô‰D---gϞݱcÇ€'kÓ6TÁí¼bÅŠ²²2\~üøñøøxÕ35]@&_±bEyy9Š¢wîÜyï½÷šššÔŠÀ”Jå7<==ÛÛÛ¼¯·Kddä÷ß?l—¶c”BÖh©;œ£G§§§ã’QdçoÊ~.k¾^ÖzåzËÿþ–б'ç[]+¥£ÈÈC ÙˆVYY¹{÷nx¼cÇŽââbxL6òê<Ìõd¡ E˜ÃfhmÜætâÇ€o Ááp†yßD¾\¥µµ5ŸÏ—H$ÔòÇQ×É`0˜L&“Éär¹%%%[·nU++•JËËËác‹ÅòööÆ·iÐ r¹üÉ“'sæÌ{yyýðÃrŠ{щD’””´lÙ²£GBI\\\EEELL |qÕÚÚéí혘ˆ úꫯ6nÜèëë c(lmmˆˆX¼xqJJ |» FGGGIII||<¾˜1ƒÁÀ·¥P»n{{{ll¬OpppEE<'""ßÌ<&&†ÍfÂUUUñññ>>>{öìÑü\`±XZ®„ ÞÌžo==½™3g666žÀ`0f̘¢(¾=;¡¿T]³k×.j{ÖpóæÍ°°0Ÿ/¾øPPPð믿æää)•Ê!3¶5ZŠç§Ÿ~jhh€{Ô £¦o‡Üd\;0+P™D*º7ºÅ­Zöçê;u­VPŒh ãÑ£G¯^½R(mmmø×N²‘WçaÆh„°Ç ];,Ò!õPQTT´ÿþÇëöÛâµk×fÍš¥¹/¦š|Á‚®®®ø¯555{÷î…¯5ëÌÌÌüøã5˾zõ A|ÛÕ $jƒN:¡Äb1Ç£ksäææzxxäää\¹ræU·µµ?~<88xçÎð}||®_¿.‘Hªªª`);;»ÌÌÌ‹/VWWã9ÓÎÎÎ%%%¾¾¾mmmšknnLŸ>PÕëb¶sçNkk뢢¢-[¶¤¥¥=}úÀápd2~> ÜÛÚÚ¾üòËÀÀÀŒŒŒ'Ož”••iûÔ¼†=ïÝ»Wü;dq°ö ( ß⸹¹žÀápòòòœœœÞyç(!ô—ªkØl6ÚS³ ò³³cccËËË7mÚ µ··ŒŒ|ˆ?v“ɩ>ú(((`ooßÐÐ;¯°°°Å‹ÄbñÇãââúúúÜÜÜîß¿ðóóƒÅ§NúôéS777¹\þàÁƒäädccãyóæ999i¾ú‚{\«îq§'âïðë>}ú´±±1++ËÜÜ|É’%—/_.--uqq!»‹¨¨(oooÀÒ¥KïÞ½ ïh@ Œòq¦NŠ+ózöäp8øqggç›4ø³gÏfeeÉd²ääd {SSSe2Ù»ï¾{úôi(!ô—6®Á!¬AOOÎ%˜1cÔ„Åb1™LÕ½¯ita£%ìpÒÒÒ¢¢¢†z×Õ!¢¶¾ÅЦU$£˜T*ëïãwD/HÜúµ„5õö¹ëK?^õ¾®u¤²M"‘tttxyyUTT899}ðÁª~š#/aÆhD­Ç ]4ϧ€©‡Šèèh@iiégŸ}VYY9ü»Fß¾};'''??_mø'“㘙™yxxxxxXZZfffnݺNU(•ÊÜÜÜØØXÂÛŠD¢qãÆ„B¡êÞª$$$píÚ5OOOwww¼}“ɵ¹2ðtU5,--áA]]‚ ð[?ÀÎÎTTTüøã‰äÙ³g0®¯¯744¤¡­­­Åb±P(411’Ç‹ÅâÏ?ÿ\íº<ÏÄÄ#ÛÛÛ)jÆwÛvpp¸uë–67àóùYYYª’œœ‹ÞÀžjÓU\OOO'''¨’&{öì±²²Ú¹sgGG|"ô—6®Á!óøÁƒ“’’*++÷íÛ§úØI3r k´šNuu5›Í?~üO?ýÔÒÒ"NŸ> ¿?Œ *êî;xð2“wÌg•½¸ÐÝÑiîmÕÙǽÓPfaúú¯ tH=* Ѳ³³çÌ™¼k×.++«°°0øÙÈ«ó0c4¢ÙcP‡.ƒézhY´hQjjjCCƒæ*CJSSSJJJ^^ž­­­6rBÜÝÝ•Jeoo/¾“sii©@ X´háùVVV¦¦¦/_¾„y /^¼ÐütEaƒ 8wî>å–L>¨{fff‚=zÔÊÊ 644¤¤¤\ºtÉÎÎ_‰ÂÂÂB(ŠD"¸lažŒ£££¡¡auu5|ÕM¬­··~]jiiÁ#BøbAÂ\®––www-ïÎÒÒòäI‚eê‡ÎžƒbÚ´idù±cÇzyyùùù¥¦¦ž9s†Á`ú‹Ú5jö$¬àâârùòå .$&&VVVÂgB/Óè„­j‡ãèè¸{÷n(—J¥FFFŸ€FÿüþÁ¸)¿ðûK§ÇO4<ÁÀ¦_ÄÔ>¾b‘)Ç9þràdERôR]kJ3d#ÚÝ»w“““3gÎܸq#œÈ¢yufŒF{ ŠÐe°Ã"K=$xPQQa``0ü1JFFÆüùó'Nœ( …B!¾2™œÃátuu©UR^^naa¡ú9©°°páÂ…jÂxY}}}ÿ’’@OOOMMÍÊ•+á9dùæ›oðÌW\™ÚÚZ¹\Ž dr²{ysœíííÏž= 3nanWW—©©©µµuSSǃ3Ø'L˜põêUAŠ‹‹4ã­ñãǯ]»öĉø”82\\\¬­­¿ûî; Ã^¼xQ__ûP[[ÛÆÆF±XœžžŽ'Øl6†a|>¿¶¶vîܹox×CgÏ¡`ûöííííçÏŸ$þ¢p¦= kP(ÏŸ?‡­ —Ë“&MRK›¡Ñ!d–°Ã™Ÿ?nÜ8|ú&A‘H„{HFhÓá¨2Âíœ^”£gW¦¡bœß!ën÷´‰7.ÛÖÄ}ú ¹ÚˆÅd0ôP9Š"(‡mpÿÆC]ëKÌ7ò°A=¢uww;vÀÑŒò0cd¢º‘tä$ ›³NØÛœ~K=$èééÞé·FFFS¦Ly“4{ m ¢§§G8™ŒL> ˜™™©IðàU5¢RÀ(`0Z®­:7¢:)SzJ ަ¿È\CfOÍ4Cg&“9<ñ4Ík3ª{`Mø½ƒ%CL!A0˜c˜cÍ /Væaf` ‡ô#˜U*0Á èµhF:Ô#šfçOQÏ©‘´|mGRÓÐŒJöìÙãää¤k-F 111~ ¡™Ù´kºo¦Ä0Å”ˆRn€* ”ˆS* P¢JCQ¥RÆ{^£keihþ{ùĬS…ºÖ‡†††††††††fä2pâ3ÔÐINÃmäá¶ó0@yx í< ÐFh;IG¢tâ ÍèârÕ½~¬CO2>"€`©@¯Ký‡E©TjîSO!‹´··Ãe›ßbY2¹X,îééÔ%Î;×ÔÔôzêQSXXøèÑ#²_Qåp8p®÷P\‚ÞÞÞ!:™††f˜¹qç7ÓÉ“§)Æ;q/–=¸ÍŽ"‘Hó§Ahýýý‡Þ|jä@¿¥Bäryxx¸««kRRÒ0_úàÁƒuuu'Näñxáááp¯ ¹*×®];tèÜ„\OOïæÍ›Pž€lmm‹‹‹ÕÊööö&$$°X,·bÅ |_(µAÈÊ’ÉQMNNæóùR©——§º¼Cxx8ì˜^½zell ·Ð Y¿~}qq±ƒƒƒæÎŽoNyy9“ÉÔÜÂJ"‘äçç—••9::ÂÎtùòåqqqo]5:;;³²²~ùåggçììì·x²*±±±j’çää¹àûï¿'sM@@\öÎÈÈhåÊ•ø.•ª×’Éd …ÂÞÞ~åÊ•ÁÁÁÚëIóGE³c!무éÄF>\i“ K©@C–쩈 À,]kD3ššš---W¯^d#Y£=xðàãÇ'L˜ÐÜܹjÕ*]Üͨ„,Ѿ'!ƒ©‡ãÇ+ \:22.¯sïÞ½O?ýtñâÅpÕ02¹+V¬Ø¿¿š0++ ½š——' 5 fggÏš5+..N,¯]»ÖÃÃã/ù þ+µAÈÊ’ÉüñGANœ8HHHøá‡Tû”3gÎÀƒ>úhÍš5º½Ž9òâÅ‹ÂÂB¸øŠ¢}}}Ãp]ccãO>ù¤ººº®®î힬 d.X¿~=¡’˜˜¸dÉ’Ÿþù“O>Y¾|¹æzމ‰‰|ðAuuõgŸ}÷µz+ÚjITTÔš5küüü†ó¢4Ôhv,d•6ØçŸ?Üû“³Á*—)DùŸ»’¿F×zÑhKjjjHHH`` H$ ôðð€[z‘hdöÓO?…ëå߸q#77—©µ‡,Ѿ'!ƒNü*~ú駆†¸Òð__®ÒÚÚšÏçK$jùáÇ‹ŠŠ¨ëd0L&“Édr¹Ü’’’­[·ª••J¥åååðÍ7‹ÅòööÆ÷„¬,E ãÑ£G¯^½R(mmmšï†)H$IIIË–-;zô(”ÄÅÅUTTÄÄÄÀÇÓÖÖÖÈÈHooïÄÄD<á䫯¾Ú¸q£¯¯ozz:þ­­µµ5""bñâÅ)))ðí‚%%%ñññøbÆ Âðºííí±±±>>>ÁÁÁ𜈈|3ó˜˜6› VUUÅÇÇûøøìÙ³‡0+†Åbi¹ö`ORôôôfΜihhØØØHxƒÁ˜1cŠ¢øöì„þRuÍ®]»¨íIXÃÍ›7ÃÂÂ|||¾øâ @AAÁ¯¿þ𓓤T*‡Ì4ƒ€°c!ë¬È䣅Üd\;0+P™D*º7ºÅ­Zöçê;u­VÈåò'OžÌ™3`llìååõÃ?ÀŸÈF4ŠÆ 8ÎHÞév¤AŠ ª'!ƒ©‡„žžž£G¦¥¥©n€§®]»6kÖ,Í}1Õä ,puuÅ­©©Ù»woYYa’VffæÇ¬YöÕ«W‚à‹¥ÛØØàIÛ„¬,E‹-š={vHHH\\ܦM›•È‘››ëáá‘““såʘWÝÖÖvüøñààà;wÂ{ôññ¹~ýºD"©ªª‚¥ììì233/^¼X]]çLgdd8;;—””øúú¶µµiZ¬¹¹0}útBMT¯‹aØÎ;­­­‹ŠŠ¶lÙ’––öôéS‡Ã‘Édøù0pokkûòË/322žÐ IDAT©º†Ífãñ7¡=5kÀ0,;;;66¶¼¼|Ó¦M€ÐÐP{{ûÈÈÈS§Néü_›hѱ¨uVÊG8ewê-'KäˆD†„¢žÎ®sìxSpüÒ]«F£†††S§NÅ;I±XÌãñàñ€#šf£-**Ú¿ÿãLJ?¹t”BÖc¼vO¢R iiiQQQºÚ󧪪ª²²2##c@¹———³³3<ööö>t胃Cnnnnn®ZÙ7np¹Ü 6h–…ßDðL###ü+É€!+KQ§D"éèèðòòª«««¯¯Ô[Ã>ú(((húôéööö P¶xñb ±XüðáCOOϾ¾>77·û÷ïÃüüülmmÍÍͧN ƒ]¹\þàÁƒ°°0ccãyóæ999i¾ƒ‡{\«îqˆ¢¨ê Eüº æææK–,™>}zii)Å]DEEy{{Ï;wéÒ¥wïÞÕòÞ EãòæÓ%9Σßéìì|“ªÎž=»|ùò“'O&''îe•ššØØØxúôi(!ô—6®Á!¬AOOÎ%P*•P‹Åd2MLLð 4º…ºcÑ쬨å#œÚúC›V‘¬O¢è‰»úø¼è©€[¿–°¦VŸ»^«ki´Âßß¿  àæÍ›_ýõÇÿÞ=žzD#l´]]]­­­Ïž=&íG9d=Æëõ$šÐ¹ÔoŸêêj6›=~üøŸ~ú©¥¥E œ>}¾åNnß¾“““ŸŸ¯6ü“ÉqÌÌÌ<<<<<<,--333·nÝ §*”Jennnll,á&ذB‘H4nÜ8€P(„{«jc²²dr@vvöœ9s¢££ƒƒƒwíÚeee¦¥qð Õ±´´„uuu‚Àoý;;;xPQQñã?J$’gÏž-^¼P__ohhHýìdmm-‹…B¡‰‰ ”>|X,þùçj×åñx&&&xéììÜÞÞNQ3>ÓÁÁáÖ­[ÚÜ8€Ïçgee©JrrrX,––Å T›žøÚUyzzúøø899‘©´gÏ++«;wvttÀ9„þÒÆ58d?xð`RRReeå¾}û¼¼¼^û¦h†ꎅ¬³¢îÄF2u÷ öñ ˆL9Îñ—'+’¢—êZSš`0¡¡¡¡¡¡€sçÎákXQŒhÔvÑ¢E©©© ƒšPô_Yñz= !tâÇÛgòäÉ«~ÇÅÅÅÁÁÎçN222àbB¡P(â_öÉä§««K­’òòr |F# °°páÂ…jÏjxY}}}ÿ’’@OOOMMÍÊ•+¥A¾ù昷JV–Lpww¯®®†ÇOž>>¿ýö›³³3aÂî¶mÛüýý£¢¢Ö®]zãÆ Â„CCÃþóŸÿüðÃCBB6lØÿ±×­[—ŸŸ¿jÕª™3gª>áp¹Üµk×®^½ÚÚÚzþ|‚MÔž={æççwêÔ©ÚÚZ??¿k×®QÜõ NÖ9¦¦¦;vì(((hnn&ô w¦= kJ¥±±±~øáæÍ›7oÞ SV¯^}íÚ5ø†‰fÄBÖY‘ÉG8©'ÿ×Þó¡XÉ“b÷[¾Û~<¸îéÀƒ§µí]­ *íWHzäÆz™r^×ÊÒ @zzúºuë6oÞœ•••ŸŸ'~hd6!!!((hãÆ—/_Þ·oߨ›k;*l¡·÷p`WäZí’¡&éÈÉ»£u­ÅÈd2.—kii cˆ×€Ëåš™™½^z.YY2yww÷رcUåoÑÈpf¡ê2ÀÔÔÀçóñEñàî$Þ/Š¢­­­FFFx" ÝÝÝfffªS¥R©¾¾¾êƒòš5kâãã½¼¼$ Ti˜YÓ_¸k¢¢¢üýý¡\Óžd5ðùüqãÆáëU‰D¸÷‡”hä?$#ÜÎéE9zve *Èù²îVqO›xã²mMܧš«XLC•£(‚rØ÷o<¸F]0Â[q(033S“àÁ«jD¥QÀ`0´\øYó¦w䌺OØC‡¦¿È\CfOÍ4Cg&“9<ñ4 „ß‹0X2Á€9†9ÖÌðbe†azH?‚)Q¥CÌÀ€^‹f¤£§§G1mZûMOOOõ£%ÍH€©ihF%{öìqrrÒµ£†˜˜˜?ÐÐŒLŽlÚ5Ý· SbŠbJD)7@JD)•(Q%Š¡¨R)ã=¯Ñµ²44ÿ½üGâGÖ©B]ëCCCCCCCCCC3r8ñƒÎ¿jè$§a€6òð@Ûy <<Ðvh#´‡¤#Ä ÑÒ‰444444£‰ËU÷ú±=Éøˆ‚¥~hhht½ˆÞ¥RÙÖÖ¦½ü-ÒÞÞ—mæ²Zrîܹ¦¦¦¡¨¹°°ðÑ£Gd¿¢(Êápà\:½½½ÚœÖßßÏápè­LhFb±¸¹¹.ŽCј‡¡“RnÜùÍtrÇäiŠñNÜ‹et­Í cH$ÒüI,÷ôôhYÝc¿E¨¢ÙÃB¿¥®]»vèÐ!¸·žžÞÍ›7‡YƒÖÕÕMœ8‘Çã…‡‡Ã½*(äª)Ÿ z#¶¶¶ÅÅÅje{{{X,Ç[±b¾/D.—‡‡‡»ºº&%%i^—¬,õuÉê ‡Ó«W¯Œáz!!!ëׯ/..vpppÍì× ¼¼œÉdjna%‘HòóóËÊÊáÿíòåËãââÞºjtvvfeeýòË/ÎÎÎÙÙÙÔ'úè£5kÖè6ö:räÈ‹/ áâk(Šöõõ Ãu?ùä“êê꺺ºOþôÓOáêË7nÜÈÍÍ}óšÌëׯ'”C—,YòóÏ?òÉ'Ë—/×\Ï111ñƒ>¨®®þì³ÏàV o¨ç ˆŠŠZ³fŸŸßp^”†ŒÓ§O÷÷÷ÿÏÿülºøë:²ÆLÝA þùý?9Ë Q r™B4Ñ‘ÿé±+ñkt­¶¤¦¦†„„ŠD¢ÀÀ@¸¥×?þˆ ȉ' ?üðl·d#à[ï±ÿK oÈœBÖÃA'~ü1Á—«´¶¶æóù‰„Z~øðᢢ"ê: “Éd2™\.·¤¤dëÖ­je¥Riyy9|óÍb±¼½½¯_¿Žÿé§ŸÖ­[G¸¿ EY²ëX'‰$))iÙ²eG…’¸¸¸ŠŠŠ˜˜ø¶»µµ522ÒÛÛ;11ÿFüÕW_mܸÑ××7==ÿ×jmmˆˆX¼xqJJ |» FGGGIII||<¾˜1ƒÁ°°° ¼n{{{ll¬OpppEE<'""ßÌ<&&†ÍfÂUUUñññ>>>{öì!üÍb±´\ j8Žƒƒƒ–¥†==½™3g666žÀ`0f̘¢(¾=;¡¿T]³k×.j{ÖpóæÍ°°0Ÿ/¾øPPPð믿æää)•Ê!3¶nذoºx?@ؘ©;¨QÁ n2®È¨L"ÝÝâV-ûsõǺVF+ärù“'OæÌ™066öòòúá‡àO ãÑ£G¯^½R(mmmø×N²päôØ£ §õ0dÐ!õPQSS³wïÞ²²2Ýæ9]»vmÖ¬YšûbªÉ,XàêêŠÿJ­|ffæÇ¬YöÕ«W‚à{²ØØØàIÛ===GMKKSÝPвd×°N rss=<ÍÆ¬M'3Â)»So9Y"G$2D õtvp˜cÇ›‚ã—®èZ5­044œ:u*ÞIŠÅb-Z4{ö츸¸M›6i¦&ª€à zìÿf4Ã2§P÷0„Ð!õàíí}èÐ!‡ÜÜÜÜÜ\]©QUUUYY™‘‘1 ÜËËËÙÙS+ãÆ .—»aÃͲðƒžIbdd„¢JKK‹ŠŠ¢øFOQ–ìºÖIÁG}4}út{{û††( [¼x±………X,~øð¡§§g__Ÿ››Ûýû÷á ~~~¶¶¶æææS§N…Á®\.ðàAXX˜±±ñ¼y󜜜4Ÿbáת{¢(ª:C¿nCCCcccDD„¹¹ù’%K¦OŸ^ZZJqQQQÞÞÞsçÎ]ºtéÝ»wµ¼w…BÑøŸàÊtuuuvv¶¶¶>{öLËÚ çÑïtvvª¬gÏž]¾|ùÉ“'“““ ·ÌLMM lll<}ú4”úK×àÖ §§“í”J%Ô„Åb1™Lü#ùÕÕÕ999ÿûßKJJ>ü÷^ÜšyÀNf„S[ßbhÓ*’õI="qWŸ½ pë×ÖÔês×ku­ Vøûûܼyó믿Vm±‰¤££ÃËË«®®®¾¾^í;˜æÞ Çþ¯…,¼!t uCK=$˜™™yxxxxxXZZfffnݺ¦Ã'·oßÎÉÉÉÏÏWþÉä8Ê+•ÊÜÜÜØØXÂM°a…"‘hܸq¡P÷V­®®f³ÙãÇÿé§ŸZZZÁéÓ§ák¿Ë’]W›:)ÀÓ!ToÄÒÒÔÕÕ!¿õìììàAEEÅ?þ(‘Hž={¶xñb@}}½¡¡!uXomm-‹…B¡‰‰ ”>|X,þùçj×åñx&&&xéììÜÞÞNQ3¾Û¶ƒƒÃ­[·´¹qŸÏÏÊÊR•äää°X,@tt4 ´´ô³Ï>«¬¬Ô~«óÀÀ@µé‰ZÔÄÓÓÓÇÇÇÉÉ ª¤Éž={¬¬¬vîÜÙÑÑ_äúK×àyüàÁƒIII•••ûöíóòòz훢 LMMáááVVVVVVóçÏ///www‡¿j6fêNfäSQwßÁƒÇ™¼c>«ìÅ…îŽNso«Î>î†2 ÖÕ]øxÕûºÖ‘f`BBB×®]óôôtwwÇŸñ²³³çÌ™¼k×.++«°°0øÙÈûÚ=ö-dá ¡S¨{BèzhqwwW*•½½½Ã¼rSSSJJJ^^ž­­­6rB4•/--‹-"<ßÊÊÊÔÔôåË—0äÅ‹0âqttܽ{7%Ž kkëï¾ûð/^Ô××Ã>ÔÖÖ¶±±Q,§§§ã Á6›aŸÏ¯­­;wîÞµ@ €Ú'¬[·.33óÔ©S111ü{g.—»víÚîîîÙ³gÏŸO°‰Ú³g϶mÛ&‹ñóóÛ²eËêÕ«Éî:!!¡§§‡Åb!²oß>Í)­# SSÓ;v¤§§/\¸pÊ”)šþ¹FÓž„—J¥ðK«¾¾þæÍ›a¶ÀêÕ«SSSoß¾ £yݳ}ûö   ¹\>oÞ¼åË—C9Ycl5BH=ù¿öžÅJ¹ë¿ÿ²é.ûÿb>ww™ûàim{W«ñ#‚ÿéedÊùSi¡ºÖ—†ŠôôôG™››wwwçççã‰aaaééép+[[Û;v@9Ù8ºzìYxC沆 ½½‡ »"×h—¼-d2—˵´´„Ã0NÒ‘“vGëJ+-!S^{¸\®™™Y.ìЕ…¼E#Ù…xÊ2@ Àü*>Ÿ/Šw'PgE[[[ŒŒÌêîî633S]SB*•êë뫾¥X³fM||¼———D"*½!†uvv*•ÊI“&isþlÌšþÂ]åïï?ÉhÚ“¬>Ÿ?nÜ8|%‚ "‘÷þ2<ár¹cÆŒQBݘ5;™nçô¢=»2…  äüYw«¸§M¼qÙ¶&îÓÍÕF,&ƒ¡‡ÊQA9lƒû7˜A¥+F¸‘‡ Ãຄӯ»»»ÇŽ«ÍHÖÈi;S@ÞP;E³‡I:r†ÍY§ ìŽÆmN¿¥ŒŒŒ4·¨-¼¹ò„rʾuÌÌÌÔ$xðªQ©F`0ÿ{gÖÄÑ-ðI Aù^^„‚½P¨¥jñ© T­V}ƒ€ŠŠµ BKKJ‹Õ§jm_-•Jñ¶ˆ¹”«ÖjD¤*©l „oHB’ÍîýcžîM“Ýh÷÷×2™9;³œ9»{溎Q¢5wMfäÖ–¦¥ÑEs¾È¦†l<5[Ð4 †~ìi ÑTÚoæq¥dtA؋Й2ÁR€1‰1ÙÒäRe†aÆÆ4¤Á”¨R¡flLÅ¢ïÐh4-Û¦uß2û7ÐØú‡Ì¼Ñ>)ºk ʤ¦ ˜ìÛ·ÏÕÕÕÐRLâããõ¼E˜‚b´8¶e¯G@¦Ä0Å”ˆRnŒ*Œ•ˆS* P¢JCQ¥R&ø½ÆÐÂRPüsù‹ãGî™"CËCAAAAAAAAA1~Úñƒò¿k(''=@ ²~ ÆYPƒ¬¨qÖÔ ëjœõ@ê1â@´”ãÅD⛪{ýX;MjLꇂ‚ Pq©Ç‰DÒÔÔÃÙê¥RÙÚÚª{ù(ÒÖÖÃ6.½½½£Ò×… GI¨¿PTTT__Oö+Š¢<n+‹Þµ@8t£R™‚°ô÷÷óx¼Tþ?ÿf>³}æ+ Wþ¥²CŸ@1΀kX,ÖüI"‘à¹E†äxó¿8Úí—?ê-õ˜ “ɲ²²¸\®½½ýo¿ývèС×_]ŸdeeÕÖÖNŸ>] DEEÁ\ZÊU¹zõê‘#G`–NV]] Ë“““ñc€ƒƒCII‰Ú¹½½½ÉÉÉL&S ¬Zµ Ï ‘ËåQQQžžž©©©º÷ÛÙÙ™››ûèÑ#77·¼¼<ûŠŠŠ‚Š©££ÃÌÌ ¦Ð ß°aCII‰³³óX„¤-//g0š)¬¤Ré©S§ÊÊÊ\\\ 2 JLLuÔ º¯¬JpppBB‚ZBr‹E6?þø#ÙÔðw¦¦¦«W¯Æ³Tªö%“É …““ÓêÕ«ÃÂÂt—“âïGVVÖãǧM›ÖÔÔ³fÍÕ_5™’™Xðí™JŠ˜0eOÅæZ"ŠaÐØØ˜’’bccÃår×®]‹/(Ц¥¥ …ÂÁÁA@AA XD¶òj¿ù)!4²åo¸ƒ2©Ç„³gÏö÷÷õÕW0œ­þ"cbb`x{÷îíß¿ßßßF #+WcÕªU‡R+ÌÍÍÅ_¯ hž˜——7wîÜÄÄD‰D²~ýzooï×^{ ÿõĉ …B‹Ø„ýš™™íرƒÍf×ÖÖêÞ×¹sçàÁ¦M›BCC k{;v¬¹¹¹¨¨_CQ´¯¯Oý’ Ý‹WÖ²)ذaa9$%%eÙ²e¿üòËŽ;‚‚‚4¥¤¤¼õÖ[l6ûÀ0è¨H«#±±±¡¡¡ú씂Œýû÷C{ãÆüü|5«‚Pá*™ Ä®ßû—›Á*—)ÄÓ]„û?¹’jh¹(t%===<<<$$D,‡„„x{{Ô^7oÞDääÉ“€äääëׯÃû™låÕ~óSB6hZ–¿ai ÊñcL(**Ú¸q#žBÿÙñp•vvvB¡P*•j/?zôhqq±ö6ét:ƒÁ`0|>¿´´tûö­—Q IDATíjç–——Ã7ßL&Ó××OÓ¸uëVCCL 5¬ka2™šáœµ÷5$R©455uŊLJ%‰‰‰ñññð…VKKKLLŒ¯¯oJJ îXòùçŸoÞ¼9 33Ljii‰ŽŽö÷÷?|ø0|» F{{{iiiRR̘N§ãAãÕúmkkKHHðóó «¨¨€u¢££ñdæñññžXUU•””äçç·oß>Bï¡#cX•Ç6gÎ.—KXN§¿úê«(ŠâéÙ çKujöîÝ«}< [¨®®ŽŒŒôóóûðÃ………¿þú+‹ÅZ·nR©³ Ð\Çòx<˜gÄ g<ÓÌïA¦¶c¹•IE"Q÷æÙ‰kVü›ýócC‹F¡r¹üÉ“'óçϘ™™ùøø\¿~þD§Óëëë;:: Ekk+þµ“låÕróSA6h£µüQ&õèÓ×××ßß/ÂÃÃW¬Xñé§ŸÐÕéêÕ«sçÎÕÌ‹©V¾xñbOOOüךšš÷ß¿¬¬ŒPòœœœwß}WóÜŽŽAð èööö¸ÓvOOÏñãÇ322T3j¢½_U´ô¥ ùùùÞÞÞ,ëÊ•+Яºµµõĉaaa{öì×èçç÷ý÷ßK¥Òªª*x–££cNNÎ¥K—Øl6î3íææVZZÐÚÚª)ySSÀÃÃPÕ~1 Û³g]qqñ¶mÛ222ž>} àñx2™ ¯ ÷ÖÖÖÏ>û,$$$;;ûÉ“'eeeº_þ¨sïÞ½’?!³ƒuEÑââb ÃfÏžMXÇ㸺º¾üò˰„p¾T§†Ãáàö7áxj¶€aX^^^BBByyù–-[NNN111gΜÑ~'SèâââC‡=~üXÕL‹ÂÑ]ÉŒCÊ~®³™)•#R"÷t¶óM“-ÌÁ‰ËW -…N˜˜˜Ìš5 W’‰D Àã¥K—Λ7/<<<11qË–-š®‰j+/ ¹ù)´3ÜA–Æ LêÑú‰²Ùl‹õñÇ—––>|h˜ ±UUU•••ÙÙÙC–ûøø¸¹¹Ác__ß#GŽ8;;çççççç«{ãÆ >Ÿ¿qãFÍsá)Ü“ÄÔÔÿD•‘‘«ý½ö~ÕÐÒ—.lÚ´iݺuNNN °022ÒßßßÚÚZ"‘<|øpÁ‚}}}³gϾÿ>¬èàà`ee5kÖ,hìÊåòDFFš™™-Z´ÈÕÕUó•Ìq­šãEQÕŠx¿ \.7::ÚÊÊjÙ²e×®]Ór±±±¾¾¾ .\¾|ùÝ»wu¼v…BÁý+/¾]’ÇãÕÿIggç‹4uþüù   Ó§O§¥¥æ¬JOO ár¹gÏž…%„ó¥ËÔà¶@£Ñ óœR©„’0™Lƒ1eÊÕÌ´†¥«««³³³¥¥åÙ³gx!™Â–’oÜ©{nbß"–õI=bIWŸP·8ðÓ¯¥ÌYì ßß1´€:±råÊÂÂÂêêê/¾øBÕ6J¥ííí>>>µµµuuujßÁ4W^@róShgXƒ6\AùR>0guTT”­­­­­í›o¾Y^^îåå¥g1nß¾Íb±N:¥¶ü“•ãXZZz{{{{{ÛØØääälß¾úæ”Je~~~BBalØ X,ž:u*```æVe³ÙÇÂÂâÖ­[ÏŸ?‰DgÏž…¯ýtìW÷¾tÿÄ£z!666ð ¶¶Aø­àèè***nÞ¼)•JŸ={æï飼«311Ñþ¨`gg'‘H¦L™KŽ=*‘H>øàµ~Á”)Sp;ÒÍÍ­­­MKËx¶mggçŸ~úI— …ÂÜÜ\Õ‹Åd2u<µí‰#njÁ‚~~~®®®d"íÛ·ÏÖÖvÏž=íííðEá|é258d3ž•••ššZYYyðàAŸ_ÅØ¸víÚ*++µ(œa)™ñFEí}go]6åe«¹eÍ»Û;­|m;ûø?7”YÛ3¿ûŸ‹ï®yÃÐ2R Mxx8àêÕ« ,ðòòÂ_ åååÍŸ??...,,lïÞ½¶¶¶‘‘‘ð'²•Wóæ×ï¥LH†5hÃÕ”I=úX[[3™L<޵µuGG‡žehll<|øpAAƒƒƒ.å„xyy)•ÊÞÞ^<“óµk×D"ÑÒ¥K ëÛÚÚš››ÿñÇФ¹¹Z<...ï½÷¬388hjjêîî>¬~uïkT°´´Däøñã¶¶¶xaCCÃáÇ/_¾ìèèˆG¢°¶¶‹Å0lá‡!6›¬½_ØZoo/ü´÷üùsÜ"„/’ÁÝßUyþü¹îÏl666§O‡©¼òÊ+dþÉ“'ûøø¦§§Ÿ;wŽN§Ηö©QOÂîîîß|óÍÅ‹SRR*++á3ÌDtøÛ³téÒôôô†††W_}U…£‹’WüçÇS_z$ì-÷Hšn>sš±}¿X¸óøŠD¦œêòè£Ó©qË -)ÅÐéôˆˆˆˆˆÀ… ðXUwïÞMKKÌ™3góæÍp#üIûÊ«zóëå þ wÐtÔ”ãÇèC§ÓËÊÊ …L&«©©Y¸p¡žeÈÎΆÁð/ûdå<¯««K­‘òòrkkk|G# ¨¨hÉ’%jOuø¹FFF+W®,--ôôôÔÔÔ¬^½0sæÌ5âîîîìì 78¾þúkÜóUK¿šõ5*¸¹¹999?zÜBÜ®®.sss;;»ÆÆF@w°¹¸¸L›6í»ï¾C¤¤¤¤¡¡AÓÞ²°°X¿~ýÉ“'ñ-qd¸»»ÛÙÙýðÆ577×ÕÕAêààÀår%Iff&î àp8† …Â;wîèÿ3,»víjkkûòË/É|i™Íñ$lA¡PüþûïðNÀó3fÌ€Îñã‘H***Œá›- G%3®¨i*3±hIÚ®Ý;'ìÿ·ë+Nó%?}‰(1©Diø/÷…žÞiëj1›f €C0³ýsøË3†–—B™™™õõõVVVÝÝݧNÂ?"##333aŒ‡Ý»wÃr²•w¸7? 4²åo¸ƒöþÑBÀÞ˜õjJF>Ÿ?iÒ$U—åÔc§?z/΀"é‚L&ãóù666І|>ßÒÒr¸î¹#ëW³¯Qd¸³wYˆD"è+/ ñ x0;É׋¢hKK‹©©éßš»»»---Uƒ ©¾¥ MJJòññ‘J¥P$=3ofÍù§&66våÊ•ø“Œæx’µ  §NЇ^ "‹ñÙSÆá +0 ëììT*•3fÌÐ¥>™’çãœYÌ¢9–)d¨D$¶Ëº[$=­’Í+v6òŸ>hb›2t: •£(‚ò8Æ÷of7üŒóAÖ†Áº„Û¯»»»'Ož¬ËêIvóS㬅QÔÐlÎ=SôÑ{qø˜So©Ç˜ñ©©©f~a1² Y¿c:È–––j%¸ñªjQ©Z`Z Óé:F¾ÔÜjI˜‘`llLmIÁÑœ/²©!OÍ4Mgƒ¡{šbHh4Ú°œ7^\¹a/BgÊSH Æ$ÆdK“K•†Ó~S¢J†"˜±1‹f¼C£Ñ´l›Ö}Ÿýpo~ 0öƒ2©)(&$ûöísuu5´†øøø‰²‚Bc[özTaJ CQL‰(寍ÂX‰(0¥ %ªD1U*e‚ßk -,Å?—¿8~äž)2´<ã—¡?(ÿ›±†rrÒÔ ëjœõ5Èúg=@ ²~ ÆY¤#DK9~PPPPPPL$¾©º×µÓ¤ÑÁ¡~((( —úo‹R©lmmÕ½|ikkƒa›‡ËpeëïïçñxÃM½qáÂ…ÆÆÆaЦEEEõõõd¿¢(Êãñà^ï±è] ½½½ºTÓýAA1êH$’¦¦&8\—r óÄøäÆÏ¿™ÏlŸùŠÂ•©ìÁÐ'PŒ3àZ ‹5’H$xž¸!Ù HA¨´,Z4‰Ô[ê1!99¹ººÿÓÁÁ¡¤¤DŸdeeÕÖÖNŸ>] DEEÁ\ZÊU¹zõê‘#G`ÖM†_ˆ.ÕÛÛ›œœÌd2ÁªU«ð¼P¹\åé陚šª»Ìdòdee=~üxÚ´iMMM111kÖ¬Qm-** *¦ŽŽ333˜B/<<|Æ %%%ÎÎΣǧ¼¼œÁ`hfc’J¥§N*++sqqÊ4(((11qÔP£³³377÷Ñ£GnnnyyyÚ+ëroœ –œÅb‘MÁ?þH65ÁÁÁ0ì©©éêÕ«ñ,•ª}Éd2…Báää´zõê°°°áŒÅß ™L–••Ååríííûí·C‡½þúëZʇõ1ná6Ú3• 1aÊžŠ9Ì5´Dà±±1%%ÅÆÆ†Ëå®]»_PMKK …ƒƒƒ€‚‚°ˆlåÕ¾RB¦È–?²údP&õ˜››‹¿‰,((г1110R̽{÷öïßïï‘•«±jÕªC‡©êrQyyysçÎMLL”H$ëׯ÷öö~íµ×ð_Oœ8¡P(†+3™<û÷ï‡Ñ‚oܸ‘ŸŸ¯¦PÎ;6mÚjXÛëØ±cÍÍÍEEE0øŠ¢}}}zè×ÌÌlÇŽl6»¶¶vÈÊ:ÞºC66l ,‡¤¤¤,[¶ì—_~Ù±cGPPf£”””·Þz‹Íf8p¦}!‡Klllhhh`` >;¥ ãìÙ³ýýý_}õTøë:²òaýGŒOþsýÞ¿Üä†(P¹L!žî"ÜÿÉ•ì¤PCËE¡+éééááá!!!b±8$$ÄÛÛ¦ôºyó&‚ 'Ož$''_¿~.jd+¯ö‚2Í@¶ü‘Õ'ƒrüèt:ƒÁ`0|>¿´´tûöíz¼hgg' ¥R©öò£Gko“ì¢ðsËËËáã“ÉôõõÅÓ4nݺÕÐÐSC Kf-òÀs@êŽT*MMM]±bÅñãÇaIbbbEEE||<|ƒÞÒÒãëë›’’‚;±|þùç›7oÈÌÌÄÿµZZZ¢££ýýý> ß.¨ÑÞÞ^ZZš””„3¦Óéx µ~ÛÚÚüüüÂÂÂ***`èèh<™y||<‡Ã'VUU%%%ùùùíÛ·ÐÓ†Édê  üÇ6gÎ.—KXN§¿úê«(ŠâéÙ çKujöîÝ«}< [¨®®ŽŒŒôóóûðÃ………¿þú+‹ÅZ·nR©³ Ð•¢¢¢7âª×-dåÃú‡4ó{©mÀX®@eÒA‘HÔ½yvâšÿfÿüØÐ¢Qè„\.òäÉüùófff>>>ׯ_‡?ÑéôúúúŽŽ…BÑÚÚŠí$[y_düÇB¦È–?²údP&õØ’““óî»ï0-åÕ«WçΫ)€ZùâÅ‹===ñ_kjjÞÿý²²2Âg2µ‹ÂÏíèè@Ͻboo{&õôô?~<##C5# î2“ÉS\\|èСÇz’h!??ßÛÛ›Åb]¹rúU·¶¶ž8q",,lÏž=ðýüü¾ÿþ{©TZUUÏrttÌÉɹté›ÍÆ}¦³³³ÝÜÜJKKZ[[5G¬©© àááA(‰j¿†íÙ³ÇÎή¸¸xÛ¶mOŸ>ðx<™L†×‡†{kkëgŸ}’ýäÉ“²²²a€Èî-Ü»w¯äOÈì`ÝAQ´¸¸ðٳgVàñx®®®/¿ü2,!œ/Õ©áp8¸ýM8žš-`–———P^^¾eË@DD„““SLLÌ™3gt¹“)Æ”¾¾¾þþ~@¾bÅŠO?ýþ÷‘•ÿ (û¹Îf¦TŽHeˆh@ÜÓÙÎ7eL¶0'._1´h:abb2kÖ,\IJ$@—.]:oÞ¼ðððÄÄÄ-[¶hº&jš#^ÿ™è¢T—¿hʤCnܸÁçó7nÜh(ªªª*++³³³‡,÷ññqssƒÇ¾¾¾GŽqvvÎÏÏÏÏÏW;Wó¢ðsá)Ü[ÀÔÔÿD•‘‘«Ë7zMÙ´ÈÓÕÕÕÙÙÙÒÒòìÙ³![VeÓ¦MëÖ­óððprrjhh€…‘‘‘þþþÖÖÖ‰äáÇ ,èëë›={öýû÷a…ÀÀ@++«Y³fAcW.—?xð 22ÒÌÌlÑ¢E®®®šO±0ǵjŽCEUw(âý644p¹Üèèh++«eË–yxx\»vMËUÄÆÆúúú.\¸pùòåwïÞÕñÚ ÷¯¨ CvÏh‡ÇãÕÿIggç°ÎUãüùóAAA§OŸNKK#L™žžÂårÏž= KçK—©Á!lF£Aß}¥R %a2™ cÊ”)øG =òÙl6‹ÅúøãKKK>|¨¥|¢s§î¹‰}‹XÖ'Uôˆ%]}BAÜâtÀO¿–2g±/|ÇÐRèÄÊ•+ «««¿øâ Õ;S*•¶··ûøøÔÖÖÖÕÕ©}#4'F¼þ3R3¨-#Ð$”/õX¡T*óóó •/úöíÛ,ëÔ©SjË?Y9Ž¥¥¥······MNNÎöíÛáÖ@0ÔEÁÅbñÔ©S0·*›Íæp8·nÝzþü¹H$:{ö,|í§‹ÌZ䉋‹\»víÀ•••º5þñWõxP[[‹ üÖptt„7oÞ”J¥Ïž=ó÷÷ÔÕÕ™˜˜hT°³³“H$S¦L%G•H$|ðZ¿`Ê”)¸éææÖÖÖ¦¥e<Û¶³³óO?ý¤Ë…„Bann®j ‹Åb2™@‡{ƒŒµí‰Ã:]• øùù¹ººB‘4Ù·oŸ­­íž={ÚÛÛá‹ÂùÒejpÈf<+++55µ²²òàÁƒ>>>#¾(бÀÜÜekkkkkûæ›o–——{yy‘•ZÞ¥¢ö¾³·€.›ò²Õܲæ‹ÝíV¾¶}üŸʬí™ßýÏÅw×¼ah)†&<<põêÕ xyyá/¡òòòæÏŸ¶wï^[[ÛÈÈHøÙÊ;âðŸ‰vÍ ¹ü@“P&õXqíÚ5‘H´téRƒôÞØØxøðá‚‚]Ê ñòòR*•½½½x&gíekkknnþÇ@?ææfhñ¸¸¸¼÷Þ{°Îàà ©©©»»»î2k‘²téÒôôô††ÍP#ÃÒÒAãÇÛÚÚâ… ‡¾|ù²££#‰ÂÚÚz``@,ð„_…\\\LLLØlvpp°ö~ak½½½ð«ÓóçÏq‹¾HF„ÐÅùùóçº[ 666§O„©Ö½1v¼òÊ+dþÉ“'ûøø¦§§Ÿ;wŽN§Ηö©QOÂîîîß|óÍÅ‹SRR*++á3Ì߯‹`¢cmmÍd2ñˆcÖÖÖZÊ'4ÿùñÁÔ— ûEË=’¦›Ïœflß/î<¾b‘)§º<úètEjÜrCKJ1t:="""""páÂ<.ÖÝ»wÓÒÒsæÌÙ¼y3ÜÈÒ¾òŽú øwE‹f \þF I(DZ¢¨¨hÉ’%†zjÌÎΆÁð/ûdå<¯««K­‘òòrkkkÜm\~®‘‘ÑÊ•+KKK===555«W¯Ìœ9sÍŸ¸»»;;;à ΀¯¿þZÕó•P62yD"<¨¨¨066ECÐÍÍÍÉÉéüùóÐãúàvuu™››ÛÙÙ566 ¸ƒÍÅÅeÚ´iß}÷‚ %%% šö–……ÅúõëOž<‰o‰#ÃÝÝÝÎÎî‡~À0¬¹¹¹®®êP.—+‘H233q‡`‡ÃÁ0L(Þ¹sgáÂ…/xÕCŽÿ¸b×®]mmm_~ù% ™/-S£9ž„-(ŠßÿÞÕ”tÆŒÐ9žÂàÐéôÀÀÀ²²2…B!“ÉjjjàYù„¦¦©ÌÄ¢]$i»vïœd°ÿß6®¯8Í”üô%¢Ä¤¥ñ$YõÝ“†“bhpÕzçι\Ž¿jñòòb³ÙðøÉ“'ªno„+ïØ­€W´hÂåoš„zK=&ˆD".—»uëVC Àáp8pãÛo¿…;‚ÉÊóóó===£¢¢'Ož¼}û6Š¢æææGŽÁ=PÉ.JõÜøøø¤¤¤èèèÎÎθ¸¸!c?—””xzzB' 2ÙÈäINNîééa2™‚177ß½{wffæ’%K^zé%ÍùMæxÎøàà üÒjdd´uëVèδvíÚôôôÛ·oCkžÂ°ÄÇÇïÚµkݺur¹|Ñ¢EAAAÚˇõ1~H?ýßN J”òA¬ÿþw9ÿü—ûÂOï´uµ˜M3@!˜Ù¿þˆ9ü噌CËK¡ÌÌÌúúz++«îîîS§N᎑‘‘™™™0(–ƒƒÃîÝ»a9ÙÊ;v+àß2Í@¶ü‘Õ'ƒöþÑBÀÞ˜õjJÆšÔc§?z/ÎÐR L&ãóù666І|>ßÒÒ’Ìv´äÁ0¬³³S©TΘ1Cµ|î,Ä]–"‘úW …B<(ÌN2äõ¢(ÚÒÒbjjªæ¸¢Iww·¥¥¥jL‰ÁÁA###Õ·¡¡¡III>>>R©ФgÆáͬ9_øÔÄÆÆ®\¹’ÑO²„BáÔ©Sñ JAÄb1>ûcÊ8äqŸÏŸ4i’æ²rMÆù8g³hŽe *É…í²îIO«dóŠü§šØ¦LNCå(Š <Žñýãt/æ8d½aÌ¡K¸ýº»»{òäɺ¬žzXÿ®è®Èê§; ÍæÜ3E½‡9õ–šBSSSÍüÂPSŒ2yh4šªSÊX`ii©V‚¯ª•ª¦:®cL\¸­S²¬+ÆÆÆÔ–Íù"›²ñÔlAÓtf0ú±§)t„Lጮ"2 Â^„Δ!¦"ŒIŒÉ–&—* 0 36¦!ý¦D• E0cc*Íx‡F£iÙ6­©üµ´3Ö+àß•ájÝëS&5Å„dß¾}®®®†–bÂ?äÇ Šñɱ-{=ª0%†¡(¦D”rcTa¬D˜R P€U¢Š*•2Áï5†–‚âŸË_?rÏZ ŠñËÐŽ”ÿÍXC99éjõ5Îz€dý@³ Y?Pã¬R¢”ãÅÄ⛪{ýX;MjLꇂ‚ Pq©Ç‰D‚ ×?J¥²µµU÷òQ¤­­ †m-ÈdFQ”Çã‰ÅâaµváÂ…ÆÆÆQí/Õ×דý ¥…{½Ç¢w-ôööêR­¿¿ŸÇãQ©L(&zPhã?ÿf>³}æ+ Wþ¥²CŸ@1Îвr Ël 4öЮ1×J‰DÒÔÔSh‡zK=& (š––& :…-²²²jkk§OŸ.¢¢¢`® -åª\½zõÈ‘#0é7F«®®†åÉÉÉø1ÀÁÁ¡¤¤DíÜÞÞÞääd&“)V­Z…ç…‚Èåò¨¨(7m IDATOOÏÔÔTÍ~ÉÚ'“¹±±1%%ÅÆÆ†Ëå®]»611Qµµ¨¨(¨˜:::ÌÌÌ` ½ððð 6”””8;;3{”——3 ÍVR©ôÔ©Seee...P™© <tvvæææ>zôÈÍÍ-//O{嬬¬ÇO›6­©©)&&fÍš5:öœ –œÅb‘MÁ?þH65ÁÁÁ0ì©©éêÕ«ñ,•ª}Éd2…Báää´zõê°°°áŒÅß í MSá)·‰°Ñž©T ˆ SöTÌ`®¡%¢d+™Ù ee™Æþ'C¦1ÈÖJ™L–••Ååríííûí·C‡½þúëZÚ§Lê1áæÍ›‚œÀÌÌÌÇÇçúõëºT*MMM]±bÅñãÇaIbbbEEE||<|¡ÕÒÒãëë›’’‚;±|þùç›7oÈÌÌÄÿµZZZ¢££ýýý> ß.¨ÑÞÞ^ZZš””„3¦ÓéxÐxµ~ÛÚÚüüüÂÂÂ***`èèh<™y||<‡Ã'VUU%%%ùùùíÛ·ÐÓ†Édê Jx<žaó&Òh´9s昘˜p¹\ t:ýÕW_EQOÏN8_ªS³wï^íãIØBuuudd¤ŸŸß‡~(,,üõ×_Y,Öºuë”Jå˜ …®)4 ƒÂ™ˆ4ó{©mÀX®@eÒA‘HÔ½yvâšÿfÿüØÐ¢Qè„–•‹Ìl [ÇÆž@i ²µ²¨¨hãÆøP©L(“zLXºté¼yóÂÃ÷lÙ2>:rõêÕ¹sçjæÅT+_¼x±§§'þkMMÍûï¿_VVFøL–““óî»ïjžÛÑÑ ÝÞÞ÷Xêéé9~üxFF†jF@2ÔÚ'”ÙÄÄdÖ¬Y¸É%‘HÁ-ãäçç{{{³X¬+W®@¿êÖÖÖ'N„……íÙ³Êàçç÷ý÷ßK¥Òªª*x–££cNNÎ¥K—Øl6î3íææVZZÐÚÚª9bMMMBITûÅ0lÏž=vvvÅÅÅÛ¶mËÈÈxúô)€ÇãÉd2¼>4Ü[[[?ûì³ììì'Ož”••é~ùd:tèñãÇ„ž9Z¸wï^ÉŸÙÁºƒ¢hqq1†a³gÏ&¬Àãñ \]]_~ùeXB8_ªSÃáppû›p<5[À0,///!!¡¼¼|Ë–-€ˆˆ''§˜˜˜3gÎèr'Sè 5…¦EáhWn㜲ŸëlfJåˆT†ˆÄ=í|SÆd spâòC‹F¡ZV®!ÍÍ•qÄ›‚Ì4R¥¯¯¯¿¿_ „‡‡¯X±âÓO?¥ÞR©TÚÞÞîããS[[[WWg¨ZUUU•••ÙÙÙC–ûøø¸¹¹Ác__ß#GŽ8;;çççççç«{ãÆ >Ÿ¿qãFÍsá)üë©©)þ‰*###66V—oôší“ɼråÊÂÂÂêêê/¾øâáÃáåàÝ´iÓºuë<<<œœœ`add¤¿¿¿µµµD"yøðá‚ úúúfÏž}ÿþ}X!00ÐÁÁÁÊÊjÖ¬YÐØ•Ëå<ˆŒŒ433[´h‘«««æS,Ìq­šãEQÕŠx¿ \.7::ÚÊÊjÙ²e×®]Ór±±±¾¾¾ .\¾|ùÝ»wu¼v…BÁý+¸0]]]---Ïž=Ó±5Ç«ÿ“ÎÎÎa«Æùó烂‚NŸ>––F˜³*===$$„Ëåž={–Η.SƒCØFƒî¶J¥JÂd2 Æ”)StÏdK¡4•™ÂÑ®ÜÆ9wꞛطˆe}REXÒÕ'Ä-Nüôk)sûÂ÷w - …N­\ÚÍ•qÄû™i¤ÜóÃf³Y,ÖÇ\ZZ:¤¥AùR yyyóçÏ‹‹ Û»w¯­­mdd¤že¸}û6‹Å:uê”ÚòOVŽciiéííííímcc“““³}ûv¸› T*óóó“`ÃÅbñÔ©S0·*›Íæp8·nÝzþü¹H$:{ö,|í§Yû„2‡‡‡®^½º`Á///²Ó„àŸxT;²±±µµµ‚ÀoýGGGxPQQqóæM©TúìÙ3@]]‰‰‰öG;;;‰D2000eÊXrôèQ‰DòÁ¨õ+¦L™‚Û‘nnnmmmZZÆ÷¼:;;ÿôÓOº\8@(æææª–°X,&“ ˆ‹‹\»víÀ•••º§: QÛž¨ã‰š,X°ÀÏÏÏÕÕФɾ}ûlmm÷ìÙÓÞÞ_äΗ.SƒC6ãYYY©©©•••ôñññEQŒšÊA‹ÂÑ¢ÜÆ?µ÷½tÙ”—­æ–5_ìnï´òµíìãÿÜPfmÏüî.¾»æ CËH14d+—³le±Æþ'3¤ „cnnˆŠŠ²µµµµµ}óÍ7ËË˽¼¼´œB™ÔcÂÝ»wÓÒÒsæÌÙ¼y3ôÈÔ§‡.((pppÐ¥œ///¥RÙÛÛ‹gr¾víšH$Zºt)a}[[[ssó?þøú477C‹ÇÅÅå½÷ÞƒuMMMÝÝÝ [ lŸLf:¸pá‚Zt‘ÁÒÒAãÇÛÚÚâ… ‡¾|ù²££#‰ÂÚÚz``@,ð„_…\\\LLLØlvpp°ö~ak½½½ðkÔóçÏq‹¾HFDÕ[çùóçÚÿÏU±±±9}š8L=déÒ¥ééé úßxå•WÈü= “'Oöññ LOO?wîN'œ/íS£6ž„-ÜÝÝ¿ù曋/¦¤¤TVVÂg˜‰è0ðw…P9è¢p4•Û8ç??>˜úÒ#a¿h¹GÒtó™ÓŒíûÅBÀÇ7P 2åT—G®H[nhI)†€låÒb6h_y «±'Ã2¬­­™L&ÓÐÚÚº££Cû)”ãǘàååÅf³áñ“'O¿_)ÙÙÙ0ÂÀÀÀÀÀþeŸ¬œÇãuuu©5R^^nmm»óŠŠŠ–,Y¢ö(ŒŸkdd´råÊÒÒR@OOOMMÍêÕ«3gÎ\ó'îîîÎÎÎxhޝ¿þ÷|%kŸLfüàÎ;r¹|HƒUwÜÜÜœœœÎŸ?=n¡nWW—¹¹¹]cc£@ €;Ø\\\¦M›öÝwß!RRRÒÐРioYXX¬_¿þäÉ“ø–82ÜÝÝíìì~øá Ú››ëêê uppàr¹‰$33wp8 ÄBá;w.\ø‚W-‰àAEE…±±±.Ç€ìÚµ«­­íË/¿$ó¥ej4Ç“°…Bñûï¿Ã»ƒ’Θ1:ÇSŒ•ƒ…ƒ£©ÜÆ95Me&í"IÛµ{ç$ƒýÿ¶q}Åi ä§/%&•('ɪïž4´˜CC¶ri1WƉ¥±Ç dæ!t:=00°¬¬L¡PÈd²ššš!×Yê-õ˜™™™ 7›;88ìÞ½[Ïp8‡ƒÜøöÛoáŽ`²òüü|OOϨ¨(ÀÉ“'oß¾¢¨¹¹ù‘#GpT‘HÄår·nݪ֗ê¹ñññIIIÑÑÑqqqCîË,))ñôô„Ndí“Éœ™™Y__oeeÕÝÝ}êÔ©a9~hÇÈÈ('''---00ÐÊÊÊÑÑñ“O>Y¸p¡½½}@@€££ã²eË.^¼øÆo¸»»ÇÆÆ;v¬°°ðí·ßvss#tØÝ¹s'ƒÁˆ1cƤI“AHHˆf5èipùòåîîh ¼óÎ;999gΜ‰ðàÿ3;ðùüõë×wwwÏ›7ïÍ7 ’¨={ölçΉAÀÀÀmÛ¶­]»–쪓““{zz˜L&‚ Ô¾oÃà˜››ïÞ½;33sÉ’%/½ô’æ|ȦFs< g|pp~i522Úºu+tgZ»vmzzúíÛ·¡5OaXÈ”dÊmœ“~ú¿<”(åƒXÿý?ïrþ7>ø/÷…žÞiëj1›f €C0³ýsøË3†–—Bd+™Ù@¶2N,=N Ódke||ü®]»Ö­['—Ë-Z¤½}ÚûG {cÖ¨)]º»»'Ož¬êšzìôGïÅP$]Éd|>߯ÆÚ#€Ïç[ZZ’ùÂŽ†ÁL„jFqáÎBÕ4="‘úW …B<(ÌN2äõ¢(ÚÒÒbjj:ä·æîînKKKÕ`ƒƒƒFFFªo)BCC“’’|||¤R)éÁ0¬³³S©TΘ1C—úãðfÖœ/|jbccW®\‰?ÉhŽ'Y B¡pêÔ©x%‚ b±Ÿý1eò„†L¹óqÎ,fÑË2T"’ ÛeÝ-’žVÉæ;ùO4±M™ :†ÊQAyãû7†·W[oŒóAÖd+DÓlÐҡƦÆyÔáóù“&MRõ½N=všÍ¹gŠ>z/sê-õ7çM8LMM5ók ý8ºÐh´±Nóaii©V‚¯ª•Ž©1étºŽQ¢5ï²wðÆÆÆ£µ%…F£M ïà„hÎÙÔ§f š¦3ƒÁÐ=M1꼸r3Â^„Δ!¦"ŒIŒÉ–&—* 0 36¦!ý¦D• E0cc*ÍxGûÊ¥»Ùð7ÐØÝMʤ¦ ˜ìÛ·ÏÕÕÕÐRLâãã'ÊF4 5ŽmÙëP…)1 E1%¢”£ c%¢À”J€”¨ÅPT©” ~¯1´°ÿ\þâø‘{¦ÈÐòPPPPPPPPPPŒ_†vü üoÆÊÉIPƒ¬¨qÖÔ ëjœõ5Èúg=zŒ8-åøAAAAAA1‘ø¦ê^?ÖN“ZD„ú¡  0T\ê±EQ'‹ %€R©lmmÕ½|ikkƒa›G€D"Á#«ëR>‚¾.\¸ÐØØ82ñ´STTT__Oö+¼%à^ï±è] ½½½cT™‚°)42 ¬8ÖÜøù7ó™í3_QX¸ò/•=úŠq†ó€l¥#¤¿¿ŸÇãQɧ†… ‘Hššš` ]êkB½¥SRRlll¸\îÚµkõ,@VVVmmíôéÓATTÌU¡¥\•«W¯9ræé¥ÑhÕÕÕ°<99?888”””¨ÛÛÛ›œœÌd2ÁªU«Ô2Êåò¨¨(OOÏÔÔTÍ~QMKK …ƒƒƒ€‚‚®¬\{_QQQP1utt˜™™Ázááá6l())qvv2fö(//g0š)¬¤Ré©S§ÊÊÊ\\\ 2 ÒÃ]ÑÙÙ™››ûèÑ#77·¼¼¼Q¬¬JpppBB‚ZBr‹E6?þø#ÙÔðw¦¦¦«W¯Æ³Tªö%“É …““ÓêÕ«ÃÂÂt—“âï™B#ÓÀº(Àñ°Ñž©T ˆ SöTÌ`®¡%¢d7'ÙJG¶òfee=~üxÚ´iMMM111kÖ¬1ÄÕL0È4€L&ËÊÊâr¹ööö¿ýöÛ¡C‡^ýu-õÉ Lê1!===<<<$$D,‡„„x{{k¦ïSbbb`x{÷îíß¿ßßßF #+WcÕªU‡R+ÌÍÍÅ_¯ hž˜——7wîÜÄÄD‰D²~ýzooï×^{ ÿõĉ …‚Læ›7o"ròäI@rròõë×¡Ž +×Þ×¹sçàÁ¦M›BCC k{;v¬¹¹¹¨¨_CQ´¯¯Oýš™™íرƒÍf×ÖÖŽne] ›‚ 6–CRRR–-[öË/¿ìر#((H3äYJJÊ[o½Åf³8ó`Š´:¨ÏN)È ShdXG8žùÏõ{ÿr“#¢@å2…xº‹pÿ'W²“B -…®Ýœd+ÙÊ»ÿ~/ÿÆùùù”I­ dàìÙ³ýýý_}õRüÅÿp5åø1úÈåò'OžÌŸ?`ffæããsýúu=Ë€‡«´³³ …R©T{ùÑ£G‹‹‹µ·I§Ó ƒÁàóù¥¥¥Û·oW;wpp°¼¼>Æ1™L___Ÿ¿qãFÍsá)ü³ˆ©©)þ‰*###66Vû7z©TÚÞÞîããS[[[WW‡¿$,×Ò—.lÚ´iݺuNNN °022ÒßßßÚÚZ"‘<|øpÁ‚}}}³gϾÿ>¬èàà`ee5kÖ,hìÊåòDFFš™™-Z´ÈÕÕUó<Ìq­šãEQÕŠx¿ \.7::ÚÊÊjÙ²e×®]Ór±±±¾¾¾ .\¾|ùÝ»wu¼v…BÁý+/¾]’ÇãÕÿIggç‹4uþüù   Ó§O§¥¥æ¬JOO ár¹gÏž…%„ó¥ËÔà¶@£Ñà^¥R %a2™ cÊ”)ª™i) ަBÓ®Éã8çNÝsû±¬OªèKºú„‚¸Å速~-eÎb_øþŽ¡¤Ð ²›“l„h®¼€®®®ÎÎΖ––gÏžéIú¿jîía³Ù,ëã?.--USºk Ê—zL\½zuÁ‚^^^q×»}û6‹Å:uê”ÚòOVŽciiéííííímcc“““³}ûv¸U T*óóó“`ÃÅbñÔ©S0·*›Íæp8·nÝzþü¹H$:{ö,|í§J^^ÞüùóãââÂÂÂöîÝkkkIVNÖ—ŽàªbccjkkßúŽŽŽð ¢¢âæÍ›R©ôÙ³gþþþ€ºº:í vvv‰d```Ê”)°äèÑ£‰äƒ>PëW L™2·#ÝÜÜÚÚÚ´´ŒgÛvvvþé§Ÿt¹p€P(ÌÍÍU-a±XL&SÇÓ QÛž8â¦,XàçççêêJ&Ò¾}ûlmm÷ìÙÓÞÞ_äΗ.SƒC6ãYYY©©©•••ôñññEQŒ„ M‹RŽ[*jï;{ è²)/[Í-k¾ØÝÞiåkÛÙÇÿ¹¡ÌÚžùÝÿ\|w͆–‘bhÈnN²¯¼qqq€k×®8p ²²’p]¦PCS˜››¢¢¢lmmmmmß|óÍòòr///²úZ Lê1N§GDDDDD.\¸ ŒB466>|¸  ÀÁÁA—rB¼¼¼”Jeoo/žÉùÚµk"‘héÒ¥„õmmmÍÍÍÿøãèÒÜÜ -—÷Þ{Ö455uww×<ýîÝ»iii€9sælÞ¼º±’•“õ5*XZZ"rüøq[[[¼°¡¡áðá×/_vttÄ#QX[[ ˆÅb¶‚ÐOÆÅÅÅÄÄ„Ífkï¶ÖÛÛ ¿.=þ·á‹dA}¹ž?Žÿÿ‰ÍéÓÄaêǯ¼ò ™¿dòäÉ>>>éééçΣÓé„ó¥}jÔÆ“°€»»û7ß|sñâÅ”””ÊÊJø C…¬?)42 <,8®øÏ¦¾ôHØ/Zî‘4Ý|æ4cû~±pçñ ˆL9ÕåÑG§+Rã–ZRŠ! »9ÉV@0ÔÊ»téÒôôô††Í`Sjjkkk&“‰Ç.´¶¶îèèÐR_ ”ãǘ€I¿sçŽ\.Ò–u²³³a0„\²r×ÕÕ¥ÖHyy¹µµ5îž(**Z²d‰Ú£0~®‘‘ÑÊ•+KKK===555«W¯Ìœ9sÍŸ¸»»;;;ãñO¾þúkÜóÕËË‹ÍfÃã'Ožà/k ËÉúÜÜÜœœœÎŸ?=n¡nWW—¹¹¹]cc£@ €;Ø\\\¦M›öÝwß!RRRÒÐРioYXX¬_¿þäÉ“ø–82ÜÝÝíìì~øá Ú››ëêê uppàr¹‰$33wp8 ÄBá;w.\8Z—?!صkW[[Û—_~ HæKËÔhŽ'a …â÷߇w+1ctާ)42 LVüSÓTfbÑ.’´]»wN2Øÿo×WœæJ~úQbR‰Òx’¬úîIC‹I14d7'Ù HV^‘H***Œ'ÜS¢A Ôt:=00°¬¬L¡PÈd²šš|=®Æ ÞR ™™™õõõVVVÝÝݧNÒ¿ã‡Ãáp8xŒo¿ýî&+ÏÏÏ÷ôôŒŠŠœ ÀÑÑqÙ²e/^|ã7ÜÝÝccc;VXXøöÛo»¹¹:ìîܹ“Á`ÄÆÆÎ˜1cÒ¤I $$D³š‰‰ ô4¸|ùrwwwDD|öxçwrrrΜ9ÿàÁÿgvàóùëׯïîîž7oÞ›o$Q{öìÙÎ;% ‚ Û¶m[»v-ÙU«²Á177ß½{wffæ’%K^zé%ÍùMæxÎøàà üÒjdd´uëVèb´víÚôôôÛ·oCkžÂ°)42 LVœ“~ú¿<”(åƒXÿý?ïrþ7>ø/÷…žÞiëj1›f €C0³ýsøË3†–—Bd7'ÙJG¶ò&''÷ôô0™LA<8áöÚ2 ¿k×®uëÖÉåòE‹i¯Oíý£…€½1ëÔ”Œ†Á$yjû«Rþè½8CI¥#2™ŒÏçÛØØ@bðù|KKË‘¹çvwwOžÎ™Å,šc™B†JDra»¬»EÒÓ*Ù¼bg#ÿéƒ&¶)“A§ÓP9Š"(c|ÿ†Á6Äkgœ²ÞÐ~s’­t„ítvv*•Ê3f¨–Sãz/sê-õ˜@£Ñôœb155Õ̯1,t\Æ!ÛeHVþ"} ‰¥¥¥Z n¼ªZTª˜ètºŽŸ5/–ìC‡±±1µ%Gs¾È¦†l<5[Ð4 †~ìiŠ3¡5°&Â^„Δ!¦"ŒIŒÉ–&—* 0 36¦!ý¦D• E0cã ¶çòˆö›S÷}ö4MÕ-“âÅyqs‚2©)(&$ûöísuu5´†øøø!?PPŒOŽmÙëP…)1 E1%¢”£ c%¢À”J€”¨ÅPT©” ~¯1´°ÿ\þâø‘{¦ÈÐòPPPPPPPPPPŒ_†vü üoÆÊÉIPƒ¬¨qÖÔ ëjœõ5Èúg=zŒ8-åøAAAAAA1‘ø¦ê^?ÖN“ZD„ú¡  0T\êÑ¡··W³°­­ F/6J¥²µµU÷òQdÄŽ¢(Ç‹Å:–$ISSŒ¬#.\hllxCRTTT__Oö+¼ ¸×{,z×áý©I?Ç£R™Pü=ТtüŸÜøù7ó™í3_QX¸ò/•=úŠq†ö Ï92$”ÆE´ ¦î& õ–ú…èììÌÍÍ}ôè‘››[^^^ÞÛÛ›œœÌd2ÁªU«ôŸ=1++«¶¶vúôé ** æªÐR®ÊÕ«W9“Óh´êêjXžœœŒJJJÔÎÕ~ár¹<**ÊÓÓ355U³ßÆÆÆ””.—»víÚÄÄDíå2™,++‹ËåÚÛÛÿöÛo‡zýõ×ñÖ¢¢¢ bêèè033ƒ)ôÂÃÃ7lØPRRâìì<Šq¬qÊËË †f +©TzêÔ©²²2¨Lƒ‚‚ð ;ÈîOB²²²?~|¾]P£½½½´´4)) fL§Óñ`òjý¶µµ%$$øùù………UTTÀ:ÑÑÑx2óøøx‡O¬ªªJJJòóóÛ·oág)Âû“ |$y<žaSÊÑh´9s昘˜p¹\ t:ýÕW_EQOÏN8_ªS³wï^íãIØBuuudd¤ŸŸß‡~(,,üõ×_Y,Öºuë”Jå˜ Å‹B¦†õ1iæ÷ SÛ€±\ʤƒ"‘¨{óìÄ5+þÍþù±¡E£Ð -+N¯¯¯ïèèP(­­­ø×N²•wühì¿„ƒ9[Ž2©GŸŽŽAð˜áöööcí»¬…«W¯Î;W3/¦ZùâÅ‹===ñ_kjjÞÿý²²2B¿¢œœœwß}Wó\-ÞÓÓsüøñŒŒ ÕŒ€ª˜˜˜Ìš5 7¡$‰@ ÐRÞ×××ßß/ÂÃÃW¬Xñé§ŸËŸ,??ßÛÛ›Åb]¹rúU·¶¶ž8q",,lÏž=ðýüü¾ÿþ{©TZUUÏrttÌÉɹté›ÍÆ}¦³³³ÝÜÜJKKZ[[5ÅhjjxxxJ¢Ú/†a{öì±³³+..Þ¶m[FFÆÓ§O<O&“áõ¡áÞÚÚúÙgŸ…„„dgg?yò¤¬¬L÷Ë'£¸¸øÐ¡C?&ôÌѽ{÷Jþ„ÌÖE‹‹‹1 ›={6aWPPàêêúòË/ÃÂùR‡ƒÛß„ã©Ù†ayyy ååå[¶lDDD899ÅÄÄœ9s†ìN¦Ð3šÊê•Ãx¦ìç:›™R9"•!¢qOg;ß”1Ùœ¸|ÅТQèÙŠXºté¼yóÂÃ÷l٢隨¶ò‚ÐØÿdÈÌÍÁ-G9~Œ>ð» îPajjJè#¡ªªª*++¿øâ‹!Ë}||ðc___GGÇû÷ïççç744$%%©ž{ãÆ >Ÿ¿qãFÍsµ\xFFFll¬öoô+W®,,,d0¿ÿþûÇñ'EÂrèŒËf³Y,V{{{rròâÅ‹½¼¼t™M›6­[·àääÔÐЕWdd¤¿¿?@"‘<|ø011±¯¯oöìÙ÷ïßàŸûgÍšõôéÓÙ³gËåò¤¥¥™™™-Z´ÈÕÕUóe9Ìq­šã~ÅËñ~Ÿ>}Êårsss­¬¬–-[öÍ7ß\»vÍÝÝì*bcc}}}Ë—/¿{÷.¼¢!Q(ÐÊÇ™5k¦«««³³S(>{ölXy¹x<~ÜÙÙù"9½ÎŸ?Ÿ››+“ÉÒÒÒsY¥§§Ëd²ÿú¯ÿ:{ö,,!œ/]¦‡°í^}õU( “Éd0S¦LÑ%c-… TV/¨Æ-wꞛطˆe”õ÷ Ûã§~úµ”9ëö…ï—¿»æ CËH14d+T*moo÷ññ©¨¨puu}ë­·TŸÛ5W^ðû‹óFs0G`ËQ&õè—[±X|hjjªùUÁÁÁA$ XXXÀ’Ç‹D¢Ï>ûLå¾<Ï‚ô#=<<ÚÛÛ5ÔLfÛvuu½qã†6àóù999Ê%yyy,  (++Û·o_UU•ö©ÎƒƒƒU–'jy¡:sçÎõ÷÷www‡"©³gÏ{{û;wvttÀw!ÊöÒ¦iHèZ<333%%¥ªªjÿþýʯÒX Ó8,•u÷\}x ©Å›6³Ê›/ôttÙøÙw½âþZ_nëÈúñ. —zL@7ÒåææÎ™3'666$$d×®]öööð'º‘÷µ-ö,Üue¾†/‡\ê‘ÇÞÞÞÒÒòåË—0¢¹¹y46—ÐLcccZZZaa¡“““6å”x{{+о¾>2“sYY™@ X¸p!åùtîææ¶{÷nxŽD"133£üòÊ`0ÂÃÃÃÃÃçÎ#—ÖR–ÛÚÚ²X,r³![[ÛÎÎÎAŸHK¬­­1 ;zô¨½½=YX__Ÿ––vñâEgggr' [[Û¡P·­ œ_vss355­©©Ÿº5këëëƒS{---¤G?lcF†¿+ÓÒÒ¢½Ç`ggwò$õ6õ… ¦§§××׫o]¢¦M›Fï?~¼¯¯o@@@zzú™3g e{in}RÖðôô¼téÒ… ’““«ªªà;ÌŸ&ŠàÏ„²±Uã /þùËý o<â÷ –LOœd9e¢‰c¿¸ýä*NLª˜àöè‹“•)±Kô-)bèFº;w¦fΜ¹aøþ¤yäկţ¨»7ee¾†/‡b©Gccã+V”––z{{kkkƒ‚‚t,CVVÜ a`````€\/LWÎápº»»U*©¨¨°µµUžN***Z°`Ê«0y-݃O™2eÕ¿ðôôtuu… œß~û-ùJ sûöm™LF: ”å #  ¼¼\.—K¥ÒÚÚÚy󿄿ÀÃÃÃÅÅåìÙ³0âÆàvww[ZZ:88466òx<¸‚ÍÍÍmâĉ?þø#†a%%%õõõêþ–••UhhhAA¹$ŽOOO‡Ÿþ™ ˆæææ‡BêääÔÐÐ ‰222È€`›Í&‚Ïçß¾}{ø/àAee¥‰‰‰6/]zdûöííííçÏŸ4í¥¡iÔõIYƒ\.ñâìÕ¸½ñäÉ“UÂf†€²±Uã /j›ÊM­:¢ö²»gD’þ¿Ú¹Os™ (¹qSb‘Âdœôú}‹‰º‘ÎÛÛ»¦¦?}úT9ìrä[ÛÐPqo(•ù¾úJ=,ž?¾mÛ6‘H„aX@@ÀæÍ›W¯^ ˆ‹‹KLLŒŠŠêêêŠÕýWj6›Íf³ÉÕ©ßÿ= Ø¢+ÏÏÏ÷òòŠŒŒܺu ÇqKKËC‡‘¨ ¡¡aÓ¦M*÷R¾v¨^RRâååƒ(222?~lccÓÓÓsüøqr:Œ®<..nûöíkÖ¬‘ÉdóçÏ_¾|ùp4¦Œ±±qvvvjjj@@€³³ó—_~9oÞ)d¢ÿÞËÆ;ìÿ üÌÛsÞýg·Û»[Í'š '0Âü//£ÓΟ:®oyš Ñ"""222à¦XNNN;vì€åt#ïØ²ØÅ SæP]£OŸìŠ &Y¸\®µµµrHhÊ‘“_ìŽÕ£HÚ •J¹\®ô!^õׂ `fA•Eitå佯§>‚J†+ Ée€@ €‘š|>ŸÜf'ôyqomm533S™iR§§§ÇÚÚZymŠD"166VþJ±víÚÄÄD___±X E&Atuu)ŠÉ“'ks¾vfõö"›&&&fÅŠ䛌º>éjàóù&L ×’0  …dë*¨dƒB³±R7t¸ž3ŠóŒœËåR\$ñ;¤=­¢Þ6ц¥Û¹Ïî7Õ˜±˜ †.Ãq ç°Mî]} oy©1p%ë Í#ZOOÏøñãµ=é,6Ò³è,†æáÒ—ƒnsΩ¢/vÇ’:G_©GÊ?Œácff¦ž_cH¼ÞƒQ.&£+ν´ÄÚÚZ¥„t^•=*eL CË=qÕ×@Pf䘘˜ŒÔ’##£±¾f\½½èš†NŸê5¨»ÎL&S7þ4bP4«1jÕá÷a –ù#`ŽcŽ·6ý®ª #¬#¸BNàab‚ö¢1t4hÚofð'°Øº‡ÎbhV¦ö–¹ÔĘdÏž=îîîú–bÌ7èäa˜Ù¸kú²jBA8N(0…Ì—›(09¡P À8ã …”÷¢VßÂ"ÿ¹ü[àGΩ"}˃@ @.ƒ~ ø›Ñ9é¤dÝ€ô¬’uÒ³@JÖ HÏ: åõF´(ð@ ˆ±Ä¥ê»ýD‡‘Ø**b«¡оÔ#C__ßÊu€B¡ ÌGOW>‚´··Ãm›‡ ŽãG(ª”÷÷÷s8œ‘J±qîÜ¹ÆÆÆ©J…¢¢¢ÇÓý Ÿ®õ»k@Ë~¨ƒ¾@Œ8"‘¨©© n>(tFf qõ×?,§tL™&·rç~W~𠆆N(‰È,Eƒ2²#ãtcH–„ô•zXtuuåää}:g΀¹¹¹¯¯ï•+WÈû‡s=j–GÄbqJJÊÒ¥K= K*++ãââàkhkkktt´ŸŸ_rr2Äòõ×_oذaÙ²eä_®µµ5**jÑ¢Eiiiðë‚ ¥¥¥‰‰‰äfÆ ƒL?¡rßöööøøxÿÊÊJxNTT™Ì<..ŽÍfà «««ýýý÷ìÙCi3¤~H×7t‘‘ÑÌ™3MMM(O`0o½õŽãdzvÊöRnš]»viÖ'e ׯ_ˆˆð÷÷ÿüóÏ'Nœøý÷ßóòòÖ¬Y£P(FMm)**úøãIAÚJã ÁÈŒ𹽨„v`"“ãR±D ôl˜‘°jé_k~}¢oÑZ¡y¤{üøqgg§\.okk#g;éF:º‘¡:‹AWs]T@.õŸœË—/Ïš5K=/¦Jùûï¿ïååEþZ[[ûé§Ÿ–——SieggòÉ'ê×vvvbFnŠîèèHæööö=zôàÁƒÊ•155:u*éB‰D"GþZ\\|àÀ'OžPN»¨È£ ùùù>>>yyy?üðŒ«nkk;vìXHHÈÎ;aþþþ?ýô“X,®®®†W9;;ggg÷Ýw555dÌtVV–‡‡Giié²eËÚÚÚÔ5ÖÔÔ˜>}:¥$Ê÷%bçÎÅÅÅ›7o>xðà³gÏG*•’çCǽ­­í«¯¾ ÎÊÊzúôiyy¹ö¯º>£»wï–ü :?X{p/..&bÆŒ”'p8œÂÂBww÷7ß|–P¶—rÓ°ÙlÒÿ¦Ô§z AäææÆÇÇWTTlܸîââ}êÔ)ºžŒÐ¯^½êïïçñxaaaK—.ýûßÿ®þïS6šÌ˜ üׇvSÄ2L,ÅÂÞ®®s¼•%8vñ}‹†Ð páÂ…³gÏ KHHظq£zh¢úH§ydD¨@g14X’A]PàÇŸ™êêꪪªo¾ùfÐr___òØÏÏÏÙÙùÞ½{ùùùõõõ‰‰‰Ê×^½z•Ëå~üñÇê× )2ZÀÌÌŒœ¢:xð`LLŒæ9ú+Vœ8q‚Éd¾xñâÁƒʯÝÝÝÝ]]]|>ÿùóç*)ŽÔåцõëׯY³àââR__WDDÄ¢E‹"‘èÁƒ ¯^½š1cƽ{÷ätÿÔ©SŸ={6cÆ ™LvÿþýÔÔTssóùóç»»»«¿ÈÂ×Ê9á,ùBLÞ÷Ù³g 999666‹/¾téRYY™§§'ÝSÄÄÄøùù–,YrçÎøDƒ"—Ë¡—O2uêTRº>£‡Cwuu '§×Ù³gsrr¤Rijj*eΪôôt©Tú·¿ýíôéÓ°„²½´iÊŒŒŒàZ‚·Þz JÂb±˜L¦………69®£ ŒÈ¯©©ÉËËëèèHJJzÿý÷½½½ÉÔƒ#cøÜ~ØbêØ*”ŠpB"‘ö¿âwľŸ¸ñ{)kê­s?-ùdÕ»ú–18tP,wttøúúVVVº»»ðÁÊnåH§adD¨Cg14Xm\eKý§åÖ­[yyyÇWþéÊI¬­­}|||||ììì²³³·lÙ—* E~~~||?''G¹$//Åb-úÁÁÁ*ˇt¹2sçÎõ÷÷www‡"©³gÏ{{û;wvttÀw!ÊöÒ¦iHèZ<333%%¥ªªjÿþýʯCÀÒÒioooooÿÞ{ïUTT.5¥qÐ`d ŸÊº{®><†ÔâM›YåÍz:ºlüì»^q­/·udýø?K=& ë„¹¹¹sæÌ‰ Ùµk—½½}DDü‰n¤£”ÐY ºr-]eKý礱±1--­°°ÐÉÉI›rJ¼½½ E__™É¹¬¬L ,\¸ò|{{{KKË—/_Â8ææfèñ¸¹¹íÞ½ž#‘HÌÌÌ(¿¼2ŒðððððpÀ¹sçTv ,\¸0==½¾¾ž 2Ó,ÏkcmmaØÑ£GíííÉÂúúú´´´‹/:;;“;QØÚÚ …B¸meœŒ›››©©iMM üÔ­X[__œÚkii!=BøaÃ0Êç––åsš±³³;y’b›ú!õÑcÚ´itññãÇûúú¤§§Ÿ9s†Á`P¶—æ¦QÑ'e OOÏK—.]¸p!99¹ªª ¾Ã -« [[[‹Eî8fkkÛÙÙIþJi52Ë?¹?áGü~Á’鉓,§L4qìò·Ÿ\Å €IÜ}q²2%v‰¾%E ]'¼sçNjj*`æÌ™6l€ 9àOšG:õ‘A Å +×ÒuQÅRÿ9ÉÊÊ‚›! ë…éÊ9Nww·J%¶¶¶ÊÓIEEE ,Py&¯566^±bEii) ···¶¶6((0eÊ”UÿÂÓÓÓÕÕ•\eÿí·ß’‘¯¤0·oß–Éd¤*àAee¥‰‰‰²ÃG)Ïðñððpqq9{ö,Œ¸…1¸ÝÝÝ–––<®`sss›8qâ?þˆaXIII}}½º¿eeeZ™ËP IDATPP@.‰£ÃÓÓÓÁÁáçŸ&¢¹¹ùáÇІ:99544ˆD¢ŒŒ 2 Àf³ ‚àóù·oßž7oÞ0Ÿš®o&Û·oooo?þ< i/ M£®OÊärù‹/`¯ÀÍJ'Ož¬6ƒÐ #  ¼¼\.—K¥ÒÚÚZå¥q 32†OmS¹©U‡@Ô^v÷ŒHÒÿW;÷i.³%7Îc B,R˜Œ“^¿S o1ƒC× ágQxüôéSå°7ÊάadDPBg1èÊ5¸.t ¯ÔÃâùóçÛ¶m‰D†lÞ¼yõêÕÊu›Íf³Ùä†ßÿ= Ø¢+ÏÏÏ÷òòŠŒŒܺu ÇqKKËC‡‘¨ ¡¡aÓ¦M*÷R¾6...111**ª««+66vнŸKJJ¼¼¼`EFFÆãÇmllzzzŽ?NN‡%%%õöö²X, ÃöïßO.Π“gøggg§¦¦ØØØ8;;ùå—óæÍstt\¶l™³³óâÅ‹/\¸ðî»ïzzzÆÄÄ9räĉ~ø¡‡‡eÀî¶mÛ˜LfLLÌäÉ“ÇÇãñ‚ƒƒÕO355…‘/^ìéé ‡à>ú(;;ûÔ©Sqqq÷ïÿ_f.—ÚÓÓ3{öì÷Þ£H¢6¤~H×7 KKË;vddd,X°à7ÞPo/]Ө듲Å% œi566Þ´i gZ½zuzzú­[· 7Ð/qqqÛ·o_³fL&›?þòåËa9q 32NúÉÿv™û@¤Iˆþ{/ï°ÿ7.ð3oÏy÷ŸÝnïn5Ÿh€œÀ󿼌N;ê`¸¾åEh‚®FDDdddÀ%œœœvìØËé:3ÝȈÐÅ +*FŸ>Ø @M2Ú¤9ùÅîX}K1R©”ËåÚÙÙAâ5àr¹ÖÖÖt±°t3 ª,J#¢««K¡PLž/Žã­­­fffd ===ÖÖÖÊkS$‰±±±òWеk×&&&úúúŠÅb(’Ž1ÀάÞ^dÓÄÄĬX±‚|“Q×'] |>„ äòM†aB¡lýQÅ•l€p¹ÜqãÆi³€Îȸž3ŠóŒœËåR\$ñ;¤=­¢Þ6ц¥Û¹Ïî7Õ˜±˜ †.Ãq ç°Mî]} oy©1p%ë ºNééé?~¼6£'ÝȈô<(tC{K’rä$t›sN}±;–Ô9úJPÅÌÌL=¿Æ ´ƒbddD¹˜ÌÈÈH_k™­­­UJHçUÙ£RöÀ4À`0´Ü%.ëT†îsš‰‰ Z’B¢Þ^tMC§OõÔ]g&“©¡%Ú:#càðû0KŠa„\Œ0Ç1Ç[›~WUH„‰‰Ö \!'pŒ01A{Ñ:š;¡ºñ×PÚåãõ ³¯çº(ƒ\jbL²gÏwww}K1fˆ‹‹tr0LŽlÜ5}Y5¡ '˜Bf‚ËM˜œP(Pà œÀq…BÊ{Q«oaˆÿ\þ-ð#çT‘¾åA @ —Á?PüÍhƒ‚œtR²n@zÖHɺéY %ë¤gr„b#Z€?[\ª¾ÛOt‰­¢)¶úA zíK=2ôõõ©”(ж¶6½£YÖÞÞ·m~=Ô•‰ã8‡Ã …ÓëÿsîÜ¹ÆÆÆ©J…¢¢¢ÇÓý Ÿ®õ»k@]¥#u2Ð1WýÃrJÇ”ir+wîwå÷¿a`hÑD"™sdPúûû9J>5‚ søC_©‡EWWWNNΣG<<tèLBnddtýúuXž””DœœœJJJT®íëëKJJb±X<oåÊ•d^(º:•¡Sfcccrr²]CCÃêÕ«´‘'22¦ÎÎNsss˜B/,,lݺu%%%®®®ƒî™ýTTT0™LõVb±øøñãååånnnИ._¾œ|уN¥Ã?Y™ÀÀÀøøx•„äyyytMðË/¿Ð5M`` ÜöÎÌÌ,((ˆÌR©|/©T*—Ë]\\‚‚‚BBB´—ñçC³a‘Éd‘‘‘^^^)))Úœ?VàJY 9Ž™²¤Ï„lfé["Ä ÑpOMMåóù‰PXX7,¢é233Ÿ}:g΀¹¹¹¯¯ï•+W4Ë£ b±8%%eéÒ¥G…% •••qqqðƒVkkktt´ŸŸ_rr2Äòõ×_oذaÙ²eä\[kkkTTÔ¢E‹ÒÒÒà×:::JKKÉÍŒ ¹™¼Ê}ÛÛÛãããýýýCBB*++á9QQQd2ó¸¸86› /¬®®NLLô÷÷ß³ge¤ ]ÿ¤dH'*FFF3gÎ455mhh <Á`¼õÖ[8Ž“éÙ)ÛK¹ivíÚ¥YŸ”5\¿~=""ÂßßÿóÏ?œ8qâ÷ßÏËË[³fB¡5 F€›7oÖ××Ã\tú–eÄhæöbÚ‰LŽKÅ@гaFª¥­ùõ‰¾ECh…æíñãÇr¹¼­­œí¤éÈüSÇ3ÝŽ FjøC.õèrùòåY³fé1-%*åï¿ÿ¾——ùkmmí§Ÿ~Z^^N¤•ýÉ'Ÿ¨_ÛÙÙ‰a¹Yº£££rжæ:é055:u*éZ‰D"§YmÈÏÏ÷ññÉËËûá‡`\u[[Û±cÇBBBvîÜ ëô÷÷ÿé§ŸÄbquu5¼ÊÙÙ9;;û»ï¾«©©!c¦³²²<<{ö Àáp¤R)y>tÜÛÚÚ¾úê«ààବ¬§OŸ–——kÿø#ÎÝ»wKþ¬=8Ž1cÆ Ê8Naa¡»»û›o¾ K(ÛK¹iØl6éSêS½‚ rssããã+**6nÜwqq‰ŽŽ>uê”rnK„¡4,½½½G=xð z3½ž!2Ê}h7E,ÃÄRL0 ìíêàš1Ç[Y‚cзh­Ð0¢-\¸pöìÙaaa 7nTMT銋‹8ðäÉ2´ 1(CµC:~Œ"ÕÕÕUUUß|ó¡  ^îëëKûùù9;;ß»w/??¿¾¾>11QùÚ«W¯r¹Ü?þXýZ8!EF’˜™™‘STšëÔÌŠ+Nœ8Ád2_¼xñàÁ•×quy´aýúõkÖ¬¸¸¸Ô××Cã±hÑ"€H$zðàABB«W¯f̘qïÞ½ÀÀ@9Ý?uêÔgϞ͘1C&“Ý¿?55ÕÜÜ|þüùîîîêŸÄ`Žkå‡püÆ@Þ÷Ù³g 999666‹/¾téRYY™§§'ÝSÄÄÄøùù–,YrçÎøDƒ"—Ë¡—O2uêTå„Û¯‡Ã!»ºº†“ÓëìÙ³999R©455•2—UzzºT*ýÛßþvúôiXBÙ^Ú4 e FFF0xî­·Þ‚’°X,&“iaa¡MÆZ„ 3,Œ‰‰Q Ž!Ò;·¶˜:¶ ¥"œH¤ý¯ø±ï§nü^ÊšzëÜOK>Yõ®¾eD ݈&‹;::|}}+++ÝÝÝ?øàåBÊ‘®»»»««‹Ïç?þeRÔ†¡Z€¡ž\êÑâÖ­[yyyÇ××èK'À ‚Y[[ûøøøøøØÙÙeggoÙ²Ææ E~~~|||X$}öÙg*÷åñx¤éááÑÞÞ®¡f2Û¶««ë7´ypŸÏÏÉÉQ.ÉËËc±XZ^NIpp°ÊòÄ×®jîܹþþþîîît"íÙ³ÇÞÞ~çÎð]ˆ²½´iºÏÌÌLII©ªªÚ¿¿òk'Â@ 4,555l6ÛÊÊêæÍ›---àôéÓpža8†HïTÖÝsõá1¤oÚÌ*o¾ÐÓÑeãgßõŠûk}¹­#ëÇÿ¹€\ê1݈–››;gÎœØØØ]»vÙÛÛGDDÀŸèFºØØX@YYÙ¾}ûªªª†:þ2T 0Ôó‘K=*466¦¥¥:99”CÌÛÛ[¡Pôõõ‘™œËÊÊÁÂ… )Ï····´´|ùò%ŒinnVŸºR¯sP Fxxxxx8àܹsä."ƒÊóÚX[[cvôèQ{{{²°¾¾>--íâÅ‹ÎÎÎäN¶¶¶B¡n[A91äææ‡yø©[°¶¾¾>8µ×ÒÒBz„ðÃ6†a”qù---ÞÞÞZ>ÝÉ“ÔÛÔÓ¦M£‹÷€Œ?Þ××7 ==ýÌ™3 ƒ²½47Š>)kxzz^ºtéÂ… ÉÉÉUUUðf, üéQ6,nnn»wï†å‰ÄÌÌL}ªç5 ‘~ùç/÷'¼ñˆß/X2=q’唉&ŽýB>àö“«80©b‚Û£/NV¦Ä.Ñ·¤ˆA Ñîܹ“šš ˜9sæ† àBø“æ‘náÂ…éééõõõê›M!èªÐò|K=*deeÁ½t¿1tå§»»[¥’ŠŠ [[[å餢¢¢ ¨¼ “ׯX±¢´´ÐÛÛ[[[¤¹Îo¿ý–Œ|¥ƒòöíÛ2™LÙ1¥”gøxxx¸¸¸œ={FÜÂÜîînKKK‡ÆÆFW°¹¹¹Mœ8ñÇÄ0¬¤¤¤¾¾^Ýß²²² -(( —ÄÑáéééààðóÏ?ÑÜÜüðáChCœœD"QFF `³ÙAðùüÛ·oÏ›7od•`àlß¾½½½ýüù󀦽44º>)kËå/^¼€½ “É“'OV ›AʆeÊ”)«þ…§§§««+ÜQîü1AmS¹©U‡@Ô^v÷ŒHÒÿW;÷i.³%7Îc B,R˜Œ“^¿S o1ƒC7¢y{{×ÔÔÀã§OŸ*‡½QŽtTVVš˜˜èëûÝe¨@ËóÑWêañüùómÛ¶‰D" Ã6oÞ¼zõj›Íf³Ùä~ßÿ½ŽäÒ @WžŸŸïåå (((¸uëŽã–––‡"#PACCæM›Tî¥|m\\\bbbTTTWWWll,ù•š®Î’’///DA§ÌŒŒŒÇÛØØôôô?~œœ&£“gøggg§¦¦ØØØ8;;ùå—óæÍstt\¶l™³³óâÅ‹/\¸ðî»ïzzzÆÄÄ9räĉ~ø¡‡‡eÀî¶mÛ˜LfLLÌäÉ“ÇÇãñ‚ƒƒÕO355…‘/^ìéé ‡®ÀG}”}êÔ©¸¸¸û÷ÿ/³—Ë íéé™={ö{ïQ$Q£S)%C:YïXZZîØ±###cÁ‚o¼ñ†z{èšF]Ÿ”-.‘HàL«±±ñ¦M›`8ÓêÕ«ÓÓÓoݺ½y„~¡3,#u¾~ò¿]æ>)d¢ÿÞËÆ;ìÿ üÌÛsÞýg·Û»[Í'š '0Âü//£ÓΟ:®oyš Ñ"""222à5NNN;vì€åt#]RRRoo/‹ÅÂ0lÿþýzÜa Ag膿¡Z £OŸìŠ &mRŽœübw¬¾¥©TÊåríìì ñp¹\kkkåXØáÔIÌ8H¹XMT2\YH†,¥¥%€Ïç“›âÁì$ƒ†#ã8ÞÚÚjff6èLSOOµµµòÚ‰Dbll¬ü•bíÚµ‰‰‰¾¾¾b±Фc °3«·Ù4111+V¬ ßdÔõIWŸÏŸ0a‚òòM ÄB!Ùú£Š*Ù ªa¡;ßÀõœQœgä\.—â"Œß!íiõ¶‰6,ÝÖÈ}v¿©ÆŒÅd0ŒpŽc8‡mrïê}ËK+YghÑzzzƯÍâ‚ ººº ÅäÉ“•Ë‘ž50‚ºÍ9§Š¾ØKê}¥F¨bff¦ž_cH¨[ŠáÔidd¤ãt$ÖÖÖ*%¤óªìQ){``0Zî|I.ë$¡Kdbb‚–¤¨·]ÓÐéS½u×™ÉdêÆŸF ÊP Ëð›^à÷a –ù#`ŽcŽ·6ý®ª #¬#¸BNàab‚ö¢1t4hêÆ_C=c(rÉ@m‹\jbL²gÏwww}K1fˆ‹‹+ ÑŽlÜ5}Y5¡ '˜Bf‚ËM˜œP(Pà œÀq…BÊ{Q«oaˆÿ\þ-ð#çT‘¾åA @ —Á?PüÍhƒ‚œtR²n@zÖHɺéY %ë¤gr„z#Zø@ ÄXâRõÝ~¢ÃHlH±ÕÐ h_ê‘¡¯¯O¥¤¿¿ŸÃáè1+„B¡hkkÓ¾|ioo‡Û6¿"‘¨©© îyòdâĉMMMÑÑÑ«V­Ò±`™™™uuu“&Mâñx‘‘‘0W…†re._¾|èÐ!˜uÓÈÈèúõë°<))‰<899•””¨\Û××—””Äb±x<ÞÊ•+ɼPtu*#•J333ÿøã¼óÎ;ƒ^+“É"##½¼¼RRR”Ë###¡aêìì477‡)ôÂÂÂÖ­[WRRâêꪞÙqøTTT0™LõVb±øøñãååånnnИ._¾>^%!y^^]üòË/tM·½333 "³T*ßK*•Êår—   ¡èñgCs§U7CúG,\I£#K!Ç1S–ô™ À,}K„ÉÉÉvvv «W¯&ÇSSSù|¾D" ‹èF^½»c:¥ÑY†¡Z äR ssó­[·ÖÔÔÔÕÕ)—ïÝ»nd{õêÕüü|Ý÷õèèh¸½ÎÝ»w÷îÝ»hÑ"¸k]¹ +W®}º¿¿ÿÿøTòK¤†k;&—ËÕËÏœ9Ö¯_¿víZýú^GŽinn.**‚›¯á8þêÕ+Ü—®R2â–® Ö­[GYINN^¼xño¿ý¶uëÖåË—«o`”œœüÁÔÔÔìÛ·¦¦œC"&&fíÚµº¼)‚ÍVÝ8 éa˜üóÊÝ¿xÈ0“ã2©\8É¿÷˲×ê[.„¶¤§§‡…… …Âàà`˜ÒëÚµk†’’’®\¹û3ÝÈ«w7c,B§4:Ë0T‹?†‹Å¢Üi˜L Ááptœ7BnWéààÀçóÅb±æòÇk®“Á`0™L&“ÉårKKK·lÙ¢r­D"©¨¨€_¾Y,–ŸŸ™¦QŠŠŠ>þøcRuÚ$6»yóf}}=L7¥ýb±8%%eéÒ¥G…% •••qqqðƒVkkktt´ŸŸ_rr2Äòõ×_oذaÙ²e¤ÇßÚÚµhÑ¢´´4øuA…ŽŽŽÒÒÒÄÄDr3cƒakkKyßöööøøxÿÊÊJxNTT™Ì<..ŽÍfà «««ýýý÷ìÙCiC×?)Ñ{§%122š9s¦©©iCCå ã­·ÞÂqœLÏNÙ^ÊM³k×.Íú¤¬áúõëþþþŸþ9àĉ¿ÿþ{^^Þš5k Ũ)¡-:-¥qÒ?ÂiæöbÚ‰LŽKÅ@гaFª¥­ùõ‰¾ECh…L&{úôéœ9sæææ¾¾¾W®\?1ŒÇwvvÊåò¶¶6r¶“nä5‹=† SeªÅ@.õhQ\\|àÀ'Ož¨$è˜Ë—/Ïš5K=/¦Jùûï¿ïååEþZ[[ûé§Ÿ–——SÆeggòÉ'ê×vvvbFæyqttTÚÖ\ç«W¯úûûy<^XXØÒ¥Kÿþ÷¿+ŸFymooïÑ£G<¨œePKòóó}||òòò~øáWÝÖÖvìØ±;wÂgô÷÷ÿé§ŸÄbquu5¼ÊÙÙ9;;û»ï¾«©©!c¦³²²<<{ö Àáp¤R)y>tÜÛÚÚ¾úê«ààବ¬§OŸ–——U ê¼v§½{÷nÉ¿ óƒµÇñââb‚ f̘Ay‡Ã),,twwóÍ7a e{)7 ›Í&ýoJ}ª×@Dnnn|||EEÅÆááá...ÑÑѧNz^‡ (;ípŒƒ!SþëC»)b&–b‚aoW׌9ÞÊ»øƒ¾ECh…©©éÔ©SI#)‰x<<^¸páìÙ³ÃÂÂ6nܨš¨2òƒq3Æ£ª4äRÝÝÝ]]]­­­ÏŸ?×— ÕÕÕUUUYYYƒ–ûúúzxxÀc??¿C‡¹ººæççççç«\{õêU.—ûñÇ«_ '¤ÈH333rŠJs\[SS“——÷_ÿõ_¥¥¥<Ð|íÁƒcbb^oÞýúõkÖ¬™>}º‹‹K}}=,ŒˆˆX´h‘­­­H$zðàÁܹs_½z5cÆŒ{÷îÁœœœlll¦N ]™Lvÿþýˆˆssóùóç»»»«/‡9®•sâ8®¼B‘¼o}}}CCCTT”ÍâÅ‹§OŸ^VV¦á)bbbüüüæÍ›·dÉ’;wîhùìr¹¼áß!…yíNËápÿ‹®®®!]«ÂÙ³g—/_~òäÉÔÔTÊ„½éééÁÁÁ §OŸ†%”í¥MÓPÖ`ddc÷ ”„Åb1™L r’¡w(;ípŒƒÁrûa‹©c«PúJ,_ñy±ï§nü^ÊšZsî§Ûú¡+V¬8qâÄõë׿ùær˜ˆÅ⎎__ߺºº‡ªÌƒ©¼À0ÜŒ1Ǩ* ÅR±±±€²²²}ûöUUUé>kô­[·òòòŽ?®2üÓ•“X[[ûøøøøøØÙÙeggoÙ². (ŠüüüøøxÊÇ … &Èܪê„ÀDß‘‘‘ööööööï½÷^EE…··7ݵ555l6ÛÊÊêæÍ›---àôéÓðS¢6S9Êbggêêê0 ƒsýgggxPYYyíÚ5±XüüùóE‹>|hjjªyävpp‰D°äðáÃ"‘è³Ï>S¹/dz°° ýHööv 5“Ù¶]]]oܸ¡Íƒø|~NNŽrI^^‹ÅÃè´ÁÁÁ*˵¼P¹sçúûû»»»C‘ÔÙ³g½½ýÎ;;::à‡ÊöÒ¦iHèZ<333%%¥ªªjÿþý¾¾¾¯ýPˆÑC½ÓÓ8,•u÷\}x ©Å›6³Ê›/ôttÙøÙw½âþZ_nëÈúñ.|²ê]}ˈœ°°0ÀåË—çÎëííM~„ÊÍÍ3gNlllHHÈ®]»ìíí#""àOt#¯ÞÝŒ±È¨* ¹Ô£ËÂ… ÓÓÓëëëÕwUÓÒÒ œœ´)§ÄÛÛ[¡Pôõõ‘™œËÊÊÁÂ… )Ï····´´|ùò%ŒinnVŸºR¯bkkËb±È̓lmm;;;5\ëææ¶{÷nX.‘HÌÌÌ’už IDATÌ<==}"-±¶¶Æ0ìèÑ£öööda}}}ZZÚÅ‹É(lmm„B!ܶ‚2¦ÅÍÍ ¾j¾/¬­¯¯Níµ´´!üŒaþ®LKK |ýÐ;;»“'©·©‡è«ÓB¦M›Fï?~¼¯¯o@@@zzú™3g e{in}RÖðôô¼téÒ… ’““«ªªà; Ú²ÊQî´£jôÅ?¹?áGü~Á’鉓,§L4qìò·Ÿ\Å €IÜ}q²2%v‰¾%E ƒÁœ;wŽÜëÎ;©©©€™3gnذ.ä€?iyõk±Ç(£¤4ø1*xPYYibb¢ÿ:²deeÁÍÈ™}ºr‡ÓÝÝ­RIEE…­­-¹¢PTT´`Á•·:òZccã+V”––z{{kkkƒ‚‚4×ùí·ß¸UƒP^^.—Ë¥Rimmí¼yó4\;eÊ”UÿÂÓÓÓÕÕ.š<<<\\\Ξ= #na nww·¥¥¥ƒƒCcc#ǃ+ØÜÜÜ&Nœøã?bVRRR__¯îoYYY…††KâèðôôtppøùçŸ ‚hnn~øð!´¡NNN "‘(##ƒ °Ùl‚ ø|þíÛ·ÕÕ5TôÞi‡ÄöíÛÛÛÛÏŸ?hÚKCӨ듲¹\þâÅ Ø«p¯ôÉ“'Ãàx„!@ÙiGÕ8è‹Ú¦rS«¨½ìÿ¯vîÓ\fJnœÇ„X¤0'½~§@ßb"‡voß¾-“ÉÈO-ÞÞÞ555ðøéÓ§Êao”#ïØ²ØÂh+ }¥ÏŸ?ß¶m›H$Â0, `óæÍ«W¯$%%õöö²X, Ãöï߯¾:p´a³Ùl6›Üpãûᅦ‹[éÊóóó½¼¼"##·nÝÂqÜÒÒòСCdª@ hhhØ´i“ʽ”¯‹‹KLLŒŠŠêêêŠ%¿RÓÕYRRâååƒ(âââ¶oß¾fÍ™L6þüåË—k¾vô066ÎÎÎNMM °±±qvvþòË/çÍ›çèè¸lÙ2ggçÅ‹_¸páÝwßõôôŒ‰‰9räȉ'>üðCJñ¶mÛÆd2cbb&Ožúè£ìììS§NÅÅÅÝ¿ÿ™¸\nhhhOOÏìÙ³ß{"‰]ÿ¤DïvHXZZîØ±###cÁ‚o¼ñ†z{èšF]Ÿ”-.‘HàL«±±ñ¦M›`8ÓêÕ«ÓÓÓoݺ½y„~j§Ò?ÂpH?ùß.sˆ2 ÑïeãöÿÆ~æí9ïþ³ÛíÝ­æÍaþ——ÑiçO ×·¼Mddd<~üØÆÆ¦§§çøñãdàGDDDFFÜ£ÆÉÉiÇŽ°œnä[Û@ SeªÅ0úôð À®èPj’‘‚ ˆ®®.…B1yòdåò”#'¿Ø«/©´D*•r¹\;;;èC¼\.×ÚÚZ9Vû:¹\î¸qã”㼇*Ï*®,$C–†}óù|rS<˜„.ö—ÇñÖÖV333• uzzz¬­­•7+H$ÆÆÆÊ_)Ö®]›˜˜èëë+‹¡HÄ®ÓÒa€Y½½È¦‰‰‰Y±bù&£®Oºø|þ„ È­—† …B²õGT²A1ÔNK‡ë9£8Ïȹ\.ÅE¿CÚÓ*êmmXº­‘ûì~S‹É`á2ÇpÛäÞՃר \É:ƒ ˜C—rùuOOÏøñãMÀw3ôÅZ è6çœ*úbw,©sô•zT022RŽ—[˜™™©ç×ê–Bû:‡síˆcmm­RB:¯Ê•²¦ƒ¡å—ä²NÊŒ<“‘Z]1¦;-D½½èš†NŸê5¨»ÎL&S7þ4bPþVø}ƒ%Å0B.Ƙã˜ã­M¿«*$ÂÄÄëÇ®8F˜˜ ½h ### ˦տ†zþ:ÿÈ2ÚJC.51&Ù³g»»»¾¥3ÄÅÅ :9€@&G6îš¾¬šPŽ L!3Áå& LN((pNà¸B!彨շ°Ä.ÿø‘sªHßò @ †Ëà(þf´AAN:)Y7 =ë¤dÝ€ô¬’uÒ³H9B½- ü@ b,q©ún?Ña$¶Š ¤Øê@è´/õÈÐ××§oTQ(mmmÚ— ííípÛæD$555Á½UªòÏ;רØ8BrýEEE?¦ûÇq‡×zÆÝ50$`gF èèïïçp8”ùwD"™=Šþ …B¡N¤®þú‡å”Ž)ÓäVîÜïÊï~ÂÀÐÐ );-:?‚Ž¡*mH}¥]]]999=òððÈÍÍUùU&“EFFzyy¥¤¤èX°ÌÌ̺ººI“&ñx¼ÈÈH˜«BC¹2—/_>tèLnddtýúuXž””DœœœJJJT®íëëKJJb±X<oåÊ•d^(º:•¡«_*•fff6448::þñÇxçwÀ`ÊŒŒ„†©³³ÓÜܦР[·n]II‰«««zfÇáSQQÁd2Õ³1‰ÅâãÇ———»¹¹ÁÿçòåËF\4«h8'+¯’yòdâĉMMMÑÑÑ«V­‚å8ާ¦¦òù|‰D(,,„{¿466&''ÛÙÙ544¬^½ZÿÁÑ€+itd)ä8fÊ’>²˜¥o‰C€®ÒuZº‘‘®ó#4@§4:e¨¹ÔÃÂÜÜ|ëÖ­555uuuê¿;vL.—ë^*@tt4Ü)æîÝ»{÷î]´hÜ5Œ®\…•+W8p@¥0''‡ü¼ZXX800 ~annî¬Y³D"Qhh¨ÏÛo¿­¡Nmê?}útÿ?þñ¸70ùr©YùgΜëׯ_»v­~}¯#GŽ477ÁÍ×põê•î«YEÃ9Yèš`ݺu”åäääÅ‹ÿöÛo[·n]¾|¹úþ‰ÉÉÉ|ðAMM;}û`*БVKbbbÖ®] Ë›"èØ»w/4 W¯^ÍÏÏ'Èk×®aVPPHJJºrå ü)===,,,88X(ûøøŒ¹ÄŠÿ¼r÷/2ŒÀä¸L*Nrãïýò‡¬Äµú– ¡-t®ÓÒŒt¡ J£tQ†j1Pàǰ`±Xt; ß¼y³¾¾fBÒ±TrçE>Ÿ/‹5—>|¸¸¸Xs ƒÉd2™L.—[ZZºeË•k%IEEüòÍb±üüüÈ4Ú@WQQÑÇLæÚ õ©Aùƒ"‹SRR–.]zôèQX’PYY§Z[[£££ýüü’““É –¯¿þzÆ Ë–-ËÈÈ =ûÖÖÖ¨¨¨E‹¥¥¥Á¯ *ttt”––&&&’›3 2—Ê}ÛÛÛãããýýýCBB*++á9QQQd2ó¸¸86› /¬®®NLLô÷÷ß³ge¤ÍT4}Ž,FFF3gÎ455mhh <Á`¼õÖ[8Ž“éÙ)ÛK¹ivíÚ¥YŸ”5\¿~=""ÂßßÿóÏ?œ8qâ÷ßÏËË[³fB¡5 ´…4 &‚%Ë?~ÜÙÙ)—ËÛÚÚàÄ‘L&{úôéœ9sæææ¾¾¾W®\чԯO3·›ÐLdr\*–‚ž 3V-ýkͯOô-B+4tBÊN èGFºÎÐÀ”ö¹Ô£BooïÑ£G<¨œO/\¾|yÖ¬Yêy1UÊßÿ}///ò×ÚÚÚO?ý´¼¼œ2Þ(;;û“O>Q¿¶³³Ã02W‹£££rжæ:éêõêU?Ç [ºtéßÿþ÷‰ËÏÏ÷ññÉËËûá‡`\u[[Û±cÇBBBvîÜ eð÷÷ÿé§ŸÄbquu5¼ÊÙÙ9;;û»ï¾«©©!c¦³²²<<€¯@+V¬8qâ“É|ñâŃÆÖ·½Û[L[…RNH$ÒþWüŽØ÷Ó7~/eM½uî§%Ÿ¬zWß2"‡®ÒuZˆúÈ h:?B3”J£sQ†j1K=òÔÔÔ°Ùl++«›7o¶´´‚Ó§Oï\ºäÖ­[yyyÇWþéÊI¬­­}|||||ììì²³³·lÙcö …"???>>ž2 6¬P(N˜0000@æVÕP§2êõÃà‘‘‘ööööööï½÷^EEÅð]j2ÂAùAìììàA]]†ap®àìì *++¯]»&‹Ÿ?à‡šššj~wrpp‰D°äðáÃ"‘è³Ï>S¹/dz°° ýHööv 5“Ù¶]]]oܸ¡Íƒø|~NNŽrI^^‹ÅÒòrJ‚ƒƒU–'¾vUsçÎõ÷÷www§iÏž=ööö;wîìèè€ïB”í¥MÓеxfffJJJUUÕþýû•_;†Cll, ¬¬lß¾}UUUð››;gÎœØØØ]»vÙÛÛGDD—/_ž;w®··7]^zä²îž«!µxÓfVy󅞎.?û®WÜ_ëËmY?þÏäR è:!]§ô#/eçGh†Rit.ÊP-r©G77·Ý»wÃc‰Dbff¦áCã(ÑØØ˜––VXXèää¤M9%ÞÞÞ …¢¯¯Ìä\VV&.\Hy¾½½½¥¥åË—/aHss³úÔ•zʨ×okkËb±ÈM…lmm;;;•|˜X[[cvôèQ{{{²°¾¾>--íâÅ‹ÎÎÎäN¶¶¶B¡n[A”âææfjjZSS?ukÖÖ××§öZZZH~ØÆ0Œ W¦¥¥Eû× ;;»“'©·©7¦M›Fï?~¼¯¯o@@@zzú™3g e{in}RÖðôô¼téÒ… ’““«ªªà; Ú²ÊY¸pazzz}}=Œ@½sçNjj*`æÌ™6l€1ñƒ8wî¹%‘áóÏ_îOxã¿_°dzâ$Ë)Mû…|Àí'Wq`RÅ·G_œ¬L‰]¢oIƒ@× é:-läUéüm SšŠ‹2T‹b©Gž)S¦¬úžžž®®®º_Tž••7C × Ó•s8œîîn•J***lmm•§“ŠŠŠ,X ò*L^kll¼bÅŠÒÒR@ooommmPPæ:¿ýö[2ò•²~ƒP^^.—Ë¥Rimmí¼y󆡭ðððpqq9{ö,Œ¸…1¸ÝÝÝ–––<®`sss›8qâ?þˆaXIII}}½º¿eeeZPP@.‰£ÃÓÓÓÁÁáçŸ&¢¹¹ùáÇІ:99544ˆD¢ŒŒ 2 Àf³ ‚àóù·oßÖZ ŠíÛ····Ÿ?д—†¦Q×'e r¹üÅ‹°Wàžè“'OV ›Aè@*++MLLÈ/ÞÞÞ555ðøéÓ§äÌiñnß¾-“É}Ë5j›ÊM­:¢ö²»gD’þ¿Ú¹Os™ (¹qSb‘Âdœôú}‹‰ºNH×iÍÈK×ùTi*.ÊP-úJ=,ž?¾mÛ6‘H„aX@@ÀæÍ›W¯^­o¡€Íf³ÙlrÃï¿ÿÆÑ•ççç{yyEFF nݺ…㸥¥å¡C‡ÈT@ÐÐаiÓ&•{)_—˜˜ÕÕÕK~¥¦«³¤¤ÄËË QÐÕ·}ûö5kÖÈd²ùóç/_¾–žò³³³SSSlllœ¿üòËyóæ9::.[¶ÌÙÙyñâÅ.\x÷Ýw===cbbŽ9râĉ?üÐÃÃ2`wÛ¶mL&3&&fòäÉãÆãñxÁÁÁê§™ššÂHƒ‹/öôô„‡‡Ã—±>ú(;;ûÔ©Sqqq÷ïÿ_f.—ÚÓÓ3{öì÷Þ£H¢6$lg¦ÄÒÒrÇŽ ,xã7ÔÛ @×4êú¤lq‰DgZ7mÚÙV¯^žž~ëÖ-èÍ#ôKRRRoo/‹ÅÂ0lÿþýäÊ­ˆˆˆŒŒ ¸á’““ÓŽ;`yFFÆãÇmllzzzŽ?>V?ÒOþ·ËÜ"…LBôß{Ùx‡ý¿qŸy{λÿìv{w«ùD3äF˜ÿåetÚùSÃõ-/Bt®ÓÒŒt¡:¥Ñ¹(CµFŸ>Ø @M2Ú¤9ùÅîX}K1R©”ËåÚÙÙAâ5àr¹ÖÖÖʱ°#Rç¸qã´Y6‚J†+ Ée€@ €áÝ|>ŸÜf'4ÇñÖÖV333Ê ezzz¬­­•צH$cccå¯k×®MLLôõõ‹ÅP$c€Y½½È¦‰‰‰Y±bù&£®Oºø|þ„ ”—ob& ÉÖU PÉA]]] …bòäÉê¿öôôŒ?^ùIL_ª²òÕÀõœQœgä\.—â"Œß!íiõ¶‰6,ÝÖÈ}v¿©ÆŒÅd0ŒpŽc8‡mrïê}ËK+YgÐuBˆz§ÕPeçGzÖÒè\ ºÍ9§Š¾ØKê}¥F¨bff¦ž_cH¨[ŠÑ¨SX[[«”Ϋ²G¥ìi€Á`h¹ñ3¹¬“„îåØÄÄ-I!Qo/º¦¡Ó§z ê®3“ÉÔ?### ¨ÿŒŒŒô¾ÓkÀïÃ,)†r1FÀÇomú]U!A&&FX?F(p…œÀ1ÂÄíEcèhî„êVC=h—¡B§4:e¨¹ÔĘdÏž=îîîú–bÌ7èäa˜Ù¸kú²jBA8N(0…Ì—›(09¡P À8ã …”÷¢VßÂ"ÿ¹ü[àGΩ"}˃@ @.ƒ~ ø›Ñ9é¤dÝ€ô¬’uÒ³@JÖ HÏ: åõF´(ð@ ˆ±Ä¥ê»ýD‡‘Ø**b«¡оÔ#C__Ÿ¾EPE¡P´µµi_>‚´··Ãm›_‘HÔÔÔ÷Ç9ŽP(Ò-Î;×ØØøZÒ BQQÑãÇé~…ÒÂåãqw hÙ?uÐ7Ýð'îÌWýÃrJÇ”ir+wîwå÷¿a`h¹D"™ÚlPúûû9J>5T(ÝŒ×s'T@_©‡EWWWNNΣG<<²˜¥o‰C€näÂq<55•ÏçK$@aa!ܰHC'òäÉĉ›šš¢££W­Z¥§cйšÝ u÷ƒäR ssó­[·ÖÔÔÔÕÕ©ü´råÊèE*@tt4Ü)æîÝ»{÷î]´hÜ5Œ®\Jáÿ{o×ı=þ!€D@r©p ö‚¢¥jñ¥òPP´"Xõ…~¨( `Q ¶A±¤T±X}U­íU©T Ÿ1å«Ö*"R•Ôò` „gHB’Íæ÷ǼºŸÜdw òèÝ÷_ËÉÎìì™áÌÙÝ3s²²²°×«¹¹¹ýýýš³³³çÏŸ+‹7nÜèææööÛo“ԩʹsçúúú¾ûî;¸°Ú“÷É“'år¹ª$555888 @$¸¹¹©f©<þ<<زeK`` n}¯ãÇ766æççÃÍ×Píííƒë’ŒOM´ÚCÔ›6m•CW¬XñÛo¿íÚµËÏÏOsc£ÄÄÄ÷Þ{Íf†677GDDxzz&&&bA,_ýõÖ­[}||ÒÒÒ°Åæææððpooï””øvA¶¶¶¢¢¢¸¸8l3c†å¬Q»nkkkLLŒ——WPPPYY<'<<Kf]UU VTTÄÅÅyyyíß¿7ÒfHã“hlŒ=zzzóæÍ344äp8¸'Ðh´9sæ (Š¥gÇí/Õ®Ù·o¹>qk¸}ûvhh¨——×§Ÿ~ ÈËËûý÷ßY,Ö†  Ũ)€B[ˆŒÑ`&:¢ÐÈëF¦´™•J„Ba×Ö¹±ëVý“ýë3]7B+Hf.V[[ÛÞÞ.—Ë[ZZ°¯Dƒ›+¹\.Ì‚L1(¸n¹;¡é~@¹Ô£EeeåÇ\RR¢Û8§ëׯϟ?_3/¦š|Ù²e...دäÏÌÌüðÃ5˶··#‚åd±¶¶Ve$¯³···¯¯Ïç¯ZµêË/¿ÄNëîî>qâÄ‘#GT³ Μ9s¹Äb1ŸÏ×^-999nnn,ëÚµk0®º¥¥åäÉ“AAA ð½¼¼~úé'‰DRQQKÙÚÚfff^¾|™Ífc1ÓNNNEEE>>>---šw×ÐИ={6nKT¯«T*¬¬¬ vìØqäÈ‘/^¸\®T*Å·Ž{KKËW_}‘‘ñüùó’’íoŸ¢1CÂÇ ÿ‚ÈÖE ”JåܹsqOàr¹¹¹¹ŽŽŽo½õ”àö—j×TUUaþ7®>5kP*•ÙÙÙ111¥¥¥Û¶m„„„ØÙÙEDDœ={Vu4Rè5£„A4˜‰Îç”üZc9C"C$RDØ/êîhãÑ'O5'¯\ÓuÓ(´‚dæòððX°`Apppllì¶mÛ4C5mAAÁáÇŸ={6h@ v3H:×ý ü<==mmm=z”““SWW§“fTTT”——óÍ7ƒÊÝÝݱcòÆß¼y“ÇãmÞ¼Y³,ü …E aŸ¨U ®e³Ù,«­­->>~Ù²e®®®€#GŽDFFj~ß_½zu^^NÿóÏ?Ÿ2PŒ4„h0?ι_ÓdhÝ,’ŠQåÀ€´¯Wе,pç÷"ÆÌ{ZùáºwuÝFŠÁ!š¹$I[[›»»{YY™££ã{ï½§êÆáÚÎÎÎŽŽ@ðòåK*“â ¸DBä~A¹Ô£‚™™™››››››¥¥effæÎ;áʼ±äÞ½{,ëôéÓjÓ?‘ƒ¤ñ …"'''&&7 6¬P$M™2ÐßßåVT!0ÑwXX“Éd2™K—.---uuue³ÙUUUS§N½{÷nSS“P(Ÿobb‚ù‘NNN­­­$5cÙ¶íííïܹ£ÍAVV–ª„Åb1  ÅØ " @my⊫²hÑ"///GGGØ$MöïßÏd2ÚÚÚà³niÓ5D=žžžž””T^^~èÐ!ÕÇNŠñ‘Q"ÌäFl¿¤ñRW[‡¹'³£—÷k]‰…5ãÇÿ½D¹Ô¢™+;;{áÂ…QQQAAAûöíc2™¡¡¡ð'¢A(..>xð`yyù„Òc ‘›:…Äý ‚r©GWWW…BÑÓÓ3ÆÉëëëSRRrssmll´‘ã¢Ùøââb¡Pèáá{>“É455}õêŒillÔütE¤ ƒmdaaÑÞÞpppøè£ p``ÀÈÈ{kK£ÑBBBBBB/^Äv>fff‚œ8q‚Édbººº”””+W®ØÚÚb;QXXXô÷÷‹D"¸mnL‹ƒƒƒ¡¡!›Í†¯ºI€µõôôÀO{MMM˜G_l#‚âÜÔÔí‚6XZZž9ƒ³MýÆÆè1kÖ,¢xÈäÉ“ÝÝÝ}}}SSSÏŸ?O£Ñpû‹¼kÔô‰[ÀÙÙùêÕ«—.]JLL,//‡Ï0Ô–Uã \£D2˜Éظåß¿<žòæSAŸpåì¸7LgL3°î ÷ŸÝD•‘*¦8<ýìLYRÔJ]·”bˆf®$''æÍ›·uëV¸þD>h=<>>¶¶¶+V¬¸téÒ»ï¾ëììyüøñ¼¼¼÷ßßÉÉ ·¯wïÞM§Ó###§OŸ>iÒ$>Ÿ yš¡¡!Œ4¸råJWWWHHüþàƒ233Ïž=ýøñÿevàñx7nìêêZ°`ÁÒ¥8IÔˆÆ'.Dcc|bjjºwïÞ´´´åË—¿ù曚ý êM}âöøÀÀüÒª¯¯¿}ûvδ~ýúÔÔÔ{÷îAožB·%¢ÁLtþ8'õÌÿØ-z"VÈ”}^Õ?¨úÑþŸ¸:/~üâ~kg³ñ4#äJDiüW)ßž=¢ëöRA4s…††¦¥¥Á%lllöîÝ åDƒ6>>¾»»›Á` rèС ·ÖV'¹#åNè}|,°/b#€ê’‘B*•òx‰>ÙÌðry®R©40ÐCú¥UÈ•(¢40 ö¢ïÏ\šÆŸ¤j—×CÓÍ)w‚r©)(&$û÷ïwttÔu+& ÑÑÑc¼D˜‚b¤8¾mßlŸ ¥B©DQ¥QÈ P¹‘+ €¨U¢¨B!åÿY©ëÆRPü÷òYgóuÝ ŠñËàTüÍhC9”’ÇJÏc¥ä±Òó@)yl ô<$ÇÙˆP‹«û”mz’©áþ8[ýPPPèj_ê‘¡§§GS(‹àv¶cB¡hiiÑ^>‚´¶¶Âm›ÕÐF!¸eûúú¸\®æ–ϯw//^¬¯¯j)mÈÏϯ­­%úEQ.— —ÆÕIÀŸš陂bÜ2ÔAû7ä7ýÃtFÛŒYò©Ž¼Ë%/@1΀sH$ÒüI,c¹Håo0˜Çr¥i9WA½¥YYYOŸ>urrÊÎÎÆäR©4==ÃáX[[ÿñLJ~çwƲaéééÕÕÕo¼ñŸÏ ƒ¹*Häª\¿~ýèÑ£0a¸žžÞíÛ·¡<>>;ØØØª•íéé‰g0|>Íš5X^(mBT6==ýÙ³gÓ¦MkhhˆˆˆX·n6÷ S{{»±±1L¡¼iÓ¦ÂÂB{{{Í̎ç´´”N§k¦°’H$§OŸ.))qpp€ÆÔÏÏ/66vÄ ÑøÄ…HσâïœÅbuÁ/¿üBÔ5þþþpÛ;##£µk×bY*U¯%•Jår¹ÝÚµkƒ‚‚†¢Š¿Dƒ–Ȉ½ö Wðê­ 9Š2¤/DUÌ×u‹(†@}}}bb¢¥¥%‡ÃY¿~=6 (šœœ,¹¹¹pÃ"¢™÷ï1˜Ç"¥‘Ï•2™,,,ÌÅÅ%))‰¼~Ê¥ÆÆÆ»víb³ÙÕÕÕªòsçÎõõõ}÷Ýwp;Û±ˆŒˆˆ€Ûë<|øðÀÞÞÞp×0"¹kÖ¬9|ø°š0++ {½š››Ûß߯Y0;;{þüù±±±b±xãÆnnno¿ý6ÐN!De8Kݼy3''û ¿—óçÏÃ-[¶êÖ÷:~üxccc~~>Ü| EÑÞÞÞ1¸.ÑøÄ…Hϯ QlÚ´ WILL\±bÅo¿ý¶k×.???ͽß{ï=6›}ðàA˜!o˜í‘‘‘¾¾¾cyQ "H-®ñA>öüûÆÃ8É%"GeR¹è Á/®eÄêº]Ú’šš ‰ÜÜÜ`J¯[·n!rêÔ)@||ü7àø$šyÿƒyì!Rù\yòäI¹\®MýTàǰ`0¸; çççoÞ¼K1öÙ±í*­¬¬D"!—;v¬  €¼NF§Óét:Ç+**Ú¹s§ZÙÒÒRø¶˜Á`xzzbÙËUIY¬—ËUÍçGt/Ú ‘H’’’V­ZuâÄ (‰-++‹ŽŽ†¡ÍÍÍžžž‰‰‰X Ê×_½uëVŸ´´4ì© ¹¹9<<ÜÛÛ;%%¾]P£­­­¨¨(..Û̘F£a›Ì«]·µµ5&&ÆËË+((¨¬¬ žŽ%3ŽŽ®ªª‚+**âââ¼¼¼öïßiC4>q!ÒóØ£§§7oÞ>Ÿ¼jÕª/¿üR‡¡Nׯ_Ÿ?¾f^L5ù²eË\\\°_+++?þøã’’Ü–gff~øá‡šeÛÛÛÁ6Q·¶¶†ÎÚ(„¨,¤  àðáÃÏž=ÃýìBt$ää丹¹±X¬k×®Á¸ê–––“'O%$$À{ôòòúé§Ÿ$IEE,ekk›™™yùòe6›ÅLgdd899ùøø´´´hÞZCC`öìÙ¸-Q½®R©LHH°²²*((رcÇ‘#G^¼xàr¹R©;:î---_}õU@@@FFÆóçÏKJJ´¿}"ÈõLÂÇ ÿ‚ÈÖE ”JåܹsqOàr¹¹¹¹ŽŽŽo½õ”àö—j×TUUaþ7®>5kP*•ÙÙÙ111¥¥¥Û¶m„„„ØÙÙEDDœ={V5·%…!´DFìµùx ä×Ë"‘"Â~QwGψ>yª)8yåš®›F¡†††3gÎÄŒ¤X,æóùðØÃÃcÁ‚ÁÁÁ±±±Û¶mÓ MT›yÁ̺bHJëîî>qâÄ‘#G´4ø”K=òÀ8Q6›Íb±>ÿüó¢¢¢'Ot“!¶¢¢¢¼¼<##cP¹»»»““<öôôùDíº|>ßÄÄó#œœZ[[IjƲmÛÛÛß¹sG›‚¬¬,U ‹Åb0€Xσ ¶¿¤ñRW[‡¹'³£—÷k]‰…5ãÇÿ½ôáºwuÝFŠÁ \¿~}Ñ¢E®®®Ø‹¤ììì… FEEíÛ·Éd†††ÂŸˆfÞ‰;˜uˆöJc³ÙUUUS§N½{÷nSS“P(8¸+ùF•úúú”””Ï?ÿÜÆÆF9.®®® …BuO™ââb¡Pèáá{>“É455}õêü³±±z<Ú(„¨¬*"‘{©<¤{fff‚œ8qââÅ‹/^üì³Ïuuu)));wîÌÎÎþ׿þ¥z/Ø^H¸q2†††l6{ÐëÂÚ0…755a ðE2‚ ¸!ãMMMÚ?³YZZžùOÔœW5=1³fÍš;w.‘? ˜qk8;;_½zuÓ¦M‰‰‰X¬µeÕ8„hÐj1òóÇ-ÿþåñ”7Ÿ úZ—üsõÛÓ—»&þK“÷ŸÝD•‘*¦8<ýìL™®›I184-$$äóÏ?ß¼ysmmí¼yó üÁƒЌϛ7oëÖ­ªoIÈgÞ 7˜ÇÚ(ÍÁÁá£>zçwÞyç+++&“éììL^-åR<4Í××·¤¤D.—K¥ÒÊÊÊÅ‹q222àfýýýýýýØ—}"9—ËíììT«¤´´ÔÂÂ[ÈÏÏ_¾|¹ÚSVV__õêÕEEE€îîîÊÊʵk×R…|ÿý÷0n•¨,@(ƒ²²2Ì&º—áãäädggwáÂèEÁÜÎÎNSSS++«úúz>ŸW°988L›6íÇD¤°°°®®NÓßš:uêÆO:…-‰#ÂÙÙÙÊÊêçŸV*•555Ð†ÚØØp8±Xœ––†ªªª”J¥@ ¸ÿþðÇ‘žÇ'{öìimmýöÛoA‘t¦>qkËåþù'™¸ŸúôéÓap<Åx`ÐA«fÄ&Ö W¥²¡Äpj›PÜZüð¼x ïŸ–޳ì ï|‹(”±Â`’ôöƒSºn&Åà`SÕýû÷e2™¿¿?üÓÕÕ{óòüùsÕ°7Ü™wâf2$¥Í˜1cÝ_8;;ÛÛÛýYH ?†ÅË—/wïÞ-‹ñõõݱcÇúõëÑÑÑ{öìÙ°aƒL&[²d‰ŸŸß7¬ªªªªª Û4ã‡~€‹[‰ä999...aaa€S§NÝ»wEQSSÓ£Gb¨B¡Ãálß¾]íZªe£££ãââÂÃÃ;::¢¢¢°7ÍD ),,tqqADeããã»»» ‚ ‡ÂgÝËðÑ××ÏÌÌLNNöõõ577·µµýâ‹//^lmmíããckk»bÅŠK—.½ûî»ÎÎΑ‘‘ÇÏËË{ÿý÷œœpvwïÞM§Ó###§OŸ>iÒ$>Ÿ yš¡¡!Œ4¸råJWWWHHüþàƒ233Ïž=ýøñÿevàñx7nìêêZ°`ÁÒ¥8IÔˆÆ'.DzŸ˜ššîÝ»7--mùòåo¾ù¦fˆºFSŸ¸=>00¿´êëëoß¾†$­_¿>55õÞ½{Л§Ð-Dƒ–ȈM¬AŽ‘zæì=+dʾG¯êTý¿hÿO\?~q¿µ³Ùxšr%¢4þÇ«ˆ”oÏ Ñu{)ÈHKK«­­577ïêê:}ú4øš––w–°±±Ù»w/”ͼt0ë"¥ i®$Aïãcy€}T—Œ,<oÒ¤Iªa¾IÇÏ|öQ”›¤ R©”ÇãYZZBâ5àñxfffšßî5¢MY¥RÙÑÑ¡P(¦OŸ®ÍÕGPÉpe!²  …04\ `›âÁì$$± E›››ŒŒ¬¬¬ÈÏìêê233S]b<00 ¯¯¯ú–"000..ÎÝÝ]"‘À& êy¤Ðì/¬k"##W¯^=Éhꓨ@0eÊlë%‚ "‘ëýQe*y\A4h‰ŒÑùã\Ïi,=Û¹ e‚6iW³¸»E¼uÕîzÞ‹Ç l#FÓCe(Š Ü*ƒG7u³~Pƹ’Ç ¥R sèâ.¿îêêš5kÐtétúØøÓƒB4h‰ŒØä‚„Æ"ˆR.A”Ð'Ñ'›^.ÏU*•zH¢T  ¹E”Ô^4ã===’eӚƟ¤ž‰8˜uËh+r©)(&$û÷ïwttÔu+& ÑÑу~  Ÿß¶o¶O…R¡T¢¨R(d¨Ü@È• @ T*QT¡òÿ¬Ôuc)(þ{ùÀ¬³ùºnÅøeðÀ*þf´¡‚œÆJÉc¥ç1€RòØ@éy  ”<6Pz’ŽŸÁ•S‰«û”mz’©áþ8[ýPPPèj_ê‘A3•€ÎQ(---ÚËGÖÖV¸m³b±¸¡¡îïûh*¹¯¯Ëå5õÆÅ‹ëëë_¯ ääçç×ÖÖýŠ¢(—Ë…k½Gãê$h9>_OŸˆ10€£ÍÍ_ÿ0Ñ6c–|ª#ïrÉãÁ PŒ3à\€%¢RE,ciÑ…²Ø#¹eÐr¥ÞR‹ŽŽŽ¬¬¬§OŸ:99eggcòøøøÛ·ocÚØØŽeÃÒÓÓ«««ßxã >ŸsUÈU¹~ýúÑ£Gaþ^===ìF´¹©žžžøøxƒÁçó׬YåR©4==ÃáX[[ÿñLJ~çwp[.“ÉÂÂÂ\\\’’’ „HÉéééÏž=›6mZCCCDDĺuëTë ƒ†©½½ÝØØØØØ¼iÓ¦ÂÂB{{{ÍìŒÃ§´´”N§Ï™3GM.‘HNŸ>]RRâà੟Ÿ_llìˆ7@ "ÕáB®OüýýcbbÔ’³X,¢.øå—_ˆºÆßßn{gdd´víÚèèhÍkI¥R¹\ngg·víÚ   ¡èƒâï‰¦Ñ 2bÚÀño Þš¡£ˆ!CúBTÀ|]·ˆbÔ××'&&ZZZr8œõë×cŠ¢ÉÉÉ```›› 7,"šy_ÛbShZ "Ë0¤9P.õ0166Þµk›Í®®®V•geeao"sssÇ>!yDDÜ)æáÇðöö†»†ÉÕX³fÍáÇՄÚÜTvvöüùócccÅbñÆÝÜÜÞ~ûmÀ¹sçúúú¾ûî;¸¿/ÉSõÉ“'år¹ª„HÉ€µÝ¼y3''GÍ œ?lÙ²%00P·¾×ñãÇóóóáæk(ŠöööŽÁu‰T‡ ¹>_¢.Ø´i®’˜˜¸bÅŠß~ûm×®]~~~š[¡%&&¾÷Þ{l6ûàÁƒ0}æ0Û9$"##}}}Çò¢äh @`Ä´4€ã™ßxø'¢Dä¨L*½á 8ðŵŒ¸@]·‹B[RSSƒƒƒD"Q@@€››LéuëÖ-AN:ˆ¿qã4ÂD3ïˆ[ìÿ4-‘eÒ ¨ÀaÂ`0pw¦Ñht:N§óx¼¢¢¢;wŽq𭬬D"!—;v¬  €¼N¢›ÂÊ ”––ÂÇ;ƒáé鉥6ÌÏÏß¼y3–/7Å àîÝ»uuu0}&$Q2<àr¹CÍ›(‘H’’’V­ZuâÄ (‰-++‹ŽŽ†­ÍÍÍžžž‰‰‰XË×_½uëVŸ´´4ì© ¹¹9<<ÜÛÛ;%%¾]P£­­­¨¨(..Û̘F£aùnÔ®ÛÚÚãååTVVÏ Ç’™GGGWUUÁ‚qqq^^^û÷ïÇ´!R.ÃÑçÈ¢§§7oÞ|øÙ³gØç-ÉÉÉqssc±X×®]ƒqÕ---'Ož JHH€÷èååõÓO?I$’ŠŠ XÊÖÖ633óòåËl6‹™ÎÈÈprr***òññiiiѼµ††ÀìÙ³q[¢z]¥R™`eeUPP°cÇŽ#G޼xñÀår¥R)v>tÜ[ZZ¾úê«€€€ŒŒŒçÏŸ—”” I¸¼¶>>|XøD~°ö (ZPP T*ç΋{—ËÍÍÍutt|ë­· ·¿T»¦ªª ó¿qõ©YƒR©ÌÎÎŽ‰‰)--ݶm $$ÄÎÎ.""âìÙ³ÚRŠÑƒÄh1"Ã8Î)ùµÆr†D†H¤ˆ°_ÔÝÑÆ3¢Ožj N^¹¦ë¦Qh…¡¡áÌ™31#)‹ù|><öððX°`Apppllì¶mÛ4C5݉׶Øÿµ êf Ó2P.õ(róæM·yóf]5 ¢¢¢¼¼<##cP¹»»»““<öôôzôžàëëkcccnn>sæLèìÊd²Ç‡††/Y²ÄÑÑQóUÌq­šãEQÕŠØuëêê8Nxx¸¹¹ùŠ+fÏž]\\Lr‘‘‘žžž‹/^¹r僴¼w¹\ÎùO°Æ¼¶>¹\ní_ttt ©¬.\ðóó;sæLrr2nºÍÔÔÔ€€‡sîÜ9(Áí/mº·===†«P(`K N711Á>2Pè"£AnĈ ã8ç~M“¡u³HÚ+‘w‹Ä½~Ô²TÀß‹3Ùº¯ëRhÅêÕ«óòònß¾ýÍ7ߨN…‰¤­­ÍÝݽººº¦¦Fí;®;ñÚû¿r7cø–Š¥- ENNNLLÌHå‹*÷îÝc±X§OŸV›þ‰äfffnnnnnn–––™™™;wî„«|À`7+‰DS¦Lô÷÷Ãܪ0‰wXX“Éd2™K—.---uuuU-Ëf³«ªª¦Nz÷îݦ¦&¡PxîÜ9øj„¨¨(@qqñÁƒËË˵W5ö)Gµˆ¥¥%<¨®®F~ëØÚÚƒ²²²[·nI$’—/_z{{jjj ɬ¬¬Äbq¿‰‰ ”;vL,òÉ'j×åóù&&&˜éääÔÚÚJR3–mÛÞÞþÎ;ÚÜ8@ dee©JX,ƒÁÃÐg@@€ÚòD- j²hÑ"///GGGØ$MöïßÏd2ÚÚÚà‹ÜþÒ¦k0ˆz<===))©¼¼üСCîîî¯}S£‰Ñ 1bƒÀqKYõ#{7>Mjò–ùü’ÆK]mæžÌŽ^Þ¯u%ÖŒÿ÷Ò‡ëÞÕu)'88pýúõE‹¹ººb/¡²³³.\´oß>&“ "šy_ÛbÿwBîfŒˆe \êÑ¢¸¸X(zxxèäêõõõ)))¹¹¹666ÚÈqquuU(===X&gò›b2™¦¦¦¯^½‚q Ðã±°°`0ØÆ@íííje>úè#x<00`ddäìì¬åÍzxx¤¦¦ÖÕÕinµñz˜™™!râÄ &“‰ ëêêRRR®\¹bkk‹íDaaaÑßß/‰à¶¸Ÿ˜ Ùl¶¿¿?ùuam===ð«SSSæÂÉ‚àF655©=¢`iiyæ þ6õ×ç˜5kQ¼dòäÉîîî¾¾¾©©©çÏŸ§Ñh¸ýEÞ5júÄ­àìì|õêÕK—.%&&–——Ãgj˪q‚6FC͈ ÉŽ+þýËã)o>ô WÎŽ{ÃtÆ4ë>‘pÿÙMT ©bŠÃÓÏΔ%E­ÔuK)F£…„„„„„.^¼ˆí‹õàÁƒäädÀ¼yó¶nÝ rÀŸÈg^ÝZì ‰Å)Ë@~ŒùùùË—/×ÕScFFÜ ¡¿¿¿¿¿û²O$çr¹j•”––ZXX`aû€à¦°²úúú«W¯.**twwWVV®]»@£Ñ|}}KJJär¹T*­¬¬\¼x1,ûý÷ßøÕ3f¬û ggg{{{¸š¡PÊÊÊ FpŽtrr²³³»pጸ…1¸¦¦¦VVVõõõ|>®`spp˜6mÚ?þˆ Haaa]]¦¿5uêÔ7ž:u [G„³³³••ÕÏ?ÿ¬T*kjj  µ±±áp8b±8-- TUU)•J@pÿþ}L¥¯Íèés4سgOkkë·ß~ ú‹¤k4õ‰[ƒ\.ÿóÏ?á¨ÀýÔ§OŸƒã)tŽ6FC͈ÀñOeC‰áÔ6¡¸µøáyñ@ß?-gÙ-ÞùQ(%b…Á$éí§tÝLŠÁÁFÝýû÷e2öªÅÕÕ•ÍfÃãçÏŸ«†½áμËbH,ÆHYê-õ°xùòåîÝ»Åb1‚ ¾¾¾;vìX¿~=@(r8œíÛ·ëªaUUUUUU؆?üð\L$ÏÉÉqqq œ:uêÞ½{(Šššš=z‹@%º)Õ²ÑÑÑqqqáááQQQØ‹èèè={ölذA&“-Y²ÄÏÏÊ ]\\`DJŽïîîf0‚:thWéëëgff&''ûúúš››ÛÚÚ~ñÅ‹/¶¶¶öññ±µµ]±bÅ¥K—Þ}÷]ggçÈÈÈãÇçåå½ÿþûNNN¸»»wï¦Óé‘‘‘Ó§OŸ4iŸÏÐ<ÍÐÐF\¹r¥««+$$þÃðÁ™™™gÏžŽŽ~üøÿ2;ðx¼7vuu-X°`éRœ$jDªÃeôô9˜ššîÝ»7--mùòåo¾ù¦fˆºFSŸ¸=>00¿´êëëoß¾†3­_¿>55õÞ½{Л§Ÿ1"8ÎI=ó?v‹žˆ²eߣWõªþ_´ÿ'®Î‹¿¸ßÚÙl<͹QÿãUDÊ·g„躽d¤¥¥ÕÖÖš››wuu>} ü MKKƒ;QØØØìÝ»ʉfÞ‰e±Ç9D–aHs(@ïãcy€}T—Œ6IÇÏ|öQ”®[1R©”ÇãYZZBâ5àñxfffš±°<oÒ¤I#¨T*;:: ÅôéÓUå#¨d¸² Y…B.°Mñ`v¢Ø_ E›››ŒŒ°@"ºººÌÌÌT—$ èë뫾¥ Œ‹‹sww—H$°IÄHŸDŒÃÁ¬Ù_X×DFF®^½{’ÑÔ'Q `Ê”)Ø~UAD"Öû£Ê8Tò„`¨Flœë9­€¥g["—¢b¡LÐ&íjw·ˆ·®Ú]Ï{ñ¸mÄ Óhz¨ E”[eðè&ÎâïñÀ8Wò˜¡T*a]Üå×]]]“'Ot6c2R‘tü t›³ÎæöQ¦sê-5…:FFFšù5†®¥ ‘¿zzzªA)£™™™šs^U=*UŒ¦å—pY§*D ) F*¸h ô9ÚhöQ×éS³M×™N§?MñÚ ßˆ+=!E¥\‚( O¢O63¼\ž«T* ô>D©@r%Š( &ØšËÿBôôôH–Mk’z&ºÅþûA¹Ô’ýû÷;::꺆èèèA?PPŒOŽoÛ7Û§B©P*QT©@2Tn @äJ… ª@•(ªPHùV꺱ÿ½üGàGÖÙ|]·‡‚‚‚‚‚‚‚‚‚bü2xà3ÚPANc¥ä±Òó@)yl ô<PJ(=IÇñ7¢¥?((((((&W+ö)Ûô$SÃýq¶ú¡  Ð Ô¾Ô#COO¦P,cùMÆ…BÑÒÒ¢½|imm…Û6«!‹àþ¾¸ôõõq¹\Í­Qår¹"‘HËóɹxñb}}ýŠhI~~~mm-ѯð.àZïѸ: ¸ãS“1c®~=£1®¸ùë¦3ÚfÌ’Ouä].y|øwÞÑló³gϦM›ÖÐбnÝ:(¯¯¯OLL´´´äp8ëׯ%? S{{»±±1L¡¼iÓ¦ÂÂB{{{lÏ줴´”N§k¦°’H$§OŸ.))qpp€ÆÔÏÏ»‘уh|â¢ÍØÀÅßß?&&F-!9‹Å"ê‚_~ù…¨küýýá¶wFFFk׮ŲTª^K*•Êår;;»µk× EOd2YXX˜‹‹KRR”Y`r£1Qà Ô[3r1dH_ˆª˜¯ëQ ¢hÐͼÁ¬4-‘œÈ"‚r©‡…±±ñ®]»ØlvuuµªüÖ­[‚œ:u ãÆ1îp{‡8pÀÛÛîF$WcÍš5‡Vfeea¯Wsssûûû5 fggÏŸ??66V,oܸÑÍÍíí·ßœ;w®¯¯ï»ï¾ƒûûâ>U8pþzóæÍœœLc©©©ÁÁÁ"‘( ÀÍÍ &@!:rþüyx°eË–ÀÀ@Ýú^ÇollÌÏχ›¯¡(ÚÛÛ;×%Ÿ¸h96´‡¨ 6mÚ„+‡$&&®X±â·ß~Ûµk—ŸŸŸæVh‰‰‰ï½÷›Í>xð Ìw5œF•ÈÈÈÀÀ@__ß±¼(9'Ož”Ëåª" Ln4&ÿ¾ñðN2D‰ÈQ™T.zÃApà‹kqºn…¶ÍhDƒ–hæý f]¡i1Hä¸îTàǰ`0¸; Óh´ÚÚÚööv¹\ÞÒÒ¢ùÚr´Á¶«´²²‰„\~ìØ±‚‚ò:i4N§Óé<¯¨¨hçÎjeJKKáÛMƒáéé‰å"ÊÏÏß¼y3–/7Å ö+—ËÅRšÉd²çÏŸ/\¸`llìîî~ãÆ ’óµD"‘$%%­ZµêĉPV O›››#""<==± –¯¿þzëÖ­>>>iiiØSAsssxx¸··wJJ |» F[[[QQQ\\¶™1FÃòݨ]·µµ5&&ÆËË+((¨¬¬ žŽ%3ŽŽ®ªª‚+**âââ¼¼¼öïßiC4>q!cžžÞ¼yó 9î 4mΜ9(ŠbéÙqûKµköíÛG®OÜnß¾êååõé§Ÿòòò~ÿýw‹µaÃ…B1j  wïÞ­««ƒ9ç0!‘ŽÑ4òº‘)­À@&G¥’¡PصunìºUÿdÿúL×M£Ð òhÐâμ}0ë \‹A"”K=*xxx,X° 88866vÛ¶m£c %ׯ_Ÿ?¾f^L5ù²eË\\\°_+++?þøã’’Ü×É™™™~ø¡fÙöövA°|.ÖÖÖ00····¯¯Ïç¯ZµêË/¿$Šý*((8|øð³gϰÏ.†††3gÎÄ\+±XÌçóIÎ×’œœ777‹uíÚ5WÝÒÒròäÉ   „„x^^^?ýô“D"©¨¨€¥lmm333/_¾Ìf³±˜éŒŒ ''§¢¢"Ÿ––Í[khhÌž=·%ª×U*• VVV;vì8räÈ‹/\.W*•bçCǽ¥¥å«¯¾ ÈÈÈxþüyIIÉ4@ј!ááÇ…AäkŠ¢J¥rîܹ¸'p¹ÜÜÜ\GGÇ·Þz JpûKµkªªª0ÿWŸš5(•Êìì옘˜ÒÒÒmÛ¶BBBììì"""Ξ=«šÛ’BWtwwŸ8qâÈ‘#jÝAb_ÛhŒJ~­±œ!‘!)"ìuw´ñŒè“§š‚“W®éºiZA2£ ê6¨Í¼`‚f@d1ˆä`0wH Ê¥$I[[›»»{uuuMM®^hUTT”——gdd *wwwwrr‚ÇžžžGµ··ÏÉÉÉÉÉQ+{óæM·yófͲðƒ-`dd%0p–Íf³X¬Ï?ÿ¼¨¨èÉü”¹ÍÍÍ/_¾Ä„«W¯ÎËË»}ûö7ß|£V÷|mزeˆ fÏžmggWWW…¡¡¡ÞÞÞb±øÉ“'‹-êíí;wî£Gà ¾¾¾666æææ3g΄ήL&{üøqhh¨±±ñ’%K5paŽkÕ‡(Šª®PÄ®[WWÇápÂÃÃÍÍÍW¬X1{öìââb’»ˆŒŒôôô\¼xñÊ•+&“:Æm¸wï‹Å:}ú´ÚôO$Ç033ssssss³´´ÌÌÌܹs'ŒÍ(Šœœœ˜˜Ü$ذB‘H4eÊ@?Ì­ “x‡……1™L&“¹téÒÒÒRWWWÍ¢¢¢ÅÅÅ,//‡W \¿~}Ñ¢E®®®ª¾¸çk¡ZÄÒÒTWW#¿õlmmáAYYÙ­[·$ÉË—/½½½555†††äá¼VVVb±¸¿¿ßÄÄJŽ;&‹?ùäµëòù|Ìtrrjmm%©[ójooçÎmn ²²²T%,‹Á`-ÆjˇT\•E‹yyy9::Â&i²ÿ~&“™ÐÖÖ_äàö—6]ƒAÔãéééIIIååå‡rww훢 ØlvUUÕÔ©SïÞ½ÛÔÔ$ Ï;¿'Xà×6:§¬ú‘½Ÿ&5yË|~I㥮¶sOfG/ï׺ kÆÿ{éÃuï꺃C4£‘ Z¢™wâf@d1H, ‰;„ åR qk8;;_½zõÒ¥K‰‰‰åååð†Ú²jœàààðÑGÁã###gggøç xÄÆhóï_Oyó© O¸rvܦ3¦X÷‰€ûÏn¢J€HSž~v¦,)j¥®[J1D3É %Ÿy'Ü`ÖDƒÄ’`hºC¸P£‚««+›Í†ÇÏŸ?Çý~=ªdddÀÍúûûûûû±/ûDr.—ÛÙÙ©VIii©……¶j ŸŸ¿|ùrµGa¬¬¾¾þêÕ«‹ŠŠÝÝÝ•••k×®Ðh4__ß’’¹\.•J+++/^ Ë~ÿý÷Xä«P(„eee˜c‡5òþýû2™ sL‰Î>NNNvvv.\€·0·³³ÓÔÔÔÊʪ¾¾žÏçÃlÓ¦MûñÇ),,¬««Óô·¦NºqãÆS§NaKâˆpvv¶²²úù矕JecccMM ´¡666G,§¥¥aÁ€ªª*¥R)îß¿©ôµ!ã“={ö´¶¶~ûí·€ ¿HºFSŸ¸5Èåò?ÿüŽjÜO}úôé08žBç̘1cÝ_8;;ÛÛÛñ=£1ÚT6”NmŠ[‹žôýÓÒq–Ý@áo…R"VL’Þ~pJ×ͤ¢ÄmÀy'î`ÖDƒÄ’`hºC¸Po©‡ÅË—/wïÞ-‹ñõõݱcÇúõë¡¡¡iiipé¨ÍÞ½{ǸaUUUUUU؆?üð\L$ÏÉÉqqq œ:uêÞ½{(Šššš=z‹@ …gûöíj×R-ÞÑÑ…-°ˆŽŽÞ³gφ d2Ù’%Küüü ¼°°ÐÅÅQÄÇÇwww3 A:„-ÂHKK«­­577ïêê:}ú4ö™Œèüᣯ¯Ÿ™™™œœìëëknnnkkûÅ_,^¼ØÚÚÚÇÇÇÖÖvÅŠ—.]z÷Ýw###?ž——÷þûï;99áìîÞ½›N§GFFNŸ>}Ò¤I|>? @ó4CCCipåÊ•®®®øýÁdffž={6::úñãÿËìÀãñ6nÜØÕÕµ`Á‚¥Kq’¨O\ˆÆÆøÄÔÔtïÞ½iiiË—/óÍ75û @Ô5šúÄíñø¥U__ûöí0œiýúõ©©©÷î݃Þ<Åø„ÈžÑURÏüÝ¢'b…l@Ù÷èUýƒªÿíÿ‰«óâÇ/î·v6O3@®D”Æÿx‘òíÙ#!ºn/D3Ñ %šy'è`žX¹CDè}|,°/b#€ê’‘¥««kòäɪ!¡IÇÏ|öQ”›¤ R©”ÇãYZZBâ5àñxfffš±°<oÒ¤IDqºJ¥²££C¡PLŸ>]M3ª½ì':• Wª¦é …04\ `›âÁì$D±¿(Š677‘9tuu™™™©.=Ð××W}Kçîî.‘H`“Ƙq8˜5û ëšÈÈÈÕ«WcO2šú$ªA L™2Û¯ € ˆH$ÂzT‡Jž@hZà10£AZK϶D.EÅB™ MÚÕ,îno]µ»ž÷âqÛˆA§ÑôPŠ"(·ÊàÑMüÅß:gœ+yÌ šÑ šƒ–¤ž‰8˜'DîPÒñ3ÐmÎ:›ÿÙGQ˜Î©·Ô£\œ7á022Ò̯1$ˆ]È`ôôôp¿ªèééá.2#:133S“`ΫªG¥ejL¦å.Ñš#‡(늵$C³¿ˆº†HŸš5hºÎt:}lüiŠa¢ù4Fc4ô 4†A”r ¢€>‰>ÙÌðry®R©40ÐCú¥UÈ•(¢40 ö¢ïÍhí݆ :˜'Cu‡(—š‚bB²ÿ~GGG]·bÂ=èÇ ŠñÉñmûfûT(J%Š*ˆBf€Ê ˆ\©P @¨E )ÿÏJ]7–‚â¿—ÿüÈ:›¯ëöPPPPPPPPPPŒ_ü âoF*Èi  ”<6Pz(% ”žÇJÉc¥ç1 é8ÎF´€ ü      ˜X\­xاlÓ“L ÷ÇÙꇂ‚B'PûR ===jE¹\®H$ÒI{ …¢¥¥E{ùÒÚÚ ·mVC,744Àý}IÐT&QÙ×SòÅ‹ëëë‡TDKòóókkk‰~…­…k½Gãê$àªtDN¦ Ÿ:"5Q¸ùë¦3ÚfÌ’Ouä].y}º¤¤ÄÁÁS??¿1D*þɪøûûÇÄĨ%$g±XD]ðË/¿u¿¿?ÜöÎÈÈhíÚµX–JÕkI¥R¹\ngg·víÚ   íÛIñ÷ƒÈ(:"5±à Ô[3r1dH_ˆª˜ûsŽY IDAT¯ëQ ¢™ EÑääd@000ÈÍÍ…‘ ògÏžM›6­¡¡!""bݺuº¸› ‘;A¤d"wˆÊ¥ÆÆÆ»víb³ÙÕÕÕªòÔÔÔààà€€‘Hàææ¦™ŒgT‰ˆˆ€Ûë<|øðÀÞÞÞp×0"¹kÖ¬9|ø°š0++ {½š››Ûß߯Y0;;{þüù±±±b±xãÆnnno¿ý6àܹs}}}ß}÷Üß÷©šH™DeÉ•|þüyx°eË–ÀÀ@Ýú^ÇollÌÏχ›¯¡(ÚÛÛ;×%RéðOÖ¢.Ø´i®’˜˜¸bÅŠß~ûm×®]~~~š%&&¾÷Þ{l6ûàÁƒ0Ý㈴VK"##}}}Çò¢D%"CGd &ÿ¾ñðN2D‰ÈQ™T.zÃApà‹kqºn…¶Í\·nÝBäÔ©S€øøø7n@/™h8pΉ7oÞÌÉÉ¡\jm r'HÜ\wˆ*ðcX0 ͆e2ÙóçÏ.\066vww¿qãÆ7 Û®ÒÊÊJ H$rù±cÇ Èë¤Ñht:N§óx¼¢¢¢;wª•(--…/„ †§§'–Š/??óæÍX¾ ÜD¸Ê$*;L%K$’¤¤¤U«V8qJbccËÊÊ¢££“’’ÍÍÍžžž‰‰‰Ø7⯿þzëÖ­>>>iiiØ¿bsssxx¸··wJJ |» F[[[QQQ\\¶™1FÃòݨ]·µµ5&&ÆËË+((¨¬¬ žŽ%3ŽŽ®ªª‚+**âââ¼¼¼öïßû!›H¥¸ éäQEOOoÞ¼y†††÷6gÎE±ôì¸ý¥Ú5ûöí#×'n ·oß õòòúôÓOyyy¿ÿþ;‹ÅÚ°aƒB¡5Ph ‘QÂ5t$j¢ÐÈëF¦´™•J„Ba×Ö¹±ëVý“ýë3]7B+Hf.V[[ÛÞÞ.—Ë[ZZ°¯Dƒ›¹\îxÎt;® rEˆ”Ÿ¯«Æ\¿~}þüùšy1ÕäË–-sqqÁ~­¬¬üøãKJJp_'gff~øá‡šeÛÛÛÁò¹X[[ÃXÆÞÞÞ¾¾>>Ÿ¼jÕª/¿üRûØ/¢²ÃTrNNŽ››‹Åºv팫nii9yòdPPPBB¼G//¯Ÿ~úI"‘TTTÀR¶¶¶™™™—/_f³ÙXÌtFF†““SQQ‘OKK‹æ­544fÏžÛÕë*•Ê„„++«‚‚‚;v9räÅ‹.—+•J±ó¡ãÞÒÒòÕW_ddd<þ¼¤¤DûÛq>|XøD~°ö (ZPP T*ç΋{—ËÍÍÍutt|ë­· ·¿T»¦ªª ó¿qõ©YƒR©ÌÎÎŽ‰‰)--ݶm $$ÄÎÎ.""âìÙ³ª¹-)tŽšQÂP5tDjQòkå ‰ ‘Ha¿¨»£gDŸ<Õœ¼rM×M£Ð ’™ËÃÃcÁ‚ÁÁÁ±±±Û¶mÓ MÔä‡~öì|#CAŽ6®ˆ¦’ÉÝ!5¨ÀQaõêÕyyyt:ýÏ?ÿ|ò䉮ž +**ÊËË¿ùæ›AåîîîØ±§§§­­í£GrrrêêêâââTËÞ¼y“ÇãmÞ¼Y³,üV‚E’A œe³Ù,«­­->>~Ù²e®®®ÚÜIÙá(yË–-6lØÙÙÕÕÕAãêíí ‹ÅOž<‰ííí;wî£GüýýØçþ™3g¾xñbîܹ2™ìñãÇÉÉÉÆÆÆK–,qttÔ|s\«æ8„˜°eìº/^¼àp8YYYæææ+V¬¸zõjqq±³³3Ñ]DFFzzzV®\ùàÁxGƒ"—Ë¡—1sæLÕ„Û¯—ËÅŽ;::†“ÓëÂ… YYYR©4997ÝfjjªT*ý׿þuîÜ9(Áí/mº·===<7gÎØƒA§ÓMLL° ãM£Q3tDj¢p¿¦ÉкY$£Êi_¯ -jY*àÎïEŒ™÷.þ´òÃuï꺃C4sI$’¶¶6ww÷²²2GGÇ÷Þ{Oõ¹wwvvvtt‚—/_R™ePWDSÉäî&”K=*®_¿¾hÑ"WWW¢ìǣʽ{÷X,ÖéÓ§Õ¦"9†™™™››››››¥¥effæÎ;al>@¡PäääÄÄÄà&Á†ŠD¢)S¦úûûanU˜Ä;,,ŒÉd2™Ì¥K—–––jéR“”Ž’±Õ±´´„ÕÕÕ‚Àoý[[[xPVVvëÖ-‰DòòåKè×ÔÔ’‡óZYY‰Åâþþ~(9vì˜X,þä“OÔ®ËçóMLL0?ÒÉÉ©µµ•¤f,Û¶½½ý;w´¹q€@ ÈÊÊR•°X,ƒ¡eq\Ô–'¾vU‹-òòòrtt$jÒþýû™LfBBB[[|Âí/mºƒ¨ÇÓÓÓ“’’ÊËË:¤úØI1~ 2Jš†ŽÈ@MʪÙ»ñiR“·Ìç—4^êjë0÷dvôò~­+±°füø¿—(—zB@4segg/\¸0***((hß¾}L&344þD4È£¢¢ÅÅÅ,//Ç—)0È]\%“¸C¸P.õ¨@£ÑBBBBBB/^ûuåõõõ)))¹¹¹666ÚÈqquuU(===X&çââb¡Pèáá{>“É455}õêŒill„……ƒÁÀ6²°°hoo×òFHÊŽž’ÍÌÌ9qâ“ÉÄ„uuu)))W®\±µµÅv¢°°°èïï‰DpÛ ÜC†††l6¾ê&ÖÖÓÓ¿:555a!|± þ®JSS“–(KKË3gð·©Ìš5‹(Þ2yòdwww__ßÔÔÔóçÏÓh4Üþ"ï5}âÖpvv¾zõê¥K—ËËËá3 µeÕ¸×(á:"5!ø÷/§¼ùTÐ'\9;î ÓÓ ¬ûDÀýg7Q%@¤Š)O?;S–µR×-¥¢™ëÁƒÉÉÉ€yóæmݺ.ä€?‘ϼ©©©uuuš›MQ¨BîŠ+YÓÂ…Š¥°¥£÷ïß—ÉdƒúR#NFFÜ ¡¿¿¿¿¿k‘œËåvvvªURZZjaa¡ú9)??ùòåjÂXY}}ýÕ«Wº»»+++×®]  Ñh¾¾¾%%%r¹\*•VVV.^¼–ýþûï±ÈW\HÊŽž’œœììì.\¸ðÿ³wöqM[㟄á¢p öJµ(U‹?«@U@ÑŠBÕRxP£€¢E-¨ØRÅ RÁbõSßÚ[KK¥x[Ä\ËS­ÕˆJURl „— ä}³ûûc>Ý››ì† / í~ÿZ&;³gÏ gÎîž™#na nWW—µµµ££ccc£@ €+ØÜÝÝ'Ožüí·ß"RVVÖÐРëoMš4)""¢°°_G†———££ã÷ßaXssóƒà¿·³³3—Ë•J¥™™™x@0€Ãá`&‰nݺ…«å/ÂŽ;ÚÚÚ.\¸HúKO×èê“°•JõìÙ38ªpÓ©S§j…ÍPB£DhèÈ Ô˜ ¶©ÂbR»XÚvåÎY©¼ïïö¯¸Î”ýxQc2©Ú|œâÆíBc‹I10d3—›Í†Ç?Ö {#äb±TUU™››òšì/Žw(G×"„zK=$ž>}º}ûv©TŠ Hppð–-[V¯^ ÈÌ̬¯¯·µµ …'OžýÀ‡Ãápðõì_ý5 Ø"+/((ðööމ‰Þ¼yEQkkëÇã¨b±˜ËånÞ¼YëZšuY,VrrrlllgggBBþˆÅbíØ±cÍš5J¥rÁ‚!!!°¼¬¬ÌÛÛQ)“¬îÈ)ÙÌÌ,'''===88ØÖÖÖÅÅåøñãóçÏwrr rqqY²dÉÅ‹ßxã //¯øøø£G¿ýöÛžžž„»Û·og0ñññS§N7nœ@  Ó=ÍÂÂF\ºtI(FEEÁÍ•Þy眜œÓ§O³X¬{÷þ“ÙÏçGDD…Â9sæ,\HDL¥„ êd£cmm½sçÎÌÌÌE‹½ôÒKºý ë]}ö¸\.‡ÍÌÌ6oÞ £V¯^‘‘qóæMèÍS2£DfèÈ ”‰“qê_®óîKÕJ9Öw÷÷ÆÛœÿc…~àã5ÿÞ“[m]-V“-Pafõ·ßã^8}(ÊØòRèƒl抎ŽÎÌÌ|çwh4š³³óÎ;a9Ù OIIéîîf2™‚ìß¿_wm.….dî™’ÉÜ!2hï)쎋P]2\`“äi­¯J;zê£÷Œ%•( >Ÿooo}ˆ€ÏçÛØØèÆÂòùüqãÆ½ØÒ.ݺ£ d¸²YˆÅb%‰ðMñ`v’ÑQmii±´´Ôÿå  mll4צÈår333Íèµk×&''ûùùÉd2(Ò(c‚ƒY·¿ð®‰_¾|9þ$£«O²D"Ñĉ5—o""‘HðÞQLPÉt ”‰ë9³4ŸæR¡R R±RÔ®¶H»[¥—moä?¹×Ķd2ètªDQåqÌï^»oly‰1q%d3D(Ž?ÞÅ-†uvvªÕê©S§j–SzÃ]2w(íè)è6çž.ùè½\çÔ[êF£rŠaÄÒÒR7¿Æ  ´zÊ_¬ÍQP²V î¼jzTš˜ètº?뮚"{onnN-IÁÑí/²®!Ó§n º®3ƒÁšb„Š!2 ¢„ÎT ¦’!ŒqŒñ6_VafnNCúLªUŠ`ææÔ^4¦Žþ™Ëð%³4ÚåãÅ0Ü Ö¢\j Š1Éž={<<<Œ-ŘÅb øq€‚Â49ºi÷Œ La(Š©µÒU™«¦V FÕ(†¢jµBð¬ÖØÂRPüuù¯ÀÜÓ%Æ–‡‚‚‚‚‚‚‚‚‚Ât8ðƒŠ¿i¨ §Q€Ròè@éy ”<:Pz(%”žG´£ÄÑRc‰¯jîôaí4Ù¤ØP‚­~(((Œµ/õPQ«Õ­­­„?µµµÁÝ‹™`z.Èn\*•655Áý} AQ”ÇãI$’‘”œ?¾±±q$Z.))©¯¯'ûÞ\ë=W×COOÏLAa\ô4Bƒ3 p¤¹öóoÖÓÚ§½¢šäÁÿ²âÞÀ(L =3T*Ås‘ H__Ç£’O 2 @¦ÌA)™zK=$²²²êêê¦L™"bbb`J@OOOJJ “É+V¬ýì‰d‚‘•krùòåÇì›4íÆ°<%%?8;;—••iÕ%»q…B‘••Åårœœ~ûí·¼þúëZuSSSííí¹\îêÕ«“’’†"OLL 4LVVV0…^ddäºuëÊÊÊÜÜÜFbKÚÊÊJƒ¡›ÂJ&“Ò=‡ìÆ wîÜ©V«áŸ(ŠêÖŠŠ*--Å0¬¿¿éÒ¥µµµ/&–’ׯ__RR¢Y²fÍšÿûߺ ¸¸8x Z:tèÿ÷{{{qÉ…BáH …D"yþüù¹sçvîÜ9¼'cz^±bEEE^~âĉäädÍ3u»€¬|ÅŠ•••(Šþüóϯ¿þzcc£Vx‚Z­¾víÚ¼yóÚÚÚ u‰‹‹ûá‡Fír£f1Æ(dÌà?†ôüEÅ/MßU´|óÝóÏK~;yš“½'ÿkc ecHÉ# ÙLW]]ýÞ{ïÁã;w–••Ác²™ÞÕÕÕ«V­ÂÛ§ô¬2 @¦L=J†n3Ô6®s*ðcHà»B:::ŠD"™LËå•••ðé‡ÉdúûûãI¼Œ+˜žò#GŽ”––êo“N§3 ƒÁçóËËË·nݪUWÏ—””¬_¿Ï—¡›‚H©T>~üxîܹ+++??¿«W¯¾˜<† “ÉÒÒÒ–-[vìØ1X’””TUUÅb±ÒÒÒ---qqqþþþ©©©x˧Ÿ~ºqãÆ   ÌÌLìÏ@---±±±„o´hoo///ONNÆ73¦Óéø&óZ×mkkKLL ¯ªª‚çÄÆÆâÉÌY,‡Ãkjj’““öìÙCiÃd2 Ü {°'(4mÖ¬Y\.—ð:þꫯ¢(Чg'ì/ͮٽ{·~}¶pãÆèè耀€?üP\\ü믿æçç¯Y³F­V˜( …Ì ‘²óÇ Íündb0WªP…L.‹…g&­ZöwöÏŒ-…Aè™éètz}}}GG‡J¥jmmÅ¿v’Ítøðæñx09(Å€Y2eVÉ”K=<\¾|yöìÙ0ýdGG‚ ø^âNNNF ÝÓLOù›o¾éííÿZ[[ûþûïÃWºmæää¼ûuÉn¼···¯¯O DFF.[¶ìã?ÖmÖÂÂbúôé¸ %•JÁ‹Éc¾¾¾ùùùß|ó Œ«nmm=qâDxxø®]»`›ß}÷L&«©©µ\\\rrr¾üòK6›ÇLggg{zz–——µ¶¶êJØÔÔ˜1c¡$š×Å0l×®]ŽŽŽ¥¥¥[¶l9tèГ'O<O¡PàçCǽµµõ“O> ËÎÎ~üøqEE…á·?ìܹs§ìÈü`ÃAQ¾Å™9s&á <¯¨¨ÈÃÃãå—_†%„ý¥Ù5÷¿ õ©Û†ayyy‰‰‰•••›6mDEE¹ººÆÅÅ>}Z3·%…ÑÑ4h†2ÃhâTüüÀ~šL‰Èˆ¸_ÒÝÙηdŒŸd N\úÆØ¢Q„ž™nñâÅsæÌ‰ŒŒLJJÚ´i“nh¢îLWZZzàÀGÁ72†£kÈ”9(%S±ÔÃ@MMMuuõgŸ}ÿìïïéÙ,--a‰ÑÓSîçç‡ûûû»¸¸Ü½{·   ¡¡!99Y³îµk×ø|þúõëuë’Ý8 œe³Ùùùùííí)))o¾ù¦–TË—//..f0Ïž=»ÿ>þD8Xy aÆ kÖ¬¸ºº644@ãJ¥÷ïßOJJêíí9sæÝ»wCCCÁÁÁ°úôéÓŸ¥2)¡ Sæ ”L¹ÔCåæÍ›ùùù'OžÄgYx ‘H`Røþþ~ÃSŒŽ¨`úËqlll|}}}}}ííísrr¶nÝ —ÔjuAAAbb"al²‡I¼cbb.\XYY©ëRGFF._¾>>jµº§§Ïä|åʱX¼xñbÂóÉnÜÎÎŽÉdâÙÙÙuttèV§ÓéQQQQQQ€óçÏën“2Xy^AŽ;æàà€644 [xyy}õÕW/^LMM­®®†Ï0„½La šƒ3(hRüó‡{_z(ê/‘<ÅzÚds§>‰pëÑ5ˆB=ÑýáG§ªÒ–[RŠ ›énß¾žž˜5kÖÆáBø“þ™nñâÅ º›MQh1  S¦J¦b©‡DvvöÂ… §L™Òßßßßßçi33³åË————º»»kkkW®\i ‚é)çñx]]]ZTVVÚÙÙi~é())Y´h‘ÖS^—ìÆétzpppEE…J¥R(µµµóçχu¿øâ <òæÖ­[J¥R×5Pž¡ãéééêêzîÜ9q cp»ºº¬­­\Áæîî>yòäo¿ýA²²²††]kÒ¤I………ø’82¼¼¼¿ÿþ{ Ú››Íb±îÝûOf>Ÿ! çÌ™³p!Aµ§OŸnß¾]*•"¼eË–Õ«W“Ýõ N6:ÖÖÖ;wîÌÌÌ\´hÑK/½¤Û_²®ÑÕ'aËårø¥ÕÌÌlóæÍ0œiõêÕ7oÞ„Þ<…qÑc Ùù&NÆ©¹Î»/U+åXßÝßosþú×ü{OnµuµXM¶@…!˜Õß~;xáô¡(cËK¡²™.:::33ówÞ¡ÑhÎÎÎ;wî„åd3]JJJww7“ÉDdÿþýcn­­Q ³dʬ’iï)쎋P]2¼ðù|Íд£§>z/Áˆ"‚B¡àóùöööЇxto/7nY#Ü3EQ­Eiƒ•g• Wâ!˱X #5E"¾)ÌN2`82Š¢---–––xà B¡ÐÆÆFsmŠ\.733Ó|K±víÚääd???™LEeLp0ëöÞ5ñññË—/ÇŸdtõIÖ‚H$š8q¢æòMA$ Þû#Š *y ¡ßàhbâzÎ,ͧ¹T¨¨T¬µ+„-ÒîVéÆeÛùOî5±-™ :†*QAyó»×î[^bL\É£ÙL …ãÇ7dq †ajµzêÔ©šå”ž_2eêQ2t›sO—|ô^®sê-õBøcúXZZ¾ôÒKCiìÆõ+„F£.&ºS£j†"˜¹ù[sù„l¦ƒ¾™F£vù.È”9X%S.5ŘdÏž=Æ–bÌÀb±ü8@AašÝ´{FP ¦Æ0ÅÔˆZiŽªÌÕˆ S« P£jCQµZ!xVkla)(þºüWàGîécËCAAAAAAAAAaº øAÅߌ4TÓ(@)yt ô< PJ(=”’GJÏ£@ÚQâh©À бÄW5wú°všlRl(ÁV?FÚ—z¨¨ÕêÖÖV²_{zzFSMÈÓ/ð°ÐÖÖ·m,/&Û`•|þüùÆÆÆÁ^ÅJJJêëëÉ~EQ”ÇãÁµÞ#qu= JEF´/á •J¥MMMpCqCÎ+\ûù7ëiíÓ^QMòàYqoà &œ $‰îOR©ÏR4 }}}<J>õèZ=Ê4Ü¥¡ÞR‰¬¬¬ººº)S¦‚˜˜˜ÐÙÙ™››ûðáCOOϼ¼<ÓŒ¬\“Ë—/>|&ý¦Ñh7nÜ€å)))ø1ÀÙÙ¹¬¬L«nOOOJJ “É+V¬ÀóBRW¿lJ¥2&&ÆÛÛ;-- –èWrLL 4LVVV0…^ddäºuëÊÊÊÜÜÜFb³ðÊÊJƒ¡›]I&“ (šžž.‰är9 ¨¨nXD6{fee=zôhòäÉMMMqqq«V­2ÆÝŒ1È,™2É\2(—zHÄÅÅÁ Vîܹ³wïÞÀÀ@¸9—••Õ¶mÛØlv]]I FV®ÅŠ+8 U˜››‹¿^-**êïï×­˜——7{ö줤$©TáëëûÚk¯XW¿l'NœP©TšçëWòÙ³gáÁ† Ö®]k\ßëèÑ£ÍÍÍ%%%pó5E{{{Gẃ‡Ã>hɺ`ݺu„åÔÔÔ%K–üòË/Û¶m ÑÝ?155õ­·Þb³Ùûöíƒy°†EZ‰_»vmppðh^”‚ ²A{æÌ™¾¾¾Ï?ÿn(Ž¿y2ºe:ÿ¼zçožJCT¨R¡’Lqí=þMvòZcËEa(‘‘‘aaa‰$,,Ì×צôº~ý:‚ ………€”””«W¯BÇŽlöÜ»w/Þ×®]+(( \jC ³dÊ$siÈ ?†¾a¡£££H$’ÉdðO&“iàÄ#™`dåGŽ)--Õß&Ng0 ƒÏç———oݺU«®\.¯¬¬„o—™L¦¿¿?ž£ˆ¬®!2~ú駆†˜V /Š’e2YZZÚ²eËŽ;K’’’ªªªX,| ÞÒÒçïšŠñùôÓO7nÜ”™™‰OÒ---±±±„o´hoo///ONNÆ73¦Óéxú ­ë¶µµ%&&„‡‡WUUÁsbccñdæ,‹ÃáÀŠ555ÉÉÉ{öì!ü,5(}ÐâÐh´Y³fYXXp¹\Âètú«¯¾Š¢(žž°¿4»f÷îÝúõIØÂ7¢££>üðC@qqñ¯¿þšŸŸ¿f͵Z=b  0²A[RR²~ýz}:tv•Jå½{÷¢££­¬¬,Xàáá¡ùs\kæ8DQTs…"~݆†.—kkk»dÉ’3f\¹rEÏ]ÄÇÇûûûÏŸ?éÒ¥·oß6ðÞU*÷¿úrIWÿCiêܹs!!!§NJOO'Ì~—‘‘ÆårÏœ9KûË®Á!lF£ÁµjµJÂd2 Æ„  ÉqMa,`¤>›ÍÎÏÏÿÇ?þQ^^~ÿ¾‰æè·<·pj‘(zeªn‰´«W$Hx3ðã¯åÌéìóßÝ2¶€±|ùòâââ7n|öÙgš#S&“µ··ûùùÕÕÕ=xð@ë;áìÙÕÕÕÙÙÙÒÒòôéÓQ’þÏ‹®2tit¡b©‡ÊÍ›7óóóOž >>¸Ç–——7wîÜ„„„ðððÝ»w;88DGGßÈfÏ„„À•+WöíÛW]]­gn¥]eêwi¡\ê!ÑØØxðàÁ¢¢"gggcËò_ 6(}||ÔjuOOžÉùÊ•+b±xñâÅ„ç;88X[[ÿþûï0¤¹¹YóÓ•þºd²¹»»¿÷Þ{ðX.—[ZZzyy (ù±±±A䨱cxaCCÃÁƒ/]ºäââ‚ïDagg×ßß/‘Hà¶„ß—ÝÝÝ-,,Ølvhh¨þëÂÖzzzà§½çÏŸã!|‘Œ ˆfˆ9ÎóçÏ ÷ìííO"Þ¦Þxå•WÈâ= ãÇ÷óó ÎÈÈ8{ö,N'ì/ý]£¥OÂ^^^_}õÕÅ‹SSS«««á3ÌŸ&ŠàÏŠ“ÉÄw"³³³ëèè0®HCçŸ?Ü›øÒCQŸxéŒä)ÖÓ&›;õID€[®¡@ê‰î?:U•–°ÔØ’R NŠŠŠŠŠœ?ßDâöíÛééé€Y³fmܸ.ä€?éŸ=/^œ‘‘ÑÐР»ÙÅ`ÑT¦~—†*ðcHdggÃ=úûûûûûG¿a2È#+çñx]]]ZTVVÚÙÙá«%%%‹-ÒzÆëš™™-_¾¼¼¼ÐÝÝ][[»råJýu¿øâ ÍÈW]Ù¦M›¶ê¼¼¼ÜÜÜàâèÅÓÓÓÕÕõܹs0âÆàvuuY[[;::666 ¸‚ÍÝÝ}òäÉß~û-‚ eee ºþÖ¤I“""" ñ%qdxyy9::~ÿý÷†577?xðÚPggg.—+•J333ñ€`‡ÃÁ0L$ݺukþüùëgÇŽmmm.\$ý¥§ktõIØ‚J¥zöìÕ¸½ñÔ©Sap<…ÉB§Óƒƒƒ+**T*•B¡¨­­ýüwÔ6UXLjKÛ®Ü9+•÷ýÝÞã×9€²/ jL&U›Sܸ]hl1)Ÿvoݺ¥T*ñW->>>l6?~üX3ìpö‹Å𠪪ÊÜÜÜÔÞë-•©ß¥!„zK=$8‡ÃÁ~ýõ×p­èÓ§O·oß.•J Þ²eËêÕ«MA0²ò‚‚oo@aaáÍ›7Qµ¶¶>|ø0*‹¹\îæÍ›µ®¥Y—Åb%''ÇÆÆvvv&$$àtduËÊʼ½½a™ldŒœ’ÍÌÌrrrÒÓÓƒƒƒmmm]\\Ž?>þ|''§   —%K–\¼xñ7ÞðòòŠ?zôhqqñÛo¿íééI°»}ûvƒ?uêÔqãÆ ‚°°0ÝÓ,,,`¤Á¥K—„BaTT|~xçwrrrNŸ>Íb±îÝûOf>Ÿ! çÌ™³p!AµA©ÈèƒvPX[[ïܹ333sÑ¢E/½ô’nȺFWŸ„=.—Ëá—V33³Í›7Ão«W¯ÎÈȸyó&ôæ)Œ Ù e±X;vìX³fR©\°`AHHˆþóMœŒSÿrw_ªVʱ¾»¿7Þæü+ô¯ù÷žÜjëj±šl € C0«¿ýwðÂéCQÆ–—B™™™õõõ¶¶¶B¡ðäÉ“xàGtttff&ÜØÊÙÙyçΰœlöLIIéîîf2™‚ìß¿ßwG0AÈ,™2É\2hï)쎋P]2Ò¤=õÑ{ Æ–b ŸÏ···‡>Ä Àçómll†žû £’áÊBÍ¥B¥@¥b¥¨]!l‘v·J7.ÛÞÈr¯‰mÉdÐé4T‰¢Êã˜ß½f¢k1M\É£†a0‡.áòk¡P8~üxCfO Ã:;;ÕjõÔ©S5Ë)=¿dÊ„èº4iGOA·9÷tÉGï%à:§ÞRShcii©›_cPZбˆV î¼jzTš˜ètº{âê® ÌÈ077§–¤àèöY×éS·]×™Á`ŒŽ?M1Dþ4†HԃЙ ÁT2€1Ž1ÞÆâËê" ÃÌÍiH‚©Qµ CÌÜÜ´VÉSèB£Ñô,›pœf;ša™CA¿2 ·$”KMA1&Ù³g‡‡‡±¥3°X¬?PP˜&G7ížTƒ©1 E15¢Vš£*s5¢ÂÔj€Ô¨ÅPT­VžÕ[X Š¿.ÿø‘{ºÄØòPPPPPPPPPP˜.~Pñ7# ä4 PJ(=”’GJÏ£¥äÑÒó(v”x#Z*ðƒ‚‚‚‚‚b,ñUÍ>¬&›J°Õ…Q ö¥*jµš0í;Yù¨aDÁÚÚÚà¶ÍZH¥Ò¦¦&¸¿/!(Šòx<‰D¢UÞ××Çãñ†+ÅÆùó燥)-JJJêëëÉ~…w×zÄÕõÐÓÓcÈiëg ÓD*•â‰`Æ"×~þÍzZû´WT“<ø_Vܸ…‰A6ÓANÊbΡÔ[ê!‘••UWW7eÊ@SBè)‚]¾|ùðáÃ0 9F»qã,OIIÁÎÎÎeeeZu{zzRRR˜L¦@ X±bžJ¡Pdeeq¹\''§ß~ûíÀ¯¿þºVÝÆÆÆÔÔT{{{.—»zõꤤ$\æGMž<¹©©)..nÕªUúå„ÄÄÄ@ÃÔÑÑaeeSèEFF®[·®¬¬ÌÍÍmÀ &_€ÊÊJƒ¡›ÂJ&“}Pü9Q*•111ÞÞÞiii°„ÌX¡(šžž.‰är9 ¨¨ÈÀízL ¾¼Ñ‰©V¡ˆSñDÂ`¶±%¢d3Ùà$Ì/l±)t-Yù æP@¹ÔC$..n¼rçν{÷Â͹ÈÊÇŠ`+V¬8pà€Vann.þzµ¨¨¨¿¿_·b^^ÞìÙ³“’’¤RiDD„¯¯ïk¯½8sæL__ßçŸ÷÷%|ªÎÈȈŒŒ “H$aaa¾¾¾0ÑÉÞ½{a­k×®hB9!gÏž…6lX»v­q}¯£G677—””ÀÍ×Pííí…ëZYYmÛ¶Íf×ÕÕ x²=¿d]°nÝ:ÂrHjjê’%K~ùå—mÛ¶…„„èî瘚šúÖ[o±Ùì}ûöÁt›C”sPÄÇǯ]»688x4/J¡Ÿ'N¨T*Í2cuýúuA )))W¯^sŽÈ?¯Þù›§ÁªT¨$SÜE{“¼ÖØrQ ÙLG68Éó°[쿺ƒ¬|Ps( ?†¾‘¡£££H$’ÉdúËMV°#GŽ”––êo“N§3 ƒÁçóËËË·nݪUW.—WVVÂ7ßL&ÓßßO…XRR²~ýz<_†nŠA¥Rùøñã¹s第¬üüü®^½Š_ðx<ýù G&“¥¥¥-[¶ìرc°$))©ªªŠÅbÁÇÓ–––¸¸8ÿÔÔT<ˆåÓO?ݸqcPPPff&þTÐÒÒxðàAøvA‹öööòòòääd|3c:ާŸÐºn[[[bbb@@@xxxUU<'66OfÎb±8¬XSS“œœ°gÏÂH&“iàNØ`dôübÐh´Y³fYXXp¹\Âètú«¯¾Š¢(žž°¿4»f÷îÝúõIØÂ7¢££>üðC@qqñ¯¿þšŸŸ¿f͵Z=b  ?ýôSCCÌ9‡’+:^__ßÑÑ¡R©Z[[u?(™8Íündb0WªP…L.‹…g&­ZöwöÏŒ-…AèŸé§žÁ Œn±Ç„ƒ¬|Ps( \êáâòå˳gÏÖM?IV>j(Ø›o¾éííÿZ[[ûþûïWTT¾NÎÉÉy÷Ýwuëvtt ‚oŠîä䃶{{{ûúúAddä²eË>þøcÝf-,,¦OŸŽ»PR©T à¿–––8pàÑ£GZŸiôË©‡‚‚__ßüüüo¾ùÆU·¶¶ž8q"<<|×®]ð¾ûî;™LVSSk¹¸¸äää|ùå—l6™ÎÎÎöôô,// jmmÕ•¤©© 0cÆ BI4¯‹aØ®]»KKK·lÙrèС'Ožx<žB¡ÀχŽ{kkë'Ÿ|–ýøñ㊊ŠAi€2=È;wÊþ€Ì6EKKK1 ›9s&á <¯¨¨ÈÃÃãå—_†%„ý¥Ù5÷¿ õ©Û†ayyy‰‰‰•••›6mDEE¹ººÆÅÅ>}Z3·%…±èîî>vìØ¡C‡ÈºCËX-^¼xΜ9‘‘‘III›6m‰è¯¥âçöÓdJD¦@Äý’îÎv¾%cü$kpâÒ7Æ ôÌtN­Á †`±ÿ²YŒ-‰P.õ0PSSS]]m`ù¨a¸`~~~žžžðØßßÿðáÃnnnZu¯]»Æçóׯ_¯[~Â#I,--a œe³ÙùùùÿøÇ?ÊËËïß'H™»|ùòâââ7n|öÙgZ'tuuuvv¶´´<}ú/Ô/§~6lذfÍš3f¸ºº644ÀÂèèèÀÀ@;;;©TzÿþýyóæõööΜ9óîÝ»ð„àà`ggg[[ÛéÓ§CgW©TÞ»w/::ÚÊÊjÁ‚º/àaŽk͇(Šj®PįÛÐÐÀårcccmmm—,Y2cÆŒ+W®è¹‹øøxÿùóç/]ºôöíÛÞ»J¥âþ7¸0„z6Wÿƒª«Å¹sçBBBN:•žžN˜³*###,,ŒËåž9s–ö—!]ƒCØFƒ1újµJÂd2 Æ„  ÉqM1 :t(>>ž,øG×XÉd²ööv??¿ºººŒ­O ·<·pj‘(zeªn‰´«W$Hx3ðã¯åÌéìóßÝ2¶€A6Ó霺ƒ Ábÿe!³ú-‰áP±ÔCåæÍ›ùùù'OžÔšeÉÊM_0______{{ûœœœ­[·Â%€µZ]PP˜˜H˜6(‘H&NœèïUa‡… VVVúøøhUŒŒ\¾|yÞ¼y>>>šAÞ €+W®ìÛ·¯ºº^]œ‚ÊѼ{{{xPWW‡ üÖpqqUUUׯ_—ÉdOŸ> sæ üžHŒU^^ÞܹsÂÃÃwïÞíààm$ñMUÝ]7_]1áeÛÙÍ…í¶þ½üŸ*윘ßþû⻫Þ0¶ŒC6Óéœd3ï [ì¿&dC¿%”K=$ŒG ŠÅb.—»yóf­kiÖe±XÉÉɱ±± ø ‹µcÇŽ5kÖ(•Ê „„„Àò²²2oooD‘™™Y__okk+ Ož<‰KIIéîîf2™‚ìß¿_œA&çÐ133ËÉÉIOO¶µµuqq9~üøüù󜜂‚‚\\\–,YrñâÅ7ÞxÃËË+>>þèÑ£ÅÅÅo¿ý¶§§'¡Û·og0ñññS§N7nœ@  ºN,[ IDAT Ó=ÍÂÂF\ºtI(FEEÁìwÞy'''çôéÓ,ëÞ½ÿdvàóùB¡pΜ9 $Q{úôéöíÛ¥R)‚ ÁÁÁ[¶lY½z5Ù]“éÙ4±¶¶Þ¹sgffæ¢E‹^zé%Ýþu®> {\.—Ã/­fff›7o†áL«W¯ÎÈȸyó&ôæ)L2c™™ õ;;;ïܹÓ(â –ŒSÿrw_ªVʱ¾»¿7Þæü+ô¯ù÷žÜjëj±šl € C0«¿ýwðÂéCQÆ–—Bd3Ùà$ÌcËbQ5‡hï)쎋P]2Ò¤=õÑ{ Æ–b ŸÏ···‡>Ä Àçómlltcaù|þ¸qãÈb¸1 ƒ™µ^aÖÙÙ©V«§NjˆœÃ¨d¸²P3„X,†¡á"‘ßf'!‹ýÅAQ´¥¥ÅÒÒrÀ¡Phcc£¹ôX.—›™™i¾¥X»vmrr²ŸŸŸL&ƒ" 2=“a‚ƒY·¿ð®‰_¾|9þ$£«O²D"Ñĉñýª‚H$¼÷GTòŸ¡P8~üxÍX×sfi>Í¥B¥@¥b¥¨]!l‘v·J7.ÛÞÈr¯‰mÉdÐé4T‰¢Êã˜ß½F°øÛ0q%d3Dwpêi‡ÐbSzÒŽž‚nsîé’ÞKÀuN½¥¦ÐÆÒÒR7¿Æ  ûœªÿ3+F#\LF£Ñƒ:†.ç€ØØØh•àΫ¦Ge`6:nà—pY§&d©‚ÌÍ͇kI ™žÇºýEÖ5dúÔmA×uf0£ãOSŒºÿ_&ލ¡3‚©dcc¼Å—ÕE†™›Ó>S£j†"˜¹9µ©C6ÓA œ‹ýçƒr©)(Æ${öìñðð0¶c‹5\«W)(F™£›vϪÁÔ†¢˜Q+ÍQ•¹Qaj5@jTb(ªV+Ïj-,Å_—ÿ üÈ=]bly((((((((((L—?¨ø›‘† r(%”žGJÉ£¥çQ€Ròè@éyH;J¼-øAAAAAA1–øªæNÖN“MŠ %Øê‡‚‚Â(PûRµZÝÚÚª[Þ××ÇãñŒ˜‚L0²òa¤­­ nÛ¬…T*mjj‚ûû‚¢(Ç“H$#)8þ|ccãH´\RRR__Oö+¼;¸Ö{$®®‡žžCN…±AA1:Ý×~þÍzZû´WT“<ø_Vܸ…‰¡g¦“J¥xZ´ùr£@èº JÉÔ[ê!‘••UWW7eÊ@SBÀòGMž<¹©©)..nÕªU¦#a¹&—/_>|ø0LîM£ÑnܸËSRRðc€³³sYY™VÝžžž””&“)V¬Xç…R(YYY\.×ÉÉé·ß~;pàÀ믿®U·±±155ÕÞÞžËå®^½:))IÿuõË SGG‡••L¡¹nݺ²²2777|Ïìa¤²²’Á`覰’Éd'Ož¬¨¨pww‡Æ4$$¿Á‘£³³377÷áÇžžžyyyúO6dlš˜˜¨•}Pü9Q*•111ÞÞÞiii°„ÌbÄL¾¼Ñ‰©V¡ˆSñDÂ`¶±%¢d3Š¢ééé"‘H.—ŠŠŠà†EdƒÖènÆØE×b¹.ƒU2åR‰¸¸8¸‹Í;wöîÝ7çÚ»w/ÜÈöÚµk£?ÖÉ#+×bÅŠÐ*ÌÍÍÅ_¯õ÷÷ëVÌËË›={vRR’T*ˆˆðõõ}íµ×gΜéëëûüóÏ¡Zø222"##ÃÂÂ$IXX˜¯¯/LtBv]ýòœ={lذaíÚµÆõ½Ž=ÚÜÜ\RR7_CQ´··w®keeµmÛ66›]WW7àÉŽ Ã!ë‚uëÖ–CRSS—,YòË/¿lÛ¶-$$DwŸÄÔÔÔ·Þz‹ÍfïÛ·¦Šƒ%>>~íÚµÁÁÁ£yQ ýœ8qB¥Ri–Y`CŒ˜‰óÏ«wþæ©D0D…**ÉwÑÞãßd'¯5¶\†B6Ó]¿~AÂÂB@JJÊÕ«Wá¸%´Fw3Æ.ºƒÌu¬’©À!ï éèè(‰d2üO ÁãñF9o¢~ÁÈÊ9RZZª¿M:Î`0 ŸÏ///ߺu«V]¹\^YY ßn2™L¶¶´´ÄÅÅùûû§¦¦â_‚>ýôÓ7effâO---±±±„o´hoo///ONNÆ73¦Óéx¾­ë¶µµ%&&„‡‡WUUÁsbccñdæ,‹ÃáÀŠ555ÉÉÉ{öì!Œ´a2™î„ ÈÇÆèC£ÑfÍšeaaÁår O Ó鯾ú*Š¢xzvÂþÒìšÝ»wë×'a 7nÜˆŽŽøðÃÅÅÅ¿þúk~~þš5kÔjõˆ)€büôÓO 0ç^Hf‡b4Lf~72± ˜+U¨B&‹ÅÂ3“V-û;ûçGÆ ôÏtõõõ*•ªµµÿÚ©g„Ær3Æ(ºCë2X%S.õðpùòåÙ³gk¦Ÿ,--=pàÀ£Gð/ &"aù›o¾éííÿZ[[ûþûïWTT¾NÎÉÉy÷Ýwuëvtt ‚çsqrr‚¹½½½}}} 22rÙ²eü±n³Ó§OÇ](©T*ô_wÀr=øúúæççóÍ70®ºµµõĉááá»ví‚m|÷Ýw2™¬¦¦ÖrqqÉÉÉùòË/Ùl63íééY^^ÔÚÚª{kMMM€3fJ¢y] ÃvíÚåèèXZZºeË–C‡=yòÀãñ ~>tÜ[[[?ùä“°°°ìììÇWTT~ûú!3z¸sçNÙùÁ†ƒ¢hii)†a3gÎ$<Çãyxx¼üò˰„°¿4»†Ãáàþ7¡>u[À0,///11±²²rÓ¦M€¨¨(WW׸¸¸Ó§Ok涤0ÝÝÝÇŽ;tènwè·À/`4LŠŸØO“)™÷Kº;Ûù–Œñ“¬Á‰Kß[4 ƒÐ3Ó-^¼xΜ9‘‘‘III›6mÒ MÔ´&âfŒ!-™ë”’)—z¨©©©®®ÎÎÎÖ,ìêêêììliiyúô©I FXîçççéé ýýý>ìææVPPPPP U÷Úµk|>ýúõºuá)}:tv•Jå½{÷¢££­¬¬,Xàáá¡ûæ¸ÖÌqˆ¢¨æ Eüº \.766ÖÖÖvÉ’%3f̸r办»ˆ÷÷÷Ÿ?þÒ¥Koß¾mཫT*î£) Ù˜ÑÇ«ÿƒÎÎÎAÕÕâܹs!!!§NJOO'L·™‘‘ÆårÏœ9KûË®Á!lF£ÁµjµJÂd2 Æ„ ð ÆåСCñññ„Á?z,ð‹ £sëÁs §‰¢W¦ê–H»zE‚„73?þZΜÎ>ÿÝ-c Had3L&koo÷óó«««{ðàÖw0ÂAk nÆØ‚Ðb¹.A)™Š¥*7oÞÌÏÏ?yò¤Ö,›¸råʾ}ûª««‡+kôÐ#+DZ±±ñõõõõõµ··ÏÉÉÙºu+\ªP«Õ‰‰‰„·”H$'Nô÷÷Ãܪ0‰wLLŒƒƒƒƒƒÃÂ… +++}||´ªGFF._¾ yòäo¿ýA²²²††]kÒ¤I………ø’82¼¼¼¿ÿþ{ Ú››Ä Àçómlltcaù|þ¸qãÈât1 ƒ™ ¥Î0*®,ÄC–b±††‹D"|S<˜„,öEÑ––KKK<† ¡Phcc£¹$Y.—›™™i¾¥X»vmrr²ŸŸŸL&ƒ"2&8˜uû ïšøøøåË—ãO2ºú$kA$Mœ8ßJ € ˆD"Á{D1A% È,0&®çÌÒ|šK…JJÅJQ»BØ"ín•n\¶½‘ÿä^Û’É Ói¨E”Ç1¿{`ñ·)`âJ5ôÏtB¡püøñÎ&`Œ»¦‰®ë¢GÉÐmÎ=]òÑ{ ¸Î©·Ô#FÓŒ—[XZZêæ×d>±~_™F£rÚŽ±±±Ñ*ÁWMJÓÓN7p—h͵²¬+æææcîöÈ¡Û_d]C¦OÝt]gƒ1:þ4Å 3¦-°.¢„ÎT ¦’!ŒqŒñ6_VafnNCúLªUŠ`ææÔ^4¦Žþ™N×øëiçÏ4ÈM]e°J¦\j Š1Éž={<<<Œ-ŘÅb øq€‚Â49ºi÷Œ La(Š©µÒU™«¦V FÕ(†¢jµBð¬ÖØÂRPüuù¯ÀÜÓ%Æ–‡‚‚‚‚‚‚‚‚‚Ât8ðƒŠ¿i¨ §Q€Ròè@éy ”<:Pz(%”žG´£Ñ*ðƒ‚‚‚‚‚blñUÍ>¬&›J°Õ…Q ö¥*jµZ3¼é@&Ø(ÜÖÖ·m.ôËÜÓÓ3¨ÖΟ?ߨØ8d¡())©¯¯'ûEQ×zÄÕõ0( VŸ&üw“H$Zå}}}<oLçë¹öóoÖÓÚ§½¢šäÁÿ²âÞÀ(L ²Á J¥xZ´ù f“B*•655Á8ƒr™¨·ÔC"++«®®nÊ”) &&¦„ÀQ*•111ÞÞÞiii&"˜~!—/_>|ø0LBN£ÑnܸËSRRðc€³³sYY™VÝžžž””&“)V¬Xç…2¤.DWid2wvvæææ>|øÐÓÓ3//O«˜˜h˜:::¬¬¬` ½ÈÈÈuëÖ•••¹¹¹é¦G:••• C7»’L&;yòdEE…»»;4¦!!!IIIÃ.€úU4”“5 MLLÔJHžŸŸOÖ?üðYׄ††Âmï,--W®\‰g©Ô¼–B¡P©T®®®+W® 7\NŠ?dƪ±±155ÕÞÞžËå®^½ÿ_ËÊÊzôèÑäÉ“›ššâââV­Ze4ч_ÞèÄT«PÄ‚©x"á0ÛØQ ²Á‰¢hzzºH$’Ë倢¢"¸aÙìùçÌ£ ™ÅP(YYY\.×ÉÉé·ß~;pàÀ믿 s™4¡\ê!7X¹sçÎÞ½{57ç:qâ„J¥2)Áô Œ³bÅŠhæææâ¯W‹ŠŠúûûu+æååÍž=;))I*•FDDøúú¾öÚkÖ…è*Lf++«mÛ¶±Ù캺:ÝvΞ= 6lذvíZãú^Gmnn.))›¯¡(ÚÛÛ; ×Õ¯¢¡œld]°nÝ:ÂrHjjê’%K~ùå—mÛ¶…„„èî瘚šúÖ[o±Ùì}ûöÁtÃ"­ÄÇǯ]»688x4/J¡Bc•‘‘&‘HÂÂÂ|}}aÖ¤½{÷Â-Ư]»VPP0½^½ó7O%‚!*T©PI¦¸‹öÿ&;y­±å¢0²ÁyýúuA )))W¯^…ã“löü f£@h1Μ9Ó××÷ùçŸC•â/þ t™p¨À!oXèèè(‰d2þÓO?ýÔÐÐ3!™Ž`dåGŽ)--Õß&Ng0 ƒÏç———oݺU«®\.¯¬¬„qL&ÓßßOÅGVW B¥‘ÉÌd2 ÜæY™L–––¶lÙ²cÇŽÁ’¤¤¤ªª*‹ߎ·´´ÄÅÅùûû§¦¦âA,Ÿ~úéÆƒ‚‚233ñ¹–––ØØØÀÀÀƒ· Z´··———'''ã›Óét<ßÖuÛÚÚÂÃ몪à9±±±x2s‹Åáp`Åšššää䀀€={öFÚ JECÑçðB£ÑfÍšeaaÁår O Ó鯾ú*Š¢xzvÂþÒìšÝ»wë×'a 7nÜˆŽŽøðÃÅÅÅ¿þúk~~þš5kÔjõˆ)€bH(•ÊÇÏ;`eeåççwõêUøž²‡Çã™rrP2šùÝÈÄ6`®T¡ ™\, 7ÎLZµìïìŸ[4 ƒÐ?8ëëë;::T*Ukk+þµ“löëƒÙ¤())Y¿~=®RÜÑããB¹ÔÃÃåË—gÏž§Ÿìîî>vìØ¡C‡4à™‚`dåo¾ù¦··7þkíÿgïìÚ¸²~h@„E`» T¥bqý«‚ˆV[û …E@¥ŠŠ­ @‹ Š ²ŠÅâS¿¶«RQ„­²Ê[ÐjDjU(‚á#@B>H2™yÿ¸Og³I&„Ï„íüþNæÞ9sîåÜ;3çÞSUuðàÁ’’•AZéééü±rÙÎÎNAðÍÒmll”#ÊÊ3¨Ñˆîedgg»»»geeݸqÆU·µµ>}:00pïÞ½POooïÛ·o‹D¢ŠŠ XÊÎÎ.==ýêÕ«•••xÌtZZš³³sQQ‘O[[›²Åš››sæÌQ©‰üu1 Û»w¯••UAAÁŽ;RRR^¾| `2™b±?NÜÛÚÚ¾üòË€€€´´´/^”””ŒÜ,ÃæÑ£G…¿A4ÖE 0 ›;w®Ê˜LfNNŽ““Ó[o½%*ÛK¾i >ÿViOå0 ËÌÌŒŽŽ.--ݶm 88ØÞÞ><<~üØß߀îŸ5kÖË—/çÎ+‘Hž_>·ªú²ê6¨ÎCpWÆÂÂÔÖÖ"¿õìììàAYYÙ?ü ‰á$¸®®ÎÀÀ@ý³“•••P(äóùÆÆÆPrüøq¡PøùçŸ+\—ÍfãóHggçööv55ãÙ¶îß¿¯É¸\nFF†¼$++‹N§kX\% ˇ]•‡‡‡···““‘J°´´Ü»woGG|RÙ^š4 Q‹=z4!!¡¼¼üСCò$:‘³ ܺuËÃÃÃÍÍM>ü122P\\üÙgŸ•——«tGºIYícw6Ulü–Ùü’×W8]f^–]}¬õ%æ6ô›ÿ¾BN©'D333sáÂ…‘‘‘ûöí³´´ ?ž·3k •ÃÄÄjiiiii¹dÉ’ÒÒR|J=¤é9¥MMMIII999¶¶¶¸ÐÑÑqÿþýðx``ÀÐÐPÍ‹ÆñTL\%nnn2™¬··Ïä\\\Ìãñ–/_®ò|KKK“7oÞÀ8ׯ_˺R_Vц¤ó¨`jjŠ ÈÉ“'---qa}}}RRÒµk×ìììð(ÌÍÍù|¾@ €ÛV¨Œ“qtt400¨¬¬„¯ºÕkëíí…_—ZZZð!|± ˆÊX®––ùGjõXXXœ;§z›z]`öìÙDñ0/ IDATÉ“'{zzúúú&''_¸pJ¥ªl/õM£`O•5\\\®_¿~åÊ•øøøòòrø CnY¥ƒ(8+*• ¸té¾õÎòåË“““ëëë•÷çÑMþyçÉ”™?sûy«æÄN7™1Mߦ_ÀÔ<¿‹b˦8þ|ä\YBä*mkJ2Dóálj‰‰€yóæmݺ.ä€?©='\gÖä=†¹¹9NÇ÷.477ïìì„ÇC~±Ô#"-- î9Àçóù|>§g̘±þ7\\\àz^­+¦FÎd2»»»*)--577—ÿœ”ŸŸ¿lÙ2…Ga¼¬žžžŸŸ_QQ §§§ªªjݺuêË~óÍ70nUшt;œííí/^¼#na nww·‰‰‰••USS›Í†+اM›vóæMA ëëë•ç[S§Nݼyó™3gð%qD¸¸¸XYY}÷Ýw†½~ýº®®úP[[Û††¡P˜ššŠ †a\.·¦¦fÑ¢E£kg÷îÝííí—/_í¥¦i”í©²©TúêÕ+Ø«p³Rkkk…°]@ÁYá^¢¦¦F"‘àO³<”••éëëÛSúÈ©j.1˜ÚÁ¶?º èÿ£…Ólû€Âû—&Êô'‰ï=<£m5I‡¨sº¹¹UVVÂã/^ȇ½©='ngÖä=•Jõõõ-))‘J¥b±¸ªª O‡:ý ßRƒÁ`0ð}-¾ýö[YxK¤‘<;;ÛÕÕ544pæÌ™êêjEMLLŽ;†G òx¼†††íÛ·+\K¾lTTTlllXXXWWWdd$þ–š¨laa¡««+ ¢ê½466îÚµK("âëë»cÇŽ 6 ÙRªÐÓÓKOOOLLôõõ533³³³;uêÔ¢E‹lll|||ìììV®\yåÊ•wß}×ÅÅ%""âĉ¹¹¹ï¿ÿ¾³³³Ê€Ý]»vÑh´ˆˆkkëI“&±Ù쀀åÓ `¤Áµk×8Npp0|®øàƒÒÓÓóòò¢¢¢ž<ùOf‹µyóf‡³`Á‚%KT$Q’‰ÆÎžc‰‰Éž={RSS—-[6sæLåö5²=U¶øÀÀüÒª§§·}ûvδaÆäääêêj8›'Ñ.DÎ*55õÙ³gfffçìÙ³ø·õ¸¸¸žž:Ž È¡C‡Fe­ó8|î_öO…2ÉÖÿøMÓCÆÿEùîæ²èÉËšöîV£i†H13úÛð¤Ëy)ÁÚÖ—DD3$$$55nxekk»gÏ('='hgÖ.D#**j÷îÝ7n”H$‹/^³f ”uŽG9x<°/|3€l’±&áĹ#û#µ­Å ˆÅb‹eaaçÀÅb™ššŽ0¹$G¹½ˆš†ÈžÊ5(Oi4ÚøÌ§I…ÈYQ(•+S)ÊDÜÛ‹PébÁ¤"€6‰6ÙÔàjy†aúú¤Ád¨LŠ¡¦¯OîE£ëuNˆ²óWSÏDìÌÚEýôfäSrJMB2!9pà€“““¶µ˜0DEE úq€„D79±mߟ L†a(ŠÉ™D•êË)&“ Ce(†¢2™˜ýªJÛÊ’ü~ù¯ÀŒ¼|mëCBBBBBBBBB¢» øAÆßŒ5dÓ8@y| í<FH;¤‘ÇÒÎã@ ÕÑ’$$$$$$‰ëú±Šhj˜¿Š­~HHH´¹/õH‘ÉdmmmÚÖBDŠƒÂííípÛæQD(677ýq†w/—.]jjj=ÕþC~~þ³gψ~EQ”ÉdµÞcqu5ôööjršÎvf’a0ŠNC§¸ûàW“3fK§:±®–<¼‰ŽÇ@ ü“P(ÄsŽ J?“É$“O DÆ’Ç ßRˆ£GÖÖÖNŸ>Íf‡††Â”€[·n;v ¦Æ¥P(÷îÝÓňäò)'#¶¶¶……… e{{{ãââèt:›Í^»v-žJ“²‰Dêêêš%b±øèÑ£ 666¿þúëáÇßyçAï%44:¦ÎÎN###˜B/((èÃ?,,,tppÏì8Z”––Òh4åV"‘èìÙ³%%%ŽŽŽÐ™®Y³&&&fÔP ««+##ãçŸvvvÎÌÌT²&}C%þþþÑÑÑ É³²²ˆšàÎ;DMãïï·½344\·nž¥RþZb±X*•ÚÛÛ¯[·.00p(ö ù_ƒÈY ÏiLXM6t™E èâ—óµ­ÉhjjŠ·°°hhhذa> (š˜˜Èår999pÃ"¢Ñóèѣϟ?Ÿ6mZsssxxøúõëµq7 "AdÌ¡z rJ="ÂÃÃá.6=úôÓOW¬XoεvíÚÇëšbj–G¥òøëÕœœ>Ÿ¯\033sþüù111B¡póæÍîîîþóŸ5, 9}ú´T*•—œ?¾¿¿ÿÿøÜˆT/.\€}ôѦM›´;÷:qâÄëׯóóóáæk(ŠöõõÃuŒŒ>ùä“ÊÊÊÚÚÚAOÖ°ohQ|øá‡*åøøø•+WþôÓOŸ|òÉš5k”7<Šï½÷*++?ûì3˜×j$J•ˆˆˆM›6ùúúŽçEIÔ ÒY ÏiLþùý£?8K ‘¢±T0Ý‘ûé©i±›´­‰¦$''‚€€www˜Òë‡~@äÌ™3€¸¸¸ï¿ÿNìˆFÏO?ývï»wïfgg“Sj Qé1ˆŒ9TA~Œ|WH+++.—+‰´«‘bDòãǨ¯“J¥Òh4Æb±ŠŠŠvîÜ©Pv`` ´´>ÆÑét///<çQY~üñÇúúz˜> æççoÙ²ϵÿ4ã‹D¢„„„Õ«WŸH·¶¶†……­X±")) ¾]P £££¨¨(66ß̘J¥â›É+\·½½=::ÚÛÛ;00°¬¬ ž†'3ŠŠb0°`EEEll¬··÷TFÚÐét wºԙ)ʼyó Tž@¥Rß~ûmEñôì*ÛK¾iöíÛ§Þž*k¸wï^HHˆ··÷_|ÈÍÍýå—_²²²6nÜ(“ÉÆÌ$#e,œ†.ðšÕƒLiú)* ðx<ÎÖ¹1ëWÿ±òÁsm«F¢‰äÅ‹ .yzz~ÿý÷ð'*•úìÙ³ÎÎN©TÚÖÖ†í$=ñîÍd2u$móąȘCõä”zt¸uëÖüùóåÓOVUU}:00pïÞ½POooïÛ·o‹D¢ŠŠ XÊÎÎ.==ýêÕ«•••xÌtZZš³³sQQ‘O[[›²zÍÍÍ€9sæ¨ÔDþº†íÝ»×Êʪ  `ÇŽ)))/_¾0™L±XŒŸ'îmmm_~ùe@@@ZZÚ‹/JJJ4¿}õ Þ=*ü ¢y°æ (ZPP€aØÜ¹sUžÀd2srrœœœÞzë-(QÙ^òMÃ`0ðù·J{*×€aXffftttiié¶mÛÁÁÁöööáááyyyò½”D‹(;«1rº@Ƀ:‹" "#<¾ §«ƒeH›<Õœ¾vCÛª‘h„Á¬Y³p') Ùl6<^¾|ù‚ ‚‚‚bbb¶mÛ¦š¨|øùóçxœ$É MoÔSCA~Œååå_ý5.ñòò²³³{üøqvvv}}}ll¬Ž(F$÷ôôÄÕ+÷î]‹µeËå²ðƒþYÄÐÐP!ÀC¹¬<))) ßñaÐmeeeVVVGGG\\ÜÒ¥KÝÜܽGõ|ôÑG7nØÛÛ×××Cç²bÅ €P(|úôiLLL__ßܹs?~ìïïÀ?÷Ïš5ëåË—sçΕH$Ož|ïhP¤R)œåãÌš5 Wfxöd2™øqWW×Hrz]¼x1##C,'&&ªÌe•œœ,‹ÿô§??JT¶—&Mƒ£² …ƒíÞ~ûm¨ N§ÑhÆÆÆšd¬%T:«1rZ§¦®ÅÀ¦U ¢ØÀ€¸¿Û¹4pÿ—"ú¬êK·W}¼þ]mëH28~~~¹¹¹4íÕ«WOŸ>Å߉ŠD¢ŽŽOOϲ²2''§÷Þ{Oþ¹]åèÙÝÝÝÕÕÅårÉLŠš fz£Æ˜š{ rJ=Rª««³²²Îž=+?Êšššº»»»»»[XX¤§§ïܹ†Ãk]15r5ÊËd²ìììèèh•I°a…`Ê”)>Ÿ/Ÿ[U}ÙÊÊJƒ1uêÔü±¥¥…Çã?~Û¶m0xhh¨¥¥¥¥¥å’%KJKKñÑqÐ{!‡WÆÂÂÔÖÖ"¿õìììàAYYÙ?ü ‰á$¸®®ÎÀÀ@}8¯•••P(äóùÆÆÆPrüøq¡PøùçŸ+\—ÍfãóHggçööv55ãÙ¶îß¿¯É¸\nFF†¼$++‹N§ƒØ3 @ayâŠËãáááíííääURæÀ–––{÷îíèè€ÏB*ÛK“¦Á!jñ£G&$$”——:tHþ±“DGP鬯Èih²ÚÇîlªØø-³ù%¯¯p:ºÌ¼,»úXêKÌmè7ÿ}…œRO‚‚‚·nÝòððpssÃ_Beff.\¸022200pß¾}–––!!!ð'¢Ñ322P\\üÙgŸ•——«[IäQ3½!2æ<9¥MMMIII999¶¶¶*Opss“Éd½½½ãœ ™H±A–GYùââb·|ùr•ç[ZZš˜˜¼yóƼ~ýZþÓ•ú²ŽŽŽû÷ï‡Ç†††ðí¬¹¹9NÇ7277ïììƽ SSSANžìMåèÉãñàAYY™¾¾þ„{JÔ. Ó"cÕco©GƒÁ`0ø¾ß~û-Œ‹:sæLuu5Š¢&&&ÇŽSÄ9Ίɳ³³]]]CCCÕ(Ïãñ¶oß®p-ù²QQQ±±±aaa]]]‘‘‘ø[j¢²………®®®0ˆ‚ˆ¨¨¨Ý»woܸQ"‘,^¼xÍš5êïqäèé饧§'&&úúúš™™ÙÙÙ:ujÑ¢E666>>>vvv+W®¼råÊ»ï¾ëââqâĉÜÜÜ÷ßßÙÙYe[ïÚµ‹F£EDDX[[Oš4‰Íf(Ÿf``# ®]»Æáp‚ƒƒásÅ|žžž——õäÉ2;°X¬Í›7s8œ ,Y¢"‰Zccã®]»„B!‚ ¾¾¾;vìØ°aÑ]=Ç“={ö¤¦¦.[¶læÌ™Êí je{ªlñø¥UOOoûöí0œiÆ ÉÉÉÕÕÕp6O¢]ˆœÕø;1%ùÜ¿ì=ž e’¬ÿñ›¦‡Œÿ‹òÿÜÍeÑ“—5íÝ­FÓ bfô‡7áI—óR‚µ­/‰:RSSŸ={fffÆápΞ=‹~„„„¤¦¦Â ¯lmm÷ìÙåD£g\\\OONGäСCn­­V òDƪǠ<ž ؾ@6Éh!‹Y,–……†qNœ;²?R[Zi‘òšÃb±LMM‰ba‡]ç¤I“4 fE#Õ…xÈ2€ÇãÁHM.—‹oг“ z¿(ж¶¶ÄápLMMåצ èééÉ¿¥Ø´iSll¬§§§H$‚*3:Ø™•Û ošˆˆ???üIFÙžD5p¹Ü)S¦àË7‚¼õÇ4²N¡ÞYiÅiŒ©Y»©ò$Ü1§UØÓ&ܺzWë哿JC:J¥ EP&CÿñݧÚÖW5:näqÃ0˜CWåòk‡3yòdMFO úººd2™µµµ¼œ´³ˆ<‘1‰H8qN›3òòìÄmN¾¥ •STLF®¼JO1BÆ¢ÎA155Uà“Wù•ü L T*UÃ]¢å—uBˆ¶—×××'—¤à(·QÓÙS¹å©3FŸù4É ¨wVZqc·¡ÒÅ‚IEmm²©ÁÕò Ãôõ)H?‚ÉP™CL_‚­¹üB¡PÔ,›Vvþjê!wù*Dc´ŒIN©IH&$prrÒ¶†¨¨¨q^"LB2ZœØ¶oŽO&Ã0ÅdˆL¢Jõeˆ“É ¡2CQ™LÌ~U¥meIH~¿üWàGF^¾¶õ!!!!!!!!!!Ñ]ü ãoÆ2Èi <>vH#¤ÇÒÈãiçq ᄊhøABBBBB2±¸^ñ¨ë ˆ¦†ù«Øê‡„„D+ûR™LÖÖÖ¦ò'¡PØÜÜ ·³ˆS£ðhÑÞÞ·mE„B!ž»AÞÞÞ!UuéÒ¥¦¦¦ÑPJ‘üüügÏžýŠ¢(“É„k½ÇâêjÐÐDýýýL&“LeB2€ÿV@ó"cá Æ“»~5™Ñ1c¶tªëjÉ“Á èj:­š‘NÒcõCåX©¹Ç ßRˆ£GÖÖÖNŸ>Íf‡††Â”±X|ôèц†›_ýõðáÃï¼óŽ.(F$—çÖ­[ÇŽƒY:)ʽ{÷ <..?ØÚÚ*”ííí‹‹£Óél6{íÚµx^(MÊB$Ihh¨««kBB” (š˜˜Èår999p‡®®®ŒŒŒŸþÙÙÙ933S¡žÐÐPè˜:;;ŒŒ` ½   ?ü°°°ÐÁÁA>³ãhQZZJ£Ñ”SX‰D¢³gÏ–””8::Âÿç5kÖÄÄÄŒº ¨7‘G}þüù´iÓš››ÃÃÃׯ_¯áUüýý£££’gee5Á;wˆšÆßßn{ghh¸nÝ:pà€ÊÏRC2Þ]™L¦vSÊQ(”yóæ444¨¸wï^¨§··÷íÛ·E"QEE,egg—žž~õêÕÊÊJ|ø0110oÞ¼­[·ÂðÖA• ¦¦¦‚œŸÏçÃqšJ¥úúú–””H¥R±X\UUµhÑ"]PLœÉdvww+TRZZjnnޝhäçç/[¶LáQ/«§§çççWTTèé驪ªZ·nú²ß|ó Œ[1cÆúßpqqqppÀW¹UVVÂã/^¨ ]œííí/^¼#na nww·‰‰‰••USS›Í†+اM›vóæMA ëëë•ç[S§Nݼyó™3gð%qD¸¸¸XYY}÷Ýw†½~ýº®®úP[[Û††¡P˜ššŠ †a\.·¦¦fä}ŒÇãÁƒ²²2}}}Mº´ÈîÝ»ÛÛÛ/_¾ ÚKMÓ(ÛSe R©ôÕ«W°WàóÖÖÖ08žDÀ=XMMD"O­DÎD½ƒÒqªšK ¦vð„íÅ.úÿhá4Û~ ðþeD†‰„2ýIâ{Ïh[M’ÁQÙiÚ‘Nåè9±<¶Ž@d|• Ãco©GƒÁ`0ø"Ðo¿ý.¼ŠŠÚ½{÷Æ%Éâŋ׬Y£#Šɳ³³]]]CCCgΜ©®®FQÔÄÄ䨱cx*Çkhhؾ}»ÂµäËFEEÅÆÆ†……uuuEFFâtDe ]]]a!!!©©©på¾­­íž={ ¼±±q×®]B¡A__ß;vlذa¶RFOO/===11Ñ×××ÌÌÌÎÎîÔ©S‹-²±±ñññ±³³[¹rå•+WÞ}÷]—ˆˆˆ'Näææ¾ÿþûÎÎÎ*vwíÚE£Ñ"""¬­­'MšÄf³”O300€‘×®]ãp8ÁÁÁp*ðÁ¤§§çååEEE=yòŸÌ,kóæÍgÁ‚K–¨H¢6$ÅÅÅõôôÐétA:¤r ©î`bb²gÏžÔÔÔeË–Íœ9S¹½DM£lO•->00¿´êéémß¾~ûÛ°aCrrruu5œÍ“h—ÔÔÔgÏž™™™q8œ³gϪÿŒ ˆ”Ž“|î_öO…2ÉÖÿøMÓCÆÿEùîæ²èÉËšöîV£i†H13úÛð¤Ëy)ÁÚÖ—DD–h¤#='–ÇÖˆŒO4VÕcPÏì ß ›dta±X“&M’YN8qîÈþH-ª¤ b±˜ÅbYXXÀ9Ä0`±X¦¦¦D±°ÃƒÃáLž5$ˆŒFÔ(Còä[êqôèÑÚÚÚéÓ§³ÙìÐÐP˜wïÞ=ü4[[ÛÂÂB]PŒH.Ï­[·Ž;“S(üF4¹©ÞÞÞ¸¸8:Îf³×®]‹§&BQ411‘Ëå rrr”·bjYõ÷ Sgg§‘‘L¡ôá‡:88ŒÅ–´¥¥¥4M9…•H$:{ölII‰££#ü¿]³fMLL̨+ @WWWFFÆÏ?ÿìì윙™©þdMú†Jüýý£££’gee5Á;wˆšÆßßn{ghh¸nÝ:pà€Êh:®áNØ`dö](ʼyó Tž@¥Rß~ûmEñôì*ÛK¾iöíÛ§Þž*k¸wï^HHˆ··÷_|ÈÍÍýå—_²²²6nÜ(“ÉÆÌ$CàǬ¯¯‡9çpáPàDá5«™Òô%RT,àñxœ­scÖ¯þcåƒçÚVD#$É‹/.\022òôôüþûïáOD#ÑÈ‹çŸb2™0 2É ¨4ššFªÇ §Ô£Ã­[·æÏŸ¯œ~2==ýã?ÖbZJ"ÅäK—.uuuÅ­ªª:xð |õ¨\§ÂMáe;;;Á7E·±±Á#–/_¾`Á‚   ˜˜˜mÛ¶)]Œ¤,Ñ=ª!;;ÛÝÝ=++ëÆ0®º­­íôéÓ{÷î…÷èíí}ûöm‘HTQQKÙÙÙ¥§§_½zµ²²™NKKsvv.**òññikkS¶Xss3`Μ9*5‘¿.†a{÷îµ²²*((رcGJJÊË—/L&S,ãçÉ{[[Û—_~––öâÅ‹’’Ío_=ðç£G ƒh¬9(ŠÂsçÎUy“ÉÌÉÉqrrzë­· De{É7 ƒÁÀçß*í©\†a™™™ÑÑÑ¥¥¥Û¶mÛÛÛ‡‡‡çååÉç¶$Ñ==='OžLII!j àD¡äAÅ ‘‰_ÐÓÕÁ2¤MžjN_»¡mÕH4ÂÀÀ`Ö¬Y¸“ …l6:Ò)O' >üüùs<ä‰dP”¦¦Qp4ôä”z¨¨¨(//OKKSß½{—ÅbmÙ²E+ZbŔ垞žÎÎÎðØËËëØ±cÙÙÙÙÙÙ e•o /Ëçó\^:CCC(ˆD¢ŽŽOOÏÚÚÚºº:å7|Ã.Ktêùè£6nÜ8gÎ{{ûúúz( Y±b…¹¹¹P(|úô©‡‡G__ßܹs?~ Oðõõµµµ533›5kœìJ$’'Ož„„„-^¼ØÉÉIþU渖Ïqˆ¢¨ü Eüºõõõ aaafff+W®œ3gNqq±š»ˆˆˆðòòZ´hѪU«>|¨á½K¥Ò†ÿF^™áÙ“Éd>û®®®!•UàâÅ‹kÖ¬9wî\bb¢ÊœUÉÉÉ çÏŸ‡•í¥IÓਬB¡Àµ2™ jB§Ói4š±±1þ‘D»¤¤¤DDD¥CÓÜNjêZ lZâ>‘´G ìîã²#—&îÿRDŸUyév¶$Ñ??¿ÜÜÜ{÷î}ýõ×OŸþ'{¼ú‘Nåt¢»»»«««µµµ±±qœ´Ÿø¨4Q£@4÷äòÄ‘R]]••uöìY…QV&“eggGGGV¾èÑRŒHŽcjjêîîîîînaa‘žž¾sçN¸T vS°B@0eÊŸÏÇs«fff.\¸022200pß¾}–––!!!#/;轇CÈ߈……<¨­­E~ëØÙÙÁƒ²²²~øA$566®X±PWWg`` >Á©•••P(äóùÆÆÆPrüøq¡PøùçŸ+\—ÍfãóHggçööv55ãK<îß¿¯É¸\nFF†¼$++‹N§ƒØ3 @ayâŠËãáááíííääURæÀ–––{÷îíèè€/rT¶—&MƒCÔâGMHH(//?tè§§ç°oŠd,¨¬¬d0S§NýñÇ[ZZx<Þùóçá÷0¨³”Õ>vpgSÅÆo™Í/y}…ÓÑeæeÙÕÇzP_bnC¿ùï+¯WÛ:’ NPPàÖ­[nnnø‹$5#ÑÈ (..þì³ÏÊË˵5Ù˜X¨4Q£€!z rJ="ššš’’’rrrlmm~*..æñxË—/×)ÅÔ(¬Œ›››L&ëííÅ39«¿)KKK“7oÞÀ8ׯ_㟮>|˜˜˜˜7oÞÖ­[aˆêËé^†„©©)‚ 'Ož´´´Ä…õõõIII×®]³³³Ãw¢077çóùn[¡2NÆÑÑÑÀÀ ²²Òßß_ýuam½½½ðëRKK >#„/’QËÕÒÒâææ¦áÝYXXœ;§b›ú±³ç˜={6Q¼dòäÉžžž¾¾¾ÉÉÉ.\ R©*ÛK}Ó(ØSe —ëׯ_¹r%>>¾¼¼>èle’ñÇÑÑqÿþýðx``ÀÐÐÐÅÅþ9*P§øç'SfþÌíç­š;ÝdÆ4}›~Póü.ŠD,›âøó‘se ‘«´­)É P©Ôààààà`À¥K—ð½­ÔŒ’êGÞåË—'''×××+/R"!BÁhD2TA~Œˆ´´´%K–LŸ>Ïçóù|ùèùùùË–-ÓÖS#‘bDr&“ÙÝÝ­PIii©¹¹9žn /«§§çççWTTèé驪ªZ·n<ÇÍÍ­²²¿xñûÍ7ßÀ¸Õa”UcüâììlooñâEq cp»»»MLL¬¬¬šššØl6\Áæèè8mÚ´›7o"RXXX__¯<ßš:uêæÍ›Ïœ9ƒ/‰#ÂÅÅÅÊÊê»ï¾Ã0ìõë×uuuЇÚÚÚ644…ÂÔÔT< À`00 ãr¹555‹-á]=ǂݻw···_¾|´—š¦Q¶§Ê¤Ré«W¯`ÏH$€µµ5 Ž'Ñ:3fÌXÿ...ùË_àOCu€ºOUs‰ÁÔž°½øÑá@ÿ-œfÛ/Þ¿ŒÈ0‘P¦?I|ïám«I28x¯«©©‘H$ø«¢‘Œ¼<”••éëëO¸§D­@d4¢FªÇ ßRƒÁ`0ð½)¾ýö[¸†”Çã544lß¾]×#’ggg»ºº†††Μ9S]]¢¨‰‰É±cÇðT¢›’/ÖÕÕ‰¿i IMM…«òmmm÷ìÙå………®®®0ˆb¨e‰îeäèé饧§'&&úúúš™™ÙÙÙ:ujÑ¢E666>>>vvv+W®¼råÊ»ï¾ëââqâĉÜÜÜ÷ßßÙÙYeÀî®]»h4ZDD„µµõ¤I“Ølv@@€òi0ÒàÚµk'88N>øàƒôôô¼¼¼¨¨¨'Oþ“ÙÅbmÞ¼™Ãá,X°`ÉIÔwíÚ% ñõõݱcdž ˆîzìì9˜˜˜ìÙ³'55uÙ²e3gÎTn/QÓ(ÛSe‹ À/­zzzÛ·o‡!I6lHNN®®®†³yÝd¨PÇI>÷/{§B™dëü¦é!ãÿ¢ü?wsYôäeM{w«Ñ4C¤‚ýáMxÒå¼”`mëK¢ŽÔÔÔgÏž™™™q8œ³gÏâ1D#ÑÈ×ÓÓC§Ó9tèЄ[k«ˆŒFÔ(Cõ”ƒÇsûÂ7È&kNœ;²?RÛZ ‚X,f±Xp1 X,–©©©r,,‡Ã™ÒQ(ù°LM 2šúFÑrJMB2!9pà€“““¶µ˜0DEE úq€„D79±mߟ L†a(ŠÉ™D•êË)&“ Ce(†¢2™˜ýªJÛÊ’ü~ù¯ÀŒ¼|mëCBBBBBBBBB¢» øAÆßŒ5dÓ8@y| í<FH;¤‘ÇÒÎã@ Ñ2ðƒ„„„„„dbq½âQ?ÖAM óW±Õ ‰V ÷¥)2™¬­­MåOB¡°§§gœõÁ!RL£E{{;ܶYa¤¿¿ŸÉd*oùL$WÏ¥K—ššš†¡Æ äçç?{öŒèWE™L&\V<WWCoo¯&§ Ïž$$Z„¨ÓÂ7@ ¡|q÷Á¯&3:fÌ–Nub]-y2xCM'Ò(Izìa0 £Mi”!ßRˆ£GÖÖÖNŸ>Íf‡††Â”E¹\îÀÀ ''GÃM!ÆZ1"¹<·nÝ:vìLBN¡PîÝ»åqqqø1ÀÖÖ¶°°P¡looo\\Ng³Ùk×®ÅSib¢ë=zôùóçÓ¦Mknn_¿~½z9$44:¦ÎÎN###˜B/((èÃ?,,,tppÀ÷½EJKKi4šr +‘HtöìÙ’’GGGèL׬Y3ê (ÐÕÕ•‘‘ñóÏ?;;;gffª?Y½=Õàïï­<++‹¨ îܹCÔ4þþþpÛ;CCÃuëÖáY*å¯%‹¥R©½½ýºuë‡b’ÿ5ˆ:mSSS||¼……ECCÆ ðÿ5"ùÄ‚5ÐdC—IQÄ€.~)`0_Û‘ ¢NH4J¼ÃöØ¿gˆŒFdd¢) !ç<žÛÓÓÓÓÓƒ‘ ‘ŽŽxðÓO?½÷Þ{"‘þY^^¾ÿ~x¼gÏžÂÂBx|ðx®v#’ËsóæÍ””e¹L&“þÆ©S§Ž9¢|ΡC‡N:…a˜@ ðóó«­­…r"ƒhx]¼’õë×*W0ò–-[òóóå%7nü÷¿ÿ­|¡‘^PP ,OIIùë_ÿÚ××ÿ”Édg,P@ ´´´\¼xqÏž=ƒžLdO"p;¯]»¶¤¤—Ÿ>}:66VþLå& ’¯]»¶´´EѼóÎ;MMM Eà 2™ìîÝ»íííƒê9º„‡‡ß¹sgÜ.7nc‚BÔiƒƒƒá"ŸÏ_µjUUU•zù²ó7%?•4ß.i½q»åù¿žÍc¤ÈúVÛJiÄ2ò˜BÔ ‰FI¢‘WÃD5Ó •F&šÒàÓfhmÜædàLjÀ78´²²âr¹"‘þI¥RŸ={ÖÙÙ)•JÛÚÚ”_[jK1"ùñãÇ Ô×I¥Ri4Fc±XEEE;wîT(;00PZZ ß|Óét///<çÐH ‚gÙ`2™ò‰‹ˆäš ‰V¯^}òäI(‰‰‰)++‹ŠŠJHH´¶¶†‡‡{yyÅÇÇã_|¾úê«­[·úøø¤¦¦b¿}6jmm [±bERR|» @GGGQQQll,¾™1•J577WyÝöööèèhooïÀÀÀ²²2xNXXžÌ<**ŠÁ`À‚±±±ÞÞÞPùYŠN§k¸6™=G …2oÞ<ƒ††•'P©Ô·ß~EQ<=»Êö’oš}ûö©·§ÊîÝ»âííýÅ_rssùå—¬¬¬7Êd²13‰¦¨ì´‰äÅ‹ .yzz~ÿý÷jäˆ×¬dJ;ЗHQ±h€Çãq¶ÎY¿ú•žk[5PÓ ‰FI¢‘Ww<öBÍtBÙÈj¦4„õ•â¿3nݺ5þ|<ýäòåË,X³mÛ¶±ˆ1žbDò¥K—ºººâ¿VUU}:00pï޽𽽽oß¾-‰***`);;»ôôô«W¯VVVâ1ÓiiiÎÎÎEEE>>>mmmÊknnÌ™3G¥&ò×Å0lïÞ½VVV;vìHIIyùò%€ÉdŠÅbü|8qokkûòË/ÒÒÒ^¼xQRR2$ ¨dØö|ôèQáo̓5EQøgîܹ*O`2™999NNNo½õ”¨l/ù¦a0øü[¥=•kÀ0,333::º´´tÕôù IDATÛ¶m€àà`{{ûððð¼¼<ùÜ–$ZD¹ÓÌš5 ï‡B¡Íf«‘O JÔYÌI‘áñ=],CÚä©&àôµÚVD#ÔtÂAGI…‘ŒÀcÿžQo4y#«™ÒAN©GŠŠŠòòò´´4\"‰:::<==kkkëêê´õBKY1"¹§§§³³3<öòò:v옃ƒCvvvvv¶BÙ»wï²X¬-[¶(—åóù@./¡¡!”Í ¢æºÝÝÝ]]]­­­šÈå£>Ú¸qãœ9sìííëëë¡0$$dÅŠæææB¡ðéÓ§}}}sçÎ}üø1<Á×××ÖÖÖÌÌlÖ¬Yp²+‘HžÇ!Š¢ò+ñëÖ××744„……™™™­\¹rΜ9ÅÅÅjî"""ÂËËkÑ¢E«V­zøð¡†÷.•Jþ\™aÛ“Éd>û®®®!•UàâÅ‹kÖ¬9wî\bb¢ÊTšÉÉÉ çÏŸ‡•í¥IÓਬB¡À˜~™L5¡Óé4ÍØØÿÈ@¢uTvZ??¿ÜÜÜ{÷î}ýõ×OŸ>T>!¨©k1°iˆûDÒ°»ËŽ\š ¸ÿK}Vå¥Û5ÚVD#ˆ:¡úQRyä#ðØ¿gÔMÁÈj¦4DËGJuuuVVÖÙ³gåGÙÌÌÌ… FFFîÛ·ÏÒÒ2$$DS#Ç155uwwwww·°°HOOß¹s'\2ÉdÙÙÙÑÑÑ*“`à Á”)S|>Ï­ª‰AÔ\722P\\üÙgŸ•——ãW'’ !_ÄÂÂÔÖÖ"¿õìììàAYYÙ?ü ‰W¬X¨««300PŸÈÔÊÊJ(òù|ccc(9~ü¸P(üüóÏ®Ëf³ñy¤³³s{{»ššñ%ž÷ïß×äÆ\.7##C^’••E§ÓÁì °!(«}ìàΦŠß2›_òú §£ËÌ˲«õ ¾Ä܆~óßW>^ÿ®¶u$¢N¨f”$y‡í±ÏMÙÈj¦4Do©GDSSSRRÒßþö7[[[yùÇÝÜÜóæÍÛºu«æÓ±VŒH®777™L&¿ÿZqq1Ç[¾|¹Êó---MLLÞ¼yÿ|ýú5þéjHQ¾.dùòå©<¨|ؘšš"ròäÉK—.]ºtéÈ‘#€úúú¤¤¤;wfffþéO‚gš››óù||/$•q2ŽŽŽ•••ƒ^Ö†ßxKK þØ_$#‚‡¿ËÓÒÒÍ« çþ…Éë¨ÛsHÌž={îܹDóiÀäÉ“===}}}“““¡YT¶—ú¦Q°§Ê...ׯ_ÿðÃãããñX•­L¢]:-•J þÛßþ¶eË–gϞ͛7O½\÷ùç'SfþÌío_üG¿?[/ r‹ÿë’D@Íó»(±lŠãÏGΕi[M’Á!ê„jFIõ#¯v=öEÙhÊFV3¥!‚œRˆ´´´%K–LŸ>Ïçóù|üº››>…zñâ…Êï×ZQŒHÎd2»»»*)--577ÇW4òóó—-[¦ð(Œ—ÕÓÓóóó+**ôôôTUU­[·žCdo¾ù|%º.ǃeeeúúúøÃ‘|ä8;;ÛÛÛ_¼x΢` nww·‰‰‰••USS›Í†+اM›vóæMA ëëë•ç[S§Nݼyó™3gð%qD¸¸¸XYY}÷Ýw†½~ýº®®þ{ÛÚÚ644…ÂÔÔT< À`00 ãr¹555‹-á]=ǂݻw···_¾|´—š¦Q¶§Ê¤Ré«W¯`¯H$€µµ5 Ž'ш:-îÙjjj$‰¿¿¿z¹îSÕ\b0µƒ'l/~tA8ÐÿG §Ùö …÷/#2L$”éOß{xFÛj’ Q'T3mP9òN,­#¨1š²‘ÕLiˆ ?FƒÁ`0ø"Ðo¿ý®! IMMýàƒ(Š­­íž={tD1"yvv¶««khh(àÌ™3ÕÕÕ(Šš˜˜;v @åñx Û·oW¸–|Ù¨¨¨ØØØ°°°®®®ÈÈHü‘ŽÈ ………®®®0ˆ‚èºqqq===t:AC‡á‹3ˆä#GOO/===11Ñ×××ÌÌÌÎÎîÔ©S‹-²±±ñññ±³³[¹rå•+WÞ}÷]—ˆˆˆ'Näææ¾ÿþûÎÎÎ*vwíÚE£Ñ"""¬­­'MšÄf³”O300€‘×®]ãp8ÁÁÁùË_|ðAzzz^^^TTÔ“'ÿÉìÀb±6oÞÌáp,X°d‰Š$j»ví …‚øúúîØ±cÆ Dw=vö LLLöìÙ“ššºlÙ²™3g*·€¨i”í©²ÅàG@==½íÛ·Ão6lHNN®®®†³yíBÔiSSSŸ={fffÆápΞ=‹['’ë8ÉçþeïñT(“ `ýß4=dü_”ÿçn.‹ž¼¬iïn5šf€C0£?¼ Oºœ—¬m}IÔAÔ ‰FI¢‘wbylÈhDF&šÒA9x<°/|3€l’Ñ…ÃáLžŠF†+ å³Òðx<—ËÅ7ŃÙIÔÄ*@Pmmm544´²²R&‡Ã155•ßSb``@OOOþzÓ¦M±±±žžž"‘ª4BˆìI„vfåö›&""ÂÏÏ’Q¶'Q \.wÊ”)øÖKAÞúcŠY§Pã`šR…/„Dr·sjAÅ®D*F…< ·CÌiö´ ·®ÞÕÄzù¤¹ÒN£R)¨E”ÉÐ|WG—]ê¸‘Ç ¢NQ?J*Ô3Ö#àÿCæ ÊSš„çà´9#/ÿÈþHÜæä[ê1dÐHvÝÄÐÐpæÌ™#©(ÐE½Aˆ®K¡PäƒO•"¦¦¦ |ò*?£Ò05&•JÕp—heC½NÓ××­%)ÿßÞyÆEut |¶Ã.] PHÄJ ’ׂ Qш%FEÀ†Œ"±â#ŘȓXƒbˆˆš†Ç†"EPz/KY¶Ü½÷ý0ñf³»w]Š€Éü|XfçΜ){æÌÜ33ÝPŸïÅö¢jªúTLAÑtf2™ÝcO#ÞŠ å tg*Ux/‡ß€Ñ¹" #$mSƒ©©ÇŽM‹&‚Å¢aÍ!Å¥Ç EÓÛQÝ Õ7þ»ûéX¥©ï»‹Ljâ½$$$ÄÒÒ²§¥xoðññyëË¢w²ÏkÃÇÓ®R‚ÀqBŠIÅ,\Â’bB*8@ŠKqÇ¥RQeÁÍžø÷ò7Ljcq=-@ Ñ{y»ãò¿y× '§nUr÷€ê¹@•Ü= zîP%w¨ž»Íû~PŽ?xŸ8wíA3QEkÓõtQrÔèйÔE*•*½öÇñ’’ò¦‰î‡J0ªð.¤¢¢Û,‡@ ¨¯¯ïž¼Tpâĉ®—••Eõ-ìp¯÷»È]Š÷æ(¥úè$Wïæë|PõÁG]ËòؤGoÑËPa´k”lnn.))A—Ou!Šce»†E´JÝ)vîÜùøñã~ýúUVVzxxÀ+!………ÁÁÁ†††yyysæÌñóóë%‚Q…ËráÂ…]»vÁËÀi4Úõë×ax@@ù`bb’ ÷lCCC@@—Ë­¬¬œ9s¦§§' Çq|Ë–-|>_(¢££b Ê"‹=<<† ²yófÕyA<<< bª®®æñx<àææ¶pá„„ssó·0ÙRRR˜L¦­­­\x[[Û‘#G’’’,,, 2>}z7ôŠšššˆˆˆgÏžY[[8p@uduú†R\\\|}}å.$ŒŒ¤j‚ßÿªi\\\à±wgÖ¬Y>>>Šy‰D"‰Dbff6kÖ¬ùóç·§>ÿL•C{•ÉûE¹°pW*Á16W”Óš ÀÈž–Ѩ̪Q’jäݹsgvvvŸ>}^½zåíí={öìž(Í{‰¢ +Û;,"“ºSx{{ÃYTM°páB¥áààà)S¦Ü¿íÚµÓ§OW>>™™™ðÁk×®ùûûOœ81$$D©÷ —ËUó$l@Ý7º6lØ06›——§4N·µµÅqœ¼ž]i{É6͆ T×§Ò®_¿¾lÙ²‰'îØ±pôèÑçÏŸGFFÎ;W*•¾³ @´Eåеñ{¯Ëë1í ÀKpQ›°©©©nÉP¿ÙNÓïf÷´hµPaP’T#/yÿTII ¼¡J5ÕXÙÞa™Ô]Ã… FŽ ¯Ÿd³ÙVVV¤5 *++{ƒ`*ÂÇ7dÈòÛ›7onÚ´)))I©“Öž={–.]ªøluu5†aä¡è =&L˜0jÔ(777???///*§ ¥ùÖ××ïß¿?,,Lö6Ay©CTT”]dd䯿þ ýªËÊÊ:4þüÀÀ@XƉ'^¼x±­­íÚµkð)SSÓ={öÄÆÆ¦§§“>Ó»wï¶¶¶NLLœ6mZYY™b½zõ ðñÇ+•D6_‚ ãããW¯^–““())‰Dd|h¸—••}ÿý÷®®®»wï~ñâERR’úÅW UŸQÁƒÞ@e«ŽãñññA :Ti„’’’èèhKKËAƒÁ¥í%Û4™™™¤ý­´>S âÀ¾¾¾)))^^^www333ooïcÇŽÉöFDO¡T9@ÔW&ïIwŸ~Ð&ÆÚDXSKk}MU9‡©©«ýµ§EC¨… óà­£¤ÜÈ ˆß¶m[vvö{êÂÔýtX¨9,"Ç.àÚµkiii?ýô2cÆŒ£G2™Ì‚‚‚'OžôÔ RQ0ªpò³£££©©éÇ£¢¢rssýýýeŸ½zõjyyù—_~©ø,|!E¾áp8ä+ª¶¶¶ªª*‡ÔÔTKKËÉ“'+vhª|ÃÂÂV¬X!÷~_E^ê°hÑ¢¹sçÌÌÌrss¡òZ¶lÙ¤I“àÉ“'~~~C‡}øð¡‹‹ €|Ýoee•““3tèP±XüèÑ£-[¶ðx¼Ï>ûÌÒÒRqé Þq-{Ç!|‹G®1ùæäääååEDDèëëO™2åܹs—.]²±±¡*ÅŠ+S§N½wï,Ñ[‘H$ÐÊ'±²²"…¡ê3ª)))!?×ÔÔtæN¯ãÇGDDˆD¢-[¶(½³*44T$ <8&&†(m/uš†Di 4 ºáÚÚÚBI¸\.“ÉÔÒÒ"_2 z¥Ê´S™¼/ÜyZÄPÚ*à„P(jnäW­ ¸ñ<‘k•qââÔ¥³Çô´Œˆ·Ce¨%G^@mmmMM ŸÏùò%ºIQ:¦Ô‘IÝY222"##9";ʺ¹¹.\¸ðé§ŸŽ1¢“>©](˜Šp===;;;;;;CCÃ={ö¬Y³îòH¥Ò¨¨(___¥—`Ã[[[µµµ---äݪ=zôÊ•+çÏŸ¿aÃ##£eË–©“ozzzff¦®®îíÛ·‹ŠŠšššbbb¼¼¼Tä¥ä+Ù‚Â?Æ0 ¾ë˜ššÂ©©©üñG[[ÛË—/¡üôéS6›­ú÷ill,ZZZ´´´`ÈÞ½{Á7ß|#—oee¥––iGZ[[WTT¨H™Üâinn~ãÆ u àóù²!‘‘‘\.¨Ñ7¨puu•۞خÇeùôÓO'Nœhii ER$$$ÄÈÈ(00°ªª Î…”¶—:MCBÕâ;wîܼysZZÚÖ­[e§ˆÞ•ríT&=]uI}üÐÜ®’.Ò¤?2éõ©ºª}G£šÆò»¹I¸¿ýï2©ß ¨Ì£$ÕÈ»råJÀ¥K—¾þúë´´4¥ã2‚¤c ]Ã"2©;EaaáöíÛ£££MLLdÃétº»»»»»;àĉr‡Qô `TáJ1b„T*mhh or¾téRSSÓ„ ”Æ722ÒÑÑ)..†~ ¯_¿&_]Ý»woË–-€aÆ-Y²º¨ª“¯……EPP  …®ÚªÈ«óèééa¶ÿ~###2077wûöígÏž555%O¢000hiiimm…ÇV(õ“±°°€Ã9\êVL­¡¡¾]***"-B¸°a˜R_®¢¢¢#F¨Y:CCÃ~PrL}»úÆ»ã£>¢ò÷€hjj:888;;‡††þüóÏt:]i{©n¹úTšÀÆÆæÜ¹s§N NKKƒstdU/J9È¢Ž2y/øå÷GÚ>ã77MýØ¿ŸÎ}Xš[ù€;ÙWq`"©¶Å³oHݼrjOKŠx TæŠQRõÈ;a„ÐÐÐÜÜÜönRú·Ñ ÐÞaùRwŠÝ»wÃ3ZZZZZZÈm¹ä‡;wîˆÅâ·ÚRÝ&UxIIImm­\")))²¯“âââÆ/7&Ÿe03fÌHLLÔ××ß¼ysÖ¬Y0Έ#ÒÓÓáç/^ ±gΜ!=_•æûÁÌ~ƒ¹¹9Ü­"¯Îcmmmffvüøqèq }pkkkuttŒ +++á6 ‹>}úüöÛo†%$$äææ*Ú[ººº ,8|ø0¹%Ž ccã+W®ñúõë§OŸBjbb’——'ÂÃÃI‡`@ff&A|>ÿÎ;ööö,5Ußè|õÕW'Oží¥¢iëSi ‰¤  ö4€X,ôïß_ÎmÑSP)YÔQ&ï7_%±u«š—ü,64´üÈl áÆILJ´ ¤, Ñõ{‡{ZLÄÛ¡2¨FI@1ò655Á©©©,«g—BÞ : Ú;,¢UêN‘™™™™™Iž5qþüyèž••¥¯¯_WWwäÈ‘îwü Œ*<**jÈ!€Ã‡gddà8®££³k×.Òµ©©)//oÕªUryÉ>ëãããïïïééYSS³råJråxÙ²eáááp­‰‰ÉúõëaxBBÂ!C U¾TPåÕy Æž={¶lÙâì쬯¯ojjzðàA{{ûL›6ÍÔÔtÊ”)§N3fŒÍŠ+öíÛwôèÑÏ?ÿÜÚÚZ©ØëÖ­c2™+V¬èß¿¿††Fee¥«««b46› = Ξ=[WWçîîð_|ñÅž={Ž;æããóèÑ_7;”——/X° ®®nÔ¨QcÇ*¹DíåË—ëÖ­†9;;¯^½zΜ9T¥¦ê½õëׇ‡‡?þÃ?Tl/UÓ(Ö§Ò …ðM+ƒÁXµjt1š3gNhhhFF´æ½“ö*“^Nè—Í>}"Š…DóÃâÂ{™·|\¾acÿ(çNEm)¯ ¼¾ÅÞÛO sïiyª 2¨FIª‘7  ¾¾žËåb¶uëÖvm(GÈA5V¶wX¤mÚ{°Á{5IWA¼$OnÕæ}?|´²§¤R‘HT^^nhhmˆP^^®§§§è [WW§©©Iå#Û±|óêÂJ†; eo¥ijjÒÑÑðù|òPzȤF ÞKBBB,--{ZŠ÷Ÿ·¾@ z'û¼6|<í!%'¤˜TÌÂ%,)&!¤R€¤¸'p\*UÜìiaˆ/süˆ8×Óò @ ½—·;~ ÿ›w rrêP%w¨ž»TÉݪçnUr÷€ê¹ؼOÉA´9~ ñ~qîÚƒf¢ŠÖ¦ëé¢ä¨Ñ# s©;KsssII‰ÒÛ***àéÅ=‚T*-++S?¼ ¡*¸@ ¨¯¯Wñ Žã%%%­­­ïL48qâDaaá»H9...++‹ê[X:¸×û]䮂††u¢©èÌÄûE7(ºžâêÝ|ª>øH¢kY›ôèí z*Fº·Ž’² Ý…t‰ùV©;ÅÎ;³³³ûôéóêÕ+ooïÙ³gÃð†††€€.—[YY9sæÌî¿=qçÎ?îׯ_ee¥‡‡¼«BE¸,.\صk¼„œF£]¿~†Ÿ&&& rÏRÇñ-[¶ðù|¡PˆŽŽV<Š¡°°088ØÐÐ0//oΜ9~~~ªåˆÅb!C†lÞ¼Y6ÜÃÃ*¦êêj¯Ðsss[¸paBB‚¹¹yžcM’’’Âd2¯°jkk;räHRR’……üÝNŸ>,໣¦¦&""âÙ³gÖÖÖP™ª3¿___¹ É###©šà÷ß§jxì‡Ã™5kyK¥l^"‘H"‘˜™™Íš5kþüùí©Ä? *å@¥èÔQb½Ÿraá®T‚cl®(§5€‘=-¢PtT£$U§í°ÆF(š TÒ^LêN±qãFx`íÕ«W£¢¢È>}àÀ‘#Gúùù ‚ ØÙÙ >¼;óöö†Çë]ñ(´àààÉ“'§§§ýõ×ð^«NÊÙ.V¬X1oÞ>>pÚZZZêíííèèL:±üøãK–,™6mZxx8ù®­´´ÔÓÓsÒ¤IÛ·o‡« rTUU%&&úûû“‡Óét¥ùVTTøúúNœ8qþüù©©©0ާ§'y™¹OfûTÉ! IDATf&|ðÚµkþþþ'N QêiÃårÕ< PtæF£ 6ŒÍfçåå)@§Ómmmq'¯gWÚ^²M³aÃÕõ©4…ëׯ/[¶lâĉ;vì=zôùóç‘‘‘sçΕJ¥ï¬…JÑQ)±÷…×åõ˜v`‰%¸¨MØÔÔT·d¨ßl§éw³{Z4„Z¨é¨FIªNÛ{4öû…¢Ù ºQÚ¥1IÝYâãã·mÛ–M¾A¨®®Æ0Œ¼‚dÀ€=èÒwáÂ…‘#G*Þ‹)>nܸ!C†ßÞ¼ysÓ¦MIIIJ´öìÙ³téRÅgU|„ £FrssóóóóòòRtº`³ÙVVV¤ %*++UËS__¿ÿþ°°0Ù[Õ$**ÊÎÎ.22ò×_…~Õeee‡š?~`` ,ãĉ/^¼ØÖÖvíÚ5ø”©©éž={bccÓÓÓIŸéÝ»w[[['&&N›6­¬¬L±Æ^½zøøã•J"›/AÆÆÆñññ«W¯ ËÉÉ”””ˆD"2>4ÜËÊʾÿþ{WW×Ý»w¿xñ"))©½• ˆbgV“$¼ÊVÇããã ‚:t¨Ò%%%ÑÑÑ–––ƒ ‚!JÛK¶i233Iû[i}*¦@Ä|}}SRR¼¼¼îîîfffÞÞÞÇŽë@¯C¼ T++*(§ÄÞ’î>5ü MŒµ‰°¦–ÖúšªrSSW:ûkO‹†P #Ý[GIÅNÛaý¯E©Ù Úü€¨©1ãGg©­­­©©áóù/_¾„K#ðÕéPÁápzêõâµk×ÒÒÒ~úé§·†;88ŸMMM>|•››ëïï/ûìÕ«WËËË¿üòKÅgU¼­­­ªªÊÁÁ!55ÕÒÒròäÉŠÉŒ3Ž=Êd2 ž|èââ _÷[YYåää :T,?zôhË–-<ï³Ï>³´´T\/‡w\ËÞq_$‘k d¾999yyyúúúS¦L9wîÜ¥K—lll¨J±bÅ GGGÀÔ©SïÝ»KôV$ ´òI¬¬¬ 0ŠYMJJJÈÏ555¹Óëøñã"‘hË–-J¯Æ ‰Dƒމ‰!JÛK¦!QšFƒî¹¶¶¶P.—Ëd2µ´´È— ˆžEµ²¢R€ŠJì½àÎÓ"ö€ÒV‘'„BQs#¿jå¸PÀç‰\«Œ§.=¦§eD¼ª‘Nõ(©´ÓvXcÿk¡2¨¢¾Æ@&ugY¹r%àÒ¥K_ýuZZ‹Å‚Ãmkk«¶¶6 ¥¥Eý+F»ŒŒŒÈÈÈ#GŽÈ ÿTá$zzzvvvvvv†††{öìY³f ÜýJ¥QQQ¾¾¾J/ÁVQðŒ=zåÊ•óçÏß°aƒ‘‘ѲeËäwss\¸páÓO?1biš+•'===33SWW÷öíÛEEEMMM111p)QHwÙ‚Â?Æ0 ¾ë˜ššÂ©©©üñG[[ÛË—/¡üôéS6›­Ú¬766---ZZZ0dïÞ½à›o¾‘Ë·²²RKK‹´#­­­+**T¤Lnñ477¿qã†:ðùüˆˆÙÈÈH.— ”uf5Ótuu•Ûž¨æƒŠ|úé§'N´´´„")bddXUUçBJÛK¦!¡jñ;wnÞ¼9--mëÖ­²ÓND/A…²¢Rtª•Xo&õñCs»JºHkþȤקêªjôjËïæ& àþö¿SȤ~/ éTŒ’T¶Ãû߉ ³ªQ@;52©»† &„††æææÚÚÚéèèCwˆ×¯_¿‹Ã%TSXX¸}ûöèèhu•2bÄ©TÚÐÐ@Þä|éÒ¥¦¦¦ &(¯¢à÷îÝÛ²e `ذaK–,.ªrÓétwwwwwwÀ‰'I‘•ÇÂÂ"((† …B‡£b5·½èééa¶ÿ~###2077wûöígÏž555%O¢000hiiimm…ÇV(}õlaaçp©[0µ††øv©¨¨ˆ´áÂ6†a¤W¨,EEE#FŒP³t†††?ü ü˜zˆlgV3Í.ä£>¢ò÷€hjj:888;;‡††þüóÏt:]i{©n¹úTšÀÆÆæÜ¹s§N NKKƒstdU/DNY©Ptª•X¯å—ßiøŒßÜ4õcÿ~:ôa hnåîd_Å €‰¤ÚϾý!uóÊ©=-)â-Pt*FIÕ¶g5ö{„ ³A…ùÑ.|©;ESSüššÊb± úf03fÌHLLÔ××ß¼ysÖ¬YÝ,ØîÝ»áa------ä–Uªð’’’ÚÚZ¹DRRR d_'ÅÅÅ?^n®F>«¢à#FŒHOO‡Ÿ_¼xA.Äž9s†ô|%…¹sçŽX,V4@eåùàƒf¿ÁÆÆÆÜÜœ<¤óX[[›™™?~zÜBÜÚÚZccãÂÂÂÊÊJ¸ƒÍ¢OŸ>¿ýö†a ¹¹¹Šö–®®î‚ >Ln‰£ÂÆÆÆØØøÊ•+A¼~ýúéÓ§ðglbb’——'ÂÃÃI‡`@ff&A|>ÿÎ;ööö,µÒÎÜkùꫯ***Nž< (ÚKEÓ(Ö§Ò$IAAìÕ±X èß¿¿œÛ ¢7 §¬¨ Pb½Ÿ›¯’غUM‚ŠK~›Z~d6 pã$&%ÚR–†èú½Ã=-&âíPtT£$ è´ï—Æî ¨0T˜íÒh•ºSÔ××s¹\ önÝJº®ûøøøûû{zzÖÔÔ¬\¹²ûW©333333É7Ο?}ƒ¨Â£¢¢† âáá8|øpFFŽã:::»ví"=P›ššòòòV­Z%——ì³T_¶lYxx8Ückbb²~ýzž0dÈèDž••¥¯¯_WWwäÈòÍ •<gÏž-[¶8;;ëë뛚šy(¼„ª\$8Ž—––r8Ò‘†Šºº:===Ù½)B¡Á`ÈN”çÍ›çïïïààÐÖÖEê$ª;³"½°3+¶Ù4+V¬˜1c9“Q¬Oªø|¾¶¶6¹—€aXkk+Ùúï”^XɽŠÎ++H/¯çðøHši’D„ šÄü*Q]© ¾L°Äi]ayΣWé.“N§ábÇð’LÖëOzZ^åôòJî6¨F:ˆêQR.¥ÕsPÝ(ŠlÞ÷4›#ŽÅ}´’¬s´JÝ)h4šŠm¶j¶MoƒÃá(Þ¯Ñ.¨ ®z›&FSº™¬óòt===¹Òx•µ¨o‚T NWó”hÅŠRz#€ÅbuÕ+lÕù½@±½¨š†ª>SP4™Lf÷ØÓˆ·ÒƒÊ¡;á7`t®ÃIFÀÔ`jê±cÓ¢ ‚`±hX3FHq©„À1‚ÅBgÑôv¨F:ˆú‡ü4vïAu£¨2©ˆ÷’KKËž–â½ÁÇÇç­/ˆÞÉ>¯ O»FH Ç )&³p KŠI©à).Å —JE•7{ZXâßËß?"ŽÅõ´<@ DïåíŽ0@ Ptˆ@ Ñ)þZ¥F^@ D`6x/Ð××G§® @ àÏUꆆ†ž•@ xOA¾Ô@ D§@&5@ Ñ)I@ @t dR#@ ™Ô@ D§@&5@ Ñ)I@ @t dR#@ ™Ô@ D§`Êýq,NÇ6x/x Þ!¨e@ Þò&5Ào…»êg¢~<©HDYY™ŽŽŽŽŽN'e:qâÇ›7ožÜç÷…'Ož°X¬?þXýGÚUd‘HT]]mllÌf³Û%XÇZ@D]]@ 022ÒÔÔT”YÙâSʼn%bÑ¢Eí’¿«èX§êpµ#øÇ£Ä¤æi( TÍÉ“'ù|>ŽãC‡ýÏþÓ™  Å#û¹3`Æd¶»\K?<<ÜÀÀàèÑ£ê?®~‘:tñâE‹°±±Ù°aCÿþýÕÌ¥-+‹cccÏŸ?ßÖÖF§Óq×ÕÕ=þ¼ 9e‹OçÊ•+=hRw Su¦Úß;¤Réýû÷3228Î_|ahh(ûmNž©èª‰4ŸÏ¯««ûðÃi4šÜW%%%<¯“Y º‚ ÞQ{öìÑÖÖöññé|R†•––š››w>)D—ÐÚJ++£›™áÑÓ²¼+˜7o=úÅWZm-ñ÷q £—–âÿšßˆKKƒÕ®$JKKO:5mÚ4__ߺººŠŠŠ.’­Ëð÷÷¯ªªŠížô9B§¿+'u''§ùóç÷íÛ766ö§Ÿ~úí·ßÔÚÛ²€ï¾û.))iöìÙîîîÚÚÚEEEªy§Åï):SíïŽ qìØ1===@FFƶmÛŽ?>`À€Î${ëÖ­;vÌœ9SKKK$É~Õµ“g*ºd"½~ýúÇ÷íÛ7//oÆ nnn0¼¶¶vñâÅZZZ¥¥¥_~ùe@@@WˆüaðàÁl6;++KȉN2Û Õƒ{÷îýïÿ[[[‹ã¸ƒƒÃåË—;ø[‰‰‰166Vÿ÷{òäÉÀÀ@ønŠN§Ãðõë×ß¹sgàÀeeeþþþ .„á‹/NJJ"777ÏÌÌìÒt Ë–i%&²BB„!!m=- %"˜:UgÔ(,2RC/ÖJJú«ó˜›ã™™|€PH à>{Æ03ó²ß}×:nÖ3BS 7x0­¶~Æ¥¶¶ÂM›°‘#Û›Ž–§'nlÜtㆪH xóS+¾zÐ++57ndÞ¿/6¬å—_þiñb–LŸÇÍÍù™™îúõÌ;wðéeeBñ›ßÈ?%&u‹°}±²²Çñ††‚ úõëׯ_?^QQqäÈ‘çÏŸÓh4‡ÀÀ@==½Ï>ûìøñã;vìàp8ÑÑÑÙÙÙ<o„ Ë—/W_AGFFfgg×ÖÖ>|éÒ¥~ø!ÀÛÛ{ðàÁÁÁÁ€µk×öíÛwûöígÏžÍÏÏÇqÜÓÓ300pÈ!¥¥¥Jóõ÷÷711±µµ=s挖–ÖÆŸ?~æÌ™~ýúÁr)櫘þŽ;ôôô”V‚RÉ•räÈ‘û÷†~ðÁ€üQ*•®^½~«¯¯°°°P¿¥ÚÛ²¥¥¥ÉÉÉfffëÖ­ƒë|r9Þ¼yóرc<ÏßßðàÁÙâË’——÷Ÿÿü§ªªj„ ‰DéKƒìììØØØ§OŸòx¼åË—O™2P´µ:û›ƒƒÃ©S§h4Úš5k>ûì3¹‹ŠŠ¢¢¢òóóû÷ïïïïýUÅ€Eªöw ŸÏ?tèЖ-[º0Í›7oV­ZE:ù@zÿäY–ýû÷éÝÅ‹CCCI“zëÖ­aaa---ÿ÷ÿgooߣ’¾—8;;gggwÕƒ/_¾Ü»w¯››ÛÞ½{+++‹ŠŠºHÒ.`áÂ…ß}÷\`PPœ»Þ¸qÃÓÓsöìÙð÷ròäIÇaœðððæææn–VêëiÉÉ,MMâ—_ØÁÁm oqz ß|ËÿròdË›ÚáášÍÍŠ¡ÑØHûßÿšàzÑ+©ñ¾}[.]¢562ž>Õ ÕvrjJM•ŽÑ®Dšþ÷? rÑJÛÙ™^\Ìó{k|õ!´´Ú¶ne_¾Ì¼sG6¼åäIð¦U4ÃÃioú¼0(0À¼qCËÓS2{6ñ÷1埇’Šnbªÿäâ1ÂÄÄäÎ;¾¾¾ùùù0P,?xð`úôé¾¾¾ÖÖÖ€òòò'Ožœ>}ÚÎÎŽÅb…„„äää¬Y³ÆÁÁ!..®]ž céÒ¥›7o¾wï¹<\RRR]] ?———×ÔÔìííõôô¸\®§§ç€Äb1U¾åååwïÞ½råÊ!C BCC“““­­­Ÿ>}zýúuª|åÒ‡éTVVRU‚RÉ•bccSRRòÇZZZȱ¿¥¥åäÉ“ãÆ›6mšú•ÖÞ–}õêA£FR|o©®®>~üøÈ‘#óòòâââÈj„Å—cïÞ½ååå€úúz¥ >|¸¸¸xçΫV­"—Z•Ö˜:ûÛ•+WFU[[{ðàA¹ì„BaHHŸÏß¼y3FûöÛoáX¨T ÐÑj§°ÙìÿýïЖ¥´´tÓ¦MsæÌqssûá‡$‰â³JãüôÓO·o߬]»6&&F6¾Üäyä›õ•ÈÈÈ•+WÎ;7,,ìÕ«W0ÐßßïÞ½W®\Y²dÉêÕ«_¿~}ùòe77·ÀÀ@²{øûûoß¾=))iÉ’%îîî0_9ŠŠŠgÏž½jÕ*ÒËÎÎÞ¶m”<--MiͯJ  ?·µµÅÇÇÃE--­™3gž>}Ze#@@@Àرc-,,–.] ›ààÁƒ?®­­µ··¿{÷. ''gÖ¬Y¦¦¦ãÆ»ÿ>|ðÞ½{‹/6776lعsç”>HR\\Œã8TàfffãǧÊàìììããsâĉáÇ?þÅ‹?ÿüó°aÃfÍšEÚâÎÎÎK–,9}úôðáÃGŒqåÊÅ¢)[MHÍ`bbR__ßÚÚ ÿe0,‹ÅbÿòË/›6mjW²ÝÃùólsséòå¢âbú­[®n„…iÚÛëäæ2à¿GŽp|}¹€œƬYÚ¦¦zãÆéÜ¿ÿgdggí%K´NŸæ ª›•ÅàŽ«ca¡·t©VvöŸ)df2'LÐùðC½À@®››–««6 Wš "W¯²ž=c¬X!’ Àb 3~ù…³iÓŸKì11œU«D¤éØK' L¦ÔÊ ûä‘§g[XJ5wï†ß0rr´gÍÒ35Õ7Žyÿ>@3,LÇÞž‘› #pŽáúúxË—sa 7 @gìX= ­¥KÙÙƒ™Ókkuìí™wïÊŧh-X gn®;l˜æ¶m´7/!µµ–,a]º¤3z´öäÉÌG”ŠOhiá––J*÷M«0Š‹9¿üÒö¦Ïão~#¸‰ ­¾¼ùüƒQfR‹0Õrñ™Læwß}7jÔ¨ÂÂB8ÂÝ»w¯²²rܸqÞÞÞ&Lpqq!#èU«¡½ƒ±qãÆ˜˜˜´´´ÈÈH€“““‘‘‘––ÖÖ­[-,,Áܹskkkcbbètº——l¦7æççŸ;wnÇŽÐáXîAÙ\Ægaa‘œœzÄ9|¸c…Ò úù)ºYsNžÄ>ûL]÷ë÷%&µÃUÿ)>¢­­½{÷n‚ öíÛ×ÐÐ_ 2D.fŸ>} Ý #XZZh4š………D"©««SGhÇ;æååµdÉ’¢¢"¥jŽ Õùöë×OSS“ÍfÓétSSS6›-»©½ù*VB»RÐÐÐppp(--ÍÍÍMLLtuu…áùùù·nÝš6mZ{žhoËBÃ÷áÇT Á]DšššªËòøñc€•••Š84Íßß_KKkïÞ½¾¾¾/_¾*kLucAttt444Ðy†\C…TUUNŸ>½xñâóçϳÙl>Ÿ¯T Љj§hii­[·®¡¡!::š T=oTgРAººº€±cÇ’‹»¥“gЛæà833“QZ*þüs¹DûöI\\0[[|Ð æÍ›éGZZ‡#qq!ä~b))ôÒRñœ9âÅ‹»wúúœãÇTúç×tzK|¼`ÿ~ÜȈj•Z5ì‹ÅÅB…>ÏJLd'$´*üFþ‘(1©%®úOiB4ÍÕÕuòäÉ8ŽgeeA»YÅÊ%4ÅÊÊÊà¿•••t:Žåo%==ýìÙ³Ó¦M»xñ¢ìW†ø|¾Ü¶*Ò{Gù*5(+AE J™4iàСCS§N…ššš¾¾¾pˆjímYKKK&“™ŸŸ_ûfSE‡éÓ§¾ÕÅq\®uHbbbÜÜÜòòòàše{kŒŠÒÒR 0ǃƒº««ëå7À÷Šb€NTû»fܸqiiiwÞø·©3_íØœVqòÜ{æ<Š„„„\¸paÍš5^^^b±¼iqrE¿©©©oß¾ª‹ü/Çñ°°°1cÆ ><''G©¢+))DDDØÚÚ:tˆÃáÔÖÖÒh´ÿüç?ººº>>>S§N}úôé[óÒÓÓûõ×_wíÚ…ãøÚµkkjjTänff¦¥¥¥¡¡Á`0 ¤¡¡¡­­-— —ËÀ½r³R±¥êÓ§ÏØ±cCBB‚ƒƒ¿ÿþ{YÝuíÚµmÛ¶ÅÇÇËM0 ݺuk¯š~“œ9ÃÖÔ$6mÒôðà 4nK¥ IDAT€–À°XÀÕU\VF¿u‹yîÛÉI¬«K””К¶¶z‡ip8 ¶öO³¡_?¼o_€ã ,LsÌáÃusr°• a=dˆT.w ’\¾Ìºu‹™–ÆZ½šwêûÆ VD„ù-†ÐPÍ­[ÛÈÚÕ×'þþÂ~ýp;;ÌÉ ‹ï5/ ­¶H$ð( zI @3"BÏÖVãÐ!ÀáÐkk‹%vu¥—•1oÝbŸ;'vr"ä × Ó3FwøpFNÎ[ýÇáZµÔÖh4é!@,¦¿qÃà ÀáÛc¯#®è¦Ú¶u+ø{Ÿg]»ÆÝ¶­9>ÿûo䟊2“ZŠ«þ“‹ÿüùó+W®TTT”””dggÓh4SSS;;;wëÖ­äääÚÚZE}JFxõêUzzzUUÕ˜1cÔT@mmm Û·o—•• ¨æLMM “““·mÛ&•þõK¶²²jhhÈÊÊ‹Åï"_Ùô•–‘¬ª¨øä“O´µµsrrf̘A )‰U?¨”ö¶¬¡¡áœ9sÛ·oôèQuuõõë×###…Ba{³¶µµe±X×®]»råÊ·ß~«tiP(&'' ‚yóæikkñ°½5&GEEErrò³gÏÑÑÑIJJºzõjeeå­[·JKK•Š:QíÝ€¯¯¯¦¦&é-ªÎ¼±ÃsK¹Ésï™óP1cÆŒææægÏžúõë§§§GžZ“ŸŸw8 ¨ˆ?xðàâÅ‹‹‹‹íììd¿"ß{@ß›U«VU¼a„ ggç»wïnذáÑ£G²~*üh4ÚªU«¾øâ Ç322TäÞ.`‹Ë͇©Ä¦b̘1†‘f7tš:}ú´â!z±±± Ó§Oï°Àï qqœ‰±ˆˆ©S% Æ_¾_|!œ9Ég/\( €V­VT4À¿ ä7fÄdzÔX¼X\\Ühg÷§¡µ5(,¤ø|Ÿÿ§³œ: ÚØH÷ìŒ'7NbbBôïþ×€Ëih MŸþ×hkhˆóxDMÍŸYáMM½Å7 Î/¿$ãÆ7>ÇÂU«ÞTŠd€ø‹/œ3gØññŠÇe°ãã5/^ÜX\Œýý×ASöƒ3½°þK/*t:ÞEΜØXZCƒøï}ž‘“Ã]³¦åôéÏ!z]àøQRRràÀ¥K—zyyq8???sss}}ýmÛ¶ñx¼ˆˆˆE‹ýôÓOrOÁR©tåÊ•;wî=z´¿¿¿šB?ÞÒÒò»ï¾‹upp …ÐǺFDGGÏš5‹´„³fÍ8pàúõëÓÒÒÞE¾²é+–Q¶¨R ºh3ŒÏeÞø¼zõêäÉ“o=ÌN‘¸ôxyy-_¾¼¤¤$88ØÍÍmÿþýÅÅÅð$f±X_~ùeSSÓáÇ-,,Œ”MX%ɉ'ÜÝÝçÏŸ?`ÀOOO@]çjÂãñ.^¼€aتU«ä¾ÕÖÖ ÕÓÓÛ½{·»»ûÁƒkjj”Š:QíÝ€‘‘)'Po¾Ú¹¥ÒÉsï™óÈw.\¸Àf³¡ÿ4“É\¸pá™3g555)))äI ˆH$úã <€»îx<Þï¿ÿ^PPÐÜÜ [|ذa555wîÜ …“&M2008}út\\\QQÑåË— ÁéÓ§›››×¬Y£§§§¥¥Ó—}P6ß»wïž8qâõë×ùùù÷îÝ£Ñhƒ ¢Ê]MŠŠŠÎœ9“‘‘qõêU+++¸I€D©Ø*Rƒ«Ñ¤ï~PP““ÓÀ›šššššdç 111Ó§OïKÔii¬ÖVpäHë΂;»v %·o3‹Šè€Ñ£1ssüÜ9¶T ¦L‘&M’§OsââØEEôË—Yòfôáñˆßg0š›imm´‘#1]]âÌöÆÜ¹sµÄâ?P'AKKÜÍM ÿ† 쬤S§þevÇÄp¦O—ÈÖ.ƒæÏŸ?Ï‹PHKIa9:*ÙÝãÐD"Ö°¹›6i~ó nl,\¿ ™4‰00àœ>ÍŽ‹£±._¦°Ñ£qssö¹s@*•L™"ŸZk+€àñX¿ÿÎ(( 57ÓÚÚÒaÃh55Ì;whÿ‰I&N$ttØ—/3²³Ùññô’‰³3 Þ+Õ.811’éÓå–¨¹AA''|à@ZS­© ¨½Yîý…¶iïQÙ;¨#ŽÅ9»ÌQýLÒ¥ r×V‹Åâêêj'·?ÐÐР¡¡¡I}rJcc#—Ëí€öijj‚—M466òx}º½½}hh¨D"™1c†““SPP”ŸÉdäååiii…„„Œ3È4àÙ³g€ïèõõõ¿þúk++«Õ«W×ÔÔ@«‹€•žÎõó£—–M2y²à»ïàÒµlÝQ£|e‡©3²³µæÍ£µ¶Ò$\OO¸i“ÈÝ@khÐ4¨åôiÉßû¼þß#MwïJÿ¾?çCı¸oƒV¥&µ:Ï+5¼]4b"##7z¶—aËÊZfÿNÔ™7¶knI5yî…s‚ ***¤R©©©©â·EEE†††èöD5©¯¯‡dmm­ŽŽÙ[jjj e×)h4š¬ûP( …ð*"Yä$#—––êêêʽ¬ Ê]5¤é\SSc``À :9B™ØrR«¹åæŸJc#Fºº”^¶õõ4P[KÓÑ!ØlPTD71Á™L‘Áœ9S{ölñÏ?·ªŸ`(*¢s¹ÀÈè}] ¥56MÞgZõ#õõ„€7êèëÄ´šÂÐPéi‚ôšB[›ÐÐPü Ñ1(MjD¯º_£«(:Æýû÷Y,Öˆv¤è6Мñî]FôãÇë¼zEï×/(`XXà±±-VVò»ˆ¤IÝÛšù—3lذžá=fôèÑ=-BÁÁÁ»Ñx+ÑÑѪ}Ìïš‹›Ÿ=c¼z۷Ǭ­‘1øçƒLjÑ3 9âÝ1Ea;¢›ÑÓ#ÆÃÆ£ô“F þaô2~@ â}™Ô@ DÇ)P<@ @¨IAAÁ… I@ @t„†ºê .xxx “@ h7………e¯ò<<<úôéƒNü@ @ ÚGAAArròòåËûôéƒ|©@ ˆö‘ŸŸŸœœìááqÿY>ò¥F @ ÚG~~~jjª‡‡—Ë­¯E¾Ô@ D{µ§ *^ÿÝ—:âX\Ïʇ@ @ôfj«*ªJ <–/>s¹¾¶ºâužÇòå}úôÉÏϧÕ××ëëë÷´„@ Dï%??ÿâÅ‹pMZñ3­¾¾¾§%D @ z/ð|ÒßCîóêÕ«ÿuоK\'JIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/webservice_sampler.png0000644000175000017500000013746212032647206024753 0ustar ebourgebourg‰PNG  IHDR¯ˆ$[„sBITÛáOàtEXtSoftwareShutterc‚Ð IDATxÚìÝoP#é}/ú_w&§êTÝ7S±£Ñ9Œ3²¼gr2ZiÖŠÁ¹À@±2& ªõ\œÌ¶“lmdþÜ€w‰1:¾UçÆbɲHˆbo+ãXžÝ«aÍ‘ŒpvØÕz¥K^àµ,އ°B#ªn•‡—©2ÃÓ÷EK­îVë/0ÃÀ÷S¼ºŸ~úyžnI?ýôtÃÝ¿ŸN$Cˆ†  @4 plR> ô5ÏÄÍ=7¦œNZ"¦ý×f<Ϙ)yÜÜscªËÀqÅ÷!ŠÑÉ+ÃAj»=`+\XŒN´Ž„”K˜ÉUNýU+³aåKúoBÓì2ûh ñåô]Ú ™\¾ëNƒ¦;!^û ‡1‡ÜAQLßê¿æMðšmuG&¿ªâ[áZ[ZZZZZZ…Ì‚›±b{gÌ1v[})^ysŒ.,„Ãáp8¼às™ãùÄLñUuÜ«XÎÐ5ÒcbL^imiié ¤ñÚ€rhsÃTco4ÏÄãÉ{T«Š¥lbp%6P¯5j.8SÊF³Ê›RdC½‚±ã`æjªxòQM¹»ÐSco4Ï$Þ›±®ºéMðÌäÒ›¦{¦ÖLW7’ÊïcéÍóûeÈNMÑL)ÉF¿3Ê)Òõsº5+¯¥+ëB1Mœ]NÜipNÝ ~E:ÿÀ{¡EvAÙì»üTº2>s3Ú…©Pš6ºÊLæC+·’w‰¨½Þ–ùÛVßNDw“·VBÊ·-ËOïgpN%[GB¼¶fžˆÚÇ29ÑÌý‚&EÊœBûÌH(ä»uÕÚUîQϤ†õ¾ÿ^¡écɃ¢W€Ï¯P5Dê0½Œã×®ËÎ Ï܉Ìö¸Ãhè%ÏÔšK$šÀQκå”Ò¿±u¨rrÌ亡ˆ<sŒJ‰L9ÊÌ®å8ÛÀMJOÊƒÊ—š•³‹Âaœ”ØÎÄ¡sçlƒ‹‹>—IÙù¢º’ ÈL­Vܶ¬œ~QvV±¶fÇh8–ŠîLÖúÊþ·Ü>f~kûXrL¤»:8rÝäò:bp^× ¸¦@ñ]pœmàö —I;tòÍ›å_ô#Àû÷ïc„|û°*îñPÛ™ýç#ò¿¾{¸£Ä-ÏàÈà1öÅ‚3ØÍTñ}0zÈî+8yà¤9…!8@çõ°ó¨‡ìª[0œl˜)'fJ¢aDȆ _ª;¬ÍÏÏcDà¸êîîÞÙÙ) K%0Lpüøýþü…:ÿ}C/¯¾þ&!Tç¥çŸÕ]þ8ý/:ÏÐ 8P©Ó§Oë®ÂUtpÌ™e€hN®“ G<Oäh71å,‚?u,÷ð¸Dâhnniiiî ¤EQ^ÒÜ<ÅGÛ\¿ ŒßÔnJ½²Â¸ÐjµZ­VËćU‡Ýßø…i_·±d«"kVÞžR~AS<â±Xäò–\یݾé 㾈~t7Á×8Ñpn]Â{3v´šÛÐFów²‘^jsÖ7ågwæ©­ÁXM(Ü1ß6‹Åb±Øêª‡ÜûŒ½ìîU·½šÜ»>$ØK¶*åz×_|KZ3E½ê@9ugžººƒDDDΩXÆÜкb {“3àÕÿs›¬Nkwpü£aÆL& ún¥õòÁé@_K–&…ÜRÀDTÔݼ/––“66´Q6™º3ÿÿA6î‹øÆsÁpēͪªÃ¸M¿·|kcÍé’²dìöåbY½z"‹Çï¬Vë¥KÏuªêOùá{[ª\¦\ƒ&§WmêÎüÚ…sr3 ¶J@¶»Õé݈oœÚ¾ô¥Ü å `·Ë¹¶±E¹pxM9ë„÷MÊM Œm.“-øýÙФuõGÆ¢uÚ;â±ôÎò³ý>E ',&:/íºéaQLG>lô-,„Ãá…QŸð^›TrŒ.,ø\&Æ”åÀ:è¼ “ˇ}.SÂ+ÈqiƆ¶‹¥H&`ìììÌÄi‘¥ÀÅL0œò ½4I…¶Íw䂨Àø†KZ>}a܉ÁÎÖ]ÔÏ–¬çßþmô ʰS ÈÏê×à¡;‘bÕnm¬9›r)åB­Š,”ŤôîR$·öb[ƒQ1Hùò.Ö-éê‹,É›“”ß=~!³Üµ1(u ÔñäÒÞ±¦%O„ìîÕéNÖ9‹­V•q¨:&²Œ:XÐwk[½˜ã ί8 GDd­w0FÁ9¡Ë˜£ÞJTS{^ý˜âÉ{R$½gÌÔh¯!¢š.ÁÁX|9’E޳ ....Ú¤š „ÃÝ.)üKm®;›ÜMÎõÍ”$fR©©;ó$Ï8KÑEy¹]ÊÎ&0vûæÚæ;ô’µ…êqNg3Õb© Ê`X]C·½Dµênê·ªTØ*‚¶Þ@6áÚ¡šš\Dn‹·nÎW|lUËíÂÐÅRÁpáAÈÅæv7Â_8t%þû†õjùÚÌÍØ˜r¡˜ô_›IðÙHšç‰•¿Ç{É8ñ|Â+´zåÍãÉ{D†2+°79{—"BÝ<Õyèlyï¤ÎmœMniõÖÆÚÚì3ÖײÅu6e*f"Ï]X[Ú"2fBÏUéR§üB‡@s¾nc±zòã¶Û¥¬­[¹nkcíB“6ð,¯Ú‚­* g[k‘s*Vid)o’ò ¾H·Û^¤ñêžÏ] ¢•ªÇî^öX,Vž'¢ÎÊ pÀÑ0gp í3Ã>ŸY…Åèäµ™8™{|SN'ŠÑÉ+ÃÁ öx¦ÖL,î»=P4\*ö9©M0’±¡|>e z¶î¢sʧG­o¦È.m©Íõ‹u‚NêrŽKQr‘z´ñú…³ä 8]ª`˜ÎÖ]Tì±DóÎÖ] äÂׂ­RG¹ª8² ÙYë,åbÌõ©#h½qPåÓ‹'²ê¶k¼zl‰šŠÕYdlíîÕUw&—v pˆJßoØzµÇç2ÁjÛ·|!¾‚›sœÁÞhæù<ÿB£ÍQQ,ÿ>nö&çì쬔é5ž»0;;«˜Kklh[ïU\pñÈOÖäI¾Škî"Å<Å´Ú"õh³6ÿï̯©çó’ú’?Jùý‘bÕjæújÙå]!"žÞÌ(R~oÀ9S˜.x¿u0\úFòÜä"'娮©B|¹po Ä1*4ƇåTéøÕàÚgFBr8k¸Ñs÷ÚLnªC… Îë µ­#B‹—ˆˆ±Lž¸‚{Û›:e‚Oåc)ÔêöÍù«µ_zÚ9˦lCu^i9ëœ^ÍÌ;°»=›‚ÅòÏS¬(\¦1·cœ†æòÒ˜RZÕjå‰è‰ßò­ÖØírZä´oÁV‘±Û7½aÍN3蜎u)3×c×¶Ë}g«û\Ñ`ØéZ5–1ÞÎ^¯_°wn¼²§CÎÌL c·gHèÈÌ|P,/4vw“'·p:fÏöã«•±Îi¤Šà q÷ïß—ŸÌÏÏwwwïììÁ†¾úú›ž¡Ž÷ÁÈÜd¸¬«ÜŽòÞ"ËR"W82Üãßô ½à÷ûócÝS£#wÝÜñÛÀ‘ÄcàÄzœrÃ;;;¯¾þ&ŽÙc û£Áño1€hø ¼ôü³§OŸ>öS‡Ѱ¾£yy<¾0o  @4 püôÿ¾qúôiœ'rÀhàä)8SBÓ·ú¯y™p™1ÇØíÇÍnˆbtòÊpÚr#àñˆ†óƒËèÄ ND4›ñ|ûh.Ïj”צ}‚7!=6¹|×9€ñúS/£ ƒ6®œ2í‚1SÏ©®š˜´œ§ÐHkHNc‹é@ÿµ™ÏË%Yd馢] cŽz«ÎRœjrùÂá°ÏeJx…¾@ZÔ.ø\&Æ”ƒ¾[iQ,³LÉ]H«|.3ÅgFom“uàö˜ƒ1Æ£ ‹‹ƒ6ŽÅèäµ™8™]¾…p8|ûöNFm¨ì*:QLG–㌙í5DTco41_ŽÈ‘n&†®©=¯~Lñä½l%ÅËhwÑ%8òv!tÕéÔ¬ç|m Çœ×mÇq¶ÁÅE)bÆá8á*½ßð½d<bJñh<ž¼GTs`Mº—ŒÏ'¼B«7±óTù.8ÎvµÇò†FZCÒåL ýh˜ãlõí …Vb6›få™Z3Qünr›l¢íä]"2מ9È&©5‹ëÜ¢Òiçõ°“ˆHŒN´Ž„‚Óõ˜+ ú3%¬cÆ‚Ãýt&NLDE‘ã öF3Ï'–#ÛD´YNð¼¹Ñn8¸3»‹ïÖv6ŽN4OT:åW£}ÌüŠ3µ&Ƥ¨]£ÍÍÍ•WÇÏ©!©màöÚþkòtÆcDDçõÑdóˆWhñ)nøp€ Îë µ­#™]äî!‰¡só"²åm#Éþ+W2÷” sÏH—¡h%pÒp÷ïß—ŸÌÏÏwwwïì윜þŸ>}'ÀIà÷ûóc]ügf8¹ ÀÉ¥7ì÷û1(pB¨æ c-ošyÃ§Š¬8Þ0o  @4 €hÑ0¢áGL£ÍÍÍÍQQ<ì­Ñ°P¦}ÍÍÍ}´˜_*VŠrá–¬\11:Ñœ[ÞÒÒÒ<EÌ G=æ8CíyâùÄrd›ˆ(¶âyž­Äˆˆ¶#Ë ž§óµŽ#¢Øäµ™¸Ùå[‡Ã ¾³ª*Æ£ ápxÁç2‡þÀ£rªü¢Öúv …âÉ{D†ØJ™>÷9úap%6h³ÝKƉøöz+‰bt%HDçkk2a´óú ~„mpN%[GBÓõ‹ƒ¶ Bx>4ÒÊÆÖ¦žSN'=MúoBzlrù®; šmE1:ye8Äç¾0Ǩrïº5h¶bÌ1v{ÀÆq8Ž[4Õeà8)•V¥}‚Wè#€XYC:Ð'xGúj3ÅJÖ ‰°5cGSww÷ÎÎNYѰTZ~œÛ¬¦öbˆ†DȆNp4| ÿ Ñ0À‰†‘F4 €h€""‹'òïQ®íáwðB€ò¢áSüQúûÉ+—­O]~9v´ZUÁß¡Gâ˜ô577÷Ò"‰bt¢¹¹¹y"*ŠD¤X)Ê…[²rÅÄèDsnyKKKóDT± Uš¡-£\¢S¿z×Å+¯±Ù&"Š­„xžçC+1"¢íÈr‚çé|­ãˆ(6ym&nvùÂáð‚¯Ç¬ªŠ1ÇèÂB8^ð¹ÌÁá}G¨Z¹úG<î¿•>ÐúàÿÎ<µ5Ï>®/ä”_è¥éÕX,‹ÅV§©7¤üBïúÐ[±X,öÖкjq%å3CÄ=-¼¼*m5ÕÉ:§¤ÍWÝöƒ9]]4§XøbwÛWÄÓ±áÊ4/6×6ß!øSdlhSTšÚ\§õÍ”æHù…Žù¶¹Ìh¬zÈí‰Ý}8=Užu§øÈ죑)¿ Õ¦¥£Ÿx¼uoIÇk®m¾©\(#Þc•þíIkåV]ùvæÌ'ˆç?øÑÛ[»{l÷Ý¥ð<Ï¿µø.ÛÝc¾=ÿ3ž§OœýM&îî±w^îüëŸþ×þ7"o¿óÞ¿®ü?þD®¶="Æþ`|%òö;ïýëOÌö?uÙ³ò`ïûuèÑ0YëÛ‰(ž¼GD±• 3=ý´‰WbDt/'¢öz«”…] ÑùÚšLí¼>hãt®šä Ω±vž OÆå,³Ö;Ë´¸r›~!/i×;ËÏö[­‹ç]õSù×L¿¼UÁôPêÎüÚ…sƼǥ³¤òrEÝÊä¢þp^GŠî%›ßÊ&äò»©´µ±æl’£!{“smc+Õ yºDDÆnÏP60¬´|Á!Ò.u6¶œŽD|ãÔö¥/µÑ¸/"gnu&s¯Èj«ÕF„Æn—Ô)cƒ¢Ò;óðdûñK!ßÖÆšÓÕmÌmê+YŠaÔéB¡Ês§ô¥KÏuªNŸ”_¾·¥Ê¡êŸe¶YÛȈoüÂtn4ìîÜc½óVýÒ“ö¤Í…çž—êi_Ÿî©Rt+‹e©É—=–ÆsˆDe R~Á¢xœ}GÑù-ø7+ Vÿ‰¬pÔ¸ùý?ùìg>-ý½ðýd¡UõÏû7³1èî{çåËÒò߯ ò¼nå—ž!¢6’»{ìÝåYfþ¼ÃÌæ–#»{lsã§DÔÞpywýêÁ»ËoÑ' ¿)…цgþþ«&æ·üÁÇ¿0õÚ3<ÿƒÇ"%ûu´¢a:SkbŒ‚+Q1¼Kt¾¡á4ÒÚZ:ï+¬Á•èa¤oc+!ž'³²]å Œo¸²)Ì ãnŠìîÕi)]·ºêþ=õS{ÞV™²™ýR*Ò§™JrÉSÕrÝÉÆßnòd³’Cë½:ñp~GŠì%âé]QJperùÝTvÇÞä xs-ô2½ÙÚPF°Æs2Qo¥åõ‡¨Ðp)Rråt„ˆ"K‹m FcCÛÅÀR$‹¯{³ÓÜómžî³ÊˆQ[m~ĺ¸Xw–ˆ•nm¬uvvfú”Ù'­»˜2óðÕöTFý.¨‰ŒÝ¾¹¶ùŽR?&TOåaÌ/_¤rùüQ-–zq¶`óºíU´¹Ä±.~ÞjÏó”^ƒeõ´¢Á×l•™ $-3ž» Œ,:;;åÇÙo~%„]ºˆ`¹a½É {ê…¿z|wñÆÌŸ}êã»{ì#Oµü6c?_\I>ØÛÝcXMûೕr´–†VÆ(øã÷ìén•_ùîÛÐn^ IDATýͳ爈þׇ?YYúµÕÛþ[ýý¯òá/ˆˆ>Q“I_þòØdƒ±¹¯7×·5}¦ÿd¡–+—èöë!ä†+¾ÃÇÙêÛ)JxGŒÚ+Õ·SÐ;’ ž'G½<‚³ †ÃƒD$F'ZGBDŸ¹í°æWº-EÒ‰1ÇØíÇE'šG¼Bù®; ëÄÖ$8—¶ˆŒdw¯ÚÕa‰;ÿ±"s|¡I§õrå‡oÇø|æ» £Î¦²ÚYh/v÷ê´Çb±ò<uNÅôÂew2³;cîlRLØœóu‹å7+*¯;DšŽ¬Í>c}M>ú™(§#ªÊíMÎÞ¥ˆÛn—÷÷?ÓÁ:§Wy}/\mf°/·LªT¨›§:­#ïÔ¹ U‡ŒÝ¾Õnyk ÆAõT·|¡Ê5½—Ç(ÿ°èžŸ•µ¹Ô±.rÞúî•ßàòzZîàë–TÏòn¦ˆ–ΦÕ&²,EÜg7×¥–:êÒ€ã WT^33 ööØ®"Ó'Š[›q":_ó1¶»Ç‰3þQ"¾±µÇ>Âqbúͯ~éo‘ ˆç‰‰{{l—ô¶Ê«œˆˆ.?õ9Zø—øë#qFÿÇ%¶K ­ôƒ×GâÄóôtÃï0q—D""ËK·æ_""1:îüzˆ3ÿüþ¼ô»¤m¹˜þpC^Búýz)Ô*¶9S›½ ®½ÞÆqR|,ÑÀÙF¬ðÁ¾—Lð¼TÛ÷Ð:0æ`,¾yˆWÑå®”¢Ôæºô‹y%™a¢³uu+Q/ÏÖæé˜o›ËÌ”ˆÅ¦œå¶³Ð^¤éÕX,{ëE݉%>û3Ù®BõWZ¾d¶ðlÝEçT,GñƒuÉŽD–4ÛŸ¹Ù?K™„_Êï tNÅV§Io»ÕF<–Žù6m0kor–|Ò/ãÆ†6Úðì<áøpzªÜk~ù"•k»ãõ§S\ œQÕ´YÙH{“ÞÏEÏÛBá°¦Áeö´üŽäŸÊUö¦ ówüRÏìMÎÀ’ÿÎü…&{±¡î ‚€cíÁžXáeç×jþΜù$ý"™ì‰RÉ'¢Ožû螸ûà'Ó_úÛuú”ð­å7~øã›ÁWšËÖ ·éïú£ÆOeýôg/2Úc—mOgü¶ñL~ù=ËKê}åµ<õï¿ày©¶Âýªìï!EÃ5öFcÊØWŠ35Úk²_P¢ÊéÂRöW/Þ•2ÇŒ9Æô²ÆEòÓ<òÝÚÎTË*Og '¼7cíÄ^“'*Ê—J©&ÚÊ“J5A‘r¶£¢Õò”ߟ*D<½eÏ2,´—ˆ§ô¥ðÊy꙯)¿7Û#cCeç(§ün¹þ Ë둦#š 4{Ec©Ž¤üÞ€sZáĦ¥9Í߸ôcµ]gk«ÏËx[zizU'¯korÎÎÎJ?Ï]˜U„‘êrHoÑÎVßSõ0ê–/T¹NwÖæ¿óùü©Üºçg%mVk» º³HvƒBçm±pXÝàr{ZÝøäßšíl½öÚ¬Ô³³ug_{2½,t T\C°pÌ£aV韘͡*ßmøÏÿüÎ{©{,ýÞí»<ÿ‰†§>ÂÄì&´Ç؃=–žýöÏK5èn•_¹ô÷Ö¦:ƈèÆiÉÇŒŸ""Æ>i·~\Z²ûཿ{ú•؃½ÌV÷67‰¨­áb®™ÊwßåêÿõCÆÃ=OéW¥U‚ªþ]Míy¢¸"ö­±7šfâñì¤á¬àHkH~ÂÌ=7ñ.χäµÌ1º8hSéʵÙ9ʶÁE_mŸàZ¼™%&WÁ¹Öúv …‚¾[_xòl9•—b†¼ÏX­ŒuN¯ºíÚ§DäªóZ­ýDÄ:§Wó‚£ÔæúÅ6Á˜÷X#ôM{,V+¯©D¹ü‰ßòI¹¥é%köÜ'^r–ý»j½ØÝM©ýDÔ9³ëôZ[͆¥ÃúODLQ‘´BjZÞârË"M æüB®ÍSÒ,Œ¹¾*|8OC»æèþÝÈf¸€Óµš½»E›àö×ûÎå2:ÕF|ãk<ÿA¿u6{j)ÊÞÔÉ(‰)Kµy6‹EšèÂtϘ}÷tzÕ}V5Œºå U®û è§¡9{±3*{~VÐfí±6vûæHè°¼&O$(úê(ú’U5¸¼žjÏùrÇG/¼}"´+9Ša¬à £l¤Z.i¦χ^ùƒ\0ó?øÊã¸|~ú¥dã«ÿpí‹ÿ@DT÷'ÿô?>oØc"‘í½}º®÷Ïš¿«¨Š1q#ÍVÊUÚ]ììY¢_°O~úɩٿñdSÝ·~ö ªûøÇD)E‘QPn1Sßk_¶î1Q§å-/ÿsïeiO‹ôë°wÿþ}Í¢ùùùîîî{^¾úú›ž¡ªÝ:â±,5ûá5åÜä‘2ˆÊÇPr¸àx#Ž5œ îñoz†^p³ûê0Èó—ž6y‘øöFí¡3vû|z¡äpÁñFk8‰ªûq¢a€G¦Ò™€høèSÝI  ˆˆ† œXÈ #8ÁÑ0æ #>švvv^}ýMŒ*Ì”@4|½ôü³§OŸÞÇMÖÊrû_æ0ˆ†¢“|»ex8tïŒ !DȆ  @4 €hÑ0¢a€ÇþÝ‘0??A8iÚÚÚ0ˆ†!cuuƒprŒúï߯¾þ&ƧRø×¦€hø8øOûm ÂIàz¡x?ûã?Ä(•ïïÿñŸ1€hø˜ølK;á±ðv8X]ÌZNèö뿆 ýˆ†OªË¿õŸ1GÜûþǡƬˆ† u‡ Ÿâ0¼ˆ†Žv4|h1+rȆŽ|4Œ™¿Gð¡+ŠÑ‰ææææ‰¨(>vû}h£------g ªë×£:”U4ã0šúë¿ÆWñWVͧøGÿ}ÙþéËöO_~êòËÑS?yå²õ©Ë/ÇŽBÃòþð>ûQYnXÓ·ú¯ÍÄÍ=7¦œN£“W†ƒÔ>v{ÀÆqb:]Ùeàöû#²Tyˆç™ctqÐ&/N4„xÆÒN‹o.·íñ:*¢2ÊŒócÓfåÉ=|šb%œ|šy|ù›<‡‡í>`U‚­7þ´sògò¸=ó7?ùÚ§«7QŒüUo€ÑůÜúöU#'îF‰ˆÄ»{»æ4À ކ9ÎP{žøDb9²ít(¶âyžB+±›¶#Ë ž§óµ†ƒý¼ úW­RP(¦¾àÉùÒçkkŽtû8Î6¸¸8˜‰ŸôWUúµ$¿|tbâ`›úhcÖ²jÞ«¸fQŒŒÿÞŸÏQçkï?ÅqDô“¿zùÁÛ­2f{DDŸ8óq¶»Ç=õbäý‰ˆ‰»$À‰†‰ÈZßN¡PG? ®Äm¶{É8ß^o• §}‚7!=6¹|×yχFZCÒcMöWƒç37cÎAÅnÎ$òÒù{‘“<…FZCRrÑš¿_fR&_‹´VJHË ¢l¬"¥Ã¥&ij«šnãm§l3¹¤¼&«[XîK~¾VÓæJGŽ\_斯巹H7 vlr8Äóí£¹ÍmƒƒåœQ¹Ô;(Ê ÛJ±ü4¶æ'ŽrŽi1ëáEÃï¿òçAžoÿ K6`µ¼ôU9x½÷æóÏMýL*ùÉþ7¦Ÿ5‘(¾÷× êóáS}7¿Õeø‰´œ§ Õÿ€±Ž±·峃Azæ¯î|õ2ÇÑû¯|úkAå†uç«6úÉ_7 ÈŤú¥§Ò*ʼnÚ!•ÑmÀÃTy–õL­‰1 ®DÅtò.Ñù††óDÁ•¨] c¦Ú3ªÀÅäò…ÃaŸË”ð }´²&yѬR|Ê:\.}´(%†M.—ƒ1Mx¤Ù ÇÙn9cÌ1º°°¸8¨ŒÌ¤Â >—™â3£·Ò¢X¼µé@ßHˆ—W©ÂÖk3q2»| ápøöíÜÿ´TÝÆ‹b:òa£oa!/Œ:ø„÷Úd,0¥Âe޼fªœ"m. çW(fÎ"‡â+Ué­´ß%öqP*Ú|wÉŸý̧‹ü)K– ?+úûÕnäí9b¬ÃnÑYûá÷ÿô¹©Ÿ]èyc~éo÷˜>õ…/?%­’:&­ú—ÿç'é§×ÿÇÍäƒËýËO3ÆXÇ_.®,üø«—ö2 áÙ ¿äå I±JYLóT¹/©Î" «èïãðp£ášÚóDDw“±ÈrœÚë­Öúv¢»ÉXò.‘üã¾(¦#ËqÆLö"ªéŒÅ—#rà•[eo4©WiÔv ퟹ‹Ýœ‰S»ÐU«ˆ]JìE7¼ºjr‰'ïå×£h’î*u•™.sœÁy}ð¦·rœÁùgf ŠµÞ‘ùB"j;UÖÈëŒ@ƒSÆ —Š8 Žv[•hÆ>JY›+²ù¥w Õ5¿ôN¥¡›2z.óoˆHÜË[þ«Éw?`ÌüÙ§>¾»Ç>òTËo3öóÅ•äƒ=i+Æ>ÿÅg>¾»Çvóì9"úÙ¿'õ*”ŸêV(—,´•v_ùõ<ó'­Š†Uô‡÷qØŠgJpœ­¾B¡„w$Á¨]°Q};½# âyrÔgC‡{É8ñ|Â+´z37/EW5ê€C ¼âÒÜ ý}Z¯ö˜CÞ‘âÍ=W­to%·ªä^Êt/×oRîªìP\í1‡¼¹ÙŽÑ…AÛ¡DÃÊŸï3ÝdÅúrcr¸íý6cŸ¥¢Í5qØÿ ßù|Kƒ¦Ìÿ ß©"\«tQ™wªcwQÜÚŒÑùš±Ý=Nü˜ñ·ˆñ­=ö¤ÚJUI±Uz–ÞJÛB©a<]øì빺±µÇ>‚ õà(GÃDt¦ÖL” "j—b_)>&"2Ëó$èL­™X\gþh6—w7¹M6Ñvò®zË|5]‚cf8HíBW Ñ=M[Šî¥’>Åu›¤·*Ëà¼v‰Ñ‰Ö‘Ppx²þî~ ÿ|ßãSN-Ö—ƒ“íPw´³ßµ2×eV× Ýƒb-»qåÓü˜õÖü¿vµý¾òiu™Ë{•ŽìeÛÓtûGÁw¢/^|Rsòœ9óI¢Ÿÿ"™/HL'ÿˆ>yî£{â’¾R‰öĉ¢âi±UR…ÙUR…¥·R­’Æ~þ9wè¥KÊáeôêÀCTÍÝäÙr{¦ÖLŠÉDÄq{£™çC¾[ÛrH7¡¸Û+Ï'–#ÛD™;Q˜íEîD!Ý 6jɽ”)[N“tWåöÕÈüR/M§.Ó”í[¾ü;—ø˜~…ú'€u`ÌÁXp¸?ÎÔ˜ˆŠb™Í(ï H'ìÝä¶v<+:¦öÄü¿7~øcií?ü±nò¢aVéßíy¥‘±ÛÿýËs©=iIìo^‰=ØÛc5¿Ûð)žÿù÷RöXú½Ûwyþ O}„‰ö˜H$åk¥M”O ­ÊVøÃ›³¹ ³%k &"º»u=ØcéÙo/åVi+ÔÔó`í>xïïž~%ö`¯Ò¾ã}ö£ªÿE'ý´­ˆ}k즙x\}G0ƒóúBíDëˆÐâ%RÜî@Ž^Þì*ǨîÍÊÌäéî…(÷“·òžEêM6d›¤¼_f•2FIö_¹’¹ÿ™{Fº ‡ð#/ÇÙnôܽ6“›$PÕ˜T}_9*甼§D‘Ñæ8ÛÀíµý×äÎ2樠ºE]ÆÐ5Ò³¬7žÓBqØ÷æ–Š¬-G&t¬ŒíðÝš¿ø£ïþYów³ãö_÷8úÈç§_J6¾ú×¾øDDuòOÿãó†=&fg2câGª§TxU^…”]Å8Cë`ß»®ër¨@…’|~úŸÎ¼öÜÿ©‡1Ç_üà+EÚ‘€‡‡»ÿ¾fÑüü|ww÷ÎÎFç¡™ŸŸ_]]ýOûí϶´_þ­ÿŒ9âÞÿð?Þÿ°ûjÛþ³ÿ¦gè"*ô{õõ7»¯~áq QŒþcçWLí/ÍþÎ#šïë¿ùÆKÏ?‹ÓŠÇZ…âÛS€êìÚoôGü×QŒúþž¾ä²Ñÿ÷Ãï¼ÍóÔü™O1ó}àq„h Ú˜•Vð·ÇŽxXiý£Ë“Ï?ë–ž°¦o|ëë‘o3¢a€ƒ†÷+þ{pô#ËßùóiÿŸ?N @4 pÐ1ëaÍg@žÑ0ÀQ·wh¹á=Ü5 Ñð‰õþ‡ÿAx,^n ŸPo‡ƒ„ÇE84wH5ßþ—9 /¢áGº -œp¸u.ÀÃÄcŽˆññq ÀC†Üð‘ÐÖÖ†þðð!7 ˆ†  @4 €hÑ0¢aDȆ <>Né.õûý8ö¸û÷ïk>}ãÇÌÎÎNþÂSe–8~0o  @4 €hÑ0Àñs Cp¨^}ýÍ£Ó˜—žG§ ÞFðº>ÆÇã ˆ†"ÏÐ G¡;;;§OŸÆÍ¤qÚàmÇû8bœ¡R˜)qR ÝxGŒ3 xœ£aQŒN4777ODE1yKKKKKKsóÄûì}Ýb²wy/eWñX<œnP™ƒ=mäÚp6”õ±8!NiNúÉ+Ã!>"3“ëÆT—ã*}ñL^RûØí[…Ûîci§¢}§ìæ•ß`޳ ..dÊH€²Ô´ê¶ë?}8ïté[ý×¼ ^3€öÍW:åÓïžQÕ5^jª•bò‚:ª‘úÃ>Wá(Ÿó‡ýÁñX¿-è½|zgyžˆëœV¼Ž"Kÿ,OD¬sJ½¸¢òÕ˜hnVDùáåðgŽÎ›ªí8¼yÂQÄ딣 ápØç2ñ ïµÉ†é‹M^›‰›]¾…p8¼°àë1¥³3á½ùøŸ}xAÁIðÐÎóÇÿm!åziz5‹Åb±Õiêü)yÅúÐ[±X,öÖкjq%å«4¸¸‡FŒÉGsqqð2ypqqqq‘(cÅî)QÓ%8f†ƒÁ•è€U“å’3ˆé@ŸàMH M.ßu§AþÏSh¤5¤Ì5æÎ}ù‹N´Ž„¤ÇŽÑ…A[‰òå¾oò¡‘ÖP¶Í¦žS]51Mó^æ–¯i¬“ÕsŒ.ÚöóµuÓ/ô¿ö1öÄМ¯Û˜ùº?ke¬óújÓ²âéôªÛNe©nhý5i«'^œóuú;÷JˆÎ×ÖqœÁy}PY@÷hRA{{j¹Ÿo™{Ô sÏ)§+§Ý„4c&³9ôݺjíªÉk¹²ZM®(?½¡9¯Ê?µªn|™/¨Š²…’@òò'^|+{‚¤üBÇkèd’ ŸE÷ñXûg¥‡S1·]uêN#C Îó"ïüyo#O^æ¢ÿ¯ÞG9o š÷áâ?Ñz[P}^¨ßðË|+>MJ½®·6ÖœMòkÆÞäì]Ú"2RêÎ< y¤×¢±Û34モêî6V\þ€U7˜EÞc‹ fþ,òl1ä×ìJ70¹|Ò÷E9––ø\¦„Wè ¤9Î6p{Lþr)¡Ô-,¿6ZGBÌ1‡ÃápýÊdT‹”¯¢Á >—™â3£·¶ÉªiÞeþ²nƒ•›û\&>4R]²ã®ì—û ãnŠìîÕéNÖ9‹­®ºOýÔž·Uf£Ã8 øÐHkkþ´°’‡@Zµ´4ÝÛN_ŽlQl%ÄóÔ.È¡pÉ dÎ B»nHÓ‘} ápxaÔ‘ŸˆrŒ.,ø\&Æ”ƒ¾[iQ,§_uÿá¤L¤ìPæLÈå†TË=t';-ØMžL&inh½Wg’pþÙXd/Oïú‹oI‹cMKžˆþ¹ @U¿Ž––Æ^.ü>\ÎÛBIÅßмáô[½Éðæ^ÂÞ@&ÖÝÚX»pNfç.¬mlUSþa¨ú=¶ÒOöBÀˆ·oùB!…ñ• µ×[+ªAŸu`ÔÁ‚¾[ÛÚfœ_qff%ZëŒQp%ª¨¶Þš9âÊÇÒÑ/Ùª2OïÒ/ú‚*û´É|Þ™'½3AµÜØÝm'"²»Ws¹^c·ËXŠ”u6Ú åÎW»á/”{žÆë¨ÐÛBÉÏ‚"o EÞð+z+óumw¯º6:¬V«ÕjíØp•üFYiùÃVõ{lEaCñO.LÞ€ƒuª@¦0ûk‘ÉucÀZ`Û{É8É?²K/†x—=ÌŽ€rÏóCy'Ï[8Ì7üxËûÚ©;¸Ð °Òò\‘;"Ÿìyßç«?â öF³üûøvd9‘ ƒ**,¯šÉNK1ª)¿òÃÌv”nÀ!ß‹qmÜ—ù•;â§¶†¿ŠnBÙré½)óS¾t\Bò’ÚÂjÒo^¡PHþ¬ÒŠåâñDë62?ËV|Þ–hUE§wµ#_þiclh#½3Aµ<å÷çOŽxzå6ªÐ^"Üžÿcbo gjÍ™p¶Š·…"oø½•÷º>[wQ=øbÝYù˜™ÄŸò»å`¥åÈA×±¢çCG·@†wj?œ×G“Í#^¡ÅK¤¸8”ãlW{Ì!¯êÒàB…¥zj'ZGFZBÙUG…Ëïûµšß<íùÇìD¶Ì1zP P° CÞg¬Öì…ùš§DäªóZ­ýDÄ:§WåDZ üû&1süS~ö¸dG w/çá°y&‘ 2KÁpå5Íeï8Bg¸Ñs÷ÚLîg¸ÊÏ[ÝV•yz?Ænß´Çbµòš3A¹ü‰ßòÙÝÓKÖg¬¯Ñ/9ic{±»›<ÒIHDÓ1»Î© PÙÇDyïÌ\Ùo †®‘žå}¼-yÃ?÷1ÍëlÃÒa}M¾ëKæ•&­^»y‹Ë/$z¡÷ØÂaCÁ#Èþ€8°oq÷ïß?=QÞìfÿ¿MºoZ¥{yõõ7=C/TÛŠƒüîñoz†^ØÙÙÁIôíï´8,x9¯ëã}1ÎP…SǦ'ÒE¦ƒÇb/ðpð8±Nat`xggçÕ×߬rãîÇ¿Äñ8yöuÚ^×g€ò£¾c3oøÈ:}úô‘zÀÁi€·¼®ñqÄ8¢a€raÞ0 @4 €hàø;ZwXÃ-Qàð¼ôü³G:&"üCZ8 ;;;§OŸÖÜù3%àDІ€hN®C‰†E1:ÑÜÜÜ<E 1<æ"‹'‚a8 ѰŶ(4÷Ò¥"ÚÊ}Sþçžó|Íb±ªY*þXÒý$Kù‹Eð§öó˜ò Ùæe«Jùe¥êr+S~!»afˈçzªiÑÑ ”TŒêC@¨__ò·’—hV•_þI~°Ý´è½FJ,ßÇ‹ëÇC{Í@A:WÑ1æ»=`ã¸t Oðz¯MÖ.Ú~ËRwæ¹§=/ÿ“ûåÌgÆRÓªÛ~€µSWÍßIuw ²»WíÅ>Æ:6\«™)¿Ð!М¯»¡Ür¥©ÍuZ¯K‘ݘÝg›ÇH)¿Ð1ß6ó³›z">·{uÕ}=Íîô`™}42å£ñx"v·ýñzIƒ.Ð(äŸäöƒ<WÝñX–Ê[NDΩØÃ?Õ¼Rç5 ›)QÓ%8£àŠœôMú4icQŒN^ñ<χFZ[•biI¦ps_ -R‰äÔùµ çŒÅ“*ê¼lf©œþñD¤R½³ül¿:ñSÛ—¾ÔFã¾HöÓZ±:åÿ–2m£­VúœË}¸»]ε-"cóF(t IDATƒ¢Ò;óðÌßIåöÙ`$ÚÚXsºr1¸±»T”°ž*†Q§ …*x,¿_°Z­—.=שJS¥ü‚ð½-UBK®A“/£ÍÚFF|ã¦s£awçç*Tí9ÓÎ\R›WË=/ÕÓ¾>ÝS¥èVù)ÆÇ± ï8ñDõIõ®Î9¦n®þb'¹Þ8:—,¯(TÿAÑÿ¼öþM*£=…Žo¤àŽJ½fàḯðË_þèë—.]ºôõýò—zOú­ÿþ­ŸJôõ'Ÿ|òÒ×”_L^òä“O~ñ[?½ÿþ/ú­/^ºté‹ßúé/™_Xiä•¿3ÞýÆ¥o¼+ŠžŠ[ß{N^ xüî7.=÷½-yi©vÛ\1M-™MåGò†ºÕŠºU*+}÷—¾ñü:¶¾÷œ¢:ж§ÅºP¸òK—tŠdªI*v¤®á{ïVÜfM#õÆV]¡¢e;å¶é4x«¬žV4ø— ´ô1íBñ3§È+QU¢_OòÂã+^¨ªBÅF»HwòKjÇK¯—r£¡ßžÂýÒÙPQ¢ü¦ÀBMMüY,7¼}Ëâyj¯·qqœÁù§ãˆˆ¬õš´q>ÆBW QMíy"Š'ïqœmpqqqqPª³pÊf)àl²ý-qH°çò²¥lfemcK'-—W¹«Û¨ÞÒØíº0îö§R~÷|›'oúDÑjS~¡—¦}ÒFr¥©Íug“»É¹¾™Rì“ÈØí›k›ï(/ݵÿžÊØ_¾HåÎl~SµXêÅÙ‚Íë¶WÑæÇZ[¡]¢l¾]ÑN"{“sm#¥×`cY=­hð‹lõ˜v!ЯšµÞ(·kõúUè$/4v÷ªO~Ñ©Ûy±À¸UJÕAE.V;þ[zí¼X¢¿EŽonª†ÞŽ*}뀃§3o˜çC#­¡LDkrݰf~6Mú¯Í$x^.Gì°šY 8›Ü…×om¬­Í>c}M޼©³)ó™:í±X¬œ§!*¤³ C7òƒ.àt­f~áõ´ n½ïœ\D¯Úˆo|ç?èÏf™뜖´ö¦NF™0FùXªÍ³)X,ÒÂŒuN¯vº§Ó«î³ªaÔ-_¨òüÐLòvŒÓМ]§yÓ‹ÕÊÑ/¾å«°ÍÚcmìöÍ‘ÐayMžM‘·—R¦ßàòzª@{ùã£=`yŠU¨­ŸÈ9Tç•êWô«àI^`ìîé%kvFÇ/9s3të—îÆÀO³ÖYEc -'¢@¿ò!Õ*ýè8±K¶§òã«7¼gËxë€ÇÝ¿ÿè´æÕ×ßô ½àòøºñ™°¿ï~Á}ä‡ñ±h$qÐ7Øõ©öàåpèÜãßô ½°³³£\xê6´ÛçÃÑÚ7ãã0ŒFk¼-C'Ö‘›)ñÒóϾúú›80pàògJ­h˜ˆNŸ>ã‡ä¨ÏÖ´àð`Þ0 @4 €hàø;…!ÐÀýÝŽ«—žÑpiž¡0ÇÌÎÎÎéÓ§5w0ÃL 8t§ €“뱆E1:ÑÜÜÜ<Å£ÛʈÇjµZ,žÈáíà+?Q€“åT^p™¾ÕÍ›ÈDÉŒ9ÆnØ8N­ÉucªË]+Ŧ“W†C<¯ÜP^(Ól¨»U¡ØwòÊpÚ‹;bR~ïú‹oźG*0]jZuÛs¤…½³¼ê cÓ™µ;'tŒÀóDÔ9+Z´Ì&<ºh86ym&nî¹1å4p¢˜¾Õ3‰¦ý×fâÙHT L¯]Y– g·_‘¢^ž­Äl6e\•‰tÓ>Áë½6Y»8h+¹UIg\\<Òƒ¼µ±v¡Éx¤šdw¯Úõ®º+ LS~¡cõš©+âñDìU‡³ºM8\ªD (FW‚Dt¾¶F 4 Îëƒr 6vs&Áóíc™¤,ÇÙÆÚy>1s3– ¦W‚òãàJLw—5]‚ƒ1 ®ÈsŠl%F'Z²þúý÷¥2χFZ[¥Ùù3%Ò>y“¾@ZîÚDss‹Bss_ ]dr…æg}ùiÄcñøý‚4óá]ÅS«Õj±þT~=½³üln¦DÊ/X²åå]¨ªdeŠåj-¶»ÍË Õó®NÛŠ G¦EÁˆoüÂt.üµ»sõvªªÎš•­O5ÂÝ¡³ÀÁEÙEŠXS(3樷*ŠZë•q­\ftaTïQd«t ¯u$Ä£áp87¼óÎgÂ/;cÌ1º°°¸8˜?Y"è¼ “ˇ}.SÂ+ȱDZµàs™)>3z+]ÍlãÀø†+‹­®ºOñ4‹­N_wKÁŸÃÙݫӬs*[ÍÌLp“gU*?7´Þ› ërÕÚ‰R~¡—¦3ÅÚæ;òŠ©wWpyázˆÓ¶­ e%ÓÔ›o#Kg“½DyÍN3Qmïú‹oIëcMKeF¶ÕmPv4,¥{•1±2½Zš4á¡½ÞÆÙêÛ¥i:¥¶où²Å¸"[‰b:²gÌÔs5€Û‹Ï–7i´×Q½ÑÄX|9"‡¼Œ9„®"¢šÚóDOÞ«fМӪÐQñÔÞä\ÛØ*¶­Ý½ê“'»]ÎÀRD§ÚÔyì%Š©v§»¼H=åSUb†hþNªìòvšk·2£\Ju[¤7ÌÙÃáA"£­#!"ŠÏÜŒv XKU$Šé[¾ ß^o%"k};…BAß­«V)ü”ÂëP&*5¹n XKmu/'yÚFyÔ›ÔÔž'ŠÇ“÷ˆjöÀž«¸ìŒˆu6éÚÚX[›}ÆúZöyb%H=êyÏÆsÖ–¶ˆŒÕïÔî^öX,ÖÊ®½«n+€J¢aeX¼°P?yeXšÒËq¶úv …ÔW¹Ii]G½ãÄtd9NÄS.æ%¢ørd»K ‡õï±]d«3µf¢øÝä6Ù evG½Évò.™kÏ¡x:æÛæV}ÆìSË’^±³uS¾ýÇ{RÏÙº‹ë›)²KmNm®_¬ˆˆìMÎÞ¥ˆÛn¯b§Ù+öR~¡Ã)÷VÕmPö*º åta)šÌNi°Œ9 Oʳ„'‡ƒŒ9ƬRX›àyyŽo8u0žO,G¶‹ì¾ÈVg°7š•Wé¥â‘åM¤J•›í†jîÅv¶îbîþˆ§7PiÔ[ƽu WklhSN)¦ˆ§ºi²R±¡Æ}Ù+Ù|ãÔÖ Ævah½WyižTyÉoE¡‘¯v ËÏ •YZf%Áq¶Û7jû¯å&<˜{¤Û‹ÙÌp»â";iÚC|9’î<«»ï[uuœ×j'ZGFZBDD&—ï:o0ö˜CÞÐHkHJ6k¦pœ×G“Í#^¡Å›ÝÄi¨jdŒÝž!¡#ó»ü/9iã Üîž^²fg©ÖØí›ó Vk¿ô´s*殲Åë± CÞg¬Öâ÷6vû¦=«•'"Ö9½ª˜øì›#¡Ãòš<{¡¼º›<¹µÓ1{Y#_|+€jp÷ïßÇ((½úú›ž¡0ÇŒ{ü›ž¡vvv” yŒ œXˆ†àä:…!È·³³óêëobŽ=ÌÖqúôi À±¤™7ŒÜpé1€ã ó†Ñ0¢aDȆ  @4 €hÑ0¢aDúD1:ÑÜÜÜ<Å“°_8&Ѱ(¦}ÍÍÍ}´˜_*VVnJ»hÉBð G%æ8CíyâùÄrd›ˆ(¶âyž­Äˆˆ¶#Ë ž§óµ†ÿŸ½û‰mÛÚ÷EÿÑI'ØÃ¸t¨8ü67]€ûÙƒª»…Žá…¸¯—¯%pèE5œ\¹á–yyW \W†nÑAy6P¢¯Pœ#øø É®:pPµÀ;¿¨àÆL:³‡]ù øŸ"%Ù–Sÿù~Fµ¸¸Ö"üôÓW*uà¦4|¼¼9™×?yòäñcíÚäÈ:™JMßøþûï¿¿1}ˆæÀéóÆðEù™yZ[Û|ñ’h¬ùtµ{ñþþmõióÆôôË›DÌü ï~UýT®<··/æµ/Ä1?gÖn¸fowçî|cšˆöö6ž®Ñ;çÏ9Á·øÅàÙc+ÜÛÛxð—[kŒÓÿÏÿ9q>õÿmO^ûëÒ•±TÊ~w•&ÿ¯ùdû“ÿ¼Jówÿv݈÷6îxÛiÃÜÇ7¦SýÛl‹œ.«§OU{¯ª‹/?g"êv/^ûë’8–ê³?RU÷bÞîšýrãþû·×üÆt»s^öâ£áz½|™Íf­·Î_ìv7WŸn\ëÅÏDïÌÎÒ¿ýÛêÓëôt•ºtñü[¡ÈÕÂ^U?•+ò§ ÈoÝþô¼ÿ–(£º}Uhˆ·V0~½"Ž9 lš“Å1zÐX{øÆýûüõ·.ö?E$ð½þÖC;~õ¶Wµ‡ñWÆR©¤Öîím<øxy“&¯iKâXjoïÕÃÅK×y;-Þ³:•ÚÛ{eüòžöxi,•ÚÛ¸ÿáíÊÇÎÛÍ~Uýôö8Ëó!‡+r}ÎI’vww‡Š†íÒÞ¶عóïmÒÏ/šÆ›4/ó<ÍÓêÏ/šç&òÒº{{¯Œ6»ÝÉ÷„sDtîŠ<·|kõãÕ•+爈¨Û½è¼%¼wqysóãÕ•+c©éëwç×n¯Q ylÇsCT8';›ÄÏÌ3kk?¿ŠâXó骛±nzÝñj»ö‘“Éž¾qcoïÕÄSôÎýèvçfx":ÿÑfp{óÅK¢sƒZÛ›ÿvgGÇäÅS©1ñŸDrû6×]]]}ºqçé×ÐY쑤ão÷%xqÎ]דÞJœ)Ñ;§RÓ3ó´¶ö¼rûy—æežˆfæiµrû91 Í͸ÙÜ—/6‰ažWä+ö‘ Cv¤ðÚž{A”š¾ñäÉ LcØ\þvãÊu~p…üGù‹«ËËßn\™yºJÝÉüG|¤ÄË›6vÆžbÿ3 ’«JMtmr­âO±'W¤öSx…SU7®Î•¡úû©àlzc_¥ß:?IôœˆhÞŽ}íø˜ˆhÒ›'AoŸ¤îft¶ùIП_üJÓcD¿¾ø9|¤vOßxüxæÁ_n­[a0dÞ›¬<_{ú€Öfò=a,• {ëü$ѦۆA§Ø¿~U‰_<É‹øWo=˜ùÛõéT*vÏ ŠÈ˜xñ¯3’£ï À)·¿ç ŸÞ»Øí#Ø·ÎOR`òƒ2ÌšöðW7fݸx\š÷` ûInÀ*ã„wó3Ó©ÔÀ c¹¶¶lU$\f˜çËß:Ó'^U«M:·¯Sôѧµ{{÷½‡Ð½uþb·kcÒþˆ_jÞø"gqžé1Üø€g¹açù@”éÎX M<¿x|þþ‡·å*DgxñØóŠûÖÜÀ/ÕV½©DÔ¼ö×ëüFÃáÉåçω&{ƒá`m·?X#²g'§R”pŠŒéXbUÓ×o¿XüË_œgGÐäµÛö\Þäý½öóÇËþœ‡ðYî¼xÿ¶;’Ã5BR;;;‘]õz=é7wp<¹“(æõôêß2“ß¿¿ao;“(æg ìË‚*•š¾>sÿƒnÛ/½Ç'¢á³»Ï¤€ƒÁL @4 €hÑ0Àéwð_Ñíí½z¸øqå¹Oõ{÷ßÿúù?RßèÏ™¹;oL§¼ýÞ^ë^ÌÿËÿ?øÏk yºÂÆý÷o¯1vóxjó\^ûñ½ÞÂoZï£ç­‹ù¿.Ù‹e 5,15 ÷8øxys2¯=~òäÉãÇڵɣmhóéêÿšùûÿséî\·»zk±újˆö^Uo­v»swñ(­jö»vmõ€gìvçî<~üäÉ“ÇwæfíÖâÃWîÚwÞ[Zþ"ó¼òñƒf `ýxysÞ~÷É“'wçU®å'Wo½•“NP4¼··ñt•È]9•¿¸LX¾ª~úëÓê«à±Á·Þÿ´j‡˜{{÷ßÿƒ€÷Ý¥%ˆhoïÕ‹ŸéóçR©éëwçæùò‡¯ö^=¼³üœaæï†r¥ ó|ù['†š7üÓ/¿yÛï¾ý&Ù ¡Ý_»½æÆÄkv û…8¶·÷Êøa³Û|O8GDç„÷..onþ`¼ºre,•J¥ÆÄQàêêêÓë<ïIJcúÕøas^ö’¬ç®ÈsË·Ö¦Û“¯œ‹´öüy~ùÖò·Íó´¼Iów¯œº|àX͋ѿLj(’xu–Dž›™N¥F•“í?DC¶Ç*xáÎ;jM4[·šý;6"Ú\þvãÊuž^¾Ø$o;ÿÑææ‹—DcöLß³†ByÛø£^¾Ø ffí ssskkk·ÌôüÿèÚäZåömb&¯}ÄÓ˧ƒzüe[·;÷?ùß(ð¸ûï߮ȟ’GåîÅü_¯ó‡ºV¿¾ø9ؘCnyßÂCÞ§Ìð9Áþúݹnwó£÷WtOž<ùþ Ñþ_*5=3O ³öt¿S^¾xÎ04?ã<³bÀ…ƒø¡ ÀȢώûÁéÂvð:?3J¥RcÂ{“ óüãW"úÕøá9ÃL¾'Œõü˜Ì™flMìQM?ÞÛÛx`?Dâ:ïÅ©«·D&.§RÓ7¾ÿÞ›\;8 OMßøþ{'ºí9Ê sŸW¾æºíYôj±qÀÃ"œ'Ĺ=8D}ì«0Ðaž7L´êÍ ¢îä5oÂÀ˜øÅïß®ÈTˆ“nS©éë½öóÇËùÃJB¥ÏÝ£ºswì£~}ñ3½33–Jíí½z¸xkaæï8mð¦/ßZ<ÿ/ÿu|ØOÁyÃ=&™Ÿ™§µµUíáÿþ§ñþQõõ¿ýõüâÇ^»Ý¹»×µ!ð¼á>C”JMtmr­²vûÃ5·ÙƒÇúÅo;;;‘]õz]’¤ÝÝ]oÏO¿üvÔ3P“––°³x!ÿ-øà€>"áko|ëyã˜÷$•¿øWަ™ÀÙu\rÃöïØnà‚Àk„Ü0œ]ûË þÕw28žþÓüwG ‘Z¼Š€ãF)}ù‡?ü!öÁ}`¦œH #>"†Ê©†à5:ØœÞ7Îðˆ*WX ,eÜíæÊ¦"àV83Þ8ÛÝ—šήÑÌ”°t™óæ*ï N0TÎÞžD`é²»ßÃP9U×eg¿¬[W¿?\Þ~ÃÒåÐÑ×ÉöW[\{¢Õõt|¿€ã {q›BªéÌ10ÔBû棦-Óp@K— T¶w–©à†y†Ê)¤šöþZ±]ðãÅj©“wÊO”7, ÖSËÖâʛ剒¢o³³Y*i~ü©•(;Ã9£w¨ÚfÙ>í!ê×ñtŽE4ìgs+éš·i(Ðêl;[‚b‡ÈÖzв3%A‹T_·ì÷MÿPVʋՆýMÅ•Õ./–½)BFlu¬ðûF£*æ¥ñž¨w‘÷’ÓCÕÆök3V ?@`ôF>oXP̲Êq<ÃQΙ–»ÝiMd¼€™½0Ñjl±vh½Pzæþ”­K¹ŒShâBLùíN«µr™¿ç¾(Û–ŒXhŠ Ñ¨ŠÅn^pžð~æ ÇÔ6°=ÉIàµG줙93%"ºtóQ =,(¦©8‘®j˜Š@ãé©ö–E‚]ÄÚjO¥e»‚…z¶fjΡ†Ê5ÜJb˧§Ä%møß½ ±PÑåqªTżrè@¿§¶íIêø¨:‡r¨yÂâLùUIq§jÌT×Ь[wÎm”¡ªþ«V\yv6œ[²HÛªýu½%f7à>øTÜžÚ¶§OÇGÓA8ŒÑÌ”ðÓÅ$(•çí¹rSp ”ÝDr7W6D² ”¼;1àÒÍ¢H·J±˜®ØõÊ+i5]öë_jÈø r±²P¢b->ÝZ]äW¼ƒŸ7ÜSÛÀö$t|t€CHíììDvÕëuI’‚K<ÿôËoï¾ý&}þÕwjñêÑ·ÊP¹Fæ4/„qê;ðº)¥/ÕâU;ˆõÂפøÖƒ•™àìB4 g×ñ\™9ò´ÓçÔwàd@n Ÿ~‡z¶Ú™oÞïØ¯Ó:2€høt}ÎòÎÃFnv70Ô‹8hhh鲬[½Ûîõ‡‡!o@4ü»²t¹Ð.>j6›ÍGÅváÈCÍ´p½î-üÜ>2‚‚çÇ¢á# >¹2K—e}› •Su]¶´ªAV`;,T’㱫¡ò®„\œ¥ËNXÖu7cg­×©¨Úëg°’Z¤úúÁÂá­h« •+¬0+‹<Ïqêá—Fo_Ãpk½Þš¸àí¿{›üü°¥Ë\`Û=sß¡8Ú±éLô8ÿÝ¡.ÜVBý”¼¿ß¯Ð9KL_úŒ[l#Cç kÀp7[̱½×ŽÞNo¾ùfoo/¸§þ?^Ú·ÿËÛ;¶¿ùä“o¶C[?~öÇ?:û~üìOú“·íïýãg?:t6£œ­½½½?ó {E÷¶¿ùÄ{¨%T¦çåú´ªOå¡£ès”³½ýÍ'ή?ûÓŸþämòÍvÂPD[;ôh{~‘¦ªØ>†.G¤Â@ï“.kÒ¸Å62²ýÍ} qYû4þ7ìíííÙ‘j$|MŠo='s¦+å'JŠnYºRÏªîªÆbÞÞ2¹nÎÛ[íèñbÙû?TÀß”Þ/ú­õ:eg· §´ÒP9Žï‘œöKjUSÁ&ŧ¥FUÌámöÂDµaØ;r¹œ·í¦ûžFÛ­ÆÔ¼u©Y)/Ú§ªªØ>†.G¤Âr¨É±}‰­3©‘‘sI€ ¼¬C GîÚn!#..^^èæÊæ¨fÀ ŠYV9Žg"Ê-5ÂÞî´&2ÞÙØ ÔT¡©ùH¸á«Ý¤Vc›ˆ ?ÏØhTÅŒÝ2beË"jTÅŒ™!®a(ã[mûÍØ¡84K—JÏçX—r™Cõq»Ój­\æï¹ï$T˜Ô—Ø:“¾ôþý0LbæX@4L–^©æ–L…TN52š´ IDATF÷{-7~µty¡·ÞñôT{Ë"Á™»Õ&ÊÄîŸJËDî4Ðhö½ÛÍ•Gù ³ØSÅÃDBf¢²®OTÅŒB‰…†žnOd´¡†â u¡ž­™ë¾ä‡ëãxzJ\Ò†iXl_.Y|#×ؿ†l@¯Ã £t2gJZÉþžY‹íʈá`¨1S‚¿cg³TÒ ¯ ­à~Ån…¥+%÷‰ ‚bšÍ戶Р6É=u ÙF£:•ïÝ&OÓ½{+öŽñôÔʽ{ä¼9p(?Ö…êaûÈÎfÛ…@‹b¸;¾Î¤F†.½¥ëF¿ 3PC6ŽÜIÌ [z¥*æM÷YYÑg´ ‡®VP2*Ï/Ú/råfoÌÊJZYåxž!¢K7‹¢;S‚•´r‡³¿÷îæÊ¦4ÂÇ— r±r™çÝŒrä%‰ÅtÅnvì©­­öTVf{¶íˆì’·‡Šƒ o¹Á»s‚£7„ø>²’VÓe¿KMe—5¶ÎÄF†/ý#m H‡ãí½¾p´R;;;‘]õz]’¤ÝÝ]oÏO¿üöîÛoÑç_}§¯bÔˆÈþ=ó;‡,Û`é²Bªý˰à6®Ýï~í`ĔҗjñªÄzákR|ëywª±’¦ÅmÖ¢€³ ¹á =Åì ·×N0ä†Ñðé7Ê„a4p¥p›aüÑ0œ¸(a`¬)pÐØÂÒeÙ} tpާ×vNèÍ`鲬oûGˆ†ÁÕzÝ{vqpŽÿõ:':ŠfãF@4||þoÒå@r&¶Ñu™çyžçUƒ¬ÀvX¨$ÇRU†Ê»â“?  •sj fé²»ß#|öpžÌ¯Çß×Úh‚í€ ·­è ØKI¯,ò<Ç©?†_ƒZØèö Ñ Ö·{†¢„K{-ú_ñCÞfG~·õ¯Ó?Ö­Ð?…¬ëç>®ÑáÚ¼1Fp·ÇÕ°aî0Úl8…vz|óÍ7{{{Á=õÿñÒÞ¸ý_þÛÞq°ýÍ'Ÿ|³Úúñ³?þÑÙ÷ãgúÓŸ¼mï?ûÑÙø£³-àlíííýø™W8¦h ÀÞö7ŸxE%B…eBg Ö“TÞ>àE¨läTCê3~Åq/ÿ˜ÐÙ¤£‚Ã>`ô¶¿ù¦ïê7Dƒ.}ÒµˆiÒèn³#¼["ÍL¨óÁË)öÇ]£ÃµÙ¿1·'×0°Ùûúì½½àø²#ÕHøšßzNæL VÊO”ݲt¥žUÝÅÕļ½%drÝœ·-¶:ÛÑãŲ· Y¨€¿%(± •õ°ÖëT”²‚\¤úºe¿oú«¾±R^¬6ÜôÔT\ùP=áòÑÖZá÷FUÌK,*Çñ=¸Ä9ŽIƒÐ_lã#¹FU̽ۃF•$¡_Ûú QßKßçZô½â‡½ÍŽîn‰~ŸP&0Œ=Ŧb¯×‘¶Ù?Ñáïö>5 –}þ†ÆN¡“ú¼a!#..^^èæÊ樾Á³¬rÏ0D”[j*…L[`»ÓšÈxM`/L´ÛDÎBÈ ¥gŒóy£K¹ŒS(ð¥«_~»Ój­\æï¹ïÊ'ô¿Ð0A°ÿ¯Vìæ™Ê‘|lãCïõÞbôØç…B£ØkÛ¤QÝfGz·D†%¡ÎþŨsktˆ6Ntø»}` }†e€Áû –^©æ–L…TN5LeT‰7 ´ty!¶ÞÞãé©ö–E‚3Kv«=•–‰ˆ u¡ž­™š?I²áV[~<=%.iÃ÷DȈ…Š.S¥*æç…&šìïvsåÑ PBヂáaFo€ý‘ߤäkÑÿŠò6;º»%2,ËÄ#Êà¼ÍÁþnXCŸaÙ× ‚a€ÓïdΔ0´’ý­¦ Û•=±ÉPc üyPLv6K%ÍðÛ÷“yC-TýW­¸òìl¶]ý¾kÀSœ„ŒØªýu½å~‹+(¦ÙìaŽ2Nj|`”ŒFu*=Þ»=ÄèYºÞ·Ëû¢„Ëì]‹AWüP·Ù‘Þ-ÁÛr¨:{‹µtÞæÐ‰·¬¡O³÷ój6œN'17l镪˜·¿ºf%5++úŒváÐÕ JFåùEûE®Ü†+ÀJZYåxž!¢n®l:S)¥ÜàÝ/^/Ý,ŠîÓDb1]±ë ”'VÒjºì׿Ôäbe¡DÅÚ(£]A.V.ó¼›Q޼Ll¼m¶ÚSY™íÙfô.Ý|¤õmܾ‡È;uüµèÅy›íÝ–¸:ûóN±ßktà6‡O4‚»}` Éò?ÀH³àTJíììDvÕëuI’vww½=?ýòÛ»o¿IDŸõZ¼ŠQ;Cå™çkOã-]VHµ\܆cv·Xº¬ÐgÚìÓÑ_£Ø6Ÿ›a_CŠ{à„QJ_ªÅ«vë…¯Iñ­ç Œ+iZÜ6‹ØZ×Ç%‰%g†@müõ]£z3à8 œÂ,É<ÿŒˆº—Š5 ODÿGD|¯sÀYIkJgü&Á= Q † ŸzÁ‡Rÿóþ^­Ü䈆áw‹cF3‘~,]–Ýçç·–.»kJsGׯ›É§3TwxPãö;ë`Ç/|méŸ|R^–CÕ[ºÌÉú6jï1þ¾Ø jé²Ûî÷½Tû½] ñd­×½Å‚Û¿O\µÐɻ놘ùÎÂÑÄ{n7C§«eëÞé,].´‹šÍfóQ±]~XˆÛo¯u²$&œ+õ÷ÿxM+O”¯v¥4QÖ${‡jh)K¯TûFñ õlÍ]KE%(ÀY†-]¤¤,]vRnª®Ëv M5È lGï@ÉP²ÍPyWÏQ1'µñ“y²¾uà~nEi¯½¼²Èó§þ~iôv-1¬´Öë­‰ ^0Üú»·ÉÏÛ9Lwû“OÊËû+œl¶ô~Å%øðW!#¶:ÛñQsl‚Öé¯;Á‘×™K¯Ë¡Ó±RÞ=µ^§¢*¹km©¾nõÛß?ðvÎ%©¤è– {ç‹ÙºæwB+MˆbbmÛ–˜—‚ËVøí÷Æ$8Þ[±÷vpýÝÃüÕ3ÓÄÑð±ÀJª·P®¥+õ¬j§ÜªuR›Ífs)·²È+îv5fIÝj©“w’m~þÎP 훜3È7×1'eãqb{g¾SªÕ);J Æj½³œëæ–šMÓTþ~Ù{T 3ùF{»ã-pKÛ–øþŸÙÙ,9AèvçóÌÛNýý?.ìÿ­p²9±ò˜œtÂB¸–.ÈÒ2QžÓ_{’G>ØåØÓmw¼DÄ^˜p¢ä¤ý}øçb%µH%MÕ‚±0]˜Íú÷R¥]”3ɵ§§ª±«BÇD¥u£ß½*\ËÖüÛ¡ÿ_¡r ©n*½è­]Ü{» ~½ñp~¢¤è––‘›B2¹nÎÛŽË5Š~l*ào JÏóñ'í=ÄZ¯SQvŽäâ”y©îtÕ ä|[R#û› ž:>‘i4ª^dèn³&ª ÃÞ‘Ëå¼í‰ ìÁÞ Üàbî4ÜFÆŒYù+:¤~F)qäÃ]Ž„“#_h,t.VR‹í*•#w+å'Jša'†ó}[ÀJZ-[_èIë†:ËJ’Ðﶉ΋ö5üW#(ë>à”8©Ï2âââå…n®lŽ*˜³¬rÏ0D”[j*EžNÚsÒØC¶;­‰L0›H·°©ùÀD™m"6Ü £Q3Jt[Ȉ•-‹¨Q3f†¸†¡Œoµí7öVøj (採ròV-¡ö ©Ó¯ˆ¤‘uÙ…êÙš6òÔfä\†VzÆ05º° •Ïö衘WˆŒþ4SòZ-SM“ØHgØî´Z+—ù{îë.å2CjéòBéÃìû@€â„þŠÎÒ+ÕÜRÓ,Sa”SíŸF5›n¶ q?í9iï!ãé©ö–—’µ¶Ún\´ÏÜðÁ„O3ë .3l‡gõuÝÞ!dÄjC_¯OØoì­pì7T±¤,xÏÆÍ¦è3òÑ̰¡r õl(èN:ŧŽ^{öMñQóQ±÷~ä"=|ègl‡˜ènØãé)q©é3‡á`¨ õlÍt[ñO& > ­d‡‚ìMæ=|¥jL\˜qsÒØCØÙ,•4ÿ V$n3G<ó²<µ;17Ø‹ÀÄÜð$Ýñ4Ý»·bïOO­Ü»Gî›z+4Y¹_±Ð/¶*n“‚‡G‡4á! #Ë\ÊÑ ìl–ÜY¶–®x§HÚŸ ûç2ÔB»¨J¬=_"³’fšƒçij`–t`|Bµt½ïg*v6:ì;Ä_H¡Š2àÔ9‰3%,½Ró¦û3ÿ¬¬è3Ú…CW+(•çí¹rStÒYMŠ=„•´²Êñ}}Ý<íC p¼)¥/ÕâU;ˆõÂפøÖóî,a%M‹Û>=Ÿt}\’Xr&TÔÆ_k7Oåœrˆ†á4fIæùgDÔ½äMS@4|6bÁà“ÔÎ&VÒšîƒ!Dç^dub4pWrÿ[€bX8Rà Ñ¥ËÞckƒÛ¿ K—Ý…H¸£k‰×ÍäÓª»?<¨qûݵ£cÇßÒ?ù¤¼,‡ª·t™“õm2ÔÞcü}±ÔÒe·Üï{©F‚¿ÎÀ}È?.DÃGBPF¼ Æ("Ãõº÷€ßàöïK-tòîB$f¾³p4ñžÛÍÐéjÙºw:ûÀšÍfóQ±]~XˆÛo/ž¿›µ^Oýý?^ÓÊîBdéJi¢¬IöJÕÐ1–^©öâêÙš»8‹JÊq éŽãp¦¢aK—9K— œªë²QS ²ÛÑh,P2”{3ToÁ䞣bNjÅrðŒÔV´Uö+‹<Ïqêá—Fo_ÃJk½Þš¸àí¿{›üü°Ãt·?ù¤¼¼ÿ·ÂÉfKïW,KÅ/Åìô-.Aëô×?*ëz`ä½.‡NXÙØZ¯SQ•ÜåTŠT_·úíïx;ç’‹öÂuv,ìW,fëšß ­4!&/q¼Ýi‰yÿ‘Ŭ¤)BϘÇ{+öf ¿{˜?“`f:öNöîðáÿ”zoݤ%×™Ðý¸nö6ø8æØÑð±’ê­ÇléJ=«Ú¸jÔf³Ù\Ê­,òŠ»]Y¹¹ZêäÜ›ŸÎ3ÔBûæ#gÁäL#òEvÌIÙøC†dGiÁX­·U‚b–sÝÜR³išÊŸÃ/{ d&#ùv§%fûý?³³Yr‚ÐíÎ3æ™·úû\Øÿ[ádsbå19éð²ÉÁˆ¬@e§_T„2Ní°£N»X¾SªÆw9ötÛï±&œ(9iþ¹XI-RISµ`,LDf³þÍSiåLrmãé©jìjãÁ1QiÝèw3‡ ײõÿvèÿgb¨œBª›Jï]Oú€J½·nŸ î‘×ý„nFþ¸Å4URbgŜ̙¬”Ÿ()ºå…¥vÎɨ ™\7çmÇ¥E?T ð·¥ç»àø“ö9Ä™iÁ%þoœÔªþ¦Š²s” '$2FÕ‹ ÝmöÂDµaØ;r¹œ·=q=Ø[¡¡\̆ÛȘ1k·YëuJèW`”zŠMÅv9NŽ|©¸Ð¹XI-¶«TŽÜ ¬”Ÿ(i†Î÷m+iµl}¡'ßê,+IB¿Û&R8/Ú×`🉠®GøÀ}Ý´}ÿ”œh˜ÙÝïÓ͘au‚ætåÈç¬À‰rRŸ7,dÄÅÅË Ý\ÙUl#(fYå8žaˆ(·ÔTŠ<Á·ç¤±‡+4•#‰H"³±MĆ›m4ªbF‰n ±²e5ªbÆÌ×0”ñ­¶ýæÁÞ _žÅÜÁ1TNÞªE#ÔíNk"Ó¯ˆžbÔéí² /Ô³5mä^#ç2´Ò3†)¨Ñ²…ŒX¨|¶GżBd ø´§™’×j™jšÄF:;Àv§ÕZ¹Ìßs_w)—òPK—JÏ&| =Õévs_˜™ý) y¢>=êíþ!º p£aK¯TsK¦B*§£ûI¢Yº¼Ð[oìIûâ‘st»¹ò(„ÔÞ²Hp¦oµ§Òr¿h-¸-d&*ëúDUÌ($XhèéöDF;ø[áØo¨bvØ鎧§ö+®Q&66T®Ð.†‚î¤S yê„`ØP íb­9»Þ{ r±²P¢bm?מ•òbÉŸpÃOO‰KÚn3C]¨gk¦Æz×èùhgüpØ?¥>'êÓ£Þî–._¾÷Œˆº¹%³‰€ïdΔ0´’ý© {“y_©3…!07椱‡„‚fsÄ¿Ço•´@‰¹Áf&æ†'鎧éÞ½{ÇxzjåÞ=rß<Ð[¡ÉÊýŠ…~±Uq›<œÍR\¿¢±b¤X+®›–.s*G'd°³Yrç¤Zºâ"ir0ìŸËP í¢*±ö|‰è”[VÒLsð< C |ƒŸPg-]ï›^fg³¡ó÷¿S“›R¨ŽìOé'ŠíþÝ4TŽsfH7›xDœÄܰ¥WªbÞtõŸ•}F»pèj%£òü¢ý"Wn ƒN:«I} A.V.ó¼›Q޼$"±˜®ØmèæÊfO¬emµ§²2Û³m‡—Ü`/¸}à·"ÁKB±Ð8w/ݬň¬¤•UŽç™¤~õ»t³(R§§›†Vj1̳E~Å9£;t¬¤•;œý5{ð ûÝL?C+üŠWIà\ö“Ùj ëÔ¢åYÿ×Áwf5Ò6EÝ’9ΞBÐ ´ ÜÙGZÿàQÒjºìßœKMeÈ¿‚rƒwçxC:Š?¥è¼ßÅv¸n ŠiâßzH’ÚÙÙ‰ìª×ë’$íîîz{~úå·wß~“ˆ>ÿê;µx£vl*×ÈôKvYº¬jÇ›ÁíÓÈÒe…>ÓfŸ¾¾nžö!8Q”Ò—jñªÄzákR|ëywª±’¦ÅmŸžÏº>.I,9*j㯵›§rHÎDÃp¢ ³$óü3"ê^ò¦) >±`ðIjg+iM wƒ!DÃpÊDgDÃ' fE €hÑðð,]æüØTÞL´*gï §_-]v÷ûo*§êºìì—C ÞùõøûÃåí7,]}=P܉’Ú/ë[4tƒ9Ný‘ •ãä-ëpRœøgJ*·¸â,Oešî²a…öÍZSr)V AìµÂ¨l6û(Y·A3T®’®™Mw=±Õp—³¨–:~yEŸõ±ðê±tyA½Ð[Þ>`F›ÍÒ‚fHÎû†V¢ì¿²—ÌðcÛ¸%6ØÒ•ÒDÙÔœHÌô«'Ü`¢?›¦¥»O+Ë-a[8 NhnØO‚VÒµf³Ùl6à ‚µ:ÛΖ Øaµ^§¢ìDx‚\¤úºe¿oú‡²R^¬6ÜlëT\ùP=áòbÙ‹ …ŒØêXá÷FUÌKãѾTù ÅªÛÇ„%58ÚÁ©õ„켫كYKWb“â§Ì©|Þ° ˜e•ãx†!¢ÜRSˆh»ÓšÈx3{a¢ÕØ&r’½ ¥gŒóÁ K¹ŒShâBLùíN«µr™¿ç¾(Û–ŒXhŠ Ñ¨Š…z,: t*× ²œp¢ø÷t:ê@4|2›ÍJš)¹Á#Ï;3%éaA1M…‚3 ÆÓSí-‹»ˆµÕžJËv õlÍÔØH0JD±åÇÓSâ’6ü4!#*º«I,…ë±tyA½Ð[Þ>`F›ÍÒ‚fHÎû†V¢ì¿²Ã®ñ‘p¢Ä[ºRš(›šÓà‰™~õ„LôgÓ´t™çŸQ7·„EHà´:¡¹a?ñYIךÍf³ÙÔ¤À´£Qµƒa"¢VgÛÙ;¬³ÖëT”÷¹HõuË~ßô«a¥¼Xm¸ÙÖ©¸ò¡zÂåŲA ±Õ±Â滛—Æ£ýª.òA‹U·¿ 'Jjp´ƒSê 7ØyW³¶–®Ä&ÅNÓù¼a£Q3Š›e•ãx†!¢ÜRSˆh»ÓšÈxÁ3{a¢ÕØ&r’½ ¥gŒó!¡K¹ŒSÈ™v.¿ÝiµV.ó÷Üwåã±Ð0Aðyª±è4Ðí‡Ê5ˆì'œ(¾Á=¤Î€z Ÿ¬¤™’0ò¼3SÂM“‚a' 6 Î$OOµ·,ìâÖV{*-Û•-Ô³5Sc#Á(Å–OO‰KÚðÓ„ŒX¨èò8Uªb^ÙG“N”ÔàžeöÙ`K—/ßsgJ41SN§ÿ+:A1í/ôURœŸ‘êTzÜ‹cžQÆÎf©¤¹“´RìÓ' µPõ_µâʳ³Ùv!PìÉ"áp«þõ×õ–;cÈg¨ u¢@ƒ£lí§"Cå8…T{`1iN±Ó3SÂK[[í©¬ÌzÑrFåùEûE®ì$9YI+»Iån®l:IeA)7xw"Á¥›EÑ™`@Db1]±ë ”'VÒjºì׿Ôñäbe¡DÅš°ïÞÅ(±ÁÁFöÑ`A1MümÀYÚÙÙ‰ìª×ë’$íîîz{~úå·wß~“ˆ>ÿê;µxõx÷ÈÒe…ÔÐoêmØ'?ÀïE)}©¯ÚA¬¾&Å·žÓ÷+:VÒ4Ü 0 CgÖ‚!Džƒ§rÀhN¤!Ðñ0Sâwg +ÞJrÝKÅÚhŸ†ˆ†µÀj̆Ê)ú,âa€×åôÌ”°t™ó¦ *ï Î$0TÎÞž_`é²»ßÃP9U×eg¿¬[W¿?\Þ~ÃÒåÐÑ×QBFlu¶‡n­¬oÑž¥Ë\¤—ò7Û†Êq}O'?öBF…TÓY ÃP í›ìu…›™†)Zº\ ²½³L7R4TN!ÕYÞ¹V .\\-uòNù‰’âF–ÁzjÙúB\y³rRg€ 훵¦Ýî¡3ʱG ŠiZºÌóψ¨›[šÕgrÃæ§l+éZ³Ùl6›9Özвi rqê€gÓ¯••òbµáæAÅ@š5tºÄbBFlu¶ûíïSÏ>F&Ò÷žüw¿ò 'õÛÌ(+iöõª¥+ýÒp 7|DzrÀÔõ ‰Q÷Béã|néR.ºÖÊeþžû:¡Ø0Í>|=IùïŸTP̲Êq<ÃQn©9\8|°£Ñ0 …•4S""gΫ3SÂM䎧§Ú[ ö+k«M”‰Ý?•–ûÅPêÙšé.2g¨\#®ØxzJ\Ò爛¤> ±Ð0A8ÀIÝ_ì…'‹ Çeéòå{îL‰&bd€3 3%F@PLû›w•÷çeìl–JšûÓ-­ÔrcèÙ,•û{yKWJ”uæµñ¼0C-TBóÙl»ü½šz°§¤žhßÝ>’ Û…àOó¼±êÒþ­OOùS+C{”¡rœBª}½0i%?]LÄJZÙÏEw¦+iågÏ èæÊ¦Äˆ´Ë ÞE¬§÷Ô5]æùEûen©©´ }ëäbå2Ïw»¹rr,ì{¨¬¤ÕH^àîy³†;©’QýwË‘t.+©EyÁ™¢Ø£Å4q£€'µ³³ÙU¯×%IÚÝÝõöüôËoï¾ý&}þÕwjñ*Fmÿ†~"/ˆRúR-^µƒX/|MŠo=˜)g¢a8»0oøõÀ2ÂÇrÀh ÂPyžç¸ƒ=©m¸aå¸v¸vˆ†¡o8ã,JÕXz¥}óQÓ‹,].´‹µ¦Ä’¥Ë ²^Ó¢=¯®|,bò‹+ÄÐ ¿Ò³D³¡•èf­é€¥Ë ¼éœÌPUC°½C½QsÖºëy‚ÞŸMS±tyA3¤ý…¤Öz²*‹kðº 7| #Ý@šÓÒe'(뺛–³ÖëTT튕Ô"Õ×­HðÈV˜•E? êרÜP9U'Vý´epÉ9·ÏóÊ|n%ìOªçǘ¶jäàÞX¸Ð¾ùh)×Í-5›™Fonr⊎'Ê~+(1á,+åÅVg»ÿ•`/Lìÿz­×[nkpí^ä†O CåWìÅØ™&ëFZJi¢lj‚%‘˜!ŠæÙ ­Æ6ë'8Å,“Ÿì4T®’®™MÖ‰­TÃMƒVK²é® gérœ—–./¨bŠ*§è³N>3~r=”жìåå,]æùgDÔÍ-ÅM˜¸Àz+Ôõ_¤ÏhTÅÌ uü,½RÊÊ£¾^DÛ–˜pí^ä†O4?íWIךÍf³Ù |on­×©(;á… §xA1µÀâÊy±ÚpSŒb ‹:]b1!ȪÆîïSO"VÒìî×Ò•žÄ¤«‹üb•Ú[½YHk«=•jª‹îäà…ÒDY“MFOOEÎØÿz9¡¸€k‡t1¼FÈ Ÿb=yD'=Ú'r£î…Ò3ÆùìÔ¥\&þt­•Ëü=÷uB±aš=’zBk*†Êî]æK~ÒP¹BuªX×:ñ_tÊñà0OÕeŽk‰åárž¼4®¢a*Þ2%7²ãyç›w7ºsr“‚3 u«M”‰Ý?•îû¥¿¡.Ô³5ScÝ—\#®ØxzJ\ÒÿU÷Aê±tùò=÷Ûö¦Îf\ÃPÁ‰ MÅÒeYWý€XȈ¯ÄáXº¬˜1àz'iàÚ¼&˜)qJŠiݬ’âþD‰ÍRIsŸ¦•ZnL6›¥’bméJ‰²³¬* ~ú•¡ª ¡ùl¶]T`¨{–Ö~ë1TŽSHµ»—„ T`mµ£g»0þ=œ Û…àï¿üD°íN+ôû¼×ËhTý9¸v¯ rçŸ~$b%­ìç ‹¢ûm;+iåg¡ÝÍ•Í3¥Üàݯ¿ƒõôžº¦Ë<¿h¿Ì-5•ƒv¡o=‚\¬\æùn7Wv~7fhFåùbhå2åʃҬ¤ÕH^àî1Ìaz±ßëemµ§²2K¸v¯Ujgg'²«^¯K’´»»ëíùé—ßÞ}ûM"úü«ïÔâUŒÚÉ}&.ºï‡ž;¼Îs‹‡p{ZER3ÎøµŠRúR-^µƒX/|MŠo=˜)gœ éÞåÑ®cl¨Ç_¾ç?^a0VÒŽ "€A0SÎJÔ›ôÔVÒšÒÈÏe*rDÃp"ÂAÀµ8³0S ñe¨© ˜e•ãx†!¢ÜRs¸pø`G¢aHÄJši/af¨Ï;3%Üämp&Àxzª½e‘àL!Þjeb÷O¥å¾¶ºPÏÖLu_r¸bãé)qI;|¼7’z’ú(dÄBÃPá'u±ž,2D@s”¥Ë—ï¹3%šˆ‘ÎÌ”A1íoÛURœŸ”êTzÜ›g³TÒÜŸni¥Vp¿b/oéJ‰²³Î¼Ö!žf¨…jB˜>›m‚¿WSöô±‘Ôí»ÛGäb»üiž]ùÀ“öoÅxzÊŸZ¢Ø£ •ãRík‡IÃgrã䥋­­öTVfûË~þ¸(º3%XI+w8{^@7W6%v@Ô]nðî,‚`=½Í¨é2Ï/Ú/sKMå Ýé[ +—y¾ÛÍ•“cÉ`ßC}d%­FòwÏ›½0ÜI•Œê¿[ޤsYI-Ê ÎŒˆÀÅ%(¦‰›àŒKíììDvÕëuI’vww½=?ýòÛ»o¿IDŸõZ¼ŠQÄÒe…T-!¸ú‰¼04¥ô¥Z¼j±^øšßz> ¬¤i€ãó†àìBnøõÃ2ÂÇrÀhN¼¡žËg#¶tù„-±k¨œ³Ô3Ïó@4|ð`x½î-ôprˆKM‡YžpæDÃÃ_]æü©Öz½5qÁYÙÍK¸gª“ˆ Ï/°tÙÝï¿a¨œªë²³?œ´õë .¬,o¿ÍUÊ] ±ÕÙºµ²¾ED{–.s‘^Êßl*Rͧ2öÂD…TÓ_Òb»Ó3j¡}ó‘“pÍ4œHÑÒå•íeò6TN!ÕYf¹V .\-uòNù@Ò6XO-[_ˆ+ogy·CK;‹ϰɓ}k;'´–,])M8ûóR•(ÅJj±]ñÃòFUÌÿ‡qA1M•”¸xÑðÉãçD+隆V~3U;&"òS¬‚b‡ËÖzвó¾ ©¾nÙï›Z`åà¼Xm¸‘ãT\ùP=áòbÙ‹Ì…ŒØêXá÷FUÌKãÑ~U½yÕtÍiKRk£û§ìf¢îà0°’æDíéJl’Ñð)ˆÅ,S Ï”Øî¸Ó(ˆˆØ ^Àlé²ÿS¶Åª_elùíN«uï2W>ŽqÃa¯‚Z¢90o8ßYp¢Õ¤ÖöìFåÖVÛÿL½Nèꬤ™’øªÏ3Dtéæ#7¯k4ªbFñƒPÅ4;Ò]P Sh<=ÕÞ²H°‹[[í©´lW¶PÏÖLÍ 1 •k¸•Ä–OO‰Kš2tÀ)dÄBE—Ç©RóÊà²m"6±µ=û‰2ö¡r±¢èÖ8Õ'2Þ Ñ–._¾÷Œˆº¹%³‰€èä†ř櫒âüî-0ã–ÈPc¦É†æðZ)öé†Zäz[qåÙÙlpnqüÉ"!n«þõ×õ–›³fÞpRk£û[¡þÕ¿þº>ៅSHu²Î BaÇéY™ÙK[[í©¬ÌzÑrFåùEûE®ì$EYI+»Iån®l:IeA)7øËü=""ºt³(RÇ­^,¦+v=òÄJZM—ýú—šƒ2¾r±²P¢b->"­.ò+öV·{©XSØ~­ í·–•ò\%]ûgï#ƒ‰{ Wjgg'²«^¯K’´»»ëíùé—ßÞ}ûM"úü«ïÔâÕãÝ#K—RC¿©;4C噓•S5TyKí(gJéKµxÕb½ð5)¾õ¼qêÆ•4íÌß –^igU„¼!8] •+¬0Ì¥›4ȆGAPLáä4ÕTpņÃ`Ñ0‘äg¨ÀïíhfJÅsŽ˜)ˆ†  > ½½ûï¿ÿþû÷7öö‚ÛGtŠý¾ GíUõÓ>øàýO«¯^ïø÷¹î¯ç–87ÞÞÞ«ê§ïðÁŸV_áNDÃCýßÿAÀï&ñþïmôÝžðÎà1Ãs SóýÀé6îÛ…_vrª½¿WݸÎóû)ÜgZBôŠ ï]\ÞÜüÁxuå ?3Ϭ­ý`ü*Šcͧ«DÌü ßç9¹¦½Wy˜SºÝŠB_ìwܺ݋½ý=G¿Žj(úÏÆî{ sÃßþpfþÎõéáþ”ëPÀ‰5äúqo¦:;†DÉÿ¿¾|±I ó¼"XqCiê R‰ÈŽ^¼l¾X¥ÉkÿþßSçß–Ÿ6gè9ÃÌÏ𣠧o¿x"’÷iõÖƒ™è‡½CÓßÅaþÊì[Žˆ˜¸›-ð)íéÃÐE»å§ßkš7lÿ¯ü­úÞÞÆý¸ÛÙÁèóçÏ\?3O›ÿý¿?í“ ¢g·÷üuo’¥3KØžjy÷:OD¿?D(üêáâ­5wî&&1ßZ<ÿ/ÿu|ÈÖ÷NÚîÌP™¹;ÿ{÷ܸyß üt;ÓÌÝ›:vI5tÆ› C·ž³§„mMèĪDÅaèÔ!ãh”+ÃKÎužÔ#}ë‹ÊÌÝ¥½1#'›R­†M¶í°jo+ïHM\'“’•KäÈ1Ù™¼±±l²±—±¨w«7—q‰î@"¤(/%~?£þ=ðüáÁC@ŒÁqBb1~=’=¸¥n^¥‚ùÂ-ÔÎìB~yÂvrÎðBº6šÊ©{üаlÇðˆ'[­úe¤Y éâÙ-IÛk‡B"U›SBgFžxªuœ.g£*ªÍDY ­•·WUqÔžâ WôÒÎÊôL<ñÅ„ÀqÞT|#’™v-·ZŸ•|È8“¸›7o¶LZ]]œœÜÝÝÕ¦¼zãmŒ;”g0wl/à8md¹¾2Qžpb÷ç¤ýª%|mo5çPYÐCÚÐ[8}WÆœ3¼°Ž½ƒ†G¢aDÃã†M]º|•ýéâ£1÷U ¢á³é™§ŸD%@¿ÙÝÝ=þ¼á¯b-üágÿªÎ¦¿ü›¿G% €>uéòÕ.®Ó~õW0, Ñ0À B4 €h`€£ásx ¢a€†Ñ7 €hÑ0ô>–åòÜØL‚³k /U´Ï‡›³ý ŸC4 pìhX‰zEþàk•±ÀìZ‹Šèo{û¬Ãƒ}ëÙ¦¿sè`ìÏøÇâ9ÖGÀ‡û}…äúzRýE­ô_4Üè4f "Æ~ïk?˜y€ãäW¾üáÿúíÿò¹÷.}kb1 x4lì>Q¸’IDATôÅ©)Ѫ¾<ÍU•ÏîX~!ì$ãnfw|q>ìäÚ×bîØâ|ÈÉqíkéÒŤÀY$ €hØöA-3""y¿Áö8Nö~8Àþ±ðÚOßl°wÓÿì¡„v2öñg¿ÿ…û9nûꟙ]™øéç¾þøo‘¼½45‘yý·’—û”“~øg% ôسßÿ‚@Û+±O.¼öÛSKß qÊb×xžˆ»[™¨lÊp³½râC •¨ÔË—J¥|Ì]ÍE§–ëú”YÅ|ÌCR6½R—e"’åúÖ‘|±X*•Šé_ÍEæ*-o1s3¦ÿ\È««™(ÀÀEÃûr§Êmž}åß­ïŠj^Lûý~¿ß?:š)›åúֆĘ{dØADŽP4À˜´±Uo®ÂX r9\ˆHªmÇ9ÃO…Ê Y¯/À6˺µ|^uýgeõ#Äh¸Á:ýkñüóÿ}Ô÷Èï~ð£3Ï3÷]þ‹O¾›ÉÊ,Æýôc¿¡,ùËýÚÖ_cÌó¡~c¯Án{Àÿï»¶¾YÛoì3‡ã."úñ·Ø¿÷mæúÝì…ïmí½uã'Dt×{´ ½ÏqÛk°}æÎ?}/“[7ûØçÆ››í¢8öÿÐZJoÆ ›Ç™Û5‰x¾š‹Žçš¡´³:,“ëËÓ‘lUÁóÔÁ7”i¢-ƒ w´¼2R‚±àÿ|ñâ}'ׯ~á?Î=1ÅrþÉ;HDÑh°=Ž#"YþÙ›]pÜÎöœ|ûoÞIT•~ú³»ãîþ8/Þ¬½òfÞÿùO‚~òâ7þoy˜~ÌóãÃÂ^ƒÝÿØçï.þå?}iüŸ”ÔÇþ×wã§l–ç¥ËÑ]>8–ÕÍbŸÀ-‹†;1äò“Úugõc;Y.ÏE²yâùù°“kJîA¢k¿ÑÙ½Y¦æ¸ayŸ#ùv—‹è_®½ñ³†üëthÉòÐЈ®ý¤ö–|“äzí "úÀ{ß­¬{߇~—=ÿÆâ_ÿ˜îþ¬×ñë;ˆ~òò÷‰± ÷Éû "¢Û>ž{îãDDò?uâ¼PüâWñâ½44ôb×>öEñâ}úc™Ñ>áVôÆÉŽæ8çðˆ‡çÅüÊŽéf,W´ÛYÉ›ýlîä8sÑ0ëôO&R:€÷lûÍ7‰È}çíí³¬Á÷>t7Ï_ûþ+oí7Xý•µë<ÿ¾‡¸Éû Ö`^ï#tý_®ÝuÇílÿß?4J¯¿T¼F¯nQ¯/À6›V—IÓúé·œ­¾aý‹è:yGkW¢,×·6$Æ<#ÃÒú7¶ê!ƒ¡¢Œ¢!‡ö/Ç9ÃO…uÁVAéDô¶,ìp] ’¤Ú6‘£%¹áwV’ÔÎhÖÆV=¤&Ù ï\ˆ$ýg©¶Mäl+ªõòó‚;LëÊxºeUìØ-¯ èiݽ͘X$“~}cÊ0‰€Oà ’(Š›•D{ïðÎJ¾¹×Þð:b3j=×ÛÍiÁÓDÜ#æÔ°‰ l×$âùj.:žSfð<™Ä—-ôwóÕّٮIqž([ÌR"×Ùæ7©+ó:´¨Š#ÊÛQZ÷©,•’D$—3ã)‘ˆ¤ìR9”ð¹ãäúJ¾@Ä}^"òú‚$Š…üÊ„W ĵðš”QºMâ%ˆÐû}j'5nØ^(…I ž 3s¾µ„—†\bR ÓçNhwóãùù°“k>¿âHC.‘t½¶C‚“h§vÝz–Ç5tR{Īà†u%pœIVÌ«B)Ts»måí4Æ—:B²Xôi‰rœàkïî=è æäúÖ†DÄÓAÌKDÒÆÖŽÚ/Ýòx €wR—㆕ˆçÅüÊŽz)·¹ƒ>ãd¹œ™ZVÇ׹܌)&Ç9‡G<úµd¹œéüÀjZGgRI®º±µCD;[Zªá,ÏÈð =ÛË¢àfue6Ý¢*ZR1*oh¹9´›”8;¨ið&fŒf´aÍå¹™cÙ„WË ¤KMéÓjàÖê¾oXH®ç]SÑ\Ô¯Þz?HÊqB"U›SS@žxJì /]™ñ”º–Í~AŽ‹ñë‘ìÁ~{œá…tm4¥Ë¤Ù¬FÁvżàfue>ݼ*¬ËÛaZô}»Ì׆4pœX[tMG¯u~¼¾ ‰¢´±Uw!2+u‹CÙæybGlA–Ësc3b³’ ¬¯ãý=ÐM.cXÌM…ür]V:†Ý±X€±–ÎË—J¥|Ì]ÍE•1¸²\ž‹d%òÄòÅR©´¶–¢ô\Y–ͦ«ñë‘|±X*•Šé_ÍEæ*Z*)‘×RiJÛ3@´]“ˆ±€ [¤K^_€1’jÛ¶«Å<ÑÖÅ:Ï6iñq©TB( p+£a"r…¢A’²K•ÊRV¢`4äÒf)ý¯Œ¹G†DäEŒI[ºŸ¬]p9ˆˆ8Î^HêÆLç8gø©°Ú;«D¨…Ͳ,·¦2<ân†ã62ÐÂ,?æµÆ‹©ñqý¸aÃü´'zœl3ˆ†h²=ÔõÛ7¼q˜K¥ˆ÷Ä'¼´½y0k»&ÏWsÑñ\3xT:Yœ0÷ˆ915.*sébRà8“étx$ƒº)vŠÈ’ÃuH:*-±¤EºÖÚÇ Ë²Q~ íA¶à–GÃäEÙ™£!‘~@ÁËCL2þ™3¼P ÉåÌxJ,ÌÌùÖÇN÷REÉÏχœ2|¶ KE $i§vÝFdyÈå!¾*nV‚`•ªlŠñøùóç1tÑð€2ÖxT ,»}ïÞx•ƒ ÷ùƺƒ‘€hÑ0Àà07|åÊT œyÜÍ›7[&?õgŒáûÎÙ\àìÁ¸a@4 €hÑðÉ’årfttt4S–eì¸UÎu´´,×W¦#¹ªC3wlq>ää¸#cß¹±™g×ÂQ ôc4,×—§#Y©Ô*1ndl#¾8vvãrœ\_O¢úà–2xÞ°™rf4%òt1)¨±¯\ÎŒ§DH¯'%8ùƒ¡†Ó Ì®%¼Tié-®/OEsUew,¿vR³SùÐ6™[ ¾•è¼Êó-Ól2è^]]ÕÿûÈ#(éf|^Ý<¯/À …Âf9áÕ&+±l}y*šKM¹ò a!±6K‡cß–ÑÂJ(¬[1:Ej@¬ß¦þfÓ+Ãó!Uæ"Y‰<ñü|ØÉÉr}ez®<¯n¿¥0à&''í¾}CYZûÜÑË8s ;ˆÈ1<âÎJÒÆV=rX®"Ëõ­ ‰1ÙŠŒ¢ÊG‡ë‘$Õ¶‰šÛ¼àrqœ3¼4Ì? ¸+W®˜Í27ÜíéÔðÔ(r5³]“:^‘ㄉ¸G̉©qQ™¢Â×é€vŸ°Æq‚/Hñ8ªõ$ þMàVFÃDôG±^à/¾µˆ:ÕôümÕýVÿx÷-‡Cà ïC?FÃÿæ×ÎuÑ,DžgôzRЦ—3£)‘g,зÍE–ë+Ó‘\UIÒ'Yíºþµ)ïXA¬+°u®;¶8rêruÐrt+§mÅ[[êÓÒ$ôgêž»-6þåÒ_öÿ±~§(ß¹Ÿ+ÿsÛtÆí«ØÝÝF‹ øÙãà€jVÎ)úÎÖgÕK•~ÛÝp õ˜û׺yŸêÃNHgã†ÿí¯ýªáßþaåƒéš…ür]Vb}9_èÿ2’•‚éb±T*•J¥Ù`_d¬»úg, ¤˜ð¼83½R—å“Îje.’•<±|±T*‹ù¸GW½õåi]õ‹é ”ŒMk-„ˆ¨²©œy^ܬ'sóÕ\d®Ò?¥îŸ&¡ýõI>•wU*»;À˜¶w^zivÖhúúzRùNêtw[/öΰhü·þŒ_Í-UN}³ï«Ý §wÿžÃz¢³Ž¥ÿ÷‹ýö‰û4›uÐæøjv©N DTYÊVÛº‚êËSÑ\UùìŽåÂNÃËD½@º˜8û«7ïwq×~Ö¼ø“ëËÓ‘¬ä‰·_wVæfDž¦®…dÒ0«-—­r93žµì%¼JÙÅÔ¸Ø<ÈÝñÅù°Ó*Û'Qÿ*¯/À ©¶Mä<*ÅTºöµ]KÌàrb³@D\%r†*PiZõrœ˜ Š)Qk!DTÙ,h—j…ÍJRÚKãEÙ™Ba³œðZ]ÍÛ.µÒ$”Æ©í)ƒ¾ŠÃ7:l6]ý®7L¨‡MâX—‚½Ë[oÙÜÝúÅZúµ>Úö‚h½¹ÊYE9ï}ð}?ýÁug û¿³“U3­fÇ•GÙv¶`Ø!͘Ûã‘ ù• oÈÑ–sÃCþ˜'a²L¥£ÌÛÜÝèÞ;KÚz{‡zlj'15.š5'³Ã¡¥ŸØúÖ„Ùápè{¿ó¯ íæÚsŸö ÿüû?ÿÅþþö=¨}&¢Ö6•Í®ób1·Ò=¬t »c±c-ÃË+ׂÕ\tj¹ÞÒÈŠù˜›1ýçB^íí;rueÖK/}ý?‰çÅüÊílmTyÞ32Ü~ãu³@Œ|^ïºúÖ‘¼Ö騻l­/O§DH+Ýɾ͹r³3RÉ@1ó”MÛÍv¯ê¿µÃÕã:ªÚ­‹™ym-ËK 15>>:š)ë:e«×ë 0F…MeIm™t1­ŸÞmO­RËry.’•HíÒ[[KQzNŸ®¶ /¦´Š²Ùöô»Þ"¡®›„Å_g¡pOóÖ?”l+ý͆á8gh~6ÀXaf®,—çf ŒžýæŸþ3†ýÆßéÉŠ¤­]FµPøÈ-hë‡]ˆFƒ†ýa‡|ONÂß$ó0èl>³_^›Õî5™7'ÓÃáHÖ‡Ãñ¿2pô}4ü¯û?ÿ×}íóÇÆ|DôÜ ßU¦k³Ú¹BÑ IÙ¥Je)+Q0r: oHŒ¹G†êµ cÒÆ–ÖªÔÈÉáºpø3IµíöÕ‡GÜm«G›~Þ‰xsìã8gø©°úu¨‹á´lÄ'¼Zw²v«WÍ€E¶ÛJÝÃúW¾˜ý~ÿxJtÇòë a'ÇYgàÈbêkÛ¨–„Dsp‰–zÁ“úÝï8Á4,¡ØYÉ7ãzRjåü¨ïÒÓ¶lØÀ:h{º]o–Ðqš„Å_W§…cåM«y¿ß?>ž2ëGé”õî¶XL°ØeJ£åy15žy>8›8®‹3†Eã·s®;8Yù‚<_UÂáÊfˆ‚>oG[0¹U’HXA ðmœÙº9 ›4ŽÎÕ]´ e4ˆ³D¿O¢ý˜Ö¬‡¾2,_´çwXg#%~¹ú|êcÑß}ç%ýD‹F7÷ˆ¹TŠxO|ÂKÛ›³¶kñ|5Ï5¿C”Ve¯]oפƒïo¥QJf«;†G<Ùj5·´B×%"O§Áð¡ûÈjV™Q6ìeÛ°ÔÎ^׿vŸ¨œMå¢S¤Üš±Ê€Ýb*µmÉR)IºÑ#Rv©Jx¯ä D|ÐçUbEýͬCw Ü±E“Mv\jN˜ˆ{ÄÜÁÆõ·½LX'mO-™$tÜ&q|=É[ûó3›»Ûæb§ ''$ÓBJäY ­îú®Îæ¿“sw"æ.d³Kåo³@Ì›ðÿlÙ<G²K•Y{g¶žÍº9^Ž·»átöÒïßžµŸ#‡^0ýÊ8æñ } ïþêý›åµ=Û_Æê FC"] ¹<Ä$ƒ‘=ön¹ãäúÖ†D¤ øÒ¶"mlí„”p¸Ó_èÛ,59à ¥0iALafη¦}Í6°Úž„zÐ$ޝ‡yë ›»Ûv«°Úer9£ ˆçÅTÆWL œ3†ýÆßѹŽãœÃ#ž\UÜœ#±9BC–y¶$"âœáh0;“Ï{lò=<›uy¼cwéd²{Ö~¬‡1ýÊ8æñ 'u ÖY4Ü`{ õÛ÷›Ï•õÖÝN†ÝþÊI_œ§œš3mãíÌ7«¬®ÞRN<ñ”’%u#Õf‘Y ­5°ŽÚÞAñ:N“èˆ\Ï»¦¢º=¨e»·yëO†»L–ë+ÓÊCÇySñHvfÚµ8rÚ8cØoüëÔq‡Fhól©ïk>ÿæˆ3ÛqÎáÇ9WtÝ~ôƒ¾Žþ¤Pè­Uhg´p¿ÁÊŽ¥Ý­ØÚvê{µEçø†°ÄœD_Í”aÆ´âZfð©ÿ០÷Ë,±nk«¨|c+«CÛ&3ˆÂÙG28Û¿þ±ò®9}˜Ñ±úÖj¦×gR±fëà䨲ۃ¯±ßì`·Ûèž4Ý«i“»pôEÊÑ5ˆÎYô‘?Çgá™}ö»i—ö|™laSŒý#cÉ`~û§ýµ¼Á­õWò gC­3SG÷Û¼…>LÝ×mr[ûDßÂåîþ\úøëç…²iÏkFævøIƒÿíзß)Æõøhþ¹>¹Êªáº A;û–L¦Z}™ ³¦û;Oe|±ÑÚ>G(ï½ðë†ö¦Bƒë¾„%­Ýê#´f¿3µµs)×<âŽÔÎ ú'ü£…'ií½¼ÇÂò[»Áæñì±=£µÁn¾ò¨o¤¦Júîst¿“¢¤¦¤ó‹»6>ƒh>™;ß´ËÌ>ÖÓÊeR¯*œ·ÇÙ­5mv:\0í ѤŸ“.Ü勞9Ê%ì¼ï9UÍ ?=Jåk>.úÍökÚ-Üipá'Øhk£ïÒŠ)è¿•û-üÊ£þ˜ô&p|ç×_¯Ouë½ã¬Gܶq(»|\>ÞòkΛXw¼m psGÿ%å“3}à¶žnqäaDˆ  @$ €èÐ_s^>.·î<¦ÊßO: N§ÓçïÏ[wÍ×߯—Ÿ/_¿FK:Å€§S?7@$ €H@ÑäkRÞö"çóùûûûú ýüõɦLÚÔÞÚy~°zMݦKån—wº\ùUªÔw©ýæo÷B8”Éפ<Žï–þðÜt=²«ô L­›Ì®8Uá )ôj»þð}ÍÙ¿Je3¿h_±p…ÂÂuÍ&¹‰òáÞ)PSeyÝBÅö¦Îã¦p{kç¿ÜN;m^ÿØŸŽ¥þô'h…º<’ kýKN·ïI‘n`Ó<îÜåaÝk«Ï3zLïÐ§éÆ’Y}¿ÍkS휪Ÿà,©ËÝ©Aôï:QáS¯ÎºúŠÆìƒµs çS±–Ílb­¾­eÚ)Æà}+*oShguý)ñìº7™DìÜæ*y* Ò„€èÁn7˜Ún”ö[®YÈ8Í õ·x±…6—*f´ì«‡tËßA4·]Z~ׯš£sÉY}ûì}Ò vÅS®•¤2…˜‘ÖÞ´€è/.LÛ3î‚wWùÿàó…M©©Á庬i+÷¿='ïWíaÁ¼WÝlMUÒ¾ö–»Puë½ôÇú›GMº'Ußàa]_¸~k}ËÍã©g éqáÉå'&å6_K¡ÊèKàaø©õñY͞đìI@Ñѯ(õõ÷Ë…çàVïoï/?_\unåÐq:j.›lÄ  @$ €H@‘€"Dˆª~(5x5Êþ¦I÷ά¸‘ÔÿöÅuûåouï8ŽñDû:Ô ÕξDõž×¶Ný/ì´) OnòO­Ó4ázÅÊô™ÜV¨ØÞÔÜî@xWÎ_ú×¹Öf»ý]¤ð&ÜYëV÷°(L7ê?ê;ýoÇÓhkéÖ¼Û¬k< :+ƒ£·³õj^ÿË“‘æ±é§jÑ9úo’K²éý‡{4í¾§0ºj–ÕW\þù|„›ýÁ}©ú£p½«t5Ó0®ìLM•å:·=<žÚ5ˆëèqÊc£©’¾qèojž/Ü€cêT"õö„b°“ðί¿^ßßÞ×jn‡sB §]¾hìÜ»|ŸÂÎ.—Ïߟ+_rnöPY2ÆšYÀ>µÿ»‰v 7qôkRÖØˆ ž„ÿY ˆÆgnK§rå±êÃ)à‘üûß_~¾ÔÜSÂ)<ú/.<úuD¾æ<ŸÏÍãæ&ôí'Û›ÎçsÿFõ©pgk¡ñN•Ê5]mj°W5{œ¤ÜBzE w 3ÔDçmÿqÒ› ·l÷ŸéTi?èÜQa¨§ÇýMÅ×å§ùýý]3¿¿¿›Y÷#½²íê×·3«“_ç;%û»|²\V73 ¶žîV¶Ø[•f…yþuÓµdûñ`k§ÿ?ë.´ªÀjO1:‡ãàÚASߤÂ5½J¤…÷žšêŸì4AVs´nÇ`‰ ‹”›®A¬®¼qœ5¿³v3s‘rk[ïnðó|ó–?oÞmžÇ!)ÏÀÕ…2Z½“•aa*ÁÖ6\ƒ¨ù1BûÈ;4ÒÜúýX¼¯–éþ80¾è¡ó—œR7Ã}Q¸9<ÊÒÆð@÷#¢­t` [´ïkm÷‡gËÓKûðöÓ5øƒ‰~‘ûcÑÁ˜' ÄÈò÷Xy`ˆáð3ˆc ´ÿ<Å€7pƒ[¢á¶^Ã8î÷ 1×>­ÿDÑýÕÏî÷ï%r˜/êï1ÿ¢þ#ÁxÂï¿ènÚögáâ—ôÏÿ*ïWOÉzÉUÉïµ£øQÒ(9”&J¥ŠR\( CÉ¢H( ”JnS„g¹ôk–æ¸/?¨Ù;:/$NÉÖ÷ÏÜÿ^í/n¿ÿrEæ>´Þ¾þ÷ A¤Wlä¾i…„Æ…ûùøFriÀ'×K”Ë ØC\”KZRJúÿÜnÿ?Ëþõ}²üuA ÃÿÐÂwP~ Çþ¡9М Õ—h|ðÎÐäÐåîý›¶4 T°…2À á}–ò@¨`Ì€5pÎðnûÂ6bÀp¤‚t.pT€p 4ƒvpt‡`Œ€ 0 æÀ2X`|ƒ   Zˆâ„ø H"Aªd YB+äCQÐè$”eCPT 5A· .¨…žCóÐ*´ }E :;‚! !4FkÄa„" HFœCä!ÊWmˆ.Äb1‡XCl#’É€äFŠ!IH-¤Òé GC¦!såÈämä#äSär¹‹Â hQ\(1ØNõQ6(Tê*U€ªAµ¡zQOQó¨ ÔO4͆A+¡ Ðöht :ƒ®B·¢ 'ÐËè ÀÀ(`ô1L&SŒiÄÜÇŒb1ÛX,–+‚UÁšaݰ‘ØTl>ö*¶;†]Æ~Á‘ã8qÒ8]œ#.—„ËÁÕá:pc¸7¸oxj<^ o†÷ÄÇá3ñ•øÛøaü2þ ™™ ™5™?Ù ²<²²d3dŸÈÉÉyÈÉ-ÈýÈ“ç‘_'ï#Ÿ'ߥ RShQ8QDQœ£¨¦¸Oñœâ@à'¨ ‘„s„ZBa–ð…’–RœÒ€Ò“2‘²²rŒò=žŠJƒÊ™*ž*‡ª…j˜jOÍO­EíF}Œºúõõ6 -MMMM?Í Kä'ê=‰ÉÄ bq‘IËK«EëA{’¶’öí2†N€Î€ÎŸ.îÝÝ=‘^–Þ–>–¾þý’ŸÁ€!!“¡™a’á+#;££ãÆÆ1ÆÏL¬LêL^LiLLL_™¹˜u˜˜Ï3·3¿dA±³X°Ä°”°<`Yg¥cUfõ`Mcmf}Á†`f³dK`«`dÛfç`×ceÏgïa_ç`àPçðç¸ÈÑÁ±ÊIË©ÊéÇy‘³“ó-=—W WW/×7·>ww÷÷7ž$žFž—¼d¼$^oÞ‹¼Ý¼8˜8r þÀ ><‰Ï—/—ïßg~~;þSüíü+Lñõ3‚A5Á0ÁrÁq!ŒI(@¨XhD!,'ì+\(<,‚‘ñ)E‹*Š‹–‹N‰QˆiˆE‹Õ‹Í‹3ˆ‹'‰·‹¿—8 á(q^â‘ÄOI9É@ÉJÉi)¢”¡T’Ôm©MiaiéBéq‚Œ®L¢ÌM™²"²^²%²ÏähåLäNÉuËýW—o_U8 àªP¤0E¢#™“2H}ŠhEMÅDŻлJòJ‘JÍJ”Å””ë”W ô:XypQ…GÅM¥LeN•KÕUµTuN[ÍM­\mAWÝS½Jý††¿ÆU÷š’šáš­šŸµ”´ŽjÝ×Fjëi§iéult tfuyt}tëu7ôäôôîë£õôÏëO°xÔl*5ì5¢0²2*0Z067¾m‚014¹`2cÊglÚnÌ Ì.˜½403¿c±0·(´xm)eyÄò‘­•‹UÕŽµ¦u¦õ´ M”M·-•­“m­íg;m»l»9{ û£ö,~7±Ž¶ŽUŽÛ‡t]:´ì$ç”ê4yXàpìá~gç@ç{.T.n.-®hW;×:×ïnfnånÛîîEîZ¹kžêž=W½T¼²½Þx«xg{¯ø¨ø\ðYõUóÍñ]÷Óò+ðûè¯ïÙÿs€Y@uÀ^ ]`c.È5èV018 ¸7„#$6d4T$45t.L)ìRØF¸QxUq8âf$F F¥DÍG«FF‰±i‰¥‰ ŽŒŽ;÷&^7þJ*Á#¡û÷‘Gæj-;s?ÖÈ›˜œ¸|\ïxÍ ²'ž$I&e'm´;y;™=ùxòbŠ^J}*ejxêÔ)åS—O£Nû:#s&ÿÌÏ4Ï´Çé’é9éß3<2Ÿ•:›wvïœ÷¹¡LùÌ’,LVpÖäyµó5Ù4ÙñÙ‹L.´]亘vqë’Ë¥þٜ˹d¹Q¹syÆy7óägå/ð-˜(Ô,l,b+:Sô¹Ø³x¬D½¤á2ûåôË_KýJŸ•镵•ó—çT`*¢+^WÚV>ºBºR[ÅR•^õ£:¸z®Æ²¦·V¡¶¶Ž­.³QU¿zÕéêÈ5ík7ÄÊÓ¯ƒëQ×ß6¹6M65w·ZnðÝ(j¥mMkƒÚâÚ6Ú}Ûçn:ܽex«û¶òíÖ;âwªïrß-¼G/³ƒ¬#¹c¯3¾sû~èýõ.Ÿ®Ån—îéûžñ^‹Þ¡Fúê>ìy¤ñ¨³O¥ïn¿Rÿ­Ç¤Çíòmƒrƒ­O䞴ɵ + ßQ¹=zp´cLm¬ë©öÓ‡ã㦣“6“Ϧœ¦æžy>[yøüã‹èߦϠgÒ^R¿Ì™e›-%ôªqN~îÞ¼öüà‚ÕÂô¢ÇâÚRÄÒ÷åäׄ×9o8ßÔ®H¯Ü]Õ]y{èíòZèÚ·õÔw4ïŠÞ ¾¿ñAýÃà†ýÆòÇð{›Ÿ˜?UoÉnuo›oÏîí|ûœö…ùKÍ.i÷ÑW»¯o¾Å|Ç~Ïû!ôãöO£Ÿ3{A{{¡nán¿B$\ÞÞlVÃñ¾œ;Œ@Fù;§øSpð€ß" ‚¢¡YØ×"¹…(^ÔU´:z“5€}Ø2¾“ìùUŠVBåKj 1„¶•î;ƒ.c1Ó‹9k=;†Ã™³…›ÀãÅ{ƒÍo/P.øV˜$rD´SHhI¦HõÈ eµä’åï*l)Š(9*gìUÙQP·ÓHÕlÖšÑAé éè{$^2ª7¾g2d:cöÞ‚ÂRÚÊÆ:Ö¦ÀöŽÝ û¯Žì‡:9ŽtÎr©síq›qÿäIîuÀ[ÑÇÐׯÏÕß? 40>èxðÉS¡§ÃR“#ŽDFDùG»ÆXÆjÅÉÄ3ÅLè=’{4ø˜n"÷qp|ñDRóÉÒäó))©q§"NŸ H I¿ñöœRæé¬±l¦ ó/åbóó½ ÎÞ.š-A^(5-‹./ªèª\¬ÂU‹Ô˜Ö†Öe×7_º¶Þˆ¿ÎߤÞ|¨%êFfkmÛÃö…›{·YîÈÝ5¹çÖÙ™r?§ëJwCÏíއƾ|´Ü÷®ùñ³ƒÍO †Ž ;(Ò~ëyš?<¡>Iœ\šjxñ\öùÖ‹ÆiïÖ™á—'f¥g—^åÌÍ#çï,D/*,¥'˹¯]ß¾ù°Ò¼öVüíÛµòu‡w„wïC?ð~˜Ù¸üÑoSéñÓÖÖÂöôÎÂçí]º¯jß"¾_ÿ±¹Ç··ëŸœ„h ;¨ÁˆFÌ!‘]pÄ?ŒöÀ 0 Xoœn?DÖJ^CQJ¨ l¡zB½Ed¦Õ§‹£obXedvg)g}ÁÎÈaÍyŠë÷G^¾f| ü•‚ï„©E¤D­ÄBÅÏJ\“쓚“þ"K%Ç#¯¤`BòPŒT:©|á`¹JƒêMµNõš=°_¹«Óª{U¯\¿È Â°É¨Óø±É¤é¼Ùšù–%°"·&Ú°ØòØ Ø‹;È8’©:éÖwÖsQw%¹Iº xpz2x¼QÞ»>|—üžùt¶Õ—„d†Æ†é†ÂÇ#J"£HÑØè1±©q‡ãåhÖ<>ZwìL¢ïq›vIn'ƒ’£SSOºpºäLuÚõô»ÎŽž{™¹’õ)\ ¾È}I:G#×*Ï;?º ¥0§¨ªøFIçåÁÒɲùòÕŠ•»UdÕB5Ƶauõ]Wß6P7ª\÷oÊm~Øò¹U°Í©=óf×­­;\wµîyv$wÝoìêêèêo§ŽGM}åý™|mžh‰Ó ïŽ<mËz0®=Á>ñeòéTó³ìç‘/§µf$^²Î’Í~}µ>77?±0°ø`©k¹ãuÇ›»+÷V;Þv®õ¬?y·ü³!û1|óîÃöÉ_R¾2}kýa÷óç/ýÛBt|úe)ˆ7H]äU;êš}CÄTbU±³¸T< ¿CÖF~œÂŠ FI Ü¤Z ¦é!vÑ>¡{IÿÅÄÄ,È¢ÎjÉæÅÃqŠóW%w O'oÿ§|¯øW6¿œ(NtOì£ø+‰ÉûRÒÅ2gd£äœåuDHT¤Š£J Êgzª¨©2«n¨õ«Wh$jºh©isè t–téÕéŸ57´1R6f7& ¦ÝfæÉÞ–¦VÊÖl(l>ØÙÕÙ';Ø; ;~?4èTxØÏYÉ…Üå¥k“[š»—‡°Ç²g±—ƒ7‹÷+Ÿ:ß8?¾(àeà üàÈÓPÐaáYV‘Œ‘/¢Š¢ÇpÅ,ÄVÄyÄóÅ¿N¨:âsTàèʱºÄˆã¦'$“h’¶O¾HîH)‡í$ð´ùé4º´ôÉŒgÏŸ É´È’;Ï‘Mžýõ»‹ —¦rÆsÇó&òŸÌ®mï]Æ—²•©•WWUAÕ²5>µ…uýõ›×äͯ{6E6Ÿh9w£¢µ£m²}ý¸M¼ÃsWöžA‡{ç‰ûU]ã=d½zÎ>œì#ï—{ì21x÷ÉÆ°ÐˆÛhéØì8Ç„ÓdÑÔ‹çL/ì§Ëfvf^Ì;-â–ž½_ůE¾'n¼ù´ø™ýkÈWûúÿými¿`ä¸BœƒšÖPç™ÆPÛ`NÀZ ¢º‚b@ƒû À¹¦40€³üxpÎûÀø1B2†®@Ýд‡àD¨"\Çá¬îbI‰”E:!“‘×S($J å‚:‡êDm¢ùÑŽèóè~ £Š‰Ç´cv° ØXììOœî,n σƒ=™+Ù r<¹+ùM ZŠŠ!‚!›°KéN9D¥BÕ@ÍCGC¤9Gĉ۴!´oé|è^ÓûÒ¯1„2l3c"cÊc`¾ÅbʲÄz”‰í»%ûG!§ç6W÷!jž~ÞStùÈøžò „j ± }~&rO´J¬L¼Q¢[rLjIú“,$G!ϨÀAâƒ=›Œ²ÂÁƒ*šªZj‚jëê75R4m´µ~j¿Ð¹©›§wLßÏÀÖÐÀHÃXÕ„dªb¦a®oaaioånb“h{Á®ÚþžÃ”ã¦õaIgk—£®ÕnãOY¯ï2Ÿi?&›€ìÀ±`ڻВ°•ÅȬ¨ÕýØêxÊ„£GÞsLì?¡™Ô‘¬˜2v*æŒPÚ«ŒòsaY&Ùryr¸òX x‹¤J´KƒË›® «}j—¯7"šJo¨´ ßò¸ó®Ãú~sǃÌ>ŠÇùOT†ß]ŸHy4í4+=·°µüqÅòmîz×û§C›··rw|¿Hìn|»öÃç×ýT€(kÒ@è¯`í3C$ÈŠ‚.B-Ð8´`D(Á¹}¢1gñHd$²9ŒÜCI™y.jcŽô-ô.F sÓ…Åa-°Øeœ,.7‰ÆŸÀ?#“&;K¶FnLÞg¿q‹3B'¥4e U 5;u) ?M#QšØL+K{‹N®ŸÞ†~‘!‚ɘË$ÁÔÇìÁ‚€}•ë[¶óìŠì¯9ò8-¸(¸s§ó˜ðÒòN¨â‹â×`ø(øX¨Bø¤ˆ‡¨IÜX"D2[ªIzRæ‹“¼¢‚)Q±R©_ù½ £ª¦Úau7 Mo­ íXÝ,½ý&ƒG†ÓF›&SA3s/‹Ó–ÕVýÖk¶ÔvJö®goZ=ÌêlîrÚõ‘;ÆÃÈ3ËkÚGÔ7Áo ¨Üò:Œ;Ü1¢0r*š&Æ<ö\Ü“Š#&GÏ{rœxÂ>©ääZŠvjÕiü™Ð´å ÷³ ™ÁçqÙUír¨r‡ós ýŠ5/3—~,­¼]uµæz]çÕ‰†&úÙVûö˜[—î\»×Ý9Üõªç݃o}èÇÔƒ¬C|#Âcâã2“²ÏT_hÎÌZÎ9.X/)¼&¾™]½´¦¹>ÿ>òÃöLjͥ-óí¶Ïô_Bwû¿q}þ1ðKÿÀøü›‚ p4‚1° ±@j°OÉ€n@3,BÖü)D [P"U‘¡ÈrøÄP:¨DÔÔ.š„ŽC߃O»!æf+ŠMÀâ8q1¸q¼¾¿GæKö”\“¼…BŽ?Ø…”\”W¨d¨º©m¨×hR‰<Äû´Î´?éÊèµà³}Qq©˜ÙŒÃÒ ŸkUv{G:§1×ì“2yC8òð«IBòŠ"*¢ªb*âÎù’#ÒHqYk¹ùK ͤ1ÅMeÖƒú*ñªmê”Aš#ÚJ:uzÌúÙ†ÔF™& ¦—ÍÅ-º¬ô¬l)í"í'ª9Lëœä²ãæþÎ3Ôk×'ÍÅ¿:P:èFˆBh[¸LÄ(ÑèÒX†¸´øïGBŽÎ&šïK:x²2y+UûTÎéÕ4ÅôŒŒ…s¤Ì̬Ù6z/Éå´æ‘òºí•””J–uTXW¾¯J¯‘¨}^Ÿ|M´aüzL3MKM«\Û›ª·nݽ[Ö!Ü9ÐØCÙÛøÐäÑJâó`óöðôhØSüxͤÆÔÂó“Ó3=³¶¯æç=¦–T—‹_¯¬¬:¾MXËZ/~—÷>ýCĆÍG‰Môæè§¢-§m¶íg;?~þüåÊ®Åî÷¯ÕßL¾}‚³å³?û÷õá-óû,D¡ zvoï?Øl~œßÛûV¾·÷£¾$f¸øûÅ/_C @Ñþ? Ðá[ö¿‘þD~Šêw—/Ì pHYs  šœ IDATxœìÝ{\Wþ?þ“$€!‚ @U `Åj‘*bA¬ h­UqkV‚ ˜µ¨¸ºÞP*^A+jKíB¡ [¥e‰XJT¨Ú‚J¤î—’ßgw~ùæF¾ŸÿÉ™3gFy3œL΋ôçŸ"/ùeBPŽ`„€r #”c ÀˆåF(Ç0"@9€Ê1ŒPŽ`Dж#‰Åâæææ®®.333ƒA6N%%%ºººÓ§O×JoZ9Áþþþ_~ùåÎ;zzzk×®­««Óâ¤Ý ÀH®Yáçç×ÑÑñïÿ!äëëÛÒÒ‚·3™L[[Û7ÚÛÛã-Ä«fff³fÍ 566F ‚ÔÔÔŒŒŒîîn2™,‰Æ—‘‘!u › ¡P¨£óߟU¾¾¾L&óüùóƒìS‹'˜ŸŸý—¿ü…Éd.^¼øïÿ»VF¨ÄP\€$µïŽMLLNœ8ÑÞÞþìÙ³/¿ü2<<üôéÓDE¶µµÝ¾}{nnîÕ«W'L˜€:}útvvöŠ+üüüŒŒŒ8Nee¥lÏ*6,«¡¡!55yöìY2Y ³:Z<Á‚‚„PHH¾¿ÖÖ¢ ¤v9¦P(VVV¡7ÞxƒD"ÅÇÇ'''}zòäɆ††… 677÷ööÆÆÆ"„‚‚‚ìííwíÚ…wœ0aÂÞ½{‰CÌŸ??))):::33³¬¬¬©©iÖ¬YþþþS§NMKKŠ 2¨{œ·Þz !T]]MlimmMIIùüóÏÝÝÝ—-[†ªªª‹Å³gÏÆ5H%ÍAddä“'OBCC]]]ÓÓÓ‰_“¹\niiiRR’““Syyyzzº’í===‘‘‘­­­QQQ$éСC"‘H ìÚµëÞ½{Ë–- wpppqqa04-00pÒ¤I¸7§ÙH†âÝÜÜ,--B ,!BèðáÃ</88XGG§¨¨ˆËåâí555D·/^¼ þ^RRréÒ%ggg:N¡Püýý£¢¢Š‹‹ñíð]€”A½•gee¥££ÓÕÕElinn¾|ù²žžÞ‚ B|>!¤§§§¼+%ÍŠŠŠ}||¼½½½¼¼rss³²²ÂÂÂðïË$)66–Éd”——{Én/**jnnöññ™6mš‹‹KJJJuu5®,‹- "ö¥ÑhýýýnnnZ‰ÖOðõ×_7nBHv„<¯¶¶ÖÛÛÿ,,**‹Åʯ>ÞÄÄ!ŽGkmm]RR‚š2eÊP\€”AÝ·´´…B|Ç„ÙØØ\½zõ£>:tèйsçBæææ¡û÷ï+ïJI³úúz„­­-BˆD"ÙØØôõõ577ãWÍÌ̘L&BÈÀÀ@²ôÈnohh@]ºté£>ÊÈÈ R©­­­¸sGGGUÎW³‘ Ñ ÊõÛo¿!„dç‚”?~<®Å"‘(11qÓ¦M6làp8N‹# ª߸q!4kÖ,ɺºº+W®¤Óé999b±ØÖÖVGG§¢¢¢©©IIWJšáo麺:ü%Ç#“ÉøöP-fff¡>øà‡ÿqrrÂeHöÞMnùÌH†áB“'O&ºêèèèèè|U("„Z[[{{{åîž———––æíí}ýúõiÓ¦I¾¤õ ¢R9–œîìëë»ÿ~AAÁÙ³g¿úê+&“¹nÝ:âÕÎÎÎüüüóçÏwvvÚÙÙ‘H$SSÓ•+W"„öîÝû믿666æççÇÅÅõôôHBI3<§YXXXUU•——×ÐÐ0oÞ<*•ªî©¾ýöÛÆÆÆÙÙÙ?þø#Ç+,,¬­­%:g³ÙMMM¥¥¥!;;;>ŸÿèÑ#@ ÙÃ`F2 'ˆrpp044d³ÙgΜ‰ŒŒ …Ä¿µµõüÁf³÷ìÙÓßß/w÷îîn„¾¾þíÛ·ëê꺺ºpአ2ÀÜqÿŸþ‰ÑÆZ[[wïÞM&“'NœèååµiÓ&____òcr|>ŸÁ`Èê`F2Ô'ÈãñÌÌÌ(ÊÇ?ùäww÷={öà—zzztttˆOs(ÒÖÖ†?¿ÓÒÒB§ÓñƒkhÈ.SVŽ?ûì3@ààà°zõjâ{Œp›7oær¹L&³®®ÎÒÒòàÁƒø9qÀ7ð‡¤ÁèÒÞÞ^YYÉårñ;{€QÊ1Œ°òŒPŽ`D€r #”c”=‚š=lã€WĺuëðšbRøD€ä  ÒåË—½4ð›r«øp:–K寂A¾J^¾èÒÁ8´3øe…Ïçã%$·ò`8 ø‹>”cFÇd…¶ˆD".—K¡PÌÍÍe!«ÒfT̉…œœœ¢¢¢éÓ§¯]»vˆF¤R9öõõ‹Å‰‰‰ !tçÎ={ö$%%IÆ2 ƒ#GŽ´´´ÄÄÄ „|||z{{uuu…B¡……ÅÒ¥K?üðC\t|||zzzD"ÑôéÓ7lØ0oÞ<„Pww÷Ù³g³³³mllD"‡ÃY¶lÙßÿþwÉþUi3´Ü±±±ï¾ûîõë×»»»sssB"‘(""¢³³óË/¿ÌÈÈpww÷ó󛟟 ¹=<<ÜÍÍÍÆÆÆÚÚº¤¤„Øn``pôèшˆ2™L¡PŽ;¶mÛ6„‡ÃA577/\¸pÚ´i...ÕÕÕ^^^l6{áÂ…œ†………B!‚5‹‹‹¿ýö[fii‰âóùÊMµyúôiyyy`` ‰‰É’%K¦OŸþý÷ßã—Ö­[·jÕªéÓ§Ož<ùéÓ§r7vuu•””Ì;·¥¥åÍ7ß¼ÿ>Ñgpp°­­­±±ñ„ h4šŽŽŽ¡¡!ÎfÖìÐÚ:¦§§g``Àd2‰÷;;;mÚ4Õû133C}ðÁ?ü“““Z#‘RTT4a„)S¦Hn\³fMoooqq± •J½yó¦’µa2™Ä[aGò†n@ C(?~<99999ùСC¡ &ˆD¢òòr©Æx^u‡¢±··ïììÄÙ1"‘¨££ƒxI$!„„B!žÓòôéÓ½{÷†††žwtt°Ùì«W¯nÛ¶M2ÉX$¥¦¦ŠÅbGGÇqãÆ­]»6!!¡´´¿ÚÔÔtûömÉ~µ™6mš¹¹yVV–X,®®®.--õððPå1‡É“''%%á+ƒç[ñÆo¾ù¦¥¥¥¿¿¿©© !4qâDâ½PL³Cщ0™L{{ûÏ>û,??ÿÓO?åóùxÃÒÒ²¼¼¼««ëàÁƒRï+G766677ÿã?x<ñÞ€¶Î€1Cí¬X±âæÍ›xþnÁ‚™™™§OŸ¶··wuuÍÊÊŠ‹‹‹ŒŒ°##£}ûöûl÷îÝË—/×ÓÓûð‚V®\¹oß¾;wî|óÍ7x_='‚:pà@||ü¥K—>üðÚš}}}„ÐÚµkcccÃÂÂ~ýõWÙ½\\\&Mšäíímmm½dÉ’‹/Λ7oÚ´iZ<_ÆeÑ¥ÙÙÙŠÖå”ÔÖÖ†g[ZZètºZ³{ííí$IÉ”.BèXbú¡Áÿþ÷¿OŸ>””„§_5Óßß_[[kbb"9Í­b›ææfƒA¡P4;tKK‹žžžäÆ?ÿüÓØØXGç¿?…Bagg'ñ€Ú =D'‚âóùÞÞÞ/^Ä“=== Eù¿;ñŸ¤µµ•8Aíž/#\ÔÑ/í ¾|ù²†ë«‚ønÇŸÙS‹‘‘‘Š-Ÿ?~îܹÁÔb„…B0ë^Q©ç”Õ%÷âHÍêèèÈÖ&­õ9xð ‰Db2™7oÞ|÷Ýw‰‰`|›¬ñŸDòµ{¾Œv£fÍ ‹õ²‡ðªó÷÷öìÙŸþ¹{÷î9sæ¼ìá0ÖŒŽrÌçóaú‘ãת?¿Ë“3M ŒQPŽwùš˜˜À ô€±m”c4¢`¨âõ|`,r #”c Àˆ0:ÞÊÓ:åñÚ0üàîF5ʱX,njjzþü¹Üu †J“ 555##£»»›L&‹D¢qãÆedd õà4  ‰y`Q©r>}:;;{ÅŠ~~~FFF§²²r¨G¦‹ÕÐÐ@DöÀ(2p9®­­e³Ù“'OÞºu+^ýÝÆÆÆÆÆ†x5!!¡¬¬ŒN§{xxà…Y,–¥¥åŒ3RRR wïÞýøñã”” ‹;wZXX¨Ø†Ãáœ:uª¢¢bâĉ, 'r²X,ƒáé陘˜H§ÓY,–½½}ZZZEE…H$ Œˆˆptt,++KMM---¥ÓéK–,)((¸páBHHΓ€‘cà¹ãªª*±X<{ölÙ$@ùäÉ“ÐÐPWW×ôôôóçÏã— “V¥ÜÀi¼ciiiRR’““Syyyzz:BÈÅÅ…Á`Ðh´ÀÀ@œ·væÌ™çÏŸÇÄÄ„„„à-ƒ «€!5ðÝ1^/BjÝt¬¨¨¨±±ÑÇÇÇÛÛÛËË+777+++,, Çöà0i …’——‡Ã¤»ººnݺ…ä1åmpà´œNII©®®Æ7æ$)66–Édàй)S¦Ðh´þþ~777„X,nnnnkk«««[¼x1’———§§§Æ©0t¾;677GáDz)8è×ÖÖ!D"‘lllúúúš››ñ«8LšJ¥aÒt:]ªåmˆÀé>ú(##Nã—ÌÌÌðÚíR ˜‰Db±X†††GŽ öìÞH&“¡F ïŽmmmutt***ššš$ÓÚÑÿÂ,êêêð—<L&ËÍwÐ 8¬êêš’¥ÙÕÕuÆŒW®\¹téR||üéÓ§µ50кïŽMMMW®\‰Ú»wﯿþÚØØ˜ŸŸ×ÓÓãììL§Ó «ªªòòòæÍ›'ç~ü8‰Dzýõ×B†UÀË¢F’´X,nhh‹ÅRÓ¯---4M‹÷ÅRT œ&ðù|ƒG(z{{eRaÍ ÀK¡$i‰„Ÿ–¥A†´ZTœFÿo©¥R©C÷C´–€a€»ãË—/Ï8à§lî&X`(¨=w ùÍ0l`îF(Ç0"@9€Ê1ŒPŽ`D€r #”c^N9.)))++SÒ 99ùÊ•+ªo5¥¦¦Ž¨M¿ƒ¡a9Þ¿¿§§gII ±åéÓ§ÞÞÞJ>ã'éàÁƒñññJdffÞ¸qCõírùúú®Y³¦¥¥yçÎOOO.—«âîšñõõõôôôôôüè£bccÛÚÚ†îXYYYYYYr_ …juE ÛÇÇgóæÍ¥¥¥ŒG­€ ËñâÅ‹B7oÞ$¶üôÓO3gÎÄù :{öìgŸ}¦Ù¡ÕÒÚÚúùçŸÃ$ÙÚÚ~þùçîîî7oÞ|)w‹,kÆ êîennþÅ_TVV&%% ÅÀJ¨±À¦¤¹sçÞºu+<<œJ¥ŠD¢¼¼ßÚÚZrrYGG'>>^v•8Eí Ž9¢¯¯ßÛÛ›››Ëáp&OžL¼ZTTÔÜÜìãã3mÚ4—”””êêj©Î ·nÝzàÀ„„„ ¨rУGR(”¼¼< …rìØ±®®®[·nq8ÕÚÜÜ|ùòe==½ à“¢¢¢ÆÆFooo//¯ÜÜܬ¬¬°°02YÙC‰Ëd2 ÊËËBMMMgÉ’%ï¿ÿ>BèÁƒ²)ÚS¦L¡Ñhýýýø‚[·n©xèúúúU«Vuww›ššnÛ¶MјU<Ùÿ6E9 ˜J“ëÖ­“üw7sæLSSÓââb>ŸëÖ­Í›7#„D"Ñ… îܹÃãñD".ÐØøñãek±’öÆÆÆúúú¡×^{ !TUU%YŽB—.]ÂP©ÔÖÖV¹ƒwwwwuu½yó& ¢ä !2™lmmM¥R%c¨T<¨Í‰'233:ôûᅦ††Ö××#„lmmB$ÉÆÆ¦¤¤¤¹¹Ge+bff†çâ pÙýí·ßBvvvJö’¢ú¡&L˜àè訯¯ÿàÁ¹;ªØ¡ÔÿÀ€ÏA©:w,[ÑI$Ò¢E‹¾ýöÛ¸¸¸îîîwÞy!”———––öñǯ^½zÇŽ>Æ J{œíèè(¹óðÁÁÁÁ><<ü·ß~#BPwTWWwåÊ•ÉÉÉ999›7oÆUµ®®¿ÊãñÈdò¸qãð—ø)ˆÖÖÖÞÞ^åÝŽ?!„'7D"Qoo¯¢è)â®Yù¡%Ñét<µ¢|G;„ÕYP× ž;ÆÏWܾ}{Þ¼y4 !ÔÝÝÒ×׿}ûv]]]WW—ò£¤}}}=›Í~øðá½{÷¬­­¥n¾Þ~ûmccãìììü‘Çãâª-—™™N’ð Ê©xÐÎÎÎüüüóçÏwvvÚÙÙ‘H$}:55ÕÕÕµ§§'..NIJÚ¿öÚk×®]ûä“O„B¡ìݨ‘‘Ѿ}û ÆáÇýüüâãã‰7ÁäZ±b…ƒƒƒfƒT÷ 555ÑÑÑ999nnnAAA!\mƒƒƒcbbæÌ™Ãb±pã>ø!”°|ùrü#M ]]Ý?ü°­­íÌ™3666Šæ:–/_neeµ}ûö›7o*9´rŠvÔ¸C€rÊ™°ììlåÓϲÚÚÚð„lKK Nð)(%í[ZZŒ•¼åÕÞÞN"‘ð;fjQwZ9hKK F“º—ìééÑÑÑ‘}dM‘îîn2™¬§§§¼ŸÏg0ÄÜ·ÜCk<æÁtÀ«iÀZªásÇÊoŽ1ŒA¶°###5G7ðA¤ñAå ¿c©:üf〤Þ8Õà4•ï¨q‡¹` ! ÀˆåF(Ç0"@9€Ê1ŒCò Û«éXbúË`dÙä«zc(ÇÚthçÀ h^|>ßÄÄDõÏÐÁd uc†r #Âp—cÈPrròü¡èUX¸€±Jír Òòñññôô\À¹` IDAT´hѲeËÔÝýÚµk²ëv¾xñ"22ò½÷Þ;pà€–† YÔ.Ç!­Š]»výøãû÷ïÿú믫ªªß!Nß²eˇ~(™NKÔ~²2¤‰ƒ\¸p!$$ÄÅÅEv$iæÌ™T*µ¼¼|êÔ©õõõ111=?~|HHˆ§§'BHîF¹h4©ŒUjßC†4qÐÎÎÎššš®®.¹J$]½zU,¿ùæ›b±8""ÂÜÜüêÕ«›7oÞ¿ÿ“'OänT÷Ÿ0fhòÜ1dHãƒzyyyzzÊ=HJJ:vìXooï§Ÿ~:iÒ¤'Ož”——;vÌÄÄdÉ’%ß~ûí÷ß’Ý8mÚ45ÿ5c„&å2¤ñAI$’¢™Ü¹sç¾ûî»¶¶¶8o‰ÇãNš4 ¿êààP__/w£‚Kû4yÐ gH÷õõÉfH{{{_¿~]•[†ÌÀˆåF(Ç0"@9€a°‹ÅÍÍÍ]]]fff8Mã¥+))ÑÕÕ•›g:ü’““étúêի循•«×ßßÿË/¿Ü¹sGOOoíÚµuuuÃyú#êj0ªi^ŽAjjjFFFww7™L‰DãÆËÈÈÐâàT' utþ{.d2™çÏŸdŸ¾¾¾---!===++«°°°™3gªÛIff&“É”-ÇZ¼z………ÑÑÑùË_ {{{µuúJ ÅÕh^ŽOŸ>½bÅ ???###‡SYY©Å‘©ŽÅb544±ÐgÏžU²J²ZÌÍÍ£££ø!”°|ùr&w÷ ØÚÚž>}:55ÕÕÕµ§§'.. ãÕàU3ðzÇÙÙÙJ¦ŸÅbqCCƒX,¶°°zN ¥¥…F£ þþ¨½½D"Jnäóùúúú’Ÿdãóù CöY-ŽdÀÕ=ÐP_=gffF¡P>|øÉ'Ÿ¸»»ïÙ³¿ÔÓÓ£££C|šC‘¶¶6â‹/"##ß{ï½Hnçóùôóó»páÂP€ÑBó»ã;wî¼pW^^žVFÓÚÚúùçŸúé§ZémxH9Kz¶• Óé[¶lÉËËù$„“'O:99mÛ¶­««Ë×××ÙÙyÖ¬YC=F> ËñÔ©S«ªªîß¿ïêêZ[[[[[kjjJ„DÄÅÅI%———>|ØÑÑ1""‚ÏçïÞ½;88ØÙÙYª[*•úóÏ?/\¸P*ŠMIò±¥¥åŒ3RRR wïÞýøñã”” ‹;wJ.––}ñâE‰:þ|¤ ¦Z*JG arc’eƒœ%ÛÉ°í²²²ÔÔÔÒÒR:°dÉ’‚‚‚ .„„„¸¸¸Hþ«Ñh´×^{Mꟸ§§çÆ/^Ä .\xýúu(Ç ßÊ›3gŽžž^~~>BèçŸvqqÑ××'V¿•M ¶··Ÿ2eJvvvAAÁùóçõõõgÏž-Û­——“ÉsæÌóçÏcbbBBBpo555]]]JÿËüWcc£P(Ä;"„&MšDä9ðŠÓðîX__Μ9wîÜéëëËËËó÷÷öìñªl1B(,,ìÞ½{'NœèììVEmm-BÈÑÑ‘ˆ©þ᜜œ”ì¨AL²d\ôà{“KîYàŸ%C¶íêêúÕW_­_¿¾¼¼\ƒÇ3ÌÌÌŒŸ?Ž¿$~)h^Žétú[o½%<<<$·+J >{öìøñã?ûì3±X|òäIùD(#1ÕJzÐ,&yì…m÷õõ%''ûùù­Y³fÒ¤Iø§fGGGee¥ìð³gÏ–.]š˜˜x÷îÝ¥K—~÷Ýwx{XXXeee``àßþö·àà`¸;l’´"Šˆ5¦bò±---ÆÆÆRÏÛÊ©VÞ‰º1Éc/l[ ôööÊ”EKLWe !.—‹Ÿ÷P刌FQG¿8´3˜(žCž$­ˆ¢b©˜|¬„Ü‘(ª)ju¢ÜØ Û¦R©ƒÿB<ëÀ` !ÆþB`øñù|X„uA9Z¶#È×ÄÄV @]PŽ–Á}1g/Ü€ œ Fg€Q Êñˆ“œœ|åÊÕÛ—”””•• ÝxOî/kõõõr×äÔÖvF˜;Ö&___.¥§§gee6sæLu;ÉÌÌd2™Rá~~~~x…b)ÿú׿<Èd2‰uЇP(Tþ!É/^;vìáÇ'Ož$¶óùüO>ù„F£ñx¼¿üå/Äú$ÚÚÀ(åXËÌÍÍ£££“ºäæ9ÉŒ’X,¹iOƒ gÒÖv^º‘Τ(J?ÒV>“ºäæ9ÉŒ’X,%iORΤ­íŒ:0Y#Üíƒp&4åh„3 (Ç@Ë྄3— n@Î#„3À¨ô’Ëqjj*^Ë©J„‹ÅMMMÏŸ?ïîî&6jÐÏX¥üR<{öLãž«««ñZêêꪪªRÛ!œ )Ã4wìëë«££CT^BVV–X,^·nRJ¤ˆ@ HMMÍÈÈèîî&“É"‘hܸqêö3¤µ”SŽ4¦äRüûßÿÖ8¬äùó牉‰{÷îÕÕÕUÔ¦··7&&¦¼¼|Ò¤I{öìyûí·„3 Àh}+ïôéÓÙÙÙ+V¬ðóó322âp8•••/{PšP%åHëîÞ½{èСcÇŽi܃»»û•+W>ýôÓØØXEm¾úê«öööK—.áì(b8g@®—PŽËËËOœ8ÑÐÐàááÑ××'÷ÆÃáœ:uª¢¢bâĉ,kúôé’¯ÖÖÖ²ÙìÉ“'oݺ/˜`cc#w¹ýÄÅÅ•••555Íš5ËßßêÔ©!‹Å`0<==ét:‹Å²··GÙÛÛïÚµ !´eË– &ìÝ»—hïêêzñâE‰:þ|%g-·œr$‰#""åï;þü¤¤¤Ù³g—••íÝ»wòäÉ¡+W®TUUíØ±CîI)rñâEggg¼4%‹Å²´´œ1cFJJŠ¡¡áîÝ»?~œ’’baa±sçN „PYYYjjjii)NX²d ‰D عsçãÇù|þ… BBB\\\$’žžKäøá)ªtñâE$ª4kÖ,mmWrÖŒp/aîøÈ‘#\.wãÆ!¹ É ’lPUU%‹gÏž­|ÕsEýP(ÿ¨¨¨ââbâ¶”Ëå–––&%%999•——§§ÿ÷-Q¹éDøï%%%YYY³gÏnjj"Òê‘Û¿TÊ‘¢ãc]ºtÉÙÙyúôé555999¸ÛÌÌL\²åž”\|>ÿéÓ§D½0Ï !tæÌ™çÏŸÇÄÄ„„„kDL™2!tûöm¹áL---ííí<oýúõ^^^§OŸÆwÇ΀"Ã}wÜÔÔÄáp–,Yòþûï#„~üx¼|šŽŽþż´´´°°pîܹ†††JNJ–ì¡•ç9‘H$‹uòäÉ#GŽ|÷ÝwÛ·o'þùH$’X,–΄ǰqãF33333377·7n¼õÖ[΀"Ã=Y¿gð¯ÿ"‘H*ï#„~ø'''ɶ¶¶:::MMMJŽ%·Ÿ¼¼¼´´4ooïëׯO›6M•1+J'"ÔÖÖ"„ðT¬ˆú8à‰c‹/F±Ùì¼¼}úĉüñÇþþþ9sæ „Ô:)&“iggG²õôô°Ùì®®®Õ«W ½ã\\\ä†3‘Éä¥K—fgg÷õõõööà7ú œ E†»ëêê~øá‡mmmgΜ±±±‘[ÂäIµÙ´iS@@@MMÍ®]»Ö¯_üøñçÏŸKýÊ,·Ÿ ØÚÚž>}:55ÕÕÕµ§§'..NÉ€¥!„ètúõë×?ùä¡P¢Ù‘L9Råıŋ‹Åâ… âÇ~Õ=)__ß;wîTUU©2¾¾¾ääd??¿5kÖLš4‰x¼7%%ÅÞÞ~æÌ™ŠÂ™ÂÂÂx<ÞªU«V¬XñÆo‰®Î€\/'œ vcÀ÷âäI‹Å b±ØÂÂBÉS²ý´µµáÉÍ––:®ä³ HA:‘¯¯/“É<þ<ŸÏ7nñ—f¤RŽ|XÅÎAoo/‘!rïÞ½ÄÄÄ£GʦŠH…3q¹\}}}<Õ+ ™À˜7:™ðG’ $‰D")š»TÞñf—*ÙHJÒ‰ÐàŠu2à‰Ë¥ÖI­ZµJ­Ù*•*™¡G¥RåÖbYCÂáL`Ì­ŸÊ{évíÚ¥üösäsww×xß™3gjq$åXcø=4 „3 (Ç@Ë œ Í@9Z÷ÅHR=Ÿ Ê1оž>/{hS~Î÷!ë5Øñü×—To å ‰¹“Uzx€‘¯˜ÓÒ¥ ù§4 ÀÀ Àˆ «£l9_­€r ƒ»c ^ƒ¸««ËÌÌLÅ8^II‰®®®T2 ¯(Ç£Ïnݺåïïïçç§J{usK•d¶µƒâe:ð—ŽÜÏÏÇãÉnÿ׿þeii9$C`Èèê@9UÚÚÚîÞ½«§§wãÆ 6(ÏŽBå–¾ÄÌÖ³gÏ+%©2ò£G⥢cbb***Î;‡ .0ºô E7(ÇÚ”››;qâÄ9sæ\¹r¥´´”HÒ”›*›[Z[[›PVVF§Ó=<<¤–ÅPžÙªhwUÂIUiÍ`0öïß/5rEÑ¥ÄêN¸ [ZZ‹1I†±FGGöÙgróa•'Ø0œúú¡*7nÜðôôÄåøÆD9®©©!VYãr¹¸’º¸¸\»v­§§ç– ‚ÈÈÈîîîÐÐÐŠŠŠôôt@°uëVÉþ•d¶*ÙËåÖÖÖ>þÜÑÑ177wß¾}ÆÆÆ·nÝÊÏÏ_»v­êmðÿR#¯­­•.UŽËår8œªª*ggg:.÷úà WCC訨¯¿þúСCß|óÍ 2@c’åxñe±ñ?æßÖìðŸ[kªªª*++—,Ybkkkkk›ŸŸC:Á¹¥ºººnnn&&&EEEÞÞÞ[¶l122ÊÊÊ’ŠÐV’Ùª|wNA&“q8é¶mÛB8œTõ6rGîååÅf³.\¨ÖåÂa¬Š–HÅɳ .ÄA®ÕÕÕj-êЉ?Ù¹…ŠšeçJ¶TëP޵†Ífëéé%$$8p §§§§§'??_õÝëëëB¶¶¶!‰dccÓ×××ÜÜ,Ù†ÈlUwwNJ¥R‰pR:.Õƒ*mä"‘Hd2yÀ‰r)D«"DëG}”‘‘!›` ÀpêëIþÉ̹%Û&3ç–T3µ“ÚÑßߟ››ëììŒ×t755½víÚ7¼½½qEù§Dn)Î˨««Ã_òx<2™/{hS~Î÷!ë5Øñü×—To å u?•Àˆ…߬< Àˆ «£ÞŠÞ€r ƒ»ãQ¬¤¤DWW÷%¦m&''ÓéôÕ«W«Øþ¥€‘ ʱB~~~xew)ÿú׿,--‡<˜P($–ˆMTdü*þ»±±±ìFb™ã¶¶¶»wïêééݸqcÆ êFóa#ð¿ -ú„ð©<ˆÕ~ñ·“¥¥%±`.‹Åb0óçÏOJJŠŽŽÎÌÌ,++kjjš5k–¿¿ÿÔ©S‰6žžž‰‰‰t:ÅbáQVV–ššZZZJ§Ó–,Y‚Š‹‹“í¡¾¾þìÙ³?&‘H®®®VVV"‘(000""ÂÑÑ1::šÁ`ìß¿!T[[›PVVF§Ó=<<tuu• C¹ÃSÔ¹$ÙSHKKÓÖ€ .\¸âââ";f …bee…zã7H$R|||rròÁƒ¥^•»‹¤ÜÜ܉'Ι3çÊ•+¥¥¥³fÍRr¡Qòß噃§ŠÑZŽ•àr¹§ªª ÇÇQ(ƒ={öP©Ôüã¸ÍóçϹ\®““Ó÷ߟžž…:sæLgggLLŒd6¨l`×®]ÍÍÍ«V­zýõ×ÛÛÛg̘qíÚµžžžÀÀÀI“&áCôôô „AdddwwwhhhEEEzzº@ غu«’a(";<%K’=m ¸³³³¦¦¦««kÀš·Þz !T]]Mléííe³Ù!æîîŽ7ö÷÷ã V …BÐ7nxzzâr|ãÆ ÍÊ1“,Ç‹ÌWÒòÇüÛšb –c„ŽŽN||<ΪGñù|kkë’’¢ ‰DŠe2™ååå!±XÜÜÜÜÖÖVWW·xñbâ7wÙŠ‹‹y<Þ¢E‹‚‚‚ˆi4Z¿›››Ô`ŠŠŠ}||¼½½½¼¼rss³²²ÂÂÂpÿ²ÃPDîð”wN=…)S¦hkÀ^^^žžžªÌXYYéèèHîÎÎÎK—.!„,,,ˆrÌçó7n܈255Å3¿UUU•••055µµµÍÏÏߺu«d2!C­Oøÿ¯è–[¸tÑ;r›eçJ¶TËØ,ÇãÇǵX$]¸páÎ;<O$³“!333&“‰200Àõ$‰Åb„MIIIss3®—†"r‡§¼sLÉEÐÊ€I$’Š3¹---B¡ߌcL&399Yª™‰‰I||Ð5@!a¿XöÏ·?äáW¿ý!Onµ1ÆËñ‚ lmmOŸ>ššêêêÚÓÓ§¨q___rr²ŸŸßš5k&Mš¨¨“={öÐéôcÇŽ­[·î믿F-_¾ÜÊÊjûöí7oÞ”ì7îïïމ‰™3g‹ÅÒà\äO•Î]m ¸£££²²²££Cî«­­­»wŽ.**òòò:þ<ñìñ*væÌ¹=ää主»KÎ{yy‰Å✜„PHHˆ§§çÍ›7ׯ_ùòeooïµkתÕ?ªö‹äþI¹ž›r=WÑ«j‚ôçŸ*o‘½nÝ:>Ÿ?ˆyÉÚÚÚð„iKK N—}L’@ èíí• “WÔŸÏ×××—¬|>ŸÁ`ÈKmii¡ÑhÜ8ü¢›X,®««›4iÒÖŒFÅœîüœïׯû«û^ºœ¶#Èÿ}ÀZ:6ßÊ“B¼yÅ`0lL¥Re ¢ð$²ò-UŽ®ÙðTé\õSP½Ï‘ƒD"É>ª €õÃsÇ0E] #€ºïËiÊ1 ’¤`D臻c0Jáx1Æ ¸;£R~Î÷/{hYNÖõ¡>”c eÄS–µÀ3ó0"¨tw¬A2µ ü!i%ŸÚ –A}HzT¯V£ÌÀˆåF(Ç0"@9€a°åX,755=þ'%%%eeeÃ|Ðäää+W®(@jjªZ jëD$Ç6ü^îÑE4ÿTž@ HMMÍÈÈèîî&“É"‘hܸqZœê„B¡ŽÎÏåàÁƒL&óüùóƒépÿþýÇŽ#r6Ÿ>}ºmÛ¶Ë—/ãdO)™™™L&sõêÕJ••%‹%“â†áD¤Æ¦__ß––„žžž••UXXØÌ™3‡íè¼j4/ǧOŸÎÎÎ^±b…ŸŸŸ‘‘‡Ã©¬¬ÔâÈTÇb±RSSñ—gÏž|BÏâÅ‹ nÞ¼I”ãŸ~úiæÌ™rk±0'2HæææÑÑÑ<8wî\RRÒñãÇ_îxÃ4,ǵµµl6{òäÉ[·nÅ1k666666Ä« eeet:ÝÃÃ# '³±X,ƒáé陘˜H§ÓY,–½½½’íçÔ©S'Nd±XÓ§OGÕ×ן={öñãÇ$ÉÕÕÕÊʪ¢¢B$FDD8::FGG3Œýû÷k0Âܹs oݺN¥RE"Q^^žŸŸB(..®¬¬¬©©iÖ¬YþþþS§N•º8’(//?qâDCCƒ‡‡G__qç+ÛIZZÚPœ!;;ûâÅ‹$)44tþüùgÏžýå—_öíÛ÷Úk¯!„¾üòËþþþÍ›7Kí¥««;uêT<¼ßÿ]$q¹\¹#Q4B€Š4¼ùªªª‹Å³gÏ–¼‘‘‘Ož< uuuMOO'~Ýær¹¥¥¥IIINNNåååéééJ¶÷ôôDFF¶¶¶FEE‘H¤C‡‰D"@°k×®{÷î-[¶,<<ÜÁÁÁÅÅ…Á`Ðh´ÀÀÀI“&áÞpä»#!P©Tww÷ÎÎÎââb„ÐÇ[[[ÝÝÝB Åßß?**ª¸¸˜¸“•D !täÈ.—»qãF„ä e;¢Á²²²fÏžÝÔÔš6mZMMÍO?ý„êèè¸víš‹‹‹Ü}…B!›ÍæóùvvvB¡PîH”Œ ¢ï޳³³¥¶,]ºTOOOO¶}QQQcc£···——WnnnVVVXXþ½›D"ÅÆÆ2™Ì‚‚‚òòrb/ÙíEEEÍÍÍ>>>Ó¦MsqqIII©®®ÆjÑ¢EAAAľ4­¿¿ßÍÍM+#!,^¼ø?ÿùÏÍ›7ÝÜÜ~úé''''œþŽâóùÖÖÖ%%%J.]SS‡ÃY²dÉûï¿zðàXü߬e;™2eÊBÈÀÀàÈ‘#úúú½½½¹¹¹ÇÕÕUOO///ïoû[NNŽ………“““ìŽõõõ«V­êîî655ݶm›¢‘(!Aöÿ¯-$IK½ûÄçóÍÍÍB÷ïßß´i“Tãúúz„­­-BˆD"ÙØØ”””477›™™!„ÌÌÌðô«Q›änohh@]ºt ?@¥R[[[qçŽÿ_{÷eúÿü3Žƒ"‘Â'mZ%I:JN‹j+Tέß"õùÔ¦–t¢s›Ý6Tj+ûñ1ÕZ+*m [ Ir¢q>Ž™ß×oïÇ|øp…ÌÌLÒ–ˆn!AômL·.¬wG744¤ÑhÕÕÕššš¼/ᮡ¬¬ ÿ•ÉdÊÈÈ 2DÜ&ÿÿO^¾|¹QXSSƒ’vC=l …B±±±¹~ýzTTTKKËŒ3B)))×®]óöövvv.//QÃСCBUUU!‡ÓÖÖ&'''º’¾8^¥¥¥èŸ÷3›”””'NÔÖÖÚÙÙ‘nO§ÓçÏŸßeKÄl!¬€Îkjj.[¶ !úâÅ‹ªªªÔÔÔ¨¨¨ÖÖVsss:žžž^TT”’’RYY9mÚ4Ü uË”)STUU“’’~ÿýw&“™žž^ZZJTÎ`0ª««srrBFFF,ëåË—ííí¼5ô¼%óæÍC=zôhÚ´iJJJ!üxµ‚‚£GÊÊÊš››ÛÚÚ„í>aÂYYYüÉ}ïÞ½õõõ¸\X%}w" ãï¿ÿ~ö왞ž~«›2eŠŠŠÊ›7o,X fmÂZÒ[ÿè|É$ŽÊÓÓÓÝݽ¤¤$$$ÄÅÅåðáÃ>| P(êêê»víêììôññÙ·oŸ……E`` õ«¨¨ìÞ½[MMíÀnnnÑÑÑ?~Ä•ÓéôC‡­Y³æüùó¡Å‹ëêênÞ¼ùÁƒ¼5ô¼%£GFY[[ã’Ù³g?~<..ÎÊʪµµ5**JØî²²²«W¯®¯¯?yò¤ñÉ]X%}w"£FºsçΖ-[Øl6ñiCVVvæÌ™T*Om‹CXKzë€/Y×ë'%%‰˜~ær¹•••\.W[[›ï)‹ÚÚZ%%¥ž‘(в²2o!‹ÅRPPPTTä-QSS|Ò£[B¨¯¯Ç¾µµµt:]ô]øk2‚·=…UÒw'R[[«ªªÊ{{mëÖ­ªªªßÿ½U‘¶¤×/5ƒ†è¾õ<+B¡hkk“¾¤¦¦ÖÃÊ1ÁBÁEñE,“ß[-!7ßÄ©™÷=CœJúîDøvOJJÊÊÊ1º¿ª.Ë]‚%„¾\:::áááb>¦èk$ýå’` @ßÑ1HèŽ@*@w Rºc p+8C¾2 »‚½Vй%tÇ€Ül»EýݤEêýß|Ý]$ØñìùËâo Ý1jª>ùXø¢<-nAÉRû|jºcètÇ di$ËÈô.莠k0:⊥Óé8Ô#;;[VV'½ztÇÒkåÊ•8 óÅ‹ÿùÏöîÝ;yòäÏpè~øááÇëÖ­ÃÉÖXBB‚††îŽÃÃɶõ››ÃÊë—_~9rdÏë` ¥Aw,õ>~ü¸wï^WW×ÏÓ×××?yòD^^þÞ½{®®®¤Ë"Ÿ>}š/3Tbd³Ù¡}ûöœ9s/ÜŒÃørt°9}}øV^tttüðÃcÇŽ]»v-QX\\´dÉ__ßÜÜ\…¡¡¡III®®®nnn=êòˆÉÉÉ#FŒX´h“ÉÄÙT‚¢££B111ÅÅŸüæÍ›‡"mLZZš‡‡GFF_UÚÚÚºººººº¸9r$þ+FÃg0k×®-,,ôòòŠŒŒÄ{mÚ´iÏž="N€§£“#ÁŸnºã9}útMMÍöíÛ‰Qjkkë¶mÛêêêvìØA¡PöîÝËápH BåååÙÙÙ‰‰‰“'O®®®Æ}¨h÷îݳ³³ÃI£÷îÝ#ݦ¼¼Ï0˜˜˜”””Ü¿—'$$Œ?ž´1MMM%%%ÍÍÍâŸ;nüåË—qP^II iÅ/}üøQØÕÿHÞNvöŒi"þ@wÜjkk“’’Z[[[[[‰ÂŒŒŒšškkëqãÆYZZVUU½ÿž´o¯¨¨¹eË–Ù³gúô doݺõ3ÌÌL¼qQQQaa¡­­­¡¡¡¡¡ajj*NAÆÂÂBUU599™Ãáäåå}üøqöìÙ¤±··g0D$ ˜h4ZtttPP°D'ÀÀÒÁæ’’Ó…m–”œÎ»e·sÇ’SSS[µjÕ™3göîÝ{äÈ*•Šª¬¬D]¾|ùêÕ«!99¹ºº:ÒB\‰ªªª‚‚BhÔ¨Q¡¢¢"}}ýššÞ æ¦&üƒÁ——?uêB¿ ¤¦¦:88k!F³¶¶¾{÷nNNNzzúÔ©S•••IC¡PH§¡E:t¨ˆ()aW£»G@ð uî?\l7‹o›„û»;"æÝq8;;gff>}ú466ÖÝÝ!„㢗/_N6#„jkk ù”––"„pT’···àÉÉÉæææøšššwîܹwî!4oÞ¼»wï2ŒgÏžmÞ¼YX {¾éWWW×ÖÖ†KúîX|f‚ýì­¤?çðþµ'}1‚î¸ç¶nÝêëë7iÒ$33³)S¦¨ªª&%%š˜˜êëë“êêê"„*** †ŽŽÎ³gÏtuuqÿEêéÓ§---!!!Djiié³gϘL¦°¹„ÐøñãGŒñûï¿+++[XX „HS\\|ñâEOOO¼ôôôÞ½{Ç`0;;;q¡ˆ``aw’Ì<\ÿoʪ…ÖøÒ ºæŽ{JMMmûöí\.wÿþý,KEEe÷îÝjjjpss‹ŽŽþøñ#i!ÞN§ß½{wË–-l6Û××WÄîß¿?kÖ,Þ\j{{{.—KÜ©fÞ¼y\.×ÚÚZVV!DÚ˜ÆÆÆÂÂÂÆÆF‰¯ÃòåËB§NZ¼x±’’.qâ ,ìNéŸ+w“¯ÜMöj·Aá£$•””´f͋Ճù544P(eee…ÄwIX,Ö!Czëaáž´;sc¶Ý¢î®èÖÚÚJ£Ñh4’\"Ž€”{ZÜ’zÿ7—5ßH°ïå«×ˆõŽ»ìKa²¢¯¨¨¨ˆYˆ}C¬kŒÄð=ÉÏs,>³ÎžÍ ‹ºãþ‚'RŽÍééÔp— ;îOß7|f=¿S×%莠kì¾ÿB)tÇеNƒ~„#ÂFÇ ¥Þÿ­¿›€¹Ÿx·¯_€¾Bq(æF·¶‡î¤‚ÔuÇ\.·ººúÇ¢Vÿœ²³³¥6UèíÛ·ïûþý{¼$¦Ä***HDº[@’ͯ\¹²¶¶vÞ¼yÛ·oÇ%ׯ_?w‘ÑéÓ§%nJ{{{\\\|||KK‹ŒŒ ‡Ã2dH||¼Äö›Í&–ÂéÅ`æÞ•––ö믿>|X²Ý?|ø*â‹Ú·oßÞ¿¿œœBˆB¡¤¦¦âr‹µeË%%%&“¹páBÉÊÉoå=~ü¸½½ÿGMIIéySŽ?ž””´dÉ777•âââžW+ÀÀÀÊÊʸ¸8ü×^ fîEOž<Ù»w/Ž"•̬Y³nÞ¼¹sçΈˆ›-\¸p×®]|…G533 hnn^¹r¥¹¹ùĉ%($ìŽÇŒSTTôüùs++«ÒÒÒÒÒRMMM.÷ÿk%***77·ººzâĉëÖ­3fL~~þLLL‚‚‚X,ÖöíÛ}||ÌÍ͉ KKK †¾¾þwß}‡S‚ ˆWO:•››K§ÓçÌ™ãîîŽtjjjvvv111t:=00pìØ±"Ê‹‹‹;VPP0bĈÀÀÀñãÇ#„***NŸ>ýêÕ+ …bee¥««[PPÀáp<<<‚‚‚LLLÂÂÂÔÔÔp4rw[ÂKð² „òòòŽ=ZYYimm]SSÓÖÖ†;GÒ¦òºté’¹¹9N 9rä„ ®\¹¢¬¬¼}ûöW¯^]¹rE[[{ëÖ­xqúÜÜܸ¸¸œœ:îîînkkK¡PÜÝÝ·nÝúêÕ+‹õóÏ?ûúúZZZvù¯ßÚÚzïÞ½K—.!„”””pþÓĉ»[Þß8? }òòòø£ëŸþiii©  @„­Q©ÔuëÖíØ±ãéÓ§xŒ9vìØÑ£G'%%¥¥¥={VAAaòäɼq¹ÜÉ“' &¶µ··oÛ¶íÍ›7ß~û­••Õ7ˆyƒòòòœœœ .˜™™åçç߸qCD9iªq{{{HHȳgÏæÏŸïïïolllii©¦¦¦¤¤äáá¡££ƒx‚™%h /ÁË‚:pà“Éôññ¡ÑhåååšÊ[‹ÅÊËËÃ:>zFFFbb"NÜØ½{7ƒÁ066ÎÉÉ!¦Nž<ùáÇ}ûöùúúâóB=!ôèÑ#IÒiiiÿùÏ’’’ˆ·Ûªª*6›MT¢££SVV&A9€—„£c ‹Çwtt¤¤¤¬[·Ž÷ž’¿¿?BˆÅbéééeggãB??¿gÏž9r¤©©éäÉ“|Ý.~4O^^^ðXUUU‹-rpp°··ONNNLLôóóà %""BCC#---??ŸØK°§/Z´§_¹råýû÷¸«µ±±ñòò"öURRêììœ9sf¯´DÄea2™¥¥¥óçÏÇõã.´©ÄgôO$(oÊ‘¢¢âÁƒ©TjJJ •J=tèPssóÇq45—Ë­©©©¯¯/++›7o1÷¢¦¦¦¬¬Ìd2½¼¼ìììß ­­­õôôž?~ìØ±¼¼¼ÀÀ@„ !V7–——Ç%Ý-ð’|JtÆŒMMM·nÝb2™S§N%Ê9NLLŒ§§§««kqq11¤ÒÔÔ\°`ACCƒ¹¹¹‘‘_mZZZ¡çÏŸ ¨¢¢!dhhˆ¢P(555øÕaÆihh „‰c‘–©Æk׮ǩƸrü‘¿K’µDÄeÉÊÊBñö³iSy7¬_[[[QQQNNNFFFOOONNŽN§¯R(”ÀÀ@eeåÈÈHÞ÷N …Âår)ŠŒŒŒ`w¬¦¦fnnîãããååuåÊ•ööv„>M"ߺ±±qèС”xIÞ[YYÑh´ØØØ©S§òŽjSRR®]»æààp÷îÝqãÆå ÉÉÉrrr™™™ïÞ½ã«ÍÐÐF£TWWó½„ÿ3o™L¦ŒŒÌ!CºÛ`"Õø¿ÿ033Ã1‚ƒYÁþ®‡-!½,úúúD…Ę‘´©¼µáw/<³!&++«Ÿ~úÉÅÅ%???::Ö××744ˆH>%Lš4©³³ˆ6l˜ªªê‡ðKÄȽ»å^’wÇt:}Ò¤IííísæÌá-ÇÏ +((}zèСû÷ïçr¹Gå› ÕÔÔ\¶lB(44ôÅ‹UUU©©©QQQ­­­æææt:===½¨¨(%%¥²²rÚ´iø‰Žn!Rÿýw&“™žž^ZZJTÎ`0ª««srrBFFF,ëåË—x0HèIKH/‹±±±²²2ƒÁ8yòä¶mÛØl6Ÿ’6•·6 ###¢ƒëRkk+ƒÁhnnvvvVQQ!¢Eq –––ééé7nü믿„ÕpïÞ= r±jÄ IDATáÇ#„¨Tê‚ BŸ>}JKK[¼x±å^=z~kÆ ß}÷ß½øÙ³g?~<..ÎÊʪµµ5**êÙ³güñGpp°©©é’%KÞ¼yóÛoü †yzzº»»—””„„„¸¸¸>|øÃ‡ E]]}×®]>>>ûöí³°°À3˜ÝEšjŒ+§Óé‡Z³fÍùóçB‹/ÖÕÕݼyóƒxkèIKH/‹ŒŒL@@€ªªê“'Oœœœäååqç.NóÊ•+?~\TT$ÎÑ;::bccÝÜÜV¬X¡££C<ö{åÊ•±cÇššš K’>yò¤««ëÚµk³²²öïßOÌføùùzxx¬_¿ÞÇLJív·@è«$éúúzUUU„Pmm-N?ŽËåVVVr¹\mmm¾©ÌÚÚZ%%% ÆÅ|HSY,–‚‚‚¢¢"o‰šššàtjOZ"xY˜Læ°aèTêßÿ½eË–Y³fñ>ä+:€ùÖ­[OŸ>=pà€˜Gooookk#RDŸ={sðàAÁ\ÑC17ðBmmmåååššš¤Ù£åååø)”–0(í8øãÞ­>DçÙoIÒ¸ÓA©©©ukG …"l*³»U CÚ³f9‹Hw–¸%‚—e÷îÝåååeee#GŽäûºšèf'''<Ë,&999Þ·999Ò¾˜—¼¼<ñ8 âÙµ–,°Ùï´©©©ÄûztÇýLEEeÒ¤I“&Mêï†ðc±XÝ]ÐÐÁ^+ÕÕÕaz>'èŽ Ð+ œ ôÐCÎR™`@úÒ»ãØØØ›7o⟅…0ÅÅÅ]½zUü:{7̉Ëå2™LÁ¥<>›ŽŽŽ>ˆŽqŠ\‡¤'D|¾c³ÙÿûßÿvïÞ}ýúõ^<¢ 7n¼|ù²»{õú¥_ŽÁÖïÙ³ÇÎÎŽXÕ!”——çàà ìˇ ÷îÝÃ?‡‡‡këðJLLLLL}\ÞÞJX=ÝÕÑÑqñâÅ%K–¬_¿~Íš5NNN·oßæ[룯>}zíÚµááávvviiiÂ6»sçߪ’ùøñã¶mÛ,XðÃ?Û&55õêÕ««V­\à¿wÝ»w¯   »{õÖ¥_ Áv+oÞ¼yiii< Â&þøãSSS¼›h‡0õQ˜Ó™3gîÞ½»zõêµkײÙì³gÏž}úäçççèèH¼}òµßÃÃÃÆÆ&44´µµ•(÷ððxýú5þÙÏÏ/33_:WWW‡ððpÒYè–ÁÖËÉÉÍš5«©©ééÓ§¡¿ÿþ»®®“˜4‰„ŠŒŒ,//ß°aBˆw¢C°’> s*,,äp8'N$Úªªª†††mmm%%%¡’’’ªª*¢6¼ä›°T§òòòìììË—/›››7®¤¤ä?þ@566Þ¹sÇÒÒ’4œÉÈÈÈÞÞÞËËëêÕ«Dw1wîÜ»wï¶´´$''ó5[ðU‡ÔÔÔtîܹøøøY³f¹¹¹éëë{yyÅÄÄP©T1ÿe1''§éÓ§ÏŸ??&&/ôqâĉ+Vq¹Ü   --­[·nmܸqÏž=oÞ¼A•••9rÄÑÑ122ò—_~ vss >{ö¬à„øŒÊÊʈ³.))ÁëÄâ qO­§§—’’"Á,3|[wŒš7oB¯ùǘ™™á…{üýýgΜi``ÀEªººº¸¸xÆŒK—.ý¿ÿû?¼Ö;&XÉèÑ£•””deegΜɷêsš3gŽƒƒÃ¦M›TTT‰É_æ„3OGÇø=€o ü×ÚÚZa-Ç©NÖÖÖ8Õ©ªªêýû÷ø%4þ|yyyþ}ÿþ}mmm333{{{ƒ?Fð ÷ññ9vìØ¶mÛZ[[›››³³³§NZ[[ûõ×_󥷾𗗗ŸŸïããchh¨ªª:|øp%%%¦¬¬,Î %%%yyyEEE üFµ~ýz | uuu[[ÛñãÇ‹¸º»»ÛØØLž<Ú°²²š>}zCCß Òööö/^¬_¿žN§OŸ>ÝÐÐt=?‚££ãÈ‘#ÕÕÕŒŒp×@O ¶¹c„©©©¦¦æÓ§OY,ÖÇ7n܈âp8?ÿüóãÇ™L&‡Ã!VV#…'.¤ºU " sÊÎή©©Á˰‰sÂËÚñý'ÇŸ—E,L¤:áGAxS†Šß-¬¬¬RRRòòòœqó„u=6l°°°Ø²eË?þ8eÊ6›†_ÒÓÓãÝ2++KðÕÊÊJ™¾[®HSSÿÀd2•••‰EãŒñõGÿĸ „ðòÙ!ÒÉýœœ999q²Q°û÷ïÿñÇ---oß¾µ±±éÉY€ewL¡Plll®_¿ÕÒÒ2cÆ ôO6¾ƒ,:Ö'¹á©‡ÓÖֆץQI¯‡9ýë_ÿ’““ËÍÍíèèÀ«EWUU᥇‰Ö®««#>G©N>>¢¾Sgcc“’’râĉÚÚZ;;».cbbâììüðáC[[[6›}øðaÒ…=ÕÔÔ_>|8‡ÃÉÏÏŸ0aïÆ½>Ùª¡¡ÑØØˆ¿…*..¿cå­¡©© Ç òµ¬a³Ùxî>///44ôÚµkzzz~~~½và 6'+Ð?ó=š6m^ì\Xd© &ÈÊÊâ è½{÷Ö××ãra•ôE˜“ººº³³s{{ûáÇ«««ËÊÊ>,##C$^ëéé½{÷ŽÁ`à€\Øeª±™ŠŠÊ›7o,X€ÛCÎTTT„Ÿôâp8¯_¿ÖÓÓ366Ö×׿pá>ñ††ÞíI_Å…/^¬­­íììÄó#FŒ3ÇD|ãÆÓÒÒJLLär¹ïß¿ÏÉÉá‹ ë’ÁСCýõW6›}çμ¼<¢G9rd~~~sssxx8>¯êêjUUU--­wïÞ1™LÁ»št×àìŽ F"&CI³‘„í.++»zõêúúú“'Oc=a•ôE˜BhÆ îîîééékÖ¬Ù°aCff¦~§A-_¾!têÔ©Å‹ùâ¤:áœ9s&•J]ºt).! gzýúõºuë–,YâììL¡P¨TjDDDff¦£££““ÓÎ;y·'}•J¥îß¿¿  `ñâÅ·oßF-[¶ìöíÛnnn| {ûö­££cLLÌ“'OñÆb’““Û·oßÕ«W—.]êââ²zõjüÁ¨[¼½½Oœ81wîÜ‚‚cccbgÕªU§OŸ^²d‰©©) ´´´ÔÑÑqppؽ{·­­í¥K—`úôP_…3I§nEFµ´´ÈÈÈð†d‹®¤/œB§¼¼¼¦¦æ×_}ôè‘––Öøñãׯ_¯££ÓÚÚJ£Ñh4’'Ñ©N¡­[·ªªª~ÿý÷¤¯áL¥¥¥ZZZø)7Þ3RTT¼8"^ýô铪ª*ÑZ6›ÝÔÔ$A"x—jjjÔÔÔºûÌ¡­­­³³S0Aªµµ•J¥òýο uuu}q.`@“–p&éÔ­È(ÞÜ|ØÙÙ‰oXñu‘¼DG.%%%eee‰ø|@ R©¤%¢ÏˆôU¾ç(h4Zõ_xê_bÂÞcH¯6ñË}1è¹/«;ètttzå+y:::ááá&&&=¯ Ð[ ;þ‰óØ„3ð™Aw H@8ŸtÇ€Üà¸y À28t€G¬Ñq·_ ®Ÿ;ñü€néÑsÇ0‡ŸÌ€T€î¤tÇ  ;© u_‰¥Óé8¢¢Oq¹ÜšššæææaÆ [-è3ËÎΖ••í­Œä^9ÁÎÎοþúëñãÇòòò«V­*++ëÅv©w/RNòîxåÊ•Dh›†††¡¡á† ÆŽ+z/6›Mº $!!!ACC£O»ãööö¸¸¸øøx¼„&‡Ã2dH|||ßQÞ ®¡¡AÄ›J¬O0===,,láÂ…ÊÊÊmmm½ÕBúâ‚0 ôht¬®®~äÈ‘†††·oßž;wÎßßÿøñã"zäÀÀÀÊÊJÒçÏéøñãIIIK–,qssSQQ)...,,ì—–ð]Ó§O“f¸uW/ž`ZZBÈ×ׯ{«…ÂôÑ`@èQwL¥RuuuB_}õ…B‰ŽŽŽ GEEEåææVWWOœ8qݺucÆŒ¹víZAA‡Ãñðð 211܆¨9))éÒ¥K åÛo¿>}:i…¡ÜÜܸ¸¸œœ:îîînkk‹*..>vìXAAÁˆ#ù>ê–––2 }}ýï¾û/o``@„–––ž:u*77—N§Ï™3ÇÝÝ/7Žóžíììbbbètz`` ~×VNÚ†ŠŠŠÓ§O¿zõŠB¡XYYéêêò]°°055µ={öHÐ’¾8ÁóçÏ?zô!´iÓ¦3fxzzò¶0//ïèÑ£•••ÖÖÖ555mmm!//¯±cdž„„à‡Jbúôé.\ KHHèò7¤W.E¯ =&Mš„"bä©TêºuëvìØñôéS<ر´´TSSSRRòððÀ«§ nƒUVV&&&Nž<¹ºº:::ZX…¡“'O~øðaß¾}¾¾¾¸ÎÖÖÖmÛ¶ÕÕÕíØ±ƒB¡ìÝ»'NŠŠŠ¸\îäÉ“c;ÚÛÛ·mÛöæÍ›o¿ýÖÊÊêÆÄÇäòòòœœœ .˜™™åçç߸qCD9iÚÛÛCBBž={6þ|cccÁ R^^Îd2%kI_œàÌ™3Gމòðð˜={6o B`2™>>>4-##ƒr-))Á©¯x{"ª¼¼<;;ûòåË8BPœß^¹ ]Ž“’’øJ7ÓÕÕ¥ÑhD€£¿¿?BˆÅbéééegg#„F­¤¤ÔÙÙ9sæLaÛ`ŠŠŠ‘‘‘ mmmÉÉÉÅÅÅúúú‚ã[UõõõeeeóæÍßj322jjj-Z4nÜ8KKË+W®¼ÿž¢¾dHšø‘‘QUUµhÑ"{{{]êçç‡k¦P(iiiùùùÄ^‚å¤mÀ=‹ ‘=Šâ» =lI¯Ÿà¿þõ/r!ØB&“YZZêàà0þ|\³8ÉÐ4-::í^œßž\Áß[ú]/„3­Y³†÷¯¤ÕÕÖÖ²Ùl<¨áp8?ÿüóãÇ™L&‡Ã!lx‰ØFUUáŒ5 !TTT¤§§'¸1…B :ARYYY!Þ÷9q :÷Åâü†ô°å|¿´ô».×bwî¸Ë•+îÝ»‡š8q"B(%%åÚµkÞÞÞÎÎÎÁÁÁÄÇX„ñ¿EÄ6Jobb"lc++« &ܼyóòåËÑÑÑÇÇÿ?—/_îãC¾tº¡¡!F+((¨®®ÖÔÔä} ÿ—.++Ãe2™222d ‘¶¡¦¦!$8˜%íøzÒ’Ïp‚! ‡«jlllll¤ÓéÄ«l6!TWW×ÖÖFº»8¿!=l9¬µœÍwtt<þ<--íôéÓ?ýô“††’´´´ „=zTVVÖÜÜŒÿ[±X¬—/_¶·· Û!TQQÁ`0þþûïgÏžééé 6ŒtãÖÖVƒÑÜÜìì쬢¢‚£§L™¢ªªš””ôûï¿3™Ìôôtܧ455—-[† }ñâEUUUjjjTTTkk+žÓLOO/**JII©¬¬œ6mšñϤm *g0ÕÕÕ999|„·†ž´ä3œ BÈØØXYY™Á`œA&“9lØ0*•ú÷ßoÙ²eÖ¬Y»víÂ/µ¶¶Òh4Ñß÷Aâý†ðé­>¿.ûÒ>ü’4qFMM·œw={aÛ–n,''GúŸS°ƒæC¡P´µµI_<´dHÛ ¸œ¿ˆþ{Ò’¾>ÁÝ»w———khh”••9:ÁðØ.‰ó§·þiBR·f(00pîܹ۶m#ò +**6oÞlcccoogl"##oݺ…_ HNN&ÝËßßîܹ+V¬¸ÿ>.LMM]¿~ýܹsÃÂÂBgÏž}õêUTT”““Sgg燈†ã½îß¿ïçç·cÇÜx///kkëâX|Õò#Q/¾SøóÏ?CBBlmmOœ8ñéÓ'???GGGœ|ºk×."·´©©iíÚµÍÍÍݽ†ô#i™;(AÔ]âr¹UUU—/_njj²±±¶YSSSII‰`/P]]M„û8pÀØØ8!!ÁÁÁ¡¬¬Œ7µ(66vùòåxýú5´r8œ   ¦¦¦sçÎÅÇÇÏš5 !4kÖ,"¯¬¬ìÌ™3|{q¹Ü   --­[·nmܸqÏž=oÞ¼ár¹Gõ÷÷¿wïÜsssÓ××÷òòЉ‰¡R©3fÌ;w–,Y’™™ÙÐЀë?qâÄŠ+‚‚‚Bsçν{÷nKKKrr2>_µ|çHTÅ‹ïŽ9âèèùË/¿»¹¹Ÿ={–ÍfO˜0á×_Å[Þ»woĈJJJݺ†ô/iyîx Qw)//ÏÅÅ!´páBS+ööövvv¤+¬cííí/^¼Ø¹s'NŸ>}º¡¡!ïÆÞÞÞÖÖÖ!;;»§OŸ:99ååååççŸ9sç{⥄­¬¬xë¶×¡C‡ÔÕÕmmm¯_¿þÛo¿7ŽB¡¤¦¦N˜0¿K)))Ñh4eee ¦¦¦ÌÌÌ_ýUEEÅÜÜœ·aëׯÇï@ÍÍÍÙÙÙµµµ_ýõóçÏ-ZD¡Pøª}Žß)¸»»ãC())¹»»[YY577744TWWÛÛÛ>|øÝ»w 6lèî5öoÀç!-£c¾ ꘘOOOWW×ââbÒ,KÛQ“nŒƒ¨•••###ýýýß¾}‹xB ×®]/D¢R©¼‰œl6›J¥5jÔÞ½{åää DŒ¬)ŠŒŒŒˆî8''GNNNØúñòòòø‡Ñ£Gã'*++eddLMM…UHº“ÉTVVÆ—!dllÌd2BûöíKOOwrrzüø1_%ÿý·‚‚ˆ#ë'’R³²²ØlvXXØÎ;ÓÒÒˆà;¾jEŸ#)œaŠÂYS!"/FMMÍÊÊ*))éÇ¥¥¥3fÌèî5 IKw,Díààp÷îÝqãÆñnÆDMº /ˆZpc++«Ÿ~úÉÅÅ%??Ok!Ðÿý‡™™_µÃ‡¯¨¨Àá›\.÷ýû÷¼ÍJJJS§N]½zu~~þõë×%¾ MMM|'Χ¸¸Ïó >œÃሾ*¸> ñ­¡ââbÜß7îúõëß|óMHHñÞƒÛ0vìØ¦¦&œéÅápëWSSc³Ù‡ŽÝ»w/.ç«VÌsß‚  FBB‚ ¨Tjw¯!ý«?»ãD233Ãw«ªªâã㛚š¾úê+¾mV­Z¥©©yéÒ¥ââbÞ“Å^¿~žž¾qãÆ¿þúKØÅ100:t诿þÊf³ïܹ“——ÇÛ›dffr¹Üººº'OžXZZ"„Œõõõ/^¼X[[ÛÙÙY]]*))Á?ÛkܸqZZZ‰‰‰ø}%''gΜ9………T*uÁ‚!<¶1b¾ª¡¡1vìØýû÷§¦¦îܹ“Åbñæb¸1.\Àÿ(xFX°ZÑçˆñ‚hsæÌa±XW¯^]²d‰×€þÕŸÝñ ¢öõõµ³³{ðà‹‹ËÕ«WV­ZÅ·¼¼¼——W{{û¡C‡ð”>YìäÉ“………¤CK‚··÷‰'æÎ[PP`llÌ;³Q[[»råÊeË–iiiáÉt*•ºÿþ‚‚‚Å‹;88ܾ}!tìØ±ß~ûØ«¼¼œo/99¹}ûö]½zuéÒ¥...«W¯ž1cFkk«¿¿ÿÒ¥K}}}}}}qâß²eËnß¾Âûá‡ÚÚÚ._¾lgg7lØ0Ád<*•‘™™éèèèää´sçN„iµ"Îã;Ñäååmll ˆéþn]CúW&I÷ôQ—••éèèŽ %p(æ^BhãÆË–-sttÄåmmmxäNhllÄw5[ZZˆôO§OŸTUU¿,ãììheeEºWMMššï$x]]ŠŠ ïÙ±Ù즦¦!C†%,ËÁÁáÒ¥K¾¿S[[«¨¨HÌÒ’VKœ£··÷‚ –/_N~ijmÛ6 ‹+VÖÏ»™èk@¯Øqðǽ[}ˆÎ³?“¤{Húƒ¨uuuEoÓ]§OŸ.,,œ6mQÂÛ‘𛄌Œ ïÛ¸ÙEJVV–t¯¡C‡ò•ðv»FÃ…ááá ECCãÁƒsçÎñ]JÁÁjIÏQ2ååå=ƒqÑõ‹¾†ô é펿@£FºuëV—ï’Ù¶m~®çÖ­[÷öíÛOŸ>m߾ݢWêDùùùiiiõ°’èèè>º€ô5莥‹Åz”[ö(·ëu-$÷gVïÖ÷¢èÓ픽[gÏÝüýY7I@w,Õ°/IDAT‚½Vª««Ã ô|É ;– ÎÀ áL d œ ¤„3À€ÔÏÝ1—Ë­®®þðáþseggK°Bq· Öð§~9I`λ¹¹566âåeEÇ,¯6lâĉß~û-þ:F{{{\\\|||KK‹ŒŒ ‡Ã2dH||<ߺ•ᮡ¡AÄ&õ…Ïþô¥!ÍIZ´hQ[[›¬¬,›ÍÖÖÖvtt\½z5é ñ· gÏžý¹Ú @_é[yêêêGŽihhxûöí¹sçüýý?Ntš†††›7oNNN¾uëÖðáÃÝÝÝBÇOJJZ²d‰›››ŠŠJqqqaa¡•ó:}út¯|eù çíííììL|Q»¿;88p¹Ü—/_~ÿý÷o߾ݵk—àfçÏŸWTTüüÍ ×õNç%"f !$++klllnnŽ¢Óé¡ÒÒRƒ¡¯¯ÿÝwßᥠìììº[y```hh(ƒÁX»vmaaaXX^'3&&ÆÃÃXMíæÍ›‡BB‚—ø*á=tEEÅ®]»œW¬Xqøða¾†‰ø$X(,œ‰4*‰/÷ˆ4‰×Ía"E¡P¾þúëU«V%$$”—— }çÎYYY»víÂk´"„X,–««kGGiÃøv@zôþX’/f !TWWwåÊ•'NÌš5kþüù¡¢¢".—;yòd믋SyyyyvvöåË—ÍÍÍétzyy9^=ÝÄĤ¤¤„øŸ0~üxaÁK|•Çjoo yöìÙüùóýýýq&4/1ŸH IÙH£’@îi6¯šÃ$ÂÌ™3¹\.žbæ;zYYYKK‹‰‰ ‘1xï޽ѣGËÊÊ 6Lpw¤GïwÇ|1K¡ššš«W¯677Ïž=/݂ē`íÁÊi4ZtttPPo胅……ªªjrr2‡ÃÉËËûøñãìÙ³qð’µµ5^ªªª"ºuÒJž>}Êd2gÍšååå5gΜE‹ñ5ÆßßæÌ™|OUUUeee3gÎ?~¼°B{{{ƒÃ8*ÉÃÃG%?žX[çÙH^^^‚ÙH¼pò¥¥%NV9˜ÔÙÙ),‡‰ôXD{pÓÔ©S‰&„`µ8'iýúõ"r˜DÐÖÖ¦R©Dªqtb[[ÛçÏŸãå ÿûßÿ.\¸´aÂv@ô~w̳„ܺukíÚµ{÷î=sæ B¯Ãû?DâʇÊ»ÆF£Ñ¬­­?~ü˜““óàÁƒ©S§*++‹^"­¤¢¢!Däfò?ðIX¡`8“°¨$Ä“{$"‰× Èaâ•••ÕÙÙI,¡Ç¿‚ :ÔÌÌì÷ßÿþýÇ---…5Œtw¤AïwǼ1KYYÙeË–Ñéôû÷ïs¹\CCCVPP ~ЃˆÊIÍ›7!Ä`0RRRð¬´8ÁK¼p-,îHüÀ'a…‚„E%ñ'‰×àÈaÊÈÈ>|øèÑ£Elƒ?p$&&:::ÊÈÈkRKòî˜wd',f kjjJMM={ölSS“‘‘…BÑÔÔ\¶lB(44ôÅ‹UUU©©©QQQ­­­‚]¹0ãÇ1bÄï¿ÿÞÙÙ‰'x‰žJNOOg0ÕÕÕ999¼¯ŠøDZHÎD•Ä×*aÙHW®\!¦GÑÀÌaâ;¬±±‘Á`ܺu+ €tej‚MnnîíÛ·.\(¬aH3ItëììüôéïÒ´8yHFFfĈöööžžž¼9%%%aaa***3gÎ$zROOO•¸¸¸„’’’°ùDÑ•‹0oÞ¼K—.Y[[ã%ÆqðÒÑ£G8€RWWÿ÷¿ÿ-b yuuõ]»v9r?•1a„£G¯Îž=;!!?rgee•˜˜åçç{øða …ò¯ý >á(¾BÒp&•´cÇŽk×®ÕÔÔ¸¹¹Í˜1C°a?üðCttôåË—W¯^]RR‚³‘îܹcbb‚CïÑ?9L555“'OæÍa⫼¡¡Áßß_VV–J¥òæ0íÞ½ûñãÇ/^$=/œÃ´sçNGGGuuu==½èèhœÃÄW­··÷ÁƒÏž=»téRÒ&¾Sؽ{wXX˜¢¢¢¡¡áÁƒ§L™"úŸ[UUÕÒÒ²²²ÒÈÈHXÃD×@ÿêv8Sttô§OŸ=zäìì¼qãÆžËåVVVr¹\mmíî>e!±.ƒ—ø°X,Ò‡[Å|–…áL˜`T’°†‘f#}!9LblŸGŸ‡3577ËÈÈxzzöÊ7Ó(ŠÄ·w$ÖÝ´Á»|ñŸ„¥@‘ŒJâ%f6ÒàÎaŸ`ÃNÝîŽÿýï÷E;€øºÌFúBr˜d`½ciÁb±º»Ÿ¨l¤/#‡ €Áºc©áL莥„30(A8Ó€CcgŸC—O œ $èŽ@* øîØÁÁÁ××—økpp°LžßÀà0˜»cÒœ$qò™ð_ÓÒÒ6lذiÓ&bMÒ4¦ÀÀÀÈÈÈÄÄDWW×7¾ÿþ¿ÿý¯‹‹KPP±Z±àA……3yxx¼~ýÿìçç—™™‰„u;ššºcÇ{{{"Yêܹs®®®áááÄšjþùgHHˆ­­í‰'>}úäçççèèHDœлsw,‰$f>SyyyNNÎ… ÌÌÌòóóoÜøÿ·GIÓ˜ÊËË322MLL wïÞÍ`0ŒsrrRSS…”4œ !TRRB,:\VVÖÚÚJt$NìPYYYDD„¹¹yTTÔÍ›7ñ"ôzzzqqq)))/_¾$v|ˆ³SIjooogg'Î"vDÐÑ„ ð› Ž  b‡ˆà(;Dì»fÍ'''„¾¾~^^ž‘mddôæÍ›¯¿þÿÕÝÝ﨤¤äîîneeÕÜÜÜÐÐP]]­ªª*ìp€^4à»c*•J 'Bl6/‰#‘Ž=yûöíÍ›7ùLW¯^E‰Èg6lËPTTÄê9ÎÏ?ÿüøñc&“Éápx®ÔÖÖÆËoÊÈÈèééÉÉÉñö³¤Ŭ˜çˆ×)~ðàÁ÷ßoeeEÄáWõôôˆ-ùb‡F… –v»ÿþüÑÒÒòöí[ÞŽ›ˆ¡P(ø: cŠ8  øîxøðá---¸ß|ÿþ=1â³²²š0aÂÍ›7/_¾}üøq"ŸI‚§/p“···³³spp0™GwŠçOØl6Aÿ]ºt)$$äÁƒDì®Y|yyy¡¡¡×®]ÓÓÓóóós/‰è–?wlffÆápbcc«ªªâã㛚š¾úê+$$©»ùL¼HÓ˜ÄÙ‘ô ¤áL¡‘#Gæçç777‡‡‡ :’8vÏ}ú… ÂÂÂ:;;9RYY9gÎœŽŽ†JKKûùçŸ}}}---û÷¢¤Ä #„Øl6ƒÁ`±XFFF222¤qJ‚¡M¤…úúú%%%DZ]II ^4'==][[»½½}Û¶moÞ¼ùöÛo­¬¬nܸqöìY\_ÔSdddyyù† BÄ‚M™ZZZŽ9òÍ7ßÄÇÇKs! × ªÑqEE…““SKK‹¦¦f@@"‹S" m"-;v,Nñâ…]vv¶––VNN—Ë}þüùÖ­[322ªªª-Zäàà`ooŸœœœ˜˜èçç‡÷%¢žª««‹‹‹mmm—.]ŠÊÌÌÄÙ"™þ÷¿ÿ]¹r!1}útüÆ ……€^7¨FǪªªß~ûíΟ?oddÄápbbb<==]]]‹‹‹q?ˆC›”••###ýýýß¾}+¬PFFÆÔÔ4+++++kèСööö¯^½ÊÍÍmnnž8qbEEBÈÐÐïn``ÐÑÑQSSƒ[BD=eee!„ŒŒŒøšJ¡Pddd»ã‚‚ü—Ë%~–ÂB@¯TÝ1NŸ?¾¹¹9^£Ç)988ܽ{—w‘u++«Ÿ~úÉÅÅ%??ŸXI´ÐÌ̬¶¶öƦ¦¦.\011‘——ÇáreeexK&“)###¸dåСCBUUU!‡Óe€ÈüùóñøZCCÃÊÊJj ½nPMVðá‹Sjiiikkãr¹þùç¤I“œïÞ½‹C›Z[[ B“'OF½xñbùòå&&&rrr/^¼ðõõEáyáôôt{{ûâââÊÊÊéÓ§ ®­|ØÇLJB¡XXX ¶AVVvõêÕ—/_>yòäÚµk 𜉰p&„®®®àRúRXè]ƒ$œIÒ8%ÒÐ&aIN¢ÕÖÖ*))‰6¶´´ÈÈȈHQâ g _h8“¤qJ¤¡MÂ’œD'²HQQ±»Õ¾4ƒêV \ƒt

=Éåò‡D&4#À…ÐAó¦]c^— ^ÛÜKDs·b™XˆOÙí‡ÃápØç3ÊÕE±Ÿ*}5/H«Úç3¢¨:ÁY»P'ñÌ|qyñ[ûüáôc|ÀéÄì)ÀyŠME±°6íç« 7µdü¡Ûl!Ú#ùž½ X&W¼ù ®´;­ÄUþºcää8Qì6[ˆííE½ÎnôpŽüˆœM†\ŒاâQäLžÅMõ7œ¸ÁÙdÌ'σ ®ÐæÌPù[Î4˜,+¸Â›Õ·äu¯Òï‹I±rU²P?À#¢gÏž]¶bkýµ*8+W¯^ÅÆ@§@l â’ÞÓ€Nƒ{úÐA›bSĦ€Ø@Êß,]__G½À)?>>Ö‹M¥•PSp¢VWW«–<§µª2€=ï¼û> à¢úƯÕ.|®“s¼ó&š àâ9>>¾råJír¼ §Më9bSèˆM Sh>o*Š™…Q?…7g9Å’ÔÐæÌ ÇbÓÁí‘Ý9[å’áÝ‘Û÷YEl-7—4–/ïÎÙ(T|us1«L´”ryAøübã=è$g›Jþ…SF áÈ6·»;§¼þ²Ær""ò#ÒƒUï«ÁônMt*¯ %0·úÊ©F§ªy¸,êÜÓgŒ÷O¯DQ¹P3óv»£d>#Ê íöùLf^Z>/ˆ…ø”Ýn·OÅ biÛB|Êîp8ìöùŒ(–·ªÜʼnë¹ÖWwÛˆçáã§Åÿ¬z¬VëÀ@0]KZ­V«ÕL§ƒÅ¯äUŸÕRH¥Í‚Ÿgmïß®ÜbS‰;r±½èÄBV¹”ãg·¶666’1_¿ $ü rdÉïO IË÷¢ÞÑV&-”‹„Šnva"’³øB> %ü•Éžªƒ'<#úÓ“«ÑGw¼¶âç¹Ç¾Ýl6»»L·K¡ãÁª7zýƒl6›ÍfG¶oÇë¤V›B:x›³Ùl6»»;÷Ëd›Û]¾Y|ü±i-ëLÌ×Ïø€49Z­ËÜ[¹@\á«´\\áű.i\þH3©õš­æ^"ÚÏ‘uvkkkkV÷±ø´Ui:Þ|y‹I ÌQP=,ïkŽ‚¥ûù­Óõ版È6â‰o§K o¼R¼áo›[ö膦j)<ý…â' #¿½ß5ðíLDüÓæ¯¼P,ħ'"{Œc$43>àä‰1)`5ÕßÂSùÚR:8°Ýly=*o@©­p°ê]“4}úøáÃû_±~GŠ¿éæHqa߈ÑgQUSè-¬ŒÝ¬—-ĦDDg[ çGý‘PÌB½CD¢XX Erd™ŒyóþD»ë6[HȹÂù~•RÏxðº7˜¶Iãó×_ð,ÆZ‰µR°ÍíîÎi¾˜p¹ú}SŽœY™´är¹â‚Ã|ŽˆzÍ]íŒãL¶a c|líHZrfïB‹N£ÞÕ"¢žWn<ª¹ù^¾7ODé òyÓGOˆè`Õ+/TMA•´-bS°ÒäY »Ë¡jØÍïí[ˆ1Þ?º`0¸4y–B.a/ê•_Õïܺéù¿ê]= êlÈïÔKA¦mîƒëÑâÂíùySÛÜ®ïñ«s,?„ª–B:80`µZ­_ùNß²4ij›[î»û*ÞÓ€KŠ#¢gÏž)­¯¯ŸmÎÞy÷ýà7ÏOMâ§IŒš»ûÝà7WWW•açÕ«Wñ7K S<‡*hÛÜ.æL.nlz||üλ›ž±o¼ñÚ•+WÎÕ#§pAcS":ó÷±à4á](@l €Ø›è¹\¿ozåÊ49@Ǽ) 6¨Tçž¾(fFý %ü Yeâ;HÆ|ÊEîe9npf3ìAp…7g9N3 ‘\i®wk«LÀyMuˆb!½“+†­Ö!— ävÒrÜ)®ðŒ•ºÌ½Òçű®.s/åò‡¥ôבÂb¢^³ÕÜKDûyeâÞ±.iCJ¤´¦BãýÓÅ0—ãg·¶¤\ÌØ”è0Ÿ«\ ˆ;Û–3Æœž±†ç¸Á™•É~A`{Q¯Ó9ŸÁ}|€ó›rÜà›ãSÙÚ/»Í–Êsw;sÕm¶ ¸š»/Ï™}ykköÔc²ÚlÔß*3ï ðý“±Ùz›Èå%"­èN¹Ng6٭ɘ×ét…’³ƒˆ|¼§orQ"•%¢£ôÎcŒñ©,Q6•pYI1Z{q_›Ö˜=Ì爨×ÜU ‚=K³R®M­|å‘™ùæ¼r*W1w«¿¡(pɨO%f楉թx¡xTqšÖ:§gæK·:åÛ§j‰?,ŒúyÆãý£ ÅÓq!>e—Ï#.ø‚+´8vX7“ÆîÍV¬£šú%--×){<>UçÈÓØ£Ó±}e–*óp8¶r ÿ‚“†cSê6÷ íç ¢x˜Ï¹\.)TÅB~ßbî&"Ê.LDr_Èg¡„![Þãw( ¹Û‹ÜËV]1 ¹‰1Þ?:]¶ê¤æO moÿî­a c{;é#)\¦a›4w«¿áÖÖ,&eಌ÷§†’1_¿ ìE½£! ¬LZ( ­I=ª'ÓB|*À3W(™ ¹˜Š´Òç¸Á™Í°KÁ%Í›Šbfa"’#w(™ÜØØP=güñ)7ÞL€B££‡Ãà…~Ÿüø…NjÊ)ããºÙ#TO¦ÒB>àtxÁZò˜Š‘Ö­I å¢^gÌ<é9ž —Ë¿±êp8œÎ@‚,“•GN¥ˆ-q2Á©üâ|U´Jvç¢^§¼P«ìšð­É~AàÎÔPX®ÕUt™{‰DñÇñÑQMV½ÞÕ"":Xõ”?¿þúr¤ñ¯äÅ «Þ«Õ:0L—”>S:¨Ü|`ÀjµZ­ÖÒ¢tp ˜N¥…Á´´d ô¹z…•½«e þ ŽT.ÑÏ ´[—¹×ðÀ82âkÔÏ3ÆïU?‘ëŒçÒ ©þYwH/ž­Ö¦‡þP_•[ÿE ¡$Ù{‘=ÆÜáâü±ò”­ßvñø”²ê´–ëœ=åÄ«úÀáÁüŪd­Jºe±†+{om56Ôª‰×fãÂ\ŠM‡ÜÄ﮲ ‘œÅòY(á_ÈVŒ;©¡ííß½5lalo'}DDGé¶™8®î†[[³57eÜ¡‹íE'+Ç ÎnmmllÔ^ÖKIIË÷¢ÞÑV&-”‹„Š¢Vd…øT€g®P2r1>0/ȧêP‘â#÷¿ü¬îZ¯Ü õˆèà£õ°ÈŸ¹ÿá|µñ¯èÆ+=ÕqßÜcßn6›Ý]¦ÛR×3+}>XÒrl¼‡ˆÒÁ9 îîf³Ùì÷¿Nwc¥/~û6-f³ÙïýQô[ßònìîf¿ÿõG·ƒå¶G²Ùl6›Ýõ=~µ&TTÉ@¥tðÕâ ¥gÒÁÛî|Íf?¸£ØOýœ@{ãi为ãövøíͰKÁ¥q‡]}<¯s®ª7¤KëìP r1¶¹—5ržÚÚò|ö"MšŠ™T‚Á5d¥FOj;HÆ|ÊÉU§µ\µJ ñ)¢xÕ@8‡ŽòûDÒQ Z ¢˜Y˜ˆäJ3ÖÊAµg6ÔZ‰×d.rl:8»r ŒíE½Nå¥g*AD½f«¹—ˆöóò!®ðŒU¾ØÎåE±ÞÉIS¯F6Ta‰ùú&Gõ/ëËIu™{¥Ï‹c]rntó _¥wrÅ#Ü:ä„ÜNÚP>+Ó€Óé ðB¿ïg¿6»µ¥Îö¼rƒ?%¢§Þ¼yóaésßµžæ¾ªŠ ?Z§ëÏ‘mÄß.†q¶¹eº\][¿áµ•I1*õ\ë+§ðÂælÒ‡?ì –>—Wð,Ë•*w¡ŸEhº÷ŒØª—øÆ{ˆ¨gܧؤnN MgÅ ¶2cmËÀXÍ 4®Åœ@ÓƒXFñü$c‹ÆN7QÛÚN­Jk¿hGAH+µ*ãgV&ûíE½Ng½ë®ÆšC'ñ Ù½ø»Pg[ çGý‰\þ¨‹ºÍr3öUO8pÜà›xžO-PÂ=4[\­þ†úˆ„bê’~@ É‘e2æÍOø \%µ+²ëXÌÝ'Û¶Ïíí Å=#sd£ò禿Rzþú žÅ˜ÊûòéØú;ž»Ûé9›ôåÁª÷6-ïfmRºÝ¦Òif@±"€×¶±vu´8&ՠɳr {Q¯ÎÛî]¶á~A„~e+ÙPçÒa1ì.ma7c¼4¶o!×BkÕ̓´p:¼à -yL'Þ¶‘›ÂÍbf¹)|¾#6ùU:¨x#¾g<6²]|û¾øÚ»4C:g£âs§ÒÛõ¶¹å>éæûÀÝðÄo?1”{Ïò×£ÒkõÑëÔ̪d 2‡¶¹®G+ÞÊ·Í-÷Ý}Õjµ¾z·o¿‘ ÐŒ Œg LZ(§|E¡îx^œ›¢\Ô댙']‚ÐDövB£Î¯|òµ•Ó͹¼~0y7ÃnÊE½NéîÔPqR­]'5Õ*5y–ÂîâNíöù,u)ú@üÇâÂlÌëflOzý®¶är: ²LÆ”±¦VÏ4ØZ‰_ÔîÍѳgÏj¿X__?>>ÆX|ÒÞy÷ýà7Ïy!ðûÄÜÝï)Á¿sFfe‹ÔžšÏõɺ3+¹:ç¯Bœ—þLDW¯^Åß,€NñªÚÁ6·‹9S€2é÷³fQˆMÏ£ãããwÞ}õ€‘• —¼ªñ¼iG¸rå *:ê4†J訑ùB>oÚ™•Œþ|†ý™ˆ®^½ŠyS€‘•Œªîx :…Þ¼éêê** “ád Œæó¦x )oÎâd ©?“þó¦xà|×.‘¼Bva"’³øB> %ü Ùb ~ž1W(¹6´ÏšDD1³0É‘;”Lnlllm;Ì^žÙ »Aš¾Å¼)À‰Ò¼§¿¾¾^µäÆÅx–ñ'_ n -„Æ¥¤„~ßÊŒUowxkvPŠ S "ê5[ͽD¹ý|A´vÑQ~Ÿ¡ßÜ]œ…ÍéîW#‘âýÓæ•Å1“F$Z[3ШñññÚ¿möœþÊÿÊË“ˆ¥g1›Ww>R\á͡Ԩ?‘Hef¬òšÅ˜•1Ê剺è0Ÿ#¢^sWã‘q)78³2¹?ÙÛ‹zQ­W¯ªªµººªº¼Î»Pñ‡z­·&-|”­Ýô˜ˆºÍrAmオ$BDœÉ³´åÉÌÛ<“^½²vh\@çã÷M»Æ¾~! Å "Ç™lÃÆøØÚQ9¦ä‡ÜÄŸÊGD½æ.Ò:ÌOÁé¶jôÇ:ãõê°ÖôhðÔ¦z@j{šÖjí^ämíSSSv»Ý>ÿ@x€ W¸hó¦ŒñþÔt¡¿õކ(°2i¡\$´V(utÆø $C®ª™Œò³0ÉY|!Ÿ…þ…¬ñÄu6Ü¡@2æ³P.r/+ÍI Ò¼”t‰¹±±!OQdÉZµNU& ñ©Ï\¡d2äb|`*^ÐÚ][®€•™y™½¬š·ÚŠÅL*A‚à²62Ä7[Ò¶yïâXW;Or¿òÅ_Òù×êI.›â#÷”©I“ µM¬Zd­žPˆOùÅy,­=¸têßx¯¸”z½^7c|l툈ŽÒ;4<Ü«ÝçUZëÐÖjÖ삟gÌJn†[‹¹Š]ÔJÙêÃÙ:äJ¤²drc¼4zVµ|z‡­Ú¼ÎXg|¸ÖÖš›Z@ ö4Õ½´­—trl*®ðŒUºÐWxq¬KºèÏåëxǺäQµö1»T‚ˆzÍVs/íçå V?qý ½c]Å釚=jMQ莃…ôN®8Z‡\‚ÛIkíNº³füÞ c|Àét8Ng ¡;ãúÛÐß\5âS1óÊì`fkþéSQþ·¾ý±ÖjëÛ+×l4Ô 8Î/ôûVf¬}¬^×í ÒryËx‚õÛ×H76Ö+.×]¿rÒ;4l3éóu›@§ä÷IúÍÝåQ¥Ñ Wí¢Zg·B.±½¨×yV“^§pØ65¦50\«Mv¶ãÌÒ`:ÆÕžf¼÷¶ÞKÚ«£ßÓgŒ8ybLŠ;»N~C±Ÿžˆì1FŒQý+yéšBƒ»«ßoÎ rœt‡(qNê_3÷"¹=æuD‹I0âý£¤ÿĤÎŒò¿²ñѯ9^©ZçO6>jeÒ¥jn£æ´b°‰µV«Y~’} §nâùè½…|¢×»ÙE í:ô;@9¶8.ªž&g kÓÑ=Þ?m^Y3nxq ‡mSÚpè5}fi6ãH+=­ ½ ÍáGGäÂbî®^Ôm¶PSí7½!‰ba-ɑŠ{P²Ûl©[³¯XŽ”îô¥¸—Ûd5ÊÏE(ß½h.0%µ×ÖÖÿL¹ÂÚúŸÜƒk4±Öj5Ë;¡ÏtZ/=åàôÖd¿ ð<﮾ïÛüÐqšÍªr8W>‘BDg[ »Ay«ê4cÓ³:luǺÛ¨•îÑt:9€\èØt?TU{ÍUWög² [ä'ÛÚP:Î÷óG:—Uë¨ì+•-Ä2lÓš¢hÓ'U™QÍ›JÅJçã„¿üZf^/'­UcÛ|ú±öß÷>üSéÛï}ø§ª+´5ÐjâŠ"k­&-WÖLC}æ¤{E[{æùÑe¶¨<’¨Ñç õmíP•¤GúÚRáÅÃ9¶&ÝÌ]‹%¡ò–U3óSñâ=b©­Ï"p9ÛÃVk¬küÐS?Æ[JÇø¢ÚÓšèÛØKÎilJ;¡Qg€—Ÿí«bò,…\Â^ÔÛèOñßãLcI å¤g³²d »ãý£±}‹ôJÁB–º”ëT¥&í‹8^p…–<¦­±š «ç­¶b9“gq3ì¦\Ôë”^ðL Õ™ËlºÛ8–}úAõß{l¿÷Á¶Ö·í­sÕ&®-²VO0y–Âîbµë¯yú½ârâ8“gIýAºÚ>o¼ok5kqš6àL µú³å"H‡s.âu:No$ço.zLÇ Î(4:êp8ŠÏ§žú ý3?luƺ†=­c¼õ!±¡S›ñ¤•žf »ÚÝKZ:‰èÙ³gµ_¬¯¯·}—¥(ÝMßê½`Ö××wwwÿùg>÷+÷Ë?÷/P±DôàGÿð牯ßjbÛ?Z½¼ó&Dï=e¢˜YM µÐ :½¢nâï¼û¾T“gnîîwƒwÞ¼ z:C[hr¸(ħ'"9wxkvPkÎ.†K2¸é zµ¡æÕ«Wñ7K¡sýä'¸‚'¢DÓ/“‰Y‡PÁ€Ãö’‡¤¥ßd%"Á2¹r¹o­@'8ƒØTz]fuŠ­çSAD›¶Ø¦Z)à0¶€Ñ›4x’û NrgìøøøwßG=[À°ˆMèS<•¦¾ñÆkW®\Á³e€Ã0,bS"¢Ÿ`æ¬áÅÀa ±é¥öàGÿ€Ja0à°Ħpfþ|#JPÚà?@%†¶€ØÎß  UÐ îÞ½‹J ˜7={7nÜÀ£å€¡€0o ˆM›bSĦ€Ø±) 6@l ç_gý]¨wÞ}MpQ}ã×ÎSlJDÁ;o¢Ù.žããã+W®èÿ}fÜÓ€Ó`ä9bSèˆMà\Ŧ¢˜™·Û óÑø†vû|F›Ê^:8à]=ho‘ÓÁï{OÓÁk¥`ºÉ4V½¥|¬zå„‹Õ²Ñôî.ql*W(™LÆ|ý‚ð/¨†›-£U!ß“G/Üx¥§­%>xòè…¿ò¼mnw7›Íf³‹7…›‹Ùl6›Ýݳ5ãÊÁeϵ¾‡ŸÑÓÇ?`ìÑ“éóþk=èemM‹ºÌ½Š0T9“*Š™…Q?Ïc¼´"xͯM;»}*^ǯ­S94=Xõ(f7ÓÁ`ú`Õ;000üDúo:(Í€ÓÒ ¥ÏZijî¹r_ÅXTž^ý„ÒÁÛ÷ÙýÛ¥ž¿þ‚à µà2Ŧ78v3ÆûGcû’ÞÍÏR×X`ÒB¹¨×ÙÒ/I¥·U†‘¶¹®GZúÒš45ƒÓñØÈö@åž–~õ+ßé+>ài›[xù¨ç•Ÿ>/…•=×ú„Òg‰È³¼LÓÒÂWûŠóª¶¹å¾ï|ÅjµZæè†'~{ ø‰´ò×£V«u zýƒò$¬Ör€ó‡#¢gÏžÕ~±¾¾>>>~|||š¹yçÝ÷ƒwÞ$¢tÐûÄ[ñ¢SëN"ÍÓ’l¨Ø/0#£VC}µ½ûlGª6ĦÿýOÿ”þ?Õ­ÁJ&“ÉKþ…F Ïqƒ³[[[[³ƒw‚õž½ÝcŒñ©ì·bUú­¿]´ýKC¶º­¿±±±±±q¶¥8ýð„›ãßÌühˆ›‹S[›X÷À<飣¹¯ÃOm¬7Í.}˜ÏõšM'­³àOHG_'Œc-•í*Nq8ŠùúKÑXˆOú–ÉX2™LÆ&- ÿèt¼ Šbamz"’³øbÉÍÍ…²dÝÚÚØØ4y˜m(K-Ðc> å" 6›s±8Ì›ªû¿ÿñSýN‡Ô\/ËF§cûú™ùÒ•tˆ(3_¼¼ñ¿5êçcŒ÷ªH¢XX‹íûB¾~AHÄÖ 5sò烵ÔäÝÙç3ÕÙ.]dOÅ Å9 ÒåfÕeè|FÅLUúµCgy_öùƒªêÍ?•v™·+&6šn}«Õ*e<©Úêjhýê²”æëTçl:¹Jåhn¦Í¡•­B©¦©¡­%©4òjTlõB¹&ãñ©Ú™ÕSõð@8¬èŠ>`¼':â5WÉÆ‡)ýQE« jG§ªüè ­ÙTÂ=d­ÚuÀé”3¦?`Ê#›~ÁÌMÖÂFÆ[­µéâhv¼.soù*,²Ç˜Û;fâ8Ž3yÝŒíEîe‰ó9"ê5wI×c&ÏR{Bœ–º·"窅mnÐ6xŒ­Þš3¦‘öª{ Õ=RŒœÇ‰(¿6­3ýlpàªMD«ºtæé•‡‰Á oåäÕþØôÿùÇOõÿém|”ß'"÷tPe&"9‹/ä³P¿PœÉ.øyÆ\¡äf`X¯$Œ÷§†¤KÕt ñ)¢x•¹½~{3,]Y†7gÔéì½H¯wÌj¶åvÒGz“g35©âSž¹BÉdÈÅø€|¼ÉY•.Ž÷¢ÞÑV&-”‹„Ö ¢(]KmllÈWÏY²ÎèæVY´­­Ù—ÙËU)huŽ3Ù†-Œíå‹­a¶™à¤&þÒÐ/}iè—äÏDôáfª~ëWA«º ®/—¥ØTGéå"÷¤²¥wH§hÓE1³0É‘»‰ 66GñŒ«–ÕB©Ž£©¡­ÙÁŠCJ½bÕdŒß¡@2ä*Œ›80+º„²,EûG¼öU²þ0bdʦÞXÛµ£“<¶HùÑZE1S M+v-O4Ö0åÊiºàª‡°‘ñV§Ô­G-£)ž1rY)›J ¸¤z#"²¹©,Y‡ÜÄ/M£¶q¾ª¥îMñŒY&oÉES¶¹A»K: #õ«·æŒi¤½ôû›‘#¥îy\oÐÓBÕ‘æ°ïi³Z½ZëLW·Â­-uv±éÿû©þ?­ê 8No4çK'0Q̤DÔk¶š{‰h?_EQ,ä÷IúÍÝ×dª÷Â3VtÒ;9ù*ÓÈÌÙZlò–µúà1<œÞÉÇëKr;i¹³Úeî•>/ŽuIEËI!¢Ê5hÝ}©Í@ ]¶á~AH¤²Dt˜§a[W­/þòè}ïÃ?5Òúò¥•~u¯Þb-î¤ ¢(Í7H·}¥õUÛ¾3û!c¼z­ÐøEgsÍa<'ª…RÝ*Ýc|@9äQ!š ‚Ë;Ö%ŸŒåÉ’†LùÀRöƒ¥hïˆ×öJ6:Œ´@µ ´Æ¹çk^þYÌÝ­ ˜­¼þ!ld¼mdL6X•á(À ý¾Ê$"¢ÁÙ­K`l/êu¶ñq²VNè£~ %“K“ÚxØÒ mü©ÓÕΘ­Ÿ¯:Rš<â¼c]Åý&RÝa¶f¶[ý01^áMŸ¼Ú›þŸ úÿ´O Õ6c|Àà+5|Å‹††{µt ËÞ‹îíE½N‡ÃáîÉáíkv×È CšwJùob_ ¥Ðe¶H]­ßo¸ž•Müë_þýáÿ±m¬õ•—VV—ÆúÒ!ËR6•°È·}è0ŸsYÏA?ä¸Á™•É~A`{Q¯Óiðõ¬›£ÑœÔJµVc¾~!ᯞÔQݶn‚͘åy¦ê>ÐÀNÛ1âµ½’ÏJƒ£S)4Õ¿qÑÚ€©zã¾æÆ¢æ!l¤D­ŽÉÆŠSOÂ臧ÒÓ©í Z;¡'W&÷š£V“ƒvÓÇH½žp"ݯõ#¥ñsJóªåPïL§¿ëO^íMÿéSAÿŸö¦Ö[“ÆøØš4óÑm¶PsoWRM§Ûli`Ös-¶/MøollH¿þÝCÕh·ë©„ÛÑ^”&Ž826Z6|2RÍ¡ÖaÒЮ›;yµ?6måWùÅÃÐZAMž¥KØ‹z•3ðÒÁÉœ©¡°ÁëÕtLž¥°;'Ý ´Ûç³Ô5˜´P®êaù¶ªè­¿ô ŠõVq«˜yRÎÇ™ªR“òÀœÎ/¸BÊGpêŸÑÃnÆxÿhlß"=í¾ •[¹¼•E³Ö¦ w#§ j<4-¶þÒ{ëKï­·r³ÑêÒ\¿ÛÜ/‚Ð_œ¤±Þòõ+þÛñýPþ§3 Ëd`¬¡!²‰æœÝŠùú¥LJ•)?w«šÕBéL .ÃÓéxAÔª­wB£Î/=ÏT÷ÀÔéÝR—PŽ” •¢õïD+Yï¶TÍHUÝíµG•Ú&Ъ6TI6«㢙 é8¯ê62Þ6<¢¶¯8œÉ³¸vç"^§ÓéôFrîðæ¢ÇÄqÜàL€B££ÅÕï[YkK4ßÜ ½üà¾ö¨ÕÜ }ÇHÕ ÜÊùº¡#Eÿ<®šŽ‘sJs'#­cYëLWw×Z-ÕdÏ'¢gÏžÕ~±¾¾>>>~||¬¿ý;ï¾ÃýýuÖßÇŸ8ëdb!>=‘_2­ßQ.LsH?¶’ ·æoh ’ÏUdæí©¡ÍÙAüˆ#Æ wöìàÁê\P 5¯^½Ú†¿Yºžø>ê÷<Z…µPd1w³¦hýN;ÎѨäÎaòûó-Ôº7€Q­Î›4|-¤1oÊP5Ð!›bSĦ€Ø±) 6@l ˆM›bS€öx®•ßy÷ýË\wßxã5åï,ýõe(õÝ©…Ã:.6}çÝ÷«‚³K¥*.¿³ô×ïþî—.|©ßøæŸâ˜€Ž‹M/y`ZE LÿâñCU´¢™çM˜"0èˆØ)S€ÒØ=}ýÀT3 £~ž•ã]W(9;È]ÂÀTÿâ^û´¢*lomÿO/¶§*ª„ŸÿêRÄþ³œñm?¦_›zÿëŸç8ÐQ˜758c*®P2™Œùú!á_Ȉâ)I3óv»Ý>¢»þñ?öÕ1„/OÞÛ^ú÷·Í‚ðqð;?h$?¢øøÕ_ý·_}Gk+9ñkô7<ÕXâ鹓J¸ËÜK”“"ÅÑ·äÉTi&UšaM;&¿ŸÞÞøâǽužˆú}±E[zz"’#ËäÊ¢ÇÄ‘(Ö¦'¢{L\áÍ+e¥¹[F¼”›3ƒWµÎ WðæŒõhmz"²Ç˜^K«µ§*>û|7Ñ“Òÿ~ýÕÈ6#"a$üû¾/#Ñ¿ýãoO-æ‹{ÿòíï½òW¿þ;iÆ}¸ôéÍqV&®™~iªUèýùkÅ%‡[¯ýñAšsÿòÉï]û½ç3˜L€³sb¿½ŸMñŒ‘{èeöòìÖÖÆÆFíL*c¼?5´µ5[wiù^Ô;¢Àʤ…r‘ÐZA‰(»0ÉY|!Ÿ…þ…,Ç Îl†]‚ Œ/«Ö)¾”«´ ¹CÉ䯯ÆÖÖì`C´¿ú(;òyŽû»ÿmd›ÙÞÚ^zëËlÛÿ¿}xX §ŸÐ¯MÞÛ^þÞÎïÿñ7þ%ûÂ×Þÿ¶MáËun¾ÿÕGiÆ®ý›qiÕô‰èoþàwÒŒÙÞÚŽü¶]ZÂqÝ/ ýcÿ×ÑÑßö¯ Ù˜ÀE‹MãN§3À ý¾•kù‹.soåš‚à +WÐY§ËÜ+}^ë’ÖÉå‰D1“JQ¯Ùjî%¢ý|¡æÖ¶Î:U`Œ÷O¯Úwsœ±#·F¦ÞþPè½ý{¿ù²(>Lý |ùÅ_$úÅWl‚ð$•þ»rþáR þw†÷.%>¤É{ÛÿîËÝD¤•¾(þíH~¾««8Ï*ù™—ìfAøø/Ñß?%ëK&p¶ÚO¿ö†¸Xˆo—3F‚úVFÖцybL X»_‡ãgV&÷'"{{Q¯3Ú®W¸ªf=Eñà臕küðÉß}†ûÂ×–¦§óûË¿wkÙà[SRâ?ÃOþÞ­‘Ò&êéÿLqyïÏ~¶òÛÏÚ¬Ÿ[|ò£§'öüíj¾8uì¤w Š…µP$G_,䄦×ÑÐm¶ß¾Ò¾odâLž¥­­K ¢{…«§ës• >wíg¤½ÿìWÿÝÿÙäÀèœþ§IDATˆ@D ½5õ3®ÿÙV~ÑJ3}UÒm}úá“¿ÿq:ûs¯àµ}¸ø±)Ña>GD½æ®×Q®L¶a c|lí¨*%ÚÏ鬣Î:v YÌÝ'P¥GÃq×=òÛÓ×èoÖ~kDõ—¤Š³þÖò“Ò&ZéÑ/|eÚ,é·Gþò ß¶)g¦?k³~Ž>ޤǜ=Žˆž={VûÅúúúøøøññ±¼JébüE(é·«žŒ~[þµ)}ÿáþËÝ©…Ö€Õ†šDtõêU†ª¹´Dñpû_Ì3öEÜЀÎðªàÒâ¸nûÛfGE@ÇÀ¼)t Có¦w–þšˆˆúJ€ˆèoþéo|í¥ËVjôhÚgú‘þûKFïé¿û»_BmÖ:ïïB5 ÝZ1w÷‘þ FcÓË„ºœ>Ÿ)ﱟ*íÑnŸ ê %ÝÇoslJDÁ;o¢rÀ¸¹»ß½rå ÿ7#+ãyS8AÆ'M›jI‚iTšZÖÐs¡MŦ«Þ«ÕjµZŠ'ûš³~:(­ XZ³NtN.’H¼«KÒA«uú>»?]‘y)³…m>ÕùPË[{ÊûÞÓt°TÛ²æ r°ê-åSQ5ÊÅgÊX¹»úÍZn”šúÑ,ìë¯ßj¦V«ª¢b§¥/Tê$U•se3({tÕªkºN:³>ÛR´N¨„¶§|5S>ôQ›Èƒþa~VmÝt ´X!xôa€mÆßÓ?Xõ¾úØ·»kÓoèõ²Ù:XõiwÎÖT:êIoÓS~n¨O½pÃÛ£º$¼ýèë,>~u{dwŽ‚Á´­¸¯ØÝ¾å&ö¥—ÛÜîrp –W$[›·ÖIi>oû×»»s­Ô[ņ=×ún?%ê!zúøŒÑ“²õÐÓÇûFzΰG«W ±f=Xõ¾z·oy7[]5š…ý?ûGþÓš{»ÁZ=XÞg?x´êµËõ,fçlÅ<ÓÅtTê(­/eçU/}ïÑèi'847×»Î0eÛ\cãPÕQl;ÅþÝh%´+{'Wù§“ÿ¶¤¬Z «ÞÛ¤2hœ\étó3iëVjàÔš»ÃG¡¶'{VlÛ4Z§¯ôh.é»Ö#(Ú9¬ÈXŵã@õt]ñj²&Ïj©Vää`Õ;P=©|°ê(¥V.r0]Î@UêµåÕ*OC™þú žHÑàÍ›7>~ZŒ ¯?¯™ 2Må¿b½bzO«AU©SØúÍšŽÝ¥;ê²^a Ÿ?Zï[Ì.öÝ©tƒžk}Öä—Õ÷P¯Ýk»±ÑžFµ=\«eKÝ8­ÈƒwuUq´Öv~c)7Þg*G‰š ©Þ‘ÚÈ£_u*c…JHÅÿ¤z’¾üùõ׃oé éà€ÞÝ*ÅáœÖ¯–:EÖ8ºõ‹itïj£œ^Mªvžz#[ÝFWÙÖèýôñCψM­GBé*ó³jkÕ¨S«/¾èVÝb+öpýj5¥öV½{—÷¨š”Ú W‘óO VNU7ÐnVÍÁM¯P÷–ëDŽêš£Pq±¡½eÏÔ¼÷Þ{¢(JŸÿ—ÿuç?ïÿ×À·ÿ@Ÿ¾÷ú·>ùä[/½ôÒK/½ô­OÄ’O¾õ¢ü?ågå•Ë ¦ó⋯¿÷TZ]%‘𕵲Páé{¯K‰ª/ùä[/¾þÞ{5Û×͘´aí2tjÿ[“Êû•ÿ+­òô½×_ÿæ7_/}ÖNS«vž¾÷zM–ëe¾ø¿§ï½þú{Ÿw"¯¡‘à‹U] ¸\Î`EC«6¨~C+ [ñ±f­ª¨ÚÕ [·Ï©îS±â£ZÅ)j'W§½ÔWSÝF­éij;ÕjYEMË+=}ïu¹iëuȶô•:Q9èÔw¤žœzÕÕ,UÝ\|¹?}ïõ—^zIþ¬Òé´»þ‹ÕYUmjj©SdÝ¡©~¯¨·÷êQ®¦ÛTÔ¯JçÑݱJ…hVzgŸÊª±vŒ=¡Òéæg×Ö*5P¯VÕÎ'ßüXïôS÷$¥:vÊŸ•ƒ¨êšÚ]E³nëSjÍjìl+6+Ó_c£zQÈÀÀ^+ðí?Eñ?ïÿW)ž¬ 5eMÌ›>}ü0~{{$›Íf³Ù‘í¦4˜ŽgYºYahÞȳ,OyÙF<ñí´™ÉÚ%¶¹Ý ­ßg÷oW…þSdµKoÇ=>iÙ¸¯´÷篿 •y>N+'éíxíÅhi¿¥<§ùz®õ=üao°ô¹áYÓƒÖ©X¼rÕÕË|qͧö]³]ë{øøi9Ϫ V¶QÏ+7Š3ê¶9¹P™×jPí†Ö.¬±f-Ï­6RØŸ‰‰>ºãµ‘Í{çQTî÷ñiéªwŽ‚å™[Õ…Í©ìi¤ÕÇT»±±ž¦ZëZ-[îÆO«½gÜçÑëÆRn´ÏÔ©­©o«Vuúƒ˜Jñ{^¹AŸJ£¤i²jë÷4í:0Ü ô;d£)·ñÉ­“Û‘Zñ{®õÅ·ÓÒiiN:{Õ=EÕ‹]ëÎ'Zä†öÞZí5“HÝÎf¤€»»¾Ç¯¶óEVc¥Sy´èLÚºªŒÔjÏ+7H:óKC÷ó-5“æ 6ïGwËãn›Z¼étÚµ÷Ö/ÝQ½Î(tâÃo£ïB™À´x¢Ò»"Å#Ç32×L:'š{t—(Êq[zÆ6·KAïêA3!‚mnwwNó]–ƒÕ¹Ç¾âòªœ¨Ntµ^^ÍK…ÅXmöô3ßs­ïáövßþ‘žŠÏ: >*wŒr•Ò§ƒÛ'[XÍf­ì· ¶¡IÓ8ûÁ}ëýòÅ¡ðhõuÛµêëû|=Õ=-½Sg2µYh¶eµúOë)7:»|B;2ÐGƒ÷ŒÌ‘ÊŸ[MV÷p6^äæºÁ½·—‘¬Öílµ›ôÎäižÒ‡ùY·u¹ Õjϸ¯o –Ù¾ÛçÛí!zª½ßº j®Ž­ß¸ã¹»ž³Ù´×l¢W7×sÚÊx®Ú~|éŒB§1*6ü.”Í{=Z~Î8J>•pÍ6ÒwwNºx:X»Û§v½o$ ÒK)µŸãå'5gž>®žX«Z’–ŸÞŽ+¯G¥Im½†ŒG‹O Guç8”yV^Wå¤xÙÒê•·¡™ØòýõF*Ÿž¿þÂýû÷¥²*?k'øðî«r«´^ìO?”_ zòˆê6¨ÖrÂjV›÷Æú«š—Ú…mhÒt9[i¹ïnì“8²Óÿ{÷ÚH–'ø­™àÒéd×øÀIÓAk”(˜DÑDfŒ˜@,XÉì`ðv4ãàP¸£¨o¢Y.ñ­à0^u¤¤¡Í‚1,f˜>¬¼ƒ¹Ø{þWÕ«*Ù²Û=ý}‘[-½?¿÷^éWUªªÎÖ‹°ßªåƒIϱòÓ¸Ì$‰l²Æþé$s/˜…%/;g «ha!Ü"t™Ýµzc:ÁæÿŽTgO;{åfd†¥°Ë+Ù4•”¥£—; ·ÙúÅ‚²¶-÷лô2ÿÐc=‹@ɨÖZûƒçÕçƒdÒõyÃig/ì6›ín˜þž+ó™=_ÛkÍ/¨Yp–™9…ÉœZå[•Sà ·êñ­P™ û½ç¦a½yXïŽGGWkŸï^~S­V«ßD¯Æ/SNfÑÝÍI~3ÿw¡Ñ=Ù8]Œv°1©5q“Ëþ ‘½$_©µëýÑ0÷öÂR?žµ¦Z­n½ØìÎj¯T«Õê7?O^J´9§%¡Ö>Ù8¨ÜêŽqéþæjú^³_ÿêë'×OÆ›¢Ç›×“¿#†Ýnÿ†rërw¥Z»»9:ÇQi‡¯G{ãSÏ™=¯³å†u½yx^ïÏn¸p¶"§³¥šÒß"µÖþà ÿ«YÎãß§V«ÕÊ^è–ø)@zŽeMã‰ðlˆ“+4kd“ gt6ª¾näMÈ2%/9gŠ’QÑid—ÝÂF)³û¡Vß¾ÞÔêÛ³É6_u¢œqË«Õj¿žþ½iz9ÇÂRÜår›¦Œ;”¨}Ùƒ±éèe‡%§©‘Uþ·OÆ}…+ Û–;ê]™e~¯cýÏHJFu½¹»}ý$½åN×[X`ÆFøÚµI0Ç?8È,*cíŸï^nU*•vèLÔBpJÏœÂùV¼®s[Uðe}£­zÁV¨pþË\§_tíq™ë“oûž›pîê²è+宯_•Ì &WXúê˼/±€ç\ÏXx;‚{ÖÙEš£;Q<[Y-7.3çŠÎ#ïvw2g~[Ý¿“mæGSû}GïãêÝG²~ ýú­†z–ºNÿ³ð 9íweO¿2=ð[KíÁö+•NwÅwÇÝ ÝQM±–¬¶¿ŸÔà~¨a]üЃ(s~¦=¸ëTöŽ×ÖB××ÛÝófø´|âÝ=s2üntÜ4ý¯_¿n6›ïß¿!ìÿò÷?þáË“£^gÿ{! ¼ö‹¿tö¿ÿÛå¯!„“£Þß}›H5§=z´&^<rSä¦ðqæ¦ó7ìXéƒE ª»Ó¬ªð¥ª~h]û¸¬dŠçà È\¶¶ï™õ¦_,Ù¼Ù]„ªÕj¥²Ê‡#}<3ó–Û„…  {­Œ{ {­JÖ‹N;£“Èx}a¤b¯'«^¢üeÛ™´Tß³nF–ldö{ ëš¼}þ³7lÏb“RådÄÄAžÏÀâï×—¸J:}©õýÔûp {ÇkÿôZµèÝ,ç;»ª~À9ðJ^6Œ|`ÙyžX\—gíÙã ·ZáduÖ¾EQìýmZ‡ïO§·9íTöûûp™L‘¶.wÏSuŒšpÖ';á|vs탓³³õ0쵦¯Ïßèã´S™†ÐÜ&ÊÏ('^ï²íL¾)«ï rÒþÓN¥ÕËše9}Ìøúl ž†Íøøæ·'·2cGÜ Ž›{­ü[ßÐêõ:•ÎÛ0ìµ&{„Ã^«2û{g§óãµã½HQ§JÞ®Ïd'la/dúâü^èÜ.K«7œÜ›c¾Þ¬NM>•} Y{ä#ɪ'íöZ•Êä³Ù!Íê~F´ß¼Þ|yörö`öÅß&;›±Ï—ÜÛËïxFk#å,ì%ß“êKj,–‰ØhŽE±tÉs&>—2v‹S)˜o·‚Ü6O¢ôv‰!ˆEïf¥E×ûäåȤÔʽÍ= eyOæÊ* {nSS¨Ü&%2ÏçB÷6cº˜tç7Hý*5âÃ^«RyöìOJ/¥‚i©}!>™Ý¹¿Mëèiòës©Õaóqr$3Ÿc3ì„éÝÔk­ýÁÁ$jýÁ~g”·­7;ûƒþÍŸß’UN¼Þ%Û™N+Ó}¤©õFÁÃKLï­ËÝÃÝͼ}³ÒíÉ©æ0ú "ò,uïýÙ=€#·˜ÞýêÕÎèöàW¯vF/]½ÚùòË/§ZʹQíôSãŽ'ïžyõ¹û‘gÞÕþêÕNÖÇSe½ýéÙ³gÓ†f´0R{ò#±ª'ïLÜVy®ÔH÷£7úoPVw2ã’îb¤y±Š—3úÇÕ«?ÿygòwA0KE,=Ç"a,Wrvlb¯'c’í‚ùvƒ!(7Ï¢´Ôä.%KË]ï±ašëÑü;V0dnÙÆÞL^Ø‹š:7@%Ú–ópŠüçVäýoñˆo«Sqþ“Ó2Z{îVî¾6­é‹«W;?½}ûÓè¹sÿ‘¸)l¼2ÖÃb­³‡zÄ;8ÿÏX½·lg~¥ÿÌþ≿'ÕÇ…÷Lf[þLÎoO™¸ÅbòÉÝ¥©{ï/{Ütøæu?·jáÎó''6w²vGÔZÿêëpyB¸º¼ØÞÞ¾˜ü=~_¼¢éžd­~ßOÓÕ7fÏãš5¯Öžö_¼™¹g˜ñˆÙÆøÙkÙ‰ÔžüH¬êÆÜ£í2CZØýéÎèø1˜s{¢%Þ|Ú?jìŽÚÛÜÊüާ •ót´§¸þxóâþ­3ù»ðb‰ˆ¥çX‰™/9cÎä¼^ÂùvË!Èmó®òC»–,-w½Ç†i®G³ÇM¯|Ȳ½'™ü°5uöbÉMJLfènó•±Ô¶º|t~|âµ,±{Ü´.5¸º¼8Úë×ÏÎÎÎÎÎêý鱿õæîì9ñ§ü¬/Óm‡Î\Pkíóó³³³³³¿n”ùd¬Þ¶³¨yÏìcòüN¿~ûŸ”‰[,&äYö÷¦W—ÇßT!„p¶ëoÉ#àë7ú§íÐ?jÔÏë¡2ù»_Ñf}=wmv;•Jumm»øçsØÈhó ”¯½°êÌv|ªàÅæîùäéÅ»›•ÃÓæƒ9s0¿ë‘»r“ˆ¥æXñ̼‹ipoó힇àv¥å­÷2Ã4?¾«äCX¶±÷Ä"Sö’!*·IYÍövôÊVÙ…y›µ“Ÿekÿ›Öá›×áëNÑÈ|±ñt–Í×ÚÝ~ëͰÙ\eG¡S­>!l¿ì6ï¾(‘NµÃ°×ÊüQðzó°Ûiõ†µfñSö2ê]a;ó'IþoŽóû8à‹ãµêñè_ká¨n÷tÀœ¸ÅcÂêrÓ/6ž6^.;„µzc¯ß Gz;ÔÂìïì²´‡½ÖVîð×Ú Ýó³ÚxNguêŽj/¬úÆ!íÙ­ýãx²¼Bk׃ÞNí«u§ü¸Ó Y&b7›™7.yÙ€ÜQEwjµÃš³ÞcÃ4x7 µõDcî"’|Ù®vÓzŸ“­äövœo]lî®/ݯ•wç¦Q½¿Mk¹Ô4ÿL­}vÖçl›£…V«7fkjønüÂ]ov/‹SîÜr2ê]¶w‘˜–écâz©;½0ºøt!iËžÓŸo‹OåÉù­ÞÁÑÜ«ÇÇÇ£Ó!óO¿–rÊ Kœ8šý˜}vúåêòâéø´ÎðÝ`ñëpî8Ï]„7VuaHKtÿôðÅf÷lQwóÅfv'äZ½q4:U5ì”:U•«›•k^™ˆeαØÌ,,9sÎä¼^ÂùvûЕlÛR[ÏU.øz ÓÅ‹­é•do^oæ¯Ü[Ù]¶Ñ÷nZoÜÔÛlQK.Ûdò°õ"ŒNˆÇûµÔ¶º\½7ùÂÊ*ö^7­W—Å'ôC¡ÖÚ8˜]lyvSÞF‰ýôø\}óE{rõaûÅfºÃwƒI°Goo¾ðå,Ö»d;—ÏL6Ê_Wéã]HÄm¹±ãÖÇMÃzó°Þ©TŸ¯…®¯·»çíÚânG­ÝíW*Õµµ'?ü0»óB­¾}ƳºVß¾LæK­ÝíW¶:3Ê9y×W´ý²Û8ê§vžÆ§~¶»gÓ»`tO6*•çkk×O~89œµ¨úMõ箟ü°ß8Ú«„îy{®ÞY]“î®eÖžµŸ˜ªú—óz‰Æº?mðw0Øï´Sk`ÿ ÝÛ9<ÙXèÎ|WÙªþØ=ŸJtÄËm«SÝÉÞš-ó…de«ó¯ç­ÿ½ÏMëi0½yT"Ôká¸z>'þ䇿Ö’ã’ìÝøz5„0·J’ï_OïËdgÊ”S[Œøí,Ó÷ùx]O~¤‘]T¬7ÛH´'·Ô,LÅ„"K]§¿„Ä•ywî“»êM`o=Çb]{ÈséŸçãa°bH_¡o&xëôWïýÄ.KSê9Pæ¨)BøÝè¸iú?^¿~Ýl6ß¿BØÿåïü×'G½Îþ÷B@yíéìÿ·Ë_C'G½¿û6‘jN=zôhM¼x ä¦ÈM@n €Üä¦ÈM@n €Üä¦ÈM@n €Üä¦ÈM@n €Üä¦ÈM@n rSä¦ 7@n rSä¦ 7@n rSä¦ 7@n rSä¦ 7@n rSä¦ 7¹)rS› 7¹)rS› 7¹)rS› 7¹)rS› 7¹)rS›€Ü¹)ÈM›€Ü¹)ÈM›€Ü¹)ÈM›€Ü¹)ÈM›€Üä¦ÈM@n €Üä¦ÈM@n €Üä¦ÈM@n €Üä¦ÈM@n €Üä¦ÈM@n rSä¦ 7@n Å>[êÝïß¿ÿÿüoQàç¦?~÷íçŸÞÙÿ^ÔøÀ¹éàýgáý¯BÀñ{SŠRÇMÿ/ƒ“£`ðásÓ¿ûV¤¸kÎé 7¹)rS›”÷ÿþ¿®çTˆÖIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/0000755000175000017500000000000012165514774023637 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/logic-controller/interleave.png0000644000175000017500000001215212032647206026472 0ustar ebourgebourg‰PNG  IHDRP™öõF pHYsÄÄ•+tIMEÓ ,)ËØ±ttEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí}pç}Ç{w‚“ÐIè ½‹’…A¸‰1ì8v±3NR·ãI=Ul3u™ÉôÍ ;pbpœÜÁ©™vœt:ž0iœ‰“¾&¨àÄnO0C ŠQ+¡wô‚ÞN'é$ÝmÿXiµìËs»{+Ýíî÷3ÍsÏ=oçỿ߳·Ï÷8žçÉRÚÛzˆ(XSní°€äñX;œ v@zb¥àÛÛz¾qüëB¹©©©©© ú ­àd)=ÇqbÙP¶/¨ýí·ßE¬)ojjzéÈ1¤÷¤ >é Žãžþ´ô¥~ÍkÊ_:r¬©©IZ µV, ^P{ccccc#µ´ÑGº?IDAT´œ>2ªùÏ|êÁ¾Ÿˆ®\ý/ÒqëNšPîœB¹*ebbhå¸ù¾±±qçNnçNN½ ‘7Ü}ÏHÿtÂÆ<Ï ² ¦á‘]D"š7íLè½½­'¿$S|™_’iˆjô¯‰ÑÄî¸.⓽nii …x©Ú[ZîhÀ¸œ?Û,äó wßsþls°æiC ’¦âB™]ct4Õ.aIð‚NŸµ´´"?th§~=hóö¶£÷í”{¡†ö‹½¤mT3|ˆ¸–;"¼L†Ô~þl³ê[çÏ6ÝoHóÊyõdÕ·d^ÿp$*éÎ!µè.R3IDATÏvW/ÿäµ½oþÕJ¬ªè~ða–æUo2’ÒkÕH³wZ¼¢©Î€ïá"dò‚ÚÇ&¢B¥XXàZ=¬w@i–!ÞÀW¦ë:µ*Ý Âl„û\äwRt× ;ÈV ž¥“yí¿½•üD€$Q|(”ì302&½W- `šd÷ðDô»ÏÿýÚ׿¬&¢žÈ«¶yî«O%? ITöð--ƳîÛ _Ëýæòyeƒ—Ž#XbX x«ú– RzÓtµܸvóVïíx\å–A 'kSmŶÆM+¿0œJÊî½oõÞf4OL]ùè“Ï:hèIDAT+}²¾¬àsO|zÅ€ƒIe„?{éGB¡¡vòÝ+­…Â3O^¹5àh¬ÜÃ}¿«}໯½™$¢©™IÙ»k²úBîm•Áb3«(°,›°Ç”¼eCƒò­šÍ‰jÀZ¬|’öXk²²KË‹‰hnz!GX_´ðÞG¿úä⥠DT[W{à {µfOxTNÏGHØXÖgo€í°r/ØcQ(Ä·È|3ÌrñÒ…ÚºZ"j½ÞJDZšèaYnÚ56Ê}rØD¦&‰TR÷¿ó3i`o½ÞʼªÝiq#m ¡e7Kˆêa>Չ̀UX)xÓöISüXIDATXk²²ÛnüŸP®®¸ã‹wQá c;ûP}ÂJv3Cóê÷Õ¦¬0Ö>I{,Z¼K'îáUak^õÄ»TQ:í®ŒžœWuàbL¤Ó± €åÀ²oÚ‹4Rú‹—.üÞÓŸgôbÜB“æÌZ¡Uϰ:•¯Ÿýña¡ R…•)½4vêÈHéMP¥:e¬¿™Ô™G§÷–V{–•T>i'E–Ò_¼taÏ}ûØ]d×-7+QW í®6SÍbtzr©µƒÆâŸ‹6DWû€PˆLɳS¶QE¶ _JÿÊ ª dCÉš)gT—Q#GÙ€•!e¾«}àÂû!¡,MéÄð~áýоÍäm>IDATGvây;,ÁbÁëZ‚ÚËËË„—ªwéüÎÏŠ Ê/¼úÃXºL\ŠÅú‘FøÁÛê¿ZSTPNDˆðXEÊO‹ûsQöª@íXH*Ÿ&óàÒåk9ÓLŒG†ûÃ±Ùøæíe¿þåõÂõY±x<¯ §¸´ ÕK í°·à{;FÂc3B¹õr/ÍGù¹Ù¹›ÃCD´¾¬ðÆõΚÚÊT.€t"•ßÃ'IWÛíò <Œç¯÷Wª·¬[_VHD?ýçMÅÒHSÒ%Â}ÿfÛàÌä¼Õ'ÆÃÝ}}}ƒŽ;|dé/Nýþ“_Â÷y,‘‚7a5:4™™ÌE³ÐIDATé'¢‰‰Ékÿscxhtf:Êóü±¿8]P˜ŽÑÁ÷´e²JÊ —uýØ…Ô Þ„=ÖͶA±<ŽL†§¢ÑÙ8çyÞÃyÆÇÃ}ü…G¿ïñpYY™m½JÁ'銵¬‡^Lï@ߨ²®ÜZ`–•´»i§ç«ø¹hìS»7 åé©™¹¹ù ŸxŠÅâÇÇÍÏÅÄÆOüþ>­q„XÊqœX I€å‘5– m£ÕKVVöëe'pØ+Q.›ý”Ó%ü€Àa¤K„7j™3ÀIDATuùƒ…Ã6ѹ™ÕþÕ±Xœãâ'cUF,›ŒÇy‡›ÅÞzý]Ƽ2{ -· UË e=ñÙh g¯„1/{"=8Ô ž7nµ¾2·¿s!QèY»60™öú¼Ç…£Ã‹ÃÆÇÇ"ÃC£™k2سk½¥ŒuÊÆìóbR“Œ%é±lC;Ó}MI½àɸ=ÖülŒ›4ÜS{æŒ<†çr8Î35531.¯6ù(¾žýì°™ÌÈ+@š,¬$鲇×òŠP%+°z|<<%¢¹(¿ßžê ¹¹Ù«ý« òêëëžxü±ñ±‰k˜™‰n­¯Nrmz²r¿qzûIDATo/–7ÆÙ Šm§±owitx†3â‡÷Û;û;Gx¬¡õro<ÎñDK÷œÆÇ&:Ú»có±êÍÅ÷= òSVZ[_éD°wõÒ6ÒOÁØB+{)ÿ?(Çd¬DuR­ŽZ‹ÇÞ ¤EJo‚­õU#Cc?ùÇ_…Ñìì,"NøÌóüàÀpO×­ùùùªMEªj' ‹+ÕÕ—Œ|Dõ-ÆPZkcÔ0–ÍžÈPcàHÒ%¥7Á½û··–tüoWo÷­þ¡ºÆ²¡Á‘«WZ?¾zczz¦¦®|ßûR½FÒ‹4JéÍÍ;Ðw»½­·¯{hd0 äd–V®«Ý¶¡¼ ¶ȱÿ€ÞúIDATkJ/R\Z€£ïèÄÆ)=À(¶ðÖnCÚoô}ðo7G†#™9±Í; ?Sd[6:©Ã!‚·ÈäTçØ@×ttš&o{‡:ÆróºvÕ¥z]XRú;èîê»v¥·ù½®èt\¬üõû])\‚¿Äé×1Þï ‡§ü¾µ“Þ«D”»›¸øäHªW€E Â/qè/NGb«½9Kj'"Þ“À“§À! Â/qòµÓEÛ2F®U,Hˆ8~m¡c#ë¼6‚'"âyþı7Ö|ösû†wœýá‚…Ö½TTÕfk*¤§â-ÁÐÁA ”^PûÉ’²¢úÚdIDATÚ;<4ê÷gÖí‹ÑžÁ=ÖÈÔ.°ÜÇËÄß“Æ96`-<½öÊß–U”ìÝ·{t$¼jÕêžî¾-wmðdÄ÷ú|êªõ˜[IËlÿ)öàbé;qNJÏp¾d<“sôåoUo¨Ø½çÓãœÀÍŽî’²‚òÊÒ¯½±Ùr؇aU®ê7ºbxiIÕ÷KçÞÄ“vÇ^~=c¼v÷}õC#¹¹¹m¶”mª fd$¾KÇ8|®Õ€$R”bg8gÉk-Cu(qoJÿÊ׿íßúГõ¿<Óz{ú*‚ÅåeZi|Bx úÛ«ªT6Žp™H8²Ñ›Ç×IDATâRÁŸ8zÒ3²å³OÖ‡š;=Ϲ3eUE›6lýqRK®Òø, éª&6úgT½q §ÎIéõó÷§Þ)òïÚöÅÒË»½>ox<òùç·–”effJf/%Vê﨧½rFAç€;qc„÷Fª÷V]ý°Ï—á‹lÚ´f?++Kgw-g(Õtšmt¥š~«ÊUl)›NÏ€ˆ¸1Â÷ßœj¡Ndz¶z¬á¡Ò’²â@ êEçs¸1Âó||x`—ß[Q]¼}G½íÔN¸?ÌâºÿÍÎŹX^pôËÏ>êµ°Ò¸.ÂÕ y)ã¹ÃP;p#®®q`åIDAT‹ðz¤Î°¸JôKÖ©$%^ÃÀ^¸Nð Åp0®KéÙÀâ 8Dø%`q"ü°¸Ž~ X\ÇÁ´¸Ú¹óŽ€ ñÒ·¤/eío©¾ €å@ð¢ÅUñýûw‹W×/x÷ÞûH•êiYUq j—i^úRõrÀ~kÁތŕNd.zz ÿÉjH’(Û çDø•´¸bdéI¢Ìĩڑs8Gð+iq¥º*•Y=Ùµƒ‘HßBlæpŽà"µ¸ÚóDiòW  o©^d•²è­5 ¢:0‡K¿`qõÅúPs§×ë=w¦ã‘/WUo¨4€IDATazCjyµP#F{1'7ù5FÇÀ‚·Ðâ*!Ò<\O¶/¶×S „z`7 ^°¸ 5wú2¼£·ÃŘÅã«5Õ­²jGi¥²Àî@BÜ(x{Y\áá`!n¼`qUR©¨nßQïõzS½"9°× WÀ͸îI;X\7㺟¤Ål¤€­qà‹+à`\—Ò³Åp6ˆðKÀâ 8Dø%`q"ü°¸Ž‚'2hq%°L¿ÍŒ_‰Ë oÆâŠã8QÒ²UëY¦‘ÀÞ°Å•L‡R}JÛÈþ* Ç1Lud3Ê‹/¥cê¸çDø•´¸çóóIDATÒpu† ÂBY` Mì«Õ&ù•GâÁ›{δŕH¼X/kÀФlLñz¡:¸2}€{Sz©ÅU 0gqÅó¼åá”_Dx)Dì„ñ¬]p.ü‚ÅÕ“õ¡æNÇsîLGYUѦÍÁ@ ;a¨”…\e ­'ØšÈÊ.ªƒ ÔIé ‘¼Å•TóÒ¤]ºW×9B€¬–QÐ3 p3nŒð‚ÅÕÕû|Þ‰±ÈÁ&cWªù³X#ý«Z 퀪\eêöE>ôàÆo/‹+%x8˜Æ^°¸òå÷VToßQ¿òjOR¥¸?L㺋+àf\áÿ·1ôIDATaqÜŒc#¼–M¤ÜŒ3›*Tq`J›*´pZ„‡M œáaS§ExØTÀÀ9‚7dS•ä¡q<ëlŠCo¦*ù… '€pÈÞ¨M•*zœ¤’ì#*ZÒ+§ЦJ“T’ÝaDRNz Þ„SUò6U Q=ß#*`GìÒ[bSeQ;bcÁ'cSeC£Áˆ ¤3é•Òë'y›*ÙWkJ—(Ó–U0¢i‹]/ØT…š;}ÞÑÛáÇ¿b̦JËIJO³„ÝU ­Ø°2ØUð+`S•äÓ5x8¤!v¼`SUR©¨nßQïõz—aŠd*_5ÖIDAT¨¬Z VaKÁæ sØò.=lª0‡-#<¤€9láæ€àp¶Lé‰èÈáïjüÔŸ/ÓJ°vü’¡»+€]ODðgµÁšrºó‘ÕèÌLtf:gmžØì›ü©Yé‡OD<ÏOLŽ uÏ}ü/Ô÷q >æ_[Uþç²óŠróò´:Êž¯'<¦®ì˜äG‡Åƒ:`°·àû‡ûO´{Î;÷úhe‘Ÿh®`¶ƒŽ¿:¾¶(þâ‹yëÖiõUþܲÎI¥-!T`/ì}—þÍ¿ËÈñ¾÷컯U„W­æ‰#"úMÍRîà ïÅõ°ÕòIDAT% ÝF½¨díEg+¥ã•V-,ý[$$½"¼Q‹«óÏû¿ô§Þ=üó?ýàƒÌÂÂðØ=Jáï}/w`p¢°qž†qR•íE¥<£Ú^VÐÓ&áP$I Þ„¿Õ‰»^%"ÚFsïËÏ<óÌ©S§*++9ŽË{õ8å2ûÚ«+;ÊD¨l¯G¢ªmÌ €ìÒ‹äççŸ~;©Â0Œ&b>ûbF‡øHñ©˜')BO------ÐÝÝÝÙÙ%TU_¼íî»7Þ.þx$éž~r$¦4Â’Kµ´´¬X­XÂ!£æåwŒL‰» ëêÿ"FÃ(ˆ3ÁWz.BQ½=C¥frµ Ô,"='| ©ê ‘ÔÑ€’#"UI‹¤º»»»ºpqãíÓï4/¿ƒ\m^~ÇÛ§ß1Í‹çžXå0ŒìEmCöEêYæåRÄ·ßÙÙÕÝÝÝÝ °wï þÚŠçz{†„Þödî”OÊÅúµ RÕ@¿â£ÅAzŠçÞ>ýÀ]ân¦‚ ;Ñ©7ÒÓÂÀ~z†„žfœÄê·Ž¬}î¿Þ¥6ȨpÞ½‘KU4¡PC릅¬·hieí…Hº—ï=ù&¦‰ä—l°‘kÚyøø7 n¡-Ð2-.³‘ÀK‘.Š.£ùØ–Žq;*„:æò8èýäº$ûBÈöÀ'y8ê/J; B¶Hœ¹Ô¿ì%V‡BÿÇÚl÷·TD¥¤¹Þ!TEÜDøàüÛÌ?|ü =i_B¿øbwºM#{öˆ|2+ÜDH†ÁÞÑk—ú¯߈ÅX”mͱ,n¨XÖ²8^wѶÕÊÜC´’NI½ùǯßàh˜˜¼ð÷«þ~µ¤¼ðÞm+Ì0D2¤ÙK~ïwÄBsÃæ§®œ%v<´oálB$‡Ä’ô|ðÞm+ë—UÿäÈs¡Ù±«}&ÃAZƒ,‹uó†›o_VYS,­ˆÔ!¥¤DZ¹¥º™ùQÝ’ZàÖÓŠóžwu%ØÐöd/î–ä°<ä3&µÏÆ2A2I%YdœeÉ.³ÀìÔÜé)±ÍÝqøûß®ž}ï 446l~p-­£ÐïZòsC=ßÊ:÷)BâÀG@W.ÕÕÇÙ÷Î446À•ËW€©*4Ÿ‘ðécX½y\´¾Ô-ñF zGšaä8ÜOè¡¥…T¥ç-- HQ¡É K€ûý˯QÓ•ËWh’bý–ÉX7’}içƒy†˜#ð9¬#Ú ëŽv‘ KŠ(2q·(Ë’Ýsí3bÙQ1ïF©!VÿÄç eu$ä*-Ábí˜ÒÓ&(ÝwÁLRIÃÍ|œÌ¥XIõ„ÏÉ ˆ‰”^Jt‘1Ä |gß;ó•‡ƸD°ê)aX‰ÂR ã‰ÄT•ÐG‡OÔ@Æá ÈöÌ…x#$Ü#Ϙ²àî(Ô°t!ýcc¡’ú÷½OØíåÌ›ýÎO×´¶•VåÅ»/õâ‹Ýèîîî´?6NÉüRüì%B“ô[çÌ6EÎg|ƒ½£gNuËÔÀG°¦µX8sª«í¾虌R^RüC¡'»½œXe½âûý˯٠ígNuýË£›%5‘*Òé¥Úî[qæT—­Ðc7†z®Í‹}ýÎO€ø´í¾i±!‚tJª²¦˜Ð ),V8¢ž*Î4\(œÏ®ºÎ½Ñçõ„ÌÖX]saËÊúœkºR?i.ÁK¡àäÈ ot <Æ‚7ôî~_nþàm·/M·]ê'Í7R„sÐuéüл¯ ΄cäÆN ¦Ñ$í B/ÕyìO¾,˜2òˆWR³£ËqˆÆÓm™6‘—’j¾Ã½ßÛÅ2õ9¤ž½%[îO…Õ\¼T23Ó8~¤Ó¶Ì8~©‚àyE™µ-Ì’ËÉ_¦ð´YõÓÉâð˜EÆ ¼6pï8øÌ¢âÂ{îmó¸ÇO¿4Fl_u¿½²!«¶®’¶Sîé©DEÂÄ=SWrñRt‘1Žã—–ßµnµÇí5™ÌmÑËgô­›jVÝWe4&8R޹ÑX‹v¨ÛãÍÀÎ:…šê'ã“Q.E"®¼àÈ¡gË+J×¶­öŽ222‡œ®%!º¶½†UOÔ)eIX§¦NëÈÜNS ëäŘґ¤’™ÉøÀþ£¥vÛê5+=c^³Ù<<4R\VPQYöýg7rxòÄ3§.æ“fÅÛ®ñ Œe‘KQdL® J¤î?fð×e_“gÌ›››Û÷é€cIùâºêŒ z>Îmë4žÔ ?i!µeÂŒJõé¹\r)ÑEƇžxÊà¯ß°½é­“ƒk¶• ¹*ª‹+*ËŒF#wGîSËÇÇ õ°"¯czAÔqàxÔ]»áKMÝï èõúPhjã×+ÕU‹9qç87âM?ÌꥨÓ&0Žw ª×™¼O¤~qâe}ȱìβóg˜ øCì¾¥¤Ì–•••b34  ÑÈ(=Š>ähY[uñC—Á¨Ÿð…Úw-¶d›FOä’K‰`¤²t:]žÃ×|OiiYñBÖ® yy)⪞wã˜gtÂP0l¯*^þ…&T %”꥞|ôÍͯñ~㑇Óm bòòRü±5ºõ`ܽéIv Ë„Ä(ÕK!d‹Rs©$á¾9ŽéÄ>)afEmÔúZòR"!Uäë~´„‰Ù†ún ÊÂ’”âåÑLA$ÜB]eÕ“rE†$%=âÞS š–TŠfúÔ Œ¨¨*Šó‡gR¬Í/'I4*)Dê@7ƒ$…5¤çþg$‰-¹µüý·.•X¢±X~aNqYaºMÓ"ŠÏ¥†ûƾ0u Žã³3³SSaÇ-‹JÊ‹®]¨k¨Œ×!9Ê|ƒ=7ì5tWTPb*®´z€Wÿð—t˜¦]d䥄Þ!ìï #Äò„?àp¹\c: Û÷øCd›ŽÏoÿòf䥹äR˜ðIª½î Ùl€‰‰à¥®yÜÞðÔ4Žã¿ÛYXT˜vÀ–Í[‡zÝÙVK©½ˆ¹GêjÂ݉«Öà´f²Ƙ¤º³³‹û»îï#—ƒP009==Ãc8Žë0ßøÁáG;<¯Óa‹¹¯g˜))~'Sòs¯¾2‰¤MR |ž’[,¦H$F1 ÓaX,†GfgŸ>ðÛM[Ö€Á uùxÚÀZ/À!næ„w¬Sà±NŦÖâ9¦ç|&©žŽÞ¶º–Xžš ÏÎFŒàÆ0  ‹ÌFÉÆÛ¾ÚÆ:³œVÎ óµJ˜µ=ÇLõ¨,Þ‘ÈHRB'©>nî·§gÙ¦LL§Ã0L§Ó3Œ†ù&Çb1"Ñè Ç^a<ý{¡U¡P»àl3Z3;ªU:ñEà#ÎMggWw÷\ÄK8IuIeîÈÀ\8uçåY'CSzƒðÀ´çæ°1¿/äq{ÍY fÍ¥bJD’á“TGf¢p³Ió 'OÒýPŽ5Ãt““á ÀîHí¯·Ç+Öš"Qà),ÖL¿?03=³Óøº¶5ŽêŠÜÜìLSFaa~SSã¶­í~ßÄúöæpxº¾ÉÁÓÚ U4h¹Ùžj9÷Z@^GÎzeO>ð®oo¾r~8Ãp€Ï߯ôû&úzÑHÔ±¤¸u}sJÍFPQ°¤àý¿ýsÄé­t”gg[Èpõ ^D"U‹mmoO™½”-)¸ð«=æ úuíÍïžúÈ5tÝãñfff4ÞêXµîÖ”‹`G^’ǨëFoϰËé LÏÌXsÌe•‹–UÛ«R›•#XQƒ¤²BFW|u —ûRr㳫®soôy=!³5V×\ز²ýúO¤X'G}£á™0¼¡w÷ûróo»}iºíR(ðÑqº.z÷µÁ™pŒÜøÁ©Á4š¤,—šGç±?ùF°``ÊdÈ ê/@vt9ÑÀxº-SÈKÍcï÷¶„C±L}©'À@oÉFO…ù‚¼Ô<Žé´-3Ž_ª Äx^Qfm˼_ÞN²òIÝOÕ|l‚Àq¼ãà3‹Š ï¹·Íã?ýÒ\!òªûí• Yµuó^ˆHF"ž( øæôt¼´Üv÷†µ·×d27¶E uSMëýu4=ŃY# ¦nÿD€$päгå¥kÛV{Ç™CN×’F‡Î]Û^c4²çB‹Œ T¯'@ì?ꨮh]óÅnŸ5ÇÚßç,)/¨­uXs¬ñj5™Z¡Ux&| BÅ_»ÖÓóƒûý «[›Ü£ã¹¹¹}=Ž%å‹ëª322wF°¡éÀw艧 þú Û›Þ:9hµZ‡‡\ÕÅ•eFcJjÕ5‚š=07ŽGݵ¾ÔÔý΀^¯…¦6~½ÒQ]e±˜öe\¬ïòï®Ô|lüâÄËúcÙeçÏ:1ð‡Ø}KI™-+++ݦ)>}ÈѲ¶êâ‡.ƒQ?á µïZlÉ6#=I‚FÓó‘þÉnÐéty_ó=¥¥eŨvE*4ê¥p<æ0 Û«Š—¡ éIB´è¥ž|ôÍͯñ~㑇Óm‹ Ñ¢—²5ºõ`ܽé)%¨ùŠû¦Õ>Tì›.ÔøP±oQ¡—BžéEF^Š6/ŠhP±oz‘‹—„Ï(žÅ¾ õçñ±™u&O•!‹+>Œ1£0ð˜I2žÉ?ÊM8³¦*™Ýɹx)8£0“›Å¾Åw­[Mû^>£oÝT³ê¾ªxÅ™ÔîÄkAÓŸQ·3Ëñhc²®ªåR$|ff"´Ø—œ±Žº‘»Þ—ÏTÁ¬#h IJèŒÂTì?Zj·­^³Ò3æ5›ÍÃC#Åe•eßv#Çy%O<Õ¯0/â™ÄQÅ}‘¡â¨2ɥðÎÎ.rUP"upÿ1ƒ¿þ+ûš^Š@èk“Éû°ßD mà㥨SÐÆdîNÐa* K*½Å¾Zð7âQz.Tì+Oä’K‰ ½Å¾ÈEÅC^^ЏªçÝûÊ¥z)Tì+[ä奸ƒŠ}e ºlAHŒR½B¶(5—Jî›ãÈs'ƒF%]],º!ªkÉ ]I£Šð®.¼¥ÝO MKŠñÌŽÕ{!øƒ$5RUÜ3H‘Sd†¢KÔ‘¤èpWcJ[®ÎŠÒKÔÑMh5* a–q’«ÔªbjZcæÞ• ’;ñ2*êˆÔ2)j±9³&Ù†ÖxŽjA@O´j;‚xþŒ¦*ÖO¹+K•¨6$)1ÐÔÀçÄ ‡Bõ(ðI ó.Ž6ÔRcf…ê — 騨² _÷£%LÌ6¤h˜á–×+N[HR ]ŽÀ—p u•ã#%‚$%=âÞS š–”ð‰x¡AQQp˜ ý=cär0 &§§gbx Çq¦óû?8ühÇçu:Ìb1÷õ 3%ÂO¤´'^éÁñ…¤MR |ž’[,¦H$F1 ÓaX,†GfgŸ>ðÛM[Ö€Á uùxÚÀZ/Àq¾™n†Õñ°NŦ ÑczÎg’êÙéèm«k‰å©ÉðìlÄh0Ñh Ã0À°Èl”l¼í«m¬ƒ0ëÁiå¼Àð%Ô.%¬UÂü‹ÙŒ$%t’êóç>#¦gÙ¦LL§Ã0L§Ó3Œ†ù&Çb1"Ñè Ç^a<ý{¡U¡P»àl3Z3;òÉÒÔä±døˆsÓÙÙÕÝ=ñNR]R™;20ÎF]ãyyÖÉДޠÇ0,0í¹9lÌï yÜ^sV‚Ù…ÅAs`É¢d!)>Iud& 7›4ßÑpò$ÝåXs0L79žðìŽbI¥#ºØW}zY>AoX¬™~`fzf§ñumkÕ¹¹Ù™¦ŒÂÂü¦¦Æm[Ûý¾‰õíÍáðt}“ƒ§´ªhÐr)²=Õrîh£#ŸSòú+a½2ŠÇ'Œ x×·7_9?‹á8ÀçUÛ~ßD_¯3‰:–·®oN©Ù* –¼ÿ·Ž8½•Žòìl 9Žãc£ž¡Áë‘H¤j±­mãí)³Á‚²%þqµçã¡‚Â<ƒA¿®½ùÝS¹†®{<ÞÌÌŒÆ[«ÖÝš2cìÈKRâuÝèív9Ýãcé™k޹¬rQòj{Uj³r+jBVÈ芡är_Jn|vÕuî>¯'d¶Æêš [VÖ£_à ’ ¡àäÈ ot <Æ‚7ôî~_nþàm·/M·]Ê>:ÎA×¥óCï¾68Ž‘?85˜F“”òRóè<ö'ß L™ yAýEÈŽ.Ç!O·eÊy©yìýÞ–p(–©Ï!õè-Ùêy`’j—šÇñ#¶eÆñK„˜Ï+ʬm™÷ËÛ⊆i}ÕzûÝ—šÇñŽƒÏ,*.¼çÞ6{üôKs…È«î·W6dÕÖÍ{!BtZ‹ƒ© À0§§ã¥å¶»7¬õ¸½&“¹±- ­›jZﯣé)ÌQHΟ)$)€#‡ž-¯(]Û¶Ú;ÈÈÈrº–4:t†èÚö£‘=7Zd¬´xÌ4ì?ꨮh]óÅnŸ5ÇÚßç,)/¨­uXs¬ñʘ˜ZaF´„¯[©õ›×zz~pÿ1£¿auk“{t<77·¯gÀ±¤|q]uFFFâÎbQ±ž@ãïÐOüõ¶7½urÐjµ¹*ª‹+*ˌƔԪ¨[O åÀ×qàxÔ]»áKMÝï èõúPhjã×+ÕU‹9a_VY°¾¯ µ¥ÊШ¤~qâe}ȱìβóg˜ øCì¾¥¤Ì–•••nÓFŸ>ähY[uñC—Á¨Ÿð…Úw-¶d›‘ž$A£éùHÿd7 ètº<‡¯ùžÒÒ²bT»"õR8óŒN †íUÅ˿Єô$!ZôRO>úf ‹æ×x¿ñÈÃé¶E…hÑKÙÝz0îÞ‡ô”4zŇHZôRˆ”‚$…§çï{ZPûÃ'¾“"KT,)JáebˆÂ_Ä `IÀ×þ³¡¦Îó§§š‡§ÃS9yùd³'ÿõ™}ã¨$ùXW§xüí‘Õ£CeK pŸú}nçìÇ×Ç֘ϔeõeØwîÎηåæç'‚1`ò&‘Ë SwÀñ záQ¼¤F<#½OÍêgy]`ÀláLþ±?Ï{ì±üE‹X;Ò¹L] [Bü²qž'’ùŸñ©³Ê²±;ê&Ü»„(þŠï¹ÑŸsô|ä•C¶Š@F&À˜Ü±1Ãc‰–µð—úǼuÔÉò¨r¡ŽÆ1>ržYþ]hv&³wq(ÞKE±¨)búòzeßëÿq¨(à‡MøéOsGÇ&ŠŠ8žÞ‘ÇT(,ZŒãß8Š÷R4P¡° Û˜–0Ós¡ûU•¤4[(̳%·mƒR°â%… …冲%… …e*FHŒz®ø2I !1HR‰‘,=¦ã×Ü ¾ýýRí !g¤IÏŸéøõ×vµs·ùݯþŒT¥ ð¤ùåOþgttŒ\Û²e ù?uûñÿJ~w™#Mà³ÙÀÖ­[`ûöíÛ·oÿë_ÿBüÿꫯÀ믿N´A¨Ér©žOvìøæo~ó¡!*;v|³ç“ºú*ÖŽÌ"ŽU>Ý©Ÿr÷åfaj Õ‡”wÏ—/myúhK2#HRý-H‘É‘ì&B<'”<~©µ*’€Ü ‡Ä]wÁ¶…Ù†ºQðQi)_]}ÕÖ­[Ÿ>ú3øÎcÿFý”Ø(ŽxEÙñ¼S¬#жpïy;þH&©ºúªžOHéˆÐ ê6ŽèÆšZ ò4¸¨¢¼TB„J‘R$“Ô·œKŸƒKâ¼SÉ'éñà3, sÉ ™¤ž«¸ô-çRÓÏÖKî¥p…ªT Rc5’ò» ‚RæRÏÁ%8:·*TC̳/=Š÷-éæŸc> 8PC.…²È¥jB¹BYHpióÊ+¯õø®<Óñk{]îƒnOrw™#ÍÕ2¡*î6HOÝ€AH ª=GH ’Bbþ„Îϧ›+yIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/interleave3.png0000644000175000017500000001672712032647206026571 0ustar ebourgebourg‰PNG  IHDRÌ÷Þý,Ë pHYsÄÄ•+tIMEÓ Pgã'tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí{tÕ}dz+ÙÒZ+Ù’¬÷˲e[BÆ(kC‚1Ø&@Š1Î’“Órp|J}N[JiHIrì$`JBHK¥==Í¡4nRÒ–„G8ØáH´vë;X ÷ÃÒÊ’V«Ç®ö1ýcäa4÷ÎÝ{gfggfïçøøÜ¹¯Ýýê÷»;óÝ»‚(Šzº‡ ¹¥.sœ…'r…q”˜/2IaŽŒÉ"ëéúæ#_“Ê8pà×DòYž¼û‚ôOÅ»ï¾[*pr–<•æA¸çžNåC‘ú“AsKÝC9pà€òàCዳg™È$…@ ûªÆIDATÁ`°³³‹UgŸøØõ×ßtœ:ý[ Xþ ‚ |H9:+e?Ò)¦™s2fM¶m¶m$©é@VÇåWNŽ.¤­,ETeA7r|V —“]H ëé*­.”–Vê[ø —ÀQþ¯£7¹9×¢5¨×d »ºD¥Â‚Áeâ{íåR®”è¸üÊ×^>ÑÜòy¦9)ÓœT&aí [àdŽe"“Þ¼Îή`0( ëàÁmôïVÐêéb]û£ 5é9¥Ê­”u°Ù“ ËJÔ‘Lõ–0)ìµ—O`O½öò €ë˜t†ŽKx°§T‘Œ~³À¿grØ ìERØâ`'¤o½IDAT½ôðϽöûûke…õƒ×ßDÒ6©KºÔ:¢ÌŒpé¯;'C`Öd¬HYRRØôLL:(–x¯n¢íPMåžh*¤Ô‡2ÕòH–LˆdrS k9—“ƒÇ­˜sïRN”zþpÁ”±8Ž/²®.£×EUÌzO›ØÇY˜°&€?úbó/ÿ¹guñJšû¶Î—þâNSÆâ8üš,d»Ü/­ý¥K¿9ùZá¡·1æ*æˆÌ¬¶WbNºÔÍ@ÏØù÷ú. _L¥0Z÷û6´Öo l°~bɦÈ^ùù;†/*DfæO½ûþ©w߯ª-»qÿÇ-›Ææo”IDATÇ\²É^~óGR¡£u'zöÔ¹7¤Â]w²nN³1yMÆzßs gìñG¿?€ùè¬êì*Ÿï ·wlßÒÐ\©g6{`f$ÓaÝ–Ô³i]zªeãzà s¦‰Ì u{•¯¨¦®â K±°ªbézÇ»¯¿ÿƛǠµ­uïí×jžÖ‚AóÒVVÕá÷×i0yM&Y· «K ª¼ŽzyãÍã­m­pîì9ÐÒǶdjá¨ý´dææg0iñÇϽ  `çΞ#‹ ë[„åVXeÙD®–¬I;¾þÉ"ÓmÝ^å+ê>ÿ¡Tnª_vaLVUÚF6¥¯[0QIDAT¥=H®Æ4.½ç;®i"3h݆K+}yM†…¬3¬cLù.RZ±YgXw8a J7¹k03’é¶nƒFº|ãÍãŸùü§ ­Ëpe>Ò !4ÝRª íŸüôsêk,&§Kåß(SCBºÔAZePJ‡¾šÒÁKé תï>²|Å_‰*]¾ñæñ×ì"7QiZËi-¿—i­Øi«a£5¥_Û‰ëÚŸŒžž1©07¯¾ÜÖÁ¢ZÖÈ•ÿ« Ø ª®TÕбãލúA뻘lF²ž±ã/uIeeº”ÃØñ—ºv}j¿îï\Ìý_§¤°ººZé!öÓåŸ{¡¢¬îøK]zÕ²£IDATï^S§É±óM‹ô(#ÙøEü·Ï+Êê€G2G“M‘Á¥õ–,5,\aN'Ë"³É¸œŒb£Kº™ ÏMŒF’‹©[kßþÕÙò*_2•ZSV\YS–í©q\ ²áÞÉÈtT*Ÿ;9 ‰˜_Œ÷M„ ª¶üüÙþ–Ö†lN1çÉòu2ƒ t_¬kV‡«Òª‚ÊÓ¦µUµå𳟼˜©q>ÂF‘Œõ¾g_÷xt6!E¯™pd°dddÜ#‡üè[ÄG?uÛüÚG–±‹ÈtX·§B³……033ûÞïÏO„¦¢ 1QÜßYV^‰…`ßÞ[‡zBE~_u]yFçÏ!``vã¡IDAT ‘é°n÷uËåÙÈÜld>[L‰)Q=‚'Ž|å‘{~Êã|¾ÂÞîaTdÛ½±­ãÎ&Ó´-¾+o ‘I0Y·ç"Q¹ìó$‰d2)‚GR)1çð³7ïÛyyÞ±‘éŒÎÜ\Ügi´ãŸæRY<–üØŽõRya>'òóò@„d2%B"ž”+ïÿì.­~„å;a+ÿ—+âÿQÕÑj¥*£­ä㪻ìä™ Ó&?t¸´OÐ86Šd¬Öí“o-ÝPÅ£+ V&“)AHy<žüùÉdrz~<•=!‘L>óØó„qU–F-‡#ÖfˆÖ¡‰C¬±ŠÃiáÛIDAT<¸ähž )ØBd"»u»ª¡d´) ŽL®^ퟟ[ðæyAˆÄ&.u› OÏM„¦ Wå“G×:…þM£•Ɇ3ùª”h L›i%§»-=¶°[·‹I¸T¥ãÊÖcÇÔ±ªØ_,žùùèL8RפóÖ'Í+NFz¶k¦a£5™–¿‹Ï¿2Ž,Æ wïÚÙ´®¾¤¤heÁв²5íímûo½%<=³ç–Žh4¶¹½ÉàÜhºV“Ë„tä@húòH‹Œd¯äË÷þp¦´jÏ-çN§R"€ðѺ5<=ÓÛ3˜L$›6V^³³ ‚ÖRF9žLÝIDATù¥'¯Ò”u”Ï‚°$B[¡¯Ú'a&ØAµjM> 2°OºÔÁæöÆÉÐôOøz$2WTä¤MÅñ±‰¡ ‰D¢qCVa a¿ÆÁ>$Ä]ì)BWZs#!L›<Se³°QºÔÁÕ»·6o®îý``xðÂØh¨-PŸ<}êÜ™Óç¢-mu»nÚží9rl–.õ;6r±§{xd049‰-.ú‹ kÖ¶nYW×È­Ž¶ÀÁéR¦²¦Œ[Ç쌳Ó%ǸGd&mTÅ1÷ˆŒc[ܰ&3BðÝÓ3áÙ ›š`üÂ8¶ õUÙœ¥ÃÉõH¸êr(*òÊ\aÉSYð[IDATÑHöÃü8™JÝxónø°»¯·g`÷'w Œ)Ë…þЧþmê§/Nœz…‹Ì9Éîºç3à÷û`}K—¬R•ÿåß?ÈÞ]EŽF2% ÿñê¶³ƒ±EÏÔ±W¸}½°öÿ*C¿;1 WxᾫàÓ¿+a2ŒÐßDo§ºƒd/ÜwUèkOþzô¹ÇÏÐÔo¬©Q‘÷~"ûܧäb$“"“ÌbÉ/¶Hå›ó¿þ~âa¹ ýpY;4ÖÔtÜÿŸZ½‘M  í× x:'â†{—r[r·*…¥«0¬ ›Æ$M®Oãÿv"®Šd4E™¯”1-Ï—i%§»-Ç‹ ²ºs¶)ñ6Yien.Y“i,ÆwÎÖ{Ò¶RUݲ¶"+¥åÅU «åVÛIDAT³ ëkkêT;g÷õ=ûô/›6VÖÔW =°ÆNU+Õržp‘=K®/ƒWÖL$E†wÎí ªÑ˜JpckuE3¡OÊE!Se#¸$]ê€ïœm9çñWÁwζ€M—2|çl ÈÝtɱŒ\dæ.zμõ‹¾É‰¹ÂâäÆ+ÊŸhõû‹äœ‚‰/™ÉÌÍÎöO ,Ä`ö¢7Ô;]²f c{[¶ç•Mxº4“Á‘÷N Ÿøù@l!%|û¥B“\€G2Óè|ì¿Ã£žHd¾ oõ¬÷4%/!5;™í™eÉLãàßì[˜K®ô¤0=…~o)½òIDATÈc <’™ÆvVlÉŸ|¯~I^ ˆ«Ë ÖH¿€ž p‘™€(ŠG|omeÙ'oÜ5±}òå]²w_ý©úÆÖ¢æ–zeåmÛ„®.Që¡$o°„Y}š™QDQ–nÝqM{hl²¤¤¤·»Ý¦Ú -ÍùùiVúª5YÚjª7žÐD>%5‘5Ší&3™N¾ñµoç…7ßp[û¯Ž ìÜ_3<4Rß\YW_kÁ"ŒlP9*£”ŽM¯ÉôpôðžÉMŸ¼­½ëD¿ÇãyåXomcņÍ~‘e&i`‰@Øm¤C&x$c柞|®¢`û–?®9ùÆ 7Ï Ï}úžÍÕ5………ºûT&/r\¡¯©¬LS éP\dÌxçš×6vèÏË÷N]ŒÜú… «Vø|>Êæª7Rká…ת©Õ3}óL§K.2fFûæƒÐïñxVÙ–ÃeIDAT7MwÜPS][é÷û³=)Z²rÁ–‹ŒQLMŒÍT·ÍÕ75o½¢Ýëõf{F då -ߺ÷•”\Ó<õ'_ü|¶çâø§K6*ÚB^ÈÿÒ!®0x$cƒF^ûuV¾–u¸ÈL†Û¯Qxº4n¿ÆÂ#™ipûµ<’™·_kÁ#™ipûµ\d&Àd¿–PíÓDØ_“°G•Ží«²™Qtدé÷‰Ån³­¦ŸìÂ×dFaµ_c÷´F7UÄ*†rw~Õת±±u2 dKXi¿¦‡¼Í6 #Ѵ˺߶q¸Èô^ˆ×m¿Æ" ê´¤FØìÛ¿ª•5ðt©¥ý¦ ÔAIDATÚï÷gÚ~-ýâ vtå¡—~%í¡4ÕÌ‚‹LFìׄ=­Ñ0¦;ä  ±]YÒxºdƸýš~«iÖm¶Åå¿„B.Ðth <’1#Ù¯O¿3’—Ûw€Í~-¡•­°Gè+Ëõ•gѶVæJà‘Lβ_Ûá‚-dÌHöë¼Òáú¦Ê­W´ÛYa`ù dlpûµx$cƒÛ¯uÀ#\^:Èu‘Í„ç&F#ÉÅÔÆ­µoÿêly•/™J­)+æ¿ a"9-²áÞÉÈôÒ;9 ‰˜_Œ÷M„ ª¶üüÙþ–Ö†lNÑäîšl ûb]³:\•VT6ø›6­­-‹åœIDATª-€ŸýäÅlLÍm¸$’±^ êëÎ&¤è5Ž öŒŒŒ{áЃwÊuŽ~ê¶;öfb¶¹†D&Â=÷t*¦ÕÙTh¶°°fffßûýù‰ÐTt!&Šâ‘û;ËÊK#±ìÛ{ëPO¨Èï«®+Ïèü]ãE&),ƒ]dõuËåÙÈÜld>[L‰)Q=‚'Ž|å‘{~Êã|¾ÂÞîa¬ÈÐØÉêÍ¢¬¯ã>#}Ïè-ùLàx‘Iy·­`º_Éš‹Då²ÏWH$’ɤ AH¥ÄD<þÃÏÞ¼oäåyÇF¦Ñ°®èL¼UÖ 9££ÁIDAT3Ûþ4öÃx,ù±ë¥òÂ|4OäçåÉdJ„D<)WÞÿÙ]i;Tú Q£³²€5=k™¡±îE´¾ªg­ÿ ‘»MûôÓâ’H »ºD¥ÂTáL%¾“o}(bñèÊ‚•ÉdJR'E~2™œžO¥DGH$“Ï<ö<:Ù-§!XnC „²Øúª¹v ´MŒàx‘I¯iggW0¸”'ÜF~iªJFû—’àØÈäêÕþù¹ožW„HlâR·©ðôÜDhªpÞK­Œ^¨‘FUÀ>”1-Ï—i%§»-Ç‹ Ø}‰Å$\ªÒqeë±cêXUì/i:<IDATÏü|t&©k"ý¹)ñ6Yien.Y“i,>ÿÊp8²[€xLܽkgÓºú’’¢•+ÊÊÖ´··í¿õ–ðôÌž[:¢ÑØæö&´}±'m+U‚Q;£˜>"+¥åÅU «Gû§öÜÒqîäpaa}mMÀGëÜðôL_ïгOÿ²iceM}ÚkìTµR-ç )г”æi4¸²d"¹(2ØÜÞ8šþé_D把|‚$0QÇÇ&†.$‰Æ ×ìéÐêAË ÆTì'D­ ôú¤\2U6‚KÒ¥®Þ½µysuïÃÆFCmÚÐøäéSçÎ~ !ðIDATœ>¿°mi«ÛuÓölÏÑ%àW¬Á`v6ž´~ܱ‘‹=ÝÃ#ƒ¡ÉñHlqÑ_\XÓ°¶u˺ºFÒzŸÃDަK™Êš2nË4¹›.9–‘ë‘LÂÜ4MØý:7á"3¾û5 O—fÂw¿ÆÂ#™iðݯµà‘Ì4øî×ZðHf|÷k-¸ÈL@dÙý½ Î:œöPa‚‹Ì("ûîרu[Ç Fš[ _“…u÷k,XKÊQ¶•µmN¶_gÉ–°r÷kš|§ô@§´ìKV”µlʪ³Ø:Z­Te‚IÚ}Ø.]ZDª‚öIDATiƒ–P”U~eÔ¦œö‹4æf“´›°È¬Ü…Z‚°Bßr¬sZU{ÕŸÖdܧ3ǧˌîBMcaPÕ±§:»8[d™Û…ZMoèZM.L­„V®Ávé’žÌÙ åh”Ö¦ŒÖÁºœMiå\ÉL±A«ŒÎ°Ü¬¬Êhhe´Ž²l}¦VîÀÁ‘ÌY6è\ÆÁ‘ÌY6è\Æ©‘ŒÛ „S#·A;§F2./áÔHÆq\dœŒãÔt úSýGžüë Í„CÆÁ"ûÈøJdÅæd‹ >w_ksK,¿‹FcÑ…âÕkäjßú³W³3?8]d ŠâÌlxaPëIDAT:4?ó?0rÆŸš.XåŸ^Q¹êKEk*JÖ¬!´E7#aµ>§­O¹ß M?Z>6­‡ö±q;^d££G{¾÷Æ›B(ˆ—-öÂ#‡WW¤x`Íڵ؆Ø7&ïJZ#+i5dmÉ8þÓå÷ÇžÎ/öþü‹Ï£¢>²b¥Ào|°%ããy<@ÙÒ˜Šš°•¬OµSc‡Àگɞo´-:´|V5C­>Ug3í"«ý:)$ w|óÎçý×_½õVayydzn†Èw¿[26>S^®uGSé®AÏ*ß9çÉÖ²YÓ„+²ýZwäSÖOÛ§•ÉÔv"cµ_Í1,IDAT½ìa€-ðõ«¿z×]w=ùä“ ‚ ¬yø(!¶UF/ÔŠ£*`Ê0EJ«™Ö@J ÁMDžž•)ÕñéR¦´´ô‰'ž8xðàîÝ»£Ñ(}C•?QLvj‚E›Ò½Ñ陎{D&‘ŸŸßÐÐ0;;›¶¦>U¥mE¨€f(reÕlèÒ‘Ré+›…íÒ¥Ö¯_ÿÌ3Ï”••¥­¬Š^”ov%'Úè)g¶Vy¾W´Oìô,Àñ"ëéR‰Í/„'Õ± ¯¸Ê]™aˬWT )û$A{ ,×,–š³Eö£ÇÏe{ œô8Xd÷ô ,Õ™*ã±ÛEN§à×÷¦®IDAT¶…?džp‘q2'ãp‘q2'ã8øÓ%·_;‹ŒÛ¯‚ƒEÜ~íœ-20`¿ÆÞ®ÖqËíV5=#]QÎÇÄA3ãE¦Û~­…ñwHÙƒ5Þ@ë}ˆL8þÓ¥nûµÊæ ´ŒÊGPË2¹L5UÓôOãÌ֎ܾ+ãØ.’Yf¿&C°A§Íb¨ƒˆà·FûW’ÖEMótnö™Ž­¯ Ú¯ ŠA:ZË8´[ô¶7Àý =y¶ôM£cdǧKÝök- Z–QS¤ª7•~J:ô¡5ºîgÇ„{D&Ao¿– ùø¦´•¾ÇA‰jµ„ŠFKC„&¬£Ó g"$JÞ^IDATöJ—a²_“Ͱ,ËBD{#ÁÊÛ‰îçbʳ£Çñ"3b¿–P½ÊÊ„B®œ¶¹7ÂY 4#ÒÌfôÌál‘qûµ#À¯*‚A=ô8,n[øsl'ãü? •Åз­í:IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/foreach-example.png0000644000175000017500000001204012032647206027370 0ustar ebourgebourg‰PNG  IHDRöšF"¾ pHYsÄÄ•+ÒIDATxœí{tW~Ç#Y¶,¿ðÛòƒm‰#B²¼Bh!9ÎîҜ얭 á4¡gO»]ºô„ô@6Á@Ø@Ò˜mIÒžœäìše7›&g!@“¶9¥1¼øýˆ-cË–eËiúǘÉx^š<ÒÌïs||f®îýÝŸ¤ïüæ7W÷Î$I‚z´4w@I™CE›&mQúF¨B5‰·4wýìÀóÔv]]]]]*‰f¢B½-+¡ô}êÔ)ZÖ%eŽºººçöìǤÑ–8z‹ ˆ§Ÿn`îJWyI™ã¹=ûëêꘅ!õÍ<¢@òAÅuŒ{dÊrÑ73§ôít:N'¸\®††F¹*ÿÖ=ë×oü6|qõ¿AÂE§Šr¤- ¸³rq§Ó¹b±bA ]”¬«–¯ìWf¸o ó¿keî!1ÿ妅·4weä$Ò»9‰ .7©LA«™YBEhY) ÓÕ–U‚è›Yw¹\¤²ý'ç.T-_IïV-_ùɹ ì°¢,¥EjWÄ1º³ÝÕldfrqJ .—Ëåعs…t­ ì–æ.¹#*ÜN¥¤ì¼/1› Ê Ë7#*¬s·,} ìOÎ]ø¶²qCJ ÌäDñ¥$êÛÈðÀÉÕ÷dg>µûìÁê÷)³B|~çúb*g —™¢ð–p=äFdUf0¼­]ºŠ0T~BéÛ32AÒ34Ùa£˜–΄é˜%¬ V¦.梊âtgËz6ö%ýâA"G¸sTèE„–_‡Ù ‚(†¨¨~ú5_U× ‚È"¬K.*ÿàŸZ¨Ý.ßÿðVÛñ£­€“ÈwTR95høÙ•O¸žÛ³P߈vàÀ¢sÂ4 ‡Ž–¾›Mm_wßyޱ”TÛŠüeÎ…sï¢3´‰âýæó¯»oK©¹ /ó¡Çî´?ˆŽÑ,ŠŸ»ôµQU±†ûê×/RÛ¶îš;Ÿ=¢Z—;¿¥£¥ïçOø¦ú`Ì?Êz5É–²iÃU÷.+(ÉVÅ=ݨÅ,Š£´»¸¸ŠûRÙ¢R×7wQœºsNx­qçÏ Ñ sQ\’-9ב Sã3Z`Ÿaü¯?|uñÒy¨¨¬ØôD5³ÕܯÑÄ)\1Šj¹8µ(É™)çasñÒùŠÊ ¸~í:°TÎ sŽ kvaÈ9Œ ·DÊürnD—æyë#‘C5‰S‹â,úL²%7ß¼Emåϧ5-%~C¨y¶¼é»•³Bµ\™¢¬ç$æ¢8¸s}Içâ¼HT¹BË&@æ² é‘‰Ô‰âŠÅ@¢rñÒùï=õ¸*¾qZg$RæŠ!¦AÌOæÕÅWQ"‰ŠŠ°î3³Ú·   ãƒB”¡Ù¯›LX‰ÊÅKç׬®‘ÒPh¡o–,}ýoeq Ò»2ŽD5o¾,‹Ž–>jÃ7Æþi“[A£Mïhé;ÿa#µÍLT(è~þÃÆš?Y¡§ßð1~Ï=Ú\úüËkï@ÿí.àûu3¿Ð/·g:àÏžÙ4÷"ºA‰3£8%t.”¾uÅ‘¹G³,*Ϧ…Î ê }ŽÑÞúªçò­C¾Ä”`YU¦óþòÔÔ­B´!* ÕÅ7:ÖÛáék÷Oú‰ÑÛfw›'-½ãž{—hí¢ š FˆÎŽž¦+]Ÿ¾×1éÒ…Ÿ}Ø¡¡Kˆ¶è*Š7þ­§—õŽ[ãæQ·(J,'!àÔÚ3D;¢"Š ±³ó'ú}Ás*­o ÀlKÆ)SÆEû(®`QœG6Ø—Y›ò)q9/+¡ÔÏê‘{ïæSm¥L5Ã)VQˆÆ_ wQÈŸ‹ $IÖï?6?;óÁ‡j܃çÞì§ÊxØQP‘TZVÀê”+qÞ—D^å­ øûeô‰J˜OŠ#I²~ÿÑœ<ûú Õî!«5±²&«)YýpKßãwÔ§Qö,ă/¼š—ŸS]³jhПÐÕÙ³¨²È¨Þ\b±ðgbjeÿ4¨ï¨%*$Γâöí=”ã°¯Zsÿ@ÿPbbbwWovnF~AîO_Ý("_’¬îè5+hÿUQ‹âè]Y‰øþ½‡ã†Ë¿·ké@ÿPZZZëÛ‹å-,+Ži¥J..Å2 h?¢¢xQÜ Ï¿7\¾¡véÇïv¬y,·»«'¿8;¿ ×b±DÆS$&‰–¨#w8¢~ßÑ€»tÃw–º.´›ÍfŸo|ã÷ ŠŠ m¶Äm1ŠŠhùJdIü—Çß6ûŠ–Ý—{åb'a"¼Ã¾Çw,^kOJJа›Hì—›r1ûŠœÕ…W?˜G<¾Íu mɉ¨o„ísqô¶¹ Ýd2Í+òT=˜““›se!¢%ŠË¿#Éà@ßH\F·£0{ùÝKQ߈±Å_|æ£ H/úÁö§´ö‰¢%ŠKÇ^é6ƒeÇ.Ô7"‰hQA{QAd{¹x˜ˆÏ»Âsšþ0œÄ ±‘GÇÔ#.ýaD‰gÖ.AÔýÿñxýaP‰³ ¦‚ñFw$ÖA‰Ï@«œ7s×q*îHÖ‰BÅ~e¡àl&ÅUÅ'Épή(ñoÄÐäÄH£I⤬ÓèÌñpÐprŸãÃ]Gï2ÿÓ/‰´åÖꑵMÿ2%ä¤H‰P[Y C~,=¯òsC‰³ÊÈ™ß.}$Ыãèš¹+·-](Ò/0N5g";¯)'EJDœä­)ÅUrö£;¤{Èl(ýs£ÁDE*̘.’rH•óVàýž¸…Ì/^¤Ž“$ãaC´zX%Êâ*·²ôüPY”¸”pAAZoûLúÑ×38o^ʘoÜg&Â;1pÇlpØãp%&EäémB>:1” ¹hŹËaÄëOOàN•ª•ï¾ËŽÓ©)©aó {EÙª:ˆWß!Ó¡”#Ò*?¡Ñ^â º.‹‹-%ax¸Çl6Å'ÄOMkkÖ´¶· ù'&““’rrrªîºÛ34²nsÕ©WÏ–/-’â3ñySÏÆF’®Ïݲ²G‰¸2o(×1ý-“i¥Kn|ÙÞÛ>´nsÕõ+ÝÁ @|³ÌvØ3ÒÚÒ˜-Ê^½®ŠÕöäIÎQaár¹t< +&À/_Z˜`#þí­?x½>‚˜¹CÉDý}î[Íí““ŽâL®¾“€ÖÞURžÓúÇŽîίûzÝ•ÎÌA/†Åè?øÂ«yù9Õ5«†½ññ ]=‹*‹LqêÍ% Çz.åú´¸oï¡¢âüÕk¾uÛíIIMikí\—QZZ”’š"òhʼn ].ô™c– Œ{¹¹ïaËpŪÕKÝ}ƒiii­ÍíE‹ò–ÇÇLJn¬qù¢¾#„A•ž9n¸|CíÒßíHIIéîêÉ/ÎÎ/ȵX"²Ö3$¨ïÈaÄO¶~ßÑ€»tÃw–º.´›ÍfŸo|ã÷ ŠŠ m¶ÄmUQáÚdîð‰(†“ø/¿mö-»/÷ÊÅNÂDx‡}ïX¼ מ””¤µkHD0\¢bö9« ¯~Þg1x|›ëÚ’Qß:Æp—›½mc.h7™LóŠõÿÌ™3pöìYª‚h‚ ¹xóömÛ~øÖ[oRšf²mÛ›o´—•ò6¹‘1wWJsæ«á$`¸ˆFO¨óëæò%Î#‡œáXPeõ¤¬#1*  éˆL e®[a>8Š5•Y(׫„[‡Y(û]!Q†:‰JYyá–-[Žúüx÷_1_¥ •!´¨Q(ZóN‰æZ`•ˆ÷‚gƒXG‰—•6ßh§¥¬@Ó²Vˆd#¼©¹¬H,>Ÿ‰E¢:ЇDî!$þlç’Ф,Šs5þE§RÌbZ¢?Tø‰ü¦g;—X±Nõ(.eó`æ$Ò×qp­—¡P'?MphfW®¦ÅW^‰,Óâ] Ò¾ˆ) 1Glçâsq‰4Q‹#Hø„5€púô™®æáeÕ¿á(K{â‰ZÅ!ˆbÂ#£T.^õh#:×n":çÿ‰-b·ýŒcIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/loop-example.png0000644000175000017500000002664712032647206026754 0ustar ebourgebourg‰PNG  IHDR$ ³/àÀsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 6ò!L? IDATxÚíy\”ÕþÇ?ϲ9€â ‹cà‚Tc6¦´HY&NËåW÷N¹¤…¶™¥NVjSši–R¶YÜ{»S©´\´"ÌjÒhì¦fbÛ€); óüþxžÙfðû~ñâuæ<çœçÌó χï9gÎ ‚ ˆ†À²l÷6ª;®çâxQ§…ç­)¸ó¶„^xi¶VôÎÊ©ô!‚8_¥aA·7ª;®þÅg¸ôœ9sæÌ™cÖ‚ âÒ¤›Å†SšmÛ¶q/Ÿ^¾zÛ¶mÏ¿ø é AÄ¥Œo÷6'Ž=½|õœ9s¬3Ÿ^¾ÚÍxËýtÎã¿ldÏh¼é¾w3G3LúÀ²¿ì˜û¬¹ÁäGv¥×IìjƒADˆÍ¿wÿRpÀ`êUÂ{§'{«72Éõ×O¿ÀÁß ³™†;{Ûç³y‘ðN\WIûÇÛ™£†=´eÅ+YãÞ¹šî4ADï³Ò(8`~ñVo8Ñ×O¸üªovïírçØÓ»ÞXöv…@üÈ®ÙI €ê¯–¼òÑq.ôQ¼sõïóžûE øy.\†Aãe¡q zŒÆøk_¾vÃËÕÚèo–½]Ž´û(ú!‚¸0bÃ) ·kÞš‚‚†{§{Ñ¢î¸~pD ùåàˆ@Ýq½'ËÒ¢–“?¼õÝåk?{¹o¼•[=~f8´ß©GþãÝ—Íz0úÝUp Uéÿš"Kgð;E%[¢(Unµrf8ä½ÿÖü%ï~^•ûÆÜ,ÞA\±qd÷¯•v9Ó¯ŒtUø›Ý{¹14.¸Çßã}ß*OëŽý²âöÿFãM5À&9ý1ÍÓóo7:®Éûçü=Œqs—(%€Ö1Z2oJ í>åÌ! Ã@9}&‚ .„ØL½JXpÀ0oMù¥iq k\åw!¸1O½˜_3I‹ž[þƒê¶×ÿzû¡#<¬hþ‘%ZªÝ1WC·Ÿ âÂàdéó½Ó“§^%4+ç6ºãzW34ßìÞëíêg†INœ’wä°c~Ädåªêœc]ü.êÈ¡Cé¾A\ìȆӛ‚\Â+¥9[ à¿ïè2׉þûŽÎt0šÓà:¯â›Ū#soS ÜJèhÍkš“Û5ša€äôÇ4+æfy8±Ï0c&¿2ÿv£ñ¦‰SòÞŸ -T#‚èy\nWà £y¸_ µpêRߨ@ùƪ¿²+–ñøXG±¡íj‚ ú¹Òtãv5ܧ4•]L#‚ úÝ&6ÜZ'ÐÑ'‚¸q¹ôùÎÛ<_„æ M>¿Ñå&‚ ±9/nž'þï;º°ú柖™ÿÈÝtÅ ‚ Hlº·9ÍÍóÄÜÌÍ)íÇ2O/_ û¤mÿ¬ˆîAD?Æåj´Ý¿Vvyí|êAýMiÆ÷¢w¢LwªèHÉ_5F£Í†]66:)ù2º[A}—‹,6{výôWE›†Æ3÷;¸ÿ؈¨ð›n§/`AØt‰Ýß«¹Ä„±)ŽGÝÇ%w/¢»EAbÓnºýê1I#7®Ëj>wúXñÁ3­Mv‚ƒ„3n”O˜˜#Nw‹è ÐÒ‚3gÐP–´´ ®--hmE]qïß1h]'‚èã‘ §"£GNp<Ÿ0 @gJ£QIòSµJ4*I&²´J™éˆ^­˜©[h•qÞ˜Ïåô%q¡aYÔ×ãÌ´´ ±ÍÍhiAc£U¢ --0`0 ¥MMhlDK Î4󉿿ÎÏ€ùÐÅ&ˆ^&6œÑçöÏŠ¼µ”)à\ ¿¥æˆaü:éýßÛ÷}€±ãÆÎOqÓHÎVµB–ÁUÓïË;„Ïdƒ¸´·[d ¹É^š›ÑhŠ9ê­bŽÖV´ZçOH0p „! Dp0BCˆ  „…!4 wÜéñŸ“ëÍ`ÛYø2hg/ê_{g(*¦øækTT@L ®™Œûç`òµôi%z™Øt‹¥´#û¾/;n,€£¿àZoäò„¼}úŒ M¶.Aë(gý }s¡R¦QI2w9S dsÔ$E¹â­3ׂ<ËMÒ«³6`4¦{Øf´c•¾C[jj,ÏýÖV^ ¬ÅÀœÉ%êmsºá³ë‹Aƒ€Aƒ6|ÚœpÈáæÂÝ-Ÿ¬OöÞÆŽO±ìI,YЧ–#2ö`ÝZ\—ÒÇÞqIˆÍùXJ7Ÿiœ —}üÁNë€æèïGÝ7©Š´­Ùš ¥L¯þF¬¸^—“Ïk2/-W› µB©ÖË2”Ú,X"û£"ÈÉT.ÍÕj=sDÐd¯Oج͖Y«O'mjTöU.\XPï R*üü0dˆýÓÿâJť̟âÉ'P°QQ|ÎàÁHŸÛgA¹œ.Ñ+‡ÑìðÜR:8hàñ¢\:.Úæ‹5fuq?†¢”´¢l ¢KNŒJÉ€ÉQ§\wèÐŽYÒ €Ñ˜^ØJˆÓ£ò¬ì ½wdʬ|©Tj bO¶£¶ÖL|·O.Å¡ß0b”+1g®¥µS§°f²ß‡PùX·AA–£GãÉ¥Ø÷üü ¿7¹ëئxøQ‹Ò˜ðâ:w=üü3¼ ÂáC0> O¯Ä-3ÜÅvæL_uxì|šƒöv¤LÁú—1.‘žÉ$6žq>–Ò0­0ÏÙ8¥3½¥¤e«²‹F)2Pn=Âæö©.÷ò™ïDn j…DQ’k”ÎÚtRµµxëM4Ô[æ½LóÞ†F45¡µÝp§¸È€€À@„…!Д B` BBŒÀ@„„`à@B(D°)!Â×—þ|¼æÁÂO?cèPÔâ¾ÀßóæóG^„YéxåUøûó9ÿûw߉7ÞÄÍ· èùþèUÉX£ÂËQSƒ˰b6½Æ:qÓoĪ5Pª1®»Ž}ó5y¬óþÛõðÛ|ÌŸ‹7߯õ7ÀW{0÷~|´S®óèj<07ÜÈ«àÇá¦ðÝ‹écBbã÷NOøio8FÛ÷}Á]÷Ìòª¢”´¢õyi¹"XÄF–*ÏÌ×(eΟýîÚ•ÜZ¢‡LÄ”mÍIJSX9#;K'ÉÖd(ež¶i]>ÙŽ§WtþÍ2ä B!<!VÓÝFˆÕ¼·¾¦D÷sY<žZf’ŠIØò:–>a›«e˜y»Mù_ÀÓÏ`V:$]ŽM¯aã‹Ø”šÌ¡¢¢°åuŒm›ÕÏáñ'0wžé±¾ Øþ±ËŽ•—#&¦óþÛõpÃËxq%gV:jjðòzOÅfâU–Λ†¬~ïÿ“>&$6ë·–Ò£y‡(#[›ádœK"‘ ¦Ùx.CÅÍÌ;u,äJ‚ŸØÏà'`$™;éY…2çg´ÃIwÞ…¶6´´ðSß\ðÁÅ¡¦˜#4”>·}Å}öÏîcX^Þz›}ù}ßaÝzËËkSpé£ÝÒ‚UÏâ“íÐëÑÞÎy™ùú+ËðÇÿ݃åO¹ë›Ý‰Ö+ëÌ£av=<°Û޷ɹõ6¬XæéÕø[†ýËMé3Òoé‘8½²”ðè‚gD¢(Ç¥Ï%å¦\;5"6ÌÝ÷lôj…*/æWâ‚üç0cÑéÆÙÁàÇ ‰å/–Á9#,˜Ó§ñìsˆO@p0ÚÛàgißßgÚàãc%¶ì]Ÿcôhwoı‡NÏ€¶vçï—eá'°´ÖÖn_w` ZÏÑg§?*M7ÚBw™2Ý)«a´NÊ8é¬ Iiˆþ€ÀáÏ1, Uµhg-?œÒÈùo½ƒ+' 8ÊÊl*‚S¶4§N¹;õÔiøü3¯{ŠÛ­ kjf’"´´Øýë/w]:}C‡Ò§ ÿ~¼/ºÒäriníxщ’ò?¹Ÿ”kùب ¯Ð™ÞÈ”Zmaa!}3“è¯L†Ü]εµaÀËËeÛ½áF|ü‘M·jw'zøQlÚλî]5 _~a“óå¸jŸ=û²9úþ{6/ízøÑ‡üB¢Æú=ѨçhœÒˆDüŠK§«Ñ>þ`ç°pQA^á?šA7Œ¸¤xæYÜ<˜q+ìÿ ¯lÄg_Àô4<ñ8Ö¾„ðÁ¿qèMÅ•Ïbj BCùí>þ…?»;ѸqP½ˆ)“ñÄ“˜q+bbÀ0(+CÞÝÕzìqÜû<˜‰o¾ÆŠeüú7>„Å™x/W\‰ª*¼· %Å6ÕìÇ{Ûø~²Ö£`Ýó~KÌÙt-²9]£wZfX¸ÀÔ4)íÅIô¥ÿ㼟³q:¡ò¿_¡\¾G{;®š„%Oð_d©®Æƒ °;àöYظ áa6-ú O.Åß# é³ñòF éd/€ÿýа·§NÁϱ±¸6÷Ïყ=ܵ/¾€#‡ q<”Oã¶™–£Y[°å5””`ÄÜw?”+-óF¾ j°ä1ìܶ6\›‚—Öc|}pú©Ò0ÌE˜æcÌ’ã|0”† ú»$6²”&¢ÿ‰€®AÑãÿ^ô·ñËþßš.-pú¯ÓNÓ¢cGÐ-'ˆÞ…5—ý$²Ižt9€ƒÜ¤Ii‚ (²é Ùo}Üa4ÞtË4'Ž—ëʦݢ/;e{ýßuŸ|Q}p‰ A‰÷(¸kÛÖ… ƒą́ø¸b]YHhpKK›uzÛþŒ½l¬‹œØ•tñoüÜÈó” ˆþ.6Ö´|ô•ô÷ò¶³‚º¿R'ËG1Cÿ7¼êç½–M> À¬ûÝ·Ã@¦Ôj•.£öúô­ÙJ@£’dªlË»9ÔsºâôÑoö;Ш$ µK½Ñ¨2±Y[(ëÎSAôñ9›Oªúc¨ö»“l<ìIùØÈž\T-K•{rH¯VH$R©T¥±~LK¤R©B­VI¸l)a›v¨«W+¤R©T*•HT?òÌŽL‰UÛ]Qæ¦å)Õz' ÚUç{%‘(L¥]ô `NmÝ1 ýE6}Zi¬_ž ýà¿|‹ß³ÇÚ_0§QŠÄñˆŒœðćfrK-™F¤§v¹Cú’"yªÒéõÖùB%—t°‹Ö¨2‘¥-”A¯VÌD‚ë8Öµ·£¾ÆÆîÚ¢¸„Cù倨·l«O¡Ö»{c ³­ëè“M‰M/ÃÑIÚŒùûžf¥-XѰ£ “Ò•ÂÕ0ÚwEã>>Ÿ‹iœ) lý45*I¾÷ýååʘ¸$×þéÊJ\²S«äžÕŽvÑšü^£D åëÝtÀ±n½¥]7h¯nŠ™ëFczªãQ·QÞùuŒ ›žÇ“¼›³çéƒOôPÝØ?s‡4*Å>}†928 j‡ºÎ¼¥;A“Ÿ“$VtÞSÜ#ê’w¡cAô_úêœÍ„'vp?{ô‹êã×íÑ/:yôJŸœðá2|?òFé‚=e‹êF½´G¿èÒ_úmº¨•)UPò3²TyN¾Í$F´8‰ÏѨ2s,ùE%z.¸0g:Öåedg%¬ÏöljD£ÊÌ‘ó@®4“g/޽rƒW#‚Ħ7c4²FÀhd'‡–5Þ>áO. #Ÿ~kÑáO²›æ¹pˆ2²Só¹‰v™2 ™«™sQ†jiQ¦D*•n/•›õI»P7S"‘(¡Ê’[TË®.?‡/•.F–i¢% Îä,ææë¥‹aµ¨Ù¡A›N§¤-–J%’|Ès2%*‹^ÙöÎUÇ‚¸¤éÛqî||Ò±öç'N‹ýùÛÒѾO‹5ã‡dÜT­Þ£“¶Î7—w=sÓK ÕÃAôG¥éÓqraJDÌ/R¯×øU mÙµvù}Di‚ (²ée‘·b¤4A1²é«ß³ñv5) AÄE¤¯Š 'î@ãá5A‰K:U’‚ ›GWTù×%µÕÍ! W†'ËÆ …é®AØtÍMgN–ÖŸ*kikASOUq}è ² ÇÑ]'‚¸Àúë+/«]' –—GD…‹b"—½šÀ0nÖ8µ…¶X5C–*ÏÌ×(e2g)e€Æ*aƽŲƒu´½ã²&?G¾P+‚9tg¶ÍA$6]¦ »M¯^¹Þ¯aìäkÇWª ->^:rtÔeñb??¿ ØñNý¡-ŽÇŽËçã!MÑ[èÃhkžyÙ·a̳Çýa™P(¬ÐWF‹‡‹¢£\uŠ•_²&?Gž*óªŠGØ9.;5‡ö®Íº:dmÁûïỽÐëáÌ8‚ ‚"›.±vÕ&Aíèî_¸·ÔÇÇgχÅix>ÍÊ”Yù‰T 0Ó³´2﫸GD)iE³¤R£1].ÏÉ” K«ÌP-UÌ”H‚Ä%KåÐyß&¶ŒG[^`äHˆGaÔ(ŒcÔ(ˆGaäHøûÓÇž ˆ Mß¶…~{Ë>ÍqI“"µûÊchhžõÀ˜ˆÈaAAA}øžhT’­âÜì oghjk±e3Žý'P¬CM³HV€¨(ˆGA,æuˆK L Aô˜Òô]ó4Ÿæ¸ä)±…{K}ý|êj 3ç^Ð7•F£’dîéYÚŒ.¬<ÏA, 馺§®Î¢=ÖRä”Aƒ,ÚÃ%Æ%""‚®"A—RdòÆêS㚣ãÄW\9ÞÇLJnj§ „AÉ$w®@¥¥¨«CÝ/ÐþÒ‰#6tù ‚pEÕC{ŒLÇ qÝßçÝC7²'èÜ9”—ÛÄs®@NâFc ™ÕѧÅfظªÓG†Í_DJÓSøùñšq=:ƒŠ‹ùœoÐy$ÓÕ%ˆK‹¾=gCôZ[QY‰bŽÁÑßy*+C{»“ˆŒÄØqHL¤8‚¸”¦¯ÏÙ˜ilh®>iè8kL¸"êǯ2"¨Ãh2<2œnó…! ÀÝ`Ét:w¼Ÿþâs›@*:Ú~ .>´æƒ úýAl*Šk õ­\ú¨¶@{{îì¹’ê*#¢†ý^?6†nö…§çâFŽCNxAbsÁ(;^›0„Ó3ƒG€pDÔŸnÿâ©g¤›Ý{pº¡­ öaÐÑ߯Gð÷GT”M4nFÃ×—®.AØt7%ÇO·6µsJÓØ`(/­¬¬<-`˜EËï6—Y»êõÙwΠ;Ýûñ÷wµ·£¬Ì^Nü‰†'a¯/bbìâ.‹GH]]‚¸ÈôíÔhll:ò۱ꪺ֖6–eáCÚªÜ6cæ©¿ªÆ\!Š qh@£’ä÷ o¦F%]¼ƒKz²¹ÙùžŒ/=ü¦zNâJJ`4:¤âââ Ѐ .ˆÒô¶ÿÞýKÁÃöÏŠ¦^%¼wzr§a9Ýdhn2œik;kd,Ë ACƒaÅ‹­]õº@À¯p&6=‰F%ÉD–¶PÖõúùd í §qµµÐÀ‰ÐéøD±z½ó¸ðp~¸Ñc°h1íG=K/ú׎S.]pÀðïÝ¿¸/ßlh5§ƒ‚ÚÛÛ;::†ñX#Û~î܆Uÿºý¶ÛøúúTŸ®÷æ)og W.ÑjµÂÁÝ™C¯ÞšÃ9¬yоF%Qiôj…DbÊä¶JÛ‘iyéXÀ±“Ø»J;¶Ó¯<Ò‰¸ûoX¾o¿‹ü—¡©‡"÷s¼ò*?Œ·bìX ¦?ÀGbõsÈù¤+§óe:9äËtåÇÜ‚ù'LˆÉ2üëŸîNg]X6 ïm£‡Ñ»èE‘ §4﬜ `Þš‚‚†{§»+®­C2y7aÓr¦õܹv?_ßööŽ£Q €aÚÏu˜ ßþ·©ìݼð†Ð2þÉÌ…N3œ<䊠QI”ê›}šËu‡œÛà¸j*S¹4W«éÕ ‰ Z¥R››ÈÆTÀ]#RÃY´A­Pªõ2®{6í\ øûcÌŒc“ɲ¨¨à£Ÿ3gpÇ=rêvÖFÚY—Ráô9³¡ßâñGÑØˆÌEœË`À?à±G`0àáGzåCÇõ¥ (²¹8ìþµÒîÇ®€ö‡\¢í\«€?#0 #üø1 Sæ´ÑÈhïèØº>ÇðÆâ•f±.sš @¾{€ËRå‡tå]o€<‹Ó*Q\‚óЦî±£\wèІYRé¬ ‡,ݳnçÒ…a aÊu¸2aР^ÝÛÐPÜ> ÿù¯¾Òya¡ÓÓð[^£çAb㌩W ¹˜fÞšîåô+#í~¬Ëˆ 5§OUÖ†… øøúø ð3´UŸi¯À²Æ†úÆêÓµÁ~öÝXœ7/*òÍ……………ZšûéûL ¼ÜÓÂã“PVfyùÝ^\}‚0*ÛÞµ/|ä0fÜŒ`„‡áyhj²ÍsšxÒr]^q,ü08ÓoÄŸÛ0º/LØô÷NOæô†SšN´Ÿí€)ŸpÕØcºß mÕMgk mÕ\fˆ0„agδ66DqÃ=ë…SChW.Ñ9[¹¹'ÖÑ¢Œ…òœLÇy‘.N{ØI·Åˆ¾Ï¯íiáÿýŠáÃ-é»ïIJå¨mÀÎ\¬_‡ÿ~i)yâ¦ßˆÙrèO¢¸ Ò‰˜?׋³¸iùÿþ†±ïG4·âÏb<ü¶læÐÚYþÇ}a¢?Ñ»V£Ý;=¹à@—è´pп¡¡ÒÇG0ÀÀ¹6vÚÔ”âÒ’ºÚºÖ¶³ƒƒ#""&\qe}]cê­¶½–;f|œ‹frKmW';3„vá-OƒR*=âÜ:Z¦Ôf©¤R©Mã^NsUNL{؈W®ÒDWþ~.È.øn/{‹=˜ƒ1ðÃ÷xôa,[Áç¼øž~³Ò érlz 7àæ[ø£«ŸÃãO`î<þå ÐЀí{Ô1÷-|‹»ƒcÆ­˜q«Ë¦¼*LôEzÝ÷l¸14n™@§üq¸ôdi]ê­Žj+ŒF`¹wÄ0 €†úÆb]yG{G\ÂðkS'twOii2)sþÞ.°–±à`ŒKÄ‚…¸ï~O5O:?àÓQ#ðã~ÄÆò/››+BuåèÏZDZý­WT VÄwÉU߸L÷-'OÀ¤IP®DTTçï×Ua¢Ÿ( ÃôíoµëÄ|’ý­ÁÐÌ0`†a€ØÓ§ªN/=ÛvV42¼”† zóXSC4û]*]ášz|ò)JKðŸøC55g™& ˆ†KÅêjË€Çp·CÎÖÿšºoùá×#aÆÅ}ÿÀ§9οrÛ…ÂE6:²á8xàØñÃúÁáa¾¾>Ónð]Þ¡Jý_ÕÕuþþÆ]wÍ´+è6fZZPZŠò2”•¡µÿwO×—¢õtdãùú`Ç»vbùS8ò#†âh‘Ë·é>² @u-GOžDt$Ô}Ëmm8ööïÇ{Ûì¹{kŽ…‰~Ùô?›S•5ºã•åUµ§ mgÏ C#c†ŽM)ŠN·ùÒ¤ªŠW”²2”–ð‰ò2œ>mSì71ÿ~(6,‹‰Éxò)Üu7þvn¾Šûœ×Uü$xô1KΆ—ñÔR¾AÉ•Øø ¦N³}ñ¬TòGÝ·lGc#"‡£©þ¾8ÓÖ‰w‘¹0ÑoĦŸì‘;<2œ¬k.ŦvTT ¼ %%¼–p¿‹‹Ñââ9å燨(DÇ 6—ÅC~GýÛÆ³ÏaùS¸ãN<ó,nžŽÀ@~Ê}ÿOxe#>û‚/¹òYLMAh(ÿÍÖ?BáÏ–v|‹3ñ^6®¸UUxoJŠ-GÝ·ÀÞt›4Ž2ˆõó?/fS&³wßÉ.Š}ëMöë¯Ø#‡ÙÚÚî옼8äUa÷å=/<1™ýg6˲ì¯Ù7³aBv` ›:•ýâs›b¿ýM»‰±C³Ìcmܲ™Ïø±qÑìsϰçÎÙuÓrÁ·ìrvX8;À‡Ã>ú0[_ϲ,»ãSvd ëËØ´ãª0Ñ?@?³…îÞ>ëŠ*ø²¤¶º90¤#áÊðdÙX¡p ýkÒsØÙzVVâäIëPQ¶6çU‚‚‡ˆH~#çˆDFb¤QQð÷§+ÚuhG‚†Ñ.ÍMgN–ÖŸ*kikASOUq}è ² ÇÑ•9pâOèt¨¬Ä_'-6uu.«„…ñ;4‹ÅH“ºôòmf‚°üC—À‘ò²Ê“¥Í{w•±–IÌóHl¼ÀhDI‰M€bŽWZ[WññAl¬M€bŽW¬WCAbÓxsýg 'Ù߰&Ÿß 츌±©–®³°¥%8yÒbbÆÅ+z=Ξu^%8±±–±/±ˆˆ„H„èŠö h ±éq,½mÕ‚\Ÿ‹Ò`ÂKú;fÖΘ'+-êâfì‹“±Ø~B…ƾ‚ĆÀ¦uoKò«=ÍË † 0*ÙnßhJ’Y´4×´a÷î^Ù§ñû;¤o.¼0»âtt ´”kEñdìË pÒÉïsEAbc˲kW¿:txø 7M­žX»û}þëפEÇŽ(Žw²ãî¡õÙšŒ9/1•$SÕ½›°55¡è˜Íl §.55.Ǿ„BÄ'ØÌ¦psõC‡ÂÏ>;AØx¡4›"¢†_7mruU]@@ษ¿ø¤Ì_“ëëëôBɳ²éh”©W+f®?"¤o.TÊôjEv\¶RfÊOà¶_Ö«Jd¦å=´á¬ö„v‚,UŽ|Ö뉖hÊ”™¸dIÂz/H6gçÛ¨­ÅëYøó8¿SKEÎs~¸ÅÄÑ1ˆ‰ás/£¢àK‚ HlΓuk^‹ŠŽ¸vЬ®Ö0`€¿¾¼rtâÈ?~(I™!f×ûÈËK·Z,—y©±5cNI+ÊÖ@&ƒ~_Þ%zÈDú}yìtùWë6k³; Yô%EòT%d×hµJN`j}v†Ш2‹–æfˆôjÅL$¤:;;ׯO¶ã¹glZ6Œ×’˜ÄÆñ‰è JŸ‚ Hl:ÃÑ:ÚŒ›ï{®ZùRÜÈèÉ)WWŸ®†KŠË#¢ÂE1‘Ë^Mp§4 ÊP¥)”ê”ì8SN¹îС³¤£1½ñj½/K6/ÉÛºOŸ‘²/7«ffŒ<$•J]LÉðF;ÆÄ%¹œ™B£1=A“Ÿ#_¨sj[ŸïôìœØÜyΞE` ¯(±±´˜˜ ›®ÒµíV¯\ï×0vòµã«NÕ†††/9:ê²x±Ÿ‡s¢Œ… ’lM–U–ÜF>D)iEJµ&-i*Y ¶*÷i‡4•) j…DQbsÞˆ9diT’|·’;Š× AX´˜>íA\4—øû_óÌ˾ cnœ=þëË„Ba…¾2Z<\åëÍ…L™…ÌÌÓ+3fQJ6,Þ€´‘MÚ$VÙY ë³=°oNˆ³Ñ£hq"ÊÍÙ ‚ Hl.*kWmÔŽ¾aöøÂ½¥`χÅQ±Ã.K …;=³—ÅÒ$[í‘H¥R‰D¥1©M¢1‘ÓQ\‚‘OkT‰T*•J#«ÓÅf¢”´¢ÅR©D’yN¦D¥(Cµ´(S"•J·Š—Ê]Ÿ â¢Ó¯6âôŠ··|àÓ—4)R»¯œ0††æYŒ‰ˆÔ÷n£F%Ù*v‰#‚èJs)oÄéÓ—<%¶po©¯ŸO]aæÜË‚ƒú”ÒX¾øi4¦giIi‚è½\ºbs²äÌ/(aqõnŒŒˆ. ûÔ;)ùÅÐA½KwΆeÕ§}WDÇ ¿âÊñ}Mi‚ (²éõ¨Úcd:‰ëþ>ïúAPdÓ# Wå¿ù‹Hi‚ (²é1Hf‚ (²!‚ Hl‚ Âúö0ÚòE¼*ÿâ–%tË ‚ Hl¼Ãb¦éœÍ3AAbã5Ç‹°,kÞЬ­µµ­µ%$Ìbv¯zð+‡ªzµB •Õ/zµB‰ç³ãþÙuƒçîµsöÊjÚæÔî<Ù‚ Hl¼‚eÙÆ¦†úªòs‡?Gåa¡±> XX?@d˜4à a¡ƒ¹¨'JIƒrŸ>ä6ú}yHSEC¤ÔžÏó¹'ìœ=Qó†^IAÄ… ?,8Y}råï«×Ö¾5¢®pD`kpp€Î…Ÿ-}ñ…¦^¨«ªrUQ”±ÐjoMöú„…œ¦y¿d½Z!‘H¥R•†{a“ϿЫ µÞÉÃ?UnDYÚá3¤R©ÕÞÌV'µIÃd½#Óê„¶u;*•F¯VH$|y‡Î8É!‚ ±±#ëÔ~!>»æå¬màÏ‚MÎ"ôôiß'Ÿt XÜ_4ù9òTÛh€÷++ܹ¤h«ZQJZW˜3x.*Ñ›â¡ÇM0õê­¦íÚá…msaaaa¡¶³„L©ÍJ· ˆyQ×DN¦*­V«UÊœtÆ1‡ ¢›éÃhÞZ;w0íw>w΢ÜÇ~ø!pÈC}-ná•WBOn2DèVm2ó5J™L“Ÿ#OµÛÖÒSƒç4•µÖðvΉKvj•"§íˆ Sfå»6„vOêʳ,3SŽqî$MџŦ f6k_€$<{ÍJ…B±eË–˜˜†a½ð"€ÐNÝŠ¥[•jMI^ÑR•“-”=6x¶¯¢Q)¬¦ƒ­šen ¡;—›®×uÚgNÒAÝH¿úRçàÁƒ7mÚ´`Á‚iÓ¦µ¶¶zVÉѧÙ:ìñÊàÙVTPòs ®¬ší ¡ùa9µÂìñì®Û›Iwú¦ÈIš ïñó󋉉ijjò°¼µg³ƒbxhðìBRó% µÞI;ކÐ2¥v¡n¦D"QB•%wÞWu½‹ìß9IÑÓô:[h¯P=ø•ù{6f***ÂÃÃíJ6ùüF;A\¥é¶ÐºãöK¨Úδ4ÔÒº*‚ ˆÞBŸõÆ£t ‚ z{pƒ¾<ŒFAô¥a² ‚ z‚ ‚Ć ‚èûtçW×¾ç¾À#Ëî§+NAbs^J“1çÖNËÞA\‚tÏ0Ú»¯ì̘së°aC¹óæÍ5ÿ6çg̹µÓè‡ ‚ ÈÆ%œÆÌœ9ÀìÙ³gÏžýå—_p¿?ýôS¹¹¹\‚ ‚"›®süR…â>ŸÚ@¡¸ïø¥.êY¹éÕ ‰UZ᡽ŠÛ˜)‡ÛìKqÞ-ŽA)²á¸<1yÃKÉ^VÅ%Êç|TÊuGGÀíÍ_®;”zÞ*òÍ…J™^­˜©Š#d‚ ˆ~ÙĉíZEó÷šüœôôôCºrØ8gšÃ[ãd“Õñö!â?åV9Iâhsec~ìà—lYe:)FA\ŒÈæø¥ñcbgΜ¹á¥Í–<¹Øú(—éœhqRQ‰Ñ%EIâ…⤭¦´‚{ög"K[(ãÕÁ¥äd*—æjµ"Ð|kR„™º…Z­Ш³XºÃ˜¸Ää/Æ›gC­Pªõ2.ÓÔˆ^­¨ UÊj«8W[hR9)FAtØxkÏ?&öø¥fQq§.vðiq:¤)8L}œi ‘)ÂQš" Îðµ:€µb+T&'fðÃh}rj~ljD—Öäç$ØÛC;)FAt‡ØtaήG6œŒ¨“ªä”'ÛÙ3ß9yyI‡L"bÛ°YŸÈü˜ â¢Ðs6™å‰v‘õûºÑâ¤;vpÓ+ÖiÓb«iä ³³µ©ùö³*ú’"‹ìxb~LÉA0²éYÑG2Ë6§zÙ@”’–¸¼Ý²U€L™•/‘H£1=Kë62‘)µPI$[ŸØµÈY,Ý =«P椗!އÅ‚ Ïqégãï¾²sîc³¸þ2 ĉ¥k‚ .9¥é^[èó˜³!‚ ú3Ý)6™å‰Y8Ò•ÕhA‰‡œÏœ AÑéž9›œœOõÇ:Œyuí{¢øP¹|6]w‚ ˆKHi¦{ÄÆ¬7îËÒAØADˆ€®AÑÓØA$6A‰ AAØA$6A‰ AAADàÿ™÷‰¢IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/foreach-controller.png0000644000175000017500000001255512032647206030133 0ustar ebourgebourg‰PNG  IHDR|˜h'ŽsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ"8„\DíIDATxÚíMh#gšÇŸ*za`÷ÒG«ÚÐF ¹ˆò2šQCÚ-‹FcBÚ"Ûø`tÉ#Û‹MÒ •ÎÒ’Æfl ‘ ,¢ž w6h £öÇB{"ˆ ]rjè&8Žú_6IzªæP*©>T’%Y²ÿ?|_¿õ~”\ÿzÞ§¤÷ÏüðÃý‚Å)@t€è :Ñ@tW“kM¿KRi=ãÙf1ÅÐêþòôÕzw[Ó·™§éZ(­ÝóõÁˆãóÛ3®Ž†Ñ]š&už9€Hg JkSSSzÅ!"¶š™ ¬—$éœz±v÷îÝ»kçl€+éœ?éukèB-·ËË6…6Ri-ÃÿƒéÈ7ö©©©©©)ýí]×j¹EÇ7¹²±A"’šR16Øpìb®fÑð8]eY1”:Ø ëSÌÄÊÁÁЬ†Îç¥ïN[?²,•j֧ª‡ÒYï}­dsÚño .èHµÜ’.Gò|,°”«5\9'»KÁH¦Ê²%l}.]Õ7¸´[S¯ÏõÀ\¦jÝŽ°®ïˆ­fæÖ³.j'/HÇ£¸óÌËaw6§ÂQ/6#ÔŸ(>®éN§€[^±,òÆõQ=dX™ %/[M?Â+Ú™L½¾$•þjÝšò»'šÝ˜q1Œ|]U*'ß¹ˆ„õoX‘°,×3ÁRi-ç)\Zæ ë¸ïO*D4æ±–/ó2íNX^^Þ_¥Æ¤¯6Bý© ¢R«^lG8>ŸÝ »ô“åȼ/.C¤#I¥ã|CÈÀ=ˆŽ‹"åõËq|~Ûñ¿>ÃL¬hKž÷˜±¯¸åÓ¥†åç‰b‡‡ój¿;ý©pØ‹íC‘™]ï/N^Qg§€‹tLï™ê¥¡ FÜcD•¦ ¡íïÀ ±Y–®eËðDC«Ëœ³9Þp{ˆ*/N^ф˦Z«y9íÎîTØ÷Òâþ Y–ÄzS}0<¢c‹îê}uòâ|ÝËŠJV&´§XôÕ) ãr[­¦S»>»+³›óêÅÙÅñèöFØez'à2.¯fÂ?M,[M?ô‰šöwü1?yÅá¾!7w¬%Yë}Í­Ÿÿó/òBÆø©©–[¼»&×y5,vº{öŒÇpU"îAt<Ÿ®òñ)%ÌgíŸ ™¬ t .Žn¸=ÄV«™H0C$Ž{D±Êò±­î/sË«¡|Œ×«Õ~°ã o¬žã¼ÉH(Ôñ¼ôË7yiÛž§ñŸ †&ÒQ®ÞýU-‡*Š¡Õý怿­…ÏL<:.Ф|#a#õèoïËûÛóãbWæÉL¬ Ù¦Ö´dÓy楟EïÎ^Ó± / öH n¤D :ˆ¢D:¡ùk{{{8)€®0;;{vvÖBtäz8Y€s²³³ã(Ò‘1ŠSŸùä³Ïñž0¼|ôþ{N—WƒCòáxçFÎÎή_¿nõW$’}]©@t}¢Ñ‘-ÜÖJRcIÿs‹I¯—ã8Žã¼Þd±ý£::ÖAåb²£Æ;> rÎÆÀ`c—HÎÇÖýïjÞ¾>åXh«,ø:?þp²Ü³á0¼Ë+½ßfS¤YýÊÑPÝܶ´&—/æjªËí¢fb©Ùíw;t!F1éMOw"^¯×›üÊê¸ÓˆEvNõ¥Í‹ZSWM×ýa.¼e*vS[+&½ OØ' úàEyѼËÉØœD`Eg:• ÍsfbåààéÓ§…ìü¸(æcu–åcÇ~¹¼š‰Rߎz¨’N)Ê%¬Ï¥+žùÔ¼‡ò±õ ŠÉ…ç¿áˇÏêWn!AÉr¹\NüÖê¸%ËeA„/>¤³E¥ô—óeAÊõÐCiJ_­Is&}mLmÍ—(oÝïoº“`шQrʰ·Èô$ ŒCé·œgù¸>¹SGgÈ)£8Ò¸ÇTû·¹Nåä{Õp†hÌ͹ÇH¶láVVlWp¹¥†ÔIñ0žŸ%¢ÑÙùpîP½àÂ[ÙÙQÃQº} ­Âè›·ìDmª^Í‘¶˜ekú‘[5Ò¬9ÏöèæDDä›´> [N‡ˆFfâóGs騒{;R_aÕrKsé*Ë 9ˆœlò¤z–÷1§#/mX"éþä¿kß½üæ›'ïrd­N# ãšÙX= ÄÒ©¬‡ÆüD’TÛM¥+ä‰f#'sM†œöÜp{H¬ØY ÷’Óˆ–þ-&½‡DDôÆÍ·ÚmÇ7^8,&|¹€yãæ[á,ÖPàò-¯Ô$ÎòvÔS©¨®ÛߟTÈÆeÜF¿|w<,Ëgw+ÌŽɾÉp.³sJD§;‹ìŠUtð–²$9ýö9i -Ë5ŒÝŒ)æ¶öüÛÓóÌnôö½ç‡ÈƒKé(zá o¬žbª­Nóq>xáñ[åcúÃÓß9iÇÞLÜg"SÅ㚯ËÄÖ¡÷î+Š÷·Ê>ëLÐ]²éþV9‘Ø:äÞ剿þða8·à¥­r—øòÛˆ—[’[s;øå­$§­nÔ L›AòM³î62:›Lz¹%V?†‚f³½½½=Ó-0úÌ'Ÿ}Ž/|0¤$>þ4ùðƒS1Á× }¢è+ƒ»ŸÎÙÙ¶ò¢Ó'>zÿ½ëׯ#­D§¯‘Þ.Èé :ˆ@tÃǵ«3UO "Dzº¼’¤Òz ÆË»^‰ãÑí°‹Á)ô$Ò‘j¹¥@,OÓ©BáéÓ§ûûqJ­÷Ý‚¦ní<ѧ«,;½ªìòÇ0®ðf}3ãÒšbqw­Ô|ý[Btf¡?0—[œšš’+kËò±€"ˆrkÊØî®}-~ U`DGÞD]C~Î䯵ÜbœgC©B!bùøb®Vo®•!Ã4‚eù#Š²óª¤ 3±¼¿EQT¶@•¤Òú\º¢Fg­¶| R¤c½¢©*Šqþ(VŽŠš ØB8©c4Ð7™Q\(òÇVÁ‹Þ®K6Ìú0Ä¢£î‘¬C'(]Ëǃq^5pˆ¼ó¸(²ÕL$4wÎ  è0Ì„šX–?6qÄ»áö4xÜ7º9¤n‰b¨³%ã o¤B"éƒép¢ã¢˜-iùÝÒÚZI’4S‡cH8æYÖsÇçêÞâÅhÑR¡d㾆Á/¯†D‘XDžh|ÆÅx(Ô ¢à»Wô¸Aˆ ¯\3 Šp^=¢9§ƒÄ ‹s:×ZÖ€.‚œ¢€èD0|\Ã)L>ùìsœ0ì|ôþ{a"ùðœ0¼œ]¿~_ƒ\p´ÑôˆàBEgXL]ZŽÓªB?'(©¦çð¥(&½Éb—Çuº‰ìœöº̹ÖXÄò4-{6t¥MyÇõ•Á–ÅõX^ÔÍú_;°/QöuiDŤ÷p²œðÑèí{”xv:;;ªŠPæùÃdW¸ðå•©Û”“ò’$i¯¿¿6ºS©íË–WêáµÜ¢ìg%•ÖT睊©)yu½gVSà`Z_ãdwI?HÛ=¶Ú:ò`J’ÔÔŽÞ“+ êüµø½\Sg-·xw1×*Ò)&½ÉâéNÄëå8N TŠIo²XLrÇqœ·¾è#—bÒ›üŠŠIïÂöÉ‚7Y$½}öž©•OŸíѽۣõ0Èë•lèåt'âõz>ätšÜ¦šËS!–­êË!I“;•îOòvÈÕ£â+"zU<¢;>ÃÈQÌÓ§Oeo,ýþê²gVÓníöõíiå±er èÓÔŽ~Ö©BA?`†qÍl¬†Ôý§¥ÒÚÜIä`3ìàÍÊ-$(Y. _|Hg‹Záᤠ‚ ”ç_¾c¡ ùå­ûâý­rÂGªÓ 9Ť܅ 4÷’ d¹\– §¢cå6¥”sþ(Ú¸PÙ£^ÉvZcî“?7fÕrÇdóú6ƒ´ñØrÒˆ6‡í4ñvÔC•L$Ⱥ·mfÔ@x+;;JD£oÞÒj:à› çE"uÕiŒs|‰¬ºèjêE+`ðs:vpþ˜Ïç…eÿIeZ3•j¹¥¹t•e‰eIt@i³~S ò¤zlu¼Ë|S;#ö9)W8=ŠdªÝõÒpŽš×¹ýlïÖ|v´qA·ðDÙÜþþ$.ÐÿHÇZ_Õ ¶ÖóÓ~y "IµÝTºBžùl*$¶–§õMپǖùLÛnGŽìˆ¨’N™&›ú¢:{ÏŠÏönMêVL§;‘Ú* ‚ a\`ÀDçÅÉ+ÅúŠÆÜr.Æ?­” ë1Ù F»&îTú¿ñ<_sÑæÅ–56õ›Ù(y=¶ì¡¶½º”\ÒId_É”ÍÇ0· %w‹‡¹°¦ Ï¿=UDD—£– ëªóhéQƒæÐw/¿yëæ²þ|û×´Hç(Æy}ž…{ ¤*²î¨tÈîTr¹ñ!шïθ(Šâ¸B0ÌÄòê4Ëò±@ö…‡Œ½LR$ÖõƒÔã o¦Bb5±z€å¤çíú¼ìØ¿¿2Á0®ð†<ò¥ÝNß„ðÖ—73^/ÇqÞÌÍ/•üŽ/QžùŽ×ëMPr+¬åk¶n}¬K5Þ¾÷kñ~ƒæ/±uëÑ»ÇqÞÝ ç¼É¯p•€®Ò¼G²zñ¹›ÁägúÉgŸ;øÂ§öÑŽÄÇŸ&~€/|.˜Nž^ þ§»úL»øyeXt@8;;ÃV^àÞË;Èé€þ2p9îˆt†øÝà€D2¢€èD0| ‘<|à9:à{uy€%|à{ˆ¢è+ÀˆŽÞ_að=°l¦0àÆXÃL²@ïEGªå–±¼'š- …lÔ“–ì·Ô<ç…Ú‹ë\þ‚¸£H/3çˆF»Å$+‚ﶃnŠŽð8]eÙéÈŒ‹aÆ5™Ö¬W:[Á«ååòÅ\M™¢®wû›¥ÁŽêt'âå8Î[·Êª{]Í°Š†F¾2sׂIè­èÈn*¢ªoXÜÊdÆÊÙêÊcé¬ÁZŽP.¯f"Å·£ª¤S»²q“Uì¨Nw/çË‚ ”·h!Y¤&¯+üV÷kÝ÷ &Y 9®p匱 Ö`v#qɯ7fF´I¶m¡¥·£:}¶GÊžêm`‘ÁÓÊ讓,ÐMþÃCkŒÕ÷¿{ùÍ7OÞåÉÒÖUË*˜dŠŽl#Ãóü±°<1!/0Žy–¥‚a:ÏóžÏ‹çùãuÊOûW±¢ÙÈÉ\,ßòúwXßÊ«jwcövGxþ‰Þ¸ùVx#Û›¬:EÚ»5™­—ª&Y>Y}q9—W܃è¸(æ³»5I’¤Ún6/ŠãÑœ&Ž­®Ž1V[=Ú‹lÇ=ŽÞ¾÷ÜlM¥÷º25Ãrª:0ɽÆÞØ_®¤#Á`0IW¦W÷7Â.F“$çÎVWÇ«­íé¬G"ÍN*Ï’Ô'Gz¯+S3¬6T&Y +ôdä«cŒu!8³Äà‚ï` èÉÓ««cŒÑ½–X`xïÕPK,0D7HD:—ó`X@"Ñ@t¢€èDÑ@t¢¸dØ}"Ùá·{L=Ò mÑ!¢ÿø÷9û ü¯mœD@×–Wÿü«kö?Vª–Uæߵ宩.æjõfGYTh×ÉORM©Üä³[…ºù.Ú[*ÐÑù—_ý“éÏÛ~ŸüÂòHáq¦Ê²,,tg ž;¾õ…Ël7–^Éë±¼(†R…ÂUp•¤Òú±_öçÒ{opa¢óÿ?½6þp§ýÉ*ÌÙ;˜OÍk¼ëoÎSSS¥ì ÃMÛXn!)#U0qòlòÒ”wY•½FãÁúnÍ¥5ÕÖ}­Ôe”ÖÔc;7m²àšL%©vò‚Sï¥Uyw1:y:ñÒ”mE“eÎÅÊQQ«¦HtÁÔbÌ6^ ÌËÊñBYTŽÏÇgFpI€^ÓâéÕϯëÞ”ÿöû·‰èþ÷P_h‘Í©R$˜Q *GÅÚÌ̈¥T‡QÝÝF/MÃä±é0¯fÒ”ëBß×Vó¢¦H3Ožh|Æ…0\¸èüÒ¨/ÿÛÿÅVq”lN¶ ¯q$©¶»4—®_Í ÐMTqò4ñÒ47Ü¢ŠñX“jÙr^Ô¼Â%2B”ayõËßÅ_þ®¨Ì§.È¿êL³9ZVE¿Â’í=åçYz{O«ònc´mí¥©Õ9Ô¬‡Ù£±Žm9­-O{;/CFìà*<ªÃ!:?¿~-nþioóO{òë¦Ól޾Pöç”S!²a1ûW5{ORŒåÝÅèäéÄKS®ÃǃÁ8/†R›aóeSǶœ¦–§}˜—>ÒéÊç}pz¯µqƒøä³ÏïM¿kü^þ‹> B{°-ÿ*Š!øˆpyr:{ù/N&áäÀet ë`k Dш¢DÑ€Þó¾‡5‘Ú*_`IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/interleave2.png0000644000175000017500000001651412032647206026562 0ustar ebourgebourg‰PNG  IHDRÏùÀö¸ pHYsÄÄ•+tIMEÓ ;;¶òitEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí{tÕ}dz’,i­•lIÖsõ°lÙ–‘1ÊÊ` ¶ b 9Ð@r8-äSêsÚRJCK’c'S!-D{zšCiÜ$$¤mÂ+ìðHZ»qŒ,ÐûaieI«ÕcWû˜þ1òx4sçîÇîÎÌþ>ÇÇçîÌ{ïj¾úýîÌ|çŠëèèI Ïó©h·§{šš½©h±)®T4ŠRCˆ˜¯6Aj¢Ädµõt}ó±¯ å}ûöíÛ·Ň\„W@ßKáÓ³ƒ÷ÜsPþñ<Ï=÷É•‰ã¸ŽŽNéGžù2¢©ÙûÈÇöíÛ'ÝøÈÇp‡,S› ‡3ÛIDAT5ŸÏçóùÀï÷wvviÜç>síµ7\'Nþ®8Ž“~dìK9*i;Â.M#GÒaÞæóùÚÛ¹övNМ…µ]zùäèBÒÊBŒ•t#Fl™‚‹@»JÐ!¶žî¡ÒêBñciu¡¾«îÄ-Òÿu´&Ž¢L3òyøýþ®.^*5¿YŠ ßzý˜FÚ.½ü­×55ߥiLÒ (”é[´¶F, i`™Ú„³ØÙÙå÷û…íßßÎ~2ÔÂXO÷Ö ådNØB϶âQÒ:ÄÄŠ ËòØ&;7š¤öÖëLj»ÞzýÀ5š§ì—%wÉbûÓ!Ÿ<1êZ¨IDAT0¶"Hmq°Nøø_ý½¿û•´ÂŠºÁko  Ž˜ï@K&UÛ"Mšpá׉Ø’jó6­ TÚôLDØ(–ø¨n`mP_ÅËUe–dŠ4 clË,&Ä61°É¶œŠKÆéá q<æ<'s(…ž?œ3¥/ľÕÖÕeôF«ŒÙœ“&¶†ØæmðG÷6½ú¯=«Šó`hîCbûþòNSúBì yÞæ÷k{ \(w@~}ü-e…G>è¯ÌzÌQ›YÇ"ÎÆœLª›ž±³õ>ŸHDï)v¯o©Ûâ[Ÿþ!© “j{ãg¿97|žR!43âƒO|ðqUm÷!¥ƒIDATÙõ·~6mCRD†cÛëïþ@(´µìPî=qæ¡p÷Ò7&$e˜û©Pn¬[vƒM9׆ñIDAT”WÒ¨F7É%ÝH¯¦©_v{zVåbÓÔfÐe. Äyºàˆ6éédtkuÂ씎ïÎÃÌØ¦Ûe*™ôwÞq×(GQæìÒT¥TXše”²}ú×ÏÎwpLΤÒßZMR2©’J„QCìÕ¤cF »Z}“ág Rd™ôwî¸j'ý™¸ÕLáâIMêOZ¿­íÄF²Gj¢õÛØè sóò Ê:DdSñ£ôYXAÖ”¬š²Gb¿”-²v”õ³Lƶž±£¯u ei&ÛÑ׺vÞØŽO€ùjcÿ}¤æõÖ ‰×¤?|镊qbIDAT2ïÑ׺þôþ=¦Éæ»)ّƶñóä÷ì+ʼ€±ÍdRmpaN&jŽJÍ1dXméIº¢›™àÜÄh(¾˜Ø°µöý_ž.¯rljÕeÅ•5e™² Û«m¸w24ÊgŽ@,ÂG£}¨ª-?{º¿¹¥>“CD.áûmè>ïm’°Òª‚ÊzOãÆ5Uµåð“ý<CCX(¶i}ÆÚ×=ž ñl&ìwq܇/¾&}øà³·}oX«¨M‡Ë|*0[XX33³ýþìD`*¼áyþЃe奡Höî¹e¨'PäqW{“ÃëIDATËS:~„K¨M‡Ë¼¯{\,φæfCó‘Èb‚Oð<ïâ\Á`èï»ÿðÁg].Îí.ìíVªÍ ¹<¥OÓuJ¿ôŽX¾ ¹XBm¼v—yU}ÉhÿR~™\µÊ3?·“›Ãq\(2q¡ÙDpzn"0U¸2Þ»Ú.åo¹²2Ý'nQ ‚2$(ÃÖ4ÛÓ}¬,¡6Ðî2-ÆáB•¶Ë[Ž‘G¯bO1ǹæçÃ3Á·QçcV–==`i9 ¤y𷩉¸=ùÁ`h1²Ñ¿kçŽÆµu%%Eù+ÊÊV·¶n¾õ–›ƒÓ3»on ‡#›Z Ž%)çsb™rH©›Bч‘ª^,õTžÓòNÃNõöOí¾¹íÌñáD‚à.NrƒÓ3½=ƒñX¼qCå"ï*lIDATU» +?¨Mw¤cÏ}&'­#ý”i“ò(åÏAÙ&e$ÄNÕT|J'm`LªƒM­ “éÿíPh®¨È À ?=žçÇÇ&†ÎÅb±†õD©ŠSœ¸…ø‘‰‰»(M©²…2lzGš*›Ž…2©®ÜµµiSuï'ÃçÆF›}µñÉ“'Μ:yva!ܼٻó†m™#rkeR}ýŽœïé Lއ"‹‹žâšú5-[ÖzЃi-lœIE*kÊÐÊf ìI{áµ™´~’Bœ£6Äú8aÞfÿ'g‚³ë76Àø¹qbêª29J§í±ÍwB@IDATÅ¥PT䦔Qjf‘¥±íû/ü0žH\Ó.ø´»¯·g`×çw ŒIË…žŠgÿcêÇ?Ÿ8ñªÍ²4¶ÝÝqx ¤ü+¾‰)õÁ*7Šˆ{•õÕÄJoÐŽd£Ú©U×û`÷µCð·7@ä+Wɶ (/x ÄíÒ-²½°Ü¨-Ý"þ/«à ©Ã®IYŽ5åšÑGÖ]%h½&5wmxIDATE©™HÖ©MPòa”Œ¤dÚ’Êu– ²ñ*ÉYÛDp=òt’ÕjÃõÈÓLöfR\<ý8$¶i²7®Gž!œ 6×#· ¶W‡ë‘+ ì]¤í9¬íÕ&€ë‘ X܀鴫\\ü(•q$Äa§‡Ä6\<é‰#Qö›Rl¯6×#×N¦2¬íÕ¸¹}pȼMj?LZ×#ÏNˆmZ)-/®ª_%®G^XXW[ã•­GÞ×;ôâs¯6n¨¬©«ÐÔ¸  é‰WûPÖá—/ Îxc›”‘€ú”Øf‡Œ8$¶ieSkC¾›Ö#縥 4—‹àÇÇŸv0ÿIDAT÷/F½kËt¬G®fò&^-åjËêPDLl“2â^Mé‚‘,Uàzä™ ëÞKë‘§“lœ·IÁõÈÓIöfR$ýd{l0wæÐsvä½_ôMNÌÇ7\Væû\‹ÇSdZëvÕf2s³ó£ýÓc ‘˜=Ÿè.Y=жms¦Çe 0“šÉàÀÈG'†ýl ²7¾ÿÚå¬c›it>ñ?ÁQW(4_»j6ç$Å/.1;™é‘YŒm¦±ÿo÷.ÌÅósŠ/J xW¡ÇrO2Æ6ÓxúñΊ-y“Õ-é 8~UyÁ:ÍE’U ÚL€çùǾ»¦²fÜ0IDATìó×ïœØ6ùú¿/9ѯ¼±®¡¥¨©¹NZ™âr3ˆÖWÒªÍ(<Ï>ôtumå5»¶O¦ 7>š³cOÓ•76俦õ'le›8à¼Í8ãŸj몯޹}j2´bEþÐàÈÆKÖºò;ö4i’ÝYNq“kjVÜ"kœ½A#`l[‚òê åÆïÁ¯þcãÚºí;>;1>å)öôõV×–yëk¾òÝ ”“G¥@iãu/=€QÌèR©¥-"¢Ú–Ðñ,áÐWŸÈ ¶l¿ª506YRRÒÛÝ¿vcíú榼¼$—²y[ÒjJ‹¯Ú!s›²qbàL)˜Iuò¯};7¸éFö!oIDATºÛZydÀãñ Ô5UzëjÓ0Qã%¨í>ŠÖNzÄ¢4h.¨6=>ø´krãçokí:Öïr¹Þ8Ò[ÛP±~C“ÇS”N6{_ÄÜm¤A}`&ÕÌ¿<óREÁ¶-\süÁœÜœPpî ›ªk* u·ÉèçÖTSZ™¥ÀÒ A0¶i&g®ÑwuÃÉߌäæåÌLÏíÝ·~åÊ·ÛÍx¸Òö-Û”4JìNf=W›ž4 Ût0Ú7ï‡~—˵ªqºíºšêÚJÇ“éA±’Ù;ÀÛ4Ã󉉱™ÜÒáºÆÊ­—µÚHjÆ "Û´ñ­ûßHpñÕMSrï]™‹ýzË®²IDATÀئŠÍÈ»ïJMÛ´Á¢3tŠ«j3tŠSÀLj&觃±Í4Ð)žŒm¦Nñ¤`l3 tŠ'Õfšœâ²G“Jc™ÒˆŠ»ÿÖ·†Ë@µE‡SœÝÀ˜ô%‹[Ãeà¼Í(Zâ2YmjÒaÑ“¥¬á20¶-‘N§8;R_K}«YÃe ÚtÙÄÁ€SœOzó$; iÎâÖp˜Iu’f§¸àÚPªÄâÖp¨6=qŠ+§h²]²Ë}#´ˆ5\fRÍwŠëó…'­ ËçyV°†ËÀئƒNqv·7%ëYß.c›fìå·Ô`Œmš±—S<³èñ$ªIDATÖpÛ´Nq#`lÓ:Å€±M÷¸Ëï§=xp0Æ—]ÏvµÍç&FCñÅĆ­µïÿòty•;žH¬.+Æ?Ù‘ ²Zmý“¡é¥¿1æø0Ä"|t1Ú7€ªÚò³§û›[ê39Dg‘½ó¶îóÞ&y+­*¨¬÷4n\SU[?ùÑÏ314ÇâØ¦õ®R_÷xx6&ij™`h°dddÜÅq¾S¬søà³·}qO*F›µ8AmÇuttJ?&ÜT`¶°°fff?úýÙ‰ÀTx!Âóü¡;ËÊKC‘ìÝsËPO Èã®ö–§tüÙƒí3© 5ŸÏ×ÑÑÑÑÑK®ÍÅIDATáóù:;»è›ûºÇÅòlhn64‰,&øD‚OðÁ`è+_¿\.Îí.ìíV¶ÐÞNn_m»¾júho焚IÝx¤8!¶€Ïç~d]]¼?Ùý‰¹PX,»Ý±X,sçâ¸D‚E£O|ñ¦½» 77gld:¥#7—öv®«‹W–-‚íc› –{BÑHü3Û× å…ùp4ËËÍâñÇqÀq±h\¬|ë—vªµ#è[ $ÒÿAcd{‰uÔŽ’•Õ¢—L^RÙGBvJqHlóûý]]¼Tj²'Sáñ÷> ‘h8¿ ?Op\Âårå­È‹ÇãÓóã‰ïrqHYìIDAT±xüù'^¦ô+ž`¡ ûH¬£tËŸi[S\íL+_äIZSëá¿W‚jÓLzÖ7x ךw€QmšÖ¯ÞǶh¡–z©ÕÕ²½Ä:jGÉÊ?·ƒ±\&M§c[@꥖Y«•Žê¤o©°ø°YüÜŽÄrjKçÚÞ”I’òÜMÞ² Ä-J!ª ÆÁ‚³}&MéÚÞ, Y‹{µ3‹½Õ–ºµ½e°´¦œÏ‰eŠí–r”ó°\&e'uŽm1>%uT+ë Ù¦ålÛLqlË<Ù°ÜW-KvÊÊÊ:Òˆõ5Sœ–IDATå0lÛìåØFÀÖ±Í^ŽmìÛбmGìÛбmGìÛPgvÄ®± ±#¨6$}Ø5“ÀÞÔTÿ±gþ&E#A±±Ú.Zs\ãHf±±ÚàË´45{aùŸH8 /¯Z-VûÖŸ¿™™ñ!˱·Ú€çù™Ùàt`0zêaä”'1]°Ò3½Âºâ¾¢Õ%«WSŽU®È¢Õ¥´>ã¢/,í¨ùêÔ>ZÐqn{µNŒîùv4'úÄÔ@@´l±{4¸ª"ñÐC«×¬!HS^®öôTjòQBždWs„³0ºS\w,”ÖOÚfFò¬åÔ¦Õ)~ø’G¶ÀׯüêÝwßýÌ3ÏÔ××s·úÑÇ „z¬4ž)A²ñ£ˆ¦8Áh}SëHj‰£˜šèÃËH¶µ}&)--}úé§÷ïß¿k×®p8Ì~ Ì8©MÎoŠ›œÑhžÒá¥ç¨M //¯¾¾~vv6iM}òJz¥‚2yÑ+˶ƒ™ŽìwQ’IDATlË^Ùt,—I°nݺ矾   ¬¬,ieY#×ñœ[Ù¬lxFšb‰¦Û«M·S\ ã§JÚBzL‹4HjÂöפºâ2“…ÔÔ*nQº«ée Jÿ7Kû,&rµîè²7e"–‹misŠîÈi ßIDATÓ¡8¶“&8¥‘‰b W¶/%©á›å+èîÝt¬¥6 ŠtŠS¤£œ ©Mõ”Í*w[ƒåKaÒÑz¥wâ–4`ûL*¢Û)®†AwµÒ­)kMæsd’¡¨õ®ûÛéÃ9j`wŠ °\ôI¯”—P‘ͨ”êQå­½³t— ¬•I ¢É)N‡7Ã]-*RÙe QÄFtS¾l¯6#NqÙ[škè•“V ·FÙ"j‚¥G–±±ôžì­6tŠÛ òÌÃï×syˆ tœv•€XT’>PmHúø×ѦÐ0*zIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/loop-controller.png0000644000175000017500000000647612032647206027502 0ustar ebourgebourg‰PNG  IHDRFr )ï¨sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛcþ< ¾IDATxÚíOh"YÇõè…ÝKŽ1=2L`D–½¸fA&{˜ÄÈ ¡™Ž MÁËì ù³$Ì4¸æ¬#tʦ#2ÛÉAšÆÎÐH4›EÅËĆn7cníefgz^í¡´RjUY1éÄè÷Cݯ^½÷êYßúýÞ³üý„ׯ_`X`˜ i$ €¤44`ø$-IÅØìììl¬(I2¾blvNÅìj¦>c똫œ:IR1677ÛFȪÉ%wü‚²üÀsk@õ\Ϭ³Ä·v¶,‚ èÜħÀ%YiÙ¾5}à.+§wTmGzvv5S×5’¥'‰*cÜ9xäSôLDÂÔÆÁÁÆ” ˜ìNªgV•:«™º$IR11&†<žfµ®S:ÅT/#\Jœõ.†UköÀUKZ±œù|>ŸÏG¼œ±jâIÉÌQYÙì|$—S*Q6õLk»ë‡Z…ˆ&­ã}Fî.¹-Êåòù|.â%"Ê—ȹ¾õrι7’Ë)6_>%™¬ªË{öÒsºl”ºwÅÈwô…\µ¤%©xœm³œÎ{Ë6ÎåÛÔø¨\¹7º¿®è§Y¡Rû¡¯ý­žÝQ›ßîœörÞ³en ì´i²Ãzý ãªÞ_ÖNµûຶÇT–sÜ:IT9ÇÑvŒ*LXíD•—µSš²ô9νÑuç¹®soTµ×ÏEu‹ÐnÀq×p¼ajzžºÏ4?=%ÆGÏö–Z»S’TŒË[G“VMÅÊ.n÷·ÐR=³:+‘³gw&µÚ÷%Ÿwº¸6+Ýæ.ª–ÁÎ{˶l¢*†æšYç:Sÿh³èì(c¾±`ñmEkž¨1òšìNŸ «Xµšô{ò¥éÔ»H/]綦7+Ý”Ù~TÙdâÜÝ?ó*Ê%‘\*`ã&7‡„©œª¾ZS‚г;CjY-ÛLì–]¨—ös¸„+T$¿Ý‘¥ù(6x+ €¤Cçx`¥44¦HIÞ>m/„îííaF¸Y,..6 mIˇ1GÜÒé´‘•–Q+þZxøø)>*zòågŸöp¼‡ðýÏñ`@£Ñë.Çö7=g’`¨€¤vI˱ãÕ¶%©»†t3…°#\xû8[8ÞzwÊ]É¥‘Dw{,ŒO}Ä‚BرBÛå’«ÿógÊ›.ÜG`ðoÆÄàZgÜ|u6™¹¹9Ù’Ÿe„)ÆäòÕL½•æ,KŽœ-FICÓo®¹BØá貨݅…°#\hY`‡?}¢ÙÖaÆ·­)HOÒ~‡ÃétúÓ'òó`—í®¨ ïIÚïp8ÎJ&ŒÿIÚ¯Û—Æ\’¤ç#owÆA˜Ú88Èçó¹TÀÆy6W§OËåդߡÐβ*‰Hó¹PŠ/%*ö@$`§l0ÞgÜÌBxåÅýç¥Réùý+­»]³(³r8S*•J¥R9ðꎆ4 ‡ߌËl/D™•M —Ë¥o¿ ©¹6ËÛwùÝí3+ݬP.oºtéôæ«@¹T*•·©»¯2\pYVšœë©€‰!Í´Urz5ÍpŸãÖÉVÜùq¹N¥öC+ûѤÕi$9Þ®sãà@¿ÆŒ¢3¾Àâm"º½ðe º…D¤2À®Uy½‘o;%—¾÷ö‰­ Ft*úŸ{ôþ»ÝƒT7Àe¬¥‰h|!8ZJ׬;þ3ß[ÉÞÆ3úe3‚/c²Î-˜~úÏ«ï¿ßýÄùµüX¤»3˜ðö$-–…­hÍLDRvšœ&’¤ú³H¢Bö唿¶Ìž££ «xÅ;HAB]3¾•æë:]Ûwßÿƒo+ï\ãÝZ<¯ï,Û+•V"¨Þ9%õž®ìŒ‰©g§ê¶sn¹f|™dú„ˆNÒÉÖBX³ˆ2+ÊޒΪÙ5ãˬtoé5¨É‹Ÿ˜j7·ÿüñ‹C쀫±ÒM5Z|[Ñš;ØRxt^ ‰A÷K»XU ºé«ü‡fz²øEj³¡¤.Iœ{Í•Ysî¶Öêw·Ë›®ÍíCÇç׌ó»Ûå¦L4 ‰|ÛÏßO:kŒñßñ<¥¥)×fy;ìTüÞÖ^—NƒZço:î„ßÓÚÄ2ÙÈíÅÔLØá\cêÐ7mB÷öö:~{y-<|üôÂ?ÛÀ7Æ`ÈÙ|ðMøþçétºC³x!€s¼o&®Í2,4€¤†F£@ ‰¤¿üìÓ±±1DA`¨¬4>úÛc@ÒHIÎÇ­¹NÍð¨ÀJ iÀµ;Þ’TŒ»ƒ"“!d[ÞÙòYÌ7ÒJKõÌš;˜¥ùH.—Ïç÷÷C‰_yÐßô€Ñ“téI¢ÊØ|´D,¾GgAбfÐÙX±S]úABû $ª>1“Y››“++NcbÐÝ|ÜÈ­5Ç6ûŽÍHºúsï´Sã„zf5$2o$—‹x™ZÍÔÏÚê$”.H”1ñˆB¹TÀN•Ä“’ L­ïG½œsÞ ~$IÅøR¢Òò,Ψ€¡¶Òú¾n½pTiªÝ9íå¼rTPäj$ÔLî@¢êÆý ãÍȤÙc=ë?.‡(†¶$m€{L…J®—6&&†ÒÊORϬ®fêÍ”#ºIH”ÖL ʵY.§ßÃ}?ê’Ö˰aœyãˆB¹ˆ—±jâI©Û„ö—ÐC÷2zåâ09?þôÆøÏd;=s’ÈñŒ;R‹´¤V §DtZ8¢VVƒ$$Jk¸›)IëeØè™yÿ0.—$Ç0ß]O×× ‡ù´?þïñŸÞ%äñ¨mïœ$:©E”Ô#r#“Öqê•„$ªC`-­v†qÝò ò–š5ÅÏoøÅ×Ò’tŽK`L yDj¥wN{y6›=.­O×*ój/¦³&n^Я¤'¬v"õ=Ṵ́¡WÞEW¹œÐCÅãÒúÔ”É_ú’´éÓ¨Æ+KƒÖÌÄ);?½Ñ,ר‰t OÇ[/ÃF¯Ì/k§Írš´vgä8oBù) 7[Š·}od¤+zY;=G&ê_~åÆfæÔdN½Ô"ò¸EQTlô9“XiMWPíRêdØ0μqq'«Lo±×GBç½e{6‘ô{le/Od{éJÉűýëÿdnóèç˱Òfs’t§™„q×G¶D¥ÒnÙÍ'!1¤v¬ì2FŒv»œßÅ·ÓÃG[„ÐKáŠßW¹D>~úñü'Æuö²ßÞ¸B>~ŠW+›¾ ßÿ\7B(ØË~‹IÃæx_Ôî S7p.ð{ 0àÇ•@Ò€Ñq¼ÁÒh4TpD¸üo0€ ÛÙÐ?²a¥G÷#XK i$ €¤44’@ÒHII i$ €¤mþà )—6zD²IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/once-only-controller.png0000644000175000017500000000564612032647206030432 0ustar ebourgebourg‰PNG  IHDRJNÉ­ÈðsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ *`!a &IDATxÚíMk"ÙÇŸ:ÌèeìŒ hqq7R.drD inG†&‹àfÄ$`¸ðVÖ:BÏ` ‘Ël$ i{.Á¼-Æ‹0J6³†\'½›|ƒã]”/¥õb™˜N¢ÿß.UuÎyÎÑÿyžsʃó©Ðvëê]2Ó`Œ¤0´ ¦+8Ÿ|mo´Ng±©‚s¼7ò@ÞÈÈ01¼÷>88À¸ð¸XYY¹¾¾.oõQŒ…|>o×{«èg‚Ì÷?þ„ €¡|ûõW#ç‡ÄÖ7øð°àúúúÉ“'fw±µÀ#Æ:È…¼˜X o¦OÞj‚û¾Dÿ­jú¾ÎÊ©$ĉʽ7QIxl[¡©Öã¹+Ûu†b!˜Zï]ŒïÜÿÙWÍ|xvk*»´Î7I•„§WmíìlÛwC¹pòfL‰o¼8—G{N÷(ŸÞq6Õ´z}½pÕ9×f½{˜F÷ ý;¦ßñÜëg{]aø¶÷ž½ÎUzßþf>ìñˆ¢¨Qd3öô{Ký•[6A­f>ýüoú+!Ëý­Q›Ð–TWéÍ|ö|+ìRí=0´ï`ºå­.¶cûQw½Þ9Ñjø¡™f3…ï¹›1%÷îƒv—ÎzkÍÖ..+‰5½ú\êgÏD5û÷/Ï­e6b%O*&¹o!T0Ø„÷-„ jPßÌg‡Í#ç4Mg=• ï;˜ê༭LGh7u¹ï¨=Td%¾távk(ñ%úîð ;õ8Bo’—‹r6ìÏç’­R³+¹½„(¶ó™¾Ü«Y¯}Ûïÿ{Ä Æ;ûR³+¹…„GÜ`DÄû6«nØÄ€~^¬ÑÖûmCSÎöb76î4íÛÞ;ñ¼P-ôYueïÄó"ñ™‘×µYÉð¾ƒÉÅ SêÁÁáÿŽ~d¾ÿñ§Çñ/%•„çdª÷Âöë'¶¾Éçó†šÅRo-nû‘<38¦ñó´ ïѹ¾¾FR&PÞß~ýÕ“'OÑ€‰õÞø„¸1ØZò@ÞÈp·L×{o‹”±À{ oÀÎ[­êÎR\aêÿ¹¢û»!‡€QàÑ{ïÖUac)^¤ š}áèH¦äHœª›€†þÇ8÷ µ·™cÁTLÍ©"ŽÐ›^~•jº,u1]Tšy²Ô›%TÕ,Öý~¿úp7¸`L‰/µ§µ¶¶m‹é_ù¯Ð?€¼½b¹HœKó¢Áݫº¬0)Y*%%¦Èë…«^Ã’¥Ò-ª2¦œ’\ÊEÜTϼ­ ‚7v”’8ç\Jż‚ÐjUwV3õNÄq‹$L´÷6WþUå´ÞV¾8/q^?­t¥k,ÕÎ3ú„ªÚÊÃË3í ­Å²™CÖ¦gWÓ6Cçò¶‰škMƒFºc³Œ)r@V: Um¢¦…sqÎÙp `œ¿€)—· xçƒÄ˜R68kà©ÓÝÁí|:N«nPUc¹#ôæø8)qz ‡(ð½·ø*êâ¼ßèîxUÓéj«ÕMxZ®ÕÊ cîç>ÇøB_}BÕ¡sz$BŸñ±”Ä9¹l­ƒiåk7¸{äÜYŠgÃ,IÉÒ¦ P7á©Pˆ¸”|óa USG1Ñ|.X–£§«™l8áÒw‡_ü×ÿ¯ö‹zrGåe‡PÃÇ ¦“‡›)õ.ÀoÎÁD‚L©`í ˜ìµw>ŸÇÐ0ko,PxŒè×ÞŸØy€µ7ò@ÞÈyy;ÿª6p´E/CIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/recording-controller.png0000644000175000017500000000613712032647206030477 0ustar ebourgebourg‰PNG  IHDR¤O+Ú&—sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ »šÜ· ßIDATxÚíÍkÛØÆ_út75%/fcä…¹ébâØ Æ”iÌP²0Þ ƒqbp¸Sðµ×ö5tÒs™É”ÁK1"ä«‹ÉÅ0Ùta\h<®»›üÒ]H¶%Y’í¤iüüVé‘tΫ£êÉó)z¹¿ÿþ›à¦Ã0ˆ@ìb;€ØÄ.Ç-ÓVYn•ÖÓÓI¡äŠïïn88î³­„× pá8Å“8üÙû‘cký]ó ñrœáŸø_ÀlÎŽu*Ñäó¾,Ïá4É­b Ð*:!ë¥ÖÕ&D–[E¿ßï/¶ærbøÌÎNu.Rhh ä~=-·ÛÝwDŽëtçÝ99Ùù¨Jׯ'Ó bÌ`åäVq=ÿBÜ0g·à\&"·óŽ^¶ýþ@ üÅ–Þ°ôëÛê¦@  u.Š—±jWZ”ž‡[µ½ù·ëï­Ñx'ã´žÔÐa_ÏÜ^‰ÏÊƤPþäiD›´*2«þ2˜ú¤´ñ — 2Á º›Ý<˜2¥d_,Ó±pW€¹;±” Ç4¾¦_OFËÁº2Ú[¨´­t˜¹KÒ¬2&¤×“õ¾î¦í>Oc•aφÞX§ f 뉦k;aJ´$Zw3V‘Åî’$Wâogý&”M8äV1˜¨qÖJñ^ŽS”Ñtý~ä’v¼¤.ùwÊÏÄÈŽw8h¥¢Ë [Å´À˜¾ÅoX>3‰<3z€`Þ´¾ë¶‰hÙ¹`­«Sœ”iÃF4›ÞwßLçD­™•i;ä8‡s™X§SÎ?÷Ù)Â%NêjaÏ8ŠíÅi¬zÃ{Sû 75Òƒ÷ì8λ&Æ:ågâøÎꦨñ´ñ£”µ$ ¯Z%P㇘¾ð<=—èPIÇߪ“ûõmQ$~Ö“²R±™Âž~›‹œÝØ ãˆìºÁL%Zr* äü£„«Q K{½ǧ ¡FZÐ=ßl2Åìt¿&A`ÚÂáp£Ñ¸ì9›DnÛáàÜ]&¨H!³'Ÿ”!MfN%,«ëS†=Ã(V‹ÇàìLîyïÎa>Ä„ŒòŽçˆì›¯ësœ7u¼wIæÂ¡9J’B…ccne2n5îʧV¯rΜ#²»Ÿ˜©CλsxX5œÑPÁ/qRºU‚Ì(˜ a_zë‹ÀœÀÍa Yî?Oæ)3R åÕ“á[€ùMcoïºí¶ V4w–Äp£ÓØ›ãf9oJŸÓ͔Ɯ@ìb;€Ø€‚ù{v˜À—ËæææÅÅÅd±SvÅ|¾DjµÚ´ÎNÁ ‹ŸžŸ~ù— 0?~ÿÝ iìõ!÷ø\<À”\\\ܾ}ÛtPn6é Ä0@ìs/vJåbKÖ·ÌV›ùCÐÌy<ü'Vë}‚sMÝWêLü•{û”‘pƒ˜ü€¢‘.­~þ"{‘]1ëÞÎÙÚýêæâ§×—=÷]U|¶hï\ô]þøÓµó¬ÿUøØi,c°ΎÁô(îOiôû‹­VQiß®÷å~}Ûï÷û·‡µëe¹_ßö¿¿Ø’åÑQSFßZäÕÛ¿Ôôj1ϘcoT½¡¾%×ìÕbϰ±™Sý£¦/½QêÕbÏóo©Ž«ÕLTó´Ù3•*»C4sž­ßØo[c1xF-ž) £é„O€9»p>bJ´¤+LÅqÞ““££#¥:D#=*»Å˜>[UÚ;•Øzž2û 7µËyU1ÅR´ÜvÇóq75Ò¥™ë]õj•×c>õçìÛø¹(Šç{´5¸g›¹jãÀ5s[¯¿EñÅã×[£[»¾•¥Üù¹²[¯«,½EQŵӭºÉÈêþâÿIOª}ÌRî\ŘÒ<­GÖÌ¥Î.¤Á¾ìùÞCéáÞÈÙéb¶èd|ÆLfÉÐ;">U»˜Ñ.ÞXp.ëÔ‚Ð ÎåAõåeŸv÷Ý :=Ѳ“w.“RAß9999ٱ͔ëÉÁ²W–rƒ¶÷û-ÝؽúiÓ\_š§õH|s‘ˆ7ãƒÝˆ(²7Ê…{¿Ð7÷¹ë^Ä,•V÷_¼·28êÏ×+÷Iíy–ätBH£!,b°ëĨuf³dè ¬Ù)‚¶‘‰¿Œ–ÓIç~l”ÉöëÉh¹Ã1F3V­Rk2¦(൪Õ5»^-V½7¼CÿzûêÕoßò?+"K×.?½}µ²¶x‰£èÞu¿Äp–¸ébÇqŽÝBw=]ÎWÝ´¼ªèÊ—ÛäNTcÝhz–®wœn’ÚjÂYÃ]ÜÌ-ÅrMŸ’yÝ]ú*²[5daw—¾º>Óë[‹l6³¾Ï™(šÎHc-õΛÚO¸Ûí¶Úð®Û&¢eçÂlãqœÃ÷µ›1¡úü½êg{@±¸™[ª¨ïóz,y[¼·bÈè|k‘z¥Ö#¢^­b±†¦Kðš9Ó5;»£zµJÝj­ñwe¦ iÈë?{–£Oщé,±³Ñ)Gd·i_!̘^¯¾qcBz½4åãTGäi>$u*±áÙYÝ]5þöA¬Ö#Zܬ®z ¯°ù²/–*}ËÞÊ“<Ï?x²²gaq†Gñ<º¶7åœ/»G[žç³ôMÄb󽕟¿åÇ‚œ’fGó§Svb:KÌæÕÅÆ¿õéùé—_¿˜ôj±ê=$‹|^²Oþ“{üC­V›á{v` ”÷àIÒýs|€ë Äî*ø²ççYL»«sqqOxn¸Øýøýw·o߯÷;sáìp‘Wß³@ìb;¸^ÌÝ{vVeÖpv±€›‘ÆÊr«´žÔ¿u%öw#¸QÎNîדëé…ó‡‡GGGÇÇÊ—>y)ÅÉr<[ÉÄ΀ø¬Üa,\P¿*ÌqŽÈÓQ±ˆVQ-0æ/¶Œºc]`ìrEÈ´ÖëÛ@@Ùyh<µßÔSzScóÿþ€±³sLg ’¤Ð*o²µ_ßÎ,”?<̇˜Ù®÷GN*0FW(BƘð’2‡Õ¸›Úåg"ÇySÇ…$I’ú©wYn•¢åöÀN*倳³ÓÁ~óe[ÕA~5$Ií—ٛ͡fŸñ"dÚÎc jU³Æ™•YÓ–»U ?Bõ€Ø]¥…}°à˜ f„A²)QÊe¸$‰u*±`м$b§UÕ01&œ™T²¾ãtëÜÎ;2°;N7IRèr©(çˆ<=9ɇ$"Òð@ìÌá%\’ÔH'‡Ï ZÅbK–‡EÂÎD"ñL`ÌýµÏñá’Äñ"d•Q)¸­ >UI¹<®`î¹5Ñ"í;KëéJ,X!"¢Pþp‡ãH)Öõg2AH åŸF62µÿJ,P!åáo­Œ™ÄËh¹ –¥Ð¿þñ¿À¿ÔÉÈl88W€9çZWûàoc¸ñ˜Vß‹æˆ`.¸eã1;€ƒùš¶_:†5»[Óì_:X³@ìb;€ØÄ>ÿ')e™8e‘IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/random-controller.png0000644000175000017500000000731212032647206027777 0ustar ebourgebourg‰PNG  IHDRHdko>sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ 1ÿ[JIDATxÚíOhWÇß<²Pؽäh9%†zÒAÔ=IJDDi-JðÁÕ¥[´¶µØ´UºVª )ëXˆÝ\´>ˆ”† #ÛÉ¡Þ5Tƒ/9eq(ŠcßêË.tÛìhóGó_#[q,ûûA‡d4óÞï=Íw~¿÷$ÿ~ÌÏ?ÿLç Š)Â@Ø0.éþßí6‹Ó)Žj/xk+3.†yˆ=ÖI4¿¹x3]iBiŽžÎO2oerÀEñØ´]žK><èvÏÁ€»ÍB8V«Zàt±y²v»ÍB( šçb¢À¹òØ’XÅEtjɹR«ÕyEˆkÔU}PK¦ê„R‹î6 Ó)Ü àByì1÷!Äë×*d1 ‡ÃápXñQj—¥9a±¦ööâ{Ê[‡®O׸®ýfA9a±vÐ%„ÔuGŒð÷KmJ6·u7¦¼™ÀòÖÖ²ô sлqtʆR.‰H§.ÑÍ•±‡§^ï…¦•y¡P÷7„m _Lq”Fã*ÿÖmçJmyN)—Òê|1/÷Nh—犼j 9Wn÷ÞŠGÒê%}÷ –T-ò)åRÓI­P÷*Éi%–¦´]š+ ¡x¹Ý;’3Y8t»="žù›~;—Þ§w»ÑYÑy˜T_⨠Փϥm›ö lÕQÊ¥#Ñ'¤êÞD¥±ÐîÜxç+ÆÆÆF£’ðiu^©¯Ms‚'!c !¤¾-:%ñ1!l®ÑØØØØØØÈ±‚©SUÞ¥´]ºÏ«lk·ZÞD¥×;¥\½®9¢¶GÅ«N‹2á³~ŠõïÝ|t<ñ/mæYA‡¦øñ’r¹­>Þ·»çìýR›RO¢bœ[c_¸¿!lK¢ù•˜K£j† ,+¡¬¨ë–èêX×?É ‚Þg®õöxýKyÕ ÍíºÆ©úoÎ{A}ï ›ß”MsO˜9öîWßÞmFgƒàI¬){Îz±µÏŒ©zßëš÷°yf²yæ'‡“s¥TÒ½¦×¶æë"J‰ ½vÉ*Öíï3 Ñž0æž ¤5œÁŽ»½„´ö:‡$à:fï¶£#–“iò]ÚñÇH)—ŽpªÉï5eÑ€ÇÖxf×ÌJ>JZ¥9ÍWA¢ªÙ\ccc£ÑÈ9qYZ4¦Ï ‡½! •a\î Ëø›î}ˆ½‚G\wˆ¨Ã~…â XZ›÷’º²=¦D’Ò.9¿Í9Þ§a˜Àd”¨×“ºßÃO—”$:9”{W zßZwj‹¡OüÃè½Ïcë$c4^ À¡¸æfrÅVòHºÆ 8ŽŒ NÅž½x)þ{¿—¹ìÇw²¾ìŽ|\íÜw²Ò™Z7'…*O»“õewd'œÝécêwžÔb«¦²´hYcÛNÖ·ð=ý~Aí„÷«qŸÏ×;âsìWã–}ùàØ!lÑ\Ž5Ö¯a˜ÀòÖ–Rs£ž*ªËP¤¶'Åãír|:GÒkó^ÒRÒýòŹRË›È%¼¤ž*œgs¿Z~~+ïÝ Éîîò<Ï?ú’ܮȷomA<®:¸_—¯>æyžçù©' µžøžßzÌóüã[Ïz÷ma¬ð<ÿèËçåo¾‰?™ÚÝå}©>C­ë)sY[´¬±-˜Ù]ýDødµç±¥vw3AËFŒs’y‘Øåy~w•ûÚE8a›à_ª$<”K«Û= 57¤dúJuŽ•™1ñœV畜·˜ ·ß=AÄ,½þå­­~i±kIy›!Y9 f”€üÊ{×Tqûªx¼wpÿ‡urãCéÜ`f5¦’eBœãͳ+³Ù«eiOìå‹gïK!èþOÏËo'«¬±ƒS±Z¹º/.Ý-Ë”½`ün –Ÿÿ´oÙ¶ƒF®|xãùìc›H4¢=磔r©éÊžW¬í\t¸­íŠÝͱB»?FµwQÚ•Ä‹âÕ}̬^ûîc¿ßï÷eÈXmÁ—ý§•ü2¯–¥]ñ'SÊ›3«×nä÷û?º}mõx®.˜Ù•ÍPïK;nY<Ñ|gÌa#Wf+SO|§õE:ôÖ××Ûyúܹ÷€=™ÛÍÞú¢Z­5‹Ÿ”pQCqÀhqvÿûèèé8WÂþêóO/_¾Œe6çÐcããkl„ „ €°o“Kg¨V‰Z€Ç@Ø€³Šw»ÍâtŠ“žùµ•˜‹Á”0»{PKN§ê$*æEØÜL“\ñÔÓ÷aàtˆ\paó÷KmJ£y)ý0øbw{9Oš)Qi¨ÐÔkÌ:Qéñ’™ª/¬ÕÃá°x²P¨ÿ&\lM²-TøQøÊvÏn׉ °“~“wj‹i޲¹F#ÇR.½X;è5×/Q)9A2SJ¹§$ݨ$¼¤UºÏ3L`i3Ï ‚ °ùÍ¥Ãt»Íâ\©%Gƒf_àü{lëè÷`çiKÒ¼’„ÖÓE´ö‰JœcLfªn<>3&eG­o[9au:t1Y2 쾈9ÏT¨D;4³(—ޤ99™©CÄôlA ír<1Ïš À…6Ã&£„RnÛ$«ÿ¸Û«=àuÓ¤%3e\±»[[9V „¨‹aBˆÿæ¼Gꩤ²§Õ,šÝ®’lt›'„ßæ(õ^º†è“™ö} ˆÅ4Æ/åYA ^· ÛæàBrÉÆõ­lº‹Ó©rŸ/*·8‡•S‹³[—\&tÞ·à‚vùU³+‘1Æ]¡Ýíy‡ ¨‚ŸÀ=`Pâ¶6ÎÔªÙe¯W»A­Õ [³™1ÆäèÜœ6µ4NÌF3‹`†Ý ÞR†ªU³Ë^ŸÏ—(ÔÚši7Òcj)>I–ãRìðQ@6 Sk‡‡kS‚ .DkCÏî²ð‰Ù,6ïP6ý ýž¼¸5L•knP·ŠV¡o1Ùl,GÛ´Ty¶¢Í~÷Z­°¥}‹É‘•g/iÄ3ã&¢ÜQÓ¤—Ç/ÊŒ¹g<Š>;šÔ¿Z9#Î]áû¢Õêf#²Ö†Ù•lµÖ³» }bk–×ã0DÚfLŽFeî ¥óùýýý|L¢º’ÄÕƒ¸Ä9çR,ŸWÚú\¡´¶±v“S©r[}ä4ëNîpÝŒtÈÅ9•*ßxf\œ«ÍjµÂ“d‰s)8?bkÌ&ßWJD4}?&qÆÊÉ'ÅžÝe蓎³X݇»ñ?40ìq»e*NKœ[lãrÔÔU½ñYå¥f4Wh÷`U¯êŽÝajM5cÄ9®n˜ Ÿ“ë‘»x$3Fþiu ÝÑ$û‡aG¹–À.Þko+ݺËÐ'6gyþÃu–ƹ_»»g09:'«¿oFBÎ¥¸æŒªÛî…„·y‚Í5T#NûI–sGŵ©©âQŽˆù§E›cjuº‰Jg•—4å°0PÓwÄ9NTºœ»L|b5Ëkõ?m÷ç®ðîvÀ!´†”KuW…-ÅòkS‚r4•Sß§%žËåÒÙûTÉ'©UÚ¦cj‡sœX¹œŒ=óX @#þ—•³×õéô>Ë%ý†é,ÍÆUØÇÔ´Ÿì?êÔeÚ]Ý©:G5o]ÇT0*3æßW÷œ]™¤ì~õÍ®U³ËÞD‘Ķ¡”‡[uÿß­»l:Áþ,—ô?@ÜnÙIJr9œKr)~°:%âý°+—,ËQŸ¬ÙØÝ§šwoΕ"â.—›ó2“#³TŸwÚO²¬D­ψ1õRíxe.*·lk•.$ ŬÏÕ­Ý%ÚuB³\Òÿq»¾‰†]­gE‚#°}·s€d<¦Iwí\ÜÚÝÞŽ†ÝmuÈʼnˆÜmÒîÎ$aj-ŸOׇ¢ö{AÛPœKñƒ[}kwÙqBw³\Îÿ`0/ Äm´ €¶Ð6ÚÚ@ÛhpM´çtooN ¿XXX¸¸¸è m¥œ@¿ÉdlÅmý=à óðñS|ftä“>°»'¿9l®ŒO ...nß¾mö.ÎÒèW¬··Ð6ƒ ´ À0i[IRß’Ê¿VH\C¥›ãÍÉÍã:Z‡©Ä“¯}Ru]op ¯ãv.²u³ËVÝÔKùxsr‰¶‹uNN6<ƒ±.00ÚVªv´¯Ô²QËô4‹ÑÊëËÙj£*ͲZ C-î£/—cër?Ï''EQ fÎ}Î>_jÊà<œl“Í^““›kPßXymR ¶ÁÌ9Ñy&Ìœ·v f¾3쫵õy6°c¨çãÍIS MÖÕ²„cãA éà Ü;†YÛþXLÒ»„©µÃCµ¬‡6¶3&Gަ•×Ë©àlŒ¢»a7•’±ú ¢¸µ˜,¹C±›r‘­n³pf—6hó䤸§ßуô1y6Nvîñ{;¨xžÙø&tR,Ovh©yéÖ{œlü²åÂ×7>ÞTÆ/SŒ-„&¤›*8N?˜-ƵHûޱ²—N׿(‹_¬Ÿê-4[—v ÓAôÊîà ®ýaŽÛ$®¦C.&GµÞM4e=ê9÷Gœã÷#J›RåûFb¢q§è'%¯¸vxhX6ȈÀNzaŒˆÆ~6at1¹Go¿EDDž;ìóã¶^{6Ô–êžàúiªºÏ3©Óõ=fuÞi?ÏBÊ B¯«m fƒ\Æ`0éðÝ•‘ùhèÅb2²âÜ 6·åj)9MY»÷%10cŠàW¶ï¾ùúëÏß?Sî2tïN/•ý0Ó¼8öî]Úøò|aaìüË=º»ùVw]}a$¸Vm ‚c~;^™$ci7OÕjÕg±d‰Üát°²¨)ëÑ™Q§›xÉ8+ø¥yëíwÛi›[MÃÆç™àíœ=ŠÈŸ×CøBhb2}¼pçùƒ‰ÐÉušÈs'°ôüxÃs»Þ®¼†pOÞxÀ^Ý »K¥F1ªÎ•.Ínž7crúÙKí±œ÷RZ;ý¶~Ö5öîÝSÛûcÃÆß}óõ;õ}ìù·§­×OWÄ•Óõ ÇÞDž;ìRë!\ãeežI™<’ë×ÕÛ ]y «¶©^jÃß”zÜϘ™MŸ¹•ºÐvÿTæ<ŠI¼œ öP,ÞðBߨ™xð^ý¤hl!}çù¤Í?)5ölìL|ö¾(ŠâäÝ dÕø±…Ð=þó»ïŽ‘Í‰<'¡´msEQ|ïÁÄŽULmY—á{éÊ` i¯=°··gø¿ o˜‡ŸâE°fãÁ6×?Îd2†šÅwNâ=9 ï¸¹ÿ¿}qq š¶?ùèƒÛ·oã‘€ÁŒÛøxÀó6ÚÚ@ۀĭáYªE¶W·Ð6àfîÉkµÂÖlDVrpWxw;àà2ú;nתٕÙHŽü±|~ÿà J±—öô*þ€!ÓvñI²Ì˜?^Ï‘"ŽÀ£fb³B¢žêÔ›(´ËÌ<ÕioéPµ³ÙeŸÏ§4V·Úÿ!WF«ÛæM|Å¿‚ø´ÝrĹ4-¼[Í.Ge&Åòù˜Ääèr¶Ú®SªSºD:TÆäͧCn*%Ÿajõ .qÎy=OS­VØZL–{ ÛY¦¸m¾ ®¿(Õe/NKœ—^«ºµNuj§>ªvðàüH=¿jîÈ,kÓª+—!rmÛAÉ—¦A£Û+3‹Éѹ¨ÜH‡j%µ›‹sVNçæŒS/0ÌÚ„©i?1&uº[_p;G¯Ò¤Q§›8—zÛW ŽÀ£ÃØĩjpq[¼vqž‹¬¨G\…D¢P«©éJŠDÅ#™1÷ŒÇqu;^}:ÔŽ7¥ŽA‹ñ«q‰sr;8HÃÊ-‹¸}àÜš¤‚s)""’bù5A %]iÅÎÉD\Š= 8®Ö¦úø© /EÊ9™h~#˜†_,&SÁ¹$—~¿ÿ«¿ú>­ÿAžÜáè¼C(â3ÃÉ Ísú:À÷ÉÁ@‚<§ày0ÏÛ™L~`О·ñP @?¢Þ¾Õ±ÏÛhm m´ ´ €¶Ð6ÚØÇ*?ùÃÇOí ñÉGÀô“¶‰è×>¿uƒ¿ìçàDOÞwÅúÅ`­—±Ù¬ooc¢öCÇm…ßü kÒŸÿ^…ûzSéÖl$G~%§:®3nÿëÇWúû÷uŸÏç]^^Ö…m‘µ‹uÅ’Æí…GÚçm­.Òë £MåÙŠÞ3šF6±0ÛºŠ~u†£Y:Ù´ ‹vÌ6:®×ÌýÚ›–Ê* ?ˆí&jûß?¾ÒÿØéXÜŠÈŒI±üAt¦}âÖ"!Ê‹+–()Í 4c—ÕEêÆÄ$ÆÊª1fT³Ë‘œ;”nnm¶u-ýê,F3q²iuÌn×kfƒ~íÚûéJÚ¹»=ï@—~Òö^éìÄ“ÊqîrŽR½ˆ}‘[K, ´]¾ju‘ŽÔ§%Î-*–P£¬ Ѹs¤å ³íÔBѬÎj4ÑE–¸I†XëõšÙ _{ë¦Üž×f³îê#×£íÿ¾âúý” $†—‚E{ æEE, \IuõiB·«ÔyÅ…Vz­·2,ÝÛ _»ÂYz%’óO«Á^úæ,í'[J¾<£N7‘öê1®X2êt/IgQ‚#ðè0PHx£2ËE¶¦Í3œàvŽ6 ‰­Ù1Ò®ÙWë+ot) Æ7³A¿ö:33þr*ê¥ØáÚ”ÙG€mùMŒÛ?ýë:öÒR¼;µ·U±Ä~ᵺÈhÃ¥‰‘1g•—õIiÜiQ&E™][ɤûB+ƵPz­Ë2,¶Ökfƒ~í Æó«ùtÈ‹´¼i?pãö?þùco£‹«q)‘£s‹K¹Hǯ¹Ø¬X¢/<Òr¨Ó8‹¦fuˆÄûaw.™ ιBa‰'ÛŒy›M•™Å3ªvöxŠΥ¨1{7…VôµPzs‚…7ìlR¬×kfCÛڵƫ…h¼9÷oÿøáw~ªÿÀ›¤=Ï©–‡ŸÚù^šïœÖªÙ•ÅdÉW÷l€ëŒÛ—üJiKu‡w»yì¼®¸ è_ð?ž@Ûhm m´ ´ €¶ýÀÿw(êÝE*¸IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/simple-example.png0000644000175000017500000004342112032647206027261 0ustar ebourgebourg‰PNG  IHDR"Þü6sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 66Àù Ü IDATxÚíy\TÕÆŸöYdPDÅ5Fm2JI3$3*›Ü´R³²IMk\"Û”RS‹6\"÷BKÔHG GKÍÄŸˆ2h² û2÷÷Ç ³¯,Êò~?|ô̹çžsî½Ã}xϹ÷<AA4,o°™NAÑä¬~c6 Ã0M[oæ5)€ÓÅf¼w¼Åžš­Ë†Ñ÷ƒ ¢±¡ ‹eÛä•Z¨1 & mçe÷ úrA4 ìæÐ‚ ‚hz™É¼&}ÍrEzÚ´iÓ¦M#Õ!‚ ™iJÙ¾}»âã;KWmß¾ýý5ËIi‚ Ú3M67ÒƒóÎÒUÓ¦MÓÌ|gé*“4 så§i‹Î±µ¤N.òåmq=Y¬ôaÎ홾BUaø«û¢ûJöL‡5´B‚ ¢‰eæ»Ã玟•6ØíÅQáÖ* ŸûÄ£pþï³0÷ ‹Õ{âöƒ•ò`ß%ê¥/ãz²XÌÅoœÐgëÃt ‚ ZŠÌ¨4Àñ³2àœµJ£–ÌkÒý=|¢ÁÝbîîûâ­/sØìðW÷MìÇÿëâw^S„;‚­ÿ3ãÝslöŸÓa4ôé˱~ #—÷³öÃG;²”Bµ6èè[_f#êeŠx‚ š[f£xedÆ{ÇŸ•½8ÊŠº2¯I½œT½œ2¯I-|²Y;R¹srËïýט‹ý_lÙŸßwœ7$¿'u}iÛ‡*%è¹m%L@yÒÿãG³ð2r WGN¢ýùÂqÞòõ–™‹·ðÎÛÿÅôÒA4«ÌèsøÂmœQ:+|ôð ň™E@Òãë{uûnæÕsoÿËŸ¼ø°Â£Šß™9^Ü'å›™Gȃ§/r‰~„$—?x@ÔËÂq>,ãËñG6}‚ šWf† v;~V¦z9Ø`7¢¢ÊËo@@£šbQ}fõ›ÿþ—1'Ec?ÿïËy#,ÜQµ¾:Bò•ì™.¦ OqÐzÊëÅQáû©4Æò‰™ÌkRc31GŸ°ö™f+<챔˗ôó† Wú'%_màê8]}}éŠA<¸hF¡4ÇÏW$¬Ò˜êì ¿lÍŒ[ÇùekfýÆ …Ò[Ó„ V^ž>VÈf+žo…Dõ¤røÂ}=Y, ™pø$Eb`ïý­ç¯¤)‚Éóé:­‘›ÿÚױ3 ~ÊO/Œšˆ‘¿”NÑ^`?¨†Ÿÿðš÷×ûº…8;º^½qþü•4g·gÇ¿¼æýõʦ©«ÅÇËñH zÚã‰P|³Q+ú)/Å;sî­5øv梣·# Æ®mZµåçbù<„9c°VÄ¡¢\kkÆ%L¾.à‰¥3P^jªcÛ>ÂÔ×Ô£þ­cãÍu¦zxôbF_ôuAÌÃ8vHëˆôQevc¡L†7§á!ôuÁÔѸv™¾ D{•Cüôì:°g×{Ghþ<;þå1#cê§(c±ˆ++Ê”i’@;£Ñ¨Ú2ø‘xgÃÁ{þÄå2¬ÿßlÀŽ/Õ[WÌǰÑßVRýsó'aîRüUŒ-û±yŽÿ¬.?.†@R€”–àƒ·Ô›n]ÇK#ƒÓwðÇ-ô„·¦›êØÉßðøhóý×é¡8oMÇÜ¥8{gïbö›xc*ÎXì¸t¸àd6NßÁ¨‰˜2Ù™ô!$M9h¦0ßÜ} ÃZƒgg×N?5Ê¿Êü;*Ÿ~>sìjÚÇôîÓ{LÌc&*IÞ”$àÇ*v“¦¥\D¨qÁH”ùtñÛ Á=0§^  ÁªÏ±æu<7S™ÃåcÄx­ò_¬Æ‚åx2zõNJϰu=†=¥Üzª~Q$¿@¬ú#zbÅgÊœOßÅŒ×1y†òcìlÈŠqh—ÑŽÝÉF§Îæû¯ÓÃ/?Ä›ëÔ9OF£ð¾ŒÇÇ-:ý«{øÜLÈŠñ黸ðúš­?šÑ1xþîð¹&©6íã½ûôîݧ÷•®JþÝxÁ˜˜Ð”4å Bœ˜£Ùpy<žH¬Ð˜¸=ì=qªXDkk}˜"Mp¹\Ëâi’€Çãñx<®ÅuØ¥}PSƒÂBܹƒÌL\ºÉ9?†£¿áÇÝØ¹_nAÂF|°>Ca¡ÕƼ¬õq ×ÿUŒ«[þìïxB#“‹éÊte־ǻ"ÔÝXèïŽü\uÉ?~ÅØX­ªÆ›3íÓñ¬èÆRÿëá_g0|ŒVÎcqþ´¥gC§‡ãbqò7ºÑm"šiŒÁsYy)``pl×÷{5ƒ˜+ÿ\1ÐD ¢6%Šc…|iÒÑÁ™É©Ê[¾0%j¿$Ia’”+”$@Íènå@rœpÉ~‰Ä2ßqb|èI"_SwÌÔ)éîÒB)+Cu5JJPW‡¢BÔÕ¡¤ÕÕ(+CE*+QZŠš”£®EE¨­…L†ª*”—£¼UU(•¡¶EE¨«Cq±M;:bæ,K ûúk}trFU¥Ñ­ ïá±`­••ĪWpï.¾ø Á¡pvA]-Bí4v̇ö÷ÔÇÏTÇü9ȹ‰žêÕÀ¦ÌèôPV Oo­œÞYªdú=¼—G7:¢­ šé`¹Á³‹³ëµŒëÊ ­eTºbzÄ 8Q‰be]ï‹úáèìÌ‹÷Là­äòèl@[< nIHŒµØ‡/LHåñxÑÒë‡áÌÖ©¿KÓ º›×Ô ¬••¨¨Ð’ŠÂBÔÕAV¢T…TÈ4” ¤55(­ß·é¿m¶psƒƒœáä ¸¹ÁÖžž°±‡ììàê w<3©év½ˆÝÝG3àÑÁ@á_~ÄÑ xÕÛßݾ¥}»÷A~.ü4¾Åš±Ž/Çp= %3–ôÐÍE÷àÝQKÝ<•i{TVÀÑI½5O{YZÝÞ…7¹ùmCfcð  Gh7hÌÍÄœÒp"¢2E‰Ý±ÈÖS1y?iìÝž/LO$ ¸‚¬ýõRb®N»  [6£¤X4ë õAƒB*š''8:ÂÕvvp÷€­­Z áäØÛÃÍ66èÐ66pw‡½=\\”ûº¸Âΰ±§gKùÒó‡ã·}ºCm ª«`g¯þ˜œ¨µõÑ‘8´Óªsö'™jhêk˜2QbE÷‚c‡ðÌTuαC0¤> ê… §ñðpõÖ¿ÒÚ]§‡w`èºÑmBf^(§g¬}Àà YÚÇŸ}a‚U}àDDeħDíç@-3üȘ¸T±oø®oz«NÉMYRð9Šq±MÉý¢-Ç&&drűB¾¥ujîb˜wã·­8|ÕÝÜÖ®õAƒ³^ÐànH*ÜÝacOm©h«¼²‚QptÂð§àÂilûÛÀcQ-Â[ÀÎ{¿ÃÕ‹º;NŽ€›žšwâ⟦êÞKÖ`ÒPÌz‘O£Sg°X¸} '~1µ×ôExíyxzá‘pê7|ð6ì¬ÿE›‡qˆODŸ¸—‡·#û†ÖîÎ`÷veÞ/ã±3ntD[4k€Á³ÙA3ëàÄ&Jb Œjq¹<6[.NùÊ Q‚DÈ7°ÕD2GQ€\ ‰UN´pãö°Ù¢Òù†[ÔÁÀ.™ô,ªªPQ¡¥šAƒ³‹VÀAX:‡aëA|ø6–ÎD]-‚™¯+7­Þál<Úvö9|…#{Ô;v鎯cí¬\GŒšˆ5[M=i`¢½¶õØöòsag‡À.àE Ùø”þÐX½ "¼ ¡}±f«:|ynª«±ðH³àëg¦B´»·«w_½ï/Äš×Q]…AH<‚.´`ñ@iâ¥3­2xðÚìåN þÍYÙÿ‹xtX@OSïÍH“Bˆ¬˜G!ˆ6N«[Œ‡hûÓ$&Í æV¦rþ´Ìø»Ôª2z—7a}èÒ‚ ˆÍ[ÓìVfîñåÛ šƒf "UÆCÇSÒ‡Eñôb¾P"ÒÕ#‚hù štÐÌr¾ùü€»÷¤0´ @P€´?ŽwôæxiÞºTA­Oc ß̰(Þñ”t…ŠÜ½'½–¡5n–•ý?Š­Ã¢xt©‚ Z)Lf:‡ø)ôC%6ÆÔÈäê™ADËhð€Íô!ƒg‚ ˆ¶¦1öI3‚ ¢ÍcÛÚàÜ™¿KŠK»÷ p÷¿»Ó‚ºøÓÅ&‚¸ÿ´úh&|H®®Î&Ò¤1AÍXGâ–]urù“O pýZÖÌ[ÃGDHoåj¦Ü:~þ]á‡òÏ!™!‚ ™±Á¬g·oÚáææ,“•wë|#󖻇KEE•fzûÿëÒ½·‘ t<4Å"nêpIä±úÕÆTÔÕ=<”uê´v¦\½Q»°öªþêUËô6ÝgÔ=‘ËÖì7¹2XÄ[°ÇìÚnÆÏ!AD’M*vþÊû'»ªš]¸ãפð˜n,ß¿üòþ<¡¶ Ù»h€ 1]K½¸€Á¨®2S-ø/qãDÚåMlj>E1xÓW¹ˆE\A’Q¥‹â°A’Îoʦ ‚ ZíÜÌÞECòþõ•ü~çû.YR¾K§æ|TšcÉ&]óf(gãñII"¥a³X¤vnÖHëí«éô|Jß|ÚPW„û£R„IRêì®ì—+¨/m¤W£×t»µ &¢íD3ŠèDEµÇÏ@?Eú)»WkW«Ò¸‰°¾èÒ©ÓÀ×÷èU“¼€§Î”#:²Á’feÄD\cMš´)9fŽP‘Ô3o‹â IçCš$‡PãÐßW×ú-ói#p‚C/¦f3ÞÕQ Ijr¤¾ö¾ú®ÕAÌ´ô}U¨ÞÜTiLOöÛÅ'Г ™ü‹™Yñ0ô´}»$M™¯ˆc i ´=.Å"nªõýU •^Uï#ò ¸¹áï¿°n-~Jn‚N6É‘jVÒ|W“hL4ÓúÞ›±öI3Ò˜vÎ H;….] 4?ì@Ÿ0õÖösWjØ‘^¾„ukpúOøø(sÂyØõ#Ö®¡oa Œ6)çs˜UíîY8xÏÂÁ)@´í˜ÊJ£[m •.)afÍ`|:0Ü™E¯155ŒLÆÌœÎtpg¼<˜Wæ355ºå§Oe:¸3nÎÌSQÌåK†kfæÄqfÈ ÆÙ éÂlÛjªÃ60µõÀ~†?„qsfÜœþæÐA­­]`FdÜœ™îÌŒiLI‰º6j³²˜—_bý'{f@fçÃÍÍšÁ$l4s†MtÉLM ³bÔ‰q´czõ`6nPoÒüÑÜE&cæÎf|½Ôù¦›hÀ97Ø Ñ´b™! áa6o²TfS˜;˜²2æÖ-føãÌšÕÌK/*s²³™á3k×h•îYfë—Lq1S\Ì|¹… ôg®_7Pó…óŒ¿/³ç'¦²’ùû/¦WæçC ‘™Ô£Œ¿/³o/SZÊ”–2{~bü}™Ç•[¯^e:ù1_mWögû6&v²a™¹y“éȬÿÉÍe*+ñ)fâÃ-†vc®]3uzMwÉÌŒiÌj““ÃTW3gN3½C™/·˜:R0S̾½ê?Ì6aðÔ™>çú­$3Ñ@þºÀt f† bÞy›ùöæêUS2£º2 “þ'ãæ¬•óçY¦_˜VùõjÕöa<#˜b æÉ“ÔÅ3 “ò ó䈆È̘ÑÌWÛµr¶~ÉŒ£L¿ø<óÙ§Z[?þȰÌL{™Y-²èì¹8š¹›î’ ´„™a˜£¿1ÜfdFçϳM™i­ïÍ(ȹQ +ªÔ™gª©®©¨¨ îéëè“ñÏͽ;Óô[[¥®((@a2QP6/¼ˆ ïR]%‹qí~N1ÿœ’é[ªjac£1Í^ W'TÖè–t´Cm­Îã7¨‘[ýü•ƒ-Ê«t[tqDU­Ñ­ŽvÊÚtúSZ[ êÙ‡Rн»Ñ¦»dðXT™Æ¶V×AÓàÉò&,?çú­ô¤™n]»×%ÔçŠ$G3ÓËßpÜü}ü´ûЛËçÒ•n]TWÂ*Ó÷î)7¹÷9`æ,Ûìí!Z?Ÿ¦éjn.4Ÿ|¼{¾¾ŠyzâJ†Qå³Ü»‡ŽÕ9÷îÁÓS™öñÁÝ»ÐêA||›‹À@ó-Ž_˜’Ó]j:wÿ†5aöœ“ÆÜ7Z«Ìd]»[YZ«Ð˜’bYöÍÛ·oße³Xó—NV•Y»ò󉓯Ð5n!TTh)‡B3 pïž–– ´Ôò?”àå//tPüÛ^^ðÀ3“Ôe^_„uñZ çæÂÛ»ij×N¼¶Pýqç<1ÂðÍzÿ>^nlsƒ‡àçCxyª:ççC\ÿ"Yäø)qóÕ[Üm¸žQQøö¼µÔ|‹ ^Aôx<;Y÷Œ­]£ÜÝt—Lccƒº:­KÓ€£6!MrΉö+3…y¥NNŽJJJ/_ÌÈÏ+¬¬¨bfÕ뛽}¼dUyÆŽ'ÍÌsusàèÿí*qã2Ô®ÅM»ÖKË1in^jj—‡¢BÖÿܹƒ;·ÕU›*+­PŽ€tèÏè ñc𣓓ù ?ùiiX¶Ã#acƒséXøâ4Í8{_mWªÚ»±>ÇÓ [¾£GÁÉ cž€3§ññG8pÈêæ.‹ÏÃËK)fGÃÛo!i§r번|nnˆž?%ãÌiÃõ¬X‰ˆG`o)/ÁÃç%ø`’ ½`Ö·–¼‰ÇÅÊ÷ù\]Õ¯g*dÆt—L‚#‡5,VÃÚMuΉ¶#3ß>wü¬l÷ŒaƒÝ^n6”Q¥Kee¥²òªªj9#g†ÍbËÞ^3oíÊÏÙl–³³Ók9†d.Æ'Šc›Iî¿Is“QU…{÷PTˆ;wpû¶–Z4XZÄ# QG»æ”æ²äVue­"š)*,ÿ!)))e±X,@.gØl–‹›óSc#”•–çÜÎ7ùqCGjdâ”1ŒF4Sïè½!]È—& ƒÕù¡ŠEŽ¥I!â¢Ræ­¿ @.NÐÍØH,⦗DãÆía³åò0uUô„-^Ÿi¨u(2&nÅ:ŠŠp;ǰZ4Xšµóïìqçf‘"{»ÀÓÓ­¼¬ÂÆÖ†Åbɪòù #/.*ËÏ+tr±3Õ6'vN(7Qœ ‘¥í^̉ˆÊ&‰£R%âG`“0MŒD‰8Ç„±Ž²å¶Ç5cžô,ªªÀ0ÄÃì#=„U´À³‰1˜CW†hY´ˆGÇ_>l°›JcÌ>P[]‡úßðƒ{_ÍüGV•_Z}O¥1înî,»¼¼²¤XÆ ö3]_˜€8vÈœˆ(¬_°Q­t½LYêF¬c{lС¹ ̘;tÀ‚WðÊ«xq žƒ‡ùèÙ¾¾¤1A´c™Q(NÂÎnÅŲêªj5UÌðaÁ]ƒ<<\í½½;ôíÛgü¸§‹‹J"ŸXYYÕ«o°¹úø‚%ý´UG˽˜&S( '8T®L[åF¬o{lСÙ3f‚ ˆÖD ZlF1h¦xÀ,ÿ^ºyçfaäÓ¯Hrär`ÇÂb±•ÜÈÌ®«­ õ{4r`K¿bwSˆE#bA­KcZïb3½úv)È+ú1ñ˜LVæêê °Ã0ÌÝÜ|é­ÿjkk»tïØ‚5Fý §\ !!¢mÒŠ×4{døCçÏ^½vé–—·§­­Íð§þžrñ¶ô¿üüBû>?2ü¡Ü}¾Pùˆ3AD›hКWh{û^浜ÛÙyweUÕÕnîN:ûöîוÓÅ®.AÄÖ˜V½B³¿NÞ~¼éZA´Lh-l‚ ¢±m‡Ñ´}™·OþœU_æä^:À;œßÛÍÍ•¾+AíWfš²Òò;7‹roUTU ôžMÞ"·êCg† ¢Р™Ù·n_>Ÿsbß­ª µƒî©”[tf‚ (ši,›ãßaËd厶ž¥6p­ë–¼´€Î AE3fö’±eu6îjÀ°ÜXtr‚ HfË'ë6wì—Ïb±]ëú+5†Åxú:„†»k‹ê—;3ô±©P­fÆãñxÍÑAÄ}€Í€a˜µ«>õõóñä°üA‡¿Vš@?Ô¥·kH Ô¯VìôLAÑŒ¦Æ|Øñ‰‘åç:::õV bLHÄS=¬ÔeÂUÇ7bW$‹x<W$†*¡Bš$àrÍÄ+üÈ€QW.H’ê¶(HJRU–ÔIA2sX÷ÞgA ZX ³·wfßîÖ•m'bkk,ÚK^ Ïâ-HVßòã IOO—$ N}OŽKLOßÖb IDAT“ÇU&Tž2J»³ô½‹36ih‡Ò¬Œ˜ÈGÀJ$éééÉœL¡²°Òé9=]„”d«ê$‚¸/´A3}_g&ÞÜ\¹ìƒà®AC#ο[èæî–u#; ЛӹÓ[Ÿ†*<Œ éq©2ħ&ÇD ëã¸T±Ï€˜!k$Tè»2ëˆY“8=AÌ4š¬°jY¼]qï¡öÍË-ððð¸qífמÝ{„ØÙÙÝÇŽë¹2ÝÔ§g‚ ’™ûÌ{Ë?´-î5rbßßvÜŠß)Gz;(Äh| Ì,!ŒF`cé.aÐéYÈç+œžc"-«³°[6£¸¨\¦ÊJܺ…øõèÚµÅüΰP˘ÚdÛ àujîëꊰ¾˜3S^2ÚœfáÞ}0k6¦N£ÛA2ÓX»òvAÏÏôM?qÓÆÆæÈŽQSºwíìääÔ˜jù„T.—ÇfËåÑ ¾õ»˜A8Qx<¹<:&&9Ž‹‰0V´D0ŽËc³Ã/‰A¦…uîÞáÒVuÁXø1¹ÕtVS„Ìj’‰Ý‹‹qü½†’ÄÍ7Ó–L†S'±ðUÈdxåÕy¯1~*ˆ¶M«÷›iÀ¾_nüÞ¦,¸ßN’´l›%+.›0«W@§ŽÎÎέøJZãô\Xˆo¿Aee+8¬?þÀÏ1{¾h5ÑLƒ Ì…”SVúÒe°0É ÉL«‡aäù¹%}Ê‚‚CÐ×ÆÆ†¾í\fêê—‡{ùÈÏÇÿ!/^x:ùµ¹/«Ü•”à÷Xø*XzÊd8ù^{o½­ÌY³ï,Ç„hèן|†Ö«Å`Õ»Xô:¦ÏP~œ5ÅÅØ½Ë¢Ž™®ùø1ìÙGGðò˜§MɆU… ’™ÖhÞ9«®CHá”/Ðåo2£/!úi…®èàà€™³ ×ibº¥ ~'ë+qqAŸ0—á婿 +à ÂÜyÊtÚïX¯Þôh^ˆUüíW¬Y§X¼€¥oZÔCÓ5÷ Ã¢× \†À@óUYU˜ ™itì“w÷rÇ™óIcZîPRÜÄ¢¯/||àã øû# bžy0‡lÕ<¹æciÇR1w6~øÏ¿÷î¡[°VaÍŽóóÕÃk t>ê¨Ó¦kÞ± ‹"´ºvoÆÇ„h°¬7bUa‚d¦u`‰ÀIs Œf °é ܹÝb0ÝÚ‡N=<0!,–¾‰ØçÁbÁÓW2ŒŽûùø 74ÏÌÍÕŠä** ùxÿÿ©Ó¦kîÑû¢ª WÿÅ™3ø0ûö"ñÛ&(LÌ´Ȥ¹ÊLI ~Üåï´S ±œqãñÞ*ìÞ…g'cØpìßÁˆKމ];ñÚBÀ"IîÙ gNcØpuÎ×_©Ó¦kV Uÿ‡Ðÿ!L~üø-llPWgøZè&HfÚ,Ù·nß¹Yvbß-¦NýÛp*…dæáèTUaÜxTWƒÅj¿b ,V¼‹¥oâ™IX¾£GÁÉI9©~æ4>þ)K.[aððÀ3“`×N¤ÿ©®gî<,ˆÃW‰xhòòðÕvdÝPo5]ó°Ç0s†€âóJ¹ Á‘È­5Âf¬0Ñ– AP5›ã$}rþÀ7˜:›R›¿šdÒüÀqwWÞ@ç/@Ü|L~CX_øù‘Æ`ì88»àûïÐ' ûâ›Dpàï Ñûê§tïŽ_c×Nú£[0ΞÁ–­ê­3gaÎÎŽÂB|ŸkÖ!n.ìm´[0V˜hSý ý­`‚•³÷Û°Êl/AeÒ ¸ùÊ_Y5о+Š^=ð¿ÿ៫ ¥“Ñ̃ô¢>Ñô6‹¢5Ö˜4k:‹5­I3y3ëE3&6#¢…C2E<·få'®ΣŸ9ê厪üG¢‚FOé5ÞÀ‚–ã›Mb6¤§§§§§oˆNŽ#¡¡…‚d¦õkŒõ&Í1 Zþ˜õh¹#K“Z®ÉÊÒ$ él’@¯pMDBäÍL2s¡3‚d¦YhI3À,Ñõ@ÖqGæDDe(ܘ¥i)—ÙìŒ,©"ÍŒrù5>T²HL,þOÞÌ$3Ñú!“憙4àÄŠ¢¤ˆÄàú]wd~DTF¢ü ´,Þ°8eSš46"-£Eãb»^äñxцM.[±7sUÊË•i¹\Kd%¨«S¦ËËQU¥L×Ô ´TY¢HÃlM&Cm-þw À„h£¯A2Ó¼4ì1³Æš4sbç„rÅ YÚîÈœˆ¨ a’8*Q"~6 ÓÄHA”ˆp„éé‚$W¥ïÓôÞÌ:v™µµÉ´¶ª(-EM2]Y‰Š eº®²u±¢"õê#ee¨®nöK¼o/¢F]dŒ ’™G“˜4ó… ©\îÈœˆ(LX°>lñ^ŽVº^¦2¹‰âX¡9£ÍÆz3ß7»L{{¸¸(ÓŠõNT¸¹«_sqrR.Ê ÀήKùhÆ+nn°µEE%®þ‹ÁC”/A2Ó h:“f¾`I¿äxMÕÑrGæDD…Å#*‚€*—+Òj;²è„tsÓÞÌ“žEe¥ÚÌÖš;žžê³]]¡Šå 2{³±›ÆsÝêõ ]\`oO¿JA¦¼žimʤÙof‚ ˆû­1dÒÜ:MšèÍLqÿ!“æÖhÒÜö½™ ‚h3´Ç÷f&Ͷ^9AÁ~ èÛÚ4† ‚¢™ ™4AP4ÓŒtì“g;2i&‚ h¦Y !‚ ™±‚’â²ü;²ºjyèC§~ûÇÇß¹N.ïàíî×É›®.AÉL£È¹Q +R¾sxE’ ¶Š©©®ÉÊÏàè“ñÏͽ;Óe&‚xP´â¹™[×îqBtC/G¿ÎnÁ=}ý}ü´û]c‚ ’«Éºv·¼´JÁ”Ë.ÿ}õ×”´£‡ÿðôQüX»ò󉓯Ð5&Œ‘°ýÃàì_/Lœ€Ô£a>«ÙX÷{Çæ«ö´ÏLD'?8Ú!Гbpô·–rq5«ù®&aѵh¥ý.Ì+urrPRRzùbF~^aeEÃ0«^ßìíã%«Ê0vÌ8ifž«›sÇG¯ÍéÖ4åj-êšD[3™xЬYÃ)øö{ô Ãxw9žA¾^Vðå|¼«ÞÇ–­psÃßaÝZŒÙçЖE‚¢™fà»ÃçvȘñÞñ$”Q¥Kee¥²òªªj9#—3r(.–½µb6›åììtãZŽ‘jbêÅædŽ4©¹,·¾H@â·xhììŠvàÝUê­íç6×°#½| ëÖà÷“xf¼¼`g‡pvýˆ÷WÓ7‹h‘2óÝásÇÏ*ýOŽŸ•™Uš2Y¥*íììX[[[WWÇb±lØlFÎÔÖÔ¬_ùíø±ãØÚÚäß-2×>_¸?*E¨•)²¦BèfJï‹Ë²E­ "/þþZ9ï,3:ä"“aöLøzÁË‹¢¶¥¥˜5^ðöÄ« P[«[~Æ4xyÀÝcFãŸËF»ñû <<.ŽèŒíÛ~8à‘‡áîw<ò0~Öž”üû/D= wxy`ætÈdêÔPºySàÀÙ®†›ûìS,z>zÃo-µ¨K¶,ÔÖâÝåè'{ôEÂF­þز”?š»”–bÞtôVç›>êœsƒ­mAf³uÙ°­Ë†©>š ¦ªŽ;´›"]Q^YSSkgk uur‹«¶¦NUxüsÃÌ÷€z13[yûC‚$==]’U("m Ù/ÑðT'Þ—eËZ!Ä@.¿¶´ð‚8<17¥øëΟLJñˆ›‹#!½ƒ¿.áâE¬ÿP«ü¬à?‚¬lHï z"žÌLÕþu“'á­¥((ÆÞýˆ_‡_~nȱKÅÌéxk)îÜÅ»xãMLŸŠßO(·fd`ô(< édeã‘¡˜=Óp=·nᱡè×’¿PX‚/6aç#¿³Çð䨆w ÀÜÙppÄé?QR†Äo‘°[¿TGWµŒòG“Wæ#j4²o+óÍ6a³ç\§¢í šépøÂm’“׉ªšJG›Íb±Øl¶½‹Å**¿+—3jëê6Å'[Ó²859&’_‹$§Š•™:Æb|ah„Ú$/P„ Bˆ„|0eA²RÌÄ©É1sbë]–•{eg^¼¸~7aýEe1Ó­bÓf|°Æ2!¾û¦ ?g'ÃÙAAˆÿ«ßGÄcÊÄãûï´ÊŒé3àîww̘‰…‹±ê]Õ®Yw–cB4Я?>ù Ÿ|ÜcYÿ!֬øñpq‹ &DãýÕø°Þ齕xëm¼7s˜ó1n<,m fϹN+D‘™aƒÝÌxïøŒ÷Ž+>ŽÐIçG³¼gU:÷v§§[;{;YU~ym!†‘•äß-pr±ÀqYœšÜ/$ȪNó…éé{C6q ÍêÔÏú(,¨SÒ7Ę©4F7v1Õ Ñ(ú?„+xw%lmqè ŠÈaÈ12‘7!Zë‹òr­œ¾ýpýZ埋Õýhð¬´ßñôX-1;—Þc9{Oi?SùôXœ9­L§Õ5}v²ázŽÆ”—šæôšîÁ˺7÷«ÿš©Só\YÒ„AÌžsVˆÆÓ"ž4{qT8 œž6ØíÅQá¦Ë×Vס>ž8¸÷ŽºñŠ»›;‹Å./¯,)–q‚ýÌŠŒ(.9&AÂQ†0õVÇâÔä˜H¡N¦öXÛ}qY¶¼5……زÅEô WãÙ3gi™@ÛÙ!j4¢F@u5–,ÆÌéø9ÅÀ¾š“ {iœª*­ò~~ºóò T{ïºkå°4P\ oíWȼ½QTõóóѱ£ÖV*ô竌ˆìltïÞÀ.º 9;«Ý]¡³‹Ù& böœ[xˆV&3 ¥9~öx½ä˜ÁÙÍ¡¸ø¶ ÛÞÁ¾¦Š>,âÆÍ¬Â‚ÂʪjW—€€€ (*,‰|zàöÏö÷êl¤šä<刀¦§±¶Õ1ßP¦Ÿ\–­jE‹Ý» \J_o]:tÀÌY†7ÙÛC´~>MÓPn.:iDàwïÂ××òyâJ†–ò5 Ü»§%÷îÁÓS­‘wï" @«?ññAn.-Ž_˜’Ó]jàØ » š0{ÎÙlúEibZI³bÄLñ€Yþ½tóÎÍÂȧ^‘äÈå À(Ž…Åb(.*¹‘™]W[ê÷häÀ}šÇe¹°ß~cþÏÃv…£#¦¼¤¾¿¼¾ëâac£.pý:†?†[9€ö«ú¯q˜Î±eáÃðÚBõÖ?Â_ðõ7º%Ÿ{£ŸÒ>2ú'¡ñ·Iž~ ÏLÂËSÕ9_mÇOÉ8p¦¼€‡ùˆ›¯ÞúÙ§Xôš²6Íj§OEP­§ÅŒqé"¢ÇãôŸºñÄÚ5ÊÝMwÉ౨2lQ^¥ui îby–Ÿsze§é5F-2Ú¤œÏaÓW›¾ê˜ååO¦^ø1ñØÙÿœ“þsNúϹœ+’œÎIÿ|á»M)_oÄÈåfßò&,?ç&N2Ñ0”jÓJe†aÉ™wnûí×½éÇžð{ÊÅ[ݸv×—ï=™z.0aJêO2Ó§2!][ÆÓÊg¾ÚnT6¬•™âbfÆ4ƧãæÌŒÅ\üÛè¾Î3cF3žnŒ«9Œ9tДÌèÿ¨Ø»‡2ˆqub\˜!ƒ˜ýût[yrãêÄtpg¦OeîÝcœ ÷çÆ fÊ Œ¿/ãhÇp0»vš9‡'0þ¾Œƒ-ÓÉyf"sô7‹ºdZföüÄtíÌØ²Ì\Ë›°üœ“Ì4‡Ì´ A³†µ›{û^浜ÛÙyweUÕÕnîN:ûöîוÓÅÂUâÁLx¶ø—“`Á|H.е"îÇ Y«÷›ñëäMÖ2aš‰°ä pÃQSƒ?Ò° ËVÐY!î×^t ¢Íóâ,| ÿ† ÂúâÝUxáE:+ÉŒ54í@_fÆí“?gä—9¹×…ðç÷vss¥ï a!-pÄlb &ÆÐ•!HfZe¥åwnåÞª¨ª@é=›¼En ԇΠAD 7‘´È¾uûòùœûnUUÈU™§RnÑ™!‚ h¦±lŽ?P|‡-“•;Úz–Úü Àµ®?XòÒ:7AÍ4šÙKÆV”Õ9ظ«5Ãvr#ß ‚ ’™FóɺÍûå³Xl׺þJa1ž¾¡áîJ‹E¼zZ§ç˜ÒWM©‹ÈW ˆCƒfÀ0ÌÚUŸúúyxrXþ ‚Ã_+W|$*¨Ko×AnÑqH¤·«1±ˆ›iÀ-fCº¯<Q¤aç4±(ZÍ‘AÑL Õ˜O;>1ò±ü¼BGG§>ÃêDŒ ‰xª‡4iSrL‚‘›²®Á³XĉH UBckR’À˜…³n=Ò$—«Xèú:ëS,ó¼'Μ™´¡ õö5Ûœùþ9@=ƒj‚ ÚÔ}¶%¬iÖ˜v³ïš•Ÿ$nKº~-ëÜÙ‹IþýåÀ±Ëÿ]½ E®³tŸÖ—†×»ToÐJ)–ÇÔL¨v?õþÀ/ý­L*SÆëQÈþá%enö/½ôC¶ú#Å vX©.h¸BÕ¾&›³¢?Ì©÷ÕûÙ‘ ˆ6²¦YÛ4Ó7rVaâÍÍ•Ë>î44âáü»…nînY7²½9;½õi(Ëj‡)µš¶E™"òk$´F®nÍŠ]²މz~œàP¥EMvæÅ‹{&ðÖryt6À1\ÌJǰÅ{%BŽñ U˜lΊþˆS“C•hjG% ¶h³w€§'/7¡ A ¦íÈLVXµ,Þ®¸÷ÐGûæåxxxܸv³kÏÀî=BììLû:«½/[õó+ ßW,¤IcURaºB³Í5¸?Fwl¤E›W^¥ßt‚ ™¹ï¼·üCÛâ^#'öýmÇ­ˆñr¤·ƒBü8A¶¶fÏ 'vNŒ¡9sƒÏfIÞ”$àÇr {B›©Ç˜¯³Uð…¢,Hœ(䛫ÐlsöG¿˜©'=‹ÊʆX´þ'N ®Ž~Í ‚dæ¾³vå'삞#žé›~â¦Í‘7¢¦t îÚÙÉÉÉÂ;³$AÄãñŸê=• <›ý+> Bï²qOh¾ÉŽèø:›(%2Z€›)â ²ö'Æš®Ðls–õÇ@1;vèÐÀpä×pâÜÜšôÆø"ÿŠM¶ zÉJed©ÂÕa}1g.¦¼d´9ͽû`ÖlLF÷4¢ÅÑêýf°ï—¿·) î7¤“$-›ÅfÉŠË&ÌêЩ£³³ó}?hcMÀsÏâÇÝøaž|ÿd¦Á…u2‹‹qü½†E¯kù+,,“áÔI,|sæµÐB2?n¿ÃbµÇšmÊ‚Ãëò÷éÛ¶v6%Eec§uwqq|C4/2€&Žfî??ìÀ§›/ìæ†QQø> ?£ËN´8Ú£ÌÜÉ*?÷ûM6›íRù\@@ Ÿ€ÿê _H¡L3ËŒ»{+>„\dg[Z¸o?ÜÒXåõ÷xx0\Ñ-Û·é¾| cFÃÝÞž˜5¥¥êQ8ƒã~š™&j.,Ä+óÒŽvðòÀ¨‘8tP¹¯-Kùcº0A2Ó`y~n‰­WNP°ßCúºµÒ?w s””´âhFÁ…ó ²´ð_àç§NOž„·–¢ {÷#~~ùY]òúuŒ‰‰1ÞÁ[à ÂÌéV´b¢æçŸƒ«+ÒN¡¬ÿ»W^ÅÆ Êá²ZFùcº0Ñöhws3¢yGê˜Ú€°Â™ó_ Ëß¶éÞYY¸–‰®]–©®FYŠŠPQ޲2””@&Cy¹2ÓÑ/NÑzíÆô ÎÍ””à÷Xø*¼jxºEgnæäxí¼ºsçÀsÏ"â1õ¤Îá|´‡U~LÁC°h±º¶ø°ôMõ“&úfºf'{–ÀÑÑ¢ã5V˜hS£x±]ÉÌ—¿¿{¹£ð‹‘tùÛ<¾^(,ļ8ÔÔh‰‡¦¢ÔÖš©ä‹Í˜9«ÊÑ™Qáâ‚>a˜=/O5Zƒ¼A8}V™ôÇ©3èÒEù±¬ ]8È/ToýS‚N¿199è±HfL×>C†@¸ æ×Xa¢ÉL»{ Ù’ †LšÛŠA³ÏL•±µ…›<<àì 'gxzÂÅÎÎÊLÏxfÒ}í³Uci>–v,sgã‡ïñü pïºëü¶«Óùùêá5:uÐüCÔtÍ;vañB„vC×®à ¸ñ˜ ¶‘±y« ­Z¡Y2inTV¢®¶¶xO¤+šŠboßÖâÁba雈},<=q%Ãè*;>>ÈÍÕŠfrsÕiTT@ó²ÿþS§M×Ü£öDU®þ‹3gða<öíEâ·MP˜h½Ð_ZIs e<=±ä Ìœ…ç_À„h<1¼A膮]Ñ¡CÑãÆÃÙ»wÀ°áØ¿ÏhÉ#±k§v`‘¤N÷ì…3§µ¶~ý•:mºf•Põ3g!å’£Ë1è&HfÚ,›ã$}rþÀ7˜:›R›¿šdÒÜJiÕ/Í4  +ÞŪw!—cù ,»v¢¬ eeH=бcÔ%—­À‡à«íÉ “aÛV¤ÿ©Þ:wÄ!ýOÔÔàömˆÞGæuõVÓ5{ ß©uuÈÏÇ'aØp Á‘ÃО6Z˜ ™i³Is›’ÅÓÌîíë¨ÇŽƒ³ ¾ÿ}°ÿ ¾I'þ¾½¯|MA÷îøå0víD ?ºãìlÙªÞ:sæÌÔàî‚¡£¶_lVo5]óÊUØ·áàì€Áá(,Ä÷I°fâæÂÞFëÉc…‰¶öÚßb3ÆødÝf»‚Ëï)°OÇnávQã5ß¡T˜}±¡±šYAkÏ4i¿cøãú(N¤ÑɰZ†hž ›E 0inÔòû&¤…/”Ä4 йww:ñ€¡A³˜4” m7eU¤?ñ)]dz,òi–& x<žvI¢=ÎÍD ”é¬{ï³À €GãÈìí¤Ù·{†uý÷dVĘë 4uHŽ.Ù/‘p¤I®!‹6…엤כˆ="I€¡2±( ’t¾R\ê·ëW(NŒÝ I¤ ˆ¢™FB#fÉŒî¯I³ÒÞØÜÜŒ%þĆÃ#‹}šù„TÝt£xÍA2c…˜ ¡&ÍhÒ¹™Fæ§ ’ [2ޱR……زÅEí回ÿ\Aa¡Ñw ‚ ™iFaÒlŒ,)øi’ .1‘Æ5Ájc‹üž9±‰ ™ÜDq¬QñÛ½ Â¥íî*þ?îÖZ”Œ ’™ûAcMšõ D\.ý–ìOˆ—j²¨Ž±ae‹}šÕOWG'¤›(7éYTV¢²²}]hGÇû½(A:´‘÷f¬¢%™4A´i!“f2i&‚hVÚã Ù¬òs¸Éf³=ƒ‹ŽìèGšAÍ™4“I3AE3M‡hÞ9«®CHá”dÒLAÑLSÓ±Ož ì,ñÐ$‚ (𱂠Šf‚ ’‚ ‚0Gk4[:½Uå×l\L› ‚dÆR”Ê–¡0]&‚ Hf¬ vQï èí¯ª¬¬ª¬p÷T/É+šû«Þ®Ò$"匥I!ÞO þ¦áÉêµÅ4zY~«ÜšµšVÐÔîÑAíOfSRZ\”—]sé n_r“9º¸ÙsdCfºvèèatýwND„iÒØz‘¦¥ J“©³yIDATNã<’ëÝÄ"nœ(²iîò–è _(‘­'‚ ˆûAë~àNþeÿ¬Z[°Å¿0Ýß©ÒÅÅÑ5ÞÕ7<Ö¬.]½º0/ÏØŽœØ9¡ñ‰*óãÄøÐ9±-di’€Ëåñx"±âƒV¾òƒ4I H’¸íGÆhNêz”ÚžÊ ž€Ñµp¶ÖYÏÔY¯3r‚ HfT$ä~açn³oFò{ƒdö X vF5<îÞµ}ã @dLrªâÞ*NMŽ‰ÔŽ¤I”¨ý’ô½‹36%IÁ‰ˆÊP–¦¥\f³3²¤õ1P„¾˜4iS}…:õ(%mCzzzzºÄ\ØÁ_(IˆVY±o=ÉqBˆ$‰DÈ7Ðý‚ ˆ&¦e šYk´\Ǫs¬uœôþääùûž<éäã#+*ÀS}ü±GîÝ7“:£03d–yñâž ¼õ€\ ð#¢2Å॥`ñ†Å)›Ò¤±i)ˆiªŒÒ¹9lñ^‰c°N£<•°o½©³áÎèçA´]™i€ÙÌÚ°ÕÐ+Y&6nÜØ¹sg‹ÕaõfnÚ‚%›„I⬔Œ%"æ”Ú6Ìœˆ¨ a’8*Q"~6 ÓÄÐUå.b‘@cÚGßÎÙ2OecBÓð} v¦E¹MÑi#¯gzyy}òÉ'³gÏ>|x¥¥‘œˆ(¬_°ÞÐÀ—ÆšÂ&vÀŠ TÎuè×£¬-61AcrH9—$ˆK¶ ÛÚûZ¡Qz1Ö=‚ ’CØÙÙuîܹ´´ÔÂòœˆ¨0y˜A±à ÇÕœl×,Ì •ÙQ)‘©\A’Ô@=b—Ëãñx¼HP„|¡dNæ8.—+„(!ÆpGŒíkm,¤{Pú9AMK 2i¶ ÑÜ_UïͨÈÉÉqttôööÖ)Yjó7­@ñ4†ÅjÝïÍd^Ó}<ªª¼¢¸€ž™"‚h)´b™Iúè ]?‚ ˆ–РušA­@cX,2 ‚ š’‚ ‚d† ‚h4Í#Ÿ®ýÊtWßšJçš ‚d¦;íi³eHi‚ Ú!4ÛöñÞØiOwìè«ø0cÆtÕ¿ªüØiO›x‚ Šf  P—qãÆ˜8qâĉþùâߟ~ú Àþýûe‚ Šfµo /øIÁË×þ½id? _0i’€«‘Xh¢åVŸ£X¤KÐhýÊ ‚ ˆûÍ(è¾þƒp+wâ‡^LUøœdg^f_†býìÌ‹¡‘ð>‰Ù.äK“ãDÁäXLÑ¢™½º4lGÕJôâÔäèèè‹™ÙÐr³T…&Ú6ÆõÆÃ§tÃÁÙ9ýB‚TQ“–±ž{±n$¤‘i Aq£™kÿÞìѫ˸qãÖ°Àâ7hnUd&(¤_F–AYýBæ„ôÛTŸ(îúqH¤ó•ºP™$Ç —ì—H8 >V¯ã2çH$B@,BòÞyØâzç/¥q"’Â$)_‘Y_‰4IÀA"äbѦý’t­0Ê@1‚ ¢±2c­Yr^]®ý{S%'¦tEå°Yp&¢ WJip&¢œú¨FXõ(•mãaÈJl‚¨ÞÊA3µ2´"®¯„ŠLE(“šªkÖl AÑ8™iÀº™ f"Brh¤P¡9‰†îö¦HNIéw1TÏÉ^[™ÈŠ˜ âÐ4s3qÙa:ÑŒæé}ƒBúíÙ³G1¢™Ö²Ö˜®Ñ#fNb¢$2UwöDš•¡K¬ˆÉ±˜ â¾D3 !èr\v˜ã†Hë£p"¢Ââ¡4?ÖHà R¹\›-—G'HLF#|¡".wÓëûæÉ x{D'¤ó Ôc4¬±°Aa9üf¬bÛÇ{§/œÀøË1УWZo† ¢ÝiLS™47bn† ‚hË4ÌÄe‡%àrCž4#‚ HfÌÒ˜¹‚ ¢ ÓØ¹™ä䟤׊ÍNº|ºö+N˜˜‰tÆ ‚ ڑưX••Ò˜.CCA2CAM,3l: ADóA2CAÌA$3AA2CAÌA$3AA2CAÌAAAXÅÿcITs½}uIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/once-only-example.png0000644000175000017500000001235512032647206027675 0ustar ebourgebourg‰PNG  IHDR\ƒNk45 pHYsÄÄ•+tIMEÓ ŽÃtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí{t×}dz’@Z !¡÷ ñ°£¬0‰16ÂÏÛø˜ÆnŽOË9ª §.ç´u]7ôØÉ'<âÄ!-v­4‡“œÄ5uâ·Mjp8†I±w¡¥ú±ªÍ³ù”)}"Šúž‚Ç£ïuFa¯Qx$ùû '•/íÞKH»€0GÌj ˆ9æ, ÓÚÔ}ýÊ›·mrf¦/«.]ëZý°ÄRN¼÷ß7;n1 ¼Ãcäµ±IDATÏrñü'Å9lýRÔ@"ãHáøÙ·…BMõF姯 ÛŸÚ½1ؘ¼§ ÷ÜDkS÷k_ê!¢±‰Ù§ Ò[îßV³nmYe¾‘Ñôcf¤` •›0ÛW,©Q~Tµ|)Aˆ2¦‰B˜©Ü¤g•äÑÔøL¬Q7óüòü‡Ÿœ9{ŠˆªWUoÙvw°ÞC‘ÔòBËlpž Ä&ï)©ÜˆÈíæ=²Ü,F9söTõªj"ºvõÓ€)Dj£Ñå’çkb3:6B¤²Lxç­cÒáÚÕklQPͳBsS-I ÄãÕl³¨âTíȘ¢†É ñš&IDAT¢`8•Û‚ôŒÆëŸ åŠÒ9/&ˆ*2F`'eYÉ6ÓÕ¯öpX€«aš(„™ÊfwÅ=Uغ š1A:ë4¦fÓ›yA5[£#Ùåˆ fF †S¹QåÙ³§ž|úqF+ƶŸ4>v‹ÖâV£:(ý³¿>ÒÆËbòòAzÔÕ±|0@È™¬qªk7“fˆÒ˜'.˜=±%Æo4J‘-Μ=µñ®Mì&2 –yMœ{!S³…4S†4æSuEVÃüŸ¢×EkS·P“¿Î¨´QE¶,/¥eU™+™™²GÕ~52?J{,B,#…Ö¦îSï»…²tù †ÏÒ®ÑIDAT §Þwoz¨ï5Ìíw?AJJŠ…KÕ§ï¼u,/§äÔûî?}n‹©Ã¨c~’íH#…ž[ê¿.•—SBDˆˆ±šÝ/¥A(Ñ$Æ¢`‘~"1~ú°zOÁ0žó—†‡F–­¨$¢ž›=ªe"*-/ˆå(° ñ)¸ÖßFDéŒ2Ø8RøÉßñ<\GDŸ5Þhnj­»oc{k·´œæÌ{ãg¿øUßÅ4aãHaûŽ'‰ÈéL'¢¥UD”™µ@V>ò/ŸÆn€ØG RÆÿõƒÚ«m¾IÇÀÑÞvm[Ê-þßüÞO*Í·©IDAT·ŠÇž_OD¿v^¬Q=aÉ>é ¬Qžt’‡õ­B¡zÔJ{ïÚÏb)“D€8ÆÆ¢pìùõ½}~Ûõчmk5Ø—…´ vZ6¤«•‡ÄrLfclR0ÃA0ì* Â_d2ë×D3ÊðpÊ7?™Þ'–©…V¯¡ò¢¢šþ-Ú£œ%X²6ñö,S“j+’,Œ¹ÍÏþ&k«š9Nu0H'—Xîå%âdŠUE`dFbçD`$SS]>0’µÉ¤AÕFcM°ñ0'äðd5H'— X.RÐ"FZRêO¼tñ•zÆ|fÃΕ@¡ÄBjÌN¥jlàÌ5£öØMp®òÅóIDATú;.±œ(hA¼íü«“wÔ•~ôaÛZïÙ’«m¹_{àÖÑþѵm)—²®®ìãÓ­Ÿù§Ê—Uõ™;€3Av¿56s4*Ž1W"rÏ…3`}lüH’ˆ(àD¿!‡ˆˆ#žl­ùT(S`¦üÃ]—=¿^ï¢#ÈfjšÙ`­” !ûRÎXí ÃXïH€½°±(H'ùÔåŸñÄó³å€X^ÝòdÇ©7Hÿ¢#Lø¹9ÝxI²6Y(¬FÙŠ}oWÚ¨6”“=©óݱ«(ŠPXæ!¢Í÷¶Ñÿl«""ß×ï’Õ (÷ƒÅíÁ> 铟Eú‘ÒXœüìÓhJÇIDATV2¥F}°o¤ÚµX#þeŒ Ä –{ú ¥_Sž>XÜlÕ°åF£Þ…€eðœX[Š‚0É•o.ËiPbËå rØu£!l¹|1<4Ú×åõO–ß^ü»ß\Í-H÷Ù9™ùE9±öÃö¢ÐÑÜïœÊ×.tÑ´ŸšœºÑ×KDŹׯ¶TU—ÅrˆØ {/Zo•TÊÃE©ùeΊ‹ Šs‰è—?ÿU,†€]±P¤ }9O˃º=#ÓBt0<ämkéìììqpÜ®ÝO‰6ö¼ñÄWñÓRèÀ*¢ÀqÜŽ Ò˺0Ð;’––JoÞ5IDATDÃÃ#Wþïz_ïÀĸçù½/4ää.òúz‰èÑ-µ7õf8Ó Kr#:~âKˆ‚ .—Ëår‘Çãihp³uáFcXñŽŽxÇ|¾ÉàyÞÁ9††¼¿ÿ¹{Þp8¸ôô´æÆŽ`¢¡d!ZÜj|—ÑÀµ{æ‘d (°„(¸\®ÚZŽˆÜnÞÃN·B4êËéé©ÓÓÓ~¿Ÿã8ÇüôÔÔ÷öüôáG7QrrRwç ª“% 1Ñ-Ò™€ècÅF-ï/Mùü_ܰT(MLMM§$'O~€ã8â¸é)¿h¼õ7)=Èæ/IpF³g ¥Æ!k ¸¥¹;ßTIDAT)ÊT0ɺ–yö—1f¶[UcÇX(Rðx ¾©‰ù©óýþÇGʼ¿ß?8Öð7í÷¿ù껺F"ÎFe€¬Æ€[]CR:QuÈ{Ì!›€ÄÁ¢ ü;nhp{<3ë†;kÙÿ ʲºZfÝý :ÇFÇ“’“8Žóúúf݆GûzÒ¤èOÈ ÜBUÝòŠ ˆÐ2à(¿!1±„(P¨ßSP2=é§Y“š;ª•Ç™ÎLŽsŒM yK*Ìÿ%ûø›0ñ÷€1,´§ MàÒ8Ý9hÈ;é›$¢)_·i;˜'gIDATcÅ’Ò¬¬Œù©órr²×¬Yµõ±G†‡7?R31á[¹¦Bµ;Ùz^׳€`5Ü ”®BϰàX딤˜íK‹ñ.·tµ l~¤æÚ…Ž@€'â‰>ßnnjóOû+–çßµ¹†Ý#Í]¨®®•f²½n5nL„ìZÕ3©ijÃ`ß ‹U–X¹¦¼¿wð?ùÐëÍÈH'â„Ø<Ï÷t÷µ·Þœžž._–ÇPÒœymfÌ­Æ)²k†g†¥^c8Xhù`€;ën¯\YØüikGÛÍî®ÞU®âÞžþK¯]¾t}||¢jUɦ×ÅzŒ¡Á=X k-‹DM#IDATŒõÛÝy«©±£³­·¿Ç뛜tf¦•-®^»¤¤ÜüýEâ/Dò‹r:³°÷ò`:ñ)˜»äiºÞyî×7úûFÓ2ýË¿ãúrµÓ™!v 5&‰Q0‘Ñ‘±®–ÁîÖqß8ÜJêmÌÊn­Y·*Öã `ù §­µóÊÅŽÓïµúÆbåïÞoáˆ&ˆæÐðê u9¼Þ±Ôä…#I—ˆ(Ãq‘þX €hHa;ÿöÑñQÿü¤ÌψxGšoþ‚D‘ÂlÈ[›Ò¥tFˆˆãæ¦.ué;g €}(ÌÀóü½?XœŸsß¼/%SIDAT›úÖõÿñLº·;*-¯Î¨¬*•×Örn7ì2„ÜSfù@¢E8TXœO݆¾ÞÔÔ´U›üWO%mÜRyçCåÉÉQý¿$j‰Z€v°§@Dtð•(.-¼{Ó†~ï¼yóÛÛ:W¬^âH lÜR©Kjk9á?ñ’$7i ³ÔåV¬‘9×îq)0^+b¼œ³çåïT,)ݰñK}=ÎLçæ¶Â✒²¢¯ÿ`9#³€rúIoìbY(ˆ iÅKíá€ÒXêœÑ5ƈQ0öNÞÞ—_MªÞpךÞîþ¬¬¬æÆ–%+Š—UU¦¤„ØY”í)„4“MT©†IDATFñ#¡‰¨)ªÎUÃÂ!~DÁ¯|ã»ÉC+ïbÍo޶nÜZÔÑÞYZ™_RZ…MÆÍ\)Ò(À€Ct‘¸{ örô¯¸ï‰5îÓ-‡ãÄÑæâò¼eË+ÎŒhæ#Ó~‡W]°„ãU4RøçÃo奮[ûGEδ%%'y‡Fß±²°(/--ͰOi0Ͼok·”k)hq›xH²b€#Ϲî.wŸn!¢[ÞÇþlYfVFAa–¶–:%iÖ¶"NI‘ºnŒy¨Åáp,¬¬¹¿¨°8ßétÆzPZÁ N ¢$¨(ð| ¯{¸pÕhiEåí_X“””먧'IDATéB"J"ŠÂ·Ÿ;àüÙ•òÌÓ± –#Ÿ>ä­êM¢”gwAP!ž#…`)Õ”ìÉø&nE)Õ0F|.R ÃÄa¤€”j„CF H©@8Äa¤€”j„C\‰‚®”j²SO~âUê¿ â†ø)Õ¤3ÙØO?‹MðËÑ nˆŸ=SRªIoþb™ã8¡¬åH57‹¬Fé0š´ÐŽå"…h¦TÓÿ‹!€FEÅÊæJ›nˆ&–ï N©¦kù ÌpY¥X#´UµQ6GŒ¬Œí—Ò”jN§3š)ÕˆˆŸE¸”EZÃn…0X{‹=®8jIDATBäRª1‚›#dÄrË턟RM¹§ ùŒ-Í¥~) bcQH­Rª%§$ )Õ,HMOOר<Ø„ë•-´4‡+ccQˆNJµ0ßP NÀvØX¢“R-Ì™ !¶Ã®¢€”jD»>}@J5"„]#È®‘ B@s°ëòˆvïúž.ûý‡ÿ&B# ž°±(|žXIBj6@Hl, Dôµç«+«Jhî»Ã¾‰ ßÄxæÂlÑìÛþAlÆ€ ±·(ÏóÃ#Cƒ½mS—ÿ“:/;ƒ© œƒóJ¼ëŸÍÈÎËÊÎÖPyVZ–Áç´‚ƒIDATágy30;Àö¢ÐÕ×u é»SIS¯tR¥MåL6Óþ}C ó/¾˜½x±.‡áϨð³¼ë)[€)ØþéÃëÝÿ”’™ôÞ3ï¾’Wê7Ÿ'Žˆè÷é4IY==É/¾¬¡ìÔ£jŠ$iÒ4ÕLm¤ùøs°4mlÿ†ó¸…lˆ”p –‹ô¦cósþÔéÔ¯~ë©wwýû_Ÿ;—–›ë짇Éûýïgu÷ çæ;#ÅHš2ªW‚b¤iSú—"Kè¦+£!RÂֹجÞGD´–¾yçËÛ·o?|øpYYÇqÙûöQ³­8=T'†r¡lBéVù‘k;:-àIDATª7šÍ¤á‹ênÂè]µÛ/D-ZtèС;wÖÕÕMLL„ï0̤i²å‰Ò›PÖ59 4a÷Ž”p@Iüˆ‚@JJJYYÙÈȈF{-ÛûÒDI¢±áç²Õ¾r’›óŒ&z{×ÒHX¬µ|“¥K—¾ù曩©©999aº2%iš(JoŒU™Pubø»˜òí@¼b{Qhjl—ÕøÆÆ‡úå• d³B`³C°½1jÄ©«¥G-cÓÒ;ö…·_»ë!o¨¯Š=#q@¼m4Âäÿ¶1–uätIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/logic-controller/simple-controller.png0000644000175000017500000000552012032647206030007 0ustar ebourgebourg‰PNG  IHDRJMO9º^sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ 7êó›Þ ÐIDATxÚíMkIÇŸ.òr´âC +Ä2цã=ŒõÂÒ˜ac1L_†AX6ØdZé:Òf‰u,Ä2áƒC;ƒ‘lç°^£F—„²$,G¹M¾AõZjµÞZ/v¿ü'¹]]OUwÿëyªÔzJøã?pa¸@ÞÈy oä ˜PÞz5èà󥫺NDº^Mû|柗ΥÔ_Mû|›Jëý´ö‚½{ß@ÞÃi)›Á˜Ú-ÇÔ¨?sõŸBcHŠ©=ýbÜú…)‚kÇQòÓl“’¥EÁ8’ñŸ‘ ,ì\Mm·”­h‘ã®ðþîªCLÍû£¸×ÞÛçÒ’Øþ,‹;';‹‚`^š!±Ï·©´t#è;b_ÞF·›¾NátuT1íi¶Á—’'OB¦¶‰È‘Ál@ߌ£¯a=æ6•–®ëz5㪌1¦Æ‚Áv±Sú.Ë • ©Áε…ÇÌ"oAX\Z™* •ßò›!1cìz&öɹF÷HòÀ:>Ëô”ÏÉÁtUé“׳ Ö)¬Æ†*\×[ÍWĹkã¡hçÞýQլЩQÿVÿÈ¢e‚r®k®‘[ÏhöolYO™ÈŠM m;Ûg €Y¼·¸½vqÃYM¥eW kÔëîp¾T.—Kù°‹sÆÔb±çÕ›o,3ùbq%Y*•Ëår¹œ”8óCÀ Ÿì çËår))φ :ošu"ZpÎÑX÷nÚe¬‘}ªY—b1•»ÂùRÉjN#qû8%qι”,•ÌXÀ8%—kXµbƒ}gûláñ3Ê[¡''¦ö9Ù&„æ\Jï†ÑœsaØ‘òÛ¦Bć}ú·®œ‰sI^#"—$Ή^5ßβ6vVìqïm»½ƒEOlß67î ïwº3¡ÛÚuÖj €Y–Ö¬,w¨¥lʹF6yð—~rù­˜s.Õí¢5TÍ?ˆuÑ÷œn¢ú«æ[Ztسœ;`—s)µ-NÕvÎ¥”eo+cFÜÑa €YåÝ~DWe)-Ö›oè=Èûmó¹÷FJȵ±ß‰F‡ÎbF6yàµÓ€Eÿ†Ý÷ÂìV†v_ÆK Îu½šî ÅßäUÆl8U¦F;ëUº^Í‹I ÎAMvù&š»aðà·ÜzKÙô¥5ûª2&º´²4M¬;f^0ØàÉ­LÕY.â½ë99˜ë=´"¯:„Ëyò˜ ¨]¹ÛDÅâà W1Û°”wåáí¦šÁ˜Úß§4¬*f¿Ò>ü³F#'³\J â/beTgE<ªà²¼· ,nï‡]Ü:ÃL–Ú¯¸\Î¥d)oÖo¿\$8B»Ç©I–¸ˆHXÜ)YjîúªêYÿ[³àXm¸&hÆ…¬LÓYÆz™ûî;ùt¹VÓ~}ô2b>ñJätYÓ4MÓjá×_á¼®išVۣșTN•ÁñÅWäåãCMÓ[¬‘‰S¢VÓ~}D?ä+ä×öð{]ïÝ.P«Å½#+¡ÉÙSS{o·óaScÃ÷ºɶØÝ«dwuÎ(So¾élÄA´à d¤wNN¬Ûúô3¿–¯%(î¡ñÏƽD4ÿéŸ^üw!ÑùÜ-`q½ÞårÚ«¡óÑýOFý×.ä>UBáµy"š_ [N íå£Ö6Xé°«¤_Ý#i­ €éçÞD4· ?_ÏF·œûr7>77»cŒ¦LìÙNT̘¡yÇø3æ×òµµJÂ#ûè?}:?ôó„üþúÅ‹g2Æ&z°|oÓµh$¸žòÇênªéf“y7-,ézë ™­“{#/7×£Å),Þsº‰×¥Y2¥z—C‘Ó߉.Õ_}rÿ³ÐnÞ&¸õ.‡"§•¸÷c†¿c ÀlÁyg²½½¿á®×;{eߎsÔHáýÂ͘š?xk]¥›hìÊ©òÙýé÷@R"æÊÓyôü_ÿöÒ>"÷.‡”ÈàÄÀ»Rr…s":/äFLÏM^þï|dÝT2¾‘Ìè½ÛÊt„vSM´£öÔŠS£þWn7±†õÓ÷åÏ'©Çz’lúb99#Î¥±g%<žgŒçöj3L5C{‡÷sÏcüÏóÞÁ¸9á·LNÒ¯í%D36î”ñÆ÷N=_Š?1ÎìÙ}QgL|:llÂJÆ7€AÍÍ”ztt4øÛÑÏ?ÿr។à;gpÉÿð¯Äão … fñR*ί+öý6 ïÉy÷î’:påýí×_ݽ{¸±Þ7 €ÙÀÒ7ò@Þ€÷ËÛÖáQ)c€÷@Þ€«œëz5ãªíßl¹6öwC€kï½õ–²åi%Y*•Ëåãã%3<òøhÒ_Œy›hO³ ÆVRíÌ*‚à=é&E«¦ÛÉR}éj¿ÒF'K-¡ªõDEÙ Fa3¸`LúÛCQ[»m¾ôoü7è@Þý^ñ¬HœKKâÿ¶”͘ʤd©””˜ÛTZÝJÇ%K¥ $TeL}N±R>ì¦zö©&‹ÛÇ)‰sÎÛ žt½šYÏÖ;‡]’Fn³÷­üVåy½­|qIâ¼þ¼bJ×>Yê$eªZ+—WçÚZ‹g£²5=»‘¶:÷„¹Ö,X¤{icj,S; U'ÄH çâœ5rr08<3·\Þ‚°¸´BŒ©gCö¸çt÷p;ï]fÃî9ÝĹ4[€-8BONN’'"ë @Þ]ć.΋Ñ-sÅ«šNWuÝLxz¦ig*cî/¼ŽË }ªŽ Œ-z¿’8'·Ó¥up+¹3Ö î;3þhN戈HJ–vÌ„§± JÄ¥ä“ãr[Ö—P5u¼-Ž VcÏ׳99˜åÒ÷åÏÿøGû‹zroÄV‚†; n!W:Sêû 2¥€¹7àfϽ …®7pî *ב¾¹÷I 0÷@ÞÈy on ÿüÄMêíA’¿IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/bsh_assertion.png0000644000175000017500000001260112032647206023720 0ustar ebourgebourg‰PNG  IHDRU/ã5£ßHIDATxÚíÝKrÛ:P¥Ë;RÖ䌳’Œíåx¯éµ«ÝÍbƒˆ?Ϥ™¤py)Š÷Çß¿op1ÿÒˆ þ€øâˆ þ€øâˆ þ€øâˆÐåeuŠŸ?Fßß§pR°öùJ¿ÿÔÐŒùŒ« ™pH¡¨¯µOëmÞ^F橸¸]ðÛg¥çq©8]þÍ~ö ~A4O‰öiÃ×ê~þDZ¹—Ìà€ø×±¢ÁryAo>A0ïü¿Á”Ñå§V½EðX½6[Õªho,ßO­euQÂ'Àܰû_æCmêuôÕÿƒx>¸–7cl𛿓ßäªÎ)o@m?Èÿ‡ûÌ­(Ë«…AΗZTê–%šÄDg_mRá&Ï’ºšÙ®æV•ÜðtHêÊp¾ÛĿƨäKÁÕ!8“æƒ{j¥ù¶õ¸?…¨e3VÿTÛ™‰£W†]ðÿ¢¡®0£ê BÞÿ’ÛAzF~´ðTù_y½RW•ZåWZ¶ûÃÞ<ú[Tø'áà F>ÿe>Üço€l‹C yd¦I…ás.Xrê gæOCZ]ŽC`“ü/ÿÝÞ”™þ¢*Ål ¥«MòË{¬¶UÑ+¨ÑΑVì‘ÿ娗Ÿ¬0.ô¶ÛCjgL}i—dZpñ³¡sª6¶ê> ?Œ›Èÿ@üñÄ?ÿ@üñÄ?8•çŸ}||è#Îïß¿???Ûãß÷"ô#äÏŸ?½ùß·|ÝÔûû» @¹×××’É^ο%ooov'… Ûý~/ùòÎý/<ò«†âW$þ þ€ø7ùù©ÿîãÇÿÛhÉó7ËgÏÏ2¶µU« ¥âþϯ˜wl±øþùg>ôÏÿÛB¶Xl°Àá‹Íô ƒã_*(N¯¿£ã÷;_¯§ó7WçêIƒ‚H¼9…¢ò€±œ8º®¼ºÑø:dÃÄ¿\ 8ÿï÷EÑù¿Cà<NoÎÃ^gZ ý߯£o¦&XM1W»Qƒ¶¢yÃÄ¿¤)tES·åÄÑ×™…—§M«yLê¯Ë÷ç¹T0Aœ˜‚Mêèj ®Úº±³ˆa ¸üï24Ö.§v^ñK˶ŮÆà˜‰¸Óº¢oÞÜØp’øĹž/íÞJ³ŒX«Ñ±<àu&RÑfD/Qæß`¬ƒÿ7}A8ä7ËP·Ão #ë”áµe«A€#ó¿ œßáR»„ùBBNþÊáüvÇ|äÈ|ÿ—Ÿ¸93+¿þY²ºT”•;¬Ä”|øùøøX-!¸©÷÷wõ(ôëׯ¯¨ñçÏŸÕàåùg\‘øÀ=@ýÛ¯Vx®ÿ^__ï÷»¯¸bþg?0–ïÿÿ@üñžÇËE¶ó~¿ÛÙñññ!ÿñÄ?.«âû¿y£Õk;}µê<àÙò¿©Ôûw°é¯U;*øÙ…l•ÿMÁo™ü-“Âiâù\Ñש ;M3¥€™¹ìiZò¿ŒhR8IÑø”™ “kΧ âñ93T8ÿËç…© }]>ÁêbSMšB Ì€ ó¿|ç…UihÛŒÈÿN¤!u .¢JþèÊÿ‚oÔöL°Ê×5MÜž# 1þÍCà<ÆDß•ù•,6zs©{>Xõ#'>>>~ÿþýØ=ÿà:þüù³¼<ÿ €+ÿ¸¢õû?¿²È'ØÎ’ZPˆÿõû÷o}ÀåâßÜùK¾ÿ@üñÄ?ÿà‘UÔx_æõõUŸðTñïËÛÛ[毟ŸŸ÷ûÝO&x¶øwËþ"ð+A ä²öШ² Ëò~åeòS®.g·Ê‚m+ª*1í ÃËeŒªÚ1-G`pükTf5Æ8L?ÇŠD@ü;8Ìäê›ó2¼Ñ±;֣ˬJƒóU/mmŽÎUµ¢Ú~h[E~¥Íû´d§Ô. ï˜û?§1n>ª¾9 s©Au™™q?¿À`Õ™…OoæcLj9Í+*ï‡h7æW‘iFf÷ýýŸžR¾p€åU'éÓ Ö¶®L0þT¸Š!YÅþ©Ií7 «‘©a§DOÎÿRãTðÎtQny¬yŒË,s‹è¾érúW4¤©«ér*×ß"Pmºp@üƒû_–Ñhyu«?J-ó¨L«y9ý+Ú!—m¾)·'øù ŽþËwPœ¿ÈÜR›$­.³jáͳ—/yµ…íÌ7fH*9d Ò~€]ã_póEœÞLe™ùÙ‡lBÕÂó?G[ÝÆ†­¨í‡’Uä§)Ù}åëªê"áhð£<$¼¿¿¿¾¾æŸ‚öööæù/Ë<Ì5:€³©øþï+øÝï÷ü#ÐàÙò?xê þ€øâ<]‘ÿñ<™××Wñø/¿_â">??ï÷{þ÷è®ðlJ®vˆ\‘ø€ø×°rÿËòÉúG=/mx龆. öæÕóðë'îù¶®ˆVÜy_Ì íækz \ûÃí/xªüïïÿÜÆ•;ï [,°¤²ù²+2sMS6{¾žwÞ·)å¡  Èÿ ?cË:ÿNpîœsMÿlXuI:ÕP‘nÞ¶hË£/‚ÕUåÝó… {”}mj¦R ï܃A„ÿ`Xþ—ºÆMMæo¦¦ Jà.OჅDGüªSÓdÎŽçÓ§¦‰–r F´Tª‘ÚÒªÑêÑ{¾¤a…sø¾È/juk÷é²…ùuÝ`“øWRz;3M0Bíp•¬ö’ã-ý Ó­µæxªµÍ{Üž/lØêû'Ù%J:¼ª}*wì¿À â_òD»áòTó×þ«cAIh—[šJ&v8Å~¾žu'Èþû¢6V{mÝÒsœ/U³ªkÏH·:WáÓ%©Ôô©[û —¼Û`ú=?ü6Èï ê?öî¯òuuùßQšs‘LM#æ_e"åFãì ÏÜwèùžÎ9Õ¾X~™WØm[|É·ç/+@üû¿³Î¶o¡Ê—<¿é<¸í-óÉÏOÓöÝÏ|™©¶µõážßÿ¡çK–ì‹àÊAІ†ûWKöéò ÅèºDDXõ㚟“3œ5ÏÇ2gñ‡™}ÑüÃŒCŽ–Ì_ßßßÕà"~ýúõu´çë?\´þÑ~#µüšCöÌûbù³ÂÓ-Ž%ÿò?äò?¸¼¯á@xÿÁåÜïwÀ¥Nø.”ÿ9·àËëëk~‚'¼þé™ßý~ÏçêßðlJ®Š\‘ø€ø×°~ÿK¦ ^ÉŒ™é£[\®Î³ÁØ;þ-Ÿ|XþŒà’=µ!vÊÿR!mù4Âà)˜¥^ÜbOõ½ýÿƒƒXè™ QQÿ=š¨E#_æñÁAÌ‹VlY}°ý9«žð<ñ/Hø¢!'S36µ(8{þ„·Ã³®íjp¥ßÿç’£<€Íó¿’d«0!;elÿ¦´oŠ7ßïÌß/ÌÉ‚[:ʆ•@Ôõÿö W*\PRÿÝóϸ¢=êÿ¹P Àãßξ^UàÈûñ|ÉÙý~·_Èÿ÷rµ €›û_ÿ@üñÄ?ÿ@üñÎhý÷ïA‰¢òçŬ–}øš ú×ÔûmÊ«OŒªS1õØáµ5¢íÜÌiïT-gì>m;ØÚãÔŠ¶Þ"ààø +ßµ÷ ?öùÉR•ÿ½ªíε w‚ÛöÎáût£"“ç©Ñv>¨-‹ÙΫݦ^¤Fy¸íys5–gfImÝô:š-·kµ—2m›wÔj'ç·(ª:3µ×ò›Ù×%S²›ò‹ 9,Wûd¾¢`ï§èû¿©äúr܉Rù«šóq03rEWQþffí…³¤þ:_B*rey/-Û\8{fâh0nèÌèÖ-;6hFf_¯n]~7EÏ–³¤P~`DWô—+@þ—Køæ§ÏÑAdÈåÐÕйUK5¨•/统ƒ¥j!ù@¾]·ÓdšQÞà†Û¼œªÎ‘óÁµò¿`Üíó|é˜ÏGSoÖæµ[ šý´ü“†¶éöám.œrÏ=;dvàò¿-ÎÖkÃÌüÂZ&ü4Ĥ†sÿè¥¶Ç ~™„~Ù퇿öìç7Àyó¿’á“åæSøÌý,åY`fí'9ÙoøQAUL*ìíÕn?Jf7eÞ›J áBño”ƒaqþ~ùY|t ©óîè*Êß,\{t––‡´¶ˆÌÞ<ñò;ÅÚ.¿ mFf_ç·®°1«‡MsŸ}Òüå7pB?ÿvÏÄp`>ê@…gÎÿög@áQ8VAþfåþÏ÷÷w}ÀÃy}}íŠ_ÞÞÞô#äׯ_÷ûýóó33úG\.ùÿxB%_Þ‰\‘ø€øâˆ þ€øâˆ þ€øâˆ þ€øâˆ þ€øâ∠þ€øâˆ þ€øâˆ þ€øâˆ þ€øâˆˆ þ€øâˆ þ€øâˆ þ€øâˆ þ€øâˆ þ€ø€øâˆ þ€øâˆ þ€øâˆ þ€øâˆ þ€øâ∠þÀ3zYâóóóýý]OðL~üýû7?Åý~×M<œ¯ü­7ÿÓ‰<ßÿ þ€ø?c¾ßoXÙ4{ôOÁ‹†…ïÖkùuEÿºgózzi¾—Ç®¥v±ý‡ÄÖûxh+÷¿Lw‡~}þWï]_:—PØÔì¹®£ãF›¶õÞ·OÁù_m>—Ê‚¬±0É&›O¿|L–jÛò\>ºØe çóï§69“ì–w]I{ g/éÞªÎLõpíÞöj´Ÿ{zl¹ÂMNízà™ó¿’3úå‹åùþ×ë’ÉRCmöi[Éø•Zõ²«SÎ2p-™Ùƒ¡?˜e¾vt¦‡Kö~怩=ØJZ˜?´‚)ç‘&‚üï€à{šF¥ùëò¶E'•š½|E=³ÝZÚZu†µlןÑ% r ÿkI Ÿ£_Ê7¤a“SRfð-¹V¼çÎ:Îδaµ?Ç¿çk‚ëcC¦\í¥ò«y£z~lRµ¿Â”ñü·Þ‡Øê÷åÁ71 C[´a™¯¾Ú[8cí-þ…_^Öþil"¸jXÛ†-’iàÒù_áE§±“Õ¶m¾Øþ‰SSÎß/Ù®üÆ®¶§aöžîÍoB¾ÓªÖ›9¿)ÜäT Ë€ 1²Ix?.øa6„áð^.²ArfÇÈÿ.Çó¯ÿ@üñžÇúýŸÑ‡uõ¬rù4“寬Rÿ½e-]µ!™y›WqÂ6äŸ&s6[ߦ›ßöá‡úGTç&ƒø·b·´ä'Æ;<µë u ¶¡í!m‡¿ü©Ïè\èÔ{ý³¼”]ôüà”ÔIý{K—”kÛ„üó´¢eán}•ÓjCíî«ÚÑ%U;û'¨Ò—Ÿ dÛûû*³3ŠPŽÝ„›§¾!ÿëI,ú‹Ã•'«%å OÛ{ª ÞjJÊ؆©¯æu£Úv_ÛŽnÛÀÕ2Áº ›ÚÖ¤†²‹Ñ-*ßü΢µ› ø!þ%?9å—æVÿš9Ï<ØzÈe¨è3!^.{”6ô,¹°Ù%ÏYÍϲº¢-ÊøUê÷BpŽr«,ú8ð¹ þ­Ÿ‰§.ÓÝÎQ |ìÕÚjCfúªÇs¯’˜úþo‹#*õ$ñòC}ë*ƒ…Ï^¿y¤lÿ2p¢5ƒö¿Û¢ùó?°µØ†òJ„«×ßú–ºˆ·ÑU’¿–§˜[Ü*\^ôÑ}:Ðà_?®%g¯Ñ/Ÿ¢cMÛGºç‹Q“° «ý™¯DØPNoŸZƒ»õgy_5/¶¶娓K?‘ÿÕ}JËëÀU•ß«=GŽ6£0|ÖV­«ªÀw†6”¬÷¶v©³sGvNæû¿¶ƒ§¶ có¡^ÕÚÂ:‚ùòÖÊ&¹õ6tñqd5ãÜ´sNÞù5¯g±Âò?è— öÈÿà<ÿñÄ?ÿày\ÿï{fáŒ{¶yS©ŸyuvHs?7¬â´U·kaç/ 2;â Gï9û­äó~HÙȆgšw®ñÀíÍ«Çð}ŽŸƒëÿu–>8¤Í[ˆ>ëù!ú9µ §–ùݽúlÏ:zOrŠs‘¾:Ûö>tç¿ôïŒh/¤ÞÌtÖ²¤Qô4y9”7‚Ï·9Õ†ž)«ò°`Ó‚§šmAýšüYW›IPšŸ¶\{TN«Û²õaœ?$V÷ÎÀOÜjQ°Â- ­Çí·’jаÌÈÓp½*u6Ó<&œa{3£î¨!+Õ]óB•CNè¯ÿ×p¦çêPU)µhû{¦lÎÖ3– v«=6°†ßƒVÜn½CjCV5uõÃUؼ†’œçé·“”ìRjÓ¯=··íðh²‚é£9RÏêDõÿ —³¬”6äÂttÊQå߆”gÛtù;kø¦mQe°öÙ¡ëí)Ô×vôöï¯þâ\û÷ÛÊFV _c?•‡loáã…Y qORÿ¯³Í[”R믙WÕ«;ôùÀ–Re0stÆÃ õÕ~â†ï‹Çê·ÃËFî6å™·wç!«?ù»=Mý¿Î6ß¶)¥–/¤×s᫳ÏÛ¶±¹[NUe°pƱëm>º Þ-öÅ£ôÛ©ÊFnÔçßÞ­‡¬Îø«ÿ·Lä«.ñ‰R«…Ü6-VWõmMÏ)Us?×vËTl8Œº2ª©Cšwæ~;¶ld0ÙWqÜÞQCVÛȶyþw]ÿoÈ…ÇÂRjµ…Ün±rU×dÊW”:?ˆ¶dÌšK6ìÁÚ=ul•Áþö¯7?ÁÀ£·­©™ËÎ=GøFývβ‘ËïkWG¼Â1áüe2Y™MÝKÜ™ =jý‡~h²ÛoYNX îl]Ô܆Óþ ©üöæ‡Û#}È­/µ½û7æÅgÀ=bwEO9±ýÀQÔÿàŠ<ÿñÄ?ÿ@ü€GöoC\*ŽúsIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/remote/0000755000175000017500000000000012165514774021654 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/remote/run-menu00.gif0000644000175000017500000000507312032647177024253 0ustar ebourgebourgGIF89aèœ÷ÿÿÿÿÿÌÿÿ™ÿÿfÿÿ3ÿÿÿÌÿÿÌÌÿÌ™ÿÌfÿÌ3ÿÌÿ™ÿÿ™Ìÿ™™ÿ™fÿ™3ÿ™ÿfÿÿfÌÿf™ÿffÿf3ÿfÿ3ÿÿ3Ìÿ3™ÿ3fÿ33ÿ3ÿÿÿÌÿ™ÿfÿ3ÿÌÿÿÌÿÌÌÿ™ÌÿfÌÿ3ÌÿÌÌÿÌÌÌÌÌ™ÌÌfÌÌ3ÌÌÌ™ÿÌ™ÌÌ™™Ì™fÌ™3Ì™ÌfÿÌfÌÌf™ÌffÌf3ÌfÌ3ÿÌ3ÌÌ3™Ì3fÌ33Ì3ÌÿÌÌÌ™ÌfÌ3Ì™ÿÿ™ÿÌ™ÿ™™ÿf™ÿ3™ÿ™Ìÿ™Ì̙̙™Ìf™Ì3™Ì™™ÿ™™Ì™™™™™f™™3™™™fÿ™fÌ™f™™ff™f3™f™3ÿ™3Ì™3™™3f™33™3™ÿ™Ì™™™f™3™fÿÿfÿÌfÿ™fÿffÿ3fÿfÌÿfÌÌfÌ™fÌffÌ3fÌf™ÿf™Ìf™™f™ff™3f™ffÿffÌff™fffff3fff3ÿf3Ìf3™f3ff33f3fÿfÌf™fff3f3ÿÿ3ÿÌ3ÿ™3ÿf3ÿ33ÿ3Ìÿ3ÌÌ3Ì™3Ìf3Ì33Ì3™ÿ3™Ì3™™3™f3™33™3fÿ3fÌ3f™3ff3f33f33ÿ33Ì33™33f333333ÿ3Ì3™3f333ÿÿÿÌÿ™ÿfÿ3ÿÌÿÌÌÌ™ÌfÌ3Ì™ÿ™Ì™™™f™3™fÿfÌf™fff3f3ÿ3Ì3™3f333ÿÌ™f3,èœÿ H° Áƒ(\Ȱ¡Ã‡#JœH±¢Å‹3jÜ1P• CŠIR$Ç“(Sª\ɲ¥D%cÊ ȥ͛8sê¼s¦O’5w J´hÆž?“~ j´©Ó§;‘*ýɪիXŠ¼ÆµëT‘U³ŠKV*Wg¿.%˶íU³×ÐÆM{¶nÜ‘aÝêÝ‹®Ü*tçÚÅË·°á–p»Þ xñ]š‡#KÖè·ñGÆŒÁNÞÌ9be˘îLšôçÁ^3C.ÍzògЂ-Ë^ݺva©jcæµÍ{,îÜ@{ g›Xñã©»‡+oú¸æåП6w2yôë}©Ë´Ž½;K@àËÿO¾¼ùóèÓ«_Ͼ½ûñÞ!Š¿w>ý†óWèßÏ¿¿ÿÿ(à€hàêgß} å—àƒF(á„.È R¨á†v8 … fèáˆ$–˜ ˆ÷‰hâŠ,¶ˆ"}*¶(㌾_Œ4æ¨ã6z‡cÆíwÍCîhd€=v÷ã€\ 9d“@y¤áíHWò'Ib·¤€P: ¥bú×Õ”f¹B–j*ˆ¥•^Ø ’éd™w†&š¶¹&x®ù¦›}ʩЗ`Ú¹'™zJÉ'’þ±I¨•UÆi(¢LžÙè MnúhŸ‘z% ‚–Zè¥tRØi‘c>)垟†ÿ*ê¬ZÂyªœ˜þ·i«eºzg¬H’¨¤µN `—×媫œ²Ê¨£°;#²Ñ)+íµR µØv‹ ¶Ëq+fÞz ®r▫b˜êºðBxîpéÆï¼Â½§ï¾üöëï¿,°{jgðÁ'œ¾¶ÍˆÂG,±sõÚËîÃg¬ñÆ!Ulq¤s,òÈ {ü±–!“¬òÊ_™|²‚)e¦ÂÇÅdZJÕ,±Î ¹ü²ÃÀ¥5›vBÛüØ`?=±Ò=¿ûr…1O%t`¡ÅvYj^5¦ôÖY+võÌg-’Ï'ÛÔVÛ%Xl¡]í¶\EÓõÚ{=¶Ó6Ú*³½FÿË7ÑRuÎ7ˆtÛ°½Íu×ÇyM÷ÆvwŒ7‚g6Ûk‹: ¸æ˜žæàIe6³èi—yHŽͶêu3]EÅ[þ믙_¾¹ç\‚ž4ë\+^ºá½wºêâˆ5ëàûÁX‚áenŒ{8ã«€×Ä.öèUÿz/ÛªÛ-ëçÊc#³8Çcõ¹«Ã[¥Ä4M¯‰YA"ÑÉk«‹•LÀ.çUÅÞ0&;¬f §™ Df:3yÁÜfv­¸Îv~3žGxç=‡W– ´ Ý®€;apache-jmeter-2.8/xdocs/images/screenshots/threadgroup.png0000644000175000017500000003104712032647206023406 0ustar ebourgebourg‰PNG  IHDRG¿e´ƒ,PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<& ¾â“À\wÏ €ÁOA¼k03Ý¯ß ºì~3è÷šËqßP` Gäy„@ È#òB Ê1®•6ëytÿèÄêÆq @!Gäy„@låy-еØ<‡J>÷{°f›@GéþàÐF5±úèj<Ú8汫‡>ì@;qßâóŸûÈ#Ä®…ÌÎ6ÃMõg› »‘ᑵ„FrÂ#XÕÕÃ#bJÒ|£®fåS íX‰y”¾·gßONù7Sþa Ö!¢ˆG¡!â%G+@Øé ˜Í1+¼tnVpAr†#³çâÀ-¸œÁ,IYò¹ãNê<™òºœ¾ôú“%U£\aûðI“¾—þ¢Ÿh<™xs€.ë‡Nfšïúaᔾ¹'ÊR¬óèÊ}>ËÞŽ>?Ö%ÚG"¬p†íŸµ¢z=G6¤HÚÜClãa 4YXÔä¥_ÓÁþH„]t-ºH—Þ£þk¢ßÑY²{HØIúá.X2™¸ë?î| ëû#ub‹Zqå vÕÅ.H $¢Û°.±?¡òqóh ]uÙFDÒDFÄ韼] #¡ÚÙØ ¨í¸ù4]]à®®æe¤Ÿ ýÑ´Q:k98ßÚzÖÇOÍu`eV1¶æw´ðwÚjú!¶Õ>B Ê`uÜ÷Êh#!pYDYx„¾D´È#ò€Òþ"™Ï¼ŸûyÎx,›]>r…D2ܲjž—N.«š"­« dƒ±åšzãêÓ4Í8×`'öG q@g<:J´Ó:3!»Ooôè4=Ò·†Àü©–O5ŸÆÇÉJãQ¦é”#>xÎåËž£ÿîô'Ø Ë-Ì‘ôÎ.!–÷9)‚MÄí»ÃÊèl;ãs¹f㬋›=—áƒNšg6ǽn~2ãu9½1× t}L¥sùsO²\Ÿëœ'.ÜOTŽý¢<¸äuE.¹Ýqz7ç¼ì—î›.›¥éóÒSñ>˜.!íe—+ ¹|Ä'À£84Ñþ(ÔóÃö¾{o0hœïÑëzôU‘K÷jö„…Rˆ¾WhS/¡tÒì/7u¶Љ’™{™/ÕDzš,/a²Ò ïàûag‡å•dÒ¹üÆ/ÑÜ9Mç—úýÂØ{‚J'¦ÁmVšÿ¡…Fj†À¨ÑÔóerð÷l€ÌÝÓEÒ‚oê'#¹|ÄvÚG?¥ŸÏŒ©üºæ+ âòãÙËÖ¢Z€gàçRbšþãϽŎx¾õ5“¦ ¼—$ÙÔ¸{7þ%<'åé86:^Góºòù lVf{2ø9A®u| ¦›¹œ<‰ù· ¦ÙÀC”N>ˆAc^&ß ½aþ>˜.’MÂ!ÿ§ØîåÀçWµ³?/ #jøëÇSª»l:¤žv]t‚-i˜!‰^)à8¸( (ˆüÅÁ# 4>Åâñ+$ÂË㑆|Q{–jˆœ˜jÉëÊç Óä"'¦M‚\;kKý§':rò Ãý>»Ëe8 ¹)œÅº8zÌ ÄãŠ*±Uütçµÿó7íÖß<”O}‘6„rEoÆe F"¼øŒ”Ï‚I8kIôÜRÉóèà-…§Eù!h•æ´ðZÍ;Ç—‹å…,^`θͭ®‹æ³ûÃÖÿäì£ÜrÜ$ãG#ìO™=`cÿæ h˜$åAÓ!üŠ”$C9~%ef–,ëý[H Æ“J3ú»y9¤£9e—‹ó9HÄ…£YsŒÛu…ò9þ °Pß*ˆ¦Íݹä×RC4 ‡íýɽ?âb¤Ûù-ŒpÚ«óŠÉh§¦é"@ަfBOÿ;1QõÖ^ø&Y¯a°{;n½!³¦1™¢ySÍL6Ÿ´Ü›ÑV Eù¦ƒ>‘¡mW|5WŒ…ò9(¿ð,»¾q&´œŸ¥Yp"Èf¯i°½· ó!ɈWi†¾€|öÑç×¶*褲sǵJB'6àε³äy„@!Gò§ôOIš„éâS®Yཹr™Rÿä;G¯:çå +D&ÉøÜ‹òë/¸œÔ3SZ_.îôeŠoP¼¿Añc‡—Â5W-¾÷¼GŠšÂ¾KîøÜK%ê”ê'ב×ÁGb¡^—ÜžlA!ަóô9ÝÞŒ³¸Ö®×utÆ‹tö wdß•laó©·ûìø¢ý’è†ìÕšzhüŽ´îîÂ\'¹¬·>%]ìi6œ ¬ÐÇÛ…M@-ïŽë¸éö°ÐjИòí —Éç—{LºS!eãÀâ¢ÅÐYÜ'ÇõwYl‘6Qîý°sÑê3¦åÕ}Jg:ɯ/kî[ñß'ÝŸx‡õpÒ“㧬^.¡gÑOÔíRÔò]:-ØÛgH”¨Ó•uø½D®^“ºþ…‚2^] I_èÛßbñX1(­Y¯Dg3Ó™*©3X¤sœ ÷°ïZ›„$`¹ö>ydÏÈ÷ƒb‰4©á<9¸WËi”ðÒqêÕ_©oÀž±HúZBòŸð_Ò¡Þc¡(ê B¯i¬'ÈçËðq#Ñ¥œŸXé«WU× ä:þ(ü,CTF™` ´C˜®/§êâmPA±§wÑýÁÜô?<'œ­^N§dÞëjŽÈ¨ÉuÈwñ‘ïBîÀP¢N™~Yt3#¯×ùFHÈî¼±žÔè2xS·;J·ÓªõJtª˜Î¹:Ÿ#:ÿ`¹Pg£õÇùïªLð±ñ(ŸPÞ'úÇåû1‘5ËR¤‘‡¤UØ„®`H:Α.Ò»ë[ï·ŒKúÏ_‡>Ÿ@¼î´‰­õVxSïØÃL×T×8pWÅ­¸IN¸>'y8ñ:¹‘!ºŽ\!–§Kæ×—ã X[îþĨ)‡Û¯Ûá´°¾ÓêåÄïÍQ™®Ãä:âw!ÿv\‰:eúåu0:WT¯ŽA)èê"wn8þñRÉvZ½^×ÔyL¶¨Å.ŽEáJ² ²îáëò ’¾IËÙ$}pß9ž ¼ÖÌ eg–ŽåuñÏg¢^ý~E¹0´eÙd¹¢oËâ“äÖ—ãù7xL¼?KD¼AN£½~"!²eÕrŒb‘NÄïrðn¶¦dp´du° ²z%å ÿ”ªw 7½öØT½®£S}€è´åur:>ÿ]ë!>¦‹“ý}>¯õ}ç;ßylT<ÕÚ‚—cf/áS8¹°c2ž×@’öú?€XÒì]©o,E6I߬9¦P’û¥òF 5ª&òºwuzë^¤4D9^¸ÒËß§¨`‘Þun}¹@BB…A¼¿1ñÔc~¯ƒvÍ5ËI£$h”ñ»|â ¥ê”è'×É]bI±‡´6à’«×pÔ²;gÌ>ðÞÓDÚL^ßëÕkNgh…䤳¦@g#íÓÄïÊÁ€šW¬Öeløý‘¾'j­ÉÔôHoJ•¿<ö/ζ‚á‰äãw4ͼ]1ôÓ°!š«Ï\”Å)¥¯}ÚÏ+ˆ>ºŽ[>ˆ°®›Èt-Óå禚ï<5Ù“½ï¿k[Íìä¤È$³“~cá;‡~&L£ŽäÖ—SÎOÏŠÿ³{´™kTºÁ…+qÿ¶ŽEDY«œíŒ¦LR´í”ß´n¶M/øWŒÐL¾s®^'›*¼‚ñíPpÚ×jºòäÅISQ}¯W¯9¿xlªð…·ñ¬¤ó/d:¹käƒ~×=¤¤a¯êÖáÉâìÚßEV{Û¶Þ –!ÊÉv\â¸m6o¤Üm¾c~[³ñ[»A¿íu0Æ•_çhÍü]d7£ó.· ØŸÚÎÆy#äy„@!È#òîâ7^—Ç]¤ÖáP)‹C¸Gˆ>X1vbÓ‰èãcØ» |´NÜEj'ò± UI›… ¬RìA1v¢·Ka4³«‘Gš«Ïø¦ZÁd÷ý9°¸‹¥âžù…؆Á)ègB_œÃ36ÛØJÚÿ=¢¥õ¬Ï=µ€u¿› ‹õ”ÃdÁŽÕa­ñ¼Vl%¶!¢Â± <:€µŠö<„ãbÆäílò±«Ÿ×ÌpKUú'û5Ç_Œ¤Z6å²”+ù{ï­{—³•*Q¸+•ñ';[-÷¨Ææ^J6ÍMIN‰BåH£JàÑÿì—¹4)•Ôiôõ¤ÙCPßÈšõ*+ƒë*’V ½P‚ȈòöAŠ”¯¿Åæâ¯¶Ó}rNÝð,Ðqh¬ƒ9¯¯‘äx’èÀY–•Å£Æñg‹%Hƒ’§Ž´é‘Ã@‡$ÁKäkpF+æ„g@’¿Ôl†³0 ZÎ`·œ8£‚/æË˜›½ËÐu„iärr À9–ggsMt¤± B¦8çòi_…à<$á»<¿æ¯+¢ücÐÌ3µŒs ªgÎ?>FgNþ7+Ï‘kQõó½ñSvRàÕ3RaQŽ›ªâÞiÇYgŒg<‡&Ð@¡°(Ç“ËØÙˆŠàOÍ5ÙŠ3Tþ)-4]eÎC 3aÁÙh5ˆò&Û µSóÔe©mÚçœ2±‚Áv‚^«åŠG7Ù7g‚_1 …E¹8ÔcSíhlƒßÑæõªõë …£ûr[ïàhž?TD–þ»ˆBŸX_hIöQÅÙÙŸ0Ôêõe:°¡GåÆ!œ‰<ºè?ÄVC•£?ÂV«Œç~y„@!G´³+øàA=4ï.¡OäzdF?HĶŒÈ#ÚÙäbW?¯™l/þw£rÍRÌIMæ©FbãþæÛŠRÅg—~·c+‘óe<Ú¢ùuè…´3Ÿûpéá‰ÍÏÔp@xô…fyÊJd_±ÜgxmU@%c+úDîØqM IHÏ9]ž$˜Í1;¼tn6F]"Ýž¬¼—0Ç\¾;Ò™ÀÜÎ õ’ôùØŒê Ëà=Ìû‘`‰W î•1ß9æ/’ô}DÅrY"ïÍ|“:WÒ+úÜqÈz=&é¤yjëúDV’ Ãö~:Û>Ñj=™xs€>ê%uýÅË9Ä}{s} ,C W÷“Úê6Ã:Ò£×ö†Á߯YdbÒÓº»L—¿ïwÚ,÷¤r‹=ÆV‹‚£Ô¹’ä.ë­ó°`i¢³úö·<º>WF;u\#ÿëÓzhO‚ó#G6]ÓQXWMQƒpÈ/‚†´qã7^î-¶Ð’8ˆjã ù¿‚PJZ æÞC‚/Ñ2xµovHå" R8¨“­6a @Õ’€F^Ô|@×QJá•Ð9nÚ2{`ñá´†@X>H%»‡8aÝ"½æ)N6»‚ŸÖ“6îêbk° ŠyPp$mø‡¤>KÄC‚£$üÄÖ¬qI*gÊeW0QºIähªqlàøì¹Ÿel¶Jè@­;ñ¶1¦šF2]WtWŽ=Àñõ²ž‡¯¿%YÕÿ‹šV²U×^¤e”0N%8RR¦ó%îF┽A,wðnVÁîŠçó·[™WKƒúf¢×Fú·=Øl•aiÆ—Ò{ .Ngëª9¨'Vèó7üþ‡ìi Â9'F‚¿ƒ¥04&ÅDeõÅc’ï°R—/÷ˆ'Ír•hœ­ä&ð"ÔJ÷uíi"ÜMAúDV i0tÍî]á—ÍÖUcVÑLø£à =®}zJ[(b<úxz.¯èÚ³¡«Z0N&…„øgrsW<³“mR9¶Î[讆ž¹šs®ÔOémš®<él44`³í8l²ÄëÃÍ¿QÌ~fFwŽvä‚F OäƒÁJ?ÈMØ%ÖU³oÚäUÜX¼ÏïpzcT†½ J¬«¶ó܈Ûãšx­²y´>‘È£2}"‘Gåé°wòs?+æçä›Ì‹¶ˆIýýãâ–Ì/päÊ6ÝP¯Ø5BаsÇ®Ã×»¤?âé:²_ƒ´äx­]²í"ÄüB=ƒ+µLôOXÄM²Ž|Yž­^{R_´/ÝY²kSp¡KrÇFì;›4ò_‘½<À<ü3“BãÖAZY?6Ù5´÷MXƬ)²Y )¥k%ƒ[:»MÕkNNŸ¾Æ+…Äîé´[„ºV¬à éæ0¤[ÌÆ‰Y,æ+ Uà6FH%³³§,“CS%Ù& R5´ì´8RGl/¸l§í.PÁió6Êîè(š«~ÅU-]+–g«ÏÖ,L2—ìÚ¶…aF b¾Éî7æK6úårß°?ëXaªX–Awu^1e‚à PwôoÇ<ÓøÞ»±1¿lóÖÞûµ™ò7ÕG>Ã[åú^ïf¼î¼1¯9Y³,¨CÜw..…€pº8Èz]No 2>÷’ ‘ ºhЉ•2.)ÎDÀídÁ)b¾slõ\4ЏgvÉ-‹F!¤IzÄû#×¢^uÕÃC:weÄ'Ì£ÌxÆ.nù±â°pJßÜóezæÓíï´ë` ¡^Æ#ý]P¢±†€xçTîé:÷Y‚ê3&‰Åc«Å—“1/“é£{µ¦ê›ÖÝ]|Í¡ýE1hš¤G¼?r­4É ôêZˆžÅ>CúðHÑ?Þ/n2É%ÐÔßѳEЩ­4ÊLt%ëÄ¿Hò;á{°L:3•è1•ÒÑ!ɨÔDf¯"øT~9õ4©á<9¸Wòŵõµ…1ri)IxäZz¦§±žä36ôáÑòÏ-â–KãÉ_Ú;Ò6ÁÙ:[,›¯-R8Ȥ‰ð]$’‰"Ò‚ëVé¢Læˆ “:J$D¤€ãXô’‡ŠƒOsíîJSÎJzÄû¢ ¨ž®.r‘Aäñ ììÉ¡I‹¸Ëq TDúŽH†´Òn§þôôÐÙ—K«þºõ! mÔ¢² fÅÖ·v¸LÕN@ájîµ.x5j/A*Qxâµàdz¾‰l裩¡)kÍД…ì¥ç¢Z¾¡ýLè‹ÓÌÌ1ôQ³¹ÞãÊUTk®ú}ÓH£ªÖIDAT­`²ûþ+9›ô×IéÏø¦Ú Ž™ÌŸ“3ƒí(M4<ò³ànÚçšògFÛ½×bzÄû¯e|â±Ùé9ÐN=]‡ ½Í('"¨þî yðî×¾ûµï¾°´Öï"B Gäy„@!È#ò®[Ç­ ë8Ù³ÓlÀérͧ¤\ÙÚ¡E)+óUË#ÎÊ rÀ ã,ôvt¶>îÇêBlŠG¼§Û§Á.¸ŠE!uŽÈžw¹¼Ô«1å]>èt8ཱིÈs ¥…tQÍ<²þ4 †Wìì¼NÎRwµð¯Laâa±e ‘“±7˵eYi1àzVpUóÈ2°Ü¯ZÆûÙyË tÏeH¿TØÑN ñX†¨Uðû48ƒü™NL'ô÷ ÕÍ£IBŸÏÀíþÉ~Á>ªi{ǧýù$™úÜwuÁ Ây1à Öoµ tœËùxuyÊ2!ú÷+š4×N&h†âqð=à©5zVò»ÓUß),·-S…Eðï÷˜ã|=¨  âwòá×4O‘³zxƒ®¯®„ôŸÊÒUßÂ/ÿrÎŒ‘¡‰…Äk½2ÇÁÛ:ÐÍøµS&Iªé³ 0Õ ú‰ú–Io¿wáÍÂtD¡´ÿ¾šÌ”°…ñwD)lÀ¿ŽEó±Åq » DYìly„@!GäDäx!y0oø(Î\((Kò"'¦LD»˜°L¯Å ã-)…ëv.¢ë?÷sMÏ_'}‡ä]·ŽO‘ÄË4u ¤hGbºdD‚9n…ê,/ÎiÁûµùl%ð¥J!*ÑÎöšãgê¡Aˆc”Zš Fc}ziŸ©,]‚Æâ.™} †“q¢AŽFH|‹]4µ(%½§cdgh©†Å8h±Y*ÛÎaz{ž‡-4}ÖÏå㉱ŽýÛ=Ÿo–¥K¨kýÓ+oëáÆLÿl1#tS ÿaÔ—ì~£”ô£ù{ dg°ÝkgÊÂüU 6KÅ¡dü£mƒ[£KèÀjß ö‘Œ,Ÿìï"†ÓÿÏ;ÙŠmPãÚö¡á=¬ñê±³äy„@!GÄ{^ bVôÛÿÜ?µ¼ëqèÃC8®!¶aÐA!ÐÎF »úyíÎÞ(ðj]m<"ÿ=U<\ƒfXË·cØrâ†G Gвi®LbE‘|ÊšˆÄ£¶Þ_*_{}¢ã‘"¦ˆç`ZÓCHd†DáÂĕٰRbe‚²¦bGk1ˆÃKŽízÒsN—'É\Š\RW$€y -yÝÁE—°»+Ÿ ;²‚UùÄ­.2JV¬¨H±âa$ÏÎçQ=œô¤:iŸão8ÐÞO]Õí%ú d‹µ'ÝÎ`o6ö.¬r…õ[|dí„‘búà`¶óǵ¹‰þ~˜6ÖÐãöT0ÁæM«KN½×sl[†ç@¥€x‰N`õÄ‘•¶Í0Œ¬Yd#:;£?:Ü~ݧçØñâÃi ¬âÁÁ¸ûEè:Lè´9 ŒŒ õCÅ kÒ²´ÄÎè€Óh¯ŸH°Ã˜j6¢dÅBëèŽ6È5›DhUJä1¿Æ×AØà2!Y&,¥ÓóÕÐX´Ðúê4Zkœ^F¤Û¤QEõG Wâ.þmmµ ³{›¤tz¾´3 Pàz4,¼Ö‘/ùw=bú ÛfE‚X$Ož hí”Ýï(ˆ¿÷ï~4Ïz ~Gˆª±ˆ²<¯Ý/áŒHäÑýCÿ!V*ò¨ýV*ÚGòôW¶ß© $b{Fäílò±«Ÿ×DGGYŠ6è)Ý ‘G°šãF óMŒn8® [7 .{g#Eé4Ëã/:gsk²ÉnÈ£¤ôÖ§á˵þDÉVëÉ‹AXìi~÷Ô±5/€nÕ:®™…±­›¶ýJ‰›gŽÖB "tíµ˜¾äжN"ºAV‰}ÄÖM¤ë¡­Àa;ëÈ­½¶y”°mFV¯VwƒÄ!nçò¨v+ϯ)p›Ûh»£duÚG jx#¼FvÑÚkëÒÝ «Ï>bÐOdÖ걊Ö^“nU‡rûA¢d5ý Ä>B Êñ¼¶y $ò¨ @7HäQyú#¬S´äy„@!{øà{‚ „~çñ='+è‰Øž1y„@;kPaíïêç~?ÿè3/•í&$(å™ móÿp«Wkœž¥‚Óãœîø\®Ù¸“v'49ètifÜëŽQùø€ R§Ówøà9º2$pŸóeˆ¤Ëý2•Œyg/AÆç^$Ò)¯‹æ]<‰µ¿Ëí£+(è8ÚàËMíþâ´ípIßCŸü&+[2 JðõïoïkPÏM½õêÞ웃H^÷&õH^Pßß§Éñ¼eï$¯^¾ðbòè ÌÚnPÀ{µ?äüž•hG¤«ïKA Éõ%n·ÂW ¾äÅ@Sãh‡044–”ðsrðÇF: Â\âN; v=¸B³‰ðgñhƃRÂEPðŒ@ÀYf‘Íh·œ £ÜE8BW†Xǃ‚cn’<]5r8šª³[Ž;ã¤0‡µ¿Ëy” Õ(ä{ gÁT_ȲßðP+ÓÁCÃÞ[oÎÓ•!Ž`Hò"ðQ%ÂFË4í»u–Hf±îw;²Ïê •{ûý[HS+gL`–öE¡ð MIHá9¢ÐÁ04Â+teÈFˆ¤ÉNÑ9–HØ";o—âÛ¬¿ÃçþÝýÜo{M_ºq_«”r#èÕ]óØ| íP®ú3…?ø6BJÕ6=·<¥íÕˆo² oùi_û"îªVóLú©}ÔzÖÇOéHŸwåI¬þ]ƒrøAò•aӅ‘;Âû#ôœ¬pþy„@!GÄŽ³³W¾Ø©ÐWÐEr‡ý Û3P hg#Gˆ]ý¼–]HdJSMjAîÛX|žCÞµ±”ä–\$K»a"*©?š¼õÀ{}÷àa‹<½ø|càCßß|¡Æ§yl˜JçQpα—9=þÌçrvÇÁlöysN‚.[2ãu/‘Ýå€Ëyž\NO¬Ûœ†Ÿ™=ä<:PO¾4ð§;À3Ùî Ày—+@µ½FUˆz^ó:s¨½ņ©tÕ o€9=~NÓ¹/IZ4-dKÓ¦Þíï¦û°Å@§Bë}·ùWÔWîé:÷÷1ø=6? ÿ|–½}~Xìm6ôáÑÞw;’~ÿʨë¥ÎÏ›¬!IÏ“–}§ýP_膉¨LµŒƒåŸàÔaó?««‘ i5‚ã"¨é›ÍhTÀÖ×Ú«zaYMzµ8P×€e %ç⯶Cê AHz­£" ºÎ\$™3¥¨‡‡G©3%Ǽ,Í£šŽëãÐçcÇ—Iš˜«c±”â ¼H÷CÀQGµ\èÒ"Ý©fª³Å³±qÊ šh°[N|:FHrä0¤a@Xa’§:(E9ÑE’êy×–<þ¯bè ¹+žû9Mû;f‡A³ìy΢ûb–‡ß Yj')á6õ~$ÁûÔCR54–¹§qpö>C]$‚‹ä¸ä^Éóð…¼b¦çÉý·®Üõ“k “*žG³æK %±’ÆXs¦–¤tz^IauÈðð¿Ù“Ä¥´Å´yŽ&¼§é˜Ô}‚ÿcXÀsä=QH†Bê"©‚7Òfh!¶Ó¹'4A·Ka„=Ô;¦ÒyÔ6}Ü9wå×Ð<ê“m.-¥Ósƒí„ЊãSìߦ©…:²3¾öL³„ÙîQ¹ÎÌ»‰Œ]mÓ>ç´‰ºOÞ›j%²Ç=ÓÐ\õ‡ó.’¢žÖ©9÷”‘WJl˜ ÃVü KÆd“½5⽷ظÆ{ÔúMßS8²OØÐEr‡¢<~c¶uޏ¹wï}Nÿû›×¿dBû¨Ò°•ùGÖ¸?T¿·yýØ,UÁ£Oè"‰<*ÐEyTžþ¨RŸûˆûî:ð‡vÄýóȃõ(ÐA }„@!Gòûîwß}Üg)GTM ¥(@)JP P €R” ¥(@)”Q§›öð·§þ›Ù±S¥w¯ÑרÒÀ«ÊòYÚìââ’‚éD;ZþaVŠà¶—¦wÊÊó÷~߆»\éó›õ.¥°(§ºS;(%Aï7×c/]h­~=Æ#×§HÍ´!Α\ÃÄ&¢© ©±ÕÀÎÆRuM.[Þh¤z;¥x99’’-6#Qª÷l½­y«õð³O.–”ˆ•õ(_ßø½œÑiâÓ¿ZÞÈ[¬õEº¶lìÀÞ©i¥ä“ÄO*ë §Øû‡íås'²·Ð{;õ]2Ó‚ÙÒX¯tK'ØÛEe–2£¢ÂÖD^âʷì¼ìýW|e¯Üfo¬‡ÒÙLaçÔ°RĘ–xÇ=uÝ”~>ÑÊ:Žkæ¿ú·ë|~ã iåø?#r6²ýéon©}ÐGÆÄñU%F¯›Þx+±Ý )I¿®O½tÄð66z͜銵±æ4$zX¥³ayÝSÛ} #ÞÔ@klØI컕Œþ#÷e» d!™Èøa:‘¦÷:øÁï4’/L‰ ©íÖÕDKõÍ7´ëò ½ ¬Aذ“ÄÎxE¶“Ø75>¢•²©žÉvßÙˆ%£œsø©ÆÈ~åS&“|=:t¾C™)ÓH€F•QÎvërM ù\êXfX¼Ë¤³1R´ßyj¾O‘ëmô/Þ%ÿðMe¯ÿÓÛÓM O—™þÈ(™š”‘¯ÆS·oJ;¬«áà¯V7^ò«JñÜ’Ë ŒlHØ55ÆæcWŽÓŸ²½JQ9å™'z“š›Råg‘Åu:å]A‘?cÞà¶æÏ†ÃÆ{åóÌJø\ÊsG_ÀLÑü6@-hÙh„ÔÇ&ìlKÏ{s:Y8}ƒâ³dÌiþú•MWÇÅ_S,bdbáƱ ­vê¯Ò¨É³On2·°>åz$'ÙÍD­“YÙb¡˜«XÄøØ…µa_ýÛf}½Æ«}gëZ¬ÛŽS¦WF|-lüëò±3WÃõèºäÚ­ °WHˆ6w9NJP €R” ¥(€íÐýF›Dk€2æWR áOs ”ŽÊ} Ñáj-DшûGr+¥TÏšñÑçðÇÑ‚]Ÿ9 €«d¥€=VŠÇ“âoUU<ÍÙv)ÿ(©Í8MúMå@-Rví5W]ó,ßÃg·Êv K,€‡ôìã]áï¹àÜL0Åz—•Ðl"~g.Mç"³3Q¹b£v-Z'RÖÑènª©-9-º›…oØEµÙ§øVx4Ϋ?6åžö³îeÃù,M·=ûԻݽßþí.Û¶è>ØKýÐ&uŽnáVµÏn2 ûjR)öãWØûÏ2Ñ4åùW‰Èf 7)IV%l²áì¦3‰òyV[XÍŽ>[õ7P;J±ŒÇØ{âø¤[„•JÊùi$°AgÎ\qœrºÒ ´lœ²å9„Kêl¥28ëÔ¸R -ÇÙ{Œ~í-ß@›BCK{f* fÏnס¨…Ñ™<\¿§Øüìíët¢,ÀÔL?]÷„¶º‚>]E7pºŠ¹èVž>…d+ø“ðBÙÕìSóSŽM;òláüÁ>Ξ.9©è1§Ë:‰ÓZ·¡-á£Úmk€½FC˜œ¯þ®ü-yкԡ“~Íw7N ºqJ•Æ]oPJ58>FËA)Õõ)h¹ý@ã€-€R”Ýíà’èÑñ>g¥€Z§d"ë²ÅnÜEýìòA4âþëSÖêÿyx7õŸDîC¥ÄF­†oÚ‰â3³(6?_}ùŽÐ1OÜy9MÒòìL4Ïæ¬†æÒ3üÉøÙàìLh½Ú2ð(e.ˆÏxÛÑÇÿZ¼v`¤gíxùä†c´'×z;LËýŽÖÞ¤˜3¼Ôɳ'„ë£-÷Ñ8e˜”L]_!³’"‡Ä^ʲy‹Ÿ/™VÉš§+QKQe¡–[2Ò—î£>ůj¼I’,â}Ô(ž¼òsÊk„Í?rT$âᢸSzqæ ´å>êS)+r“J”—¨~ËåÍ7Ö’/ùЖû¨Oq¼—”ÓžE²R:I¦-j˜(±ÎʨŒ±>&xÔàbˆvÿô)õ‘9ù’Z¦—¥é­²Ð:.Å^›*ä…j{j©½ýTHž\D"ìG›»‹âØ ü…ðÑQà3ŽS¨jœÒñ™Ÿ‡Ž±Ê¾P †ªS "3Æ)JP €R” ¥¥(<`*Å%{ˆÆ¤:wCÅ éD»R&PR#°i*kßiåª-ªh‰³‘ëwOäÙâ^^6߃Û|ïKŸèlÚâfû窴ܵsÁm…‡ÿû¨¶Ï>&Ú )2ÇSµ¤C3sÁœç3+ºÎÊËlfFYÆzàUíö¤B/§D$P!6(ä³gC·”i-9:3‘ØìÅ;:»ùèÌܲ<3JÇNÒ¿™‰“¾/¥úv+43{‡Ç ÍÍ,Þâ½Th.Í磳ܯ|p–§Ÿ÷Z)Irb`ç¥HŸ½­7AÑ'ÚCjœÏ!ÒºñìÛƒ1ZV–±ªno¼`gÝ~{YD-÷»”Ø ·Û¸M×ÀcìÃަζ½­®¾›ÝÜ¡³ûÕ^·½?&lDß³»{úz¼”ê[[Kç/Arvœà«Xs ‹¾p¥×ÕÎüZxûÐãƒÑÒÍUóñÖãqãÁaÑmLº)E¢¯¼»A¿÷ç7¥bœŠ“5½kƒ‚Ö›<ÖÃ-ÓzaÑÂçÔpU²äDoò2N™’¬V“TœÏc‹LJ9ˆÌ’Îîw‡?=Liq+o’l9Š[Ëê ß¶öìw¿&b,²°]Ñ'”`VÙŒŽ×âÿ\Dœ·TMÇv#Zõ΃@zaäo(KGyìÛ7Òíw6çé[]ÄIäó[F\£…1# _ u„ $IHÒÍgöGŽêŠhvóô»ìŒFŠ Ù ë ßdZyñ‚­kXË(#©n +eâøä[ÏüÂm»#¹ãµ¦¸3 ›šªÅÜym­Ï×\ç#îÕn¶°eþæ­¯¬ôud™¾ñnù|‰n”Ž•„ÝoÐM©`ƒÕ3”ÛS} “›/÷ÊR‰‘§nçùü8ÈcßßmËùHÎDqžª%t¤®…ŒZœÎ)%–ר @,+Ø(‰øá‘@¥±AÑ5úsm¼\°e¡µ¬G^vL©Œ'(¾›)™&[I=1Ï1ßh#.¾%¹§E~Lé ³*S&‰}|Ÿyk>µì:›ŸZ$÷…Wæ'ÚxœÏ§\äò=­hZž¼Ã—'Ú*h[Òê¨ÔiRæ¨ó?`¶l— “úŸU„]ët8¤ÎµOÇ~º´Ãu1ö)óÍáŸßó£_œrëŒX§?4y€8CYìã{ƒ.ÞçžDüìþg1P³ã”9Ô=°õú7Ðö3N)O ±Íq P €R” €kŸm@ÃÇQ+J¡KØ5CßÕ¡óÞñ!c~¼ð¯™>…èw°‡j„¿$ïxù¿nŒS@ŒÃãÞÒF´ 2 —¾ P )/ —¾ P±O1’Tö‚R@¥>EyÉúϯ}¹ÁÙXÑd&rP)£Ýk’þ­wrC­SiET!¢ ìI¯â)yU£¾÷²ÏMTÞ»]å;ôùèÚRG­cW;%¯ê”ÂïgÎR>žš¯ŸÌ†7ä&g½Kš]Çþ€Ö \åí<_T@Y&{hj£ÃCWbuí6½þ˜2ÿÿñ"ç^HÊV»ä¡ÉüÁÒî#·¸‘o°™ÙÔzx]69êÕõbï=Èe|ئðí–¸êßS2ÔDñÞÖú_¤W†çiž½ng_¤S߬¹½±'”à.·Üõþ¾ÃƒË|ú :ÿI^¤»ïƒÖ^Þe-b}ÕöÄã¢->vðDD[/xã”a¿÷ÿ…╪ü=ÅãéšrR’š¬ìíû´°öúAŠ“ÙLé’böz5d'Af}žM4qk3­)Ó…ùõ¶Y]/x€(ï!~º9>4Χ«§˜m=—œ¤g5›®'_ëÜÀU"ý²Ü„&Ýü†Mé£4bôk¯2õŠÌÖÄ3Þ”°ï,C燘X™TnðOöªvœb;ŸÌ¶Pê–'HóÇŒ.ªçÉ¡²ì›þ¶´$OH§.S‰÷Ò”)]3ý´ºUš1êëtB}Að¨ÁÉÖ¤®<@ŒLç‡&oÝP>CT¥RÈ2·_ Û&ÛèÀÔÂL£›'‡â\î±/•tú¨å™e]pWÝò„*Hu>¯c¿øâ<ûTà'¾…5eªm*ô);©ëìùÁ‰_ N?+œ9îqdXµ¿ E/ᮃZá/û®N”ýK8îwdØÆ!ƒcÃÅÏî*y»{:Ñì!u¬1Œ²Wá3qß•FÞ£“cD'ÿëS…ÏÞjG´`_Ñ0\7Ì^¯? J8ñý éëþ_ûTKôöOÍÐgËËþ%{÷TŒrï°ƒj‡x5£Þ=òÍÝóq ¨òJºä[þÚªQ í ªS í 0NP €R” ¥\%—Á3V’Ùi¬ÊÀ°UbÊÒxä» )·EÔHyR×[ðóZL¶7')eûÖ·ÄqÈ´šÔ2… [õ^×&ÈïTrÚñ: â)4Zì43·ÂêçCù–ã…½s…Ö(ZÏ}aÚ,ʉé¿f«¾’ZsP\ÖÖw§4^{ý1uû˜‰õhZ2þ÷oñ¸î gs.œUCT¿wöAmÍh£Û˜N¬Iõílã²Ëy;ÏÇUð‡Õ?÷tÞÒCLL”iê½Ú|ïú]ÆJI¾øäÁ¡WÙ—_¤ð•Ne:Ó>Üóf‡7J+<~¸[MLélí]a mn )qÌâŽÚÅûÔt“¼‰\ƒ %¾Yí®²W†¢ôª]Ä%/t¶¾Z›ÜMßjQnŸyR±õ³§p'OD¨®·à'”¦&ê¹£ä¥K/ŽD(¢ùV¨×À£\y ëGÓÆîyñwµŽšŽS‹^·„iyЮ ôÒ×iÁ~èñLT)ǦexHv~qôx®•WÖ§Åk;E¼6k?uûaKgÜûŠðv8B±§âìö>X×Ëw\Ö5§ÈÀ¡v‘0tEMZð‡Õ~ð2+enóÞ{Ÿ±’ä(™èà\tÞä«5ÐÁÿQ¦¯±óô³õ”¥N‰»úÉ,S’î&~„.X^/ *’ô¾—bJ'‡L«®8±Óåç•g®Ø¬lÆÏ2ÑëÖi¡å†Ç&ÿò¦¤Ä&§øžEy˜ «E³ÅÎÕm½?™oÔv~ÈKS.vøÚÌ^JóMka2jG§Ñá¸éá_”:uàÓxDíW $³>Ä\8]‘Ì6š:2_þž‡eå Ó-¬ŽÕÈ6D·>±­<í&k?uû³‘¯Šx\‘]3Éã½E¿Ë|ÈÓ ²lŠÀ¼î¥gŽæÿBXuJJ(°Þ·U²ò½Ã˰&ãiw÷‡½ŽíÆ)‡|GüÝÊ7­¼µá$þÐ&Ž•·r.mš¿Nñ¸å3jüð/èè1ñÈ &§èø?L÷ËÉBX‡¤¬ëèQ5V™ 'Y¥DW¶•F©Õ7ôâUúÀŸyñŸ¤4ÛÃZÁ†ÎV pmpA[¯ÞÏQ2¸â§aeÛFX-Õ7mœB¤õ)òJèyº,4#êDÊÚDÔgç¸ÂÐÞ3»øÅ»þ¤•m¿XžèúO…i&A¶zÝúd¾­ëŠ_êöñÓßsï³rJ\7û'©Uô»Ì‡Q¶Ò¦ñ$k ‰ÜcÞw‚?ÓlQ©?9:Ékñ2ó«ÄÛZìÞê©fœ¢trbÉôÓº¤’¯®Ô8fõ[O7©;7DrI s^bËÕ¸dsçÕLŸ¿¹46Ù?|Nö¨·ÅÓÊÚzË|3´X/÷¬Qß„^éÜIµO™¿f’*Ô)=”Š>Ô¾­½ ¼8È•7ha}ݶªÛǦ©U·Û}#ùóýÞʇB÷&’‰þæZºß¯›«÷§A_¦Yú¬7­¶ínôTšÖƼ©[ž»ž–Ù‰ª§u¬Æ1óF ¿ec‰•U-Ýd÷«£aŽ¿ÃjªqÉ¡#õ6z­,6ù¤0”Øæ•BêJ¢wY1u½¥¾Í{Òr[¤ò#oœRá2ªéS“4ku|´)°ù°é*0°Zœ^[-]¦®¯<^[Ý>¥%u7#Z(ÝMe>ÈÕøðïÓ¬nðLý|YÂТ?Mô¯ۥϞݛ¿gÏ”ƒMÎÝ”Ÿu4ËOOímD}ÑÑhU¶ÜŒ£E>Vx²@4}`·¿Ç—Êaï”2c؛̄«}î¦x:’Ï79öT)EæòÒ!þªªVt#׬]ÏQкë>¥V”jR9à/„à³_û¥(@)`/¹qÉHJùãxJ¡%4øÃÊáãìîî|¥Œh”jáÚG„H4¹«“P&Žç–ïã>%ð¤ýD¸ºê]'Єû¶OáØ”`¹ÁföÐ,L»?c§8¹MÒòjÞjÿ”‡äã ƒÙ­$—K'Ö umFäŸÜ/ã”É"Xa_-ÙÛ(¨M{#Çÿõá%ŠôÙÞ›Á +½î+ýüneËŠ<Ñ6B³î¥äWÈB†ø‚H×d¤Ç ÑWÅtK=ÑꙎRdù&}E”NЧ_‰çš ¬LpãfÇáoàQSŠçÓøE;%ºÖÚ´hƒDWöY1m 5° Ë#ÞTtE¿{”“ð;…ÝcÞîOWѬûdœ¢tq:PˆdeÓß|«¤Œ.]Ü7téàÌïÚZŸ¯íºŸ~O‘)“ÒM—=ÔDñœ¬ðcJeŠÁ u-d,K m¥¸ý¡ÿ¢›þ“Ò¥®S±O§Éå[ ët84¥Þî¾ðÊü~by¹w\Gñ·ä‡–֥øãÜë³;]ûÜ+ã®7(¥£y¡”êú4/Æ)`Ÿ÷)ÈïªR òû€ê”‚À8@)JP €R” ”2r_ž™Y*}¦ñ.¶Œrë}êÎlÍ,½»mu§_dÔâUÞ§[ih÷çî%•þîùßë3]%ÏÏ-ÞlߥL/Þ0–ߟ™vXÝîîÙ/]iSÌ„°¶ú”û×8Hrtf.˜cGöâÝGj&”›ñ¨43JÇdå˜?™‰ŠÛ¯W½L)Ës3Ñ´xþxȳ™]>Ç-̳·P›YÍñGœK¼\žõPŸðuˆ¾jf6˜óCë¬`°KYéê\0ÏóûÉ‹N¥Vúå¯>–&ê9ïn Jô^­î|Ñ/¿ ,O»»/©ùg:‹G|wï·û…Ë6RrçDû¯º/ŸøÉ‘õñlïµ_|oZ±Id½Í»©ÄÀµÿÈ;®þ««µž‹&á¤ÿüI²G´@"å…’³f•šºß#-N1&­­´I ±Kô‡j÷—ÅŸ¦$ÛS„ˆêÿ&~i²}DËL¡¥!9I›sUð¼;gÎ(ù#x|Ð/F%‰dÓø†œð›d:F"T<Óáä^ë(WG«oˆüN äóÒ—íÍ^mRñü˜Wgäñ§©Irç«d©åÖûì ÷SY’C¹bÒúRŒcÒ;Çó訅¿? ¡ÔØÙg ªHÜÔ|ÏŸrÐYœü{«ÖF´@)JP €RÀ#yíSx¸Á£Â}ÏïƒÇ0= ¿¸ë“”0¢P ¨…kquÀ#þëç^3Rl@)%¨R¸EÌŒÖÂÙg3J€†´<ËC-CüzÊç> ¦Øâ•ÐL"qçå´V@ß×ã”å~GkïW•é±ßâwE†ìO™~6£Çs­·Ã¬Œ«µÁûòìã)œ|VÉš£ÿ L;Ž_aï™hZÜm¿ø9¢OÌÊXr´bÅfŸŽSòt„D(F‹Ÿw%‰ãSn:ÅJ0¡ð…#}°¿”¢_ZÈâC’µ‡k©=·u°_Ç)&J¬{Õ/Wü\/´–®X#Ú}ݧ8.Å^+„Tœä‰¡ÜO…,Û”,÷6¿Rú<" ¿¸O㪧ì¤ôRª)} ”jû´(Æ)}Jä÷U)QÕ)£ €q €R” ¥(à*¹ŒÜ×þLf{½~^1(,kŸ©XÇæªÅbêÔöÁdš­ƒÞ9NEÏÞøƒö]ÛòÉ ÎÆ­Š©Û¸«¨ºy»ù¡PJUù}òÑJ¹|vy‡~מ%n¹Þ·Þ ìÞVö¹ÒÖú¬ÛØü¥ÿYsOT½Ûü>´ê­wØ.zÞÎ~Ò•*æïYœ™½ó[²2yÇÔü?jþ-'ÐÜÌâ:·µþIIwf³¤åZQê{híMPxàbM™w¥ãD„ÛªwfVcÞ–2¸EëãI­~óAŠèêdœƒßaï`~9í}QÕÝåN>µ ù“ϵ„•’z_”Ý«úŸÔæ­ÛGÂZÞ"aëUnëP†'€È/l}Í=Xn+ÃÚl¥·õƒþn =Þ1.¶é¡bÿ¥úýüàåBЋê—ÍM‘~gkï†Ú6ZÓöÆ^òñÖgŸ]ä÷ɒѾũ¥%óåï‰`1%ÏÁlä«"‰‡C¦U~'¶šÿGÍߣ4›W¯6 u|Y·óæRr5kõM’ÈùsC]¹šç§É@1²È$üQíò=M 6VºCó§…ùc3TòE9ί(þÇ´y-†bò5ïP‰-«qK[SJh¹Œ,¯W>©~¯’µðl,ÕÛT%ß‘]ižæhïÿ wòû°6³úWmIŸ5ÖÃÚ‰‹)»tµ{êý®QöUR˪ùÔü=ʼá‚M’̽t™5ùó<'P±¾šóçò+Zï—×|‘”X4áOÑ®š+(®÷‡½6ù’WÇ)’âXËOdànªWª­ÄñIgÁ–±‚-^/^Ú¨#5—‘Ó?D¾ôù…ß¹â¶k¶$-ß‘šIâsöü¯pÉG´$µ\~ÿxŠüÃùÒaŒ,ë7úÜIkÏÔÈe9Q,¶H­j>ž!åmPBÇÌ¿¹–î÷«J÷Êšær)?ÅØáLKïÄè´¡P¿PG-7¡*%ÊŸŽË¥vÍW3}¾æÄ¦àµ¢ç ú06Yñ¿¡Rh›°åoŽÓ*l™l=—X_+z¶fÓõäKcc£$oÖ‰ð»A׎|¿!æIDATÅ©:z È,Ú OTÛ㕪òûüiÖwÂ7˪ÕímÄ•±ÈµˆFWòÿ¨ù{”±œ™Þáó|¬õâ^—mTÜ~«ä*Ôçžœ©Ÿ×\y~”ó­öYóGµËG‚äò¡ªWN»û-ë^>Kê³Ûšq´ÈÇ&Û·³•ˆªXïR9ìB)sùNý×Õ¾™FeF:´ƒ?Û0›{òž92+w~F éèF®ÙQ¿_wœµpö¹k¥€}¢MÁ½ºöJP €R@-°ù—7<­T™ßÏU­Èïî²KR@% àÚ@)JP €R”” ¥(@)JP P €R” ¥((@)JP €R”  ¥(@)JP €R€R” ¥(@)JJP €R” ¥(M ¥(@)JP P €R” ¥(@)@)JP €R” ¥¥(@)JP €R”” ¥(@)JJP €R” ¥((@)JP €R”  ¥(@)JP €R€R” ¥(<¢Ômžu8ŠfU(Åñ1ZT×§ UÆ)àÞô)I´¨B)óhP•R0B§(@)JP €R”ÀŽü•ï”(h4†IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/property_display.png0000644000175000017500000017270412032647206024501 0ustar ebourgebourg‰PNG  IHDR$ü¯šü8[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì ÜU×ÿ_¡”1QiTÆ„J‘È”R<%ŠPä‰B ©”¨'ÉLHT„L•ÊPDJH’)C„dªôËÜÿ[ûÿî÷z¯é\çÏ}ß¿óésÚg_{¯½ö÷Üg[×ÚëÚ+Ûï¿ÿþ_z‰€ˆ€ˆ€ˆ€¤SRG¬¤Š€ˆ€ˆ€ˆ€üM@Æ–þD@D@D@D  ÈØJE¸-" " " 2¶ô7 " " " ©H@ÆV*•h±¥¿HE2¶R®D‹€ˆ€ˆ€ˆ€Œ-ý ˆ€ˆ€ˆ€ˆ@*±•Šp%ZD@D@D@dléo@D@D@D@R‘@ŽT”)D¯_¿~Û¶m ¸æšk’9¡?þø‹/¾¸ä’KÚ¶m›LQê." " "Q„[¯½öÚÔ©SÍLN9å ŽbÅŠ5oÞ¼L™2ez!z:gG³œ9sžwÞyE‹mÖ¬Ó´çÍ›„òåË'ߨÂh[¶lÙ±cǬpD@D@D@2=0cËL>OžüÀ$MŸÓO?+êèÑ£?ÿóÚºuë—_~‰´;ï¼Ó,]ºô-·ÜrÁ$M¾z‰€ˆ€ˆ€dq±­"EŠôìÙLo¿ýöرc÷íÛ‡½uõÕW'¸ï¾û­Ð0ÉÆVÁ‚Íì˜ÎöíÛ»wï¾{÷î7Þx£råÊçŸ>•5ÿy%Âd¥ƒˆ€ˆ€ˆ@F$ÛØ²³ªQ£Æ<Èû´iÓæÎËŽÛwÜ1räÈŸ~úiܸqÔcнùæ›øœp]|ñÅ\­V­šb»à75jÔêÕ«±“î¿ÿþ *˜¼¯X±û‰îxÔ*UªÔ®];6ø¨·}íp\šÉæiÀ˜;ßÿýµ×^›-[¶éÓ§÷ë×ÏÕׇ]‚uÅUâÉ .Œ½RªT)TÂRÁ‚1½0ÚæÌ™ƒEÓÒ2íQ±”·lÙbjŒÎ8½ÌGTÂâY²d ¶Q•*UŽ?nLO®Æœ‘`ß±´¾úê+`²M ½÷Þ{ýY®†ÌÂöUAD@D@D £ˆáìaüñAâ_ý5ÁL|$~‹(r;=Œ’›nº û#wîÜ'Nœ6lïì¼õèу6„:‡þÎ;ïÜpà çž{®éE¼Y5ÂÞÂêÂ^ÁÎxä‘G(¼úê«'Ož¼ï¾ûš6mºgÏÞ1¿c³ÏöµÃ7†Oˆ.\íÕ« úÌ3ÏüïÿþïO?ý´xñâÔ¼ÿþû˜b 64Ýc¾c“ ÏdwìØáÛ©¯X±"6¥oƒ ÙyÿûßÿfÖ¨Ç%¦€¥e„ãçKæ,¼c©FD@D@D ½ÄöláÔéÓ§þ!¼/lâˆÂçdÕÅðêÚµ+†¦ÏÎ;wíÚÅ%ÑeöÙO\µj•írÙe—5iÒ${öì4ãê7oÞÌ;ƒOQ˜<»wÆg`?á²}ÃÙJ[@f­ZµøˆuˆÑvàÀ6:Ñùœsαmb°icü[ÞÆlVR‰ üvÞA³ó¶4$N8\qX–4øóÏ?yO‘Yx‡Sˆ€ˆ€ˆ@ºˆíÙÂRÁƒepá…²[çÒ’Í;㛡cË\5^%ÊØFD\e/Qib°LK‚ºØI$èžlÙÊ!C†˜‚ydze?:‡³•Î.4¢»pn-_¾|Ó¦MØy¸Ðœ b– §‰Ž÷6®[·.VàG}„=Ç‹'»uëfÌ&Ó8hv^Ql¶â4橹ú×_™BògáN5" " " éB ¶±…}sã7FQÎÚø¨Œ½Edº9VŠ u_ .ÔfÎ{¡B…L tj…Ë·¯o%O…ˆ={öš5kˆÁâìß–¾•œÿÀ!\ ê…Ç‹ D¢¬DãÔ‰o¾ù†§lì¼K¦sv®K{÷îíÝ»÷‘#Gî½÷^ð¦Ö·o_Û&™³°rTHw±·£«ˆ•c #¬ÓËn´•,YÒÊa³Ì¸pØ—ÄùD½yšg’9¾ëóÏ?çUû:õÔSm_WCöàð`ÙKÆ4$üWYãÆm}Ì>-]dÿ‘©ðŽL‡(±úõë#•SrÐìœm(ãÏÃÒÂt»ûî»y$Ó˜¤ m›%yV‚ " " " ‰@ ¶g+º–XEl8¾òÊ+ä¥!Š [ŠèΦ˜1§Œ(ì Ž¶ªZµêgŸ}FP<½L;…6mÚ 8pñâňµBæfž$_58 ‹m;,-Œ$ž ¬]»¶oö:PéÛÑV²GùÜsÏaå`iñP$¢0øˆB3‘[¶™-ÑψW\qEþüùÍéeË–µW)ÍÎÙ†2ž3æËŒm÷ÁP‰#h0&NhÑgá®" " " ‰C %-f…Ù„ •ÀC‚|ÄsÃ…-Z´pN˜ƒ8²aРAØCl>ñÄv£Š#Ý9‚‹y^Dƒ‘BÇœïà”`Ë\jݺõ‡~¸`Á"ͱ……DH>ÊØx2ÛÅUÀE_*—h}\Vh‹õãjf?r‰xvó`&º5hРeË–ö*…Ù9›aÒÑc”íN×ð“ >œmÇÑ£Gc+®Y8%«," " "P²9ÃÏSP3¶öðZŒå|tѤ#älÜWœ(ÁÓ‚AÏ riÿþýtwÆ›‡¨G˜9cØy´aKŽå Šš0a&TH¯$_B=ôw)}vv\Ëo;Àôä1fa„LƒYX5TH=)ìÙ²ŠEÄÛDw™/[ã,àøáå¬ /ã² 8æž}‚®RÉÒb ˜ê…ÏΪʱ^öO¬R\eöRÌÂŽ¥‚ˆ€ˆ€ˆ@êHÉùÔÓ2ºdÎ%‡GUE?È4ºð4k™9f‘f¸4ˆ€ˆ€$2ÔÚFô3R<‚‡;'$ Ë·côJä3 ÆV\ޱèòCZ¦àìÒq!Ô%$HSc+ ú©‹ˆ€ˆ€ˆ€dh™m1CR^D@D@D ó±•ù¾SÍHD@D@D ÈØJ /Cªˆ€ˆ€ˆ€d>2¶2ßwª‰€ˆ€ˆ€$Às¶fÍš•@jJÈ8š5kƹåFß@c‹Ë´Ë8“’¦" " " "ÈaãÔ#ÌØ¢5Êœ}Ò²<`Ôä´Nc‰€ˆ€ˆ€ˆ@rt½¿±«{ cËÕ:]>>ß­MºŒ«AE@D@D@D .x©Î<óLWÈ»€è£ˆ€ˆ€ˆ€$‘€ïŽœŒ­$ÒT7ˆB@ÆVJiÝæí·ßþñÇÓzT'" " " b[7nÔ¨ÑÞ½{Íè‹-ºé¦›vìØ‘ Ê„‰¼õÖ[÷†n¨[·î+¯¼Ö4=®õêÕ«W§N{ï½wüøñ'Ož4ŠÜyç ,ˆK©>øà矎«‹‹€ˆ€ˆ€$&ØÆzïÛ·oøðáé>Ç{lîܹ½{÷3fÌæÍ›Ó@Ÿx úyc]»v1cÆìÙ³»uë6iÒ¤ÿüç?FC´½îºëÒ@[ !" " "€"[§žzêçŸþå—_º&0dÈ6mÚÜqÇ@ÖúéÔ©S¿~ý0;š7oÞ®]»-[¶|üñÇ÷ÜsO—.]víÚe$lݺ•õë×oÛ¶í÷ßO%Â[µjµdÉ×®Ù²e+_¾<úlذK;vüôÓOÛ·oߣG>îܹóᇮU«®8êM_Ú|öÙghE}÷îÝÿøãSëèþûï¯Y³&6œ­t 1bÄš5k˜#|úé§'Oþÿ‡P:tèî»ï¶]Œ4ûކåÊ•»ë®»>üðCãÿ{ê©§¾ûî;àßjÙ²%j<÷Üs¦}nVÚ믿Æ›o¾Óí¯¿þ¢¾gÏž5±BTHG‘Œ-¶Æ ,8lذ8uÍž=;[f:_ýõĉÍ%, l&Œ­Ë/¿|Ó¦M½zõÂÙSªT©•+WšÝ´Ã‡côà-£#¦ÉóÏ?ÏŽ̶mÛ‚,;(-§M›†ÙACåöíÛq¹aZaºQÉû9çœCŒ<ì¿uëÖ™6¯½öZÆ ûöí»víZë©zñű{¦OŸþçŸb™!œ[´hqñÅc5ŠáÞ{ï=Óæ“O>)R¤Ègœa>ú¾_ýõècâ®É|3*^¼¸±ãÕÄ)Me´'õPÓjÕªx4gζðŒ–8™FM¼<›ƒ”óåËgµÇÔÀÞâ#Æv]°3ìÕÝ»wS~çwÌaö\ÅËõ)ò¿mlcgÛ_T±bÅœ^¥B… ™6¨adí|iì*šK§vš)-Zô‹/¾ Ì¾ÞñãÇívJš¼[¶†B˜>^1áÙ¬Zµªóª·Œ|Œª .¸Ày©OŸ>8ó`Ȧ¤âòêæìÂfè¼yópŒmܸ›’Kñj┦²ˆ€ˆ€ˆ@Úˆjl¡~,lö–ll½ûî»8fxÚŽØðèÏ'.\ ìëïׄ/»ì2³{èÛ ÿÓÁƒíÉ­xѰù\-©¼òÊ+©ÄdÁØ8p QÆÕÌù‘í?ó‘' _~ùe>RÀkålã-ã½;û쳱휗ðä8?nÜ8¢Ä0¹¬™eÚXÝl|uÏ<ó ±‰K³õqib{© " " "."m#ͰKؤ³Zân¡œ+W®¯¾úа$6æŽ9b¯†®¹æÜ`x‰x´wÔÂ… ññN ÕÒ¥KC:†_”!` [{ˆ}IBÄjÔ¨aº|ûí·Tâ?[¼x1›‰Tâ÷"‹}I£³+ÍDl– üG–Þ8âúmoƒýPâÆØ9µ^@š;vŒH¬4L%>ÚF¯nVæo¿ý(&Åö% l@[DM¬D@D@D@Ò‘@ÆZbg`¦u«W¯ÎŽÞK/½Dø6›b„½óà^”™äÍ›—¨y|KD¬„>tèÐ_ý[„÷(|Û`Ù°O‡1D@?6mÚÔnöáuã´° `¸dFwŒÏ1tŠâaC‚À|eÒåý÷ßGI®âˆb#5^¾™ÂñØÀNÈ’ÍàƒkÝx“ÌU¯n¶v!»¢<Šˆd¢Ðp‰™°­˜šX *ˆ€ˆ€ˆ€¤;l¿ÿþ»¯xžš5k†/Ç÷ª­Ü¿¿‰Ö"Ò`âŠs–™AQ›ð2׎žSvyR2þüTòeÅŠyøÑÙ ®2Þ5Ì,BÙL¯pÝLK˜¾F ꓯI\j«±ˆ€ˆ€ˆ@=úÄnÁõã4¢âóly‡±æ öM\–¢0;Â--ïpQjÎ:ë,kiÙöèfUµ•P;ÄÒ¢$¦ø™œÝã-#ÊZZ¶on¦UÛZZ)¢‰]T%G€|ªê‘zÂq±Ý™"òÙñ´Û)"0ɺ¥¸&)2 ðÈÆ[™l&zU£æó¿pO‘×Թߤˆœÿ’TÝR^“ÿÕI%#èÆV×ûs¤g¼a[)†G‚D@D@D@D yÝØbv1ƒô“G@½E@D@D@D  $7@>U“hÈødleüïP3H`2¶øË‘j" " " Ÿ€Œ­Œÿj" " "  L ȧ8=oLq™(" " " ¾äÙòÅ¢JHQ­¿þúë·ß~ûé§ŸÈ0˜2#KŠˆ€ˆ€ˆ€d±·=:qâÄ)S¦`f‘×ïäÉ“$éãcÂ!i4© P1©$" " "e Ä6M^zé¥Y³fÕ¯_¿E‹dܺuë¦M›W§NvïÞ]˜€ºI%,K †±õóÏ?Ïž=ûâ‹/~衇²e˦Kÿy^\}å•W¾ÿþûܹsרQã¾ûîË™3'—°{Î?ÿü²eËŽ?>Ožøàu×]7yòä#F˜;vìX²dÉŒ30zpƒõêÕ ‹­T©R˜> ,ˆØæðáÃÈß·o_=ýùçŸÇ–¢/‘óÖ[o]uÕU6l`\*¯½öZ,°3Î8cë¼óΣæå—_&¬OŸ>XW¦æÐ¡CÛ¶mûã?Œz4 óeòžvÚi^U0§~ùå—[o½õæ›o®S§ÎgŸ}†uÕ¾}{âºh|úé§÷ïß?{öìóçÏç}À€X9_|ñÎ*+*¼ ò÷ìÙƒüÒ¥KcKáÛ²e n5ºc{½øâ‹ ÄY…½EMÑ¢E±´Nœ8qýõ×ó‘¾û÷ïß¾}{íÚµJ(‰?Ìk5Z}T'óuÎ9ç0ä²e˼ïܹ“ÊbÅŠñŽƒtìØ1LÓ’½Bl©SO=Cç /¤ÀvžKHx°hÿÎ;ïÜ}÷ÝÄã#/—‘P¸pa,-Ê ]åËGôa{‘Ì~ýú=üðÃ7n4•(#cË‹K5" " " ©G †g [Šçû‡â܇B… 9õ0æ®#S¹k×.LTt¶IN‹Šî 6lÓ¦MD9NËM‚ƦNй6tèPÂü# Q3HA1<[X 4`¼gžyfùòåìt5dȪ®¾újœU .$®‹½BQ•+WÆÿ”RÊ]sÍ5ùòåãAȹsçbÉ1ñø!‹/ΦçêÕ« &C=¢Äظ¼óÎ;y‚’F:"¡]»vK—. ¢K" " " "²bx¶¬uëÖØ+<Ù÷ØcñÃw›q$½éÙ³çÀñ<ñ±bÅŠìÜ¥ r JdýàÁƒûöí‹X†{â‰'.¸à‚ !n»í¶õë×wþçU­Zµ·ß~ÝP¬D‰DÍÓëàÁƒDëó$Aõ" " " "â²ýþûï¾Bq)5kÖÌÈÓ€:|W¼hå {Ú»w/X ú´\ú8p€ ÀrÕû~DaK4ââ:räF›«¥r#º€è£ˆ€ˆ€ˆ@ ˜0a‚ÓˆŠíÙ2cc¾˜ó±¼ª`Üx+S°Æk-…wRØ©g†è K" " " "` ĈٲíTH0ÏN°$HTK 0f˹g[« " " " "…€ |ôlÙQÄ©ˆ€ˆ€ˆ€ˆ€/ÅlùbQ¥ˆ€ˆ€ˆ€¤ [)ÃQRD@D@D@DÀ—€Œ-_,ª”! c+e8JŠˆ€ˆ€ˆ€ø±å‹E•" " " "2dl¥ GI_2¶|±¨RD@D@D@R†€Œ­”á()" " " "àK@Æ–/UŠ€ˆ€ˆ€ˆ@ʱ•2%ED@D@D@| ÈØòÅ¢JH2¶R†£¤ˆ€ˆ€ˆ€ˆ€/[¾XT)" " " )C@ÆVÊp”ð%÷V•" éB`À¨ÉQÆízã(ͰM¦Ÿ`2—J" éN@ÆVºR@þŽ´ø?Ÿ=†½>ÖS÷_ýõ×öíÛóýóò^M¨š¤M0¡¦8ʬX±"gΜeÊ”I•¤‰ˆ€—€Œ-/Õˆ@zÈ+î_娱c?üðÃ}ûöŠŠ€¤ 4Z^SPc‰ÌM O®œqMðçŸ7nÜÍ7ßüðÃïÙ³gçÎqu§q§NvïÞ=qâÄx;&­}Я¹æšo¾ù&ºÌE‹=zôÔSO¥ËüùócvLñižsÎ9Ï=÷Ü·ß~ûÚk¯½õÖ[Œ©Cò¸fqyÊ) ½M>WIÔ% c+uùJºÄKààáãquÙµk­ÿþïÿf'ñÜ^tçßà¥K—öêÕ뢋.â#^Ÿ'N´k×îûï¿Ç¨Z¹reîܹï»ï¾o¼ñÝwßýá‡ЪU«.]º\~ùå[·n6l•EŠáŸv³EEáüóÏ/[¶ìøñãóäɃKiÍš5”°[·n¼G×Ùw‚5¯¯ŒßK¾’/¹ä’Í›7/[¶ìºë®ÃÜäU¨P!˜ÆÞ)DŸfªT©‚ñ„!U¬X1ßÑM%ûw¨Á ák×®…açÎÝqz½òÊ+0‡v5Nú“fhŽ•œ-[¶|©÷ªm•®¿þz×—…’ˆêÝ»wPwï7NK½D@Ò˜€n‰Ò¸†>þŸ«ÿ•W^‰´xñb<[üKl®–.]zÛ¶móæÍã#»o|ðÁµ×^Kùå—_þé§ŸúôéÓ¶mÛóÎ;êù×úŒ3ÎÀØ¢æðáÃÝ»wgG²GØÏ?ÿ<6ÍvìØ±dÉ’3f`mÚ´ 3nöìÙ¥J•Ân[°` ¢¿Ìì°®øÏ–éþñœ/ÍÇ(¢*V¬ˆ)c†þüóÏ™E®\¹P˜¾¾Sˆ>M¢ Þy端¾ )¦&ìèÁK—LÓ ˜*Tøí·ß†¤6õN™•*Ur~Yæ*ÖvHwï7Nc½D@Ò˜€Œ­4®áD CGއÿçêO¬ÕK/½Ä?Û?þø#.“9sæÐ€ݱEÌæÚ§Ÿ~Šç骫®ÂñÃ>ã/¿üB(=>ã²*Z´(––5gžy&mjÖ¬‰¹†Bã-[¶˜O?ýôþýûãýªȞ=û€:vìÈ%ü1¦AÄw3;Ó˜ò¿n¼žò¤çÛYG‘ƒi…½ÅNâ±cǘfõêÕm/ß)DŸ&<±~˜fLw;¶wÜqpªè`»ƒz8´ØáíСCÞ¼y±®ŒåJ3`öë×ïÑGEóßÿƾj›IY™ì´:¿,;e ¾Ý}¿qg/•E@Ò†€Œ­´á¬QD *£ÇO†ÿçÄ?ä}ûö%F›\±‡p´`‹˜ýµõë×;ß°aCzáøÁcæqƒmܸÑ+Šà-*qíÜ}÷ÝS¦L!" /—i†ñ‰@ ÆÖ…^H!ŠïÇ;„™©¿ë_5)Œûà3甽]|kªV­zèСiÓ¦áÚÁåcÛ„L!J›³Î: £Ó¶ )ðè'^+È3Ï–ii»›à9³ ùK/½»CÖ4£/ße³ÏË–hˆÚVfˆ2¾Ý£|ã!2uID ¥(f+¥HJޤ cÇÿÞ¶‹÷Å?«XTl𱫵zõêjÕªÝpà ¸|†΃{7Ýt“ˆFÜÕÔ©S1§ðßà3õ6Ú©páÂÔ ªM›6ñê±½k‚c¦ÎqÕD”Ã\pù¼ýöÛ•+WÆg{…L!e§‰a ‚ IDAT­Y·n];®«ÀC‚ÔàD4õX„©ùóçw5#ÚŒ6gnQÈÛY8EÍ:èwöUYD µ ȳ•Ú„%_â#pìÄÉðÿ\âTg ? AZDCcuáv¢ [Nx¼ˆªW¯žyd`&L±?þøãÎ;ïäRF^œa˜h<ÜG/œ.³fÍš;w.öÁÂ… 5à49Í쌄‘“>ñN6H8Ss^ÂÖ!^ ÙªsÖM!§i¢¾ˆ× «ÏF¡ù"Жï‹ïbÕªU<€ÉɘJAj;§FÙ9 ç%ßîA߸³£Ê" i@@ÆV@Ö"熚oÙ% kðàÁ÷Þ{oëÖ­qðBžH ÂŒ=\«'–âôéÓ‰Ù"Äž‡¨RÛv1ç,œ—|»}ãÎŽ*‹€¤l,ai0Œ†ˆB€l6·ÜÚ ¼å¬Þw¥ëÁ»C,6ÿ~»‚8”7ÕÓO?íHã#GŽðo³³’2Î-¬ë=:pàe¼\Í’ù1Þ ÷̓–,S_}õ9N¯ˆ®€ïÒfšN%ÙÆÅ‰h}Z\â@Ts)ʰ±Èö¢³½¯ÚΔ]³p^õvúƽTHUŠÙJU¼.qÀ–Š·ÿãšrõb+ð»ï¾2dˆ«žÆ¼\•|tj^kÌÛ%i5qMc‘}OÌüv[qè;…4›¦UÕë³—\ʘz_µmSðíÔ=èwÉÔGÔ# ÏV걕dHOœ€õ矺¶ØÒS!ý?8o–M^Îþ§BÿÈädleò/XÓH_ÿ'V }UÑè" " " "ùÈØÊ|ß©f$" " "@dl%З!UD@D@D@2[™ï;ÕŒD@D@D@ˆ€Œ­ú2¤Šˆ€ˆ€ˆ@æ# c+ó}§š‘ˆ€ˆ€ˆ@±•@_†TÈ|dle¾ïT3H ézHa–@jJÈ8œIl-¦ó|·6gRÒTD sèѤ֢ÌùÕjV"q°9§˜Šã±"‡)9ãMË0c‹¶]L¹j " ©G@kQ걕dÔ& ˜­Ô&,ù" " éL`Ò¤I[·nMg%4|& c+ ùqNýž{îéÛ·¯í´hÑ¢nݺÙ*ˆ€ˆ@š4hPÿþýÃaN 8ÐYã,Ïœ9sǎΕE - ÈØJKÚ~¬yóæ-[¶,ÃOCÈàn¼ñÆ/¾øâÈ‘#vŸ}öÙ 7Ü`?ª  E@ÆVB}‰®Ì¿þõ¯!C†88£ñرcÛ·o×]wq»ù×_™Ê'Ÿ|ò«¯¾zöÙg5jôÆoìÝ»·{÷îMš4yï½÷Ln4;wîÜ AÚüù矦røðáü±)ë]D@| ”+W.þü_~ù¥¹Êáž={®¸â >ú.GVH§N6lØ`>²"­\¹’²ïZd»¨ É' c+ù ³Œ-¸·ß~Û5çóÏ?ÿé§Ÿ9r$ÖÕºuëÌÕ;w¾öÚkÜköìÙsâĉÏ<óLãÆ;tè@÷ãÇÓæ¥—^ºþúëY±´¸I5½*W®\ªT)—|}'lÙ²Õ®]{Μ9¦·V­ZµN9åïÑ|—#Û»êèÑ£æ#k”¹uô]‹lD ùdl%Ÿa’={ö‡~×Ô¦M›œÓÆ¢*R¤H.¹ä’~øÁ^jÖ¬æTùòåO?ýtÊ×\sMÅŠ<øûï¿c`­Y³æª«®Ú·oße—]fî/éH›âÅ‹[ *ˆ€ˆ€/v¿ýö[®cË4 ZŽ|…P´µW½$@Œ£’ Q]27ÜN·ÜrËàÁƒ›6mjgúùçŸãÏ?|øðæÍ›±®l=æ—)sjÊæÖ“ÊÕ«WŸ8q´r3j{© " 1 \pÁ%J”ÀÌ*S¦ ¹g3]‚–£ Z‹‚Ȩ> ÈØJA˜YET«^|ð™ðÆ_|ñÅ×_ƒé±Ç‹HíH6‰Ö:묳"vQ3p¸é¦›f̘±k×.e9:yò$BXL¨¨Ö"'R•S‰€¶S lf›'Ožxà»ï¾3±ð¸ñóæÍ{öÙg£ú믿šõ+æü‹+Æé»ï¾kâ'Ø[4]¶oßnöbJP,N fÍš?ýôÓ¬Y³¬±s9:÷Üs‰‚`™Â=èÐ!­EYœ­¦Ÿ²dl¥,Ϭ"J"±Ìl+T¨ÀúÅ£ˆ{S½zõ)S¦8ö‚ˆþEà<¡Z<Ÿxß}÷½ð ¦å¨Q£>ùä“ ^ªK§a çwÞÅ_l*c.G·ß~û›o¾Ù¢E 6 *D¯ µÈŽ¢‚$Ÿ@¶ /i}ÈG¦ÉGœE$8pÿ“Ý¿¾|ù¢ÏšyÂçO=õÔè]Ô2KÐZ”¥¾î™lørĈæÌ™Ó5–Ö"}t`!Š77¢ÓˆRÌ–¦ÊI'`,-úÇeiÑž{Ó¤ªž" "à!¾vÚižWh-òÅ¢Ê!fláÖ”K‘a$DD@’L@kQ’Ñ©£ˆ@"3¶Î<óLœ`‰ ¥tȲzô©µ(Ë~ûš¸$"Ò4}ÂŒ­¤IT/È”"Ʋ»¼¢>ÈÁ$?ÿü3É Ì %q$=Ë?þW—ŒØ89ÓLNߘ¬RUxÌÑÕ@RŠ#Íœ9³W¯^“&Mò•©?u_,ªH{®(¬ØÆç‘]˜CÃÿóŸÿÞ®nݺ¤"ŽKoN¿ÄPsu¹óÎ;,X઴o½õÖjÕªq"¹­=z4‰\V­Zek­à;͈J&§oÌ!|…‡ó)S D í °bL˜0CFJ–,é;ºïŸºoKUŠ€ˆ@Zˆ½ÈáI[¶l™}:I)jÛ“Ñ}Ñ¢EœMG Ù¯0­ì¥ /¼^'Nœ?>9DM=©äÆ—]N¬%æÛ²oß¾—\r «výúõIo†ðU™Ã‡Çšd²vt ¸÷¨!Õ+>¦cš«Ã† s)àÔ .DvDo_Ô¾•VˆKxäÈ‚o obëÖ­­D  `cU©R…0r ,XÐ÷§mÔóýöþÓq.ZD s°f–-Í+†±ÅŽ!þ$ïI»¸š6lØ€ˆG²±Š°Æ>úè#ßJ30™ï°NpÙÄì¦WÖŠ+*Uª´wïÞråÊ-[¶Ì*JúL"Ì/LyóæaÙK‘󘡋/Ž‘gë›5kÆŠŒ2ôEê½-±0°ð¥qê†Y±²eË¢ÜW,îv f¦mÚ´¡;gx’Ð\u)à+6¨o"ßá|QûVÅ‚„ûj^øNœ8A #Aï"¾Î8ã îÓXŽø1â_÷þ´­zÞ?`ß¿sÛ^H—åúè#f ßëÿT“{ØÙ“,ëÔØ‰K•*Å–o¥é…ŠÝC¯*ì$ò„‘Ý«ânÕ9 fEŠ)Q¢„=˜lía~á #Á;–írÑE™²µ½- ±Ï•+2m/ !j˜äYÎÆ”Ù]e¹·ÉíU—¾bƒú!òεo¥Ñ-H¸¯†téÓ§û¡sæÌyú駯»î:;AD AxÚNÅ\ÀAçÎ.*‹€ˆ@t^{†¾T²4ù ‰al]z饄¥ónƒ œý¹¹ÄÃï…{‰ú­[·’ŠØ·Òôºçž{¹ ÄêÙgŸuÊ)P Æ!V… vÖ›2ÆÖk¯½–#GN´Wñßkõî»ïb™Meë½ß–<Ç„s‹Œh‹ÏŒYÐ1\ ¯d\YôÅ·W¶lYïU[ã+6¨o"¤y»ø¢ö­4Ê ÷Õ.¥K—æéz¾2éøöƒ²[Ø™ª iIÀ÷§íTÀõôwî좲ˆ€D'dTIˆ±H\<Z¿òÊ++W®4"M%Κµ §¡T„G×ÅÕ5jøVš^8ÿ b—päÈ‘NUp‰±å÷Ö[o™¨y>eà(b£pùòåÕ«W·•(ÀΣ•…/Ç›½ä*ø¶Ä"ÁÞzá…Ø&#H{U¸VìøñãMT™i?vìXv?Ùkc ÛÆYðÔ׋(d8_Ô¾•F¯pSï«á±cÇ6mÚ”={özõêÑìèÑ£ÎI©,éNÀ÷§mµòþûþÛö*ˆ€ˆ@jˆáÙbø:ðï.Qðl¨áåÂÉÁMŒ£Óž={Z´hQµjUûVš9Ð}èС\cBoa*‘Là*F58ÉpVÑÆ\2ïxVÈÄÎÆŸ­¼öÚkÙ¾$^žÆ¸¾ð¾T®\;Ã6°… –x×åwÞiÚ´é¶mÛS #“˜úË/¿œKÚc®=þøã·Ýv@C˜×|ņôu! εo¥ÑÇ%ÜTújÈñfDdzËÕ¶mÛ:7píÔTt$ôÓ6*ùþ‡¯3é8 -"dcCÍwž®@øoxv{¯’³=–.zþUŽYélà-ã"Âû}»jÿþýFL1{,…W,5!-qka´a®Ù3ãUz¨ÁF§ïжÒWlľVo—ÔãXÌ,Ü~NT´'@J2ß$­!?m”ôýöý%¦ýŒ4¢ˆ@†#ÀB„άEXQ”7F”mÃJ°1§Øï³mÁœ¹e?š‚o¥«ë#›«&ü£µùÂ--„x[:ÆóJì'ÄCŽÖÒ¢q¼j $\OsÕWlľNùÞ.¾¨}+r¼e¯†1Áz…¨FÒ’€÷§íÝ÷Øûwî좲ˆ€¤¨ÆV* Ÿ.bï½÷^cÄKÄ>`ÅŠÓE *" " "E„m#fš¦ˆ€ˆ€ˆ€„Ø}Ø?+«o¯srmpî9†y¶|ã$|…ªRD@R‰@PÌV* '±" "à%`b¶ßÕÞZðé§0cËÙNeÈâJÉ—û´ì¹såÈ“+çÁÃÇñß‘ãGŸ<Æ'Nþ]8ñwÙEIÏš¹€è£ˆ@‚xûí·MÎÓ$ë—| I:E:ftýS‚„ˆ@F$Û³Åé휺dó@¿üòË?üðÉžÿýïcΜùå—Üÿ¼(sRùÌ™3}ë›4i‚(/å Žxà„*sþ»©äBžv¤’¬Ï‘£tHmœúè##™MOn‚©a¦™W¦ïЦ¯óÝ;(WYåÏ?ÿ|%¶1ïL¼qdTäü÷¸† éåÔDeÈ:\¿ß3Î8ƒdYyòä±Éî»ï>~k*Tàåë®»®J•*øË½Ùâ½kQ*ý~ßËAÔ,Z´ˆÝO³²}ñÅÕ«W7Í\ç\TˆN RÌ–+@>ú®–ØOø«ð`±ÚKlÿ.\ÇÏîÝ»Môëwß}ǨÝ+äŽÓ46‰–I³óôÓO³ŒšJ›Q‘àY–-*wíÚÅúk ²R¥J±«h“ÛH´l .™AC›ÆöÝ;(—Ø.œ7o®8N¨gÅ·ImËч ée¥© YŠ€÷÷ëš¾µº¸±á¶‡«Aù=½kQêý~­’¸åp¨“.mñâŸä?üðCö:¹0`€i“àúÛ‰¨ "HÆV\Ã_vÙeÎÝCÓÿ9–·•¸¸pþ³8’ c‹°*Œ0§ÀÒ¥KOš4‰ÔÑ„e`rY‹Ç´Ùºuë•W^I™ëàÁƒ¬hfµ¥>$èÞ%3hh§β?Ù3Ï<óî»ïbš-Íl9iùz¹&n…« Y»óI˜µk-JÕ߯Uç¶q«Aeꪫ®Â鎫Þ‘¶eÌBºèS+5ð%iÑ·gŠW>òÈ#øŸÆŽ‹d|Qlóáçç¨>š¨yŽ‡Ø´i‘õêÕ£’S£Ã·ß~Ëj»oß>nñÒS‰iBÀÖŒ3¨ß²eËÊ•+kÔ¨a»Þ½2}‡¦×øñãM蘑à”} 2ã2.w®¸Öl¨¾sÄèÃ…÷r^UY²2¢ 6oÞœ|©÷ûuéÆÅ-eÕªU©¿æškÆŒc÷]-ãú˜fúÇ¥•‹€ií٠ᎥҹsgžãcéáH"͉ëÂÝ…w _ÑСC>Lt<ÛØ[mÛ¶Í›7¯‘¶cÇŽÆïÙ³‡@ NŽ ’hS³[‡Ÿ‰z‚dÍÒæÝW¦wh:ò|Àå—_n7½ƒ²†²qÉ~+Ú(†û­råʘ}ÎA£³—³Ê"e 4hÐ8!Pæ>-ÉRï÷ëR‰íK{´Æ뤈±•fú»¦£" Q„%¢N„܈ȳÉèÜ5Ã…™eã02åÜv!‰”Â\sÍK‹mAŒ3W½ë£K¦¹êÚö tÿþýF dæÏŸßvqâÎôõí嫲dJ1s#rpèС Ÿ[\LRï÷—InœÑõOòÄÕQR› ‰¨É1]ÏÜYÓ£&¢NmÕ£ÈÇTr5ó]RqwñrµäãYgå­ôÖøÊôíêè;¨5ø|e ¾—bçÛË¥’>Š@$À‰)õëH½ßoÚ|/]ÿ´¡¤QD í $Ð6bÒ&Ï“Œ<Û˜´¾Iî•.ƒ&Y[uHGaÆN³tÔ,Ž¡?ÿ.ŽÆ)Õ4]M)å%G2 ³e(ªRVD Í„[‰³•f 4ˆ@bˆ³•˜jK+ÌD ™·| tôCfúV40"[œõÓO?ù&KdŽTíDF*ÝD p^qD58/”„ƒA}åpÚŸï!yABT/" 1 „m#šÎ¯¾ú*‡yrØÕ?ü@þ¾’_‚K¿üò ‡ ó¢|Ï=÷4iÒÄ´òÉ'—,YBBhûxà­·ÞÊÙ¤˜>œSzÛm·‘’™–d¹—c¤Ñ—³µ\É‚8™†«\â42läÊ•Ë4=z4Ù¬9$Cê]j›ó·L3½‹€dD$f%­ i›9y˜œôv >ú(oìGò“r*9lì[dàas2õAr°½E&1Úÿë_ÿ"¹ª•IS”Âa{=zôpÖ«," 1 Ä0¶8 }Ê”)$”à°+î1˜¬ÕBFXŽ›2–“†S^ÈcOV2rÚó?¹JvÚµkÏŸ?ÿ‰'ž@Ëg(›^¾r¬À˜Ù:uê˜fŸ|ò Ç™RöªSŽˆ€$8ní:tèÀ2‚ åT ìäÉ“¦†Û-Ru™òý÷ßöÙgSþæ›oüqV$sc$Žü9;vijÅ9Éä1¼âŠ+ì@Çg´Uèbl#²„‘*ÇdÃàhPëC `öìÙœ/Š# ûÌÕ†cHË–-kº.%ùcµjÕp¡™î¤6ãT-ŒB>Æ«v’PG4#€ÏÉ7‡ k Gmñ"¯©|ðA£’±´(“D /8ç›z_9dwànÍx¿hP³fM2Ú©qÉ s×]wq'i+Uˆb[Å‹ÇoÄ â„ ¢d{eyb£ ¾… š]B«Ç¶mÛ¸éäL¬%JØÊ(îJÙ0¯ 68»‡4&s"™ínc¼j;eª,"A hëÞ{ï5éçSxÿý÷qYyëmˆ‹ ,•Œ[¦’‚ öb)8p`ïÞ½cæ¢p TYD@,ÆíHVئM›aÆq’'7¶§·@PÉPIˆ‹ü€X?¶ ÉË6lˆ©ôÆoØÊˆ¬´Õÿó"ØÂÙ‹ 0²(R†+kÞ¼yµjÕ²W£«m»¨ "q Ì;ÏVÓ¦M]S`}˜3gNß¾}]õ®fóÑ:ïIf·#1³xà‚\]ôQD@"ˆ³e¤Z±bEBGGŽI@ChÜZyòä!c4 Xªðç7oÞÜ4ÆP+\¸p—.]vïÞ}饗Ið­ÇJ³.«—_~“ÎÙ ç{—EŠÁafSS›ÕvJSYD # ¢”B“¨Þ©?žož§áq™‚ :ë½eÓ€‹fÁÒ2ɾûöÛoIÄNâÖ­[ K厱uëÖ^ ª ±=[¦'Ïà¿téÒ A„ŽÎœ9«ˆð^ˆôúþûïM{B©ˆåºå–[pqá… ’„zŒ-öÇg 2§˜j;«,"A $ŠT£F §þ<(óÌ3Ï 4ˆçõ¾eîI,È7æê–-[Ìm!ïݺu»æŸ+ÍJ—.í+A•" "D †g ƒ‰8œFXHk×®es0Hâf'ºË6X¼x1+`™2elÍ#<‚Å6vìØ–-[ÚJoaüøñˆr>Ìèmck˜%Bkùòåýúõ³•ÑÕ¶]Tȸ&Ož\½zu{ÜŒ™[‡æÙg³!HØ;¡ôAs$‹èxüñÜ¡¤õå—_âȧ1+ /Ó‹0 N…¨ZµjÕ‹€ˆ€/À¥Ç´ÆÀ"à´~ýúI<†²‡H;¡ñÎ18¨†G9œÆVrãØ¹sç#F˜Çm½«€(V:WeÈGΕ BË[Ð2ºÚ!buID ¡lܸï8Gýq#G°w£>-âAqr»´eûØž+4/ëµ ’Ó¾}ûM›6q¼wƒªÆðà]E@DÀÈæzfÐ^0j²ÉH0ÄÏ?ÿŒÿÜiÍØf [È j',O)&éE s#e_ @Ü`é5_+"€Xˆv.Ùø¶’%ŠäË}ZöܹräÉ•óàáã‡øïÈñ£ÇOã¿'ÿ.œø»vþ$H%¯—7kP½íè*ÄÛÞÕ=ÊÇ?þøƒ³oœgâDéåmƒï³äi ¿WÕˆ€Ä$¶h:“é‚äbäp%OÎsÏ=Ç!7æNÞÖÜÿ¼hvÏ=÷4iÒÄ´òÉ'—,Y [ö€AòR9r«ˆ§9‹«Q£F´$—N¸#¾ûöíûôÓOíÁ£G&¡õ˜1cÊ•+çÒ M/½‹€d>¤F0`ÀªU«J•*5xð`;Á>}ú¬‚ì:1œ«Ì¹€æRP=™Ç,X`»s¾|8 £ýh Þz’*âyzçwŒ¶.?œ·½å­Ÿ7oû $Š¥†#ÉaÍ”Cô·Z© ".bl#²$±:˜ß9¹Êº—‚tågODÒbŸ¹Ú°¾”-[Öt] ÿX­Z5üd¦Íúõë¹Åòãc¼º…¢«"  N€ƒFm槪6 ;‰E‹µ—BêsüóâüRòó<øàƒ¦KP{+Ð[àÞ’Eé®»îâÓyÕ·žœBM›6µ£8»ø¶G o=V¯^ÍÞFÞöíÛYWÍÐV²‹ƒS1•E@Ò…@ c‹´ƒ¸”ðÌO˜0Áuæ«.É1Ø(dïoáÂ…®x~ÿÜD+VŒL‹¾}ƒ*ɱhÑ"l>̘1Ã&œŽW· ùªÈè¦M›†ç‰ÍD×^^P½™ï‹/¾H:2b$ìôƒÚ“@Œ îúœË KÜÀ{÷îͨ•@Á·~ïÞ½,b¤V$è‚Eõ¥—^²¢|ÛÉ¡ž|Û*T@ùÓZ·níL+¤¿S=•E@Òž@ c …H;Hš0œóÝ»w7!AZ…@¢ÖÊ•+s§EÊj #Û²W¯^ 6$XGº­ŒX Òë’K.!n WþóZµjÙŽÑu³]TÈ|Xyˆè"±y³ ª§ {Žx¶p5ÅlOjEb¶ð™± ò²í1³xàsÏ=×Ö˜‚o½¹ùdtÈ!ƒ £¶bÅŠö\ò•CýŸþ¹{÷nöØN]¹r%Fï!óµmTH{1b¶ŒB„V¬X‘à€‘#G†ä¢Æ­•'Ož¡C‡Ò‹€MV“æÍ› j… îÒ¥ k„ó>,â„qn±AY¤H¼byóæuöЍ›³‹Ê" ™Œ7„̈è¢BçÌ™cŸÎ ªÇ@Álzøá‡mKÄ·=©¯þçU¨P!œal;6ŠÙD¢ëüùó³Ó·uëVÂU¹“ÄÏTŸ/_>†`½b%äEè*á§W^yePû z„ðp 2ª2ÛµkW¤‘9;DsIï" éH ¶gË(dz6„Ã/]º4HW¢fΜÉ)«yQ Ò ¯¾iO”÷a·Ür ..TAB‚ê1¶¾ùæ›qãÆÙ=Dg˘º9«,"Y °¿vèÐ!‚¨\ôÖc–aQïji>zÛ›zl#¬4sð7ݺuãqB^¬xX<¥K—¦YP}Á‚‰93þ-šñÑæµª§ï×_&Ê—/Ï -O#Qv¾‚ôw¶QYD - Äðla0ñØ þ$,¤µkײ9¤?xÜéDwÙ‹/fE+S¦Œ­yä‘G°ØÆŽkïÃì%gaüøñˆr>ÌHT,ZË—/ïׯŸm]7ÛEÌG³Éø8#OG9˜9Õs•XõêÕ«»ÜZ!í@|QIgŸ}6Y”x™z6ïƪZµjH=ÑëÜmõE3–S‚ÀZ´hÒ>H>]Œ?¬R¥J”Y–mæì˜úÓ^/t!ÃØâ—ÌÙZÜ´JàTÈ"ÕïœK=Še+Y;wîL ËÒl½«€(œUNc‹Á¹2ÎÇ!£ëæ’¯" ‘ñX=ô‡yrˆáÒ®]» 0"ðá7¢þé§Ÿ¶ïAõ%ĶmÛÖ!¨=‡,ðŒ+Á[Χ]Â?¶oßžõðŽ;îàH­*UªÔ­[7¼}ÐUnVYEÍ#X–,ª¦eþArT/"f²Y·¶kÈ£&›Üˆ¸Í ;ÅOî4t\Óëc"ë–^L4®d21s#òXÑñ¬„u:çTïlã,µç0RBé ØrŒ:ûF/#еYô.¾-÷ìÙCx&¦½¤¿m ‚ˆ@’ °í>\²ñm%KÉ—û´ì¹såÈ“+çÁÃÇñß‘ãGŸ<Æ'Nþ]8ñwyî¬éQ6ÝE ÏjáÓâyÀ$ë—ªY·T¸„‹€X¸šÌÖž­1… zW3û1¨=û„xâm÷ˆ»ë±}P3Nt] ÒßÕLE@Òž@Ôù´×L#Š€ˆ€ˆ€ˆ@& æÙÂi– f¨)ˆ€dtZ‹2ú7(ýE ‹3¶LÌV¤é‹€¤/˜1[髞FÈ ’y˧mĬðG¢9Š€ˆ€ˆ€¤HÆ–þôÓOäÌ­Q£F™„œó¹ÿyÑŒ”¨Mš41íI׺dÉÎî³’—šg§±Øxª‘³¸H1AKÒV„ˡͳÏ>»iÓ¦7ß|“§lø¸eË2TLœ8‘ܱœ¹Å†ö4ŠÑ£G“åz̘1åÊ•3Ã1:Ö!‡£réÏ8QШ§w J OŸ>däGÍ ¢, õêÕ3ÁÖáˆ)A žãýZµjeê9bÀ€«V­*Uª)nì¬ã•óþûïs¼)zÀZ´`Á‚pùœÈõÔSO±F™d²,M<ÏhGWAD ˆalýøãS¦Lá xtá^ƒ‰”^S³fÍ8ÞXN§’)Œõˆå§’r$iíÚµÉöEæ2$°\bB…È1—8ôÕü1ö5,‘[ö|–¼:uꘖœìl–Bó‘|a$öáÔ™Õ«WsÈ!g!öìÙÓ\Ò»ˆ@%@‚ sÄÉ»üqVs»…!uÕUWqä2ΤÆ“ÆðŠ+®`ŽÜ vèÐeÍ9åxåÐλ†ÉŸ7owz…JG¬@òºÖ¯_ß©€Ê" Y@ ·h 1\8ÔÊz’‚0±¬CûÌÕßRÙ²e@×¥ œ"ÈýëðáÃYCIkÍm"‡/›ÆÕªUÃyfʤBãÈÌA—l>]œ³L_t]ÕGŒEÀ¦ÅËøþüóOôgYà^Ëx¹pnÕ¬Ysúôéf^|´uœ3W޳¯³$ŸµŽÛ<|ÿܲéɺç쥲ˆ@$ÃØ"#!Þ#n'L˜€£(& –96 qD-\¸Ð¯°mÛ6ÜéÅŠ#ÓbL9¶iV1ò¸s}饗¸—µ»¤¦&† -g̘ᛠÚÁ‘†æ¸è¬LD@24öõpe™´<Ø4¸‘ìI¡‚‚º¼SŽ.‡T†Hpƒe$t… ®ÀÙÖºukRJ{‡Vˆ@–"ÃØ‚I¸Ø¼6lX÷îÝMB ‚ºHÈZ¹reîäHY d[öêÕ‹ Aò‘½ñƶ2JX²¡½÷Þ{l8sZþřΓá*Ãi_«V­ ilYb®‘Œ,¨êE@2~õsæÌéÛ·¯ÑùàÁƒ¬ÓÃÔÄœQt9xˈÙ*Z´(Ë ¯˜’q¹íÞ½?Û—+W®$#f5ÈÜb[ÌŸ½<ââW¬X1rdØ1§¸µòäÉ3tèPQ,ylÞYvj¸¦ˆpg ²• Ækeƒam/œ[ìZ½«,$gë‹Ý\`;ª "A àÏ2d>r»i ‡23ÂÒòæ±ñN6.9  Œ{N|üãÇyçÆX±bEžï1b[œãÆó* ,E ’±‘Ë/¿œpø¥K—Ñ!:aæÌ™F„Sð¢@¤×÷ßoÚPÅ}ââÂ$Ä·Þ<Šè½„±…¥ÅB²‡H/$Dƒ»R¯Õˆ€d <óÌ3ƒ :ÿüó­Ú… Η/gÓ˜îèbnÛ%YΕW^É›ïAV _ý5-)”/_ž@žr^UYD ˆala0±9,¤µkײ9Ĉ… ;îüîþçÅé ×\s+Lþ‘Gá,œ±cÇ 1õÜ;âáoÃUB_ )[¾|yõêÕ}s‹ëkÚ´iDN8ŸUôm¬J'ÀÖ¡y–™Ÿ6/sÛFnoãG'N”à*ÂFÃ'’d9¸©p¤Ùøú Q°´xÒ\eÙ´ñdAíU/"é Ä8ú•‚³µ¸wdE#F «%ˆÈ|àZãxXzàÀX¶ 7 ;w& ói¶ÞU@Ž4çÉ®ö#'JðP’ ×°õøÏPwñøýû÷Çì³—TÈ ¾ýçe6äTã±æŒ˜N:q¼k±Ùg=[œùBÄ'Ï2A[½]»v 4`îñÊá¶±íXÁÞ²¾ö ù-[¶d•ã9hZâ„cÑË À¥¶ˆ@JÈæzfÐÊ0j²ÉˆÛüçŸfgÐkÓØÆ*ˆ€ˆ@*ˆ˜‘ã]®â8†dªá•ÙÌTrMHl¨wÐ={öp¿—|}¼’U#"öXˆv.Ùø¶’%ŠäË}ZöܹräÉ•óàáã‡øïÈñ£ÇOã¿'ÿ.œø»!žø £ÄéõU½ˆ@&##f+“ÍVÓ4&æÙÂi–ÆÚh8ðÐZäe¢ D ÌØ21[h2RUD 󈳕ù&®‰€$×-ß#ýéÖ²Qï¥0cËÛZ5" " " "Å éV•ù Ÿ­Ú应òƧ›r˜A¦9rĽ¥Ké4ø˜Èº¥Áô5„$2ð1‰­’¤IÝ»w/‰"ì¹ æRP½íè*ÄÛÞÕ=æGÎ u#‡uåÎÛÕ˜#*H°ÁQÉ?ÐËÇ5–>Š€$“@ {¶HÔcΆ Û+«ƒY H°Ú¤I²MóD4Ï6£1«gÞPxõÕW9”u£P9éŠ$?AÝ£·4DÈËYð$‚Í™óÿÛ’F¬"–䈯FÑ2Da#Ǽӗº>ýôS{žÅèÑ£É2f̘råʹtãEg_•E@Ò…Çh 0`ÕªU¥J•"%ŽÕ¡OŸ>$«àé?aæ\åúõë›KAõ>úè‚ lwìÎöãcP{òUs¼–±0æœ}éEö–ŽìÑ£‡•é[ÏÉõ Èd‰åÄ/{l! )CSÉ=*+gÏž=ÍÑ€AzšQ¼ãñqj¥²ˆ@ŠHaÏÖ›o¾iÔjÖ¬ézŒAcíÚµ«3UK &§Æcq:f5S\Ý£·4cíß¿ÿ«¯¾b™ãœzça§¬\µk׿°æ'žxÂ-®°ÕÜX4ëÔ©cÊœ mS¯n®^ú(".¸ÙëС¿wž:xüñÇO9åï«çÎK¢hklÕc±™ÓçéÂ-‡ÑiAí¹ÊÍØ@¦™ë}øðá¬u®J>zë9l™;Õ† ’É‘wò-V­Z•–o¼ñµwÞyÇÌ⯿þ2Ò‚ô4W½òƒø˜özHA)ìÙŠK3Ö/– n.Ë”)Ãé\¼‚ºGoi$u‡ÔŠùóçÇ’s[\ey*[¶¬H¾  ½õÕªUÃOfŒ­õë×s[Ì}!ÍâÕÍ+Y5" ©A€BIÒå•llê·mÛæÌ‚Ro.‘Q‘fK"OgΜ‰IG&l^ˆ c³ÀH ŸÐ‡[n¹*+6bcë›o¾7nœ×dDBLÝ"Ž¢f" iC FÄžDåÎ[Y†yD½«¥ùèmoê±°~LfYîîºuëÆcƒ¼Xš°“J—.M³ z.€Õ¢E ÜW¸ÓV¯^]¾|y*9‚X+ãß2mÀ>½z†È§½^" ‰I Yž-×”0ƒŽ?Ž—»‡F¶ü\ ìÇè-yü/=q`¶ïâÅ‹Y€ˆÁ·5<ò¶Ýرc[¶li+½…ñãÇ#Ê_O°-QË—/ïׯŸm]7ÛEt$€ÙdüCÄâ©â(£LP=W‰I¯^½ºË­ÒÞÄç„mtöÙgó‘Õƒ—©g³’P íTOKFðÎ"F¼AíU/"f²Y÷µkÈ£&'!7">vbTqªÛuÄ%Ö~ŒÞÒvI³B"ë–f4$˜¹y|èx~¶Ä_:uªw¶q–ƒÚsè(¡ôl¹";}£”‘Ot)F‡—zÛ3Ë&ž3ï%Õˆ€¤;¢Ý‡K6¾­d‰"ùrŸ–=w®¤ëáiÄCüwäøÑã'ñ߉“Nü]ž;k:F”‰:@ùdy¶¼“ǧÅS~ÞzoMô–Þ¾©]“Ⱥ¥öÜ%_2\MfkÏ¥yP½«™ýÔžçrB\æ¶{Ìò½.Ú^¾˜½ª‚ˆ@†&*òšˆ”$æÙÂi–‚#I”ˆ€$€Ö¢¤qS/!fl%!f+Af%5D@2 ˜1[™f¦šˆˆ@ÂHæ-Ÿ¶ö›•b" " " ™@lcëí·ßþñÇÓ`®Ñ²-m! Ô‹9sþ*Çaؼ¶tI( cNA D@2 è‹Oô–™Ž&"iL ¶±ÅñTœæjEȶ´…4P/æ¤<#7)ŒJ–,É!«|¤KBis j šÇnýùçŸé5…ôÝ;ëè‹Oô–ÞQT#"…@lc+е§B“=£íÉéA¢Yò ‹ˆ@š cý\@ ¯¸F$“4§·ÇÕÅ·qøèñŽo{_•T)"8"[dÜ©S§Zµj‘ø™ã›ö¸»È¢S³fMa·•¯¿þ:Y¢I5ÈYÉœàgZr”ù$©ÀFŒ±fÍš!C†ð³åLTçš@3ßÕÌ»¼ÎÑ]m\£øŠuíjߪU+ÒZ˜QX¯È~M™öŸ}ö™wY6Íì»ïÒíRÏ4ö®½Vˆ " É'ÉØbG¿aÆ}ûöå7oï_|ñEL¥éÓ§ó+ågoT!"õ'N$5=‰)LåöíÛ©Äëâ6uêT"À°ÃüðÃcâ´nÝÚNcذaÎfÔûŽbÛ{ ¾’}… ÕðáÃ5jÔ¥KÒø0# •Š-JÒ´˜½œ£³X›<£Fâ h„»¶3|¥9%¨," .¼þúëïÏÃåëÕ«G2~˜3fÌøå—_hLBa榑Ÿ-G;×äxW3ßåÅŒhG÷¶qâ‹çЮöÛ¶mã{3 Í>lÚ¿öÚkÞeÙ4³ïÞ¥Û«žiì]{­D@’O ’±…OÖµ×^{ÓM7}ýõ׌Š+kÅŠ•*UÚ»wo¹rå–-[fT!aY`IþE‚çuëÖYýš5k†9ÂKÛúõë9I™7XÜM:ÏMv5 ÅŠõ¼’C„àZ#U"¶Ñ7ÞÈLæ¢?þ˜ô‹Qz9G'/ÇL³…4“kÖy5Dš³™Ê" I#€ ‡$§Ø1tú¹á±æ y\éÜeáÙb­àg›#GŽÂÒ⾓E9b/_¼•)+Í+_5"Å 2…CÚ@ú¹‘úÕW_ÅÍm&—]»ØYóÒ ZÍ\Ë‹Y¸œ£#Ê·%H¬W§VhN–\Wp‚ée—e¯[ãl㫞m©‚ˆ@jˆ´HH&¿|¼ôÜÀáõAR¥J±!øÖ[o™`‚PI`x¾|ùÎ9碲víÚ…3?HcÂÏ7mÚDQ´9zô¨oKßQ|[Ž?ÞÄy%G‚îûï¿ÿý÷Í’±—×W+[Qšm¯‚ˆ€—€óçæ,c‹àÍÂ9mºýÜè±§ÕªUã¶ÐX3ÄrmÞ¼Ù;–ïjæ]^èèÝ·ÅW¬wtÛžKflذ唧ŽÌJkÚ{—eêXøèm㫞¨wÔ#ɳE`VãÆ÷ìÙS¡B‚ŠD*ÏÜá"B WÖСC±ÃÀâQD>rûˆ×ªråÊÜEyµ'Æ“èx¶‘Ó¶mÛ¼yózÛPã;ŠoK$ȃÉW²WU¯ÌDôß½{7Ñfч¶ãz:k¢OÄÙKe'çÏÍYæ6©D‰§žzªiìûsãCdìØ±´Á›~÷ÝwS¾÷Þ{9‹ƒˆ-Zd.Ùá|W3ìïÂåÝw ²£p(L”EÒ¶G+Žîc#„Ÿí‚åË—[ wìØáZ–¹äÄÂGïÒí«ž•©‚ˆ@*Èf¢Â½ÒŒšlr#ŸÿŸ> T%"0ÂŒ-³•0ªJ¬H fÌVV„¢9‹€¤-dÞòE:ú!mg¤ÑD@D@D@D óólÍ’|[„£ÁÔËYσ6£¼dÉøð`³óRHyòäÉ—]vYÙ²eCÚ]JÚˆAÒT/"¾ô‹N_þ]D .Iñlq”ËÏ?ÿ×0®ÆdEœ0afVÉ’%y†™®¾IýÃ?ø^ŠYé1f㈠¢kQ`ª6ËXÚ¦* Ïô‹Î_¢¦ Y‡@R<[ɧÃIôW_}5n-DqÊ'u%_f¸çˆá-ï’å«…£\i–6š‡ëc¯:³•ÎBBiëTLeHLÿ‹NuHX±=[;wîìܹ3‡³“=pêԩΙ¼þúëÍ›7çÈxòHØL^Üq’¾¾V­Z6Mµ«†“ågÏž{ŒCI^Á1ô¤Ú@lÇŽiIvj"ë¢Z«V­ôœìgG§þþûï¯Y³&‡AsΩG»“œ³ŒÛ’‚kD®]»Ö4 1-(ûŽîšûˆ#Ö¬Y3dÈ4ç”W«9Í8Wš)7jÔŒd_.¦¥}w G}DÉ.Å|¿«­¯bVD ñ d”_tâ“”†" iC †±EÚ¯.]ºp¼2ÿ~O™2…œbNµHËC‰‰'Ο?õêÕ\ÂäüðCL:X“Ž–7Ó§O§¯ÉŠHc >‹ùh_®·mÛfR:Ò€.ƆóŽî{‹-ȉ‘‡æèLFG%†##ä´iÓÚµk×»wïuëÖÉ®éxáX )x‡‹.Ù¥˜÷{1ú„pvj¢²$8 ñ‹Np†ROD - Ä0¶ÈQOÔ6mÚp€§“é»i$ #7"ù…‘íŸþ?¤£±·†ä?¤÷aëKË•«§Y³f,£l/bÓ04 ªÉ†Ÿ,wîÜØgè€4dâÊZ±bE¥J•HÇQ®\¹eË–Y­hŒ ɶ†BȈÎf®Ñ½sGÇ@s.³S¾i†· d„Dù>úȈu ô¢pŽî.ºd—bÞïÅ9e—b®«ú( N Cü¢œ¡ÔHK1Œ-3c•/_ÞW'¶Ìž|òI67nÜh}N}úôY¸p!6¹]M/o¯4*/ºè"sÉä X¹r%ÉeÏ=÷\W{¶y‰mJ¶Æ¾üòKl2Û P¡B¶oÁ5zøÜ­ð]»va~Ë’JüpÔ˜«.T† ð—d«ßïÅÙÀ«˜óªÊ"9¸þν?1ßiÆõ» ùEû W¥ˆ@Ö$ÃØÂ•ÅöÎ-/ü.ÄQ=øàƒìòP¡mPºtéI“&5iÒ„h*³[筱à 8È¥Ê&¦ifí9Ržal×Å!¼žþùp9Þ«LŠJ„˜5oj‚ænÕ0½Œ’6ÙäÖ­[~/—äÞáâ’Ì@F± ïÅ¥‰>Š@f"€¿èÌ„WsH&Æ~vôÆŽˆ;ƒÄ³Ûñ(³±H¬ÁUÜ š(õcÇŽmÚ´‰x¦zõêÑŸ“·ÆJˆYà(¯³Î:ë½÷ÞÃ*" 3ÂØF«·ÞzËsð5~üxÎålÀÖ'æ# ×Ô—ö¾s/R¤ÈæÍ›Ò°Ÿ€0cÆ tÛ²e Þ¸5j8ز/ «¤w¸è’Â*æû½XTŒKÀþX\SHÌ_´KI}ÈÊb[˜M/¼ð§[ÝvÛm„¨¿ÿþûÖµ×^ËÞ•½zõ"V‰çƒÛ"ØœèøÛo¿½í?¯¼yózk¬„(N4 æXxtÀ11[hEì9OœÄ~%›‰¾¢°ÏØdô^â|¯W_}µ~ýúlº¢Ðœ}çÞ A n[²ÑÉVdž1ë{î¹§iÓ¦U«VµW_VIïpÑ%3ŠUÌ÷{qª¡²dPöÇâÒ?1Ñ.%õQD +Èöûï¿ûÎÀ¨ÉÎ܈4ÃEx¸«ñþýû©§rß¾}ùóç7W)cf9ƒß½5.9!q_áT#$ÖÛö„Û{/…×`÷`ܘȰð–\uÍ7;›v²¶ûž={ØßD¬­ñ-ÄDá!%;óý^|õQ¥$8(¹ùàx¥žˆ@,D»—l|[ÉEòå>-{î\9òäÊyððñCüwäøÑã'ñ߉“Nü]ž;k:F” 1rOACÅ!K‹^NãÃY6½5AyëCl)Œoû(5¹råŠÒÌ´qÍ‹Ów:ìxF‘éÛ×ÙÑ5—"Jv*æû½8GQY2DþEg&Κ‹ˆ@ÒÄØFLšPõ0Â<[8Í„ID@Ò€Ö¢tÿ ¤€ˆ@r„[Θ­äŒ¡¾" "dQb¶’,\E@D dÞòi1 dµ$HбÅ9¢&qaÇüç4Ñ™3grfÇŸF2yòd“1zÛ’'õ’0¢ížøu$97‰«Í鎉¯°4,B )ƧÝðïzr‘<‘ƒ©8‡£çï¼óN>F‘FrkNÛŠÒÒÛÆ9¢÷jÒj¢kž4ù{qþ Aƒ8rŒ3Z9ÓŸ ßdòŽØ7b³™iDmÕLœô×뤡²ˆ@º‹ÙJ=…/^|õÕW“³™!ÆŒÃYY©7–‘ì19cqÈ*k7–Mšiî«­Sþýûsr=n?s¨ž-{°‡o_o¥Sš÷*5ióù­JH&ýõ& º‹€$Ÿ@lÏ;S¤š¾á†êÔ©3uêT篿þzóæÍ9DŸŠÍˆ©eË–œùN¢hÓØUÃYó³gÏÆ=Æáïä–áüwKÓ²cÇŽ´ìÑ£‘÷ÐôÅ…ÖªU+FÇgù…vtêï¿ÿþš5k’Ñd 2ÈÁܾ}{„Ø–\#"píÚµ¦9‰ÞôõŽîšûˆ#Ö¬YƒßÍ9gÕjN3ÎÍgÊ5B#Ùw:.¦¥}÷íâîTcÇŽ~øa§Nìñ]œ%kÎåòvô¦S“òýNíL}5´ú« iFà§Ÿ~²+C×®]ÍïÎ÷§mÿzÓL7 $" .1Œ-Ü$]ºtáÀtþ ž2eJµjÕœý/¼ðBÒæLœ8qþüù&š “‹¼ÔXlùµnÝšÆÞ,•*Uª°Û5jÔ(ðܾ}»ÉMix¼°f°êLXXß¾}ÉÒƒ=IGkÒÑãfúôéôµ i@n,tvêéqÛ¶m&©"mèbl8ïèÞ¹“¥‡L‘yhÎIñtatTb8Ò#N›6­]»v½{÷&m‘‘욎…SÉ .^áN5˜ Ð)-ºVNiLÊûÅB¾#ç¸*‹@Ú`e¸ä’K¸g#ï÷K&ÉiÐOÛüõ¦bED@¼b[ä~&gs›6mŠ+Æ¡ä®L‚즑öÌ3Ï,^¼¸±0È]È ÿ >2'2ž·†Ä; ÏÖ!––3¥›5k†a„é€MÃÐä±^¾|9~²Ü¹scŸ¡Òh†+kÅŠ•*U"]O¹rå–-[f'FcÜ`®CØCF´½£{çŽNiÏ“'S¾iÆ-5ȉò}ô‘뚎…stß.¾Âj°cIoÞ!ߎ¾C8¥ÑÀûº”tMÊuUE pû‡ÅmiÁ¸=³+C ­!D@D b[»wïÆ"a³¯h\÷O>ù$›Œ7n´>'²2/\¸›iÑ¢E¦—·ÆW•]t‘¹d¬‡•+W’ŒùÜsÏuµgÛ‘§ Ù¦dƒ€TÓØd¶A¡B…l9Þ‚kôð¹[á»víÂü2–%•øá¨1W]©Œ‰ÂÕ%D¸¦çÁƒÍGûÒÑ5„íb ¾ß©³MxwgK•E •¬ZµŠü¢0qýÿ¯½·ÞªªòøÇþ“˜hX"0ŽFRJŽÀø‹@%l2ÞL`4I†‘™ Á¿"ˆéˆ2ØÂ¥x3@Þ$^ÒE¡B¼hR€¢B ÓŠ¡)i¦ùtÏ:9çÞûÜçù=Ïïõû[¿õ¬s÷ÝgŸ}¾÷¹çÙwŸ}÷Në âÜy˜>|ø°/ û žzê)tã­@¼q={öô\;Š4%­Wšp§qñdÐøÎw¾Ã¸Ö…ë²cÇŽ´ŽN¿á¤%^SŸSm!P‹¸›…g ì­©S§±€{›G HȾµ]÷Zœ‚†B q"PÀØÂlbE#»U¿~ýQ_³fƒéŸø{gÉMJ¬oü¶E°9Ññ ¸ã½?"*bŠ“§AVbÞ‰…G¬‹ÙB+bÏ Ú ÀˆýJVÛDQØgl2Ƨ°NfÏžM\-Û£AšÏœ8÷AåŽÇ›ƒ¤ cÖ·ÞzëÍ7ßܽ{wwÖo$B‘¦¤uLî«ñÅ/~‘«Cl>3âåÞLÄöMëèëãÚNZâ5uljÚEÀ¿Y¾ùÍoò¬õýï¿OŸ>-Z´`Wݲom¿{íND£ !ÐØ8Ç\ññ´š·Â¯~,ÂÃÎÓ§OC‡ø›ßüÆe ™å¿Ç”@NÆ!K*N5â¸cüm„‡nŸÊ¦`÷`KÅq剽‚¹ãfc ÃMÖu9uêû›ˆu”ÄFiPÄÂ5€ˆtéÛåpCÇÝ)¿áKK¼¦>³ÚB &È®ˆ[‹G>ö,˜¡¨[»&g¡±„€¨×°øý¥ƒû]ú±Öùÿ÷ÿù@“?oÖäýg~ÿ_¿åÿÿ:û_üÿÿýÇwÿýn{ËÆµQ.Ä(4žÒ°H‹Cr?í¾ñá·M`LI(¦gØR71Š=çá„'˜;gât,»UA™‰} öŠ…j`ä±áˉ;Æý®»î¢ˆaß¾}ŽAÆáßþíßž-JîtìØ»³¤„æçÅg(¼èó«-„@cF@kQc¾úš»¨ï0¶Nœ8A‰C 6»yRäG—³„ðiAI$Z—eË–QÜж/¿ü2õøî½÷^v)}öìY;ËåücÊK¿ð >¿ÚB@4f´5櫯¹ úŽ@c WÞ{œ[nž#ÃYåj+=zJ"ѺÜzë­T¤™“` Êbl}ë[ßâ•lþþå_þÅèl>._¾üþá¾úÕ¯b¥½t(„@ãD@kQã¼îšµh0¶p\QÞxñâÅlö±µ÷oÿöoC-[¶|ê©§ˆ¯:räÈÞ½{{öì™H4€xñ0,v }ôQ2“¼páB³¨þã?þƒ³øÃ~ñ‹_PSù†nàй»üŽj !ÐÐZÔ/º¦, ä±{¦NJ©×~ýúÞ~óÍ75Š>bØŸxâ‰S§Nñ^a÷îÝ#‘h0þù?üðÈ‘#/¾øâ¿ÿû¿7"’ g á_DÙÃCþ—¿üå÷¿ÿýœå=Ç~ðƒ hMDê  µ¨:詯µ‹À9ÿþïÿž¨ÁCóVøµa#@žìŽK‹­@V@G¡‘Hôâ6>3¼_ö¢¢ýÍo~ƒ™E¬XÌ,Š  6¢Ö¢ÆöÐ|…@]@Àj#’ú!çÛˆfD¹˜«?OÙ“!*+` ÉV@á0‘³ù,6ÿ61^E‡B@C@k‘¾ B@Ô;ä=ªw—L ! „€õ ,Ï–9ÍêÓl¤« ­E ñªjNB !elù1[MUº„@³U—T“.B@4ªùȧmÄÆòEÑ<…€B@ZA °±EÆÑ_þò—ÕQ®úª3ºú ! Ò¨þêT} •Ó-MrYèÕŸxõ%dL¤rÂ+'9c:e8Åöu“-íº¸îi _·4ž˜÷ªzñÐõŽ’ËØâ”ñ×_=¥ ™áܹs÷ïß?sæLÊESÃgìØ±Û·oÇŠúÔ§>5kÖ,Rþó?ÿ3yá)AÇ9çœCeësÏ=×J.>öØcC‡ýô§?MýDJYd>ûì³Èa\(<Õ 6ìÚk¯¥pµ1àl#—}¯^½÷?ÿó?{‘O_áI“&­X±ÂNýö·¿ýüç?Ow†ûáxçw2Ä×¾ö5'0q”X7B@Tÿ.fÙ‰ïÍ·ß~›ûöí3¾ño<÷ÜsA/;Eå{«{a‡å]ßLfÚ²–¸Î¤­?&ŠO*m¼üòË4˜ã¸qãØ`5^µj”x `Ê~_ês°Ä 4ˆÕÕ„34 š¿¼O‡R"°ÆVvèV¯^ÍpNi££yQ¿;&3† zþit§žmݹ.% |gÊrs•÷Â9ÌëqÛ(ñïÓæbúð‡EE¥Bnl ,ž®¨]ˆÂ¢†ÉB¾xcèß¿?þ* véÒeøðá;vìàfÆ¢Ö¡1pWÐøìg?»iÓ&ÊïÿûˆzóÍ7!>ýôÓ\ZtèÝ»7•¡ðÇ &“!¨„[’'J%Z¾ô¥/=þøãäš§±nݺ÷:ýŸ^F±O_aª ÝrË-FçÆþÊW¾B›á¼uëÖ;wR˜ˆÉC° /¼òˆýèG_yåÇ+ ™ 'Œ?¿Xk¬ ‹éž={ªªªp8wìØ#/îå(4|…y"Ä^´¬´'KÖá'>ñ ¢ÊvíÚ1q”X µ…€¨þ]œxo2.>ò .¸“;ž-îV¿—)vúôi,б:=˸¾9™iËZ¼ÎX—4ºHƒµ—݀ѣG·mÛ–âiÌb5·›àŠ3¶iӆݺ¤(ã W[@ íÞdÙ3f ?<^rÉ%‰šà½fðO•q}sbÓ–µx±.it'®,&H †OLÈç¡}üøqía•ÃË.»ÌíÖ%N?@) ØÄ¾þÐ9ž|òIžŸéH /Ðöë@ˆOàÓFÏ)Ü×' ®4üÓè¾Ì:x]J@ÆÍ¨Œ7W/œS¯þ6r[‰Ó×HÏ&~üãÇåxx&¸ûî»ÙÚÃ`"BËуF»ví–/_ξ!·&Æd-Z´83¸Íyäi…´é~ôèÑ+¯¼’FÚ(2înÌZ§„€( v§Ý›l–Íž=Ï Q ˜\n}p÷>:ŠD:t°^úóë{æÌjâÚÃ0£´jÕ*Ú? PJÖïâÚÁÐŽžÑøâ¿hg'NœxÛm·ñ3á35ºß1hgÀå8ÓðO£Ó±¾\7Ç´†]¸2Þ\åºpi ×/z®mÄxJ­[·.Ë»„ì3âoÙ²%ûz<{áÀŒÇ"ð‹?¬"l#ιÅcšìH¾óÎ;Pð<ǽ ,Y²„pT;å+ܳgO¥K—²±í:¾øâ‹|ÕØ_à‘ŽÍD艣ÄÊ8 j!PQÜ]œxo24·hX =AiøxxÀJ;[’ñg´‡¹@,*¬Ÿ€˜vè+ÌZÌÛ”Ž‹·~ð™9MÜ)ñ(‰Êø]ÔB \øk‘#?¾7u½Ødtï'r:¢ëâ(Å6Übâ–µ´u&ž6"ïh£ž;Ä©4ýñîƒáú&6ò£”Ø=mèDæš'Æp¥áŸFOÓ¹Ž_—4µ=¸p•»¹Üˆõ«ÁBÄÉo#–³Å ‰Í›7/‹uÉN¢ÉɘxŠÝåü 8…yX!9Eì#ü?ñ €x”Deòk"N! JCÀÝÅÖ=¾7ź^*˜ß:‘Í'º.>±¨vÚ²–¶Î¤ÑãA]ø³J(MÿóÎ;/Pò£t´Ã´¡™kž˜j¤áŸF5¯ã×%V8cËdØ IDAT ®r7W0n#9,ÝØª×=üðÃlGº)È”$Ý¡B@4HÈ«W‹óJ[gÒèµ¥jí¢Tó³NÃ?^óÚˆuüºÔqõj몹qÏa÷Ðø‡æýošuŸ¨¶B@! '×ôé[õáÔJ_>&Qÿòÿf7ÖˆYž-øüžj ! j»þõQ­E5»FBÀG€…È?,¶]âÛˆÅ#~! „€B@4N [‹-âÎÆ‰Ž›µ@pP¨!jRŸ'&ä«]­4ºB ÂÆÙª(k“!¢ØSä¦ôz±½j—¿ì äœÎM7ÝDQÈœÌb ¢(úvß}÷‘áï{ßû^Þ¬f'„@CB °±•8[JaP^ÐNùíDæ€HÎ…êgC dÖëà çÏŸÔq«×3•òB :̘1ƒäïÔÚ"[)鲬š^uª¯B fÈelQ%ú®»îºþúë)GˆZsçÎÝ¿ÿÌ™3Éù6gÎצ‚ÄØ±c©sçwRmš÷f½ýtY»v­M…ÁɆÌÓ*ùÍ Nž?†)ÕEw„Ï:]‡B Á @úbV«ÙEMîA·Œ4˜9j"B@4Tr[ßþö·»té‚uÅÓ$ñ[ø¥(MˆÍ1oÞ<Іº6iþß|óMl©o¼‘òdtÞ/>R“Ã×(ÔŸ¦ð¶Î¶mÛöíÛñòË/wk(kk›6mÈ)³ù±Òx䥤ü#GŽL“ õ¦OŸŽu5mÚ´ L˜0¹ð‰ÅCVecÈÖm1éÐÔ^D,¦Û AƒÆï+fýSqwLÐçG2!'î˜8ë`t ƒÀ¯~õ+nRª{ÙŒhpw4˜Ùi"B@4lr[·Ür N¬öíÛcWQ8ÇJRÍ6kÖŒ„¹~ÛbSŒ‡NªPõéÓg×®]Ùða÷\xá…¢ÿèG?jUñ9íÞ½Û²mذ᳟ý,b6_ì9ïýáæÁ3äÖâ´.Ä|P±sçÎhN›MºnݺQʰ þ¸²Ø¹¨ªª¢þFÇŽÑÓ©_ ±Aa;ëN%vtüNxbÇÄY».j†À™3g˜Q“&Ml^T85J›¦¦#„@ƒD +Ï–›ðÅ_lmœLŽ˜Ö`´S8¥ž{î¹46£³e¶uëVœ7‡ÂXH5 Â2¶lÙrÕUWuêqQW_}µÁGž*žGm£ÐŠ)Fˆ¯"âÙ"T ¿T×®]ñÖ`qêĉrÁœÆædòšÑñlq²ßqÇì2¤uqCg4õ7~ä¨Î‚¸ÜØ‚Dm ZÇ¢œbÁ©´î€A/;ƳŽ;Š"ø¿yÓyĈ¸½G-ÏVCº¸š‹hØd¢Î®GƆñÍ›7 ×& '«!QS„aa3%b7fÌÌ ì;{úôiãÄfÒ{d£;f–€U°K}þüùVE±ÒêùƒþøÇ?&óÅm·Ý6uêT’£úYÁ2Ôð%d°é”hØ|ýë_'õ1™„y2ùîw¿ë&;cÆ ª>òÈ#äX^µjÕâíT¹èn 5„€¥!ËØ"C)ežñ»(‹aæÎ»ÿþ™3g~îsŸ›3gŽkÿ÷ÿ÷رc)ËÃRxíµ×’F!Ñ«ÿ£ýhذa0¸ŠÎøùIeРA¶™@7nIç—ÔŸÛpä’¶š9ÇŽã·W¯^TE´á|õPÉu èØ:xæ,:oß¾îd±Ÿ5k•@NÎÕeË–Yßxè‰:óH}ðàAë…*ÿƒþñ$©ÙX\pAll¡ ø¤¡Ít•¡`Cƒ!'L˜`&r"Ÿ³èƦ§>…@}AÀÝ/ì$ân7µ)¥°iÓ&+Õ…s‹¥`íÚµœ*½¾€#=…€¨Ëä2¶ØùêÒ¥ ÖFñ[_øÂ(ˆ‰3oÞ<œ4®MUÒha~Ýxã<ðf‡ó~9ØGãqÓŠõqäȑСŒ?ž ‰äß"¹ü=÷ÜóÊ+¯`”@$Cýc=¶råÊ=z8 ð Á¸S?+å‹ÐÊ/úê¡’ëÐQ•.œ¥ÁvÖÕ´iÓ,X€±'ŸØIF0ÄC$ê '¿fšX–û`P²¹2(£øV Ìîe. m«ÛÌ—¾ ý‘|„mV6V°ð¬hc¬6œÈǠĨ^7¨B ¾ À*1yòd6ÝÓ¯~õ+îS—é”_r¦S.z}AFz !P—ÈelÝrË-8±Ú·o]õꫯòøH¤Q³fÍþê¯þÊoÛ<Ùóâá’ê„}úôÙµkW0ùsÞûÃyƒµaë#þóŸã˜¡Ú ¾%FY¿~½)FŠTÁã29gΜÁJÀ=óñ ®,¶ ªªª¨cÓ±cÇÝ»wCŒU²¾itÎ>·Åá¡Íöb·nÝ0Y(h8D¢Î6Jð zî¹çbÃQXš“£GÌv˜v¢2˜¤Xؾ¤ŠÅJ10Nä4ù¸™,×.qt…@]F€[’—KðÚ:tÈôdM Ñ¤I;äÌ(å¢×e4¤›õÂòÌäâ‹/¶ù$á ¦ê*âçî¹ç‚³åÊSéæÍ›'Mš„YCL+v›{0Åa‡Ž*Ôl\qÅAw¶öpaÆ}@jÝv$•¡þœ‡ÎòÀLÁ棗۰H"Qçœcao1ë /¼7Þ† Ü@®{Ú‰Êüìg?ã—¦uëÖNDNc 0ßçT[Ô#xC[žÇ&NœÈŠd7/V—‹zxÊE¯GàHU! ê,¹Œ­DíÙJst¿íˆxn®¼òJwèíÚµ[¾|9®„I±\²&²>ò>‘Y9ôjÕª®,vñxuèÐÁu¤që­·Òñ¾ûîûæ7¿É!ïôalIÖ¢E Ÿv¢Jô »;L"Qgë‚Ú4ÐÊö(+3xð`æ~êÔ©Xs7´ß0 ‰Ê\zé¥üÒj†VŒnô‰œ¾@µ…@ýE gÏžS¦LÁÁÌúÀ„ó›è‚Ë/¿œ9rÄ^.½þ¢$Í…€¨;äÚFŒÕÅÂÛ×F÷ÛPØÒÂ2øÍo~³sçN6gÉ’%Põ‡?ü×ñˆ=²€Ö³gÏb{°õÔSOÑ‹…rïÞ½¬¤ø·Ø²äÝ"öÙpdïÀä4mÚ”/¶ }ôQ(ƶpáB‹”²X%è¾Jnè€n ~&‘¨3¢ðWa ²…‡9˜¨ Áé¼OÀL™¿9--7De°±°·x½‘ÍY¢þ1[ñ–%rœ¬„@]FàôéÓ¦÷>-n7m1Y·nm9žþù~ýú•‘n#êS!PJ4¶¸fÍ¢¿ÛosøÖ[oᶈ uõÕW›rÄn³Ò&fœØöÜñÞž¶ÕØX\ºt)DW7ß|s÷îÝY@±^{í5ÖÍOúÓŒerødŒw¿¿ÿýï}oã˜w„·U†©al¾JnhNùt'0»‘8D¢ÎÈ2dÈìÙ³‰RgÔÅ™ùƒâÊÂÇ;êheιìÑí¬“¨ <ˆÂÜ6X1àØULãÌ3œx„@ÝD€HGnó¡C‡â'Á|á¨ÊÛµ<Â÷I<"ûŒ.)`¹èu i%„@=BàžÕ}hÞŠìڈ씱{Õ¼ysº»¶e %&‰M4<7‰’!â÷ÂÌ Â•0DØüÂJð{¡r,ó§OÚ8Àpz¹p1Î:•Î4zÀÆCÀëŒ5É‚à¶`P\PøÆœ5S ‰ÊÐ ·¶);­øºLHg<„(B n"àj#â&:W7¾ÞXUóX@x%%8U.z V‡B@4*¬6â5}úV}¸iž‰›Ų1—³…d–‚ü6‡˜µhæ:út kõ)´Ù# (‰‡,²=PÉM£;†´F<œ±Îî­(_N0h ië 2ìZÚVÄ‘ÂYZèpúZ©-ê|É3QÜK6Á¤ÊEÄêP!Ò­Ä1HdJêÄS"V²ñ&<^@Rl_uÕU•H’…€B@bÈ2¶ÌiV¬Ä?ÛþnZvýÕ /þ÷5Û^ª•¡5¨¨%®E•SH’…€Å eleÇl3Šx…€%"àb¶Jì¯nB@j#PÍG¾ßF¬¶Ú „€B@F@ackÑ¢EÔC,;[v=%Pºƒéë¨@Êk‰±JTž Å]åè±dQ„€9ÈÚF4d„¢ðŽK]“SnA6'Ö²E”ð‚^ö›=¨Î !P9HÈG j^&£2Å@Ihgcñr5)¸Hú@­Ï~ö³$Ü*/½r3’d!  …=[‰@Pmšœ¢vÊo'2gçÏŸO^®lžàlÚˆ>½±Á(9ýAsv›% À˶ä#§ñwÞùÝï~×I ªD§NÈL͉U«VQœÞN•‹îRC!P¹Œ-2”R:úúë¯'û9ÃÌ;—š33gÎ$›óœ9s\›dƒcÇŽ¥,K!ÙžHá¼úxøÇwÝu×!„ÕÐו´ïTM†rìØ1žV{õêEÍDפM(_+èN,¶oߎÌO}êS³fÍ"?y¥É8OMkë›8. “éžY 4ˆÚ ÆÉóÁƒ­2׃:eÔB ì¸4Èì$ân7ù¤Þ´i“•ÿ¹Å²víZN•‹^öYH \ÆÖ·¿ýí.]º`]a'¿E• bÍ›7 O®Mæô7ß|óëÆo|à°KÌûEuäñãÇ“nþ±Ç[¹re=| éb5›|ðAŒJ­"lœ…ž6ºŸnÞ×Ê41±H˜>}:ÖÕ´iÓ,X0aÂ8ùÄN"-;CÄã‚”Z½zõ˜1cî¹çžW^yN–x+ÂhбšƒBן•C€[ròäÉl&òf£üêW¿âFv™KipËsª\ôÊÍE’…€h<ä2¶n¹åœXíÛ·Ç®zõÕWy|$¡y³fÍHYî· 5¶Õx¸¤5uúvíÚ‘.”g¦fùN©½“˜WÎÿªª*ÊËtìØ‘:ÍîdŒîxhÄš¸³Ã‡ǩֹsgxh³kÙ­[7"m©o8®)Œ‹âkøÃ˜øúõë4¿‘1¨Ï¦¶eA€{–Š=x£ÉâkÏœ9CÃUn f—QÊE/‹Ú"„@#G p€<]|ñÅSvãq ñó?÷ÜsOœ8ÿŸÚÌÆøÉN"§÷Þ{¯½è¢‹[Q£»^~ÃÕü¡Ü‡¯uû‰ãf‹)éž•/»ì2v}j !P+ðÌÆ¸<üLœ8‘âT¬Hvwã8§Ü*§°±¬ˆV¹èµ2M *„@C —±•8gÿík¿í˜=zå•Wrˆ+‹Dœ[:tpgƒ%ü0¶ˆ kÑ¢Ep*ñ0qD8Óè‰B &ŽË2Í’Í+Nf™1‘V­Z™&BUmÒˆÅj½ô)„@iôìÙsÊ”)x YRX1ð—¿þúë—_~9ÒŽ9b¯N—‹^š†ê%„€ðȵèw°vëÖ­yû:nC!lãã7¿ùÍÎ;ÙL„‚gˆýG^b‹Ðu6¬£ÿi< .´ (öøü³AÛ}É’%.À˧]ÒÇm×®[O=õaíÞ»w/‹;.¼ðBLFv)üì4,aÐ4eDB Ó§OÛYÞYÁ§ÅýÈ!šDǯ[·Ž6¯¿<ÿüóýúõ+#ÝFÔ§B :”hl 8pÍš5„‡3¶ßæð­·ÞiÒ$s<ÃÉ«Á¿øÅ/²6lûŒ.)`¹è‰Êˆ(„€ÈÀ9< &r?4oEvmD¶Òˆ“hÞ¼9Ý]ÛR‰Î.¾ý@2cA$¸> û‡x¿š6mê¿üS~Ûèi§Ñ¶ø0qÜS§N±ÏˆAæøy‘à v­äAX5„€HCÀÕFÄÓLt<ÞqÜÉ13yÜ­¼³œ*=«C! Vñš>}«>Ü4ÏÄ͈"ɘ³ìžlqØLfiÁæ·9Ä ÌåÕ3$³\fœu§‚ ÒCZ#q\‹´õ»¸—ž|bš2>ÚB@T^pqåX”{£%8U.z V‡B@ü”nl%ŽA"Sò;$žQ! „€,cËœfEƒ²ýÝtðúB@” ×¢r /9B@ê!eleÇlUo\õB@äBÀÅlåâ“B Tó‘¯Ä·+0‰B@! „@D@ÆV™/êŠ+öíÛWf¡'„€B@Ô[ [”Å €t½`ÑŠ÷íÛ—RÙ¤xp=¿÷½ïýÝßýÝÏ~ö3GÉhlÚ´‰Œb :%„€B@4* [äµä¥%ãBiê7–ܽ:ÆþèG?rãb?‘æÔª!„@­ ß§µ¢†B@‹@ackΜ9k×®5¹cǎݾ}ûW¿úÕO}êS³fÍ"I)9šÉù¾lÙ2c8vìØ¨Q£zõêem Î;wÿþý3gÎ$õ3ÙcxKý DÝu×]&Ç}ÆüÔ„&¥»ÛªûÆ7¾aå®BÝž;ï¼óÚk¯%…ŽœXB0b !gñl9ëúkdÛ"Ϫ©Äè_þò—bРAèlD† {õu×]w÷Ýwû.±Ä¡­‹>…€( à>  nÀƒš@VjQÐÖ XÂbB r6¶(eH¡CÓàÍ7ßœ>}:ÖÕ´iÓ,X0aœ^|²’EJî`ˆ`œ‘AÞJÂ@aD,°yóæYmœ€^ˆÅtÃ|?~|0ÕX É£)…F±† |á¯~õ++ „ìÂo¼ñ`ÙuÖR,!1г˜’/¼ð‚U?dJ ™V$°FCÊ­^½z̘1÷ÜsÏ+¯¼Â)F¤Æ"ÕÙàD ØŒ?qh;¥O! ŠB ¸OƒEã7Þ°²ªÈä”=óè, a1 !P9 [ÁØÃ‡Ç…Ó¹sgÊbЦ2O·nݰK°Ép&íÙ³§ªªŠÒ7;vܽ{7}a#Áz³fÍHŸÈ`ò)j†Ø Å|?ÅÑH$}ï½÷b¢áÙ"¯´ a—§Õ¯ûôé³k×.ˆi8åFô549X‡ùÈG0ÿøÇ?nݺëÐèx¹(DÍ34EÙ0ÈÚ·o¿~ýú³gϾôÒKHûÀ>ät5}2†6iúB ?ñ}ênáD!ºaQZA +ÏV¢BΤ°B°ï{ßÿZl/¿ü2þ-l ëxÑE2Î?ÿü€™Ã4~Fı„iÅÖ¤+: ¿«¨Ø¦MÛ[L“sâˆNl©gžy/ÚÇ>ö±~ðƒF?~ü8V£«þ7‹]Ž{÷ÑÕªU+××Cœ:B ²oaÝ€%@ª.B@T¢­ =(/ˆ±õ­o}«E‹›í¬e0üv˜ÆÃiöìÙØC[¶lÁ䊇;zôè•W^‰4 ñpnïÏN!œMI|r¼œè˜14Ïœ9C]I³2ˈÔ䯳§““h'_ ! ²p÷WÌÆ²‘%ˆºcˆDB ¶(z1CQ<=lÀ-\¸Ð‚',æ ~üC‡¦‘ÆÈ\²d‰Å{¥ñÃÀž‘RD²“îÖ_¢bia¶sçN6óè4tš\|ñÅýèGÙ¼æšk±]»vlÅÅ(GŽÁ§Õ³gO\kDÐ?ù䓬ò?øÁØj4}Ò”wÒÔB (âûÔu¿ð Ùâgëð¾ûG7 G ! jr[ÿŽÅC=|䌰é 8pÍš5Ä·¦1(`²<ÿüóùùË_bl ï<¾õÖ[‹/6 ´Ìp˜D5Ÿ(!ŽC§¡ á,ÜMš4qD¶ ï¿ÿþ¥K—0àÖ[oå¥ÈîÝ»sïÑc„v‘a‹%Þb¶rí„«!„@6‰÷©u2dÞîþýû_qÅtBÔ ˜ ¦Î !P“œCú†Äñš·Âj#Ňý”È–H$@ž\ .‚ ¼>l´5oÞÜøc†D9Ž˜‡ÿ¦›n"ïûl"üå_þ¥ë›sÄ@à{pxêÔ)6)XÍg‰-ð·9ŠkäQÞ1«!„@€€_1ã>å DnÉ÷¿ÿýAwÝ€ :B ¬6â5}úV}øSAe 1#Џ#cËŠÙ"ú ëá¿øE×®]³…g1D ÁOÎÒâTÌð‡ùùYjãÕ6ψ†Á!û†Å·,ƒSù•:êPŒûÔwBû½túh¨-„@­ elõîÝ›Œ5ä”r¯ãÕŠŠ9%‘)ir2‹M! „€5ƒ@–±µâÙwSUí8°´fT)Ã(Û_.ƒ‰B Ž!`ü:¦”ÔB@äE ËØ²˜­¼’Ä'„€¨~ÌVÄK¤B 0Õ|ä+çÛˆ…•‡B@! uÝØZ´h¹Ò. ¯&=ýôÓS¦LY¾|yèB@4þð‡?¼þúëÜø fFšˆÂÆÖĉ{ì±Ú‚œ[ÇŽKýG?úY¯H±s饗¦ñˆ.„@Ã@€LZŸÿüçÉ~GñSKÅ×0æ¥Y!ÐàȊٲɓ›ÔO(U"äü$ VQ™ºrŽB¦ø.]ºP:'¿Ø„€¨§àá^¹r%¥ßÉáGN;\\9'R¹õ'§bB@ölQ"píÚµ†Ôرc·oßNjuJ’3„¨ÿüÏÿŒµlÙ2cÀ 5jÔ¨^½zÁCé ˆsçÎÝ¿ÿÌ™3É)Ï3ÀƒØgŸ}QwÝu—ɉ?ñ® :ôÓŸþ4ϵVçñǧV4®/$ÿÛ¿ý›ß¥ ž±4ºSUzܸq×]wÝõ×_¿jÕ*_ ÚB@Ô.”>¤þâñ¬Z“'O^±b…iEÎdœ^¬9x»‡ F9‡{ï½—S9ןìe­v'®Ñ…€h6¶°c¨6hS%íÖôéÓ±®¦M›¶`Á‚ &P„‡OV4‹¢xðÁYæ0ÎHãnõÏpr IDAT a `"ؼyóX"c$#ÓmРAãÇOÃô¢‹.¢/VݶmÛöíÛ6V·nÝ>ó™Ï ™jÐ~Ç‚zÆÒXÊ%;Œhª.úÕB v V)OA¬$DØãV‡¨IjZmÚ´‰Ê‰8½f̘ñå/™Ã‘#Gr*çú“½¬ÕîÄ5º ÂÆV0ÉáÇãûéܹ3ÉåiS‹‡'Nl2+÷ìÙSUUE}ŒŽ;îÞ½›¾°‘ô¹Y³fØC‰ &Ÿ‡QÄ6“?4µf?ô¡±æ¾òÊ+&™¼í,¯ôzßû‰dèIßX¤)d;zôh2£RíÇÊ«ù ¨-„@í"€W›;ôÛßþ6Œ)΃íE} {fݺuT,¥,)8·p¢ÿõ_ÿ5Úæ\²—‹ÚµFB  P8f+˜¤³‡XÔ0}8ë —_~ÿ–yï¡ã= úf0œþùspÈ>ãÖ­[q˜:t³,8fè s,íĉL„*¶±(Q„€¨#üã?þãUW]õ•¯|åÑG%Z€‡½7öíÛ—ø« O©x¢6oÞL­zÎújg¬?ÙË…/Dm! „@ mleŒA 2Œ-**¶hÑ"`3·CÀâvºûxâ 8B»‚³Å&JÕÅN"Î-ö&Š(~! j Ë/¿œnž{î9F¼á†yä–öO»víHC@'a£˜\V´´šëOMM !ÐPwߪ3ÏË.»Œð¬… ¾óÎ;ÈaoѤKaa­i Á K–,±x/Gg’­½–-[²epüøq ½wg­÷ Üa¢4ÓmñâÅì²ãWCZG€5äµ×^C Šñ "0x‘ü¥¼Éc«…mùã^þY¿( ݦNÊjÞ¯_?Ba¿‹ÚB@Ô.X·ÝvFn-bØCDW\òÞ‡rOðÖïý}ðƒ„XìúS»ÓÔèB@4HÎ!}CâÄš·Âj#Ž3†Õ û)‘-‘ˆsˆ¸usàÛ‹¼è×¼ys;ŒåÄÓ§Oãß‚ÈÛ‘NTÀ“ÿ0M€0 AýùE‰SÊ!àj#Zî<Üä}pÃ,Oï2; ëf–‹%…^–õÇÉWCFˆ€ÕF¼¦Oߪ7Í3}3¢p½s–IAôïòà–ïÚµkÑŽ‡Ø,×þßaþüÏ}ó(føÍÒâ”/*‘31Mš •Í#DœŒ‚¬ÚXWØ7ð|éK_bM$ƒ3uëÖA!qüÍ7ß¼bÅŠS§N%2@tbŠýQäõ?ùÉO¨qFÆ/#dú‰Î¤Û»w/DL½/~ñ‹v–6?ó´cMŒÁ>Ë+9QZ¢þLÕ†`¬Ò[n¹gÒ¡C‡óĉgCŒL¬XLI“ì«\DSQ(‰̵à;н{wÌ ¤q–ÊtˆÙŸüä'IŠ 1þóås6†+QU¬ü—^zɤñUüñLÛôñ•Lìè?ßíiÓ¦ñ­ð='Ùo¤)`÷EÆ—<Ýd{7ÅóŠ)HNœË?ýÓ?}ó›ß¤pÂOúSìc.œ1챞µN±µ(ÿõJĤ^Ì´Ö¡–B@¤!ÀBÄÿÆ—ÞL4™b¢-\Ž^سØ•X<wîÜ™äò´ù5íÖ­5§ñ àÊÚ³gOUUÕx:vìˆAF_ØHßܬY32³'2˜|ÜWˆ ²·S?Rù-¤6¢qâH»ð ?ô¡}ô£µ ‰üþ1S‚aÆ Ÿýìg32!å•KËPÀÍ4VÛtãóÕW_ýùÏ>zôè¶mÛ’éþ‚ .ÈèzÅÈÄŠÅ” ÉNUÿ"ºáLIœ%\ æÂfÜúõëí,Fò}Ãæº '?Q‡XÕ {pè+™§/üT”bÓ–o¥]bôùÙ‡ÙsIë[ìÝÏ+¦0V<,¼€8•ÉÿÉcß+:&ž¦j­Óó_¯“ú5ÓZ‡Z !Pv ÇlC:{ˆ_YκdìñºÛï»è¢‹‚¾ çŸ~Àl‡÷ß?žªÍ›7Oš4 Ã"N”­[·þîw¿Ãëƒ}å¼óÎëÔ©þ6J¤[“ar9r„ˆ“'žxKŽÇFxn,-žé1Sò T^É´<  | ¶›®,¶BpnuèÐÁˆâ@JD&P _N@)(ÙieÑb(œ9s† 9³¹=ÚªU+w¶¨FšªVÚdÎ7 ƒ;Å)™Ø7æ7Jz‰üÙ ¤Í%QT1MN<¯€’xðº%Î-¼¿\5ôçÂ1tÚZÕ‘S¯W€Iýi\j!PMŠÞFÌßÛF .|çw`coјyž>|ø0í4†@æ’%K~øÃB$ŒˆÞ…$ˆC"·Ø¬d[­eË–äU³Âî€õÅÅuàÀ5kÖ°‡%m  IŽõLSÀ´uŸÚŽnÝ/^̆,[¨Ì:M ›Q"2±b1%M²SÆî"::¿g\ˆ§žz û†xâçzöìéÎÕHÔ!V™ì cƒrÝy=Â}ÁÜXNÉľŽ-n$¢³AÉV†Ä¹$ŠÊ&&ʉçSç‚…½5uêT6å‰úÇDæ™$qˆl­êÈÙÄ9:ÝbLêïLݤÔB ^#PNÏVу>ÈRŽ{ oÎ'jÄ‚Aîä|á…°yAìòË/ÇùýïÏËnlE!ùŽ;î Ü„-Bö­xáÄ áñêÚµ+¿úX`œb÷@.¤¥iR!ɱžèg¦Úôçw‘ðí~ýúáÎá ¢mº%"ƒeˆPrªê_DÓóÜsϵ͆á _ FÞM¡¨FâõJD•œXà0oÞ<üšDÊ£8%¿óïÄÓ ˜ýÃDôø^ù<ÖÎVžÄ¹Är RåĘÄ4m.DÇs?~ÿûßçëôÆo°«˜8DAÅêCÚM·%艷O]˜‹tB 1 pŽÅ•ÇS}hÞ «8fÌ~ðŸbž4 þâŽmÓÇxØôa£yóæv3¤‰‚Îëx˜Y.2 oTa¦Ø)'3QBö@å•KC¥luö‰\fÊŽ˜-0™X±˜’GÕà":•°´Ø¦á—ÛQJnij‹Uå§”±Ò¢Á|%ã¾ÙŠ%¢wÉVÀñÇsq§ŠjÄrâyÅ”Œ¹àÖâq…—Ê5¢( +ÍœV1cލc±ŽÏ´ÒHJ¾%#`µ¯éÓ·êùrašÅzk#þéW<Ö€è+Þb#ïQ|6ƒÂOopsÁ·Šb†€ß?ô;Ý,-Úñ)¿#íìâîÕ‘K+¨@ m|è¨Ý©ì%ê+Sò¨\D§‘þ®Ø ¥m@·Ìa‘Ãxv±ª¸d⎎â+é÷Í£C"zN²kd+àØü¹äÝu ¾;åÏ+Ï…W^jáEì#©œ¥…„xˆ@‡ºyÏÑ×3F©þÎÔŸ—ÚB@ÔG²Œ-Y‘ÝjõêÕ8–êãܤsA€}ÆZפvu¨ÝÑ üÛn»xñ•²=Í{»µ~E¤€B ñ el­xv@ì8°´ñÀ¡™ ÀK‡ÿ}Ͷ0Ü­ŽÏÚøu\I©'„€HC ËØ²˜­´ž¢ ! j´˜­ZC!  j>ò•3õƒ.‰B@! „@€€Œ­ ! „€B œ6¶&NœøØc•sLÉJG€×ÖH;™~¾Nœ©JÖ ¤¤„B@?û³ÂÆIJÉWY¬n¿ýö7VGBãé;þ|+Yצì_Ä:«d]Mú”ÿKX^É’&„€¨(…­9sæ¬]»Ö”;vìöíÛ)SHööY³fñ9‰¼ÉwºlÙ2c8vì¹Î{õêÕÒ™;wîþýûgΜù¹Ï}ŽÊ31KYYDQs:˜-nžaÆ‘ÈÕ·ÆÍ6tèP²2’7È áMžQ ?©™X±˜’&ÙW5¸ˆ¦$¢P’òˆdb£ÌÀ=÷ÜóÊ+¯ ³¨Ú¥K,lÌDªX&êk®¶(ˆ@ü%ô YIVäð $Ë?‚·LÁAÅ „€( …­`˜áÇãnéܹ3Éåi³çÕ­[7 ´a“áÊÚ³gOUU51:vì¸{÷núÂFRïfÍš‘º:‘Áäã¾Bl0„×üáÁ%FIDãÄÔ£äµ)ƒh¿î¸ÙËêmذZÔ™òJŽ¥e(àf«mºñùꫯRnyôèÑmÛ¶%Mö\!ÐõŠ‘‰‹)’ªþEtÙ’x¸Ì¥}ûöëׯ·³·Ür ŽL(ØÙ°Åƒ:!jœÄ_B÷ýL”ñÅNäQ!P9²òl%Žêì!~Aù•…ÇU-dÿ ÿ–ÛïÃÑHÈ`8ÿüóf;´RÇ™4i’3±]µuëVÜ?¤ÃÆ>ƒr1:uÚ²e y±Ož}3ÅN9™‰²*¯äX*e+¨³Oäê0SÞ0pÄl‰ÈÄŠÅ”<ªÑ©„¥Å– ¿mŽ’ØH4‘SD!à#à×FLûÂMÏ—Ð… : Ù·ŒcSC!€ÕF¼¦Oߪ7Í`s§Ìˆ"ÒÆ(úw®Aôo±‘‡÷Èó4øé Ø0|«(føýC¿£ÑÍÒ¢Ÿò;ÒÎ(î^ɱ´‚ ÚÆ‡îuw*{F‰úÇŠÅ”<ªÑ©D¤¿kg4Íà×)!#ö%„³I“&1?”ì[&±‹ˆB@ò"elõîÝ›Œ5dQ±TÞQ%M! „€,ckų»@aÇ¥ MSº‰€9ðë¦nÒJ!P,cËb¶ ŠƒB rø1[•E’…€T󑯜©2´Ô)! „€B@4Ndl5œë¾hÑ"Ò5œùh&B@! …­‰'R¹AL¶L⦛n¢diŠ’sëØ±c¥õU/! „€B B6¶ÈAJ¾Êê ûí·oܸ±:Oßùóç[ ÈŠNYW¤¢ðJx…Ð÷¶BÀJ¬•F °±5gΜµkךcǎݾ};e ÉÞ>kÖ,Rn’¯™|§Ë–-3<+ä:ïÕ«÷9*ÏÄ tD,E”u×]wÆÍ3lذk¯½ÖÕ·ÆÍ6tèP’ÈS—à ¥MžLâ@¾ðòJŽ¥%*àÏ4QmL[ è¢'EÇG}ê'®Zµ J¢@F´Ijzçw××¾ö5ßQV¬Xalä•ýüç?Ï…+xEâééPÔ0ÁJâßJh2bĈƒšJ¬$/¾ø"í<·L ÏBà !Ð8(llQtÜ߆i·¦OŸŽu5mÚ´ L˜0§Ÿ¬ƒdv†‡ŠüÒcœQ ÖêÂ@ÁD,0*iX€^ˆÅ4hÐøñãýË€-5cÆ ÊË`K9ÒNQ¨‡Q0ï¶mÛ¶oß>ˆÔöqæ œmÚ´!‹t¬Iå$'Ꙩ€?ÓDµa:Jê¶–åÊ•+{ôèò‰ýIÑ&lëÆo|àøá1o"¥¬Ÿ|òIcªËñ³”}E§ ¤C!PÃ+‰+¡Éo¼a%YisŠlò4òÜ25< '„@ãD °±à2|øpÜ-;w&¹FÇŽwïÞM_ØHúܬY3’¡'2˜|ÜWˆ ¦ŸóÞ^\b”D4NL=JþQ{‘2ˆ¯¼ò DÜlŒeu‡6lØ@-êŒLHy%ÇÒ2p3Õ6Ýø|õÕW©ª;zôè¶mÛ’þ‚ .ÈèzÑ`Ÿ·"uûôé³k×»iÒpŒQÀç×­[7`À€‚W$žŽ?„ÚB Vð¿·¦€»•õÉyË$öQ!P^²òl%Žäì!~’±xàqU Ùÿ¿åöûpA2Î?ÿü€Ù­ÔñæÍ›'MšdÁLl8nݺ÷Ï¡C‡°Ï`£\L§N¶lÙrÕUWL;!¹dÉ‹÷"Î-0ì¬xΞ=Ëf%Ûj-[¶d_ìøñãìX_\\X³f {ˆUHr¬gΙj;¬ûâÅ‹Ùe •Y§ t3²¾ÄókDŒ¾=<|FìÙ³'ï ,]º´ÿþFɾ"ñtœbjZDÀ}oc-àá„÷flåI»eâ¾¢! *@9-‹ç÷÷ïòbi?pà@Ì â[Ó‚I’/êù矇H”+Ññ„ÝñÞõ°1 ÞâUÄ)S¦ó„Ç˶°À8Ŷ\tL¨B’c=Óf¨íÎÒ}êÔ©¯½öZ¿~ý˜,è¥ t3²¾gƒpìÑ«¯¾Úˆø¥°ê.yïÏ(ÙW$žŽSL !P‹¸ïm¬Ã!CfÏžÍã›ï8†aH»eâ¾¢! *À9WóмVq̘1¬qØO1O…Ÿü¦M›ú{Oøöy·®yóæÖ%fH? f–‹ ƒB‚Ì;åd&JȨ¼’ci¨”­@¢Î>‘«ÃLyÃÀ3ž9s† b®™ hã}OG)xE§ãº«!j ¿6bð½õuà!‹7‘}"íŒ[&àÔ¡B «xMŸ¾UnšÆãÓ͈b[Ɉú÷™¬Mô?ÞläuíÚ5>›A!Z"8‹¹à[E1CÀïúî,‰ø”ß‘vö@q÷êHŽ¥T Ð6>t¯#¸S3â•OذJƒß›·ÞzkÇŽÎÑh¢ ^‘Äé85Ôµ‚@ð½õuhÒ¤‰èÚ·ŒãQC!PQ²Œ­Þ½{“±fõêÕ8–*ª„„W‡~X±Ò K¾B@D²Œ­Ͼ›¨iÇ¥‰=E¬_¬ÚòÓú¥°´sà»C5„€õ ,cËb¶ê×|¤­ ?f«MMÓB ¾ PÍG¾r¾X_ “žB@! „€¨1dlÕÔ5:ŧ­pdŽªÁ„@%àUħŸ~š´/$:N‡Ú V™*ñ¬ˆB@ÚB °±5qâDÊ!×–~mÜ›nº‰ZÕŸ55§IÓU}9’ êÜäæ%¥Ö¥—^š¨iç¨I•xJD! „@-"PØØ"eùH«£"Õ‘©ÍW §ïüùó­d¥§\ÂE)¡K¥g!ù ê"téÒ¥}ûö®U£š¾&+„@ýE °±5gΜµk×Ú ÇŽ»}ûvÊ’½}Ö¬Y¤Ü¤@!ùN—-[f it§bÉo»üÆoDƒ:_fAµã±D1ØXݺuûÌg>ÃJB²ßŒ/mþû1E! „@%(ll£>ßIçÎù}¥Íž+ •_±ÉpfìÙ³§ªªŠúüïÞ½›¾°‘ô™ä欉 &÷bƒ„éç¼÷ÇC*.1J"'¦Eg?ô¡QÑ #âfc,«;´aÃjQg dBÊ+9––¡€›i¬¶éÆç«¯¾JUÝÑ£G·mÛ–¤öÔzËh½¨ÒýÒK/!üøW„Žhe§bÄü‹OÌ`ýO¿ Î6ê X$2¶Å+“}Fœš©ìÓ§Ï®]ï&i+¨¶?„ÚB ¾T£«e2¾´EÝ#ê”B \dåÙJÃÙC¬hX<𸪅ìáßrû}÷Üs ªHÖ¡ȉ@ö—6ÿý˜s8± ! ªƒ@ÑÆVÆ`ücâPQ±E‹›mie0üî°]»v¼æM¸A`˜\GŽ! é‰'žÀ’#ÆË±ákY¿~=–Ï»˜)y*¯ä@ZP>PÛMW;‰8·:tè`Ä‚1‚)DÍÎ#ž-º¸=Dœd‰ˆ9ž §k8±7ÜpÃ#<Â! v‡ƒ5Ž=j!ÌÕ:êPäA à—¶´û1ÏÐâB@”€@ÑÛˆc0DxÖÂ… ßyçØØ[4fbz>L;!¹dÉ‹÷"Îí*~ËùE‡‡26+ÙVkÙ²%{XÇg—Êúââ:pàÀš5kØC̨B’c=sÎ4PÛá`Ý/^̆,[¨Ì:M ›Ñ%—\‚«ŒP*ì]‚ˆù52Ã( 1wQÒœ2®áº@éÙ³'ï"ð~ÿþýË/¾È DøáYÄ¿=Mm×E !PÙ_Ú’ïÇ4Q! „@ÊéÙ²øwާýÄ#Î'ê£ÄÀÉCøÂ /`=.3Šb+<Ž!Â+uDÇíŽä;RÊü„¼E8‰yÂãÕµkWžb±À8Åî\HKÓ¤B’c=Ñ!ÏLµè?uêÔ¯ýëýúõcoîæ›oæ ƒDnFô%dê_ÿõ_yY *¬‹ÙJCÌ]’M$Bê”q ×…ëˆV\ L^Œ<ÇðÖ[o <øÔ©S„ô]}õÕÐÓ.„뢆(´oµ‰*ù~,AuB@äAà‹+Yš·Âj#Ž3†_Y짘'‚?†8VÁîv¸š7on]b†4QÐñ”`f¹È0(§OŸÆL±SNf¢„ìÊ+9–†JÙ $êì¹:Ì”7 1[ >EËE8]¿{¶Ú>§ÚB @ ­6bö—¶÷c ˜…€h<XmÄkúô­úpÓ<³6#Š- cþÓ¯xÜ™è+~¶ÙÈÃ{ŸÍ ©œÅ\𭢘!à÷ýŽFw¿åñ)¿#íìâîÕ‘K+¨@ m|è^Gp§²g丮 Äyù%`Àrò»Ó¶\_® N¬;vठØpCò9ÌV;æED øÒü•¸ƒ!t(„€ȉ@–±Õ»wo’'­^½ÇRNqbkð BÁ‰°Gì1pt‘o¢`/1! „€hld[+ž}7UÒŽK(šoNVmùéÿáÜþnî{ý ²#`ü²‹•@! „@Í elYÌVÍè¡Q„€‰¤Ål%2‹(„€¨Õ|ä+gê‡JLO2…€B@!P¯±U¯/_ªòŠ¶Â‘i¼WøôÓO“’ƒœ±i<1}Ñ¢EV¥'>•F)¨I 2ÓÆ]! „@D °±5qâDÊ!×AÕ¤J¼H-ÈêOúЯ½öZ†F!%é!C.½ôÒ ¶ài½¨Ï³ jâdæŸ{~ÎlÝtV! „@ ³eÃóz?©)«£ É6ùu,*SWu†«×}I1Jв˜IÞ»téÒ¾}ûÒÆªÄ5Í?wÇY 5JD½„€B@¤!Pس5gΜµk×Zÿ±cÇnß¾2…doŸ5k)7)PˆµlÙ2cÀíA®ó^½zÁcµtHh¾ÿþ™3g~îsŸ#ßfÌ@GÄRVQÔœÅ3lذk¯½ÖÕ·ÆÍ6tèP’Èßwß}V‘fòäɸO¬# Ä8K½ŽÄ|áå•KKTÀŸi¢Ú˜¶oFÏ·ß~{ܸqdi§~¢å¸Jèφ#FÐ…bˆ$Ñv§âŽdÞæ™gp)qQ¨|CJ_Dp&~µüqÕ®/p#p×Ôm¥§BÀ!PØØr¬Ö>|8¾Šß‘\ž6åYøÙ¦æ46®¬={öTUUQ›¥cÇŽ»wï¦ l¤oÖ¬?ê‰ &÷bƒ„éT÷ã§.1ê÷'¦Þ…^HíEÊ ¾òÊ+q³1–ÕÚ°aµ¨32!å•KËPÀÍ4VÛtã“2Ò?ÿùÏGMšPÒd_pÁ­Uº_zé%„ààŠÐ­8•Ø‘‹B®yö+œ:H1¤N“ĆMc†¢4‰»%ãkæºøj$NÓ8ணõV'ê©òR[ÆŒ@ᘭgñ[ŽÅÃYWµý/ü[n¿IÐ7ƒáüóϘíðþûïgoqóæÍ“&Mb©…ȆãÖ­[qÿ:tû ÊyçשS§-[¶PªïäÉ“©% )[z•Wr -ÏLcµmÊ|RQT¯¸â GÉh<{÷î=÷Üs[µjåºX£`GØbH!EVG7PÆ×ÌñøŒi¦}µüîj ! „€¨E[ªPÿ‡ŠŠ-Z´ØlK+ƒ!àw‡íÚµ#71Far9r„€$ŠÉ`ÉHäØlZ¿~=–NÌ”<•Wr -(¨í¦ƒ+‹Dœ[:t0bAX'gΜaçÏ]ÜbÁŽxÑ!E:ðÉ5Å´55üO7„O¤]²&œœ‡%µrÊ›B@j"Pô6bÆxxø ÏZ¸p¡Åú°·hÌ­[·>|ø0í4†@æ’%K,Þ‹8wÊ`éuà 7ÀÃþ›•l«µlÙ’lOÇgóÈúââ:pàÀš5kØC̨B’c=sÎ4PÛá`Ý/^̆,[¨Ì:M ›Ñ%—\‚«ìÉ'ŸÄ6"òʬ´Žn¬4HÙ«ÅÚa^Dp—Òõr×ÔQ\£dMœ„ü §FÁiæ—)Î:‹q„|]ë¬zRL!†@9-‹çµ5ÜK„`óʘ:pà@Ì Â™Óå°žþyˆe?`À€;Þû£ì1[„oN6NbžðxYاØ0"‹ŽiUHr¬gšÁLµÝYºO:•DYýúõc² —&Ð͈¾äA œ÷èˆña1[iÝXi’‚köìÙýû÷g7O›ã·†»¦ÝKÓ$QT6Ñ©QpšÙrt¶^ ðíov½PUJ ! |α¸rŸdí‡æ­°ÚˆcÆŒá' û)æI£à!øšlÇ€»…®æÍ›%fpœqƒw!1³\d §OŸÆL¡Á)'3î%{ òJŽ¥T QgŸÈÕa¦¼aàˆÙ3§ˆ'ŒÈqÇïÙ!ňĈáÕN'Äo×Ô?E»dM95²§YPšê ®6"ygð"ó”U•”JB@4l¬6â5}úV}8W.L3¢HGe°üéW<†‰è+~¶ÙÈëÚµk|6ƒBœPpsÁ·Šb†€ß?ô;Ý,-Úñ)¿#íìâîÕ‘K+¨@ m|èâÄÝ©ìù®ëb쎉oÒ¤I Ä?´kJºZŸHÛ²‚•¬I ­àau¾Z…‹¡N!€õß½{÷:¥’”B@äA ËØêÝ»7iŠÈ"ˆc),ñ4BxY¡ÎZS®ØR¯•q5¨B šd[+žÝ…ô–Vs uB@TsàWG‚ú ! j,cËb¶jQ9 -„€p1[‚B!P[T󑯜o#ÖW! „€u[uöÒ­Ø¢E‹H?Vt7uB@! *‰@ackâĉ”C®¤’ý'x¹Z:.¦EέcÇŽÓC¼B@! „@Å(ll‘›”|¤ÕQ„—7n¬Ž„ÆÓwþüùV²†§¬kTÀk¸з´ÐÔEº€@ackΜ9k×®5]ÇŽK^AÊ’Wdå¤Ü¤@!ùN—-[f xVFÕ«W/x¬–Îܹs÷ïß?sæLrÊ“o3f #b©…Œ(jN àæ6lYÑ]}kÜlC‡å%pÊÈXEšÉ“'oÚ´É:’@Œ³d>LÈ^^ɱ´Dü™&ªiKMeô|ûí·ÇG=ê'ZæªDþŒhSÄ éBŽ4;…²ðà AƒÙˆ¶Á5BI91ìˆ*áû` èS‹@ü-õ#Fø ¿ëgüê[}C(˜ˆ6oÞ<«©0Ð ±˜nXãÇ÷ç€-5cÆ ll©‘#GÚ)JP3 æÝ¶mÛöíÛñòË/wæ œmÚ´!éy¬Iå$'Ꙩ€?ÓDµa:*@9÷1qV®\Ù£G”OèOŠ6õLºté‚i‹}FüŠ!‡R’$K£À=÷ÜCu£XÛà¡cùrÃÎb¿Â:9ˆ¿¥þ¢AÙD+ÉŠ4¾–¤?¥‘ç–É9ºØ„€ÕA °±H>|8î–Î;“\ž6{^ݺu£P16®¬={öTUUQ2¥cÇŽ»wï¦/läønÖ¬ÉÐL>î+Ä Ó©îÇ^\b”D4NL=j$èC¢ ¢FÄÍÆXVwhÆ Ô¢ÎÈ„”Wr,-C7ÓXmÓOÊHSzôèÑmÛ¶%·;¥ 3º^4n¹å<ˆíÛ·ÇÀEˆÉᡸ:¥åbmýkdÒ9cسØïƒõÒ§(ø[ên¥DQ9o™Ä¾" ! Ê‹@Vž­Ä‘œ=Äo6?á𸪅ìáßrû}øB  Ô˜íðþûïg?kóæÍ“&M²`&ö¶nÝŠûçСCØg°wÞy:uÚ²eËUW]uòäI*+ïܹ3[z•Wr -ÏLcµ'NœU*@;J†@ÇCãâ‹/¶C+hxüøqÌ\g§Rš]Em} Öä@Œa7Îê|âqEùH[4LBÎ[&ÿpâB@”Œ@ÑÆVÆHTßÃÄ!Z¨E‹P2~wØ®]»åË—?þøãar9räî»ï¦D –‘Ž(%|6XZ8`0Sò T^É´<  | ¶›®,vqnuèÐÁˆ9: ÖÀ:sæ qlf=z´U«Vœ ´µ:†v vˆ‡,öDfG,Mg×] !#ñ-å–Ÿ%ˆ'1úúÅè‰"„@m!Pô6b†¢8NؽZ¸p¡O°·hÌ­[·>|ø0í4†@æ’%K,Þ‹8wÊ`éuà 7ÀsöìY6+ÙV#‰€$Ü6ìX_\\X³f {ˆUHr¬gΙj;¬ûâÅ‹Ùe •Y§ t3r}ýFX=õÔSüDa§îÝ»·gÏž±¶tq×ÈïîÚi°;†ÄFšÎ‰Ì" ‚d|K -àá„÷flåÑׯ žbB Æ(§±eñ${‰È!^¬³i 83ˆøÖ4†`¶ä‹zþùç!åJtü€îxïzØl²)Æ«ˆS¦L! —…maqŠm¹è˜6P…$Çz¦)Ì4PÛ¥ûÔ©S_{íµ~ýú1YÐKèfäúúsÏ=—Ã¥K—‚á­·ÞzóÍ7wïÞ=Ö–.îùÝ]; vÇØHÓ9‘YD!PŒoé!CfϞݿ6ßq #J_¿‚xŠACà‹+Ç{hÞ «È[l¬qØO1OLÓ¦MmsÊxðíón]óæÍí0fHw!1³\d”Ó§Oc¦Ø)'3QBö@å•KC¥luö‰\fÊŽXšÀS§N±«ÂÏ“k\#Çéùaw]¬QšÎ6ZüÚˆßRž"ø†[´¢•¾~>j !PVñš>}«>Ü43¢ã1æ?ýŠÇ‰¾â 6òºvíŸÍ ð»œÅ\𭢘!à÷ýŽF7K‹v|ÊïH;{ ¸{u$ÇÒ *hºðsw*{FŽ-hŒPbmƒkðs˜œ oi:Bt(@ ã[Ú¤I“DˆôõK„ED! j,c«wïÞd¬!EŽ¥šÔIc ! „€B Á el­xvóÜq`iƒ™­&"„@}DÀøõQsé,„€,cËb¶“B ðc¶jQ -„@cFÀùØ"«²Œ­Ä©‹B@! $$­Ìé‡ üñ2¶Î÷aÑ¢EW_}õ%—\’8¥ì³A—¢˜ƒ¾:B@!ÐPp/5ÁÂy¶&NœH9䢄йdnºé&jA–Öœ[ÇŽKë›}6èUsÐW‡B@! „€@ac‹Ü¤ä#õûÛ¾ýöÛ7nÜXl¯ÆÉ?þ|+Ù8§¯Y ´’d€£SB@Ôe æÌY»v­ÍaìØ±Û·o§L!ÙÛgÍšEÊM ’ïtÙ²eÆ€geÔ¨Q½zõ‚ÇjéÌ;wÿþý3gÎ$§<•gb:"–:Lj¢ætnžaÆ]{íµ®¾5n¶¡C‡’WºV(mòäÉ›6m²Žø÷8KEšÄ|áå•KKTÀŸi¢Ú˜¶ÐEO*F7Žz>ÔO\µj”DþŒ\;†ÈN‘•ôÎ;ï̯}ík®ÒQ~±N¾B æVÿVB™#FQ ?)׎!²SDbÝxã<ð?KÎט_¬“¯†¨y‚•Ä¿•Pæ7Þ°’¬´9E6yún×üeÒˆB@$"PØØ º >wKçÎI.O›=¯nݺQù› gÉž={ªªª¨Ñ±cÇÝ»wÓ6’>7kÖŒdè‰ &÷bƒ„éç¼÷‡Ó—%S¢³¼@D+Œˆ›±¬îІ ¨E1 )¯äXZ†n¦±Ú¦Ÿ¯¾ú*UuGݶm[ò¶Së-C ëå1DvŠ]œŽ:ìÓ§Ï®]ï&Q+J¬“¯†¨yü•ÄFw·R¢2ún'Â"¢eA€ŸÑÄ¿4áE¿èì!, ,亪…ìáßrû}øW‚Q3¨!0Û!u”Ù[ܼyó¤I“,˜‰ Ç­[·âþ9tèölÔ¢éÔ©Ó–-[®ºêª“'ObLìܹ3[z•Wr -ÏLcµ'NœUJê:J†@Çã1DvÊU«Äù÷ÜsÏA,J¬“¯†¨ ¤-¦›¾ÛuáI!ÐPàwc+˜Ä€â‹6¶\ϸA 2L**¶hÑ"8kÁU ¿;l×®ÝòåËüq‚À0¹Ž9r÷Ýw?ñÄXrDf86›Ö¯_¥…S3%Ï@å•HË£Êj»éàÊb'çV‡Œ˜S ÌxÅ!rÂi=zôÊ+¯¤‘_¬ß]m!P[ØJ’8:· t– žÄh軈’ˆB@” ÀÞʰ´±èmÄ -/»ì2³.\hÁì-sëÖ­>L;!¹dÉ‹÷"Î2ØDzÝpà ðœ={–ÍJ¶ÕZ¶lùË_þòøñãìX_\\X³f {ˆUHr¬gΙj;¬ûâÅ‹Ùe •Y§ t3r}Ó ‚¨a~«ˆÀÃó‡ÿ/('M !Pwp+I¬¡<œ° ðÞŒ­ïÖ5oÞÜºÄ i¢ ã‰ÁÌr‘aPHa€™b§œÌD Ù•Wr, •²HÔÙ'ru˜)o8bN1DgΜ!Ä?›,†ž“I#§X¿‹ÚB fðk#+‰¯Ï<X¼‰ìi뻢C! J@ÀÊï`åÌ oF”cþÓ¯x<6ÑWü<³‘×µk×øl…h‰à,æ‚oÅ ¿èw4º³âS~GÚÙÅÝ«#9–VP@ÛøÐ½ŽàNeÏȱÅá…PÎb³Æ¿FÐsŠuòÕµ‚@°’ø:4iÒÄ?tm}·j!P[d[½{÷&cÍêÕ«q,Õ–~W! „€õ,ckųï¦bÚq`i½ž¡”B ¾#`üú> é/„@}G€mAöK˜EV€ü„QƒK¨.B@! „€hx”fiCj€<ç,giÃK3B@! „@¥È ï˜*­ä ! „€B ¡"µØPç¬y ! „€B Æ±UcPk ! „€B 1" c«1^uÍY! „€¨1dlÕÔH! „€hŒüyÉï16F´4g! „€B@‰À9ÿó?ÿSd± ! „€B@äEàÏ•ß!/TâB@! ê-d­›‡Óÿ?‚d_Ë›u¡ËIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/beanshell_preprocessor.png0000644000175000017500000007053612032647206025633 0ustar ebourgebourg‰PNG  IHDR8EnC#[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí üNU¾ÿOQéêLRIîÂA)—H.·˜¡†˜2ÅII˜QÇ-Í_7G¡“NÆÑQhä0Rã¤{¹t“LH¹„r›ä–tù¿§uÎj½×ÞÏÅóü~Ïïçó{y=Ö^û»¾ë»Þ{?ë»×åÙß“öíÛ÷ú\%pr®&»D@D@Dàïä¨tˆ€ˆ€ä49ªœ¾<2ND@D@ŽJ÷€ˆ€ˆ@N£ÊéË#ãD@D@ä¨tˆ€ˆ€ä4¢9hÝ®ÿÎ9çœ .¸à´ÓN3þå/Y²dI… î¼óÎTm” ¦ªMò" " yI ÒQýû¿ÿûŒ3Œ)E‹-Q¢Dƒ n»í¶3Î8#{ö}öÙg#GŽ\·n­¢Q£F>ø ‡Û¶m{ûí·;fO%Ÿ” ô¸ ?ùä“ÿñÿ±R¥J·ÜrKõêÕ’ÉfV[25JFD@ HGeÚù³Ÿý¬Zµj;wîܼyóK/½tôèÑþýûgÁÃ?¼iÓ¦ /¼°M›6ß~ûí;ï¼óÝwße¯ºÍguÖW\ñÑGíÞ½›ßDoذáÙgŸ=ûì³cŠÄœÊ¬¶˜ŠtJD@ Žê’K.ù·û7š}×]wýõ¯}ï½÷²‡€ ?¼ú{÷î}ÕUW‘èÚµë÷ߟ½c4—*Uê@à¹çž{þùç÷ï߯ªS§NL‘˜S™ÕS‘N‰€ˆ@á#ÀQÙŸþù8*FW6çý÷ß§ÿä“O.\yå•={ö<å”S8Ë0háÂ…üñÖ­[YgbîŽ ÃbÅŠqjæÌ™óçÏg&í_þå_ž~úé5kÖ\vÙe;w&‡³gª ÏDYã¨È$‡O÷oïÞ½á²F Ê$·xªé¦M›â¨(uðàA>m:tè0~üxÚ8yòdò“¬:Im8ÅÿüÏÿ„í7ß|S®\9êjܸ±µüÓO?4iNýË/¿dôÙ¤I“.]º˜³1f¼öÚk«V­BI®æÝwßÍSˆ)s*Æ’(ÖN%D@D #‚n ¬”e¡¥K—.[¶ŒÕ©_þò—F€} ÷Üs‹Iõë×?餓fÏž=bÄs /µ|ùò²e˶nÝú믿þóŸÿ̤™9؉Žù´Aƒ!ó·¿ýmÑ¢Et÷æ,ÓŒ5kÖ$ÿCƒ“ï~8pÀ[™“\ ©¦QkŠÐ"¦ øìû￟~Ÿ’™|ÕÉhC-ãW>Yñ­_¿žAíÔ©S,Ô1âärà×6lX¤H3 7ƒ Äâߊ+xn ÓªÆïR*æT¼%^ÆH}Š€ˆ@ $Q½ûî»×_=¾ŠÞ­oß¾ì, nº9Æ4 }ºuëvÓM71Äá“.˜µœsÏ=÷Ö[oý×ýW3â/˜0d@€;vìo¼1zôhžñq?fù§OŸ>ø?Øë¯¿þÖ[oõêÕ«eË–nk£ÊÆ›äjH2}øðaÌ[¹r%Nš"¬W•/_Þ–eÅÃèúÏ<óÌdªN^krcÆŒáóšk®™¾{óÍ7ü‘#Gȱ Mðd§Ÿ~z5Ȥ <á `ÑG“÷b\Em ’ˆ*o’«!É4 yä‘yóæ1fbÚíÿý¿ÿÇÀÑ–ÅÎÐYC ™ª“ׯ¾•Ï?ÿœŠìzXíÚµ9dðƒ>رc‡9 "ã¥8ež â͸ôÒK‘äa‚F1D#mÿ¢NÅ[b‹»(l¦" "A FTx©aƱÂqº9f™p$Ìù xºwM1C˜/Â¥™þÔœýá‡\1†eLX‘c>ÝS¤9ËHâÚk¯ÅK1´b‹ü 7ÜP²dI#U6Þ¤@Éò.††8Ý2eÊØÚmAÖÞìâY2U'¯ ÷`j©\¹²Ià ðI j9eF´äïbí!o»(yžxå•W&òW·nÝšGЍSñ–ت]6S È ŽÊÔDÿȼ{ï½—'zöJØi–‹èò¬5Œ«piC† a;ò-Z´`køðáV ùjÑcæ©XÍbú1¾ìyçgÂ&ÅŒ:Kÿ‹ýQgÝüdªN^›qèg„d|Õž={Ì¯Çø)›=»qãÆ*Uª$o›Y€ÉŒ+k]¬o­^½šÍýúõCCÔ)[—×·j¥E@D «LýÙºYŠ0ifêJ—.m–”Ø ³§žz*(^оï׿þ5{²M›äs4»c/~elj4;­%ÞDŒI^ù ff¶jpæ'Õ~ø¡1ÒÎÔá™ìÙÅ‹šŒhx衇®»î:Ê2ðu5„OÙº¼–¸e•¬H0¢Âñе™_¼b#–pH=zôxì±ÇØï@‚%rèO‚\}õÕœå]ìâã7”bLÀ´¡»ÁÚÛ$懊&»XµbÏ4bxAö¾{åÝÌ“F¸’Og¶j´1å8nÜ8ÞóÄÈ’/¾ø"6³“Âì&7g×2Ëæ&èx``¼÷Ýwó‡µjÕ*^¼¸Ù¡n6X¢9êTBK2NR E@DÀK £b•ˆ™"öÐÁU­Z•ß?á~PDïÏnˆ &° ?l.ºè"v^0ÒB†¾uîܹü'÷‡?üÕ‘‰'&tT,Y±ù¾·‰ZØŸMljôZïfF™äÊd)ÙªÛ·o“`jŽ­•Ì€’M•ö—Rœ%‡½”̈òǸÓþæ,Æ ²·Åì`äJñ3.“¡s*Þ’,Á”Z8Éì€ä&ÈÞ¼¯¾úŠmÓveÙ*‡3{˜Í㩟dfð˜$¤à_|A)6 ØåŸäíAÒkRJÒÎlÕ¸mHÂÖÝphmÛ)¡Þ“eùl”§ˆUb1§‰·Ä*QBD@²AàxU6l’N°’ÝLa (!" " yI@Ž*/i«.” ÈQ¥ŒLD@D@ò’€U^ÒV]" " )£J™ ˆ€ˆ€ä%9ª¼¤­ºD@D@R& G•22ÈKþ7S¼úê«yi„ê¾ó*ƒ0¿£BŽai刀ˆ€ˆ@6¼ð Qj#¼ž-JQ6òGM˜ž µÒ)" "StïcOœ£Š)–g§† ì‘gu©"¼'À (þåãÚL‘÷E5Š€ˆ€üD áä™ÕO°”ÈA'´£"äàÖ­[ ¥a.ÌsÏ=÷É'Ÿ$s‘¬¤M$SJ2" " iH°FÕ©S'BC ‘H»h'øÞ<0iÒ$‚ï¥QYÚEÚ¶mK¬[¢UJñ–[niРAÚªlAÂ.X°€‰Q¢Y¸Q£FÄ#&¸pÅŠ­LTÂJÚ„+‰µGýî»ïN;í´víÚûÑ=“N»`ŒN‚N ñˆŠ¨ðDéÍ÷v4ˆ_wU©Råá‡Æc§=Œœþë¿þ‹ñÐøñãçÍ›W·nÝãT(~Ï=÷ÌŸ?È!„â%ràlÌaÚctꔈ€h‰aÑ-Zd¢˜»M}â‰'zôèÑ¡CºcÛß}÷Ý#FŒ˜3gãžž={nÞ¼ù/ùËÍ7ßÜ¿ÿÏ?ÿÜß²e ‡×]wÝwÞ¹nÝ:2Q~Ûm·­X±ÂÕNcÉÅ_|Ægùž³Ÿ}öY÷îݯ¹æ:w×ù?þñT}íµ×âÏ šÌ»îºkñâŃnÕªÕc=F&®Ž˜¶Æl"äÚèÃÄÌuÅ¢j1jã? Ë{Ùe—aó† Ć×_ÑúãÕÆ$\rŸ>}þùŸÿ¹cÇŽ(46Ù·oßfÍšÑÀ3fDéè)ËÒ çxõŒ7eõ)" yC ±£¢ï#ü˜1cèÙ]›èß»víJ·»råÊ?ýéOæÔŽ;ð78ª5jlڴ顇š;wnÕªU׬YCŸˆ 3xŒ¥QyذaøŒC‡mÛ¶Í:·›Æ©<ÿüó³fÍ8p É|ôÑGésgÏžwaÏd–)S†|ìY¸páÚµkMæöíÛɬS§Ε~œáTåÊ•i~ŽŸ˜Y†0ÍtÅÈñÖbÔÆÒ®™3g¢üÒK/E˜â]pÒñjc ¢âÄ’G3Ï<"|ôÑGÈ“ Cœ4ÃÄÆ{õSvôèÑ8¹×^{íöÛoGÆ›Ö6žý‰€ˆ@žHì¨Î:ë¬ßþö·ìs7nœk]ë:¬èàÞÿ}{êôÓO9r$ýãœÙ¨Q£xç,)>qc{÷îeT­ZµúõëïÚµ‹Q>F¦UNà_|ñE†S¥K—æ,^J¯¼òÊ/¿üOðöÛo›"­[·F€•'\¸ÕË6ü±ÄU®\¹õëדϋ!ž ljû4’±¨Z¬Ú¨ËxmÚ´a^ñ¾ûî³ëyŒfôàõcÔÆÄrÆgŒ>i`‹-hÎ+¯¼b2iK¥J•Î9çœóÏ?ß«ŸÇþx\`ñ̘Îñê7m´ÆG5Yù" "% 6S˜ZyH¿êª«XËa"Ëäð?qâDöV0¡GšþÑÚwá…â«8ÄQáÃ(B‡hÏ~ñŤ§L™bÞ–ÁYFW¦Ç´2ÞÄ7ÞØ²eKV•ð%xµ÷Þ{Ýzv ‹ŠL)fÃÞxã ÆXü1^Áª*[¶¬IŸrÊ)6óÖ[o­W¯^¿~ýð(ƛĢj±¢xPF{x<«•9ï¼óL:Fm|AhóÜ`=CUfê@ j¦mEQúyä²\Çû￟ Š| ǫߨµÆÛZ”¼!”£ÂÆOtÌ鳘X›6mÚwÜqà 7 0€¿$Í-Y²$’íÛ·gdWŒ©3vŒ®è7qT,8…F†Áƒ>ˆaø­$÷Ú1EI–,YâÖbÓìu ×bÏÆ$þéŸþÉÌøyebÔÆd4vðàAû+n©<0„âY‘VÍš5MuQúÅ2*±²‚wa0Á$e¦^³~¶gÏ”³„Ã*ʱ*J!+^ìJ7:ÿú׿ÚY@Þ[K@&ôÕâWh @`Ê”•¿¦M›m,à1 Ê´¼úùÑ«†LÆþüç?Çæo¾ù&œãÕŸFUDD@2H YGE•ìÓ£4u7iÒ„y­±cÇâ9˜Db‡} ɘuöÙg³Ã‚GþáÇwéÒåÉ'ŸÜ½{7£úP>c4ðû­† ²?Í%J” Ãe›Ã;ï¼Ã¢‹O,Q–E/¦ÅØòG,á0tp—©\å8'v‚Ð"†SL<šy?WÀ¤½µ„ÅRÍI[-3¥LÖ1kzýõ׳—ò¦›nºúê«Ñöûßÿ¿Ëo¶h;ûM¼ú¹F ‹)ÈfKþ¸á¯þT['yÈ,“öíÛÖȈ‡¥ „oOÿꫯÌêÏògžy¦»üÖÈa „‡`Å%ïò¨„/¥¥j–ĘŲ­U¬~/^Üæ >Ì1@±{Óîa¸÷lÚé´Õ²!gCr«æRr9Šýi:7¬&¸(³¿ß” çïÕïÖ¥´ˆ€dŠÀà‘ãéêyò;?ujiTi¼é4S-Nw™j¯|¸jkUŒ—B½<“‡^áÌp-a™4rÒV˘2\+L̰þ0“pJ¼úÊu(" yC …©¿¼1Hµˆ€ˆ€ˆ€Kà¸FT®¢,¥™~Løø,U-µ" " ¹@ §1ùekÂeª\à(D@D@²D §mN¸¡#K\¤VD@D Gh*G.„Ìð£òsQ®ˆ€ˆ@Ž£Ê‘ !3D@D@üä¨ü\”+" "#r}3EÆ1±0ã:¥PD@D {4¢Ê[iȤïêæÜ[·n5/MÏ@µR!" " ÉH0õG0ÞN€s\o2%Я†ã09åy*Eà(÷}¬yZ·*ÈŽŠ@¼Ip„äà5²Dê#GÖŒI_ñÝwßM [|jú*TRD@D ' Ä9*¢`ôWŒÿö·¿5áä+þøgÂY‚í®[·Ž„ïëÖ­› óÏ(]º4Ñf§NJ{ï½÷Ã?$M,ZBIñIñddpŠcÆŒ!ÌR©R¥¯^½º)ÈÁ‰I?aÂê%¿J•*„ôEŒÑ¡û÷ïOXE¬ÂiW #6¬&NœH&âWåä…Q" " ~qkT„ÁeuªvíÚÆK¹ ˜4ha {õêEàÄéÓ§?óÌ3F€°ô+V¬ -ƒá1 ñvD\Äm,^¼8Ibú¡ŸPIƒ¦öaÆá‡(‹rôØ÷Š+® ø:õ’I¼D¼×gœ£"p"9O=õ+jÄÄ3™œC‡mÛ¶-&æ¯1LŸ" " ¹F nDeÞ³çÆ$´ÖãŠvíÚÕ¶m[BʶjÕjÁ‚x¦Þ½{›ˆ|D29r$Ÿ.\Èç¨Q£ðK–,ad5ÄË ŸØ}è'8:~ˆ‘×ÎQ¿El_b/1HÂW‘S¾|y¼5jÄ!Ε²„Oܾ}{óæÍIÉ8,ìq­=Jˆ€ˆ€ä&¸Ño1úí·ß›¾sçN2‰FÏ'½?.䨱c¸#Éü~ˆ¸æ8‰2eÊ` . $^†'ä§L™òë_ÿš½h`te4”,YÒD¤ |R@-‡ØÃ” ³Ž#FŒ øúÇl21FŽ*ŒK9" "ãâFTø!öѱüÃÞôóÎ;Ïm‰q YLæçŸŽðÆŠuK%ŸÆ!ܾ}û=z$YÊuZÌF²H6cÆ \Ý“O>É–$•HLD@D ×ĨpN¿üå/±øÁ|÷Ýw™ëc‘é‰'ž`©N: ’–-[Æ:ó{ €4hÀ¸'SÍ«[·.åÙp8þ|¼ ±w#FyåÊ•™¨\»v-‹g˜Çª“7Üp;™¤ zöì¹jÕª%:%" "ƒâFT˜{ûí·Ó׳ƒîž{îáNŸah¼ˆèxì±ÇñpX¯^=fÛ2Ø<*eÆèÑ£‡ŽZªûÝï~wñÅGUÑ®]»õë×÷ýñ¯qãÆÏ=÷¶aØ%—\ JûìòåË)ø›ßüæê«¯&0&¡“ÇÇe‚UÓ¦M¹F\ÜpëÂfj×…ñ Ñ¼gÏžZµjuíÚµB… dîܹóé§Ÿþðù”àârUñ—,\Ê«<`•E@ t¦þh6A‰L?eÊ”C‡5kÖŒÆUƒ Ú¿ÿàÁƒé€† †×!ÿ©§žÚºuë#<Â#üE]%Y¿~}zyb0⨌’9sæÔ®]›^ïÉ'Ÿ4§ÂÊM>¶á<®¸âŠ 6LŸ>ÝÕHïØ±'Õ4ʾÿþû@¨S§½¼9 éŠÑ݇)¥W] !a>^³5jTºtiʹI“&„—Äž>úßÏ€Cd£9¡Ù®Þº(R¤þ‰[båÊ•f¬LD‹^½zu›6múôéSµjU£'þ’yK…•»&)-"PhĨxB´³uëÖ&‡u©›o¾™ô/~ñ‹[n¹…ÄŠ+öîÝÛ¶mÛjÕªÑóN:uóæÍ ¬Üè)Y²$^Š4Ý7ƒ?“õ™P8Æà%JX/…~¯‘ä[±UÖ¼«Ç ÛD¸j<gWÄÊ›ói$Ì," ï‹;Á½Á„|[]ŒIFW€!õĉÙ^ˆg"…›ÃS»ñW!\Ê«Üãý ÜÉ^eŠ€ä „á8*Œ¶ÎÉm#€+¯¼ò¦›nbð‹/¾H/`º¶öíÛ÷èÑÕdB©fÍš3fÌ Çdð1vìØ(IJ%t*Ȱ¦Â§ééÂÊݪ3m‰18ª ×HW&FÕñTçVa«6 ÃWÄ6îœñ®ÉÄ£0–2C.W,Æl#æ`|ÆòÛwÜÁï  À\"ÂÆ¯'溵{K-\¸0¬ý{ é1Yº˜;wîáÇéªÎ>ûlܽ’ä3Ø¢7Y»v- a^`yƒy$zF¯òpA“3sæLf)Ù¯%Èw‰28P„C×È‹/¾Øtß®X”ªôªs5»U>Qu¹¥Ìê‹*]?£ 0veH'Tå8räe³}_ÈmÀ´­­‘«Ér# „º¼‡áR^åÞ²Ê(èŽËQñ‹QVð+£Fb7ÁC=ĆˆáÇwéÒ…Á»;ƋÎ;²E‚|xá±Â’ä·k׎ÎéÁyóæ…±2ã÷ÒK/õë×ß™A›Wy¸ Éaõ ;ÍþŽ(7ß5&Ê`WÞ¤0{ölc$S£a(UéUçêó‰ªË-Åø†_¤lx©W¯³©®€I'Tå`³“ŠŒ¡ÙFÁØ— öé™Å=Ã@œ]ˆáêÂ9áR^åá‚Ê(ü¡èMÃÑ•¤:gràÀV;Î:ë,KÁ£4}™Í1‰°$ùT‡·CC@Ø~ùå—ŒÛÌR¿É‰Rî-žjfÀ¯ÁV'¿#f&]s”böÌ5ÒÊØ„WUJÕYUn"̇³ÞºÜR¤)Èx7<– ˆ%T`+Y¢ ü“ÙûŽZË`‹EÄ@ñ‡RQÊã•謈@NHèk¯Q¥Úž°C¢ûóö€aIê2kQ•â碔ÄÒ; ã58¬9P*,@ŽWU  WÆ«Íf†ùDÕe‹˜„·`@&Ua›—¢l Š@cÃuys¥¢”{Ë*SD €ȼ£*  Žßl~d‡ ǯMD@D@ 9ªŒÝ ,ðdL—‰€ˆ€ü/ãÚLñ¿Jô¿ˆ€ˆ€d‹€U¶ÈJ¯ˆ€ˆ@FÈQe£”ˆ€ˆ€d‹€U¶ÈJ¯ˆ€ˆ@Fh3EF0¦ dÔ„¸·¹§ H¢" "P èÞ)Ió娒•I±&-ÛfRt‰€ˆ@>Xüú+wvû{$TÿžyvJòEä¨L<ºb IDAT’g•IÉ+Ë¥öF†LÖ-]" " +·üý}ž§Éú’U&.—tˆ€ˆÀ‰J@ŽêD½òj·ˆ€§õ¿š5ƒækD•A˜R%" '¨N¸KÕ`¢¥ðêqÂzE (_D@ò…@Î9*"Y¬tš—]vÙÍ7ß\µjÕŒ !ÊTÑ¢žá5’Ÿ0PqTñŒØV’©ê,OS(‰‡®ŽB>CDŽÊ G™" ùHà”¢¹·™‚Px|÷Ýw ¼D(¼#F? ‚õ[–ðzé©:Îâ©VšÙêˆ[ñøãÜ ^©Z%yÈǾý>Ûõz1ñUÉ_U¾|y"ÐÃ׊~̘17n,UªýxõêÕÉ_·n¾‡Xã ¿ºuëÖ¢E 2Ã’Ó¦M£ ±w‰ÿÛ¿ÿ5jD€fbµlÙr„ èä°J•*áâá*PhÊ6lØpÒ¤IC‡ÅZTv–V¤±W¯^œ ‹1˜ ´+ê:tè0gÎþÖ¯_?Ü´"EŠרÍ' .èÓ^«V­®]»V¨PÁ=K:I°R:l8ö]ÖUÊC¶~øa×®]S¦L9tèP³fÍh6ãªAƒíß¿ðàÁtúÆ 3ߟzê©­[·àœ>š8ôQ’tßø ÂË⨌XÊ;vàöð4W\qņ ¦Oÿû+Å£Œ¡ìûï¿ÙuêÔÁÉ™CüGíÚµq O>ù¤©ÔÃK…Û•FuÐØ¶mÛáǽí" üöÿ>ÿüs#€ëÂ?såÊ•ÞQf’`½Õ)SD@2KGeÿ5¹ºAÌ?+–ªoKyDµ~ýz–¦hç/~ñ‹[n¹…ÄŠ+öîÝÛ¶mÛjÕªÑO:uóæÍŒÈ$R8póæÍM\v¯dÅŠñRô×5JˆGøè£²Z³téR|òŒíÜâ‹- CHâxpH6D,AЙ·$úÑ£G,XÀ8¬\¹r®X”ªT«ÃµwìØ˽­#¶ú­·ÞÊ©óÎ;Ï,ÅõéÓ‡CòË”)ƒs ”B[ò`eu(" 'pìÛ¬ÎW,kÝìj{è&8åJº§¦SvTeË–e„4dÈ3_Çã?ËKTÃ`Åô³Ä†gtE¿ÌlÛèÑ£q³fÍêÛ·oåÊ•½’ MtJ–,‰—"7C—íž2é˜*J”(a½ÂD1ÇK‘ E|~úé§ÆQY±U¦.>cd¬Pðg‹˜dÆsäï‰'¾ùæ› °HÛP붪²ÖêWBD@R"½üú’v-4 Ħì¨O\yå•7Ýt¦_|ñÅÎ;ã<¨£}ûö=zôp+c¨fÍš3fÌÀ‡Ñ;6J’R^¯ãj‹OÛâ1UDiøì³Ï8^‹Qu<ÕÌÀ?±°g3.\È2{ÿØà7`À¦"í)›H ¬-¥„ˆ€dƒ@ØÍ|uQ‡ÖMm]†eìÙd)¯Q¥l¤fªŠ̘խ[—ÿW_}uþüùŒ–-[F×ÏZÑܹsY˜¡Ã=ûì³qoôJ’Ï`‹™®µk×~óÍ7Éq‹GU(ÂáÎ;±ðƒ>X½z5ÛŒ[rÅ¢T¥Z@zöì¹jÕ*WyTúÈ‘¿¿;‹¡ÞòåË™5 3“®pJ`Ý‚J‹€ˆ@6|ûÝá/þe¡©‹Dø,9)Y’¦£:í´ÓºwïŽ_5j{zè!6D >¼K—. žØ xìØ1†\²<à 6J`+,I~»vípLΛ7/%ë°[<ªŠ°ZÌž={v¿~ýøQ“™a(U©VwðàÁM›6ñ®"œÓ¤I6U2úd#'Ü›]±”Àº•løö»ï½ÿ¦Î^À?ï)2S²ä¤}ûöE`ÄÌc(@þXAq „'c@@ŸP*ÂÛÅ,ç”ÅÃÆ¸òüÒ–µ.~ F©âÅ‹›½®€›öªJ©:Wñ¨óÿöt6¡˜Õ)~^Cå'®Ò) ”Õ¡ˆ€d„oO'ÌÇÍoLCÛ”¦ÙxT }MÊkT1…+ø  K"ãîtI˜(î­"¬$P*,@ŽWU  WÆ«-™L»‡Ïí•O ¬Wƒ2E@D #¾Kqx”F¥™tTiTŸ_Eî¹çžð0%¿ŒQ½" "Pp |û}j Ni´ôuTõêÕK–Šˆ€ˆ€¤º3"P<™ÃÔQ%ƒF2" "  |û}j;#* ÈQ…™(GD@D Yߥ¸×øàÒK/Íqƒøá‡íÛ·c$ᤩ)¡v…Ýt¸Õ\>¢h†óÓÎ [¯êý÷ß'~iÉ’%ãÅt6 1w{~]¦_|qÙ²e7n$^ëŸÿüç·ß~ûüóÏ'|kü]h{J²inÞ¼™ˆ¸ñfÓP›|‘¸]QZKäYÎÒƒB¾wïÞ—]vY”pVó‰"_´h:Mˆ±*U/¿ü2ÝÜ 7Ü£3§NÍ™3‡¯(±›ÃV¥Úv{'ÐÉÖªU«W¯^6äcXyJ9Ï?ÿ<`÷ïßÿý÷ßãSüqЧ„ÚvÓ3–.]JgñØcòÓ>ôZ޶¶?ü°‰7v¥¦ ½…ò‹™œ¨»=/Óÿ÷ó5ùùÏ^¬X1¢âM:•ïN™2ebîÒpÛSO5gëÖ­&LxðÁó+Œ_šS\pÁøñã»uë¶iÓ¦I“&¥ÚìŒÈß}÷Ý·ÜrKFTY%ÙÐi•çx"½¶WªTéøCãÆçÍ›7cÆŒŒ´ñ³Ï>›Ñ³eËô3X.Uª:™g£^©—^¦ÿþ5jÔË„ 8zô(SkÖ¬9óÌ3ñ²-Z´p¹‡urC7›‘oÚ´)E¢(^}õUúÖ“N:‰QíõÚìÖem»êª«Ÿxâ‰0%r–{3½6lØÀ ä‹/¾ ÇŽ CÓn;@ªV­ÊÐgæÌ™P2môÚàm—¹Cøºò¼Fq«T©òùçŸseù#?nsXzŒ\aò½ÕYù˜äëÔ©ÃÍ#cNqÀ€Î%FØky˜mà{Á½Í×dÈ!hö!ýúõ£Gæ ^sÍ5{÷îåN~ôÑGÖÊ/&ÍLþæA8áÝžï—)|álN¸'ñ~Í|ø»`õij2£|ïM®‘ž›Ÿ™Î9™ï‹5#S‰4GTTO#çÎKoR¹reæ.‹)‚ý™gž±Ân‚îûk×®Ÿ~òÉ'9e[ÊØ(ˆ€—’×òpfT½#FŒ º[o½ý,‡¸f˜tÚmçºðTaUmÚ´A[” Þvašç˜+®¸‚þÈh¸üòËyva¸Ó§OG\kwíÚŽªÎ-åMsëÒû›'*X6ø¯ÐŸHñüÄý9`À†>ØìUH¦×ò[ÄÌ¥·ß é:N/N >™=zðÁ÷%ƆÂ÷ŤùÉß<'¼Ûsá2™Ëø ÷$„¿æ¦Tø»àj‹"ævÈQ7•·ÆòåË£ùòån-y–ŽQáÛv´nÝÚäìܹ³C‡GŽ9ï¼óîºë.2éSøäËÏd+,lA¾WôÝæmLQ2§Ÿ~úÈ‘#!»páB>Guøðá%K–𤌾–é8Ë"«‘á礀<(&çÔSO½é¦›~ñ‹_ðƃ ÷ÓÎá-^ËlB{[jä0ÜF\ƒ{îCó(@“ÃWÐè)”_Lš–üÍóE»=ß/Sø¢›œp‡P¶lÙ¨^+|Ÿ¸j£ˆÙ/ê¦òv,hf`ÀœR¤Ã®Á­:½4«æ¸¨²qŽŠ2%w«ˆ¾‘ ›Ux̤ƒfˆ3qâÄ7ß|“fvWÔK”(a¼TŒ s;\!ªÃàçè¸ÖbÓ¡ðøiÞËYžâíY“ˆ‘± “^¡.NeÖ¬Y}ûöe,Ðãòç5>)KW‹æ¦ ï΢½@@Œ»ŠÏO?ýG"ÞfÂi~˜¤×ro¦—Ã'Ÿ|B]ñEÀýK¾í`aR‘I]FºLÓ‰{mˆ¹úð4=>÷€íÏ>ûl÷¸L,…òÈÜÜEaaoun[¢Ò¶.#ÀƒW”¤ÍÇ*n{ž¥¸ù.üîw¿ãn´gM"Êò€˜½-ù†ÛøÞ{ï‘ê°p §P~1Sºy «„w{þ^¦ÀU³‡á'ר^+|ŸX=1ÄìuSy;£™Sæ[ð ¶Þ´ ß~žÀQQ±uN®Ì㙇;“ÉHˆ‰ø;ÍoLxç%’‘q«°i®éöíÛ3ïa3MÂö512nY cÍÂ8Çv÷l@§é=ÍiNáƒñ£ì" ±9<ö’Æyü6[a7a FQòZÎôrx÷Ýw©ËøNî`†}áîÕcy¦ÔvÖE~ùË_²_öõ×_ïÙ³§×š ïi¾d”ÃTðÚµkYÎ ˜Cou^É@&ûȱ÷*KDŒT2øH®¦É÷gŸ}–GKv ÆìtõZnÙªHæÞ 1s+üñÏ.ŠÊ/fÔ—"ÐvsHGL"™»=/“×r7Óvd†¿æ®¤7 ±˜›Ê[#sQì§0 Æ^§àµ$S™‰U251ˆ£ f0ù:qHoÈt[6WÞ¦ë֭˃ƒM7ôô\ fƆ‡¦ùóçÓ…±ü%c•`1ƒŽ†éi¼éìÙ³™åsÏš´«Ó¬«±tÁ¼“ <¹³éíâЙ²èµzõj†DtÉØCnAZDA/%ÓE,÷6Ç[/¾_‚«€?Úà†cÂ6Sm?tèK‰,±’`‰/¿×o»wˆ5 mGË-¬ë¢ªöl á­ÎNè„ÝCœ1—›5K“É#«’®in<“ÃB{ó°OÌ×8 f£,wï+ï-d5x,Ù2ëÂ=Æ£@0&^É@f2Ø“‘ ¨5‡QäÝÆFɸ ½w²+’…ÉÜí¹v™lcÝÁô$ áØ²$ØÐôÿñÜ¢fy"¾CŽº©¢j4ß_Üó,þf ×DÖ'ð" P˜ÁçkLSÙsâ NF&PÄ2Hg‡±Ì±S™‘ÐîÝ»9Õ®];ú#fðØ%ã*d×OýhèØ±#NÅ»)ÙÕÉ\Ó<À2#9ö_Ô«W1¸«Ð¦™ñ{饗èéèA̰/{(Îó/.Ód9^J^˽™ÞzñR¬¯àŸX#eúÈ A¬ñ6‘^Û·mÛÆ~NÆR,vïÞm^¼í²Uèd†–½9·ß~;ÎŒEP–y2öÐ[=Ÿà‡GÌW3U‹zxüÎh`ýŒçvÓÄx)$£,wÙÆ›ä=K¿¼&L˜¢„I’Þ.ìÉÈx­Š"ï66JÆU轓]”,LænϵËdîI±eIÐYñ°Å¬I2Ä¢nª¨ÙÀ f"Áµ$ãé¸xT bâ¸ÖК'P~Ll¿ä®X22®¼›fàɃ¤Y±·ù BñaöÓ+c…Ip!íñýq3é€NšÃð+a×€Í7Ï2VaŒ=ô’<ÔÓ÷Q3ŠnA/%¯åÞLj×Ëc)UD b¬ÁéµÝwa¼ír‹Ø4íbö†»È,MÙü˜D¸ºa{ЇPö©ò dsŽ3cy€mJ1óÌËc¼U„'&ByŠJRC2Ø“‘‰ªÎK>ÐX¯Œ«0êN¶2)Y˜ðnÏÇËÄ2'?³áÙ‘i4f8Xâeß;R ÷$ áXJn"!±˜›*P#sEü&„™ðøžÓ­=¥tB_“™©?c“ñR¤ñQV&#UÖË(Бye\…ø›„.' 3¦9®f¯XB{ШŽ/%¯åÞL4„ë5ÛU\ƒ½é€1ÞFy †3Ã6xÛ.HíJfúÎ-®Î=•f€5ÄŒ*Ÿcy€m¼žÀY&XNãɆ©uöî{çEìa2Ø“‘±  /ù@c½2®ž¨;Ùʤda»=/““¬#ð~ Æ=o¼ñSÜ•ïð—.!KÉM$$sSjä0{^ʵ9*ÉUTÊ÷XµjƒNVž¼g•).F$¬Îâ«X¦5ËàîY¥s„@ÁºL¹cm•UŽÜá2CD@NP Uf6Sœ tÕlì£Ê>cÕ " "p䨎žŠŠ€ˆ€dŸ€Uö«ã ÉíéÇaFþ5áïïíÖŸˆ€ˆ@нSòµÈQýÄjØÀà»:§”ˆ€ˆ@†ð{p~iÇg’ú4õ—$(‰‰€ˆ€d†@ª3XrT™á.-" " Y" G•%°R+" "©­QñU^˜Hͼ۔W±î6¿^¦Ë{Ê U™Ò"" "ÃRQnŽ «¼˜7Mš4)_šF¸ çKÕªTD@D ¤<(á=ª~ü#`+¡Ç‰}2fÌ‚¹íÙ³§V­ZÄâ$mÀ—ð`" â̈WD¨r¯ ïæ]ÂD:!xǽ÷ÞK@3Ò¼ý~àÀ&”$ôпqãF^ŒÎêÕ«S/‡ÔË ¤û÷ïÏ;:Ã2aíA¬,Âß9/Û¢E " ô(Pî ö󘾪HH å™v#Ø(; åIˆ#bäàŸL\œ©’×<¿ÿþûD|7qr£dþ=gη—wΣ–¸“¸‚Æ¢‡Œƒ Ú¿?ʉ85lØ0ü~H€(ñ½2” @Ì@"TÿÏD)ˆHKü´Ã‡ƒõ)" "›RQ,™>Ä%#œ9QGiUŸ>}øÄo;çdÛÉÑxMXš(ÂÆæ7¶páB>G…çX²d ƒ$ôàÆöîÝÛ¶mÛjÕªáŸlmÞ¼™µx)bYR¢Ë{e8e ”;2„#–OóæÍMˆBÌ·lÙÒF\´f+!" "SRvTãbêìüóÏgT¬X1†8L Ï›`‘¤m¨.IToã¥bd˜ß3!Îpø9Âs¹žƒðbèaXö /à,£«¾k:™6$ºùˆ#fÍšEôzÆ‚dòЦC\#²£b§M›6¶Œ„X4ºãŽ;n¸á†0áfOÙD22VØM˜Ð«íÛ·ïÑ#øÎIF2FÆUuÕUW±6cÆ Üã¼±cǺg•ÈYé¬Q¹aC†VË—/gb‰;¶-¸¤“‘ 1‡uëÖeˆFL­ùóç3b[¶lÙgŸ}Æ)ÆCÌ4®]»ö›o¾‰’q²ŽÅê¶áM ‰ÍÌ!gÑÖ³gOÂ캒J‹€ˆ€äãuTMš4©T©¶Q0jÁ%<ñÄF&#(bq*ì°`ëÄðáûtéÂHh÷îÝœj×®¿âboÞ¼yQ2®ÂcÇŽ=÷ÜshèØ±#;)Ø…ÁÙƒ²ÃžOWRi\#™PôìS0«Sü˜¹A¶°‡Û™ŒL¸”É9pàëIlawTáÃì:“WÆ•gøÅhÇæfÚ4ïžÒKi- %D@D {OKnªHŠ>å5*¯évžÃ+@f22Qe½ÞÅìÔ°E¼2ö, öbðçæ(-" "ûŽwê/÷[( E@D@ 4ÌŒ¨ 4k<ãÐT_>oË*!" "%rTÿ–p“Ì%j™*K÷™ÔŠ€ˆ@Úä¨~BgWö~ÊRJD@D ¿ h*¿¯€êˆ%`DeÞ]«A'E@D@D ‹â~GØÿE+¤ZD@DàÄ&³ø7¢Š)vbóTëE@D@òŽ€Ö¨ò޵jHƒ€UÐTDD@D ïÈQåkÕ$" "9ª4 ©ˆˆ€ˆ@ÞˆÛLcq ‰>Å{fí«fc„Í)¢ÔóVõêÕ«'”ô {žØQ„>í´Ó~õ«_Q»ÕF^ÙN¬)oAoæÇLP+ï© fF5™(ìܹsëJFU”=Qe7oÞL8•¢EÓ¼I¢Ô*_D@R"Έêù矿ñÆo¿ýv|C¿~ý’¬ïá‡& TBáo¿ýÖ+CœÃûï¿ßû Z‡«íå—_~íµ×¼¥¼™K—.}úé§½§2›ééjžó㟛“7é({µÛK°uëVâÍ+  CÈK)?,cwòäÉ×^{mŸ>}öîÝ»sçÎ$ÍÅ7œ|r¿x÷ÝwñÅ 8Â:ñ.dÞyç§Ÿ~:‰d´…•óÖ[o 6lÔ¨QÞ³™ÍLÛÈÌšaµ%c{ 7nK¨{ó›ß\}õÕ æPhµY1[¶l¡"ô”*UŠZÂ3ÔX§N£§;nܸuëÖ1sØ´iÓnݺ18aÂêzðÁË•+‡BzêO?ýtÀ€^ÍÞ6z›¼aÆÇ7LEŒQì|šW-&á­×¬YƒaXÕ¢E ·¤½Ù¸Ô>pà@.«{9ÆèPD@²J Á'\÷å—_^ºtiÆ%Œ¨ðF€à¹÷ÜsÏêÕ«Û´iC~ÕªUÉß±c‹"S¦LÁ1Ðárˆ“3òæ`µk×Þ³g™¬_¿>¾çŒ3ÎÀQ0Þ­ºQ£FTJ§lo”[mVò믿4hÐþýûŒÿcä„Û³gIà_ׯ__¡BÒØŒðG}„›ÄeNŸ>ý™gž!ŸyÛ¶m¯¿þº)ȼ"Þ.Js¸QM1b·Þz+j÷íÛg”G©}ê©§˜v{ä‘GAP˜‚a,]‚òåËS£yJ0UëSD@ò˜@܈ŠðÀkZ·nÍP`ìØ±¬v¼óÎ;Œ'X£âyåÊ•¸fÍšuïÞÝ-‚0NÈû*&fð軋+Ƃӂ XÐ'â¥Ø4[r•¾ä’KŠ/N"|Ê•\±b³‘mÛ¶­V­noêÔ©l¨X±¢•a@Cš |"¼k×.„™ÆlÕª6à8{÷î]¯^=vˆpˆSÄïÞ½×£9ÐÆÀ¡©gLuýõד:ƣƆ°ÁøQ2¿úê+6Œ4oÞ<<_JÙ°@–.gu–y&ߦuúã$À沘w!Å9**ìL3Šú>|øðY³f?~äÈ‘ ˜ÌJUxv¨D‰^/…fœ^ŠDÙ²eùdzÍLµ‘NûÏø!Æpæ]ºžgtåj3îÁä›+UªÄ!Ã/üƒ!@É’%¯¹æšÙ³g3óÆŽ+¯¼’ž:Fs CS×{ï½G"¼ÏЫcx=z4ŽÈ}ûö ô dïPá¸LÓô)" ÇI áÛÏ8*ª÷z9:¯öíÛoÚ´iîܹk×®5Þˆe˜4Ìe¡ˆRÖɹ¾$UmøŠ`X=¼e/¸àò™‚ãóÜsÏå“Q‹‘dÐÀØÅŒÛÇà¨h“™ø j6J¢>ñ^œbÇ'³‘ "q¢¤£Ô2Y³fM–Çpº IÂ4‡²t Ø8p€µH ðÞ Ãt(" 'òëêL‘ñüÎBKúx¬2eʘU(ÆtîLs1Ih(þàƒpÌÅ™.›¡½˜ÚÅ‘IDAT!ž—„ÂuëÖe Æ Õüùóq<Øc¼ •Ä9QË?äX›Ì-\¸ÁMƒ Œÿ`Qн(a’™@„j¶Uxx¶i˜ÙEVÎèý˜W- W9|ø0»ÿ¼2Ðé°ÍÉì%0¬˜G Ø CÈ3);*ü³R]»ve뿽½ë®»X[âqþ`ÇÛ¾™ b“^ ̨…%.~µÃ–#ß®];œƒ˜yóæ%Ô [çw?,«03Ù¥KÆ"¬0Ä:uêį†qNÆf\Ã/¶-à˜p³Â ªÛ1ˆƒ!3Ͷl8’›nº ÿÄ&æWŽRËž@~ÂŒý;vd'Ke…^,]ÖùªT©rÙe—lСˆ€ä¸xT M¼ \ w˜ÅÂÓ˜é&×VÆC¬<™Ÿ:¹ù4Þ‚Á »ìg¶-°_€Lœ cµ@©ä™­¢8kKÞ"3gÎdëÎÌœýòË/µ˜±”WÞÍŒ×ìJ†ÓGŽ¡¥x÷ð©°Z 3Cˆƒ ›œ( ^‚·ß~›Íú,CƘežòE@D IQ¾ÆO¼FeEm‚>Ýlœ³96v]ö”7á•÷fz‹GeÆw¬:t°c4à£ô„óã5‡åÝœÿV dþÜât”@ªô¼ò&“*䥨u("÷ÒqTÇo%?º2Sjǯ*= ¼s!½‚…¦T2—@3~…ær«!"P  ä£2; 4¸‚n¼.AA¿‚²_N)o¦8qШ¥" " ¹@@Ž*®‚lˆ$ G‰F'D@D@r€U.\Ù " "I 6SDš“ý£&LÏ~%ªAD@D ŽÀ€îâNÿßs'œ£¢ùÃúßøÉèHD@D +x/?Öä3IíšúK”ÄD@D@2C Õ™-9ªÌp—,È€£"Œ¯Q7öñ6U‚SdÉV©8 ¤æ¨x™lKçïü#ȈökbÉ“&pûk¯½–$G´ñ‚pÞ käy©9ºM°¨$5HLD@D ÐHy3+`?þ¸áb^OþôÓO^ž<5"ðþá¸ï¾û’/"IŠ@ÊŽªH‘"W§:”2$nË–-cƌٸq#A õD4€‡¼Ÿ{Ñ¢E„}jÔ¨‘{ö‰'ž`:‘ŒµjÕ"öU… 8‹’Ò¥K„ IøÈ{ï½—(ޤ‰?;pà@…6\éÒ¥K'NœHÈ+Eÿs +-" …@jS´ŠHƒ„o约‘LÖÙ´m6Qh Ä€iðàÁ„†"¬-!ØíY›hÕª©ðgd²™$p‡ø'Ê8êOú“9EE+V¬ ¾0që7mÚDŒD¢ÙV­Z•€Â‹/FÆ[é¡C‡öHÀ\W¿Ò" " …@ÊŽŠï·þøGÞ˜FâQöîÝËP©Zµj e´¸yóæ°<£ßþö·è7nœ{¶OŸ>Œ±†Kœ{6kØS„t"BRÿþý™lÄ™P˜Üe ŧ·R|!þ K¬%D@D@ ”§þX£2['ð1íüâ‹/8;eÊ”^xS|Œ®¼ò„†ºêª«ˆ=Œ`ìÅd{+¨‘>çœslAæ÷LøA>Œ"n `o¥¸2V•" " ‚@ÊŽ ÿÄšS¶™ºíÛ·ïÑ#ñk ?½÷Þ{Ìéµ .œ6mÚwÜqà 7 0 ù}€)Uš° È)Oý%itݺu ½úê«óçÏg`´lÙ²Ï>û,ª,æ¶Ûn³g9BºX±bË—/g1Œå¥£GÚ³1 o¥TݳgÏU«VÅÔ)œ%-GuöÙg³Ù݀ÇïÒ¥ ³…»wpÝu×±-Â4iÒ¤R¥JcÇŽe³‚l‘``LY{Ê[éÁƒÙyÁ§SBD@D 8iß¾}Qæ2êܹsòï ôêa;KDæW^¨Ì¯¾úʬNñ‹à3Ï<ó”SN‰’ çÇTÊ;¦ôRÚ01刀ˆ@ž(àÒtT?üðñ¥xÁyòÍ'¢üºuë’—÷J~üñÇÞü$3ÚðÜsÏ͘1#¬-*?,©œ“ÀñÜ!i—ݼyó·ß~{bW«O(é8ªçŸþÆo¼ýöÛ‰ÀÛ¯_¿$y=üðÃ&†}¼|ÌoéÒ¥O?ýt|ñø³ mxùå—_{íµ°’¨ü°dz91­NO¡Jå1ã¹CÒ.»uëV¢¾;v,«êD ÄmO÷šÂ@jòäÉ×^{-ñã÷îÝ»sçN¯X8sòÉ üâÝwßýÅ_/1\ü­·Þ6lبQ£Â§’ÏIƆäµeJ2¦Õ™ªBz %Æ3pß}÷=ú装²j”);*âÊÿý÷üÄŠÙ¿ ü3ŠðX¸?ü0‰„åíß¿?ý/¡¤6l8iÒ¤¡C‡Ž3†Ã!C† oN!†ÏC¾W¯^ˆM›6mãÆ(',=ÅkÔ¨á^$$ëÔ©Cæ„ Qÿàƒ–+W¾¨Ÿ~ú逈ÌÔâž={jÕªÕµk× *ØŠ¼6xåMDñr sÍ ½eËÚ‚©¥J•¢!Õ«W'“ªñ¯kÖ¬!Æc·nÝZ´hÁøoâĉwÞygýúõ] P_|±ÛjâC™fBÈ÷Þ{o=h¸Õp<Í?zôhÀH«Ö$¼×…SKyÚi§7Ž&ÓØ¦M›Ò^Ö2ªxNzõ-Z4@>І«ß[»÷êcéÒ¥kÖ¬9uêTB}Ÿû™4·ùÀù´(·®[iï`H ë@)sȃ —íúõëGÍcÜ5×\Ã"—çÄwøØ†ï‹W¹2E €H0Ä ·êòË/çËÌø†=¬øæ›oî¹çžÕ«W·iÓ†|T~ÇŽ¬ M™2…~–Cœœ‘7§æÌ™S»vm\‹™¤CÇ“qÆ8ª‹.ºÈ­š.›/ªñ=|!·mÛöú믦MŒ«(R¤þiðàÁ+W®´c²¼òè¤/æZòõ×_4hÿþýTD7Á ÏŠÀSO=Å<Ì#<‚g2Æ:t;>ìƒ ´ºJ•*åË—ÇSâçžyæ™bÅŠÈÕp<Íéj&í½.6ß\J|>úè#/诧OŸŽFOTñŒÔ‹— “¢á¶Ë[»÷êcÿŠ+¸ú¨Ý´i³jsçÎåfæùcñâÅñm´5FÝ![ÑÊ» n(¶<¾ðõᩉ6S»…n®¥E ˆQÑ]ZÛºuk¾'cÇŽe±çwÞá!‘5*Fø¾EÍš5ëÞ½»[aœ÷UL§Ÿ~úˆ#èˆy6\°`¡|åðRß}÷]£F\%¤q|2øà³^½zÿ¥þ O¹{÷î&Mšƒä—V¦L$ióeC”|Ø03t3Úè#xžmÛ¶mµjÕð1`˜Ñ`ºcÚÎ$Œ«“I0Ö6ð.ø0‘ :ݳ6Êmõ¦ÐE2fýä“OÂÝSÚÍOÒHc­·ùœ:÷ÜsùdìhÄx2 O/^¼¸9´ŸnñŒÔE>LÃÚ`áÚ“¹ú%ÞC·V ÊN+“ˆbkžá óƒ?þ1—nô0Žç†1ëgÞ¯jLu:%…@ÊkT,Û2Õã 0,Sã±xð4«PŒop¬91ÖIØ~4 üÁàl˜Ó3_o|Ùð|LÖ»øsŠE “É¢æÏŸÏ3]ÃŒ¢«!Ž‘w £iÆ0[¼nݺ›ÂŒŠXââ[Ç#ß®];:GIóæÍ hèÔ©3{tŽ&ŸçhúqæÍ~3–©˜ŒbÃ6 ž éžØÖÐàÆÈ3ùÒK/ÃÃ&4à‡Xcga€ÉÏ.]º0xb‘Œ²ð›M;vìÈN ÏäÁ—'Ÿn½^Pn«qÛo¼ñƒÂË.»ìºë®cÏÂ+¯¼âj0é4šï52¬Ù{]\1Ó€Ãæ˜Ù³á♪×KÞKÃCÂ[{ÌÕwËF¥Ãmt%cìtżé(¶ŒYù¢ñ„Ä&¦:ð½³O¬’²‡»Å«P™"P8ÄÅ£bÜà]àb¸Ãê._W¾W Œ‡Ö˜YþÀ)÷¯Ã ‰ÝbÈ3kdÖá­™xûÌhógΜÉf<„Í $˜áËLæ—_~‰yƇdÜÃy4 *`˜[–ù,ä9×f‚…aý”͉I„AEµ:FIàTLs¬d¼‘ñ×Å*1 1v´=&™1Å3Xo˜|À°ð¡·ödp…UÅ´1 œ†VC˜-Ãw÷ìï`‚§(~AÅ£!5lÐg8É»ÎêWBrŠ@”¯±F&^£²¢6Aßd6àÙ›».{Ê›ðÊ{3)γd`". Óx)2ñsSÞÃù„Â]XøóVÎ ·1œ.ŸÓ[0I#“1&Q¸xë “·­‹JxkOW”BòÃm §a§ÕfË8ž•Wï˜Ùæ÷!fÔN»ä¥,4% 1tÕñãàGW ‡;ÞZxôæ+3#Ò¾.¦ö´‹§]0#­NII~™ŠCb&_Ŷ#»?V3~)]; \éLýÜÖÊr\#pê/å͹ÖBÙ#" "P¸ ÈQîë«Ö‰€ˆ@' GUà/¡ " …›€Uá¾¾jˆ€xrTþª" "P¸ ÈQîë«Ö‰€ˆ@' GUà/¡U¼©‹×9ò‹äkáuò¼3yyIŠ€ÄÈŸüÆÛ¤³"#žþy"sÉ…W_zé¥ KÆ0¢µ™7„Å ó–K”ÄË謈ô=Ñm ~ ¤&OžL¸B¢,p‹—¦ûåB¹¼ÿ>æ-‘Fœ7ùòâyŠ:¤C" ?£ú‰…R"à0A8yY0³|21ŸÀcኈwÃ[‰yUÿþýñ:¼¯aÆ“&M:tè˜1c82dÂæbø<ä{õê…±ÓNÍ(WöQœ*ûI Eëpù+-–€Ö¨, %Dàÿ¸üòËyý+‘5QáWÌ9^ÄÎëþxm9QáÉ'Rù¼‚u)bfš€Râ䌼9E·Úµkª¸0äãðd¼{GE\˜C‡=‡xf¦ˆ>E@4¢ Ñ¡üˆpÆ‚¡–\£E‹šÁ 5kÖ¬{÷î.)„qBÞWªõfĈ„¿! ±›·lÙB7¼1½5j„’V­ZµlÙ2ׯ՝´œÈ4¢:‘¯¾Úž€¡:ˆÖ»wofÿx9stf¥ŠW˜J”Ùë¥#ž^Š19ù´Á?­\kZrTˆ" G¢Cø?ðíÛ·'¤2KJk×®5ÞhÆ ÿG(¹vg hÎ/¹r’€Õ‰~¨ýQØ.ÁÚC(ø]«L™2fjÙ²esçÎeÍiÍš5QÅm>&2/+[D5Á?+W®Ìø ÏÇ¢Úzöì¹jÕ*[D —€Ö¨\J‹ÀOðO£GæU©R¥»îº‹µ%‰ÏªFEºfÍšF†tÔß™gž9{ölagu[ûŒX»víÖ¯_ß÷Ç?ÌñàÁƒQ”/'8N<Áo5?ŽÃ]»váiÂëOŒ‡Xyb£D\ùø‡N:™ÿ"_¼xñÀï«ÈdûŸV§âêl¡'0p¢FT…þPÓ'pê©§2Yç-v]^1›é•÷fÚ"Jˆ€rTºD ‹øÑÕ)§œ’Å ¤ZN)8ªQ¦Ÿ@ÔDÈzôˆÏçO˜0áÍ>l½gOà•ˆ>|¸lÙ2BÈçŸ>jÔ(BÈW_}uöìYBˆ»»û—_~©Ï©Óé–,YòøñcBÈÙ³gmmm !ñññEEEúlÞÞÞ[¶l1lH_-!„Á`ðù|‘HôÑG >¼ÓNþøãgÏž5jÔk1Kî={ ¯}<`ÂÝ»we2™½½=ýò?þ ƒ¶¶oß^ZZjoo?wîÜ–––_ýµµµÕD666cÇŽ½sçÎãÇŸ}úôéæwûæÍ›)))4s–ÜÕüæx5÷˜ÅÍÍíÞ½{ÙÙÙt< Óé²³³œœ=zD¿$„°X,ƒ¡ÕjïÝ»GÇ„ì¥Ì>>>G%„<}ú”N)..þ׿þuÿþ}FãììüþûïO:•ÞôÍ7ß\ºtI$}úé§m_þýïß¿aaá¨Q£D"Ü>}šRSS³zõê‘#G®\¹ÒtÌc4¿‰þtÉ«³§Ð{<ïý…¦M›F¹sçNMM !äöíÛ555úŸ®)Š"„‚#FBRRRâââT*•ùõ_½z•þcðàÁ„ŸþyíÚµ?ÿüóðáÃ}||îÞ½û?ÿó?ǧóÈåòâââÊÊʶ/ïܹ™››«T*¯\¹rðàAz«••• ™ØÙÙÑëL0šßtºäÕÙS@<`®Aƒ¹¹¹ét:z:›••Åf³§L™Ò.[xx¸@ „üðÃÁÁÁ?üðƒéj~üñÇØØØ“'OBÆŽëââÒÚÚºgÏžÖÖÖéÓ§oÞ¼Y"‘ÐKœSSSe2YGU•••½ýöÛgÏž]·n!¤   ¾¾ž2a„¹sçB„Battô‡~hºK†ù»×ŸWO ÷èõÓ¦M»wïÞÕ«Wß{ï½ììl///kkëvy\\\<¸wïÞ¬¬¬úúú¸¸¸ÒÒRW­TVVÆÄÄÐO:uíÚµEUUUѳaýåõãÆ#„h4šßÿ]¿ ¹ÁƒòÉ'„ÖÖV•JÕт݌Œ ý=ôÆ·jÕ*ÃÌöÇœÚþ¬=è±xàðá÷oßÎÎÎV*•ï¼óŽÑl|>?**jΜ9qqqJ¥òìÙ³þþþvvvF30`éÒ¥B¡ÐÉÉIŸ§ªªŠþÃÍÍMf°X¬ææfý&£íZXXBèÿ›Ö§OÃÎÍÜiÌ©íÏÚS€ž‰èK†îÝ»÷å—_Z[[Oš4Éð~£z&LغuëÚµk !¹¹¹ï½÷žÑl¶¶¶³fÍj—( é?*++é‰rMMMss3!¤oß¾=2b±X¿â¹SöÇœÚþ¬= Ï¿~€F¯*V©TS¦La±Xí¶¶¶¶Ò7ú¿„ùAˆ••U—Zqrrâp8„Û·oÓ)wïÞ¥ÿ:th7ºM¯¬U(¦ù{¼?¯Îž@/aîù––úÃé>ùÿ/"„½X¨´´tÛ¶mS¦LqqqQ©Tßÿ=!„ÏçOœ8±K}e³ÙK—.Ý·oßþó{{{µZ}êÔ)BÈŒ3Þzë­nìü¤I“X,–F£‰çÏŸðà³³ó×_M?U K´Z­R©¬®®Öét èׯßsö[¡P´´´ôïß¿1$“É„B!›ÍîvþžíÏ«³§ð‹íüü@ròÿE  øôÓO»7+e0}ûöíÁµ°=»¬¶£;xšŸÿÅ-óýs÷ÞlLJzüø±P(tttÄïʽ+pvvvvvÆH¼yÄ€xâxcu~¡ŒŒ Àë( @©T>W<@ׂ¡x½œ8q¢Ó|x„ ¿ÿþ;!dÿþý~øáöíÛ}}}¯]»Ö®žyóæùúúΘ1cîܹûöí3Ñ¢¿¿vvöKÞÍW¼{ÐëâBˆJ¥úòË/_µ}h;þþûïÙl6!äþýûgΜIII9xðàÅ‹'L˜`XpãÆ—.]Úºuë‘#GÊÊÊ:ªÿÈ‘#b±¸£­Ë—/7ýˆ†N3täåt˜‹Íf_¹rÅð·ö„„„°°°÷ßëÖ­ú™«D"‰‹‹KOOÿè£V®\ùàÁƒÿüç?K–,‰ˆˆÉdtžòòòˆˆˆ ¬X±¢¨¨ˆríÚµüü|3»4uêTý|÷îÝ»}ûöµ¶¶&„hµÚúúzº3VVVF‹S5jÔ(6›]\\L©ªª çw.\øÃ?ÐyþùÏÞ¼y“²víÚìì쨨¨Ù³gþùç„ܾ};!!áý÷ßomm5¬¿]£õ›ð¢»ˆº`öìÙB¡pÏž=õõõmÓ-,,‚‚‚¢¢¢®_¿ž––F'J¥ÒüüüôôtÒÒÒèèèÌÌLww÷ÂÂBú}µZ©R©¢¢¢(ŠÚ±c‡V«}öìÙ£GÌìÒ¬Y³òòòèþ¤§§Ï™3‡Nwss›={vhhè‰'t:]GŵZí7ß|£ÓéFŽ©Óé""" ðÍ7߬\¹rëÖ­wîÜ!„TVV666ÒÄÆÆŽ?>!!áìÙ³÷ïß tvv =tè………aým30 £õ›ð¢»ˆºÀÆÆfÍš5J¥²ÝíáááÞÞÞ®®®NNNútkkëøøøˆˆƒaaa±k×®µk×BÊËË !ùùù …búôéÆ óòò’Ëå<˜={vffæôéÓÍì’³³ó!C._¾¬ÕjüñÇwÞyG¿iûöíaaa{ö쉌Œl»Æ@/99yîܹüç?ÿéààp÷îÝâââ@0kÖ¬áÇ÷Ýw튼ÿþûÇwvv¾{÷.‡Ãa2™666B¡°¹¹¹øÿ¥ÕjÛf0Z¿ÑR/¢{x¯€¡.?lêÔ©b±øâÅ‹ôeú„­V{øðá¼¼<™L¦Õjmmmõ™íííé«w †““›Í¦(J¿µººš’ššJ?H™Íf«T*Š¢Úæ1ǬY³233øÖ[oñx¼¶›–.]êééùé§Ÿ}ZZZúôéÓŽJÉd²aƵKܸqãöíÛÛÞDè?þ Z°`¿¿?EQ† b³Ù111'Nœxï½÷–,Y²xñâ)S¦tZê¯ýë¹sç;Íнú_t÷ 7£¼}çŸ?™l"GFFF@@€R©4]Q]]½r ¶¶–ËåvéúõúúzŠ¢lllLä‰?t&fÃòo¿ý6)))99Ùœßû[[[+** ÐÑÍF;¢P(ø|¾ù7äiiiyöìYŸ>}ÌÌÐÕú_t÷à óø¯c6,?qâ„é™|ll,³§šÔ/#æóù]-Ûn° >üê«¯Ì !ÎÎÎÝØ—¾}ûv)?“É4=Ûn—¡«õ¿èî@¯Å|½º+‘HpÌzc< T*ãÁ1èuñÀ†Ð… fÃr3€^B:]Ó ]ÂÀ Ä€xÞxÌÞ¼óïèÍp~ñ€Ùt:]MMÍÇ1|¯µ.\/¤ÑhÒÒÒΜ9ÓØØÈ`0´ZmŸ>}ΜyÜÒÒÂd2qtz,HJJÊÈÈX°`A`` Ç+///--}wI"‘TWW§¥¥áèôL>>ÁÁÁ,‹žš4hĈÇ·±±Ù´iÓíÛ·?noo¿aÃ{{{3ó”——ïÙ³§¤¤dàÀ‰døðátA>Ÿïëë{èÐ!.—+‘H†zòäÉ’’­VáááQTT”––VXXÈårƒƒƒgÍšuíڵǯX±âÝwßÅ;z3s×”••étºqãÆÑÁ@[&22òÎ;«V­‹Å§OŸ>pà½I*•æçç§§§{xx”––FGGgffº»»fgg›™G­VGFFªTª¨¨(Š¢vìØ¡Õjé‚………ÉÉÉcÇŽ-..>}ú4!ÄËË‹Ïçs8œBÈÞ½{>|³bÅ :åÙ³g=jhhÀá€^ÎÜóJ¥’biii¸)??_.—Ï›7oΜ9³gϾ|ùrzzúÇÌ`0!ÖÖÖñññYYY»víjhh¸zõjyy¹¾Óyòóó żyó† æååuüøñЧ&(ŠŠ …×®]+..&„¸¸¸p8œÖÖVoooBˆN§S(uuu•••3gΤ»4{öl___ÃÀ ·1÷üÀ€!7nÜ0ÜTUUE‰DôÝÕÕµ¹¹Y¡PÐ[ííí­­­Ùl6ƒÁprrb³Ù\.·] ¦óTWWBRSS?üðÃ3gΰÙl•JEo²³³ …tD¡Óé ûFQ”D"±±±‰‹‹ ¿wïÈ`0˜{~@$1™Ì’’’ššš~ýúµÝDÏÈ+++é—2™ŒÁ`ôéÓ§§ºhggGñóó 3³HÛØ@,1âìÙ³©©©‰‰‰III8ê4sÏôë×ï¯ý+!dË–-¿ýö›\.ÏÎÎNHHP«ÕãÇçr¹999eeeYYYÕÕÕ“&Mb³Ù=ÕÅ &ØÚÚfdd\ºtI&“åääTTT˜Èïææ¦T*oݺ¥ÑhÔjufffCCƒ¿¿?Çãp8„œœœ•+WþüóÏ8üÐËuá~£Ë–-ãñxiii7n$„p8‘HDQ”@ ؼyóçŸFQ”§§§D"éÁ.òx¼èèèÝ»wïܹ“">ûì3GGÇŽòÏŸ?ÿîÝ»ëÖ­[·nÝÔ©SSRR>ÿüsŠ¢Þzë­BÈÓ§OKKKŸ>}ŠÃ½åí;ÿüÉd9222èõÄ„NW]]­ÓéìííÛ]‚_[[ËápzðÌ@;õõõEÙØØ˜“Y©Tòù|º‡¦©©‰ÇãµË#ð€7Õ‰'ÚÎä ÅÆÆvù!¾EÑÏ0Äçó_èþNèMh;×g³Ù/.Jx}10½–YçNœ8‘èñ@@@†  —Æ&ÖÀk ëâ—@§ÓUTTÔÕÕaôþ\Ìç¯"00ðéÓ§ß~û-!dÑ¢Eµµµ3gÎÜ´i½õÔ©S_ýµ››Ûþýû !G½pá‚J¥Òjµ#GŽüâ‹/ÚÕF×@ár¹£FZ²d‰»»;ŽÀ+ÊËËÓh4ô#À²²²ôéÇŽ›3gNxx¸B¡¨ªª2Z\$mذá·ß~;pà€Z­Ž‹‹Ãqx=â!C†”••ݸqC,WTTTTTôë×O§ÓBd2™V«U*•:ÎÞÞ¾£ç³X,‘HäâârìØ±ÇÓ‰ååå{öì)))8p D">|8!¤¨¨(--­°°ËåÏš5‹Ž:öíÛWTTÄår}||‚ƒƒY,!$44tèС7n$„¬^½ºÿþ[¶l!„H$>Ÿ?yòäääämÛ¶q8œýû÷ß¾}›¢(±Xa~Ó¯—ž_?àééiii™M¹r劗——••EQ„1cÆ 4è§Ÿ~ /))é¨N'—ËSSSŸ={6cÆ BˆZ­ŽŒŒT©TQQQEíØ±C«ÕBöîÝûðáØ˜˜+V888B4Mddä;wV­Z%‹OŸ>}àÀºÚGÉårúo©Tª4¤RiAAAjjêøñãY,ÖÆùå—¹s熇‡»»»›ß4ÀkÇÜóíRÞ}÷]£9­¬¬<==óòòš››³²²‚‚‚îÝ»÷1™IIIÛ·oÿõ×_%ɧŸ~jôgõ»wï.Y²„ò—¿üå£>"„äçç+Šyóæ 6ÌËËëøñã<2dˆB¡¨«««¬¬œ9s&ƒÁ sÊåòyóæÍ™3göìÙ—/_NOOÿøãé­Ž“™˜˜(®]»&“Éf̘Joºr劙M%€?E@@€9Ocv©Æ¶/MÔ>eÊ”k×®}óÍ72™lâĉ‡Öoâñx;wîaÂ[[ÛŒŒŒK—.Éd²œœœŠŠ µZ™™ÙÐÐàïïÏãñ8!düøñ\.7''§¬¬,++«ººzÒ¤IôŽœœœîß¿Ÿ™™¹yóæÖÖV£ê‹gffÖÔÔšß4@¯‹Z[[ŸŸÃá„„„888еÉd²îõ¤ÖÖÖÊÊÊÊÊJºB:B ŠŠŠº~ý:ýó§]2Ý‚‚‚ÔÔÔñãÇ6ìÑ£G?þø#!äéÓ§ÿþ÷¿½¼¼ð©@<`Ê“'O!ÎÎÎmé—m¯}o'??_¡PLŸ>}ذa^^^r¹üÁƒ]ÊLßKÕÒÒÒh~¹\îãã3gΜիWóx¼ôôt:Þ „PKÿ.^\\¬/e˜n´ÝëׯËd²©S§†††úøøÌ›7ÏÅÅ…Ãá°X,ooo@ðü=iK©T.]ºtéÒ¥ëÖ­£SÂÃý½½]]]œœ !vÉt7˜LfbbbDDÄܹs---³²²!?üðƒ½½ýرcñ©è=ºs½½½=!äÎ;mÿøãBˆþêCÕÕÕ„ÔÔÔ'NBØl¶J¥êRæBnܸ±lÙ²vù«ªª!"‘ˆžs»ºº( ;;;BˆP($„X[[ët:})Ãt£íÒ•{xx˜38ÝëI[ 11‘baaAÑjµ‡ÎËË“ÉdZ­ÖÖÖVߊ‰.™îFß¾}é0ÆÊÊJ,geeݽ{÷Â… þþþøH èÄ[o½Åf³‹ŠŠš››éKÒår¹T*íׯ_¿~ýè<---„•JÕÔÔ¤Ÿ|BüüüÂÂÂÚUhfæšš&“YRRRSS£oˆFO²+++é—2™ŒÁ`ôéÓ§«»f´]…BA1ü9ßè„þù{baa1pà@ýˬ¬¬“'O._¾ÜßßýúõR©”ŽLwÉün̘1#++ëË/¿¬­­õõõÅG WéÎõBÀßß_£Ñ|þùç555 üã IDAT•••Ÿþ9ƒÁ ¥3899Ý¿?33sóæÍ­­­tâ„ lmm322.]º$“Érrr***º”¹_¿~ýë_ ![¶lùí·ßäryvvvBB‚Z­?~<—ËÍÉÉ)++ËÊʪ®®ž4i›Íîê®mW_yfffMMMaa!!ÄÍÍM©TÞºuK£Ñ´­¡§z¢G?cÁÊÊ*77·²²²¡¡¡©©©Ó.™ß &ðx¼;wîü×ý×óôzK<@YºtipppNNN@@ÀÒ¥Kýõ×°°°™3gÒ[ýüü!ûöí›?>‡Ã¡y<^tt4ŸÏß¹sg```bb"½t¸K™—-[üèÑ£7.Y²äóÏ?øð!EQ€'ÂÂÂbbb<==%I7öËh»tå\.w×®]GŽ!„ÌŸ?ßÑÑqݺu/^l,õHOô¦M›&‰’’’ÒÒÒÄb±Z­NHHè´Kæwƒ^r`aañÞ{ïáóÐÛPÞ¾óÏŸLî4_FFF@@½¢WO«ÕJ¥R…Bñí·ßæææ0`øðáÿûßÔj5“É4úl¬úúzŠ¢ÚÞY¿K™ !:®ººZ§ÓÙÛÛ·»×Pmm-‡Ãyþß¹¶«T*­¬¬¬­­Û¦ðù|Ãûõ`OhuuuôÊÚÚZ.—K_¦eN—Ì鯆 lmmÿû¿ÿÛèÖøCgb6,ÇGà÷ø¯c6,§gìFgï†bccŸëY¶ ÃÑÑÑÑÑqôèÑR©ôêÕ«­­­ôý7­¬¬:*ÅãñÚ¥t)3!„¢(zM³!>Ÿß#£i´Ýv·2šÒã=¡ÑÁ€aµv©Óndddܼy3!!!€^ˆÙS988¼è‡Ëààà°}ûv3à2jÔ¨Nó(•ÊøCg0Vˆ ×ÙºP ` âè¥p~൰!t!âxQpŠàU¦T*A§÷j‡xtï‚Ľâ€Þ«ûëŸ>}úí·ßB-Z¤Óé:D?ý*//oóæÍÉÉÉ‹-ª­­¥‹…B‘H´téÒ¡C‡Ò)‹-b2™'NœøÓBßO.—;jÔ¨%K–¸»»ÿ)=iii1ú¨f€×cçT*Õ—_~it“@ 8räÈž={>úè£[·n…‡‡¿‚c!‰¾úê«>ú(//ïÿ÷ÿ”>H$’>úïKx9zìwh6›}åÊ•éÓ§{{{·ÛdaaáèèHyûí·)ŠJLLLIIÙ¾}»éi1ŸÏ÷õõ=tè—Ë•H$ô)…„„„¢¢¢šššÑ£G 2„Î~ü¸½½ý† ìíí !ååå{öì)))8p D">|¸a£,K$¹¸¸;vìñãÇt¢Ñ‚ÅÅÅ_|ñEuuµJ¥jhhˆ%„„††:tãÆ„Õ«W÷ïßË–-URTT”––VXXÈårƒƒƒgÍšuòäÉ’’­VÑî™Á=Òh—2À¯ÇÎÌž=[(îÙ³§¾¾ÞD¶1cÆB|ø0&&fÅŠ„///>ŸÏápBBBè”¶z¤Ñ.eÄæ²±±Y³fR©Ü·oŸ‰lŽŽŽL&³¡¡¡Ó )ŠŠ¥Oè¯/ ÷öövuuurr*((Ðg¶¶¶Žˆˆ`0»víZ»v-!¤¼¼œ’ŸŸ¯P(¦OŸ>lØ0///¹\n4 ¹{÷î’%KŽ=ú—¿ü…¾hÇhÁšššòòò)S¦¼÷Þ{Ÿ|òÉ€LïˆÑJt:B¡Ëå•••ÞÞÞôïñ...‡Åby{{ ‚¶•ôH£=’Þ$=¹nuêÔ©b±øâÅ‹l6»£<µµµ---†?~²³³ …ô\_§ÓB´ZíáÇóòòd2™V«µµµÕg¶···¶¶&„0 '''6›MQ”~kuu5!$55•^¸Ìf³U*•a‹ƒ^±bÅÖ­[é‹v,,,Œ¼ÿ>!ÄÍÍÍÌa1Z EQ‰d÷îÝqqqçÎ[·né oÞ¼ùüöHf@<Сððð›7o¦§§w”áûï¿'„Œ=º•geeHOO?vìØäÉ“1b‹Åº|ù²³³ó7êêêúõëG—urrºÿ~fffzzzkk«‰ÖûõëwåÊ•1cÆøûûŸ?žÃáЙÝÜÜ.]ºtëÖ­¡C‡¶ñ÷H£ŽŽŽ]ÊŒÀ¯›ëZ[[ŸùÄè à7¯Q@<í7®—4ªT*ãÁ@<½Î†Ð…K@o³ð*¨ÀW$@|E"SpB^AJ¥R tzÃ|E¾"ÍÁÀÀÀë?ËôàW$â€Þ ñÀ TPPPTT„q0¤Óé***êê꺖’’röìYŒ'@·uý@``àÓ§O¿ýö[BÈ¢E‹t:Ý¡C‡èg„åååmÞ¼999ÙÁÁaÑ¢Eµµµt¡P(‰–.]:tèP:eÑ¢EL&óĉú@èûÉårGµdÉww÷ç¬sûöíB¡ðÀxŸÀ¯ÝÄ ¶¶væÌ™›6m¢·ž:uê믿vssÛ¿?!äèÑ£.\P©TZ­väÈ‘_|ñE»Ú:Í wá¡PØÕg¤¶´´0™XE ð|ñ@;*•êË/¿üç?ÿi¸I |ñÅõõõ÷îÝûúë¯ÃÃÓ’’ô!Á«C$mذá·ß~;pà€Z­Ž‹‹{Î ÷ïßÏ`à ôRyyy†ÍfB²²²ôéÇŽ›3gNxx¸B¡¨ªªjW°Ó ÏI"‘TWW§¥¥áôd<Àf³¯\¹2}útooïv›,,, !o¿ý6EQ‰‰‰)))Û·o7ýAåóù¾¾¾‡âr¹‰„ŽŠŠŠjjjF4dÈ:ó AƒFŒqüøq›M›6ݾ}ûøñãööö6l°··'„”——ïÙ³§¤¤dàÀ‰døðᆲX,‘HäâârìØ±ÇÓ‰F VUUíß¿ÿöíÛE‰Å∈£Ù¶mÛÆçó·nÝzèСÜÜÜ-[¶8;;BΞ=[VV¶~ýúN{U\\üÅ_TWWûøø¨Tª†††ØØXBHhhèСC7nÜHY½zuÿþý·lÙÒQo»” G 2¤¬¬ìÆb±¸¢¢¢¢¢¢_¿~:Ž"“É´Z­R©Ôétöööô7u[eèô›ËœomGGÇ’’­VáááQQQ±oß¾¢¢".—ëããÌb±ô³‘É“''''?~ÇÞT=öëõìÙ³…Báž={êëëMd3f !äÁƒ¦k“J¥………ÉÉÉcÇŽ-..>}ú´>´ ŠŠŠº~ýº>¬—J¥ùùùéé饥¥ÑÑÑ™™™îîî………ÙÙÙ„µZ©R©¢¢¢(ŠÚ±c‡V«5lT§ÓÉåòÔÔÔgϞ͘1££‚fãÆ¿üòËܹsÃÃÃÝÝÝ;ª_*•Êd2Bˆ‡‡Ç£G~øáº¡ . >Üœ^ÅÅÅI¥Ò¥K—Brss¥R)þèÑ#¹\®ß}:zé¨Â.eèžžž–––ôñ•+W¼¼¼¬¬¬(Š¢'ƒ úé§ŸÂÃÃKJJŒÎ 3túÍeæ·¶——ŸÏçp8!!!&22òÎ;«V­‹Å§OŸÖ_è+•J RSSÇ ˆ:gcc³fÍ¥R¹oß>Ù™LfCCC§RK‡æÅÅÅtbxx¸···«««““SAA>³µµu|||DDƒÁ°°°Øµk×Úµkéß !ùùù …búôéÆ óòò’ËåF’»wï.Y²äèÑ£ùË_>ú裎 ^¿~]&“M:544ÔÇÇgÞ¼yÖïééikk{ùòe­V{÷îÝÇO›6­ÓR555åååS¦Lyï½÷>ù䓘13w³™ºÊÊÊÊÓÓ3//¯¹¹9++kÚ´iúML&3))iܸq÷ïß—H$/^lWÖh†N¿¹ÌüÖvqqáp8,ËÛÛ[ äççËårŸ9sæ¬^½šÇ㥧§ë# &“™˜˜ o°ž\I3uêT±X|ñâEúJA£jkk[ZZ:­ÍÎÎN(Òs}úô¢V«=|øp^^}ÑÖÖVŸÙÞÞÞÚÚšÂ`0œœœØl6ý ­ººš’ššJ/\f³Ù*•ʰÅÁƒ¯X±bëÖ­ôiD £é«=<<̯ŸÉdNŸ>ýüùó………999'N´±±é´ÔÍ›7 !nnnfŽ¿™»ÙÌÝ0eÊ”k×®}óÍ72™lâĉ‡Öoâñx;wîZ­¶©©©m ÕÒÒBQ©TMMMv£K™z„X,f2™)))“&M²´´l·•¢(??¿ÒÒÒÌÌÌ[·nM:Õt†N¿¹ÌüÖ¦Ñ?5Bè+++é—2™ŒÁ`ôéÓ‡˜¥íoðúbHHÈÞ½{Û&677߸q£±±ñ÷ß?wîœP( èFs„++«ÜÜÜÊÊÊÆÆÆ¦¦&Ã_ M˜0ÁÖÖ6##C$Ñk œé%Ά>øàƒôôôcÇŽMž<ÙhÁñãÇs¹Üœœœ‘#GŽ?^*•šSÿðáÃxéÒ%OOOsz5bÄ‹uùòeggç7nÔÕÕõë×ÞääätÿþýÌÌÌôôôÖÖVÓ»Ù¥ÌøH@OM ¸\î˜1c~ù埶é·oß.//;vlKKKQQEQNNNfèÛ·¯éo.3¿µGåæævéÒ¥[·n :TŸaöìÙåååÕÕÕ“'O6q¥À›§›ëZ[[Ÿpà€‰âµÛ¶Î‰'òù|‡BïšT*•Éd]"€žeîùŒŒŒv)ï¾û.ý‡•••§§g^^^sssVVVPPн{÷èMùùù …bÞ¼yÆ óòò:~üøƒ† ¢P(êêê*++gΜI_6£Óé  !ááá„¥RéääTPP@‘ÉdsæÌ™;w.Ý}.Âh[®®®íºmmmgeeÕÔÔtùòåòòrgggB“ÉLLLW¯^•ËåóæÍ›3gÎìÙ³/_¾œžžþñÇÓ]2,þàÁƒŽÚÕ×Iáp8­­­ÞÞÞíúcþ= F(•Ê‹èÛ¾l[û”)S®]»öÍ7ßÈd²‰'>|˜N¯®®&„¤¦¦ž8q‚Âf³U*EQ‰d÷îÝqqqçÎ[·n›››ÑD­V{øðá¼¼<™L¦Õjmmm !7oÞ$„Nô¶e¸¶¶¶VVV„ÁƒBÊÊÊèx oß¾ôĽªªŠ"‰!E¹ºº( ;;;£ÅåryGíêë4Áü!2<FÑsKstmý@G†X,f2™)))“&M²´´Ô§Ósh??¿°°°vùGŒqöìÙÔÔÔÄÄĤ¤$£‰YYY'Ož\¾|¹¿¿ÿúõëéë‚èé{ee%!äéÓ§OŸ>år¹&ÚêHEE!ÄÃã]ºP(Ô×O‘Éd £OŸ>§ÏN˜Ó®~ME[]"s"<óõÌ-n¸\î˜1c4OÛô &ØÚÚfdd\ºtI&“åääTTT¨ÕêÌÌ̆†Çáp!F !VVV¹¹¹••• MMMîîî666™™™{÷lii¡×*m˰«UUU™™™¿ÿþû/¿üâèèHOÇÛ?~<—ËÍÉÉ)++ËÊʪ®®ž4i}ë$£ÅÍl×ÍÍM©TÞºuK£Ñtoˆ^Ñx€²téÒ5kÖxyyµMäñxÑÑÑ|>çΉ‰‰?nnnNII \¸p¡ƒƒCHH!Ähâ´iÓD"QRRRZZšX,V«Õ cíÚµ¶¶¶?ýôÓûï¿oiiIOÖ¶e4t9þü§Ÿ~ÚÒÒ²bÅ Ã `óæÍ­­­aaa111žžž‰ÄDq3Û?¾££ãºuë.^¼Ø½!èq”·ïüó'“;Í—‘‘a抣êëë)в±±Ñ§h4š¦¦&×6›Ñĺº:zå@mm-—Ëe±X2™ÌÎÎÎÂÂâ÷ßÿôÓO§Nºyófmé-Z´H(8p@©TöéÓÇôjkk9ŽþÌ@§ÅM´«§T*ù|>}B£{CÐS³÷ØØXæËéᤖÍf·j›H¤ƒBŸÏ§ÿˆŽŽ–J¥B¡°²²rРAí~>7gÝé2ß¶Í™Yü9Û5sˆzóuìt|||ii©T*õðð —›iãÆô“źç9‹ è<o̘1cÆŒéjAOOÏçi÷9‹¼jÄ€xâ@<ˆàÁÄ@W¥¤¤p¹\ÿW°o­­­?ÿüs^^ž¥¥å|PYYÉb±†ÞÕ}IKKÓétÝh´_¿~x“¼Ì7XAAé£ &àüÀeΜ9+V¬Ð¿\¿~}XXX·ráÂ…ï¿ÿ^ÿ²¥¥å…îT—êÏÉÉùïÿþoŠ¢lllššš¶oßž˜˜hþ¾è¥§§§§§w¯Q¼{ö Ö黢ӣ &àüÀ.##ƒðÚy÷Ýw_£ÞJ$’êêê´´´W¤þk×®BV¬XammMÙ¿?ƒñÂøh×(¼äwÝË9ʈàuõ믿b^#ñññJ¥òEÔ\TT”––VXXÈårƒƒƒgÍšE)//ß³gOIIÉÀ%‰á EEE555£G 2dHÛ­'Ož,))Ñjµ!!!F+”H$|>òäÉÉÉÉÛ¶mÛ³gŸÏ÷õõ=tè—Ë•H$C‡5Ú–™õë9r$77—²zõê)S¦,[¶lÛ¶m|>ëÖ­æìlqqñ_|Q]]íããÓÜÜÌd2M ‰F+**öíÛWTTÄår}||‚ƒƒY,–á8ˆD¢¶ÜAƒ1âøñã666›6mº}ûöñãÇííí7lØ`ooßQÿöÍh¢ÑCy÷îÝÝ»wWWWOŸ>]¡P455ÅÆÆš3VUUUû÷ï¿}û6EQb±8""Â̽¦¾þ%“Éìê;Ðð]Ñö(›î†á»ô ¬þøÚ{=ÄlXþâ*ß»wï³gÏbbbjjjè ÜÕjudd¤MTTÔ‘#GvìØqôèÑv¿³ZXXY[[oÞ¼™ÍföÙgm·zyyýûßÿV«Õ!!!U(•JËËËËÊÊÆÏår¥RéÇ¥R騱c¿ûî»Ó§OGEEmËÌúõýñööþé§Ÿîß¿2`ÀBˆT*U«Õfîl\\œ\._¶lYYYÙ“'Oú÷ïßÑеծQFÙØØ¸jÕª’’’Ó§Ok4š5kÖÐi;m+‘J¥>ôðð¸|ùrtt´­­­»»ûÕ«W³³³?øàƒŽúo´oFÊ;w*•Ê+VÜ¿???ŸÞåNÇJ£ÑlܸQ¡P¼ÿþûo½õV}}½ù{Ýö%“ÉìÆ;°Ý»¢íQ6Ý £ï:@<Ð[Ló‡Ax9²ønEð’noÞ¼9sæÌž=ûòåËéééü1]°Ý8´emmoaa‘••eaa±k×®†††«W¯–——wÔÿ!C†ö­£¯L&«¨¨˜3gÎܹsé&è]ît¬®_¿.“Éf̘J§ti¯õ/;= æ¼+ÚeÝ0ú®ÃE•ðfèöõˆz/g+ ‹–_®&„°-/ç“ßö%ý¯€……EÛõ¬---ôLH"‘ìÞ½;..îܹsëÖ­sss«®®&„¤¦¦ž8q‚Âf³U*UÛ:µZíáÇóòòd2™V«µµµ5Ý%öíÛ·í$ØÎÎN(Ò“`zjN[v¸{}£Ý¼y“âææÖ® Ñ¡3ÑPUU!„¾ˆ¢(WWׂ‚…Baggg8mÙÛÛÓË †““›Í¦(ÊtÿöÍh¢Ñá¥w¹ÝüÛœ±¢÷ÑÃã{{­Ùãï@ÓÝ0|×~Ž^Gô¿¢Ý†x ç±,¨—Óá/ýû÷¯ªªjll¤g<<9r$½I,1âìÙ³©©©‰‰‰IIIô$ÉÏϯ£{eee}J_ÅÔéXѳyýOìÝÞëçyêßÏ9ø/h¹Àk7dxñ“êÆ=ÒôرcµZmJJŠ\.?sæÌ³gÏÞ~ûmBˆZ­ÎÌÌlhhð÷÷çñx‡2aÂ[[ÛŒŒŒK—.Éd²œœœŠŠŠ¶µ566B¬¬¬rss+++ o¦éææ¦T*oݺ¥Ñh:­Ð„ŽÚê©ú;-;bÄ‹E_a²cÇŽºº::ÝèЙ@_%Ÿ““SVV–••U]]=iÒ$}hÑmFûo´oF¯»»»MffæÞ½{###[ZZè3Ž•~333kjj »·×Ý~¶}W¼„Á@<]Œ,Ýø¯Gš^±b…¯¯ïÅ‹—,Yrâĉ9sæ|ðÁ„æææ”””ÀÀÀ… :88„„„Bx<^tt4ŸÏß¹sg```bbâãÇÛÖ6mÚ4‘H””””––&‹ÕjuBBB»çÏŸïèè¸nݺ‹/vZ¡ µÕSõwZ–Åb-^¼¸®®nïÞ½®®®ôO× `óæÍ­­­aaa111žžž‰äù¬Ñþí›ÑD£ÃË`0Ö®]kkkûÓO?½ÿþû–––ôÔ¹Ó±¢÷‘ËåîÚµ+ àÈ‘#ÝÛën¿Û¾+^Âà¼Ù(oßùçO&wš/##£Óe ô"¶††;;»Wö&ÜÏÿË?ýA˜]zrgFFƯ¿þÊê?tšï¼×ký€N§«®®f2™f>êõybn~¹:û‡ï¶®[Ö²[vÿ/}!s.`0ý‘Ôét•••í¿j4š¦¦&×.}}=ý,-£µÕÕÕÑ×m×ÖÖr¹\úîí(•J>Ÿ¯¿ÞÝt…&tÔVOÕßiÙÆÆFƒaiiÙ.½£¡3¡¶¶–ÃáôøÓ†ý7Ú7£‰†Ã+“Éììì,,,~ÿý÷O?ýtêÔ©›7o6s¬èãbeeÕöüîíu÷ÞíÞ/að^MFgæÌÞ !±±±=³~@£Ñ¤¥¥9s†þ*Õjµ}úô9sæÌ+8^Û·o …èR©––ýÈ»WC÷Ú2êÂ… B¡°ÛßE‹ÕÖÖB¸\î¨Q£–,Yâîîþ§‹Žö´¹¹9--íÔ©SF«Õòx¼    ˜~ÞÐsKÏb1ÿä3oE9::¦³Ùl£3$ÓÓ\ý"N>ŸßQžvkd»4o6§­žª¿Ó²ý–ÑÑЙ`b¸ž‡aÿöÍh¢áðFGGK¥R¡PXYY9hРvg?:gõÑÝÛëî½;Z™ýâàÔ3ñ@RRRFFÆ‚ y<^yyyii髹ÃÝxŒåË|æ‹~Ô+M$mذá·ß~;pà€Z­Ž‹‹{ùÂÄž~õÕWçÏŸ_¼xñ‡~ØÒÒòÕW_íÝ»·©©éoûÛëò¹jnÑâx-ÄÇÇ—––J¥Rzy1 è²ŠŠŠÌÌLggç5kÖÐçm]]]õ7°3ñ¨ÈNÆiNžÐÐСC‡nܸ‘²zõêþýûoÙ²…tü(ʶ±4|¾æË|¦áDÛµ•ýóÏ?GGG<˜òõ×_·¶¶®\¹²m%>CÔ(‹%‰\\\Ž;¦¿Z×hUmתR©èg—v4ìf>?ÕpTõ}«ªªúî»ï8Npp0w………ýðÃG]°`µµu§c»ÿþNÇí…Ç­ˆàõÀãñÆŒ3fÌ @¯Õ¿s—••étºqãÆ^ÄI?*òÎ;«V­‹Å§OŸÖ_f#•JóóóÓÓÓ=<..îwÞ>|¸éU3ÞnUhõþ„îý%tï/†^å|ªÞC^Ÿ8==]’$WW×RÏz¤KEæååYXX_ÃˈRëkVåB˜†V<-y¬Ù³g;::~øá‡Fò1²´gE×'.›•n¹Ö×^{M’¤M›6•Ûì&®Ÿj¼UµZmJJЉë—bJ»= òúÄc*³TBèÖík}bPwT‹õ‰ÿŠ- ÝŸ¥<Ò¥"mlld÷R+\VåB˜†V<Õ+<<üܹsò×F<ÈZ­åfeh¹V#Ínâú©Æ[ÕÌÌLï »&¾+Li·G§˜û@ aATgnnnŸ~úiɇ =Fo¿ýv¹Ï\¢ÝdEZnÄx`:uª>…éÚµ+ífj<ðøn^·Ë”ÍfOÅû«bxˆ€*‰´óz!õ¤Wo²v3}T;lÛ¶M’¤€€†ª`ð `ªâÇúðP¥M…ß×þþþ-Z´X³füç»ï¾›ýÍ7ßTº £G¾sçŽB©TvêÔiìØ±­[·~<±YQ‘Þ»Þå0à½÷Þ“SvìØ±víZ//¯¯¾úªº¨Ñ£G[XXlݺµTzXXXE§t ‡Òusð @w*!F¨¢9ècý~ÀÞÆ²:4‚§§çìÙ³ÿý÷5kÖäåå-]º´êË V«ÓÓÓ·mÛfhƒ“'OÈ7»GFFÖ…ÁÉðxXêàà@<€šíèŸh„*s lïc<ú½¼¢‡˜Û¥K—¶mÛ­T*Ç?pà@!DBBÂ_|Û¸qcµZÝ®]»²;ZZZzzz¶hÑbóæÍº•1ôîóÙgŸ¥§§÷éÓ'++ëþýûK–,BLœ8±U«VsæÌBLŸ>½aÆóçÏ7”IÙrnß¾=66V«ÕΚ5«ìýå-[¶Œ?s振¯oRRRRRRýúõu7Í›xC‰+V¬¸téÒ­[·ž|òÉ×^{­eË–Bˆ+W®|þùçééé}ûöÍÌÌÌÏÏ—kjJ{ê”l®ÂŠ>j¹Æ ½‡P«Õ*•Ê××wóæÍ …bêÔ©½zõB$%%­^½úÒ¥KJ¥²OŸ>ãÇ—Ÿ-o?hРuëÖ)•JµZݪU«)Ý<ˆPƒÉOµG‘“Wüs[µjUNN΢E‹nݺ%¯‘——doo?wîÜõë×/\¸pÓ¦Mff¥7”$)###<<<''gäÈ‘Fv\ºtiFFÆ„ âããOœ8ѰaC9‡7nèæ›’’"¯Sa(“²åôññÙ³gO^^^`` ››[Ùªy{{§¤¤=zÔ××÷È‘#>>>qqq=ŠÞ&B˜››¿öÚk¶¶¶óæÍ³²²zÿý÷…‹/Öh4S¦L¹víÚ©S§äššØž:%›ëöíۺ檭ÃCo󦤤$$$h4š®]»8p $$¤W¯^AAA¹¹¹S§NݹsgAAÁ?þñyûÄÄÄ”””.]ºüôÓO;wîœ;w¿nĨ©‚ƒƒi„:å^þCûX’¤ÌÌÌìììäääÈóŒS§Neff6¬M›6>>>[¶l¹~ýº‡‡G©}¯\¹2vìX!ijÏ>ûꫯÚÑÑÑ1!!aàÀòbÒgÏž5þX[½™´lÙ²l9[´haggW\\ìçç§7+ooï“'OFFF¾öÚkqqq=ŠÞ&B̘1C¡Ñhš6mzþüy!DZZZRR’¿¿ÿ!CäCÈ55±=e·nݪPsÕôá¡·Íe¶¶¶K—.µ±±ÉÏÏ?|øpBBBbbbFFưaÃüýýŸyæ™Ã‡‡……M›6MÞK¡P,Y²ÄÅÅåøñã111Xþº9x F’/Ú177×»ãµkׄ^^^&Uo&zËiJn½{÷>~üø?þ˜––Ö£Gï¾û®¢GÑ›¨Õj¿û'O¦¥¥iµZy•ÃsçÎ !ÊÎÕLlO™œ‰éÍUÓ‡‡‘žutt”WElÖ¬™">>>##Cáéé)—ÍÃÃãüùó™™™ 4B4hÐÀÅÅE$äyðƒ”¿nÄj†ÂŠOø6l˜ššš››+O•®_¿Þ±cGù%__ß:üðá¡¡!!!+W®”gW#FŒ˜}ú”L7ý(zsss…666'NœHNN¾ÿ~~~~ëÖ­ííí#""V­ZTTT$_n^¡ö4Ò\µrxêY!DjjjDDÄ… NŸ>íîîÞ Aƒnݺ)•ʨ¨¨øøøÈÈÈôôôž={™ò>`ùëàà@< f((Òÿ)»Ë”)S tðàÁ±cÇnݺÕßß̘1BˆÂÂÂ7Ž7nÔ¨QnnnB‡ ¨TªÅ‹7.$$D÷|˜²¬­­'NœXPP°lÙ2¥RYvGKKË—_~9;;{ÕªUòç²#F!V¯^=|øpÝDPïÑõ–S1|øpww÷™3g>>%M?ŠÞħŸ~ÚÓÓsåʕ۶móõõÍËË[±b…™™Ù[o½åèèøë¯¿¾øâ‹ÖÖÖòTµBíi¤¹jåð0Ô³òt|ïÞ½ï¼óNQQÑ”)S„ÎÎÎrè8yòäE‹y{{«Õjc¡Ñ—¿® µ•ÂoÐð½Û7”»]xxx@@W¢Õ„¡·dðº]ƒ‡½Pξ?ý{öÄQeÓ%IJNNvss+õ|’‚‚‚üü|‡RÛß½{W¡PØÛÛW´ðewÌÍÍ533³¶¶~íµ×$IÚ´i“œž——gaa¡÷©ˆe31TNF£R©äÏS¼¨z¢71;;[¾øûÎ;J¥ÒÒÒ2--­Aƒæææ.\xçwžzê©yóæU¢=uÍUÑêÔÐáQö£GvqqY³fF£qrr*U¤;wîØÙÙ™x1ÌC/m<jܬÀÄÙû’%K¸¨u'…Ÿþ]É ww÷²éVVVz§Ve§P&*»£­­­Þ-åFMÌÄP9+ݘ&Eo¢<ŸBèžšº`Á‚””—äää&Mš”ü´»Bíi¨¹jëð0tC«kpS<ôò×âÁ ¶"j½ŸìÖ o¿ýv-~bppðÕ«WSRRÚ·o/ß!Êð¨œ9sæÈ Õ}𠀪еk×Z\;‡Î;wîÜ™Ž~@ÞÞÞu­Ê ÷Ĉ P{ñ|! ¦Úºu+ˆ€º( €FÄ@Uîòã¦àþ îâûº%xÝ.P×Ìž8ŠFˆð—E³'Ñ€ºC£Ñ8;;s™%`× €ÚŒïÆâÄþŽû@fâEÜ” ⓜ?ÞÒÒ²]»vÕª’qqq^^^-ÿÆ•JåÈ‘#Ký^ê¸mÛ6I’ ­Huýúuwww ‚=L¢žôªñ BÖn¦•ªá¬ÏøŒ¨NábÕòóó3225jdeeõâqãÆ¥¥¥•Mÿþûï?ýôS—5kÖTq“šþ?~|÷îÝË—/7%Ÿ’åß·oŸ‹‹‹<€Jþþ¸êXRXX˜‘!’˜˜¸nݺùóç[ZZr¶ \J› ψüýý[´h¡›¼ûî»ÙÙÙß|óMÝi4SfDFfh2»3qFT §pk²÷å—_îÝ»WžéµiÓæÝwßmܸq•ÆÁÁÁEEEBˆE‹ÅÆÆ~ýõ×ÖÖÖBˆF}õÕWffU}O‚Z­NOOß¶m[Ù—~ýõ×… .[¶ÌĬL)ÿc©c…<õÔS?üðÃ|°dÉNñ”ËÞFÿ'hÝ»w?}ú4íS¹‘‘ÚƒÌî]kgžyfÔ¨Q 6ܶmÛúõëwïÞ=mÚ´*\]]å_ä0 I“&666rÊ'Ÿ|¢R©>úè#¹#›4iÒ¡C‡-[¶ØÛÛ¿÷Þ{üñÇ–-[\]]gÏž-g’ðÅ_ÄÆÆ6nÜX­VËßà$%%­^½úÒ¥KJ¥²OŸ>ãÇ—£Ÿ‰'¶jÕjΜ9BˆéÓ§7lØpþüùÛ·oÕjµ³fÍjß¾}É¢nÞ¼¹[·nr¢)å)Y~CJnséÒ¥mÛ¶EGG+•ÊñãÇ8ÐP¥RSS¿úê«?þøC¡PøúúΚ5ËP5ÕjµJ¥4hкuë”J¥Z­nÕª•"&&æ³Ï>KOOïÓ§Oaa¡.b.[…B1~üøÙ³gÿñÇ¥”u/¯¨lb_¿ž†^2ÎôéA©°Þ @E' FfØ*•Ê××wóæÍ …bêÔ©½zõ2T0yã^½zmذá“O>ÉÏÏ/[#ã3¢²34#*U ã³;C3¢r[XWàuëÖ8qbþüùÍ›7BüðÃñññï¾ûn¹MѱcÇØØØ 4kÖL±víÚâââ7ß|³T;—;á4Ô§¦WM××ÎÎÎBÿ9HJIIÑ]J”’’rêÔ©°°°öíÛ_½zuÁ‚­[·ŽŽŽ>zô¨"///(((++kîܹ …báÂ…Z­¶   ((èòåËS§Nõõõݹs§îk7ndddè2¿yó¦ÂÇÇG¥RÙÙÙº¹¹•,ŒF£¹råJË–-M,O©ò›RÇU«V%&&.Z´hÊ”)òÑ UjΜ9§OŸ2dÈŒ3Z·nm¤š)))ÑÑÑ6lèÒ¥KLLÌÎ;åô¥K—¦¤¤¼ñÆBˆÛ·oëÊS¶ Bˆ-Z!Nœ8Á)€råäçä÷õëÙׯ§îw!ÄþƒQòŸÊÍÄéAÙ FÙ @%& F&0çÏŸ ëÚµë­[·BBBŒLÞ844´[·nJ¥RïdÃøŒ¨Ô ÍÈÊÖÂÈìÎÐŒÈÄ– ܾ}û7n8p@Nß·o_»víLiŠ6mÚܸqã—_~BÜ»woÏž=>>>eb|Âi¤O+Zµ{÷îmÚ´é©§žò÷÷ñÿho9µµµ 677ŒŒ477_¶lÙýû÷;– „8uêTffæ°aÃÚ´iããã³eË–ëׯ'''gdd 6Ìßßÿ™gž9|øpXXØ´iÓ }¿Ó¢E ;;»ââb??¿R/¥§§ !ÜÝÝM,OEI’”™™™œœ<`À¹„z+%¿þýûOœ8QÞ÷رcFª©P(–,Yââârüøñ˜˜!Ä­[·øüóÏ !Ξ=+I’¡2!T*•½½}¹± BÜË/*ùûKÏöBlߤdúCŸ”ýL·ìàÔ©Sš0!~üñÇ;wîèòìܹs×®]u¡¥K—ÚØØäçç>|8!!áúõë† faaâììlh²a¼Ê¥fhGŽ1t ²µ02»34#2±…eÞÞÞŽŽŽ‡ Œ½yóæÓO?m$]Säåå}ûí·‘‘‘¯¿þú\]]»téR‰ °Þ>½}ûvE«¶lÙ2‡÷Þ{O¡P<Èø´Q¹ººÚÚÚZYY™™™5mÚÔÊÊJ©T–𝇆†¾òÊ+»ví²²²ÊÊÊJMMBxzzÊãÃÃã°°033³róõ •§¢ …Z­¶··_ºtéŒ3âââŒWªä·]ƫ٠Ay<ɵ8wìS’ô–A÷RÙei ŠþúÌU6íùEN,ùRIæææùùùº?‹ŠŠÌÍÍ+4=(›gÙ @E' BˆÌÌÌ›%äääèòwtt”¯ñ–/w‰7R°zõêÉ×¢™l”;1>ë3R C ͈Lla™……Eß¾}oÞ¼}ðàÁ=zØÛÛ›Ò666¾¾¾IIIW®\Ù·o߈#*16Ô§­ZlllTT”¿¿ÿãy¾Ðþs\ IDATÒ A!Ĉ#&Ož¬K”‡xrr²ügZZš™™™“““îÍ&„ÈÊÊ*ùÔ;õB4jÔH‘’’òèªàëëÛ¡C‡~ø!444$$dåÊ•F*¥ Ü…ò¸7TͲêÕ«'„/—Òjµùùùº¾/[!DvvöÝ»wuwz# ÿ>ãÿî‡C…úb€’6l˜ššš››+Ïb¯_¿Þ±cÇ MLQÑ ƒbÒ¤Iåf›””$„hß¾½<ƒ*·`z'¦l ›¡U¢ôÎî ͈*šÿ€öîÝqúôé™3gšžCÿþý###¿üòË;wî 4¨ƒÍPŸV´j¶¶¶3fÌÐ}ùó çMÖÝ»wwtt ?tèPZZZTTTRR’|™ZTTT|||dddzzzÏž=åæhÚ´éµk×"""æÍ›W\üÿWòyyyi4š‹/”jn//¯ÄÄÄGTþ¼¼¼ˆˆˆû÷ï9ÒÁÁÁÎήÜJEDDܺu+::ÚH5õêСƒ¥¥¥üÒÂ… ³³³”A!׺ì5m@OíîîÞ AS fh²Qî%ghmC³;C3¢Šæß®]»Æ:t¨¸¸ØÛÛÛôºwïîààpùòå¡C‡V®# õiE«–ŸŸçÎR‘×¼xÀÁÁaÁ‚*•jñâÅãÆ ¹y󦳳³<ÝŸÜÝÝ}æÌ™,uˆÑ£GŸ>þ‘œ; 7nÜ8nܸQ£F¹¹¹¯”R©\¶lY@@ÀúõëTS/KKË—_~9;;{ÕªUr¤h¨ Bˆ-[¶´jÕªS§Nœâ(—|QÐÊ-+·D”¼LÈÈõBS¦L4hÐÁƒÇŽ»uëVÿ1cÆThz`JÁ*:a0N©TîÝ»÷wÞ)**š2eЉ34Ù(wƒ’3´Š¶€¡Ù¡Q%ZxÀ€’$õíÛW~¶‰9XZZúùù™››ËWùW‚¡>­hÕâãã7mÚtõêÕÿ ¿AÃ÷nßPîváááæQ¼ ïÞ½«P(ìííK&Þ¹sÇÎήTà•——gaa¡wq F£R©ÊÞNñã?þöÛo‹/~Tg‚‚üü|S*¥ÑhllllmmWÓÜÜ\333ù1¯FÊpúôéuëÖ—-Uðº]‹fO⼨;þ¼vÑìIFæ0Áëv öB9¡Ÿþ={⨲é’$%''»¹¹•ºË¶BÓSTh ×èÑ£åÕ¸4““S©—[0C5*wƒR3´ µ€¡Ù¡у´°é9Ìž=ÛÑÑñÃ?|À‘©·ObÕLœ½/Y²Ä¢:¼QõŽ-•JU6Q·ÐÞ`Koú‹/¾¨ °+++½oN½•*[H½Õ4¤d a¤ VVVzƒ`hº_¹ EÉ'Vnz`Š MŒÓ;e*·`†jTî¥W¡04»34#z61‡ðððsçέX±âÁ;BoŸ>ÒªbQÞäO=õT:©q™¦ÓûÁí3gÎùÂ<77·O?ý´–­÷jA¿Ôzò]³x@µòSW3ú¨³ø~ ÎÑh4ÁëvÑ ¨sfOåììÌ#†@>>ׯ_7q_ú¨Šx Q£FBˆ3gΔ})55Uáéé)Ïà=<< 333åW4hàââ"„°µµ•$©ìîéééBˆÐÐÐW^ye×®]VVVYYY&î  ¢*sÿ€§§§……Ellì­[·êׯ_ò%yÊžœœ,ÿ™––fffæäädû¬TnrBkkkww÷iÓ¦uêÔ©j*RTTdañ׿•O?ýÔÅÅeÍš5ô/*æäÉ“VVVBˆÈÈH]zRRÒæÍ›ýýýg̘‘™™™ššªw÷F}òÉ'gÏžýúë¯7lذ|ùò*(³Z­NOOß¶m›üçW_}efÆWÐ@<¨ –-[ÆÇÇŸ9sÆ××7)))))©~ýú’$ !ÒÒÒ´Z­F£‘$ÉÕÕÕÕÕUo–––-[¶lÙ²åöíÛÿüóO­V;sæL•JÕ«W¯ 6|òÉ'ÖÖÖ«W¯¾té’R©ìÓ§Ïøñã---å9½J¥òõõݼy³B¡˜:uj¯^½„ _|ñElllãÆÕju»vítËyúùùÅÆÆjµÚÀÀÀY³fµoßþ“O>Q©T}ô‘¡Ý/]º´mÛ¶èèh¥R9~üøÒõðXðá T/ÞÞÞÖÖÖGB9rÄÇÇÇÆÆF¡P!:wîܤI“_ýuÆŒ±±±F2)**ŠˆˆÐh4^^^fff)))çÏŸ íÖ­›¥¥ePPÐåË—§Nêëë»sçNÝU=òfaaa]»v½uëVHHˆ"///(((++kîܹ …báÂ…Z­V·±œg=T*•]`` ›››üjZZš‘ÝW­Z•˜˜¸hÑ¢)S¦È»ˆÂÆÆÆÛÛûäÉ“………‘‘‘O?ý´î% ‹•+WvíÚõÚµkjµúàÁƒzsHMM}ñÅ—-[V¿~ý·ÞzK·oHHȬY³222úôéãïï?}út‡°°0yŽ.„°µµ]ºté;ï¼óôÓOß¾};!!áÔ©S™™™}ûömÓ¦OFFÆõë×KåÙ½{w;;;KKK???ggç’…Ñ»»$I™™™ÉÉÉ~~~ò7â€BôîÝ;''çÇLKKëÑ£GÉ—/^û,88¸ÔŒùò冶ÿÏþ“’’B»Ä¨»~ùå—3gÎÐP; 8ðرcùùùº”Ç÷ïߟ–ˆýž}öÙ+V”üÏ!Û´iÓ´iÓÆŒóÙgŸI’$'þóŸÿ}ãÆEEEBˆ•+WúùùmÚ´)77÷رcò^={ölݺ5M U@¡P 0ààÁƒòŸ‡îׯŸ™™™¡»NJJJAAîl/N¤÷¬µŠ¹¹ùŒ3vïÞ}õêÕ’éýû÷oܸ±J¥jÙ²ell¬.= ÀÏϯS§N¶¶¶Ý»w÷öö¾wïÞíÛ·sssÿøã.]ºdeeµmÛVþlIѽ{w///šªÆÀÏž={ûöm]<`üÄnˆ¡³:PGXШ;Z·n=xðàÏ?ÿüå—_Ö%9räøñãyyyñññ~~~ºt•J%ÿ¢P(äßå„/^,..Öݵ֤IÚªž»»ûOþøãzõêѤð 4(,,,--Mw'±)'v­V+„(**’o଎:Žë…P·ØÛÛOš4éܹsòf·oßvpphذaBBÂÍ›7M¼‡ÌÓÓÓÝÝ}ûöíò¨÷îݓӓ““寭U£oß¾‰‰‰áááºx Ü»««ëÕ«Wsss?ÿüóœœ#gu€x¨ Ô©S'ù÷®]»ºººŽ3&88øé§ŸÞµk—)Wšš››Ï›7/::ú¥—^?~ü¿þõ/9}ݺu?ÿü3- UÆÉÉÉÛÛÛÍÍ­yóæ&žØŸþùï¿ÿ~ܸqíÚµ«_¿¾‘³:PGp½ê„ÐÐÐ’ê.µ°° ¹{÷®ƒƒƒbäÈ‘ŽŽŽBˆõë×ë6Ö]\dmm}àÀù÷æÍ›ýõ×YYY¶¶¶VVVrâüùóij¨büñßf6娸ÔSO™™™YZZ>ûì³FÎêñPWÈÿ3„òÿ Ó999ÑzPãNìÖÖÖœÕ4Mðº]4ԜҀx ÂœÍžDó@M÷Ï൜Ò vœÏ+·#÷µÁ쉣jp<°qãÆk׮ыPiµÚ¤¤¤ÔÔTù±î€Ç¢rV—û‰÷ìÙÓ¢E :‹aÆåçç[[[>|Ú´iºÄÂÂÂæÍ›>|Ô¨¿>yzöÙgÕjõ3Ï<“››ûÕW_…‡‡{xxhµÚ„„„!C†¼ýöÛò޶¶¶B++«]»¸?ª©Š&Mš4räÈÁƒÓŽP Ì™3gàÀÿýï§OŸ>dÈ–-[ʉ ˆŒŒ|ÿý÷ýüü\]]Kî|ýúõ;wÊfÑjµF~éÝwßõ÷÷§U š«üõBkÖ¬ùã?V¬Xñâ‹/~øá‡;wî”Ósrr^yå•û÷ï¿õÖ[‡V«Õýúõ ºÿ¾¼AjjêŒ3úõë7jÔ(ÝÓÜuô¾š˜˜Ø¿ÿùóç¿û7o^Ù#Òð€ E§N¬¬¬bbbþÿ_…™Y‡´ZíÝ»wKnœžž¾oß>µZ­{J£™™Y½zõhF¨ñÀ¸qãš7o>qâÄuëÖuìØq÷îÝrúÏ?ÿܸqc;;»ää䯿þzĈ‹/þóÏ?ÃÃÃ…’$Íš5«Q£F?þøã›o¾ùÑG]¾|Y—§¡W/^ܲeË={ö<÷ÜsgÏž½{÷n‡Ê‘ÕjüñGI’:vì¨K¼qãÆêÕ«===Ÿx≒_¿~]Ñ®];½Y]¸páÀHII¡a Ævvvööö...Ï<óÌÕ«Wå‚÷íÛ÷üóÏËÛLš4©oß¾>>>ƒ úí·ß„W®\‰‰‰ tvv8p`»ví~úé']žz_ÍÉÉ9{öìĉºuëæéé©P( Pi6l2dÈ7ß|óÁ¸¹¹É‰ ,1bDLLÌ·ß~[j{Fckkkii©7·?ÿüóèÑ£GMKK£m Úz8÷«T*__ßðððaÆ%%%õîÝ[N×­ÿ×¢E‹cÇŽ !ÒÒÒìííuÿfZ·nššªËGï«.\°±±iܸ±)GTZ=úõëçééYò×    Ìš5+==½ÔS5jtÿþý{÷îÙÛÛ—Ím̘1Ü?Õ߃>oT’$ù—¡C‡FDDìÛ·oèÐ¡æææ¥6KHHèܹ³ÂÅÅåÞ½{º»Í\\\t›é}µU«V999·oßBhµÚ{÷î™rD@EµmÛ¶cÇŽ¥.¿´µµõõõ}úè¶×ûªüë_ÿ:zôè| ÑhÌÌÌ ð(¼ýöÛ©©©›6m*™èää4f̘իWGGGË)·nÝ:qâÍu%xá…þýï7NammÝ¿’ß&§¤¤Œ=ú…^hÔ¨‘ŸŸŸÂÊÊjÑ¢E[·n}þùçÇŽûòË/—¼ÔÇЫüq~~~hhè Aƒ4h`ccc舀GÁÑÑqæÌ™kÖ¬Ñ} $›>}úðáÃß|óÍçž{nÔ¨QjµZw·À‚ üþçÒ¥K´!TOtÿ@¯^½ÂÂÂrrrä?sssK}T?lØ0__ßÜÜ\GGG]â“O>ùÓO?effªT*Ýu>?üðƒ‘W===¿øâ !„F£¹råŠüHl½GTNɧ;èM:tèСCåß÷ïß/ÿbii9cÆŒiÓ¦%%%9;;ëÎözsÔ¶x@aaa!?v:%%åĉ|ðA© ,--õ>zÂøªK½úé§Ÿ* —ƒöëׯU«VFލbæææÍ›7§ .Æ%…„„888èþ òôô|(9¿öÚkqqq·oß~ï½÷¼½½ @UÄÿ ^«7}ס3ûûÈù‡[ܳñšÝ‘çŒðNéâƒfOEÛÕGðº]•ØËŒ†ê,â€xñâĈ @<€xñâĈ @<€xñâĈ @<€xñâĈ @<¨‹,*½gðº]4PçâÙG9;;/š=‰æê\< „Ðh4´PÓqÿ@<€xñ€ÚÏ‚&tjåStgOU£ëXÓË:ºæV¶ÖwJ© Äå°¼t)nÁ‚¼¼<š µX‹³—ºuîX›jtæÜ…äÌ«5·Ž5½ü £knek}§”­ PËØÆÅÅ]¹’———}ü¸ñ-~ƒ†ïݾÁÐËÉK–$/YBƒ5Z“  &AA¥—,YÂý@ÝUÎõB½{ËaD\\\‡¸^µÛ‰³—z{?Y›jõß󽺶«¹u¬éå]s+[ë;¥lZ¦ììÝ¡wïÊÄŽ~~Ž~~Bˆ áá^,KŒÚíúº]¯¾5¾6Õ(ô‹õ£ÿ~Ã\ͪcM/?èèš[ÙZß)e+Ô2¦ÏÞy¾ð7–æfÔ‘òƒŽ¦²t PwÿogQ]þÛ9sÆÒÒ²S§NBˆo¾ùF©TŽ;¶š×ñûï¿—$iüøñ&¦×ôòŸ8qâèÑ£ÖÖÖ¯½öZÆ Ýx$éæÍ›9995²³³“KŒ’Ƈ;LoÀêüf|ÔmRãÎ<µ£œˆ€Ê+,ÒVt—¡Cüu_ÆÕ¯_ÿ‰'ž˜4yJÛ¶å\–ZTTdaaì øÞ{ïÕ«WÓæP!ÄÎ;ëÕ«?楀ÇUGÙûïEþòËĉ“&Lœ¤wƒÜ-IÒ«ã^71½¦—ÿð¡Ãsç¾ÿ #”ö9÷s+]0ãòóó7mܰuë–û÷ï›™™iµZ•JõŸðŸK Œ’Ƈ;LoÀêüf4¥MÊ}·>–ÊöîÕÓÃÃS×ãÓ§½™••½9tKí8C _#Ù®[¿ÁÌÌL.$ IH•(Ûê£";;+êøq®:ÿ IDAT›ýû÷F B¡ÐÛB9 ¥×ìòÿù‹âÍé3äìVK ^ºÿ§}#^ùFàGG§ëññqq1eFÉcd¬>ÄT‘¬¾oÆrÛÄ”wëãÕ%K®}ä[u€x¨añ€ÂÌÜ̵‰»«­Ú´ÓJÒŠåÁß®ûfá’eBˆ„ëñ+>[s¥qc··gÍnß¡ã¶-›¯\¹¬Õj_ xiVÐû:vú|ÙÒ?.^¸uóæ“]º¼8±¥‡§bÞsTªO-ÑýO}¼óéðð7·&Þ={îÚ¾íÌÙ³Ovî"§Ç\¹¼lÉ¿ÒÓÒúöPPXhaa!ço(½Ö”ÿ»µkŽ;*„˜üè·S¿†nÚ$ç“”t#5%UwIªLÙV ‹¤ð°ýýŸÜà`!Äöÿ¤K_¼ð“”ää×'iµÒíÌL]9 ¥×šòûúõqssB¼>aJï§ûÉ]vþ÷ß7mø¾k÷ff–³g¾õç¥KoNW÷ôõÛ±mËW_®Ôõì©“Q?íÝÛ®}§«q±þó½ð°ý­Zµ>÷ûáC‡J%6.N’¤Î]» ½cOW°’F.ÉO{÷téæ}ëæÍÏ—/ÕmŸž–V*=''ÏPQ L]5­m”Õª£+úf,Ù†¦¼[ eòX*ûW< «»$$!Œ€êÖ)†Æ^“¦-~ûí·Â")ò—_~;uª°H:zäHÃFå FŸ;·þÛµOvîvåòŸÛ·n}Xø~€(,®Ì? ©ÄŽ »[XXäÜÏ),–NœˆÊ¼ukð³Ï{¶j×ÝÇwÇ–W¯^mááek§,..îÑëiùˆ“ÿñŽâŽFÓĽéùsguYIBÒû{Õ×ñzüÕkWc?øø_õê7lééuìHä¤éoÛÚ*3oe$\ï7ÐÈð…gÏüW’¤ÂbÉPzm*sVŽN*!„®…ææKC¾rv®uì—ŒŒô!Þï;hHŸƒú9lÿÞ SÕfffB[»OƒW˜››ùå ¹¹Å§Á!¹÷󎋼~=¾ÔQnÝÊBXZYªµ¡Abckûñ’ÏmlìrsóŽ>põÚµfÍ[êM¿‘xÝPQ L]5«[GWâͨk7SÞ­ÇŽ2”ÉcªlÉÞB*T¯N9¥wìµôj­T*Ïž9ÝgÀ3Ñç~oØÈõü¹ßG¿¢=súÔÛ³çþ••B|´ø3—úQÇŽÄ\ùóa:€x€(¨Ä·áÒßvÌκSTTäÚ¸IA±6-5U±-tÃŽ-›„––V™·o»5×JB’þ·‹V«Ýòý7ÿý5*#-­X[ìèèôWV’’Ðóûã¨ãðýÖÖÖkV…!òrsóòrù¥ß ¡¿Ÿ=#„hîáU »œ]ÅZC鵬ü’þVI¸¸ÔW::kS’“…ÍZzʯ6oéùGô¹ôŒŒz  I4häjne+„P˜™¹¹7æV–6B¡•¤RG©× ¡âìéßÞ˜¬ìé$’ppp4³´)(Ö6iÚLqõjœ«{s½é·2ÒõÕ¹^}C#SWÍêÖÑ•x3êÚÍ”w«ÁLGeÍÍ- òóu;*ÌÌËÕ¬SŒ¼MÚuìýû™³gÏ8»Ôë3à™Ý;¶\¼}?ç~›Ok…$ê×ohïäRP¬µ¶±Õj¥‚G|ã@<Ô!EÿIB’þÇCaBˆv;KÎõ!ž}~ÔØÀ©%!IB«ÕÊ»DEܽcË«o>û˜ÞW§§¦Èé’ÒÿÊSò÷ª¯£¶¸øÈá»t—«£r©ŸþÓîÃÿyªÿGU=!DFzzQ±¤Õj ò---‹Š%C鵬ü’ô·ò”ì&G•‹"%9Yþ3#-ÍÌÌÌÎÁ©¨X*5`´’TTü×ǺZméÚ¹7÷2·°¸“‘‘áR¯¾p@0I7n!¼ÚtøëÐeÒ õõØ/åÌjÕÑ•|3þ¯:¦¼[ móX*[¿aôԔ{÷îÛØÚJ’”˜ß¶}'ã ºuŠ‘·I‡'»þ÷רïÜÖ¹[¶:ïý~ëÆïÚ´ïhfa]j$ËayßÄÀË*ó!SaaÁÙÓ¿åçæ^¾tþçŸv«œë 5¶¨XÛ¾³·½ƒã¡ˆýM›{>ѶCb|\“f-\ÝÜ›{xEE¼tá| ¯V99¹BK+ëS'ާ&'åååæÜϵ¶¶BH’TTâfÁ¢‡ôXEó9ûÛɼ¼Ü)ê÷mlmå””äÑgÿ›š’âÙ¦½¥¥UÔ‘Cnî-.œûovV–KýúEÅZC鵬ü’$•*®›Ú=ÙÝÎNyêÄÑÞýžINL¸™‘Öͧ·ÂÌ¢è¯ÏÑÿ×›’[øö¤€u«?»™‘Q¬•úù?׸IÓÞ{ëØáÝ{=ݬ¥çú¯Cöì íÚ£W~^Þ·«–ËÙêÊó e{ð:=îíû”¥µ.ůŸ¿$IG…›™[ùòÝì¬ ß|Ñ´…G½ú „$е’¡ôZV~éïå)Y<{GÕ?‚¿7c—Ë>éÔµÇëo¾]v3yZóÿ¿ =å5nâèWS“o,üàõ„—¾ùbiRb‚VF‰ÂÎNùóþ=¿¯.** xãM]º›{óˆŸvËé/¿>ÅHQM™Õª£+÷fÔË”w«¡mKe_zcª_¿AÇ~ùY=á¥=;·<ÝßÈ /Õ­SŒ¼M»7wtr¶°°lÕ¾³™¹¥g«6Bˆö{èí’xˆ£¨›~ƒ†ïݾ¡ÜíÂÃÃtKеRðº]/y9çÜ»«P(ì”ö%³³4Ž*ùAø÷îfÛ;8 !îfݱU*-,,Êq·nß1{â¨G]ǼÜ\333+kkÓëNùå^¶µUZZY=`!%Iʼ™.IRý†®Oøo©rvùø³µÙY'…™YÙR•M×[TSFfMéh#oÆ ½[MɤÊ*+IRzjr#W·’½Yî¨nò°Þ&XA –1qö¾dÉ®þæ}élm«,›¹½S±V¾VØØÙ˯ÚÚ;ŠGüÝ÷CÏÜÂÊZo¶†ÒëTùíìV™Uõ !tcÆè$ñ¯ËììŠ%!Ê]oºÞ¢š22kJGy3VèÝjJ&UYÙúÜJ÷fy ºuÊC|›¨ÌÿAš(©.|‰\ÓëÈýåzcúl K+:ºÎVöÑ Þ}ñPûÕÿv5½ŽEÌHÊÓºSw:º.WöÑ Þ}ñPûñýåMeé€x¨ÃS:pkM¯c1óf¤²”ñðˆp½åMeé€x¨»þg/u¤ü £©,uQ]xuM¯#Ï çÍHe)'€‡‹õ‰âĈ PûTày£[·n¥½€ºÐX@4 Ô2Šf­F !€ºæøñãÿèÕéÌ­ÆœIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/09_detail_box.png0000644000175000017500000006301212032647170025417 0ustar ebourgebourg‰PNG  IHDR¾Æ|sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ6+ïë$ IDATxÚìÝ{\õ½7ðïLˆÆ[m¼T!HsBKD£6뢮{Âí•RJ [›ÛtOO},r±p’4ÈÚ£}ŽPbô@Ë¥[µÏ)OÚR«‹–ƒ+…¶Á¬†uÕzY‰’“B¬šà-J;óü1{ß¹.»ËŸ÷‹?`˜Ëo~óÛù}÷7—/sÓM7egg€’ááá¤ììì;w¢.@ U¡ t„€Ð:Èüç'­•¹¹¹•ÖIžˆx~¤)77·iÄóßIke¥u’çÅiÊÍÍÍmûoàÊóóóóóó}›M„>7?LnnÓî€bw$™ÿ1LJZ:±££ãG‰RˆŽQÏðHµ>‹aèè¸+=;…a"ÚÏÉ®ª­í®Ìò=-Ɔç'»ªšGZª³"ZÀ’Å0Y55D$²ÒÒÒ©©)…ÎZ5_Ÿ˜Näâ ’É‘När%JïLÙ‡\'\iÈþ2ÿHRHùÿœššòÞî`n¦ž¢ìjZ5žIä·“p£ƒ0˜Á²¶º±, ÛV·Y5}Õ“]U[-£¶Úª´=-%ɤbmzO,â¨Îw {â¦ä‹²ƒ‰¬³³“”ú²ÀÀ"Z#Á©p_èm’á%Ðg‘Íf³ÙŠª†1lÌ´ŒŽZ,£E ÕDD´*-“8WaàM"7x.n„b˜”’–Æñ¼ÚOù”×&\ì°Ù<ÑLg6UňzýÄ_̺3ÑÎtUZ&Q@ôÀªYÏZŽã¸Báû}²aãZŽã¸µB,À0)†™,këè:¶äØø1"ǰe)=-ðY žiò=Ø)Ì™¶JamÁ{Fd³Ù|c*)¢©oâ°ƒÈ1üè’ 3† „?½GQбµ¡µ˜ÂoÈjÈ+¨³Þmà9¨®£†¼¼üüü‚:·¶lOK‰[Ȭ-°Dá‹b1@ ÑÎT˜h«+(¨³ñ_ÎevîܹsçN"êíí ¹æQx×<ïõ®]»ð"jС t„€Ð:B€$TAü=øèã¨HÛo¿•Pgæ?"æGýŽ;P ¦¦¦V®\‰÷&Ι9ñ.XàÛ6àˆ t„ ¡ÏOZ+sóóóóóóss+­“qÍBÉó#M¹¹M#|ð”„K†)”SH,&üž °ü .F'±ÏO¿8vÇ.>]¶øm’]U[Û]™å{ZŒ) ÏOvU5´Tg1L<뢧¶9{o¼7:GWظ·Z¬«jk{Omóóë$_Á÷~‚æ ÂsFZ÷õ &>ÿÛ¦-¿ÆÚ×}BVµŽž¯nÒºšÇ~þo8R"qäµjk»‹Šûª³˜8uÙâ¡Ã¸‹ˆÒÓ’‰ˆ&ÅØZãèªÚje…>2‹ax~¤9¯¶‡ŠiçÎO¾qų=¾˜cÒZÕ@u-%)ž‘\°¶–â–µÕV¥íi)I ˜.,ec=ƒ%… }5YA«ª«³ÑÚ²Žƒ½jk»‹<…-|øŽ4åÖÙX"â j²|[”)§ˆä´Y¥_¼xí¿nÎF³ˆŠ}hßô{£Æ»~ œÒ=½UWUe”ãÖÊœêƒû©\ÇŒŒPQãBûj*ÅñXû(Ë5xv'°Ë–ïÔÊËÇ,U'5=¼J%C‡ì"²Ùlµyc¾%=ElÞÚîÊ,oÜ8TÛ^Ûœ-”ÃÓÍ7 fMZÿa²3SŽÙ‡hcÐñË/80V„¢†ª«³lmNóÍLD “U30P㳄‘ }Àªöv¤Ummµ˜ò†Êöì)oØÚÞÞÐeh)Ia©2øLZ+ëllaC_55ÔÕU¦u´S”Ê)â;w¿R~Ljè؉OñiqüÃOgÝœÚ/¸ËØ Ï?›ˆ¶~ãF¢ùů ?ûA²÷Ì‘Y’ÓÒ‰\|«J'rq…-%ÉäH'r¹Æ%‹•!xä⸢l=er==CöÉ’år”4Ý}^ù?8úþIœDã†|cd@åüWdåráùg¿ûÁgDtcÎ7¶ßýëßýìáÌl*Iöœ±{†GªõzrÈw7 Ãß?=ÅNÍT’L”–NäòTÔôÐ*ý8•—|%TVÍ@_µ0Fá¹pà‹òê lIJ$tÉ¡ý½ç:ª³Ç]Eq‚b’Kêʆ¶¶×V¥í1ù«cÒZµµ}”e‰e‰ÓV•!eH úçÑqWðܪ˾¬¸x-ñwî$ñŸ.£OY~Fyqf¹›ÎžeÎÆÉ¥}öþŸ¼ùâ`î×JÖ^¶RqþÑ#SÏt]~m]𹳄‰ÂiVý©>y‰Vv:5Ñ*ý(Uöm’ “RÒÒ8žWÛãÙÞª´Lâ\A7 „ÜÜÊ0YÂÅŽáfê)Ê®ñ̦¼ |Ú:2)=[¸âÒÐî¢ÌòÓøÖÚ ;.R†ð‚Æ12ÓVi¬Ü‹ÖñÅ9úñw?š:ûñ —_´zÕ%,ú<‹Ûí^¶l™7ìàýÇso¾Ï%…ó $ Çð³Üç3®¹.å¬ð?Ô853û拃7çóÂÏõþ‡ÓŠó_ø¹³.¿6çͳn.äx^ ®\»æU?vCȬž3v„ÝÍåïsÕYYÑïÔD{Ï]»v‰?œÙTi*Û1lcYa{ “bؘɲ¶Ž®c !²Ùl¾1• JÕKõžòL—ËFynáÔ²…2øfvxö:s£!%¢›hx>ègöôÉK/<ÿÌ3Ï<#ÀòåËÝn÷ìÑ——-[&L9óÌ3/½ðüÙÓ'CÇ~äFí#}Ï>ß÷ìóýya`øÅ篿~èOfy5Ëþ〣ïÙçŸuL)Îé>PsOÉŸvm¹{åÿ˜ü,äOü¨üΩ—^p®›ãUþ|á‚óˆˆaü+ 06~ÌÛO¥§¥0Œâ©~ñ=Õ©ßR¾–ãzj«|ÏdŽ45ð|´:5Ñ*u¨®£ª¼¼Q–%"nm™ï1‡ckÃxnÅ”oñ>ˆ~•Á°qm»ËÞ¨YP²Ü)Æ–Æñ¼Zo$ÑXd«³Õæef;j«Í£Ÿõߤf=áe~ðÌPW`#â |·“h‚Zäé™ÞË7éS§N?ÿ+þÕ'f~8ÀøCcþôÌ »)ƒZo½àظí–Íç'ÏqÓ§fŽð±ËuäO}åœuëRÏZ&³ì»ŽÏ.+úÓ%g~8¹ïö_ÓͺÏGÖÂÛ6€Â¸·÷tÇqž6óôÀsDôõ\ÿi<|а h3jÈóÜùïíUæÒÝ,ȇcËÞ´æ¼Z‹©ÀBD³‡]öœ;µ*½2ŸgvîܹsçN"êíí---E”¹Øò£ÿ,ý—;?úôTÐÝ ×¿lÒþóþóògŸ}vúù_1/þ:©ü…Ùñ‘³¿tSRR}ðÁ¿éuœyA&jTzûÀ‹9ÞÐ!(`ýôÄ®æ}3—¯»ð –x÷äøøÄ»|zjvÙò3/¸ø kÿéÒ$†œÃ.¯¹åîKÎüprß÷~>ID†›²>xû­ñONŸžuó´üŒ^ü…µ«/YÆÏñû_x‘'†¹`!cå+Ï;þíž’«ÏZöf×3 Ç¿xm2®Y€*~2mêùö–qÑ3ƒû[¶QÕƒÝ_˹QtÊÔÇŸýµÿO†E矻BXÉ{S'ô?õ×<<øèã ’þʼûáúwÝqx×<ïõ®]»93úB"ãS§Osçv»…?Ýn÷ô‹¿eöÿÜ}ç‹îçZØ—ËýèEá¿Ç:}ú |íNžxå_zë¬sÏYMFÅ×ÒÏ8û‚m?¼ò»?ÿûÍú´7^zíšì«ï,MIùü§Nž|饷:¸bæ£½ÇøÕs“ˆèü” ÚEDt‡ù×lήX³òâÏy&K}ôÉK¯¼õè¾ñõW§½ú‹÷øb…wV°²m@ý¨ƒ e{qÕƒÝÂ/¾‰ó° ƒf–8:DÜÀO:åv»CfàÞ3ú>±âê/_ôÏ_½ö‹ìÀ=Γ‚7Êÿɡт:¾«ÄB›Éÿê Uv áB`ÐPõ`wþWolW ƒf†Ða‘ŸÍCB‡Ó¡Ãìì,}~õ‡~xæÌ©¤‡ggg?ûì³eË–­X±ÂívŸ:u—ACc >-'qfê—.zyÿ1Úp>Ýxî2ÇÉ”Û3Ïáyj~°÷¯Ì.?ë OÜ·ñÂŒk¾ºâ­?ýßÁ·«¿y÷%g~òÞKÛZŸsö²Ë¿ò[ëÿê#÷çÎ;ë¬ålêu7ýäŸ?¿êÚÌO{ÿö9™Íîu€ÈGr7\ï‹|qCî†ëC†%¤îuˆ®©©)¤ Gè0?Nϸÿœ>íu˜ýä“OˆˆùÖãgtäNß´ûè£åË—·XÿzáçÎ*ÍÓÏÌÌLŸ>²8€ 7fâNϸݳ‘ÿþßs/ý¢ðmÛÝÆm n¸pùÿ»F’V¬Z—yþ{w¥]wí¿g§]pE"錕¼ûS.àïvžÕy·T:xçÉéÓ2³…ÿ—a˜X7³í·ßºråʹݡÒ2ª6}ê”p¯ƒÛí¾ç×Ï$-[vÎYg||ª†;ÀŸÿÆÐµ—U{ã¶Ö.ž^¼åÆÌéS§0(7½S§>ûÇ¡ãk6ꄿퟸé<ϰ@×_Þ œõ½3>½8efzò˜;ý?óVÑþg_~nâÓÏ¥]ùÛÏ÷Æ!1 Ïÿ‰F *-_æ BÝœç~#/¾8ä@Þû²®½FøsËË23n.ÖÅÃæÔ ·ÛýÀß|íŽ WŠOϸ‰˜ËÓ¾ðÑG‘´ŒñÜë€  ¥±|+[æ~÷ÐøÉõúõ•7ODŸžÛzÅòwƉ.eæ³WG»Þ¥å ?33›±îKŸM3ç-#·›'"6éŒÙé‰7Çøsÿ)“ˆ8÷ô®gž»œÖ®»Zq«ÂŸh´ uÔA¸ñâKóÅ ·I Ñõë¯&"!Ø`ârÁ" :;;Q#1<,†™}꯯|xrš!â‰Î?gÅWÒóÿýÿý9sõ¥[rÖòÉ'§NÂÇ"ˆιàšÇë¯ñM>ýéÔC¿|-ýò/}zØõ_£ë¾¿öìïT^=úî§””vÙÅ)ç.û—º?^|ñŠ®iJYqîÅYÍœüìýÿxâÑ%ì²ÿgó:×̹%ëÎñ7ê6ÚäÑhAÖw›dð­ Uv¯¿æ*á_0ü„E詵··wÉVãüvÖo¿ý¶?t(--E³ž£ÿzæ'$öpæòåË—-[6==ív»ÿíÖ›C ówsÏ=÷\–egffN>“0D4ê ¼jìô‰>yãÍ#O fÖ|éâ$ösé—ÿµ³ïÓ W~%%sí*rϼóîñgLžyñ¥g_rÞß÷¿°oáú/ž·:õ‚ÓŸNOô·ûlç•ÿó¯ÊÊ8÷í¿ÿ§õxí–‹Ô:àP€ÆQž'¢k®^' 6\sõ:©)¾CšÙ’í³æ}ÇGGGý¡®ñÄjÔáôLRRÃ0Ž·ßyûèñcÇ? _äž­y,Ë&%%:=ƒ/p Þª+¯|f÷“¿™®3ì²eË—Ÿqîùç_’ñå¬0ÀË®ÎHóocûþòÒôi71ì™+VœwÞçV%_Ä­^sñ¯÷ þç§§8žØeç­¿úŠÞ:TñœsÆMg÷ùK?ê›;O2LÒúk2‰èÿ°~ìæÏ¹,cí…gÐ…ëÿD£Õ£žÐÁw¯ÃºuWþ):…Äž°X²}Ö¼ïøôô4îuˆ¾[ƘegŒ¼òÆÍ7\›½nuöºÕ¢‹n޼ò³ì Üqš$_qE²B;d/¸$å‚KRB"\Žˆ˜3¿ø¥/.rîÅ)W\ìŸó++ý«J_weàšCþP?êðΉOB.XÈx÷ÄÇ‚hi‰¡CÌGRÒ2ÓÿrËÊÉéÏ;ÿ”´L|€ÅjzÆÿucÿÓÖÔË Ÿ?ÿ\Åù?øð“‰7íù_7NϸqnDè°¸C‡à/…©—'§^ñâ‹Æ'ŸNŸ½âŒÜ¯• <Ó5¡n‘ܯ•œ:=û©ì{ ¡Ã"Ðùˆ;ùÙ© Î?§è–-*ç?53{ò³SÁÓT#B„KÈñ>™Ëâ¾Ç4 ACžiÎ«í¡¢Æ½ÕY ãûógý7=—· ÉŸGn÷µ×1#/†Mç¸ÂðE új²˜mÉÌø.?ïý§þ¼­ Ö'[TÂÂu`˜¬šš°ØB*æ¦i­ÌÍÏÏÏÍmñ^àù‘¦ÜÜüüüÜÊÊÊÜ\á_ÂÄðß%W2i­ÌÍÍÏϦà#,k«ÍkÁ¥€„Ã6–¥¢lɯõÇÆÇˆ|38š·¶»2ËÊ2©§¶ÙáYGs­e úöÖmTµÍ°•ðüHóÖv5ôõõ÷÷ Ô\Ç^W½·±ã„Á,\Qæ¿`þ>ðM›6yâ ÖVW`ó,Í!{™oUÜÚ²=Õz¹Šj²„~¸‡ˆÒÓôiéD®±ñI^ŸLÇÆÇˆãÖ¦­òŒa¸Æ-DWâÙbmUÚž–’‰@a)¿) 1áÌ<_‚rXPØ›±}o»ô}÷Þ9ÅoóWظ7{8¯¶§gx¤Zï›ÓR°,¹Æ%ÓÑq¥§%k\¼+Ia²ª÷”mmµ˜ ,Rweªa¸}ø¯hUq€¼Kó%(‡EH¸0¯ô[Ê3m[G×–,c Ѫ´Lâ\A1‡ö›DVBDLбuÀ8Ò”[gc…»2ÃGBÝ ÑàÌ<_¦§§ÙÄ,YrI]ÙZÎÕÞ`ä&Ű1“em]Çü]>“•]D,kvxnzœN46~,dºÈJü¡Juc!ÇQfÚ*o!¬B$è+¡&¥ÄTd©³µ7tZJRŒ­ ã¹uS¾ÅÉC¿¥|mO»­®€ {ü—Qô[Ê3{Ú-¦‚µeå…\»ozøJ„G@…ð‚£Ìò:áv‡”’ºò¡­íSAû¢¸YòÁGGC€jûí·¢®Þ¹sçÎ;‰¨···´´t!ÍñM Qtï=u¿hûe¢½×áÁG¯ßqÚ:,8SSS+W®ôuLïuxø§÷7 ~æÅ®]»XÔ$& š&¦ÅÃÂ÷jKˆ5Œ:B‡D"¼»i„žÒ÷·\ÛëuõvÙÿëõzü<°ä!évœÌK*¯`³Ó 8TP‹ÓaÀ¡YuˆWE³¶Úª®Éà‘_/02áÏÚ5Ò$L¯´N iºrs+­“¾ì_AÙ¼Br}ÉŽ:Øëuõö‰N“N§×ëMDöz]Å“ì“þ!{½N‡A@è0_Š ÙQËVoî.pƒg_GÙZŽë©õçêdY[íp¶0}ÔbÊk º=å™äjoðÄ¢)ÁT³V˜©Þét<µvwØÉ`v¶mæ6·9ÍïÄÁ݇£{ÇÁ €Ðaè«;ÊÖ²¶ºÀ›ü²s\acµ^˜Îq…-%ÉÂ<®ñ£aÙ¼hlüékjÔ]1¶u”¦Qêê ±ñ‰A«±Løi™Ñ:ˆØ|p¯Cü$—Ô• mm¯­JÛcòMä'­U[ÛGY6‚”¤¡Ù¼PÅ€Q‡Å„aRJZ‹ÈÕÞÐ1&Ä üdWC»‹2Ë: 9Mê´Lâ¸Â†¾¾þþ~Õƒ XôU½§<Óåry&D’:œÄ²y©¸MR=CŽÑjéœ ¢‰N‹Õ˜ƒÇ.¡ÃüE)Æ–Æ"$ÑXIJ¶Ú¼Ž±LbY[m^³Ê¾?ÅØÚPÈZL¾‡,¢XHƒ¹-cw±^¯/ÞÑfFä~¸×!# 5YAS²jü¿÷÷‡¾Dû:ÿ{µß±ú¾í¬šÀE¯Sx·ï½/x(üé4ãàF¡Ä .X, SSSÈ] @•í·ßºråÊúw *¡¨255…J€¨À½€Ð:,PÖÊ dÙDÄOZ++­“b/qŠêK!¢÷:Äœac¦ettÈ~Ìhô$¨:f¢u)È:‰-üé¼ýÎ×:Ä\²aãÚv—kÈ>YR’Â0džBNZ+ëllaC__C!k««´NnNk0ÈdÕô÷÷ ´¶¶—®c¯ œI1¶ ô÷÷·!‹gÕ ô÷÷ã‚,Ý!~d¸‡¿’©?]Ë÷séYÔwmëñ•¹¶'³¬Ã1Zj/„¡è†¾½uå{çð­¨\6æ¡Ç6Vë…'8®°±¥$YxjÀ5~4`SI²ðå›z†CB™§äW.¿ ©$ÙóüB؃¨{Æç'íC.O3Õgrœkȸ9|’#ªP8]Ë÷ÑéY4®G(sàUl©½àùÉñ1⸵i«ú/Ñ­„/«õJGb=aòÔ@rìÔøŒƒpwB›€¸ˆÂé:âž%Òõ„•Yr/n•SQ3‘-;¿¡CfÚªÐI«Ò2‰s ø¨»æñ‚þgÊ;Lã[k{Ôm‹\ò;*ü-ž ÒöÛo•ú—p/¹ÍfvTgeEát•žeë +ó\÷"Vâ:Œ#ýÑaËRzZ ÃVŸðÔ€eÔÖѵ%˨á%ÃØø1ÊJ ¾Æ%çÙÖ°£ZOÃ6–^î¤ØžBÞâ j˜w?¼råÊ©©)©ô[Ê×ö´÷ÔV¥íiž{ij¢êê,ͧë ü|"2 IDAT3ÿÜz–{(aæö€õHu:Dþ˜‰†kmZÞ où–åù‘¦¼»}¹”ÇQâÙ†ò êlž{ÂDüÔ€ú&¥¤ÎóÌBnn“ƒôáÏ88(9pžµ Û²ÕÔٸ†V#^Å0Cž³zбeoc¹,¦á1„álOç§étÒ;Œð|Ä=‹h¯¡²kK1¶6yö%°á{¡ßR¾–ãluÃÙß DúêÆÂH—õìòÎ;wîÜID½½½¥¥¥2Á]ÄÓ8-îgî½§îm¿jp¸æÁì4,½µ×ësœæXîy6£‚Å­äŠmOf†Èþµ°š>õ0oæÞ)cÔa~Ïò:½^¯óGëöz]½}¢Ó¤Óy'NtšÄæ±×ëõz½^_o÷¯G,æþ:å]JgꜘÅ3Qä‹—øâJõ,0³Ì.k­ ÙÃK¾ŸìõºŠ'Ù'+D71ÑiÒy æ­5»rd7¶½°=’ÜÇ€R…ïèÚ‚&Ší»|É¥µT‹T ÔáVl{[—k„á»ZÎàÂxæ7uvJ|­F‘ö«?¾j‘ÔÇaîéS„äñ•¨m…€x1Ôì,SSSæÝû~÷¿ˆÌ™ó8TÜÑí(Mè4×Û½ßp¬æÝNgªç¬`>Tæt<Ÿnÿ<Æ6§Ã0Ñi2ß¿…Éu:ÍÁkc­ls:̾s…Ól ²×WP‹Ó¡âKІNtš,kºŽTOgEƹ]ÖP!Á³‹”œ!ƒÙÙFâ_íõfªV5Ñi*î°— ó(ìZøQÞDÈöŠ= ªÜG©DöN´1„lâÆà‚EZré:«@©Ã­Ôö¥TŠ”3 0B©4Ñi*¦Œ‘žVô3¥² )´@Ñ•«¨Ÿ?2jv‡T}p>¢ÅP³_°l¿ýÖ•+WÞîpßÉIŒ:Ì[ä0h5–•¦Qji™Ñ:èÚm¥ÞSöľ^Zs™0™0ÏU;ºÍ"J]ñê[éõÞß¶hlóVük»lÍUþõÊR¿Ñ‰}½´iCªwð´Í¨°Ëê+$ú’ äúVTrù]“: ªqŽAË>ú7¾w¢Åß„â"jHÕ¹hJnŶ§æPÊï`x½M>˜±:•<5Í:QÓEW®¦~"ûÈD¶;¢µ-ÿ-†šý‚Å3êhzz£‰ìÈ¡W_}òýCDDÄÑfoPï99†ýÔÒŽ¶zNϲ›[²ßXÔoôÈ¡W3rRc]9êK2ü[ñ$Ëj©O©£罋 ±(yxÎýpGv(¥v™VÇ©NT#5õqF°;¢µÁ)%>sHPÙek®2¶tÄú^-ƒYÕõޤµä¦ jÆjíõºÁ…ËÖ\Ž-†ü&¢Þ~"«À¹Ê9Öa¬ëDÍ1JÀSÄÂýÈC¢À‹yëörŒVKçMtZ$eS7l:8µû¬þÛ¾ä‡éàá O?at×ýwgùV"¿Ëj*D=a¿']åÝ8|Põ—K‰£ º‰ Wg„Œ ÏeE‹¾‰À‚©)¹¦c-ZR‡;²¶§fUµ½‰N‹uNŸ)Åã«råjê'²ŒšÝ™ãgY¦jö 0êsôO ¿qÜæ6§Ù`nÔëb9ns›ÄÃT©¥9õ:}ë_*òÛº×Xtº*–å®ÜÖÝá{Í3þ¼¹M¸sÊ`vR½N§£«vt·‹#ùfi0w6yн¹¥ÍhôN—Ûe5 ¼ä!kª_Z]sÛ þýCDÜ•Ûv­:ju*ñŠ…ÀMH>Èç«ß±S½"{'ÚÂ6´ïJ%×z¬E*°Íi–:ÜJmOÍ¡©Cå"êtz–½rÛ6#Šô3¥æøj>FÒõáGFiwD¯\mËÖjh1Ôì,Vñx›äÒ‘Ào“\ÐÏ©'¶‰NSñ¡2Ôm¢µ½‰NSÇê(\=ÀñWx›dÚµkFæÖ/¢_I¬0Å{'·¹ÍYŠã  –¼`»ªÈ`v:Í8¾1†Û$¡ t„gZsãJͯ˜§81óŒ'ljàZìXÔ@ü3_/ˆÌï‘­í :,¡;v fm·‹+ίu…Ѫ¥…rÖÃÙ9ÖM4¡Ö<>‚ò$Zi¡PJ…L*òÞJgÍÖ–«ZmÎb±ôÇò¹•ÕÌ ³u™LÇ¡kP›Y"C4E^2ùš¥jO®œ1KM._NI–Å«.<ŸµD+’ªyÅC#×¢”rI+nT¯p°$>³¡ûižz ÙÌ5JùÏ{¤¥„¨‚80;Û6¼èÍ“'×áp¶Q…ÿ£i­¨ ‡ÃñÔ¶ƒ–ûï7 æ8ާ¶ôÏa­Ìq8‡ÃYv¨Øn¨8¸£Ûáptï8´63Õ;Nù4Üfªw:Om£ÝvÏÚŠ=e“L¥íp89ƒ"ïUœAvë†Z’Á¨šÙ“!Úápî`P5Ö“YK5J¸À™A®œRÕ%QŠb9•›xÕyòY;õÔk•kER5¯xhæÒ¢Ô®3²F%ù™ û©®då«Û}õ[‰Viæû½>úøÒ«ó‰}½´¦^/Ì1V ÚÍQpÞÛÞ5ÂÛzSWgø_¦œ¹Ø³ }Ðj,szóáê|k“Ê›(0g±°û Õ˜c–,ö¦ú€»¡ïUœAqëѪõ½ðXªS7l:Øa'•Õ(uଦú”* ÉþWS9›hÕç³Þ=(}¥j^ñÐÐZ”ÊuF÷3+߆?Ñò…W¹ûê·­Ò&Š%Ù}$„ýÎ×çÿ•P ð’æ¨¹«âNsÅ!•v,(æØMÀ$¼¢)¶CÊ,Ÿ£YÍS?C|ªKM1›hrmõu¥XóŠ3DPEjÖ»* ’+\ÍîG뼑àçŸEÞw,,÷œÄÛ$ã/þ™y5•mñŒîHdˆ>xx‚ ©ì¯âK#;÷bÌ1¹¶ââ±HÞ»„àq8²1-<@ôá^‡¸QL…¬H4sqtsUËä8V̱+3ƒúÌ¿R™ŽE× ŸY*Åö«»}÷‰LìëÍP_ŠNSzîØ¥&Ÿ{®v…äÚù¬k^ý ´(MÕƒÖL‡úkRô`ͽJçTᄬրÐaI2˜Û2|=VjiGΠçÆi†‡Á<™‹õz½Î²¦Ûl\µ^¯/ÞÑ6çïEs÷‹øÍù¾éõúÁœ6£ô²Á3ÌβCÅ:ÎLõ"KIÕRÐt‘5HÍ´¶‡nÑëõz™6­ºúýB5¶Q•PùŇʴT£â›A²œRõ)_’¨”SMs ©:;‘ÁÜF:½^o¦MFí‹«84siQ¢ë”|Ø2pÍÍ@ò`͹J#«p…OÀ|OºÍó#Íyµ6ÖX6ôÕd1Š«졢ƽÕYŒòü‰‘:j3fI·‘5F´òYã#Jd’nÿ¢í—¨Ÿyqß}÷É:p\aC___GÙZŽë©máyÑX¡)777·Iô¿°Xxô­€%HÅm’ÉiéD.!JÈ»Û7QØÐW­wƒ,Ùjó¨qoµÞ»ÐxWUe”ãÖ–ïi)IvhŠ1Hþ óÞ£›Ï€…JŽŽaËRQöuìu5ýýý¾qé«÷6rdž,k¢º¾Ž²Lrµ?æ@-,‰Q–µÕ؈ˆ[[¶Ç? à‡Âq…¦’d¢´t"Wϰ£ººf` • °¸C‡±"â'­U[ÛGY–X–8ÔÀ’£ááLžŸìjhwQfYGC!‡À!n!õbâ§œ—Æ"òKÿzˆ]Zç-£*šã!@†UX¤¡ÑÑq¥§%N\•–IDcãÇdb<…1‰7eXˆ§N_µ(>pd:ŽC«“YVýj#k“‘­ièÀ0YÕE,k«ÍëË$–µÕæ5;(¹¤®<“\S‚)¦à$À&SçÍi|E3óÎ)[®êŒÆ}«¥²c‹$òË"°ž°$ÚAY¤÷K%YVNIL"¹’':MAkóSîpH$³–Èz˜ÄöN²f¤êP´?“íÛ"l-¢õ Sõ*¤¨f9ß?§V'³¬h¥iLìý¤áâù¯u’éÃÕ7lÙ¥h®ÉÊaiJ’ŠDold²júûÃ&§[ü/:»Î¿ %×-íÛ$KË2töRï— {ÇîŒ2'Ói:Tæt<ç ïWk…yG·Ó™:Ñi*XF8˜©ÞéL>íþÿZ+*ŒmN‡a¢Ód¾ÿ~ “ëtš':MÅþ•J{,kºŽTáLSAFI}ìõÔ"¼k_œHù=y¢KS ºžmôÂïzˆˆìC‘–ß“+9°’SK;Ú<¿OtZÈ›qRdÎÐbx3’L9 ð"‡ÉºwþÚ «ù6 e'¢Ö¾…Ô²ÅÁ6§Ãì9fõvá]R ûtÜ#iuª[¬Ä7¥ÐêfO£ò ®± ÖIÃVXJõ¾D8êsy5í8hñô–ƒ;¾g˜Ø×Kž·Ö½«>01nئïlôßÀl¹o¥×{W(Óľ^Ú´! ¥¯ª=¹lÍUVÙ—ù‡—ß>h5–•zóD{–V½ž9•_¢’ æ6ª¨ïì4÷n2dç *†?qˆÂȳøaékÅjF¾ h¤µ„ï£T!Õo1$˹°¥}Ÿk«S¿lë6*±à ζ¡½a+.¥¾¹(:@´¥nØDæ}¥¥©ûziSýe¦ñM+Y¶ÜÈ’> _mtz–ÝÜâ˜Ãד¹¯GMù%+Ù`Úa)ÞÑæLUš3"±Ëþ<÷bÄ4·rt³œG¥µD«ÅFpˆç!¯zXÃV³T‚4W@è ÅÔÔÔƒ>¾øcÏE‹œÁÝeÎT"ÒžÆ7A2óÌê.ˆÄk=òc$â•lïèݴø{Ðn6äç ^Û:L‘c.Y×£žå‰°`Ô:B@èñ·Óûz2-yÓ )fù™ß*ŠçÖc”2;qÚXtK¢imšò©.µö<¦‰„jO=Ƈ‡³-cw±|ôõ Ț΋ ÿ2RH“Šœì RKñq4Õ tXÒÔä2V̉¬&i²xŠd‰üÔŠù”U;Òä"²"iÊÍÏÏÏÏÏÏÉ©½;¯ÖƲ,k«Íkœ'hÈ¡c¬¬¡l-ÇõttMò¼Ôvpš•ÖòiZ2NgÈ1Z…q½‰NKèe9ôÖb« %´×WXÕ–!ºÅNݰé`øø¦DÙHHL,œË¬þoʲIJ$Ñ›©™'ôüÈÓ ©º×Á×*^úΪè«n–´ÕV¥íi)I™ó5‹È:ôHB‡™ˆ¶$ ¾l)Ï´Yl][²Œ)D«Ò2‰si«;1¢ëY•–IäRÙø&»:ÆÊ:úŒ)þYÛ]Cöcêc‡Ui™ô>Çs¿Þ‚ŒÃ€VjTMëôÉóú-ž¥:ÒÊ}åa˜”µ¥[ñqH¢] ÃdU7±¬­6¯c,S¸ñ°9¤wp>|ù'é„>ÈVWPPgã Z0)Æ–½E®vSAAA©ÝUÔ¸·Å˜Â0LVu5äååççÔÙ¸µeQ¹Zq‡ÎìܹsçÎDÔÛÛ[ZZ:55%¿™}|SÑ-òóôö<µ4_D}ï=u¿hûå‰ãïÃ.óÕXýŽ;ð1Ðʼûáúwø:&žsÑщ#<üðOïo@ýÌQdú®]»"¹×¡·ç)Ôx³×{^þKì¶ÁãWúª'9ns›†’ĺäq84ñ?þ· 4Öyb~ˆ@Mµ º°È:tÍ¡òZ%<ÜS|R“Ë_Y.¸eÜvÇ(þ¶î…ׯ/ô£FvnQ, "yq‡Ž¤Ûq#–v6<¡³êDÕÒk–y-’r*^‰DÞ¡k‰MÊf­{J’¹¹ƒ¾û2ùJÍìY­©³S$鶆4ߢ©“åK²s!ù»ÃV.’xZ:ñ·h¶n…ÝQ™×[S«\¡¯Üá‡Re®m59 µïEèçN&¶|zhÑOŠ?ú¢ŸÅeåK(sºOÏÚ€ÅÏŠ…ÑVZHPI¨‚xá™jÿ«MT|® Í‹­b¦ï 3CŒR6«È­>WµïK’r&_!Ͱ#•&:MÅ”‘#òOõi¾LË—B>·hâi©E³uGœµ\Mrm1Bú°z»Ól˜è´7­dx£UŸk;JÌÕM…S™mçb™ëC¦ˆDÑ]S³¬l Už.¤²œËŸ q „Ä‚Q‡8EbigÃ:«LTt*ŒBFÅLßAå‰MÊfUÙ¢cºwâðAOÒÔÒ2cxð¡-­¶b‚ié(GyC¢“¥ÍþqÖr•¹¤Þöíûi0·QE}g§¹w“7mHx£Õšk;²V!µò©ÕÕSÑv.ž¹>xŠèqÝ5•ËÊ•PÝéB¾æ¥ÎŠ…‰¸F–"Ñ´³á U&ªŽ:õ‰¼c—²YM¶èXTÅ‘C¯Òjùñ€¨¤ùV3ðá†4-ÓÝ¿×Á`Úa)ÞÑ&3hñÁJ«PL­áÇEý®Å­‰ª9(&þ¥„ •T¦Úð„ÎZU/ÐtÞê«Hý 1.ŠVšï˜mHÓ‚qÛྡྷ£wÓãîA»Ù`h´Ühµ ™ÔêsoØŠSD‹è®©\v¾NŠ…™ŸQ‡ ñqžeÅÃóbË‹8Á´ç ³”ÍÊ{*1ƒ¦= ŸÙ¿G«È·«¹§ùVSB© ͘¬fAM»3Ç"ò%³‚ÊJKÍmTá-}x£Õšk[1t´÷B|ý"ŸŽ°v.²³aSD‹è®©\Vª„¢§ Mé¹åÏŠ…‰Ê :,ØA$ílxBgµ‰ªƒ¿.…æÅ–ýj¥œµYi±JÙ¬¸§b3hÚ#ñ™ æ6ªÐéõz3m¹×A)1E§ÎE7B2crÈ‚ûµm%8ç²riUe6ŽÑ~áK¦Ùà­gÏÍúáVK®mÅÐZÛ¹|juñjmò)ïÃÍû ,vôå“ÔË.+S°Å5¤çV<¨h`sý@AB°ÃÓ IDATÐü6I·I.l¦ŽÕ z£÷|öû£æñ6ÉDáÛ$×YÒ{Ó·¹ÍYŠ‡Ð–8ƒÙé4/Œr–Þ¡Áˆjîu ´:ìh}e)WÖîÊkÿ|ðÑÇÑ€¡ƒ\ÜðèOþyÉÖÔíÿñlHÜž8äÞ{^B“„þ¸á…C£Ê¤â†…`äÌzQã¼ïZ6˜.Üû{«3gHr ïËbz–!¦Iç#[U ¶TÎ\éÜǑ䒖Ïe,_9s_*‚täš²Z+V¦†ÈAö`É-%±ƒ—Yevx¥vµc-Ÿ>²zS_]òEUŸª^SSQyæ°S¾FîÏ’¡t.ŠüÁâ½WB]rÙ*¢ÃD<à··þØÎz‚Ã݃ß]Ïðü ¿»õÇÏÑ7*ÍÔZOÜðò·åæiÿÙÓD”fúí¯µ?PÙr˜®øVk{î¥ ñüÑÁºÛºÆXŽûzåãÛ® ¿»õÇv–eééÖ[©òñmW2LÈPÙ2îy g¶%sÜ¥ræF7±u"ä2Ž ù4Á±KDÿ2«ÌŸ\ð¤%|L«+ZeSÓTT‚¨ì”bÆù„:F°@F´yyŸe)oÃ:öúï>ñ—¶?…C°ìÓ­/løåÛç¦w|·üçôýÖªÕôÆ?·¾ËóDôƯn{â­+Jî®XMÿÝú« sýwÀÀqÝÈ<þ½õà :ð»Ê–ÃôòÇÛþ8ôË'¶/¥¸A~œÀ(Œ‹jç—ýê3o£—ÑÊ/ìMìp8-ÆÄ:XQ/³T9ŽQo'ó+¡±ÊCñN樌un@è ³ öéö-9•?{šK¯øé¯ ‡Äq_¯ œAfžK.[%üÞ`¼X˜ç­Ãïñü /í%¢ôK¿rÙ*"úû‘wÃ.RÈÌR–}ºµÎú.?_÷g¨IE-J>®š•KåÌÕ”<²<¹ê³!Ï1¯úüÂò«˜ÕZª2Õïld-A&ßzÄeVÙTÎëcA½‰nHSâò¹~ä%šŠÖºU¬4©zÕŸ£rb_o†Pi*k2Ö©ÌaÁˆÂ‹ðÑ~þ'<×X–8ñ¥ÔÌ#¬ú“~Aºí ‘qWÅc¨(€9'C,Üç~V2t@Ä€ À9B:{@¹÷:d¬œE@B5_.<‹Ã¨h€Ð:B@è¡B@è¡ t„¡ t„€Ð: t„€Ð:BX¤’dþ÷ࣣ‚ ¡‡š/û¯'ÉÏQ¿ãT“zwU܉JˆtOó従“IŠ3MMM¡¦ ¡ oš/ÓÓÓ¸×4@è¡ t„€Ð¡ t„€Ð:À"¥þjjj ‰M Ñ oš/ÊI·W®\‰Ä¦ê!é6@| oš/÷œÄ СD9t°×ëêí¦À¢•¤bƒÙi@ME0ê`¯×éõz½^€%(IÓÜ&Ëšn‡#Uˆ!*Șƒ*XJ4Ý&9±¯—6mHþ0˜ÛŒ¨?„ÒŽz5cu** ¡@´CCŽÑ:è½;Ò^_aEý t‹ÌÝk,ž',sp¯À’£õ½©¥ÎRßð¾€%÷:Bˆ … æÝ£Ž Ñ {š/ûö¿¨: !º&wU܉JˆtOó従“¸` t€(‡A™3Eÿ¯×ëu:¤Ò€¥Æ×E*õ•r3Dö¯8”YœÖ÷:ˆ• ‚Zœ¼áæ£çÌqš ‘Ï-ò}¥ü ‘ý+ŠeÖVKšFìõºzûD§I§Óëõ¦Î !óö“ì“þ°Å^¯ÓabJ§«ß/ÒMtšû ¿d‹tm"=—·Ëóözþ……‰ ¯Ð^/Ì ó/°ußE ¾ R]pÐü¦ÎN‰!„†öïbÕ(èõú‡~8IãÁ²V˜wt;©¦â{©Ùìl£€PÅ^_qpG·£4u¢ÓT\oGœKÓi&¢ƒû ‰Nó¡2§ÃàégfCH'¥Ðµ…w•fª¦{{=ÑD§É²¦ÛáHõÄ&dÌ _á`›ÓaöõøÁÛ—­·×{vAElðÑ‘J¦bÊÈ Bë$d†TÖ’§Ø¾ï>­·IÛ:JS‰(uu†Øz­Æ2áÿ¥e©²bmb_/­¹ŒˆBÒ5ªîÚB̾éþ^ob_/mÚêC4“±Í× ‹”ä²5WIÎ>h5æÔwÁ‡f¬N%O·Í: ç/vÚ, G½úê“·è"""Ž6çDaÂ`>°Â#‡^ÍÈIË:SK;Úêu:=ËnnqÌmtþÈ¡WiuœêÄSì‡ßy¡,—­¹ÊØÒÅ+å¦ j.ØëuƒÑ+ªÁìtšE.í_¶æªD®ƒÙéœù·oE÷½†£ÕÒ9AD¹A€è8xØsË`ê†MÅFä}3ø~Ÿè4UXU}§¿Ê3Ú?qø`@O7è¿ÙRt=Vÿ-‡ò— ¾ٯÎÐtQÁ_˜‰N‹XI¤êD¾–Dù•Ps[Æîb½^_¼;£ ÷H@lxŸºO?ZÚ‘3¨ ~x!pƒÙYv¨X§Ó™©^ô‘>í¡[ôz½^g¦MFO@`0w¯±x¶2˜#q¯C÷‹ð¼¡eMwhoèyQËCá=¥oå*T4˜Û¨B§×ëÍ´ItÄêDª÷–Ùƒ§Øÿa?íܹóĉ'NœøýïÏó¼ðûþÏÐócÕ=ð+´¨*/ãyþøûïÿ½^¨F€ÈçOßéT8»þíe§p²MTûï_ÿþøoöÈï¿•Íùý÷dËï½÷â^€*à.Nns›³4 +,>T¦ôf„QÓ÷?†oËiŽ{áB$D€„îi¾ìÛÿ¢Bè°ýö[QMêÝ{ÏK¨€8@÷4_ÜÇ!é6h€Ð:B@è¡B@è¡ t„¡ t„€Ð:$)Îñà££š ¡ oš/û¯Ë…Ûo¿uåÊ•õ;î@M©tWŨ€8@ß4_î;9©0ê055…j€Dƒîi¾LOOã^С t„0ï’P°à$ìÙÛo¿uA”3b g$¬~ÿ;‰V¤_ý×ïD9çb_ÿ#t€iù2圡ʉÐ}èÄ œÛ·yŒ: KFè°àB‡$åDè ÖÌ,§i~ž·ïº¾êI*ùù wßÀ0!&Z9ÿÄúŽ»%Ö…DèK tpkí’97?ëæf&äÏD+'Ç}ó¡ýµ×3 ÏÛwßø£]ðGOüúÖU =àEÔ°PC?<ç‹‚ÿ<=»¿Ñp]¶¡áø×›oº!Ûð¯wk_?‹rÎr×W?t ˾ñóÿg÷ÍóÜÏ®»ù¦n¾é†ìŸíŸqs§gÇÿpûu¾b Þñ‡qaæÓãwÜÞù?3ÏEk:À fy­?<ÍŠýɱl÷^÷}Ï4³ì­{ž`ý1*çŒî«_ã8ê~vÿ 73Ëÿý?¸»‡ýZãð3ÅlÏ¿Ýù‡‰Y÷*ýÆ+Yö½ûŽÎÌò3ãÃ{_§7~þ[aþñ}}ÜÆ›¾à&ÿ>î¹ërz-â}DèKdÔÁs…Â-ö§›ˆã¾qÛ-—Îè6põ<ûü¬{žFBË8åôìøþ×9î×ë8¡¨o Ϻ/Jý ¿¿ÐÙ|eY¶{ß žùW§^´—\¶š(â}Ľ°PCMóó¼çB€Ûs¯CÀŸ$ñ{4î˜c9ýS.ÿâÜÜ 9ì .ªëÐ7wáú yÜŸú\‡Ž¸Ÿ·÷\ñýú¼}æ_ôþæ·¬O;ì*6¬÷_™û>"t€iÖÍkì’É{?ËÿIa¿_¾úb7?ËÌ9‰ˆñ/{Y–þ)í"ŽfùU«.'z3´¨n溬¯ÑÞ?÷<×Ìï½<¯u½ñÒ¯ý¢þ™½/t¥÷}í«wp4+µ¿Ú÷,`†œ¦7§×o"–}ú±''fÝÜìȳƒ,K›6\Åñ³nŽ'";rÔ;}uêE¯uQ)§·0¼ÛÍͺ¹™Ùç-÷ü7ÇÖ–_;ëæÜ\òW6\Á²O??â)ê—6\/uÝ ED4øç§…)ën(bÙ7;yúK©Éá« ü]ë>bÔ$O÷§ÅUåC»S+vüzëm¿&"âòö»ò,7Ç{¯Ðþ7þö-–ã |§>‚õG¥œBaXÖöÀ7mÂnmåC”\Ê“›ç‰è¢o´mßøàOs‡ˆ¸üŸýô)Â&øKV¯á¸·éŠ®Mvs<ÿ•ÿuÛ—{~;êýӻǻ)àwí£`©„DtqQëoŠBWÂóÄ­¹¥±åjáÚ¿·Ÿžrf}ÿ©Áï‡AåYwçàoî [ÿ¥%ÿþTIÀÄ”‚]ƒþ?½«å‰ ø=‚ÝDè Ò¬ÆÛe¿èsºÜnn6Ú¯‡Šb9BXB£ô[ïßÕÁ†Ø”¡@ÄßæH—<‹Ð ,”oóuHŒ.yÜCàÆ½‰,:h°÷™n”¡€*Ûo¿åœîã‡ð"jС t„0ïän“<8…›( ¡‡š/Ç?c1êˆGm—¬8Øm=ˆÚ€ÄÔmíD%Ì‹Q׫â¡Ãâ{5>î½ç%T@ Ÿš/x¯hƒÐ:B@è¡B@è¡ t„¡ t„€Ð: t„€Ð:BX¤’D§>øèã¨HXè§æË~çëIRÿ«ßq*H«»*îD%Ä:©83ï~X¨óûNN&ÉÌ755…Ê€„j¾ª}zz÷:€¡ t„€Ð: t„€Ð:BX¤$Ó_MMM!¥)$&ôPñ'rI·‰hûí·¢¦4¹÷ž—P q€j¾ªÝ}ü.X€¡ t„€Ð: t„I¨‚8À[½¡¨µýö[W®\Y¿ãTÀÿoï8ï<€ÿžMú§W“ u´òQš¹`Ù¹ ¯²Œ©1-B-8 ™æ…B¡„ðE$é]áÚ‚Ýi˜t:)ÜÑi–¯4”ÙÇÛ5F²Ž¾ü#ÙäJ2 •ò×Ýy´ž›a¬Ýç¹?V¶^ÀrdÉßÏèï£ÝÕ>¿çaŸß>»€ÔÆd``A€ò€g© u¤PJð˜$äfò|Ë´e³krV|ì1ñxJ5&.W97nJ3 u€âÛú¦²¯ã{'NNΊç“”1¸$dÌxʦq36R(²/=$¡â€Æ@ꀓ,*Ž^ H`Kkß ¼^ÇXÊb®›—\Å?”îŽIϼØë̳ 'BˆHÀã£zWÂF”D—C)©ÆMobÎkvÿæ_Ö+¬'Ù_‚'Ϥ£‡t_«s~ƒóÀéÓ/.ZP×à|ñtØ0·2ßZ´ náwݽþ¢uæ«Õg é¾¶úWÎK’$}¸§þà5݈|HŸÞ<Ñ‚ºç³$×Wá+>­ê+DD">\åk¾æá¥­¹˜ ÅPøÔ–ͧnéF2VÉ];˜EÃAßÈ  ïgÔúCáS[†C—_X Ø…S}Ýýši9Ö×ÕîñxÚÛ{#B${#‰5µ¾®3^ǧ2Ƙêó"B©Ws߯ôKÒÊÃ¯Íæ"np?¶æ=÷l.Ò:|†–ÊÖ"ãÔu:@±S]äú2Ïîz¦EA$Iç.û.´®–¤¾wßï5×ñ·íꔤ­=]o<͇×× ÇΫ~ïåkÞßù7œŸßÓæ×ç¿|åíœs¾ú'W^›eP\þ¶æwC5[[wΤߺÛzó8àÂWܵS’håâY™Uv_YÜ}Õ=Ë ”£Õ ëÜ%5’Ôwñãh\á»ù’S J‰ÛíÓ/½~^ZÑÚs¡uµt~÷¶Ó‘Œ±5ÿŠû¯»ÖüèR÷ò5ós “¼T96¦…¼hÊÑ€7³Ô8k,ö¢ŒÉÕõ6!¾î>MˆH¯W«YßälpÕÛ„ÂVÈY‡£1÷ÿþq¾Ú9û>>cKek‘qêºH äfó·F¦EƒˆóU×|9>{a#çtþj¯n éáÛŸçÕÖJŸf›>zó¸‘Z8r‡CºïãóDôxålÛt"úôv¸@WØùU\’Îýò†{Ïñ'vß5/YåÚ5/ÛÑNQ'¢·néaߥÐtåË)q3Ë9_å˜Í͸ݸÔcVÓÈóHÞÜÞÎëZ¶À—³VÇò™©þät ‰„‰È"[e Å4MÆGS­…b¡®OHnrX'l¯ÎøÖ½[*¥EƯëžu€|N²9­/DbþÖH<ë0b‘²ý­Þê'¢¯VN½;íŸØüsûù£7%‰$‰xÚ†Ãû—¤ßíküIõ¦|J!®Mó«8ç+ØÕ2Ë<.ââþGû謅Oó»ÏÿÇõ—Ýê_íœÅãFJÜÌøŒ¨¾¹a–xêlþÖ_íüìù£7?9º¥ñèÓ?ºº}^‘ïÁWT;kToÐ×-7ÕŒ,gLõw¨ÄÅ4H&b²ÝY«v…4‹M‘ÇíÑìÕYßÊÒRS2µÈøu]¤Pdº‘Û¤¨4|ëWèlô"¥ý=sú_e,'¡"NÑÎÖ£ÿEö޽¨¾Ôr1}'Œ„°Zg¿ñÍ7;“6é…x®ð+ž%ŽÖ ùóVÐÅ®ó×~&.®X¼…“Nbtܬ֙D7Æ7Mk>p¡ùÏGì’ºß|k^òãŠÄ¼¡y|AÈB…ˆH–-$b©·!„Ð"jŒˆÅ‚þ>¥Ñ.³‰Ð«)ÙF×÷<9'{»gk©L-òW×(,ܰ€Ï|Ë<Õù-Ù´¿“óo¼¶m®Y^»fÇ Î¯ì_¨k[Ì9q.¸˜÷¾•’ÔÙºêW·Ÿ Iêl]uøÏ¼²ñÕSß[—ýÝÊC2ø”U?où:7?Î,Éõ€ Uq³vüž…öÑ9KgpÎùÌÊi™74·º²™Ïý«KÆÍ E‡²#7ݼ·òkW/ÝôÌÞKdÿö«k§*HL4{íõUÉEÙ¾ÜiZ¨Ëü’…Êc}]íÅU§0sMó«ƒTQíL<a~£(½šOûÖ¾Û–Pß[—m\½tãꥺÝO KKek‘qêºþ—ëv»Ýn7y½Þ 6 ѡ㞖Í.D'W?üÁGþ‹ÿýŸÿ&"&=T–uI’~{ÉçžS—ž:pƒˆHè2—áä­Þå°öw{ƒAo@ÆÈ—–.˜iÏ{Ô ¹R@êpwHøÍñ¿lë•Ë{Þ>wüôº¹ë¬Œ‘½Gîê”$^m·H²•¹ò²…(–2ÈÕ“ÏGæPém÷«Œˆ„͹®NBëïöcs45U[Ór»LDBëëö“³±ºb°¿ÛÔIŽÄZ·7¤±û^ÊOŒ)Žú*Õ¯û¢ö:…ˆî[…”¬5§1©>•h W¸ 0 R]äóòðîW^Z5{Áb;Q¨ûZ8QîoÛÕ)I+Z{ºÞxÚLIô{–çô*|壕1K­=9€1¦ú"ʺuu cZ_—_e6gs³ÓÆTWŸÆ˜¬Ø,Œijdˆh0¢Æ(ì‹a.‘M© hÀŒQ•³¹Ùår™»"2K-5Î …}hit«b‚³‚÷­BÊ Œ)W½Mˆ‘YBIÆ:@ʬC®¯!=üo'þ²eýÍ6ˆHÙËsýÜ‚^R«þŽœÍÍæœÁðu³­Þa5/ #jL›bMŒ 15¢ Q![ˆÈü;ÚÔcLDë[䊻)Hw¿&Dr’&&"‹l5·×’o•ŠûVa,u,ƒ8À}á†À¤HrE®Ÿ<þI?}gÑñá’O._SŸižFê­~"újåT7O¦ÙÊ‹ý¬ƒÜßÝÕÑas6×)éG¢i±Ñ1M#ª°*6Ç4¢‘°¥¦Þ¦ú‚áP¿Ý*k±*ÅJŒ)Ž¦Ú˜7¨i¡®ŽÐÈ3¦ú;TbÌÜ•\*]Ä"Ë£R®»U¨Èœ“Ýk…Ž u“nävÙ'D´óý›ß9vå›±Äâî 'n\ D¾õJ2ÓÝ:áï¢?êP]c ú¾€ârXSß”ï>1beLQªHUÕH€Â[“µZ® úÂj¤ß®RÌïŒ0Ù¾|Ý|Nbxç²l!+µ»ûшÊYd™1!2Taô”Á}Wȼ”ܰ˜ ©Ïíuýä‰éÏ/Ÿ&ÌEƒW>µÐ.I7>î|îÜ&’¤z¯ó?m¹,IæìB¶ò\?ºð•Ôb£¯ªG\›5¨‘èð#6EfŒˆ¬J©ªj–X•*Æ´PHMÙÕQob8áHì-Ô?8<¦FzÛÛÛÛ{U®¦ü™søBD¾pòNz²Elô râÎÄ e'€Y(Ïa "êý×Ͼýêî‘[=:géŒc}7ï®\[»fÇ ï»Wö/ãÿضØë¾BĹ0e+/–Äœ9‘ K­³Zf,}¼–íËZ»ßß¡ ›óî#², #‹M© "²Úkäp0–XùëÉßÝ[¨Ë"!lÎfëÄìÉÈ‘°Ô65&Ž?½ õiS5é+(L®vÖªÞ`¨«#h–dXÓe…¹Ýn·ÛMD^¯wÆ  @99tܳaýºR9ÚSgÚ[6»F–x<—Ë…vLCG>‘µµµaÖ ü˘¬:”¿œnX u˜ìt¤€ÔƳ€ÔrIð¬ u€±Ã @ê9¸xá\I¿ÇãA#"20q° 444ÑÍ›7kkkïܹƒ @F===ÿFÆø®‚(IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/16_log_errors_counter.png0000644000175000017500000030321212032647170027216 0ustar ebourgebourg‰PNG  IHDR/y(ï˜9sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEܯºÉ IDATxÚìw|eþÇ¿ÏÌìl/Ùlz%$¤Ð ‘6NET8EóP¬(üEN=Dì TÄ£R¤C tÒ{ßM6Ûf§þþXr e<ï»W\ž§Ï|æû|Ÿï Aƒ <0 ƒÁ`0mÎöíÛ©Aƒ½òÊ+¸-0 ƒÁ`ÚI’(I’DQÄmÁ`0 ƒÕƒÁ`0ÌͧÆäÿ´e®Ÿ~ú©V«7nî ƒÁ`0?ØÆF­P(Ö®]+ÿsÅŠ_|ñÅ’%KúôéÓàñk×® |ðÁqëc0 ƒ¹ÉñçJ¥ï$²¥MÅ+Ÿ/b0 ƒÁ\Pc'Ožüúë¯322´Zí”)SFŒÑB5&Ÿ6??ÿ½÷ÞËÌÌ öÙg;wî|ÑñO?ý´Éd0`ÀêÕ«BO?ýô€pÇ`0 ƒ¹éÔØ²eËÜn÷Â… «««-KS Wn·û«¯¾’?Ÿ8qB[n·û¹çžÓëõ/¿üògŸ}öÚk¯}õÕWAø´”””äçç×ÔÔ¤¦¦nÞ¼yéÒ¥·Þz+î ƒÁ`07³Z­uuu%%%Æ #¢©~ý^¯÷Ï?ÿ”?Ûl6ùÔ{÷îµZ­£GNJJêÛ·ï×_——çË[þ V«-Z¤R©†Ù¶m[~~~LL î ƒÁ`07‘“$iúôéK—.}çwÖ­[7sæÌøøø&Èd2}ôÑGòçÏ>ûìÛo¿•$©¼¼¾üò˯¿þh𮩩ñYÝ| MÓ¢(FGG@NNNTTî ƒÁ`07‘E±oß¾Ÿ|òÉÚµk¿ùæ›eË–½÷Þ{M: \â•/I’Åb€{ï½wÊ”)¾tQeý'_ÿsQQ$''c ƒÁ`07—s»Ý;wîìÑ£Ç}÷Ý÷Ûo¿©Tªfè¡K÷TöêÕK¯×oܸ±C‡)))¹¹¹ÑÑÑ_^^¾iÓ¦°°°C‡EFFb5†Á`0 æ&RcÀqÜW_}õþûï#„âãã{챦úÉ&®újL’$­V;oÞ¼eË–-^¼L&ÓìÙ³ÃÃÃëZ­ö·ß~ËÊÊÒét“'OnãP´ ƒÁ`0×4kÖ¬Y³f˲,Ëêt:¿çát:BZ­öÒ¯yä‘€€€>ø ¶¶Ö`0È;.1 ƒÁ`n–,Yr!ú+EQE5u•ðž{î¹ÜW¿üò‹üA£ÑÀÃ½Š¢h0‡„Å`0 s“á‡XüëÖ­»‚ƺêϧOŸ®P(°Ã`0 sS«±kèªÕ³gOhó×–c0 ƒÁ\_j ›¦0 ƒÁ`®™S©TF£·ƒÁ`0LÛ£R©¨šššÜÜ\Ü ƒÁ`0mOMM –ššŠÛƒÁ`0˜›äÞßÈ#˜Ííº¦}l¶vQ΀€êðáÃ+V¬ð%=ðÀ?üðCkgÜf¹˜L¦+ðÉ'ŸÜ05Åíéß\ÚÀ`×6¹\½†ÛÏw\Ó뿦˜k•šš:uêTù+V¬_JkЖ¹\uƒÂ SSÜž~Ï%..®õrñé†6Èåª{–q{¶ÇöÄó×´5jйfjŒa˜–·d¶„ÖÎ¥1±3nŒšâöÄ\ÿ½†ÛÏw\Ó뿦˜k£ÆðuƒÛ÷·'®)®é•i/>XíÔ× «1 nOÜkÜž¸¦¸¦¬ÆðÈÃí‰Á½†Û××׫±+—Ÿ[[Û¨Ål“) C¬Ÿ½h?øàƒ¬¬,ß?žyæ<òðLÆà^k¿í™ŸŸ/;nÛíöèèèKØÿûGzµ:eÈD¿ç²óǷããûÞç;ìð–U4!t6¥]ŒÖS—½gõÙ?ßö2žäA3ºžÃÏ‘={ö8’$Ic AQ€B@B ˆ 2F†à«Á©Æl6Û€þsäþûü11Dç ¨¨øÓÏ>««s¤¦vBÉ#éðáÌ—_žûøÄ‰11Ñ@R „<òšBpl»ýÆäü€16IßȆÂíy“¨/Ç­8¸%Ò•Ø9:”hÕâ9ŽÒÒR–eB’$©ÕêÈÈH•JÕíàÛP†"¢ÍÚS†çy‚ ä|].W=`Û¶m²NúŸo묜£<¼ãÀæâp8ºté999r.µ•ù’×ê;Þå¨õÔ‡uêÞ^æûÉ-Kj³7ßrÛxBdíû·)¼kLê˜k¢Æjkkssså{S#s¹j„”KÙ½{wVVVçÎ)Š¢ÕQ"@$€$A”DIDDQzç›ïMI_Ão@5&6¯—¹òaJ¥ µ¸@Çv~ûûªiŒÀcº5(¡×®±õ0 kqqõŠÿ{V]³GP©áÎÇ?ì>hyºˆÏK5bú6®¶„*Ïæ]®ûŸóši¬Æ°ó1ü™9cÞÿ¼Á錗n­y,-1ˆD€ÿËæp8òóó†ñ’ažçcbbÔjµ3!//ÏëõÊ b0¢¢¢P³ªÔ¼Y`µZI’€²²²€€€®]»z<„Pjjjii©ËåŠÁápF{E&M":8©¹‚ ½^ß¹sg–e {÷îÅÅÅÇ×äï08U¸ï'öŠ,B`t!Iíe¾çíûàÖáSÙ«•†”®=Gþ鉨£ RÑöjìèÑ£÷Þ{¯(çNâû[ïlõÏLÓôO?ý4tèÐ&å²mÛ¶ï¾û.00㸮wÍÒF¦p¼èör’( I%­p1, $só 'i•X݈jì ¸z} $É‹-ëiI7¯yæîÞª .y]/gÔ±c§óO³çþz½gËË“èð來t#œÙüÅ3X5SüëWWá©8¯œ °k)UEd]%2¶®U -q² BR¨hÔªY­ÖŠŠŠKÓƒƒƒ-K»Vc<'p,h”Ýï팳µö¬Gn Ö¨d«H±úª!$§ÇÆÆúK‰¢˜››ët:å¦$©ªªJ„:´M{rGDpp°(Š‘‘‘^¯WEA ‚ £££išv»Ýàt¹X–­Ê;­ ˆjj. ÃDFF@tt´¬Ãä\ Ett4Ç1Ås"£ãEJ+I’Üìå9‡‚B#õ! íg¾#‘ç Rï,;Ôµ³) &ë¯ÏŒQ‘9éïÜzßֿɲæÕT§ÓýöÛo§sÀ€¢(Õ¢(" @‚s«ˆ€’—b mÆAUUU6›eYejm÷Äp£’(,ã}7ÅP=b ˆ@  ™bÏhßod5fµ^ØàºïÀžòò²zc !’$9zø¢_EEF 6ªQòŽçÜNA¡P°õzaÞ;öZû»ï.ÉÈ8uÑaz½î…^ 0¼õÚ챡™N»ÐêáÉåûNÛ %ÒøñÓýÚi“´PYQšwÌ¢ ³Ìyhs¬[¥•ZõšåãÅMŸOám¯ŽMjÚI’t¢8络µ:)˜0î–N B¡ Z%£šššââbù†w%%%A ÿY“Μ9S¿ ä¿)))­Õk"ï('·N ÝãB®½¶aÑž´©Rûi±´´”ã8¥R)+A‚¢(·Û]RRï—Œ233=N§s8¢(* Š¢¬V+Ã0ÉÉÉmpçfY6''Ç`0H’ÄqœÇã±Ûí<ω 2L*Z+‚(JÇ:FêªKâ’ïoF.………AAAr32 SWWÇó¼¡@Ñ]™+zÚÎ'Oèß_©TÚ« œÖòèÞë-œï‚ ,Z´è?þ 7o^RR’<’_ýõòòòáÇϞ=[¶6‰¸~ÏœLÿ©GßûÜeûê ÿèÔuؾí/êÂ@àÁã(Кâ›7£›tü«¯¾Ú¿ÿ!C†0 m«©Eœ=`FXh‘VCÄëP¨‚5È¢',Z0ªÑß“«š×Œ …B¡P$ÉqBD±]êA:Òæ–€@Èæ³ÙÜç¬×E¡výDÕØÕ 4û¦YIIñìç^¼j×"„Þ}oqÓ|$ÒéEæ@Š$ßxã žç/.4E!„ŒF“›%HmcË9Ul{ê`à¥ÛÛig‹¢¸ù网U¡!A;~L¥H¶ÇP)å6e@(ÙJ׬útŸøÄƒ‹2!¦¯_”xßýý[A«Ý1eñ‚‡—þN©ÀVÚåß{çÜÞ§{¤Y§¢òÛH¥XQQQƒRL¾)€¿Ù‰'Aðé0߇ŒŒŒîÝ»·F¯IŒÇš @€Ë¼å¨VsÚX–Ãä8<=-Rb8k 2øÁJ&K1yd* ŽãH’”o< …âÒ‰ß<Ž?.÷MÓaaaòE©¶¶VE§ÓÙÈ6la{jµZ»Ý.Š¢×ëåyžã8NG J%Nàíµ5•[EéÖ{zÿ¦Ê³Š ƒ2wlF.^¯W–eå\Ôj A’(‰’txËO%E™‘Á&^LÓN¥R™slwúÞ- ­InëçÏ?ÿ|äÈ‘{ï½÷ôéÓ³fÍúí·ß`Ö¬Y111ýúõóx³¶¤=%^Xà< ÓÂ-w[]šùÖæ‡îNêÚ-šöWâE§´,˜ƒN(úýç@öÙŠÜÑ]‚¢Œ:­ ùe<\YŠ]$ÈÌ-ŽCxüøqÙ% ¾ULþËóüÑ£Gegp?«1Öí¨Z¼z£—a6Gš ¢ÖàçÌä» üÒe^¯—¢(AH’A•J%«9ò˪N’$«ÕF„×ë­««ó=X¶Í[¯×{<Žã\.W€)°¢*ÏîÉ$ICu´ĸ\vžvÛm•æ}×01ëÌi{m­ZÛä‹§Z­fFE·Ûm0ªl&‡¤é°ÙÊ»…+NfžL©¦4ã¶Ÿ<~81”ÎÏβÛíZcç»(Š»víZ¾|¹ÅbYµj•ÍfÓëõ“'O–$©°°ðäÉ“ûöí»ÿþûåÒÒÒš¶£¡[`Žê¹çëÇMÀ#†#%‡f=W8s2÷ÀÞ˜…‹Ú¦OI’ô-¦›Ô"õ|è€näðŽÔôÞ¼H!_KåeËæn9§ÆdI‘"Ô4ñpÿÀ—øöF«—‚€'ÓLÿa~k£MÞa© Û±mLiýQ]´¡’äeƒÆc5vÛÏ yèovÇû~ößÿþ·¡Ó¨Q#[Û–s#Áqì¶-G>W+Y.\ °<Ä®1\h!–e322*++iš íÚµ«ŸÕ˜(q¨«ž5W­ÑTú5Ús`Gï{oédÑøÇ"‰o‡¢ÔRyhì1\ûÊûÔŠ=CÆ£’jÙÂ¥Õj-))¹²«/È$I l¾ ðرc¢(J’¤Ñh´Zmuuµ(Š¡àà`§Óér¹xž?|øpjjªŸÕÇIŒ€pNpòÀ‰@“ûi…™£H»ÃOê!Š¢(Š’w;Ê^¢(ò<ϲ¬l6ó‹-Sn“ÉD„lÓétN§³Ù'lÒñyyy²YÎëõ²,K‘г9évÅ÷ݺ TtVÞŽ¢aÁAm[¬ñ$…Ò‡ÎT’ʈЈ˜¦æ‚ ‘ cÙyvÅÏ;÷Îü%GO("¤Œl'§ 5‡Wï]{ºüÏ?]‰Ta–Ðh?^?Nç¸qã¼^ï„ ª««ÃÃÃ×®]›––&_RÔjõúõëÓÒÒ¢¢¢&L˜ðÆo(•Êo¿ýV§Ó5)K\7}XB¡s¯ž¢uÇfzi¤Nü°Mè™ø`“ÈšZÓùóçÀîÝ»+**-Zìv»E‘²/´‰H@ðI’!‚@¨Æy’$iš&‚$I‚ õŠÑ˜4Tn•‘ M§Ü¯ŒL UfVryMmcn·›¢(šþŸÇl›ÍFDcö“*s¦¢˜o€gUYµ¶k|©šQåY½zuƒéGm†mL’(}zúôéËõzRRr +yÇw\za•$±‘¯>õûÈkâŽã½ë¾8ªTC”Ì4|UišÌ;o5àõ²Ò™3gÊËËY–u»Ý—sæhI{"Žej©ˆPà} DE³Û²‹‰ª¤±·ûáÎëáj Hðj²yT£WØMqÎ"G^¹õ–:1ÊBšÃÌÍWd^¯W^8`YV¡P „DQôù?ù¾E‘eÙŠŠŠf«±ŒŒ yœË{ ‚ ¬®®¶X,4M›L&Ÿž8pà@Ÿ>}ü9  U@ˆ ‰ )ÒB@h©äêÜx31bL·0ÿ<+•v»]6‰q'ÛT|ÊÌ_.ü>k"EQ‡£¶¶Öb±$)?O6c=´©íYPPEQ˲¢(Ò å±‚‚{üUPS'!¢TTžŠÉº3:t¸("uœÆ$º\N­Vפ\"##å^QIRq¢øÓÀî»öãL éQY]­ÕêÂ4.Pkrn6)ì¼ yy¦c)‚qÕÑ´Å_óýí·ßŽŽŽîÙ³§R©øà‘#GÞ~ûí7Þx£ 7ÑÒ½û~¹+!";$Ô:Zô„©Èñx•Í8>¢üÌ3§÷<ÓuЧá ÷µªmŒçùÉ“'I’H’„›#΃Ù$vþ¯O5#®Šl“c²ED^5k÷‚u¨Ê…D ¢ U$A€âZøUTT¬[·îøñãÙÙÙŸ|ò‰/¾]mmí‚ ²³³%IêÞ½ûܹsµZíåN¢ªø¤‡I‚¤²¯²ôoø3­QÚ&•êÅ_¼ãŽ;n»í¶FVùÊŒŸøKKÊ«›v[:¿ì"շɾ™ ^þšßñR¶±óRLFŒÑÚjÌç¶Áü~¾`·½°É—ØB§þKsifçÂóÜÖ_O 5aud@™š£€ì Ë ¢¬Æj¬Ug2³êêêd7jyS›ßÛSðr¶3€ôà°‚‚‚à”B¢Ðmv¸»ëÃbƒ¢ê¾Ï “&µà,Ïp¶R (pԂΑ毵öCùVª»jbê k;ÛØNöòÐC¶3Ã;èkºöOÿüó—; ]ø2„-Lÿð Ä^ £ ç·’k|©†9yòäË/¿Üø*_eب¸æ((‚jÊ5¬V«üQD_§úv{Õ»…œû˜œœÒÂ&“mcçía’$‰ò-ª®ÎÚªjìT±ýƒg†râ9Ç4‚ œŒ Iðî´!¼(I% æ¬ø³%¬Ÿ 'H—”¿E¹‚phg®-ˬׇVç»zÈàj­†ÀcÁ]ÙxêÎ(äàPJÞ{%ߢBƒÁÿ3™cTà@ÖðèA¡* Ѹ4ѹWWµ.£û}ÝC››‡$x½œÔ*%¼‘væñ%ÿéÛ±ÔRtvCzq!*kxAEÖgÕw~Û¹WS¥Ø9;BGö±S*•^¯W¯×»Ýn‚ äë¦l!“×àü¢ÆX–­¬¬ õ=“ÉáR[é™Dâžš¥Ê P·pTâí’cÆÏy·óŒ×™ HOŸÙ³`ú=ýZdáW«Õ111ùùù>#Ÿ\T³Ù%ûõ—””Èq¹äÛRDDDSmfz½^¯×ó<_VV烈¢˜ Ç©€šššÊÊJù+F#‰ðW{ò<ðàÁÎ;kµZµZítÙƒè{Jªw1Z`D ÌeiñŒÛ«R GyÒj(u–¦æ’žžžœœ¬×ëÕjµÛã  G ¬0s´Þn¯SQ„½²œÖh·' À̱Œ’B®ª ‘V¨(PiýRS‡Ã1}úô„„„¾}û*•JŠ¢ ~ýõ×ýû÷<ø¯¿þ€îß¿Ÿ$ɤ¤¤˜˜Ù!4}úô 6èõúÆdÔ÷žß<Χílþ›ÄUå.»•€ËAíܧ¼ü)£~ÀÈ1/”äŸüë‡[b»ÍN¸å9âŠ7»î©t8] É¡zBZB­A z¢… ¨C-ÕÄ´~ dWrvƒ4ª)^—²“÷#DPˆ¼ˆN *œ¤ñò°|‡KôõšxñwìØ±cÇŽ¥¥¥õKKK<8räH“Éd2™ºwï¾uëÖ'Ÿ|²ÁŽV/$”©vûÙcÐT+ _÷FÏóoQ›Tª#GŽ$$$4h9k°ÊWE§j` n’.ØÆ„ ¶1ßñz&1hÔSûíb¿ÿþßzF1qäÈ‘ò‡:GÝ¥û}ä9¼bA•[’ä`Ç ˆ’ /‚ /I‚ñ!~p4n½\XFªÊ4G„‡9R-Nè—åœͰ²H”¼ƒO9XÎ*M´úôö(¥8ŽS©T‰‰‰AAA~oO‘gÀùÕHÆ ¨€ÂæîÀI iä]Š"€f«±óOZ@³7&-ž¸kÊŒçy)£”#»ŸkÆÍG4›ý]°,Ûÿd\Msâ–$‰çy·Û­×ëåp ò ^í²–Eét:A\.WKœŸ.².×ß`6›ËËËåc®ªÉšoL¨˜jpåÓç¥{úÅÊñkª¬NAN„„þïæ×|¶÷É»:'„š¬_­VÇÆÆ–””ø|íÕjuDD„B¡`Y¶¸¸ØjµúL€!Žãš‡,**ŠeY»Ý.‡ÒˆŠŠòI1»Ý^TT${_H’ät:BW°Ì5µ=ï¼óNX¿~}JJ Çqné5¼àç'­°‘´ÒÖMƒÅ5–P=/I¬ÇéRjÕnžÖLÍÈå×_MJJâ8Ž$ÙÙb›`ÑŠ¬×Ëy ‰CònSyIH^£ôɦúšÌétÊžþ-Tc¾Ï4M‹¢hµZÍf³R©´X,ÕÕÕ­4 ŽnÛ~ÿ?‹ë8ð¹)ÿ 1]h%ŠàT³À«$ƒî”6uÅŸeC;8û$™´ Šjú~ADQ¼4®ÇqEEE6›Í7åæu:Í +‚Çã騱+»Ý^PP Ÿ_ÖÖ$I–••!‡Ãð×,Å´ÛíF$osTô ¥ø;E{¿›ŸœAÓì‰üøñΖ IDAT:†‡PŽózâšO~ŽòxÖ]YtbK—”Nç>[Èp¼¤Òx·A¯3Š'ój,*-ïñ††Eùk䤧§‡‡‡oúùÛÞ½ºG›õ^úkÓº.ýGH’!ψˆˆˆÊÊJmZwWZ5… mŽM?ÛkÐíéééM­oĬç)ö~h„«zµ$ÖŸ§Àó `T+bú ¼#¥{ÿã¿Ø´{v\Ïç:Ý2‹ •~éSßžJ„ˆ@ ñj° д%þo¼1ƒŠ˜>€#Pb“r!‚¢(ŽãB" Â`P'õOG<µÐ(¯€$Dt=¨1»Ý¾ýÑòõз£¹>ʼ9”€Ì„ÔºB¡e9H•¤èìçÙøÅפTpàÀ… ú1wÓ€ €ã%ª)7Ÿm ÷ugbb¢Ï(æ³!DPÉq\#Ýí¶¦œ×^¾•ʲ²§Óåv»%©Õ½ø/òÓºí…M¾ñ»óíQþê˜V $»ؙʔ$w¯Û,:– €åEµZœFE`’@GòwÎSÇb±\a¢¶H H¡¬?ø@e*è`M“ÑÙG{Æ‹iÞÚ’ d’‚ @"AWº5.FJ¸×¹Œ½3-)á&8ñsùƒ™S5ù ÷’$) •J%ûžC½`†Q©Tþ]$©¶¶V¡PTVV²,ëõzCBBjkk[Ïoìt…íã%+ƒ4 €ÿ¬‚×– ”\À†dÄœ€àê|o¾½¦G8J‰6 ê¦)2¯×›ÑB@IIIMMB¡ /ûáñ<¯P(šÖëõæää\šKUUUII‰(Šz½^^•÷uVVVó<å—öä8.88˜eYI’hR–¤R© JùךÙ:½R¯×•–YcÍP]Vér)Jk¥ Äæ<“p§ÕjYŽ#€(Øý…ÉhT*Õ¶šªHª.-w!}y-ßIE±6G¤Q²Ùj—Xî¦t‘¡þ9ÅÅÅ5¥y”èá‹tŽîª1z­§lt8<ùùù ¡ÌÌL‡Ã‘{`cjlà°D½½²8÷Ø1Jôæ:â›F_k·³Š¤g@”༳<T’ÇuF«¯EÞuFU‡þCïJê~ë†ïþ¯Ó-³Z^SyOåÞ½{ËÊÊ–.]êñ¸E‘V³$"„" !‘‚°Ùd5FÓ4Ã0òÖç¼ÓBq¶B¤HBAI AŽþJˆ­´^ÔTä·’0̹×*z<h0îÈ¡¼OˆHï_@‚9$¡F¶*’g>…ŽoR´u©òòò‚ˆ‰‰ñc›8½ ÙÆ± jÌç &I^Ã%IÒ©S§ëõ²$I ÑhŒF#×ß}Ù5&ï´’ ‹î½÷þóò¶¶UÕØ¥˜´ ±]mª<{öXhxbÚ]f$]ÐA^Aªs‹ €­UÀQ °à”ˆ”ˆˆN:]ÕÓ¢=•_ß›¡¾€c?yûÑž~."OJ R@k@m€²cì²§/H®>º,w?€yÍYÿEù^ª(ß\åÚx<ù¡AvÙnF«KIMM=|ø°ü<Ãó|ii©œ/ÇqÅÅÅõF·Ür‹{mħ¿„jT‡f^²½œó:ÊÖƒ—½ÉæÐ¬3±Ba“ÅÉ#;FM|ì>“ @Eù-r{ÊŽGÇÉûåX …B_ÈÍæRZZ*÷”Óé R«Õ’$ù¶G”••ùK±,[^^K„Á`ðzY ¿-#EwLLDAA>ðÈÎó*…f&‰ª¨ˆæìZeY¶¢²2¡SRöð<•—Ÿ§Q(ËkÜA:@K¡Zà^/ç&€äÙÈðP©¬*1¡£¿FNtt4ç²yóƒcÏ–”‘§1µ™T«”F5mÚ4‚ –/_¾iÓ¦È ä­>søÏ‚ tKû›°kSɨmÎ @hì”êò]‘ѽx&ç@R<(•Y TkÛa²„" RŸ{zCLÒØK c;²q7yòäʪ*Q „ê‚$"qÁŠuÁŒ%O‹?¦3½z5mû‹l#.€ÉZ¡¢D¤ DA D^7Ñ_cbb‚(..ö=e)•Jy+R}'ž¢ôF €‚˜§ˆóÖ=h H'¦s]?jãRÁÕ¶«7wCjŒküJ¥o§½ÏìëÚÄÄNõ* ‚”÷šÉ[y[f|RìÜJ¥$Ê:¬®®Îé¼zÔ#?< ÚWü²GŸK!uQ ½’|$YÝ/{—h‚hEj!9)™jÄ+„Zæ7&¤ê‚«(Пú~Äócîœø¨ÙýÀK noÀ ùÛ»[ðÊ[‹ß—§0ÍÈ"$$¤¸¸¸¾÷ÊÕÒòM iÚçšÐlA–žž^_Û]d¹$¢wïÞ~ïµXƒ–áÏeZ\ë "Ô ‰÷ . € €u€ƒ.”ä)½2†ÖÒ6o¸lo‚ÁTäMޱ±±ŸŸ$»ˆÉ>^òõÄgt”w³6Í,{™\|#/ÓËk4Ù¯Üí©Õj#"" Ap»Ý.† AÅq†êÓ­#CBm" Ô-® Ъ•H£Rhƒb›c%ÒjâãÏlýOœ™ß–ë õÒ@šM*k[©¢”h4j·Ã_a‹Ôi•H£RZ‹¿jz÷ÝwÿôÓO}Ó†eûµn“ú%uÛëIJ¦,X ³`Á‚êêjQàûÅÓÕÇt<ðyô¸¥ÿö<îî»ïnF­ÃÆÚ´²CâdO%ð² Tƒ ‚Ç%èÌ J·W”í ê0!ûØžâ‚ìÛÆoòã•M§Ó­_¿žãù!C†€òžÊó&1t~"œû+Oâÿ”Ýz6ùÕÄ­MRc …âœ#’ÚI Ø“ËÊQ4D‘"I$„(¢-Þx©HcÝÉÖh¯×«T*ÓÒÒýZOíÛ·O^À€iÓ¦~ûí·0cÆŒùóç?öØc‚ ôíÛ÷‰'ž¸¸‚{&Ò1*@ J±äù­Ðq î™$¤}ë¯Ò^µT²É<;;û W.Wå+0sæÌÓ7«u6›Íí¿¨G}1'|†1‚ "DQ\±ò,ŠA– ¦™7´´PU]vn[SýÝMv{­OŠÒem0òd)–iüû[ÿ…zõ×¹»¥¥¥<Ï DFEEuíÚµñ–†ÙÆ$ñ<0•PºïÎÔ.¯ü¯þ­ZP`à·ÿùræ›ÓÔúðÃæ>÷·Né9ÎoȺoJ ÀXá€÷x –­?Õ-´™Ñä½xWd²óíÚk!õ—,ë_£¯‚¿%½6®[ü·Ç²ÿõËÎØ}™Ãs¼¨âÉŸþüuê$ 4 ‚• ”à­‹W»'÷0ÒÅ„[¨fL®ÐÐÐÊÊJù±Çn·«T*’$å‡s'òðm¨”']cb^7&9n\]]Çqååå Ô””È»ÜÕjuƒïdkÉ,C~9h­È§j<½Zc¢+Ë\ªS…ÕýRÂs ªõ:Ȩ jŽIõì‘ÀÙf—v AÚSì W—:TWåíga=¼Ñ È,µõJ‰¬ª°y¼Þ¤¸p‹ÿ¼ø•Jå矾téÒÿþ¹û'·› ˆnݺ}öÙgEÅŒýì³ÏÞÿýÖü"Gì0`À³Ï>Û¤-/¢(º\.·Ûír¹ŒæžHÿÇÐÑóÌ*B .'¨4§uA÷Tm7)Ñþ¿~rzÂbúýÛî”8Ñ¡Óé.½t·pO%"ˆ'!}ça¾ÿûR@ àx1@ãôùV(I’BÁ ":ï7Ö3JaÖ¡”^$èÜ &AH—sáoU5Ö¿ÿ-[¶\š®×ëß}÷ÝêêjŠ¢ŒzÏgüA?@ð€æ§$'€pÎs•Ž×›!Ío¥½j©àðáÃ]ºt¹Â°¼\•¯@MMMƒé Ã4êêÙ!6®CìÅþÎG3Žœß¾J9BÒ#êÊô#‡’S:7µ¥¢ÅÃo½>ÇÍ^V%<ñ_ Ùv~c’$}8­OïFi%(Š’½p""#’““›´èÓ’öÌÚw`Ä„;9ÞsËû?¿Þ·•j×¹Sʯ+6ˆ (š"QŸDsÐ3³ò88ûË©‡Ï3}ùÞ–ø¨!„®,È|RÌC¥‘ÂË_½6Ô­V7³åTÞñr«¼<(¯¤ÚÍ€( ”j3¸9à2ésÿÀÈža†f¿rJ©TÊîY^¯Wňˆ9®Çqr° Y†Ê«‡¢(ªTª=<š‘‹¼Ë2''GÞ-N„(Šv»]§Ó%%%µÆ)$Q‰IR8Ní8íÞ3…£½ •*B£Tx·(ö tˆÍyNx¶CRÏ ×±l—·WRœD¸´4‰¤QÓW£¦Ãµ5,V£<î ‡÷Ö®‘67òR©|á…ê/)4|…Ž^²dÉU»BÁÜn·Ûív:N§Ó#†³wæÈꤞã]ÖoÔ¨­]p­å7¯]êUŒ4Ä>íty9å^¾4vTK÷Th=‚ †èL¦¡„ âÙÛDš:ç1†:·ó¬ @Ýä Î91„€¢y?Ý}¸½v`¼zgË ¿¡üZ$ªíÕØ•‘ç&éáÚµ_y¯´ ©€ê7µe©¬VëÈ‘#Û¬‰ZôÒ>A$IÞeF‘$%tß §KJKNœÌèÑ35©ScßDR´VG;=ü-á9}¤œ‹ f uÔ:E‘ní‘çsnï8Ny?jjªÉdjjü…¶ç–/~oí "„4ª W»¼‘½E§œ›²Þõõï€F™ðÔ] -ÏÅl6‹¢(›[."88¸å ”~¤½¢×¬|h„‡ã ÷v¦´óÈʿߩUVU—†€X(ßß©Gä“GôÑ)u*šðK9 Ett´_ŽCVPPàp8ê—_¥RÅÆÆ62FèUs‘‰‹‹“$Éf³É=«T*¯ ÅZ> $QLɉá. !”Ô’AúÚ:{ŸÎ¡¶ ;IR¬“ç, €š¦QA < Ý;Xšd lŠ0CE•µ_—°Š2›Íêñ:X«S0¨¸Ä˜Ý£RRœ‹#t±’( D4èí×’š6Rc5CŠ]tA–?Óór²×›N…E¤UÑ\ù¡¾“•bà³:K¿óûár†Õfï©,/+{Ù2—Ë%ŠHZ# 9º„Ä ÈW<ù=îò¸ nÚ 9¢(«Õêp8X–eÜn‰Î€Іã¹j:—H‘DX(üyÑþ4ü®;ƌӦ†’–üXê‹Q)ûyH’$bUu剓ƒn’Ø)©Isì®'>ùíÓin»  Q.ó*}Ûƒoó€u×qÜ®šrWm™Màa§)Ti%”á‘MÛ q®^¤ZŸª7‡°î:oŒÛ[Wn¦KŠ]@#«@Ò6;ºŽ„ŽôðvJQ¢RÕN&"¶ž¿y{šïZ­Vö¦’CÕ«Õj—ê󌕚a¬gËñC„¶!y†JcR©TjµZ­V›L&N× þk^MY–4yòåUÔÿˆNyÜþ:î×6)—Þ½{WUU1 ãv»Æáåxˆ8¿_¶çþêyÀÒ£sª±¸¸Žýgù¥½+„*-+™4ñ‰f¼.¹ïèä¾£yžóx¨[lŸO Á½å÷m«T*š¦åþ­iRRÒW_}å;mý“4øY’¤¦Fu—CðO:µ¤¤„$I"È‹ÔgEA^ûDIEQI ‚¢Èø ()ñFµZ}©ôÄ×ðP <|èàá­U,J¡×+ôzÃ5¼ap{â^ôZ{"D D4¥ 50ú©x!@$I$¥TjL` O€ð„Þ7äÈ‘_$;] ‰O±µYŸ†„„È/¤j=hš6›Í“/oÃW¬Æð}߇0¸×p{âšâšâšb°Ã#·'÷nO\S\S\S¬ÆðÈÃ÷! î5Üž¸¦¸¦¸¦˜æ«±“'OþðÃ¥®X±¢ ònƒ\®:òn˜šâöô;¹¹¹7F.×I¯áöÄó×ôú¯)æZæÏŸï{ƒ˜LMM¿bˆ_¶Éåʗ怀€¦¦¸=ýžË 3ɯ\—6ë5Üžx¾ãš^'5m|Fê…Nìc³µ‹ÚËüÎ;ï éӧϘ1ËR ƒÁ`nš§ÆÚ#íHQjµº ô8ƒÁ`0 ¦A¨ššš¶ñçÀ`0 s͉‹‹ÃpÝ©±Sye?mKoã\ŸŸ2¶ÁôÅ+Ä]‚Á`0L+Òè›þ v^Ñö"*v§ŸjëÏOp#¹ôb0 sƒAyܱ[~•H ¼œ"*Eƒo/4R •¸}üË€^)Ô°þ½<ÿDÛä÷ÒâOã£v9˃Á`0˜ÖE«¾ù¦äÝ·Ùòr_šyôè¨ úu耛Çï,^ù£J¥"Ú2Ë‹dÞ=€Á`0ÌõCÝÎ'† É{æŸÓö왼aCüêÕJ,ÅZSµ©»h·¦¦;Ša0 sÍa²³³~øÌ½÷º—S興ŽÿùOç?þÐßz+nŸÖ–F×øÍHØ ƒÁ`0˜ko³•,ZT¹j•Äqr ©Õ†ÍœúÔS„J…Û§m ®y °… ƒÁ`0˜¶GbÙò?<Ö»wÅŠ²C$4aB·Ã‡ÃgÍÂR¬-¹–¶1ŸU »íc0 Ó†BLªþî»â7Þ`KK}iæ{î‰|ùeUÇŽ¸yÚžkiÃV1 ƒÁ`Ú÷©SgÆŒÉ6Í'ÅT ¾ù&~Õ*,Å®Øo ƒÁ`0˜›¾ººxáª5k$A8'"æÌ ~üq¤Pàö¹†`¿1 ƒÁ`npD†)yç£Ý»W®Z%K1B©Œ˜3§Çñã!S§b)vÍÁ~c ƒÁÜÈÔü÷¿E¯¼ÂääøRŒÃ‡G¿ñ†ºS'Ü8× Øo ƒÁ`0˜çÁƒ'‡ÏzøaŸÓtíšô믉ߥØuöÃ`0 æFƒ·Z‹.¬Z½»ˆµ °ßƒÁ`07\Ä>û »ˆµnL¿± 6ìÚµ«C‡ÿøÇ?Ú¸RUUUK–,€ýë_ÁÁÁW>ØívK’b4BxDb0 ¦ÙÔnÜX8oÞÿ¸ˆ ýæ›x]«±Ë"[Åš*Åžxâ‰üüüË}¶fÍš¢¢¢Ã‡sç_òЖx½ÞÇÃ0—;F’¤M›6­Y³¦ªªÊ—HÓôÈ‘#g̘%ƒÁ`šŠçôé‚—^ªÛ±Ã—¢JHˆyóMãðá¸q°» ÍðëÕ«WTT”üùÔ©SV«Õd2uíÚUN1›Íףϛ7oÿþýУG^½z †ÒÒÒôôt»ÝŽG$ƒÁ`šoµ¿ývÕêÕÏŸ»µDÌžú?O6‘ ƒi$ÇU¬\Yºx1_[+§ Š ž81â…¨ö`›À\j¬ âY­Ö>úèØ±cݺu?~|Çóï|X»víÖ­[;vì8f̘+V~ùå—‘‘±fÍšÜÜ\N×§OŸ'Ÿ|R¡P@zzúöíÛ³³³ ÃÀ'Mš¤:ÿFÕíÛ·ÿý÷%%%‰‰‰wß}÷•‹´fÍˆŽŽ~ä‘G.úJ­V_¹x™™™Ÿþynn.˲111cÆŒIKK“²jÕªC‡õêÕkòäÉò‘ï¿ÿ>üßÿýŸ|Zß9ï¿ÿþ•+Wž8q",,lÊ”)½zõÂÓƒÁ`Ú›“ª¿û®øÍ7Ù’_šùž{"çÍSÅÅáæiwÜÈñÆÇœ9söìÙSSS³cÇŽ+Vø¾ª¬¬ÌÌÌ<}úô¼yó<(ûxíÚµköìÙ§NêÛ·/Bè×_]´h‘OoíÙ³'::úöÛogfݺu«V­’¿Ú¹sç›o¾™•••œœl4ßyç+‰a˜’’:t(A\¶ñ,ÞÁƒ§OŸ~ðàÁ”””Aƒ={öµ×^ûúë¯åŸ”——gff–••ù2ÊÌÌÌÌÌEñ¢s¾üòËGu:YYY/½ôRAAž ÓŽ`²³Ï>ø`î´i>)¦êرÓ×_ǯZ…¥X;åFŽ7–——wûí·ðÁþùçÒ¥K322‡^¯÷ŸŸ?bĈŋkµZžç?úè#QüñqãÆY­ÖqãÆíÚµËf³™Íæ‰'Μ9SÖOf³yÕªUGI’>ÿüsèÝ»÷Â… `Ïž=óçÏ—¿º´H%çgNhhèUË_¿x‚ ,[¶L„ÁƒÏ;"##?þøã¯¾újèС9›ïœS¦L;vìÑ£G_~ùežç×­[7sæL<0 æúG¨«+Y¼¸bÅ éü65ÒhŒxþù)SMãöÁj¬ù4ogecˆŽŽž9s&I’;wAìv{}5ûÜsÏÉ«  @Þá¨×ëe¥¥ÑhÜnwnn®Ùl6›Í¢(fggWUUY­V8ïãe³ÙŠŠŠd5æËTþÐ`¸ þ¼‹%I’õÓ>\]]Ò£G‹W\\\^^©©©ò·ò #˲Ço¼KNN~衇äótèÐ!+++//O ƒ¹ÞŪo¾)~í5îüf|D’A&D¾ôe±àæÁj¬ù´¶ß˜Éd’EÏEÒLJÁ`ð-VVVÊÞ{ï½úÇØl68xðà²eËd=$#›¾***ä&$$4¦H¾Ý ¥¥¥õÓøá‡Ã‡§¥¥ÕWcõ‹ç[‚Œ÷i5…BÁqœï«Æ ¨·¿&&&&++ oäÄ`0˜ëû¶m/¾Ède]¸ÁýÖ[ªóÎЬƚOëYÅšåü³Åœ9s|†.Ðh4µµµ¯¾úª×ë}ôÑG‡~êÔ©·ß~[þ–>oö‰¹+£Ñh,KuuõŽ;Æw×±‹ðEî())‘YuuµP-00ð"‰µ&[õ®¢ƒÁ`0× ¶¼¼øÕW«¿ÿÎ_Þ鈈¨W_ ¼ï>ÀÃo ®ñ›‘d¿±ë¡!"""äEÌ;v˜êAÓtVV–×ëU©TÿûßÃÂÂd¡#{LJ††ÊŠêСC¢(J’ôí·ß^9#y+ennî_|Ñ oYƒDEEi48yò¤œröìYùC§Nàü~LÙäæt:?úè£ÏãñxäL†ÉÉÉF[õ0 Ó–.WÑ«¯ëÕ«ú»ïd)FêtÑo½Õ===pÌ,Ån0nd¿±&A¡Bà IDATÓôÔ©S—,Y²oß¾©S§¦¥¥1 söìÙáÇ0€¦i†a–.]ðË/¿@uuõ®]»ÒÒÒn»í¶íÛ·oݺ5++KŠ:פ—SZwÞyçÎ;ÓÓÓ¿üòË#GŽôîÝÛb±Ô_½\ñ&Nœøá‡nذ!44”a˜ï¿ÿ†*Ë©¾}ûnذ!;;{úôéEEE>O²‹Š‘••õÊ+¯ 0`Û¶m<ÏÓ4}ß}÷ái€Á`0×rôŠ×_g}Ž(Y|0rþ|ºÑ^¬ÆKÄk·ß~»Z­^¹re^^^^^Aááá:N¯×?öØcßÿý¦M›bbb,X°|ùò¢¢¢Ï>û,--í©§žª©©ÉÈÈ(..îÚµëO<ñôÓOÃe¼øåô… nذá‹/¾8yò¤ÏÖq…âÝwß}4Mþùç²ÝK¥R7n„ ò·©©©ƒ Ú½{wvvöðáÇ 2{öìK‹Ñ±cGN÷î»ïJ’d±X^|ñE vÿÄ`0˜ë&+«à¥—ì[·úRÔII1  ÂsƒæÏŸ¿`Á‚¶Éì¥ÅŸ¼õüà iq‘UL?vÍÅ™Ãᨫ« ®ïóÎó|MMMPPH’TVVf6›}`kkk ‚0 Mʨ®®®¸¸˜$IßBdc°Z­<Ï_*øêêêT*ÝÐ>ç?þø§Ÿ~êÖ­Û’%KÜn·Ãá ÁƒÁ`®„ºº’E‹*>ùĽ‚2™"^x!xÒ$DQ¸}nT¯ü‘v•ÜÈñÆš^¯¯ãܬ (YŠB(<<¼þ·&“© †”””¦þª¾Ûþ¥'lÌ4MãŃÁ`Z‰ç+V®,]´è Žh:ôŸÿ Ÿ9“4qûÜ ×¼­‘ƒÁ`0˜ëçÁƒ§F*|é%ŸÓ÷ïßyË–¨ùó±»yÀ~c7 =öظqã(lîÆ`0˜ë®¢¢hÁ‚ÿ‰^õÚk8zÅMÈüžJL}ÔjµÉdÒét¸)0 æÚ"G¯ÈèÙG¯ÀÈ`¿1 ƒÁ`ÚŽÚÍ› çÎerr|)wßýúëʘÜ87-Øo ƒÁ`0˜¶€ÉÍÍ?>sÜ8ŸS'&&­[—°f –b79Øo ƒÁ`0˜ÖEt»Kß}·ìßÿ–¼^9…4#æÌ ™<Õ ¥„¹iÁ~c ƒÁ´žË?þøh·n¥ï¾+K1DQ!ÿøG÷#GBŸ|K1ŒLûóÛ¸q#î6 ƒÁ´ƒ[lv¶fÕ**/Ï—Â'%¹{Ìszß>Ü>7ãÇoŒÈi—ï©?~<î` ƒÁ\·°••gŸ{®ôË/}Ñ+TÑÑ)Ë—çæá›o¾i¬p¿†¥l‰ßØ5߆‰×X1 s)HÃ÷ü»e=åqË)"E ¹£pð¨MgÊáÌ'¸‰nš¤m®¥k†UìºB~ç&ƒÁ`02ÖÍ›OϘá:sÆ—t×]Iï½§‰ÇsSQSSÐøã¯q„ Ùo wƒÁ`Ú5\M͉I“ßq‡OŠ©¢¢º÷]¯ß~ÃRì&¤© h8ÞƒÁ`0-@’JW¯Þ’R²j•$Š@(•qsç<}:ôÁqó`®w5泊ÝñÆÖ¬Y“››Ûgþá‡Nœ8q¹oEQ,**ª¨¨Eo ƒiUGîOK;>q¢·¼\N =zÀÉ“ o¼Ajµ¸}0¤û=ðÀ’$­\¹Òd2ÀÞ½{_yå•Õ«W‡‡‡·Y&Nœh³Ù ²²R«ÕjµZxøá‡zè¡_~ù%666..Îï™nÞ¼™¢¨.]º\”îñx>úè£7ÆÅÅÉšìŽ;î˜>}:å ãw¸ššìyóŠ>þX9EŸôþûAwÞ‰ÓžÔ´ø=•v»}ùòå/¿üòµ*ÿçŸ.?~üý÷ß?vìµ4ò-^¼8??ÿ‡~0 Šbmm-â ã_$ž/ü÷¿³,àÏ_c)ƒ!þµ×¢Ÿz QnL3hß~c4MïØ±ã¯¿þº(ý½÷Þ›:uê˜1c^}õÕ¼óa÷f̘±hÑ¢ßÿý‘GyòÉ'óóó7lØððÃÏš5«ü¼…¹  `Ö¬YûÛßþñœ:u þúë¯I“&íß¿¿ÅóxÃ0—æUQQ±~ýú3fÈR ‚0›Í æ[VVöÌ3Ï 2dìØ±[¶l‘™4iÒéÓ§åÏÓ¦MKOO—¸mÛ¶3f 2dΜ9¾Bb0ÌÍIÝáÃû<3s¦OŠ…Œ3àøñ˜3°ôK5Ör¿±‘#GšÍæeË–9Žúé$I>úè£sçÎ=pàÀ·ß~+'–––îß¿ÿ÷ßïܹsNN΂ 6mÚ”˜˜xìØ±;wÃ0sæÌ±ÛísçÎE½ù曢(º\®¢¢¢æ©eË–¥¦¦¾÷Þ{?ýô“ìCVRR²|ùò±cÇΚ5 Þyç!C†üúë¯gÛÿ³w§qM\kÀÏ$$,!@Y‚ê*Fq©¢Ø^—*ÒJZ°HAiêÞÚ+¸ÀEp)¨-Õ‹„‚ݼ—\(*¨(UAA"[ØdI€äý0’››Í°oÏÿçg˜9çÌ“IòäÌ™3ø^ÆÆÆGŽILLÌÌÌŽ µ´´¼|ù²““See¥0K“N+++©-­W ìÚµKOOï—_~ùòË/8ðìÙ3„Pyy9·çj•••xÎWYYyúôéuëÖ…††>}ú„·: }}ïÎÛÜóûœbi9;=}æ¥K*“'C|ÀhÍÆú7¥ººúöíÛcbbD×ûùù988˜ššçåå ׫ªª†‡‡ïÚµ‹@ ‰Ä£Gâê˜L&B(''§¡¡aÉ’%Ó¦M³··¯­­-++[±bEzzú’%KúÐûléÒ¥ÚÚÚl6;//oîܹMMMï½÷Þ_ý…o°råJCCC---sssüì³Ï(ÊüùóÍÌÌ0 ««©©IUU•$òÈ3>Ÿ/:_XïóçÏ‹ŠŠ<==µ´´­¬¬þýïË9 //¯%K–ØÛÛ/_¾üÞ½{ðžŒ;AåÙ³Y––å§NáwM)‹ÐÐùùù:+V@x@ÿîqc¡… Òéôk×®‘ÉdaröìÙ;wî°X,>Ÿ¯¡¡!ÜX___UU!D ŒÉd²hZSSSƒŠÇe@&“›››1 “L}4¹ç×’h’4aÂü?=êêê:tè¾hllŒÿçêÕ«þùgGGÇ‹/–.]ŠÊÏÏ'“ÉúúúrêÒÓÓc³Ùmmmêêêøš°°06›}ðàA±zY,–ºººð^KKËêêj9%+++ãÿ111¹uë¼gãJÓíÛ…Û¶µ>zôfà 6o¶ S–û™ ÀhÊÆÐ@ÌÈïçç÷èÑ£ÔÔT|1333))ÉËËËÙÙy÷îÝUUU –£««‹Z·nÝÖ­[‡àÀi4ZWW×±cÇðzqÏŸ? LJJ266öõõÅWjkk·µµµ··ã÷lJ^¦D™šš’ÉäÌÌÌU«Vɯ/M8M0“Éæyx_ZWWWGG‡äŽL&sæÌ™ðžŒ’Ïš¤¾÷Þ»ÑÑZ BpÀÀ óéêêzzz ñLBEEåöíÛ•••l6[8J¾Ù³gkhh¤¥¥]¿~ÅbeggWTTdggùå—÷ïßð÷´´œ2eJ\\Þ<|è[}}½†††žžÞË—/Y,>^ÍÔÔTGGç×_íêêúý÷ߟ?.™ijjº¸¸DGG GâË2mÚ4==½ÔÔT@PVV–ŸŸ¿xñb„¡¡aQQ›Í>|ø°è8¼‚æææ»wïÚÛÛÃ{0æ º»™‘‘·,-«~ú OÅ”44¦EDÐ<€T Œµllgá_³f¥¥%þÿE‹™™™EEE%&&Òét‡¡H!T*5((ˆF£…††º¹¹EFFÖÕÕµµµ•””´µµ øá‰Ä#GŽtÌËËë»ï¾{ÿý÷‹‹‹---¥^<ݾ}û‡~èåååâââæævýúu©7ÉdrHHÈŋ׮]»iÓ¦7.X°!ôñÇŸ:ujÍš5Ó§OŸ8q¢pûªª*—>úHOOÏÁÁÞ3€±­éλsæü÷®I 3pssxö  šÊ¾ ÿÒ¶è@1Ñqcxr&¿«,--ÍÕÕõ­CÍZZZðcMMM EtäÖ[µ¶¶b&€%UxlÊ@=5€/ž%ÚøææfáŒ\.·»»[MMM~i|>¿¢¢BYYYOOOþ– 4H$ ×p8"‘(+gggƒA§Ó;::DGàÀØÃ««{¾k—è¥Iu«èh­E‹ 8  Ïŋߚ±„ǦÛ+Çìs*…©FëU*†¢R©òS±E£ÑDS1ÑÆ S1„²²ò[S1„@˜Ÿ¯©©™’2;Ûººº”””àl€AÕúøq¡OSv¶p››Eh¨²@6&]?ÇEEE¥¥¥­Y³ÆÍÍJ¥2™Ì’’’bƒQSS“˜˜g >‡ó24´44”ÏåâkTŒ§EDè­_ÁÉÓŸYø+**ÒÓÓ§L™²}ûv ÃB¦¦¦¦¦¦Â¿ÆÄÄR(”Å‹{xxH$<1244´±±IHHPWWß»woAAABB‚¾¾þž={ôõõ܆ÉdžŸïéé¹k×.kkëÂÂÂÄÄÄüü| …âáááè蘕•uöìYooï•+W ½Õpýz¡»¸_ÄH¤) †y` Q]‚F…Ñ:n¬´´T ØÚÚ⩘(ðìÙ3:žœœ|æÌüOUUU999©©©ÖÖÖ%%%AAAééé–––ùùù7oÞTp‡ÐÜܼoß> ƒƒù|>¾c~~~\\ܬY³ŠŠŠ’““Bööö4MMMÍÓÓÓÀÀ!ýêÕ«ooo|M{{{yy9›Í†Óz…W[ûØÍ-×ÑQ˜Ši98ÌðÀ2<R10ŠŒÖqcø%NeeeÉ?åääÔÖÖ®ZµÊÉÉiÅŠ©©©¾¾¾!¤ªªN$333‰DâÑ£GÙlö­[·˜L¦°ùÛäää444¬ZµjÚ´iööö eeex·†aGŽÑÖÖÎÊÊ***B™˜˜¨©©uww;88 „ACCCKKKeeå²eËð&­X±bùòå’i%YÝÝeG–:ÔÝÞŽ¯Q14´:uJwõju†³oLØ+Ö‡‹•zzz¡¿þúKòOÕÕÕ!333<=255íììlhhÀÿª¯¯¯ªªJ&“ ‚±±1™L¦P(b%Èߦ¦¦!ÿé§Ÿ¦¤¤ÉäææfüOºººÚÚÚx>'$Û†aƒÁPWW óóó{ñâ¾’@ @6 j}üøÞ¢EE{÷¾IÅ0ÌÀÝþð!¤b²±^ëÏ|cfffJJJÅÅÅõõõbÂó¡ÊÊJ|‘ÅbMMÍj¶®®.Bhݺuÿé1kÖ¬·ü†ÉÌètú?þ¸iÓ¦¢¢¢ÈÈH8@qÝlvQ@À;»¦Û·ñ5KË9ׯ¿GÖÕ…øÈÆú¢ÏãÆ&L˜ðÑG!„>|X[[{óæÍˆˆ‡cggG¡P²³³KKK333kjjæÍ›G&“ªÍ³gÏÖÐÐHKK»~ý:‹ÅÊÎή¨¨³½¹¹yccã“'Ox<‡ÃIOOg³ÙÎÎÎT*UMM !”ýå—_Þ¿NG£î?ÿɶ¶. ÃûMPV6?p`~^žöûïCpÀ¨6ŠçÛ²e •JMLLô÷÷G©©©™™™a¦¥¥µÿþcÇŽmݺð9sæ0Œl0•J :qâDhh(BHKKëïÿ»‘‘‘¬íW¯^ýüùó;vìØ±cáÂ…çÏŸ?vì†aï¼óާ§'B¨­­­¤¤¤­­ NGª£¬ìéöíuÿùpÞúõÓNžT14„à€1 šÊ¾ ÿ!dêƒ/œoL¿p)?3KKKsuuî(jjj¾¾¾ØÐ«¦¦&55µìÓÚÚŠa˜ºb·í466Òh4¼…<ËåR©T±mà9• FÐÝ]Süí·]--øòĉ–GlÞŒ`¸-Ù.^¼(š±H›Bn¯õÏ©Ä0L__Ò¤I’£ài4Úà¥b!*•ª®ðÔZZZÂ’ÉdÉT €˜¦;wîÌšõô«¯ðT #§,zùÒÀÍ R10– ó•J|ܘü´ÀxÓÝÖV¼ÿ«“'ÝÝøukk«Ó§µ 8²±×‡qc/^„WÆ*å[·T=“ TTØ›7¿~ÿýWåå>ÿdc«oÏ©tuu…— Æ$NEÅÓíÛkÿ]¸f‚““ULŒjσï€ll€õg~c Ÿ_øpwÏ æ¤‰'‡„è¬_ÏAˆŸü²±ÁãÆ° ˾þº-7÷Í20ñóÏÿñâÀMÜ ÀHFö È•F#>‡SqøpÁûï S1ÕiÓ¬RSMŽ…T Œ£oÜØ ÉËË#‘HVVVC_õùóç)г³ó¨+\¨»»ûþýûwîÜQVVþøã'L˜0ØA•••£ñu „ZnÞ,Û¹“óòå›îeeƒ;'1Ø`NNÀ4êç“tðàÁåË—ÿôÓOoݲ««KøÿÇÔS#E‹UÄåË—¯\¹2Huõ§pÅeggÿãÿÀçÂår¹}B¯üôÓOŸ|òÉ–-[œwîÜ9Hµ M蟺_nßþlÝ:a*F]°ÀæÖ-ƒ={ ãÐX7ÖÒÒr÷î]eeå+W®lÞ¼“== ƒÁ¨©©ILLÄO:E @n*Vì ʺäËÊÊBy{{«ªªvÃ***.\¸àäääçç×ÐÐP]] ocF—†””WûöuÖÕ½ù¢ÑŒÔÝ´ &t ›>?§RªŒŒŒI“&Í™3çÒ¥Kùùù3fÌÀ×WWWŸ:uª  Ã0:nddT\\Ìçó===wíÚemm}èÐ!vàÀüû>&&¦°°B¡,^¼ØÃÃD"áIF[¾|yll,…Ba0¢µ'%%‰+«(Iiii.\À0ÌÇÇgþüù!&“yòäÉâââI“&1 ±«¨’uEDDÖ××Ϙ1ÃÝÝ}êÔ©ÿóñ×аoß¾Ï>ûŒN§Ë*ü­ˆ’¬åܹs·oßFmÛ¶mÁ‚êêêb “S×üùóãââ:dff&§ ѰX,>ŸßØØˆ?K___Î^ ÃÐÐÐÆÆ&!!A]]}ïÞ½ úúú{öìÁ÷Å[B§ÓÅâ/ª·‡ Èö'Ož]TVV–sÖI­€Q‡S\\úõ×­wî¼Yư‰îîFJ4ŒgÃy¥RøXÆ7våÊ•åË—/_¾ÿ?¾’Çãùûûçææ~ðÁ~~~–––ööö4MMMÍÓÓÓÀÀ!TUUÅb±ðž={æããC§Ó“““Ïœ9ƒ—SUU•ŸŸ7kÖ¬¢¢¢ääd±ÚÅŠ•S”˜šššÔÔT[[Ûúúzü‚)‡Ã hnnÞ·o†aÁÁÁ|>_N]!"‘èîî¾oß¾{÷î‰õK ‚#GŽLœ8OÅdþÖ”Z‹ƒƒƒ¡¡!BÈÓÓsÑ¢Eb “SW^^^||¼…B‘_…¨™3gÞ½{×Ïϯ¸¸Xþ^UUU999©©©ÖÖÖ%%%AAAééé–––ùùù7oÞn“——'ÿÿùþèå!(¸½è"‰D’sÖÉ £ˆ »›uêÔ“÷ߦbdCC‹„“' `ôÍ7†Ëarþ'5™¢‚*---))9xðà„ ÌÌÌnÞ¼¹}ûvUUÕ{÷î±X¬¥K—~ñÅÂ]ÔÔÔº»»$²‘““S[[»jÕ*''§+Vddd¤¦¦úúúâ×11 ;r䈶¶vVVVQQ‘ؾ&&&¢ÅÞºuKNQ¢TUUÃÂÂTTT¸\nFF“É,++khhXµjÕ´iÓìííÊÊÊLEæ?« !äçç‡GÕØØ8//O´üK—.1™Ìï¿ÿ^xŒ² —€Rkyçw455ñ´L2¶7nÜU—’’Rdd¤ä³Òå¾WTTÔáÇù[tÜžœ)ÒU–ÃäôaMcc£ŠŠŠhÆÖØØH£Ñ¤NKÖÔÔ¤2¸ IDAT¦¦Ö·þ ±b,ª©©ICCClŒkk+>«ª"uµ´´àC¦ššš(ЬÙ4/\*k B¯ê’_Ç«­­¥P(bc¶z{ø8mmí3gÎ466jjjÊ™v®·áêCxûsÖ0ì:ëê^ýýï ¿ü"\£¹t©É‰ÊÆÆ0Þ(˜¨„ǦÛ+ÇÚ|coíxë!Z?nº+VÁ¢¤nF¥R¯K8z]ÁßZ¸T Ö"„^Õ%¿ 2™lddÔç†)~zô3\}/ nõ£“ »»æ‡*ÿùÏîÖV|Š™ÙÔÈHªÄì}IðœJ0Þùûû+Ø‹Š[ZZºcGKÏ~øœ®Æí1²Œ1cð9•ôÊœ9sfΜ q Ýݬ˜˜ÇÂTLÅÔtÚo¿™œ8©ŠkÏ©04:ž>}éç×þàÍœ®‘¨ïãcø÷¿DÆæ1üwCŒ.|6›ù÷¿?Y¼X˜ŠQlm­oÜ0>xR1úÆè…ö‡_nßÞñô)¾ˆ‘É;w|ý5÷ÐW0n €BºÛÛËvì(pt¦b‹M¿{×ÐßR1úÆx»¶û÷_nßÎ).~óS^UÕèÛoõ¶nňDýãÆÈÓÝÖV¶cGáÊ•ÂTLëo›ñྤb 7@¦ÖììÒ¯¿æ””à‹DMÍÉênÞŒ¤=ÂÐ70n €Ý­­e»v=]³F˜Ši}øá{wî躹A*ÀÀ‚qcÄ5]½Z¶s'¯²_$éêN Õ^·"À`€qcþ‹W]]äêZôÉ'oR1 ›øÙgÓï߇T €ÁãÆ¼ñú÷ß™þþuuø"IW×äèQ­Õ«!2 *7uÖÕ½ððxáá!LÅt6lxïÎHÅ0n ƻ׿ýVæïßU_/’&N49~\ëÃ!2Œ‹l õôÁÅÊ!Ú×8nC Ap(ŽWYYúõ×Íׯ¿YÆ°ê¹ Kþ¶¡»ŠÆý'3œE`\dc0nlÀ?5¶¸*²&á­± l6[WWWu€žõ›——G"‘¬¬¬FEAee¥†††††ÆX:Ο?O¡Pœ£ðÄÄD@àêê:fÞ ÃrŒ„רá—_˜] o23 Í¢õ›? =²pÜ¿ƒàÃŒ£l zÅðƒƒáµYl%¾&ü‡ R#ÌãñSRR:::ŸÏ×ÔÔLIéã0¾®®.%¥7çÒáǵµµÏœ93òƒðÓO?]¾|¹¹¹™Ïç¿÷Þ{Ç—<œ>D@”‹‹‹@ ˆ¥Ñh¡;wîìß¿?..ÎÀÀ ÿ廹¹±X,Éÿõ¯]¾|Y[[{¾éSSS¥~Ó»¸¸())]¼xqt½ð44Ò^£ÿ~TV–2Ío–1¬zîÂÉ?Ï¥jŒüÐöÿ½96΢ Å@}LÑš!76p(*J¡%tášÌ¬;r¶ŠŠJKK[³f››•Je2™%=<öƒÁ¨©©ILLÄO:E †1 ª¨¨¸pá‚“““ŸŸ_CCCuuµÔÃéCÄ477÷Ýwß~ûmŸKVùááá]]]¡âââÓ§O+++#„ôôôà½0ô§ôïõù5¤¤0÷îízý_$ëë›?~£¢mƒ®ö ]Ÿ3ö΢Áþ˜£;ƒ²é Ùã…š={¶èú%ôÜÜÜ=^ß„ÿ ÞŠŠŠôôô)S¦lß¾Ã0„©©©©©©ð¯111……… eñâÅ$ 3Óh´åË—ÇÆÆR(ƒaaa‘””T\\Ìçó===wíÚemm}èÐ!vàÀY» „¾øâ „жmÛ&Nœˆb2™'Ož,..ž4iƒÁPür§0RI ‹Åâóù@_____!$y8………õõõ3fÌpwwŸ:uªð¸æÏŸçàà ¶‹Xíd2ùÆK–,qpp]/y°EEE¡¡¡ÖÖÖ»víjllÜ»wïÖ­[_¼x!«|¼Í!ü£ÙÐÐPEEE´Š¬¬,±È‹¶üСCJJJ’—zÈEEEǯ©©Y¼xqgg§â?÷eNòO3:~á Ã|||æÏŸ?ì§AŸ[;Ò^£Îšš²]»SS…k&¸ºN>‘rm…NêEaaabbb~~>…Bñððptt”lÌØ;‹*²>¦¤¶9===)))$$D__?--íçŸÞ³gÏ»ï¾{ëÖ­«W¯ìììÌËËÓÓÓËÏÏýõ—Ø%0:²1Ô3n ^†þöq»Ú¸]НÇ?©ÿúë/É?á#ÌÌÌð¯ SSÓÎÎΆž[®tuuµµµñÏ@ HÛߥ¦¦!ÿé§Ÿ¦¤¤ÉäæææÞAÖ?©»P©ÔÐÐP___@.9~‘ÏçÇÆÆnÙ²eóæÍL&S´ý:::ŠŸº .¤Óé×®]»{÷®üƒ0a‡~ØÚÚjgggnnÞŸ³BVä…-—Ú©‡üèÑ#„PÚ#ët’šihhàb&OžŒwåïi0x­š×¨ñßÿ~¼`ÁëË—ß\“20°üùç©QQDMÍÑ:©1Á0ŒÁ`¨««‡……ùùù½xñ¢ÿŸ¨ã-’S²ÚL ¦OŸþèÑ£Géèè¬X±¢   °°ÍfϘ1¾‘Ge6=d’Ñþx>Íí:÷ËuÑõç~¹Îævýx>AòB°™™™’’Rqqq}ÏdBøwCeÏ£‚Y,@ÐüßOmI ffÿóc½« !ÔÜÜÌår…ßL¡uëÖý§Ç¬Y³z©ÿ¤AØ9±nݺeË–ñùü'OžˆNfffRR’““Óü1mÚ´þDÀÏÏOUU5µç"‘¬ƒmmmÍÈÈ “Éúè#„P``àÇkkkoÞ¼Áápììì(JvvviiifffMMͼyóÈd²œªÍÍÍŸ•u:É?ͪ««ÓÓÓ?~œ››kdd„å ãi0¨­¼×ÈŒÅÊŸ;·¡g8šŠ™Ù»©©S£¢ˆ²gᓇ“žžÎf³©TªššZŸ?Æs(Ä>¦ä´ÙÖÖ!ôðáÃÙ³g[[[“Éä‡Î;¾‹Ge6½bØ=öÛ¯—~ûõR¯Kø_#+Óݲe‹‡‡Gyy¹¿¿ÿ¦M›Ž;öêÕ+ ô´´ð iëÖ­!!!sæÌa0òk_½zµ‘‘ÑŽ;ðÑŠX·nB(&&fõêÕ *•D£ÑBCCÝÜÜ"##ëz~ÐFÊËËOœ8áîî¾eËee対úÊÄÄDìp-Zdff•˜˜H§Ó9NDDDŸ#°fÍKKK9›››ûçŸîÞ½{úôékÖ¬yöìÙ¿ÿýï¾EXRÛ õI$ÒÆZ¢££MMMå|U477ïí-ët’šQ(”?þøcçÎ]]]ÞÞÞƒú^Pä4¼ÖÒkdn`ðIuõ‡ý%|Ò‘î¦MÖׯSçÍ¡““ÎÎÎóçÏ»¹¹mذÁÀÀ@˜Rôí½3žC!ú1%§ÍS¦L¡Ñh$iæÌ™$ Acý Meß„ÿ€ß9,zM]t¾1<9S¤«,‡É±Ÿ¢¯Ÿ˜Þ>ÇC ÔÔÔàwe‹Ý_ÙÔÔ¤¦¦&¿WL,·¦Ñh’7iÊÂáp”””¤Þ„ßÚÚŠa˜ººú`ÇãÕÖÖR(É`¢‡ÓÒÒ‚O®ÝÔÔD¡Pð›ÒûÞlßÊï[¤2>Qpß®DÈ:$×»¸¸à³766jjjöyîº? µµø±o߮ع“[^ŽoFÖןzò¤ä¥É1:ɘðx<.—K¥R꽡èÛ×èU¢›Bn¯„ùÆÆZ'Yï’q “uC2>)³âz{7†Ø¬Kb?ø†&d2ÙÈÈè­‡#|Ήü˜ôí~Åvðîw‘lƒÔCîϳ³d…NNHûy¼~ jkä5âwtÔ8PóègxŽ‹Ë”#G”zù^-¡“Œ ™L–š1ô¹ Eß¾@Às*#ˆ¿¿¿¬ÞGh­-7o–úùý·KÌÀ`êÉ“šK—Bèà,½ôŠÄÌ™3ZÛ+.·"4´:* õL^¥µj•ɱc¤½Ÿ`œ¿Ð 0–³1Ï©€~hÏË{éëÛñôé›tmJh¨ÎÇCd]`¾1}•GŽ®X!LÅ4—-³ÉΆT €ÑÆÀ(ÓñìÙK_ßöGðE¢ººñ¡CÝÝÑ Ür 0ߌ|~õwß¼ÿ¾0£.X`sëÖÄÏ>ƒT €Ñ ÆÀèÐQTôÒǧýáC|‘H¡> ]bŒ0n F< öܹ‚¥K…©ÅÖÖ:#ºÄ`ÜŒhµµ¥~~MW¯â‹™l¸{÷¤¯¿Æ”” 8Œ 0n F®×—/?^°@˜Š©¾û®õÕ«»wC*dc7/ˆénm}¹mÛ‹Ï>ëjh@!Aß××:#Cí½÷ 8@66À ‡ Ä4¥§çÏž]ñ"¾¨bff•ž>ùðaBŸžÚáFñ¸±&^?ÀXÓÁÆŽ¡_âß<üÃÐFÏƾez@66àúóœJû)*ðâÆvAÁË/¿d¼ù€ÖÖ69vL{íZˆ cŒ€€Ï¯ŽŠ*pt¦bšK—ÚdeA*dcCÆÆ9nyùÓµkË\.Bˆ ªjn™œLÖׇà0À|c0œê™Ý­­ø"eÖ,³3gTÌÍ!2Œ0ß ®×¯_|öÙK__<Ô” ýý­ÒÓ!`¼çTÀ0hÎÈx¹m[gM ¾¨bffzê”úìÙÆ!7CŠÏå¾úæ›ç..oR1 ›øùç67n@*À¸ãÆ`èt<}ZâåÅ.,ÄIººS£¢h+V@dÏ`Ü Awwå‘#O/¦b:6L¿R1Œ€AÇ«ªzéãÓrë¾HÔÔœs‰pãeÜØùóç/]º4H…'&&^ìyœÜ”——WØó[0ôRRÏŸ/LŨtºÍÍ›Š„ÆÔ¸1777‹%¹þ_ÿú×åË—µµµã@RSS«««Øz—¦¦&„²²²‘‘‘¯¯ïôéÓ‡&¶]]]JJo^ÜÇkkkŸ9sNw†Xw{;s÷îú¤$|#“þþwýíÛ1"‚ÙXžS)UxxxWWB($$¤¸¸øôéÓÊÊÊ!==½á:F==½C‡=xðàôéÓqqqÇŽ‚J FMMMbb"¾xêÔ)ç:CŒýøqÉÖ­ÏŸã‹ÊÆÆ¦§OSétˆ `ech Çé÷}ÊçówìØ!Z£²²rLLLaa!…BY¼x±‡‡‰D6ŒN§_¸pÃ0Ÿùóç#„˜L¦d EÂÁÁ¡¸¸˜Ïç{zzîÚµËÚÚúСC4íÀ²v/,,LLLÌÏϧP(ŽŽŽðÆ _Ö©Så‡áO:B鸸˜„‡54 6Iãh¾±ÚÚÚ¸¸¸Y³f%''ã+«ªªòòòâããíìì”””š››÷íÛ‡aXpp0ŸÏG‰Dww÷}ûöÝ»wOØáVUUõùçŸ#„^¿~-§Þ®®®ôôôÆÆFsss Z#‰D xöì™NONN^OÄ7KMMµµµ­¯¯ŒŒDq8©--sîܹ4MMMÍÓÓÓÀÀÿ+~WÖîÑÑѯ^½ ñööÆwôYgMÍsgçWß~‹§bDMM³ØX³3g È2ZÇ¥¥¥‰­Y¹r¥ü]0 ;r䈶¶vVVVQQÑC ¤©¥¥uãÆ†††U«VM›6ÍÞÞ>!!¡¬¬ÌÔÔÔÏÏÏóòòBõõõL&ÓÑÑqíÚµ¡©•VWW¯_¿¾££c„ _}õ•X·nݪ­­]µj•““ÓŠ+222RSS}}}ñ ‹ªªªaaa***\.7##ƒÉd–••Im¡h™!55µîîn±ÆäääHî>uêÔ†††–––ÊÊÊeË– ¯iJFðVä¿þ¢|ÿ=ÖóÐÉ®iÓš|}ëÔÔ¼¡g\]]¿ô7ŠÇ‰šë1ëêêjkkãYŽhò¤££ƒ'1555¡øøxüI2™ÜÜÜÌçóÏž={ç΋Åçó544B=B™+ð,9 ‰'Z[[ /› k¬®®F™™™áÉ¢©©i^^^CCƒ®®.¾/¾ËäÉ“B¥¥¥µµµ’-+S©ˆaƒÁ8qâDXXØo¿ý¶cÇü¸$oJÈÑÝÑñ|çÎòÓ§ßüü#‘̧îÝ ö‡z;ÓÂè76°•á9кuë¶nÝ*\™‘‘‘””äåååìì¼{÷*<õAṟÏçr¹d2Yj™ åƒ>U#žVVVâ‹,‹@ hjjŠmVQQ²¶¶Æ“H±J%µ¯Nê"„ètºÍ¥K—âãã###£¢¢<¶ŒmOŸ¾Ø²¥ãÙ3|QÅÔÔôÌu;»¦–à­à9•ÿ5{öl ´´´ëׯ³X¬ìììŠŠŠŽŽ„ŠŠÊíÛ·+++Ùl6—˵±±!‘Hø…Åààà–¾~àÚÙÙQ(”ìììÒÒÒÌÌÌšššyóæ »êêêôôôÇçææéêêJm¡d±æææOž<áñxo=@‡“žžÎf³©Tªšš¼+è•Úsç –-¦b\]­33Õíì 2€Q ¯¬çTR©Ô   êææYWW·hÑ"33³¨¨¨ÄÄD:Îáp"""H$ÒÆZ¢££MMMñ>§¾E`ÿþýÝÝÝ[·n ™3gƒÁþ•B¡üñÇ;wîìêêòöö–ÕBÉbW¯^mdd´cÇŽk×®½õ;;;ÏŸ?ïææ¶aÃOOOxW  ®¦¦âÏ>+Ûµ‹Ïá „ˆêêfgΘFGÕÕ!8ÅaAAACSÙ7á?„ìñB"WÁÄÆádŠ$giii½×+­­­†©‹|ž¶´´à#Æššš( > EGG@ÀgÓ触¦&555ÑË...ø”­šššb†I¶PRcc#FÃ0L‘äñx\.—J¥Â[Eß¶W®”úùuöü"¢ÒéfßO64„ÈÏRÂcSÈí•ðœJ)$“ž[Ói4šp¥ªªê@Õ(Z¬©cóI›ä ê—ÜL&Ëú#àr_Õ|ÿ=B‘h°{·ÁîÝ0`Ð7JÃÞ‚Ÿ‘lð÷÷Ç{à# çåË’­[Û<ÀIºº¦§Ni.] ‘ŒÊllÀŸS9–Ì™3‚ÀHSñ"3  »­ _Ô|ÿ}ÓS§H'Bdý1œ£øGÎÝ” _w[[‰·÷ËmÛðT #‘Œƒ‚,““!ôŒ€·hø°ÄË‹óò%¾¨lbbK±µ…ÈÌ7ò°bb ?ø@˜Ši¯[g“™ ©`Á¸1®ëõëR?¿Æÿû?|‘¨©952R{͈ `ìdcp7%XÐÉ µ¼Ô*>Våõ›éÄÚ'nòʨå!8Í2ô9¥qc`LÁ§ _‚²cÇŠNtvâ+Œ}|¦?¾^Eb¥±±±Ï) Œ€ÿâÕÕýõá‡Ï÷ìÁS1’–ÖÌK—¬bbŠäêO2ãÆ çÇáÍ›ùŸ~Ê©¬ÄióçOOHP2"T0ߘ<çÏŸ¿téÒà•ßÝÝ}÷îÝ'NÄÄÄÔ××{“/^¼Ø«]^¼x14¯EYYYWWWÎ1x“Eøü—ÁÁ÷—-ÃS1Œ@0ý曹7n@*ãÙê7Öÿr\\\6lØÐÔÔ„/Þ¹sgùòåUUUý,öòåËW®\¼ÃÏÎÎþÇ?þ?À›Ëå ×»¹¹-—¦²²rP›”šššššªøöYYY§NšSåÕ«WAAA=ãxä««« øðÃ<orðV¼ÚÚ¿V®,þö[AWBˆ<<üܹsçÎ{çwB§OŸÆõôôFNãïÞ½ìéé94Õ-\¸°µµõÛo¿Udc …²mÛ¶7borð–Ü=55ÛÚºáêU|Q÷Ãè,_‘ ™±3nŒL&߸qcÉ’%¢ë¿øâ „жmÛ&Nœˆb0†††666 êêê{÷î-((HHHÐ××ß³g¾¾¾°„´´´ .`æãã3þ|„“ÉuêT„PQQÑñãÇkjj/^ÜÙÙ©ÔÓPXX˜˜˜˜ŸŸO¡P<<<Å~áÂ;;;kkk9A–Zˆ"Ñãr¹b;bæáá±gÏž‚‚‚ÆÆÆ³gÏz{{ÛÛÛK=ÔÔÔ&Ož oo ~u²äÀAw7¯N~û­Ùþý‘Á ¥±3nlÅŠÚÚÚ'Ožlmm]_^^^[[‹ÿ¿ªªª®®NøÿœœœÔÔTkkë’’’   ôôtKKËüüü›7o w¯©©IMMµµµ­¯¯ŒŒDq8œ€€€æææ}ûöaÌçóñóòòâããíìì(аðìÙ3:žœœ|æÌ„ƒƒÞæéé¹hÑ"Å´¶¶6..nÖ¬YEEEÉÉÉÂÃÖ®¤¤$µ…D¦˜óï IDAT"ÑÝÝ}ß¾}÷îÝKLLÄw «ªªúüóÏB¯_¿ÖýêÕ«oooÉ×îùóçx>''È’…(=©µ›˜˜ „nß¾ÝÞÞ^^^Îf³á úŒWSó—“Ó‹ýûñTŒ¬§gwåŠùŠÆWßÐùÆÔÕÕ·oß~ðàÁ˜˜“UUÕððp"‘˜™™I$=Êf³oݺÅd2E· SQQár¹L&³¬¬¬¡¡aÕªUÓ¦M³··OHH(++355E)))EFFŠ„ËÉÉ©­­]µj•““ÓŠ+222RSS}}}ßyçMMM<-ëÕ‘bväÈmmí¬¬¬¢¢¢ÿ¾–=µß¸qCj ýüüðDÊØØ8//!T__Ïd2×®]‹zðà@ @ ‚†††–––ÊÊÊeË–âY{MM BÈÈÈH^ǃ´BrrrÞ=YµÓh4uuu‹õÅ_,_¾®B‚>{‘‘¿y3·º_Ô~ÿýé Ê"=â0^úƼ‡láÂ…t:ýÚµkwïÞUd{}}}UUU2™L ŒÉd²hŸNCC¿Jˆ_ù*--Å‘øøøO?ý4%%…L&777ãëèèHÞ”P]]Â/\bfjjÚÙÙÙÐÐÐçÃÔÕÕÕÖÖÆ3E>>222**J´ ü~Ñ»V¥Y²©m“$µö–––ÖÖV}øÖ}Å«©Éß¼¹áÚ5|‘¬§7=>^gÙ2ˆ `xµùÆtuuÅîò366~ùòezzúþýû»»»{[`uuuzzúãÇsssuuugÏž­¡¡‘––výúu‹•'j²à¡²³³KKK333kjjæÍ›'LzƒÔvtt „TTTnß¾]YYÉf³¹\® ‰DÂ/ž·´´à%p8œôôt6›íììL¥RÕÔÔ$SLssóW¯^É ²ÔB‰ž¬Úñêìíí³³³¿üòËû÷ïÃ(îufæíY³„©˜ö’%ó>„T 0Þ³14pó‰Z³f¥¥¥pqݺu¡˜˜˜Õ«WKfo5yòäßÿ}çÎ]]]xw•J ¢Ñh¡¡¡nnn‘‘‘ÂAëRiiiá9ÊÖ­[CBBæÌ™Ã`05ªR[¸hÑ"33³¨¨¨ÄÄD:Îáp"""H$ÒÆZ¢££MMMñŽ+„PggçùóçÝÜÜ6lØ``` u —;wî”––Ê ²ÔB‰ž¬Ú,,,¦OŸÞÖÖVRRÒÖÖ&+/^¼X¹rellìÝ»wW®\ùÛo¿Á[}<twíÝ{éÒ7W'I¤is22”'M‚àF,000((hh*û&üü¡ÎbÃöÃcSð‹•xW™".ÓÒÒ\]]þÏáp””””ú1‘cSS“†††Ø`öÖÖV|âVÅ QSSÔ^11’-liiÑÐÐÀC¡PH$B¨££ƒ@ à³iˆâñx\.—J¥Ê*ÿ—_~¹wï^hh¨œ Ë*ä­ÑÛ1777666<<\N{ÂcSà©á@ —ÅÊwu}™‰/*̸xQ«7w1€âIž™(ž¥„ǦÛ+ÇÅs*Uúý¸_&¹RNZ x!ƒJ²…x*&ÖUUU©»“Édù¹ãúõë…Ýi²‚,«·FOlG2™,?@RKnî#—޲²7Ÿ9‹MOHP™iFxN%è—… MEÓ§O‡T ôJù©S9x*†?wrÎõëŠF ±3ßâ‘ǵ¸taâÃ|±“B}¶Ñ3“f‚Nœƒà “ùõ9Ø+Áx€'÷0tlœköìц mø"mÁ‚II« K Ù˜TC6n ŒÐÏ:νþõ×R£¿ßÃô¿üÒ8(¨ƒDê€0‚Á¸1ÀX àñ˜{÷¾Ø²OňTªù¹s“ƒƒ1 ‚á`Ü`ÔãUU½ððhë™XÍÊÊ<.NÅÌ "ÆÔs*ãPËO–,¦b:6X]¹©`qc€ÑJÐÝ]qøpõÉ“H @TUMŽ›°q#DÙ˜¢ànJ0¼ SvT#·¶¼ÿ=íe¾ÈÑžPàöåŸmJ^VÀ0ésJãÆÀ¸ÓaŒRMÙÙyŸ|©¬Ä'¬\9ýÂ…µ::ÀpillìsJãÆ£LÅ?Üwt|“Ša˜Éîݶ—/“  «þ$30n 0jð¹Ü§Û·WÄÆ¾ùüÒа9{VÏÙ"Õ`¾±Ñ-//¯°°Pñí/^¼(ë¯/^¼èC™ÃEþ±”••uuuõᜄ“jÄâ”—ß[´H˜Š©[YÍ»wR1À0Fƹ¸¸455!„(ÊôéÓ7mÚdii9”âäädbbræÌ|q÷îÝ---ßÿ}oÛ¯¬¬lddäëë;}útEv<|ø°¶¶¶°Þ·JMM®®®’ÊÊÊúõ×_;ÖÛ2‡‹œcA½zõ*66600¤ÀäŸuuuG}üø±¥¥å‰'àsazýçŸyŸ|««Ãõ6l°9{V $ÆÎ¸133³Ó§OoÞ¼ùÎ;?þøã¨{%ôôô¾ÿþ{’’’¸¸8÷:uêÔ?ÿùÏþ×~÷îÝàà`OOÏ,sx-\¸°µµõÛo¿Udc …²mÛ¶7b #óĉÜ+ðT #-Ž™ùóÏŠÆŒ±3nŒD"™™™™˜˜\¸p¡®çtDDDaaa}}ýŒ3ÜÝݧNŠb0†††666 êêê{÷î-((HHHÐ××ß³g¾¾>¾ F£Óé.\À0ÌÇÇgþüù}k˜‚E‘H¤©S§N:5))ééÓ§|>¿¼¼üäÉ“ÅÅÅ“&Mb0VVVÂÒæÏŸwèС“'OÒh´ „***bbb )ÊâÅ‹=<<ðn¡¢¢¢ãÇ×ÔÔ,^¼¸³³SIIÊ‹~áÂ;;;kkk„СC‡„eâÕ-_¾<66–B¡0 ±} óóó)Ї‡‡££#BˆÉdJ6¾ººúÔ©S†Ñéô]»vÉj³¬ze‹d0 óððسgOAAAccãÙ³g½½½ííí¥¾Fjjj“'O†ƒ¨»££ÀË«:>_$O˜0ýâEGGˆ `,;ãÆAmmm|||{{ûÒ¥Kñ•D"ÑÝÝ}ß¾}÷îÝKLLÄWVUUåä䤦¦Z[[—””¥§§[ZZæççß¼yS¸M^^^jjª­­m}}}dddŸ¦xQ]]]éééæææ</  ¹¹yß¾}†óù|aiñññvvv ¥ªªŠÅb!„ðíŸ={æããC§Ó“““…—ꪪ>ÿüs„Ðëׯ¥¾ÏŸ?ÇSU¼ ¼Lüÿùùùqqq³fÍ***JNN–Ü=::úÕ«W!!!ÞÞÞ!‡#Ùxçï›ûÁøùùYZZÊi³¬ze‹dB&&&¡Û·o···———³ÙlxÃ.Læ½ „©˜†­í¼û÷!@ߨÀùÆž?¾iÓ&„Ðßþö·Í›7ã+ýüüðlÃØØ8//O¸±ªªjxx8‘HÌÌÌ$‰Ge³Ù·nÝb2™¢Û„……©¨¨p¹ÜŒŒ &“9eÊ”_~ùà…›9s¦­­í[Û&µ(±mª««×¯_ßÑÑ1a„¯¾ú*''§¡¡aÕªUÓ¦M³··OHH(++355E)))EFFjii‰îž““S[[»jÕ*''§+Vddd¤¦¦úúú¾~ýšÉd:::®]»!ôàÁ@ VuMM BÈÈÈHjã1 ;r䈶¶vVVVQQ‘dÜÐÐÐÒÒRYY¹lÙ2€7F²ñx’·téÒ/¾øß÷Ö­[RÛŒ"Yo}}½Ôc‘Ú„FSWWg±X_|ñÅòåËá*äèò:##ï“Oxõõø¢»»ÕéÓDUUˆ úÆFnÙäÉ“ƒƒƒÉdrqq1ÞÄçóccc·lÙ²yóf&“)š…èë뫪ª’Éd`llL&“)ŠX***xÉ¡ÒÒR„PCCCˆööva'—Ëíå"‰ò‹’¬ÎÇÇ'44ôܹsæææx†ÿé§Ÿ¦¤¤Éäææf|K±T OæBfffxcjjÚÙÙÙÐÐðèÑ#„¹¹¹œÐIæg¢tuuµµµñœRrK à †ººzXX˜ŸŸ~W¦ÔÆã-Ä/†Êo³¬ze‹Ô6ÿ$0 #>¿hïÞûŽŽx*FTU}ïüù÷ââ @ߨÀØqcjjjsçÎݸqãùóçþùgWW×ÌÌ̤¤$///ggçÝ»wWUUõ­äŠŠ aáå%}êö‰'VWWwttà©CYYÙ{ï½'¿(1 åƒ>ÍBëÖ­Ûºu«"Ä—Êž©ÉY,@ÐÔÔÔÑÑAÕÖÖâé)—Ë%“Ébûêéé!„ú:nccséÒ¥øøøÈÈȨ¨(©ÇÓ,ÑÞ5Ym–U‘œc‘lB¨¥¥¥µµF‹®ææ|7·ºË—ñEU“™—.i(Ð £×X›oìã?ž0aÂ… ˜LfGGBHEEåöíÛ•••l6[´ûê­ª««ÓÓÓ?~œ››kdd„g²Ìš5‹ÏçŸ?¾¶¶6%%¥½½ýÝwßí[Q¸Ù³gkhh¤¥¥]¿~Åbegg㙜,ø0²ìììÒÒÒÌÌÌšššyóæ‘Éd‰„_ nii‘šÉ™››¿zõªçp8ééél6ÛÙÙ™J¥ª©©Éj¼°…éééõõõùùù²Ú,«.YÇ"µ !üˆìíí³³³¿üòËû÷ïÃ~„ë(+»ÿþûÂTŒF§ÛggC*€llpáãÆ°@eeå/¾ø‚Çã=zÔÁÁÁÌÌ,***11‘N§s8œˆˆÅ‹¢P(üñÇÎ;»ºº¼½½åoìíí½|ùòk×®mÚ´éâÅ‹NNNüqߊÂQ©Ô   êææ)¼QT*--­ýû÷wwwoݺ5$$dΜ9 !D"‘6nÜØÒÒmjj*+tqq¹sçŽÔK¨òuvvž?ÞÍÍmÆ øR·B¡=zÔÕÕõܹs²Ú,‹¬c‘Ú„PBB‚……ÅôéÓÛÚÚJJJÚÚÚd•üâÅ‹•+WÆÆÆÞ½{wåÊ•¿ýö|4 ½×7nÜ;·åáC|ÑøË/çdf*÷Ü“c44•}þþf±aûá±)øÅJ¼«L‘ —iii®®®Š ÿoiiÑÐÐ@555Q(Eæų|ÔÆÆFMMMáÀpùAee¥èö}+J¨µµÃ0uuu·ojjRSSëaêèè ÊÊÊrvüå—_îݻڇW–Çãq¹\ªÄüORßØØ¨¢¢¢*2Hj›evŸÈ8±6äææÆÆÆ†‡‡SeÏJ›O !^EG?Û±CÐÙ‰"(+[ÅÄödÕ0*àIž™(ž¥„ǦÛ+Çþs*ñT !D£ÑúÖÈ^ä¶&ëÎÄÞ%Díå—RSUáÏëׯWäªTd2Yj.%µñ’qèÕK#ëXÄÚ@&“å§b`„às¹O·m«è™±YyÒ¤™—.Ñètˆ `üÎl 762îïï¯`/ÚP5Ø.\8fÎl-†·ºú‘³sÓ;ø¢æÜ¹3ùEÅÐ"€llè à|ckΜ9#°(0H? ÂZ^f}>F¹ùÍ~5vô[mþ#!"€llx¾GfÛð0tlXTýôSÁþã|õ§40ß¹`î‰ÑŽWW÷hýúÆžTŒ6oÞÌ_]£¯‘Œ=}Ni`Ü`P´ܵ·oÌÊÂ'mÚ4çÏ?•!ŒQýIf`Ü`àÕ¥¦æÌŸßQZŠˆDË£G§ÿôAE"#+ƒ^1Æ$fDÄÃ5kºZZBJTªíåË&»vÁ˜}Æz f´Ð †@wGÇVR¾H±°°ýÏÔÌÍ!20r³14:ï¬ l6[WWWUUuØÛÃðÚ,ƒÈ.Œ“ )¶²ººZSSSMM ÞÌᑋËë?ÿÄ5f϶ýãåI“ 20r³±|N¥‹‹‹’’ÒÅ‹»Í</111%%¥££ƒ@ ðù|MMÍ””¾ÞÚÕÕ¥¤Ô‹—†¢¢Ô‡ˆ555 ?þøc/¯zc]]ÝÑ£G?~liiyâÄ ÑälçÎjjj,ëoû›§§'¼Ÿ‡Qû³gV¯f¿x/껸Øü?{÷ŵöü,, K‘*"T¼X"¢!x£‚rƒ5j‚ +K° Q®‚]®b‰)*Fc Š1¶4Æ«ÄEŽÀÒË–÷çÝ»eXzñ÷ýøÇìxæÌÌ3g†gÏž™ùî;UdÉí<눽bÿùÏnܸ1iÒ¤9sæèè褧§¿¤Ïo>¾¾¾yyyçÎS~í.jˆ÷íÛ÷w ÚÚí6æZZZË—/¿{÷î“'O$çïß¿ßÆÆfåÊ••••3f̰µµ}ÿý÷qJ·‰¢;wžL›VG‡p8[¶ô À@1€‘7öúõëÐÐÐøøx--­1cÆ,X°@MMe¾¯¯¯žžž½½}XX‡ÃYºtéÈ‘#¥*ŒŒŒ477_±b‡Ã!„ôíÛ·oß¾ì«óòò²´´ôóó#„,_¾¼[·nþþþÌê\\\Nœ8¡¥¥åëëkiiùÃ?$''‹D"OOÏ5kÖóÍ7‹/¶³³cÙÓòjA#⣪ªÚ³gOe"F7uäÈ‘'OžÜ¾};—Ë INN655õõõµ¶¶>qâÄýû÷ýýýÍÍÍ !—.]JKK[»vmzzºTIÙÚ,,,Ø·“Çã½÷Þ{R3«««£¢¢ÂÂÂh‡«W¯"kYß}¿x±¨¶–¢Ò¥Ëào¿í>k ¼Nû¼±ÚÚÚuëÖýõ×_K—.µ··¿pá±cÇXæB²³³Ÿ>}zýúõaÆÔûðCD #ec-ú¼±œœBýŒÃáôíÛ·®®îÍ›7ŠæÓ¥tuuéxúÓXZZšd&&&„Ç+¿:ö466600 Y X,–›®©¨¨pêS+±ÿS” Ÿ:uêÔ©S´} iöœ——G9sæÌ§Ÿ~zñâEuuu>ŸÏår ž={vóæÍ>ø@[[[nI©ÚÆ­¢¢‚IÎ q>·šÚ‚‚ÿŽË<ÉÂxâD»ØØ.2?(€2:í¸1úךùõ*77WEE¥k׮пK-þúõkBÈÀ%gZXXp¹ÜäääÂÂB###eVG? BŸÏ¯©©Qfãåff,ê¢F„HUUÕTâéJFÆØØ˜2uêToooÉùcÇŽ½zõjddä£Ghg›¢’ÍÂØØXWW7##ƒ£W¯^1ø ¥U$&ƹ¹U¾½Å|åJ«}û8ªªˆ @ãtžqcuuußJHH c’îÝ»—––v÷îݼ¼¼?üP]]]Ñ|ZINNNddäóçÏ=zÔ³gOšO0ŒŒŒ¦L™Bñ÷÷ÿã?òóócbb8P]]ÍRm¯^½RSS###·nÝ* ëÝ‘~ýú¿xñ¢¶¶öÞ½{K–,ùïÿ[Ͼ Eìÿ” {dÇ×ÕÕ½qãÆ­[·rssïÝ»G3WkkkSSÓ[·n …Â#F°”lªªªüqDD!¤¨¨(66vâĉ8Ÿ[AÁO?ý6|8MÅ8jjƒ¾þzÀÁƒHÅš¢“yòï:dȰk׺ôê…È4 ¼§òÿùùùÑŸØ:¼Z” ¬ìÉôéo¢¢èG#W×÷ÏŸç¶d† €l¬õ4︱¦£cÏ€Q“ýØÍ­ìí;©Ì<=;Æár€fÔiŸ7MTÿÀÞžIÅ,üý}ý5R1€f×ùÇAÇ…|½ uMMtò0·ª’"VQIš6ç-3²û+D ³ec¤=ƒv…fêÊÜV Í.÷Â…ç[ÿ#ª®&„¨éëÛ\¹â:jÂÐ ³±ö6n Útš¶M*vôhÆæÍD$"„hôêeyþ<±²Â±h97o‰D[¶dlÜHS1ÞàÁÿˆŒÔ´²B`:m6FÞþ…ÃÐö™XMMÊ¢E¹‡Ó]þñÓOê ž«'#è!h%%‰Ó¦ýø#ýh4k–å?¨6ðõ Ðñ²1¦W ãÆÚPmVVÂÇ—Ý¿O?öX½ºïáÜø$ddc †^1€6W?n\Õ_BˆŠŠùÎ=7o&J¼ :C6F0n  M•ýö[‚›[mN!„£®nqì˜ÉâÅ À»•ô´Õ©÷óωӦ ù|Bˆª––åÙ³†Ó¦!,ïV6†qcm¥àÌ™”yóþ~¾«±ñ€«W»::",ï\6†^1€6‘’¶r¥X „hôéóŸÖ²±AXÚJg{O¥’ézãà%glÝÊ77W$‹ÅâîÝ»wûb¾œœœ#GŽüùçŸÇÞÞ~Íš5t~llì‰'´´´|}}--- !ééé!!!ÉÉɦ¦¦¾¾¾ÖÖÖ„¤¤¤}ûöååå3¦®®ŽËý;Ô^^^–––~~~„åË—wëÖÍßß_j“äVèëë«§§7räÈ“'Onß¾ÝÂÂÍ”JÅŠŠþš<¹òÏ?éG3??³õë€ö£>o¬¢ZÈþOªüСCÍÌÌ=s挭­­Æú€rjsrÜÜþNÅTT̃ƒ‘Š´7pÜXyMÃúƸ\îþóŸÀÀÀ¸¸8__ßÕ«W;;;?|ø077×ÉÉÉËËK²0‡Ã 600ˆMJJ"„üþûïoÞ¼™0a€ììì¾ÿþûW¯^éêꦧ§;;;Ož<™'‹•ܹöíÛ—nêÁƒñöPRujjâ´i5é鄎šZßÐP<ßÙØÿh¡qcµQCÑÑÑ ?~üøîÝ»mmméè±J•466600 „hjjÒ+//ræÌ™³gÏBÔÕÕù|~jj*!¤_¿~Ø~¹Òÿ244D*Ê~-yô(iæLAq1!DU[»ÿ™3º£F!,ÈÆ¤µÄ¸±º†gc„‡3uêÔ—/_FFF¾xñ‚&=´÷‹±±1!dêÔ©ÞÞÞÌÌ?þøƒB‘‰D555ê7¯ BŸÏ¯©©Q²B€áß½›2gް¢‚ÂÕ×·ºpAkØ0„Ù˜|ÍÞCV'lX6ö矦§§ÛØØ‚øøx‡Ó«W¯®]»jiiÝ»woðàÁ¶¶¶ÙÙÙC† ‘»øðáÃuuuoܸaaa1pàÀ—/_š››4HMMíöíÛæææ?.--522¢å{õꕚšyýúu¡P¨d…={öDceÏ©ˆˆooqM !„kd4àâEž‚Ö íA'|Oe­@ÄþOª|ffæþýûçλpáB •+WöîÝ[__ëÖ­ZZZ{öì™={ö·ß~«hu:::zzzAAAsæÌ9xð`AAššÚ¬Y³JKK>Ü·o_c‰gO:•:qâD§d…h© ¤¢+WR-¢©˜Z·nÂÑŠ´spÜXCûÆ\]]œœòóóµ´´$Ge 6,,,¬¸¸¸K—.ššš„z%uêÔ)fzðàÁß|óMYY‡ÃÑÖÖ¦3çÎ;cÆ  Ï>ûŒ)ìææ6vìX.—Ëår™ù’•Ë­P²€\gμúüs±PHÑèÕËêòå.x ²1v-1nìÆµð†.¢®®®è§@åGÍëèèHÍ¡9œ¬.]º4®ByǧoØ@ÄbBH ‹ááêff ²±ú5o^ïh*vⓊñ¬­­._VëÖ aè:á¸1€wMÎé~~4Ó6l@DR1dcJiö§ð¼ƒ^fnÛF§u>üpÀ?rñP:dcÊ£ãÆpC,ÎØ¼9{ß>úIwÔ(«‹U1ÜÙXC¡‡  q©Xúúõ¹¡¡ôSWGGËsçTä=3)„qc$¥­Z•÷ÕWŸJÿú—å÷ß«(¸‡)„^1€F …©+V¼}âá´iý¾ûŽ£¡ÈtPøycô¥Úï¡PûÈõû÷駇ä©S“oÝB`5^ãž76{öl¾ C¤b/-*ºr…~4ñö6ý÷¿‹KJ€ŽãÆ:H*æíͤbÝ—.5 B¯²±f€çÔŸŠ …©K–…ÿýÖîK–¼ˆ° k6è!`KÅêêR<=ß\¾L?öX½ú½;Ð+€l¬yàycõ¤bBaêòåÅô£‰—WÏM›dcͽbõ¤bK—¾¹ø÷9ÒmáBóà`ôŠ kf7 ŸH”¶b“Š™xyõÞµ ©²±2ÙT,Õǧð‡è§îK—š#@6Ö0n @±øÕÚµ…o_5ÑmÁÜA €l¬¥ W @VÆæÍùß}÷w*6~ïÝ»Ñ+€l¬aÜ€¤Ì€€Ü#Gè´ñœ9½÷î%** ²±–…2êu``NH6œ1£Ïþýè@6Ö²0n àÿS±;³÷íûûÔ˜8±ïáÃè@6ÖâÐ+@eïÛ—½{7Ösqé÷ÕW.a@6Ö0n ÷èÑ×oïšìêàÐïÔ)Žº:€l¬õ ‡ Þe§Ne¼}ÙQW˳gU44dc­ãÆàWôã¯Ö¬!b1!DÇÞ¾ÿ™3¤bÈÆZzÅà]VýrɱPHÑ:ÔòÜ9MM„ÙXkø1x7ñoÞLž3G\WGá 2 <\UGa@6Ö6ÐCïš²ß~Kž7O\[KéÒ¿ÿ€‹UuudcmãÆàTóêUòܹ¢ª*Bˆš‰‰Õ¹s\##„ÙXÛ@¯¼kêòóÿš6Mðæ !„«¯?àòe>}dcm ãÆàÝ!äó§O¯IK#„¨jiYž?¯ù ,€qc­ATU•8kVå‹„Žºz¿Ó§µmm 7Ð Äuu) ”ÿþ;!„£ªjqôhW„Ú>C¯¼¹˜8måÊ’¨(úé½; ¦LAT ]dcãÆà¹m[á?Ði³uëL¼¼hGÙAtjyÇç––BÔÍÌúŸ:ÅÑÐ@X £fcãÆ C …/½½«_¾$„¨téÒ?,LÍØa€ŽôAÇ‘¹u+ÿæMBQQ±øê+­÷ßGL cgc7HÁ™3¹GŽÐi³/¾ÐwsCL Ãgc胎¢òùóôuëè´Þøñfx)8tŽlŒ`Üt‚ââäyóD••„MKK‹ãÇ‰Š Â$#è!ƒvN$zéí]óê!DUG§ÿ™3x%tžl ãÆ ý{½s'ÿÖ-Bápú††v±°@L ódcèƒv®øçŸ³÷í£Óf~~¹-#7íXÕ_¥z{±˜b0i’™Ÿb0#è!ƒvIXV–!„ÃåZ?Ž—QÀ;—¡W ÚPå‹Y»vÑi3??m[[ÄÞ¹lŒ`Ü´QuõKooqM !DÛÎÎôíÐ1€w.#è!ƒ¶ðzÛ¶ª¿þ"„¨jiY„†rTUx³1Œƒ6Qú믹ÇÓé^Û¶iô郘À;š¡W ZŸ°¬,ÍLJˆD„®ŽŽÝæÏGLàÝÍÆÆA«Ëظ±&#ƒ¢ÚµkŸÿü‡p8ˆ ¼ÓÙA´¢’èè‚3gè´yPzˆ ¼ÓÙÆAk––¾Z½šNLžl4s&bïz6†^1hM[·ÖfeBÔŒ{ïÙƒ€²1B0n ZK鯿œ>M§Íƒ‚¸††ˆ ûzÈ ¥ ËËÓV¬ b1!Ä`ʃ©S@6FÆAkÉ ®ÉÌ$„põõ̓‚@6ö7ôŠA+¨xú4ïèQ:ýÞŽjݺ!&€lìÿaÜ´(±Pøjõj±PHéêä„û(Ù˜è!ƒ–“ÿõ×üAQéÒ¥÷îÝ û7-ª67÷õ¿ÿM§Í6lÀû(Ù˜4ôŠA‹J_·NXVFÑzÿýîË–! €lLŒƒ¿}»8"‚B8ó  Žª*bÈÆäC4;QMMºŸ6öðж³CLÙ˜7-$çàÁêÔTB×À ×Ö­ “½bÐj_¿Î9xN÷ܲ/Adcl0n š]ú¦M¢ª*BˆÖ°aÝæÌA@ÙX=ÐCͨìÞ½âk×!„Ãyoûv¢¢‚˜²1…0n š™H”¾i};¸áÔ©:öö cƒ^1h^…çÏW>{FQáñzmߎ€²±úaÜ4QuõëÀ@:mêã£njŠ˜²1¥ ‡ šEnhhmv6!D½{÷î+V €l¬~7Í¥.//gÿ~:ÝsófU--ÄÕ½bÐ\²÷íVTBxƒÍš…€²1eaÜ4]ujjþÉ“tº—¿?žjÈÆ=dÐDYAAâÚZBˆîèÑ]œ@6¦,Œƒ¦«JHxsù2î¹iÈÆ½bÐt™Û¶‘ˆ¢çâ¢=bÈÆãÆ )*ž<)‰Š"„•ž[¶ €l¬1ÐC–ļ‰7hÈÆãÆ )*ž>¥cUU3??5zÅ )²wí¢†Ó§wéßdcqcÐ8U‰‰Å‘‘„¢¢bêë‹€²±ÆC4Bö¾}ôVJƒ 4 @@ÙXc`Ü4NÍ«WE?þH§MW­B@ÙX#¡W '74T,Bº::j½ÿ>ÈÆãÆ ¡êòóóOŸ¦Ó¦ŸŽ€²±¦B4HÁéÓâšBoÈÝQ£@6Öx7 %®­Íÿæ:mº|9ÈÆš½bÐPEµ99„õîÝ &OF@ÙXSaÜ4HÞ‰t¢Û‚uu5ô’*ž>-ÿýwBGCÃxþ|5ÆAƒœþ˜‹Ÿ¶ÙX3¸1¨ŸHôæâßY»Ñ¬Yˆ kfè!v¥÷ï×feBÔŒ»::" €l¬Ù`Ü(£èÒ%:a0e ‡ËE@ÙX³A¯ÔK,]»F§ gÌ@@ÙX3ø1`WvïžàÍBˆº™™¶­-ÈÆšzÈ€EQDП0p8 kN7õ‹K®_§“& €l¬™¡W ØU>^››KáhÛÙ! €l¬ùaܰåë?ÿL'ôÆÇÝ”€l¬Åþ⢇ àß¹C'ºŽ‹h²±æ‡qcÀBÈçWÄÅBˆŠJW5?ôŠ‹Òû÷Å!DkèP®ÈÆZÆ"e±±tBwÔ(Dµ ô\¥L6öÑGˆ k7ŠËʪâã !UU<ÛµôŠ"qqb¡¢im­ª­€²±–‚qc ?ûã:¡=|8¢[Û?Q“öIýX‰>³wœuøOÆ„B~-]@cdc-D__¿¸¸˜üï¸1Ú[¶ã‹E86ï²_WB™¿ÁWׯ€Î*  Ý× ,/¯JK#„¨¨«kˆ€@çÖÆ¿TÒž0ÚCƤh8*︊?þ‹D„¾}ù¤¢1€ÎªºººŽ“äââB‰ŽŽVô_²ä†Ž¢*)‰NhZZ"ÐéµÓç1ÿåââ2hÊþASö¯:ü‚üïï˜úúúÑÑÑô%ÿ=zôH¶Lw éšW¯èÇ.ˆ ¦1iLcºsO“vû¼1ú_4cf®:üBr:½ù ɿۜÞûôòù„a))\:±6îÃ{*A‘HXVF!**\==Ä:½v÷¼1ägïz‹¬ªü§HD¨kìþæ2Û½¸øö;n ÞMªµ5tB¨ÑÑ€NïŸÃ¬‰¿¿¿¸µlØuœN1Œ »Ž3e$…„„,Z´ˆN§§§ÛÚÚVTTÐaaa‹/–,|òäÉU«VÉÝÉz .ÌÈÈ`¯ùÇtqqÙ°aÃÏ?ÿ,‰ÕÀ² B¡pÓ¦MÎÎÎK–,‰ŒŒd‰Ëö/[¶ìÔ©SÌÇû÷ïÿõ×_Êì£lRË^ºtiË–-_|ñE^^^½ëeäää >¼¸¸øÏ?ÿ\½zuPPÐîÝ»Åb±Ï/¿üBËxxxÜ»wïùóç|ðÁ›7oèL77·¨¨¨ŒŒ ÿ™3g2º¹¹ýyëÖ BnòKŸ>¿üò‹ÔÁm„õë×?þw£rwwŸ4iÒ­[·?~lkk»`Á‚û÷ïGGG;88ÔÕÕ‰Åâ+V„……ñùü+VDDDˆÅ⊊ŠY³f]¸pn¼lÉj™d¸»»Ï˜1ãÎ;<˜8qâ¥K—d‰D³gÏÞ¾}{QQQttô?ÿùÏ„„ÉõÊ-  gÏž½hÑ¢””>ŸŸ——'·]s8ä†åçŸ~ýúuQQÑØ±cŸ={&‹Ï;·|ùrú¿çÎÛ´i“Üb’D"Ñ”)SþûßÿÖÖÖfee)ªY™£À4º# = nnnÇŽ;uêÔœ9s>|HgÊ­DÑüñÇ—.]úóÏ?ííí_¾|)‹7mÚdooÿý÷ß3¹Åm*ÝfB¶¶6 Ü Kë’\véÒ¥Û¶m+--}ôè‘££#³ Eû%w³e Ë6ûE^î) ä®±ÄVvíÊ7$IÎÎÎüñž4iÒ½{÷¤®?²-GRppð† ˜6ëÖ­?ü°´´T,ïÛ·ïÊ•+NNNtcšåBçææ¶{÷¨¨¨(æ”?yòä”)S*++úé§… ŠD"¹‡LQý²––C&a¹íYÑöËtö µ¢+ÜL†%5ò÷÷ïãÆnß¾}óæÍ   ú±¼¼œÒ¥Ëß'tNCë¡JKKù|~¯^½ØkvppعsgïÞ½CBBBBBÕÀ¢ªª*//ÏÞÞþÉ“'Ïž= … ×­[·²³³gÍšÅ̱···²²ªwå’Z¶°°°  àõë×)))õ®—ѽ{wSSÓ¸¸¸§OŸ2dРAÏŸ?¯­­}öìÙðáà !ÉÉÉ………~øá AƒzõêuýúufÙ€€€©S§&%%}ýõ×’uª¨ªÒ‰ºÚÚz÷¢®®.é‰D"öE,Xàää4lØ0·`Á{{û‘#G–••VVV>}úôƒ>())*ÃÛÛ›ríÚµ 6ܼy“YK½ëµµµ}ôèQQQÑ'Ÿ|bhh¸}ûö‡öë×ÇãB®^½ª­­}ðàAšÝFDDxxxÐ×­[gll¼fÍš¼¼¼¾}ûþÿu•¿¿!”–”èÕ—³òùü={öHÎ9pà]µ"Lp8}²ÊÛ5>yòD lß¾~”ͰY )Z£††èÝ»÷¯¿þ*»Hnn®¶¶6“ÁXYYåääHÖ ·@^^žŠŠÊ!CØ‹)sô£££ïܹSUU•’’âääD144´±±¹uëÖˆ# ììì䓲cÇŽM›6ݼysË–-ô¤P´ËQ`Z£ÂÌ™3]\\N:5{öìÈÈHE•(Úà÷Þ{NHžóçÏ1bÄêÕ«?¾råJÙbõ¶(IRµµŸÐÕÛº˜eŸ?Þ¥KSSÓ56–Í–-,Ûìå E^™]c­lóhPCj9ÎÎΑ‘‘¦¦¦ýû÷§ך÷B÷É'ŸŒ?þ¾N«¨,Y²dÑ¢EîîîôÂ.{ÈXêgi½J²EXvûe÷Q™ u½§»Ý'.ª·y6FXßS™ššêïïJ¿ÎRÆÆÆººº$„¼zõJòo¹\rë¡bccé÷~%k:t¨P(,..611‘­ÅÇ7oÞL2dˆ‡‡GLLLƒ²±k×®•––Ž3¦û¨¼1cÆ$&&4HÉõ6ìôéÓ•••šššß~ûí‡~H;®~þùçY³fÑôhüøñ‡Š·¶¶&„hjjÚÛÛ»ºº|÷ÝwÌ_ަæßgumí?üÀ¾ÁFFFÇo®¦¨§§'öîÝkll,õ_b±˜½€2ÒÓÓ‡*7A,///..¦\ÓÓÓ»wï.¹^¹ºuë&‰’’’˜ƒÅR{Ç€¿¿ÿ?üЫW¯eË–1óÇwíÚµ‚‚WWWEÅ$ 0àüùóaaa~~~7oÞ|õêU½‹4"hM9 Ó§O }øð¡‘‘‘l%Êx-€û IDAT죔N›6MÑŸ†n*S[#¶¤¥C§Lë²´´¬¨¨(**200‰D²¿Z(³_ÌfË-,Ûì›ùFœ8ŠÎåF7$íÝUUURןÆecGår¹&Lh H$:r䈳³ó­[·-Zdll,{È”©_*ÂRhܵ®‰Zz¥íô=•TPPÐG}Ô½{÷òòòòòrÚLUUU?þøãˆˆBHQQQllìĉÙW$·Únž'w½R}c©©©úúú]ºtáp8ÖÖÖOŸ>¥Ùد¿þÚ½{w//¯O?ýôÓO?;wîðáÃ¥~;ûüóÏsrrNŸ>ÍÌQÕÕ¥Ýc]‚¸ÿþ·Ñ—¡F°²²277?yòdMM !¤Œ>hƒSSÓ´´4–R¾ÿþûÛ·o3ãââÄb1ŸÏðàíd’MbLLL®_¿.‹_½zõìÙ3šþ2ë•[€nÌéÓ§KJJ„Baaa¡¢zmó#µ®®®‰‰Ijjjnnnee%ïääN¿l(*ÆÔYWW÷òåKzBjkk-¢ – 5î(гõܹsb±xàÀr+Q~ƒÓÒÒ’““i Šº^”ÜTÙÚÚ6t’‡z[©ÔŸ+KKË;wÆÄÄlÞ¼¹¸¸˜~ËbŽË~Én¶Ü²;A‘—{ (³kJžËìçT½ ÕÌÌ,))©²²200Pöú£L;—úiø½÷Þëׯßü1zôèf¿Ð)Ú4jÔ(:*]ö±Ô/7²Pþ)jÏР•v°l¬ÞqcqqqW¯^ux+##ƒÎ_¶lÙË—/===çÍ›çííÍô`¥¤¤¸ººž8qâÁƒ®®®áááìõÄÇÇ÷ïߟùÍ‘¥æÃ‡{xx|úé§Ož<Ù¹s'ÓâekP´ óæÍKHHøä“OfΜYSS³bÅ ÙýU´liiiRR’³³³Tù&¹Q´Šê”\võêÕîîîçÏŸß²e “%+Z¯¤=ztïÞ}ðàÁôã Aƒ´µµiçâ•+W¤ÒY77·7nÔJ ÓÕÕ]µjÕ±cÇþÿdSUåÒ ‹?üÇ?Z³AªªªÇÅŹººº»»Ó¾LBÈ”)SÂÃÃçÌ™£¨€”+W®ÄÆÆ2³³³g̘1eÊ“>úH¶¼ººúŽ;Ξ=;yòäÏ>ûlÖ¬Yÿüç?%×+·€ªªêÎ;“““'Nœ8~üøððpEõ(Ú0ÊÎήGãÇpvv £Ã\tuuíì쌌ŒúõëÇRŒ©³ººÚÇÇgòäÉ‹/^¼x±ŽŽŽ¢E”Á´Æ…­[·Ž9266ö‹/¾044”[‰òœ0wîÜI“&M›6ÃáП)•oQõÖÖ¶¡“¼8ÔÛJ¥lÛ¶­¦¦æÌ™3...ÆÆÆt.s,XöKv³å–mö мÜS@É]Sæ\f?§êm¨Ÿ|òÉ‘#G&Mš4dÈæ;?s¨wñÜÜÜHðóó dÆC7ã…ŽðÑ[ñññ©©©ßÿý–-[èz³³³OŸ>-{ÈXê—aÙ(ȵg¹ÛÏ~f5h¥r¹¸¸¸¸¸(üï6¼§RöÎJE÷TÊ•••ÅÜÿØ8GŽ‘½åGnÍÕÕÕ©©©ôæejP¤°°°‰ÛÜD"Q^^^vvv;ÙžûÇÓÛ*‹~ýµéµ-^¼øçŸnÐ"ÅÅÅÕÕÕ’sêêêJJJX (B節­åóùÊ4@À²^Ùb±øÍ›7ô~:öbìaa6Oru²ê-F¿þ6h‘FMù£Ð J”Ü`@ðêÕ«ªªªÆ­E™ÚÚgè”i]ôª>bĈÄÄDeZËf+ ‚l³oèžÊ^Øw­AçrãŸX,®ªªª­­•š)uR]]qùòeGGG©»û[íB§ ÙC&U?K„E@ÉÖØ¼”Y)Íd$S[ ²O“ð÷÷o×ãÆØ5ôÇ>Y•••r¿ßÈÖ¬¡¡Ñ§OåkPD™Z‡Ãa¾‡µÚ”>z¤eiIšö3åÞ½{y<ÞË—/é/§ @&5‡ËåvíÚ•¥;555e†”Ê6©õÊm?²7m°73¹aÑÕÕ¥’«“Uo1ÙùJÖ܈ é5Ç«d+QrƒUUUÍÍͽejkŸ¡co]ÇÀÀàæÍ›ŽŽŽ–––Ê·"¹›­¨°’÷*ÉÝSEWe®ÏJžË>|’XŠ®R„BaLLŒ™™ÙÑ£Gë½»¿E/tõŽ»RæèȰ¢´ÉŸÔF¬TªKÌÅÅ%::Zúq{{O%!„–ö)Ræ–õ64ž5]{òäIVVÖèÑ£™›‰ZßÇ-,,ÚUÞÂÒá‚ÖQ´yè222RRRŠŠŠÌÍÍGŒÑ>7»q§š%Nü†f;4ÃQôë$“í>qQ½"«-ûÆÝ+ Œ¡C‡²Ü÷Ô:>øà„¥­£hóн÷Þ{Ì#Úíf7î@³Ä‰ß8²Ý`rµ÷çAû4¾ou”«]uÑ4E{O¥P(ÌÊÊ’û_999Šî–MïXêiPÍ Ú/Ù™•••ôùæX¶^ìûÈ^gYYYff¦¸Ms,@žž®ä›:¥S§N¥¦¦¶Îºêêê222ACWÍ”lÍ­…Vk0h ím/\¸ðâÅ‹Îqž6ËÙÝš_ üüóÏçÏŸo' ¸E[H#–j˾1¦WLÑ•;vìxòäI÷îÝsssçÏŸOŸcD‹Õ«Wóx¼ÜÜ\777OOO:¿  `Ïž=ÏŸ?·²²Ú¿½õ0¦L™röìYMMME5‡‡‡ïܹ“>É‚¾þEQ жA$mÞ¼™ÏçÓמ„††2f(ZvõêÕ’k433»r劒±RT§Ô²ñññ†††iii^^^“&MR~½&L¨©©ÑÔÔ$„¨««_¼x‘™YWWgnn>qâÄéÓ§K–_SSóŸÿüçÖ­[}úôÉÏÏ×ÓÓÛºu+ý½CÑ" ²aƾ}û.ZÔNÇ#N›6Í××wôèÑW®\éÝ»·Ô3‡'L˜P]]-‰¬­­=<<zG‚\G޹}û¶¾¾~rròöíÛ?úè#¹«–‹)ÉL¸¹¹ùúúŽ7®Ód9r[u ô¦T"÷¨5±æF´„–;[ETT—ËeL³œÈÈH&éa(ZvÏž=ÌÓ\CCCåö)ÚGEuJZ¿~=}Hã­[·BBB˜ Sf½„µk×ʾ\ÂÏÏoìØ±wïÞݰa},-Ëü½{÷fff^ºt‰>µÿÔ©SK—.½téÝEU)oóæÍªo_Ù8‹-š6mš««ks5~É ¿ýö[Í·o kݺucÆŒ9zôh``àÕ«W¥Þ„ÓP©©©/^¼v횦¦¦P(¬««kÑÓ¼ÙC×:ë’Ûª›Q½½ÖÜ:Z³Át>­|v+ïÁƒ¶¶¶ôE,Ml¢J.ÞáN„6þ¥’ŽSô¿ÌcLLLø|>}SDuuuTTíûáñxW¯^¥Åx<žÜ¤rëaÄÆÆÒg¸±ÔÌŽ©eTTT^¼x‘ŸŸ_WW—••%÷{˲\.—ËåfggGDD,]º”Îßµk×åË—Ù÷QQ’Ë2Ý333{÷î]ïz•m[**ƒ ‰DRr–šŸŸŸ¾bÅ æý’ªªª’ýpŠªRÒÑ£G™C¹råÊ_~ùÅÏÏÏÙÙùСCEEEË–-suu=wî-ðúõk///???úƒõ±cÇþüóϸ»» …BÙ´ÚèèèeË–mÚ´Ijížžž tzÙ²eqqqRnÞ¼™%W¦ÔÕÕ{öìÉãñèÁ’» _}õ•‡‡Çøñã™W®\³iÓ¦qãÆíÝ»—vÓ–••ÑÇíªªª2ßLªªª$‹)Z Ùu5"t+W®¼}û¶¯¯¯££ãºuëk–Ã$y(³wRÛ)ù1''ÇÇÇÇÑÑqúôéÌ ]–VÁtÙ mݺ5**ŠùÊêááQWW'·~Æýû÷—-[FŸlÎR3!$##ÃÓÓÓÉÉÉßßíÚµrÇ—––ÊÆŸ¾ÌÍÑÑ‘y½ Ü6#±&žkrW!7¯_¿fö‹y‰;Ë!–]µÜ°Ë=§Ú3¹g·ÜˆÉ^—ä¶êU«V9997îÒ¥KŠ® Š‚Ï ‹ŒŒ¼r劻»{aa¡ìOnµŠŽ{ W²X½·Öo!í}ÜnccCó¶üü|@À<¬GÊ“¬‡qïÞ=Ú—Ë^sllìÆoܸ!q¦cÆŒ6lØgŸ}¶råÊ… 6®—;88xîܹÌö5Š>õ¾Þ}”%µìåË—·nÝ/ûgCv½Rž?-9?33344Ô¢ÿþ,ó™—ÿHæ^VVV)))õV¥¤ÂÂB>ŸO§³²²öíÛçêêºk×®ï¾ûníÚµsæÌY»ví±cÇè0‹àà`GGÇ«W¯VUUÑWŽÌ™3ÇÜÜÜËËëĉô)ÒRhµ‡š>}úš5k¤Öž™™IÿLÒbÕÕÕRfeeI}C’––vúôéððð/¾ø‚9"²ÛЫW¯àààsçÎݽ{—º‘••lkk{àÀK—.¥¦¦öë×oܸq^^^gÏž•lÌ!!!’Å­……캺¬¬¬£GN:5(((!!áÆr‹5Ëa’{)jÕ²ÛÉ|‹ÅkÖ¬111¹|ùò’%K¾üòKúìu–VÁtÙ  8ùòÕ»wo.—+·~&ÁúòË/}||èà–š !AAA}úô¹råʤI“âââä~½9uê”TüÅbñþýû}||¢¢¢.\ÈÒf¤ö±‰çšì*…:((ÈÊÊ*""büøñYYYLÃVtˆeW-v555¹çT{&{v+Š˜ìuIªÅŠD¢5kÖTTT|õÕW/^5j”¢k‚¢à3ÜÝÝGŽù¯ýëĉ²W<¹Õ*:vì-\Ébõ^ÜšÞBhn£Ì¿¶ÏÆê}O%uûöí›7oÑô÷2æ ½†††’ã¾¥êa¾òù|úÄ<–švîÜÙ»wïE5°¨ªªÊË˳··òäɳgÏè×¾¹uëVvvö¬Y³˜9öööVVVõî£\R˼~ýZ2R´^) 111111¹¹¹ÌÌ€€€©S§&%%}ýõ×’…eç«©©I½^MGG§¤¤„½*ª®®.éÕûŽÎ 899 6ŒÇã-X°ÀÞÞ~äÈ‘eee………•••OŸ>ýàƒJJJüøñcÚ¿Èårµµµ ä æÍ›çää¤ÌC)%+TæÐ?|øðüùó<¾BTÑ6¸ººš™™éëë÷ë×Oò¯õìÙ³ÝÝÝ­­­ÍÍÍ !ÞÞÞ!!!ëÖ­c¾ËJcÙSR•4.t‹-rpp°³³sqqyøð¡l±æ:L²g{«–ÚNæcbbbRR’§§§¾¾¾³³³µµ5ó&eZ…TМ?~Lo÷ùé§ŸÜÜÜXê///_³fÍÊ•+ÿ!ï5bR5WTTÄÅÅyyyéèèØÚÚZXXpäÝ›,‡CÇË …BɇcË6­f<×ä®Bn(jkkÿøãyóæiii9Rr¿äb¹«– ;Ë9ÕžIÝ,G.©Vííímaa¡««Û­[7¹qc ¾äOCCCSSÓÀÀ@v …¢³•åôT¾6îâÖ,-ä÷ôêÑ.”ùGË·÷çýöÛo8räsrÒ‰ŠŠ úà¾òòre'[óc¶½½}½5ëééÑ/]º”y7¥d ,öïß?bÄooïéÓ§¯]»ÖØØxÞ¼yÊÇJ(†„„øøø°<ZÑ>*ÃÛÛ›ríÚµ 6ܼy“Y‹2ëýä“OdGج[·ÎØØxÍš5yyy’²óMMMkjjþúë/:¤€É™ßLUEñùü={öHÎ9pàó£§\L|8ýJÀ\ ž*"¹lii)Ó¹¢¦¦&™ÏÉ]¯ò>ÿü󜜜ӧO³Ì×ÖÖþôÓOüñÇüü|Ò={ö˜˜˜8;;+SUó²²²277?yò$QÁŒª155¥ãÛòý÷ß3cÌÌÌ’’’*++e+¬wq¦¥;wN,8Pî6êêꚘ˜¤¦¦æææ² ºOKKKNN¦u&$$(ú&ªäžÖ«¡¡#„ÄÅÅÑ—.?xð€~m¡Ã$y4Å€LLL®_¿.‹_½zõìÙ³F|‘äääN¿é±Ô¯©©¹ÿþÇ+óÄÀÀÀÒÒrçÎ111›7o...–{®lüëêê^¾|I¯ôÇ©V8×”uß¾} üñG@påÊúªr–C¬hÕRaWþœj?dÏnEGîuI6J§OŸ.)) …………rãÆü&¶„æ:=qqk“Ò®ÇÅÅÅ]½zÕá­ŒŒ :Ù²e/_¾ôôôœ7ož··7Óƒ•’’âêêzâĉ¸ºº†‡‡³×ß¿æ7G–š>ìááñé§Ÿ>yòdçÎÌïâ²5(Ú†yóæ%$$|òÉ'3gά©©Y±b…ìþ*Z¶´´4))I*;!„„„„0#í£¢:%—]½zµ»»»‡‡Çùóç·lÙÂEë•ðÑ[ñññ’ÿ¥««»jÕªcÇŽI]^¥æ{{{;;;Ïœ9sþüù®®®yyy‡–ú;¡¨ªæEGÇÅŹººº»»ÓîLBÈ”)SÂÃÃçÌ™£¨€”+W®ÄÆÆ2¿y9rdÒ¤IC† aòx¦Âz'„lݺuäÈ‘±±±_|ñ…¡¡¡Üm°³³ëÑ£ÇøñãœÃ sIHH˜;wî¤I“¦M›Æápèϔʇ¢¡:BHvvöŒ3¦L™bbb"÷þ˜æ:L’gò­Z–ººúŽ;Ξ=;yòäÏ>ûlÖ¬YÌMÖ£««kgggddÔ¯_¿zë722:xðà™3g˜;XlÛ¶­¦¦æÌ™3...ÆÆÆrßQ]RR"ÿêêjŸÉ“'/^¼xñâÅÍò†ÓzbƒB½hÑ¢C‡9::&''[YY1—h¹‡XѪ¥Â®ü9Õ~Ȟ݊"&÷º$¥;w&''Oœ8qüøñáááŠâ¦(øMl ,§g µ½¶m!mùÖpBˆÔ¸±½5<;;[OO}„»£GvëÖÍÝݽޚkjj²³³ŒŒ¤.CŠjPäÍ›7šššMÙæ– ‹ „Ba½JÈÛWµÄ›‘AFF†‰‰ íñnÆÍX²dÉ”)Sô£’’MMMÉŸcAEEE×®]`Q]]­ªª*ÕÅ(Ua#ÈnCii©®®.!„Ïç³ÔLabb"÷q½kiÄ‘U>tô™öööUUUt_Zí05Ý›7oôôôšøp»Ö©¿¸¸xüøñaaa–––’óËËËy<žP(”?ŸÏ×ÑÑiâãîq• EMMP(lÐÕU™æ¡ä9Õ~(:»e#&÷º$«¨¨HWW—Ëå²Ä­Áo‰KM³¯±Ñ-dãî¯F»LPrÜXÛ¿5œ4í=• ý±OVee¥ÜoÞ²5khhôéÓGùiŸo§çp8r¿µ2.—Ûì·Þ»w/Ç{ùòeCa¯§§'»y’×bÙ,ä&=R6‚ì60>ÙkVUU577oôZqd:555e~oÞÃÔt-}‚7½þÀÀ@‡c``póæMGGG©TŒ¢­­MQQQ‘ å"õD%Cш¿âÊ4%Ï©öCÑÙ-1e¾Œ‰[1XâÖ,)T+Ÿ­Ê¬±5[·Í›Ž2wV¶Õ«W·y ТƎ›••uùòåfùmZÁºuë,,,‡2wîÜ”””¢¢¢õë×1h'Úõ{*šhèСroʃvëƒ>@ZÎ{ï½'÷åðîfcmØ+MÙÀqš H»~O%!D(*zñQNNŽ¢Je¢±ÔÓ š”kÊά¬¬¤OòmIJõbßGö:ËÊÊ233;ċؠ¡N:%ûÖìHÓÕÕÕeddЗü4hó˜’’‹HÕ†6ÐQö®MÖÞ¹軩]Û±cÇ“'Oºwïž››;þ|ú¨ºÈêÕ«y<^nn®›››§§'_PP°gÏžçÏŸ[YYíß¿¿ÞzS¦L9{ö¬¦¦¦¢šÃÃÃwîÜIŸdAߢ¨EÛ ‰6oÞÌçóé‹hBCCe‡=*ZvõêÕ’k433“|£6û>*ªSjÙøøxCCô´4//¯I“&±¬Wò6ÆÉ“'ûúúÒ=z4<<œ¹Çþã?þöÛoé3r7nÜøûï¿ß¸qƒ™occÃ<9&&æûï¿?zôhS؆ úöí»hÑ¢wö$¿råJïÞ½¥îèˆa‘»#ʘ0aBuuµH$²¶¶öððhè-r9räöíÛúúúÉÉÉÛ·oÿ裔ß<¦$3![[; ]'nÍu ´fléÇ£G–»Ò]»v•””ìØ±ƒ¶y>ŸÍ Õÿæ›oBCC¿ýöÛÁƒ7ËÆÐ˸¦¦&!D]]ýâÅ‹­ºýí4«wܘ——½×ïÑ£Gëׯwrr¢ kÿþý666+W®¬¬¬œ1c†­­íûï¿OÑÒÒZ¾|ùÝ»w¥Þ¯¨*99¹gÏžô(ª™âææ¶uëV¹Û)Yƒ¢m¸sçŽ@ 8|ø0Ír"##™¤‡¡hÙ={ö0Os •ûmEû¨¨NIëׯ§w­ßºu+$$„Ù°z×kkkûøñcš=}úôÍ›7999¦¦¦©©©<¦b¥¥¥÷ïßçp8¿þú«ä‹#üüüÆŽ{÷îÝ 6ÐçÖÒù‘‘‘nnnÍò÷’Ú¼ysŸ°hÑ¢iÓ¦5èÍ¢E×Ûô°t,ëÖ­3fÌÑ£G¯^½ÚÄÇ4¤¦¦^¼xñÚµkšššB¡°®®®ýÔì¼|ûí·ô’bbbÆG§£¢¢$Ù,œµk×ʾ@¬]E =l¿’Úò—J–§ðSÌcLLLø|>}{CuuuTTíûáñxÌkÕy<žÜªrëaÄÆÆÒ§á±ÔÌŽ©eTTT^¼x‘ŸŸ_WW—••żkB˲\.—ËåfggGDD,]º”ù&tùòeö}TT§ä²Ì_¦ÌÌLæí,ë•ÊÆÈÛI ðüùsBˆä#Ô###íííÇ/û?•Aƒ‰D"ÉG!»»»ïرƒy•uÓ=z”9Ž+W®üå—_üüüœ:TTT´lÙ2WW×sçÎѯ_¿öòòrppðóó£¿V;vìÏ?ÿ}ztt´ìze Ð¥V­Zåää4nܸK—.É­G™°|õÕWãÇ ¤¿Voݺ5**Š9O=<<êêêd‹É^úçÍ›çèèÈônÊ]¤Þ£ (hŒ†J]]½gÏž<6x¹•(Úà˜˜˜M›67nïÞ½´«»¬¬Œ>ˆXUU•ùvWUU%YLÑZ¤È­­ C'yq$·uI-›‘‘áéééäääïï¿víZÙF¨h¿än¶Ü²;q‘—<”Ù5–ØÊ®]Ɇ$ÅÓÓ3!!N/[¶,..Nê:°yóf–ïÕRFÅüX‘˜˜hhhÈä1Í~¡cÂ8kÖ¬/^Ð7n¤/^“=dŠê—°¢(:d²VÔžå’=èìjeÂÒ²1¢Ä¸1*<<ÜÆÆ†–ÌÏÏÌ#Ázôè¡ü€0Éz÷îÝ£¿ °×»qãÆ7nÈþbj`1f̘aÆ}öÙg+W®\¸pa㺵ƒƒƒçÎËlÿ¨Q£è+5ëÝG¹'ªä²—/_Þºuk||¼Üö$µ^ÉlìåË—%%%‰‰‰ýû÷4hгgϤ²±«W¯Nœ8q„ ÷îÝ“3—™™jaaÑ¿ÉlLOO¯_=YXXÈçóétVVÖ¾}û\]]wíÚõÝwß­]»vΜ9k×®=vì¯ìèèxõêÕªª*ún¢9s昛›{yy8q‚> Yª­öСCÓ§O_³fÔÚ³²²Ž=:uêÔ   „„æâ(¹ˆX,^³f‰‰ÉåË——,Yòå—_þõ×_’ëUQQ‘- ‰Ö¬YSQQñÕW_]¼xqÔ¨QrëQ&,½zõ >wîÜÝ»wé•tàÀ̪¨¨¨Þ½{«©©É“$‹÷ïßïããµpáBE5+sM²A6è(BÒÒÒNŸ>þÅ_°T¢hƒƒƒƒmmm8péÒ¥ÔÔÔ~ýú7ÎËËëìÙ³’„ÉbŠÖ"Enmm:¹E­KjÙ   >}ú\¹reÒ¤Iqqq²ïœQ´_r7[¶°l³otä™S@É]c‰­ìÚ•lHR›”™™I_ÅC WWWK]²²²ä¾SR.ggçß~û‚ëׯKv5×…îùóçÑÑÑÑÑÑÙÙÙ„SSÓ?þxË–-UUUׯ_ÏÏÏÿè£ä2EõËFXnX™l„å¶g¹Û/÷ ³_¨ë½òt˜lL™²Û·oß¼y3((ˆ~¤¿—1_F544ê}÷­Üz¨ÒÒR>ŸO_ÕÇR³ƒƒÃÎ;{÷UUUyyyöööOž}úܾ}[$ݹsÇÑÑ‘¥4îB—“››KçxxxtëÖmûöí‡Ú¸q#‡Ã‘=d,õËFXnX™l„å¶gEÛ/»ìêz¯<ÊkïÏûí·ß8päÈ‘ÿcïºã¢:¶ÿÝ¥¯°Ò‹¨€€@" "ƈ@Q±¡("* ˜+ÈOÀ‡E,ÑDl1j‰‘ªA4†(AQET^—Û~Ìó¾ûnÛ»K[óø~üc¹žùž3gÎÌ;Î'øÑÛÛ Îóìéé¡r>5–àÑ£G666™------UUUcccwïÞ OÀ#Hoeeåçççáᢦ¦æííMÝW\.7111 €ä€r¢}\÷‰QH ØÄÇu£ N[RR"++K~ÁQ¾pÍÆ c÷€„ò<•¬‘ûBÒèÁÁÁ!33SKKËÐÐ>{:OOOÔº+:¾k×®;v¸»»ƒ†[d$ü$ÑK±È„ò0Ö~l©4Ô«¸÷Æž7V]]‘””>gÔÔÔ˜LfMM {|ýúµÀY?\xþ|÷Sdž3g—ËíèèKÔQ $(,,7š™™yyy6Ô}•‘‘ÑÕÕµdÉòHK–,‰ŒŒ,//‡—µ Ôkaa‘’’Ò××)###''wþüy°ŸÍfÿúë¯ëׯÝ#''§ãÇ—––C$''gccãììùý÷ߣÞ(Ÿ|òÉš5k~üñGrƒUUUGpNSQQ‘Ãá;vLMM ;MC.@oÞ¼Á=ŠVYY¹§§§££¼\ß¼yïizqÔÕÕy<^EE\X$<ä?þøã´iÓüýýá玎Ž---ÎÎÎt:H ‰Y³f]»víâÅ‹¡¡¡999¯_¿˜D§ §<<<’’’ UUU±$Tòˆ‚‰‰Éš5kˆ^𠳉`Éh»ŽJtÍœ9³···½½]YY™Çãag-¨ä 6WöÃ÷¼‡¨.‹H0Àè>‡ÃAÎHŠ|öƒƒCrr²¤¤¤««ëØ4t<ïäÉ“¹¹¹;vìPSSÃ~”‡Q­­&F[©X¯‹‰‰»ízzzzzz@˜JHH,_¾üÖ­[µ··¬X±‚\ .ˆ›ââbsssxŽL sVV–²²2<<Žb Áœ9sîÝ»Ž {ÉæO?ý´xñbTg¿¶¶žž Ê#i»ººàï9)))dW/jl¬ººZIIIVV–F£?}úôÆîß¿¯©©éëë»qãÆ7nÙ²eîܹ¨¹³Ï>û¬¡¡!%%E«  °gÏžÇåhFFF:::?üðXº/yÑÒÒ+¬‰P¸|ù2rJQQŸÏg±XÈåt¨NŒ††ÆíÛ·ù|þëׯŸ={º¿°^\`LJJJgg'—Ëmmm%â!2 ž¤f2™ÕÕÕðŠZ{{ûÒÒÒÔÔTð±A$s²Ùì—/_‚JAÐÐÐQ* qšh¥jëÕ«Wù|¾‰‰ . uƒ_½zUYY 8ËÊʈ†^(šŠe_×!QŠz]Íœ93:::??ÿàÁƒà+ . ’|aÍÆƆ½PžÇ­T²F±.“×)ª­­]QQÑ××…m¨Ä9jjxúôéýõòHˆ‘jèˆìa0111‹-ŠˆˆàóùØ"#áÇõ0ÖÔ‹Œ(žE€PJß¿ÞDºn¬¨¨(==ÝöjjjÀsÿ—/_úøøx{{ûùùÁ#XUUUÎÎÎgÏž}ô葳³sjj*9Oii©¡¡!rÓ/ó‰'¼¼¼6nÜX\\ G<–Èooï²²2OOÏuëÖ ~úé§Øü¥íêꪨ¨ppp@É'&&¢<q"Ó¹»»{yy]»víСCpÿ˜H/S¦LÑÔÔ„°155•——ƒ‹iii¨î¬‹‹Ë;w†††à'L&óóÏ??uê¶¹qqq±°°ËPkW‹ŠŠœÝÝÝÁX&A«V­JMMݼy3‘ iiiðŸõõõk×®]µj•††îniié#GŽ\¹reåÊ•›6mZ¿~=Ø¢ ëÅˆŽŽ®¬¬\±b…““Sjj*‘aÖÖÖS¦LqrrŠŒŒtpp¸xñ"XæÂd2­­­UUU HÄ`΀€€•+WîܹsçÎ DI¨€Äi¢•Bxxø‚ ¾øâ \ê—••mÙ²ÅÍÍmÍš54 LSR(lãë:dã 0JQøê«¯/]º´lÙ2555° . ’|aÍÆƆ½PžÇ­³F¥.“×)êééyòäI777333ø›n&ollœ5kJ 444** y¨ÓH5tEFF.|‡ÒÒÒêêêË—/:tè­¯¯OIIÁ ?®‡± ^dDñŒk?yÍJ© EDDDFFŽÍÛnÿ¿Îùbôî\xxÝ Ð-2TEEEòEBäHNNVWWwwwÈ<88X__¯ªªŠº|šˆmmmrrrñy4Àçó[ZZ¸\.ù‚q»ÉIÐàÙ®]»V­Z%Ô!:rrrÈãy9NooïäÉ“‰ˆÎ*´±±éïïg2™ÃCQQyJ/VŒã2™LIIInéêêæ±X,XÅX,–‚‚rÞ™"³N£^ B•5EƒÁ)È÷œÈ¦â²‰§ë¨Dh䜜.^¼8sæLQDb6‘°a/lN±-yÖ„ªË¢øª‘@MG Ú³³³Ùlö·ß~ûÃ?ÜR6 `‹ ÅOâa"PŒÆ‘¥ûÿufñ2WkY*„ÿ:{]º·î=¾§RØÉ>,úúúp¿o°Ì222zzzÔˆ@eÃÁ؃F£Áßaÿ$;vŒÁ`¼|ùRسdQO$%%‘ V€RRRT–”bÃ¥7~°›6Èà ×-pÛGþÚ(†}N‘Y§ [ I(,!!¡££#²*lâé:òèŠŠŠ¢ÑhÊÊÊ999vvvØ®I¾pÍ&¦¸W 7§D-•ö™b]¹øp;÷¨vÛ•ÏÏÏ×ÖÖNNN¦Þ†ŽØ"ÃåÇõ0‘Æå•:JJÇùf$°nL´k‡   qgxOá$7Z ¥[ºti]]ÝÍ›7Q#šc‰°°0}}}±*;qpË{ç´÷ãîº-[¶TUUµ··ïÝ»×ÊÊJ<Í­ ˆmX2Œ£GNDïû±¾§ræÌ™C²ïil0oÞ¼ ·üœö¾`Ü]7}útÜË?ÄÊlѪÀDXNTüQÅx®â‡W‹OtÅ&0 L`˜ÀDol ð~è݈¸ÿÕÐÐ@´s;õIÂ#³P¹Ã>ìëëCÝD=­@瑜³»»»¶¶–?®óçÍ›7oVøGâÂ… ØËRF l6»¦¦\§#”jXr,­À˜Œ‘ nüé§Ÿ°7w½§õtDj÷X‚Èùç×_ŒŒ¼v횘ð¨Fˆ©ÄzÝØ‘#GŠ‹‹555·nÝ Î1‹   ƒÑØØèâââããž·´´ÄÅÅ•””ÅÇÇ ä±jÕª+W®ÈÉÉ1§¦¦FGGƒ“,Àõ/D D6ðx¼ƒ²X,píIRRv£ QÚ   ¤Fmmí´´4о"âD¥---UQQyõꕯ¯¯››u½®®®ƒƒƒà2ZiiéëׯÃÙl¶ŽŽÎŠ+<<<ÂØçƒƒƒß~ûmnn®žž^ss³¢¢bxx8˜ï J"öíÛ7cÆŒ;vˆgÓ v-^¼8--MWWuæ°««ëÀÀÇ366öòòvG.Nž<™——§¤¤TYYyøðá… âªÆ, ÿpqqÙ³g££ã?¦—ƒÕ£TèÃ!Á-µa2‹ £W¢©ÈÊÊ’””$?vì­3`k÷Xj'r~~~þ•+WöîÝ;44DÞâ ³îÀœ#RÅDŽ£ùΦëuc¾¾¾`¯ßãÇ÷îÝkooö›ÄÇÇ›››öõõ­]»ÖÒÒòÃ?„ hÒ¤IŸ|òɽ{÷P·ÜñTVVN:´¼D̹¸¸„‡‡ãfÉ@dÃÝ»w9Ή'@/'33îôÀ JŸæš””„;zD”G"N$öîÝ Ž$ÈÍÍMLL„ £¢‚ ìå¡¡¡K—.½wïÞ¾}ûÀ±´$Ï;V[[{ãÆ pöÇ… vïÞ}ãÆ "*ê8xðà0·@ïØ±cÍš5B“Aðüùó xˆ¶dÉ’ää䨨¨ôôtÔ½¢ººúúõërrr\.—Ífjq×.ܨA,t1dŒeÀüó0Ƶ›:=zdii .bfˆRLþÞU±^7» ¡¡Áb±ÀMYYY`ì‡Á`ØÚÚ¦§§1ƒ»€—FAA8Ä™0‰ t:ýùóçÍÍÍl6»®®÷»$­¤¤¤¤¤d}}ý­[·vïÞ ž=zôæÍ›äy$âD¦…ßîµµµºººõR-:ÝÔÔ”Ç㡎rF=onnNMMýôÓOácؼ¼¼$$$ãpDT‘œœ e``ào¿ýêààpüøñöövggç«W¯·oßúúúÚÚÚ†††‚ ëS§N½xñ"!!ÁÝÝœ …´ÙÙÙþþþ@i÷ññ)++¿ýýý‹ŠŠP„$é+HKKO:•Á`€ÂµáÌ™3^^^NNNQQQð¤s```~~þ;†i»»»Áq»ð—I?RŒH °ºDp]```^^Þž={ìììˆÄF¤˜µ€JîPv"ÿlhh°³³óððÈÎÎp¡cž••¬zyy±Ùl\~>ô÷÷'›“0CTSSãããcoo‚¥‚ ¨«« ëp™›|½ nÌ <6̺†«×oß¾…ó_âNRÄXÕ¸nÇ­Sâ ÜÚë1l»„ÕŸþ¹½½½££ã7ˆÚ"çøxñbfffZZš»»{kk+¶ÅÃ¥%*;ò§(&°qû÷uc©©©æææ ÷ÖÜÜÌápà#Á¦L™B}A’ƃÀX.9sAAÁþýûïܹƒõ8Ì@‚%K–XXXlÚ´)00pûöí¢rÇÆÆnÙ²¶Ñ¢EàÔ{yÄ•öæÍ›ááᥥ¥Ø×V/ %%%ÙÙÙÙÙÙõõõÈçµµµIIIúúú†††$ÏáË}/##£ªª*TÑÚÚÊb±Àﺺº¯¿þÚÙÙùèÑ£ßÿ}HHÈæÍ›CBBN:–YÄÆÆÚÙÙ¥§§÷÷÷ƒ+G6oÞ¬££ãëë{öìYpŠ4JÐ?~ÜÃÃ#88¥½¶¶¼&ØÀÀа®®õ…€Â«W¯RRRRSS¿øâ ¸D°6L›6-66öêÕ«÷î݃—nÔÕÕÅÆÆZZZ&$$ܸq£ººÚÀÀÀÑÑÑ××÷Ê•+È`NLLDŠi!V—®«««KNN^½zuLLLYYÙ;wpÅF¤˜pkQTcí„ÿäóùÁÁÁ7oÞܵk×—_~ Î^'‰ ¸Ð±N311?²²²tuu%%%qùáÖ—_~?0C£§§—––æææVTT„ûysá”ÿù|~|||@@@VVÖöíÛIb•ÇaÖ5¬ "WÇÄÄݺuËÉÉ©®®l¢"ƪƺ]JJ ·N‰3°µ›ÈcØv ±</88¸··÷Ì™3ׯ__´hQ›@ä|îîî ,øøãÏž=«¬¬Œmñpi‰ÊŽ<Â)Š lÜÆ>BÄúžJ€¼¼¼œœœ˜˜ð'˜/ƒ?èedd(®ûFñÀ_, œ˜GÂlkk­««›˜˜˜˜˜HÄ@‚þþþ¦¦&›âââgÏžÏ>¡››[__¿~ýzø‰‘‘‘À<â•¶µµµ¥¥åíÛ·È>‘^ÊÊÊòóóóóóᇑ‘‘«W¯®¨¨øî»ïÂØçRRR¨ëÕ:;;É©ØlvÅCàÛ¶m³···°°`0Û¶m³±±Y°`Awwwkkk__ßÓ§OçÍ›×ÙÙ9{öì'Ož€ñEIIIyyyeee\ooo{{{*‡R" ©}aaáµk× ¸B”Ègggmmm%%%äÛzÆ îîîÆÆÆ:::åååEEEùùù%&&†……Áß²(1’œ’E"šëvìØakkkmm½lÙ²ÂÂB¬ØH¶‘G5ÊNøÏòòòŠŠ %%%cccø&*QršƒƒÃ“'OÀvŸ_~ùÅÅÅ…„¿§§'88800ðƒ>ÈÜÛÛ[TTäëë«  `ii©¯¯OÃ;´ëÖËr¹\äáØØÐÁº†«×CCCýõ—··÷¤I“,X€ÌnãªÆº¤N‰3Pµ›$xpŠj???}}}&“©®®Žë7ç#[<999eeeìB ¢ÚJR=©G hÛ¸Dˆ¸Ÿ7öûï¿'$$œ€k·­­-Qðà¶K0ÔÕÕy<^EEü:Àõ›°ÎÕ¦f¤4ŽK„ˆõº±˜˜°‡®§§§§§„Ž„„ÄòåËoݺAP{{{AAÁŠ+Èáò€X,..677RaÎÊÊRVV†—Ì£H0gΜ{÷îÁ“ Â^²ùÓO?-^¼Õý¯­­mmm%Ï#i»ººàÁ)))dW/u|öÙg )))$Ïååå7nÜøóÏ?777—ÆÅÅihh888P¡YéèèüðÃ`E¼ªFKK ¬o#@áòåËðZmmíŠŠŠ¾¾¾¨¨(,¡Àäp¤]½z•Ï盘˜àÚÐÚÚÊd2544ª««IÝ¿zõª²²p–••}‰RÌ©@ë:‚ŠŠŠø|>‹Åzôèø¥bBÖ‚á`Ö¬Y·oßæóù¯_¿~öì™0HØÛÛ—––¦¦¦‚/=~99¹øøø'OžPù&QVVž9sfttt~~þÁƒ;::p÷çbýÏf³_¾| ZH‚†††Æ ®QwõŒ3TTT~þùg‡“––V^^÷ p‹˜H5ÊíÔë”ø[»‰‚·]Âz)%%¥³³“Ëå¶¶¶âúÄùÃŒ„‘ªž"4nã!b½n¬¨¨(==ÝöjjjÀsÿ—/_úøøx{{ûùùÁ#XUUUÎÎÎgÏž}ô葳³sjj*9Oø& IDATii©¡¡!<çHÂ|âÄ //¯7GGGÃóâX"¼½½ËÊÊ<==×­[788øé§ŸbóK”¶«««¢¢Õ; (11^@”G"NdÚ   www//¯k×®:t."½(DFF.|‡ÒÒRä1™ÌÏ?ÿüÔ©S¨æõÜÏÏÏÁÁaݺu[·nuvvnjj:qâê=AD5²«¿‹ŠŠœÝÝÝÁp&A«V­JMMݼy3‘ iiià·§§çÉ“'ÝÜÜÌÌÌà~¿¥¥…Ëå \P½»«{4n çp8555`Ä{-ÙµkתU«„:Á¨³³SNN9Ãápz{{'OžL$@‚ Ô#ŠP`mèêêb2™±X,fp„††îËX J–ºëÀ™666ýýý /cVLÃG[[›¢¢â0·þŽŽ''§‹/Μ9ù¼§§‡Á`p¹\¬ÿY,–‚‚Â0»¡)ºbppËå ÕºR ŠuJ|@T»±Ãm—°hoog2™’’’$~Áù£ÑÔŒ¸F‘#dÿ¿Î,^æj­#KÅŒ½.Ý['ÖëÆÈ!ìd}}}¸_ÞXf===ê D ²á`ìA£Ñp¿Æ’’’#~¼õ±cÇ ÆË—/…=Â^QQk²-Æ ·Óƒ"Xà×'9³„„„ŽŽŽÈZD(Ya]'%%Ee~|d‹iøí >|þ¨¨(¦¬¬œ““cgg‡êŠA$//ANÇú”ú" ‘¢+Dx‹S ŠuJ|@T»±£ò1!¶bømDºPc\[©hËÏÞùnÊ1@PPи3¼§Èr,z¼°téÒººº›7oŽÈÜÊÆaaaúúú~%lÙ²¥ªªª½½}ïÞ½VVV™ÀÄb}Oå&0LÌ™3wSÞÄóæÍ›pÂèaúô鸗sL`øŸîAb0B6¡àô>\2 L`˜À{±¾§‚ .—KtñQCCцRì` PÌBõ2±ûúúÀI¾"¤ò<’svww×ÖÖò'zZÿD\¸p{kÍDF†6›]SS.ùÊmkkkhhÐÒÒª®®f0 +ÖÕÕõðáCvÿþ}äÅ¡¡¡K—.½wïÞ¾}ûÀ¹µàyff¦‹‹Ëˆ¼/<8ÌvìØ±f͡ȌªÞá»åýBXXØ’%K’““£¢¢ÒÓÓ‡yLCuuõõë×322äää¸\.›Í¶ üê²8þ"""$$„DùÂ5Wö¢yY¨dÄ·Xí Ÿ²²2ðÛßß¿¨¨Õ?88XCCãæÍ›»víúòË/ÿþûo¤^:ŽàñxÁÁÁ½½½gΜ¹~ýú¢E‹py¨¸eÚ´i±±±W¯^½wïhIMLLàUVV–®®®””V >Ÿ••µ}ûv"f*¥@ä4d@ U ½zõ*%%%55õ‹/¾ !!2866ÖÒÒ2!!áÆÕÕÕŽŽŽ¾¾¾W®\A6‰‰‰H1"-(ಣëp¢èB¥‰‰ÑÓÓKKKsss+**ÂÞ9C”/\³±ÂذÙóp ˜5ßbµS $”Iµµµà* <00€jêêêpï”Ä…ƒƒÃï¿ÿŠàöíÛÈA ‘jèJJJ²³³³³³ëëë!ÒÒÒZ¾|ù¡C‡úûûoß¾ÝÜܼpáBÜ"#âÇz×$E†õ0n<ãÚ[èä µÀ–çýè ¼§ ///'''&&ü æËàQwßâòtuu±X,pU ³­­mtt´®®nbbbbb" úûû›ššlllŠ‹‹Ÿ={Æår…uWnnn}}ýúõëá'666FFFóˆ TÚÖÖÖ–––·oßVUU Ô CSSSKK«¨¨èéÓ§fff¦¦¦%%%CCCÏž=›;w.˜Ãmmm?¾©©é´iÓnß¾ §ŒŒ\½zuEEÅwß}‡ä”Ø»wï•+W***æ‚ÍfWü7^йmÛ6{{{ ƒ±mÛ6› tww·¶¶‚ÛÊçÍ›×ÙÙ9{öl0ìÇ`0$%%ååå•••q¼½½ííí±Ç$‚av[[[kkëeË–b“”——WTTøøø())988gdd õâ €‡~~~úúúL&S]]WŒJh9;;kkk+))€öÅÁÁáÉ“' ÷üË/¿€KÙ°bHÐh4°¤’ËåŸ4DIHJÜiлKå…-…ÂÂÂk×®1 p + ‘Á6lpww766ÖÑÑ)//‡ (**ÊÏÏ/111,, ÊE‰‘˜Š–m]‡mXÀà QtÁi{{{‹ŠŠ|}},--õõõ±—äå ×l¬06ì‡éyŠY#÷-6<¨9퀰¯ ==½¼¼<w÷î];;;’0­¡+++ËÏÏÏÏÏollO¼¼¼ÔÕÕ>|üøñýû÷Óh4l‘‘ðc=Œë’"Ãz7ž‰ìÇæ‘¼¡ØòP‡¸Ÿ7öûï¿'$$œ5–àÑ£G666™------UUUcccwïÞ OÀ#Hoeeåçççáᢦ¦æííMÝQ\.7111 €ä€r¢}\÷‰QH ØÄÇu£ N[RR"++K~ÁQ¾pÍÆ c÷€„ò<•¬‘ûBÒèÁÁÁ!33SKKËÐÐ>{:OOOÔº+:¾k×®;v¸»»ƒ†[d$ü$ÑK±È„ò0Ö~l©4Ô«Ï{ЃHwVVWWGDD$%%ÏY555&“YSSÆ_¿~-pÖ—žßý™çÌ™Ãår;::Àu ÁÍ£fff^^^`… u/eddtuu-Y²D„½±û÷ïkjjúúúnܸqãÆ[¶l™;w.jîì³Ï>khhHIIAÑ*((ìÙ³çñãÇcyš‘‘‘ŽŽÎ?ü–nÀK^´´´À k"._¾Œ\§RTTÄçóY,r9ª£¡¡qûöm>ŸÿúõëgÏžî/¬W“’’ÒÙÙÉår[[[‰xˆ ƒ'©™L¦††Fuuucc#¼¢ÖÞÞ¾´´455|l‰Áœl6ûåË— A444D”„ Hœ&Z)€ÚzõêU>Ÿobb‚KBÝàW¯^UVVβ²2¢¡ЦbÙÆ×uÈÆA`”¢^W3gÎŒŽŽÎÏÏ?xð`GGøÊ‚Ë‚$_X³q…±a/”çq«•¬Q¬ËäuJ` jkkWTTôõõEEEaÛ*qŽšž>}ºÁ_ý…<b¤:"{ FLLÌ¢E‹"""ø|>¶ÈHøq=Œõõ"#Šg ”Ò÷¬7&pÝXQQQzzºí;ÔÔÔ€çþþþ/_¾ôñññöööóóƒG°ªªªœÏž=ûèÑ#ggçÔÔTržÒÒRCCCä¦_"æ'Nxyymܸ±¸¸8::Žx,‘ ÞÞÞeeežžžëÖ­üôÓO±ù%JÛÕÕUQQáàà€’OLL„;7Dy$âD¦ rww÷òòºvíÚ¡C‡à^2‘^$¦L™¢©© `cjj*//ÓÒÒPÝY—;wî ÁO˜LæçŸ~êÔ)lsãââbaa1– Ö®9;;»»»ƒ±L‚V­Z•ššºyóf"ÒÒÒ à?ëëë×®]»jÕ* ÜÝÒÒÒG޹råÊÊ•+7mÚ´~ýz°EÖ‹+ !!]YY¹bÅ ''§ÔÔT""ì­­§L™âääéààpñâE°Ì…ÉdZ[[«ªªˆÁœ+W®Ü¹sçÎ;ˆ’P‰ÓD+…ððð |ñÅ***¸$Ô .++Û²e‹››Ûš5kh4˜¦¤QÙÆ×uÈÆA`”¢ðÕW_ ^ºtiÙ²ejjj`.\$ùš+Œ {¡<[(fJ]&¯SÕÓÓóäÉ“nnnfffð7?ÜLÞØØ8kÖ,”@hhhTTòP§‘jè ŠŒŒ\ø¥¥¥ÕÕÕ—/_>tèÐ[__Ÿ’’‚-2~\c=@½Èˆâ×~òš%”RQz¯cƒ}GOƒí ÿÜwô4,#uuu½½½Ã±çäÉ“7nÜ Â<00P]]ÝÕÕE‘­­­Ã´y4ÀãñšššêëëùÿDìܹó×_*IGGÇÀÀò ›Íîìì$ ‚»»ûo¿ý644Äb±¨„‡Ã!Ñ‹àóùmmml6›œG [`óê°(>…J"²Ó¨—‚P$ æp8¯_¿Û»DÐB…M<]G%º@«neeU^^N%ŠHÌ&r6ì…Í)¶e ÏšPuY´âãóùýýýCCC¨‡¨v…[·nݼyÓÎή¦¦f\:*ÀŠŸÄÃD # *J÷=ýë_õíÔ°ïè鈈ˆ÷øžJa'û°èëëÃý¾Á2ËÈÈèééQg • c‡‘#³CJ@tuæ±cÇ ÆË—/…=KVQQõDRRròäÉ$ä’’¢²¤(½¸ñƒÝ´Af¸na2™àRŰÏ)2‹à4aK" Eƒ%$$tttDÖB…M<]G]QQQ4MYY9''ÇÎÎnæÌ™Ô£×l"aŠ{•psJÔ2PiŸ)Öe‘‹9ˆEÔ Àåróóóµµµ“““îîÕ†Nàº+*¥ƒëa"ŒË+u””J€‰­±ÉCîâ¥Y‚I ‚”””À,ŒÀâR‚€ÌÀÆÆfÒ¤IãËð~áå—_Š¡U‘‘¸ÏÁ9Ÿ¡¡¡Â¾ÌFzzzFFFäÛ<Çâà–÷Îiï ÆÝuººº“&M¢Óé®®®Ô7*±Ù¢U± K))©eË–ÍŸ?_<¿öÿ7+~îÃ"ý™S) x=,*•`w‹ï=•wŠ  ˆÀÈÿ¯zq±Ç| i¨hHhk…Ÿh²2-%éMå EeµÎö–ÅË=æÌ·ƒ;¿=,#+×ÙÞ2ÇÆÞÖÅ<ïêl¿}åTMuù”é3¼ÂòÀøzߎO#¿•–‘%b~|?+=%I,-¤ÑÂ_#b ²Ïã];s¬¿·‹=4Aжà(I)i QÚKÇ—ÿçe5Í è3}EĉJ[÷ºBž©ØÒðÖÖu½åB"½Ø[¸âB}Øì!iY‚$%¥öD„r9lUMmó–YÛ~ŒÆ>ç°‡î\ÿ¡ôIšÖ´®Ž6†Ó}ë)$I„§bÕ¦èØ¯X/žMgÂÁ]Îk}f}8ïIA–šÖTõ)ÓQäóySu 8®641¾ÆìÔ‹eO2&7½}åábd6W5.`IøÇ¿B·9yø˜Í[ôéåàFõ(úpHpKm˜Ì"DÂè„h*Jþ̧KHL›1S¬¬3`k÷Xj'rþßÅ<ÊI_áµ›Ãf“·xì;0çˆT1‘#Äb‰ëûÔ¸›ÒÎuSI‚ ê¿K®&ǘX,’– è×ÏéÌ4uöØ:4ÐÿM¸¿žÑlƒ ’••sp÷.ûëQMÕ *<o_«¨k–—ˆ‚ óö«·âŸ*„d ²áÅ_x<Î֠à—óô|¸Óƒ(íÆOðxÿµÊþ9e ¿—º¯ˆ8‘pÛ´‹F§CôüÉìëçaÃpôÞù›ÜeƒŸÙ¼Å¨‡®w™Z.(ýëѧŽ™ÍUTV#yþËÕ³íÍuŸE%KËÊ‹sÇ|• ²@DE«¼èt‰áÄêÙ£{­–|ü¡õˆõ‡$ܹ/VlÚýÁ뜴Ki?|s–FÖvs}ÍŸwo‡='-#Ëãq¹ΨVówÝØèÂê„ÀBCæ±ÁXÌ?c\»©£²ô/]£ÙÚº†ÃQŠÉ߻РÖ÷T‚îA“•Uû{»‡¤¤eØCƒ%þæè‚¤eå>˜có¤ ô™¤eåTeå(òÀÿ[þìOÃÙs!"a&Ì@bF«­.ïêh›¤0¹½¥ ÷»(-F—€ jkªÿëANàW'Àó[—OihëÌ[âL’G"NdZøíÞÖ\¯ª©M¦÷ëÿ£^¸4:}Ú #>Ÿ7Ð× !ºP¨ç]mïgîÜ'ýÎÎ…Ž« ïÝ~\mcïJNE9©—UÔµæÛ»@t!!ÒÊöãâßó^•?Ÿ»ÈiÁ2·ŸÎÄ5××,^¾Öfé ‚Ú[oœ‹ozûZßxŽû¶ÏddårÓ.¿}UÑÖTŸ—~yÏá¤Î¶” 5ÿÈáqþI Šž~!Hí§£¿pÙ¸S[Ç‚ óÇÚ®X_]ö IøÓ™¸œÜõ?0#«¨RRÊjšÒ²r °°FB”wëêßź:Ú>œ·jË'àŒâ ‘V¶ËK ó«ÿ~:{Þ—õ¾|¿¿¿·¥¡V[×N— Kÿ»Ÿ:48pít,F¤…X]"¸îBB¤åbÇ'÷³j_þ­ÿÁ‡« ÄF¤˜µ@ °v"ÿìlkNK9ñ¶º\ž©d¿rÓl«…äQ:Öi×ÏÆ}8w¶Õ"0ðCBÄÎ}qݬv,?ŒŠçOdþ¼90\RJš„Ôåçâ[ßÎ2›78Ð7{ÞA}½=¾‰Dù¿¬¸ð·_®¶5Õ`ñ‘ûÖ¢˜ÁÄðê® \W··4^?{ ä‹=8ˆÛÐ!Uëöß~½Ž­Sâ ÜÚë1l»¤7ÓÕ—“ßT•IHHÚ¯Ü4o‰3n›@ä|Y©%äÓ%èeÅ|Cc~>ÿ ªÅÃ¥%*;ò§(&°qû÷ucïgéšLR˜ APWG—ËUTý÷ùXJª­T·` yþÓ•<62³È\þìÏk§>ýã7ìâ*˜̱֛9ûÄW{.|±Äeh£Ü·.\è¼¶–™Õ4½™Tòˆ*máow®_ÿºrÕ–zQ¨yY^ògAÉŸ­MÈçmÍ 9?§¨kOלªKò¼¹¡‚ ):3Ý5­é3šÞ¾HE=¬¶¾Þ_¾ÑÞÚøëgͬ—lðß—ÿëO—OüßB7ÁZ4 IDAT'w— ;óÒ.e·.46_óÝÐàÀ‹¢ß!Zä´ZUCÛvņa±tºVÐfßüažíòå˜wR[sçÝõ­Mì¡Aa{k#{h€ì{·¡ö~æÏOîg¹lØ —Öu­õ»ö|ùmÙ_¿¿}U–qù¤žÑìÍáþv»¹¾FcªŽ™Õâ31asÒ‘Áœyý/ºóÓ¹mÁQpåœÄT„ h` _Ž1 t¡¨¼Ò°<U¥˜Z dfÈ3õŒLõŒLå'+e\JvXå%ùî°`$ nÿxnƬíÝ6̳ûøò‰ÿc**/þx u_ñxܬëç×l•”6T`ï¶‚ ¢‡y?&ÝŸp ÖBE¯µ½+v…ÍŠM»™ŠÊ—ŽG±Ú[‘ØçŠ*êöPÝ›—Su a±îÎvU­iäT0~¹rùç–ÀpiÒ95„h`Àþ®x]UÊår~þ>ñÝhúVÅÑ:«e¾ýŠÙV ïß¹y<2pï׈l(ù³ ì¯‡Cƒoß[üç5U HJþç„ë%{èÏúðâ·‡sÓ¯8{lÅŠ t.pu ë:©w¿ªiN-ZˆƒbÂjTZøÏÎöY9ÜMÑš®Ïjk¢®å4y¦’®¡É‹'g|`ÖÕÙf`2§¬¸ˆÿQî-6{höÜ…T˜k^–KIË(ª¸x×ÿž~¡×Îüëùãû«½ M-÷ðë® \W×Tý-%%E}E)®j¬ÛIꔘY»§ëÏ" \ÀËjo¥ÑéÓ f‘ûMXçS,Џb¢5 £!b½n¬¹¾æÆ¹ømAQÊjšðC¦¢²Ü$ù¶¦ú©z†µ5¼UŸ"à~\žwóA—"³®¡1ÇíífMVVÅ2o¬ò€ hºþ¬Wÿýô¡zc=Ìëïíþ`޵y¤ŽæXß<__S /k¨—pøGFÖÐÔâÃù¶7Î%ì:G£Ñ‰žkhëÈÈʽ*÷ÆúßT•™´”œ †ohôHä$y&—ÃÝôéA¦"ú0üN"@0\Çår‡P„ÔamûqÎϪJŸ2•°64ÔTßøî뀯N¨¨k?v áT=C+Û+ÝŠ®"»®µ±NÇÐdÌŠIdÈ3úûz»Y ÃÑÖø–©¢6ÂÙóÿõ0·«³ÝÌÚ–F£“ð/p\õ óçÔ Ç=¶.Vkš8dGž©Èçñúz©ûŠŽ~àW' 2S¯œŒÞŸp »%|ÄëuWË3'ô÷ ôÉÈ2¨Ô,"Õ(·‹P§Äpí66ŸO<¸íŒÉJ*|¯¡æü:Àõ›°ÎÕ¦f¤4ŽK„ˆõº±ô‹'̬&«¨ ô÷ ô÷ñy<‚èt‰çÛ=È ¨§«óïgZ¼{m—‚ >÷¦ò…î»æ† ó³ÂûòLExÉ<Š:&¥=¿ëßT*© ×gúãî/³>´F Pµ57t³:ÈóHdÚþÞžwƒ+÷%$%Át‰^êp^ëÓÙÖ|ÿÎÏ$Ïeå6+Ÿäßéêh Äí«g&+«šZ~D…jd¡5}†š¦vþ¯78ì!‚úß½®UÕ[Þ’ ð ;íEÑCð[YM£¡öÕÐ@ÚßÂËt`BÉáH{˜{‹Ï‡¦Í0ĵ¡›Õ!7I~²²js} «½epðÀ¼æ†ÚÆ·¯gÛJ -¡\!,„uA¯ÊŸóùü¾ÞîªÒ"}ã9£WLÈZ0L™®?YYµø÷{|>¿¥ñmÍË2ã9ó‡Chb± îuå“û™æ6öäüÒ2²^á¯ÊŸå¦_¡ÒkÔœ¦—~1éï§…?ëífÑñöçbýÏåpšêÞÐéàË“ÍfA]£îjõ)Ó噊ægq¹Ü'Ù 5ÕpŸ·ˆ‰T£ÜN½N‰°µ›(xpÛ%”—T5µdÞèëéâñ¸Ý¬\¿‘8˜‘0RÕS„Æm\"D¬Ï{]ñüuÅó'ïÖÍí‰:©¦9‚ ÇÕ^¿<ýEWg»½ÛFxöªéí›ïã ð¸œØà-KWyÍ]äHÂóöu•æT]IÄ¥DÌY7Sª^<áóxr“ä×í ƒçű D6,úØ=õ‡oÃ?¡ÑhÊj{úbóK”¶¿·§¡ö•½Û&”|æõóÚz3—|ìA’G"NdÚ‹Ç÷tuÊÈÊq¹œÕ[áÕúDzQ¸q.Ñõ ÖFL8ÊM’ÿØs{ê…ogÍ™§®5èùÒ•ø|þ·Ÿ¨jjw´6kNÕÝtµ¼€ˆjdA§K¬ß½÷§3q±Á[&)LVV×Ú²'‚ ËEŽ7Ï%T=²ûP<® EÙSõfšX,€ ÈÚÎõ֥价®:¬ÞüºòßçŒ É“Ctý»c×ÏÆiëºlÜ)ÏT‚ kƒ¾ñ%UØ Í*êSLæ.|ù³¡±ù},yý몟Hd*ªÐét5­iŽÛ„r…°Öuu¶6%òïéêÐi: ï´¤‘*&d- Õ8ͨ””§_èO§ÿõ(ïV7«c¡“ûÌÙúlWn’¼ñV{«ÆTü “•¶FžŽ UÕ˜"ð`íA™?õ³ÍR·¶¦äîrý=](ÿ þ!))E§ÓíWnk9Æ ®QwµÛÆ_.'ç¥]²Xè¨5}ÜDã1‘j”Û©×)ñ¶vy ·]ByiÝΰ«É1qaÛ%¥¤mÜì\×áúÈùÃŒ’ê9J±7¾B‹ˆˆˆŒŒ›@Ùÿ¯3G¾ØÆÃÀÔº10HdÞqÖÑÚÄg ÜuO‚œÔKL%ìZ,3‡=ÔÞÚ¤0YÕ 1¡§«CZZVz6ø|~wg;Ǹ Ü 9J÷Tr¹Ü¶¦ºÉʪ`Ä›RøR³ç\Ü~ËENB`Ô×Ó%-#‹œŽár¹ƒ}ŒI D$` Òé¨!F¡ÀÚÐßÛ#7I‚ ¾ÞnfÛÞÜ8YY÷e,P‹%KÝuàÌFC‹¡Á—1+¦á£§«ƒ!ÏæávcÃßÛÍŠ Úâž 5Mù| ¿OFV–Çåaýß×Û-ǘ„]*0L,DŠ®à°‡x\®P­+•ð X§ÄDµë1Üv ÏÕr“$$$Hü&‚óG£©q"GH~vÆâe®Ö:”<û×ÙëÒ½ub½nLÀÐbkh˜…w2–YRJw<†ˆx¦@/å¤ÑhðÜë8BBBbÄ·þåêYiYÙ¦ºa°gÈ3±æ!Ûb¬ p;=(B€µ~}’3Óéȃå„Õ"BÉ ë: II9Iù1.¦ác´+øðùþá8F›Äœüâq‰Å|TW ‚ Y9A’t¬ÿG©/"°)ºBRJ’®jÜqÊQÍþh üàÖn¬Ç¨|ŒAÿµƒÐo"84šš×8–"9î¡Cegå(aùºíãÎ0Q…©å‚öÖ¦ÏþïԈ̭L` °bÓn íé~%,rvoª{ÝÓÅZ±ÉŸüÀá L`c ±^7Fç9Z%7.È„ èÝü ø€,&Bå½ÃD‘.´ Èr ˜À¨"?[è$ã¹§’Ê)ü˜À&0 L`ÿlˆûº1ÛÙÖ‚{†VCCÃäÉ“ n?>è€Ëå666jkSZ+CÂ,T_eA}}}ÊÊÊ"¤ò<’svwwwvvN:•|;Œ“ðgÉL`ÜqáÂ…… Θ1c"## 6›ÝÐÐ0eÊIII¡Ìƒ%‘IPl1ð¾än\´ÿ³ t¢76> Y7––’ô¦ò…¢²Zg{ËâåsæÛÁI‚‚‚ Fcc£‹‹‹xÞÒÒWRRbddÿŸÝÑGŽ)..ÖÔÔlllܺuëòåËQŠV­ZuåÊ999"æÔÔÔèèhiii‚h4Z~~>‘ <ïàÁƒ,k``‚ ¤¤$ô J¢´AAAHÚÚÚiii¨´Dy$âD¥---UQQyõꕯ¯¯››E½+W®Ü³g½½=AÉÉÉ©©©wîÜÿµ|ùòóçÏkhh@´ÿþ?þøãÎ;RïŽquud³Ù:::+V¬ððð€Ÿ›››>|ü™ŸŸùòåäääáؾ}ûf̘±cÇŽÿÙJž––¦««‹j¸ßG·àf„ \]]x<ž±±±——×üùó‡oÌÉ“'óòò”””*++>¼páBêæÁ’ð,›˜¸î#UÆÒ·kÖ¬Ù³gÏâÅ‹q•=z´³³óÈ‘# æY,Vvv¶¬ì¿·õ;w.))éüùó³gÏc@3.''A´´ôõë×ÇÒï©ýbÚ¸nÌÎuØëWýwÉÕä‹`H||¼¹¹y```__ßÚµk---?üðC‚&MšôÉ'ŸÜ»w¯¸¸Éãëë«®®AÐãÇ÷îÝkoo(A•••S§NEBÄ A‹‹Kxx8®H"îÞ½ËápNœ8z9™™™p§QÚ¸¸8Þ»Ó\“’’zzpNê#Ê#'{÷î‡@æææ&&&† ÔkiiùäÉÐ{úôi[[[CCƒ––Vuu5ƒÁ]±®®®‡Òh´û÷ïI€ÐÐÐ¥K—Þ»woß¾} .ÔÔü÷ðgff¦‹‹Ëˆ¼/<ˆÜ›-vìØ±fÍggç1® £ªwøny¿¶dÉ’ää䨨¨ôôtÜSO©£ººúúõërrr\.w˜§¡Ž,ÛþaUÙœ?¼h("??ßÑÑüÎÊÊ’––Ù'$$ÄÉÉIœ= öS„X¯ƒ]˜¬¬ÚßÛ no` fee±ƒakk›žžÄ Æôé8»±@7‚ ‹Õßÿ_æ|ôÑG 1“f ±N§?þ¼¹¹™Íf×ÕÕ™ššbeHÒJJJJJJÖ××ߺuk÷îÝð—ÐÍ›7ÉóHĉL ¿™jkkuuuêEõÆ âr¹uuu³fÍ*)) èÑ£GÖÖÖpïÊÆÆÆÉÉ)##›/SSS×ÝÝ ?tww?räA$''ÃåøÛo¿…††:88?~¼½½ÝßßßÙÙùêÕ«@àíÛ·¾¾¾¶¶¶¡¡¡}}}:uêÅ‹ îîî\.+h³³³ýýý8€Ò˜——·gÏ;;»°°0¢$ vvvÙÙÙX½XêóÏ?···wtt¼qã.·œ9sÆËËËÉÉ)** œ£ž••×S///6›Ã6ýÞÞÞvvvðè&n¥@ä4–€´´ôÔ©S x\"ƒóóó8àèèxìØ10ÔÝÝÝýêÕ+‚$$$௻þþ~¤‘pÙÆÑuÈÆ ÜèB¥­©©ñññ±··ˆˆ Á!Q¾pÍÆƆ½hžGV*Y#ñ-V;Å@BÁÇǧ¬¬ üö÷÷/**Bµ$ù®FaÑ¢EðdEyy¹ŠŠ Üñ†vãúõëŸ?þÜ¿ÿýû÷q‹Œˆëa"ÖÃDñŒ l¡“7ÔTÜòôÆ wëÆŠ=¾Ÿ¥chΈïêhãp8S¦ü{[ß”)Sêêê(ªKMM577Gi|ðà˜hnn&a.((Ø¿ÿ;w°ï!˜K–,±°°Ø´iS``àöíÛE֎ݲe lÿ¢E‹LLL¨ä·¢"ÓÞ¼y3<<¼´´7žPz‘½±—/_vvv–——ššš>{ö ÕKOO_±b…««ëƒÚÛÛ‘Ékkk“’’ôõõ ‘½1EEÅÓ§OTŒµ¶¶²X,ð»®®î믿vvv>zôè÷ß²yóæS§Nq8S;;»ôôôþþþ¼¼<‚6oÞ¬££ãëë{öìY ¬ =~ü¸‡‡Gpp0J{]]]rròêÕ«cbbÊÊÊàÆ™„Ïçkhhܼys×®]_~ùåßÿÔK§Ó±</88¸··÷Ì™3ׯ__´h.·L›6-66öêÕ«÷îÝ-©‰‰ ü¢ÊÊÊÒÕÕ•’’Š!Áçóããã²²²¶oßNÄL¥ˆœ† H¡J‚ W¯^¥¤¤¤¦¦~ñÅ$$DÇÆÆZZZ&$$ܸq£ººÚÀÀÀÑÑÑ××÷Ê•+È!11)F¤\¶qtnÃB]¨´111zzziiinnnEEEÈ-ò|ášƆ½Èž‡«Å¬‘ø«b ¡Lª­­„…PíO]]j4¿ÿþ;(‚Û·o#Fª¡+))ÉÎÎÎÎή¯¯‡ HKKkùòå‡êïï¿}ûvssóÂ… q‹Œˆëa\ÖøñŒk?n¡“7Ô[ž÷¦7Fe„ìÅ“‡/¬ßþèï… þ•‘‘Á¹Ã"///'''&&ù°««‹ÅbM›6 ‚ ÀƒËlkk­««›˜˜˜˜˜HÄ@‚þþþ¦¦&›âââgÏžq¹\a•››[__¿~ýzø‰‘‘‘À<â•¶µµµ¥¥åíÛ·UUUõÂÐÔÔÔÒÒ***zúô©™™™©©iIIÉÐÐгgÏæÎ æp[[[çÏŸojj:mÚ´Û·oÃi###W¯^]QQñÝwß!9%$$öîÝ{åÊ•ŠŠ ¹`³Ùÿ ž  :·mÛfoooaaÁ`0¶mÛfcc³`Á‚îîîÖÖÖ¾¾¾§OŸÎ›7¯³³söìÙ`ØÁ`HJJÊËË+++ã x{{ÛÛÛãîÏØ±c‡­­­µµõ²eË ±IÊËË+**|||”””Œ322zqÀC???}}}&“©®®Ž+F%´œµµµ•”” @ûâààðäÉÐ{þå—_\\\pÅ Ñh`I%—Ë…?iˆ’”¹Ó ­ ¯]»Æ`0À6""ƒ7lØàîînll¬££S^^APTT”ŸŸ_bbbXX<”‹#1,Û8ºÛ°€Á¢è‚Óöööùúú*((XZZêëëcwå ×l¬06ì‡éyŠY#÷-6<¨9퀰¯ ==½¼¼<w÷î];;;’0­¡+++ËÏÏÏÏÏollO¼¼¼ÔÕÕ>|üøñýû÷Óh4l‘‘ðc=Œë’"Ãz7ž‰ìÇæ‘¼¡ØòP‡¸Ÿ7Vù¼èÎOç¶GÁÇOb*BÔÛÛ«  ºP**‚Ï‘ÿý÷ßNž<‰ò×£GlllÀoð_¸ÌŠŠŠ––––––ªªª±±±»wï†'à‘ $ˆ·²²òóóóðð QSSóöö¦î+.—›˜˜ %%%l©ÀÏÏ‚ ŒŒŒ}ûöåääÀZêµ´´|üøq{{»§§§ŠŠÊáÇ ÀŽÔôôtyyùo¾ùônoݺåå内…©©©755¡F W®\µmÛ6r³Y,V\\òIBBùfXØ94 ŒöÁµÅÅÅžeÃö°ITUU‰4ÂÛ5tuuÁ¸=*Icc£¼¼<܃122jhø¯kÁpšššètº™™¹•ÒÏÎξ{÷nUUXÛ§¢¢bnnž››keeÕÒÒF:±b(9räÀ999‡•‚( I);MäRX·nݲeË.\¸°aÆÌÌL""ƒáé~dEغu«••UPPÐéÓ§±b# ›ø¸N`tÁiKJJdeeµ´´„ 6³±ÂذÇ- ¡@Ò,aM‹HXDÛGÃò©ÁÄŽàÀD0¢Â 2ˆ…dxØCd1q¢1Žˆ ‚0*›`‡D¯"jÒ"4ØÙéåû£îÔ=÷ô9§O7«IÿÿhUïZU§NÕ[oyyy]Òe$ôIZ/E—ÉdaIù%u¤2PKí>s}6&5 Og[þwi{ÃãÐ.ttõuttÚÚÚÀÚckk«Ô]¿–––˜˜˜¬¬,Éì555à»A###©”mll„Ba__QÇP Áýû÷£££Y±b…¯¯/ˆ°¡n«’’’GGG9t¤GGÇØØØ††Ö&•¯Ý?ü0<<«®®®¡¡qöìYƒ?11qóæÍíÛ·ƒé‘»»û©S§8޵µ5‚ ,+66öܹs˜7ÊÁƒ½½½óòòÈ644œÂ=M]]]@ššjdd$¹MC^€ ^¾|iccƒ;A„)H^¾| Ï4¾¸Þ}÷]‘HÔØØEB‡|a &&&//ÏÔÔ4$$>wss+))yýú5‹ÅRVV&*†ÆÒ¥K/_¾|áÂ…ÈÈÈŠŠŠÖÖV©Uä0Úd¼àãã“••uÿþ}CCCI"TtÄ`Ù²eÞÞÞD¯ YE…ÔädºMG¥u-Y²dhh¨··W___$IîZPÑ Š[X²ÙOÞòrt¢¾,wC‚«û½#)–7µ««kNNFóôôœ™N$egg»ººVVVIºŒ }Œ…1o¬›$¦›éœŽ»~!›¹bå;F£#ã#Ãb‘Aee•õë×#ÒÛÛ[SS³aÃr.‰‰‰àÔÞààààà Ü̉Duuu¶¶¶pL*å²²2}}}¸<Ž¡@›êêj¸: ç×qåÊ•>ú3Ùooo‡ÛD:]w``~Ï©ªª¢çs¸|1kc---zzzóæÍSRR²¶¶~üø1˜ýøãóçÏ ܹsçÎ;wïÞýÿþßÿÃìýùÏîêêúá‡0dµµµÃÂÂ6ˆŠAšÍÍÍ !2>>NT… HŒ&Ÿ@o½té’X,^¶l.ê¿xñâùóç€f}}=ÑÒ EQ%©Í®éЃƒÔVŠy]-Y²$!!ÍfGGG÷õõ¯,è ½$ÅÆ-,Ùìe²ôKD933Ó××wçÎuuu °ÅKR ’Áßß¿¾¾~ëÖ­Û¶m;t褾Du]]]1å322àä†HG"šèºááá^^^¾¾¾—/_>qâœñEcÁ‚óçχ lþô§?iiiÅÅ¢¢"ÌtÖÃÃãÖ­[ãããÿ»Ò©£ó—¿üåôéӒLJ‡ÝL–poï IDAT6E»Z[[Ëb±¼¼¼ÀZ&‚ ›7o.,,ôóó#*€AQQQMM üoggç–-[6oÞÌ`0pO{¨©©ÅÇÇçæænÚ´i×®]Û·oGt!_Ü*** ÏŸ?ß°aƒ»»{aa!"ÁV¯^½`Áww÷ØØXWW× .€0Õ«WZYY‘ƒ4GGG>¼iÓ¦ýû÷ïß¿_[[›¨ M>/œ§HY£ÉêŠD( ¬¢¢bff&7*Ôæ¦éÈ[W\\œ’’’¾¾~EE…³³ó’%K¨·"\±‰ S<«„«)ÑÈ@e|¦Ø—åvz‹hÀ@(²Ùl“œœ©§û§u “wEÅ;¸&²À¬¼R§‰© ØØš*®ýø¿ìÁ¦xò_vÖzzzð¿?×reš¸„y+¬ækO‰<ššš³KAéÈó)ëËl aaaÁd2'yçéïÏ,oÑÞ̺éÌÍÍ555•••===©Tša±åës¶Yªªª®[·îƒ>˜›_ûÌŽ_ùs­Ù¢% u)-xý\ËQ™x3wï©dÙ+ÆV&’sO3ƒU«V)Ìò;0ÚÛ‚Y7Ý{g{ùÇœ[¾. h–ŠŽ?­˜Í(~-.÷f¥ ( € ( €b6&?¤fáGþs"ººˆNƒ¤²éÈDY&í$cn¢^W*Èu$§ùæÍ›ööö™L' ˆ@ xùò%Å«Þ"œ?^òΓ)Á•+W$¯$R˜bîK%nÞ¼{ùòå6æÛe(‘HÔÞÞÞÝÝ-5SÏt¼•¦©° c–w*A¾1¢6_WW7þ|.—»gÏÇôððp:Îår=<<Àóׯ_§¤¤<}ú”Éd¦¥¥I¥±yóæÜÜ\ "Ê……… “¸þ…ˆ‘ "‘(::šÏçƒ ¹¬¬,˜t‚¨nxx8𣉉IQQE[ÑÄÔåp8/^¼ ܸq#u¾aaannnžžž¶¶¶0½2›Í¾xñbNN‚ žžžcccàÂZ55µ«W¯Ž}ýõו••===ººº'Ož”cƒcÇŽYZZÍz§***277—ï*Rr”••Ñh4ò¼—ÉÉÉýýýñññÀþ|>¿¼¼÷ÝwYYYgÏž…©I&ƒ={ö€oŒžžMMMI¹k×®mÛ¶Í¢)æ”Tl6;777**j||ÜÛÛ;,, ÿ ’¿Ê'öÛe¨‘‘‘ììì[·nYZZ‚9Ù'Ÿ|B”@d Aeœ”¯° ¼³1„ôde`` 8ë÷àÁƒ¨¨(ð:IKK³µµ Þ²e‹½½ýûï¿ ˆ¦¦æÁƒ«««1·ÜÑxþüùÂ… Á\ˆ2˜vœÜ1::ZVVÖ~ètº““Óõë×A1:Ž»¾‚K¢¦¦äp#¡LHDeeå_~ù¥§§gbb¢££÷S•¤.F£ÑhÅÅÅ€ëä:ÑD×…·µ··›››KåK//¯øøxxB–===………‡‚gg|}}UTT$ÞdBNNôWhhè;w"##]]]O:ÕÛÛÂb±.]º ¼zõ*00ÐÉÉ)22ìJŸ>}ú×_MOO÷òò …’ÙòòòãÇ£Ycê‚OüãÇ»¹¹¥¦¦âÖÅ¥ÿí·ßúúúº»»ÇÅÅÁ]ãW¯^¸¸¸ÄÄÄ m .×rvv†ë‘$X»ví­[·ÀøÊŸZSHbLnÌ1RA\¸p¡´´´¨¨ÈËË‹ÇãEGGƒ·xhh(›ÍƈÿŠë_I±qå|K ÕÝÝ]\\:*++ô¾]]]‡vvvöññ)//eêëëÁïÚÚZPñöíÛaaaÎÎÎGÅB!'q!Sax fcTâÆ mmmÁì­§§G À”` , †¦ñÓO?œaä”kjj>ÿüó[·nIWA $ptt´³³ÛµkWhhè¾}ûä[üOJJÚ½{7”íÚµ ë½Tq_Ïèº'Ožäp8¸/W _’Ù˜®®.îÅ‘‡Ãáô÷÷ÃÛ~ÐÓ>&“ÙÔÔ4™æÄãñø|>d÷ÕW_±X¬äääsçÎEDDøùùEDDœ>}Z œ¯_¿>22îñóó333 9s挾¾~GGøXêèèHJJ’ä€Åõ¯¤Ø¸r¾¥†#XAÄC _±X|äȃQPPðÙgŸ}ñÅ Ù}{{;¸l”s¾ŽŽŽœœœO?ý411±¾¾~–( €b6ö¿ ¿§àöíÛ‰‰‰à¿`¿ ni©««S ÇÐàóù c e''§„„ss󌌌ŒŒ " 䟘ÝÝÝuuuOž<+(2¡²²²³³sûöíð‰ƒƒ“É”ª#.0uy<Þëׯ_½z%9%’äK•¨¨¨ÜÜÜÆÆFÌŸJJJRRR@°E__Ÿªª*æ>5mmm’-‰‰‰‰Æÿ ©á½{÷îuqq±³³£Óé{÷îuppX³fÍ›7ox<ÞðððãÇW­ZÕßß¿|ùò‡‚ï]¦¥¥¥¯¯[ÀßßßÅÅ“Æ]<Ù±c‡———µµµ™™YCC¦.}‹ebb¢§§geeÞ.ããã=ò÷÷×ÔÔ\³fÍ¢E‹€Ý”””@ü¢P(¤’ÙÌÌÌÂÂâöíÛ"‘¨ªªÊÙÙ<ŸrSHbºMÛ¤b¤B7uuu }}}¸M"‰1åqå|{ Õß߯¡¡Îü)‰Ð=òmhhhll ÐÓÓsuuµ¶¶&ºú ((ÈÉÉiõêÕëÖ­»ÿ>EÝåvP@nÌé¸1AîÞ½›žžž }ðchhH[[L¡¨¤¼“¤pïÞ=©”uuuíííííí “’’8ÃnÐH––¶råÊàà`Ÿˆˆ###ê© …‡&IM¤#ƒ9Ó±cÇ*** *|Ѱ¶¶Þ´iS\\ÜÞ½{ÑÏ÷ïß×c?~<66öìÙ3ôG0ÇCo’bÀçóSRRÐOÒÓÓÉ“B#())?|ÖÕÕ ¸$9“&)`hhHÅp#m7X—ˆ~yyyUUÕÈÈHSS“‹‹ ‚ Ožƒ!I÷ïßw£®X±Â××…P·UIIÉÀÀÉñ$:R‡££clllCC k“ÊWôööÎËË#*°hÑ":þðáC8_ØžžžDU q7@僮®®@ HMM522Âü ìž õü ¸ôbbbòòòLMMCBBàœrppphhœtC³XºtéåË—/\¸YQQ!yDWr6–““C£ÑÐvž&SLÒ²šâw)ÿâÊùöÊÒÒRMM­ººšd(@SëëëZ/_¾„ó<°|%0ñÁ/_¾¤ž÷uj‡ ÇœŽKLLüðÃçÏŸ?88888º™ŠŠÊúõë‹‹‹éíí­©©Ù°a9#\: ßÖÕÕÙÚÚ‚ÿR¡\VV¦¯¯Cæ1H`ccS]] ~×××ËzÉæ•+W>úè#Ìt{{;Ç#בèºð‹VUU=ŸÃåKmmí°°°½´´´vîÜyíÚµžž`Ô”ƒáêê:3 Édš™™}ÿý÷ ÄDS!bll "Wˆ `pñâE(ëÊ-ÇÓÑÑa0---\.Ä[ZZ\»vM ;˜™˜˜hnn-AññqŒ<`Q³ÈaeeõèÑ#tö„©2ÅÔúB&S`óÜ‘j2Àõ/E9ß^C½óÎ;[¶lÉÌÌ„‘ø$SUƒqãÆ ±XÜÚÚúäÉðÅhbbÒØØ8<<‡n«µµµàï{÷î­^½ZñâW@±6†y¾±ÚÚÚÚÚZxPîêÕ«`3+$$$,,, àõë×ÁÁÁp«©©éСCÃÃÀÅb}öÙg›7o&¡Ãáp/^Œ>êOD933óîÝ»"‘HGG'!!¾ç$)Éàïï·uëV%%%“¿üå/’úÕhllÜ¿?¦|FFƲeËöìÙC¢#MtÝðððÞÞ^:.Nœ8#ùˆøJ…‡‡ùÉàà`‘H´mÛ633³ÎÎÎÅ‹gffbBj¦ 2=::šÅbéé陚šþãÿ@dóæÍ±±±wïÞýá‡p `PTT´lÙ2°ƒ®+Ÿ«W¯^°`»»»©©©««ë… >øàƒ¥K—ýýï?}úô¦M›˜L&h{£££`ûXEEeÿþý`ç-—Ë•üHˆŒŒäóùè4"SeŠ©õ…L¦À4æ¹#Õd€ë_ê-ùí5Ô¡C‡h4ZPP±±ñ¼yó¸\î§Ÿ~*YLMM ìäæååýöÛo~~~àTûÖ­[“’’Μ9òèÑ#X¾³³sË–-¿ýö›î‰+¢q2V@ŠPЉ‰‰fŸÿýÛø¿!)ŒaÜX*e¤¢³³SWWw2»ø999ï¾û®———TÊccc†††˜a‘ˆ~ûí7 ¹y ‹_¿~- gônP@ÐÖÖÆ`0¦äæu0&Ê”ñ D £÷€ÁÐÐ<`/Y€\t]ùÐÑÑA„ÏçCRcccB¡P²Ùðù|mmmô,vll¬¼¼|bbâ믿þþûï¥.™&SÈIšâw)•¤©ËùVJ$½zõJ]]„Œ¨ºººèDƒ£££***èå|P×ÁÁaddˆ¤€30Ûùhçj3J4ÿ~æªÚPÇœŽ#‡¬›}’ÆýN’¤¬®®naaA¨8˜…)¹’Ü{Ñ…YmJÒ|§¦¦ÒéôææfÜij$ÐÕÕ• =’,@®ŽLS1\úðm&E4’d' Ùl¶‰‰INNõ©Ø”›BLÒ¿K©¨7'I9ßjC)++SLè%9¢eVUU•)âBfú…8‹¼ÉOSÎÂÃÃg‚“ÇÇÜÑÑQPP@´¡óÇNONNV4 €8zôè¢E‹vP`&Ñ9¶ôRIÓ%j…¨Ïöl ‘7¦€T`ccCýœ” (ð‡ÂªU«FP`æ±ÝÓŠbIvù3dîçS@P@xë°ØXGK]YsMkžêà¨`hT88&ˆ&¢ ¡h\ šŠ&ÿ“aNßS‰ ˆP($ºø¨«« ÷Æ1Dâ”9™(Ë4Ë”|8<<ÜÛÛ+_]© בœæ›7oÚÛÛ§55‘$ÁË—/)^¥ 9&&&ÚÚÚÀ½OS‚+W®À;mf²îÓdºóçσ{f]àÙ’D$µ··wwwÏ|>}™ÆsÅNÑs:n,>>¾®®nþüù\.wÏž= õ¨N§Ó¹\®‡‡G@@xþúõkp÷“ÉLKK“JbóæÍ¹¹¹D” @& pc "D"Qtt4ŸÏW§eeeI´Õ Gs411‘ÌA¤#ML]‡c``ðâÅ‹ÀÀÀ7Rçëááææææééikk ³r³Ùì‹/æää âéé966®©VSS»zõêØØØ×_]YYiaaÑÓÓ£««{òäÉI^Ä{ìØ1KKË   ·±‚c_èL`2!;;ûöíÛzzzÏŸ?ÿÛßþ&ÓÉ"”••Ñh4Üëíeª›œœÜßßZŸÏ///‡¡Öß}÷]VVÖÙ³g—/_>%–”ll3éˆÉK‚6Ý STTdnn>%‡f¨´“={ö€ÏΞžMMMphz×®]Û¶m›aIÉÎξuë–¥¥%˜“}òÉ'¡¡¡ÓÝ©©Œ½òV@1›zÇ‚³~<ˆŠŠrqqƒxZZš­­mhhèððð–-[ìííßÿ}A4558ë~þüùäç燢‚èèhôAw9äíí-SŽŒ©ÂÙ³gAû‘---W¯^-))ÑÐÐ …³«‹T°Ùl777øE§ë›§`ÛŒ9bj%™¼0³ØÎ;~ìØ±ÃÛÛÛÇg6Qþþ÷¿·¶¶^¹rœî‰D$WâN!¨Œ½òVàw åY—€$#?L»À`0ø|>¸ébtt´¬¬ ¬ýÐét'''˜ò”N§ã®¯àÒ¨©©™I(“R ‘AYYù—_~éé陘˜èèèÀ]r ©K£Ñh4ZgggqqñÀóäää‚‚r‰h¢ë„FíííèË"‰øÁËË+>>,þ‘ §§§°°ðСC0í¯¯¯ŠŠ yÂX©ÈÉÉþ ½sçNdd¤««ë©S§z{{CBBX,Ö¥KÿsÆåÕ«WNNN‘‘‘`WúôéÓ¿þúkzzº———P(”,È–——‡„„?~è<›Í>~ü¸››[jj*xØÖÖàââQ^^¦’`Æ­‚K½ìúæÍ:_EEeÞ¼y]¾ýö[___ww÷¸¸8¸MÄʆö#´5ˆêb°víÚ[·nß pÂ1åN˜VG »’TÈdvrapå‡À˜,a(HzPR;\×Sô5fR’îîîâââ°°0˜hCYY^b‹áÛÕÕuøðaggghÏ€€x7@HHHmm-¨xûöí°°0ggç£GâF¶½¸©°ŠÙ؃JÜ@aa¡­­-(ßÓÓ#`J° PCÓøé§ŸÀÎ9åšššÏ?ÿüÖ­[’ÁU íììvíÚºoß>ùê“’’vïÞ å_»v-¸RSªŽ¸/EtÝ‚‚‚“'Or8ÜW†/ÉlLWW÷f·ŽŽ‡ÃápúûûÁ¼aéÒ¥èi“ÉljjšLsâñx|>²ûꫯX,Vrrò¹sç"""üüü"""NŸ> "«’’’œ¯_¿>22nòóó333 räƒÁ(((øì³Ï¾øâ‹gÏžoTpï(æ|999Ÿ~úibbb}}=üÀP@·r6&õžJ€Û·oWTT$&&‚ÿ‚ý2¸¥¥®®N1 C```€Ïçƒ<™$”œœÌÍÍ322222ˆ(vww;88ÔÕÕ=yò|­Ê„ÊÊÊÎÎÎíÛ·Ã'L&SªŽ¸ÀÔåñx¯_¿~õê•ä”H’/TTT¢¢¢rss1*))III}}}ªªª˜{Q´µµI¶&&&ÿ/¤†âîÝ»×ÅÅÅÎÎŽN§ïÝ»×ÁÁaÍš5oÞ¼áñxà’òU«Võ÷÷/_¾üáÇàÛ”F£iiiéëëãð÷÷wqqßÖ$åwìØáååemmmffÖÐÐ044T[[¨­­moo¿hÑ"Éûa0UHˆCÄÅÅgdd=zttt­ ‚ ,ËÄÄDOOÏÊÊ ¼`p?zôÈßß_SSsÍš5hÙˆ(@kÔÅÀÌÌÌÂÂâöíÛ"‘¨ªªÊÙٙĆò9¥¾¾žÍf³Ùl.—;Žì†T$¡h:YåÇ´I Ói'ézê¾&ÂLJ. @ç}‰DèÑòmhhhll ÐÓÓsuuµ¶¶.))!Ñ"((ÈÉÉiõêÕëÖ­»ÿ>EÝåÊøƒ`®ç»{÷nzzzvv6SÀ¡¡!êsppJ‚{I:÷îÝsppJYWW×ÞÞÞÞÞÞÐÐ0))éÀ0ØMiii+W® öññ‰ˆˆ022ò÷÷§n(¡P˜‘‘®®“UG*s¦cÇŽUTT@.Tø¢amm½iÓ¦¸¸¸½{÷¢Ÿïß¿®‚<~üxllìÙ³gèV‡Þ$Å€Ï秤¤ Ÿ¤§§“߯ ¤¤Võà†l]]@ €$gÒ$ %y‘”‡»À€OŸ>7où T˜*R¥سgÏÊ•+ÃÃÿùæL„ryyyUUÕÈÈHSS¸Å—Ñ“'OÔÔÔæÏŸ/Iœˆ´I]Üå±ÒÒRccãÅ‹ĽSè”­[·JFk͘#d•„¢é䟜ÆtDÚIº^&_Ϻ$ cxxxppPKK úè#ÌUŸª-t IDAT{{;Ç#בèºðëSUU=ŸÃåKmmí°°° ÓZZZ;wî¼víZOO°aJJ ƒÁpuu™†Çd2ÍÌ̾ÿþ{nŒA” Q .^¼‚Z(–#þ’%KØlvttt__ŸÔ;¡‰ˆCî/^¼xþü9°d}}=XK€ºðx<ƒÑÒÒÂårIéYZZ\»vM 544R¡@T.Ob–F¬¬¬=z„ÎÝ0UN¡>š*G »’ 7Ýd䇦“»Sàº^>'Ù=å–äwÞÙ²eKff&ŒÄ'ÂÒ¥K Æ7Äbqkkë“'OÀW¨‰‰Iccãððp\\ºÕÕÖÖŠÅb>ŸïÞ½Õ«W+& ¼Å³1©qcµµµ×¯_wúÚÚÚÀóæææ€€ÿàà`¸‚ÕÔÔÄb±Îœ9sïÞ=‹UXXHN‡Ãá,^¼}Àžˆrff¦¯¯ïÎ;ëêêàÛE’‘ þþþõõõ[·nݶmÛØØØ¡C‡$õ%ª;00ÐØØ(9YÉÈÈ€‘ D:ÑD× ÷òòòõõ½|ùò‰'à,™ˆ¯TxxxØÙÙ‘vuuݶmÛž={X,Vwwwff¦Ô×áTă×ÖÖ²X,///°f‰ ÈæÍ› ýüüˆ `PTTTSSCB_~ùåØØØ¿þõ¯uëÖIMêADr¯¯¯ß½{÷ƽ½½•””À6%ÔeõêÕ ,pwwuuu½pá:ð ƒ   S§N9;;?þœÉd‚vN‘n]A¸\.úÄ@ddd\\Z÷©r ‚ ±±±þgºîJòIBd:rH•šNîNAäzùžL÷œŒ$‡Z¿~}PPЖ-[üüü*++q77ÕÔÔâããsss7mÚ´k×®íÛ·ƒ“ò[·nÍÎÎÞ¸qãŠ+àw8‚ [¶lÙ¼y3ƒÁÀ=ÅE4öâB¦Â ü>#ž)KþüèEýßcÉßÀ2RÑÑÑ1444y²³³óóó©Pmii H<o’2OD"Qwwwggç ó˜˜hnnœjû÷ï¿yó¦LUúúúFGG1"õ÷÷“• z{{W®\ >è'I\ ´¶¶ŽŒŒéÂçóÁ´v¸Åm¢T( ëŽŽŽ8;;·µµÍ¢SfÒrƒÈì“”c:ù´ÃuýdžI„BáË—/¹\.•QZ  ŸŒŒŒŒ£Ÿxyyݹsg||Ф€høÿ}óQgwÛ7üfd\,¿™àö6q9¯·ö?hîý¹w‡ÓSñ„{,ù›˜˜˜·øžJY7û$1<<ŒûM#IY]]Ý‚:"P9p0óPRRBóÍh4Ú”¤äNMM¥ÓéÍÍ͸‰gI ««+)ÌK„[@V‚’ˆ‹‹SRRÒ×ׯ¨¨pvv^²dÉ䉫¨¨˜™™‘袣£7nȹH^Aº®P(d³Ù&&&999TÞ§Ï)3é¹AdöIÊ1|Úáº^eÅÔJ¢¬¬L1¡—ä(M´nªªª*S‡ ­ ƒ­™aVùsíÇÿe HÙ¢§§~ü—ÝÿDsÿ\ËA”™888€ðÏY¤ ÀäA§Ó•••###e}ñÌ ÌÍÍ555•••===e:ÉñvAUUuݺu|ðÁÜüù8âÒæ&,,,˜L¦â,¤D(d·ýi‰¾¶ºMI¦¬FSˆ&âq¡H(‹Db‘X,‰Eb±H$~ÑÔ 2ñfNßS©€T`ccCýLÓ¬ã½÷ÞS$ÝV8B!ÿ[U«V)Œ ÀÔb–oFùÆnP@P@³±YùÉJ¡PHtñQWWÑq}Ét²$td¢,“^’‡‡‡{{{å«+ä:’Ó|óæM{{û”§"‡@ xùò%Å« ÇÄÄD[[¸÷iJpåÊxÿÌLÖUÓGnÞ¼{ùòå¹,çùóçÁGLÃÊÔàߟ*0ØÍJ˜…Ÿh³2>>¾®®nþüù\.wÏž=à>o0±§Óé\.×ÃÃ# <ýú5¸{‡Éd¦¥¥I¥±yóæÜÜ\ "Ê……… “…’’›Í&¢@$ƒH$ŠŽŽæóù T.++K2ø”¨nxx8𣉉‰äÛD:ÑÄÔåp8/^¼ ܸq#u¾aaannnžžž¶¶¶0ƒ6›Í¾xñbNN‚ žžžcccàrh55µ«W¯Ž}ýõו••===ººº'Ožœä¶Ë±cÇ,--ƒ‚‚ÞÆ~èíí†Î¿%²³³oß¾­§§÷üùó¿ýío2,!BYYFýÞ^¦ºÉÉÉýýýñññ %ðùüòòrýÝwßeee={vùòåSbIÉÆ6“ŽÀHBÔ#¨‹Áf³sss£¢¢ÆÇǧUÚI¢¨¨ÈÜÜÜÒÒrîˆDrÃNkg™ZÖ (fcS¶*F7Îú=xð **ÊÅÅ âiii¶¶¶¡¡¡ÃÃÃ[¶l±··ÿý÷ÑÔÔÜJ1::ZVVÖ~ètº““Óõë×A1:Ž»¾‚K¢¦¦dù#¡LHDeeå_~ù¥§§gbb¢££÷+Ф.F£ÑhÅÅÅÏ“““ Èu$¢‰® Ó®¶··£/‹$âK//¯øøx°øG‚žžžÂÂÂC‡ÁI¾¾¾***’ o2!''ú+44ôÎ;‘‘‘®®®§Nêíí a±X—.]^½zèää v¥OŸ>ý믿¦§§{yy …BÉ€lyyyHHÈñãÇ1܉ʳÙìãÇ»¹¹¥¦¦‚‡mmm...111ååå`* ¦Ë¸Up‰£—]ß¼y²®«¨¨Ì›7£Ë·ß~ëëëëîî7£‰AÙÐ~$¢€¶Q] Ö®]{ëÖ-𻡡ÁÀÀ¾¼§Ü)ÓêtW¢Ø#ººº>ììììããøb4b\¸p¡´´´¨¨ÈËËëèÑ£W®\Õ‡††vîÜ9<ŸÙ}õÕW,+99ùܹs~~~§OŸ‘UIIIÎÎÎׯ_÷ ùùù™™™ž9sdÇdO:åããsäÈIá–OJJ²··OOOÏÏÏ5‰‰‰EEE7n¬­­w­ttt€ 4n\âVVVnnn¹¹¹ qbt155MJJºtéRuu5Œn!’Éd»»»wttÀ¦NDm ¢º¸ººÞ½{h}ãÆ ô"ÖT9åéÓ§åååååå3àÜnHÒ#Äbñ‘#G FAAÁgŸ}öÅ_<{ö £)ÃËËkÍš5Ÿ|òÉ™3gììì®]»ét:¹´¸ BHµ­X,NKK;|øpYYÙ¾}û$«àª D’Z—z‘êtI^R­6¬¾¾¾Ü™¼ÁËÄzšÜ¡€b6F R喝}ûvEEEbb"ø/Ø/ƒ[ZêêêÃÀ1tø|>ÈNIBÙÉÉ)!!ÁÜÜ<#####ƒˆ FFFº»»êêêžUUUÌ&ÚÚÚýýýD”'&&ÿ/¤^Ĺwï^;;;:¾wï^‡5kÖ¼yó†ÇãKÊW­ZÕßß¿|ùò‡‚ED¦¥¥¥¯¯[ÀßßßÅÅ3‚“”ß±c‡———µµµ™™YCCÃÐÐPmmm`` ¶¶¶½½ý¢E‹$ïrÁT!!œ‘‘qôèÑÑÑQ´.‚°X,===+++ô¥FFããã=ò÷÷×ÔÔ\³f Z6" Ð$u1033³°°¸}û¶H$ªªªrvv&±¡|N©¯¯g³Ùl6›Ëå΀#$»!yhhhhll ÐÓÓsuuµ¶¶.))Á¸ .l«««khhèëë»»»777ƒy@qqñ¦M›È¥•ª TÛ*))Y¡P¾Qq…Äy]êý…ŠÓ%y¡AdmhXô…lÔ£Òàeb=­îPà­À\Ï7v÷îÝôôôììlØàÀ¡¡!mmm0…¢’^R’À½{÷¤RÖÕÕµ·····744LJJ:pà vAS AZZÚÊ•+ƒƒƒ}||"""ŒŒŒdJØ( 322>L’ú™HG*s¦cÇŽUTT@.Tø¢amm½iÓ¦¸¸¸½{÷¢Ÿïß¿®‚<~üxllìÙ³gèÈ ‡Þ$Å€Ï秤¤ Ÿ¤§§“§^„FPRRó~8öÕÕÕ ¸©!9“&)`hh(É‹¤<Ü&|úôé¼yóŒI$ÇT‘*-Àž={V®\þÍ7߀«*!ÊËË«ªªFFFššš\\\ˆ=yòDMM ÷ ?" Ð$uq—ÇJKK/^ úÚÔ:eëÖ­’qc3æ©=‚ËåjiiÁy“Éìêê’JGWW×ÁÁáÖ­[žžž¯^½‚¡“QPªmããã?^QQqâÄ *£$u©÷ŠN'á%“µ© F¥ÁËçèir‡ŠÙ˜€¸1¢ä ---111YYY&&&ð¡‘‘‘ŽŽN[[Øhmm•ºë‡Kî?zxxP§lcc# ûúú †$Ü¿\»bÅ ___@ÝP%%%ŽŽŽrèHŽŽŽ±±± 0¬M*_IåN™EG÷`«¾¾>ð‘ðòåKøR'·Ûúõë333Åbñúõë¥îLQTܶK—.½|ùò… "##+**À1pŠypHêR·$Å’¸¼¤Z{2.¦Òàeb=ÝîP`îcNÇ%&&~øá‡óçÏ›S***ëׯ/..F¤···¦¦fÆ ä,pé "‰êêêlmmá¶‚TÊeeeúúú0dC666ÕÕÕp'EÖK6¯\¹òÑGa¨ÚÛÛa(‘ŽD@×€K ªªªèù._rhkk‡……=xð€h˜ÐÒÒÚ¹sçµk×zzz€ SRR †««ëÌ49&“ifföý÷ß!ãiŒALQ .^¼B:(–ô’%KØlvttt__z·B&i!÷/^<þX²¾¾|IC]x<žŽŽƒÁhiiár¹$‰ô,-- ®]»&ŠŠŠÀ-Ô)Õ…Ë“˜U++«G¡ó L•S(b îJTzÄÒ¥K Æ7Äbqkkë“'OÀ×Ô”äc©¯¯/77Wò8¶| ’Ûvbb¢¹¹ŒŠ‚€t R… ¯KÝ•TJâòBÏ`p­-7;* ^ÖÓê³1)7V[[{ýúu§ÿ ­­ < innð÷÷†+XMMM,ëÌ™3÷îÝc±X………ät8ÎâÅ‹Ñì‰(gffúúúîܹ³®®.!!¾]$)Éàïï___¿uëÖmÛ¶:tHR_¢º’“•ŒŒŒ’’r‰h¢ë†‡‡{yyùúú^¾|ùĉÐ/D|¥ÂÃÃÃÎÎŽ¤@pp°««ë¶mÛöìÙÃb±º»»333¥¾§ H¶¶¶–Åbyyy5KA6oÞ\XXèççGTƒ¢¢¢šš‚¸øòË/ÇÆÆþõ¯­[·ÎÈÈHjR"â{}}ýîÝ»7nÜèíí­¤¤¶)¡.«W¯^°`»»{ll¬««ë… Ð_:uÊÙÙùùóçL&´sŠpë"ÂårÑ'6"##ãââкO•S‰ýð?àp8ÓítW¢Ò#ÔÔÔâããsss7mÚ´k×®íÛ·ƒmG¨)uuuKKKŠg€¤*HnÛÑÑÑÇoÚ´iÿþýû÷ï{ÊR… ¯KÝ•TJâò‚ ²¶Üì¤6xùXO«;x;#ž)KþüèýŽ%Ӌ±äo`©èè蚌<ÙÙÙùùùT(ŽŽ¶´´ P¤@7I™§"‘¨»»»³³s†ù‚¯½ÁÁÁ)¡¶ÿþ›7oÊT¥¯¯ott#R?IY ’ ··wåÊ•à«z’ÄAkk+8ˆ« ŸÏ?ÐÚábtt·‰R¡€®;::Z\\\PPàììÜÖÖ6‹N™IGÈ'H4•Dddä•+W¦PA©¶íïï …2 I½.uKJ-)ÉKªµ'ïb¢Î"7ëiu‡3 ÿ¿±o>êlârû†ßŒŒ‹Åâ7#ܾÑ&î çÕÀãÖþͽ?7ðîpz*žp%3§ãÆÈ!ëfŸ$†‡‡q3SHRVWW·°° NTÌ<”””àÞëL‚F£É—éƒÔÔT:ÞÜÜL1Í&:LDR¤wÞy‡¤€¬%§¤¤¤¯¯_QQáìì¼dÉ’ÉWQQ133#ÑEGGü@kG´ƒûœ t]¡PÈf³MLLrrr(¼O“SfÒ2Ar4ÀhŠAggçÏ?ÿL¾`#«‚Rm+)¹2Õ¥nI©%¥Š$ÓØKQ0¢Î"7ëiu‡³…C)÷ˆþàý¿û´Y”ÊÉÊiBxxø¬SP`òøøã;:: 0›s»wïnjjêí튊Z¹råïÕ)t:=99YሩÅ?þñêüÒÒP`ŽãTÄZóc¯+ŸvÏþlLê=• (@666666o‹´ï½÷Þ$oäTàéˆ È´! hi (0ð¬Í⪘ ( € ( Àtã-XC(Ä …B.—‹›C«««ëwÞÁM S¼P¡#e™æš’W ŽŽJÍΊ[W*Èu$§ùæÍ›þþþ… ¥PŸ‚ŽŽ---E¥ˆóçÏøá‡So§ÀÛ‚ŽŽ@P^^þßÿýßÖÖÖ[·nî¶1%ÔˆˆžUà€ßCÜX|||]]Ýüùó¹\îž={@žP%<<œN§s¹\€€ðüõë×àî&“™––&•ÄæÍ›sss544ˆ(&$$€Làz " D2ˆD¢èèh>Ÿî—ÍÊÊ’Œ%ªŽæhbb"yÁ6‘ŽD41u9ŽÁ‹/a6#*|=<<ÂÂÂÜÜÜ<==mmmaþh6›}ñâÅœœA<==ÇÆÆÀåÐjjjW¯^ûúë¯+++-,,zzztuuOž<9É]•cÇŽYZZÍñžéíí†Nµ%S­¢¢"sssÌë-99¹¿¿?>>X›Ïç———ÃŒß}÷]VVÖÙ³g—/_>%*L+ OOÏÑÑQ‘Hdmmíëë+ëÉŒ©RplllbbÂÌÌlÆ >>>³èú3gάX±ÂÄÄ„ÍfçææFEEaRjAà¶ êøç?ÿ¹lÙ2hðIR“$‚¦ÿøñãû÷ïúé§ŠWµе±ÙŸI gý‘ ::z’Wçy{{³X¬imögÏžME&y¨×‚³a777𻬬 oª—‰…L8zô¨££cNNN\\Üõë×g&Æ‘‘‘üquuõ±cÇ@^å™t=Ä¿ÿýïÎÎÎÀÀ@AîÝ»goo¾OlªÐÔÔôÍ7ß,[¶¬©©)///))i ½‰KýúõþóŸ Æš5kokþ ÇãÑ„@4! DÂÿÍÓ>›Ù_I²ðÀ´ ƒÏ猌 2::ZVVÖ~ètº““Óõë×A1:Ž»¾‚K¢¦¦$å#¡LHDeeå_~ù¥§§gbb¢££^=„I]F£Ñ:;;‹‹‹8WD Èu$¢‰® ßvíííèË"‰øÁËË+>>,þ‘ §§§°°ðСCp/Ø××WEEEráM&äää@…††Þ¹s'22ÒÕÕõÔ©S½½½!!!,ëÒ¥K À«W¯œœ"##ArùÓ§Oÿúë¯ééé^^^B¡P² [^^rüøq ÷¶¶¶€€—˜˜˜ˆˆˆòòrAêëëAÚÚZ0k”œK–Äȃ[‹k×®½uëøÝÐÐ```'S¥¸L,6›}üøq77·ÔÔT"­¡ jjj .¤Óé q~ûí·¾¾¾îîîqqq0é9F*t“ÆÌýýýá­T#Àöÿ§?ýI$Áœì¸㪆û:÷¯¸Mèßÿþ÷öíÛ¹páBiiiQQ‘——ÇÃ5ˆL*£aeeÒaŒõÕW˜©XWW×áÇ}||€Tàá_þò77·üü|"‘Ðߺu+lB ( À,ߌâÆ¤+,,´µµ%{zz<[´`Á‚ŽŽŠìÐt ~úé'3ŒœrMMÍçŸ~ëÖ-ɱR £££Ý®]»BCC÷íÛ'ßúRRÒîÝ»¡ük×®WjJÕ÷…®[PPpòäI‡#9ÏäK2ÓÕÕŽP²££ƒÃáp8œþþ~p•:?»²²2“ÉljjšL[âñx|>²ûꫯX,Vrrò¹sç"""üüü"""NŸ>-€FÎÎÎׯ_÷ ùùù™™™ž9säÂÆdO:åããsäÈ ÷ÄÄD ‹¢¢¢7ÖÖÖ‚÷w{{;¸ÛÔóÔŽŽÌ÷nIŒ<¸µˆàêêz÷î] Ã7Ы’S¥¸L,…¤¤${{ûôôôüüü––"û òâÅ‹~ø¡°°ð¯ý+xbjjš””téÒ¥êêê_~ùW*Üî ‹ÓÒÒ>\VV¶oß>ŠF€NÉÊÊZ´hÑâÅ‹‰ÜD¤ÑCàDÜ¿J6!‘Hô믿‚ÉËËkÍš5Ÿ|òÉ™3gôõõq "“Êœ;wÎÈÈè·ß~»{÷.†Ú‘#G FAAÁgŸ}öÅ_<{öL$9rdhhèÛo¿½zõêÚµk‰|DBÁ‚OŸ>U¼ƒP`NÌÆ¨¬Ý¾}»¢¢"11ñ–û[ZêêêTnü•¤000ÀçóAvJÊNNN æææDH022ÒÝÝíààPWW÷äÉøýM•••àCÀÁÁÉdJÕ˜º<ïõëׯ^½’œIò%‚ŠŠJTTTnnncc#æO%%%))) ‚­¯¯OUUs\@[[»¿¿ŸˆòÄÄDãÿ…Ô‹8÷îÝëââbggG§Ó÷îÝëàà°fÍš7oÞðx|gcàÛÝÓÓ“¨Š¡¡!î¨|ÐÕÕ©©©FFF˜?7I\,Y²dhh¨··W___$¡kÁÛT HÝgÄ-)¹-N}6–““C£ÑÐVZÅeeA]kŸ¬¬¬û÷ï3Œ˜˜˜¼¼æzþüyUUÕ‚ À{–A›±¹¹ÙÓÓSSSS,³ÙìžžŸÉlðUVVêééÙÙÙ!rùòåÕ«Wƒ«Ï;·~ýúwß}W |÷Ýw;wîÔÔÔ¼zõª‰‰ÉêÕ«UTTÆÇÇÁJgyy¹®®îÊ•+Åb1n4Y°ž¡¥¥.0÷2-Y²¤©©©««kåÊ•L&³°°ÐÊÊŠÉdþôÓOÍÍÍnnn¦¦¦º:nI(š5nõŸ~úill ,H@Gäçç øùùÑh´óçϳX,##£)Q\h ×®][¾|¹••®Ö/^üàƒ,,,êêê>|¸k×.wçÎ;v ”••1™LpõF*t“FÏöø|¾žžÞððp^^Þ®]»TUUÉüàƒ,--ÇÆÆ._¾¼bÅ p¶šÜ¡hÕÈâþ· ݸqcÕªU` °ººšN§¯Zµª½½Ä ¦¦¦UF7!Ij .ÌËË[¾|ùòåËûûû ?þøã… ^¹rE__ÿÃ?TWWùí·ß¨ø¶¶¶–––{û( ÀL¢Ýö§%úÚêj*Jª4e5šò¸@4! EB‘X(‹Db¡H,‹E"qKSƒÊøÀÿùÀÁ ^b‡IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/01_os_process_sampler.png0000644000175000017500000004772012032647170027207 0ustar ebourgebourg‰PNG  IHDRuñ„\ÝPsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ8-icŸ IDATxÚìÝop×}/üßž«ÎÔs[§zêÆ!HÁª˜+qôܘ$æ“K‚DmVl"®ªäQÑÄ®ÂRdLFV€€}f’Û+;dLŠƒÖjSDÉC+ hGA`™}kX”·Ï86L%T$ˆ{ç™yÔ&÷Žû˜ÄÙçÅ.€Å_$H‚ä÷3|œ={ΞÝýáœ]b…‡z¨¡¡ LÀ®††›Í†mPF ›ñññ_*Ô®Ÿ‰bh Ùîgr æÜäšèÒ BZžP¿Ñá/!»9s]Û¹ÁVUVæ-¡˜V¯oÄÐ@³ÝGæ_5¬iü*†úF‡2(2æwý!1™óv$ÃŒ”ÁÞ<Å¢V<ë>6ÞŠ›l-­€=~cÞN»ã&çd·NJ õ~æ³wªÏ ZT‚(†ÎGˆ1“s¬['$U|kRŽóbÞ«{–|P—vk ¿Jm5 ¾¦„ÏϦW"ÒuO:ÉàðÏŸ[霛´rAÐuOêŠYkU«Õ4l÷%"VrªS»8Úyl8’˜öTN,gOÊbl´ó˜{6Çôµóvž•Lo…ô-!gÔ/ðQöw…|­N[u¢ei YZ çuíç-*Aþ¶¡H)œ?oìÏÕꜛwr²»>Àºb¹†h±èq^×~D›ñ‘öH{ç4‰¢ èÌ«™ÅØh§ÝÏiÔÕŠôèh§ÑêžMÌH‹1o§âª-c~{s§7&R**§‚k¾0CDÌï0ô‡rW¥)nµ(†”«f~{çh,•mÎÓÙœ\ c³ÃÇúû Rp•SœÊüHËﶦÍÏÙꜛ6~üºQ­º*{à©®%ŠD¢ D*"m×¹¶¹cîY¿Ãè'¢º6ÏE•7’39›ôŽóºvG«J¤h˜ßíNM¦¡CýiCçð€ÝÏXΛ¤¤Á·TùF$_ Ô¥ÕR8à#N¹îÒCù>ʶB«5ížÁV• HOÚVU‰‰häªý>_ZJz~¿ÏgÎ^û<£G´­Uy¦rµ:÷怿OT–¡Éññq§‰ѬÛj0t$‡˜ðº¶s™S¼®í\r‚W xŠ1´*°ír¶:mž™1âåë«[`åVܼ°ñUTêZb³i÷1I¤IHªUçýd¾*ú÷%zOGç@eº}ûöîÝ»ó}Šû›V£ð<+â+@ù!¾l`|ÅP¿ÁÐÓSúC¢¸ Õ öjzƒŠÔúz)±¾^‘œõiúR›¥pmËR~´ˆhÅû›|ö†MÄ÷üˆõ ΄õr±Ž\ô­™±ž 3rj–Áp^*ápop¦G¿¹mX¡¶°ƯòÇÌoï¥Y¥¡mK‚4Æ• †þP¨_JïðÆÄ˜·Ã`0:¼11±lÌÛahii1úC¢˜Z*ÿ°8è9½ÿL24ê{Îì?í ݺþŽ¥©ÈpU³w¿r7?b­¯O "åaeú˜r~Äš‘˜’U§³Sdyj;?bM j­#ó©&Êé ¦j˜Z‡"C}b±ìrÓ«‘ÝpØ´øjv:MlÖ}l ¬L•žN:>>>æi«ãÜgHFGÆüö@ƒ”>ë¶6;Éq®]C‘a§¤Ãdž#š6g›†|öôbó…×)ozdÒ7Y¼SAÒ÷\ÜçÎ^²ÂÍk©2¼'z¨wfff¦GOì=qíÔÅp8|ñÔµ©vøzÛL8žI yçGzä”3”Èì=Aƒá°"[vJªÒ¹jìí¡Þ™™p8~õ$ö“5”Êyõä5÷_ý•uªif&üêÉTýÈ{bª),­¨íúá¬p™«¶™ €Í¿’¶ËÓVÇüå…Ø”*umzç&W—VJçÜäl­’òD¢ D¢ øˆ¨V­U×Ñ\t‘´Ý““““Ý«™‚®9ê™é¥žúüAÖÛ) òz¨7S,g…k›ÑpØÜøJTÕêh«ã>{çèb*Qšø5~VòÈŒùÒ‚‘èÂZë_sÔ33Óvýpîk‘G“k+·®¿óÎ K3²ÞÔªÏÐ åÌmvÊŠµMÞô”,–ˆöï­Éùz-µ€ ‹¯‚ jt™)2ìôÌIÁUŒ:‡#¤ió8Mœ—²ºjµ†879ÇÆÆÇÇ‹¶f в‡—ú&Ë;×o•m›ìÙw ;EÕés¿úžÌ™Ûì”\ ’k›¸é)‡-å¬ÎÚ@%ÅW"]×¹vM$‘¢"ªUW•¶2APé5Œù=‰±p1÷7é­ŠK£ÒSkzÈNyÈ¢%Ò7Y¼î‘y"šq'ÂvÍÞýS®5?rmª\7¥j{ëú;‰zÏ߸VBÞ©;ª²¾m”·¶°*Åþþ° ² º¢ÍöD¸u™ý¿½yN£!6ë·7ÓsãSŽÊ2äŒnk‹›87µTÍQÏ™^­V+½{âLøh {ëO¼ÂqþÄ™™UÎë{ÎLÕÖ¾À8âÌŒ>‘xñ†µ^Û)%öè‰jŽzšzëµÉÕõèxâLò‡2RRA5Wmõ=g¦´k_ â÷Ênƒ=ö~ß?çø··~ª !`³õœþÛÞSÇGFF²ƒf__~ üval5úžŒ]_×àöíÛxÊ: ¾–Ó³O?¹{÷n\‚Ä×ò_ÑC°áþ&ÄWÄWÄW(õÿ¯»wïF—Ưˆ¯@D+΋bh Ùî—üR×~nТ°ÕV?~cÞÎf»ÌÒãÐ'&ä(ð ÖMQÌd*(¾†ÏÏ2fvuéˆAeê–^Q¨ßÐÒÒÒÒÒbèe†ºP¿ôQ‡7&ƼƒÁÐá‰Eæ!"QŒy; ---ÉÀ™\Ðëíhii‘2'‡×ŒùíÍrì—J“ëfè¿Ê¯"@¥ÄWQ |Ĺ©A›ãÓ˜·Ãág&çØ˜ÓÄüŽo,U"óÛ cž¶:ÎgÝÖf'9εk(2ì%"ÜŠyÂdž#š6g›†|ö°²ðirŒyÚ4>]ׄËÄ9ç&×D—ND14pl8’sON¦¾TÄø5è§#rèÕ6˜8L“±“s“«KKUêZéõ`kU•º–ˆ"Ñ…D …óH¡¨V­U×Ñ\TY¸µµJZ||CRÆüöN9T ‚®{r*=¾-D#é ŠØY¶š1¿Ãèð3VRá‚ ë:×^Ç9›u[Æþæ„ ’â« èÌĘ?Îþ°Z­IOШ«ËY«jµ†87­nŽWPY†&'&ND>û.»@e_µGÚë8÷Ù;“·…úûC¢(*}£F½á€Ÿ1M£^U¾Ù×dùžÑÅ"ƒ1Ñ\4=¯¶Ëeâœ4jn0€ ·«ð@ppB=Ðlw[n""29ǺˆT–!gÔàpýDÜ䲨Ê[-¹|·µÅMÒ½KÚüÁ¸ÕÑ>}lØm5sÓsã½Õò ùvIÓîhU at3l0Áf³Ùl6eÒ¥K—Ž=º-ŸmŽß€òÉš}}}ø}D€òC|(¿]ùF»Ø4匯GÅv(s|Ý–w6l$\@|@|Ø™vŸ5ù°ÕdŠÉ9Ö­Ûœ‡Ò(+Ãy]û¹A‹J(~A™¥çÙ­ëº2Ë õ~"â‰ß™*©kß\¶:(yü*ýìþؘÓÄy_Ï×óWŘ·³ÙîK<äubÂAÎõúÿr­KCvŸ´õ&'»²ƒëúÔ¼Œí‡ôTz|Ís6y; ---Ò =9àcÌooR’§ûܯCýCÿU~Uzëõv´´´ ÉG (…ÏÏ2fvÉC1APY†R‘#Ôohiiiii1ô‡2âMKKKs§g.Í×¾®d‹”MPn‡Ñ¨l©´Òdõ …7TžÖ’ÐZaû—Ts!_£sDdn"MxàØpDÓælÓÏ>]ׄËĹôÓü+Ž™óÛ ÉÑcþirŒyÚ4>Ι|$?Ý=KÌÛáð3“slÌib~G‡7&‡É»Ÿ1“slÂј>Ók^–ue7A¹A¤ñkÆ6ÉW½b6š4ó´ÕqI[xû_s!«“÷úëÕ›(ß¼çŽäù×aô7»&»uÉ DT«Öªk‰"sј¨­*¥œ›\Šäpn²¶V©k‰"¾@¨K[ô…ÒXp:¹¹AKD &îóMc­­U´#ÎëÔÕDUêZ¢ˆ"|fÔ\µÖuån‚¶`Q9«WÒF#*vÙRk®„Œ²ãc±ñ5ß2œ›\ f»/=òÉq—1ŠDˆª6§™ ÑŒð"WFJ¯UWå*k®ZëºV]íÜÕ+*ØÇ¼Ç†g#ƈ—¿æùö€®ÀðcuóÃÚ#íÊçŸW«5ò}Oãããë} èÌ$?Ý=“ô¬uººPa+Ô¼¬ëZ/¢uGHÓæqš8/b‰J©9À6¶Êë¯U­Ž¶:vzc¢ ¨ôÊp«<‰ÏESJz+]k\K¥µGÚë8÷Ù;“7à„úûCbª&0Q8àgLÓ¨W ‚2L*מ§ækZ׿1¤W¯È–sø›¶ýÓWW¶š@™ã« ¨Z­fÆf‡£1QTY†œ&>ë¶&oÄU«£]C·Õ(¥hÈo=êöâ†Yù×®² N¸Ìq[ÒM°ù.©&~‡Ñèðs“sÈ¢R†I¿Ãhp)מ]óµ¯k5ߺ\¦\Õ+f£ ‚®ËefÌooöÌiHºg8LUÛ_¹Hk¹OÎ6›Íf³epõæ¸ê¶ñ¤+©‘ĽcPÉòÅʾ¾¾]Ø:V•?¥i?×¥Å6ØÒ_+‚ôûJÝØÛ~ßñññÊ÷7T(üì3@%[ñ_X_*×| ?ýP‰^ÿçØŠy0? P~ˆ¯ˆ¯[Ai×_Ÿ?{¡˜lÏ>ý$¶, ¾–à«v¬p†_:‡Í ˆ¯¥ù¿¹š[ŽÓ~¿ž×µŸ´¨)ÑGf×D×*É^ÌâÊõJLαnÝæ<ë4çF(WK‹Y©„sÓê6øzlìF¡Ërû×ÿ÷õÿNDÛ«úÏ¿ƒÀPòõ×ßúÍß(ü—ã\óv6Û}dvŽOL8È9ý¤ÕõùÉ9666æ4qî³ç]µ(†ú †œO-ÙzS7‚´ÆÇÇÇÇÇ''»×#¸–wë¡Ë2‚ë¥ù†O©þàS¿÷[ÿ²ðÿ+N\Û1¾þÏ_.ü—½Høüð,cf—üE^T–¡´S|t´³¥¥Å`èðÆÄÄy3æí0d?ó<Ôorž}JCý†o¬èÓ_Æ*’#éùäRJòÜûu¨ß`è¿Ê¯Jo½ÞŽŒV¿Ríêe–––æNÏ\þš—åÅûCò²1o‡¡Ã»¿!+vGS“ýé[/ßRùµ£º¬Ô¯ÿã_—ÿÓÞßþDD¿Q»÷Î_ÿ+~w`;Æ×ÿõïË…ÿ²GqnjÈóHSÆüÓäó´i(2|>,ŸÚŽ G4mÎ6 ùìád°û4mž±ìA˜óvzÔç[UFf‹Ñ9"27H f¬Bt].çENŸ2æ·’ÕÈÙŠ"7BÌÛáð3“slÌib~G‡7–Øv?c&çØ„£1í¼ŸkãOT­ƒ.ç>{§7&Š¡þcQëäE¥lˆÓÄØlñÝ15åz.këå\*_£Ðeù}ð/·wýÖo&Þýæ®ß¾ýÁÿÀ© `Æ×ÿo¹ðß*f­­UT¥®%"_@úvðQ­Z«®%¢¹hLE1œŽÕª«rŒ4ŽE­ùƒ+c~‡Ñh´º#f×d·.yöÌXE©Õv)ž‚žÝŠâÇdÁéˆ|×6˜8L¥öFçˆó:u5ÉÅ*Îû¥Ö\ÚÉñ“ èºÎµk(â¶›=êsÙ Ñ6˜8_mwä­g¾Fí´.[$m÷ää:MÔ@…(ùf¥—ùE~æwýÄE¢ DU´äÌ8çéôEÌ®îü§*ÎM®‰†@³Ýç „º´É“ZÖ*6EV»ÒÚ›;€eÔ|ÅßÐËá *‹£}ÚêžÕ4êUEœå‹îŽb–Ê•Ñe°sãëR‰ñUt fòûýp—NWäBÕj ñHZHÅjµ†(×9½±Ñ<ëvÈ) tòÐi×øÝ~ÏèE•g뵕 n„¬viÔÕ%nœUH @YdØéÕç¹-V®IiÝQ°Kª#ºLrÇÇvÿúþ;Ý-Mÿûò¯wßñŸqê¨x%Ï/Åy῜§ÉºÄÕ>)%Ô_èÎAPé5Œù=£‹‰ÒäZºZukט§Mã³+ï4ÉVÕêh«ã‘a§7&æ\…|ÞL¬B:ÃJo¥ëjkÙÐù6B²&0Q8àgLPJk—Ò•kÏSó’…ŽE­òÕÇcÊÛb碋rM¨V­„¢»#cëå\*w£vZ—•zÓÝ¿³ëç7~ý¿ˆˆ–ænüê·çœ¹¶a|ýp™þË/U–Á —™"n«Qºå2аÂy•eÈiâ³n«òîS•eÈe– É87É«ðÙóÝ *æZ­fÆf‡£1QÌ^… ¨ZòUI)E{D~ëQ·›øš&Æ l©&~‡Ñèðs“sÈ¢Ržßýc Á¥\{γB7'®¿¶´´45ýe‡!Ð0Ñ­•eÐefÌoïM^Μv6~åÕÊbº#LU[/çRù….+äwþ·G>¶øçØëÿüÿ,~䣸ÿW€-A°Ùl6›-ûƒ«7?È~¸Ýóg/ï ‚Ê2ÔŒ¡~CKKKKK‹¡?” ýƒÁÐ õKuxcbÌÛa0 Þ˜XRž–„þPÚ‚^oGKKK2³2s§g.ÿH”1¿½y $Šùê¿R Œy; ÉúQÌÛaèðÆD1ù‘ÁП,?m†þ«üªÜpQL¶å*¿š]·|¥Àvˆ¯¢ øˆsSƒ6ǧ1o‡ÃÏLα1§‰ùÞXjÌo4ŒyÚê8Ÿu[›ä8×®¡È°s4–ˆ…ó‚®{rr||\Êà³§‚"cþirŒyÚ4>–¿ ØýŒ™œcŽÆìª ‚®kÂeâ\9-Pÿ|AÕ:è2qî³wzc¢ê?µNYT‚86Ñ´9Û4䳄“›ÈîÓ´yÆÆÇÇ''»sŽMsÖ-giPÉòÎ_½ùòíÁ{î(<’ NG877h‰¨ÁÄ}¾é`¬µµŠˆ¤9Õ.-ÕE¸É5ØZEáZ¢H$º@TLUrMUêZ¢ˆbÕœ›¬­UDêZ¢ˆ/êÒji1:Gœ×©«sä/©þª¬ȘßaôSj¢X×u®}îØ°Ûj®k;7¨M~!ªUkÕµD‘¹hLÔVÑbp:BdVW•ÖC9KS BFÀ¦Èw­b™\¢AL;ËBºô;Ë1F¼˜ÊÔ–Ér×_••/ûú« ²8Ú§­îYM£^åHÌXbSd­¢¤y†ôÒT¥õ¬‹Cæ‡A×`&Æü3”ÕjMz‚F]]Æà*ÆFÃÒ´yœ&Î×a­¾þÒØ—ˆ"ÃÎÄàjµ†879Ç”SÁY«(¥nY¥@E+íþ&í‘öºÄåF)%ÔßEAPé5rè üŒe æÖ¬„!©ò{€t!6@‹.J‹¬¾þácQë„|øØ€rkxFµRé5É5&ë)¥¤×3wÝ”¥À¶Š¯‚Ê28á2SÄm5J÷ÁäÉR•eÈiâ~‡Ñèðs“sÈ¢*c-A×å23æ·7{æ4”qßo¾ï~‡1ÐàÊ9ÞU«£]C·Õ(Ý”[dýó;ŒrÛ›šþ²¿Ãh˜èÖ ‚Ê2(Õ°s4–(mÖmUÞô«² ¹Ìò¦“µGä:xÔíÉzæ«[FiPÉ›Íf³Ù²?¸zó\á( _¬ìëëÃï#”â+â+â+â+ ¾Tª];¡‘ÏŸ½€ž†­âÙ§ŸÜ­ÆA Ûï ݵC6Gï©ãØ' òݾ}{÷îÝ·oßÞmÇA Ûì Åü0†qPþƒñ ü_6#¾Šb¨ß`hQPþļô)~t`½)Dƒ¡#ù «J®íÎ ÁÞzëÈüÚ+’,'Ø[ßÌ!gz‘õI.^d9°ƒ{Sò¹â¢h¶Û›çÚÏ ZT‚ èº''»×v4Û}dÎxn9¤“˜·óØp„Ì®1é0Œv„·ï!3ãÚG¬5P޾gF¿q寝$7;|>œñ-5õ:ÔŸH‰y; ÙOU õx³£Ùîg,ã‘sÉ †þPæ×áP¿ô`¸äWx1Ôoèð.ð«IÃv>?<˘Ù%TAPY†º“Áµðñ"}Ôá‰1o‡Aqà'9wÕJ[ÐëíÈL'ó7wzæÖ0ó=òpMæ¸Pñ:Ø«ÕjµZm½rø8?b­¯¯WŒ#å¤/•‹¦@çG¬õõZ­6c¬šQN°·^*G1bUÖs~Ä*2‚A-âk‰´ &ÎÉÈyÀ0æ·&'»u‚86Ñ´9Û4䳄¥ 1o‡Ý§ióŒOM¹ž›p™8OŽ¥ ?39ÇÆœ&æwtxc…OMýŸG5ŒÍFˆˆ£så~œ;@% ^ÅPÀGœ›´9>]ñxó´Õq>ë¶6;Éq®]C‘açh,qðÎ#MPK|öÔ—`ÆüÓäó´i("}Û&¢ð€ÝϘÉ96áh\˨3#,f öž Áp8ÏÌô$†Þ=Ô;3£HÉ(Ç{bª),-ÕK=9Ÿ\BøÕ“tÚÌSŸù«{ßE©œ¦©Þ•ë¡Þ™p8ÜK—¼Ø}_ˈs“«K›<)ÕªµêZ"š‹ÆDQcÁéQ­º*ß©$œŽÈ§mƒ‰óÈt0y.H^¥o¬ãÜÑB”õUÒ‰@ŠëèWØ1¡·ˆã¥J]+½l­ªR×QDújZl"’2déÖÖ*9Ýæ«¢sÄyº:•5æŠá•öì;àÊŒ–3ž£5…ʱœIFÞš‡¹–U@²„š½ûó–“öFßsÆ’Uå¬ IDATû×öï­!"ª9ÚfÁ>Šøºuu1+`~‡Ñág,q¸.D#…—ÈÊqœËG»¾Q#ÅìXt.o´ØîŠ;^ÖÂcÞƒÁ(ÅEUf­ÇãÊá•jŽzÎЉúôڒʹuýÕÕçÖõwäðIk._³„~ƨV½Ò”lµZCœ›œccããã‰/°Õj ­¸ÔŠ\TúF E¢ ‹ÁéÚŒYa]ƒ™ó«<^Ö2>uGHÓæqš8ßæ^¥¡ãÌLøÕ“×Nä‹°Ùå\»1¯—·>kޝ¢°û’ó´O *}£†1¿gt13.Ò\t1ã!§$— „å@žïÚj•¾QC¾Àùhmƒ<û›`»Òi¯ãÜgïLÞIêï‰bñÇËÚÆÇE I•ߤ ±«:0o]Ï gR\œ±ž(årfv9ïœ>œÆóo^Úߤ_M9ú&Kjj:Ø›]¥T†ù7®¿"¾‘ùFcKK‹ÑèðiÚÏ÷¿4*ËÓÄgÝVå-Ä*ËËq[Rb˜ªZíЏ­F)´”ßa4:üÜ䲨r—.X5hѰ݇°*Ëà„ËLòÓÒÒhÁb—Õ»\fÆüöfÏœ†2îóÏ÷=Àï0\«ï§®¥…E}ÏLÛõÃõõõ=Ô›¼Øì­¯×jµÚÇ_ØŸº¦Z¸"²œ9CÒýǯ·õèWUÒ÷\Üç–ïžjʾþJúyÁõ×}ØÚl6›Í–ýÁÕ›¼çŽJ®ºüf×d·®pÎçÏ^ÀO‡Ã–Ðsúo{Oß¿ïŸ?Gº,4˘£W€í#8u­?+±™å{ëO¼ÂqþÄ™™£èÔk«ÆWAPY†&1÷°½è{<ú-^޾gf¦= ;çù¯·o߯“¿p ¾–Ó³O?¹{÷n\‚ÀA €øZþ¯Æèl¤Ï@|@|@|ÄWÄWÄWX½]ذ½‰bh Y~Vç&WâÑO¢í<æž•ÒëÚÏ ZTB¾%&çX·N¨¨UTÅãWØ1Á5æíl¶û4íž±±±1O»ÆgoîôÆD)¸G4mž±ñññ‰ 9s?vs“sllÌÓVǹÏ>P9OÞôŠá‰Ëˆ¯°s…ÏÏ2f¶¶ªAT­V3c³Ãçà •e¨»Ð#«ÔµA%ÔŸ -¡~ƒôLVCH¹P*ÝÐEQŒy; Êg!Kß: iÙò%S±–„þ˜]Û«üjáÎ=£òÉ1´ò‰°Ù ÌÞ\%4 ñ B¯b(à#ÎM©gjLœ“/&mƒYzZxg2„ Ô?cdnb0c~{ ar²['1o‡ÃÏLα1§‰ùÞ˜´DÌÛa÷Éãc)gxàØpDÓælÓÏ>–j8pl8BfçX*[ÎÄ+vìžœÏÑ&k»b)}Ömmv’ã\»†"ÃÎј(QFåA×5á2q®œrÏn`F´R–"›€ø °éº'&ÎØ¬Ûj,0bÌï0?¯k;×%jÎM®.­4b NGä®m0q™ÆDQJOŽ“Áž¨V­U×Ñ\4¦Œm£±ô äL\±bÊmR²¶+ç©R×J¯[«¤<‘èBÁÊg|›É™'£+6 ñ`ˇXéf3¾t™s|||rÈ¢Ê1Ø’æ™"Ñ…œé© èð3&e]×¹ö:ÎÙ¬Ûj4J¶9‹©˜4õj”ÊÏ7¦/"OÁˆžªü*òÙ4ÄW€Š&:i8œªLŸæ%"APµºLœˆU«5é uuÎtªVkA115*¨,C““N'¢ä„mÎÄÂD16êަÍã4q¾ê<š™]ùÒó¬¦iˆ¯G{¤½ŽsŸgTš³õø8¯k?¢ÅP‡W°JAWŽ‹¥†p•¾Q#‡ðpÀϘ¦Q/ÝK¥oÔÍE3szFsÔ³Ëeâ<£9óK»ck y 53½òÒw¹…XL{¶üÿ+lë!¬Ê28¡h¶[n"âÜœ¸G×åˆv67ÏJÿ[×vn°Uµª{mT–!gÔàpýDÜ䲨’鮨Áa5º“ÿw+åt[[ÜrŠ–Â©ÿÍ%M»£U%Ýß”•XÌ`½Ëeö;üöæ9†Ø¬ßÞLÏ?Tjž𩍼NPµ:Ú§ »­Æá¼ Ì@¯¦i[õüc³Ùl6[öWo~pðž;°òÉ+ûúú0? P~ˆ¯ˆ¯ˆ¯ˆ¯€ø €ø °s¬üûÏŸ½€ÍôìÓO–!¾Qï©ãØš=§ÿ–ˆvïÞ}ûöí2ÄW"Z± HÂõWÄW€íBcÞŽoLT¤„úó?é½ð§€ø DòÝh:˜zšÛâ¨g®ýˆ”@|€µ¨Ò7ÒtPz ­(Æ‚ÓÔ¨—Í*ƼCKKKKKK‡7–o ›þ:æí0´´´0Ì@|@€•G°‹©ð*Š¡'9&&ÆÇÇÇÕÈ“½‹Ñ¹ËÍEå0ìK•3ÀUWÄWHŽ`ë¸I^A×åªu[---ÍNj4ûìÍÉë©‚ ëš°F577;Éá2'–RY†ÍÒ-Ǹ…`Óa~`³‡°*ËÐdV¢®{|¼;ñÎbé&":8y0b»''å'uÉ¥tÝ“©…ãW€8~½}û6žRPæøº{÷n<¢@z>]10? P‚b®Žø Pš"/˜®âþáùëáÞeDÄù}§.zŽÖHéÁÞú¯°ìt¥Ì°iJŒ¯Á^mç+O ΄õÉP[ýÌL~~Äz‚Î$Òƒ½õ‡{÷Îôè3ó†åØ*ñu~ÄzâÚɋ᣷zµÚWˆˆßwòâËa÷ÈŸè÷^çÀ¾=‰œ{ö8@{2—¿µy6S ×_ƒžÓtª÷è­Þú©¦p8üêÉû<òp¾ÉòÎõyÒ÷œÙú°udžˆ‚½‡¯·å˜²ÝÈ<[#¾Î߸fi;J#îk§¬z¢ çô;û÷ÖÐükÒ`Rßd¡w^x\«Õvz-M¹gk72Àæ)~~øÖõwh/ݺþÎþ¦ öº¯°´é)Ø{zÛL Q°×½ïâLXH{ë{)û’èFæØã×=ûx§‚zë©kZíTSÛþw¼ZíT“Ú‚SÞý{kãKïT0³„̰5Ư5GÛ,õ'¬û.zÂG‰ˆhf¦'-ú^»1Oz)ìÍ߸v`Ÿ5G„Þ°<[#¾é{f.ŽX׿ ýãé}'ÿwZsÔÓÖ[_¯Íü(Ø[Ÿâ®{€­_¥Ð6s4øUŽh“‰úÊP)ðûˆˆ¯[AQóÃÅ?ŽНxø+áù¯› ññññu•‚½õZ­V«Õöƒ½õ½ø)`€]k\~~ÄêÞw1®‘í ²4a£Ưk ¯o^¢G–ýWßsÆ‚- PÊø5Ø[â&ÇcΟ83Ó£O<V_ñ“úÅZãüpÚÃ̓½'¼Ø¢k¿XßsqŸ[¾xª ×_ˆÖ~ÿpú#aƒ½Ø¢ø} €Ê¿*é{fôئxþ+À&ÅW<ÿ€ðüW€Í…ø °Éñu›=Oû€Šˆ¯úž™ž5ÜŒxˆ¯…d°·¾7ìM<öUJ©O¼–ÌXëµZm}j‘¯°WN¤BlF†D±ó#ÖúúúìH·t7¯{ßEyØ™#sPñ¨Úú‚7ôæªXÚIÍÐjµ‡Oï?“g «ï9C'êµZm=‚ë¯;`³Ùl6[öWo~pðž;ˆèù³äßž±öPoîû6E°·~ªi¦²çrçG¬ž½˜oؤßî=uüöíÛÊX™¡¯¯¯Èë¯òíB÷|µ[·èÍEDœ?q&ùøyØ1ŠŒ¯úž™™žŠ«|Å>n¶27TX|Åó_Ê_ñüWÂó_6â+â+Àˆ¯x¤+@™ãkö#]€hm¿ï¯ï™9C•ÿ J[jü k¿¦~óäŸýð`­ñ¿ùP¬µÏ'é 副itÉ®µ ï™™Áf(çø_6žÿ °IñÏ <ÿ`s!¾TD|Í÷Lºr¥ì¼ø:?â~…½â™_§t€_çß¼´0<¸ÿ´'¸.é;0¾=§÷7éIßdñN×!`çÅ×ù÷µSV=é­§®¥ævË•°ãkÐszÛÑ""ª9Ú–œÛ-W:ÀvQüïûϸ½ìÝW´¯¤b3¿6ò'ú‡åH·êå€ °“âkÐszÿ™>-­·ÞsöúhYÒƒG{ôèØ&ŠœN]1UÒÿÉSoýý[O¯=Wa`GŽ_kŽz<9’÷œxíò‰2¤ç)`{_ñ`Sáù¯›_Ÿ}úIl)"zþì…b²a~ ü____ñññ___ñññ___ñññ____ñññ___ñññJ±«È|ÏŸ½€P¶øúìÓOîÞ½»÷Ôql,€rŽ_oß¾-P<\@|@|@|€òص+½-ÿYèÙ§ŸÜÒmÜêõtôÖmìN蔌6"¾®£¯|é‹Ûi×ù›ïþ`K·q«×ÐÑ[·±;¡Sr¶ñu½üÆØþ3Û[½;¡`§uôVi,Ž>ÄWì=ˆ¯€E§ ¾VÔÞ³KØþGòoãNè#Øi½U‹£ñßÎ0~ì¨h,:ñ{Úˆ>ÄWÔ¶y|ݵâëoãNè#Øi½U‹£ñuõ––yIùE1Øw¨óÇ,µÏqþøwÞþÆš®RHžB­ßyû‡èJòõ‹]]µºõçžøöÏr×DYgå§ùÒ·AýÅ óÁîWËÕéEîfœß÷µÑ¿?R#”º“”½#Ö»ü 8×{›¬wc“5ß°†TÈñukÆ×x©{qþ¹.Û ‚(O?øÌ3‡®=ó£¿{²:ïiîôƒÏ\¤'¤Eò|èdðêI"ââ’ÈãDDârœ/•å´_m|ºò½÷c¯N^¶}ú!ç¦È®§¸Më/ŠÁÓÏŒòd?rq‰Äu ® /·}þÛïÒ/¤}lþGæ ¼d?H©Š- Š&O5ÊÞë]þ†Œ+Ô¹¸£uÓÎ<Éš¯wçnd§ÀжêÂRœ—ø'òänçËüP× 3öÞw¾”2|¸}ù郟yè½ó­åø‡Ë—û|ÆÇc?>ùàsRŠKð3= ý¹.Ç—â\J”ÉXEIej£ÜógÞ~ú™{9¿xöåËñDº\ÿ‡ÿì¥_(ê™/}{Ô_Ù§ô zg`é-¹Ë.;ÇßzNîÙ†ç.+W'e“>:þrôÃèÈqýÁý—_ŽÆ³k~ù{ߎ0f~áëõ\\Šóe®züolõ\TîÊ&ùúå—¿ü™‡P+çÿåù§ÒÓyªæÝ3ͬ¤Ž.í`Ì^dÅ£5O!›ßØœ;CÖP‰’½ïI[8Yméíñ—£r'FGŽ?=òËÄá¶mD|]¿Ù±Ô?i°°œL©ÿ죜ÓÅ7./ñ¥e1Ø÷ù¡wïûŠë«÷Ò«¶¾+ËñCÓýrÎùáÞé¯ß§åø¡¯¾¼4õÖk羺ŸsßÉ>iAe±™«(ú¯\m\Z—‚ßúý§«賟 zwì­¨œìëò3ö¨+𺣙+ê™/}{Ô_Ù9{ÃvœD"Æ.Ú¦?+½½ùòSßð±G]×\‡™ïkþò|r‡‘²I=þþà5}Küúºî¥Ÿ }ëüÍ%®¬ö‡KÁ¼HœÖׯ°ïe¼fìâDü›¯¹3öÞй+KÓsVµÀž©lfEutIcö"+­ù ©„ƳT`§dï{Ëñjmã}Œ½7ñæÂÒ²¸ L¼Kï}çûRþè›c¼ñ¡&·‰ø7_;÷Õ{égel#âkåŒ_åi™x®”—/¿é#¢WÕïÙKDs7£Ëñœ‹,ÅùÒÝ{ö*Òãy^oÊøïÃå¨÷»??~D·Ì«>ý_îc,2õÖ-)ýæq®©®J«¾ômVÿŒ~‰qþØíÒI%_ž|—óÇÕó¥ú‡œ¿?Hö¾œíî={¥×/~þ.i-ïý2ZÄ–ó£Œ×œ?ö…Ç?&­š|o\Q¬:#½@Uóí™ÊfVTG¯å`,æhÍ—§[ÌPy’{ß»«æãD$½~{dàcŒ]|óm9ÿÞš¥µQÚñÊ×F\­œ« òìG~¿úFä°þþŒ£µÌmD|]/Ëq±Ä½‡WÄeˆHü§ÿ6Áý¾ú.NËbuõ½ÄßÿÃÿ³÷KÏi9}Q\ð»^¼FŸøÒK_¾õÔ³R:)òPæ*6¼ þs¿°¾4ý‡*A~ûµ£ß}âíy‹©*O=w@ýÅÌ~Ìx[]}/ÑûŠîÝû{«ÙJuÒÄë¾·B'|:ÿ¾W¸Ø|«–ÓsWu‰VÚ3…üu¶àÁHÅ­¹ò”ã¾¶56v…AêèJí”ì}/.$vûqâÞæ¡û-{ôÅÞ×&Þ­{ô³Ç3;®Ì;æ‡×/¾òRÿÄÄW§å8_Z¾âþ‹Ÿpn²·z9Îã¼êS‚±Ÿže^±H•ªŽˆæn-HooEß'¢}w4­¨|¯Kú+OC?øîÞ?ýƒ»Eém¢Qï¿ye>εÚGˆ±Ÿ^ ñzñÙ)ƤzæKßfõÏèåÛd×_ ñåÐSŒ}üáCwq±@ÏæëåO¶vìã|â/þüâ|\J ç¯ÃËñ•Šš»µ ¯šöÖ(V™ž¿ª+ÕÑ«9S‹s´æ+dã›ÜòrM¤}äáù;º’;%û0ùäf"šzý§RÊ'03ö¾ç¥Ÿ~¼¦jyψ¯ë%ÎÅRÿ8cþ¿þœá ‡›¾ø9ûd]Ç ?þÚQ.ê®ÇÎ<Û¯ÿݱ/núcóó3qÎE•±»ããôÞ÷¿bøcóóÿk¿ôM3c~×cÿp³Žó»{aFžý žXEòuIkoãr|þ§ÿ×õÿãq­2ñw?Ý´ó_ücp!Î?ùxÇ>Χ¿exû¾Ïrž¬g¾ôíTÿŒ~Éx+uýô· _ü–Ÿ·<÷­ÇTÙÙŠée~·å›?îk¤÷¾ÿÃ7}ápÓÛÈ;Xá¢.?ßøÅoù97}ýϵñ‚é9«ÊEÝŠ{fåtôêÆŒí¶âÑ:ç9 Ù”ÆhŸ>ýå{¥šH÷ƒv]ᎮØNÉ>LâwïÝÇ9ç÷>ðéª8ãŸúã/ü'Å[¾ŽgÈÊ'Øl6›Í–ýÁÕ›¼çŽÊ¬ôóg/=òGÛiaäü³Ÿ¼…Ú¸Õë¿)D1ôÝ'loùÙWºÿ÷-r9jGuôz7¶\;ÀNè”ì6VŽ|±²¯¯oë^å´Ýmõ6î„>ZÛé•K(çË[ùvÕÑelìºî8ú*ÁV¯[wÆ`ç´q'ôÑÚh]?FD"ÅE½ó»Ž;Ž>Ä×5|;Û{ÏVoã2Žð2¤ÛI½U‹£ñßÎ0~ì¨h,:ñµ¢öžpua«·1Ž+@;$ä줎Þ*Åчøºz˜FýÆ¢S_Ëoⵋ۾o¶zwBÁNëè­ÒX}•`Kþÿ+@%(ðÿ¯ [ ì____ñññ___ññ`ˆb¨ß`hQ0úC¢Xj ¥.µÙ­Žy; C‡7–ª³óvtxcE´bÅ&ç˰·ÀºÚ…MÛç&×D—NV±¬ èº''»+õÛÃ@³ÝGæŒÖ ‚JߨqÏÎN-•”¸œ¦F‡ªˆPÉMÀø ÒµC¿×ÛÑÒÒ"ó2Æ|ÉÑžrL–zêOŽÒBýòøØÐ*P~Úð.Ô/-ÒáÉ«UŒ5¥š(‡Úy*h¶ûcÌooÈ2Véë8Lc‰ÎS£¾*c@ßʬ˜ÁЕ_ÍhrFþ¤èh§²9‡ÑsR{W7—€ø °ö{æŸ&ǘ§MC‘áóaiÌÇØìtp11ÚÓçí1æ·&'»u‚óv8üÌäsš˜ßÑáå+?cñ1O[ç³nk³“çÚ5vŽJ±0>.UÀgOfe»2ƲùòO“cÌiblVÙÀ¤ì†ˆbhàØp„Ìα±ñññŒu ¾l½Pê03Lœ›¬­UT¥®%"_ $ŠÒËHtAcÁéH­º*giœ›\]Zi|œŽpnjÐiLŠñbÎòÓ¯R×J¯[«’+&ÅPÀGDµj­º–ˆæ¢+˜“ ¨Z­f"òÂÉðšöuA*'W»rË•ßÚZ%5<»>˜ßÞ9ÃÈ_¶:ÎME ˜¡"L ш¹A»bÁ ÑHzB$ºP¶/?ck*0ùBòèUŠ|1o‡Á`”Ê/B©ù 4Dt]çÚë8g³n«Ñ˜1Û €ø °= ‚®ÁLŒùŸ¹¡ˆ©Ëjµ&=A£®^k-ªÕš¢¿”Ð«E%HcîQçp„4m§‰ó•ƒk‘ùs4Œ_Êññññ__vŽ•ŸÿúüÙ ØLIÏ>ýdâ+õž:Ž­ °¹zNÿ-ŽD€J8‰h÷îÝ·oß.C|%¢ € €#`«ÀõWÄ×Oú‘tå³3E1Ô_ð‡à`ݎǘ·£Ã+öxÄÑ¿{‰8IDATŠø N3çÁ³36Ÿ ¨ô4L=†oqÔ3×~D‡GâëÖTku¨=áߎcÞƒAz[‡7–ú¾ê—ûC©Ç„%Á¢óv”D÷l€"Uéi:“œXpšõUùŽÇœÙô×™# ¾ÂÓ­µG9K,¥NrLLŒyÚhø|âøôÙíäó´Íyúû; cž¶9»<^uF­ããã.²„‰HtÝ“ÝøPl€•F°‹©ðšÿx,$û`ÄWØøk%ÏhLqÄ ‚®{È"?³ºJ]›Ê«i?×¥ªR×F®ßãH¼N ^ƒÓ$?Q\Û`öð­ xÊ)b)¼JÇ`þã1/ŒÛÌ.l‚-{T뺬ÎÑÅÁÖô!l³ÝÏq25ÈɵêªdåkÉB4ñ[n¢ô¥ è¬3kÕ§k­ƒU+à`D|… ±ºnk ctÑšüò;Úi'×ĸNÅÐ@s ¸bªÕ³s° ³Ák °aš®mJG«:q0n+˜ÞÚ´G§ž¹Ô—_<¹´+v¬Ò7Îp¡`Õßt•¾‘Üwmƒ6}0Zøxœ‹.Êa؇ƒñ*îÀVY‘N]—«Öm5¶´´4;©Ñì³7õo<*ËPC YºËQºk÷”:‚­ã&ex-|< ‚®kÂ=ÖÜÜì$‡Ëœÿ`ĶÝÂçg›Íf³Ù²?¸zóƒƒ÷ÜADÏŸ½Ð{ê8~• `sáH¨#‘ˆ’c2VfèëëÃø üŠº¿éöíÛxJÀ¦Ã‘°Ýâ+÷¬;Xo86]‘_s1? Pþ¯¹ˆ¯¿lˆ¯ˆ¯ˆ¯ˆ¯€ø €ø €ø ˆ¯ˆ¯ˆ¯€ø €ø €ø ˆ¯ˆ¯ˆ¯€ø €ø €ø ˆ¯ˆ¯ˆ¯ˆ¯€ø €ø €ø ˆ¯ˆ¯ˆ¯€ø €ø €ø ˆ¯ˆ¯ˆ¯€ø €ø €ø ˆ¯ˆ¯ˆ¯€ø €ø €ø €ø ˆ¯ˆ¯ˆ¯°v»ŠÌ÷üÙ ØXe‹¯Ï>ýäîÝ»{OÇÆ(çøõöíÛØRÅÃõWÄWÄWÄW(][±ÒÛòŸ…ž}úÉ-ÝÆ­^X]G_¸°;úÉ'·Æ^½޾Œ6"¾®£¯|é‹Ûi×ù›ïþ`K·q«×ÖÒÑAhÛÈùÕ¡÷êpôål#âëzùÿ°ýg¶·zwBÁN³Uöj}ˆ¯Ø{_°WãèC|­¨½g—°ýä-ÞÆÐG°ãâëÙ«qô!¾âÛƯثqô!¾bïAÑG€øŠzÂ6¯»v@|ÝâmÜ };.¾n‘½Gâëê--ó’ò‹b°ïPçYjŸãüñï¼ý„5]¥Š}…Z¿óö7Ñ•äë5»º6*juë‡O=ñíŸå®‰²ÎÊOó¥oƒú‹AçƒÝ¯–«Ó‹ÜÍ8¿ïk£¤F(u'){GlpùET`þí —o¥õÝžŸs‘žÉSð¡“Á«'‰ˆ‹K"‰Ëq¾T–ø_m|ºò½÷c¯N^¶}ú!ç¦È®§¸Më/ŠÁÓÏŒòd?rq‰Äu  /·}þÛïÒ/¤}lþGæ ¼d?H©Š- Š&O5ÊÞ\~ÑÕcª;/_ø·O>büÄÂjKÛ ¼º3OrkoØÆß€3$¬h«Î!,Åy‰"OîÖq¾Ìu½ð8cï}ç{A)ÇËÑ—Ÿ>ø™‡hÐ;ßZޏ|¹ïÁg|Œ1öã“>'¥¸ô?óÐÒŸër|)Î¥Di‘ŒU”ôW¦6Ê 9öçí§Ÿ¹—ó‹g_¾±O¤ËõøÏ^ú…¢žùÒ·Gý•ýxªAß w–Þ’»ì²3Ñqü­çäžmxî²ruR6é£ã/G?ŒŽ×lÐùåh<»æ—¿÷ícæ¾^ÏÅ¥8_æªÇÿÆVÏE厡Üa’¯_~ùËŸyèE±rþ_ž*=¨jÞ=3ÑÌõëè5„šCªáW?{o!q®ÿÕ{¯ÿðÂ… ?üá•yQÌ Ò2$Ä‚pëò…·¥EV,dSÎ<9w†¬`S޾ÎÙûžtÎLV[z{ü娼[FGŽ?=òËÄá¶mD|]¿Ù±Ô?é[N¦ÔöQÎéâ——øÒ²ìûüл÷}ÅõÕ{éU[ߕ帡ÎéþG9çüpïô×ïÓrüÐWß^šzëµs_ÝϹïdŸ´ ²ØÌUýW®6.-‹KÁïýþSÕ?ôÙO½;öVTNöuù{ÔxÝÑÌõÌ—¾=ê¯ìÇ¿œ Œ½a»?N"cmÓŸ•ÞÞ|ù©oøØ£®Àk®ÃÌ÷µ?y>¹ÃHÙ¤ðš¾%~ý]÷Òφ¾uþæWVûÃ¥à?^$ÎëëWØ÷2^3vq"þÍ×\‡{oèÜ•¥‚é9«Z`ÏT6sý:º ªköˆ"Eç¥@¸ðö¥ŸýÛGîÓß÷Š^~{!;{FA¨9ôäƒ{DQ9ϼb!›uæ)fØ”£¯ð2{ß[ŽWkïc콉7––Å¥h`â]zï;ß—òGßã}4q¸MÄ¿ùÚ¹¯ÞK?+c_+gü*OËÄs¥|¸|ùM}¼ª~Ï^"š»]Žç\d)ΗîÞ³W‘ÏózSÆ.G½ßýùñ#ºe^õéÿrc‘©·nIé7çˆsMuUZýó¥o³úgôKœˆóÇþk—N*ùò仜?v¨ž/Õ?läüýÉ@²÷ålwïÙ+½~ñówIkyï—Ñ"v°œe¼æü±/<þ1iÕä{ãŠbÕ骚oÏT6sý:ºìWgç£Dô‘;«ïüýÛ¯~•>ú\1C‘y6ëÌS̰)G_Á3dî}ﮚ‘ôúí‘kŒ1vñÍ·åü{k>–ÖFiÇ+_qýµr®.ȳñÄe9åÞ{>çK$r"Æ~òMãOˆ1Š\¿ç¿KY‹Ä.ØþôÅ_0FŒã‰årç©Iã[ÁÝ"A ûÕ¯ˆ~;Ǭò ²óÜYgž¢v†Í8úV:Cæ9Lÿx,rýVüJÐ÷‰/õ6¿Ùóâ¥øáã÷«oDëïÏ8Z+uÇC|ͰKÜ{(quA\ˆˆÄúoŒÑï«ïâ´,VWßKüý?ìñ?{¿Ôñœ–ÓÅ¿ëÅkô‰/½ôå[O=;!¥“"e®bÃÛ¸à?÷ ëKÓ¨ä·_;úÝ÷'Þž·˜ªòÔsÔ_ÌìÇŒ·ÕÕ÷½¯(áÞ½¿·š­tP÷(M¼î{+tòÀ§óï{…‹Í·j9=wU—h¥=SÈ_‡ 9Ë-ÌßúÈw ‚(ÞyçGHü·´;ŠÓŸ+fȧÎ<+ì RG z†ÌÞ÷âBb·'îmºßò±G_ì}mâíÑÚ±G?{<ã,Z;æ‡óì=¼Ô?1ñÕi9Η–¯¸ÿâ'œ›ìíŸ^Žó8¯úÔß`ì§ç_™W,R¥ª#¢¹[ ÒÛ[Ñ÷‰hßÝM+*ßë’þÊÓÆÐ¾»÷OÿànQz›hÔûo^™s­öbì§WBüŸ^|vŠ1©žùÒ·Yý3úEù6ÙõWB|9ôÆcøÐ]\,гùzù“­û8Ÿø‹?¿8—RÂßùëðr|¥¢æn-È«¦½5ŠUg¦ç¯êÊ{æºvôÚ'„ß¾Å=ª&"A¸³fÏGáÖ»‘_SîQiÎ wÊÁ¿¦b Ù°3OrËËç©Cyø@þŽÞœ£¯¸3döaòÉÌD4õúO¥”O>`fì}ÏK?ýxMÕò:Ÿ!_×Kœ‹¥þq"Æüý9Ã7}ñsöɺŽ~üµ¢\Ô]y¶…_ÿ»c_8ÜôÇæçg✋*cwÇÇé½ïÅðÇæçÿ;×~é›fÆü®Çþáÿoï^Z›ˆ¢Žß7nÚ…‹¢ J@¬Eh*éJš ŠØR|¤vãF,nq¶fUÛoPpã½Q0R"2ZÁ]]‰@7Ýdθ˜ZBǤµ™Ô¹3ÿ]4ÓÞ;çœ{’™N§qP¥ÓÕ»csW~(ùó+Ö¾ÿ§¯îçØt¿¿|ôåÊD®u㮡BFäó»úW²72"µrq1oŸYg»íqÿº¸¬{臾V.N–«rr¦<¶'ø´ÍDYÎßynªO®Kã…Òxa1¿š`_êýìèd¹*ræöõœÛqû_‡*Þð†™ÙÓ@oM*õ­^©h­+•ú×þìé–š}‡Oìõ~-/´ûëßàR©¾C#Ù~õsy¡âoÙðE¶må92]»wuÐ_[üÀ=œîèm®¾Í¯Á2qögDDóC»]ñÜc—JZJWÈèKY–eYVðK•ãûvFsгóúòÅ q:ŒðøÉÓà’ š£éãÿ/<ïÃýsÖ[uöÖ³›G 9 ´Ö:Æ÷ Þ_=Ĭ+’P}Á9FG»^iÛ¶¹ç_EÅésLBŒº[^ÅßA®+MþKNò²º§ @õE©ýÕÜ#É™cbÔÜ”~=¥”ò”뱯˜Õ=LªþÚÅ»³déslRá *'ý•ÏFÌ‘ñ±ÉjªþÚEö$àì‚ést9ª’qÒ_ÃñaÆÕTý5|o^½ˆ}lLŸcb¥”Ö:9“5%«©¾(0òúW¢ Ãõ¯iö¡£¿@€þ ýÐ_ˆªN׿.5VØA„Ù_¹ø€-ãø0ôWL°Ãqö!rç7ÁìýÑ¥íÈIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/14_ws_document_cache.png0000644000175000017500000001403712032647170026756 0ustar ebourgebourg‰PNG  IHDR;óXsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ;Î+?{ŸIDATxÚí]y\W×>C’I †]PPQY,¯ŠZ«uE©kñÃ×jUꆯ~ú*Tkݰ*î­TQ+îâRQY\+VP\E DHf2a¾?ÉLúÚ¯óüø#™{žsçž{îyæ€ùúúúùùUTT˜™™ ,PHNNæúùùEDDÙÚÚ²=‚&l/°`aØPaÁ‚ ,ØPaÁ‚ • 4„JóïJ¡$š²qªÉC…¦ì¹ù äèñù —“¦¬O¸¦ÒþB>‹‰g<òƒ óâzüxHÁðmeî¾z¾ýˆ« {¥(¹¶þx²àåíßöd6!£/dRì¤/×mDsÒ´Õ›¾ñ é>ïd~eì|²Ï7<Ä7<äÛó9í>qïjôWá“ûo<®`&OH¯G¬ï2+>E¦ëiþÅUñ'ß7² îø® ‡·¬Šß»÷ê¯IíÕ<8xÍ”ž›·¥¾*oÂP)Ì xÍá‰0îàW‘„~òS‘ Ù–cÀÈÒ6ktââÙÛU½,’–ÊÊ1(}.-Ë*”ÙIÌê¡Ä`È8(ÔÁuÐÌ©Kogä¹ún2vÝ»P‘? aÚÀ~ÎVîž½|ìðNwï¬sD"a3+Sò¸÷]–²0C1(hóXOG‡‘|éÃsw°n?ñmiçóÃèÞü'³µÄ4/SòHHyS;~h̲_/ÿ¯úNŽ>„C<,Tp…vFm˜ÓœÚxüœªás[ß/Ç/;PlR$%è×ÊrUßí§ 'SÃ[̹=ïtJ9`2qçdg!Ò´ðÝQ7H“*¬ÃÚ¹ {H8ʜݱQû_¾©§M '¤ÿ6ÿÄY„ÓG¯Û^t9þ'lôEBÌŠ§ÿ=ÇÓZïT~GÉÞÂç_pŸ—¾±%­Ú[˜2QÒ3$1Æ#"!&²¼Û0ÁÍ›óÔ¤åÈÄ9’cÂî´Y´¼gK-Ïc»W¼èþï–i“v4µà·òž·Ì¯µNN+Øý’ ¿ë¯a³Üp†®CA ügN??×÷"H–¹óà–ÃR‚Æ…^Î#׎é}í`d¶}ÛÉ ¸Ïä¯+¬{(Ž\°ú³²S ’èIUu|5bímˆïC˜æ­Ä}jñYž’úɼÌÑØjŸ‹›»ts¤S3¤¤›^™ã2mêmWõçí?^zÙ×v ;·–pQwŒõÍæ¨_OåŒrâ5fVé1ô??~Ù¦„?h÷”Ñ֘岙놷0"N@“u:ÅÂEÊ÷1gæý`×dÒ-ßð”ïc¶w³`÷hž­^»â(¶=fX7 ™S$Æã—æœ|9sý¦Ï­vÚ”­áöìÖíAZdb‰4¯.­ËUû¶±f˜ $%9®CÜìÒïÝN¯0µ7ç )! ã¨KevÅ­»ÖrNô0o“2ü®.‰cµÓ!™zÓKN_7k¾]¯¨y+ÆÚ])SêN¶û¢í¤î_üóïK7ÿ<ÂÏ‚ÃdÜkEÀçW“VöŒÜv£vuNf-Ý´>Å&hÿâŸ÷÷oŸž]B%}õ(>%}t_¿¼´=ûL‡Ã_^/k4™¹ÇêúŽ^£è;¤—¨Gö}ˆ¼Z©7o]›ÑLJ+ÈÊHT[]:8K_¹%}ÇçqëÔ®|¬µnNµê>ÇRóÛÆn·ê†ŠçåܳïØE,ÏúïäiajÈêHg)Õ¼¿#ÿyRøìø#ÊMíŨ,H¿ Øëç—·ß“ðâ5Oq#‹„ÊÜÔ³à¾+$ÀQlæ 1«o“@««0ç]KæùØÙzº{bô[ ¸ÓWÿnN-;~.ýMà=Ù[ˆ>ۥݿ*r/§Bç¡:å>>tlŽ£)! î‘v¶ñ ÛÐ×ËÕcÔæàž"Û.AƒàáÎ…ıÃglºOñÀ8"k‰­}3Ë÷ˆÊ³wËE‘G: ù\âÞÞÆÃl×îß^ž·|¶uÖâ]¡ ’s´k˜+Ð{[P?'!ßÞÖ¸@‰õ \4ØE ÁºnôwÐ.€‘¾#÷úûÎiE™4˜ëm¥ôÉ#–|ÒßïRþ_|nת÷PŒ>š™§ýÊŒ.³*Ä7ü›ùO]×…~çòÞ å»·3—+{öûÁy?>.[ìN{ÅÁ-篿3xÌêqÎ ÃçUŸ/—€ç€(pê/Ÿçß>sådXôi[ÏYqA]RWa¦õh­Q§O0_`ƒTúŒykÓ«¬¤ðVÌ™ 4¸W€"Ô4ÖL‚àˆqë¶ÿs£ôÈ ó¥_{1îëµmØ8:·T›]"jnÉ$¥*´!C=’Äúz¸à-º´×Úo9a`›QçîÙÚm—ÛDúºÖ!öÞî*+ÝÎf0Ä8SIÚOÜÒëö¦à„Ø="ª^dV‰†‰ øuu'“ŽVæ QWáÍ% !ëëdä^Äpß‘…Nzb¬CÞTÌ/\@A.J)ÀsSôêy£˜z•~Bcꌻ²¾®€J0]ñÝOÝĸ׿ŸA½–ÊÀœjä¬2àëIö˜÷Þ¹?ñéÙSŠ[º‰1N4À%®þ!% +=‰Â?sÅȂԌ'ü]&Œ]¹«WËW²¦-ÿÕŽ~˜_ÕÖÙ­ms³òbØ8´æÉ“®¼*—f :ýpæu$0²¬ˆ¤ÞJÓÖ¸h÷ÙH7Ç®_D;Þ¯çOµ›à+a<Û¬y»¶@wv°áˆ:cPec-` „6d°GÕ3U÷’´ðÛ RC±õ™ÜU§/y2J® +ª×TâVþ„ÇÍU)ËËË•iê3¤·«ž‘_¦µ­R–WAKKZ9wæ*îd–”?ËØ?æÜC¯^K ]ª©ur5O¥\AVh·ûFùŽºšŽ]-ª~½ùAòm;à—î?ôD@$ÛU‚ êaÇy–yQ-ˆ™µü‡‰+õåÊïÊhL 45EÅ €æÙñ\nŸ¶ŽœU*ŸÿYæìo­yx–ì¾Ñ®¾”¦m‡ÌuN]¾}Ð \4E»Sž=±rÙqL{̨¯B% ôÚ0îëq±Ë}1 Ç'{º™¶ê3Áò»B«0çY==£îB}{úÒøUWÀÙsÊîáµ „ë? 8âñþ%~Ýë½6>­¬L:ZTeÚµà2Pb0d¨G€ã4Š€ë4?×ëÉÊù¾^u6QÂûÛ߇ÑãvÎh+°›¿`!±eݤ5§€Æ¢­öf0„eis¢O×þ:5hš=¸ nö}XThÖaià ÏÜÈ!ûˆpZ`ÂåÎàTsfìd®DøxÛàU0|ÜÖ¹mÅÆùŽpPÐæ]Ûvzu˜Ñ^\y‡¡;ýψý 9¬!Å© i÷ž~ÎK‰À‘Ä 9…¾ë{€s!vùŸüË<% ]…‡‡Ó4-•J邼Lš_(•SïýQY)++—)©:ǪÊÊerBýÞéå2¥AvÔjB¥× }ïôÌî›N*é†>%´!Ã=j8äå²²r…ú# Qòâ7ú—C]V.û ÅŠ§1=ÂcŠ(ZM}t×G‰Kz/Ÿ°4ñæórU½äiy™ôu¡´Œ0Þ¥*,Hߺql¯ås“ßP ¼(ááá }P%’ØêoàÂf¨[ñ|‰˜_÷tq3³çêpUü¿óLÁÝŒ2³5ß |<}}Ju íQÃêà qDÖV"Ä@C:™’ˆyà~|×ö}Wnuilj­Á·_X,b$`I òÚ{Þ«]Ðî)CÝÄñÌþ–´iÛ©·}ϹŸù¸ˆ9À¢ÁÀ¿þy²‰è/´h×¶OÄÂ>MÖ¾©óè”ïG7¦¼âïye¹®Þ_º²¼;ThçáÄvƒ1wÀX°`ñ†Ê_*/§ò· ’b¯%‹¦M¼èlÒ”ƒym&u=~ÅgÈ0'†í@…4-*î—óe – ¦¬Z-£’b'--yaÉÈ&_ûÊÓoØxƒÆ`øè­sÛ#¶oš’´—ï4IcV^½úµwü4Ä›’·"+[îI÷nÆG]ºð„Äœ=§ï êaømŒÊ¼¸¾qXõ¾™ESdCDøÌªïÆ–—3¡c¿nHvžpryÌ¥ÅQS]з9ˆÒGñ÷¯Ó–í\¯ÖÄý'4ùÙ'ÑñÊ#£Þ1@m‘uqEè¹Ä//‹¾0Ђc\öüàÛ ,˜U?)êJæŸ2óèÇ(Â×ÈÐðÝÀ~Îb+Ýoš9uém0IpCn;R*RSçHE2ÜWÂ6cŒL.Æüû{pú&^’|<·×¼¢MÐÊÈ9|ÁÇÞZcðˆRi¸ïÚÄM0 Óš ³¶_yáÞkÅ$ïÖàè`@7é’çÔ^ã÷­×ó,P¡b”__8M¼:§//'òOMŠ>K‹¦<TYôÞ2HFÈËŸÝŽ9 ~×­3gxK8 ‘åäfæ’˜"ûÎ]B@›9{;˜3zI«Ô$€Útf‘÷†!ªM@Èà[žšq·ej€€È×~þ©cï*FxD¼:7?‘žÞYF­™ái_!}šõú¡‚V=|xÉ·ý—³=rÒª,HÏÓ•]ZצêJëû‰Pä[Ù÷-?Q˜Ö:Óó,`FˆðQÂi¤¼œßâËŸ¾[±eÆ÷ÿÛÓ)§ìµe+7!/¯Ì‹ 9:{\dÊòmkÛ?šµiÏkÐÈ’®§fÓð(ûÚ™kgRò {)”/´ƒ’û…Jt›(¼†=Ö¾QµŸÕH;Ò# !»ŸûÛ¬#Ùkf®ßÚ³å¾#)2€â×§Ý-åŒ+gþ¸xêA.㲊Vk°.î’º©FOZ&Gœ›u${ÉÌÈZëFûYÔ*F‰ðÂi¤¼œ#jnekAfÌ;}ÓýóÅü\Œ—?½ŸH4?¼­ pD_N¶¤SÓK4€·ž²h Ÿ ]2qÉœî- ó—8‡¡M” ^×}.·Fæ„Ò±3yDc-þÜζ«›6·î2~í´Ñ˜Å”ñ³—„,Xø…Q‚”´­áGZ7JØÏ‚qfœ_O8í äåš’k㣢-}îØ¡vÇiŒ¼¼VwÌë.¶J¥ó-3´#¾,7¬¾±2µ‰ÁÔªžk_@ëØ‘Â~ZMá]Ü…éd5€æ/Ks1—¾”V2uÕ»? ¤õhòHëF ûY ³Šá"|¤pºv\¿'/—§Ï‹ÚõÌrP¸¯Ó›’¢BÙ[#äå­Úúá…qòˈ;—bò±nžVÆ®­•¯ ˤù×#v"‡u2´‰’Áƒ8dæ#YåËûûu_Ð×±£=ÒÀ»<ßÖ„Ñ¥7s‹¨BiÓw˜"Öü°ç¶:‰¬¤”i=y}ë†÷<‹ú²Šá"|´pººÕ÷äå•…™w㕞›yÔü€³K‚%ËËÍÛÙÚ«04:t-9„;­VaÈlHåÚè¹àâ2òð8_€Ý&JïÒ'X”¶ñÛ*¬Ã<¿N‘ uìH¸¼w,u?ã^Ëü=gąŨÅC.„d /™0ë?o¶®¿â¨±€³Á„´~ˆ7Ž ï†´npϳxoj ÿøJøÅY¥’ k[ÑGÞD!dr—o&¹ºZ¡ @ 64žóLm*äo)àŠÄf5œ(™¼B$nÆmTj èb„LV$'tû™‘’ùFàÉ"""¢aÝÄ œ6†j¹¹¸™¤±—ÔLmêÉà Ó±é‘QNI$¶Ã(ü^C“¼AðÚ«°`Á‚ ,ØPaÁ‚ ,>¼ÛÖk4Ò„#Äþ $ȼ8¿OE+n¸6þãÑPm­¸ÁÚø†9Ü05¥§3®Ii¾9çóp>—PS7¾õÔÓgÛ<ˆî‹ÜM•U@'R(©áâuÊe¢%ëLÃA_õÍŽÞ¹Ÿ¸6ÞxJ©çY†Œšè¡ó·Ò‡çÒ1÷˜ ß– 5ÇiþƒËÙ#ºº±Šá& • ªÊŒk‚,üŽ”¬ëKÁyùŒÕQS8¢þßB¤ä†ÿuÚxŒV=Ï/nec.VUÁ˵Ýp€Ì„õ' x¤­Ïñ& 3®Imá÷Ó~­²9|‹ðÚÉų6í91ÕžÌZºi}®Çøý“zÓ÷wŒ>SB˜h*2sÏÏÉóÞ8s='}óœC›|–E ç6ͳÕkW¤:Ž ë­É‰sNÍhH+/7~hq -G™›[P£¯5ŸÕÒWâ³ ûúE^ܳÏgÜ0|ßõyW—‚…Û·ˆû…§ôtÍ<öÍî3IaCªÙýÜó³ò:¬›¹^toóô#)ÁžÁ²×§çhµñÏ0BiÕÝ‹1T”Õ!è#«µñÖÍŒ¬µ.!³ôyR²¢2j*Cƒš±…­À «\¶@cÙuã¸>VµR%vl ò”ÙiÅcÇÜJ8PZA&ýaa|¨T~_Ÿ>»ø«n}|œ8 +ƒø"p²åÝMé%“ø/Î]Þ'‚úÙµRðš‚ê8îžØ[2RO¨«ÝÚæ¦ž÷!ŽdM%|¤!{<{·\9k¤“øîí%PY6ÞþìZ¬ëö@ÿ‹÷öÖhãÛ<¿¼µøŠüVs>Ä­FÞU¤«\«ÑÆwɱsÊøÙÞõ/]äJ¥™¨AY‰²Žâ9 4éç¯ÕÖ¼êÔQYIô¾h¨“ךˆ}TEÉÓ½ûWÎÙeuvI0H ïPì/•ž‹¿ñá%'ûJ†J &ªð;€¾d-7¸ z1c%ü¿6I© ´ñœ—Î>ƒ,tÞû¢ Õ;m×̪ݷ#ÿýG¶2Ø\Ü¼èÆž-˜ÿÑo½@yKàfnÊŽï&¹&ºð;R²Ž–‚3T—Þ?:{÷ÁÇ57—•ðÿ.Úx$¥¦ÑÆó€ËÃu~€ÙÓ´'¯Uб ”¸§»œ;ö€n}€J:¶±„?¨‡»©oÒ²ð;R²Ž’‚»1T/Ê»œù¢<­8¨•ðÍ?=m¼Lš_¬û¿ 5`ÑÜÉZˆ¢ÔÚxdÍʼ[a±ç«éð»lž9L;ý3g$.òMk½:tû\¥qá«”oUL›éÞÇDIÖëJÁ+s÷õÛ'–M°àÖ™Ô4Š7rÌZç_–€Bþ–+®[9ûSÒÆ 1aë^rZÔŒl…Bõ?7Ö¾îf8¥FÖÆ“oäo)Ž™µä=[ YQq%eaçÀ–h\0Šð‘…ßQŠq=)x=Õ9"k½‰©ÿ”´ñüÀ-ÌGN©‘µñ¸™µ•ŠÄVÄf“¿jÖ üõÕY°ø[† [PÅ?%T ålŸ°`¡·Õ$Y> † ,ØPaÁ‚ ,ØPaÁ‚ ,ØPaÁâÿ70___??¿ŠŠ 333P°ÿ?€ =\¿’ü&y·ÆÖ@IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/06_jmeter_ant_task_report_errors.png0000644000175000017500000016615012032647170031452 0ustar ebourgebourg‰PNG  IHDRó&¹!X_sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ72cŸr¥ IDATxÚìÝe`S÷Úðçœoš¤žº»Q Å¡P\‡ ؘÀ;&ìÞ ˜ cLÞÙݘÂ2Ü][´XK[ê®i\޼¥´Ih le<¿íCz8çùk’óä1`@ÔÔ¿nÍêžœƒB!„B= F Ëqm\™$±ˆßI"H„<8{îü´ÑѦóRS{¤Wø-ÿz^Y­Ç!„B!„uúzµîÊ©}m\?¦{š«ÌÉM.é<âëŽïß’š <yD׆,™aØîÁ"©„¯Ò˜³Kj´ —IqB „B!„Ðý¥^m¨Ui³ÏìO1!Òßå¶ë_-iØ·cCTò p•‰;I„ùl)’ÐÎ'«õ&»'!ëõ:Ï]&r“‰¼Ýœœ$…„_§19‹ùÅ•ªÒZãÙbƒÏÙB”c‡Óu,çÓ¥»§èiòé£õ4«ˆHLñãÀ~C¡û]U½öÔáíý‡ŒSº¶õhå…¼Šì3û»÷éå*í$ ¢V³ú£™×3R{Çkõ:Íó#Ã%³W+ŠÊêTj]j×Àw?X6ÿí×õÆ0?W‰Äp,»N “áÌ@¡N%çä©"Ãìá}׃?’¾ä½Iþ|òÒoÛ>ª ëvkr{ôHºµý½’Ö¿'I´£ êS§3õ´@9 ÙÅA3­¯ ‚….îžQ!Þ|â.7ù̱ŒWçLHSÙv,*îî-¾mÝ:çØýÅZ÷¾7B¨“ ¥«”aÛz«§«s6A\Ï;C„&M™­í@É!²#çò~ÿ5wL¿H_¹¡ÞXX®šûæl’$~[½vê„ѧ¯jdÎÎ\›¯÷E!ôÈM?=pöCãå<]ýù'>-OM¹§ ×ü[àØÑŒOߨ‹g;³|øÍßûöíÑÆä¶úôÉó£7y Ë<ý?èßUa¯™Ö?Y†ilÔ^¸\ðýá‚ÄÄ »žÜ6opÕ©ÓŽëvŸŒÝ_Šã8Üa@¡Îƒ$®S²,×Þ ­Ÿç-"lÛwÌÁV£ÒúÜ6BSæ+·^ÒÝÅÍÒbîfƒ‰å ù.®òýºÂÞwÎiRB¤À1åÅÅ¥Õª6–Gž2sœk\—..‚¦?ݺp·¦h6ëf®.³óNÇŽc*JJJªô& |©³sr|`¯u†ÚìYjŠï: g¤;¥c¹”ä !¥.¸tºTÏôï¦tÐ9¦½~³­E¿±˜Ù"„P§A4e•íüp&ºI럽>Öæ&/}´¹y)ö"ìØÜá¥6ÔÛæ’Zf¶6Ûrb÷Ñq]F9ËÀB"Y^j‚ÐéøÛÊ/º*øuuõ¬O£»[(Î „êì‰.wKZ{éÜ¥îºÌLôö‘ ÌzÝ•¬âUÛ.+cµ¹ýãg†¸xÈ„BÔjí¹ÌÜïŽ'%¬þlfÙcSû •Un9n/~JÏn¯-Xof¾:öEwQ÷ø’ó$/uH÷QI>> I§;w.ïÛ9‰IÚò\½‡ÿܱÉAîbŠeê49y×>Û|êÅ9Hy ÷é·i À³ï¬ Ié&juÌWßpñÑ%¹½"gµ!î”F}¾¬¢„p÷ÔÉä¾9g5ò†«??n˜RÀq\=Í{äñaܯ¢–âèšœÄWu.“nJ¦I·q}Üø!OG;1ݹ¬ Ï`eÿþI±ÊÌgÿÈ£éšç¢ `³®–©XÊWéÖ=ÎÍ´¹¸ºBUäæÍ'‹¶°Ú|‰¤ùwÖ-Å$G›M€®ZÍ;_ÎL™<¼í%.ß^@5ÿ»_p¤@ܺn„Äñ1Ù·–¹êÍ/f‚l•¥·»ÂË™=&*Ú ëk-¼°0]ãñ¢Kj;­«¦˜/Ä׋;Q'òñç“+ù3]×;Þ *OUSœ&eÊ›¯+÷2Ø™§Ë,ÛýVl(¶]™uåÒ[›†ÇlB¨óhú&oÿ1[¸qÄÕFkFÚ"Mm±Ž½Cô|é£ÍÖõ›ç´/}´yÈ€ž6#´Ìl[_÷RUsÁØè|ðdiY ÝØÈªè¨çŠ ƒ“„/Švl©5IM…/˜A¡Î˜Ù¶L–®/`-µåLÀŠ øyÇy&¡Ìÿ×ÙÝ%®þ/zŸýA½ýó-_«™³XÌ'ýRúÌMUø&Gëwž¦ÅÁc•8¶fÇòKzy@ìÏE7où]@\ÿ¯Y ŒåŒßŠh'Žƒí<¬¢ùbÏuóºE$öcׇ’˜te >¡cIX¹§OĨ?ìÏ{yÜ[^Bm͹ٟ×9I¨¸ø~³¯¬¦RÅòè¯þ&”H\Äd}YéGkµ‘‘‚ì¿åí)±{¬òìùÚ¦À~f+ô nQ7‰ˆ!$I6cÞÚ9œY_röRÝõ ™ïÒ-1°Er{kb««`VD;ÀÅçQIø,éäš«<_(²×ŸÇ ª2KŠ/ŸëÂ[' €šSvw3בóàL¦xþOÛÜœYWo{ìH—¸$¶ncr¤0³ÀNW3ëÒ[œŽŒ» !ÔiÜõël›¤õëÑôzß‘ôÖë8ˆÖ¯GSrÛ”Ö¦õëÑ¢»×Ùš-L‹êÖ–khÆyÓJ‹Hì%•R$EMš¤ª·|ùIžº‘ ùÉšõœÉBߺó‚BèïÇ4Ë8Žmú7«ë¤Ê®Ö׫²u‰I]®ž;ŸeJŽ‘A NšÝ9Ñ}“ßíà!"o~O\8Æ(q÷µþùÓ%mBbâų™&Ê™²^ìÉ´þ¦ù÷ g”*€ `ö[g7[­ŸÿHenìâäÿó¾ š‚’ڃǯä뮂›ÇPy"߸h9ÐŒÙV3IJ¨tZ3§’²ê|J¯»ÞÒv•ØìÂ]àn½Kã-­a˜Vud^²Ów³shcIVyà´þiÔä?²$?¥K€Ý±cuRïxëëOTwé’($Ú¨1›«¤ÊH{­K§é µ–—¼…ÑIN¾^rÆ¢ùª€z;(R$¥Á±–ÍjZlw8>*Êîšbk°,­±ÑÆÜRªL¶ÛÕ¥¦æýfsª „ú[4]ãª3šÛ»¡õóÜ^››/¼mÛ¶ˆÐ2³m}š/¡xŸ”PãõAnr¢–ÈÍÖjÔŒªŽâ±<‘…sx¾B¡N€¥æÆ§}³ô¬Õ ;òÈ¢¨`‘͘êè)E4õ¹ŽjÛaLëx±\³q´Ù:WWuö Lz$z  õ ™EÇ}©åÐø`0¨s _hosJd€i@Øiã¦:?»•áCUó~ó‘B¨óàS×ÁdXNÉt°r÷äD HH’°0lëMZüÙ|ám#œ:“Ùâ6TÖkn­h¡efÛúì _ÿX'¹Ú "ýÜ¥]cÜãBÜÏ^¨Ë>kù|!m1“|>©1ãiE!Ô 5¿þ”bª/\¨¶þ(PÀôHÉ/‹\ƒ¢…$^ÐI•îÀ2Æ%;r¤|ˆŒK¸„Ô×–xÀOþºÜÒ9Àíæs}ÚpŠ)!ÔV( ‚0\¼º¡øg±Ðqaëì"¥+ŠVo©à–\õÁxÅèkt d8 yÚXš•# ÷±ÓL ùž…'Oìêï=LÁë9±ë§ž¢Dí.±À µ4çÊ#Á"Í\™_¼€´Ó¿0ÍëvU¬6Úˆ¹ÑÂ8‘×ð’ßHï¢qoœ¹Qg×äÿ½wË„X{c¼fõñ˜w,KÌã'—p±¶ÜN댄»›";«À]¢ˆ@ñ Õª‹-ÊG‡( æR™@ábo8´£ýiÀ1‰­6’«*íV†wkÛp·!„:¢Õ™ÀŽîlÌr`ÍC‰gvÎF¶™$·%™sšêÐüRÖä69)¡u„Ûg¶]ÃÔ~â`Ý56p ,ÐK4TÞØÛ¸yo‰ëqQQ.c êzŽãWBuæÔÖÉ5ñ›Ïÿ‡”$~̉}2B2艑aå®JA€¾¡äË2à$^$%zo|\–E:!Ωé;ÁÙœ¿­:~”§`‹ƒ½.ÖûGù1\?i']¹u™Ð(þájÜŒHÉ´™#®Vëàïá#¥¦¿½¶R#_óîøâÒºr•I(S((‚ã˜zV!ç×gÁG$õè¾b¦Jg¨]´¶42ÌÛN!Šßו{:H ñyÆ~ªnw‰îÞ–ãìpIÐÀó|낽Xl=}—ãËZÖí½µZÛ­ nùê%>ݺú4ë%ÎÁÏ@ˆÝ¡èY1OE;%ŽøcŠª–æyI§¾õ»»”²×:¹{£½ÒÀtqá‰àR¦ŽÖ7VÓ=<%$deh¥žá‚’l;›ç-ö¦›[DÙl£3e·«[úûn}ßÄÑ]}üݳ)ÿZ‰P*W†úÙlÐCIáŇ –¹ 8ŽÝÜÈx ÈM*Ë3îŽc7ÔÑ^JRhg8„JWbgÎ|Ûýè·®©lÞ6LlB¨óhý4ÚÖ·5¾™—Þú4ÚëïÜí‰ qÖ‰ qö–´ˆpsIHBÿ9Ÿ¬.®RÙ,^ÝX¢=í•Ú×Û7@˜S§pãKÄ Ñ ¡sk4"‘'BuNe—/WYZ^åçLÀ15•5 “…!)¾T¦ðõó´>$V]]V\­²0 vV(¦übAð’£€c Å…¥ ZÁº+}Ëò,' ŠŒPìÕ¡.ëJ‘‰!ùn]b}8¦¶ª²¦Am43@B‘ÈÙYæëíN0ú¢â*Þh¦iR »{ùz)„À±ÆÂkÅzËI9w‰²ÙLJàc;¸œ‹—µ G Ý£½;R"£/Ì/UéÍ”@ä©ô«)γpœ,,*LÊϽxIÃpNþ‘n6ê–ãi/fÇÆîf£8¶®ª¢º^m4Ó@òÄNN‘¡„ýþ´ž@]u¥ÔÄq‰±‚¸ùgB¬Àú ¹ýÍíMÎ~¿9ˆÖ¢ßBur'Ñ®më'O™–WVׯM¤báá=›†šØ¨3v’`¡ÙÕͼžÙV6ØÜŒãXUMIUaa°¸[h›VgÉ+®P9]Tú&H8B!„Bè~äê,Ù¹u]ÿ!ãÔ7RÄÛ2š,Ùgö=©^£ï$€a¸Õͤ\¼ûŸÔ 1ØÙ9Éå^'C•¹NÍÓ ½n^aB‰3N„B!„ºO‘${`çFž“§@Àg9Îñÿõ*MþÅ#CFM4Ó¬ÙBw’ÀqpéøvG×Ù6áñE<¾¨ù¼N!„B!„î_Z½Q"¤˜°odžҶm’6b‚ÉLëo<]¶3D¸™´ÞÈT1UE!„B¡ˆÎ`r•;~hJ×7YhÁÔÙ"˜Ù"„B!„Ѓ«N¥½ß#Xo°ÌsêÿÜuG!„B!„ÐýÈ]¨çÀ¦%Sêëj€/`§ „B!„êü,f3”•–<}àÆÙÈ×á)É!„B!„î7$vB!„B¡ûÚ­Çlñ -B!„B¡û ³E!„B!„™-B!„B!ô÷áaÜSÇ“ÑIJ,öB!„Ѓ†$)¡P(‹ wº‡ï£[2[¼Êö®§µZ:ÿZ~Fú‰êêj†a°OB!„EyzyöHéŸØìï’ãN#Bwþ>§þØÀ0Liy‰Ÿ?EQwÇd0æ_Ë?}úÔ”GŠD„ã_êÚF«Õòyx¤!„BèþØ«,)*Ü`Ÿ³\e±Xì4Ø¿oøðÞ¾~$‰ "Ôî÷QÇï¬7ès®]­¯«uwó E÷º=zƒÞd4 „B'‰äsNGé¨Ù|áÒyW׳™§âºÂއ2O¥Ÿœ:íq…‹Ëݪ°V«õõóÃùB!t_ t÷ôܶesLlœÅbv°Ó8|ÄÈèØ8©TzW‡ ô ½:xôO«Õ:s2u@Ÿ/¸šs%7'+!>éž6F«×‰…b…ÜÅb±ÔÖV»ººñîÁ¡K­V{þâÙÞ=û).*UÃác‡ºué*•Ê:eÙªê*™\N’$ÇÝâw+B!„úk„††UUU:ÈW­;Þ>¾˜Ö"Ôá÷QG’C­V—~æøAÃÅb‰^¯ ݺc˽ÎlÍF“‹Ü…eçááUUUéîî~w“ÛÚÚêËÙYƒ „jµÊÙY6dÐÐÝ{vÆFÇyzzv,&Ã0EÝÅt3[„B¡¿˲×òsó¯]Ë/ÈgXZ*•ÉåòîÉ)<>×î°_Ÿþ~ÍN²ãñù·½t–a’$›öÚi2 J&}p´´ÎòÞô.oLŒ¥ÕšŒ±£\'HŠeHÁ9pÁCt?Ó,?ï-:“Sw¥X 1²ä·ÇJÅü–‰ëíÞGíÎ µZÝÉSG‡)K´Z5Ç/--õöRÞë6óù|£Ñ(X–¦(ž——²¢²ÜÃ݃Ïçß•ø%¥Å%åÅÇŽ$Ðh)ЧÑ4J¥Î#GŒÙ¹k»Þ  ¹[¹¨^¯¯®®2QQÑÙÙYàç祥%`](‰<=½$ f¶!„B‡^¯ß´åOWEbbRZÚP’$iÚ¢Ñhöîß]QV>~¤ºÚÚƒ‡÷=öè“.‚¡âÁk®ÝH/·ÅÛk&÷Ö‡*“¿ø¶±gwJ«'ŠXàQD ƒû‡è¾tòJõ[_ŸŠñôèæï11.D&ãióÕŠ†1ïì]ôL·žÑíŠvËåéÜíþ×h5Ç3Ž I»™ÖVVUfœ=͵aó;ù_êì\W_g4™€ i†&)J©ô©ª®6[,wüÊÕË5uÕCÓF°,«Õj¡Ñd„Z­†e™‘#FWTUž¿ÙÞ°ö”••zzzEGÇ@ttLttŒT*•J¥Ö×Ö…žž^ee¥mBÖRýæ´¡aþAIŒ©Ø××w¿Ê+{Fû9ß00§kĤÍEÞ{²ºGƒr‡SgBýã54Ôÿüëªîݺ<\.—ëõZµZe4$ÉçNœ890 (88¸¬¬ÌææmÜi¤xÀÐô¥*¤r–¢ÔþêôBJcêÝ—‚%3GqÍuú‡emZ³?¯'j™Ö^®œ½òèàÀ‰¡ñ›ï>›ñÜôq“&¾öƱ¹ö«™½ßÿ>ýäåÊÛ¾ìf¶ŽiµšãéG‡ )‘ÜLk?4°ÿ©Ôù^·œ¢(ww÷úú:£ÑH$ÃÐEùøøTUUÙ»;V[Ð4sêLEñôK3™LF£^ f_½²yëŸW²/óø|V­7臤 §xÄ‘c‡iºÝ7açZ¡iZ,³,Ëq˲ÖÍ_³,+‹išæli¿dûKë.†í9uáÒ…#)0a‚RÐñûé}Ü+êßgªí½^š5þü»;²ÍKéœbFŽ*»+¡î¼ÿtþÄ¡}ƒ¢’&¿¸ Kccòò½Õ¬\Õvø]ú;÷¶ J‹:—íúô©©c“£ƒ}}}Ok,oóBݧvïÙ5zÔØ À`µZu2ýĺõküyÕë~?Ÿy®±±ÁÃÃ㮔±À#x^ ifI0‘u©€‚&(`œ% (xIŒ™ yG·)e µOܱqíºÕ¿lX·þÀÁcù*ht¯iôæ×Vèçãw"ãøŸ›×vIðœûæäåK_Hé8wÁòEË~›=¶ëëŸÐêÍmÙÖ§þ¨ušãÇŒ>Z"qºžÖVV:rpð !rgÙ_ó¸ Åsws¯®®vsw‰D4Móx<ß²Ò¥Ò»§%›L¦ãéÇ¢£¢#£ôz-M3<ïdÆ ºqÔ°Ñ'NhhhHé–bÐk-fS¯}/]¹°k϶´Ô¡"Q;nÝ:ŠŠnˆQQÑ­·m½¤.£Zâõt°§‹õÏÏ>û¬ãm¦¢/Ëéƒñnö^¯¾ÛcÚ¼”Nkð»‹ÿ}¥›Ì¬°ÙOßíº6êÑWßH gêsW¼þÖÄÑÌ•CïµØäËÍ; Ìõßo«NΙþ~ᜠٽëð5ü ÆÝdf;0(µ>´çè‘'Ìšõ~ „ê€k×H’ðñö©¯¯Û±k;APS‡X,–ƒG>rèZ~Þð¡#D"1°¬©mÛg&H†Å»˪à ]XÖD’<(ÒÕW²Ë¼Ég¾"[­eãµN}ìØ¡ÃG95Ok ‰ŠŽ½!ë—\e¿…ž|²E‡Û,Ú¢=ß'4ðÕ-×û'ûÇéA‘#ótëš·¨¡½á¸¼vɈÞ]ýÂc“&<µ°õ¸Û\Áæ ¶(±Å ´ž$­ëôð[o¿ò숾¡ŽßS­§ŠÍæ·e „êä,X0þü¶/?{&#mУÑxùÊ%ÅdÊ£ÁÁÁgÎe 8øÿ¼ýØ£Oº»_¿ç(MÓ`7µ½ýNc^±ŠòÙáaQÞ4­j”òééü ¾ÙõÝäaÆþs’&¼7rvL¿·’y*~[Œ¼cÍ€ìýÇMN‘#Óúú) …«»WpTbê¨ MßÈ—NìÛüÇoü¾fß¡“õfæ6Ë͹C;6¬ùåÏ?·^.Vo^óËE]«“¤8úÚù£Û7¬ùcÍoÛwí/ª7á<|0<_à.”dåd÷ë˜$“9!‰b#ŠÝ°ýp€Bqâ|ÁíÞGv3[´Zí±£‡Fã$‘ZÓÚŠÊŠ÷J"—)2/] jƳaág3ÏÀ™3§##¢_}ivTd̉ŒáI1º IDATãím¤V«‰ÄJ¥R,–h´Ðh4b‰ÄÏÏOâ$illäóù^^žµ5µƒ‘$I“ÉÄãQ~þ~ååí:-ùJÖ¥!‡*½”ju#I&³yÓ–?]]\{¥ô²>›$ÉÞ½úzº{ý¹éOš¦9ŠK }}ýúôêsüä±¶dóŒb¶ 8;šèХ͇»ÇþXVVVVVVœÂfö¼1jÙ1ÁÂU[2NìkœÇì‡FæhÈÿc|`H¯¦ÕN/Ë~”½×ƒ¶œ{Ù×9eÅ‘²²²Âœ×S—Ÿ{mǾ]/$UþwÒìgü>uÞ·»wþœ·yú‡ç›"_xAê¼ß3Îdnÿè¡åÏ ÝVklQ ­v{þý/<µsõrÙé¯'Í;åx[{ëoŸ=rþ¯E/¯X}òôÉ–¾ÜtKëKËŸáú½¸uïþEû¬˜ùP……qÐ-޵¥É6#·î@¸ðÁ¼^¯w%ûÚšGìfbŒÖ@ñÜÜxvßÅMúÒ\Õ”÷ú´b›Eó¥]Ö|6eÃËSOk,†š½¿»ÿ…U«BD<›Cß¼†6‡Ã¢;?fö#Þù&ýìÙý›~z"5 E5ì­`oôIëIb³ÎmÑzªÜÉÌG!tß%·òÀFµF,–X,æ¬ìì>½ûZ÷uzCc£ª¡¡®é¸“kå`ôÜÍdyIE'^53ôô‡ÝwñY´ë›ç2?-ñ¥(Š3P¬QÄ;žàúÆcÉkG7^i4){Ƶړ¸¾ àðΜj2%môȃ]-¥‡vžä.Ï;°«H'ï?büÐA=Yû-¶î{Zž±ãR%ÙuÀˆÑcÇ$Š2ölWÓxû«ÑÅœbÁ·™ˆ@'…\Îçó x<žL&‹ QhUF!¼˜SÒö˜·¿7rÆ™ôÐp‰ÄI­Vñx|’¤víÙѯW?™Š‹ ‡a0è==<·îØ< ojîµÜ±cÇ zo¥÷† ë† Þ®FM&WW†aø|¾ÁhTÈAo4¸¹»3 #j µ®|>ßÕ͵²²2$$„ãX£Ñ(ФÎÒŠŠŠ€€€6TT\8hà`FÍãñT*ÕÖ[ºuM i¹Çœ”ØE*uÚ°qðaÜ¥Îù…×ä yEEe»2ÛK"#£Úr‹c›«uàÞÈŒ©hæï¹ŸeîHuÀ¨g—Oÿ:ò½ôê_R}DnÑݺÝH8Ë’sµ¯íïèu+nqË_Ÿ4ž˜÷Ö‚uÏúý|aT‚¼óf܈eÛà½ëµÊ^Ë'Ĺ€ßçß ý|ÙG—G-Nn9öõ—b¯¯êõáwã’ú>ìá`[›ëÓÆü—ÖåÍØqaRœ+øxy'6Õ3ö£7¦€—X°"ô§JýëžõöºÅqÞ¶É:¼ã>ýVLîÎ2Û§Ù³–ª7_Ø=ã)e÷¡^y«P²¾¯ËZ ±ƒ¢ýG.Ó»ûÓ~2\½J6vŽì>ïªy m‡>ËBˆÇ êªóÀÃÝ?,¾E5hýÆÖ+8D}b{‚uHë©ò†¿s‡g>B¡ÎlÞ¼y0þ|£ÑøÁÀܹs/^”â.á8%ö¿¶±å!.ŽÑžÌoì1a¤RH€_Tï°ì5çkôý½p6>hX‹Ñl1Sy9_k¢€(oks}cÝ&ËÍŒTتçæü01¯ÔÌØë–z¯9]†íµþùufÎQ{›ì ÃÛ8.à5Ôê³þe³2£^øèˆs!™ÛÇÁ*‹¾ºþÔ¦¦b›:\[î¨èßþòCÜÐßùIÇ>ç`^Ykhes8Äî“MX:0©ß a{÷I?~°Ÿ¼eFq6Vp0ˆÍKl9(¶&IÇÞ/­§ÊÌ|„B÷Krûí·ß@}}½½<€$Œ&#IòärEuuuPPøxûÌú÷«w·V®”Y'Ï5ž»š3mhr §sˆ«oXh×SIIHh’¥øKš;ØëîÂ$œ‡áñúÝ;÷q0¦b âÆ¯É$ßÃC@Õ¨ÌárûË 2X»ñýÂ#ZžKȘ hŽ;¶þ·[«²€7ÎÄNt°{]}P,Ê)00 ͱ$ Cgè¤rYQyUtP;nËrKfkó×%©³óÀi»vïìÓ§ÒSYUUá驜2ùÑŸýiìè±]»ž>“qàÐþà  ”n=9€””ÇÛ½gghhh¿>ýÛû‹•“TªÖ¨UªF¡P(“É8™L®jTÕ×׋Ä"…\a2›+**üü)Šg0(Š2ôUU5þþ~| íÅ%&&œ=wþZ~Í22g9„ƒmI’' 9ìáð°ˆÔ~ýÚ^P‹_í8Ž«¨¨Ëå·Ý°¢¢B&“5=°»Ã8Ž€s…%M[Ú”÷ÝŸ>iï;~m£gnÞ:ˆÑì¯f gš]yØôº)2k©3åøÿ~uèçþ^ 'mÉ’Ø~klëx} ×–³Û-Œyáþýo_Ï^dÂ4¹îx5JH€<ÔFe8F³ô‰Áè‡íûs®ƒ¶ê¢•û-¿=Ñzˆ­¾v ÌBqlq¾žöؽݢµ†Ž†ƒà/ÙrjÚ‘]ŽߺrÖÒ¥IGOüêÉ'oÎ([+HìbS‰6~u¶5Á:¦õT¹“™Bè>Jn­¯äAA!………¡!¡±Ñ±ûî›þä ’¸þu@ÓôÎÝ;²®\  3j¬P(´ýíß¶*YTµ~òÞÑJW™JÍx¿›÷±©ßLÛ>OÙaN,Žb‰y©…ß±æP_ÎThé@B(W9¦Åq/{{ÙAµîú˜ˆ$pâ=àz'­ß|ÉSá}᢮ ¨ÚÅÅÕú´­N[PTuö¬1<,8§ôÚˆaamµéÞÈ2©lÈà¡Ûwnë×§ŸR©,+/ññö›öèã«~úß„± JÛORi·wÞˆÝÆ‰ÈåËN×.³f)¬ÚXœ¶6Æñk \‡®…(Ýp¦_O±ö©öHlÙ¤Ú[b¢÷>3Üš§Õ>åx[{ë‹ÜÆ É¿ÈVÍsíp·PeXؽQtxól˸´® Çh—>™ösMß½Û>pw˜9Ÿ˜¿ZüJ™ õ;(šµT=?ei·Ùë&^zñ…)KÏïšKÝnè ÁKè?*¡ÿ¨—þójLXÒ—åÚù²æ3ªõ s¼Ú1ˆŽ'X‡§kkw1B¡N›ÜrçøðfxHXÆ©ô ÀÀøø„‚‚ï¿ÿ.55ÕÓó¼¼bï¾Ý!!aS&O9phÿÙs§{õ´sRUÛ¾L>xmÐäx7’n¼R_w¸è|¹wØ$wg­“VŒ[ûÚΊ}œ@ EÒ4ËR­sÌ66‡àÉcäÂÜôKì¨n­w)xÂ2s5æX™XKM™‰SxÛË)AÁ](ÐÓ¡І|ºÕ^+OD™—jÝ<Å8ëpÏLNýqãQ7ÆM(¼¿ìjÿ~•©}BààѼ}«ä. –c¯–e͹·ý}Ô¦{#p ™|äБ(-+ Å…ÅNNNO>>cíºµuuµí½rÇþ7›Mååþ~~<¥Ói)Š4tÕ5Õþ~> c1kêj‚‚‚BCCKKK¸½{w=vÎÛóæ¾3ÿÝ9 †¤ Þ`WUSXT\Øžø¶EEEµe¼Û¸ÚmñD¡_Løcúc?ï9UVYyíò©–½¾¹Îåûßž8ù9°hÒ7ªœf‡È¼€h_Iٶõu êvÕ¡±øÝEëŽUUWîþöåÿ« _{=¦yd¬·ŒG~q¢ ôåé¯Î¹äx[{ëóD!ŸM [õÈSëŽ\¨¨ª¸pbǪ÷FnW·Ü»oÞªûÑô´¯N»-[<½.'ûòåË—/_Ö2\þø…Gþõm³µæ­ƒå½L¹ùëo³wPôŽ7&_t™ðÛK]'¾Æ¿ðÿZ•}Û¡·7ºª}³îR^ImmUÆŽŸt,ÙO.l^ ›+´kL’ÖufLÅ—/_κZ Ù—/_¾\ma[wMžù!„î£äÖqÑÑ1‹åÈÑ#4mÿÐÄ~}û:|ðÓÏ>Í8>jäèáÆ+.<ßlrpû¨6í4>2(Qd¹x~S¯²ƒÝ-Ùñ þ]°=U]—Ã'‰åƒfKMÀMˆšìXs r`/îêö}Ç‹J+U uUy—Î ž"ÙÇ)çÀñʵ^]›yèO%áÛ[Nò\=ÅfÔ6êôšÚÌÃZŸXFP²ž!ŠÂCû®•UëõzMCuÞ…%øL’³“è‹yOä¨rø#•òŽžÐ¾¿äÒû‹/=©öpwq’OœœØÓeႹpø>j¶Þöâ ÅØQcÖoZß¿ßo¥÷µüÜÐà°Íxú«o¿|lê4—{ûHR‹ÅR^QàïOñ(­VËçó ëÑZ?@Øá°´…æ8`ÆzsöŠÊ OϺº†¡9Ž“J¥EÅ…M«Ñ4mÿîö?ÀZý^•yÛ m®Ö±; _²c©×;_¾5ýJÄÝ'¹wÚ1ƺ¬Ó§+ üð'òˆ×e<ÂÁkè½|®ïï÷LšKˆãÚu¿Ù„·¿Rm\Ðgv¶Ð+êõÿÛ3ÖC\´ífdJ¸ù“™ÏÎú;_!w }ö‹GÎLÿÓÁ¶v×ùñ¶šÿóñÌI¯6˜=£}ÿût˳¹E¶·­]±¿ ôé1#šþ|9B¨¹váÌù›ïÁŠ#o×rn ûݼl¥ÅPÚ,ºöìŠ××ü_Æ{B@´êǺMyx兀ÁbCooø(¾gÞÞ/[þFžñ ŠõÓi á-ãnk…ö¢ýIÒ²·U×Þ:tuýW³Nf¿áïÜ¢ëlêðÌG!ôOB’ä´G_ùù'"‘(¹kr```XØ¿H’bYÖb176ªvíÞUTXôðÄ)wX‰Õ]Ý÷\¨,]îB2¬ÄbáDµWª¾êœñ₟ĜTÆ—KÅR‚ õK©ª¢R]ê#ª%ÌîÓ¦ŽŸùÜ3¿®YÛ%©ëm)Ý»¥gœª¯«µ¾]o»ACCÝïëÖ¥àíí­R5D„Gåå祧gL?áž¶¼¦¦ÆÅÅ…Ïç[ÓZ£ÑXUSàçoï2†6Z¼lÑû ÖÕÕ|¼âãwÞxçƒEï/ü`IeUÙ'+VÌziÇqŸ®\±àÝ÷æÎŸ³léò¢k+?ûlá{ Û¼Q¥úl劷ç¶üÁìÚµ<¥ÒÛÉÉÑ]àt:]eeEhhËób+++cbbîz÷þ48~çkÛ~ààu‡Íé‘=Ϻ±öJlï¶±¥)Qéoì\?1è¾þì¸+CÙ9«Ñ& B¡GMMõúëëëêú÷ïçáá)s–éõúœÜœÌ d2ÙŒ'ÿ%Û8ÕöõWg-^ö±V£q°Óøêìÿúúù€¦® |{¿@/h‚¦Xx„TctWŽ=j "—Ž.!HNÄÒÌc- ÷ÁáÎÖKŒ¹týºC&Osá‘8gñ›µŸÉ½”Wqa¾½“Ã\å'˺yùt‰‹òˆ»\Ìʱù>bYÊJKž~æY^{Ëvqq{x¤ßÖþ:(5Mé­¼š{Eê$ËÏϽçmÖj½½½5 ϳ­ ð¿Ó´,4 ÀÑ´…¶Xæ¿?ŸŽަiš¶Ð ͱ¬ÅB¿5÷-ë-Ü­‹ï¼-J¥weEÍ0‘‘‘W¯^ë]KKËÀºGQJï¿î>q옧ÞIõvüúÞ•Øiq¬¾,ÿÒŸu†¡I.÷û§F'éðûbÜB!<<<Ÿö…¬¬¬Ã‡÷×Õ«Tª¡P7jÔ踘¸;¿÷'ˆABÁºúõ<‰ŽG%ôà ¤[Ní,o¬ œ%Ç‚…d8A'éscN•ÁÍÃEʳÓO]0­E·åì$š=cøì-ŸäÿÒÌ.“ ÁXêêëÛª}™-MÓ*•J£Ñ$'vߺc[jÿþ!!¡™Î{{ùÔÖÖ* w×[ËqœÅb uuu"‘H¯Ó×ÔÖº»¹±,k6›ù|~Ç>A8ŽcY–¶ÐÇÑ ýÁ{ y<>GÓ´…¦iÚÂqÜâ…Kø|AÓrš¦†!I²í…¶>ØÉÉ)4,ÌúOÍÏ7¶¾n¾ð®<϶-¦¿üÊm_ß»;-]Å·½Ùuä«s‚å÷û§F'éðûbÜB¡ÛŠŽŽŽŽŽ¾GÁyá×ïcU¦?×x‘°è-<‘0l¨(þ©‹Å³7¬dxiâ1@Çð¹…{;K§p¦ìSÒµF ®Ê ½âqž 8(mÍëŸ|ìÑŠŠ ë¹ íËlo›3iu:^¯Öhh† ;~üäÎ;==•ÉI]uz=ÏoËÃlÚ‹f†eÅbIƒJe2™(Š’J8ëáV‚ ¦cé4òz½ÞÝÍíÒå‹2™sYE)DzÖ["_Ëϧ-tnnnPPPAÑ5޽þù. …Þ`‹ÅÕ¦ 2)ŠbY¶EÜ<;mûð"œÍù[¶½sRß—‹ _ÆO–ðC!„þ´ÅbÝuäî42ÍîçÂsrsïÝò±‹ Á%‹¶wÚf ñCÆ`6‹îš¸¸ø3ç/¶ý}Ôâ©?·Éšä2™ÌÙÙËÓÓh4šL&šîÁãñ„B¡H$AÜ‹9ò(ŠGQ>ßY*e€ (Š´jKµmæ‡ Môú¨è˜5«W74ª¸87W·ø¸øý{Ô«ê­K88ŽópwïÝ«¯A¯ T®I&IÒÓÓK¯×;¾¤!„Býƒ]»–çå¥äXÖÞ^«u§±¤¤8 (» ¡Ž½Ú}´“ ¡Px縶—5½[';AQ”X,Ž  ¶¹NŸÞ}[/ b±¸-·Ú>_Ò£çÆu¿O~ä1>ŸWj~?³E!„z0Ñ4—›óÇï«ÇŒo6[ï4îß·ÇÍÝ=,<â^\߇Ð?þ}ôà¾mH’”H$ãØ6¦‹AÉãQmÌl…"a|B¢ÔÙyõ¯?UWU1 >­ !„BèBQ”§—טqã£c¢õ:ýmw·mÝŒ;uì}ôàf¶Ööm¼\¶Ã8ŽˆŒŒ‹#¼5B!„ЇcY³Ùâ`wwº+ï#<Õáž3›Lf“ û!„BáN#B÷þ&„B!„BèþÖ¾§þ „B!„B:³¼ï.B!„B¡û žŒB!„B3[„B!„BèïsËÙÈ®nîØ#!„B!„þÙW.UTTd_ÍV5¨l®@„\!ŠŒòöööôRÚÎlB!„B¡¿KyEÅÅÌÌÔAiá‘|>ŸcYŽã8àh ÍqÇ±êÆÆâ’¢ŒôS@@óÌÏFF!„B!Ô)œ;s:©k׸øÇÐ4MÓ‹Åb6ƒA¯×ë)Š  9{útó 1³E!„B!Ô)˜-tJÏÞÇqÜg¶Ð˜Ù"„B!„êŒw»çÑòxüK0³E!„B!ÔIqWVRrÛ\3[„B!„B4­½xáü…Ìs×òr'·˜Ù"„B!„êŒií…Ìs õu‘Ñ1õuµù×$·˜Ù"„B!„êt.œ;£Q7¦ Ñ-¥‡ºQUTooe|ž-B!„B¡NÇËÛ'1¹C3,Ë’$Ÿ˜d6›B¡Ñ`h½2³E!„B!Ôé(½}X†m:™¢(¡Ph6™l®Œ™-B!„B¡ûf¶!„B!„0³½7h}A‘3Žâ ÙT™>Š ˆ™y*ì „B!„Ю­wRΑØmqæ©7:C½ ‚p¼B¾Qˆ¬¯\½ô««ñÿ~c¢»ø¶r£2¤P" ŒJšð¯×>xqôßòkA«B!„BV¶9tÆ‚5m[7´#™mgóÆo4½6Ô¬_ù}^à„秆˛*xL0uU«,ØòÈÔYmI}‡þûù~^¬®®ìÀúßͳ+ó3_Oúë;¤]ÕF!„B¡Îi˜aË1DZ,ÃÇr& ÃqÃÞ\œñÆâqAq5¼=3çÆAlfñœ±>‘;¾ºo‰.M!ĉB!„B 1Ò Ë±,˰ËrF3Ͳ\ó%®Î-®»væ¬EsiÁsÂ}Ü…|‘W`Üc¯¯(33MÿjRíxdjD R,àñ…ßÐøÇ^YVlbšG`L%¿òH¤+Ÿ/òH~fî÷wRÖRõÕœ§“Ã}$¾ÜÝ/íáY‡ËõÍKÛôéýC¥BžP" Kè5ý•®èì¯ûxvÙ«£Ý‚ Â-ò‡6–H ýçN æ8fMþ«Ù_÷!âór]ó"’….¡Ë[m¿Úvã#„B!„Ð?ÆÝ9fK²‡Fô8RçôÈ‹3_ s-¿x`åŠ×vì<›wþG´!7O-ê7úÑ _¥€´T\øéË·v­¯>½èzH×>ž”¸&[ÝcÌcü-ªòãÛ~¼ƒ´¶öÉn1«¯Šg¼öò¬X_]yö÷K>u4£"=щ{_éõЧ§úL™ùásñ ¯=w|ïÆ/æ…½öòKßYùÞ;³Þ=ßsáçÏy;€PÞ·åšYP ¨;¬Æœçvµ×ÛNµïV|„B!„úçg¶^w¨Ê°ädáR<àå§ÿ+|òcVþ÷èkqàäýܹ£Ï5­o1'ûåõzwñÕü! !d.µ:«á‰/þøDÜõlYŸÅwŠéX}N½;ä·Ë¦U—®=¥°.™þDŸqO~xáüÂdxî›sò ÷®™sc‹wþ¯òÌe©H.9uìW³Þ=<þ‘éQ®í*”cõ+7ó„~3}¤wXö¶Wa»Úw+>B!„Bufwçlä7×:)Ÿ¾‘Ö„Mú&ÁIpaù7MKªÎlžý¯‰]£ƒNHÜëݳpZc¶þëœO.Š\‡¯º‘ÖÞi}¾ÊV„/z8Hd¼”ï&.Z³ßº‚4Ôm:pµ¾i±2¹›”ßÞ‚Ì å………×r3n~uLÂÚÃÔ•;•|ò/®†=÷:>B!„Buwá˜-k©>«5{E޹e)Á{È]´°z;ÀJÈ_3+zÚç„<âñO<¡ôpÓ{ÚÜs À±º] F—˜w£I,]PeÕ,±xV‹’òò¬/V}üXÒó?¤E»+û%uéÞ;uêŒGÃeíNù.,¼äúk¾SüÒ?ο>1ö¯¯†=÷:>B!„BýC2[8®ÕÒ›KØIÏ|M8÷>W| úÆÃBfYó•Ž#(Á]iÇhÀ-nùÖo{µø'Jàe}óÌÿ*ú=ùÓÚ­ÇO9xÝ–µ«ÞŸ³xcÁÙQí|dNØ+–€__Ÿ¾¾ W-ÝíjpwÒw«™!„B!ôÏlI¾W’TS¶ Ùa[ŽÞXg¹ŒÚsNköé7'ÚÎy°éïÄ/¨Ù0îÎëC b$ü¢Ú‹={¾ê`5רþ¯¼ÛÿîìúW’'­üï¼ÌQ_ô$,mË(1z(F¦hˆèûá„DÙÞ«¯PÞy5H U¶­¶Wm{ñ¼oN IDATqê#„B!„þ1îÎu¶‹ÆêªV}p¬ªiÉÕ53.é,ñ¯> ”ÀOÁ#5ùÛš²4³*kŧÙÍ#¼™â©«üßççën,`3ÖÿÐáú,Ÿ¤«üáéUçš/d-µ[ÖÇê—­Ëh–±ƒFGsÀs €Šã5í*Qàœ´å¶®N¦7‡vùælíWÃ%!v®Ékú© cÝ’kF»ìi]mÇñB!„Bè£}ÇlËv~úfƒG‹…,ZœöÕÆ¾»ºÏ›ýâÌáneö®ün«"jê–Wb€ ¤?<1þ§ÏÃS+'ö ÓTdmY»­AvKÑã~^îüè+)‘{¦Œ÷w¢ÏÚšžßñ,íëícOtûߌ®gŸ6.µ«Œ0\>µõÏíæ®›ÇLÖü߇{|ÛÒèÁ1ÁJZU²}ÕgßcþüpöûO€èÿÒ_ùŸ²ç¼…†kÅ}¿ø"­-…Š=R÷Ÿ[;efŸÙùsS#åwR ·¸e]¤kϼÓwÔÅi¡2öüá­Çs '{—"·®öçŸ&;ˆB!„Bhf[qðû%[.œ¿p±H»/ç䇯¿ûëšÏÖÖêäÞ¡ÍZ¶dñ+n¼ëÇ„Ç}Ÿþ‰|úG?m[~¢º=¾ä'ýVFO8ÐÄÉwò冧__´oí*Òٻψ¶NéÖ­ƒ­…m¼œó¿Åïý¸nÇÇ þÐ3”wPTßGgO{º<ÙÆ¯?üåMë¿^üF‰Â+¹ÿÄõk—óvJèbÛŠi¯,]¹à-JêÞmx;êà<þäɯãº?óDr_YÖÉ‘þ¯ÉWHÿí©gßÝõLJœ¼z›v`û{¯ÄºåÛ)ºuµÇG!„B¡ "¥{·ôŒSõuµàêæŽ=‚B!„Bèoñä¼ß&Œ¦Ö[–cY–a9–åŒfše¹æK\…'OÿdÖP(+-yú™gIì;„B!„B÷5ÌlB!„Baf‹B!„Baf‹B!„Baf‹B!„B3[„B!„B3[„B!„B3[„B!„B3[„B!„B˜Ù"„B!„B˜Ù"„B!„B˜Ù"„B!„B˜Ù"„B!„ÂÌ!„B!„ÂÌ!„B!„ÂÌöÃ÷Ì»Úð·F@!„B¨ÆüÙ§›ÿDržÚÅIÀ“ºü“šü˜—tÄ¡rè~f»<Ô… ’$bi@x—Gg.Ȩ4Üv«—|‡î*éÌÑÞ^4«o—pg±@$uK1c¹Þºœ¥ë?xj¤BÂJ>²ïÆr«œ½ò„>m‰c¥Ê}7x^¤‹ƒÈ…›Òˆ[ÍÌSÙŒ`¯Ž#4±]ÖH´Òçël]×á „Bý3tlÚ¦>r‘ã]¯{'㕇þ¬ì½ýØéô#»î»!hÞoKU –þ2-ø“G?žÑû´uÉÖÞŸMöýhK¾éfºxvÿdßžå8Ô÷]?ýà ¦“÷ØÅYÿ›ìûÑ;ßÔ¶eå¿¥E9f3ó Z­®(ººñÛÊÚ­}Bâ~Ím|Ð>Jr¹§ßûîRAy~æžTÓî‡z̼ž©¾<à£ÃîÛ¯TU…¯Äg?”ò4 ºÊoc#ƒû=²°q¬vÿû»¤¹‹H‡‘ÀÉó±šf–†ÈmF°WÇn&á6+@ŠšoX]™ßW. ‹Ùì´;¬B!„Ð?ÆÝÚ£þñhƪIÁKï)O˜÷ŸÝ»ÄÆFßwýçýüßÇ~-xõƒçÝ›/”÷’ÿùÜÙ¦?×½x)$Rô˜®cúv[ãÄÅE+vÚJv$³%ùb©Têæé›œ:nùï§~|˜zaÐ,ë?mylp — Ÿ¢$ ïÁü·ÐÄÀñÑ_Wêö?%•JÝ&­Ï}ëñ¡~n® …kÊÈgÎ6šmô˜—´ß/k^×[.âÅv@ ÒÝ'´ë›ÿ—¦-ûÅšgÎúñê°Ÿ—vñ‘ñÄîO,Yc(_óm¥œ”Ï\¾Z“þ|ãcÌ{ñÐÿ³wßñMÔoÀŸËlvÓ=ènYe•¶ì½e RÄ…ˆ€?T!(‚ TE²—l(´¬²[ ÐAéÞi³ï~¤”RšÐ”¶|Þ¯þ‘Ü].ß|Ÿç¾÷}’Kš÷íØúdsÏDD<±S2SᬵÁÆʲր²Lû}ìå‹?uñ¨°³u†µµïÉ•†×÷IììÝü{¿ô¡eá‚^í&^ζÜ6j®¼7´£ƒT$–;…vjTzqé+®ò6ß~7ªw˜ÒNèàÕô³m‰¶ŸÈ¨¹2qhGµT$µ÷ôÞž ÛrBȜĂ£¯4‘Ëåa“¢+?ñ~xWÝÕ’—bsJfï9»†I3°Ö^oeêˆÌs¯‰åÍKnŸS r¶ì°ðÎ"¡Ž} ß*,ò¯ïÛ¯µJ"*Û]•á6¤ŸSâ©mñz"*¼r쨹Á¨f’Òµfmîú‰M^ñZÃÜ{»ÀLDW^_½?ÓxyÌO#ƒ–½¾ÍÚfD´¼ù²Ù›bW^?ÊoÉûoßyøÙ+¬Ål$@em‘u ß±Åðýí‹oýt¿Ï—7_6ó—˜o^Z;Êoéè°Ÿ7í+¨ðÕÜʶœçÍ(¼óëÎ5}}ξӱ.ýæ©n©¿õûà4uÝrí 7Y·¿c5MVÒF"nbx›mÂçïfåæ$¿Ý»ËBk;?ÿá—ÎÝßÜ´ûŸ53šÙ~`ò昡³W_‹ûvœçGƒZ_+6gÕ¢ûiïÑ×25yIQ o×e~…{~¨…DD :véÜΫ2=·æ‚Ì}Ȥ½Tdìæ£°,H4” v$j*Ù“¥û±ˆÿã QøWÍeBzÔžµ™<<<¼|ƒº »ýÚýëxËîÁ6k{(U™—f,º8ࣣS·/Ü+K+߇l@VfF]ñŒW›µ©ã›Ëfn<[¤ÕÝŽÞ6,˜{x'SÛvÚfî~âfZVÒÅO_,»êú7»:½»ür|üª7>‰ècäÈÆÔzjÛNÛL]ÆÞI½yfú € ÜöûóÓê)Ú~^£ÑœùªUå'Þ•ì+¯·Ru„CãÙ¤½´9[KD'>Úé`—ÿAT:¥ìÚjßàc»   دþnûæW—nÞ,Ó]•Â%ïN÷ØúÆY"Ú6áBço;0e>¯YÓ÷·3‚€Eçß^sõç|Ó>{!šˆ‚ÓÓYØdõëko¼÷ÓéÖ6³¸=גּC‹)¿ ë]營½ÂZÌzT*ÐG?¾ÝäÓPF(ycjÿœ¤²«îþ|»Ñ˜îKNŽ0Ònã[Í\¯è?Ò*<Œã¸ì¬Ìì¬L®–øÛ7™Uv‰±8–ˆ>I,à8.ïÚîI£žoäîìâ$:6úòÍ;òž{’,·5w¿á T)z³å®>ÿ(ÃR 懟ëeYŸÃ)¥wm<ðÁ-MÁ2á §Ó ï|Áð$wïm¯ÍÞND' ôï¹\ «$íø2•H¾ätÇqº¼ÃDôgfqéÚÎ*q÷í ¥wóâ'óEîÜÅHWÙÔ‹Y–Û6ö\œ~æìåëwî¦\¿9tˆ@Wl|x6Ú`c¥ùÒ8ŽÛôr {‡/ÙcÕk@acFmmÆ[”þ Ãðl8˜V`(ûÀ×ÝJ¦µEik†Qc(q ¥žTëröÑ™BƒÕ'²ì§Èøð~ÊùØ[Ùáç8Ëí*M¼Ëéfoq-ûÞwQª¾â×[ù:b’§¢×öÖ¬ R¸Dn|έõjŽãÖ¶téøóõrýöp!PawYk|üüŸ_k{Úr{{Û¯gý™ÃŠ>\²nç¡WÃö°wmÒc:]å8N—~~¸÷×9¶$âÉÃ=—äXŽã~ ùêÓC%Ïh}³¯›}5/²ÐÖ4ÛJ-Vá+ª| ùÉ/ù¯Ì3°Çé2¯¾èû]î½æ•m’!ïö0Åñs¹WTU¯ÎþíïÓY¿I]sèîOî¬ÜŸüýÞ¤¯¶ßZº5~ñ–› 7]ŸÿWÜgb¿ÝuûÕÙ¿YÊØ‹1çZ…‡ ¿66ž&¢V ‘Qs¶Y‹­g¬Z7÷û/—+Ÿ†öüƒ}x{}þQŽÕµ«ïo§TÊ’õf7á#>@®ôù!2QJR‘A-ø»‹JÖŠU‰(ºÐÐF!zRï $ì^Ôæ…ÅS6]œæLD|‘+˜î¿ê,ëë$®ê~ˆ¨0é«¿ô­ ›8–¼$ë{–¸„¶t!""wé?[¸VùIbÁº†åö`ƒµ=<Чzišä_#6¤n¸ûV5º±2 ¨ÃJgÔúôŠg¼á.¯îÿúÊÇsGÏŽHqðkò„y˧ô}pª|˜oçÓôQëñ„ÎD¤g9kSë@Ë~¤‚*¶ÿ O¼¥½ÞÊ×/Eøùòb®ÿ¡‚FŸ‡÷ëTüJÛTè/¯ç}Ð׳JÍ(í®Ê?„Jß›êñÁ¸3}þ~³ì÷ëŒwˆ5}ÜaÕý9°\˜màì…| ¯’›=¬’µX™¨l SÖ2‹&‡”|Ç3jW.œÚ³üëðR"2V¥¯ž¬'PÙîúø3•ÿ›½Õâìk S þœýÚÃÛð†3•¼H‘<”'8z)þ¶‚_µïRVò[t¢@ß§‘J$7i·Ý1˜ë‰øD¤Ï?b/*|TÙVÒå†ÌŽ\vøêká%å¨@Ò0X&< yÝMFD¦âk±Å¦·î]Á[ùýÑá÷¾n2uKée½•Ü3kÊÓ±œ³ˆÿð*©ìH”G5`^ÿÉ~¯ýõ¼³ä1ÓÉZê°Òµ¦Èꌷû; »¿³ÕçžÚ³ºýóý:½V<ÌéþÔK`hÖoÈ6±Ž‚J}ßÐÚÔºPÒÀ¬ÿ#ÍÀº‰ªð½Å*M¼Ë?–GEE¦‡—?üzŸ«tQÿÍþYa_GÍŒïºhŠÀÎc^z{÷/—©I„³ô‰¥ÌZލ|cê0$?öÅpÙÓi™+ÃOþ"r¼ä¡y.a83÷ÈÍl+H¶Z‹U\V6Ðܺ²m}µ·[É›&Ùw~>çõìhë2¯è?SïÙr&ƒN§Óäg]‰Ú÷ñèNëŒ+,$";uwSñõo\ÊÉN;ºqÙ„oîÿþx ÉÍŸöê™IIrÏ÷#êw·øÊ\³ÙzãÜO >¬ÌóÚ~`úÑã)9…Y‰+'wOWõ\T_-÷œô‚‡ ÿ{«ÒµfC~Ââ×Þumý‰µ÷ʶвdňƒGm·Ö˜#C‡®¸»åüÁI4F£Ñš8"ZöRàîWg\M/2ërÖM°s2Á]fãEU¸ÖòÆžôåï>ð+sÖö¼d̤ßvG¦fçg$\œÿj7¾S¯O|”îÁš ÷ððf6^ZÊ·¿¸®úûëžåb»«Ú€:ÃÚŒÚÚŒ·0yÞôÝÊÐðÄ*w7Oìòà•rω-eì¹îdfß¾ttñ¬=Õ›ZË=Þ —qý§þx#)åÊÉOÜZ¹‰z&Þåô÷Vœ™öÃÍä»×¢÷Í7½¤À®èõV¾ŽPú|(×zc¿fI[7"z~Q§]cßwÉT®x¤¼+ÙEE&Mj־ݪvnåÖ2BÙˆ©¡åžËÎ-´½‡iöÔèäTk6çÞN?¸¢ä÷´|i¿'h lAJÍl³Q‹U²ÊºèVä“úÅŽî ËŸÿ NÚ¤è3y&;/ûŠˆ(ó̇=zôˆ)2Ö¸ÊöÊŠŽ‰ÄÞÙ»gÄ7Ä]ŽÅ_î« "™Û;>}iþp7ïàÖ^}qÀýŸ¼áK˳ÕRiHÿψ¬Ž9þœéPŸæ^B‘¬Y÷—÷%É*õÄ6˜~be»úîžÁß_i°çÂ&9Ÿ!FðëùZ%ÿÜÐIªòjuX>âÄ¡¬íûQܱÃG"­þc«¹ëÏç_ßÞÝÏYqÏs›nQ×o޼×îN× ‘Òû‹ 6GÿbébMÊR'''ÿ°ïXcº“““gÀûIÜö†¹éârcµ={9f/ž8ÜßÝ¡^ã.; ;EÁg*܃µ6T¸‡‡_²µpæüÑÃVwZðwCIùKÊõác6 Î°6£¶6ãÊšÝú{Q›@g¡XÖiôwÿ[wº³ê¯¼1|åÞÃ?ð¶Lõssm÷Ât®e1‚jL­¾|÷±•> ö÷ï;a‰S¯¦•œ¨W~â]Îk;V7ÍZÕØÏ¯÷ØNý^±,¬øõVºŽ`øªþ*CðˆÜ;/•䶘^ÉBà‘.Íù{|ãeotÚÖ|æ|Êuï­}-ÌÉó{üá»lÊðRJ>mõ}W‡Øã£¾šöê)›Ùf£³ÒE• ôÅY—:w.;7È=úº ÿXžicç¼""]öùäÙõ˜bZ…‡EEŸÎÉÎ""G§Z:4¼â*ÏþóúîÎuc¤{Ç[Él‰_êü÷µWÆÙýû‰5i¿¢+ v5gý½ Šf–cYÖÌr,Ëé &–åÊ.qPˆOŠürb/"J¹“ù— ÷üâ©·áÏ”)µâ•þ7í¤'ò Rðdñ„®³gôt÷µNîå­¯Ž'5»PâèÝëÅ™‡> CŸÔꪯôY¬l×¥kp€À³¬ù¬É³Ð ðŒâ¡ •-*[T¶€Ê•-*[T¶€Ê ÆTf£¹sç¢§à‰˜3gÎS¨lŸø³<)¸PÙ ²@e ¨lPÙ ²@e ¨lPÙ ²@e ¨lPÙ ²@e Ï`eË·7«Wë& ©@dçT/°ëÀ—¿X{=O— ’Û-!xâæDÄ+”s÷Öá”ø³ç=¦Œ C'ÀST©Ïlu¹{,emƒ±ë ‹ó3²ó‹³þþáÓPw…e‰a˜6Ë®Xî¾â*g¦Áèã–»ÝÕ†a‚^ýê½»:+ìäŽ>#çl,J>þþ‹Ýåb¥KàäU竺åo㇆4ôUJD<ÈÑÝ¿ÏKïŸÎÕ—ÝIÓv/}wˆ—ZÚôýèmý†‘8ô䈈ˆ3ç{Û †i÷ÕdÀ3QÙræBËì³ÿü½ûhb–V¤ö4þãCѳ+ÿL7×¾ÿó‰DžÙ\”“´î“ažþ‹J`æÂÌøeov¼Pd¬Ò–1»÷Çåò[¶ïÒ!´~aFÂÞß¿êÝnNÙ§»¶bÀ+¶ÜÉÓQ§%¯‘.÷Ÿ/“ ‰(ûòŒd½‰á‰¿z½>2à™¨l%N/¼æLDYç~©g?™{ý°7f}s×ÀVþ™_þ3ïέ„Ä¿-wþw8#!>þÒgDÄš‹V¦UiËwwž/L?üϾÝ{ìû¬%å]_j.ótŽ!¯}ùíÊ5kÖ|áo4»£JLD+çœ'¢Èv‘S³…­BdÀ3QÙ1KO^]=oR‡¦~B†á8.íÆÙ•Ÿ½Ó,ì®ÒÏ$óògˆ$Î} CDŠ@"’ºw³¬Í5±UÚ’Ë84¢{˜£T(W;uq–ˆ8Öh,Sh»w}sÒ›ã^{íµA­œˆø‹ÇÑíSŒæâ©‡S‰¨ßòá?À³RÙ²Æ,#ßiôŒ/]¼U\˜qúÐæˆöD”}é»òô÷7«ÔG¸Œ€)s‡VcKmæúF½ÇoDâ1Þ]ND? _CD¾C¿Qò„àY©l‰(ë¶·‡uuWHÕήöRÕ¸?oQ« 4ˆh\#5%ïØ<Ä×Ñe_®î_m´ªQ{Ë–=†ŒŒÔªÏ?•yÔä¹-‰È¬7ÑäÏ[#öÏPe+÷|oÅÿÞëÞª‰£BT˜e«[tè?ÿ—ƒ'¿lÙ`Ì® CÛÖñy™EÝßùº¯ƒä_m´}àÜÍsGyÛK’O¼šmÿùê¶•y”Ä—bCD2ב<åˆ=@ÝÀ´ ‹Š>“EDŽNuø¥ ŽÉÕ,×é‡kGÆ7Dìj”QsÖл Øhf9–eÍ,DzœÎ`bY®ì…øÔ©È/'ö"¢”;ÉcÇç=;}tuÙ$#Ëñø²/ cêŒg§²5°ô*9·\ÒT†c Pwž™WÊ?«E¼êºPÙ ²@e ¨lPÙ ²@e ÏA iGƒ©¿#P q‹#?rY ˆ8<ñĨ]ð™-Ôn¨l•-*[T¶€Ê•-*[T¶ðl  ªmÈ{ƒÿç˜ßlöAÿÖ=w uŠ˜½á¼Ž-· Ÿ/ѳé¦nRÃæäÅÞÉܸãÜž\ӿݼ]ó_ òŽ,ß2>I‡`ýgfÍöŠòÊãÌ §ýiã!EˆŠ^·}ä ¢V<Å£þÉ&0ÇqÅZÝ•ø;_l:¡ÈlûÓ>~áu•ðê¾=ƒ÷ç"ê’°!ý~k«$¢´‘W&Ö–fž>tº£èáåw.ìþKzÙQ!®½çÙo—lZ–f "O¼õÓçë‹xD4bÖ†ó:¶ª!FÂÔ¥ècô@e UÇðßqgÅ]#¢Ž”º¢„ Ž%†·ðƒ¾œEf£6êÆ Ç÷ópêØ,€}¹VÌq¡Ú Ú¼˜TýÒöƒìž˜D!¹™‡”¨#C]8êuEY't<¨mK«¦A«ëñBçG#¶Ïb:3‚ÿ…Ê-·]üüIÉ&®V´<-)+:_@D^ÞÎîƨÏ?Ÿ¢'¢ÌtFÝ:㥗ê/[z™ˆ¼CÛY ›jŸX‘0u)ú=PÙBØ»vŒšR¯äNp—¸Å–[¾q‹}w,ÞôA†¡tK©"h€³ˆˆö®Üó~BÉGpA~í MD4fd·{7¹ˆOlnæÔå[swİD÷>n½ºçRjCŸö^rmAþO[ŽÇªüÞîÐÄI””xçýOÅØÒ-oº–Qß+Ü]V\¿nç‰å1åÚÌÊÇ÷oñ|°‹—R¤+.Žº|kΖ+fŽˆ<ëÎè^O©P~aÑ¥[wÆ­A”Sîݘ‘ß§–]b#ÜMšxyGŽž-·Ëû‚–¤Ú9]þ´'Íü䯅&KÜO¯‹LkÐ7Ðá×E›–kÄqM`û¨·S¾@6ºo³ÝüÔb³^›˜¶`]TŒžµº¼êuå3!?íò[?§Qøð~ë•2{m⬦ñèéC_W ‰¨q¯>q½(+ñHûwm´j GŸÐ ϨÏ>ËÚ·‘ˆæ6“9WHDÝ_øm°L“:ï<©\C¢§4dYÓàY›npRkqxà*èßÑÚÀ(Q¹ÍÞ¼‡¿šgÔ]ˆ×µi¢&¢fÓ~×sT™ÔÚ½þÈn"ºw5AAvÌÈïî–®-;êVþ„‹”®qó1÷¦öqä³s8—[Uaˆï6ônï¥4k6í=ñyT.¦®FßÚ©*¨UÛÃ|9Ž]°ìïŸSô!Ý»ýÑÇÕl*zûó]‡ LHT¶Ï(má­E;2Ý7ég·lW IëMêê|üÀÅH­ù¦æ öŒ†\G†zëµ*6ýBrNÌíôÈ›·oXJaWñÍøä]9:‰\10ܻǟ¢´ä•><¨‹_òÕ¬8isµzʘYwÓ#S²ý<ü|¾|£÷†ÌÒ-‚”®ÜJÎólÿVDMÇ´e>'døŸ¿ß{³(öüÕY×5­Ú7¾uӆʢ®«oKä~{Ɔ ‰v¿«1×suêìK„²çq©=Z¬}³±åvAÖ…·ÿÊzd¸«!ü•váq cû¨·†aø &÷è,2ê vF'EÒÍ}BíN_00.10Ux52A&Wöñ¶#"]a¢åƒ:ki|î蕳Ï5µãeܼ±>^[œW`#'‘$µHÿÁžD”pæÜB]Ø–îê~è\4Em½NÁ!2Uƒ¶’ 'µlË~^D”t.ÖÈ,šúˆ¸ß¸¬g'Z9¹S+)ß -Ø{9ShïV™3àð ´ IDATÚã¼ÒGŸp‘Ò5ÌÝ‹)Í<ßzÉçÈ!—6þ¹AíÕ¶BÜÕ/åjÖ9±¤½»âÕ!=þ:·ñ¦‘CÂÔÉè[XnDŸüÐW½0\õÁ„N1+“~éíÊqÜkö—-k‘ ¨lŸ9ú┟ŽÐ€–õÚÔïÇú„Õ›D´ðàµë†òu¯l»¹¢_€“HÖ©™§fþD”—~wÒ÷ÇOj̳¿ØíêêØÔMáª0Ì÷ê ôh*¥2¥Näªý“tönm¢>ð#¢ç¿>”iæ:É­ ’ª}ÕD÷+Û‹[¢¿LÒ1LlÇùÃ<‚7ÉŽ+,]«r ä,2›ŠFmºb :š${~j°[ƒP)ï¶Hæ&bˆã8Î’žwðìõÏ6#%ž‘ľ•Éíl;=2ÜÕpîσ“ãòufN¬hv!®!•­Í£ÞÚ£T®-:‹ˆhÚâ½»òMD4o§“‡Ö¬r «x¹KhUjqU2Á5 ôj*Ê͘¾òŒå¶µ4¾Ó­I¨/ëVüwÿä‘Ê5ÌZ ‹Y¤Ií ´sžâ.&¢öçÆs¹n¥Ê€áÊs˜4¹±»Ššö• ÞSœ:^ôQ ”ˆ¶o¾cãtS÷ÒKWlÔZÉ(•kËVR>ÇÑä/öì/0+Âú|ôÈ3Úã¤Ö#O¸ÿÒóBµå¥_:Uà:Ø7tqg6M.üÛfe¹rÿ;I:±ÔóâÜN<ž ‹Tp3߈„©“Ñ·1ãÚºq˜÷Àa®N¼ëÄ0tbïe×µÙ$*ÛZñq’Ñ¡./ÕÇIѪ­Â¨ÏÓ+eúâ»…åg®çŸîtêRX׿õÔÍý=zø«ì]=òìô}ægoôê'3›w²4z;SÁó™ôÅ––·‹òÍDÄ0|£€ãÌ7 ¬§€/sz ¬*wñ²¨Ï†•.äñ„Þ^\æÙßo:F*"z†DqÅ^½úâ/ô¸>âñ¤ÇîTæjd_RÉpWIaz~jŽˆ¼ƒ”qÍaí¨ïðM’µ‡(Ý”Dd6YÊW"ÒdÅy[[^õƒ:¿*™ -LÛw“âAD×Î\Þ—e¬jÛvb 8“×íZ bYc·Ámº屜šÏ¼ÞÏéÏßÓˆhùžœ¾C]êwm ºiö2mÆizÏæŽ{éÀÅãKæ[É(™“”ˆX³fù¿L-'\¤tÃÑòw‡Œñ“PüÉSwM• ±!¿äæ 4 S£oûTűÆÏ¼4lf(ÃQŸóÖÌ'Õ"$*ÛZ‰Çïû°É·Ð}ZnÙíû°¿å7ÓÊn,W7›Ò¢à»ã‰QW£®$ÅÌŸ=l¨B ’ŠÜê·ê'35=çìH1ríÆ\Ó@ö¸±Ù·²ãQz‚þú'CC䲆÷VËfK¦±|¡8ÑÈŠ¤ò%«v¬pthYϾ‘O½·Ú{6 n<^uuyž±~‚ªn#ljFm/ 2_Þ®¸ÄEˆk G½˜¦¹ðøÒ.rþa™ˆì䎞úœkË«ñ•Æ*dBAFì´õ©õÏ-kcÚ£ëäÄmKãŠm§1ÇñEÌ#sIRK0S»¨,Ó¯¾Í½K—z5 WmØžÏRâÙ3šÁÏÉÓ†é‰èƱsf®jq·‘QÚ=ñø²`1­äp÷¯vRºJ:‘¡ö2ÿÛ•EÊÀÊ=è?z[ ó´¢oûTÅð„3Æ6%"–%¡ØamÏaÛS ¨lŸ],k˜¸ö¸kýf3[+ý~"Sä¹x¨ï©íQëóŒÚüòW–ò…òˆ¾ÁÃ{‡Æ&æ$íÔmŽc7lI1².DÄHFwi˜F’ç}%Óª†½Bff™‚ûHyŒA—=÷ÖWVä¥Û“íÕÇQ´`xó½q9ù&rqPµ©oßnÆ÷zÍ÷Œì¿t7.Go™²fà ~²Œz}5½·È^.½šÕkêÈ;w-aú;–ÜÔfÞ>õùÉ»y&&¢kã®î´5Íðx­’ôjé¢dââ&,9˜úàeàXãä%{¾8–ÂÉ´Õ>°µ»8êÌu"Òd'O7·m4¹o‹1¡N—®'Nûnç9ÞCzªîE?ž=“¡Hz7tL¸rÛfV"Ä5…£ÞFL9Î4eÉž¥'’’tâ~­ƒ7qθ•|NÏZ]^õˆW#8Ö8÷›c F–/.Ø^˜e#üzæxІ;ŽïÖ¨}‰B­Ðy°åÅÆÜûÈÔlÌÿ&Ë@Dž/ùC[,7rScÎêXÛcQ•F³±pèª3§R‹„ û0/ù…‹…Dd6i =­ÔBJ¦¶Ï¸µk?/Tɲ†Y+"¯'ÇŽþ'“aèåWzõQ ‘ uÓ*<,*útNv98:=­v4˜ú;‚Q –?²|Ëø$ݳÙq‹#?r¸Ž Þa$ߘ§33BaË`¯úR~òÅ=Ö&¡gÕ€ˆÃ™OŨ9ë‡ è]Pl4³˲f–cYNg0±,Wv‰ƒB|êTä—{QÊä±ãÆãjd¨aA“W…H@\N~áö3·æïJF¯€ ¨lk·¾36  Ž9»ápôT¾g ¨lPÙ ²T¶µMMùmä§ø“ @þ |Èad5 âP÷lþë²w»öTÓ+[€²† Á²œÎ`bYÎÌr,ËÖôÊ677aƒjP«}?rY ˆ8<ñĨ]ð™-ÔD¸j·Ê_ŒßF€Ú ŸÙ@M„«‘ vÃÕÈð¬@e ¨lPÙ ²­%ŒYüØ«¢>T;øª|y†¿]pÃnædex[{·µkU÷oJ–ç\’¼;NÜBí`ïÝRÙ¬xO|É*S¾øã‰Ê&!j'{ÿÖŠ1sù9ts­TèC£K´›ò¦ªQsµs }£.²)ßðôfËÁ°v–A£ìŸ ßð¤vÂ\Ø,ïÖÅÞ-ÀÞ·•üݯWr’Ø9Iíà+=œ†à@e'ÛVÈ T«üíZ+F},H×>Î*œæ ú3+Éc}¨„º4¶ØÈjîj0ü6òIøDÙn[Åëò¢•-Gòóô¤¨gìÖ“ãëyi,g·.ÌÔržaú7Z0öˆNü#=y˜®^Ô»JEãIÿN Âø\OÞñC‚¿×(¢Rò/ýÀñôvmR­è£ÛêV'ë8@_À¹…ë'4áoø]´z±ð\AÞÁîo#m` w*½Ç yOh'¬|ÐtVZ¼b9sl‰dÝRyÓç Ç‘)Oöö.ÎTq7Ä*=ûÜ(ŒLfƒ›˜|4‚ ·Û×É#“ò®ÿJL5Wá4ÕžYYMÒ?z¨„:1¶Ø@ª·C@e ÷qî¯ý܇R×È>:]n•øåwøyzÎohÁ‰E¬ÿþ í a¦–ˆÌ ¾,îçEÆ "×0âL‚½^•-Ý–HD¦›5c‚˜¤µö-f1©û$ñùÅAöèíZ¤:ÑGe[Ç&gw–‰â ˆH»ïg}=óªÊ¾õWLÌâŒ÷ô.%±æ<ß.Ü2ðÉïDwKP`à\‡é‡õeÚ\—¬ûŠ·9…Æñ¿/(4j÷O&"2H$B˜àÑoÑ |»à}ÍõdDÄ_>H9ç“}T˜o0Ú‹ª³Ê.½’§9¥g _k2ÏœÌîß&ˆI ·†º…ߘÓ6Û}û‡àvž9¼OÑ_KÌRñÿ&ýb æ&c ÎÅÓÔ¶—fÕ ®άtÉÖ’G+þá‘C%òª.Œ-6ê VHýöºà¿&onØ×ØÍ½ürs¡$:‹ˆ¸¶bé ~ªà¶ÊÞ¯Úm¾BD$ Öµu!"Ák½£gØ}ö1<ÓÐÉÅ ÔLö†åˆÈØÇƒˆ8ï—9ˆøûÓÑÓµIµ¢n«kŒ™efÎk¨åž0¥ø~ázc¢ÚÑÏÞ+D9øÑ™¬'¶‘+â3Ñü´\þ‘³DÄ…ªI{S>ï,Ûþzã!Eû¶j÷j÷ù䟈C¨Àöìs˜e:HD$ç Tf™ z«ªzšã½‰óibV ™¤Ë’ˆÎҟΰÍZpdäŸÜ*›zžˆ˜ÌMª>žŒ5Žš ýh¢¡ƒ?Ï6D­Nάl%O%†JäU[l Õ¬5>³­1 Ï1f–ˆèNÒŠL»…§JΧ&çuõUº5+^d[× ˆHänâxÄJNílÉE‰xå|åWUõ4gÜ´±(Ì™¹ö}ûMDTøÏZVÄfµ•IåE]% §ìãÄrÄð8…’mØÀ8bLñ…VÝd=y1T"¯êÊØRɤzƒÒ£Âì¸æ¦%ï2—,,^ð‰fßaVÌ'Ž­¼EšóŠ—Y:ížSùÇ6hÇõ$cšø“7eÛ’IìZÈ’ßK`KDœ›z´îGê;ß‚ýË ›qÌ]ááÓŒ£ª$+Ü%DdZ¹¹pËê¢ï–­[[pês""cŽÝµÜ'µó˜Ïóâ# öo)8q$ïô:³á¸lí-óˆoŒ’ÛÂçü‚þ¹NúY‰H°6±‚Gj·)Ú¾ÎךÌ#fÎj]ýUU=ÍY¾'{à›áœ‡k$".ðúN¾Ä±âEód/¿ªlÒD9áW†EÄê"Écs¨D^Õ±¥Hõ+¤*[°IΊùD$Øz‡ˆˆ3—\òç$bâ¿ákMDdj dƒ[뮲\å/Øz—sèO<†ˆ„Û“‰ˆ¹ý³åˆ5÷pEÖùè£Ûê.¸oÑ–mùqgó£¶˜Š®§î¬w•‘xÍFWò»LbImÉ:ˆˆHðçFñÚ?„grg'DD 7shˆ¹‘1$zý#†ïZ´¨1 Otÿ->NðˆD®œ£ê1‰¯êçþTðí˜2¿¹RåUÕ=Í1Öî1ùIÚM‡ò£·iV.ÒëAÇßõ­Ý] ÂVÑfòØ*‘WuflyÔR½Á éQsájäÿü­¦ÌM’Å(ÿ’å®dÆŽÇ/ú„QÑÄ–ŠÅ§ù ^’e §«;x3‰\´9Þ8Nxˆ1šåí†ú…2IQÂ\=1|ýÄ ²s(à-Ûš(˜5T~´-ïÄ"â\{hUèêZ•ÕŠ>Ô9ü™¯HUœÈĿɿ]HBÝÆ/-gG»Þ–N—šú‘1Ÿ—DDœo?m€ŠˆÄ3g‰²µæ7꽓ò1~ôhšiÖ³D@ÔÐè$fn\‰÷k™^óA¤Àñ«=¥;nçÀ?¸Zqp5±­gMo\½UOö4Ç\X¤œfØÕìãX2õÚUb®άì¼l$¡yU—Æ9P½"=PÙByGÄ?ÞÿÖ¸hõZ"*^ô ™>Ú ‘*ùu·pÍOŒ@aê>T÷Él£½˜¨uþ¾åÒ«Ñ×Ä?]âdöæŽÏé'N×7w "ê­ŒÇÇv› ÷àަþÏi—~Œÿ…PëT/úPçJ[ƒàÀ^ÆÈq®^Æá#ôS&–5úˆ>¢£gy±WqîþƾC´Ÿ¼Qñ‘þØ;±{é+’‡hÞid¹[´s‰lÂ"y‡®¤p1¼5¿¨þØœXœ*¹¢„¹{QpïâVž_íUOö4Çùö35Z/Ø´NT åäjS—úæ˜B®Nάl%õ¡yU—Æ9P½"=jôû\­Ââ¢Oçdg‘ƒ£ÓÓjGn.¾¸Õ¡Vû >ä0²qxâ‰ñTŒš³~È€ÞÅF3˱,kf9–åtËre—8(ħNE~9±¥ÜI;n<¾.µ*[@e €Ê•- ²@e ð_Ôv<Åÿ˜uòá@ «‡g>³T¶¨lPÙ*[T¶¨l*ëéÿ?Û¹sç" 5Êœ9sPÙÖÙþ€šW#*[T¶¨l•-*[T¶¨l•-*[T¶¨l•-*[T¶¨l•-@íªl—¨™{x<ÊÙ»çˆI'3´èA¨•­Ãe2™+ÈJþgònz§Yt"ÔšÊVêúªF£)ÖjþšBDºœcS®dÑo㇆4ôUJD<ÈÑÝ¿ÏKïŸÎÕ[bÖ'|<ª»Jb§péüÂ;b>a˜çŽÜ-Ù#güë‹ÉmšøÈìR¥s›çFí¼Q`Y“·kÜó=ä|¾PåâÝ¡oÄÞ{û¨fe{ïA’^o÷³ÜLOÕQÌîýq¹ü–í»t­_˜‘°÷÷¯z·›cÙ`NçÖó~Ý›V “ªíS¢~3°\Ù=ýúZ‹áS¿¼¢ñ|éõ Ï5—DíùuHHÇD½Ù¨9ۢŠ·Õ¹¶2t@ˆ—øäž ûru”#¨úC¸âÜ;«gün¹3¤…#½»óü‚f|¢¢¼ìÓßõî:ãlÞõ¥fZ Ký~^Tµ»;rvbu _Rº#möæÑk¯Ñê¿„Ë…œùC [ä]|ÿtÆ*Ç… :Múf匮 e^ÞsÑÁ€Çªl‹Ò~b˜ŸJï Zú¦»Œˆ¸ŒC#º¿xðä…­©¤üeF–ò¯oµÜ]4©ÛÃ{˹´Šå8"Þ´~Ùåiòä/S 6˜Ø9݃?“»4iÒÿåIsß#`ðX•-Ã¥RÃ8xõþ¾LDÚÌõzײ\‹áïþ¯[Keñ·¯M>]Rßr%×KyÌÃ{ãL%¿>õã_›÷¯‹vhVOlßèÚ5SüpèäÙÔ¼Œó'öž?±÷ªÓ­Ãü3¨~e+u}U“úc¹…§VkYŽˆý¶Ì^ÀÜ=²¡t•Ò¿Ñ^"úôϘ-c “Ï–} CÓDûˆhS’ý®É–uÙ³Û¿=*fšÅ}uŒ?à·]¯qw¯ŸîÒ!¶ØxþÏDBe â=þ.TÚ[n´ì1ddÄ V}þ)]¥ðš6ÀEJD¿ÞJj¯Vûu|°Nýí°@"ÚýAwÇ€¦:µkà¡ øî±|}qÚÞݶ8ø…ñoNˆ-62 oøäF<ùÊÖ>pîæ¹£¼í%ɧ^Ͷÿ|uÛûëÑïç¶½Ò­…ÂNÀ¨_ü`±e±H)´ÜxsÃåM_~Ø%´¡9ýæ‰ÈÓYäÜkø„qî2Uà˜Q»ˆs¯ïÚºeßÉÛMÚõûró¥ÏÛº"`PÓ*<,*útNv98:=ñ'ȽxŽmÐÜQÌ'¢Ä¦úöü‚ˆ¾»«™à.Cï@©QsÖл Øhf9–eÍ,DzœÎ`bY®ì…øÔ©È/'ö"¢”;ÉcÇüÛ-;ûáàÞÿdûú‰Íyq7SˆÈ±é;o ¬€'„÷o?chë Oeê­Ø¸Û™Ž^ †¿õÙ©¨/t<³€Ú •- ²@e €ÊPÙ ²@e €Êž tA­°kþ‹B^졽ƒvåX–œ^8BÉc.ïÚ=ôPÍš5ìeI49Ž+Öê®ÄßùbÓù EæÒµY‰GÚ¯¸‹Î¬á†¼7øŽùÍfôoÝs×P§ˆÙÎëØrÛðù’=›iêà 1lN~QìÌ;ÎíÉ5ý7©xdù–ñIºg3@eµ{Gœ¹á´?m<äâ¢1CÑë¶¼ A>¦§˜üO6y¨m˜öñ ¯«„W÷í¼?9PaCúýÖVIDi7";¯L¬-Í=}ètGÑÃËï\>Øý—ô²# B\¥#îÛ%›–¥ˆˆÇoýôùú"˜µá¼Ž­j¯"FÿR pì*[(OW”u"ALjڹ´j´º/t~4º¥6aøï¸‰³â®QÇNJ]QBÃ=Ã[øAßÎ"³Qu㎆ãûy8ulÀ‹¾\+&÷uƒA›“j¸WÚ>┼'&QÈcnæ!:€Ô…äÇ@ý¯§ #ø_¨ÜrÛÅ?ÌK”lâjEËÓ’²¢óDäåíì.`Œúüó)z"ÊL7`$y/½TÙÒËDäÚÎRMU{|FŒþ¥@àØT¶P^~Úå·~N%¢ðáýÖ…+eöþ&º–œÐŸuö®£¦Ô+¹Ü%n±å–oÜbß‹7}a(ÝRªà,"¢½+÷¼ŸPò¹_P _ûBÙ-ÂÇÞM.â›[ 9uùÖܱ,ѽ[¯î¹”ÚЧ½—\[ÿÓ–ã±*¿·;4q%%ÞyÿÇSq¶tˇ®eÔ÷ w—ä¯ÛybyLA¹6ó…òñý[<ìâ¥銋£.ßš³åJ†™#"Ïú3º…×S*”_XtéÖqëcêR¼rïÆŒü>µì=ߤ‰W€wäèÙr;±¼‹l‰¯ÐÎéò§=‰hæ'm,4YBpz]dBXƒ¾¿.Ú´\#~f{»’Éo£?ùÙè¾Í6vóS‹Íz}lbÚ‚uQ1zÖêòªçvå£`m ¶–B£§}]%$¢Æ½úÄõ"ËÕ76ZŽ>¡A"žQŸ}–µo#Ím&s®ˆº¿6ðÛ`™&/6tÞy"R¹†DOiȲ¦Á³6Ýà¤Öúóჱ Gk»Då6wxóþjžQw!^צ‰šˆšMû]ÏQeB¶{ý‘ÝDtïSú‚옑ßݿҪìHRùñ©BDöîM#ìãþÈgçp.·ªÂ^½Ûл½—ÒT¬Ù´÷ÄçQ¹ˆÑk`P«¶;†ùr»`Ùß?§èCºwû£«ÙTôö绘@e[÷ÉäÊ>ÞvD¤+LDY[[h o-Ú‘éÖ¸áH?»e»bHZoRWçã.FjÍ75\©h4äš80Ôk\¯U±é’sbn§GÞ¼}ÃR »ŠoÆ'ïÊÑIäŠáÞý;†ø¥½p ¯ôáA]ü’¯fÅ9H›«ÕSÆ Èº›™’íïäàçóõà½7d–né¤×<ÔŽ—qóÆúxmq^|ÀXJDý{Q™s ua[º«Cú5¢sÑDµõ:‡ÈT ÚJ.œÔ²-ûyQvÒ¹X#³hê#úóþÁh=R<žhåäN­¤|ƒ¶`ïåL¡½[eÌÇy¥Ï‘*Dw/¦x4ó|ë%Ÿ#‡\ÚHø7NäµWÛêÕ®~)W³Î‰%íݯéñ×¹7bôoÂÚau#ú䇾ê…áª&tŠY™ôKoWŽã~X³¿lY‹¸*ÛºÉ5 ô³>*Ê͘¾ò ú¤¶Ð§üt„´l¬×¦~w8Ö'¬Þ$¢…¯]7”¿ÒÕ¨ËxeÛÍýœD²NÍü;5ó'¢¼ô»“¾?~RcžýÅnWWǦn W…á`¾ÇP¡GS)•©¯"Wퟘ¤³wkõ¡©v IDAT=ÿõ¡L3×I>hUTí«&º_Ù^Üýe’Žab;Îæ)¼ÑHvì\aéZ•KÈ g‘ÙT4jÓÑÑ$ÙóSƒÝ„Jy·E27CÇit†”ô¼ƒg¯¶¹® 5"‰}+ÿ’ÛÙv""zdÏWù?NŽË×™9±¢Ù‘g¸·+™üÖ¥rm9ÐYDDÓïÝ•o"¢y;<´f•kXÅË]B«šÛâªDÁÚ@m-….DÆÆtkjÇ˺ÿÝ?¹D¤r ³ÖÂböYK…vÎSÜÅDôÃþÜxî"×­³T0\yîÏ“&7vWQÓ¾2ÁûaŠSÇ‹> ”ÑöÍwlŒf¥ýYz0êŠZ+‘R¹¶l%åsMþbÏþ³Ò)¬Ï‡A0'dÏÿ¥ç­]òÒ/*pìº8‚3›Š¦Fþm³²\¹ÿ$Xêyqn'OÐE*¸™oDŒþí@Ø8‡nݸ?Ì{à0W§?Þub:±÷À²ëÚÇl â‚Êž&˵<^ùÈ•û~Ÿ¶0mßMvPˆ];sy_–]WK0>Nr"á Ôå¥ú8)ZµUõyz¥ÌC_|·°ü”ýüñÓN] kàÚ¼žº¹¿G•½«ÇâQž¾ÏüìžCýdf³ñN–FoÇ#"b*x>“¾ØrÃòFtQ¾™ˆ¦‚/½pœù†õðeN *wñ²¨Ï†•.äñ„Þ^\æÙßo:F*"z†DqÅ^½úâ/ôuè ‚ôøÃÊ\ÌãK*ÙóUR˜žŸZ #"ï å³ÜÛ•Iþß$Y{ˆÒMIDfS‘¥|%"mAV<‘·µåUÏíüªD¡ÂºJ)dãè‹5<ës®€v-… ±¬±Ûà6݈òXNÍg^ïçôçïiD´|ONß¡.õ»6PÝ4ûƒ6ã‹4½góG÷géÁÈãKæ[‰”ÌIJD¬Y³¿Àü_†ÌÆxŽT±ôËòw‡Œñ“PüÉSwM•êUC~É{%Ìhbd;¶@Ž5~þã¥a3C†Œúœ·d>©!.¨lá)Mætl}ϵ¡oGK$wð—ò"ÊLїݬ #vÚúÔƒúç–µ±íÑurâ¶¥qÅ轚Çïû°É·Ð}ZnÙíû°¿ågýÊn,W7›Ò¢à»ã‰QW£®$ÅÌŸ=l¨B ’ŠÜê·ê'35=çìH1ríÆ\Ó@ö¸c„Ⱦ•ˆÒH¶Â ‘ ËÞ[y,›-™¿ó…âD#+’Ê—¬Ú±ÂÑ¡e=ûF>õÞjïÙ(¸ñxÕÕåyuö­–êõ¼‘ãÄ £¶P™ïQW\⢷•ü6ú³0½È…Ç—v‘ókÌDd'wôÔçäX[^õÞ^i¬B*¨m§ÇñEÌ#óïNí¢²L@û6÷.]êÕ4\µa{>K‰gÏh?'WL¦'¢ÇΙ¹ªõ§HisôDÄã˂ż+z¶’‡ð¿ÚH‹Ôبj_!ó¿]Y¤ ¬Üƒþ£wŸ©Y „íá gŒmJD,KB±ÃÚþžÃ¶§ .€Ê¶ûiWÊ‹#|T®MOLõ¸–onàçLDzmÖ§ üã½[þÙä?p¨‹hìk=cì­÷ΘtƒHÚ¥¹ç/ 6®¶¾¼ª½íàSå(”¨/ÙL¡8™ì…¾­Cß7¦åç%¬9cµ…ÏøXªtiÚAÂç8nĬ?cô–߀QÅÌë+ÊçH'ß(6ó?MÐ-ô— õs;ïX¾íã«J{^ÆÅ4“—›€ùmZ¯È¤â·Ò ©JOñ=­ç­i8Î4fñŽ’¹²fµí™Š‘µ@Ø>‡ÞëW‘¶ðîð5é›Þ iÚ±ÓÌÛÛæ].B\àaš¨/·mqÁï#®e|¼\z5«×Ô‘wîZÂôv,¹©Í¼}êó“wóLLDׯ]ÝikšáñZ%éÕÒ/DÉÄÅ'LXr0õÁdãXãä%{¾8–ÂÉ´Õ>°µ»8êÌu"Òd'O7·m4¹o‹1¡N—®'Nûnç9]]~¥z=¿èdzg2´‰C WnÛLôö#’ßFrœiÊ’=KO$%éÄýZ nâœq+ùœžµº¼ê½](”¨…IQ6RèÀ¯gާh±ãønú×—Øhá3®ó`?"*Ê‹¹÷‘©Ù˜ÿM–ˆ:<_òÍøC[,7rScÎêXÛÇW•v³±pèª3§R‹„ û0/ù…‹…Dd6i =­!UjÃù1²uX5j×~^¨’e ³VD^OŽýO&ÃÐ˯ôê£".ð0¦UxXTôéœì,"rptzZíh0õwj”¸ÅÏlfZ~ÿÈò-ã“tˆ WRI¡Ã;ŒäótfF(lìU_ÊO¾x¢ÇÚ$¤ýµ.:–f<£æ¬2 wA±ÑÌr,ËšYŽe9ÁIJ\Ù% ñ©S‘_NìED)w’ÇŽÏížFÐ$ÀÅU!—“_¸ýÌ­ù»’Ñ+ÿ T¶P^ßÐ UuvÃá耧߳T¶¨lPÙ*[€Ú¦¦ü6òSüIÈLÄЫ€ $ úZ ŸÙ@íVS>³ÍÍMD0 FQ«}™ˆ WHô?<ƒÑ±4£vÁg¶P»¡²T¶¨lªG€.¨uÚ̬Òö§f´«Ã½Ïl•-*[xLq‹#âG ²@eû„p&æû%­š(\œ”žþŠçÇØÏ)YÅ™±ü­?H”Ê C¥vøac…ƒƒ²a¯û?šµ´…ÂÁAØZˆ<€ºD0¬ÚÁ·ÜŸ ÿÞqRpÃnædex[{·µkU÷oJ–›òÅOT6 Q;ùÛû·VŒ™ËÏ1 3ÿEºD»)oª5W;Ú7ê"›ò OoF¯€­Äȹ$ywœ*¸…Ú9ÀÞ»¥²ÿXñžø ÷!Z0[Ñ£·½O#µc€}`kÅðI¢Ò3¨õý36Ë»u±w °÷m%÷kÆÄ•LvNR;øJ§!85…1‹{UôÇ–ág`+8,ݲVñûíJ òÖN ðCc¥“m°Paõ²m…|À@U@°ÚÉß> µbÔÇ‚tí£C`ã°¾ÊÖsA œר–m/›ñ7'àº>gJ9.8ú·h`ïÆ¥b;å'صn‡rÀ&iS¸Óý·Š„<"¢¼heË‘ü<=)ê»õäøz^ZÉ /?Hú÷ÿÙ»Ïø(ª¯àçNÛ¾)„$ ¡÷ $*áTô‚(ˆŠ*ÅFQ,(*H°  Ò¤I ½÷С¥ìf³mÊóbWAe—„–@~ßO^dgfgfϽs3»'I°x[?­_-,˜fIIËÞûÆ1ÄòöS]¦ÛK©6-ºž»O ~öÏÒÔqâ[ÖªAˆ *Æõ+†æ17ê"^rj1 î—ê°ÝK¥ +›ÖÐ=î(ã¿V#N™#dóJÕJšàá÷V.þÜî=»NcîÀO5w(8¹_M`~j˜5Þ\³µ½wE’³L}—håžËmò)$ØÉQÖÆÉÁÎûW~b±êß×;‚4ò»¸mE8ÈXýo Ìv®¸ñŒZ½†›#ì>.,šeÞx:ëÈ bÁŠ È!dVm2Û¼R\\¿dŽˆF;æôTí§¥Ø:zÇyaD*]Q3—ðLŸ.眗ú âoãF½vnÌ`}Òr>-ƒ™‹«MÛxG}àŽÕ5Œ±qR­!îR+ÄU»8S´ÒoŒ³Fº8n¢´ë‹«ç2ÇYÝHD$»¸/†é~Y"œºÀôajÓ¶ÞñcÝÑjÜmZL_ûüÿš¨{ºŸåÖÊv²m«ê¯9|\gŒÉ§ˆH”Ó³";=3´Î0v~¹!5;·b(‚yûÏ~Î~!¥ÚˆÈ¹|º»”‰õ mð9ÛõîâkîH#⃊qŠa>!^r‘2ú³Ü¶¥ÉÛGŠJ M2ÜÿÍlÝŸOÍMl é8"â6öi·œä R5v>ðú­é‚Í£EuvwnÃ1ÌúœKJ£Þùo{ v¯sÅ""‡$ôg… y/ñ‚cz+:?Í4hëujщE–g¾Q›ôÕv}ÇçxóÒÈìþÉSwÊÊêŠda×IŠ®âóµ’ž¤Ÿø‹p"K©×Ê1çSÅ(·æGã'³„]ǘ‡´È¹Ñ£9“ñ¢ ä@,ý3³Eüÿ¦vèkÑF)e""~BGëðÝìÊ:1Ûã •AC ´=ÈÑd[…­tþû`íµS*¿ýs‘¸êQ8wËyEt«DD­[iDd)ã± DDÛV0"ÍJ‡ÞÖßÌŬ#º'ž0úþ~¼xµÉÐTöbSÓø…ìHååW=µôlÑT]ËDýµÛ8ô¥ÈÇ*Õô+§ù‘Ý̯Láãj)F¢#›Äçßæ‰ˆTzõAÓ‡SDCcÏg_ºÚ•fKgè{ÃËP§ÈGû‡+Z:ÞúD?iÛe""ÅnØr™ˆ´F:cǶ!ÕYë¡OÚODìÊb¦jDämU’ˆ´2OkGDüŠ ˆäá½tm¬•îä{%¦å"6¨ׯÆê®F‘D$<ÿ˜åƒõô#ÆÉäVûïjä¶4gð®©÷+ækI uœ¥‰\°õK%U‰g¶-|z&¿v;iuÃÈyÌüávµÉ·wµ¥I£°•ÃJÄ›L! EU Ìµ=Úx.qY޿ķXñö9ohìêIN°F>p×p]ü—ó´ØJ˜ÈNï3t{È8e›Z«ŽF^~ÓBÓÛ;‰ˆ]šòÔPqÓ!ïs}œƒú{š–ã—&õ¢ ä€,â0³íìK5‰ˆÌ<‘¢˜„ Eä~ l[(§°ŽÙzüÍq”èï?#²ÉäJ¿Õ±_»ö:Ó3éaŒÑü¥¹µLä|Y‰©lÈ8 M8ç~­¤šçø!AË8h¨ÐD$¢u+s£$ZyÙÜe-w%…'R2êg§2A§.øÌ£c”˜À~i¨K[©w(^ÊwKX´üP5:Œì…Uùµ‹M7ªGSduST"¢³j|}’·®3l[O5vºE«ú»RN8&«,Ý…pÞ ZL?U?Ÿs)†æ]ùÇ(ãb7¬®i_ M{W<Ÿ"’J(Õ+j/P‹s’x‡—ˆ´ Õ4Þ~ƒõsúœºXζV‹'"­\ÓÜAÕÅ!­8YÊ™ö¦u›”;ëöëÃô÷MmZ;K¢¼ Ùf|¬»àбoþJÕýó´Ã¸‘·ì\•B®sùeÞ\GBqvðÍÐ&óˆÈ¾r¦*qâåFæµç¹”DõèÊzR5bœf±ªU*{»öÌýÄ^Ô‹&Aþï{ýË_ˆÿµùjúŸ¦¡{ˆHî7Iƒ×9휷:{KrΤ±®^‰¤iü’‰ús9Eºl‚9è‹øj)ÅIÃC_çsD÷È)¶‰=oø}NAå{[8: P!½™×«Ú«/-äv 3=±NIÛ ‘1JQA#"ç%qø8Þí¿ÓæýÁzGcÇÞÒm“aUÜíJ‰‹Ï²ÇÝÕ½É"…W÷ô-™\:¼ª«cœ°ð$ëÛ_ßáa%TOé'¹ukø#ivT5¸kôƒú•*eÉ›Í>MDZ\[gùbÌÑÿ˸­üè]èÀbΣéìSô:Gû2¦…§„aÌëqÖ‘•謂xÞ©VnÈ3†S!š$ó»7ò'ì$†»æ~†ïZ„@C+ÛKW3¯bnÜÙÓ¶.;"fº‰ñîþ‰H7d˜tÅ©¼\Õ›Nžóƞ݌RˆR%Žð$i!8ËXò^ñXê4ãºtyØbÅ UñFÄK …#ݹ)D$?‹’*È öÒ<øݔ½×÷Ò0x¸Æ±Ü±£”> 2û\]Ì[I°{ä¯WÛ»•%¢€|®áævo÷XkŸto‡Jl1ÕC½!º¢\4Ĥ€Aöì rÀ"þ×¥ëñˆqñ1"ÒJ–çWMµ¬šJDjƒ!ŽÕ¾tÀC€ r d[(d¶ùðÔdÇå’ú)IÂúe‚hÑ·óï2pDD®,áûï¯~-ÓS%¢[Íl§}¿Þ1z°~þr~Ò7‚9BmßÓóþî|]—f¼6y££Î(Ýœ¥ÂܼÌ("F}°~î*w·VÒºíÜ¡ýL&­D9o›'£^òýxcÍM[%ÒóÊGŽfø •µV÷ýÕo‘¦Î$¢Ü±£‚¿)H#¤k¸ Z\[¹êO¼Y’Í©™Ãäæí݃†Ë±ˆMÀ {‚°ˆÿu³—Íçü'ÞçöþI5g/‚ ‡@YÁ¶UˆK§>aë/¦úõR¶l͸r™ˆÂ‹EÔ~dfÞ†‡vŽ€gá¼AÓãæ)Ȱ°ØÛU3e‡¨j* â·½t~´1_+ß<¸q¾v£@<7ü§'Û?¦©š¢išª*iªæö*š¦)êÕ)ÑæÍ?ëÿ(¥=ób¯Þ…tÌ6<ÜzŸÕÑŒ T€à’-»‰wÒÌö&ò@Ma)[ˆ×V*á;Gà~‘÷1Ø{HËXGÍZµEIâùünêÖ”Í÷@f{¯5l¨ ~5xöÙ ³@f EQaù©üÅ$ÔL” ª€¨0ˆ? tîi³€{[a³ÍÌ<…€BÅw© 5eˆ* †* âE­tîÅAcŒÙÀ½ ™- ³@f ps„àžÓð£ùZ~óàÆ÷q40f ÈlÙÀ-:<®ÛáqÝÙ ³½M4™};ÔP¿†%2ÂSÎòxOýÎ ÿ¬ÓɺníMÕË["#¬¥Ë[:<§ßx!¯«Ýô¦9<Ün­ñ„xíô†1Öðpëÿmg·kÿß«a ·6ã’Á]&tn÷¯?!ÛãŸm;ª2ÀZ¯Qhtù°¨Ê!-¿öO—³uCû[kćE” -×ÀÒs$ŸáA0ïiô{–ÄÇBc«†+Z¡¥ËëÒßme®Sú·^©Z;¬x…ЪÍMo}͹•Ï ÔLxÁ×X~>quj€F€íN2?Ü<4º|h\}ó«_2YóŸ(üözXxœqM: çžnX¸ä¯Ìí;„”¯Q.´|ËsC… Λ®Zp}ÞËü¡ÒwïúŽ;Σ^¤“Eü º vtàì™ím‘ÔÛ4x¢xü"=ÔZŽÕغR‡.•ˆèl²¸|#¯Qãk©Î,¶~‘ôTS£WËC¶¬²·fû?rúFýI*Ü¿Œ•凚üý§‰QÖkv†o’ø‹¼üð#žG«œ¿ß•zw4NLæ/ÊÞÖ¨Z¦°`šåÁ~LÕÈ;Dœ2GØ“¦ÆU’ëT"Û%aåS›ŽLAÀ‹6Õez°½aêïŒUr÷yVQÒ¥©ã¬­ÇÞ`V ~å'–«þ=5`# š;÷g9'Lpu°ˆ?Ž7O=FD$g™ú.ÑÊ=—Û<åsO7,\ò\qã~Š© ×*˲. ‹f™›¾DÚÍT-„emÜÆ4höu.:êdÿBЄ<:pvt¯)¤¿ú£¸¸~É%ŒvÌé©ÚOK±uôŽóˆT6º¢VºƒûrRíœ`j9œw]þ̦‡Co°ÚKÛôsI2+ y~]6Ì%uQ¯] sØó=iéVÎ¥¾8"wP'•ˆ¼vnÌ`}Òr>-ƒ™‹«MÛxG}àŽÕ•ˆ°ºUê”bŸ\QóØùèX}yÈnkeþê#¢=cLác(2!÷Ðrµ î&-¦¯}~‡MÔ=ÝÏrke;Ù6ŒUõ×ÜPà:cL>EDò褜žÙ陡u†±óË ©Ù¹CÌ;ÁýùÔÜÄšŽ#"ncïvËIÎ U#ž!8E÷´øìRªˆœË§»K™XП³]ßé.¾æqM4Ëi¼ÎªN,²<óÚ¤¯¶ë;>Ç›‡Fà¤`óhQÝÛ°†G ³>ç’Ò¨wEþÛÞ‚Ýë\1€ˆÈã!IB1Ý£ ‹Ú¡¯mD¥”‰ˆø ­Ãw³+ëÄllû"UËSwÊÊêŠda×IŠ®âóµ’ž¤Ÿø‹p"K©×Ê1çSÅ(·æGã'³„]ǘ‡´È¹Ñ£9“‰ž·Ä Žé­èü4Ó ­ÿ˜¸“uê¾Cü ¼ ttxõòxvTJç¿Ö^;¥òÛ?…:PHÇlWD·JDÔº•FD–2«@D´m#¢Ò¼¾´–ˆLf""NÐj˜n¼Ú¹o DT®›kä‹ mñïzï‡Rn„R;VËLã>écZ‘EšÊ^ljÿ£©¼üª§–ž-šªk™¨Wƒn¨Á+î†V"¢èfžÁƒÝ¯=¯¢»…»Ý¾íV¬lhéxëý¤m—‰ˆ»aËe"ÒéŒÛ†Tod}¬‡>i?±+‹} ½­J‘VæiMàˆˆ_q‘¼Cä¶4gð®©÷+ækI uœåZ‡"Ë{éÚÎY+ÝÉ÷JLË 6ë¿̉o±â-ìsÞÐØ5×J7$•T%žÙ¶ðé™üÚíD¤Õ #ç1ó‡ÛÕ&#ÜÞÕ–&ÂJT+o0…0\q6,j‡Î¾w""3OD$„(&!U‹ˆÿrž[C Ùé}†n§lSkÕÑÈËoZhz{'±KóBž*n:ä}®sPOÓrüÒä¢RæÚžm¼—øw¤“Eü AèèÈïÙJ§ÀÖ1[¿'Žýýg„@6™\éÿÍp¦ =†òDT·_n¤xƒuzìü¨Œˆ¼­TæÝl¼Ñ‘.͸àîuµ‹n6ÛñK]MqsUʘ¯xÙç˸º5¥Egc4in-9_Vb*2Hι_+°o¯û¢'ásÝf‹lä}ë-<,wWX´üP5:Œì…Uùµ‹M7ªGSduS|7ôg¨ñõIþ]ܺΰm=ÕØéým´êϬ8Mà˜¬²tܲg‰s’x‡—ˆ´ Õ4ÞŽ€qZL?U¶ùl IDAT?Ÿs)†æ]ùÇ(ãX^fý'¹±ë.¸b웿Ruÿü®{ÀFÀU)$ç£.–³­Õâ‰H+×4wPuqH+N–r¦ýŸ©AÁ&åÎúý:Ä0ý}S›ÖŽÄ’(¯{´aa隆î!"¹ß$Uä(ïUË—;Ì›ëH(ξÚdÙWÎT%N¼Üȼö<—r€¨]YOªFŒÓ,VµJeoמ¹ŸùÆÍ°“ÕÿÂÔ„þëè`žülé\;*ë­-"ã´×*¤ã¼Î?Èyþ¯÷’LD¤¾šLfìÛ42qR­®®ÅÃnœ=™¬÷¨Ä Úïïú¾%† DD_篻õºfˆ'˜í(ç›RËDDdˆðßÓµ5]'Rò¤$ûü©Žo>uÌšiÛü1‘7C0“˜ÿJ–÷Ó1¹£Gå,_£êxÒTiÒqÒEù[ÿ×]¨LV‰H‹Ö#žw”íÌÑÌËÇl³þÇŽíÔê¡Os &Eš>ζb‚ç¡Z;'®ÙÊŠ…øÙ†`³þÕ¯Ïî¥;¥Å•Ò |ËôB?Þ¥?õ}ã UÁ"¥çÇY©m+æÛ6¬ÍÚ:Kñ¬7Í<®týÚk8!f¸´âO¹[7s{ˆ„™§PV÷hÃÂö$[½À;e¥ë{öa nPë®îODD¦§[°Éÿݳœ …ë|“y'È/ê´êmó“³oÏN™/;ö‘ö;Ê|–ðë\ÝÌ_ÄmDÄìn"b×IóKó3¯BDlû*iÙñ €ó–h¥n¼R5–I/ b|”cl3òÝÏÌIDäÏyÜ6/6,š8ixHâë|Žè9Å6±'±׺ÀX W,û´sÞêì-É9“ƺz%’¦ñK&êÏåéã:h'‹øxèè¸Ù³#”N)¤w#ózuB{õ¥…ÜŽa¦'Ö)i"2FÉ#*hD4¹‡ùÝÅKªgVIO¬’ˆ(ªûÛGn³ŽèVgc´ì”-ÁLD$;¹R¥Í÷ööýCþ„yßGúAµ½+Äl™$‹òi5Lt·+%.>ËO4vOT÷&‹D^ÝÓ·¤FDµ/²M½ WNmûÇýÐÕŠ¥Ñ±úôrXŒ·ï³¸ w‰~P_ã@£R¥,y³ùç‰H‹kë,BŒ9ú?`·•ÝÝt± XÌy’"}*^çh_Æ´ð”0¬“y]#nÃZ"Ò¢BÏ;ÂsÞØ³›Q QªÄ‘bãž$"-äg bSÄñCž1œ Ñ$™ß½‘?a'1Ü5÷3߉QYº!ä+NååªÞ„p¥Ï‚Ì>WWh‰­$Ø=ò׫íÝÊQÀFà_çe©ÓŒëÒåa‹ƒ@TÅa/-Žtçf¤‘ü|,JêžkXt=1.>FDZÉòüª©–US‰Hm0Ä1°ZªuØî±Ö>éÞ-”Øbþ•ˆ¡Þ]Q(vižaÜnÊÞë{i<\ãXîØQ¤/¤“Eü ¾ |tÜÞ³£"^:E7³%¢§&;.—ÔOIÖ/D‹Ö¸wøx—#"Ú¶Ù¸çžãמó/köëR+߉È\ÊíKk‰H0¨ï”Õ>He«ß‘(Å훨3°ä_…‹ªÚÄ;êkWŒŽˆ´ï×;FÖÏ_ÎOúF0G¨í{zÞÿÀí»^=rŽëø‹ú-©ü¢•ôd7Ïê=W«f›é·ŸÓ¯ßÇþW«­Ü÷YT6¸KÜÝZIë¶s‡ö3™´å¼mžtŽzIãɃfç˜ß7Ìø]œ6… ¹e'ר÷¼¡:"òL^ÈJÕ'ý).ûC³“ÛµvŽê{Ü~ºÒî®›vs÷1™´â¥å–­]#ÞP% …!µõ,c^M‹*ííÒÕýVoËgåYFàȺNæøœ~U}/¿}jê3ÖÜ´Y"=¯|äh†_º÷a³ÿ„‰Û#üu³oWÕú›×V®ú“0o–dsjæ0¹y{÷ á²E,EµV÷ýÕ/’¦Î$¢Ü±£nÐÉ"þÝ„9:nïÙÑ]+"ø„­¿ë×KHÙ²5ãÊe" /QPû‘™yÚq8Ö3Þ éqÆù{»j& ìU@ @…Aüá¶—NÃ6ækå›7Î×nˆS'׬U[”$žçƒ/¹5es»ŽOQÚÙ3/öê]HÇlÃí÷YÍȰá@¸ if{y ¦°”­‡eÃk+• (n¸Oä} ™í½„ñZÆøåX€"Ïž2[d¶Èl (*,ß U€¿˜€š‰²DPCñ”Î= c¶po+,c¶™™§PP¨ø.•¡f¢ìQÔ@…Aü¡¨•ν8hŒ1[¸·!³d¶ÈlnŽ€Üs~´1_ËoÜø>ŽÆl™-2[¸E‡Çu;<®2[d¶·‰&³o‡ê×°DFXcÊYï©ß™áŸµ`´¾c¢¹b¬¥x1ké –Ö] sw²®ðз¦ðpëß벉ˆÞ­fñ½üø  ªÌš–ò/³Å~ƒu¾WÃnm>†¿¹Ïø÷ÖÃíŊ[+Ö4¿0Pw΃j ·DèÜ8,<î_Bö_ËvT?d€µ^£ÐèòaQ•CZ~íŸ.gë†ö·Öˆ‹(Z®¥çH>u±” 5®Sú·^©Z;¬x…ЪÍMo}͹•|¤A– <‹íN2?Ü<4º|h\}ó«_2YóŸ(üözXxœqM: §Ðµ*^ðµ$–ŸOܰþpÉ_™Ûw)_=,¢\hù–ç† œyj ï¼—ùC¤ïÞõÅó¨WO¸ÇŸ2ö^íR½NXñò¡e°¶{Q·4± –½f°8nýnr…P[ÅB»gI½Mƒpœ µh-§­Ö-:¤pG÷æê9š?EÜM嫪e:²—OY)nÿ“ou6Ç4Á´”—Û·W½9üÒÕ×Éç§ô’­wщن¹wõ“J!Jóš+ƒ[·›?I—rXÛ7Ý Ü2ce¹^ÄÕKE"GD”µÅúÀ³|–›,¥¼?¢ñn.ÝßïJ½;œ$Áâmý·~µ°`š%%-{ïwÇË,(ZT—éÁöRªM‹®çîSƒŸý³4uœ¸Ã–µjP¾Ò Kž¥™;œÆÜ¯&°??5Ìo®ÙÚÞ»"ÉY¦¾K´rÏå6Fù®“û•ŸXF¬Ê{ýá’çŠϨÕkȱ9Âîã¢Yæ§³ŽÌ ´u‚ü`'GY'HÆÄŸ<æF]ÄKN-&ÁýR¶{©´a¥qÓ:°ÇeDHóLlV†ñæVÈlóJqqý’9"Jí˜ÓSµŸ–bëèç…©ltE­÷çÎÏå0QúFcµv‚*3§JÁ3Û˜GÜ?†"r-—-LD c¬GœÔxгü/ÒüµüK‡Vtÿò‹LD º™{.ãÒ7èˆØÖ3n”'T "Ê='¼ÙO÷Û&^1hõš¨ë~ã‰èÜe›ž£ ;pz4äqã.>ÛCa‘j|#ù×É.÷+-¦¯}~‡MÔ=ÝÏrke;Ù6ŒUõ×0®3ÆäSD$NÊéY‘žZg;¿Üš[1Á,°r¢vZ|ö )ÕFDÎåÓÝ¥L¬GHhƒÏÙ®ït_s[¯äõ r8—¶ž•!ØÏ¥ìeDÔ ¿õ³Žó‡ù¸óaZ«’§ؙŌޤÌÃúõŒ1ú~sN»(Ê>®ONn¸·î+‚G%ÆÈbÑÊTQ[wõŒþõÿ>-?TE#ûEaÕF~íbÓÆêÑYÝÁ•ˆèl†_ŸäßÅ­ë ÛÖSnÑr¬úo?ã4c²ÊÒ1ª_å⪂°)ZL?U?Ÿs)†æ]ùÇ(ãØÕyž<¤A– 2‹Óç|ÔÅ2p¶µZ<iåšæª.iÅÉRδÿ35¨#ؤÜY?°_‡¦¿ojÓÚ‘XåU0d›ñ±î‚+ƾù+UÇçµþ\{í#ýOÓÐ=D$÷›ä¯ Z'ëu®€{çÍu$gß m2ˆì+gª'^nd^{žK9@T®¬'U#Æi«Z¥²·kÏÜOì(· ñwMûJhÚC¸âþ$‘TB©^Q 0ö„øß 2˜ÅòÖ„æ}……°t®•õÖ‘qÚ{ ³åÿ·<ïaD]’‰ˆôÑW/¯>c#•ö.Õ?ôŒôÕ cX;û17{™ÑÀÏåŸºŠ›²¨ROg)ÝÕ ²öñD$»¹ e,W¯)ì„›jüçñ‡¼,l­¢ÄDýc?=ÙüòåÄñT¢‚Ò­{hO…ˆT{íqÓ›9^Òb˪z#"R‰ˆrRñ’Ú.*;P½‚«g3~ê:nÚXý4"ƨFk÷²n=ž£¹ÿN{&%ýÝL²Ó¿†Öy‡¼úƒ™9UüÇ»÷Ó1¹åCHy7¤T-έH“Ž»ø+Ó__w¡2Y%"-Zx`¹¸>‰GÜŠ}œmÅãÐo…iâš­r‹8Ý(a 5Ï©.ð’º`+Qz~œÕù5þÈy2†+UbY暙Ǖ®ß{ 'Ì.­Dwwëf¬òƒ†…? 3O2ÛÂÍî¥;¥U­¥ø–Žˆw)DÄO}߸ç™ÜXþn|ö$[:¾Å;e¥ë{öa nÐ:5ˆ¼î)‘éÏ]k%õDDª—ˆ´ #ÜÍvêÖÔýPGDŒ)­_¶ÏxGÃùÆu㟳ÓßwÊÎeÛ<ÆTiÆ÷†ïWêF½ÌÊýéèPñÏ_0ƒÌÒݸ Íß $(n! çnÂe‰#"ú}#"Û É.ÕMÔ77ià{IE†û³ÄÔ¼}QYú:ÿG¶ü3©It5¯¨–)£~òžrítke•ˆ8Aûa¡cÉÿߢ¤Ürz""ß×v(Î<-HdBnF†íò%Ûþ-Ž¡=}ŒÒV~ÜÌ zuû û¶Mޏúu2ÆXˆ·ËñïUÙw6÷Þ¼œC[?Lr¾ÝKÖ4Ú»D÷ù9<ÿ~ÒM[Ê\þjÌNò_à—ÈZÏw_Xx–ˆHSü·FHZx;_m!"vbº¯ÅW£Ï,­Òª·qÌOÎ>¼=;e¾ìØODZØCî(SðƒTøu®næ/â¶ " ²ätK´R7^©KŒ¤1>Ê1¶ùîwå$""&ñ8 +¸³y»›ˆØÁuÒüÅÒüÅ̫۾JZv¤Ô×8ШT)KÞlþði"ÒâÚ:ˇcŽþXÆmåGw7]ìBs…¤HgŸ ¤×9Ú—1-<% ëd^׈۰–ˆ´¨DgÜ [ åE?äéM’ùÝùvÃ]s?#F¤/ä Õ &]q*/Wõ&„[’ Íã‘ÎR§×¥ËÃ+¨Š7 ^Z(éÎÍH!"ùùX”TAQú,Èìsõ¥%¶’`÷È_¯¶w+¬þéz]å5›øy·L!ÅÕ-å#\QA¯-š#hÿV!×M†­yKï{ãòúô ãµÉuFéæ,æÎàeF1êƒÝü_Õfºóáçôë÷ñŸÆÕj+÷}V ²p¾D5r~ð?öÙ/´/t ‰Þ.U´‘Ûü×|½ºjž«÷@iÓA~ãNõ±ŽjêtŽ—4# ¼·–8o˪ÒÚyâ<ÍZ|soŸA®÷!w·VÒºíÜ¡ýL&­D9o›'£^òý.ˆ5õknÚ‚,‘žW>r4Ã/Ý{õGØìdçö ªæìà­ÓMÐâÚÊUæÍ’lNÍ&7oï4\¶/­ÌZ«ûþêISg‘/³ k£ì匣§ [ê¦ìÕL¡Êƒ­Ýýºk‡#þ³—À•9Ȭ ­ßÍ­°0—N|ÂÖ_Lõë%¤lÙšqå2…‹(¨ýÈÌADigϼثw!³ ·¢ZçËÉdCx¸á&Þ˜‘aCôàžVH3Û›H·4…¥l 8,^[©d@qÀ}"ïc°Èlï%Œ×6TP¢E ¾¸Ù ³@f EQaù©üÅ$ÔL” ª€¨0ˆ? tîi³d¶ÈlÙ2[d¶ÈlòªàÏväÈ‘(€BeøðáÈlïÛx@aƒ»‘™-2[d¶€Ì™-2[d¶€Ì™-2[d¶€Ì™-2[d¶€Ì6oÊDÆXÅnë|/[†cum¿Ÿ"X>#ÀýÙŽ/Æþ£ÃîKÁßU<*****"D¼ûìÚ–ô¦Rj<Ùó핇³óþÞ¨øÅyY¸?#‘pGמròlÁ~<ÆéÃÃŒîœì´ÔýóS÷/œ9åƒeû=\â~úŒE\þîF6—ì§]#¹vq"ú±w§ø*qVƒÄ R±åZuck¦Û·|ð[s}÷ñ6üb¿ïå3QfÆXåÿ­¿ö½5ßü}ü«O–3Ö|c ‘æóÉ€†5bMzÁh-Þ°õs¿µÙacäÓ—/_±;swü6±šITåÌáí[žr+AV5±bø›Ç³ˆèâ®öŒ1}H“[ùŒP¸2ÛëÚõûŠÃ™üMš7­[É~ñ䲟?¬ñðÛµ¿jÿæWóÏf9}/g<_§ËÛŸíωéþBŸÖµ )Kg<ÿ ?S ‚Iñm^^žü4ys¾¼âlU•KlSÃ$‘.¤aÇŽÛ·mv§?#ÜŠüÝœsî+ƾúû¥SÑô½úÛÎѵÊóDެ+[¿y¬ÅàíYGÆ+4š¿ûW,þùAÏ55ˆaÕÊ9¯$ýoæA"šºø‡zfQS^Z]¥N¦cÏ[/&5½ñ ÆQM'¢ãIg¶\Õ7³,ÿíÍãY!e‡,XÐÎ÷Þ;úàîe¶×¥]\ݵåÿ­Ú´;Ã)û§¨^¯JüíøÞå-^~ý庾ÿÓÖLV5ˆºÔ¬tí2黳(™-i^ÿ?Œ2öæoUwô3ÀÝËlÍ%ûÙÓ&\;Åy駪õvªZ.¯ŽxøkîÄçlÍ×:Uš×Zö/ùýœyÅ„«9ex­Ryyû¥Ÿøþ©Ô¹L¾VuëŸ Kfû_7Ouª­þñ‹P[;;ïï 8"Jÿã½]SS²/yoð¸lxÍ®DˉhÞéÐ%öåÅÛM\§cÍn{÷¬˜ñüS?‘dªõÍÃ1a™ÁV%2FDÞœ“·þàN»Õ»iCª6ñýó@â“ÏvëX¿Õʼ¿·WÕ0":³¬k…ÚñqÅ"—gº‚/oŒúßÄΈè÷7[+_³Y³Æ•K†$txõÏlw ·ä^œjÔëk?öâN»‡‹´tyŒÄ_Uí†D”•úZƒÄÖOtyçV>#öÌ6´ÂȤ‘Ï• 5œÙ¼êÀ•Ч6Êû{{.™Ý©Q%‰ç.]t´ì÷e›pà ßòòì}ó>{·yÝ*Ê…c6n½LÅíÒ§W S å5Õ“-3}ÉrÕžìù©o6ºáª}ûKÄx³Äm[³jÇás·òàNcõë%¤lÙšqå2…‹@D @̘:¹f­Ú¢$ñü ~ˆfkÊævŸ ¢´³g^ìÕßí ÷6d¶€Ì™-2[@f €Ì™-2[@f €Ì™-2[@f €Ì™-2[@f €Ì™- ³ÍMÎüâÍîUJGˆ?i{åýl IDATãÎñD”“¶àÝ#™Dd‰y}Μ9Ó¾hz{÷Ìk;0ä…öå£Ã$A*S©Ó+ïŸp)¾YÕLcìß¼I5£N*^¶î˜Å©K' oR5F'ª5{zÃë[Rv¦~Ø·såR"Ï[‹Çvèýþ¹¼ )À}•Ùæ^šíR5"êо4Yãú„¥ü~ŽˆDKý§žzªÃ£¥obó™‡$þeêÇßÓ5ÕѵVæ.Ίzð·_‹×_Húæ½zõ_½6+Ý?ö¡ìµŠ‰—OîؾÂó7”‹o`"ÏÁ?êÜ7…ˆHuö¬“0tâ\C³'Mùö‰ØÜE“ßkÜi&Jà~’§»‘Ï9ß?%$Þ—GŠ|¶¬:Ï9oqóîì]üqéû$²3&¬Ü0/Þ,澑`Šêzeï7ãÎŽy·”Å·Lâ²õsF_Ù÷|D͈hç–å%$î÷KeÚ¬Ü-64Ú,ñ¤fÚr6ï;>rñ!›JDT£Féò"·vÝö­Ä7–»xܼ7/zD}ľ÷!¢!£æÌµË¾žkë¬'*·©>cì¼ 9º|uL¡%jv =üK¶:²}ñͺ‰þ7Ðô ŸÚ=²KíÄraœ×µ;ÕÕ°FÕzçg·V¸:Yd¶?&³µU=¹ì§dˆñ¿ñXÇâÒ¡†ɩߤöã jV±:ZL=a0—]úb=‘hñúý‡r”RQ-«Çíú{U­ì?~&+®kõÐWº=¶ëð¼õ.î³<&fŸO›¾ÍV½V…GÕ¬§o4~ÛßÒ+¶(›vàò¡I K'ç옛¦‹»þ†ïʈ(¬d™/Wóýo»¼»ïœËqQºc©g–d¸ fK‡zeÚ=ëHê¬[ÙJ½g×óý—ÏŽéÜž´’µb^é»vudCtCfÅ&at£UêƒôË>5ÇI“4«oä=NÛ²}—ÄÐè«;WÈ:Yd¶WQå›çÿß‘yqà¤mDß±¸¤ÈŽçæí÷­;mzüíêѕ빒)Zb¤iZŽË“v!kÕö#$ý£ßÙ3Ëg§]Œzð£Î1‚ðRUÓÞóU 5M{þëõܪa]Æ®áMBKT|!d÷äl¯ï]'­èwÚ¥3ÆìÙŒã„æFa®þú ²o¹x: ˆ$Chýrþÿ¯è%"zï“ߣ¢ŠÕŒ¶DY<«²Kv KÖ4Ò­e¶;~]5àp¶KÑt–ZkóÓ1e]Ø»ÙõD\ÝqÝ4Ev¼½Å¾à¯Ìö&ú_]à~9Ч‰z ¾‘×4ðÉÒ6Å‘ÐêÝŠ7Üéd‘Ù@^9íéË©ãKÑÁmû–_öQH‰"âSÊÿ^’ãÄ2wøÒöŸëVÁÒí‘ønDšF‡ø¿v»ÿy›’¦)G=jŒÀ›"‹l%"Uvp«Dätœõ-oä(ûï’=þ×"£ì ²o‡ ÑÝZTÛuèÄÂtÏ[±ú¾kì÷ÛcŸ®_<ü±*Üo[O4©¤½]SUê-ºËÀŸZñÚ;MÞöéãÕ¢CJsköØã†*²Ó£iÞBÕɲúõR¶l͸r™ˆÂ‹Eäý•ßþUnÎþ{ŸÃãº!y¹u»4}–÷f¹&ŠT/]ÉÈŸÙ³!qæéüA͘:¹f­Ú¢$ñ<|É­)›Ûu|‚ˆÒΞy±WoŒÙ@L¨Q>2Ê" ¤edÛm;þÑ’3…p7‘Ù@h3x6‚PømŸ½&ñ^ØOE÷4d¶€Ì™-2[(Šnþ»‘óõ«DÉË}c¶po»ù1ÛÌÌSfaa±H^ CÜi³€{2[@f €Ì™- ³@f €Ì™-ÜÛÉ¢b‡›ó^êíçã×ÀîÁÌvâµÂÃã»ûï)óÄ?üš۵ò&Cv_;e|šÍÇì'¢ðð¸|ý¹Tÿ®†‡ÇEFWOhÑý³yûQåž\u®ðìϻժÙýЇ¯¾P§RâÅÊ•*›Ð¢]ϧì¾û{õwýüûÏWÕïæ>´Š­ÔjzêÝ)4pw\Ú±¸o·ÎUÊV-^¼b¥Ú-Ÿí÷ÁòÿßÞ}Æ5uvHBaTfJd°/Ë…Š¡ˆ¸‚"TD\¥‚h„â«X¤¡ŽjëhÁ=À".Œª˜Q ‚€,™²ÞѨpo$,Ñžÿ/ÌÍͽçžç<‡:ÒÀ޾|NÁ.¿ü·Ì)¤!»†'Oòøÿ¸î9ý»ÎM7ÛvÛ¡ÛvIBéûýve³1›Ù|ïÂþùþ³‰…Á4Y(ˆw.ë¬$Må –dçvËÀëÀ™mújÒM5Ïïü•u<=-5úPFû<nüv¢JËq?ÏàQGÙé u€ÁVsýG‹9ñNßFeìLÒ”'V•ýy4m{â“iñ–Ã!¼!žqÀçg€?¬`¼r‹9ò[u©çC …kºêhÐÕµ,\ýcÊ:8üíté)‡Ýf¢êê;î<_)êIø7Yq‚IFpoûë+—¤P(òJjž›¬dHsëz9€n8ó÷Óë<æhQuÿ³ìBˆÍ,Ýú—‘®)fê0/´°™Åßóî/Ñ“-Çi¨ÑiúönË¢OŸ¿Ï×ÉQ“ª7Ú|v|拾¥óàx‘tÃjº%Às mŒªš‘ítß_MB`µ‡.v×V×S§óËDȹÖéXÂ$V¤¶ƒ9CuÆõ³üúÐ<€Ïpe‹Zrp[UÆêÕíÝ^UŽ_”¯éž[RTö ݦ5Ýqv‚àÁ§û¯ÚøGÜÌωó‘õófñ°\œ²ˆF3Üb+Z \ëþŸ;ï¶qÜ챯ø÷–ýJã=?’°Ö!^èd×óâÙEù¥Ïnùë̈ê¨??sÝu¿œ©¬*.ÈÜÿµÁÛ ¨8]ä››wu§·êV—b&[ÔTà;’¸ë&¸žCö _”Þˆ œPZÓ!$€ÍÓæg[Ÿ½“˸zõL-AŽ„œKÏú?¶ãÔ0S§lþsEE‘…Œ8ÿ®¡çªSYYÏ«Š‹ïÿi_óçüM#„FÍŠV`ÞÞÎxÅßçÑ® ¦måÄñöÇ„U?Ø1ÛÊôQ‘¶?’YQQTò {ÆH’ÚsGÊñ8y)·¬º©wŒ•áwòŸìýÐ$+ó¿:’$‘¢êVíNqŒ†çc¦ïž·0·©«áïTçÈÿ%g%Œ” âÄ lÔz–¥°Ì Ää…Öñ©µ„zv {RptnÞÕ ÖõAíÓëµJ?wûrbóå¤7_ 9æ©ñ.o¦ož6ï<ÇöBÞ½’6¸ÓúÙŽ˜u§¯5u†›wÛN–#õ­Æzßv0gè`ϸ~”__š'0 üÿ¤”§˜§¼(enÖJÁƶêÔôjNQäe2Ii®LضCwé½Öå–2â!‹Qž¶ª!e¿ V”÷£v¶Ö'iîq'CÆîîŸéx­q>IõÔûÔÙÚLT³>éìu ænÖÉûÂlUùÿn¯9”ö”ó0Û[‰L@HÚ5|k máKV,·Ëã”Þú˜d}ÙDAøþB’Öç˜Érú!1?† Äíj-e<ú}ÏzïÉsKÊ/²q’¦‹•a¾¢½^« +æ'Çñ—µ¢f²[µ x&¤FŒr(Ó ŸL2ʽ>×ë²Dø+Û~N^1"åæÍן1#ˆCëø$ZG÷™E”C¼·ÿ@žDà±x¢^fŸ•-IÊà×p‹ž[~yýC—LËî¸ü¢‹£N&"„:›o#„,dÈñÊÅe”ÔÔ¨"=…L1!îÜÈ».CëöЄe¡–…r;›îeþ>ÝÓ×f!ÃEQòÝxÜöÜ–N}Ù>¤¢çÁ§àGÒ-`vç¥òλ/ªð qt9]§_vqUÈ„^^uïµTþ\CÒMýnnχ¤Uçhl[w´ìëÃLCŽ?´?GŠ(†xlìgñ8­] 1„"etÇ~¹8öˆÇíl#œ¤‘¹~ýê_Ç?3´ÎÖËIO1sÍjŸ£êæ×UKe'®í\Ÿáã<”{5j‚²C¿'/AG‡­ãÓjƒt]=7Ú×cÏt’Óu¦ÍU L;’Rr¶’ Û¶3×1rü»Û;^±ªÆðbk£`w‰A›qý¦)Ѧ€b°Þ…5ZžlÖ~qcy3ÿ.Em‰3•´ ìXm§«¹"~Åfe‹µ–2âŸV²(jKÝÔ™3V'1^4q8¬š§ÇE#„Z+÷F$Ÿ-«m#HȪª*d¥7oo×Þ¼[ÕØÖR_ùËÆE/åì#tåEMæÁñ"é°3UÜ}uJyc»£ñFzZDv ^êbsiÞ‚ÍÇžVT3îfE†^~Õ|ÉK—z^ù`ê$¿°a3Ÿ¥d3jofX›òÞ·Xþƒýý­á›‹X{|t>¸]~´««ÇƒvvF !d¬,Yzø¯ÖNv]Å‹nGë|•c2Þgï‘‹Ë«[ZZÊŠîD¯Ü7ÂÀkœ¬8nÒ°2Ì?‘Ƭñ´ik®ÆÏž?ó@~ƒHQ!„ØÌ¦úúÁ­‰ÉA=H Üpvé`È™C~©þ®éÏÛðGYبõ,KÌ>Êä…Ö1ZÇ`\æF¼™NQó5•æzÿpæE]cyÑø¨ìþ¶#1ñû|K’|}¶|PZÓÒÔø´àv\Ø7S7Táņ×%†lƉ4L"µ)à_±²#É'&Índq÷³|Yy|œ®–±ó Šó…ÓŸ^¶ÄHñ×NLaßško­¢j`÷õª¬ )„IÚ ì\Ò4‹/U¨cf­8¼>)ÃVîõûë/s:ZYéMM}¬{âúÏ¢˜¨©À>8N$=N¼öëDæ•iffj4»Äª$^bDÊñs1²Ù?Ú˜ÛÏ[›¬0I_øUó•ܺ}ãNÕ3'­âqlƒË.og“©[+™ãøÞ·¼¨OŽÒ캧h¥ÿæ³ÐBöïl|”}ãmi‰2R!§”ï©E»´5ô',ˆïv4²œåÚ£.&Gϰ±§ÑÌÜ×WéygemVÀ˜~}^ÄٻЙ³O9~Ÿ¯“£&Uo´ùìøÌ}KæÁñ"é†ÕþtK€çÚU5#Û龿0š„Àj+]ì®­®§Nç–-8ˆs­74Ò±<„yêÚüo45 ÇO˜UÕŠºà1–>VEIGfåê·ãŸNB¨ì5m6ïM‘¼úKY‰~£™…·?æa& 3æ/‡´—í9šš†z&Ë»ŠÝQvây›{l]]Nö‹‘z&n~«Žeø 5Ì ¿ƒ³…£®íêgl‘¢"IÉ¿[ÃòRÄÆ¢#£Tô¢o¼äïŸà«9Æ÷y'/¼QÃ,Ëž1ÄÍ™ú¸q°'/´ŽaÛ:è†Söòw™¡IÕ3°š{ŒQ{r÷Fk#SªÑ4ŸX&—'üh˜§ÆÜˆ7ÓYmÅa‹ÝuÔõ¨šæ“f9þsDßÚâ±¼tVúùÒ ”IDAT;wº†‚´Œ¼®™õº˜¤+‘f}H¬Hms†êŒëgùõ¡yŸáÊ!´äඪŒÕ'ªÛ»½ª¿(_Ó=·¤¨ìAºMkºãìÁƒO÷_µñ¸™Ÿç#ëçÍâa¹8ef"¸ÅV´@¸<Öý?wÞmã¸Ùcÿ^ñï-û•Æ{<~$a­B¼ÐÉ®çŲ‹òKŸÝò×)˜;;!ÔQ~æºë~9SYU\¹ÿkƒ·PqºÈ9$67ïêNoÕ­.ÅL¶¨©À98v$=p×Mp=‡ì/¾(½8¡´¦CH›§Í;϶>{'—qÿôê™Z‚ 9—žõlÇ©a¦NÙü犊" qþ]CÏU§²²žWßÿÓ¾æÏù›þFš­À¼½ñŠ¿Ï£];L7Úʉãí «~°c¶?”é£"m$³¢¢¨äA÷Œ‘$µçŽ”9âqòRnYuSï +Ãïä?-Ø9ú¡IVæu$I"EÕ­Úâ# =ÎÇLß=oanSWÃߩΑÿKÎJ)AĉAبõ,Ka™ˆÉ ­ãSk!ôì@ö¤àèܼ«¬ëƒ&Ú§×kÿ”~îöåÄæËI+n¾r4ÌSã],ÞLß™*d”{}®×e‰ðW¶ýœ¼bDÊÍ›¯?c,F‡ÖñI´Žî3‹(‡xoÿ;€<‰ÀcñD½.Ìxðfzgó-¢„†¡ô€µ#q)=„ÐýV–㉭ð¶~—Œ×Ïò†|>+[’”Á¯á3<·ü óú‡.™2–ÝqùEGLDu6ßFYÈ?â•‹Ë(©©QEz ™bB ݹ‘w]†(Öí¡ ËB', åv6ÝËü}º§¯ÍB†‹¢ä»;ð¸í¹-ú²}HEσOÁ¤[ÀìÎKåœw_Tá@âèrºN¿ì⪠½¼êÞk©ü¹†¤›úÝÜžI«ÎÐØ¶îhÙׇ/˜†%~hÿ~ŽQ ñØØÏâqZ»2b!D ËèŽý*8rqìÛÙF8I#s12üúÕ¿Žfh­—“žbæš Ô>GÕͯ«–ÊN ]Û¹>Ã)Æy$þ(÷jÔe)$†~O^‚Ž ZǧÕ:éºzn´¯Çžé$ §ëL›«@˜v$¥äl%¶mg®cäøw·w¼b TáÅÖFÁîƒ6ãú5LS¢MÅ`½ k´<Ù¬ýâÆòfþ]ŠÚg*iAرÚNWsEüŠÍÊk-eÄ?­dQÔ–º©3g¬Nb¼hâpX5OŽ‹FµVîH>[VÛFUUU$ÈJoÞÞ®½y·ª±­¥¾ò—‹^ÊÙGèÊ‹š ̃ãEÒ3`gª¸ûê”òÆvGãô´ˆì¼(ÔÅæÒ¼›=­¨fÜÍŠ ½,üªù’—.õ ¼òÁÔI~aÃf>KÉf46ÔÞÌ8°6å½?n±üûû[Ã7±öøè|pÿºühWWíì>ŒBÈXY²ôð_­ìºŠÝŽÖù*Çd¼ÏÞ#—W·´´”݉^¹o„×8Yqܤae˜"YãiÓÖ\Ÿ=æü‘¢B±™Mõõ ‚[“ƒz¸áíÒÁ3‡üRý]ÓŸ·á²°QëY–˜1|”É ­c8´ŽÁ¸.Ìx3¢æk*ÍõþáÌ‹ºÆò¢;ñQÙýmGbâöù–$ùúl=ø ´¦¥©ñiÁí¸°o¦n*¨Ë ¯K ÙŒi˜DjSÀ¿be+F’OLšÝÈâ î'fù²òø8]-cçç §?½l‰‘⯘¾5×ÞZEÕÀîëUYR!’´AÙ¹¤i_ªPÇÌZqx}R†­Üë÷×_æu´²Ò1ššúX÷ÄõŸ)D1QS}pœHzœxí׉Ì+ÓÌÌÔhv!‰9:TI¼Äˆ”ãçbd³´1·Ÿ·6Ya’¾ð«æ+¹uûƪfNZÅãØ—]ÞÎ&S·þV2Çñ½oyQŸ¥ÙuOÑ.JÿÍg¡…ìßÙø(;ûÆÛÒe¤BN)ßS‹vikèOXßíhd9˵3F]LŽžacO£™9¸¯¯ÒóÎÊÚ"¬€13üú¼ˆ³v¡3gŸxÒÜû¨BOÒ¼GþRpsù‘Q_:3üvüÅx*™ î–¶X%pJà?¼Q2je‰ÃG™¼Ð:†Eë„ëÂ܈7Óň2'Nï œ‰23°t\Í3ÕBbÄ~¶# ǰ{Ä NºMOÓ±tô ¿ßªµ-XÀj /6œ.1t3N¤ò¥MÃë×8+ËÜ;wêëB ŠJ½fcc9¤O¸ºaCêÕão¾ÆãßÉNSÏ,ûþ^]y¨(KcÔ7µAæóÉÿÛ©Ð#FhÁâe8 A/ó¥B ëãü½ïxè8íè?ôÝ/Â*l¡šäóˆ·Ý¥­kî;0Ü©]VݤúÉîž4®ÊfÀº'ªOÞ^ùÝÕO}æåß¡¤Ÿ<õç¥2´_Ü~Ó·oß'(øW6}ó•·ž}e÷V+«©œ¼%&Ú~²»‚Á©©©éi'¹¼‘[p®lPWì‹¿#¢¦K/!"„æ'wËS»Éy‘±¯ôúîÕtòÅ;šE‘Þ¹ƒîùÆûÚÙs¤ñ·Üß·ß5?9ö[ù°ž4L7+Ьéª+~÷›SÙñ:þÇWööÇ3e_©Ë ^tÜ7'ŠvWf L´#C$Cs“ÃAONm9nyD£#"›+8dreúúæGGçŠÇîâ“N¥×ª%ª)$›®k'Q|c䎾Ðó¦~óÜ7^ùÝÕܽ>òÜIAØt硽­ŒIÉÕżs-Q|#Jÿ8òôýWÐo^9|2»Ø‡fE±õ‘£¾͹’œ¿÷bÿð)ÚÑ7~ô™—gê2ˆÇy$ì'Æl&C‰‰GØ µˆ-C¡ÐÔÔTp¬·™1¿ãì(fÈtÙDqÎ7•Ï;CÎàX¯žbò×V*#¢/ô¾Õ·‰âo'Ø.¿6ò×ÓDÔt鵟ÝHD§?þ?Õ_vÈØWì6-]òÙD4ýΜs¾ðÇÓÄØU e^ÏÏ÷Fœÿgµ®odÌæÌÏí4º¦¢2=2˜lŒ‘?œËë2¯Kåe¯¬`þ&¥p#ã¿èhb”(¾áÛå˜EúÝ©ÿ·>µÊ»\3G6Ý92 cLœ懻¶ÿâ×õO‡8xÌf³Ù£˜kñÄD¿Ùlµ:sWQ¬Åüˆaãv×ÞVƲ©ÚešÏc_©ã*péí¿òVßvFDÇŸ(ù •j¶Èh²“(•.oä<1éòÅHß;æ²1V²œ^·Í ÎUþÆù{¿xä•Ì€Û¿½3+Šô¹+þšH6þ­éjQ|ÃHÈŠ_¦ùÍÿñ+þ«&§ÊÜn÷ëËÜWPàêûö¶2&Õaù »ú îg+a!#¢&¦ø­ùø"Q4EjÒiñƒ°T=R6ÝùàÇ{ïØ–yðcÓý?tu^,DtñWžíûø&ߨ7ïË=rãö¢ýÓl…}¥ÿÐwåÿÞÿòjÖxõ}{[§š}r;=²·uú¡ãÙ4Rz(%1ºúö3uX&AÛ9<­ó¶;œÖ‘(S ‚qÐm8Žöy½žÄ¹€£žœÚ"½;ãjn–¨áá‡~øá‡ËÿþÛ9$ý`À©ö½Ïönªaöç_ü×õ_³‚Õ«ßït«ùq8oíÙ³gÃÚ¬YÞPÛç~x_ öœçÖhþ&›¾ùÊ[ß\óáãP(4„v+ÏÁh Âum=×·ý½ôϽw~imÞó/þ+ö1¬ïÏülíÿÛ¤ÿ×àóK–)·i íécÖeÚ–³Ž7 Î+ g–pÿ@cÈ<òó¦ €5ë3Á0þп äoÈßù @þÈßùò7@þÈß¿ÀÊÚPÃ<ûöBàVÍî{î@Vz8Ëï¨ †èFÂZÌ߈辻îDìVÁs/¼ˆ ¬ôp–ßQA Ñ„µ˜¿]ð)\x ë z8ˆ!ò7äˆ!œÃümƒ ¾ðëïüßtÎŽÿAX£¹G5=@ '«òÌJǶkk"š<öï8)°vs|M#†ÈßðIF(ð5ÂÚ¡òI¡x‚å:Êß6ˆ+Z~=Ô |M#†p®=powùO?QZ?ù[2Ū*¿”<¾gÓÀ«âÙÏ3c·þä½G6 q>»gÓÀ¯¨#÷ŠJ5Ϩ¸©zŒ}á;“ÿk×e˺t»LŪ ¬šj¿¦9ÿøå¸Íû›ºu!ÎyGeÅP:9yGTMdªŠXñJK­îÜúËOo¨2˜‰ÉîÑ9iO5÷îÔÖqOE¼íŽ€Âž²¹§ {*âmwøÉ^ðn©×ˬ4W¸ªyÕ,påoiVmù4c_}ê„c“ p>û£|pÓ<øÊOïØ(múîìÉïãIâÕĈ¥‰ˆx*Í’µÆˆ/¼Ô{û? Ûž KuûÃ+÷ºÂÏ;6-+!,Y±jC«—¿Uó5Íù^¹·ã'|QêÏÔ¥ qÎ;*ë.†™N¦Ôù|n“ú¢T¢ÛY*2UEL*\ºß«œòVoåýÕ§/¨6yóÅôRÚÆybrÀ®[–"Æ¡PhhµR †&ÖüÉT?Q2ÍY®Ñ§YŠm|êVQüÍO~>›L³¥Ô wk‹©Õu<•N¦ÙRüà·Z[¶nÙ¼uËféÅ\—^º{ë–ֻͦ_Ч“i&_¬TFškë–Íîé¥Tü¥{Zr…—N¸L÷<•JTïÄÏEûS]Ïx2ÍRL{ës_ÏøÙZp™Z]áäñ‚åËk^ªb¿ÿùë5„V3«fŠÏ@D£½„w!ÊõIâ¿•í“Hoåú<ÅkYÍŽJµS£Ä° Ó(½R¼Š²‘É›½Ò+÷{ó7íÄžô‹¢(¾úÝžÌu}‹êÆêÛüÏ?§ÊOùÅâ1"jÒi¤tKÛ92$YyÌfK–'Â9OLô›Íæþ‰'"ž˜èïŸHp.%ýf‹Åb6{"\í˜Mñ*äïÆ',KnuÅig k,5o©šä^o›W±³Ù‰xj¨Òòò·W?Iå¥Ú¥r¯_Ó—£×ŽH2ù»KÉÙ§vy~C·þÏPøÈÑãÁc_—ÎÌ.НM§ð¦{§(þfäÀ»Òrr3¦Ò›86{äèñ7<ðyÆüßÝ3›ÒÚ¾ Š¿ùýižLñøïwUÛ–‹Óy•_Jξý1¶³õz…šK+}xæ¦à±‡¯g› –Ÿ«y©Še^?ðÀUôÿH¯×:X½ü­š¯éTzS«Dñµ‡o¼çåÓLþz©>Éô; É¿dÙ>ÉìžÛG>øÂ}Ãïy·`«ÜQ©vjˆÊÃ%¢bÄr³W\c™~¯Ò¦µ Ìx¾Ìc;Ÿ˜yèº4•ª[}»‘úsªü$/,F“D1àhgJÒ¸ÙÔÔTp¬·™1¿Ã%Mk›^çff‰hqv†ÚZµ‚@DQo·/¦ïuõêÉïðFU~*‹W‘K{D10CΠË&Šs¾q…Ö¶ÆRó–ªIÔ눢͜v¶©Y»(aS(4TÛ㪿eÓ²×å¯ü-Н=Ú÷r\v>#MÄØŽoÜziòú­Œ‘ÿØ»©´âb“—|öŠì‹m²|ޱ7ÞžM¦YümÝtiqõ–¿ÒÇÉË/_±ÌëRyÿ±wSiÂøÀZÎߪâ¸vèølLcÏu›¬ÛÜï ÅÈû$—ý ýöÔé¥TüDèƒ+.»TŠyÇOD£¹þ³WÑüéxÑ`ÎjvTÎÅøÛjİB$UGL*SÛ^+ße-Y½ü2õíFþé“Tù© ¼q(ä²1Qœí±*ŒitMùÆâ œ'fgbҘ瑰Ÿˆšt]ÍÇÕŽ>ÉV!aÌÖÓ¡!ƒÉÆùÃUR¹FQ 8­V‹Åbµ:s7àU˜WVÎñyb¬Y·±àõ’K`Ìæ4Ô|˜Zµûß2ãÈéìEÜsFDW]~qš%éì»)¡å¾Ÿ=ðÑß?ýáÜÓß²>Ýþ?õ…Laiv*ñ· ðÄ¡‡ÿþéE‘D‘O§Yòâͦ«hîÃÓ§6žþ°é²‹Y2-äï×ü%ð÷ž½ywv>ö/»¯¥¢:/ŸTTLö7áþ7€µ¿U;Ëß=ðÎÄÀ‚ÿÁ¯¿ð¯¿ÿòÑŸÜ~©bŸäºÛÙ«Aÿ[‘­§b;[¯cÉt¦‡#НÿÀú:‰"Å>ú8Í.Ê»íjU;*u¹n­ÅP1’™—1õ{­°ß«¸ijöf½o[ªþ¡zÆ¡PpPzŠIÀ1 ;0Ü¡ž˜èöÍeªJDD“ùýþptÐÙM†‚d)@¢H±ø‘VÝzV¡ZÅ5æ‘’½õ®Ü¼J5É»²´üÚ5õØq5Ž¿¥Ò\ýDD©4e¯ÎN‘·¦E‘þ»î"Vønú’Û]o¾ýÈÍŒˆ‚þ(’bùˆÑUWüuîoâ©4O¦þðšûéÿ «{žß»1éÅ4Ó^wÓÕôÛßü‡oÿ÷­Ë kžf-Æ/“(úGd §â¿•—¯¦bò¿k¬šª¾¦eÝ í-?Þ·1úíï?.Ù'Év9¼o¿œë“lÜx1ö•Gü3/¿qì•7wôUV¹£RíÔ1ÌN…›¹ŒˆU\c¹~¯Šõ–ª¯o72™bå'ŹAÛ1ì¶1&%$œ'&]¾é{Ç\6Ʋe2[†½a¿Ý”½Jp£NOŒÙ\ÁàÔÔ”ú«W¡@¯ÛXøRk,5¯ÚšÔaí+’¿1õ“TžgO*¤Ò,™zwô_gÌæèû’TFþ®4}±oocÔ|ùÅg ̼ÀR‘cGE‘®¸ì"Æógü8þ["ºò’‹ó–öÃö¿¡×ß=ô‘nó—«÷ÅŽþ+›þÇES邚ä×Jyù**vöïB«˜¿Uñ5L½ûìàË ©t*ídú-Ê}†‹/»šˆŽþËælŸ$Í4×Þxµ(¾1þ«?”ZËjvTRUNýÍ#¦feû½ŠëÕh›³ë-]·úv#«º“óˆ'ûІ¢˜Í—”GŸ6êôDr£o‚ mmÓ‹b`lr±ÊÏe™®ùøb¶>M:m~‚´Œ5–šW¡&g“ÕhæF¸å¯}Eò·4ãê'©<#ÅÀÞ¯š¿±sû_u„šûŸzõ;Ë3‹’c<•~ï9û¶Lºú›CqÊ8±¯íγ=ômCÁŒŒïú]î?;ÝL¢pïxêý4K_¼ys3…ŽÐ—®U®»¤ó¯îi#ÿÞ¯šïüªc&óã*y O—\~åŠÉÿ®!t°jªúšfÜx× ïhûÆÎíwþ0À>×÷ÔÞŽ‹8•ê“|æKÛ¯dŒ±«4—œ]ÈE;žÙmaý´û;·ݾïý4;‡•t•S£Ä0­´™Ë‰Xå½Vºß«¸Þ_3u¨ÿoè7¿¸Ïüuû¾_3ƒr·¶®ÝÈ¥+?åç3ÆA'¹ÚÛ-‹Õ`ͽÒÅ“‚`tÛE1àh›×K8ñF8×´¶53–¹+,KÛ9â²±¹ÑžªYjÒ»3®v«3PꎲÚÖXjÞR51ìêkf,à´†Mnù¸ÜrÖ^. ×µõ<»øó¦Ôϳoÿ¡®]_S_þßbó×ê›–SKÎ#/Üöð1²ïþÕÐßU9òÈÿ8ñxï3óÖ=?ï3Öý(_mŪ ÅÁñ—wßs¾MVAµ=œµo9=¨Ú:*ë/†«|7rßþC·Øo-¿„#þÃ舮5{öì©ñù%Õ^Ú·ÌK9Ïd²é4KUsôá<1ýãg~/Š[[®_‰Ëk¨®ŠX³ÖÙ×tÍ=(Äð|pÄAhD5æoÕ^Ú·ìK ݇¦º‰ˆSºº‘GÍö'¦¶×§õ©®ŠX³ÖÝ×tÍ=(ÄpÃÀÚy—¿¥ªüdÆ><…X×:À×4bËÊߪ:³rå:º¶Ð¾¦CXvþ†+›`ýåèá †ë2ÃÈ8¬?èá †ë3›~ó5ÄÖôpC€u˜¿áy5°þ ‡ƒ¬}"B€ü ¿ äo€ü ù äoÈßù @þ ¿qñ˜Í‹Åb±˜Íý ^±°Ùì‰pÞ(ajÄ:ò·¢Ü&11Ðîð“Ý NMMMO;Éåm¸<§ C+øWŒC¡P(4d4hÔü-:î›E»{PÊmAÛ9r6ωx²ãržHù¬IùïˆGš½"Áýfsn|/Wfb¢¿Ì¸Ÿ4Wvl0—ž%&ú͹W8xÛQÅ€£Ý{’”ÿ[ªnÅëÍCšûûûåÙ RV5ã<öc6“AáÝÄD¿3 Ú\Á Ë&œý‰ê*'aSp¬·™±¹Ñžv9ôé)æsM&²)(fÈëÕSÌ7-®ž·ÛËŽ æТÞn_LßëêÕ“ßá ‚qpÚmcŒ1›{z°El‘ÿ«8榸ި×E›+8íl«X€ªlP_ôÈ‘#¯ÜrË-eS»ÄìLŒ1»É@D&óûgfÕkdÌæ4QQŒÙÜÊ6Åbñ"M¶LO‡†H×Dó‡#ƒ†âìHŽÝá­ ärN¢&A×D›'¸ASeàŠ×k Åø<1Ö¬ÛH¤Ñ5ÅJ×A1žpÞêêê:sæLÝò7i‰ò+-}!ËA–w­A0è›ïöÍÍöXGm®àQÈ%TNk€D±~µ’¶·I§QU‡‚`ÀyëàÁƒjŠm¨v¹9› Mv áè ÑXPv£NŸ?¥×m\õ@ÚΑPgÄcvD¿Ãkš4ÐFžX,ïÚȽ%­¸FA¨˜[ÈÕáù%†]}ÍŒù¹ÇxD<žç‚ mmÓ‹b %І¢¨okÕæ_Ü(¥DóñÅÌÍc+´†A·1)ÌUllr±0Û¤ùø¢â¿*’4Áh²“´½ŠÛ"¯À9Èßmçð´ÛN±Ñ«ôˆÅ°)3®¥íqÙXÀiµ:ÌæéÔ*¦zŠöXÇt}6Æê»y¹BZ­N?éûœ™ÛϤŠÍöä)Úg¦&f³'Jù¿*Ÿ)eh§5lrç¶¥TªK¾®këyvÿðç/LU,zäÈ5wÔI¿‰×í‹ÙÝ¡!#¢Ë϶öìÙ³‘ªgÚ–ý9"bú¾ƒÄêù[= ‚q(B `ˆò7@þ€ü ¿@ðüI¨Ñ¾ý‡„²ûž;@þõÔ{×Bݾð"‚Èß ÎþÛÜ‹€ü ÁÈß¿@CÀøò7X.•7”ãÞhQÄ1Aþ€ü νîí._àé眬e*ß?[AFTóµsÄd-GF)û¾s2ã<âmwD‘ˆkî;0Ü©Êö“Ý==h„† œ¼þŠÖ¶-+„¿üô†Z7-19Ðí‹5À®¹õ¡ûVtù‡÷>Wß g÷¸^þéàÕ`̦&àuixå½yð²ê—»þP÷¦+5ÚÑ9‘ˆXsïám6 Ù‰ˆÙ\¡!#%&ú{F爨¹wl¤S+í‚ö1|®RÏúÌ>ó“•ý¤\øà*·äå7NkKóŠÆ$xrn­}ºU:8¸¢‘¹ÁÖUí,K)Ve¬f÷lxM»ÕûÞ#›×Ò ç³{6Íl«¦V5̰&ò7ž˜èöÅÈîóÄä€72¼v€:öÃÁ8 ­± ü«O_ øºÁ`ˆF£å挎Ή¢GF|FêdQœóG;‡2Á†ýDâºixç$ªQo÷èœhsÉkuŽº&[¥Ä,1Ñï ä^wöëÆ†;Æ}Ô{ ØA“Ý㑎AE½rOç%oˆ¹eZò:TÝc²ŽUŸ¿±4ݶ÷G‹ Pš/_K}–&žJ±¥*ò·ªgXŽº}¯DÇ}s¢hwgr!AÐvŽ e§À-‹Åb1{"Š©”Çl6›=ΕÿŽx¤Ùû'<1Ño6›Íý .Ÿwb¢ßb±ä^—RÊ~sv½fO„ó‚ä- Š¢p´{so•¯gnu‹¥}`l^©þŠë-SÉâ%K<Î3›šÝÒˆÇÜ?±ÀNÊ×UÆþ9U< †Ü[%60196ßëêmfÌ?6™àEÕHLô÷O$¤-剉~³<¼ò]f6{N²“U°±æþþ~y芸ÆÕd}s3#8×ZÆæõÍŒÉwAq*6¼âöSþÓ±ž¢Êy$ì'Æl&‘Ádc,63+5ÝÙ™cͺDuÍÙ׋r?¹ÕžÄQ<@)|ÖEK–OÕ¶d•:cR|—ýæì¶$S¬Ê‰sâ)Ù+K§ÞwCËÖî~ét:™bKÉ{op½ôÒÝ[opH¦¥w·™6ï=‘Î+ÿ¤k¯T@©|ÁÒrÅäåó–yµʹù&÷LAÝdÕsH¦‹k+ßœòRU”ÐC€•ÍßòúOEr§Àƒ.›pöO$ª<p„MÁ±ÞfÆæF{Ú]ä<Ч§˜Ï5™û’ÅÀ 9ƒc½zŠùÆ£™ ­Û#»+œšš …†äý3A0N»mŒÉ/kQSϨ×E›+8íl+ŠRëÍTÒe“NÐÌ(®žšš’¶ÔïðFIÓÚ¦ŹøÑb|^ßÖªU}zïONýéÏ©m¦ÍÛL›sÑÓaéß’‰xSO‡¡µMO›™]$AÐJÕ˜™]$¢ÅÙÊV#êíöÅô½®^=ùÞhÁ. …†ZÄ–‚’º5¥ÂXjkVMAnê鱋b`l2϶¦JA¨ØðŠÛO¤ô§c=F5_LúÐ,ÄcDÔ¤ÓitMD‹'ã®>í±Z{F©o—!êu{ÈXûYsÅð6hK.3ÕÐ’Õ꼊‰âA¾cØmcÌï˜HpñtÇ{B#ÚFÆYJ±j§Ì€UŠ-¥Ø'Éø¡Ç=Wì9ØÓä{|üT2½”bi:|4ýý7>ôw©=Üzà¸ì:~*™>[ÞÄýÙåä—/^Z®X^yÿÔ¾ôn÷¬´ÌŸ¾ùÉwäË,¨Þ›Gº&ÍKÔ–§*mÈ5i^UˆÐC€•ÍßʦvÒ)ðÂSãê—À˜Í=hº_ŒÙÜÚlWlAV¦§C“é¢eÏ}f‰I5«SSOÎñyʜΗÖU&ç,Zo¦’“1y% É–¬imkfÌŽÑBœÚZ5R  Uî||’úÓ'©Üß_i7ÑËo“^ϽU°“có}» 9[.ÞR”štš\ÒNÔ¤3蚈h>žÛÞÌ.+±Q¥ÂXfk·‡W}‰ä ,1;Cm­:*õ ¯ Ôå?ë(ªuzÅ@8J K·à–¡í™šššššîXð:¨°­V©8¼Û’ËLÕ¶d5:c"û ‚qð@Ÿžb£=Öö1Ý嵯ÆÉß8£W¿o¹ñËÛÝï&ÓK©OÅv¶\Ë–®Ýzsì£x¦ÀÎ];5K)¶”úøTìƒç{n´÷<ýÛÌ»²òÄ“ å‹—–+VP>÷Jñ2sSö­‚–_~Cò7¨‹Uxþ¤t \&_ Ò¬ðZ¥/ÅùnßÜÜhuÔæ V:Å®\O­B)©×zeéSbb Û7'Š$ŠÄ² œÞ›'øÆø|¹õ*~¡æþþÚW¶Ñ/^=Zá+!:>:7G=ÖÑ\ ffƒÉÆü~8:hŠÇìòQVQ 8­ÅR»Ua£Ê†±`Ú5ßk©:ÈRÏNÀè¸7îoê™Ö·l4*^‰P7¤j£*ÚŽaw¼ÝpZý6›1¿^·QÅŠ¤ûÞ6NXògRŸsc Û’«Q¡%7´•ˆ‰â‡TÐv:ûfzF窺ÂbMI¦«½ÿ§iÇ#þÝ× 1žän€ú©Ïø› MöìùïBuúüÔu­êP+mçH(ä²1"’_NVBÝê©j½E ç<1éòÅHß;æ²eï—ÆÁ(_Xœi2Uõœ•‚ è_˜˜.m}æÎ·± 44 Žõ6³ì%”Ùýë ûí¹jlÔé‰1›âªe6ªü.(¿À5×k©2Èg»x»úš öá_ãÌ IDATÂkŽk B•¡^oQÍ]™6½K7ODM:­ d?ÔóñE¢Åø|þçŽG<r¢ã>ê ÇzÉ7^§A¡FmÉ5ÜŠSº%7¼ºÇ¤Ô‡Tº®ˆb>WCÜX,•fÕNœxúì¿móüÇ ,96Ý|ùÅùÒÌ`¸åõw#òÙeå³Åd ,¹´}zwqùì Ë”­N^2µ-·!ÕNè¡ÀÊæo¹o,é"~镈Çá<{%ÞÙK›ŠO1JéÔÍ’îó©ãÝ6Æ”’1YߎH}=¥2ë©´Þùøböú®LÿRNyŒEÓÚ¦'x<Þd2PѳRÊŸÍýç—ƒÒ¿ò©p†è¸¯©'÷Øë‚K(¥`É{$¹ˆIwz” °Q¥Â¨nk¬‡Wmó÷kñ-£ŠAP×ðTÑ­ï¨æúÇ}» ò6_ ZˆÏÉ>ÔœG–ådéóYÚ’ËLÕ¶äõ¿Õ?&ÊÒ¨·;Þ3¹3°Ûá—Â¥¯vbD,÷7×Z‡¶Ÿ¸·­ë±¾9Ôq§‚_üööXÛ7vnÿº}ßûiƸÖÚuå/î3w ¶l±\ùâ¥1n¼ë´÷«æ÷6ïQ(OĤ¹Š–)«^ÿéÇÚή½Dm+nHUz¨PJÝ®Ÿ´ÃÓ:o»c4{õÍ"Òvޏâf§Ó b6—âJ†]}z¿o´ÇÚÜÛgc>ÿ²ë“÷ct¤ïsv%cÚgßL·o´Çꓞb¢®žÍ~_Ài%—ÛæwøÕ­7÷u<ãjn“.¼tÛ΀£}^¯'q.àh'÷ô AÓÚ¦÷ùüä¬.ÒÅ?#¿ÛJ«*Èͯs$Ô™ ~Þ[ŠA¨ØðCýäÔ–6ªâï³­µ¨æÿòdÞ/‚(|8OL8È=m"㮾±žë(QsßXq{Ë\IDDŒÙT†´Ú–\ñ÷ÙV'æµ%«¥Zò2Uü}¶†‹Iñ‡ôaóî¸úõL¢ÎawÜê 8 а@ ¿Ï¶ ù[•sï:l$Né\€.íøþáÙÒ ï:|ô®ÌžÒœÓµßùÙäwø¯ÜóûËmŒ3!¿|áÒH*ODtØHœXvùL¾¢\™oS^Ýä ”^/SÛ P´ëº¶žg÷þÂÊt;räHWW×™3gµÚ’ÉÚ~k.óÃzvwh¨ŠßbÛ·ÿÐ-ö[+ìPÿáÝ÷ÜqŽ#SÓÖ­dDsÄdEcuÇí·¯òWêØí„E‘±æ®gž¶\º>o-;ôÊ+h`ç5ÙÖž={6 Rk;ñKLº|s¢Xý%Gü‡×xB›0Ñ÷5è#×Öxøà…¨"æˆICYõ‹ý ݇¦ºÏÙÚÎ1äo«Az¸ÂP-3ž½§*kü¤]ÍYSpfQEÌ ¢2(äoÐ0€ü $ÃÃî¿@CÀõ“Èß 1L¿ù‚€ü Ö:<ë`•‰ò7¨\?Yξý‡Éê_!³‚ί ZÇ-×\ «¿­ûºÙ–·§ü÷Ýug 3>÷‹ü†Ûêj[äoëPËå±¶âäéÿ"¢ >%žWÁoЭnˆ¸>b €ü Ö®ó³·±@þ ØÛÞ `«±@þÐÛÆø¬½Øª|L y²`gZò7@&ƒ­>ßcûÀ½Ýå <ýüD{Àδ €s¨}/Îýf³¹"ÁϾ˜˜èïŸHp®T>â1›ÍfODéÝ*ÖñX,‹Å²üE©ÜÆìêò¶ôœ¯¢ žåÃrÁ±†IemëµgÕlfNÄ“­†'R2ÇXÉ­^Nå«Ý|O„翲â-¿båëÛ¿üô†ò“b­,2æU‰Æòc¸r“å,Yvܨܰ«ßY«}¸Xýº¬öʵŠsÒm¨¸ªÖrNÚC +Í;øT³C`ço‚ mmÓ‹âÜÌìbîÅÅÙjkÕ +uo ç¯ÃϘÍ †BCÆ*WTåa:19Ðí‹é{Ç‚SSSÓÓNryë{È^Î*Á8 IA¨–dŠÕ0©¬­¼&uÿƲZ±°¹&&úÑæ ]61àìŸH(.aE·z5¿ÅýïZë;Ö%¶DôWŸ¾ ü¤¸v©©OMMƒ.;ùík¤SR¦U¬ÐÇd¹‡Ó°ijj*8Ö«§˜Ï5™(Û̪ÚY«pü•_k§Uœ“nC#*8’,çèQí€už¿‘¦µ­™±ØÌ¬t8à<2VMÁ9rù虡‚q¤ì)Ûâ>ço»# Š¢pZ­¹ÅC1¹eNLôçÎ9Égw´{O²“•úß ñ5é4™/žÎ‘L²T¼uŠkÌT&1Ño6—+P^…bÎ*â1›=¹úŸd'Ã’×ÛN³¦ª"ß›Åc#›£&ù‘¾±‚A—±‚~áìLŒ±fÝF¢:y \µ­6P4¿--ÈO*óˆÇ¬t:¹† d>®bÀ1 ü¥[¦ñ´“HölÿD"s<H¤ÌvÅbKÿùçTù©b'uÐmÅ9ßx´Ô¶Ë·«àô¿ôo.ÿ/5P.Ȳý(ÿ$:ڽŇ¯âYJÀ²Ç³â“Å#]¥ŽT‘ˆ§½=l4itMD‹/”v•;«äÁM±¶Š¡®v• l©oy4J}:ÊT¸âQZ± X,s¿RÔ|©•Ú5›¬ÔÞ «%ÃÐqÅZÅjwRj-jvqáK6 [¯¬¹–o9Û·;É?’Yœm!JºÂoÒjv(¬ÿü4­mzçFÇ£DD ûõm­šLÏ[:ßÓÌXU£Qo·/¦ïuõêÉïðF ûjÓncò¦2C1¢˜!gæœÓxT>»{z°ây,A0šì$Š‚³ûe¶®`™œ³Û#»4\Ppþ¬Ô*ÊÄAްI¾Ű”émoݲ¹ÌT¦·]¦¶ ÁqÙˆˆì&©2evkõdý²_H+·Õm©EÜ(T–걟×+N®5v—Ë&ÎvÍR¾ñËÛ‰ô¯ÔbçF{Ú]ä<З;[ö.±%¢?ý9U~ªƒÉÆùÃò¡´í-bKÁvEI“wúqv&F1߸4¯â8€ÊÁÞâVQñS|¸Pl$å!…KsÙrÙlù#UÞa$ˆ¢¾oWù:Wµ³Ê.·½8Ô…Ã5*öW©…W8?RúÓQ*¼U¥³åQ´¹‚ÓÎ6Å:TüR«Ð–ò«§®½•¬ÒJ´ŠÕï6”ü†*õõ­nŸ=§\îû=¯õÊ›kù–sô¨ûɲG’ÄD¿ÃŸÙV<Ð)‡NÝ€õŸ¿ ‚¶£ÇNDþp4wÎû6•º×ªq û‰¨IgÐ5Ñ|›¹v$o®Ëü~—•Ù&upõ;Öþ–ò;’9&,ý%n^Rs*Ñ)ÍXy _Š‘©÷µÆ¡P08ÖÛÌäÇhõ['ÆÁ}ÍŒ‰s£=V«â•iŠ«¨2•zÛù—±½>õNq™×§Þ©xµ[™ÚÊ-NŽDÑîÎ;qXÇÍY‹[­imÓKßĉø¼b¯rYAÐt8{›™ß10¹¸"¿Úl½b»”bå'µ ×mT¹]Ò!+_ hدïuõ63æ›\¤…xÌn2¬ö¦b#Qs YÎnz~Ò÷9;*Þ€TÃÎRs¸¨êêöת•VýmUòàp.š\É*­h«8·Ý†j×RfÉ•?›Ù-5×e|!µ¥~‡Ày‘¿å.’ {Ã~{O§6sïÖ¤Ë#}ïXáÍK•lÔéÏ>œ@ÅÐÄF^U7nyÛ¨ívgûUo í …\6F¥DQ°ŠêãP]o;™f“GÞ’˜<ò–š»•JÔ¶ð‹Äå‹5÷Ž …Zw+©ØéóñE¢Åø|龚[-]*C±øÂâìL“Ii—iívŠù\cóõnü5|`ëÛyRÔ1 D‘štÅýÅíÊ;déÛZ =v¢ØÌìdØo/Þq«q„©ØHÔCŠ+©f·ž PqR¾¶UþƒS1ÔUî¯U‘iu>J×­É-»‰®t«8‡ÝµkQ½‹Ë6ó·4×\—Ùr [HŪj‡Ày‘¿‘Ád'¢@ ;¹TáD£tP“ºàÒõ÷òN°(Æd£ å;µRùp4{mw…ÇXíú«z¦pîæx©˜9¦«<š¥A·±‚oÖR«¨6¥Ò¼xzùcÒ»/¿qL±€ê€äw§Ç}1}Ÿü"âÍYÎÃs7Ĉâs¥wú oµ,$¢Ìœ?<oRX~¤s½úX,Vcã¯xB·Š&]—Ø’Šç TìhʯÔU¹]¹C–1ƒÉ.Šs££âæ\*È¥Ž`Å­¢¦¶­üÁW<†ÈÌÇ ²ÙÊ»µªçÚUµ³T.ÔÌÕï¯òç•ö—z…á­þÛ*Û•–«CõM®ÔÞ¯½J+×*Ö@·¡ÌZjßÅe>›ÒA¾¥ê[òH’9W˜÷VåЭµ‡ßÀ¹Ïߤ+2×ëç:šn»(ícózR|›aWŸžb£=Ö1]ŸüŒ‘¶sÄecs£=*ÙI*pZ­Î³¹F:µå»GÎÌzÍæ‰ÿ]±»ì$W{»Åb±:¬¹÷Àp‡ô=Zqëò:1f³Åb±ZÅW/”ZE q¨ÔÛfŠÓ/_;úË׎–zWe@ŠÏóI“Èk^ÃæÈ? àÑš*wúŠnu~[òD8Ï$p~*uM×ò÷© ívÛkküšºê&]ÇØR­×OJí!ó±Ò÷(ñ°’ÛµQ×ÌcÍ™ · »z›eÿª;Â(ÁZE•ŠIùcˆÜŒ«Ýê ä²Y5»µª“Uí,5‡ µójöWɯ©ß8ê„·†O´ÔË8­a“»Lªjreª§þÄbA•V®UœónCùµT»‹Õ|6¥[£37ª®pù#‰¶sÄmöd¾d£d(ºý CP8ˆ]×ÖóìþáÏ_XùñGŽéêê:sæÌù}ûmµØ[.ÿ‹u°-'Oÿ×ÛSþ;»vÕ0ï‹ÇwßsG#ÿœl5OL tûbvwHzXó:muŒí¾ý‡n±ßZáøã?¼úÛ$vV½ÔñX!ý.ŽŸìjyZ÷*¡UÔ…šlkÏž=©óJ:ͰÕ+Û!ã‰I—oNÏý*¶Gü‡ññl˜oì¬zäZÒ…Lßw`аª„V°j¿_RŒc«W” h;GBˆm5pV¾`gÕã(a …†ÖÒ2—9;Zò7X±Þvšc«±@þÐÛf [ ˆ-ò7héór´$1"ÄùÛyâäéÿZ7ÛÒp£%u ~£­åˆñ7äokÈÛSþõ´9S×ÎÃà7ÖV7V lèØ [WðL-A€µCD¿ò7äo€ü j„çOB-öí?„ )=-ý5Q@þ«ê‰ï} A8Ï9sæÂ /«çMþö)gg%ÔçÔÈ_~zCùIq.Î#³Ùb±X,³¹"ÁˬB*l6{"œ¯tP*®«ªÊ,¿æka êÌ>qý³åÞ½ÞïzyùÙ'”_¯}pn,¥XUÓ'Éãgû ÿ×/N—.óOo'ÓÕ/Yy®ÚXÃT·ÎsÄ“í9¯F—XE÷²°Š/®tf!Ï)ú'õÝ¢5¨>ãoõé _7 ÑhT9@‰‰n_Œìîà Q8OLx#ÃFAÀ!¯.Ÿ(o»ÃOv÷ô QÁ8 ­à ÿp°gçSˆ$Ò¯ ¿b_øîkc]—–i}ôý÷Í$]G·¿ÿhkA"v?=ó~´µžk€s–¿UÙuaiºmï;ãÂø·¿öóp§£¥¨OÈ9KO¥ØR5ÝÅ2s•}kvß–c7W¨ÆŠvžËHLôwÏ´µk£·,Æ¡1Ûí ›Îö9«ŸYÙ]ÁAÃâä@÷x¤c'õûÏ?§Š'ƒÁ{«x–è¸oNíîL|AÛ92”‹uÄ“—óDJ$Ç™Ñ$忳''ú'<1Ño6çÆ÷re&&úÕûY²<‘¼ÂñÉ‚…pž˜è7«•š=:ÑùÌ£­U̱Ü5ÀÊI¦X•çÄS)–¼Dw¥ôGŠ->xß -ÛL›÷žHç•ɾµõ†»_:N¦ØRòÄÞZ¶™6ç^I¦ØÒ ×6Óæ›Ü3¹¹rSÁ[³/%Oüh˃oˆ¯îÞòä‰dZqáUM*;Ïò©¸û7;C}Îyò–ë¦æõE#ž¼Že¶·YЉ­XRŒ’º…¹yå³HN²“ÞvG ¯Ïé9É&ú³}ï„ô'/S“åg]SQ7ûl奤ÀãñÈê/ÿ£L`sÑ(èË×Âýyås}iÇ£jÃW5ûÓŸSúsj›ió6ÓæÜßDôÆtXú·8) û‰1›É |vÁm®`ÐeÎj‡AE1à›‚c½ÍŒÍö´»Èy OO1Ÿk2‘ ·(fÈëÕSÌ7­tj!455%-ÐïðF ⲉâ\n!Qo·/¦ïuõêÉïðFËg†Þn_Œì®`pjj*ʤ¯— X 1Ñïðë{Ç‚SSSGºŸœvÛcÌ&¿©°úȧ`OŒ^ÙóhÏ-Gƪ¿ qöèDçöÖªçZÆ`Õp‘af(ìÝ¿}ë5iþI2~èñàÖÇýc|øÓñSÉt®Ì'Éø¡Ç=Wì9ØÓä{|üT2L·ÜôÄÓá@èîß?>~*™þ$?ôÓÃ7?ùNÀÄýÒ’Ï^6YøVÁì§SƾÐof;þ)ô½kÒ¼xáË¿~Rê!—™ŠæXˆÇštånêôtOÜ5™àœóˆ×A®`PêXrž˜tÍ´˜ŽõÎí g:¢•KúgÈ ºÈ‘ÉÍä³äê08í¶å÷9AÛÚF3³‹D´8;Cm­Z,U“åg²^rØo7)nç‰I—¯É==m"¥Ö[Ø\4äÛ^°–EMÇð¶×d‚ó¨wLw`¸S+•ô“IÕ†«TŸë'ÿôIJþ÷×¾²ˆ^~ã˜üu•8OÌÎij› Dd²1¿f6ÑÑ¡Q½ÆlîA5ŘÍ=Ü¡¡hQ,_ ÒdËôthˆtMD182h¨<̪Ñ5ÅòWÔÓ¡ÉTÒŽ   û‰¨IgÐ5Åæã nÐTÌ6t†3gS¤Ì¶ÌJXœ‰ÙušåF¸ 2ÑÁAÕ^¶>:ÖJD]c®ÖWÃê¯ÔæoUö9£W¿oy}~`ô'Æ¥ãüãS±¦zn|žˆ1{<Å>CœO¦Ø}|*¶sóµl‰¶Þ{+žb Ozèïò¡(2foI±ÏÈËÐ[IÙE’œ+¼U4{v]R-ÿÝ‹–}y^ då¸%&º}s¢È˜ÍD¤Œ»úƺ&³}Ë…x,豎1f[ ÒÊR”ò%5DDöž ÑB‰YÊvœ[ÛÈ5›èh¡6§†(Zª&uÊ,üNk€5÷6dÓÝ‚ÍYˆÇ2½_;…« ¬,IuþFi;‡{³8[µA·t©§Òê2 pæj9™¨×¡tEeSÅëڊ׮™¶ÓNrye!Ê®·N]î:åoi–;ËòÏ/¥å“B|wõ53æw äî¶Œx<ÎAÛڦϤvÑp@õm­C´Rú'Å"êuÄýHi´JqfvF@©I§„\åÇ&Õ¯À0è¶1&%Q— X@z1SŸ¼$MþJáÊDX–¾®ÒÏ6´n¿çàð}°¤¯vbDŒqÆwý€Ü»'Òì‹ßÞÃkûÆÎí_·ï{?Íde´Ö¡í'îmëzì£ou\ĉqí57~´÷«æ®o³›ýîOýši¬]Wþâ>s× j#bòqmÁ[J³îú¹w<õ~š¿+UFýTªó\f*žEÛ92Ýï±ZsO‘r$§ÕÚÞ&»ßÑî=ÉNzÌf«ÕIÙgÝäh/~îÔÇSS²Ì,¹žù ›¤ç—ÈËktM@ ׇ®¸üådy5˜Lp^°:AÐvô4öXÛÃd—vZ­a“Û®”|Ê[ªÂòµœ\˜èžisvhm‡S7Ö~6Í™qµ[{O‡V–ÿ+õ¼~rä—GHõp° ížÖyÛ£=ÖQ""²¹‚C‚ µNWÜìtZDÌæéÔ*¦z¿o´ÇÚÜÛgc>ÿŠ}Á8è¶œGû¼^Oâ\ÀÑNONmÉíŒÑ91wÇÝÙÊöXFIz|ˆ¡Ä’¥GüKÉ'#}îB—P\À(ÚÎwÜìÌ^€ëžìpöÍtûF{¬>fËU8o e#¬ŽÒ/Ô˜À=úþ3On5¶ÒK€ôèþù‰ï}« ¸oÿ¡;n¿ÁÉ9ôÊ+òž0:Ïå;™+œÜÀ cÍ}gŸ ¹âä?ŽWs¶%·gÏžúŒ¿ñÆ'Šä~°û.ÎêÇßÎ/è<¯rpÔþ­Àzõ]fò7 ¬€\ ù:ÏÎÊØ€@}aü ù4Hþ–fò7XCΜ9³oÿ!ÄŠáúIäo°†ì¾çŽ /¼PÅ#(à|4ýækò7XCÊ?ÛÎ[xÀÊäo€ü ù¬AÕ=¿äàÁƒÀZÏߺºº/€Èßð¼x€s÷¿ äoÈßù @þÈßùò7Xm–33ço»# &ŒÙžœÚrÜòˆŸìîéA£ Ï¥ø¬Hþ&Æ¡Ph¨DJÖ !a¨“•º~’óˆÇl6›='ÙIiŒNŽvo„ó¢’‰‰~³Åb1›=ÅïÀÊæo9‚`œ„†a IDATvÛc̦8þõvûbú^W¯žüo»@Q×O9r¤à•[n¹e™«ç<öQ“Πk"ŠÍÇÜ „âu¬c]]]gΜ©[þ&-QþoÅ¥«$Ч5@¢H±ø‘¶hEëØÁƒÕ«úù%õÊÙ²6êôÄb…—VÖ{- ou~ÿm£NODóñÅÂ7AÛÚ¦ÅÀØä"vÀ9ÎßAÛáìÓSl´ÇZüImçˆËÆæF{ðJ€26Ôe)¹‚+õŠ í uæÞmÉ/l M a_”#"Èßùò7@þÈß¿À9·!(¶oÿ!Ëî{î@?¶Awò·åzâ{ßB Qœ9sæÂ /$¢Þ»îD4Èè /VUù@ÃÛ·ÿ4ñß6à©õ ùÀúqò7äoÐ0þ†ü ¿ò7¨gþö)ù›2Î#ÞvG@‰ˆ±æ¾ÃZaù ô“Ý==h„eÎRÃÒÚRŠUןum:LDŒÝê}ï‘ÍUv›9ŸÝ³if[õ3Öq —VßU4jþÆݾÙÝÁA£ pž˜ðF†WtMš/¥Xš;ŽmÍ^9šþþ›Gú»ÔÇRáÀž&ßãã§dïæ—ç©K¦[î?zâé°ÿÉdßzMš’Œz<¸õÀqÿØþ43ûRŠ-¥´õ¿û}œ½{ìðͶþc³KñSê¯øë“––N·ô…~|3ÛñO¡ï•ªdn*¨O®ÐÝ¿—ÕÙ÷ÑÝþ©}W<}{û±­þ©}_~}& ŪV)«ˆ1›{0?·Ó蚊ÊôthÈ`²1Fþp.¯Ë¼.•—½¾RÂIÔ¤3蚈h>¾H†¡P(•–p~æoR wß¿6`”ÈÍ"+|íÖ›cÅóÞ•——þ`K)öI||ð…+FŒÙÙ?x¾çF{ÏÓ¿ÍÌ.ÕY{é•œŠ¿ûŽgËÀÖ›ýÇÞ‹ôÛ+?{Qš—Xlq%óêŸ_öI|üÁí7Ø-»ß”Õ9;{Ár”k¸rù[}ž?)¿ñ¬x@NºSnNI‰ËÖ,Ч5@¢H±ø‘ŸoX_’é:ÜÆ{ü9ÛÞ“Ý×^¼yËü/O~|úåyóƒ³d𧉧Ò,IEq^®@¹w•Ë/ÜS[¾÷ìEŒ'‰sÎÓ´ãÿîë¤Æ“Ù{äþú²«ÓñÓ§¿¼õ^fL}ù§ñxÓç.Ó&ÓLaŠÕÈ῵D‰€{jËOßzByÎö–ŠÊ+×p¥2šÚf£ÉN¢Wº‘óĤË#}ï˜ËÆJ7&½nãʶä:=1fsƒSSSv€u)•fµL §N5_~q𥙯ÚÅÇ÷Nó7]Äx*Í8ñtšÉþÐh›_7rvÞ¢gÿH¥5ÚæùX*rlºùò‹+•ÿ×§»â]ÏÜ| —–œfÃ-yëÊMŸÑ^yôùÝæ/¥Òì‹›¯{þ öÒTÉj(¿Xê­4¿ò’‹+TUú£L UN«”¿‘aW_Áýl%,ÄcDÔ¤Ó¿5_$І¢HM:­Ú„j£NŸWõ[‚ mmÓ‹b`lr1›Xâù%°Þ¤W?¥Òï=gßöÛ»î=ºy¨ã"NiÆÓ×ÞøÙ¹+;ì© #b²?×Z‡úO?Ööuû¾÷Ó¬¸@Þ\kÚ~âÞ¶®Ç>úfvù¥Ê§Òï½w„f~hþÆÎí¹…ñÛ{ØcmòW2Ó%W\Él_º–K¾‰1Æy:¯žÆ»~@îO•ªdn*ÞÀknühïWÍ];Þf7ûÝ;žz?]nKÖPÝTíþ®këyvÿðç/LU,zäÈ‘®®®3gÎä^‘ÿþI÷¼M(ZðñXÆšõúØÜœÈ˜íÉ©-Ç-øIŸ{E*œf´ä»e/È”-*S¬Ì[Dñ˜é×êÞÍÙ·ÿÐßû>üÐ(ýÑ??ñ½o=ú£îÚõµe.ŠÿqâñIÝc}FDuy÷=w(f[ÅöìÙ³¬ûß俽&Sø¢`ššÊ+Åyä8QSÏðpÁ3$eó*.œˆHÐvŽ„:sÿ¶ÈŠ•yKZ¢¼"-%–РRée=p‚óÄô¶<øô2—+dB°nÔpI^>Íö'ž®Çr`åo%î`YRÈ»¿@CÀ¸ò7hü ÷­!;9sfßþCˆ4\?‰üí¼³ûž;.¼ðBü„4œé7_C¿wÊÿðÀ$ý’¬c"B€ü ¿ €5¨ñž_‚Çúç¬þý©k!øçü®ÜuÜqÇ3ò·úÛj±¯›ðö”ÿ¾»î¬aÆç^x±qƒßp[Ý@-°Ñc ë-#¢–ËÿbDÿäéÿ"¢ >%žWÁoЭnˆ¸>b ë-[OÎÏÞ6r Ä¿5`o{ƒ€­Ä¿5Boão€Øò7ô¶±Õˆ- ËÃyÄÛîˆg{ŒÙÜÓƒFa¯ãâ<19Ð=:'cÍ}†;µÂY…?Ù¥ ðˆÇê ” ËÄ•«mAMêå…óÄÄ@·oNË´„ÝêåT¾æf_qí%ÃUï}T¯ØÀúÌßê’³UÕ‹•zí¾˜>›¥$&¼‘áz¦(ËY… ‡B¡¡Üv9ü¬ôv%Sl%k{¶&uÏÜ¢H¢HùÕ—’·˜¾ïÀp‡¶t¬Vt« ]¹¬U±Ù'º}¾n¯nå×XQ]b kЊŸ§xÌ‹Åb±˜=‘\×ßc6›Íž‰‰~‹Åb6÷O$x.Å€£Ý{’”ÊD8/±à…xŒˆšt)_ÒvŽ AZ¸%Ëá¥Ö˜K6ú³å‹V§¼ )m˜è7ËgÉ­"ñ˜Íž\ýO²“¹írZ­Š[”L³¦ª"­· 8²ÊçmŽ|–ò j0貱šDÇ}1Ò÷9Ë%o+ºÕRò&kK ýæÜNçÔâŠSÁjƒG£kªÔò‹s`iw´ŒÍ×7«Olà<Ëßý΀hsƒ.›pöO$ήX Ì38Ö«§˜o<*ÆÁi·1•ƒx‚`4ÙIŽö\2–Ë+¦¦¦‚c½ÍŒùÞ\ÿ»`RÚÛí‹‘Ý NMM…BCòõ–ZE½Ý¾˜¾×Õ«'¿Ã•o”#l’/G¾]®`°`Ží­[6—™Êô¶ËÔV!8.‘Ý$U¦ÔæÔ€óD|žˆšâãí©òªmuA[j7¶¶éEq.¾@D´Ÿ×·µç–Ë B4E}ß.)¤eZ¾lŽ€(Ú\Áig[}?wu‰-¬óüMb’`$fgbŒÙL"ƒÉÆXlf67îÁ˜­§C“µð‡ F9¤LC1ÛÉ1…\6&Šs£=JãZEã!¥Ö(ŠÇÀdBi˜EqœGÂ~"jÒtMD4—o”{ÐPuo;ÅsÓ‘£ÇK;rô¸¼dÕ9›bE¼®ªÅ›³H†ŠÁ/m!#Q üÿíÝ_h#Y¾ØñS'½p‡ä¥ÉK,ƒ6`QO¹Ã•š5+–5²t]‚Åd0‹ÉÆ;È0K”ÊkV«&±¯F¹ir1ÎnÓ;ÈÜìj*^ÉZï- -=ìS„ü0ËäÉ/YfïÝîª<”,—þK¶lKö÷ƒÚrý9çWuNŸ_ª’ðA)ë™DÿØÞe­–W\†‘/W…g ±²¼Ð“kÁ:íWã"Q(ì…V;äÌ·'º†ár.ö9Woš¿M)¶xÈù›5Åd›È²îm³©YS SãÙ) û›.ÞƒY·Dšý}*})Š'vu†¬g#€u³å8»¸µkº”7¯T×ml?/þ¶w™Ÿ;ÎÝnƒJkw~¸¯KJvLrN±:Ö™ÐN]mðNk½°¼¢Z™v³qÚºÙr@&6q¬Óþ zª]Bãœùw~N×c €›¿õXtª¨ÎÅiïCQk»Évž`šÍÃD¦&ÔÍý>fõYÝÞ+•ACa¿ÙrÈ.¬zõ$«Smÿéqxôkû‡G¿ÿi¥žÒv0›¹D¦æÚÜßñ(öÃ4½êôô¨µ¢8–WTQkœ¿>Yòö«àMƒ°° ^ݯ{gþÅ"³ÍRêåêåÓAýž;êúŸ6ÎÅÈ·G˜f%Õ~ Eµ¬Ky9D¾Î´†;– F× {Ð.ÚõÚ?<ŸJ Þ¾3{~ú寬¿þôË_õ]`ì€t¨¾ÊÔÔ¨¶¶Ð{˜ÚÕ™øÕCzû)»»­õÕ¹Ôʯ–WT‘/¿j,yÝCŠ}ý œ7N/ó´qÎüö“{åjëA¸)6½©Ä3èv¿¿ÛÞK4|šÐ…0‚ ëé !Cÿ5-z²‘ÉFýî/ž)ÃóOLkl¯®¶¾d̵yù¶zO,Ò5=¾zªªBÖõøªøQñÛƒ’Àö÷w=¯L¼‹Ëze#þìåëão4Úî?õñ“ŸýrÈ_Ç ˆ=û°žò’2 d…íûºª3(\ýC'¥ºл·vyÐK;ž»¯µWçRÆ:@ Ë+j&“ÉØÐsu’ ´.H] è]§Ð8g¾ûã¨+ŸÑµ€H$ƒùx~šùÛb €¤|°ùüÅîûOߎ\ôèèh}}ýâââ~KüÙ‹/¾ã=ûæ{ úo¾úú7Åü÷Ö?¾Æº?~ùêÓO>šÇàßK­[ßJJÊ'Æ8wgÆÏ¶ž?þ„HÝ»wr>ä.km=Y—2äu[Ì/ò·û÷Ö0©õ­RGx¯&¶ ÃMGÛòÕ¼0ƒØ€ümGÛ†A­Al@þ6Þ=ÊÙ’wÌ[<’üíÍW_?˜c0w³%S þ¼ÏÍòÈüùÛ ùM1ÿŽAQÿÙ# þ|Õz¾ÎÀ¹Ž-TþÆWT|‚€ÇI ¿ù€ü @þÚdßðòåKB³ž¿­¯¯/˜ƒüíââ‚xÀ}áù7 ¿ù€ü @þäoò7ù¿æ33ÍJÊçóûý~¿ßçÛÊ5Í©lÐçKULónV€÷d É[3·½‘©‰P²ó(Ši6·Ó•ݘGQî¾>ŠâÙ)•v8°ÈßzU_eêR†­„MQá½!„iVÒ«ñ¼%“"?*~ûwþÿ¨ËÖŒ_0QØñ(íe¢ÑÓl¶n®èÁnØq•ø5·µ~ŸÛSǺ”BÃ&cnQmíôòßí=Z \f˜ÙºlÂy`öÝôþIÓ¬”óÂ0‚^÷€H=^ö–J;Ïä³R©X,ö7]†‘§Û·8J©Ÿ­JYϼªÚ×=ZaS5ûçí]§725J Åb±TÚéÊĬ¹¸b±XH…"䵨¦725u3±©Š|<]å$0&˜;::êúäÃ?¹–a“±ÎÜnÁ¹$D­s™ÈÚ‚Þ ‘ÏçË•˜ÛÝñ¹sIˆZ¾\‰¹{çʤÔãÛ΃Ý5Ç€i4Ó¬¤ãyC„¬bX §KN·sIˆÚi£iºŠÒ[;¸3ëëëSË߬-ÚíÝúÕ=“Ç±Þ ¹«Û¥ÆM«§(žØAôt#S¯g#¬uCfïbç‡ûºíöÎvÖ§t!¥¨5΄pôT îÌË—/ÇYlâçߺr6EñxCB×õr5æñ [Ñ4›‡‰LM¨ÑýHc#ž´œê\?…s„÷JáJʧé2O{{’F³™Kdj®è-µ[tªÂ¨u?ù62Ó€û5…ïpízžm€³FM±ä\èýÓiã\ˆjY—R,9¾PÄK £oâW}•©©QmmÁ–p:–WT)õýÃs?€92…÷O*Žðî±3½×ºbн‘Šâ‰%Cº¦ÇWOUUȺ_?*~ÛúëIbµõBȘ{ÌýZ÷jZ¯—4„ÕÖŠbO!­GݤÌFYa{ÿ¤#¼—hø´lÄŸ¼‚À¼P>X‰|þb÷ý§oG.ztt4Îu±?/Gàq'Ûzþü¹$R0žÜïî­¯hÛá8À(Ì¿ù€ü Èßäoò7 Ü¿'„³æÍW_̬gß|<àäoÀÄþòÏ3è¿oÒ‚€ß‚`–qÿ$̇)Ì¿}öâ‹qûô“7Ügþ&„ø÷ÿvcøÿõ¿k¸‰éÜ?ùÿìÉðŸ®åM³’òùü6>_ªbšwYs« w¿ßîý¶‹Ûòù|[¹¦yµ¯T¥µëfnk+wf¼é[€!»ßPwÙ–Gžíã4š ¸ÝüíŸüÙ7úþ|×»lý£ïZ†L Åb±PH„D>¾ºm¥ wCQ<;¥R©´ãQ”9:`·]lç’²Þ8BqÞ8BäË­AäY£¶ä\”ÏF€Ñ'pM˜–¦“¿ý¿?¾íýq»Ýí?ÐÄ’!)ë™WUÓlvLUR¾­\Ó4Û—\nËï÷w͵çñR•ÎKà•”õùV®ÙÚp×ä’m$TIùM¶÷âÛÚÚº\˾Ÿ/õÆx3¤$]Ånkn÷ý¼µßfnË×Q*{±»ên›hæ¶|×›Õt{CBˆ|¹*„8}R—RJ½\Bˆj9òºûÎ6øýþÕíýÓËX¥W㺔RêñÕ´½öÊ2ÅcÐÛµ {ß2¨ÉØ[Ö›3á€üm´?üñíþøö»Þo}×û­ö¿…_—­_ÇÉ‚†!òåªXX^QÛS@çSueÙqy¡ZJýDh…ýMUÔ2¯ªâòbv±X,ìoº #¿J¤Ôãe¯õy=YMí ªŠZ&qØìñ4s[ñ¼º¹_(‹½—Æ«é¸.e0Q8ÖVº#(õxÙ[*í<“φ”äDh…DÐÊQíëvU§+iLodj"dÍRö–êªî‰ B„¼ÖÕôF¦¦n&6U‘§«“ËE§Ë0Äi£išgZ0´Ò9Ól6NUçb÷⽑QOì84 Ã&cžÁÇxðF6Æá}‹½É jY€ümòüíïßþáïß¶ÿýW«^!ÄO¿ü•õyûOcZX^q†5tÖ+Ë í?F0²¶ œKÂv__k5çRçv #˜Œ¹­Ï #˜Ü][°–©µn´eJÍ×'5!–œ }ÊcšÍÆ©0 —sqð^:*Ðg™ÈÚB;Gm{XuìùávŸ„³#Í‹çÛÅ0ÍJ9/„XrºKBX™ØdÑW­UËù7v™WŸ¿>é8£##úá²²UážÇûWþ=©Ôµ@Àï÷š.e»moŒ#û–!ýÜÞf"û‡·Æ?¼5¬ÿë¿ú®âþ¯_ZÚÿ4š5Ác¥§¦ÙlœöÏ©:Æ@ÍÜ–Ïg6Mî¬Qù×»)IÇø,vu†¬g#€uCf¯óÃ}]ÊP²ãz¼”ºf£'YµS‡sIH©—Óå|Èë‹NUqÚxݨ-9Ý#Åq#iÿŒÞDµ¬K)–œEQÇòŠ*j³ó×'KÞáW—M³y˜ÈÔ„º¹ß=lš„•¥Üȸ%ésâàlÊÞ+•ACa¿!Óž1&25׿þŽG±×¥=š¼Æåyë8]×C^·u,¤¬g³zÈë¦Á“v,7iŒ·“¿½3þô®•±üÍO Ö¯öŸQ™OÇ€¢5—/¿j,Φp»•1ŠÓÆyß¿z¼!a½ÆÃzXeò’œ6Î;rÔɪX2h}¿ê«LMjk ]u‘Rß?<¿ö˜Óe†´boÝÎÚºÅkÜÈ\ÎÚ;è¼}ÛÈÆ8vß"z[-ò·ë³n’ÜûÉÑÞOŽì·M¿ÒþÄH^ØŸÈ·¸¼™¾]¾»R¯îŸª¢÷‡cr„÷’¡Z6èûÚF+ƒÒµ@Ù›4·6¼$'‰Õ€¦÷yXNŒÈpZñjT[ëJü¬§k¬»+íÅv„÷A£ž\ó‹õ¬ûWÛé¢õë€ ÙýqÔÕEq¬iQUÔ²‘ãKÊ+‘Ï_ì¾ÿtô+FŽŽŽÖ××/..º>ÿìņþÕˆuó÷é'_,³™ÛÞÈÔBÉÒŽg¦â5iÁ¬W~çEˆ÷ÅïÍW_ÿåŸ;ˆfÐ/~ß|öÍ÷f¡o¡Ì lËîùóçO¦³³üßMsc6™º”³óÀUû›—„†=ˆñ$úpצ¿M4±6Eq„÷JáY “õªî;\Àc@&" Ì…'„3è¿o€Èß0ëxº €¾¸ÈßäoðØLöüÛË—/ Ìzþ¶¾¾N¼`ò·‹‹ â÷…ç߀ü @þäoò7ù¿Èßäo@þ˜«üÍ4›¹-ŸßïOUÌ«+)ßV®išƒ–÷ùR•~µ-VIùF/7G?Kþ¦(޵ÝdÐ0òñ´5F1›¹í}çÁîšCQú¬P}•­K)õruøf=;¥R©´ã默Eq¬iQWW?Iú1ðÀò7kŒK†¤ÔãéªiVÒÈ€Ai6÷O7›.ÃÈï6M³÷²w3·åÛÊoì×­­‹Ý~¿ßï÷s1ÀôS8GX‹ªRêû‡ç¦Ùùðí¸cÉ`>ž!¯»ÿºÖEë¨SeyEÍÖë'¯ÏÃa‡¢xbÑÓL6ȸ6vû¯/¥ßî¸-³·0Ðk}}ýââbd?¦(޵H(«é_~L»éÇÀ½[nš¿Y[´ÿzµõjY—R =žö–v<}Ö¬¾ÊÖë"È^~P;yÝ\[s(ŠâkÑ“H¶®®,÷ÞxÙÕëÙH L¬ëâ]%€^/_¾œ s{ƒF>?dsôcànÇ-7Íß:Æ:—L³’Ž‹ÄqA¤W5]Ky ]·µžÙ/„Jë×íLíäõùZØ!L³ùú¤&„¬e¹å]k™Ž¡#¼W WR>M—ùxÚ{ó(ÊÈÄÆïÇF¢³à¦Ï¿™fóp{ßyó(Š;Öñ.Ê+ÕW™¥H{@£(ŽåUÊúÉës!D5½Ñˆö7UQËl¤=Öom\¨ÎE€»G?æ=³®@7"­‹ÍWï¢Ü>loR뉑;YX^qÆÿùåÿþ[¾²÷xÇ£(ŽðnϺâò;”ü~  å…Õ¼Ñn ý˜Ê+‘Ï_ì¾ÿôíÈEŽŽÆy¢fDo¯E?æeÜÒëùóç’HÀ\ ò7ùyƒûrºIDAT¿Èßäoð°=!¸žÏ^|A0›>ýä#‚@oÐÛ :üðß'˜5OŸ>åºémz÷OxP˜«@o€ü @þ¸½üÍ4+)ŸÏçÛÊ5Í«+)¿ßïó¥*¦y³Í^ ·º}«‚7¬ã-•väÂÓÝð˜f3·å»lÔ½Ù,·‘Ùožt Üž½¿DÊzæU5¼ã±~­–ó³6¡gš•ôj¾kšf%µÑˆ”öÂŽÁW»«éLMÝLlª"OW¯ -õ¡ö7UQ˼ª^.×¥ & ÇÚJ» ±ãdÐ0 #hŸ4뻺]3·¥é2˜(A©k[¹¦}S‰B¡Tºç)Šc¢z]/2¦YIodj"”(ŠÅ¢½ãì¢=jÕ=´æN‡Çxؼ!!¥_ÝîÊUš¹­x^ÝÜoµµgòÙ 5²³êèm¥/{­Ô³‘ՄТª¨e‡MÓ¼IŸ9|Ë#þo]Eq,¯¨RÖO^·;üe‡¢ émF¢çàŽó7!ÜÞ aÔN^7Íæë±²ìì³Ì‚ÓžÔÅ¢ª¨e#Õ}çAÌ=dÛ¦Y)ç…KN·sIqÚh& #Y[hm9_®˜¦i6§Â0\ÎÅŽ=öÕ»zç~›¯Oj†ôºí6"™¨^7‰Œ”z|{ô€¬ï.:êîö ã2tãÜN‡§‹Àœòì”ACÊz6°O ½>©µçå†7¨‘UWëKÆÜÖF #˜Ü][°6XkœÝ¬gwË7[·ý±¢îêxGí\¸ém¸åüM¸½!!ëÙWéW™¥ÈZçÿæÖí6€¦Ë«½(ްU…êʲcŒÿ¤¥Ô5k #"gö[¡nÆÚ”Íc ÞzuÝVÔqËå䑱†q.Ãõl$è{×ÈàO#ÎÀCKá …ýM—a»8ÒӌנnÞˆ¦ÒgÞ¢Ëë>UqÖ¨…¼îkö6ô<Ücþ&ÜG]†¡ëúÕæÖÿèfó0‘© us?¼|(N\]ÛµLbÔÛÞª°îWyÇàT-:ÕÎTçâÈWO½Ú·YÚå¿vdGx¯TJ !Äð›”í¢[«^÷g`&´o¾L!º{€1ÔÑ4úÌÛ”Ǻ㴜.çCÞáÚ˜=-=w¿‰…åU´î6ìÐB¬šÞhDŽ[Ïžm KB.·h=_7îÀ¢Úz®3;mœ[¡ö~ËU!ªe]Êq.{_¯FÆK cTJ9d6ò´qÞª—Xr:exœy£°Tû=CV‹P‹—=@g§1bz¢Îê–z†‘Ý£U£ÎîqbVÚyÁndpúï½7hô6ÜEþ¦X³B=—NÅK†¤Ôã«û§ªRÿ¾ÿœÚò•½Ç;Eq„w­¿}šËÞKz62ÎW®Y‰®ÊÞdû2°¢8Ö´ÖÓ#ã ¬ýêZ  éF0±v YØz…Úøõº^dÚwcZ^¨QmÍ1ôý%]»°¿~ó$±ÐôÖC/“Çx0bšH¬®úýþ€¦®ÍƒÝV³r„÷’¡Z6°ZDU¸‡4¨i5¢©ô™»Ç[Ýà¾3:á,Y‡…å—a´ž4£·¾wz®“}°ùüÅîûOߎ\ôèèh}}ýââbÆ«d6sÛ™Z(Yºüb:܆Ï^|ñÃ|Ÿ8`Öü§ÿò7?üÁ÷­žª·×š—~ ô6˜¯ÞnnœQÊóçÏŸ<˜ ·¿¢Ma¨Ñq_ sâáäoÖûBv8¤È߀.Ÿ½ø‚8 ·€ü 3íÓO>zúô)¥ ·€ü s€‡¶ÐÛp—$!€¹0ÙüÛË—/ €¹F?Eþ¶¾¾N¼Ì5ú1ðXò7?0ïèÇÀ\ãù7 ¿ù€ü @þäoò7ù¿æ-3ÍJÊçóùRÓ¼ã¢ßã®`þò7ÀÝxrKÛ5ÍæáöF¶. #˜<ŽyEaš•ôj\—Òp¹ÔZ­&BÖŸz¶–Ì‹P4zšÍÖ Ã=Ø ;z6ÂðhÜÖü[5½‘©©›‰MUäãéêå‡q]Ê`¢p¬­Œ\X!¥~"´Âþ¦*j™W#6ÛóoGGG]Ÿ|øá‡}—4ÍJ9/„XrºKBÔNMÓ½ ΧÂ0\ÎE!œKBÔ†-,„†Œ¬-á\¢–/Wbn÷€ô-Ì‹õõõ‹‹‹©åoÖí¿ߺ”ºÐ…”¢Ö8bAœ5jBˆ%çÂ8 2p#]e€yñòåËq›øù·‘¡BˆE§*ŒÚÕ“oBˆÁ/‰œhá æÕ­<ÿ¦(ŽåUJ}ÿðÜö¡ÇRêåjë¶! ÞrÿùÛx[‘ºøý~¿ßo}!›#¼—õl¤ý‰ÂK C×eo2híÕû.<ˆû㨫ßFàaS>X‰|þb÷ý§oG.ztt4Îuã0›¹íL-”,íx8¹q²­çÏŸ?¹Ë2µ¿ºMa¨Ñƒ˜›ãcºÓüMQ<;¥ÒQ€Éñþ ¿ù€ü p]OÁ Ÿ½øâ×îÓO>"°ð(ÌBðïñÜ{ðgà½Ç¿Ý§ïøC³\¼ßóÿîß|ï+þ·¿ý1}´Ga*ÁŸßsoöÏÀy- »OϾùÞlìÍW_ !¾ñ$å(ÜqðçýÜ›å3ðaÄ¿¡?ÆyjMlùædœ÷D!jMlùæaœÇuz޵&¶€ü ŒóÀQ ÖÄ<ÀüÍ4+éÕ¸.¯ÆÁD!殦WãyJÇ<ÊßÔU;ÃpEvÃŽ™¨Ñ7žÈ[:‚†¼ígšÍÃíl]Þ^T¯½ + í³×¬¤š>(,Ó; }JÛU’Û8·{7^Iù4] !Œ`¢´ã¹åso:ÇèÚÕÉãbû¤ì½ý.kxá§[ððLs”`ÁD¡PØßtF>ž®˜æÌæc)ŸÏçKMTÂvíTQËl «]×ö¯·»1ýé­qŸáu,‹Åb±TÚ™t;QM­Q{¦¦nîŠÅâñ±&S>gn² Eñì”JVL³’Žç­àô ËTŽÂ ÒÚK2õVhö¤ÝÒÌmiº & …DPêÚV®y{çÞ Zßj«é2ƒÕtÛ5 jÁ¹4`°è¿”ª\–*©ÖçÖXÍ4›¹-_û׎¬ ’²–ÜÊ5ÍfnËçóù¶rM³=´b.·å÷û­…ÛMRêñÕôãÍdÃÄžÚ]•?U¶‰¬ööí¿¶÷ÒµÖøÕìç½3®ñ3ÑñRÔ›ö¬QB,9¬|ÉÞk%K½§Jß=¶ ÓÌmù:N¡‘»~¶T*)Ÿ/Õ.¿ýj@ßMé( Èeë莭ðÕ'ù±ÒÂB!4Œ®„êõIÍ0\ÎE!.è¼nöÛÎíÕÚ-ªçÒYn몘•”uÆõ¦‚“¡Õ J=¾}Ø·ŽÃÛ©ý<Òl‡ô~ó·Ûo×€üíRµ¬K)B^ût5X,‹]³sÍÜV<ߺônÍ0TÓ™šº™ØTE>ž®vŒ±Ê^kõz6²šÚATµL¢5ð²â‰ÐZóf¯ªŠâ‰'ƒ†qÍû«e]J5ú±µbïLE×öŸÉg½»2¿1²šCÆyßùö·†ü\oœ7¼¨7 ¬¢x¼!!¥_ݶg§ƒN•Þ=¶²åLM„¬iîIªA»~¶ÄË^ûvìõ8ÿ6£0¤´}‚“ !Ú­lPu®Å–PYW+j³Q9ÆtkÝÓˆ—WT)ëV9Χêʲ£ç(\7¡D"(ëÙžUF¶ÓöÉ0¼Ù9¥ÇÉßn£]ò·Ö˜F šn¸6bîþ Ùæ¯¬+ýíKïÖp¼œB,9ÝÎ%!Äi£´F0s[«F0¹»¶`\_1²¶ÐÚo¾Ü5rÿæ4«v«q‘(öÂq5Sôº…p{ƒƒg*솯5¼š}ÆyoÍöÏÑ/7h§G¿ü}Éáu´Ï…/ê ëÙ)%‚†”õl¤ß¼VÏTç =™?黋ѧل¦uFäêjÝÏiµ·:çÂ}·\Þc­–W\†‘/W…g ±²¼Ð“ëÁÛßtI]³ÏŒÕNmgæXͶ߽ âöÛ5 ë¯ýôTi/Ü{uܺ§¨óyëJß,BÓ¥”´ M?®³âøµ;ˆžjÀå8¯§ücí÷zk çuÞ@õóâo{—ùyñ·cÞguu[£ÞiuP g=1iÏÁú*ý)Š'vu†¬g#WÇeô.¦{¶Lñ( *­Ýùá¾.e(Ù1Éy«'ÿý×zayEµ2ífãôêŠÏ´z€…5mÓeäãÛ‡ç·ÒNÇ?¥o£]ò·É‡/fó0‘© usßþ¼Í¢SíZpÑ©öfã¸öŠ“YX‹¯î€ê)¿ê\¯¨“¯5Ö8ïOïŒÃ£_Û8<úõ ž“™fQç`޵ÝdÐ0.§Rûž*ƒWw„÷J¥DЃ_Dѵ‹©Ÿ-Ó= =¥íΙšks¿ýÊÄiWÇ:è§s!Χƒú]ÖZQË+ª¨5ÎÎ_Ÿ,yûUðFA°öµLbÿtÚ'ÿ¤§ôí·k@þ6ZÇ[ :ÆdÖHÑö‰”ú¾í2ø˜Ã¯IV¼¡Nüš;Ûˆ¶½Órõò¹¸Öc9¶p×€xØZ×ñöÙûóÓ/eýõ§_þªï“Fuì¢NXÓ¬¤Úo¡°ž™lûœ*#¹cÉ at°íâÚ§Ù­…ÁéP}•©©QmmaÈÉ“—7^n­Þ8â¬Q|Ðo¹Ö]Ț˗_5–¼îqz€Iƒ`Í媵ZML½N|Jßj»s펾¿[Q<±dH×ôøê©ª Y×ã«"yó„÷’ Ÿ dÛ߬ÞK4|Z6â϶>ói$ÇØ+*ŠcM‹žld²‘À_¿û‹gã ɤԵ€.„0„ÕÖ¬‘\k§Z@Â&¬çâìÛÏÁäq¬ëWO¿µ®›9ô¿èþ“ŸýrÈ_Ç瘤¨VQ<1­±½ºZ—Ra¸6v­¨ö9U~Tüö $°ýµuöã2jœ-wv•Öž}XOyI™²Âöet]Õ®þ¡“R ] èÝ[uÐoµÖBt7"÷ÂòŠšÉäE26V0Nº ãï&«ñëœü“ö~ËwÛíÌ/僕Èç/vßúvä¢GGGëëë$4Ÿ½øâ;þгo¾7›Å{óÕ׿)æ¿·þñ5ÖýñËWŸ~ò}„Ga*Á¿—Z›ÍÜöF¦Jú>ñ‡qÎo»74N¶õüùó'Dj®½ãJ+޵&¶€ü óà×é9 ÔšØò7XÞ|õõ,o~¯ÓÏx`öQ˜Jðç}Žh–Ï@æßùÛuü¦˜ŸñõŸXŽÂ½NϽ¹8ç:¶€üí~ðMJ–à€™" Ì…Éæß^¾|IÈ`Öó·õõuâs¿]\\/¸/<ÿäo€éQþÙ?ÿ¡ü§ïñu±0»ÊåòÿHvC±y¬PIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/08_param_button_detail.png0000644000175000017500000002322612032647170027324 0ustar ebourgebourg‰PNG  IHDR8¥þÏÕsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ8›v˜{ IDATxÚíÝTg¾?ðÏ<_÷œ~ϽÜîV- \WvEÔÞÝJPYÓv‘×b´j]j-î¢ÖE¨°j¡aïÙúÝCŠ­.´¢µU·¥¶k­«Æ”å‡tÛ(U{{ºJq‹µQBW·Ë9÷{{¾nIžùþ1Iȯ™L @BÞ¯“?’É33ϯyæ“g&‰°xñb­VKDDôùçŸÏ›7ïöíÛãÊl6OÒjµeeeÒëÆÆÆ¼¼¼T À¸›ì Ûk?‰æúz¡èGî/w< ¥Þ¶~€pÔ¶×~rð?~µ•µþ·xEiÑÁDI0 Ùš¥¿úQkÑ¥À8bˆÒ¥@jˆÒ¥ÀØ |éS9JÅóo­zº |©Ïœyü^! £4Qì¨É(7¹UE¶¡©4%4UáµqÎ ïÉÔ¯k$]UKIŠ  ÓD 6’(Í…óe…GÏÔ¾´9žó³•»/‰âCÏ¿ùÈ¿|d×hï:à\çÙ†¦¦¦ºM‰œËk:‚É(vT§§§§WË­åÚxuï[ÜÆ âL 實N#ºF$ŠÞt›f“æØ¤¹·³´¼¨‚j+ió;÷ý×£Jiö=wšˆâóß|:¹ýù¢=×hÎ#µûÒïˆHûÎèkèeœ/+:¶u]fõ®]EEǶί4sï Û:ç¯õÏí±0&ÅšR²ÐTEL|Q·óUGuºÞĈˆgZKSa™µ¾xí¾ÇÞ³Ÿk^|6ócŒLå¤4ûå¹qÙí;'áxbb’c‰µ¾ø‰}ÝIÒlœØQQxON,¦Ù åÆþë£vÆ(ã¾yláãïþiï;m¾slŒ®=ßËïn ˜FZn©{¼ðEúymñ ºüî‹õ7E‘ˆ.¿òØ»™“óÌætªö• ‚°pͱçS9w¶¼Ò Ø™9tá­¢=×hyáÑ3{ßi{ùÝmsC¯tšMŒ‘N›"Öú"½‰ešš Ṳ̀/ª·:¢¨µûºIghjjnnnm-]À”´TesÎyv€k”fcI…«¥4~·OD5å&Ʋ M-ú4i‰ Ħ¦%1Öcé#"ê·ô&¥¥"J˜àc§÷­^RôÜiž°yÇ“ †Þ˜:=Î3%çËŠÜ(¤™:=NznÈ,¥ù˵[D¢xþ?[ˆ(áîO#¢/¯ßô¹¨Æ+Œ®Õ×ß Ý5DÆLú¬¬,½‰'n:\¢Ek{[7çÙZ ‘F›Íyw[»u($5•7XUï]ÚxF9ššjsc‰Hnû¢hµôç‰ñqŽ8ILjZ"çFs'õY(-5Ç@Ø Í¥Oßë†âWï:®*2FÜÿZjÒ(††§‰1)z›|AX¸¦¶¸¯h¥wïŽÕ{Cõ¯ù0Qì³t{¦è¶ôÅ )%‡ {×îëéÙŸŸµ_åפÇ5çge9Wñ¿ýÇò„x¯H,&5-i_w¯Å*ÆYz}Þ€pÂFc£¢ØwæÅ=×hNÎKU©œ;Œi1?t|}Aþ’¥š4$ÜýHÙ»*\‰hÔ¾Ÿä¹ )^šAbsk[[ Ùœˆ‚úÚALN~öÐ7d·ï—tõ“º-}ýím Z|  ê5¢ý!¢„»§Ž0ßP#îíÆNMV¯ÈŒ¨÷«¿*¤ñoΓϧrN?œ1y*Ây[˜ÉÜé¼·Ìó¶0MIU6çÎèJŠºz-ýŠí·ô:2¹í BŠVGÒréfµ¡8/5-‰Œæ£–­@Ôj‚°pMÅrÆN×®z½ï‡ÄØéÚU»/‰A§‘3eÙË…K¸¥îñͦI?É!qK¶Ï Ë O-‘–ø¦ñÚˆô‹›M+Z]~–æ<²%wÊèL/ÅæÖ²¹IŸ•¥7ñlƒóÞ²ŽêôôÌÌ̬,½‘’ õ9±‚ ±9úÂ$êÞŸŸå÷G:7Àåïïv®"·}"Ò¬.LäܤÏ2k«²Ýç,¥HÍHˆÓœPVVVVV&½hllÌËËp½ÿ$pwà­‹/ý(ÒK!ý,H·®ÊõCÊðO ãbçÎ µUDÑÚ`Ø×Øóiaoª ªBlnmk.* `F LÉΨm¯ýDz²þ·lX“Œšòª–h2+*K 0κ.|¥téóàüTz‚/xUÀh{ÖþR †ø ã¥oà[Ü£¦|ësÖ6ÔÀØûÞÿæ˜QSÔ¨5j€@  P€ñ$ŠÖú¢ôÌÌÌÌÌÌôô¢z«8²­uT§§§§Wwˆ¢ïòL7Õâ„©=W½9Š_Ýáx×Z_TTßÇ/ø­…êF «\qâ55˜ÈŠ×îëNÚT×ÔÜÜÜÒ¢'CM°€zœgšššê6%rn,Å…<Ê‘#±ñ ÄX¥ˆˆú-½Dd4;¶ßgéNˆc J[[[[KSa,#3¥&h2dO”&@ ™¥›ˆâcaGnmiŠ ÛL›ëœê:ÅÖ×yM¿¹fk2Šëzî2&>Ás-÷ ž¡yGuzzõ~A9´¼¨Þê˜ÛòÈ•GD±£&£ÜÄc¦òŒg¡d‹)e CtÌš9'½# VGDFs'õ··õ0ƘÉÜIDÔi6ê´×/ð ¾p´BC±ßM¿y–[Å·,ªƒ'?+ºZ'½¨¨ÈZ¹‡Y^!—ÿxVW \Ÿkj@D¤Õc¦òŒb¯¡³fí¾î¤M†MId,¯é/˜©ôMu›’¨{ßÑNgârcÙ†¦}Zà]všMŒ‘N»€-(mmmnnöccÌTnÖ¶¶–L#-ïÙŸŸa ýáÂ$êÞgh°Š¢o!¥¤¥*›sγ«ZJ¤xT¡˜R4RÒššš››¥‰1âÄÅ'rN½«(öYº³³³¥¸M­–Þ¤ø¸¡„~3 W¥ÃXE®,~H3:­B%צþ6"Š^U·€-ð[@ þ¥”¶²9c=ûó³Üg•ÌF"Jˆ×Ä'IQˆ”žóìüœǬ˜ÑÜ!Š¢hµôç‰ñqC³eþÇfÒgeeéMKobL }äõ¹_?U/“+µ¹±ÒVk}Qzz–´¹ @EÅÐ0@”ÓBJÉáÂDÎYÏþü¬,ßð·©™Ì5f£N«¡¸ø$"êµ´[ºâcÇ6 X^γ M)”t}VTÛ¦ {Xu€@ T„Øœ=UÙœ;ÏÓqñInqÕèÌyˆ¢µÁ°¯›’6Õ²9vjŠ ª˜Blnmk«!›‘ßð¥ÛÔL&“N«„ØÔ´$Æzöï7é´š1lCõM¦Y]˜Ä˜©®¡ŸBÖÖþ7°ê(©.ªwL¡I·Ž%ÅÇ9£ ×¹\9ÈK‘nt3w:nlR½s5Ó6ÙÚ!Ù"8§»úÒÈD7%UÙœ“Ç]gC[Mäœól)0‹IMKäÜqÝÐ_@ãÊ€ú(à*A•%&G¿)‘wï3Ô[E¿+ʵ©´\ÊŒçr¥½{VÝPqð Pj@‰ž ™™™Ž[ÇöäHWëbsk Ù¼g¾šojV&rnÒg™µUêç½!¥¤Jǘ©<£®7‰|¿Ø¨2ß"Bl޾0‰º]7ä,¦ëËYYz#%êsü\Í”nSsÅpÒKÁ¥oÔDœ*WQßd‚›“¯c¬Gúâ…ßåÚT³Ú‘™ºøB÷å¾ñ[užÅ©ÿ+Ž@5£eYYYYY™ô¢±±1//o``€ˆ¶×~²aMò¬;m¨#€è$ýDˆ‘tøž&À¸Ø¹s'fÔÂÔ$Tø%ýˆF)*`ü`F  P@ Ô¢L€o}î:x u0öÎu] üó•Û7¢¦@½Š^ŸuÜˬ>ûUÕï¨IÿU Æ ˜ÀãÆØdõöíÛ¸G L!PÇ?OWwˆžKªUþû5Dñèa­/*ª·ª=0¶@°ç¦L7é!í< ½Ñ}×éé=<$;¨ôø )$õÖÕthð¿ËAˆMM#C{nn¬´¤¿¡®·P_Š‘BCgh‡“ûŸ§‰ÖúbCCêžœØqêÕ˜QIB¾>¾®¦ÓOào­/r~°(ª·}訖Vwˆ®®i9Q´Ö¥»Â'i€ )&5ÚÚ­ŽÃÜÚÞFi©1r£‡ßÏçÞC€ŸžãìZ®~%sÒñÓ—:ª}ÒýŒ§Ôñbâº-}¡ÎžòàÊço¼@ \}1G_ç~Tê75Ò·´4777Õm¢}G}ÈX^N†¦¦¦ºM½uÕÕÅfmKKSݦÞò)AƒÁ’ßÒÜÜÜREå5Î(¥˜±˜˜‘Z?õÅiò£‡ß¡À‡±Ü@ú–÷~ÕY³Vê9­ÎMgMyoááæææÃ…½®¾d­/ª‹?ÜÜÜÜÜܬ5—u¡ûê¿êÏ=»½â㈈H£ÕÍød 0QIW?¥HMŠÓ¤C~ôP˜ÀÐÞA>+Ëç5]•t!rè¤Óa6ê´Y³Q—Ÿ#Ú¤¾ä5ã«)©Ò)vÆ•Äý¹¤ÏÒÝmÊÏÚOä¹LÄÏx©idh·æ¤¶·%äï‰ 4z(ÀÐÞA×=j# Ýû,Ý Úµ¯³fQZHxäxÆj)¥ù梆þ|W\ßP\NU-Í)‚(vÔd˜Õm&.>Ig؃¯&DS¤ÖIm ÚZçQ?¬ÑC O\|ÒW÷îx¢Øa6&hKÆ?{¸ô Þ4«ÓÚ u½Cq}’cB¸ßÒ«2ÚbSÓz͸½ J>à ±©i´_¿?ÁãêNÀÑ£×ÒïˆçŒ:`d=0>ÁèÞs!E«3Ö5ôQCQ§Mi¡+YgRÇ á}Õ¾Ù t xä3jàÓ¥bsõimk»Ý¥¤Êœ•ŸµŸˆ'n*ÔË3è¹æÅ7›[«­NÏÔ3"â<»ª¥DC5fm >+L@1©i‰û<â4åÑCRJZ¨&##ƒ’ Wé֚册ÑͨÏ2¹^pž-wÒ”¶gdꙫÛhJªÌk3÷KK4^Ɉ(ÛP¥3šÇæœå•=ûaâï@p¥·Z­BYYYYY™ôFccc^^žô¯Ûk?Ù°&ùdý‘ÊíñW0 Þ®ƒÇ0nÀD7Æ2«;wîÄ¥O€0øÒçÀÀÀ®ƒÇPS Æ ˜ÀãÆ˜eõ\×¥ÀÚwÞY¹}#:¨Tñ«7`¢Žc™Õg¿±âË0A¢=5É"ëc$5˜ žÚ°V9ÁKGV‰T~™ ½r~e{ËnÉŸï1P´WΟ¯Ñh4ÜrFƒ‘†áŸî˜¤üˆ¸©ÌqjEW*š‚Ô^9ó•íÛséªçxÒUáz?ÿÈɺ¼i^Ë¥]w (ÿ|Çw&X‰†3£Ö^9y@Ýg¼®º¼òï/ÉýôêuÔ„Èÿܶ)?"®DAÏÞ8’¿æÉÎÎiŽË”»ý†§ýLý=3óýŒ3û¯l¯¬@ý@¾‰ÀP,´Úiiå4ç‡å½¹õgÐ-`xaZåfÚÛ•7Í}ÉüÍÇ›»õ½:÷Å*µL´@-Ø&¸~õÓY30~ÀÈ£´ùg–xß…–ZÑÕÕÙùÞÒÆùGn Ž XßÚ¸òcÂj£¥¹LË«Û;ë…:Ü Á´qåÇ„ÔR—äÖŸiwµ›ëÑ) è0mÿÌ“Šßè¼qíÊ=3§£¦ Ø@ÍΕW¢ ¿LZqòZþ|M1#¢•{p(†dó7gŒ×ç|åÞ®ŠTj?SÿéñãšÝDDä\è–Ø¹7Y@°"ñâfH5÷ßQ›–Wוçz¿¯JCGW…ª… ËÔŠÄ9³já®Ñø5€°Yÿ¶²@MåÑ`Ü€h7Æ,«»8PûëíYè= ÞÔ;®ÜŸ©C=€z6#eÜˬZz{T]ú\µ±¨rìÔTŒW¥&Yd}’Ä=j0A<µa­r‚—ެ©úÁ[Q¼Øð‹ÚQ”MðimÅúÏ(¦€¨pܘ`ûUŸ‡æ0 ®V|®”O0¼·Æ ÏçŸî˜¤üˆ¸©Ê± $çü>Y¡½WÓ‡N$ ŽX_ÊãÕD-¬(^<^Ð>÷ÐæÑ‡Ç`£”±1ËyÀ¾§`xoEVÿ|Çwü.×h4‘X¢IA³¨ëxAûܪé­åú‹[ýÊ/3¬Ç ~s‘±ŽZwhs¢ ˆâEi çYë"¿É ÔçTñÁ1¼TMo-?p–®;´y}u¶rÃû×|Ò”Ò/6Qò–+çuIÛIÞr"çAi¼r®Ågl­Xq— ‘øií¯¥…”+ïÒù͆ï.|b9—«s¿(×Ü*ú^à¦T. o½‰bÿ­ߟ<™5Ê:¡€=0¤Q öÛ7ÿ°¹žKQÚ;§?–»ÞšØ3j£ÇzójÏEýCï§,çô€ãTäólW3$5`úæÜ5/"É+KÛõå{'{Þ .-ÿµþ¡÷‰øŒ‚e÷7¾^@ù,Žo+$ºíÂý+Šrõàú Ê2úk¿Ù|váQvåœ' Áµµß \wh³\s+÷=5Mé[‡³÷½— –W0·º …®ï˜T´¯Ê6òûÕZ¯ç£7èHW9kÿÐHž—A#ø#nYYYYY™cLmlÌËË ¢íµŸlX“|²þÈ_oÏÂ_H€JÇN] “ÿúœ0¿ †Ä›'^.¿žŽº ³¾'Þ<ñ²iZሿw9.í’?Ðü°Ù¸T÷p€Æ÷F¸£±ü¯Ï7÷ïÆ=jd‚(-¼‚BçwxÖºC+¢¼}ïM°&V¨á_– âDÕ_ b£¶Š¤»ûsоDiÿ¶²@mêˆÒ 86Q 0QÇ1Ëê—W¯Ô¶­_…Þ0Æì__e¨€ð„@  P@ Ô¨5@ €@ ¨ Pj€@  P@ Ô¨@ø˜¤&Ñ®ƒÇPSÑéþ§ŸD%øúðùWP 0ÚÎu] ¨m[¿êÎ;ï¬Ü¾•þˆ@Í0žýÆxFm``5€ƒÆØíÛ·q@˜š„*•üýïÑ\ü ßý.úŒ1̨ P€`àÒ'„À„ü—mëWEty½òÙ™¨¢ª¡#¥°ÑÐ( #$ PƒpôäÏ×L¤â¼òÚ[]X¿ùŸ`mÑÖБRØhhå¨A8úÎÿb(,² hhÔà ‹6445@  ~š$ °È6 ¡QX4 P|^DaÑF€†Ž¤Ââèj€a…EF䍸†&1Ù44 ‹FjŽm<¨ô¢Ø¾sañ 64xqþð‹çŸY$ŒèNi³Ç)çÅóÏ,¤]ÏG¸Ùöú;+÷gÿ9qϳû»rËÇ,Û£—±Ýð“Ò÷BÕè*»çsÕðûÕÓ„`;IÈb´·?ãh×ÉhÖ•ó1+H˜Œ€@ ¢8P³; q;çí>W¾PD±ý…ŸlÙ²ðÊ–w­Š“=_¾ð“-'i¥´ŠÌ†nm¿°•ˆ¸8(r;‘h³óÁÐjÁöã7j.3ÆÞk=W–¼Hð[¾ùCÿ`³=JùÅö¶4pW;rqÄQ‰ÒúÞÞôÈï.ÑÊÝf©ÝxwƒÁ| | eÌ&¸u™lˆ£Ö‘¤¡‡u0ȳº£uÜFWÎG»qDzQ`¢Âd,„l ò!r×øhç6¾°d÷ÃŒ]~ñv)Á·6ËÛëÜ¿x‘6ÕpÖfÿÖvnçO¶cìÄÖŸ<'-©J]pÿâEÒ£êœ}ÐÎ¥…Ò*^»êÂÂ~k³=ø—Â¶ÌæüäÁ·¯ÙìÎåŽüß·áÀçnù”[>òüßF¡Ï¿{;nצjS æÁ³Ž&;gp6?ûœ£eµÏsß”LzkãÛ–o-G6¦.Цþâm‹Ý7ççÞø]7cºÝOÏçâ Ûxìï”Íç¢{Çpï0®ço¿ý‹û/rÛ¬#ýG <—s…¬ÊöLg1顃;}W x´Êldü ë·3øt€plß¾'Õ°+ÛÒËo[h9²qý‘/œ‡Ûh”¨Axj61؇4}as-™ÿÀƒœÓÉÎ òA›Ø¾ó‘ÚKsŸ¬zj6½W¶óc›}aq[õƒœs¾¢²íé{íd³/|êƒöÆ3gß?üÔ,Î[wJ+ºoÖ{ª¡,lû›µß/X>ñsˆ.5µ8–·ï,11ö`•ùú î–O¹å#Ïÿ0Ú(äùwoÇß¶š›>(»×N"c'ËÚ^~ùvÁ3Fö`•ùýªÌø«_¾}ÃÕa¤dR‹¶çÑ%;ħß*™M®ÝqôËAîžíoÛ?jâi‹§8·û³ï~j6ý9„ej0ÁfÔWìþ–|k;÷‘‘ˆ~3ú "êýÒb³û]eÐΧNŸá¶Ü.ó|\fÔ¾µYê_ûËÆÕ)6“üÓ¹ŒuŸ9{]Zþe/qžã‘¹åã5£6Jù÷j;çËÿOIŠ´ås­—8_¾p>œ_矵š]­ïH6uú t^˜à IDATéùKÜ%íåòÌï[^Ï9_þØÃwK»&ã»íÚk¹BVåz¦{1ê¡Gr0ª9ZåÒ„CaÕt€ðkÿ}ï®i? "éùù#5WcìäGçégL»Û£ŒRÇ ]a”à5Y TzQtLìÛ·†8–Ìþ×)v>H"'bìÔ³Y§ˆ1ê¾zÝοG>«X•­{ésƈ1â¢Ý¹¢#Oú±/¬ØñÖÁžnÊ¿ÿ sIÏ™³×zd*]¿ÖMD 1S†®qØí|Pnù8Ý£6ù÷jzŸ—ÒÜZзõU´²oóÿä¹ÿ¬Þ%zæP1â¡Gz0ª8Z¥ z¥¹+ «ª3„c£È&÷Þ—ÁO4u_½nÿ¸Ý8çç•U¼Ôøú;ß­{Eê½^Gëh€@ ‘ÍÜd¸(’ó Ñ&‰ÿÔÂ}?þ.N61.n6ñÏ–U˜¶Ý+ œlž«ˆbŸ©ê¥+4çç~q½`[‹´œÜÒ÷.Ƹ°¢Øg:üyþ¶e±‚ãå¯ò^û¬åüÜì™|Žfþƒo£QÉ¿èÝŽ^/ãâf}æ¶…Ù3&§–¤BŒ¤æhõ—&_"aat©¡ÃµQ|ûž]pvû±evFí½¹w?øRåû-çš|`£wÃÖ ¡…KŸªØ…ûælv>hûxÿ¯Oqž]^˜l³s;ùñ}s;}ôø ·Ubb‰¨÷zŸôòºå3"š9uŠÇ¦äžõMa;ÞzmƺŸ*J/…úì£oعF³”;ýq¿øÒ¶3ŒIù”[’üÝF£–¯vqéjú;¸­ãƒ3Œý྅wqQ¡eåZy^NÑLÎ[~ýË“7ìҒΟï´Ùmª÷zŸc×4cšÛ®½—Ëg5pÏ ¯†ÎÁ8´Šš£Un#c_XWÍ;r"5èÒûî‘oèpnßÃdÞ"ùãiiɼE:Æ>«;púÓblc5B5Gv.ûàDŒ™ž(ý±KÖ™þØŠ%­Xr~‘£ƒ)oêÜ®´5;Lœg?ýK]q¹ß¬r1%`Ï Ÿ†ÞÁèUoÖ.;÷»‘q)ì=…m/üb¶”©áÞ*LQnè°mßÃÄ>uÆLÎ9Ÿ½(9ÆÎEûöØÝ^ò±!!´„²²²²²2éEccc^^ÞÀÀm¯ýdÚäYwÚPGÑìÂw¿;t%éï—K¶ëà±¼ÕN¤‚9úζõ«äª"îˈËÿÄk£ÅŽ×V–}@ºmÇKÿ-BnÙ‰ª†톪DC£ø–FÉÎ;q„FTM†GhaqÁ"ÐyšKd·s[$ß[ƒ1 ;Ž>6jQ5¡…Å‹@4k5¯%"‘좈þ}…Å€£¨Áx®¦a(B kéý…E>D'|ˆG¶ ¢Q„ë0Mw`Dhaí¸Ký…E>D'\mA¶ ¢Q„©–÷O¢°È6 ¡QX4 Pƒ°m?¨‰åÅ¡s¢°È'D"ü3@˜ÂŒ¨åþÓü00£€@ ‚àÒç•\ÀqãàëÿÇp¾%ÿÒûߨ€ñ"¨M½ãÊÉú+¨ €qÑÓý©l †ß}Gö¯¯âËa 5@ €@ ¨D™If³ÙõâóÏ?ïéé¹}û6ê`|™Íæÿ™Ü£±iIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/11_jms_non_persistent_delivery_mode.png0000644000175000017500000006562212032647170032141 0ustar ebourgebourg‰PNG  IHDR¹Põ.ôsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ99Ô9~ IDATxÚìÝ{TSWÞ?þ}BL¢("ˆ*V¼+bÅz­Ï¨‹v¤FQ«˜ZÔØaFñQY ¶‚­ÖGGÅ[ëÔ ZµˆÅÖV¨R!C@!H~œùæ—IBˆÖËûµ\®dŸ};û$œ›}Ρ&NœèïïOÀÀ‰Ó_3ýýý% ÆÀPÎ/E Œ€Yˆ•+ V@¬ €X±2beÄʈ•+¼Ê˜Ï­%¹\.—Ëœœúôécgg×íõß¹s§¢¢‚Çã;öÕ>f¯Ïž¼±òƒ–.]JùôÓO‡Nùâ‹/Ξ=KñööþüóÏõ9u:ÝâÅ‹>|H9{ö¬““!¤²²2>>¾¨¨HŸÍßßóæÍ¦ é«%„0 ' ?øàƒ!C†tØÉ~øáìٳÇ)"È×gO^ñXÙ‚;wîÈd2úíï¿ÿNʆ¶mÛVZZêââ2{öìÖÖÖ_~ù¥­­ÍBŽŽŽ£Fº}ûöÇ=zT\\|øða.—k¹'ƒ~ûí·ÝÜܬìù½{÷rrrÔjõ²eËžE~k¼˜{ „†Ö^ݰãêÕ« , __¾|Ùh«\./--%„|øá‡"‘ˆ¢Õj-TØ·oßM›6BRRRŽ=ªR©Š‹‹ÇŒc¹S¦L™2eŠõݾqãFJJJß¾}­Œ ;›ß/æží©be//¯»wïfggÓ±²N§ËÎÎvww¯¨¨ ßBlmm †V«½{÷.+B «®) 8zô(!äñãÇtJqqñ?ÿùÏ{÷îi4wß}wÒ¤Iô¦¯¾úêâÅ‹B¡ðã?6|û׿þuß¾}………Ç  …t|úôiBHmmíªU«† ¶bÅ Ë¿˜Ío¡?òâì)è=Õ}0&OžL¹}ûvmm-!äÖ­[µµµú)OŠ¢!|>èС„”””¸¸8•Je}ýW®\¡_ôïߟòÓO?­Y³æ§Ÿ~2dH@@À;wþ÷ÿ÷øñãt¹\^\\\UUeøööíÛ‰$77W©T^¾|ùÀôV{{{GGG:jwvv¦×U[`6¿åþtÊ‹³§Ð=±r¿~ý¼¼¼t:êeee±X¬‰'e‹ŒŒäóù„ï¿ÿ>44ôûï¿·\mccã?ü°sçΓ'OBF5`À€¶¶¶={ö´µµM™2eÓ¦Mb±˜¾Ü055U&“µWUYYÙ›o¾yöìÙµk×B !cÇŽ={6!D ÄÄļÿþû–»dš¿kýyñ÷ôžv½òäÉ“ïÞ½{åÊ•wÞy';;ÛÏÏÏÁÁÁ(Ï€8œœœ••ÕÐÐWZZja%@UUUll,ýzÒ¤IkÖ¬¡(ªººšŽõËyGMÑh4¿ýö›þâB#ýû÷ÿè£lll|||!mmm*•ª½‹ç222ô÷¦Ð=zôÊ•+M3wØkjû£öžS¬|èС[·negg+•Ê·ÞzËl6=kÖ¬¸¸8¥RyöìÙÀÀ@ggg³™ûôé³dÉ@àîî®ÏS]]M¿ðòò҇බ¶---úMfÛµ±±!„Ðÿ[Ö£G˜vÆlæûcMmÔžÀóˆ•éewïÞýüóÏÆozÏ8½±cÇnÙ²eÍš5„ÜÜÜwÞyÇl6''§éÓ§% úEUUDÖÖÖ¶´´BzöìÙ-c!‰ôWv¨ÃþXSÛµ§`nxÆ5}…ŸJ¥š8q¢­­­ÑÖ¶¶6ú†ÿ‰Í™ÿ‰Îííí;ÕŠ»»;›Í&„ܺu‹N¹sçýbРA]è6}•›B¡Ðh4]Èßíýyqöþ»Z“©µµ•~a “ÿ· ƒbvFiiéÖ­['Nœ8`À•JõÝwßBx<Þ¸qã:ÕQ‹µdÉ’½{÷þûßÿvqqQ«Õ§N"„L:õ7Þèž?ÞÖÖV£Ñìܹs„ Ó¦MëlþîíÏ‹³§Ð‰XùÁƒô ³+Œûõë÷ù矷µµy{{›nµ±±Q(†W¹ 2äÃ?¤ïŒÑ)óçÏg±Xÿüç?÷íÛG±··_´hQppp×öÜÑÑqéÒ¥çÏŸÏÎξ{÷n‡¤iþîíÏ‹³§@£$‰D"ioó±cÇzôèñÍ7ßÜ¿ßÃÃãË/¿¤ïšÜ)Z­V©TÖÔÔètº>}úôêÕë);­P(Z[[{÷î݅Θ’Éd€Åbu9÷öçÅÙS€×Ù[QÌ+9r„~ѧOŸ?þ¸kƒÁèÙ³g7^—Ö½—¸µw6ëó?»KîþØ=xÍu+çîÆÅÅýío£_Ï™3gÒ¤IjµZ¿õСCcÇŽýí·ß!ûöí{ÿý÷·mÛ6cÆŒ«W¯Õ3gΜ3fL:uöìÙ{÷îµÐb```vvösÞͼ{ˆ•©TªÏ?ÿüEÛÃHñ»ï¾c±X„{÷î9s&%%åÀ.\;v¬iÁ 6\¼xqË–-‡.++k¯þÇ‹D¢ö¶.[¶Ìò-¨;ÌОçÓ=èžX™Åb]¾|ÙtŽ6!!!""âÝwßݲe‹>ª‹Åqqqééé|ðÁŠ+îß¿ÿïÿ{ñâÅQQQ2™ŒÎS^^5oÞ¼åË—B®^½–ŸŸoe—&Mš¤ïܹӳgOBˆV«mhh ;ccccooo¶8EQÇg±XÅÅÅ„êêêÈÈÈ·ÞzkÁ‚ßÿ=çïÿû7!kÖ¬ÉÎÎŽŽŽž9sæ§Ÿ~JÙ¿ÿ­[·Þ}÷ݶ¶6Óú2˜­ß‚gÝ=è¶XyæÌ™`Ïž= †é666!!!ÑÑÑ×®]KKK£¥Ri~~~zzºOiiiLLLff¦··waa!=¬V«%‰J¥ŠŽŽ¦(jûöíZ­öÉ“'VviúôéyyytÒÓÓgÍšE§{yyÍœ93<<üĉ:®½âZ­ö«¯¾ÒétÆ ÓétQQQ}úôùꫯV¬X±eË–Û·oBªªªšššè;wî3fLBBÂÙ³gïÝ»ìáá~ðàAÓú 30 ³õ[ð¬»Ý+;::®^½Z©T­ ŒŒô÷÷÷ôôtww/((Ч;88ÄÇÇGEE1 ›]»v­Y³†R^^NÉÏÏW(S¦Lè]йg‘Lš4I$]¸p^LÑjµ‡ÊËË“ÉdZ­ÖÉÉIŸÙÅÅ…^Á`0ÜÝÝY,EQú­555„ÔÔTúq‚,K¥RQe˜ÇÓ§OÏÌÌìÛ·ïo¼Áår 7-Y²Ä××÷ã?>pà¦7nÜ[o½% Ùl6!D&“9::ºººÒ[½½½«««Šôïߟ~akkk´I¥RíÚµË0%!!®™f¶~ ¥º·{ðÌceBHddä7ÒÓÓé·YYY'Ož\¶lY``àºu묿3†³³3!dþüùO³Ó§Oÿâ‹/˜Læœ9sL·úøø^¹rÅtÓ›o¾9lØ0ý[@ðøñcýS[ÊËË]\\¬é½Æ£W¯^°ÁlýJuo÷  :}eggç°°0ý[z±¬½½}nnnUUUcccss³5õŒ;ÖÉÉ)##ãâÅ‹2™,''§²²2''gÅŠ?ýô“…‚FÏýû÷÷òòúõ×_'Ož¬O,+++))!„hµÚßÿÝÝݽÃþ <¸OŸ>ééé:îþýû………–êÛ·¯…›TfèZýϺ{б2!dÞ¼yÞÞÞôëÉ“' …¤¤¤´´4‘H¤V«¬©„ËåÆÄÄðx¼;v'&&>|øðñãÇ¥¥¥?n¯”L&}Ú»a\{ dzþÆ­­­Ož<éÑ£‡•:[ÿ³îÀkîoñ_Æ®_vâÄ £¸÷­À(f·4 ¿¤Çãu¶¬Ñy½ÿ~z“T*ÍÏÏOOO÷ññ)--‰‰ÉÌÌôöö.,,ÌÎζ2Z­–H$*•*::š¢¨íÛ·kµZº`aaá‘#GFU\\|úôiBˆŸŸÇc³Ùaaa®®®„äääÄÆÆ._¾œNyòäIEEEcc#Ž=XfÕ¼²R©$„ØÙÙ™nÊÏÏ—ËåsæÌ™5kÖÌ™3/]º”žžþá‡2 BˆƒƒC||¼MVV–Í®]»¯\¹R^^®¯Áržüü|…B1gΜÁƒûùù?~üþýûô”6EQ;wîW¯^-..&„ 0€Íf·µµùûûBt:B¡¨¯¯¯ªªš6mÝ¥™3gΘ1Ã4è0bÕ¼rŸ>}!ׯ_7ÝT]]M …tðêééÙÒÒ¢P(è­...,‹Á`¸»»³X,‡cTƒå<555„ÔÔÔ÷ßÿÌ™3,K¥RÑ›œmët:Ó¾Q%‹ãââ"##ïÞ½K'2 ÄÊÐ!«æ•…B!“É,))©­­íÕ«—á&:Z­ªª¢ßÊd2ƒÑ£Gîꟳ³3!dþüùV1Œ›E"ÑСCÏž=›ššš˜˜˜””„CV²j^¹W¯^þóŸ !›7oþõ×_åryvvvBB‚Z­3f ‡ÃÉÉÉ)++ËÊʪ©©?~<‹Åê®þ;ÖÉÉ)##ãâÅ‹2™,''§²²ÒB~///¥RyóæMF£V«333¹\.›Í&„äää¬X±â§Ÿ~±ˬ½gÜÒ¥K¹\nZZÚ† !l6[(RÅçó7mÚôé§ŸFDDPåëë+‹»±\.7&&f÷îÝ;vì „ðùüO>ùÄÍÍ­½üsçνsçÎÚµk×®];iÒ¤”””O?ý”¢¨7Þx#,,ŒòøñãÒÒÒÇãØ€e”D"‘H$ímÎÈÈ ¢¯í#„ètºššNçââb´ä·®®ŽÍfw㌲‘††Š¢­É¬T*y<ÝCFÓÜÜÌåròðù|~ 8qÂ0î%„¼Õ¹çÛQEßóØÇ{¦½7 v-0ŒƒY,Ö³‹ààÆÀ˜Õñ¼ò‰'0L€XÙXPPÆ+›a¸ºൂõʈ•^äXY§ÓUVVÖ××cèàÇ|ÊòÁÁÁ?þúë¯ ! .¬««›6mÚÆé­§NúòË/½¼¼öíÛG9zôèùóçU*•V«6lØgŸ}fT]!„Ãá >|ñâÅÞÞÞ8HðRÆÊ¦òòò4 ýø¬¬,}zeeå±cÇfÍš©P(ª««Í …ëׯÿõ×_÷ï߯V«ãââpàUˆ•XVVvýúu‘HTYYYYYÙ«W/NG‘ÉdZ­V©TÒÈnïù¶¶¶B¡pÀ€ÇŽ{øð!X^^¾gÏž’’’¾}ûŠÅâ!C†BŠŠŠÒÒÒ 9NhhèôéÓéˆ|ïÞ½EEE' 44ÔÖÖ–>hР 6BV­ZÕ»wïÍ›7BÄb1Ç›0a‘#G¶nÝÊf³÷íÛwëÖ-Š¢D"QTT”õMÀ+¦›×+ûúúÚÙÙeggB._¾ìççgooOQ!däÈ‘ýúõûñÇ###KJJÚ«A§ÓÉåòÔÔÔ'OžL:•¢V«%‰J¥ŠŽŽ¦(jûöíZ­–’œœüàÁƒØØØåË—»ººB4D"¹}ûöÊ•+E"ÑéÓ§÷ïßOW[QQ!—Ëé×R©T…K¥Ò‚‚‚ÔÔÔ1cÆØÚÚnذá矞={vdd¤···õMÀ«Çªy匌 £”·ß~ÛlN{{{__ß¼¼¼–––¬¬¬»wïþ§%&3))iÛ¶m¿üò‹X,þøãÍNÇÞ¹sgñâÅ„?ýéO|ð!$??_¡PÌ™3gðàÁ~~~Ç¿ÿþÀ E}}}UUÕ´iÓ S.—Ï™3gÖ¬Y3gμtéRzzú‡~Homw˜ÌÄÄD>ŸõêU™L6uêÔððpzÓåË—­lÚì(ÀK!((ÈìsE˜Ö—7|ká%'N¼zõêW_}%“ÉÆwèÐ!ý&.—»cÇŽsçÎ8p >>~̘1|>ߨxÿþý—/_¾eË–’’­VkccSSSCIMM¥Ÿ¶Íb±T*EQb±x÷îÝqqqçÎ[»v­——½Z(B(Šòôô,((P(ÎÎÎv­gÏžt7èâ>>>úMÖ7MðŒC€—é™Õ‰õÊV>ÃO$1™Ì”””ñãÇÛÙÙm¥(jþüù¥¥¥™™™7oÞœ4i’Q6›=nܸE‹¥¤¤œ:u*((ˆŽtçÏŸaÔÐСCÏž=›ššš˜˜˜””$!UUUt™LÆ`0zôèA¿mmm%„¨Tªææf³=§#æââb}ŠõM<ãà•Ó ë•éåÈzgäÈ‘& À0ýÖ­[éééÕÕÕEEEE¹»»·Wç{ï½×«W¯cÇŽ•——;ÖÉÉ)##ãâÅ‹2™,''§²²R­Vgff666r¹\6›M3f ‡ÃÉÉÉ)++ËÊʪ©©?~<}Gww÷{÷îeffnÚ´©­­Íl£úâ™™™µµµ………Ö7 ˆ•ÿK[[Û£Gx<žQú’%KV¯^íççg˜XQQ±{÷î¥K—ÚÙÙ­Y³fÀ€íÕlgg®ÑhvíÚÅápbbbx<ÞŽ;‚ƒƒ>|ØÒÒ’’’¼`ÁWW×°°0BŸÏ§CለˆØØX___±XLW8þ|BÈÞ½{çÎÛ^tKçp8»ví :|ø0—˵²ixõP‰D"‘XΔ‘‘a´Þ9??ÿÇ|ôèQnnn``àŠ+¬iL£ÑÈår‡cºLÙ E9::VØÜÜÌårrÖÕÕ±ÙlzFYO­V3™L&³ãe'J¥ÒÞÞÞÁÁ¡ MÀËÅ4Ö¥½ÕÅû+;995662Œ¥K—ZYŠÅb¹¹¹uy7LS‹eÓL§º !öööV6dÊ[ß4¼2º+¿ùæ›o¾ù&†^a beÄʈ•+ÄÖ`ÀkÇÊ?ž#VèîXY§ÓÉd²ÚÚÚçÜcNW[[ûàÁƒ¦¦¦d ŠŠŠðaxÅte½rKKKZZÚ©S§4V«år¹!!!óæÍc0ží,µF£IKK;sæLSSƒÁÐjµ=zô8sæ¹ø¬µµ•ÉüÏèmÛ¶M ìß¿ÿ)ë\¸pa]]þí{ï½·lÙ²®u þ˜Xù‹/¾øæ›o-Zôþûï·¶¶îß¿?99¹¹¹ù/ùË3íkRRRFFƼy󂃃¹\nyyyiié2jb±¸¦¦&--~»oß¾îú=ÏçöÙgôkGGÇ.w þ€X¹ººúÛo¿e³Ù¡¡¡t€ñÝwß=ztÞ¼yááრڰa!dÕªU½{÷Þ¼y3!¤¼¼|Ïž=%%%}ûö‹ÅC† !„XŸ¹²²233ÓÃÃcõêÕEB<=====é^UVVîÝ»·¨¨ˆÃᄆ†ÚÚÚÒ$Ç›1cÆÁƒ9ŽX,4h…t³¬®®Þ·oß­[·(ЉDnnn%%%Z­6,,,**ÊÇÇgëÖ­<oË–-]è‰777Ô„„„¢¢¢ÚÚÚ#F„„„ 8К.YîÆ„ Ž92lذ’’’˜˜˜þýûB¾üò˶¶¶+Và[@ëôlhii©V«1b„~&ÕÉÉI(677WTTB***är9½I*•>|ø¢V«%‰J¥ŠŽŽ¦(jûöíZ­¶S™ËÊÊt:ÝèÑ£é@ÙF£‘H$·oß^¹r¥H$:}ú´~9„T*-,,m!Ýl»fÆ ?ÿüóìÙ³###½½½ýüüx<›Í suu¥k“Éd]뉑¶¶¶ªªªªª*ºB:z ‰ŽŽ¾ví=mÜa—,w£   55u̘1ƒ®¨¨øá‡!?þ׿þåç燯@×cåGB<<< é·†kmäçç+Š)S¦ <ØÏÏO.—ß¿¿S™é»ßÙÙÙ™Í/—ËfÍšµjÕ*.—›žžNÇℊ¢vîÜIϧëK™¦›m÷Úµk2™lÒ¤IááásæÌ0`›Í¶µµõ÷÷çóùOßCJ¥rÉ’%K–,Y»v-éïïïéééîî^PP@é°K–»Ád2£¢¢fÏžmgg—••Eùþûï]\\F…¯€^§×`¸¸¸Bnß¾m˜øûï¿Bô+"LÕÔÔBRSSOœ8Aa±X*•ªS™ûôéC¹~ýúÒ¥KòWWWB„B!zzz( gggBˆ³³³@ „888èt:})Ót³íÒ•ûøøX38]ë‰!>ŸŸ˜˜H±±±!„hµÚC‡åååÉd2­Vëää¤oÅB—,w£gÏžtˆooo/‰²²²îܹsþüùÀÀ@|ž*V~ã7X,VQQQKK ½V.—K¥Ò^½zõêÕ‹ÎÓÚÚJQ©TÍÍÍúÀ”2þüˆˆ£ ­Ì\[[Ëd2KJJjkkõ Ñè´ªªŠ~+“É F=:»kfÛU(„Ói`³ÁîÓ÷ÄÆÆ¦oß¾ú·YYY'Ož\¶lY``àºuë¤R)O[î’õݘ:ujVVÖçŸ^WW7cÆ | uz ŸÏ Ôh4Ÿ~úimmmUUÕ§Ÿ~Ê`0ÂÃÃé îîî÷îÝËÌÌÜ´iS[[8vìX''§ŒŒŒ‹/Êd²œœœÊÊÊNeîիןÿüª^4É IDATgBÈæÍ›ýõW¹\ž V«ÇŒÃáprrrÊÊʲ²²jjjÆÏb±:»kfÛÕWž™™Y[[[XXHñòòR*•7oÞÔh4†5tWOôè{HÛÛÛçææVUU566677wØ%ë»1vìX.—{ûöíÿùŸÿyš~ Vþ%K–„††æää-Y²ä—_~‰ˆˆ˜6m½uþüù„½{÷Î;—ÍfÓ‰\.7&&†ÇãíØ±#88811‘¾Œ¯S™—.]ZQQ±aÆŋúé§< (ŠÏçÓ¡vDDDll¬¯¯¯X,îÂ~™m—®œÃáìÚµ+((èðáĹs纹¹­]»öÂ… F¿HtKOô&Ož, “’’ÒÒÒD"‘Z­NHHè°KÖwƒ^âlccóÎ;ïàË`„’H$‰Är¦ŒŒŒ   úê:=­V+•J Å×_››Û§OŸ!C†üõ¯uuuU«ÕL&Óìs1(Š2¼sp§2Bt:]MMN§sqq1º'F]]›Í~úùQ³í*•J{{{Ãgz_Žnì ­¾¾ž^©\WWÇápè¥/ÖtÉšn¬_¿ÞÉÉéÿø‡Ù­ñÏÄ®_†ï ¼bþÿeìúet|k6Ö%„¼ÕõǼ1 77777·#FH¥Ò+W®´µµÑ÷P³··o¯—Ë5JéTfBEQôõ…¦x<^·ŒÙvnya6¥Û{B£eÓj;ìR‡ÝÈÈȸqãFBB¾0¦ºç‘È®®®Ïú¡}ð,¸ººnÛ¶ÍÊ»| V†×ÈðáÃ;Ì£T*ãžÁXbe€ÿ²>|ŸÏÇ’e@¬ `æ•à•´>|beè˜Z€W‰R©äóù¦÷¾0ÂÀHÀëÆÊ?›#V@¬ Ð]\¯üøñ㯿þš²páBNwðàAúÉyyy›6m:r䈫«ëÂ… ëêêè"@(.Y²dРAtÊÂ… ™Læ‰'þðQÐ÷“Ãá >|ñâÅÞÞÞHOZ[[Í>ž¿î™WV©TŸþ¹ÙM|>ÿðáÃ{öìùàƒnÞ¼Y\\ü„P(üâ‹/>øàƒ¼¼¼ÿû¿ÿûCú ‹?øà|(^Ý3…Éb±._¾«©© P©T;wî$„„‡‡4hÆ „U«VõîÝ{óæÍíURTT”––VXXÈápBCC§OŸ~òäÉ’’­Veô,½ni´S™ {æ•gΜ)öìÙÓÐÐ`!ÛÈ‘# !÷ïß·\›T*-,,­»CBB¢££¯]»–––¦ÏœŸŸŸžžîããSZZ“™™éíí]XX˜MQ«Õ‰D¥REGGSµ}ûv­VkÚ¨N§“Ëå©©©Ož<™:uª…‚qqqR©tÉ’%„ÜÜ\©TJ×PQQ!—Ëõ½¢îö*INN~ðàAllìòåË]]] !~~~<Íf‡……Ñ)†º¥ÑNe€î‰•W¯^­T*÷îÝk!›››“Élllì°BŠ¢vîÜIO0ë×lDFFúûû{zzº»»è3;88ÄÇÇGEE1 ›]»v­Y³†R^^NÉÏÏW(S¦L³‹‹‹ƒƒ!„Á`¸»»³X,Š¢ô[kjj!©©©ôE„,K¥R™¶Ø¿ÿåË—oÙ²…^accc¶à½{÷!^^^V‹ÙJ(ЋŻw‹;wîÜÚµk-WxãÆ§o´[2 Vî¢ÈÈÈ7n¤§§·—á»ï¾#„Œ1¢ •gee³³Ú–™F¥].H_JhÊÞÞÞúJX,–Ùë n‚ѽv*3Àk®Ó±ò'Ÿ|‚QÓûè£Ì^÷ê5 €X:gôèѯI£J¥2þàq@¬ ð_Ö‡/àóùX² ˆ•!³Èð"ÿò†AÀ àùœP+C»0‘ / ¥RÉçóM/UœPžÅ …‘€—&¨àyžP+ V~¾ ŠŠŠ0ðôt:]eee}}}—3ÐRRRΞ=‹ñ°^×+?~üøë¯¿&„,\¸P§ÓH^^Þ¦M›Ž9âêêºpẺ:ºˆ@  …K–,4h²páB&“yâĉ?|ôýäp8Ç_¼x±Ñ“º»`Û¶m`ÿþýø€åÓh]]Ý´iÓ6nÜHo=uêÔ—_~éååµoß>BÈÑ£GÏŸ?¯R©´Zí°aÃ>ûì3£Ú:Ì wþüy@ÐÙ§‰µ¶¶š}à+bek©TªÏ?ÿüïÿ»é&>ŸÿÙgŸ544ܽ{÷Ë/¿ŒŒŒLJJÒ‡Ë/¡P¸~ýú_ýuÿþýjµ:..î)+Ü·oƒi{°J^^žF£¡Ÿçš••¥O¯¬¬¤Í¬®®Þ·oß­[·(ЉDQQQf³mݺ•ÇãmÙ²åàÁƒ¹¹¹›7oöðð „œ={¶¬¬lݺuöª¸¸ø³Ï>«©© P©T;wî$„„‡‡4hÆ „U«VõîÝ{óæÍíõ¶S™à1pàÀ²²²ëׯ‹D¢ÊÊÊÊÊÊ^½zÑh•ÉdZ­V©Têt:ú¼f¨½ þœ·æçææVRR¢Õj⢢|||*++÷îÝ[TTÄápBCCmmmõçî &9räøñã8¦ðÊ螉ϙ3g ‚={ö444XÈ6räHBÈýû÷-×&•J 92jÔ¨âââÓ§OëÃîèèèk×®éÁ•J¥ùùùééé>>>¥¥¥111™™™ÞÞÞ………ÙÙÙ„µZ-‘HT*Utt4EQÛ·o×jµ¦êt:¹\žššúäÉ“©S§¶WP£Ñlذá矞={vdd¤··w{õK¥R™LFñññ©¨¨øþûïé†ÎŸ??dÈkz'•J—,YBÉÍÍ•J¥tzEE…\.×ï>Ù·Wa§2ÀÂ×××ÎÎŽ>m]¾|ÙÏÏÏÞÞž¢(úÔÙ¯_¿ü122²¤¤Äì¹Õ4C‡?ç­<Çùùùñx<6›æêêªÑh$ÉíÛ·W®\)‰NŸ>­_j(•J RSSÇŒƒ ˆ•9::®^½Z©TîÝ»×B6777&“ÙØØØa…Eíܹ“þ%µ¸¸˜NŒŒŒô÷÷÷ôôtww/((ÐgvppˆŠŠb0666»víZ³f ý3!$??_¡PL™2eðàÁ~~~r¹Ül°~çÎÅ‹=zôOúÓ|Ð^Ák×®Éd²I“&…‡‡Ì™3§Ãú}}}œœ.]º¤ÕjïܹóðáÃÉ“'wXª¶¶¶¼¼|âĉï¼óÎG}Ô§OË#fånv!3¡Õj›››  imm%„¨Tªæææ»Ñ©Ìð‡‰DL&3%%eüøñvvvF[)Šš?~iiiffæÍ›7'Mšd9C‡?ç­<ÇÑèI+B=UUUE¿•Éd £G8|€X٠ù[ý/,,,99Ù0±¥¥åúõëMMM¿ýöÛ¹sçAPPPškjj"„ØÛÛçææVUU555577›þ415vìX''§ŒŒ ¡PH¯iöðð /74õÞ{不§;vl„ f Ž3†Ãáäää 6l̘1R©Ôšú‡ Ò·oß‹/:::úúúZÓ«¡C‡ÚÚÚ^ºtÉÃÃãúõëõõõ½zõ¢7¹»»ß»w/333==½­­Íònv*3¾ÏÑi”ÃáŒ9òçŸ0L¿uëVyyù¨Q£Z[[‹ŠŠ(Šrwwï0CÏž=-ÿœ·ò7|øp//¯‹/Þ¼ysРAú 3gÎ,//¯©©™0a‚…¿'¼º²^¹­­íÑ£Gôݔ̛7ÏèÎÄ*•jãÆ[·nÍÏÏŸ9sæþýû»ÐèäÉ“…BaRRRZZšH$R«Õ Öär¹111<oÇŽÁÁÁ‰‰‰úÛ\˜²³³ ×h4»víâp8¦ù|þ¦M›8ή]»‚‚‚>leýÓ¦MÓétS¦L¡¯î°”­­í¢E‹êëë“““===é Úüùó !{÷î;w.›Í¶¼›Ê ÏA{§Ñ%K–¬^½ÚÏÏÏ0±¢¢b÷îÝ!!!K—.µ³³[³fÍ€:ÌÐáÏy³LÏq„¹s纹¹­]»öÂ… t†¶¶¶ˆˆˆØØX___±XŒ ¯ø¯µ‰D"‘XΔ‘‘¤T* !‰‰‰=ÊÍÍ \±bÅsîn}}=½R¹®®ŽÃáÐq§•(ŠêB¤n¶ R©´··§×I?Mý–K5551 ;;»NwôèQ:]­V3™L³w†7­°S™õ➉]¿ ßxÑü-þËØõËèG/£.œF5\.çp8í­¶¡Ãs“•ç8¥RÉãñôsáuuul6ÛÊeœPàÅ?¡ƺ†Þ ŒêôŒÆÆFƒ±téÒÎ>õ§[è/é3;«m—ËíZ£f šþ<êZý–Kþœ2dooo}…Ê ÏTN£,Ëò29 :ü9oå9Î(¥ ga€—T§cåO>ù£öü}ôÑGúK+àå…Ó(À++ÃbôèÑÏ¿Q¥Rð pBÄÊÿe}ø>Ÿf€ V0? €AœPàuÆÀ˜eí¼2ý LÄÊÿ¥kOÚxõce,3€×Ö+ V@¬ €X±ò+¤   ¨¨ãð*ÇÊ .œ1cÆŽ;ô)§Nš1cÆÊ•+1²FZ[[õ¯·mÛ–˜˜ˆ1xÁuÃ3®óòò4 ‹Å"„deeaLM‰Åâššš´´4úí¾}û Ìè¼ê±òÀËÊÊ®_¿.‰*+++++{õê¥Óéè­ååå{öì)))éÛ·¯X,2d!¤¨¨(--­°°Ãᄆ†NŸ>½½Ä„„„¢¢¢ÚÚÚ#F„„„ 8rçÎÝ»w×ÔÔL™2E¡P477ïܹ³½¶ŒV'‰Ž;FQÔÊ•+'L˜ OŸ0a‘#G¶nÝjgg·wïÞ¢¢"‡jkkk¡¸Ùv ëô÷÷/))ÑjµaaaQQQ>>>[·nåñx[¶léÔÀóÄeÖ>í즯¯¯]vv6!äòåË~~~öööEBÔjµD"Q©TÑÑÑEmß¾]«ÕB’““½ÿ~ ÅÛk×°ÎqãÆñx<6›FïšT*•Éd"xάšWÎÈÈ0Jyûí·éööö¾¾¾yyy---YYY!!!wïÞ¥7åçç+Š9sæ <ØÏÏïøñã÷ïß8p B¡¨¯¯¯ªªš6m½A§Ó™&B"## !J¥ÒÝݽ  €"“É*++gÍš5{ölº zÛl[žžžFÝvppˆ‹‹³··onn¾téRyy¹‡‡!„Éd&&&òùü+W®Èåò9sæÌš5kæÌ™—.]JOOÿðÃé.™¿ÿ~{íêë$„°Ùì¶¶6£þX?Dft‹   ³OªfZ_Þð­a]'N¼zõêW_}%“ÉÆwèÐ!:½¦¦†’ššzâÄ B‹ÅR©TE‰ÅâÝ»wÇÅÅ;wníÚµ^^^fµZí¡C‡òòòd2™V«urr"„ܸqƒb›mËt/œœœìíí !ýû÷'„”••ѱrÏž=é ¶ººš" !Eyzz( ggg³Ååry{íêë´Àú!2=Ð-èH̬N¬W6kBD"“ÉLII?~¼>Ž/çÏŸa”èСgÏžMMMMLLLJJ2›˜••uòäÉeË–®[·Ž^kA‡¶UUU„Ç?~ü˜ÃáXh«=•••„£t@ ¯Ÿ"“É F=Ú+NÏj[Ó®~ ·¡N Q{ãÏH7ÜÃáŒ9R£Ñ¦;ÖÉÉ)##ãâÅ‹2™,''§²²R­Vgff666r¹\6›M1›ØÔÔD±··ÏÍÍ­ªªjlllnnööövttÌÌÌLNN–H$­­­ôÚh³m™vµºº:33ó·ß~ûùçŸÝÜÜèPÕИ1c8NNNNYYYVVVMMÍøñãé[|˜-ne»^^^J¥òæÍ›¦kC/e¬LY²dÉêÕ«ýüü ¹\nLL ÇÛ±cGpppbbâÇ[ZZRRR‚ƒƒ,XàêêF1›8yòd¡P˜”””––&‰ÔjuBBƒÁX³f““Ó?þøî»ïÚÙÙѬٶ̆õß|óÍÇÜÚÚº|ùrÓ |>Ó¦Mmmm±±±¾¾¾b±ØBq+Û;w®››ÛÚµk/\¸Ðµ!€ç’H$‰Är¦ŒŒŒöÖ;[£¡¡¢(GGG}ŠF£innær¹†ÙÌ&Ö××Ó+•ëêê8Ž­­­L&svv¶±±ùí·ß>þøãI“&mÚ´ÉB[z .û÷ïW*•=zô°|‡ãºº:6›­ŸQî°¸…võ”J%Ç£'»6DÐíÚ‹uçýå¯ÌçмiÀÇb± ÃP ‰t Láñxô‹˜˜©T*ªªªúõëg4íjMpÙá%w†ÍYYü)Ûµrˆàyb¾t=Ž/--•J¥>>>ô¥~VÚ°aýT‘®yÊâ€Xù™ãr¹#GŽ9rdg úúú>M»OY^: beÄʈ•+ V@¬ ðÂbb SRRR8N``à Ø·¶¶¶Ÿ~ú)//ÏÎÎî½÷Þ«ªª²µµ2dHg÷%--M§Óu¡Ñ^½záCò#`Ô(<çOÝó9Ê€X^M¿üò á%¯T*ŸEÍEEEiii………'44túôé„òòò={ö”””ôíÛW,›þ;!!¡¨¨¨¶¶vĈ!!!4ÜzòäÉ’’­Våããc¶B±XÌãñ&L˜päÈ‘­[·îÙ³‡Çã͘1ãàÁƒG,4Èl[VÖ¯wøðáÜÜ\BȪU«&Nœ¸téÒ­[·òx¼-[¶X³³ÅÅÅŸ}öYMMM@@@KK “É´0t­¬¬Ü»woQQ‡Ã  µµµ5¡Phüõë×oèСÇwttܸqã­[·Ž?îââ²~ýz—öúo¶ofÍÊ;wîìÞ½»¦¦fÊ”) …¢¹¹yçÎÖŒUuuõ¾}ûnݺEQ”H$ŠŠŠ²r¯é£¯Ëd2;û 4ýTeËÝ0ýÔ VbÛ§„—CìúeÏ®òäää'OžÄÆÆÖÖÖÒ jÕjµD"qttŒŽŽ>|øðöíÛ=j4?gccâàà°iÓ&‹õÉ'Ÿnõóóû׿þ¥V«ÃÂÂ\]]Û«P*•–———••3†ÃáH¥ÒH¥ÒQ£F}ûí·§OŸŽŽŽ6Û–•õëûãïïÿã?Þ»w/,,¬OŸ>„©TªV«­ÜÙ¸¸8¹\¾téÒ²²²GõîÝ»½¡3dÔ¨F£‘H$MMM+W®,))9}ú´F£Y½z5ÝÃq0¬D*•VVV>xðÀÇÇçÒ¥K111NNNÞÞÞW®\ÉÎÎ~ï½÷Úë¿Ù¾™M4{(wìØ¡T*—/_~ïÞ½üü|z—;+F³aÃ…Bñî»ï¾ñÆ Öïµá[&“Ù…O Ñ§Âð([î†ÙObe „É3æ`žìï¿]º¸ ÷Nµ>³éêË+7t:B¡¨¯¯¯ªªš6mŽäçç+Š9sæ <ØÏÏïøñã÷ïß÷ôô4,IQ*•îîîFÕ0€Íf·µµùûûB._¾Ü^…L&311‘ÏçÓ)ŠÚ¹s§@ ¸zõjqqq{mY_?í7ÞèÑ£¿uµÃ­­­-//Ÿ>}ú;ï¼Cùå—_t:]{CgȨÑ+W®Èåò9sæºpâë IDATÌš5kæÌ™—.]JOOÿðÃé‚Fã`ÈÁÁ!>>ÞÆÆ&++ËÆÆf×®]W®\)//o¯ÿ4í[{6^™LVYY9kÖ¬Ù³gÓMлÜáX]»vM&“M:5<<œNéÔ^ëßvx@­ùTe Ý0û©ÃB5€×SPPõÅE¬üºðó°Ç úøøtm¯õo»ýh¹¦Ÿ:Óï¼èŸ9ÖC¬ ÐÍlm¨çÓéïĽ{÷®®®njj¢£û÷ï6ŒÞ$‰†zöìÙÔÔÔÄÄĤ¤$:€˜?~{÷ÊÈÊÊ:yòä²eË×­['•JÍfÓ‡Vh…¶º¥þËöìÙ“"—Ëé­¹¹™Åbµ7t¢£±ªª*ú­L&c0ôÄóÓh¯ÿfûfšhvx=<<ô]}üøñãÇé•!Žéê§f»¼×Oó Ô*žrðŸÑåð*ÁµÃÝ+3©.üë–¦G¥ÕjSRRärù™3gž|øÐ°¶É“' …¤¤¤´´4‘H¤V«ŒZœ;w®››ÛÚµk/\¸Ða…´×VwÕßaY[[ÛE‹Õ××'''{zzÒSží |>Ó¦Mmmm±±±¾¾¾b±øé¬Ùþ›í›ÙD³ÃË`0Ö¬Yãääôã?¾ûî»vvvtXÙáXÑûÈápvíÚtøðá®íu—?†ŸŠç0øðš£$‰D"±œ)##£ÃEÐô%ÎÎÎ/ìMFŸþñNø¢:õD«ŒŒŒ_~ùŶ÷ É3æ¼\ë•u:]MM “É´òh/È“äòËÕÙß»eíÒ.”ݼûÿèû`XóGaË_INWUUåêêjt!šF£innær¹Fùèçh˜­­¾¾ž^'ZWWÇápè;pQ*•<O¿¾Ör…´×VwÕßaÙ¦¦&ƒaggg”ÞÞÐYPWWÇf³»}RÓ´ÿfûf6Ñtxe2™³³³Ío¿ýöñÇOš4iÓ¦MVŽ}\ìíí àwm¯»ö 4úT<‡Á€WƒÙsh{'Öyùk7¬WÖh4iiigΜ¡O3Z­¶GgΜyGgÛ¶m`ÿþý*ÕÚÚª¿Ój×jèZ[f?^ t9(\¸pa]]!„Ãá >|ñâÅÞÞÞȱhoO[ZZÒÒÒN:¥Ñh´Z-—Ë ™7ožåg <å°t/[æü犢ÜÜÜLÓY,–ÙèÁr¨¿ ŠÇãµ—ÇèzµNŔִÕ]õwX¶½ßóÛ: , ×Ó0í¿Ù¾™M4Þ˜˜©T*ªªªúõëg4kÞá8›^§Øµ½îÚ'°½«$ŸÝàÀë©b夤¤ŒŒŒyóæs¹ÜòòòÒÒÒso»ðx§çù€¨gý4šP(\¿~ý¯¿þºÿ~µZ÷ü„…=ýâ‹/¾ùæ›E‹½ÿþû­­­_|ñErrrssó_þò——åKÕÒªÅOx)ÄÇÇ—––J¥RúR?èæX¹²²233ÓÃÃcõêÕôßÂ<==õ7!²ð¥ReMžðððAƒmذ²jÕªÞ½{oÞ¼™´ÿˆ&ÃÇ;™>wêy> ÊôÁZFmeggÿôÓO111ýû÷'„|ùå—mmm+V¬0¬¤Ãgk™ekk+  pìØ1ýê@³U>ÆL¥R566ÒÏôjoØ­|®˜é¨êûV]]ýí·ß²ÙìÐÐPúw’ˆˆˆï¿ÿþèÑ£óæÍsppèpl÷íÛ×á¸=óX¹ ±2¼¸\îÈ‘#Gމ¡hÏÓN‘–••étºÑ£G›.£¡tûöí•+WŠD¢Ó§Oë—.H¥ÒüüüôôtŸÒÒÒ˜˜˜ÌÌLooïÂÂÂììlëóTTTÐ÷x¢óë#?©TZXXxäÈ‘Q£FŸ>}ZŸ.“ÉÈÿ{îÔÏ?ÿ<{öìÈÈHzý€¨èèèk×®ÑSž~~~<Íf> J_ƒ…½3Ûº¡äääÄÆÆ._¾œ®Ù¨­ÁƒWTTüðÄÇÿë_ÿòóó3¬~¶–J¥ŠŽŽ¦(jûöíZ­U!šN§“Ëå©©©Ož<™:uª…ªâââ¤Ré’%K!¹¹¹ú6™öö*épO ûVZZªÕjGŒ¡Ÿ¼ïÑãÿkïÞ£š8óÿ?á.!! ("*k­Ú® ˆ(O•Ò‹tK½¬±QÖV7õéþÜ =-m¥V»¶´nÛŠ–ÇKÑ‚–ëµ¥rQB   HBòûcúÍ7ßdfH¸©ð~þÐÉ\žç3Cæa2³J¥ª««3§¶=Ömp²²þç¹¹³Y~ çÄ›Àc¨¯×•©› M¿ CzB‰}*Š9ó0¡¢IÏtÜ)2ðD¦UÓµŒ¶dggW\\üæ›ož:uÊÝÝÝÏÏϨ=yE«¢¢"**ŠòÊ+¯¬X±‚iU€v3&æ+ÆRÕ{÷î‘ÿyì«Þøñã«««õ·Û³×¶Çº FVÖüo¡ Ï–¾øü\ÚÙ Ï–Î ¡¾^W=z4!ä×_5}Ét¥®®®––êUj*.—«¤Šz ¾!sæaB;D“QÛ ÿú¯Õj333W­ZµbÅ ‰Dž {ìûÖ©µœœœÒÒÒÖ¯__]]mº~{{û   úúúŠŠŠ'NDDDÍ òê7ÞÈËË3 ³ñãǧ¤¤p¹\êF¦U1 cÆ„v%æôÔhBnÞ¼i8ñ?þпÔcm{¬Û`dånáωS%¦óœ8Ub4ÞŒ†`Vöññ±±±©ªªjnn6zi€Æ¯2¢Ñh!mmm¦£$°0wŠ *,,,??òäɆ3÷×Q†‚‚‚¾úꫨ¨¨ÊÊÊŒŒ ÚmQ7H|öÙg­­­¡¡¡¦!?ü3/ :::Κ5kùòå•••GŽaZ•é0fìegj9=ÕûË_þÂårËËË»ºº¨)r¹¼±±Q Œ;ÖÌÚ²×m¨»µF?Ç ÏÎp¬ð¼é¬ãz÷Ýw{|6êFÑhqó1²2 °gŸ}öñiŒ¿¿?êfnV~t_ÔKÏÌ3g¶„¸%øý†px +Žgoñ/uXX˜———~öÍ›7···ñŽnÃÒ¥K[[[ !<ïÙgŸŠŠ¢†‘Ÿ[4Úo R-\°`Á{ï½GM9räÈ—_~éëëûùçŸ?nGÔÒ¥Kmll:d4½  ÀÒ¸ƒÃ£_vÇð¶x<ÈÊ0½øâ‹Úm¸Qk,¾[ÚÚÚZ¥Réÿ«Ñh¬­­©x!‰>ùä“´´´ï¿ÿ~Æ ¾¾¾2™Œ’““C}[ˆËå¶µµ™®süøññññ|ðu#„µµ5í‚·oß&„øúúšÙTڕжӜµÍ;·¤¤äÛo¿mjjš5kÖ×_méVh'jµÚ¯¿þúâÅ‹MMMZ­–áèêÕ«„Ócf=)ÔJÌ/ד~x°ìY@@ˆ4~üxBHMM\.'„øøøPmóöö¾víZKK‹››!ÄÍÍÍÕÕ• ÙTFìKû‡çÁ€¬ CA—åahÔ¨QTŒ¨­­}æ™g¨—‚‚‚¦M›vìØ±œœœŒŒŒÝ»wSÉ#""bÍš5,ëtttœ5kÖòå˳²²Ž9I»à•+W!TÊÑjµ*•ÊpˆGFCikkÓg5¦­›¶“šÎ~å,((ÈÆÆ&++köìÙvvvúémÅtbqqñáÇW¯^½xñâÍ›7K¥RBÈ„ ! „¶<ÈÊ0¨5ZöÓEâããCCCOŸ>uèС°°°eË–Bººº²²²¢££—,YâááKáóùÉÉÉB¡pÛ¶mÑÑÑú瘲³³‹‹‹S«Õ;vìàñx¦ ÚÚÚ._¾¼½½}Ïž=ÞÞÞÔu2JDD!dïÞ½áááúD»uÚvBÂÃÃ===7lØpúôi¦¾õÖ[ëÖ­ 4œhþVh'>÷Üs>>>»wïÎÍÍ R*•»ví²²²úç?ÿ)~þùç×_ÝÎÎŽŠqÕ“¥\Còð`Ú³TTÍÏÏ߸q£F£‰'„¸¸¸P«Ö¬Y“šš ‰Ø>6ô¹ýÃíà¶8b±X,³ÏTXX‰;_L¿’é™y/.z­‡eO~O;ˆ±N§khhððð0ú½Z­V©T|>ßhþû÷ïs8'''Koº`gg§•••ÝÊ•+u:ÝôWþlllhŸleº¦v* ¡PH]‡ë{Si·B;±½½ºÙ´µµ•ÇãÙÚÚ655¹¹¹Y[[߸qcãÆóæÍÛºuk/ê©/—¥ÝyBÓM,]ºÔÕÕuß¾} …ÂÙÙÙ¨I­­­ŽŽŽfÞ`ÐïíªÀ?‡2X_ýû›¸_`h½œü¾—Ÿ›9OOOÓé\.—6v˜Æ 3™.èàà@;'õå-3WÂÔN—^ÓÌ­ÐN¤²!Dÿä»ääd©TêêêÚÐÐ0vìXë¤Õ“©\Cõð`ÚÓÎÕÜýÞþ!|ð [ÈÊCíÁ'È»ï¾;„Ÿc•žž~ëÖ-©T:uêTêÛZ8}útìè> n]ÆÁðá»}ÈÊÈÊ}‡û•†µö’’û¥¥¨ ÕÕÕJ¥’v"î\Ap0²2üé~iiÃöí¨ —¬LÈ­cǘ&Ž‹‘•†‚C‡¡Ð?Ñ¡º^`‚¬ ð䉌ŒD ¿TWTPWÔ\CB\æÏGA`80ºC’ŸoóÇÈÊCœ€ ³g‰PŽŸ««™²2žƒ@ו‡‘ôÌ<Œx].§ξp¹¼63oÈ ‡€¬ KMX"€¡êކ[§NBžŸã?"n‰‹‹ nôÐÃ=ð'üÀ®+À@9ùK Š¡E³&"+À“JÃpÈÊ`.3oÒÀaÈèϬ|íÚ5[[Û)S¦ vÛØ±c§M›vðàA''§÷Þ{ï÷ß?xð »»{BBµ‰Dòé§ŸVUU3F$Q×ùëëë÷îÝ[^^ÎãñBBBbbb¨Ïqqq“&MJLL$„¼óÎ;£FJJJ:|øpUU•V«Ý´iÓÔ©S ›š=cÆ j¢9í1l?ÃyÊËËsss¯_¿Îãñbbb.\ÈÔ©ÆÆÆÏ?ÿü÷ßçp8AAA›6mbê¦H$ …¡¡¡™™™<O$Mš4‰RYYùñÇËd²®®.ýgGÓ6p8œ˜˜˜„„„ßÿݨ }÷@©18?x6ÓKìÌ?™¥CÚÓ¥¥§W–ô) ƒ‚‚²³³9ÎÚµkçÌ™ÃÔ0jæ9sæ|óÍ7~ø¡J¥2í{~0Í3,2ê{bÊ=VXßàÌÌÌ .$%%M˜0rìØ±šššÍ›7÷XŠgžy¦ªª*99yüøñ„/¿ü²»»ûÿø‡Q{ŒgLûÔü®é÷µ‹‹ !ÄÛÛۢô??1H¥RýíR©´¬¬¬  `êÔ©·nÝJNN.**zê©§®_¿~þüyBˆR©‹Åmmm[¶láp8)))Z­V­V‹Åâ›7o®]»6((èèÑ£ú‹ÿwîÜ‘Ëåú•ß½{—( ccc=<< £P(***&Nœhf{ŒÚoN÷ìÙSWW—ššOm©S‰‰‰—.]z饗֯_ÿÔSO±tS*•^¿~ý›o¾ñó󫬬Ýßß_ÒÒÒìííU*ÕÙ³g%Imm-SÃlll222\\\˜NÍì]6Ê3çÎcÚi/X²S~0³Â”€€@pöìÙØØØªªª»wï>÷Üs,kЗB©T~õÕWÅÅÅo¾ùæ©S§ÜÝÝýüüzi÷é½{÷,íÚŽ;ø|þ{ï½Çáp,:JðNwww.—kee5nÜ8.—ËãñŒ²lNNÎo¼‘——ÇårÛÚÚ !>>>ÔÑàííÝÕÕÕÒÒÒ»,kQ{,ÅápD"‘““SZZÚúõë«««Ù;eø7önº¹¹¹ººRGÕ‹«W¯BLŸæAÛýK¦è;µF«Öüy­Ž ÊŽÿHM4|ɵµµJ¥ÒÿW£ÑX[[[t25]§ééÒÒÓ+!¤¥¥å®ŽŽýúu—)u AMM KÃFŒAý}ŸåÔÜã¹›=#±ô‚ S~0³Â^Uµ±™?þÝ»w¯_¿~úôéY³f999™S {{û   úúúŠŠŠ'NDDDô".2íSK»VUUUZZ6ÏÁè/nnn„ˆˆˆ5kÖè'RtCCõߦ¦&+++gggý¯!¤­­Íð÷6BFM‘J¥×…   iÓ¦;v,'''##c÷îÝ,Ò„%„PG9S7M1‚BÝ‚¢ÕjU*•~O›¶ÒÞÞ~ÉúzE îIDATÿþ}ýåý¨ëÿ¦á¯é¢ËdžFÕØØØÙÙI%¼ÚÚÚgžyÆ¢“©9,=½BV¯^Ýãjëëë©k^TÞè±a´§fsfÐç™^T€6 1åK׿`Á‚üüü¢¢¢K—.mذÁü5<ÿüóÅÅÅŸ}öYkkkhhh/6¦}ji×Ö¯_¯ÿ£EÙ7gΜ) Ïœ9ÓÔÔTZZZ__OÝèSZZZSSS\\,“ÉfÏžMu~ܸq·oß.**Úºukw÷ÿÞ åëë«P(~ûí7µZmT\__ߺººj¿R©,**zøðáâÅ‹ù|¾££c***jnn¾~ý:K7iM›6ÍÖÖ–ú»CJJJ{{;K!T¯Mï 臬ܭíêþ3ï;rŠú¯áé"~~~Z­6++K.—çååutt<ýôÓLÍi˜¥§WvEEE7nܸté’§§§›››9 c:5÷8ƒaž±´LYˆ)?Xºþ)S¦Œ3æÌ™3ÝÝÝæ¯aæÌ™|>ÿæÍ›/¿ürïvÓ>µ´k*•ªµµÕèbëãž•ù|~rr²P(ܶm[tttFFÆÝ»w]\\¨(¼fÍšÔÔÔ€€‘HDÍO]ºß»woxx¸á‘îéé¹aÆӧOmbéÒ¥/^¬©‘軺º²²²¢££—,YâááËÞ)·cÇŽÈÈÈýû÷³t“–­­íòåËÛÛÛ÷ìÙãííM}fbj!äàÁƒ“&MzöÙgñ†ýŽºÑb÷Á¢Ý‹ o½`¹#>>>44ôôéÓQQQ‡ [¶l™E'Ssféé•ÇËÏÏ߸q£F£‰7³aL§æg0Ì3–V€) 1å‡^TxÁ‚:nþüùÔ3(Ì\ƒ­­mpp°µµ5uWq/0íSK»VSSsàÀ[·nõ¢ ±X,‹Ùg*,,ŒŒŒT(ñ+wÿþ}‡ãääd8±µµÕÑÑÑè#ˆR©´±±¡}Ô¶B¡ …¦7kûí·¿üò˶mÛêýB­V©T|>ßœN) {{{ön2éìì´²²¢ÕÇÒ†K—.eff¦§§›¶*=3/5a5ÞåÀPurò­> „ø$%}Í›š°šåŒŸž™÷â¢×zˆ '¿×q}ò—šE³þ|&•N§khhððð0úÆ›E'SsXtz¥µtéRj$…BáììlÔàÆÔ£g0Ê3U€) 1凾TØü5$$$‚÷ß¿G)í>íu× KʹիŽ#„Œ‹ÇãWÿþæ£ ™öH …¦õr¦ýØA;ýõ×_×Ô\.—öW‘¶S¦¤í&ÃÍÒ.—K”úEáÉï{· ‡Ã1|>UïN¦æ°èôÊŽ6`ôØ0¦õ8ƒÑæ,ªSbÊ}©°™k(,,¼zõê®]»ú¾#h÷é€vMÏfÈÿJÏ›7oX½…áÖ 8ú ÆC[bb"u³ô…‡‡ÇG}ô¤Œfƒ çä/5O`«G5©"[þXáÿä^Fde(Fw… +ÃcM¡P¤gæ¡ çuáòB!g/\&¡cQdåa*!n‰‹‹ …†ª;n:Ay~Ž¿/ÎÈÊÃÙ=øž\J¥Rÿœ&ŒX¡´z]Y§Óµ´´<|øÐÍÍåùvðDh/)A`x²-/ïϬ¬V«sssóòò¨áR´Z­³³s^^/¿1¦Ñhh‡âèeÀÐýÒÒû¥¥¨ C6½z‰ÑîÝ» _}õÕèèh>Ÿ/‘Hz7¾6!D$Éd²ÜÜÜA^ /1š^}}}QQÑ„ Ö­[G9îííííí­uïÞ½ååå</$$$&&†öF$ …ÂÐÐÐÌÌL'‰&Mštøð᪪*­V»iÓ¦©S§J$’O?ý´ªªj̘1"‘hÊ”)æ/‹} Ð ü¹sNJŨ gÕÕÕÓ¦MS*•ü¹sûš•kjjt:¿¿?” ©Õj±XÜÙÙ¹víÚªªª£GªÕêuëÖB¤Ri]]T*õóó;yòäÑ£G·lÙxüøq¥Rëáá¡T*Åb±““Ó–-[öïߟ’’ràÀ+++s–Å>èAp° 8u€áìFa¡od$ís`,~µ;;;Ó—ÊÊÊäryHHHXXØ;ï¼Ãçó ´Z-õ*‡ÃÙ¾};u‘¸²²’âåååèèhkkìââRVVÖÒÒ2þüÉ“'ÊåòÚÚZ3—Å>€~gqV=z4!ä×_5}©±±‘âããC¥[ooï®®®––êU777WWWBˆƒƒƒN§3]\&“BrrrÞxã¼¼<.—ÛÖÖfæ²ýÎâ{0|||lllªªªš››GŽiøg¨ÿ655YYY9;;³¯PŸ}ÝÜÜ!kÖ¬1³1ÈÍ0p,¾®}šÏç''' …ÂmÛ¶EGGgddܽ{×Ìe±# ßqÄb±¸§'ÅFš|7P§ÓÉd2NçîînôLŒÖÖVGGGö+ʆ …P(Ô¯äþýûÇÉÉ©ËX„6ëB^ýû›½ôŽÃḻ»Ó¾$ -Z•у,ø|~¯—è/V(-‹¯+§gæ¡jð¤Kˆ[ÒÿY™’š°Å€'×ÿKÿÒÅÅ…v¬>C¸†s.*#+Àpdæ}ÅÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊ€¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ ÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊ€¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ €¬ ÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊÈÊC›M/–Q(é™y¨ +ÿ qK\\\RV£v€¬lL¡P p0ô³rIII3UWWWTT(•JÔ †¦¬[w«âÿ>>9ïÂNMIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/03_aggregate_graph_with_new_cols.png0000644000175000017500000006043012032647170031333 0ustar ebourgebourg‰PNG  IHDR™÷—nñsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ8¦µö IDATxÚìÝ{\TuþÇñï9Âp¿ˆŽäeK/‰×ňmAªŸ«f¥ëf¹¥«-––hµ®²"©%Y˜kYnmÚÚºm^²4璉xaÃRD$¹ g~›&p`(Ä/øz>øãœß™ùÎ÷{æÍ™ùeðàÁ¡¡¡ÐLìÙ³Ç!44ôùçŸg, q°õKÞZß2žáÌ'ÆXïÎz=]Ú®.žÄ à—g¹%o­¯š©‰tÖëéo½xœ]}bA2‡#€_žåZL«ArO]fÖ4w*Ašw–#È@³à`g3›Ïm˜>áÍ“ªBÓºM}oùïÚ+¿àñÌæCˆÍÞ$F.Ú3PQšàÚäÌæƒÿóÜ~Uv£_OÚîWõM¿Ã½"zÚúg{6ÉÓpSQírIÇ»?µæómÛ¶mß>G,\vÈl¶•Ö^:tèÐWõ5veàŒ/¾øâ‹MäòÊêrç?zyÌs{EôÔw¼ñ¯Ië_‰K3l<;ƒ}ÍrÎBÜÞÑ(„ŠÒþw¯Ï°ŽyožT5-rÑö˜âð²a³·¨ª*¶Ì&â· ÞkÙµ4ÐÏËY¶§NÍzó͓֧ûôÓw[TUëÖ­ûñãÇ÷ïé’N^=Ù('÷Ž}¼üŒª޽zMQü‡ÆÏÖçÖæŠ×ÿ&þô¯!GÆ^=w'„‰Ý1¾¯bi3ú±¬ kNÔ>§w~ËÔ¤kÕà×Píi¤(CG UÝ2{ØôŸûÙ «ÃË&$ïþÔ§º‹M³—V”1ÛEjš´îTï´Þ½fîRÕ-;ÅœÏ×<Õ]Oúððw;{‹ªF.ü|ûœpKK³ùв IÇÅÈ…Ÿ¾mÛ¶F9¹g6LÛ.4-ªo¤n~ýàÍì¥ÿ(åí|ýµ?uÔ´½ûéܪn>,^x=6JUO|ôñ—Ö·=,^xýµ?uǬëÐYN1pÆ #5U=ùæÄáÖŸŸÜ³Iq{ÇoBd9×ð&jZäÄQFaìx»bÓžCf³Ù|îL–дnýÅÕúϳßìéÎ5Õg 5-jÚ“wþ¬ä×Á¿V›‘‘íEŸ!!š&¶ï¶d¼«u½½Uš(ËéqîóÏ×<ÕM«‘¦TuËœás¶¨ª8~&§qzõ³tZ(ÊÀ˜÷¦vÓ4õ䛇õPãG#³ùàû£Ã¦Œ^rÍÜe>ÿQÂè°iͶ|ÒdÏrBEi?jù¢HMû1¶ùwì.4-²?ôXOÚÿîõ/¾X© !6Ͷ¹þJCžQpßaBU7§©7æåìH\þ½è1êµE!šf³]×ξVdÈrfó¡W§ýûꉸÃ{¶¨ªèÞÑ_EiÞ]U·¬ÙkÕÜ¿cw!DÖ™ÜkîÚ“¯®~=oÏá«_œ«Ñ`@Ì¢HMÓûðëõxpzï¿Ùp6÷BˆÛÛùÕþ§¬óyBÙ½_UE§·p2d9E3G,6,""bøœ-Z·§Þ[>ª½¢!Úÿîõ…‘ÚÉ7'FDDèߣS”ö£æLí.Žë߬;,ŒÖ»vžIÓÓÚ–9Ã÷„.Šüñ$˜~yƒˆˆˆáÃçlݧιڇ_Ii7ú¹õ/“º·ŽÏO*Jð£s£UuóëcÞÍé*Tuóëc–füøl'Þ3-~ó5¾\×òüóÏ?ÿüóu__îÒ/Bp|ä¢/f ü7·çBῪ{wMðUÿüjñ´ ŽHõJHHp³g–ëË !´îSß‹Àl€…¤YNQÎøâ‹ÒŸ¢ÿ(e<Ç€¦ÅÚúÐü(}Ã'ö ÿCË~’“í/'Wýó+GöÈܽTé>1uÇ»-ûy^¿µOQðm‘ìq÷ðh‡æuZñ@V±³Ùl6ÿãÿBüö·¿5›Í÷Þ{¯â­·Þ²npþüùvíÚYÿ*éÞ½»“““ÂÎzqåÊ•–f³9==ÝÅÅÅúV3f̰ó-÷ùÓo·¾}kõ–u

ùäëð£'///EQô|%„ÐCT½wXRRòôÓO»ººÚ³ TCçÎ…»wï®wÜj<—zûc rB=$›L&ëo¿ý6G# nd9ÀOÖ®][oÝÙÙYqñâEëèbݸÞºÖ­[[ïêYèüùóÖ_ ppp°ç§L™²|ùò•+WVTTÔ{òªŽªaøðáBˆ3f\³ÿu<—õçÈ‘#B£Ñh]¼f Ë®!;;{×®]úâû:ýݾ}ûNŸ>mpž~úéK—.iš–’’Rcþz\Óÿýßÿ !{ì1ý[j ºCý´áwÜ¡ªêk¯½¦õ…õ3oÖ EÖñ@5ÄÄĸ¸¸¤¥¥õë×ïwÞÑä­E/íìåž³³³…GÕ¿”X{5êÁ:–ÝâÅ‹…“&MªQ?~¼bÑ¢EúnZZš££cíæäädg½XãQ²²²jœÝ²´©÷õ'uAAA–›ßyç5î­ŽªmãÆnnn×üZÇs©£?ú†u!Dûöí-ç ¯y‡uwÀ:–€›Úûï¿/„Г›5}MKËÇ,ûôé³mÛ¶ÐÐPGGG//¯éÓ§ë_îÒ? iOƒkºí¶Û8ð»ßý®Æì¹ÃþóŸAAAŽŽŽÑÑÑÛ¶m{õÕWõ+!Ö¬YsçwZ¾W÷Õ6räÈŒŒŒ3fÜqÇNNN­ZµòððˆŽŽž7o^·ª£?ºÝ»w7ÎÉÉÉÍÍmüøñ°,-€XÇÐ`£G~àÆŒãì윓“3{öì÷ß?::ú“O>±³A£?b³ù½ËŠ”€_DzŽ%YÐ`®®®W®\±®¸¸¸¤¤¤X.ÅVoƒFD²àfËr|ÆÐ`;wîüýïß¶m[''§Ö­[?þðáÃÖ±ªÞþˆÍ…““SÏ[ð˰ä1 Á‚ƒƒƒƒƒMƒFÄæ¢¼¼œãÐ(8/d9Y@–²€,W^^1zôcÎÎþŠâ«W²³s‚C²³sì¯@Ë&×µÂÿú×ÅîÏ<3ÅRyòÉgïºk€¦i_}•ž”ô²h‘,× —+Ëõê5d÷î­[{[*:õ=yò€ª*]»Ÿ>fgZv–“ë3–™™Y3gþÅյÇ~¬Wrsóœ CnnžýhÙ¤ê¦i“&=:iÒ£ãÆM~è¡å>OŸ>ýŸÿü§k×®nnnÌ7€æ¥¤¤DQ”ÐÐP///y³\ëÖ^ƒß)„ÈÏ¿ WŒF¿òò “Éd4úÙ_Ñ)ŠÂÄh’““ÃÂÂäÍr#Gÿä“­~~¾½zu×+ÑÑ#Ö®ÝPUUaEg6›…›7o9rdbbbPPG€æåÈ‘#111µëre¹y󞋈]TTüñÇÿÐ+sçÎ BìÚµÑþŠ5ý£•AAA5R,ÈO?G%{–ëÔ©CfæAëŠÑè—•u¸¡hÙT†Èr²€,d9Y`†p}öÍg'rOÈø ²•߆þ‰ 帆Çwn<²QÂŽ9;:“å2ã3–@–åd9 ËÈr²´Lr]_NQ|-Ûfsþ5+ÙÙ9C‡ŽRUuÛ¶:tð¿fÐ"e,̰l÷œÓóš•þû/·¤´²ô«ÿx®ðœ¢W»ÕO¬ÖÌÚo?q¾è<à Ë]z`«£÷JllŒ¦iññ‰II/_³h©ôÀVc÷VŸ[Ÿ|^¯ÄŽŒþþô6îm¦EL›³~Žâ©ð§V%¯Ruò=“üwchšßg,·nÝñðã&L³yó6[ÀMå鈧ºXßîê×õèÙ£»Oî¾·û½z%4 tKú–OÒ> ëÆXÈr׋³³ÿý÷ÏÉɵUÉÍÍsvv2 ¹¹y¶*€–*m~Ú¿ÃÏÓÏR hPVQvæâ}7§0§çþAƒ\]ôН‡o…©¢ªºÊ××å® ³9ÿÂ…Ì  žcÇ>n«¸iõœÓspÜà¹'^yäKñ¹ÈçÞÚõ–ewñ–Å+ÿ°òÁ~š4#hÁ¤û¾œ»»Û‚± ËmUŒF¿òò “Éd4úÙªèE±l§§§3Ù ¡¼¼†}¤¢¬²lù¶åOÜý„¾ÛëÖ^•Õ•g ÎZì<¾sÀ¼Ž­ûuê§Wò/ç;98µR[å_ηÿ4MKIIa‚7œ­,ã a_׬YØÅV%:zÄÚµªªª¢¢"lUtf³Y‘œœÆ×$@:Ÿæ}*rv“ú=p*ÿ”¾ýð]oLÛX£¾ÌÉ®Ì]únò‰äÈ H‡V)'ÍTUå@z®‘=Ë)Н££cß¾w¬[·ÊVeîÜ¡¡QBˆ]»6ÚªZ¤Œ…¦jÓñÜã3×ÍÔ+¡]Cã7Æ×hS­Uï8¶cÎGsôÊÊ+ßò}!Äïÿþ{ÆÐbÈ•åê½ ÂhôËÊ:\wÐ"Õ¸ ",>¬Þ6ù—óG,ÁèZ•!²€, ËY@–å€, ËÈr@–åd9 ËÈr²@Ò,§(¾–½’’cZ6Ù:d6ç[ïÆÅ½£iZ||bRÒËvV€,w#mݺ#1q¡ª*óç/±¿-›tß—svö¿ÿþñ99¹únnnž³³“Á`ÈÍͳ¿-›\çåÌæü’’Ò„„ׯŽ}|ïÞ-¿òÞE±l§§§3Ù ¡¼céîî¶`AlBÂr}×hô+/¯0™LF£Ÿý•“¡Y‘œœÆq²ù4ïS‘+cÇTUå@z®iYN±fͺÀÀ.úvtôˆµk7TUUEEEØ_€–M®,§(¾ŽŽŽ}ûÞ±nÝ*½2wîŒÐÐ(!Ä®]í¯j°ñ=@–kœ·ù5*F£_VÖá†VÖÒÒ ü€œ}ë9¡Œ àPhvüJ{ÿ··¼ª\ÂŽµõhÔ!ˆ Y¸†ÿýb^±ŒKŠßÝíîW0Ah‘øŒ%åd9@m|_MEV–VQ!aǪÎ39å6dFE•Ÿ<)aÇr=,ÄøÝ$8¸íŠwöë·EßíÛ×gÑ¢>¥¥ÕúÓ—¹¹W„cÇvš>½[I‰i᣻wÿ „HM´ÜÜrC@–4UUfÎìa]™5«Ç3Ï|åãã4eJÀK/¥ !ŒF—{ïÝÞ«—÷¢E}FŒØaÉoþþ®Ï>Û1àºÿ¾f5<òHç}ûò­+]ºxddíÝ›Ï=~z%1ñDU•öõ×—¼¼ Ö-§N xõÕãŒ!d9´4!]B2fXvGÜ1"%6åÀK†õ¦W2fX~ôJŸŽ}Þ}â]†h^^†è°re¦uñܹ²¾}}z÷övvne]=ºãúõ§-»]»z\¹bÊÎ.c¸ÞøŒ%šöŠ:;j¶uå¯ÿ÷×±oŒUuõã«·glBôœÓSq«Ï­ÏG>¯·y:âé· dô€¦1ujÀ;ï|[VVm]|õÕ¯¿>pëÖsÕÕš¥8p`›ßgŸýÊRyæ™îqqGCšâ­5C€¦4að„=ÿÛc])¾RìéâiÒL§òOYןŽxzñ§‹õíIoObè€&3fLǸ¸>úB&–åLRRòþlÑ¢Œsç®è•NÜÆÿͬY©ÕÕf½Ò³§We¥–“ÃI9šçåÐt¼]½GõõðЇÿúKqéÖ¥ï>ñîѳGc>ˆ±Ú”U”¹x†Ašže ÊÔÔHëå(UU™4éö={®~nîÜ^ûÛѪ*Í*vÚ¼9‡ ip^MgzÄôU)«Ê*ö7ûðîáO¬~bÇñ„ùÜ[»ÞbÄy¤¦F~ùå}]ºxX¾G7`@›ÿü',55Òrînð`ß½{ó+nÒ,·}{Š¢øZvÅ×ò£W²³s‚C²³slU §qÁãÆ&è+šXÖ5ÑkÄ‘3Gþ±÷“Ã&ë•^·öª¬®<[p–C‹ç9lØ@³Ù²;Ðl¶ü\}vvîòÑGÊË­›Õ¸Õõc}R®_¿-|:kVªå{týúm±ü蕈ˆ/JKML+MC®ÏXjšóB¢Ùü³¿òÆÅ½£iZ||bRÒË׬@Nú¢&z³l_)îß¹¿âRé%½òð]oLÛÈpµ;ï¼pù‚Œ9ÊÅsÄ#ndTµã²eÖ…CŠ"„pºí¶Ž¯¼¢WÚ=ÿ|ɾ}ߎ]Ç­YîÆ[¶lå}÷Ý›‘q¢Ž6[·îHL\¨ªÊüùKlUÐŒ,Ü´0ñÑÄj­zî¿çê•Ю¡ñã­ÛXNåY š‘·w½v:MÂŽÝvËm76˵‹‰)ÚºÕ¥gÍ£ÚÁ‚33gêÛ>cÆœ2Äž[€›DŸ±¼x±`õêæÍ{®FÝÙÙÿþûÇçää껹¹yÎÎNƒ!77ÏV’³ŽdŸ}óYèßBÃâÃöd^]ß2,>¬¤¢¤F{ý‡¡C‹áЦMÛI“ræÍ«QwíÝ[+)©øöÛ«/€–,é_VæóÐCuÜ ÜŒo'äéÊ‹/.Šý³»»›uÑlÎ/))MHxmìØÇ÷îÝÒ ;TŲžžÎd_'rv¬   %%… ºáŠŠŠäìXYYY£!Îeevþ…ÌÁ‚Üøx­¤¤F½ÃÒ¥ß?ùäOûªš¿zuþêÕ·¯[WðᇶnU¯’ÒRi׺*..–³cš¦ñ­,#Q–[±â+Þ?~ŠBQ|-_“sww[° 6!a¹¾k4ú•—W˜L&£ÑÏVåÇhB$''‡‡‡………q\Nû„”iÎÇLJI—Áª«D¡Œsuumô#äW×rûZÞ2eÊ-S¦ÜöþûBˆf³þM9·µŠŠŠS?]k±úÒ¥’½{…޾¾¶new77qEÒ#ÄÓÓSH¹ø¥ªª¼†d`¶±æ™ƒL]¼úËÜ:ÈéÖ¬YØEߎޱv톪ªª¨¨[œ%†YG²[¦N½øÞ{ÖÍ 7mò¾ÿþª¼¼²£GmÝ Üœd¿V¸¢ø:::öí{Ǻu«ôÊܹ3BC£„»vm´U€æÈë¾ûÎüùÏÖ•œyóºmÛÖÊËëÛd|€ìYÎú¤\tB£Ñ/+ëpÝ•_ø¸&Ó•Œ 9çɱ];G??ŽW å±>½vÄh¬ñ¯•§OP÷­Yîfgºp!£O9ûÖþ¥—üÿúWæ€NeH%¤Kˆ~EA]ÆÂ Ë^qrpZöȲ´ùi–JŸŽ}Þ}â]†ÜT8/×<œ¹ìzô³sröÍÆ²:À/¡*êì¨Ù5Š5.-øxØãigÒb>ˆ±TžŽxzàm=@–ƒtöæ¶þ öˆœ}óM˜C£™0xžÿíéâ×¥Ž6#z˜ð÷ Ö•IoO²>•p3à3–dáíê=ªÿ¨7¶¿Q£ž6?íß¿áçyuùŸÎm;ÏŠœõÕ_¿úmïß2h€,7Øôˆé«RV•U–Y{Îé98nð‰Ü¯<òŠ^QeÃá O¬~bÖog1h€,7ظàq côOKZf²¬²lù¶å½ü{é»ÅWŠÓN§¥NkíÖšA7-¾/@–5N2fÔXïä~œÊ?¥o§œL ï~±äâÿòþÇ €›çå~ÏaÃþ|Ç÷À;­Ô®¨CÆÂŒôéßõðÌu3õÊÛߘ9ë o,ܸÐÒFüüT@‹Çy¹_„ÕŽË–Õ]ñ‹ó¸çžº+j°>)Wãâ\á¹È¥‘¶ÚÜ,q„!øÅÚÅÄmÝZwåäС5nU»d¹&âЦMÛI“ræÍ«£r·MMýéÄEjjäáÿ]½:¤KÅò£WÆŽí´{÷ðO?½wÈ[˜_@öHÂü2þ äÆÇk%%uTnX@W•™3{XWúõÛ"„èÔÉí½÷ß}÷çÖE £ÑåÞ{·÷êå½hQŸ#v0ÅY®ºeÊ”[¦L¹íý÷…ÍæCŠR»r£úöÈ#÷íË¿ýv÷õöí]¼`ëV‰‰'„_}ÉËËÀüÚr,8Ø\Y)aǼGŽô_°€  Ë¡–¨f‰mµ+7„——á:Lœ¸w„ßX×SS#33‹§LùÒR9pà¾.,\xô‡Ê-ÅÑ£;®_šùµ¥,=Ý\Q!aÇ\{÷fvn*Ò}_nûöEñµìfgç†dgçØ_‘‡~}ë«Ô®4®©SÞyçÛ²²êõ~ý¶üóŸß/^Üϲ{ï½Û23‹úþÔ·mBB|—-;Á @rr—Ó4-&æëJ\Ü+±±1š¦ÅÇ'&%½lg¥)Õ>g]©û_¯‡1c:ŽÓ1.®"55ÒúKq7ž}ñÅ;,»eeÕII™_~ù[}·S'·ñã3sfjuµ™ÿÍΡâöÏÙ%gß´ÁÕL@ ÏrË–­¼ï¾{32~:/´uëŽÄÄ…ªªÌŸ¿ÄþÊÍÌÞj9!Dtô­ß_b«2wn¯¿ýíhU•Æ6G¥Õ†¬Ó%rö­ShÑYîâłի?8p`ëÒ¥I–bnnž³³“¾a5èøî»’—^J·TL&ó‰E³g§é•Úüç?a5!²\=^|qQlìŸÝÝÝë«O3¦§§×ß¾ ÀEÖy**,âÖÝÄ:ÕÎföTìT)庎Bˆ‚‚‚”””ƽOMS¤|²ÅÅÅҾʔ––ÊÙ±²²²F?BœËÊä¼jgIi©´×•öèÕ4­Ñ~[YF¢,·bÅ;+V¼3~ü!„¢øšÍùB£Ñ¯¼¼Âd2~z3{*:³Ù,„HNN «»UçÏ‘uþ¼¼í›ÓÐ IDAT½…¬' ƒ2ÍùøøÔ;é uXUåü¼ §§§5͹¹¹‰+2vÌÕÕµÑo\]Ë¥œwYgáêÑ›/cÇTUmô#€_ÀlcÝDU¦.æë?ú¶^ŒŽ±ví†>øwTT„ý@–7©Ã†Y¯Yê¸s§uƒfó“©ûîÝ?¾e¬]j“ýúrsçÎ BìÚµÑþ Uí¸l™uÁ?.Îãž{¬+úº¦Î=¾ü2ÕÛûš yd9ËI9!„Ñè—•uØú_í©2hS´u«KÏž–ÊÉ¡C¯yiA§Î‹·o¯»Ȟ倖ð_«M›¶“&»ë®vÏ>[wËfsYzúɈˆ:*.8¸íŠwZ¼ñós^¹2XÓÄ”)óòÊÅkŸêôf½{·ž6-à<ÈäÈ@e€ëÁÁ‚Üøx­¤þk¾R”¼W_íòÑGuTù¿½ªÌœÙú2yr—Õ«³þñS“&u±ä·~ý¶DG'''_]uçO 0  3 @–Z²[¦L¹íý÷õOT4׳øå…5kÜCBê®4¢Gé¼oßÏÖ 4ÈwëÖs›7ç âk]Ÿ:5àÕWëÛO>É9²ÐÒRýGü¸œIÚNœX~âDÝ•Æâåexà+WfþìáÚ:WVjUUZ۶Ζb×®W®˜²³Ë˜M ñ}9 éXNÓYÒ^¹rüøw'Úª4®©SÞyçÛ²²êz[>óL÷¸¸£ÌY¸YŸ”«}‚ΞJã3¦ã˜1ãâú!RS#õuM.\(7TåÂ…«WºîÙÓ«²RËÉá¤Y€,kWZ‚œb×®½ƒƒº{wþ‘¯ÓæÍ9 €´ø¾ñÖ[ßNžÜå±Çn{ûíoõÊàÁ¾{÷þl}ý*Ö×*À Äy9à&e9)'„¸p¡"::Ùú_#"¾¨£=n8ÎËY@–ÔÆ÷值>:ôѾúœ}[1q…§‹'s€,PSnaî‘3Gä웩ÚĸøŒ%å~Eñuph7dÈÈ””}–ŠåG¯dgç†dgçØª@Ë&×g,Íæ|!DffÖw/,̲.ZÄŽ£iZ||bRÒË׬Y®©}ÿý™aÃî¶õ¯[·îHL\¨ªÊüùKlU€,פÅ7(¨ç¶mÿ¶Tœý‡_±b±¿¿Q‘››çìì¤oè jW€,×¤Ìæü5kÖýXJÊ'únIIiBÂkcÇ>¾wï–ÆBŲžž^û‚Y穨°Pˆ[åì[ee¥œ+((HIIiÜûtÑ4EÊ'[\\,í«Lii©œ+++kô#ŬLÎ¥JJK¥]ëJÚ£WÓ´F?Bð œ>}ZÚ¾íÛ·ÏÃɃ9d¦™µ+¦+röÍ©•“ƒjW³•edüŒåĉã&O~Ʋëîî¶`AlBÂr}×hô+/¯0™LF£Ÿ­Ê±Ð,„HNN «ûq«ÎŸ?"ëQèåí-d=éh0„”iÎÇǧÞIo¨Ãªj–r<==…¬iÎÍÍMHùêêêÚèGÈ7®®åR΂»¬³põèÍ—±cªª6ú‚_àëʯÅ){g,̨֪ÓϤ¿¶íµCßB898%ŒM 38zÎé©·±´×+Bˆ.!oMz˲k§Aƒù¸û0G€Ìfœöö49û¶dÜ’¡½‡ÚÓRÏ5Í#Ë­Y³.0°‹­Jtôˆµk7TUUEEEت€›Æ:·í¼n꺻æß%„x<ìñ´3i1ÄÔnöSnWÔÙQ³=ÍNòœƒC;“é¼âÑGŸúðÃ?þø#GoÄÞèèÞ=`Íš×-GGǾ}ïX·n•^™;wFhh”b×®¶*à¦Õ¾uûßзGô1áïên?að„=ÿÛÓů C %g9OO!DpðˆE‹^\³æuoïÛKJóSì5.?pÍŠÑè—•u¸î ¸9e,Ì8™{ò‰ÕOè»Ûvž9+²wä ÿ~áÓ¯?Õ‹ióÓö}»oþÇóóŠó¼]½GõõðЇÿúF@óÒ°ï¯\¹ÔÁ¡Ýĉ…‡‡:88TVV1‚@=çô\³wÍ«¼ªï*вáð†'V?1ë·³, Ç >‘{â•G^BL˜¾*eUYeC …g¹1cî7™ÎO:Iß­¬<Ç©ü7õ¿}:öÑ·‹¯§NK;ÖÚ­µ¥AYeÙòmË{ù÷BŒ —06A_ÅzYŸCZ’ú=p*ÿêÚ—)'S»‡_,¹ø¿¼ÿ]³e”Œ… ]ÇšG–sph§oTWW·jÕJßpttäÔ„~bíÔ§b?ŠÕ+olã­Çßòpò˜þþtKSµéxîñ™ëf2bnŠ,§/_9î•WvBlßž²iÓçŒ Díkç ÏE.¬»MÝu7•Ú—©µ.AÙ¿sÿ%ã–”V–þqõÏž»f›¦Ñ°ïËíØ±»¨¨XÓ4MÓn¹Å÷õ×ßf¾´ =çôìýBï7¼¸|Âò«y©Ö%(cGÆNúâ-‹§EL³Õ¦i4ìûr©©;¢¢ÎÉ9/„hÝÚkíÚ¿3ßZëËTÖ¾eW¿®GÏU5al‚­62f¹=º}÷]*³  E²¾Lå5/A™S˜Ó¿sͬ¹8ºØj#c–¿XéW_™.\°cÕŽÎÙmzK:h¥&ŽM©çœžô{àÕG^¸jâ5/A¹xËâ•X¹9}³I3‰z™Ê†e¹ 6û„eWUUÖ±ÀN9/¼P´u«„+éôlë…rZŸqÅ9šØSÿ;ÿÿæ !ÆÓ¯B)¬®\²óøÎó8¶rìשŸ­62f¹qãþXVvÆ`00ÁZ¤z/A©*êä{&ïÊÜ%nèe*–å–,ùë믿ýÌ3S˜`-LíËT^³MµV½ãØŽ9͹±½mX–{æ™…Ï=÷׫y”ÏXh)ì¹¥<—©lX–Ó¯¸±XÇÀ¯ròdqU•&aÇÎ]!Ë]õÕWé>øûÜÜcÆôÉÍíWXØzÔ¨ë×·ÔÔÈÇ»zuHÿþ>zeìØN»wÿôÓ{‡ ¹ÅV%55ÒòÃüÀ¯×°ór‡o1b쟱l÷¿ÿ}ÙèRß  žÛ¶ý[ßÍÍÍsvvÒ7ì¯ÐÜR!„s@@/¿LõöB8uîœÖ¶­{pðíëÖñ÷¿f¥óªU(ªÚí‹/.mØpúÖ¯ß!D§Nnï½7øî»?B.÷Þ»½W/ïE‹úŒ±ãšýVþþ®Ï>Ûù€¦Îr]OŸN»®2›ó׬Y7zôc))ŸüêX¨X¶ÓÓÓëo_Pà"ë< q«œ}«¬¬”³c))){Ÿ.š¦Hùd‹‹‹¥}•)--•³ceee~„8—•©R>Ù’ÒR¡Jz„H{ôjšÖèGˆSAA«†Þ¤sçâíÛõíìçžB”ìßïЦ­ŠéÒ%‡Ö­M/–Ÿ8Ñ€WòŠŠ_ðtÚ·w9xð‚¾˜xBñõ×—¼¼ ¶*º©S^}õx~Iûú¶oß>'ÞMBˆòòr9;VRR"í÷åŽ;æzÉÕž–¶²ŒŒëXNœ8nòägôm£Ñ¯¼¼Âd2~öW~Œ…f!DrrrxxxPPPØŸQ±¥êüù#²þ÷ðòö²žt4 BÊ4çããSï¤7ÔaU5K9 žžžBÖ4çææ&¤\AÊÕÕµÑo\]åüUæ.ë,\=zóe옪ª~„dúø4(— 4›ËÒÓOFDX}Ÿzꇤ$[•³Ï=¸sgé¡CߎÝ€Wr'§†>—ÔÔÈÌÌâ)S~ö Ñ£;®_ºŽJ×®W®˜²³°@‚———(”ôè4h»oâ!Ä’%ÉBȸö‰»»»´ƒÖ£G°Þvý¢ÑsͯÍrí¬/1Wc·±¬Y³.0°‹¾=bíÚ UUUQQöWh)JÛ‰»|ôщS¥gx¸×ðáßZ}®FÅûþûOFD¸ß2mÚ¹¿þõúõ­_¿-ÑÑ·.^Üï‰'\MžÛ„„ø>ûìW?eÑZ•gžéw”™€FѰ,g08~òÉÖÈÈaBˆO>Ùj086noÅWѽ{Àš5¯ë•¹sg„†F !víÚh€–áš5W­Ò·üž}öÛQ£Ì&“­ŠÏ˜1§&L(Ù¿@yùuÍrBˆϾøâúv§NnãÇÿfæÌÔêj³­JÏž^••šœ«–@ËÏrûö}ýh^^¾Âß¿]jêŽÆí~MkF£_VÖá†VhÚNœhùæ[ç•+¿òI³Õ·”kWL—.y "„¨Ê¿î]޾õûïKôí¹s{ýíoG­¯\»2fL§Í›s˜S©©‘šfþúëÂ7Þ8ùÕWBˆÞ½[O›ðÇ?´´ñós^¹2XÓÄ”)óòÊ…cÇvš>½[I‰i᣻wÿÀ068ËõéÓ+;;Qàzh6 !®?þÝĉzÅãž{î8yRßÖW¹¬]9óôÓ]6l0›Lß=öØu}&„øî»’—^ºú®`À€6ÿùÏÕ‚êëUÖ® ì»xñ1f@íµpÿô§€ÚX·™<¹ËêÕYªªLšÔ%>þ¨¸Öê¸p`Ð!Eù•‚õë Ö¯oš÷a ­DD|Á´°°^ ÷É'Ö¸òä A¾/¿|Ìlüc—øx!l¯ŽK–³×Ço™4éÏÅÅ—õ%O®ÓÚ'j(?q¢ì›o$휹mƒš_s-\kmÛ:WVjú†u½öz¹d9{7ù‡NøøtÕw}í×té¿ÿ=;{¶¤QnÄç j_{-\{Ô^÷&×°kǺººž;w^QYYyðàW;ÞÊh¨ÏöîÝÚÖ¿^¸Pn0¨®®­.\¸zéV}uÜY³~Z ;/wöì×ýúÝ«ªª»{çûœ8±ŸÐPÖkáÖ¶k×÷Ý×ÞÁAݽûꪼµWÇEòœ«« ù À/V{-\½’šiY6é­·¾}ç!Äã_ýfíÕqÁ:–šŽ=+ß^¸P\w4ìûríôG}ÊÁ¡Ý¦MŸ3‚ {–óôôBxâ‰ñåågǛ̀ìYnåÊ¥í&N|(<<ÔÁÁ¡²²Šٳܘ1÷›Lç§N¤ïVVžcÙÜ2uj¿ââ ìlï‘#õŠÏ˜1}rsû¶5J¯ 4›-?¶*kŸ-SçÎimۺ߾nÝ!DçU«2 PTµÛ_\Ú°AovHQjܰvÍ>Ë í++ÏYÖ>Ñ©ªÊ©9@6ÙÏ='„(Ù¿ß¡M½bºtÉ¡ukÓÅ‹å'N0>-ƒ½Ÿ±Ô3›ÉtÞú‡ HË÷©§~HJÒ·Ï>÷\àοyûí¬qã, ”—wý䃿4û,×4’’V{zþ¦C‡ ËÕÅ×òsõo Ù9Á!ÙÙ9¶*ÀMÎ3<ÜkøpýÂûþûOFD\úïo™6M¯R”Ô¶mËÒÓoÿ׿lUвœƒC»Ú?CûÆíÍ÷ßg_¸pòƒV>ùä³–¢Ùœ¯ÿè»qq¯ÄÆÆÌš5->>ÑV¸™9ø=ûì·£G›M&½â3fLÉþýyË–µµ4ÓJJr^|ÑmàÀ:*–½ß—3™Î7Ao^~ù/Bˆ/Øj³uëŽÄÄ…ªªÌŸ¿ÄV¸™u^¹òû'Ÿ4WVþô~þÒ%!C„UùùÖ-ÛNœXãtµ+hÞY®)½ùæ»–Ë!œý‡_±b±¿¿Q‘››çìì¤oè jW€›™Ç=÷Üqò¤¾­/Myæé§»lØ`6™¾{ì1½>Ðl6WU•¥¥Y¾AW»‚–åj¬`©»ëXîܹçóÏ“7lxWß5›óKJJ^;öñ½{·4讫UÓÓÓëo_Pà"ë< q«œ}«´ú{T RRR÷>]4MÎez‹‹‹¥}•)--•³ceee~„8—•©R>Ù’ÒR¡Jz„H{ôjšÖèGˆSAA+9_É+*¤} )**’¶oûöíópòàÝ$šîû©S»×¾´@Áúõë××Ýæ_ ¢¢BHù›¦¤¤DxJ:¡ÇŽs½äjOK[YF®ÏXfff-]š´aû?uÌÝÝmÁ‚Ø„„åú®ÑèW^^a2™ŒF?[•s Y‘œœV÷£W?DÖÿº^ÞÞBÖ“ŽƒAH™æ|||êô†:¬ªr^8ÓÓÓSÈšæÜÜÜÄ;æêêÚèGÈ7®®åR΂»¬³põèÍ—±cªª6ú’éã#g.189IûæÕËËKJÚ·Aƒù¸û0Ðdr8+kßœœœ„¨’ñ7 »»´Ú£G°Þvý¢1Û¸t»\Ÿ±|òÉgW®\j0Ôü‹Ãš5ë»èÛÑÑ#Ö®ÝPUUa«-›\× ONÞÛ­Û]?¦Ï|!„¢ø:::öí{Ǻu«ôúܹ3BC£„»vm´U²œV× ¿®½±\x ŽŠÑè—•u¸î ´l*CÍŽ½çåÅ·U«š‹o]u,õ²÷¼Ü÷ß§r×àÁwff4™Îë?9:ËuêÔaçÎ?ýôÃ÷Þû—·÷í‘‘ãNŸÎfø@ê,§suuùË_ff |ûí>hY®¸øòÓOǺ»wÚ¿ÿPfæA†n{×>9uêôƒNhß¾]RÒâ×^‹gà d¹€€`!ıc™ú†Žu,@ê,w½¯°× ²€, ËY@–4¿,—”´ÚÓó7:mÚô¹^ÉÎÎ  ÉÎα¿-›ƒT½ùþûì N<˜:nÜ䜜o„qq¯ÄÆÆhšŸ˜”ô² Ë5—_þ‹"$dÀÅ‹zeëÖ‰‰ UU™?‰ý Ë5µ7ß|wêÔIúvnnž³³“¾aÈrMjçÎ=Ÿž¼aû¿þ®E±l§§§×ß¾ ÀEÖy**,âV9ûVYY)gÇ RRR÷>]4M‘òÉKû*SZZ*gÇÊÊÊýq.+“sE©’ÒRi׺’öèÕ4­Ñ§‚‚Vr¾’WTHûRTT$mßöíÛçáäÁ»I4Ý÷S§ ²ö­¢¢BÎUKJJ„§¤ƒvìØ1×K®ö´´•eäÊr™™YK—&mØð®ƒÃÕŽ~åå&“Éhô³¿¢3›ÍBˆäääððð   °°°º½êüù#²þ÷ðòö²žt4 BÊ4çããSï¤7ÔaU5K9 žžžBÖ4çææ&®ÈØ1WW×F?B¾qu-—rÜe…«Go¾ŒSUµÑL9s‰ÁÉIÚ7¯^^^¢PÒ¾ 4ÈÇ݇€&“{àÀYYûæää$D•Œ¿ÝÝ¥Ð=z„õ¶ëžkdÏrO>ùìÊ•K †Ÿþâ=bíÚ UUUQQöW e“+Ë%'ïíÖí®Óg¾bîÜ¡¡QBˆ]»6êu{*@–k:z~³f4úeenhZ6•!²€, ËY@–å€, ËÈr@–åd9 ËÈr€›$Ëíß(<üA늢øZ~ôJvvN@@p``HvvŽ­ ´lRõæ…â““÷Ö(šÍùÖ»qq¯ÄÆÆhšŸ˜”ôò5+@–k:_|±ÁrþÍ–­[w$&.TUeþü%¶*в5ƒïË9;ûßÿøœœ\}777ÏÙÙÉ`0äææÙª@Ëæ yÿÌæü’’Ò„„ׯŽ}|ïÞ- º­¢(–íôôôúÛ¸È:E……BÜ*gß*++åìXAAAJJJãÞ§‹¦)R>Ùââbiÿ—––ÊÙ±²²²F?BœËÊäü YIi©´»“öèÕ4­Ñ§‚‚Vr¾’WTHûRTT$mßöíÛçáäÁ»I4Ý÷S§ ²ö­¢¢BγD%%%ÂSÒA;vì˜ë%W{ZÚÊ2òµîîn Ä&$,×wF¿òò “Éd4úÙªü˜ÍBˆäääððð   °°°º¨êüù#²‚—··õ¤£Á`R¦9Ÿz'½¡«ªYÊYðôô²¦9777qEÆŽ¹ºº6úò«k¹œ/¤²ÎÂÕ£7_ÆŽ©ªÚèGH¦œ¹Äàä$íÛ///Q(iß äãîCÀ@“É=pବ}srr¢JÊ(á.í„öèÑ#¬·]¿hô\Ó,³œbÍšu]ôíèèk×n¨ªªŠŠŠ°U€–M®,§/|¢(¾–µ+Å×Ñѱoß;Ö­[¥WæÎ%„صk£­ åšNË\³b4úee®»-›ÊY@–å€, ËÈr@–åd9 ËÈr²åd9ÀM’åöï?þ u%;;' 800$;;Çþ ´lRõæ…â““÷ZWââ^‰Ñ4->>1)ée;+@–k:_|±AQ|­+[·îHL\¨ªÊüùKì¯YîFÊÍÍsvvÒ7ì¯Y®¹RŲžž^û‚YŸKQa¡·ÊÙ·ÊÊJ9;VPP’’Ò¸÷é¢iŠ”O¶¸¸XÚÿ‰¥¥¥rv¬¬¬¬Ñç²29W”*)-•v­+i^MÓýq*(h%ç+yE…´¯!EEEÒömß¾}N¼›DÓ½q?uÊ kß***ä\U±¤¤DxJ:hÇŽs½äjOK[YFö,g4ú•—W˜L&£ÑÏþŠÎl6 !’““ÃÂÂÂÂê~¬ªóçÈ:^ÞÞBÖ“ŽƒAH™æ|||êô†:¬ªf)gÁÓÓSÈšæÜÜÜÄ;æêêÚèGÈ7®®åR΂»¬³põèÍ—±cªª6ú’éã#g.189IûNÀËËKJÚ·Aƒù¸û0Ðdr8+kßœœœ„¨’ñ7 »»´Ú£G°Þvý¢ÑsMóËrÑÑ#Ö®ÝPUUaZ6¹²œ¾ð‰¢øšÍWÿH;wîŒÐÐ(!Ä®]í¯Y®éX"œ…Ñè—•u¸¡hÙT†Èr²€,d9Y@–²€, ËY@–å€, ËnÚ,§(¾–½’’c«-›ƒü]4›ó­wãâ^‰Ñ4->>1)éåkV€,'—­[w$&.TUeþü%¶*в5ƒïË9;ûßÿøœœ\}777ÏÙÙÉ`0äææÙª@Ë&ûy9³9¿¤¤4!áµ±cß»wKƒn«(Še;==½þö.²ŽCQa¡·ÊÙ·ÊÊJ9;VPP’’Ò¸÷é¢iŠ”O¶¸¸XÚÿÅ¥¥¥rv¬¬¬¬Ñç²29ÿBVRZ*íßî¤=z5Mkô#Ä©  •œ¯äÒ¾†IÛ·}ûöy8yðnM÷ÆýÔ)ƒ¬}«¨¨ó,QII‰ð”tÐŽ;æzÉÕž–¶²L3øŒ¥»»Û‚± Ëõ]£Ñ¯¼¼Âd2~¶*?æ@³"999<<<(((,,¬îª:þˆ¬ƒàåí-d=éh0„”iÎÇǧÞIo¨Ãªj–r<==…¬iÎÍÍM\‘±c®®®~„|ãêZ.ç ©¬³põèÍ—±cªª6ú’éã#g.189Iû6ÀËËKJÚ·Aƒù¸û0n¬ƒY?üòC9û3<¦c›Žx‡¹œ•u"œœœ„¨’2J¸K{ôöèÑ#¬·]¿hô\Ó,³œbÍšu]ôfã‚ IDATíèèk×n¨ªªŠŠŠ°UÀÍà쥳Ÿ}ó™œ}{lÈcL®+Ù³œ¢ø:::öí{Ǻu«ôÊܹ3BC£„»vm´U²ÜTã‚B£Ñ/+ëpÝ ËົôñÇ¥ÊÙ·[.ŠÂd9ÔTüÙg?¼ù¦œ}ûäÖ?ȹúW¡WGÈrÀµ­~甦ɘæzG_fvpÓR ˲ é’±0òۿsÿ³wnzfS{ïözåá»þò/_îx~GX`ò Á;`E5Ûº;2vúûÓoY<-bš^iߺýà¸Á³>œ5ïÁyŒÈrÀ7að„=ÿÛc]éê×õèÙ£»Oî¾·û½zeé§K«ª«Žœ9âíê͈,Ü`Þ®Þ£úzcûÖŜœþûu rqt±®?üкƒë4ȉu,p™1}Uʪ²Ê2ëââ-‹WþaåæôÍ&Íd)ÞyÛƒ»~úý§4ȉórÍ›ç°aÍ?]0ÀСÙ™wœ8aèÐáê>gç.}4 ¼ÜºÙMk\𸄱 úÂ'–åOvß9`Þ€¸OâÎ]:§W:·íü‡!ˆùgLµVÍ ANœ—hÎTµã²eÖ…ö/¼¯¨ª16öôÔ©BˆvÏ?_²oß·£G7q×RS#5Íüõ×…o¼qò«¯ „ÆçžëáäÔjÞ¼¯wì8¯·±´ï×oKôªçœžúFÆÂ ˶BUÔÉ÷LÞ•¹Kß÷à¼yÏ«ª®âY¯]LLÑÖ­.=Ê$^÷ÝwæÏ6kZï—^:-„Âg̘C†4}ßôlÖ©“Û{ï ¾ûîÏ…/¾xÇ£îQUåÍ7ƒõ,×d®n 3ªµêÇvÌùhŽ^xÛÀÍÏl®ÿ²ã\›6m'M:v×]íž}ÖRt4µòr}C¯8tX²Äçᇿ{챂?lâN¶oïrðà}»¸¸ÊÓÓ±°°êûïKnøèY'´Úiü²®ÿ rããµ’úr‘ªæ¯^¿zõíëÖ5q–KMÌÌ,ž2åK}71ñÄßÿ~WFFá¬Yi–6ÜwàÀ…… þðC9s صOš«[¦L¹íý÷õM,ëšTåæªÎΪ»{Un®^©¾t©dïÞ’½{}}›¸‡ýúmùç?¿_¼¸Ÿ¾vË”)_&'ÿ0n\'Kƒ{ïÝ–™YœÐ— nº,—’ÃŒ€›Ç!EÑôm½X¸q£Ï÷yä‘ÂÍW¿îU¸i“÷ý÷»—=ÚôܸñlïÞ­õíaÃŒ_}郾{ì±Û- Êʪ“’2{öä’Ü@ô„ÏXÆÅ½£iZ||bRÒËL*¸™ûÛߺïÙ#„8q÷Ýz%gÞ¼nÛ¶µòòúöÁ›¾?ÑÑ·Z¾wùrUß¾>BˆK—*mµpe¹­[w$&.TUeþü%Ì(¸ YNÊ !ªrs¿¾ývë­<}ú›€€¦ï•~½ï¾+yé¥t½òòËÇ–.íW]mþË_¾¶´1™Ì'NÍžÆ<7]–ËÍÍsvvÒ7˜QIÔ¾ØÀ¶m¹Û¶åÖÝ€”¾áW¼µ<ø6æû †öÿßÞ½ÇE]æ f~‹LË 3‚b“/SÀð².G¥Ì=˜¦­ ÞH ÍÌ8««™åí¨¬ÍòE[/1É[ »„„Š­/Í5ãy9ˆš‘JEÇqÏ¿vüÅÀ0x>ï¯×ÎLãÌo¿<|Ÿçû{žßó³X*””rrrFŒñî»ïöîÝ›ß7€ÖåÛo¿}å•W¾üòËAƒ !òO_BÌIŠo órÌækV«5  Ó/êTÅbƒÙ³gÓ´m¡–1bØ–-™×¯_>|¨òõ7n!ÊÊÊ>ûì³nݺÝwß}ü¾eƒþòË/‰h! …€Zh!÷¾Ÿ~úIZïõ¶°Æ²²²êw¿.„øç??7øe7I¥RÝø÷-hZh! …€ZH+ÒÖÖXž:u_*€öCMÚ!Nu€Zh! …€B- –PËA)+k»N¢ÑøËOí€I’ž ÀIº ‡€4Zh!Ôr¸Cbc§ž=[¨øóð$&pÂb© H# …€B-‡»O«ÕVTœBX,–üü‚  ÎÄ€+|}0™®*_©­ý©cÇû‰ Ôr¸ÊË5A­V{{wMN^XR’GLà `·jÕâþý‡;Wi³Ùl6Û¹s•>úÛ•+F@ -änÑ‚vE«í@ý×±°v'Æ^½jºxñ²Â×÷åË_{þùqD¤ÐB@ ¡–ÜÓ’’&%%M"Ü#XcÙ¾Œ—¤ÑøÛ˜¶†s´¤ÐB@ ¹g1/×¾ddd›Íå ¿w¸„… °S©ü<<<꽨V«i$ €ZÈݼ\û’“³iÞ¼¥ÄޏQœ;{¶02²ÿÀ}OœÈ·ZÏË?t±PËáÙ·ï׬YËK8òö¾ŠNté¸gOÖŽݰ!ÝÇ'8::¶´´Œ°@ÉÞ¹¨T~öt4pl'òùºœœ/ˆ È!ÔrpÉ[o­©­-åœ:­^ýß]]WT ­¶Ão̹téÔÀý‚ƒ#”äžå©§;öµüøÿøÛŒ“‰ ”äûRöë7lÊ”³¹<6v*19„Z.Y¾üµY³^%p4qb¬ÕzÞÓÓÓ^êSíÃQMÍ•Y³æ{{wÉË;pâD>£Ý»÷]¾\#߇ð7¿ñ[³&•˜@éÃßÖhü'N|nÈßi4‹å:19ÄmìѾ̻XñÑGŸü\ʳoì¹@ãOñ'NŸ.5j¼^òÖ{ï­ hLaáîáÃãÎ;/„ðõ}`Ë–ˆ ”bbFÆÄŒ´?¥ß9„Z®²ZÏ4È~½ êÞ½Ÿ¢¸ø„ü@Æù 8êÑã‘3g ‰rµ€;Dy½#u8¢ÈÐ"²²¶'&¾\SsEÎ*œCšƒëåÚ—‚‚C½åm-ºt +.>NL ãz9t4¸bc§ž={sÖE’<‰ È!ÔrpÉ A#?ÿ|“ÅRa±T¤§¯}üñ'‰ ”ìÅ›Ù|-%eÁð1RVÖv.Ä>yËM,@Gƒ[¥Õj+*Î !,K~~APPgbrµ\uíÚ5µZ­V«m6Ñ€££G:tè\Pp¨°p7'ÔAGƒf*/?ö>i÷Õ<[¡ZºC¡s“v¢|Êõr ‡¸½OÍêhéká|˜ÎÎhIäÄõrnÊÊÚ®Ó…Ø3i½³§€$yfgçZ­V«Õš™™#IžÄÊ1:;[ ‡ÜÑê—°‹záB‰Nb¸(}ýõŽ#ÆUUU ! ÿÂÂÝÄÀ­ =Yc ´æåÚ} PÓp“V«­¨8/„°X,ùùAA‰ ”BC{–•²X*,–Š3g Æb‚z˜Þ‡sÊ)—U«ûíbrˆÛ˜—kï8¥òòÃááQjµÚÛ»kDDhII1’$éIpŽé}¸nÚ´ >>ÁdC¨åÐÔoº¡- Ø·õhµ¨ßà›‰Ã…4rsz¿¨èÓûp{Ø«ÕêÌÌõÄäj9Àm·`Ár!ÄìÙ¯ÙÇaœPG=LïÃ9N"ƒB-‡[æëû€ÉtU«í`¥¶ö§Ž¹¯ ~!33gìØ›S.ŒÔÁ ·Šé}ä;†}/Ú‹U«÷ï?ìܹJ›Íf³ÙΫ|ôÑß®\¹È@)6všÉô/6Ü&‡{k4þ—.aÅÅlj @-‡&Lœ;cFbxx”—Wg/¯ÎááQ‹Í6m‘A½šÍšTâ€Æ°½š”™™#ÓåIÒ( 4òóÏ7ÉÛᦧ¯}üñ'‰ È!nce;’”4))iq€ÉÉ …sç.–Ÿ²Æõ°½š”0Ýdú—$I„¹víš|K$›ÍF4@iæåܤ¼ík,áˆ;¢I›7Èô>œ8xpר±S$I/IúøøNžü†˜€â6æåÚÍošÛh6¶ƒóŽÆþ˜é}4Æh )--" ‡PËhaìc çØ^ NpÆ9„Z·E]]ã.ŒÔQ¼%‹Ô·kè©X(T[û“O0#xÀm\/×^xxxÔ»Š«¡àˆ},áÛ‹Á•‘º“§hç´Ú@ùä²ü£Ó…lØBX@q?\„ ½Tíjêv4},áÛ‹¡I’ä™ý¤";;—ÍN¡d2•I’žžäj9ÜšÆò&{¢@‰ÆçäíÅ’“§ 4æë¯wŒ1®ªªZa0øî&&pe@C¨å·§·`{1¸&4´gYÙ!â€ÆdemOL|¹¦æŠ|ösÊ ‡4ëîÜTPp(0°·|C—.aÅÅlj dŽÜrÍ-7ÄÆN={¶Ðþ”t@s0/à¦AƒF~õÕ¶^½z!(züñ'M¦2ÂÀòuPõ6*`òõhµÚŠŠóB‹ÅRTt$(¨319„ZnbOÔsíÚ5¹UØl6¢ú}Æ/WC±8 Jòx‹&çÊˇ‡G©Õjoﮡܲäj94÷Ï<¸kذ±••UBƒÁÿäÉoˆ ”Ø^ @3iµ¨ßj9-Ïh )--"h Û‹ÁÙB1OËœ-\»}û§Ää÷°¾®½ÿÍ®“·³X*,–Š3g ÆbÀEï¼ó——A’ô¡¡ƒ…¹¹»µÚÀ ’‰ @-‡&<ôP¸¼9¡ò‡°Ànÿþo4ÿþS1tèIÒkµ¼…Èp²‘H’ž°@6oÞÒ={²Ìæò—^šªÓ…ää|a2• Ø—È€â6U؉¬}¿ßÃ÷‹¶­´´lèÐ1'Nä+_”÷ "8Bøø9òÏÓ§K§OŸ³sgz` áÀ¢AƒF²%”¸1€æ ÓåŒa³Ù$IOöÜ–úŠbNR<×˵]ºÖ+äŸ@áòåšÀ@C` áر!DDD˜ÅrÈ@)6vê… %:ÝÏK+Ùû·4‚”k‚äÇì8rH³‚C!<<<änÕþ@pË 8àÆPÜÆp –ƒ›,˘1‰_}•_SsEѱãýƒüÛßÖ1X],\Ç¡´ü`”Y€ZÎét!éé©éé©^^¿B˜LWwíÚ«Ó…\ºtŠà€..âÆPÜ;˜“i7¿iµÚjµÚl6B ¥DGǸÒäj9¸ïÒ¥Sëת×÷”$½$é;wîµqc“r\Ä¡à6v¶@¹MXcÙnªvµ:3s=qàžyó–îÝ»µ_¿>¼E§ ‰ÿ÷«@ý!ECK²Y§ W†(ä7ÿ|6t±h’Íf0 B­VOžWSseÍš•Ä@‹`Ö –@‹ÛK£ñ×hü%I_ï1 óõ}Àdºª|¥¶ö§Žï'2°ç_9„B-€.-Æj=ïøC©¥U«÷ï?ìܹJ›Íf³ÙΫ|ôÑß®\¹È ‡Ü®ñ!4ç,W2@6qbìÕ«æðð¨‹/ !|}X¾üµçŸGd “g]´ÚöW˜u9„ZÍÂÕP ‹ÐR’’&%%M"h<ë²cÇ_: !*+«ú÷ÿ=³. ‡4k$OÚ'³ùZJÊ:ƒá1–HAÙŲ°p›Lœ;cFbxx”—Wg/¯ÎááQ‹Í6m‘ÜÆ¼\»sôè±1cÿ.11¾°p7½‹ea€f )Xp‹¦0ërµÜQYY5wî⌌­]»ee}Ò³gdjêjºX4ë´ –Ãí¥×÷LHˆ¹p¡„+ ´ Öiî®®Îqó[µZM#ÁσNf]@iiœOm/¾ÿþ¸Á ×÷4' pìb nµ…Ðl äááÁ+C¨åÐò|P·råÂÚÚÒœœÍ“'Ϫ««›:õ•êêˆ  e†,¸…Sò¬K½IÒCÜÆËv§[·‡òówZ­ÖŒŒìð𨲲CÄ‚… h w­@“K¬¬ƒLžu! ‡´dLÚi¯ÑÄÅ=K!‡z], ÐîZ ¹ƒNf]€Òt±hw­ÐL̺Ôrèbqwp× î)œ‰·s¨Á´?rµànáöpWÞ ‡PËê´¹Á(³.øeÒøË_Öûø«T~Ãc‡gA#èbÑ$îZ&©T~Be›¡‘ I´Ô3}úœcǾ6CŠ‹‡‡G™ÍçˆI£ã4B€.Mâ®hÒÁƒ»|}}’’&ÉÍCn34ØÙÏÙl¶ÀÀÞ*•_§NVVVÈ"#û§¤¬3™®þáO_¼xÉf³UUUkµZ"C-  ÙÙ¹Zm ——aòä—û]€Z4©OŸÞ?þxÒhì&Iú¬¬í ú¯ÿšqãFõ{ï­èÛ÷)Ùž=Y••U]º„fgáã¼hÑÿœ?ÿD†Z@âã_Ø»7Ûd*‹ˆ2dA=NîZAp 4sæ³¹<##›ú).>1cÆd!ÄsÏb^JK—ί®>n±TX­çkjÎìÝ›-Ia¡–ЫÕÚ§OoµZ=cFâ’%óŒÆÕÕ?îŒ-ÔêM›þÂêJ8Òhüå@ö:5?@- ¹–/máÂòãÈÈþyy;úöJ Àu‹eäÈ.D¯ët!Ï>;Éf³È¼Ô–šäæ`KB‘œ<]ùÔ××çÌ™BÂÀu:]Hzzjzzª—ׯ„&ÓÕ]»öêt!—."8È!·'ÝÍèE˜¼…¢1X­VN¢£1̺€B-€.÷TËa}~véÒ©õë?Õë{J’^’ô;÷Ú¸1ƒê°ÓéB’’&UT•WZ–—ž4)V§ !2 ‡¸5–~îbYØ'öìù**jô°aCrsÓƒƒ?}ºô׿ÖåååvëöÁL­Vgf®'pÒB˜u9¤…ƒFÐÅ¢I ÓËËÏŸ?;2òéeË^½q£:%å­~OdÐ$n\³. ‡´|p¹‹3&q„M¦«Boïûž|ò?èbaWUUm0tÊË;¸o_Ž"&fd\Ü4"ÀE̺ÔrèbqwZˆøyþö|½ YƒQ¿2±¸…Þ™pÞňFö8aã¨å@j0 €B-¸[¸kn•Ù|-%eÁðó·È!Ôr€»†CÁuG3tèй àPaán‚&£Ìº€B-€.·µ%p× 8WYY5~ü //Ø1‰YYŸxxx¤¦®îÔÉÈ A̺€B-€.w7†B“ôúžBˆ JJJòŒFælÑ(f]@¡–@‹;Ø[¨Õ™™ë/]:e±TX,?þx2==•°@éûï z}O£q@qñq‚z˜u9„Z],î!ܵv>¨[¹rammiNÎæÉ“gÕÕÕMúJuõD2f]@¡–@ àžÖ­ÛCùù;¯_¯ŒŠŠ " 1ërµºX­€F£‰‹{¶¬ì¡€ŒYC¨åÐÅZ1f]j9t±¸zîZÀ-̺Ôrèbqp× ¨å­ w­€ZÐjp× ¨å­w­€ZÐúp× ¨å­w­€ZЊq× ¨å­w­€Z@-Ôrj9µP˨åÔrj9 –PËîˆï¾ûN¥R=z´u¶J¥Ú»w¯ýiAAJ¥rå_Õ{pìÛ·Ï`0ÆÒÒRù•²²²îÝ»Ʋ²2!ĪU«$IzóÍ7åÿzàÀ¡C‡6xØwþàÔr€{TZZZŸ>}>ùä“Vwäëׯ·?NMM½¥{ãÆ;vœ/¿ürVVÖªU«^ýuù•eË–ÍŸ?Μ9+V¬B,Z´¨¤¤déÒ¥Bˆêêê™3gnÞ¼ù9xµàNS5Äñm7nܸqã¦M›l6›¢W¯^òdQeeehh¨âĉF£±cÇŽ999öONIIñòò²‹··wII‰ü_óòòüüüžþyû×9~Bó[¡ÑhäC­®®®««³¿îøuöCR~‹òë”ǯR©ÒÒÒüüü²³³[äP=½uëVù•ÜÜܸ¸¸ñãÇoÛ¶M~ÅÓÓSa³ÙâããSRRüüüœoc‡zK¡´jBmØ7¿|Ú×á »ví 3¹¹¹ÑÑÑ£Gþûßÿ>{öì­[·>óÌ3Bˆ_|qÆ þþþÆ {úé§åh6›M&“ø÷Ñ?üŸŸ/„xõÕWSRRyä‘uëÖÉonðœ Û¦|ZT4¼Á·ÅÄĬ]»vñâÅ)))111}ôQc_÷ú믧¥¥uêÔÉ~HvŽÇ/‡%%%ƒÁl6;?Ôó{(Ÿ¯(v|O×®]÷íÛ§V«åˆÉu²\ WVV !-Z¼|ùòY³fM˜0¡OŸ>®ÿŠëê­†Ðz©Â†Lü`íûý¾ŸX@[Kñ*•c-WoyÞ¸qãÆ½~ýúÌÌÌ‚‚‚?þñ{öìyâ‰'Þ~ûíÐÐP//¯k×® !<==-‹üÉöÏÙ¿rrrQQÑõë×åµZmmm­Z­¶¿Íñœ¶c-縪P¥RÕÕÕõèÑãèÑ£¡¡¡‡öððhìëÉþÀñøßãäPk9Ç’·iÓ&¹œ“$I>0û!DZZZAAAPPЫ¯¾ºtéÒ?ýéOÊ/R~¬ãºj@k”úŠbNR<órÐ~ÕÔÔdddØ/Íòôô¼xñbŸ>}NŸ>]ZZzöìYy¥¢®®N­nxY~BBÂêÕ«GŽi_øgµZßìäܦV«###G5xðàz^ïë<¤ÆŽ¿Å9²¶¶Öb±ìß¿_~% Àl6[­Ö€€ù•lÙ²%77W^íÙ«W/e-wKnG¨÷ r=´_7nLNN¾ño3gÎÜ´i“bôèÑ/¼ð‚¼ÀR.Eœ\|e³ÙÂÂÂ8 „¸xñ¢¢Gyyy_|ñ…‡‡‡+ŸÐ111Û¶m{î¹çêÕNõ¾®{÷îò!¹rü·ƒÍf[±bEtt´ütĈ[¶lÙ¼yóðáÃ…ÕÕÕ³fÍÚ°aƒüNùÚ9·ëF®”j9@—–––˜˜hš˜˜(ï ùÌ3ÏìܹsôèÑòëï¿ÿþŸÿüçŽ;68sµlÙ²àààwß}7!!Áh4 !–,YòÄOìÞ½[’$W>¡9žzê©7nDFF*_tüº%K– 2Ä>-æüø[œJ¥’$éÈ‘#‹-’_Y°`Á²eËÞ|óÍ !Æ¿fÍy¿“7Þx#88xáÂ…Žâd'ÿßm×Ë@ÛMñ æïØvö™™™o½õV^^^ë:ì¶z¨€6ƒëå í»[E…Ùl JKKkE‡Ý¶ÐöPËZØ¥K—·×˵÷I8?tIDAT€Z@-Ôrj9µP˨åÔr@-¸WiäÿÉ?}…X@kÁ¼´>ª ‡»w îN  µ(=uâÿÎÀçü@iÄIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/12_jms_sending_objects.png0000644000175000017500000022164412032647170027317 0ustar ebourgebourg‰PNG  IHDR(Ö"y {sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ# ½O IDATxÚìÝyXS×Ú8ì• ¨ A@Az© B™´€è+*È XL- §bHADAmqà­Áu,?p¤(ŽÕ Ud! s“ï}Î~ó%!«ís_½z…µ×^S6ìǵVv“ô§z/[ŠÀ˜)xRLêm#O20 ƒáS D€±›”‰‚À à=À /¼^x@àC^/€ù}VÖØØØØØÈ`0444Ç¢Š_~ùåöíÛ“'O ”'CiiiMM “É433{Ç’F'ðzýúõ† Bqqq³fÍB;v,++ !dddtôèQ<§P(\µjÕ›7oBYYY !T[[[\\Œg³²²Ú½{·dEx±!"‘Èd2 V¯^mbb"O;kjj?~Ü××'g†[·neeeÍš5kÈÀkÈ’F'ð’¡´´”Ëåjjjb?¾xñ‹ºDEFFVTThjj.Z´¨¿¿ÿÉ“'2ÊTQQ™={vIIÉ›7oÞ¾}[VVvêÔ):>êý766vvvž8q"\ ø/„Ð;w¼¼¼°×¿þú«ØÑÆÆÆŠŠ „PPP¥¥%BhÍš5@FZZZ»víB¥¤¤œ>}ºµµµ¬¬ÌÔÔtÔû¿páÂ… Âu€ ð244|ùòe~~>x …Âüü|ššìG„‚‚‘H/_¾Ä/„‘(×¾~›Ó§O#„:::B§Núí·ßæÌ™ƒ­{–••%$$ „8 ¬¬,zbuuuRRÒ³gÏ´´´üüüæÌ™#µüŸþùÆ_ý5–rõêÕG"„&L˜Àf³§L™"zJsssbbbQQѬY³¼½½ ðC………)))¯^½RQQ™;wîÆDkñðð8qâÄëׯϜ9ðwó®Ÿj\°`B¨¤¤¤©© !ôüùó¦¦&|‰@ „X,ÖŒ3B)))û÷ïomm•¿üÛ·oc/&Mš„âr¹eeeõõõXbwwwYYYYY™ØüY[[ÛÎ;Ÿ>}ÚÑÑQ^^¾cÇŽêêj©å766–••q8ìÇK—.ÅÆÆ>xðÀÊÊê³Ï>ëïïÇ>\{{{XXØÝ»wy<Þ¯¿þzâÄ Ñ¦†††[XX„K—.íß¿_´–/^|ûí·=êîî†+€ÀkØ>ùäCCC¡PˆEHyyy eþüùbÙ‚ƒƒY,BèÚµkëׯ¿víšìb»ººnݺsîÜ9„ÐìÙ³õôôäoUUU•‹‹Ë… ¢££ÉdòÀÀÀùóçå9ñéÓ§!ssó-[¶|õÕWÇŽ›={¶h†ÊÊÊiÓ¦eeemݺ!TXXØÞÞŽêïïOLLk×®ýç?ÿyèÐ!,{ûö­h«fΜyúôéS§NÁ•@à5ؤ×íÛ·A~~¾………تBHOOïĉØLX{{ûþýû;&£L‡uýúõîînkkë;v`“grš6mÚÿüÏÿH$SSÓÉ“'c“<'Μ9ëKTTTii©d†I“&}õÕWÊÊÊÓ§OG `xûHNúôiMM •Jxõê•è lÛ¶MSSs,>%€ß(l®_°`Á?þøüùóüü|gkk+5“É wrrÚ¿?ÇËÊÊòôô?~¼ÔÌëÖ­SSSÓÑÑ, ØÎ*Œ®®nyy¹œë›‹-ª©©¹råÊ­[·nݺeff¶}ûv555Ñ^H$„ö\cc#ö">>^4]tÆ‹Á`ȹ³ xI‡­6¾|ùòèÑ£ÊÊÊóæÍ“|œÎÌÌlÏž=[¶lAݽ{wÉ’%R³1 {{ûÁ Áöì#„äyª¶Í„ òôEIIiË–-ÎÎÎgÏž-((øí·ßþýïãûîe7nö",,Lô‘`T*.2`Fg[mlmm?¾èlf``•Bd2r†[¶ˆYWW‡êèèHLL”šÏçc5vwwcO²ûd¢lS§NˆˆpssC=zôHÎè[@üõ×_™"( \døO$g¾þþ~ì…d\…þ»Úˆ’ºÎXQQ±wïÞùóçëééµ¶¶^½z!Äd2çÎ;ÜæZXXüòË//_¾Ü²eKMM þÔVÑÀ!T^^¾k×®ùóçß¼y³¿¿_AAaéÒ¥ò”¿sçN…O?ýTUU{¢öyÌ!Q(”€€€¸¸¸û÷ïX[[www—––ÚÛÛ;;;Ãu4¬¯ Â^HÝqõÉ'Ÿ=zt``ÀÈÈHò(‰DjnnÆ¿!dbb„}ÎqXLMMmll ^¾|ioookkŠþûÜ œ““SOOÏÁƒ…Bá¸qã¾ùæ|)P6‹uïÞ½;wî „´µµÝÝÝ×®]+gÛœ•••“’’*+++++‰D¢¶¶¶ŠŠ \dÀ¬\/K–‘ãÌ™3ªªª—.]ªªªÒÕÕ=yòä°>`ˆ<¯¡¡A(jhhÈ ¦­­MIIiÈU¼®®®ööv á–ßÞÞÞÕÕ5‚ñÓÛÚÚ&L˜ uvC±I™”NÎÐ3^ÉÉÿ Ë444¾þúëD]!"‘¨®®®®®>*MǾx{HT*ud{Ûétú»<ñáOÀ_ÕÐWRRÒ›7oÔÔÔ&Nœ[ÅÆ0ðÒÕÕÕÕÕ…‘xGð>> ÀÃÃcÏž=•••X"›ÍÞ¿vvöêÕ«7nÜXUUõË/¿¬Zµ*$$„Ëåbyª««CBBÜÜÜ‹‹‹BwîÜñõõ}ðàœM²¶¶ÆñZZZª®®ŽÅ@ ½½k ‰DRRR’z:@˜5k…B)++Cùúú¾xñ;ôäÉìu[[›Í¶µµ ëêê+dçÎOŸ>ÅBÀµk×ÚÚÚîÝ»?ÊçóÃÃÃãââ°”ÚÚZ??¿… †††â¥mÙ²åÚµkAAAáááp]x!GGG55µÃ‡···‹¦“H¤5kÖ„‡‡?|ø0==K¬««{ðàAvvöôéÓ+**"""rssŒŒŠŠŠ°…¹îîî°°°ÖÖÖððp°oß>@ÐÙÙYSS#Ü ÆÞÞþÞ½{X{²³³œœ°tCCCGGG??¿´´4¡P8ØéàçŸ …3gÎDÕÔÔôôô`‡8¾ˆ™’’²téÒèèè/^H>ÊŸÃáðù|¡PxèСààà«W¯nذ?zøðaSSÓøøø¬¬,l¿WLLŒ­­í¥K—ø|þÍ›7ñBŽ=êåå×%RQQùòË/y<žØ¦¨àà`+++}}}ÂÂB<]YY9666$$„H$’H¤lÙ²!T]]zðàAssóÂ… -,,«ªªsss.\(g“tuu'Ož|óæM@pëÖ-[[[üPddd@@ÀáÇÃÂÂD÷á’““-Ztâĉ;wjkk˨ÅßßáÂ…>”š‡@ „üüüÑÒ¼½½=<zôHƉbSb“&M244üý÷ß,X€'VVV–——cÔ‹/D'–døä“OÊÊʺºº"##E÷±=yòD(¶¶¶Þ¿ßÂÂBê¹}}}$iñâÅ¡ÞÞ^©ÙŒŒŒtuu“““±QÛ-¼Ä¹¹¹a¯,X```päÈ‘ôôtKKËîîîøøxy ¡ÓéL&3::ÚÇÇ'!!áÍ›7ƒÅårÅCCC###E?ºøâÅ‹5kÖ¸¹¹yzzÉuF©–/_ž˜˜èææ6kÖ¬ &àé---Ë–-sww×Ðа²²’znwwwppð’%KÅ=q$)&&æÉ“'ÎÎÎÚ³90vV®—Î%ËÈ‘““ãííÍãñdÔÖÖ†íîjii¡ÑhØ~&9µ··yb“2£¶ûŸ?þÈ‘#ÉÉÉòÌ` ÔÖÖjhh ö,‰Áâ'‰$ÚþŽŽ*•:00ÀçóEw°IÕÚÚJ§Ó‰Ä¡#Ú––eee©Ë‘ø(ìˆ=µÝ?--mÈ`)6)“ÒÉ!VÅxDÂd2‡{î`“C’^¿~}ìØ19× I$’®®îp#¥a!‘H”'šTUU•³¢ >j䫹l6Þ3@à5æx<^lR&¼g€Àklm÷ób±XQÛýá=^cnÈ þ2" ^x¼>Xä¿sçY,\xo`Æ àC ¼„BaSSÓëׯù|> €ü†±ÔØÛÛ›žžž™™Éçó‰D¢@ PUUÍÌü%ßßßO&“áÝÀÇx9r$''ÇÍÍÍÇLJN§WWWWTT|€]b³Ù éééðî࣠¼jkksssuuu¿üòK€Ò×××××ÇþðÃÅÅÅ4ÍÆÆfýúõ X ôÉ'ŸÌ˜1ãìÙ³***ÿüç?Ÿ?~öìYMMÍíÛ·kjjÊ™§ººúðáÃåååZZZl6ÛÄÄ;‘Éd:88$%%Ñh46›=uêÔsçΕ—— __ßéÓ§§§§Ñh´õë×ÛÛÛß¹sçÇ tvv†+ï¼{¼*++…Báœ9s°¨KToooXXXIIɦM›,--322Ž?Žª««{ðàAvvöôéÓ+**"""rssŒŒŠŠŠòóóåÌÓÝÝÖÚÚN öíÛ'°‹ŠŠ’““gÏž]VV–‘‘²°°`2™T*Õ××W[[!ôý÷ß¿~ý:***00Kéì쬩©éêê‚·3^Ø÷$***JzðàAcc£‹‹‹“““££ãÍ›7³³³ƒ‚‚ˆD"BHYY966–D"ååå‘H¤tuuݾ}»ºº/Avž477»¸¸Xœ={¶ªª ›l#111jjjwîÜ)++CéééQ©Ô+++„P(lnnnkkãp8Ÿþ9Ö$GGGÉ`LÉ;㥡¡züø±ä¡úúz„ éëë÷õõ577cG555•••) ‘HÔÑÑ¡P(4M¬ÙyB©©©+W®ÌÌ̤P(­­­Ø¡ñãÇ«©©a¡›P(”l@`³Ù***û÷ï~ùò%–H$!ðÀ{&™L.//ojj7nœè!,ôáp8Ø\.—H$ªªªŽVÇZºti@@€œ§ˆa–––3fÌÈÊÊJMMMHH8rä¼ëøSÈ;ã5nÜ8www„ÐîÝ»ÿý÷ÆÆÆüüüøøøîînSSSVPPPYY™——×ÐÐ0oÞ< …2ZM433c09997nÜàr¹µµµ2òòx¼gÏžõöövwwçæævuuyzzÒét*•Š*((ظqã£GàíÀû4ŒÇIlذN§§§§‡††"„¨Tª@`±X»v튋‹  æææl6{›H§Ó#"":b±Xß|óÍĉËïêêZZZºuëÖ­[·Z[[§¤¤ÄÅÅ„)S¦øúú"„:::***:::àíÀûD°rp½t.YFŽœœoools=BH(644…BMMM±mR---T*uçºÄ´··y2óx<&“‰µ°···§§‡N§‹åïjÀ»KKK –¤ŠMʤtr†ýxw€=[K“ÉÓ^IFN2ˆU eìÂA9Á—d¼'rÍx¥¥¥ÁHŒyàåíí Ãð>/Ù;Å€œ`^x¼>\Ã{€jlR¦<Ù¶ûyÁȼSà…bû¯–!áä™±ntqqq__ß§Ÿ~*gþôôt¡Pˆ=£°°PAAÁÄÄäÃ|?Þ½y=ºw¢âòåË9^`JJ Fóôô„ëøS {©‘¦D–ýŸä)NNNøÛ¶m x—FÇÇÇïÛ·OþüÙÙÙÙÙÙØëÈÈÈ„„„ê=èïïÇ_¿{ó ¾ýö[ìK-{zzD ¼|ùòÕ«Wá¢þ,ÞñRQRøÓ-Fvnbb"‘øílc³Ù ééé£Õ¼;wî „•••?Àþx CGwÿ(V_\\œžž^TTD£ÑÖ¯_oooª®®>|øpyy¹––›Í–\w‹okk‹Ç&“éàà””D£ÑØlöÔ©SBeeelhh°±±éëë#“ÿÓÓ½{÷2™Ì={öˆE?L&ÓÒÒòÌ™3aÓ¦MŸ}öžþÙgŸ%''ïÝ»WQQñ‡~(..¦Ñh666ëׯWPPqºÔŽˆ–ieeU^^.|}}CBB¦OŸ.Ú<©§K1Ü©S§îÞ½‹Ú¼yóüùó7lØ µ¿ò 2FݰçB:»dÿ7¬Ò¾ÿþûׯ_GEEjkk#„º»»ÃÂÂZ[[ÃÃà ¾}û$'·¸\n]]öº®®®¨¨(99yöìÙeeeXúþýûëêêÖ­[‡zûö-~n]]—Ë+°®®®°°0;;{Μ9MMMøÚ–žššjjjª  VRR²iÓ&KKËŒŒŒãÇË8}°Žˆ–9wî\&“I¥R}}}±îãÍìtÉeeeõÉ'Ÿ „|}},X0XådŒºáÏxõŒÚŒ—P(lnnnkkãp8Ÿþ9¶"öàÁƒææfccc ‹³gÏVUUéëëË(‡@ ÄÄĨ©©Ý¹s§¬¬ !ÔÔÔT]]moo¿dÉ„Г'O„B¡ìÆ(++ïß¿_II©§§çæÍ›ÕÕÕººº!2™œÀb±nß¾ÝØØèâââäääèèxóæÍììì   ¬Ù’§WUU Ö¼L„•J°²²kÔq˜ŸFUUU3gÎÄYZZΘ1#+++555!!áÈ‘#ãÇG-]ºô]>ù¨®®ŽjllD ‚žž …"ç¹µµµ¡éÓ§‹¥c±‡ÃÁ~är¹D"›^’z:ÊÓ©³qƒƒäˆ`|Fe0\ÞñêÈþOò”Ù³g ‚”””ÆÆÆÌÌÌÎÎÎiÓ¦!„º»»sss»ºº<==ét:•JE™™™1Œœœœ7np¹Ü‚‚,”–3f(((`«ûöíkkk“ÌóóÏ?ñÅ—/_Æ~¬¯¯ÏÍÍýã?~ûí·‰'b¡‰(SSSVPPPYY™——×ÐÐ0oÞ<<ž“<]ÎŽòx¼gÏžõööЦK=]êˆÀ¨ 2†kØ3^½ÃŸñ ìéé¹~ýzff&NwrrZ¾|9B¨¯¯/%%%..Ž@ L™2Å××!D§Ó#"":b±Xß|óÍĉÅÊ”½gKAAaÅŠ©©©ßÿýÊ•+ËËË%ó ôööâ›Êi4Ú¥K—ÊÊÊTTTDŸ:†c±X»v튋‹  æææl6?*yºœquu---ݺuëÖ­[/^Œ§K=]UUUrÄF@ζ`t¬\/K–3wlR¦³‹»ì<9W.HýÊ ¡PÈáp´µµÅ¶„÷öööôôÐét±üíííØS@%‹òôôœ2e 4ÈÀçó‰D¢¢¢âýZ¶l™ššÚñãÇy<žªªªì_µ´´P©TѵKÙ§ËèŽÇã1™L yHòôÁFläiÞ]lR&¥“3쯜+FâRçT(ŠÔ X’Eww÷—_~I§ÓÛÛÛ.\8dØD‡eÈ=ï!&“9¬Óå‰dÔ+yú`#6£½@Nà ¼þÜo¿¦P(</<<|ܸq£Xrhh(ö(Ô?åt@àõÁ!‰sç΋’ÍÍÍÿÄÓð7ßâ^/¼ ð‚!€À /0|d‚¿’ؤLàý“óÛ} ðú«‰ÚO<Åbñx¼!sÂR#À;‘Å /€÷dÔ¯ÂÂÂâââᤤ¤dee vT(655½~ýšÏçÃö±KIIyõêŒB(##ãÙ³gESûûû«««;::Þçµ!jkkëëë\-€¿WàµlÙ2oooÙy"##DÿRvHÒåË—¯^½*™ÞÛÛ›’’²dÉooo777//¯wU´I£râ²eËDœ”=ßSYY) çÌ™C Äõöö†……•””lÚ´ÉÒÒ2##ãøñã2š'Ö¤îîî°°°ÖÖÖððp°oß>@0uêT==½œœœ;wî?~\IIiΜ9’}300Àáp8ŽŒööö†††þöÛo‹- 622+Vvw SSSMMMkjjnݺ…êèè¸xñ¢………Ô¡ …!!!?ÿüóÆ÷ìÙSRR‚âp8Gõòò AEGGOž<ùâÅ‹nnnOž|øËåZ[[ûùùÙØØ¸¸¸H¶GFwÈdrBBBHHÈ¢E‹óòòB×®]ÓÔÔœ={¶Ô¡+--Å&ðX,–½½½‰‰ >_²víZ;;;55µÎÎÎ'OžøùùÑétSSSÉ×ÙÙù“O>a±X†††Ø=_LY¸p¡………ƒƒÃÇËŒ5# ÀÀÀ€Á`L˜0Ëéíííááabb¢««[ZZÚÕÕUXX8wîÜ–––™3g>~üX²GòN¥RÉd²ŠŠŠšššhHñøñc,dùå—_¾øâ Õ­_¿ÞÎÎnΜ9T*uýúõ–––Ÿ}öY{{{SSSooïï¿ÿ¾víZöÙgŸI.Ib=n!åååMMMóæÍ›1c†ŽŽNvvöu\WWwòäÉ7oÞ·nݲµµÅ/o±FÒét<¸¬§xºÔ¶É¸´°J•••俪Åj­t°^¯^½z„ {÷î=zôèŽ;‚dS¯\¹ràÀ`Û݆{ÊókèèèXQQ…ª—/_^²d Ü“øËɯñãÇc›”••Å– d?þøã½{÷¸\®@ `022khh „?~¼aÃÉu4„féëë677?^žæ544 „RSSÓÒÒB »‘Œ7nñâÅYYYæææ†††òôˆÅba«¨Ø?‘¥vkíôéÓ+DvwÔÕÕ±˜OIIÉÒÒ2//¯´´ôòåËžžžƒÈårUTTð):###¬ ¬Ø‹?þøCIIIKKKFï®]»vëÖ->ŸÿòåKÑ Fx4¬§§wûöíÁ2744‰ÄY³f‰;iÒ$ìvs}úôiÿÞ½{ñÉ-yZ2XábÔÕÕgÏž}ãÆ ssó7oÞXXXÜ¿°êð;.@ÀÆß›XTTD¡P455‡õ›"ÖÓáréÒ%ìSTT¼|ùòêÕ«Ç¢ãX –››«¥¥5eÊ:Ž%jiiõôô”””ˆÎ?555}úé§²{:¤Á.-ì¿«««££ClÓ¤Œ«ZFíƒ]]D"qãÆþþþúúúR(ºÇk¸¡<¿†L&ÓÒÒ2''ÇÅÅ¥¶¶vþüùpO¯’ñäåå;wÛ|ºmÛ¶ºº:%Édìýøß)Ñ$‡ÃÁÿÀ‰D|GÈMš¥K—ˆfhoo¿yó&…ByòäÉ«W¯ð?Ç2‚K‰$»Hí v —œÄ‹•¿;vvvyyyGmiiÁ·»IRSSëèèÀž¢‹ª®®–¼ÙO:µ³³óíÛ·jjj@òI¥¥¥»wï>wŽNPPÔŠª««ÿñ –y„  ¬¬lÆŒ2Þ&“Ùß߇½/R'ðä/\òÍrtt¼råÊ›7oœ‰DâÕÉÒÎÎN&û’­Búúúþßÿû+V¬ÀÖžœœœŽ=Z\\…B¹~ýº»»ûp¯jÉJëµ@ HLL´··¿qㆿ¿?~t°7e¡œ ^¼xñ÷ß/ /^<²Of>.còUCCC÷ìÙ³ÞÞ^Ñtl{‡’’ÒÝ»w9NWWWOOÏ`…Œ7ûË»{÷îßÿ½±±1???>>¾»»ÛÔÔ”F£TVVæåå544Ì›7ÿÖM233c09997nÜàr¹؇ØÕÕÕ¿ûî;¡PxèÐ!l±o°¾H%µƒxksss›ššŠŠŠÄŠ•¿;ffft:½¤¤dñâÅ2úkll¬¡¡‘- «ªªŠŠŠlll$ƒ€©S§~÷Ýwùùù;wîäñxØìÎÙ³g±}0MMM CCCãÕ«W\.WtÏï“'O„Bakkëýû÷±}fR3éêêž>}º¥¥e`` ©©Ijk±lÉÉÉØÅ€ï’Ý©…kiiI~bÃÎή¸¸øÂ… _|ñ…ŒêdÓ××WWW?þ|ÿÅ‹KKKñ;4ÞÎw)‡—vûömMMM??¿•+W®\¹rÍš5fffW®\£ŽOš4ÉÐÐð÷ß_°`ž¨¢¢²zõêóçÏ766bÁJ\\œ‰‰‰™™™ü $Û&ãÒB©ªª._¾ü‡~À~S°üwïޕ窖¬TÆÕE¥R£££­­­wïÞ½R‡QF›e¿r6ØÆÆ†Ç㥥¥¹¹¹Á ¼FÈÕÕuâĉ[·n½~ýºhú‚ Ž9’žžniiÙÝÝ-ûñ<6lX¿~}MMMhhèªU«âââ^¿~-íÚµk`` **ÊÜÜœÍfËß$:Ád2£££}||Þ¼yóÛo¿ÝºukÛ¶m³fÍrss+))Á6d Ö©¤vk-F;pà€··÷©S§ÄŠ•¿;ض0‰${/…B‰ŠŠJKK[²dɪU«V¬X!u ã_ÿúWOOOjjªƒƒÃøñã±\¼xñÎ;! mmm''§ˆˆ{{û3gÎà{qêêê–-[æî¡aee5Xf‰ôÝwß•——»ºº:99]¸pa°Yؘ˜'Ož8;;{xxìܹK—Ý©…»»»_¸pÁÇÇG´|ƒaaa1nÜ8lùx°ê†äïïôèQ[[Ûòòr###|çÞÎw)‡—vñâEWWWÑC_|ñENNÎÀÀÀu<44422Rì9~~~vvvË—/_·n³³óü'û9b$Û&ãÒÂlÞ¼ÙÕÕuãÆØ3´Øl6—Ë•óª«Tj¯_½zuöìÙo¿ýëu]]ÝéÓ§Fm–}ÊÙ`EEE;;;}}ýÁV<1+×Kç’Ç¢hÇd2%o-mmmØæ§––6䦡PØÐÐ  555ÅJkii¡R©òßÄšÔÞÞN äyþÖ`}‘j°òx<%%%Ñç‰+Ow¶oßÎ`0°{†¤Ø¤LÑ/ÉnnnÆžÄ1dœÎœ93uêÔÁúÒÚÚŠ­~zzz²ÙlKKK>Ÿ/¶KO23æíÛ· ƒLb]»¥¥EYYYêÇ)ä/¼¿¿¿³³sÈuç!«“ª§§g``€J¥úûû/^¼xéÒ¥b6nÜèîî.ûNx!ïøûõ>;Þ××W]]ÝÖÖöÓO?½xñbþüùrmƒ½¡8ìI,Kì2“óª«TÎ^ËÆ‘]„C68,,ÌÜÜÓ ÀGmGìɨíþ²:›”IéäÇ®R?ˆýC{=øjèØ@l3‡œ% Ö$|ñˆû2¬J"–2dwrrrž>}*ÿS¼±§ &22’@ ¨©©]¿~ÝÖÖV2êí‹Ø­HAAA2b,³Ø'Ú#»ûrN&“å >Fpñ A>c‹‰‹‹£R©óæÍq!Ãò>;®  €…YsæÌ©­­ýé§Ÿä¬KFÛ{CE§Buuu‡{UV©œ½–=Œ#»e7¸®®îîÝ»òϼ>v¤IFÞË–Â@|ººº,X0ØS$BwŸ>ßTÎÒôôôh4‘HtqqY»v­œgMž<ÙÈÈèoþ´!###ÑÀJ¥‰ÄÐÐÐaE$#ƒaii‰}>¼»öövkkk=== >j7î>ù|¾©è“±¥Þ£I}íd¬È@ñx¼Ø¤Ìaû¤’w>ïé0NøµÞ © Šá; ÀHdÞx ƒÀß^)Ûý¼X,–è6/@àÆÊp¿Nï †/¼^,Ø\/ËpŸË€¿§í~r}ÿ^C€G3@6Çb±äy°,5¼ù—È ðxOþœÀ«°°°¸¸X2====--íoûf¤¤¤¼zõj´ •Ò¤êêꪬ¬ìíí•<$u–uó5¹öx-[¶¬¥¥!¤¨¨8qâÄ   y¾4P†ÈÈH55µãÇ‹¥ggg …Booï”éä䤧§‡—¹mÛ¶¶¶¶'Nˆ¶ŸF£Íš5kÕªUFFFX:™L~Ï¡ž»»{ZZš²²²dÊÅ‹õôôôõõߥ|¼Q)MLOOOTTTYY™¶¶vyyù®]»ÌÌÌBoÞ¼9pàÀüaddtèСQÏü/„††ÆÞ½{Ÿ>; S]]âææˆ¯KŠU*? –.]J£ÑÞ¼y3¬1:~üøóçÏããã=<<êëë·nÝjggçè蘕•…Ú²eËÍ›7Ùl¶­­mXXXWWvâþýûþùgÑ¢îܹ3þ|Ù)¡úúúàà`[[[//¯k×®á‰bõžŸîèèˆÊRKÎÏÏ_»v­­­íÞ½{%û+Ú‹ŒŒŒ+VàA3@À^P©ÔI“&I6`´ò¯À !Ôßߟ››Ëãñ ‰Db]]]aaajjª©©©‚‚BXXXIIɦM›,--322°%¿éÓ§×ÔÔà7øË—/›˜˜ „êêê¸\.ÔÕÕ­[·!ôöí[,±»»;,,¬µµ5<<œ@ ìÛ·O `'â•Òh4ù/ SSS;;;íìì†5F>>>ººº~~~III!$$¤³³óäÉ“™™™ÖÖÖ!‡sìØ±¥K—FGG¿xñ"'';ÑÚÚzúôé¢EXYYÉN …!!!?ÿüóÆ÷ìÙSRR"$ëÕÑщ‰‰IOOÏËË{öì™dË>ljjŸ••õêÕ+©% …ÂC‡_½zuÆ bý%‘Hx/ZZZÚÛÛ¹\îªU«9"{Fj¬óy—ëëë=<<ø|þ¸qã¶lÙòŸ“Éä„„‹uûöíÆÆF'''GGÇ›7ofgg™››3Œ›7oúúú–——¿yófÁ‚¢Å655UWWÛÛÛ/Y²!ôäÉì^ûàÁƒææfccc ‹³gÏVUUaÛ•ðJ‡ÕÏÒÒÒU«V!„¾øâ‹Õ«Wë\*•J&“UTTÔÔÔ^¼xQVVvìØ1„ƒÁÀòøûû/\¸!äààððáC„¥¥¥h9mmm­­­:::2R°¦–••8p€ÅbÙÛÛÿôÓOW®\ùâ‹/$ëÅ— KJJfΜ)Örooo¬%ººº¥¥¥½½½’%„üüü3fhkk‹õW´XXœ——ßÐÐðõ×_[[[ÿãÿlÜÆ:?ð—ñb0›6mŠŽŽ>uꔡ¡!–¨®®Ž@õõõ!,& úúú}}}ÍÍÍd2yáÂ…oÞ¼)**º~ýúܹsUTTD‹Å¶øàâB©©©+W®ÌÌ̤P(­­­b•Š!‘H===¢ós$ ÿqÒ¤Iûöí£P(åååØäÙÈ444‰DÉÏ(**b/ôôôû,áýû÷ÅB1É„—ËUQQÁb „‘‘—Ë•Zïµk×vìØ±uëÖ—/_J—ó+!UPPàááqïÞ=Ù×BhݺuãÇŸ1c†••ÕÕ«WÿÄüÀ_6ð¢Ñh‹-255URR’<ŠMp8nܸ3gÎàûýûúúÿ׋/+\KK«²²›%ÒÕÕ=}útKKËÀÀ@SS–[$mmm½ÿ¾……–XSSƒgOŸ> %S0ÆÆÆØ“5ªªªŠŠŠlll$ëmjjb0¯^½âr¹øŽ~¤–Ü××WQQA"‘/^Œžž…÷W´D"ÑÙÙ9''§¯¯¯§§çÎ;xO¥_[cœø›^,k×®]QQQæææl6?úùçŸ …Â… b ^¢V¬XÑÖÖöý÷ßëëëc]!:Ád2£££}||†ü(b`` ƒƒÃõë×W­Z•––æää´|ùr±<ŠŠŠ~~~½½½À[[[ÿù_ßÿý`…»»»_¸pÁÇLJD"}÷Ýwååå®®®NNN.\À2ÔÕÕ-[¶ÌÝÝ]CCß,øðá+W®`¯‹‹‹§L™‚£ƒ¥`(JTTTZZÚ’%KV­ZµbÅŠùóçKÖkaa¡­­íääaooæÌ™’’ÙC$µäîîîààà%K–ÒétÑþŠõ"((ˆËåzxx¸¹¹M›6mÑ¢EXúË—/“’’îß¿ïììŒËhåþV®—Î%Vq---T*U2˜Ïç‰D|›”¨ööv ¶3L¡PÈáp´µµGå9a±I™ø—d÷÷÷wvvbë§¡·oß2 2™Œòôôd³Ù–––|>ßn/æØ±c&LÀ¶º–"¦¹¹™ÉdŠîT«!ÔÖÖ†ÕØÚÚŠ·mH’%·¶¶ÒétÑA믨ºº:%%%l™Rcøsíˆ=µÝ_ö—dÇ&eR:9äÑ­˜ÉdŽà,Å&`†H'N‹1%“É¢QˆdX    9¥‡ëêê{l„dŠlœ±zñ8Oþ¨KjÉ’§‹õW¾=_NcøXaÞ]XXö‰N¾þúë!S×ßÇ‹MÊ:߯…0V€Àkä¶ûy±X,|›^cHöF9ùa ð€À @àðÁ‚Íõ(¹ža€Ãv?/¼>nð à£ÀãñX,–Ÿÿ´¾°°°¸¸øïð> ‚ÚÚÚúúz@W-ð‘’kWooozzzff&ŸÏ'‰@UU53óÏÙýÝßßO&ÿ§Ù‘‘‘jjjÇÇ2—-[ÖÒÒ‚ÿ¸|ùrÿ‘5iÔñùüÄÄÄœœ}}}@P]]½hÑ¢¯¾úêý¼§§'›Í^°`ü§¸¸¸ôôô(++#„(ÊŸuÍSàuäÈ‘œœ777:^]]]QQñ§4—Íf744¤§§c?&&&‰£³ZÊb±<ˆ½VQQq“F]lllUUUFF†ªª*BH ¼Ïo1ò÷÷÷ôôtvvF:u ¡†eÛ¶mNNNïR/ð7 ¼jkksssuuu¿üòK€Ò×××××ÇþðÃÅÅÅ4ÍÆÆfýúõ X8Âd2’’’h4›Íž:uªŒôêêêÇ———kii±Ùl„P}}}bbâóçÏ ‚¥¥åĉËË˯¯oHHÈôéÓ÷îÝËd2÷ìÙ3‚–ˆ!‘H'NM‰/..njjúôÓO׬Y3yòdyš$»Ÿ}öYrròÌ™3ËËË#""&Mš„:yòäÀÀÀÆ%[ÕÐÐpùò夤$,êB‰Duuu¬%QQQÏž=SWW tpp@mÙ²ÅËË+77÷Ñ£GNNN!!!ƒ%ÖÖÖFDD¼|ùrîܹT*+sÿþý………d2900°©©éùóç555'NœÈÈÈØ¹s§¹¹¹üUK:yò䯿þúæÍkkëððp슒]occ£Ôê\]]ÏŸ?Ïb±H$ÒÌ™3—-[†êììô÷÷OJJÂz|P†ž.ª¬¬ …sæÌÁî‘¢z{{ÃÂÂJJJ6mÚdii™‘‘¯úÕÕÕ%''Ïž=»¬¬,##CFzwwwXXXkk+v'Þ·oŸ@ èíí ýí·ß-ZldddaaÁd2©Tª¯¯¯¶¶6V—ËYKÄ p8‡ƒˆ…bkÖ¬ øð!6¡5d“d7£°°055ÕÔÔÔØØ¸¦¦æÖ­[¡ŽŽŽ‹/ZXXHmUUUB CE … ŸþyãÆ{öì)))Aq8œ˜˜SSÓøøø¬¬¬W¯^ –ckk{éÒ%>ŸóæMl.-$$¤³³óäÉ“™™™ÖÖÖ>>>ººº~~~III$‰ÃáðùüaU¥c‹¹:::111éééyyyÏž=²^"‘8XuGõòò ™1cÆùóç±ê®^½ª¥¥Q€5ð¶%=xð ±±ÑÆÆÆÉÉióæÍt:=;;ßýM bbb°™ž²²2ü,Éô477/\¸ÐØØØÂ¢±±±ªªêáÇ\.×ÚÚÚÏÏÏÆÆÆÅÅEOOJ¥*((þÇí IDATXYY±X¬wo‰X7×­[·nݺ­[·b)ÁÁÁVVVúúú:::………¡!›$»d29!!!$$dÑ¢EŠŠŠyyy¡k×®ijjΞ={°V)++csf¢JKKËÊÊ|}}Y,–½½½‰‰É•+W°CÞÞÞ&&&ººº¥¥¥R»ºº çÎÛÒÒ2sæÌÇãe0Œ &P©T2™¬¢¢¢¦¦6⪯\¹ràÀüñÇ!ggçO>ù„Åbb!”ìzeT·víZ;;;555GGÇŠŠ ,Ô»|ùò’%KàÀ‡iè¥F „ÐãÇ7lØ v¨¾¾!d``€7úúú………ÍÍÍãÇG?»a+++ …Bü,Éô††„PjjjZZBˆB¡´¶¶b…OŸ>]žnŒ¬%¢X,VBB6Ñ…MÃüøã÷îÝãr¹€Á`àµÈh’ìf¨««cñ¢’’’¥¥e^^^iiéåË—===e ~WWWGG‡Ø¶3.—«¢¢‚Mû!„ŒŒŒ°ªBØò%BH4\K|úôiÿÞ½{±Dì] ‰³fÍ’=Ôí:00Pt×µk×nݺÅçó_¾|igg7d½2ª7nö‚ÉdZZZæä丸¸ÔÖÖΟ?~±|¬—™L.//ojjÂou,šáp8ø=’H$⻑ä‡Å%K—. À›››B’TR#§wo ‰DÒÒÒÂÌËË;wî¶Å{Û¶muuuXp&»Iò7ÃÎÎ.//ïèÑ£---ئ%©ôõõ)Êõë×ÝÝÝÅúÛÑÑ='!T]]­©©)g™Lf\\6ò˜ &‚²²²3fÈðw©º´´t÷îÝçÎÓÑÑ ’§^9«[¼xñ÷ß/ /^Œ…ÎÀhè¥ÆqãÆawýÝ»wÿþûïùùùñññÝÝݦ¦¦4­   ²²2//¯¡¡aÞ¼y e¸033c09997nÜàr¹µµµxá¹¹¹MMMEEE!CCC÷ìÙ³ÞÞ^ÑF«%8ìYeJJJwïÞåp8]]]===C6Iþf˜™™Ñéô’’’Å‹Ëh§ªªêòåËøá¬.„PSSÓÝ»w544²³³…BaUUUQQ‘ü½322ÒÕÕMNNîééAµ··ã‰§OŸniihjjBiiiUVVŠžû.U7551 W¯^q¹Ü®®®!땳:—––æææ¿Õ>âÀ !´aÆõë××ÔÔ„††®Zµ*..îõë×ÅbíÚµk`` **ÊÜÜœÍf t:=""‚ÉdFGGûøø$$$¼yó+œF£8pÀÛÛûÔ©S!WW׉'nݺõúõë¢%ŒVKp ,0008räHzzº¥¥ewww||üM’¿ض0‰4䆤͛7»ººnܸÑÍÍÍËË‹Ífs¹\ …•––¶dÉ’U«V­X±bXëk$)&&æÉ“'ÎÎÎ;wîÄ¿ûî»òòrWWW''§ . „ÜÝÝ/\¸àãミû.U[XXhkk;99EDDØÛÛŸ9s¦¤¤Dv½rV§¨¨hgg'úy[àD°rp½t.Yž¬B¡°¡¡A(jjjŠ}±¥¥…J¥¾Ë ¦½½@ ˆígâñxJJJ¢OâñxL&SòS–£ØL[[¶»«¥¥…F£á[—†l’<ÍØ¾};ƒÁøöÛo¥MÊý’ìÚÚZ‹…µ×ÜÜÌd2G¼¸ÖÒÒ¢¬¬,öɉ·oß2 ü‘°ýýý’ ¦#®ÕÖÖVÑbe×;duaaaæææ^^^ð[ à=Û{2j»¿ìmÆ&eR:9ÃxÞ:@l7“É•vÓétÉD±0JMõ–`ð(G¬Ø!›4d3rrrž>}/gKH$’®®®d:öL¯“ÚNÑÏ0"„Èd²Ômj#®U±be×+»ºººº»wïbSwÀ ¾$ûÏ¡­­)çg6<¤îÀ‡ƒ Cð§ò© !›_n8 ™7à €À Ûv?/‹%ºÍ x±ò>¿ ïìñ€À /À‡ 6×ÿxvø`m÷ƒ'ò^9ðøðâñx, >å °ÔÀ‡æb/À öx†Gtéóï¼ëÆatÇP^×è(,,TPP011ù@Ê‘*##cÚ´i3fÌøÓߪþþ~‡£®®®¢¢ò·½^SRR¬¬¬ôõõåÌ/êêêH$’††‘ø—šß …‡Á`0Œ÷|›Ü°f¥HÊÙ¿á}ñ}ŽCJJ Fóôôü~ûÆ¢%lÿÕ²3$œ<·ê÷yדSzzºP(ôöö–ç‚ù<Š]ëééillÔÐРP(cx-[¶¬¥¥{­¦¦f``°nݺ©S§Ž,z “ÿSidd¤ššÚñãÇÿÄr†tõêU2™ü/OOO6›½`Á©ïñ‘#Gnܸ1yò䯯FUUÕÝ»wOš4éý_ŽîîîiiiÊÊÊÖïÃÅ‹õôôä ¼ø|~bbbNN޾¾¾@ ¨®®^´hÑW_}õ×ø³{úôéË—/·¶¶ ‚™3g(§N, ‰‹‹«©©ÉÊÊ¢R©Ø?#6mÚ”••¥¤¤ô>[X^^>qâÄ?1êÞÝ16¶ªª*##CUU!$þ2c¨­­=s挓“Spppsss}}½ü¿,£r\he‰§äݹ'û”¶¶¶û÷ï+**^½zuõêÕad AGF·ïï+`B±×ïs’ò碤ƒ0\CÞõÞåâ‹_œ¿Æmãèèèåå5a„ôôôS§N?>((hL/‰4qâD„дiÓBBBBJJJdd$B¨ººúðáÃåååZZZl6›K,..NOO/**¢Ñhëׯ···?wî\yy¹@ ðõõ ™>}úÞ½{™Læž={°wšÉd:88$%%Ñh46›EuñññÅÅÅMMMŸ~úéš5k&Ož,»œÚÚÚ~ø¡¸¸˜F£ÙØØ¬_¿ K+°Û®]»ªªª¬­­»»»±Ä]»vÍœùÿ±wßqM]ýÀOB #L™UFEÅ ˆ(ŽºP«m­u<Š"¢òX‹ÚÚªuUÅ…V­ÕÖ¢Bqôqµ<à@¨X¨¨ "² # IîïÛ'¿ýôÓ¯¾úêÙ³g3gÎüä“O!_}õÕôéÓ}|| 7mÚ”ššÊb±‚ƒƒ pòäÉÐQ!dÚ´iÇ?}úôäÉ“ÃÃÃ;wîL™?þœ9sz÷î——·jÕª§OŸöéÓgÕªUôކoyùòåüñÅ‹C† ùú믕ÍrõêÕþýû+›HmÇÂÂÂE‹}õÕWôÝÁ/¿ürÔ¨Q h\k,\¸ð£>:uêTZZZŸ>}V®\©¬¾®¨þµ¸¸øÌ™3û÷ï§£.B“É´²²z;†}QQGRegggggG§kŽDÍÁ2gΜŽ;.Y²„²`Á[[Û•+W*ˆŸŸßáÇ FHHH¿~ýÔnóÐßrçíí­š>ØßïÖ­[ëþŒØ§õfObb¢½½½Ï¯¿þš––Ö£GBˆfÁTw1döМ”µèׯ_TT”¿¿sÕ]k;h¥§”S¨’Ö*îÙ³çáÇ ÃÏÏžRèѧgîÒl1]ù‡……9::víÚ5&&ÆÄÄdÙ²e>Œ‰‰±³³ §û’! ¢uÚoœ*±¬G‡Ö¦¨·´º.ÍrAÑÓ¤Z ¦Ú׬Y#‘H4k¤zÕ3d¼è9Z-ôÍŒŒŒ­[·4¨®®NyW¬ÞVxÿþý×®][¹reûöí !¿þúkvvöçŸ^oStëÖ-33sÕªUôÓž}ûöÉåòy󿩵s½Ý[×95¼jÊsmaaA1|é‹Rc"О={Bž?N‹ÅK—.­¨¨ ¯©ëÖ­S(„]»v½xñbýúõÁÁÁ„___¡PÈçó锂‚‚¢¢":Ï‚‚‚´´´¨¨¨^½zedd;vL9[͘1cùòå7oÞ¤p=ùH¥Ò¥K—>~ü8$$ÄÏÏïØ±cÊ›ºò×jÆ gΜ ÈÏϧ(ŠÒµk×'NМ={ÖÞÞžÏççççoܸÑËËkûöí¿þúë³gÏ!ÎÎÎ7nŒMJJzðà½K~~þÖ­[G޹iÓ¦ŸþùóÏ?Ÿ>}ú矾wï^™LFoP[[«P(/^\]]½oß¾ãÇ0 ;;›¾ŸùÿçŒÉôððxúô)!$77W"‘(A‡‰7n|ï½÷NŸ>][[›˜˜HÿÕÀ-)ŠÚ¶m[hhèÙ³ggÏž­Ú,ÉÉÉþþþôkÍíííGýõ×_×ÖÖÆÅÅ•””Ð7º5¾ÿþûqãÆmذáÑ£GñññjçHk•èÎÙVÖ4b:::Þ¸q#44433“NÔ:5KnnnII‰rP¼|ùRù:555..®wïÞ¥¥¥‘‘‘Z/Z¯‘ºÒ•ƒeøðáǧ_Ó‰šSeÈì¡93(kíååÕ§OŸf¬»f}uýèÚK"‘$$$$$$\¹rE×ä&•J—,YrëÖ­Q£F…††zxxÐ[–””蟻4[LO¥¤¤ÄÅÅyzzfee­Zµ*!!ÁÃÃ#--íòåË6ˆ®i¿qªÅrý? ÊM³) )­Ö Ds]Pt5©®‚©vc@ õäª^=ë/z¤Y ýcsÓ¦M3gÎ$„¼zõÊðþ ,°§§gnnî¹sç”#»tébHStêÔ)77÷âÅ‹„ªªªS§NùúújE÷ÖsNZµªªªC‡ 0  ¡}¾1€œœX,VMM !$%%¥¬¬l̘1:uòõõ‰‰yþü¹‹‹KYYYeee~~þСCéŒ:tàóùr¹\yñVÃ`06nÜhiiyõêÕŒŒ :144”"‰œSSSõç“’’RRR2f̘€€€#F$&&ÆÅÅÍŸ?Ÿ.€Öü5I¥Ò»wï~õÕW _¿~nnnôMš#FlÙ²åÙ³g®®®gΜ¡O!dÊ”)ãÇ'„´oßþÉ“'®®®#GޤÿäîîþøñãnݺѿΚ5kÈ!„>Ÿ?kÖ,??¿ššš×¯_—––*oZ6l˜Ö‘èêêªЩ266Þ´iÇ“H$‰‰‰999ô[RÕ ¤® §®<³³³³²²V¯^mmmíæævùòåþóŸÆÆÆzF1EQ†Ìš3ƒ²q"##éw¢ÍXwë«/¼¨®ŽŽŽ&„ØÙÙ 0@knÞ¼YTT4dÈ9sæÔ;7êo1=Mdlladd”””ddd´yóæššš+W®äääØ º:[#ïxIšíŽ—Ö¦0°´šÜˆ Ê¿ÿýoÕÅ|={öìÝ»·®&}þü¹®‚)»±®“Û ñréÒ%]Ò¬…ž±YZZš““3lذ?ürçÎú®Dƒúƒ™™Ybbb```ffæË—/¨'eSˆÅâü1))éÿøÇ¹sçìììzõê¥u,ëéÞºÎé«W¯ZµÍ›7›šš.[¶LíêÜRWyy¹L&£¯ÊÅÅÅ„èèè_~ù…Âáp*** FXXضmÛ6mÚtòäÉE‹¹»»×›­¥¥%Ýpt ÅO?ýtýúuúÙJ½ #èÅ.tÈÂ`0\]]SSSËÊÊlll´æ¯UZZ‡ÃQFBJôâøøø1cÆäåå)º)¹+/óçλxñbmmíÓ§O騂F.}aÐEÅÅÅL&³{÷îÊ{{{‰DòøñcÕû7ôã­å¿wïžL&[³f ý+*5hËõë×/_¾üüùó_ýµŸßŸ«ynܸ¡|­kG&“9oÞ¼   ñãÇ+G]£[ƒËåÒ/:tè ¼I``ÛµkWSSSUUõ¶~ÔÔÔtÆ 'Ožüá‡"""¼¼¼´ŽÄåiffF¯¤»tvv¶Zð¡ë©ç™ÀårwïÞM¿w‹Å—/_ÖÿÑÙCÏÌ`eeEw§æ­{ÓKK˃ê¯=ƒ©=Ü©wîÒÚbzšÈÎÎŽ^©Éd29Žæ•Cƒ4½³ýÏ{]Yƒï–)ïßBd2™‘‘‘®¦0°´šÜˆ JYY™òf mëiRúþ«Ö‚)»q½ÃÁñ¢§ ¼,*'^ú-´áùk}ß8xðàÓ§O§¥¥%''÷éÓÇÄÄDOʦàñx~~~IIIOž<9s挮yèïÞºÎ)ýÎÄðªeff&''‡„„´à§5ŸBè ?ÝÇ7wî\Õmüüüºvíú믿FGGGFFîܹSž~ ¤¤¤#GŽM˜0áóÏ?/((P óµNmôS*åR&“©\åcøüXUUU]]-Ô4zôè]»vQ5zôhzœkzòäÉÊ•+9âììÜÐw„[[[…B‘‘‘¡ü¥››ŸÏ¿}û¶2𪩩IKK£×BÑ38=õÔÖÖÒ¢L&Û²e }jÔ.W†lÙ©S§£G>|xÉ’%çÏŸ§ «W¯¾ÿþûÊTëŽ …bÏž=Æ »páBPPM[Cùˆ~º­ëª#ÍÕÕ•Ãáœ?þ£>"o)ƒ1nܸ¬¬¬„„„艚ƒ…~˜[QQ¡zéR•——§yùŸ31bÌ”'ø÷…Yã‡*ÓüûBDöË‘£š ›ärybb¢——]6kkëS§N={Vxéš ê=ôÌ -Qw­í õ¯ZÛÁðɾÀ蹯‹f‹ÞDúim=­êxÙÚÚÖÖÖÒáÂóçÏ•·Ò5›¢Ñ¥mÄ%((Èð&¥;g½Ó5 /h­c“^&KÇ‹ …B"‘ÐaGCó:tèéÓ§nݺµhÑ"Ãs2dHRRÒwß}W^^N¯^hÄû­ç´¡U366 UÞÎl(C×xÕÕÕݾ}ûêÕ«{öìùñÇ---éOZz{{›™™ÅÇÇ_¸p¡¨¨(999//O,'$$ÔÔÔL˜0ÁÔÔT¹ðÙÝÝ]$=xð@*•rP:>àñx×®]ËÏϯ©©¡§K]ùÐOÄ“““³³³“’’Š‹‹ûöíÛЀÔÕÕÕÊÊêĉ2™ìÔ©SOžÐµ{ii©™™Y»víž={VTTD?5œ‡‡Gûöí:T^^.—ËKKKMLL¦M›vâÄ eŸØ²eK—.]è5ÎŽŽŽ555k×®}ýúµ2‡¨¨(º­èD÷¬««ËÊÊ222=z4ýà•>è½{÷”÷uu"&&†ÏçoذaÀ€+W®¤(ª)­Aßì­¨¨¸qã†Ú³|= ×{™››OžüøñãÝBÿöÛo333ÇŽpòäIBÈœ9s† 2yòä™3gŽ9òþýû[¶l¡»ÝäÉ“÷ìÙóÁtïÞÝÖÖ–ÎaãÆwîÜ9räøñã¿úê+:g·‹Å¡¡¡~øappppp°©©)!$==ýÝwßUvt­;>{ö,&&†þä’%K :Ô”Ö(((˜4iÒG}Ô®];µÕºêxêÔ©«W¯Ò¯,X0vìØyóæ}ðÁ'N S®Emërss·mÛ6cƌٳgs¹Ü… vèÐAëHÔ,ãÆ#„ìÞ½{ìØ±j“¸@ 8}úôgŸ}&“É‚ƒƒµÞì9yâד'~­•Ê”?tŠÖÛ<çÎ0`€ê÷Œ1‚¢(z]­®QlÈì¡kfPÓŒuoJ;¨N¡´]»vi­=ƒ ‚Í›7O™2åÀ¾+Öl1›Hý ¢«³5úQ£þÍ]‚ƒƒ‡~þüù©S§þòË/“'OÖÕ.ms]Pt5©!Ó54^ÚºÆ&›Íþä“O*++wíÚåêêª ÇÑÂC‡¥(jðàÁôs`³ÙþþþFFFôJ¬FÐuNZµìììC‡eee5òy…ÿð±§D5ýbðúõkƒ¡º¤F*•J$úÊ­J$ …BÃ×£UVVÒ ÊËËr)•ž|ÊËËù|~C#bÕŠK$¹\®ùöbéÒ¥>>>'N4°Ì }ÖI{õê•™™™êWØÕÕÕåääTVV=zôÑ£Gýû÷?~¼»»»X,622Ò\H^^^nll¬\)EUnYQQajjª\tõý÷ßÛÚÚª.o×µcsµýu²~~~µµµzÖöÕ[¹\ž——gaaѦ¿9éˈ}ëÃT¿‡L*•–””ÍõLš#Qm°ˆÅb‹¥ö툓&M¢¿ÞP$™››ëÿÆfüW9ºF±!³‡®™AÏ.M¯{󶃞ÉÇã5è;󴶘M¤ÆðÑÚÙ:ëŽSÏz€øßNjm^úŸ7888¨•PWçitiwA1¼Ië-˜®5ôjÛ Ð56kkk™L¦ÖY·éý¡ÞÂÃÃÍÌÌT¿ç¨q´žÓ­š²Ãsªó›í;5O9‡ÃÑÚSºôUyÉ …棶e#hmú‚‚‚k×®)ï¯RæÆE]Deí¹j°O/ý£¿ëèÑ£t溾FU³ ßR­Ø555Z?f`;7º5Øl¶þKE½022Ò³Jºíâp8j_ ¥g$ª ýß»kÈðlÆŒ£ëp†Ìºf†­{ó¶C#&7=]B³Å l¢F7ˆžPÀpñ¿lämCë(ÐÕy]Ú¦_Pô7i½ÓU£†^mԺξž÷Mïúsˆ¿wï^ƒîÝ6蜶hÕTáŸd7Ldddóž€Æqrrúì³ÏÞØáÞä±”wéžÀ›±dÉ’·õÛ7P÷ÖÜ “ÿò‰>Ö,Ö®]«ç³/m¯†uÍ/”ƒ–ЧO4›D/qEÝ ‚&mµT¿h©Mcâ\¼¸ãõ?D"‘ê‚Y^-"|ÎD =ÿW³QýÄ>@óÂ/^¼@ë…ÅõÐÌRrÄh%ßö<ŒwŒw^ЂFö´G#Bâïb¼`¼«Â£F€7/€·KÃÖxø ÃçLDË4)ð"„„MÓ¿Aä¾Ã­¿Ú&LhÜî©©©l6»K—.M)CS2‘H$%%%íÚµãp8èÄÐÒbcc)Šš2e šàM^^ƒw èСÃÞ½{é_?ÿüóÊÊÊ~ø¡‰E_½zõ•+Wf̘1}útC¶—Éd,ÖŸ…?s挥¥e£¯µkë–DÒ IDAT×ZZZ*kd8Õ24:“ï¾ûîôéÓl6›Ò©S§Ï?ÿÜÞÞþ/?Ð8“&M*//'„p¹\''§ùóçwïÞ½µ2..@³hð/[ÿÏ›)weeå7¸\îÙ³g)Šªwû°°°iÓ¦5×Ñ÷ìÙóí·ß6t/µ24.BȈ#===666--M Ìš5kذa„œœœ;vdffÚÛÛ‡……i}—˜˜hooïããó믿¦¥¥õèуNŸ3gNÇŽ—,YBY°`­­íÊ•+9’™™©P(/^ìééIo|õêÕýû÷ ‚°°°Ž;BòòòvïÞžž. 4kÖ,úÆRXX˜P(ìׯ_TTÔš5kvìØ! ¿ùæ‘H´xñbÕ‚Í™3§_¿~Û·oOOO/--íѣnj3\\\4˰fÍ:“z;|øpÕrÒE%„XXXB\]]ßüéPm˜˜­¹½¬?-ª®–È센®Îæi9åæN{k>!D&§Rž–ù¾k%ª’¨n“YTUQS÷¸ òiÑkÿN6µRÙý¯Å2+N÷öB#&ƒrëÙ«w¬øù¯jEÕRG+¾‹ 5§¼J,s±5é`Ãdž¶ˆÍf»¸¸ÐÅ£G ÅŽ;Ôæ]#T31!!áÈ‘#ëׯ·³³‹?zôhxxxçί\¹rîܹիW8ÑÉåò­[·4¨®®Ny·ÞhàU-–7ãáwíÚU]]½~ýúÒÒRkkkBˆX,^ºt©‰‰ÉòåË8°nݺC‡1™êwæÎž=;|øp:ð:{ö¬2ðÊÍÍ …ôë‚‚ƒAñõõ=uê”X, tpp ÿZRRÕ«W¯ß~ûíØ±cË—/—J¥K—.­­­ ÉÌÌtIIÉ Aƒ,X`jj§P(þ QY¬ÈÈÈÅ‹ÛÙÙ)sæp8þþþþþþüñGUUÕ¼yóèÛQ¡¡¡þþþ®®®ÎÎΩ©©ºÊ@Ó\ÍrÒ6oÞljjºlÙ²æ 5z:” ¢'Ïâ EcŽ!Ä^È«×ÑwLó^Õ8YknÃb2 Â2brXL™‚UK­M8u2…PÀ)«’*³ukgÚNȵ0á1níÖ¦\3žL® £7€6§°°püøñ›7o¶¶¶^¸p¡Ö9Dë՚رcG@p÷îݺººÔÔÔvíÚ¥¥¥Quûömooo':‹•““Ó¿ÿ?üð_ÿúW»víôW¡@T›ó²ºJ,{˜WQ+•·ÚD€¶xIe ý?š»I$Õ7vFFFtHfbb²iÓ¦ÐÐЧOŸBŠ‹‹ !ÑÑÑŸ~úéñãÇ9NEE…Z† \.w÷îÝ«W¯‹Åb±øòåË ­ˆ¥¥%!ÄØØ˜^%VXXHqss£ËæêêZWWWVVFooee¥0)8qâܹs#GŽüðà ! …bÿþý³gÏž6mZNNN½KÐôW³œ„ÌÌÌää䀀€F|ª±¹N‡ž¡õì ,­”\yô²ôµ„Âa1­My"qµDV#‘Ù˜ñ4·QU^%¥(ò ·"5§üe¥X¡ÒŒã¿Q)á°ð]tÐæ™™™…„„lذáÀîîîZç­#Tk"“ÉìÞ½û½{÷îÝ»gee5bĈ‡¦§§×ÔÔôèÑÃÀ‰îÞ½{„www«ðºV¦òº®Õ&´½À«N¦Ðÿ£¹‹­­maa!}SŠ¢¨çÏŸ+o’ûùùýøãS§NÍÈȈŒŒ¤ã Bȸqã~ÿ¯^½z©æ&—˽¼¼llllllúôéÃd2Ïž=«IB***Tà úÐú«FÇ7ùùùô¯EEEL&ÓÜÜ\ÿ^©©©{÷îõðð ¥S’’’Ž9púôéN:Õ[†FרØ844´OŸ>8åÍ{:ô]KŒÙþlÞ±ÜÍÉ!ÄÁ¸PT“ÿªÖÁ’Oß§ÓÜF‰ÍbR„êíbá×ÑÚ¯£uöB Wx[ ‚Q£Fyyyñx<=sˆæÕ•Ø«W¯òòòcÇŽùøøtïÞ½®®.**ÊÓÓ“Ëå8áXYYBJJJè7“jÓ©& ãÏ÷ELk3n«Mhƒ—\¡ÿGs—^½z)Šƒ–””?~¼ºººsç΄±XœPSS3aÂSSS>ŸOñöö633‹¿páBQQQrrr^^žjn7oÞ¬­­]²dIHHHHHÈüùó½¼¼îß¿_TTDqvv~öìYBBŠ+äòÿ¿·ìîî.‰¼   ‰Ç>sæÌÙ³g[®nÉÉÉ_ý5ƒÁ011‘H$o¾q›¥‚2™ìíèj«ÈË—/—.]:zôèÕ«Wc¸Àß"ð"„TTT|÷Ýwm«nW¯^%„Ϙ1ÃÑѱ-žž°°°iÓ¦½ý¬Ñ ,øä“O †+´u†>jäp8—.]&Ö•®ÚÚ,Kkáuí«YµŠèj Üñú“‰‰É?ÿùÏÕ«WïÞ½[3ŽÑÊØØ8""ÂÈÈ())ÉÈÈhóæÍ555W®\ÉÉÉQÝfÓ¦M<O"‘$&&æää<þ¼¬¬l̘1:uòõõ‰‰yþü¹««+!„ÅbEFFª­°NII)))3fL@@Àˆ#ãââæÏŸÿî»ïš››Ó˜ZÁ(Š*++«¬¬ÌÏÏ:t(“ùgôJ‰DÎÎΩ©©M¬HûöíU ©Y)­ÅPêСŸÏ—Ëåt®\¹¢µ¦j;jÖ¢¨¨(/// `Ô¨Qta(ŠÒ“þgÏøok_ºtI³ð|>_×¾šP«ˆÖ éS €ÀëO ðóó;þ<‡Ã1d{;;;cccB“Étvvæp8šËtÌÌÌx<!„~œ”Mß?‹ŽŽþå—_!§¢¢‚ÞØÊÊJósm………„úÉ#ƒÁpuuMMM-++³±±ÑU0ƒ¶mÛ¶M›6##Cë¾zšQk`(/u¡¡¡÷îÝ‹‹‹SM¤?­VQQÑ”OæååB<==é'ãÆ›;w®!;ZZZBòóóé_‹ŠŠ˜L&}¯K??¿®]»þúë¯ÑÑÑ‘‘‘;wîLJJ:räHPPЄ >ÿüóFfSYÕD:6Ò¬”f143TÞI2¤¦ZkA‡€ôŽUUUUUUô³Z]éj´þÑ£GZ÷Õӌʊèj ^ê×àÀÀÀ]»v)SœŸ={–'—ËzøÂ„„‡[·n9;;ÛØØx{{›™™ÅÇÇ»¹¹Ñ˪ڷoïää¤+zÉWrròˆ#rrrŠ‹‹ûõë§ÿžœX,¾téRÏž='L˜púôi>ŸO©­­%„ðx¼k×®åçç×ÖÖJ$.—ÛˆŠ899©ÝoÓZ)kkkÍb¨qww¿páƒ:vìhHMµÖÂÃÃÃÄÄ$!!Éd¦§§Ëd2úŽ®t5Z ¯k_]ͨZ‘†žb€·Fƒ¿¹þƒ>ðððPþ:nÜ8BÈîݻǎ«5tÐïwÞ9uêÔgŸ}&“Éèû¦¦¦«V­ …6l˜>}zdd¤rÁ¾V+V¬ËåsçÎ]¿~½OXX˜þƒÖÕÕ}š®Hpp°Ú_µVJk1ÔŒ;ÖÉÉiÑ¢EçÏŸ7¤¦ZkÁd2.\hffvãÆñãÇs¹\:\Ó•nHáuí««U+Ò SüôéÓ‘#Gîß¿ÿÆ#GŽûì³¾zõ*'''%%¥¬¬lðàÁ:uòõõ-))yþü¹ZžÞÞÞ|>ŸÍfûûû[XX¨FëîE••••””äççûûûÓ÷ÀxÀ_ ÿþÕÕÕÿþ÷¿‹ŠŠúôé£ú'SSÓ 6ÌŸ?Ÿ¢¨ˆˆ‘H¤¹»™™YHHȆ 8àîîN'ZYYÑ!½2ÌÍÍÂ`0\]]ëêêÊÊÊ”ûòxyòdÑ¢E‹-=z´2]ëîæææܲe ƒÁx÷ÝwÑ 1ïZý‡=}$ †ˆŒŒ|õêÕµk×&L˜0oÞ>>hhCð©F^¼@ëUÿâúˆýÇÑLz„Ï™Ø<!d}xZ‰/#öaR€V5)B,,,D"Qó^„Còxc0)@[„5^ð7uôèÑœœ´ ð‚ÖnêÔ©ôÿ¦]¿~=<<Í­­[·FDD¨…V[¶lѵýþóŸ‚‚´ ð‚6àâÅ‹·oßF;@ë1lذ+W®H$eJbbâ!CÐ2€À Ú¼÷ßûöíªíСCóçÏŸZ½zumm-øÝwßýþûïhj0P·nÝÌÍͯ^½Jÿš““SVVÖ£G]S“RXXXFFýzéÒ¥iiiºæ%^ð—^æææTKwttüúë¯øá‡k×®=~ü˜N,,,üþûï‡ ²bÅŠØØØ•+WNš4iÁ‚”Éd„;wúûû:t¨¶¶öÊ•+ô^}ûöõðð@S€ ÆÐ¡CÏŸ?Oÿš˜˜øÞ{ï1™L]S“RAAT*UÎWô[J­ó/øk…††ž8q"++K5}È!öööB¡ÐÅÅ%33S™>eÊÿîÝ»O™2ÅÛÛÛÇǧªªêÕ«Wµµµ>ìÕ«WEEEçÎé÷š„ooowww45nذawîÜyõê•2ðÒ?5é¢k^h"šÍÃÃcäȑ۶mûä“O”‰—.]ºzõªX,ÎÎÎö÷÷W¦ …Bå[Rú5ý6”òàÁ¹\®\ëè舶€Æqrrz÷Ýw»téBéܹ³þ©IÌK€À Z£ÀÀÀÀÀÀS§NÑ¿>}útãÆûöístt\²d‰™˜››Ëd²Õ«W[YY¡I ‰†WTT¤\VoÈÔ¤P(!2™Œ^Î…y Z5B“˜˜˜Ý»w^¬úêÕ+SSS[[Ûœœœ—/_¸ÕÍÍÍÉÉéÈ‘#ô‹ªª*:=??Ÿ~^`¸Áƒ¿xñ">>^xÕ;5ÙÙÙeeeÕÖÖnÛ¶­ººZϼ€À þú7—Ý»w§_÷îÝÛÎÎnòäÉ<~ü¸!k)ŒŒŒV¬X‘––öñÇÏš5ëÛo¿¥Ó÷ïßöìY´04ˆ¹¹¹ƒƒCûöí œš>üðßþyúôé]ºt±¶¶Ö3/4ÃøØÓG¢ôl±ÿøúð üw0ÜëׯMMM !•••fff†ïXQQallÌápІ€I ÞðÔ$‘H˜L&›ÍƼ˜”!õÎKûsªó±Æ š=µBuÑïSÑzð—LM\.ó¼^"‘ˆŽæZLJð6^„ð9ÑXíK´ü IDATÐz`R€ÖÃð·‚X\ð†Þ "ðhÜñhux ð@à¼x ðB ð@à¼x ð^¼/^€À  ð@à€À x ð^¼x/^€À /@à€À x ð@à¼x/^¼/@à€À  ð@à†c¸]Äþãh,€– ¼ÂçL´°°X„ÆhÙÀ‹"‰ÐRM„5^¼x/€Ö‹…&hÓÞʯùŸ3±M×±­—w¢;öWvÒ¤Im¢W¿õ£O­‚€À þÁ³¦¾MÕÙ{ ºM×±­—šr¢Õ¢“·†Ö˜²öê·~ôi­ ð‚7cÄDQ~ôjŒ>@àoÛˆ:¢üèÕ}€À ÞÈ´Âb Ž(?z5F ð‚7ó~މ:¢üèÕ}€À 0­ Ž˜ú£å@àõ6M¬Ö2­Ü¾}›ÍfwïÞòÃ?‚©S§¶ò:þüóÏEÍš5ËÀô¶^~¹\~íڵ˗/s¹Ü3fØÚÚ¶\ (êåË—ÕÕÕíÚµãóùt¢jÇPí0º4oG2¼[³‡²ÙìŽ;bæy›Ê ¼ Í¨“)ºËèQÊ|nmmýî»ïÍ îܹ‹þ½d2‹¥¯Ã,[¶ÌÊÊúÐáhBȱcǬ¬¬'<寪#í‹/–&]¼8gNÐì9AZ7ø÷¿OP5mú? LoëåO¼¸|ù}4N`bZ]SÛè‚é'‘HŒúå—˜šš&“©P(„BáâϪu Õ£Kóv$Ãð9}ú´D"¡_óx<¡PصkW =»deeñx<ý—B¡`2™­mæé߯¯««›òŒ/˜?¯¢¢òptÌÛ1C ðúÛ^òO+E,-­vîÚSùº23#cÏîïæÌÜ»ï'Ntí2?8¨¨¨èß§ÎèÉvÿ(&“I—‡¢E¨F”­¹êH©¬¬H¾z•ÇãýþûoÓg2ZרRD{9u¥·íò_LºH™· ”¾Õ\T±é÷ßÎŒ?afàl33óçÙÙOŸfhv Õ£§¯6cGjH¾9<oðàÁuuu"‘(--íÂ… C‡Õ{é—˜˜X]]=vìØÖ6óò?gSÑâ'÷ÍͼxÕƒiÄ´st²#¤c§. ŠÚ¾%âÇý?¬Û¸™’ó<{ûÖÍ™Oìíþµ8ܳk·Ø˜ÃOž>ÁÁÁѧoßãGboß¹Ó£g/:=ãÉãÍ¿-.*ebbúå×+ÜO‹>egï°ô‹¯ììíU’—›÷ûoí;¸,ûŒÁ`(yÇÅõWea”CµÃ(KrðçŸ Æ‚Ðõó ÜþÌ™Ójéy¹¹Z‹ªµgªUS.—·Ð‰nƒajjJ±´´$„ܹsçáÇþþþ„ÊÊÊ;wîˆD"@àååeee¥«oðøñcúnM||¼···µµu½™¼ÑÀKeZ (Jù«žÐÚfH­}/>î·#1ÑßFlµ³·ÿÏïgŽþþÅò.ž]¯\JJˆ[ûí&º‚#GïÛ»[ 0 ûìsNqýú{ÂÃï¶xɨ†þP„"ÔÿïØ­‡!$ûÙ³:õºª&ü³°Šòò/¾ú†ÆÚU+$R¹—ŸPhÁç þ1;¸SŒb0˜Óþ1{Ù×ßÜL¹}èO^^naA¡òÕ˜²5WëdT|ÜïCFŒ2l$!ä?¿ÿ¦Lß°nMA~þŒÀ …‚zUV¦,§®ô·¦ü~þƒœ!ÿ˜Üà{ô)K½{÷PÔϽ½û0™ìðE ¥§Ï[Ö×ÏÿhlÌžïv*ÏlÊõäßNŸîâÙ=ëiæ×_.‹û½cÇÎi÷î&^¸ v”̧O)ŠêÙÛ[&'Zûž²`ª†.Éo§Oõòò)}ùrÛ–MÊí‹‹ŠÔÒ««ÅºŠª«g*«Éå ZîD7½ê®¢¢‚"—Ë/]º$‘HúöíË`0nܸAQÿs\­ØÛÛóx<‹Õ­[7“z3y“3ÏŸ—²3P„"DøKFŸžRWßstvyñ"çæÍ›u2*éâÅ/rn¦¤Ôɨ˗.Ù¶³§+˜vïÞ÷õèéõäñ£#¿üÒzzàŽ4ôý\cF#¥²£­½‹Åª®©®“S×®%—•–Ž|ÿC·Ž]¼}ýŽÆÌÊÊêàênÌÈåò>ýÒGœûÏÏ!å"‘£“sê½;ʬ(Bi}ýæëø<;ëYVæW«¿µ²¶uqs¿r))hÁ¿Œe¥%9ϳß0jìxBÈÛPU'§t¥¿MåoïÚÑÌ\HQžGBˆËhSä «ä+KJŠGùpððQƒ†L¼p6î÷Ó³CÂè¥BúîÛ„ö®îRå’#ŠHå ]éoYù)BýOy(bii-0³Êùù„w\Üè¿¶wq{˜v¯¸¤ÄÊÆ–PĦǘÂ`2œœ‰‡Í#„E©ÅÊÆ–rçÖÍ)3çjï{Z; ELM͘lžT®pt~‡’•õÔΩ½ÖôÒ’b­Eµ°²ÖÕ3•ÕlÑÝt‰D¡P˜˜˜Bª«« !=züø1!ÄÈÈH¹ ŸVïnóÆzµ‘K*‘(w¬««c0êé­l†Ô3Lºtë™v÷ö;·-,­ qâh̃i5Õ5ºöÊ„"ÖÖ¶&æ–R¹‚Ë3V(¨ÖÓë4Œ¬áo›(B(êÿw¼GéÒ­§LNYXÙBÞÿpâÔÀÕCPQ(ô.ÉIçO™8ïý&óEXqaNBý·<ª¯ß|rù¥ÄsÝzyÓÕZZÿv"1á?†Œ2ZBJŠ‹erJ¡PH¥6›-“SºÒß²òÓO™d*·”§ÉLhI)Èϧ-)*b2™|Ss™œRë0 Š’Éÿ¼Q¡P¨×Ω½»‹õìiFII‰¥•¶¸‹èï0y¹¹„÷N]ÿ<´FºTZ§µ¨W.Öß3[ôD7ÝóçÏ !666„cccBˆ»»{=´n\ïnóÆfk[ۢ‚ªªž±1EQ/r²;{v×ßZÛ ©g˜tíÑûÉ'ÅöôêÓ¹kÏ£Ñ?ÿrð§NžÝ˜,®ZO¦ßÿÈpÇ ´ÙÀ«1o›êê¤wnÝ”ÔÖ>NO=ûÛ ¡…Õ˜‰Ser…gOS³ ¿;·w{·s×ÙOßé`çàÔÞÕ=9é|úýÔî««k !l7åÚÕÂü<±¸¶º¦–ËåB(Š’©¬œ•5Ó[º†æsçæu±¸68ì ž±1RŸ›vç‚·Nžl6'ùÒ§÷ïýQYQaim-“+t¥¿eå§×÷¨¦+OS—Þ|¾ åÚåþïÈ‘ó²¤ÈË·?ƒÉ’ýygè¿g“¢¯I õôÿ2³°9füï'nZýå§3çÙÚ;>Ëxô õÖÔÀ\OO').*H<û{;;Ç{·oÚ;:›[üY~Õt§wÌ-¬uÕžÙ¢'ºq Eqq±L&{ùòåÓ§Oy<^çÎ !vvv\.÷ùóçVVVåååfffô2|š® „Bá‹/JKK-,,êÍäMÎ<žÝzæç=üÓˆ±R®&ÖTW»yt©·´ªRÏ0éÔ­7!äAê‘c'¸tìÌfsîß»=5pž®)Q†;^WX\ßæÉTC!¯++6® ß±iÕÝ?nø¿7bíö}~Ø\ž2Åÿ½Š¢._ˆg±ÇLøäueEÔ;œ;¸ZYÛŠÈ”®ô·¬üÔÿ–Gµx&fÂ.]%—Ë—…Îþnóšî½ûücÞ¿47£¯ÿÿšh)ÿÄés&M ,ÌÏ]÷Õga³?þaǦ¼9 Šèé$„>_pö÷S«¿“ÉdSfÎS¦;8µOøíþÉ?‚õÕžÙ¢'ºq$ÉåË—¯_¿^XXØ¡C‡#F°ÙlB‡Ãéׯ—ËMII‰‹‹»sçNmm­êŽº6pss355½xñâ‹/êÍäMÎ<Ï ñoø•‹gÃf|êXÌÀ!£>úXxó£Oÿ ©g˜Ø;µ73·`±Ø={2Øn;B<{öÑÒÛ)ò—÷:ø 1ü‡=}$ ÑFEì?>åãÉ-‘suÕkƒÁ˜¨&VVˆLÍ„ôJU½®415#„¼®(7X,v³÷—#GÃçLlé:Škk™L&‡Ë50ýïS~ú, ØN IQTÙËbŠ¢¬mít| Ùÿ[8k‚ÐÂrõÖ}•"SSs†Æ—jM×ZTCzfKœècÇŽMš4©%£T*e0t4føb±˜Ç㞉šUkJ¯¦(ª¸0¿ƒêÙ¬·´žÑ׼䉄6wÉæTçãQc›×B÷«¹ÆÍÌù&ær½Vðø&ô_MÌH ß6oöÌY®Ölu¥ÿ­ÊÏ71o®2 ­léwù.WÖw5þó &ßÄ\N¢qt­éZ‹jHÏl¡ÝB8õ]ݵn u’É›ìÕÖíÔÏf} µÍÍ8LàïW›÷w¸ÿÜÖëˆgõš¹ œÅæ ¡þ¶½ºå:: ð‚f&ûL+m½Ž2Lýõñèî†ú;÷ê–ëèT€À ð~îoWG¼çŒJ”×Û2ýý ´õ:ʱ0*QN^oPjjêÛÑbÐê¯I“&•——:tÙ²etÊÑ£G÷íÛçîî¾gÏ4¢® jXÐ4µD:%bßa­—Uº•¿Nž<9((¨…Š—œœ¼fÍš÷ßßÄÄD"‘¬]»ÖÒÒrïÞ½„3gÎXZZ6"ŒhJ•A÷îݧNêááÑ”zÅÅÅ5{à¥õ¼ü%-6}úô¢¢"Í|~þùgGGGÃ+“ÉX,¼éh­íúõëR©”ÃáB’’’Ðvõð|m³°°Øºu+ýÚÄĤåÊvõêUBHpp°±±1!dÏž=L&ó/©²››[xxøÝ»w÷îÝ+‹7mÚÔ O¥æyiÞìï§LIºz]g !“É!ëׯÏÌÌüþûï¹\.!¤]»v†1,,¬¸¸866# õ^...ÙÙÙ·oßöóóËËËËË˳¶¶¦(ŠþkNNÎŽ;233íííÃÂÂèç/ééé±±±iii`Ö¬YÆ Ó•¸}ûöôôôÒÒÒ=z̘1ÃÅÅ…òäÉ“mÛ¶<¸¬¬L"‘lܸQ×±Ti=D^^ÞîÝ»ÓÓÓÁ AƒfÍšÅf³ !sæÌ騱ã’%K! ,°µµ]¹r%}q …ýúõ‹ŠŠZ³f ŸÏß³gÏÇ †ŸŸßâÅ‹õ#bÿñõá:oV­ú2bŸÖ;@FFFNNNj—IÕ’p¹\­ sttìÚµkLLŒ‰‰É²eË>|cggngg§šç®]»FW¹ÿþ³gÏ^³fP(üæ›oÔÊSok7½Êl6ÛÍÍ­C‡‡~ùò%¨µKÐM1|øðýû÷ ‚°°°Ž;B222¶nÝZ\\>>ׯ_¯««KJJš1cÆÓ§Oé?¥¤¤”••3¦S§N¾¾¾111ÏŸ?wqq)++«¬¬ÌÏÏúìÝy\×Þ8þ“…°b (¾” ŠŠ(®·ëREZ©‚H+sݪ½´¯hQ¬‚–¢Õ§­TEÚŠ½< Ѻ€ ,ȪF“ öl$ùýqž›o~É$ëòy¿ü#NÎÌ9ó9'3ÎL&ヒ/ʨT*Ý…¡˜˜„H$rqq)))A .—;gΜyóæá*ðìa]nnnšgqÝ*ŠŠŠêëë,X0gΜٳgççççääDGG¾TD¥R“““­­­¯_¿.fΜ¹fÍüÖÕ«W 7!Ô!Qô¢?D"N lmmOŸ>­Õ’?þøÃÀŽ˜››'&&R(”‚‚ …²ÿþÎÎÎ?þøƒÃáhÕ2lذà Ì@cº¶–ÞíreeåŠ+BÿøÇ?V®\©oH`$iïÞ½,ëúõëUUU¡††‡3k֬ŋ#„Š‹‹ÕC¥Obe _ú/b=¤¾z£££ïÞ½{àÀŽŽŽ””‰4dÈ …B¡îz}¡V:}£]ߊú ñBMž<ùúõë?ÿü³@ ˜0aÂ÷ß— …B„ЩS§ð ‰F£µ´´H$6›}ðàÁ}ûöýúë¯7nôðð \¨T*¿ÿþû[·n ¥RÉ`0B÷ïßGéž±ëÒ,@XE]]BÈÝÝpss+))ill´³³3°¿666ÖÖÖ!¼ú¨Q£ŒoB¨]ÚÕ‹þ°¶¶NNNÆÓ úZ¢oGð [d2ÙÅÅ…F£á)É^3f7_|—¼víÚ;wâK` …pH`vvv, gN8ÁÂCÅÃÃCk³}+Â~鿈õ4’úêµµµ?~VVÖøñãuC„2jõ¨#ܸôMâåïïO¥RÓÒÒ&Nœˆo1QŸ BK–,‰ŠŠÒ*ïåå•••uêÔ©äääÇ.,((8sæLdddPPЖ-[ð%EWWW„ÇCµ·····Óétu®ŸªñÖðt™LÆS>!|·rKK‹T*ÕwÒEáùû¬¶uͲÄãé!¼Oøîé3gõ=,€B¡8::êÛ5Ã;Ò猉ö‹ï²……Å„ –/_ž––vöìÙÂ!a ?FáëÅJ¥R*•âïôm¬ ÷Ë F쇟/¯^ú®zù?_î”vˆ˜ñõ¶µµåççÓh´âââG©ÿ’QßiL¨ 7žŸŸo|èMâE§Ó}||îÞ½;mÚ4ÍåãÆc0¹¹¹îîîø¦WWW[[Û«W¯úøøegg[XX „$‰îB±XŒ233»yó&Ç‹ÅR©ÔÓÓÓÒÒ2//L&———wuuá º4ïz&¬Â××—N§ß¸qcöìÙG(Nš4 Ÿž]\\=z”———““£P_ßQ¯þÎ;ïøúúòùün›‰eоí-;ÒŒÜÍ>Ùå÷ß?''çäÉ““&M"š¹¾&///“üü|WW×{÷îµ¶¶ÚÚÚ¾üX½`ľ͸ø"1ÔWojjªÍ矾uëÖƒ&''“ÉdË—/ÿõ×_Ç7&Ô„ïQPëÙ÷áÃÃÃׯ_ïçç§¹ÐÊÊ*..ŽÉd&$$„††&''?þ\.—§¥¥…††.[¶lРA!Â…S§Nuww?|øpFF†¿¿¿D"IJJ"“É6l`0………K—.555ŧLº4CX…µµõŽ; ETTÔž={ÆÏf³qù%K– „¾ýöÛ… â,pÆkÇŽt:}ÿþý!!!?üðC·ÍÀó¿þ’õë/YbY—ú^ÒëgcØ‘þ`ÌnöÕ.›šš®Y³F&“íß¿? @wHè[ÑÄÄdùòå­­­)))nnnêËÇ/9V/?bÝÖ{÷îÝ+W®lÙ²eôèÑ‹-ª¨¨øí·ßB .tvvÞ¸qãï¿ÿNøé3fãÆ¬@) paö™}²­¶¶6‰¤ùô)™L&•J­¬¬4‹.lmmÅ·‰477Óét@`ggG¡P>Þð%€W<ñzu6$11±¶¶–Ïç5 ßkðZ{u/+++è$¼ÈH¼ ñx@â‰€Ä /‰$^xH¼ ñ=E…¼ ÄãçÔ¯·®YÀ‘ @$^ýõ‰ú(ìC%éðéêW*•J(R©T[[[Íåiiit:=((H«|yy¹\.÷öö†Ð¯¤¤ÄÄÄdäÈ‘ú hF»ÛÂÝÊÈÈP©T!!!¯rLô °Ì<Á`0 8²Á qoR@àÂì3'  nnn~÷Ýw·oߎ—œ={öرc©©©¯Ôþ„†† Ýå?þø£““Sß~¨Ø‘+ ßJ>vR÷£ÕW ëêê¢R©¯uõŽ\.ÏÈÈ8{ö¬L&S*•VVVaaa‹-"“Éx÷Y,ÖÑ£GµÖŠŠŠjnn>{ölêzkƒ¬ÞMÂ`è¶p·ÂÂÂT*ÕO?ýd|Gº}ûvll¬‡‡GJJ ™Læp8ëÖ­û׿þÐmÇS©ÔÓ§O÷:&=mÒO?ýtáÂ…––¥RùÎ;ï8p »ÜOéBŽlýú¹x}?q½#âÞ’tœÖÁëÁ'üÖ­[2™ŒF£!„ ^ѽJLìêêBíÙ³§ººúÈ‘#¦¦¦!{{û>¯‹nF}É c³ÙB¡0##ãµî£Þ9räHvvöòåË?üðî®®#Gޤ¤¤H¥Ò>øÀÀZ J¥²G½ÍAÆRSSñ±¾Ï ÷mGh™0aÂĉ ÏŸ?¿xñâ}ûöùùùü§¯I\.÷äÉ“sæÌ‰‰‰ill¬««ëÝ.÷“Ù^Bx_ÓOãôõ’‚ë·àñ—$ ë1 IDAT‡úøñã{÷îùûûs¹\.—kkk«R©ð»çСCÕÕÕŽŽŽl6_w(//ÏÈÈ(--¥Óé«W¯ž5k–¾…IIIååå ÞÞÞaaaC‡EUVV½±±Q*•îÝ»W_]jøNkœœœÌÌÌðéáÎ;qqqƒF;vL¡P|üñÇl6›ÉdúûûŸmÚ´Õ«W›˜˜à#“Éœ4iÒ‰'víÚåîîŽË×ÕÕýöÛo«W¯Æ§ù¨¨¨K—.ýôÓO‹-277ÇÅrssµú1))©µµ5))I_«êêêRSSËÊÊH$’¿¿¿³³ódÂ*×Ò û¡C‡˜LæÎ;õ5IÓ®]»pa‘H´yófÍ·Ö¬Y3iÒ$«ªª8  §M›&—Ëuÿø>sæŒVGè3𢣣‹‹‹üñG¡PÈãñvíÚedÇIk€é;ªtÛ$@ T*E"‘J¥rppÀÝ]Öê*•ªIÂb³ÙNNN^^^ééé–––Û·o/++KOOwppغu«úXDøçxOlÆ„W_# ½¯ï'N7ŒãÆÓ\>=ÀÿîÝ»„a„CÜ‹üµc쟪ãÇ755½víBèêÕ«~~~fff$ !$‘H¶mÛÖÒÒK"‘vïÞð”””§OŸîÙ³gíÚµƒ ÂÛ!\H¡PÂÂÂbccoß¾­NÃATT•J-**âóùêêÖˆ#ž={våÊ„P{{ûùóçýüüB|>¿¤¤$''gìØ± ÉÉÉFÖÒ.é2ðÏø ¬køðáC† ÉÍͽ~ýúÑ£GÍÌÌÆŽëççÇd2-,,"""Ô¡{ûH&“mÛ¶­¢¢bݺuþþþ™™™êùsܧNòõõ¥ÓéêUjkk•J¥···zreÀ€îîîR©ôéÓ§x‰P(ÔêG|†3Ð*™Löé§ŸÞ½{wÞ¼y111žžžoL «Ð·–VØù|¾ú²8a“4© ÓéôˆˆˆˆˆˆÐÐP‘HTWWgkk«¯Æ}ûöñùüððp„PSS“îfµ:ÂÀ˜ÑäèèÜÙÙ™••Åb±Œé8#é0}G•n›äãããääTXXS]]M¸ËZýB¥R #IØA|>¿¨¨(''gÔ¨Qµµµqqqyyyžžž¥¥¥8ôîÈf8¼ú©{ì}cN=úÂ¥o9âúê\ÿF%^fffãÇ¿uë–\./((˜:uªú­¢¢¢ÆÆÆéÓ§1ÂÏϯ¾¾þÉ“'*•ª±±±¾¾žÇãà\•p!B(&&& ÀÍÍÍÅÅ¥¤¤&.—0oÞ¼O>ùD}=ް.cÚïïïojjŠgM/]ºäàà0fÌü–¹¹ù¾}û6mÚ4uêÔ¦¦&‡cL-…Æw€¾º¢££ÍÍÍ8påÊ•˜˜‰4dÈ “€€kkë×·ŠŠŠêëë§M›6gΜO>ùÄÊÊ*''Gý¡¢R©ÉÉÉ›7oÖü»Ÿ›]]]5·ƒ§D"‘¾~ì6ηoßS¦LY³fÍ´iÓ,XðÆ™° k†°IúÐh´€€€€€€;wî´··üñÇÇ'¬±¡¡ÃáLž|xìØ±=b³Ù¿ÿþ»î.kõË“'OûN_™››'&&nÞ¼™L&S(”ýû÷oذÏ"ÞÍÞÙ ‡×@# |f_ëS¾pé[‡¸¾:׿Q‰BhòäÉ?ÿü³@ ˜0a‚æ‚¡S§N}øá‡çΣÑh---$‰Íf[ZZîÛ·/&&¦¦¦!D¸P©T?~ü£>Z¹r%‡ÃÁSš÷ïßG¹¹¹éþÑ©[—‘‰#ž8­¬¬¼páÂ’%KÔo1 |ÕòÇSK»´ËÀ¿ýMX—­­íüùóÛÚÚ|}}=<<Þ¤>Âw´à“‰Drss“Ëåø]ÝÃÎ***4>|øPó®n?vÛ*ÜÝÉö7 È„UX‹0ì„M2ì—_~¹téÒܹs/^¬¯F¼SÆênÇŒ¦Ó§Oã«ùß}÷‘g$Ýfà¨Òm“¬¬¬¢££U*Ubb¢úäªEÝ/„‘4ÐAæææ4L&»¸¸Ðh4Í)dCS5½=²é ¯Fþ֧̾}áÒ·q}u®Ó/*•š––6aÂ|ÁìììBK–,ùÏá?ûüýýÿçþgÅŠUUUêyQÝ…gΜ™3gNvvöˆ#p1œøóx<<‡ßÞÞn¸.cÌœ9!ôÍ7ß477êàr¹xŒv[ËÖ5Ëþ'-½SÚEøïÒÒÿÞµ¾ºÚÚÚòóói4Zqqñ£G4g2^÷>ÂW[ðŠø/2™<`Àû5lØ0†¿8—Ô×××ÕÕ1 Ýû±Û8ãSZUU•ÖÞ€ VÑÓa“ ())9zô¨§§gLLŒvÚØØàÄÇb©TªoƒêŽ0rÌÔÔÔœ?þ‹/¾À—Õþøãc:®§4X·GM"‘HK–,y÷Ýw•Jå_ýexìF²§Ô­9²é ¯1$ü̾¾§uøù²æò~¾¬/ŒpˆëÃsý•xÑét™L6mÚ4ÍåãÆc0¹¹¹—/_7nÜàr¹‰$//¯³³3((ÈÊÊÊÂÂ_µÕ](‹ñŒÔÍ›7y<^gg§T*õôô´´´ÌËËKIIÙ¶m[WWž«'¬ËÈö7ÎÊʪ¢¢bþüùøûê?¦óòò}ZSSÓÜÜLX£———‰‰I~~~NNÎîÝ»[[[ 7¨ÙÆŒ¥R™””4yòä &DGG#„Ž;¦>è8L.—ßû/<Ó ;ë¦;ÀôU 7©¬¬,''§®®îÙ³gååå$ÉÅÅÅðØ#Œd:Èx½;²é ¯Fê{ߤSÚ·Õÿ „q}x®£/<Ö¯_¯u©••U\\“ÉLHH MNN~þü¹\.OKK ]¶lÙ Aƒ"""ð¡MwáÔ©SÝÝÝ>œ‘‘áïï/‘H’’’Èdò†  FaaáÒ¥KMMMñA°.#¯jS(|DseggoÚ´©««kíÚµFÖ²uͲ_Éúõ—,±¬Ký/éÑc ëº{÷î•+W¶lÙ2zôèE‹UTTüöÛo¡… :;;oܸßòšö‘µµõŽ; ETTÔž={ÆÏf³{«W¯¾qãFHHÈêÕ«kjj6mÚ´páBÍû!Ο?û1**Jëo;ÂVá–Ðéôýû÷‡„„üðÃoL «èéLJ°Iú ?~ü¸¹¹Y.—ïØ±cݺuëÖ­»|ù2a&&&Ë—/ommMIIqssÓwºÕìcÆLNNÎÓ§Oq~3räÈ™3gÖÕÕýúë¯ÝvÖÒÒ²ý¿RRRt 0}GÃMzöìÙÁƒÃÂÂ>úè#SSÓ 6 2ÄðØ#Œd:ÈøI¯^ÙÃk ‘ºÇÞ7æÔÓ‹0Â!®¯Îõ¯>£ j¤¶¶6‰dii©^"“ɤR©•••f1Â…­­­øñÍÍÍÍt:ÝÄÄD ØÙÙQ(”lÚ´iÊ”);vì0P—QÇ”­[ Æ_|¡^¢~*H$0`€Ö‰Œ©¥¯~Âø=‰DL&³G_Èz5û¨¹¹ÙÂÂÂð\—îŸÏ733Óz¬³æ6 †ºƒ‚‚† –`¸U"‘ÈÌÌLýí7&È„Uôôã£Û¤>‰‰X,&“ÉÝ^òÓêˆ^Œ™¾¥5À*ÆÉdõõõt:]÷Ö:ÃcO7’}ÒAýwdÓ×HÃÇÞ7æÔÓÓ0Â!®OÎõ¯¬?@՘ɭ%4M÷I¸Pý£L&¿ˆ‹‹ãóù,‹Çã999á”Ù@]ÝÊÍͽÿ¾¾¿ ¿ßaL-}õ3ÆïaS_Ç>Ro§3´d²³³s·Û”H$ëׯ·²²jkk›>}z·­Ò é›dÂ*zúñÑmRŸÄDó`üh‘6ô ­>ªî}#ÙðØÓdŸtPÿÙºmä‹|Ö^ýSOOǸ?׿]3^}«­­­¶¶–Ïç5JëK¶½SZZ*‹µæNïܹcbbâããƒÀ+ÐG}E©TÞ½{W$ùúúêû ú騌ñÊ{_‹Oâ^SxÆëÕM¼Þ°Ä‹ x9 ñ€Ä /‰$^xA ñ€Ä @â‰$^}­¤¤¤¼¼¿NKKËÊÊ‚( „¨/²rpppss³ú¿ï¿ÿ~ddd||<‹Å:zô(BèÂ… ,+(( @}Áõ­­­8€_[ZZ"„RSSÉd¸‚ Ð׉…BqvvÖ\²k×.&“¹sçN­’çСCÕÕÕŽŽŽl6{äÈ‘}¼U^tjJ¡Pðx<'ð>Ÿ¯~­&‘H¶mÛÖÒÒK"‘vïÞ­T*!úx«;ãUÄ‘hþ×ÏÕ ¿‰Dááá![[ÛÓ§Oë]½¨¨±±qÁ‚#FŒðóóKOOò䉛››Öf^;꼨Ï/}µ¶¶NNNFQ(ë …B„ЩS§prF£ÑZZZzÔP€WPf‘úà/GGÇn‹ÙÙÙ!„–,Y=€·õåT3nÜ8ƒ‘››ëîî>jÔ¨ÚÚZWWW­»òÞl/é¹VVVqqqL&3!!!44499ùùóç}¼UH ³Ïœè¶\GÒ'÷cµµµ‘H$üÄ/€×‘9Râñs´õ%7ÎÊÊ zo'xÄ<$^xH¼ ñxëQ!¨‡ûÞ<=zhTff&D ! ‰W/Íõq„ x;åÞ¯{ 9ǦwÙ'\jxI ñ€Ä /‰À[x•”””——ã×iiiYYY\M½yœDpppss³ú¿ï¿ÿ~ddd||<‹Å:zô(BèÂ… ,+((â ,;;[*•"„,,,ììì¼½½MMM!ñ2еµõðkKKK„Pjj*™ . “Éôõõ}úôiuuµ………——$^F¡P(ÎÎΚKvíÚÅd2wîÜ©U’Ãá:t¨ººÚÑÑ‘Íf9!Äf³™Lf``àñãÇét:›Í>|8B())©¼¼¼¡¡ÁÛÛ;,,lèС¸°“““——Wzzº¥¥åöíÛËÊÊÒÓÓ¶nÝêàà ¯¼RÈd2‹Å’J¥ÕÕÕ&&&xa~~¾™™Ù AƒÊÊÊ&OžL¡Pîß¿ßØØhbbâììüÎ;ïÉä'OžTTTL™2…N§?~ü¸²²r„ ,‹Ëår8œÉ“'766VTT<þÜÄÄÄËËËÕÕ!ÔÚÚZ\\,‰ètº¯¯¯ÍßÞ­¦P(x<Çx ŸÏW¿V“H$Û¶mkii‰%‘H»wïV*•¸piié‰'ÆŒSUU¥~ö+…B ‹½}ûvFF†zËEEE999£Fª­­‹‹ËËËóôô,--½víšZðJ‘Éd>¼ÿ¾³³3ž^Aµ··×××?|øÐÞÞžL&_»v­©©ÉÇÇgРAUUU%%%!ƒÑÖÖV__âr¹mmm8ëàñxt:!ô矶¶¶N™2ÅÛÛ_‹S(W¯^•J¥'N$‘H………*•êuM¼D"QxxxxxøÆ +**jllœ>}úˆ#üüüêëëŸ}!D£ÑZZZð[vvv, 'U8U*•ßÿý­[·R©d0êí888˜››ãŽqqq¡Ñh$ɘZðê0`ÀŒ3jkk }||ðr333333„PGG.†—3™Ìúúz±XŒïǯ¯¯¯¯¯777¿²²ÒÞÞÞÎή¼¼¼¬¬ÌÆÆÏ 4ÈÖÖ¶ººº¼¼¼¸¸øÝwßÅS6ÞÞÞ¯ÎîSûuëãÆc0¹¹¹îîîø-WWW­»òÕÄb1ŽøÍ›7y<žX,–J¥Æ|Ñ´Gµàï"—˹\nCCƒ\.Ç3UZìííMLLø|þ!CðeG'''œZáKŠõõõÆ ³µµ¥P(õõõ8©R(Ïž=8pà°aÃjjjðmû¦¦¦Ož<±¶¶¶±±innf0àÁƒÞÞÞJ¥Rë…»»ûËÈ;ûuëVVVqqqL&3!!!44499_‘%4uêTww÷ÇgddøûûK$’¤¤¤>¯—¶¶¶[·nq8''§Ñ£Gë033ó÷÷W*•/^,,,tpp;v,~‹Á`˜šš’ÉäâoGª³1…BQVVöŸÿü';;ÛÒÒ?¥‚F£Mš4ÉÔÔE¯¸¸X,«T*…B¡R©t_¼œfŸ9Ñm¹"ŽÄÏÕìEM"‘ð· kmmÅww577ÓétõwMû¶ݽ›ëãŸo§Üûu=:Ëgff÷k“¤R)•J5|+¹…B¡P(4ïÙÇd2‰DêQFÑ£ ™#%?GëàQ_NZYYYR}O=“Éì¿Zð*ëÅCí) a¢¦›ŠýàYóx@â ñ€Ä à­G…`¹÷ë €‘233!xõÒ‹<¢ xÛô÷C¼Þ`p©à%éÁŒWGñè÷Ä .Ƽ ¸Ô‰$^/H¼ ñ‚@â‰€Ä /£dddœ>}ú%TTRRR^^Ž_§¥¥eeeÁP@£¾ÈÊÁÁÁÍÍÍ!:>zôè+Vxzz¾ÈsrrT*UHHH‘Øûï¿Ïb±Ž=Šºpá‹Å ‚Ñ€W7ñB¹»»oݺõÏ?ÿ!TUUuàÀ¡P8mÚ4¹\N¥þ_“¸\î·ß~[^^N§Ó§M›¶zõj¼'''//¯ôôtKKËíÛ·—••¥§§;88lݺÕÁÁA·‘ ÅÙÙYsÉ®]»˜LæÎ;µJr8œC‡UWW;::²Ùì‘#GÂ@_yÑY•JU__êÔ©ŽŽŽ™3gª°°°ØØØÛ·ogddà…|>¿´´ôĉcÆŒ©ªªÊÌÌÄË÷íÛÇçóÃÃÃBMMMx¡L&Û¶m[EEźuëüýý333ñeA¼¢¢¢œœœQ£FÕÖÖÆÅÅåååyzz–––^»v°‘ …‚Çãñx<@ ÞˆúµšD"Ù¶m[KKKll,‰DÚ½{·R©„!€¾bìŒWG¢ù_?W3ü¢²²rÅŠ¡üã+W®Ä cbbB"‘ÈÅÅ¥¤¤D½‰DÚ»w/‹Åº~ýzUUB¨¡¡ÃáÌš5kñâÅ¡ââb•J…***ª¯¯_°`Áœ9sfÏžŸŸŸ““¯š››'&&R(”‚‚ …²ÿþÎÎÎ?þøƒÃá6^$áÄÎÖÖÖÀÍûEEE ,1b„ŸŸ_zzú“'OÜÜÜ´ö€0/ê³ÄKßF¼víÚ;wVWW+•J …¢T*¿ÿþû[·n ¥RÉ`0Ô…íììX,Μp‚uÿþ}„‡‡‡ÖfëêêBîîî8]sss+))ill´³³C988˜››#„Èd²‹‹ F#‘HZnmmœœŒ¢P(Š …B„ЩS§prF£ÑZZZzM¼mz4Aó¢—-,,&L˜°|ùòªªª³gÏ"„ Μ93gΜììì#F^ÝÆÆ!T__R*•R©/ÇùÇÃÿd2yÀ€½k$…Bqttttt8p b8«[²dÉþk̘10žÐW¨}²•÷ß?''çäÉ““&M‹Å!33³›7oòx<±X,•JMMM Wôòò211ÉÏÏwuu½wï^kk«­­-BÈ××—N§ß¸qcöìÙG(Nš4‰F£õk,ÆÇ`0rssÝÝÝñ d®®®ZwåôZßgeeÃ}žÞ‰$^/H¼ÞzTêáÃþ€7O•™™ CCâÕKs}!ÞN¹÷ë^BÎñ†é]ö —^H¼ ñ€Ä @âð$^%%%åååøuZZZVV@So'ÜÜܬþïûï¿Ïb±Ž=Šºpá‹Å ‚øËÎΖJ¥! ;;;oooSSSH¼Œbmm}àÀüÚÒÒ!”ššJ&Ã…KèÅd2}}}Ÿ>}Z]]maaáå剗Q(г³³æ’]»v1™Ì;wj•äp8‡ª®®vttd³Ù#GŽD±Ùl&“xüøq:Îf³‡ŽJJJ*//ohhðöö :t(.ìäääå啞žnii¹}ûö²²²ôôt‡­[·:88諯2™Ìb±¤Riuuµ‰‰ ^˜ŸŸoff6hР²²²É“'S(”û÷ï766š˜˜8;;¿óÎ;d2ùÉ“'S¦L¡Óé?®¬¬œ0a‹Åâr¹gòäÉÏŸ?711ñòòruuEµ¶¶‹D":îëëkccó÷G w«) Çãñ^ÂçóÕ¯Õ$ɶmÛZZZbccI$ÒîÝ»•J%.\ZZzâĉ1cÆTUU©ŸýJ¡PÂÂÂbccoß¾‘‘¡ÞrQQQNNΨQ£jkkãââòòò<==KKK¯]»f ¼Rd2ÙÇïß¿ïì쌧WBíííõõõ>´··'“É×®]kjjòññ4hPUUUII BˆÁ`´µµÕ××#„¸\n[[Î:x<NGýù短­­S¦LñööÆ×â ÅÕ«W¥RéĉI$Raa¡J¥z]/‘H¾qãFÅŠŠŠ§OŸ>bÄ??¿úúú'Ožà·H$ÒÞ½{ñÔWUU^àæææââ‚™››'&&nÞ¼™L&S(”ýû÷oذ!Äáp ×€W‡X,~øð¡\.wvg † IDATv¦Ñhÿ/!“g̘1nܸÖÖÖÎÎN—!C†Œ3†F£=zôH¥RY[[›˜˜…B¥Rùüùs ‹çÏŸ#„„B¡½½=Þrggg[[›““žÙª««“H$...,ËÑѱ³³³µµõo@ïïñJNNFQ(Å„B!BèÔ©S§OŸFÑh´––ü–‹ÅÂIÎ@•Jå÷ßëÖ-@ T* †z;æææ¸c\\\h4‰D2¦¼: 0cÆŒÚÚÚÂÂÂÆÆF¼ÜÌÌÌÌÌ !ÔÑÑ‹áåL&³¾¾^,ãûñëëëëëëÍÍÍ\QQÑÐÐÐÕÕ5pà@„¯¯ï½{÷îܹSSSãëëkmm7õðáÃŠŠ œ±à[û_ËÄ‹B¡8:vÿ«Òvvv¡%K–DEEu[¸  àÌ™3‘‘‘AAA[¶láóùF6¦GµàoD&“=<<ÊÊÊ8Ž:ñRÃéW{{;þo{{;‰DÂ_~8p ŸÏ¯¬¬´···³³+///++³±±Ás@ƒ ²µµ­®®.///..~÷Ýwñ”‡‡‡··÷«³ûÔ~Ýú¸qã Fnn®»»;¾CËÕÕUë®|5±XŒ#~óæM'‹¥R©1_4íQ-ø»Èår.—ÛÐÐ —ËñL•{{{>Ÿ?dÈ|ÙÑÉÉ §Vø’b}}ý°aÃlmm)J}}=Nª ųgÏ8lذšš|Û¾ƒƒƒ©©é“'O¬­­mllš›› †@ xðà···R©Ôzáîîþ2òÎ~ݺ••U\\“ÉLHH MNNÆWd M:ÕÝÝýðáÃþþþ‰$))©ÏkÀߥ­­íÖ­[ÇÉÉiôèѺÌÌÌüýý•JåÅ‹ ÆŽ‹ßb0¦¦¦d2yàÀøÛ‘êlL¡P”••ýç?ÿÉÎζ´´ÄO© Ñh“&M255Å_Ñ+..‹Å*•J¡P¨T*Ý/'¤€À…ÙgNt[®ˆ#ñs5{‘@“H$ü-ÃZ[[ñÝ]ÍÍÍt:]ý]Ó¾­Ewïæú8ÂçÀÛ)÷~]Îò™™™ÁÁÁýÚ$©TJ¥R ßJ®E¡P( Í{ö1™LF"‘z”Qô(FæH‰ÇÏÑ:xÔ—Ó£VVVF–TßSÏd2û¯¼ÊzñP{ …B˜¨é¦b#xÖ<$^xH¼ ñxëQ!Xîý:`¤ÌÌL$^½ô"(Þ6ýý¯7\jxIz0ãUÄ‘@¼ú=ñ‚‹q/.5@â‰€Ä /H¼ x@â ñze©T*@ÐÐРµ<---++K·|yyyII Ä­GJJJÊËË ÐŒv·…»•‘‘qúôéW<&úØ f.—ÛÚÚ Cú>ñ $ÂãñzTSWWáòàààÀÀÀ„„õ’³gÏ®[·îͱ\.ÿé§Ÿ-Z´jÕª¥K—þúë¯J¥¿{áÂ…‹/ꮕ””´{÷îžÖõÖ‹ONN6P@3ÚÝîVNNNNNN:‚ÐíÛ·q_àQÁápæÏŸýúuc:.888$$ÄÈ]î“&ýôÓO|ðÁG}´iÓ¦Þí2¼µºÿÉ ÄÄD|HݳgOuuõ‘#GLMMBöööÆWÃf³…BaFF†¾·nÝ’Éd4 !TPPð&…øÈ‘#ÙÙÙË—/ÿðûººŽ9’’’"•J?øàk%$$¨“3²‘RSSÉdrîÛŽÐ2a„‰'ž?~ñâÅûöíóóó ø;N_“¸\îÉ“'çÌ™ÓØØXWW×»]H¼ôrppÀ/p¾åäädfö¿ÛÈáp:T]]íèèÈf³GŽYUU•0jԨ͛7‹D¢íÛ·GEEÕÔÔTWW+•ʈˆˆÍ›75J«Š¡C‡>~üøÞ½{þþþ\.—ËåÚÚÚªT*}µ „ÊËË322JKKétúêÕ«gÍš¥oaRRRyyyCCƒ··wXXØÐ¡CB••• …Ó§Ooll”J¥{÷îÕW—&.—ûí·ß–——ÓéôiÓ¦­^½ÚÄÄŸx˜Læ¤I“Nœ8±k×.www\¾®®î·ß~³°°X½z5>ÍGEE]ºt Ï™››ãb¹¹¹'Ož$‘HëÖ­›4invkkkRR’¾VÕÕÕ¥¦¦–••‘H$ggç7&È„U®¥öC‡1™Ì;wêk’¦]»váÂ"‘hóæÍšo­Y³fÒ¤I„5VUU8p@(N›6M.—S©ÚŸ 3gÎhu„¾1£)::º¸¸øÇ …<o×®]Fvœ‘´Xjjê;wâââŒ:vì˜B¡øøã»m’@ P*•"‘H¥R988àƒƒî.kõ •JÕ$a±Ùl'''//¯ôôtKKËíÛ·—••¥§§;88lݺU},€×Wïÿâ—H$Û¶mkii‰%‘H»wïV*•Ç2dHnnîõë×=jff6vìX???&“iaa1hÐ ÝM?ÞÔÔôÚµk¡«W¯úùù™™™‘H$}µ „RRRž>}ºgÏžµkת·I¸B¡„……ÅÆÆÞ¾}[ýyBB‚@ ˆŠŠ¢R©EEE|>ß@]j2™lÛ¶mëÖ­ó÷÷ÏÌÌ}úˆ#üüüêëëŸ|øi\Ãe0øê-NÈ?~Üm«pKt¯'¾A&¬ÂÀZ„a'l’a¿üòË¥K—æÎ»xñb}5â2~Tw;f4>}_Íÿî»ïŒì8#é0333|á²²²òÂ… K–,!\‘°IVVV ÑÑÑ*•*11Qý÷ƒu¿FÒ@988˜››Óh42™ìââB£Ñ4§àuGíõšvvv¡%K–DEEi.okkËÏϧÑhÅÅÅ=RŸz Ÿüüýý©TjZZÚĉñ±Þp-þþþ^^^YYY§NJNN>|ø0á‚‚‚3gÎDFFmÙ²_íÂóOø[™ííííííøÈ®¯.5|µEýuN@@&“ ``¿† F£ÑÊËËår9¾³§¾¾¾®®ŽÁ`899iær¹ºéa«ð™»ªªJk o@ «0f-M„M2 ¤¤äèÑ£žžž111bòçŸâĹT*Å7¼ëRw„‘c¦¦¦æüùó»víJKK+--ýã?¦L™ÒmÇõ”æ›9sfAAÁ7ß|ÓÜܨ[Ø@“H$Ò’%Kjkkóòòþúë/¼\ߨ#Œd~~~:`Æ 7ŽÁ`äææ^¾|Y ܸqÖSSSmll¾úê+•JuðàA|UÅÃÃC$ýõ×_2™Œpkt:ÝÇÇG&“M›6­ÛZ$I^^^gggPP•••……Bˆp¡X,F™™™Ý¼y“ÇãuvvJ¥ROOOKK˼¼¼”””mÛ¶uuuáë)úöH ßHtãÆÇ…‰'ê;õbÖÖÖAAA2™ì믿nhhàr¹_ý5B(<<\}‡u]]]^^ÞƒîÞ½ëââ‚OT†# nI^^^CCCiiédÂ*º]K a“ônllŒ'“É+V¬xúôiMMMss3a^^^&&&ùùù999»wïÖ÷ +ÍŽ0fÌ(•ʤ¤¤É“'O˜0!::!tìØ1¹\ÞmÇar¹üÞáÉTÝY7Ý6nÜ8++«ŠŠŠùóçëŽa}M*++ËÉÉ©««{öìYyy9‰Drqq1<ö#Ù£H¼BÈÊÊ*..ŽÉd&$$„††&''?þüîÝ»W®\Ù²eËèÑ£-ZTQQñÛo¿!„.\èìì¼qãF|S¡ðððõë×kÝäKX‹\.OKK ]¶lÙ Aƒ"""ðéGwáÔ©SÝÝÝ>œ‘‘áïï/‘H’’’Èdò†  FaaáÒ¥KMMMñ‰‡°.­,jÇŽ …"**jÏž=ãÇg³ÙÝ*<<|õêÕ7nÜ Y½zuMMͦM›.\¨.0xðàóçÏoÚ´©««KsVO!¶ ·„N§ïß¿?$$ä‡~xc‚LXE·ki!l’¾Â?nnn–Ëå;vìX·nݺuë._¾LX£‰‰ÉòåË[[[SRRÜÜÜ´Rd5ÍŽ0fÌäää<}úç7#GŽœ9sf]]ݯ¿þÚmÇa---Ûÿ+%%E·á÷dQ(|iÕÈ&={öìàÁƒaaa}ô‘©©é† † bxìF²GoR@àÂì3'^dmmm$ÉÒÒ²Û’"‘ˆÉdöè Yj‘ÉdR©ÔÊÊJ³áÂÖÖVƒjnn¦Óé&&&ÀÎÎŽB¡Ô¨QZÏzø{)•Ê»wïŠD"___}scdðâJKKÅb1áµKýÁدÄãçÞà(”ñï tçU+€ ƒþvíÁ3ô‰­k–S̨K{¶FB@ðöøWâ1ãóŸ%³¶¶Ö÷hÃ'^o!cr)dôtz‘ÇI¼ÒÒÒ=zíו™™ù×_½.mS*•Ïž= …„?¶ü½Œ¿/ë Ÿñ:þü!Ct¸Æ°Ï>ûÌÍÍ-22ò5m¿1.^¼H¥R½¼¼  Ç?7‰Ÿ €Ÿ>¿bÅŠ>øàå´M,§¦¦æææº¹¹áôkÞ¼yøÇû€×Nﯶ¶6…BñF~üóÏ?§P(/²ü[(sçÎ}Éëö¹ü¿ Z¶lÙKn@bbâ“'O233ñÏì(•Êæææ~ªëÙ³gø9ì@?éÍ¥F‰Dòã?®ZµJýCÅuuu1113fÌX¶lÙ¥K—ð 6\ºt):::66!ôôéÓˆˆˆ™3g~ùå—[¶lQS;vìØÊ•+çÌ™¯þÝ· 6äçç³Ùì3flÛ¶­³³Ó@Ẻº7Μ9söìÙYYYx¡X,Ž={6þ­„—Ë]³fÍôéÓ?ýôSõ59r$;;[Ý€«W¯~úé§³fÍúæ›oššš¢££çΛ‘‘¡okG-++KJJZºt©B¡ ¬N+8jZë¶_k]ÂíƇË媻@"‘¨+½víÚªU«f̘±k×®„þn›P(¼pá›ÍVÿ¸!™LÆ¿~¨[á ŒˆˆPÿŠNtttqq±AõË/¿DEEáß_tþ¾m%^]]]çÎ éììüé§ŸðÙT*ÕæÍ›íííþùç?þxçÎ!÷Í7ß,[¶lóæÍ¡„„„¡C‡ž?~Ñ¢EÅÅÅmmmZwqqÙ»woFFFAAúwäÈ‘%K–$$$<|ø077W_a¥R¹yóæŽŽŽcÇŽ;wNýƒ¾‡òõõMJJÊÊÊÂ÷$íÝ»wÆŒÙÙÙb±8??_w7Ô9%Ç;pàÀܹs÷íÛ÷ã?nÙ²%44tË–-Gíêê"ÜZhh¨««ëš5kŽ?N¡P«Ó ŽšÖº„í×Z—pû„ÁLHHðôô¼páœ9sx<NzðOjÆÄÄ\¼xñ£>êÑxèï¶=~ü!4räHÂÚ5ëÒ7Ÿ={¦þ@‡S:}ƒjÆ ëׯ?tèЦM›jjjàø@+ëÒzщ—J¥ÊËËûàƒ*++;o÷AUVVVUUEDDX[[Ïš5käÈ‘ø÷B«V­š9s&‹Åêèè(..^³f•••¯¯¯»»»îïŠÌ;×ÉÉÉÚÚÚÃß5±ÈÈÈéÓ§ûùùÞ¾}[_aÜŒ¨¨(wwwƒ1pà@\2$$déÒ¥#GŽtuu­¬¬ììì,))™0aBssó;ï¼sïÞ½n÷}õêÕ3gÎ;v¬……ÅêÕ«ýýý'MšÔÖÖÖÐÐ@¸5 *•jiiÉb± T§Žf]šë¶_k]}Û×L&ûóÏ?W­ZE§Ó'Mš¤î‰D"‘®]»¦P( Ô£ÑÓßmknn677×ü%¥R©y½º.ƒá B=úøñã‹/þ׿þµcÇ>ŸºÉV¯s/cïñ*..NNNöôô\·nV® ,--ÕçlOOϺº:üZýìõ˜™™9::¨âÒ¥KW®\‹Å5553gÎT/Wÿ(Þ!Cþøã}……B!™L=z´ÖfŒ_àó÷ýû÷»ººÔ×ÔŒ¹§G½¿$ ÿ(ŠúïºÝšF>˜^«ýZëêÛ¾n|JKKi4šƒƒƒn{öì‰ýý÷ß¿øâ ãGO·ÍÞÞ¾³³³½½]ýûöíëììü÷¿ÿ­U—AHˆpP©M›6L&ÇÆÆvuuÅÅÅý?°àÌºÔ uï›ê³ÄË××÷—_~9sæLXXØâÅ‹W®\©þÅ:‹ÕÞÞ.‰pRÂáptϠÇïèèhjjb±XJ¥²½½]«@eeå—_~yæÌ—èèhÂ6p8}…¨T*«ªª SÉdvuu}ýõ×vvv/Þ¶†/–õ®:õO½ka|p7uttà©JÍ*FŒqöìÙ“'O~úé§¿ÿþ{·?ÿüÒÚæææF£Ñ ,XÐmr¬oâ²®®.±Xl`P©•——:tH©T~ûí·Ý~ëÀÛ  –>=¸ÇËÔÔ4,,ìôéÓ‰äƒ>ÈÌÌÄw1ÂÞÞ>''G¥R=yò¤´´tÚ´iºçÅáÇõÕW×®]ûüóÏE"ž4JOOÇ·þ4440 {{ûG Í{Þ‹‹‹U*UKKKaa!þi9žžž®®®?ýôSss³B¡hhh Ü \ìĉøÖõ­fê–ôˆ¾­9::âû“ôТY»zÝ^7€0>nnn666¿üòKWW×ùóç+++q~#—Ëkkk)ÊüùóB2™¬×Ñèó¶ 0 888%%E}ƒ¼>ú¡““SUUUggg||¼fðuBèÙ³gŸ}öY|||XXØwß}Y€>×ão5ZYYÅÄÄ?~¼ªªª¬¬ !D£ÑöìÙsúôéÅ‹¯X±bùòå“'OÖ]ñßÿþ·T*=uêT`` ™™Bèüùóׯ_Gùùù 4hΜ9qqq³fÍ:yò¤ú6/>ŸüÞ{ïÙÛÛè+L¡P¾úê«êêê… Ι3ç×_%l?¾Û½¸¸xîܹK—.ýüóÏñruKzDßÖÞ{ï½_ý544T_-šµ«×íuô322ò›o¾™1cFuuµ§§'¾J"‘ÄÄÄ,^¼xíÚµk×®µ²²êu4ú¼m¡õë×ÏŸ??22288844ôòåË„WKõ Â÷ß?55uÑ¢E£GVßöG8¨BgΜ™:uê©S§&Mš‡ý¸0ûÌ %Ÿ3ò·Š™Lf·OÀ‰DsæÌ9yòäðáõÞjmme0¡––ü   6›íïï/‹ñ[ cMMM ƒJíæ**¾q›ð²ÚÇüÞ{ïõèIZº[ëêêêèèP7Ì@uº´Öí]ã#•J …………Öê---VVVê{×úÖ ¶ !¤T*¹\®©©©½½}O¡D"¡P(šw¡T†«ÑÈŸ ÂÉ’á‰ÇÏÑ:x}ùäzïÆÇÇ“H$‹õûï¿Ï˜1C7ëB©Ï‚Z9‡‰‰‰æ‰Ópa­{ÿõ!|ôë×_maaQ[[;qâÄí»îÖ¨TªfÃzô¤Y­u{×ÂøèËüzZÝËlBˆL&«oäïé Äs«ºЯ^ÞO………ÕÔÔ455mß¾}üøñF®µmÛ6ww÷—ÖÈwß}—ÇãýüóÏøŠx#½äAü ‰×àÁƒœ´Ð4a„—­ï¸7ÏKT^G|éˆðø?Œ,<ÈèçP!²º–/ð0²äµKF–$CXõIKKÃ?ƒÓª««322=z”žžþ*ï)¾«½®®Nóyñ¶Ð¯A3ÞÍ›7Ÿ?®µP.—?}úÿÐÓ+;0z*33Sý³K¯éà|¥âùª}B_©o§aŽŒ1C˜#lçú8Œ°3„5Ì‘ájg9ÈÚÂŽa6À‚faJ5¡ô ›zý¯ L™2Eó7ž¿ÿþûqãÆ=xð o+:þ<—Ëí§½ …ùùùÏŸ?ÿý÷ßBŸ}öÙ±cÇ^r$ƒ‚‚®]»¦oOÅb1þ‘Êøøø/¿ürÞ¼yIIIÝÆêE‚¦nÏ‹P©TÉÉÉñññl6{Æ ê4+55õÃ?Œ |Á'eôíÀxÁ½¾xñbuuuß~4´gï£:ž/Š>?ý„׺€>Ô÷—ÛÚÚ E¾Ä× ×®]›={¶úÜóÚý¨ N·´´¤ÓéøYíŸþy·áè‘‘‘AAAøI?üðƒúçt%&&>yò$33ñP©Tù•Ú~j‘nܸQ[[æïïonnŽñèÑ£sçÎýöÛoæææ …B.—¿:#¡Oöºo?Zƒó¥íc/BÑçã§Ïƒ ÙÂoƳgÏŒù•3À«¬/g¼$É?þ¸jÕª––¼dÆ ùùùl6{ƌ۶mS?~Æ —.]ŠŽŽŽEÕÕÕÅÄÄ̘1cÙ²eê§òë[!4eÊ”ÜÜ\üº²²ÒÆÆF}À=vìØÊ•+çÌ™¯þå›R«««Û¸qãÌ™3gÏž••¥ùá6¯]»¶jÕª3f¨‹Pw‰£Fúì³Ï†¾cÇ„Б#G²³³õU·cÇŽ‹/âwE"ÑÊ•+år9a«4EDD¨ø]\\|ôèѲ²²¤¤¤¥K—*ŠÏ?ÿüþýûúþξpá›ÍV?îL&ã'5v–..—»fÍšéÓ§úé§ê€kY_{ô‡k׮ůÆÎž=û믿Ös¥RÙÕÕ…ó­âJ¥²­­ ÿ…B133Û±cGff&^¥££ãÃ?ììì$¬‚p`ˆÅb­bFiÝí㽉DKÿÿZ[[õ…‘ËåFDDÌœ9óË/¿Ôœß꫆ÖàÔÊê´NØB­h¨{Öð 5 Ýu_|üÿ ÕºŸ/>È+0 IDATÝøhµP_î^½ú駟Κ5ë›o¾ijjŠŽŽž;wnFF†n3~ùå—¨¨¨ÒÒR8uð’­ß_ÿÇúý·¶}s{×±â½?Ü?ðSéáô¿Žž-ïñ¶6ôÙ¾ïTÝ‘Ëå™™™ï½÷^JJJ{{»zùÒ¥Kƒƒƒ¯\¹RXX¸pᬬ,õòE‹]¾|¹±±Q©T†„„ìÚµ«©©éÒ¥K“'O~øð¡uÿñ\¾|yâĉ­­­*•êÀçÏŸŸ9sfii©J¥úßÿý_.—ÛÔÔôî»ïâ%6¥¦P(BBB"##kjjZZZ„B!^ëêÕ«„ÛT*•ï½÷Þ;wd2Ç#\¢R©îÞ½›££©©I7€Û·oÿî»ÿ‹³nuŸ|ò ~7###66Vßžjš5kÖŸþ‰_/Z´èÆË—/ÏÌÌlllÔÜAõ µÂÂÂqãÆÉd2­mè,­M­_¿þäÉ“---ëׯ¿páa Ûc Šùóçgee•••ùûû×ÖÖÆ\*•†‡‡Ï›7¯¶¶V³å±±±þþþéééJ¥R¥R9s&$$¿õóÏ?oÚ´‰° }C«˜ñCšpÅ«W¯*ŠÆÿúä“OÖ®]«P(èR©>ùä“„„„ööö7n̘1£_?Z½¯pÂjFÃðGIwðè …îº/8~Œÿ„ÝÏ—n|4[h a8V÷îÝóõõ]½zõÍ›7/]º4}út¹\®Û %%%}ôÑÆ«««U€þ´j×µÿý“_#hˆ:ÛÄ2%/àd©Û„êË/¿|Ñ/•J•——÷ÁTVV;v,::Zkf>22rúôé~~~·oßV/_µjÕÌ™3Y,VeeeUUUDD„µµõ¬Y³FŽùÛo¿^×ÕÕuèСùùùJ¥òÊ•+3fÌP¿5wî\§ÿ¯½{jêʾ“ðT(8j¨ ËÊbU$å‘R ¶HËCP‰ËGc*´f©Œe ,u„°®"(F°t¬j¥^uu.ˆ´ˆA *áaË+ò Çï}gr““ZÔïgÍšOö{ïÝsvöž3ÇÌÌÌÞÞž8tHCRĽúúú˜˜;;;ųeHÓ¤P( ¥¢¢B*•Z[[“^A=yòäýýýš›T5;OOÏÊÊÊ®®.„пþõ¯?üPCM5044ÔÑÑ122uÙîînÕýE5t–¢û÷ﻸ¸ôôô8::VVV’62iy4d¸páB:.HÛ\OO/33“Á`ìÚµëÉ“'D²\.7&&&##cïÞ½b±ØÛÛ»±±¯é¾xñ¢¿¿?iê†R0í‡4iD|CÑÜÜÜÜÜüòåËMMM‡¢R©¤Í8<<|ïÞ½ˆˆˆéÓ§¯X±ÂÎÎŽ8^éE|4©68i •ZCóØ&¹ OÖ¤q'8~´ÿ„jþû ¡}K¨¡`‘‘‘L&séÒ¥†††‘‘‘nnn+V¬èíí%=pÖÉÉ);;Ûßßß¾}û÷ïomm…[¼´;^¤ÿ«¨ûcLIMtWUUUzz:ƒÁضmé×9±ù¼yó~úé?ûaÌš5 ¿hoo722"¾8 F[[›æ¸x.rõêU++«·ß~[q³Ó²²²7n 6440™ÌQ‹AcÆŒO>ùäøñãÄ2ÞŽŽŽÛ·okè,ÕöÌÉÉBáÜIYµ>žË冇‡geeÁ¬ €—yÇëTâ*Òÿ­~gö˜’š´í$Œãâ₃ƒy<^mm-q[¾µµõã?îìì\ºtéÊ•+U#êééáûó|>¿³³3,,Œxî£9.‡Ã‰DŠG »ººZ[[ûøøØØØxzzæåå-_¾ÜÁÁaÔ¤h4Ú¡C‡¾øâ‹µk×êëëoذ!**JCšsæÌ‰‹‹ÓÕÕ¥Ñh[¶l166îííUº2¾fTWWW×gÏžÙÛÛkV\\¼hÑ"ü æ“O>IIIÉÎÎŽ½wïN? 99ùÎ;¹¹¹ª¹+FÿÛßþF£Ñ¶nÝ:kÖ,===}}ý   ¥Ôž)))‰‰‰,ËÌÌÌÆÆ&==´‘UË£e!±X¬Úæùùù óçÏÿúë¯qȺººÌž=›F£ÍŸ?ŸÍfãÿ``2™MMM¶¶¶êºCÃÀÐ@û**++ýõW¡PHì;ÀãñlllT›!}äÈ‘ÌÌLƒ¡¸ÆkÒ?£68i Ç4¶µi uq'2~´G: T?_¤í£X‰ŒÏç¯^½šÅb©v:à%èKúÅÒ¾!ɰD6"‘HeÃÙˆT6¦D(+½Ö–ðs4„8’]xðóèñ1((hÇŽnnnƒƒƒ&&&šwvvššš}ÆWÑóçÏqx‘H„wCÐ>©®®.QÓįWc¨^ÑÒÖ­[ˆoÒì´©©ê7%FSZN$‘Húûû5$«H*• …B333¥vSê,uzzz Ÿª6²ºòh™i›WTT888(.‚Ʊ´´TœŽìÝ»wÙ²eëׯµÔ Œ1 éqSmÆ¡¡!©Tjhh8¦t&òÑÐÜà¤=¾A;Ö¸?c¢4 H?_ªí£TÂQ0À‹°‘ûÓ?û·­LŒô©Ó§éMÓU7ñ‘È®])9øy´æ /dêõ·¼Œ³uuuI—+ÁÛD/®"âûCéo±6I©û¹išªëÇúE‚JMM544lll\¾|ù¨Uв¦ÅIÆnrêèh_NF§Óµì,U¤ûè*5²ºòh™i\ŧlê*ÒÚÚzûöíÄÄDmrõw ÚéqPmFm¦8“ûÑÐÜàÚo˜¬åØÖ>îÇϘ( ÒÏ—ja”Jø" x…¼Ø‰×Þ½{íìì^~Ü—Ô¤{ÿý÷[ZZ¾ûî»q?ã–žžþ†7ûTþhÀŸîÜ¥-CZkýŸÃ/vâåââò§Ä}qIMº%K–ŒúS2ð"X[[¿ícMåüÉ_úW{ùi¸¢ì¡–!u eH¹Ò§i5ñÒ:Aê؈§OŸÆ[–«’ÉdB¡°­­ ïÐ3j ’šjFFFž>}*‘H^\ë½|¿þú+ü]ðªøs&^ñññ<ï%gTQQ*.. …Jïþãÿ`±X\.7))éƒ>HKKS—‘iRc-ÏKðÏþóÓO?år¹^^^·nÝšHR©ò¤7Bii)Þ  !äçç·jÕ*ÅC£ÿë¿þë¯ýë/¿üŸsSÄË{ÔØÛÛ+•Jñ¯Ÿ_ί©£££ƒ‚‚ð6 'OžT·«>BèÈ‘#?.((À¿?’Édšú¢Ë3‰ššš /]ºd`` •JGFF¦Îø›ôF¨¨¨ðöö&¦eã;J¥¹¹Yñô`²¼Œ;^b±øÔ©S"‘_9qâDII ~ÍãñBCC}||¸\.Þƒ{ÿþý¥¥¥øÝîîîÐÐБ‘Õ`J6mÚTWW‡_ÇÆÆVUUeffÖÖÖ¦¥¥J¥ÒÄÄÄêêjÒ>{öìâÅ‹;vì ~õM¥Rñ¯¾ÛÚÚâââ<<<Ö¯__VV¦®ŽB¡0**jÍš5‡ØV»­­mçÎL&ÓÛÛûÂ… êÊCš›Í®¨¨HHHðööNMM%fÄéxÚÉd½½½xûl6mÚ´ýû÷àwûûû?ýôÓÒ•ª€/*c³Ùeee±±± cªn„îîîÀÿëùóçêZU(nÚ´‰Éd&%%)ÞßB­ZµêÊ•+øµ@ ˜9s&1«#?l6ûúõë;vìðððØ»w/‘EQQQLL ±k?ðjL¼$IaaaHHÈÀÀ@nn.±‘RGG1 ÃÛsŸ;wîÇÄëu-ZDLËJKKçÍ›§«««Lõ.>·!ÔÒÒ"‹ÃÂÂètzTTTvv6FkiiQ<²PÑãÇB .Tº.—ËwïÞmiiùÝwßmݺõ«¯¾zøüg )))%%%ƒƒƒøÔ™L¶{÷îþþ~WXX¸jÕ*Òò¨Ë¢¥¥%%%ÅÙÙ9--íÂ… MMMr¹üÛo¿‹‹+--ݼy³ö½`ooïí핟Ÿç‹/.**"ZØÊÊÊÐÐP5GÕ*à(ŠÁpi=º~ýúÝ»wk_#|qpppÆŒÙÿŸµµµ……>œ[µUB‡f0/^ôññiiiQœ…{zzÞ¹sŸßrùòeâ-ÒñÓÒÒrâĉ>úèðáÃuuuĤÍfoß¾=##c×®] ðgÀTŸxÉåò«W¯ ‹ÏôUÅb±æÌ™cfffoo¿¡===+++»ººBÿú׿ð鄪ÁFehh¨££cdd4êî—ÝÝݪ{H ‚úúúM›6™™™yzz.\¸ðÒ¥KªÑîß¿ïââÒÓÓãèèXYYIĉ‰±³³311±°° -†,BBB.\H§Ó…B¡P(R©TÝ>###õÿþ•—ˉ‰ÉÈÈØ»w¯X,ööönllÄSŸ‹/úûû“æ¨ZÒ`øbDD“É477×¾Fÿ…Tª¹¹¹¹¹ùåË—›šš:D¥RI[uxxøÞ½{Ó§O_±b…âÙ)t:}þüùׯ_—Éd7nÜðððÐ0̰èèè5kÖ¸ººzyyýüóÏÄu''§ììlÿ}ûöíß¿¿µµþX˜¸µÆ«ªª*==Á`lÛ¶M󼧬¬ìƃƒƒ ø”À™3g¾ûî»×®][¶lÙüîU 6‰,--úúúðB{{»‘‘1Ëa0mmmªÑ«««% ñø/zöì•J%άTGCsçÎÅ/ˆ!>ë­¼¼üË/¿tssSMM$}óÍ7ŠWÒÒÒðÁ27n\¶lÙ®]»²²²Øl¶››Û•+Wüüü„B!qfœRŽêª Z0„ЬY³ÆQ#E•••'NœÈÌÌ433Sת555zzzo½õ–ºöôôô¼zõª••ÕÛo¿­¸9ªºñCl?oÞ¼Ÿ~úI)5www*•š ‘H’““Ç·b xá/gg碢">ŸîïïJº†Z $%%ñù|›ØØX⺷·÷¥K—þøã‹E¥RÕS‚ïîH$ÅGФ ”ØÚÚêéé•——(^777ïëëëîîÆS'Ož~囚šJ$’ÔÔÔÙ³ÿsD¹………L&«¯¯_¼x±Ò½Àqd988œ?>//Ãá”——«ž3kÖ¬¬¬,uÑ-Z„§¾¾¾ÇŽ“Ëå¾¾¾ê~è ® š©F„ßÿ=>>~×®]‹-ÒЪ8ñþþ~|Uµs===Oœ8¡££ãçç7ê0SôäÉ¥l¦Ôyk¼ôõõÃÃÃóóóÅbqpppAAT*U ÓÑÑabbbiiÙÔÔÔÞÞN¬nf2™<øþûïñsFuÁΞ=K,ý™3gN}}ýÀÀ—ËÅ«|BVVVxQ9)"úŒ3>ùä“ãÇë©;::nß¾íàà`iiyùòe¹\þøñãššwwwÕt NÏÉÉÁ‹ÌpîøbnnnOOT*íèè -–Y „FFFi4š¯¯/BhxxXËŽøí·ßðž 2™¬®®ß:rwwïîîÎÏÏ_·nºˆ¤U•ö5R¬‡ÃY¹re`` æVµµµ9sfQQ‘D")..Js¯¹sçÚÛÛß»wOñ¸Fuã!TUU%—ËE"ÑÝ»wñ½U„Psss||<—Ë ÏÊÊ‚Y€©~Ç‹`llÌãñjkk•ž[¹ººZ[[ûøøØØØxzzæåå-_¾ÜÁÁÁÄÄÄÕÕõÙ³gööö‚/Z´?9úä“ORRR²³³cccïÝ»‡ÓHNN¾sçNnn®jÙ£ÿío£Ñh[·n5k–žžž¾¾~PPžž~ºÇçó;;;ȧrŠh4ZJJJbb"‹Å233³±±IOO§Ñh‡úâ‹/Ö®]«¯¯¿aƨ¨(Õòh™BH,ÇÅÅéêêÒh´-[¶hÈ`]]ÝfÏžM£ÑæÏŸÏf³ñ´˜Éd655ÙÚÚª‹HZ…Q³Ó¾F„ÊÊÊ_ýU(â6B</‡WjU„Pttô‘#G233ýýý †â/ŒÃáˆD"ŌՄPkkëÇÜÙÙ¹téÒ•+Wâð|>õêÕ,K5q`"(+½Ö–ðs4„8’]xðóèÉÍuëÖ­Ä·ìóçÏMLLB"‘ˆØÐAÕ¨ÁÄb1FSZ?$‘Húûû5$«H*• …B333œ¡³³ÓÔÔtÔ½Çzzz ”žvuu™˜˜èèèh.–YˆD"ccc*ul·*q½,--§#{÷î]¶lÙúõëG®T-iY£Q©¶êÐÐT*Åk×´§:~‚‚‚vìØáææ688¨ÔãÞpûŽðV{ùiydž,iÞôHv¡^ËË>«155ÕÐа±±qùòåÄEâ;OóôhÔ`г ‚ŽŽŽ–³.|‡ØóBÞÓkTx{X%J¿-PW-³PŒ¤ô.±ÕÖ¨õjmm½}ûvbb¢6™Žú³PRZÖh­ªº¸MêÆ®®.éb`Ò½ì‰×ûï¿ßÒÒòÝwßiÿ¤ ¨Ãçó'===ý ï…½{÷ÚÙÙÁ@ðÚN¼–,Y¢ôÛ10þÎÓ÷Y[[«Û ìÍáââ£ÀËD…&xÓ'^¤G$É?üœœ|þüyí“=}ú4Þ±&^ÿ«´´ï>¥NEEE~~þ'Ÿ|²`Áí“-.. …Ðñx'^½½½===ãˆx÷î]ggç… ŽoÑXtt4q(rss3 ¼Î/±X|êÔ©ˆˆ‘H„¯…ÂM›61™Ì¤¤$±XL„ …QQQkÖ¬áp8xÛñ¼¼¼«W¯vttðx¼ÐÐP.—Kle¾iÓ¦ºº:ü:66¶ªªŠH033³¶¶6---00P*•ÅÄÄÛÖ¼>/‰DRXX200››Kl1uøðaƒqñâEŸ––b •’’âááQRR288ˆù \±bÅ|mnnŽw9?wîÜ?þH¬ knnÆ§Í „ZZZgraaat:=***;;›F£±ÙìíÛ·gddìÚµ«¡¡†^‡‰—\.¿zõjpp°@ àñx±±±ø´c„Ðððð½{÷"""¦OŸ¾bÅ ;;;|`ËÀÀÀýû÷]\\zzz+++B†††úúúæææT*•ÅbÍ™3ÇÌÌÌÞÞþáÇ£ÃÐÐPGGÇÈȈØÔÉÉ);;Ûßßß¾}û÷ïomm…Á€Éõ²÷ñªªªJOOg0Û¶mSÚ½¦¦FOOï­·ÞRŠR]]-‘H8€ÿ‰ÏxVRVVvãÆÁÁÁ††|öâø¸»»S©Ô„„‰D’œœ¬§§C¯êÄËÙÙ¹¨¨ˆÏ燇‡ûûû‡††à·ÌÍÍûúúúûûñ=0â9£©©©D"IMM={6iš ))‰ÏçÛØØÄÆÆ*¾%“ÉB‰dppP5"‘öàÁƒŒŒ ™LvüøñÅ‹ÃàÀäúÖxéë뇇‡ççç‹Åâààà‚‚©Tвµµ9sfQQ‘D")..xbÄ`0ètzNN^°ÕÛÛ«”`GG‡‰‰‰¥¥eSSS{{;^}š3gN}}ýÀÀ—ËUeeeõÛo¿á×ÍÍÍñññ\.7<<<++ f]xM&^˜±±q\\\vvv}}}mm-¾}ôèQG1 ¼Æ‹F£¥¤¤TUU±X¬ÀÀ@Õs]]]­­­}||’““===óòòð2¯O>ùäŸÿüçºu뜜œ,,,”b|ÿý÷aaa!>Ÿ¿zõê3gάX±Æ^ÊJ¯µ%ü !Ždü<ú¥hhhH*•ª¾ÕÓÓc`` ¯¯Oñùóç&&&!‘H4cÆ |Q,Óh4]]]Ò(‰¤¿¿Ÿ €í;Â[íåçJŸ¦M`¯ñ©  €8iÒkúB[IËÖ`âõÊ+.. …/(ñgÏž]¿~ý?þ(//WÌ+((¨¢¢br‹TZZúèÑ£TÓÚJZ¶ðzÓ™²%ëíí•J¥šÉ8LŸ>ÝÈÈhúôéÄ¡“ØÉ“'‰Mù–­×ÜÜLz$ðz˜Šw¼Äbñ©S§"""D"¾Âf³oÞ¼Éáp<===ÚÕÕËb±Î;§½­­mçÎL&ÓÛÛûÂ… Šoñx¼ÐÐP.—KœTQQáááA©zEƒE‹ÅÇÇ/X°`ÿþýŠ×«««qá+**¼½½SSS•¢ß¾};66oÊ/ £¢¢Ö¬YÃápˆý÷…Bá¦M›˜LfRR’X,µ<ƒƒƒJyiYkÒ¸¤FíÒÙlöõë×wìØááá±wï^\A¥Ö+**Љ‰©©©O&˜x½p‰¤°°0$$d`` 77—N§ãë---ÿøÇ?X,Ößÿþ÷S§NíÙ³',,lÏž=™™™‰D1™L¶{÷îþþ~WXX¸jÕ*ÅwmllRRRÎ;÷ã?âÅRr¹üÛo¿‹‹+--ݼy3é„Peeå*ð>izzz³gÏÆÿ¯˜WKK > ²¥¥%%%ÅÙÙ9--íÂ… Šë¨ž>}úÕW_ÅÅÅáÝËRRR<<|˜Á`\¼xÑÇǧ¥¥Eé|IUJyiSkuqIÚª9âX'Nœøè£>\WWwåÊÕÖc³ÙÛ·oÏÈÈØµkWCC|>¼f¦Ê£F¹\^ZZš••µtéR7kÖ,¥‘‘‘L&!dhhéææ600ÐÛÛÛÑÑñÖ[oÁA}}ý‰'ìì쮪‹ÅÂ/ìíí>|èèèH¡P(JEEÅâÅ‹­­­BªWBOžmrTôäÉ“%K–¨KáÁƒ2™ìøñãªý¼º¦Ð/}}ýðððüü|±X\PP •JÇšƒÁ Óé¹¹¹===R©´££ƒx«££ÃÄÄÄÒÒ²©©©½½/îill¤Ñh¾¾¾¡ááaÕ+!.—{MÅDf]!ƒo¿ý¶²²OnpÉsrrðBûÞÞ^„­­íÌ™3‹ŠŠ$Iqq±@ u—-k=‰ýHš#VUU%—ËE"ÑÝ»w]]]Uã677ÇÇÇs¹Üððð¬¬,˜uxÍL¹í$Œãâ₃ƒy<^mm­º‡†êÐh´C‡}ñÅk×®Õ××ß°aCTT~ËÕÕÕÚÚÚÇÇÇÆÆÆÓÓ3//oùòåsæÌ‰‹‹ÓÕÕ¥Ñh[¶l166îííUºòâ*;kÖ¬ôôôÍ›7Ï;—Åb¥¤¤$&&²X,333›ôôt„Pttô‘#G233ýýý ^ã¥=-k=‰•"ÍÑÁÁ!ÔÚÚúñÇwvv.]ºtåÊ•ªqù|þêÕ«Y,ÖX« ¼(+½Ö–ðs4„8’]xðóèW®b]]]&&&::Ê3ËçÏŸã÷"‘hÆŒø¢H$266V\¥¤zå¥ééé100P|ö744$•JñâªñѲ֓H5Ç   ;v¸¹¹ *ýè˜jöá­öòs¥OÓ&0ž,áí4„ÑëoÑy]Û‹t…>Rø#1ÿPz­îÊK£ºg,é¬1Ѳ֓ˆ4G„®®®â/ €7Š4x9öîÝ‹÷ø`âÀ‹åââà G…&€‰L¼À›0ñêíííéék¬èèh|*³6š››adàžx‰ÅâS§NEDDˆD"|E(FEE­Y³†Ãá;¤³ÙìŠŠŠ„„ooïÔÔT„PfffmmmZZZ`` T*e³Ùeee±±± û÷ï/((Àûûû?ýôÓ¢¢¢˜˜˜ššxã&^‰¤°°0$$d`` 77—N§ãë)))%%%ƒƒƒ×¯_Ç[ZZRRRœÓÒÒ.\¸ÐÔÔF§Ó£¢¢²³³i4ZKKËÑ£Gׯ_¿{÷îÅ‹ሥ¥¥VVV†††l6{ûöí»víjhh€Q€7bâ%—˯^½,x<^ll,>.!400pÿþ}—žžGGÇÊÊJ"VHHH``àÂ… étº@ 044ÔÑÑ122"vUˆˆ`2™æææÞÞÞMMM¡‹/úûûãNNNÙÙÙþþþûöíÛ¿kk+ŒLÐTßÇ«ªª*==Á`lÛ¶Mi3úêêj‰DràÀüOâ­¹sçâê6IŸ5k~ajjêæævåÊ???¡PøÞ{ï)sww§R© ‰$99YOOF ^Û‰—³³sQQŸÏ÷÷÷ 500 æL‰$55uöìÙÚ$%—ËI¯ûúú;vL.—ûúúÒh4âúƒ222d2ÙñãÇ/^ cô ¬ñÒ××ÏÏÏ‹ÅÁÁÁR©!Ä`0ètzNNÎÐÐB¨··WC"VVV¿ýöé[îîîÝÝÝùùùëÖ­ÃWš››ããã¹\nxxxVV̺ð¦L¼0cc㸸¸ìììúúúÚÚZ„FKII©ªªb±X‰‰‰¢|ÿý÷aaa¤;&“ikkkkk‹¯ðùüÕ«WŸ9sfÅŠ0D0Y^±³-,,ˆÚÚÚž={¶§§ÇÀÀ@___¼páàôéÓøÅŠ+._¾Üß߯$nw!„öìÙ#“îuعÞÔÔ”˜uišcêè̘1CõzkkëíÛ·}||`4&^/\zzº±±1´^(hkkkkkkh¼hpÇ &^@Ó§Oã­öðjG(((hÇŽ«W¯ž”Ô6nÜØÕÕ…úý÷ß§OŸŽ8úì³Ï‚ƒƒÇ‘šŸŸßÐÐT*Õ××_»vmll,B¨¸¸xÞ¼yÄæ ÈÏÏ'ö×ýSzÐìõ¹ãÕÛÛÛÓÓ£îÝèèè+W®¾uòäI77·1åÕÜܬî­S§N•”””””ÌŸ?Û¶møõ˜f]JEåp8×®]ûꫯNž<©nØW†ÞѲ¯=zô—¿üEݬë¥õ>ðúO¼Äbñ©S§"""D"¾RQQáááOrÌÌ̬­­MKK ”J¥l6»¬¬,66o –˜˜X]]b³Ù ÞÞÞ©©©8©§OŸnÚ´‰Éd&%%íÙ³§¬¬ !TTTSSS3¦r …¨¨¨5kÖp8œmŠŠÃP('''==½úúzÅy<^hh¨—Ë%D"­…¢¶¶¶;w2™Looo¼¥Y[[[\\œ‡‡Çúõëqq:7oÞäp8žžžGíêêŠe±XçÎÓ2i}U‹§Te¥µ¯±[·nçlNÍÞBh¥×Ú.âÿž%ŸªFFF Ž;Ö×ׇ/Êd²€€€ÿûßÃÃÃ---r¹¼¿¿Æ r¹<00pݺu×®]#þyóæMüÂ××÷Â… µµµnnnr¹|Û¶m_ýõóçÏÿçþÇÃÃãÂ… 8—û÷ïoÞ¼yçÎ="-ÎQñÊöíÛóòòD"ÑöíÛ/^¼¨MQ?üðÃÒÒR©TzæÌ777†(ð?ü  »ººÞÿýššœ i-R©4$$$::º¡¡A$={öL&“…„„8p «««¬¬ì½÷Þ«««Sl¥ÊÊJggçÈÈÈÛ·o—••­Y³fddD›ªõ%-žb•UDs_6oÞüôéÓ©Óû^uñÏúá^k—vðdiÔ0III¯ê/¹\^ZZš••µtéR7kÖ,â- …B¡P***/^Œ÷‰044ÔÑÑ122277Ça"""˜L¦j²!!!!:.,--«ªªŠŠŠŒíìì( éää”}óæÍ}ûö988lݺUóž÷ïßg³Ù===ŽŽŽ•••~~~Ú5''ç›o¾JLLTÊ‚Åbáööö>ttt$­…âj0@P__âÄ ;;;„‰‰ÉÇëëë¿ùæ333OOÏóçÏ_ºtÉÁÁ!‰[ÉÐÐ022ÒÍÍm`` ···££ã­·ÞÒÀÄÄDµ¾êЧXe¥ÑÜרóçÏE"‘Í”í}àÕ~ÔXUU•žž>wîÜmÛ¶©~€½Â‹ëõõõÃÃÃóóóÅbqpppAA^>22ÒØØH£Ñð-"|+ÂÊÊj? 477_°`Á¡C‡***»»»ñæææøøx.—ž••¥Í÷.ƒÁ Óé999CCC¡ÞÞÞ ?γ´´ljjjoo'V¯“:{öìõë׉bäææöôôH¥ÒŽŽKKËË—/ËåòÇ×ÔÔ¸»»O¼wHë«QeÒÑÐ×!™LV]]ýî»ïâNÍÞ^ù‰fll—]___[[‹‹Åqqqþþþ[¶lÙ²e >„1 àûï¿ kú_ýõÐÐЙ3g¼¼¼fÏž=mÚ4„ŸÏ_½zõ™3gV¬X¡e:4-%%¥ªªŠÅb&&&N°¨®®®ÖÖÖ>>>ÉÉÉžžžyyy>T¸¸¸øÖ­[¸‡zôèÑÚµk}||¾ÿþ{==½ƒæççûûûöÙg6l ~8¤õU‡¨2iƒhèk|çéí·ßÖÓÓÃÿœš½`”•^kKø9BÉ.<øyô+W1‘Hdll¬¸&I"‘ô÷÷Ϙ1c| vwwûøøäåå-X°`"ëéé100ÀÏ¿&^ÔçÏŸ›˜˜àDÆTµ®®.ÿ>žÇãA;¼QþùÏ~úé§\.×ËË o¢APPPEEŘÒ÷óóóòòb2™|ðÁñãÇ¡Á&^cÓÛÛÛÓÓóZvRbbâ8ö R}åÊ•—w"ÙM®©S’1•§©©©°°ðôéÓYYYåååýë_5Ç=yò¤â¡IZâp8×®]ûꫯNž<9Ž f'½úÍÍÍð¯W€X,>uêTDD„H$ÂWÚÚÚâââ<<<Ö¯__VV†/²Ùì²²²ØØØ„„„ÐÓ§O7mÚÄd2“’’öìÙC#ðx¼ÐÐP.—K8Ãf³¯_¿¾cǽ{÷ûÅ“nkkÛ¹s'“Éôöö¾pá¾888˜àííššŠ¯…¨¨¨5kÖp8Ò èOœ8QRRBàæÍ›ÇÓÓóèÑ£]]]±±±,ëܹsêRËÌ̬­­MKK ”J¥¤Ù)5A›¸Ð2 A]aÆZG«¢¢B±m•J¢˜¯º~Tju‰4î¨ «Xž/¿ü²  ‡éïïÿôÓOG&“õööâÉF›6mšR]”Ê™˜˜X]]MÚš‡:…BqrrÒÓÓ«¯¯ÿÓ«_TTSSS—0ñš¢$IaaaHHÈÀÀ@nn.NGÉåòÝ»w[ZZ~÷Ýw[·nýꫯð–î---G]¿~ýîÝ»B‡ž?~qqñºu몪ªTÏ´±±±III9wîÜ?þøë¯¿â‹---'Nœøè£>\WWGüç»j`™L¶{÷îþþ~WXX¸jÕ*2##ÃÙÙ9--íÂ… xSJJЇ‡GIIÉàà >ØGIGG1§liiùÇ?þÁb±þþ÷¿Ÿ:ujÏž=aaa{öìÉÌÌÄ‹TS £ÓéQQQÙÙÙxCyÕ씇0j\¹\þí·ßÆÅÅ•––nÞ¼YËìê 3Ö:âX)))Šm«TÅ|Õõ£b;hH¤qGmXÅò8::á0¥¥¥VVV†††Dñìíí½½½£¢¢òóóñ<^©.JýÕÒÒ288HÚš‡ºL&ûî»ïär9>ôÏ­>›ÍÞ¾}{FFÆ®]»à¯3&^Sˆ\.¿zõjpp°@ àñx±±±Ó§OÇo ‚úúúM›6™™™yzz.\¸ðÒ¥Kø­ˆˆ&“innÞßß_UUellìììlggG¡P”²`±XsæÌ133³··W<'::zÍš5®®®^^^?ÿü³ºÀ¸111vvv&&&8dHHH``àÂ… étº@ ¸ÿ¾‹‹KOO££ceeå¨uŒŒd2™K—.544ŒŒŒtss[±bEoooGGij†††:::FFFæææ²#G1¯QãR( …RQQ!•J­­­µÏ!¤áݱ֑´mK¢ÚŒ¤ý¨Ø’j\mV±<ÞÞÞxbtñâE¥âq¹Ü˜˜˜ŒŒŒ½{÷ŠÅbÕºö—j#hê999|ðAVVVbb"î»?½úNNNÙÙÙþþþûöíÛ¿kk+ü¼f^Õ}¼ªªªÒÓÓ ƶmÛ”¾{ÚÛÛŒŒˆ/ƒÑÖÖ†_Ïš5 ¿øå—_¦M›fee¥!‹²²²7n 6440™Lâ:qúͼyó~úé'uŸ={F¥Rœœ”’%ö…ÒÕÕEUWWK$üß9µîD})Š™™Bˆ8gÔÔ4 Guq<˜P^^þå—_*­4Ò\ ŽJm«i?*¶ƒ†¤w¬ kjjêæævåÊ???¡PHz>æÆ—-[¶k×®¬¬,6›­ô®ºþRj CÝÅÅÅÃÃÃÎÎNñfÛT¨¾»»;•JMHHH$ÉÉÉÄAœ¯?³³sQQŸÏ÷÷÷ 500 ¾³ûúúº»»ñö“'OÞzë-¥è ,èïïïêê277—Éd}}}JARRŸÏ·±±‰%-Ó'O–,Y¢.°………L&«¯¯_¼x±†Š˜ššJ$’ÔÔÔÙ³gO¼Y4¤†ŸX/;ÍqΟ?Ÿ——ÇápÊËËñ·²6Ù¯0cE,¹S‡èGÕ î¨‰ˆ«}©ˆòøúú;vL.—ûúúª;"sÑ¢EAAAļpÔº¨Ò0Ôßyçü„QÝüþO©þƒ222d2ÙñãÇ5vàUô ¯ñÒ××ÏÏÏ‹ÅÁÁÁxµƒƒƒ¥¥ååË—årùãÇkjjÜÝÝU¿T,XpèÐ¡ŠŠŠÄÄÄîîn|CåìÙ³xyJGG‡‰‰‰¥¥eSSS{{»âÂ窪*¹\.‰îÞ½ëêêª.0ƒÁ Óé¹¹¹===R©´££ƒ´8XNNÎÐÐBˆXC”dLÔ¥fee…Wj«  D1wÍqGFFi4š¯¯/BhxxXûì´,Œ–u$E”DµIUûQ‰†¤WËR)–ÇÝݽ»»;??ݺuJ%üí·ß=z„’Éduuuø’b\í©ê£zùÕonnŽçr¹áááYYY0ëÀ¯©ÈØØ8...88˜ÇãÕÖÖâŸhá‡_|>¿³³3,,Œô9Î×_žž~æÌ™ 6477O›6 !T\\¼hÑ"&“éêêjmmíããcccãéé™——·|ùr„PkkëÇÜÙÙ¹téR|<³ºÀ‡úâ‹/Ö®]«¯¯¿aƨ¨(Õbàå牉‰,ËÌÌÌÆÆ&==]±$cj u©$''ß¹s'77—4€ÅÜ5Ç‹Åqqqººº4mË–-ÆÆÆÚg§®´ã«#)Å’(5©j?*Ñ0TãjY*Åòèëë3™Ì¦¦&[[[¥f¯««;pàÀìÙ³i4ÚüùóñsFŸc¤C}T/¿ú|>õêÕ,KuÁ%ü)\éÓŽdNr¢+½Öviÿ÷,ù«©££C"‘Œ¬««kÙ²e@õ-‘H„_ôôôà7oÞ&ÞÒëììµÝÝÝb±˜ô­-[¶üðÃcª»jj###ŠÓªQãâ»zãÎnL…k,¥’ŒÚ£$ÍqG-•by8NAAi0‰DòøñãÁÁÁQë¢= C}ªUþtcšÿàÀ£N¨’’’^çC²gΜ©á].—K¡PÌÍÍËËË=<<,X ÆÄÄ¿˜1c†âu]]]ÕåÛê“þ¤N•©©©êÅÔÔTCCÃÆÆÆåË—©îª©éèè(Œ4;µ÷EG‹«Tå±f7¦ÂŒ5–RIFíG-’º¸£–Š(OkkëíÛ·ÕÝØÃÛ£hY— õ©V}˜"º»»'7AÚ\;FÈÇiq»êÁûï9¿~M9oÞ¼éÓ§S©T??¿ˆˆ-cÍŸ?ŸÁ`(þ ì…244¤R©g_·àõãdÞÞÞU«VÍ›7ojõצú0>×nW½ÿž³X,Ö&0ž,i|»êm¤Wçmйsç?¼×ž‹‹ËË,ä’%KHp&h"ý8YcÀÚښجa õצú0¥À!Ù0ñctúôi¼8¦&h‚—cãÆ]]]¡ßÿ}úôéø€£Ï>û,88x©ùùù I¥R}}ýµk×â][‹‹‹çÍ›Gü8`ùùùÄþºÀXyyy‘^/++kR¯ÿ¯ÞÞÞžžž—“Wss³º·N:URRRRR2þümÛ¶á×cšuEGG#„8εk×¾úê«“'OŽc_ÍW‚R•ÇÑ×=úË_þòrf]zÀ+t‚5ŽY×k>ñ‹Å§NŠˆˆ‰Dø ›Í®¨¨HHHðööNMMÅy<^hh¨—Ë%Î3a³Ù7oÞäp8žžžGíêêŠe±XçÎÄBaTTÔš5k8±¯}QQQLLLMM͘ÊIšTEEEDD„‡‡>ÿ.33³¶¶6---00oТP(xÃØúúzÅÕÕHµîŠÚÚÚvîÜÉd2½½½/\¸€¯ÄÅÅyxx¬_¿ž^£¶ÌøšNµxJUVjQû»uë±íçÔì}¯âÜk|³.„^Ó TGFF Ž;Ö××§¸÷£¯¯ï… jkkÝÜÜårù?ü  »ººÞÿýšš"äºuë®]»VYYéììyûöí²²²5kÖàÝP·oßž——'‰¶oß~ñâE"‹û÷ïoÞ¼yçÎ="-Û† ”6TMJ&“üûßÿnii‘Ëåýýý8bgg§\.ÿðÃKKK¥Ré™3gÜÜÜp¼³¥†©Ö •JCBB¢££D"ѳgÏd2YHHȺººÊÊÊÞ{コº:mZf|M§Z<Å*«6Ȩ}mÞ¼ùéÓ§S§÷¼Z¨*MŠœÕM–´Ù@õu»ã%—˯^½,x<^ll,^ME \¸p!N!‹5gÎ333{{û‡!###™LæÒ¥K ###ÝÜÜV¬XÑÛÛÛÑÑ100pÿþ}—žžGGÇÊÊJ"–““Svv¶¿¿ÿ¾}ûöïßßÚÚª¹À¤IQ( …RQQ!•JñOî uttŒŒŒˆíXsrr>øàƒ¬¬¬ÄÄD¥Ÿå««‘jÝ  ¾¾>&&ÆÎÎÎÄÄÄÂÂ_Ù´i“™™™§§çÂ… /]º4jËL¤é”ЧXeÕѦ¯Ÿ?.‰ðA‡S³÷¼r÷½Æ¯ !ôú-®¯ªªJOOg0Û¶m#Ý2žØÐˆØw»¬¬ìƃƒƒ Šg#Ñ)Š™™Bˆ8]¸ººZ"‘ϼ¿Ú1www*•š ‘H’““õôôÔX]Rø˜¼òòò/¿üÒÍÍM5¢‹‹‹‡‡‡êV–êj¤Zw³gϨTª““q¥½½ÝÈȈ˜å0Œ¶¶¶Q[f"M§¡x¤ 2j_ß½{W©é¦ZïxÓ¼n/gg碢">Ÿîïïªyaµ@ HJJâóù666ø·Ú055•H$©©©³gÏV}÷Áƒ2™ìøñã‹/_RçÏŸÏËËãp8åååúúúøàwÞqttœ¬YXXÈd²úúz¢Àæææ}}}ÝÝÝxÚñäÉ“·Þzk⤹éTUVmQûúÖ­[~øáTî}oš×pq½¾¾~xxx~~¾X,.(( V£«êèè011±´´ljjjoo'JkÆ`0ètzeo¬¸IDATNNÎÐÐB¨··_onnŽçr¹áááYYYÚ|ï’&522ÒØØH£Ñ|}}BÃÃÃ!+++m~½8¦={öúõëD1rssñq×–––—/_–Ëå?®©©qwwŸxï¨k:RD•IDs_Ëd²êêêwß}w²ÚêEô>€7Ík»—±±q\\\pp0Ç«­­U|ˆ¦ÈÕÕÕÚÚÚÇÇÇÆÆÆÓÓ3//oùòåš§Ñh)))‰‰‰,ËÌÌÌÆÆ&==!ÄçóW¯^Íb±(Š–å$MJ,ÇÅÅéêêÒh´-[¶#„’““ïܹ“››«!Á1Õ¨¸¸xÑ¢EL&“F£:tè‹/¾X»v­¾¾þ† ¢¢¢ðÓ=>ŸßÙÙFü®=ø¥óÉ«?˜îÉÆ3~?øiM@¯ûsÚ ç“u´åÏ•¤A}q¬Õ^½–®%9¢àÁñö6šižÆ0œÃåÚ;:‡ø¹²±‡ÜäëSÞX:5ŠOdï:¼ªÒ··+ÿuë™c÷'kßo°o@a!$wQtGßtãì`—†ÝÉ{B†Aæ„Öòúñ~âó7òÿø-oÂÀ`wO‰®Q_\©xï­E8Žý¾eÛ¬©ã¯å¨Ävv¹\ÀŸ&/ùÚÐE“§HXšÆ´g6VIx¤yÓúSàâ…”>ᲜP>ñÖôé`N[{íºà•ñ{]¸Í•ç_ø'µÖLó4E57«ofýp®(:Úç¡ç´­\sõšíº=&c÷§b çÀ±;Ÿ”4ÍtvEóßó6ž¼hc­qIý¡%Hë…ÛÏi!†…¢-}À0ˆñr-ûàÒ ˆ¨Æz„=I2µ¹1vöv¼ISfÕkŠá“ z^æpÿmÿÈ3TEIIy­Bg¤pG*“ø¹  !T•›[Ú¬ÑIŠAlOæäìãB`æ•´9YE5ÍZ‚#h]ÃXþ±&åjªÖ@l®ƒ“s°¯Üœù6W—çUÔ«uF#¸\®X*p,Õ‘!w×2ªsNœCýú÷æ·Ê†™{u tšÍeÛ;HŒñF'Þ½¡Jð!†ª,--¯Ut°D„Ð… W ãcÏiùQÃÜŸ™Y¬›±¶ÂbÌîŽCU•••Õ4i &„³Evvñ‘BÖZ§«Ï¾œ¥$؃û „’/^ÕÐŒ_B¼—Pe\+ײø^ƒzÉmtŽÍÀZ¿Y‹Ö¦ßhHh ÇÀZ’ÉNþqÆ0̼JûŸ/žhq•Ÿîk]е‡O]2GXðé¾1Ã-Îi¡å ­…R/»0)fœ™HŒÇÃ+ËuÃ4öÁÊ[RvCC#íÖì(ó‡Mzz~ËÜ—ÍfÜÈè=8f~´«›„cÔjng•n>˜)Wåy Šœïgï$ærq¤Tªo¤ç}¾46Ê §µ©éOÍê?Ø_¢oVìÙÉZü„¾½Þ\±ÓH#„ÐÐ7&¾êÈÑ+óŸ^†B8kȈÞãbÝܤƒFsãFþw§s£cƒÔ•yZ'Ï÷&Æû8ò šjhRåæ|¾ïê«K§ ±B·{W#„ÐKïnóKèÅkw†WÛtköê<‡·ì±Q|Â)ÜIBÅøðoßȈõ¯';TâOÉõŠê¢o?~žÀÒþ·ccúvºùÇÔoö­lÕHmQæKu“ÆE¶îïØ­±£©Û72"#_žÙ×ÞÇ Åeu+wdG‡ûfYj]°]ÊŽÛ»ÚÅ )Ÿµ*‹O5™/ÿ}ÕÎó|¶ vÐÞRuýg¿¨’aµ;§.?×Úf ²Òoá~öÖºÚÖ¦à/Õ½3´ŽÐz™Fø|ñÄŸîk“![ŒÀ dù -ƒ˜¢³Îu/i„vœs'j"cíIMÑLC½©¼L6rŒëþïKœÃL£^‚&èÙ,ºï´XiFúÀ'Ç<$`º¬Ra/—öîîo÷üÆÛZíäH¨”iõˆÃ‹ t28Þ?¹4U%iÊyâ•I£ä†aIÖ“Obî~µ=톡¸øX157ÒÉ–—yñ#¦Œx!TH™47²ªœ}åƒņËÓ_ÚžOP¢­/‡bˆÎÊ©PЄ»\Ö;BfØWZ[¥¨ò‘¹²1ʤ.®5!„ØAëϬûŠÅp†4„ÒÔ*Y|aifzÂŒÑ/qý¡"¢õ§ ²ú‡søíë† \°'Y“)DU_­%UÂÌ1VßQ颳²\«0©,÷[©®ÔrevTŠîoœ¡€ž£å“¼óghÑÝó«"˜Ñ6Ùi›e¬E1¸ï‚O÷™—oÊ.øt߈Á}-F`Æò=´5u7õÍvg®”W”‘ÍÍ´¢‰ ³«ªÒ l—wx½^«ªxp3 ôÄ„¶mŽtgmª¯¤¼6 B§9üe¾+öümQoƒç«®©?rC}±ÿ%%¶ãóÙ¸GBÿ÷†HÝãCµG®‘|߉rBèâÖÃë3´¯ð_m Þö³»ó¯U ô•”džP!à Ÿ9§ Ù|çˇʂ¢Ò;®òýq 4+¹¬¡q Ñg·>Ñ!G~<•ÿÚ¤·]¸êº‹¾h ˆˆÈ0v«¬–Rù’ЯÿÀìùxcEù§ÛÔÁÁœì\õ)±w¸<5­¾å;d=¡åºù¶©›€Ga‚X‹1ïïƨ-KÍh¸“³í{E{·ÉiïÏg5U”׆P!BèÖ‘3ïWØ4.tˆ —§ó¬õçE¢Â”àÎÆ'Ú³vˆýBu$#ï-3\ÒL°B×Ó5ˆåù‚ÅÕ©ea‘–7ƒÃÉûèömŒæ¦YéjjGr›kŽá°zŒ‡~m‹¤}Z¦OžOn¿ŒIû´ä´-ÙlÒÀ>mŠhu-b!„Œ&ªM-ë+U$e·w“‰Çw‰œ ¦ÏñQ4š¾ú,_ÙLs¹l§ZÆ`"ï?fð×£Z¥E C·ü‘7*Dò8óôælMtlLδ,C|÷‰ªŽå†ˆ€—oYűg(½ÀÑÝüãÏê¨èè[©é**ÄŽ0ßÈIµÿAQ­SF/’{#„0 -z{Ú¢V‹ ”±ÏWç5Q¾öBÏ_>rojR•ÕŸ¹t»P+uàÜ;cÊâ¹G„JI-5'¸rל0•UÔ‚HÍ–vªÄV7å"æþç-Þ׊jW7Nz†å˜¬{Cê˲*½·<Ôü£^Uøäê„/«cGkD®‘æéçkcb¢¹FêUFcHl­uÉ$¹«Þ´À•+tw‘P&Õ×EÄ;>Á<!%0†6íS’"_«ÃñiIv\‚¥Í€¦I•…6æ5á"y¼Õ®.7´î7‹› €¿DËý«½±³+šÿž[‹`1`뙌`cÝ6(ж|É1[@°6. ¼§h}d¬ËËV«””¢‰D a,‚E³x&ÆæEYzš¤îd­S4¦Ýå9,Aà†û „.I»X®{…¿!Dà8BÇ1E·Ð¢Í­g>0ÂÕëémž,e¾ŸÖ\öîÜCÛþ wÏp¡D©SàŽ¢¸0Ç?ÇÔ› Ù©z—Íæ’&#ÎfãR?#\;=Pë{K ªöæÍZóÞ.šª2„䡹Á‚/oeò|B¹8B¨ø¦F$wDÑ”~õá\GDÝ ‚kë+rEMpfïÈËÅí¼d÷^ÌÓëH1®ºº!9†aº[9»jcL&2("@§£íìEdUÉ–ýu1oþhŠ”`¢­$§„Îâúò¬\IH ›•f"œí\|åòÑA®£¤¬¾Óâ6~|•àuºÄ"#ª'&õå©Nç‰="9¸•þÅÕºn9"_©¨ÙBÌÝ&Jˆß9‹s܃]K&-¹~·ÎñQžmzï¾0¾úîx-ìï´ìbŸÅ`Bû@'¾ºÒJëô˜£LšU†£@2˜`_¬W–š’Ï!EÕeTp¤öÖ†C­Ò[ß Š#°ÔF|sµÕʰîo6@ϵ»Ü×Ö3Ši!dN?±»—ûbV.9¶˜w$Âõ7[êÐú¡Pæœ6>6ª}«÷Ðbˆë ôàûj hï¡bo±ÏHIs¢~߉2‡K¼’kƒ_ðéßŽé‡ÆŒ‰quw•uÚ«·K~:ïhª)X~ÈîÕ!Þ‘½ƒDù%ëw6¼5óÎ+g<ƒý·|u–3»÷ I\}üèÖ„¡æÇç"¦Cïb‘û‡œÛrL;0jlŒ[h°;¢LÕµ ‡S*9Ž,J}.»>È]ÚÛƒƒ3tUeí±S×+ý½¤¨èRòy¿~}¼í|<ŒZ½F£g«Íd‹<ô7¯eè¼"øøÀ!ßn,ït‰:ý÷KçŸMèëeçãÄ9ðDZq3GÚXûþå¹xVÝ_7ÊXn1¦7Žu*‰k³¬‹è…?ŽiDsó”IFCaAW$‘û{Xl×IŽ#Ì…v7™žsä0 ½¯™ráà{¦9 Cïj ]ä8×ÊppäR¦ÌÊf€Ù±-÷›·=ÛZ4²®ºuÛ Ÿ€ž£ý[dÛ? ø^:zÿ[dïÜ¡ó°#DGE˜#DGEX›Ó&à lÒ3oÆŽ~Þb©Êæ2õ5—!\ݽ¸¹µùR[$äëLX“ŠÌ«Sñx"Ø gªÈ̬1µ½ƒ%02ÂŽÀCÕUWÕ5© & 'Ø"±ÔÝÃÙürWemEi­ÂD!¾T.5–j0ŒŠb(]iqy“Ú€±¸Žr÷æŠB=͈|‚ƒ¤kuhȺ]b p¶,&Ü !„ª¾¦º®I©7Rù<žØÝÕ£´%¥5­ÞH’áßÑÅÝEÊE1´¾¸ ´Yk „v1‘>›Ip\£ÃÌI“{+SM1×1:Ôµ+%RÚâÂr…ÖHpxÎrºÒ|ÈBDì¼[*ŠzË,Ô-:ÌÙZ̮ݽF1tCMUm£Ro$Îâ …Áþ^˜õþ4_%]›u»Ü@!„ED‡s0ìÞQáó÷áÖW·¶0ÖûÍF´6ý ‡yGîœ1sN~ECWñ¹çŽï5nZ³FßC"œÙù%6é™7£G=gqi†¡ue5Åžü^þ>2µÆ”_Z¥Þ’»G‰¤N°ÀãÈÁNpäÀŽA#&)5ú®¢7˜²¯Ÿ=~z£JÛC"œÝùÝÏÅ?ÆÊòO(‘8¹˜„ºcƒ’¥æºpd.\lð˜Âq"0$üô‘Ý,¡3‡Ã¦ÆöÿF…ªðÖùã¦IÚh"{H„⬫ؤgÞŒ1Fþ9<›Eœ<¼«ƒË'™j")m«·ÂþåÎíúÊòSŽüit‰püä™\Þ`"5:CŠ`õ=´þÞêÇ;ð² JyŒ%€ÇHm]=kÖðð… ’Blz@Ïg2W¯¹Îº7®;ðøÀ¡ <ŽZ¡…S´p†$´ÀŸ…]ðè0 £×ë zMÓÐÿ48Np¹\ŸapÐÀ#Ùî%´píCÏfÕ*eaAaJòåÚÚZŠ¢ Oþ9‚pvqî“Ð/2:YÏhá €îìGðÚž¶(Š*¯,ópó$¢;q :}aAáµkWg>ù—ÇÃl/×1jµšÍ‚“êÇQeYIñ©Ó'í$â  “Édã ñô©“£Gqu÷Àq¸%€NìG]|ʱV§Í-Èil¨w”9†ð¹¼GÝ ­NkÐ8\®P èfªi+ 5of¤9Ø;¤¦_Šˆár¸]eÐ_M¾2kÎÓR{û‡UaµZíîá›5ÀcÁËÛÛÑÙùàþ}aá&“ÑÆAãè1cCÃ#D"ÑC9 À?g?êÊé>µZsõú•!ƒ“ØlNNîí¼Ü¬¨ÈØGÚµVÃçò¥{“ÉT__ëà c=‚•jµ:íVjbßR©½BÑtîâÙ^1q"‘¸kÑh𮩭K$8Ž3ÌÃ9ýý°â€?‡¿@MMµ4Õ|ÐèêæÙ,]Ø:ªÕšäë—F Íç ´ZµŸ¯ÿÃûuBkÔì%ö4M±X,''—ššjGGLJ›ÓÖ××ffg 6‚Ãá*• ;;ñˆa#?áììܵ˜Eñ³PHhþZ4MæR4)‰%Iïø›}ôØa‡;°ÿ V—Ô±ØìÞKQŽãÖ ¹M÷éos|]p±ÀnJ?n¤ËIþÔ:Ó/'J®ç6Ü.U"„¼ÄñA²§‡{‹øì¶Y«õý¨s9¡Z­¹rõÂÈácù|Z­d±Øååå®.òGÝT6›­×ë9M“Árq‘WUW:9:±Ù쇿¬¼´¬²tôȱ†Tªf‚`©TÍ"‘ÝØ1Ž=¤Õ©}¼ýV ªÕjkkkôz}HHhvvBÈÃÃ!T^^†2ÏäñxÎÎ.Z€žC«ÕîÝ¿ÇÁ^›”4Çq’4©Tª§ŽUUTN™:½¡¾þ̹“OÍ~¶ûe14]¿bKúÝ GÅávª^Y1çS„lÉtÙë“`8ÀcíÊíÚ·¿¹æìÔËÓiZ„ŸXÌÒ“Æœª¦ ïžXõb¯¾¡NŒsï¦sæAÿUjÕ¥”ó#’îe³Õ5Õ)©W‚ƒB™¬Þÿ";»†Æ½Á€0œ¤Hœ är·šÚZ£ÉÔýà·s2ëjG&¡iZ­Vq8\½AÏápÕjMScÇŒ¯ª©N»™ÞÙ°ÖTT”;;»„††!„BCÃBCÃD"‘H$2O›g:;»TT”wdühSí[sFx{zùÄR†Rww÷S BhSßI¿äÃ~‚Z4}_I—W‡žìÑ tsS-þöššùmsï^½G -‘H´ZµR©Ðëuà‰i³¦M›áíåãëë[QQa9AíäAcÍkß6¬Þ!yj¨oêFmoÉ¿xÅ}Ëýs¿ Ѝ{ksãÆ}I'¤îÞrºDÕ~~ÖÞ­§ò›{ÈHY«$èAÙlfõ¢M†{{ tÍß~ÿù¼—çNš>íÍ%KùÆú¯ç'~øCò•ÌêîGmZÛÔjÕ¥ä £†îe³ç/:h„Hd÷¨L„££cccƒ^¯Ç0œ¢H‚ ÜÜÜjjj¬=/®#H’ºz=… ؃& ½^Ëáp³snï;°çvv&‹ÍV©•ZvDÒh‚…¿xŽ$;ýu¦’$ù|>MÓ ÃÐ4mžh=MÓ4ŸÏ'I’±¤Mü²C vÜ 8~õfÆÍó.š:uªœÓõ'ã­ëòïëµÖ¦×$„LÙ^øpG¶u)=SØØ)ÃüÅ%T÷;ð˧ìèã;ãÕY* ÿè ÷û-ÌSt³ÃúÐwsÜ;2(mê\qtãó³&Ƈúº»»_S™þÚæxL;~tü¸‰>Þ¾J¥âJòå;·ýôËæí;þHK¿ÑÜÜäääô° bhZ{>³ù·3î;Þvýz>ÇßõÞQ±Àý—7¹1~ kvRÝÊÙJlÛöû/Û~ÿeû–ß÷îÙsî•ÒZM—£I¼|åvØH@G¨´Æ77èæq9åÒž}Ûb¢œß{kÆú5ÿJèåýÞŠõ«Öþ¾hbÜâÏO«µÆŽDëÐk{”Õ¥KçÇŒ/ïd³ÕUgÏŸ>l„ÄNüç¼ï‡E°e޵µµ2GGG’$‹Årss¯(/“Ë]»pí±Á`¸”|14$4(0D«U“$Åb±®¤\V)›Çùê妦¦„^ :­Úd4ôë3 ãöÍ£Ç& Éãuâ‘ÎíSÐÐŽ¬Ú~ÝösRj./ø:Û›üüóÏ»ÜÔ¡ä«JòL¤ÌÚô–‡=¦­K鱆¿¿jø_WºÁHs[}CñýÑ‚q³ßXH5æmXüö´ñÔí³´Yå«}‡uÔw²×\Y:÷Ãâ¥>âG×ámjø'Œ»ÁHwaPLJ­ßñcŸˆZ¸ðGøÐE8޹¹º566>zÈ¡CF˜L¦3NŸ;¶ 0ôÈ1<!DÓ´•ãÂ@š¨š7¿wýz¾Ýø„;dåõšã7ØÞμ^„X [2]ñõáî7Š'ë7¤Ÿ¢)ƒFUYš}åÄîÚ~zùvå]·Ø>n°•€Žùñ@ºΩ¯­-*È]4?1.6Ü××W*•Ž£Jìuäã5Ç"BCûú¹þx }ÁŒÞÜðûiá¿R£¼xñì˜Ñã„­³Ùs§‡NàÄ唋Ûvn½xé¼J¥DˆQªšOŸ;ùýOß½hC#IÛ^×Úò ­ýeÕkcC½<½ãŒYsªÊ<Ÿ6Ö­™?=,À;4~Øúƒ%ê–ÖŽv°É#ŸšÛ¦­U`i\ÐÄ_÷½1kdXˆÿÔs[Wæø¡_^Ÿ;=!6º_Òô¯~™Ðœÿ¿CÛ«üBBÃïÊú5O>p¥3oÓá‹6©Óúû{¿±ÿNÿdÿ4×'xl¡žl_ó65´6™ÛVIŒñöô úüÊöãnq‹ƒØ¦Ä6ƒÒ~#i_gŸ'Þ~çõ—Æ ð·½OµßT,6¿#›€nÅŠË—/ïøüÔë)IÃFèõúÌÛ,‚ýäÌÙ¾¾¾×o¤ :|ÉÞyjö³ŽŽw#J’$²šÑvè Ñ˜UF5kì&÷5ÿH)ÔêÃ×%Ï& ‡Eã<6Bˆß+ÀXTK…]nŽÆˆÅ±ÔÁÉÝ;ºß¨A¡Ò¢ä“ZšA!†,H»ph×Öí[?tôTIã½#L†R¥ž9¸këo{÷Ì*¿s–¸õ%ÇÍÙ×NÚ½së¯;wì8Ÿ|Óp÷”Lêî-§ ËSÏÞ·sëî=û3Ë,œaNݽåd^QòÉöloßZLÄiïþcû–ßöï?”Q©m°<íÄÎ]Çêô” ¥ºqöð®­¿îÙs ³T¹o믷4& (L;¾oûŽ-¿îÚ±ãô¹TØ›:ëJZÑGÂ] IDAT‘#W•›=p€wTd°Xl‡aÇ‹ :,|סs^Réå´¢íGmZ ÔjõÅ gÇŽž ˆÌÙlUuÕé3§†%ˆ¥é7ýýŸŸ÷R@`Pjúu„ÐõëׂƒBßX°($8ìrʥζM­Vóx|¹\Îç TjBH¥RñPÐÜÜÌf³]\œëëêu:=ŽãƒÅ"<<=*+«:uíñí¬ŒCGÊ]äJe3Žc£qïþ=öýú™_fãxb¿ÎŽ.{öî!I’aPiY±»»Gÿ~ý/]¹Øñ‚,^6LwcEëà“Ïfì{:Ð1ü§ŠŠŠŠŠŠÒÂËëp|ɸµ9+7ïO¹|êíIN‹&ÍÕ‘¡ÂíS¼ýúµ,vmmJà+ã¬MÛã5w»„ ç+**ŠsÜÉXÖ½Âõæá“Gÿ[ýßé‹^÷Ǭeß;ò›oþ¾¹§µD¾ùáŠ!ËþH¹ž~èÓÉë_y°^ߦR){åïÎ^¹zdËzñµo¦/»j{]kËZ4vùo%¯mØråÚ•×¼ÖòpêŒõ/2_=pâÔª§Ý6ÌŸ\e¢lt‹mi²ÅÈí;ÐFn~´¬ßâïogl}ÒjF©uK&cYÝ…Mªä5yŠ™ôo?Ä‹f‹b¶~>s×k³®©LººO¼ê_›7ûñX‡¾u -‡I“6aÑ—cÞý695õÔÞŸŸâÕ¦Ö°6ˆ6ú¤ýFb±ÎÑ~SéΖà±Ëim¤ÍJŸ/0™ŒYÙÙý˜5Z]s³¢©©¡å?B¨;7ÄÝI‰«›„â1Î+U{®HŸ†á8Bã°i­ã°µÑL—›c‘sd?†Öd*¡Ê”ÃÕxÜà1ã'Nˆòæ¥?¤$ï×”vŽí?fÒäÞ!öç”ëÛ~™ËyÁñƒÆLœ:bh"».ëôõº–_5ݸæ9xâ´YÃâå·/ÕÑòù¦×äqÃÇO~bxßÌóÍñ­Å,O>”V  í;|Üä)ý"Û\HY’z,¥ ŸäÄ#lÉ?}´D#4fÊÈa}õY§Lw¹-vM6œLÎðˆšâŒ–_ <=!‰go¦Ï·t:çœèmÏC åa1bÜßbL†R&5 êã*ð.žn-o aŠ®¾^Æ:n˜ŒCبM6¥Õê"‡$8J„±cô HÊ|ŠÚJ'0dX®N|O(vð „½©³h“Þh2,.›Ëår9 Ç0Ç ‚À¸\‡Ía³øJ•Ž&õ‰ö€×öôŽK8yú„D,u•Ëu:­ƒƒlάg¶þñ«X"µ—JÝÜÜRo\wsuM¹šìãáƒòõöMN¹âéáyñò?ÿN¿ê†Ëá¨Õ*6›£R©x.BˆÇå*•J.—Óܬäóx!£ÑX_Wïããa˜‰$YK©T*›•î/ÈÕÅ£¢ªÒN$*.)>söôð¡ÃårW‹Kú üýû÷%&&zyzçæä8¹¸tgüššš¤RéÃZìt {´ý|Ä}c“¥DCÜ܆­Ü9ìîßèʯË8ý'8ðlL[èÆQ¾w6#~ Bh”÷/¨D"Êxï)Í®c|Z¦£û9ÕËA(¾u享[ðÍ•ÌBµD¹íu-.¯oØk ™ùÁRKõ¼Û|ŒÀg•)kÝÒè²4fÔ óߤ玱çu¶É6:¼ƒã‚ré‰jÌzÎbeJ¹rö˜~O¯¿OÂU_ç>¿·å+«–WWÚ*zÞw¿þ1òvìÅu¶^`®¡™Åáà;NŸµfhìÀa£†&ö2eÊp¿o‹b,,`c[—ØvP,m$]Û_Úo*ÝÙòôüœ!´|ùòï¾û!ÔØØh+ýÃ1½Aã,‰DZ[[ëããƒrsu[øï7~Ípœ¡î݈ˋPí¾,~bYÝD8KŠjX³Óiùl ǻޛ(CÉ0wþÞz¦ƒÂ„\BHà}ïA®rA~u3B÷=K_—íÆíÚ&IÑ! ¿÷*Jž ¿eZHàZÊÂýÆÏ{ç<í]xúªf„œ,ƤôŃB$F¥È<~]#1eˆ¤Õål–ƒJ ÷°î~¸û±°Ë6:põósH;º{«‡»³‹›—;Ç`oê”P_džÆ.Ÿ—[¤£(’¡Â„C#Š"³‹4"‰¸¤²&Ô§C\¹—ÐZ<÷'²³:4éè±#ýû÷—;Ëkjªœå3gÌþå·Ÿ'ŽŸwízÊé³§|}|zõeJHèséÒÅcÇøûûì?¨³ç…"‘R¥T(š¹\®X,f‹%ŠfEcc#Ï“J¤£±ªªÊÓË“ X:Ž N[SSçééÁæp:^\ttTê´‚Â\’¦ÄvaŒ­?),—söüyDŸ 2p`Ç jsN•a˜ªª*‰äÁ·ÚWUU‰Åb‹ï×îä|BèFqYË”å¿Ç-éCÛÓzæÞÓ€0„kõS«†S­î*l™n‰L›ê&Ì\ù߯Ïþ2ÈE*T—­¸Õƺ¶—G˜íz" !š±Ú-”qå©SïÜù-æv¡ÉìpÛ‹\!$ñ·P†R­yføví¨“{Þ³qzVY²éT³é÷ƒÚ±í¢•§+LC—jI·»_gZ«¡­áÀØ«÷_sþèé —lZ¸fMì…Ë¿9³ñ{[”¥Ö±¥DKº”Åé®?´ÛTº³åxŒrZt÷$§µ%}|üŠ‹‹ýýüÃCÃO99÷Ùy8vçã€$É#Çgݾíëç7aÜD.—kùӿõb{È i÷°Ï ÷R|{D¡Ô ‡ÇhN¦+;ãðÚDN€[wšcmª×PŒ³=×|;qÖS¼Î§j ­?yêŠ}Ô 1CÜø–I“¶g¾µC5‹}ÂPL›éNÅ4ã»úr² ÊUq>’UÌÊa¼ÅNˆ5ͯº¬ªºº,󭛎c'&ñ §íŒÄhŸû2œ¥®7oiŠJjííÌïÍQkÔE%5©©úÀßÜò‚1£:²á÷ýÒÒ±H]÷ÙÚŸ~ý©¼¼1hÿ½#’Fè—(ŠF$àq&”Å †;rɱµ%;»¹ðe“x8¶öZ½íÅ6ï.MZf{šƒ#†ìÊÁzù®-ÓÇÏ×:%·ŽlPœ(3Ÿ½8Z.b5\»j{]kËód“¸8öe¶¢;ÝBpäw ‰®üa²Ñá­;°#ãÒ¾2 ¥^ólÒ/uŽîùÈÑfÂ|yù±ïëƒÄœöCl£hÚTóÊÌ5½íød8ç_3×P–jÞ†­áÃXQƒÆ½öÎÇ»N_Àë.|U©n³Eµ_ Sƒh{ëòæj{àü-sÚŽ\šèšz¢ÈÈÈ(ŸÿÃßçä*•Šì쬯¿ùÇð™3fj4ªÔ׬gH}('ÔÓ˜_¥9{ën~ëèðæd\*TrýößüÞAÝlŽEµW0B.æ°x>†2ê-_ð©-ih™®ªÖò\î;UCË5“âÅç°B†ºN¿¨OS|ï(¥²ZÇs‘X‹Ið| e+,¼Ü…ë4rhLÉ•ƒ·ÊÕ¶+Fp½0†.ÒÞ¹ø™Ô’ ƒ²Ù ˜½Ü+,&aè¸É˜®:[KÂ~Ô)/΢¦eäò9®Íùìë3ç/ß>ùögÿwúýUé{)ÍÐ9YržâûQÛ„Özr&KÆŽ{úÌéòŠr.—_\Z$ Ÿ}zÞ¶Ûê;û(ã®ý7 •U•ž,¡Ñ¨ ×é4µuµžn§k1ëê|||üýýËËËbNœ86~üÄ¥ï,{ïÝåï/]1"iø©Ó'bjêêü½¼¼KJ‹;ß²Ž s{ ÏÿËYAÛç>õËñ«ÕÕ™W\»x_ƒ!Tyêi3^F™TÉ»ÂE~Ó¡PwAÅÁsUõ MMÊNÕ¡¹ôýU;.ÖÔVûîµÿ«"ß\Ö:2Gœ(fá_^®@i+“ßXša{]k˳x~ŸO Øüäó;Î߬ª©ºyùðæSU]è–G×á­;°K ?›ôõ5ÙÚOæ6äfgfffffª)!”¹î_O>÷]«¼´îí3•‰+f¶ÌiÝá6Š>¼dÆ-û©¿/ˆ›ñÅVÏâÿ=·9ûCom845?®úvGF~Y}}MÊáŸ54>PÂm] ‹ tjml$íëLJ333³rªBEÙ™™™™µ&º}×YÔå-Àã•Ó>àã 4Ìd2¿pž$MS&O8`ÐÙsg6~¾1åZò¸±ãG-•Ú³Xl£ÁÆ¡:zЈá¸Ýôþ «w¶Ì!¤"ñ´þ²7&‹FĶ<,ª;͹S!R«T6+››ê*Kn^>v.Ká—0\€c!îë'->{² ¢V«Õªšjóo^.»{”Q™r«¸Z§ÓVæ\ÊÒ0áQö­câl6†eÕhB¤¶6åZcg‡Ã¤¾z³¨Z§ÓVf_ÌÑ2áQöÖbb„¸$ÿÔ™’êNÛT[šßê)Ç|—ð‘Ãs/È®ÑÚ¨βvæß:“R߬ѪêÓÏÝ4ŸÔ°Ö ¤.çfva“RmÐkëËrI„¹tò†ÀNÈûrÙ3¹Š\6A‰D¬ —Õ®Îøð“[®(í…î•¢+ÓúÚ¯\ñÞ™3§˜Ñ²:XªT*8nÂν; ì*w-(Ìó÷ xnÞ _÷ÕS³æØÛ?ÚW‰šL¦Êª*/OO‚E¨Õj6›­Óéjëê<=<8n—Ã’&’aEQæ§«WUW9;974ÔQÉ0ŒH$*)-nYÌ|{}g‹hN5;;;88ø+Z\ŒéÒÕŒ£W^ãòîWoÏ}·Z%pt‹OLZÊ'Bú†¬kתB•ç>“-³0Ó¡Äõï¹?óaߨ÷0~D§žõÎ׊Ý+ú/Êæº„,þ¿ãø%ïE&¸Þû>›ÿÒ‘°¥™ÿK_>y}îë"duù±ëÖ}üŸuó§¿Ñdtòýá]è–î³¹Mv¶ ©Þpª¡ò&Œi™ùKfá0)WUpózÚ½}°êü;õŒlåÀ{·…·J‹E×§nxugÝÿ¥|ÀÅâúlþé_½f>qb\Êp'¾¡·6|Û9ÿÄWO­_Ò ¥œ}"ߨx8IʽoÜ--ÐÙA´¾‘´ímEÁû#G7/ÿúäq¡…W²—xÚµé:‹º¼åø;Áq|Îì§7}ñÇ‹‹÷ööxÇ š¦M&cs³âè±£%Å%OL›ùPŠ“-š\ÔûMcAÇßõÑ5JßpùÈ„0œËJå}‡÷÷r¾ó* ÷„±½ø)ÙWϤj,žPæâu÷â5û˜A†¢k‡®(¾4|À8OÞ} FØ%õ ¿tù@1Îas%ÁýÎuªVö1ƒŒÅ×%·Žo5¦Gß±ú´Ëi4OdïÛkHëPB÷è}ÇNd˜à/³$pèHõ…‹çïÆx’ ¸$üâ>óA“ÅNÀ_U‘qþÖÉðìÂúuå°ƒtÖ€ø ï?ž÷ꊟùŒHÌ–ˆø" õ&S¹¢ªZYîÆ«ÇŒŽsfM™ÿò‹¿mÝg#¶lÙ²… þmÞKXpSSÃ;v <ØÕÕU¡h É/ÌONN™>eê#mp]]½½=›Í6g³z½¾¦®ÖËÃÓÚ- ôÉÚU®XÙÐP·núw—¼ûѪW~´ºº¦â³ .XÈ0ÌÆMV¼ÿÁ{Ë—®]³¾¸¤`Ó矯ü`eƒ7+ŸoÚðÎ{m¿+(È—Ë]…B¡u5Muu•¿Û«Æ«««ÃÂÂz÷þ<<òÈ›ëecºË–Æe/?¾c¢·µ;»îŸlMBHò’#;§ù<Ö2ÊPöÌjô„À?G]]íÎÝ; èää,¶kµÚܼÜô›7Åbñ¼gŸãóùí×ZüÆÂOÖ®S«T6ßXô_wÖóµç2ê–ýæuôƒž’ý;Iݽ¥9nüPï¿ì]8”±|çŽÓ#f̱gÁy×GN¥Ñ»íÌ¥ëyù¡ˆ÷Äø@)SýÙÚ•2·˜ˆ . ;|ôô­¬\‹ûMӫ׬auªH{{ÙS§ÿ¾í·aC’ä®òœ¼Û"¡¸°0ï‘7U­vuuU©T,6Ë|nÖ˳»Ù,BÈD’1$i"M¦å.gà †$I’4‘ÉдÉD¾ýÞÛæ;Yͳ»ß¹ÜµºªŠ¤¨àààœœ„ùùÌåå!óLAÈ]]ÿ´-‰žðü»C\mO?º{,†ÖVfìiÐŒµÜÿXô,ưÁÉÉù•—þ•••uîÜ©†F…BÑÄårÃÂ"ÆÑýÇy¶&áøÞ¬²É»ÿºˆp€—>BÆæÜÌÉ^D뛳“/sí£ ›ýsØ y‹æ^4ot›ù~>ž æÿ+§0ÊÔÐø€«Ö;‘Ð’$©P(T*U|tï‡4ÈÏÏ?ýfš«‹[}}½T*e±X½‘ ØL&.—ÓÐÐÀãñ´m]}½£LFÓ´Ñhd³Ù]ûÃÁ0 MÓ¤‰d†¤È>XÉb±bÃ$i"I’41 óÉÊÕl6§e>I’Eá8ÞñBÛ_$, ýÌ¿j}Q±yºõÌöë2æªs_{ýÓ®ÄKSõ]âð¯âƾ±ÔWò¸ÿ±è!þXŒ;ð@¡¡¡¡¡¡BAÂaÑÜïÆ/ò‚xѾ­_N jÊaȾz:Y­GÇAî3¸_$tÉ_kè°¤­Ûw>ûÔ쪪ª6W.ØJh˜*©5V«T©HŠ ð ¸téÊ‘#Gœåñ±q­–Åfwäm4EREÓ|¾ I¡0 AˆDBÆ|rÃ0ŠêZMÑ´V«u”É22o‰ÅvUå M›#\PXHšÈ¼¼<Ÿ¢’†¾ó‹Â¢"{©T«Óñù|‚èÐ…òAÐ4Ý&ûm”ZLPmd­ÌcøFRsÿ’u»OäþZiñkðåo¼Òd2:26)+Ïja9KÞ›õÏ鮸)Oþù…r¤‘#&@Û³DDD^O»Õ‘ýˆÕ:[²T"‹íì\œõz½Á` É>,‹Ëåòx<‡ƒaØ£x#‹ XÁa³íD"Š¢bÂ7ëHµ-¦…Iê´Úа­[¶45+Z½‡‘9È"#"O8ݨh4ÏaÄ0Œ“£cb¿:­–Ëá¸ßÇqgg­VkûvYð7VPïâ"ghÚÚQ«ù ±¬¬ÔËǺ €ÎîG;½‰a—ËíþÍ«eN_Ö͆ÁçóCƒ}½}-.Ó?q@û™\‡ÏçwäéY!6›“ЧïîÌxò)6ûáÜÊÿ8ž¡øg"I2?/wû[&Lšb4šl4ž:y\æèô(nâào¼ýCwLJÃeºƒY"†a†³XDZ.-²³ÛòÛϵ55EÁæðÏA„³‹Ë„ISBÃBµíØtv?ú‡&´æ“´¼¶Ë† ŽˆŒÀ0xNÀ?CÓF£ÉF6 ts?‚K-£Á`4 4ðÐÁ—@KxmÐZOÐðø€KŽ@B üYî]rì s„îð—ȾQUU•“­hRX\Ã0‰Tâêêêì"GðÚ=AeUÕ­ôô!Ã’ƒ‚Ùl6CÓ Ã0ˆ!M$Ã0 C+››KËJR’¯" ™Z¸äÀ_ïÆõk±qq‘Q,‹"I’$M&“ÉhÔëu:V«Õáíåàï—zíšyHhüõŒ&2¡o"Ã0ŒÍWð„GDM$$´z‡Ã<è…²,»eZ=Ã0ee6R\HhôÄlöÖÍ´›é7 òó¬å´ÐèqÙìÍôM Á¡a õE…sZHhô,7o\W)›“FŒ  ê•ÐGÙ¬()*l¿¼‡@Ïââêß‹")š¦qœˆŒŽ5.W¯Óµ^ ÎÐèYä®n4E·\fL—Ë5 mƒ„Àc ZÐ><¤6 ðày`„,ªN‡aØü|tà«C…R/•ø~Üë“ô«K¢zB¥1 ³½@¡Žôå]ˆ¬­Þ²æëœÈ/™æÈ`‡Ü­ Έ½Cb§>÷æG¯ŽÿK¾!è`µ ÇÊ6úÏ[±µcËúw"¡íi–,YÒ2­«Û¹é‡|ï©¯Ì ”´Ì”²º˜Wjj¶¬X±ÿÉY ;’ºü÷+]¢5 §wþ¾jþ„£éÛ¯3ýÏïNUz¦©F14C1 CÓƒš1˜(†a(úÞ¡+W.=Æ í'Ÿ|Ò2]—~{ÓùþÏ,ùd’ÏŸ\ ×a/.½{ÊšúdéD·àÃßÍ:¹Z“$å†] Ò“ÍÐ4MÑ M3z#IÓLë9v÷®‡s…¬I•±âå©nŽ\6ÏÅ;â©Å*ŒTËo ŠSOŒä-çsXl®ÀÝ?ò©××–¨Ö(Cٺן vs`³yîAñ/¾÷CwêC›j¾^úB| ›€Ã–8z$=±ð\¥¶ui{7.í/Ⲹq@T¿¹¯”£#³¿éï³!´%T†a†a²à;X"Áõ|o–/ÃP[ë´Ý¬B(û›þ†}Q©i]D¼×Þ}û¢­WÛj|øxghI]öÈ >ç„O¾:A€Cå­Ó›6¼yøHj~ÚOö, !Dêòò•¼ãgû¸Ë9¸©¦èæÏ_½}ìBcíµUw?²þéØè­ÙÊ>žšåiRT^:øS7²Ùúg{…mÉáÏ{óµ…áîšÊìV¯r!¥*9ZÈFx½ßäWûÏœÿñË‘H[ãÒ‰Ý_. xóµCßÝôÁ» ßOë»ò‹—]…!®d@'Ê5Ò!9‡èf5–zÙuª½®Vªý°âÀß6¡=ýꤳ5ºÕWŠÿ“à„B赆?8ãÇ ›þ{áÍ„Ðõå^nYÞdÐÏðÈï÷þ'ÇËGH¹¡ôOÆmÉjzæ§[?=q'IÖf±…a]«ÏÕ÷GüžiØœQðtˆÔž->‘³x°¼ûÕÀy8B¨ÆDw°ÕÖªm->l÷€¿‡píª)ÞššÍ]¬i™“³u^†ÆùÆK!‚ã!eáªÂƒ-É™Q‘µacvëo%8kªÿ÷EZÃÝtÊλ\ŸõÓ}4Õ?¾°ùFë™´©~ÿ¶„Ck×îHi•úaáÃÆ"„’A±„Þ¡ªKu*‘c»ÿæÁ8¡á­‘1ߦÖw¿öQ>¡#[ó[¾!HÙ±º@oõ;í«m;>ü tâ mÅ‘o59µ™ùѪO’¾Þ=àhïåCó_ß'PVqóĦïHCfí=!„¢gMùù‹À!ÕÓú¨ª²öo;Ø$¾¯ÜI¿¬wðýzBðñ™S<…ä³’ »žw%}shâå^ÿ›—úÇœICâƾ(óê=‡Œqû&ÌðF´ñ¿Oôù4|ÐôñÃÃ|夢ìÐæÏ ¶ÓòåQ!;ÿxñþ/yÁØÿT¼ìÊÕ”øòˤŽÊwrêÆ–øð™óû'ˆÓnÌ –t§²ˆµ1¢m×ß0îÖ1vîÀ¥ùে׭خ¥WŸ³Íy¡Bc‰wóñ¯Û÷îüæ“ÿkÖ ¤.ñƒ¦íܶv’«!Dp=/Ü0çõ5›V¼Mˆ{îDì|§\¹òMD κ2Ö³ëÕÀÙòÓÉ¿?ÿÒûG·ÿxVè’8jÎéC¼.+´RtûjÛŽزeË.ø7BÈAæÝà/ñì²ß§N¥Ôš(š¡iš¢šfôF’¦™Ösì¸W®\úláÈÕkÖàÐkGЀ„€„€„$´$´$´ ¡ ¡ ¡ ¡ - - -HhÁŸ‹™â$X–Óô—FÿPÍ…‹8Â0‹¿"u¹/ŒŒrX"¯¿S“Ÿr9[ ý·Mh×ûÛc†ã8‡/ò Œ™=EJµîk-p·y´¬'÷BgkxnÕÂ1v|O$K3ïT¥Ö<Ÿ&?z~¬›TÀ⊢†>yòî|³Ü³¸n‰c¦Èûð(3|Y°½ÈÅ{“°ûÍÏWXŒ`­¶#´°\ZµÓÿ›l]×¾!mÅ¥ÅÏŒóu‘°p"hìIøðÀßX׎¨-ê/áÙ>ôztR^Ÿ¼§:ñÐÅkÉç>vCкߺ–ª­ùuŽïg³½×ÍK¼fžs ñóîŸî/4ÜËSOÍpÿôùÁY¶Cý·ñ£3ªÞc·þo†û§ï~[ß‘…ÿäuú mØü3J¥²ª$g÷w+äõúûEü–×üOû3T–ǼðÁ÷E•…éLJŽMî3ÿN‚úÚÿ³wßqMÜoÀŸË‚„°7ÈâDp+îQ÷V¬»ÎV­{µJmÕº[«­U«ÖjµZ­uáÞâeÈÞÈÎýþˆRTÀñðó~ñGr¹»|ïû<÷½{r—ÐrÅy«°©²Ü¸É¾Q=ŽÒQaêÆ:5ÝZ„,.çz´ŽOø-`Þ÷½k&"#›Á%,s7-u ºÚ  ÿÕÞ¥6€cXrÁôÔ'ÍM <½MJí4] e¬Ù.Õ­ç+³s2ŽüÐÇ9¨ÞÞÕõÖ‹×~ïëöA6áü‰d¿Ð-Ô«S§V•ëÿ·ï7·™ƒÿ|:eá8«’M›˜þ;6¢øéžÏï¹×4¬éʪåçõYâÿÓÅJؼ ´¾P,[Ú8¶ê±j×õ­ý¸ãÛLÒ¾tpp;[s>—+2³o23N®&¢3½j­O-<ÝÓG,[9÷%"UÑã9C:Ô°´03³hØytDž¢Ô7l+n±ý¯ñ=ššòj:¯gÁÁ¶â å+ú·ô¬Ýƒ–MxQ)]Û­‰…‘¡ÈԶݧ³ŸÈÔ¥®ùõj?ª±ðúEW'|ºyÍðî-]ì¬<êÏ^×V’´][^NÚÝqÛ²z&<¡ÕÐ¥I“ÿÚ˜ZHDFv£ïG?}>®œë!"µ,æós¹¿Œò&½k&"âX•`ÄaJ]ƒ®6èYCIºPrÁÔ£n› ØÔÊ¡Ô>ÔÕ€}†óÆÚ¾`´¯»ƒ‰©…GMä zÓsF­ëŒ÷ʆY ¼Œ„†fvîÍÒN\Ò¡é¤{YÚÇJÉý/û´° ÄVÁµŠï l+nü˺aƒL ùN¾ Äë#¥äþ¤>-ÌE‘™C/–Úþ+ãBãóÏ®+‹ƒ&_+ÿ‰÷ë«jk.•ýüì=;Œa˜T…F×ö–§ŽÈˆn öþøÖxžÀZ»Â‚gËø†.2ÍKýVj!÷èȨ.L…‚’ÝUv½»XÅ_=+'¢‚ûΫk󿪖æì˜ô÷¸:k‡û¬3äØÓ|5Ýÿló‰ 彑›†x­þ¬Á]³ÑÿÕó÷Fm±c˜ÛÊ)_<{ýÝK­Åô$@y­•~*ϲ^ÿ]ÍŠžü›ð_Ÿ¯ñ_ýÕÖÈŸmæ¶jDÐï{ç—ºE•® }EÏes žýq8[FD¾Ÿ…¿%‘ÉÒb®¶Iù³Ë´ëDÔzßñvFmþ’H$™ {ˆØI àw»•œ™“8ÑóZÇVKu­üÖ¬¬ÛŽß{ää–¹~úLü'²ÏüÍc£í8§G£‡E*bUÃêµ½î<âa†$7!¼eÁΦ­—ºæ×ZHDT³E«–MÊÓÑ[nÙ㩤Qw •m\ŒµÓyš>"Þ¡xI9{²x=Z±4øÑ߈Oe­Yš±ËÁÁÁÉÕ«M¯Qþw·pÉ5è§k ÅʳiÊÂ;ÝæœŸqpïE9\®>då³.§Y¬÷q4çrù6nõf­¿ˆƒ|TJœQ—~Æ+ÍÜÛbüê¯öÜ,”Êž^;ЯûúJf4 > n{)&53áÎwŸz–|éÑÏaÁ×Ü‹Ý8ÖâÛNJ–ôœZÏh|@Õú|Ô³”˜³{x”Úà&¿ÞšYøɯ·$É–ÿÄ»œ¢c{ËUGXÔžOÒ»ÿdI‰èҜÆyÓÂÓˆ()l¿Yͯ _®~J-¢~ü·ÉøïÆÄ”è®raøÂ‰³ö½IDÆÝnùKs¦Äu¢-ÿ¼ÁóXvë‹-Æ~⚺°ï5"ª³id{k~ÝÍŸm{üå¦ëÝuͦõtÑM“æõ¦ÿÙÿó‰Ö¯¿{©µ˜î(W µÎý´îw _8¶‡é‰Ð„’/%ÿþ´Öȶ+¯Œ7ÄpÏç{Ôl)[ôÞ…††fefdef°å°Òݬîäð’S”EQDôm|>˲¹LÖ³~/{k+1ß²Ö_Úy&8ˆÛMÐ>–$ÿÌá™&ÉÕÚ§ò¼ó ÃKQ¨_¯OmŒ:M*~ªgÁ—çTÕ1â÷½žVðlÃ&¿˜_šuˆ®äË__ó+-¬Ô‹«Mâ•×ÓY–•åž%¢ÝEů¶45h{0®øinìT®À¾Ìõh ±5šq'SûXÏš‹Ònܼ÷èYrÒ£;—à =£‹”¯¯AOô¬¡X™›Æ²ìÞO=훯(³Ç^i€Yµ?vù¾˜¥{-þ;zᮨ_žÿgVfÆÌ™3xoY+ ®QCcRrÓ¯^·Fs7n_𫇓ÍýïÛÿ¥y}~yÞyV#kêí^|…ÎÄÄ(Q®¶ã—q­¸Ü rŒI … ñ5žÐÝ^ðüUÓDt­@ÑØXð®> ˆ;²¬qßåÓ÷Þ™dMD\-å«þÛêL•ÆÕÊ ¢ë!¢‚„ÿ–7*¨kù|“t¯YhX߆ˆˆìfÿvaé6“oãó·ûX¼²=t­á¥>-kÓ$‰„ìJÙ•üyEûPû¡U‹n-íL ‰¨QßÐ/Wîû-æ»Õ–ø°>ÅgÔò´ÒÏxØ =ñÓý¯Œ˜’dáV·ï¸Ek¦w~ùTù,×ÐÅ·¬[ó8|k"’kX]§ÖžÚõˆxlÿ;>ñ•¶½å¯#…¸öþáNŽû™üZß7è\4¸IŠbØr§uv¬P3Š»«'·|Ñ—3¦¾Ñéßñ%¿Å§ÌFÕ×Í7þw.æg)X3þKßõ+çl¯+g-V"Êè¤-gTʩϿHÈ*¥ÏÌhÿê—9<)+ÒWïÊÛ´a_/4ußÑÜ ëáÒ^ÍÝó‡¿>—aXÕómˆ9¼ówcŸs™ ½Q9d5…—òåj™ Ä TÒÏê.ÉóÎi‡‰R—*ÙÂr:µf\ïù—WŸ}0¼Áó*”'ô©cÄ?'ùÌΈˆTE£ŠTŸ¿¸M·üë!¢³_þTwƾâ{w˹f*W¦a­Ü××PN%×ðR–”Õ€E]§º ÿ»§µ°¢ùÃ8ð¢òÛˆ´Sr”¬¡]uøö<@EϨ%…:ÏxÛNXÚvÂR<çêÑÍÍzv ^ÔÏê¿S/ž¡§Z¾+K¥±ä•ë…ºN­ „5Õò¿R;A¾™X¡ïW—åPa¡êõé¯oï'å®#¼ÇwÍ ú)ü«ØÖ˦ó Õ¤/Žl½GuC¬Eï¤(¦–²/.Ðü§Æˆn½ó¢40zétÚÈ–á&®¸«Çþ¡ížV’uúð÷¡·©} }”Ø¢ÿƒ ‡–U)d2™$/ó~øñ¯G‡lWn8µ”ˆ ÍÛªŠýrênvVêù=«Çýü߈׳Æl:Z Wf$$ˆ§„Ô(j>zùýg9jµ"åqĦ%³Êó¾úL;1)» ?3~ÃÔ¶i¦í—y›‹'÷uàuýrcšT­È‹[>|¢m£ou}JT²…Ú)kvë5ì ®Æ,Øgmò¾[§ûÖJ$‰D"U±D´zç‘¡s¤ªeÙÛg‡Úõgo¤g£J]F‘4öhÚš‰/ý^œ®5¯9ùÏ#—S²òÒãî,Ú†kÕá[“R× K©kx}6=›–tê‹Lÿý©ý+‹èïÃâO±6ª½¿ß°“Rժ‹ÛglÉ~7¶&lPé:£ÖuÆ[¸höÚ¿Ÿ¤K8¦öv6ŽÍË—%ÅŽ“êiz/Øõ,#ëéÝóËç}³Sk±ÃÄFl׿=NHºåðדö—ïD½'Þ¯èêl|cæú˜Ää‡×Ž5zö󺺴í-aâ2K,93ö„de;"ê¹,8lÔëÀ¯˜òeʽŸUX¨’¤d?’oÚÔîµÓ[£3_y/C»Àfªù3®%¦È4juÎÓ´ÓkŸÿD–«/ugœT¡ÉOÊ×3›~zj±ÒCV¾@>¹|_e> ž…¥½±öϽG°4áÚ\•ž•—Ü""ʸ1«]»v‘…ÊÊRÐÞ_ÛB(šY;·™öØ Õ…Ø»ý]‰ÈÈnì¡ï-îÝÀιΜmtûï×€zíúÁáÞ|s‘( ëBbx›#/~¢:ÓÉ߉/0òkûéñ£r½±ÞÓ.mhêmoáXç×û5ÞÞ+æ2Äðþ¸u²aâï>V"S§†gÅ/™£kÝ/µˆˆ¢/œ=wYç?¤Z°ãVÞ£ƒmݬ_ødï"jýó¹/›>kíe!0q^q»æ?×¶jûW’´ÊÊÊÊ=hF™feeåèÑ[ÏzâŒUû.eеf'ˬå“ú»Û[Ô¨ÝêPA‹cwös™R× « ¥®áõMÖÕV7¢ßæà%ÿú_½ÚÿJêj@ÛŸ.¯l>º•·¡ÈzôÏÑ[ÎßÿÄWh :ÓuF­ëŒ—oä÷äße=­ùFÁ#Ö}³ýzKÓ—¾×ÆpMŽ]ÏÙ7ÃÍζißÙl}bxopjÍpÅG.üfrêÛ:îîÇ­´êà[ÎõòŸx¿bø¡Í¾™k»¹uµÄªË`íÄÒ··ÜuÃ5ënª¨³ÄAÀ!"û–«„¹õf7(g!P¦»¡ÿŽ©½zl𮌠ÿ¯;”¯‹8Ÿ©§N\Ün}ˆëêéýßNz~ͳᯭ-¢.ŽðøqæÐ«zfÓOO-¦£‹Êè;óîY´lY²8à‰:ÛóÿZ“¡gå/m‘,ëÖ©S§²•š÷´71¡¡¡“&N " K«*:" ¶gí~t¤¥Cõà&8›0ûb×ZÀ5@Õ•~s€{Iêè ¨Z†…îèÝ­c~‘R­a5ZÃj4¬L¡ÒhØ’S,Œ ®^½üäK—-ã¡×*2ÍfÔœÙõ­?à ÊIØ·-Ö¹Q}Ÿò´û³Ÿðy }òžôw\ñÁÛ°;iz•ØÒÿC;QÐV.¾íüùs>ì Êɹ·è˜ )YBKç¾:ó]ú¤J“ØÒ¨ Ýž&Á~3ÿy{ç¡à£ÃA Z´(h- Z´€‚-À»Æ+sŽ  ›à ýÿ´ïðÍÞÜr (hPР ´(hPÐ Z€Ê‡.€Ê柿ÿ*ù´uÇ(h  èÝo FÃÊ*†UkXFóú<¸åª$\¡€J·@•„[Ž ÚÂZ¨tpË1TIïî–cVypݼêZ‹xC«ž­»ºbÛ t1|(åºB»¦oIÿ<&"®‰…1e'?9›{ó–Ãô!AèAø ʾB+Ë9ª­fkŽÚ^P”—ž•W”÷ïúïíµ3¸ ù Ã4^}_ût°­˜a˜š#.jŸ¶52 ã5ôÇ/´¶66[º ÝS˜xqÊ€¶ÖbÏ©oUtÎ?Çô ðq5 8<¥½{§AS®çÈK®ÄwÚ‘U{;™‹|§\;ÐÝa¡E{–ˆˆXuž³!Ÿa˜¦?ÞGøªsA˪ ´²nžü÷ÈùøL©Àܹǘ¯Ï\›_þ·‰Ù6å÷Kñµº0;aû·ýÝ[þ§Qª 2bWoq»PY¡9#œˆÎáÖoÖªy wAzܱ?vlZòí®í6mí¾g¹R" ^9”ˆd9'H, ¢¬{så*†cðãgÞ?@u.h…V}¿ ²&¢Ì[¿êÚÒÍÆÈÞ;h켟“šò¿ç§»sŸ=‰‹ÿWûÔ㛳éq±±w‘F]¸!¥°BsN<|« -öìÉãGŽ;¾°>å>Z¥.ñv–ÃøeÖ-[†¸›yÍoaj@DBoÑå9‡ˆÈÊoiCc>ÂP Z"fÕ•›MnîëÆg–eSßܰp‚_жÜocääÎ ­;󆈌=ˆHdßFûjŽJS¡9Ùô3ÛYŠøbs«Öso«Q*KÔ×ö­ÇO?zøðá=Zq—ô"¢§{¦+ÕE3ΦQ—5ý{€j^Ðj”™J®Õˆ¹?\¸ó¤¨ ýú™BjšQÖÝu'såÿÍV® ¶ )ñ„á¿ÁœÒŒµ:ŽÙsú¦s·ñ?ýºå÷U Ê|W¿9s‰HQp}òá/I•|QÍÕMì{€j^ÐæÇ‡ÖèñËž³i…*ž‘U`p‡6þDÄpÎ\"2åqˆ(õÔ"bÕyJõ{mqúÕÍR KDgþ\=qìðöõ-Ë\Dh2Æ^LDëûo!"×>?›pÄ š´D”yûÀýZÛ‹Ì­mÍD¦£w?!¢†ãþª)äÑèZæD”xl §€«¥ÍñÙ{m±i­fÚõÛõÒ£a§“åYjê‚úD¤–«‰hê÷x€ê_Њ¿\ûÍ—mÖµ4deª Ìë5ïºxëé+?÷ÒÎ02lWŸ&Þ.'#½°í„Ÿ:[ßk‹Í<ü³`˜³™0ñêéYfßonRž¥ÜC~0à0Ddd;dœ£¨êxeÏ!ôþ"ôÇ/BuÎ`hÕrÏåèÿž/[òÕS9Ò’O¥êÿ¾j˰,ûsöšÿ{¯ù¿?¢ó튱šBíê¿‹¨Tœd;¬ž¬Ô°®ÑÚO=u´U…zÚªDd]¥¯þý,@uÀû86“«ëVd¨¢8è@A €‚-  @A €‚PÐTj¼ÊЈš3v"𢗇 >¤1qxç)QUà -TI(h- Z´€‚- Z@A P¹ñÐo¬÷—½¾±Ìó›Ú½Qû°>V!ówÝ’i^™‡ËlïÛÛ×ÎÃB$`4Ùy…QÏ2öŠ8š£zßÍ [<ÀƒÏ9·fߘ‚õÿ1o^¿Á&/íS,«ö™¹[Ï"w–…0tmûÁ!·%Yõð÷úw›Ã,ËIe÷cŸ­Ø{ëv¡Zÿ‚3¿îû™)ÿÁñ£½Nä ª“ Þ]þlbBD©/·Ü_Uš=bvŸÙ–‚×§?»wºíÖ´’/B\uµ¿¬Ü»:UADŽÁþïzz 8D4pÞ®[2MECŒ„©NÑÇè‚ÊáN°3ÈŒ~HD-‚Md…q¥ìB gé´Îݬj¥4üñ3 Ëus°jáçÁ¹v¯JœÚ›QHs#S/*Ú2Ö£‘ñ|“‹|¨6#CuØëe…™—âdž ‰—MC_¯Í58‹¯!¶c:3¼oÅÚÇ6îAN¼„D[%Zžšy-GDNÎÖöF´P63ÛáÓk<R§Uôrí#×è宇–ï–®(žSdìÕÍZ@DÇ6÷üš›—§[³Ò&ÄÅÌN,à’&'_rõÞ“‡¢ò5D/.®>8z7ÅÇ¥™“XšŸ·ißÅ(S·/ZxÔµ$Ä?›òÛÕh…¦xÎÇg¦{;5°7*ÊÏÛ~øÒšÈüWÚÌå‹Çt­×³Ž“‰@VT~ïIè¾ûéj–ˆ½=ç¶õjPÃĘGy…wŸ<½#Q~9É‘C~M)9EO¬ëÖuòàsοùÊJ´j3Šohuï»öDôÕ·ï)Piƒ~}û帠š=-þX¶wÄñ­$ôïõzÂÊåèì×½¶¾ýä IDAT›¹Z.ŠO]²=}d·Ìä´ËIYîVŽn.?õzÜqWFñœV^&§î?IÌuXÇìóŽ‘Ñ{/HK\d¸ßOéØÃZuëÁ¼G’†Íü{6òõ1)l½ù©PìvtT>Ñ¡‹÷£$ê¶Vm븡ày+æõ¶¯­}œŸyû‹¿3ËŒõh0¸iÄ·òÑ¿×ëÂ0Ü%S;u·(åù‡¯%*¢vþ.†×o+˜R§G*˜Šý ’ÁHlÒÉÙˆdñÚËrº29âüý›ŸørÒcåæëIK$IÒµ—#Å݈X* Ú×Ö< K-ЏFDáûQ#ÓšM„·¯H5õ»8QVBD”’Y6£Œ¸ÿ7véÎ(G°ajpCW!Í?v/ƒofWž#ÚÛliÙ\¤t%“|'ÉÁÏñóA.çÎØ4r_Êñjf®/Ä­Ý’dF›ÙíÝîïˆ=1J S-£¯k`y|íÊ,Wó¥ L§ ŽÜ°µ£-˲뷜(YÍ"PÐ~,äEI›ÎQ·úµåÒ”ug£\‚jL&Zzúá#Å«7—*eéƒĬíâa%0 ösös'¢Ü´äÉ¿^¼"QÏ_qÄÖÖÒ×ÎØÖXq:Ï¡ßÁWD%ŠœËOLJ™Ù5ŸæFD=:“¡fƒÅ=6z‰Ì]͉þ+hïì»öC‚Œa¢Z,îçÈã­et!¢ øUS›€ÖµªpØÞû ¢ó F=gÔ±«(â<Ù bYV"S$¥åž¾ùhá?H‰·%š5tþ8ËP@DeÆú Dì>=5:O¦f ŒýÎ!¾•§ Õ»×ëZÊÔ¶~wkÍ\~,,OED‹[9HÕ¦¶A¥O· ¬èNmP‘d°õ(¾÷„ sÒgo¸¡}¬+“o_ŽŠlS7Гù$vÝÉ"2µ ÒÕÂ" Ò¤jàZO·7 ¢õ'rbÙ;l›–"þ&»óU’œ¨°BßÎF¼)AÆW/ÎñÑÁžé9Üǽxì’)¥:2ÊÔ¶~C—eiꊣ'òÕ&VAfy•yD{›Ô*ó€ûžÞÞXnÚÝ«ù¶½\—‡°jUáŒkÿê-h/o81!Af r¼³ ˜Ãáµñbò”H˜j}=']û÷œrîÞÏÖꯉV C—ŽZýHú–A2  ­Š+1 ´àËrS\¬Œ61VÊså&Fò¢ä‚WOXo]¼|õnPM[ÿæþîíÜMÍl–s þ5cáØö}ÜŒÔjå³L‰ÜCDÄ”ò~*y‘ööƒÄÂ<51L)ß`Yõc…Æ‘Ç5²z)¬¦ö¦DÄå…/ìW<‘Ãá;ó8Ñ7wÆX†x‡´!bYŠzð`ÀÖÛrÜñÒbÏ—¸å˜Ã–3ÖR–—’/#"g/Ä·Rѵ×7ÿ9A×"&v&D¤Vj«V"’ægÆ9ëš^ñ:¯"É -H=£éà@DoÜ;ž©¬h&ëv¢8€W MëóÒh”mz5nC”«a͹Ìg]¬vïL%¢5G³;÷±ñn]Ó4FíÂgÒô©rGÿ²ã^¾ÊTÕ©í"â0 YÖ‚'/Ý>‘›q4Ë©“¥`IÿcÑÙy*²±0mìmÖtî3ûþG OÜMŽÎ–kÏC5jÅ%™~‡”rùÄúX¡º1/èÓæ nçÔpvÔ3'â[©èÙëõ„575",˹³%ÍÌŽ‡#ÓQ+Ç­KölÖ=½¢A·p©p2Ûwr¯{÷>6‚QÃÛG.9|Wo&GKÔdÆwm8E™š—·å†Î"IªßæB.˲ç펔kÔÄ4rQg_ê!šú¸H­Ìû.N¶Ô]ØÇÉ€e5‹.äéŽ*46æ¦ßIU9Ùñ˜?gv¸œPäánW\‹Tè-Þ¡õ¾ ¯6eU#—Ò>65©\mCÂ|¨èë?éêÓ¿C_[´ ¹ÿ–´½|[õôÀ¢{…H†ªŽƒ.¨à¤9v'QènX”»)"!ÖÜL£V̼ôôØÄóñòWæ-Êüë帇Y '›~5|-9ãf¯?´2Fšñôê÷W’sULHëÚ­íiªâíZ%ìPß-À„‰Ž·òtÊËÿVÕ(§®<ºâB\kÔ­‘×°fžì Âo<""IVÂÅ4u“z^S;×hu÷QüÌu‡#døÄè]z³X/ûíæt)OhÑÑÇ2îþS½)‰øV"zöz=aeYÕô•GW]JHtiäÕ«®uú“ĹFçôŠý ’Õ(ü|!N©áòD«&5ã'„ëÉäSܸ˜$a ,Ç´©ÕÕ[¨§…P%´ìåFD…¹Q‘/.ª•y?g*ˆ¨yÏç?pf_œöANJäM™FÿpT¡±Q­,è³ñÆÕ”B¾±Y“øö"R«¤ –>Tj!¥ SÕOºj5m¶(ÐD£QÌ[{ùQbÔˆ“ CŸîÐÉœd¨ê˜ÐÐÐI'‘…¥Õ‡jDÍ;‰7£ýÅðsköI}„›½<ùƒð «ŸÀþ͇p•¹25Ãçׯãä-â&Þ¹Ôn[z‰ ˆ8üßR⃺£w·ŽùEJµ†Õh4j «Ñ°2…J£aKN±06¸zõò“:,]¶ ·@%ÃðêzØØ xÄfç¼ñdqX"z^‡‚¶jë¤1qxç)QUà -TI(h- Z´€‚- Z@A €‚ô“¦Üœ7~D=ïºÖ–îAý/i'jT¹+&¯åêcmW»y÷‰çR¥ú§C5ƒ@´bÏ­µ¶kXžd(g’TtñÄ#?µ jߺU»½fÅËÔÚ‰©æ{·YƒèÀKdaáZòoÆ“|=A]»À»B•’è¯?èí\ÓΩ~ç¡_GdËÑ{UÚµõS,-ÝV<+,ÏòútyÞ½¹ÃÔòòñj3dÓÙdté‡elÈ3òL„<ßTÄ73˜‹æb…X`al`ilPrfúëÃ’e_hÕ`t½ ¡;Ž/q²0ÈL‘Ës¬½RçàÕµÌ}3xpÛYñ÷âèžÕ ý*JßÙ¶ËÏY¹YDÆåI†r&IE:fM÷37§yšlm4js̉Ïk²é´ÏþYx.1‚·!²êuûʼâ§Bsc=A]»À»BYÕ„à>w›Ï¸µÝ\•ºvÒ Á“cï®0èÈ*鯯iƒÿâó™²óA×ôoÛ}z¦õ¼ëûˆ¹¹ïÛvý;>¨g„BéÃøçà± ÍÏ„††Nš8ˆ,,­>T£srâ?Ú€mïÖhß—5}ezóžÞÿ^ÙdMD*Ù{ǶËÞn#Ò5ýãì=ss—êš?C «qøÞF~ÜBÆ2R¯½«Ñ B‹³PYÚøJŒ 0âÝœÕaTò‚[ÛšÄnÙ÷Dï[[»":Hã7–6¨éT§gQKËyÔµ;¼b¬wíØ™sÜî ,vª÷Ͷuü#«Wüv06KU¯Óðý›§ 9 ]ߺdÖš¢“rù&¶Á]önœˆT×Ä.çÚOý—So¯&Åx yD¤’>vtê0ùÖÝ9Nâ3ǪôP±yÆ€ß5gN,kàè9-òÞôFeŽ!¯OrðpÛtþïO‰H-O²¶oösôÃkáG;æhSâƒøcóF_?¾@ÀårõÏy=üj×½–.[†K>«Xp-Ó\²£am?++ïzŸ|óûu"RÉb©‚žï  …rÑÞêߤc#cŽ@Ø}òX{Ñ¡mñ\¨5Åsf©4–]ÓÑ“Õ  e&C9“ä ·i:ìßÓÇÎ_8±gÝ4#é­á[TÎxüû˜-w^¼pdÏwîsN@\ ¢ ­}ý}Üìmm=jן¼úo‘*aY¢D×Að Oh¸&ÄþW“˜ò8¬’%"¡uŸ–Œ>¼tº¯kMŸÀγ֞A80„röÇÃVš]Z[Ͻf ¯–s~ ÏQ³õÝŒ‘cUKfxxþÓ#M\kÙÙyÛÙyË5ì² ÿ®ç+º"£sëÏë¬ß±äû•g#oûu@è§íŒÉG>  …²ñêÔpO<þï—\%Úð =|D¼s ÏïTIcKÕíŒtMGOV34”™ åL’·\üð„É~ß­s4à¦O±iтǥyÞÕ|5n ‚7§QåË4¬Ÿ«ë øÎß±åèÙǯ\JNŠøã»^çØŸ%Cp<µ¨×sçɳÉéORâol™f#xMr4BŽU-þ_NK}”úâÏ€Ã̼qëö¡àŠ®G–sìa‘ª»)1Ý¿èdÎ;›†|@A åÀðÖ õ >í\t†ZUtu÷â¹s‡»Ñ÷}]OŽ[Q¤–åî^0ÑÀ¦Ó[‘žéPÍ ÐPf2èšžykI¯^ŸÞ-R½ÙâÅ SöM¾Ró÷A®DdÙÔ²àq)%wFuL¸ø%P¨˜Ÿ'.øûäʹ삌„¨UãC¸-æ8‰õß!IÒÚÇer Œmm-9'?BIYø45» 73åü¿›{tþé³_6¿éȆ«ê -»øñ§|»'OÅQì¹-ÇrihäCU_£þÀ‚—üó`æ—ÝZ%ç©Ýü›¯=|²¹µX¾{ìä/»úgËùÞ Úl;õü÷»tM‡jþ¦üæßâgV#Õ(žž“†"Ö¿Áh ϹîÜ¥¥F.•™cë>]8`S˜ö}ƯiuþË¡£Éã'¯ûÁ‚Šr4Ï]5û‹I‰é®±o‹N{/-s=A]»Ã›œèˆ|âÂ~êðÝÔ\Ù¸Ö™µþ@3|ƒC(åÅüX¯í20ñ j:zëñ!-k¼ùÉ4r¬êäC©Ó9<óç6ΚõC×2®€Lüî:1ØÞùPUàßö@†˜ð Ø€ˆÃûH‰ÿ¶>(h- Z´€‚-À›áU†F|ÀÿtÕòá@ ±‡®Ð Z´(h- Z´ðùÀÿ‡vÁ‚ˆ@¥Š‚¶útT6¸åPР @A (hPР ´(hPР ´(hPÐ Z´(híëVy˜3/p89—ü|¬òïS×u12ä‰L¬2ìðã|í+yÑa£{¶t°s¹|SçæC޽X'½Éwh9Â_tÑ>LK‘Qä‘Ñ9ÜúÍZ5ô.H;¶óÇŽMCµ3„¶l´èc©ù2‘¹YRøŸ [rM ¯×Æ÷%Žƒ>÷‰¿0üè½ZÄËÕJÉÍzõzü¶ÿ¼Ì¶^ï>Ýœ ®Ýuõr ïL¹ž¾ÑriœLED“Þ0·umC÷ŽÞ±0D´àM ÚÂÔM ³©ø©GUã툈M?3°í€ÓWngKUÏ«^R©¡¼GûµO—MnóúÚ²ïnÔ°,õ÷õ.9=õv®øÓÑ&¼½ù*MhÛ: Å6uýº~:yÁxD Þ¤ e¾H$`8< Ïn欘õ)I3vÔê8FªaëõŸøM›ú&E¿ ŸzýyYË>¿ÁXÄa^_«zþƒR¿ý½×’÷ßÏ~5 Ìj=<µeÆ’õg®ÜLÉM¿u騭KÇX=ÙÓÏ € ´"Û¡’”ß^™˜~u³TÃÑ™?W›ñ˜äs»Š_2qoNtŒˆ¾Û¹odƒ‚Ä›%´ðHtœˆö&˜…MÕ^ÂÕÜ<øËyÆ/úÇ Ün† %b“]oÐ<ªHykw<¡ €8o¹¼i­fÚõÛõÒ£a§“Å/;Íìf#"¢?k(237wkñry<â—~žDtdZ[Kßàà¦5LƒºO¼'/J=6°¹§OÃî½úŽ?.ªHÉ0œþSk!ZðÎ Z3Ïÿ,æl&L¼zúA–Ù÷››ü÷#Øq`p›zƆ<.Ï|À´åÚɾöÁø]÷öþ0«U :-æÒåë™dÝ¡ÿ¸ÑöF¦ž#‡uoeó(lÿ¾ãWžÖmÚå‡î~ßÄÑ€ÿŠÎÐÐÐI'‘…¥Õ;_{ÎMMK.ÅŸœáÚ~­K–Œ³7B×@±?6oôõóç \.Wÿœ×ïvíÑké²e¼÷Ú ›³zu<™åêéf ÎŽI""Kß cQÍÀ[ã¼×µ[6òr4Iyý4ÃÒ©fÿÏ^ ÿA¯À[{¿WhîŽZˆN€wƒ.´(hPÐ Z´(h-@¥Æ« ¨9c'"ïCôò$‚è^@¶’Ĩ¢-©*p…ª$´€‚- Z@A €‚-  ¨Üxè‚J"lñ>'ê̱aÙÚ)×—4á0÷ÂŽô9“KDóæõlò<^,ËIe÷cŸ­Ø{ëv¡ºøÕÌøsÍÖ&£3+‰Þ_öúÆ2Ïoþi÷FíÃúX…ÌßuK¦ye.W8°½oo_; ‘€ÑdçF=ËØs(âhŽêÿ“rçÖì“ û˜ÃTrÏz±©}fîÖ³Èe! ]Û~pÈm ºñ]ù€û»͢×Çg=f~Ý÷3SþƒãG{ÈA¼ Þ]þlbBD©/·Ü_Uš=bvŸÙ–‚×§?»wºíÖ´’# Büf{â/+÷®NU‡c°ÿ»žÞ œ·ë–LSÑîE°Þk8°+ Ú‘¬0óRœŒÃ4ñ²ièëµ¹'pñ5tKeÄp'ØdF?$¢Á&²Â¸Rn†³tZçnÖµRþø™„åº9Xµðóà\»W%Nâ«…472Eñ¢¢-ã{42žÏabr£w¸¿T‡}ãóÿ;kÞ7bíc÷ '^B¢Š­-OMȼ–Ç#"'gk{£”çÝJ’QFš#Ì;1h÷êU÷ˆÈ9°©¶|zãÁz¯áÀ®(h?Fy©÷>ÿ=…ˆôï²½‰‘™;¹VEŽà 3ÛáÓk<R§Uôrí#×è宇–ï–®(žSdìÕÍZ@DÇ6÷üúž—§[³Ò&ÄÅÌN,à’&'_rõÞ“‡¢ò5D/.®>8z7ÅÇ¥™“XšŸ·ißÅ(S·/ZxÔµ$Ä?›òÛÕh…¦xÎÇg¦{;5°7*ÊÏÛ~øÒšÈüWÚÌå‹Çt­×³Ž“‰@VT~ïIè¾ûéj–ˆ½=ç¶õjPÃĘGy…wŸ<½#²úE-'9rȯ)%§èéÿºu<øœsço¾²í‡ÁÚ(ó ­î}מˆ¾úöï=*m ®o¿T³³§ÅËö®‘|ä}^’þ}AOÇryF#:ûu¯mçfn –Ë£âS—l”ktN¯xª—?ºÆg]¹4bvŸÏLùDT»C§è¤½ÅFO á–.^ŽRžuScÖX(Xà'Q@Dm‡wÿ¥Ž‘$7*pÑ-"2µ ¸6ÝG£Qõš·÷1+ÒÕ½¯ï¤ù][脦v úû·s7ç(e·ceëš‘ßÌr–ÊÁ#;Î!¢—èó³"‡¬ûï#LùG{dÎKb{ß³è¿ò4 ºY¿òR©Ý›ìãÜÌÉDU$Ù{ìÒ÷á9Öÿ-º†G¯†MõseYÍ’Õÿþž$hÛæ¯N¶jUá߇ÉW!:€‚¶:0›tr6$"YA<ªÙÊFZðdÙ¡ »Ú>CÜ W‡E’¨ÆäÖÖOݹ,UÇH^ºÿP©ÈQ±Äc¨Ãè£Òn'fG>M»óô±¶¶5ˆ‰M Ë– ÅÆÝ8wmàR˜Ú÷Tnñâ^­ÜdF[ˆüÍͧ얙œv9)ËÝÊÑÃÍå§^;îÊ(žÓÊËäÔý'‰¹®ë˜}Ò12zïi‰‹ ÷û){X ¢n=˜÷HÒ°™ÏF¾>&…­7?ŠÝŽŽjÀ':tñ~”D]ÃÖªmW¢jX\™;ÔÛ6¾¶öq~æí/þÎ,³ÿß@ƒÁM ÏK£_Ð…a¸K¦vên-PÊó_KT Díü]MÙ¡L IDAT ¯ßV0¥NT0íö7Çëã³®\Š8ÿæ'þ†œô˜Ç;b¥E¹ùzCëëºör$¢¸KeAûÚšt©E׈(|ÿ#ª`dZ³‰ðö©¦~'"ÊJˆˆR2Ëf”ѽÿí¤ºÇá6L n(â*¤ùÇîeðÍìÊ3œ¾Í––=Ú#sJH¾“äàçøù —sgl ¹/åx53××½­Ý’dF›ÙíÝîïˆ=1JÁúÿ„C×^öøÚ•Y®æK˜N¹!akG[–e×o9Q²šEtmUeëQ|Å sÒgo¸>©läEI›ÎQ·úµåÒ”ug£\‚jL&Zzúá#Å«7²*eéƒĬíâa%0 ösös'¢Ü´äÉ¿^¼"QÏ_qÄÖÖÒ×ÎØÖXq:Ï¡ßÁWD% ªËOLJ™Ù5ŸæFD=:“¡fƒÅ=6z‰Ì]͉þ+hïì»öC‚Œa¢Z,îçÈã­et!¢ øUS›€ÖµªpØÞû ¢ó F=gÔ±«(â<Ù bYV"S$¥åž¾ùhá?ÕsÐͺ?œe( ¢2ûÿ Dì>=5:O¦f ŒýÎ}ô}^þ}A×R¦¶õ»[ ˆhæòcay*"ZtØÊAª6µ *}ºM`ESÝ "áÐ5>ëÊ¥Û—£"ÛÔ 4äd>‰]w2‡ˆLmƒtµ°HƒÁõ%|CëéöD´þDN,{‡mÓRdâÑß$bw¾J’VèÛÙˆ7%ÈøêÅÂ9ž"":øÏ3=c]q÷爐"¥TGàLmë7qY–¦®8z"_mbÔi–W™ÃéÛD°ÌÑþ=½o•›v÷j¾m/×Àå!¬ZU8ãZÁ¿z ÚËNLHˆï,æpx­D¼˜<%‚õÿ ‡žCíþ='‚œ»÷³µúk¢ÃÐ¥c§V?’¾ec´ð~iïeàp^Í+ßæ“¤Ñôp ¢‡7îÏT¢ë*ÆÅJLD-ø²Ü+ã†MŒ•ò\¹‰‘ƒ¼(¹àÕSó[¯_½TÓÖ¿†¹¿»C;wS3[‡åÃÍX8¶}7#µZù,S"7ä1¥¼ŸJ^¤} ý<¹0OMD SÊwTXVýX¡qäq¬^ÚñMíM‰ˆË3 _دx"‡Ãwæq¢3n ñ4iBIJõàÁ€­·åÕî¾€´Ø³Á%n9æp…åìÿ )HËKÉ—‘³— ú¼œûBóŸt-bbgBDjU¡¶j%"i~f,‘³®éOõ¼Š„£Ôñ¹B¹¤ggŒRàdê%MëóÒh”mz5nC”«a͹Ìg]¬vïL%¢5G³;÷±ñn]Ó4FíÂgÒô©rGÿ²»·x'åp…‹uÎÈJDDµäD¾úÿA=£=2ç壭ٓÜ{¤sb¯\MVy–«{yÏ?+aÞA¬ò„CÿðÈj”ßÿv·ßW CJyöç§2ÞU‹´ðÞNædoÇÖÇs([C$¶pq"ÊH’—œ-?=j掔ÓòOV76 l×zjüUÑEè½ÊƒÃ58>«ëó'vÇgiŸÕUû›{%g›ûM¯—¿îb|øýøðûñD‘‹ç÷ëc̈vÞû¸©•’ö¡‡’”lÓQÝ·Ô4zÛ½]`ÖÐCDiq/%UAº„ÈF£Q|¹áB–æùy:—o¯ÔDâ•­µ´¨_ì–KÏ›9ÖªS{Œéƒ5¹Õü“”7ë%Ë0Œ¹J|SºôÊ}þ2=û‚žŽ-H+ ²ápE­Äܳ5Š-åÙÙº¦W¼Û7(+ŽRÇgý¹Ä²DD\Sfb`t}å£Ã­Lµ'šý‹§:ù60Ýu0OCñ7oHz}"6ö˜ÙOND/D¨ÙŠu¯žÀI³åDÄáÕ1àÜ—kʹk¿×î@æ¼"%*üRº¹+Ÿù&,“L<Ë·ÐÿéSÃ0XºÂ¡xd8ü¹£|‰H£!¾Å¶®Žý&!:€‚¶RÛ–4` ‹©­ï¥óÔ5ݬ‰H.Íü.®”ÿrlßɽîÝûØF o¹äðéW!Lmý·¯U<ÛØõ§pƒÄÿ™F£˜´í¢­·ßWL–í¼”!p\ÞÇõêÁð¹JiÞ«w«rùâÎuúw ŒŠÏN,PšY˜76汬f×¾$¥Æ†ˆ8<áˆV>©$ìé*|›Vùtø*SU§¶‹ˆÃ(dY ž¼tÓNnjÄÑ,§N–‚%ýýEgç©ÈÆÂ´±·YÓ¹Ïìkø(±傟/Ä)5\žhÕ¤f¼çŸîó ͺÛÿáãŠ1lkŽÝIºåÇnŠHˆ57Ó¨3/==v'ñ|¼ü•y‹òÿz9îa–ÂÅɦƒ_ _KNÄøÙë­Œ‘f<½úý•ä\Òºvk{ÚŸªx»V ;Ôw 0a¢cãÆ­<òrR±åÔ•GW\ˆKbº5òÖ̳‘½AøGD$ÉJ¸˜¦nRÏkjçz#­î>ŠŸ¹îp„¬úLòfý¿ì·›7Ò¥<¡EG˸ûOõ¦ ú¼¼û‚žŽeYÕô•GW]JHtiäÕ«®uú“ĹFçôŠwû„ã•ñ™Ÿ®'—Nýqãb’„1°Ó¦VWo¡žBI-{¹QanTä‹ ¤jeÞÏ™ "jÞóù·áÏì‹Ó>ÈI‰¼)Óèßï*4¨•}6Þ¸šRÈ76 rß¾S@Dj•TÁÒ‡Š 2§J& Xeïeµš6[h¢Ñ(æ­½ü(1jÄÉ †¡OwèdÎGtàuLhh褉ˆÈÂÒêC5¢æŒˆ¼ÑËC>òÓþNý¹5ûÆ$ÈD@÷²åìß|W™+S3|~ý:NÞ"nâKí¶% g<ˆTi[òAü±y£¯Ÿ?_ àr¹úç¼~µk^K—-Ã5<€Š`xu=llH0н€l$ ˆQµ„+´P%UŠ+´99ñˆ¼ææ.H0н€l$ ˆQE[RUà -TI(h- Z=x耪¥ñâËšÿêܦղp…PР €ò‹^½<- Ú7¢Q官8¼–«µ]íæÝ'žK•–|5öÜZk»†åYÏ/õýš}u»ä”Uõ|[-½ÀCUqù‡o> nådïiW£^Û~ÓÏ¿Øtí#ú÷øP£€þ£Ø[îÑ]<ñÈO-ƒÚ·nÕ®E¯Yñ2µvbê…ùÞmÖ :U—4åæ¼ñ#êy×µ¶tꉈH#·°p}å¯Óï±:§ÃûÙÁ­ÿ¾{›¶.žV¶µ[üaŒ¾¨Á;umýKK·Ï ËSJ¼>]žwoî𵼃|¼‚Ú Ùt6]Š‚¶Ü'ñs¬½b±ûꔸ‹ãjÇn;KCDDEé;›4hþɨŸ9øH$=a‡ÌYzùöµÈ Û›+. n7Oÿ>¢k:|¨Q  $]G±·Ü£+ºøÐ1kºÿµ÷ÌÙ“£$§FmŽ!"V#öÙ? ÿ‰UQ²ì ­þÇÞ}Æ5‘uq>)MBoªˆ "ØE±w”µb[»®muÕµ¬.ö¾êkï½×Å^°€Š`A± ‚¨¨t¤BHy?YI¬Šàÿùå¹™ÉܹçÜ™{3™Ðp`²u‡CW®½~v|‰+S=::¬èõòV]Ž­¶Ârø:\œ«?ÊoÕÇ÷^> ðóa/é,’*Œ|9¶OtDMQvŒ•/h7ð†qŸû/îGF…í˜h?£o§Ç1Z•Ì<Ófˬz¦Úl ^ÿy„‰g÷%çר÷îýÛ®üBGÿð)¾>¶ŽæÖî>£—¿ýô)õGçv;öîÑÙÒÔÞ©aï#‘)'×ÌiZÇÕØ´N‡¡+ó¤²ÂÃSÞ›c×±såó]ÛöžU€|‚/®Ïúù:7¶2æ™ÚÔüWsAÂi©Ò>¢¨*ë¨Pœ¢³ØìÑåZ]&Î ´1ãQݼԻiDôúÐøˆ¦Ëúši!FUÔ‰Ÿ§±Þµu¦¯3ßDG·†}áìÔÀ€WôH>1ã™N÷u-L””— âˆèþÞem<Y˜9òkyöµ ¼D¹ó”±Ý[¹Yó ŒŒt5XZ5½ôÕ˜J¢†(|a»¦ûî§ë—–2Tˆ‘¢òËq9–­›j³DŒz]FJÅY/r ¾ÃÉï›-~÷ìç%˜Ð~SbaLD®¸¥Uái•­aë Éºü¾‚CèøüzE•r _‰ÇµðȲO諈·Oý›åøwìþϧ2¯w¶ž´,4ìÆì¦'xyú´Ùä!äêæ¬«[Ç'Ë×ŸÙÆç¢ZÛÀˆGo^ßmû¸w÷Í8vÀWõê`פ7Sqù²}*ë¨ÈŸrõèò®Î`ë6Ó圎Ì$’Ü Nµì`"É:÷ÙÖ ‹ªJ&š/U?çP#gCC;Çúçí¹_b‘‚ÜHß¡Ïa3T*W}D$üx±ËÔ]S÷ž‹Kˆz|mGO'Rª-m¼øæµ'úÜY§ÆP)jˆB…=Þ;³ß.IÀ•–ê¬ÿµY]oóž°`ǽ¨„“‹ÆÛvúÝ×H1úÞ°¿Ã:ID©D¤Ïþg²mÀf Só+önü>kON¯]ôtG—ŽADD$HÜíŸ(‰XÜ߈Ã$Mˉ.µñ çm5"r_¹Ø·¹ õ˜â9íDоE#ˆˆÈb¢¹ö¶[)ÔÂ$7éÀžɳÀ!†&×çãø¾ÉŒÕð;[ðU¤„îî³ùý¬‹‡”ô‘/Ûw ²ŽZ€ü)W®Àê»ý1zú€–Rãº÷ùò,ñf Ýä¡‘µxìä³ÏRÙƒK×klˆÐT"Á‹‡†½w-úËP]òèÒ¶®Ãûr…ÍvÖ/ZæÒ”±"·™Óëê—XWQy‘2GD2i®T&y“bÍ3²¬5xê,D¤TCŽì’‘xq댎­¸³š™[vÔ…Љ»º Ï–¼+7V[k°þã[9têæ¹÷¥vÞ‹ßû®‹H®±hOçï³§Ôš~¸èoù%Ùâ%ÕÞ÷8ûbq ‰([òÏBÅRuNÅÞ£k\³¦eѣƧS»('œ­QÓ„SøT]·=Ì•l –.É$EOõØLYŒˆò³BeÒüŽ =]]›»º6oØb²Ž7N„›æà«x°¥ÅOë'ì½4Χ¤|Ù¾•uÔäO¹ztV7nöóß×/ݺzbóT­¼GCw‹Ît‹Þ3z÷“F·o]<±Ðvvÿ ˆK"¿¶Ú´cccu&‡ëî=yŒ÷ÜþØ¢q'GN^µop‰•—>dT0"Ò4êujÙ¨ó˧Õã×rrï2cà D¤T\CƒšöuF-ÙñòÔÆA™QC*,544ëÍŦüÚ¦¦Ž¦¦ŽùRÙ 7×nAå}©(¥Këqu¶Z¶ô¯›Ã/oéç7°ýÚWYˆ&´eckØ9qÙï ¿U%Î{'ioõ…oìáh¹ˆ…±ñ¢Â„ËÏ !"wmŽÊ«×c²kÜ »~'<üNxxðÛ·OÝ´ØH)øâ·ÍöuÚï\À´ŽVÊûÈ·é;PYG-øÑòGżú«ŸŸ0Ùeáf uVâ•cOO6ƒ \{åg†dIðu¸*CM«Ž%‡u5:»¨$£€4ŒÕ‹žþÕQMßM] 5J¬¨¨¼¼Zšyåîø¸°} }¶ÿ9Ìÿ£AQD"J$"5FÙQC*ÌuÎù¤Ä¨ÄOu&ã÷Âϵ,ïûÓ/¿È{;éÉ?8róßI_íÂÍ$ÄZ•,íÍ»âeJ®D˜qlþDuãNÃL¸_vZfýMÙýgIJDYÖ÷3rÿMþ}cÕVÑË<¯óä­‘ñ™IAR̳kqÿ=|ykÇvûy{òþÀÃ=Õ@ ŠeJúÈ7è;PYG-øóGQyê£e>>ŸæŠ+¶zAÂéÉwkíÀ'"ƒfÙÑ)DTó„£UG—Å@\ª {ý‡ C§¾L‘ˆsCŽ-9”¡>{¨­üÅ„À¹^é\Þ¢ÄJŠÊË+'nÃüíçߦ˜ê:&&L&Ç·_ýÛàáóýÃSÒ³cž,9–kÚa´©–ò¨! ß ƒ®®ZjSœÈˈ(&p÷å ÒÕ1úÞ|§W=W3ù×îî®iùjŽ Ûì¿¶‚YxêÝáê¹Q&Í“ˆìíÝ8º"¶Vøè¿9ðàÌñóÙͲtwì{i׸ò<‚N,™¾¤·çº„Ì|žß³£÷ $|iËO<Ï—>ëY¿AQIóg}¬õEåPYG-€O K?‹•·Gç§? ¼“^ Už~e¦åæ‹úí¼ Éd‘Ó/뽂~2òœð}ìäÍ[¬ª¥å²S 9¿ÿÚÝ+>SbãÚbÃù€vúêD$“dv¬™Ÿ¿ƒÆ¿†|ŠÊ+2”ä:½½°®ÃÂß2Dd̯3cë™æºtðâÜ—²jêèWïSH½†k‹N§‚ü4˜Ê¢†(|û•ZÎdëŸ Ü>cƇ,éY¹,:zuPE þ›Å臺{¶pZæçç7iâ"âTÚÏ?¤§Ç¢ƒÁ× ¯oCÍ È@ò¢PýbÔdIp¹Þ?dv³rÕ¤RìÛµ½ž‹«‡Ãb•ñ›^÷CCºõðY¾bE•¿çS&Íý©×¨R_j·iÛxüK=€jªÊOhLîéÓHøq¨~ŵzÃM^€ -&´˜Ð&´ßïâWŽ+ñ?Á † š-€äD1ª–p…ª¤ïâ mzz,"_ƒü#.$‚h^@¶’Q@£rÕ¤ªÀZ¨’0¡Lh0¡P‚&¨Zš, .×ò!³›UËvÀZÀ„ZPÝË•¾/WúbBûCãèÜçN’Ú/I*ÎX5qhm¾“‘©s yòòà5ó:·ô²2³7µ¬ß¶Ï´ OåÊŽõâñøí7½üUá\ç§ëñÈ$øJå¼¢>¢¨*ë¨ð¹˜À F¦TÉ󪼫¿¿¸®•GûÖ^í<}fÄ %òÂÄ[:¶YèTu÷¶N10°YõA ü$R±|Ù^órΈþŽ5k™Z5è2dNXZ>ZïK‰ÚºÔ»M[ks{C“Úî­ú¯ñ%/waÇ/þ˜þ:KÉòˆ&´ÿa?«ß†»¼c!ÞÞë3¨í )Ž– žµ<8üÞã[Zˆn j7·Ì·’I²§žy?í/Ïç«W!ÞPå(ÊyE}DQ9TÖQ  ¸ÜäÃM¶èìÅ#½“E…‡O®¡OttXÑc>_Gáòˆ&´ÿÅÌÃ1m¶ÌªgªÍÖàõŸ·A˜xv_r.õY?@çÆVÆ6­ínoïV¯ép*Ï€ª ­Fͼr÷N|\ؾ…>ÛÿæÿQˆ ¨r‚àÕïy8àf|òë„Ø»§ 9“,´…/N"J$¢â?–V8üg ¥2C5–’å#Lh+nio~ÀØ/Sr%ÂŒcó'ªwfÂ%¢µc»ý¼=yàáŽê@ Šϸ™1ÿ»S`;«¹¹™üáúÓÌœØ-Ó ¿¯•|?!]“`þàmÏùvzZfýMÙýgIJDYÖ÷3rÿÍC[ˆ:Zj=šwðu\RTXТÉÿÜÆ]×HãÍ›9ùâÔøç=ðå)ÊyE}DQ9TÖQ à¿ä¢òÔGË||>ÍWlõ"‚„Ó“ïÖÚ3€ODÍ ²£Sˆ¨ ç G«Ž.‹¸Tã“H¹TÊåÄm˜¿ýüÛS]ÇÄÄ€Éäª1ÑòªtðÁ›Ä´ìŒÔ„ ¿wõè²nĦ:íwˆB ƒ‡Ï÷ OIÏNŒy²|äX®i‡Ñ¦ZD´qâüã“Ò²SÞE®þÅ—Åóœe¥­dyĨj|lô}VËså±1“íîîš–¯æØ°Íþk+ä_~ây¾ôYÏú Š–l¾3ð¬u©orsÆ1³6Ë‹ÃÑn0Æ\sñšÈÎ \‰(éöž6›¦¥æ2œšv:vk —É bo<8sü¼Fvó„,Æû^Ú5N¾î€#+/õÓ´þzãZÃÇúÐÙÂ9m·îë·ÐÆ $x IDATb®±Sßç·—"¥àËR”óŠúˆ¢r¨¬£À¿';\=7ʤyÒ‘½½G·QDØV%ù£¨ËW¬`WõÀˤ¹?õUêKí6m©PMUù -ƒÉ=}ú  ?Õ¯¸Vo¸É 0¡À„ZÀ„à;ð]üÊq%þ§#ø ÁD@ó²<€( FÕ®Ð@•ô]\¡MOE$àkÄ…CÍ È@ò ˆbT®šT¸B U&´€ -&´J°ÑUK“%ÁåZ>dv³jÙ¸B ˜Ð`B € -`BûMHÅ«&­Íw22uná=101O^µu©w›¶Öæö†&µÝ[õ_ãÿJùû„/éajêhjlkÓ`‡¼dS¿!&«h™”óy<¾}ã3Êßj†sŸ®ÇW`_ä[äñøÆ¦u›=´_mG'G76ƒwÞŒW¾<|®høªè_н­S lV}(?**Š…¢˜Ðª0ˆŸÕoÃ]Þ± oouŽÔv†”ˆˆÄ¹ú£üVÝy|ïåÓ?öâ‘ÞÉ"©’÷qퟘuiB­â…F-,ÿ7lwÑÓ#ׯ­÷Uw§ÖÈ£ïß?~°|DíÅ£»¯{›ÌŽ– žµ<8üÞã[Zˆn j7WyQT•uÔ(.7ùpÓ†-:ܨbþ¨˜Wå]}ÈèõÞGNÞ¸02çÚÈ]¯ˆH&Í›:âÔ¢ƒÃ£ª‹kèVô˜Ï×!¢íÞ0îsÿÅýȨ°ígôíôX V²<|®høªè_ʃíSQSc”}´T %=0¡-ÃÌÃ1m¶ÌªgªÍÖàõŸ·A˜xv_r.9OÛ½•›¥1ÏÀÈHWƒ¥UÓK_­Ü»`ÓgÅ› ë_eÑǧ+ŽJº,ªÏûç “÷fÁØÁuì\ù|×¶}g†gÑ­Ám÷$çÞØÖÒÒÙ¾Þ/Š#¢1ŽÎ]Ž:ð'kS»&£î¶²š†–––ž¡YÛAsj³/‡¦Ñ¥1]]Œ mÍù }F.}—_øy jÖÏ}lÍíM-ÝZwmkbÑNIňèþÞem<Y˜9òkyöµ 9]ÍôY?@çÆVÆKes F,];¬±!BS…7œuí–¶±>7÷cÜ™Ís‡xyß}`§ÁvèÔÍsïKí¼¿÷]‘\cÑžÎÊ—ÿüÝW.ömnBD=¦xN;´oÑ""²˜h®½íV µ0‘a(¢%Ã×â§øR! åwuAŸ-yWn¬¶Ö`•÷d]"ŠzÐ÷£ZÓcBû}aq ‰([òÏ×.>Š¥5 8EO¹†5 F-Ù=Ë¤áÆ„…S-Êý)¦šÁöÙ šÿ¼}ÔÅûŧªùY¡2i~džžŸ d::Ü8‘´Ä„VÅÅŠðû¬õŸY‡­®cÄ+¬jài Ïáî¿-ß:s ß re·ŸNI‰(?ë.KÝ™[2.жèfÔëÔ²èÅ˧-™XúVaÓ—OhsFõó.`KûŸ·MØ{iœOI)³ï@eµ*?*æUV7nöóß×–вÝ-ˆt‹ÞÓw÷¯È;Sƒÿtë?aØ›#M¢aTÏÕˆˆˆLL&ÿïøÿŽÖ]ñ>g³uA—Öã:ø‡ú¹ÐRÙ£3›º lŸ{7l²½n©Ëou¨¡lìÄÒ%™¤è©›)+‘&†"ªQ4|-qŠ/c‹(¨ 544ëMtSþÅ£œT¶ÂÃm¿Çއ',”TKÄB*JQÔƒ#Lh˪“†—ø.w1—ˆÄy¯¢ó$#¬JÎZ%¢D"Rå+Ç’< 1JN5kÜ85ó̬ÆFÅ 9Zõ˜ì{wÂnk³J¾/‹A2qÙ‹•JMÛÐÌÌ´xIvÜ–$¶Ýîß{—Üwu¾Dt.M,å±™*V¬Õ¨™­FÍ”æg>¸v¬Ó aÍ|#{h ³«“Àm³‡,}¸ô\À€O§:E}„­a¤JßÊ:j”+TìÑÿqõó&»,Üg¡Î ¼’`ìéÉfk¯üÌY™.‹èTERq–P*3Tc ÓϽÈop’ÿò%ÃÍ{|'ý n&•Ž-_á-b(¢ºÃ×ÏOñˆÂç:ç|ÒœžšÚL}ðhš¥)9*~ aúeUzbTé¾Ó…ZÚ›0vÅË”\‰0ãØü‰êƆ™p‰hððùþá)éÙ‰1O–Ë5í0ÚTá1ùé« 0=>r×¹8£æõJî9ÇèY#Jì¿–Ùˆ^æy'oŒÏ”H ’bžX[xÇv]#7næä‹S?Ä+YLE5š‰ó^ï ŒLOK >³ë·1Ÿ*0Ì•+²â\|jzlĽõK•W,'nÃüíçߦ˜ê:&&L&ÇP ÿ[¸ZY;¶ÛÏÛ“÷îá¨.P,SÒG•CeµþKþ(*O}´ÌÇgàÓ\qÅV/"H8=ùn­=øDdÐÌ ;:…ˆ ržp´ê`6[µlœ8ÿxÀä´ì”w‘«ñeñèÄ’éKz{®KÈÌç™ñ=;z""¢n;ÿÜ×o¡Å\c§¾Ïo/U´˜Š¸ÆÌ›<Ä{¶˜ëæÕå§Žf«ï1XÚ'Î.úË’ú«Sx6®ƒ†ZÓ…÷J*Ææ:½½°®ÃÂß2Dd̯3cë™æºø–cµ²üÄó|鳞õÿIàæ;ÏúX+ê#ŠÊ¡²ŽZÿž@îpõÜ(“æI DöönÝFa[•ä¢òüôçwÒ ¤Êӯ̴ÜXB’ñâê/SþLJhðÌÛøL83Ûi Å©~ÅZø¦êNßül:š  øÕÀ„ZLh ºù.~ªÿÓü`" yÙH@£j Wh Jú.®Ð¦§Ç"•®j]%ÆZ¨’0¡Lh0¡À„0¡À„ZÀ„Zøff8×áñø<ßÀÀÖÌ¢žG ŸÉ vÇæ‰UY÷Ϻux<¾×òçª,lfhÃãñ»ŸŽ%¢&ö<¿ßÃ+™ýú‚oû¶V¦v†ÆŽîÎþ÷åñøFöõÚ˜¹9^$ùíÜ•ïÈãñw'åÞëÅãñ[Ì ——ËÄ™[æLjT×ÍØÐÖ¶qÏáó¥‰ä/ý½ìÏí::X×62°³²oܹïäÒÊÜPä–žEûÈãñƒ2EÅw|é‹ ùbRqZ K{yá½ì‚/èïªÙU `B U›º~ƒÎÚ4®gñ!òñ¾µó›Õ÷½ŸUðe7ÑÓ§›O7OK­ ¬ë?dÎå‡1 ³ú];·mRßð?Ö„£çÚ¡CO·šã^Þ¶¼C¿#ß …ݵՈÈ]‡Ãs×'"ý5äå§F÷˜½éÌëdq«Îí­eéAïööœ ”ʈèôÎãwžÄñøŽnõYY)¡ëÒ#G"S¾!»¦Ý»wîÔÚ¬ÔWwŽÚ'ÿãÍÑ_#rÅß2Ç*¥ÙU `B U›žÝÄwü}éÒ‹ M6¬¼”ûCú’¿$Æþ5}\Ã:nƆ¶5š ˜¼.Q$%¢M \6Ä ˆèÉò®<ߩà "Ú8t {ݦ&vF&µœ\Ûš½=C\8{táâéÓç2KÎÇÞÝ<8¸[g;KCc‡º^}G-)±À¦.“"Òˆ('öáÙ³kOr)ÈŽ^4qDƒZ.&FövÎ^?O[+,¼Ü'¿öÛíô™_ûõ¨ij·ø]Îç;[Ãaò‘#»þ¾r}WG "J¼³\^®¤ò¹ñ·ù©{M3; ÛÆ=w“_lJ•µO j¨3YÜ:\6ÏÝ€ˆÌœu‰H"|?áL,y,;u|ÿÖËs‰Hpe^L&^»+úý“Ð@ÿ+×.†üÝŽˆ¤â´tv×ê;!ÉQ·}ær´ç†õù†îý¦MsM‹˜}ö½€Á`¾´ÅE‹÷‹‹E­ iÖÇÏúÕ¼pŠÒxý¡í5ØL®~)“–ŒèµýûïÍLˆ }šDD'-U^ùô— o§  ÆŽ³ÝL43_Ï=ã±_¾Jz´ÂöÑb1ŠoÔnÈù…B ^Ç+:Ê %¢$ù&…ÓT¦!›™%– …E+^>~*\P@DºöÎú¬ìÿôi…Óož÷B‡øyÁbsÌ· ¶mõiB«dG>túË9eîuñÌû†Íž¯8£J `B ÕJÊÍ"b²4¹ìŒgÑD$Îÿ`_³NÑR‰àM¾¤.·äA*Jüµg¯ƒ!q,޶µµ†ü.\©Ò)–ý¼á-í z»{ÅâÝD £nç_.ïû]CñeȬè×DÄR·pÑb‘¦aáÌä~z>}šÐê:9X˜(¼ÕV”~å 1Yjfö®¾c§Íò91ñDÄâXu3Ñ,97.Oû|Ž¥n"ÿ#¡ðë²Ò±”ˆ4L5Š–¹ñ>š¤â§—·´{ì!úÝžO±PåÒbiíΠ™k[êîn†ØqøKõƒÛUþ<ߦÙë”?£Z¨&Ò_^³;†ˆL[Î3Tc2jÕ$ e²õvŸÜn¤VxñM"L³Õ`“Á "I^áý«q7¦ ‰ckX?ˆ¹VS“ا™Ïµxå›ËÏ|÷çÉ¿¿yú8òÙý++·<½°imü¸™–ÚŠVÑu°% ‘äÇ=É»pÙ´ëòòÆúê*ÇîÈ+­K*©<×Ú€ˆ$¢¸Çq}-6Ñ?w±ê*mŸ2iòºq˜+DRÙų琉uÊz³'[,%"÷v&’üøc}»5Ña3ˆÉ6æî]Œj?@TXyö¿fríVx9<{/]õ§%TqGJºb{ýmš=?½Ü˜Ð@Õ–³~Рƒ9?„Ü)’Ê´­{íwúy²DFD÷ñµ®aªÍa‘4=+'äÙëùç"³¤DDêZ†ôuëìÀÓŠÂß "  Q^âÇÛ[[6ÓdåçÅÿqü  ›Ùk„ž9wèô²¥Æ6ßÏRÓV”–ŸçpV7ÏRµÔw®[×ÊNôˆØz½]»:™i±9‚Ðço—ŸyþAüÏV".=wªÙÜJWœûO'‚íˆZJΊêFDGßáÜ͹Q?½Ø£™©W%™‰Ï'íK ¢} ú6Öd±5Dä5¨ûVWmAFTƒÅ‰HÏÄõÞ4g©Dt*—Ù[‡­úé@IÎü¸:Ý8DtyÛ¥)o ¿‘ç`oÓ<[LŸ¾¾!ÿ”š†á³…í‰èÇOd‹uj…ååÁLh¾˜ú}ܵ>¤§ŠdÖ::C~jw<ìÄ«‚ÂáRÃAÍ~¼ÇZ:¥c#N䣈¹Q9š»öl\ÏIWÐz×"⛨¿Šy!M¨©­ãݰf7O7kAbïk {Ío­Ûê² „Y—Ÿ¦pôMÑÚPaaAÏvvu×`&¿Š>“—›‘¥<-Kæ°âD-å‹a0Øk~kßA_-3!nσ¬:.öšÖkÄ×hºúAÑUc‡Ö6q©aêšÍÍJv"ø‘9xÙ¼H}ÉãºêëOÞ=5>)8¡…õ:ŸèŽGSTÉa9».%½¾ÿ8_Zî­”“¦¶Í¥‘ ÕˆÎÝ~™#±41l[‡OôXIm Ö²ß:yq ò³Îß{_Àá¶sµv׸.bV ûĈYŠÎ ëFDDqÎOrö6ÐÞIÿèQ\ß«Jt þô±ÐÐÒm¨ÁúøþݯGS‰(ôï§2—¦Z5ûê†Ë·ìiCDqÏCŽÅèØ¨|:Pž3?‚QºXFluÕa{dRøû´Ço’‚_½‰Vº–âNÍ(µü±ˆQÞ 4˜Ð|1Á;Ï ™«©cóøÏ&L&Û‹Ë~•Yøqxر뿽ÌJdê:.F‰XðóÉç"¢ wZ=§×1­åÎe¾É•ÒŸ«.š˜Ô3Õ1Ñ]Ï4ïÅS3¯Ç¥kºFõÛ겉hÖ_—Ïfˆu =:Ìp@ƒCÅ„G>nS×]ƒ™ú:fs@:é™xôPœ–%rX˜[§ Q?çâôLÝ:è«Éd²¡oGäK5ƒÒû5¯aæ0B/|ƒŸä IDATû§ž¼íê„wBu®Å“ù-Kt"ø¡®Û¯Nz'¬aÚ$tª õ\w#E"k©Ýc»WŸ¯O”¢gìVfËÕ©¯ED17S+°•òV[]˔à ™L–#Å%e\µè›ˆ”Ô–cÜÀÛˆCD¿¯¼|!SLD‹ÏšçIôL=*Ð}RÔ];Õ­ÈËÀ4j choV‡JÄÕ³جðïfÆCÞ˜3ª»ÑÉ£Ùsm5d2ÙÚÓ‰á9qªŸ8eåLõŸÐ “yµ¡«!G«¥‹mK["ÊHŠŸ¼åö݉¢µôLtjÒËÝËõ>4˜Ð|1â<)‰ò ÇIjŒ^ÊNÊLÈQM]"b±µBõ)z•ÉT«ÉfFIÔißËFK")øš“¯Á$"bé˜è‘D,8‹á+Ð3ÓS”–‘"i‰f²4—(HTåtŒt‰H*DäK‰(OðA^îÆeRæ¿»’(óóN ÎÏ•ÿ!¿j/È”ƒÁT1‡å,ÕD”™&®ÀVÊ+3åááW¾ö:¾íÝ|‰d2ŠŒˆè·7\ImsM ö>}Ñ7/+5†ÈªBÝGɹCQÝŠ~,ª /›ˆXlm$^Õ’s³å–“Õ¤Y«==LzvlrÌ?Grèø»ñãí-ê6r{™­Çd¤'„Ÿ+m¦$9_–•3?‚G·ï· yêQËÄÕRßÕÖ¼­^ ó•?[´ØøNÑ*º :uMEååA&Bƒ -À—¦ìGw²“sˆŒ¥RѯÛn}”iXjê±RS§&½l´$9íýÎÅÈšôÞ]KK¾@nš|"¡aÆf$à7'á?“ɈˆXF™iùùº¦Ž õówþWò§d3ÙZÎf„HªÁ5——‡å~¾$9”ê9ü¡@FDºúlJþê?éÇÑÔþkû¹ ¼–5j[[ŽknQ»Žóh½ˆŠk«‘”MdÌdq½´Y7s$D¤¡m`‘Ÿö±BÝGɹCQÝÖg^ïe«k‘DŒ'¯šy©$:V ÿÛNI$I}xOhÛHƒ»½·&>SÞÓ‡[FÎT{Úú.Óêgm¾ú<6ôy,Ñã%öé¥Ãæp9DT “©3ú5J[²tê4EååÁ¶‚=4˜Ð|S‰a—>Zu2à,ëëzùeZ¦˜ŒyzMk4›ýA;?Ÿˆ˜lÍa^N‰¤Ù“¯Y´VfRøÛ+¾ëÈÈ&G¢sœjY¢%Aµñ´é]¬,uÙD¤®i6¿—ú“Ëa's$/s$TCߨ}JAbfÆÛݦåçïY 8Q‰¨Ä;ﺗýO'>ºšaݾ†ÚžIž§"³å_ÖJˆÞ…/Ã×<´–XòùcµçØxòèeî×®ÏÒõRÍ«Oã_¦å˧ R‰èŽP’‘¥°¶Âİ kv1P[ÿ{Çó“D®—«ÅÞe'vU¨û(9w(ª[ÑŽ-yD”“€ìªZôLœ× ²e²Ø œÌˆH(HÚ!O™tA@Ú¹n†\#Oð~e\~©m%§³²r¦Úc©iûv©Ó·£{dlÚûì‚<ý&:l™Lzôt]Hzé°=¶˜žnYÓ¢øÑIA§VX^Þð¬ôÐ`B ðMɤ¿ýuéYçzÞÎ&ݰH––‘ú ŠˆRÞ„,½«6ÖÃÔ·µóãÈ7þ‰¢iÖòµ$bï–ÿë[¯MͺéWžæ&Ê>\rjôob/ÿ[M׿ OûVøÉɵ}nÿ\¿‘™Áè6ú/ž%íº—­(-?§$Q‰èówþ'ùeâ)LêáÚÅÉhˆ§YNNΕ»/–‰"Nð5­%ÄÜ~ZЮ¥‰}#Wõøðü¯›}9ßÝN²oZß¡«» ?ÿiTìÞ+aaB)‘TQme2ñ´¿.Evuõv6îÚØ D/_¿Ë—ÊdÒ t%çÅu#"b±µ–Ô×!¢=—ðKãUŒ†¶qW’ÉdyyÂ;ÏÞ­óÏú”%ïî?§n­ˆèþ™p©âƒ¶¢äTž3?‚ܬè-Á²ö†|+ãÚlF^^^Ø‹·GŸü“GD+v<´èâfÄëèÄ<ÿM ç¢sŸ¢N]z¹TZÞèüð¡©Š~~~“&N "žaeU"==öl¥É’`Äà jۻ˦Æzɯž´Úú#¾RõÐ}¡›vüóû­÷¼BkTµZ·?ÓÅP\í9÷|šwvÀ·2»Ù7ØŠ¾¾ueíà¾]Û빸ªq8,Kù’÷CCºõðY¾bisýTÀÉ‘±½Ë‰>ŽhÏuïÖv¡›¶ =nà´FµÁ`r–·åÑë»!˜ÍT:|å*H&Í^}r6B³ç®=‡f¨†ißsÎQ´ÀwWhZ€oåÇúÊñ·¹‹þ£&K‚Ñ[n1ÐzP"‚h„Ïá -`B € -&´€ mõ5ÆÑ¹Ï¤¯½•¬·‹L,Ú¡µ0¡-_êC(ý.ª—óöΟ¿ŒhT·™±ß½U׋7ÿ%‘}ûšÄn02m¤|™à5ó:·ô²2³7µ¬ß¶Ï´ Ä<ô(€¯Ú骨¨­K½Û´µ6·74©íÞªÿÿWòòw”’MEDù™ÏfíWÛÑÃÉÑÍ£Íà7ã«Sk(Úë"÷¶N10°YõA ¼õ•WËÖ›á\ç§ëñèJð9ö¶ÃÑÑaò?nêô{þÜàãÍåO5¾ƒ©}Ú“M:ø¹œ½Í±ƒ¹n^zòówn_Ú¿s{}õoVÜäÃm»nü˜ñ‘HGù’q¯eƒg-÷twPÄož#—¾Ë—ÈË Q3îccnoÎo4pV ‚ªÉ~í½Øh؎ËFÔ·3ÕÒäšó[yûn;{³­¾z©Õ¦…Oñõ±µp4·v÷½ü­°ps=mjŠÎÿ-L¿Áãñ“ERù;´Y¿mX·Ž–¦önÝ×_+ýS.®±ïÝû·\XfcöY?@çÆVÆ!*êáßžI÷›ûD^îסïEqÓó÷B#žÜźÔM ?^:Ÿš÷ÇôfJ‚ô¯jÈÄãZxdÙ'ôUÄÛ§þÍrü;vßXæ~8á=}ehØUCL ì•'þRM÷ê`פ7ò ÙÒÆ‹o^{¢¿aÀuEW …Ïծݨ®«WÁ3.E~óvˬ®·‡yOX°ã^TÂÉEãm;ýîk¤Yš¢Ô½~¼wf¿]’€++,ÕY*¶^©åÕ¯õ<÷_jÌõWDḪ |÷à_ÜW-ÔÜ„ˆŒFN(X2äy®XþõŒ¦Û·Íjn"_&7iÿžɳÀ!†&×çãø¾ÉŒÕ˜5Ló–/ü(*15[œ—)K‰#rËK9±52ûVÀ$gM65ôä½ý|Ó‚çDÔ@[Mþ4¨»!!…¿PµåуNúê%ª!HØîŸ(‰XÜ߈Ã$Mˉ.µñ çOïP*W¿Y>ÍMˆÈbÊÖåÕZ™¹ÇÍ@•–‘I²Í,Ü “FÃêÃÛkÅ_M ÝÝgóûY!…@‘!ÇNvÉH¼¸uFÇÖ¿GÜY­Á$ㆳ®ÝÒ6Öçæ~Œ;³yî/ﻯì4غyî}©÷â÷¾ë"’k,ÚÓ¹:µC©{­qkIŸ-yWn¬¶Ö`©ØzŠÊ«wë)>0V$7逢q;ú#&´ÕSÍ€ˆDÒR~)?+T&ÍïØÐ³h®§£ÃIõEÏ[xwÿmùÖ™Kø‘+»ýtJJDùYwYêòÙ¬²HhÚÑÝ,‘¡5Z·?H(çEy4^j5D9álš&œÂÞ¨®Ûˆˆ戔Oh‹a¹p9 rIµ -ƒ¥|¥ðoæ¿6ñ.`KûŸ·MØ{iœ™Šp jŒZ²{–Ià §ZhiÕs5"""“Éÿ;þ¿£uW¼ÏÙl]Ð¥õ¸þ¡~î´Töè̦.ÛçÞ ›l¯[=Ú¡Ô½šõ&º)ÿbáHO*[áá¶ßcGø¹–ŠZ¯Ôò)F¹Õ»õÊEѸZLhh­zLö½;a·µYÅïn ´¨-Il»Ý¿÷.ÙÄvÑÙd‘Ô˜£¬çhz{éÏZºð†Ïÿ:‘†±YM¢A¦âj¸ˆ…WãEs‹ˆò³BˆÈ]›CDjLÊH”ï…Lššß¶–ê¿@ôµå^¸mö¥—ž €Ù,¨@"J$"5FÉr©8K(•ª±„éç^äŠ78éÃÍ{|'ý n&UË)YÑ^»Î9Ÿ4çŸr3C›©M³ÔR±õŠÊ…é—«eë±$Sz«\©`Eãv¨NðáD¹i™èež×yòÖÈøL‰¤ )æÙµËˆH£F3qÞë‘éi)Ágvý¶3¦pyӟݸ²þ~Gb>$FÞ¿¾xæÕÒß—ÁÞzhjòáñ>Ó6ÝŒËÎÍKK|tþŠâj ÷6e÷Ÿu$E(e}X?ÞÏÈý7ùåÙŽ–Zæ|—´hò²âk¥ßOHdŒÛ;g@²®ç|;½ÿÒkÇvûy{òþÀÃ=Õ@ ŠeÈ(aððùþá)éÙ‰1O–Ë5í0ÚT‹ˆ6Nœ<àaRZvÊ»ÈÕ¿ø²xž³¬´5 ººj©MYp"S,#¢˜ÀÝ—3hHWójÓ¥îuZ¯ÔòêÚzu4Þ¸™“/NýPúÏš–:V4nLhl öú íÄw{{656qjÑó×ë4‰ˆk<ðÈ쫇x;Õk¿à諟:š.ÎÒ:~a¹Nàºfnž}ÛÎk]KÑ5ý8h»cúÝ1>]¬ëº4í½üpÔìU½j¨—ZÍÄodçd]×ûŽ–÷¥³ãä¯ 8²Òùãá¦õ[ôš´Ù ½Oñ•’CwlØÐ¶NûÝ/ìNÜÞ¢UÚ‡U‚„öönnmH RííÝœŒQTáå'žgÅô¬ßÀʪŽüÑçì;$@y©Þéª(w^ʪ©£]œ\ÝZ½Íhu*h½üP ýŒõ3ÇׯíZ·I¿Ë9NÞÙ¦Íb0Ùúg·;¿>ìáàîT«Á€…‹Ž^d¦UmZ£Ô½®@ë•Z^][¯ÛÎ?M#VÛXÔjÕ}© ”>V0n‡j59óóó›4qñ +«éé±ß`+M–‡Ìnö#{Œ£sÚîÇ˺{ Ò¡·"Ü8b õ ²"¨¯o]Yû¸o×öz.®j‹ÅR¾äýÐn=|–¯X+´P%aB U~åø²5*˜ÐVIM–#äè­€pŽh=Lh«ÜPUN·è­7Žh=(A4Âçp-`B € -&´€ mõ5ÆÑ¹Ï¤¯½•¬·‹L,Ú¡µ0¡-_êC(ý.ª—óöΟ¿ŒhT·™±ß½U׋7ÿ%‘}ûšÄn02môe—€R¯™×¹¥—•™½©eý¶}¦%æ¡M š‰ÚºÔ»M[ks{C“Úî­ú¯ñ¥üXórΈþŽ5k™Z5è2dNXZ~ujw”ˆNU|{[§جú PÞzŠÊó3ŸÍÚ¯¶£‡“£›G›Á;oÆWƒF›á\ç§ëñèJ€ -EG‡É»Õ__ôTã;h‰´'4mÐl›ÿ…W±OÃO.Ó.öÂÚÐ,Ñ·¬Fnòᦠ[t¹ñ . JĽ– žµ<8üÞã[Zˆn j7mÕŒ8W”ߪ;ï½|àçÃ^<Ò;Y$Ux”‰'´ìu]«ó­ÈçiÇ êÑr²HV­„kèS4 Ž›Ï×)zéÁö©ƒŽ¨©1Ên=Eå Ú ¼aÜçþ‹û‘Qa;&ÚÏèÛé±@Œ$Lh« žü¡£Æd°µ‹žÊ_ÍŠ¹9©_k3{ÛºW]Œ“ŽqtîrììÔ?Y›Ú5uˆÄyoŒ\ÇΕÏwmÛwfxV|ÉKcº8ºÚšóúŒ\ú._"//DÍü¹¹½9¿ÑÀY ª&ûµ÷b£a;/QßÎTK“khÎoåí»íìͶúê¥VC˜>Å×ÇÖÂÑÜÚÝgôò·ÂÂÍõ´©5*:Cþ·0ýÇ—ÝÆ8:·Y¿mX·Ž–¦önÝ×_+ýS.®±ïÝû·\Xö±Xå%@‰>ëçèÜØÊ˜gjSwò_ÍÿßÎÆ5qn ?d#$ †¦D@D0"\QQDÅÒº  ußµ.UÁjiQ¡(õu£€¸/ÅõЏ Ê" Š V‘FQ®Ùd1B–÷CRL"¶÷ÖÎÿLJ̓!yæÌ<Ïœ“ÉDPþo!¤YìÖ,™<Škf¨Ï40èA%Òû¸3ÈU  âxBIãÑ6Déa¶*ú¸âê÷¥š•ƒSÚ²P&SŸFh­_ó¯Ÿyn^ ×êDôTµ_+k4íªKÔÐè½@&á?¶téheÌö8Z%Ìð÷03³³¸Tib¬*V•·#,h5ÓÓèë.óB2óÒwÏé¹sA`ËÛÏ~s52àx©¨µ6ò 1¾WÈi…ù/žg/²x0urtëtðŹ›7+çñîŸw«?°âØÕe\}ŒBH#ÑXÌ>,æÂ°#Álç¨ò­ëLéJ'@"Åøúåï—¹{Pô¹Žþ¿ÆN®“Ê÷Õœ’–j0ÐÑØìÕ{öüd¿ã·Æe99üO]9WZ3=™|Çî‰! .ŽT½ík „Þ£—OÌ qbB¸<ÿÂÞþã„Ùy«­ztÃCNUÞŽ-´Ý…>@º›™w[—ø‡ïÊÔòb*I–G6Líbª¥TœT%–RÔ–;#8|ë-ß=€jhÜ EðFu7$M7^‰¥&"4ó.È ¤ê·B.æ44{ôïü¹`aÁÁ½ÐÿHÚMá÷Ã/&ÏÂj!¤é¤â hûÒ¬Ò PÐ'ñÉŸ(×FÛ\ë·êmý¦ad~“LÎ"7_ªÜü{»1«ïºÜü/Íèê£÷n{Sݵ'BÉ~›ž ÅõYîÅØ9µ²«´D-«½UNi¬*oGš?œø`tãùŸ™ˆ&¬Ž-zõF*m©,~tr÷w@í5L"z~(­¨®¶:ëÂᵇŠ[×7úœK“û…œ..­(ºws{Р寫EŠýq]Uürß/¸WTÖ ÕV¼L¿t]u7æù‘ü‚OW7IÅüÒ}ËC œÖ*.ÏzšÑó¿9õ¼¬’——¾mõwíÿ«:ë^y ¡¦ìØæYU=ܾµì‰;¡n÷’IŸÇUH‹Ÿb­-A“DŽaAi’Ùó¾ML+¨®k¨(~±` Íhü"#ºš °E𢢶¡þuyúùÃS¼÷Îÿáž$Q+¿MH¾_YÛPý²h×Ò™D}·àÞº"zJ۩̉ŽtòšÐ3o$r(N;r­'štõ ÙP_œLml–¼.Uþ³¦J`Uy;‚¶{Ó"íK?3V’=ÕÍÕm3â“/n–êÍÐÿô¦)»}lŽ ýéÙ§žÆ­«é —#ôÒöãºM_§?º¿ª6ø×¢éqÖuÙ‹}'ö3·wpÏÛåÞK[i7¢ÓN .Kp±´1·÷ɤû\MZ¦xfÖév5ñ®ƒF|¶*š9ηý?UåÄ{:;[ wä‰å™Û1teçAùA++.wÌIYËk++®ÝàŪ:Üù5BjDœyÌ/NþdÐàÞ½(þ¦%½Ä° „4‰“~uäºE6ŽÜÑsnk:—¾Oq ¨ª ðͳ݃¬l½¾>roá±ëa>fš SFý¾ åƒlí‡Î¸Öèr6ó€ú뇪¢§´@b\H‹³{?¤Ÿ“MÿÁ³¶¦mûéF€q—¿¾=éÐ×F…»úšöå·Oé Ê`y;Ò¨â,$$dÕÊ Ïd}¬NÔÕýçox—¡aYw6 ëÎ;{±µ]í‘[ ï»{¡G+în„£‡>Öd0Ì?Ö6?7ÐÁ‘L¡‰DõkÞ˹3iŠoÄŽx…!„B!„P—„-B!„B¡. 帉åbB!„BXÐvICòp—#„£áîFáŒÑC Ú®ïƒG¨«œnq´âîF!œ10z¨ÃÄ ¼ ï¡E!„B!„-B!„B!„-B!„B!„-B!„B!,h5×bk»i™•ÿëwá—lc›ŽÅh#„B!„´F_Ÿ£ô¯Iöè^cIæ×Kç»Ø66´4å8š8{ôy¾Tþ÷÷¤8m¿‘‹úux±á>c<ÌM¬Xl[§Q~ÿ—ø GB%„Æ{yyV‡Ôkýs>È$õ‘+çØrl ŒìFø¬L«)ÖWÕ®ÙÑhs7v “Ù7²T þ4¡ª½ùÍ£MsfØZ±±æ3ûPê+ ÚF»ŸÞ|…C ½‹ÔÝ6øéÓ<ŃÛ^š·d% W,Rÿ¥}íÓCLJ8-Øt q{?“¢ºªÇ¹Ù§âvçøMÇÐþÛº!¬Š÷˜US_ §~M‰±0$’kk®¢Ì7Î[àã?á‘!/û#ôap(!„ºË· {KÛ¢C²‚gìÏt'×¶—øô7ÿóx/Au»fGC!7n]Ài2Yëý§ Uí¡cýoÞrïÉgºDxðïбӽœ^ä ¢“ð D©Û%LL¦¾âOLÐ"é¶-*žå§®š1ÅÜØÊÂÞ3òJ™¢q±µ÷ÏIëü?57²ºð.HD/B—Ì`éÈá8zL*à·(Ö¼ºØßÁÚÁeaÂqö]þ²Yªhoð‚>ŸÖ×ÄÊ„ã✦¢kò/¦n7˜{0~ÛüA–FtË„3Êgæ¤T†¶Òn4Õ¬™ékajmbîä»(¢¤©õí>éÛáÓzÅ㦺[úúœ*±Lñ cö˜;ÉÓÌȪwò¾åŸrÑ gfß»{Ãÿ½Á´[³dò(®™¡>ÓÀ •HïãÎ c ŽÐá„êY'¥-ïb2õi-Š/<ÐH—DÕ÷ûfSEÒñ*¡švÍŽä^?óܼ®Õ‰Ó„ªökef£]u‰ZZ½È$ü'–.­ŒÙG«„þffvV—*MŒU%Àªòv„Í /«ûIDAT­fz}Ýe^Hf^úî9=w.lyûU߇ßd 8žp*j­ €J_Ïp;<œ­XGXyâh±ôQZ ‹B ù~ºŒ3³ªe…!™ÐËH¾)+ŸWñºA"z#¯.àŠªÏÄ5d$¯²Ó!€³ äÝ·n<€ÁºdÅbºßØÀ;­¿P“ŸëÅÐîÐ Ay\b…´p»Ÿ…:f+£¶†[ÎÏm\:äí+(åì;œ ¦kb#¾ïVôæ(—Ù™ÈÈ¥ ƦNoÏ+½KKRÚž üù¬w}ŕ؞£7fî¢â‡$ý)8”BÌÐ98%C×AÖ”]ˆÞèî“ý<ÙLü¤ßç;&‰ÐôºYª¢]³£AÍ›#º~k—9•øA§‰wÛûyMr;ö«®èɆé{ «zm;:A#ªö‰±*ÂÊ“ªòv•÷¥Š¸™ –)ù5¦f~Ž\Öìéìæè8ÜÑq¸óˆÕzz´2±¬EðË·y¯ÌÇÇþt¦ (÷ìŠþ —@3?›¨mª¨fÕ}´ cÙ|±bÑeï‰ôô+7¯íáó”vCÜX@¢öa¿½ËN»‡ Üowz‰4J]ig?ìÔ"Ò³²®+þ2R·ŠÆbö±°0ìHý¯ç¢Êxð ôçàPBi0ªÁ@G›¾Æl¶¥ÝàÕ{h’—;~k$RXÐ ýý—9k$2m&EU»fGãuNÿÅWŽ­‘‘µ‘‘u³L¾c×qRú{OÚeâjïÑËÄþø]ø÷© ®ÅÌñ·û¿{xªòv’š¯Ð~0 } t73ï¶.ñ_ ¬åÅT’,l˜Ú1ÄTK©8©J,Sÿ/:,wFpøÖ[¾{&Õи@‹àên8Hšn¼KM(Dhæß'] HÕo…\&Ìihöè¯×ùß‚£æi©¸ð{’ýE8”BO&á7Éä,2‘Dµ´¡‘Ò^  i ={*’ÎïM'Q ”¶kv47_ªÜü{»1«ïºÜü/Íè]Ý$óK÷-1pZ«ø¾±§=ÿ›SÏË*yyéÛV×þ¿ª³î•× jÊŽmžUÕÃí[Ëž%³ç}›˜VP]×PQü0bÁšÑøEFt6Ç…þôìSOãÖÕ‰ô„Ëzi{‡qݦ¯ÓÝ_Õ ükуô8ëºìžû™Û;¸NˆçmŠŒr省´Ñi§—%¸XÚ˜ÛûdÒ}®&-S<3ëôN»šx×A#>[ÍçÛþŸªrâ=-Œ;òÄòÌíº²«å­¬¸Ü1'e-¯­¬¸vƒ«ê°“~uäºE6ŽÜÑsnk:—¾ïúCèOÀ¡„Òx¦Œú}AËÙ:Úq­ÑålæÅ3·?/þWùd'G¶ù°ý,O¤|¯˜ÿTµkv4>ô4¡´@b\H‹³{?¤Ÿ“MÿÁ³¶¦mûéF€q—ÿœtÒ¡¯ wõ5í?ÊoŸÒ”'À*òv¤QÅYHHȪ•+@ŸÉúX¨«ûÏßð.CòîlÖwöbk»Ú#·Þw÷Gé_“ìѽƒ̯—Îw±llhiÊq5qþöèó|©üïïIqÚ~#—N®|7v “Ù7²T€# ¡¿‡BHSñbÃ}Æx˜›X±Ø¶N£üþ/ñY''@œ_^žÕ!]ÿœ¯f«UEOU{ó›G›æÌ°µbcÍ2fö¡ÔW´v>½ù ‡z©»mðÓ§yŠ·¼64oÉJ®X¤þJûÚ‡'‡ŽqZ°é@âö~&=DuUs³OÅíÎñ›0Ž¡ý·uCXï11ª¦¾@¯3ëçÆ­ 8M&káhBè/Á¡„Ò`!caH$×Ö\D™?nœ·ÀÇÂ#C Aý¨Á#å[½¥mQ‡¡§f«UEOU{èXÿ[£·Ü{ò™.ü;tìt/§yƒè$<‘FêvWh™L}ÅŸ™ EÒm[T<Ë/N]5c鱕…½gä•2Eãbk;Öùjnd9tá]ˆ^„.™=ÀÒ‘Ãqô˜TÀoQ¬yu±¿ƒµƒ!Ë„ãì» üe³TÑÞ"à}>­¯‰• ÇÅ?8ME×ä_LÝn0÷`ü¶ùƒ,è:4– g”ÏÌI© m¥Ýhª-X3Ó×ÂÔÚÄÜÉwQDISëÛ}Ò·ÿ§õŠÇMu·ôõ9Ub™âÆì;0w’§™‘U?îä})Ê?å¢Î̾w;÷†gâ™wxýÌpój8&áý8”BšÍnÍ’É£¸f†úLƒT"½;ƒLP?jøÄH ´e¡L¦> ¥f«UEOUûµ²F³Ñ®ºD-­Þ dþaK—ŽVÆl£U 33;«K•&ƪ`Uy;‚V3=¾î2/$3/}÷œž;¶¼ýªïÃo²FO8µÖ@4Æ÷ Ù#­0ÿÅóìE¦NŽnn¾8wóæoå<Þýón•çgly¨h?ýŠÄõÒÝœ¢ûI«½Í•¾uSÍÕK¯E_­¦f'ý¡rɲ‘³òͦå<+,ù%qXc¢çä¨÷n`iR¡Ïú9y·"Ù¡þSx"É_ ׃cA3K“¯ï0Ó&âÁƒ%„R/fŒ;ÇÄve"+9s¯â ¤ª Pã'Æ¦š‹¶¶.öŽîSfo¼Êãwf«ßžªö˜à‰·çú¬=x—W~vÛr ¯ 3 tºt¸ÜN¤Ì1¤¹J)--|öK´²ü\•y;ÒøÝƒ?pŠ Îƒ+Z %Нg¸ÆÎV¬#¬ÙÏ“©aê·ºCôÚn—{·½Ÿ×$·c¿êŠžl˜¾·°ª×¶£42ŒícU„•'Uåí8± Õp2Ä2%¿ÆÔÌϑ˚=ÝÚj===Z™XÆ?á6ÏimDlPÇ”Y´sÒ§çdÐÌÏ&j›*ªYu{BDzùb_\öžHo’JD¼!®ó”vCÜX@¢öa¿½ùD»‡ Üo«/hÛ!:Ð(å¥Bè\A«E¤ge]o}L Àëœþ‹§®œ+­ý‘Éw ážr°àâH<~ê<J¡îƒÆböa1† f;G•o«b<>TÃ'FªÁ@G`³WïIØó“ýŽß—½ïtÐ!zëLéJÛ×½G/Ÿ˜âÄ„pyþ…¼ýÇ ³óV[õ膇œª¼ Z,h»5 } t73ï¶.ñ÷tÔòb*I–G6Líbª¥TœT%–µýòR:,wFpøÖ[¾{&Õи@‹àên8Hšn¼KM(Dhæß'] HÕo…\&Ìihöè¯×éí&XXpÚ/;n¾T¹ù÷EcVßu¹ù_šÑñAèƒàPBu7RqµÔL€#»ÏÄ(“ð›dr™ØÉÓA[ôTµ7Õ]{"”ì·é Z\Ÿå^Œý—S+»zAKÔ¹Ú[å”&Àªòv¤QmjjªH$ÚÇêDSÓ›¿á]j²~‹ˆ¸Û¶øâe£@r>"¢ ­å±°Eôc\Äm]Š«àäÿí½¥Mlß®¨mhõNcfû¸ÙëÓÉÂúšç<žÃÐ-‘DôlÆÒͶl×/y·®ÿ*¢^‰ˆx.—‰H÷‰ '»ô•5Tçg§J[ˆ»ßí¡½·Kö©eÜGÃÜ÷gõÔ‘5 ËÿSç÷îB#½Û kºlŒ×ÂéöTiã‹ 4c×”¨¨™1wE÷™ ¦àN:ìÜC'j=¶ÔD|»y0‡"oz’}¹ŒØ»çÙ#åû¹>O&(í§R9dDGI{PpP¡ÿúhíVºáPêλ¡îã\bª£Mo6C.ªÏ»y‘¬kÙp<.B«S`ûv͘1î^N¥ÛX›3µÄ R/ʨ}¨ñ;¤dí·ZUô”¶ï•‹Ød¬)Kü<P Zµ%ù—j[Æ•ü;"‚Ò¥£÷R&{ðõ–­÷H„Z½Ž‰±ª˜ Wš·ãS=*µçÇÚÆ‚ü¼¬;w D"ðž«èe¥¥}šy;óÿòUV<ì³öIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/07_test_action_next_iter.png0000644000175000017500000001726112032647170027705 0ustar ebourgebourg‰PNG  IHDR^§ŽÏésRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ7'B–N1IDATxÚíÝml[×çñÿ=•Ý<,ÐuÚ¼í2EÔXà‹.é6ìbŠœ‡(¦à hôbº… H Û@,½/×,d@r´ÄnV@½F@¥(Ø W#`†³Â˜„Ql° ”ŒŠZkQ/ÒX3ƒmœØÉ¹ûâRŸD‘´d[Ò÷½¯î=÷œsï%>ç^ÒxõÕW½^¯àxËf³]^¯wjjо€¢ @4ÑDC @4Ñíêj¸4îó™ªqjÔ:[šðÆV˲rÓýaS©GÜ]NZB¡Î‡Ýc5´¬\Üçóùâ9ËÚcÕ|ÖΦJ™Ùü”€:G '3™Éí°õDFÝòÙt9¶¦³ùI§³r ÃSn :‰†-²Š©ñ¡ÙU¥DD£™É—‹û"æÎ¤ÖÁŸ,¾ú÷þ›J)1#³ÉL±eå²iÑÒ;»°ž-¤³¹ wÍš–UœJ¬ªæå»%_m˳ÕR=?^™ƒÝ›ó;Më™›p0 ŽºÎ'”+s¡ˆ(3â‹çæÂ¶Ù³É¡áwßWƒ9eËÊM÷ïä¶«½ ED)3Ü?ž*VO@ç§ɦ­&†¦óœ+àÈë|Ô0cvU©Þ‘äµA‡•‹"¦¤³¹ ·[òÙ´hi0(èYŠI ÓÓölrÈë6 c`8”ˆ˜5sÊùé°©Tý`^}ùõ÷ÚÕ.qæâ¾ˆ¹:{#?¸=ä©”‰ìŒV6YÀÑÖáØ^iÎW‡ºEDÜÞ Ö"kë›"rÚé¥ÌH PGì d¯[vJN'Ë{Û+ôŽFÚžäÝÙö¢]º¸/Žöj-élå“+:Í\,^jÀÑ÷H÷*eFfù¢{œÝbŽ™9J¬*eFüf{Ÿw³9Ÿ,ß/X.YÉêòÊæà £bÅgwǯضÛÙ#R¨ø›ÖÁØ„›3 Û£uïèÜÌ £6ó†cðZfpç3<Ø3ËYVqe¹Ðp,³°¼R¨&\[ߣ³ŠWl»¹¾ÆY "O(†Ç¥Vgo䛯6± j-…õêdÖØæÊrA´F·-,DƒZKaye³z×CÓ»|~á®å×WÛ¾õPB^î#è|ÔÐ}q´7=»jFüÛ¿•ŸSõe*JIÐë1 Ë:ít‰Z]M fÍ2o®,¯n¯\“çLsgNÙ= ¦ÃfÅtöö®kËwï]mUyë!ÀqÖùGÌŽÁ{Dp/½#Iûq`Ãp DF{wÙd{6YBÞÚ æö†ÄžS¶,) FÎôÖ–Ó¼ü†ÕÖ:[j0'p SSSSSStÀ1wõêUE/ÀF4ÑDC @4ÑDC´­ñåݼy“®8’.]º´µµÕF4´·¡ãŽ˜ëׯ7ùkW“¿í'›·ú.Ç`¿üè¯7_¡ë)oÀ•7ÈQxt[[[§Nj¾¡ ­ÌÇ @4@ëÑвrqŸ/ž³ª—Äs–õ8«xåÜ9wµs箬ìçV®´Q`[+•hhK‡§s¬qùöí|>ŸÏÏ|_&ŸÏçó·o_îÛ¿äw÷zâ=õ^âúÝÖJè»ÜÞÞŽP4TÊ Ï«Ó¡= èßf,Ú }¾x.·—¥ŠV15æóù|c©¢µ½m15æóûý>_W;ޏr¥<¸ø¿dåʹ7ÞSï½±k:¼ûw7ÏÎägξ•\iTl] •1qÅÑŸ¿ý޼QŠg+WÞòàâ¿•¾Ë·ßù¾þþ;» õ­$ß:ûZŸô½6˜z'ß}¯TlÓV®¼ñ᛿Ìçó¿|óÃ7v’gêËråöíü/þ³TÅM€C EÜÉ‘^eF*o:ÜÑíì©^ u06á¶—kŒÍ tÛëÖ7D,+—M‹HÓí쑵õMqOf2™Ì¤Ç0ÚM†wS^þ¦ˆHE´ûæËßÙ y{gËćo÷‰Hßð›–&•WÞO ¾¶÷œñÊû©Á‘KgDäÌ¥‘Š`9øNÒ^ú­³œ_à¨EC‘îÈH¯N‡Çç7wÚ3Å@ÄTm?欔±7,¬ot^ùÿûÛ>ø«?·gÇS¥…g.%ß‘7ιÝYI¾uÖNw"g.œe”k-}Ša8fbëýáÙhÒ%=^Ë*ÎGg âM¯…Ómìñ´Ó%ºŒ-M´?LXã›/gp&Y?SÜwùöíËw¯ïÊJ³GFî^O¤ÔÿyÏýÞNdÕ^ÿ‹¾ï¾üN pµ:àgž‰¹QW¡P(-ØX/ˆH³»½ý†£ï‚K)3¹=ù¡œùî¿ÿ°µ¹ãWÿ@ÈJò­³ï䫽sö­Ÿ­œùÖÙú)éúú^LÙSÐw¯'Zš‚8ÑPD ÇàL,´“c!¥ÌprÍ%J™áþV?ãÆ1x-Ô«‰áòCÊ×þÌ¥äkþ°ÃÒSÃî?ÿ«³ïØC†}—ß9ûÖ÷j¦—wî2¬Š{Ão~˜¸~æò/_NT>zܰ„ÒR·Ûý½·¶wp˜SSSSSS5KoÞ¼yéÒ¥­­­'[¹·úî•7ÈAxt—ßúïWÞüáõë×w‹yW¯^å‹òPB4@I×S^¿­­­·ú.Ç à¸GÃýàõS§Nq»!ÑPDä‰? p|p¯!ˆ† €h€fºŽ[ƒO:ÅQhˆQC Pmï eËÊM÷‡M¥DDëÞѹ™A‡AÇ={ŒZÅÔx8-¡èÂÂâââÒRD¢Ó9ËzªÚ`Y¹¸ÏçóÅŸ¶Š©h˜¿1»ªT(6á1 1 ÇàµIûwÉÅ}~¿ßï÷ûâ¹Ú”–‹ÛK­bjÌçóùÆRE«ÅuDIJЩ1Ÿßï/g¾ò†©Ô˜ßï·W.j*e†ûK±Õ.­T7_ü–¾Evx¤hhY¹lZ´zÝ þZLELŒ.,DƒÊŒŒ¥Š;…*3œõ.$Gzµ^M ÷G%27ê’Âlt¾¸Îö\'?=4[pDG\’Oç+ _–ÈBrÄ%…ÙyÃðL,Å‚ZkŒ-Mx òrÓC³…í‘ÎLf'Ë ÃhØ45W– ¥Ôèöµ.,¯”cŸÖÁØ„[º=öï3ÝÝÎ)¬ol—Ð|;•Šô8ÝÎY[¯,|x ÛÞPÒÙÝ•2Ã㥔ižÉL†Œp ÑPdc½P½ "öí[å” DL¥Ú*Ü0<s£½Z«ÕÄp Ï1‰ ðÈÑÐ0<Þ(efóõ<ítU/p9OïgÅN;]¢u°³IaÃ1x-“‰µˆ¤ÃÓÜbð¨ÑPDÜG{µN‡ÇËO‡äâñœe†£ï‚«”óYS)×…>ÇþM×–ËOÎo¶˜#EÖÖ«×uOÄ‚Z‹Ëéàf€ìñ¹††cpfÉ9ÝN ""Œ.L†ˆ8¯E×}‘HÀÑÁèµAÇþÖ¬T~bØŸû÷î9r 2º<4›ÌêàO_ý{ÿKÄ(®ÑÈ€ÃÈs¤ödLMMMMMÕ,½yóæ¥K—¶¶¶Ž^ƒùepœ]¿~}·˜wõêU¾(%DC”ìz¯áõë×颡\ºt‰® ŠˆÉPÐ÷€h¢!ˆ†h¦ëi®ÜÛ?}—#ÐÐK_ë|Û×_ýðECùwþ Þ[éÝ^sï¾»ëè[×Óßìó/=˱¨tëÎýƒ(–{ @4ÑDC4ÓuˆêjY_üã[†!"–eœq|õôIã)©Oõrõm§º·þðž|å•—N¾`±ß* kÅ}>SÕ(jŒ-MxžP±<ü øð¾|åçÉ òtqóÁ½îÇ‘v‹b†ÑõÊ·º®`Y_ÜãäG#Nf2“"–•›î§%tp‰°õ]lýóÃÏ ã…o”²—a¨ÓޝÖIJSòeƒß_”>–a¼å£å•—Nž«¸ùÙÆCò”éÊEùšµñ/–=0é8ñ¥=4hˆþè΃vêîÿÓç·¶‹:}rg{V£<yêϼò¼!ƒ”Ö ƒó/6OråÅ`taÒcìÄ»˜„Ã[špKÞ^M÷öº …Âvò³¬âüøPbUÙåÕ”˜á~i’-ë‹Oþ –¨¯?×^ó Côé‰?þV—=ŒWþ§ˆÜûøþÝêÌ‹_ùäã‡ýþË?~±«¼É'òUO÷—Þýç/O¿Øõí—¤³ Üú¢jjÕ°;ƒ‘~P|xïã÷ž;ù‚alýþÁ–aœúÆ3ß>ñÅE͹ *5ÿ¤Ã?(º½ÇP Ã3™É,...$GzµN‡§s–U*H™á¬7“™ôF~:l*Œ.,E.TnžŸš-¸F¢#.I‡§ó†á™Xе>¸©jËR¯|ã+õÿ´³¦ˆñìsƳ"òк¿ÝËRgþµ!öÈܾ¼·½¼³½7,ª•jˆˆTŒZ–¾ÿP,ËxîDÕr€=Ã_ë_ ÒéÊÝΞêZcn±¬âúšhÝë<]µšeå²iéqº="²¶^|„Ôµ/ CÿãúÃ-ÃúþÓT ëÁÃÿý»OsöÂíþôˆÏžàÌmDÀ¶¾X®í'”­bj|hvU)QJÏjn¬D¤ÇÙÝ(Š*30E))¬oˆt·žº¾þüƒ­Oõ'ŸÊ ÏïKשçNʽªrŽøI$Õ†ÕÐÅß?¼/êLw×§Å<ÎÚJ‡•3Ëí~áp{£†–UœÎÄ5’Œu»·»vºDë`taaqqÑžzn}ãS_;ñŒeÝûøó¥wïãÏïY–at}ýy±î?ûn¼Ö²¦záYeúî?µ’Õs'K»Ø_»T£Á¡ÝLÃП|ÚF3ÀñL‡åBiB¹ÙˆàvˆñxC¢”™Í‹}ÓáörGß—Rfr~³&/Ь­oî•¢NžøÎK'_½±ùÙ­;÷oݹÿÉs¥‘¶S_;ñ¬èÍÏîv8ÕòÐß³§žùösÖgÿòù­;÷ÿáwŸ7¹§Ð0”ã¥]4_³õÕ0Œ®o¿øÃÐÝùâþI1 ýÑ÷,ËÇ[¿ÿì“çNžzÒsñà)O‡äBiwBÙ0<±1Ãýk.—¨U3Ü/?Y|µf5÷D,˜›‘€DcÁt8½½Ü1x-ºî‹$†ý‰ò§$:"£ËC³‰áÀ¬f2“M÷^zt·>5þ›om°*µU­ÜpÛ^|î|uoT¬S½yå.Z¨Xõ’]‹Ý¥b<ÿÕóõóæ•ux¾‹“ì»®æAp².¬žÉÅÅÚw¾zµò†V15."!oyîØ3™©ÙÚp ^Ë r$žêhرÊ?Ԯѹ 7 pL£aÃáF<å]¢!ª‚]›! ŽK4üÛÅ4  ÞK_“wß}÷EÃýàuŽ:Àcý† €h¢!ˆ† €h€¶uÑÀAøÕ­ßÒ GÌŸ™N@4@’YÑð)ööOw¾æð~cÊájÅÑèsz€# í·ä¿ü‹ÿP±äç‡îíùpµâhô9½À>DCË*ÎÍB±¥ a´R¢eå¦ûÃiic“Öß•ÿÓªYh/yûÌÕ¿7Û51ÕΣ6Áè¤Çx²=Þ~+ŠóãC‰U%"Z÷ŽÎÍ :Œc[[û˜Jl©|-+7ÝŸõî÷ɶ/½Q>þ#¸ï—öã)ÿñ컽žPÎßH¬*¥Ìl¾Ù«mÜçóùâ9ËÃðLf2™ÌäA¼ò>ÿLWß&›hŒ.,,$GzµN‡§íJ>Y­·b;š»F’ ‹‹‹KK‰Nç,«¦Ï[mŸàq´Ûþgýß-ÿ4?­bj¼?œ–Pt¡ªOZÌ1í(?ÙÚ*_:ö«óÕ Ž~4´¬â|rm$:Ò«u:9_¬xÎÅ}~¿ßï÷¿öZøÇýaS)¥ÌpãP^ÙÏÕ¼^§Rc~¿ßçK­=l®¼ùÃõ̉†?WÞüaåí_ t;{*víßÏY5ï5õ·Š©±íõwZÅÔ˜¯rIëÃNm¶bc½ "=Înû½Ó1xmÒ-ùéê>ßÇ~>µUÊ Wõg¦]¬}¤ÊEÙÿK˹ml,Ulí–{ãO¼}•ËÿÄÛ×ä Ìߘ]U*+QÙ}RÎ%õP3¾ÕJ¿5LBõ}XsÒ–ÿi_"RL½öFü¿6Úénv«Lg·¼Î-}«¾íõÝÎ¥š‹Û[Õ\Úõ}x@¯NplF ó7f{†Ü}\"…å•M)¿…„Ó¥‘¡÷ßýd)ÔZë`Ã9šbj,bª`ta!Tf¤ü®l¿Á/Kd!9â’ÂìüžuýŸ}Ñäg¯áϬ©”„¼çÕùÉLfqq±•qDËÊMͶ‡|ʃ ùé¡Ù‚k$:â’tx:ßV·Õ ÃðxC¢”î/¿?†g¢®Ï÷îçhP©ÕVúù©¯m( ªÕÄP]Ï×k޾ .¥VK§ïæÊrA ³7샾¹²,ú- ív¦í¶Ü²rÙ´hôº”Ö¤:è·šè\eÕœ´†á˜‰µN‡ÇSEËÊŇևßgò¿4½œ[©ÿ£ŸŠ Û¾ÛE§”Îz3™ÉúK;/î‰ÇõêG?ÚC†£Ý5o®–U\Y.”G†š³W.½5º½A­ Ë+åA­ƒÃÝ¥ñ¼tvÏ!Š?|öE“Ÿ][¨ÌH ˆ˜ºwdnÂ]?ޏwUQÙï÷"=N·³GDÖÖ‹í ¶Û Ïd&ÔJ­&†» R¶ÔÏnoPëVúùÔÖ=‘éUf¤<âÕ¤Xû8Û¿Ûcxö öú-ÇÕ½ÑúòŽ/GܤþÊjxÒ†gbnÔ%…Äp ?鬺::­ÿŠM.:­ƒ±šš·viï遲QÃüÄêjb8à÷û‡«å7×íIÃÕ­\Xßè´®øü‹&?»meßk¸¸¸˜¹6hÙsŒ@¤ò •]G/æF{µV«‰á@ 2ˆ(eFìÚlQ­ðLfì›%wŸHÝÏ~>µíˆŒôêtx|~s¯bí RXß|6í*ß ±)ë…×Ývo´¾¼>ßTÌfvÐ Úoõ'­áŒŒºDÄÕÎèiÓÊÔ©ØÊE×ú¥-\U8jѰt—araqqqqqÑ~§ßžS>ítµ^~ÝÊ.çéŽ*ú£¼þ×?ûù§ŸÑðç¯öó?=IJŠóÑÙ‚¸F’Ñ Ö{®o8¯e2Ñ –§N;]‰³[Ú;nEyúo—w¯–û¹þškkï"$…Ùhr­i±åiîìt6íºÐ牖Wæ³é·ƒc÷7óK•Ëÿf~i·ÞØÙu~_.G¹šŸ´Û“R˜¶yGÝn•9S±•‹®ÝK{_àèGCû.ÃòGlTÎ)Û¿‹¬­oÖ¼ÂV.‘ê Íl¾t·_ûƒUî?ø²áOû£U‰ö[¸Ý„üt¸~ÈÁ= j½5JJÎot+,+/?'aß.Yõ\êó½úym}s{óg»ýÿÔÖ¶4Z(ö:ÙÜÞˆ˜¦i/q{CJ­&fIÀnûûŸ¿.ÿ4?ÝGÞÒÚÚ¥ÑV¿5ýÎ.'m~zh}x©tGÝÐÎÿ|^έÔÿNÅÆmozÑ5¸´ç«åhhßeX¹¤»ïBïö½8ŽÁk±PÁžköùây鈔îXª¿½Ì1x-Ôf$ˆ˜:½6è踮?úÁë¿x/õ‹÷R÷|Qþ±—´þÆᙈ…”2ÃýÉ5—”]t_,5!é-9”g"iqFìw»Q«‰áRn«†á™ˆH´¿ßï÷—n—œ°ß€kú¼y?/Gû³Á]Y‡¼¶†cp&Úûd;íìÕZëÞ }Ýv^é­øçAž†cpf)’t$¨™èÜóÒh·ßš«9ioéÔ˜/ë]šôv7Ú7l6½œ[¹´÷åàîÖö&]ÃKû±½:À‘aLMMMMM®JóEy-ÚÇø=\µ}ŽÝ¯ný–ïP>Œw7PÇÁÕ«Wåw(/%;\­à‹àè ÀqÐEaöw?LR[ppDCàÉúÕ­ßÒ ¢!á¾4Àa¤è @4ÑDC @4@»ø\Ã#ëÖûthèüKÏ ?ý#jüú7ÅÝþÄ„2ˆ†  hhY¹¸Ïç¯àóÅs–µï»·w´…[V.ÞBi•ûmå÷'uxšÔ¡Å–¥ÌˆÝÀRmëkÒn»ìõwÂåžux”¼ Ð~4ÌgM¥¤Çéhù™ Ë*ÎGg âIFƒZ·°Åi§«ã$Z·í¾§CÇàµL&Ô"²}{ßi§kçaíYæúš˜lX~d8ˆ¤Å5°£˜]áÕÄpåÃÈŽÁk±P!1(/l·]î‹£½Z›‘@Ö+woÃ:ä³é7wtÄ˜ššššš:±Š©ñ¡Yk+S^ÅÔØÐ¬ŒÎÍ : ÞºsÿOÿÈÁ)jüú7Åó/=[¿üêÕ«Gê‹ò ÇàÌR¬göÆqøœ?ËÊݘí‰-5Î…è:bí1 ÏdÆsŽÜñi)xl][]p„ýú7E: ! o/h‚ e @4ÑDC @4ÑDC @4À¾êÊf³ô²Ùìÿ]c¼”˜íIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/15_ws_maintain_session.png0000644000175000017500000012764012032647170027366 0ustar ebourgebourg‰PNG  IHDRAùÈ™¢¿sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ3ÕrP IDATxÚìÝw\SWã?ðs³Â‚D'¢Ô-h­«VëDâ¶ŽVû8ª`­«Z-VÁ½7· 7(Ad…€ÈNrÜç›_FÕöó~ùGrï9çž{onøxîÕʦ]+‘-€ÏDFJ§•Èöâ‰@l €ÏňqSXØ Ÿ—^í‘á>3‘Ñ ÈpŸd8d8@†d8d8@†d8d8@†€¦á|´%]¹r%<<¼uëÖÞÞÞŠI¥R©Tª¯¯obbÒ¬Y³÷Þ¤¤¤ÌÌL@еk×wo-<<ÜÖÖÖØØ¸/..ÎÊÊ266622z¿ë•žžžŸŸß¥K|¦á!dåÊ•=5jÔìÙ³™)»víºpáBß¾}W­ZÅL9~üøþýû÷ìÙÓ¦M›úÚÉÌÌŒŠŠª®®®¯€D"ñ÷÷OHHPMqss[³fÍû]á[·n9sÆÉÉéÝ3ÜÁƒ=zøðá†tþ¯¿þ:xð`aa!óVWW÷«¯¾š8q"‡Ss2mnÚ´©F&ûý÷ßÏœ9üf±X@$Mœ8ÑÞÞ^.—¯\¹ræÌ™£G®¯ÃêÕ !ÀÞÞÞËËËÒÒGÀ?-ÃuèÐáÑ£Gñññª)ÏŸ?'„$&&ª¦ÄÄÄèééÙØØ¼KWÖ¯_Ÿ’’bjj:dȹ\­P(Þû ÛÙÙ <ØÂÂâÛ¹ÿþ‘#GúöíË ÂiîüúõëïܹC0`€½½}FFFppð‘#G>|¸mÛ6§*IÓôµkטס¡¡uŽ«éêêvêÔ)11ñÕ«W………b±øÀ"‘¨S§Nûöík×®]‡4ôÜÐÐÐÎÎ.))©°°ðîÝ»/_¾Ü¿¿z>)/_¾ŒŒŒ¬¨¨˜1cW€Æe8BHrrryy¹¶¶veeeJJ !$77W&“ÊåòøøøÎ;³XM¿ºN*•2ÍΙ3ÇÕÕ•2yòd¥RùÞW¸oß¾}ûö}ÇFª««·nÝÊãñfΜùÖÎGFF2ÎÇÇgĈÌÄ^½z­X±"99ùĉ“&MROÃyyyB¡°°°022²´´”Ïç×XzË–-üñGBHPPСC‡Š‹‹Åbq—.]fÏžííí½eË–hØmÛ¶ýÏþCùóÏ?;–›››––Ö®]»OóÔ²eKd8€Æe¸víÚq¹ÜêêêçÏŸwîÜ911Q¡PPEÓtRRR=ÄbqEEEÇŽ™ò±±±AAA/_¾ÔÕÕíÞ½û¬Y³¸\®zƒéééÏž=kÙ²¥——WçÎ !\.—Åb)•Ê/^01ˆ¢DêköìÙ³7n܉D£FÚ·o_FFÆÈ‘#oÞ¼) ×­[§ª~ðàÁèèh??¿àà`¦ü¢E‹˜Y©©©)))EEE¦¦¦½{÷V…ªú.“ɆÚ¢E‹·vþÀ„‘H¤ p„N:õë×ïúõë'Nœ3fŒ¶¶63ýêÕ«„+V,_¾¼ªªêöíÛC‡­o×ôéÓçСC„7oÞB¬¬¬zõêÕ­[··îÙ=z;vŒ¢~鞆Ýwûöí“'OfeeÙÚÚNŸ>}÷îÝr¹ü‡~055eVóñãÇ;wž>}:!D,oß¾²eËÕÚihüêÕ«=Š%„ûúú¶mÛ6""âÔ©S„üüü¹sçvèÐaÖ¬Y8hHCîKåñxíÛ·'„ÄÅÅB(ŠbÎñ1§Scbb!ÎÎÎL¸Y¶lYBB‚‹‹ EQ/^ôóóSoíõë׫W¯Ž‰‰yóæMrròÊ•+ÓÓÓ !†††ŽŽŽÌØ’ŸŸ_qq±z- ÍJ¥R±Xüüùó~øáÑ£GíÛ·‹Å÷ïßWí­ªª:wîœ@ ÐÒÒbÊgee1³¢¢¢æÌ™Éår{öìÉf³™5Í ½~ý:!ÄÚÚšy«¡ó•••LÞª±a™á@UBHyyyxx¸ƒƒƒ³³3m™HWŸððpæE«V­˜VVV„7n4dßß¼y“bjjÊÔÒ¼Êaaa6lHNNnß¾½Á¢E‹Äbqee%S 77W,çää0o+**Äb±X,VGjhüâÅ‹þþþ_OOÏÂÂB"‘„††ÚÙÙB"""ÊÊÊ<<~üxí OÉÎÎ&„¼yófÏž= ßžŒvíÚ­]»–¹{÷Ñ£GªÀJ)((¨ªªÂá  Ân%²?vä[ËUVVÞ¾}›Ò¹sç~ýúBÊÊʘèÓ­[7æ:06›m``pïÞ=‰DQTTôðáÃcÇŽ)•Ê6mÚ0÷@&''WUUýùçŸÙÙÙ\.wåÊ•:::/^¼X¸p¡T*ÍÏÏŠŠ ,..³fÍÒÕÕ}k³&&&5nY077?þ|uuuYYÙ¸q㘠ø˜¢*Ïf³µ´´=z”“““’’RZZzçÎtëÖM󺂇3`ÀBˆ†ÎkkkÛØØ¼xñB"‘„‡‡ݺukÇŽ­ZµZ±b—ˉ‰9þüèÑ£UhaTUUEEEeggýõ×<é|óæÍë{àÈÁƒóóó—,Yb``P{.SÝÜܜ鶽½}hhhYYYRR’‡‡—Ë­o•™ç§¥¥¥¦¦†……;w®°°9 >bÄ@ÀŒÀݺu«°°E300`ΓŽ7ŽÇãiÞž«W¯f6NNNεk׊‹‹»wïÞ»woBˆ±±ñÙ³g«««%‰\.ÇçHü3;}¾¡¿—Ú¡Cæ™pÌf,Šü߉TÆàÁƒµµµRSSSSSY,–™™sm>ÃÃã²²rëÖ­4M­X±‚9ËÆf³ Ô ÊÞÞ~Μ9††† i¶6--­Þ½{‡††ª’VFŽ©¥¥uàÀ»wïÞ½{—Ãá¨ð¦a¡öööNNN=ºÿ~=4wžòÓO??þСC/^TZ}óÍ7S§Ne.¼zõ*EQÌØaÑÄýû÷¿õAqŒk×®%&&öêÕKuÃfºººÓ§Oÿå—_’’’Ž=:iÒ$ «fffÌceðûWÈpðÙ`±Xo=¯ ðo162 Ã2À?ÀÛïi`~Ö>ŽñãÇËd²wÍpLCØšÁ±cÇR¬¡ÏyküÐüNc§À?ÛR¯1 ,ù9=nãÒصðO%“ÉêûåÏÚpOÀ'¡Qg‘á>?ÿŠ ôòåË:gUWWgddÈåòß«¬¬, }ËåéééoÞ¼yÇÆàßžáÆŽ;f̘¢¢"æí½{÷ ”ý1»ûÕW_ݼy“yýûï¿|øæÍ›§Nêåå•‘‘¡^wåÊ• ¨®®VM6lØ Aƒú÷ï?dÈÝ»wBbccÏ;W碙Â}ûö2eÊéÓ¸Sà³Ô¸{Š‹‹wíÚµzõê¿«»]ºt‰ŠŠêß¿?S rrrZ¶lùòåK“†7õòåËÓ§O_¾|Y[[[¡P¨G¢Æ:pà€¶¶vÃË_¹r%;;ÛËË«Î>üòË/™™™gΜÑÑÑ!„Íž=ûÌ™3ZZZ„ׯ_ß½{—¢¨ððpf;0–-[6pàÀGÍ;wÈ!_~ùå‚ LLLzöìY»Ë–-0`ÀíÛ·W¬Xáææfjjú1wâŒ3F­ž¿ ±w.•Çãݹs§öÕ¶mÛfΜ9jÔ¨Ÿ~ú)55•™èëëëççxð@C†#„(Ь¬,;;»§OŸBîß¿ïââB‘H$^^^}ûö]¶lYYY™ªâëׯ}}}ûõë·|ùrfºR©,))azËf³™„Tgõùóç_»vmΜ9«V­úñǯ^½ÊL—Éd'N¬®®^½zuLL !$''gáÂ…ýû÷www?sæL} ^¹råÛo¿­³R©ôüùóóæÍc!dâĉl6ûÂ… ÌÛÐÐPWWWË—/ר8E999ñx<±XLùæ›o4<Ÿ™Åb9::2`¦ÔÙU‰DâééÙ¿ÿ5kÖ,Y²äÚµkÌtOOÏçÏŸ3¯çÌ™]_ aaaS¦Léׯߺuë!{÷îß¶mÛ¨Q£ Ž@€‘áÜÝÝ…BáŽ;Tøl6{òäÉ«V­zøðáñãÇ™‰ÙÙÙ<vppHIIY»vmhh¨­­m\\sæ±¢¢bùòåÅÅÅ«V­¢(jÆ J¥²´´433S=~ÕÈp)))EEEIIImÛ¶uttŒ‹‹SÏp›7oîׯßÅ‹ËËËUg] !AAA#GŽÜ´iÓóçÏ™dÓ¦Mwww//¯cÇŽÑ4Í«³zVVÖ®]»ÆŒ³xñb‡‹/2Ó¯^½jmmÍår³²²ÊËË•JåâÅ‹KKKÿøãÓ§OñÅu6¨T*ãããÍÌÌêì“çìììÔÖ­­í‹/˜·/^>|ø°aÃ"## Õ7ŽR©<{ö,MÓ:t „˜™™1·N™™™»wï‰DmÛ¶Õ°î›6m²µµ½té’‡‡Gtt´j¿gffVVVª¶OEEE-Ð4ý믿úøø\½zuúôé„I“&YYYyyy°Ùl#ÃéêêΛ7O&“1]©øøø¸¹¹ÙØØXZZÆÆÆª¦kkkûûû/^¼˜Åb±Ùì-[¶ÌŸ?Ÿ~#„­ªªŠ‹‹ëÚµkYYYlll÷îÝ‹ŠŠ:tèÀŒØ1f̘ѷo_—Aƒ=|ø™¸~ýú™3gîØ±cùòåªO™2¥ÿþB¡pàÀQQQLxºråÊСCUe’’’ÄbñÌ™3E"‘¾¾¾±±q ¦¦¦²X,]]Ý:û “ɸ\.EQêk­§§Ç\†˜œœœŸŸß£GGGGKKËàà`U™ÀÀÀ!C†ìÛ·oõêÕL@lÙ²¥D"Q]¿¨níÚµ#GŽ‹Åû÷ïg¦ÔÙÕªªª'OžL™2…Ïç÷ìÙS$Õ蘺:[ (Š¢¨°°0…BÁôJGG‡Ãáèêê …B~MÖègü~ñÅ®®®×¯_çñxªáŸ?ÿüóÞ½{¹¹¹J¥R___=r1бX,KKK§˜[Ž9Âü¦Ç+..fþêkè@—.]?~\XXøÍ7ß4oÞ|ݺu>lÓ¦ŽŽÎÝ»wår9sÎŽbii©ªÕ¬Y3æ…µµuxx¸júÔ©S»uë¶hÑ¢}ûöuíÚµ¾êFFFÌ‹æÍ›wêÔéÆݺu{õê3ø§Z‹åä䤚S»A‹¥T*Õ×H½}úô©¬¬LLL´··WÈÏÏ·¶¶&„\¼xQWWwûöíÌ]ºtiâĉL™îÝ»÷ë×O$©NÂ2{,V1}ùòå-Z´X¼xq^^žM}]‹‹ãñx ¼Z®Î!7n\µjÕõë×øáWWWrO†#„øøøÄÄĨnß¾}âÄ æBõ%K–4üNÕ-ZBFŽ9sæÌ†/½sç·*++[»vm³fÍ´µµ8УGBˆ@ Ëå¿üò ÓrÒÓÓÕ§888Œ=:<<|àÀo­Nqww¿|ùò«W¯¬žŒ•J¥X,vttd¦ÔÙkkkŠ¢^¿~­vU}ðôôÔÑÑ‰ŠŠRe8f|kذaÕÕÕýõ×·ß~ˤ4]»v%$$0%Û·oÏœBUÉÎζ´´T_ŠŠ¶¶¶««ëàÁƒ×®]{ðàA‹UgW…Bá›7oJKKù|¾*ª0IT.————kØøvvv'Ož<|øð²eË®_¿Î„éM@c5åùp-Z´ðôôT½eþ„kiiݽ{7++«¬¬Lu¥”f]»vÕ×× ¹qãFnnndd¤D"‰ŒŒœ5kÖ£Gê«Õ¥K——/_jiiQeooËd8[[[++«ÀÀ@¦êíEGGÓ4]\\¬ºr.55599™É"ÏŸ?·´´ÔP]]ÿþýΟ?¯~"UµôC‡)Šüüü:¤(ÊÁÁIºµû ««;a„sçÎI¥Rfú–-[LLLnjjêåå5a„ &Lž<¹k×®µïlPÏp5R] ,ÈÉÉ9tèP}›ÎÆÆ¦yóæçΓËå.\HJJRe/sss±X\VV¶~ýz¦p-TWW§¤¤°Ùì/¿ü’RUUEiÙ²¥êÆøxŽ2bÄ[[[æuïÞ½E"ÑÎ;?îêêZQQ±mÛ¶†4¢§§·víZ@°iÓ¦I“&mß¾ýÕ«WoÞ¼IIIÑðl[333SSSU:qttÔÕÕupp „°ÙìÍ›7GGGŸ ·ÔkŒ¡¡aÃ/‰@†û$¼õ¾ € 62 Ã2À?À¿úùp†††øÀçãpÿ‚ GÓt~~~FFFyy96ÀߢçR«ªªŽ?~úôéòòr‹¥T* NŸþ8A.—«ÿä<À¿7Ãíܹ3$$dĈ“&MÒÓÓKOOOIIùWÉ××7//ïøñãØ»ðoÏp‰$44ÔÊÊjÞ¼yEBllllllTswïÞÀçóûôé3mÚ4.—ËÄ)sssGGÇ£Gêêê~ÿý÷ñññG555]ºt©©©iˤ§§ïر#99¹eË–¾¾¾öööLE@0hР€€>ŸïëëÛ®]»'N$''+•JOOÏÅ‹;88$$$?~<..ŽÏçO›6màÀþù§··÷àÁƒñ €ÏQC¯‡KMM¥iºsçÎL€SWUUµ|ùòÄÄÄÙ³g»ººž:ujï޽̬ììì;88¤¤¤¬]»644ÔÖÖ6...,,¬e***–/_^\\¼jÕ*Š¢6lØ T*™Šqqq:u‹Å§N"„¸¸¸OOO333BÈo¿ý–‘‘±qãFooofJiiifffYYv?|¦:ÇüVi³fÍjÏzðàT*6l˜‡‡‡»»ûÍ›7ƒƒƒçÌ™Ãb±!ÚÚÚþþþl6ûöíÛl6{Ë–-eeeáááéééª4—yðàAAAÁ°aÃììì\\\Ž=ý‹ IDATš––Æ Rµyóf¡P!‹ !ÖÖÖ::: …ÂÍÍBÓtAAÁëׯ³²² ÀtÉÝÝ}РAµÃ(À碡ãp&&&„¨¨¨Ú³rrr!"‘ˆ U666ÕÕÕÌ\SSSmmmÇb±,--y<ŸÏ¯Ñ‚æ2yyy„#GŽL˜0áôéÓ<¯¸¸˜™Õ¢E ¡PȤ@š¦k÷¢(___]]]???Ÿ/^0Y,2|¾:'‰8Nrrr~~¾‘‘‘ú,&Eeee1osssY,–Áûêb‹-!#GŽœ9sf«¨ç9WWWGGÇ3gÎ9rdûöí;wîÄ^€Ï]CÇጌŒ¾þúkBÈš5kžŸ™ššzûöí¼¼¼=zðx¼÷ÕÅ®]»êë뇄„ܸq#77722R"‘h(ߦM™LöìÙ³ªªªŠŠŠÐÐв²²Ñ£GëéééèèB"##gÍšõèÑ#ì~øL5âÙ"Ó§O×ÓÓ;~üø²eË!:::"‘ˆ¢(CCÃüñ—_~™9s&EQݺuóõõ}]ÔÓÓ[»ví¯¿þºiÓ&Bˆ¡¡áŠ+,,,ê+?|øð¤¤¤… .\¸ð‹/¾ úå—_(ŠjÛ¶­§§'!äÍ›7)))oÞ¼Áî€Ïå6høÅJ„„„Œ?ž¹§BÓt^^MÓ¦¦¦5.)+**ÒÑÑy#p5”””P¥««ÛÂ2™L 0=¬ªªª¬¬ÔÓÓ«Q¿— ŸšcÇŽ©G¯:7¥Ñ?f@Qó̶ÚÁ]¥Ú!Lõ|Æãñ>\²øøð›÷ŸŸÃ;v [ àsÊpãÇÇføÌ2œæKêàãÃõpÈp€ ÈpÈp€ ÈpÈpMEÓ´D"yýúõûj0((èÌ™3¢0Àgó.•/^œ’’röìY‹%‹çÎ;a„iÓ¦B6oÞÌf³—,YrèСK—.+•Ê:lݺ•2vìØ¢¢"¦¡P(‰¦NÚ®];fÊØ±c9ކøºté’P(=ztC:٨Ÿ…w‡stt,--MMM%„<}ú”’˜˜ÈÌŠ‰‰qvv–H$‡îÑ£ÇåË—:4iÒ$U]CCÃìØ±câĉϞ=óññ‹ÅØ<Ã999Bâââ! '11Q©TJ$’üü|ggçÜÜ\¥R)“Éhš655íÔ©“ª.›Í¶°°hß¾ýðáÃgΜ©T*ƒ‚‚µôˆˆˆ©S§Î;WþÒÓÓ/^räH—.]ø|>>+ðéhèõp!!!5¦ }út]]]U³Ì\æµ­­í®]»ÞÚ==½µk×þú믛6m"„®X±¢vãóù/^‹ÅºººÞÞÞ ¯ðé Ü ¿x"ð­åBBB~‘ºªª*©TÊçók_÷”””P¥žUÆŽ+ ÷îÝ+“É X,V+|h [#ÆMá|èÞðx¼<¦¥§§÷Ö2uʆTøpþUk»lÙ2.—‹½ÈpŸ“nݺa—À? ›áà€ƒM Î?à46@Ã-õƒ¿žMÛnÈpïÙÆ¥3°B&“1\õžö¶FÃí=päÝA†€&ò8ÍŒ}ðظ:ëcC†€wÅeSØÈpð¹e822|vçR‘á>¡ GÓtVV–¾¾¾¾¾>¶;À?*Ãqþæ wðàAš¦§M›Ö´ˆ’‘‘! þ]nñâÅ)))gÏže±Xb±xîܹ&L`6âæÍ›Ùlö’%K:téÒ¥ââb¥RÙ¡C‡­[·BÆŽ[TTÄ4" E"ÑÔ©SÛµkÇL;v,‡Ã9vìX}Ëõðð°¶¶Þ»w/óvÉ’%¯_¿Þ·oŸzË|>ßÉÉé»ï¾³µµmH›ÐÕrec«|9ăÃå^¼xù½tàìÙs4MOœ4E}âœÙ³’“Å¡W¯³X¬çÏ<§M:uš÷¬Ù„Ÿ~ZÃasV­þaÿþ€sgÏÈd2¥RéìÜiÏï{™¾Éd2¦##£¶mÛΘéݾ½ý‡èùß™áãââRSSE"ÑÓ§O !‰‰‰Ì¬˜˜˜éÓ§K$’Ç{xxøøøäää¨ênݺµ¤¤äÅ‹üñ‡ÏÎ;U1î]ˆD¢¥K—>yòdïÞ½~~~8À>T†S4:ÃÑ4!tS*Ö×!tÖœž<‰N'·iÛ6úI !äé³gL™¨ÇQÞ³g¿LMûsÀ—C‡-X´¤   ';‹™KÓD(l¾ó·=¯K^'‹Å{vïòšî¹÷?míì>@Ïÿ¾ çäätôèѸ¸8‘H”Àáp•Jevvv~~¾³³sZZšR©”Éd4M›šššššªê²Ùl BHûöí)ŠÚ¾}{PPÐúõëß½W\.W$Y[[>|øÕ«W8º>© G¡k¥.Ifæo;~öŒ¯ËïÛoÀ4¯™<òë¿øgOó_½êØ©ÓTO¯Ö6"Bˆ8)qËæŸórsûöPU]Íápje8gBHTt´•èéÓ8‡óeee±±±æææFFFÎÎÎæææ÷ïß÷ññINN®¯gggBHZZÚûIã4-•J9RZZÚ¿]0ÃÉéÆþ£ Mèÿ©XZZ±táüç ³æúöpu;yüèž];™YÅš8eú÷?üôðÁý#‡17mX—•5Ùs†RIÐtÍn´³s`±X1OžTËéøgO{÷PVVš’’efna`häèÔÙÌÜâÞÝÈ93½ž?O¬¯o:v!„¤¾|Y_ÏûïSÉpÚÚÚmÛ¶ÏËË+..6l!$111&&¦cÇŽ„‡³sçÎÎ;¿|ùÒ××÷úõëu¶caaÁápÊÊÊÞËŠ%%%}÷Ýw‡:tèĉqt|À § ûBÿoÅ»÷"¥Ò<·>ýúâ5g®ž^ð•‹•ÕŠj=sÞ¢î={·²ncna]­ sóòÒÓR{ôúbÈðQ³}—›˜Ö-jÛ.þYlVvvQQ‘ÇЄ„„gO¢£:tìT­ iŠýËÎ?œ;wK}ùbá¼YWCÿª³oÆ--8NiYi}=oºŽâàà “ÉBCCE"‘­­-Ç‹‰‰a†Ö!zzz›6mš3gMÓþþþªëÕÉår33³.”ÍfWVVªÞÊår6›­zÛªU« 6ðx¼ääd¥R‰£ àéR(ûÐ5+fgeBZµU)”ÕJÚªµH^]'•VTËÿüc÷ìéßMŸ8&#=¦é*…òIt!Äʦ S—¦ M×Ñ ;ûE2Yè_WlDm[·±ãryñÏžÅÅDÛ;ub ðtø«7l™>{¾’Vnóߘ_PP»où……r¹Ü´¥y}=oôº:ÎÉɉrþüy.—kccQTTÄŒÃ1(Š9r䀔Jå³gÏj7rõêUBˆzÍŒsrrÊËË !4M§¥¥©æêèètïÞýÛo¿‹Å'OžÄÑðáÈtcÿÑ„ÐôÿTÔ !ÙYYÌ[in.‹ÅÒÑ3¿uýÜÉ£} <ýW[ÛöÌâôÍ !Ò¼<¹‚®ªVTUURÇRìœ !Áδµs YkÑýÈ;ÅE2[gU…’¸Ý»ß ¥Rù4.¦vßn„Bì;8××óÆþ{/Ûüý<ÎÑÑ‘¢¨’’;;;Bˆ]bb¢………P($„ÄÇǧ§§wêÔI.—'$$PeiiÉT¬®®ŽŠŠ*//úôéùóç…BáøñãUÍ2sU™¬}ûöê íÔ©SVVVPPÐÈ‘#ïܹSZZZ£!ä›o¾ >|øpÏž=­¬¬ÞÚ&4)Ã5el©ºº*úñCæµ¶ŽŽ}Ç®::üwÃzõsÏÊH%ÍíâÒ‹bqJKË !\^³w#r²$å¥eå";.—y熙…õÓ˜G¯‹‹…FFµ»!²s (êÍ››¶íå ¥M[»ä¤ç-Í-õ å eòóg’Œt‡Žåòê¤çñE™´´daúVY^ž˜{õò9aóac¾Sµ_£çmmí?þ6?ÎÀÀ U«Véééööö„æalªµÌÌÌ_ý•BQ”H$š?¾µµ53«¸¸øûï¿g±X-[¶twwŸ>}º®®®ªYf.óÚÖÖv×®]ê õöö®¬¬¼~ýúéÓ§õôô<<<¾ùæ›kÖ¬™——צM›¶lÙ²}ûö·¶ M P6el©äuñæ5K™×6ml×nÙ3oùÚý»ü¿÷™NQ”SçîSf-P(é®={_ûëüß··ncÛ¹{Ï[W¯ìÿíï+†þöÂÉÃûv|õÍw©/Ä4M×®¾™…UVfšM;{…’nÝÆŽbçØ‘)™%É øm QZµMõ^ÐÒÒš™ÅôÅbµ0iéÖÏý›É3µ´ùªök÷üãosÊmÐð‹'ßZ.$$düøñu^ÇÖUUUR©”Ïç¾ß`~þÁÌÌŒÅzç…ýNo\:‡"@C¬ôÿcãÒ+ýÿ?î›÷Øìëb™¶6ŸËã©O|SòZWOŸRR\¤Íçs8\BHEy9‹Åâ5kÖäeUWUäçéðuõ ?Úv;vâäR¯1ï·FŒ›ò‘~k‹Çã1Ï{ÿ!”¢>PËÐ@ò÷ú°4]ƒÚmjéè2S´uõUs9¼fï¸tŠÍ121ï«ðà7ïà]5í\* ÃÀßIŽ ‡ ŸŒÃ!ÃÀg˜áxœ>2ÜßM&“ùœÆvh8œKE†û›-õchhˆÇ‹4Êõ¿.b# ÃýÍšü <€§:u ›ááá Ið; [HHÈG[ÖàÁƒ±ÁáàýˆŽŽþKñ÷÷¯ïwÃüNc/h€d8¨׸ÝmãÒš xOû{¡N{ÁFd8¨WïAÃ4»v¹iI«!)„ÇÆ¥ÈpÐ$.VZõÍz^ñA“—Maû ÃÁg–´¸d8d8øÜ’çRáà³KZÈpÈpMÄçóGý)/èøñã4M?þŸ–á8Ml™¦éW¯^•––š˜˜èèè4­…Bq÷îݰ°°fÍšMž<933“Ëå:99á€øxnñâÅ)))gÏže±Xb±xîܹ&L˜6m!dóæÍl6{É’%uV¼té’P(Ô­ÆŽ[TT4`À€ï¿ÿž™ròäÉ?þø£M›6{öìÑPQ.—s8œ†/¨>ÁÁÁg†ã|¨ W-W6¶Jeeå¡ ÀcÇŽ–••±X,¥R)þ ¹Ú„¥ß¼qsÕª_=’¯«WZVþý÷ß7ontè0êð3œ££c\\\jjªH$zúô)!$11‘™3}úôw_Ľ{÷ªªªx<!äöíÛo-ïëë›——wüøñÏ}÷4!i5´eE£[ö÷÷»rùÒÈQ£§zN××7HKM}ñBÜ„v!·nß"„ÌšëÃŒäd±XMk ®‰œœœŽ='‰8Nbb¢R©ÌÎÎÎÏÏwvv&„¤§§ïر#99¹eË–¾¾¾öööªê!!!‡¦(jöìÙ={ö¬Ý~ëÖ­SSS£¢¢\]]%‰D"122¢iš™[»å'N$''+•JOOÏÅ‹;880%#""ø|¾¯¯o»ví!‰d÷îÝ |>¿OŸ>Ó¦Mãr¹„±X¼uëÖ¼¼¼>}úTWW«ÆóŽ?Ççó§M›6pàÀžáŸJ†“df_¹leÝz®ï"Š¢”„´jmÓªµ ÓŽ$3ó·¿Æ?{Æ×å÷í7`š×L&pÏŸãm x þò½»ù|]ßEKlíÚÿùÇÞðð0BÈÌéÓz}ÑÛË{ö«Wë6n&„$>OØê¿9/7·ß€ùù¯*+*üÝAñœü];[»ïWý@™3sº±‰ÉÚuU‹èåöÅÁ?6lòçp8Û¶nI'µli¶`ñRÇ8Èàé=œª³··g±XqqqLÊéÓ§OYYYFFFll¬¹¹¹‘‘QEEÅòåË‹‹‹W­ZEQÔ† ”Êÿˆ¼¼¼àààÎ;çççoß¾½Îö»uëÖ¬Y³°°0BÈ;w\\\´´´(Š"„ÔÙ²‹‹‹@ ÐÑÑñôô433c‘J¥:u‹Å§N"„TUU-_¾<11qöìÙ®®®§NÚ»w/SØÏÏ/;;{êÔ©„ÂÂBUO~ûí·ŒŒŒ7z{{«ZþÐNõ¯w¯þ©—lPËrºQÿ’_¼ iÚ¹sW¹¢fÝÒÒŠ¥ ç?OH˜5×·‡«ÛÉãG÷ìÚÉÌ’H2ãbbìÿ££s—¤Äç'Ž«–Ó®n}ÌÌ,!S¦{÷êÝ)–“ÃTùyýrsr¼¼çR,öƒ{w³²²˜é™éy¹¹Ìë,‰$/7OµˆØ'Oìܵ;¡ØKù­Xý!Ôúµ?VV)»¦øR€K†ÓÖÖnÛ¶m|||^^^qqñ°aÃ!‰‰‰111;v$„sçÎÕÓÓ V*•ùùùééé½zõúꫯ,X`bb´@ÓtAAT*ÍÊÊrssSJü€N-[„ÜŒ¬¯XÈÍÈÆ¦jݨùù„.¯YíYwïEJ¥yn}úõ4ÄkÎ]=½à++«Õ šB(òÓ¦­³æ/ ÅIÏ«´•M;}!¤{ÏÞV6í˜b4¡«´$+K’™áêÖ{Ààa3æ,061Uu•BÿßkšÐLyf:›ÃöÛ¾gÞÂï_¤¤äç»õé/jgßÕÅU*ÍKIIiìšâKþ-Žâàà “ÉBCCE"‘­­-Ç‹‰‰aN¤æååBŽ92a„ӧOóx¼ââb¦¢¾¾¾––!¤U«V„ÔÔÔ:ÛïÕ«WiiéÙ³gsss»wﮚ®¡åZ´h! ™ÔÈœ‡ÍÉÉ!„ˆD"&áÙØØTWWÄÄÄBÚ´iS£Š¢|}}uuuýüü|||^¼xñQÆáþ'^\ºQ»Ì¥kMH!U e£þ5oaL‰~ü°ö¬ì¬,BH«Ö¢*…²ZI[µÉ««ó¤Ò*…’ÐÄÈÈX×@X¥P6ÓÒV*i¦ Mhõ>ššT)”OžDB,­mþ[Œ&4ýßb„%M«^ÿÿé4 øú†U enN!äø‘À©ãGž;uœËå6vMñ¥Ÿ…÷ól''§³gÏž?ÞÝÝËåÚØØDDD¼yó†‡kÑ¢!däÈ‘3gά¯‰DÂdÁ:纺ºr8œ   =z4kÖL=™Õײꂹú0‘.++‹y›››Ëb± š7oN‘J¥„¥RYYYÉ\ÚÅtÃÑÑñÌ™3GŽÙ¾}ûÎ;?ôî©)΄„Ü[ýmÓb‡¼‘NVmØÎËb©T*lÞB}–¾@HÉÎÊbÚ”ææ²X,=¹‚¦ ¡ÿoYLnûïkúú *ÖÒÜš’-‘Èté›7¥oJtø|U1¹\.WÐ%¯‹«*«hZÕìÿ_„aó„¡_ùÎsv“×à_”á)Š*))±³³#„ØÙÙ%&&ZXX09©k×®úúú!!!"‘ÈÁÁ!%%ÅÊÊÊ‚’““jfföøñcKKK&“ÕÆçó?~ܧOõéõµÜ¦M›7n<{ö¬]»vªVC—.]ø|~dd¤»»{zzz^^^Ïž=y<ž££#—˽y󦕕UTTÔëׯŒŒ!wîÜqvv=zôÅ‹›üh´wOZ'®Ü7´ó¢ÉEÞÈä§oØ|ð°QWΟôûÏÊ Sg·4)~þ,öñwžsí;vÕÑá?¸Ö«Ÿ{VFú+in—^‹#ÿ¾,ÕÄ}`ŠY‰Úñùº·¯ÿE(*9)A®ŠbŠ™Y´JOM¹yõÊÍÐ+ …œ&ÿ¿YÕ"œ»éêéß½bi%jÛÞ1#õ…y+kS3 çðÏó~Î¥0'C™«Älmm !Ì !DOOoíÚµ`Ó¦M“&MÚ¾}û«W¯˜Y­Zµºpá¢E‹är¹†Q:BÈÔ©SçÍ›çââ¢>±¾–‡naa±páÂëׯ×× ¡¡á?þ¨P(fΜ¹qãÆnݺùúúB¸\î·ß~ûúõëß~ûÍÆÆF+«««ƒ‚‚&Mš4fÌ333OOÏ’á”uþ;rñÖ‘‹·ê›Û–Jº±ÿÆLò;Ñ3'+sÃêE¾ÓÇíÛá'ÉHWÒDW_0oùZ…Bñ½Ïô][Ö9uî>eÖ¦Šú²˜3æ5ý¿}P£ 5eÖ¾ž~ôÃ{ÃFóxZ\.)3hè(BHо]ÐÒÖQ5¥¾-]ßë †¿mݰ`Æø€Ý[_I¥]M|)Àgr4üâ‰À·– ?~¼L&{—…•””P¥««[czQQ‘¾¾>‹Åz¿-Ëd2@ÀÜÁªAQQ‘ŽŽNáºòòr‹¥~Þ–QUUUYY©§§×䮆„„DGGsÛõ4ÌÅJ«¾bÒ+®]þnü¸&,âȱ—Î`¶@üN÷MÓúOÓtÁ«<š¦ŒMklÛ×Å2mm>·žÏÊ—æ ›·`±Ùâ„§?¯^Ð͵÷œ¥k˜Y•.‡Í~ûàq雊¢tøºMèÀ±'—zÁW|| [#ÆMù¨¿µU_ô¢eÕM©šÕ¹tmmí: óx<Þ»e”FQ|°Kìåïв ¹1!D¡d.Eûÿtt Þ±eBÈŽM?¾ÊÍ60æåd›šøvšªA6—G7¬ýfÚüwï À§ ¿yÿI“°S{ŸìIÃ?øIÒ_Js³E¶öfVŸrWá ž ÷Áî©”ªÁ¨™Ž®¨½“¨½Ó§ÜId8М´>ÔÙ@ n ÃÁ‡¢ø`ãp \+€ Mó ½Bs7‡Ó”ÈpÐa×.¿µÌµà‹hé×ÿºˆ]€ Ã<¿íï‚çŸ|îXØŸÕd&£ IDAT¿¿?6¼ ŒÃ}lƒ~ÇŸ»À82 Ã22 Ã22 Ã22|ªñ{©ÇŽÃöøœ2Üøñã±±>³ '“ɰ±>¸áá !8ØïÎ?àô§Ó™¥^c°Gþµ{ßøºÆ&E†ƒÆÙ¸tƧР™Lfhhˆ‡ùý;÷>¾ ðuMú¯úÌã\*þ‹ ø6ì lRd8øð>¿s©AAA|>ôèÑ5¦Ÿ¯c£ÉŸy€êg[ówæçx˜jüýý8pàÀ¶mÛB~ÿýwæ­‰‰Éž={~þùçÜŸùš ¡ášËå¶nݺuëÖ'Nœxþü¹R©\¸p¡@ èÙ³g``àºuëš5k¶{÷î„„>Ÿß§OŸiÓ¦q¹Ü'N$''+•JOOÏÅ‹;88H$’ÚÅ!999{ö쉧(ÊÕÕuñâÅõ•l¸ˆˆˆ€€>ŸïëëÛ®]»yöìY¾ùúú WW×ÇS5{öìž={ÖhðÏ?ÿôöövqq©o¡ååå«V­zô葇‡ÇâÅ‹÷îÝŸ™™¹oß>wwwÕëS§N-\¸ð믿¾páB\\\÷îÝ׬Y£££ó!öqnn®R©”Éd4M›ššššš2ÓÓÓÓwìØ‘œœÜ²eK___fˆžÙÌníܹsBBš5k¬¬¬!gΜIMM]²dÉ[+®[·N$©÷Çãݹs§oß¾nnnêÓ·mÛ–ŸŸß±cÇÉ“'·nÝšiÊÜÜÜÑÑñèÑ£ºººßÿ}||üÑ£GMMM—.]Êô¿Î>ÔH®u~~4÷SÃg>,,ìàÁƒš÷>Àg¡ö÷yvvö[77·ß™5š­ï0÷òòj׮ݲeË!sçÎ566^³fMtFHHH¯å·~ 5*88ø³;`UkݬY3Bˆ¹¹¹––3eݺuà§Ÿ~z—/Éú¾ëÜG5þhÊd²·þ„OtŽ"—ËCCCe2Y›6mX,Vvvvllì‘#GºtéÂår—/_ž˜˜8{ölWW×S§N1ã½...@GGÇÓÓÓÌ̬ªªªÎbUUUË–-{üøñ!C|||lmmë+ÙpR©400°S§Nb±øÔ©Sµ;Sã-!„Y£àààÎ;çççoß¾½F›¥¥¥™™™eee–»cÇŽ.]ºlÛ¶íÌ™3/_¾œ4i’•••——W@@ÀäÉ“U¯ÙlvVVÖï¿ÿ>räÈM›6=þüÃÏ9;;›››ß¿ßÇÇ'99™™XQQ±|ùòâââU«VQµaÃ¥R©ÚÌnµ··ÏÌ̼víSåÒ¥Kööö ©ÈçókôÁÝÝ](îØ±£¤¤D}:›Íž|xüøqfbvvöƒ‚ƒƒRRRÖ®]jkk¦¡ó*>?šû©á3_^^þÖ½ð¹PÿlËåò†/Ý»w¯ñÙÀÃ<33S*•ª|õêUtF^^^¯å†| )•ÊØ›­:ÍÚ´/I _Œuî£%ò>Ñq¸œœœQ£F•——ÍŸ?ÿ¿•9œíÛ·†‡‡K¥ÒaÆyxx¸»»ß¼y388xΜ9ÖÖÖ::: …‚ùoY}Å>|˜››Û¿///¦åúJ²X EmÞ¼Y(FDDˆÅbBHΪ¿ehkkûùùiiiUVVÞ¼y3==‚R}C 4ˆ¢( Ë?~ü¨Q£!VVVIII666GWWW(2[Lõš2cÆŒ¾}ûB ôðáC¦âûßÇÎÎ;ׯ_íëë»hÑ¢>xð   `ذavvv...GMKKc®äSíV¹\¾ÿþ›7ozzz&''¿zõªwïÞ ©X»ºººóæÍûÏþ³{÷îÞ½{«¦ûøøBd2™¥¥ell¬úŽð÷÷g³Ù·oßf³Ù[¶l)++ OOO'„hèãÁƒ>?ú©á3/‰Þº÷> 5>Û ?^jg6ä0×@ó‘^ß×rZZÚ[¿…hš3fÌ?ø€m—dVVV£þ°Öø£ùÿØ»û¸&®|à'!$@  "†ª«(b}ºE`½Wm•Ú–µ°‚Š•+f¥U»u×Úú°(* ?|®-¨Z{)º\ÐÊ"‚© Dåa‘‡„€Ð*„’ßs77KŒ€VëçýâäÌ™33gfN¾œ3ÆüÂKÃq¹ÜÐÐÐ#F¸¹¹©»v‡NØMMM„jXŠF£;¶¬¬¬­­ÍÖÖ¶_á3•®Ù3odØÚÚR¡’™™™J¥2~3©­=z4!¤¶¶V3†£ÑhO=|© !ÆŒüR½åÔ©ríڵ緛---£££ÓÓÓ=ãááÑÜÜL9}ú4u ?“Éìèèè·[ Ƽyó222ÊËË ¼¼¼,,,Œ™Q§Ù³gûøøüôÓOL&“JQ*•'Nœ(,,¤F{5o˜µ³³333#„Ðét'''&“©YóÖÁ˜ãÇðz8æÑxÁoC¿c»´´tð狾ÓÜ0Ãgº¾f™ê12Ü Ó\¿ÒÐHò‡õ7_¥¿åŽÃá,X°@ßT*Z‰DÔW‰DB§Ó‡ F}U‡Pú²Q§Õ[fLƒÑ/žÓÞ566ö +‡j¡:—XWWçîîþ\÷4F[²dIMMMvvö;w¨“vÉ’%áááæòõõÍÈÈÈÎÎ.))Ù°a3£N‘‘‘·nÝÊÌ̤¾æææ¦¥¥­^½:00ð³Ï>‹ÅÆè†×aHŽÃÇ<À««ß±ýLçËSÿ%îwšS !¤£££§§gÀ«­n–©uX+ôšÐÙH¶µµØÑúö‘ñ ðâ Í3~©K‹ jkksss›››g̘Aýæêê*•Jïܹ#—ËõeS§ggg·¶¶–——(p04WFû+Õ“}ûöí’’GGÇ~ÿ|òÉ'ÿó?ÿóL µ··¯­­ÕþL)--U©T7nÜx~W‰VTTdff655544…Bæää4}út.—›••uåʉDRPP@µýLœ8ÑÞÞþÊ•+}}}žžž„#gÔ׬„……©¿vwwBØlöõë×E"QWW—‘íûS×áy?Ûû/?ãÏí6ó©§9!ÄÉÉéÿøGvvöÖ­[ûúúžuõ4›e'''[[[cZ¡×ü„ÕYEv´¾}¤¹ÇÑþfc8+++jLJ‡‡ïÚµËÓÓS P“-Zäèè¸aÆŸ~úI_6*ÃáìÝ»7((èÛo¿5Pà`h®ŒöWêßÓŒŒŒ¨¨(…B±fÍš~³?~ü¸¦¦æñãÇÏ´Ð÷Þ{/==z¢‡ægBˆX,^¶lÙ{ï½7räH}—˜ ^CCClllHHÈÊ•+Y,ÖúõëÇŒcii¹mÛ6¯¾ÐX»+N¥RÍ›76~F/^<~üxêóœ9sø|~BBBjjªL&‹‹‹3¦§®Ãó8~¶÷^~ÆŸ/ÚmæSOsª7ˆrðàÁE‹ àîûÑ£GÿøãT³Lõ*Ó ½æ'¬Î*2°£õí#Í=Ž6ð%D›å·(#mÈž}ÕÞÞnnn®ýœT*åñxê¡tÙØl65Æo8§¶ÐÐP{{û>úè©Ï«ì·2ê¯Ë–-£ž (•J‡ F]æÙÒÒróæÍýû÷ïØ±C_WYÌñï ¿ñW¡P>>ÝÝÝCõî„/bŽíÚ¸Zû¿r¹¼¥¥…Ãáh_×òèÑ#faañ¬ËðŒýtvvR›ßÞÞÎápžé 2O]ãŸ{êÞøUèk ЀnB!“É Æ`K½†§ßÕ÷h…^žv;htV‘Îm`Þã¯[•¾<ø‡!~ø2õ„nÿç ›œÚ&MšÔÜÜüßÿýßOáú-E{¡š)555ÿûß§N:˜«ñ †zvÍÏ„SSÓg}îÝ0™LGGG}ÿ® øÿ¼!Y7uüjü¾6~P&ÀkËÈóÅø[ÔÔwÂ íº U+ô¦³ŠtV¦}4€=/ÆoçŸ~úé KØ´i“v8åãããããóà„E• ñõp¯­—ª«ùõ¹{­škTéëyÌýõph({p¢Já £ ^9è‡x‰tæç?*(@=!Äòí·¹ú‹à%ò¨ @´{7ê!›7ˆá0– ðêy‰úápg2€¶«Þ}6!dL©Ð™BHûØqüñ3§MD¼nŒO¹ÆRñÎ"MR©ÔÊÊ굺ç @õQÍå „à áÁëÖŘc©//ôK @%b8ÄpðëÁ³E^FŽ®¾V·C!†{.’““9N`` *`T*•H$âr¹\.·_zss3ƒÁ°±±ùµÖ­¬¬ÌÔÔtâDÜ=ð"Vl8Cü±S/Õ©ý’7úZ×—{Šá–-[ÖÞÞNa±XŽŽŽ“'OÖ—Y¡P0ÿ[ì… ¬­­Ã ÒÉ“'/\¸ÐÑÑ¡T*ßzë­ýû÷Bz{{SSSÏž=+—Ë•J¥¥¥eHHÈâÅ‹éôÿ»Fâ믿¾víZHHHpp°1g´ÎüO=ÓwìØamm}äÈì)€€Ã~æþê¬÷õõýüóÏ©”³gÏ;vÌÕÕõСCúæ2òÔÖl SŽæÚ2Œ3gÎP_Oœ8qæÌ™¿þõ¯ñññ‰D;¿Mkk«vúwß}÷Ç?þÑp£³u¤Ö${Œ9rûöí¥¥¥‡NJJÚ·oŸî‚æææÔÔTœcC¥±±ñÔ©S‘‘‘mmmMMMTúáÇ322>úè£ßÿþ÷ …âðáɉ‰===~ø!•¡³³óÆ,ëÒ¥Kü1F3|FÈoøL?tèfàÏ•ÛTgúôéÓKJJ ÌXXX(—Ë™L&!$77÷© 2æÔ6æw¨šˆ˜˜…BAÙµkWUUÕáÇY,!„F£©T*íô‘#G`ôµ®ƒôšDcc8SSS—´´´»wï*•Ê…ÂÖÖÖ)S¦„„„P“ªªª”JeXXاŸ~êææFÍ›ŸŸüøq‡#Æ—ŸŸâĉ5kÖx{{ãTx*‰D¢T*¥R©J¥²³³³³³#„455]¼xÑÜÜ<44”j,ÂÃÃ/_¾|òäÉÅ‹›™™Brrrìíí===ÏŸ?_^^>eÊg4N×—¿©©éСC4ÍÇÇÇÑѱߙ¾}ûv÷ÕW_QmâÁƒ…B!‡Ã™;wnhh¨©©)ÕÐóxo¿ýv~~þ?ü ‘H¼¼¼Nœ8A¥ù›þÔSx¨Ê!„ðx¼Ã‡SŸ©{\]ÚÍáÖµ¹¹™rúôij¡L&³££ƒF£ ‚ØØØ={ö¤§§oذÁÕÕUgâ‹lKåp8 ,ððð ¶?777--- ##c„ š9Ñ4<4mÉ’%¾¾¾J¥òÎ;o¼ñ“É …½½½T†–––¦¦&.—ëààÐ××—““ãááakkkkkëååE§Ó5‡SûÑò[YYB´ÿGÔy¦Sí‘H$¢¾J$:>lØ0ì>€!Ô«PöjDl'Î_¡RÔúfôñña0ÉÉÉ^^^Ô¥c¿éÆP·ƒ,ç9é×Ü=µu¥¬%K–üퟦNJÕÞ7ß|³|ùòÊÊÊøøxu•j'¾°&q€Ï‡ëîî&„°Ùìëׯ‹D¢îîîžž‹åêêzåÊ•;wîŒ7ŽºóE[AAÁÉ“'W®\ééé‰Sà©***êêê¦NªP(„B!Fsrr²²² €wméûM7²}P·ƒ)çWˆõ·®=¢Ñhš™{zz,--û• 8È&Q´{·h÷nBˆÃæÍ›7ë̳øÃ? ê][êËy<^¿À'!Àb2™ŽŽŽ:'Ñét}“†–öymàLï×&Àʺ˜þ<ŠÕ÷›þ¬íÃ`Êy©ZWí°ŒÉdjÇa:_L“ˆwÞ¼2ð2{ø¿ÿáQˆáà¹{¹ÆR¥RiÌñï±W^[hÆ\/¥^À’s½”ø9 Bàˆá6®zßÊÊ w¥¼¶ÐBªŸˆj._ „L•w¾óDT½m›L&Cµ¼V:óó_±Žú{àu†F@±ýrõê/W¯¢B@\ðêÁ³E^"–o¿­ï±®ð ˆá^ ÜY³¸³f¡à©0– €Ãb8Äp€Ã †Äpð*ÅpÉÉÉçÏŸ×9I¥R566vvv~)eeeB¡ûÃý‹O?ýô½÷ÞS*•„ÊÊJ??¿o¿ý–š´{÷î½{÷ê›ñÂ… —.]ÒN?yòä‡~¸råÊÀÀÀ¨¨¨AnÛŽ;âãã±à·gPïK4iRyyymm-ŸÏ¿}û6!äÞ½{Ô¤[·n­\¹ò™JkllýôS+F“&MJII±°°øüóÏ+**RRRììì6nÜH­žÎB„Bajjjyy9‡Ã ?¾¾Ä¸¸8¡PØÚÚ:eÊ”BÈýû÷ccc›››çÍ›×ÖÖÖÓÓ³{÷nÃ5 ¯›AuSMœ8‘N§———S1Êܹs»ººêëëËÊÊllld2ÙæÍ›;::¶lÙB£ÑvîÜI ¼Bš››333§M›ÖÚÚJxº»»;88ܸq#22²ªªŠÊ¦¯±X\VVvúôi‰'644\¾|™šåÂ… T|#‹% !D.—oÚ´©¤¤dÁ‚‘‘‘ãÇ7°bjb±¸¨¨(33ÓÍÍ­¦¦fÛ¶mÙÙÙãÇ///ÏËË3°n‰‰‰õõõ»víZ³fͨQ£¨Òt&š˜˜„„„lÙ²¥¸¸855•JŒŽŽ–H$ááá £¨¨H,X¼žŒí‡ËÊÊê—ò»ßýÎÌÌì7Þ¨¨¨hnnîèèX¸pá•+WîÝ»wëÖ­)S¦BŠŠŠÚÚÚ.\8aÂooï”””Œ;–bff¶gÏ6›ÝÓÓ“““SWWçì윰cÇŽÒÒR@5þ|%0Œøøx+++…BñÍ7ßäää„……UUU=|øpΜ9š«Z\\,‘HÞyçU«VQ)W¯^ÕW¬&33³˜˜“ÜÜ\“½{÷vuu]»v­®®NßÖ¹¸¸´µµuvvŠD"___j0W¥Ri'B"## !R©ÔÉÉ©¬¬Œ"‘H,X@-B¥R¨Iíý¯®   ©T:”1U¨æWjnnn÷ïßÏÎÎæóùãÇg2™·nÝŠˆˆ „477BNŸ>}æÌB“Éìèè fçr¹l6›2zôhBHmm­³³³¥¥etttzzúÑ£Gcbb<<< ”0|øp+++*˜›7o^FFFyyyAA———………æªR—Ö¹¹¹©S «ÉÎÎÎÌÌŒB§Óœœ˜L&F3\F±±±{öìIOOß°aƒ«««ÎD¥RyâĉÂÂBj™ËåBnݺEÑŽ&õ­p¿¯.êWÞHÏv=œv`8yòä~ø!==ÝßßßÔÔtìØ±ùùù?¦úálmm !K–, ×Wfcc£f€E£FF¡ IDATÑ–,YRSS“}çÎcJ „øúúfdddgg—””lذ¡ßT*Ô«¬¬T§Y¬aú ñññ™4iÒùóçOŸ>Ÿ 31777--mõêÕŸ}ö5fJ]Ò'‰!?~üø1‡Ã1°,#Cuøa rþI“&Ñh´GM˜02a„{÷î9::Z[[B¦OŸÎår³²²ø|>uU™³³³££#!¤©©);;{Ô¨Q%%%NNN¶¶¶uuuS§NU(B¡F£999 >\_ š&NœhooåÊ OOÏ~S=<<8NAAÁ[o½åáá!‹ ¬˜ñtbccsõêUww÷ÀÀÀŒŒ sssBˆL&ÓNìîî&„°Ùìëׯ‹D¢îîîžžžñãÇ[XXdggÓét¡P¨P(¨ž¿!YaøÍì£7† F †R·Œ?žBuÂB,--·mÛÆãñ¢££ƒƒƒããã>|HM=zô?þ¥P(¨¾¥†††ØØØ•+W²X¬õë×3Æ@ ýøúúªTªyóæ™ššö›deeµuëV‡³wïÞ   o¿ýÖøb ÐYHooorrrppðûï¿?jÔ¨°°0BˆÎÄ9sæðùü„„„ÔÔT™LG§Óׯ_Ïåroܸ±téR‹Åd2 ×$¼†h³üe¤%=5_VV–ñÙi{ôèFëw™!¤½½Ë媯ñ—Ëå---‡ý4¦„g"•JÙl6u‰Û«]ˆ\.ïéé±´´Ô̦3±³³“º®½½ÃᘚšJ$[[[“Û·oGEEÍž={ëÖ­C»Âð2>ÜZüá/fú.j<Oó+“ÉÔ7>¨¯„g¢I±Ú…0™Lªÿ쩉T§YÛ¶m‹ÅÖÖÖ"‘ÈÁÁê´Ú€WU𲉉‰©©©‹ÅnnnÔ-ˆá^v–––îîîÔ[.tÂëDÃb8@ €Ãb8ÄpÆQ©T¯sµªTªÖÖÖúúzêÅöCkˆŸñ{òäÉ .ttt(•Ê·ÞzkÿþýC¾ÆúÓŸ,X0gΜâââ-[¶¸ºº&&&Òéôºººµk×~ñųfÍZ¶lY{{»¯¯ïçŸNÍuöìÙcÇŽ¹ºº:tˆ²lÙ2ƒqæÌc–H•Fáp8“'O^¾|ùøñã5ÓY,–££cDDÄäÉ“åryjjê÷ßßÝÝM§Ó•Jå°aþÿþ{}eB¬­­ù|þŠ+ÆgxM ƒÇ2ÀöÃ566ž:ujÆŒ/^çææf¹|>ÿðáÃüqaaá7ß|£N9räÑ£GCCCkjj’’’! 'Ožôóó;wî\ffæ‘#GÖ¬Y£³L++«o¿ýöÀüñ;w"##+++ ¬ƒ@ øøãqÈÚ~8‰D¢T*¥R©J¥²³³³³³SÇv …gîܹ¡¡¡¦¦¦„¸¸8¡PØÚÚ:eÊ”*Ráñx>>>§N¢Ñhk×®9s¦z?ÿüóo¼Ááp¨¯¥¥¥ß}÷]ss³H$Ú¾}»:§‹‹KmmíÍ›7}||mllT*ÕÀ6ÍÔÔ”Ïç3æÔ©S>ÔLwqqqqqIKK»{÷nCCCvv¶³³óºuëh4!dìØ±cÇŽÕY¦‰‰‰££#!äÍ7ߤÑhñññÉÉÉ;vìÐY3iiiUUUJ¥2,,ìÓO?ussÓY{ðšÊ~8www‡7nDFFVUUQ‰r¹|óæÍ÷îÝ[»v­Ï¹sçŽ9¢bBBB¶lÙR\\œššJ%ŠÅâ²²²ÌÌÌiÓ¦µ¶¶ÆÇÇk.¢¨¨ÈÛÛ[ýÕÞÞ~Ù²e]]]çÏŸ·¶¶VOòôôd±Xyyy„«W¯z{{³Ùl*®•JÕÒÒrúôé'Ož¼óÎ;š“ Evv¶T*uuu}ðàJ¥š6mÚ³.ˆz;êƒôÕŒ··7Ç377 5j”¾Ú€×ÄÀûáŠêdš_½Ù #!!aÇŽ¥¥¥ **jþüùEEE--- . ð÷÷ÏÉÉÉÌÌŒˆˆ Óé‘‘‘„©TêääTVV¦.ÊÌÌlÏž=l6»§§'''§®®ÎÙÙ™šT\\ü׿þUs¹ï¾ûnJJŠJ¥âóùšél6ÛÓÓ³°°°··7777$$¤ººÚðýðÃêkÔ¨¸jÚ´iÔçû÷ï/_¾œòÿñššMMMK—.íîî¶±±Y¿~½P($„°X¬g­LGGGƒÑÕÕE}Õ®™1cƘ››÷õõ©‹uÖ^¿/9ogö‹Žát.ÕÒÒ2:::==ýèÑ£111MMM„*À¢ÑhcÇŽ-++kkk>|ø‰' ©X.—«.„Ëå²ÙlBÈèÑ£ !µµµT W[[K§ÓÕñåÌ™3,K&“=ztß¾}š“Þ~ûíüüü~øA"‘xyy8qÂðæ´µµýòË/ê¯OžŸÁ`TUUµ¶¶>S¥]ºt‰2eÊBˆšQ_ÏgLíÀoØPÆp™™™MMM B¡F£999yxxp8œ‚‚‚ÚÚÚÜÜÜæææ3f0™LêÁil6ûúõë"‘¨«««§§‡*§©©);;ûöíÛ%%%ŽŽŽ¶¶¶ÿ«þëÅpJ¥2..îí·ßöòòŠˆˆ „;v¬··W3Àrww—ËåsçÎÕ^ÛÞÞÞ›ÿt÷î]c6ðƒ>°±±9uêT]]Î 666ï½÷!äË/¿üùçŸ[ZZòòòâââd2™¾ÈÏÏ?tèÐ7ß|cmmDÑW3®®®R©ôÎ;r¹Ü@íb¸gÓÐвråJ‹µ~ýú1cÆXYYmݺµ¯¯/<<|×®]žžž€2gÎ>ŸŸššêãã#“ÉâââÔ±WFFFTT”B¡P?˜ãñãÇÕÕÕÔµÿ”ÌÌÌúúz*z›8qâ;ï¼ÓÔÔ”žž®¹J+V¬X·nfä§ÖÑÑñù?%&&³,kÕªUr¹|ïÞ½J¥Rgž•+W†††644lÚ´iùòåûöí«¯¯×y‹µÛ·o/**ò÷÷?r䈅……šY´h‘££ã† ~úé'µ¯Ú,¿EiIOÍ—••$•JÕ)Eu2í«¯äryKK ‡Ã±²²ê7©½½ÝÜÜœÉdj&vvvR×rµ··s8SSÓeË–Y[[9rD*•6ŒNÿß(óêÕ«ÙÙÙ»víz%ªU¥R577SÏXØÍ°Ú5C¥K¥RG•©/¼úESÚá–>‹?üÃ?ôŸÉdRÏ<ÓÆãñ´ÕãkOí¶µµùûû¿2¡1¦~<ÞÀè«Íj1P{ðÛöÒ½¸iÓ¦M:û“–.]нð’ÆpžžžØ+†ÑQˆá1h‚ëábŽz0ÒÆUï¿1!dׯըOõEÌ1+++cgÆR^œ!é„C ðB ÕEhˆá^=ˆáÃb8@ €Ãb8Äp€Ã †Äp€1 †Äp€1 †Äpˆá1 †@ ˆá1b8@ ˆá1b8@ ˆáÃb8@ €Ãb8Äp€Ã †Äp€Ã †Äp€à·†1$¥H¥Ò˜ãߣ6^™nãª÷­¬¬vm\Úxeb8BˆT*EU¼0¸àÕ3¨~¸¢:jàUŠá¼Ù¨>€_ÆRÃb8@ €Î8eeeB¡úœœœ|þüù!/¶#—¢R©;;;µÓ%Ikk+ŽMÕÕÕ/øhÑ”ššzæÌ™!_ÜÏÛƒ ŽC 0†¶¸eË–µ··«¿~ðÁ«W¯Þ±c‡µµõ‘#G!.\°¶¶ ü²4‹%„( ã7ǘ¥œ{öì±cÇ\]]:D•Ì`0 „/šunmmÍçóW¬X1nÜ8õ§Y]ÆÈÏÏÿ¯ÿú¯}ûö=ï#²ßnUËÌÌT©TAAAC»¸!< ‡¶Âµg¬¯¯?~üø—_~ijjŠ– C^¢••B,,,!‡ÒŒ†Šf± ¹¹955ÕÈyO:ÙÖÖÖÔÔD¥>|8##ã£>úýï¯P(>œ˜˜ØÓÓóá‡R:;;oܸÁb±.]ºôñÇÓh4u™#GŽÜ¾}{iiéáÇ“’’4Ã//¯3fܸqãÇ|÷Ýw÷ìÙãíí=kÖ,u†ÂÂB¹\Îd2 !¹¹¹«óGUWW;v,222!!Á@÷¬ÕuãÆ;wîÝ»÷‘Ïéhùu=k…ëœqöìÙçÏŸÿóŸÿ¼{÷n´\0ô?–&&&ŽÿÄãñ!Û·o×ÎYWW÷é§Ÿ.^¼xÍš5ÚÃgÙÙÙaaa‰„’••v÷î]Bȵk×¶nݪYlZZZUUU{{{XXXEE…º„üüü+Vüçþgeee¿Â%‰R©”J¥*•ÊÎÎnêÔ©„¦¦¦‹/𛛇††š™™YZZ†‡‡Óh´“'OvwwS3æääØÛÛ/\¸P"‘”——k–ijjêââheeu÷î]¥R©95""‚Éd~÷ÝwG‰D‘‘‘êI...]]]7oÞ¤‚ËÆÆF•Jõ¬uþæ›o.Z´(<<\©T&''S“âââÂÃ×.]úÕW_ÕÖÖê¬.í<ýœ:uÊÃÃÃÍÍZÃ/¾øâ½÷Þ[¾|ùÑ£G{{{ !Ç «««£òŸ?ž øtîb@ðå—_fggÿþ÷¿¯©©é÷Uóh©¬¬üä“O–,YG-ÈÀ‘# ·nÝJ­ØO?ý¤½63++ëã?¾~ýº:ÊäfªiW¸vþÊÊʰ°0*î—J¥kÖ¬¹yóf¿i4Zhhhii©æAˆá†L__ŸH$‰DTøE‹ÅêÏj2™lóæÍ[¶l¡Ñh;wîìô8;;744”––BòòòJJJ!vvvšÅz{{óxŸßÓÓS__O¥\ºtÉÏÏÏÏÏúܯX…B‘-•J]]]ûu&ÙÛÛ/[¶¬««ëüùóáááÖÖÖêIžžž,+//rõêUooo6›­ÙÃ÷LÜÝÝ !íááÁáp´¿ª–={öˆÅâ+VB~ùåÃGNbbb}}ý®]»Ö¬Y£> úEº:7³¹¹933sÚ´i­­­Tø8$›©Ö¯Âuæ7nܘ1c²²²òóó9Âf³§M›¦½§ÆŒCQšð:øXj¿m©_Û •J©]Wqµµµ-\¸p„ ÞÞÞ)))<;v¬:øqã8ÎÏ?ÿìççWVV6räÈòòr•JuóæÍ7j5fÌssó¾¾>ÍÑI¶{÷nkkëüü|í~8ƒ‘°cÇŽÒÒR@5þ|*JpvvÖÌ9zôèêêj©TJ©­­­©©ùúë¯mllø|~^^ÞºuëÌĮ̀œMMMK—.íîî¶±±Y¿~½ö&¿ûî»)))*•ŠÏçk¦³ÙlOOÏÂÂÂÞÞÞÜÜÜÁÜ=àèèÈ`0ººº¨¯T‡ŸT*urr*++ÓY]Úy4577SÅR{­¥¥eáÂ…þþþ999™™™žžž\.7''',,¬ªªêáÇsæÌ1°‹ F||¼•••zwh~¥´¶¶ÖÕÕÍŸ?ÿÝwß%„”––R}“:‹uqqikkëìì‰D¾¾¾:Gcõm¦™™Ùž={ØlvOOONNN]]]}}ýl¦ÎãóêÕ«:óGDD”””ìß¿ÿÉ“'‰‰‰4M{Oñx< *ÆÅ›î~üâ+Æ/ÕÊÊŠêÌ01110/œ>}šŠó˜LfGGÇ¿ôÒé“'O¾uëÖ­[·†>þüÔÔT¡PØÕÕ5eÊ”§®›­­-Õ×eff¦s\ÒÒÒ2:::==ýèÑ£111T÷Þ½{÷4³Q¸Ô¤ììl‹uðàAª7H&“åååP9¹\nhhèˆ#ÜÜÜØl5sæÌ‹%“ÉŽ=Úïæ€·ß~;??ÿ‡~H$^^^'NœðNiooW(T·R©Ó‘occóïÿþïçÏŸ÷ôôÔÞjÍN¨=‚—Ýü æòçr=œ½½½½½ýˆ# ÇX„%K–üퟨ‹Ò4M:µ½½ýܹsžžž“'OîííMJJrssc±XÚ>ÓdêŸÃ%K–øúú*•Ê;wî¼ñÆL&S(ª/½jiiijjâr¹}}}999¶¶¶¶¶¶^^^t:]s8•Ãá,X°ÀÃÃCgW]]ýã?þå/?~|yyùµk×4§úøø0Œääd///[g|8µ ¨¬§§Çð‘ãããóÍ7ß,_¾¼²²Rûú˧n&!¤±±‘âææö<6S]áúò?zô(''‡Éd–––þãÿÐy`wvv>zôˆú^s¿Ú €Ó§Oçr¹YYYW®\‘H$Ô/¨¦iÓ¦B~þùçéÓ§»¹¹1™ÌŸþÙËËK»4WWW©Tzçι\nÌÒ+**233›šš„B!Fsrr²²² ”Ëåûöíkmmmll¤zËV¬XajjZ\\ÜÝݽiÓ¦µk×®]»6""ÂÃÃãöíÛÚ—úéì늋‹{ûí·½¼¼"""!ÇŽÓ¼HŸÃḻ»Ëåò¹sçjÏÞÛÛ{óŸ¨~Aòóó:ôÍ7ßX[[SÏà nÅ`³Ùׯ_‰D]]]T$¤Y]úò¨Y[[»ººRWR—¬ÔÖÖæææ677Ϙ1ƒºvâĉöööW®\éëëóôô4r0iÒ$SSSjsçÎêÇøé,V&“eggwuuZZZš››÷+ÍÀf655eggß¾}»¤¤ÄÉÉÉÖÖvÈ7S³Âõå?tèÐðáÃÿú׿ªTªØØXꢺ~6µ¼½½ÑrÀ¯ÃYZZnÛ¶ÇãEGGÇÇÇ?|ø°_ggggjjêîînjjJuŸLŸ>]»´E‹9::nذAç ‰ÚbccCBBV®\Éb±Ö¯_O]-¾bÅŠÐÐЂ‚‚   ÐÐÐêêꨨ¨E‹B._¾<{ölõÕo„•J¥¾ÂÝ€ÌÌÌúúz*z›8qâ;ï¼ÓÔÔ”žž®™gÅŠëÖ­ÓùóÜÑÑñù?%&&ê˰}ûö¢¢"ÿ#GŽPOu™3gŸÏOHHHMMõññ‘ÉdqqqýªK_MË–-+,,¬­­µ²²Úºuk___xxø®]»<==:›¯¯¯J¥š7oõ3cv±¦¦¦}ôQgggbbâØ±c©î+}Åööö&''¿ÿþû£F ëWšÍ=zô?þ¥P(ÂÃà !C¾™š®3IIÉßÿþ÷Ï>ûlòäÉ‹/¾wïÞÅ‹µì”””qãÆi>z^[´Y~‹2Ò’žš/+++((ˆº´ŸRT'’+r=zD£Ñ¨˜c¤R)Ç3òŽN¹\ÞÒÒÂáp´¯ÄR*•b±˜ÍfÛØØüöqgg'uùW{{;‡ÃQ?!V³ºôåQûᇊ‹‹£££©¯íííæææT×ÔsÝÅÝÝÝt:]çø²v±r¹¼§§ÇÒÒòY«‚Jár¹ýn†ÚÍìw|_-ÔŒ7oÞ<~üxLLŒ €WK¿hJ;ÜÒgñ‡`üêk?„?HÚјL&“º×RN×7éU¤¾~Ÿz\ŸÎêÒ—GméÒ¥êž0Ù†|kv|>µX&“i8Þ2°™:·hh7³ßñi|µP32™Lp Æ@€‘fÏžJøa4ÑQˆá1 †ø À= ºÅÿ•ðTW½_ØPoˆážÁ®«Q H¥R+++cžg¦iMèò×¼ÞŽ|{zð… †€Š9þýº<˜&¸”k †€ÊÔ„†J@ ¯Z Ç@ ‡^¹c©ˆá1b¸!VVVfjj:qâDBHrr2‡Ã D¼î11ÜKÃ-[¶¬½½]ýõƒ>X½zõŽ;¬­­9B¹pႵµ5b8èU(Ÿu–_@=ÁdÄȑӦMû㣆 †nhXYYíß¿ŸúlaaA9tèŽ@þ5†ë{æN¥"®o¼±ió?]Î>›–j;bäêðOà GGGÍ”íÛ·óx¼¯¾úª_κººTUUÙÛÛ j°U ðxsúdù­[ NØê5~þ¿#„Ô=¨Û¿·ªò¾½ý¨?~ºÑmÒ[/[5Y?Y__ŸH$‰D‰„J‹ÅêÏj2™lóæÍ[¶l¡Ñh;wîT*•Tæòòò¤¤¤©S§VVVž;wN†„„lÙ²¥¸¸855U]rQQQff¦››[MMͶmÛ²³³Ç_^^ž——g`)ðëÇp Õ³þ©ˆJ*•žLúî@ì¾YsþÍïw ©ôÆÆ†²Ÿ>™ôÝ´é^tºéÆ ëï …Ÿü§`†Ï¬³©)‡þ_B¯BåàäR__W\\Ü«PåþýïõõuÅEE½ UÞÕ«#FÚ÷*T q±õuu;¢÷­þdÝÈ‘½ Õ£Ç]£ííúóW„ÐvlÛÚ#ïÀjëû{¹b8©TºbÅŠ+VlذÁ@¶¢¢¢¶¶¶yóæM˜0ÁÛÛ»¥¥åÁƒÔ$¶{÷nªC®²²’JŒŒŒœ5kÖØ±cœœÊÊÊÔ嘙™ÅÄÄ|úé§t:ÝÄÄdïÞ½ëׯ'„ÔÕÕ^ üÊ1\ŸêYÿ!mm­©§Ovu=™9{.ËÌBnÂ0Ùh݆ϫÿQÓÒÒ}úÌ™3„&“ÙÑÑAM²µµµ¶¶¦â3•JEQ*•'Nœ(,,”H$J¥’ËåªË±³³333#„Ðét'''&“I£ÑŒY üºäKU—±®Ûcd]Lß³s›°âNè'ë©tkk×JÞ§‹D„Ñ.|ª|g~Eù­æ––á¶#&¾å^þóÍÒÒ›VÖÃçúúÿ×Ù”;wÊ»žtM˜4¥W©Zu0.&vÏÎ éç× >Ã'ij"„¤žN:›r’bjÊlûå—QÎ/טÞP^gooÿÔl¶¶¶„%K–„‡‡?5snnnZZÚêÕ«?ûì3±XläÊ<ÓRàER<{G”Š•JEè¦þ ÓN}›ûSöÇ«ÖÑh4!ªÈåYBÄ"õµE"¡Óéæ–Ã}ªIS¦ýÏ‚ôs©î^oNr?{ú»3É'&¸½Eg°}*wÏ·÷™ü·ÿJû!õäáûvì?l5Ü–ò﾿儷¦BþnQ Ë¸7MM™·oÝ\ö‰¢OÙ#“åçLœìñ»Å˲/¦³ØfŠ>¥›»§…%÷Jößœœùo¼9©¾¶Úaô˜[%…©IǃWEôöÊû}ð]ðÆýìKKËmÛ¶ñx¼èèèàààøøø‡êËŸŸššêãã#“Éâââ†|)ð"õ)UÏúG7ÖÇïÞv-ç’§ÏìBÂÕéê-¸¼u›·õõõ}¹òÿíÝ>yš×>ù#5ÉÞÑ™;ÌŠÁ0çæN71å›@qs÷êSªzäòïÏ$ýquÐ'¿7ÒÞáýWõ)Uls ÁŸ¶ãY%îßùÇÕAÇîØÒ¢PôõöÊ}}Ú°9ƒG›å·(#-é©ù²²²‚‚‚¨ÇëQŠêdÞÎì/øÑ£G4z’œaÔ•píííÇÔÔôy,¥Ÿ˜ãßïÚ¸§€_ÄÛµqµfx`Ì/lЇ<×µêìš™qL™Lãgé•ËåòŽ…e¿ô'Ñh4sŽÅЮᙴ³W½¯Mi‡[ú,þð¿ÚûR---Ì©¾•Çã=¿¥À‹1°±Tã™[ {Ö¥ÐL,3†ö,,3Î XáÁ;ïà…ªÁÄ×b8x¡ˆáÃÀ+ýpˆáàŒáúðLÄpÏ“T*9þ=ê`ha,1Üs´qÕûVVVx¼Àûé¿3P ˆáž£gzÚ ƒz. UðÊT?\Q 5ð*ÅpƒyÑ ÆRÃb8@ €îÕ‘ššzæÌìoT*Ucccgg§vºD"immE¼l†ø¿cÆŒ9räõõ³Ï>ëìì!¤®®îÀUUUööö`âĉýæ<oæÌ™IIIÛ·o¿pá‚P(lmm2eJHHˆ‹‹‹:ŸŸßñãÇ9Ž@ 7n!¤²²rÿþýÍÍÍsçÎíííe0êÀåàÁƒB¡ÃáÌ;744ÔÔÔ”*ÇÁÁaÒ¤I)))ŸþyEEEJJŠÝÆíìì´×í©ùun ÎªÐ™§½½÷ïßmnnž7o^[[[OOÏîÝ»ŸiYj‰D©TJ¥R•JeggG­sSSÓÅ‹ÍÍÍCCC©Ž·ðððË—/Ÿ¿§§§¾¾žJ¹té’ŸŸŸŸŸõ¹_± …";;[*•ººº"€xÞ×ïE[†_Û R©ÚÚÚ:;;E"‘¯¯/õ»^TTÔÖÖ¶pá &x{{§¤¤>>ß|óÍòåË+++ããã©À‹²dÉ’¿ýÓÔ©S ž›››––‘‘1aÂÃk2|øpBHKK ü©#K*Ô‰DÔW‰DB§Ó‡ öøàBHooorrrppðûï¿?jÔ¨°°0Bˆ¥¥å¶mÛx<^tttppp||üÇ >gÎ>ŸŸššêãã#“Éâââôe655ýè£:;;ÇŽKuSB¬¬¬¶nÝÚ××¾k×.OOO@ðœ*Wçê¬ ‰:·—N§¯_¿žËåÞ¸qcéÒ¥,‹ @_–¦†††ØØØ•+W²X¬õë×3† ×BCC ‚‚‚BCC«««£¢¢-ZD¹|ùòìÙ³Õ!Äßß_¥R]¾|§À C›å·(#íéñÊÊÊ ¢.i§ÕÉô]ç¤R©D"ѨQ£ú]D/—Ë{zz,--ûåôèF³°°0f;;;©+ÃÚÛÛ9õX}º»»étºÎ¾ºöövssóçÔ÷Ô ÔY:µ·W"‘ØÚÚš˜˜Ü¾};**jöìÙ[·n}ÖeiNmiiáp8ÔE‡š”J¥X,f³ÙêqBý¢)ípKŸÅþá¹<ŽF£ée2™:c&}á…Nê[x<ÞS3kvõcÌìCE{uV…ÎDííݶm›X,¶¶¶‰Dýz׌\–æT}ã×t:ÝÀÐ6üЍ‚WNLLLMMX,vssë÷@ /)KKKwwwwwwTÀk ÏÐ@ ˆá@®‡{ÙÅÿ•ð[²qÕûˆá^ »6®F%ü6H¥R+++cgÆR^œ¡aC ðêy½b¸êêjé?³ÛÒh4„Ú—fi"‘ÈÉɉfiF”J%MÅÜÜÜÒÒÒ®]»¦P(æÌ™4kÖ¬œœœÌÌÌ+VèWE©¯¯¯¨¨˜9sæë¯¿N¹q㆕âyxxBØlvBB‚‹‹ ‚lêÊߥ¾òÊ+=:yò¤\.Ÿ8q¢~z]]!$55õí·ß>qâ‡Ã¹ÿ>‹Å’H$NNNÛ¶m[µjMøÌNÔjµÉÉÉK—.]¼xqEEM†nÞ¼I¡Ù!³ÛÒ_Òµ´ ý[†s깸¸¤¤¤¤¤¤$$$Bd2!ÄÓÓ“.âááÑÚÚÚÐÐ`¸-ž——“âÑ·úöí‹êÊß4ˆÅb6›’’âïïïè訟îîîN™7o^tt´Ñü>>>©©© ‰‰‰f'æææ=zôÝwß Y»v-½f:lØ0BHMM !äáÇ>äóù–¶E/eÒ-m·©©éÁƒýû÷7Ý/{{ûè_ºººê7M‘ËåvvvÎÎΆ‹ôíÛ—¢P(hªV«éO=,U@‡te?ŸÏ÷õõÕh4S§N5œþÒK/ …¬¬¬ .Èåò¼¼¼êêj•J%•J›››CBBÇ#„˜ØÒÒBár¹?ýôSMMMss³Z­5j”“““T*MJJZ¿~}[[{gv[®®®^^^•••–6A¡ïNš4ÉænN˜0Ïççåå•——çææÖÕÕùûûÓMÏÇÇÇÁÁ^fݼysSS“•ª@À_™ÃB"""V®\i” ‚7ŠD¢­[·.Y²$!!á?þhmmMIIY²dÉ‚ E1;qÊ”)žžž‰‰‰éééb±X¥RíܹÓÎÎîý÷ß …W¯^?¾££#Í¢Ìn‹zåÊ•òòr³› „9rdäÈ‘cÆŒ±¹...6lhooŽŽÞ²e‹ŸŸŸD"1šÇÁÁaáÂ…MMMIII´ûÍJñ:„8÷Ìу6çËÊÊ 3|>ëµ Õ¤aÜmìÁƒ,ËðkF­V ÃÙÌNljj …„ÆÆF>Ÿïàà —ËÝÝÝíííoݺµzõêÉ“'oذÁʶNžx—æTFÙ”iºeIð[ï°»³Ð¦‡Ã1ÍÌN¤ !D$Ñ6nÜX[[ëêêZSS3hÐ }š¥mÍŸ?_ßf´ ‡ÓÑΰ$–ôéÓ‡yU0Çî½E‹‹+++«­­õöö¦?q°iòäÉf§3¹„ €® _____ß§¾‘”Je\ò +< 9Ü3âƒe \\\0$Ãõ2LÆ6À3ÅUÐëtªîZ… 5Лr¸ŽÞº ®¥ ‡äp`ªãáÒÒÒP_½)‡ Ceô²·™è909 ‡äpÈáþ—N§“Ëåõõõ·xAAAQQ€!v'—ommMOO?vì˜F£Ñjµ <<<88ØÎÎFvØÖÖÆfÿgë›6mruuÝ»w/Ú ;r¸={öœ9sfáÂ…o¿ýv[[Ûž={’’’Ôjõ[o½ee)‰DRWW—žžN_îÞ½ÛfÎ]“ÃÉd²sçÎñx¼ÈÈHš„EGGggg:t(88¸OŸ>‰D$‰ÅâdzX¬åË—¿üòËG---ÕjµQQQkÖ¬ñööþì³ÏD"Ñ'Ÿ|B©®®ÞµkWQQŸÏŸ:ujdd¤ƒƒMûD"Q```rr2ŸÏ—H$#GŽ$„¥§§òùüÈÈÈ™3g¢Qà©×©Þ¯²²2­V;vìX}/š³³³§§§Z­®¬¬$„ÔÖÖdffŽ?¾¾¾>!!2iÒ$‘HÄãñ¢¢¢Hg“Ëå„F³~ýúâââåË—‹ÅâãÇë/°ÖÖÖtèÐ{÷îéŸëЧOŸmÛ¶q¹\µZ““SQQ1|øp×ÞÞ`´Îk×®)Š9sæÍš5+'''33sÅŠ4Gd±X_|ñ…««ëåË—KJJ!:®¡¡¡©©©¦¦fÆŒúTÒ´´=_XXÇc±;´R×J¥²ÿþ„ââbÃé¿þú+!„¾E …\.—æv„òòr£œÏL&#„xzzÒŒÍÃã   ¡¡ÁÝÝâîîîêêJóBNGç‘H$;vìØ¶mÛ©S§bcc½¼¼žî ½PZZó™;6Î(1|þùç9NQQQkk+µ¦P(d2™P(4hѲÕÕÕ„oooú’&aFhŠVSSC_Êår;;;ggg+E‹Å>>>©©© ‰‰‰Ow€§]§ÆÃ¹¸¸„„„h4šøøøúúúêêêøøxBHDDMé!2™L*•Þºu+??ðàÁ´GÍËËK©TÞ¾}[£Ñ®p„ |>?//¯¼¼<77·®®ÎßߟÃáX*€J¥’J¥ÍÍÍ!!!€Çã¡EàYÐÙ{‹DDDp¹Ü´´´ .B„BáêÕ«gÏž­ŸÏçŸ9s¦¤¤ÄÉÉ)&&†Nœ;wîÝ»wcccccc_{í5äpÆ ñññÑÑÑ,ËÏÏO"‘XÙzkkkJJJ||<‹Åzþù磢¢Ð¢ð,`Î=sô Íù²²²¬ ²Ójµµµµ\.×ÍÍÍpzhh(½y¯R©tvv6º œR©‰D,Ët…<ÏJœ!F£V«šz/ëé–¡à·ÞawÉ&íììle†)‘HÄ|ë‡a¶ðt`?ѵ¯[·N?0zGççç‡*èrxJ)r8@ÈáÃr8`‚*€Çp­B…Jè& ã¢zr va!‡€ÇôªïTB’uS†JèÉÚµ „k©½Ogûáâ’O0™íƒe Pר[@›@OÉá!’w[Ÿ!áÛý´vt:]CCCss³»»{Ÿ>}:´lJJ ŸÏ éÕu›žž®ÓéÂÂÂÌVNMMP( …FÓëêêØl¶››°gêxéɲÙX€¨K>=‘Ã1Åçvx%¡¡¡3fÌøðÃé”cÇŽ}ûí·^^^»wïî õ¢ÑhÒÓÓOœ8ÑÒÒbgg§ÕjOœ8Á| gÏžuuuíd>vÝBø|þ˜1c-Z4jÔ¨Ç.@ff¦ÙîСCgÏž½ÿ¾V«}ñÅ¿üòKBHkkkzzú±cÇ4V«áááÁÁÁvvÿwÉþÓO?½téRxxø’%KLËìèè8xðà+VŒ3æÉíÔ_ë1Ú4((høðá{÷î¥/×®]ÛÔÔôÍ7ßÛ³gOJJÊo¼qêÔ©“'OŠÅ⤤¤ãÇëljjºzõª££ã÷߯Óé ×ùÜsÏ}óÍ7‘‘‘eeeìþêámÚ=âââ8pàÀ矞6(}¹}ûv³ÓŸ{î9&mgs†'ÇR¬v§û÷ïýõ×½+JÿÂ&ƒžÖ¦‰dñâÅOSx?Mº Ítâ´KoQ#FŒ(//ÿå—_Äbquuuuuµ›››þs½¢¢â«¯¾*--0`€D"=z4¤Aƒùøø9rÄÉÉéÃ?¼sçΑ#Gú÷ïÿÁôïߟž²wíÚUTTÄçó§Néàà@—‰D/¿üòÁƒ_|ñÅÒÒÒ7:”òí·ß¶··¿÷Þ{†ç}©T:lذ•+W²X,Bˆ‡‡‡‡‡}wçÎEEEõõõcÇŽ 1b!D&“íÞ½ûÎ;,K,¯Y³†Î|ùòåääd>Ÿ/‘HFŽii×:T·6988xzz>üðáÃüñ‡•*5»/%%%_~ùe]]ÝÔ©S[[[M¿~Éår­V«T*u:]ÿþýiÍËd²sçÎñx¼ÈÈHÚñ}èСàà`z%:''gÀ€~~~………cÇŽ5,óˆ#FŒqôèÑ_ýU«ÕöÞuh§ŠŠŠÒÓÓ ù|~ddäÌ™3õ ‹>Ìb±–/_þòË/Û ˜ÀÀ@£æ3»ònhSK:_C´)é—uBÈ Aƒ¸Üÿ÷x³Ó™´Ñ ±±±úãñ³Ï>stt4m…’’’­[·z{{¯Y³F©T~øá‡ÑÑÑׯ_ÿù短¼LbÕÊF_ªñãÇ}üñÇÆ #„ddd”——¯]»Ö悟}ö™§§§aÌ 2äIDAT8Î?þ8mÚ´€€Ãéf>&g9›íËä4hZN+MvñâÅï¾û.&&fÒ¤IøÔì¥LÃÚÚZ›qPZZªÕj£¢¢Ö¬Yãíím´ZKá½lÙ²‘#G®[·Žòü£_¿~ü1ç²²²ŒN×6¾ùóçgff>SÚýpTíTíÓü§øëÿ'„ü÷ù<úÒìR~~~ŽŽŽ/^$„üøã“&Mâr¹4aR©Tëׯ¿ÿþG}Äb±6oÞ¬Õj !µµµ×®]ËÌÌôöö.++Û¸q£T*5jTaa!]F£Y¿~}qqñòåËÅbññãÇõ—Ÿjkk RSS'L˜ð /TUUýðćž>}Ú¨½ËËËu:ÝøñãiyŒØÛÛ‡‡‡ôÑGׯ_OOO§Û]·n]~~þìÙ³W­Z¥¿Ì§P(<8nܸ’’Úei׬׭•?³Két:…B‘ššúèÑ£éÓ§[Ù®é¾B¶mÛV[[AùóÏ?M×ïëë;hР«W¯®Zµª´´”N,++ÓjµcÇŽÕ~;;;{zzªÕêÊÊJ:åûï¿ ¤ÿ›v×K¥R¥Réååe”th§’’’*++·lÙ£ïÒ§™™9~üøúúú„„›SXXhÔ|fWÞ=mjÉc—§¥¥%ýuò$`½íLg0<̶ÂÈ‘#‡ž••uùòå½{÷r¹ÜñãÇÛ}úÄÅÅÙÛÛçææÚÛÛoß¾½¹¹ùÒ¥KtA…B1gΜ   Y³fåäädff®X±‚~¨°Ùì„„•Jµoß¾ÜÜÜwÞy';;»ÿþãÆ3,›R©Ôw9˜ZµjgÈ!„ëׯËåòéÓ§/[¶ÌpN‹õÅ_¸ºº^¾|¹¤¤Äú®Ù¬[æîÞ½»hÑ"BÈßÿþwÚni»¦ûR___QQ1sæÌ×_rãÆ £‹ž´&7mÚtãÆ ‰D²zõê™3gÒlvZè :ôÞ½{´>ËËËËÊÊ>ýôS777OOÏ‹/®\¹RÿK™L6þü––77·÷ßÿ±wjĈ MMM5553fÌ0Ì'úôé³mÛ6.—«V«srr****++­ŒióÑ߸­¼{ÚÔR²þØåQ«Õú )†Í¶3;ƒþx¼té’¥VX±bE~~þ—_~ùèÑ£¤¤$ÚÉíèèhåàe«VªH_ª¶¶¶}ûöåääDEE•––þñÇS¦La² iœœœV®\ùé§ŸîÚµkÊ”)VÎ$ú@µ~–³Þ¾ OƒjSOOÏÀÀ@³ßi¡·0jSæqÂãñÚÛÛºÙl†·Ö#ÜÒéú÷ß·yôétº ¥Äb1›ÍNIIñ÷÷7ìô¢14oÞ¼èèè•„~âÖÔÔЗr¹ÜÎÎÎÙÙÙtÎéÓ§çææ~ýõ×ôÒž!OOO6›]ZZZ__otƒŒÜÜÜ£G¾ûî»!!!k×®­­­%„Ðè¡]5Öut×Z+‡ãñx'N\¸paJJʱcÇÂÂÂÌn7''Çt_úöíK¡G‹V«U«Õ–K‹5oÞ¼²²2©Tzûöm‡STTÔÚÚJU( ™L&  ÔÞÞž““3aÂZ77·Ó§Oÿý÷úŽÏçÏž=»ó;EãÊÇÇ'###555!!!11ÑhUÕÕÕ4çnkkc0VVÞ mÚ¯_?™LÖÒÒB³ÉßÿýÅ_ìªòtžÍ¶³>ƒ•ÃöÁƒ999çÆ¿ýöýÎmýàe« «hÆŒgΜ‘J¥ùùù±±±95Ñ^·›7offfZ9“0a³ ÌOƒiSèuŒÚ´Cqbz5Æzxë¿mBîß¿oø´£ô§kZ†î<³õ ]0®µ]ÛÚþŸ¥½Ç²éKÃ?+!åëë«Ñh¦Nj8ý¥—^ …YYY.\Ëåyyy´m¢ƒ<òòòÊËËsssëêêüýýͦ /½ô’@ (..~íµ×Lgpss{ã7!üñ¿ÿýo…BqñâÅ;wªTª––ÚðÓO?ÕÔÔ477«Õjýv¥Ri}}}aa¡¥vt×L+“aÝBÞ|óM77·Ã‡WTT˜Ý®Ù}ñññqpp ýê›7onjj2]ó;w233e2YUUUQQ‹Å2dˆ‹‹KHHˆF£‰¯¯¯¯®®Ž'„DDD888\¿~½¥¥eݺuË—/_¾|ùŠ+&L˜pëÖ-³w²èÌN©T*©TÚÜÜ"x<žaÿ„T*½uëV~~þàÁƒÝÝÝ™ evåÝЦãÆÓjµ))) …âĉ=úÛßþÖUåùËYi…Ý»w÷íÛ÷óÏ?×ét;vì Ã_¬¼Lb•a=zÀ€.\hoo÷óóëdݺ»»GEEé_š=ú˜¬Çf:ÕLäåå½÷Þ{?ÿü3>2ŸÌãÄËËK©TÞ¾}[ ›áM2dÈo¿ý&•J7lØÐÞÞÞÑâž®‡ âîîÎäè{µ r8M›VÓ¦M<"M<"¥ÿýYY6""båÊ•F£’ÁÆE"ÑÖ­[—,Y’ i‹‹ —èèè-[¶øùùI$³s:88ØÛÛÓQ_¦–.]YUUµnݺE‹ÅÇÇWVV²X¬)S¦xzz&&&¦§§‹Åb•JµsçNº]>Ÿ¿}ûö°°°X*aGwÍl}2¬[GGÇeË–i4šíÛ·óù|ÓíšÝ‡… 655%%%yxxÐ/ýFªªªvìØ¾téRGGÇ÷ßøðá´5###óòòÂÂÂ"##ïÝ»·zõê¹sçB²³³'OžlxŸäY³fét:ý˜q†lîTkkkJJÊ’%K,X0pà@ÃÓ ŸÏ?sæÌêÕ«ÛÚÚèb˜ÌÒ/s+ï†6‰‰ <þü¢E‹ÒÒÒ‚‚‚Þ|óÍ®*Ï_ÎR+äççÿðÃk×®3fLpppqqñ¹s瘼6c•y͘1C§ÓM›6v-w²nƒƒƒõ?x2{ô1Y‰Í2t4ª™xøðaYYÙÇ‘ú<5˜ÇÉܹs{þüy†áM;Ì!»víš;w®áwi††zúôizº¦oL޾g0PYsϵ}«˜¬¬¬°°0:8ÝP\ò‰Wç¼acÙs§ïÙA<`±XNNN]°±±‘ÇãYÿêùÁ…Âýë_Væ¡ w%0¼ÊÞÔÔDǯ466òù|z~'„(•J.—Ëä‰LvíIÔ­évÍî ½³±¥_uB4B¡àóù¦c&èOÖ¹\n·=§Át§4Z­ú)¡¡¡®®®{÷îU*•ÎÎÎF¿d0VVÞ=mJ60pà@£Âw¦<= óV`rð2‰ÕÇ®¢®ª[Kg’.)C‡¢úñ\«Pá™÷=MÖMÙ¤aÜ.?î”J¥H$êÐh3•JÅf³ÍÞ˜yÙ„B¡Ñï1޾¨6ÈRºe&o~ë.—uîÔÚUÓ%†è=£­×ÑÍ›7m~ñe±X†·«ÑÓ@6ÚóA  w­ËëÖt»f÷ÅfÊápl¾k×ÎÎÒ[Ý'ÇÒ)ÉlÙ &+ÒmÊb±ÌVl'ËÓs0l†/“X}ì*ꪺµt&é’2<Æ:áÄ0N˜ºé™ý…SçËÖëÎlOTgs¸^úpînÚ´Éô—¤= |Þ…Ö­[סN´)^€§<‡ë¥ðø¿g “8xÃÀ³.ë¦ •TäpЛthì<µËÙ¡uÃr80Ññpy*6ü9\XX*  —åpLûÝ@Õüãáz“ß~ûíAc=r8€Þ”ÀeeeùúŽCÐ;”••eeeEDDÔ(þÄszÒÒÒìì숈‡ñp½,+++Ãx8€^–ÀI¥RŒ‡èÑîÞ½k”ÀÑñp¬¡#ÃBçåÝ(Bô(-Í6ÖûúŽ«QüiøYñíÿRÁ×ñ‘mÖIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/10_mailer_visualizer_gui.png0000644000175000017500000005413512032647170027675 0ustar ebourgebourg‰PNG  IHDR\“³¦„ÛsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ5è IDATxÚìÝotbi~øß}ÒÞŸÝ7uÖ‰RáÞÒlið¸Îf0ô Óô8‚ÔM¹KLo­œèpìí´±þ8’»Ë¢aãĆV¹» ¶$BÆíMˆœ£)·Qµk™; iìfšqq—7«¼ªÓC«Ðî+½Ùg»«ž»/. þ\ T¥?ßÏÑ x¸žû‡ç~ïsïEÂË/¿l±XΫt:ý‚Åb™ŸŸÇº8ÏV B! €z(”ålÐjµÙlVk0+Ë ŸcÓM?mœNe°º·G¡ÔÁjŽªWþä1¿ß«Ù=—exΡðà3&F×öêK¥;‘íçÜ¿(Zóž±íð©î£½ÌÖ6cú!³V°uz ‰(¾SÝé%Ëŵh¼íèfšK¥R©9Ó1ä3͘ËÁ9ÅÓµÕËÞ ç9w¸Æ4Ç:÷ç²ÈÏ!r>88ÈÓÕq{™­<ñÁÁAΫV.ÚÚl¶êËÊí\K­1˜­d»Êˆ¥ËÁ “e”ê«'¥EÆhÔbÕ¹gƒ¥yUWUuÈÆBÕe¬_µ«É¶ZM§Ùrñ±§Àó …D.×(Å£kÅrˆ‘î„·u¹j“Ph"¼ÍJ“bLô̌҂\ŒÍT(z+ÁHQX›±»"•ê-£D¯J…R:ND££êðÙ Õ+vyá»ëe<¾Åx6¡ÈxÃ=È)¿•Ù+…˜hœø ûFcèÒOF‰d2™ˆº9§|áqóV"æ ;šL&U_fLŒD¶9w õ ²FKõdYΦãĹC5V> $ɲήóv¾ŒÊÕde^‰DÔ=ȉhtaV™iG‹=ž_($MõóJˆÑ™5ÑgÉYz°C£hoÆ•”æÓ$<Ú)T=ÙÂÝ+³Ír› ˜nLê+OÃì­E+׎ÕïÓé‰1Ñk·×uȵ£»e¬IÀ¡‰È6ss&¡'‹ÐC/´þX3ær„=ñx4f)lʼn“bêûÈj®Ì2F¼íLÊD¯]¬q@WŽœœ;ÇZ?D¬1 †óù­LqÌœÙÊs®Ÿ¼al’ê´c‹+43ÙfLôÚDâܱÐIäêz+ãVa¯à…BåyQÜŽx·‰1½û†Iên¥«N<²œ xâmÏžóÁÉ•E§¶&útp«žÆ<¤çó[‰¶òDݘµ¹Ð¹”r*7ŽxD&zft+‹cªc”úy–±Y"ìÁâôÈá1oL*Ï\ë¬I0ÊeÐA]•ŸÿmCùña•ßl_å #ÞHû?O(¦ÙGí}•™•'~'¶¨ò„u×ËHDÅØ´j"ìÉâôÊ ‡¢1éÃÛÛÔäv½>žØövÄeñÁA=çÛLôŒÐ;É—›ñð¶èµ•¯ *—t,€r[dŒóÁý„åÞÁª0Ç9”¯éÓ鉶©r)—sý䊫0áÉm•ßM¬½H|pÙº'‹Ð‡÷x)W]“ÉdjΤú阷ܕ8è^Y\ôNêÛœ· u.*=vG t¹ºê®Ã¶6èŽ*KT½ådVsQù(ËxÜ‹ÐÂüüüüüÚå£õËîhcë.û #c×¥–]víT¯<äµG¿Û:c(íØâBaÄDõ4`!’åâZ œ'ýdÔU˜ðÄ;˜]ŸNO<ïXؘ=¤k°1º®¦|Á%ªî Û]uMÑrN2+ñk³ÉØ/]q.F;¹Þª¤Â ­_Ž6©‘/—óí®º®ù3M¯ä¶Y=*wFÍG©3@·ÚúBA0Í®Lêóù|©àq!OD:Mg3­yHϘ]ÛSJÚ{Ф”Òèòp}Dúôу+¥k¬»Ÿ8¹²èÔ XkgL«žB¹›ñÄi4H$“É /BYY>Q ËÙ ÕjµOZÅÎH(”î„·]˜5  ‚Ö¹4§¼&¢lÐj³Ùl6›5˜­ÏgÙ òÑt¬(cÓV«Õ:+ÊmCD²\ŒM[m6[%íUFŒÅ¦m6›2p¥#“1Ñ3R ¬ÊÔJu³ïóûH]†BYΦãĹÃbTù´›öŠÌH$&z§cŃ)2Ñ“¶$¢îAη#®‘yW&õ”ÖŠåXvè0Rh"œ×»n=Å=!©zâ[äMDÝzʇïH‚`šÝXppιcacÖ$²œ M„óåÞÍTê Å@Ç¡°Y.f¶ò¥¼h´88Ïoe*sǬ‘4ºåõâ˜F£ ¢|áqy ­‡Qò(рΨ ¢BõÄ]ceDЧ›uþ1&zfJùRLs©Ò!@C!ÑãB¾¶ *ðõ¬fLôÚ½"cM\L³+“ƒœ³íˆËnfqÉà¡PL–QbLLKöéôµz]_/kÕ§ÓçŽî. ZçR*pp"Š{B¸• ûPHDÆ“ƒœÇ=3•ç?²Á`V–AkÒ—ò¢”Ó™µ½»8[™~tm¯ÍI´S¨Ö8»ààœô:-O8L«ß)´ÎÅ ]hÄqÙ#DDä$戴Υ@ÁêõÚE"î,9µ½­Viú—-BÊC$Ææ rÌ;¹5ޏìaîx'ùòlo—~X‘ô“Þ1­ a3´&ÌÏÏÏÏÏW­¯¯ïï¥Åÿ>€óiuuµEÀ»uëþÍà@³{ WWW±jÎu(Çz8ï¡ðL>b-àžB@(„B@(„B@(„B@(€NC¡,cÓV«u:V”‰H–³A«ÕÌ–>-Ʀ§cEY®%´Z­Ö`¶¶ü¹xö•‘³A›Íf³Ù¬Öà}~¿2÷îj¢º†+Ëe«ÌÊDZ–ªçøÖaoWô> ‚V7@ŒmÑ^a‡ˆâéÒAúq!? Ó Bí(¦¹T*•š3 ©ˆ]T^–³!OœsG ‘H¥æ^b/UVE—•V[ÃÊŒ‰€ƒó¸'Ôó•\·8Ý/Å3^iÐóPHDFË(ÅÓíe¶¶cLLKDDR:>j1„§l°º§ç>¿ñˆŒ1&zFJ‘EézlÖóT7©¬,«¯t_V÷`U8Õ0'ËY•Ê4L§õðD” –‡/w—ªŽâµÛë:½nµ*”5ÜaƪŸr]·b¥O±R>2ÝQÍjͧ¼uTWHõFT>šŽK=Îå.çc]ip,¡útƒœÓN¡(Ë y‡Ã¡dDY.vôº¾ò™èI[ª;xÁ4»±ààœsÇÂÆ¬R.…&Ây½;àÖSÜ’Ô+W5©Æáe9šçi4H$“É6»”+Óz:ª•/Ʀ½"s‰€ƒ‰ÞéX±Ù,íZkg=Èr¶­L¨tߎZš­a¥ï6™L&¢îÁª>E)äsÞ¡Ök¬zqª·N‹¢ ¦Ìq;â weROùp`­újxÏWtä…fÜÿÑßV¿}é§~œ4æ!}8Ÿ/¾ôxD{W~Õ‡´Î¥T*ààDt”,:œNŸN_[ppñœz¾d¹˜Ù¢!ó¡ËxcRϘ]Ûk6eY.®ÂyÒ»£ç½ÛÓz¸BŽcç€Ãuø;…}ºAÎ9w(!Pcä¼t屭ܰSØ#"*ÊJ‚9,´µÞ8»àà\ "‚`²Œ–f¤Ü*wheT§ÓNåÓ‘”Ó™»»xÝÞzx\È·Õ§óºy>ˆå&SVéTÖ˜²8Í×X[KqôÒ»•Ç 5æ!}U?ò¶+‚ óNê)qÙ•'FµÎ¥€ƒoG\m>CÚ8|å™Y»Ý'ý¤·tWŸñFiFQݤjX]e”§\§shåE¯Ýî¹#°äìúÒ1¾¤t¼üìÈá+Ù5ÊØ¶ò Gã”Á4»0ʘè‰îè©ò<µñÆä ç¢×ž¶,t׃ØÃÒ›•æççççç?¸ÿ£¿ÅMZ'A6hM[6º»] \wëÖ-ü›»­îç~ŽÉ X'™ hKKXpÜÐS…€P…@tn4yïý°íŽî­×_ÃWïÙ¬:@ÃrÜ­Íù}úØó ì(G±¿¿áÂ…ýýýŽÆúå_ü§XuÿößýG¬€BÃÒ“Ö?IÝŸwqrõcw­@¡aé „B@Û hX¡žqÛýþg# aA(´Ý8¡4,…h»á¹kóaÕ“ÿ„ø™Y4,…p.Cá h»áùûÕ>Ñz€ßÿƒ,„Âz²œ xDv°º9w¼“|ù¶·ã4º°1k$)4âQ^›\Ô€V>Â;^–3·¾2ó§å&ˆó/ýÚÚÿ~£ÿ¬55JKÛ«†T.Æfä]Ó ‚j^™K×óíU…««W]±ãžïûw_躞«ñ9ê|AŠk3‘me…N®,:µÂ9lX›—£´-r&𵹉ˆóWC?üGöÕ_½Kc¿÷oõ´…¢vw¦Æ½ÿ¥Tj®´Nq˜€¶ÛBþ”ˆóŸ¿ý±ç¥â÷·~÷wÇ}{¾‚SÐòmÕ*ª´áJ¸ñŒì(i@LsåÆü9Dáblf"œ×O®,Žihomf¢R±ãžõ÷w¬‹±NHìzA”D¨¬q§VåâÚL(»x:t:mXˆH~ü÷·~÷/éúí´ç+‚ Ë»òÏé?è¸m‘åÌ»ÿbÓõÛJ»$“1sÿM"âòçtÊR—Ý­²œ Z­Vk0Û e¹›¶Úl¶Ê§•c±i›ÍfµNÇŠå¶²`¶fàl6¨”OÇŠr16mµVFT œ–¶»Ã?™ÉOžòÏR÷?”_öäãóKsà,æÀž<ýü)ÿÁ;/}ýå¯~ýå¯ZÞùøó§ü³'…ï¼þ’ÅüKß)<­¼}ã;eÊŸVßx}õ“'O?+¬¾a.Xž”2puIÿ:ZcÙ`©´³u°Íf³NOO7´ÆR:>j1ªNML³ £Œm‡ïH¹ÒØ–fg fe¹YÞxD¨nÌåR«]ní³Aët¬ØÐVKwÂÛŒºÆ´‚ Ú1—JÅšÍWuùýfǦ:ÿï}Òú¯³Ca6hµïWæž VêиùêÆª¬­êÕÞþîÑá‚<.ä‰h@§Qv­siN9U¨¬·ÆãûÁ"4.Ti•#²êB©¶=zOþñøÝ¾õµgŒ±?½i1[Ìôç?(5M¥–äãóK_ù«–×érùAóÕìu¹Y;zCô,Ba Rh"œ×»n=Å=!é`NLÜ"o"êÖS^ùÎ+g¨Éd2ur÷„*[1Ñ“¶(åÛ×H€¼+“zʇkJ³Òl.pÒCá¹Ó?¥]xòDþ<ó}‘±/Nÿ³/?%¥œ±{ó[?—øþü—ŸÒ¾ó¿¾gßXHoá‹ÿÚ¯|g÷ÉÓ>ãЗû«þDþ¼ÞøKú«ßû£?çŸ?‘ %øÐËïÉoßþ½ú[©ôúæ”I}þDÎÜúÖÒ_~é—~õ‹ôáü­vQíí¯®blÚ+2G ‘8˜èŽË-­GdÌHlx‡“JóLHDDF‹ƒsЧë´²œ M„ó4H$’Éd*5Wé@*5àG%´ÕͺÆ\"yHÏØvá1Ñ^aG?dÖÖvÀÈr6'ÎUm¨Xã£j¦ÚCgÑÂù¯OZÿupe¢'m©¬®ê·Í6_õ`F倦¶Ú{¾ ‚`²Œc¢gd¦1Ü7Û=q½;zP·Æ’Æ#²ê¾ÔlksôÞ6,Ÿ}žùó{Äù5³AåÓÆÆ¤Ò1voãéo~oåW¿Hÿyiå‡Ož~ef+ø Î9¿ö[©´Ò€4YOäÌ­Y‘±o,¤ÿ“w„W•ËÍ_W7kGoˆŽ%2&zíöC»ò%'ÐuD´S¨œrîpiH£ ªoŒ”º.úY£RιcaqL£ “/žÎδWØ!Îu}*ËRWÕÕpBŒïïïw •ñ«ßVMËh%QŒÜ â® …ª£^163ÞfŒ#~x-½v‘£|á1Q‹<'¦Ù•ɉðövÄe8‰9“ÐéDÚö¸'¢¦­:Ô­+€buuµÁ^hýq³Pi¼19‹¢8˜%:¸ì+Ëŵ@8Oúɨ«0á9ä êÓé‰çk®ê¶¾COÐ:—RÎlÐêYܲlÌ;ŸÈ5ÖÁ$‡¦o€“¬Ûß)Ô˜‡ôĹÃRW½ƒM=] Zó¾r{bûŒ³ ÎI¯ëk:‘>žˆv {ªoÛ©›É2JŒ‰i©tsa‹:œÓP(Zç’ʯº‚iva”1Ñ3ÝÑSåßfÓÑ:—¾qµó$oåq`»Ý'ý¤·tK_ãDA;æÔS>â²[­A‰4ÕoÛ|^X‰}¢×ž¶,8¯®«À©&ÌÏÏÏÏÏ7~°¾¾ÞÎ=‰çr—d~t!5gÂÚ€Ó¥PwëÖ­°¦šfÁòï×O®4yà @(lJùÍÅ9¬8V B! B! B! B!ô*Êr6hµZ­Ó±¢|P˜ Úl6«5˜•e¬b€³ KSaÛá;Rå­”ŽcÍœ"=ùßÇúÁÁ|>žÎÎM‚ cÑý ÏçËËrqmf"²Í8w,lÌšˆäblf"¼ÍUÊ $…F<"+…WG 1gˆH–³J9Ôçóy-MAm^ÐZOz \®QÆÄèÚíe¶hhh êc)4ÎëÝ·žâžTŠtá<‰d2™JÍ™AµPLs©T2™LD݃œÇ=!å’´òˆŒ9‰ ﵜªƒžÂõõõº’«W¯–^-oeŠcæÌ yu…péYΦãD4 3êˆò;…¢lÔ(”‰žÝÊ☶ª?OµˆH£ Ê—¦Y,ì烺¾ºr•yi¡±ægÕøøøþþþ1†BeÕo«æg´Œ’(Fî„ ñ׆†Bµ#2&zí"1FùÂc"­`š]™Ü™ooG\öˆrQXP+¤ê ÍŒW¦÷¸'¢F¥’õój¨6ÀYµººÚ݈ßSØ,xoLÆÃ¢(Žf‰ª¯ÛöéôÄóõwø ZçRÊ™ Z½"‹{B–Y“ 4io-Γ~2ê*Lx{€E}^]„e€s¥w¿S¨1é‰s‡ÅXS,Zó¾rÇa}”œ]ppNz]_ÓB•NAA0YF‰11-•n.lg^pì¡PéåSž©ûHë\ 8øvÄUùñBå× m6›Ýî“~Ò;¦ÕBA0Í.Œ2&zF¢;zbLôŒ„²²¬GÑkO[œ·˜¶1À¡Žú“4‚`šK™Ô SsU%¦¹T²ú=Õ :V©Ü4—L6—–‹±"µTÂhüà˜CáóRùB"âúÉ•Y#¶%À¹ …ͺ  « ¡ ¡ ¡§éw ß{ÿl0€®½õúkX hXüY…Dä¿ù¶:@ö÷÷/\¸°¿¿U†ÐÈ«Âåc€sýahä ¡Ž)Êr6hµÚªX­Á¬,?«jgüæ9¬®ÝU—Áh4FƒÁµº{ª— ú]ŒM[›}‹•ï{ã§ÍÊŸÓ"dƒµ5i,9sŽ£EB3€PØÎD"™L&“ÉTjÎ$ϪÚf_Îg~Æ \Æo4¾úÈ“$I’¤Ü½«ë×”©t1µêQޏ,½ ݉l3ÆÄ´t:Cm6h·{w&oT·B‚`º1¹ãµÛƒÙ³˜ ›¶HÏ#6íNÈ+Ù`©CÑÌ6¦|4+–ú)¬Ó±¢ÜF÷C%Teü&ãWΕËÍP~]s2m8eê.»;uÐ~Ö PžìîªË`(¦¾ù¡ä£Ò¼ >ò/;ÿäßøß>|jJó­œÍû?®¯@í²ì®º £ÑXuÖ_š kuµIúT­¿Ú²¢àœ’åâZtÇpr®Ë߻ʑ™èNÃ7½®¼ñë¯ô>Ö]FP¾éu—Ô UGW/̆nö].—TvÑ‚•ËÔZ¤Xdu·Õô*ª Ü|¦MZ'CÓ8Ú¤-ªn]oâà†ÂÒ™èI[”ŽÃblÚ+2G ‘8˜èŽëKD݃œoG\#ò®Lê)“Ú›š¢EI’>|óaä·Ûµ9œËI¾ùpªÔ¸ì®ú”“éÜ2Mù3Df_nù:¿¾\îŸk |óKW®¾ÒoþÖ¦o>µŒ_©¡$år¾¯5T fY|äÏå¤ߤw£å‘}äÏI’ä§õ˜z£{­4Çò3þ©‡7ïI’tïæÃš%j¹¢àõ¶¨ºu=¬‰€Ó ½v{ÝY;玅Y£rNŸÙÊsî°‰Œçù­L±n0n@y½8¦Ñèˆ(_( ¦¹TªíëÑWnÞ󙉨ÿÅËþfÀ_~]>‘ýh.]$""ó°3¶ÙÐn5À¹ï/óÉC§{œV#oº”ˆøàò‹ý´ûÉÃ+¥Q[Níâ¥+*3VSžiUý?yxùÅ~"¢þq·Sí µs›ëKÜÊdÆÝUKÔzEÁ¹î&œ¼a­yHÏØ¶’ e¹XØ!Îu}¤|O+ë–7|ý³é8 茺"Ú)T¾ûŒ‰ž™ús¿ºBÕÑ›*õqXŒê“RÚ)쑱“†EÑøåm§ÅPý.›}•j¾w]´`­Z$]Ó9—+ï`Rª7¶*ê­Óa­k³¶¨®umÝÄÀ³s¤¯æÜ±°1[ia:øòµùÂc"M¡Ô 4¼V|úèÁƒ»¯o+¦ëÃÔéÊ0ô"}úèÁåá~Êø#¯8ÝfÊøß½ìÎ]¤ÌaSë.û #c×¥ïTfý VœßnÂÈö6¹ì‘Ê×t+SÓ”¾¿:ê÷º±¼Ùy£HŒ)ß}­`š]™Ü™ooG\öˆ#˜3 ‚Z¡êèõƒv¦Å¤Jèxí4~yÛi1š÷;¦î2V;b-X«©¿éŒ:ªU›­S׫â8š8x®¡ð0}:=Qu.Ôëúžõ^¼tŹm‘Ä Ò[àsÝŒ¼j4^_\¼›š1Þ½¾Øx¸ÙÔ̾\η»êºæÏôø±’‹—®`7†.•î&Œ&œZ¡ôvf"œßÊìizðõçùšóF"´Î¥”3´zE÷„,³&Ah,4ª.ËM +íŒÚ¤ŽØøÔ}yÛi1Tí®º¦h9'™•¶y„¬u‹ÔÑŒTn³UézUÀ uŒ¿SX¾%¦%")-2¦2kÛ¸pÓÓß¹èåêCµK·?Ùm=@moÛ›r}ôJT’$ŸÙìËå$©ºÏ¯£©ÕrÈéàŠÑjD톛þ/×]¶1ÜnQ¹ P!Ý ¸”DXõÝÞÊì ‚É2JÊ÷W¹i¯<Œzy³¯tm¯ñSã삃óº V]¨:z³BÝÕ=7]3})-2F: I‡5,Ê·rwÕ5ë¸I9Ô§”o7Ùýäá‘Z°Ö-R³Åž‡;¸>¬:pc«Òݪh§-:´‰€3 ‰Hë\ 8¸èµÛ½¢òlà³_Âþñèð¦¡öùA³oùò»å­ÕPë,¸wuýšAåٽçVzþÎøêíË¥›zjF9¬›b™¦ F£ÑGWË7ÜÔüŽÙwïR¤æù>eêF£ñÚ»——qÍ)wV—hÌCƒåÛ7&9½ö´eÁÁùAäjR®úõߎ¸*·W[¶Û½qÒOzÇ´‚ Z¨:z³B%ÆÓ’ꤤt¼r§ã!_µœûÑ5ƒAyŽ÷à»V÷åm¯ÅPÿ*_¾ýjéIá«ÎØ”Áÿq—-Øá-’ÚŒœË÷.E”g#—î•–FeàŒZ«ÒvÝêZ§ÃÛ"µ&ža~~~~~¾ñƒõõõñññêÿ¬ÜXòŒ½÷þ¥ÿ[¿»êò‘¿æ¶îs`wÕ}×j ;¾w¿í¿ùÆsüþ+¹›™ÓäJÝ™g16=¦É•ÅJoh«†å,Ëø ›Ã'ü'QÑÄô¨‘ï.Âݺuë…S·Ø~ƒá.c_zóÃó‘«îç×—sãØïTÎnµÎÅ ]häNv¬úvÃìð@ÝM€&š9}¡Ð—ËùÎÑ2Ÿ³åè6 ¦¹”©uÉ9föåÌ'µbhâ »²¿¿ÿÞû`³€ó ßzýµ .œƒ» Báa'ôØf€† çV B!œÆŸ¤9Õð„#œo½þVÂY:j}ƒ">kxÈž»ýýý .à)«3sÔîÉÅåc€sW®°A ¡z e¹›¶Úl6›ÍfµNÇŠòÉY¤Žê&ËÙ Õjµ³²ÜNyOø c-ƒÁŸéÕÔ3þÊd«&šñjß\«»Øÿà´ÜUŽË¬»=¸g*î^¯Ož.4Y›™çõ“+‹N­ Ëŵ™PvqÖ$'a‡îIÝÁ4—JÍu¸¿†F¿êî¨mv>xôéݺ …–QbLôŒÌ´Ù·\ŒM{âzw4‘L&S©9“ 4–H¡‰p^ï¸õ÷„¤RŠŸçi48Lµ°ú$ ÓºcâycÛá;Rãu«[¨ÍÍ…w6œsîh㜣E$ô=rç$IÊ-ÓT)õeüS´(I’$år¾¯‘Ù—[¾Î¯/«$»ÌfÌ9l®Ýwc›•TøÉªËG~$B8]÷b =iK"êä|;â weROùp`­XøÁ4ÛÝQ;³»ré"Ba5Ó\*ààŒmG\öC“µ,3[ùÊÉG“’l:ND:£n€ˆv •Ç˜è™©Ù–Í »¨›‚s‡kLCF‹ƒsЧï/l¬[ã"TS:¨;ß§w?Z§Ò¾vç.^ºR•캻}û/¬„; àÔÜÛĹcaÖHÝ€òzqL£Ñ Q¾ð¸ùXmµ3þ)Z>£×Žé(O›æR‰DÔ=ÈÛØ„Ê%ÝÖ%¥½Ák÷ŠŒ)OL³+“ƒœ³íˆËnfejRx„ºupòQ]·f‹p4Ÿ>zðàö«Êµâ™X©°<ºLS†ÚGºà\”¤œûÑ5j§n‹pt/]q*WŠ•‹ÅwærÒ‡o>œj k¯“Êõd2û à”Ü‘Ob( NÇJgRZdL RÊý|D;…=’B‘±ÊîeÒ+å­K£k{³3Î.88¯‹kª…²œí¨ne;…½òð:mmï±jÝ¡üeØ)ìuýÐ{ÿ+W¶w¥øá'j±ÎìºY3þ©‡7] ;0r!œªƒûñèà¨ñG.Ý;û·äwù“4³^šÙfŒˆø {eqL RÆ“úx8Ⲻ'</¯u.-¬^—=¢\ãߘ5©• VoÄe‹”JŒ$)'ý¤wL«Ü‹ÚPX•ÕL³ÞBGuSlF"Û¬t/BmCÝL‚иPcÞÉ­‰pÄe_~ú³/uõ¨IÿxtØo0Î0"⥧I”Ç]_V~kÆì[Þ4\ó¿ØxÊÒ?]ö¥E¸¾,©ßø`öåÈo0¸nÞ;»wFÀY9¸te1Ñk•ל;ÞI¾Üõ ‚¶í£vf3öàî]ãíÒ|UŸõ< „ùùùùùùÆÖ××ÇÇÇ«ÿ³rcÉVúù"ýdå+Ñï½ÿÁiù×Úp†ùÞý¶ÿæçä˜~ŽÚÕ´»wëÖ­°ÉUã ÈX‹3€3¡°^ÿË¡:³¿¿ÿÞû`=à¨Px~½õúk.\Àm…8j#âœwõà¨}â0lo@(„BÀ=…Ç OÀ)òÖë¯a%œÞãøÑ7BáñƒÆp*ìïï_¸pOCžÒãxO6.®naó!B!t e9´ZmU¬Ö`V–› ©|ZýºW ËÅØ´µ\‡éXQ>´Ú8ŽŠUø c-ƒÁŸéÁ„3uSîÑdNàá^ešÎ¨ÛŠpÏö¡öHšpîXؘ5 B‹aÁ4—JÍ•6FÏwÖâÚÌD8¯Ÿ\YtjY.®Í„²‹‡T©u%Ûß;C#ž8º|¹œ¯´Kmç|ænÂ_³‹R8M‡û^¾k+ÙîqœÈ\>”eü×ê½èxÿYÜн¼|\w>ÌÊÔ^çœúël°\Rê T‹ö y"Ði”­u.Í™áÐó•ÂÚLuÏbÝ0Íæ˜ ––nxØóöˆGdŒ1Ñ3ºÏïw{J´»ê2ÔŸydü•Ó‘)ã7LÝew§Ú=5Éø þÌîªË`(~ð6SuºS5ÇÆaNÔá¾UM'¨Tl:V”‹±i«µñpŸßuw7;<úôŒnÙ^†B%€'“ÉDÔ=ÈyÜêºß˜1Ñ“¶¤Rs&ABá¼Þpë)î Ius´Œc¢gd¦õ…㺉o‘7p0¶¾#5 :ÇblÚ×»£‰d2¹¹¹ðÎÆ‚ƒóvNžZFBß#wN’¤Ü2M•òXÆ?E‹’$IR.çû™}¹åëüúr]Œ±)ùs¹\Î÷µÚ·f¢ŒêáÍ{’$Ý»ùpê Ö p¢÷NP©ØvÄ5 ïʤžòáÀZ±ª’‚`šíî8žÙŒ]¹t¡PuÕ{ív•P¯Ñ ­Zœ;fJ¨Oljh@gÔ ÑN¡X»ç™æRgl;â²·ynÁ¹Ã5¦!£ÅÁ9ÅÓç4s”åbf+_é’Týz(ûtG™ð£u*íYæagl3CDtñÒ•Ò«vòßŒÊ …Îåšní귙͘Ó=ÞODýãnçÁ|êF8Y‡ûÎ&¨Ñ (¯Ç4J%ó…LJÅÜ6Žãÿá#fï)”‹±™‰ð6cÄñÞîŽ"1¦lTmí§¦¹Tb¶¸63Ù=3º•Å1M¯ç¨)]§î­O=xp÷UãmeeÒõa"¢þñè²ß`02výðqO!»r¸Þº~6à|„Â:²\\ „󤟌º žxo¦Ú§ÓÏÒ»+ڱ҈'^ÊpmÓëúÚ˜£,÷éôD=Î…/]q.Fw/³/—óí®º®ù3¸ž 'Ìs<Ü#«ÞþNaÍc­)·íöH yDÆš¥=óž11º¶§¶_fƒÓ±R³”SBÞaß)앇Ðikw>Õ9*…¥«v_¥¤ÛGÜû_¹ú°½+Å?ÙíÉ2;c‘Õ]"Ú]ÄœÃHœpò÷Ç£ƒãxƹtïìwÓôøA“Ù…QÆDÏHtG¯<ÿÑêæSãI=å#.{T7éàM{ŸµÎ¥€ƒoG\w3‚iÖK‘›Íf÷Š|н²8¦„¼Öß ŒØ½båV†væ¨u.-Œæ#®ÒMiƼ¥YX­±ÿ§«5Ö?Þ¬ûé£ò!½zûò²²ÿ™}Ë—ß½¦ú\ðÁ=…å§•K…¾åËï^3×Þ-OàdîRKùîÆŽRnCÛ>Žg6cn¿zöX˜ŸŸŸŸŸoü`}}}||¼ú?+7–œ¥+ÒOV2eO¼÷þ§åiÀ9ç{÷Ûþ›oœÉ£üy8ŽWo¾î"Ü­[·^8çÛ[‰ƒ"cœô“Þ^&B€S伇Â.þ— B!tfÿ½÷?ÀzÀq¡ðüzëõ×.\¸€Û pG(ÄîØÀqü`ØÞ€P…Ðé=…«««Xeç:Žc}œ÷PˆiÎ*ÜS…€P…€P…€P…€P…pà…#Ž/Ëŵ™‰È6#"Î'WZA–³¡OœôÊÛÒÙ Ý+rîx'ùòlo‹¬>ª~ä$æL¶À±:RO¡’Ãy½;šH&“^ „²²\š4Ûß‘*Ké¸òBLs©T2™L$Î9w‰d2™JÍ™AI‡D"ur÷LNb($z\ÈÑ€N£¤=­s©ìˆôƒƒœâi%ÒÉÅXtG?ÈyÓÖèT“h16mµÚl6›ÍfµKÓ—‹±ikmI6hµZ­Ál68<ü[Ái«Õ:+–*3=+¶1b¥¡°)A0YF‰1Ñ32£ä­*.×(cbtmˆö2[444ÐÑÔ¥´ÈZÊ)“”Äšçi´®sQ M„ózwÀ­§¸'tÐ=ɘèI[67ãÆž±í­L¥2fm#V¦p¶upOáúúz]ÉÕ«WMs©Y½âvÄesÇÂÆìAŠ2Z<ßÊÇÌ™-òê áö‚*½v‘ˆø {eÖ¨:€gF·²8¦;YΦãD4 3êˆò;…¢lÔ玅Y#•º·ó…DzL™­ü€KÓæˆª pbïïïc(TæQýV™Ÿi.•˜U7)e5M%Ž’(Fî„ ñ׆†BíÍ…×…Ë*‚`š]™Ü™ooG\öHõc(¥(Éå ‰4uc* 5ž–f-…ü¨ÅØA›Ø°Ô'Öêêjw#vüô±jðíØâBaįÍUÆ“ƒñ°(Š£Y"©'‹*hK)g6hõŠ,î Y6fÔ§ÓÏ×Dɺ[•+Ý¢(¦CµÌ•;|Äf‹ p–ñéãl°üÄFé@½®¯zyHOœ;,Æ×Û8»àà\™ hÍCúÊý‹ÍôéôD$Šb¥Ÿ°Íμ#ýN¡ ˜f½…™‘‘mÆH¹pqL+•Î6AéÖ+%ÈTWùDå‡ 9é'½¥Û µÎ¥@Áê¸l‘ÒÕçÆª1 †óùÚÜÚΈgž0?????ßøÁúúzÝ]Š%p¢tánݺ…søßÇ€P…€P…)«ÅIDAT€P…€P/œü*¾÷þØNÇç­×_ÃÁñ…S±œþ›o`c‡ýýý .<ûc‹ƒûIÛˆ¸| p®¡Ó¡ àˆ¡P–³A«Õj fe¹ñíI’ñü™šÇ1q€3E9²Ûª³Ç|ˆÏø uGÕÝU—Á`4F£áàh^*©*„ç {»Ïgš4ûr>s/S]õ(­'pºqî$‰¨{ó¸'ÔæÁº›ƒûîª+òðJ]ɵGî\N’$I’r\ç¢$5 …Ù`éôÂÌì%ÅØtù´Ãj Þç÷C#‘1ÆDÏHè>¿ßrÊø þLƯœø3§ ±®ê”µº{XìËø SwÙÝ©ƒvW]†ú3ò ÿÇõ£ÔvC–ç^žõÁ]««MªÑ8ÇÒBÕ–¶àÇG£hyˆ?HÙàð°çíîå#ݵGî¨ûruQtýê=d¾Ó ‹±i¯ÈD"à`¢w:VTö˜ÐD8O£D"™L¦Rs/±—f7œsîXؘ5 ÂaŽMMÑ¢$I¾ù0òÛ¿íÚÎå¤ß|8UNf>ò+§¾IïF‹Lf_nù:¿¾\>ÏØ]õ=rç$IÊ-Si’”ñ+s”¤\Î÷µ†Qjê¦Ì½jÖJ…$IòÓz¬é— W}®“ñO=¼yO’¤{7Ë‹uø‚')-2F£“ ¨âK‘‚‰ž´essáÎî”ñG.Õç¿ÝO^~ñÓꑃîŒJ!<ïPȘèµÛm6›Ýî+Ÿ.3[yÎ#‘Ñâà<¿•)–Ï=3kEµÓA0Í¥R©Ô\óèÊMe§éñòƒ¿ð—_WB^t¼_yyPؾÝÖéÒEeJÃÎØf†ˆèâ¥+¥W‡q.+s?˜õî'/¿ØODÔ?îvª} 6cÎas}‰[™Ì¸Ûy0çÖ p<)‰^»Ýîù {eÖØúϹcaÖØéÁ}wÕµ9\9~W|úèAljsX¹L<¼i(_…3ûJ”?¼Á…')*·$“ÉD"àà¼\ü¸¯._xL$¦Ù•ÉAÎÙvÄe·wu¿j)c5¼®:Ù(]>ž‰u<ñO=xpûUcíèýãÑešêîZí§ôj3ºà½W9Ч–œZAhvˆ?‚LôÝwgJߪ´.^ºâ\.÷š}Ë—×?Ú­±<ºL‘Õ]l¤ ›èÓék ôº>åtAë\J¥NDí߯ڶÝU×-+'‹ÎŽG¿xéŠê½«fßq]«½xé ö@8Ešâ»Uéù“$i±ê-\;¡P´æ!=cbZ*Ý… 2k«:³ ÎË»‘²{íöŽþ$ò§\)]ÿÝýäa»c=ü¤t–ÑÿÊÕ‡í])®ŒrÈŽ^¹½»Që¹ìñrݵió°3¦œöì®Fê¯->>^ýŸ•Kž÷ÞÿàÔÿÏìÝUWôÅ(v^8y|ï~Ûóg||? ÷“º»‹p·nÝzëñØœÍp~}97Ž5'Báñ1ûr9V öÊþþþ{pfààŽPر·^íÂ… ¸óàÌÀÁ¡°û“ l*€³÷“†aÀ©|з À)òÖë¯ÕECkŒ½åü8{û÷ŸÓúô1îB€SaÿÂ… gø2Zcì-çÇ×m£Ï`.žŒ»ñŸv1bäßýÇ#Î?IpŒð ½€½å,yé§~üX§ÿGKDÿÍ Ïçî>„B€äÇ =…ðÜBáiÿIšŒßàÏ`÷€gBÎm6›Íf³ZƒYY®+gƒÖ`V– ÿNG_´.{ e9ñÄitacÖ$Ïo"f_Î|´L¹9œó™±À³<¨ÈÙЈGd§åŽ@bÎ$œÌz±©‡žï3œN®,:µvg_UYΆ<;î•„²þëÞÑÑÒ`ÉgOøsYQϳ§PLs©T*5w„-Té)Ìø þLÆo4F£?£”ʯ»«.ƒÑh4Œ2u—Ý:èk¬ <ÙÝU—Á`@—$ôçŽ@"‘ˆº9{BÙžLž›R“[ÛT>³Â³ž‹±™OœF‰D2™ÜØðRà9ì0²œ Z­Ör7X/âÏ!oÔ-ÅÉôÙÞÅßI …Ù µÔÌÖíI6›Í:==]ÞÕ¦ò:›¶ÙlVët¬(w¸åbSS´(IÒ‡o>Œüöo»6‡s9éÃ7N•ŽÝUß#wN’¤Ü2Mù3Df_nù:¿¾\î)l éNx›±Ñ…R/— hKQ¬Å6­>¤¶(¯ì3ÕûXÝć‡=oxDÆ=#¡ºƒx§5iL½*;ùaU²Zƒ÷ùý`ËP¡ìÕ•Áîóû¡ª¥¨ÿâdƒÖéØãªiªæËÙ WabDù~Õ½í•ÏŸðÊß?²|µÅ_õ'.cÓ^‘9‰DÀÁDoeI!Ș#Øðµª ·È›ˆºõ”ß‘:œù•›÷|f"êñòƒ¿ð—_—Û¬ÖéÒE""2;c› §˜Íp.GÇûqÜ€ã:à§EÆhÔò{i.•J&“Õ}‡²œ M„óå.¢JWG]áK¬Ï<¤gl{+³GD´—ÙÊS>|G9ªíe¶hȬ„fM´ÒüzÒeúm¶ØU>}ô ê݃GŸ>Ó³ÞM(gÓqâÜa1vpØmqHU-—Bá¼Þpë)î I•‰{âzw4‘L&77ÞÙXppιCõ"l5©,`ãNÞN•í¤¬Þ««"ÝÁRT¾8…ÇDD{…ýY{Xǧ2‘p@‰’uo{ÞSøÝt³Á¾»‘>¹=…²\ÌlåK;®Ñâà<¿•)ʲ, ;Äù ®ïàœXçט¦4L<-‘±“®éË/ö«¾®´Yn¿ª\^ž‰©7j­è%ÆD¯Ýn÷Š|н2klì;¬9¶Í¬kû-ê •‘”VWéXbLLK¥–y@§iÖDÿÿíÝolõÇñïÝÊ"!P\Xƒft*»!2e f󃤬ʶ*CBE´KhÁ©ûmÂ8kGº.xÙV¶…n«ÚBZ:ãFqÝtÅm ‰ú0‚¨i’‡yX‰ø~·§nì8¶ó‡Ôy¿trçŸÏ?ß]Οûý~gÏœ~ý­ëLž~Æž¯£pÝú ©WèÖõõ²-\½æÝ§©©Cs/·r§HY©£´LDFãÖg÷à@L¤¬´d©j’åx^x•Rê,J*«Ë• F‡Ed,.Õ•%¹t‹'÷Ïô¤§Î.n(ü:¡Ž÷K/s¼ïÜ ï>‹Ç®_³Â·µ<×½¸4Ö­ßÐð§ái™ú‚ç-‹ÉS‡#] Vã„Õ‰ærygîAÑ4gë¡–r¥ô‘î&—ËêSθÐú$–X|L†£A{³¯¹\©`OÅcuUŽ,§èŒgò¼ÎØw4ö¼þ¤R"¢Ô“ÉÞ•e[¸šå¸Os¿Jñ†týúÏî%¯Iæãyª”›’Êj»:Çã£ùöñQ{éÚ¹ffÊP³¦£ïžM-pôݳéeVZ(\[j¿~Áâm »có?=“aXò§_^É^–©Õ§×ˆ‰½¹ÇçV×Îïš­¡+ñ¹•ˆÌÜ’¾PÓœUu¢ë¡èþhÐ^]é¨oª‰ öFƒuUNM[âStåžK—Ò®¨—ma1»¶g‡—îcwm©=å*eº‘,måK2ä ¯RŽ›×VYm—X|lbp ¬jÞžÉk#n· T{ëKd8u6Ùõôº\é£!s—0TúôŸ“g¬GÿsòLÆ++Z[vúÀކtÝê›O= ­¡*9Ÿ"ó¡;{~tf£Õ=œ¼m­rÏë÷ì}|ú¦’L`™[}2·U8Zýn¥f}ÐÎZ訪‘P(d{Uuº>ÒݲŸë%‚Ìœ±oˆ6‹˜ckK¹RÁöí3£Ö†:;‡L3Ç}šûÇwOïÄì´$£ñ‰YÉ/uÉ< ¿·™r<çX%ëpµ–ä0f¿‹’Êj»£GâeUŽyv«s9G¬þëgS ä2êqÎP¨ÌŒÓ›'"ožˆÌõè´ý¢‰®‡¼®õ÷ôÈÓ†._¼Æëu…D”Û×Õ`»¶§ƒí!¯K|~w°=¸Xÿ(W¾ütÃú¦ékÇÊ”ëÈŒKåžKÃ{Ò/neî üDÈ£A¨Õ_ò†ÚkGívÑGBíµòjø¡óìžþv:±·xëmÖ&3_Y—\h}Ø•+{ue‰%šËƒXrVÄ6Ç):C ÿŒ‚ [ßN—î¯mïnru‹ˆõÅ–š–û>×ôzº›é–™[Il ]þx·ÉÕü”¯÷¶ l t7¹Êýjø¡ kÈ¿&sÏ9VɱµÅ t7¹Ê›[Ü*œÿÍ–ú.ü§[%•Õö@ (þÖ•²Ç ã›ùžBÍãñx<žôúúú'''³,)€9þöömX?Òæ,x%û{åÅg_Ù¸ñ¸®gç F•X±öìýë+/>»À3çŠeÙË-7´“ɾƒÇ~¤nÓ7/ie.^¾z.ܲeKÏ}ë­·v=óTÁ®££c™~ûøºë{Ë¡ùîÊéŸçÒ¥=Ë ð|2Þë Œèz]•cåÔ*a|3ã4–)Z]ìm}`ÅÐ4[CW¤a…Õ*¡¾™îã5+‡QÜ-…‹nrrrßÁc7ÀÙX6/_]†W¡¥0»žyê–[nat3p6–͹ð2Ý‹$æwmÊÑ œe»*ú÷¨³›_KááÇÙd«:666²½V{(dà@±bL!… €PB!…°¬a€â°ïà16Bª¼~PŠÇsOÿ’`ùË?þWyB!(7}‹¡q"B!… ˜Bá@(«>ÒRH(  ä¦5„BB!Xõ¦*÷¦9ØQ±ý}vŽTê‰?~°ûm¡Ã­õ— /ôþ}ëÓk3}¶ÈòÉgÕÿñƒÝòþÌß ¯¡¬šPh¨|ŠW켸SÄ4÷>ø›“òä.´WXÙK™Sbæ˜üf?÷ÚCÊÑõ^{óB½§ÒZøÁ@¯ˆ.b& 5•9çM×J”9e*C$kaB!ÀBCáLz3UZö2Í+½Í[1]©Ç;ÞólÒ41ÇŽ<¿µó]¥÷Ÿûaôá¶®ëòÎÎÍ™b)«½ÿ^û‡Ÿ8¿sÓ&M3ÇŽ¼ñÙý÷ª?3a¨¯åƒ×6·†’M•î½çwVh¦ùþk›[ƒòDÇ{§d¨Ø¡ßQ(L˜…MV«`"eÉ`Ç–®¾óœǽrÂÓñþTÂüzjð[;?–'~‰ö9ßÖ³Q=°} ó'J)õø+/ýÀ´ÕÞý˦'týä?ŽŒM%Ìø{ýªºöÛÉ×J;Îö9êÐŽ{” îì¸0¥fU&½b9N„B°ŠC¡¡ ›¬^Z#9ûuâÂ{A¹»d㺻Ddôr¬­t¦–ŸJ\9é?ð©Ü×ô·ßÿH©äJRW˜eåóL„B°šC¡*l2E¬9kÖP%ßß|Ÿ®¿{äø•ôÂ÷·ü¾Z))¿ó6C%Œ[¹ˆŒ~5–qµ¦a¨Äm•墔Ûñ½Y¯õUüYûm×U`®¿óšòÝtt€â1¢ò”ì¥L#ÙI{ëc¯ïŠWï{cÛ/Þ¥Ü/½óÂweèŸyþgÝz,÷ýª­þVS”Ø\mÏ_hîú×s5o*÷Kï¼ð½k÷/›JD)Si¶G÷<*"¦)¯¥4çÓ/× ü6äì‹»ËEÿ,äL^<±ùZe$CÅ–ˆæñx<Oú}}}“““^à†°ïà±Æ­?g;X9ºë™§r u´€â‘(èFÝÇ ˜Ö} B!(* B!¡€–BB!€Œ)$Ð}L(Ó§N²…`U³¾–…ágîµ¥ððáÃl €U Ù:«=ò«Ç«c @(¡„B @(¡„B @(¡„B @(¡„BÌ¶æÆ­úÅËWÙ¹ÛtçÍE ³¿1¤ÊÞ F÷1…  s(4͡ΚšGRÔÔt™æ\%­GSÿ^þ·auZUí2Ù©ùšóF¥ÜþÓ­NMËòdMs¶E"mÓñ{æPgmOé¡þþ™èÝ^Û)§Ûœ» w¹vÏj>´äæjœ«ñÚßCÉ%ão?_3«1ÒûùäkÕÔt^T³·AGG[¼õ6MÓ4[½·e4:Ì~X’Ph5 †Ãáþžær¥‚íû î&ÖõP{´*isjÚðþm˜½Ù×l—`ûþa+Pî߈I¯¿?[Ų§Õh°¬´$9_RZŒ™t",F(Ôõ×åÊ0 °¤´la/©”ÛßêHæ9)+u”–‰Èh|<ùBºjßÞkÍZytÞt€‚å1¦Ð{û¶Àˆ®‹®‹Z¼Xª‡¼®èºÄâc"6ÍÙz¨et[`d¤»ÉÕíöõ3@`©å>¦p¼×ˆ‰½¹ÇçV‹ ×–ÚE)÷¬žbÍÖЉøÜJDæí§Ö4gUÝh|"9?­«¢M`IB¡ÈX<&")£÷æ j"2Ÿáýí!]Ÿ£˜­²Ú®ë¡žÞ‰ôG­~·Rb/µÍ÷e7Žª²€¯wÜ4­äZVå`¿,I(Ô4g«¿N×Cíµ=£vÑõP{m¶6<Çֻĺ›\=¥-YZm ]>·énš¼8s›³Ëå ŠÝº­xžº9ÛN7Å›\.—«i úÝÍùÒ<Ç㹫~ñòÕMwÞÌ.X`vêèèàgîÀo€PÉò=…7„‹—¯² Vu(ä.€ÅB÷1… €PB!… `Úšh4ÊVXÍ¢Ñèÿî|¬ýÆròIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.7/02_os_process_example_results.png0000644000175000017500000010300112032647170030742 0ustar ebourgebourg‰PNG  IHDRmÖkösRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ8$ÓÛ; IDATxÚìÝ{xÕ7ðßÌ&èÒn¶@±£¯ÝÚˆ4ï6Š ¨8´ñmSa ¶h³n êH]_Ú¤Áµ±º/éCÈÚÔ–«Bè‹¶‚R%`ŒpÛ¡‰’XÚ4›µE!P. ¹Ø>óþ1ºŒ¤‘,Éò%É÷óäÉ#Ÿ9sæÌ‘|ôó93s¸o¼177—bÖßß¿ 77·®®mqáÑ€8GâH@ €8²ÀÿÊVß>¨¬ÜÖªKå¤9­fmû ²ò×?_òÛÂû:©¸©g}ÇÍDma ¥ ÞÎE·,»b[kYêÌQzÜ韚lý'´3×t³,ñhV)y~¨ýgHŽ£Ž]C<¯\¥I£ˆ2¯­Ùî„Y;¢ 4çççç7ÌâAÎ-ñÈ”2½¶½¾³³`½Ú?f&Ï´2*Ö—¥p\ê†ÞÞ 3_'é¸w4tpìQê¼oMŽËñ7Q²Æ8æ'^åÏÛû¥#’Î~;ÏSqnÇÉŽÒ [u~~aaaaaa~ó€/úôتóóó«moÎæüÂÂÂüj›8¬è-Ê÷c4)i™D¤L[,I“=¨ô@~bmåkaÐÑ?7Íóö†¢"iÙÂãmqéq½íä+'ÊyEÙ0Çq$©s‹‰¨SH:û;‰¨8W-yl5kÛ‡|—òö1Äá¸Ô´Lâù¡±#ÞÈ©¿“ˆˆw9ŽJÂÓÌ´)çÊ-õvž/Ö®ŒtP1Îk°ÏÔCI/|l{M‘Þì?‘(çeÀ\Y@Á¤–uú§¶Åø‘6BIÎgÚ‡x>»ÂÒ¦Kš‹ìäÛwqš’h¨³ß¹!'Ç5’/²L¥£c#QÂSž·7ÙÅ׌…Þúé jrе ŸGŽkÐãrÖ÷4Qð”´¿)’5IÍóv³9h rcFig|‚`®ð!!ÔšJ%ÏÛ-ÛÑÑíÿ¤vøžÞЊiõe)¾”Œ%"JѬÊfŒFÆ<‚ jjµZ"êìw ‚DZk±ì ¹êŠ›‚‚Ȩ]œ¦$ïdtò‡ë’_8ˮاÊWôv˜+ B~NѬÊnÜåð”i»SV®QG‹C%c‡ÄóÄ2ÓRÄ‚Ò2‰ÇŽÐѱbL›»&m¤“ vö;×çŽ )WiR"XLÛÔ³^MG·×¬m¯¯I {‘ìA9.µ¬uÕ¬5ñ¼½¡ÐžÌçì$½pÆ´Ma3ŠØ˜Q7Ì‹8’R4«”탃»NÚ5ÚóÅCÙáœ$"ïÞ½{ÚÈ ‘2m±·ä‘±íËÅ‘—ZÖÚ4VPß¾¶%-8b‹tPŽKÕµõê÷ÊØëkÒ¶µ–Éžw´•ÅJÊžÄÇ!Éž—8)¹æ-‰’47˜£?6Òw·Ì#'ýå‘Ýì/ÇW²ÙN¡w`G ÝrÖo«TRg½ïù‘Ñ´cO“–1oõ!¢À­èâmÒkwQ6‹EÊÏË>MQÎ+ÆS˜e “ÄIÚyž±ì裑ê5•ÙíCö†Bߌ«t¶7%-“hˆˆüå„§L`¥êZ›ÆŠÌk[Òz7äD9¨šœ¡kÉð¸Xš2”†‘$ £ £.§Óé2Q•Ñ!Ýǽ»ë ÐÿZnoi9þÁÎð2‰Èa¬¢Ç 9Ò\¦RVjòæŒcß`¶*].q/¹ZÉ'ÌmI¤^o©Èæí Ò %RÒ2ƒÓ6­W‹éŒi›ZËRÄ<ƒcGˆa ¿“ˆ2ÓÔi™D42v”Ôz{{{7äpÜ”d¤0rwe,!""MžÎÖç $GÑáÑ¥¥¥|¯³ÒÃÃH[ïªD-åŠHe-ÉXæ}¿„÷Õ™|uŠP+ÙD€Ùñ9ä)e »Ö¶×פmÓû­fmûÏÏ‹3båí Evây1¸L*¿båj2ìv—¯ÜÝ•Ua 8°ã6õ1¥Ò<"R¤gÙúê³éò\y¤ò½6Èj­Nq¨Oo D™re’¢Üb2ªTjž/÷‰Ãtöz¦ò‰ó Žä¸Ô²Ö¦±‚úöF‹’2s‰Á³½±}”•ýØÚúÎ8޲8MIlPÛÔ³>òd„@ÒA]Yy™ÍK2–éZ-!±™&OWÕg$›.Ï@ ¼Žè3ôF‡F,G¶Lï‰1¸­ú£#î[a¦³o”3TU€Yíù‘—³~[¥rppЛpdlˆ2ÓRâ;Ç¥jV)yÞnÙ~TL™ò> ¹¥fKVž&ÂÖáðÙ\MžnÇŽº‹÷`ÞÚ½çÕyGÞ{÷7-Z„K$æ³M'=ót<ï À|vúôi\ ‰@ ˆ#q$Ìg .„“\´hÞi€$ºøâ‹1 ‰@ ‰Ÿ×„–‚z;ÏcÙ•ÛZu© üdÆ#­¦ ¾“Š»»wîÜÙÓÓ@-‚0¯ê-ÍùùùùÍó­bné|¦}ˆç‹›Öçpq\ª®mƒøšˆšó ó›BCºfqSµÍ#xlÕùùùùÕ6c"­:¿°°Ð úw´Ùª ÅÌþáRž·×xc\±4oÝò›÷³ý4f/Ž„þNbL›«–Éí±U7Øymcww£–·7TÛ<‚x{}n·¥"›±!³¾ ‘¶U*i°½q»ÇÉM™ÇÙ²¶}PYÑX¡¤Îú§´ð]ÔÐm©PÒ`û3NŽËYßÓ¤eŒ1mSÏúŽ„–µíƒ¾1ÔÞÞ@à ³GF!Ç®Aoˆ©ÎÕ26¸ËáÓ6­WSJZ¦øºµ,%%-“ˆÇŽøJˆžG a‰2ÓÔi™D42&-\_–"îHý‘†yÞ^_ã I9.gCo/J€¹#‰ŽŒ 'HbĤUˆ·75Øy>®Â9.gý¶ÊlÆø!³¾¨¨ysÙ³Gr\Nn1ñ¼½ßžyqš28A™¶8™•Yœ¦$Æ´‰ÍMs©º¶ÞÞF-#¢Îú\ 0«q$©×Tf3ÖY_ã¿ýe ¹y@8.U³Jé 1ývžW®Ò¤&oÖØ_¾eûуN¢‘±à¼êõMZÆH™–Šºf’Ìó#¹T]kOZKA½Y_d&""mc÷Ž#¢T][ãX~CC‘ˆiÛt©É­·|³¾ÐLâ=4êÈAgYC宵íf}Q;Ó>¸óÆW ïó>ð’”• e©œï.ÀÌáêêêêêꈨ«««¼¼üĉçßIb}m€äÚ´iÖE€D Ž€D]iµZÑ"0¥¿üå/8²¼¼-± Ä‘çå60NŸ>ë# ˆ#q$ ŽÄ‘€8q$ Ž€yG ‚ÇVŸŸ_móD$ÍùùùÍÞ­[uµÍ#Á» 4çççç7§Ï‰Ù¯Œ0Ð\XXXXX˜Ÿß¼Ÿí÷=±šÈ¶°ÿ¼ %š„™h%ééÌ\&·Ñ`^Ä‘—š–I¨¬h¬PRg}‹S¾N’¢Âó Â@ËÚöA*nìîÞ¹sgŒWᕉ^Žlå=¶ê;¯mìînÔòö†j›'Ò!¦À‹¥a ¦0R$.ÎÔÂâñÎ;»-Ù’‘KgK½çµÝ= «¢·˜ôt¤ïN”³‰G2ë ©a[¥’Û·K§é“Þh0k„ü¼ÿíSÒ¯»úJѬR¶ŽGÇzr©³³³³ß¹&m­jHñædLÛ´~ŠGú;‰(3M–I482æÔá“¶þ¢dó§øÃ”š´m­e©Ó›ýŒ½Að8v 2&v¹ZÖÙ¹Ëá)K¤1¶Q¦­‰Zù†";±â¦Þ 9S—œ’–I4è;±b,;mqPú”$ïŽ|ƒ¤gË$dÚ¦Ö²rf Ž!JÿŠtj!ŸX˜G>_žzÝÕ—Hô^"9dïo¡ÎâÜõ´xLI482æ ÁÌÜTŽ‹w‚Ñýð<ÅR„æçrÖo«YÛ>4dÖ™µÝr %¹¸Ë92j%ÅØG»hUC”8•1mSOnA}ggÿÀzµ$/¼dÁc«YÛ>ÄóÄóĤ§“™–’øçG¶ARfò#~j!W˜»þiaLÏý/‘´ÛíŹjŽKÕ¬RòüÙl÷Ò=¢ÅiJïÝ!±MIËççRum½½ZFDÓ¹¿$Îr§)ƒ³ú”ôvc­ÒL•©×T*yÞnÙ~4RÉ‚àÙÞØ>HÊ K£–±ä}~’Ø 3ñမÛó#§e3ƘVŒS4«²óN‰ÆjŒŒ%"òÅ þ gª8/j~õú&-cbìÂq9¹ÅÞ‰—ýMYÙrb©|¿“ÈÙoçyå*Mb³ê±µÃ‘±Á˜ SÊ*²Ù`{£Í#D(YfèQl1ñt"·XLg1ýI^£À|‹#S4«”’Ñ&ñǦD9.µ¬¡RIƒf}‘xmª®­QˆÌúïº Ïï¿Ë¸¨¨¡“”• Þ+Õk¼²¤UÊŽº…TF¼/8¼œ)+oo(*j°3mc›.á9mšºœý¾[g¦nd}1ω·°„—Ìq9뛊yÞ^_`Q’ÿtõšÊlÆì Eý¹M‰S&±A’Óh0‹¸ººººº:ÿÏûß>… ÎæƒæüþÜžÄ.ý˜i=ôÖEœBž©0-@ÌC—ªkkC;À|†ñH@ ˆ#q$œo.¬ûlÙú,Þr˜Ÿî½ûø0ÏNÓ:ô6ˆ#d¬]‡wæ›'N,Z´èĉqíõ½ÿø6šî—ÿïÐI„޽ âH€so ¿pþ®K€$CLj#ÐÝ cÄ‘©»_€e3 Ž€º{ :@ èîá\ãí½óÿ.×óæDбâHˆ­»_€îæÞîY=ÃÏ߆AÇ\)-õv>ðybLûàÎ_)¼¯“Š›zÖ«ÉÙRP/¾Îáp9ÀlŸ`qåÇC××<ïû¥flé¶ÿjâ|ûåû®duM‚ÇVÓH ­e©'Û+ú’ðq“Uaiõ¤›éã~úâ ×3¼çPü'âÙ^³Ö<$6xvå¶V]*wv,áÝËtúÁÑø• Ïc·µìýÚnøÁ*{tß}7 Ì8çâÈH¿Þ×õönð~hÐzsÚÝOÆG²I"Ænݲ§þ:Ï3·ÿ÷—5.ÞS=:è(ŽŒ fæ¦JšÈß+ŠñP}Áˆ@p\Î_÷8ѳÇV³¶}PY¹­µ,…Žn¯Yë¯ØLú/^˜À^ó$vLøDÄ Rlq]*'ží5-­çèJ¼  Gž®¸ý¿Ré–þúë9NÜ¿»§±ÿñ¸ûAplþávF¥[Ä~I µcÿF"bÂ8!昧ø8ßãæüüüüæ°(R<¶êüÂÂBÿVf›­º°°0?¿Úæ ¤ú4ehÓ«mÁc«ÎÏ÷ï({€ 9ŽŒóŸÀˆˆ„‰I6þù´ñ½>;±§Is]®¦ñ•=¹šÆW&&Ç'Ù+^wÓ7Ütã ¹îŸdg'Æž¾ûº\ÍwŸ›ôÿ¸îé1±ä³cÖuw[MLž³®Óøvô%f–¦$ñ_\-6Ðìíyò›BºµÂÂÂüêêê°þÍÙßYœ«–-ãrÖ7óüPû3ÎðîQì¾¼‡Ëo„H]bx+ío?èë?šó«mž°ÞÏùLûÏëËR9ŽãRËô2‹t\ÙCaû#õö!þ~z"ú¿ø¾\šóó›÷û>Ðì¯CøÛ²—¿µ¤ÍûÇ#Î926HD™i)â‡!U×¶AüëÂßnáߘS?)ï.2ßq²'%ŸóîIíXØž_ÿ÷ Ïoù±Š ã“l‚¥ÞöË:ñuxg2.ésž~ú»7ÝxƒØ±œØóÐW~ØÉó<ÿ|m®&WÓØ?þŠ·kòö${š4×Ýtã ¹ww/=Ð}EzíëÖ¦ßáK' qdΖµíƒÊŠÆ %uÖ·8àí»¨¡ÛR¡¤A±Sÿjß¹sg·¥"›±ÎúÿÇšçíõý¹búY_ÐH Û*•4ØÞ¸]ì7#àBŒ#'„xÿ‰¿i¸ãe;Ï_S}ÇòIÓy¾£n×W»_®[>Io?}×}ü×›ú_j*á;ôý§Ý“‹Õ«–òü=»ŒOãcý=éGŸÚ3ÎÆ'„±ÝÝlÕWLìݲ¦ù ºíg½ý]}¯ˆEOއno;¸ô{M?¸†ž«{hoÕŽò/öæòتì¼¶±»»QËÛªm_ßUoçymcwOêðà&rIDDê\-cÔÙòÝ,-kÛ©¸±»{çν½üÃTÞ.±QëóBbÓîÑI)šUJž;BDttlD¹J“<Ì#ýĘ6PÕ°Š…wÅ’ƒ¦Nyˆ(Nžžˆþ/Ž/$Þ^ߟëo.é‘Þ>i6µø!×ìI?ŽËÉ-&ž·×Ô„ÿ=éXß©¬°êžþ'ûYŠô‹q÷äv,gÇì ÆJ4*™­á‰¿/âùŽžÉM/mûÁ5ô—¶m{'&¯¯ÙÕüuÆ+ùYo¿Øº¬ ÁñÐz;Ͻ©ÿ÷ L’.D~-íÖ¦ßáK'‘8’çí EESþ#öbD™iê´L"óÿ¹Ì˜V_–B)i™D¡½­˜2Ó±^-¦3¦mj-Kó Ž‰zŒGÆòo’ˆç;þ3?÷ß~,lêþã–Ò:c·ü×úqøpOïAÆn¹^ÅÆU+‹{³·lbòrňH|½ÏÚ2Ìó<ß±{Ÿ7ºâ*ù†ÊߎùþÜ?;±gw'}!Eµ$ˆFÞKêdÌs)Ç®Ao¤¥ÎÕ26¸ËáAðŒcÙi‹ez$::6¢L[œp÷ÊÛëk¶‡tSÞ.1B*Û=¦hVe3ÖÙï$¢#c´J“’@e¢uÅr‡#ÚXÂŽ“g&¢ÿ‹ýËÅûòùí“ÝK¶ÙcŠ#ã<‘œ ½ZÆóCf}Ñ”ã|â)øÇ/#¤DüŽ“=©ÄxwOnÇB$L†¥GêLü}ηn»jüóKÒ‰¨óå½¾tiQþÏNŒ½=BŒ)§0ï.¾l“‘_Kºµ$tDøÒI$ŽdLû14Xrýr6Á®ûÞ“?øcüÐÏ×Îó/l*ªíæyoQs0¯-ÎBJx; ÙÉÐ0Ò±‹b™ ‹59.gý¶ÊlÆø!³¾¨H¼z'Ö7¼{LѬRŠaglD¾ªÓ5Cœ`ÑÿMÿË%òÛ—´fOìDr6ôvw[*²Y ZØ)ȤÈ|ÇÉžT”3e÷™èXdãȈIÐ.‘^‡ü(•™reŒ»Ë5ÍŽ_:‰Ä‘1[œ¦Œµ_ÏöÆöARVXµŒÍÐQÎ{“BœÿÈw}¤ð¹[¾›ÇX·aóÀ“¦OL “‹_ãÿ‘]“~Ť0É®Ëù:ñ|ç+-辦`ùrÝ7¾NôfϾíèþúMËML “Ÿ¿½ñ¥?Þ÷oŒˆ|…/^| 1vó}»~ûâË¿{é^1g²þÅÕ{Dþä¦üsöÛyž2ÓÂcM.U×ÖÛÛ¨eD$½z'zd»GqޙǎuìÊÌ ï÷üs¬ýÎàŠçÆØINyˆhaÇ‹þ/Y_1±¼}15{RO„ãRËZ›´ŒM5´v R¿ãdOJ.1ŽÝ“رz†ð­òIpŸéuŒÙb,* ¾tf0Žô]^c·l?óÀ@ÜUÇy€ó>Ždñþ| O9tˆˆ²¯¾2$}’M²”/¯¼–ç_Ü;À&^îãù/¬¼þr&LL²/ÝPLD}¿QLùÒ Å<ÿ¦åñ¿ H‘åK•¯bL,Ü_Ú3;ÜâÖñ‰½¿øúM·ýáqGÈ çÄd¼goïÑïôÆXâ%€ÒL¼P2¸§ŠÖM Â@K}gȤjõú&-cÁAÏÈØÑ(¨|÷˜¢Y¥¤ÎþgÆ2#\­©^S™ÍX§e»8Y¿ÝÒÉXvåuœ#’CD¹«2Þá«$~Å„¼}ñ4{øCÞýfÿ O⻩L[ì‹éÅwYú‰òFêâ»5%ÒwœìIIØ=Y˗ʪ3ëùÉ÷;ÜÞ_aç£;'&£t&Ò>'Òké“L­^MbQ¯þüÞ>ž—¦>”©[ówD üÃ—Ž¬¤=‡=ƒ±ÿ¥koX‘2ÉáËÿþ­/v>5äûQØÿÄ­u ')Ü[Úk¿õ1¦­}n¥ïpöÂ[$ü‰ÌÛŠìä-VÛÔ³>Gì=ŠìDLÛØ¦K |¿vÖÛЍ±IÛYß)kì,ÎÝÖÕ¬¬ÜÖZÐ=Ê‘”• âã'½[w5˜‡xÙT¶{lêY¯NѬR¶·wRÓúýjª®µ'­¥ ^_d&"Æâ*äT‡ˆälB#Ž!oД_©Þ¾)›}†N„ãrÖ7ŒÕ ‰‡Ë®ðÔk*•íf}QvE¥–µwJN¡i,¿A_d–|&ÃS¾IrŸ%ù3Mm÷äv,DDŸ×mz~É·Ö=õ½ü§ˆˆè«ÿ·çné¯pg"HûŠðš#!¸kúÒ÷újWÝ®Ÿæ³ÿûÐW»êvùÓo«þBWÛSßËÏønõWYÛ.¹¢ò¶éD IDATÝš¯#úñó?úWÄII¬«««««óÿ¼ÿíS×]}Éùz¶l}ÖX»ï:Ì7†Ík×8q"®sùšo¢é¬Ïü6YKÕyÁXÜÔ»!‡ˆšóûs{6ä$í›f:Ïý©ÛLHìl}vuñmÑótu>wN¬‹x~œÈôÛaþw,Â;¶ÿª0=ôëÊœs´·9o<ôÐCXà\…y–$†wÞeå6ß Âc#Ê´5󤆞ííC<õDsvˆ®ÎçÎOÂys"çkÇ"–ÛïëU³*›Ö©ÐΈ#ÎU‰L?AÙuh8.U×Ö6 ŠmÇT][¯nf!ÁCœ7Ã3g::õÚgwAhÏþC ‰ Žt,€8€ñH@Lj# ¡î×:@9›Nœ8ñÈÖgñÆÃyÓO€ŽGΞ{ïþÆ¢E‹ðè8?ô¼ÔFt,€8röÄõˆ>€ùüGбÀÜâÑ™ñÈýoŸB»@G>#ÏãE YvýÓBÌk@"GâH@ ˆ#q$€ôù‘XufT¤eðÁ8íq\€V€Yˆ -ZeEJ¬ÄpΙ|44Ž4Ö®C»@6?¶hÑ"´ÀùgfÇ#ÛçüX8Æúìw‹sÑÖ¦±Æè“!0åÄ–??3ä¤jÛþ„7:a›«ÿó7ŽìÝ÷ÖgÒŽ-ºtü£=Ow½öï«—£¹/@l}V:È}âĉG¶>ËDvŒÙ –üühÌ“ªmûÓÖÿüÞëÄÜý³—Ñ0¯ãHÏéÑÔK'ÇÙÄE—žyó¤‹hª8ÒaT×ì_–¶: _ªªjÏc¥&—/™B·ï5W¢×6)å÷广ú,§gÊË%D&=ü:ÿS "÷~Œ÷à<Œ#­¿w^™}vB˜ggÏŒŸ¼*ãÃúGmM?ÔEÜÁmÕWQ«Ë©ñFKzk‡¥\á¶ê«ÈäM@çÝV}‰Ñ1—1V,µ¢©F%D"ˆD pN˜‘çGòŸ¸ì(-<;ÎΜ:ýÑG½Dz”)^Þ÷F¤]–ÍY&¨1˜²6[D‡Gèòb ËéY¾ÂŒ*£ÃmÕ«T*•ÑáMQ©Õjßþ°/$1<…ÈaT«ÕA‰á)^jë¶êU*q½Õ¨¡¯£#PÃÀ1$T¾ÝÂË ®Fø‰Ï;þ{nD"ˆD €8RF×¾?_žvêìÄ©3ýýäñ÷Žy>µà’Ï~†Úž±E #ûlÁ˜&OgësÆÐ‘aŽF……U‡†eت dt¹\.ƒ†Èa¬®íp:µÃUH­d´Âåt:]¾!L·ÕàM1‘/›ÃXE­N§$[xJ Òrµu dt¹œN§ó¹´Ùâð×P,ç¹ÃæÐ÷å¹\Îç6êG¶ª¾<§x ŠÑ’°°P®¶¡'>‰#‘ Ä=‚à±UçæçWÛ<ÂLTOšóóóó›aÎÛjš•‰Ú˜ÍùÞÆ5çD‡=ˆ„}OÝþÕªo®òÿ{ê5ÎMâ¹|ÿöG çê)âH¯ß¿î‰ò/$óÞ?¿}Qªûä™N?ùÉß>øðu+7Ñîƒ/\ú…—ݱ7¾ *Ê-.#T‘ƒI[8hg c vÒ™,å IZQ® "Ey…ÎÖç\ɽ»‹2–H£X"Z’±ÌûÊ'<%zm5M#¦D´¬¶Ã ¼•iô½dÐIÆgýõ‰^ÛŸ§Äë#ã "·×¬mTVXºwîÜÙÓÓ@-Ò÷k1å”#‘Œi»»»»µŒuÖÏA{Æ{RÇNgÅ2ÉØÍ•Ïôµ=Ó¤aìã–ó5C  óA¬×GþÛ—Sc̹óõWÓW¼ÃŸùÇ/.ZÞuè©÷½·èkW¼÷gßP×?§^ºãOÝYrCœ•T”[\åþk&C·ê’twÍáÑvܦÞ"~Qiž÷Ð&£J¥æyßM<á)SÖVró·X"ÊJœ‰ôõtj{Έý®mŸ#cƒD”™–BDÄq©º¶ b ÒRPo÷Ýh¥mìÞɉTÜÔD v"Ê®°´j5kÛIY¹­U—ÈSY9b61–-¦ËƯæ!ž1mSÏú.¨ðúzýQQÈ&5 Ùˆ­fmû÷f,mSÏz59½;†¾Ä[-…÷Ùyž'{}AÐAg :ñÈÔÙ×Î,;[988(SÕÀ뎓/$øÄÜyã+³uRD$Gú¾µ}„gìæêg7.«ôÎï®nóVéæêg7^Kûÿç?~…n¹ý?F¶[ÞdìšÛÛÚó¯òVì ù«í}<±¼¦_T\/s‘ò‡¾”ãd«þÏ7~ìày–yMzX¢÷ïÊûú¾ýåýb O/¶}ƒü5—æ¹c9‡o8˜iIž×¶¾ôÚeÿràÃ~E¡ý×”•ßþòÿ#÷'D´÷^&ÐÄ™ÉË2Û¶_Ø€[øp¡&Ow`ôpÒjº$cYxŠNœ°ž³ÖBgœÃSäNÈ[[ßÍ7N§ÓÙªKfýek;ßMy}¤,ŽËÉ-&ž·×ÔHg´9.gCoïÎ;»-ÙÁƒjúäh§óÉON¬¸?rÁåo ŒŸd§ÏŒ3⎟zçG-wÜQT=êy“˜0qr‚âØYÆ&Økû!Zî9†Ð$—Ë=DtibH”-GQnq•‡å ®BøŽQªaSÐy•—ˆˆ¾¨¡´¶Á5—¯ &jmÏùíø¯ô=§–µ6ÔwŽ!J<ÛÛIYiÑ­­ïœN”ia£8‹Ó”ĵÁAÆ^¢ÌîDÄ¥êÚzuÍù v¾³¾%·'ÂÀæ,Q¯©TÚÍvËö59ºÔiŸòü9ñëŠþãZ‡åÅN{ùÒ›)R¾Hì­ÐK¹«n¯ûÝíâU¯·,vãµá%}1ý "±z+<=ògU¦pùjLIŽô=Úzˆ®½ýçß9ZýãWÍüÑ–$–õ቉Þ?óñgOŸœˆ\¼à’ºèéžö}{…q6ññÄ™ãgNŸ8{úÄøÂ…—¡é/L‰])ÍÕ6ï|¨³ßÎó¾°/‘¡2‰‘±£¾3ÓRƒ¿Ú9.U³JÉóvËö£ }wõú&-câYˆWŠ•¯DŒœy+œT)e Ùl°½Ñædëì¿8µßT½HÕŽýÄgè íOÊ2Ù¡ÿ÷@ï;Ç-^–{-Ï¿Øi÷„ç¼ö{k Ž GÞ9FôúnÏÓÕK®ä8 ¯½îMOÏÕ\C,(-*á_ü0’Į东õ ÔXPPXXXÔ`gÙÛZËR9ŽãrÖ7ó¼½¾À2¢oĉïù5» Šì‘®wLÕµ5jÙY_XX˜ÀsÃw÷?¸±¨¨¡“”• ebðª^S©¤A³¾È’V©eL6*-kðæIîã-9.µL_ÌóCâH²§¬^S™Í˜½¡¨?·IZ½HÕŽñÄgˆãç}óžówÚÞ„+oþEe³ÜQõÍUâ³rü›¬^Sÿ ]{ûuÒ¸Ðùèת|‘±›«¿w˜"–àx0¯úÁY^SÝÍ‹£þå#_xx5BãÎÛjÒs<˜÷Úõk|MÊq×Ûp Ï¿Øö'|‘xþŶolyƒRó~X“NolÿAÞ÷oä º.<nµ€™ÆÕÕÕÕÕÕ‘øín¬]žé÷¯{baócâ‡Jº ¶t}mÿ÷l.¾xFÏ ?nf®ÌPcÎm»ÍÂJ6þçøÄ;õ|Îyü^Ý\ý¯è `:zè¡™½û·}Î'z_üU'F!HÂwmÀü±`æŠîÝ÷ÖgÒŽ-ºtü£=Ow½öï«—£¹Á?9·ë>‹žÜ€÷íz‚×ßñ»?Üw 638é9=ºðÒÉI6qÑ¥gFNº¦ÞÁaTûHc#y˜ŽÌÓm[ƒ÷š+Ñk›”òŽsù‡‘H€óÆLGZï¼2ûì„01ÎΞ?yUƇõÚš~y=·U_E­.§ï⪂¾Å`¢Ýrâ[ÑmÕ—sy{J,µïó#¥—KÖ¶ý‰ˆˆ²|/`úÎÏÆ¼ûg/ßóíxw“¿n0M®ýïÌHyÈs|â²£´ðì8;{êôGÿûûwüŸ½zñŸ_Þ÷Æ×®¿Vv‡es–ÉXŠÐÔ§²8Ê 4z t!—ˆéY4JÞ0´/¯#Ã\²ùéL.ƒÆ·Â5c¥¦@ é¶êK¶”&†§9ŒêšDH Oñ:,_[·U_²ù ÏÑÒÏYÊÞš¨¦f•¶: o }kve`K7Ê-,^ÛðŸ§ÂŸ¹õ?¿†_HˆÅŒÞgsáÀoLߦɗg$ŽìÚ÷ç«sN8{–üûÉãïó|jÁ%Ÿý Ýÿ¸-Béè³éò¤ÔÖäéªúƒ¡ã^¥?ÔÃR6îCÃ2lU†Ú—Ká «†k;œå é¥ÃX2Z4vè¶¼)£Ê›Ía Œ’úâÊД@¥åjë0È(ÖÄmÕ—Xåbxg«ªÒ™\NÛª7<ð€™Ëw¹ ACª¶ª>“÷9ãúD¯mè‰ÏC‘®Dp€pÎ-GNœõúÈß¿î‰ô/$çÞ?¿}Qªûä™N?ùÉß>øðu+7Ñîƒ/\ú…—ݱ7¾:*Ê-.#T*½Õ-ŸÃ&®¦¨21ié$‹(:úlºŠr)Ê+tÞUµÃ—¬vïî"ïBØš<_¶%ËB–áO‰^[Á_EzV ë²Zq­CEzÖ·2¾× ºÀ²‹úD¯mȉÏG¸>à¼ëxdìÏÜùú«é+ÞáÏüã-ï:ôÔûÇÞ[ôµ+ÞûÀ³o¨ëŸS/Ýñ‡§î,¹!ÎJ*Ê-®rÿ5“¡[}×GN×áÑvܦÞBDDŒJó¼‡6U*u`Æ9ù!í}£— 4qfò²ŒÆÇvÖïçÆÖøÃ²°‰n1Ëa¢$ ¶-ÉXž¢kµ„G†CèŒsxJ˜@m¥7ß8Œª>JZýek{nˆ´¾¶ìcð`ÚtÒ“äçþôÿµë¢Ïûè“£Î'?9ý±âòLåÕ*"z~÷¶‰IáÔ'“ />óÇý&™¸K_;\å¢ÃX5\«Ž‘}¶eÞ‰Ü8iòt6³ÕMDn«Ù7›­HÏ ™*V¬\=Ü—¬gêj{xô€¯ÞîCÃqa«ò?â'|>¹µE‰­¯ óP2Ç#7=öâÕ×ýé“ɳ§…_Ýïz¥²ø¿¾|Íõ¯½¹÷èßÜŸþܧˆÆ… áÓWŽÝ}ÿ¶­?]•[LFµÚ»Æq©ÉY®  aVjr%xåŸÆ`êS•¨·ˆ·6k|‰‡ô*uMà~gE¹%ϨR×ø¸Ñ[¬’ïžè”@ð(W[ÁÔ§¾M½…ˆ-ÝX«³U©¨ÍË,´ÎÔ‘aV©jxž-ÝØa y”«í9 ÒH$œs’¹¾öÛ[¸%]ãgØ'ýðØ™÷ÝŸ?òÉEÕ£ž7_ûëËŸºtÏsì,cì°k᫽xtY£ª/Ïe8žDËúÚÇNgÝóí6+æµÎ›6mJæ¼ö‡'&>zÿÌÇœ=}rB Zpñ‚Kþ颧{Ú÷ìÆÙÄÇgŽŸ9}âìéã ^†Ö¿á®m€ó@2çµ7ßuïµÿÖ'L cÂäÄäÙ…l|áäĸ09IŒˆ&Ù$›œ<óÎH?š>*Áu~®Š3OÖ×€ùGÑ¿·Ç»Kø(!¹bfÓ,ˆùúÈ‹MçnŠß·|ÑT5ñ_Šùš„X‹šF]Ï—Ë!àBŒ#Cü¶Ïù±pŒ;õÙï碭Aéù‘ ¯Tžì@ÊaT%kÉô$…(æ~æŠîÝ÷ÖgÒŽ¥)Ç?›éyºë5´5øMu}dØJån«Þÿ¤@T¤ÿM‡Q-®f¤2îñaî¥Hk¦'@vñwš±å×cÏ0µ<ä9>qÙQZxvœ=uú£¿ÿýý;þÏ^½øÏ/ï{ãk×_+»Ë°ýñ«6¼ ^·¢tƒ£ÁîºQO^ú¥ØŽz…â*:LþA»¦%½õ¦Õßy¢*‹\â0¡tŒP޾b¼ç¥CÄ𒌒²…¥øjà‘­­ðîó¿¨üÏÑâ5¿¬,LñÖpýúÑn"ZñÃçK¿ä­¡8¤’¥ßµÑPrypT*WÿПŸl ×GbÉÀJåŠòŠ,ýnwy¹Â?º§øJ´µÎ#-A>͕ͽñŸÜšéI4Ó˯ŸÃë³ÀyGvíûóÕ9§ÎNœ=ËNþýäñ÷Žy>µà’Ï~†îÜ&G «ÿ¸z©^’ô%MN³cX_UÚäþÅ]÷¾×ôHî•S…Dï¹ß¹ISÆq‚@D]O>vÏÆ'^c¯¡'ï§üqcaÊßvnÜbq=øD4l¹çÝ[_0JæÁßïyDL´5X\~g… ¼º£™î|ây@žâÇq+Âk+¯îxŒ¾ùÄ —sœðî󿨷 Teu=Ù¼ú;O<Ÿõ^Ç/kÛþ<÷¥'^(}¯ãõ¦¡'|^ýéƒ[«ÅX¶ÁWí(µÛ^zâóV«ÚHÖU×äeUYå†%Vóp­Qœ$޲Öùô— [öÝ+5Ó#5C¦<÷s{}v˜'b×þýëžHÿBrîýóÛ¥ºOžùàÔøñ“ŸüíƒßY·rí>øÂ¥_xù×{ãªwå­ßâ^zì–ûxþoòsÖ]¿¾çVÃÝ% Ñ7õ*_âêïøðÄ 5¿à*"ú\Á·rþèoäú%i,{ôÍ}tåç}QìC‚@”zeF×Á¿Hž­¶·¢ì'·z£º+WòfßÜT•Íqt…âªÑCŸ_ç{Ȱú;þÓ Ô'zmƒN|~Š{}méºê}ípŸÃaÙœUy‰ÌáCÞÉï$,A®ÉÓÙªÂocIdÍôEÉ.þ‹Ä–_OfãÄ4×w¾þjúŠwø3ÿøÅEË»=õþ±÷}íŠ÷>ðìêúçÔKwüá©;Knˆ/”äRrÒyã¶cÇF™ iõ'e×óîèЫ ·¾DDDŒŠ–q\ʆŸî¸ëƒoÆ9“ö¹…©Ÿüˆö¾ÑËš83yYÆãc; ë ƒc¯Koºÿà_ª²—ù’þâ¸IS&¿¤Éiv¼OtyrjšzeFxÊê; ¡!)Ç­(ûUgé»Ï‹3ÎÙž"S¼¯¶Ÿóß|ã»ê‘’VÿÐÚÎÝ-Fñ‰áúHÁå’»¹™éY¤ËóÅ•rÙ4—+è'§!d³fª×¡:†¨‰åå"¢¯xKˆ³(™³ˆ­’Šr‹«œ"î~îq5ÀÔ’|¿vÿ_».úì±>9Úé|ò“Ó+.ÏT^­"¢çwo›˜N}2¹ðâ3Üo ß1K{ÿnkAxuGó_oÖª‚rüÅ1±äsñW‰ãV,½©«·ç"z¿ç77i²9ŽãR®PMOs\Ê5×ÿ5Ò„uܵõ¼;ší€~ÏýNEt=y—ïöó¿8ÄjÏTmg]¢ëk;ŒUõzÄ:óB2Ç#7=öâÕ×ýé“ɳ§…_Ýïz¥²ø¿¾|Íõ¯½¹÷èßÜŸþܧˆÆ… áÓWŽÝ}ÿ¶­?]í]yë÷7´ýäž[ÅWlx>÷J.ìqŒ ^ù—¥ÿéÁ»î1<#ÞÚ¬ò%>þžñãû//ܲôÉbã§?úoô«”¹£¨zÔóæk}ùS—.àyŽel‚v-|µ÷Oâ^X_;\rŸ7>·ëk6?&~¨üÙ!×G>²õÙc§³îùöŠ›u:?˜M›6mJæxä‡'&øKÏLLã§&¢/¸äŸ.zº§]„… ¹‰'„I69.° aáÂFë_°b~~$ÌkÉŒ#7ßuïµÿÖ'L cÂäÄäÙ…l|áäĸ09IŒˆ&Ù$›œ<óÎH?š> Ž[Qö«çñ ÆñüH¸âH"zã÷öxw™ÛYW˜e1_x¦É-W3FuÍŽùU%€¹Ã£ `6Ås§¶®Õét:Îç6Wçþ™Ùn«¾Š¼Ur¶’ÌCÅCâàÄêœðŽˆ#á|'^ÇŠô,iŒå¶êU*•7ØrU*µZ­ нÜV}Hbx ‘èV«ƒÃS¤ñes–É?©1˜²6[a‘ŸÃ¨2îñ¦î¨ TÒèðˆ?cÛŸ˜¯  `öÅw}¤ûа.Ï÷Àl[•¡¶ÃåRxƒ¯ªáÚg¹BºÂ¶ÃX2Z!.~í" Þ‡QåÍæ0VQkP®ð” 0²Ï¨Q´³9Ò\& ZÆVÕgò>õ;P‡)wÄó}`^Ãx$̪xÖ×¶Õˆx2¢.Éâ_&ÑÑgÓ‰+m+Ê+t6q½èðզݻ»È»¶&Ï—mIÆ2[ðÓá)I¤“ eú뀋ö IDAT8 f \é މ9qTò\žÚÖµ: ÿM‰ž:,å "Ò\š@¤T²9Ëärj¦ú¾ëËs9 Þ¯,rBók .—!8X‘Ò<£Êè/f>}Å«kv”¶úZÆmÕ—¨FM.ƒÆmÕW‘¿ÅFU‰1=ôDf3ÏtH> †A}yóùMœû01Zû¸­æüÁa«^S®˜‰tðÃx$̪˜¯Œ}ÀmÕGɲÕaŒ6ð}kä€Á”µÙ⩶ò™j;¦ ÜV3™|™4úÚasô 8ŒUüÓ6Mç¶ê«†7>ç4wVe £Ig3[ÓáÑË2–ør.ÉX&ùÉg6óDûtú†~§ÇrUFGгwT²›wtVØ¥j¿£*PrH_±n«^¥’Ÿv[õ¾¡VßÛT áW™Ì²G äœ"[h;LYso!z«5¶ßúðö =ÿÝ]Y­ÎVÿ¯e²Ó@¢®®îøñãÇoxø— ÿRH*ÿ‡ê¸OÃÿ<.Ñðð/ïú¯]{G>Jàãwø7w._~çodz5‘}Bìy`ù{äS¤/¦*Æ{õT˜¢¼‚ª|Gr«lQGò ]«õš(ƒ4*ñ¬-Ñçàæ²é܇†uåd5×ê5DËæYé r‡5y::°å6µZ]cÓåÉŸëlæ‘ë¢Õ+¾Áh“nê]–y¦éYÞÊ4ú^K ôŽ…jòt¶>‡Üå2èLòï´ÆàO…ˆt‘ì@9²™}2-â;\5wôÙtâNåjî>4ìýMQ”Wè’ÐÁ¸}Ÿ®þd¥@Ä‘0¦w׶èR©úòœN§|mk æq:y}*Ùù¸è[壣©gE#L€j ®¼>qV±/Ϥ‹\ŽÃ²9«"J„¨1¸\Nçs«»J"Ï0ÏyÓ= þŸ•® ‡Ñ<¼L—§ œšÃhÎèp9N§ÓéÊë“-cóÈÞ&å­|¢Q„ï{xô€ΪÕê›|£EÏ@‘kKþ¸2O³b‘>±T/êÍj²¿'ŠòŠÀ%'IJ€`¸ÏfÕ¢E‹Nœ8AÓz~¤ÆàrFµºféÆçÂ"žè[ýC úÛ¶,m•ÞÀëVÙªYŠÐÁ.ó!7i1Óið~cfå"²§®¢ÜbUYå²QÎyÓ-ÉXfësôµæÛÔêÒÖÖ,[UzGi«xÇ„£Ï&9Mž®ªÏaÐhB‡¸f-OðN3eIÆ2]«%ÊE¯Sfü·9Œª¾ø3/ÉX–”š'E\ï‚Ûj¶ñw¨wÆJذõNÍÊþd¤ãv€p„Y•´çGj N§ÓHù'¶DÙê¶êU*N§Ì`ô­†KJ6SmØ|³F¿º«$ž¹qñ =ÂQ§Œ”–3Õàè\6¢¼Bg«Òï^iq:8†êÏ¿$cÙð!wô™Í<òÍ'ÁâR„˜(V®î“ù ø«)C$’[ˆÜ‡†é¶À)‰kÙÌŠô,[ Gœ²bšUð¼­Æ`ÊÚìû;D.C”ƒÆ`ʧ›UZ­³U©Œ{ˆˆt¦Ž ³x÷´9Ã÷(™ÌÉ9FŸG–«XÐGW< µZ]²9+ÒßHƒ‰ªÄK{WÇܘAíøSÆwEcPÖ;ïzåW¯Ü=ýt\% ‡««««««#"q”ÈX»IdØü˜ø¡§³ýüÏ|dë³ÇNgÝóí6kàãç¶êƒâ*€ù)ƒ ÝV}<±éœÕs^q[õ–t ~éΛ6mÂõ‘0«b»>Òa,ÙœeráûÎÍȲjÏ/Ýø®¥‹½¹ˆˆ±R“«-pnA ³*¶•l4— mç‚ðukfçîœé×sþTl6Ä ×GÂl;÷××Ä‘0G’v×6 Ž„ DÌëkâH‰dD:ŒG~¸­úXž™McLËo$P®Ê¸'¨GÂ…aú×G:Œª¾<ñé £JÏcçf1Ь¢V§Ó53OZáHcˆ°ÜâH8ŸÅ0*ù9ä£dÙÁå²”§G/)ìÎn«>äË£Êèp[õ*ÕòåõF}ðR.n«^o=u¯àqGñQ&;ªÂžºoèë@jµZZ ‡Ñû´ç G$¦é«l1Ÿ²Ã(Éï$?âH8wÅ|}dÄûµƒIñ>èšüŽù‡5zo”Vß¶%Ëw“·¢Ü’×§ »‰;,Þ,¯(eKý&Ƹ—|$h0em.Q«Õ%›ýµÐ\£%*•Ê@F“nŠÝ;2ÌÞC÷å2#Œ€¹ÅÕÕÕÕÕÕ‘øín¬]‡F$2l~LüP8qŸ¸hÑ"ÿl}öØé¬{¾½¢Ãf |üÜV}ÉhE¤[¶ª¾<×…>ÇŒV€9µiÓ&ŒG˜jTÒa” Ü…Ó\y}ø“F‘0×pŸ Ì*ÿHdÔë#5—+z9ƒáÂnÈ ¾`Àx$̪d­¯ ˆ#á‚3»ÏÄ‘pÁ¨$âH€øLûù‘SŠøÀ ¶N'ó,—6ËÎéÊâH8/\`#‘ÒðKcÀýÕ€8`:b»>RE s[õ*µZ­·Z‘BúØp‡Ñû8q½ÕT’÷YßÒäu )ÖaT¡Å:ŒªªüŽ*o¶3’+ÁW‡@üeÊ2e»É4TP9¾ÂŽ@•¤;;Œ*IÄ‘0Ä0*)½‹8’ç0Èèr:Fê²Él­®íp:µÃUPÈVÕ—çt:N§ËHoºX’Ëét:ŸÛH›-Žh‘ÚTÅVŒ–DƒËTÊJMa•X‚X‡@Æ*jËô’à ¦ÃX2Zá’”CD¶*±ðç6›x@ß—çr9ŸÛè¯Ûª7gtˆg”×}åF@ 0ó’z}¤ûÐpVº‚ˆHQ^¶´ £Ï¦«(Wx·ÖRÔpX4[c°”û@LÏŠ’M]ìk€G.A¬C K2–Ms1ñÀÃP\VÛaЈ‡;ðV¦Ñ÷Ú×¶»»È¿&¤Æ0ÅÊ€8`Æ%õúÈã’X‚o%nuͼ{S”[LT¥Šaf9Pyq©ñ÷†àa¯ý-žëÙÀl¯”.·=»†¹Iã–d,_¸­ú*2¹œ1&ë›7­¥1¸\·U_btD›ÑÖ\.ƒ7  _0њɄñH˜I• Ì»­f›ÜV³Õíݘ×=°¹Ä7PçÞÝ•%¦=°,c‰˜xhxªƒÊk«òÿM#rÇXÂÌQ¤gÅ;?47ï0âúHñH˜U±­¯MÁãj²clDDƒ©O¥RóüÒu4*·µD½…g¬Ôäòï­3™¨F­&"ÆJM®r^õmê-DléÆZ­JEm®<ù+R±f•ª†çÙÒ$¯1=¸òJm„ª|z WWWWWWGDâø±v’Ȱù1ñCåŸÈ~dë³Ò òÿ·wÿ Î#}žÀÙ`Óá²[õÑø%M¬FÁé}·ïŽÌc|p˜Q°;ƒÁtÔø [Is¼yž¨G¼fŽÕ›nй×pБf¡w] Óæá8/kZpL4ÉÜë÷ý·%YvËnw÷÷©e©TU–Û?W•ª¾ùþ‡Ÿ~¿úâó©iÄ·Ÿg¨­EÏx’Ûy©­4:óïééx†Ú'ÍuÇqn:›.Ê\×¹½š÷ýHRitL‹û¡cr›ˆNêç'àâù@ ðDΩ¨Í»Vf¤Òè˜cÃ#"χeÆ‹ÙyÐí=Ì·f'“‰…ä6‘pÑœ[xˆGT¨D«d©çµIèênÊ猻¦‰£–,Ë­‘¨Mþ¾õ¤¦‰~´Ä¨Ù1ûÿ˜›+I–eùý‡(QRíe;•F{y„¤DBWoXRáÄ–x^^0<¯ UvþHïaNÔXßΠ0×e%÷+Ìu³ÓpœèØn—¥ž¤ŽϼVÑ£å s–w0å?Šð =ªÜøH›Ç­ˆÉm8"h„C+1d²Ù0¯ žÚ#áTúÔ6 Ž„7`ÏóGâHx¥Ð ðj`|$Z¹õµŸ…ÍWàŽöØ\êOjñï®å²­ÅG®œ˜:x¹<L£•3ÒùÖmü˜{ü‹¶^Ÿ[œ*_NüÍö&±^ϹïNN­z†ÚZôy²¹4®k}Û\ê“–¬Át äÖRù{¬à^-•~‰Û5ï6ØæöȪ ?o™[ûx&3½”·GÂqó[%_Z×v'þÂJóŒñ¤öin¨JüuÚI}»µTŠ¿k×Ó±\9žoy nÏPûtã:á—½jlôÊÖjW׸Äí(’è“ænUÕ£Ÿ'DÏÎçcn+Y©ÕÒV÷XÎþ’éo¾]Ÿ<¹•g¨ãù9‰©:×§Ž#g¨'¿ºÓr­Þ5yÞÜ5”„~m8¨Òã#ËÍCžw®jx;¾ºË·Üýxã܈#ÝÎûÕr_Ì:¾Ñ™-s¿Q ª¢øÕÌJ–Òs¤Û\â¶Íƒ¹ÓSåêúÁÒúë6¦^Og%óôìÜÚzr¦'…mU{›kUaù«ZzƘ6N)Õ†Ä?-X“~”sÏPÃiðUãÕrnãDšö†;\ìñú8ëÅ'ÕRÞ=–Ø_6ý¢Û5ãκ=Š?à6o-zzOLî²æîLjB—2–Úœ+@ /Péñ‘ sßaÛµî(Œ“¤œp±øÕíÙúH ×¶ó¿¶Í²K$zÆx>P•¬ Q’ñ¼6Ñ¢Ws¾ŸûóÁÔqœé \-œˆÈì[`MðÞ¢G>­EÏM.žyºg¨ãúÔ?½aõÍ8{,8=ŒáòßVÛJ,d¹m핪U?’4Œ¿Ý\_6ïÓM¸Bú¯Ia®ÖNvŒ2â®ë8Žs{E#Ý^=`sšÊÆ;\èfE’Oª¥ü{,Ú_6ý¼¤ò~èdÝEÅ·ù¸>]m[µLñ4jÿNÅõŒÙ–y-,EDæeÆo›‚ý€8ŽU…ëkSþW¯îºœXö7DÑ«Á÷ÊúB‹É—jñר¢æã2Áif:ñNF|µ“Ðæþ~×Íê>,~5?š±ÌN¯+‘Ðí%B„N¢* Ö¢ŠìÓ½û;j^Q´Ö kéþŽ‚oõ*‚§תÂ4-þrs}ÔÏ ²«°(QáT,›Õâ43oç·úݳUmÞ{›Ò/}JÁíQwZFxؼOZ|žÂüXß¹­“-Ÿyû`  Ï ¢ñ‘†É ]Ýé’Í%©ßYoÊyue¼”Í%‹²_ò_×GbÏÂo{QÒínFÓŠ÷0?¯«é„;=CÕO…•2šmeuů>Ë3‹™Ø2÷Ï&ïå~f¨Ý¨þÒ[ÕêV¿H4.Ir­ÖÎI—x¶£l¹6¦™°ö,Õðôî>jc‡ZÚ­bónܸ>šMjò$lô0%*qŒOººÆUÃSVBÓ¼ý°Ú#á *?2jNHv¦3dY¶®›õ¥RüjÉöclÖ&q æå¤fŽÇ¬v˜™Xêûv­Sa®ë6¬pø]F 伺¡r¶tR?â雲™Yk±\o Ý:ÌcXþ6»½Jöý'n¢>i~=ßtªI3?’\°Ä›¼{-åÕFz©ôŸV±[}Ào£”Fgþà%~¤Å«ö!'@ Gæ@óG†£ÇaÊ–¯nÕ\"jNš&Žô«í#­•B&ty}¼*ÌqœÜQů†k~g©gŒ!‚?D‡ëcÐ2OO6À Íyùž\EMØ´y?Ê]:¸IÛ×êî¢ æq1 GáyóŒ¢mÏPûæ£*µyÇÆóÜZš?é[Û_.ý­*6ïöؾ*â(ª=ƒÄFôìøú`Ê•ÏbŸz™cC²÷ÀFè׆C+7d²]aÛ6†àéa—W ˜—aýáÿþ?üÛÿ3àl=úÝßX–8x¹lk®®ä¤ãÏí·òÕ¬÷2溺ºÛõ •Û:Ëú>/z5§µG³¤–ü¡¶\¶µxf–Ž6­%é²V[ž]MõèÑ”éƒ*É—µ¨‹<óôè0"jßhÓŠ²×àÁþ0…ü·Uèê—e™‚é ÝÄH·8ýå²­¹Ý'Ö*mhÇŠ»­Ûš£ÄÕÆO]¦Â4K~/ Zž] :f_"Íe©\â’$Ñù`ªuZVNšåîp¡Ë›w­YF-ùI% V¶6þN?Í­¥¢ô³“úý¦RäÜÛ7"*Ì¥ o‰›Ô¶ÌÙdŸÈš'²}³2gæ~ØÂ»áp8‰Èo%⃯Q)P!6úο©VÇh|ä7ßÿðÓ/âW_|>5øöKN½6u4ìÍñu z†Úºkî{¢pÜc¨CØÞõõ5úµá Ê´y+š».¹ oÐÕÝj'jʼß¡`è׆ƒ*÷¤¶Â\7köíÉKì-–ì¾¹Rã΀í‘ph‡˜?G«t §¶q$¼•Î ˆ#áͨ¸%ÒæþÊoÉæ/ia³ýäÖæÑŒè‰ÔW®ýisIJ.V£”Ø£DªéìÚ¼ÌS/ž¡JÛs=«+çgd><Ä3Ô0OÉ {†ª[v³*ʵúçǵ&ж~·¤÷ä¾ï™¥+ºÜÇÝÞë0ÛTJÆ{ó^¿´MÕåWTÎmVò,ûÁÄÒ‹ð*á98´róG–û÷ܧ7˜ïÇ7^­ž¡&j£`¦Ä„õÕóì“;m.1ãBïvuKÜŽfãë“æ§ms©? :´Ø¦ãIíÓÜP«ÓÏÇÜVR™üc´ŠL*ë©8³‰¢ÇŧZõW>lXÉõÜÌ>#îf.Òz)?…¼S2 ’—õÅ×–GÞgŒãµðüèÂ0þ–8S Þ—§D e=ßkK8¿#…MëãµÞVáTœ-‰¼û;ª7‚ òqQraódaR®ŠR/ù¾§ÞÊ’‘d©÷Ú¶ÌD¯/Ÿ¹s¼¸K]nª¨‚•ÂK½ƒ•ÖâH€<ûR[aQo•p*†_£ó࿹Ðíu⬒ÿÔ½û;j^Ñ—l'~©£åö„&_*H!ï”Ì‚T˼\O–ÚɈ' §0F‹¿ÜËÂ2qœ£¨ƒù8" Ý¥÷dON|Ñ?.fâ©â•Éèa»Â \»½S²,Ëò¥¹åYÛ–î¹Þëg”q›qnGÂÛµÿù#£q÷Ñ×íãb–õÅ¡kÔ—JŒ/ߪUm ë©VÇoŽM´ÈÆ;o¯ÎžXæm ªÄ^´ÝÞj¢Âz ¶ú .tu×í-Zq(yR?Ÿ?Ø~Ovrûù »¡\»¼SŽã8ÎMg›³úVVU'#¶¬°åOÐõÛ¬²wq$@uöÙ*>„QêëVa®ëÜ^ÍûGø$åvYít[ëÇÛVAG_õ%›µIÜâv9©™cãqc$I+Ãþ„Sq¶°üˆ=¹ý\…-Q®'‡>eÞ÷}¾•J£ãJ #¼ w]Ù:ñîïòÞ»‚—žúY½Ížþn[?ˆ# íþÈÇÅ,l¬ðækß"ž1Þ¾m/õ%dóþARÈ,HþÔA"¶y?ú–LƒnñM&ty}¬î¿#ÏÖG¢æ¤iâHÿ¸RÀæ¯Öƒm™‰¦©“úùd2ñË—Ü~žÂæ”ë÷öÎïH™÷=säßJ¥!Ž‚ÐË3ØH,.J¹÷šlÞQöx΂—*¨¨ômV2·ÖÀ „yà Ê­¯Mé)<¶š Eaš%¿—?-Ï®³/‘æ2…i–$ɵÚÙÕU8i‹ÿÄwˆÚšS|!…MTI¾¬QûFë˜ÖÖ_c[§QoÝÆyU!tu˲LDËåÙ`ê&ZÆ—^.ÛZ¼Tµy)O¢–Ëö·nc5Í^Á BïKX·5šÈ“eð8Tæñž1ž8[ÿÖÿÝßX¶ 5ïZ3úcâó‹?ÆpÑ<‘Wæ«‘ IDAT §ârI‰îϲ…ý;ýô÷û,ט_êÓzö;²½ÄûîßÉÙc¥Û-(Î}¯æR³«©®_ü^ÇoÐrÙÖ\=qnÁKÕWTx›m‘Û¢fvý¼ï†Ãáp8$"¿Ÿ‘¾F¥@…Øè;ÿ¦JN™œ?ò›ïøéñ«/>ŸšF|ûy†ÚZôüÿËÉí§ó U?ÕŸ”Ø–3üU¨dUx†ÚºkNõ®pL·Bµï#Ê…:€çv}}öHx›Z%mÞ‰š«¬n?%òKµ`½Ìj+]BWw/ U’hp4Á¤Í_g`ñZË…:€RGÂAE-‘…]Û sݬíE+^TBaî³|EnUBW?ªxù¹* åBÀá98¨ýÏ ˆ#á•Úÿü‘€8^)´J ŽØÎþçÄ‘ð¡%q$ÀŽ0>q$ÀŽÐ* €8`; €8`h‰@ °#Œ@ °#´J ŽØÆG ŽØZ"Gìã#Gì­’ˆ#¶ƒñ‘ˆ#v–HÄ‘;ÂøH€×áOPpx~«d5]Û6—/'þfûÆaJ¸W²nøWü§Í¥þ¤ÿ|Z.ÛߺÃ+&Ó‚ÓÉæ^ºOZ|íµÌćEÕrò$“¸Ðs€8ŽÉgŸ}öóÏ?SUã#=CíÓë(A0¤S½+ŸÓ‰ª ‰iA¾_».Û]]ú|>æ¶R–y†Ú_¹hVÞ’Q_êØýç`3ôkÃA•is‰ÛÛéƒô‘¨EÁÂ4q¤Û[æèq1ë4¶§ /-öx}ÌíJ.j[fGÛ%àÛ)‡¹U €8ž_¹ñ‘ s1Pv“›m™éhLitLkË0HaÓúXR o» mÃ¥…na$Yþ¢kÚoóªq$‡g}jÛ¼”’ßö&tu—“¶& Ýó̾èZÞöiCGÂQ9‚ù#;7NÀÛÞ„®îº½E«ÊPRa½+Joý¢™yÛŸ9@ G£Ò–ȵnì;£ôf‹Ç /]&NÛpÑ]ºê+Î!âH8Ω¨ƒy?ñ8N?Š”ÒQ”÷0/_Ú–y^?ÙñÒóªdÖ¼cãù.ª4:f—fÒÊróþÀ3(1drF›üÙm„®®qY–‰h¹<LÝhÒ…MTI¾Œ&hì†ç˜—ò$Jàøw¿y÷ñÄó8nš5(ëÒDÔÖœì3….oÞµfë¥KNšÊ[0%¤Â\ËïåÉûÊ!&’€-¼‡ÃáˆüÞF>ø•b£ïü›ÊŸ62š?2òÍ÷?üô‹øÕŸOM#¾ýSÐÕVðÄtø³Â4q> “u@ÁÕ¦‰~w³Ä¨Ù1ûÿHDÔѦõ±ÿôô¸> ¾v2¶‰6­‹ÄÎËXªübȲ܉ZÎÂ4êK²,3jvž\™ð2]Þ¤73¢!јºó¿ü«ü/ÿø×OßQ’Ûx7‡Ã!ùãÕøàkT Tˆ¾óo*¿;;µJ~óý?ý"~õÅçSÓˆo?ÏP[‹^ôt³g¨Œ¸~q$À.Ð €8`G €8`Gh•@ °Œ@ ° ´D ŽØÆG ŽØZ%Glã#Gì-‘ˆ#v„ñ‘ˆ#v„VI€WàOPpHŸ}öÙÏ?ÿL´¹d5\¦ÄöI‹ÿN`s©?©Õˆh¹lk.SÈ3TF\ï Dž¡¶F¢¢g¨Œ~«Ÿþ><Þ·\¶¿u?&v.—gƒ©ÞÖ³´r¡xO”TG›Ë—“¼ôÓ§Kš8±}ãÄ{s‹€8^,¿%²Ú‡lÒæ·3¶3â©û;ñƹGzâ±ÇëãÕ“³Nc-¶:©ŸÏ<"òæív{¶xô·Ïë'¥Ê£4:þ9›.”]NËìh»|¶>ã¦%+ ³økq$½ã#æ&‚¤‚>Y[‰ …”FÇ´’!’Ð] ¥Þ‘¦õ±¤^*áTœ-‰¼û;ª7‚ òq1O…2eñŒñ| *+™ÏºP^ÙØ¥ÙpíÄ• X+þæš@ Ǭêù#ã(NQóq*rº=Jï!¡«»œ˜”Šñ‚ìq1O?¨LFiæ¥âƼxg8¸2-óBÙIíKFñGÂËUñ“Ú¶>{A't{é¾m"…õl5”ººëö­8Â;©ŸÏl¿';¹íëÜ87nÌ vÞ^å7[®_(3©ýÉ,>âHx±ª›?Ò3ÆfmµñÉ—“š96Ë„R©A©8[X~Ovr{³ìÞãÜ e¾œîŽ/#®ž˜ÙCŽHGÂ+SM«¤­DÍIÓÄ‘þ1J©Í;6ž¯žk™‰çhNêç“ÉÄÃ’Ûe#É‚‘é eǃ}u‡POQó~âQ¤þÚ(Í‚âTóþÀA•ž?29åMæô7ž1ž8[®~÷7ÖŸ­Dzͻ֌þ¸:§c<ªQ¸hžÈ÷„Sq¹¤Dèg^Ê“è~Ç•HRï¥gÝɽÐjRšË…¹—ßË’;ËE°ºÆeYöÿjkNWÈ t›w­Ùz­<Õ»áp8‰Èo⃯Q)P!6úο©üðѿӒAä7ßÿðÓ/âW_|>5øöó µµèùOrŽÃõõ5Ú#áÐüñ‘QX™Åæ­‘¨¹Êê6Ä‘ð 6­j£0×ÍÚ€#‚çlà ªž?GÂÛPñü‘€8ÞŽêæÄ‘ðÆ”k•´ùþ< WVœçájÆ’’ž¡JRÆ‚“6÷w®×{v:/é.²ùjÞæ –Wêªöñ¥Ü¥Vóîÿ§|.ò>kyçæ_k›ë&‹™žm7#ý'½•¥KQXórïܘÂvµšÿîæy§»q$<—mÆG*ìIsý n{}ƒÄ¨ÙYÿGÛZô\wuÁI›Kãú­ã8Îm},­|d¤óòœÏÇoý÷Œñ¤6Y_F¾ªýGOaѯQjAƒ¼ûÿ)Ÿ‹¼ÏZÞ¹¹×*ñ¹N]µOZTLqÔ S*•þ“ÿÃØ\²þÕVt•üšßœóø\Çqœ›6e¯{±e­æ¾;ï–»(£ìˆ#áYm3>2ÙôÂíÔ¯¢à÷Sâ¶ö UJüœògŸôã;å€0YÏP%©¸‰+üX¥²‘úUœqpæã#7–õ#²0çA"ªa¼ÞèYa®«wOWkG¿kN3~oØÖ|Àý©Ù….ÌãE$³ÓyÄÞ¦U9_}y'Þ87âH·÷²ÿe}>RK°æÝÿ[~.R¿Æó>k¹ŸÍìk­üÂßxÝÇÅ,½øXøW~YâV´tóåú×ÄÆœxƘ´°ÐŠ:˜¯ÿÚHÕ|©œ§JÚÒ/“Ÿüw6ûÝÉiOÉ[°7µ¿DÙG³Øi|¤ÙïÓã8·Wóño«Z ×un¯¢…=ƒ-znðsŠÛD sµvbm˜µÂdq×]ûéfsFÜÿ‰v{Eñ·‹Ùœ¹½Eø«8û`›·‚+Ɖ—K–“±Ô¿™ù`ê8Î4¹b:ç~Çátg¾±Hâa.ž>fô:Yfb‰táTÜmó#·y}÷WÍÖGbCÉXk¾¢ý/¬6’K°æÝÿÛ~.’ByŸµ‚ e^«LGSò…iâ¨åǃ6o-zÁÊaeIü£æÄâæË•ÿÉÛwy §âzø•ªù29ωRKå'¯ÔyïNNšy ö,ä›YvÄ‘ðZ%}çÿ—–p*ÎþùW<ÜŽ›• ³¿ òèhzæj‚ ‹öÇW!¢Nâ#¥“y°m™ë}áå¶È¹m™žR·—“sïaügº½ÎÛº•³ø;£aIêËëš|b$Ù£ñ+sü¬)Ÿn)©jÿ ‹"yŸrþ›½üÏšÒèÐìÃ{Y–/Íì.àµÿ´Ñ?já¢9bèR'¯Âúq$Ú7·ªùâœ{»kªÊáß¼<¯ìßXvÄ‘ðv?2ñ ,µ}„üϪ,Ë—fög¬ø€¬OZÐU]æø­~bÆ2y³7ÔIý<þÎP˜&ÞÝ¿± Ja½{ƒ‘¤­Ä^ð't{QŸtUû_V)Y½¯ûlŸ5›ëÓp_Á0½=ý{T˜Û°üÿÑVC뤚ë6Ô|qΓ·Þß¼MäIÜ&²œ_*ÿPÅ~UÙkÃÞ‚ȼûÿ)Ÿ‹¼ÏZî}YÑgжL1>Sitú–Í¥(ýy¼?þW\òröGÌqXPÙq^6†ïy9oáù€o]#y¥.ùîlD•=í‘ph{˜?2îºH›?xÅü„ yyóx¿?¸w’d\rDÞÆŒ)ŽéwµyÆ8§[&î÷ŒñIŠôŒ1…¿ï•†8 šé<ƒÄ†òª+¡yÇÆó·ó®ÛúHÔœ4MéßW´ÿå4IÚ|\Ïzö%ïþÊç"ï³–ÿÏ«’ÏàIý<úONä=ÌÏ£¡@yéÏâgº½û»à…'’ö[ â !²k¾LÎé ‘¹ïl‰w'/ϛ˒.û ´GÂ3¨¼URèê .É—5"Z×(L³¤?u™’}@Á2…i–ü^þ@´<»t̾Dߺ ¢Ž6­%é²V[ž]Mu…rÖ\¦°éƒ*É—µœËä<õÓÐ/†üÁOGÉùµ¬Y’$×jgWWZ”û­üòb.õ'µÕh"OâZºzƒËò%]ÝêJ\).qY–‰(~¯ ÒyÑ„.oÞµÞÊð†ì–åË¿úÏÿñ¿ÿõ}ò~u0f†÷2š$mËœM&ò¢Õÿly÷ÿvŸ‹ô¿‘¼ÏZÞg*ûZ+ÿš6^Wèê=.Ir­FD˳«i4€/·,M£KY뤾ò?¹dNú“ÚúG^͗˹TªÅ‚[ÕjÞ»“L37ÏùeÉ,ûªwÃáp8‘ÿÜ|(*ÄFßù7ÕÏ?ÿLDŸ}ö™¿ùæû~úEüê‹Ï§¦‘ºýr¥U2Ma®{|OE(Ì=Îí8« ^?´GÂ3Ø~þH@ oÛ®óGâHxÛÐ €8`G{˜?GÂÛ€VIÄ‘ÛÁøHÄ‘»@K$âH€a|$âH€¡Uq$Àv0>q$À.Ð €8`G €8`Gh•@ °Œ@ ° ´D ŽØÆG ŽØZ%Glã#Gì¢ú–H›Ë!n²(6—öxAÏP¥õôî_8ûxÄ‘ðšT9>Ò3Ô>Ý8¾꫆w°ØQa.Söu‰Q³³¾{\¿uǹ­“1cÎñˆ#áõ)Ñ*™ŒØr[þl}$jQ0§0Méváéž¡J²,K+¯z†*Iþç_¶W/ds)ŠMm.õ'µI?8&JÖæ·S-…6—¤t«aÎu³Ë®0×Õ»§«…µæÞˆˆ„.Ì-»øøÕÊ,ÎaøªTTWy;q$Àþ•™líËkù³-³ÓH¾ 4:¦Ußx[ô\Çq\úq döq×ý§úýJŸïã(v#R˜«µ—m-#3fßo½½šû[Õj¸®s{5¯‘uÝm›3mËO…ð/áT,,)m—C›‡Íºn˜«Ìº²y+ع¯¶X@ ãYŸÔöîï¨~²qv4=ˆu0G}ã¶>{]¡DÊçƒ)SüðnöÏ¿âáö†ëRqOêç+ÙÊÌóZàoÛŸ  àÀüñ‘?ÿüóÁ¯ü¸˜Í&ïåDD´¤vcý¡ÛÕ{¯Û‚¨‰•J9ÑR˜Ú.}ݽ+ΡÐÕ5.Ir­Ö¾q˜r$y€c‡öHxµJ®5îmh/;©Ÿw‡rr{f•†?ÈÒ3ÆóZIã[©ë–(ìü!zŠÈ{˜WÜ2¨°TOwfžOêç¸yq$<“jçTÔÁ¼Ÿxr¥Ÿ #ý¨Ë3Ô¾ì.šóÍÊŠ:˜[vnŸv"˜+«Üu7’âˆù}îžÁFâ~;˜3ó¼õ¨L@ P™Ò-‘¥ž×&¡«kt…¹½EK’$F\ë$oXÒÚƒÉ!T¿ŸÙ©0Mµ¶~T9ëºÏkûS_Nj“Ëd>æöïeY–ßß5§‰VÍœã·<¾-¿ÿ=ÿžYW ›ÖÇx^ï†Ãáp8$"ÿÛ¾F¥@…Øè;ÿ¦JˆLŽüæû~úEüê‹Ï§¦ß~ž¡¶=?,Lnð µuלꥌÙVY <‘ Pàúúí‘ð 6µJÚ¼M ™Ü.$tu—“¤§NFnó~U##^3<¯ µDŽT˜ëfm—Š%»OÍ£Â\‘›¡=êYçÄ‘ð’U¹¾6 Ž„7­’¯ÆGÂA•Y’Í¥þ¤V#¢e°ìu¼Ç·\¶¿u?&v.—gƒ©ÞÆrâHxÛ*ž?Ҷ̲]^ǃ*…‹&}¸ü n÷ÀÎJ"™Nêçó‡èˆì‡\ö~ÌãbæbÑÆjÍñ>õ²ZSJFpGQ®ä€MxFè׆ƒ*=>29ž/5¶/q@ròÈŒñ‘Ný¸꽸\¸hžÖÃȲ‰ü~úûŒ¼EGH²ŸÃ³«iüìKtü¾ñæçu5¹±Zu훌Á‘a•²dS`8ñʵ2`žÍ»áp8‰Èo⃯Q)P!6úο©üðѿӒAä7ßÿðÓ/âW_|>5øöó µµèùñDržIf,ÿæ³ð¦]__£_­ÄøH›·F¢6FÆÛðlæ6¬c˜´Ñæ"Žúµálzj[a®›µ ÏJ2ä’Ð µDV7õ Ž„7 â'µq$¼ÕÏ ˆ#ᨨUÒ3ÔpGÏP%)x Ä3TÕx$›K+Ï…D{l.Ir‚$ñdsiå„õV^M%â§ó„'Ql.¥× _ÏѮՔN'•ó¢KØ\^]†;£êìšY}9#Íꯛñjþu ê§’úxÅðœ T•ëk“p*άG"èqñ©V£3±±iZòõ•íé|>æ¶Ròa`%\¥ºÊyhfw÷^7ž%‘¨ó´ôl.õçƒA‡›ŠŸuê¸>u!µ wTjŠŠ®äÖL‹G•ãW•è`™ÃJ®›Z*3/ͼúÉOÒÐ Uº%2Ù˜Û.-xâ=ÌÛí¶¿8böÚ(¥ˆ½ì%‹&ËgÞ3T©°•«ÓïîƒIÛ¢N*Šô 5l'S ψÖ\W–ÙQ˜ëêÝÓ]"Pk>à~ü$tù`neUKŸÂ™ÊT‘gŒ£ãIQó±ŸÙÔ¹[^7/ÈO-•™Ÿæ¦ú)½ä&âH€C(7>Raq[Ur;E8g‹G"ïþŽê ¨Ì[°”ìųs3°Ï`‹žë8Ž«Q?'èj4Â@Ò¶¨ÑHOŒ¸ë:ŽãÜ^ÑH·…n/½à´gŒ£piórCçrzmkáT\[Û:æT‘gŒç5»êÂ7/}î¶×ÍÏ~ücbsšåÒÄ‘p*{j;Xùùq1O?.I.½DK¡Ks-Zoº=¯½cyGAH’\°z­D~ i[”î¸UXÔ»*œŠþ®¸Iˆl}$öJE‘ óãQç¶>Þu g°»¦šÍC ñDŸ°ÐíÅ´Íûfõ×Ò&­‚ÎèªÒxµ0>ªÒñ‘ôlÛõùy]MmûVFÚ\²(û¥t˜Õ³TÃÓ»Õýq1›MÞˈˆhIíF^h,Žï½Ó5‘µœ…ë_û§ Ýž¨*wYsZèêW OÙ:T²õ‘Øs…ÂP•‘g¨-•à æ—åK"jßhùÃIÅץꆫbùE€ÍÐ Uõü‘©8[X~OvrûiÖ[°ªÛ$Oêç'àæ(ŠÚü6¦ÕÇH™LüÀ ¹ýÔ0JmÞ±ñ|÷‚ç 5ê½.šóRãò„‹_‘¸VˆÇÅ,©ç=ÌÌ-»|Ÿöj¸Ô§œó”†8 biÏ`£d†¶¸ZÞCO~Tœ§=åº6×§‰¤¹U:°ýÚð 6­¯M~º7îQIDATé¡¢Æ!á¢y6 Æ §ârIå‹0/åIôÇrÙþÖM÷3 ]Þ¼kÍÖ3S* e.qI’è|0Õ:-+LRopI¾¬ùWÔrº:ËHS³ä÷ò¢åÙÕ cö%Ò\¦pÑœ·ú4˜²œjìOj5ªÑDž„ûÇÛ7í¢~´LDgWS]Idžjñûö¿/ۚ˄•̬?]½Û]7•ËœM&áÈä%rÓÌ®ŸÜt íÝp8‡Dä÷6òÁר¨}çßTþ°Èh|dä›ïøéñ«/>ŸšF|ûy†ÚZôüïïä6‡Ü‡r}}~m8¨rã#mÞ‰ZظoCV]õ« PúµáÐüñ‘+­’i sݬmȬ+‘ð<Ð Ï ê§¶q$¼vÑ“ÚÍ ˆ#ám@K$âH€U7¤Í%IMNnóÄ"‡ÁÒ|k+Æû×EÌ9ÑæñÆú¹©9iV(ÊL!ÏP3Jçs¯Y€7ÏÙÀ3(1dY³»`]@"²-“¨†Q}Ò\g}Q˜ÖH\ߟ:"ëÄ€¿Ü_ÎYÑ|Ö«,>‡`¦¤•p™÷ƒQÌOƒöH8¨Òã#“­n-pŽxw´HÚu³Œuml}Dƒâ…J²ÖÔv\‡Ðæ·=C•¤°™Ð3TÉo5üHž¡¦X£6—ÖÚs«ÅÖïšXŽGÂ+Sz|¤ÂâÖ²äöªF# $m‹øôi}œîô&²-ó¼y!l¸nƉëQ$»kòîŽËx›}FÜuý%¶mÞZô\Åí_“Ðí¥Ö£öW$C×§þ²Ô +Zh1¯Z¼‡¹xúÈ ú¯+_GBµëk“’¶E©vD¡«»œØÊJñtcð—}b*][çÙ¼ÜbpdGÓ£“mËL7*ê`>.ìãùàKÅ»¿£(üU˜ÖÙþãbfö­Fw&Ë ‘dÄõ]£`Ä‘ðœ*}jÛ$WÃÈ($t{‹V~D˜Ó5\tbVc^çÆ ¸Ot(\4ÉoaõãÇz\ÌJ„¿±“úyG‹W–ÖâžR˜ë:Îm󮵡Åq$›}Ì©¨ÍacÊÕ¨4:³Åc°5(>Å'¦¢È§tigÅ|ë1¬ß·½ÞêY6=7ÐÕµT÷9âH8~{™?R¸ø‰¹ÇØ–y^? #λVéo'Æûv îòc>Ó²×ãÁüR¾ [=•F'>ÆæÑøÈ‚Àº>KécZϰ÷0_+À¶0ïZ‰õµ)˜V'è#NngGc]­ÞŸÔjD´\¶57 ¤„®îÚ\’.kÁ/¨%µeNŒCKšLä‰î²­¹2/ƒ}+û7SØôA•äËZò,¡ÛkÆõxLdp µo´ŽiQqµ]½Áeù’ˆÎ®nu%³h $à‰Þ ‡ÃápHD~+|J ±ÑwþMµ8FóG~óý?ý"~õÅçSÓˆo¿`D¦¬lÀq¸¾¾F{$TÔY8>Òæ­‘¨¹Êê6Ä‘pPåV²Q˜ëfmÀÁs6phÏ ˆ#áíØËSÛ€8^±}Ì ˆ#áõCK$âH€a|$âH€¡Uq$Àv0>q$À.Ð ðj¼ûÍo~óñDôÑýDD_ŽJ Yÿ§SýòË/ÑÎ?ýÓ?þüè~ú¿ÿï_}~þ¯ÿ÷ÿšáöx)þþïÿþÿ„óúUÃëÝIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/0000755000175000017500000000000012165514774022300 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/13_gnome3_title.png0000644000175000017500000010270412032647172025676 0ustar ebourgebourg‰PNG  IHDR¹ý!ê æbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 8‡þ IDATxÚìwxTUúÇ?÷NK›TREZ@¢" =4¥ˆbY×µìº+bCDeׂ?\ ¶µ±b[Yu±""ˆÁH'ôÞBz™Éô{ïïI†ô: Åó}žy’™{ï9ï9ï{Î÷¼ï)W4.>ü¢upþ"66¶ô¿²qˆTËÝõ¹§eqæÌ¡Ds‰5‚äÎcÜu×€†¦ihH’T‘yïñ^’J¯Ÿ½ÿÜॗ^J8§áÊóëׯ§¨ÀNa¾Õ£b”U‚Œ`2ê]$· }€Mu¢ºm 9Í¡èBÃAR@‚d0ûH¯¥Ñ¿¡Ds‰Y‚äÎc¨ªÊñ#;˜‡âtª÷aR ”1Z 0ØŠ0F™'ª§$ ºèHt1ÑH)¸-R`[dIæ\„1ϵ') HN„+Ïs”XUr³Ýè\V4É ’ ³sÑBœEÈqaÈQHáF´ 3ª# -órd(²!]@ÛóišN@@@ E!Hî2Ó4 ÇCqq1ƒ   t: ;Ar-I’Ðédt²Œèã#PcÂ2GíçÀÖm„…ãÔ鱨*6»îݺÑ6±-[¶lÁb±΀ˆŠŠB¯?«îââb~üñGÚ´iÃW\AHH:®Š·'ˆO@@àB†Ü˜‡>ùäÒÒÒ3fŒ_„hß¾=iiiü÷¿ÿõëý M÷|%:I–e ½Q1ȈN¯CuºP,‚]np8°ÙìèuÜn…¢bò qº\äää°wï^6lØÀÖ­[Ù»w/Ç'??ŸÜÜ\ÒÓÓ9tèÛ·ogãÆìÚµ‹Ý»w³k×.¶lÙBZZû÷ïÇf³Us^,0¤¥¥ñî»ï6k>~ø!iii$''_4u÷òË/“––Æ“O>YåÚÌ™3[¤¼Ï>û,iii¾Ojj*Ÿþ9“'O&44ÔïýÀENr;väÒK/`„ ÎpêÔ©U ßãñ™™Innn½Ò¨î~¤{!Á I˜u:Zf2a4iݺ5F£‹Å‚¦i„††NVVdÇŽlß¾C‡‘““ƒÁ`@Ó4òòòØ¿?;wîd×®]ìÙ³‡½{÷²wï^Ù8pà¢%¹–B^^™™™¸JÍêÚAKà†n _¿~ç´~SSSY²d 7n¤U«Vüíoã³Ï>#&&¦Áý‰Àч+¯»î:¶mÛFïÞ½iÓ¦ éééM"==ñãÇûýþ†¦{Á@óŽNdIB'KÈÈȲŒN§Ãåráñx0™L˜L&E!77—àà`ºtéBvv6111ÄÆÆb³Ùˆ‹‹#""‚ï¿ÿž¼¼ø O?ýôﯟh¸'§×ë¹öÚkÙµkŸ~ú)@ã bÒ¤I,\¸uëÖ±`Ážxâ $Iâÿþïÿ¸ýöÛøøãIKKãÕW_Ål6“––Æo¼À_þòÒÒÒ˜ø€   n¼ñFî¹ç®¿þzìv;Ë–-Ã`0°zõj¦NJxx8:ubäÈ‘\vÙe¼óÎ;<õÔS¬[·Ž®]»2jÔ(bcc¹ì²Ëä­L:•yóæ±bÅ Ö¬YÃ'Ÿ|€ˆŠŠ"--7ß|“O>ù„µk×òÅ_0nܸz§Q—]–[}üñǤ¦¦òÝwß1iÒ¤ ×벺ðÏþ“´´4bbb|åzå•Wøì³ÏX»v-_ý5wÞy'¯¾ú*Ë–-cÍš5¼öÚkDEEÕK†šÚA]Ï•É2oÞ<¾þúkÖ¯_Ï¢E‹0›Íõ.Û‹/¾Hxx8<òH­÷Õ&Ç}÷ÝGZZ×\sïþ¿ýío¤¥¥ñ§?ýÉ÷[JJ iiiL™2¥Æ|\./¼ðùùù\sÍ5ÆË× þ§%êSàyr$22’ÿüç?lܸ«ÕÊøñãyï½÷PUI’˜5kÆ cÏž=lذÈÈH<š¦±bÅ âââèÙ³'_ý5gΜáäÉ“Uòùþûï™=”uÜ6›Å‹Ó½{wzöìÉÁƒÙ³g—_~9'Nä—_~aËÆHŠ€øøxvnߎÕj%¶u,öï§ÏUWÑ»wo8@ZZqqq$&&rôèQ_x{ôèÑÕ–é×_e÷îÝ„††bµZY¶láááŒ5Š9sæT@%''³zõjöíÛÇðáÃyöÙgq»ÝüôÓOµ¦‘ŸŸ_«]–¡U«Väææ²fÍúõëǤI“8pà©©©uÚNxxx嬃fß¾}lݺ•þýû3eÊ ؽ{7;vdðàÁäçç3{öì:e¨©Ôõ\y’_±bÙÙÙ˜L&bbb¸ãŽ;êU¦ôôtÞ~ûm}ôQV­Zņ Üþ¾ÿþ{þú׿’’’²eË$ÉGxÇç³Ï>`ܸq¨ªÊW_}Uk›q8ìÙ³‡Áƒ“@qqqµå´Z­ ê[Ÿ‹E0ÎùNre¡ÊU«Vár¹X³f ãÆ£oß¾lذ„„† ƪU«˜1cF•ù›ÔÔTzõêEÏž=Y²d‰¯‘TáäååñË/¿’’B‡°Z­ôèуo¿ý»Ý^åþú¦Û®];HZZš/t´fÍÞ}÷]ÆŽË‚  Ãív³oß>V®\Ivvöy@l * ªª¢¡¡×|×µr§ÓéÐ4 NG`` n·»Ýަia6›q:F4MÃb±PXXHÏž=Ù´i‹-bøðáÌ™ó2<2Aƒñöœ0ª*÷ìa׿¤ob7 bó)ÎÉ£wïÞìÙ³‡… Ò½{w,XÀå—_îó0Û·oÏÝwß]mùrssÙ½{7Ï=÷\…ßN'×_=;vô‘åáÇ}÷}öÙg,\¸ &øH®¶4kµË2¤¥¥ù¼öòÆoгgORSSë´ŒŒŒ:ËYÖ¬YãKoæÌ™Lœ8‘éÓ§³}ûvÌf3+W®ôÍ×%Ãüùó«míÛ·¯õ¹%K–°cÇæÌ™ã“møðá *Ó_|Áˆ#|aËʨü›7ofÀ€’˜˜HûöíY¼x1ãÇ'::·ÛÍ€X³f ™™™u¶!µÔvm6›ï·ÊålhÿÓØú8ÏI.**Šø”Xžü6lØ@ÇŽ}óuM] ðÍ7ß’’ˆ#(,,`Ñ¢EMJ³}ûö\y啤¥¥U¸–˜˜ˆËåbÊ”)Lš4‰iÓ¦1mÚ4Ö¯_Ï¿ÿýoöíÛwÎ&àJ,öoÛŽ¤iDEGwÉ%h^ÎçÈɲLpp06› §ÓIhh(n··ÇƒN¯GÕTl6v› ·Ûíkøa¥«ÏöïÛG¿Þ½HNJ"?+‡Ý»vO˜DÑ©2T×ZRö“'O2wî\~øaNœ8Ñ`ùW¯^Mqq1#FŒàòË/géÒ¥X,Ö¯_OJJ 9r„mÛ¶Õ*‡ÉdbæÌ™DEEñÑG¡(JƒÊQ[ÿs>Ø‚€ŸIN’$ÆOII 3f̨àúr÷ÝwsÍ5×ðõ×_³oß>Ìþó¶oßNPP'Ožô-TÉÊʼ+ÍÖ¬YƒÓé¬vT¦ª*ß~û-=ôš¦ñúë¯×Ú9Õ'Ý;wrèÐ!ºuëÆ“O>ÉÎ;‘e™ØØXfÍš…Ùlæÿû‡æðáÃÄÄÄ@~~~•QiKÀ;ÇtëÔ Gz:Ú©SìÊϧ$?½Ë…!,œ¸¨("‚‚ˆŠŠ"Äl&"2“^Qƒ£CAE§OàÌ8IP–…â-q©±YŒÙ™ìݶ“K{]δ'¦spßa0жÚ°à? qØ»‘¡þ€ 9Šª˜i_L†¬gÇŽôìÙ“‡zˆ#GŽ0räÈ•±¬ói×®W]u²,3dÈ*÷uèÐGyÇÃèÑ£ÑétÌŸ?¿^i”uPµÙe]¨ËvZõ‘¡ºvðñÇ×ú\MscñÙgŸ1|øpzôèÑ`ù].?þø#7ß|3²,³téRŸWùÜsÏùæÃªë &OžŒÝn'22’N:ÁæÍ›ùàƒ\†ÚúŸºÊáïúh굺²GtèÐE‹U 8€¯¾ú EQ˜0aŠ¢0uêT¾ùæbbb¸å–[èÑ£G…Õa?üð«V­"**Šo¼‘^½zÕxªÆâÅ‹ñx<(Šâ3öšPŸtEá¾ûîãÛo¿%88˜‰'2|øpbbb|‹5¶mÛF×®]¹óÎ;éÛ·/©©©<ðÀFk-MtÆÀ@ÚtK"!©+­Ú´!ÒB|›6´éÞ )2 ¦¢bJŽž}7îÕi¾ëÿÒp~³÷·§Ñ~”ÐRã±omGÆælŒ!ý@m ú3ÿ©ÏYü¿ fØè¡(ŠÂ»/}̺ÿ"ÑÒžÅë˜ÐÓIr3ÀPD·ð\n2”eK—°|ùr¢¢¢:t¨oóm}OJÙ¹s'³fÍ¢°°[o½•””6nÜXíÈ|øðáÜ|óÍäääððóiÓ¦z¥Q»¬×f;-úÈP];PUµEeWU•çž{Îoh.Z´Y–9t臼 ]ÊŽ¢[¶lYµù<˜!C†ÀñãÇyê©§˜2eJ£#05õ?çƒ-4 E¼jç¼EYƒÑ4 ÅãÁ™—‡3'—Õ‚GvâÑ{°In<ÙV\§-Xr\¸Žeã>”‹û¸„ÍâÂåV qD ª­±iQä¡Pˆ‚ `ÅMVŽk;)$ Ñ/EÐEjMgѳR[CB€Ž1áÐáîª:¦/Áƒz³eÛvŽ;NQQôtQ~ vcÅO?ýĶmÛ˜4iÒ­Ï—_~™””ÆŒsN4 üŽ ^µsAŒDJWNDF¢ 2áÊ;MNÆ*²N¬ÁV…å”›â£!îï-׌ÛN™BUê©„ª`ÐrAËF)Ú$Ó =]Ñ3‚È\†,)JÅKJùȺS¸Ãn5aè…©S4¦Î]iÓ½3Á ±lص‹ÅJrr2k×®õ-TË¥+"88˜îÝ»ãr¹| š‚ä.¢“edƒÅ-‘•šŒ3édgfâ²dáÌ•Q d"¬Âlv‡‚ê1Š[ò`Ä^§ Ë*ª ½B€ÁѤb2ê 4™2¡É:Ðˇê1…DcŠF ÑÐÇ…bl…1¡†˜ÖDÇÓšµ6’Cxx8û÷ï§K—.$''c³ÙÈÈÈJ+‡Ù³gË|pÎ0 ’8ß©UU°•Xp¹‘õ—` ŽÀ¥ÇäŽ$ÞÔc¡ÕbÅã0 ¡ —.^‘õ&$ƒ·ŒF'†@³Á:ôÁtf„b2Ó }T$rD†ðHÂãÛÑ:½N‡$K¥1n £ÁˆÃá 22’b±Xؽ{7›6mâ©§žªpÒÌïóçÏgáÂ…üú믢2Z´×srç-*Obkš†ªz°ÛŠq9Kp»ì¸œvÜ68e‚t¡èܚÉÝîDt²„„ŠN§C6èPd Y/!$0 Óëe²NF“½!  ×!éuÈ::£ ½Áˆ„Tåå«©©©ìÞ½›‚‚‚ƒƒIHH`äÈ‘DDDˆ×ôœkˆ9¹óU_ý¡q–÷44UÅ£((MÕÐôHš·Ç»²M–¼ž—$KH²Œæýâ êuH’ì%¯²!O•1¥iÔ„ÐÐPߪJ§ÓÉ?ü ”' p^@ÜyŒ¹sçŠJhD¸R@@@@àbÅÙp¥Édâæ›oæ†n gÏžDDD!ªH@@@@àÂôâ$É®¼é¦›xùå—}–AìÞ¸¡=z´ïŒGAjä¾}ûŠZ¸8=¹ò/Þ¸ð‹O{rÞ2! Оœ¨‹Ö“1' Ú€€ÀEJr"\) HN@àb…W \¼žœÅ ˆ6 <9 äÊæäÄG|.´¿=9ñ}ìù?ÑgÀ †ÜðV‹åé´l¥Ï€AÜùéÿ¦[´¡Bºs&Œ¢Ï€Aü}Mf•{w¾ûgú Ä Ïì8oú®m@ÀÏ8ú¿ÿ`ÏùŠ Å“èg6´€ {ÿJ’í¹,¥²tË^¹îåáôO ¥ßg:3¿ü­ô^©^2,¿}<³²"X·b¾ßë£$sW 4ÝðÞâS„w¾MÓxï‡S_Чx=/nÍõývðÓçÈ“b–Ž$Íóråƒï/özrb €€ðäü[öWl´¸¸æ•»0=±”åÿûíÖ'p¬`è„ç:¸{¶ïÃ*…pÙ ±<úð´ Ðææõ9/qèÈQŽÏ@ÞšäAxæÁ ’½dà²æãwæ±lãrJ:]Æ=Ï?Ë`“7ÿÌ_æqǢÜÌuÓ1¹7O…6Æ"º†œ ‡9HHû+ze,{Ó~æÑ§6ùžùç‡ùb}:ý¯½…Œ,ýäY¦ÿ”Ñ(o5eÖ#¸ VðÆÞŽ|1‹Cw^_ñ®ZòLºý¯\€¬àáîçáî§[¡v9%Mó°«0€!ãoçî‰) WE:ÕËÏ…Þ:sr¢ øÍ<¼ýs&!mî%J† ÇÀßäóÿçÚû“|^QÛ1ÓxêîN Éôyìž]ûí¤K€ž§>|ISÑ4Ð<¢Ïà‰œü%mD<ÖÌYmcØs_òê¨4 $YÆípàpyÓNºçM>¼ý4$¢Æç›C+Ñ´«±žþ˜µù®xf>O]ÒdÌãSXüôýw¸õaȪŠZéz]yÊ’7¤YÿgöÖKúÀÎINŒb„''Ú€@mHuð¯M9„wzˆ'»Ñ÷»=¯+ËÇ¿È÷â†É^;Ë\ó1ï¸;ãÌÜÍ7+ÓisÍl 2…aÞÕ‰Y»6³VÎÂrl+nUóÙhHüdº­`óë÷1eçHºÅ’uò ?û,Ÿ WÎiš†¹í}t \ÍáïþÉ ùÃég¦8'›àÑ0%®âýÅ¿}È ó³Q ÓÙ´ã :c t «®æ§b 1cBñ†W+…6ëÊ3ª³å·t¦¼ò=‚´ùÃ$®©å™I4{×Öf%]CÃLìB,<ð ŠÍã¤ÓðéCp:¾Î<†£ÉLKÙ[ ]– –û?VìÌ!åÓ˜?ójT ¬Ã#¼rßõglåóÏ¿fwq c¢ËuÞ!¼ÿénØ™c›VòÍÒuäy °×ý>DIƾz› ýz½{-_.ü‘m‡N¡JUÉ¢è@{¶¬eûñB’û åÙ¹ŸÐÖ ×8@¬‰oêʳû£gX·vìÿi!KÖíæx¦­ArÖæÃÞÚ'Ú+ÃŒ3´™3g ¸à°%4Ôoiõ).*Ð$Hr!ÁÜ6+¥b‡‚•Üô¥ Ÿ8›¤{>aÁ=I€Šâvãpº|¡E½1“Q,ª((²b§Ä®”æ£Çd2¢×éUQq:ì(è0‡¡8K°¹¼CCp’ŠÅjó>+é0˜Ðédd@Õ4§ ‡§¢¼²! “ÐP·Ë»´L¦ (X­öjjAÆlFuÛ(q(uç)é @§“AUq;l8­æg=æ{ 6Z«>l¹_{É_g‰p¥€€hþ°!ÅNq±½Úkv‹; –Q™âÀb©~`åvÚq;kËÇÝæ®æŠ‡âJƒ5—Õ‚«‚{°Ûêöú— K ë: ŽšŸ¬"C­yjl%ÖjÚcMϸ(.vÕKAÑ·áJ‹pСzÉPl!žœ@‹š°¹–†ØB ÐBÁÎ-ס8¬XЍ–"91¢žœh-ag. ]¢"Z’äD¸R@@œ€ÀÅ ±ðD@@@@àâõäÄ(V@@´‹–䉌Œ5!ð»†h)Éiš†ªª¢&~×m@@@œ€€ 9Ar‚äÎÈe[êóQÕ ¼Ø¯ýú½ÈU­ò½!i5ççB‘³¥ëáb+Ÿ?!êU”[|´‹²¨àÉiÚFæ |”Ų\i”;žW×>N_ßñ¢ÞgÔÊß%Éï,\—LýªÉSÓj—Sas>Ê"&Ô˜FýåKçë{ÿÀ›ûåzÉÖ’¨R~§1ú¸P=¹²²V¶“æ¨×泚ʰ±ÁmàB*·€@µáʲW›«ê8^I}Œ¾åXÓиŠÇ~ý•ÇJ¿«¾W¡khÍFrµË¤V3¢×*É¥IÍ'÷¦9à½Ý™²àßÜœ ¡i|=ùóf«ÆÔ?õS>´Ms:}1NjÇ‚ßDÂØùUOr5Õ_U{:I®ú24Æ6´hïÍLrµÔ4m¯ÎbÆóòšG¹ªO.ãëû¸ý¾ç’ø”¹7%4«7²é•!ÌXRλePË<·Í>¹_Z=ˆµÃ¦³D–‘ùéC@UÇòòšG+h½dÛÄ/ßt¤M¬ŠªJ@7Î}´JçWŸ:©|šôŸ¿{# ’ä«û%ryñ¬ÜÚ¦WH™±Äwmì‹?ó^å}… IDATèUÞº“eo9Ï>—ÄCŸ¿ËM ’_ô¡]9±ê÷,Þwœ“ªJl¹úöÉWÅv6W)OSek † âÍì‹üòXß õ]ÙN®ª¦|ué¸:ýUW^-ãkî¿í-”Þ×Ôú¨©ýÔô{íe¨©A‡¥u( p>@.#9ï§ÒH­Ê§òõª÷ŸúÊÛH’îŸÏªU«˜Þ¹û¾:UMzõùÔ%“7ÏKä yRƒœhWòÈÏ/1FUQÕ1¼°r%«WO£O…zh˜l²¼„)) 2‡ŠR­|uÕ‰¢œbýñæ¯\ɪU«XùÂäïpÛ+›*Õ¾tÊä>õÕ}¤ÌX‚:æV­ZŪU«˜ú •ªÏ¬œ?ÝÙÇ[³¿æT5²6J›R½]÷vÄר³šl§ñ²ùez‘—ÌྯN¡i}j±“ÆØ}ÝåU”¼rÛ[ì£;÷Ï÷ÚÁÏ?ÏD›ýJµvÕ´öÓ”2Ô¬ÃòuØ8yÅG|ü÷Òc½ÎNÔ•9AKybĆÎðáÃ6ìU6«jÅWœW~幦¡ªélXµUíʰ¾qhšFÜ w1FUÙ·j隬®]¦jóì;Œ®e`5rVýÞØIÍ><òÒ¸rÎãYïÿ:½t²¾~uñLœ6‘ø2}\9ˆ1ª ?üZ¡îUu wÝWn1ÀÙôøÃ•¾ßûL›Fªy&.‘KöýFF£Ê]µ¬#žXJ×û>áç·Ë䯮~«×ASdówX¯ÌnÎê¥&;©‡Ý×Víå-Kôã´³vñ¶W—šŸô5|øpFŒx‚¥eX½í´&ÖVn±øA|Ϋ…'ª¯!¾°âaúT™ÿR+Ìa¨TþžÎ‰ý Ë™{×Hæ–î?Aºª×à`]2yó,2ÔbÛÐØ_£œ•¾7en¡÷T–/ŸêgËŒ~r)ûßù‚M×?Ì•õ¬íô·L¹ó]Ê•C®µË¬USþÊuWþ™ê~kª>¶¼1‚'çÞÅÚxkb|ýòÅÿ²5uNÎg7¥z‰­±Î«·ûjm°–´*§£I½¹åþn,ý÷Rž¹ÔwmÌó?1µOãÕյMÛ¿F>Á h»±5¶£šË'æí.¬9¹:VWGb¨®åùŸ¦T$¤FNÒ×-“7Oád†Jïx íôIŽÔ*g3­ë=…ìÏ›£ŸdIêDQ7óæï²Ÿ$îûè_Ü/¡i[*¥SÓÜJÕò×:ÖÄrÕ=ßë¡ç¹ö‡'YòóÒ'\OõÈÿËÖd’+³›¤Dâj­óêí¾Z¬%­êÊ{ý¿Xv}i]où×>õ#?<ñý«³ÎÉÕ«íÖ¤ÃZÊ-HNàbš“Ó´Xú MB–ä¿ 3ÊÍ7mæQo°Ù_s@å>gó<ÄêÞ<36®æ,×2wX÷<_}>Õ–+ãGÆô§·¦Õ³NÎÎm”É“±ð¿üXkª–î—[|¿§û-›•úÌ5]šÖ›þc@>ô_nQQÕÒNŸ£œÊhHy&›¿I®Ìn’†ö!¶†¹7µV»¯jƒµ§Uñ7EÙÌS¾%½Ìžâ颪g £çäf§uX{¹Å¼øœÛ9¹ ï“Ó4Ê-ÐÐЪŒ «^¯ü=nÂëüÐæMÆ=ý7ÆÌ+ë@F3{éCô¦á§½—å)ËËxzì²rRiš’DÜ„×yîĵ<=ïlžÔ"'Ron¼7‰eï{Ó,ŸVÃe[ZA.ïªÈ{ùðÁ^¾²ÖU'Л?¼—c}yË<ê.CùZ<›þÓŒ)¥Ë=ï󙬯œF:®¯>*?ßëêkaÙO,ýô;nì5ë¿—5 ,OSek ÆŒãÕËèçx}B\©îª·“^5Ø}eìrÏû¾´ªm;ZU»|ðñSL»öÚÒA¨$qïã×GãÞ”PSV÷{Ým·¦ö‡Ê•»b œ[HÓ¦MÓ{ì1QöÇÇû-­n§O‹ m0nåíqO³Œkxî‡Êô{F]ú¸Pur±ž]Y}5Vgçr¡€@}Qä.\xÞuç£L¿gÔ¥ U'«ÕG_-¿8Eà‚ ¹2cø=C´Æà îûî;îu(p¡xr¿Wˆ6 p‘’œÉd",,LÔ„Àï¢ \¤$WPPÀ±cÇDMü®!Ú€€ÀEJrñññôîÝ[Ô„À‡Ÿý˜–h)Émݺ•yóæ3n¾ùf¾úê«s^BŽóWŽðððfÏÇ_m@è¯ñú{ÿý÷E½ ýù½Þô½{÷fÒ¤IçD yóæpÎdrœÿr´Ä¢”Sè¯éúõ&ôçÏz»÷Þ{½[ Î ·RÈ!ä¨-±4½9Ê(ô×8ý‰zúóg½é8Ï!ö_ ý ý5‚äD#ú$' ™€ÐŸÐŸ 9oµ€¦€¤~ŸçÙ¹srØóÌ3ä®[G|BR~>ê€\òàƒuè ZÎÐÈvïÙɆ뉌Œâ¦‰·49½ã¿£°°áóááthI‹•û­·ÞâðáÃ~ëܹ3=ô 9Ñþ..’KÛº…mÛÓ” ,©D…;ˆ‹¶¢“5£zÑ¥Û5hý"ð®ƒG  4EECEÕ@Uì'Y¹yÄÇÇѽ£ÿ‰dÓ¦M´iÓI’ñžE+QáLZIB²W®äø³Ïrù„ tzê)ôf3jq1y6°|ôhú¾õq£G7J†‡šÂo¿ý†¬“yøÑ¿cÐÉÞ}U€O.©t€Q&£$I8Ý^Ÿó"ª¢Ò«wožyö™ó^ŽsÕÈvîÚÁ˜kDZæ—Õ,_¹ŒQ#®iRzùùù ¸z`ÃínóÆfìÀT€S§Òùð£(.¶Ð»wW$ß[Ä5¶n=È?þñ$ùóŸi×®-:½I’ɇ$Øê u sŒ…Á·FÒ>)´‘ï$¼ˆInÛö4þþøÌT†ÜûPm?ãÖ¢Ð"?{;zµn©H¿Ý©C{‚‚«½¶lͯœ:y‚舢#ý»¿Êh4Õªš²,!Ë2’$UøXdÏãsEÊ0"“{à<~—NÆãô–œLçÌLÖÞuc¶l!81±Á2œ8y‚Gy„#GÒçêA„ø^\)•3ð³C©lÞ¿E%vŽìß‹¢(ü´ü§F×EKÊq.ÙÚu©ÄÅÆÉàAC9|ø€_:§ÓQïgL¦€f‹…ìLý’¥ÿ‡­{x_b:÷#9¹êqÀ€ËHOÏá½W%°`#̘¿¼DÏ!·’;_¼.UÃãÑ(ÈRرÒIÑIÙ‡£QJl\ÿwáQ&ArÕ†YŽG§Ó¡iš¯3Ç×i•5A ƒtš y%:C šñF$]$¡­~A§íF‘Ú¡’ÐdMF#§ƒÓ§3øí·ßª\?““ÇMãÇòé׋¸aÌHLF£_+L–åZInûsÏ€¾s‰Sæèó(Zñ ‘)7Óî¶¿qbëVbÙðøãŒX° Áù«ªÊk¯¿F×.]q{<È’Tá Ú¥¼R‰T¼ÿ˸=*‡FQTµñÆÛ9T·Ó?†3'—„'žÀ|E¯ÉÑÒÌjµpèðAþpóQ…€€róòš=_EQ*•t:j3”_ÓT–Ï’±WF“å¾”-ÅÝ))VˆŠŠ¦cÇ.>-–¨8pæLLñIô ÝGY,ÿï“‚äÎ#Ø­ 뿳pj¿JúÑ3ÈÑEu#÷7K„G‰pe #Ðòdæ-´ÞNM+ ÓI ²dE’œhR"È‘€ ˜p"aoš¤ªwôh2àrºiݺ5f³¹Êm%Ûvb2™1¨?Ûö ÏËüNråëD.Gp𦑽nmT δ¯ØþÁ%ôšô$ù—v%ò²al|cŽMߣ·”—–ÖÈÎIÃãñ ª*²$a0Èü´åH½žÛ·3Þ·N¨ªZᥗÍ&‡¦Ñ¡ða´¶&×gñ! ^øú^}ë-GK7²µë¥¿«ñxt:k~YE÷nÝýšG^^~…ï7¯çÌ™Ì í¬Œ\4McûŽ­Õ¦“Ø&‘ÃúVc6‡0cÆDDFðÏçþÎÄØ\¬EùçE'ùà[ë8”^@—6a¼ýЀß%ÉéŒ*YY§ùm[$‰EH¶<%FÂ;Ù1…4¾­û3—DX„ŠóÄÕ<}S÷f­““œ¦i¾aúY@‡*™Q‰Fï9†&¯}W\ŽÍèMQ 7IPçæ›qg¯Ã!Eµ€’’öìÙSå¾ì¬,|·˜v‰mØ·{/Ú&ágON«âÅÉ’DAa!²ËEP F@ …œ%ÿàLŸ>Ä^1Šß6þDþŠg‰mùy ÛGúªª’Ô5É;Ð% :‰qý:Wñ44ï_ÍûWÕ4œnŠ¢¢(Š×ƒROrõ•cÿšÇèyš‰+Ýô³¹èv“zÏ= Ù¼£Þr´$É9“InnúBQ²²³Ð4Hîq¹_󉊊¬àÁed¤3ý±'TVI’xí9M ¡jV'DEF¡×é˜={6§úÎB¯G’$±¹¤z‡Q[B‡Ò‹˜uï04àÙ÷Vÿ. NUU–·ž„äb[G³îó^èõ.’GC·¡DÄ6n¡¿õ×ëÏcâ«[‰6råWLýáE^ÇWGŸ{’“$ UUKIMö…Á$d@%ý1j0¸¶ ×öqìh:]{ÜJÓæÇÜ–S˜#Úàöt#88½N&99¹Ê}ÉÉɨªÊo§31˜øuùG\Þ*M2bŽëEëîã›Ö)T"6I’Ê^ ÑˆÇã Ø mïü±WŒ"gßrÚ÷ë®X¾xCè<ºFœWŠ¢bwyXµíx½žØ#ª•†Õ&…Áê#‡íøgÜÔe9zÎÃÖ½ù¸.qÓïºPäc=p—’m}äh‰Nrý†µ\Ý ¿®û…”a#ðx< ~Iý™[nºÕïù•÷äUñ "‹‹‹êFh¨ÿ_$Iƒ¡~ºÐÎM')P.»›ÏW!4:bã1µq ËâRS"Ãÿ*Vq]˜ªzÛ_Y¿¥ÓéZLšGCqÛ®ì¤×ø5dŸ>É‹ËÇ36)™ä¶&¿æWo’+ó`$Iò®–“Ê{xÈF4)7Q(t'0ØÀæÝÅtNND£i‹N\¶|J´P¬Á= 0™Ø¿YYY5Þß·o_4‡Ÿ|F’5 —[¥0+¥É$W6÷$—#·2²  CîÒ…’iGõ$éO³8¾ð)´£³!ÿt¾ùy6þò=ÅEû0vïÖèÑZ™q*ªŠÝéaÀ¥‰•úR/®ÔRK=:‡ë¬'§ª*šÚ4O®692ÿH×.ßòø»°a§èÐæÜ Îà¡d÷ýKƒäh‰N2+ë »vï$8(„S`iˆp]:w%$Äì÷üÊ{rR)LÙ²ÄQ>¥ü±–ÚG.š¦¡6qN®&9Ü…{¹&ro/tóÃZՙû3ôX¤|·g®é€ZêQÖGŽ–è$û÷Èî½;IlÛMÓÐédNgfð‡›ÿØ,ùy=9Í®,_Æýû÷×YIIÝšE®k¯½¶Úü¼µQ‡e·$ÉýÞèÔíqòÝüÄÇš‰„ÖAf„Ôr„ÑWG^/ÍétàÌ™3¸\.l6[­^\³èÏíÂQŽB€€ p60·‚Äv ?ÎD—Ý™‰}b[†äúöéG\\gΜA’¥Ò•{gC–eûärÞÝÙˆ}Ó@kîb.(Ð"ˆ ÁUø»×®ÀañΗ¨rèAú` !1¤¤¤PPPD V@‰Ýƒ¦â[*ÝD–C.ónË\Y¹; À†G!ü_ÿÂòÝ”Èúœ˜­:r§>HïaÃ9 RQKWá•yPÝÚ¶ª¶±—§VΓs+Þç5Mk’'W“K:íô²fssjdññL¡‘|sàz®ºâ2bâ$GKt’ƒ“)ÅãA’$~Z±Œ!ƒ†6[~‘‘‘>MUöä’’’j­‡2Òif¨ìÉ%8 Ð9rä9'¹ò‹Lª£4«Q_ZáZs,F©IŽÚàO9<7?/Ú‹š‹UŽ /P¦•ܨ8 ‹Ý…[Q}$W—ÃC‡)..FQߺ‹ÅÒ¢úSœnò÷»‘Be,y ½‹˜î'°2°%`±¥cŽoC«Ä¾:C¼Ò•I_ÓQïpå™3g¼»&—. / Qž—;K~’ß:±û†‚]oa4ÄjÒcØy?æ’ÂÍh¡Z©Gáõ*Ü.7–Â",v~=ü*{Ž;UÏ`³{7*Û¬V¿xrRY¸²\¨²lÕe«V­ðØc¬k××{ïvô(†tŒFò:tàðàÁÜrï½6.L¨i(¥¤àv+”ñƒTi[àÊ/B<¥äÔ”9¹êäP\Å´³½Áá#Gxâ=E…9¼8Y¦C#óÖ'¶}»_ŽÝåi-Arš¦‘Ô¥‡äØoLj 66®™ò‚<ß– EQ+”ñÀ5xSg»ónÝšgEZ™'wÖsóþ-#ºââ"bbb\·þÄ¡ô"^™2·ªùºY–)qxÐ4xááxÔ2›÷¶§ßûÙïuUY·¢Õ¨oË¡( i©G)89¤5¹ÇKp„Â&7¸ sˆkÝš‚˜Ë¹÷Çݤ´5"£cp¬Žââb<O…é§ÐÐÐöä8<*ÅàA†È;¡`7«NÐÚìõê‚øK/Å]œÏ¢—2áòƵÇ/<Ñ$Í·÷ªü5Ê“]©·ã—°Îžˆë„,ëÏú…’·¡{[Ð!:LB‚(«ŠnÝ56¦¶Áj;‰N’°Ûý®ôíA+ Y–ÛVEÊí·“?f ÇÇåra2™èÓ¾=QǎѪU«&ųËBFÏ=v“cãþ’CBå™{ȰüÊß^ ¡ ÐÆß®)`P²‘ɯ›9S´ŽŽ—œaÓêŸ,GK\@@6›3Ù{÷0ê·7kP­‚'§TôäºuëVƒ÷Vj÷¥ÛUš#¼·téxçtφ(Gåû¿ØRÜàÐ`sèÏêT8‘cóFrTï¼³¢j(*xTP ª¡ªpIl`³iò\Éárhä'!>–ƒ[‹ˆn¯2.Y!óènÔ(‰ÏN) éÏOÞÉ´Ó:<ˆ€ý«I0™J¦nèÚµ+ÑÑÑ-ëÉyÜ(ù@¹Ù&G‘èB%‹tˆlç•Ss¢ S°Óf$¹ò¸\a$ßñMåq*û½ép:JPÜ*´¤ú†A%¢Z…pü ‡€›Åž\y/®|ý”ý5›Í˜ÍfÚµk‡Çãñm*>~üx“òWµ³a¦¢)/#­,Çý7”оÓn¼÷V»áÉg˜|ƒ‘)o…pô´LR—6ÞáÕÈ®žáÊ=;·ÓoÀ Ž>HΡƒœ˜3‡v?~Î<¹òäVöŒ—“Ð40™üµM« ‡Ñ£GUðÜÊïeÔ4œìœs®ìÒ&¬ÚmSoÌÖ£…üºaWµÏø5ÉQ×3þ€NÖszW8îN¹´b¥OJ4QQ\$WdðáÑnìL ÎÄþbx¼'7ét::vìHÇŽë\ôä÷öçñTIÓ ¯HtÇóSéÀ`ïÔÕ­°ñÛ êEr7m`ÀÕ½#È2Š“$ï^oÊï•+çÙù)\év:ð8K*sWµ„Vý¬% šŠËÖt’«äÙJ5]yÃ1 èõz¿Kyªé­ê9†%ŸaHÊüáÞyœ8í¦sô)þy¯ž§?`ýHêÒƒÁP£ÜçÃfðˆ^d妉$ö½ŠQv;{öîãÌ¿ÿMä¸q´yôQÛ¶õ[X´¢'Šâ©`/]»võym•=9I’Ñëu¸Ýn¿¿1½<™•Wfff`µ–`³Ùe3þÖ_usZ£þ¾´B°ü¥1Ín3çrÃù–Å EÎ’º9¸bH !!ÁxTepyT »Ì˜tàÔ$‚4Ö)hn¯í%$$ЪU«z­êõ{ûSÀ`ª˜¦Ûa:‚̆™‘ƒ1êâ8¶=‰ÎÊÕÜÞ¿™I®¿«‰‰‰!77·Ô‰*·¸Döùu¾ð¡o[?Hß­àvZ«á³úyr&ƒJ‰]Eփ懳3+[eO·òÆyEQðx]Îæc­xbæÝŒ.=Œº±r´ÉÚ¼Å÷7>1‘Þ ¸UǪUìMM%aêTâîºË/$W~n­l¾¦üõ}ûöW¸^ö7((ˆ°0¯'SeU¦INõÍwŸžìl=…¾çÅÓ$9"²yû©+˜>k>¿lÓ0‹yï1+¶èyãK¸öÚ>ôéÓ‡üüü&ÉÑdâƒB§KàÈ1²?û ,sZÓˆ ᇃo½E@×®Dôëç—qù2•7GMÓèÚµKr YÖ¡Óé¼Ç¨•vþ÷ä” ç W–zoEE…cµZÎK’£Ò€ábÆíÓ“‘%=R5å5›tÜÚ-˜+¤âÀ€¬¨ô ÁÝ’º¡7èÏ©þTwÂRÖËè*\Ö 3‡ôáщcùËQ~ɯáç¼Hr¹~^òm)@*w˜+þ#9STwì{ Ð×Û{«üoPžâz“ ·Û± ‡6KåB–Õ‘[Ùÿn·›Ó§O£×hß¾›¶m§}BááM;ùEQ<åHNÓ4ì%%xÊŹËÅívû¼HÅíMCCÃãv£ÓéªÜè$üÕÄ+ïþÀⵑ=üëBNåxðU;ýú÷æŽ;îÀív7YŽ–è$ÍÉÉÄßp™ß}Ç‘¹séMëÛnC)( ïÛoéÉÑÿ}Þ$’ó.NP«„®5MW©¬’tÖã3¼¯´Ñ4Íw´–¦i¬ß°Ö¯DçõäÎ.0)) •mñ(..&+ë ïø>cc·ž$§(ŠoŸWÛè&E°~Sż%éâ{§¥ÑTs×]PP@Öþ͹Œª I’HHH$9¹Gƒ ®9ô§) §„β$Fþ™`жãúÞáÖ'Úø5¿/<ñ’Zù9¸³áJß)(Zù}rMC«ŽÃ9²ø=k÷ä$j¼*Qd =………µn"¯—'WKý”5<»ÝNAA!—_žÌ¯6Ð6>ˆˆ¦Ÿ¡©¨ îráJMó®Îó( RéæÎÊçñxpºÝ¾ÿÝñ œL?Õh9R\Š©ãC,Ýþ8z]!ÏÜžIP‰qÓK aÊ”)Øív¿ÈÑ"sr×\ƒÓé$òÚk ˆ‹#X–9þé§´óM²¾þš½Û‘#Mê4###Ù’¶©†¦VŽdÎzqÞ½L2ªª2UžnÕø¹Š²Z 6ªääæwö-!•ßRTTXࢌ%笓¬0Ø*%¸.mÂøËóK|ÿW×./8}ú´w@‰‚$éHLL$99¹ÎMß-æÉi$àQqd™ÈÜГ«º?ÍÌiš¥>LëÞ F¹•R¹ÓOdüæÉE¶¿ —R\¼»‚Y™à¤jH¯ì·@Õ j ÌÌÌ&‘œTM˜²rƒRU«ÕJˆ9„ÔuëiÛ&¨(ÿ¸Þ’»½Þ«:§Ó‰ÛíÂîp`TŒX,–*Äâñx°;ì8ïw·Ké†ÐÆbä°¾¸íé¼0}kV,`Pïn|2ˆø„8L&’$ùöä4UŽ– ¹Ó§Oûô§7Žý‹‘Hú=÷@±Ãë”§Ó‰^¯G§Ó5¸íÐþ’ßð½cçvß[å¥÷*׎ @Nn6Û¶§Ñ­û¥MÕª»ùçÿÍÀæª{ãÏM  ҹΫp¥¦i¼ù@_>¿Gb«Ð©ëõx<ôz= mèÖ­[£ ®9ôwhãfFÞ1·R@§Þ¯ðÝsW7o}Ôç¦Ö­[Ÿ3…¹\.‚ºÝÍ¡Ô)ÄÆ(âN£‚¡ÐئÖó.ýBB¥‡X;œ.Než¡cÛ¶~ñàÊ0íÑGyeÎB‚ƒÑëõX,}|:.· UU«%·ÛÍZ‚ÃîÀírá69}út£IÎåtàò8)]òûà IDATÎÞŽ=íÛ]ÎÊŒaLžšØ,r´É–6­Àøñhééì^¾œøÐP$‰ô¢"bÓéÛéïÎÔKrÞò zt:oó,Ë«¬£Ê8Áž½;éyEo’º4îx/ÞHpHV»‡+ã‹è£­­ÖË«m´WhõÖªÅ;ÉêÚÜïØÊ`µZ9qâ½{÷&<<¼ÉÛMšC+þ»¤åH¿¶‹WôìÅKsþÙ¤ ®ìÝ·É ?ªíätÁÞ£kK÷Yihª§tÔ« © h ¡¡²¤!¡ª"ÉÞÙh-P"©ïõ6Ú6†pOœ8QcWö›ÓíáTz];]â[ ç/ÜzÛQ5•—_z UQ9xð F£ñì9¥ûš*ÏÕdœ>ËåÀ^úšshã^·z1Ͼ²€ûo½”Ï¥s<½ˆ;ÿÒ £ÑÞ,r´ÉøV®êgRYk×¢×é0@ìäÉöâꃲ ºåíÒéÎzsŠ¢’“›Íž½;2x]»$5‰ÆÞó*?|8[Qn5õ¬ÕËð" $‚Á·üÇ^o8§úðÂáp`·Û¹úê«ëÜä}¾xâç”äú\Ù—>WömRA›Ò”M´GGG<ôÜn(7oQ~£jÅ0…,ËN!‘e£ÑHPPPËíkCß¾õ'ì¸Ö1ͦ´Ûþô'nûÓŸôÌŒ3ü–¿ÁhâÓù‘ؾ hà¡+‘£%Y||}ú‡ÑxÂí%%%|ûí·¤¤¤Ð­[7"""0 ¼ûî»>|˜k¯½–‹.ºH ŸD"9'iÔbð?ü¬¬,FŒÎ ›ÓÒÒÈÊÊâã?êþõ=ïÙ*tŠª ª F³s˜ƒÑ€îr£•–îö€Ó‰ÝîÀh0áñh—PPX„Ëí //-[¶°bÅ Ö¬YÖ-[Ø·oäçç“ÍÎ;yøá‡‰‰‰aôèÑ|üñÇÌœ9“Õ«W“••ŶmÛ°Û핺9ƒÙl&++‹éÓ§7Yï½÷YYY„……ðÊ+¯œ4Mÿö—^zI¶É… rmÛ¶¥K—.Œ3¦ÞÇ?ž¬¬,222¿y½^Ž9B~~~ÎQÓþÁ8﹄IQ° 4 'ÊbÁl6Ó¼ysÌf3¥¥¥!ˆŒŒ$::šÜÜ\vìØÁúõëY·n;wî$//“É„‚ãdzråJöïßOëÖ­¸è¢‹˜?>›6mbãÆlß¾½ÉEîLr饗ҳgÏJ¿edd0pàÀ ”q‰DrzipwåÕW_ ÀÚµkéÞ½;)))dgg7ʘììlFôýë{Þsá»KQƒª ¢¢ª*ƒ·Û×ëÅb±`±XÐ4üü|ÂÃÃéСÇŽ£Y³f$&&b·ÛIJJ"!!Y³fÑ­[76nÜÈE]Äܹs±Z­„„„ i¯¼ò ]ºtÁívsìØ1bbbèÝ»7—\rIÀ´~øœœòòòΩ,-++ã/ù wÝuBEáÁ¤¬¬ŒððpÙbH$B$g4>|87nä“O>¨&"aaaÜsÏ=Ìž=›eË–ñÙgŸñØc¡( ÿûß¹í¶ÛøàƒÈÊÊâÕW_Åjµ’••ÅÔ©S¸ë®»ÈÊÊâ¾ûî œ÷Ž;î ++‹Q£FUÛ¿®çˆˆˆ`üøñ|óÍ7,Y²„3fžžØÞ²eK^xá¾ùæ–/_ÎìÙ³;vìYéD…ʳ&UUEÓ4¼^/X,ß~Š[Óu“ÉDHHîòîL“ÉÄÎ;éÝ»7;vì`Á‚tíÚ•ÜÜ\"""X¸p!7ß|3š¦ÇÀiÙ²%Ÿþ9Ÿþ9B¾ÿþ{Ž=Jxx8—^z)‹/æÃ?¤OŸ>u*~ÒÒÒøàƒX²d _ý5÷ÜsO¥í§òaCxï½÷èÚµ+  OŸ>dffòïÿ»Ú¾'K¿¶²xªãâââÈÊÊbƌ̜9“åË—3gάV«l­$’Ó%r}ûö%66–… ²råJl6£GFUÕ@cúÜsÏqÏ=÷P\\Ìœ9sØ¿?^¯!?þø#ëׯ`æÌ™üë_ÿbþüùÕÒùæ›oÐ4Áƒ·b·ÛY´hQµýëz^EQxá…¸í¶Ûؾ};óæÍ#--wß}—¸¸8TUå­·ÞbèСlܸ‘?þ˜õë׳{÷î3¼ ÿã½ôjQå]ˆŠ¢ö³Z­X,„X,TU øÁŸ§v»—Ëž}ûHJJ"**Š 6ŸŸÝn§wïÞ¬_»†pUAõzh×®9ÙÙüºt)áááÜpà ¬_¿žU«V‘ŸŸOHˆÇMVVK—.%==É“'wÊòá'>>ƒÁÀâÅ‹¢Ø¯_¿:ù°¡,\¸M›61vìXŒF#<ð¿ýö¿þúk½ÊPme±®v§¥¥±jÕ*ÞyçæÏŸOi©|ýDrÚº+ý]•‹-Âív³xñbFE¯^½X±bÉÉÉ\yå•,Z´ˆI“&U¿Y²d ™™™\rÉ%ñ ÚÝêñãÇùå—_8p ­[·Æf³ÑµkWfÍš…Ãᨶ]ÏÛªU+úöíKVV'N`ñâÅLŸ>‘#GòÙgŸ…ÇãaëÖ­,\¸cÇŽQaó£kº®#¦JÂço| B ¡¡¡x<B°Z­¸\.Ìfs¥s¯Y³†K/½€¥K—¢( +V¬`РAX *»–.ÄqðöìeÉŒOèÒ=“ç/àŸ¯N¡K—.ÌŸ?ŸÌÌL¾úê+ÊÊl„‡Gðßÿþ—ËÅ5×\CÛ¶m =iùð“••ˆžûöíËÔ©S¹ä’KX²dÉ)}øÑG58¿_ýuÞÿ}¦L™B›6mxòÉ'«ÙX—ôk*‹iii'=ÎS¶~ýz&Ož,[(‰ät‹\\\}ûö¨%]}õÕ¬X±‚¶mÛ¾ñºÆNPøê«¯8p ƒ¦¨¨€9sæ4êœiiiôè󬬬JÛRSSq»ÝŒ7Ž{ &0a–/_ÎÛo¿ÍÖ­[Ï”ÔQVZʶµëP„ .!¤6m¾.È©ªJxxx :‹ŒŒÄãñàñz1èBÇn·ã°Ûñx<îÍü¼<Ö­[Çøñã˜6­òkÙºv½„-ŸýŠVZüë –ã©Xm­(Í_Knn.ñññüüóÏFÚ·oOff&qqqŒ7ƒÁèênHù8rä!!!uòá©0™|7^¯·Ú¶7òã?2dÈfÍšÅîÝ»éÕµ 5´ìI$’3,r#GŽDUU–/_^é*ƒæŠ+® ***Ð õêÕ‹/¾ø¢Æ†Ìÿ›¿ÑªÕ«WsøðaLaa!{öì9©ÐÔå¼%%%lÛ¶_|]׫m[·n÷ÝwñññôîÝ›‰'òÖ[o1dÈÀÖéÆYfgçÚu¨®´V„„†à²•‚®ƒÑˆÙ¬a0‰‚2{f“ ·Û…*¼%%”9ìØäb7›qz¼˜ mlݰVÉ)¨ªÊÚ¬5¢(¾®ÍËû^Nf¯Kùnòl,N_T¬é óKÉ]¹…b‹„„6n܈ËéDÓ4ÆŒömÛ˜9s&ëׯgĈÜpà •ëdåãTÔҵ‘’’Bûöí9~üx­¾üûßÿÎôéÓk8S—ôk*‹±["‘4±È)ŠÂèÑ£)++cÒ¤IØíöÀ¶¢¢"þøÇ?rÕUW1sæL¶nÝJÿþýùÏþúuë ãàÁƒ‰*¹¹¹Lœ8‘Å‹ãr¹øüóÏ«¥©ë:³fÍâÁDÁ믿~ÒF±.çݰa;wî¤S§N<ñÄlذUUILLä¹çžÃjµò¿ÿý]»v±k×.š5kFHH5Þù75¾16 ¡S»v8³³‡±± €²‚Œn7¦¨h’â∠#..Ž«•˜Ø,F#fLÎ2L…ÅçÀuø a¹¥”¬^‰[WË5±ëð^nzy"»O_øŒØ~G8;í{(9îâ†ÛFÓ|@–}¿Öu´Nf䃗!t CoÃ`00÷›oÈÈèðO‹-h×®±±±‰@àFådåãTœÊ‡UéÚµ+·Ývf³™ÌÌLL&_}õU­ç·Ûí•ÊwCÒ¯©,~ðÁ'=®âB}‰DÒxê5ñ¤k×®´nÝš9sæTk¾üòËÀ¼¦iŒ?ž¯¾úŠfÍšqÓM7ѵk×JëóæÍcÑ¢EÄÅÅqýõד™™YëS5æÎ‹×ëEÓ´ÀŒ¿Ú¨Ëy5MãþûïgÖ¬Y„‡‡sÝu×1hÐ š5k˜¬±víZ:vìÈwÜA¯^½X²d ùË_*ÝyŸn¡3‡†’Ò)äôŽÄ§¤k EJ );¡ÄFaPÀR\BÙž=8ÖmÂós%Ÿ®Äö¿,\_mÃ3+ñ­‚XÒÇšVþ-™í+›±iK$–Øv$·JeÑ7?V’†-?G~qŽN,œ¹MÓ>z|]œ‹™þƒ.gÔõÃ).*dÚ›o’‘Ñ…k®¹–ÌÌnÌž=‡ÃÁСC8p +W®¬”ÿ§*§âT>¬Jjj*Ý»w§G8p€©S§òî»ï6ØuI¿¦²¨ëz½ì–H$l;‘¯Ú9ëñ7~B4¯×ñã¸òŽá¶•âU]x^ìŠï1îœRJóܸ÷ó3Ï>{©·G'ƒ®7Ç.â8ŽFvt @.y¬K %–pZ ã!7‘ЇhE'[ NEÄëL˜÷$[ÖmäÓG_&-%Ž=»2ø®[IïÒ•°°p, ëׯgÙ²eñÔSOI'J$’3|ŸÜ¹$rB×ѽ^<Î2ŠŽçpäð"rsc/Ì¥ô‡’=mëŠ=ߊǦ€K¥HØ„N¤&¡ƒÐÑÊoqL Ä ň#aÂä[T®h„*%„+…„*…¨†2J"ÝÌŠ.fü§3ضy3û—ýÆŸï½›ðäD,±1¨ªUU+EÎ׿I$Éé99p®…ÞªŠj2¢yr r8|4›cGŽà.ÍÅ•¯¢ªÄؼDÙhN Ýk"âÅŒ£ACUutLF“³EÇb6j±f C¨0ª„G±D$` K@DBãBˆÜí› ¯ D¶oETz[L!¡TC¥·øN"‘HÎ$RäÎM©C×5ìe¥¸Ý¡¨Æ6˜Ãc0DZxbiaIÁ\äE/µáušPÐPË'¯¨F ŠÉˆÇf³ S¨§U@¸c¸ ƒÕ„×  YL„7‹Ç‹ƒ):STñÿóYŽ5>KX8J•·±Jq“H$gOk)»+ÏzªNHB ë^öÜ®2—_]$‘H. ¤È¼õÖ[2$‰¤ÈîJ‰D"‘œ¯Tï®´X,Üxã\{íµ\rÉ%ÄÄÄ#³J"‘H$çV§(•»+o¸á^yå•j£•ObH$ɹˆÀ`00eÊÆ'EM"‘H$ç—ÈM:õ¬}ëµD"‘H$ E騱£Ø²e‹Ì ‰D"‘œ_QœÑøœ:tèP™‰D"9?….::ZŽÁI$‰ä¼D•Y ‘H$’ó6’BÈHN"‘H$ç§È\2 ‘H$’óÙ])‘H$’ó7’“Ý•‰D"‘‘œD"‘HÎ:^»~8—öíÏc«Žö´…fãÒ¾ýtÓçM–ÆÛå×wÜ£°ø¶Ñ\Ú·?CïúOûÏw=—öíϰ»–û"9cr‰Dr.â*ZÄg¹e¬ž:ñé§WäüÚ¡¨M¦#ªH !Dà%ÌE»Þçß»¯åOm#ûÚÏfòº|ŸIåûÉHN"‘HÎQ¶¿ÿŠ¢r{çJ³?de©ç‚¹ö$³OŸø Ò»â>zì –æ•ö“cr‰Dr"t'S¾;LXó[ùÃ$;ß1‹ýo½îî€×±‹¾Ãî&m` [7q0ßA|r;FÝòGþ423pž§MfÍ®½ìÛ€"…ä”¶\sçnêÓÝ“Ï7Ÿ|Ä—?®äðÑLÖ82.ÂkOü¿t¸Š3þ¾¹lÙ›)¶=Þγw_HCwç2óßo3{É&rŽ»iÝ© ·ŒAm"ë5 !¢6ö¹«xê±Y¼ºþ÷<|q…[ßæÃ}ÅÜòê=|öðä‘ ,*‰DrîQ´s:;:þi$i÷“l6p`öÿá•›÷CËöÒîÒAÜrÝB wðîËxâ»ÃóDíÏF±&1`øµŒÁ‘]k™úÔ}ìtx·¼›~ð ®èöŒºö:d¶Gw¶¯d‹Ç¾ƒ#z $¦ø ß}ü,/n*ðËÓÆÞÃëŸ/&¦k_n½¦/î½kxêî»ÊÓhq™ðûVVæ=óxt/o<5‡˜Nw3®STåHί‰D"9wøùõ_Q•Ä#„‘Gz$ð×噾·˜ÛDÚõÐØQüã±ÛÀ_þ4ŒÃDZbÆLÄ0߫ծö67 BT†~ÇŸæàûB')e?ñÑÖBZ\ñó^¦ P¼¸\Z ˆ¤û™ýŸ›ÑuAé‰\qÓGlùé(¢k Žãßð¿ÅÄw}œ÷ž‰&àÎë›3à¦xyþ!þ}}ÚÉ#¸*‘\ÍÃ=¯Þç7¾ÆCÓ XwÜËKÜ„[[YéHÙ])‘H$ç^çnÞØQˆ‚»†©´íÇ©+yà!Úu§Ëåû7$ƒ>QfÛwø¶  ÞÏ®ãpÎ1ì¯OÈ·.p¯ uT7ìgu ¤¡á(ß.,>Ñò{Bà,ò#óKt»ì¥JÇ®)D\×ê¤×ê(·Ç¢R©»R¹Ù5<}Ù'<÷ÅzZ™AVeÅ•åÑ(‹‹D"‘œ[dû&.]ÐfÈ(2­¦ÀïY ærpó›t ¤E Çyʶ³ÆæÆ×€âoðÌŒÄtº™—^€54„ÜïÿÎÄÏ÷æð6ÀRö}ú3¢Ç(u°íÄŒKßÞ¦°TÂ[Œá½É7T#3†$œô\Îãë™{܉1´-áªBÕpL膿ü=ò]D$ÄâÕªl²»R"‘HÎ1>øp7sï<5‘ã ÙØµ™Û>ØÅäŸðÚ_»î*ZÄ”ÿ³cv±âûùzaìK7 „À`NôEK¹[ùåW ‘jK<âW+Bãoc`Âü´ö-®¿ý/J{>%Ö«yêîN´ãD`Õßšÿ‘þñ_³$g=”¾i˜õ2rærï³/UÓGþW<ÿ;0¹ Ù²v¥šNÇÑãÑ«ìçï…Ô´0âãÂ^QƒžÉ‰'‰Dra?ö?9i9òIÂ5.—+ðiuë$ÂT•mïžXœ­k6Ö,YÀG_-ÄÕüb{ýSîl@Dò]|ôÄŸhoÍcî—ÿãëŸ6Ò~ð•'ST^üìî¿áJ y[˜ýÕlVnÏçÞzX¬2yæGŒ½º‘ŽýÌ›=‹¿üÆÁãvÔâ«Ò={Ù¾~KÖíÁÚöb®ûÓ|8®ëÉbGt]§¶PM™4i’xüñÇeÉ‘H$’sE1aA÷Ø)sjU6ˆˆá¡( WŒ¸—ˆ¤ûXúõ¨ 躆ÛíÂãÕ‡L,f#ªª‚®ãõj˜Ì&Ì\µò ]Í”¥ýYÚïaæ0†W}”^¬brßß/S” x2[ª¦çß·©m"›™÷ÞÌ›ÛÔr[:1þów¸1E9-N«zÁ¸®Úòyôä%L¼L9£…´ªm5ùþlÈæöq}l>Û¯O"9Ã"'€®bÊ’GèU¥‚ôZº”G|;¢—ï ¾÷éA¹“ØRž~Õ}ý¶åR©`«¦¯dJÿGø†«k¼®ºÙs˜™÷Ý›[;3î³·¹1Y)ÿíV¼Ý°s64O‚™çUóùR~cJÿG˜óð+ô[rz®«F»É}·¼ÉÖÎãøìíhA3ï»…‡ûî äÿ©¯mU ~¯\6ô³¬7£&×Çë¥Dr® úE®êÇ_Aªþ®i+x¥_?úõ{…šV㾚vˆ/îíÇ€*í×ÐOm¶T´gÀ€ô¿ï}vWØ·¢­Ë½+˜Üÿæ©*ª:GúOn ]Ù· -)‰åö‰$®ëaz qÒë¯h«ÿóÊ ­z¾®x¥Òq+^9qŒï÷yràËûÊ¿—/¼¢>† IDAT7ŸE-y¹BÓNúý‹/î šM+ÿû&ÛU•Ñw^G’‘ÄuwŽFU·óæWV³­jÚšV³ßk*ÇÕòú•5–ûÚ®O;ô÷ö«ê+-¨å¾>u­6ÿÓ?ò#?góç$"Wå.ð¤Ûªï»jÊ­LÛÚ™±ÿKgæ2qʪFz2[tVM™È|UeÄ?òÓãý÷±ÕlCôà¯?½Ì]G×GðòO ˆR½Ñ“¾£@Uç3ñб|YC#QÛõ Ñ“ ?ÿÌ¢E‹XøÑXÒu¹§°RÓ¶ªê|&.éËÏ?O §úò~&ÎíÌØ²hÑ¢Àïþ}‰ÇYøÑX:³•iŸ1Ÿ³²`Tßò|:•߃o“¦­dÉ\ÐõôíQa[¾ŒÐu˜»¤ZÞ-³ð#PÕíLûtBô¬ÅïÕËÕ¡/ïgÒ|_YZø¨ó'qÿ—‡*åOm×§i+™rë4¶2Š,¬ì«à•ûúÔµSø§BÉÆP~Îk‘ tmTú”‡yê<˜Aƒq啯ò›®WzGö t꿱t@R{¤Ò`ÏA²u½†têò©Ý]ÏæàÐõŽ´j!IåéÕb[õï ûôœðÿ¡£ªÛ™~Çà ySë¯ÅV]ÁËíQ~®lV,Úê;WRõ<Ñõüáڤ皷4`GcóyðÓÙ:êe~šÐ³ÒöSåmSØTÝ_§H»G?ŸÒ®éœ¿WE”Dƒ*{Ãm9Å÷FWìDÆL}‘Þ`þ¶ÒušŸäú5ý0_¿4m¤sÿû·sðÎ'˜Û„ð‹í¢Z#ìëª|ÎLn¸?ï,àÃY7ÐýÚg(¯»sùHXðí~ýíAº— †Xý«/¢~9ÝËo¼jL;=•¤Zó¶ærÈëS£¦ëK¼†7~¸†Õo å©oUæ=6•Ë+–F–ûÚl®¹®ÕÑ?þë“"'¹°&ž4|LNˆDz^‘Žª~Ëdz¡_µv[„èÎå#@U¿eÙjÕo<Á·ªz’q£ò†Œ=:ÜÐq¢ß˜:nÙþþÕË|i–7'¿þll÷u/%7?õئÿ\Õí=õ±ÍçæWOäž:Ûßú'³²µ@^ûm9u^Ã&Ìë®3ÿãÙdkš–Íìç£ë¸ïúÌ*¶—ç“ß'm’I¢¿×^n—­>qŽô+z–Ÿ£î×—ùÀ \¥ë'¤‰ÆäN^Öj³·¶<’ã7òs~ŽÉÕ¸\*LØðWŽÚ·Uýž4æuž?0œ§gü™3@ׇñ‚éÞ ;ZÊÌ¿ãé‘ßUèbñ3óú{é°à¾{z$âù¶àI¾­Å6”$®~ô^ÿéfüy$o7È®î<ðè!& ÎNÿº­wóÞkW“T>¾Yûõwç†óÝÓßñä𽤧ƒºó;ž.øûüÞ5æyÒ˜×yáÀpžþóHf”_wMûÖæ¯úæs¥¼ºm83žþž·_ùšž¯!óú{I_àË»wßË0ýZó:6•g¯-HaÚˆ'ùóÈå¾^žŸƯüç_üÊpfìT}yþ@fyÙ®î÷šò0à·§Gò {ž×Ç$UI£æëÓŦx’ïýe‚tî}ôD™h¬?D-¿ÕVÖ2kõGmy$‘œŸ(&L<òˆÌ É9‹kø×¨§ùŽ«x~Þ º™’y$‘œ´hÑâ¹ÇäÆŒSëAsæÌ9­FžM¶œÏœ,ŸÏT^ŸÊ&?_ýt…ÿü_ªËµ×Ç'µMâ‘HÎûHnüøñb„ 2'$‰Dr^ѲeËçä›Á%‰DrÞ"_µ#‘H$’óWä, QQQ2'$‰Drþ‰\aa!{÷î•9!‘H$’óOäZ´hA÷îÝeNH$‰äü9!3fÌ8ã†Üxã|ùå—ÒiG­vDGG×ißwß}Wæ›ôŸôŸôŸOäü?ÞsÏ=gÌ 3f#ívœÔŽúL’ù&ý'ý'ýˆäüžᥴCÚQõ]ê"óMúOúOúψDrŽ ×sJÿI¤ÿê-r²àId%“HÿIÎ[‘“®“ÈJ&‘þ“ÈH®aÙBÅ\˜„õäå±ù™gÈ_¶ŒÉÉ(è}úÐækÝZÖœ3XÉ|;—Üc¹ 6’ÄĤZ÷Û´y+V.'66Ž®»©ÑéîÛ¿—¢¢úWDGÇÐ:­ÍiËïiÓ¦±k×®J¿µoßž|PŠœ¬çW$—µf5k×eÕëĪ¢í$)Á†ADÇeÒ¡ÓUÌA1|ãŽÝDG„ƒBÓèètMÃát‘›œ-’èÜ6øB²jÕ*RRRPßÃÜ*=Ô]QP€c ²ïÙg¹xÌÚ=õF«½¤„ã+Vððaôš6¤aÃdÃCŽcÿþý¨•‡þ&ƒê{áØ ìRÊo0ü6*Š‚ËãåõÉÿD×t2»wç™gŸ9ëíf%Û´yÇ ŽÓ³g/V®ZÎ5c®¯uß ×3bø(ÿò3?,üŽ¡ƒ¯jTÚôéÝ·þåî·•MØ€éh^‡eóÞûïSRRJ÷îQo¤¬Y³ƒ'Ÿ|‚»î¼“V­Z`0šPUŠÜYˆ¢À¦%N–|fÇÚ¬”þ·Ä’–ÙÀwžÇ‘ÜÚuYüíÑÇë‘ðlE·ÿ„GÄ!£àØ:Œz<¥'(¦ ß®uaa¡5nûnñR<@BL ±ÑAÍ4³ÙL\|¶;Øüè£tx%±]qíÛƒÛ âuy‰ÊÈ ý‘#üú‡?0bõjÂSSëmÃøë_ÿÊî={èÙ»Qa!—b* ø ¡Ü6ßßâ2»·mAÓ4¾ÿáûçÅé´#˜•lÿþ} ráaìÙµ‹­Û¶Ð¹S—jûýºl I‰IÄDÇÒ¿ßìÚµ=( €Ëå¬ó1KH“õ…lXò >øN{Žè^4kÕoûô¹ˆìì<Þ™ò0¡…+@Hh8#îz™KÜ$Eîl‰ºt×+(ÌÕX¿ÐEñAÇv% •Ù¹æoN¢ã,2’«±›eß> Bˆ@cN ÑòWAIÉ!L]ˆÁŠ0_bˆ%2þ bšÒ äFn1›qºœääfÿþýÕ¶Í;Î £GòÉÌ9\;b³9¨§ªêIEnÝóÏ“‚±}©ãbÏç3(þñ+bÞH«[ÿÌ5khÊŠGeðgŸÕ;}]×yíõ×èØ¡#¯UQ*½}»\WªˆŠïUWg×®]hš†®7¼ðÖÇÝã çÑGpåå“üØcX»eÖËŽ`V²â’âãp8ôë‹/ª&r6[);wíàæ‡¦i„„„üx“WJMÓª\7 ^ô&hd„Ðùá£'Ù#\OV—t¦¬D#..¶m;¼XñFÅå‚£G;`i‘NÏÈ­D‘Ë?!Eî,ÂaÓXþu)‡¶édï9ŠšPLXq'ò÷«”æBtÜÔ]YÃ+‹™ï¢ð5j¢¼›NÑPŠâB(© Æ*`AÁ…‚£që¾»ßP‹ ·ËCóæÍ±Z­Õv+[»‹ÅÂà~—³vëv.¿ä¢ ‹\Å]R«´;åQ\y8¥—GtN÷‰HN×u„Þ¸HîdvÙõ-;ÌâÑé°bƒ„È2&ß ®ð+8Öë®zÙìJ6 ÿ•üç£÷Ù¶} -SÓˆO`ó–lÜ´ð°B,¡å]„kéо#Ö 7J#9¯W«ÒMyz…£â™¾ýöÛ“¤ Æ =+º»$›Ÿ~\Ë׿+°‰P”£à5ÀÆö¦'–YYàÜn76làØ±c˜Ífk šLätÇ¡QR^g)¡žb H¸rëó°ú—‹Ó³#qaÚé‹äV¯ùË{õ®$jªzbò‰o’ø‰®K¡„#+Š9›}N£—Í…ÓáFC'"í"TU¡eË–4kÖ¬ÖcBCC‰²FàrÚ‰Ž EÓtö—åN¨,pªŠZ~7”2iÅ·ÜBáOëYrswLúz"“À•ûù çrì‹­¨^ =ÔèÊ« œnkw­Ó±]Óâ"„@oä˜\mvxжpUìdþ5Ûü_utWÓ')UZóõæ~Œ¹ª5zyDY;š¢‘ì×·??/^DzÇN”””rùe}Ù´e©-[!„À`PÉ9r˜›oü]“4L¾HNº++^ã¶mÛN™ééšÄ®áÇטžï£×ëa½gBä.49õx]|ýÑZ$ZI…æae†%y04b7Ãz'¾(Íår‚íÛ·sôèQÜn7v»ý¤Q\“øÏãÆYÎ" ’Ãàì`‡ÔV?í:‚áX{®ë™xz"¹^=/#))‰£G¢¨Jù̽]–þõaJ…èîD}ã'@ O N7Š¢"pígÓ¯?â,õ—èjCÁÆpLÍ8p ……Å„ŠBÊ^„N`ªt#UÕÝV8ÿu·ëÓ‡ý+Ño¼Aé×ëÑ" ? ó6`µÈÿݯ¼²wA:zù,<Õ©e|•Ý_8E…HΣùŽB4*’«Ígi6­Œï±ø·BÞš-(.ÌåƒÇ-DÆÄòÕök¸´ÛE4k‘Z/;š¢‘lÛ¦[·má×eKévIwL&Kš×‹¢(|ÿãw èwE“5N±±±OUäÒÓÓOš~Ñi e¨É8† rÆE®â$“j—QžÔп-¨´­)&£ÔfÇɦ^¯‡ŸælA/HĦÆp ,+†è{4<.[ zV·HÎbÒ)sè¨FAxvfUa«éV]8¯i^¯¯×‹¢¨x5½Ñ QÅźÏþýùSö©ëºÎ½÷ÜKi©¯?¾eJjyãª7ÚŽ–±GwÿMÜ÷·÷غÏCBX.ÓQùäçh~ÛÏcÿ‘aå£n¨Á¬dG>üÃS§ÒÂã!.2St4sh“ïÁ‡~[M‹ÔTº''ãÑuœ‹±eÉ’Ç'éŠÈU[ó×Tܾuë¶JÛýÈŠòEÍš5«6+3¸"§Æ»<Ä5לxuqqѹڈ7¡_ Ó+wìØHbrúŽ2¢ˆÊQ½K”Ú5š›6Ý e(tJN¦C‡õê ¶ÿUäVЪ*p[g ãÅ;º78zÉåååUˆÒNŒ½ùÅDQ«Í…°6¸]‡+¥uêX«bXBWp85T£%0ØÚ• \[U±«ø¿®ë¸Ýnl6ÇŽÃ`4qôx>íÛµmÜM¦áñxß xòñ'p»Ý„††òÔ3OW+ ^¯—ä-8vÌHQaaàxMó6ÊŽ˜cüë©nL|î#~Y+°šKxç7?®62õ >¼'={ö¤   Qv«’®\ÉþiÓè(y!!ì·ÙhQ¾Î/õ ]ؽ—cÿý/U%Gâ""hãõ²cÚ4B:v$æ²Ë‚ÒE\ñš*G!;v¨$n PUƒÁ÷µò"ø‘œVIàÝ•åÑ[qq%%%Øl¥g¥ÈQå†á|涉¨Š¥†ëµZ ÜÒ)œ»—àÄ„ªé˜Œ Éá Ò;a4Ϩÿt¯oÀR5ªB* \î+;?ëÉÃ×ä®;â•NÃß'§¨Úy%°¤¥ÂÃ\ žÈYâ:ã(ÜBHˆ±ÎÑ[ÕÃÂŒ””91Z,x<Ìxh³R¡Ë²&qóÿïñxÈÉÉÁh4‘–ÖŠUkב–œLttãžü¢iÞ "'„ÀQV†·B?·_P<O ŠÔ<Àëñ`0ª=¸>Á“²0eú<æþK˜ÙË)âPž‰^upÙåݹýöÛñx<¶#X•ìÈÿ>%Ó`à`q1Êu×Ñ<&†ÐO?eg^m32hqíµùúkv¿õh~ë­h……Ÿ5‹ÌØXöüïÓF‰œor‚^­ëZC•kUP”ŸÉä{¥"ðh-!ËWüT¡óEr'&˜”•ß ù—x”””›{”wß{—‘‰kÎ ‘Ó4-°Î«eB}ÓcX¾ªrÚŠrþ½ÓÒl©]¨ ÉÝöa ³îFQ’“SÉÈèZok ÿ MÃëR08Aõ‚b §xÝ(®é~·<–”tê}¥'AŸ˜tl¨òQq\ãˆo;ˆÝsß!59ô䑜B­Û£#Šm 0RTTtÒEäuŠäN’?þŠçp8(,,ââ‹3Xºb-[$Óøghjº†§Bw¥¾Ùy^MC)_ÜYUà¼^/.'ðÄ×K‹ädfj°ûtÁÒöA¬{£¡ˆgn;BX˜…QË `ܸq8Ž Ø¬JæØ³—£»®Ó|Ø0öGóB’’ˆ¹ê*\.±Ã‡’”D¸ª²ï“OH{óMrgÎô·{w£ÍØØXVg­ª¥ ST™Qœo-“Š®ëÌø÷[ÕŽMˆoøóþü¹nÖÉËÏ#)éÄ[Bª¾/¤¸¸¨’ÀÅ™ËÎX#Yéf«\à:¤Dq׋óÿ×T//rrr|7”h(ŠÔÔT222N¹èû´Er‰â¼:Î\ GV\Â¥Ÿæñ 킚Nƒ#¹Jï£ÂŒJ¥ÂÓOT‚ÉŦõ¦”.””lªAV8¥Ñóÿª£{@5qäÈ‘F‰œRC7eÕ ¥ë:6›kK–-§eJ2qqqAÉE€ÓáÀhô´‰ëõ!IDATݧ¸\.<7§³f¦´´´š°x½^N.—Ó÷Ýã¡´|AhCre/<Žlþ1±‹üŒ~Ýc¸þ‰0Z$'a±XP%°&§±v£’麎ëàAJL&"CB(¾ûn2bcÙìra3†œœœ€ÿ £F±mÎ2BCɾûn"CB(q:q*Ååra41 õn@[§µ©õ ßë7¬ Œ±Uí¢ô=Å€Ž`ø‘äåcíº,:uîÒè¼IÕ7ñÒß'awŸzáÏ É+ 3¸ÏªîJ!oþåò@:¢°UjÜF¼^/F£‘ä”d:uêÔ`k ÿí\ùCn‰G+¤]÷)|ý|ï¦É‡úìܼyó3æ0·ÛMX§?²sÉ8›i ÒN³ ÂB¡ÈœrÒç]E„Êbít¹9tä(m[¶ JçgÂÃ3eòd"ÂÃ1”––òð£q{Üèº^£°x<ì¶2œ'·ÙLNNNƒEÎírâöº(9¶GÁfÒZ]ÌÂÃWrßøÔ&±£±•Ì%%ß|3Ù|@\H‹…MGŽ`:ýê«)***Ø´£G#²³ÙôôˆŒ$DQÈ..¦Ùí·ãr¹k#ƒÝ˜úDÎg¯ÉdÄ`ðUSZþ†êpÎa6oÙÀ%ݺ“Þ¡a÷2Í„GÄ`sxéÑ¢˜žâ×£¼“ÝíÙ¼DDÅŸöF²¦:w¡ ››ÍÆèÞ½;ÑÑÑ^nÒþûñãùM/öu1¼Û%™¼<ù¥F%Ô£{¯FWü¸–ÝÈë8‰-{~-_g%º·ü®WCèP耪è:Šê¡ é½®©´Ð¶!‚{àÀZ8ÿo.—CÙ‡éØ®M`6\°¸åÖß¡ W^~]ÓÙ±cf³ùÄs Ë×5U«9œ“ƒÛíòuÛ•¿æÇÙ°/ûy.ÏNùŒ±·táÓ9ÙìË.掻21›MbGc+™¿L|ärÂÂÈYº]ÂûöÅ4rdàG@`æªñÑGq¥§“ûë¯ ¬}úxß} Žâê‚nÅÇv '¢9MÓÉË?Ææ-ÐÿJ:vHoTžŒ¼ûUæ½7{q~ ù,NÒ—á#$"†þ7=‰×ëÁh4ÖFRR3N§‡ÃAïÞ½O¹Èûl‰Ä›Läê²SϽèÙ£W£.´1 =!!ð+nÂÓçÚ ãªVî¦PUµÒSHTUÅl6vÊéö'£W¯º vRófMæ¼[ÿ{nýýïëṳI“‚–¾Élá“Þ'5­7×ó¡+ ±#•Ì`0 ª*­zýÁoQðx<•Îï/Oªªb;Ħby 6mÚ´å­wþUëõŠò'ä9Ìï¼;Ð]Ý:÷Eç^£ðz=8ìö2ÊÊl”•Ù°ÙJ±Ùl¸Ý.Ìf3!!¡„‡Ga%44Œ°°pÂÃñXBNÿbbI­ÄÇÇ3f̘ žó‚x3xcŪ1w›‹‹Å´1-Iãé;ðêÓš^°*™Rå9£@ƒŸ!l^1˜W >3Ñ„ÕjÂj<«ý'93œ×‘œD"+™DúOúä$YÉ$ÒÒ2’“Hd%“HÿIÿ-‘ÜŒ3Î ƒ¤ÒŽ`T2™oÒÒÒʸqãijÏ>Ô5\ ¥°°PÚ!í¨•½{÷Öi¿˜˜™oÒÒÒÄÆÆ>÷ÿc9qâCCCÃh_|Œ‚Q0 FÁpƒ ô³Wä¿ñIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/12_delay_thread_creation.png0000644000175000017500000003374112032647172027621 0ustar ebourgebourg‰PNG  IHDR1(ç²è­bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 8g±óÁ IDATxÚíÝ]lcéßùÿyP^t`Hß­¨ ã´€˜ÌÜÔ’F„æVQ$®áá)h-/ÖcjÊ0nˆfíEØ¢YèÎRUs‰6Œ®­t¨îm0ZJ*-`ÚŠt‹™ ÁFËãᔨÜ)@Üq¹»|Î^’¢ø&RïUõý@Ò£sž7I?=ç!©½õÖ[n·[pI …Â5·Û½´´Ä\\"ÅÉ@& “€L@&™ àŠ¸ÖY”ôxtÕ=«†?±¹à”ÒòT4'Äæ‚KÓ.¾Ó¦Y¤Ť'¦Ä¯®LÛ.£Ãý½œëdf1éõz[™ˆ¨Jzvj¹hš<êàªé²N¶¸µµh%›ËQW<Õ˜µì|4'Jµ-Œ™ÅäT”G\E§]'3kÙˆÇãõz½^¯'’­™¦æ’Ç“,š¦u€õyûñÉbϪÇ7R`-9le¿o—JS¥ |ë~°õN¥æZÜÚZtiZ¿î™Åd·>´žÒÒ«–zZ>/&›5D²5–åÀyg²Ò²/”®46Ÿ©Jzv¹ÔúýêÚ|ëf-;?›:<^5c™i—[¿¥ôèüZ3á-Oͦ+‡­„|±^;ÞL³VÝß»å<¶û]º7Õ[û05?l¨*,O5ï™*UI‡|É"± œ[&SJÅtc<œÉç766òq¿ˆH®Ð\IRJO§+†áçóÖ•µ‚5Ît=^sõª2áqÃru¯ü¢ºRV=q¿Ñ»_{Õ²ˆŒÙGŽï×îþx³¥*©‡¥¡æ$— ´õ3—©‡K€³Ïd"räþ Óí7Ú£’1^mìE3Íb!'†áM´¿[ÝÑ4×b³ªûX£†Ãu¯ÕÃ=mÎ…Dg[ýu½ùØ­{‡ lÎ[sã†q$5;!†¿uï]½†F¸èåÚÉ™áO,89 ãµ'”Òc>½ù…‡ ZG^ºB)©‡®A×½FíQ½PZp¹dØîihÄ>&R>Íìž¾@&;†1>·º´µ¿H˜Èüñü¢Kk<ß³Õnu_\¶ãë×4›}L¤"¹ÌÚ-ç ^¬¥¡ýênßC÷×2úavìzDuWDöQ.4Ð׎>™¦¹ÜéºC«yß°^J…æFûγ¬ÄÖk¿4îªJzv˜ú YÛË$ànÞ‹TJ/”¬>Ô²Ïì¶Œ½…ª”]né§õ¬…1;/T ú»Ðu2ç­¹ñ\ª¢Ç¼»—7°n8VÒ!_ZÄwFEéÑ)Il.8ÝÑuÕzV Èår½Ò•-¸’¨úbºõ´ÇtKbc¨î©–íe£v‡HEšw^ Ã1·ªÎFÛnM¶öS”:ö/€\ðëøk¶àÊf—íùšf›ŽÍYkNÆxxue%6ç8ü®k±þLL+ ùã› îcr-v}z¦cîVŸ÷bjëžaø›õÛ¬­=l~kºc‹›aøãùLx¼qXËsú¥—¥¥¥¥¥%&â”| N€N÷îÝSÌÀ¥#“\¾kLÁ™Ð¬wÓd"À‰°N@&™ €L2ÀÕÐåy—ëëëÌ À…ùüóÏ»¿ÆÌÌ ³p1*•JÏ×';88¸ÜνÿáG¸ý«ð“R©ôäy§žˆvîZg•J­'>}J¿ñi©T*•J7½“íÉeÿðí?ºÞ¿3V»;wßùìÝOK¥Ò§ï~öÎ1·7³ï<ºiµû$ü«ïp/2YÎ…Lx\é±Öe‡FìcG ßXpZå†áO¬LXÇ”«{"¦Y,äDdÌî´‰Ènu_œ‹[[[[‹'º=ü 3s]D®óÍÎB‘§?[—7þ±ˆˆLÜ f툈LÜnpxâÓŸ­K3oMÜþ ؽÅ7¿yý¸ÎÔÓ[0lum&Üh·÷‰Í•·ÃN€WËñ¯;2 oϦ¢óöÕP³Ð¬eçgS¥D)1†ŒJùtQÊ j¶sÝßÿê¯þêãï:ÿ••åOn62ÓÝï|¬TKáßÿê¯Þ¼y}Øú¯Æ.7ð*d2M³M¯$ªSÑT<ã1·ˆiÖÖ⩲8æ2¡êl47Ds£v‡e₞7ðßøÃàJ¦-3=}zGêûôwîÞx4pm7ƒé_?•‰ë\6àŒ ôúdšæZXs”ËåzÁ^µ,"cö‘áÓ4ÛĤC)=³¶o•œvÿ1®ÿÑÛŸuÜ üû_ýÕÖoh>ýõg‡yëð®áÎÝ®ûÉd"ôöú@¾&n³éOEäéƒt6x³ ?ûõÓz(l©?ûNsïÿΣ–ƒ™¬3NÙ‚+‰ÀaDK”Ò£S™]‡(¥G§– U¶àý¸ß¨¤Cͧ^žëð®Ïdn>ºqôµÄ&nðæ¿ú®ÓétÞ¸-oë‘hâö§o¤ëG>ºÙc?Ùõ™Ì“›_Ÿl>Û+”ÝþàÍ÷¾ãt:¿óÞ›íb·Ÿ„õ7nÜ–»­õ?øô´õ$ÍôŸr#€W’¶´´´´´ÔZ´¾¾>33sppp¹={ÿÃ^÷ gG;wîðÞJ—ïSp©&n?a \íLvppðþ‡ñ €—ÛÏ~ñË«›É~ôýï½þúë¯À–2ðª»óEíª¯“ñ €—Þ³gÏØãpùÈdd2É®‚WëõÉ^ýurpÕ¼öÚk¬“\>2Àå;æÞ¥i—§¢ºR"bãs«+A›Æ¬œ­~ëdf-;?ÍI žÏolllnÆ$¾\4Í+5Ó,&='yÕ:p6™¬ô0UQ*Xpišˆhš-xÑú\DŠI×ëõz½žd±=“Ö·"ÙšYËF<'’­™#"¦YËF<^¯·¶š'f³¯×kÜ\ÆSJNÕó¢U[½ožäcã1¡ ¼¨™Ì4‹…œ†ßíìòÝZ6Ó•?žÏÇýJE²µÃ•-¸ó™ð¸aTÒ¡©¸ÄVçRNÅ×jTtì1¥åÙTÙއ’‹.—Z+ß–X>vH9õ°¤i®…Í„ß0 ߨ\piši—gSåÆÚÞÖÖaˆxñ2Y¦YÛÙ.×ãšÓí7ŒòöN3o†?±à”û˜õùÊôȈ}LDÊÕ½F ý±â È˜Ýi‘Ýjkå¡éëDÉz-})¥GçëñNÓ\‹[[„3ð²e2‘½jùhAKÞ:³ž)=æ‹éJ U¹¦¹VçÆ CUÒ!Ÿ/Yä~%x‘3™¦¹ÜQJ/”:¿9jw-pØGϲW£v‡†ÿd÷5[ðþÖVÜoˆH.ºÌ62ðg2qÞš7Œ\t¾¹õ¾˜LMSÓl“Žz\+t¥“¶³»3ج?³¶?`€Ù­=Ö¹ð†8ì6ž˜ ®¼~¯O¦Ù‚+›öå©h:äK‹ˆˆ?ž_Ô4±ïÇ«žX̧‹þøý íl»U¯?ò¦ÅÚ¿ïìà¦csÛ³©tÈ—2ü?ÙxëçÞ×_PMs±i›VâaWœ¶´´´´´ÔZ´¾¾>33sppðò–÷»WÐ;wxo%€ËG&¸|Ý÷“=xð€©¸ý×Ý%“ÍÌÌ05¦R©tÉd/åî~€+ëÙ³gì'¸|d22N–ÉL³– ÷nEæå½Áѹ6}aã2‹I¯×ëõz/¢-³–xÍEšï¬õ‚N/m&“ÒÃtEõx{òîq5͵¸µ5컉_îò«L³¸ÍYoʾµµè”Òy¦ÌÚÚülªìgò››1‰ó>î\½LfšµµÌn87Œ\f­Öò׺˜¬/®Ü¼ýñTTWJ)=:µ\4ÍÎ|Ó<Ø“,¶e l6Òu…Æ4‹ËG«íUUWÕµù¶j› Bù¦³-«{Þ†d±KL1‹IO$kÍIgåǰyLk+­=‰ù|sÛ¿­b1Ù6ºã²W-‹È˜}DDDÓlÁû‹.MëzVk+Vy$[«¯¢6F7Ȩ‡ Ç?6wžÞçªëÚ W7“Iéaj,4휘tˆ”·wöëŵl$š«/®îWz,’­vHéÛËgÂ)§YˆÓ4×BGµ}ª:2N«Ú¸_©J³ÚÒòlªìÇÃÉE—iËZêÛØØÈgÂ㆑‹¶¯™µì|ƾº2mÓ´>•÷ 4[[)‰³Ù“x>ßunû´-¸Û–'ûDÓ\î€(¥G§æ[ÃSŸ³¬V¬òJ:4—ØêœCÊ©øadï:ÿG.«a†0øñ­_ö¿êº¶À…¹Öëÿî·­_~ëŸüƒæ"Ù\lAÓ´‰IGºRÙÞÙm¦YÛÙ.‹¬Å•cWÚv¶Ë†p;EÄí7r¹íÚô´uªaøCÓ#"ö1‘r®P\pöù3Ù«*[Ç)jÝ~#—ËŠ N§” 9³;íc"åÝjÍtÚù“]”äD³–ŸMU”¥ÄhýÎnf>W$¦«¶Ê`ïV†ÈÈéšp-nåjkó³éН/þ¬c"ç2„áôªërÙpζÿÑ×® ~t}'Y&´ir¸|{gzzdÔîlUGD¤ã`‡}ô„C8QUõcFí1ÊÝï®v~“0x[6¡i¶é•Du*š³²ËI:ÖþO>„Mï^uœÃÚÄÇ–¦ÆBV ³þfOL:”ªlïì[Ÿ‹ìV÷þ å‹é­;‡¬s+éP×§^¶µUçB" ”Êì:¤í¹Ÿ"¢Ù‚+›‰@.j=µ°å½èêßJŸI°­þMhšk!&ñ©)¯×ë‹éÆxغq9HÇúëœÿÎKbðé:ÁôžøªàhKKKKKKßxüw¿ec NÏz-œ¼G À+èÞ½{¼·À廯à\Y/l¶ÈDÐëdd2ÉÈd “É@& “€L@&™ €L2™ G]c pu¼ÿáGÍÏôýï1 ¯ì$€Ë€©c*ÈdÀeþîøŸþÇÿ¡¥ä§¯Úï&\LSñ*Ó––––––:¿ñøï~û­ò˜ \̯þÙl×oýÅ_®öú%bšÅ婨®”ˆÆøÜêJЦ²'V9 $6\šv•'Á4kkó³éÊY¿ëlHbsÑ¥µ”Üg19­_+Ãðÿdã­Ÿ{|NB¯‡øú+{\µÇè嘺 ¸À^©©8×_SìÞ½{ì'Õðõ×®}ýµk<õGÍ«¤çÏa-;?ÍI žÏolllnÆ$¾\4Íü<'='i«i®Å­­­­ÅKùa¶†ÜùÑ­ÛµµùÙTÙÎ~ÛpN0rÑ“Lì±õ[S½±±‘ÏÇý†a~롼¬É¿j? |tÿ—ýE{Œ^²©;Mg^µ©8審«ƒL†Ë_$»ûî¾ñÚ×¾ížh-ÿ¶{â¯}íî»?hÝÑTz˜ª(HÔÿÒ4[ðþáOx1éñz½^¯×“,¶ýHg³¯×ëñD²5³ùœRztªý×P×SÚ~;´ý¦0ÍZ6âñz½Ãþ"kNB×n“°W-‹È˜}DšÃwJ©ëp¼ ÉâÑþ“7oF|ô”.¿#”_«u|«m°Í/­VD¤–Ü|'ù¿WÕµùî3_L¶5ÚòtrkùÔ|fwÈK´órê2»ôËàœz{¥£kêºþ¢0kÙHcZ<žäcãñò‰~v^Í©èõkª³ÏV‹-Wl-ñD²µÃ¦#ÙÚåÅ;2.ßož=ÿͳ烗›f±Ãð»]j«e#1]ùãù|ܯôXó‡Íú¹Ý–X>vH9õ°¤i®…Í„õ¯[¯Uô¶Sú¤´<›*;Âñ°CrÑåÒ &¡×G翞î€(¥G§æ›¿;‡søj&‹=Lʼn~Muï³u}YŸ[·\”Ò ¥úñõC2^ÝLö»ç_üîùàå}Yëð-ÊÕ½‹ü‰RzÌÓ•¶]k°½>ºžâZÜÊç3áq£Ïï/kÞgué¤F¦cáq#_Û?f°š-›sˆˆã¢þ×ììC·!¹;s—Óy]fçs\¹Š3}Œ^È©k›ëÿ™qÃP•tÈçk LÅ)~Mõ賕ËÕ=)rŽp<;ÝÑuÝ*qºJUÒiýâþ…'“á*/•}òqö“³¿ýòyóÃ*éù/-¸²™H9òYÏ©)¸ë{?mÁûq¿¡Ç|¾˜nøã÷ƒ¶cþµŠÕ·@ þdIç­ú)û\ë?úVÓ•tèO½j4͵“øÔ”×ëõÅtc<¼º2me…Öá”Ĺ(¥G§2»éú¬¥Ág@³W^ƒ}lìe#ž‚{sÑ¥YGZ7Aöeä3< Î ×4W×![!^ù îDŸµ¥ô˜Ï×|ÂWÑ4{]Ný/³íø”/¦±iï£8eo/å1z ¦®sNšÏ9õùb9qÌźw†©8Ù¯©.}µ†aŒONŒX¿ÓÃã-_^^3WïÂ$¼ÐÎð…g/à2¸"/“û"þ½(SÇT¼XîÝ»Ç{+áj-˜1 L¸ ˜:¦âÕÄ:À%㽕®2™ d22Èdd2ÉÈd “Ép¨ß{?þ»ß2Açmï?Õ3“ñäcû}{——L@&™ €L2™ d22ÈdWǵÁ5ÍâòTTWí1Î0ü?ÙxëçÞç$Ø\piÚÙvÑj·³òÎþøãùE—vÁ3Ø«{ƒbLÓ\‹[[ù|Üo†áçó[[‹—˜E¬nä3áqÃÈE—‹¦y!,éñx÷+=ÉÖÚ;÷+Uiv¸³‡­£xô(ñ“Í„µLØõfeçé¦Y\žM•%p–ÀÕÔs?Ùúúz[ÉÛo¿Ý¿.Ãð‡¦GDìc"å\¡¸àt6Ê N+r"2fwÚÇDʻ՚é´5ʈ}L¤,""¦Y«îŠaŒÛG”w ‚1Ÿ."ÆxxuÁ)R:Úbmg»l·SDÜ~#—ÛÞ©MOé°Ûoärõ—:{8rt}tàH3ÒÍÛWW¦›ãíœaðjúüóÏûíñŸ™™iýòàààLZ­§(¥¤\ݱ‰˜µìülª¢”(%†uÔ^µ,"cö96¶®WuÜ´êiQ®î‰Œ ÓÑSPs-¬ÎíΦ*•tÈ—n>¡mzÀ+«R©ó¼Ë³Êa £v‡å¶U[‹§Êâ˜Ë„ª³ÑÜqÔî8ºÈæ°v=°^Þµ‡§ ˆh¶àý­`1é‰é*]vo.¸4í¬ç¼¨ž={v¡¯O¦i¶‰I‡Rzfm¿¥¸Ë’˜¦¹ÜQJ/”êËNÙb¡Tßs昜8¼[*»ÕýÆ^´1»MÓzô°[γÎh€uÎ…„ß0z†Bð »è׌µïÇýF%j>QÓ\ ‰€Rzt*³ëæó·æÆ Cù î„ß0NÙ¢óùbºáßÚZ¿»ŸòÅôÖ½b=ì ^Ó±9‡”Ó!_ç§7Ÿ@êóÅr☋MÛØãÚÆÒÒÒÒÒRç7Ö××gff^Öûk¼Ð+¸:îÝ»Ç{+\¾k¯æ°­E[äñWëdd2ÉÈd “\ ט îý?b8s¿xò7d2 çî»?`8[w¾¨qïàò‘ÉÈd0“™f1éñ$‹æÑ’dÑ4OÓ¶U­çÔõôk¢˜ôz½^¯·µ«]o'ùØx|~]:ÙxÏdªÏ©‰§B7nÜÝi+ݹët:Ngû7λ€—>“YrÑåsMç5–£9ÃðÇóù­­E—¦YåÖ›]nlläóq¿aXlll´sU†PLú|±Ý¹[çÚ1MsÝšÛù|­±û8;woܸ-o;‹Óo|R*•JŸ¼‘nÉkç]À«“ɔңókµ£±¬uí§û番H¶fÖ²Çã‰dkG*©®Í{½ÞÖrÓ¬e#žÖõ­Ö ».5“õ¥/O²XdSQ])¥ô˜Ï7ìêT[—:[ïÕÃæª[3ß4˧æ3»­SWËFÇwí^=Súã+Ó{]'¹W%ƒÌ^Û‰{Ó+q¿aÅîÁÖó&n?y’™ùf{${ôÙ»wg®‹ˆ\Ÿ¹ûîgv.¦€W'“âq¿ª¤g—Kß‚;Ÿ F%šŠKluÎ!åTü0Û)¥oK,÷+UI=¬W^ZžM•áxØ!¹hK‹V… Zµl$¦+<Ÿû•‹dkšæZØL4—Á†Z«w)vH¹Ù¥¶Ö;{x¸ü–ôvÊbIDAT FsY±´Õ•òÇó›±É#yk6U–@Ÿ%:ëÄ€ÛÙs­G%ÇΞÓ:äè‰Nw@)=:ÌãÛ¹xö(ûæ7¯7¾ºþÍ7³Vh:ïr^¥u2q.dÂãJ ~‡Ë0ü‰§ŒØÇ¬ÏW¦GFìc"R®îµš§Ûo’+Xë4…œˆŒÙö1Ù­6\½ÂöhRÛÙ.†ßí«žòöNí·Yë]²ºš+;ZïÓC©ŸØè[uW cÜ>z¤ü0$u,==Ñß;’u¯dðÙkoÝzv«ûâ\ÜÚº‚wr “5ÂÆt,VJ”|ìüØ0þäƒ'·'Ddâö¹ët:EäŸÿù§™fd:ïr^pÚÒÒÒÒÒRç7Ö××gff˜£KdÖ²ó³)™[=ï”YËFfS2·º´õ[_|ÿÃxrÎÜ;wxo¥«™mÁ•ÍÄXêáy¿ŽÿÃÔXbó˜@ÎÏ5¦àªÇ2͵¸åzÑ›d2œ¥ƒƒƒ÷?üˆyà ýì¿$“a?úþ÷^ýu¶”p¶î|Q#“a8<í€3÷ìÙ3öø\>2™ d2€«€=þ8G¼jƒøÅ“¿!“á|ñÂëÎ5î]\>2™ f2Ó,&=o‹dѼÈ^Zðx’EÓìüòüú²†úošÅÿõf4:L—¥ÏXL³˜®ÿ;woÜp6ܸqwçè7­ò£¥gWÀK“É,†áçóù|Üo¹èò=ûŸ ÜMs-nmmm-º4í RN1éóÅ~õÎgWç¥Ð4×­¹Ý˜Ï7L4®”êž<¹=ÑšÖÒo|R*•JŸ¼‘n kgUÀ˗ɺ„Œ£ëOÖ_èÃõ•bÒ*dkf-ñx<žH¶vä˜l6âõz›å'îÃUØÇÏ­e#¯×Ûe®˜ôx’ÇmkEÅd}¼žd±s¦æ3»½û¹ÍþøÊô^³Î;oÍ^½Ýî¶w¾½‡òÎ>÷i·×XÚú°7½÷×£í°«‰­v}öîÝ™ë""×gî¾ûÙ£³-àåÍdûÕ] ¸]šf-#mllt.>)¥G n«¼’MÅ%¶:çr*¾Vk9f[bù¸_©JêaéTüªRAWÊêiy6Uv„ãa‡ä¢Ë¥ÖÚ¢wçRV-‰éÊÏçã~¥Ç"ÙZ½Ê娮”?žßŒMölv9ª+p;{v>vH¹³ó¦Y\žM•%Ïç766š½êÚùZ6Í9™Ã#{õ¹W»]ÇÒµNw@)½uÞúÊÎw¹±¸ó(ûæ7¯7¾ºþÍ7³V˜:«r^ÆL¦”óù|¡t9ØZtõZ|²†?±à´Ê ßX™±Ž)W÷ZŽ MˆÓí7 ÉNs3tªêýéÆxxuÁišÅBNDÆìNû˜ˆìV›a±ÞùölTÛÙ.†ßí«¡òöNÍ4M³VÝ÷v™‡æ¹Õ]©ŸÛ«óÖ¹½;?Œ³];oõPdÌ>rLŸ{µÛ,m}¨Ïönu_œÇÝá¸ýäI‰‹œI&3 <o =Ö--Ÿ/¦«3x gÛÍгÝoí'ÛØØØº´5ÒƒRzÌê|KXìa¯Z>ZP?Å*?LB;0Ms-¬Î†ª¤CG·put¾³•^}îßÏö±ôéÃóÖêúLæI?xÊO'Îd""â¼5çPJϬ틈iÖÖ⩲8™¸ß0NÕ‡}´±§~£á„áöÑŽµ;Z‚ÚñmÚ'k¨Û¹CÅ2[ðþÖVÜoˆHãq×Îw¶rš>Û‡SU(""7ƒŸýºОþú³à͉³,à¥Íd22 åT<[3["êc·ºßØà5f·õŽDšær¤™[÷„ [UK¶‰ÉÃ|9øñ…R½!Çä„MÓš}+”ê›±ºžk«sbÎ…„ß0áµKç­ÂúTôíó±óÜk,­}hÎöˆ”ßã¿s÷ Ï\? eo¾wÛZ6{úàö{o6¢ÔY•ð¢úý.5Í6 ¤cz*¾6±2½è1=:µëpˆªèÑ)ùÉÆ[ƒ×¶ŸJWT×ý[m\‹[{$”yÓ""†?Þ¶§mðªšlÁûñª'–yÓbþÄæ1gÖùtÿ´Õ“Ê­¹ñ\Jù$žð碹^‰*ÍJ÷®Î4‹ËSõxdˆc.6m…ªÎλ4ͼŸ¨zb!_Z…=úÜ3ùuK×> 9Ã$œ"Ç&Í»7ÞùX)ù“•ÖW™¸ýDî:Nùçþifâ¬ËxAhKKKKKKßX__Ÿ™™9888V­¿ñ9 XIâŠTuÞÌZv~6%s«Ç£«¯–̦dnu%hë7çïøïAÀ±îܹÃ{+]`þµW6c©‡/ÜËívæà‡©±Äæ1 îÚ¥´jíå_¼bU]ÔÀ]/|¸|)F™ ¯ƒƒƒ÷?üˆy Ÿýâ—d2œ£}ÿ{¯¿þ:[ÊèïÎ52Î×9=M€—ɳgÏØãpùÈdd2É®öø¿ºx‰ ®ˆ_<ù2Ù+W©à*¸óE{——L@&{ü1à^ø}ÿ{Ì “£þÙlÿþâ/W™%p¾™Ì4‹ËSÑœ› .M;ï>YÍéJ‰ˆaŒÏ­®mÚåNÓ×_»vâ!X Ã1³wbO„¾óÞ›<¹=ÁW3“]$³–ŸM•%È/¸4Í4kkóËÅ•3K3'Ë—ßxík'hëêç°†»7ÞùìÝwƒò+~$¸§Ýã_Lz¼^¯×ëõ$‹ýËM³˜ôx<žd6ñz½O$[3;+,=LU” $êQFÓlÁû‹ÍXÓ§Ú¢ivý¼µ¹æò•Rztjù±ñ¸y|ÿaþæÙóþ§™±Ãn“Îײ×ëmý²9cf-‰dk¦)"mGv­m€NMÜ~ò$3óM~x!3Y-‰éÊÏçã~¥Ç"ÙZÿrQJß–X>îWª’zXj«Ð4‹…œ†ßí¢¹~óšË„RN=,iška3á7ŒaW°¾xö¼ÿÇ)gÌêj´àÞÚZtiZiy6Uv„ãa‡ä¢Ë%M³ML:”ªlïì‹ÈþζLNØ4MDÚŽìZW9/s&3ÍÚÎv¹žŸœn¿a”·wj¦Ù«Ü:Ë0ü¡é«\r…ÁVqú5×ÿ¬zs#ö1‘Îæ4͵¸µ5HpùâwÏûôJ„1Ÿ¯u¹«ÿÌ$œÍ`*2fwÚÇDd·Z3MkåêžUɘ}¤×‘mµ€Âiö“íUËG ÊÕ=‘‘žå§tNÕäËçÆ Îj[3Í!† ”óé¢Tý§Ûoär¹BiÁ]-Z×Ûä¢àËd£v‡HkÈpØGû•wè(×4—; º®J .×€Í]„¯N”Éž±.‡å¶»«™Y–\À½X/ïräÀ+à 9ù½ËÆ&'½P)t¥“6MëUÞ8o·º_/—1»­ã¦¡óÖܸaä¢óÍg“É¢iönÎåÔ«--yù‰~ÁHv«ûGžpL&û½Ñÿã43Öë°ÌÚ~g¿u]o®’õ:¼p†X'«ß#‘æ]¹àýxÕ‹ùtÿ´Yßµõ(·lǧÒÕkÓf ®lÚ—§¢é/-""þxÞZêU­óÖœ#—J‡|ãá9¿‘ÊŒ¦csÛ³©tÈ÷Áïÿ»o ¶þ˳Y';ffÚK‡¼éà#“ã©rùèÚZç‘'ÚD¶s÷Æ;+%J>v~l«”pÁ´¥¥¥¥¥¥Îo¬¯¯ÏÌÌœUKü³gèý?z;ðÝþǬç>yáÞ[éý?ºûîøàÒݹs‡÷VÈzî&œŸ‹ËdÖ O,¾€sÄ›‹€ó¦˜2„ýd¯´ƒƒƒ÷?üˆyàrýì¿$“½º~ôýï½þúë<õ€Kwç‹™ì•v†¯uNìÙ³gí™ì7…ÂùùÏEäŸþ·•ÊoŸ=cšË?|ë­o¸ÝÌà<´g²ÿòóŸÿ§{÷Däë"›Í2AÀ¡¥%2àœð¼K€Ë×s?Ù—ÇøŸþ)÷.ß ¿ùùÏ™Àåd²¯þÙ?û§wî°Ø!“Î÷.Èd “É r‚÷»ðíôýï1¹ç•ÉDä‡6Ûÿ€¿øËUf`p'¹wùõ×®õÿh;Þ4‹IÇÛÂãIM³OÖ)ÇÖÿto'ùØx|šši÷œ*¿"-Û‹éÒP­\‘Y “¬“}㵯u-w:¥R©×Y†áOl.¸4Í4‹ËSÑèÔîÜêJЦǨ4͵¸µµ(bµ•“€Õ´õçù…~¥©¶5GzuºAìàN²Nö›gÏ;?œNgó[Ǧ…D@©Jêa©ñ¾–xz­Ÿµ-z%‹¦u¼ÇÉÖL1‹IO$[2 T׿½^ïa%Í¥”b²±ÞÓޫΞ´õpj>³Û»ÅbÒÓe¹n˜æ¬$¤+¥”Zîº(uØJ²ØÚ='™ÍFZ‡Ü9É ]]Ϥ]c\¯nt½zvŸê¡à%Éd_<{þųçßvÿ‹o»ÿEósù›ëËã«pºý†!¹‚õç³´<›*;Âñ°CrÑåRg†[ÜÚÚØØÈgÂ㆑‹.—ddbÒ¡T¥º'"²_ÝuLNØ´!–ܔҷ%–Ï„RnFC«ïæ:ZiI½WX×±sU P?Ý€ÉIî]~õ{ã«ß×CØÿþïòÖ—­ýO7Íâr4×¼mg¥+¥ôÌÚ~3º/xŒLL:$WxXs;Ï|^zôªKO4ÍåˆRz¡TßÀÔ«6‘Ýêþi›«¯nU5+)”ê©wðmvÖ(¬j{¢Kþë=¢SNuÂîS=ÔÁ¼<™ìËçÆ—Ïû?]¿ÿÓuëó¶î-)=æóy½^Ÿ/–sÌ­¶,iØ‚÷ã~£’u}êeãyšzt*³ëæsýê¡,'çɺ÷ªWOœ·æÆ Cù î„ß0zÕ–”Ó!_¯§—Ø\IF¦cs)§C¾Îz¬Jô˜ÏÓ ü~Ð6øx·êÕfìs½FÑš™útãôSÝ«°×Tu0W¶´´´´´ÔüzÿÞ½ÿt| þ÷ÿþß´ðþ‡½ønÿJ×sŸ\À{+Y{­ÊÄÖ¢‹ç§ùCñß.-´ü°pVîÝ»w’ýdë¹O.½ëÖ^«ŠRsZ%¸@Cg²+òæâšf Þß ò€—ŸÈd “É@& “€LpUô|}²¯ýÇÿø·wîüöÙ3æ¯¸ß LàÒ2ÙS.ÿí¿ü—LÀàÞ%Àåk_'û‡o½%KK"²ûùçðÀ½KàÈO“ɾávÃí‘ÿo}ýŸÎÌ0Gç{—d2ôyÞe/ïøÑ ‡ýèûßcrÎ+“‰Èÿl¶ÿñ—«Ì,ÀàNrïòë¯]ëÿÑv¼iÖ²×ëõz½O$[3»VkšÅ¤Çãñ$‹¦9T9ñÄ•\€“¬“}㵯 ˜jk󳩲cnu%hÓL³¶6¿\\Ypi³`9É:Ùož=ïÿqôð½jYDÆì#""šf Þ_l²b²¹~v¸‚U]›o[Qk®´µf-}y½Þ©ùÌîa<\ë³6ÖYááÁÅ$ËiàÈd_<{Þÿ£õ`Ms¹¢”šo»kYËF¢9G8“ßØØØÚª5¥ôm‰å3a‡”SKÖ‘¥åÙTÙއ’‹.7 £ºRþx~369ìºVhµ-¸›¸Â™ìwÏû´ïZÜŠû ¥*é¯e]ª¶³]n®Ÿ5†?4="#ö1ɬå®BNDÆìNû˜ˆìVk¦išµê®Ƹ}Tê¬k…ÍÖ N. ðd²/Ÿý?:Oq-nåó™ð¸¡”_«™fãžæÀUzÌÓ•’ruO¤í–èIFÞ^!À¥9Éÿ¯º¥®cišmz%QŠæÊÕ=‘µ;DŠe£v‡ebóð™§ÛîuæœÊIÖɾú½Ñÿ£õ`Ó,&#ÙúÍÁRAWJöQM³ML:Dv«ûLJ¹‰I‡Rzfm¿¥°¾M­Pªo,k-·ªm-?¶B€,“ uïRÓ\ 1‰OMy½^_L7ÆÃ«+Ó6M[ð~"PN‡|mO¨ìd ÞûJ:Ôz¤óÖܸaè1_Áð‡:oÍ9¤œù2ö¹Öòc+¸,ÚÒÒÒÒÒRç7Ö××gffÚÊßÿð£·ßí_ézîÞ[ `@÷îÝ;É~²õÜ'ÌÀ:“±pæS@&™ €L2™ "Òÿµ0ÇØã™Ï|æ‡æ¥÷ÌH£Ý}÷Ýn·[¨ñxü·Û=44ĺÔU Þ Þ Þ Þ ÞÄÄÄ×Ó-…˜fb´-ÿðü€KÓJ‡jîîç¼7ôò¡¨”oˆ眒m £š{§Ç:l3-œu#ejËUØŽµn];]'•6=P½][?Ò“Ý£ÉmŒÜ?“5Í}›^#Ç3’ØfõôdO{ûH¬m.Ù™þ`¥w{µ°«·-iškpaa°êûý#[`0 «l$Ð3™–h<1à,[:Žlf#ýÝ©TfEÄvW}Q½•/Å¢Á~ûôX§mËj%“%>ê-اÕ[CGO©šÇ¶7‰ˆÃÞXXmd#Çëõz½^ÏH¢¨Ê‰Öÿˆd­Q=# Ó,[£”¬Òxb$7<÷_ÏÈuÁJ)]7Bííµ@šæ˜ŸîmVºžž8“¬¾hù,,˦ñׇ׸¤[6^º¼”wˆ·ò6N²mN¬J’£AC×ý=ר¬z.½~šN7B›c {2½þ¯ôdO{OþÏšºW¹ñĈ'dìæ Ô4[G¨¯Y)YÎX§^«Ì½ÂÊLŒޝÁÝ;‹»ëË ×O™““ºn„ÚÒ¡¢vsÆ›ç¢+ÕܪxWEáÈJ9ú6Ÿ»Kž™HëzsïÔx§ÍLŒ´‡ŒüyN+ On÷]©q§$ãÑòç]óòãÛ4ìM"ùS¯•Í5Pi.޾©±›¦žÅmØ^Ê–iÜ4•–¨ÞÊSͽÓóµ\mño3wØU¾žŽ§Û§”Èr沘f6³,J5÷Mo‘õŸ­Ò¸H£Ý!¹ÓwU+ªk¨k«Ì½b2 ŽwæÞ%XgqwÍu_^¸¾Õ[é-æë7‰ìj¤mçFöõO\žéïž(wçŦZP×E5ÙĺùBÄú}— ÍõÆ5ÍÖ16-ýÝ“i]7B^ãZoÍϹœY–MW+,ZE›ÊÓÝ«¹¯×òÀ ‹·}KÓlcÙ¶àD÷¨}óU©æ¾’Ì[¿ä´œ¹,®šo²¼<3elN…²[ýé_èܸÃöÛ§Ç:®%L­³‘ŽÖ›¦­ßbZ~îU²ÍŽ º´-ß””.é–ë¿ìòÚH8ûÏ»S@Ó\Ó}‰æï˜Ð4—Û/EwæG.úWÙÏSëºOZÿÍFžîEi^?{Y¥ñâ^Íû”’Tfecpµ³ˆ¥¬ûC†ž?YãÜ [ˆGE©æ\闌׾¤”_„ Ë To×’p¶Î±áL{h²{Ô¾0èç±¾æèDÚy|½•;oætûÅ0ôÂùýþht½¦i´;DÒ’?ý§”£oº'ÓL­Ï®Rãe¾{E×Åçviši6Ú¢§Ó“=í•Ïà•¹…G×EÄ?\p¥°ò¢•[7óQÍÍ¥Òºl“OͽoË%­ÔÔÄVËË«ÕÛ.%œk0öéFȈdMS³uŽÍ—¿aDs Ʀzó5Šò…çÜUÈúøÉQ|n±JãEš{§¬¸-j¶vÊž››ti;˜{Ñ|UsïôØX¨ÏQû’VjjËå€ý˜CCCCCC7ÏóåŠP÷N:ŧtuˆxÔ¡[n¶.üVhÕÄÄÄÄà&³éÎÉÙÙYÖà {ñÅ‹?ÐÕÕÅzhétºÌçÞVWW÷¶[=y–mرgÏsŸ~¬ûä£bóvæÄ+Yn-Ô!â @¼p”¹öf=M†çóÏÕ4ÍÄh[Ü}£¶tòð¹£·lÒzñèâᇿªo f¥Þ;^aø·ÈÒÉ‚½w,YØèzË#(õÆGŸžêº}?l íwl餳ÿ«ë ¾ãU uo–hpÔ½/ø©IËñ‹—;(¿½ÂpéÌ…Ú¥Ó=÷\*s(ïÜH½¥“‡Ÿ~Ç ¸*³¹c÷õHµ„[:ù°Œ]L¶ì~7à ©xrR×`ÿLÖ4‹ »Ç»n$aæz<#‰Äˆ5<ÉšÙHÀãñx‘¬¹>m6ðx½^g$ašSmžÅuwûk_¿å8-G;¿õÒ˹?.î9ìt:>¹´9œN§Óé<¹´t2÷¯ü/E¿—kaé¤5ùáÃ'ÏçJ´¯>¼yå:vüâ¯ÿÌT~¬¢–KÚ¹tºçp®Ÿ=§/IµNŠY:yA'—x­¨‹xó‡Ã>==Ù=šÜT9i®Á……¹¹¹ØTo³RÑàh>œtÝÆÝÖðôdO[XBÓ}IM„s™ížH9zý‰77{C]úÁ÷:V¯N.žüÞ£=-¹ß¿Ô{1™L^|B.HÉ×=L&“ÉäÑsG¶h­´…¥“ËX2™L&/^<þvi9~ñ‰÷Öx:±åhgäÜRù–‹ÚY:y\N^¼˜L&“ùQ)HÅÊeñæÉ :I= Nª7qLõ6ëFÈ*ÑŠ5Ø›6PÊ7<à´†+åëh°ÆIeVDL3ŠH“Ýio‘åÌeq.,,, V=ÿéwêì|IsM>.'Ë«7æu\N®Ÿþ»ô쬼\¹ôì¬ÜóŽÛ× ª':«¦[¹îxÝ›×3ꂺ\Ë›k½üYÌZjÖb»ÒIØÕ>ÖÝÐê]ìžöÛ§{òÍl¤¿{"­ë¢ë¢¶™¥ºj7D׭̳m=Eçæ»@–N>·Ó%í,sCI¹.î™zmþÒÖË/}ë[_}óq+Âå½Gs_´Öëre[¸½kꉓ‡;uý½[u«Lõùæ×õTl¹ÈÆ)F¨â: û9Þ4ÍÖ16œi N„§Òä1ÍìLx"%޾©žLw0º5Ú¢R¾á}y»ÊæƒúÉ×õœ\j±Žçw¼îÍcS×rl¯ÔBËñ‹W¼Ï¥ZÉö­×÷Þ^Sß.îyXž°î3ÙÙ;ƒvöÜŸ{Ó4×ÀtŸ#•Jå¬dR"ÒdoØÞl4ÍÖÒêÐucjær® Ü«[Kj ¸ÉÜ·¿ãžï•œ Ût*pédáµ·ïýàR.WÖ–m¡,kÚª–NÞ÷Y¿,¸eË/¿ô­7çÎ^^úÁ÷ªur›Ý€ƒo"¢Ù:džýi7ì×u#Ø6µì]7‚m£5æ“­s<ìSéÉžüÍ“û¹‚›ê}龞ӗDnïš:zîpÑ „-ÇŸ~Ýdn๣ùko-Ç/ö¾tßáÇËÉ råZX:iÝÐøžÇ_ÿ„UµâõŸ¹¯ì Š?,O\ÜøT@Ù¾mª½žxýãïÉ]q¼§3òðá“K:Y8Éz7J; †644444dý1;;ÛÕÕµžp ¾R™ÏŠÀþrâÄ ¾” P‡na\³–ã©Ü€x«Áêê*5ìÌ>}œé#=pèÐ!žh Ø™¯d÷oõÆæìÌ•+W¸µP‡ˆ7ññÀž¸Y>÷vèÐ!66Ü$~ú§šê P‡ˆ7@ªxrÒ4£mAÃz¦jî›ë´i¬/À®ÞÌl¤¿-8››››ŸIxt¿=Âf?1°/ã-yf"­ëþáÜ“µ5ÍÖ9>˜ÊvbÄãõz½^¯g$Qœ4‰ë_HÖÌFLjdÍÇÓÌFžÂgÂå'ŒD^¯×9_\>sÎj-×7ÏÈuüâm£*ŠGE)ŸÛYf‚l$2t_8 ût#ˆd7ÚÒ`Ü›êmV*=ÙÓ–ÐtŸCRá™ìzÀl9Nr´{"åè ÷:$M6¾(¡ØT¯CRg’šæ˜ö)¥”ox~À¥i¦™ížH­Wœ y Þª1ÍìÒb*—|N·O©ÔâR>º”ò 8¥ÁÞdý>ÖÑÐ`o‘Tfe½…êãXÉ*ÒdwÚ›Dd9SØxOGƒ5¡Dã• 2]7‚ý¹¤Ô4×àÂ9ÄÛ–V2©Í ¢k×ú¤¡ö¡ëÛj\Ó\Ó}ÍJééÉžöö‘'$€xÛœn¿èºO–þ³ÑîØ<ÀaoÜÍþ4Ú¢”og'5[çøÂBاD$å’o›8õ5+ öçïøHŒŒ$LSÓl-­Ž\ò%ㆮ;Z[l»wê/ßþÔÌå³Pd9³y\çÀ°O)qØmÜZ 7«[*•AcóöѶàdOû¤ˆˆøÂ±AM[çx8ã …Ú å wÚv·C¹ö'{¼“bÝ6⬜…¡¾Åî‰Éžö åûÔÜÝÏy?žû ž8úB6-É€›“644444dý1;;ÛÕÕU—å;'àæqâÄ ¾” P‡ˆ7@*¾övúôiV à@ûö·¿½)ÞºººX)€ƒ.NoŠ·º¼©p³¹rå ×Þuˆxoooooâ €z7ÓÌF'`=þÍ´ž£6’Èý7 "ÙrÏT3kxâšÕ¸×ëõz½ùYpÝãMÓlö&ÑõtfEDD.g–E$Ï…ÖJ&ÕdßÙCMM3;Óß=‘rôNÅææææçCæ)Û€o"âtûE$OŠÈå¥Å´®çžÙ-’ŒGýngaVZ®efú+g+™”ˆ4Ùr9Ú9>èÒ´²­mÔ‚‰‘£G?9RXPTÕ'äáÝ@¼h´7+%Ë™¬i®dR>ŸÏJ;ÓÌf–öF‘äh÷DÊÑîuH48ºñ¤l]7% ût==q&¹¹.t¹ý¢ëF°­¿(ùª´Œ»Ïû£c­]O/.]¶WZ[¬ ²ú„ ¹øÔ±[JÍÎÎ ¹çž{¤¡¥Õ1‘JeV¬jmÞ-Ñh4O³/Jk¨AL3ŠH“ÝioI-g²¦³ADD”òõt4ˆ¸}*Æ΀q .„Å2Ò“=íÊ7*Q¿{@3‘ÔrfIRMn›¦Y'ütݵ¢ë’ʬˆ4ÔÖ×àBl ;Óß=™6‚ýö鱎©¡5g./“îLÊ:?ºQ¨Uïþ€:Vü@œ¢H+I¿†aþð€¦i-­ŽÉtzr2툈H£Ý!*•+¿¬IÊ\äÊÈ,¦i¶Ž±áL[0š ¤­[³NlF.qs£ÕÔ ýul›Äi´7+¥”Ϫ“ZZ›•RªÙÊ+M³µ´:tݘš¹\2åræ²H2nèºl¾ÇÒ4#ùX#8ì[´VØ#‡ˆ†‘¯ÝjœPß¶o -­Ž‚òËúsý¦G±uއ}*=ÙSzóäb¸­=d^ýÊW`! ·µy½Þö¡š{§Ç:¬ü«ÒZa #vËnnÚÐÐÐÐÐPá ÙÙÙ®®.NߨS§Nñ¥\€:D¼ˆ7ˆ7ˆ7ˆ7ˆ7ÀÍãVÁzìɳ¬Øuç/¾@¼í±“~ˆ•»ëÄ+YNNêñ Þ¨ƒx3Íl$àñz½^¯×ã D²7ôÛ÷M31âñŒ$ÌÍCöÝC¬~ZO'°~÷(ì?`_ÄÛL÷DÊÑ;››››ŸIxôÆGK48zàj£”/‹Å¦z›•:ˆý€:·LJòOtÓ4[çø õì|U— ÚF“9zô“#O¾Ú3³‘Àú3K«OXöñlºnûg²›‡IV…TØ”5<ÉšÙHÀã),=KûP*1²^³Ž$ŠK´ ý,£ÁÞ$bšÿikãÉs°âÍí]7‚mýE§%“£Ý)Go¸×!ÑàhrSÅÝçÎýѱV‡®§—.‹Èå¥Eim±RZ}Â……\|ð‡Ã>==Ù]0²ˆhškpaann®´B²š²†§'{ÚšîsHj"œËÈJ}ÈËF!C÷…c±°O7BH¶†~–c=Üÿ¦ÛØÑ`_Å›kp!ìSºžžìi/¬·âQi²;íM"²œÉ—Vùçq7Ø›D$•Y1ÍìÒbÊ*k™° çÀTo³n„Ê_IJæT ×Tƒ½Éú}¬£!ß›ª}È×vK‹)¥|n§ˆÓíS*µ¸TS?7Wœ¡övëùã_|ppa¡ÖDÜ€x³κˆTt’P×P{ÈÐu+6J2ÉíSJ¢ñ¤¬dR~·³èÐ_yÂr:B½Í*쟹\CÙHÀãi·šÚîbWëÃJ&µy@Íý,ŒØp,677·0Þi#Õà†«é[K4ÍÖ16œi FS™‘i´;D¥|ÃóùŠ¤èº’¦¹Ü~1 #>*Q¿{07ÚÖVïÀDxÊ!MnÓÌ΄'Râè›êÉt£ÛXä2}(A ÎaodO€zªÞFÖo É]FrØE4ÍÖÒêÐucª°˜*ŸbF¾v«q ç˜îs¤R©M5Vî¶—í´³Eò#Ä“¹¥v¬_8ܙ °ÃÀ¾ˆ·„ÛÚ¼^¯uiz¬Ã:ÐÛ:ÇÃ>•žì©rÿaCKk³RJ5Ö>µLX1™lcÃþ´öëºl›ZvX÷¿Ôzÿý–}°F0Bíí!CùÂã6v8X´¡¡¡¡¡¡ÂA³³³]]]«««¬ëí±'Ïò•ʰëNœ8Á—rêñ¨C<ïm­®®òPSØ]Ïžÿ&ñ¶—yèC‡qù v׉W²ÄÛÞWo¬Ø]W®\áÚ •¯ÞNŸ>ͪP/¾øb™xëêêbÕ®t:]&Þ¸8иö¨OÄ€x€x€x`wÔú­%¦™m FÅo=ä:ÿç§æî~ÎûqC/ŽÉµµ·Ñß,®”¯t_86èÒŠæUev'Þ*Ñ4×àÂÂ`IþUÊEkÈs"Jù†çœ—gú»'¢ÁQ÷æ©$?‚$GÛ‚eG¸Þ*-`ÿÛë““ ö¦íEN6ð=eÛ4#×ëõÇú—5°ô÷Šd#ÇëõZÃ/¨ V¹­ç€ˆ7IÆ ]¿»byt9³,’!9Ú=‘rô†{ Ž&smŒ ]÷…có¡ÖšæYÒˆi&F»'RâÇbsss ƒGô#óÃ>¥¬"’ê –2''ggg‹†ÜsÏ=¹0ÔP»±žŒº¨kÈÕõ¦Tsïô€³Úþá…A—Bñ¨ˆ4Ùö&‘Ôr&k:ärfY”j¶7æjÁÔõ_ÙFrs öÛ§Ç:l¬tÍö¡òß9)%_;™ÿš®|)³~]jç¶¬Š”ò Ï»ãmÁh4žpæÇÌÅž®K*³"Ò +™”ˆ4Ù¶®ëØ4×Àtßr÷D:=ÙÓ>YéN¾„òß9Yi{Êy¬ÏaLS3Ç\6‘F»CTjS.nÿ¢X™FDD³uŽ/t&F•žì)¼ïÑy¬¯Y)#Ôwû”ÚTúIj²§}ÊÞW8¼´‘ü½—íí¡¨8úB6MÓ4[G(×Bá=–€ýO*4;;ÛÕÕuOÄñI5€ˆœ:uŠ/åÔ¡[êiaò_¡¸ÉQ½ˆ7ˆ7ˆ7ˆ7ˆ7ñññññ ÞXâ â â €]q «`=öäYVÂnyä¡X ˆ·ýâ^?+!ïïæ¢þÝw0áŸ~áK¬=ÄÛþrä—†• "~øcù©ÿÀ 󽱯Î%P‹³ÿ\£ó_ Þ°¿o{èä£ÚÝX]]=tèÐêê*[„ýgÇN¼’åP‚}o·h;øa½QE¨Þ@õ€xˆ7Á5JL31âñx<# ÓÜí\W¢“õo·è;ø©qóy Œ$Ìý¶/ßÝý½·hðx‘¬y.þõØ»ê3ÞêcK×8ަ¹]Wz®£W¯ªüÔØ¸R¾p,›êmV*­ñµ}cþáù*ûXQgj웦¹æ‡oæÏ ˜ÙH[0*þp,6777?’ðè6èµì û'Tn’£Ù®ÅÛÆ–KŒX™<žü¥ü8‘H Ê(ÓÌF¯×[æ5\¹ñêÎÑ4£mAC×uݶæß˾¯¯4Ná®™Y'8’(Z E³ãó6âmMíàg{óh°7•ì´ù T´YK÷„J[¿xx…·+3Ó_i×½ .TÚK+½ÄnÚ½1yf"­ëþáÜ[M³uŽoÜk-—î ;>ìÔ~Ü+»5kÜÓò·¶þ©åª•\é\òÓz€ÇãñŒ\PÐþ³ËÕ›®Á¸Ûzwœžìi KhºÏ!©‰ðLv}u躱(¡Xاëé‰3É2;âh÷DÊÑîuH48š¬½ñ*.J(6ÕëÔÄ™¤õNÖ§”R>ë²õ^fnn.ÿ¾>)΢qŠ:™B†î ÇbaŸn„‘l¥Ù‘X;Ž·wÞý¶*?;·dÜÐuñ»­ÍjíWÖ;ÙÒÍZº·TÙúÙH uôNÅæææ*5¸ÝT•]÷ˆ~¤ì^ºåKì&<[ŠR>·³Ìk-—Ýv|Ø©ý¸Wz<©}OKŽ ]÷…có¡ÖÚ÷´mM{³Ä›R¾á§õîX)ßðXGƒõN9•Y)§§£AœnŸR—^~ˆGE¤Éî´7‰Èr&Ÿ‹Õ¯>aOGCî={É˾¯ßêÕ’]ZLå^-N·O©ÔâR¥Ù%ÅÉYÍ휜4ó?³çž«4Úì¹ç Ǭ=-Bííí!C5÷N87íW[mÖ-·¾5\¤ÉÞPÓ~Rã ªÖ]·tªr/1α_Ëk¹\ɵ‡m¶SûžfšÙ̲(ÕloÜâàVv.¥Ó¬ýgŸÞ9©ëF¨Ý]·¢«áúOhf#ýÝi]]—­‹•Ljó€mÎUª·Â?¿6÷ì½Þwóµ¹g·]±å“¬àsɧÆÍZi´’áì'À.l£vvÚNí{š5|#·¿fv6-ñ&"{cñ F»CTªúa¨¬O(¦™ O¤ÄÑ7Õ“éFk›—¤ª/v!ÞDdföo;îyWáŸ;Ë6ÙµÍZi´’áûa?aÏÑ4—Û/†aÄ“.×î¾–w~ع†vöåž¶ˤ½˜éræòúõ&»ms‘«i¶–V‡®S3—·¹okÂF»c½'ß§Sf^ñdnA­-¶ Õ:·–lËÕ5³ôç+Ï|ÝúïWžùzÙvé Xi³nÚ*f /Üa¶µŸl/ƒ7æRv/­ø»i÷Fç±¾f¥¢Áþü}‰‘‘„in•ßvtØÙáá«ö=ÍÊuk¸u!m»ï Ц=XûÏÞ|0`1ÜÖ2ò×<ŠØ:ÇÃ>•žì)¼)¨µO¨i¶ŽPŸCR“=íÏHRœÃ~]7‚mS˱nmJJCá8E­Yó2Bíí!CùÂã6’i—âM•ýù‹§ÏýÅÓç*ýw·æ^v³í- Ó¬´õmãÃþÔdO{~Üõý¤d×-¿—V‰ÝŒœ­sl~Ø/¹­ãõzãî\´­mTigØÁa§ì!¥Æã^í{š•ëF¨=îö©í½RœþN»/6úÐÐÐÐÐPá ÙÙÙ®®®ëñ}¦Ö­±Ñ­>Ùsóxìɳïôúyb€åÂüwsÑ»Ží`Ú/>Sß1oš‰Ñ¶¸û^U^b[6þØ“g÷ÉWâÿÌ;ùè‡øJå}´gf#ýÝ)ÿð «ÊÑl}¥ò‰|)ö—µ5us¯€h°Mvýý_>öÜìaØænc–T޾éƒv&à†Æ›uSé { *»ªnÞ+”×þ©Ô/=Ü„Glª7ì³x[ãœ=³ººÊÃhPûϳç¿I¼a¿UoŠ•°'yèC‡í«Ë'`ÿÙ±¯d‰7ì/kTo{ú€úØ®\¹B¼í½ ?ü1+ê Àî"ÞöØßÍEY …挧Y ˆ·ƒ­>ªû“Î*oooooâ â â €ëi¿|k áì–ó_ØG_ÊÅ“8»âÄ+YNNêñ Þ8¶¸öfš‰Ñ¶ ¡o¤ /ti[¶kMÿðü€KÓXÑ€}W½)å Çb±©Þf¥¢ÁÑ„i–ͳÇã)û_ö]¼å4Ø› ’Ì»n$aæ‹<]7‚m›ò/3Óïõz=ž@$k€ýoɸ¡ëâwÑ .,ÌÍÍå빤8æ‡}J)å+<©ëÆ¢„bS½IMœI²º7FMŸ{Óu#ÔnˆˆjîpÕs©Ê*åëéh±7‰¤¢ñäÀÀà k°â­¨&3éïžHëºèº(V#`ÙÉL3;žH‰£w*ìS„ .âMd%“‘&{CáÀF»CD–3—«ä"·–ök¼išk`دëF°Šæº© IDATmjÙ!ÖÝ’Iièõ9$5ÙÓN€öÖ-[&YÙ›A4×àÜ\É`[çøBgþ¯#n4r„[Kû³z€xàFÛGÏ{[]]塦€k÷ìùoî—x{ä¡:ÄM×îÄ+ÙýU½±I×îÊ•+\{Ô¡VoŽÿãM»Ê>ø?Ùo ãíÑñ|ò~ýæ\_}òëì4P‡ñfeÛó/ý;ë°omïÚÙ¨·x#ÛE­''«g›i>ÿ¥>¶¤o„eËÇÏýö[4Ö/`ÿVo5ÖmJ½»ï̹ñÏ=lW깓¿pÃ`šÏñþwýþý½Àó €êm—ÝvG£ÈDLó J:«ž³ê¼çäÞÀq?)åÿð¾jãL|ê±÷|ñco]út`ìrçýãž_ÒDÄ4WÎ…Þ?³¬+õîÀÙÞ)¬ R—gÆÀÙ¾QÓŠÆy£VÜÀÙÞù/‘OÆ2ºn%´5{Ôõ¶=ÿðì’®KÛ;Þ¤ßõÛOýí_Y,­çtý™ñçßñ'O=²å8ÖðÌÔo÷}V~w¼ÿµò§>ùWÓ‘ïüéûŸúþøµòµñ?½ iw=xöÓ-JFTÑ8‹½Þ;å—c?{ûΜ{â+‹òÔ#do›ÛÒŸ™8v4ð©gTÓßøð‘¢z®RïŽPeœÛîh´~wþ‚5Î÷ð‹˜æó?/"M¿ôkw4ŠÈ_þ×’’UÆ)ꀮ?3Šü+§4 ^ìæÉÉÒ3{æ??•;ï§ë¢ÊOUË8UõÑu+ó~aûãhÚ]Ž÷¯Æ2ËO|âØÜÄÛLsåÜgÇ~ wÞÿ¹ß¹øØs;§‚Û~UÔ÷7jIõUË8¢ýÒýCOÝÿÂä»&ÎéÏ|ü-\{€ƒïº~¥ò¥Ëß‘¦_ºíÇ)CÓßì¾Sן‰Ù¢<Yþç©2Nyw~øÓ-Jɯ¾öØ)€x«š@w=xü^]füÿ±ò«¢ëÏŒ?ðø æ¶Ç©äßý'}GUfê·~_«õaMk<ú‘þ×Êwfþà¨5¤tœ’òñù/Þÿ®‡ß×8|Nî¼ÿ#¿HéŸ644444T8hvv¶«««ðék|_IÞç¿ôMžûÜ©S§xÞ oâ €ƒ`‹äŸÊýÐ'¿þÁßÊú’›ûIåp \¼ðÏ[î-ÿ`nn-)\€}ëÄÚ×·Ž7RµËÊêO¸ö¨C5})×ë]eMŠŸûEõ¨CÄ€x€x€x€x€xop#˜f6ðx½^¯×ëñ"YóÚZKŒx<ÏHb󳋭áÞ# ³nÖ^~½å$‘ûo6DVÔ…²ë¤ÊêÚÁ®q¹ ˆ7{i¦¿{"åèŠÍÍÍÍχ$<ºÝãfí”ò…c±ØTo³RÑàuœÑ®gC%šf³7‰®§3+""r9³,"Ñx®ý•LªÉÞ¨\XXXtiÚ̳j› ö]ÿM@¼ØK™”ˆ4ÙrëÎñA—¦Vuùkþ8‰ŠJ½|eÐÖ?µ¼å,ìMåê «˜Ø8š'F<ž‘ êBõq¬áH6WGmêÕ¦E0ÍÄh[ÐÐu]7‚m£ë Uq1­$Ì\…¶^àÇŒÓí‘h<)"——Óº®ëF<)"’ŒGýng¾Á êBir[a¦¿lõ\¶Ï•&)]–íVð…æ·Ž'¬çkaÖåni#Ä€½äö‹®Á¶þ¢kr´{"åè ÷:$Mn¼%×E Ŧz’š8“\9hèº/›µn=ËdÜÐuñ»èGæææJë9]7‚q÷ÂÂà–ãXÃÓ“=ma M÷9$5žÉšfé"hšk`~ا”R¾áù+Å«,¦Õ§5ŠøÃ±ØÜÜœU„mZœF{³R²œÉšæJ&åóù¬´3ÍlfÙao,,õÊt Ò*ÝÁ$•–¥ «Êô»«¬„ímÓroö’kp!ìSºžžìi/¬`âQi²;íM"Ö±;v«§£!WEã Ó4ÍlfY”j¶7nTfåÏVéF¨½½=d¨æÞégi=Wxm¸p„*ã4Ø›¬ßÇ:¬qR™•ª‹PXUYÌÂèºìŸÉ–-‰ZZÖL“ñ¨ß=àö)%ÑxòòÒ¢´¶4Ôt°h•î`’Z–wcôL¦üà ƒ®J+¡ömZiMþ»ioö>ᬠbEq]7Bí!C×­À¨l¥ð gõƒr®ï´Y§@³‘€ÇÓnÍ¥Ò¡³†qªê‹P}Ms L÷5+¥§'{ÚÛKoÇX¿üfÄGãQ¿Û)v‡ˆ,g–2©&»­¨Ô»Î¶\^¥|áXØ àÂ-™°ÖmZiî?¢z°hš­clاÔúÑ­Ñî(H£Ò3r»Á4³3ቔ8z§Â>¥v%"eoǰ.¿†áw;5ÍÖÒêÐõôä¤áw;oà6¬}“9õ9tݘš¹,»¶­‹iÔ4â À^ DråšuIÌaoY?Fç€Õ£Ñe]À‹'sljžy-%ÂNÊ©¸ë¥Õå*ãTÈ„aŸR²éjÚF«ÍJ)å³â¬¡¥µY©Ü™½r1ï@íɱå$ÛZ–†ŽPo³JM„#Y³ì„•¶©5ÜêÌæáe!Þ쥄ÛÚ¼^oî’ØX‡u>ÍÖ9ö©ôdO-wâ9õ5+e„ÚãîáÚk,Ms ûuݶM-;¤ôæÀÇ©¤t4ÍÖêsH*¡qËÅÌß@ØÞŠŠ£/ÔQæ|£uù-Ÿ|ÖŸå"¹´5ÖµMRû&Ó4[G_×ÓÖm8e'¬´MÇr™²÷/jdÅ4µ¡¡¡¡¡¡ÂÏÎÎvuu­®®ŠÈ£ãÿøÁßÊãL{ÂúpBTü…·nnéÔ©STo€:t «°oiškpaapûR½êñ Þ Þ ÞØ5Ý9ùØ“gYS€ƒâüÅjý`ÀÉG?ÄúpPÿÌã¨u3;ñJvŸ{³¾Ç ŽZ7­+W®pí P‡ˆ7ìë‹_ Feš‰‘m>“ˆ7ìCŽå©Qò ñ†:ÓÔ²O&ËÔvÙHÀãñz½^¯7ÉnÔv‰kàHÂÌ?ø#_šf6ð>#ƒŠñ†½ÐвOž¢´2i4,¡ùù¹¹¹ØT¯LœYϧh0(áX,6Õ»<52ÒwÏÏǦz—ןG|y&œé™Ÿ›››–àhRr_®z]Ü €xª\LÍd ,Ms ŽwæžÁØ`oÚ×Ñ7=àÒ4i°7¥^úåÐúïë¥ÛÒ¢äžÏètû£qŠ6µã8Øešæè‰÷Ï\ëØ\Àµåž¯ÄçÎ .|špé“…W2©”ÑÓ>)²y* Þ°' çì‰f.÷¬g[v¦?(Ãós.Í4£mñÚši´;üá±NEØNNâºpk] O-oÔaŽÜiÆË™åZ«@[Kër<ɺ@¼aÿp¶ÎP«¤rAånšìi÷z½maiõGƒm5}~ÀÖ9Y·VZ7Orç$€qr»”gškpÁUN ëÿu ÎÍåŸ&ßÙ9("rdáHé´Eí¸æ6=…¾x.@õ zÛluu•Çâ8@8jÝ̶ñ@yä¡XeŽZ7­µÿù''uˆxoooooâ â â â â @¼± ÄÄÄÄÄ€x€x€x€x€xooooooâ â â â â @¼@¼@¼@¼@¼@¼ˆ7ˆ7ˆ7ˆ7ˆ7ññññññ Þ Þ Þ Þ ÞÄÄÄÄÄÄ€x€x€x€x€xooooooâ â â â â @¼@¼@¼@¼@¼@¼ˆ7ˆ7ˆ7ˆ7ˆ7ññññññ Þ Þ Þ Þ ÞÄÄÄÄÄÄ€x€x€x€x€xooooooâ â â â â @¼@¼@¼@¼@¼@¼ˆ7ˆ7ˆ7ˆ7ˆ7ññññññ Þ Þ Þ Þ ÞÄÄÄÄÄÄ€x€x€x€x€xooooooâ â â â â @¼@¼@¼@¼@¼@¼ˆ7ˆ7ˆ7ˆ7ˆ7ññññññ Þ Þ Þ Þ ÞÄÄÄÄÄÄ€x€x€x€x€xooooooâ â â â â @¼@¼@¼@¼@¼@¼ˆ7ˆ7ˆ7ˆ7ˆ7ññññññ Þ Þ Þ Þ ÞÄÄÄÄÄ"·Ô>êcOže}ö¿ó_¨)ÞyèC‡|ôC¬2Àþwâ•l­ÕÛêê*ë p \¹r…ko€:D¼ˆ7ˆ7öÄ-¬Ô‡ºüàÊ#=p —ñ ÷;ÛÐgÏîý†~á…ˆ7Ôÿîƒõ´8ú…/èe<èýǵlèx`o{õÒK/o¨?õt–‘þâ úYFúâ ØÏ‡Î[4–‘þĨlXFúâ àÐÉ2²@¼{pè¼Egé?@¼¡Þ¼zUmk|Ó\:uWÿ_é\¥ÞóÙç?þ6íš®YÍ~U:>ûüÇï’oä¿Æfw¶Œ½zù+xï»|O û\øßJÃë ÿæRøíƒ¹[½ÆÝL©7þáÌ?v»¶Ýd×7Ä n¿†\zþìù—7m»;ÞþÀ]·WîŒ5IFì•F#ÞPGñ¶¶ÝxSk"JýÖãçƒwiši.}æíùÈ]ßûÈSö@cÅ£ÌgÞþ‘§å½Ö$¾ë£K>*"Ê|ÕTk""æÕ5õê®ÄÃÚNãá>ú]×ÿráüÐ[ߦ•]¥ý4ë´ÿ¦¹ô™Ì¨üvTæ«b^—£öÊ—{ïÿãä½Ç­}ìÒS Ç?<"»ªì0º±ëâ·_s7r‘fE×ù³ÿö¦{Úï¼u‡ýáDê*Þ¶ùcªüKzM]Uw <þ]ÿÎgÿ|Éá'W3_~èÈ;ï~›»%üÜÕµŸ\=êí‰êº®ÿÕGßþ)kÈpË‘wÞý6ëgøüÚ«kÊhMR4‹mýìÒ2æäÌ“ßïûÌGÞ ÔÓO~ùW×Ö‡çúÿŽ~þÅ‚~V^ý/ÜŽº[Ü-áø«Ïå6Ùùðú†SÏ}*·eÝŸ:_8;k4ë_úræ'™Ój9ânù½/gÖJ{~þÏÿ8¥ëþÇ?vX™¯®©«Êöž?:¬Ì£p‡Éÿþå/ÿÞ;ï~[A³¹ñÿéÌ6WUºZqÏ\_Ìë·¡¯‘¦Ý~×Ûíšö£oge=ù~ô¿ùÊÙ³g¿ò•o\2ÍrѸiÓüñ†z:9in÷Çz•\Í9ü®ßTJžþúùWÕ«WÍ¥S÷¿ðÆÿÁä/‡N}ãêÚ]ý‹#¿©”R÷\üØ[ÖäêÚ]ðõ¥ÙsÏýõô¼^©èGOY6[<‹švk_½j¾ºôÅñÿô{ßý®;E^ˆ=—É _:5`èúoÇÿ&Ô¦ úYix}ô¿p;~r!ûúÐ[ÖÄÑõ§‡ßeýùÃ/àãQý7‡ã=|ŸýÃßÿò¥ücfmñïè'Ì}ià òíñOœù᫪°Û?yuéîk9¼Å¾Wô»®?=¿v⯇ïÓõïŒOãÕªÃËvµÊžY¸˜×oCï‚ÆÛï0MÉ\²ÂlåùÙoÿÛkÞØòÆ×Hæüó+¥£ i·o¸™«·Ü ™µrC~rõü³Qù•†Ãw¼VD–˜¹ºVv’W×Ô«·ÝñÚ‚ák~ß“êç'W3‘/|ÿCÇ\WUÃ[ýºž:÷ÜËÖð.‹RŽÆ†Mý¯4¼Îú_´]ÖD”º÷ÿpY-Ÿ_xA©{ï:¬^=üŽv¥¾»ÏoýÜh·ÝñZë÷ÏÝÿóÖ\¾óO™v°²ÿ*ú]©{ßÿž_²f-ѯ£`ÖEëtµÒžY¸˜×oCïöIËK—2"òš[o}ˆüÛ~´¹€+á™&×ÞPWñ¶Í×Lî„ÏÚúõ†Ü7üò/®©WÅT"ºþµí_]—ÔK/¯©Ÿ“’I²g‡~çs/êºèº(sm}ÂÜ8%ãßøkWfâKO¦SÒóÎ'ׇ¤Ï=÷òoÝ›¼üƒ”ˆ45üâÆ¹¯µ5õj¥áuÔÿ¢M_ò§ÕBÁ,Ýú5låÒ¬ü¿äZ~/ß՟״-öÌż.z×¼æÖ[7ÎX¾¼ôÔË¢iòo?ú‘È,sJsc„ÿÅ­%¨'W×¶wžÄ4eýú‡yU1¿ù·óº.ÿÉþóJ®šoõÝw7y‹õ‚Wruó$¦¹b î{rçï~þ÷^þÀ#óÖp)GŠgq×qŘ~±çó‹ï¶i¹?ÿ°ë ßþR§¯¡B?o‚þ›ÅÛ±èÏÆÆ7ˆ|· …7¼öv²–ޏ~Sæÿ&ú\â£o~kå}¯z³•f^¾«¯ÊV{¦V¹û$ÝV.½¬iòš[oÕ4Ó¼õÖ׈ùo›î¥Ü\¿ðO§þ–““¨§xSÛý1×ß±^]S¯^ýÆäýšR¾`ß[¯®©5Õðkï¸Sן9óÕK“4ØšEdùåëÏ—3ß‘×Ýö‹›šªôû¶~vg_úÂkç7n3­?×ê»Ï~ãÒšr:ï]æ õÍÏ=rN×­~V^gý/Ú.…æ7ý7êjâëçtýWÞq×Ï+³Ê–­´•ßÔxRóÿõ÷Ÿ¾´f I~öÓÉ«k[5µüòJnÖòÚÛ f]<¼rW·Þ3¯ë†¾ö³‘ϟϘæo¿«QD4íÖÛïx¦½üBêßËŽ_vâ õcM™ÛýQ"ºn|ú·<ï¿ï胿\h<þWøf3×ÔÏßûÄ#^õÒŸu¿ÿ¾£ÿÙÿØÅ5¥L[û`àWä;_ü°ç?ûû{åüÝ~]7†ïý?l]7†ï}übî<¨õYäßÖϵ/ãÕµKÏüÅK¿ýgáÀŸ{ëÑ×)õâß-­¬©7½'ð:¥?áyþm§Þ¥T¾Ÿ•†×Sÿ‹¶KÑŸÖ¦_ü„çÁOÊû©OÜk+­–­¬në<ñW§Zå;_ü°çý÷}ÿ}GŸ[n«ÞÔùÇZü„¡”ïc¿ï\«:¼lW•éÚrϼ®zg4í奧ž:{öìSO-e^ó¦{ jµ[ïü–;̽ð7•nž,áG¦© Ž4;;ÛÕÕµºº*"Žÿã|ëë]åЉ}î±'Ïv{_=-Ñé3_)}èZƃÞÿ=aš‰/¼wèëâ䫃ÿ‡¦Ð }öìÙ=ÞÛ©S§¸ö†º:9É2ÒÿoÊZAkkêªÆÓ® ñ†ú±»çIXFú¿œÝgçºEÄ”5“uE¼Vep:ú2^%Þ@¼TToñÈÚMp]ç /ã×Þ@¼ÛÅÉIúo¨Cóý4ËHÿ±œ={vo;ð /o¨EŸ¼aé?öÊžèMD^zé%¾µP‡ˆ7ññÀž¨éÖ’ï­r àÀøŸ?Ö©Þ7_õvÛOïéÈ÷XM€$úÖñÆçTÎÚÿäso€zT¾z;}ú4«p@½øâ‹eâ­««‹U8¸Òét™x[]]eÕ®+W®pí P‡ˆ7ñññÀî¨õ»’M31Ú4 ¾£ÒŽ º´ë×3ÓÌÎôwO¦uQª¹oz¬Ó¦±Á»_½)å Çb±©Þf¥¢ÁÑ„i^×l›H9z§bsssóó! _ÇÙnêxËi°7­—t#Ç3’HŒx<#Vü$F<^¯×ëõzFVPE¯×;’È…S68úðŸý÷€Çã D²¦ˆ˜‰O ’Ý”^+™”ˆ4ÙDD4ÍÖ9>èÒ´Âós,ìÆÑ£Ÿ)l9 ¬·\}Âü@ÀÍoɸ¡ëâw[y£ëF0î^XtiZ6º/‹…}º D²šfëö) öG²¦™éÎôœ{â÷´:t=Y¹œYv´¶Ø´sšærûE×`[¿T3ížH9zý‰G“K¢Á¸ûܹ?:ÖêÐõôâÒe¹¼´(ë-WŸÐê?;Ô‡2×Þfgg‹†ÜsÏ=ù$µ"¢š{§œ"IQÊ7<à´Ê£¥Å”R~·SDÜ>..e;:lšk`ºo¹{b²§}¢¹wzÌ)" -­Í©h<9èr­d¤õXCÑL]ƒ añ„ŒôdOû„ò ϸ4Í4ñ¨ˆ4Ùö&‘Ôr&k:­)óÝh°7‰¤S™Ó”¥ÅTSOƒU¨m9aÙe8å¿sRJ¾v2ÿ5]j=f¬?KNæYg ¤2+"6ÍÖê[ì™LoTi -­Ž‰Ôr&k6f–s'!K.6`Ý`bûíÓc …)«ëVûÅ“:Ý>FãÉw&ee­H-ò}›PÊçdQ¤mG£Ý!R˜p{c.³K‹)=5Ž´ŒuÚ4M³µ´:&&2+—e±É=^áÄ un3ÓŒæ©Ñ–²Ö‰MÃ0â£õ»s£m=¡ð}›Pvù;'­ÄÒu#žÌ]Ÿs\÷ÊôÌǦz’šèÎÝÙÐÒêhüL¦©°ÂÊOb$³‰u©Ïao,˜ÅÔÌå­bV ÃÈ×n5N¨»ü±n[çxاŒP{{ÈP¾ðx§Íº_1îžtiš­slدëF°&kš¹|‹JIº‰¦¹Bnkóz½í!C5÷NuXIiÍ"=ÙSxd‘†–Öf¥”jÎ}«>! >hCCCCCC…ƒfgg»ººnÀi:3éïžHù‡]l Àn9uêÔž})—ifgÂi]÷—Ön\›[öjÆšfë_èd ®¾R@¼@¼@¼@¼PÁ-¬‚=ôØ“gY °ëÎ_|xÛc'ý+v׉W²œœÔ!â @¼Pñf}ß¿×ëõz½O ’½¡ß²oš‰g$an²ï¾ìßê§õëwoÂþöE¼ÍôwO¤½S±¹¹¹ùù„Go|´Dƒ£îá5Jù±Xlª·Y©ƒØ¨óxˤD¤ÉÞ ’ûäAëQ×ùª.ÿà´ &1rôè'Gž|µgf#õg“VŸ°ìcØ6žWR0UH…MYѬ™<žÂÒ³´¥#ë5ëH¢¸D«ÐÏ2ìM"¦ù/‘¶6ž0û(ÞÜ~Ñu#ØÖ_tZ29Ú=‘rô†{ Ž&7EQÜ}îÜkuèzzq鲈\^Z”‚ÇvW™pa!Ÿüá°OOOvŒ,"šæ\X˜››+­¬¦¬áéÉž¶°„¦û’šç2²Rò²‘@ÈÐ}áX,ìÓP ’­¡ŸåXÏ÷¿é6v4ØWñæ\û”®§'{Ú ë­xTDšìN{“ˆ,gò¥•R¾áçzÝ"©ÌŠif—SVXË„e8¦z›u#Tþ"–5§¹¦ìMÖïc ùÞTíC¾¶[ZL)ås;EœnŸR©Å¥šú¹¹â µ·[Ïÿâàƒƒ µ&"àÄ›•pÖE¤¢“„ºn„ÚC†®[±Q’InŸR'e%“ÚôÈÒ-&,§¡#ÔÛ¬¢Áþ™Ë9”<žv«©í.vµ>¬dR›ÔÜψ Çbsss ã6R n¸š¾µDÓlcÙ¶`4•YiF»CTÊ7¼°{&F¬eªedÀ‰7ÓLÄ£¢”Ïí\ätû”’h<|×ucQB±°ÏŠ=Ms Ìû”ªtV0 „ ÝŽÅÂ>Ý"ÙnYMMõ:$e%¨U“ÍÍÍŦz›•ŠGw+e1ÍÄh÷DJüáXlnnnaa°¨«f6Ò?eŸë°iÚ–#öƒ2''ggg‹†ÜsÏ=µ´¥”¯§£AÄíSÑh4žp:«åevi1¥”ßí”Ü$‹KÙŽŽ†MMÙ›DRÑxbÀ¹‘" ö&‘Ô5.wI#ºnûsVTµŽvgzæ ‡—Ž\ºÒ{¥üãL¥ä‰¦×ç p+™¢ŒJeVDª$b6Òß=‘ÖuÑuQ;œki#šæ˜î[îžH§'{Ú'}áØ +ŸdËSýÑ”xp=Æ*Ì3``ÿ(ÿ8Ó²‘¦i.·_ È'\.«ª‰º.>·KÓÊœ&tØ·˜{£Ý±¹€ª:‰ifgÂ)qôMõdºƒÑe[…F4[çøBgbÄ2ôhpÔ=?¯;[[ýéÉG ƒ®J#»4gÀÀþ±½Ç™:õ5+šÉš¦ifg¦¢J5÷+<¹œ¹¼{Mv›¦å2̾™¦ÙZZºnÄ“¹I­-¶j×±¬j¯ÉÞpí%cùFœÃ>¥6§l“½c 6Õëˆó7¿T°_lペ­slÞ>ÚìiŸ¥ÊÜp¿n›LëJù†œV†u„ú»'&{Ú'”ïSswŽlëg<¡P»!¢|áñN[µ¹k®a¿2‚mˇèi#Ø&E n½yÎûñ܇ùÄѲn!)³àž¨ã÷ÿü¿¼ü_ŠGf7€ýF*4;;ÛÕÕµ­³m| °œ:uŠ/åÔ¡[v¥•óu$Ôˆê @¼@¼@¼@¼@¼n·° »îÂ|Z>òË?C¼öÌoüšm×Ûü›ÈÖ8&''uˆxÔ¡mœœ|ìɳµŒöÈC°ZºÄAõo"òì®>Âç>?Í:êìÜÿûÿÌþ“¼å-ÿûm7dnÛ;9ù¿ýô-ÕŠÆ7ÍĈÇã-0’0wÖQ«)g$aš×cE˜f6ØÔ~á+ͽtkìᎧzO®q½öœ™ÙÖ¹ö}2ÿçu¡h5æ{býËã D²fQW«ïiÕw¹õfkjáíì Pº–®S÷nf5ì<ÙHÀ³¾Ûäv·E®ü{üŸ¯þì¾­Þ~ö§ªìp§Ó™L&+M¥”ox~À)ÉѶ`48ê®ðL¸ê»î%Hž™LëºnÄ“.×ö&µ°ntWãöÚç¯óÑ`TíÑóûjé.mš‰çDt==q&Ù9˜ÛÏ’ñèvßh–îrGÖ_×ûUé €­÷É=}(¦ifgú»'R޾é±N›fšÙ™þÑÄØ€ë=ïåÇÿ˜zõWßòÿùï|Ãy{/ªÿïÊÕÒ§Ó™ÿ×v«¥Â7­£mAC×uݶnzš)zZnr«öZ?’‘l¹1+nø©åÞpo³RÑ©™ìµ! {n½Q D²¹n~Û."™™þÂwR•:œÏÞÖ?µ\î½|Éðm4²ƒí•˜<žÒ")1²>p$Q½.ÚÊV “lÜg?ŽXûR¨½}ÓÎSv.¥¬aÃ]Gs³’h<·'g#SËŽf¥®ÓÛöí®½ ¶×ór=©å5[´“Tß ‘H èUVÔB¥ò·âQh}G*íjÙ™–ßÊn¾-ú¹¾\Õ‡W¶’I‰H“½ÁzfëtiZéò–ž‹*=\o·àû—üûÏ:nÐ9ÉÆÛ+W®¾rå꯻ßöëî·å‘gæãÖŸÕ&¾œY¿Ûzç’ížH9zý‰G“šæ˜ö)Uô¶T×`ܽ°0Xô~§dr[K«C×Ó‹K—EäòÒ¢´¶ØÊͨRé6ÑÔÓáliuˆ¤¬6®yÍêF0îŽMõ6+•žìi KhºÏ!©‰ðF|꺱(¡XØg½/»h냆®û±ùPëæõPiø6ÙÁöÊ¥H÷DJüáXlnn.¿²‘@ÈÐ}áX,ìÓP ’­q]Y-d#`ÔÑ;µÑfí³ÎOù})‹åÿ[4—J¬eÃ]›¦ž¿®S3ù}µµéú•ØæÚ«ñ Påg{M¹žlùš-ÝIªoÐE Ŧz’Ê¿ÊJ[¨qÿ,ú³RW‹fZéøV4—Ò£A¥åÚÁ«LÓ\n¿èºlë¯ô^Í:ñ077ûÿÛ;ÃÐ6®;€ÿïèFÆRh¿ŒIvEA…º–uÞ©àE…%q®AÕF#A?} £Ä`ŠÌùC]¨™¶Ä`LjR"£!mdC;\9ŠUª«jGIevÜi‰ìnùЄ¸uú´O’Oº;éNÖ9‰ýÿáòó{ÿ÷Þÿýßûßÿ½'Ÿèƒ†ÓßœãXùÏêc?qîÚê€Õ¤{ûöÞoïU?¿Ôã€þòWš^ý“zØžçC1ÙM y¨Y§àtp',ôB|ÑAN=+ÔÅm'È…›¥R13/ÓG#ÑÐ-ÜËÕùHSžLàùº‡ÍrËm'ý<°U›¨è](`Îë#åÇyÍ—JÅÂârtXm¹Nº !›/–•†6Ö}ª|B|^h¿äùLS¯PeZ¼ú€iªjCzŠZôidà4GŸç‰56¡6*-fæa·£…‡'µÉiúvi¯nhðÓʃ` 5™³ZFÒd@C[ÙæË³¬^‚AËQ’nSÕ•©Eµh÷«µYž¡”è#,›…øÆç»ÉÝ\n(•2ü`twqu}õ«âÇ_?þâÖ*³öùçÿû÷èÞ¾»G¾»WÞEyå¥_Àÿt‘&*ÿ¤61)VǬvŠ Ëê-f¸¢xÅ,²p³ û½­({&–ÏÇBü¡C‡B±<´•Ú¶ò l´kµ» z» ­ iq¼Æ3x*ì"„ÍÇB<_¹„BkQ`npUÅMT½‰ZZ²ÀºÑOR¥ôo~`ó±3g¦¡€­õJ˜\{µ§œïš?¦)õZÒpΪÄì€j›Y›fkÑëWëìJ%“ñ~ið|³r6.±¬?Zen¢›?úù/:^|ÎþâsöŸ{ü§¥][vsÒÜÕ’õZÛýÃÌ…u£ÖÌõ†ÝRLŠŸíõí7¹&N7ãP4Šx¼~$)= ¿w¨œ®™SuêOíŒâôu>³haÑÙ܉Œ£C§Á柰7/¤ùxcN¥‚ ' K/¡pÐápÈê~™hyMqÃU›y°Ød#Û×v%¦%Iò‹ƒYËêi¿öÖï‘6¶OÏ„ÌY=#13 j mSo{6°«V¿6eÀ cLF =à ¹p n+gÄiÙ>5äa[у¹èmý{²þ}Ù¸ßý IUþ4(k ý."O‹3ÅRe°|üPcs°TXi>?k–nBÈ&Æ«²RF}„Ð V͙ΖûåÞßmgZ;íoƒÚiq¥ ¯ÚLРÝÈ-y¶îýn(ï/Y†ÚSÏúÆ‹@ÕðÊm Ö^9Ôi`Bzs¶‘P- †ìÓ”zµ}j£õMw5Pͦ&ýÕ¼úQ*-œ¨\¸+×¢5ôÙ3Ó²;,(žîÕÝ|X¾ÝÑÊæäÔû³SïϚݗ`{ ägÙ<=¢·§DÉÇBÕ󆱄°äÆûÂuqºb¸)/5Ì© ݽ\ݲã2¼—]wÒÂ=´y±‡$åæ¾fƒ¹Þ°‹IàÓÞ¨rL/Ý”ÖÆ«zÉŠç…¸ÃB€N0šSx^ˆOœ Ú7âAc!>î7¨ÝœŠúeºWL+2^µqô¹e0Œ=8¥{z±‹j:S6©½6'=C©x¿‹¶*¼z¦ÛÀ„4çlc#1> j íÓÈB¤;¡š­oz«º_-0Ãx{zÊ£àê?5Y?ôô˜î+{d¼›6*·îþ$‰D"‘ˆ2ivv¶¯¯ïÖ­[uYß~ïÃÃþ—‹›MœÇÿǃ Û\¬à¾%Î".ÿó®Eo 0òBœññqsgo³‰óh‹²“ÁEyX0áÞð‰ Av8¸X³Eÿ7dÇ/ÄAA¶uôv;þæÒ%ؽ¸¸œÏß][Cí ˆ¥<ºoßn¯õ€lWŒ¿YÛZ÷öÍ¥K«ããðc€å™±œHݲ]1rÄRpsAÙ†h\-ùÎív½ò nN"ˆEÜN§o_º„z@­voëO?½gtTý½7AÚ º7±ÜœDAн!‚ º7A¹/<‚*@ÚÅÛï}ˆJ0ÂÞÜ•=É]¹ŽJC ø4wÝÒNÆ^û=*¡)ËwŠËs 8ð«_þ5† 0z§ˆ›“‚ È6Ý‚ ‚î AA¶{«¾N·ŠÁWµ¶ü¶r½‚¦¢üUÝÓ %xx^»nmê{f¬k,Ó$e+¹¿µ#ò Eo„øÄdrnnnnn.•ÚNï“Õìi2)úI O<8.Í /k½ç¾q:ÔÅqçØs×:}£œÞ=’é¾þI¯=‚ìT÷¦»,.œ Î±™b©8sìàÁƒÍkÖÊÂÙC‡)ÓK¥â̱ƒu`5xêˆ/i…ªtB,ñ7Å™c•h¯Q˜¨¯"uì¸VÖ ¿L.Oô K,˲ÒpÏDËu)ÓRiASæÂ N)ÑŒSìì‹ç²“GŽ9ò³ãçsñ¾Îzÿ”ëËdÆ8Žã8n,CSº*Ÿ•>‰ëÚ(rô{î膇«ËP{ãt¨«««ÆêµAtoÊ’¬4œö&ãý.Bò±P©°äiñl±²ð±¬4BRô±l~úL–&f'^–Ýýb¿ÃÕÄa‰e}bò‚°_Y‹~º !¦Y),€ß«§–J ¯NËà§A­^DkDEF„?Ï>?x!ê#„_ôÂ` uÑ×ÏÍÍÑ ‰á‰,pj™Å™cà w¼¦SåAŒ÷»A®¢‰H+¶74:<׉·fŽ…Él6{þøµØ›o†.Èå²ç_;ZvK7N\ïÏe³ÙÜI8:–èÉûÚŸGº óɧ¾ü‡s¬ò¹™}2 {Ÿ ’g.ª|’^†àIíà¬i{ÙIî­zöÖ®ƒ7–•^X¶²øÞ,È ^XõÓM 1!>1)V±^6†ñ ž »aó±ÏÓK(íÂ"át»’§Ó†*p‹yêÉNÍÏ”]ÿòËw^¦›—ZïØmšAtoVãvtt8Ü›÷—m¢×v³¬?»ÒÈ ÙƒS©”è#ÐöK(m^*ÏŠÓ2¸ûã¢Z}Àxbï³ÁÉl™œÆ…”¦A÷f K…€lZbYp:ì Ã0öîýõ΃a<^?°¬”ΖÏÏš¥›RÑ<å‚´aª36[@èwyZ¬»&£á £>B*žÛt”æõ—U¤ÙàZáÔ÷,VZÍжF&ÕjÓ*¶ö›/¾vQã”ìÚW7g@Ý›‘L•³7ãß{«2/öð‚T>{pJô‘|,¤”Æõ†]„HŸöF•á…^º)!J¾:>w‚Áß|ô¾­1ËÛï}hè_*ß8±|/yttù7`Ïë¯ïEËA¶3::Šÿ” ÙJ2c]]ÜËïÀáð;g‚X ¾ÙJºGr¹T‚ ÷ŽýàêÕåÑÑ»kk¨Ä{sW®þ÷z&wUјǖ®=?ýìú[ï¢B¤í|òégî퇲LÄ{Vç{P†Á×™"ˆEŒÞ)âæ$‚Ü7î®­á.±‚µµµ ÷öè¾}‰ÀÒââ3Ï<ƒ›“b5îÛ‡J@‹Øpo»½ÞÝ^/ü}vöo¨Ùn߆ÙYT‚´ÅÅÅGÒét]ê®]»P5‚ ÈÃË×_ýO|Ì}I…#IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/01_http_patch_verb.png0000644000175000017500000004227512032647172026464 0ustar ebourgebourg‰PNG  IHDRgTîÖ ØbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ ¯= IDATxÚíÝ}p#ç}'ø_?§­rêœÊŽbÅ8ÂN†•áA¶ön©Æ8° Û¼d†U!yбiÜ^Ë!7`I !p½¥\LKE8äÀH¢½¢í©± Ê«@] @v„âÄÝœ¬À‹ã 4%;oËvyαž¾?ñÒ9Éï§øØxúéî§_~ý<ý á¾ûî3™L-¥R©ÛL&ÓÄÄÊ`K E€¨ €¨ €¨ €¨ p@ÜÖ8I–3A‹7FŽÀ¢Ç ÓŸLÜwÉú¸ÄÔ#.çö-="eƒo]Þçž›ÔV-´zÑm&8uM–³$›/Êrw–¬,g¦Íf³y:Ó­k;P×Ü’ Æ“Éñ–Ó“[%PB‰RïT¦££®pžb©ŒG4¨Õ «ËÅèØp(—+¬i±à°Õ55ƒ.;çm§Öõ‘^×S]½+FGÍf«ÕjµZÍÓ™Úš_1:Zþj4ZT’š§3²¬Z)lœØ"óÌtizé[óôe~YiRfLòÙl¨q jî$Y.Îy%Æêa3Ù WbÌáÚ|®©Ô>óågŸLòUb›,g‚–áp¾üU>ì²¹*ÿ¶µzÍ3ÏL›}:U M[h“|6©q*ñ\|íRç}#¾¦|ªs®™›qj7Sf/†òŒõ¹#³N­œ™¶ù¤Jc¯b«x; uÍ2)›Š'{]û3¤Ö4 ¨kîÞçž[¬ „-85)e9“Šçv× †ˆH4Ù9'Z-¬“, «ÄyßÈÜfô=ö[ƒ[dNÔ£ÓS©¶¶ÙQ]³ºfV A‹7¶³‘’ÛÛ¯Š•²²>?6òŽéæêClMÍ•1â½: ­rD¤|Þ¡jq9sAÐÎÌÑØp8Ϙä³Jm¨ÙµA;8(X¼¡á ®6>qÞ7ÒJ˽pV ëdh»»íú|DªmŽVÍ\YçlÒ¹ù£RÉ;¦››Ôàà8pöe7A0xæFôó–¯)“ƒˇ.f×}¥úÎƤTVù¶5/S_¹ ·Eæõkµ°sN¹ÂÚæd¥!P×ÜÃÀ©uÎ 6_x8¨KŽˆH<3Ò å%ŸUªÔK¥¢ÉA’Ī¿r8±X¹µ¹G§'ÊS¥–sýÈœ«0ìÍ•×,s•71Fv“Ad¹G§'–χ]¶šmP×ÜãÀiûíLò™G£EY´Î™Eõ>>‚a<qWêŽÜî_ô˜ªêˆÚAßÈæ·ÜX¬o`m‘y>wD‰âuÙÀ LLLLLL¶ÍnöÆ"€fÎ;‡Ÿç´ Q ]·ÎÍ®~=êšˆšˆšˆšˆš‡ŒJÚ……” @×_]ý—'CCC(€jù|¾éï5766övåžzæ9ì!è/½üJW¿å`ê±Ïb'@—xâçEôh¢&¢&ÀNkú\S’‹ã¡jJÊt«¤LOõ/Z™4ÖNX9µÜöyVõ9p¶Éôó+“FJOU}õàL¶:ÓrΛ 8ßc/D†Žâ €­¢¦"æ šºrÜfŒ“++“jaõƒM¦‘³+¯_p=0•^iˆ›•J“î¿¥qSu [lÑB˘ä›/Êr]5tÚl¶–MgäÊD³y:“™V¦F‹r1:j6›Í£Ñ¢\ž·5[­V³y:#Ë›sÕ.b×=vbË4ÆSÎW¯¾QúçúW¿(ŠýýSéÚ('Š¢(ŠSéôTé«Ê‡ºÏj9¤§”Ùûû§^.ÕtŸ?[»Ø/QÓá÷ÛY><ÌÖÔóÃx2™H$âwç1o°ó“¼)“2=vYüä›ÑS.ä/…Þlp8”Ó»ýn=żµÙÞRׯ]qžj]¥»~!|å1—±ôyòª{%›Í®œ§³å vý‚+|ü…l6›ÍfO-n‘[c驳4“Íf³Ù••É’qråüƒ¥Æd؇uM=w“|J…²žF×[;s{À#*Ó9·f5Jš\aH–3©õêD]/­ÖIO&“Éñ–ÀÑ1±ÚXtûÛ[ʪ’¦ÔcÓæ²&iªÜ:{ý¥:~W¹]J—'ž¾¿Ô|kœ<ïl4Õr¸ëø=¥O°/lý–͠Ͻ<òŽéæ\•‰r1:6Ê3FŒï0P3Ég“ˆ1%”j·žÃYÛq'=Õ¿´ÝíuªôRKpý‚+r¬ò@󫯾úüÇŧ•;zðTiâ‰Sí>óTÍáèPäüT¿È؃[­ì¨)ÚÁ™@Áâ ù#zê5ÉrqÞÊ‘~$â* {c,®G§'ž³º²‡Qµ£CSÇ]Si£Ëî:~s&r3q­YÆÉ••ɦ]“ »´õ{MA0xæFô¹\®4a­#¢^¦³… ‚Ö8 gLŠÌ¯—ê¬{Õ¨½¸v]¸NDtôþÓWšR7[Z‰(=Uý\óʵëDtý‚«2Q5Uʼ°o£& ZçLÀ±DÆ$¯%²ª'Æ$¯%ØfØÓ:gývž»*Ýh»¹¾q_}Àuá:Ñѡȩ¥þJ×t©žøÂñpiâÒ©ÊsMãäŠûêýýý“4µù°S-‡ôT¿(ŠâÇŸ>q^©h'ÏŸøâèC Ð¥„‰‰‰‰‰‰êI CCCÝ0æÉ¾z{;~j pÀ=ñÄx£@»nCìãä Ꙉš{gcccS@—èêQ©ýÌÃGŽÁÀÔÐ%žøy±ÛëšØIÐ%nܸÞ@íBÔ@Ô@ÔØ+‡ë÷šGŽÁ.€íy×»Þ…º&@»5ÚµE ­,g‚¯ÄqÞ727ãÔ (5@]³!d£coŒþx<‘H,.úÈì¶±½ºx„N8LQ3{1”gÌðˆAëœW>QfÚlµZ­V«y:SÀ2ÓÊW£Ñ¢\ŒŽšÍfóh´(·™†ˆd¹5WÁY™1µZ­JâJU¸zŒO%·Òº™§/óË«°»QS–3©qn7‰*ߣ£>‰Ùýñ¸ßÎ$ßh´¸™#“¼)S<âîã<vYüä›ÑS.äŸ/–ãÖ–i²ÁáPNïö»õó³Õ™/“/që)º˜ƒg1`çœs{`ÑcY·C¹rý8™Ü ó»X×lP‹éå\) Š&;ç¹åt%"rnxDÒèz•Ï3ƒ®—ˆr…µr­Ó(›¨W'êz‰hµP¹kP£ÌH±T³ê#c’w¬€Á0žL"|ÀÞDM¢µB®vBUDܱ5c’Ïæ“ë(sA0xæFú8gù°Ëf›Î Uv?j ‚Áä Æ¤T¶ñ˾v‚^׳“kÕ£Óçöíµ² Zçl2é·s"Šyƒxœ ·¢®)žéã<æ«tÒÉLOgdY´Æ}) fScú£vçÚ?+ùGæ×Û ±D«…Ú´¢'`çœô:-:ÙÀ¹­u¥mfQ´xÃ.[˜ˆˆìþø¸ ‘Ö9ë/˜}>›DÄíþY§vgW«”Øe “ÒÓGlb}#Ëá°Ëâö'÷]²>^ú)éG|ƒZ!‹Ý ;S¯›˜˜˜˜˜¨ž´°°044t G„Æ{h`Ûžxâ ¼Q ]ˆšíR®yá @µï}ï{*QshhEP'ŸÏ«DÍÙà&ݸqÏ5Ú…¨ €¨ €¨ €¨ €¨ €¨ €¨ 75e¹5›Í£Êp›²2nåt¦ôm1::-ªa)·1Â¥’¹ÕjµZ­•Eìר)Z]/1–/¬Ñza•ˆb©R,\+äzuÛ›Z–‹ócáœÞ‰'‰ÅEùƒDöqÔ$"Ñä ¢X*KDëéåœÏ‡Ãy‡ßCDD=:=ñ\©²¨Ì¢ò±Ôš[O´ƒ3‚Å+Ź­sSZw%©ÈÇKÉÚZ Œ‰íÛÖHa=º>Î9·+µ:q sÎû”0(Z〞1)2¿Þ0çja(›’£ÚÞ¶²œ™®üjEI ×õl‘[õé‰H’¤JM³Í:ÒyÔÔôU•Eåßr÷W"Ò:gývž»»Ñ.û-6ŸTýd±R_ôøÈo±X­V›Oâ}î¹™A%¬¶È­zª#÷–«°=ÂÄÄÄÄÄDã CCChÃPœ;woÔh¢&¢&¢&¢&¢&¢&ÀasŠ`Ï=õÌs(€î÷òÊkˆš]aê±Ï¢ºÜ?/¢… ]ˆšˆš{5e¹5[­V«Õj6F‹·tüYÎL›ÍÓ¹vJ× c¢¬§2¾ŠòÙZ¥zý›KOõO¥ÎÑuÀ6 ½¨9?6ÊéÝ‘x"‘X\ô‘?xë#VÌÜw£}qn÷Çãñˆ»óöÖß8¹2iD”Ø×Q³£Êš‚ uÎŽ¡ºZÀr³¾•™>uêO§GÍ•º©\ŒŽ–‡žn=£êp˜ŒIÞ±ùbíôº*RŸ«ÎJ™>-ÊÅè¨Ù\]Qn\‡F™ér {:S_¡l²ž*4º^"Y~+j±l5K%쥧ú§Òé)QEQœJ+SúËŸ×/¸úEQìßœåìóìù³›³.A9Ûë\ýýýñõúW¿²D×…ëÔ°ýå©M«.q3åÉêËaË5/eâºp÷ Ð]QÓä Æ$¯e¬®m6åôn¿[O1o0[áR¦¥¥ÏŸÐ3–_N¯Ñzz™ŒÊXÓ­gL&KQ¹ŠÃï·³|x¸*1 ‚a<™L$õ9%+ez>ì²øÉ77¢§\È_ ½ÍÖ¡¢õIÌîÇýv&ùF£Å6ÖSM6%1FŽ÷¿·³]={–f²Ùì·¹þÂ\K§VV²ßzäÊÙR„¸~aòª{%›Í®œ§³Si"ãäÊùùƒç˵Նål'ijee¥¾R›žš¤©••l6›ýÖ#ôÅHº’~éT6›Íf³+î«”òQOœžz ´ÄÍÌK‹«NÖdŪWåì•Ç^Èf³/Î9ï«®©µ3cÓ€§uΛA4à`LòZ"«z¥ËR»?PÙr”’ÏfóIÜîŸuj»jÏŠœZ*õb-w+5Nž?ñÅrµuª©bœ<âé‹¢(öOÒigôlÿÔËDDÎó/+=ZÃÇ_(UU§‰Œ“/·îÛlÅj~3£l†(Š|ñÄù&•Rãäy:Û/Šâ$ÆsM¸e„‰‰‰‰‰‰Æ/†††666PF»í©gž+½½ýú×$M©÷ÖÙé©þ¥S+ÝÝšzý‚+r -¾p <ñÄó¤[Lõ÷?ÏØûùÖQ”E[á¼Ü‰?x~e%·¢f·˜\Y™ìº•2N®tgÎØ•ňšpKlll`lj€.÷Ò˯ jî½G?óð‘#G005@—{âçEDÍn©k¢ºÜ70¾&@»ZÕ5/\¸€P¼þúëM£æÐzólÊçóM£&ž´TÃsM€ j j j jt»ÎÞ $Ë™ Å#G`Ñc„Ê¿O&î»d}\bõ1øwî=)d^i˜Î¹½q»?>nê–Õ"@WGÍfÁ0žLŽ7„ÕfáV™r‰ˆs{`Ñ#®Ï ‡bÞ ©v.ª$ lÐâUM°ÛšmBÝÑB«ÑõvÉŠÑQ³Õj5›§3²\ oÓf³Õj5ŽŽšÍÊWÊÄÆÏM3)FGÍf«ÕªL¿Ì/+õ]Æ$¯%XIˆš{'›’#‡©ien½°JTI ‡rz·ß­§˜7˜-åôJŒÙýñEß@[ËlÈD–3ÁáPŽþx<‘H$“ã'ÙIÏbÀιRåE]àkÚB»°°P7åôéÓ¥HË$ŸM*‡]Fü&‚v9+Þçžóˆ­8ÉqƒÛR1"êÕ‰º^¢Üj¡(‹Z/¬ç}ºžRÍ5·EmU5“Ò½cº¹™Am“ÙX2p´z-5¼Š¶ò޽JÅ«üÌoû¶¬Ãqn,šRo,–ÊxÄJÊR4eŒr…5" ­rDÔ«Ót³Ë™hƒgndu8”χ]¶p³ÎGxC/ÀáÔê=´u‘rO‰gFôRXŠÌŸ18µD=:=ñ\M¸íü£J&D$h³IgfÚ쓘ÒùHìÒ2€[mß¼‡V3ès÷ñ\È-Ê‚ 5è“"óë›ÑN0˜Ę”Ê–pVO'Z-¬×MWÉd3J{vÎI¯ë)ÇW%8äöGÔí ËÁX>äŸ/ʲÖ9ë·ó|ØUÝV<3Òǹ䳥L;ç5UÊ…]¶ˆn¤zzc&•^¸6›/Fúß VA;è+åPÝÛ!abbbbb¢ñ‹………¡¡¡ý؉_XÀn8wîÞ¨ЮÛÞ&U^T°³P×@Ô@ÔØ+·¡`ÿúY*õÓK—PƯßwß»M&DM€]ñÓK—Þdu *þ.ûÜ¿ÿä6fü‹¿þJpúãTEÔ<Nþ›_C!Ñåúý«ÿ ÏPõ9D-ûñô?´§*¢&t#DÍ=4õØg»a5666Ž9²±±=‚Sµ«àÚ]y*Þ&lãå†Z/àTE]p 8U5p*àTÝov`ƒe93m6›ÍÓYî†|vÕ¾XɃp*ÞÆ¶ñ׿î³V™ÎÈÝv,UOßÙãí°½åí7·WÎL[­Öö áf ­£y[œ²\ŒŽnfÕ˜X¡š Ruë³#ÇÃ.ªíoÝ6ÿOªVM]A0Œ'“Éä¸AÀS´]ô/¿âÛøk3sÎíþx<q÷qóoÁÕ³sŽÀ¢§Å1¶½ËŸ <‹Ãö#'Æò¡‹ÙÊ¿ÙT¬›ï-šœÙ‹á›Íæ“xŸ{Î#ÖW[íÖ-÷¾2¨W§ië8ió„j÷ÐmœKí;\6˼˜^¦£®ëÌ–» ÅPX%Îût=›W’ö ¼ñàT*š#gDAÐôŒå·›íÿV«ÕfóIŒu󩺭€ÚÁe9£r^oAÞý]݇–1Ég“ˆ1%"jvF¹å#Æhëû¡µB®vB‡‹ƒ7°ÕÿþMâ¥Yï¯Kó7‰—¶wÓZWh8qÚÜ­Í’5LÇq²çaÓA’¾,Äz]‹ îÌå¢õ°yÛt3§RÑ çóä²…+ËYNµÛ½ã©,BiŸŒuñ©º-;pºµ>$º£7^×S?©G§§ºGÜíåµíI–‹óþPŽôîˆßÎy›ËÚjCàf›}”¿ù…ïT'˜_øÎn<,éd·6KÖ0½Ž“Ã}dŠgFú8—$ÉQߢ·ýËÅ­Ù­¥'š‘x"‘H$J7¡Ö´‚`09¨Òoè@žª-·ñ&÷ËÖ‡ÄFÍÕÂz¹ù¾WWwßTn‹(=è¤4;šQ)ßÕÂzõMJÝMb]•e¥²¥ ћݢ7PG~õŽÜø÷¿­|û¿­š`GÝ|·Ö Í’)Ó«˜ŽŽ“/Ù•¥¨¥MO±Cw4jŒz•Ç`M.MOùvŽ“ê ºò€ó¦ <{1Ôërj…Ú…nÑH«Ü%ļc•ŽK™éÝÚ×{uª6ÛÆÎO7õóºEÙ˺æ²ßbóI•çIu´ÎY¿çîŽ~\ÕÑŒ‚ ôè)vÙÌæé,‰ž€ƒ1Ék‰¬êIéU•%MušºÜ”eI>›Í'q»Ö©EÀÛ¡S‘«þ}ý…¥¯¿°ÔìÛZºên­;Z2²Ülïk³G.ì²UŽÀ?N]õ£´õ)vx‚Ö9«þX±ñrѸ£;:N6«¶>[Êh¯ÕªUEsäŒXwзգqAëœY 8¨tZ­Ö”ɳKϰ÷êTm±nÍÎëD˜˜˜˜˜˜hÌkaaahhh7^\nLßâi‡ÇSÏ<÷!«cž(.ÿÓ/þ.ûäЙmÌûµ À(²œ ZR¦›8;Zœb[fþÔ3ÏuÉÛÛ'¿ø—S}vËKÐú¹sož;GDwNLhÔ.e8ý÷Å©º_öã¹sçðÞ2èFï¼Ã·ñw€ V÷cÁ½aÀ©º}{ЇVé„=ŽÃ šû?¼Ooþi–Nï2’ô IDAT=À©º/£&ÀÖ§â;è3µg6660JàTEÔ„ýuËQ{âÑÏ<|äÈ‘.y´ 8U5Úòêš{Z×D!NUDÍnwùŸ~B@]púãTEÔ„­ý]k$¤P€Ó§*¢&¨8?1€íñÿñçpÝCÔ€v½ýöÛ‡m“o¿ýöý»òxË¢&¢&À^ÁsM€® ¼(X\Œó¾‘¹§V¨ž¨xç{O ™WX}GeDk@Ô8˜!³åȈ{ ‚ ËÅù±`f¦4Æ›jDÄøQˆš‡Töb(ϘÃ_Š‚ uÎŽ†±GÔª«5¦bÄÉnQˆšps“|6‰ððQ³Æ'€Ž_yí·‰ˆ(½òÚÕƒr©~`Ùâ¹æ¾Vwµß/ûñå•׺®®‰!Š }?üyñ‡‰ú཰¯ÊõÁ`r$I©¬Ç`8;®îR¿_öã?/â÷š{O<3ÒÇyÌÌ ÿOwÃsM€½'h3‹º Å«<¿$ƨj ®ÊsM£MDM "A0Œ'“ãõ“U'¶H»«­ZYÎL›ÍÖ*Ó¹ýÍæéí¶9¤§ú]®7ûj*½÷xó«Ñ%;5+Íþx<q·h|¿é0Yëúµ+÷œ¾ÿè¾+UB€C5K4º^µ ètF®¼/‘1Ék© «…ù1«Õj6F‹rû‘õúK ´4¯_põ‹¢Ø_®_põ÷‹¢¸Y!-O©š˜žêŸJ7¦,gèºp¡*È©-%=¥dØß,Ödžžê?û<{þl)qzª*]Îa*­Lé/€ƒ5³)‰1r˜N²“ãÉd"‘¨Ô>³$zvÎëV3&-“/që)º˜m¿¦Y4ÓS\u¯d³Ù••Ic)Aôì$M­¬d¿õ}1R QÊ”l¶j¢jÊRÒl6;E ÑÍð7YZÊy:;UNx–f²ÙÚEW«ËÜ8¹rþAþàùêõTrøÖ#WÂ_ø‚kéÔÊJö[\9‹¸ pp£&c’Ïf³ù$ÞçžóˆµÏf8·»5¥d±T–Äñd2™ߢXmÐ\Š:OÕ‡,çùÈÐQ":zìDiŠqR™R3Q5åõkWN;JDttÈí¬Zäñ»”œN9£Ki"¢»ŽßSúÔDcæuîyì…I£’àÕôN•?ãèØo:èCÛØÝYyIž±ºNÒ;âúK tzªógšJ)#"Nžjšì«¯Ò1•‰¯>ÿqñie{K³ŠœŸêï{p&«ZÙÜJ)<7|€ƒ[׬#ËÅy(GzwÄoç;3ëžiÒ]Çïik® ®³t~%›Íf³3ÎŽz×ñ{œJclm{¬qmªps¿×\+䈨W§¡ÂæÄž(·ZX'ƒ¶Y¸ÍL[ßjL¸7®Òi×fµìè±Ñ¥ô¤q‹ªÞW_½§ÔÄzýÚ¢æuMã)çY%ÃëÂQ:¡T+ï?}%’&£ñæ öʵëdDµÚª„Ô=m÷ÇÇ ÕU½Ùà'ËÅù±áp~sëAM¶.ÞŠÐ-uMA0xÆ$¯%²ª'¥ßl–4ƒ¾=åÂ.ÛMýþ$½t¥ö''ÆÉއû[udUR?ñôÇEQû'é´3z¶êåæIél¿(Š“tºR+=:9µÔ_Ûc¶ÔåUüøÓ'Î+µÏ-Xbœ<â‹ b hüuŸ\ŒŽY¼1ýH$Ç##ú˜×2-ÊJÈ åôîH<‘H,.úÈTºŒ$‰xܯôÊôÇã‰DbëN$°ãuÍfo  ã‰DÃd­s6¹Ù8zrsÆÍLNnõ>‹ôÒ•êšf9¢­ UG¦£Êgãd6;Yž>44IDôAÕ”dœ\Y™$¢ë\WOMVMÝÌ :Ù–‹®]••6WO€CO£ë%ÊQe¨j× Vˆ´ƒ.GØ'….f=Ti꣪!¬¡«ë𻩡¦¹ ‹˜*ÿ¬³ÿ«îIÄ-èå_÷‰”Mň󪡪E“så—&‡ÒÂ7-âmïÝW׼匓ã®/¢¾ °§•˜ÊÐÓ¥_÷µúu»a<é'³Oʇ]¶ž\樹±±±© MÇ_~EÍxéåW®~ñ/÷õ¶ÔuÛÙ²[ˆa<÷(}‚$ï˜nnFiÈÝ&kwÖ~Ù/½üJwEÍG?óð‘#G005´é`ŒJ­Je¨j¥ñÖnªDVAÐÎ o,WX#ÒîŸ ß¿£Rwc]hÓ/nܨ|8xWñÌH_,‹ÌŸ5´>‰q®9#Êr&8V8£T.•PÚ§ëÙW›V·³öË~¼qãÆ×èR•¡ª]¶0q^ù™»Áã+ŒY,yåwœ}îýÕ<»¯!jìut:zZ¨ý_›¹ÁÍc(DMDMDMDMDMDMPu³¿×ló±~æa”õÁƒ½ÝBÞ‘BV†žŽQé%ÕÿŠT?ÖtãØÔ¡œ£jJ¦EzØû¨IDÿñ‡['øó¿šCATØûØ(ä[PÈM#_öb8Ï«zWmmz%ˆz-«#s3N-çØÚÿù]·µþk¼«š6›­U¦3m§Ìh6Ogd¹úó,££»¾”m­XÇ›¿K¥wó{¿ÅjìêßGÇánïŽÊúßüæ4æ ££æÑRõÄüûHäÖì”=/äêr˜¬ºýî>Îc‘ù¢Z†‚`ðŒåC³ÝuËLoyèžëçGÍw¿ë_µþkvëäÇãq¿ó˜7ØéÚ+¯ŒJ&Ç·ÝìÐVÁmÞÇíînètmo~ówJ³þ“q˽ŸH$‰ÄÞnÅþ8wywìê•Ñâ'ßâN×rZž˜»}vl+²C½®AÑ8 'Ê-§×›$+eÝUwÿAoL9ûºá:ÖÑY¹Qóg7~Õú¯Ó[Ⱥ»JÀ2Ym}¿Ÿ™.OQɇˆ2Ó¥ºÅ©SÞÇ-^‰1Æ$¯EýZ©z§ºÜËürP-·ÊâÌÓ™úÕ.ßgF‹¥ûæòýx]h:#WTTòoÜ©›Ë2O_æ—ërØêž½¼èÌ´y4ZìäÔRÝã¢(V¾j?«Æâê(}ý¶”ë8›5ž¶7moCe;¶w¾ƒ»£Ùš4Û(õ™2%gÚÍ#U ¶~b¥$£ÑQ«Õj®­ªÖ˜?mX‡ªs­æ¨:Úߊ]½âÕ_Ž™ä³Ù¬V«Íæ«~0YýUõŽ˜¬ŽœAkÐ3–o6»‘rØûl¶º]0÷쳪ÌÊ•­õõ³æ¥ÆS¸ë­’àÙgŸÝ¨ùó¿jý×jæõÂ*9JÃÅeƒÃ¡œÞíwë)æ –n#³A¯Ä˜Ý_ô ´>à¼)“rÛ¢šO1:êéÝ‘x"‘XZ <¹°sÞê9y›÷qJHCnÅè¨Obv<î·3ÉW¹|WV5q÷qž»,~òÍè)òÏeY¹SN$J‚˜7˜%ÑÓrm«7-™?ÉNÖåÐìºP9ß k¥½¡0v4r‚²‹?búݘ~·ò™ˆ^\Lm½÷k7¡Yqµ™¾þÚ±ž^ÎQ.tQÙöõô2µØ´®9e9åÈ¡ÔÅ;½ ߩݡ\MT×Du£æÇ,)SrÜPsJ©¬z†ŒIËä‹ûíõ­‹µ'æõŸµ81k‰êc Í­Øù+^C!«¶Á(ª_mÙ‹á|>ì²Y­VW8OD¹åt«ûB}w %¦ö•ºæOÿQR¦›Gõ‚YÙðÖ×ÏV5sµS¸ëmuš÷ÈòNDÍÿïW­ÿZÜUÙ\áœ# œZ²œIň¨W'êz‰hµP”eY.V‰ó>]‘F×Û²©-à[ä“^Îõê4<0Øö}œ²8Îí&±ÔÏ j”MË)Á«¬åöÖ-K}ÓÚÈAcèã<–ÊÑZŒšmìýÊçZLDô¿ÝÎÞ¯Ü8·.®ö‹·TŠËé¢,g/†ò¬Ôˆ§¤WÝ÷Ýy2&yÇæ‹·§mow´¿&ª¥:W8œg’¯º£I4Ís»kPS׺Øxb^{ãg­ïò‰U} ´¹;{ÅÛé&Äâ|dU¹÷J$ñxÄÝÇ›ÞÜ+pöêºv(1Y.^¿öãÒ?Zú³îÛòúÙ°ˆ-Náv®·Ý‘i¡ýå¯xë¿æÏ“ü­íŒI>¥u¢Tk…µí¶Ê§£'ÜÇÕkX\Ë=ªÚ2ÖØJÓî²:ÊAcÐ+Žbaµãr®ÞÅŸøèGˆè«ÿu©½½_}ãÜiq5I¯\as…5ʦbúJ#Þ:­r“¸ŽCA0xæFú8gù°Ëfk³ƒÒMîŽNפa£TK5âîã1ïX]»™ê¼[fØâÄüñµ7Z¥/ÝlÃ1ÐÁBwâŠ×¬oæ‰fåiq‹›{YÎ(O«O÷Yû?ÞþSµ¶áGÓS¸«e%Ía~yò/%uGô™½–"óg N-QNO[© ów>ô±»ßñyêB¹Ürºøà]ué¹~¤ëǬîù;ˆÞÜöäNÇmçjYfÎâں濼Ã[ÿµ<±|î>ž ù£E¹|»$Eæ×ëz¥Mi•n£ÔTóÑ–ªTëµWÞš)[ßÇ)ë£ÌU»>5¹UÖ!•-5tò¼Põž¨éÚªmZg#q@O±ÔÅB¯IÜÞÞW>ÿå7âíýÆ]ÖfqµH/šD$I’2E49ˇÃRës° CѰsÞéµ£ÓÝQÙ®ÒJ*Myåç»k¢ºQ­k«zŠ)]*ZH“ W ëµ­‹j'¦ üswd$IR¥¦ÙÑVÜü¯B®ë÷[ýoå¡ZÅÒÒçÇggëº% Zçl2™œuö”»5TTwÈêN‚ =zìŽÒ?ÅB‡Ìv£i“S¸ëmMš=k¡­Ö ËÁX^y«uÎúí<vU׬Å3#}œK>[ʨ{BÞŒj>ZçlÀ‘SÚvÌæé,i}#zÊ…]¶º}ʃ“úû¸rS»x¦4WD7RYAÐÖ妬ƒä³Ù|·ûgÚZÆÆ$¯%²ª'¥W³µ­loí¦‰9´ê(¨„Íu4K{öë ³__¸™ÖªN‹«iú]çœ÷•ЊgÜ}UÿvýqXéÿl³ùb¤ñuVEØÆî0Œ'#î>e%•¬<ßU]ÕjQ[)αhQnV Í2\ö[l>Ii]lvb¾g«våä-=Ðj¹kvïŠ×¢ ˆˆè×ï¶+æ’?èè‚ÙQÛfã)ÜÎõ¶úŠºq  XXXÚØØh½O=óÜiÇÇ[§Yˆ} /ñêfr1ª¼“«®Çã–°÷»ÊÙu¯—kxýܹ7Ï#¢;'&4j—²./äÛo¿ýí·ß>lÇjãVßâý¸mçÎÛçš ±oႵC¦\œ÷‡òŒ9L"öþ~‡ÝB†Ýv³QÕˆýNPº|`ïïfwtÚ¡… ·F @Ô@ÔØ+·¡öVãPÒvÜ#fU‡ª~2qß%ëã?ÆèÓˆš‡ˆöÄõù±áP̼/qŸj²Jo©Ž~¢;-´Ý¤½aQÔ_¹Ý-´ÝQ‰)¿r÷¹ç<"Qe‚¨ êêºólk¤Øý›¢&À>ÖÎcpëÝT íc³ÿp˜Ëî‹£ÿkõ¿O=óÜaØj¼‡à–1Œ'#ºQWØe U†ƒ}5›ý‡g>ÿ‘C[pŸùÓo×…ÌÃNÉÀ­¯V6{a½Ö9›pv<t]ÔTBæw¯þ%xxB&lç¹&B&B&¢&B&B&´ÒY më)ËßýÚÜ®z§°ññ¥Oý»ÛÝ«EÈT}ó¸agŠ¢.sÎûFæfœZ¡ýyñâJ€]¯k¶YËäü£#—fÿü¬ŽóKSO¿vË©+ËßýêCþ=µÛ‹Þ²–ɹÝÇ#î>ÎcÞ`¦“õ‘åÌ´Ùl6O7›«’¹žr¡áÎ2€[Q×ìÀ{ïê!ºF$Ë—¿ZUUjŸJ­ô}lt’f§èì7îÿïŸh•&ôä‹D¤s}õïMÿÙèÌ5ºû¡ÙùNˆdymÉ÷ûó«ŒóŽ>÷ÈÝtY©ï2zqöa}î‘÷ B]š÷ õ+0úÜ#w¿ý³Ñ™cJàW’íLQht½D¹ò™i³ObTÛ‰\.FdžCùÒÒí•‘€I^ µªÖfÞ4ÿrõ”÷õéKSŠÑ±O‡rz¥ž*g¦-ÝÜÌ P€©kvæ¿¿”fŒ,÷¿Ÿ}àSßüÎùo,7Ö>{qö»÷ù›n™F™^ˆ|jäKôïgÇŽÑ?~óKÑÉ2ýã_üþ7p÷àãgÑßÌþÅeAøÀ'Ÿû3#çÕ‘¯.ÍæÆ—WànºüµÑ™kô±‘‹K翱üåo>ú¾ U¿M.FG}³ûãq¿I¾Ñh±Ò†C9røãñD"‘LŽŸd'=‹;ç[˜—MIŒéGÎ(iTó'¢lÐ+1f÷Ç}ÊAÐôŒå kDDë…Uý€!àV×5{1tæE"â½gÿäs'kŸœt´:AË4=D×øGGýÎ;èrѵ\û1ÑòwÿÛ"õÞù¿ÝÕCtíŸÞø‘|òŽÚõ‘›§©[Æ^œõû¿ó·v(xÔ½‹Y–‹éåç“HD&;Å–ÓÅÁAM9±w¬ƒÚž’9çöÀb\ ™Íó_/¬ç}ºžšº©Æ8ÐÊÅRÙqƒa­@g48öPu—…ê;æÆ~ÿûÔ”ð¸úÀÔJKUuß…ÖÙR`±ÒåB–3AKÊ´èi}~l8œWfé çêšÛ¡<×<ÿå/?ù~ä7¿yñ¦YÓŵ“¦eœö¦£\ûñ¶ÒÂ>9;¦ãœ­žÿ“3§¾úßä* {©ú8ëÔ ÑZ!W›"WX#ƒgn¤s–»l¶éŒÜ~æs#«¾ÍYÔó/OïÕÕ…Eq@O´Z(ÊÅÂj÷p+Cf1:fñÆô#‘x<Œèc^ËX´(×òJ?‰¿dZ\L$ñ¸_i”ª´TÕ5Mm™mc— Y.Î ‡rzw$žH$}äGω݌š wOkK_š¹FwþyÀÈù¶Ó4qTó;UqZ½eµ4$ÜùÐÄ7¿3rŠÑ®ubêÑék'èu=ÊÒµÎÙdÒoçªq šA—}³«QÓüU)´”+¬­§—{ñrK€½”½Ê3æp jA´ƒ.cùÐņÁÂ:³zËl“¼cóÅškNÍ}¶ h³ã¸>ܺ¨It}ýDÔ{ç{o2êu¿çÓÝŒ½“Šua’hõÍ·Z¤Qw÷çþÌÈ9ýα;v¡ Ê¥T¶ü<²öQ¢è Ø9/‡:%®Ö[fº^X-GÇfùWÞÊ–pÖÖ6c©‹…^“ˆ“`Ï*šr&#Îí›'¢h²sN±Tý=t'ïpo#[‡ßogùðp0[u¥*]1êj¥p‹¢¦ |à““cìÅÙ‡¿²ö;ÄØ‹³?ýšÜqšf~ë£_9Å ‘OýÄ€òkAè9õGcÇèçÿã)eJcš†cë»_}èÃg?10zÆ{‰î~èvìÑf­sÖoç’ÏfóIÜîŸuj©ü#«Õj³ùb¤ñ•ï }#zÊ…]6Õߟ0&ùl6›+œ+ÏÒ,"ÏŒôq.ùl)SÀ^]›WÂfŒ4ºýb­œò>©÷wλk—xçCß|ˆZ¥©É¤ÙšßDQ4}«²a<™o+± uÎ&e®š}VÕó®§—s„±‡ºßÖ=ê·K3ès/‡¼cº9Wõ•$î)Î ‡óuTD]p£PqÞÊ3æ@M`OU?F)Ù‰Ñ4ÛÌV´ƒ3åBþÈjÍìÚÁ™€ór¿B@Ô<ì'ªÖ9›L$;õª?Ø6å1J,2_”eY.ÎGbœ÷œoM¶JO~}.—SžFKýƒ”(Û²_áasŠ`ïïbµÎ™E]ÐâuÙÂDÄùμ,ºýl­s&P°xI ßcKéme}n4ÏÖÔÄÄÄÄÄDã CCCDôØì?T¦ÿá'ïE©Ñ_}íÀž»gù+÷,GˆèÕ׫ÿǾ[ÿÿòŸÞ~ûíö×n¿ýö?ø¿–÷ã~\YþJ»uÍg>ÿ寫+ØC?|çÛ?\&"zàCÇþhž•ÿå?㺟öãï|»Ý¨‰`‰èB¿Üø¥òáúÆ/„³rß^B÷Ë~\Ûø%z´«ƒÞ@'Žü å]eý×ø›DDô›¿Æ5¸Fíue¿ìÇßü5Žº&@»55vÞr°—VT†˜®þÊîW¿Ì«<fý» jG¢. +ݸ Ý{·-¢&ìŠÊx JT‹Ñf”åÌ¥rl)´xcÞ ©:Îe/†óŒ1)•õ åYŒŽ ‡räÄ=AåâüX03S'‘ò&¡…`ŸVR‹ó‘U·ß]yÓl9’†òŒ9¥Ðˆa¥5eúêáJ²C½®AÑ8 'Ê-§×•PÚ05 j¢ËtezG 9n¨®hŽœAkÐ3–/…Íör³Z­r¸iY.FGÍfóh´(+÷Óf³y:Sú¶®ñËÓf³êæ—Ò·,DM€®Æ¹Ý÷Û9§Xjójž½ÎçÃ.›Õju…óD”[NÛˆ‚œÛýñx"‘H&÷¾Ù¶¥Š;¿A«ë%Æò¥A• z¥ÜÖ ¹^];9žL*›ßN˜DÔØwÄ3#zƤÈüz¥¢éŽÄ‰D"‘ˆÇ#î>®4ÒªŒDÝ•2²\éÓ˘´øìß—éO££æêªðf`ËL+•ú¤ÕjU­1‹&ÅRY"ZO/ç«”F6s˜ÄJ†—ùåÊ x-Áê| ócV«µRg­ ókˆšû€fÐçîã¹?Z”•'šN­P©`U7Ò–F¢öŽU®ø™é®kŒõ³‚`ð,ìœsn·|úw•éÅ¿Ÿåôn¿[O1op3ò3&yS¦dr\¤lp8”#GÓs®sZ-ey­³ÛíJ•åbaµf|íê¨îW̘´L¾xÄ­§\èb¶¶.Ûƒ¨ °‚vÐå`,~êÿþëÈêÈ™šÞ>ã@çJ#­ uÎ,”SÚo­VkÊT”çš{ühsµ Ú*[¸BD½:Q×[›†s{À#Öѱyõv]Ò=ª°¦Ô-=&¥q;»ž^¦£fëUãÜîÔF×KTÓ*NDø½&@×ÄÅÒ7›M ã‰Ä¸ú¼ZçlÒÙ"«f÷L®°F¤Â“|6‰SM#ÏÜÈêp(Ÿ»láº×>PåÑf^J)æ0y¨§ 'Ê­Ò”ë5iá&ïP×€[­Y_¤ß¸cëþJ‚Ö9›Lú휈bÞ`cuYy´)I’ôÙÇ8–;ñsDMØ+=:=­þŸ•þ?zìŽJ§§ÖDOÀÎ9Õ<©Ü̵óÊV•ækÎûÔ“ê‰hµ°Þî#jÀ­¦l{­q«÷Ë~ii1W‹éu›Í [B -¢&¢&À^ÁsM€½4|ZD! jÀÖÞ~ûmÂþ‚ZDMDM€½‚çšpü,•ZG)ìç݇¨ p /»—.ýìÒ%”ì6´Ð ® ‡À¯ßwML ÔEÔØ%ï6™Þm2¡à–A -¢&¢&¢&¢&¢&¢& j j j j j j¢&¢&Àn¸-•J©~ñúë¯çóù7nÑÊå7Ÿùçx>÷ê;?¹Š"€Ã)•JýÿÜ”ûÛÎüIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/10_latency_view_results_table.png0000644000175000017500000010670512032647172030730 0ustar ebourgebourg‰PNG  IHDRæD%I³¼bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ .¸HS IDATxÚì½{|[W™÷ûhORJ/”@ÚqLjslDÉ; äRµN™È‚k N^Ït€¾Áøö¤ÆÆšR^dœq36ãØGt:çŒïG-Eq0BßR&n•ÖuÀŒÍØqENдis±-íýþ±u×ÞºÙ²%û÷ýøykíuyÖ³×ú­g¯½%{è¡‡Š‹‹ ~LLLl+..nmm…-HC^´Ÿg`ÒHv Ùì@² Ùì@² Ù€d@²ÄÙ&õ…¹¡¤Z^w²W“- >λ̇ú§åu?üç]?.û–…*;G›Šd²TTŽç'{JÛ¬LȺ‚+¬=Ù[šƒË]“¦­&+ÑæìÀUDÏ3fÑkØL:$£ìª}r†™é– ;¾h;3Ã0ò}ªì yÌŒáPã)ϯ[‰™,;7ŸfÆqÉ«b',DD4}ƶ´ÈϹنíi³2L¥6°—]ªPA§¶[Sõ|íj3g{ʵ†@µg ‡zØ$õ:?ÙlÆÚºqh¢§Ô_U†™1hË»'ù„zl Û(ªf¯à,þ½1‚Ôæ¨BB±ûlÿ ÃÖOh²ùÉîòv+ùÎÝ™+'š±L°ÍEE^N>ŸM‹Ž¹(+†±¶—[…ÏþD¬T¡Jb…ÚFî$I(œ-“5vR覿)’Û¦Â0ÖööÀs´a¶J¦åuF!« CY¾²,–@Í…•†Åxê ²:+‘Ä¥°Q0ÑÕêÁ:9ÃX§‰hñ”Ñ¿+&2±WÅrZA *‹+8ŽhαHD”¥ÚWÈq4çpñ¼ª¯¨¨ "ËËó.Û™iŽ+ Ùì"Aegˆ^ZèÎ\9yw³¬}¨xµ™sc'4Þ{Þj'‰LVÔìÏJØ8\Pè‹e”ë 9ަ… ô Ø(¶Eÿ:Kµ¯°zúŒÍU­²™æ8yÝAe´@PDœ†¸ü\!–›•›O4=í¸D‹Ž9⸊⃹snÚ2Á6;¦‰äûTYê–«èmRÒâ©ÆCým¹ï-T&Ë®î=I‡ 3 cm/³Æ~+b"*yU™s\Eg“r {1d—ÃPý/tD=ÒS²S–jŸ¼zúŒ¥3Q…µOŒF¾Êˆ¼aéëĩܹi"yîNoÎsŽSÏFv™,»º·ÓQÚÖ¨'7TK*“ekNŒiZÛsOöV‹¶À{!î`·TæëÿîKA¯Wt 7É|/–‘FØ„$—¼¥!݃`c`b Sáí†vCô×±ûÞ0#ò*w>Dd5øóñål°FÕ!E4¬““ÅÿxeôBCNí¬ÝâŽðê–Cg¨0Æîñ-"¢™¯¾Ý,¾mE¾ç(¨™m¾[ªŠ-â4&Xg¶ÅL!¼ ÝÊ0W=Æ®‘Gb«ölMo§£¼Ýp¨'w¬¹(J¡JbÃ:”a¨Bx=¥ð4,ù·€pœ¼î¤Öq¨MbLjp‹`Æ -ï•ùº÷` n"®°PÎq3Œµ­”¾7ò·jAÆ!†‰²-'z€ !ök …à+Q¥6ú~ Y¶¦Wˆ7‹ëAßC–þÝ5Ç.Ø0-+jî¨`¬í»ÌcDa­QPù2Yvu{?¦Îq£Ûe¼I=óu&¸n\aíÉÞÞö:yp®¢cxØX[èklaíIi ¿1ÀúI¾ÖÖÖÖÖV€4䳿ÈÀ ¤3ì@² Ù€d@² Ù€d¬Û¤¾‚uH)555W®\IR² çȤ“ÉO²mÑ¿Ž)ùSÍ“O?‡¾›Çû|œ)·¥cô-‡Ñ£`3qåÊ•;vÄ™Ÿ°Þ$´—’€´’€L–ìþ~džDdÓ×Sœ±m©tö¾Ü>oÊøÏ5×ëHo·³§P—1nmÓ g±lè‰æúqµ÷‚žt²\¬™ “$;‘²ÉX[ÈXÛƒ7µÈÊÍ=ÀqMJá8ÇUtöVg i¦—ˆx~rÂBDù¹ÊÜ|"šs,’²ylll¬¹H&‹©Ù¥ûÙ!ÊÛEDD*µÆ<îÕìó‰èâüÔ¦|Ÿ vG*vs£o_¸ŽôÆš©<‰våíñ~JœøÏÕô •ÈÙ]@þ*¯ê¡'júü „œ½ûgê ÚL.ÄûSJYÕíµgõ·5æžÔúò.sã¡þ†!†!.Áµcm/·Ã:>;Vúœ½ûIwÖY³÷ìPA­1Rs_œŸšxTy\X3е [Íã6›5j»š¾Ï:‰ÜËêTDN“ÖôbyRN±O¯P(æ€pN¬æÜ8¶â0AŽ4íŽi:q’]&Ë®îít”¶õwå”_LÄó®SýÓ$¯3j‡Ú, º3WNÜtEçh“tX]B³Ûh¨@mùzWÞM¯1L«Ôšúq=™5j©(ð9ЦÖçiõ6•hž$<ªsš´Uz[ÂÏ}®æÜ˜8MÚzê³³*A»ûŽÏ.8I•ã7T<¦éBïe—ÉŠšNÖɧ§§½.9¦‰(?7+±"e²lÕ>9ÃX§…#1?õköãÇ Ô*‰og#·t¨ÔšZö9ºh7xŸÑÏSŒÙ§W1›%¿].ÎOíñnqq.ÌŽOuUù¶¨;Ï…[0þf€ô–ìD$ËÖôvV|g%ÃXÛJsrbk[i¼ï‚ÌÖœè¨àf ZÿKcâ9+gïþû¸R’;§Æ¨W„¿E¥>à?E¥>ÀÝçU´QE»±v¾JkrŠçé{-ú£Ç ¼;ÄU:{í|•B¡Ð‘¾O±jÐõøsä¹k‹J×WpüQ¥R©Tèh¿Æ\¯Ð¿HD¤éë#a³¾¢j¾6¢dqÓ€ô@ÖÚÚÚÚÚùÅÐÐPMMÍ•+W6¶~O>ýœ¾å0ú l&t]Oé[›L¦˜’û³¿ÈÀ^¤3ì¤5ÛÒ¿ŠW®\yòéçÐU’=yü±ÏïØ±ÛÙ${ú²áÀ°`/;ìHv ÙëͶ-Øæ;v ã@¦€(;ì€d‰kc ÏOö”¶Y†ˆ8®°îd¯&[Û°ÄŽ²ó.sci›…*;†‡GFFFGÛ©£g’çÓªcóËqŽ«èlRRVn¾ð¹·:++7Ÿˆ¦—|9DO#¬ˆòs•¹ùD4çÎ\[%œH– ©À9ÃXÛ½ê_&+jƒv[H²]rL‡’ãkV?ÆÚ^Þne˜„2—ÉŠšNÖr3cЖ—wOb3 ؤ’]&+*®$†±N°‘_îÌ•‡çî\˺íÌ•ÇU$·¹E–­916ÖQÁ‘¥­[ØÀæ”ìD¤¢•w™Ú­LEÇðpGcmo0»¤Šˆ–ŽÇyÿô´ã’ó-&‹Åb™`æž¡}íYÞ”WÑÙC]òüä„…ˆòs•¹ùDÓs¯ŒÜõáÏJ4}–_6æžì­Î^Ýö‰øóáy—íÌ4Ç º¸‚³XÎØ\ÕÉT N;ТcNž{0jåÛË­DÄUvŽ5ÅÎ9+7ŸhÚ×Çq\aîÎã1 êqƒd…&Ë'šæ*:{«³ˆÍ'šžv\"ÊN¼§¤šæ±éÌý|çHöÈŒ¼ÛÙg¬=d©,n¢9ÑôœÃFÓùÅÙ2Y¢;¼B“a(>õž^VÔt²nîPÿÌŒA[n¨èn.JFµËÎç’#LÕ&«>ã´Ã¢í ík²$ชÎÑâ‰Ò6‹eb²IéOGæÌ»Ì‡úg††¸àæäçf%írâÉJ¥—G6-N¿Øpâ5&ó’Ga;»Õj­,VÊdÙª}r†™1¬‰n³&Ú™+÷>4ßžñô²l͉±±Ž ŽˆVóØe‚ùìÌ•‡l ¢5·Ï»lghŸ*¦V¬“3ŒÕxjQ*gžwêèŸ&y­±£‚ãÖÎëÖÐ ©p€L%©÷²ïÌ-ä8Ž«$z–j_!Çy÷TÄ¥êæ‹DD>¹ï×—±$uÔôʦΠŽd¢LVT\é-HØ¢³2¢ùÄSù –ˆ°2Œ|Ÿ*¹m9ñÙá’c:®xVu{m!7Ýßavñ9‹Ô‹ Í‘¶X\­X½AÖÎh[V²g©öɃb¨Â¿qì©É²«Ûëä4mЖ oùÈÖœè¨àf Ú8ßû™Þÿž“òòv ÉëÚ½»É•½sëDcÉa•ÞL™OÌÊ[ÛËËÛ­\EÇ MÒ›b(¶Ø ‹ï‰ÒØFÖV2ÌŒðdgdÎ2YQSg%ÃXÛJsrò¿Gy°®ã¬íåÅÉEß×Ð kc4€M¬µµµµµUêë—_½ÍÁéÀdwÉDñhrÛô@§ÒþìÁ/20VúöM°¥Ø¤?2Y¶æÄ Ø`k‚(;ìHv ÙëÍ&üôɧŸC@B<þØça4XZ´›ÿ1ú–Ãp ˆ“+W®ìرãÊ•+[sêÅr€5ä«_úA”üÿ+ÑSð’G!ê\4ÒQ»¦^Câ“( Ûÿ°× Hv±¹e¦^$;$;€tžz!Ù 2’Àú(; aÉŽ(;$;Hv°™ˆó)çôDxÓ4’’@ÆIö¿€@ªùúÿ8=Á?ÿËI4$“$;–úë/Ùy~²§´ÍÊLÏqßyè…²oY¨²s´IIlOi›ð¹H–¶[—lz…!oÐX““þÙÚôŠqµ]§‚“Ò€e7—Pzž·ûdã ÃpÜ}ͧþ߃9¹¥U˜ûÖjjã]æÆjï­Î–ÉDgU)I—»V®^pÅR]îí·nKºž‘fÜ@oˆëTã!ÃŒ`𺓽šìͰ |%Áq#xôø©×ýîûÛdÞÖñ`ói"â¸G{ÎýÕ¯øúUÿ¥o= ËHÛ&æR‘WÂýccÍ^ûfBs ³{öksÖZ²MÑ2Úq’óÐ<ÛVtéÙ¯Uwì|¡í~Ù–í’c:¿8;ÈþYUžm¥s‚V“ÉŠš}Óë,T\æÆCýÓòº“½ÕY´xªñ¿b©.úŽ[·'qVšÈô¤"èuÁâšlÏ»N5öLö¦s4nÉîIX²ó—ž©ýÜ?§Ç'Ú>)“ñ¼ó'ÿ£câ_Ú>™ 5xÞÖõS8þbÛ'e2âIi{ùqü ñ™hÌUݰàùÉî’’’’îÉÁÎó.sCIYY™ÿ[b³¹¡¬¬¬¤¤Áì /óÑ=’xr²[8Þ`vñ.sCI‰ÿDÑRbHë³C´oÙôŠúf ^¡·y5±ÞfÓ+•J¥R©· G¾Ïá Z“S<[_J§I«P(¼™;MZ…R©ôýëÍÏ›Up(¨,¿ëynxË Jÿ"9MÚÐÚGñ©×Í%øÇóÄ»ÝÜŠ‡ç?²ûnnyåÅ|°ã™g¾üðƒ/®x–_5}õÁû~ðËϼê¾zqųübÇ_?ð/ެ¸9áàÃþ_5}õÁû…d‰×*Ú_B™ìöÎ\%Ý“aÓbYYYICCCÄüÈNX*‹•¢¹ÉdEM• 3Óÿ,9½ ÓŸ·¸’îIž—šR#çèàé•÷Σ¾ùw²»¤Á슘=Ùgûg¦R[-“ÉdÙÕZ‘ŠI•+ZÄ%îe)µÆÛ7ÝÑÿ'“Ý%%Ý/ûKŸìö×!²ûÂÎò[+Øìñ»G‚ ¹ä˜&¢üÜ,Á²5'š……œßn‘Š+ЄÈFyOÑH¢?÷éÑ%{¢/þ🦦òø7¿âáÜ\ö£?h>¯x¸¾wÿÃ=ððCïEáȲûÅNÕýŪŽgžùòÃ=P¬úò3ϲûÅc~ÃÂ0 óÓ–bU±ªcbå!Ù nÿ¬‡z ø±/ö÷g%ùùÅßÇ3ÝÿðCø3Lôo½%{ØžCýÓòÚŽZ9YÚzØ@yŒõ µkå4-\ÿB,adddØX[Èq–¶¿0Œµm¢X8>cЖvPûÉ:9M÷wœ†©Rb(vRéì}¸}е¹¾žzY–=}dÖðÝïjÇÕv;{úÈl½_›ëÇÕ,˲,k¯¯ QËAŠ]H©#½Ýn·ëTDN“n¾Ö⬽|™ÙôBY,k;—…W5ƹ6}•·8±ôRNMmA—1hí`ì*¨­ÉÄeOôÏC§Û÷=TúþñÞÏÝíá…#ãžøÅø7ÿ›ûâsßéÞ}ìë±üþï<»°’µSþ‡ îÜó§?]ñˆåyÛ²cá¿ä»ßçæ–V^<þ8ÿ‘³¿ÿæ_zø¥Çsß~øä ã×ÿë_Ÿ]Xñ$Q1©¿ø­á27´[™ŠŽáᎠÆÚÞ`vùæ¾6+ÃTt ¶ï‹Ô‘ÒŠˆˆ”ÅG–‰0Äó“=‡ú§©²cxxdddl¬Ù|õN©~I¶ ›^YÊRí“3ÌŒãÑ¢cN¾O•¼äùÉ q\E ª‹œÊƒ ÍŽYD®ÝtGÿK@ß0Ö¶‰b¿¹‚ÿ•ê¾àdJAbˆ™}Í"“WÃXÛJ#—^RØf‘×u‹<©‘D}IÊÁâ<=ÖRŸOèoyÅöïƒÄqU*…È·¯>ó•oY˜ÏtNü¢³Š±üíמq Çy"†õýÅɯ˜þóÄÉsnÏ'Ït†ã8®êŽM ?ßúq7´îvó+nÞv¬ÉÊ0Ÿéœøe{)tœ—þÌ0ƒ­g>%de;ö¹çïûjç×?L§[K´™+îdÂü‰Iv†±¶——Ç\Z gü—ŸçfßÈí/÷–üâyÖíñpJåþŸ›ä’¨OÌ¿„fŸè:[,,+¤ÍNX†òs#e½,[sbl¬£‚#¢àí£Ñë :½ WhÚqiÑv&¿8rÞôoÒ˜`C+VYçΘEDSxkú¼Á*»/.³¯iCd²ìêÞÎ Ž‹…Œh‚Ä‘H$Ú(±ƒ œuÜàúóp÷}†ÆòÂdä·;w~˜ˆ„ÏÄчw¿Ïÿ9ø¸Èç8“Å™ÕÎ&Žû?ƒb ·4]$»o+›Õxj1îpEÂkýK¹8.­gxîÒôhðö“ÈlC‚Ü{÷ÏÆ·F¨ŒÓ¤­7K~;¦¾» ž-7*mËl£²›bñãáøDÿ8²üãgKþæ«ý»Žþíž<ÏqÂW|vy³úÅÿ±¯æÛó_h®¾›'ÏvçqŸøïáxÏÇö~Šã8ž÷p¼ÛóÒ*ÿêo>ÛÆù2ùè׎qßÞ÷×Uêÿ^ù¤Ýù=/ý@âC¢Ntö™`½rVØ®,v…Mí¡3]´iŽç'{Ú,a»2ÂP6uVp\¨¾œs,FÑúâÓk–jŸœ,Ï:ò%vÖ+ÖrœÅxJØísÊhá¸ÂºƒÊãì"¢¼¬"Ñ ìJ”°îKÄìqHöDÂó“Ýþ瀅ޔçîô-Ÿ„^ö(ï¢Hèý¨G¤4’h£‚&qúZ-õ?ZÝÇq£÷µA§G8Â~ÿY·ÇÃe}lïGæçç&9÷äóã 󡽟¼›ãÝÞK×ÿü¯‡S*÷“Õ¯ÿùñq† >N4wñRÈñ°¬ü5yvÀ™úA€Tý”R¶æD‡£¤Ý -3xß¾¤”¼xŠš:+­íÖ¶Ò9¹œ˜k[)}oä¡äJ‘\ÍÛÆgC^èÒõ+ªô»ã}y¢¦o0Ï P42 wß‘A£J"Û]cTëÊFáÝ¢ÂS¤ÂK`":ÐǪ¼pÒ+ ÚÓ2ا©“ªynÈ+ UºÁ­BÙÈH—å ´è2äaS ÉžàE_:=þ¥Ó‹¾tºˆxòÒäžê8]øöžê8M¾o‹¾tz<è,o>¾:åÌçË6òƒg^?Ì0Öör«ðÙ;׳O{¹•ˆ«è8¡ÉHK›µ½œ::+,m– º¥²¸9b† ÉY^w²·:R;†¼"äuíÂkݽߞé(5Ì0¢Z_tzímRf©öÉûû-ÔÙ$1/gkzGs{JÛ´å"â¸Äß¶«)–“Š£‡uPL ‘-Ñ}1Íž¢†ÈdEMíŽÆÒÒ¡¸ÂZ¿'(ÖÉ-ýmyam]×o jB§£¤][nòÉÈ#JŒó%ñ–fÇwúZDÐýé®ýlë¾Zò#""úÔ?Œ>Æ“‡çï~¤ïqǾ'Ÿ(9CÄ•}ï‰G²=Ïó®â8ÞCŸe’LFýÚ±O µžy¢„û‡cŸj=ã?þhdžNüè«%y_nøwâŒXVDä­É¿úë%Ž«øæOÿö/SÿFNYkkkkk«Ô×/¿zãþ¾3sç˜'Ÿ~Nßr˜ˆlzí‚6éŸ:’|3úê²€´C×õ”¾åð•+WÂÆÒÏîs›¾íÏýä'kõòÞW›WvŽ5ÑdwÉDñhsÑšMê«ù颰º¥‚äŠxòéçöW>=ÍåôZõQJµÇæhÈêíPsðÿJóJò—Íß©í›+?öú¢õ,×ôìˆSiöà·Ñ– V0<½²€´#™hÙÖ#$`)¯;é{E‰cNž{0Mjè:ÕÑ?Ã0Qß7¹aE YNoOØ4 Y%n—¶—ªñsßš.Õ‚ºÎÊ´­ªŸ-"ÙU:£jU§ÛU)È2gê…dÑ_-•ɲ5'N¬CAñ˜­91¦I­’,bÓD7}ø|S,õ•‡ž9ðk¶’¦^–ú[HvqHö´¿k ÀR’À–Ñ2–úì)äÊ•+O>ýzVÃè/a–úì)áñÇ>¿cÇá=’Ka–úì)$ìíÂKýÌ‚ HgbGÙ_~õÌ@šJöx~C:°1Hv$;ìHv$;ìHv ÙÈ6˜`ÓóöÄÄ[/¼;¤ w>ôÐÅÅì À[/¼pùØ1Ø!]hmMH²cc i ¢ì[ˆ;Ü’Ö·'&ÞNj{$;ÀV’ìÅÅY­­°Ã†°H”œdÇÆÒHvÒšm/ÚÏ?ùôs0À&&Ï~þ^""²ÙÏÏCûeN/<þØç‰h›úÁOm9 ¦]×SzØÖ†µ¬ kX{ƒ¸pÍuaÄBDê?1Oƒ¯§{ ²›ˆÿ<yÄBD*Å}Õ¾ƒQxòéçvìØADÛnÞ¼yåÊXs}€©amXÀÚ°6€µ7„7o>܃gØËÀ–—ìi‡ßRÄiœ„l˜qO“!w®£Éî„3áùÉîîIŒí !ï ÁúË6 °-õã:ÕØF£#E²tiô%Çt~q¶LÆû>lŠ @ÄÎþ…r̾‹³k2†ÅS‚%#Íè "Š46Òþ~å!ìa¥ÊË×¶çžNâ:Úl}£JXžØžÈÁ$ó“vCn*†~²»:›‹dqåàoBI÷$ÏËŠš;©-s⦠ía ‚#š!ŸCÍ=$‰²¸’ˆwj5Çýèÿë _…“¨Eü<¼Á“oððœòåKæ°ŽãùÉî’³+óú"å’]&+j:™k,m ¶ÏOötPûèèÈÈȰ±–úŸõYÓÒÖFÃÃÃÆÚ9cwwãDñèè°±v®­'`¢xddddddTë8!bOu8´£###£Ôñ­0”k 33mYY™ð¡dS쉴³LVÔ4ÚYÁUtŽ6ÉdÑlÞAí££ããß JŸxbô]ô®É(¼5ãØXs‘LÙX)û»Ì ÆÜ“‚KO´Y¤Ê̪nÏ5†‰Œ¤¯£MÔñÅi¤¬äLÚ©Ãg‡L7NZ ¹©:Ø KŒ–ÏOö´QÇððÈȈpy Ì2ÁnÖ±%eS¬Á\Ô,@vÂRY|ÿN6Ôk.œ»ãk-Ávùaç¤êH7–mDfd¶çrl¬9²ãOçêÚ5Ù™×ë±—]–­ém§ŽR¿8–ÉŠšOh¼;R²róiåu'›Šd2ÊÊÍŸžÿ`»ïs Aeg“2°ðµL„®œ\¶3ä›G|<Òu wÆü5ÉtÕaç°¶Kؼ²³·z-,­ïbvMF᳘„E+j!å>U–×£›:+¥Kͪ֒ñTpÏ&wm®¾ˆKñHz¾0ÉRí››nlã¤Ï›¢¡ƒç'C{ŒVìÌ•GèóŒêÜdÇö舙„.&ÛËËËÊÊJ'Š…mTʃus¾A˜ç'ŸíÏ×V¿'Öå;¯r Ž9Ú„ÏÈãƒhÇee¢•¶­WgdkNŒUOv—6ž:Ù[-JÛ¬ CDU{æçÌü9N.9¦§­ÚrQh¶Þþ>ÕxÈ0ÃCÖr«°`±”Rç&Ú&fç¬ÈU¬ˆÍ׊è}­k6â³ÿ%Çt~qV¼#Z“v¢ñÔbouÌ>E_$êù—Ó”»‰Œ“Cî:Ñrɲ«{;{JK˦¢c¸¹H¶ :tõcûæ0Kª£3Â^v—¹AxøA–­Ñæ7Ø«5ÙÞÐ{“Œ^ˆê«°óÚ ÔÉ6‘ל™ªoÛº–¦,®l›¸D”ô<ðxÁ°3W^ÙÑ+.Á…!Oenè öšl—ïÃ&t|¿ÃW,©°ùtͦC¤±kbYQ³v¢áÔ¢vuyn©¾ˆb¥9Ç"eûm¥ï2(؈!7•WSâ¼±±&—¹ñPÏdFÇhÖtl߬¤˜Ö†µ¬ kX{CXüóüå ©÷U?öy|cyç­·îØ±#É“°žÜ¸y3žg ü˪mD”Æ«A×õ”¾å0ìkÃÚÖ†µ¬½Î¼që­Â|_g÷Nⶆðø)!Êl2~<ξſ&»q×—+‹a 6xc °y{éïÊ}-W¾rW¾ë™¡W` ÙA œ&­B¡·mdlz…B©T*•ÊКŽ+•ÊèUŒhEȹ9'Pn4ã8MZ‘‚³Õšœ Y[´h›>¼z1ú+þ>M´÷JŸ®ïÅQC›^Ê ãh£¨Kù^ôºÅW[ãm¢#X&\\1pÝœß~›Çùo¹miîš¾‘ Äž4ãžL£M”~.ÂäIõŽ”&Iv ¡¬¬¬¬¬,JlŒI]×϶´hh~C«¡ÒÙí:´¦AcMNØqA¬Øuªx[|.‘M¯W«â-—ˆ4½¬hY¡n^5_k·«ÂÖSŸUù²­ÒïöV;–µ&mUWÿÜ”÷i¢½ŸPú4q­˜úÉ0ÀœŸ5iUþžmŠ!oesÈiÒ*ôä÷ÂøÛès'§I[¥Ñ®}5ØIÀVoÁ2ã⊎é—ìû —ݼ{…[^Z¹vOÞ›mß7w~C/Io☬ãšL£L”DDtõ?a뤵v)•ð`âëeee###¢ieOáåg¬ÙN5Rk¦æc-¬Ãb1[aÓ×SŸN%vnBå†fjÚ?ym\œŸÚ“·Ë÷ß®¼=ÿbÔÓf좖AjÝúT4e”8nBÞ’~®%¦ØÏô²½]Æ(Ûøl‹^˜~rjô-³ã¶äÛ˜³»Àë$õj;Ú8 ¥èm!7¼i‚zÔiÒ*bÜ;ë=Þ&4‚eÊÅ×ëî;iûò ·tãæÕ«Wÿü…=_¯*Ïyþ¥ßÁK2Ç%&͸&Ó(%ÙΚðS¾é(ÂëR±vHö-ƒmÜréú…†a¶E« 8YÊÖi2Mw熗knŒ±ǹ0[°ûbä~ •®¯ «J¸ÍgÓWÍ×£ÄoÃk°oN\Àº­üµ» Ô*R©5æq[”~)ؤ¹£¤í‹ ³õƒ¤Ò æ¤ïÇ'Øëg[Y–l™­øŸ¹¾žzY–=}dÖðÝïjÇÕv;{úˆ?…Ó¤›¯µ³,kï£zˆö !tÛ ½ôÛ»so,»o,¹¯¾}íõ?¾æzǶwÞõ.:ñ¬Ýé“u|“i´‰Ò¦7ì¨Ù 'E é*¥CT ‹ÄƘ­2èë©Ï¬qmzEýÃÜwät¼Ò7ÂCuCûõÆ„ÊõßE Û$0w÷ÙYPKí‚ÿ¡ZCæã*qš^]u ’†`=„Ðl‹^GD*m‹AgrªjRf~s£r€ˆ¸ûŽ UDD95Fû^“V¡ –Áhží=ÑGÔÞYQSkÏ!¢œšZbܦS©ˆˆöxïÓäì.˜Ê ËÙ]à½éé<;Dyzòzi½ÿ,Ö~Ç–Iœûí«·d;¯-]çø›7—ÞzãÍ×ï=JDgÏÿì¶Ù~8XöŪÐí8Y'8™JL”N“v\müë_½'Lé²j)E$µ &DÙ·Æ W‡Ëc•ÎngÙÓû‡ª’‹IÚŒ]µÑ=T´\œcD Þ•·Gã|©t}Cg¾AÞ eY–eíêñUl@Ȉg ã~T7í*ä95µÑ7ǬM¯à!ƒeNÑn¯êÙÞ}ôÆÚê¼ê‹\^œŸš:þ¨ÐWˆgfœŸnFþã×Ûï¸Ì,q…·|qÑqù’sÇïûã®—f†Þó•_ýž™“ub“©ÄDi3vM 4*Ÿzê)!™õgq70q"¥Ëj¥TB@²oÙ! àÉhªØ7¢—í’v%Gf²"úž‹ÐʼnZ3»à̸Ž/öŒÙTã4ÌÌ@£±Ñ8À˜Å×f¡ýâ\˜]ý.ô°ì|ˆbìÊÛXطΨÌe5·±ÓÓ/^¹óÞ©7ßZ|0§â/³öþÍǾù¥â¿#¢s¿ãxr/yîÌ›Ò?5‚žß\z=þ‰Ò;¡>ìýդНîÅ0µ¶R>µá)Hö­1ò¢?xé\˜Ý6=ÛXª˜åÚôõ$‘ƒJ›gðÅ”&ƒ/Ù®¼=¡ /îj«´û‡ªD£Ô¡ÂÍUãVt8cWAŠÔH¦Rté5ï4éº ÖÖöRûAc+}ïÃi2˜ãõ‡œ½ûgdzÊ,?Ý\!ö‰ C·ÜõÚÕë‹öß®ß|+çî|ùDôÓ³'ÝþÆuÏö[—þýå>t}ÆMÖ N¦ÉO” ¾n’.ëbjìeOÝr¹~€aˆ¡åÇèÛ˜À›mÜ<50 M%R’·¤‰k‰¯ÿü»ØC—L;ÚU:;é•J%ù÷¢¯®aŽŒ&SéúÆUÊã Çè³ÇkÚœ£ZìH´§Ãx›Ð–æW4Ž>õóÞÿ›ëžå›ü[¿vÌ¿l¡®ò;ûð'_ùý¹Å?9oï;ˆVx7ûû}ûäÓO‚Ǥ¡KMš N¦Q&J°êFDºˆJ©T &²ÖÖÖÎÎNtÈú ëzJßrvH{k‡_‡ªÕ§ô¾l~Ó*¹X֎ߤkžÃê‹ÆH‚‘$­­ýÝS=²]C+KÜõ«Ëo¾¶ôgçõ×/]ÿByüë÷¯\xþ·mc·Ìqnî¢}û¯Ç~koY.=zá‰'ˆèÞoûÞ£GaðõwïÇûüâ±c—#¢{Z[³Z[cžõäÓÏé[?\þ¢ìDúc+kÒ¦¯ê*ˆ?f»¥Mºæ9¬¾hÒš7¯¸™Û–Ün~军'Úvë¶w¾û–gFûyžß¾]æ~ËÍ{8Ï Ï¹ùíÛßs&Œ¼|yêDì%ônõ~€d`+¬H]_yü#Ÿç=<Ïq¼ÇíYÞέl÷¸Wx‡8"òpŽç8géòÜÌ@šp_Á{?üHAÌdÿ>2+|µ¶¶þÅ{ó`8€MLÞÈÏî±Ñ…²Êù²G`õ'xcÌ»ÿÖNÝßß~ë¶;nÝþöM÷µ›îkKîe7·âæV<ܲ›[ñp+nnlh0°1Û˜Ö lƒµamkÃÚÖÞ.\s]±‘úÁO|¥å0 ¾þӱ1ØTüxœ}‹Mvã®/WÃlð^v`ó0öÒÞ•ûZ®|å®|×3C¯À @²)?5¿Ñ¿3/U“Àq¥R½ŠN“6ʹmŒj§I‡}"ÊõfQç8­Rm_J›>¼i1úK¼V«K™Húôq­x|/ŽŠthüuãxLY·øj Ò)‡?.2 %0*¦9®›óÛoóx8÷-·-Í]Ãï-âšÄ¥OÑš$~ùû"Lž|Gù­-5h¤j0ÁƘTôR9›^¡5mÜoHÕ$øµw6½Bo“þ‰ŸÙ– Í‹çIÞARÅoïëÉ£¿îP´\ß.±:o¥I¨tÖvš´U]}vVµÊ+U¬V«J™húôq­˜úÉ0ÀœŸ5iUQ*hÓ+ yƒ,›CN“Öß¡ DÓËêTÞ.Ö¿h×¾ª­§Õv4ÈÄYTÔa$Ž‹BqŽŠéŽé—ìû —ݼ{…[^Z¹vOÞ›mß7w~C/ÉLÙeÌ÷~áÎ4ÚôŠ*ýî`O¾úŸ°õª†Ù=TkÐHÕ`‚({ª/CµfjþbÆÔ$,Ö¨ÒÙíÆšÝÑÒ×SŸN%v®x¹6ãÐþÁ˜¾+Z®Ódð—E*mˬ!"| ÑF›±‹ZW}ÅÄ´Fô”Qâ¸ñ眖®%6°*èe{ ºŒQâ ¶ñÙ½0ýäÔè[fÇmÉ$gwÑÅù)zµí „†Rô¶Þ4A=ê4i™p÷cÓÊ1‡?ß(”‘,¸^wß¹HÛ—W¸¥7¯^½úç/ìùzUyÎó/ý^’ñ²!®1ÿâüÔž¼]¾ÿvåí úÈvÖtN~j¨š¯5Öl\ ÙSÝÅãæ &íjâ4f[´ªÀ —ÀL"¢¥Î )×¹0[°û¢~ îåì.ˆ¼ÄÛh7ïÙ¿wÃщÙ6“\‹ÄIj©Ôó¸-J vçuh”´±}qaV£~TºÁ<ƒô½àøFåúÙ–A–e[fë>j®¯§^–eO™5|÷»ÚqµÝΞ>âOá4éækí,ËÚû¨¢=­‰= …ŽŠ™ÄÐK¿½;÷ƲûÆ’ûêÛ×^ÿãk®wl{ç]ï¢ÏšÑñ/›E|X¥ë+èªÆ@AbntÚô†5{aàd§CžôR_jÐXÛÁ’=Å]\O}i±u!²&Þ0¡ŽôIVÐiÒ íå‰aå^œŸ2׫Y–eYV=ž¶Ê©© ˆ!›¾Þœ€µƒ¤!\+õ’È?F‰ß YK¼“–BGza,Í©1Úõ¤SÄò-ï‰>ÍYQS[“#8\Њc÷>MÎî‚©?äë}Ÿ}M>;DÞ¹4ú:l2¯; yƒ‚šgíêqßÔa3vM 4*ŸzÊû^pëÎ"²È¬65à ó40õYjÐHÉ`‚ÇO·¦^¹ÚçF[M‚Uuš ³-z]¢åÂ’I¢Ò±¬Î›}ZWUjaÁIª ‹š…>æ›)zœ&ƒ™9? Ä8ñ§PCûŹ0«QëÖÒ~jMýøE¢uéö]y{4½FžzÍbLE›ü IDATŽBÉŽŠŠé¯ÜyïÔ›o]-ûÈ7îyWî{·g¿uíM":÷»1Ž'÷’çμ)ýS#ºÃeð€M¤×E27¦Fa´éT*ß„ráèÑ O6”>‰@»J]Ð¥âN“®«`mmŸä^•Zc"VN“Á¯?äìÝ?‹Ý03ýÆ…’7–‰ C·ÜõÚÕë‹öß®ß|+çî|ùDôÓ³'ÝþÆuÏö[—þýå>ô~Æí1Ç|›¾>ȇwåí™]pf°'g*R¦^Ó.@”=%—Þ¸yj`@yœˆˆ8î@߆ÅD¥jbÓ+êÆ0G|ùèKÆÐ€r ètçÂìžõóÞÿ›ëžå›ü[¿vÌ¿l¡®ò;ûð'_ùý¹Å?9oï;ˆVx7ûû}ûäÓO‚ÇdŽlˆ=‰è nrjŒµz…B)xò}G3ñ±ŒŒyD¤TJYkkkgg' ¿>躞ҷ†ÒÞÚR˃U¤ô¾ zÓ*¹X֎ߤkžÃê‹ÆH‚‘$­­ýÝS=²]C+KÜõ«Ëo¾¶ôgçõ×/]ÿByüë÷¯\xþ·mc·Ìqnî¢}û¯Ç~koYücîýö·ï=z_÷~ü±Ï/;vùØ1"z÷ãßÚ©ûûÛoÝvÇ­Ûß¾é¾vÓ}mɽìæVÜÜŠ‡[vs+nÅÍ ê[?\þ¢ìD"µ<é”6}UWAü1Û-mÒ5ÏaõEÖ¼yÅÍܶävó+7Ü<Ѷ[·½óÝ·<3ÚÏóüöí2÷[nÞÃyVxÎÍoßþ˜ € ’€u¬° t}åñ|zœ÷ð<Çñ·gy;·²Ýã^á=âˆÈÃy8žã<ž¥Ës0Ьµµõ/Þ›ClbòF~vˆ.”UΗ=ƒ¬?«ÝƒmLë6ÁÚ°6€µamko®¹.ŒXˆHýà'¾Òr_÷^ÍéØl*~<ξſ&»q×—+‹a 6ìÀæaì¥?¼+÷µ·­\}ÓõÌÐ+ÿ}ÿÇaÒ–¦®¤¾Ò~î#ì©&ðR9":ÐËnÜ[å$ße &mUWÔ¹$þ⼨¯Õsš´U]磽t/øôûZ¼ï• )Wôõ´í-~¢É"ßãGæ"¬±)“HŸhæä{qübŸM¯luÂ8ÚÖ§~WYƒË6ÂO¢ø|šÿíÖoE,êè$í„ëæ|ömžÎ}ËmK¿¿f'‚dß$î-5(‰ºwt7¾Ht/¬›â®‹s0éiyèŽ[·K};>u’=¥„ý¶­Þ¶aÓyPMlz…Öä“4qÖЦWÔ϶´hh^¢u^¹¢Š·\ÿëÉíQ×õÔggU¾Ó«ô»½ÕÓHx¾&ÆáS¬juןˆ5V™2‰ô‰f¾18M†æü¬I«Š"¢mz…!oesÈiÒ*ôdžuâk£&dªÒ™ö&/ÚýN+*Á%},®–‚ oÅLzt’tÈLÂôKöý…ËnÞ½Â-/­\»'ïͶï›;¿¡£d¾{O¸Rnkr¿úŸ°é:-µâLâ²30ì–¹ðÕš©ù‹±½Lo ,Œ5»£¥¯§>Jì\ñrmÆ¡ýƒÑçÁ‹óSA?ï»+oϪì×f좖ÁUϾ1­=¥„}Ë9ÑĦØÏô²½]F[”~ŸmÑ j)§Fß2;n[UC<ÍiÒ*”J¥"Øæ6½R© ?¸.-3iJ:˜Äè3}Ú³àzÝ}ç"m_^á–nܼzõꟿ°çëUå9Ï¿ô;øÃf 7ÉΚ®ÀŽi1øÑÓòÐÓÿW¢{åï‡d_Gåb2̶hUéáAf1íZC•.‘¸’Ód?$Î )×¹0[°û¢W9Iè&•®¯ «Jkr‘M_5_ˆ›šÅO”:¨Áþ½M̶>\» Ô*R©5fé‘Ê6n.Øíï–œÝæUI¤`Ovštóµv–eí}Tïu ›¾žzY–eYûvD\-2ÞÆá`!£Ó;ä†0ôÒoïν±ì¾±ä¾úöµ×ÿøšëÛÞy×»èijf¸Ç&poQÁ.%3"Ûô†5{aÉuÑ[ &M]/<ö?Ÿý;;ýÿ§ÄƘ”­†õ sߑӯ´¸]nÓ×SŸ=¸*«®¡Ó¤Ú¯7&TîÅù)s×xŸÕ 5Ð.ˆí>V©5d>þ¨ò8§éÕ$¯p¿/ì6“Ôñ`‚.°>ÂI¯#"•¶Å 39S¸eÄܨ>y²óìåé}¾T?nÓ©T´+oYø´Ê‚‚6@¯gKÁš·‘£bfsî·¯Þ’í¼¶tãoÞ\zë7_;¼÷(=ÿ³Û>dûá`Ù«€¯dî°1áJ¹½øq§I;®6þõ/^€1ÓŒø÷²#Êž"T:»eOïò†‹7z>‹Ü›»ÚÚŒ]µÑg»ÈrwåíÑô´v_ÁÐY§Èi†¼A;+DÕã»rjŒ}dˆ¬´ÔqÑŠéÓ>~fÓ+JŠ ¨°˜gäÔÔ¦vˈFœŸ>r_вìâüÔÔñGË5šƒÝ£^!}7&®‚B‚ôëÚR°¶ãí&|hxä?~½ýŽËÌWxûÇ—/9wÜñ¾?¾ázifè=XøÕà(¼*™p¥Ü^ô¸ÍØ55Ш|ê)ï{Á­?8‹á*­xû¦ûµ7nοööï/]zõ ûüëçfÿe‡dO)95ƾžÇ£ÏLÉÖ0öŽÑrsvÄ®pÈ¥5Øq Rkfœç<°!Ó?d03þÅFãc_G…ö‹saV£V%¥éó ~)¾+o˜ÂLzúÈlýš¬âo)Øñ6Šƒ‰G1ÖÐ!×Ó/^¹óÞ©7ßZ|0§â/³öþÍǾù¥â¿#¢s¿ãxr/yîÌ›Ò?5/ÉH¢M¸R“xøå L(‡{5©â«{ñ’«ÔMß)L ÙS}¥-Ì®úéÉÕ vC^ô/“ªaÌ»T¹*m@Y9MÉdWÞžP_¨žM_/v¢äq•vÿP•¨J ]dÚ$®± >6©E¡J]Ð¥4®Ó¤ë*X•ísjôyoL)gïþÔ?:˜HKÁ†Œ·R&9:­¥C®7†n¹ëµ«×-ì¿]¿ùVÎÝùò*ˆè§gOº=üëží·.ýûË}ð‘LV£L¸R“øFË­­ÙS2˜`/{jtrè{7n¯¤mÜ<50 Ð—ÄÛ>{Ù‰Èã)ýÜ[L ¥`CÆ[q“$2Ý9úÔÏ?xÿo®{–oòoýÚ1ÿ²ý…ºÊï|ìß|å÷çÿä¼ý½ï ZáÝüíïw<öí“O?qN“y+QmœnŸ>òc‹kö” &²ÖÖÖÎÎN˜w}Ðu=¥o9 ;¤½µ£þØJr)½/¤ß´/‰eíøMšºR!FŒ$ÃwOõÈv ­,qׯ.¿ùÚÒŸ×_¿tý å ó®ß¿ráùwܶadÜ2ǹ¹‹öí¿û ¬½e¹pôè…'ž ¢{¿ýí{…Á×ß½ìó‹ÇŽ]>vŒˆÞýø·vêþþö[·Ýqëö·oº¯Ýt_[r/»¹7·âá–ÝÜŠ‡[qscCƒú–×?‚(;¢ d»n-SÚôU]}vLº‘9¤:C6†7¯¸™Û–Ün~军'Úvë¶w¾û–gFûyžß¾]æ~ËÍ{8Ï Ï¹ùíÛßs¡@²°N‚V¤‚®¯<þ‘Oóžç8Þãö,oçV¶{Ü+¼ÇCy8ÇsœÇ³tynæ C‘µ¶¶þÅ{ó`€MLÞÈÏî±Ñ…²Êù²G`õgµc°iÝÀ¦1XÖ°6¬ `í áÂ5×… ©üÄWZÃàëïÞ«9c€MÅÇÙ·ø×d7îúre1¬Àæïe6c/ýá]¹¯åÊWîÊw=3ô $;ˆ›~Cj>ð£÷¡ÕùûíN“6ʹ9'Pn4Ë8MÚðâ(7šµE‹¶é룳"¬±)“HŸhæä{qÔЦ—rÂXm ÷‡p—ðåÕÓ"+_µA挷âŽ$åxÒ™A¸nÎo¿Íãáܷܶ4w ¾gŒïF™ÚuW1··éЧžònÌøÏ«°y2½ÚA1¤ÔšÏÔØ“Jœ&­avl\ ‚^cgóýÊLØqA£HÿÄÏlK‹†æÅó$ï ©â-—ˆ4½l¬`{_aöJÄXåF±¶Ó¤­ê*è³³ªU^´‘ÖXeÊ$Ò'šùFù¾a€9?kÒFûY!›^aÈdÙrš´ =ù½0ž6úýAì7ªlzE=­¶ÃAÆ·Ž$¸ «ó~Ç“:žQ˜~ɾ¿pÙÍ»W¸å¥•k÷ä½Ùö}sç74pôFzÒLØ]EÝÞiÒÖSŸýð/½ïeÁtöî"Œq#*]¢H©”ÌÔˆ²§rYV5_k¬-H—A­™š¿[¯U:»ÝX³;Zúzê Œb«É¸Ê ÍÔ8´0ú\\nlkÛŒ]Ô2¸êÙ7¦5¢§Œ¾?çDo˜z:;TÐËöt£lã³-zaZʩѷ̎ÛÖª¶q³¦oM~kISÑÛB"[Þ4A]ë4i1n"uoEÉi2F•¶eÖàû]qñã™Ä‚ëu÷‹´}y…[ºqóêÕ«þž¯W•ç<ÿÒïà"™£Þƒ'Í$ÜUÔí/ÎOíÉÛøÿر ¦NñlÍgjHöÔM †¼ÁtŠÑØÆÍ!l`<˜mѪN–@CÆ ©sÃË57Ƹïì\˜-Ø}1ÚíéÐrcZÛ6nÞ³oN\Àº­Ò°» Ô*R©5æq[,Øíï–œÝQÒ&®ØÕk Øëg[Y–l™­8¢¹¾žzY–=}dÖðÝïjÇÕv;{úˆ?…Ó¤›¯µ³,kï£zˆöôosvˆÆ¤Ž§7C/ýöîÜËîKî«o_{ý¯¹Þ±íw½‹NÉŠ:Mº¡ý±<4¬\•ÎngY–eO礂ç§Ìõãj–eY–U+´a¡®ˆrã°v4ëàþ¾±+B•ÞØG£9H÷×ÖäQNMmÐÒc÷†MÎî‚©?äë}Ÿ}m?;DÞÉ6ú‚lØx›SSXMÙôõæÇ3†s¿}õ–lçµ¥7n¬¼~íúŸÞxóòá½G‰èìùŸÝö¡ç8x®’ËÏIsíÜU¥ÖÐÔ‹Ïx÷²#ÄžQ¤Ëª¥$û†_rÆ®©¯h`ê7ø¹Øf_¯ žÞ?T¥MJSÙŒ]µÑ=T´\ßpcì#q1·+oO`SƒJ×W0tÖ­Ü$¬Æý¨nº¿¿‡rjj£oŽÙx4½l0½±öü/ÿ"—‚秦Ž?¦þAš·*]=.œ0®îÓø#šRÇ3„‘ÿøõö;.3K\áí_\t\¾äÜqÇûþw{ßÛÆu­yÄšv"Çv§‰PŽÌÌ?½¦ ÑbܸoAÔ®P8ÚÜËm ¢M eÕ`á°lß°\d¬*û!À+ë,˜¶`é*î–…j‰’ŽŒÇMô¤ì†R¬‰~ ±cI‘dŠÃ™ýƒ¤8#Î ‡¿Iù|ÿ$¢ï½sç»çžóÝ3wæ~t}æâ?bwÞ“Ž¾úÚJèõâ Y#s¥© y”È}‚ý…qé.ÅÒ¥Z)UðõÓz-ÈÈÒ²µ‰z]fIkˆv–ÙC.Lx)²âëjM‰nKY×-É6aw§8 LíkEm.ŒÞ‰Ú¢…¼€ üª|\¸©„Ã^£û%ìOœ&‰&̺.sc8DâK]­îo ’aòo/[$†§ö{Ë#üçË;öM,,-zäÙ=;÷î6Þ·´¼Þ='ˆÀ§2;ÌÔÈ9p-¦ôzÍÌ•ŽGd%yw’|ý´–R¾)…’Q´°iÙ7•è1»Êm6ä·¸YS×¥)¨´@¸Ì.Š&H"+Á2é¾®rtvõû¨nW(×vµT7­Á…ü–ÚøùEOFØ-2|0ä4&ýw;FGØËÛÿøüõ¯Ÿe~ý¿üoÓ]À]?ÍoWW2Æ[2¯Ñ”ìí¬«1×.sObŠƒ=ù¿¯Þs‡I¯d˜T¤KERjüÒÌÄðÅ’Åî¹%ûÍa]ñÈD4j;‚ÐÈÉVš²z¢Ãú&åU~¾˜¢¶¨¤º¢mJë–¾nÿ°TA˯kr†ì”Í6ûž‘ø°ŠæD¶A–¦¬ÖACn'˜ýö\’btÊeµ ®SáÔL(²¡³¤FþOËån¸RzøB¸¼A2Ì'Ú ’Êf³Àþ£Ò`Uõ=$ lO[`YmâÖ>Û)ƒ ôëWo&gÈNI- 3îM ¯Ê3Qæý6º»6¸¡‘?ÝÿÅ·V2k7Ä¥KW’o²o|ïÈO}èK—ß»0û1·}÷6€´È‹Ûï¾ò̱Ó/ÿZFûkæªhö&gÈMY­oÏÍemv|ý´O¢ ]¥”Þ(¶ß²û¡'JVðµ±Dö:|>߉'p@Ò?By‡–g[ðÖ]2÷±ùM+àJ±]½j…Г 'iE<ÿ‡ŸwtÅÒ)aeqma>u•[¹öáÊS‡¿Ÿœyïòäùm[ †aMxaš5^:÷²}Óbr(÷]ö}ÇŽíBÂoÞÏ=óÙ“'çNž€=>ß½>_ÉZ?{ñ÷”wà+‡ŸÀ,;Q ýûÈu–¤©>¿¥½´7ÒVnhE,|Â:S³fÒÆ Ÿ3 #dQ2™ÔÜû¯#]D›¢Ãçó}f·‰@ ØÄ0½²oì,L:’<ôÒxT»1·15 ¸i ÙF¶È6²@¶›‚Éå™É±³`?ðØÓÞ$¼ñæ]Mu܃@ ĦÂïâÌ’8ß±ºë;GG6ˆÍ<ý@ ˆÍƒsÿ¹sïüÞ‡Ó»˜y9v A P²#ÔÐ:GÍz"‡ÚýãÂ.º*7¨ëº%ë*ô »6¶¬v-=ƒBS»Wb°ŠØ¨AÉrÊë¼Ù™:zHSjF¨ƒ cZåqÑSÑÆT¬ºÅÇâfñ· £f`Ê¿K›jÀéãõÂ̤±3“ø­©÷—ñÅ÷Í#'Ôœ’>ó ©‘‘ä´aC§Gb•ÜS'8†™Vøê³ä«v4eu…óÇAn8â›¢ÕøIx½H*· ¹CˆJ®«£î†¾å>m¾áS‰j×’«¿>¿%À2DuóO*K–[^ÇͶ¸p0jx'v¤)kÐ<Ê0&àÂ.+ë#­ŸÉD£)kî,Õ*'‹â¡Wª3Z×"šàåò#É9W²n`Ê¿çÎdÖË(™Üêÿ…¹ûÁ5^äÓÂZ*½¼Ç¼ð£_DN<ë@Ci{ó–Mõ@©æWiÊ4ÿçÀÀÕãÇ`œƒ}Èn]—ZÊÑ­*`–ýæ™øvÇDrº´•I„ɲ!g·Vy þ@i1©z]i]}S ëÕ¬ r-:äïhÕ¦$Ú%5r±ú[.w@›¦ØÇc–afØâiäèxÂKeÕ•ÉIyqºv„pa—ucÚ5Ÿó¨é ]wŠh†—ãÂÁ‚‡!\ÞD0›7Wû}:9ÑcîÊ7Õeî‘üÕ.˜š¹Æï˜ãZZH­ÞX\\¼úTÏú›Î_|­c3È@ASͯfß™/vu’CBë8TªÑ %{+"2Xë"Õ[PD)qá`Âë" R© e+ }juÕ¯[Ò÷ÈûÆM%,ÝÓšOš”¯EÇ#=½›ž-ÛŠ´5Œ-ä·Ø 쎈º§¢ãK÷ú°˜º-‘ª¼šÔZ¸0™t³ ððäl…¦<0Ì0 ð5]wŠh²—˘â·ð;A,þ¾ì~šêKºCí÷Ü$vñí»ö®®ñ«)~ñÓåkÍÏlÛrë®ðËßFÐ:ÚjAS(Õüªüw€ÝïN¢Çª§'ªetCÉ^oqÆ2 Ã0gÌÁÙåJSÈ"Pn' T…‰ “±^QîuõÔUìÛtr"â‰Û†aÆ/Þjªr-™«Ú<é–•…"IaÖwm,·n<9áVÐÒ]æžj¼fáB’$}#ïQî¤09Ýë 6 )O¤Äï„ݧž´Ùlƒ‡½í¶Ä\xûƒ­÷qË©ë«ékË+__˜88ãï¼Òù¹ó¿½€&ÒÖ‚½(hVÄí”ìu…É @ó¹âÞÜìºâLo¬¯²×¬èßâÖöŠ×ÕSW±o]æGáq6°ÄÆ9×RéXë¿/¨ñsY7ÛøŽKF×ät×wˈ#›8?st¿dY6œÈ /›Í6‘NFµÒg_¹ É’ô ½SDù^Ž Y{.ÜT¢Š¼¦ÉI™ƒë «ËÜ£¤°³”ž9šðÔD‹é¿SDó¼AfÍ€ù¾…ßåϲÛm¯SøÏ—wì›XXš=`úúçï=øÍGøíÇÞ='ˆÀ§2;ÌÔÈÚJ[B+hn”j~uc¼úÈ>‰­[ø®atCÉÞÈHâw3YÑTЬýâ%7•(KtÉ»Æuu¤ç•ûF¸ ªŒ ׉-y„«7Ö§¨Òäa¹vóª™Úü\P€‘CmQHØ-~2ÿF é·TŽÉI™ƒ¹\“é`o¢îj«œ;E4ÛË…]ŠïíÉ~ï2÷È£l[½~úúdlë®ùŕٳ̯Wn,™îzàáû­ðÇñÓ|F\]ÉoI½öf­¥--\;hn”*~5ûûb¾Øî}¸—¦®š½†Ñ­üÈcR>ž¨ÁýÃÍM‡ÒñÈD4j;‚ÐÈu§ÐÃì¦Bϥɪ|1DmQIun*Ñcvßõz]µëꪫÒ7“3d§l¶AØôLˆÐ¾Gy‚¥)«uÐ[£ ÐoÏÎ+rtÊeµ ®_ÎYzX7²¡³¤Fv¼Œ–KßlÓsAY´dòÉ0WüD‚d²Ùl°ÿèhˆ¨€ù(»óßøs†ì”tX³üçge ‚¯}FmÑõ?2™¯þ-ãN-àåˆ"ÿ,ÿ=k@V[öŸömŸ ÂC#ºÿ‹o­dÖnˆK—®$ßdßøÞ‘Ÿ>úЗ.¿waöcnûîmi‘·ß}å™c§_<þ-4š¶‚ZÐT ”j~• Y ~ì9ÑIÕW³«E·ªÐáóùNœ8ô6¤„ò -϶ZP¯¢dî£ò$q“²­ŸÒúµPïÑ“ 'ižÿÃÏ;ºbé”°²¸¶0ŸºÊ­\ûpå©ÃßOμwyòü¶Î-C‡°&¼0Í/{ Ù¾i1944yü8ì;vlßÐÞxó~î™oÌž<9wò$ìñùîõùJÖúÙ‹¿§¼_9üfÙÅ2KÖ²$Mõù-–@J›ÙB½D šƒ…OxCgŠçÅô*/l¹eË­·o}ù¯¿EÑhìà—x1#dÒ¢À‹FãHѦ@ÉŽ@4H°" ¢ð?ýÜ#_‹‹Q1ÃgÖŒBÚ˜áÓb&d„Œ B&“š{ÿu¤ hStø|¾Ïì6#@ ›æ±Wö€ÉCG’‡ž@Bj7Æà6¦†7!ÛÈ6ÙF¶ÈvS0¹<39vì{Ú;€„7Þ¼«©ŽcØTø]œYç;Vw}çÈãȱ9€ßeG bóàÜÅîÜ;¿÷áô®f^Ž]FB”ìMpaWþÀykÓN¾.z_tâ½uýÔFíÎqa—F]•»S»nÌ]7×°ZŸ•Ë«t;_’¦6ÞZ‰‘*u•JJ–S^“ØÖBi2k…,z¤ IDAT8  œä[Ö䪸“úºhY£+>eCRðBm4¹J`æFÒØ™ÉüÖÎÔûËøâ{ÛØ®ªù)ûIi—äàeµße˜FÊkàdÔ¤T«,àÆ˜ºéõ¾¤›múGý$Ÿ±£ó§Ìlø=«QÔøIx½H*· ¹C½×ÕÉŒâuó.1d®Ó°Þi•ò²áð[,CT9S5¯RIÉrË«Ûr3 5¼“»´Ž¢)kÐ<Ê0&à®rTF…ÒU4eõ@µŽh;¯Lô€¥ôÌRöBm3¹´þ s÷ƒk¼È§…µTzyyáG¿ˆœxÖÒÚP7?åÀ—=¹7ïãhÊÚGu³$¡ú{‹ÿ…\×ÎɨI)«l`–½>˰P¬·ÕN•'쎉d©…õ†#A²lÈÙ­U¾pÜ·JzR~]}Ì(^—  GŽ.o"¸ž>(ÑO:äoõãQ’ í’é[ý-—; Mslã1Ë03lñ‡4ò t<ᥲaÉ䤼‰8]!²–#Ž@MÎZ²Ê“^4e¥hYÆ+WF2´\ØeÝ™ÚöË}õ%Ý!·EÇÌ*í…Zzriajæ¿cŒki!µzcqqñêS=?è;l:ñ]4‘öQïRóS |ÓɉsW¾J—¹'÷—Úï9Û‚×ÔÉ4(Ùë¢W¦–îiªæÏDª3¶xD6u þ áu…W†Ð‘ùµº²ëÖŽS·EoL¥ã‘žÞæŸÎ\·h‹¬Yý;„݉Ó7`é6IT£lùŠÝ^ÁîIxG†õ&<cx<0Ì0Ì™£‰àóÏ»âv–eÎ]/Á…ɤ›e† €E{ãbiЬwU®Ã µòäÒDìâÛwí]]ãWSüâ§Ë×>šŸÙ¶åÖ];á—¿ ‘´5«›_!ðdÀâïËî{ÉJÉü#tåßsÓäçA$¸NF.¥JÿŽ’½u0œˆxâv†a†±ÇÕw“5ÒØ<=çÍeI *|üË…ÉXo)KÜpÝj˜19Ý DSžrBDnï±q@[hɺî£äCZ‘AÙ~øÁˆD÷»¦¬åI–=¹6¦nËÄ? òÿŸ¿÷ñä‚­ö‚QKƒsÅíú'CI/ÔÊ“K Þþ`ë}ÜrêújúÚòÊÇ׿Àø;¯t~îüoF/ ©´¡oW|„ݧž´Ùlƒ²…ÊïÙiò/;‘áÚ:5)UµÄBÉÞ(t™{ å 2`‰sÍuÅ›} Y–aÎôÆú*[QÐ!¿Å­m‰Å×­Ž‚díñ¬°ŠÛŽÊÓ`mñŠ¡âû²Ú:—X†ÉéÖÞÓ|8†)†Kíù•.ÿŠ—‚Óɉl°”ªD½ n"š[x F QO‰Ù­í…Z{ribìï—Œ·ÍRƒۿ0;{eîCîŽÛ>ûÑõ™‹ÿˆÝyO:úêKh+m ×‹ÍO%ðÑTÐ<ÊfÝk[ ²^ñ÷Ü4É}üÿ¾0Ž …Z85)U­ÄBÉÞ0rn-ê$]u†•hªÒ{¯[53™õD$ÈvUh×±;S\ÛYQvÂçÀ˜lqIÁ…ƒC´¹Œ"ʉvù¸pS‰lfYo¹Yùí.sOa À¶§òkç™2Ü/ôJЮá…ÚX¯‡ÿ|yǾ‰…¥Ù¦¯þÞƒß|ô‡ß~ü'páÝs‚|*³Ãô¥Ëï]˜ý˜Û¾{@ZäÅíw_yæØé -£mUg°& žÆMY­¶ì?í?šÿ(¤Úïˆzz)¥ø{µèðù|'Nœ@âÒ?By‡–g[cyPiÉܧ 7­€+Ŷ~J[¹ô$èIZÏÿáç]±tJXY\[˜O]åV®}¸òÔáï'gÞ»œÞõÀÌ˱ËH’¡ÙQóE§Í7§'E'Þz¨Ý9.ìÒ¨«rwšíÓTé몗Ñîz›²bùhjcS%Fªèê5(YAùro’íéè¡Â@«m‰1-×]ºzößd~UÍ ©1¬­¥6úŠ.¢-1s#iìÌd~kgêýe|ñ½EåAæ*^¥œMI.‘+?2’Û˜1CQk)UÌvÍ= nŒ©äß’£)k¼YgjJzBSVW8ª‚´‡4e¥hõ#~^¯’eÞzû4e šGÆ\Øe¥@éªeJöGå^¸°«Ïo ° Qå¤-¾z•%+(_nãÍÒOÁ¨áDØEhœã¡<ÐjF«Ç0C¹!¦þƺ>py@×@ç+Ò”ÕC5þŒz]ü ªš›Ù³"óÆ@SÖ>ª›% -‘·ŠvFø/ÌÝ®ñ"ŸÖRéå=æ…ý"râYZIËÉ™Óc®Ò€[*ðqaW0Ñ– NoOþ»ìx$j-FMÍi”ÅÊfÙëK ' 7×ä쎉ätÉÞÊV„ɲ!g·¾»Ó•5¤ã /•?¤ò*ží®^¦dT.òƒ·úƒÈõ_]±¤?eÝW…$4X‘ŽÇ,Ã̰Å¢«1]F ¦n ÀtrÂQÞú˜°;ŠR&òd Esa—Õj³Ùò‰/ųAÒº1­’Œ ϵèâQÝÜœNNH ï2÷Ü'·OÍ\ãwÌ‚q--¤Vo,..^}ªç}‡Mç/¾‹VÒzf+õozÌU¿œ ©¾¤;ä¶ ÉÍ‘RU”GÉÞL嶆` ã¥ˆÅ…ƒ ¯‹(D¾2z+¿;åºòöéxÄÒm’ȬH±LÓSFµ?’kÉî¼÷`Ós™åqÛæ Õßb'€°;4OÇ@«­ÒØO%ö@£æ U¢¢õÌ‹¼È§)OÂ;Ê0̨7á)숇Še™3G¡ °~äÂdÒÍ2 à _¦<0Ì0 ðÒÑ×Å¢ê°øû²ÆU0]E#2ØÌ½R5@ìâÛwí]]ãWSüâ§Ë×>šŸÙ¶åÖ];á—¿ A´žŸ”ú7]æª('ŠMÍ IªÈ dc ¢FRª”ÓÐÅP²7]°“±^WkvÊ™ È%I *|bSâîªn¿¬»+q-‰4D4b¡š‹ „Ë›–¡ŸKm1rîÒJ•P&gˆ¥€´–ÒíùŠñõM1t<âp;M`rº%ZÚ‘ëC.‘¯ö#7ƒœc.Hñ.sO±(¯?ˆ’¢ÝSOÚl¶Áˆìé‹¢Ç H–e†aΘƒm¹“ýÂÛl½[N]_M_[^ùøúÂÜÀÁ!ç•ÎÏÿÍè´ˆ–’~ý›ª¹ª\åÀÇ…]q{±ßÌ™÷ÀÀÿDêk7j%†ž(†’½EÆ6ä·¸[a§*MI„‰|Ÿéõ¹*Ò ¥î®ÚöËŠÌe^«-Þükۗᤖarº+Üü¡h´ÅpärØ2Ÿhr†XÖÔ´†\ÅÑš©³éäD6ÜÚl¶ÁH¡'ðXe9˜ÚðƒÐcCAóh6 2¬=.hmar†ІK©±¿_2Þ6gH nÿÂì앹¹;nûìG×g.þ#vç=éè«/¡I´’{ßèßÔÍU-à*š1òODsŽ(jˆz6:¸Ùÿ,â Ô2*): Q %{+@e—F+YÎÎ*Ñ zïnCû„Ý‘˜*lýJ(l<ÖS¦¬{‘7Ø6X_¾m«hu»ò#4"ÊêGc káéôí ”'Ô«A—¹'· A²,sæh~«~~Õº>ÙÎ+…]H•z¿–DøÏ—wì›XXš=`úúçï=øÍGøíÇÞ='ˆÀ§2;ÌÔÈšE«*?MsÕ ¸ƒ¬$p ÷ ý›gCf3¥TõåQ²7wx[#Å®²§M*±¦åo´*ãîäív‹ŸÌ .Lú-Jj\O™²î…põÆúS©r¿XÆò¡aF5Y¤6Ð¥V§`ÓcØ…b„Ý‘Ï\8)ÛL{¥µ9ü ª^DÉׄÅö â1hÊî6û”Ï등­»æWfÏ2¿^¹±dºë‡ï·ÀÇOóqu%c¼%õÚ›4‹~ŠþMË\KÜŠ‚øN‰šJ© N£6Q¬ø‘Ç:›Jô˜]Í7³xd"µ¡°à¦)«'j0¬ÿhR^æ‹ j‹Jª+Þ´®ZûÉe³Ù`ÿÑÑ¡t]å2jýQ¿–4 ÁÒ”Õ:hÈ­Qè·ç.5:å²Ú׫;5ÍŠlè,©±æÖßr¹…möá`ÂK‘EK&o s„ÒîJ%cP1Z‰ ©1h¨®È - ‚°ß;𳂠ĭ}¶SAè°e“jr†ì”Ô–dÆÙ`u~þãß©{ ¯0}¤S)nÇ<™Îq—M “3䦬V[ÖöÍgMÃûåk¸ÍùÓý_|k%³vC\ºt%ù&ûÆ÷Žüôч¾tù½ ³sÛwoH‹¼¸ýî+Ï;ýâño¡Å´^PV3W€[*ð)•?43s¡RJî4ª‰bZèðù|'NœÀi Hÿå@ZžíÞ¨¾$võ%Ý›W{•b[?¥5o¡úK£'AOÒÒl?ÿ‡ŸwtÅÒ)aeqma>u•[¹öáÊS‡¿Ÿœyïòäùm[ †aMxaš5^:÷²}Ób2ÿ]ö}ÇŽíBÂoÞÏ=óÙ“'çNž€=>ß½>_ÉZ?{ñ÷”wà+‡ŸÀ,;Q ùé5(IS}~K™Û›‘Òš·Pý¥ˆ–ÆÂ'¼¡3Åóbz•¶Ü²åÖÛ·¾ü×_‰¢h4vðK¼˜2iQàE£ñN¤ hS dG $X‘QøŸ~ÅÅŒ( ‚˜á3kF!mÌði1“2BF!“Iͽÿ:Ò…@´):|>ßgv›‘@ ˆM óØ+ûÆÎÀä¡#ÉCO !GµcpSÀ›Æmdl#Ûd»)˜\ž™; ö=í@ÂoÞÕTÇ1@l*ü.Î,‰ó«»¾säqdØÀï²#±ypîâ?wîßûpz×3/Ç.#!Jv„ §Í[­®æm(í†ô,¡Âï²£Ô•À…]u‹ZÖÑ>Mé¹n¾åKod• »”ïT¹Kù24µ±ý*b£%Ë)¯6 ­9tôPÁôߣ¢™é©^†ý7™D•3HÝۨ͸rgn bæFÒØ™ÉüÖÎÔûËøâ{Ëjƒ f¦àÔ®'&  ¹ò##¹Ó8šÂÀ);™ºˆ@ÜS§ØáËù룺›ó5hÉçíhÊê çOg~öަ¬­~ÄOÂëu@R¹MÈôBh\wCû4e šGÆ\Øe¥@.ì &zÀRšÕÜ'ÏYÍo¢û-ëu+Ÿ´ÅlTY²ÜòjÚ‚s 5¼“»*CY÷èfÖm€úëú@j$ZÈW¤)«‡jüYEºøAT97³çP1dÎ Ô )θrgn+"üæî×x‘O k©ôòóÂ~9ñ¬­¤5 æßÔœZÀ-Ä7МÓÛ“ÿ.{Eyȇ ]Q¬^"³ìõÀtrBr|p—¹§üÄëà(쎉d©…õ†ÌA²lÈÙ­UÞ’Pª«R!žðRYerR^õÞiª/é¹-:X¥C±^í“„C~ðVvpI6´Kjð£¿år´iŠ}úÃo?þ¸ðî9A>•Ùaž FÆÐ"ZS¯— ZwcU  ˆºø•(V/ˆ’½è2÷ÈG±yÙ•=mR‰UI÷J¥ØUÛ'ì?™(\˜ô[Êx^¤Ê*á2óKX.„¢Ž®ÞXŸâ"W>“”—­æìK h“ûò[Œj‹B5c¨Í=êÜ_(FØ9ñÌ…ƒå?Ê4ìM”öÊåðƒ¨áBÒ¥÷½½vÅ등­»æWfÏ2¿^¹±dºë‡ï·ÀÇOóqu%c¼%õÚ›´…VõáZ²¡DÀ­(ˆïÄ‘¨pøŸïĉ8 顼ÈC˳­ì+-™ûxü¦Õ^¥ØÖOiÍ[¨þÒèIГ´4ÛÏÿáç]±tJXY\[˜O]åV®}¸òÔáï'gÞ»œÞõÀÌ˱ËH’¡ šÊžnHÑMíDþÐû¢ï­ëç/j÷ »4구«ý¢65º-?tž »ï¨4Û².åëÒÔÆ[+1\¥z^IÉ Ê—Ûx“lOGNÍhKŽ©«ºCD7¶ÜN4l^ß"íåty0e£)k;é̤±3“ø­©÷—ñÅ÷MbÞ æªÕÍxñ¿Î §í+qcLÝfYÜÎ2d.žC³¾-ù¼MY]áü÷ü¥Ÿ½£)+E«ñ“ðzTn3§„Æu7¶¯Øæ'äËùâ}Tw¶zîÓæEŸJ¤)kÐ<Ê0&àÂ.%¶¹°«ÏoYo³òAÕîy%+(_nãÍF ï$Â.Bã åS3ZE8†²p>Xù‰ë×U<½Hr¡ îÑ/§1YTG3ç.‚‰°´)á¿0w?¸Æ‹|ZXK¥—÷˜~ô‹È‰gh(m sU ˆªfLSVO§ùsŸ‡·ÓFˆ@mYR0Ë^'¹R8›pyÁêÒµ‰kvÇDrº´•I„ɲ!g·VùÂ1à:s%ÛœNNHÎöí2÷äÿ¢C±^¥sìéxÂKeƒ´ÉIy‹O§C~ðŽV=aJö\»¤?ú[.·pÓ¦ÀxÌ2Ì [ü! “(9púŒV±0vYÕÅÔ4ªëNMòrLšêKºCî6ìS3×ø³`\K ©Õ‹‹‹WŸêùAßaÓù‹ï¢ul6M¨Õ͘ Yöɹ©kÄ蔌n(Ù[¦n‹~ÙQO ŠH”°ty‘ðºˆÂ”.CÙÊ–&*uåí들‹¿/»É!ëw²vÏM%,ÝÓ û(âK·IÂvdÃä ã‘žÞƒMÏ€–Çm»¿ÅNawDÔ=UÉS5Z5k\·4.L&Ý,Ã0l<9[¡) 3 Ã0l B×"šìåŠTy`MSAóhÏÓØÅ·ïÚ»ºÆ¯¦øÅO—¯}4?³mË­»vÂ/Aëh[(š«Z@Ü f¼)sñ±;ïIG_} ­¤±Á\ÕbÛ›1BøúiU;Ãä_f³ØÉd&g(´†hg™Ѹp0°17 "IDATá¥JßUíÓñˆ„/ÂîðÄi’ ÀÔ­¼½”°;‚S¹ëT±my¶J®íg÷\81¼µE yAùÝL+[~™œ”ÙEÑD¶J—¹Ç1"•ߊæÂ®>µ÷­ët§ˆÔëÚ3®& 6á?_Þ±obaiñÐ#ÏîÙ¹w·ñ¾¥å¸ðî9A>•Ùaž FÆÈCh.›CÁ«Ķ6ãM£ÿJÉ’ Yöº —G²ß» ¡¬Ôž6n*QþC€R)öjÚï2÷$¦8…ê„ËÌç ¸pò ì?™Í=paÒo)ú€ áêõ)fä[¹©„ÃŽÞ­:ƒ ù-FŽ€JúYmà*ÚˆirRæ`îŽé`o¢î;Ë˹SD“½œjE¸7ÉëõÉØÖ]ó‹+³g™_¯ÜX2ÝõÀÃ÷[àã§ùŒ¸º’1Þ’zíÍZK;Û¹Ì\Õ"¢54{ YR0Ë^Ÿ™eõD „þ@3׸t<2ÚNÈ;³±‡&åEy¾˜¢¶¨¤:7•è1»Šïz½®ZûjmJëšœ!7eµÚ²Õ÷-|²Íä Ù)›mö="$i l6ì?:"ä\ˆ¥)«uÐ[£ ÐoÏUrYmƒë]u–Ölè,©‘ðÐßr¹…¾BUzøB¸¼A2̧Ÿ•NÍhK‹ö;ÿ?gÈNI‡5ËÎ&û|í32(I§g2_ýÿ:[Æ"šàå4fbÞ†7IrhäO÷ñ­•ÌÚ qéÒ•ä›ìß;òÓGúÒå÷.Ì~Ìmß½ -òâö»¯›Ë>gyá…ñÿ>˜¢ª›f/%K*B‡Ïç;qâÒÛþÊ;€<´<Ûú]ºK澡»iŸQ–b»úulÍW­³´FO‚lW…çÿðóŽ®X:%¬,®-̧®r+×>\yêð÷“3ï]ž<¿­s‹ÁÐ!¬ /L³ÆKçÞB¶oZL M?ûŽÛ74„„7Þ¼Ÿ{æ³'OÎ< {|¾{}¾’µ~öâï)ïÀW?YvBq¬s¹Î’4Õç·X)mf õnh>á )žÓ«¼°å–-·Þ¾õå¿þJE£±ƒ_âÅŒI‹/w"]D›%;Ñ ÁŠ, ˆzÀÿôs|-.fDQÄ ŸY3 ic†O‹™ 2‚(™Ljîýב.¢MÑáóù>³ÛŒD @lb˜Ç^Ù7v&Iz i<ªÝƒÛ˜Ü4†l#ÛdÙF ÛMÁäòÌäØY°xìiïÞxó®¦:nŒA bSáwqfIœïXÝõ##Äæ~—@ ˆÍƒsÿ¹sïüÞ‡Ó»˜y9v A P²#ràÂ.…óäi*{dpS .z/ïaá÷’=,º;YÝ¢–u´¯‡õ2Êl.«Öª¬Kùb4µñÖJ —ÖÕ+-YAùro’íéè¡Â@«­Ö€*”Ï·¬ÙN¡ÉD!ô:<9™jž¤2Ó&˜¹‘4vf2¿µ3õþ2¾øÞr6ªê—Êõ‡Êf,­’;^nݸϼðBö_xaÝNm¥”äŸtF1”ìÍHzÅ?Íg†aΘƒMtÿɲÙsÙx “·ð;à ƒGKÐÝ´.à ÷ƒÂ‰¡êíëaFµŒ Ûë‘6˜èQU¸ºÍVø]põ«WX²‚òå6Þ¬ul0jˆeáBç@«­š ÷ ýÆ•¦¬Ö5ÜŽá¼%GöÝïfÿúîwâ9J5µõ" 4:£Jöf dÈÙ½QŠÄ^*{¢ÉIyëxºžžÚÉéÒrPªZ”ïNVÞœ•êJêaF½ŒFhª/é¹-Šÿòƒw´ê“rJ²¡]Rƒý-—[¸iêi,Pƒ(¦„ŸÏwâÄ Æ€ôPÞä¡åÙVó†U”䮾¤{óJ®Rlë§´•[@O‚ž¤ñü~ÞÑK§„•ŵ…ùÔUnåÚ‡+Oþ~ræ½Ë“ç·un1:„5Aà…iÖxéÜ[ÈöM‹É¡¡ÉãÇàöû·;þÛ€øß.Ù<†Ì4ñ¿]"¬û?}ýõOßxöø|÷ú|%kýìÅßSÞ¯~³ìD1’eÉZ–¤©>¿¥‚„íÍHi+·€@´">á )žÓ«¼°å–-·Þ¾õå¿þJE£±ƒ_âÅŒI‹/w"]¸þê«×_}öLŽEBƒ}sU°Ýñå/ù«_ý*òذ.g‘mdl#ÛµEà¥ÿˆ¢¢ d2b&# ‚( €( "ˆ¢ òÏýàYdû¦VêçÏòê«ÈC‹à¶/yÇã—,ö7öûÇþótøÿòR:h”IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/03_remove_https_spoofing1.png0000644000175000017500000005421412032647172030012 0ustar ebourgebourg‰PNG  IHDR¬äahÐbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 2È%Œ IDATxÚìÝ{t÷a'úï I=lÙ‰üŠ É´c&æâ&n» à†1“FÉ:(ë$äõjÙ^Û¬›å¡È½ä­¥ÀÐÙs›Í Æ­CÞ’ÆAïÍ⪠WñÓë ¸ ¢Óec j¶Ù.J5tlXcK1ýÔ“œ¹ Ï`‚H~?çèØÄ f~ó›ç¿ßÌŸúԧ䦦&UŠÙÙYT755Áét²6ˆˆˆˆˆˆ¨bx<ˆ¬""""""ªD ¬DDDDDDÄÀJDDDDDDÄÀJDDDDDD ¬DDDDDDD ¬DDDDDDÄÀJDDDDDDÄÀJDDDDDDÄÀJDDDDDD•®ºÐ²ÆP³A´Á3Õ« èbòA¼Øò8Bbþ,Iö¢ÆõLõ†ššãK Ý89ÜSVÙ²ËXÊw+‘D«+”SGÖM´ DDDDDD…l‰VqÞ‡®¡È†÷zˆz3Â*ˆbÎæ!„e™[4mÕ團 X10=Äß…Zg(b\5‹e·&ƽpøæà,Âý–¼­Œkùn%å0Ny£€(ÂîžÀ€UH«»YnÍDDDDD´¥lúÖÚvì’T–ïÊrƒ6l¶A„er<€Þ´¿ÓÇiiiAKKKÖ°8½Ê0Û`8c^áAåóCGþ3þ¯Ä8ƒáÌÑäüzˆçi-•$;š,Ù? dnuZÉr¦•Go9ú:‹,[)ó±Ù¹çÑÖ¬²ÇX_âÞTsö•ñ»±±>´:|˜O»ïUŽЗu/¬Ò·¸ A0¡}ø$º$ˆ!W2ôŽp…DH Ýøë‘/㡃f@p6³+òÒÜ æEmí{jÁЦ¶Â]€åx}]ÞŒ²‹!WNˆÎ^NA؃Q læƒÉ²•:""""""# w Å\­!½€´1Î-‡Ij@«ðƒ“ }WÍ¢‚Ï—Û…8|J g’Ýé«òÙ  ®Ð<¼§"è°*¡ÕÕƒ™./‚Î>ÔybÆ…sj>íؽNÓº"Ërs3QHR[Fëi6KÿIt/tÁ7ŸZ–†n?F:LÉq"‰rªŸ'Ò”˜ŸúË)Çø¡7ŠhFÙ”®ÈÚàh¯-Ë|ˆˆˆˆˆˆ æ¿Í¾RC7NN £Ã$”õ»Ê°T¸’å0fƒPîáT¢´îAƒ$)!-‘xS†=mÅyø\J«b›'5Ÿô–ÒdCfä|ó"Ì=‡ó:A0¡cd“““pÛ•_ æ}Øl½Äå´rÚSáÒÒ”èú¼€ØRþåLpä”mViUnkÒ¨ÒæCDDDDDTˆáV½Ö±ÔÃ’6( ®¡•Îèw%Éî«nêQW›ögmêD³ƒ¥un{Pé lw'” ºMm@(„àlV+"³AH’k /u`“©‡GyÝcøä_Þ¥ü‘Ýš,Š€”Yv½åÔ* ¢M£éw-ó!"""""*K`%•ÒzhU{à.Ű 1–„+¤4`‹!›&2C«¥ v)˜è Ì´9Jj)®U»GcXÄ]‰Ø€ž“Ú­Çß~“,›Ã@,H°kvU^Ó|ˆˆˆˆˆˆòàp JuãUîWU©÷qft—Ðç B’ÐíîFƒ$!èTÌ”>½Ã=æD ¥ !Q»33†1˜èú›niÌŸ|xÔ~r–º¬>‡R¶ì®ÊBæCDDDDD”[X‹`9܃† ó!ZB©ÌŸ~_«,Ç1æVB¬¹Û…« =3É.»i]ck¢ÁUäÔÐÃ#¥ˆÂçh…OcˆútáZÍr¦ºD™Ú-Xù^ƒfWeKæCDDDDD¤‡-¬ELžòd¼»U gJ—XåU9]ðÍ+÷­ªOî­mw)¯º™÷¡«o,õÓÚF$Þ"“ñºÝù VôO)¯ÍI'Iv¸'R]޵ÊYB:OÍÇ|Z·Ö–e>DDDDDDzèØ±c²ÓédM\ê{L£0ëÞJDDDDD´y<v ¾na5­ë0ì†U"""""¢,ì|½Âj¢ë0€‚[""""""ÚŽØÂz‚ #Óè`Uéb +1°1°++m Ÿ<>>ÎZ""""""¢uÑÙÙ‰åååÒ«:""""""¢rÍ;Üð{Xõo%zê™g¹æ‰ˆˆˆˆˆ*Øc>Rpœê­ºð'Ž~…[QZ^^ÆÞ½{ ŽÇ‡.ц2Ú+–•ˆˆˆˆˆˆ*+U$Ã÷°ÊrCÍNÀ3…«õù,š¦úa„ [¼9œ8p‡ÎG£ÆçÏÂÌ#ø¾˜›Û%é‹)0üé3Çш9œÈç‹ÃoÔ+Ñq7ª~RåI-Ñ& ¬ª s¨BÃiñ4âø™38ž'Ü~ªÀpE†#‰ÏÏÂñð Ìé¿bÆ]Oç0ê8<}&T"""""ª@Ew Åœ}cˆËrÎ0YcÐfCKKKòß`XÎf³ "Lï Ä!ÇèµÙ`³õ"—Ó¦G W™žÍ6ˆ°,gNG£ ×Ýþ{p_IãÎáĘ;7 Ç8pàæ’Ÿ€ÅbIû,vÓÿÆNpà»/ež9|ôœú÷kxù8Ô˜/ÐjÌ7«œÿò_:q‘>Ý´ò9FñšÁéÐ,31°Ö·ÛqÞ‡®¡HÎPA°b`z“““˜ðw£A’teKQ Á9Û”>ïs Ù ¸NöÀŒ(¼îTŽ uÁ5£ÛÝ 3‚pj̳âœ{g;k1Í7€#ÇgÎàL¢ÕuîÄœ=ú"‘ž;zGN$bÝþNøŸFòïs£>ài?þèNtwpz.;?úpöè tîW?iÄñçî…ï€FØpnô8^î>ƒH$‚3ióÉ.çßÿ½Ç»ïÓþÌÎùŸÄ}Ý Nç »"ÑÚ+K?üÝ C®d멦Ú:Ôk|,Ivxú-Éá’d‡g¸µêøÑ¡´ÈΠu–İ…–`ÁÀô4¦§ vK Ïb%ã_e­ÆÔ<Nä½)5߸xÚ߉ý©Ø‡Ót'RæþÎntN§Z"ãiÁ‰ÑQŽÄ¤GqÖ7ŠsiÓñ?y_r:Iû;á?s8~éãŸÃ ãÀ½w©ó9”9ßìr6:pô¬/|ÏÂwö(¾ÔXätˆˆˆˆˆˆÒT—ò¥Úvºgºàuö¡î¤#c˜ ¯Ë‹yQDÖ˜¨Å\­!eZ‰0k*j i÷Œ¦¸N—±µæQŽq kt…ïá'qßÓgRÁo'ºïsà…sJ‹êÜi:%îÅͶþ3èœ;ŽQ<çïÄ~¼†—ñ |ÿ |Cý¡_Ä!ÝRìǧŽ¿pûqî…qࡸ«èé­1° ‚ íÃÄšðºý0£MPî9s{…=~b]NK.Ú>Ô™)j‡g‹<äi=ÌùÇñÐÑ;""""""UÉïa+úOöÀ"šüt±(Ô£®vmš!Š!øÇ–’ŸWüC—ʪ‡:ð%úÚžõ!~ÏëÜ A7:;]ƒÓomtàèÙÓ˜›óãÉûºÑY¨ßíÜiî¿JïÝýøôCgsîƒ-TVÇѳè³ôáìQG¢Œ¥L‡ˆˆˆˆˆhS†=m™!ÖÓ¦†‡>½?í³â§CDDDDD±cÇd§Ó©;Âøø8:;;±¼¼¼iê©gžÅ‰£_áÚ;§áÌqvÈ%""""¢ÊqüÉoâÄѯ`ttT7oz<žµµ°RE§UœÐm]%"""""ª|Õ¬‚­ªÇÏ0¬kÅY^^ÆSÏ<Ë5LDDDDDÄÀZ9{ôìÝ»—÷±1°VžÍô(""""""ÊŇ.++1°•ßÃZ{÷îe%•[X‰ˆˆˆˆˆˆ•ˆˆˆˆˆˆÈ¨¢»ËrCÍN„D%ëJRzN£Ã$°6‰ˆˆˆˆˆ¨lŠja•ãô5;DܘœœÄÔ” p!,Ë›º"d9ŒA› 6Ûà¦_"""""¢mX#§¼˜E´yúa”UA0¡cd ù7„mhiiAKK lƒaíPLŽÓˆCŽÐk³ÁfëE .—4¾ò8½ÊüÓÃgú´ÞÄpå»é­Æ¢‚³9ÀÕù$—Ç6ˆ—¤—n‰ˆˆˆˆˆ*%°Êr³A@’ìh²èôÂawO`Âm‡r¡7Ïœ©‚s¶ þn4Hæ}4»×ɘ…×=†xZ,füÈP¼Q3ºÝÝ0#çP$gÞ3paÂß­|÷T‚`Eÿ”vI‚$Ùá™R¹,‡1ÔåE4­Eyz:3œÑu¬ÆBms3ÑT¨µ4Á.IˆÎÌePI²ÃÓojëP¯þ=ÜŽÚÄ߈ư˜6]£ã«¡¨G%1l!–3oG{mrZÎl%Åœ}©P,V LO3¼m–À ,"Õø8+€®ûB‰!¸Z]ʃ¡Ö0oA°¢ÿd$ ⼎ÖV †Ù˜ˆˆˆˆˆ¨¢« XÑÔ¦„ÁÙˆÞXûPgÖøØ\‡}²8Êü%É^¶.¼‚©#ÓÓpÛ%@Ð9ÄûV‰ˆˆˆˆˆ*)°€å°ÒÚtöe<è(<¨<|HLh·»'0¤¦Ž¸c6¸\­ìnŒt˜6l’ó÷9ÐâCò!Ja·ÝÕƒ™./|ŽVx%;ž˜|/¶<žzç,ÌèqµÃ$D¸å­3áØ±c²ÓéÔa||X^^fm騻w/+ˆˆˆˆˆ¨H£££ºyÓãñ”û¡KDDDDDDDåÁÀJDDDDDDÉÐ=¬£££¬)""""""ª¬ÀÚÙÙÉZ""""""¢Ê ¬|Ø]¼‡•ˆˆˆˆˆˆX‰ˆˆˆˆˆˆX‰ˆˆˆˆˆˆ•ˆˆˆˆˆˆˆ•ˆˆˆˆˆˆX‰ˆˆˆˆˆˆX‰ˆˆˆˆˆˆX‰ˆˆˆˆˆh[VYcÐfCKK ZZZ`³õ"—3†Ùlƒ˲ái¿˜ïÊr^ír–³J);•9°Êñúš¢ î‰ LNNbjʸ‡**´Érc}]ðFÍèöWN­ ªõ™ X10=ééX[Q ªË5¡È)/æEmîþdH:FÁNû{áA\!%7Kv7¦¬9ãÄÆúàòÍC’Ðsr&²ÆP³!1•¹íî X ÄEÄ¢PºZä”3=ÔúæEH’ž©~XIÎODÎfà‰ÉñbË㟥D[Îß== ðe-‹|ÕéK 0G£ˆ&¾oå.¥Ž$ËÅ@LDDDDD[UYZXe9ŒÙ ¢š,Æ¿ôÂawO`Âm‡r¡7Ï,  \ÊpqÞS‘DÈTZ1'''1áïFƒ$!è,ÜJ*V4µ)Óu6÷ivŽ %Z`ÝÝ0#çP‚`Eÿ”vIJ†ÅÄr>Ë “Ëâï†Ñä²(óTªÝ=)×Áœúêò"šÖzÍÖ["""""Úê ·°Žk~þÐC•r㘛‰B’Ú!· v)ˆàÌâííH4~B’ìp´×¦†gî·d†µÚ:Ôˆœ·u`nØà ÍÃçh…7-lªá¨G%1Ý…â²%Y¦R¥–%1ÝIJX°„Ø I ¨Û§¿<¢‚³¯'‡ÛaJ[~½uCDDDDDT©:;;±¼¼\žÀªN0›Þ Ô.®©n±ÙÔ®¹Y¢1,†ÂaF7YQ$ãËb˜ÆD¿Úõ7kÓ¡«5¤L·ˆ2•&·›r:A°¢ÿdº¼˜Ÿ÷ÁÑêËèþ¬µ^ˆˆˆˆˆˆ*Õè訡ñо‡U+ ªÝlC¡f#ý°ZLiêÌÈmF4×a_¾¯%†Ërcn/¢0£Çï@¬Ë‰`‘Ë"&´{kv"˜ ¥J¹¤hnßëùì(ÁÔ‘éŽä=¿Açšå+ô«„Q{÷îåžCDDDDDe³Ö¬R¶§[÷¾T ‹ÍÅf#"³‰"Ì3º» ˆ-¥†£¾.1<«¤Yc°7€¸ZFuº‰ œ^.ÿØ’vÈVˤûY±Á9u_íl$u?«f=÷+÷Ì öDDDDDD›\Ù«`êÀð”mÂÕÚŠÖV—nèR™:Fà¶K¹ZÑê A²»1ÒaÊoÆÝ¬ —ìðô[’!¯ßÓ–xx’ fõAJù³ XÑïÜÍÍhiiQ¦ÛÐq_¨Z®yŸ#ñžVå•5‚`B»«fDás´ÂfDµ9Ÿ•ò5ˆ†\­˜mJ„Òôx¿mk« A˜ÑãjÏ öDDDDDD[‹pìØ1Ùétq||ÜÐM±´vê½¹Ñ6æk~Ö »Q9éåG#ùÒãñ”ï=¬´Æšõ^YÉ܃“ý–u›Ÿtù2.ž9éêÕTnº Bu5vÝs„êÔ¦!TUaÇw@¨ªâŠ"""""¢ ÃÀZ!Ô÷ÊlÐüÞDÿÚ×°úî»ÉϪªª îØû÷£êÆ“Ÿ‹;w¢æŽ;Pµ{wæDD5·Ý!«k²P]]wß ¡¦¦ðrkd†d""""¢Ê%¯®âêo@^]M}¶²‚˯¼ye%c¼·±ûãÇÎ8皟•вººŠ•·ßÆÅ—_Òî¡…,CºxQó;â 7Ù÷ÒŠ"ªo¹ÂÎç)ÖÔ fß>e:éuÇÔÜ~;„]»2?ETßzkÆ<…ª*ÔÜu—¡€¬†äuuaX¨ªBõí·3 Ѧ +çÏg„Çd¨ŒÅ2¤î4®]õ×^Ë™d+¿ù d)óý¡òå˸vþ<ä´ÞšÒÅ‹¸¶¸éÚµŒéÊW®àæC‡ð¡ÇÃκ:V2æF‹û¾öµŒ.Áº«Î†*]º„• 26T½U7$¿ÿ>®ÌÍeäbCrY/$‹ ÉZ™!™ˆˆˆhûÈbÂc±×äZá±Økrùʬ¼ùæÚ¯Éo½ÂŽe­OÖmJܵ {>õ©²ïŒ€Òàj,9}çP7æ¬àWì¯9Z!¹˜Q7$³™ˆˆˆh[„Çbäzµ> K¹^5 «öìÁ®†ÍëÕêÛnƒ˜uk áëÕÕU¬¾óvüãØa21°ÒƪªPsçšÃvÞ}÷†t4r±!™­ÈlE&""¢ë ËÒú¨s=·Y[µd1á1ﵜú δWq 55ʵœÆse®÷µ+m‰¼‘Y7$³™­ÈDDD›<< +¦õ1ϵNŶ>ê„G½¹]¯s6u`}ê™g·ÅJzìÑGxD­°€¼Ñ!™­ÈÆB2[‘i3{éÕK¬¢ínuxó ­æ|.Ä_Œ´@®¬@X:§L+;½•ò®\†ðæ ë—.Bxc ¸vµðü®^Í®:¿Ë:ǵ]»s®°÷VÀàÖØy#äßþ°;3@bÇÈ{oU¦Ÿ6íÕÞ’X«ªpµv?ýÔZ9ç€êjȦ»rÇ«€[nÖó`%ëÿÏ]Ýô›ùwïÞ>NýÊ–>n-//cïÞ½y_¨KÛ#$³Ù@Hf+2mr¿ÿ;&VQ…Ðzm‡z~Ì~u‡î4®]ÃåW_ÍW–e\»p!'ä­^º„ko¼éÊ•ÜsÞ¹s9ËÔ"]¹¢9m9O룠q~Üqûívn}o¾;çþŒW"‰×"Þ~;ª²Î›Z¯EÔ}%b¢ÕQÎj}kj”×"fÏ×"V¾ý<^ôwØ%¸Â=õ̳[>”SeäÉlE6’ÙŠLD  ¯Gx, t_­¾é&Üh6 á±ØÉðH땈*&$³Ù@Hf+2m‘ð¨ 7Mëc¹Ãc±’­ÄÀJD´µòF‡d¶" ÉlE&º>r£[õ$[‰ˆ•r”ò+> ЍøÌVd!™­È´E$[H¶>+iú÷ÚexÜ¿üÖIVÑ&È’ÙŠl,$kdñí¼lú@q-::y×=÷h¾Ko»^WÊÃsØúh,@2<QY«,‡1ÔìDH3>·»'0`®Ã¢ÌáÄ#ø~¢<’ô1}ÎÎý飜€¥ïû€/Gp¼±œßßünÜU¾ß/d9ޱ¾.x£mðLõÃ*›ºnÔí=ˆÔò¤öÄäƒx±åñœý!y‘²ú < „ñ3á’d׆Ý=~ËÆúºà›W·ÏôœF‡IЭ{#ã®K]…Ñê å,WzÝmôz %÷k{QeÐZï›f›ÍZÙå/´M{¦úaA$ÿq^<ƒ‘?έŸÍÒŠ,˯âù‘çðßñq<|ä÷°ïÍ7³Br‘ÿ{ ¯¯Ü‰Ÿ¹·$¦µ^­È"€WA7tÔÜvD#­È;v`çþýÚ¡ãŽ;P•õ¾À¢žØYDHÎ:¶Cë£f€dë#ÑÆÖô mÏT?,Kcèëò"èBS vk»0<‡QÇàé3ˆ4¦Âå‡Oàž3ÇѨþí»ÏE"ØsuÀ œI„ε~kس«¦|‹œ‚o^„(†0é‡Õjü"y£CA9æ/V LOcÀÀôô†Ër/jìS?øêþ§çŒš“ÁS ¥Cg‡õ‡‚Âã®[]:ƒ²–íDÝlèzÐ×åEÔ܃“Ãí¨…úÍ à¯Û,ëaÍÇùD€Uó– ^.#­ÈÅìϲÆâ©9¼+þð+_A­Æ¸èܸVäøÛ+¸çæ*\;~MÁjõ½÷ðÖ /¬vg¾Q¥YrB^`­ºá†Œ &TW£zÏ%اOC ÖÔ`å½÷2ÃæÕ«X½xÑP`U˵òæ›™å“eH—. EÈr<<‡­DD×!°&ÕÖ¡@4í£ð  ®P¢eÃîÆô€5÷‚Â|õ«¯'[ŸD„àlF‘­2¯áå_Ü{ïJûè®{qÿý€úÑÜé³8zâ8”ÓýèÙêØ^›[¦ŠiIKìSÿïãõ(Ô£®V½X3¡cD+."–gÜ|u‘àôöÝ|ÃÓ[3E„àj i¶°&COž2¤OKjh€9E´Èð9åż(¢ÍÑ“ 0¡ÝÑŸ+ï©:ÒÊ\¨>Ôí:Ð÷¥Ìƒhö×áä°:íÐ<ŸÕÂk¤ʽ®ËA:ËŸ÷Gœ"öéô–_¥'Bþý9£¾Û¦*6ÖWÖzå0†ZeÙvœÓνz ¹ÿC¸²´„kY­ÒåËx'Éé­WV”iœ?ŸÓ•ôÚohvµ¾¶¼œÀ啬¼õä«W VH’vÐÌ÷]:ª«ž(ÙUرU7ݔ٪[Sƒš½{•ž>¾(¢æŽ;rZ;kn¿;kk3»Oë”Yر7[,Óºq UU¨¹ãe DDX#³Êѽ VA@<Ð WHT."0„V— ½u~Œt˜ÒÎ!8gÝ8}ÚªÙíEÃ3oÄñ§OãÀÃà9?:÷ÏáÄÃ/£ûŒ0çp:pOûÊþ{p_à4æŽ7¢qÍßßÞ/S`Eä¼õLYöf/¢ÑÌ-µ£ÃdEÿ”Èjý°j|‘¡DK¡ç fœ^8‡š2.ØÕígÊ_§\ûhžéÆÉ“=pwyáu¡q¸µiãÏÀ ÷)´¦…–~ù_w‰}J°w aü,*Ø:(V4µ¡ãêÕ€‚û®þpíºT[ŽuËàWIz"CÊ¿Ý=þ}cèëŠù£I³A@‚MéÍ€–&Ø¥ ‚ÁY„û-ÉÂ|eIÕ­ ÍðÍÏ#¶À,Å`>xX;¬Êa uy• =‘ݾñë¡,–bX€¶¦ÄºÍ¿ô–_Ñ}Ú”Þ£!ŠÕV_½ezá šsÂå‹…Ö¿,㦕wÅE\Åyì¼z{Å¿AøÂS™Äȉïcò‰o¢¥£p6pgßñÇ_ö ý¶YŒüô§å_Büö2ö?†ð­oá¼ ä´²Šo¯àWwÞt}î}ÌjaUWnõÞ½†ï›Ína…,C^]EÕîÝÓ¯]Ãê¥KJÀKß/Šha•¯]ÃÊÛocÃj‘Á IDATåí·sÊ}ùW¿Ò^Fî¹F»YJWëåééÜî¹»Y«õÄ{‘‰ˆ68°Š¢ò >H Ý8Ùo,Ç17…$µ%.‰3sˆ·§„$Ùáé·è^xÓ°ñ:À7¾`Á7HÃ8^Ì‚¬õû[!°^Y{`U[W{\ý!y?3·„Ž´+Œ u–DëýB qÙ¢¹ýÔˆJvx†•–ÜzÑh ‹@ÆøŽöÚÔö˜ZŠÝÞÕ‹Hå]Zû”I˜†6¸Bóð9ZáÍÓbf(<®~],Øw— íÛ†.¨“eH¬ß´2Ä”{oëöA³÷F¹é—%SmãA4x£ÎF0`µb1<\[8„õi·ÂVÂz(z›lóä´ô–ºüZë¡à>½ºŠÛ/\H¶>Êòn|ìÊ\½ú „çŸÇ»8‹½ï¼ƒâeÏ?wƒŸþ}瓸{þy¼ý+¸öÚkV^ƾóçшãá ?À’ÿ¿Ã£î›_ÇÏ.þ.jG}<Ž=צ!þ‡_!ŽeÔ/.b7Lø­ÓOa1¾€Ïœ[Ä{ÿÏ7ðËð-Ø…¬þzŸ¿²{¿õ8ÎU_ÂgνËòo þÇU4HððõO„«ô©Þê®*âÞÇ´0[ê«;t€tí.¿òJƽÁBžnÖE=éâÅœ®ÖÅþ ÕÕº” m¥{‘‰ˆ6E`Õ~˜‡Ú-1KV€(§¹>ÜûÜDö'?ÀÀƒ7™®õû[ÁÕ•2$¯È)øæçG+|é«¾Ä éä…²(®ëöSÊöžê°~óÈ¢ýj7éü!@oÜÂuWhß݈};·[sŨmÄA³7ñãÉ>ÄôË(VôŸìÁB—óó>8Z}E<”®ÖCö6Ù„Ùfg2T[òê*v\»†Èï(-êýØ««¸»‚ÛóY\ò<‡×¯ò/ð»_ö ½!7x\}m6³õ1ì;­+ÏCt_Äâ¸'ÇïcâŸÿ‹.@~ûeœùé/ñ® à’„Ï_ý ÄÇŠs¸„œ{wâGãàn~õ |Aýìʬ¼ù& ]Ç/]E^‡øõŸàõ‹q7€»ñ:ðY¼`?€;ÄeS/ã¬â–KWñ¼áï^ƒt랬šº†kW`jÒήWªvBþäoáæ¬à!ìØêÛnKv_¿½‚ú;oÚò÷> UUØY«½•îþð‡×ežšyÒÈņäbr±!¹¤{‘ËЊœ’ÙŠLD›>°jÛ‡:3r›DÌuØ·.óÓè²ÛxGR]~uøðÊ9 Q ¤ç^ÁÙŽC‰VÔµ~k¸¶ÆÀš¼wÕ?‘ÖåN}Ò-¸½¶¸mHŠjý R¦^·íq/ôÚ‡=ˆ5;L„SãÖ¬‹BûîFïÛ¥ÖSªktúC¿²o](v[R»{½1,.3õMÉÓj(˜:02Ý‘¼w²àÊָ„†ý¸ó׿ÆÕU¥ëêð‹áÝ×^Ëíf)Ïk´DÎã–·ßF㵟edžðÍðû®a%ò-üâKo`ß¿ØéÒ+¸wq7È“ÿÃ+XÔxŠîªªpùÍWñÆ{ðçÿ¿¼û¤¿éT¾r+ožÇ‡ß¿œŽ/` «¸÷ÒU|D:|㼤‚¤woß°+W¯`Ÿ$¢fg5¤+WñVu¾ûkP³@";TíÙƒ] w_ÆÙÿâ0á·Z?Ž;n]AxìEü3> Ûÿò»¸qüô;3øûêßÆÃ½±±ÔS…û›±ÿ®Ë»¾¿Ã'ñèíØ³xéØ3Êß'¾€}øg¼äüÏø[áSøÓÿcû4ZÓßÅzîÕK¸÷wL  ÉõB2[‘ÙŠLD×!°¦îõR.-P.ÍaÒ½HT/À[,µÅ<¹õ.Ü{ÿÙÜ@yÿ½p$óç}8r|Ÿöw*Où=þ$îë>S¦ïo‘ÀººÆÖĽ«Ó&Ac[Pº··g®g«)wÝ[M™Ûì0¬师Kl[‹‰ÐR_—صÊT9d9Œ¡¾«­©jèjÈ ‰ÆÇÕ® ÿ¾[hx9~LÈ›˜M<\§ÈÍÓr¸ Áô‡~-aÌ„$™Ñs¸ôçÛÖ6„ÙëÅì©6Ô7µç½`UŸ.û[ü¾8ö¦>ºwÆbx7ößañEœû¼{a gß{.`ÏŒwøÐ^˜_ÅËþܽ:…·.\@»ü+Ô<ó .È2îçZúÎõ^Ä>ü+KKøÒm‹Õ¯M#~å׉®«“ý,Æãš¯`ù­·ÏáÎ÷x÷ÈÎÝ\ \zû^÷áרùú±„ÕŒÈ÷/^„ ~øWøõÀí¢ˆ½xÂÔ«x'í¢²úÖ[“ÝWwÝrö¼ûÞÛYsÒ©Ú³»îû~>«Çßû(nÆ2þé'¿À|õ}øô—š”àø×§• ù¥FÔÞòžúJpì½/?ýü¤¦ òÄÿŒýx¯<íÁs¯Þ‡ëAӭʽ¢¿™}ÿåÀþY>}ç쨫ªþÿ_ç˜B3>þ¿¦Û_Å+÷+üqÐÕZDðÊé‹xø§ŠÛI=UøOþ7#‚eOÿŒ{!ö³¸Y8ˆýÑ÷ðÐ?á…›Ažuã;ü $éÈuoàéëôz'ªœ€¼Ñ!™­ÈÆB2[‘‰¶a`SÇÜ1\®V„ <Ár$OèÚ]=˜éòÂçhÅÓ«ŸÀ†ÏçûÑéïÆ‰`QŸFù±?ÃsþN$_£Úxgp‹r¡ú±?{þÆr}kXK—àô{Wµ.ð¼QDgæ°ÔÞž±žÕû+µ>³ªÛÏ_úVK7ãnN=u8q¯\ö¶ç½NOTÍàú]1ô57§ž¶ÚЭٸиéR«.Œì»ÅîÛ¥°ô{`:rµnåÿ‹íz-˜:0²Œ®þ<ßý2~[Žãê" Ëç±ëÊÔëÜÿ˜ý÷Û++¸úZ ŸÏã…o‡ñðßÂùŸ š¯(‘.½‚_ŒžÆëêEª|öÿ-®~u‹‹¿ÄGÎ-âNœÇÎ?û#üíUŸ—÷àáÛ8N-×/ÄpåécxÀçªv`÷sÿ'âÏ!yï£ F¿_°~íÇÛ7ÜRF×ÕÕ´ð˜n×-wÃTýkÄߊ#öVârï~|ø·?ñ†ùÍÌÈÛnƒ¸üøÎÌ/!ßú |þsÀû¯?Á?fm‡«¸Ÿ÷4âÿüT삼ÿA<üÕÜ“ÉõTSƒš»ÞºþB Ž_ÿ·0áú#‚ÕÍxÐõ¿%ƒãpý¸CðÈÛð-W/žºæO߆³ógñÕÿôsx¦úñ¹ ÔåÅà_=o¨ûó¡CøòM6¸¾éÁ RO ¾²cÞÆÍÀwBHt ¾ÞÛ.Q9C2[‘ ‡d¶"UøñíØ±c²Óé,8âøø8:;;±¼¼\1…ê™gqâèW¶ô :þä7qâèWÖ½ÞŸzæY<ÔöÃãÿ=úȦ¨ÃëýžWÖ…ö…Nö»-“@±XæÅËo^Àˆç9Ä>ù(þ"ñ$VõB'çÝ–ÊBæ„G/_Ƶóçs^ ’Þ}µ`¹¯\ÁÊ…×qåÒUHU;°{GUržZ;â 7侺CQ}ë,/½‰÷pîÈê"›1jM jöíS¦“~àκ÷1ùy¢e3ã}šUU¨¹ë.Ý{³›Å…š쨫Ól Hï¾J¶sõ]ÀTõÒ«—ðûìLTTH®ôVdùêU\ÍzÅTÑ!™­È´…üèçqãÁ¿a%lã‹ÃRoEÈÂáñ¼ùêx/q=°ãƒh g¶>ÊÉçH9óËw  o5ôôUqÏ.¼wmþyÇnÔÞÿ|èA7@j…ÇT€Ìº÷Q4$ÃãæýQH}G¬dîÁÉ~ +†¨ ØŠÌVä|!™yëb`%Ø4­¥%àŠ}EÒºR–ñ¯››qXº¸ÝÊ«5PÆÖÇ"dþð¸·Ü}7nÉ3¿äƒsÖÐú˜ Y-yZï­«ƒµ òß´ôàßðÐÃã mº€¼Ñ!™÷" ÉlEf`%Ú¶*¯õñš±rkÈul},&@u$[‰ˆh»„d¶"ÉlEf`%ªèY®ÖÇu½÷±l­; -£V€\ïÖGH""¢Í7:$³ÙXHÞ®­È›>°.//ã©gžå§‚Âc±²Ïa룱ÉðHDDD•’ÙŠ\8$oæVdaÇÜüÀÛ/°>öè#Ø»wï–Rðz‘._ÆÅ3grvœJo}Ô l}$¢-àG?³ˆˆÖ…˜õ÷N`oƒñ¯×þ¶ñqWW7/RÚµôÊ „øk@NcŽñŸŒñ—Î)ÓJ¿Î|Kãšùò%HË¿²Ãð¥‹Xyc ¸l $¿{ïþrAóz—/ig×îœëq|ð@ãz\¾ñ&Hÿ« °|j{VõšÍæýHñ¯} «ï¾[8@VHë£^€dë#mvêcþ‰ˆh ¸wƇ ë2+Ý++JÇô¤<­ÈÅôx”.]ÂÊ… †{QÒ¼Š ¬£££Ü"¶’«WQó¹ÏAÈî_U…ÕÛoÒƒ¢(BúÀ”¦~£VW3»1ä)¢Q®""""¢­èÊàùç×7°vvv²¢‰ˆˆˆˆˆhì¼W”ˆˆˆˆˆˆ6’È* """"""V"""""""V""""""b`%""""""b`%""""""V"""""""V"""""""V""""""b`%""""""b`%"""""¢-¢z­å0†š‰ÚÙW’ìðLõÃ*×eÕòÑv]ËADDDDDDÅYs « X10=ÉÉILL¸a—$H’î‰ LNNbzz ä(Ëa Úl°Ù–åm³RʽÜÛµ‰ˆˆˆˆh›Vã¡)Ž@¯ ---9ÁIŽÐkS†©Ã_’^J¶ÜŠbÎæ!Ͱ•ÆÞÄ÷{ˆËyÛ:¯–– †å’¦¥ f–]-gÆçƒaCeNo±Î^n½:,uzDDDDDD ¬"C]ðFÍèvwÃŒ œC‘dØêò"жŒVÙÄÐ?åI¶ØêÎ+Š!ÌÀ… ·¢8煮æx-Âþn4H‚ÎÌ—œ–¿fDu§ñ@/œA3ºý™-Êñ@/\!v÷„R¦ ½¸v™Óæ#VÝåÖ«ÃR§GDDDDDTÉ ßÃ:>>®ùùC=Tð»²ÆlêQg©C=€èB qÙ‚Ú´°åì«ÃÉáv˜JT’d‡£½@ìRÁà,ÂýXò}©6QÝi%†'¦•ôd9޹™(€6ÔÕæ~.Imh² U¦™9ÄÛۓˬ7K‰uXÌôò­S"""""¢õÖÙÙ‰åååòVu‚Ù Í (†àj ¢DcX`¬è?Ùƒ…./æç}p´ú`wO`Àº~­€r<€¾./æEQ)‹Tꔋñyb™k×Pv­:¬]ÃBDDDDD´ÑFGG WôS‚‹ ¨)ûPg¤¨v—TÁÔ‘é„mp…DChšêÏß:Zˆ¹û´Âªǘۋ(Ìèñ;ër"XòL”åÊi¢Õû\§Lk­ÃRoI-m]mŒ ¹‡ULh£ïZ–+»|éË;I•É|°Ñ`wçÜå6Z‡F§GDDDDDÄÀš`êÛ.aÞçÈxÊmúS{[[]ÂŒ—r« ˜ÐîêQø­_Ë2ãnF«+¤<\¨ß¢2­è÷´%ž˜ëÇ‚kzz®©cž6¥|éË¥.oÈÕª”ÉîÆH‡ÉpÖZn½:,uzDDDDDD•L8vì˜ìt: Ž8>>nè¦Ø¦¾¶%ˆ6>—ˆˆˆˆˆh0’/=ÏÆµ°£z³/€ú^Õ®K"""""¢-…-¬DDDDDDÄÀJDDDDDDÄÀJDDDDDD ¬DDDDDDD ¬DDDDDD´-T³ è©gže%Ñ¶óØ£°x^ "¢ ?÷2°à3-m¬"ªh?™ âßýÉ—eZõíï°By^ "¢Mpîe`¥¤îÞÍJ ¢ŠôÒ«—5U¼“…ç""ÚNç^V""Ú4X‰ˆˆ¶×¹—•ˆˆ6ÏI³Z`%m£s/+mž“&[X‰ˆˆ¶Õ¹—•ˆˆxÒ$""¢Š<÷òÌOd9ŒA› 6Û Â²¬ûY9çÕÒÒ’ño0,WT¬×òª›­¸\ÑÛÇFÕ Qò¤Y-–å­ýXÍý~ëŸÿ‰ˆ*áÜ[r ë Í†¨=cI²Ã3Õ«Py÷ÉrCÍÎdÙ%©='‡Ña*®ŒA´Á3Õ "Wb½®…º½$—Ó9„¦ ZNA°b`zë¹ÎãôuyE<ʲËrc}C¯½.²·©­¶ ÑöqmEÚ–çŠJ؇ÓÏíjyœÍ ×­^x\#"ÚZç^=%GÝéiLNNbb »$A’ìpOL`rrÓÓzâ0ú«  /qrSË:5åÜCeù5q;ý:)ÇèÍh Lo‘#Ðk+Ë/ð…¦Ô.CÆçƒaíuÌi)liiAsŸ yÖkúß@¯fkhúôl½½è-°]DNy1/Šhó¤.ºÁ„Ž‘Ì}ÉÈre—)ýÂ[Cp6å¶Ž¦ÕE¾ù¬eå›‘á“æªT–@ZÇsE)ÔÎ6úüš¯<ýž6ˆâ<¼§"úÇå<Ç#ÇR½éé×òÍGëx\Êq°PO£Ëe䜪պ­öBÊ.»:¼7ON/}¾%•«Èãy¾k"â¹wëÑðfä «u`ÖºÈ×:psÒÚŽ¡àÐ!'œeѲÆP¢5PëGŠÈP¼Q3ºÝÝ0#çPÄØ„—bJPlk24­x ΠÝþÌ2Ľp…DØÝ˜pÛ!†\è Ä37|1çlSò;‘!eÝÙݘr4¶óˆ!ÌÀ… 7̈f\´3=Yc6¨´^4YôÇ3º\Ùe+ú§<É–²["²ëÂÈ|ò)´þ³çG´–“ægü¤¡Åœ4 +®GÈ)çg/I/•çÇUKì’g“Ó)åø‘ïXª7½BǵÌcRáãq¹ƒËå¶k{#çTõ‡ŠÉÉILø»Ñ I:3¯sÔ²«Ãç}4»×É¥>Ýcˆgo¤\ÅÏ-ˆä½6 "ž{+.°s5´œFOZÛ7tàCë´ŽE1g_æ‰P­g u–:ÔÀB,c­é¸Z[Ñêð!ÚæÁô€µà´d9޹™¨2¬63ÈÏÍDSë9qA™Ë(ƒ$Ùáé·$¿[PºüÕíP›˜W’d‡£½65~⢭ÔéúÂèri•©Ðr¤×…‘ù ßùÖúüˆŠ>i®ÈÿÆO¿Xð;ã§_ÌùÞZ@ºÞ!§Ü?œ•çÇÌÒŽùŽ¥k9s|/çq0g¹4‚½Ñsj†BeO —$;<Ãí¨UÇÆ°XB¹J=ž\"â¹·RkQY'•R‚Ce]º‘ ‚ý'{Ð Iç}p´¶æ<(I ¡.åþ¯¬“¥Vݸ]˵êR{Z‹ˆEµ¦¦óyÞ2¨ßÉ ¿¥+÷ôJ]®ë7ŸbÖ?ÑZ~å½¶*á“/èŽÿƒÉÊÚ-©ÒBN)?œ•ý¼`®Ã¾u9N•cz¥7êxk윪v³mU©ÌèñÜȵñÜ[qµ¸ƒ¬±“Êú^3>Áš:02= ·]ÙøR­çûPgF ÷4[p¸Ç Q Á?¶”ø,ß´”a¹t>O^PUA°¢©MYŸ³º)µ\kO©ëŸ¨ô“æµU cã?ÎwlüÇe¹ÆØó 66ä¬OP+RdV9ÿÔ×Á”ï¸\òqêzÏ×i¾y¾¯wN•å8ÆÜ^DaF·?ñÃn¹é–«øã¹þµñÜ[‘÷°–û »¶ a†‚âÃS28ª%i÷–&cf¿Ò Z-» ˜Ðx0;xSÛîBwƒ„¨×@\Î;-u°€ØRîçÉõœ(»ù`c₪ð¶¡v£+W52=ËážD·ù¾Œ{ЃÊr)Ë¥½ÍeÖWnÙ×6Ÿµ¬"#VVeÝßûáóÉñ¾÷ÃçóŽ»¶sEe„œëI–Ãr3Z™×~œ*öxTø¸VÊñ¸Ð|ÕiªóÕŸf¢\9Á>Ϲ 뜺>?<+×ZŽç¹ËAD<÷Vd—àâ²…N*ùœÆ.Æ·c((åÉÅÖiø»0ïs ¥¥­®$»;ãÞRõA­­.aF«=YvSÇÜv)ù}£óÚ‰§N&‘oZ¦ŽxÚ¢ð9Z3†©ß ¹Z“eé0 Œ!W+f›wºàxÆ~@2Þ:t=CN±çÔRŸh¯>o yì7÷àdÖóÖzü(æxdô¸VìñØÈrX§æë¯ëÑæŒ»Yù~ž{÷óSSOcÁÙìÇ‚0i„‘r{>ŽÎÎN,//çþʪó49<˜8 6ÀlŽb~^„$ÙñÄäƒx±åñœï¤?i×îvÎÜé†mp…Ô÷⥽.ñËyQ,øð¥ôwë€Ý=kæS‚“óÈ j…Þš]½e]ë|ôê"{\#ïp}ê™gñ™–6ˆ[O.k¶ÕÕOà!ŒŸé —$»î4ìî X…¢Ê£~¶^Ë~½•kU–/ޱ¾.x£ù—¯P=SOFçy½·ñJ³Öõž}LÊ·m7åܾ‰ˆˆˆÖ5°îÙU“w¸ÅbA$Éñ ¯Ë‹(Úà™PUc}C¯íb§/œÁŠéi ¬áÂO–Ãx1^=Sý°,¡¯Ë‹ sM¼@,j-Jä|ó"D1„ÙH?¬Ö X€ë1ÏÛ`ú6¼Õ×{rCD©‡-º•óX¹¶"""ª\e}èÒ{—WtÿY,–Œqô¯Ç½˜E´yRI‚`BÇÈ@²5pÐfCKKKòß`XN^d Úl°Ùô¢¥¥6[/q9£…DCp6!,Ëß)øwx0íó8½¶Ä<”Ï*Fmê×|Áª½|ùê?{xsŸ EN7§žãô¦Ío­uoÍþW¨~Æü èvw£A’ô!.Sù‡—4ϬÔwÐÙ§üðDWÌ鑘têC]_êþ9ïs Ù ¸Nö(õìV~èÐÛ—#°è+ã^8ƒftûs׋ÞúÌwLÕ¿¤ýƒˆˆˆX ^^YÁûWV2þþƒæ&À÷~ø|rxú8k¢Ó’(Iv8ÚkKì’g×ü˼$Ùáé·dk u%˜Â„IDAT–Db9-Ùg®ÖV´´´ µÕ¥{ÏêšVfb­®¤†nœì·”TÃË—Uÿ²GlA¹ç¸nŸÖðÂÓM¯çŒ ð¾±¼õ[ì6j䟵¥³ç°‚`BãA3Dq3‰ôX¸ò/ežFêJkX©ë¤PYçf¢©žûatf.gºŽöÚÔògí§•¶Þ3ö1‡Ñ6¦¬ëq-û… XÑŸš>G+šýuy÷ëŒõ•˜$ÙánG­:ßh ‹¥Zë¨G]mžã®Îú4:~)û1°ruEÂÕ)ù÷¿úƒÏþúÿ=–=N)ÔîmëüŠ ˆ‰2h]f]œ©­En%H—Yú<òµÀ-Þòé×ÿ"bQè^Ð[oêÅzƒ$Aœ÷ÁÑÚšÑ5r-Û¨‘º"§à›Ÿ‡Ï¡~‡oÒY¡z0VOÅÌ3_]©Çb¶åÂÔåËbpº»Þ“û[÷‡0íz\Û~!˜:àê1Ìóî×ë{,ÕY¯eWÂþADDD ¬F\[‘p-ë‚ïÛ©äçéÿô.T›Úx ŒÎ–ǘۋ(Ìèö ~æ:ì+kµíC9+ ®±ËbeÑ_¾’ê õ&˜:02= ·]™Ov÷ïR·Q#ÿt·?ÿB²K¤øýènrº—-Tœg¾ºÒ¶Û²2͵쇕¶Þ3Yp¸Ç Q Á?¶T†cBþï¦Z6¨×q¯çš·«¢öeõJDDD´i몄k«©‹žo~o"ùYö?ÝKÁÃ=‰{©ú2.̃ê7Œüú¾€ØR÷rÖ×%Z%Ô ®Äð´¬~¦Þ;•÷b:Ù%3ý‚uëÈ¿|úõŸýƒCv]®¥Þ,ýÊ=ukýñAo{4¼&î#MÅRvÝÂõx)ó4ZWÙÊ_'¹ûP¾íg6’ÚKi¬˜õž¥¶Ý…î) óÕãZ÷‹ÈPbŽ©Ô½ž]CezøP¾c©Ö±R)g¾u_žãO‘û1°¥v©ùî8F¾;^R·;ÁÔá)Ú÷l©O£œmJ½B£ßÓ–xz¥ fh>ÉrÆÝ¬ÜË™vÿ ˜ÐîJݦ>uÒr8õ™¿®ÇP«¡©cn»ò@“Š|Rðé-_¡úWp¹Z1ÛäÉ©Ëbê-ýI¡­­.aF«}M]"×Ò54ý>ÒœÓx i÷iª‡BËç¢ô’n]ªÇbÖ‰Þ>¤·ý„\‰{ªínŒt˜ ­£J[ïºõàhSê–xˆQ¾zTƒw1ûÅKÒ"½6Ì6MaÀ*(ÇFuß+ý½ùöåj5׳©cž¶Ô±y½Ž{…ꋈˆˆ¶áرc²Óé,8âøø8:;;±¼¼¬9ü©gžÅCm_0<ãñàßà±G)ëÂðõ”O%l£Äõž|×tÚC›ˆõEDD´ÝÊ—àñxP]Ö™ÿ†5O•½cpåz¿¡+íݦ ™{ >íw[‡TÖ%”­…•ˆˆˆˆˆˆÈ£-¬|’U$V""""""b`%""""""b`%""""""V"""""""V""""""ÚŠzëèè(kŒˆˆˆˆˆˆ*+°vvv²¶ˆˆˆˆˆˆ¨òk¾º•ïa%""""""V"""""""V""""""b`%""""""b`%""""""V"""""""V"""""""V""""""b`%""""""b`%"""""¢­¢º‘å0†š¢ ž©~X!ã³'&Ä‹-#$jçãÕÕOà!ŒŸé —$»î4ìî X…¬òÄ1Ö×ß¼˜ø~zN£Ã$lhåjÕK%Ûlå%"""""Ö5+¦§1` é —å0^L„WÏT?,Kcèëò"èBSÆxJXõFÍɪ|6„ððö a…~PP?K_ODDDDDD×Ûæí\[‡zÍ‹ˆE uµj`6¡cd Ôm6´´´$ÿ †åd°´Ù`³ "Lï Ä!ÇèµÙ`³õ"Ï?èEKKKÆpíðG ×–waY{ÞéÃ2¾Ÿ(‡Z¶ÌiäN[ ¦!Q„(†àlÂKÒK9Ÿ©ã&Ëõ·Þò¥×§­·7QGieÊS^"""""¢­X#³J÷ඦŒVSA°¢© ‰ Ö—ÕVÄÉÉILø»Ñ I:‡2B”(†àœmJŸ÷9Ðì\'{`F^÷âYãÏÀ… ·¢8煮~±‡”Ößnw7ÌÂ9”9®:ïééíÖç./¢hƒ{b“““ãiM[¬èŸòÀ.IÉÖéÄr>Ë×òœ\>·²üiËR‚¯Ý=)×Á¢ÊKDDDDD”á.Áãã㚟?ôÐCÁÆÕJO:€Tæ„6©¡'û-9ãX¦á† ®Ð<|ŽVxõBY¢•6šõ}I²Ã“˜n=€¨d‡g¸µˆ(GcXP›6¾£½@ìRÁà,Âýd—L–Ø *S­³$æ½C\¶dLË£±L9¡¶¯'‡ÛaJë2]hÚ¥J-_bºÉå[BlA¹G¸nŸ~}j•7ß6EDDDDD[_gg'–——ËXÕ fKŸAzk]êÉò2Ò"¨†Ö‰~õáK™IŽÐ×åż(®K¨6ºEÈ ¿ù‚ý'{°ÐåÅü¼ŽV_ÎC§Jvir»_S^­í‰ˆˆˆˆˆ¶¾ÑÑQCãýÐ¥B ¸’‚ íÃÄšªáMŽcÌíEfôøˆu•?TÃ\‡}šö¡Î HÑÜÐmô¶NÁÔ‘é„mp…ÄäC§,e˜öº¬òZaSmKDDDDD´ñ¶Ü{Xe9ŒÁÞ@êSõ^×dˆÌß*XšÄ–ÒæU_—Ñõ5=@74CCð-­iŽ–~åTu¹òO[ ³Érê~Vì©û…g#©ûY”—ˆˆˆˆˆhÛVA°¢ß¸››ÑÒÒ‚VWH¹×5ÑX¬è÷´%ÊäÇ‚OÊ-ÕŒ»Y™W{PM#pÛ•9ûÔÜô'ò¶¶º„=®Ô}¡zÓÚ]Ê£|ŽVØlƒˆ 6ç³R–_ ¢!W+f›¡Ô`y‰ˆˆˆˆˆòæ»cÇŽÉN§³àˆããã†nŠÝN ½SvÛÕGâÞàh›ÓVn DDDDDTr¾ôx<ÅßÃJ¤ÚÕ®À’¹GóÉÍDDDDDDÅb`]õ®¬ƒm]ôÿ·w~¯\Wÿjš@JûÈ êƒŒÞå%›ŠÇ^Q=›Ä]Š1…”cBPõ¨zØtpÛ@n7õ™4Ñ c[v~(Vz,?ø!ËûÒ°IãéÃhä‘4?îü’dûûyFsçÎ9çž{Ι;#B!„B‚A¢!„B!„0a%„B!„B˜°B!„BaÂJ!„B!„0a%„B!„r¸qo þàÃO¨ÕkÊ{ï¾M!B!„Bnn ¯ßOR³}ૃ"þð»ßúÒÖ_?ú'J!„B¹ù +ÜýÅO©ÝyúísÀË?áªrB!„BV2„0a%„B!„0a%Ù°¾¢!„B!LXÉ&¬¼ÃJ!„BaÂJ˜°º{ 4ß>Lú í”Ð&¨[ê–B˜° ¡(UlL¥PDÙÃUŒ‡¸„Õׄõ¥þßaýãïç…û—¿oSId ÐN m‚º¥n !Ä;®³õÉIÜ¿ßp›œ\GUQ(Ý[À—²/›~öÊK›YÃÈ~׫ÎmVkK³ùîσBQš(,OÞˆ±è‡L¡§ ìT¤Ïƒ´ËÛ0¾múëJ&fí*Í–'—Qh*õeÃfÃ4/éK‡A—^|c2íwýì‡ý\«¸¡º>ðœÄÎ_?•ŸÚæRÚo& |®vn| Õº:çpÍ»®ï°®•ËXÃõ»ƒ©õ·$]åêÓ™}¬Æ.°»2\=Š¥í‡˜ Ai°’ÒgFÍð¸µñÛ}ÇöÇrßÏùóW^ö¥YžFöp±–n‹© Ä=Úp(4ÞAØ­ð8«í`ëT‚$•P©­b|< óôá:ƒ’é í4‹¡V« Ûéu[r£Ç×€mbAàT>‚íÇé—= ú²Aû‰AÎK¢ö;p_êr^ºi¾ñºùÝk—¬*Ul¤Š‡Î ÿýþRxójÃFÕ9}ejj%3‹ŠZÇçêºî{óö º~UùzóÍþÔ*–HR ©)k»S”&vógXÌ´ì4¿‹¦Éݘîj߆Åyô}š\¯_³®ª¹\h¶îÆtùƒÊÞzUé(&éÏo6î;úcR­©.Ûù+·XÙe,ëø[ÌtâåxCy´¾[.4¯äÖ,`Ù¥Œ®ËøÒìׯJ}?l®ßv²±LV+q”7g;’Uk]ï‰ì|™QzåËÎ{m¸Ë^ÝÊaØæ%!¿ÙÝwNÌÛlú.?'ºôš¬8™ô4vW„ãQ%¶ß}Û¾ú]_'4ÿÌ×f>Úh·óÝ"þ¸{<¤‰^۷ꇇØ&8¢“b¥cnÊŸE1&ËÁŽ!SëMOC“°†B#íä¯q®~wÑ8C´•üµO.•pŒ4ö3ÓíêA»r°¡Þí\Ì,"Š"RTÃŒv|T?ÕçP”&NŽë„m»Õ ë¥Ò±í}c{ÌÞÑ7=Ç9á»ï/…7!.êDŒ·«LVöWÛPátf‡é ±&•ªÄQ.¯a<²l¿YXFªÅb~8:ÊâχYL˲XE¹¶ƒÜèfb÷0P?F«c[ÌY59O³°ŒtI½æýÌ4¤Rº#yÑ_£VÐ9ÝZÀTHo/!Š:r5@1/ÅLÏßM·ŒÊå5Ü•îº**‰ú+§h6øFüU¼µã3<9¬8³SØéÄÍñzyhÅ;\œà¸Ôs;myê z7q|)Jó9Ô‘DfÿÊÎÆ‡Ø&Ú›E¿ÝÌ­Ý5Y]ë½%f­KësYÅÞ|Ùˆe:ˆcPó’•ß6"ú D~.ué:¸œ¼Æ£vþÊ~¿¿¾Ðßµó^ç#;4šÃ­|·¨?î™ýýŽßõïØ&8F±°„$•ßÕljå"^õ44 +„ïM¨cE½ˆó0q/Üs+za& Ä☖¯ªŠRE¥¨*)k%‡g \ †µrÙóÅkÙ"‘îXâ«ïG çhÔ“ˆÇŽãÖŽíóƒ¯MÿùÁ׆Ç8 ~¸Þìh:‘@ba õd¶Œ™Ù_³Uýkœ²<†Èñâ…,O#»jÿä¸®î »« îæÏ°43N<\VeOŽëåiu<´ÆIýø¤ÃI·¯±%YžFöá šŒê œûPü’‘ÃvEü•ã¶Ë¿ûáoMÅŸ|áØN»«Ð":q«Óvñ®õ¹¶“é¤-åƒuAï†/I*!µâO@â—M¸í·•l¬ÚÙÚ:…TJ÷¬X°–µý¹Ìb?|™UÚ†y^FÅ ³6ý”_ó’™ot;9GEü•ý~ÿ}¡û1öÞæcmì‡ÝöÑ Fý$¶1±S×ùCGßšPëG_æ ³1dU ZO}MXnUÑÎh*M4Μઠ[ʵ1G}&‡:¢XÌgTǤ«ÌÄ“êy+u•)«ã˜°ön»{_öüvwïKÓß;á—²ðfç¸2û™ž@ÉÚþÎѨÃuB)Þ¾Û²×¶NO±µ : …­ÓŽÄÃ&}ò0&½Ìeäº]ü•™j¼óÖ€üûÈ…vW*½êÄæx-h«7pŽ*ÅhÇR¾ ƒ‚ÞM_¡Ð8V·—0&ËN·°Hx~‰_6áµßNæVUy,ŽÉ(¦V —¿Yµçz÷êËl Ð~ǃ—+~Ê/yÉÌ7ƒ;%æÏüô…nìÇÚgø?ÿÛùaç}ô¹>+#;Ýßw›?ÄÔüät ;­Õ aûæt õOO*ý­VEËå8¿ŽGãØ´D4‚;€;ˆD¹ÄõN Ñµ÷N$ à¥R É̪ðq·•Ëæ†øøÉí€ìñ“/,ë(I¾ô³XÃÜR¥­ò»sŸ±´?ŠEVí«ûà"im?#”ßÇ숮в2\ý'3.œIŸÚãÕ}Ñh)¿€Æ| Eúã¥]WþÊ…~T8ôÉ~½êÄúx­xW*•PÙŠÑ lÇfIæ*ãdwÅdk¶2ºÞã+42‹Íò,ªë“H—$Ï/0 Ö&ìûs=·†1ó0‹ÆT ¹ù DÚÇÚËÚ‘ž[öç‡/ë±á{õ?Ƹžó’•ü‘_póRÀÄ£ÞýUPm;³Ÿá×üo9ÿ¸ì£ûñĵGln cÅœ.?Ô úú­§V‚ä%…ïM Š"*; Œ–âÏиP«¨úh¤õ‚#mÉÈÕzmuûóÒ¥Õl²õr‚<΢èxQ¶4°½ Cð¸Û›°Ê–ۣώðè³#Ûß9 LîÒº½sžIcqLF=—A¡©˜ÚŸ>Ò–FjϘ¸)æ·¯îknÇÚó}g;7ºÐ :Ï¥.¿Òú¯µÓÛÿÞóèû[©]W÷ÏxZUŽí¯Ó\FÞîÎÙû+¸²S¿=Þ÷e…:9>¦ J¥RûûX< I:ÅÖV ÑÈ[3¾b«ê3Q^¯6¡—OûÚ´ùS·"ȬßV²š;·—Ôç•Z󞈬­Ïeˆø2¡°JUªà鯴9 ã¼$4?8+¾ÉÏ']³xTÄ_ÙïÎ:³1Ÿa4WØÇâs¸Û>º.ìùÛLk%X{ ó€è·žú’°jÂ-a*ÜãÌéRÏs#³›ÈL«7{zË”öà¹N`¡ñµÖíïMln–;n…«•2ÊåÍkwÜ­MXeÅ—Í ~-½Ò¾™5מ·²¿ØœºÜ¡”N ϺZÞaÕþÈì&²Éz{ùÔää:jc&­>࿵0|§öŒQ"6¦{.#6wÕN>²Ôµ,~ÄðÚól§f6äV'¶Ç߉´‹wíçycsXëú/ý[§‰4Šˆb)=ã)ñÃ&Æ×ÊÈ/޵¯MÓþY5«~{™[C#³xØNZÕåÁv²¶;Ww àÄ—‰¡Œ оÆC0/™ùm¯cÅ«üüÔ¥a«{þκ‰Gíü•Ýþ |¡ûõfs…ULaewÝ~¸ê¡nñ3¶éG¢8»iÿ¿Ç…¿”ž ôþûï+©TÊö‡{{{xðàž={&ܸÒ,`e>×ñà·6¡õŸw|ø ^¿ŸÄxä?íW[ËòXû¿U‰?<ýö9¾:(â7ï¼íK{ÿzü Þ{÷m!ýþ*ùkáv÷ŠŸ µKˆ™¿rë‡h§„6a2Ö®Ùÿ·S·„ "ùe6› îVíy²SIêXJÒ¿JÄ€ÿ û–àôî¨/Æ]ü”‚'Cï¯h§„6AÝBñN /]šÝ,c–ÉäÍNX_ô7aeUšôÛ_ÑN mÂïñv³bê–B®iÂJnIÂÊ¿÷!„B!„0a%ÃÈ‹ …@!„BaÂê„§ß>§vûï°B!„B˜°:ૃ"5Û'JŸQ„B!„&¬"ðå„B!„r3(B!„B!È£;¬ü1%F!„B!d¸ÖPZ„B!„B†/a}öì¥E!„B!¤oðVB!„B!LX !„B!„&¬„B!„B˜°B!„B!LX !„B!„0a%„B!„B˜°B!„B!:B¯½öšÇ) B!„B!CC¥RÁÿäëÒ”†IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/02_http_default_hc4.png0000644000175000017500000003600212032647172026521 0ustar ebourgebourg‰PNG  IHDR. ÊoebKGDÿÿÿ ½§“ pHYs  šœtIMEÜ  þ±7 IDATxÚíÝot[ç}'øß}FÝÎ&ëÊc”1Šx"ÄövÊJQÂQ 0ZòØä8:lJãÌNšp)rCnâÛ™ö4„áÆ^"%…ÀŸí lÌ#; 3tÃdCA# œæ8ò¡¬Â$hÇ­8=IO³­üÜ}q/@ü¹Añû9|A^>÷¹žûçwŸç>¸p×]w=øàƒ°~ò“ŸzðÁ/]º„º€=qæÌ†Z€½…PE€P€P×!Õ¥’”ôõ¸Âäð.Œ¡rùÓÑ®+Ö§D¦É8·o™À»0j ”¯ÇU–†w ÎLõj‹6Z¼é:ZE;(P&0àK5xd.'I­Y¹’”œ´X,–Éd«– u[E[ãX,6V³ ub«òõYn!ÉËs¡ag CáxrÔ`Tkë'–r¡‘:]#ÒbO UÔš^§óºSëÚ‰H¯k+nˆäBËÕjµZ­–Édi%Îÿk8”““Z&“’¤Ú|©\X#ó䤲\ù¯eò*¿*÷(2&ºm6´öA(’¤Ü܈Kd¬,ºT“ò¹DÆÎÍgEr;)“žÄDw!`HRÒ×3Èäÿ• 8mΟu¯zæÉI‹[Ä€mªÕAǘ趉•K‰7³¥[aœw ¹«ŽD(N̹~hfªO»™2uÑŸa¬c08ݧ•’“6·Xèë“ãVqÿ^£ñ£ZæJÅÃÄÉ^ÖýHDÆ/©õL@‹¶ŠH·P]jpxKRJR2&ÎíÎ^ ‘Álçœh%»N’”Ë®çC3›!Á0ê­¿3°FæDm:=)½p¥½v°ÓVQq¢pEöõ¸ÂÍ ?Ü^£!? |}ndÀïÑ͔ǭ’6cÄÛu"Z˦‰Hþ½I ¸|æ‚ íš¡‘@†1ÑmûDph?Z´½SÞlË?àÓ•^ô9愈Oùá+Ùu2Ö=Øn}.(–öFªf.—§o:Ö·ùå'Ñ5¢›™êÕàø¨çFŸ–[Œ£3Cz »òß+£ÙAŒeüS•‰Ëþ¥ú…YÆÄxJþo.4lX¢Ž|^ÌËKµàµsNéìÚæb¹î V‘rÝ×öMy³6w`À§‹‰Èpv¨#ìψn«XhÇ(}e³ƒD‘ÿËáp„ÃùÎÆ6ž(C…8ÎõC3Îì€+ß\µÌUÞÁÙÍFA¤6žX&pÚü赸ÃZEJ42ŽEä]3 EKâæÛ=ÁOb¢sñÔò¸©tI÷ò©¥Îs¯”N ÎùcÓU–_X7Qb¢è_M¥Š3Íç¼™€óž|5ØÇ À…"YØå3·äär™Æ——ÇÕbÕoWYNDD}JZu>2‘X®F…rã³ßÖ`¤Zf€;ÙÖtŒ‰®‘¹œ$•5˜&-kÞdR*,´X&“ÉIyùp('åBËÅ2ÊIùus¡a‹ÕjµX&“’´¹Vé&vÝ‘£Ç·Lc:Õ÷úõ·•?Vgƒ¡³s"Q: ƒÁ`˜H$&”~)û]-‡Ä„¼zgçÄ”6Ù+çJ7pÀC‘Ãã±³L`À—*i‘ƱX,F‚ƒœ‡]¾B aLtÅÍòòLÀÙã!÷ÌžÒ~ÏR¾Z?èÔSØUšímµzãZß©ÚÕÙÀµ'&å÷ñëƒË©TjùËGŠÕYgàØ«©T*•JZ<Ú"·Êçh*•J¥RËËã¿M¦ñå )}‰E†Ñà`ÝrÓ§œF×^º€s»wÔ /çÜîêÕÈiÒÙ5"IJÆÃDÔ®3èÚ‰h%»N†±X,«Ù1 mÿ#+YuŽÓ„ús[ã4‘ïœ[}mžŽÝŸo*…ù…§VzïLãújF"µî?öòÀU×W\5½îÁ¥¿kD7ã,,”r¡‘†1bŒxƒ‰n›HŒÉñI»õ}¥# ‹ÛýÈ}*ƒÔ¬Î:ƒG ‰Þ¾þúë¯GRÍáHðÂDg§±Ç¶*ÀE‚ íòf{\~OPOíf"IÊÍyüiÒÙW¸-¶éôÄÓvoK…(v¤â˜s"a’ÄýÇê› î$XTËÁ4¾¼<^u À¯Þï ‚qtfHŸN§•kÙ4µë4mO´¦n=cbpn]i]íÕ°…ú‚QÀ9»JDtäáÓ×*zÒ6;Úˆ(1Qü¬èÚU"Zuªæ J^¡¨2Šhû¦¼ŽÍÈäu0&ºz‚+zbLtõøêŒ%Ú¾igΠºVn¯?âœ]%:Ò<µØYí–PZ4¯ ( Ož™Æ—¯?ÒÙÙ9N›ÔrHLtv ãÏ¿ 7‰LãŽõŒ €DèêêºtéRÙÒùùùþþþVx3÷¾z*¾а“'OâÅ?°Ç¡ šÇ4¾ŒÀŠ6660À¬Õ§ÎûÒg?|ø0fϸƒ]¹üâ>ha?ÜÁnݺ…a °ÇŠ¡ŠöÐû^ÑáDZ×Z(:„Vì1„"Øë†Ñ–)$)éëq‰ŒçC3S}Z·©U$åB#=®09<‘H4]Xp“Ç×jÓ:´ðŒG°ãP”ºèÏ0æð*3® ‚¶oz¬0ûjrÒbµZ­V«e2Y’“ò¿†C9)¶X,–áPNª3 IR.4l)žÓ¨°b(4lµZåÄ…F[ñœIrnJÙ,“WùUÄ*€}Š$)çv³A忹а[dvO$â±3Ñ=ÊmfÊDWÜ vpž 8{<äžÒSÚï™ËåƒÁ–iR¾Z?èÔSØåKg¾DîHpPOiÿÅ” G¼vÎ9W&)—¤¤oÀŸÎ·äb±±Ÿ¹¡h;$)—XJ+QÊ`¶sž^J çvï¨4ºvù÷©^F×NDéìZ>‡Úiä(HÔ®3èÚ‰h%[œ¹³W#¯Háxµ†c¢kD‰j‚`‹Å“î¨PD´–M—.( 3M+Ý6·ÈXC™ ‚qtf¨ƒs– 8m¶É$:åöm(£ÙAŒ‰ñTå?ÛtúÒz][3 Ö¦Óçöíu² Ú¾éXÌcçDvùðˆ`·Š g‡:8»F £ ’““II­©[¯D©T\dLßmÒ6¯û«pn½Î¸E´’-MkõÚ9'½N‹!v-ìЖ͋©¯ÇpÚDDd÷Dƈ´}Óž¬Åí¶‰DÜî™îÓ6·dJþ§5@òCõ¸ÕëZðœ6?·?íºb}Jù"é‡Ü½Z!…= в„®®®K—.•-ŸŸïïï¿#§­Ã;èZÊÉ“'ñâØcE°Çª>+šEíÀnûÙÏ~¦ŠúûûQ;p<ÿüóê¡èް-èÖ­[xV{ ¡Š¡¡ŠŠ¡ åC‘$åBËeXž¾H’çšL*ÿÍ…†‡C9µ9¤:f ’3·Z­V«µ° @(*!Z];1–Qæ÷^Ï®Q8®˜µlº]·½ ô$)772àO냑h4º°à&f_@(Rc0;ˆ(OÑzb)ÃXaÆñT<ì0ŠÛ7•Í ìÜH•FÏZ6MDí:óú¦•IÄ+sÛlc%'OúãÉâ†ZQˬöŠ˜Ô`¿†"jÓupN+Ùœ$­eÓv»]ŽL’”Ë®èumDD)߀?­ô ê)ìòmΠʘ¸DîˆÇÎXÆ1UÚÞ2šĘèê)‹R5rsÅÍ‹‹p¶[ÏXf)±.GGÊOm^{ÅXL u°·jM(>??_¶äôéÓ¤1uëýétvMn-˜)‡ã©³º%êvkH’’ñ0µë ºv¢ôJ6'4DDĹÝÙ«!2Ûy8Ž'G ÅÁÀ8óÅ-fäyÁ½ £FA¨›wÔ@D];Q&]“$J,¥Û¹´åŠªŸn§›7oª¢l¶ˆ åqQFŒû(ì0R[VO”^É&(ÝnÖ ‚ÜéŘ趉Ä¥³kDšú d‹EFss#ŒèÑÍLõj¨ŽÜ JlKš³i¹p³T»˜`oU$¢,üT\ù$Š¢(:<£‚ ˜ºõL&È8<£DDÔ¦ÓO+Íy•‡2Jg^9AÐöNy³=®°<¶ÎMîÜE%:Ž)Éê*¦ÃØ[Û$¢M×Á9çv¹ý¡1uwpÎy‡[AkêÖ3&çÖ+Ö\É®¥â"cT:ÖN’’“…àr½®m‹ÜŠK¤'"Q m¢:W€=·­P¤1u닚5òŸùÁoD¤í›öØy&à¬D·äé±¹Åâ§5…–ͨ›<==V«ÕæyÇàÌT¯«jäV\¢âp¸e1 u]]]—.]Rýßüü|?º°`÷œ9s/þ€=†PE€P€PEEp0B´‚g_x•ÓÛëï!µŠ‰'?‡J€èÊåÑA{ ¡Š¡¨’” [¬V«ÕjµX†ËæüÞm’”œ´X&“Ré’–{Ù¶\Nù-àòïÖ"Åå¯.1Ñ9‘¸s°;ìãÀž†¢¹‘Z?ŒD£Ñ…7y|·? „]¾}7ÑçvO$ vp^_ùMãËã&\ú¡¨R6M…‰AÛ7=&OZh-&Úl$'OúãÉaK¡%åBÃùùñj¯¨:½c¢kd.Wº¼¬ñ!·<г’—‡rR.4l±7é*ËP)9™o N&Ë›>UÊ©B£k'’¤wC==[­Rˆ%‰‰Î‰DbÂ`0 †‰„¼¤3ÿ»luÖÙi0:7W9÷ {åÜf4*KÏvuÖÙÙÙY´Vgò³«TQŒÎüÒ*‰U·¸™r‹dåõ°eÉ•Lœ³³À"™Ęèê)ëšKùüiý gPOa—/U6âæÅÅ?8Û­g,³”X'¢õÄu›ä ñj¯‹‹æx%""‡Çcg™À@Qb"ãX,F+[rVòòLÀÙã!÷ÌžÒ~Ϫ•¡ v‹Ìî‰D„Sà „"ãXÌcçŒeN[q;&&¢vA×ND+ÙB“¥0O«F×NDéìš$åKi¹aUÏŠ* £ÁÁ&ºÕºÈ[*íóŽäåœÛ½S½šBij–¡ÐfJ,¥•yÓ f;çé¥D]å,mɹm6y^Ú¿ûÌX,Voô""zèÉWÇMDtäèñ×ßlŸÈÿžoX¼6OÇî—{õNõ…+®èÕô]öQí,,ßÜ õ](„•Í|T'C}§Ê»ó›k ä‰ÅPß ¼Rÿ`•’¯Þ¸vüèRÒàTØÏøŠ«q,ÍÍ 2¢kD73իټڊĘ|‰×”dz‡ÃáxjÔœM;̆²ËtõU;ºz݃K~׈nƹ3r¡‘†1bŒxƒ¡¸´ Ú’®eÓ¥©ë.gI8\­;ö”Q.µ¿ËÞ¾þúë¯J*Pq4ÒëÚZhßÝ졾©`1[&(oEÍ:ÏÑ…å”I3‹'¾ÿØCM)9,õvÐMæ‡(=ôº6"AКºõŒ‰Á¹õ-.ùD¢(ÚDu®X%Gg†ôétº¤í¢ ©h(¬Ö.C!A<¥|j}þA×öõnƾ;òðék‹*ÏY®ÝX­ F;ã!¥ßlõƵÍå¡Íq›=pª‰=ªc‹[Ìtª/˜]%¢ÕÙ€JŸ_>Í¢2z!€gE"ºÉÓÓcµZåÇ3S½òEYÛ7í±óLÀYcšÆÔÝÁ9çÅmŠzV¬E´}S^Çfdò:]=Á½<¶¢Þ1ß[–AN ºm6·Èížé>mKí¼#ýÁS‹Ê¶ü 2Óø…ã_Í-PKP¦xð·iüÂñç5 †Îq:Ý:×9ñ"¢¾ ¯ ÈãÙÇ^U3*‰D¦ñWj«V°’aèòÇ0 |õø…*Í'Óø:×i0Æé4žìkBWW×¥K—Tÿ7??ßßß¿±±jÚmϾð²ò:ÔÕYç8M¨+؉‰ÎÅSË­Ý™¶:ë E‡À>uòäI¼™»…Ltv¾ÂØ_üöÔE]12?h‚?va¹5°!µñååñ–+”i|¹5[¦–¬.@(ÚÏ6660@o½½ŽPÔ¾ôÙÇ>ŒÙóàºrùE„¢j¡àºuëæ+€=¶E«hvvu»çæÍ›µBQ?ÈÀîzþùçk…"<½€Ý†gE°÷Š¡ŠŠààjøm ’”ôõ¸Âä'?-üùt´ëŠõ)‘•Ƕ÷ßÿø !ù£ŠåœÛ+W±{"cF¡l[5ÀA EÕ‚q,«ˆUÕb˜¼ä çvï¨a}ndÀvùÌÓ{+ (åëq©&ØmÕ>4EËtÐití…‡\hØR6ûª+Þ183j¨•Àáå€Q»Î k'J¯ds’ACëÙâ¼Cצ´±Ò[´«T3Q¶èÑÍLõj«žÊš€íÙâtTñºÂ«€ M„üs”íÛ²µÁ¹Ý»`Ž÷¸ÂáxrÔPH©„(Æ(]#ÒÐZ6MDí:Mã0Ÿ‰V0ŽÎ ­ ø3™€Ó¨6Joçh–-ÞAW~ö”áì^ ˆÁ¹³Æ>-Q›NO<]È£’  Ú¾éX_rÒâ™$lãõ†öìÇS­"@«öøTE(„"ØãSµ9g»$%'-‹e2)I­Ï®ÚÕB–eÞÜŠµZ­V«ÕbåÊ3oú‡Úy†¿rˆmã§žœÿ2´™LJ­v,íÞ®Ù§Ø.Ô°rÌ+ ““V«µþJØI¥mcÝgkñq{ê”ËUº$¿ÊíÞ¹M9Uúg=JYA0ŽÅb±Ø˜Qö°¨õâR.4Ò㠓ÉD£Ñ…7y|ekmûC©C’rs#.‘íèèú§[|?ufι݉D‚ƒœ‡]¾ÛpIjœÃ»0Zcwlïxãè‚÷ }o€±Œÿbªðg*nÙ€]ûl•Ûh4F½ÞX,F";ç…ÝþKSSNU¶‹WÌ䤥‡C9).º7)¤ …†‹#EV¹Ð°¥8Îדyí‹·(II_KdŒ1ÑÕã+Üß/WKS|˜&'ó·0“ɲJ(ÛÜNî­Š‹q•_­VªÊ*M]ôgsx•ëš hû¦ËÖŠëÚ6+0‡<äöÚ9ßÑñý>߯OcÛÐèÚ+ÚÂG.Û­ªVuï—/¯’a£²s#Õj¾¡ãáà5ôœÂqåøÌ…‚+úŽ¢ƒ³ìh¯¶£ËvÊŽ.Ú­…+IÏHp¥‘ ¯çlm5M9Uw«UĘ芛å»ÎLÀÙã!÷ÌžÒ~Ï\.¿'—ÈñØËîY6÷ŠoÀŸÖzõvùRõg^cÅ%rG‚ƒzJû/¦ä;Dù†B¾•Ñh´p¿œ"CYš²BæBÃn‘Ù=‘ˆÇÎD÷p(Wms;©Ï²¢ž`'TKUY¥’”Œ‡‰s»ÙÐÀæ¶]òºYçT¯¦™Ç÷'»~«ÆÏöCQ*.2F³\rù¸’o*+w«ê‡­¶÷s¡aWX?ܼK­qœÔyBÕ¨ùú‡©Ýét0&çÖ‰h=±DÝÝíÕvÕ]ít®¶[S>—ȘÝYpw7tǹ³µ¥BѶOÕÝ EœÛ½£ù®“s»wªW#ߦ³kEiœ½2˜í|óž¥l¯µë ºv"ZÉæŠZ©52¯½¢³W£Ü WlQõ~y«C'—XJ+‡ŽÁlç<½”¨¶¹êìcLtÛlV«Õfs7ÔÍU»J:¶W¹ÐpP73flÂMÜ?Ý’ ?ó‹Ug__¼Rœ²þ+»Ûf³¹EÞ183j(9®¶Ú­[î}y9Q»NS×qÒÀž­çЭïxØ«~æ½±Yç¹Äu›tõí[î‚@v…8ïеm^IšRá…+CK5g›rª¶ú:ÆD·M$Æä0£Ùý¥\hdÀŸaŒ£­o²×²éÒ n®j _5 ‚ÜWÞ'5/IÉ‹þt†9­% F¢«‡j?ó¨q«Uüç¥èkg¬—¥¹}­á–Pi çK¾½ÝZ-YÅòÝ9N Xä Q \ôeÃíÎ ùšs¹¨}lÞ‹lûa‡¯Ç&‡wA¹]ªÖ7³ç­¢Ÿª-3lA¯k+_Ô¦ÓÓ¶žÅm{E’¤ÜœÇŸ&ý`ÐSߣŽ6~˲—U*F³ƒã tÏl³ Ý›ÅR·}æTv.Ïͯ8ÁÜü÷vú¬h§»µZ²Šå­pœ´Î‘¹'±èìPç¢(:Ê;¿¶¹húnÝÖÙÚZtÛ>U÷6­d×óýõí:mé ZS·¾ÐÃÛÈîlhEù`Zɮ߿”ÝΔ¥QÙV<¥|}·I[åPÞñƒâ²b¨–J¥Jå“0ì)í.ÕUEQÕKUY¥‚¶ojÁë tÀi“‡úÄÍ[´T¶]M<n½ÏU^|uñÅW«ý·Y[WÝ­•¶ÚÞ×öM{J…×Nyû‡ƒI´}Óêj*öúêj»Ui„¹mqscCIógkØm³U>*.<+j©ÇEM9U…®®®K—.©n`~~¾¿¿¿ð.Âõgžyç™gˆè¾óç5çÏ7«ô@<5Ýʳ/¼üI«c'¯æ½“ªôê_ÿÃ÷£áÏôŸÝƺߜ½Xí]ÎM<€w›$%}=qóveãaËÌŸ}áåyêøWÿlâÉÏÝñ¯CÝùé¿ßOÕ3gÎàÝ*ТÞŸoã窀pÙ—Zšäöf àT­qªîÍ:ùùöö!ª´F«ŸKØ›Mϧ´æ©Š×¡B«ßïK¨„½²±± àvžªEв·Z•°'¾ôÙÇ>Ü"‹à€•0‚ǃIDATœªEТÞG«hO[E¨¸§*BQ ‘'дЧ?ZE°7¾ۦQñUTàô? §*BQKð|ùó¨„f©ö½"±- ¡¨UÌ̧P ;7pÚ€JØwðW@(„"€=„gE-D’~qí zø1ÏÀG¡ìÏf›fŒˆ8?ú¯¿èúø‡J2?Jo4eCÕ>ö, è(%ýÍ‹Ï]|—~ì+òŠï.}æ­ÿsàhQAxðß<ýŸÿM“BŽ$½»üõ¯¥ëš¡hÅ¡ñ?M3ÆèÊ+nztâ7ß,ú³¸Yó¯?µöÚwnš>Dtãûßcì'”P!÷~|è *B»"ν»üõßmqÞUùŠóïüõ7äÆV¡ùuÿ_úôôÏ}í ì9¨ží‚ð Íó=çrl8Æ*þ³Ðaìʧÿã Ot1vã{ßCŽ1×’Äy×ñã lîÆ+¿ÿ½·=üÄã÷Òk¯¼²P”üÇ¿—®ïûo”•J.ÆW~ÿo,®Î_ÇN´ŠöõÝ»ò_ÿJáú»¹8ïúí®uêùko$—ßzì£Ûj]KQÛÝÇïûÑ»ï¼ó?¤î*Éÿ¾½«–ÿÿˆ?ýƒå3‚„·ÇÀ¾Ex5}E·ØÞ…CÆèíÜÑ]õŰ^¾þû¾ï(YwܵÂ!tlùQbù똠e¼½þ^+¶ŠàÛé›ÿâŸûµ‡‰áÁãFJÿèʵké¨sÍ{>t?ñ·»JG"l½Zñ؇½AWíøyëïsoEÃDtê·?þ0@˸rùE<+Ú/îùÐýD´vóoUÿ”­Ýü[¢kËiÆè¾û~Mˆèè'ÏÞÃùÿÅû£¿QâÉ[sßx«zl„{Ûÿ·cŒ]ùÁ•Ÿ5^*€í@(ÚáÞÎOŸ½—®¿69øÿ<õôáâ? ¡å¿¿ô¹¯}ã ç]=ö€²â‡z~Çó…èúk“ƒ¾ñÏûÆ?í-Z*¿f~êß~œ¿÷ÿèÿ|qæ[–ê-<#€í]⺺º.]º¤ú¿ùùùþþþÂ$ZëÏ<óÎ3ÏÑ}çÏkΟߥ=ûÂ˰ƒN„¼_)-8mªDÄ·þðßú£?"¢ü§ÿô‘?üCœü-âäÉ“õ¶Š$)ù—Á üûÌ7¾aµZ'“R+NZ,Ëdr›·Ì‰‰NçìjµM$ö¾w^ŒŽE8ȶÓA7𘡃ó°Ë§]v{J­Þ¸öÐé‡ì»Š½­aR2ð?ýÞ²%Ñîj/Š:ּɤ$II_KdŒ1ÑÕS«²s#V«Õbå¤úÃÕêkó´‰Vgƒ¡³ø*¿:ëìì4 ›M§ü’¢…‰‰Î‰DeÊ|†ÎÙ٢ȡ¶•Ä„œagµS’yb¢óÜ+ì•sJâÄDçD"ŸÃDB^Ò™ÿà ÛÖ`î\VdŒìæÌx"#’r¡‘Øå3/ŒŽ.x©Ç&‡waÔ((ßvdL\¢`$˜ðû/¦zGëm½6O§'ŽäÃÁ#×—S¦â¡sãO¾º¼|duÖùH0Ñ?n¢ÄÄ8M,/‘òP5¥’4u„VgÐñSJLW¶’˜èœH,Ë ÏÑTÙ–©V1Æ—/Pçâ©åqS!Á¹¾ Ë)Óê¬sü+_ –ååñÕYç#ʈèS'Žáp´Šê5{“w ÎŒM—©Ñµ×\…s»³W£$ ÇSd‹Åb±1cí¥’6Qb1Ôwª<ô]ö!¢#Gó¯¶1ËKJª¦\½qíøÑ#DDGúûŠ6yì~9§S}¡ÅÑýÇR~«¢2ó2=ùê¸INðú›íùßql¯U4ðÄ_>¯\ºåöP†1Ú…71—´‰ ÷1"âôØ©ªÉÞ¾þ:UYøú+ž“#¨²ú‘þà…‰ÎNcM¥ÆMÛø(JÌ«øvö½"IÊÍyüiÒ=vÞô)JŸÑýǪk­Yç9º°œJ¥R©©¾†7zÿ±‡ú¦RŠåÍ6ÓøòrêÛ_¼vÏwZ)­eÓDÔ®Ó/lÓé‰h%»^#†Õ3láíëÅ‘ˆŽ=^»—¬Ð¬yHéa[½q­VÊ͸ÕÙ@(¿•‡O_[lN´¹vcµÑÐ^R-Í‹X<ºD6R–y=J¹Ðpa[“Éì}@(ª G½ÆDWOpEOò¨¹izÝCzJœ¶]n‹×JGq›Æ_=è¬5ŒMNuáøs Cç8î ëœøAõ¤t®Ó`0ŒÓéBûéHðÔbgéx9eÀ›áÑçŽ_ÛI[ŽÕ6_8þÕGšÖ„Úv”’r¡‘W˜žH$.,¸ÉS> _Œu=º«£T>¹¢Ñh$8¨»äñ’eém6·Èðš(º µìÛÎ΄]¶:ë  në)Psvƒ ܼyS _4øPùóéh×ëS¢2#¸½ìOï¨RrÊ¡¡•@ ÃyÇÐÌTŸV ¢ä¤Å-2»'2fÊ¢Ha[…ÕóÛÍÍ 2Lμ¸$Åù÷jRòÀýB1Š#™œ‰?í([^¶ic³¿u÷Ýwãm ûKo[¸í*ÚD»°‰‰ü×:¹>¸wq¨®Öç‚×ι|Å?ÁNÿiÜœ:O\"wÄcg,㿘’/úñ0qn7Ø\Ê7àOë=ƒz »|›¯#Ròê)í¿˜*+UEPY˦õC3Í6pçiÙ©óLãAÓ®obyy¼õ>9c¢Û&þhdê<»³WCd¶óp8OŽ o]Ž^Dí:ƒ®(½’ÍIMIþºv¢t•ü ßq&"îðÄ´ˆC°?CÑÆÆÆAž@¯¢[lïÂ!c”ήiiÀÉßzNNÚÜnËÊàÌT¯öö6ŒÆ¿úgªËýàGòÔy‹?øÑõ*iàö{ëíõ– E_úìã‡>h/çnþÔyz]‘ ÍE1ž5ë\³M§'ž.ésÛÎЃÙÎÃátvH{{+Sçì/W.¿Ø¢­"ìÕAé•ì:µ•ÊV²ëdX‹‹ŒQ»Nn‹Îu„ýa׈ns Ã$Žª6k´¦n} #çÎû´ •J’’>‰ˆRq‘1êÐi¥ädÏS»4H¡¡ãç~ùËÂ/8ÆZÇ­[·0¦vmñùj#æ—<=6·È¹Ý›5‚¶ojÁë tÀi“¿î7o´}Ó;ÏœV«µöxñŠRFÍqy+6·È;Ê{çŠs3&ºm6|»¨sLwß}÷Í›7·½ú®¾cj0@k:sæ ZE°Ç¡ î„¶m~ÜÀ~„V BB ì‘&Œ «ó}q_úìã¨î-áB€“•ŒP´Mÿ×ï ÔNð§ÿyu pàdD%ïGÍé û_þù¡Ú?•÷þ…)®e“ɺÞþ²KÓ`×Üb.4¼7³_—ÕÒdRÊ&?)x.4<Êå«¢ÑÊ„}tîöÉØÄiì+sr¡áüA»{'æíÜ){^É;?ìU·¾Û+\²”?““òy÷ã¯6'}àŸÿJíÕµ8·{"‘HÄcç<ìò5úá·= vcõžºÈ0ÆÄxª¹5þåɹ;8»|)Ò˜ºõŒe–ëD´žX¢n“V*SâÅnõÛÇáŽOÆ“fS“q/|Éɹ”·ñ6MÍsç;e7®x-{7V8öšUoUéµl:ÿ¦fIJú\aùìûß8ÒœPô‹_ÞªýÓèÍNÙ‹8 w¯=#Á•Úw¦ÉÉü•|ˆ(9©ÜŸ:åzªÇ%¿—ÓÕ£~’¤Ü\peÐ3ØÁy88—«¸£)ü~•_õ©åVØœe2Y^ìüÁp(·E¥htí¥¿¦³k’”K,¥Ûušj)¬ÍVcþn\ùÇϺ_ŽCùŽ_9r Qª' Á`(ü«áÛØŠ’TûPêq(nŽM÷i7'Q­Øò……š …†­V«¥´Q¥zbª^ ¯ò5ÕŽ„†>Å®^ñ¶Wɪ—¥¡¸yüoÑL,LtY8öTW)Ûª}0Åå©qiMÅó¡lÓn›­i­¢¿ÿå­Ú?µV^Ï®‘Ã,ÇaÕÙ¬S>—ȘÝYpw×êmd¢+n–Cºj>¹Ð°+¬ F¢Ñèâ¢÷éZóa+w^þvg¯ÁÔ­'JËM‘ª·Æ•³kçBÃn‘Ù=‘ˆÇÎDwqÈ‘‹*7b2gícT~•µ²È`¶sNáxŠÖ²iGa¦p•”¶Ó9ßj¤õÄRšÒþ‹òÉðó·oì‹ãP’’¾šžH$6z‹*Ÿq'Í¿uÒü[…߉èòB|등âz§Z’jSΗÉÎôÄͱ±’™²ªTlÍ9ì=vÆ2þ‹©m˜ZÕŽ„ú?Eó¯xÍ«ä²ËH‡Ü3CzJû=*á¹Î«Vå&ÊvA>¹<Õ.­’”ÌG¢’M7³Uô÷ÿß­Ú?ÕêÑm³Ùœ´Ã+¯e³YÓJ6'I’”ˮ纶-îú “#TË'±”&*oHÔ¸/ž ® 5”ÍõßV'–ÒœÛÍ%~¤—…ãC)ªF×NĹ½j<þ4éƒ;ç…£Çì ÆÄ¸/Î_7USdrU§.ú3LéѤÜê÷öÑqȘè©ë‚¢z2~ÿT™ˆ^ºüÝÚ'cý%QýPªk&º‹¿U©ª*sØço¿ Í…†NLÕŽ„:?Es¯xM¯ä²ËˆwªWSø´Íë¾®ÜÕú`Ч§Q¿ÛÓëÚªÕ@SŠû·xíŸê}ôžÊOȘè–ïî• ]˦©þ²U> uFgäi~œLáW÷ú›køøPÿàm:=‰¢¸Ù&ÚnÝ‘ìœS:»F©xX_èÃY§µ¿{ïø¾8Á8:3ÔÁ9Ëœ6[£ƒPŠÏ¸Oê$ýÅ]Üòdl´$JµVƒƒ<ì)° ºî–nÿÄ¬Ò‘ÐØF›qÅkz%ïÙ¦mõÁ7Iw+ýÓ-^û§úª†³CzÆÄàÜzá2+7Ù¶Ñ5Qv¹®ÈG¾†7Ð$’»P¢Ñh$ìൻTËP¢úAÕcÔë`LtõWôTèxÕ˜º;8WnÏk¦<˜¡h³Õ¨ï6z¢ôRb.~í¸n¿‡‚¶o:óØ95:’¢ìŒûóÐBÝ'c%©¿r4½S^¥ý…PµB¶ÎP¯kÛÖ‰©Ú‘°Ã]¼ƒ+^Ó+ù6*ì‚Æû`$)—X¢nSÕû¸&…¢÷yíŸZÍç^÷`Oû=¡œ”oq®¥GRJ鬯ã"®šÖÔ­—gÝ.ÅKJ:£ c~Š»äòÈk•–§$·Bâ)evm}õ;‚ò'ù %Ç¢Ñh,6==+‘ò‹MIRMy0C‘Áì[r…ÌÆ2€xÏ]ÿëþ: £^;çÞÁŸqöRdË“±ð¹”BÊ3Áo^²ËK¢ú¡jßòë),ßÕ¨*®d×óE’G^U?1·¼+,îHhèSìüŠ·«•\;«]©*ëFíXmÔÕ=P™íZ6]k•½ì +½NcùQ›êlÖ†³Cœ‹n[Üì­3«æ£í›ö:”©µkLË]èŒ.¹T™º;òÏ{ g•µ‚º¡¢§8Ú²Üä2ˆn›Í-r»gºO[ó®!9i±Øœ4é‡Ü½Z¼jaÛÚtr«Q¹3œìàœw½ÿûâ8¼Ê¯Ê#”l6w¸ñƒA>ã¦_œŸ~q¾Î“Ñ8 vÈ…”ÕÂ33Õ’Ô?å¼|Ë?¥D£‘PNªV!Õ2\òôØÜ¢üb˳ê}FEGB£ŸbçW¼]­äZýŠ+Uùa¯v ,V¼ êìƒQÉ6UÜ$U;Nv>¡ø³/¼|Úñh홯Á¨a‡ŠC=5y&¿cNÆV~Ö¹â5w$'-qó˜Q=Ÿ3gÎ4çÅ?óáoã"Ð p2¢’[/ªå²+zÝÙZišŠÐÜhwÌÉ(ye •|GìAÐöMO×NƒI"`!B  BB  BB,;}Ý“Ó?>ÈÕ÷Õáß(þóÙ^Æ!p[CÑ“Ó?~áNغûì·,mû=‰ž/Ç" m3ýðúÏQ‰;ŒCÜ6Ÿ!!ìe«(zõ‡‡ö.=òÉ£Õâ$ýð›9Á6[¦§÷7…;µújÄ!y:^±¨*ìžHµùt‰èî»ïÆáEõZÝøÇÿ©fÎ?5üò?önèO†§®L<÷›/ñÛ;;½¯Ð™á]Þô–í!ÎíÞ…QÃúÜÈ€?ìò™«ÌóæÍjÁLunùâÉ™§ëž‚~‡SÖ£-ŠêuïýmD7ˆ$éê_5•ävÒf´§é :÷ÒÃõéZiüO_&"ó/¾üñÄŸ OÝ ý»i¿å>ˆ$imÑý;s+L tUn™1º<ý8ÉѨ,ÍBy ±3ËX!š6-ŒitíDéü_ÉI‹[dDÄížØ˜Q‰¹ÐÈ€?£lÝþt´ëŠõ)‘1F¢«‡j…ÒÌ«æŸo¥ñ޽²$yŸÖÍLõi)9ÙÔÍLõj'ÜN»ù׿z-Áõ<ü ûÄï~ë{^ZšþÓs:ίL<÷†$)›g—§øð׿õ¥-ÓÈ˳Áßúýûé‘£ôÓo}-ô3I"¢Ÿ>ÿ;ßzóc½O;J—¦Ÿ¿*ŸøÌËbâ¼8œ”¥Ùüüù|Œ®~sx꺸xᥥ¯ëKÍlN¥â"cä0!v‹Ìî‰DÝÓxAøÄg¦GÖ†§²+þèì…f¶(kÓHÒZ6]š"]#Ò ÆÑ™¡•&pÚµ8”eÞ67â´Ùò«¨ç¯Q–·ëÊbÆÔ­÷§W²9©-»Rñ_€ýÛ*ªh”¬-~mê}¬÷O½&η¦Š#š矪ٱVOîûwç¿õ½¡SœˆŠ{›ªM§/] ×É­@AÛ7‹y윈Â._²î­kzvÎó«TÍ_•ÜGGéìÚzb©ÝlDïÜ©¡ˆhuýM"j¿ïÞ¦Q½˜¶=dþc—Ãb®,ö­¼ón4ê>öù?1qN=zÏ.TDþñŒOåŸñ”>ž1Œzíœçã‡WV²ë53]Ï®äCNµüÁhv¼\~hTÒ.¢püb¶ÝlÀù{Bèêêºté’êÿæççûûû766”+Þ3ϼóÌ3DôÏ>afŸx¸ZDyý¥h–:N|ÚtÝb¿óñµk’ô¡_ûõ÷þî¦ IÇO<®{çåÒ”[¤Y+Êy­l+ï¥þ<ù–<šî¸²ð?½"þðï¡°¤"MY&«¯¿}[|ècöO}ä[4–_ÏYOÜW½1¸ö—ßX¸FÇ{žø­²±¹D0ö¦@DÒG-O˜Ú ‰ßÌoÝØû¿ë?(ýü§ß™Kþ HÒGKò)J_¾ŠjþEY}Ôb¡…¢‚I?Og.ùžJ9U%–ß0u>°õ_Ä㿸r…ˆî;^sþ’qôì×Pô³ùõ¿úàþàäÏð"T""zý›?z¢t꼃àú /÷âÅ?°'¡¨0[ëgÿø»¿÷™£âʪå 9~À§î€æZYûE­¢Â„­˜¢¬B`ÛNÆ~­P„„ hºŸÿò}Œ €=ÖØ;莾…*€&úÕCZE°ÇŠ¡ŠŠ¡¡¦C¨€–"I¹¹‘@†çC3S}Za¹%}=®09¼ £Æ¢é1ååÅs:Û=‘1£°'­"€Ö272àO냑h4º°à&/)I»´-ÎížH$ìà<ìÚÅ Õˆ”«?þ1ZE­%›&¢v†ˆH´}Óce­%Îír§ÐâZ 2ÅM¨B£‡wtè·Ü¤F×N”&’¤ädÏS…¦’ÜNÚlWyÉ墧£]W¬µÒ¸Ý"u §L‰‘šôE¥*ùJùz\‹V@«1;ˆ1ÑÕ3Ê•´QR¾Z?èÔSØåK–3&.‘;ÔSÚ1•Oì³{" îî­7™Š‹Œ‘Ã|‚‹Å¢Ñhe;‰1Ñ7Çbc[¦‘—gιg†ô”ö{ær’TùÁ8ºàýu„"€Vc‹y윱LÀi³X&å ½$%ãa"j×tíD´’Íåçvg¯FnÙP8ž”$IÊeWˆó]›Ò⩆1Ñm³ÙÜ"ïœ5”µ“Šqn÷'¨‘F£k—ŸêÕÈiÒÙµšt­"£r_–èÑÍLõj6#‡HŒÉwMÕ ÖŠ{ùj(ôõ–H¹ÐÈ€?Ã1F\}­zÒÔ ~å¡  ‚¶wÊ›íq…•Kv›NO<]9š>È@’rsšôCAgvÀÞnš*ª~tд–ÉáÒs%?ÂÑëÚˆAkêÖ3&çÖëcFùS<¥<4ª{ãõ4§êmrUWµÐö?ÿ „"€3ê&OOÕjUáLõjˆ´}Ó;ÏœV«µð ©ÃÙ¡ÎE·-nöÚy½h‚`õ:]=Á½óqLÍuæÌ´Š`!B  BÀîºë®|Põ7oÞüð‡?|ëÖ-"ZYû…öÞþê! UMô“Ÿüäÿ׃¯ä6™ŽIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/09_resp_time_graph.png0000644000175000017500000035126512032647172026472 0ustar ebourgebourg‰PNG  IHDRá%5Õn§bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ  m(T· IDATxÚìÝ{\Teþð眹à 0ÀŒŠŠ¡e©E+ä%MM-Ú´´rË]-Ý`ËÒÌŸZ™™µ^Ë6ÛÔÍVK+w½Ä†T,- 5 å¢Ã}f˜æ~~™ÆAP.|Þ/_¾fžs˜9sΙ™ïyæû|ê¾ûîKHH à233¹ ¯¾ú*ö€‡ ± < ×ùÎ{Ÿìí¯êåçs¾»xËyÝÔu ãq@Ë1ú{Ÿìu m{(—+Å[β<Ñ37õ¹73p @Ë1z¯ Ð]°úÙ+ziè)hè…ûý/ÿóE/¬ë‚zjŒ~ïCÜ-c˜ò¯Íùè2M±Û>ÿÙæGC©[x†ùiø%É”wޤÜMQ]ðªÚ 3ÌÙÏ{åš}u±É[>+¿­mcð4™ºpïKCºäe@¯D· ˜;hþÎïÒÓÓy¼½á'†q…¯;vìØõì .w)êîÔ£GMíš½Ò8àæºzß»½ršL}þ‹c|yüý¯“ï_tóêº×ý¢²â\BHTD!„PTè£[RÃ÷.ÓvûCïIA²6Œ[r˜¦irxÉ8²&ý¾Óã—:î:V`ûÑ·Ÿ¾ð£.;wϳÝí‡iÚ>pà ÜÜܦ~w¦ü«Es>¼|½Ãû¡éŒÿmÿæbš¾oéõoŠ »æeâܾŒlYM^øòþs¼Þ×N½ôØìá”cä¹…_ï¼Ô¼^}øù[jh ·ýèuwÂBÓ‡—Œ[ôUù ÌYæ|˜;hþÛó‘ƒK6dQÔÝ)GÞyÈngè{è{œï¶OÓôáãäµïvÎDr?ü"«éa—¦é‡ÞþîÈkIŽ5æ§ s>Ì%SÞþî»ôôôéŒg˜³ÙGˆÝ>yø07;…>´åìý[÷½Gœ½ïÄ_߲酻ýôêßûÚiúPy}ËÒÉ4}ißþÿ6‹¼¾eÓ Jò›s;ÀíÆè„»S¾ý¦/ôôç<–̃„¨ˆQ„Ââòö§ˆØí=ýH ‰ˆ"„Ìü‰a¦¼¸Øí#ÂÈõöcú%‹¾.ïª\»}ò¿ÜsCSpxX³u¦<J†Ý?Ún'GN9b÷ëíìúNí£³aúwßíœ?Ðî%Óôá×&¼v˜¦InqYÇlÉ ©5uwÊgÏ´ÛéË==aÂúŸ:>äe˜³»’Ç,H~¯ÅxšQï[›|üVòX(jä“˦Òô¡-í(‹!4}hËcï_lz5Y®9ÔBò:Àí«¯¾úꫯzÖ<£l±ÅÜ)ïM½ûþ¼³gíÀ¹Š¶}þóº…ñ8 ÀaíÚµ\ Í›ê£B샞ÿ,eŽôA£³Ó‘¦zü.£¨‘³÷˜s:ê xjxÒÓw&=Óû^ؼ'ïòüÜöùÏ8ÀÙ/ÇwpþƒråòÄÞ÷Ú:oÌhú¤7îy¸+mܲZsg{%ìypQVkF>:€gá†ùñGö—`Gx‚OP×ÀÓ F@ŒˆÑ£btÄè€à:Ê —Ë•J¥óæÍ«ªªêS/¼9çuºl“***–,Y2lØ0///>Ÿùì³Ïž={¶S÷ÞÐ[q±  w°Ùl:î“O>©¨¨8xð vHW:räHrr²N§s´úé§Ÿ~ú)Ã0Ø?í…~tèñ†aÆd2íØ±ƒÃá9r¤¼dVë-]°1EEE<òˆN§›?00pÉ’%v»mohhX¾|yll¬P(l1KÄh4þío“J¥|>ôèÑ.¡ÿ… ÆŽëååååå5vìØ .89êĉ÷ß¿P(ôññyöÙgkkkoúÔ­lp{¹<,{·¡¡á•W^  …#GŽ<{ö¬Ýn_µjUXX˜P(¼óÎ;_H·äý÷ß×ëõS§N=xðàèÑ£iš&„ÄÆÆÎŸ?ÿ‡~pÙ˜S§N;–Ïç³íß}÷ÝØ±c…B!» Ú~Xîv2@϶bÅ  grtÛl¶_ýõ±Ç#„ìØ±Ã±ÂùóçE"‘ó‡^jj*»hÆŒîú§ÙÛ>ú¨ËÒÌÌLv…ÜÜ\‰Dâ¼H"‘\¼xÑùÏ÷ìÙãòçÓ¦M»éS·²Á7Ý ­·³wxàçW(“'Ovn>|x{·dàÀ„üñ¦ùü£Å]ÝüÙoznº“z®çþº1:ôøÝaêÔ©Î+Ìœ9“òâ‹/Úl66@ì"Gùõ×_Ý=ìСCOž>Þ±KÛrnº“ëà)’’’þùÏ~ûí·)))„þýûŸ9sæÑGuIz&„<öØcJ¥R p8œ˜˜˜7ÞxcÛ¶mÎ+œ:ujæÌ™ÀÛÛ{öìÙgΜ fÅÆÆ~ÿý÷<ð€@ ãÆËÌÌ9ÕªW££û97FF¿|ù MS11#‹Š²ÛØÐsÍ{ñ5˜ÃèÂ…ßÄbo—RQQ) ØmoèÑ<"Fé¥ÿûÇ?Þïð‡-**úæ›obbb¼½½q¤À3 Š¢|}}=%Fÿé§l€ß¿dóE!!ÁF£Éjµ†„·½…BQ6ô cÆŒñ”ýÃ?3ç-.š:õÁÝ»¿¶X,“'o{ !„aBÈ¡C‡¦L™²qãÆøøxuðLçÎKIIqnéþ=-íØÆo;·PT ÃTB–-KMH˜L9yò»¨--lŠK||¼ãŠÀÓ°ýËž£WT\t¾›—W¨P„²·CB‚ ³œ—¶¥ Gó¸yFçÎ]”ž¾ú,®§mÐéÓ‡qT /£± £btÄè€1: F@ŒˆÑ£bt@Œ€£ FÄèˆÑ;˜ÑhJNž+†QT Ë"Š tüc[JJÊ ;º¤¤Ì] bôÛ²ví¦{ï½Çh,c˜ªæK¦ŠýÇÞ}ë­¿/]š²xñÂ5k6ºkèѸݾ{÷þ÷Ô©m\9-íØÆoÓ4õÆï¹kèѺ¿=/¯ðå—Wxy…ñÅþæK…°‡ž]VVÁÞ­¨¨ |>¿¢¢Ò] bôÛb·Ûÿô§'ÓÓ¿zùå.‹¦J£É‹òÇ?>‹C}D÷çºøùùÞwß=„ª*Mó¥b±÷›o.]»v3{7$$Øh4Y­Ö`w-„Š¢·ÏŸ?à «y¼Úý1ú”)þûß´ààÀ¸¸A-®°sçžØØhööÔ©îÞýµÅb™}Gú2»1: F@ŒˆÑ£btÄè€1: FÄ茋]Ш-–3õõ»}˜H+r) û1:t£Ý¾¸¬ì#ÆÊ0lK‚X¼5<Ÿ_QQÙöpx988¤¥®tŠNS‰ô3õõS ïÏË;¨Óax‚îïG·ÛíúÓ“úÓ“3gÎ{üñéò˜”ÓÜçÏŸÇa€>KGQ±Ø¥QÌ0 M¦a6Û>?dzBÉ42 †Á6ÛãË”eèBÍãÕîÑýü|ï»ïBHU•ÆeQHH°Ñh²Z­!!Ámo!„0 CÉÈÈHJJŠ3f Ž=ôMóŠ‹õ !DÂáÌôóc‰‰’¥R6OýqB.k++÷ÕÖìvBÈoÎ 'ÎÏo™\ž,•b:R€.À8Maá)1ú”)þûß´ààÀ¸¸A.‹¦N}p÷î¯-ËäÉãÛÞ¬}Zí'šëÝŸFF&K¥Í׉ ·GF® ]Z^¾«¦†ê(§±qÖÕ««E¢Wƒƒgúù!RèbÝ£¯\ùÊøñÉ:]Ýþýÿb[(*­ñ²lYjBÂdBÈɓו¶¥!«uQI {{¢ÏôV‡„Êy¼í‘‘ëÂÂÖVV~TUÅö©ç46ÎQ©VUT,“ËŸ À.èC1zddx^ÞYÇݼ¼B…"”½\X˜å¼r[Z€2¯¸Xm±B¤ζÈȶô…˸Üuaa/}PUõQU•Öf#„˜Ls‹Š–——/ yÆß_Hcò;€Nçqµsç.JO߇p;ökµû›f]¦hµJº ·&4ôj\ÜËÁÁ⦈¼ÔbYP\ÜïâÅ-UUÖfy“ÐËcôÓ§ÇÆÆàÀÜ2­ÍæÈrI–JŸ»¥4)‡³.,¬âŽ;V„„H9¶Qm±,*) ÏÉÙpíšÑnÇ®è+1:ܦÅÅ¥MY.ëŠÛñ)¦é•!!WãâÖ„†::ãÕKjiiȯ¿¾WYÉæÃbtpkOmížÚZööÖˆ%Ÿû)åp–Èå¹C†8÷©km¶ÅeeýrrÞR«Õ¨§€Z¤µÙ––•±·gúùÍôóëÀgûÔ+†ÝîèS×ÚlËËËýöÛÊŠ ô© FW Š‹Uf3O¯W(:ã)„4½000Èõ E´@àˆÔWUTôËÉA¤€~·O«ud¹¬W(äí©år ‘zJPPîàÁëŠX¡‘:btpe°ÛS›j¹L—J»fÊ!.E±‘úöÈHô© F€¤––²µ\ä<ÞæððÛ©år ž È<ø›þý‡‰DΑzø¯¿Îºz5«¡ÁyåœÆÆ]55ûµZÕŠÐ".v@O·_«ÝQ]ÍÞ^¯P(:3ËÅí× EM—J§øúî©­}¿²ò\c#!Ä`·³uf¦øú® RÔ•Š]ÄþÉ2¹üu¹¼‹¯(£@çR[,óŠ‹Ù¹?gûû'K¥Ýù¥BQ³ýýgûûï×j×VVž©¯gÛêtu:>E™æ(µ2ÌªŠŠ2‹e[DŽ#€3äºôl‹JJؤ)‡³þöf,ê@Ó¥ÒL‰I”HκÃ'MZ]Ž#bt€^â N·_§co¯ “q=ë×ÑqÉñ˜˜SÜëíÝÊj_iµ8”ˆÑ¡g³2ÌÊŠŠ¡¹¹¼ìì_£R•bŽCè“´6›#Ë%Y*/“yæv&ˆÅkÃÂZY¡ÀdÂÑp†|tèyAɤ‚G’«ÚbÙUSsP§û6:zT«u½Ïâ²2µÅBØ,—ðpOÞÔÖ‹µË¹ø2¸úÑ¡‡YP\ìÐ÷YW¯ìvìè;Òêêµ\6‡‡wK-—¶‹”|¾»¥#q €z.•Ùì˜F±ù¢}nô>»}AS–ËL?¿Ùþþž¿Í[#"Üg݇ZéˆÑ¡çjÞƒîìl«Kz“ÔÒR•ÙL‘óx늱Í}|>S*Åô ß;EBN ãóó¦xPŒNQŽ7]TRR6`ÀÈØØÑ%%eîZz7ç,—mžåâl¦Ÿ_î!›Ãß“ÉR‚‚¾éßCXÛ¹~®±a:€ƒG Óa˜ª6.zë­¿/]šb·Û×¬Ùøá‡ï¶Ø½Xë£B{P¤pË vû¼¢"G–Ë_ßžµý oaà =2|š^P\̆éIùùßôï-à@@×Ãr]ÒÒŽÍšõÈœ9:”î®z1%Ÿÿ¸ŸŸ»¥›5š3HwÞnQI [lTÎã­ï!Y.­›/“9RÕsÇçç£#€GÄèBaØÃÏ.+«¸é¢ŠŠJ¡PÀçó+**ݵ@ï/5od‡¡UZ,÷çåíÃd(Ð{í©­ud¹lŒ”÷–ߎæËd{ûõÒ4!De6'åå!L€>®ûs]¦Ê`¨_»vÓÿøìéÓ‡Û¸¨u”Sé€óçÏã0÷fBÞ‹ EB¤ £§(_†¹ËjýƒÍöž@ £(+Ã̼re™Ñøf5‚^§†¢^ðöfÏÿ‰‹(;ûD/zu~„¬ær—ŠDfBJ-–á99ï76´ÙpÜ /h¯zD>ºXìýæ›K×®Ý|ÓE!!ÁF£Éjµ†„»k!„0 CÉÈÈHJJŠ3f Ž}ïð^e¥¡¬Œ"¤éìÁƒË-Ï6›ÙŸÈm„¼!6DF® uWè  'šuõjMm-!DÎã펗r8½ìŽ!ä½~ÖÕ««Õ@Q¯J$˜› ú6võ¸²sçžØØè›.š:õÁÝ»¿¶X,“'w×½•Æj]­V³·S‚‚\æCQòù?ÅÆŽÏÏÏjh`£yÕºÍ}=f€žeOm­cr€í‘‘½/@g“Hööë7µ°Ð`·km¶¤üüôèè±'ô5Ý£ST Ç>|èž=Û-l9—æ‹–-KMH˜L9yò€»è­–——km6BˆŒË}58¸ù Rçø€³®^=¨ÓBvTWk¬Öí‘‘2L3=œÚbI--eo?0Ñǧ¿ØD‰äÔÀlF£Ýž”Ÿ<&a: Fïj.Õóò ŠÐBBB‚ ³Zo^Ie6Ò4TnEHˆ»ND1MÓ¿ÿ¢’’4BÈA.)?ÿ@TT+“x¾ÔÒRuïªåÒºa"QzL̤‚µÅbe˜¤üüϔʙîk:ô>W{qîÜEééûp`ÀÅjµš-'Í—ÉZ»î¤¨­KärönNc㤂Ôˆ€ž«d¹4ÓÇİW×V†™£R9vbônpúôáØØp–ÕÐà¨7÷fHH[RÌׄ†nŒdK¹]2ï¾t‰ÍSèY´6[ßÉrq+ž8ÏÈÊ0³®^ýD£Á)ˆÑN"™.•¶ñ¯ž Ø­T²aºÖfKÊËcóÔzÖÉß§²\\(x¼ô˜Ç´£óЋ߫ÄT€Àdèõ™{{MXX»þvºTêø¹Ü`·Ï¸reKUv)ôiuuÎ3õ‘,lÉ&G˜¾¸¬lyy9Î @ŒÐÍõgûûðòjïŸòöþ6:Ú‘Õº¨¤ä½ÊJk³*¤žFk³Í-*bo÷µ,Rç§ØXG¡ô·Ôj„造;í×jèõìíeMÃ@Û‹Íju|Á/.+›[Td´Û±{Á“õñ,—æaú·Ñщ‰s˜Ž‹m@ŒÐ ¬ ³¸¬Œ½=ÓÏ/V(¼å‡RðxÎ%–wÕÔ°“¤`'ƒgB–KËazT”ã]ü–Z=¯¸a: Fèj[ªªØš‰Bš^wÛýˆBš>ã¨ÛxD¯ŸZX¨±Z±ŸÁÓ Ë¥õwñ__öîŽêê¹EEÓ;ÊŽêê©……1/޾|yyy9z1£´Àh·o¼v½½00PÁãÝþc²¥Óß ½>IV†^?úòåsØÛàQåÒú»xo¿~ÉMõvÕÔÌQ©ºvûŸ·3®\™[TtP§+0™ÎÔ׿¥VÏÍÅ̈Ñ\m¸vMe6Bd\î-g¢·èu¹|kD[d½ÀdšTP€Òéà9årSBšÞí¦ï©­ZXˆ0ýv,.+Û¯Õº4˜L]¹‚ €àwj‹ÅQÎe™\ÞáaÊ|™ì@T[:]m±$åå5ÿ~èzÈri#.Eííßÿåà`öî½~R×nãóö#7“Ckl܇ÏF÷.[ªªVVTìÓjµ6[Ðaÿ‚ZUQÁ¦BÆ … ;ã)&úø‰aSÒÙÒéÛ""žkÊVèŽ,%Ÿ,—›Zf°ÙØø2C¯ŸqåÊ7ýû˸ø^kŸ3õõ­äôo©ª²2L¬P(çñä\.ÛµÐí¬ £¶Z¥ޏ›ÎI£Ý¾¨´tGuµãí#çñ>S*Ç5•ŸBŒ½P©Å²«¦†½ýfh(›”ÒFy{ÿ0pं6çr^qq‘Ù¼"$¤óž ÎY.[#"åÒ[#"Ä;ùh¦Á€0½]!Î¹ÆÆ ½~wmm+«­¯?[_︫àñä<ž’Ï—q¹QŒËUðùÑèíŸ IDATŒËí¨PIm±l¬ª:RW§±ZãD¢§’Û<½4t6•Ù|¦¾žýe'éz«•ÍÎÒÚl\Šåí½9<|˜HÔÅ›1G¥rù•Im±L-,LŽv”ŸBŒ½ÍÒ²2¶=A,žÞTÀ¡“D Ç ˜QXȦ¤¿¥V«Ìæí‘‘Ó¡‹9g¹Ì—ÉåÒvëÂÂ|9vV£Lƒa|~~zL Âôíö3õõÃiƒ!«¡á~š/µXJ-–ÇðÈy<—-(ùü.7Z s¹r/Z hû'j†^ï\We6Ô鞓ɶ†‡ãc¹Û?£ïqº¢K–J·uù˜™R‹%)/Ï1šÙÊ0™ÃèË—÷öë7¥“gûµÚÓÀŒvû‚’’_ BŒ½Ð™úzÇGÀz…¢ >”<Þñæ6]睊±2̶ÈH1~Ò….äœå²&, ;¤]^—ËÅ4½¸¬ŒíNÊÏÿ6:ºCŠAõ*³9C¯?a0ìogʬ7Mÿ)  ÂbQ™Í«•ÇïŽÚbQ[,9-UÊ’q¹l×»‚Ïäó<ž‚Ïg#<ƒÝ>G¥j^óñ&ŠÏ_Ò¡Å ]¬ 3© àŒÓ/*„}Zí%“釻òër®JÕ¼ÜÑnª¨èÑÑMçZ›M{ã­Íærò—Z,.Y^e7¶XFm±8?ŠÖje¤•Ñ/9*³¹C~d@Œž…ý–%„LôñáåÕ5O*¦é½ýûÏ+.þD£!„ì©­-0™¾ŽFWt d¹Ü¾”  —Ë–KÏil}éÒ©»ë·xO ±Z3 †£uuiuuîbk%ŸŸ ôö$þ¥¸¸ðÆÐGHÓ{nì›d3€KÍf6d/4™4Vk©Å¢2™ÔVk+`4V«»˜FÊáH96¦Òj-µXZ\mµZ„løîò–Zí ;âÑWÊÊ^i½ÝÙ‘±…aÊÜœ!µVë=—.yÊU±É„z›LƒÁñ)à¨bÞe¶EDȹÜw*+­ “ÕÐp^Þ¨¨hÇ:²\:Êl!M³åÒÙÄÓcbúÔ[Øh·gÖןÐëÓêêÎ56¶8TÊáŒðò#‘$ŠÅÎY³gL--=¨Óµ’ãË¥(§àñFy{7dµÅ¢¶ZU&SÉTm³±;з2&•áYÎîìö_îí 4_hû•^ɤ2›ÝUþ!„l­ªÚZU…}uÃÕo}ì F’ZZÊ~”Ïö÷ï²Ntgo††F ìã—ŒÆÑ—/Ý-[}ÇÒ²2d¹t”d©TõØÕ«lbÆýyyßFGwý`².¾ÆËÐëêõç³ZìÌæRÔ/¯G¥ÒD‰d˜HÔb¡ŒËýL©¼ZrOÎ㵸·ÙÃÁþ_f6«ÌfG@ßöÙLÇåçß'ljDúøÄ‰DÈeêØ«;6W™Í…ì “© =GÇøÐ´Ó¯ßRGzã/áì/6Î- sã{AÁã9¿;¸%çñœEÊå²ò]]Ý_Š‹[ÜŒ8‘¨£~Áëþ¢~¯¬Ç07\Š•””ûMÓééûÂÃÃÚØ=TZ];IHÓ]߉îðL@€¦çìvÕ:>?ÿÛèè;n_†^ÿ ²\:T¢D’“”—§µÙÔM½é½ìJ›úyT¯Ï0Z©œ8ÂËkœÏƒÉoï6ÆÜlOy‡o°ŒËu—:ÈV¿e»Ûÿ©Ñd aŽèõGôú ×®B¢‚D‰dˆP8Ñǧ]ÃRû8µÅÂÆâ*“é²É¤2› ŒFw)FmÁ¡¨ð¦s¦³#ã*«uôåË67'ü³ýý»f7þY&û¬¦&³¥ÓuMÇ0Ñîš;¼õÖß—.M±ÛíkÖlüðÃwÛØ=‘•a—•±·S‚‚º7‹t¦Ÿ_´@0© @cµjm¶¤üüÝJåtÿ‚Nˆ´””°²\:Ð0‘èÛèhvö­Í6>?ÿ@TT‚§IdèõŽzv b±»p3§±ñˆ^T¯Ï4ZúÉö—‰î‹ÇI$òžÐÓ,ãrelf_Éç;&äš›Û|௔ÃéâÏ®uaa*“éˆ^ïòøL©ìâ!ÅbšÞñRPнž­åßáo@ˆÑ…° ’¶n]âÜ^QQ) ØmoGk³--/go¿ê!ß1ÑÁO±±w_ºÄvÕ¬ª¨¨¶Z7‡‡ãxAG}õ"Ë¥S ‰N È–R¶2ÌŒ+Wº¸‚òMìvçJϬ¬††Ñ—.½|¶¾þ\Cƒ»’,bšN”Hظ!•|þî~ýºx`€”ÃI‰ùD£ùNwÉh”q¹ã$’Wåòîúñ$V(ì¼7`÷Ÿ¬ Se0Ô¯]»é|öôéÃò˜”Sgçùóçñ]åávj>ŸâÏ0ѹ¹'~ûÍs¶mE½.ãp![ªªŠËÊ^4™LÁm2òœ··•¦ !›Í¢ììØ)c M/‰Ô4m´Û-,\ÕØ8Ú}aã.¶E (h)¯Omµ.mÊý»!.g˜»¬Ö»ìöh›-Úfãët„JBzY•„÷1P”¢ívŽVûó•+ÍWã2Žq„Ø)àp húWç7GMÓΗ5«5Ó`püR1Ðf‹°Ûï²Ù†Ùlò›e}dr¹é\n‡#b˜a6Û³Ù·==Óí¥£(EÕP”Ž¢Ô4m ¨l§ÔÍÕ{¡ÉTجLxóFn·‡Ùía #oº-·Û]±šê¶máVŠ:ÁåþFÓ„ÁvûƒÁT]Ý-Ÿ]1„¼üûFýs~~/8ó›Ç«qA){¿ùæÒµk7»´‡„&«ÕÜöBÃ0„ŒŒŒ¤¤¤øøø1cÆà‹Êcim¶ý99Äf#„¼¯TN ð´-|aæ¨TìÌJÿåóëööë‡Òép;k4„%Ÿ¿3>èj„Ùœ”—§2›Í„,÷òÚñL·~Î8êÙ-.&7ëeSÌ'ûú&ŠÅ£¼½‘n×¢œnìö ½>«¡á熆æ‰û—9œËN:Gš²ØÇˆÅ‰bq¬Pè’¾¿ ¸Ø¹à`‡“áåuË•¾Œv»Úje§yÒX­j«µ²é†Úb1Ølj«Õz«Bšvt‡G5Ýheœî혈³­Ó0ÍNO‰3vîÜíÒ8uꃻwm±X&OßöèY––•±Ÿ¡£¼½»lDv»p)ê3¥RÊá°Ÿ×zýèË—sÚY.]LÉçŸ8pFaaVCƒ•aØyŽž“É:ûyo³žÝs2Y/H1ïzbšžâëË&5ív•Ùœi0œ0rsŒFç8ؑžªé<çã3F,Ž ÔÕ5¯®±Z§þ:hPóØ—¼Ù1Êì¼Nl®±ÙJÍfµÅÒE Ÿ•ÉØ .uQ ×ðˆÚ‹<oøð¡{öls´°•^–-KMH˜L9yò»¨--Ѓ˜LŽ`e½Bᱟ2\ŠÚ%,-/g“ûàô(ÐQqj¹t=—ã˜Ì|^q±ÁnO *0™JÍæh¡ð6sj;¼ž’Ïßw›„4ͦ ³—dlÞKŽÑxT¯?S_ïRK^e6¢Ñ°e:(÷ú •*^$ÒX­¥f³ÚjÕX­êÛ8Ð.¤Ž’Ï—r¹r.WÆåª-–}Z­»•_—ËÑU„½s¹^ÌË+T(®—– .,Ìr^Ú–èT‹¥¨¨ˆÉ»í‘"«Õj6X'‘x~ ò—ƒƒå<Þ¼âb¶oæþ¼¼}ýúUX­§ ƒÝ/%K¥rL«­Z¥V£–K·r8ÇcbF_¾|®±‘’ZZºª¢Â‘1ÊÛ{{däMÇ~ul=»³ù|cc‹ëxÔØÖ^CÆåN—J§òº\N)0™ÒêêÎ76fÕ×»t±·’t’^W—^Wwk r.WÌáȸ\'çñ89'ãr•|¾˜Ã‘s¹.7 vû¹ÜÜ‚–òΓ¥RèˆÑ»Úܹ‹ÒÓ÷áÀx ›Í¶oß¾´´4‹ÅBáñx&LHNN¾åHýL}ý®šöv7NZÔ.³ýý<[ Km±ÜŸ—çüQ¾ª¢b[D*©ƒ3­Ép¤(ûRM‰Läã8hõë%ÃÖ„…!‡¡‹ iúø€3®\a‹ô9g*Ÿ©¯}ùò©•Cº žÁnÞR¦àñV„„àxu¶h`aàõYÕ ["æ„Áð}}½¹ý©)l´íˆ¿½iúz ‡£àóå<Þ-Óô7ýû'åç»”v‰‰¶âgÄè]¯£J»@‡Û°aCvv¶ã®Åb9tèPQQÑâÅ‹9·j°y#làÛƒ&òL”HŽÇÄL.,,6›]¾«5VëŒ+WN àɳ¥@WÚ—wjþñ«EAÄ+XÄÀ'"!䙀€™~~Ø?]OÊá|{ñbóÚ.Z›ml~þýbqaWÕ³Óôñ»r…ÍÀaðòúL©Ä¨ô.&çñ¦K¥l‹Án—]¸`r¦‰¦ùú†ñùŽø›í ï¤\Í8‘è×Aƒ\æ0ZÖ}¥¡OÇèà™ÒÒÒœt‡œœœ´´´É“'·÷ç›è)èΚS}}?¨ªrwíqjÀœ3°¿àû™?þ×6ìÏ„wÃ%¨±ö¸s¾7ù¶®Î]ñÅkVëWîÓQ>G …l×8‘ßZˆ¦àñ~8°óŒB×Óôÿ'³äRÔ¿•JÇ-]vý°=2Ç1:@ËNŸ>ínÑ©S§Ú£[fQi){û™€€ž˜Tç.‹”r¦¾Þ`·£“£3ZÍs³¾µ zœP®g‚±¦P]-UÈq!çqoÞ.¥º°ž]¢D’(‘àÐxŽõ ʆ†¬†—ö­áá] bt€›(..v·¨´)Ún»]559lwEM»le ¿•a4V«£yº•ÁÒ¸ïò©³—!#Cb“Þ/æuâ7«¦Q§5Õ«ëk4u*Zkªÿ±2_«×<@'„€©¿\1$1Ö?BîíÇ¥‘•Þ¥Z0_&{õìú<6 iyyù®š6|˜H´N¡‡K)@ŒžÆËËK¯×»[Ô®‡²2Ìjµš½½L.WôÌB(±Ba›9ÞÄ4-G.i·ÊѨfì_Y -gï~tþàª>Û=åµQ!ƒnáÑŒV³º¾VÝP£®¯Õ4êÔõµ•M7Ôõ5K£º¾Öjo–»,íO"Ý~g6ZÇï]BrùÑÒP¥op´4,J¢ô‘Gû…*}‚…\\ãu–±É{•-OÍɦÞ!ØOòõ Åz…¢ÔbÓ4FxbtðD6›M ¸‹Ñ j_Üó^e%Ý*x¼”  ºO•Jêt-.šâë+ìÉ.%çe—4QÒÐéÑ÷ÆÉ”]¼êúš¤/ko8:*]å¤}Ë~}æc…DÖ|}McÛ®iÔ•ê5l®i¬+ÕW©ëk –Æ[ÙQ«CB…~Ž €*G£rðb¥op´44Ú/,Ò'Héí-½­,ö,u^fYŽÁb•qG§þ°àÉ&úøŒ“HŽ´ô¶$8:¸P ¢. FÏd±X6mÚ¤iiô !„¢¨qãÆµýÑ´6ÛÚ¦¬—‚ƒ{n,ûL@Àtºý͆—q Y×W‹^[í¶9‡×î¹”áhYõýgoÞ÷ô’‘3»r3–žúÔ%@¿~î™ ³|läl ΆæêúšŽz^6ª– Äro?™È·Á;ôS÷+÷|ƒ¢TºJ­ÉÐò;Åd8wÍpîZá g͉–†Fû…*}äQÒhiÇß´Ó]k2Ì9¼ö`áYG‹Ò7xÛ„Ôq‘wöÍsuoÿþS 3 7ìüçd2T<ÄèГtGEg¹1›a˜/¿ü266¶UÒ7\»ÆV4Sòùó;.îNµ[©\\V¶åÆê.VBÖÕõô—vk\t6j_zêS©P>>?üðƒÍf»zõê®]»žzê©›VIW™Í¯]co¯W(zzBˆ¦7‡‡/“ËÙB.E&Óë„Å¥¥S|}ûÚÏ£%ç]t‡—ŽÿC!‘‰y"u}­Ñj¶2×CmG„­5´¦z£Õ¬n¨!„hõîz—;‰ÜÛ_&òqÄßÞ|¸»ÇÌilÜUs=\XÖûŠšq)jB1>?ŸòIuõ‹AAÑAß9gØä“Î æ‰d^>„™È—íÏv$–Ƚýž˜'”‰| ! ‰ŒKsv\Lß™ó]‹õüð‡ßLx¦“¶Sk³-(.ÞS{}?ˆizsxø3Z›íˆ^Éh”q¹‰bq¬PxËO!äòãdÊæÃpî¥úª¢ºkª:uAmy¶¼Å„— ÜÞ%û˜¨1õÚ<ÒGç.ÎØæ¼®ô Þ>ñåÄðxìÄèÐç444¬_¿>7÷zöêsÏ=—˜˜HÜ׳^YÉ&¬ðÁ/½ô’»2/‹JK­ C™éç×[KÌŽ“H&úø¤ÕÕíöyÅÅÇcbúÈ9sîZá—ZYáŽÀ~þBçðZ!–qhŽÃ“{û³ë°¶Ë—{ùB¸4çÖz¸Ââ.W—¸¤_BâdÊe£fuÒ8S_?ëêU•ùzö(oïÝýú±“sI9œd©´S÷‹îV»­T¯QÕ©ŸOßœ[ãv~ƒÓe9§Ër–gî{û'†ß1¹ÿÈÄðøæÕo [løùëÔã9·¨t•ã÷.Iì„éˆÑ¡Ïèï¾û.›qN™5k ·RÏî§9«ªªJKKFã–-[Þ~ûmßfy,z}†^OÒôš^]öd]XؽÞÊ0zýA®×¤ô¸“£Q­úþ³ýß·Òe«ô >ûäæ.ûq–Ks¾M^=ïë÷år4&¸óØ:©Úà{••Ë+*ù- ׄ…uûD³\š£ô Vúÿ9þ!—ïø©ëkö\Ê`ÄÉ”S¢FQ M ǯêÝåRMÉÒS-ˆ²ÚmsÓÞËûO¼=£C Ðßxã Ǽ¡<òÈäÉ“ÙÛ­Ô³[•õﯼ²|ùrN§Óé¶lÙòÊ+¯¸”yYÕ4iQJP²WOÀ'Í—ÉØb/ËËË'úøôÖ© ´å«Ïü{×oG]¢s®’5ð¼,´žo«ñ¶RzûÄ—»ø‹D*ï}x¹JWÉö¦ ¤ô îŒ'ÒX­s‹Š•òå<Þ¶ˆO»0[8|Ú—N4ÿaAÌퟱ*·ºèhQvFÉçqºlÉöwÎî!„DKC'ö»{rÿ{F…’ Äøœè2 ϸm¢ÒUfUæ%„Åa/!F‡¾ ;=Rô‹»?L/úÅÿ!ÿÔÔÔÕ«W[,–ÜÜÜM›6¥¤¤8ʼ쨮f;ÑÅ4ýb``¯ß“ËäòÕÕ»ý\cã'ÕÕ½¯c‹ÑùìÁc—zb÷¯òŽeqššMBê‘9wײl/rç=~†^?K¥R7U#M”Hv+•rÏ«çÃþ°Ðb}ô±ÃÆF [8|šÕnË,ËÉ(¹p´(;«2Ï9,(ЖoÉþÏ–ìÿ¹üQ!ƒÆFGò:@§R××d–]0ãÍ3¹gÊs[œg”KsÃãÃãWÞ;Ç`iÌ(¾p´8ûHÑ/—jJÇÚh5g”œÏ(9ïH^P9b\äH^¸MF«ùLEnFÉ…%ÎTäºë;w!á ±ë£C/WUUõöÛoW5ÍÅã$šQrþ‹K'ö|Ó¹ÏT䲿¤ÇËÅqj/BÈW_]'´>œ4qÞÈŠVðx/÷‘]šôAUU©ÅÂΫº&´ÇOÓbtþLÜ„—F$³eFÊËË¿øâ‹æh³Ù>þøãwß}—×[.Ï´6ÛÜ¢"dz o[dd˜þfTÈ —q¥-óDS¢FN‰éØd˜3¹Ž£äu€n‰Ë=û¿õUuÏ ÔÕc1º«#GNŒŸÌ0U.íõ{^»´¤¤lìØGhšNOßÖb ´KyyùºuëœtYœré©O÷çŸn>áM—$&Nd­€±Ûÿ÷ùþW/ìÓ$¥Ÿ’* ÓGö*;4vŽJEÙpíÚÓþþ·Sq¯{•ê5ËOïhÞw¾bô焇ììl—9h/¯\¹2pàÀ^pdÓêêæ•6½Òd©tkD„ŒÛk;;„\>Û¿NÑš l2 Û¿îXÇ‘¼Î&ÃŒ ¿#1üŽQ!ƒÜÅëF«ùHQö¹ªB1O˜?,( ŸÃÐG°?R(½£Q)Ïu7YûVJ22dÐö‹ÿû:/³ÅÕt¦ú雾ÊËÜ:þ¯}sÂ`ÄèÎn·§¤¼în©KàþÖ[_º4Ån·¯Y³ñÃßm±ÚŽMqÑ5x J²¸t_V–ël…±þá3Ü÷ùÅcÅúk.‹Ù—S_¿\Súseþ‘¢_Tu•?DÔ‰Ò€FÅ©O‚šÃ'„Æê—¾|mP'SŽ'SŽ‹ÞIE6<ÄlÿÏkjØ:Œ‹ËÊDõ¼@¤@[¾w“Êó7\Ò¥Op‚"ndHìˆà½rÚ%£qhn.Ò‰Iì9UáÕõ5Ë3wî¸øKßùº1n³vïÞ}èÐ!wøÊ+¯ÜqÇ=÷PªÌæyEEGôúëW­BáÞ~ýâD"|ŒBÎ]+=dü¸È;›d´±ž]NNÎôsç &„È««¢4ßý\y¹•|;™È7Ö?|läðQ!±m)ñ¶#绯òO]ª.‘‰|ÇEuäãžÙ+ŸZZºáÚ5BH‚X|<&Æóë0hË—žüçÁ+g‹Ks’Ü¿âÞ9î¢sBÈéÓ§wîÜÙÐÐÐâR>Ÿ¿eË//¯úfÙS[»¨¤Dcµ^¿4mg~ËÉ“'úé§òòr‰D7eÊ¡°wŽôb/ÑO”\HSe»VxÓYNí}xyò€ûñÉ ¨T¯ó…7ýV:w­0£äüEMÑ‘â_TºJw«EKCÇEÞÔ?1<¾•Õ¶b§ßê(Ù$äò—z"å®þ…XYY¹lÙ2£ÑèÒÎápV¯^­P(pžôÂýùç_¹ï¾{ž|2¹y—9Ë`¨_»vÓ±c§NŸ>ÜörŠ„6nÜ‹¥ß,?ýb>õ½­¨˜ ¸ƒc…=aŒéí0ØŒçôÅ?ë®fj/W™õ7]_!ôOò(ðñåzùrE|ž·ˆæwö9ÿ³þj•Y&ð»ËGéÏCõwø]£ÝüÏÒéÕ9:k!$Ú+xAøØ»|ú9ýV_ö›¡ìjcÕº+ìj-ê' ¼Ç7*Ú+x¨8¼•Ó[–^³¥8ݱa¿Åý&“DvàS;v¬°°°ÅE‘‘‘&LÀ sûÎ;—’’âA1ºó¨PÒ,ûÜÁ³™-V«uÈç\çwW$íuþÕeªŸß°þþ£wïÆ÷ÈŸì³Ôy_ågîúíHý5íØB©ÀJB¬攲.4&òј„ÙƒÇu` µYW¯î©­%„È‹ŠÆ~õ!äÏþóþð‡ß¿ëkr4ª%ÎT\:w­°Å ’®ÇëþøcÇPQ™L&•J“Ô²WË ÃBüýýW¯^-éQ—¸—ŒÆyÅÅ™†ëƒºFxymŒlW~ËÎ;ÓÓÓ[üJ[¹re׺ÑétF£1222$$„Ó%%A•׿ÎËüUsµ½.÷ö—‰|d"_…D&÷öJäÞþb¾H&òQHåÞ~·Ö_hµÛ–ŸÞùÞO{缘'ZÿÀüç†NB „ƒ¥1é‹ÅYj×ÑY[Æ-Œ”gUæý\™w¤(»•‡GÈŒ‹¼sŒbhœ¬_Ô'U××,Hß´¿à{GËÂáÓVÜ;[&ê˜K‚ 8g¹8óòòúøãqÎܾæýèÝvì˜Ívý@8pîܹ]ð µ£òú3C&ôÛ6ç"Ök¿ ¹|¹·ŸÜË_Èå+}ƒe"ß¡D! THd2‘¯˜'RHdÍ?ßæ¦½·ë·£.Ÿ3óþ·Þj·ÍŸ‚XR}Ô<@'„,<²¥•S}Dð€û9 tL_êëë»lٲЛ w®{©¦ä¦ÕÙ» 6}ÁÇžÚÚYW¯B¤NîàÁž0‘Só¾s.Í™=xìMûÎ !‡úæ›o‰‰‘‘‘?þ¸»!¡ÙÙÙ6l`CÃ{î¹ç…^ððOp+Ã,()ùDs½ð—¢¶†‡?×þú-?ÿüóúõëÝ-•J¥!!!<O*•²-2™ŒÂãñ|}¯÷{:·x{{ßrNÿúõëþùg—F‰DòÎ;ï8ž® ÿ×¶³ ¹'="Ð4êJõu}¦±®íoü›bãu©@,÷öSúÊõ¦†­çÚrºd"ß’¿|Ž"3}–¦QW -¿TSÂ^°Ýt}™ÈwXPÔ˜ð;&*G´>è³ËhM†ÅÛœ{^’Ü¿uü_o§C½¦¦æÕW_mll¼éšþþþ‘‘‘QQQñññýúõÃÕ.×þ{XÜ çå*¡.!!Á……Y­·Ü¾ºKyîtBHí/ç<ö,iW³v^ü.£ø‚c¬7KÙàpÕ‡±ÚH'Å>¨Ó±º¦—Éå^Á+¯¼²|ùrN§Óé6mÚ´råÊÖÇÌ9—d&„”ê5™e9§Ë.æhT?ª/7XŒnQï™Çe¦Ÿßû••Y Z›-µ´tw·~råhTïgík^ï|ÍýϲµZQYY¹uëVG6 ‡Ã™8qbrrr+½ãÇŸ5kÖ®]»!?þøc``à¬Y³<öä’ß2ÊÛ{[DÄ­Õo1·š¶®ÕjµM³ µ—P(d³†Äb1ûV’J¥<¦i©TJÓ4ûMIÓ4»æùóç›è„½^¿k×®^èºËÚmRïßó7eWY#ð7ò,´½Rl9bøÃ;&-nß°Á:¸mæR½¦²¾VÓ¨Ó4Ö•ê«Ôõµ.Ÿrî”ê5ÎÕ[ѾÌ;ñDì(2Ó»­æm¹JW©ªSj+T:µª®² ¶¼-g”Wð@ä°1Š;&ö»;Ö?ÜÓN©@¼íÁÔG$,=õ){I¼/ïTFÉ…÷Î^8|Z{Íf³}óÍ7iiiÍG‹º‹ækjj²³³÷íÛ'‘HBCC‡ 2dÈèèhô¯ß›zcîÜEééûºwì&Sk§l«K;ëꪥºKV»-£äüç¹Çöçï2'—æLé?r‚dð»¾e󆽼¼–.]Úy¸«šêd¿-°áÂÂ… ß}÷]‹ÅRZZúñÇ/X° í9 ‰lflâÌØDBÈåš’ØOŸu·æîKõã_â'ÿ?{W×Ô•¶_²@XBb$0– DEQ\Pª¥.ãRª2¢–ÖÚñkëÈкÔqêÔb±–ÚÚÅV­ÔVkm©âh©™º¡HEÑ€C ÂB ßc IìäùƒßåÞ›››»œóœ÷<ïót¤Zì¥ÓgUVªº»hmM£Ñ&…ɉAݹiGEÝ–:77÷ôéÓÚ–šÅb­Y³Æ±DBB‚P(DÊì_~ùeĈ ð5ÔÓ·lôô|ßLJ0ÐüÀÀ@kÑ …Ýmé±ãÆàääD¡PœœœˆD"ŠÖ‰D'''Dý-xæ‘Ô TYTM]O(ÝQñ•8ùJ o$üÅà ‹q¦™VC{kƒ\ÔÐÞÚÜ!iho>ZhhÉ” í­ý²—€5¹{þž¿?”âîáB¡‡{øOôm)Q¯掖Eµx·š;ÚP1ÁèFÚEÕmÂj‰°ZÒPÑʯ–9â:3Çl1›1þÌ’Ãü&Lz†1á­K?+9­Ò¨›;$oä~šsýàÜT†lz¨¨¨øú믂Çn(¿HcÆŒyöÙgy<—Ë-++Ó­d'•J+*****Nž< L&“ÅbEDDÐétâSn¿¡‹sÜ?òkn7wHÂF2GÏ0ÿò>•ù· -ˆ¡£1NNƘ:)|Œ-OF¥QëÕ/ø÷µïvÆ®Ù2y”5Wcÿ÷èý ½[œ8ßqÈ?QÌkØ·oŸmú7--7år c±i´ÇO*‹ÅZ»víþýû ¨¨ˆD"­Y³fÇ¡ø>ØpwËðàª[“ù–ùJñ}uÜüµÏ CÆinn‹I¤l±¶ÖÕåÛòÛo7V}^ò=¿óÅÌ©ïÏxÙó/‡sèÐ!$X,»lÙ²„„óã"ÉÉÉ|>ŸÍfÀÑ£Gi4Ú°²ÔÕÓ·±Øý~~+F Ê&ˆB¡H$m0]¸ºº¾òÊ+®®® …¥a)•J´ggg'Z£V«E"bä2™ uxf†²úÐh®_¿ÞçAšÄÚ]\\ôH<ÚD"õù"ÝÑ"ëa#áþÏá±C÷â¿òÛ^ÝP‚—+å»y›Pò’é¾’#TK8b £H¹™“-nxgáîyWÒ©6\8y²NM®á »wÖßV²f'ÝÅ U;Êzùýé/mŒZjú³‰äûï¿/,,Ôf°DFF.[¶ìêÕ«çÏŸGtÇÏ;wÉ’%!** µc‡ÃáðùüÒÒR½S´éÌ™3@§Ó###™L¦ŸŸõ=¥Ïê ÿyO—üûÚÑOã_{1Üb.7ÃEn Æ×åvÚÞ± \/.îÂ/î¡¶«˜˜tv—.A×â…é•­‚ÞÅB)¾/MXƒ¸WYYYff&z£H$Ò›o¾i=‚.V«ƒïÝC6Ò;}|z'Gfggçää åÔÔTôV÷|ió¬o¢G <Fñ¿ÝÄÑkm“ÇÄ¿:nþ0)6ÎéìdÝ¿Je1/ZÔ‹0‡síØýüÛUnŽÎq¾ã¶Å$¡È_¹¨vûÕoôbçÉcâ7G/ïSÙ‚ÚÜÓ§OŸ9sFÛRGDD,_¾œÁè·«—B¡ÈÌÌD4ǧ§§÷™™`\•ÉVUWW?’¦„;;Ÿ DS@†R©Ü·o_IIIïMx<~Æ ƒ¢h™½L&C¬],+•JF#‹5v¡½½].—óx<ù^¢òˆ¯#™ ŠÍ#ZO ¾øâ Õ#›y=,]ºtéÒ¥¶¹ã7Lùþïãëx ÎÝÑ¥EÑÖ'û ÷ðï„(ûŸ&Ð^.ª=[UX!â{¸âýÆ÷I‹­…§¶kݾucy/dL®wUK„ˆ‘óÚ9b ÷kÎÄË•âïNó'ÑüI^ wOwš?ÉË߆²>üã§·.4ø©»/~õtÝn…ªëË;g·_=¢®Äx³¾›¿™I6Üçåååäähã  eÍš5ÚþZ©T"?YƒazžÇã•••ÕÔÔ3ƒ×çíûòÎY½søõùô§´*6J„ÕrJûÎÔU[¢—ëÎq¹Üï¿ÿERâââ’““ÿ& …B6›Íáp¸\.ŸÏ7Ö°P©T&“9zôhb7ÑרÕêššTŽÉdÚ¾FÞ7eçSÎ}hp“?‰Vùò7˜j³sôþÑôòÝ™µÙ9]¢ÇöþkVŽÛn›óWiÔÿ—·ïàÝ_Mw ‹™S—‡ÎŒó§÷@\¿~ýË/¿Do‚µ%.РTß»‡´¼{FzÓ÷R(ééé\.UFFe F–*º¡½•LpÕëBdÊŽìŠ+ŸÜ:¥ç ááLZ÷òØ„! «‹Õꀲ2±Zmú*õ ï~¿ýê7†¶8tk›ã“7O^cÞ,­B¡ÈÎÎÎËËÓ¶¤S¦LIJJ¢ Úu”Ïç¿ûî»(¬K§ÓûL ¶dÍúšš£Þnî§€€¸A«$•JåÞ½{µ®” .LLL‰D‚bÉCES(¶mÛ††FºÀb±ï¾û®éƒZ­–H$ˆµ£ø=¢òˆÄ£ø½H$BZkz‰¤eíd2ÙÍÍM¤$O;õÉÝß®lÇa»TØn!Y½jÕª—&Î7¸3G,(k®¾ÝXu§±êvS•‰*’Ú7Îß6ÑktÅ7”âk¢*óÞ­¤³ïëˆpÃ;_ðöÀâpÆ—wήÏÛ×{ýŠÐ¸ã Þø[¦ìh–·¡À 4´·¢a@s‡D¦T¨5ê†öVU·Z¬‰;ÛûeäÕd'7Ä¿™#F¡Ð8sÄ(wÚ€…Izó“i‡dødAºûë[j9L²OÖsoN.—ËOŸ>­Õ±€OJJ ‹eyaD"¹ÿ~yy9ŸÏøð¡®„]...!!!£G=zt`` n̾¢¢âÀÚ6@ $%%ÅÇÛÔyyUîn=ÿV]°_úzEdí} 訯o»_Q¸òEôïÌßþc¥2F í¢rQííÆª ¿°žÝgŽù?¢žOŸžb0 Aß´i“µ]Þª«ûP(:Ï6Y©G$íܹÍ|1™ÌM›6Yi|µ®ì“âSç¸7{‡Õÿµ$!`â„Õµ%,âèҨ©Ÿ¿`"ª„Ã`&îŒ}Ñü‘‰^óçââ²fÍ šy—••íÙ³ñ¹ððð´´4Û›¦_JSª«ùú†‰..Ç©oéMÐçÌ™“œœ<Ü ?½nÅS—äädݲbƒbí(*¯Kè¥Riggg[[Û;wzçœ H`C"‘ðx<•J%‰nnn …B¡ ± …Bé} Øl6Êb×]I¡P¶oßnŽ:V¡êºÝTu³áA•¸þfòæê>#»¨›6յሑGÖ÷nçqlÉêýæ¨Ñ,3^Uvx±ÂXwóaܺ(Z0 1‰BÝÕÐÞ íJZ¨4j”%Svè­±8G&ÙÇŸDc’G‘½ýݽ˜#|P­+°Ã ¦¡Wíh)Ö…-ijlÔ¾S .œ7ož b …‚Íf———×ÖÖr8cª<<Ïd2eïîîþôÓO{'ç$&&.^¼ØWïjݽKµ¥ß”7ÁÐ~_¾GëMgçèÖåè¥o¿Ã=|Èã"fürÒ7Øt[ÔÊ—·ÔÞ¨/˜œîJÒGZ}ž.._¾üõ×_#D¥R·lÙbmEAuWëþ}$ø)00ñ‘峉`êŽ;Ð;Æb±¶mÛf½skî*ýõë»çô$ì^®”WÇÍ1l®e³°ûfÕÝݬû÷9ðâÈ‘Yƒ“=Ün¬Šüv½±­4Wò…>0¿§—J¥ÙÙÙ/^ÔÍJII¡XºhW~~~VVZŽ]¿~½‡I[Õ#²ø&ö¾ÎÁa‡•Ëå|ðÖ˜Ò–ks V«‹ŠŠªªªPÑèèh[:£#œ8qeŒõî€4T*‰Db±X*•L·_wqq!“ÉX,ö·ß~3höÌb±¶lÙ2€a*œ\.ª½Óø5ì}¦*ºá] ÂöVg6¸™0²-®*ÎÈ9^3—õÕÜhOq§Lo îl+žX×éwuÒfU·Zw<¯çr£=l‡ªSØ.†a÷¦¥Löa’G¬KeG¿pô~~êï_ÊÛ¤ùD_ÉãðDttôÒ¥KmPÝÌà ŸÃá°Ùl¤Š1_7,›žžnñ3×-ØRXÏîSö†Pûê÷˜r±sô£K$º0%ù¦Ûî¿feo3š-½Óô°¼¥¦\TË úd䣈õ2‘ÁZþ$;åëÞAt=‚þöÛoÛ i:…Çû¦¥Æ;;ÿjÝÑ•â$$$$''[—kÔgÞ8Rvþìú—‡Á.fNEv6{2³Åâ>DË%,ÖøþÛo7´‹Îqo^â—æro4¶¥2Ï0&ä½aæ1¯_¿~ôèQ-1"‘Hk×®µžûŠ®H:))iþüù6¸ò|¥2¥ºúÂ#·Gǽtú⾆”f2à]»vUTT /^Œ$.vè]¥?þX/•‹ÅnܸÑà“&‘H¤R)"îHT£»Éo,~’‘‘‘$if”*ººMx³áÁ½æêrQma=ÛX\ÙKê8çÞSû}Û}•!©sïúÜq7¼³‡‹; š¯àå:u[Î$W<èDœÖÍÑÙÃÙýjÝ=#Ê=÷ð¿û¢½à¼%_Æß~¿püØ÷ÝÊž±ÝQCÁú )ÕÆR-È×-J/×"Æ›u}å'ƒg­Ã¨†Ñð_ÚœÃ)¸ÓøÐÍÑy¦oDØëëï§ï€û»vZ¼Or7ñYÄÈËš««Ä‚ÛUå¢Ú>o3ÙÉ-ÜÃ?”âB¡OôJñõr¥|\|2õ÷/õöÄa°Y oö&èçÎ;~ü¸ zYGÇ­­hùoo3ã‘S¦Linn>qâ:mooo«ŠÉ_ÌœZ-eç^ò¤zTiÔÙ®d?¸‚ì_ Ÿkƒæ)‘Lžèâ‚L*ßâóÍôalhÝl¨Ì¯)¹À»U.ª5gÊÅL}‹T*ÍÊÊ***Ò ¥$''[<|®‹¥K—677_¾|Ž?N$-«»è±ø•ššæG¾" H¤,Ãg6P/‚n³!ÇS,›––vîܹ‚‚‚šš'''‹µtéRcšx‰d:ØÔ5¨>šT*EË2™ - }UòÝxta¦e‰¦ë›!î”!Eû½fbí U±;³š„S?ÑfâÔ3¹äÜ‘˜ wáN yéÒkº›ƒ%`ñZ÷zØ&à½\(¨½õr1€Pwœï¸õlƒ¾.ûçl°¿A–—Ë=|ø0J €n¸Om/£ÉUÍW~:Pòiük+Bã†v¦dzX,¤†W«ÕÍÍÍ<Íf‹DF3Éu™²ãbMé%~iYsu¡€mL½FÀ9Æx³¦ ›ìÍ:t7÷4çzïöÎþ›¥®ƒ=Žn?”_|å·½ºó•³}ƾU.»{ü–'F~ò¡âˆë*DüÛUæøpŽã©Aþ$ÚdïP&ys„“ìcð­øòÎÙ·.Ôž‰?‰–•ðfo©ÓÅ‹³²²P‡äããóÖ[oÙÆvtaUÕY‰‘ž3AýKÇ+Bã^‹ü‹µóJ¯Êd¨¤ül,U‘/m¾À»•_Sr±öNõfJZ/_¾|âÄ ]›­µk×ÌogœŒŒ ä!€Åb·oßÎd2-uðsmm»…ÂÂövˆqu¥áp?‹Åè‚ãÞñöÞB£ ^ß‚úû￯í톛ÄÅ$‹‹ÅÍÍÍh¹¨¨HköomžaÂŒ²ÝA¹ÿÇoÜ[ ôëÈ]Õ㜴á½ØÙÉ•Lxb âÍO¬!zà°º ‚oÖV­QÇÿ´™×&p3bA ôìW´kÌôG[ɸe IDAT·ÃÌöJ/7”Á`$¿¼æÛº«þñ“6ô“0éàÜÔa˜ [VV–‘atrØËËkãÆæË]ÚE(X^Ö\}SøÀm#;¹M£‡MöfÅùFŒ÷ Òf²©4ê÷ ¿O/ü^{ÝÆ{e%¼9`þ`׺˜ÝÁsÿXxê_½C•Ïwy­þâZ·J‚SïSq(X®›•oŒ01É>ã=ƒÂ<üQ°Ü#76Â+°ùÒf柉´Ñ½#èùùùß~û-"è cË–-¶©ã¥+Ûø#4´¿å3•JeFFR„wß}×,wÈìl¸t 4: €øÛßÀ­ß!ðrQíWw~ù¡ü¢ž™À´Qá+ÇÌNo½¼ÒUÕÕÈT$”@¸Ëbiù"G,8Çý£XXy³á‰x9“ìç;n¦oÄ$ïä_2n6<ÐÛá೩kÇ>gâD"Ñ‘#Gt«ÄÇÆÆ&''Û²œ\.ß±c²wtqqIOO·ÈÀ2£¡a{}½ÊPz"?È`$¸»[äüõr1SRRlì-`ÇPTT´oß>c[W®\‰Ãá†ÜŒÒ‹yååµ>>>$Éâ_ D êÊžËÞÖ[C¿sÚ‹ÿŒù«íï‘ëŒÚ¡Åõë׳³³µ~x<~Íš5Ó§OG 7¬ÊÝ].ªÕF¬vN[ózä¢a%ýW(¯¿þº ‘‹ˆˆHLL46;Ç .ÖÞ¹!(¿)|лŒþ$ZŒ7+vTXŒ7k¼g‰‹ î”]åßkî š ƒ¹\vŽn.®2æ®õϳMË[ Â‡ðö _5Æp(ÎË•2Þ3h¼gÃݳ¿v¹ýENNΩS§lOÐuÓ“ɧTü\(îØ±Õd¡Ñh;wîìÃæåÜ90”vÁÁ°a ÈÙ•x8r/¯·]#ª‚4¥>ÁéìŒd³‘[å»#Þ2^Aݽ ¼[ÆâåhŠm¦oDœoDŒ7Kwœ&Svl¿zäèý|4Vï´gæ+¦ÃNùùùÙÙÙÚ:p4míÚµÖ°Ùê|>?==‰ÏöíÛùôžkk[XUe OrqÉe2-¢oÑ`€]âòô@­Vÿë_ÿÒu¹Ñ">>>%%Åôg‡ÄŒM"ãOOOd=I£ÑˆD¢¥Ì7®Ö•¥Îp©ïrïÄvâ4"R÷šþúÚ¤ÅöæO‰DräÈ]A£A;]…ªk{Á‘‹Oj™ë3Œ ŸÆ¿fpÀеxbXëà µÂb±ãÇ×êèn7V]¬½s¯™w¡æ– ãT&ÙçÆ„qžq¾ã†ä'Û9ºyäI,>ô¢±­#ÚÕ}[=¢] ûžóúoXOBL(Å7ÜÃ?ˆìmã²s999ÙÙÙhÙ–57¿RS ¦2,Œ>ÐH‡ÃIOOGSo,kÓ¦MFƒF°u+KY·ÆÌ/*¬g]zî(;_oÎkAÐä5as3§Z*¢€\}Þ6ÿ¢qPHàÆG î4Ÿ—æ»Òf7G‚阓P(Ü¿¿V?³*+/>YƒZ‹™DâEóÔÿ}¢©©)33I&°XìË/¿lm=½„H$JOO×󌈈HMMµ`ÄÚ´¥T*e³ÙƒO{Eò4J¥º¹¹Ñh4dFI£ÑÌ7¨Q*•Ÿ}ö™î¬ºoÚ´iÈ Ù1Èi^^^vv¶öIÓ«Úå¢Ú”_?Ô Auêç¸ì.úmŠñf¥ML´±‘?Â'²®Í8 •Åø[âêÓ§Oß»wOwlì8¢ÀMÈŵ- ÷ðO˜4Ž8mT¸MÞì}€ýj]Ùôãÿ0±Ãüñ+ù A„¬÷Ç…NL•„A(‡Dâ &øÞ=ä0ý:•ú©ï º³Ï¦ÌøÊÊ`ÿ~ãìlXÂLCÜ)ûòöÙÞvL²Ïk‘I=CW¥w³áÁÕº2™R1žçaz¶ävcÕÞ­üšÛkï(T]€s†)oÞ æ2pr/Ÿ6*<ÞoüxÏ –'yÕjunnîéÓ§µ5ƒÁHII±  |À(..Þ·oz’£££_{íµÛŠ;ß¾­Ðh n"`0ãÇ[„ ïÚµK[Ýzݺuv‚þÔA¡PäææÞ»wO$Ñh´I“&ÅÅÅÙØÌþܹsG5¸‰Åb‰Ä¦¦&™Lf¢Žºi‰Dt÷ððÐÚÆS©T½éÊ#GŽäååõ>ƒÁرc‡í+ØaTTT=zT›-ƒÅbgÏž½téÒ>y‚J£Î(:±ûÆ ­üi¼gP¬OØW¥¿è‰C¶L^ñþô—lù£. #íÕæäÞ‰íÄjˆÊb×ö)+£½B¯•—T].Á ÚtüCŠ‚í)×&aOôý cÂLúXT¦`زV»¯‹a ¥¸1•ÒbæÔ7l½<{žŒS…k•ú¿ÈüdÁœç™3g²³³‡„ À¡–DÐÝ0˜Í^^ƒ<òdEf|£G6¬ë5Rà ùid'·-“W¼9é… ¼[ŸÜʹÀ»…ŽXúû—[¯^·&lN(Å÷•ó{u-˜dŸïæoÖ­å‰,œòy%kK ëÙú•ª8ç€õ<àèSwøúOöð›6*¼Ïxù 8 >Ÿ?~bbâ0é}£¢¢V¯^f0‹ŠŠh4ÚòåË2¾R«•–®’cš oذ!::ÚÞl>u Cžà;gΜÂÂBÝ·N§§¥¥i§¶ÀF$!Ê. ‘ûdss3R×;>ò©4¸ÉÅÅÅÕÕU«ŸÉÏ7\1‘ÇãY°„™¶R©3£àù¤n•ªæDvÀK«­TyÔt%.6l°¥VA¦Ñình@ËÛ¼¼è–àyK—.åñxh²5++‹B¡°L6ݾx{[òÝÀ`&%Lâˆ_ß=÷åí³ÈŒI¡êú¦ìü7eç XG…ú I G,˜uâ­üeˆ:¤ù5%·«LX«’ÜžaDÆŽ Û‡s઺Ugdä¶Á•42µZ}úôéÜÜ\mø< `Íš5Ã!|®‹øøøššÄΜ9ãááÑßüËl±øOmœ£Ç¸º~¨³gÏDбXlJJŠ Û1` ;£üQë³ÇãçλdÉÝö‹Å¢¸ÁwV"‘ ך††™L†ˆ;bð&ñHuÓÔÔÔ{„ ‡7n0™L»âå)BIIIVV–Ö£@ $%% `šÈË•òûò=Ÿ•œ~ëÒAVué…ßk¬]o«S­¬—‰ú<óVgÕý1àìêP íÜFZíÜÆ™DÞLNN~Zžg»ÖÅ08bÁ”cïíÖ²vìsŸMEË·^O­Í>–«¹uê»{ùên³LèDÿI!zœï8cÆLK>Ì‹`š›Û•Ñ£öœóx<Àb±¢¢¢”Jå‰'òòò´ SHHÈêÕ«VÕ[r¹üÝwßE¹˜!==½Ï€Ç­­oñùüG3þt<~‘ø]¯:[¼¼Þij*‰vî܉"èx<>55Õ6.òvØa  4Vnçr¹çÎÀAH$’¯¯/N÷ðððñña0$É~m‡j˜‡ÜºtsC-XìÂùãý-·i{˜Ç …Â'Në2õØØØgŸ}vøô‰Ã”£_¸piΜÄîný´˜ÚÚºøø¥ &//Û×w”™k,ÅѵLývc•›£ó´Qa½­ZØ»3ìýð$÷ø+ùNž®dÂ#ÌÆ]ÕÝ=ýÁTFcœo„„¸ ÈñÐ***222ÐÌ/“Éܾ}ûAßýû¡¬ì‰P(@"Á£P1øøÀºu`åúM~VÖ¶Mäb¸Óæ0&„y0žaLÐŽæM=f‘åå(”žÅ`¼8rd¿Næúõë_ýµn`Ì××W.—·´´h£eË–%$$ Ïð¹ÁÎ;Q¸Út¹ÜÞãÆÅdòA??N¯†Qš§ç`"èºCe;A·ãχŒŒŒ2½v§p8Ÿææf¹é\ G 4- €F£yyyÑéôuR|>_*•Òét[æY=¥àr¹‡ÒR,»pá Xp¢cÖ‰·Œ € 8G/×hÙÚõ¶ä*ŤïÞ« Ïå½aÚt˜ÇãýöÛoºL}úôéñññvŽn&"bæ½{å½9ú«¯¦ÅÄLÔh4ÅÅw¾øâ3×X–£›F·Ju)á/’²ûðÒšˆ]ÿ¶ìñM×Úøè£<==ms›vÔ×ÿ»¾ÞðÈupáIƒÐuù˜1cÆË/¿ÜC.µ¾. lÜàæT*`0páœ=ÛcËèì «V Ò‡qÀ –/~ýTó>ߨ­ý¬© ¼ðxnXÁìaOiiiff¦ á)‹ÅZ³fÍp›Ô3 ]U ƒÁضm[o×ü³ÉúšmøÜ ƒÉò÷O$“-~2|>ïÞ½ˆ c±Ø7Ú%.vüÉ`pÂVWÐ%—Ë>|ØÜÜ, y<Z0ÓžB¡hE2T*ÕÛÛ›B¡˜ˆäåååääh‹GFF¦¤¤ R­ñgEïùÒððð¤¤$‹Ç†v€3KvÚÒñË;g×çàE+BãŽ/xÛœ#ôŽ©#¦±dÉÛTgš8úGí23¿èÍьȊŠB Æ!8x2Wbæ[rthÈË¿±êepÀᦟþiD”%;ï£Gš˜‚´¥¡ÄX6»Ìˆk ÓÉ©2,ÌâßxæÌ™'N ååË—/\¸:;áý÷ùiÌ›½ëÅTV¡C {”ž2k,ZÖ™gø¸ødêï_Ü´ hò™%;û{@±Zí{÷.*i´—Nßhöè+55Õ˜5›^¹§ º¦éznŒbµú/[üØò6™ByÇÛ›éädÕÑ‚]ƒnÇŸR©ôèÑ£%%%r¹‹Å2™Ì>¥qMMM555 ¹¹™Ïç×ÖÖšn:N£Ñ|}}=<<¼½½½¼¼NæÄ‰gzU©£R©Û·oÿŸ¥é½sÒP>ýõë×?®Í %‰K—.3gŽ•N#ãÆ[¯Ö[i{ïEÔÿ¾ué î€aEhÜÁgSûU)’ÏççææêÆÔ‡œ©;ŽÞÒ"š9sQaá9"Ñ¿7GwtôéêôwÁÆ®ÿuMã/€ÇԘؓ?XðÈYYYÆ,±`ýúõ6³Ä—”¨ŒÛetO˜`/ÍÌÌ,)éw¥¥¥EVVÂ¥K#G¶m`‰ÅpèÐcÝKp0¬]k yºJ£ž~üÚ*ZÜþXõ“<‰…Œ††­¸a0•aa^&GR©T(r8cþÊ(þ”––öôöL/^3%6_+¬9‘í·<ÑRG6-²e¢ ‡«3âÂëe5Aü† ÒÓÓ‘5د_|1ÞÉÉ¡gȼŒELÉdøûßáûï=®¬„>€U«ÀBÕ%µÀa°¿&¦¯ÊÝ­ç~|ÁÛ#èðº§ç'MM J¥L£Ù*d1 T*QW‡&—µ æØ2 ¾„áÐ"..ŽÏ磩¤üü|²¯ïAAzêóý¾¾Vzu º‹‹KZZÚSOÐkj ª :;N‡à`°Â´ƒO;Ïã€?îââ0eÊíJm«Åår@ ÐêXt!‘H ®G())‘J¥ÿkÚtduÕÛ4¢¼¼\»ìããóòË/Û¦uB~ÄÃáÊ„R|C)¾ƒ?FÛ°aƒP(<}ú4Š©«Õêëׯ_¿~=:::99yhgo†˜£ïߟµVròzpp ê…Ò½½i E§J¥òö¦™¿´ËwîܱÁÁ/HPønÿóß ŽdËä¶wvv:;;w™x{{WVVVUUÙà×É®® sUu1V.¿„ÂÛV@lllccc»Tº‹uèî!ƒQÞÔ¦¿Ñßß»»;¨¤«RAKK÷'Ÿ<?¾ŽÉì6òŒ7)ÏÌsbÝ—Õuh”LgÚxw¿öŠúKõ;ZGGÇòîîOh4ø¶¹w䦮®½Wž®ùÐh4Ö»5¶¯¯/ƒÁàñxµAAÉx¼üA§j4뺺æÔÖVÔÖVXá{ëëë/\¸€9ŽŽŽÏ>ûlCCCãšOpJehaáH”…«ëƒ‰[í¦×vØ ¨i‰Dˆ”K¥Ò–––¶¶6Ř¾ùæ›°°°§Q¹7`p¹\c¦€Á`&L˜þT·NÃ!!!ÞÞÞEEE<O£Ñ@QQÑÍ›7™Læ¸qãÈÖ™ªÕCo¾:Ä]KÊ{tX¸ðÙãÇO*•Êùó瘿ÐLš57nœµµ. ‰‰¹pùZG}}·T:âÚq»Ó-ud½{÷ê­¤P(›6m²dªA©œUYÙb$"KÆbK·¦· ‹ÅÊß¹“Å€ƒ!¯Y3Ób1s&ÄÆÂáÃÐÖæÐÝTR¤ÑÀš5–r¹Ü[9·:Ù•ÊÎÎv¿B|9›Z­ …(°„Bãè_ÄG®\ÙB£irÃÃg=x`ì È?J¥VWW·ñ_´hÑŸÀ~$tÒ¤Ùyy÷}‡L^9òS__˺ é‚Íf÷Ýwèv¸¸¸lݺu8¤ü¢yÒÀGÁ“9ß„ööˆÂBغ†4GÊ;´­¢H$:pà›Í6¶Ï7îß¿÷t¿’f£¶¶ÖÄÖ•+W>ûì³ö‡Ç‚X¸paSSÓ©S§PL]£Ñ [·ÂáÃPY‰†¨ðᇒ™8p@+bCîWl6{ݺuÚHª!ÒÐÐÐÜܬ%å"‘È„@3òÒ¥üÄÄn FàïßìííQ_êuS©TÄËÑ_äh& wìØÑ»âw\\ÜŸ€ ‰RùüæGÝY.¿r僵k­GÐy<Þ¾}ûþ<.]zœ¡¡‹ÎNÈÎ3ß&;ì°&°X,•J‰‰1ÁÑQ‹šŸŸŸŸŸO¡Pbcccbb†yÁ‡Á€Ãá<0¦777û“cqP©ÔuëÖ-Z´H«~€’’’ÒÒÒØØØyóæÙÒ$m¸ptmýÁƒ*:½‡By{ÓªªnêîfΚ¡‚çì™ÞÏÍ­ÿõ|·JUö¯±?|åÑŠŠŠ‚‚Ô~íØ±ÃÍÍL&Û²¤è”ŠŠ†GóýüVP(Ù­­7ÚÛ`²«kâˆÖ£JqìN¡ŽZ}Q©TÐéô… šõYwwذ²³áÊÐh@ €>‚¤$ˆŠ<“;tèPoª]PP€2®P€Ü|—t—i4Z$•*ok»F&@ÓêÕ§BBœMÙ8Òh´mÛ¶íß¿_ÏwÉ’%OuCÙÛû<ˆË÷ÛoÎrù®]»L˜¦ò¶j5è$iÓ¦M`BïÇfC]x{ƒ ^d;ìè qqqyyy|C•¤cbbP*juE"Ñ™3gΜ9ããã3sæÌ‰'ÒþÂ-¥RÉáp KKKviñ'Ÿ 9h4šSW«Õ—/_¾|ùrdddbb"ºøR©477·¬¬L&“ÑéôéÓ§[ÖmoØÅÑSRÞÈËË~JojØ¿ÞnÈûo·JÕrãÞ±þkVò€ÇGí‘í§ö®ÊdK>lV©çàðS@²ÎxqäÈþVØŠ‹{*a0ê+Wàĉ …B.—××׉ݰ0Sö‚ ,[ÁÁpìtt@G> \.,]j>/‘J¥r¹\,Ëd2ļ¯]»fL=i°ˆ\\\¨T*F£Ñh((ŽЯ˜¯PD–—+4š[Jå/ry¢cVët:===Ïç£:££G~Ú3«ôÌ[èxü^_ߨ#Þ={V ÐÔÔôñÇo߾ݲ¥ÈËÊÊ>ÿüsDЉDâÖ­[Ÿ.Sy£èUrõ1Ôjص œÁË ¼½Fðó{|ÎŽ¡‹}ýõ×?øàÑ“mbbââÅ‹€Ïççåå•””hwÇ?~ü8‹Åš>}zxxøÓhÑ(‰ÊÊÊîÞ½{óæÍ>uù,ËÛÛÛþÌØ˜©ƒNL}„ YYYÚD禦¦’’’¸¸¸””KeM ‹:£V‚ͼuQþáÇ~ NžÔg®_Ĺܲ&???++ H$Ò®]»lYc¹°½ý9G¬V€s< `ÁTxÖhàÝw{ ÑçÎUΛ÷î»ïr¹\x¤üÑîÈd2ÓÒÒú ¦z¶ŒcÆÀªUàî®T*Åb±6{ -Ëd2´ P($‰™Þa½Çãi4š.§ÑhD"±O½U Èhh@ô”æö?ælP*Sù|Ýðy"™üé#ó–¢¢¢Ï?ÿÝŽØØX]YÑ QZZºwï^Ô;R©Ô-[¶Ðþ4ù”~hXëbîî=dÝÛ||ÀÇÇh·ÃfP*•/^d³Ù¨Îhll,“É|rh©f³Ù×®]»yó¦Þ\%‹?~|LLÌĉm6ç<`455¡ùƒz÷2 %**ŠL&çääèw …²}ûvª=™Ä†Ðõ~1½gOE—A³V³üÑq8/•ªV®üÛ‰999ß.X0×ÎÑ¡[¥ÊŸþL;·ü׬pòhSSÓÖ­[‘(Ö–>è-§TW£b:d,6/8xb¯6¹s€ŠYÉ𯓓D"Ù´i“A«‹µeË–ÞŒ 1oo‹ý¯]ó{”ÿ.upø´³ó¾‘ÚLƒÁŠ+üýýi4šérz¦juð½{hãŸ^^;mnÔ:$È‹××ÖjåU8Ü~??½Ò¡Ú±+,^¼81ÑV§eee™™™Z‚n%!ÍÐàÊøùg0™sq æqÙ/cÀ`ÀÇèôÊn´Û1< P(JKK¯\¹Âf³õ¬fñxü”)S¦NÊb±†› Ç+,,,..½·Òh´ØØØ¨¨(:ŽÎœÇã=z”Ãá(•Jç¤Ù¡>ŸòäI½¥z û÷ïÀq þèîîD˜<ùÙŒŒíGŽ|F&Éd<û}2.$íï·^O€ê#ÇèKœ<3Ño¿ýµ8L&3&&Æf稹9•ÏGŽÇŸ 2‚Î烶Æjb"òcÁãñwg³Ù$‘HR©T$‰Åb©TjÐm7ÎÑ1™@ 88»»7ãñGÕê¼®®>O©S\\\Èd²››‡Ãá‰MR©Ô  òד±Øm^^©|>|ØØø*•Jö1¡Á Y¥z¥¦&G§tèŠ#öÒé½½Ïãããëëë‘izNN޳³óüÞgûƒâââÏ>û tŸ-[¶üI:?¾ÿÞTÝÉ 6m*Äbàó¡¡„B¨¯>_ŸÓk4À烮JØÍ­‡¯{{ƒ4Zÿ“àóÁÉ ‚‚ìtߎƒ@ DGGGGGK$’›7o^»vÃá ò¤T*‘z˜H$FGGÇÄÄŒ=zɺR©¬¨¨¸ví2zï½CHHÈØ±cccc{ ƶmÛ …T*µeNš½A§Ó7lØÀãñöìÙ#Öé°ô†Ž|>ß"úä¾9úW_eâp^ûöíš5ktu)í7É4|—Ôÿòký¯ç€½ëƒ$²ÙlT_Ç[PØÔ'>kjJåóQ=QGÇßGöïK mE;ÖC"#áQõõŠŠ •JeìW¯^5k¨ÚÕ%Ôh^wq!/H¬È IDAT98`Ö8;áñçœU‘H¤P(ˆ…“H$"‘H¥Rœœz7‹<oÇŽ…ƒóæÍ³ÈØèéy¤¥åvG‡B£y£¶öT`àŸõ•é1oytg †Ïu±|ùr@PZZ Ç÷õõ°ƒMii©– S(”´´´?Aïè€sçàÒ¥ÇT{ôhÐh€Ãy¼ÏÈ‘ð׿ö/’É@&Cxøã­MM=4º®ø|hiÑÿ ™ *+{“ƒ‘#ÁÏh4ðò0–µ"À‘#é> ðÜsv-ƒ‰DŠ …ׯ_ÿã?´9ôZ+6eÊ”I“&iãÓ6€D")++»xñ"Š‚÷c„……EGG‡‡‡÷)g%–ÍÀ±cÀ`0~~~Æ8:t™ø³ Gá…¿¼ðÂ_t¾X`¿=}"ì_o7].Pµ··Üø£æD6cå ó?«V«9‚–ãããm–¸ý¡P¸U @=ÜÙùLPÐPô¢"¨©pr‚E‹´«ûe“¢Û|# 8âßNNN$é!RPàRWÓp¸i ¬_o¾W4ƒÁX»v­®÷"BllììÙ³-uÞñö^òð!äˆÅ…íí1&ÓÄÊî2©Ú çNÄ➎7E¬Vo­«û²¹Y»&™BÙK§{˜ÖâñøÔÔÔ;v nø³Ï>Û¶mÛÞ]u;NOMMý3hЋ‹áäIÐvÎΰp!LŸ p¹P]mVQ*¨T7®ç_¥ø|¨©¦&¨©ôb 45® …“SO”å¡úø™ MMðÉ'OHk4ÈͱV®;ì4h4ÚâÅ‹/^Ìår‹ŠŠòó󵽆P(ÌÉÉÉÉÉ ˆŽŽŽµÞ€\(ÕÔÔôEP©Ô¨¨¨ˆˆ‹eŠ?¥ Dq¢ÞÀb±¾¾¾ùœýB[®þAë_AÉ£ìÝ™> æáIîf~öܹsÈyŠH$.]ºÔ6'œÊçÜØˆ–ãˆÄŸ>>?ýô‡Ãéììôóó‹7å0Ó,&“Ÿ!/H¥°U ø=8Øàn š”¼ê< I퀀ªŽ]¡„¿±†{ý8¼=r$<ÿüã@¸Åáîîîúè®k ¥¥'Ä.— ½gd’ô ¤ÄÎÑí°8ðx|ddddd¤B¡(..F&*èÅW«Õ¥¥¥¥¥¥x<~âĉӧO Ó‹° O[‹µhÑ¢Þ :rQQ›Íî=Ó‹Çã‘Ð|ÆŒO}Àøøø,[¶ìøñãzëi4ZRR’¥¾ÅGGv.óæ­øè£¡¡ÁpáÂ¥³gÏÛïYWÖÕ•µmJ}xø[ÿÕ+ݘA}~ 9@HHˆeð B¡Ñ$UWç +‚~ÿ>ܽ۳¼reo•êúõëÓÓÓ{çܬ^½z€^‘‘0r$>Ü3SáðxðÒKàî>¤PáoŸ55Àµµì1cpOYVŸ¾/pÕûƒébÒ³<Ñt†M£émßä´ìøBÓÞÃq¾^žŸ¾í©»žy‹“å￘DÒû]æ€Á`lذaÏž=jµZ ìÛ·/-- Çk$²¦·>”Ê×îé¶0Žºw3†äyyyGEý4ƒÁزe‹õúNµHÒòÎçí¿^ÑHd8¬ST˜GÆF§ð`K~‡@?üUUGžÏ< ýKâ$0˜yŒ¶:XGG¢½¾ ºL»>s¹ T‚=¸h‡u@ bccccc%Éõë× 9Ò3”Jåõëׯ_¿N¡P"##§OŸŽ¬³²²òó·!<¯  `Ó¦M(Ù&Þ¾}ûáǽ…æ...3fÌ ·‡Ìÿ¬˜?~``à÷ßM...±±±Ë—/·`Ú@ßÞ‹¨K—þ3iR$”••O˜0q÷á!ñ^ÔCQÊ:”Ò†nôôÜéã3Ä]×=&V­2¸—P(>þÅU« _Ct]8²Gýúeþµ«Z‚²aÃëUP š‹7(¹OMtprô:¼ÓeîT |Ag'œ: Ñhc;°jøù ǹ²>þØÔx>>T*õŽ¡½nnnQQQUUU‹¡XIÍÒQPÒq¹X%hÄŒr}nº#+Ð~‡äry{{û€­–±V³¼oÝúïüùIuu 0béøñöûa>BÒ6¢Ê£M—¯ ¿ä5'ÞØž …B[[~Þ¼yÖ&èbµzÉÇZ‚þŽ·÷ŽáP±ìüù‚N&òeÆö¢ÑhÛ·o—H$ D"‘F£Y@î䯾 ¿üçσFmmðå—ð׿‚õg3ú‹ÝL£m@ƒù7¯µKJ¬•C¹L](R)ºÁ„!ÆýNÛ%(+y-;¿ê½¾[¥n|c—ßõc§;ä©|~õ£lw2»gÔ¨µƒÿê3fÔÕÕýòË/ŸŸ?²œÖ‹ @ûáOÿLÏÕj#èiiiV•“5nØ¥GР»³«ñ]¾W¾ÅznŠ£¬ Nž-½pr‚… aڴኆ‘# XÄ<~†”PX……àîcÆÀÔ©àçg¬Ûa%Ðh´¥K—.]º”Ïç#¹Ö­\ t.™LvéÒ¥'‡–ø°°°¸¸8kÌÈu«Ôÿ·SwV°uOeËZòß“í7q˜ÀÅÅÅJ]Iß]ø˜1!\î-û=Hác˜ë_©üt?ÜNÛ%ßXòhvv6Í“H¤E:N&V"ès*+o>RÎýÓËkXt]Cô¥Kûœ©'‘HŽ€b0°p!ÀáÃÐÙ J%9l6¬XaSÙÀ#¨º¡Z®¹)VÝ“ªï‰›¼:»d˜mÂN3À!ykT&xÚ‚å´Ÿ¿ÖÝÙ7"˜×"G7PGø šç\+]]/j•¤}|øç9G; Wnÿó«S^Mâ* }{4w<õ>Í~¬«H¢¹„ õ…¡—IÿmªFË qçŠÿ^­?ðì<éj‘Dôayýr|} Ÿïè€ìl(,Ôm¦aåJ0îV9\°bìßÿ8ê¯ÅÈ‘àê |~Ϧ¶¶²N&øq3LgìøS€N§'%%%%%±Ùì›7o,¬¡bÝ¡þ“±ö–÷¾ÂÜÜ_\l¿}nØ}]¬ŽÑ_çgç˜N‰D/^DË/½ô’U=P«»ºæTVråo}êëûú0)©˜Ý£X ¬jµ=ÂÃaóføê«žeQðùð·¿õ{¶:5emêr™ænKGQSG¥ ߺóÎÐK°M蔫pŽ*¬á¹ÍÉõ¹²p7Ìæ`磭jȨäÔ´¹9ÿëegã&hWîKN˜sýîíFµ‡>ŽhkO=’»ü×kXµÆ²'ð|isÛ$Ÿì?Ex¬þCè®P¡éâÎR·ÿ÷œCP‹â¯·qšî!|ØÛ²rÚ²rpXÇÐ@|°ÎÏÛi\ˆ#ÓççÝG^ia!dg?Î %“!) ÆŒy:üÅÇŒ_„cÇžÈ †µkÁÍ ZZ °Š‹OˆÅpé\º#GÂäÉ0f Xy‚ÑŽÿe°X,‹•œœœŸŸôèQc»Q©ÔuëÖ1™LÍ; Jôº-;¾p[ò ʱ±ø|øý÷¿¦€˜5 ètû“3”ýäɳ˖­Õþ‹Á`ì¾.ý»Ä®®cwý»(e<<ü­ï²DR¸¾}AVVJˆˆˆ²&=­îêšRQÒõpû}}-"6°®\驇‚Á€­'‚FƒÍ›áØ1(.àƒ`íZèe}X-×ì*ª»*RË3ÖIýz„dz¾æÎu*4Ý·%êÛmê{¶[rž [‡Õµ?70N#tÊuU~uœQÂj¿:N`«Àètž99cQjïº5Ý(“iV•´ï`˶„¸¾èëd%¦Ž!7n]sy"Kw¥‹97í±¶xÆMöîQ[¥VyÑ4Ý«n5šìÕäŠWa¾›DSb üÔá@еèV©;Ë*;Ë*uWb=)ެ@ÇÐ@¼/ Ìp îQÅ45Á‘#O¸NŸK– É$ÏÀAApçNOÑà`;¶g€1r$ÌŸóçŸÅÅpíÚc'õ–ÈÍ…Ü\ Ó!<¦NµÁ˜ÙŽÿMàñø¸¸¸'N(d9GGG³X,ÛœLÇåbc›4íŠâ{.³'ÛîÒÁ÷ß?Nþ ¡¨’’`êTûc3d}ÅŠuryã–³yúáýÜ\ïçæÖÿz¾[¥º÷?}ò±/ÒV}á…¬w·;:žãpA'`0?,°Z¶\ÿ “AnnÏòüù0êÈ89ÁK/üò h4 “Á¾}°hÌž­ XþZÙü|™ºçxžÎÞVm®âfÄõqÚ5w„Ò›u’Û­]wUŽux¢Îkè½õXµÊ³EÀä±GÕs}[êÆ¨Û<Ýá.¤RK™Œ¤Y«æÀôövQú±¯£—¨u¢éÞ5ožØ7vÖ•ègÛ]ˆP¥pxåŽü}¶ô`âëfêҟΟ/¾{ù/¯Ûa$›1jÔ‹‘‘¸uÖ-U“Æç¿»u›¼[m Æ¹lýO–mlÔ"Þ¸¥Ý*µá–×ÏG#iÓHd?ØÑ(ê¸tóñ“@t¡Lð#z:98<Zx{ÃêÕýR€t«Ôí¿^QܸÛÝ.w cºýeÖ`ñ™ ¦óøét ÓaÑ"¨©ÂB()¶¶žMÈŽýÜ9 ÓaÒ¤S&;ì°( Œvrû‰f‹>}ºÍÎDÝØbº‘±ÝE©©ï¾Óªi4pìÐhô?û´Èÿ{£ãr±ºEìàö—Yz>¿Vçè~øïÏ>ûúÿXooƒ1Û6 ÿ{IÓÙÙtùjý¯ç½Ÿ›‹Ö+ íœÚ¢E‹¬—*ZØÞ¾°ª •[wÃ`~ LÞ‚?ÿÜÓÓh0kÖ0ºm àïß}b1h4pêTTÀºu€Ç?+ž¿«ìÀëG»wKÉ£ ¾ØÐ©¹WÓTX#)m–—«Ë]¨]=š†X¢»¬Õ¯®Š!àø7óÇã»X$<Õ×›áâ7ÉÅ—Žqr€ï¸Üs­­°Y¥šÝÝspÀ¹º~¾måœO¿ý¡á2 ùDiÝ› ¢è§.<üméײâ/ÅÌo%€‡]ØÔ{ò½ÒõÁn¯û;¹ šª+¹ü¦·2;.Ý,X3ÏÄnûú&SlÁétú„ ®ÿapk`ÌD›ù a=)î/.–úÙÀ0sg/os{\Å“ªÔPâZ?G/§J™e§òߨÕÝÙu›åÿÎë/ÜcíºzŸªõ°e˃¶h@£Ñ233möàtwv ×íhϽ¢»@÷>±ÇD¶¨ª¶¡ón¥²’§â×»4V;»v;IVƒB¡ÈÎÎ.((@å8 FRRRxx¸m¾]Ý(jþç¾öÿüÞÝWê·Jþ¿Äó¬¨MW*aóf£eÈœœà£þŸº¯)n”ö^ï}l÷ÀÜu{{/öÍÑŸ^X†£«Ú ½°.à:5TUµ·_zö/2N„¼¹1ôÍ`ëÖ­È nÆ V*ZtV"Yò𡪻{8t¥Þ¿'ElútX±b¸Ž—5ðã‚+…À=Ä8Näw',û!iñkxÈjå‡:(ÆRÇ12ŒE ÂôSO¼U Èhh/<ž=f Ù<ßÉæk…ì}ûàè9sWµŒx¬&rêÖ¼Å$¼äÜ/¦®äòë¶í»&lúefäåIcø´>.ŕѣ§¹Ù(·iÍš5ë3#˜H³ç9z¶ý×+ÊÊìH’óŒ‰ä +ͪ6ZTgÏj »]ݺ!²V¥ê!_YÛÐUViLE£?ô¤8à°*A“Á­„É£Î~þô5î2ܿ׮AU•~lïI:3æ)Sê9ššàرǗtäHX¶ lEI‡3D"@p±U¿ÙÝÙ%ùòÇÖ½ßj‹Áõ†Æ»I3†äFzùyòÿ­°SGSU55P^"Q5ÈÀÏÆŒ †‰ …•!ýáׯ7v5ùzùý0€Éø£[T,;eÊÄ÷Þ{{æÌ©z›?µÝMP[[¿ƒÁäåeûúŽ2¸Æbèj‚Êw@ô;t«ð# àMð¸^çêöÎÛ7V½ •Ÿî÷[žøí±žZ*QQQV"臚›××Ö"‚î…ÇŸ Frs{º»;ôÇqR¬ìÎ*Êe47§Ù>®¡n›éE5B±¼JÔÎoW U˜¦n\#±Þ}†"¡V}®r©HàßÞŽë wÇMövcÄ0\ýg›®ce¶yymiá+• Je¦P¸ÓÇÇœOyL™>5&¢ìþúo¾ý–×ñS‹õž~Ðé€y¯ªkGñ*ûÖw:¡¦ÎW*ÿs*ï\ƒðüß;ñfýGG[>u$I$ÛdûgÜ=y{ò‚þú6ÈÎîÉWFˆŽvxþy'77]Ê©ªmPÖÔ+¹uw*”•¼®JžAqªiÅjgñ=M{‡Yc†a77ˆŽ†èh‹¡¤Š‹§Ò*•PR%%àì cÇÂäÉ0zôSV*{fêèô¡±„à“O'é@K ìß«VAL üoƒB±]æ†üüµ¦-{Uµ=•"pX÷—ŸÇòíþZ¯~³#+PrègÉŸPZ‹F"kýèˆä량+æøÇj,…Ôï'°© ª«A(„ª*àñŒ*[ ‚Ë.s<• 4C@øøüYçµ:.ß4¶IUÛ âòñÁ 0ä>ãèÅÅw/^]_/€Q£¼ýõ‡1cB,þk<¨ŠŽž+~Ò.ÙÁЍ¹¯¾š3Q£Ñßùâ‹ ®16"é7A¿½ u½èÆFðû¿ÁüÒ«‹^h¹ñ8M›r”€,ûÁЬ(ùYSS*Ÿº¿£c^p0sX–xÿýž†à¥—Ì÷[ü¡R´þn‡ÿ˜ö¥’dL÷5_\]S×T#W6ˆÛ;9mÊ5¶ œš]d/õ Ë!¹Êe¹¤š‰“X.#­Õ²jn~¥¦ {̘þÖélçV?<þÓExf%‡¦]ï¤Q'yÂ;ã(þ.úœ¦º«ë‘è\SsAg§ªW:&_L&Ë5šÃ½*Ôàò˜Ì8+”ö0†\¾|Ùà¦ØØØõë‡qjFW®ÀéÓ甩TX¶ ÆŒ1+ü¦Rw•U*¹u]•W(`֬β3kA710¹”=éVÖ¸!Œ}ººBJ§¡JKáÜ9¸t)XW( 9rrÂÁ„@Ï<Ó¥œñÁƒ°eKä]#F—M& Iðù‚æW^o“$˜LÁöãpD„Û5ŠÚÌ7‡4ZÁ @¥<¦å8|~þ9Â#{≛0ƒºñaÛ¸ÛðÆçõš4 &xò>ÁÂÙá 4ÊËÁlBçf0ƒsoŽùËÍ~—q1 IDAT‚PèB&•Kg÷Žc&È“¾%ù • "(•A#Åæ¾âða8p ˜'#ÃØ±0bD£É¤Ï¥¥PUUUPRÒH=b1$'Cb"$$ü%j “»éÃïm›ÿhYCÈÈê»ûóœ¿#zô³g÷ß~û¬kZ—è’’Ó?)ñëÖ­Û8cÆC‡ÿ¶Ýnw¼óΪY³9~ü÷®{Ž’f:8K®óôè¤ñî5_0<^¦Ç3žBí\€Žûýÿ­ªúîšäà6.wsR’E»WK·ZaÇŽàß“&µ=ÅäPA¡y¿”²Þm<Ðfxìñ^«ˆBÈ©do3VÈŠ“pû¦ÆQ©B€ÄÖ'–>ß§ÞòÄMo®9G#U(&´&Úù¾ù‚˜Ç»ýF'Y,Öd>»Ù˜’íî(ú¤`XÜŒé fL»÷À¶Moí“¥<)`µnÄd ¡SmQø`–[<áØ…±,vÚ3s[0á Èm]Kœ7 …B±bÅŠÓ§O—––@rrò AƒnhùÞŽGI lØõÓ :¦O‡aÃ:qE˜{ïDÇî£aö2€ yҕϹs¯¸Ÿõ–Õ'¡âjåë_,_ÿB¡ÓY}˜·`ÜÊ¢yw ÔTHM…Y³ °΃‹г’ᚆ٠ß~ >Øpó]®†Oûgø³Âr”V­¡è* ©ÔФ>z4gÙmÃn» †¶>/ÙY,`2A nt»á·ß"N»á—_`îÜ¿:wÏ5®ø:Ô„3}¬hɼ¦OG¶m sx±î¿¿iM=ðùX©1¬gfâC•þ«¥(áE°k-Ù pR)(•˜ E ¸¿QŒ #G§‹§[T*¤¥AZZÃX_R*U¸‡ÎŠIt:ÐéàäÉà4/* zö¥”ÊÖUìÊ uuÀá@Ïž0~ü eå}å*óšMömûC‹ZP¨˜ß‡‡·n>GúÁóõ½ÝÈ×¥)ÞtW@Ù‚ãxŸ>ÃCµ.¡[ Þª >þøãþýû·ëJØP“Eiöžèý—aáõüÒmÛ¶1 ‡ä (ïƒHtçˆÑ €• ÆžkoÚHŸo©ÛÝ ­{8!«®Ÿnüx?¥­BòŸ.™¾Hh몈Ģº,Q.+tÇR<|Ô/c@ .æÑYÌë½+wïfÙl`2šK¸(IT´X€aœœ2Åsãetr›`¹ßw¹àxNRƒ ‡1ì0†]EQ gañ°ƒgë8I{FÎ -ŠÔÿjþ#‡ö î-pËôíÈÖYù|ɹ¹Ñõ[ŒÑÑWo¹ÅufwÎÿ~g÷Éܘ–`ž§/>Øó f;ãB óXýr9Å¡!bžãÖ OFª·GœŸŠýåî6B.ª¼\¢V#ñ÷nZ†ùètðÑh†€—Á Q|t:‰aàa±üJàHÇ{?Ž4C²ªzötðù4·!ÌãAq<ð7ÍíFH’îtRü]Qµ×peèP³Têûë‹^P³ûË¡Ð÷Ñ—c™3ÞûP””$çæ†ß %oÔ(›PȶX¸&Ëbá ,›­å¶í³{\Ü’ 0 èc‰Ž"»–¼Cqœi· t:¶É¸Ú–ØF*Õ"‘Xd2‹DbB/óùzçä¯)áf³¯dg[oÀ"­¸š½÷4ûèE1ÁôÅJíÓouŒèÏÛ~„÷óŸõ»|‰1Æ'gÔ÷«í .,Z´¨{ùºbݺii)­îš2åöŸ~Úêóùî¸c\s[Àï÷õUƒþýûwD~r5x#»•IR&Œí¸™ãôz=È$z‘@b4A°vý1hí×o÷á&Ééee{®ä{\*ýP¡À(”n×?@uP.Å~è¡[S[·gvºÜßí½ðCÿt\KÞ2k®Ü'…)'NÂMSư˜=n௨¨€Ó§@(d…)œy¼ìñã»&3æ¸Jõ‘V ?ˆDO¦¥µñqã~ÿY§sÁ°ËbQ5^î/JëQÚ«çp‡sÙož÷øãÖíþÅ”ô'SÒ{x-Ï+„sSùX÷kVÝ7"ò=99°woÊáÀôé¢ììA7î2nKhî³—I‡‹žžBMM·› p-5Íyðt¹Ž¬¼mG`Û„Í ÈÖ™Ã2;Ÿ «ÃçƒÏ?‡ÂÂn?«@‚b§zÁw€lˆF!ŠEဢÀã‚ ,[ÜŽ•#v=5Uñøã­÷f½»Õ 8ç¶ØlàóÙÜëñ4”Œmï< wNNðe‰@¡ÚüEGÿ…2ý8aÛ¸ÛðòªúdnTÄ.~ˆ÷à´ÈV}uu°m²hó\—ÛÍa±‡°Å·°ùýiESåˆ\:»eçq—Æâ'³©RÞ® ŠG¨éʰZA­†’¨¨•*l­ óùÄX£ ÓA.Šp’“aß>h ЀápdæåÁÒ¥•áÇ ×‘³æU\ÇMèi‚'ïcO|^cF“o<ë>•G-´4%-=õzêIù›LwÛTÃÇk›ûo'<)ôêÕcݺOÌ„TQ EJ¥R33û®]»*`&£ÑÔ ~9²3 Poº¥>®+gT» GØÎL€[vÚA#9‹Å²xñb§Ó w¸{ëý@òèÀ¯×È'OºžÛh&ˆ‰W¯žt3^ŽŽ~5&¦;ôv¢Ÿ/(ÿìDÅOܳurq—÷üwí¢RR«VE–÷M˜S¦tÍUØI2õòåZŸ¾ŠŸ'‘´|ðv³ù³ùÍfnB·0d8›};7»¢Žxb…¯\EY"¤¯»íÎßGÞå`5ÈW¢<¶…QÄÓC9ݪïÑúÞ<§=ëc@ÕýBñ9ã&´öµkáâÅF…Bàó!„>‡#`òän¨µÅÕ:ûæ?œO»Ï^®Ïfk4:ÄEsïÈ?ô/¦„Ù²lv/— õéõLføš{@›†nÃb˜I Ï2âG~þ9BÂh ú÷‡ùóoòmQ*á±Ç:¿e”ô|Ö@k@/d6“Û-µBR)H¥Aø~³Œzš×ᳺÅï×W£`(ÿÑYüù3Ó ëï‰ÁgÎxò.~¨*ÄôP)3>éÿ¤J¤é/—MTn*מa´Ø7ÿa\¹6Tª°™üGgñæLîÜòõlj5¨ÕPT%%mM5¹sáºm¬I‡Ë¾ùóšMaußXc ž¼¯n-mŽèÑi4꯿î™4é6øõ×=4Z'·û0ç–ââR…BqÄÄD•–žmyKç„l*xj¡â£paz¢tX¿~} ‹D¢‰s¨°9‹Þû –¿+=2Py´c}\IIÀå>T(ÉdÝttl›!ºÓåþì÷óßšèQI kpÑA "µ¶´8&™lâë2ýâÞ‰‹§uÝIM…)STõ!“Nh§¶êz‚ƒ ÏÊd‹kjàÿª«ÿ¯ºšƒ £¸ÜryÚ5ùuÀ6ñ7«õ¬Óén2© èƒbñX.÷6.—j¶W|m[¿3Àž¢€Ü2pàØg¦çœ|ïœaë€;H½ŽÎ}Å lWýWà~idŠ€Úíú¹º×ª( Àqœuç9׳ÕÖ÷wí{±m[8@“)˜êPï¾»A»ÙÍ“KOÍ<5§ž\wþyÊ{¥¬ÄWךV®5­\‹ÊDÌa™¬1ƒ™·fuÀÍ «#9¹%Œþâ‹ tѕ̘%%Ê7"LžÜÕ·eÆ èß?¸æÃfCZdgß~:,Q–°€6Žü©ØX¨©‰ÀŒø|PWέòxAÀ*•ÿèÀdÃl†‹A¥:RS;Ü·ãjáåUŽÝGë¦Ø£ˆ¿‡*åCi!œ; V+X­`4‚ÁÖÞ×”Ðôá´±«ªì[*cžPüi¡î+‘ñùÎâ=8;í€ñÝoF¤Ãeú`yõOœéc…Ï<ÐBñã (A„íóAECI ÔÕµcí¥¢âz0:i±[¿ÛnùvkhÑ7„Í ØãÜ&¢uýÂ…ü)Sî««Ó@llôîÝ›ÒÒn`íèaÃ&}óÍÇòPgÔ~´¿‚ã 8ËÁ£à¦CÆæŽ½råÊòåË?ûì³™™™¸Ã±oà¯Ñ×*và´\®™eeW¯½Õ­’©73Ú`ˆ¾ïDÁW—´¿ ’Ès‰E?—¬ydXž ñ»o|ùfß©¡Ìî½9[?Ÿ_Ùå+ï¹¹°s'èt@’€aP„§¦Â¢E]v ¸ß/Ê˳5æÅ1 å}…¢Äí>d·ç»"8dg±Xwðù·q¹õÖ+ömô/¯ªOWGe"Ù‡/Ô›ùqüêá“-ÙwK øQ ø.Û“,ãÓcû™ÁÙû!¾§DWiõô°g¦ŠÒ¹]¯ü[•mj®§©;'lë埖ÒUÞ‹V+,]Ú’‘ÂÔ©pÛm9·`Ï…B×á³Í‘ë e îÇšÁ–ÉÈêÑÃWë¿ñ^¾Ja³˜C3Ø“FÜÒîw"§v}µãÂBøúëFy¨t:<üð?´À§Ç¯¿9•vêT?>ˆ›kkA£º:0@­n«› ¤ØÅbˆ±D¢–èösç`ÆFˆ95æÍkÖ·ZIu­sã.÷¡SBblÊÀ0ʦAÛDü{½ö¼¼“‘[1B™¿â3Á¨Ñ¸Íν9Æ_‡5R0”3cA.áE&„²,ª3súvÑu\¼_~ÙìÞàᇻò¶à~ØVã:Xf°{ˆ±‚{’¹ÑôëšÈuǾöÍFKjŒÏaOÁ–J®Û·Ð=ýNhe%æ°Ì¨oßèê Jf3|ôè/Õöî óçß„Õ GåO‰‰0ltçnüFGI |öYøÚÂС0{v³Z— t:P«ƒ¨]¥ ò&­F@$ ÚE¢ è9Á à³Ï"œD©„gži¸’€òÞd£ìvÐéÀáþ·Þ“¾½Ád‹<ˆDoŸ>„åžjîÀÔç—M½{v‡ï´ëx®éÃïÝÇsëÙýÀû(\üÐ Ut\WÔÕÁë¯7»—B~ý`øpHKk#ýá+©4®øÚ±7'”q *‚'ïãLÕÅæ³ÿbôëa;ƒv»ܲ£½TúÎ;7mÚ,kåÊ•¡5ÉsfÍÑ9ÑãÆþá›ôÝÉÉ£n¶ç]KÑŒ!úoÇ.­)0þ)NuÓ©<£,uúkŒé+ýË´¹ú…Z:^y¥ Z7I óòÜ-ŽF™&Ü#çpšºp†¹óbr©ôÃXc·ü½–òÊUÛr>¦«% hñ“d¤¢NÊl‹wÄû¶ªFçpû@¥5;}8Ž*³ ÷ƒ'4N$Åx̓Dƒ0p?…  —¢Rüͨoh¸Ï3½Kä.ååpà4qch„9˦ÊMŽÿ­ò ­¡Ar}î÷RÑù};ánê›¶@®==•=e$…I7¾þyˆÈ—úq¿‹BA¹8c\ Á»¥¯|çêëɵêHx<°?=§32:×òò߸®IËP\ ÄÄ@v6d¶2šÍP^èõAøÞ‚Ww£ÆJ±¸©æ¤!úô ìö d¼-“ý2D"àp@ „Bàñ@ ±84áaÉÃ3Ä—/5wîc‹}èz '{.š×ltì<†Ôys§²§Œêê·²-ñÉ'­ç|GEÁˆ0th †ŒÎ?O5M edõáÏŸy³~xGôèÛ·ÿþðÃOY­¶@ªh§çŒvëðù ¨(¨EK˜ è> œà(툺«í§±X,;¯¥ÌO™2% @úëÿ;tÛ~¯Ýw@½ë÷6&î·Ùf–•2ÿ0 ¥»ô&†èâüG¯ \1 8æóŽÐ•ÌKbÝ=¡•šök0cÆÀ… P^üôÜø²ó\®zþM||6›±®Öé—|j›Í9^üæ“ma4ùÊ„ÿ=“ðœÙúÕ÷¿}JK*‰í:¼¨¦KÿÌã`Pcrºp'IÇI=¶f¥P=f`°ÀNc_S:a>êÚ  8iË ¹¡&q å¹sPPÐzΓ¢ë¤ŸvÜ?tgE5CØhnFe,(#È좮—(¢`(=#ž‘P®»ŸµoÙë:žJ®{òK ë;zQHsŸ«,[{Ї^-ànÜ͛ӵ l:î¸î¸ã_HÜí‚ǃéÓ¯÷$A8²w¹@¥ƒt:¨ªƒ!rQL§¡Üoĸ|¹—@¸qƒ€a}R©éi ÷fDS\Y¶ýçõ¶Ã{Å:] ‡¹¼žNx2Ò¢¾\æ+©´¬ûÕ¶~g`Ëu<×u<‹‹æ?rïÁiõö/žüË›Ýç €1 7ÿÑ™-ÔʸQqÿýÁPbbluu°e ìÜ ƒÁðá¡ý­'ìÛX¾Üì¹ÐèRBƒûu«iIë<:ƒ«ÕŠD©hÎbÅuzÑ®™‘´;JJà»ï ÝÒ0HÿP±0à·¶'®^½úĉ P(–/_Ž6á2 –¿SòÉgÀV&Ž9ôiæg'I=ŽGcAöÛlÓKK×£©ÔÉÉY,V·~ß~ ç΀/FþË  k+‡$=¦~õÑS[>›e¿oX”øhøëFy9|òI€™?ÿFçžt8†5·w×\m#ëwÛ+¾®GQT¥Búáó[ß$=žµ›>OI6ò$Ýüáô«Ì¿øxg«Ÿf—×Ö¥m–.m½àb'Ås¿å¿OF–eZÕçï»QòSO~‰ëðYÇ®Ãî³AL³·Õ×4=ÒÍ`Îp§È¦MÀb$ˆX€Šø˜\ŠÊÄ7ÚÎu<×uä®ÖR•±ì‰#h½’þ…ÇÝ'¼WÊ£…Ö+éê <ž d×h@§ Šd<í¾ðx ‹í.¯u>çQp‡pû€N-™Ç{äî6Â>­QÿóæÔ‡ö *ʶÑóÆž½î|öÙýtÊýÀÕ:ëúæUBWÃP™ˆ;{ÿá»\ÇsuO¿º‹‚¡’•Ïuõììvøå¸t \.@P*aÖ,P( ¼N‚Ó§Ãbr2 N¦ö°ýrÀôá÷¡UB)ʽw"oîÔî`NÕÅb©Õµàõzss/ÅÇ+þÝCU¬^>ââ`Í„áçÁ]šŸ@ñH[Δ——è0wî\4RÕ€”ÿûoå†M^£ÑQ^qå÷û¼òRèÞ .×Ó*ÕI‡ÃM’éÃ`\p»=$ ‰4ÚÎäät&³[ßÌ’8wî 0¿à¥lH«÷H Ä$“áuM1Ïí-?¡õ/X%<”J9öîøùgHH¸¡Š— &“ ÍQéƒ#iô}å*í‚7ëaðœ&^¶ Ãx¡Ó™3á·/n»1áuñ]Vxœ,ÂRð0ü$È0?F‘²h(dbºÿÄå5iãÈH9£$Šín§3L † e^Za±[ €þýA¡€½{Ãù*î¿¿Ë:ÐáÐLe Üè…ë'q¨ýä…L ±˜æPIOO¥§§ ÎÆ«k]Çs­[÷5".<3Ü®_9–»?X×t*¡!¨òÐ(1…ͼNïÇ í‚7ìÛÔo1­\+zqžà©9ÿ‚ã›–¯ R¬ñC¥+Ÿ»!~Aãm¹¼™bµBY|ýu³Ënññ0r$ˆÅÉx Áu<×øæ¡ý*gÊ(ñk ÛbkèÅ}¿þñ[îÎ-ܼ\ŒÀE¦¯ s|bTIQX¡(?…Ø"*ºrä±9¿e¿Ñ’ ×;ÉÄäRÑóóçÝjÔHhæ×[Öl¿æ°Þðéž~‡–ÏܯK›‡s瓘ÌAK Féôé› 6ÐꥥPZê÷Pi¼®€¦ásøógòfOºùÖ“-<‘VP©òn¹e ‚ NâÀ……'þĆ ‘)1µT2ˆ«õzˆ}°UU:AëÖž!C†ôêÕ+âa4‘¨ÿ»ož™·Ê¾Y§|èV\p.tÈf›XZZÂì$yêšÇb:“¹-))¥ ‹®Z£å»ížs@Л7gJ«ý¦Ïã]¿î÷u “N¤d…çýj¯> ò=2®¿€7êoÕx&L€üü ÛÀž=7Ô&‚ ‹d²ˆ9£ søñã„eõO¦¿¯ÏØ£§§JV>Û)‰üÉ~g {“t•|Ü ¯åT?JJ‰a[Ea³¨˜B&*Iˆ‘P©€@Þö+¹c@²ë•o¾uÓ]ùŠ´´5?¤úoÏJéàïT©‚…å›ÑJaà@èßäòàZv¿~‘ùž. -ÒlU]?Y#ê Ð¸$–j±Ç¦À" žÄ)‹–(döNˆŠ‘ò¼¦elÔ¯Ä0èÏÿÞÜ1N¿é»Á2¶ÂöR¸”Õcõr]¡5†’^MƒB§¡2%¦ÐiX\4* B*—ar)*â##mÊbj¼aÙ±ÿP2¢cz)„Ç1•fÊà7¿@øÞƒÓà߸yaxó óÇëµ½95WÄîZÓE¶ž<dd@JJÐá iL™½{‡‹¦¿·|ýKC·<¸ŸäÍ'ÚÂ˞Ϳ¸gËzüøaŽÕªE#ÄÜ»oêmï¸}Jž¶hÓ†©{× ­ÁeϪÅ¡‘L·Ñ÷î¤ù¼IòsŽl9s›:sþcO ¸×»ìPoÔhÛ¼×ôÁº€Q£¿ùEBãʵò-Þ„¶‚ ‘)0:²³!;JKÉ;)¥W)à”†òS%üT‰ÇæÃ{õeλ‘ŠºùëðoÎh3 Ù+¯47´0ð"@Ï·[U¥‡¦Š._¾\*m©‹9rÇtÓ¹\Þ:|èÏë@ã}¯\©ônpP´¤wïè.´ p>[7Y¨Æa3£¾\VoÏ'óJל®ÚMÕ ýj¡Í4ÁQùäàøì~Éðwü|øì³àßÏ<¬xc÷û§—•í²42ÖÀ(”mII“C2|%•Ú'W„Ò<‚…³EKæEtÇë@ßrŒU6 „Ì .™Ãw]oèÒhV¿¶f]Ê­ÅIý µü“Às{ P P’x U½rGF[K0ù|PZ gÎ@~~ä´³ädèÝ„æ*Q7å{º0²?=|*¡X.¡Í$ðØã½ÖxÔ'¢Rz±BVœ„Û75®-+`ûóÒ³íÎÐp0Y^:Gi€Ò1?F%¶D#ßv >•‰°øÒhQoÚñkª‡éjTÜËϪ`']ØÖÅfÿF}xòKjÆý74y±>Xã‡Ælx§ë.E§ƒ÷Þs»Ü{x‰§bßîTeÚëB³½›²Ÿ#ZüP«â–mí¶m?ivÿ*Ô„ ßM1r^öˆé³ âz¯?m{µÉ¿Sª¿Ä·iô¢D3¿P胚 #xkßx‘ñ\½0ÆÆ yùÍ ·ŽëÄ;aÛ¸ÛòÅæP£ÆpI£Jß_LM‰Ç¢Ä¨LÔYcÊu†ûTžqåZ÷ñ\n²˜§R9ôðÉØðáÝl¿}³Q뿾.ÍDI |ôQ³{t¶ ZU¥ëtº¥K—Š=ôÐCcǶRÓt.÷èÔ™~€!?®“ùµ^ÿߪªæŽ¿Ô«W—©\|å*Õè‡CÓ‚/'†*þü6TÇét¹¿Ú}þ[õ²TI„{P‚¨-¹?ŠòàøŒN\O¿¹aTWoùr•!ÿ¢ßíf*“FÝ37sø5·Ú~€“'¤Rxå•íñ‘V»Áh¼àrj½“q­møqÂôÁ:Ëš ôyFšdÅ¢N÷Á}êÕoVe…ÏZQÿFµoîãÿéú§£Ï9˜ô dŠe­^¿÷EVºƒL­n©ünBJ²¤y4fµBa!ää@EE„U5:ÒÒ #ÒÒºR¸ÒÞØt²d~ÕÊŽL­%×–ŽFlå8U…±ÌtV?ªƒÌ£Ãã0 OxâÐSÄñXqnš2¦þeW™ ëï¸#ðNž£¢˜‹ÉôИ~ …‚1Q¡’ÏC¹ü'Áò f†‡é`C_/ÛÁTgË<ô wö¤îhgñ7 Âhñ;\¸Z뫪µ®Ûá>•Ø^¬H0qx=T•B{°„`ÑZr|—aÁ}gŠç#Z^€›®½üãÜ! …HECyN.~¨\p“– IDATõ¼ÝåÜóçÞó[\ “›»X,Û€¡Ê‰÷H{gÛq0ûüfYãö_¬1ž!š]¿Z ‡2¶·ðhÅgo‰jüþ½ûÞ³äµþ=:³‡/“öûÚôòDhÔ¸hD, &ÊQ±‹‘R“ˆˆß‰&¤Åîhôø|&€¤ZP¥¿ûî»yyyðúë¯GT¢‡ÅÅ–V¬Û̘˜1Çö?a0|®×7wð‰‰sD]ÄMÖÍ_fßvàJ|Ò×ã&]HJ€Œ²Âyû~ëUUΞ4"zÝ[p8ßÅJ0q9HD53*Ï.œ=¦Wêß*™áìÑ?÷½ôµq=…¨{çÞÿôKA„·lY0seÒ¤›eá>•§ù“úÞŠ‚¡‚§>3÷F@ŸÅºdÅ÷«³¦»éÁ‰«Ì ^^}ø‘%ó)X·È4È=zî¾|ßEÏÀ¥6ãWýYSûÄ„óg¹¹› *U¡¹X ýúAïÞšÚ ‹7šó»|n½°•ÝhªÜXÛM9rmŸ‘Ù OЇWjôå5Æ­Uçô–:‰h€¡fñM,aÄE’VCh3‰ÝÖXŸ=ý'¿˜wºé1~ ¥ð–‰b®×j& zÄj¦9¬6:åµ!ìlŽ—J'P : ¨„ß+Ò7ë|0L0i© ´4%5%žÖ+‰ž‘ÖÕöí7/ü8AhŸÓ¹ »„Ñ‚Wiÿâ=¡5àZ#^]‹WišR?ߎøùä{Œüàè6ü≷ø2ÚhèJ,˜S¦}‘ôbáïøhGÍ®þlÛÊoC‹†²Æ –¼½(´Ng­‡tPë!Ý$¨\dYî‘Ú}[dùg8ŽF­šD« =ÎöŸx©çTœÚqê !}ÙçÖŽÍÙ³YëÏ\3ì¶ì‡ž¢LÐ(ìz«A×L^è>•§ã Öw!¹'d”Í9úgÓçÒBÒK¨ÊX,.ñ¨J*a2¦T´kH²ï<¤î½ÐU}ÁSsOÜgûn»uÃoõ§ÀÇ?Tøô Ò#ƒΜÇÃË—ì³³áæ%øu£‹D©FcÉàÁ·¿ýöÿFŒÈ’íöÊ¿9F€+"W¡€yó@vJß IaྈTz^^Þ»ï¾ø{Ù²e))mÒ¿ú,Ö#Æz´:èùÜ¢/îñ‘VÛÜÁ›“’fÜxnBkô–TÖþç…ÍýþïÁ'CÇi” ^ýáÓÛ¯äîù¿‡71äÑ) Tâö‚#ók/L"MÔ—–€\£Ð¨*¿»w2ÕÁ ºïK¯ß>õ€“'ᇂ3õ^¸¡*dÜëÉÛ²ùÊÙÓL6wÐw*ö{¼†7¾°~óKý@ÂÜOòö¢m•ueÓ¶C—«U ½mx¿¸1·v«ç¶;þûÕŸëS†[)I,ÂjߞЫª„S§àÒ¥5 uªÓÓ!- âã»94ÄÁRýôóN #¸h °’k®žKk°½ï}õ»4Õ ïoû9«jtUuæ’Zs‘Áaðú«Tô:·Ž'#Ð6¯lGÍË«faD¸’á— sÊzξ‡aM”ò¢„l¹DÇ¥GÓ):mM®NoÐÕÖ¨|·¹Nã2q«lVÌdbØm4Ÿ·ÓoÉKžšo£ÞQ™(Öi=•´^JZZÒßh'Œë«»’;Céú´·» ´F\kÀ«j £ÅWQƒWi­×ñrUDùJÄX>ã?k'…çðD4?¯X"7» öüár± ò˜5ûÀ/½*+ |¡ C-R©W™ ç <T‡0<6ŒaÃ×¼vðùõ™—GëÃÓWÔ2ù¹~cÎdüÇÅè4¢î³M8ðÎÐóÖ“ô.ãÏ!ÓO z˜‡1$™ÂF”\š”ËHa!Ñ $šNIa£mDï¶Í{·|ºíéÇž·pPÓãzÿów¦Ji(“á«®% æ€x½ŠøX|L ‹‹Æä2,FŠˆùÔ¸˜0í™ã÷£uü¯i‹BØÌÐùC¹s¦Ü:w [>ÈÍ…#G ¼¼ñM¤Ã€0rdg u£oÞüëìÙóW­zkÁ‚‡€F“{½ê¿?F¯ª‚>ˆ°À-Ák¯a3ã·$< O4yú¾¥K—ªÕj2dÈÂÆ55[Žê-ÛÎ?þ4`l¶{ëO3š_®îÛWÑ©pt¸ð*¯¼Æ[Xæ+¯Á«k=ù%Ìî¼Ää™Kß‹8Ó|/µ‘Ì+Y]z¯®há’Ük?¦Ní܇{zÇÏgÿØå¨®DyüäÁÃ'ý÷q*³KÝ'ß^ò$öçw9ÄÒW?üÏêÕPP– Þ Å˹-[ö|úÝåhèž©ÓÊè ÒÖ÷V¢—å?:럵‚_Rì•JHN½ù_­Þø‚ Ëtm;³¦pKñÎ$Oãb™T*$'C¯^ÝŽêß7}Búì*øÞE\s¶Rž»nlœ2Q~fý/ǪLv2%ô[§Œ¥õè¬/U׋ª´ufg©ÑqÕNT㘑Bm ßo=ùé”ýë!Ä•B#‹Ú5úþâÔ»"¿¯CDÁE©`Rbl—!ç28Hhˆ‚pI—^«ÖÔÖhë4£Áª×ºLŸÅâ·˜P›õxYvÒþ3n:ÃÎæÆbáX´ úª]2[£±€‚¡´´$Zz -Mù÷ ÚqµN=íÉP(tZô·o„fXv\­Å«k ƒÙW¡&f\­óUi­1bùªÖ9`>áq°(1Kb“'?q Ptþ+\M¨jqµŽ0[M—•ÕHbe±­ÌF[jEAHz‘à¯JÍOÃ(T ¨˜ƒÎ0³y@?IRP(”ZŒEPGx=X¹ÇÕÙç·§T‡5? —w©ç ó}﬎Âgá«AhÕ3Ü.¶ÓÆvÙ˜'×fØ Uò”ßGßÓÜM:ø³™'ÒJb¬¡VœQHŒE“|Ø·èBýa&ž`ã´—Êâ#Ó%B­ð»Å¨?‘AQòi=DÌh/šNId! ¤¿é™‡-.Z8ÇŒ’Äé ¸%AÒ5-‹•Y×í mΖá>÷þ)‚÷¶é­¬«ƒ£GáܹpZ=9„Aƒº2‰è_=z;ø0ô@L¯k¾ Réîj£÷yëÖ­[·n…¶¥Š6÷ßi¾˜–Ãæ.y6â1I$ŸÅÇ_Ïý!-vO~ ^]ë+¯ñ\(ôU×âUšæ^¡½˜Óo(-š„š|¨ŒM7ñ‰×í'þ¸ÿÐþŒª*é€X^²p§¯æd EUÆbI ª" ‹¡*c#OmÛFùìcÎÓ9øYô¼5߉ã”Û„¼¸¯¢¦º¦VípؽËnsÚ­n«Õ©×ÒsÏ0\®æ>hRÄûi4 RQ.L&?‹Æ©•Eñ%ÁÆ›  R¡P&êˆwáÅ?þØóÚ3h“¹œ‡-½'ŸBñsX¦dÅ¢–÷³N?ü¥¥ [âãáÁ!* h›˜ÿÇábFæöØ/³èV]ùíóU`2!;ÒÒ gÏ¿e»Ê-óOë5,Qý+ùŒöÜ«§1è7ë’®VÕV×™¯Ö™/Tjd›_g»œðË„‡ S{©'+(×umt¿_†áÑ4 ›IOd£"¦Q DÁD$4 ¥PlZ³Å ©U«*+mfƒÛjµ\ ôMž{„8;Ü5±BòK!ð !UtîÜ¹ãÆµ;ÃÚpêÌñ»g’G—¬\~¥O¸cão[R£=¤,®Öy.úÊU¾ µ÷J™¯¤2TËÕÒ–ÍÄ•±ý.?~×ïË3 ÕïÊK¾eò«.·WEÁ¬c{'Ÿ‹^Gx=.“Ñïó=x}˜Õ‚ù<(‡mßÄ€Jó°X€s8~:(|!B§¡ &'*‹Åˆ J®À¨Ô³+–q¬¦ˆ§ŠÂ”Sÿïqî½ÿYô¹Ýo¼Á€…N‡ÌL¨ªª/"èq{pû®õŸ€ß üŸ»lÕÔ~ú—ûÑfŸÿÉ=E?’’zúü–ò‹_– œÞM®pÙ 9‡öÀÕ„_Ý÷ ‰4Üd„$g•ç`~ÐûüZOOcÛ8B¿ÓÌbi e *%š$2›¾:êå™L·;ƒN£û1”ét¶Bp 3ODÒ¹,_³D;CÏèIM‰§¥&0²ú4çÁŒ«uuó—Õ'J=#-úÛ7:ݳ9@pZépÒ4I‹°Ø Ž0[»ŽtBº¦0AE|4FJKMhYaRë! íä Qd'Nšð«ÂNüÞ5©±v ¡\ä²246…ø\âÔ–Ÿá”›ˆ³ ‰IŠc'ŒŸ”Ö»ci9î80Û]O“¢oiîŽqqÊ>”H­Îc4z&—Zóí±=èù“ »¾Ý'õ5ñè$‰&žØ ”iÅòúÞ¯ÃÁôº¬wɯSñ–±€Wkp­‘Ð#f,4ÜYd«—^×u”—CNœ9.£HO‡ìlèßÿ†Ú?´£d-Ö¨§@ä¡uiyàON†gži Ò«ÒëSE{öìùÒK/¡hGàÑÏO=Kßô ¨±›>_Õ¯ â4Óð؉Fë4’òäÌIÔæ‰1Òb÷Uk|%UžËWñ*'ÿj y£q…N Ü´^IçÙÜ\Œ•‹qŽ3£ëxRE|77A}5¼“•*Ö<øsF\ý;æ+S1ýzœàл뎔¶k~ [¨qѨ\F‹Ââb0¹”Ö+)€ÝÚº¯§Žjnñš3ß#-€¹=V3áv&#ø|¨Í‚x}T›iTþ‡Y"‹›ñŸä½b¢cä±&ëñ³·lƒÛt$• ÉÉÔ®gzÞQ?pi7OLRrÿJ0=Gëšû§ê*;¸#´–Öxê±»06»›\áž#ûò^x!I¡|ôÈš¨F^/Ýüæÿ®G0~wëtnum¥ª®ÎâTkÍ5ŠÝfWãˆaXX<+G`ÊL|I}vr{#óÒ÷î\ƒ4.Èâ`²¾¸oå–1éÌyþâ9Ui±¥ª‚¨®ä©kZµ£q1˜v6AX|ª4=µ®0SH„ͤõJªÏC¥¥%ar)ép©F?¬­UJ¦Ú¨àúè#˼2Dqpm«+õñ^gð{¼¸ZAÔH—Йün®ÑùÝ^Bk$Ζ=æÛ35±øèVëI¹Iÿ Qh'O™ð«¢ØìQãí@v"‹ÃƒÈ‰í°±T"¡[$Æ:„ >„FC™ ‰Í@£Ññ$Ša,§o4 ~Šßå‡ ñSdFƒðS€òè¢eUò$¹æÒ-—vÄj¯z¨Ì²„Ìœ¬qŒöζOŸÿö`w97l\W¹wWÓ² V¡˜=ê¶±“ïÎJï„RÓå޾º;לּ—A£­«/zéñâô^mù¬Ö¨ÿäµç¹§OÔ_¡›Á ß1ýÑ“I½Ñk4Öle6ŸÞWXÊV3f«ð½—¥&ñfŠ=âă¤)ìNò¡Î?®ãçm~kîHáâ‡DÏ?Ü _érÁÑ£“^N*…‘#!33Ü—Ýå§„ÂëDðÿòè×……°zuÐêaút3ÎŒO-@â"ˆ_'NœX½z5 (ºlÙ2¥²#ê‹ï †EW>šÿ¸Ðd?NѸƒ¥õJ’o_èÁqµÎW®òæ—x¯VãUoa®Öµ‘ §¥§R•±Te,Ñ'¥È3{ þÓ~n‘$!L8þðªqGŒxžK}n]µ<Ø„<6«çÐA8v,H[Îë!pg†0šIƒ×›H£Å¦©!¬ÒjЏh˜Á½TGðÐP‚@ú|ņ Ž8‰PP‚ »]Ö„Hqr¸>.×Og‹r82›+‘¨««„ûwS"¢«4dìô{@W§ñºÝ$AXU•de%N^Ü <>a·A€ÏGµZ Ë&vßÇåú%2Œ'àÅ*¸Q”\‘š’+“]Ù‹ú(>“sê蟖:,.aØíScS{võ›ÿÊ+`hÑj€N‡þýaÀHN¤ðîÚ;÷²ïtï î–ãu®íÏš‘"ìþ½œ›ô/8Xý½UOŸ.:ýÍ@~¨[Kwˆ—fMU–€>sP±h̾#­!(«Š×~té£H›EŸ­Î­Õ9«UŽò ›ÅªÒZ4N\ã&õnÜÈYx"+Ghâ‰Í|‰‹Î4óÄÍáŒØšƒwîû<^Sƒ¸‡J-LJÛ5îY³ ä)=‹Ü.¥¦óP€‹Å—/ççU^É·••P«+¹s«D»Íó2ø ?UèBzk<ÉzwÓðÎPL…<}hàŨq>ùmÊ~œéc˜›4YI»3ˆÈµF¿ÛCZíL¡.FVÞÜ©X\4&añ1mT¸IÿU™o%.Z‰Ë:{¡,'¨­"r®ÃbkÆ'”g7ÿºé A€.“ô! y EQ:. jB‘ú- eH¥m$°qµŽÐ|Õµ¾«U»6þñý­=ÆÛ ¾õIÎàyß“ÖÂñ½þ¸.P4ô NÏ4ôÎ»Æ EÃ:yžï(¯pijÙÊfLL{?{ìÜÉß?~[Tt%t1ô¥×šsRwi4^ƒ©´Z[cqUؼÊ7âtK{4ú¯# ·÷åaby½b„|LB£\ÿMð{¼•·ÌlnΩØ÷U[JGµPXBaa#/* €ìlHM…’ر*+$É„Aƒ`êÔKØÿÅè×Û¶ÁþýÁ¿.i9\yãÁ ?}~f}ªè„ æÌéHYé=Vë”ÒRÜïŸðÛ­þ@Rˆ(Z㢰XŒ{¯”µ1 #àK@KK¢&ʺɋµÆƒW4猞ËÀ)Ç·l¬öÜçÓ¢ôµƒVáb±p*ÍÇã•ÐÐxŒÁäJ$T#J®`01Ñr‡¯”·¢˜âµ~ß¶±Z™üü—?Æòšøí¬[§OðòËÝ:¨®©Àq÷ùôÚ:÷ù¼n›^¸Û嵚ôû FpØü>‚â'$FÝõß'‡ãe³Ii4]Íà d JiTL´,¦_Zï¶4$A¬zöQüÄцþAâæÌ»wá³]úŒ[NÑ^´› Íå/~öÛ—Ù3ê_„…LÓGc“0J÷m̧µ®9‡Ô%Ìzõ¹óñ¢?__8•)è^~íݬZþ2x©´v¤DÇj+.¬à2hICðÓ{wÖyFgµÊk09«U®ÚZWµÊ­Õim½Ñª§±´b¹•#p099n«Š ˜Pá †e¯³qc}Ô( DàÀ’þÑ2F.:A†Õ›`Ø]ΓçO_¾xÖ\]å)-aÕ©[f{©T+WXŸ‡š¢s'½ÕB,Gª£ááæ$…’i–'|ø(ŠÊD¶;„‡pXˆ‡ÉD~/nxå?A–ÆÄîíKit¬Èfq%DAÈÖü;³uÃå«2ßF\Ô9‹u¶‹v¸êgxVÖÙN[|ÍUEmEl]EJEAœ±&6VúÈôW*å$鯖í_öÔÌ.k´kÿ»Àw Â܃F'èt¶ÍÚøáÒì½ÓÓ'Ü9ãÎÍ;óGý´¶|ÝWX½:X"X*…矃K“‚TzÜ£›N+vîÜ ,ë£>b±Ú·K-»õ†™v‹üêð|<ïq¯Åì¡÷3yƒ'ín—jw9ß~[3î{~ñ+7å2¼F#îpºÔgµjÃÕ’Á!PèàÏ¢CÄ´t‚”Š0ÊÕª‹—r+K‹ô%Ede[«mÕÒK¥â•劼0hÇÎ;Ó FGE| ›‰E‰)tZ ¦*PX L&¢0èXŒ” ¡2Âf¡²V þôK>z·Òu)ÚݧøˆÌPë`²K”6ñÐ÷.œî±sUSî¼ÖCž55ÆËjsž½B´ŠÈi>¯²ºHfP÷(»£­NfBO1‹«s’“¹i=8ÊÄó½wý¯ÿ!{„²ÐÏ>rfÛšEÓh¢®«UüúØmII2Æ%ÈÇMœóŸ‡;q)òƾ¸ï£Wà;6×·OÅðñ“æ?ùB˦¸Ã1âËœ“)ṡ™eÝ•j6ÙO],9a"ª\d1•_£´¶Fº£~R žL1­ŸŒ“ÎEÓ8HÛ í;éž~§°J™\h·&j5âÇg‹^œwc3¯|>8wlÖ˜»> ‚¹so8Fïš P¤(Š’õæ›/Ù¨ª|uuÍØ±w!²oß–¸¸Ø6né,ŒN:\+Öß„ bØ÷uÙÛüŒÑý¡®V® N§ÒÓán9.•™¿ô—ÞAÀ¼yóFÕhø÷x ­¯3Z#a´Z¡3sÀ>ÖïpZãáŒÿ·lž‡Š@ruݺ%kzÝU¤ÎÄýpד—ze넲X­êö3Çžýu3ýZBC@ÀMOO¡¦ÄS• Zj| AÇçÃ-ÎS›O¼—‘ò•°Þ3ʪËôèS™0:In·s3®ÆY›.ÃÝxÝÇÌåù)Á‘† ,sðx,Ž À§Ò¨ çñxLA@Â`¢L&ËñÌû¥â“¹{µ5æÖLfº-.£Ê Œ¬>Œa™ìqCèi7º]­Û•S~ÕîrÞ’˜œ&a”æåhõvéðÄm¬jæ÷xíÛ¸Žœµÿz(lÍ„B§1‡enM¤9Žlm:ƒÒDžòÓNþ5ErÀ£¦JUU]Un5ÌÕU>›…4è©=ÓnïXõG7ƒá£3|<>E"Ã0Œ{æDäžJ[¸ëOpã¥#>lÜ,ï1FŽ„Y³Z>GÁ†Í³nü—ës¯Í`ÝÔà³fâÞCêR”SOF>wqÇ OÌèÀ xćŸ¼C¬ÿì<þ¢­ûº”qŒ}·”•E"k'Û6éÈæ¼ÄþÕòäó}‡†%ê…!Œx ¿5Š™-¡gñ±,†„®”Ÿ?wZ}µØQ]A+/åX-íºHE-‰=il.ŠbƒÁå ø" ‡Ç“Ç%0yÜ„„D~Lg2ïí:[ùÍ+ êÒÆ½73ïŽç6??Çìó_¨µ/®+1» ¼X o¦µ’ê€xŒN¥¬.ŠS—¦: =èDO1[Ü·CÍQ&²ZПh¯­Üzú$…g¦±R\†ûb°»œÖ•uÐ~ýcgñ+ϵp€/`Œ¼mÒÌÿtn-Ï.‹Ë¥%W­©;9œ¸y?4û¡–~µZ3ÿÛC[{ |4ŸwzþïÍŽêÑÈ4ŒôxìåeEå9†ƒ«XÕbEy\ÏV‹ Ñýd$ ƒX Iã ‰,$"j/±úæüV|Žt˜qš>íǾ«WTÝ>• „3g€h&×AàÝw;P ©ûj]Š‹K o67ê }ôÙìì,’$Ï»¸fÍ»mÜÒ)ÝkwÝñmî~e¯Æñ£»xÖ½CáôiX·.¸õþûþ.Øò—ïL»¢á@ŠPºP‘zrQíO IDAT3i0üª©ô-ã©~)¿õ€Î³»6/ú0¹ºŽÇ ŸXüQØ”TYSöó;ÿS>25ÔÔér¿Pv^e ´”ÕEɵe p÷G\}¢¨ä¶2§èJþ»ÑÞGcŠ–/ßqþú±çȾ£¼%Ô4(#ŒI)“žûßð-e³ÔäœÊɯ€¡é òAÚÒó8«U¦s¹ùåµyzç%+QÅ“UÉSjb”­¢v>BöåSÓyX>šÆAÓ8H4¹ ±Œ:f©/ÐVŸ ô G¤vÝíûøc(.nvï3Ï@r»]D»¯ÖeïÞƒ_~ùý–-kC7&$dDJjêàÊÊÜ6néŒþÔ§W%d4ÝÎò¸Oü&'½,]9œà'ýF}~ñDïê?S#ýåh¤Žöé¯$+x{‰ÇžË³síï= ¬ÛˆÁSÕ²¸¦}öðÏ÷öÏ5»r*ô—md.&¨Ä´*_Épë2Ù”q‚q{Då ïjEÙÁÞ*Ñ“ Ò„Jw1Ñïö߬¡°q#= Ã’ÿgïºã¢¸ºèa{cwéÝ¥ ˆ¢bÁŠM¬A5–cŒúi4jŒ&¶Xcb=ƨ‰Q±÷.b!Š"é–¶ï~ÌR„AçüøcxSvæÍ›÷λïÞs5\6ݼMÿ:ñ‘Ì%)ž-—k)FI6vt¶ã1•ÛÑG~'DùÒ ’ ÍÁšãßݧ3§OçúMs] `ùr(€áÔNÚ"YñõE'¯ß~\!&¬”šs>ìF³­¨¸ÿ8<âø¿GÅéIT:Ó¹UÛ/'L2f±êå–S³2¢ãcssr2Râó³²d™iZI¥@ÂçÕ<Ë£ñ—s¦>£+62û÷—¹¸xx ¸ø¾^^½&³A…"ðÇMsZ”:.ÃE#½ØÏ®Å j‹°BÍÈ›™‘Ð7]–¢xöÃã‹f 85ÉgX:{² ø€<ÛeÇ/7)WÝ´gKO=æ;ä-lsÓú+ÓOìglkS¹%䇅DFåí'-Yå.j¨”ЬlqÈ“¬ˆ¨ˆñ³lY„À&ÝÒ!ÕÆ)ÝÂþµJ2Žl£¬By1Í€y‹­”?÷7v1o¬|s¿ÿŽÐÐ*÷.\ˆÚg°i¢vt## ŸVW®ükañŠ#oiNÓZm¼9G/.,6½"UT‘¾ä›À#ß¡0¨ö}]é<&Eâ;º4[IЛ—Óëß"ÃÉdP-M)<Ž>ƒ¥Õ„Oµ2{ai2Ä„™£Ó0§Ñ{”°«ßÎ=™­u¬ê>é*•ªÚ+¹©î ‰O[R^Š¢Üœ =[Ÿþ­-YÇáš™'ûp˜Ãwú¤I¹Û<¾@<å«-ŸN %$bÓ&}àóÌ™ðòjГóý–äC§î»ÛÆ›³„rMǘìVvÖ‡×K š,qñõ²{Od·”¸1¢Q™m=ؽ;qü;0}[5¶vøåË $æ»øþ{‚5j‹dEgn_*ºT•ÕÜ 5»HÍÊ&§&¤$&Æ^9cYÕ‘.k~Ö§CÝÇñã¸uKßü( OP(Õä­!â›ý4ÿb·aÄÈÁШó¤Oo)läzVë°1\²$N£)YzòŽÙ@‰ï÷Õ “‰¦ŠR½E®?múÑ&x“ê¢"¥8eiQÚԩՒÐç…±q©OÃn‰µ¡àƶðˆpmWÄ1®ê†FÓN•ëoFëïeëi´f–µÃÕ¿¬f=hð¬lߎλU¥$Ë-,¨—®š ÙÚá~ûÁ:*ß:Í™ÇhgÊòní&pjÑtÄ=«Ai¨@îË8ÍËèš… 04T*[nxõÛuíÖ¡½úáB–8g÷¶F—Ζ֌’Î`|2zêÔ¯Á9M•_ÿ"\òôYNTôä¼8#n´Sët+‡kÇjt™ b‰*fåðNTkW¯âäIû˜L¬][‡xM××åàÁ£ûöýuëÖé¦ÀÑoEûçZ4Ç/Í)'ÙM%éÈEGaÇ–ö¶Vµ[aT„=øèð>UIÁô>:u`À¤§0U*¿—±&)Id"§£¦·ò¡é€µkõQ^^¯QÕ¨'Èî=):{K“H5°{v¨*M*>¥øÚÙ q–¥ 9Xó†÷ewmËîÖ®¡=×˰v­ÞÄ+r,jÕ¹ðï‹oÙÖƒ?vP¤æq)äá“YŸWeŽÒ~:~Áÿ¾¯ÿ_•H°o_Y>Q¡S§Â©>ÓÍæ…<ùå·£›Î,%a£¸E{{Ú5šßK¤T3ænÖS•~‚ÍRqÿŸ>ÿ¨†êÈo¥z‹boŸÕ{ÿÆ;м'9qñ/ÂニiX–‰VNIv.Õ [y~wµ¸·-ÇÇÉŠ®Uí\ô…Çˈ ÇÄŠ\?[¹½§{Å’¤Ôì´Ü‚LI‘XªÈ*RÄegå*ÕŲ|™V«“ç+)TŽLBW+yEytRPKU«Œ‹ ˜*…qQ½ 56Ž„+€ø¨ðœÜlOoc“Zd³"$w"Þä&Ä+âè¹9¯ —WÒRkªƒHÐÂÑѽUï6î"ç°¤ø¿§ŽæW:7wð°5K~'[rhô‹c˘¾,Ë‚’oaá9yægÃÇ4æmh qÈñƒGÒ¸—ññ©Q2£‡–I¶.ñö-Ó­ªO‰ðqfXàÔt£ ~úÉ@*zøðÃ:\²Iç0ªL² ?µZݪU÷òž-Õ—02*>ýõWŸÚ%ˆN)þ‚ï×,>*QV¢¨(ÛIWÔŽ¯s´àëèÞ Ój³ƒo¥^9£.ו =Û8 ‘ajúunšL§ЛÅ]$´Ì×j˜–DñÛÄÇ»?z@K¥>þè#×+ÊH¥f?Œ`>‰f=£æ¨:Má)R´u“û¶TY›Ú€. ü윶7®m474]UÎØO¥(#L¤­jwŒcC­õ‡j&??’éͱ •rÌ¥}K{:;úIÓ ­`Ë,Õ[Äè óç.Á{ BàâÉ“¨ËyF¡šp¾M’­³A;M%±Ïx źšþFÎT •Ò¤8£R U2È-©:3:l¸ KÃÍÆDÀe‹lM+û=NŸ0Ü-ê…ÑÅRuï¥ÎÎj4 ×_W-Vþ·"ûšLÚ{Ld/ŠOK‰ŠˆýOü2¶¦)`9™µ-£…£¹³k«¶Ûyµ®•½?45é¿°§\®q¯ö,9Ü÷¤éþº}Cá±C¥Nêj*M3àc7çøá NV柌ž´àÇF»±¤Ðp·8³ªæ½¿+žMá߸W® :EE°±ŸÚÕ}ÒÒDµxzº<¸µcÇvD‰N— ==³{÷Anß>cggSÃ’7çèæÙÌ70ÁQ*»±EÖú/üöíÛÇvïþdz"\]­4ð¿#¬†£euËa¦Gtt˜L€E¡\quínÈüœ’îs%'ÝÜ@ŽÌÃß|ð†£uFDØÕµË2"ÂJK6v]¦~í5 €B¥˜þèÞÞ—Ñx4úµÞý}+ë§–¦æyPI„N­Q<,¾þ@v;Dò¢r¤©ÊðpæèÇîÖŽáífÐF“%–?~¡-’1½]én¢ÊÇ -Ï 6±ÀW3›/5¯€Iñwîß–dfXˆuíÕÆÂjÃ/«ÔÿüUj&l1ÿû7Z<•Hpø0ÂÃõÿòù˜<nΟ¼sãÁMÃæå ô&½¡|Õþ®Bz=ÛÕ~Ž•//R”xŸ»&¾X~vøÒÙMS]±26ü² GÿP(Îý÷rs‘ŽnD‡F^M-Ô܇ ÂÆíµº•aR˜'THKù7—¢³áÐ,¹tK>ÇÙÊÄÁÆTȯ MM:0s’Ý«^2ËrÁ²éƒ†—–4¸„+‹Å ¾kPçWÎbë(F„FPuó" %ßÊš"r8º8º·rssótvoÊy…š,R³2ömYǼzᵑ¾?mè݈Ñ&_®=¶ËË€'I›—¡¦tdñšñ<ªvP.¯PØÐ9Œ¢£ã>ø`xrrh½?m--‚ôdz˦¯ªPµš, ‡uÑ{»ûí·ùùùÞ4ÚBOß­x&¢M4Œ¨èplQU½_LÌãâb4#£CŽŽ£Mª\¹xmX±sïËŠ(#þFWc§Vuç%’”Äàý;Ã/–†2ùÆOë8n ¥ä¥Œ™òPŸ’fWÇnSœÝ+Ùú°c‡~{Ñ"ØÛ7ßoãµÆu —ÍÒ‹Ý­»g‚OëÊÜåÛ œ*%÷ìní,·/%ö¾& ´[;¡_KNüs}ÑÔ©o2ùnú8{ýâ“‹JÇ×|¿n ÞÊcsj}¡¸8ìÙ£OÀË ãǃßxi5•bñ×/´óõìL”8)Nô´h˯ŸÈã¹vÂýÜÒ2óùès»èéìXR \Ü~úël£Ý’,=}üï×ÿm?°|¡G‹[j¼>ôoÖµ];Žž˜˜x´þÕe~/=uÿv5©œ¼¦&H(ÖNý¯àZž~¤jÔŸ\:¸¸• Í—Ÿ7ó9òz‹Þë·öïÙ$ª¥ÝwÞ UT5ðM »;±}³^µ¯}/•pM8vP˜UÕ‘V ~ø4`9ë{+ø¹k«ª|™ÔTÚwËÑßUTæè¯ïý9ö²eß.[öíªU¿¸¸tT«3Èzð矽M›6mÚ´€‰±j Èxì¿0$m-ÏÑå¯ôÝ-ZÔœ à:9rë|ÑWÎÝÝùkùÀPs·Þs‹:u­|ðì`‚ óhôãÝ>(#è¸s P©ð²dñkذwÕLs°6=ÀxôB)üBv;Dzæ¦:>Å`ޤÊÔœHqj† áC ÿ:d=h^X²tÍñö#6üÈ..æH¥±?Ì_õ0èÛE?U7îÆÇãÐ!dfêÿusÃäÉéßbf;Î9àÕò«ùK[~/· :]Éü««¹ŸIíXõÎDÅwÏ óuzó¹SRÔÂ+»F-ýÆÄ·ù¹?ÝÞºÉT« öjMôô´«ãÚ±ÿÖߢN¥ùÕG%>Ü<Úï=!èì,­í,­[¹¸ØX˜¯;ø»ÁÊٜO†Œ$ úÛB^ ‘E|œaƒ…C ²~¯_É*((üæ›E<žèþýGÑÑÈ*pÿþýØØXt:}êÔ’ìÖffevÐ$kD8Aòù!ú‰¦N72>¾” ïhÑbª¹yãÜmVtıãÏ~ÿ¿R‚nliÝéš ‡ ôcIñ‡õŸâÆv<ø%ñ^Ož`Õ*œ?ðpÄÄ€p•±²B§Nïü7b2ØÝÚ™.šÚ"èOQè «}+(Üê|©ÍOkòíñ_ÓG½FÆÏ¯LÏûÀ} Òw# °å€¤$å'óì‰åÓÆ¤fU1ù¿z›6•ô¾}ñÍ7o ë§p\îà½[þ”>â7b½>^Ëìr·pyDQ ¯¡Ðö *˜ñ¬˜ èTzÔÙÝÇónM9¼µ9ô£§ÿ!üVµÊðyKÉ‘¢&` ù‡æIï :­ =­ Mï :4wˆ™ÅûYÓ¦Ì̵´4\Q£'p ²Á¼-XøLK1¼Hh5ìS²~ÞGù2±M›ž£FM™3çK©4ñìÙ¿Í+½)C¥Rýý·>ÇðáÃMMËiÖ¶k¿aõp'r‘¬7 Œ‰?›¯×m]fcóe£tIJâÅ‹þœôIòz'ƒé7ù«É_ð<œB5åY?åáb;À®ÅD'}"t¤¥aß¾²\ë¥ÈÌÔg/zo@µ4å éÅðv­’ÐÓ¨ü/FÖB§eôh½h`f&nÜxê°ƒ·ÏwÇ.J:ê?Óðç»Ç~òÊA ¶mÃÉ“zE3f`ذ·â€^õ»¦yÿôÆñ½~þý–¹ú`úc•½nçå(uÕŸ{<]éq5ïZ®~MÆ&+iÍÎ9Û'÷nÿýÂf‘¾±¤²âðí¿Û²^ý:xû€DaÚÂ~H@¯!½L[Ø¿ÏõÀg²üXWh\qž;xØÜé³Évò1wĸÄþW.×Q(¶ït$UÓåèîîÃã¯^½íîÞ™F³&þ Û÷¼Ê³³³‚~ý*-掫—7ÑPp«=2ïB|cZRÒñ’dTß[[/ox5µRqgûÆc†„=QÚ:`ä”/wŸ>›^…ž†T­{ÿ¦\£ÐJ`²·s²˜¡‹QU`>á•þžÝ³Jez¦o+ ·6}–½=ÖoŸ;÷žÌyxlÎÊ­1z‚šJÀ+È¿ýå¸_·oÐïNJš5e‹öö˜?ÞÞMóY,ûøOß½v߉J2<ÜʇÇUñ© }x«Z‡¹VªÖ³ö¥nØ#éÈÇEùZý÷5ôÒ\ÚôÕŽUf;6Óºíן AôBpÆ·?ƒ+‰º¡Ç._œ¸"3!¥U›4‘SZ7ÛÕ›×,ý¹XIÔ ¿þðsþ7 Z¨©45•¦¤Óiµ ëWÞxp—¬Ÿ†@u~“¤ëyeDDDœ9s†Øž1c‹UIÉBÁĉذ ŠXxîò­É‹=л‹Ì·²ZaÛ°“œªC»MŸcíùŠ3óñýP‰Fÿ·{ŸWâD£¢ª<-:ú=l ™c¤Ç¯¨â+òi#&Ãüç9µ¾\Ÿ> Bf&´ZbÆŒ&e-n8ÌŸ»äj§n÷¿ŸË..¦hµªƒ»—F…Ï:Vxæ\™Û¿?š¸ô>ÇÁ~à‰?E?­ÞxâÉ_Cf(éŒ\ eØ#éÔ̼— —uÂB:›ªÕøÈs†¶¶ý5Q«Ö¯Ûd%Í=úóˆ1ý'ìm^á¡å‘š•¡ºH,̹L›eij$ê ;¾pùœ%d=49¾hDY1vŠ|ô$‚'póóOLû”#•2TÊ[ßÿÏrçáV.nd-Õ/ȉiíP*êëëë]•UÏÖ#F›sÍFn€Þç{’™Ùš&è±·®î5àÒêïK º¹‹Û°;?Ù¼çµý`|L©ú¶]\y¯®6V“9B&{¿.ÛöÔoLïWº$ª©Àzߊ …5»cJÒú„‡ãÞ½÷§&ûvëõéÅz?:Að½õë—…*‹€ÉÄĉ5ªYäÆ"ü^Vø®Þ6«ÔïeO’â_šM! @C¡þDZú!NSJÐûß<¾ÿÌš¯~_ã4ybó%èöü²šHI(9&SIxwÁ¢R;›Yt6³ðvví³n›ŒÃÀ+Èÿç˱/âbÈú!9ú[õk×°X¬qãÆUwh×®ðö^Þ¾ýæVzùçq¦&»[´ 5нåÄÅ›1þÔ‚™åCû-\>áP K÷Þ¯==² Þ½Ïú'ŽcE.(‰ð3<'y? ¶vWv[ý¾\0}Ü`ó5sîüÁù°k/çæVÌpö,$’÷§&ÝE΋’´×»y˜äf_øïî_\*æÏovÉvC‡Ì8°éÀ±¥]C®Vs˜y^Ʋ-ßl²,èwìà›è55‡†0o]#¶ûÌ^H*o ñž »¯_—•¿”ú+^8S*+&«…äèor¹üĉÄö°aÃ,,^¸rÈK2GöÏLØÏ m ‚žŸžzqÅ¢?Æ”†rÍÌ?Z¼rÚ©ë>ÃÇ ­©Z5âÞ5‰J  •Àd›o—ŠGü'h÷–ð §‹rõt¹$0tpi`(Íé>}öÔ¯´YvN`Þ“‡‘ùx4ú_]üÍ™¯:Ù_½Š}ûÊ’;V€‡úô!›ê¸¤³ IDATGý€NÇØ±úí‡Ë"&ßm(øýw= …bƒß¦}âUúéãË'ŒOk~A´&3­[uêàâö~æ]ýÞ·wüÜ)Ó°PZ eÔÿ‘1 ï†~4ÄxÊLbÛ4&jÍÜ/š£m¥i‚FVAM}±D½dâĉBEËasVÖ·©©j@_¹ìäÕ«,Ϭ´ =æÖá×ïlßøèϽ¥ò,t6§ï·Ët:í½]¿–úS¨ÔÖ£ü>ÿÒ¸–‰‘wÅEî}©úÜØ®S+IÙ>• ýU–ÜÑÂnnxôHÏ×étøûcàÀ÷$º±‘àæ__„„ÀÑ£X²ÍßÎZRR°o_™ü¹“ÓàÏ>kíîyÓM_Æ0Š84> ëO›–®VVcajß…1L©V=Û²Žˆ\)ìÔÅǽù“ ñbÆÔ¯×ædQO`òäѺ•‹¿_¾ž¬’£7,.^¼xïÞ½¤¤$D¨hÏž====«9åh^^)Aïel|¦MÖ“H“Àép´ƒW;wˆ[¿­{txoù•¬øÂO Ë—ˆ:uõŸµÀÒݳ¶Y¿ðécb{¬È¥L @ZBR’þ_L 6£FéÅííõªÞ$êÇ#<2rsˆQ£ÞÙ' Æß—é·|ø!î,?tjÝÊÅ´Ëçi5G*ýoþŒGƒ‡Ï[¸¼ù:÷ö²£¾Pk¨†ûØNÆFïÀ ü}ïVBoQÎb}¹d5ùí’ ñÞbáw?ý˜/á^¿€uáô:®ñRƒõAZ@ C£ÑlܸñÏ?ÿŒ×h4A722rs«N²ã¸D2-1‘ èmÙ윜X4fÌ[Å ìßX«ÛȈ 9z šÌ]Ü>Ù¼gä–ýu èjöÓ Rµ @g3‹]»• ÐFFbÓ¦2‚îç‡/¿‘§€N‡“œœH‚ÞP Ë<^îÜA|ü;øŒ*þþ‡é :“‰/¾@@@i£bÐèß/_ßa½^4€¢ÕÒO_þÕ„*Ó‘6=8»‰†FÝ1¼+5frß6Íýf‰s$é{'ÖÐQvµ\Á#A‚Ä;†E+6нZëÉåñÃûì'ë„äè ‚ãÇ?yò¤B¡N§;|ø°X,6xÊÅ‚‚ñ R­– èWÜÜÌ 15S;”ŒÇ‘ܸRóÛxy÷F©‹Ket7e¡@§.=êöŒÓ½ÈÏÀ£Ñúõd•ú¯_½ŠmÛôŠŠt:¦NÅøñ$#oT´kb6¨ÕâèÑ*³G5SH$ذ·néÿur¢Eð1–²‚,£iè;'xÚ\tûÇ­º„W”Ñ´ÉNÞoš#°jöÉÞ·®^Jè-æÙØ~3kùÕ’ ñžƒA£/ß}Dì¬_ÏܲáèéÈj!9z=C¥R]¬"w¦\.¿yófåòࢢa/_Ê+tݦÁ³DåßS¯µŒj5šŒˆ°G‡÷†ù·šÃÌœ\kZ‡ãÆë¥L÷vê®WCW©pð`Yöu¡³g£D¦„`=@ò.$ï‚ät²µ4ÆŒÑÏ‹RRÞ)¹ô‡±fMY.Õ®]1{6ªVIr9/?z® ‡>.Y}ùËqͥ߷ôlysZ×¥/Ît ²ÉJj6ñɹÇè=G lî¯14úïž¾'l9v ©·H‚ ‚¦ÏÙv0ÏÎM£NøyùÕ{7Éj©3HtHLLT©ªŒèŠ­(©vW*-%èŽ FE‚€ÂÄÐÁȾˆ!tÀžß±h x¼ò‡¨•Šô°Ðä©ÏþˈS¼ö>¶öu{À„"éÌÇ÷‰íOì[€L†mÛÊæ¶¶øòK˜™•¦È@ä\䇔•{Ãs Xvd›©XY¡_?œ?'OÂËë•wÑ¡PàèѲd&cÇÂ×·&þOvìØ³5ïÀ.†JÉP)SV}¿âÑý¹‹WòØœ¦>b™šþôÝ„Õjyv6ïJãöx7šç±•KLµZb·–ßI‹H Qj›05Ÿ½çØÖÏ>æçåÒ4ê»ËØ)Hë ÒŽþ¦x*“ ‰‹ËQ« ‚~ÃÝÝÜ`¾@»ÏÐ'LH pèQœŸžvöÄÅ‹v ì~lÆø =[Õ„ ³…&6Þ>u¸a©ZõÉÝk„º+¯wCOKÚ5eÝϳg¿B 5Åx6þ‚ 0 ¡c Ê#›Aƒ`Ð ØÛëÙí_5ïgIKÆ eÝÊ Ö„ —bÆÔ¯{þº»¸df˾|nõÄOš‹{ºƶ±¡•hJ6wœ½~Ñ4*‚Øî7kiD'A‚Dš>pí2é»ÀÑ·oßÇç;98øœ={¹âÀfdQúG”$'§º»wöðè’œœZUÉ›C$Ñ«v¿vu-?IQ©ÄÆJ4B*õ‚««#ƒQÅ(M…ÇT´Š S«¢ï\¿ò¿»‡öÙ=´ÏÅ‹ÂΞ¨ÀË6v^>þ`þRïAà ^¯ßÂiŒº¨òÍ{ò0T"À£ÑÿíÞGHgàÉlØ€Ü\ P€ñã+˜ù‘°²D—Sd q ù!5FÖK[FF¢R€D…BÈH#.N/Ó‚M›–¦? kW,\X]æÚ*ÐÝ×oü¡@±È™ø×4ñå½~‘l& ¥Z¼Y/á"öiß»sw²NH Q~>¾ý6ïQÒMÿkÞYâ²Zj‹·ïë’œ“õàÁ£GOKM}^a¯N—]þß•+7-Z4G«Õ®Yóëöíë –¼9ètzÿþýÏœ9Sy‹ÅêÕ«±)—‰‹ËP©XÓég\\<ªÖMW+© –ÉI… ±AYù2­N‡¸ŠÇ0ùÖžÞí::øv¶ó)31rÍÍ+è£÷[ø£{ŸêðhçÒ’Æë}uVµñm%0ÁÅ‹8wNï€Îdbòdx{83·êPWñ €”Xj89¡G}xåÑ£pqŸß¤oøÎœ}º‚NMŠ- Ÿ,¯z™BžJ~H ˆ€„‡#;R)1~|Ó½Õ7püø«S»\ýú ++Œ·7õJdÐèK–®ùãUʯk*%€¢Ý[–¾÷Ó¡±€l/ Bo‘0E0bijNÖ $ªÂІä‰sr7ÿŒ’¤Ë¶î'½ãšG'°s篾š\¹œÅ²ûðÃÞ;v¬·³³žžÉb1‰ â€Ê%õ*•:oÞ¼ÒFL&ÓÓÓsøðá"‘€D£éCt…rÆÅ¥” ¡Ÿ‰î'‡>zô}û°hQ=’ÝzÃóç¨Z þþõ~Ï­\ܾ;vqÝÒyü;×ðórOLõ|îâÑ$›LC 4úãÒYbÛîÓñ¤1Œ 5Á‚oX%—Ь §WQiK–®!«¥ypôè踷Ÿ8q€fH…Çã®X±híZ½×£•\®P«Õ66VU•02*˳ZÇŒ'F*eα=91‘…29•JƒF*ÚtœÇfGQ©Lr³ÿ÷"4{WØoqÑÊ|ÃÚ&L3c7OaKo¾«•Í 8]ƒ÷Kä a@½sçýúÉ*ÄhÖ+®Ê¥{$zÏþ¥r­Ç¶P«茌b:tH·±Á;Uë`tÙ ÿ¡Ê4:É©™/So‘ßRƒ‚áàÐ!<œ®P ;;q÷î„Ö­›Úz?xP6dTPPFiÌh½âƒ!£o˜Y2Î`¨”ìââ”Uß{åBÿáãhªV­’¥%`Û:PHBùÆ8»s•V ˾E;Ç–·n‘_= $j„î=ûŸNI²yúó쉟˜lÿÎþdµT´ƒTâ«oŸ£OŸ>o×®ŒªäP€ƒzxè¥T† ùèÈ‘*•jР~U•ÐétnÞ¼Ù»woÿZ7u‘ôȧý3³õ¼V­ÑæŠóć~2Fe®ÕùE†Ù§$ s³äV:—Îæ´ðíìè×]Ô±«©£³«KXx6~a¸Ð :M¥ê…9sª³d¿Ф;.j 0…Ê\x÷¾>B”Ç3š8ÑÝË˽ª3µ D¬–=hÆFT"ñWDÍ"?°†‡ƒ£GˆbcE#GÖA¥A ‘àáC#³:g³–;¶ôòj [ð÷÷øñ¹%³ÙÙ¬Þ»–/vti)¹|Ž¢VÐÒ胆Ÿÿ}ݤH8{ý¢ÕK}¸ù€ËH9$HÔ ]ºu]>y$!ÛÊ8u,ÝÓ\󬂻6-Ž~óæ½–-ýJî/€‘‘EéNo×®õÑ£»‰–,™Û½û ·oŸ©ª¤^péSK zYõmìokèx¦1_Ô±‹¨cKwO wÏ×Pag;Cò]žá¦/ÄÅ!0ÆÕ{õJÕªÁ·/KTJ®ÝÚ `=A·²ÂôéÕñ¼¢hD‡ÂE“®ðü 4>$Pøxmºâ;¸: çßX¢G\w´ÚU#ís#*<Ëé<€è%БÖô›AR0fŒ^.=, Ož ]»úÿ• 11¸{ÏŸWt7çñàë ??2í꼘yJ-­Ù§A †ÛO0j¹¢ZK[¹„¢Õ;»N9ެ$HÔ ÷éï±ìg-…À4&jõôÏÈ:!9z ¤R/~üiDëöʵÊá)³Xõ§yDzƒY‰d¤ç]ØÚ€B}ûÞ„xíýïáÁ”ývT¼—7æÌyÅ!¡r.âé(ÈSÀˆ §yhù3è&µûU*Þ{Êcb–!ã²-5`f¹¹8^ñR)._ƪUذwî”å·`o#°nf΄¯/èUx‚‰o#/Èð®ä]På5ZÝôš1WA7 åª32ê2mö[xY: Ãñí²8ìæ€³×/BiºN#ÃÁI EEEEo~¡ ¡ŒÒÏüM£"~˜?ƒ¬Û }] À›Í¶d2÷}õmëÚ?¼k›œ `±ãÜ<¯ ú$ÍÁqdThuéÚÂqr¯@S Ù ‹ÝÙP©’‚£G1qb®÷â¿Çó¢Â@1063÷“ö1dHu¢IÛõʉÏöü¥îyC)LxïÁóIzÅÆ˜@åÀbÙ¢êL&>ÿ›6A«EPzô0lØ~- DFâî]DFVôi Ñ®:uªé•%÷«#©y·`9´qêfH»Nsʶ¬gËååËe,vï6ý¦òCýd‰eSYç…°óÚŒ¦éGm1¸ž°®{5‡—×[”tôܧ¾ã  r@ã“_3 Í¡;C®}˜Ÿ@à(è0¯C»¯ßÈÙrþÜ%«¤R")ÿÎõ_·o˜ýÕ|²žIŽþ¬·³Ÿp§Ï€;}^qzqäö;q°ÐÅÍØÓ§~~‰e›1HÙ Š½øt!þ< ÂÛ»¶Žéò &¤½”ò8앪Ý{£½oucvôdŸ+»Ï-0ö~³ÅGëzš®Ó r>´ X '[TýÃÉ >>xòŽÁÿþW¥…Û âãñà>¬¸bÃdÂË ~~ðòª]R­ê-Ä‘ ¼7pÝ è Žs­jjƒ#Æój{æðnÄEÓ4‡”dªVË‘oݸòûåë• ‡M¦ø•.fTyhñU£¶i^L‡¢$d6/© šUÍmì?´‡Ð[ÔR(#¿YPŸS…„ÍÈ Ô/­ð<á´&]ɺ) ì@XÌ¿1¹‘¹ls¶¨¯¨óÂÎt™ —„Wf\ ÝY–3?!ÿÚ¬kéÒûïïO¡ÕÝ)cÉÒ5KÅ9‚ ÛTwï71û|Ìçdm“½:Œ35MQ*—¦§«Ë‰0ŠŠ¥[ÿÝÃQ*’öüâùóï:£~~Ìn"Ò@S i<óàí°0=ñjÑ5ºˆJ…C‡¦KÅ¡Vfh:óíjîU5áVdàÅô²¤¡¦=áù›Þ9þMÛÔ«4=ê;P˜õnMGŠãÎÆ‰£ÄsN‹ZˆúŠÞÇf:bââPP€¤$\»†þ5°tææ"(OžˆypsƒŸ¼½ÁãÕ…J_¼æ˜¢hE£4ç×7ð}Àõ¿­^}¿þ0ÈË{Ъ_‰í{¶íÞ€qé씂G§Aôw¯ôR$nYßêÍØõ U¦B™]ñö6ø­A~œ%ÎÉüsÑ(?\oÆšb<W–h9Ï'Á}ÕÛƒÊ<¼ûPf€ÕæÁ´ç{;ä©åê³cÎÆžÒ§’•ÄJÒƒÓ#Fޏ0Bè*$)‰ð?ÃËôòåþ­§¶~“‹/\ýëš±CLRSdnÙpœo2bÐP²ÎIŽ^¾³¶î/‹Ÿó¨To"Õ(I¥ÒŠÌ´”?w¶øü›úù%¦5ì§èãê·`âq¬Z‰2öí÷߾ޜYP€;þ-.<æ©O´Ê³Mçjº4â•1Ûf \¨Oåò4@ä|Pëqü Ùrgѵ\Müûàç£=>ÚýÑÛ2ùÈrdj¹škÍ}[B] bØ0<—/ÃÎ2˜L¸¸TäÙ*BBl -¨…üüЮ]uIg«gÞ‰[‘{Eï.e`­Âe?WFÙÙδoÊ>eÒôå7/›ÆDQ´Ú«k—u<|¦t(2 OAþã2—ÊÇ„~šqÙ÷RÁåƒa]ñ{d¾®Äˆ ºÅ+%LkÑ y7ñ±‰9é/,•2º¥[®i‹< U‡øµ0 ¬|ƒ¿ÿ¶–#•¢ÞõãV½BÐKóŒ}oÒ‚ ¢²çÈøÖ#Yƒ¨éàÖ··J z)$±’Ó#Ovÿ3«±©‚8Rœx5Q–#3÷6õ1…LxK£›$V’ŸwéݪŽy¸îC/‡7™ËñØœÙ{Žmýìc~^.M£Ž]µäªPH¦ %9úkЖÍnk÷ж‰æ³iI{~sí¬Y~\WÏúù%›ÑHÙ M1Š_Bz S§bÃHJÂ… T­:.{ö„hÕÛz¨ ÀÆ~v›vÕ™ŽbÒ›÷Œ¨pû©æ¬¢Œ¢Ð¡éÒØt¶i=µµ±½q•4Ýk;ž‡,: ÂgÂk[½ÐôС7æÞ¨Py4Àà#ƒ¹…D^œ–£Uk¹ÖÜÖS[w]ÖµQ™z§N BL  ìÜY‰)èß@|í5ΫÑnF!Q\šv)öT¬V­·&p­¹ |OKmÒ*W\¼ ¡@§ßÈ‹ÍSIU¯=7/F²Çm…F1÷67õ08 ¬|­ˆšÎ,MÍ?ÝvðïãŒó%D Rá¶?:xû¼çïÅhÙ²eË—/'ŸíæÍ›½{÷¾y󦿿=^6vÝ’‚g0­l=Wí °ê)ÉyÂf$m×L.âò œ9£ÿx¦ÎxXx-Qš"º Ý?q÷ù²¤áÞº…“'¥Z¿G( •Àä^ßA¼ªÒ0ÅoDÊ=©¢› åúšóæÄ«‰gÇœ•åÈJKè<úà#ƒ]»TÝÝf tL™bL«]oHÓURÕv›íUõ#¯ŒlÌ~üÁÏî,ºS¡PÔW4ḭ̀F5;ÅÇcãFTÎŒkk‹ââŠiA wóŽѺu©yUìÜ2-f@ž‚Øeú7€ß®?‚Wi*«U@â<…4 Eѯ!úe´ÇÆÞµ ìÄbÃÀ/[ÖjþÜ@K¡tݺ¿»¯_M/¢U@–E*d‰§•mkÍ¥3<õý‡ñ÷ííÜR„ ]#Í3Ni«ÕÑ&8Î5­8£X²ßÞ$<@ž¥é²ybE×ÔÊч7ÐM@åÝ&Œ¨`”¬-ËTh&(|†øõUN)ý‚4X¢é@«Ö¦$ÄƆl©ê0® ×´¥)EãZsõŸµˆ€Ê¢––h,Çš€%dÕÙò}rÈɸ³qm>,ÚÈ+#íºÛá}…JªJ N+L)4q5±ê`õ&CLQFQABA~B~~B~^T^~B¾$VR˜Rط͵æš{››{›óE|SS˶–¥mÆ ‡…)H „cwy¯W`­Óf/&9zlg™KfhŠ¥¬‡Œ¶ýtr=}‚yxØ[osY »Iذññ 匇mŠ2FåÔß)àdíÚ%œ?`bK§ÃVfx4zp¿!|CyF4ňøFŸ Ç^ÛÁ©ië—ÄJ¶;X™Sh” O&˜{›WGÓ k:3íßÓ IDAT1”zþVž¦«¤ªâœb²qñ¢Œ"‰…(Ñj´EE:µN.‘+$ yž<;4»ªŸb ˜,}’¦Ya0¶7®`áæÙó(TJ…cŒhF埮‚KééÁéçÇ×j´•oÃï{¿î+º7^Cß¼11¯?ÌÉ ;£S'0ßÀ&m›ö†Ãø¾r˜"l˜Ö5º¬NƒÂç½DA(¤Ï!¨Ös† –ŒÛ‚ã~‡*){ú$ÿ®Ÿ-°ì`?Eiùé£ú.b‘óê¿/æô¥æpYäI§”M9j†Xv`X#÷*tjÃÇ´ÜPVc¯ØÔ‰ÛȨXŠ×•è4Pe¿R¢È ~=,ÐäÞŽÖ­{ýÇâ”M*t:£øg.,+Ýக¿êÙ(ëÈ=úXËOí&tH©÷òOëˆ+nY±ft¶Ò¡]zÏ/š¶4¡‘ÃrLºí †æõ)ñVPJË S  J)ZM¬¤o:Î1ç`›³ “*ךKcÑŒhF\k.Ñý*ƒÇ`›³Sï¦VåSaîm>éù¤÷“ ‡î ½ùíÍÒ—%p|¸ûÃפ´j-a—ÄJÓ8ño­^:G8 Ž‚œÇ¡ù†C••E«2k~A¡«ÐÚ×Zè*º ͽÍËO9®Þ»ùøÛ™4€ØA´øÐ©Ê®‰Zµ6xepôñpqT>ÛŒ)êçÔcMÏ*WõIŽþ^qt97//FTªûÒMõæñ’´ ›õ&Ÿ!‘aÝ:H¥$ù´¢b§–äÓ£ã8‘±¼Ñ“åF™Z™MiéD\`o§î éB¿DøW(~©ÿ×bÜWÕ*Bô옳„?IeØu·#(iaJ¡V­ÕÈ5„rªªHEݵò‚Âè'Ð*T2†,Ÿ †¹VKk Y{“0ê1¨î#Ýilš±1Gg›³ «1JCT½ýXA–,©èb^ffzj^ÃàãZ±s«á°ŸÜ nÄOõ”½8…a¯±X³EtÇÆmõŠ11Ë dѲ –ºþõd†J €5aÌ×£:Bžy䉧B™]#7•²ÑÆ,;0íÁ´Ë,{0¬Á²+³Â¦AÌ2'Z ‚ç/Ö lµâ\b° ÔaèöþÝé\:ÑVéfŒŽm’“ ·ïŠ-Ôg[Õi´wý¿ëôŠš'…ª XyÉex'X@[¬×{Ñ* ÌÑˆÊ ÐéKTyµ{_uÓ s0íA7»è&`Xƒ-ݤ~‚ìù ùéw£ØtoIؤë†RI¬¤ ± t»4z§Y£Ã¼æÞæffkN=w¤M·¾½õhãÊåCOuêªïžsd¥œxï„i¼Ô_¨&àZsùŽ|‚‘óE|b›ïȧ)B‘´%#8ú¯ÃJåÊcÌÖÓv­3RfF”yAº±$Ÿc–Ÿa,I<¾2ŒíM=LùŽ|k_k¾#ÿfúíìßÖgOsk¹`Ç¡òŽÅñ§?¿j¡£Ž¸8ÚÆÏ†äè$G€˜Ÿ¿+ ûËÖÁã§­õãñ¢Uàaýê¼ã´ø*mÇÛ°³Œ}J ƒ¡ð‚Ëöoç%¡øi±KèS¾Ë%r(ŠEúahdÒlžVc~[˜tŒ¦êÔe ÙJ©²¼+ A»‰ ’ tHԌ퉕bÁµæ2…L¦à_zÀk¼Ûãâ°iS•{íí±hћޫ"C/–WÁv.šõ¦Jµ0FC†Â0E¼ž²3Ì Ì5¼‹ç½ö_ õj$9‹9dÃDzI…Œ¨`‹Àev °E`Ú-ª‘…5õ^®}¥êj?C®cw¢Öf=ÍJ¾™œþ÷~{÷XƒÇæ?:ߥôß„n/Uר©´Â”&ÉÆõÙV;_o}°Mn`²ÃVOgìh_ÇG-åñªˆõÑŸÓ^ë+RÞcA'‘ÄJˆkõ¥´,í~ZA¢oeÂúhÏG,SVéè`À £Ö6•T_RœSÜÐz¢e÷Ï6g ]„ls¶±½±ÐUÈ1çÔ—~@aJaì©Ø¬Ð,áàïPʉ âHñÖ Rm¦€éÐÇ¡ ¾ ?!_!©…ß…Fº M\MøŽ|¡‹Pè*$ ÛæcÔà8C‘U^…UÇü ^vŒyn’° “—óÒ4'Þ¤†æö„n/[h®S´:YŽî3fn±t· üdÎŽ<yÜÀÚ¦À>)ü«f­Z™£“1£u„Ä™QËgkŠ¥ò´äÌóÇm†¯‡‹R˜°›€øzPkùÙÓ ÊfW\÷'ºÚ£\‚n,Ñú.Ž>&ެâÒ_ý÷~©ÆªVBõ%\:^] Õj´&]¦H T•2üüpw“Ò‘¯B·UÙ¨ M‘V(©0iѪµEEå)´HÓ¤¥æMº~’Ø×/ñn ¥$‰¨(¶›pæ1fÈ«YïT°ÞL A–ˆ„Íß(³VQa1-fÔÜKª~Àu×]/´Ox‡†¢ø%òpŒ©Š †ÍígôS¨‰0;%WûÇÄsFá+þÖ4>Xv`‰Àe«çâ,ûºk}ØM‚IOˆo ø%è¦viP-pµ\œž|39õ^jÆã âèÐ?«J–cRHc¨ÔJ:¹±Ò‚ $ñ|“ë·­Ò¹ôÇ» ó6•Œöü@R×åuåèTŽ~Îꙿ²"û¶Á3-a9²$ƒ„£’±$ÊlEêÚLÀ²ÝL;°lÁf¢w‚*7µÓªµÇ{oNúJëŠ>'wúelȺ1Ë ‰4?!¿(£¨V$˜mÎ&l¢ÆöÆ|_à(àÙó޶9»ô-ë}¬Â[¦±hþP]ÄÑëP•7£N­#ºÖ ÞŒâHqÍX¦¦f<Î08÷`›³ öÉ6c ]…\k.ך+tÖ<¦?òhä¥i—Jë9dsˆC/‡ÿù¸´Òêq:Mdî$&9J©’¿ S ³ŸfWe Wä+bOÆVe¦IðoWÂ4NPó×WBîU$ÿŽ‚§å˼ú'˜;Ÿøïxë´–l[eµñÜÒC…ÖgË܉ù°"ŠT¨òvI‚6y®Ê Èã¡|­B!eæ¥KRÙqfy©ü‚t~V¬Yes»ã=ç—Èœ ƒX&DoZ;Ûárwc¡ŽcEÉ®Bæ7?Yu$Ø{Zw‰j’½Ž`Ù:ØŽœ˜|p€ŒÀ¿Lüz±lÞÔV˜Q$Ží—uæø%Ò_Xå¥íq²)bT%üÐÒ3Â’€¦ÒùM*kßJUÐ9tëNÖåé5áç]>¢ˆð§åpÄ  Ê¥Pu\K¥Ý¢ _‡!G†p¼òøÔuyWÇí©¯ÍºödëÃ|Ò–ÛcU¢·Uä+ÑíeiäšÚ®?ªåjÂ6&Ž<`ÚxšÀØðBö³›J¶IX]–†•ÙHØŒÌmçÎ ›œÊ”½ŒyG ÿŠã‘ÿòÔê­ì Š®ÿh£ mF­Î4!cÿ³ÞÓGt×órºIƒ rœºÒòò“o&§ÜJ‰9SÙ¢FgTççà?.W¥Öä_I¬eD€b6Û+ÛéH¯÷¶Z žï}®ÕhíŒÙæl ʵæ6”IŒi ÷UˆœF%£ç3¹¦2CÞû^iZ¯È’ Êƒ2ò(sªkiª<½iß õa¦XöÁ›•éO øøæÄеßEã™4 ‰´’Mzìý±7æÞˆ;§((4ŠŸÍ[>°lkù†VO€’ Ò×"öTì©a§ ÷«Ö\ïIÞy±y ļ¥úÁ´(£(',§ªé ÛœÍwäóE|W¶9›°Ç—¯¥ø‹ñçÇŸ¯Ðþ“o&ŸrbÌ1¯å¸ÄT¤8£X-WßÑÿeêGµ\MòšÏIªŸ—¾k¡‹àâħT» é4ߨÌÎõ §†%cz×›å˜Jð"P¹T*—ŠÛ8¤/*þzú¯fLŽÊ¥¾tù¥6_äß!©}cT7ÆÔk5Qmî”?Ø9i«0kTEŸ/Så5^ˆ!QB?\×i¦®A]£N{/­à`AãÞ©Awe'H¼~}Q½®N‡D! ¾##ÉGÄ@ pz0< $Fæåeòo8üŽ‚{«â­Îy÷‰AùŽ&5×°4ðü_í8sè TZÍú9Ó™ù÷À‚FaGŒ°l k»I1VvT=?Ùìï;jÚ³/ôtÇœÑo¿ýiÉ’µt:mÇŽM&ŒmÒVT¦¤LA£ÑçÎ ðwqI'rô¢ÃE¹¿åÖfÖâ)ø€ä€ÁË·ìkOîýÐ8|ŸÏÄ{ÛŠ5"Œ\’-‘Ë6Ùff½Ã)Àä”p¼0edÒ›wL:4zHœÍ =’FÿoôßH~¹ù‹¦Yæ@ÐüNMZL–Ë_¾³íòG°lü»ñI+“FÇRÀݶ“Ä{CÌ®‡zé—Éo}y«ò¿JƒÊàç;'¶‹ mXL–íÞÛõ2=•b Vûx FTE¡D@¶X `xчèÊÔp+°O S¸:NáRöC¢7{=t„÷t&”Ù9ͱ{cì~»ãáá3Ç V}ˆXxÍ_2súÌîyéezD/¯Í¬Ý9ìFÐX4;‘þ|x@r€OœOcJ*¿“^º}=¢#4ïpØ~+¾R—;w¢êï?ô,ztd‚¡ùÆ…›HæGy|rhºq‡Ó\þørú†ô–Ë1LÂü«ÉŠH¡êµV¢í”ûMHd=d™DGaQw¶ÞÑˈ>q> 0ͶȴJ¥‚«ŒZ‰¶+%R²áÙµçþrª͈f2Ð-îIƒ¥Û××_»àH÷d÷ùì‡N+â2]Q¤3ÔJ´öb=v¾é;‘EÄSðÈЙQD2¬„ *—Š,G¯[ß•3Sµ1;ÆttöØj†êýPµ·Áó­;±óÆ4}Ë© ‘,h´™3 w¸fb}ðàÚ€AÖ€Q¡´è§°>ý»­¾Þ9ú‡®þôÓÓÓo¿ôÒìÊÊ{WÍ™³pðàD‹Å’‘‘õí·Ÿ»¸¤S8ºÅd99ãd³ƒÈ">³ç™àÔà¦7¹¹`í6ùTÓj3kÅ™â69–€õŽó¦Ñ}ù"ó• é,=ÜJ]%èqp.E¥³~Åå¤1h•8¾V¯Ä¢oP)@À`ÒÇLŒ¦7Š -ÿ[mìíQ›Ákt§+yâL1xÇyw(’Až¹oÛhºb÷».ÖºÑ7¿¸yqñÅ–ËÉòk÷^³*O —‹Å"µØj2$‰D'³ÉÙ»³õ  & 9`Ú¹i]Z~µöä/iBÓQý|§7ÞjÅû¯Ó¯_ …òÖŸg|˜¬nrM‘ÔOAš âBEõõjgÔ“Èáæ â$r•eWK·¬µšÍ€Ââ¶ô€Â`‡q§¿‰c²`é+Ï2 ó .<ê½IÏ©òò_9ˆÔ¨~´~‰ßrDL»øºÅd92ùH³é84=éïIUR„¬# ‰âU‹–´7oò±ág¹™CÆx`0Âû;•]u*Ðglá3ËZLaià9 >¨YúiG`‹²8µ=ཹÈkøØ'¡/En*E™B|O|ýÓëÎæ|h?®øqEÒ/­’Dæ}â||â|h<;‘íéÕ¾˜V*¿6iË'ÁH‡=€Dn è1äÌ僴0j ÄüØÊYÓ Ï·3L Ð×À½× ß^·šþ³cLð¸àÆqY‰ ]S€ð§f~çäÐAäà…>Žª5žVVÚR²Ô5êvÕ«Û7tw(—à ÄŠauEA8JDlh}&+lÁRáºå@¿zéô¥s©ÃÇtîYÈŠdgfŸ©ü¯aŠô ú¨­£kƈ%KyZyÅ… g…½èAôÀÑÁã‚]œô· e;6Ên\¶ ØxüÐ×áèLäs“ŒVSþÛOÈkY?úi;AG¶$òøìñÓ,FƒVP¬–)îÞRåÝ5)å¤Ì¾TŠ@ãðäÐ(JT?JT¿Öãaúý/0Z¨ˆÑ%ʇÑç$½õH*$@¹c‘Ï8tü@ÀÈaõa!*©=2‰[èt‰”šðâÑ’¿_Ìi\Á‘ÎQMØBò¶ïºJ§Cý5§7áUf Hÿµ¥^ü‘Ìaà9¼ ¬÷ŸŒÛ9î·§~k™]ÚwVß®'èÜ1ï8³„?BÍŸÍÙ9÷uàL¼w7¿"á¼äµ_¦/˜ƒ5›(JeU^&†n&˜²µx”xÞøFœ‡âMûÙ˜·h'n”Ÿ/¦ëõÊFq€5”{Ç#ïôR ;âŒOØ>ÿþ¦à§Ãˆ¼~@éûøÌ ›äŒþûï›7wèÐÏXl“1ïg0Tµ÷ƒ³‰ë¨Í¬ý5þ×vý„È"Æ'_!xHëºh‰Méh»ÔÿëÖ–e“­/›ø—DyäͳU>Î4à/ëIÝ´"î½fó*&ø»iú#DSí܆8*"ÉsHüLæŽÌª«U.þÊH`E³‚SƒÛåXü(°ì­W<ïܹ·÷Âý'´ë $Ù’#´|Íß8G ÒâL±³<˜4.ˆ7šÇŒd¶G&3mX¢Ì³Í«P"bBæ¯Ä:ùS7|‚ùû¨hô·œl3ÚÇj6kË‹UùÙÚòEöm£Ô1Óm…¯KÒŽ ÷ïlOŠ šû®  vÔÙÚ9sº¸¨¸Q”¿ûÏê[rðM¤GÌœ†cÇ8`Ë®Bý5Pd8Ö×Q örÐûƒçp•]µ0wñëÎÖú¿4‹=á…'°¿”dKNÎ8Y›is×AcÑ— LZ™ôxû«‡IÕû¡ê·æìçë5dµD‡L˜újgí9gVަ¨Åê1 -FO “BIÄP"ßî¦@«•„³b$ÕÈWCÌ@ýÀ‘€Á:û㟯À  zI£Ú}8E=VXŒWcÄÕhyXE•`°š§ÙÇßìÇCôWN·ÜÄÂðR?ÿ& »èÒ[ÍÖÜ9¹/÷³ÞAuÿ' F”0 ʧAIã纉!2kD=D+!È Nf`Ì&âù¿°åN^ …¦ÿŠ…æ O$´¥ZM‘CÄPúR°ôfW=už g±Ðp·€^©UÖèy%9­Ë¥5‹Hu -h4oÞ2Žk•jÌ*³2S©Ê«ïÉÔåV³åà)ÃXÙµá#Jýâ¥x¾— Ë—[ÔÀ³·›'äE£¶—ßð)Ïð×Ê ^AÒðä ' ÇúŽÓÇ­UdffΟ?¿{ź̙³ðûï¿lIÐ`âÄqû÷2ãÇq} X­Vûˆ$66¶½:º1ÁXðA³¤Ï>¯ôIÝêp$]ƒ6Tø Héçû<÷‚Ýãå¡ñÇ"P;57a BÕûÈnž±!”92´Gvƒ# >ræ€EO€ºAÄ­»¿IY7\\€:0d %4H#š(ûº¹vî3 f³È¦qgJ IDATá(]Z†Xöþ½×®95Fì[±ñïÄW\¨äHZšy[ e¦R™©D”*Z;”ë;È—Èn-ž¾S!“K˜lï[×0¯½94áᓱºèŠ2EÕõ*W:bÎÏHðìÛ‰N]”Wº}—Ab‹úó2£õúÇËß}•a4€4€·jñr<¶C/l£T¢È¾­Ì¹£ÌËj¢¯›Mèz1º^ŒËÏtÚ²ºh”Ž5âé.{VþMhYV385xÒI]dê߉0)@~ꯂ"4%++Ñ „†* „S6}5胋‚£¡tËZ¹S‚ް¢U Ú±_Ã>Þ€Xæ?qÑ3OÛ¤€òP½¿I=]¼7ÎÅûNç£0üžù·nf¤;$耶Xj„Å/NÅÕ}ÐTˆ§í…’²÷kï©íúºÅŒªÎeWç²Àƒ¢÷ëSëß÷\ßÑŒ>!@K_Ÿµ÷ÐÇ£ 3ÿWNHyÿÊÐÙw 䣇X›§)?~…ònt~bd ò¡ºZ4tèx¸t阿¿¯‹KìèHÎè™Ùgîíºçð…úwþÏYº†Õl¾¿l®VXŒ„¤mØ­…¹ n§;[›å½++ øCߟ{|ÂeýU„¦P¢ ïÏ=kî1³óüÅ µ'P|»¦Oò&ñ'ñ]1o{˜‘qµlÛz$¹ÃÎZÀ’ÒÊö׳2.½õ b=³i[çâk…ezQ•*ï®2û¶®ºÂ™ELcx>•üÎÒ®|hŒ*ãÍ/nÚòðBáχ÷Õ·ç…14#êAžòP TyŽH±4 Å­¿…1¶ä»ÝŠ»¶ä+v’/J{_^FÔÉñX3•«¥‡³gÍ£0$JÈ‚•Ô¨Xp£›C_U¿Aõþ&ÑP[d Ú£Gÿ¹Ÿöþ(Ýú¹³µŠÁC×|óc‡ú.¤6Üù’²SEòrÇE$é•¿jÿQÖñÈÚlpòÆ4þ¢ÃÑÔÝ××ÅŽ‚‚â””)YßUG8ºQe<0ò@Í­šfËÇí×wVkføšÒ‚üUï#ï¤ZVý&(^p;]jplÇ;/8ãµ Vð ¡ŸôÕYz rßqÓôvv*È|ÁQáq€µµ3GBÀ›@‹ëV¼©E%ÎW^©¬º^¥(S´bZÊIä0#™)É®®·Ë'´@PòÇÿM&èt€yåõï}Ôx?²"™¼L.+’) ûç6ýU[AÂü„‘›;-,­îÒÙŠÝ[‚î"—Z:}<³¤¤1±ëüãÞr©"ë–êþ]ùôÆù¦Í@Š [¶Éý4wjÓ×Û’Më/®yåN‹UrÆG!´{½½¹q7Q-žTµ*ªø¹p( &è­<ŸJv7m÷½â?4×Ή<xØSzAÑMØòpåj§µrÜ„Õk¾ì¬c! ýe§KŠ™ôí°‡¢sToäLB3ã;ÎѻݤÞÌ™ï;w𱟎‚{ñßÿ[ñ_îÞ\Dçó‰ó±iD›jHÁáìg¦Õû„{¿£Å&"v íB‘Jñέki"§x\ŒòGÆ ,XÁïà/ëÏs8Dm†Ü÷Àj¶•#uÓô6Q¸ÜAAGŠ9Íïš*Q8 .iURÒª$·GcÑœD'‘ƒ }*cù…rÑ-‘(CÔÒ°æVMÍ­šÜ½¹€%`}û"Õ4™‘Ìf.„“åÊŠ+_g4®·5díV˜z8/ÄkÆlõέ =°÷WI »Š)+’!êx»)'Nõ£-rfü0" ³Ú¼êÀOH‡8&+táÚfæ- |«N’ç¦F­Ê¯¬@º‡Ÿ½ö«G{KЙ^ÃÇz k”K³çýÏ™¦®«*WܽIë7Àý@w^Ó{+X©Ìa¤—¡îí;õUùÝ›ZA±Y£îý®½¸ÊK߸qY÷àM„‘¿Mº}B’nô×Y±”q<¡p#õ.F៧ץÛ{†ðuP°¬¦÷ÛÓM[3”÷@~ÓéZ_ˆÙ äEŠ£àøøˆ5¡IgR”)*ÿ«¬¸X”ìmÌwM:SÅ…ŠŠ °ÚÖ™Ž ÀŒd²bXǦk\(Ǥ3Ýüâfmfíó§žGD}ÄPQÄíÒ¸¡Æ\=Äß·¾o4d¥ïd§=6¡Z9[¤Ø*-ˆFåRi<=ˆNáRš¬ÈÎÊ,$„Lèc/‹ÑP¶m½,ãªN…F¿³ÔaŒÉ ÿiýrù™ã¨¦iæ‘c‚ý¸]tqéLJxŒÝp¦Œòú¢Ï—¹Aì‰/zNFa03AðÂ`O‹ÞZ»xó7êZ)²†Ó_æ› kå§xÍÈ÷'þpZW#F´'‹ÑÀ~fšûu5´Ðב×dÚ\SÕ¿CÍM´sr8ÎVjob縞^š©Ó=öÿÒr• &îÝg&?Šƒb X»÷%2÷[q¡âÆúKÚz«³Ÿ¨•f§Ú}Û·‰öúp¡0˜ 7Ýÿä]«Ù\í£’‹“ƒE*Åû·¯Ÿ©n˜”|‡c\;)(ã”ë*+Nb!qÐjêÁŽÐK+þ°§®‹Ty7¢¿ïéQt“Ô… Îu!hK@‘Ù8?Ì‹ ìA½e·ÈŒd2#™ˆÄ®•h+ÿ«”dKi‚êëÕÍâLäeò{»î!9$ŒYï@¬œüšð+–—ÉUt'ÝMÖ‡üáa4úÖW–) ¾ y†zÒ‚h >ƒÊ Ñ¡Œ6ãg/¬­Óf|Ñd ?Ø÷Ù?ŸíxܳQ.-Ûö™òÒú Y°Ò™+ùæ÷g¡nßh6à°¢P3gwimšÀY òW½ß2â…ÁZÍ&Ð ËÊvl¬>´‡=ñE¯acÝ,°ÓaÖ‹¶þ®.³tÿ)ÙIP{TùN£¸ƒS܉HmÞ«ü¤Ë9È›ÜEæÎð òçÙ™ž¿ÒK »Æz ‡+õI7ä•^‚¢• K´8ßhlmVéhqÀ}¼Æô>vnÇŠ÷>Z¤Qû ݨlqt¿ù·}aŸûU”ˆîì¸ïl3FXçøÍ»9ú#‘Ç÷I":ñ'¢:Pcâ±m™.y?{mN¦ÊdË6‹e0×÷K§Ø "Û ÊHÁ4}·é+{m ²§†y Àj†ú«ûDmyâjsXÍ ‚*Ô… )Mè*Û åÍ€cõžgŠE }.4ô¹P¤¶¬HVzº´6«VtKÔLbwHÐHîJZ?ŠÖ³Ô{¤_ÕY0\‰ûí‰ciA´‡¦Ô#7 ZðWô¾”È"òRxѯEwœ kÅE_®°Û§°’Ÿæ¾úŽ3‚þ׾ݨÛ7¨ VëžÏW¼mw—]D¶_زMe;6jÅvEƒ=ñEÖˆ§kލ¿vÁ¬Q€^TU¾k³èØï1Ïz™äfêFÐ5ªÂÏ–hJ lÃÅ)3؈óç0ȘÐúo1xKè3¢’3>ÊjH³V]o„i$%â½ç „@ pÇ"p,À{‘×ʨ¯Ü·Jò€`+„~bÓnž@ˆOÀýEMˆ¸"2&˜ÁÚhZŒžÜ7Àkt¯o³méºÃR2/žÕWV ©4nÂàMÏ¿LÁv©•dø ±Y;ó-&Rºï vgÕXpsôG¿^—ݺ¢UåÒêC{^}ÇÙ–E*Å«×/¥×ÙŠaQè÷#ú¬ŽéOÀ`ÀЪxàÑ«¥V*„klA/ÒK5½÷ǦÄ6\]ª{ )i2}éøÍI« ,ŽƒóÀ3©·6#”ÿ®-#G]£F,b¯WR9±¬]gð´ šg¨'‘EDÂT–MIñ¬bͦ.|7úåý<ÕN(Øʼ¬Ò-ŸÚÕèÀ™óX)­¬»çO9{]X3oéôZ‚±Ë.‘µn‡VX¦£ DJx4¢_Μç7õUÑñ?¤ÿ¥åR„© ÷~W{æoÖ¨ñ>c&¡ Dp£0J%E_®°ŽšÜ6äp D5C5ìi`”‚^ˆ1ÖóŸ©*¿ä%-¤@}Ù¤ÅðSE 4Ý ƒÔŽôO øŽ x6üÁƒxŽma³PÆû št0k  à<9ò‰»lúÛK°ù£ÛÈ<ŠsŸ´Æ™=l õO 9 þÝþͦIÀƒá1nW§ÙȺ9ú£ ƒ šûQÁÚ¬f³øÜJxtˈ“ÕòåýìÏrïÚåó>œ-ýGÓ0QæH(ÿÖ±ÎóQ{t<~ ÂIãØôîFÓu• ü`Ö9 |_j-F"yÔy )uè„-½0rr8€¤0 ‡ƒ¤— gŽƒ›„÷„(Od‘Ø‘¯Û˜ÛtõŽ=³°Dì䣓¡ *—ÚŠ˜=yÍWçß|k61³nïØµmî¬w»ÏŸUܽY²åS¤N'‡ž·‚?¨õŸX«…ÎVáA¥0"$¬‹ÿ‘Dä5¿:TºÿôÙ¾S_; >w„Ä¢ª?ÕžüËgÜd¯‘©‘‚ï ú†tUÈWÿé³›ë"6ÁݲÏÃÖ6îFÐVsP’ýÓ6É• ¬$œŒ y–„÷¨ƒ¤µY>c½“Ôv, °TÀ{ƒ‡?˜Õ Ïp¢f­Ã{q‡cÔoM©¡õ‡À·9Ü}‡?ŒÜ<’èE¼ºúª}"×'Îç™=Ï8³çvsônFB£ì/¿n§Å&bHûÚô:ñ›7¯äÈmÝ…^×/áýˆ>ØÆöWÔð „Žü>ÃV?!ÚÈë! 4Ħw“ —ú«ûvCª€ä4ðÞÞ{Ž·× @Sª<5o“‘£0@à%H!@ rü\tæpˆü –5éʃ jË÷>€ qA÷¿ïlU›ÖL{nüspô ÔíÙYùìTŸnámZ{úPÕŸEôîÇ®øUë)TÖ9'¢Qtf÷ªé‹Æá}§ÌàLzY|îˆèäA$žÇ¤”Wü¹æÈ>ŸñS½Ç<ëfêí‚A,*þrBÐQLà ˜“Ã!î(XŠLÛ€Ÿà¡Ÿ4WgQðàÎýÇÞSsdŸÕlÖTkŠŽyñþæÁöƒ ÐW‚VFè„`”€¾tBÇJ“M¬R€IºJ€Ì6u!P"ŸkŠ Ý€Ú£­mæû‚› ?^ ^>8þÝxáB­DËŠaùÄùtn7G´ðú*ñbRÊ+ü8sèÌæÏr³6æÝ3=&ç뿾_b,ÃÑ‹'ä#@aA¸«¡Ã lµÍQëI{ èk ìkY:ä¾ }¾}ü4]WÙ„ Û!Ø ¤ð1hËAuÔ…6jÞf(9ÎÓ&““ÀÒH!®þMïñ@K€ºó Ê 9òÉ$è0tíÐâãÅ- ¡±è¡k‡º¸“…­Z{í"],&èt;Ö|ôé¶_ûÿ*ß½E’vùŒ÷f‡-ÙèÁös‰õAy™cÒïÈatG¾‹Â`|R§x™$½’VsdŸ^T£¡æð¾ÚY)ØÏLÅ1Yà† ½`ý"ƒØV}Ö1AG@äAì~[Ç…ól=ˆÜwÊ ,•&ÜûÕlÖUU¬ù lÙ&‚_à½Û¼ëAW F)è+A/]%Å`€NØvDŸ™Ó€ž¤pðj›Eì5°èA‘ ò ¿Ñ¶@ƒs;ž=~x0</²G7GäšPÐÜòW½’´ãž†ÞåøÏ¹yå¾ÂKJÁâÖõK˜E9{/ß—@vô5@ Fཟ¬v |l4Q¯;MþèôÕ’¿ŠÖ8Øm¬H‘Ãä0 …‘îÃkø½â~â€ÊxîïçŽN;ÚØ¼GÁMØ?Áõ)H<7èƒå÷?~7¯ïÞ¿{æô™íõ­Ó–íØØØc‘¿pM›iè~?ú'-ýªãÝ¢Q±ó>ìΗ…Áx Ë’"ÏL¯9¼Iv´ µ§IÒŽ3‡¤p&½ìÐkÒ ‡=dÞ ÆÀamÝúÞ.¾_¼ÇLÂ(å»6[Œ£\š¿êýàw?vêpót¦h¬³ô5 Bå^PfµFdë¯BýU¨üÙ6¨ rxo_Zjæåß ´÷MÞ»áæè­ÁdÒ çÅâLŽìãó0ñßäÐ(öøi¢j°ØwÏ=À ¶Ëç/oŒÀ%‘ÛÞ Á8Óžè‹ø6XÍ Øj£é·'Ê´¥€c# ‚>MÅj¶ÍÞšÕ`ª³L 0)A_ug[ëyö¶xo›@NR8ßX©ûQƒ7š÷zÞëYßeU§W€ï ß¾³ú¶7Ñ~¨Ô[É£)Î@Å®m•)O?–ˆ£\Z²yµºÈ–ÏÇ’8k3 —fØwh¿pÓœÅV em° Ъiÿûpxp@a0Œ„$FB’2/«æÐ^ÄnÒb4H.œª»|–7ÈïÅ7~îÛ¾tUE›–"…ÁÌœ×6Ao'˜CR<Ø~…–XtZ³FU²yµ+ Žé;Á ð¸÷šãÀ¬MÓÁµÐ `= =€Ô8 FƒçðîkfÖ€<d7@SŠL0)o†üZÐbAø#Èø2AÀw?7GrQQqáäÉJeCºUŸ>¯Œ»‹%´wW¾S_½P˜»œRA¦ fI þ›„ÁÿãñÝíÜæõ$P½@[aWŠ öHÿ…˜].%ÑÄ`1€A =jl,Üb°%<jÀ¢ƒÌ0ˆ;ölÑ€D>P"Ô¾îþ´+Aæ]/wê o´ú»[×I*I¥Ú¾|Áúöwñ¿På•lYk÷XdŸæ÷Âë.znÜð êÈŸh‹4JäŠ w r$¹÷¬z)8tÜ„iãûÄô¬kJŠ¥.‹U剎@f¬f³,ãª,ã*=~ßÔ׈îµ¾nX‚äݺ˜[üZhTÄŠ¯Š>_f”K-FCÉ׫þïÖ†Zc°§@ÍŸºÓØ}ò .„úKÍóy,z¥ƒ,Õk#¸”¾@}Ü÷¹A ò »šPf;Õ˱4Û9Ó%ªa˜AK€œ9ÍSi9Óœ&>¹áæè½55·þúëi“©‰;Dnî^½^6iÒßht;ÚM¢×­¼wçLjXØD¬qdê÷£žvI>w£ÂVƒüh ›/7) ÷m^ `µqndþÔˆ0o1Xô`R:-:ù©¢Aìï@ vËä=>LVè;‹ª6®fÖíƒ'Oÿ\—]q÷fÉæÕ–U¯¹¯¼åb v•V³þý7˜Y·‘¯õ¾~³¾ÝìÇ}!yLo}…F…,X¥.Ê“üsBz%Íj6€üNºüN:­ßöÄ\É£íÝ0J%Å_¯²ô+† tˆ<~äÚmˆoŒÕl.ß½Åb4<¼±}è'€¥AåÏ j:% "6Ùʱً²!Nµò ÌU^“ØB«Ù&±‹à<Œ$ ÆvV¢Ø"XTÙ .pš2KðjЀ”(ǯ , b÷ƒèÔ_C 5Î*êæèO4Ξ݌ #(.>^Tt8<|ª‹û9P^ºðNzN‹|õÒk—eÝe1ûïn䇮ÒA·uÙÈÿ¨“‡ÂÞð,ÀC, 0$ÀyžÚ îrü+ßé@u_«Þ—§L_zú(Âwï}óYꨱbWL£‹NüYõÇOÅ(!ó–Scú»òCƒÉ¸þõiÌ’"ä«”òζÝÝÄ—¦s™:94Ê癩uN‹ÏAJq÷¦âîMJDŒÏ¸Éô„¤'³ø‘Q*)Xg‹AÇd…-ÛTôÙ­° „{¿Ó‹ª¹¯¼õ0—í!Aà\Pd€±HáŽÉ+7xÝ"æ¼êH!®6 {Ê“[ÅÉÍÑÝh ¹¼¬¶Ö© TIÉ W8ºD¯{'ãÚ_eö%“Ù¾oþÍK"2÷ïD<^Üh”™~™x†xo@{ŽhKX€ö<ЀgÙ¶iTím¾sݪ7áÃ/¿ÛüüXª\F•˾޸rùªMúˆ•ûw"ž­€£3C¬$‡F¹òÃAÉ/ f3+mzêQã–~²¡kDn÷•·¼Ç<+>wT’v™sPåg«ò³‰Ü Ÿg¦2‡¤wĤ’óÞXðŧ°´våAa€Ô[Öó­Ìe6(2šOŸ"ËkØÆ´8 ú@ …4ïó b(\ Òm*8΂5I C’>•™ .‚úK­ùÃÁsP"–èÒÀÀ 7ÜÝвÖ|›{ø¥´pÙÝ »|Î%‘¿O2Î׿üðHÒŽÓã=¢Á'\` ¼7 ñ6Áç èŒYÒ‰ý¡ìkÐ Àj¼7p¦AàÜ'·þIƒJ_¸¼è“E@8uôô¨±©ÃUЈÅh(ßµYz%ÍÆAyüÐ×¹h~þÊ…Ë«?ò”˯Æg§®\¶î‰xîÙ~ÜWÞbO|A|ú°8í¸Y£Bتà‡/ªþì3n²wÊ„'¡Li—Å ;†DḮtËZùt¨¿vÁj6½¹¨«CæHÅ·èAWió×4;iÅ`$c ù€ó„»¯4‘ÃõP° tU@ëg#ú²«­™±Pc€1èz›M¤nŽþxA£µ²–Nom­P£~ÿöõ#•åö%ÿãñ¿ŒÈò €×ð±Ò«ÿ(³o@ůۨQýÜ®Ûj«Y¡Aïvõl +X©`¬‹ðÞîôÞŠçÆM\qòoúõ+pù«õ£’’ñX\çt¶tûz„߭߀yË]ì"öÚ_þŧT³ L,kî‚Y3f=Q×Ggú½ø:{â µ§ÿ®=ý7ÂÔRIåþ¢ãxyÖ'urã*r½› ‡.Ù@‰x ¹’h>dþªò7×]: ²—ó«*–mrÑ*ôœ‡­¢ëA‘ê]s`w¨«„š?d¬b‘—owz,¨}Ás0’€Ö‰æåVtò 2çŽA*ö`û{úðY¹n¸9zOäãç,Ü%$Äi(ù÷Å÷WÞ»#ÑÛÙC)´ï Ñ44èÍE¹KÞ4kT±¨úï½þÓg»¼ øƒ÷xŸp¼êqÕur¶<Xøéæ-Ï"©TžÕUë—Í_µq{çî_WUQºe-Î Þc&ù¿<ÛEÅïwï¨ß¹ k6€Ž@ˆ[¹q¨Ô'ó2aHß)3|R'‹ÓŽ×]8D}˜”òêC{Ä玲'¼Àù´©Ä"EÎm£TâÁö£ÆÄ÷Üò¥ :†Dá/\óXú¦Šá½¹K¥#ñZZaYáºÅü…k»…“=μFƒ×h[Í ­ê/ƒ*ÏQf§ÙÕR¢€><‡;MúìäNFnZeömYƵ+]ì:±±‚%‡F¹«¸9úãÁر;ÿ}XË´Ñ€€¡¡ŒŠTŠW¯_J¯kpë›ÃÜ—Hi!¶á˜,î+o!/¢Òú&¸˜ æ† a«A_ Ц#(, "7w_O\7z>TºßkseÛ6éÒ?ÿe\š0¸³v®.Ê+þò„c€ï”¾Sf¸øÛOW-&œ:Štå*}ô†-xb=—©s&¾Ä~fZã2¥&¥¼rÿΚ#û}R'{y¶öä_¢“"ɦ€&gÎcIéqV™—UºåS;Aûx)8ü±Ÿ•ÿôÙ"¹úï=V³Y+,Ë_» |Ù.VÆí:y@äÙ¹'(³@•ò ¿VƒóÛ‹ô§€1<‡‰ÿH§O­fsÑ—+ìÝÅݛ½ßuqV›Y£*ß½¥þÚ…†^qà0Þ¬½xzê±ín‡àpŸþ•ÊmþÀX­ÍŒMVËÆ¼»‰gŽÚ z,ƒyeô„í‰OQœÌ†{ kÏã)ûá ˃°u7\WÒ v?¾m˲Ç{ƒÏ$H8î’9ºnt³fÌ’FDÚb9µöcƒÉØ)»•ßI/\·¸Á)oÞ  ºJ«YúÆ „SG‘¯ÒÞ´ï~st;2¥}>ÿ‘÷æ";;4kTÕ‡öÜ{÷¥šc¿Û :Ø‹¹Þ¸Üãº}t×}ºí5úÜ˼7!Z¯Q*7vŸõ IDAT)XóR)¶›ï ^£÷ôÛýµ:^ 1ß÷.¨C'ϸª;\%I;n¯œÐ°šÍEŸ/kLÐ@vãrÁšÜæòÇ~×®Ý\ºtÝ¿ÿvÐ⼑c1TTT¦¤LA£ÑçÎ ðw¸¤³üÆ…HQ‹ÅtëÖWƒR(¼tçζøøw‘mî+äoܸÜX>_³:¦?¡-'Þœ…9 gZtZ£TâŽxyˆw/͇ ùî–p£‹ñ¿•›Ž¼:o4xVWmÙúù¢Ë:¸ÃšÃû­áXAs?r1ϯ´J¸sáœň¨¥ßïëÅ.dêÌ!)òÌôšÃûšØ˜7Fùî-´øA%„à! —nùaHÝ #`IAãðˆe”K Ö-æÏ_Ù¦ŽÉá€÷vZÆŽ1°ËND•ŸÝÊÚ¼åo£=lÛTÏÆ1YÍLpL ÝÚ ˆ¡6„ÑcI»F^{æo{µã&7¡°¬æÈ~¿_ïâKd5›µåźª ,•Fê­ZþãçèË—vá§—ÁÚä!ùôÓ¯>þx¾Åbùì³o¾ýös‡K:³u°>Ÿ?p8ÊÅ‹‹àêÕÕááS=H>ës²¾ÊÏQ=ÐÒ˜¬-ýòòveÏ8:“ûÊ[å»6ñ7Ð]wà 7º?¢ùaç_~ÕøËN°ü±7küs±áÑýŽ©úã'»Ç"Á/€¿p­‹Áÿe\?¿dSa‹‘' _ºþ7Ao©3’ Iò;éå?}m¬¯s¸™I)WåõˆÞ¸q :ŽÎ ýp]÷,³Ê8ŒO¥!Ñ8¶hÓ²ù«z€§Yà\(Zã`¹8/<Ò#¥uQžª GWU¡ÌmÍnؤ5ú&z\MU{ö°Q.ÅÑ™(íAÀRéX*M àèL4exvú W•Ÿ-øá {š@äNŸÝ+óh?GOK;ÔX/o§OÿóÍ7ëÑhÔš5_8[òˆ0¿ à¯êêëZ­äÛ´Õ‰Ïd<˜f¢ÐKûô[‹Eµ#vˆ•ü´ìÆŠ»7 |׿¨u;Ü/n¸ÑýñþÛ‹–?åY)D[,>]ûëá‡ØI3 Rpxè‡ë\ô¾8þÏé;k?¦h46rÿú[‹æ,p_AD뛀¸Ž8~ýß¿×ý9º2ûvéöÏ‚Ž¥ÒC?Þ@äuÛ³¥Fņ-Ù€Œ(¬fsñ—+g-`%?Ý­›ØïЋ@¸«I")‘÷(Ÿ,Fƒº(O•wW]t_W]ŽÔŸêA°èu­üת0R1ºZ€‘Š1"!J§qÊ|px+™jöñ7sÌ>þ(ŠôàŠ7t*djmbJM~a[¯é}ëÙ"gÏ+ÐÅó'\<†+¸ëXtà#âPZÊl­e2 4j”Ù„ÒªÀlB«•í%÷V³Ù(•´7#Öj6gܧÒs»¦–|µ»ëè yíÚ7nÜŠ|õõeëtz“ÉäëËv¶¬V+\¸paäÈ‘±±±#FŒhïq¿¼Ÿ}¬¦¤ÙBµÅ¢~@ÐCô÷—p,¯ípUð#òkÊÔEy`±0¯Ÿ‰\·£;§+‰jêvþð÷90p`ôÌןõçútñ943‹‹SSA9ök×ÕsãIÆSC’V½4žY! i57î_ÿÃ~‡›5‹›Dá=Ðh´Y§E´"¿^÷Iâb±úOÍõ¼üòYIgLÙöÓC‡Â»QiPÚ3ƒ7Hyÿ®]¥Ã–aË‹pt&=1‰•œúØ32eWËδ˜M@ð [²Çdõ¬–·Œa/Dêq犘‚ç­è)Iºí…VX¦Ì¾­-/Qå!NÇ$ %"šÙE oÖ Ú!Ä{¿SåYŒ4HÄþf_zc\ß¼%sìþ°Ï¼ïÒ¶ïC£\j5r©Åh@~£\j5òz«Ñ`J¬FƒQ&µètF¹ô¡OÒ—„絟ïu ܵ'qtøå—ß##C‘Ï'ŽÛ¿ÿÑh?~Œ³%‡Éjù,שúŽC¡&ÖíNÔü'“ kãþçãÓQË¿ ¹å-yÓb4èª*DÇtÛé¿ÒnÎxå“:‰-Iåì™ë_oÞ÷ë޵όïÒakY#ÆÓÐï ‚¾ˆÚð}Ï­BâFÏ‹µ`éíEsÑ 3ëöá3Çž7±%Ao7i5è‘ye4üÎRG•2¥üóù³™Ù¶NIÀ{çÛ_ý}ÜÕÅþÓg£Ð‡þèV³Y™s»öôaeÎmd­Q.•¤—¤'rƒ¼Çû¡þÆeuñ} ó#={ ƒÁ{³z‹N{÷Ý—œ9²S£{[™”ÇÏÑ›¹+s¹~W€¯/»¸øVëK:¹µ"ÀjذÏòó*‰$;#ãëuðˆ¾“g(²niJ ¬fséöõÝ0âeõÊšt36™W¯üþƒéÑr©:?G™wWžqµ•ÍäwÒíFˆÔ„£3ñÞl,•îáã‹¥ÒñL–ÛK¥uV·b5›åWU9–È a æòŸ(,\óÅWÓž¦Õ×5šŸW}¸~÷Á†7zyqË Ÿ÷ è«+]Ùÿù+þ[õ¡ÝcQ;vü'+7âGs£½À{³[qÁ1Y>©S|R§¨ò³ë¯_”^ICòç,FƒâîMÅÝ›X*1p˜÷¨ñZU©»t¶üÇÍv‚¶lS÷Lfmü§ÏÆyzUîßi5›5¥ù«Þ_úE÷©-/:ñgc‚nW‚Š¿ø$xÞr½¨JSZ¨Ì¹Ýzº'–J'rƒ¨Ññ„€ jT¿^àá&½†õ>ö1žwúìòÝ[Z®ò|*¹÷Umïv±.3g¾wîÜÁÇ{ÑtƒqÆÔã<™d2'%eëéÓ3àÊ•|þ&3²ƒ£Æàw—æ-›kÑiuUµ§q&¾Ô}.Š@P}úÔ5gkO¼2ûO9/™Bd±^^ …Èæxx6Û‹@h÷xÃîE¥Ê»‹á= ³—JŒR‰ÃÊv8:K¥y°ýðÞ,…æÁöÃ2ÓÆ§TD ¯­jsçO.Z·Œò W óÊë+ÞûÈÝæ]JD %"ÆÿåÙõ×.H/ŸSd#tÙ¤”Ûb`x|¯ac<Á'Í:áÚ^@Ðø¤NÁR邾°šÍ±¨`ý¢nâQc5›kŽìw&¬ýÀ)ƒÄáñÞlJx )4’Eð h¯XîF›`¥L° Èè®1Aç½Ñ -h»Go—ˣꑱ¸ÿñø?–8àvXúÿ‚B &æµüü¥¥§M&ÝÅ‹‹'Oîh¤ÛÏ>:¬9´—?øqYÉdªÜœâ¬¬ÂÜœ’ü|Áôl®5Šl4š÷üz¢õ}z±²µûs}° ‹Å “ ¶%þ>Þ‡EÃK„8QÙCórzü`g‹Lª6<žŒr©Q.µOa7S>ð,6"ºãYl“…g²°T:Þ›ÝX±è´MRW¨,%›WG¬ú¦{qãQ`¨Ôk±{=ïÜ€Š]Û*SžfY-’NˆÏiåWmη|±yå½X‹tBÌÒO[Æ»»Ñ•@ãðˆ‚h‹ê.Ÿ•^I³?þZA±PP\¹'­_¢çàdÏÁÉÅÌÄçŽ÷~g#è<~Ø’ ½† #`IÁ(¥Û×[tZƒX”¿êýù+)1ådŒR‰Q.5ˆEª‚sSÃÖßÝ¿Jd?RH8‰Çï­/»ÛèŽÖo€üÎu}µK¥S£ãzŸ‚ÞM9z7Á—ñ3eÒŒÖ?ÛŸŠ¦{"ŸGŽÜ,œ·XLÅÅÇss÷öéóJÇG‡u—Ï!ô´tËÚ®‰x1™ÌAuÆ­¼¼ÜÒü|ANv±@PÝ:))H"«“È‚êfËIXˆ÷ÁÆû`Bh˜h/ ÕÉßµ 02‚—Þ;@Ëð-8y"•km¹MÌ6ljÂÀ~v!Ä$¯7HÅe׋ªMJ¹Q*ÑKjL²úV&¥ÜYL!†DÁÉHüŒQ*qÉ`1*~ݾâ+÷CôäàÕ×xíy¢FCR©¶.žû"謭ÆËA[q“kW|@<{©ˆ¦¡P’Ö|9zH²»» ðÞlß)3|§ÌPågמù[™}ásV³ ·îýŽ9$ÅkؘŽÕtJDLð¼å½Œ ?ÐVñ®A ‘š”òÂõ‹ƒÞ[n–×+r 7ˆ9d94ªÓ^yJ¹A"2)å±H_[mRʲz½¨Ò µùØ>®aÈ!á¤àpjL<‘Ô£z.~¿€^ÿ7ÝÝ1(X\ÚÈÔ•÷îü&(–èuË`~7 ¥ÑÓÈdFöÙÅ‹‹àò僃S‰ÄŽNt6öxyD/¢šºœœ’ü|AnNÉíŒûùùeÍ›´…Èôb”·`Ø^zylJÊÀšš:½ÎPW'W©´"QNgÕÔét†ÊÊZ“©IÇÇ$¢¼±q>>é‰Á;Ñ›”¸+1åÖY2jME2³Æ$(<Hƒ‰Ã¹Mn]¡Ê²üŠ¶ßº_ß÷bDÍñÂb18& Çd9ìÜr©IV¯—ˆô5•f•!õnÚ¬Q™5*ƒX¤.Êk¥¹Ô…¹‰¨õ:)nô&„qyì‰Ï+ìÖýÜô>QÍÀ)fµ5®•¸I•V³añ\ÆÍëÈ×z_¿Yßî ö㺹;¾&"b(1Vz%Mrá´=¬Î¤”מ>T{ú94ÊkØϧ’B[­9ö{õÁ_ì :áš^,ÐR£bÖm*\·)DZúõê†A^–øÜ¿©¯µ«„¤½‡7)åQ5ÒÃåR½¨ÊU"î>ã&qÿ÷–ûþw£ €Z¹råªU«zåCüÑ/\¸0¢c~™Bš‚Ã1IÚ&“îçŸûÊdEùÒ„ û;~ÚUF<^ÐbŸÏ~@rhT*íôìÊÊZ>ŸÛ?!ÊõoÎp7« +«° _•U((«8¡ÚyŸh~ttHxD`t4?::1AŸòÜ¢“'®4ÛxTÊ€£Ç7c±mLìVfçªòïªòs-¢rL}³ŠµzÈïIÌ9u–‚z³Ùêt‡CpÃý±<Z®·Þ™~Ë3hUx ð|>—äËçsCø\Ï—Êåñ|]i·Æ*‹¡^b‹Œòz“Lª—ˆœå’;‘D"úQ¢úüz¥æ†Q*‘\8%¹pÊ(•ü®Ðûˆj@I¥¾4:…;áEJT¬øÜ‡q“³–eJùçóÞ`æÞC¾J#¢>Üþ Ã}çôèEUu—ÏJÒN4›ˆCãðôÄ$¯ac¨Ñý]Œ©9¼¯êàÏö‘@Èü•OB¢U•|³F[^âpmà¬|z¦´ †`,6Þ›£ºOSæ B ƒ‰\·£—³t£{²ÖÙï/uëèmƒK";[…ÅÆß³ÿ0‹Åtÿþï ïûúîàá|'Ïߺª–YtÚÒíëÖmúq÷‰?ÚjW»y<ßß<*Åqbbq±0'»änVÁÝ»…Y™…m2r,Ããù&$F…‡†GðbãÂqÙ?n\±lÇÕ?†S­P D ™öüÒOf9#èZA±2/K'(rn#Ñá(€–›z°ý¨1ýI!”¨Øþ~©&“¹²²V"‘©UZ‰D¦Vk…ÂZ³É\Y)®Öž={Ž••[™ää”ää4ïë çË àó¹<ÂÝùü&"%–Jwö:4)å‘Ûkÿ¦«¶Ò°Za™VXVß”²#®[äÐ(·/dO‡º(OòÏ é•4;ÿèE-’H°fU©üKgYÓÚ7y+;ëðÒ÷˜"[…*yôÒU›Ü‹=l?¿©¯ùM}M™}[rñ´üN:2ª· õ×.Ô_»€c²¼†ŒöJNm¡ÌËBfçÈ¡Qª¼{Õ‡~E–Scúó®yBº ¶3id¥Ž.ܳC_]¥W™•Š6ç<[{åÙ3޼Ùx–ŽÎÄ1<ñ,ޛݸ-:mÁºÅ--fÎst7º nŽÞQøúŽŒ|)7w/œ81ãÕWïàpš‘Da03ç®_l5›ÕEy{Þ_üÞÎ7ªŸI÷ÇÁÏN.ª©+.fdÜÏÍ)ÉÉ)¹›UÐf(¹‹Ò':¤BdDD…â’¡UQ?“R2mHC/FòÈÇkðà爋º(O'(îÞjÅ)–È ¢Å †PÂcZšm!ÃÏ×!ùŽ›"ª©s¸Û‘£¥ur Z&sœî#“©d²Â¬¬Âf‡ãó¹ˆÐÂçÚø–,•T:Þ› 1ˆûµÃ£`ˆ$«ÉÔLȱQökì-àá@ vSöž«Ù,ÏL;Ð,Þ GgM}®º¢BÿË.ÀŸ9þßÄç‡& ×â&Ï_¹pmù†ÆVÜøìÔUËÖ¹[»‡‚ÓŸÓß(—Êo]ÿsÂîðc”JjŽý.:ù'5º¿×°1ôÄ$4o”JJ·¯Wåg;ÜÏ“CÐmC_GV ¶÷‹^':qÀÅýØ»°T:ŽÉ"ø´×¹ M †/ÛTuðé•4ä]Fäñ¹Óg÷ÖÜD7ܽ×"%e«@p^­®‘ÉŠnÞü")iUwH‰ˆñI‚Ôwˆ¨Ïó%¡«5̓Cfüo™B’ÖÉÚ¸ÀXLttH¿Øð>ÑÁÑÑ|„‰¶šâ tdc¢)-È_3ßúl}M¥¦´@™}§•FRp8-¦?%ª/‘üÐe~ë¶_~ii³w˜ûöÔÍß,D>×Ide‚êâ"¡@P].¨). [FÆ#0™Ìùù‚ü|AËÁLÏ—äëïïÈóåñ|ý¹ÞÑÑ|„»{ {ë÷ÞŠæååì€uß“h4 X[^¬ ÔEyúª ‡”]vã²]@"‡F‘C# Ü 7eïž0)咴⎛¦’S"b8“¦S¢bÑ8ü{Kÿ9Ǭ -–Sk?xð¬+^æ¿ý³lÃ*¢ÙÿÏÞ¹Ç5Y½ü¼»ml°Á6 ¹ˆJHÞïš—"-M»ø³‹•še¥™ö³,Í,+K³òR–?óV–•—0ó‚Š÷ *)!(È¸Ž¹ »o¿?^šc7Æ„1àù~öá³Þí}Þç9ç¼Ï9ïsžƒ‰HŠ˜¿ø™©ÓAá2;”7úaÞè‡õÕ•wï³¹zV³O¯N brú ©ýû’Ñ)9BˆÕã¾®æ #„Ì õ-а«0(a2;¤UvÀ Ðè¢é/‰¦¿dTÊ 4$lÀG8ðD„ fPJJ¬;×–Jå ºO—~áÂ'IIOú–.]!W©Ôšj©B.W—ʘ©d&è¡ÑòA´—Ž68gëõ½Þ…CÌpSRbÓÓ“{ôèÖ£gœ±[Dåî\¦11Ö(JÖìò+‘Ô-!¸÷ý¬”4zTLkup¶uûò—_Zi?Y¾pÑ3Kߟeï^syœôtÇÕ¢ÕR…DRURRUTT^*‘H*ÊeîÂð\499ù΋…Œ ÚÙSù/÷¢Né~× »"3¯8_ÿ\÷½Kߟ…¯'ká ZI‘¶¼¤áÖúÛ…ºò‡§´úêJ}u¥òôQ{—™BÅÅ&xsŸ¶ uׯh%E•œ É[my‰âøAùÑ?ìZ=tÀîˆñ‹’Z¼üÔ«/̦ªÊ5Ÿ}ðÖ—{þñO>~Ûû‹-Çbü‚%ONœ :ïLPù¸«§¾r^yæ¨êÂI¼ù›4ŠãÝ~K(ê‚cõ qœ»¤B‚ OR…"JwÍý¦Ÿ¶H{à£ßÕRÅ«s?=yŸ|åò8+>œ3ãù‰.îÙó¹üüÉ“IwàÀÓÓ¦%šèV§3TW+ª¥ ©T©P¨¤R…¬Z©P¨¥REµT¡©×VK³¼}ùÄÕÈJá§t'ï*t~Íá0ã⢒Ľ{ǧ¤Ä¥§'qyœÖÒ€-Y¬þŽT‘ý—Wõ‰Å¦‹ãXI½ƒSï§GǵÑö “5jt¿¬£ $<gØð>‰‰bo¾Èpùn¿þ=LSTT.itÜ«lïÝE UK¶`›Õ—u[òõ=¹D: »Yc–ÔZÌV´fÍÎÚÚz^G$ çó¹\›Çãˆã“ñÉhăøDZÃíB]eY}цâBmi‘—߃ŸLŠ˜ =]ºìuù¹·×lª¹:xtô‹óa>þ©ýû¢ìàžº¼Ëö"³Cy£3ÂÇOr9ì’>àdÆ£hßn„u߯ySŸN‰ëîòÇ &ã'ï¿E?Ô¸·€:,lÊêoRR:½Vssoþ´ó¯ÜÜB&“>tXŸ™³&ù°ÍÙ½£Ñh¿X½#+ëRE¹,.^4iòÈ™³&µéÙiýÙiýOÉU9§åÇzÞåªöï‹íuã+**çò8qq¢V™ßi¡ƒFÉþæ2МÖ?â‰ç¡Sº×Åm?5lÈLçÖ¥ïÏZüö —ÇWTÞ:~|”ÅÒ€2¦WTôR(Ôr¹ª¢\V]­h6¿¡K÷¥Mˆ%#„Lè…Cõ3Rè-†»¯õ?ólÆ=v£­,!vZfRïàÔ¾i[5Û¤{E…¬T"•HªŠn••» ˜ñ.Ãã²ù®@À¥R)b±€Ëãp¹l€+@utm­µê¶®¼¤¡¸ÐsR*?‚•œJŠñÉ´ˆ(ƒ¼úƲyÈlr8Œ•Ú7þåíb‹Nkª«%qB:è Á¢Ó*NºsxŸ®²I,]'|d;}g­j´ +ŸÊ©ªD)cã—oÛ—›[XxCÂåqúõïÉá0‘S —šHÑËwD† ÚÔ%ÝôíogÏü­ÑhSS¦?óPJJ¬ÿu»êÓ­ï/ýÖ¾Åʼnüõ¥Ëõ'mGE¹lì¯5Yö=vÜ€Ÿwâ·ƒ®²ìŸE/x8 ÏöCþÔIQQùœÙ+ÏœÎÅ­# ׬]ðPÆ`?×Ê]›¥ûr(¤„ñß]óÙ@çòºxË«s?uÞÍ: IDATñþÒo¥Uò  º\®ª¨UKr…Ú6«:l8oìøR„ÑüÓŽ7ê[¬^<ñ›Ã¸\.»F¯-—1 A$´óA†¡:]i\}Yo&Ó&?6ÊK½M“ÅRÂøq >è|uÀå¤;žsFRRõâóËKK«[ôƒxðŒsà» ‰Î“é݃±X¦…k©cj䘥‰ÿϲßýL$9;è¡ºÜ‹Ê §¸‡ûSiZIQùöø>\Ö?ê™W:PÚ8£Z);ð«üØŸö» bD"û¾þü Ox¹‘ “4ráÒËoÎ!X,¡Å·&=6õðÆÎ„ɤ¯üäÕG¦ ]ûâ¡¢²G¯yŸo oKÿ#7÷æäG߬(—᳎^üêËŸÞy÷—3mÇ;¾ûÎg×ð¡q¯¿´ÕËÅë÷ŽÉdžüè›:BèÐ_ç.øâ«u‹ü#-"ÊLn¨uù_åOÓäå}à…üî'‰¤jò£onú~ÉÓÏdøS’ˆ'ž'‡r+ÝfÖ4j&ø¾~âççƒtAÀGwJ¥qNn㛿¹ûWö‰ˆ”^ŠÈÈz:Ý”‘QòËÏñMzd…Ïç2™t.) ð¹¡Ü`€ËårÄ1B&“Îçs§p>›^&B·B†BA$4&šœÊ#ÊF<ƒOÈá´u²Xþ|Ê¡ÓV)Û°ãNÕĦbÅjKÌÒÍÖ¦€€ „þÉ+ò!ž/àò¸ì2‰(2â7„YRÓäÏðÇóxœHQ8î·x¾§N=Ž­6:å0 "D•dUühôg²Øüwæ8/%‡ò„“»bŠyoLÛ¶5ÓeÓg«ç=þÄçrÜYWÈUå2ÞPQ.«®V6e0£bµ¥X}7±O‡NŒ&ö 'F0d‚[! úúºü\ß.@£“XÁ!“M¤ÑBxì F ’8!ˆ[#‰4:‘ln¨/ýnóhШ”K¾ý,þ¿f”ÅhP]8)Ý»Ó1¬EÃ1ž7âAŸD¼ôúâ¯Oa64-æ‘X52!„¡aQÈD¬%)Í! @x|ú»¯.jS!ôÅšÝ Ì_½gÿê&h›¹¤£ÉÃHuá‚/.ø"ªÄð¡3ýv®hŸ!b:¶aYƒåÛkZµ¾1§DÒnÚÐh´cxß4ƒÏoºˆÅ„•Fl%ÂÆy(!Äf³ì§ZÄü×?ÿßæ}¡b]cInîÍÑ#f=þM»Dgøè…ÃŒ…b±`ÚŒˆ ãrÙ¸ÿM£Rìç'Ž}õÊ•¯BÊï&¾w/éÒU9gŒj¥Ëée•~OûYñ—ØÏ¦uKˆ™óV×ÜAS,þ¼û“ǧ¼åàX/~{†Ký<ãyÉÃÂbÜ¿Gª,…* BF„P4‹ðÓCŒ6q^uZƒN‹Â÷ŸºêòsËw|O‹ˆÂÎø'Nßd!Ô;5Áù •»\ЬäTþ„ǽßÇ>)“DR¥VÕåæÞ4“¸ƒPƒcŸk6#„ôdò.ƒ¨pÑKýÑŽÕ8?¿$ñßÉZÀÿ4˜ÐÜcÚÑR¸w+[¾Ò¼üœN­·ˆ’’*II•oße2é\.!ÄãqL:B_C".>ñOç3tówîÍ­?dº¸ª4sf¯Ì>µÉÏ× ë›ðÑ»¤¤Äò\wS>s_{Òó3Ù!C>¸}û JuK¥ºuüøÂ1c6øÞƒß¾éýÁm,–ÊK\¶Ö~?8möù†Élv¨¨¶­V/“)ÛB™ŸÅhvÇëf¹pþú/ ŽŒ c0é<Ÿ­çò8î"Eï‡õÍûöfo\¿Ûÿë›ðÑG>þxîŒçÞw.‹¹K¿x÷ÞL匱jÏžI¡k×¾ëÙóY¡ÐLjmÏÓ¡F²z§û9Y,+9••œ 5O}àÏ3FŠÂ#Eá©©wÓù=>ô©7X ŠÓXét¥é„–'7¨U2—»®êR;Ìx‰Å¸ø¤´>Iqq¢¸è°„(•J6iÔf!„/l°ZÌ&UÕb¶½1×kÌ õúêJƒòŽ—WaTÊJ¹ó>ÛÈî™%L@bSù-}æƒzrÊ¢¨²œ}RqµÌhwÖîÇÿ.ØüÎ$å±?öt$²8XßQêÈ”RõØÁ+åyƒÔ,"qÕäÖï fbP L$`òKúÊœ¾àR’ìS›Ög· ¹ªOÚt—³0Æ÷9pðK¿å\ñÑËÇÌ4™ÌWdæ+²&öŠ_¶ù‚bqÛŠ¡Rib¢2Üe›]úþìÁƒ{k4Z…BÕ8d•*Bõõ:<¨Éd6ãË‘ë5aN …Ê·V㙽¿o¶{Äkã^;‡Ãd³›8ñÎϽÝ ë›ðÑ<õŸñå2—9¼iœññÆÅ=\Tô‡Åb:|xÎôéÒ¥{ 3!EvÐíÕÈi3a©;ðÖï½1eÎâ4RxÐ]Ïé¯ãå°´«‡V‘HD•Js9'_"©*.ªÈÍ-ij¿;Ïûj4Ú¼¼â¼¼â}{³íïy‰‰b±XØ'=I,&&%FF†»¼½©.œ,þÒmzŸð1ÔJ|A³çà£ZiT+µå%.z«¦k'hüH"+Øy€úÕ—»†×^œ|·„BDÓ)ZsAéÆ&ûmå×~Êk8QQføî‡{7„CR&¡)wwp‚˜·ßø—jȾ½ÙOyËå¿f¿ô˜?™ßo~Ï]N[¿9è!.³mûò‰ÏwðJ#E᛾_âϤàééÉ›¾[2óÅöí‘D"®Y»`Ð`ÿM…p8Ì9/O]³z‡K .zÚgØ<{¹\U¯Ñ"„¤R…^o0™ÌR©Âl2›Í©Ta2™Õê:•JsãF‰¬Ú÷}|¨àœ±Ç<¼ Çr˜L:—ËfsXø¸ô7Ö¸ü¢Ÿ×7ࣷ3gÏ^|ûíÛãü¯²²ŠÑ£'„ÇwGEEzYÒZ,\ôÌØqícÑfµÉû½áÚŽaÃûœ8õÝÂ_\8]§30™ô‡2†¬üxn¤(ÜÿóA=zÆ}ýå® ç¯#„úõï9÷µ'ì”ù‡¥ïÏR©êì›9Þ·lþaé½ Z˜L:~Óô2>dÛÖÌ™/¬p=Î]¾â%­V¯«ÔjJ¥Ágë«¥ ÎPQ!kQ¦΀=$Ãu;Ôün‡ÃLLóܶˆ±í¿‡ÑèÑ“³²NZ­.ž’Ïž½`À€û-KNNîúõŸzYbã^ö0j®_ßrðà „‰D›1#ŸÍŽñáGŒJyá‡o:$T îÝ7vþRØE°¿åd½˜›[Èd ÞLJ{¼J¥)**+ºU~íï[øf«¹¹…^Þöø®PÈ“Ý*þbÅ!IŹ*ówÕ¡Ÿù‘Hp˜B³=+ǧÐðgèlŠ…¬«gXu"MÅ ŒG#„aBxÏá! ÚQ`øõ–QÖ`qŸÇeÛüoƒÆpm‹Â}KÊT«×}£Ÿ_w‡Y³zLJ|G HÄÉj—ÔVÙþÉ+b0ƒRRbý¿™¥=øD/xZ8Ù'.ÿþÛ1|ÿæ‘£îú™ ÿ[gÔˆ—Μv‘ê·=ŸyÞPÉd2ÛÖ‡àfÅãø««•ø’΀çÔr¹€ÄgðNC#ärÙ±q‘<'22<.^„ÏÍ·ÖY$’ª¬£+Êeqq¢Q£ûzN?tPœ÷0 ˆ}F1,Ì¥.§œ#°îÝûK$W¼, !´cÇÀªªs!±ø©SûèXè´Õv×å]1(ïPù‘!}‡pG<Ø•k~C"©Âcc.çÜ((H<'z"¡§’¨}ùİ ¬¼Îz¼Ì¸¯Øhn¥l*Á °©HDˆdAXµÅîûþ¸)’2µ.ëüVóÑ{T£Ñ¡¼ê¡‰Ÿ/]åkšLæ¼¼âzMC”8ŸSã@›RQ.{|Êsrî&c2ékÖ.hÝ­”p¯]£Ñ*ä*{‡^¡Pk4Z©Tqäðy«õ^{.|ð/‹…¡\v\œH àòܸ8Q‹úœwßÙ°fõÛ¸‚ɤõõ¢§þ3j øèíé£S(CeKß”.“]ݹs É¤CMœøKB¨…@‡Æd2çæÝ*/,H$Ò¿s ‹ŠÊÛb}˜ýÚeú¶ßLºI"êtŒØ &ž;HÂ,®oÌVâ úS]_ü±[¾öSNmcˆŽžL–=:õÃyo3Û8':thdž>™}E.WõHé6ù±QþO¥òø”·ìWæØ3}úƒ Z½¤¤J.Wùœ¯†ËãĈ…\;22U<À`¢ñõÂß—”–”úY€iÿzþܵêê‡òggŒöŸ»³~f³¥FY'—«¥ÒšÚÚ†Ê ¹º¶A~G]-­©©©3Ün­«\nìŠb2i =$”%„ɤ£G.»<ì¥Ù±‚­J—Ëüa0˜Ö}µ÷𡳹q.æç]‡×|¾mÉÒÿðù!úÒœýÕ€¶®PÈ×éô&“I(ä{_‚ÂQá#’ÔÔÔvœGGY,ƒ·l9¦TÞ0™Ôzý/£Goƒþè|pØw>:‰D©ûõÿÎÆŒzÇý¼CÅø_9Ï ±PC c1pàÀ{\ß\-UH«•’’ª¢¢2¥¢V"©’Jå2‰¤ÊC@¼F£ÓhtÕÕ57òK=üx­ºþZnÕ³Ï=ì·®5@XüÖ×ÿ¼èPXXX¾võ¾§6uèÙtçðª€öÑ'L÷ã¿ÆŒŒ1Þ—i̘ »vDýóÏö´´W|N—ËØqFî›uô¢ó¿.zÆŸw*?"aÁûE_|`ÑÕÛ 1*-vnû8ètDøîÏ»?¹—õÍøÞÒ.Wð+äªI•B®–Hª*+î”Hªª¥Šj©B"©ò>tðíÅëÞ^¼›éÚ=!1:..*1IÜÒx÷„J¥Ù°þ—ÿÊÉÉ?yzâ#Ã:Óõ¶¿Žaa¨iHºíý;ïÌ2$!”½ÿ—7%HTÔˆ=¦ÿóÏv„ПÎxî¹k¾¥K€@fçOM~ôM‡œ 3žŸøÎ»/øYVÏ>)Ÿ/?šYëBˆŸÄñ ä* ¥p8̶ÈUÏåqÜÍ\(ä*M½¶¢\&)©úaËÇçxþ)¨ÕÊ•Ê.|<`Àèû€Îw3Ë:¾qÛÖ̬¬KxްI“GŽ×>OÈìPáä§Á(t,p÷],œš$Æw¢u>ŒB¥¤ôˆ½ví¦óu:ž†Ë¾/তĦ¤ÄÆÆ‰ð7$ãð`A*UTW+$%U-z°°éÛßsrn¤§';ž>z+3cÆ«‡ïî|­ŽNç òÁáÃsBçÎ}˜”ô$‡Ðùxú™ŒÖÍ’Ð5IOO~õµ']æuÙòÃR<¯KE¹¬ @’—W\X ‘HªòòŠñçÀciìÙL:>Å-¤§'‹c„b±Ðótû¡¿Î}¶j›m¿­yó§yNZï, ¯P¨Š‹*ðýj©ÂåÖ×>`2™/œ¿~áüõ ëw#„ââD‰Iâ¡ÃÒú÷ïÙAΜ~úôÎÚØRS_ÊÍýF&»j2éþüsÆOƒˆܱò“¹$Ñ9?º-ñb¤(:’±m#’›˜(¶M·/\ðņõ»m¿“}ârö‰Ë3žŸøÕºE¶ðw|'©Š YII•B¡..*—+Ôx˜ ¾”àp˜l6‹/àÆÄÅbáöm™UU.¶éÀ0ä°ä²¨¨¼¨¨ü@æiüÒz§&¤¤ÄöëŸ2hpjG ÙѯŒ³áLJZ,¦ŠŠS7nüÔ£ÇtÐ îøàÃ9/ÎzÔû}F9fzzrzz²}aE¹ìüùëIUqQE^^qAÄ9ù£-H÷kmC±XÈáŸ>í"s×ÿ6ïS(Ô$Q.W5›²Æö ã##Ãð ž#EáΠ㟜6nì¯8 ÿíwKú¤'_ÎÉ¿œs#ëèE‰¤Ê~H Óð)öÿmÞ‡Ÿ.%%vä¨ûSRâFîÛŠ;‚Þ ôë÷ßsçV „Ž}U,~€Á€Zp‡X,lQÚGg"Eá“EMöüí<Õ­ÑhóòŠ=üò¾½Þn:aÛx•ËåDF†%$Š}Øx5%%6ûÔ¦™/¬¸pþ:>‹…kÖ.À£nRRbñ`KÎpætnNNþ•Ë'N\vðérþ!D"ñèÿ~ýSú¤'9ŒmÀGïZ ´ôÆŸTª[z½êðá9>ú;èÂá0‡ ïãàŽK$UE·ÊóòŠŠ‹*|ÛF:R.àsÅ1B.—Éãq"#ÃÅ1B>ŸÛZÓÕqq¢¬ãñ@v.ãÒŧÑ(£F÷µ…UK'N\¾ö÷­Ó§s/çäÛEL&3³mk&BˆËã$&ŠGº¿_ÿžýú÷ôÅ^TTþþÒo½¨«RRb§?óЫ¯=ÙŠQ4à£û4zôW¿þú BèÖ­=eeÇ£¢F€ZhG˜L:žòÅ>ƒaµTQP Éxð5£Ñu ‰DÜðÍb±XÈp›]uÚŠàéç½?øñ'Æ<þÄ|(RTTž}âòß¹7/œ¿îG!W‘«laúxòÍ¡ÃÒNíš`uYG/>>å-Û&/¯xñ[_>tþçÝŸ´Öh|ôv [·ñ S w#„xú¹ç®Q©P î ”ŠG†83hpjÇÊåÅdÒSS»Ûö–ª–*òòŠOf_9þznîM‡¨•Js ó4 ÏdÒ{¤Ä%&Š î˜(~zú{βŽ^üðƒïW~2|ỗþ¯¢âT}½´®®üâÅχ ùt@òæÂ§ÏœÎu¹tÞüi`‚GŘLæ¼¼â®ee]Ê>qY"©²?R£Ñâ Oñ¨wlXÿËÒ÷gµÊóÔ¼vLf¾ áÂÇRé%Ð ÈØq–¾?˹|á¢gZ”"=À!‘ˆ©©ÝŸúÏøMß/)¸õ›ªîÄ¡#ë–¼û°á}¼«Ñé ç¶Ž¶•µå²Ó§sÏžù;/¯øÌ™\“ÑÜÖ€Þ®Ó±›¶lée4j**N]¹òuZÚ\Ð è´Œ0vÜ€.{ù‘¢pÛÂÓåË6}ôáfwž}ïÔ„V9#ĺ´'lvLzú<üý‰ ë률€@föK“m;°:0çå©­•Ü|ôvfР¥<^O„ɤ;th&( á ¸Û¶/wα8jtßwÞ}¡µÎ>z;C ÆÛD BEEà €€eÔè¾ç/müØ(|B=%%vå's÷ý±¦µ’£#ˆG„ÂIIOþóÏv„Љ »uO&3A-K\œhçO¶ÝïÃz@@¥rƌـ¿¿ví;H—>:ÐþˆÅÄÅ=Œ²XLø`ñ'Ÿ|… ù:Þd2 …|w%!«ÕŠ:~üøÈ‘#SSS‡Þ±ìd± Þºõ¼\~ÝhTšL{mi@ÃpKSùN.ñ"“ ¥UÌWy¼ÇºƒZ€ÆŽHg•Œ9Ç>5¨ñ³ …'ÔŸ¬ ="êÉõ§$ŃO‡œh_½™Ä|CòÅò›e3r F‘-a—“ÙEü™=ý#F]v•a¿ë{ŸøËÞÛ‘Ä ²$)z2‹uGäb\§ n+ÿÕw®’GN³ó’  aÔ‡HPÔÝo Ai«ê§éˆºÆÁýN(÷2È÷u÷³Ãb‘Znò²£Èq]7JJsVvgÅMJ.!dHUqßî<8ŸèJUìßz¸ü«¤[é²Ó¡OǶ¢gŒLQNCæ»·m¢†FªBQkÝzÆ!çS,½íï,X¬(35CñoU8ýûŸÖpˆ«yz–B]"*_é§Ñ‚êËò`E²k`u°õ=«ßÓŠ'ÿfV‹Ë‰Ÿ„Ö?(g çù­&h/«jG¨u­˜VÉCQÕÁüóñÄp²Ÿ«e»÷«à£¶”‹6„B~QÑ%Ï%†±c7mÙÒK«•ËdWsr¾èßÿ¿P_‡Êw®rõ}\Ïy¬ ¢¹þ“äκÊÇB‡BZeØ¡þ8b°¿;q«Æª:Rª/Võ c ´ËdOåW¨‹"8ÆF9¨"ÂxÐT¾â¢hqßÖ=‘Å`ÒWë$5&µÎXÝ`©5™•&‹ÊŒ* Äò P‹Ûà ΪTË*ðŒYÇ$ë˜þ-£d·ÎŠž®¢ûo)-‰ÝNÐLÑYzÖa4 4vn1!„Ñ0[j B !„h/Á8Æñ¥'´j¬ÊŒª :C9½DPþÄñ±~þ¬ Ò¥×È+ÃúÕŠ7®F®ºšIWôÑÛã£a‡ÁtÕ„11Òý:ÆóŸÃÁ`FŽ\sàÀÓôºpìUŽ´¸˜ªç\85ë$õ?©ˆÅAÖaÆÿ(c¶¡B´å ½¬V+©1J ·,*sð_nŸº2ª#+¸ùVÌ‚l•™'B0‰Ì¿;gOæQÂïš–Å®S×Ñ«øUŸ\}è×N¼bÅeÊ ILEÁf„ªÂ hßPB'ÅúSÕ±êÁÒ¤s#XHŒ·ã½ ¹ ÍLKÍõ­Dii0éo×!“ÕTi°ê¬H†!=F”Ò1‘\Ã"éè´Z|.-ˆŒ‚ÈuÌgÖúP)¬îꪅe°›î¥®"»YÒš±Õli¼K9ª?9ž´h’®¹lß© I‰5GÇP°Ë8A!~š%ýgÒá×AçÕ#O ×6>ãp~Ò‚×Lûž´à1H!‚™HWñáŽï­Û$g˜Žû˜ÉB7š9Z #ZB Ö 3BÈÂÓ[©2n 7#¢!déÌPÄÄ0®µö÷*¦›&|¼{à EP’ŸâãUKÈ+ÎýjÐgbù€›þ_ˆåg|ô€£aNƒ~ãÝµäæ«fÃvëOñ~¢ßdèÑcºt÷åäÏ_¦Õ7¶Cü9—tß­°“1¤Xr´‹Ug-w™•Ë@Á!T‰PªÚ]z„OëÁñe$¦Ñ6ܾ£•( e“Lg®4YeS r¥†EÔѨj.ÁBBˆCC/ã‚”vÓm3ód±Ýh=4ïµaE{N"ªÙÌû·&GYðùRDã÷¨ÝƒB„ ]Š¢†ÓøßDªxáJÐænMÆ wøh2RüPÄ}ÆœŠ·JC-½\þ«þ¥úÚ—²}n%†ê1¢œŠôDJ 3É LŠ6!*BT*b¡¶t»õA*½¡=cçøÛ@NºìZøoƒ\Š¡L¸W0Ìo¦¹óåßæiQD“c┪ާº¿ê¿EQ‡\ÍØ*Þ?Á…„ÿ=# yÆo’ˆ¿ 8-aÝqœ²màH#7§±b"ý&ÉÍžGyy}\VTËÏJFt˜F ÿ¶ÁN AK&hÉ!TÉðt›û÷/Å{8¬¶¯JI•úg2H¹¨"Äâ:x¯î™?}ôV÷ÀGïxè>ÓÙ;è5CnÕLÐ_ öÛlºUcM^{×A·A«äU>ýwôét?«E©îΊbâe:BÈÜG¶$–z?ËÏ2”'JâSÉü  xnP·0JHB-öªûlùOÝŒ/b˜wÄ IË’)2®Ä­Ào ÎpB6‹4#˘Ê(‡òÛOýzß§Ïù|—u7|²š,æJ“Õdu>Q¥¡ e„˜ÉÑ,m½0±rÓeÁW®×á©ßø;qÅÄ.è÷ „Ètfò;“¡{<Ã` ÷ ÚS†`Èï*çß(»þ»áކÓCœ;Jõwœ1™Ì¼ûìœÖYvÙ¥ñFªFÓ[õÎ@:è!–@T½ùªî)–CÈ«JX¶[’ÐÍo’|°/ü½¡®'ƒ¦œdO„É Kƒ±“µGðÑ]¹¶=‰ sç©cl i -pN¨ä\B¼ ‚ˆ€‘0{#`̾Äö#%k‡|áöÁÍŇ—šH:j}(ELѲiõ\²TÇ'© u„ˬî É4!D+s}€‡µ’¬ân艶r¯[DM÷Lƒj‰¢»þ7!ˆÂŒå‡PBÚèŒ=þ;ŲȤ(Ì×k¸É‰Œ'ýÕ‚Þiå‡OU¼%ü{ntCQñ¡û>þ^ÜAJ“ÂD¡^^_öã4͵n¢Ös Bè? ]Ø_Fçþñ×(‡òª¡'“Þ{¨kú=б M –Ô¾2ÉÌ3ßB3Q]]9…Âôÿ8'~ÂÃ%YG¥óO‡åÝÏPGÔòŠï ¼½v·[Š‘øîļÓnúÕ(~š "èIœ"·Úb½óƒ11ÊtŠþ;½K…±N±ˆ=ý”Ú%ì­åv×Ϲ*Ò%~ý@¬¯—šL:«ÕT_«Þbºc¬ÇÁhTUä¦Uƒ¡jDÒÓ 5TB™¬ Ò„ŒÔ :>ÑDe¨#ˆF½.¼E}+â6 !<5E³Z-º· ¡‹ít Eðž^Á~¾–Ô«}k¬¨ÏÁE]éµãu*ˆÁäðá©÷G¼ìg¢žtcÝüÓ.ô/›{6L0ÕŸÂ$x$ÿ_ƒ·%ã4¡eµOç'¬ÌðùF@—…ŵ¯1ýFÇœF*Õ­ººÜPN¼˜5»]Äh‹~µ¥“A‹éfϬðü¾.}îóñà£w èk覫&ó%³CyІ ¿9èÈãs.áÎ$®Ø—a4îÓ£Æ5ïufKMuý‹Ö‚É0BERÓ-ufË ©žnQ!‚ŠLÔÑȵ,N~"Eç:%–‘Z_w»‰{aAÄ&kºÉ1 ™h[Ó‘‰ÌX>BB(¡–嫌;_û ã¸ÅLÒ+Þ?׳Çô.[cI$ZlÚxÔ®«eºý5¤hL¶ðìÝç¡‚©êé£=>âÿSÊO˜>ÓÝÉ»†¦ôŠ"õ†n €Ž ‡Ïá´§ý*@bmew|t×`LŒuŒ¥}WkØn°Ê­!â}Dú*:ù§$oõç\ Fã3÷­‘Ï[úSÄòq.ÿ%{ýdÏOü¢qÿʬs¥³rãëðä1W,+kz>>êmûBepzœ™xóèi°*2Š1?%ì9îÉö’‡D¢ Sû‚]:M¿Ú¥|ðÑ=¹éAk‚‚ÖYÊ-ÓÇ|[…@xΕ¼tʵӻ¢:†ó– <”¼l‚¿›h¯‚Ó÷Ë*se7/QÃcâûµW¤ àL d¨:+]ǽy"B ˆÑ¾Ï¹RRfƵ×v†ÿ2˜Uª )•M=üédÿ§òÅåˆÒ¢t¨ŸÐµ³®á€x •ʹÿ›—ÕŸ–T_;†â÷êÍ~Ô>:ÐΰÙ1ì!1 €¶ƒ*ðÑÀG +úèee ý“’–•U€9€N@‡Ïë²bÅêÅ‹çY,–•+×®_ÿ)X½9x0kíÚlùòÏÀœøèíOUU5FÅ߀9ðÑFƒºzõªÕjKÉÕ«W;›.òu:½Éd ù¶B ÃlïçÍ›†:ÞGŸ0aÜ?þf432ÆØ ñ‰ó²²²ßÿ=>>žÁ`ÜË)FŒqüøñ@¸Ø‘¦…€$ P˜’´¢$õõõ¡ûî»ÏV‚-]ºtÙ²e×G¯ªª2$!”½?2RاÀ0,@¢eDP˜’€B@!`PHÒv’Ì|ýíÎëRTt @gömžÀYr ’€BÀ4  Ó€B@’6•|t,ÀGðÑ;ƒaâÄé¡¡ÝI$‰$ í>yòs‹$iwI@! 0 ($…€BÀ4_!K—.µN0Ñ™™‡µZþ±¾¾aïÞ?ÙìX¤Ý%…€BÀ4  Ótn…¼øÚb˜Gwó|@0™Lí22I@! 0 ($…€ IWWÌ£»Äl6Ošô,›K& ÉdaHHüԩσ$ (¦…€$ P˜¦s+äÅ×wø=Œ 31óõ·!Ö ðÑ]³oßÁ  (-rÆŒWm…$’Àÿ’;v ÃÂÆ!w?†………%Þºu»ÝUÔ.Ú°?¯Åb‰ŠJŰ0>?¹ªªÚÿ’Îêrh5¢Õ´W“ œVM&`[ ÜhàFM&[ Ä£»[®{áÂe³Ù¼nÝ÷#F<‚‰|ÿKѳ¼¼òøñÓC†dìÜù«Õjýùç½<^‚ÿ%Aˆ‡Häã/ü=™,ô³6+¤¦_³f£Õjýé§ßE¢Þ]y¹½-A«iÇV M&pZM 7™.ÞjàF7šŽÒjºÎæÅ׃î*5Âl6ãï³³Ï&&ÉäíR ð“šÍfû³·‹$—.] ‰å•·ÚQûó’ÉB½^ߎ°X1{÷þY_ßо]gLLší~fÿ‚VÓî­&@šLà´ši2ÐjàF7šŽÛjºÎr/ºå£–¼ûîJüýСΞý³_¿1B;¨ ?)@0™¤…~&==U©¼™”O¡DìÙs }Ÿ~â¶(J;*D¥*ڲ姈ˆžJ…!õÞ¾ý•ªÈÏb?¾76Vl2Ií_í¢h5Ûd¤ÕH“V7¸ÑtÜVÓ¥n4×h1‹åé§_þå—}C%h É´h] ¯ àãØqÇŽÐo4€VmÕ @ P"<|IÚQP(L I@! 0M'Vĺ@±.p€> ;)Ά (Ä3³QH é( q ·B LI:¹B ?z€ïp’¬²“Bàlè’€B<8å€$ Ž¢ÀÙ -@$é: =Œ:À IÀ*$@vRœ @PHûnù’€B:ŸBg+´‘¤ë(ö0rKàìp’¬Bd'…ÀÙÐ$…x&p6ÊI@!E!³©S€HÒ¥y]šÀÙÔ)@$éô ™ùúÛà£@¹Ýb0&NœÚDH‚ÐÐî“'?g±X@’v— Ó€B@P(LÓùkFÝ¥AÈÌ<¬Õêðõõ {÷þÉfÇ‚$í. (¦…€$ P˜¦s+ÖŒº…@ ˜L¦v™$ P˜’€B@ ¤«+æÑ]b6›'Mz–ÍŽ%“…d²0$$~êÔçA’@ Ó€B@P(LÓ¹òâk‹aÍ(°fðÑ=A¡Dxø’´£$ P˜’€B@!`šN¬ˆu€b] àÝ5ûö Š¢Ñ"gÌxÕVH" @’v— Ó€B@P(LÓé>ºk¦M›}⾆†²¾}ÓFŽ|$ I@! 0 ($…€BÀ4_!Ý%Tj„ÙlÆßggŸML “ɉD>HÒî’€B@!`PH …€i:·B^|m1øè®ùüóõo¿½ÂöQ©¬‰‰I#“… I»K …€i@! (¦éÜ =Œ °€¼.p€îXI°’€B@!`PH …€i:½BÀGw ¬¤XI@! 0 ($…€BÀ4×¥‹+©aM7($…€BÀ4 P˜¦]$¼.°pÖtƒB@P(L …€iKÈëäu€€|tðÑ|tÀGðÑÀG|tðÑ•[·navýúuw”••%$$$%%•••á%gÏž9r¤‡ßÄ0 Ã0 …’°oß¾C‡uëÖ /tw¼Ë÷@G´;‡ÃÙ¶m›"aMq.ôRrÀŸvwi5„Ð÷ß­¾ãÚ}ýúõÁÁÁQQQüñGkõó†‰Åâ“'OúÿzwíÚ%‹qÙìß{®™`wèç?±téRkW¢¡AW£¬µFçÖ,Y’žž¾páBw¿3k֬͛7÷ÝwsæÌÁKF…òpjü¿f³yçÎ ""âÚµkÍïüð‹¦Á\Skÿ²Z,þ´{VVVxx¸Ïò;œÂùŒÍJÞ5©Ñi”ºZÛK¥Ó¸<¬-ìîl¦ 6 6L&“A«oëæn5ªš¼Lõ­e÷… êõúìì숈ˆVìç/]ºäî[çë%“ÉõõõÎï;"f£Y§ÔÙ¿Œ F?Ûúy yñµÅ]ÎGÿvãoTÒûWÎ¥|çÃbbbòóó#""Ìf³Ëß‰ŽŽÖjµz½>::ÚË{ªý©Tjttô©S§Zz·¾pá‚H$‰D.\°ýkݺuáááüqff&‹Åzýõ×ñ$&&²X¬ýû÷wñº._ºîoˆýË\SëO»›Íf*•êÎ.?ÿüs÷îÝ=üN³}w³’wM&íY†V±½&íYæò°¶°»ó½zõ²5[hõmˆQe=ѽɫèãV´»Õj5¶æÜ*ý|ffæ¸qã<˜{Ë–-<oïÞ½îJ¼éU®×6UçðÞö‘Á`äçç;\^÷ðË÷¡+k;¤¥«Ð*û×Õ WýlwèçÖõÑ!ÖÅGŽIKKKJJêÛ·ïÁƒ]SUUE£Ñ(JUUUK¿¬¬lêÔ©ÙÙÙO>ù¤ççbÎÏÊß|óÍM›6mÚ´é7Þ°^¿~ýúõë~øáùóçoß¾½qãF¼ü•W^Ù¶m[^^Þ¢E‹À¬ík÷¯¿þzìØ±îì2{öìK—.Ùß)½|6ê½ä@{µw7nÜHOO÷þ©7´ú€µûÆ_~ùåVìçgÏž½cÇæ¾sçÎ7üqw%Íö*Î×kóþÚ\C‰Dòì³Ï: ¬ÓéZ«+ëLv‡~€X—6ŸGŸ6mZff¦ÕjÝ»wï¤I“\þ™LvxãÍ|*B(<<|þüùuuuV«õÊ•+¦Ö\Ψáct³ÙL§ÓmÿÒjµolã'µæÑÝÍ£·©Ý#""lAÎvYµjÕ¸qã\†]y3¿âä0în½ìî|™Lnvö Z½ßæÑ}¶{VVÖ„ ܵVßúù+W®L:Õƒ¹›}Ól¯âòzÝÅV:uª_¿~d2ÙÃ}ëÊÚ}½Míý<кóèà£;úèjµï˜l­K©Tº{VWWç[¬ËÝnE*e±X-º[›Íf/»oü`¨èÞøèmm÷ùóçãÝ«K»àÑ«Ï=÷œ}·—’ƒîÒGo;»[]źœ;wÎ7Z}ëúè>Û½   ##C¯×·z?o‹‘h‘¹=ØÝ¾Wqw½î|ô˜˜<ЦY½¥]YûúèmmwèçÖõÑ!ÖÅ‘íÛ·¿ñÆ6Í;×öÒž &üøã;wîÌÈȸ—Ó•––r¹\ï8pà‘#G:äÍCó‰'º[„øÙîË—/ï½÷ …K»„ñãÇïÚµ«í$Ú½½¿ôÒKóæÍ«¨¨hé¡ÕŽÝgÏž½zõj …ÒºýüÉ“'CBB|0·»Û÷*-í%,KZZÚÅ‹B555¾´ Úúyb]§ÞZô¥ýëæÍRûúõëWPP`ûxíÚµôôtçß©¬¬Œ-//·Ô…Z²!›••åýŒÚ¥K—œ—¹{#•JGŒÁb±P—O¡ÞºO¾týË¢ið³Ý÷ïß?mÚ4—vAEGGÛ–yYyp¼”¼k²ìô¶7}c{}pv‡Ãmgw—SªëÖ­‹õðEhõ­€©ÞZôq“WÕ/­nwo,èe? Ù¹s§æö`wû^ÅÝõº›Gߺu+™Lž6mÚôéÓñD%.çÓ~\šIDATÑ}èÊÚe¡òØ›Çì_E™Eþ·;ôó@+ΣcK—.]¶lŒU´Ÿ–~šh×´;Ô„®lw°5ôóôóàˆGðÑÀG|tðÑýÁ­[·0 »~ýº»ÊÊÊ’’’ÊÊÊð’õë×GEE¹ÜäkŠ­üûï¿‹‹s(tþ¢X,>yò¤ÿ¯z×®]b±—Íþ½K9»¦Ý1 #‘HC‡=qâ„ R(”„„„}ûö:t¨[·nÍZœÃálÛ¶ÍK±ïQùÃvi÷Ù±Ùù¤YÉÚýûù@kõ†Ù_fNNN‹.ª3Ù!täÈWê[?oß´ïÅLö§ö¡œ={väÈ‘Ð!"]mŸQ/Y²dIzzúÂ… Ý0k֬͛7÷ÝwsæÌÁK.\¨×ë³³³#""¼ÜElÆ Æ “ÉdÍnUxéÒ%?ÛvWM&“ëëë߃ÝmvÇ)((`³Ù,h6›wîÜ)"""®]»Ö¬Å³²²ðíý¼ÝÛŽ’¨ËoCÛvvo‘½Ùw°¥’~¶û½ôóÖêBÏ=÷œíãœ9slßòæ¢:“ÝÍfsJJ jn?é–öó­e&ûSûPFwÀÜg´Ëùè%%%g›¢R©œ‹‰‰ÉÏψˆ0›Í.'::Z«Õêõúèèhûr£ÑH¥R½lo½zõ²íöìù+™™™ãÆÃK.\¸à¼Sô–-[x<žm“aç’‚‚‚ÄÄD‹µÿ~¼äçŸîÞ½»½HWmÈ9ï|Ž¿g0ùùùÎ{S¯[·W‚7'õ……ÖK—š¼ŒÆV´û_ýõØc5kt*•}êÔ)o:\[ErV#>´×ùÞ½{cbb<˜ÛÞ.>|½ƒRsé´òì1ÛK•sÖåamgwÏvl¶94ë£7+yDg±ü¤TÚ¿NÔÕùÍî÷ÒÏZ«G½øâ‹¥¥¥V«U&“Íš5Ëöuo.Êßv—Ý)ß³ßþ¥ÊËo-»þùç ,ð²©zßÏ;ôÍLö§v°»³ÃpæÌ÷üóÏÛ|tðÑ‚#GŽü§)ÅÅÅÇ>|xÒ¤IV«õ‘GÉÌÌtù;d2Ùá ÎW_}5þ|/›%™LnöΊ{Ã"‘H.—ã%Æ ûóÏ?ÿüóÏ!C†ØŽYµj•\.·õïÎ%<ðÀ… JKK“““ñ’µZíùª=·a¹\Þ¯_?gýóÏ?ǯ«Ù“ú_µ¾ür“—Ó3ŸíŽJMMu7¥dÓLiiéôéÓKJJD"ÑÖ­[=W’µk×N˜0Áí dÿ ¸Î=›ÛÞ.>|½ƒR´fYÎÆØ^Ek–9Ó¦v÷lÇf›ƒóÜ~¨ìä]¥Ñˆrrì_o–—ûÍî>÷óØêBýõ×{ï½gµZ—-[vøðaÛ¥ysQþ_ÍÝÃÛ¿nÿ°½Uì.—ËSRRêêê¼ñÑ[ÔÏ;ôÍLö§v°»³ÃðÀdff^ºt |tðÑ;¤>mÚ4¼éîÝ»oÌ^öÝYYY&L0ºš ½Ç¾ûÊ•+S§Nµ(›Íf:îì»{C¥Rñ»»MàU«V7Î&­Ë«v׆O:Õ¯_?2™ìáŒÞœ4 |tŸínµZ·lÙ2lØ0£¬ðððùóç×ÕÕáÖô0 …asœÕèPs¼1·½]|øz'öÑÛÔîžíØlsð<îäࣻóÑÛÈî÷2h­!d6›FcJJŠÙlî>ºvŸ3gÎöíÛ=;²¾õóÎVðÍL§vžY·wètºíQ9øèà£w0]­Vã®§­(•JçßÁŸ…ÕÕÕÙž…dddèõzïgÅzõêuîÜ9o|t[KÃߘÍf|t‡._Ãà Ý]µ»6l{ôÖ¬îá¤å£ûlwçnݳÑq¤R)‹Åòpüüùóms<Îjt(ñÆÜìâÍ×;«ÞÖv÷lÇf›ƒÝKÉÁGw飷Ý寧´VÿëÅ_ÌÈÈxå•Wìöæ¢ÐG÷Íî«øZ±Ÿwy£¿+»³»½Ãàr>z`úè×Å‘íÛ·¿ñÆ6Í;wÇŽ·M˜0áÇܹsgFF^2{öìÕ«WS(ïÏõÒK/Í›7¯¢¢¢Ù#Ož<‚¿8pà‘#G:”žžîý¹&Nœèp†@ Œ?~×®]Þ_µ ‹Å’––vñâE„PMMo'ívÇùᇒ’’¼?]ii)—ËõpÀòåËß{ï=…BáRƒþñÇ[dîVü:´wïíîÙŽ÷ÒZÚföjïÞ÷óÙê§Nš™™ùÄOøvQÀîŽl+öó~蜆„„„³gÏ:túÈëÒñæÑûõëWPP`ûxíÚµôôtçß©¬¬Œ-ÿw†¦Ùq¶Ë¡êºuëbcc=ÎB!!!;wîÄK.]ºä¼f´Ù7R©tĈ,Ëþ_ÑÑÑøt¸»«v7ÎÞºu+™Lž6mÚôéÓñD.çÑ=Ÿ4 æÑïÑîÉÉÉži:4666++Ëóñû÷ïŸ6mšK5ž;wŽÇãµÔܶSøðõÎ:î»{°c³ÍÁ]<:BÈKÉaÝå[½ç Úf/*çÑ}¶{³“Í>÷ó[ÝLÎï¿þJ¥Rß{ï=‡$0•€óèØÒ¥K—-[ÖuÆ$R©T.—Û—ÄÄÄ0™LÏߢÑhöu:]³'òá+> hž²2T_ߤ$>‘Hínw°x›¢¹ñ·Õd²}ÄHdfR¯¶h†÷nG¨ ­…Áj=¡ÑØ—ðˆÄ´  À±;غMì^£Rý};„Åèv‹>0óõ·I]íš@ hé·|hQ¾5BhºmET”ÌÑÒ¯€ÅÛfRïÀ´;Ô„¶ƒ‚acX¬@¶;غMì >úy 3ñè>:à£øè€à£>:€Þõ¸uë†aׯ_ww@YYYBBBRRRYY™­ðÈ‘#†¹<kŠ­üûï¿‹‹s(tùEÛGw‡5{QøïP(”„„„}ûöy¯ ?îò_gÏž9rd±»K³zPû¡C‡ºuëæáxwµÂY6ü‡³mÛ6u ð¿Ýï±½ÛlÚê´Êïß{íòAŒ¶¨Ò>Ø]§ÓM™2…F£µV{¨~ýúõÁÁÁQQQ-Úm¾+´wÏvïR÷÷.RI…¥K—†«Î,Y²$==}áÂ…î˜5kÖæÍ›¿ûî»9ÿoï|B›Èâ8>ÚÇ 9ˆ!HB ´*±)¬RCj”özà¢Ù5jŠÔâK„"¥·KMc¡+ié¶TâfkL*ÝR²°P‚–ª5ݘ“ÍŽÙÃ,ÃÛ™ÉÌä_Mšï‡wHfÞüò2ß÷}ï7oò§«‹ßÂqœÕj¥ÿMW´wpp°µµõýû÷Ú)¦_‡ã8¯×»wï^ígCKpN'Š,©T¼xÝùwÊ0ŒÃáx󿲂üi_ZZbY–ÔNúÒ^!Û6>r¿Ãá@Ž.ËzÇzœŠ e½c]Z§LºãwRS#ËÚVÖ›‚͵Äß½{w"‘¾ U×ó#¡Íf“î•©Ü Õ!.ñtªÎ÷Yº_…K¥;MÓ.—K§Óù|¾’ø½¢Fxž;wî¸Ýîª3ûÊâ|Ÿ­‘,¯ÆF6M÷ššß«·“ Gß 9ºÓéä­ë÷ûy3«z¸««kxxX5C*ÌâÅ*Ùc¥†á$³ Š¢ŒF£ÛíN&“²WÞÇ wµt:9¯où½Ýy’Éä7ZZZ$OûË—/–Xd{…lÛøÈ&“‰¼Š=ß½LºãwRSY#+ØVÙ›Zâ÷õõ8q"“Éäåú`0h³Ùhš–Ý+©Ú Õ!®È½0Ýëêê‚Á`0dY¶$~¯¨>›Í‡Ã!(µõrô2é^Só{õväèUŸ£' ~š {‡‹¿–L&ù{a¢OùkôpSSS(*ì:›aU‹iÃDæ8Žô°4'ØÂ9zaºËëÊ þ7¬¬èõzÙúÒ^‘«m|d·ÛM®!GÏ+G/ŸîÅøÔTÙÈRÛªæèªñù´ž={6/× 7âe÷ÊÆTn†êWLŽ^°îƒLzŠ÷{EðÑh´½½=NW£ÙµäèåÓ½væ÷ªî$U—£ãw]Ä _¾|Y8G/^¼wïž´šÃáñz½íííÒ)Pãk]¸páÒ¥Koß¾- GŽQ¨púôé¼¾v}øðáGÍÌÌ477ó[Ÿ?>33#ÔaæÃ‡²?Å@Óô»wïjMw»wïîß¿_ûËÅb±={öhìÊm»uëVOOÏÇaÞ ×]»ßIM¥F&½&µ­‚I5Æß¾}ûÉ“'ïß¿Ÿ—ë¿|ùrèС¹¹9Š¢ÖÖÖD{E1µ4Cuˆû*ºŸ:uj||üÅ‹,‰ß+j„?þüíÛ·wìØ¿¯ûVß·|'Áïº|åutûoŸÈùëëè6›- Oççç›››¥q–——-‹Åb}5¯Ïºd³Ù‹Å¢°úžë:;  …ëÝ••»Ý®×ëÖŸÈ-‘HDô’±±1†azzz„j<`Y6 Icz½^a¡Hõ~ÂæóôéUŸÏNÑ:zÁºóã—Íf[XXШ EQ‹%äj­¨Wäj›ybbÂétb]vý“ý“PÖ¿¯£—O÷"ý.h*52é5©mLª1>EQf³YøvšF× Ñ4ít:;;;ù_k dL-ÍPâÖÑÛ¿åÚëH©t_ZZjhh0³³³%ñ{EðZîWò:ºïB'Y^ÿìÛ4Ýkp~Ç\³ ëèÛnÞ¼ÙÛÛ‹kevîÜI>M¥Rå8¤à£@õêÅáw¨¿øßýpýœ-à¥ÂìÓÖšîP~ð;€ß‚Ï£€€äèäè G G`+³íرcv»'€J`|úñ¿ïÕÊå« _IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/06_os_sampler_stdout-err-in.png0000644000175000017500000006733112032647172030255 0ustar ebourgebourg‰PNG  IHDR4^ÎÎbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ (H0' IDATxÚìÝot×}çÿïL½¿³v£S7Aëših$ñnͶiÓÎR X¥›Œë*©›ÄušŒÉX¨û;qZÂ`l‡Œ%qÙFÝ”U²²¢€qTVøGtkH´ T{ö$6LÇtlH„öOÓžóÛšÄ߃@ÿJ¤’ï×áðâÎ̽3ƒËï í®»îjhhl¶p8|MCCC__û èìÂg„3Îg œΰήYµ†aD†š'JÕv>lÏyÊþpg­R2O†¦9Z.碞a$ƺ=!]›µ:«<>ÖÝÜ>2›¾j$ÝYwªézÈÓÔH²é–“Y±Œ""zÈëŒLfÙJ<•­t¯ #2”½i=äéK,W›ínÊlE×g‡÷ :Íd–*ñe×—ðЊú#í+.+—Ùë‚»Tš3góñ˜ˆÔX«òž©²ÖˆÄbñy‹ˆ½çXÇÜþ‘Ù·9$"µ£‡Û,Eàžªfþ¦Tm§·Õ¢ifÑõÐÈÈÊy¬•³w‘Á“vÑ!OH× ¾«Àœö3“ºs?ŽôØí EI¡·5‘bOå[¥×¶ÎÑC­M3Ó’¹¯ªÒé*³¥æÆRY* ®(YY? ¶äLìGǶ·æ™â½.¼{@¥Y‡M³´žš˜˜ð¹•ˆÌŽ´;]™É­TmDZÉÜ+tª¶ãX溤™–²fïR“vÁpÄ0–Ÿõæ&³ôSîv3ÀØÜJ‰ÌÅ/‰HµÕ–z[CάRɧÖÐkMsônK5©ÊZ“Ókåögz]e­)T’W9K¥ö@,>Ÿ×¤’½.°{@*1sVmµ‰Äæâ—Ä‘3v)>'’s9RD½S½©Ûü‡}cõ…>#£ô´Rn¥²fïÌI»bÏæÏìY:]Uc­M³´:&ÝûGfu=äu…–›Tâ©{°`¯W\ÕuQëwÄ ìÕ{]r÷€­Î4Íb­}vÅÿ&óÚ™ÔX þ™OÝæŸ¾è¹²¢™ ‹=›õ ß;oNzµ-ôZÈÓm5/Œ–xj•È”ÕëùA§7”z#gúNüõS$—î5ñÀVQ겦y-ç¦rsN(s©Ñ0"ƒ+/b^Í¿Íÿò¤ï»Ÿ>]‘ [š¶üìþÜ»òó,¶þžI¿»ÐUÂO•îµ%}±5Õÿh8tewßëzÈ“þ(¸å·JÆeöT²R¥¡YÚùãÍÞy/;ϵø³çfb#íÍ#+—mi_ŸËgö‡;kƒÃ³Ë ÐWÜ‚Öãw=¡¬ y™ ‘y ¦ž²K4÷‹ t]Ü 9ŸÙ‘óT¡¦ëõ%«MôÙYóYU[kSjVyšä鉻.3Ÿeï]WÊíï±—·»2½[Ã*“:š£w|ÜçVË÷L)åö§>yUR3LÇ:j‹V¸Bš¥í9ƒµ5–saþÖ‹-XBmÇèT¯cMO•赦YZ½µJIêË©y;mW²”rûÆG3Û*}Gù½•IëëëëëëcGT ¾:€f``€#¨ „3€ r » biš£—ï¿`‡aæ €pÂá „3€-¨è»5OŸ>ÍÞØ8ûöí[XX(7œ™ °×6ÂñãÇ –¯ò9gùiî*{öèIØf<òP±§¶À‡Ðö?ù(‡l »ví*ö,o¸ªJ_$œTÂÀÖ g†t:#ÆÊ’ÁˆalBcgúíiý3Y¥uufa]]VqÞ³+—Ú,¥[».므^€ËUÖ‚ž¡†É‡¦mfK/oLÖ§"HûñS£ûv_<Þþ˜I•Ñv(z°Þ\ÃÞþ™óë7·«´ìhe]ÖÔõ§{,±r¶ÌœTs¥™³kf¡Ó9‰ šå]„‘t9NgW a¤—Mºœ.—ËéŒÆòRÅ'äfFŸùØ‘L®ª?xäcόΈ\x÷m{ÊÌ:»oüXzeýuý3·×Õ¥§¯RZ+g³.oÏ)Ì/YžÏ[.Ì/I)ÒÚ‹ÇÛÓÓiíÇ/.·0½žþ™å.o#«B]z±üõ®lF~ÇÀÖ g->Ÿ[ŸÙ?Í.Õ4GïÔÔÄÄÄøhG­RAÏP&ZézÈn0ËgGÚ›|â=Öi“ذ/•ð¢Cû‡c¶_‡M‚ž•«-–ÍÎVÆšú=m33RðÔM#E²I^Vyïíåu;(ýçÏŸ?°^d¦ÿ±·Ÿ<FO=ùöcËñgï»ç£ÑèùôdÛÅãS%G$]m¦ÿ19fUË/Ynt¡ÖÎô”þóç£ÑhôÅ'ä™Ñ™L Íõ¼øÄÛ#ù—ígöœ?}ñ‰åöIà±3{¢æ†:ÞÝ›—µ µ6·ã`+†3{ÏhG­òfß|¶¬ÊZ³²@)·¿Çn–+åöj­2ëÄâó"† E¤Æj·ÖˆÈ\ü’Ø{§¦¦¦z/çÊéî}£çûå`]ñ„è6§—Jÿr i;2ºowVòëØ·[Dvïëh œ™)åâ+§å¦²£¡ˆÜpÓ-©Giù%¥[[0Ó’å¹=¹åÉSëÍÂ_üª¦?ýx¹B[ÖLb¦=¥[›Óq°EÙHU«·£V=Ýc—– Íë•ÍÍÞ¾æw}êzÈk.‹Ï_i/vï=¾ãݽ…óY[jëJCÉ…wñ‹ç0/$v–7}D˾à˜_²jk3ïȬVD>vã¤µ`»„3M³´ò·HlØ7:g&3#1æމ­cÔçVj-­¶ÚD)·o||bb¢¼ ³¼©¡ü‰­ú=m¿x÷ºí™nº%¿$•óV^²¬?˜{Á1¿¤P‡R­M¿K Fµ­gû ¶l‹p&"šæè9Öi‹Åb©‚ùxLDj¬UkÛ¤¦YêmºMÏ•ó†€úö¬ÛÁÌ›ÄÚWæ™3[R×ñÖ¨~O[`äøE¹x|$ùvßø±œ+…»ï¾÷í3ëuýrk/¼û‹t»/¾÷öVxlù-yQu}[ ®–µ}·¦fi;ä7yÒYÍßò†«É|ÌGNÉr"+ÔÚúƒGÎØ°?'¢>ñÄ“mÇêäðù=e´ºíÈ©›Fêêºu]}â‰S£õù;,¯µ Òi}}}}}}ùOœ>}zß¾} ›Û¾gžä‹Ï ™é¯;³‡¼Àtð™¿îòÑãÇçg­¾¾  ‚\Ã.ØšêžgÖ ÂÙfXXXxöèI œm¾<´k×.n;„³J±éoJ¸jxCá „3Âʵ?çl×®]xP™˜9 œ ².kFd¨ÉÒuQª¶óØ¡6‹Æ¾Xw«Ïœ‰@w“'(-¾ññ‰‰‰ÉI¯ø†"†QQÝ0ŒÈ ÓétVZÃÖ9œEO Ïêz‹¿Ç¡i"¢i–¶Ã½æc‰ :].—ËårFrsRdÐ|ª+0.§Óéì $Œ2눈a$]N—Ë•I]™.—ËeVÎLìézÈÓ” ŽæÚRms¾®^'½€-Î #ŠRî{g.oHwûÆÇ}n=äí $–׫‡<á†ñÑŽZ¥fGÚ›|â=Öi“ذo,‘ŽG«Ö‰íŽÙ:|6 z†¢Ù+Ÿïøh‡MbÃ'¢šæè™ô»•RÊíŸìqhšaD†öÇÒ³}SSËi` ‡³’¹-13Kå6{ƒ[©ØôL&x)åö÷Ø¥ÊZc>>ÔZUe­‘X|>½†ÒuÌ\(Rcµ[kDd.ž½òöÖ*sA †‹M†ézÈÓÊyšæèš"¥€mÎDæã±•YÁkÝÚ§‡¼ÍÞ®¯iåšæè9ÖY«”>;ÒÞÜ<áR&ØáLÓ -¢ë¡p4ÿÉj«meÍZ½žm«¶ÚD)÷å]šÔ,m‡§¦|n%"AÏ·š€íÎDÄþpg­RAOwæ>ýÈà`Ä04ÍRßhKå¶h8¤ë¶ÆzËú]4̬tìR™INd.¾²®½ÇïVJlV oç[ÁêŸs¦YÚMZ‡š<#íÍ#""âö÷jšˆXÚûâN¯·9$¢Ü¾Ãm–õm\jý#í®1oö·Or­ÞÎéýÃ#íÍÃÊýôÄ]g]ßH}0›Ø:½­-ÊÁ•OëëëëëëËâôéÓûöí[XXØ~}æ»5À¦;~üx~Öàë›*á  ‚”ºçìøñãì €ŠgûöícïTJ8Û–o¨pÜs@8á  Â]sÙKFd¨É“ú~UÛyìP›E«Ø~š­ J‹²Çqeß1•Ýq“ùíMã|›ÎŒD {ÿpLZüã=M3ŒÄX÷PäÐÖ (—Ú®B [Ç@ ¶ŠË¼¬=1<«ë-þThÐ4KÛáÞL€ˆ :].—ËårF29#õ½ã‘Aó©®@ÂHºœN§³ËüJõòë¸Ò#+ º\.W¦rvý¦îѹ"é'¤ëºò4 e¾=¿ý«¥¨D Ë™iˆ$]ή@Â02Oå|çúò&œƒ¯«×3_ÊžéËëêõü¶[ØÑáÌ0"á (ån(ô=ä‰@—7¤»}ãã>·òvËÓCžpÃøhG­R³#íM>ñë´IlØ7–HGÒu4ÍÑ;5511aVz–•®‡¦Å;>Úa“Øð‰ÔלG‡/RNKfKUÖ‘XÖ¦•r··V‰XkDbÁp¤Çn—Kñ9QªÖZ] þšÚoÉËOºò6‡dùú¦£çXçÜþá‘öæáÚŽc‡ì™+Rcµ[kDbsñ„a¯’K3Ó1‘kÕåd✵Y4-ÿ€ —ÿ•çå†3Éûª€Õ>œv>ž“€²‚׺0ow›ÕuÑuQRFcjÖƒ ·ß’W/ÿž3ÍÒæíœn™µ5Ög‡¹TŒÓõô®ÈÛÄZä¬ÍÂw9°Õ”þ†Ì²ÞÈ4ÍÑÐ"¡P(íq8rêV[m+g¨lÖêuLfFbÌ7[çh{|¿'¸þ»ëòÛoκ‰è±a_ Þ|ïjµÕ&*¶"ÆFÞ&ÖÒ¶œµ ßåÀör™o°?ÜY›¾ÅÊ,‰ F CÓ,õ6]…£"ÑpH×s¦‘®Ø&ÃÌi6Ƽù¬h“¹ø%s‘Ëoth¼}2uÓÛþ¡ì½1:v)«U–úF[f‹™vš%+ÛY¸mÙk„3ÍÒvhÒß"±‘öfó]‡á†ÔtŽ¥í°Ï­BÞæfoH¹}‡Û,ëØ\Msôø[t=äi³Iλ,‹…È·9Üàw+Uh…–Vo§Mb#íÍæ[ Ël¿®‡¼Í©¾ïÙóƒ]ÎpÃd¯CÓ,m‡Ìv%Òk›iÏ~‹¥¥í°¿%µëÌBûé6ŒZ;3í,Ö¶œµ€íDëëëëëë+öôéÓ§Kܰ€µ*‘¯øú&€ B8 œ€p@8á €p€+q »àÙ£'Ù ®‚<ÄN`Tƒá¬,ýO>ÊN°¡víÚÅgz3ªƒA`Õš\Ö€«é€A Ìš„3€ B8ØÊáÌ0"ƒN§Ëår¹\NgW aTr÷ÌÖ:ƒcÕvÎô×õÏpFØH.gfäL Pƒ‘Ôx•tuFYƒj±Ám-ƒÞå ¤±þ7Ó_×~ü"g¶i83î&OPZ|ãã““^ñ m©—(l&kèúl|^DD.ÅçD$N¢óñXÕ¢iW²~MsôNMMMõ:®l=·þMˆwß{û–{ïÞÍ?áØ¦á,zbxV×[ü=æËRÓ,m‡—_¢‘ÁôŒZæÁÌ‹02h>ÕH‰@—3ïÇ2ê¸Ò#+ ºr¦ñ2õ›ºGç.c8˜é·Ûív»½Ž—1€ueoh‘`8*"—f¦gu]×CᨈH4li°—3œ˜0‹ :»‰•3[å ’Î®®®"ccþ@*ÅfÑÒM2ŒD Ëér¹rV˜éΞ=žo4yBº®ë!OÓòÿö¥û»gÏ_ fÏ8F]yõz™£úÅWN˽wï–™þºÇ~¢ÿä±ÔÀ>Ó_×?“íûgÌ’ºôãÜ L½¡BÙaDÂAQÊ=VHº¼!Ýí÷¹õ·+XÞ†ò„ÆG;j•šioò‰÷X§Mbþ±Ì~é:æÿjf… gù%­ë¡iñŽvØ$6|"š ‘Cž®»}ã“ÞÆµï“™þÇäP4FÏŸ?XÏ9`U[k•’¹xÂ0æã1·Ûmf5ÃHÄçlÖ겆Ӝ‰+#èµ;ÔZpÖí²É2Òì&E‡öÇl¾›=CÑÌ_OÐÖ1:>11qæŒÿéI¿[)¥ÜþÉÔÿù«ö÷Ì™ÿöp£-3ãx)>gk¬/{Š1ͤþàù#ª,ìÇÌÑþÅ'ÞùË¿l?³çüùè‹O¼ýXæßòÀcgöDÍ?ïîå¿uTæÌYñÜ–˜™Ž¥r›½Á­Tlz&¼”rû{ìRe­1j­ª²ÖˆH,5µ_f1+dSÊÝÞZ•*†ÍÝâs¢T­µz¹þZ¦âo¸é–À^ƒ6BU}£ÍÙ¢á`KCOƒ[) †£—f¦¥±¾ª¼á4'Dí·Ifå’ù£úªuršdþ/Rcµ[kDÌjvG¤ÆZu>Dªêk•2gçãÒX_UÉfÜò䩃õ"²ûÆýâW5ýéÇËÚŽd‚\ýž6þ2`k…3‘ùxleAN¨ºòü—t9ÍÍÞ®—ט¢cÁjvï="eOnÀúÐ4‹µFt=2¯bV[m"2ŸÉÜp¶¦átn´ÛliXã`å ’—9êzÈkÔ©fçuçòþ|˜¡v.ž0ñ¹5´ªT6“ݸ»àc`ë„3Ms4´Hæöˆ•Ìñ%Kjz~’™‘ó ÇÄÖ1ês+µñ»¥þ`îä6¬ó¶³P(ÔÒ`×4K}£M×gGFBéÎÖ6œ66¶è!oæV­MUmµ‰Rnócé9­¼î\ÖŸsGI,>ifº¦ü0Z2›Û œ‰ˆýáÎZ¥‚žîÌ]¥‘ÁÁˆa¤Ç—P8* ‡t}-7¬×ÿyB¤yÏ„lÊûƒ H©U*sÿ®yÁ.u1BÊNk¬­=㣶 §ü|Vp¼Œ:󓮇FÇ.å†*™‹_ÊIc©’òû[Ußh“`øD¼¦Á^ö¨~áÝÜlöö{k¸±?ðXæma3gm{¸ •Î4KÛ¡I‹ÄFÚ›ÍwÖ„RwtZÚûÜ*ämnö†”Ûw¸Í²Ž­Ô4G¿E×Cž¦Ñ9›ä¼Í§Xˆ y›Ã þµÏ´¥Þ°cà¹á Ö›y….3?dþšõÏçZ‡ÓÔÈô”ÿÙ“ö¿{µAò2R³å³#íÙoØ´´ö·¤þj8ƒQ©jõvÚ$6ÒÞlÖ)·¿f: JÁ7¥Îϼ½"›Õ<ò±gÖpcÛ‘S7ÔÕÙíöº‘›NñW‹Ö×××××WìéÓ§OïÛ·o{Sï³GOò¹6ÚÁgþºÿÉG+m85îýñÿT¯£Âw`ùMÍŒê3ýíïµî»Ì«š3ýugöðž}lÌ P"_ \Ã΀Æ0"CM©‹•ÊÖy¬Ç^ñ NŒù†gu½eófíÜo†-ˆp;Žù9½[©Á–¶ÃSmk[¨þàè•L{Õ<Ϭg›gaaáÙ£'ÙÀ¨Î6ßGÚµk·£:@8« ÿ±Ø À¨T]@8á €pÂá „3€mÂ0"ƒN§Ëår¹\NgW aT~kÎÁˆapìÎl»d–t7y‚Ò⟘˜˜œôŠoˆÜC|@8°9¢'†gu½ÅßãÐ4I}Ãt¯ùXD"ƒéµÁHnòˆ šOuF"ÐåtffÝʯãJŒ¬X0èÊ™ÆËÔoê+‰r–-½¡HdÐé|]½^ºN±^ˆˆa$]N—Ëe¦1È 5yBº®ë!OS*ææÔÉo@Ä0«dæ/ vá ÀŽd‘pP”r7Ø <›tyCºÛ7>îsë!oW ±ém,5¨™Ëúܺ>k.[zCžpÃÔTïmúm¥ë”èithÿpÌÖáë°IÐ3Õ4GϤ߭”Rnÿd*òæÔÉÙSS½v³Jzþrjj9 œ€™Û3Ó±Tn³7¸•ŠMÏd‚—Rn]ª¬5æãC­UUÖ‰ÅçÓk(§Žˆ˜²)åno­J•ÃÃ0ŒD|N”ªµV¨_`Y{ƒ[)sÙÒò÷¬Œ¥Åêé…™nEj¬vkˆÌÅy3^%êä4@×Cžî±sfÀÎÆŸ(f>[Y‹Ï‹T­cþKº÷Ïêºèº¨rSc­Ú¨ ­¥1yÿæê!osHt½Ä.*]GÓ=Ç:çöÏÎŽ´7¸}ã½f΀Š™3`GÓ4GC‹èz(ͲÚj[Y`³V¯c23c¾á˜Ø:F}n¥6¤{6kuyº‚ÆT[m¢”»äåÈrêˆfi;<5ås+ɾ® €p`g±?ÜY«TÐÓ¹Ã=281 M³Ô7ÚR¹-麭±Þ²ž7B­a2,;Dš7Ÿ¯;¿”j°ÔX-šVÞ†.sf.³—FÇ.ååÚ¹ø¥uŠŽ¿[©õÍÁg¶ÍÒvhÒß"±‘öfó­‚á†Ômì–¶Ã>· y››½!åön³¬çv5G¿E×Cž¦Ñ9›d¿·±Dˆ y›Ã þÒ“[Ó¾¦fo(s;W9Zkc²™{iv¤=ó.KM³´z;mio6Kòëä¬$ó–ÒæfoPlÞV ovì°Ü×××××WìéÓ§OïÛ·oaa= Â™Ÿa”–Ì{$ 2•ÈWÌœTÞ­ `›0?Ϭ—`‹cæ €pÂá „3€-h ïÖ|öèIöÀå9ðÈCëÎD¤ÿÉGÙ³kr𙿑]»v•óÁþkþœ3¾-`ãpÏá J2ŒD «+0²J"ƒ…¾2¼œg€pWDÓ,õ2=s)Srilt®óa¾Ñá 6GU}£LÏ$ CD #13-õUæSF"Ðåtº\.—ËÕHd/•=…¶òq"Ðåt¹\N&ØÎàòÓ™9wvi9›FdÈ'ÞÉɉ‰‰ñÑ>QNغ4æ‹·ONLLLúÅ3eï œÀÚd_Ù4³™EÓDDÓ½‡ÛÌÇRe­)cUæÄ›µZDDì -Á0“g*Ö5쫪¾Q|3‰Öú™éšöCUYa+2Ôä 麈(q7¬¾¦ùx,jo){ œ@Át•隆Ãé·Fb¬Û#þÉ ‡f‘¡¦p+ª¶ÚZ|‡zx?€ÊÇeM•˼²9â©i°gÏÇc¶Ô5ÊKñ¹ËÍÅ/¥2\py=saî4@8€+TUßX«ÜÙÙLÓ=þš‘öf—ËÕ䓯– §i(s™¦9z&Ûãû›šš|âõ·¤—²´n7™oðä ›*—5T4ÍÒvx*¯ÐÑ;1Ñ›þ­­­WDä¶©Û2ù¬wj*õô”#³”£wjy!¨TÌœTµÍœ-,,<{ô${  "ÂÙ®]»úŸ|”½P¾ƒÏüuù•¹¬ °á<òá  R”cØz…³™þºþv–›y IDAT<À•Y÷™3R@e„3Cfúëû‰þ“ÇRùl¦¿®æâñöºº:@ÖóCh5©?xþˆÔÙsþ`}ª,ðØÁ'O?¿›= P†~C@Û‘Ñ}$3€2]ÆÌ™yí2•ê”zðÈò<®v8«?xþüAöÀ؈˚o¿w‘ Pá¬þà‘=³—÷f\Žõz·fýÁóõËÏç  |}á …¬í²æÁgþš]P)áìÀ#±ËÖêÙ£'ˬÉeM€ B8 œ€p@8á €pÂá „3Âg„3Î@8 œ€p@8á €pÂá „3Âg„3Î@8 œ€p@8á €pÂá „3Âg;Î5k]àÙ£'Ùk›Î<òЮ]»úŸ|”½°ùáLDØe‡{Îg œÎP®kØÛ϶ü¸“<´¥û¸ÕÛôÖíìN8(9}á •èË_øüvêÎ_}ÿ‡[º[½ýà@oÝÎR° œ¡âü»ßÒé#íšÎrP@8C}äpF;Âò‡žk4úHûÁ¦³ÎÀÿ…ô‘c„{ ™9g œÑ~p é,„3l‰¡ç>Ò~p é,„3TŠÅ%µ¦ú†13p{÷OõåK©¾ûÚ7îЮèÎ sµ?‘Öï¾öÛåÕÌã+\íåõ1«U~ô¥¿óËÂ-Énsö³ÅÊ·Aûß½/®×A/ó4Sê_ûïÖÖz’¬ûØèõ_…ãFï“îl¦åW­#2B„³Î’kzTRD©Ïþøío?þã¿y¨ºèßÈgî|ü”pêìÓ©#Ûðô¹ìÍ™Õ̧}!þAüø£õ·5Ôñ…x2¿åçþî;1]oyîëuÊXLª%eyà¯úꔑ}bdŸ0™Ç/¼ðÅ{îº#kµ©ú¿>ñ¥•åªDS‹ž™énVÒ^Û‹1‘U_­EV²ù-x2ä•xPòÏ=sgšmþúè ñÔAŒô‘ã¿N¿Ü6¢ œ¡òÂÙ’±Ösšb)SR÷éû”’S/Ÿ[T‹KÆÌÀg¿ñ‰/û¿z³¼Ø7ðêRòöîéÁû”Rjoÿô×oMÊRòö¯¾..‹3?8ü»_º¿î®O\äñ³ñTùÌ@OH×ïó‡îmRYí,V¾=ÚŸ}ÿb*<þrß­I1DtýTßô§Í_ßáKßê÷ùÃ/ù÷êÁ¯}å…‹™Ƭfñ·ýÑž§Œ¯ÿ°çfùåá§N¼¿¨²›ýÁâÌ?ž¥öÖ×­rîå<ÖõS“Éo¾äß«ëo>öêbÉò‚M-qffw³¢ôš^Œù‹¬új-¶’Jèl9'@”üso)Ymoü„®¿9ùÊüâ’±O¾!o~÷fýø+ãªñ®§_n“Éo¾tì«7Ë/×± œaÌœ¥®&$ •|°tî• ˆ|´ªî†EdîýøR²à"‹Iµxý 7f•'‹<Þ”™§–âïÿêчKªêSÿõº;sö‚Yþþœ(e«®ZÑþbåÛ¬ý9Ç%)¢Ôýßêq˜k>7õ†R÷ß^§ëînVê­©pæè§ª]Ãæãç?{¹•7/ã+øTÎc¥îÿÜ17-Á—_ÍÚtNy‰¦;3³»YQúJ^Œå¼Z‹Õ©„ΖsTÞA)|î]·û£"b>~íøÐÛº®ë§^y-UÿÆÝYÑGóÄ[¿>bKãž³mÎÖTß0R“öÉô­©’›ÿÓ‡“jQ %¢ëÿÍæ¿]—Ø»’ê·%o‘Äɾ?}þ]]e$Ó ¦êäÕ¿Ê}#òã³1i¿çhºdöÌÙ Ÿùìõr὘ˆÔT}xùúE2©‹•o£öçú¼_Í5dÁü£_ÆQÎ?Á ?%Wò¸pS¯Ó´UÎÌånVľÒc¯Vs…9u®«€Î–u2TâA)ò2¹õî&õÓñØ»’¯Î?þ…þ¦W>úoôÀ­Ö÷b{ëoÍyµ®sA8CÅYJ®m¢Û0$}G…±¤‰ˆÿô“º.¿k½NÉ’Q]}³¨·þð`èÀ­æ¨¡diå"†1ò?ÿ¶|ü ßûâ…/˜4Ë%«Žänâª÷q>tìöïMÿ¡EKýúµ}ßkòµ‹mîª"íÜí7rcίÕÕ7‹¼•µ†›oüËÙK·9î“ÉŸÏFž¸åSÅϽҫ-¶éTyá¦.Êjg¦V¼ Ú|1J9¯ÖBuÖã WØÙUNó@WêAÉ?÷’Zú´2&on:|kÛGî{¾ÿ¥ÉׯjÆïûô£¹nOµi¹qwÖ¦sË‹7uõ3³²ôå¼—)çÕZl%W¿³™=Ÿj‰y@ï½û–⺒JþËä“w´ˆÈ™ŸÿÌ,ùä-ºþÖè÷~öÑÝUK5i/*½‰Ìã5ý\y—’ö?ßý“ìÙ…¿ý©=7)õÎ?ÎÌ'Õ'èºI©é§œ¯Ý1ði¥2í,V¾ÚŸs\r~5ýôSÎÏ?R®§Ÿºß’_­œ£¬®oûæOåÍ|Ùù¹½{>·wÏkw¤N°Ò«:÷lãçŸ )åþúWìɒ囪 ǪgfåèË{1æì·U_­ç“ªàJ6¥³·tN?óś͖˜ÒºbJþË$yý7)¥ÔÍw|ª*©Œäïÿñç~/ëWµ#$¶4­¯¯¯¯¯¯ØÓ§OŸÞ·oßÂÂ{j yöèÉ}ÿÑvêÑñ?:ðÈC[·[½ý›Â0"ß°ïei9ð“Þÿ¼EnÁÙQz£;»^'ÀN8(ù}Då+‘¯¸çl{Ú Ý[½\ŒXío³2wP2©–¶òýÑ;ê@¯cg7ôàÕ‡ G8ÛžvÂD÷Vï##Vcßrb¿ˆ’4 ôÎëìž¼ú@8Ãfüÿº†ž­ÞÇ%þ<ðb¤³´ œñÿ+}¤ýà@ÓY^} œa3†žpGÅVïc’»^x1ÒYÚ Îv.kÒ~p é,„3TÉ—NÑGÚ4å €p†Š°>ðf«÷‘%âÅHgi'P ß@8á €pÂá „3Âg„3Îg œ¸Ú #2ètº²8ƒÃXëÖºÔf÷:èr:]Är›D «+(£«v¹X…­¸¯lŠkØÀ§”Û?ÙãдËXVÓ½SS½•=‡šÖÝÁ¼ýœÛ‘ÔŽM¯96€pYCƒšïøh‡MbÃ'¢æl“®ÏNÏ\’Ô;’Úr4´5ÖW¥fÅ&&&Ì=Ë©.»_™Õ”®?-ÞqŸ[×g³;˜‘ßÈ íŽI‹o||bb"g[gvPó67çLÕ(åno­’*kˆÃÃ0Æâ󆑘™ŽÕX« ®M)·¿Ç."f5¥Ü v{ƒ;k¦ªàúW,^e­1j­ÊlXÄ0"á ˆÔXíÖ™‹¯ºÂ‚4ÍÒÚÞ""Áp4“ÍVdMs=…úUX¡úí­UfÇóÛS¢#ºòt%˜3gv,¥ÜeMÕ¤sFTæã±–ûª+žÇVÄâóë–&½!]¿¢.ǦHjÞÌŒM‰@—ÓÙl®¿ k­_¢#šæè9ÖY«”>;ÒÞÜœs‘á VÐ4GC‹èz(<¶4”qÅ­Új[Y`³V_i+ª­¶²ÓäºÓÞfÑDÄ0c¾á˜Ø:F}n¥VOfeÖ/ÐñÂÑ,m‡§¦|n%"ÙIΠhÚ …BåÌ›¥oS …£"ÑpH×mEnS[K¢J­stìRÙí‹©kohÉëŽ9ÛWìšm¾õçâ—R—kNÇKwÄÞãw+µYá ÀVÒ÷œ­úAóMŽJÕ–™,m‡}nò67{CÊí;œþÜŠ+a®sv¤}ÕÖjš¥ÕÛi“ØH{sášöó™l¦iŽ‹®‡}úô¾}ûØSë¢D¾`æ  ‚Îg œÎ@8 œàJ\S~Õgžd\ž<´ÎáLDúŸ|”=  2|毣Tì%"»ví*çƒý¯YëÚù¶•Œ1 ÀVÇ=g„3l/æ6FŒ•%¥¾”®î0•tuåS b œa°Í1¨Lšf©o”é™K™’Kc£s;4¶«šv¯ut(ZàÐD Ëét¹\.—«+Xþ—42hF sîÍ|œõo®Óår9Óÿ¼ò,€+QUß(Ó3‰Ôx’˜™–ÆúªbÃÔò–5ò¬|œ;F„3TàÈ×굎f_Ü4Dz!Ÿx'''&&ÆG;døDz z<âí˜ì7LNŽvÌyRÓo—Æ|ñöɉ‰‰I¿x†¢"¢iŽÞ©^þÍpEéÌœ;»´œÍŠS¥äQá •ÏÚet,‘5®iš£÷p›ÅLTU֚庶Îc=M“*kMìÝÿäM?NEºÄÌ´X«EDÄÞÐ ó)€+”}eÓÌfæÐT|˜*Š1 êvÖuìsô´‡»Ç.jÍÅ"CMž®‹ˆwCª¸ÆZ•©’ýØ4ÅBíÍ#"+—€+ø²¾Q|3‰Öú™éšöCU« S%0Fp†-”Ͻíá®±Kí™ÿ/Ǻ=⟜ph†j —·šj«­Åw¨‡‹˜Ö?Eeº¦ápzx¹¬aŠ1 ˆËšXö‡§}£sËÿ_ÚR“ÿ—âse&<ÍRß8æ.ëûߣf©o”ïHMƒ=«xÕaj.~)•ႌQ œaK–6o£ÄRC˜£Ç_3ÒÞìr¹š|ÒØô4•õ‰–¶Ã á&óÍS曡x·&€+WUßX«ÜÙÙ¬ô0¥iŽžÉöøþ¦¦&Ÿxý-ÅÇ(ö-ÖíÏh______±§OŸ>½oß>óëPž=z²ÿÉGùj•‰1 @%P"’£²óUŽfÎ*ÈÚÞ°°°`F?¨@ŒQv\8‘<Ä^P±£T¦òÿuä²&@ýëH8ØpÌœlI„3Âg„3Îg œÎ@8 œ€p@8á „3Âg„3Îg œÎ@8 œ€p@8á „3Âg„3Îg œÎ@8 œ€p@8á „3Âg„3Îg œÎ@8ØÞ®YëÏ=É^Øüpvà‘‡víÚÕÿä£ì5€Íg"²°°À.Ø8Üs@8á €p€r]Ã.Ø~¶åÇxä¡-ÝÇ­Þ~\Þ>yr;è‡ÚgõNxõåô„3T¢/áóÛ©;õýné>nõöãJtN‚Ù6 æÎ <«w«¯`A8CÅùw¿¥ÓGÚpVóêá =ô‘cFÚ Î?ô\£ÑGÚpVóêá ü_H9F`ä¡á „3ÚpVóêá =ô\£ÓGÚpVóêá •bqI­©¾aÌ ÜÞýS}yÀRêï¾ö;´+º3Ã\íO¤õ»¯}ãvy5óø W{y}ÌjÕ…}éÁïü²pK²Ûœýl±òmÐ~cÆwgï‹ëuÐË<Í”úÄׯþÇûµµž$ë~ ®òúËhÀÅ×Nž»°âØÝpçC·ï.Þs‘¸XKW«Ø‘'³·¯Úί œí°p–\ëУ’"J}æ¹sžÛ5Í0fž¹óñÇoûñÿÍCÕEÿF>sçã§äAs‘"+¾ý‰™×Ÿe,*)"b,%Õ⺄›ä军WÿnèM]×_œ:×÷©;´‚»"¿Æ6m¿aÌ<óø˜ÊGe,б!™cþ…ŽÏ~ç yð¹°yŽ]üñŸùÂßóÜ&Ë [Ò²N˜"ÍX÷q•×_v3RÌ ^çNþó'ïmþøµÚå®í*¥·Ëy2{ûªíü«0BW‚©ÝmÎÖøc¨Ì˜˜TKêöžçÐõ7¿ûw3f…–â/óøÍJ:úÂ{KÉtyªýwÿÙ÷ÞÉjg±òíÑþìãødC}C½/¼x6uÈÎùÒN}:udž>—½9³šùÔ£/Ä?ˆ´þ¶†ú/¾Oæ·üÜß}'¦ë-Ï}½N‹Iµ¤,üU_2²OŒì&óø…¾xÏ]wd­6Uÿ×'¾´²\•hjÑ33ÝÍ;ÐWHÓvß~§UÓ~óË7çÓAá7oþüG'OžüÑ^½h…’ÄŠ ™©8M»pîäkæ"«®dSFž‚'CÞ °)¯¾UFÈüsÏ33Í6}ô…xê´Œô‘ã¿N¿Ü6¢ œ¡òÂÙ’±Ösx^Ê”Ô}ú>¥äÔËçÕâ’13ðÙÃo|âËþ¯Þ,/ö ¼º”¼½{zð>¥”ÚÛ?ýõ[“²”¼ý«/Ïœ>sö¥c_ý˜RÁ'̳W›»‰²Ö«‹KÆâÌÿî—ëÓycül3ÐÒõûüáŸ{›TV;‹•oögÇ¿˜ ¿ÜwkR ]?Õ7ýió×÷_øÒ7‚ú}þðKþ½zðk_yábæ„1«™Gü­C´ç)ãë?ì¹Y~yø©ï/ªìf°8ó§D©½õu«œ{9uýÔdò›/ù÷êú›‡½ºX²¼`SKœ™ÙÝܸ½ªwß`¿h¦¨ù×NÿòŸ?ô‰úO|Hâç^›Ï¯žSAÓvßþÐ7FöåÑUW²Y#O9'À¦¼úJùçÞR²ÚÞø ]sò•ùÅ%c1ž|CÞüîÌúñWÆUã]N¿Ü&“ß|éØWo–_®cA8Ã6˜9K]MH*ù`éÜ+AùhUÝ 7ŠÈÜûñ¥dÁE“jñúnÌ*Oy¼)3O,ÅßÿÕ£;–TÕ§þë't=væì³üý9QÊV]µ¢ýÅÊ·YûsŽKRD©û¿Õã0×|nê ¥î¿½N-ÖÝݬÔ[SáÌÑOU»þ†ÍÇÏö:s+oþ:^Æ Vð©œÇJÝÿ¹>bnZ‚/¿šµéœòM-vffwsãôz_î¼x1."º¶úÚ‰È?ÿæ7+ç½V­PfÍyÊ96åÕWr„,|î]·û£"b>~íøÐÛº®ë§^y-UÿÆÝYÑGóÄ[¿>bKãž³mÎÖ8â§&í“é[=R%7ÿ§'Õ¢JD×ÿþ›Í/º.±w/$ÕoKÞ"‰“}úü;º.º.ÊH¦LÕÉ«•û("Fä‡GgcÒ~ÏÑtÉ왳>óÙëåÂ{1©©úðòõ‹dR-+ßFíÏ9ôy¿škÈ:‚ùG¿Œ£œ‚~J®äqá¦^§i«œ™ËÝܽn>tíµË×:/Ìüø‚hšüóo~#ò \ ]¥B~k+`ä)ëdØŒWßj#d‘—É­w7©ŸŽÇÞ½|u&øñ/ô7½rðùÓû£nµ¾Û[kΫµRO<ΰ^–’kû?Ø0$}G…±¤‰ˆÿô“º.¿k½NÉ’Q]}³¨·þð`èÀ­æ¨¡diå"†1ò?ÿ¶|ü ßûâ…/˜4Ë%«Žänâª÷q>tìöïMÿ¡EKýúµ}ßkòµ‹mîª"íÜí7rcίÕÕ7‹¼•µ†›oüËÙK·9î“ÉŸÏFž¸åSÅϽҫ-¶éTyá¦.Êjg¦V¼ ò'rþâM“]{­¦Ƶ×~HŒ^ñþÍ•Ó^«V(\§FžUNó@k:BæŸ{I-}Ú“77¾µí#÷=ßÿÒäkc5ã÷}úÑœQ´O©>ù@×MJM?å|íŽO+•ig±òíÔþœã’ó«yè§Ÿr~þ©r=ýÔý–üjåeu}Û7:Ð(oþàËÎÏíÝó¹½{^»#u‚•^Õ¹g?ÿTH)÷׿bO–,/ØTe8V=37ô@_M»0óãŸU•TFò÷ÿøs¿—õ«ÚÀ[šÖ×××××WìéÓ§OïÛ·oaa=µ…<{ô侇ÿh;õèø‰xä¡­ÛÇ­ÞþMa‘ï?Ø÷²´øIïÞ"·àäè“'O>ôÐCÛòåwm}Ïêõ:v«/¿¨|%òÕÀÀ÷œmO;a¢{«÷‘‹«ýmVæJ&Õ÷Gï¼³zCO^}¨p„³íi'Ltoõ>r1b5öý''ö‹ˆ!Iƒ}µÏê <xõp†Íøÿu =[½Küy¯JÚ Îøÿ•>Ò~€³šWgØŒ¡gÜQ±Õû˜ä®ðª¤álçà²&í8«yõp† 2ùÒ)úHûQ Nž<ÉÈC;ÂÙN·>ðf«÷‘%Ú!¶ë‡œm鳚W*ß@8á €pÂá WbõÒ8~ü8» `ÓÂÙ¿†Ãÿrö¬ùøŽÿïÙGëë×ßüæÿ÷ÿovɼë®ÿÐÐP8œýËÙ³ÿg`€½põôõ™áŒ{Î*H©{ÎþCz:I–ý IDATz á_ÃáMßNVF8kh¨êëc¯lK"9áŒËš„p°ÅÙa$]N—Ëår¹œÎ®@ÂXÇFdÐét:#†q5—­†t¾þú`z÷¾®^Ïtj­4×¶u÷„³²’ÙX÷þᘭct|bbbrÒ+¾¡ËÈ •ƒ*«ÁFd°¹ÙûÎWlg¿TÊퟚê½M¿­wjjjª×¡ik]¡¦9îœó67FÈgl ׬}‘ùxLDj¬UæŸKÛá^È 5yBº®KÈÓ$þÉ»DÍs·o¼×¡™Õ‚ÒÒÙ9722«Tmç±CmÍŒJf}U[kËÊO%Vâ÷‹Ç³b[ÙËææžD {ÿ𬮋ˆRî§'î:ëúF~ƒW®öÒX÷þ‘Y])·²Ç¡i«¶Çë ‰HmÇè¡ú™îýÃ1±-wpeÌæ„Å!O0ù‡_øèÆl˜·9”ijPZü“=öBA9»……6tÈoòx†ò¶*КgÎ4ÍÑÐ"ºò4ug.hjš£gÒïV*“4ÍÑ;55111>ÚQ«TÐ3”™ ÒõдxÇG;l>5 £Cž®»}ã“ÞÆìm•X‰'Ü`Î'\67÷ìŽI‹o||bbœŽÊip¡ÕîŽÙ:|6 z†¢å´Ç,Ÿioò‰÷X§Mbþ±„aä7 ?'™½¸ÿîÏgfΜ•HTù-,¸!{C‹®‡Ì  Â­2svúô霒{ï½×Ñ;å§74;ÒÞ<\hh…*kH,«@)w{k•ˆµF$ Gzìv¹Ÿ¥j­Õê[‰¿Ç."†‘XeÙLÕCžnë±C­–â­ÍZm$‘«ÝZ#›‹' ûò‚ÅÛS#Snÿ¡Ö*‰ÖˆÄbñy‘ªÕî…»Á^î‘+ØÂ²7¸U0˜îBþ1WÙ¾}û.'œ™ gÿj®ÈÑ;5Þc^SK倪üô¹¾¦ë¢JodÅ¥Ò5®¤è²šæè9Ö9·xvv¤½yļYÎŽÓõ·9$º.±ø¼ˆemZSÌ^¬Yn Kl(Ý…œ ®²ãÇ—x¶¬{Î &;M³´òÇ›<Á¬É¡åPe$Æ|Ã1±u޶Ç÷{‚—ÕôuYIªµ–¶ÃSm‘A§7¤=C y÷oå©¶ÚDÅVÌ ^I{ò°rº±Új+>éWv KõÔf­.~4@…¸ŒwkF» ó^«h8¤ëé¿úÕV›ˆÌÅ/™WŸÐÊÊy©ûØÂÑÔ­WégÊš+²lö¿[©" Ξõ6]Že?½†N•Ñ€›³Ö¤zQnÚ+ÜÂB2SÕÂØ~áLÓ=^ñ55¹\®foHÕv˜÷6iš¥ÕÛi“ØH{³Ó9{¿E×Cž¦Ñ9›ù‚¡Za¸³V©·9Üàw+µ¼­2VRpÙÜ@étº\®æfoPlÞ Î_­¥í°Ï­fGÚÍÏ‹F™í)³ãT0¼†Ûöó[XpCÑp0sK¨pZ___ßÊ/м40ðDä#}}ÿû¿ü—7¬a}™7´Iç±Ãm–õZg"еX2Ÿè6ÝéÓ§3ù*;wUõõ ðõM•””-m‡&ý5Ã'Öësq #rb¸Æ?I2`˸†]PYùLsôN9*smà*`æ €pÂá „3€-ˆwkn[Ï=ÉNT <´cÿfå÷p¶³ô?ù(;PQvíÚ•ÿùö_øü¶ïûÈ÷XN5¸zž=z²àÜÁÿs ·ZÎ@Åøw„3¨̜ÎáŒpP8œý;Á´†”j‰@—Óår¹\.§³+0Ö±†t:ÎÁˆa¬×²W²Î+îËÚ6šÝÔÒ;Œ•Pù>XRkúù·Å³ßª«³ÛíuuíÇÞK®uñMùYÿp6Ö½8f럘˜˜œôŠohÕ$±¹4ÍÑ;555Õëд«"È`s³w®óáü–¹¯J7[ÓwÎy››#ä3ÀÎ g,©¤<øíWfþáG®Ÿ·ú‹ÉÎâ1©±V™ÁÒv¸×.Ñ¡&OH×u=äiZÎj®43@dBI Е3ë–©ßÔ=:·2Ä[I$2˜=Ô³ìªÓQ9mXµ<{Ù×Õë9ýÍßâ'¨Ü¾Ãm#èrf& /[¢û%šmi;ìs« §ÒÃ1å[\Rkü1 1––ÔbÒ0>~ãõKêƒÅsß¾Ó÷ _¼çNß¹Åäïÿò·Ýsç_x?i>un1ùÁ9ßm¸ãÛç–K—”YxOæ×÷ùÎÛÌjkoU©Ÿõg -¢ë!OSw&Ziš£gÒïVJ)·²Ç¡iæ¬ÏÄÄÄøhG­JˆÔ–ôдxÇG;l>5 £Cž®»}ã“ÞÆœ©£b+ñ„ÌY¥‚Ë®ÒÛBmX.÷¹u}6»<Ö*§¿9Ì&µ4Ø #2´8&-¾ññ‰‰‰©©ÞÛôÛò—-³ ùͶ7´èzÈ3åÅ ØÁ3g/zïjú–qàÐg¯KfÉ™äÿûÒ™¯ÿç¥ '¿5xãÀÙÐ@Íð·N¼·XUmûÕ¯ãêÕ—_ü÷ýÁ—g>ˆ¿÷ŽíÆßYRÿ¶xî¹Æ·&^yéÌ×ÿKÒø·ÅøÉoßsìlpô«ïü͉÷ÖuBnýÙ£wÊçVº>;ÒÞ¼úTM•µfeRîöÖªTy01 ÃHÄçD©ZkuúÅVâﱋÈêË’߆åö·RÙåk’n’»Á¾ª<Ýc‰b@ËîBf›M‹_ûº_º`+„3CÉÞÿöÒ?¼ø'ï~é;¯fJÞ[õÁ’ú`éÂ{±½·ý¾úà÷ïùƒØ»’–ÜôÆ{ñW_ î½­ûž?¾üZüÝ·nºáº¤±˜¼í3_yçÏûÑû©vá½Øßk¿»¥ýù·bïÆ+ü²¦™ÏÆÇG;jU‰Øa^Îknö†ôUW>Ÿ}©t+)ºìæ1›$bαë¬UJŸi/zØw!ŸçÕ Ø“j?FRŒ¥¤Z¼õž¦Ÿ½üúRr¹$ûÙôƒßÙýñdüýwï»çå°ß÷NÍù‹¨ 0¥òà/Þó³"êYñQúpÖÓâŒ-•¼nž')‘Ì„o¼Äq*é<6o vöUþKJ¹Ûg&|+>®J¹Œã¤þ¥í©ý§7%¶Ê+c%%(ÛºôŒe«U !^jpAl }0r½ú¸æ©çüÞ‹;E˜Èˆ˜ô#Q¦k¯½ü­¯Ì>ÝÞp¿HÂÛ+˜þáÝ¢ÀDa÷¾/1ÆDQ`bTxÿuןzÜÂâ<ôB7{åÀ7êk¿n8XTxÿõO -¸ôá¬ÍJöº:­V«³ºY•y¸¯AÆq'k°6)($ˆ e[—çÝ–:ÇŒ‚r]Õ¸”]7U1æ¶ê¼5]‰E2ŽSåÓIÖ¶E»`¯ÓY݉sÚ¤þ¥q9äMIµ¥Œ7­*)й¼Äe˜:ÕEŠ&k–¹ò‹bÑCx]É¥ÜkጉªgF§~|vâÇg'žÙMñ-/>$ƺb[^úÉh¿n+Å_Æ~*µMj5•è$yËOF_|H¤D·™OÖ(œqÉ›nuwØÝMD[;:~½kWccãÂÂÂfý§ ŠþÞ:‹‹ Y¯¾,¦Ãˆ³õÈ 5 ÷ekTsÄÙrdš†ûŒ²å >yêŒíØsøßJç‰ÙŽ=—-Nž:óäOlú±Ÿyë­£Ï>IDccc‰|•œ»Ê::º»»ñç›JŒ“û&ä½u§ý mkq¥(úOV–*Jlù/,mz÷z8“î©Ö^ú>UkY° ÿp`“‰"œ!œÀÆ•3„3ØHáL`˜„³Íoaaáä©3˜ØøpXáló;úì“[¶lÁ›pW˜8“€p¶ùq¬´ÀZ“n'g/,¶ÀÚYXXزeKæòù™§6ý؇þã§g°±äºGú_ßÇcrÎ`£øÂÂlX9C8„3„3€ìáì¯0 ’Rª(Fœ-­V«Õj5šg¤”7‹EF£ÑôøEq=Û®3Qô÷XgIFWÄ~ã|¶jÓÈ|Ég"Ñ­ÏV]­T*•JeuµÍ·ÎŸ‡Ï¦Œ+vß>Ûú— °Ý޲‚-^:^]­T*««MÃsB¡ÍïÈ£ôáìlë‘ÁÂìðŒOLXÉÞëÅ»(­u Z±¹èïÑé¬3M‡U·>ù2Ñm€”‡›f¬:]¿Àþçç¦wÜW^ê2?7½ó`Mùüˆ©™‚@ ƒêõŒDó#¦fê“öè£æå3(BÀÆ g·£L C¯¾ëûåÏ´ï4ؽ‹Â½ÎÂ!"ª”—qœÌØß®¤@oÅÍó<ï¶Ô-e5mœÁélI[uK¼¿®Õ1“)ruâ÷÷H!&kÛLþžøj_?3 %ž_aW²Ž%³ì<›gæ¤^‹‹éíýF™q¶hkÙÛ.3ºâFt³¡Ï®g.Ka‘zþÝ1:¸¯œ|¶êæŸó?oŽŸ­Úæ‹/;Ù|K `ñü’ò†Ì¥7©ÛéÆìUc­:50¥g Ÿ­ÚôŸçl‰ÕµËéÅÄš¥®½­X!ù'v $â ºs`Ç ‡/#‡ùlÙ÷˜+ÀUg,Æj3Œ Þ,c1Ê |ˆ"‰Ñ([Dñ‹Ûˆ²Û‹—_ÝkóÍoîßk¿¼(ܾ>òüÞ=û÷~óÍë‚ô£Ë‹ÂíËö/×<òêå¥-‹Q&mÜŸxy}äù½{¤·^ÕrÒ‡³ñ¼ÛRךˆV§j›èÒ3Ƙ¾k¢MÅq§jŸœ÷8ÌU,b{âÝÈêq˜<6z-nž×Û=Ö‰-߉Å[39ٮ⸬mÓDœ-V7¯·{¦ÿªë¢ïvxîÅöÏFÙG‹—_;*÷üÔwv âG‹á3Ç=û‡/¹ßþàßOÏ•tA®ôáLÕ>i×3ž¿6dÒ­¼èR&¯LÝÀ˜ÞÔPÛîòúEQ#áb¬J¾-ËûsuÒÕ¦$¢•Û‰bÄw!ƾFI¤¬Ñ3ºà‹xÜ0V¶²FϘTvÿàâÕêk”´”2[Ïæ*&×èV;"i3á[¤lŸœ”2n^Ù,‹ÇÎuª‰¨|ûŽ«¿«´ÅŸ/½Á˜´,•š{’»-otmÔYHhjÓ±é¡DZó9Nì0£ºbgŽÜï®âÁÌ­Xaiù¦œFscyjœŸ›Þ±½<;ñ« ”áLdTÿ/ç9úôì?ýë{‰-‡ëËnGÙíè¹PýžÝìöîý…fo²­¿™ ¿÷®«~OëþÇ\ßÏþ¶âÁûqQØóø üsóÏ®ÇrعÐoÞ0í3˜~øÛÐlxƒÖ”ò™Çã0W±e²…tÌN§³ºù;¿™|¨´ÀNr¶ÍxO’Pøæù'·T ǩچ›ª㯠™rž–kt¥QÞM–ËfËϋ趼Ñ šgë¥|VÞhÞ1öî|"ðÔî¥òFÇ5Wç8mÿÆìÕ«¯}M:€Ùê,E…¥scö*~ßäeQ`>DĨÀÿaÝÛ¯D…¥-É??ùlù…ðõÙ¯ìßÉTʯ|‹_(—I]Ý_ÿogžž5÷¾oøÕïº.üìí‹o?º“‰…–ó±&ገ8NÖÐ×¥g,ëw¼(FÎÚC¤0;ìzÆŠûxJÒ m“+R7(äÛVó§øæ)•p2cÿä¤]ψ(ù í:(ß&Ëf³âåèV]k¼:{#öT:ýk~dhú˜IZ~Sw¦6Mx°b§1~^þWdÅÌ8Î ë)*°B"‰‚À¢7çæ¤'‰-‹ e²ª™7YÔq¢êóŸØgdSoôËy8*°‡©p¼ñ¶\¶u©·]û4ç/¢‚À”ʃ¿xÏÏŠ¨gÅGéÃYO‹3¶Tðºy>þ/Å…™ð­ü´–֤󨼨)Vù¯Šån›’#ÕÒ{¤šÔ2Ž“ÚJ5§¶M‹d&|+>äJyáÍc•È+cÕ&(ÛºôŒeÆ\£[íˆâ£(£@ܘMQÓsÜSùtú|JîÉì6þž±ƒ“¤6›žòù'vHÇ ³JS¾ïàôTágÚ«MI§†I'Œ™Ô©Ï˜šù_]ktJÇcçG†âã]Š€ó#C8ç ` }0r½ú¸æ©çüÞ‹;E˜Èˆ˜ô#Q¦k¯½ü­¯Ì>ÝÞp¿HÂÛ+˜þáÝ¢ÀDa÷¾/1ÆDQ`bTxÿuןzÜÂâ<ôB7{åÀ7êk¿n8XTxÿõO -¸ôá¬ÍJöº:­V«³ºY•y¸¯AÆq'k°6)($ˆ e[—çÝ–:ÇŒ‚r]º¸P7U1æ¶ê¼5]‰E2ŽSåÓIÖ¶idÆ~»ž¹­:Õ-])™h+Õì7%í7e,‰=^°×é¬îÄén…6OŽb.o q¦Ngu‘¢Éšeý¢˜kt«ÑO½®äQ¬À75¢Ô;NÔ罡qà\ÅtõâPŹÄzVJ·I79k¦G"‰•ï;8ݼ”–âoûÚkñë+SŠ)otÔN~³´òFǵÆnsÖš´{ugÐ<[_]]ÝI¶c–ág¿­†ô¥RYŸt¨º3v@¶“âœ3€†3&ªžúñÙ‰Ÿxf7Å·¼øëŠmmxytê'£ýº­û©Ô6©ÕT¢“ä-?}ñ!‘Ýf>Y£pÆuttttt$oºÕÝýaw7míèøõ®] ÷à¿Qô÷ÖY\dÈzõe1Fœ­G©i8‘¨ÖSÄÙrdš†ûŒ²åÆròÔÛ±çˆÈg3Í™EÕôÙª§j³aÌ·ÛœܵæGLŽíŽN8€{]ç‰ÙŽ=—-Nž:óäOlú±Ÿyë­£Ï>IDccc‰|•œ»Ê::º»»ñç›Ö'3öMÈ{ëNûJ“ö š§+ I™¾©éƒ¦ÒŸDŸg·Ò]):ïþÏ\ºAODŒ6â@.ù/,mzg¹³§jŸœl/}Ÿª;4–‚ö«ît¬fGÝT¯¢Û\Íï:êÎ`°ÿ—òE8C8€+gg°‘™À0 gÝÂÂÂÉSg0°žpXá ²;úì“[¶l‘.ØX7çÏaÎî X€ ¸€I@8»§a 6Ž………-[¶dÞBÕüÌS›~ìCÿñS„3ØXw;Oó×÷ñ˜„3Ø(>†p†pVÎÎá á {8û+L‚¤€”*Šg‹F«ÕjµZ¦Å)åÍâDÑߣÑh4=~Q\϶¥Ba5]yûŠóÙªM#ó%}¢[Ÿ­ºZ©T*•Êêj›oý¦i¿EíÝg[×j Ýí(+èñÑâ¥ãÕÕJ¥²ºÚ4<'ÚüŽ<òœŠVÎζ )š†ûŒ2N#g[{ý}mJ ôÖY\dèšhSqÜ=ûOJô÷è¬îª&G{Æ$ˆ¢¿äSÄqªÃM“N§·{ÚU…ô9?7½ó ©\Š#SµÁÎÒüñù¹éÿ±|~ÄÔLÁ@Á–¤c_ S_owm8+p‚ tèÕw-ª›§_h°o»dÙ³YrH+gáUÊˤp 3ö·KÉÌÍó<ï¶ÔõúEQZ ÒÆõøEJZr:[ÒVÝï¯kṳ, åìÄïï‘–š²¶Íøäb«}‰Õ©´~®°+iÝ‘¿'¾@ØãO.)ím)ñËâbz{¿Q&Fœ-šÄúbÏv%mŠrºÐj VšôÌeYšö|Vàæß£ƒûÊÉg«nþ9ÿóæØr‘ÏVmóùlÒš“Í·´_MJyCæÒ›Ôíƒtcöª±69͘ÒW¤|¶jÓž³%Ö·.§k–ºúµb…¹×ÃæGLÕÕñ-½ô­´—úžXI¦‘¬±¬…Å(+ð!Š$F£lQÅ/n Ên/^~u¯ýÍ7¿¹¯ýò¢pûúÈó{÷ìßûÍ7¯ Ò./ ·/Û¿\óÈ«——¶,F™´qâåõ‘ç÷î‘ÞVxUË=JÎj ÄónK]k"Zqœªm¢KÏcziYˆãTí““ããㇹŠÅ¢ClO¼ûY=³‚Bƒ§ÒÆ@¯ÅÍóz»gÂz yYh™N,ÞšÉÉvÇem›&Ð{d0¤0ÛÍ rYzKÃNê'íeÄÙbuóz»Çc×ónk‹3’«UÒ^,nž7Ô(EÑß{d0D»Ç3>>>9Ù¾‡ß“6E¹F]DµOÕxÞüθbÙŒÔÁCìÐÀÒb•³¹™úÀèKÓCßÿ¾iª6 Œ¾4Ýœ"Îæ©Ú@ ‚æÙú”|’Ôí¹Š¡äìVÞh6:§R2Îе£Æßú¤®‚{3Š™éœ5@p€–ö¿r…Y9›;É ƒ{S_ªsF³æécçÀ¹cK}ûld 9ñ`mVÎ }4j=ðhÝqñhß÷ ¢´eJxùüÔwþ>zãÌñžíÝ—ÜÝ•ƒÇOÏ-–mSüî÷aöÞÅÑÇô_u]ôÝÏ} ØþÙ(ûhñòkGÅããúÎ.Aüh1|æ¸gÿð%—ãÛüûé¹EaýkÎTí“v=ãùkC&ÝÊ‹4eòÊÔ ŒéM e±í.¯_E1ž!ƪäÛ²¼?W']mJi‘i…¶D¢è÷ºˆ¨R®”WÑL8¯9ÑOf·¾ !Æô5J"ež±Ð_®V‰å®ð Åš$²TëÙHŽùÉUyÕJÒLø)Û''3ScÎl–ÅÎcç:ÕDT¾}ÇÕßUÚâÏ—Þ`HäumJâJѴQgu"¡©MǦ‡iÍç8±ÃüêŠ)‰-³ÊŠ3w´b…ÎÖ,'œåÉ£Hy™%›M9æÆòÔ`9?7½c{yq1óñ·É©òm…4ádÆþÉI»žQòÙµ©6Ï óÈfÅËÑ­ºÖxuöFìéŽÑüÈÐô1“”šÔ9J>X±síblPQúI½97'=IlXT(“UÍܸɢþ‹UŸÿœÀ>#«˜z£_þÈÃQ=ôH…ã·å²­K½íÚ§91¦TüÅ{~VD=+>JÎzZœ±¥²€×ÍóñL E“™ð­Â´¤u&é<6o vVþ«b¹Û¦äHõÏ»goå=¥&Þ@l˜ŠjÙ²!‰ãdòÊX% ʶ.=cY§(WåETû *åeÈã‚€³é!jz®€{j8—NØ÷M9—ÎûÏì6þž±ƒ“¤6›žòù'v˜sSLS¾ïàôÔ;å^]ktJ‡açG†âÃ\:¼:?2„sÎÖ‚ÀÄBŒ\¯>®yêùÁ¿÷âN‘&2"&ýH”éÚk/ë@ã+³O·7Ü/šœ£BIDAT’ðÀö ¦x·(0QؽïKŒ1Q˜ÞÝðå§·°x'½ÐÍ^9ðúÚ¯NÞ=Ç“B Îs* ¸•F›•Zëê®ñ<±*óp_ƒŒãˆd Ö¦ G‡LºA¦ïšhkë2¸­nKÝŒBAü5·¥Ž~0þh®>•‡›ª\ƒn«Žì]z—Å^ùt’µm™±ßÖX‡LÚ!’NÉW®4ÌX«ÎM$]€¹âÌ(Ûºô.‹ËhS’tm&1R4Y³OQ®Ê ­6àu1fèjSåqM€ojZº‡F<…tLU×Û¶ç»4e8W1T]ÝÊóìï^:çPgëVºî’'"Æ I¬|ßÁéúf:v®3ím‡¤Ûn¤SÞ訵U+[ýäY¡³UùóÄ Æõk—Ÿ‘¬÷ïJQ¾Æ3vh ¨NÚX­äù¿{é%#Íâw(ÀZ„³[¨žz&¥¹ê™Q‰$HK[^mXúéÖ†—G)þSÕ3£SI­býÄkHêY$ï6ó‰°67Xå::::::’7Ýêîþ°»›ˆ¶vtüz×®ÆÆÆ……ü£Yžq¶¤¦á|Â\IDœ-GIºíÜ2o;yêŒíØsDä³™æL+œ _hŽ) Û’ÞUíNš19¶;p¬ X'~d;ö\Z´8yêÌ“O<±éÇ~æ­·Ž>û$%òUrî*ëèèîîÆŸo*QÈ•û&ä½u§ý ëq3^QôŸ¬,ä®¶éëf%’g·Òí):ïÚ7}EÿàJ®ð•³M á¬tùŒSµOª6ê¾ÔŽÕ,ö¨;ƒêUt›«ùÝBÝ vâŸ8ÀZŠ"œ!œÀÆ•3„3ØHáL`˜„³{ÅÂÂÂÉSg0°‘á°&ÂÙ½âè³OnÙ²Eº``Ú8“€pv¯ÀP`ƒ“n0S°q¬¼r622‚iØᬱ÷ÛØ0á §+¬'œs°,·rö'¯÷f`ÍüÉë-$œ]ºô§K—0kë‡56,+gŸzôQêèÀÔ¬›O=úhÎpöÉššOÖÔ,ÓXý½u7¿´ê¦·{ÚUÜIr1ŒU5 ÷e\þ ]dèšhSqÜšî+½Îê&"Æô?ô’ö»•±úéZ·Ý@¡Š?¬É˜ÞîñxVø ccci[<˜øò¶êÜDÄ ]“íªD‚!ª”+å•D¡™pDT–R cú®6eòKSC‘¼’(äòúÛ”yŸñ]1f¨QQž¹\|‘††2ºž!ƪäÛˆÊä•D¡¤ì•V¹lµûÊ>å²]e-¯ I#Ê·m¡•«8.óß¡±±1×ßaº/ŸÆÉ/1¦ïš¨ñÖY\©±)ÚxžBá›DewfÈ7ÃiÙ$VŒ´½Rž­¬´Êe«ÝWÑeg//¯¤q¶¼ÆóÄóÄJ_9þÖ*Àꌌ,óÓûòé"÷_ØTnR¸‡Ü޳‡UFÑ6¹‚X(嚸fg+qœªÆ@n·ÛhS©Ò~¸M®H];RÈ·-×Y–Ê×l_kE#gíƒ!R49Lá#×Ê- ®k`­­öœ³²«¹Š…íΈÈq2õÏ»go¥'š ßZJ9ÒKéüªÕì]y¸©Š1—¥5qƺ¿§Ç/.Uâ ¼nžWPË8NÚ»´=yï9*_Õ¾ŠŽ›ÙÊËsÒ².¼¥ÌêîJV9l”pÆq²“ç¯ ÚÏFDQfì·ëÙµ!Sâ²GŽ“5X›2é¤-Êñ—y“ž±Uí]fì›è2PhȤ“.9ôÖÄ–¾¤JÜVÎêfz{¿Q–œ±ÜV·¦+y¯~_ÅÄͶ.}¶òò™4ŽSµuxÞm©sÌ(HºB3@eióŸÜ¤„•@Ip¹ÿÀØØØ2'¬ÁÚ‘Î Å/¶€Mc™|ÕÝÝ}&hce²ä?B hnSbNî)g‹tÿvLÀ½ŠÇ œÂ œÜ}pµ&ÀFwåúŸ1 ›ÃžÏá `3xl7þxÀ]ï_Eòykl ggM‘眲ìþðß™û mÝ.ÛõiüØ„Š?çì“ÿØò,_TgkÅE»Ç3>>>1a%{¯_×m´ŒéíÇc×3æ²äܵ(ú{4¦g-j»³“ ÍÀøøøøøøädûZ$³ÒÎ>²´d6öáÇjvËÛýÙO~xó×Ào0„³$úKtùGf“ÀéÁk²ÜþüáÂ}ŸüxüÕÇïûÔŸÿ ¿ÃΖÂÙGÑå…vȘÞÔPFeòJ"ry¥u¯‹ˆ*åJy%Í„#¢(Šß…Q¥¼,ËGï‘°)w2ãy·U§Ó™†B†®ÉvUâ«7m…–ÝÕ¦\fù¯ù.„b!@Y£g,tÁ'79¹FÇ—à.Uü·£lò#ï¶êÜÄó ß$*£›áPÖ7Î8Z]!CW{îï9Æô]5Þ:‹Ëåõ·)߈»¸#2Æ•2Þìé'­òÿÄOæÚ'3Z›.˜†®)¨eyD„¼?Ž|ZåŒtøÈá¬`‹†3ŽSÕÈív{m*Už¶ÉÄB)yB·ÉDÙÁ†kCV Ù¥%–”‡›î!·ãìa•Q–ck5ÝËNBƸòmNNâK_|hÐîTç¸1VIaDzbA5â#“|bë–?þé/ô€tdó/Ñ?nùÄ.üØtŠ?¬¹(°åY¿c«âg8I[ü=Ë Íq2õÏ»go¥m”Ž ¥ª”7´yf…Ë’|jv¦²«¹Š…íΈ˜u±/Ýø.¤¯gé¥t.Ñjf<×$$*ñˆ^7ÏKKYÒÞ¥íÉ{ÏQyÁ½G¦‰ØWG’/Bœ ߊUB•rÇåýq¤Í^ÖVÙu¯}d…^ðÀ§ïûÝÜÿ‡ˆhqfîÿ}êÓŸÀ¯0„³%·£lùG–°%3öMt(4dÒI¸ykVXBûízvmÈ”|­ŸÌØßeˆu’öÅÛ…Ë’ëÊ;é;²Ádàùkƒö³QÌÜÇɬ±3±¤-Êñ—y“ž­êxî2“ Uâ¶êtV7ÓÛû²äpà¶ê¼5]É{Ï:9+|ÞñsδZmmíÿéiÑxk&ÚU'3öuxÞmi=›8…낽Ngu'Ÿ¡•ÏÇ ²´ÙËÚ*× ð‘-çÓ{pë¢÷W‘w~õß·þ÷çpŸ3€M‰ëèèèèèÈõã±±±ÆÆÆ………´í'O9høÚò]¹Fñç›îF¥¿o*¬Î•ë~l7NN¸ë½ó«ÈžÏb™|EDÝÝÝÅŸs6æÅ,”V‘á Kb›Ç©Ú''Û1w)@8„3€í>LÀÆ÷ί"˜„3ؤë®àÚÈÊ+g###˜&€ Î1G%œeýðFpÎÂdsŸ×ëÅ,l^¯÷ÿˆdZYPÚ @IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/07_aggregate_graph_legend_left_right.png0000644000175000017500000005305012032647172032143 0ustar ebourgebourg‰PNG  IHDRÝ¢uG2ìbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ  -¦ÙX& IDATxÚìÝy\”ÕþÀñó 0Œ€€ áˆ"]•0DE媖ZXþÔ‹Š.·´453ÍSƒL­h¡k™I›Þk×Ê-JSp‰Ü º™H’,"".l"2ÛïǦiØFEf€ÏûÅ‹×3ßsfÎÌ9ó ßy8Ïy$wwwÀJÒÒÒìýýýé ÀZBBBô`uäåy9òr€¼y9€æM¯×»»»K’¤T*+++›yoäçç/Z´¨wïÞNNNJ¥²S§NÓ¦M;tèÐmjN’$I’xy9ˆíÛ· !4ÍæÍ›õk¹ÿþû]]]oúî»wïîÖ­ÛÊ•+ÓÒÒ®^½ªÑhrrrÖ¯_?pà@Þ'@^·×¿ÿýo!„œzÊÛ×·ß~[ZZzs÷ÍÎÎ3fLqqñ¨Q£~øáNg0Nœ8ñÞ{ï‘—y9Ü^•••›7o¶³³ûðÃíììJJJÌêäååM™2ÅÕÕU¥RMž<¹°°°_¿~¦³/j¯`œª±ÿþ{ï½W©TÊñäää~ýú)•JE‹éõzË[üî»ïî½÷^•Jåäätï½÷ž:uJnȬÅ:2µfÍšÒÒÒ°°°íÛ·) !„ŸŸßã?žœœ\ûk©öùëWTTÌŸ?ßÝÝ]©TíÞ½»jëIIIC† Q©T®®®Ó¦M»|ù2oNÍTpp°šŸ?þXñÀ †¡C‡ !Ö­[gZáܹsíÚµ3ýÀìÖ­›£££ rpíÚµÆ ƒ!--­E‹¦÷š7ož…h|L£€€€ªA¹f- ™¹ë®»„‡®¥»ª}-5=cüÿþïÿÌ*8pÀ´Â¦M›Ì*Œ=š7'€f(88˜ãåš)yâÊ?þñ!Äĉ…Ÿþ¹i…åË—Ÿ;w®k×®©©©ƒ!''ç¾ûî»víšåd³fͺ뮻ä:Bˆ˜˜˜«W¯>õÔS:NNsãââ,À‰'?~Ü`0ìÙ³GñóÏ?Ë)rÕ\¹–†ÌüþûïBˆÀÀÀ:;ÍìµÔô|Œ222öíÛ§ÓéÎ;7nÜ8ùY™V˜1cÆèÑ£Oœ8a0ä}çμ94ORpppbb" Y¹xñ¢§§§B¡())Q©T—/_öððBäååyzzÊu¼¼¼Îž={ôèѾ}ûþù¡)IÆ<¸Î òöàÁƒwìØa<)ÓÕÕµ´´´¸¸ØÕÕU¯×ÛÙÙ !®]»¦T*ë|@óOð*m™V«¥!³ÇQ*•F§ÓÉ3X,-u>ŸÒÒR¹´   ]»v-Z´(//7Vxä‘Gâãã-y±Ð´…„„p¼@s´yófN§ÑhZ´h!IRëÖ­u:N§3]•¥  @aš"›©³‚lëÖ­¦‰¬œ•º¹¹I’$çÊB9!®óËÊÊæÌ™ãäädÉ"ƒµ4dÆÇÇG±ÿþ:ûÍìµÔù|ŒI¹Bþ£ÕjM+|øá‡¼àúG4] Ú¸qcq•J%„¸xñ¢ijZ¹Î ²V­Z™Þ”óÚsçΙN+´···ägΜùöÛo¯]»öÚµkuT®¥!3ÇBÌ›7¯Úç_Ëk¹¡çóÓO? !Ôjµi°ÚçäåÐ,äææîÛ·¯eË–ò‚€2ùØù?ümš­Î™3çòåËz½>))ÉlÑÀ:+Tëá‡BDEEɳºoèåÃù={öT(o½õ–”0‘ˆ›.xRKCfæÎÛ¢E‹ÔÔÔ>}ú|ôÑGòƒšo±ðù977WñË/¿È“ø«ž ¸ŽõX47«V­BL:Õ,)„xõÕW囩©©USjGGG +ÈA³V233ÍŽ:ëÔù€òÂ)2ÿ–-[ïÞ¿³G«¥¡ª¶mÛæìì\퟉Z^K-ÏGÞ0­ „hß¾½ñø}µXû“€¦½ y9€fÇßß_±gÏžª¹©œ_#‰‰‰ƒvpppss›={ö¥K—„nnnV¨)Ë F{÷î}ä‘GÚ¶mëèèØªU«ÈÈÈ£Gš¦ÈuV¨÷ GGGyN ÀB/¬Œãå€M /ÈË—äål /—$ãYQnnž¯ï?¿ ÜÜ<Ë#@cdåu%ÉÃ`(¬¶è±Çž8°Ÿ^¯?v,-.î5 #@£cýë}Ö’—wêpòä …Ôµë€ììT #@cÌË­?¿\¥ò ÌËË7‹çç¨TŽJ¥2?¿ÀòÐÙ[·yƒ¡°¬ìÊÊ•o?íàÁõøÈÙÙÙ_~ùe×®]f€¦¤¬¬L’¤Áƒ»¹¹‘—×çå˯\ù¶Y\­ö¬¨¸¦ÕjÕjOË#BI’x³4y‰‰‰ÁÁÁäåõ)>~“Ÿ_³`X؈·h4šQ£†YB !ÄŽ;|ðÁØØXÞµMÉO?ý4wîÜ&ö¢¬œ—K’‡ƒƒC@@ÏM›>0Fä3A—,™7xð(!ľ}Ûä"K"Fòôÿ¦ô- âã°äåõÛ§YŒ%##³C‡öò¶Zí™™yÔ´Ô’ÐÙÖõ>£¢fïÚõ£€æÆÞ¦žMý.É4 º /@^— /ÈË—äåÈËòräåy9òr€¼y9@^ÀæòòÝ»“$É£j\’<Œ?r$77Ï×w€Ÿ_Pnn^M 1²·nóz½~îÜçk*5 Mo®XñúâÅsõz}LLl\ÜkÕF€ÆÈÊÇËß|síý÷µ°rBž ÆLž~“Ÿ_y;,lÄÆ[4ͨQÃjŠ! ƒ"11144Ôßß?88˜÷.@S"ç{äå·—1G—$‡€€ž›6} -Y2oðàQBˆ}û¶ÕÈËoúÏõƒå™:´7 ©Õž™™Gk‘m]ï3*jö®]_0*hnlkËÁƒ;4C º /@^— /ÈË—äåÈËòräåy9òr€¼y9@^ÀæòòÝ»“$É£j<77Ï×w€Ÿ_Pnnžå 1²·nóz½~îÜç«-Z±âõÅ‹çêõú˜˜Ø¸¸×,ŒÀí–}1û@Ɔo·G‡þýé /¿-Þ|síý÷=~<½jQBÂžØØh…BZ¶lµå¸Ý~Íû5z[t÷ûÏ’—@fÍy,/^Z¿þó¥KV[šŸ_ R9*•ÊüüË#yùyá…W/~ÊÅÅ™a@3gÍy,ï½÷Ñ{ï}9S!IC¡i©ZíYQqM«ÕªÕž–G„’$·ÓÒÒcõë×ü_­ÒnNNNRRýM5dzf^nLÄ«&åBˆ°°7nÑh4£F ³<"„0 BˆÄÄÄÐÐPÿàà`Þ»êQùÏåâg+´ëíí͘æ{äå·—1G_²dÞàÁ£„ûöm“‹,‰äå7ýçúÁòŒŒÌÚËÛjµgfæQÓj–D€ÆÈ¶®÷5{×®/TP— ãÑÇ«ÆÛ¹µÛùôÎíó··sk'GŽG7þÔTЬØÖ<–ƒw2$)…¤X4jQµE‡>þAâ I1#dÆò¯— !º?×]Ñ¡u‡gG>[S@óú;B@½˜bZähï¸rüÊ`¿`¥½²ûsÝåÊÆR9ÒÛ»÷Üás]÷hMí¦¦¦Ÿ.¦ÿÛ­Iæx6‘—ÇÇoòóëRgQX؈·h4šQ£†ÕB !Dbbbhh¨¿¿pp0ï]õ¨üçrñ³ÚõööæÍr; vгÕÄåôÚ§­Ï¦Y›.hZ4-xZjNêÜÏçV­o4gØœÀ¿ÖÒn@@@oïÞô?šŒ”¬”G>x¤áÛ ]K9ß#/¯OòˆÝºùÆÇ¿cŒÈ˰H’‡ƒƒC@@ÏM›>‹–,™7xð(!ľ}ÛjŠP§ö­ÚÿxêG³àˆ#&¿?¹ö;NýpªéAt 9°NlhŽ]më$eddvèоÚ"!„Zí™™y´ö€æô§Bh4ú†oW¯7ÐùÚñèã'óON_?Ý,îÓÖ癑όì5òùÿ>ÿÍÏßÈÁÔe©?œúaÙWË JX`@“ÎËÍDEÍÞµë F€%~ýµxòäƒ ßn÷áÙ\+¹Qëþ\÷Ñ}F¿1ñ)L1K’´åè–-G·¬‰X#çåÝŸëî¤tš<íõ‰¯Oú×$ºÀme[[ÜéçוQÜV_§|]uxÉÕ’ÔìÔÔìÔVέŒÁòÊò·w½Ýëàv³§ ÍÍè>£/üÝ,˜t2)´[èŲ‹¿üVge /àæÉgmþ~þ÷Å_,6FäEWÞÝýîºiëZ:¶œýélc‘V§=‘bÁ¦¦w7ÞÈ˸fù´O[Ÿ‚âë'tž-:;rÍÈZ*WòrnÕ+c_™¶ž«J7¬–Kt !‚º­›ºÎø=vDÏÏ=øœ£ƒãóÿ}~÷ñÝ¢º‹v¼Ь±Ê psj¹D—BR,µÈ4òòÃ/w¼BR¬Ÿ¶^ÎËå»whÝáÙ‘ÏÒ™v]€›Pí%º&š|à·¦‘’«%®-\µz­Ù)Ôs†ÍYõÍ*º‘¼@“•’2òèÑÖ¯êÛ·uÕÒÚ¦¤Œ¬¥òøñöïþÍ7C‡ ¹ƒÎ€š>¾àþ˾^ftwrÓwÌ»»ß5 ®IX³aú†cVO¡Bø¶ó-¿Vžs1‡ž4b €[e¸víâçŸ7|»¥•w!U÷é³SÑ©“ó'Ÿ ºçžïL‹ iÁ‚»k¯¬V·:twÚ{Ĉ=Œ/T«ÚKtÍ6ûƒ¤Ê+ËMk†v ¾~z¯Ž½&MŒû>N.¹péWKéFòrõIwåÊé©S¾Ý ýbFM¥íÛ·8tè‚YpâDŸ~(ìÜÙ¥–ʱ±éBˆŸ¾ìæ¦dp _§|½ìá¿/1 båø•ÂdEÑ=F,úÏ¢Ÿr~J]–*çå=:ô¨ÔUž¹t†>$/ÐÄ¥¤ŒÌÈ(™9ó°iÐÍM9ztÇ)SNž|g•ÇŽõÞ¼9»)õIÉ÷ߟ{ýõ†o·ðÞG³Ûõkøv¯\Ó²#·[Õ«nW1]æ¿äjI_Ÿ¾BˆËW.Ë‘ 'lKÝF’—húúôÙÖaÕª>Ó§ÿyBÒ¬Y¾}tª¼\WgåÀÀ6AAO?}¬)õIå™3Å;w6|»?¸Ù˜~¢áÛíþˆ†¸}j¹DWUÑÛ£c'Åêôº%ÿ]"Gw³-†n$/Ð,lÛvæ…zšFÆó7Î{ÅŠÞBˆ””‘òÌòª•;urŽŒ¼sÁ‚Î@7@õ_}k¾DWÕ ßþïÛoÿ÷­iipL0}H^ ¹ ë•Uf1&âfI¹Yå%Kz¼òÊ/ž> q‰.òr¨†¼ âéÓe/¾˜VS"^Kå~ýÚ|ùe°Y*¨—è"/€j˜%Ó:9TÔT¡jæM.° ®+àv 4úiµÝöïol>ðŽY³ú””øçæº?ø ±²ñ§Î»ß¥K{™­µ€ ²òñrIò°³³ ê·bÅsÁÁ7-ÊÍÍ»÷Þ1 …b×®/:vô²0Àv‘$!„Ê×÷îÇSÜÝM‹}|RÛ¶u0 ó¦M?yy™Ö·äî7$**™±ÐØ]¼xmüøý ßnGÿóBE÷7¼Ü`(Bdddöï?¼¨(Ó´hÅŠ×/ž«×ëcbbãâ^³0ÀÖ8úø”ìÞmÌ]¸PQ–œlߦÍMÜõ(Ð`0ètW’“Ï<ÿ|iR’iѳfuxõU]qqöÌ™EÛ·[±PJÊH½ÞðóÏEï¾{òرK¦EãÇwš=û®²2mtô/û÷ŸBôêÕêÉ'}ÿùÏC¦w7n3õÍ^o¸|¹²áÛm}EK^Þ\òrYVVÎ}÷ÝcLHØ­PHË–­¶<ÀÖr¾ò´´“ÆU[êñøãçãâŒ7ûUT÷]öÌ™•yy–Üõâ†þ­aIÄBr2Ý©“ó'Ÿ ºçžïL‹ÔêC‡îîÑÃýÕW{±Gñľýúµ©zw//§§ŸîÆ h¬?¿\’<.|ù½÷Ìëüü•ÊQ©TæçX`k9_Áotù⋪E®¡¡nÇËÎåš)mÛ–§¥uþÏ,¹;êWMÿÖ0TVšþ[Ã’È i߾šCÌ‚±±éþçŸ/»¹)åÈcªöî³fù¾ñÆ †yyý0 çÍ{|ìØ(h’.ÄÇ»™U¾¾žO?}jìXƒöÏ‹¥ëËÊò^xÁ90°Î»£~ ^{-kæÌjKÍþ­aaÄ))#ŸzÊ/:ú—jKÇŽõÞ¼9»–»wíÚòêUmnn9# i°‰y,S¦D̘1ß,¨V{VT\Ójµjµ§å!„drêXZZc Üv%%N5¶2¥"=Ý,è³vmÖc*+ë¬\íÝeWÊË…£^nii‰p³B»999Iÿ}CìÒÓkê­#’ÔvÊ”._|‘^eéùß§ÆŒ¹¡ˆ©¢¢"!ÔÕõé³3,¬ÃªU}¦OÿÑü«B`›  §Ÿ>VË+š?¿ÛŠ¿ÔTZ\\l•½!55µøt1Ÿ ¨wÅÅÖ¹ØÙ•+WD+´[PPPû'^“Ìñl"/ßäç×Å,6bãÆ-fÔ¨a–G„ƒA‘˜˜êïïÌ…^ÛK{éRjuqyÅë'Nœž2Å‘g3· éyò¤1)”‹ MyjjfDDMw7ãìä$tVx½-[ºZ¥Ÿ½½½oåíBVÖéZJãã}>øÀ,xýßcÆÿ­aIÄŒ»»»8Wc»Û¶yá…žfÁNœ##ï\° E§3ÔtÇîÝÝ*+õyy5,wssç­0L½½{ó±€zWXX!Äž†o×ÙÙÙ*¯×ÓÓ³öO<ƒÁ@^^Ï$ÉCÑ­›o|ü;ƈ¼HË’%ó%„Ø·o›\dI€í0[÷Påë[yæLµEFpûXøo K"7$,¬CVV™YpÉ’¯¼ò‹FSÛÑÁqã:íØ‘ÇÀ /¯7r n”‘‘Ù¡C{y[­öÌÌS¡¦Níó‹â™gîž?ÿXëÖŽ3gúÊ_‰£¢:§¥]~æ™zÒ(lêÙ<¸Óϯ+£Öb­k,]ÚkæÌÃô?psª]rôï÷HH8»cGÞ!r¤K—–ǤËlKŽ6juÌ/OIÙ3jÔ„¼¼sBˆV­Ü6n|Ÿ.:/¿ûî»NŸæÒ¬Àí¥  nѳfõ))ñÏÍuðA³¢ÖãÆõÎÏïSTÔjÌ9h0äˆKPßÞ½tc3WÇñò-[¶?ýÏ,^¡`=3Ž>>©mÛº ÐyÓ¦Ÿ¼¼L‹|>øàx¿~’Bq×÷ß_Þ²E‘$Ó:^+V´ ¡ÉËkñÏòò¥’K@Ô(wáB!DYr²}›6fEÚË—í[µÒ^¼X‘ž^ÓÝOÞ{¯ñØ9š­:汬^ý2k°XÂãñÇÏÇÅ™Ï,\è·wï~˜a ö«¨èºu«ò¯GÖA^^›ùó_X¸ðe{ûvòRÙž.¨Ê54ÔmøpùÀ¹)÷ðð“Æ]þúë;ž|RŽ‘¤”¶mËÓÒ:ÿç?ô,ÍËå+ ˜\P•Ê××óé§OkÐjÍŠZW–œ\ðæ›í/6õeey/¼àH×ÁÒ¼üv‹‹[ïêzgÇŽþÛ·gV$IÆ9’››çë;ÀÏ/(77¯¦@ÃóY»6wþ|CeeÕ"íåË-‡ i9dˆ¦°Ð4ÞvÊ”Zfœ£ªã¼ÏcÇÒzè‘üü!„——ú›o6Ý}÷]õØ|VVî… 'J‰ˆ˜‘—÷?³Rƒá/oß+^_¼x®^¯‰‰‹{­Ú@ÃkÒóäIy[^k%Ð`7ræÌé²e‹A«=%W4 Myjªqƹ|Ò§ñ. /¯Fppø;zõº[qäHj¿~÷•—çÖcó¯½ö’"(¨ßÅ‹—꬜°'66Z¡–-[]S á™åÓ*_ßÊ3gäíK›7_Ú¼¹–ÊÕFÐ Õ=åÚµk …B¡PèõúÛô$þõ¯ ³fM­W©¼ÂÃ#óòòå›ùù*•£R©”ßWá{ ! IDAT°º;?úèä°aônHÇËÝ=bÄø?æ±´ûí·Ãõþ öî=ðÝw‰[¶l0‹ …eeWV®|küøiîd¨@cqbÐ :õœ—ûùuÍÎN½}Ígdd®Y·eË{ûjž‰‹‹óòå‹W®|[¾©V{VT\ÓjµjµgM!„dòŸ ´´4ƸíJJœ¬Ñì•òráh…vKKK„›ÚÍÉÉIJJºé»Û¥§[£·DQQ‘ê†o·¸¸Ø*{Cjjjñéb>š6§Û6ƒ Æ*/öÊ•+¢Ú-((¨ý¯IæxöÖmþ±Çž^»vM-×ßäç×EÞ ±qãF3jÔ°š"BƒÁ „HLL õ÷÷渭´—.¥Z£]g''¡³B»-[ºZ¥Ÿ½½½oåíBVÖikš¶c EÃ'æVy±ÎÎÎVi×ÓÓ³öO˜Òè4¯'¼Þðíz¸zL2•þØ”¢ÄÄÓ/¿\Sé#B6l8ÝT^¬[ÇË#"fœ?ŸÞºuWùf½Ÿ÷ À”V§ýøàÇ ß®o;_òr¬«Ž¼ÜÉÉéìÙsBˆÊÊÊÔÔÿy{w ËÐ܃ƒ[…„˜F²²²âãã§<ú¨O§NýÕ]NL,JJª;/?sæç>}†* ŸÀÀÞééɼ3ÐZ…„ܹt©i$;11>>>êÑGïlW\ºÔ¢¼ÜÉ©¹8p»)èÀÖór{ûvòƤIÛÛ·Û¾ý;º hè¼ÜÕµ¥bÀ€Ó§GVTœ‰ˆ˜A— —¯]»ÆÞ¾Ý”)ÿ loo_Y©¡Ë€†7aà„Ã/Þóìž`?ó³[ŽGÿyÅÏŸüó“À;刣½ã›ßL]–z<úxM`kê8ïsܸðqãÂ7++ÏÒe@Ãkߪý ƒzuìµ:buè«¡¦EÝŸë.„ðië³iÖ¦Ë !¦OKÍIûù\cª`k8ïhÖ|³F£Óü”ó“»“{M‰û§~”·Gôñå±/MK«F@£ÉË•ÊöB{ûv¦?r€UücÀ?6ÚT5~<úø‚û,ûz™|Ó§­Ï3#Ÿ9öò±z=PS4š¼\ž²¢Õž3ýa `-ýÿÖP×A«¿Y]µ¨ûsÝãÆ¿1ñ ù¦$I[Žn™¾~ú3n\èÐtãxôñé÷LaË räÝÝï>3ò™w'¿½-º¦ÍÜîÝ»üüü„?üðÿû_!Ä×_=zôh!ÄO<ñÉ'Ÿ?~|áÂ…Æ;VTT”—— ! ƒÁ`ÈÎΞ2eŠ\ôÜsÏÅÅÅ=õÔSÆÊÕ>BMì­Û#YY¹.œ&&6.î5 #@“$/†häÓÖ§ ¸ Ú"!ÄÙ¢³#׌¬=@3÷ÑGMŸ>]1uêÔuëÖ92<<|Á‚sçÎݼyóš5k„û÷ïïß¿¿ÂÁÁÁxÇùóçËœ?~jjªFsýÚ‡úþûïŠ?|Wû7œ—ÛÛ·«T(õ{Èüµ×^Bõ»xñ’YQBÂžØØh…BZ¶lµå 9xeì+ÓÖO£¸9%%%›7oþüóÏå›—/_îÛ·ïï¿ÿž••%ÏcBèt:Ó<ÛTdddlllxx¸qÖŠV«­Z¹–G°4/×jÏ5X×üë_fÍšjÌÏ/P©å Ë#hzt¥¥B§køvíÜÜD ÓѬnÒ¿&ñÆà¦}úé§óçÏõÕWå›óçÏÿì³Ïž|òɇ~ø±Ç“'±!ÂÃ÷oß^íƒèõú€€€#GŽ!._¾ÜªU«»ï¾;99¹´´ÔÎÎÎ’G°4/o0{÷øî»Ä-[6ðAµ2FŒ(KNnøv{8Üqý@ch0ÔRÿÉ'ŸoN:õÑG}òÉ'G»dÉ9þöÛoGDDDFF–––ª<àŠ+:wî;[¾™•ó×À[Ìñ:dz³GGB„††šfÏžžž{÷î5­iZ:yòäÉ“'›–†‡‡———oÙ²Åßß¿¦G¸™¼Üx]¡ÛÚé=öôÚµkŒ_)L……ظq‹F£5j˜åc%&&†††úûûó Ò¨pu-³F»ÿûßþxùÕÊ«b·^¬³³ó­ì)ÚK—R­1FÎNN SœDË–®VÙ¼½½oe˜.de¶ÆÓvwwç¬Ð®›››8o…vŒ@SuL¡høÄÜ’³oÓ«´ëéé|zï^ùƒË§S§;ÿúXç±g«pww¯¨¨ðööŽ¿‰»[yKbâÁ»îøGÿ !$ÉCÞX²dÞàÁ£„ûöm“+XêË7ß_Ô:V4p£z©’ž ‘***º•»×˜—K’‡qƺQ½Ïc‘Sp£ŒŒÌ®_ºH­öÌÌ77WQXX¨Óýy¥ºŒŒ ???WW×íÛ·Ë‘äädiÓ¦ë/0/I’$I...éééÆH||¼‡‡ÇÖ­[oìù0$h¼\CC݆?5fÌÍU>"Im§LéòÅé72Åü‰'|ûõ«þ’ÄÏùä“víÚ1âÁB¼øâ‹ñññžžžëׯ7{ùÀùÅ‹GŽyèÐõ³1 ÓÓÓ½¼¼**nà… † ”Ê××óé§OkК_ýG“Ÿ¯P©..šüüÚ+_ˆw º¡v{¬Æ »tiyüxñÁƒ…!!ž 6î¾ûîû÷¿ÿ­Õj7oÞuê”9xðàý÷ßß·oߪrðàÁ¨Õêǃ ,hӦ͵k×nèù—£±òY»6wþ|Ce5®/Ú¶­õ„ m&N,Ú±£öÊm§L©øã¿N·îìÙò€€Ö½z¹«T^+÷ÇïóÍ~wÜ¡ª%žB¡2dÈC=¢Pü%+Öétƒ¡òÌA«ÕšU0ŠŒŒ\²dIeu Éb «–!!=Ož”·åÅU yãì+¯t;p@‘~Ï=µTB\=qâô”)õõ”Þx#ýwÎêtz9Ò§ÏN''»Gí¼re@TTrµ`-ãÆ1bľ}ûLƒáááÛ·o7F|}}“““KKK«>‚^¯8räˆâòåË­Zµ"/G³säó-d*_ßÊ3gämM~þÏ;×R¹ÚÈ­KJ*4è[EïÞî“å庸¸ŒÃ‡¨%¬bøðáUWVyûí·#"""##KKKåÒeË–…††>ûì³UaÅŠ;w7n\dd¤ŸŸ_AAy9š»;?úèä°aV …4ujç Mƒaa²²Êj€zTçºgUÓqcÄÓÓsïÞ½¦EcÆŒ‘Ïà|ùå—Í*OžÎ®¥H^Ž&âÄ A ¹Ÿ§¤Œ4žèmÜNI©×öî-xé¥4c‘VkHO/^´(µ¦y9pÃÌÖ]êÔɹ  ¢Ú"Á"‰Àb¬ÇÜ’¥K{Íœy˜~·ˆãåÀ-aMP/8^4û¼<9ùHhèCÕI’‡ñGŽäææùúðó ÊÍÍ«)4FVžÇòüó1‰‰k*5þ²ØÜН/^ùäçŸ^kîj¸Å§dÓë$º¸8/_¾xåÊ·å›jµgEÅ5­V«V{Ö1û²’––ÆÛ®±S•”Xåë£F£BjàFõzU:ùÊ•+III7ÿ’'«<íòráh…vKKK„›ÚÍÉɹ•a²KO·Fo‰¢¢"!Ô ßnqq±Uö¦ÔÔÔâÓÖi ÆI¯·Ò_%ëüm¬ÐnAAARR’þ#ÙYÙÙ9ý¼õï—_~ Ôëõ‘‘‘r$!!!66V¡P,[¶LŽ888!ôzýĉãââ<ø`£ÌË…ññ›üüºÈÛaa#6nÜ¢ÑhFVSÄøe%11144Ôßß?88˜OFí„«k™5ÚuppBÛÀ*vVédggç[ÙS´—.¥Zåi;9 k|‘iÙÒÕ*Ãäíí}+Ãt!+ë´5ž¶»»»8g…vÝÜÜÄy+´ÐÛ»7ÝMÛ1…¢ás9A´Ê«´ëéé|zï^ùƒË§S§;ÿúXçÁéîÏu7½y<ú¸YŸýû÷+Šòòr9’ŸŸ¯R©ä !ÄÒ¥K;wî=gΜGy¤oß¾–?ÿÂÂÂôôt//¯ŠŠ !ÄO<ñÉ'Ÿ´k×nĈ¶›—Ë'}J’‡qéã¶$y888ôÜ´é¹hÉ’yƒBìÛ·­¦P§Õ«W?ðÀ&L°·¯>^°`Á‚ âããsrr ”JåòåËŸ}öYK|Á‚Bˆk×®É7÷ïßß¿ÿ:¿_Y9/7[ 1##³C‡öÕ !ÔjÏÌÌ£µGP‹Jm¥Þ`…½9Ú;Þú™õ(<<¼¬¬¬²²òàÁƒ$–ꊊ ­V«V_Ÿ}wäÈ‘7&$$¸¸¸¤§§÷êÕ˼¼*N§PÔ13×¶æ±DEÍÞµë Þ(·É?7üóÈïG¾ÝÝ w«ÝÕô?°)z½>&&fäÈ‘òͰ°°7j4šQ£F ! çÌ™³uëV¹æ­L% ß¾}»<×¼Ñäåîä-€[TuB¹I’ìììzè¡ 6È‘%K– !ÄäÉ“ßyçù\Ï—^z©sçÎòÚ,f"oÔ>ßýí·ßŽˆˆˆŒŒ,--­¥¦=Àæ¦j~¬V«3337ŒÛÏ>ûlÕ,f`¼YuÃÓÓsïÞ½u>%£Xy9@^€¼ /@^!„½½{o˜¾¡¦Ò .A¦+ M8áðK‡÷<»'ØïúåpûúôÝ»hïöùÛÛ»·§3ÈËq“æ ›ø·Àêß’bѨE¦‘ö­ÚZ1è™?³ô¡¥rdñƒ‹g:{ÕÎUO{’Î /ÇMšúáÔšŠ&š|à·¦‘5߬Ñè4?åüäîä.GºzvýåÌ/ûOîÚm( ps¸®jäîä>¦ï˜ ïMxtð£fEÿðM‡6ÉÛyEy}}úê ú-è4Pï.'&Š¥KM#†¬¬)Bè7l8mÁõzÁ«#/Gíf›ýAÒå•åfñþë?¨ë 9ŸÎ‘o®Ú¹jí£kw¤íÐêµt¨wEIIEIIfÁG„0lØpº ½LòrÔ(b@DÄ€ˆ•ãW !ŽGïþ\w!„O[ŸG‡<úÔ§Oéô:¹ÚÞ{û-íç`çЧS: €¼õLNÄM“r!ÄÒ‡–.ýj©F§1­©3BfìËØG§€úârg EYYYñññS}Ô§S§¦ñb‹7l /‡—A4M¾M·Íþ-pÇü¦‰ûñèã:½nϯ{žûâ9:Ô—V!!­BBª-ÊNLŒzôÑ;ƒƒ›Æ‹-JL$/‡0KÁ}ÚúÔT¡j¾^SË5ë¼¼àí·ó_}µáÛ½òô›Å~ƒ¾]FoIµWƾ2mý4ö €f”—''yî¹WöîýªjQnnÞ½÷ŽQ(»v}ѱ£—…‘¢/-Õœ=Ûð¯zGŠ"áÓŸ¾Ý;'ë,©6é_“Ø1šW^þüó1‰‰«-Z±âõÅ‹çêõú˜˜Ø¸¸×,Œäå7ìûï·H’GµE {bc£ iÙ²Õ–Gòòú”Ÿ_ R9Ê–G€ÆHAVg»ÇËÕjÏŠŠkZ­V­ö´<"„$ɸ––VK§O;X㥠ѢáÛ-++³ÊPþøã­[´¾é»«JJ¬òõQ£Ñ!5p£z½Î*ctåÊ•¤*×7¾%%NVyÚååÂÑ í–––7+´›““s+Ãd—žnÞEEEB¨­ðI[\l•½)55µø´ušFƒqÒë¾QFc­?¢Ú-((¨ý¯ö¼¼ž……ظq‹F£5j˜å!„Á`B$&&†††úûû×¼Ú|þÁƒg¬ñÒÜÜÝ…–...âªÚ8p Úýæÿ*ŸpuµÊ÷ !´ ܨBag•ÝÍÙÙ9ø®Ë ½t)Õ*OÛÉIXã‹LË–®V&ooï[¦ YY§­ñ´ÝÝÝÅ9k|Òº¹‰óVh7  ·wo2צí˜BÑð‰¹ƒƒUŽ% ggg«´ëééYû'žœï‘—×'ù¤OIò0 y{É’yƒBìÛ·M.²$R?ùkPP‡èèôÐPKŠ,‰X¨W¯VO>éûϲ¤ÈÓSµví½^Ìœy¨  ¢ö»€¼\Ôú]§ÐôfFFf‡íåmµÚ33ó¨i©%‘záµbEË.úZµÈ’ˆ…žx·_¿6͘ÑeýúL…Bš:µKLÌ/µß6ζÎûŒŠš½k×V'ï½×ò"K"zì±C–ýýï gwìÈ2ģλÀÆÙÖüòƒw2$jÛVUY©—7è €ÆŽuë³§ © *”J…½½táB½@^ëØ·ïüý÷···Wìß_Ho4vÌc©F Á`üm©¥¨öˆ…RRF›Fª-Z·îÔŒ]¢¢þöᇧjª€Æ‚ãåÕ8"ýå**_ßÊ3gª-²0b¡>}þrÚk§NÎòÂäU‹„.\ K¬åîhD8^^·;?úèä°a ßîÒ¥½fÎm¦£S—Oé únÔN²ëܪó­<‚“^ßð}¥Ñh¬õB´±B»µâÕžã‘—ßññ›üüºÈÛaa#6nÜ¢ÑhFVSDa0„‰‰‰¡¡¡þþþÁÁÁ5=xþÁƒg¬ñ¢ÜÜÝÅY«|ÏqW­ÐîÀÕî7ÿWù„««U¾O888¡màF ;«ìhÎÎεì)uÒ^º”j•§íä$¬ñE¦eKW« “··÷­ Ó…¬¬ÓÖxÚîîîâœ5>iÝÜÄy+´ÐÛ»7 ·…ž]öliEiC¿7Z¸ýð·òÇІO̬r,Q8;;[¥]OOÏÚ?ñä|¼¼H’‡ƒƒC@@ÏM›>#K–ÌK¡¿Ûé`³&š|à·¦‘’«%®-\µzíï…™{3gØœU߬¢Ç@^PÏÜÜÇôóîîwMƒkÖl˜¾aŘ 6-0}Ûù–_+Ϲ˜C§¼ žÍ6ûƒ¤Ê+ËMƒ¡ÝB§¯Ÿ¾çÄž‰AÁ…#®Û·Žy9h8®÷Ýh0o*;v왑Ñ3=]Ù±£¹cÖ¬>%%þ¹¹î>ب_iÄ€ˆ•ãWÊgsÏéÑcÄO9?}|ðãÁ3äH=*u•g.á½òrÐ`ºÞo¾ihÿüóù11çV­R/^,G}|RÛ¶ý}âDŸµkë«Ù””‘G>°~}Pß¾­åȰaê]»îÝ·oøÐ¡íäH¯^­Þ@=¾ÖîÏu—Ä'w !J®–ôõéÛ×§ïå+—åÈ„¶¥nã­ÆŽõXhLÚÍ[œÐ¢{wcÄíþûsžzÊ ×÷zñÅl!„¹  !Ê’“íÛ´©¯vûôÙ)„èÔÉù“OÝsÏwBˆ^è9iÒ…Bú׿ìÙsNñľýúµ¹Ý=½=:vR¬N¯[òß%rdp×Á1Ûbxo€¼4ÔŸí6mÚNúëÀíž~ÚtP«õò†ieÇ?W¿O }û‡]·KJ4®®EEš¬¬29òØc‡RRFÞŽnüÔ˜1õØzJÊÈŒŒ’™3Ë7ccÓßàñãEÏ<“ÊзŽùå4wÌœù·O?•Oú4žú©/1ä\IDATÉÏW¨T M~¾Qùúz>ýô©±c Zm=¶Þ§ÏÎÏ>ËZµª|38øŽ™3'&žˆèÄÐäå4#G$Iþ‘·å`Ѷm­'Lh3qbÑŽrÄgíÚÜùó ••õþ¶m;Ó«W+yû¾ûÔ?ÿ|ùóÏOGEufh€[Ç<·³¯¼ÒíÀ!Dú=÷È‘–!!=Ož4¦òõØVXXãlòÒRM@@k!ÄåË•Œ@^@sdšmkòóîܹ¦Òú"ŸÐyútÙ‹/¦É‘×^ûuÍš>:ᥗ~6­“’2R^¼@3ÊËssóî½wŒB¡Øµë‹Ž½Nn“ª©ö®]ù»vå×^@sÉËW¬x}ñâ¹z½>&&6.î5†äåV°'66Z¡–-[ÍX€¼Ü:òó T*Gyƒ±@ã%'&&6Òg¯T¶¯¬D‡4‚Ï:º ±prr:{öœ¢²²25õÞÞè€]©é¹óÎ>¹¹|¡µu:®ê—%…BÁÁ›¢ÕjûöõW(³fMíÙón?¿ ýû·Ó-äå¨gÎüܧÏP…BáââØ;==™>±}Je{þJ±+á†$&~=lØØŒŒCf»=cSììì´Úsôƒ‹Ž~þ…b^ye‰bÈÉÉßÈŸ~ôŒÍjÜ× ƒ@½ á;¸1Õ&å#GFÐ3À­ /o4&MzÜÞ¾ñ‡ÿê6 “ Ú²e;»’-3$y7&[óúëï©T^JeûÞ½C„ {œœ:.Y2Ÿžaoyy³°yóÖŠŠ3Zí9ù‡ 6 “ ŠŒœY^žÃ®d³äq><äĉäí]»¾˜5+Šž±)‹-ß»÷«ŠŠ3³gÏhݺëöíß•—çÔŸžaoyy³°}ûg‹-§lù°Ð(|þùÚwÞù~°q{öì/..Ñëõz½þŽ;<2[£×냂 ETÔ„’’ÒwÞy•>aoB=ätAc±ÿï¼³îÍ7×^ÿFÅrT6ÆÅÅYÎÎY£ Q|wZ¸ðev%[–’²gÔ¨ yyç„­Z¹mÜø>}bË;”¼ÍÞÄÞ„[Äz,†JåUV–moÏW)¿iÚ´¹:ÎÎÎÎ䯰ë±4&ÑÑÏÏ™óý`³¦L‰ÐjÏ988'.3w@3QQq-.n½—WOº¸äåÆÂ…/¿ÿþÇ,"a³äã’ˆ7–‘ªé&lıci;úËw:üúëIúÄ6ýòË ?¿ -:;––’²‡aoyy³`z–±6È8¿œ®°qJ¥ÃÖ­ Z­V«ÕnÙ²]©t OlPppø¶mŸUVž­¬<ûŸÿ¬ë×ï>úĦäçLžCéö&Ü Ž—7éé¿1>?¿@áåÕîÀ^^jºÅväç,\øòæÍ_ûøxõÕÇ=z áC¶ÉìÜ\ΰM+W¾åììôä“Óé €½©™ !/êé;®ä9îÝwWÊgAqáO€¯OM{€ª~Äñ¹ÇÞ„[ÌË™ÇÔ΂ê+ÃìMÍyyãø¦+ÿH’ײYmÚ´~õÕÊʲ·oÿ<*jŽN§›1c^aáEzÆÖ|õÕÎÖ­» ±ä¼­Ù¸q‹Jå¥T¶6l,½a³Zµr+/¿j)+»Âš‰ìM /oFßtíììø¾kû8 ÊÆEDÌÈÊJ1ÞäºB¶fæÌg¾ùæß••g¿ü2~òäYtˆmZ½úåGäååëõz½^Ÿ——ß­Ûß_}õz†½ ·‚ë ·gײ·Ÿ0aÌ„ cè [ãäätöì9!Deeejêÿ¼½;Ð'6¥¸¸dÈB篿þ†±MS¦D\½ZѧÏÐË—‹…­Z¹EG??mÚ$z†½ äå€í¤ã×O{š4éñÿû«¯¾úøÁ‡Ó-6åÌ™ŸûôªP(\\|{§§'Ó'6ÅÎÎÎÞþúß&³™°)?þèãÿßÞÝÆDuåq¿ó°×qjCÄXJ•ì´µÅú@Wä!Û­ÛV4ÖZŸhÀÔ]`ÓîbSÓnÕ´ÙÆ’m¶¡¦Ë–t©Z­ºØ R‹b\±Z±¸(â²Ìòh¦Ó‡Ë¸/n3kl_3.çÎ|?ñÅÈËßÍÿÌÿœ9çܼr š@_q­Þ?sžZLêöÊyóž,*Ú¼sçÑÑÓ<ž6bŠÙ<‘^\sƒ#ž†žW²PM /gŒqRZúg£1vÛ¶­ $Iòù†É`Ĩ&Ü Î}†É$‚xî¹,Eé*(X§þ—5 UT ÜkÄÕFúrk׿{½ÿæj#Áq%@5Ñ—`ø s{ö”~ðA9Žë,µÚUèé+¨&ŒûË==MK߈ãÝmÓ¤ß ´,™ ˆë,5Šj¢š@_¡X–`øÃ¨pJC¸ÎRüYn  œÎæ™3ÓÌæ‰_|±W½-TèË#Ë @øNq¹ÎRŠ‹K·l)òxÚZZZ.Ìêë»B&TÆŒW-LžnûñÝél6c£¢OŸþ’d„þ|¾Ÿ¯ãÌ™j¼ $ÎcëZ[Ûêêê 756ÖšLއÜîoI /ÅÅ¥óç/òxÚjk«—,É&` dù'UUGEQ¥¢âgÄÄu–‚Û·ï#‡cAFÆÒÁA—Í6õû–‚Ý•T‚Ã> P—%nÜè/,Üär5°,!øð·bÅ‹ÿ›ør¦P<µµ‡/^ÓÝÝ+I’Í{ñâ 2z¥,ËD!¦·ßﺹxñšcÇ>SÿÈpG5!Hº´´´šš‚YuõñåËsFcOO“É4Aý£,[$ËVç_ @*+«[[Û6lÈ' 1EGO;p`gFÆç»üüWwí*!ª AJOO§/×€½{+rs_òûo¥¥=X–€˜¶mûHQ†?`Ì~tÇ??=‰F§‹î4’$EE%ºÝ×È„j}yD`YB»ƒ ߀*+«×­ûÛý­zËÛí×½¸û±.P8ª¾œýå00àVo„4龃ˆÈørï~BÕšßñ™• ز"ñ õ·BI’¼ÞA‚Á»Ÿ´ÒóÝ>ËeEV4<ª ÷Wi¦¨ÔÏÜs$&®£ŸËÕ°té 껟6lØÌë6ÄÄu–Úý¶"ª c¯ "óZ Y¹ò×\G%8^}§ \g PMˆsŸZžTñS”x¸Esžzjeuõ>røbÆWzz:ûX€PÚ°aóÆo±ELï½÷W“É&ËÖGI—$éÈ‘fsüol €3["Bˆ…"‘½öÚO:8oÞìíÛ÷Z,I«W?ëõ¶‹hÔ—¦qå¨Féõ¬÷QM;ö±hyRÅÏ…À˜JÆï÷˲•òˆƒ},ÚÆ²„€êêêããg©›Xu:›ÉD´Ö<°¿ˆ½F@0¥¤~ðûýññ³tº˜)Sêìì& ¨ÖŽ´‹ß¡”––õùçŸú|>_Gyùß{ìd"Eéúá?êH؆OâÒ=-HNÎ|å•‚[·z·m{gîÜ_Õúr@ 7oÞÔëõz½Þï÷“†æ¾ºŒŠÓy¹  W’¤çŸ_Êz9ì÷h·“`w¬€.\8þä“+Ô/'›-öÊ•ód3Sâï‚?&½^xc»+©&З‡¿ÄÄäövJHìö¤¶¶¯É3V´û˜èö¨&‰©­ÔÔ|ðÁ„;6Ų, ¢°Ý šèË1þâ/_>wÇY–Í™3çÆØ””_I’ôÄËeÙj6Çoß¾—d402ËFÉçóee­µX’Ô{,–¤eËr8T;e" $ž~zÕµku­­m?üó£GËããm_}õuZZVnî*¾Ã`– ŒŽÅ’T^^V^^f2M$Éë<~ü”Å’Ôß•p€1c•HMË00àŽ·¥¥=ÞØx9>Þ&IÒœ9ú|Ã$#ŽÛºu:›ÆØ¨¨ÄÓ§¿$`Ô݃^¯( ßD}yıX’òòr::.©;Ë]®†œœ•KÉÅ`0¨§À£1– b*..?‘ÇÓV[[½dI6h¥$qô÷_ݱcŸÕêe«,[ãâfîÞ½ŸÅrª Ab‹6ê‡e ñqì]|fóÄÖÖ¶7ú 7¹\ &Ó‡ã!·û[’Ѷ‰öÅTQ±ƒ¨&„¸²ˆ@|,Kh{î˱waìÛ÷‘ñ #céà Ëf›h/HFØ’a»#¨¦ÈzdD ÉË@( ¸ý~ÿÐÐÍÅ‹×;ö™úGÖ„U\\ºeK‘ÇÓÖÒÒºpaV_ß2¨&úrˆ;fïp÷òó_=|øï <žï²³ ví*!±Ý šèË Ì ¸SSçK’4iÒ}&1©ÛŒFãà K½ƒOb»@5Ež pkŒPƒÁhü~1Âë$a§OíF?²ÝˆT}9€`1 %p…eà³,[‰E(êv#Ÿ¯ãÀÙÙ¢ CC7KJ>¶Ùf0âQM /ԇDz„` _à3ÇÞŤ¾àŽ´¢a»‘¶\ºÔh·§LœWWWñâ ¡š@_YX–ï¬Ñôœ ãŽíFšÐÙÙ]`2Ù–/_WYù‰Á`(+{Ê”’¡š@_)X–™zì½®®¾°pScc-ÇÞ`fJl7œÕê$©§§©©é¬ÝÎû§©&„èyø:;»7n|kÿþƒ<ðÓÊÊOŽÔ²²÷‰E4{B‚ë_5áúõæwßý‹Õꈋ³ò† ª ¡BÓ ,KhÇÞ{ŠíFB™<ÙRT´Ùãi;thOnîË###ë×öö~C2TèËÃÜõëÍ6ÛT«Õa·§8Í"&޽kxäg `¬¦OOàÿÑ ‚ Ô%"½^{#κ„}ù|øáŽèèi:]ŒÍ6£¡ÁI2â>2"!~ôÚJî²N#I’Á`Pÿ;22b4Æêõzž0fùù¯66ÖÚíINgsrræÐÐÈDL,ráÂñûïÎËËQ”.Eé2 ŠÒESŒAjêü’’½ÞÁgŸ}æÆ~¿ßßÝÝk6›I†¾Æ™ÏçËÊZk±$©§r-–¤eËrü~?ÉeöìY}}Wìöé²l­¬¬&`ÌNž¬ìììNHx¤ªêhjêâèèio¾ù§®®’Œ°8÷ Ü[²le©O“&%”——ef¦šL$Iòz?õ ¿íï¿J8òûýÙÙû÷WQA"ç>{Ž–Bz½^QÈ5ô¼>ýôC*@{D„DUÕ³9Þd²åæ¾ø#WI¥¿ÿêŽû¬V‡,[eÙ7s÷îý,–‹7•e»@5Ñ—ÂêÕ¿9uªÊëmŸ3çÑŒŒ¥"âx§×WTìèï¿êóuø|}}WÊËˈE4KR^^NGÇ%õܧËÕ“³ÒbI"€j {Ü“„†¢(³gÏÒëõëfÌxØnO9}ú±hcäÕB‚MŸØnPMúȈ‰­[7mÞüŽú95uþÙ³‡çÎ}‚wÖ£Åv#€jŠXÜÇ Ò±^wÜÇÐÌô‰ª)¼Ñ—¡Á±w ƒl7Зaƒcïš34t³¤äc›m7dèË0ª%޽kÇ¥Kv{Êĉquuõ/ž }9>8ö.¾ÎÎîìì“ɶ|ùºÊÊO CYÙûS¦ÄŒV¦¾„PMôåîj˜ã5‚³Z’$õô455µÛÙb¤ l7¨&úr¡Á±wq\¿Þl³MµZv{ŠÓÙL ‚c»@5Ñ—@xš<ÙRT´Ùãi;thOnîË###ë×öö~C2Ba»@5Ñ—@¤˜>=ñܹ£ÃÙ™©ÉÉ™"¶T}9D£Ñ¸jÕ²ööz¢ Ûª‰¾À½©1޽£Áv#€j¢/J{‚Äv#€j¢/޽!Äv#€j¢/0:{ôåÀøãØ; /ÆÇÞ}90þ8öèËpìЗ¢àØ; /èËЗš£‹ŽŽž5kA㥾¾þ¿îÇŽ×5÷IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/14_ctrl_F_shortcut.png0000644000175000017500000004044412032647172026454 0ustar ebourgebourg‰PNG  IHDRÝ~p5ábKGDÿÿÿ ½§“ pHYs  šœtIMEÜ Xsò, IDATxÚí}y\GÞþ·{f¸Q¹"0*ÙdbðŠDƒ¨Qr¬ûÆ5&!*‰qÁäÝM’5YÍ¢„˜Äß“˜l^<ɨ(ŠŠAeÄÄ QAåÆ ¹™©úýÑs_Ì  PÏÇÏǦ»ºªººú™§Ÿª®/Àå?ñ´5P *®\ø•=1$ì•·×J& °`ŒÙ6G‚0i KÂÀ¦X,ÂËÃ˘ @I$„— ,c,VÒ˳&Žî¸ß:ÆJÌ¢º(k1ËÅ“æŒÒ“ž³õ¤ Ì©—eÑÃé¸ßb#jpp·¢GÇÆže?–9Di›°A<³ò2°1ÆÊÜêåãàå3åBცË×Ûý¯:Îb±®]»ÀápºººBCCåMx™€€€ÀŒÀR½¬á/[Ñ”“­mDâëë[UUåæææååuéÒ%'''777‰DÜÓ#²µµ•H$Ä›& è_½Œ1>â„ EaŒY,– PMÓwi‰?jǹ§ÿ{úÈ^}ÄŸ¢ùüP¢— úA/«r«+BõÕÕþ‡tV7<8YÕö[Sé­»:ªDì64zL‡-[t9ÑÇÛËÛÛGRr“´#yõ2(Ó2EQ~Ï>{)÷og¿üˆúïÂÖŠC·rlDÞc†¸¹Œñë²ýƒ£ÓÂxÞÓ4Íb² 0Ÿ^Öð1.ßiÁãø)î“ße%±D]]lM±Ù,kkš¢€Ât+@YM“žøfåeÌVÛu ¤´ Á ‚&M@@@@@x™€€€€€ð2áeÂË„— Ì öŒI.ë_~–ºi»ÅÖí½/:;;“ÎG@@ ‰îË.lŒ1BhX^÷ñPˬ˜³³ópms‚>c<œyÙ2Qvñ<Ì %mN@@@xÙ²@Úœ€€@'/3ÿ‘¶ø¦'@@@ Zô2Æg6ÍX{€¦•ÄÝ‚OOÍ:5sí>XôYѺ©pvÓ éöÓÚ‚KÌMZ RΓI`®B1n,ýbéZÿÌÚäб”›ãËù)Ÿ_™‹Ó—Mè­†šzY³5l:ù×§©~½ýÊ…ª5¾á§÷½'˜Vmy¹½Vc°êI@`6cŒŠýôä{S•:ñÔS§ÞŒ‘TìaŒê/k+c$Ó’X© L=õž¬tæÓYï퇅j5ì•”OTû3tŒqcé;o½Ý;˜¡ÜOÁ¹Og½·oí?g|¦´íÏ ü÷ÕIù1û/¨û¿„?®qã/?f¿èMénƳª-¯¸)hß°jĽuHl¦K@0ˆ¼Ì¬Ý‰‘R'Æøìg³ÿzü³píS ’ãÚÜ•ÚvFhþ? ×Î#Z ’—õ M£ààI²8ÇTà“ã3‹žýë/4MCÞ{³°Á%Þ»_ Þc\(Ê=tå«j:¡éŒÔe”o™Lºr_ÍžD)äðk°ç?À¤¼µû}ç±9ýù´'™ôOgì;x[¿$ׯËJ­¡ÔÂò ÿgáÚ§´m'&VlÛv ¡àIJ^ð6‚tÎ~ÿïk4½àµ%žcð\òÚ‚­É¿üûû3qïM•ßnåÌã¼Î1÷EÞòÊõaîÂÙOŸIþ…4?ãÄ{S•{Žf=qíÿ­üSæ5©Z7¢ó¨õ?Õ;¤rIŸÛ€ ¿y™fxYJâBûN•g?ýSæÕI+7®œþúéYd´„Î~ú×_h:fãÑc) Q(`~Ò±ObB(æ“cIaZê4Y¢¦†MŸÞ“’qþ¾Š²»½gÉjÿ™¯¾è§öì¹Â$ž»ñ«5i_¾“ô¢+BWþ³ó–L Òôé=Wxïn|uE=*Ú¸§ÄfRöš´/™=L‚k°ü¤Ý¡òÄÉ+zô²¾Ö¨©ª€ØaënyŒhú—œrôÛ•“àjæF4¾Dræä@(f_¶‹?#!8pòŒD¢’ùÆš¾–ùÃYŒÃ4Z^åVÿüvò/tÌÆ£G7ÆÐ¿$¿ýs5Ò]O‰ä̧ʼ ±-((8~ü]]·Ò€žÓk‡ÔÑn²KC)/k€! Áú¨¨ÈÈÈgŸýìRzIÅXy¡s§òÀß—ïëU5aC¡¥ †“ ç…±§¯¿¶BU·ug­Š K¾ZŠhúö©Í ÿZÿ-Cµ_¾^Þc=Æ@CÃ#ås]<ƪóéôÅ‹'3*»âb¥\€+'˜6ÝMzbIé-o÷ú[#êÕ¬«±Ÿ{7 ë»p¦¸˜øÅžÒ†Ê;uÎÈÆW­ŠŽÌù3c’e®v–rO¨).¸ŠPÌL>fN¹ZP\#;E[=¥×û·U¹Æô-='*j½€y¹ÑÙ! ¹4Kvƒé¸¼ƼWbŒ0R=PߦiÁú9 i(»Sƒ§Áo£Ú ª¹S> Ù«µPé¶1vá„%_½³˜q-NïùÂkùÛ‘£e*x߆Ó@ÓP]×à€ïý᳟îÑ4Ð4 =ƈýeykL?=g}^Þ©³ïðÂ( cÁøQÉ–¢Ô÷Vê)ÌSJVv§!§c*ôoWV¼šU^þEüœ/bÒ¯ 3ÂSî9—|>g}žîéfîHâ/kw?xúºö\Úá¿(q+6ðé2¦ ÛF>NåÎ{ûû)Ÿ_©®k ®c}UOWžDqcéjÿg’Üÿìsf„ëX_€jsò²ì¢x/¼,øR³û…ÐÅ^ýÖ ¡áóApPPt.14Œ\R$ ix.<c¤Yh°¯§FAªuóô ¸¦÷µzz<ÿyþó%ŸG¿Î[¿%\Þ…úâ/kïzÛ©'áe‚aã/cì6;˜¦îÜSkŠ‘¢QÆ¡á1@ÓO— ’ÏSÒ´6kÕÓ7*ªu—©q©—g•z×KËh|½œ(Ê=àqš>ýë黺 uñ{Àãþµ˜ÈËzZÃ}á_ß D×¾ÈØ]#a„¹XÝ ¢Ý©×^\B B¿ìÜS#‘H$5{vþ‚P`BO©2Õµ•œ>HÓàïí±FËké §K¤§ÏóÐç˪±úãyIɱÏþ²Ž©YÍK# °YËw%ƒl„MÙ—SÙ©¼í¹hó‡wžû`ûŠ˜í€Ð܉¡†ªÀ4}èƒù‡dl5÷cA"/î­@Á—‡>˜?üx®`ÃABò\¸î­Â׿ܾb~¶a%RÔ”è—~Hyó3úïýâò·#( œf¬_t÷}?ØrdS2¦D¿6³ìÛÓ{RjÝ}®=½'äÓ-äpš±~ñÝ7ömN8¥:ÃÀŸD­­¡¸ÀWžÛþÁáìî û×"^Ü[Á‚/·¯˜øÆ[sÑ—µÝÍ[Ö;<ýKà“³aÅüí€Ðs C)Æ:f2„Â>·ý:ÐÜW󘻭Üòý2MKOø`þ!4÷ÃÍ‹<•²R¯'Âç3c6fn¿µn¡§ÁŸÛ¨ç‰{é<-m¥yi–jíÚµk×®~¶õ»–¹nQÙÅóiëÞ¬¯¯·ì7©ó[c?8ó>Ì[:¼^ð‡ñ¥ |öÙgZüåE‹i&Ý·oŸÙ‹°‚,šN‹ÖÖè¿ÑUƒ½{?Pø-–G^z*ßksixXš¿L%%%%%% ¿kËþñ %ëåêêjÒÿ4±yóf¶®Ù¾ýý“H€€@+9u>¤Í tò²ÍèÑ£‡ßµ5v6žkµÈª®ø¨p¤uµM«ÿ@ž7C`ccÃnjjª¬¬–—÷õû³É=¶¬ø¨p¸ö1³£©©‰íéé: /NPÈ\!¹Í–€áÙÇúžžžÒïJ¾úê«þ.ìÅ_üù矰”‘hX,¶oßnI}£KqrrÒ“`8>k¤=ÍS óZY__¯˜ñæ›oöëcéìì<¥œû¨pöSŽ„-…çZõÜ÷ïý]J¯ƒºÃìY#íiÆRüýýU¾Ã˜·~â-Œ@xÓ‡G4däpzÖH{šdþ2Á ðiO}¼LºáÒž–ÅË#J/[THì¾öòo?ÿö4€|Ízdçääûý÷«jÉ’“×;qNÿðoK<î·5?YyúzM3úŒÞš8}ˆò2Ë 56ÖÝ.cãÛLu¸‰Û­œë´v0¼+ö©=SòwŒvFÝw¦}ð¤þ¸:Œñ嚊ÿVîs°íÞóôKaAšÃa÷¿^–ó2Ær™ÙÇB”#W¶¸ÓEÀêé:ǶvÊÞ¨ztŸ{Qt÷t=›Šþ±½½ýòåËÊGï66þ¸÷À8_Ÿ«—®<æçë:ƹo>—E„Ä@_Ï=àqØñß‚€·³!¶ãä(‹S“2Åôõä\\ÆÈ•rmmÍ_ß[oHý×–MƵ¦ÚºÁeŒ ›ÅúøãÅb±ú£ÂfS5z´SGO/hF^¾^Óü·žÅÿòø%e„PþÞ_½Cl<Ü]OÿÀc³{Bæw¶­³Ûpâ3¹tÞk+–|VâàÊqàÿ¼&陵cÆMs5ï>hn}óÓüq˶ý½ºÃYg^ ÷ {ÜÇÅÁ†MQ&ÖܽLQ”,òMQ@QP €À£ ­ð5NO _­¬¨ š²qF°¨µÚÑÙG$æÚÛ;°YtHHˆÊS‚º]Wϱ±>•¿ãcbÊÊÑ“ç>iqð‹†© 71!±½!±OÕžþõôÜ 3ÜUµ°÷¸¯ïüOT-EN3Ö'¹~ûù†娲¥›SvÊ„°åB®—%HÂh––fý§ŒÕ§¥k)Šâp8ú?Ô ôtŠ~8rs”«xxYûtQ•“­}#_§íG+~æB‰„a‹eÞöÄb,éQ'v°ïæ-(¼[W•‘¿`~pHˆŸµ¹®‘1jkµ¶ïaqmâ„çž½QÑX9oŠ«§ÏhG{Ê„úª—iš–úË@%WÐÐV˜ò‹&ÙÚsÎ]j™â‹Á¸A¿žŽ‡íxT›ý6ÖÖeeW5ÓL:‹Å‡ü>¸MØ#B#ŒâeK ‰=Ъ9èÕ5i¯ªíyw#³9eîÆ)J2yŠn=c˜r½,K(ô¾É±ü´ƒjËæÎ6~è@$ê9v¤t¯Õì6lK5€˜'в¡¢öŸ©ÿC0úƒg”×h¶‘¶†Az¹äü¹ð©Óä\LÓ²¡ ä){L9RV.mûŒ$‡%Ý]=@ã§iÊÏÏÏÍMË”­­íhG‡î®'g[‰Ýnn7š›ÆFýÏÆ(­‡&,ùjÍ’^ˆ üU_í5OTJ îôA/cÆÇ÷Õ²²2]œÌíc‰Ï=÷œZž3} Š2cv^Š4/wïýöw/GW[p·ƒÑVpòD;Üœ;Í€ÝÝ=øÚµk ===ZÅr_ÛSÔÓõºIÀÀ¦Dà8|ÇIŽÝ¨gݸ$Ì£ï÷wö<ªB@!<¶­Û®ZLu;rÚœ:«Zª<Ñ‚|Ʋœ=Æ!U ÒËSÞöôôlhh h)3V†7SÒ/JŒ¢–®hÂή£zݾTt¤«µc@´ °mml{Žƒ[DDDSS³-njïc̬&‚a1cÆH_I•ôrpp°Ö§·O߯b-zYFÊÏ™3§¿yY>ЧR) ý7|g‡5KÑ “K‹EÇö]A=Úhç¶ôX6ˆuI¨ÖΑ1¼ÜôàÞµë7ZZZ$ MÓEµ¶¶š½=%Ý¢‡e"jÝú@Âa÷¸MºÓÉ©íhöní¨qôòëÛþó 7/IÐô`{Ó;(q—èa­ˆfS­ÀÁ©ÃÏùvÍnûç¹ØÞµß~§iâÃî€æwaSyä„ÑÆÍäÞºEÛÙõU/SÕÐÐ@QiÆÆPÐ2%gjÊ´ýÚ*s›.fZqÜFY³9¿¯lrtvrÄ£}‚B¢Që£æÖÚÎS7>»|«kjèè¤㎶6ÂYÃÃé;,‘ y_½v횆¤•nr¹}vgô²L#cŒCÍ--ÍnnÔÙt¹^Óüé_¢D3MÓí]bŒaãªH1Â3ôþÁ—ÇúrÊ¥ˆ$X³ÍûRŠD"ž¬hºîìèà~ÿV{×(8+‚žG÷<ÝÝ›ÜþðÖÁK~V4°fy°ZZZÄb±Ü#5jT?èå®.1²i1Ð`îH:ÇæŽ»#@€xMž,jy¸ï÷É‹þàiºÑÝ-ê[6tÚô¯–Íì^›GGYÖņN˜àaûÀ«ªþÆÎ»Ó¿ÏZ?)ƒQó1(ŠÂ¦(é„å¹ÌÌ´I×ôàòÏ Á4Í–*m 0EÅ €emËqmÇ´w>sÒ§­£ŠEQD/fVèe‰B/s¹\ ™ ˜¢(Ócås‚ƒJBEGG3-­-† }ô1Úº%wîu` a„A‚°D‚Å#þ¶}oÖþ+¥§ ?¸æäíåQ~¾Ùu<Š ‘ÔW\B.Ô÷Õ’g¸^—ÅS¶Õwº;ÙÙ”÷¶¶‘Hdccäêêj~½,IÈlÑ®f ËP#Ü™0fˆp7k´¤ÍªÀÓô>*áNŒí) `]þ¬O^Ë]ñκˆÎŸ¬ý¬£ž6ãÑÒÎçÞþÎÍÜNîjïÅ×6t} JÙ¼`¨˜f³L7³ÇhtwµKD] ߎÒï„P.cn•‹mlèŽÖ^ôò+sIì"‹@á¹ÂþÐËrFÙ>.7c°¶6m¨]š3BhîÜh¹FF!„˜?ïݽ×ß>F Ïhµ)qk^™u¾âÑ©â‹jÉúrG4Kѕ̄ÌY4»î¢“è±ûãŸi ‹puqéêyÌ›¢€>RûM…C\½-˺¬(‰5ˆÁÊÊŠÅbP:×ÒêÃïœX¬|:‡­ æ[ON€Y`Óˆõaò@ÀfF€þ¶$"öÀ› ‚}=8»NÝ€¥3'¸‡OdÛ8r®×ôJʆêå3g‹§O›AQé\  •3¨ØËƾgtw‰»•”¯z&êÛØ@[»S ééè5s²ÿ71°’^‰D,tƒ‚‚äBY®—)Šf³Y"‘ÈÀ:­³°ÜǨ¯¯mkkïèèÀ¸ßÇýÔüÜè¿ ä@þ'1æjØ~ýD¥ä€¤¹û^0·ëÉgÜìÅhzÄÈÆ–cßãhÍ‚nLÙa°gI°3ÆÛÛ{ìØ±zfÚô‰—%À±Vœ.ƒÍh–#ű¡'Œ™eÅò¬¼Z—Ñ0àE5&ãè>·D%ç%o™ÑgFÓEŽ )g•q:Ƹnwâ–’L‹&Ð~BMs³Û²eÝÝÝÌZ+}a‰D‚1`Œ96‹Å`$³tɛںÚËW~âÉÐà@C¿Æf±­ìœÛ:Å|¯æ0\¤&¢µšjÚÄ£Çö7/+¯¯;¤ÑÖÖvçÎ urr2v"cÛóÈÎ_úû)в³QL÷®ˆˆè¾y³³øê¼ò]‚#à`õØ[±AFüŒé¿ì'Ÿà}²)ݨ*òC§û˜¹ø=y/(ùJEþÊD IDAT’H0FbŒ1ÆŒ$€Œh S€!ŠÆ€1¶¥‚§>/ÿ¸ÀŒÂ–am†:q]nⲬréP’t¿ZJ†ß4Mƒ 9 T©¹¶ª ü<™›ç·5IWqjZžò ÆÏ€ädiæ%›#SÒ*m<"ðTµ;1%»¼?$¹YÀIHðHH0\,ëó‚\O°XRÉ,‘ {÷ï^¾òû3³ž 6ꡚÿÆgyßüµ£ù¾êã€A‡­fãà<ë¥ b±ˆÍæô/tuuuvvN›6M×—#óþ1`8&ýN2,h€)"½½ÆŸÆŸj¤×AÕâl6ÛÕÕÕ~öK¢é‹eÖ¡|2¿â ަif¨\VVVvvvº>Ü4õU;ƒ¡Qá–eYeÜ•ÏOÎJÞ2£ ) ã’-Ë²Ê 6#_Eáj¦\s4´éeŠ ›  9ªB.53¡¨°¤‚‚$Ù#äù@Ó‚ä¢ô‚‚0¨Ë]œÇ•ç†qÉiš‡œüœâÄeYY? ã’Â,­§NHJ’ß»¾äãïðÅ—[5;$LQT]}íò×Þ`³^“|ÒÔØIScÅbQgggGG{{{[{{[[[k[[[OO·•••­½½ƒƒƒ£­­½½½½µµM¿|11vìØE‹õÅÏi-fÜ÷~ý¡ÿ­­­­­­]\\ìšiZ-›Qư[QøñýÊ*ªê0ßSΉ‰~;3—xI#èL©ý‡-© "SåÙñÑYJÒX3/y {ú”©/køŒÊ.>^ëç©îÌÄ/ñð (Ë+*Y÷4«Ä(?Q"fGEÌŽê7”ãèÈqtÕÇ|/›#°=é>­¿54PLz~z BWT¢tí4-H‰NÐ4”UÕPTØš+ƒ¢Ë³ã££7—èL©aIùù9 Aˆ¦ɉ»ëd%jf‚ërWGFF3;µƒ1F,Gô€´iÏÞyy¤þ¼ó_^É¥iAÎîzðöã2|äÈ‘‚‚$FoR^q[ Òcä%o)ÁXWÊÞ^ ¼–dfÄ $£`-™`\·;=« ¸ 9é1:çÞzûqÉsJx„´çpçåÛW<—¤$¡²¬ôÜ:LQ^áÏ*Ó´*…¯ÉˆA¸~Þ:R2tYQU¯ÖŸJ6¯Î• da‘€¦õf¢2H¨‹ßßåjD@x„´çp‚Â_Þ¾}û”7€¥ö®aãc³SYé»Ã3—xÅmM¯ŠLÉŽŸ“ j-weŠÔbÖLFy-IYy|Y–²‰ Œ’R•%Ñ” ÷©µe¶&#V"HŽªàr.$G|º…^q[3ª"S⣳UçcX8~þùgKêýÎ##äJI{š•••MMMÔ_þò—wÞyÇÙÙÙÙÙ¹¿‹ljj°RV|Tøõû³Ézr–€u[ÿúýÙ–Ó7àÑÒstø=k¤=ÍX |òÉ'lùßCaés=Z#ªog´§~tvv²mmmàw`0PEØÐr0LûùakkËnjj2DËô·^& `„9»ìVÝîcç‡ãÕ’l9¦}¬_ðÞŠµîÿôëŸI㌔ݪc“V °Fvvv&£#R^N[÷f¿¼½Þ¨ÿ‰>a+>*\ñQ!¹Á‚~ê`à ©›¶âÂëRÓÃ’•ý¨—‘” ×‰Y–&–•ÿ$Ây$ƒî§|R& 0jöqSS1” /›™”?Þø³½|ùòåË—š& 0AA“ù…„—ÍIÊ;vì`þܰþÃ;v|¼ñBÍÆ‚¨æ‘ óûËþ}6¬ÿpùòåÊ;7¬ÿP¯Ñ\œÆ[µGuqK„o+M 7±*.Φ†§ñŽE˜ž!Á€Bî/“>ÂË |wø|á¹V˜ý”ã+sCÊÔ¢O8/2rî3páâ9è}ô/<µ´4UʧƲ§®Sâ2…©áRŠN{¶4‚Ül‚!§” )C )@á¹Öï›òQÃÅO>þÔÃúNÓ+X³+žÇãóùiÅŠ|>ŸÏçóxi¿JuñžU<ùqMΈSçqŸÏçñâwÕÈ÷¤×ìŠçñxzò! X™ð² RþúýÙÌl39GˆÊ5c<ÑaÇxÚšj.×ìJ=4o©pïÚëÙ ‹çl Ì …Baiiê4O-ݶX¿ãQsûz\Ä4Um. KK*SeÌ ¹«R!­´´t¿6¡f Sͤˆ¡‡«SÛ3÷ /]‰ Ÿ`L O>þTÁáþÿÇøêUW^º´çyþg-®ððÔmÇø|þb©I¡¹‰ü=€&¯ÝŸP¬¢ÁnºBÓ-ŽðˆÛ–³Ô|ÆYÉ`ðAüeÂËê˜ý”cá¹Vù÷r³ŸrÔÚbY×~“¾1‰SgàðT¡0~Ww ârWñÒ~%½€À²U3iâc˜†p{ª}àQK7³S¾!Å7˜Û—†kìa¦ÐiýS¾Ï|Âåb[¸”ÙLMM˜¦H¬y"Á €øË„—̓‚Ã'|å\œööiž¬ÅŒ†–R6–”7GF hí/ÁÊÑ„ó Vx€q‰!(Ù™"P\ˆrÌâíc˜F,÷"«¯5GŽ€ÀŒL—lž3gŽ2)]ž½,jKIo±G„^~qA áÓ0 Aë"yØúO5'$é•¥Îl¸.719hZM ã’ÍQÉ#è¾›S/?·ÂœFY;²nc]Ôüo¼ó2yØz…\)÷Ÿ¿ŒërWGFΙ3gΜ9‘«së0f}sdddäæŒ™̶zúÍ%:³’¥—ýÔå®V”R¯·JŸ²ÊiŤlSv-¨°¤‚‚¤0ŠÒW=\²Y[”OQ¶Sù(m—l–ç°:·nÐ~ÄÌÆËŒeüÜ +ßj+ßêÆŽ+šÿR&æ2J¹ n‰ŽÏ.—™Ñtyö²-BåãU»•àºÜÄeYŠô‚95c\²Eù-HNÜ-gù-Q˲Ë¥ÄG§èrÀ1®«ª„‚V¾ÌïµúZª•,P®CT¢±ÄZ´%JîŸÐtyv|ôæ’Á¡fsŽû1„Ë|×ç÷Û³æõ@Fú/ÜM RRƒi¸dstŠòŠJÖðù²ÙÙÒ¡BÆ)ù)«œ¦ƒr¶Æy)§—š$Ü•9LVu¹‰Ë²Êʪj¼„[’4­’ꀞ*j«Ê Àϳ÷úk­ŠI/H “•Ržõ“0.)Ìð6ÉË‹U«g^Îî—ùƒ0ÞH“ÞO@0U³ŠWÀŸƒz‚ „2’¸¤(Љ_â©”¾¢ª€¢Â’äYyúhêß ›¿&C³¬^ümF„¶ê)„6ÿå•AA^‘áC…Ê,¯È¡¬ªv¨ëå¾ãüÙ‹-ÍmùÀ݆»Z·Àwœyb †7úuþ2B1kø½$И—FÓ‚”hü@ a«¢‚iqúWo?.Ðå‚"áš°00¶z*yú”õ¥úžÃ°ÑË¡S;=Û„” ˆR ”“Df NNÊ1éùGŽÉÏO×ÃRYÝ+(Ê‹Ûy9R{ÚH(T_U¡7iýî]6·J\?ïËË9Ûÿ»#ûÇšªÆšªÆŠ·÷ü,‹$jÛ¶ŽnYß5-|£–<±#–3™¢ÂfÄM—gý$Ô4AJ`Â"9ßižÅÌÞÓCˆŒ{@—g/3fÔN³ f^ÄÎû4-(JÝ•ÜÕ‘ËŽCêïM ’·(Õ“É ð”Y,ÂLjó¥Ù?::Úµ¶vL«²jÔhûÎÎnåí?Ü÷WGj!KŠÓxÇž-8®›J"yz:õë€U[U«."ª’j°ÚIQ„&¯Ó¿š^q?q1±¸Hœ-ËUÍ–ð)6ÿå•AyYå‚”9%3áè¾Ô|(ÏŽÎ@AA\„ÊiArd]ß ­|Vlll^^ž.†õŠĘ̈ŠN0Ó!²•XQÕ£•ìfo?.@9È]„¸+wÆW-KV³)”ë Ìpåþ ´¶Åûuþt„Ÿs´{W~Ó7ì:ÐrïªëïE÷¾ÿ×ey‚½ïNÝûîÔÞBeëß …™‹Ñbf)ý ¶nÕØYZš: ŽùS˜¹8w•Ú*Hzõk-(NVç„Ê…òx+ÚN_™Ba©)<««h‚ÅÌ_6N2{ÅeÕ2dGQ^KRV2Ú%ìÌÌLY©ÐOTXR~N‚\™¢˜ô£kfôRPXÒ‘#GÒcÔ â®|YÏwÛjÕC(&ãhfœ¥VCù¡%žš.MLz~NB,™Ò¸âÕË{ßz¥—ž¬?w¼:Ä€ôã¼ús^xDëýlq}%-Õ³“×® ÜTQš®"B•¶5έÙÿügWÔÄ{.t«ÝðÔý·ãSwÍdD³J†ÒjÈN—þ©$±uÔ ƒÚ¹*ÛFÔôÐQÊó%†aûUwj?Q_ž^q[ ”‚µÅm=§û¨ÒG‰z–Tp$Ɉ:ôrH£Ê—©de{j¦¡¼¬&~{F ¤äÃùßrqº|îÀä)0ÎËëÉ÷öhd#N"ý­ƒÅ¦‡Y­¹}=."Uë‘]Ù¹q ©Ì&³¸>ìŠOÝU¾Ô‡Ñ¨ÛJ…áP³+~!ꮀæ¹Å9›3Ksä¬7­tôê*øŒ¼t¬ÀG#ÃT•Ó•bÚÆïªÑk~P®z®zÅý7™ÀÂѼ¬zJù''rR¢SšO@ P~©òö%x ˆÒrJºŸQÊÚHT£“˜ˆD-î”–C“×î-MehM3ÀUñ±\)û,MˆÛ¤§} Že`†ê?q³ }wè[ÅY5^ÖI¾ft$–ço¸ð^?Õ7N7ù0‡ŠÓâOÕ,•ë͸>•ÉÁ±”P|,7Ä?¾÷Êô-n– #0ÈúË=È`aÇýž|oó/¿fõ£‰Ÿä׬®/{‚•ëânµ”½{ìwÞʯZÝðÏüšÕ_ÜyKÀÙ2¨• OMƒTé˜f€+_ÿéžâ´U¹Šý×o×0’U¾Ó,Á±ŠÓVåÆ%0L©+C94ãfiÖJŸcÒ·¨]¦+eÒ#3!ŒÂÓ](À-zò&³ Hº½}õeçcô |–æDãÅïªÑàÊgiÚºë«x|>?Û]œœÊK*òx¼THÛ§ä˜+7‘Ï—¥TØÏªTZ-nV±ŽZ©ÖNWÅ$¾ßÈ•ð3çÄΜ³ mÝ›šÇÿVgòÚCF»÷Ý©åâÞWrüN{ƒñ”±K£ïïʯ ¿¬¼_ÙýÐá2[È\`£‘ºi;óª ôÉýeF>[cØã“O>|½Ìˆ_O¿óY¿ÅM€îäjû‡)˜–6™` 1ÈóääŽÄ¨º=-u{ZdÛçà¶úþ¡CÊ$x+A_Afb^4;ƒ(e‚‘æ/:tˆ´ÛPÇÍ›7™—žeTóóÿ:«_VëI@@@T3ƒ¥K—’vÒ(//·ˆï°{%\ÂÈ# }™¿<蟒~}Á©_ϳ‡ú5èùªpø„æ"Jy¨@ë/Cð÷ö:‹àåªÊÆëWn7Ô>@HËŠ«Ž£ìãú†„>FnÁˆYcÄbðçÉåï;SxHXW}_+)@kKÇ…³åßfý’¿ï ¹a#P5“vi°½|¸h³ñ$w¦æÑ e§˜ø—W“F0B@ÖÇ ¼<˜ˆ^ôtpÈ„}²­]t·üÖ…Ž®6µövŽóçÄ=âçïNnÁˆRʦ‘2® 2Ž&…QJ{Šf ìBïi<ÞØ@ÛÔ×%7;ôd®{È’—·½ÌnЄ'5M =¤Œñù=¯ÿïyõÛÿõÓWWœ™üͪ óuDŒÏïy½X3O|ië†ÏóåE¿fÖB F,úè/ç%o™1x7@±ð·%,KP³+~á¦Àm¥Â¡ðÉW¿ðòw‡ÏžkýùÀõÙO9¾27Ôðíí¼|Ü@Ô)íLnÒ•ÐÎ/?UTÜIÜùq³ä§PTè’yK4HãóW¤ñ¥­)›áµoö.&°(ÕLÓ‚äD¿™K”#‡ªE>IÏO £˜y›‘))JÈÉ /N\–UÜ•;¥™0®Û¸,»œ–EöJÏ2ýeË‚O^»7‡ ,Á;±ß?{á¦K·­4•‰0ñÙZEØÊÎÙ‰RîOÜCÀâÌLí*:g¬Û¯íÇA³\yˆy¹ZCü§ñŽElƒÄDùºíf[ ×üã~ )3Û…çZ¿;|Þ,Ùž**äNâr'qË®–ý’{ÒÐÓîíÏZ»~ùÖrŒ²Þ½|kùÝ}òøî¾¬å±©+î¾$O›ºbáúåk‹îb¹Lfv~q´FCAןÞw(,ICAk¤ÈYµ2ªÛÌFÑ‘µju ièóú±éé1työ²-*¬™µ†9„ÝËKÞR" £DÓ‚ä¢Ìþòìø¨tHÙ¹’ eYé»ë0á–eYeÜ„ô.ä%oöíúrW¥BZi©pïZP,!+ÝY*a–Z™P* K·,¬fqs–P¨|bÍ®ølÿýL ΈcZ—®->–2o¦þÊ0å§­º¾n¿P(Ü¿îzoáÆp=ç!é@Ú×û_‚“%êEÔÝ­œ7yоÒ7îXDQòLÒ“à?9¥ú«}ÞKûzzÒ„_du ™J¹OYð×ä$Ñ‚”Í%Úº§_€êiøgO¿f;s‰'“¦¬ªã’¢<ðãû@EU=ð“ ’L²Jâ¶1êÒg| æN€šS‡Àß”O•'PœXsêÈ97¹¿¬ÆPsïìùêW ãzFA¿íZºçuC(ØËÍÿЕ˫‚B¤öãqR!0ŸjîCTl¯%™UQÉYé9\˜ÁxÄéYeÀ]™_µ,9ψ̼ý¸€Êb2h,Ñ×?$.3G7kvÅK£Æ3<".ûv „‘Phæ÷1^™:û)G9)5î§ÕÇ8UTøÒÿ<ßOQ¡“gºrYm÷WWMæÆÐ(QÏÁsú¢y%›ßÓo«t¹¸dV¸ì—àÖ½{€qýé4åœmÐHI0²`®õ—)*lÍΕܲ2™÷W[U~žFS|ø³\šäì®—‰˜’Í‘‘‘‘›KúÅjó™9ﺆ/P]y)DjnÔܾ®ÍAPâ¦DÌñód‡GÄåfïb¬eçÆEÈ~´†^ËU*>¦”Ø"}ŒW憞+d6Œ:QÑOŒÿǕפҴl~›gðÔ[›ßX„PtجCÿy^ûfÕô7ßø"yA*M{¿üF˜Â‘õ×ÕéI[7¤,:(}ኞÜ{A<†¬{^_Aó3þ–,ï3ó‡OSWܧ$ J¹OÔì—™Q•,£éŒXAŠ 9ª‚˺\L7$¯¸­éU‘)Ùñs²¡Ï2˜—æD¤ñø‰4(懧n;ÆgB¿O^»..w¶•¦†§î¿/M¹8s[\î1íÙ•§ñx‰òùË oD•˜S·ã-äÆÌÇ—î+…4!ëöo‹[(Ï?nÛ~ÿl/‘¦ÑäµûsÌfŠôW)ÆÇ`†þ Áš·>ðññÖœ'w»úæÌ³=Ç9éš¿<ÌÖ-Ò5EšY·hCk)eÙ8R‡Zºt©%¬'7Ö-ê/‡úïÿ»EÄ]­ªlÔãc¨¥! iª™´ÃHÃàïWUÙXxH¨éc0˜9Cª¸  gÏãûO±)*tÉŽPÒ/ Èú~ ×_¼üâ‚@_ºRöññfþÔ:ã¿ßïusñ)<$|uå|ÒFŽRº¤L”¾É°ˆuñgÏ㺹øÀÝ57®«X·«ostö<>¹g#Cwýe¦ædi|Ó`ëâûù»3„+gg]ôMÖ“# ªyÕœÜ>ÓÐÕÕeAëÉÉ= £æôš²òzÝiÁí‡÷ÛmGIŸp ç:::{O`á þòH=¼/¯½­£þΣƪζpïëôžG7¯U‘»N0T”2iÂËà ÕUuW.ÔžØWÕÝ©Xà×C„— †—–´Ã{¸^Ø—›4×Ó­­6l§6ÖEp<j{Hn:ÁSÍÄÊ ¼_iÙÁâ4ÏçÇïÚ•&]9°8M¾„ ò¶Æ¹5»âù|>ŸÏçñÒ~•*ô=Šå †¾j6õY(Ù9gΜ9sæDF®Î­#o/>ùèßÞ¾ž³fOozØjee]S]4yÍA3çû³Ùº^rùr$æö¥øšÛ×u¬Áª´–kÍ®ÔCóö— ÷®½Î¬ó Pœ¶ ¶• …Â48¤·šççl Ìd"Œ•¦NƒðÔÒm‹-8;èãú˸.71*9bÓóó9rôh ¤o)±°˜dý¼‚3ñ1Ì =«wêùäïÿsüßé3Ÿ¾·Éq”ãí[ÕžÞ.>~^ÉŸRúV—S2~ ‚ Ììò˜¸áZM^»·4•ùšQ ¡ÅÕ>Ì’Ú©LH±Mz* ynxê¶c|>Ÿ˜×ÃR)›ì/ Ê*§éØtilŠòŠÛš$?Z²92E@ŠI/H Yœlý!±M ›F)N\¹²";»¡ •;3—x ™ÈÜ4’£@šRã ¤K<Ÿž³ž ¹Môò cî^ºþé:åÃ÷7qš¹Óg<}¯ñ¡££ã­wÆxN 5Ê‘ê÷qRŪ%P9s(3ðЩÍô¦¨ZsÃS…½þÙ¼ø]5„ΆLž¿ÌÄHE(f†¶eêrW§è˜ôüüôZ²:W¡z ‰ }›MÓ‚ã’Ÿ“À…²¬Ÿ„¶æhF B*ô½,«L¦ñMèJxÙbðÑŸ²›ƒç,™rôÇ*GGÇÚš:_w_oÝÞÅ#<5 R¥–¯fà\_ÿéÕ(8š¡ktÝõYš³-Pï`X©f³ZuÅÇˤ”ÍŸƒPÙñb9çê‰mHͰÙÊ™Ç/ñ”ÆáÎ+Òå]д 9QJñÖ‡Û„—ÿØB? ŠZ2ExâMÓù?ÞòçöX ¿££e9·ÓgiNÄ1FÓ†§nƒUjçjd%ÝG˜m8(eÓH™¢ÂfÄ‚@ (® S;èíÇP¦f®Ÿ·9+®%l¶á£z”WÜÖ‚8ÆþÎKÞ2c€bo½ln°ÚLJÎwñL›ÃjyÔ¾`ùcöö6vvväÁ&êèËúü—W!”—œ(ŸW²ys Æò°ÖEBa‘€¦¹Ï†{™û4Ãf÷JâUªiùk2b®Ÿ×H°1äõrýíŽóp‡¦i§ñžœãåéíîèè8”/¨ƒÓŒÕLyÅeõÛ•œ 1éùIò°Ö)Ñ“¾5ÎÌÁ|ÕÂfg]Ã×MâKRV_–•%›}!`&cweÊ/J82ï{Åðs?N8le‡<'µíê™IDATs÷2ô,‹<ÌCjñ°5¿ôBñ°û#g} K‰‡m2ÒVæ#JâìÿpÙŠøOñ) 3¥LÚa„êe?ÿÀqÓ´Ä`®hh ð0јsKÏ]j¿g?s¾?¹‘CÇ~=Ï<†]]]ò666ò?-½Óx“õdróæÍ)S¦(ç0l`cc3BzBaaáÿÚ?j²dLIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/15_add_from_clipboard_filter.png0000644000175000017500000007010712032647172030447 0ustar ebourgebourg‰PNG  IHDRÃf6?HbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 2ž+ž IDATxÚìÝ_l#I~'ø_†k€Y¬wõ°8ªæzG@ks ?l™,Üô`TüƒBš˜óˆ×®åZ‡ö˜PS;Ür²®oå°Ð=Gž¥&h»÷ Zö”kz)Ûœ„@Š¥ñ4»µ(Òµö,ÁÞÒ¬‡î¢ž:àܘòtUä=$I¥È$™¤þ”þ|?Ѓ˜ÌŒŒˆLFü22’^yå·ÛMcªT*—Ünw<G]ÀªI" @$Ä¥þEšVM{ $7c.Aè_þÍÒ+ú¾¡2ó(„siä É͘“jio¢g>Y[™·vjܵŕO˜VMùeÕX4׋ÎÀ‰9]c¬‘]H׎cåcÒÊG»a1¦&¼éª¦áÄ€‹;&1’ ¸–ËåeÃhAÿƵQ+è½­ñ"¾•†³ *Tª1§éeýX+ŸÄh„V½Ÿ©c’R\v ÂVpVÆ$^Û|Xâ|‚•5­šòx<žTUÓ´V>Úù¿û–Ïçóù|†…­|Ôãóù<©j7ÁjÊãóù®¿þÿŸ¨Ççó¥ªûã í4£ù–Ù`ç’ÛiŒ±–»‘¾a{ï}õçöúõßMYØ©ÅÔ<žNk¸p‘„¦µÖ—*c$:¦&]¹¹¾ägéZ+¿d˜]Á˜šð.å[š ØçWÖ"3œ©²Þy·òQYe|&ò'«ÿÇ9‘ˆ •ýû&»Û[ ÆáÞ9‚àrÞÑÐZù¥…L73L•‹1·‚ð³ÿjÀNŹY}§ÖSÃ9 'iàÝ ÆTÙ¯ö/%~”»?¸ÆùÌ¢°ÓŠÊÜËb55€?&ÑÛ™;y¤ÑÃ8—ÑÃWæ\Jš<:í°uþµ9¦‰êÆ8Àµ¬HYe\Rô)“í˜Ã U-TjË.W­Rà\œ›µ Ï›k¹\ZnÏÍ(ë_ü½—zQ#¾Ÿ™þÜö씈õ ƒŒ•À Ž$΋æ.¹ô»ÍƒïiÕ”¬2"bªœr÷ƒ §[â…B¡RQ¥@[)±éwFêÍ'ôq>³¸Ö;p2ðÑöNsù›Ô,'©ç~Êx©œˆs;A¯s“¢‘¹ßžÆ¨O5Ø¿eÐÊ/% œÏD”È ç…ÄR¾¥u·½¹(2¦Ê~YeÌ|ŠDû¹‰hw+"Ú]Ïéó@¯ôíÝz†³aYeî§ã§€1‰ÃrÞ\œ)dªìkß`ÝišÖZW2 ÆÄˆtÙg·ô»³{¶Ù¹™L½ÁŸ‰ÜtÙI=ög.ÒŸò°õî½û垃3ìªêÃ=÷Sœã§€1‰Ã K؃+›Éî×Np.%7W‚vAÓZëK Ùã’¢?ja›—#3œ5² Këíïo°ÍΉDDÝç0MGb›k‘™ý§Y8—”bû.IÏÞ-Æ>íÔú&fL’À ô¶ñx<£"zèßßP'±jèîÞ½{ µ`Ftî}F0¾Ñ,ŒXZÈ6 šk :ŒIôÒ¿l*ˆŠ°c€HI" @$0ŠÉ³¨éñãÇæO†B!Ô ×h4~ŸÄÞÞÞ‹ÍÜÛヌ#pš}ðÑ_Ÿêo¦ºsëk8H§Ö›Ÿ¶0ã&‡HIÀ‹0pž„¦UÓÞ%7—]‚aIŽs 'ùCÛÛw®>¸þèöìÁ%s®o]}ýÏÙHˆó¯®XþΣ۳´}ÇðÖWWjÆD;)_áhËÕÞW'{ç(’Ðé,höö£G·ÍB_°œˆˆ‚íðà“{á¯ÜÙ6é¿G®p$>¹~ÞyTCøg܈»Œ©‰¥õ–¦õ W¤<_Gªªuz<©j5¥/æ[Z+õx<žh¾¥u¶m壟Ïçñ¤ªš¶¿ÕÁ]»+?÷²Õ¶ï\½³ýɽðÕ«W¯ÞÙn/¹êt:;/‰>¹îþOÛw®†¿ýиdù½OôÿÿþG¼>kaLÙ°÷óowÂÝ:«‡ïýýЭ®öfàä"‰€¢H¬‘]H׌®år¹T*s‘Î ‰t7`LMTÜúòF6ìUH^[©žQÚáH-½©‹%"R!q0ÙõÉß}lÚ•›¯ý6ÝyôèÑ£Û³DÛw^ÿøÖûµZíý[¿®wÓWB¹wHÿÿ“{Yz'÷¿_ E‚ùÛÆN?ûñ­;¡+ú«ÙÛï!{õ`X@ôɽÛ?Š<ªÕj:©÷þ_þKòväå·rû‰nçÞz9†nõ÷MàŽI3–‹Ì0UÖzÙÓp.%cN}9çRreÞ¦¯So>!Ò´j¥@DÓ§cšˆvš»ä\.—Ëåå¡7PòKN£¥üäåm'uõ6Ý1ïaMW¾“ëÄ´ý Œ„®Ñc´0{ûzýν{·7n„g‰ˆf÷>ÎvC½Ó¿bóåÝ¡ÛW áÄ'lÐ^ÒS»nˆC {7&úɽìÇ·þݬ…­ŽÍèo¦²ÍË‘­…Lbɱî.ÔZù¥…Lƒ1bŒø˜Á Se¿JŒéá…}ôÁƒs·ï\}0iyƒ£¦Q'žg9¾•ýÊ[/¿óèJ'Vˆ¼þà“PèŠ~\¿Ý»Å•PîQhûÎÕð½÷s¡+ô÷?ú›¿ùó_s~KÉè«×MvråWnÐí> …®|òÁݸ󒥭^\$!öù•dÓ›È(9‘¦ÝDšÖZW2usáæB¢0Æî¦"ñº”<•³8i;·qãVð­Û·gÛ¡Èìõ—_Ïm‡n¿t/ûñ­;· ׃¯?ø{¢+ôÒ~!¸’Ç\ E^¾šÛ]ðÖË‘GWˆÈÊVÇÄÒ÷I‚+¶¶(Öëõö‚'Í:M;lãíLì³s"cjn}·=¶ñ¢f\Nnöz0¯ß`øä^6ßK±}çuŠ„B·ÌU˜ ßúøÁv߃ȃü/èw'®üÊŒž9¾õñ’séã[ú]‹[¼¸H‚ˆ{p%Ø,’ÆÔ„7·#cj›¶ ؃«ŠÄÙp÷ñ3We³·ßyù­¯8ί¼õò;úX€þPçíYjÏ—èÎ}¸ò+7>~ýõN§oô§?œNçÕש;¡áJ(wýAgùàg.®„"_å?ãWºwQ,mp„x<Ç‹666B¡Ðiø-Ðóð ^¦ßjp.¼ùæ›ø¶ìcŽ#L$ÎK¨‚ã4{ûÂ@$ñ‚ìíí½ýî{8H§Óýõé$ÞxíÕË—/Ÿ‡©çÔ›Ÿ¶Nû˜À©õôéS̸€É!’D€HΖ‹õ}—/_Æ!8*Ÿÿüç1&“C$“qwCÓªioBeŒˆ8ŸY\[ ÚÔè†Ih­ü’7Q €R,–J¥ÍM™”ôiûpM«¦<ž3úåç9’¨ÝÏ4 $c.A "A°W—õÿ‰¨šòø|>ŸÏçIU{;õjJ+šoi­|Ôãñx¢ù–fq"Ò´V>êñù|Ý¡»a>õù|úÊÝ!ÆÔ„·å詵óæI=äjœt$¡iÕJ8—ÜN“w[ù¨¬2I)‰©r4ßÚO‘©‰Š»˜‹ÌpÞȆ½ Ék‹"Õ3Êz«Ó—\§–^ÈÔň©H׌‰o‘\ÌEDªgî×ÁÛLJœs.%7c.Aдjz!S”Ëû¡œè˜Äà £µ½UoN·Äy}k»%p.%cN²9¦õÿWæm6Ç4Õ›O:) _Gbˆ¦NÇ4í4‰‡çmú†T¨ f`LM,µƒAp-—Ë)NK$Aô¤Y?¸À%YΘ*ûe•±±Wlmq†sÖȆýþTw4^D$!.w€S+µþ7§âÁ¢cê(s5å‰si²;‚=¸Z.+'¢B"é/ ’ "çÍÅÎ ‰¥îDÈj*UÕ4A°ÏÎ‰í £VQçfíGwï ›~n}×bØA´Ó<¸®3–”8'ÑaÇÃÇæÒð‹û•MGڛȆýY""’”â² ‘=¸ª4=²ìW‰¸¤¬íG›­vúÙ°/KúlJçà°c^^ÜZÈdÃþ —¾YzåCß7Ú_€Aâ¢}Šy09D€HI" @$€HIÀy‰$4­šòx|>ŸÏçóx¢ù–Ö]èñ¤ªš6|ÃáëŒ\YÓZùhïÞ'.…ÅÌÀÑDZ+¿äM( ‹¥RisS&%}b±¦µÖ—2u1’½÷žX¡ç¥ ¸–ËåryÙ%8&siÜ j÷3 ÆJLï€Á\]&¢þÞ¼šòÈ*#".)åe—ñ­æú’œmp>³¸¶´ šVM{*k‡5’R\v êÝŸ4ëD4í°‘qïÝ #Û`œKÉ͘“jzšŒÔ„—¾YzåCß7º/»+(`üqq'kȘèéð™±^¯S ¹s ‚ÖÊ/-dŒ‘¾GD$€1‰‘CÕJ8—ÜÎk¶òQYe’R,*Såh¾µ¿K¦n‘\T$Æ™ûµîð@©T*æ"3œ‡Áåcj»Ôs_£–^ÈÔň©H×ÁÛLJœëÝü5vÍøÒ´×og,©®gŒˆjé„ʘ¤7å9c=¤2õÎÀ 6c½666z–ܸqÃrÀÑÚÞªsp;‰È-ñBak»5?o#Ò¯àÃó¶öòB¥sîwÃ6Ç4Q}hâ®å²BYmdÃþL',ÐC¢i‡Ó1MTßi¶4§m̺èdÌ1MT/Tª1§“v›;ÄùŒcÊ$oŒ©‰%ÇÚʼ½“ÿþJ8Ç?~<ìîFÏÏ‹÷ÿF¨>òß¹A`¤ßƒ0¨7Ÿ éÚ÷o0F|D¾]ËåbL¿—ÑîËm®]ö«ÄØÈÝYvàfŠqh$¶¶¸³i4²a¶{;?ÈŠù¯Š‰ô› ªªVj1—kÈvSñàõ»è˜2]QtLéS”LÄÅ\¸¹(XȺ ØçW’Mo¢Ð¦"ñú;Ç: T°WËA}.H!‘voÆ\‚€d€ e’_wÞ\>•AïægçDÆÔJ¨VQçfíû3 vš»íå4í° Â K“¡ ­šŠæ[ú®õDÇ”a¹õÝÞ€FßÉK+ñJ{ZF¥Öž0Ñ[±¤ÄùÀ8 à¼;’ìÁ•Íd€ ²ßï÷Ëý«Î\U$®Ê~¿¬rIY Úïn)^¿¬r.%cN½ÃŽ%Œ© onGÔ'TšG*‚àŠÉ¤x½>ŸÏ/«|&Ò¦ ï±‘ û|>ýQOA°ÏË‹"Õ³a¿Ç“ª‘ÍøÒâ“«z¬ ÊþŠ;)q¾Ðx<>ŸÏï— $.Êóv̸€ IˆÇãñx¼ÿP(„áúýáV~i!S${žh¸°îÞ½{ µ0"€0|××bNÔ @"‰ôïºXFE˜Á/x" @$ˆ$‘À(§åÙ·ß}ï ÕÚ¯½ŠS€NÕS wn}íLTÙÞÞÞåË—ñ]„»8[Ã'ˆ$‘œ;–æI{B')Åe×1ýúåö«¯ÿ¹þ;üço½Ÿ ]ÙǹôçDôÕ•Úíى׀#3Ƙç’R,s‘Î ‰´Å_åÖ€Ûò¯xr/ü:½ó¨V«ÕjµGï¼üÖWîlw†ì¾[«ÕjßýBöjgé¸ëÀ Š$ÚlŽiëjÊãóù|>Ÿ'Uí ª©ë×ßð&TÆSÞôCþpTTñ÷?ú›_øÂKW/}á:¯¶||ëŽ>Üp%tçÖǶ'Z^l$Q«¨ŒQÀí„V>*«LRŠEEbªÍ·öÓej¢â~ð ùÍͤÄ9çRr3æFÞ™½ýÎËo}%|ï"Ú¾ó•EÚ7+¶ä_þ¹îm‹+?÷r^ Æ]ŽÒß'Á˜*ûU"â3‘µ˜SÓZÛ[uÎn'¹%^(lm·æçmDDĹ”Œ9{R°ô ݳ׃”ÿÖ¯9¿Eă+·GfkÜõà…D=ã šö¤Y?¸F½ù„Èv¸ mßÉ~áýGµ+íWïУ¡³%Ç]ŽÐažrˆˆŽ©Ãæçà]‰ÙëÁÎ]ŒëÁÿî“ÎòOþîãàõÙIÖ€ÓI‚}vNdL­ÔÚ“'ĹY»ÉL=àØiîZyŽã¥/üÂÁ 3ƒröúËoݾ÷ Ñ'÷n¿õr;0w}8J‡úÝ {pUizdÙ¯qIY ÚMŽyyqk!“ ûßyþ‹×F̹¼ÊEî\½êÔ¿âçgÿë!fo?¢;N§“ˆ~þwÞÏÍN¶>%!Çãñþ7666B¡Ð‰ýNÕÛï¾wV~Áëö[pçÖ×ð ^wïÞÅ·eÀäIÀä.ž¬ìííá»ILâ×^½|ùòY™*§+’ "Ìa8s0O&7lLâÞ½{¨ äñãÇ#‰P(„ €!ÆÀH³`¸§OŸbžL‘ ’D€HI ’D€HIèÆøUqM«¦½ •õœKÉ͘KŽ)‹ú~ 8Ö½ÀÆ“×r¹\*•ŠEEâœsI)K¥R¹¼l½ƒ×´jÊãñxRUM;[5u˜œŸÝRY$1ª³l壟Ïgì/µV>êñø|>}ùCþPÕ`LMxÓ=Ýj·»Íç£>ŸÏã‰æ[ši—ìëHU5‹ꪩýÌè{ß_’ªÉFw<Ƙóþ"[ߑĵôB¦.F”ˆH…Dº¦w«é…LÝ¡‹kìZl3©g ºUÁ˜ºErQ‘kdî׎‹ä"3œûs{Ã\D¤zÿ†DÔÊG1’ÛGi売Ê$¥XT$¦ÊÑ|«7ÔÁÕŸóþ"[ßà|8Obcc£gÉ7HT+"šv8ÓDõfKsÚ:Ýjbɱ¶2o·Öƒr.…çmDn‰ …J5ætš®gsLÕM6tLÕ •jÌiì³5­µ½U' 8l–pp;©½»­íÖü¼m@jNËE¹­iõœ9?6ã2 _îííß`ªìW‰1ª7ŸÙWlmqg!ÓhdÃþ¬¤—]Gp9®µòK ™cÄqëÛ=iÖG-©7ŸÙÆÒ9XdëÛöÔ-ÀYÔh4F<»12zè˜rˆÄë½£÷‚=¸ZVSYe…DÚ½sŽ•AÑ1Õ;ÐZW2usáæB¢0FZSñà Fÿ’¾Ý[dëS ,W,ÀéõôéÓ£™'!öÙ9‘15·¾Ûÿ®3–”8ïôÓS‘ˆvš»ƒÛiîÕ**c4íè»'¢$L;l“äиßnž+µöîĹ١·`ä|x‘‡o pnÙŒK{pU‘x#î>ËÐ}ÎÂï— $.ÊóvAû¼¼(R=öz*rKñúe•s)Ù7„!®X2À˜šðævDëi{p5¨gÃþnõ<«²ß/«\RVƒöá±HOÎû‹l}[œyp>ñx<÷¿±±± …Nrß@p¶Ü½{ß– “»tz²¢WÄ2Ž ÀÙ1 @$ˆ$‘ ’åªàzûÝ÷P @Do¼ö*š88‹>zôCD/Ø—|TÀùðƒRá·ó7&Øð÷ÿèOÑÄÁÕÜi ’xñ®ý‹‚J8ëþø'Dô¹ŸÁ-c4qËÖÿü9DG‘\@ˆ$Ž.’¸„ß D0q$1 @$ˆ$¬ÃI*hZ5åñx<©ª¦õ¿œ8AŸAªªXŸÿAeñx¢ù–öBŽËÑ Îm$q‰MðwAš8c‹„Ò‰u(§eL"åñ¨¬÷\ç\JnÆ\‚p”ö&ôÌp>³¸¶´ '¹ë’›1'ÕºÿŸp ŒE?FíÜ&Òî“Êíþ¬«ÖÊ/-dêHc.AдÖúRºº2vAŒ‡ï428ë>{ÆÏh‹wŸ‘n¯¡ï+áÝ9¾á#êÆ$–ËåR©T,*çœKJ±X*•Êåå#?<Ã#)­•_ò& Ð3°¹)“’ž æ:s—Z+Ý¿(ïŽ[´òQÏ¡ý  «©Þ]ì/IU{«®š2^©û|>ïRngè¥|>íTènë‰F£ŽHí~¦ÁX Ùn Á\Ý?ñ†äи»ns̘šð¦ 0t bšÚXÕhš&\¸Hâ9Ÿào`}-ÞXÇѰ›î+– 0ÖÈܯ™4AfÀ!-Iÿ¶ýùAc$ÆÆÇb³0h¨rx‡´ç=6úø±13úòh¾¥oÛMÙê-4V¦½ÌG¬úËßSM=FOñFû3Ú©\¿žH"pÑ´jz!Sï´&ÝÏy-½©‹%"R!‘® Kb·¹CD÷ [ùh¢ Frû»h売Ê$¥XT$¦ÊÑ|kÿ¤aj¢âÖW«¥*c’RÜ”ç†gLÝ"¹˜‹ˆTï¶#·Õ´j¥@œKn§É»ÃshÜ ¸b›I=6^  2$5Sƒêߘ&ºÕ I|é•/ùI jñŽ©Ã›øà!8ɵ™Ó-qN…о•Å iKÒ¿í ¼áó;°ñ9L³°ŸCEꉓ†´çz W*•Š¹È ç…Ä~÷§gF_ÞȆ½ Ék‹"Õ3Êz˰Î=Zi¬œú*}½Ì E#Ë?¼³é)Þðc–;•àÿrø±#¦&–öO½6ˆ¦NÇ4í4[fŸaÆTÙï÷‡³õ@²¼ì´¡¦µ¶·êDÓÛ~l´½Uo×¶Ó-q^ßÚîî‚s)sê«5wˆóÇ‘Í1=tT3GÛÈ kÏõ› ~½=9ë!½Ì EÊ?ì˜Q[|Î;Á\-—‰QgàgÊ!’µ9+Λ‹"cjn}—ˆl8å{¶ê[ÒþÀŸ(Ap¹ĘZ1¹d:ÚŽ›šõú‡ I|öœ¯oü•q…õ¿²8O¢çŠeð„£ïðŽíÀ8–[Q£i‡Ý´ ãã||Õ¡S6[¿¿=×´Öº’©“É)?ÜŒ]“=Zj¬Ìz™“Š$WþñÚâóÝ©tK×îïõÏXgfC;"ˆ%%ÎõÌ‚}vÎ 0š—#3¼žQò-ÍtC}!ÑNs÷À’vm×**câܬ½¯\ƃ¢yN% ÙÖysq†óBb©{›¶šJU5Íbûë~ff¼Ôƪ¸Pž=×úÿ¾ó½ïëï~ç{ß7]aÌï$:¼c¥iÕt¢ÐVÿãlåÃ;ð#o±ñ”²¾¹ž²Ùæ;ÍÝž8ɬe3´ç‡ŽÏ†íq¬Æê`®NnLbtù³ÅÖÜŸÑNÅâ£"®år.2ÓȆ}>Ÿ_V¹¤tg6èó›ü~¹@â¢<¯gÆ\U$®¯?¤§WeÅ7šÔÏÚáÛ öàÊf2@í¼ù|¾Š»=»Åb÷+A^©ž ûM«k¬Ôƪ¸`‘7ýûöû¾ýþƒAï £G\ k‡g¥=·þ4œ>s«Ýš‰‹k†™jã~G~x‡ä­4>Crå¼ÙN9çXìß|KñúeÕtÊ”i{Þy’EMxs;" zæ`ˆ!{´ÒX êeƸ2ŒÇãñx¼ÿP(´··w Šì{'ÿ §ä;3îÞ½;F$ãÈ]ðHâÀ·îÌDÖVÆ„N[$ñoýÕ ¶ý³ï¼gIœæîÇJ{~j›¸ãh|.r$q餙¸¸†gä@;º¯Â8%žñs~Ÿë|´çÇÑøœ|ƒvzšÐKª´ÇIUNò,·æ7ÓSñ,šø<€SIüìç?gºÜétÖj5ó& •_ZÈÔ),ê=hk})]]ïcÂí… ¸–ËååqÚ/M«~HĹ”ÜŒ9w×—2…DÚ}ŽZ·A‡~´Úýlƒ1¦Vj1—ëè2tLÉ8ÄÝSâ¬Ô|ûT¤ZÚ›8ý§âÄðx\€&›qùOŸõÿ9Îî[f ~¦ÁX Ùn Á\]Ö/ÊS¯#UÕô%åñx<©|>êóù<žh¾¥u¯±SÞtUÓº« ü¿šê,i壟ϧ¿<¡ªµ9¦Ç¿pïɧiý—{—r;R8P­|´“æ¸bzè$r;%2Ãy!·ÞÒF–Â|¹ÕdÍ h¾phu]¿žøÆàSNßW5ÕI3U5f¾çì’±c­y‹§™±Î=ÑhÔPÆž•»/»§b+Õ? =‡O¯C½°Ñ|K/{·6úOìþxo rÛ\_2Ö­éÇߤþ”^@$ñéÓgŸ>}öe÷¿ìþb÷"úÞfEÙ©Q)ç’Ûi~1Q*•Š¹È ç…Ä~ ˜ºErQ‘kdî×ÁÛLJœë—Y#/YSw¹¼ì„Zz!S#JD¤B"];¡ª­UTÆ(à¶~uÕŸÏAõSK'TÆ$¥¸)Ï O¡§6œú*PŠÅR©¤×ϸ‡~Èß ‘ƒÌtxÞ9;'Õ·¶w»¹T óåV’Õ´jMެ®’ßzʵòQYe’R,*Såh¾eLa‹äb."R=s¿6(cÇ^óºÝæQ÷T4-µÅ3Jìó+I‰óBb)ßÒ´jj¡.¯í}eÑëP?oÙ°W!ymQ¤zFYoiZÿ‰]#gÿ¼•& b$w ÆúëÖôãß¿ŽÕó N"’øÇgŸþã³îÿ¿êuÑw¾÷}}y÷­C^Ás.…çmätKœS¡2îÕçR2æìÆ1DÓ§cšˆvš-³¤Se¿ßçóùýrÿ܈ñꔩ²ßï—U>Y‹9-îkD> õ£i­æq>ã˜êY>0…nmì·òKë­ñ/Ⱥ‡xÐß ‘ƒÅ›NA°ÏΉŒ5ô>p)Ì—[LvH{Z¯®AØÞª·ãc§[â¼¾µmL!Ÿ/œmQ§ÇTŠa¥™¬i‡”zä‰1˜žOƒ¡)¼€šoŸiJ,ÞWêñÎ(Á”E"çfí“N¼°ðÁï«áC±v^ÀÉDŸ=ãŸZ®?ÊoêKºým¨;@Œ©•šÙ•¥’©“É í¿EÇÔäeœrˆ†Þ}ÌQåd’O«õ3NI{pµ\V$NDÆÛIÖý?Ó‘}tºT*‹¹È 7Þà˜°š¬iÍòĘrˆã¥'YóΛ‹"cjn}wüƒùÊѪg”î,„±à軯†àüDÏùgÏÛþ?øNQiü3mÌf:÷Võ%Õ”>ÝiÈ…ÂNs·3Û`Úa„N˲ÓÜÝPô—úÐׂúèw·%=¥äÓ¤~Œ‘™±àc•ÔKJœ¢õ뇾v?3î>îk¼1¸æË-&;¼€Æ…ÖªëÀ)gz¼*µöYjñý„jÞÀ6/Gf¸Þë›–zÜ3ª–^h†7Û³ÒÍ[4ýà÷|Àí³s¢iåOôù²p^À‰Eúhêê·7V¿½aq U°W6“ªëÃÑ>Ÿ¯ân?VKSÞÜŽH=Ó¶·¯_V»7­Á>/·oÐêó®7Û/sŽÅ!—ìöàª"ñF6|ÒoŒ©?ŸƒêGÌTÙ_q'YÒîôu¿_.¸(Ï5:=Ö{w*Ã^mvn¦3¥`P)-·’ìþ°¿€ƒJ=²ºúO¹þã¥Ê~¿¬rIY Ú‡^…Ÿ\Í›”"`¬¡Ïv4-µߌ<£ò'ù¨§âÞ\v ‚=¸¢ŸœãÏü0=±kdë©m{p5h7‡ÿä*#6RÇãñx¼ÿP(´··×³üíwß»øµá‰n¾{˜/îÅ÷ÌœN'pèá…×|û«_:34Ï¥‹PF€s÷îÝI¾™j£ð]ÔÝÅ„C^kþÀWЊ‹k£]9“Ä(#ÀÙ“Ðݽ{ÓŽ`rˆ$‘ ’D€H`”aß'qïÞ=T òøñã‘D(BÀFc`$豈áž>}Šy09D€HI" @$€HI" @$ »4ÖÚšVM{ $7c.Aè¾üfé•}ßPYo\òüù/^ªÝ·œs©I).»þZëK Ù#"Îg×V‚váÈËßS¢r NCN"’D\ËåòòàN±¹¦U?$â\JnÆœ»ëK ™B"íÞ·µ¾´©‹z¡i­õ¥tuå¬v´ƒ"0ýe·öΜÓqwÃæ˜î]ô¤Y'¢i‡MTìÁÕe½Ny<¾ŽTUÓûé”Çãñ¤ªÕ”¾<šoi­|Ôãñx¢ùÖuòù¨Ïçë.ïëò[ù¨Ççóy<©ªÖ›xwáþú­|´“Ã&Ñã•1ÆÔ„7ý?4¾ÔWhïÂð>»e÷D£ÑÎúƒòp‘"‰ZEeŒîîƒ ¸ÜbLMx—Œ]¾~ù^*•Š¹È ç…DºÛq2¦&*n}y#ö*$¯-ŠTÏ(ë-Ã:[$‰±Fæ~Í$#é…L]Œ(‘ ‰ôþ zâåòrï@ËB¦N¥X,•JÝw{Wl3)q®À\c׌/MGYÚùÌEDªwóYK'TÆ$¥¸)ÏÌÀÉxwccc£gÉ7ºýœìW»ñC2¤øLd-æ4¾åZ.+ä‘ÕF6ìÏôwº6Ç4Qݰ>çR2æ$¢i¢:—’+ó6ªMÕëÍ'D¶Î:áy‘[â…B¡R9$ª•M;œŽi¢úN³¥9m7-Bbɱ¶2oïܵ”ˆu|:¦‰êí|î6wˆóÇ”IÙ{ò`zøŽÜãLJ͓…BÆ—{{{û}öûý“r]®Ř>ïr¿§ÔZù¥…Lƒ±C1#‚ÆÈ‚˜Wlmqg!ÓhdÃþ¬qƨõD,;p»gdzŽÀqh4#f\v£‡Eìó+ɦ7Qлd­µ®dê$.æÂÍ…C1$:¦zM9DâõÁÍðY‚=¸ZVSYeúŒQçø‰¶Šúòà„~àà"xúôé)ý> M«¦¢ùöü}E»ã7¿4·l§¹ÛIpÚa?8"öÙ9‘15·¾;V¢ÎXRâ\Ïá€D¦bgï&/­DTí‰#•Z{ÂÄ<œ˜SI‚+&“âõú|>¿¬ò™ˆ~kC\±d€15áÍíˆÔ}üÁzÊ[Š×/«ƒæ=؃«ŠÄÙ°•ç ºSøýrÄE¹=M¡?A°ÏË‹"Õ³a¿Ç“ª‘ÍøÒbþõXA•ýwRâ|xN¨ËŽÇãñx¼ÿP(tnÉÏÓ·?é3EêdyÙ…3^ »wï^B-œ­`H¿¯ÁÅŵÏ’œ¤‹Iœƒï‘ÄWaÀ)„_ðD€HI" €QNé³o¿ûŽÍñÆk¯¢I½/ù8+•|Ú#‰ž_?ª?ð»š|fqm%h?¸“jGû+äçégÍÍ#‰KÇ2&ñïkaø ¿÷‡kh€Î+}Tò™¨dK­ÊãñõñxRUM{±AFÊãéf£çå° [ù%o¢@¥X,•J››2)éž­ôÞ,——ÇíõM³¡i­õ¥vàr^}öŒOð72ÙúùKÃÿLëßx¢¦ªÚ¸Îú¹t¸¸•z^øçÈâ9üBjïðGH6ŽõˆŸ¡óð¸ÇM´õ3Sk壞h¾¥ëó$ʉµxGòÁ/’X.—K¥R±¨Hœs.éð½ì‘U¨Œ1¦&¼é‡ü¡ñ¥ñxçóQŸÏç1œmµû™cd{l@ìÁÕÞ²ô}Zù¨ÇØ0™¦ß“«î¶ëK ÉI‰s:¿>{Î'ø™ìÏ~þsÃÿL·ÒÏRýŒ-$Òã~0&Ž#ÇûLÖîgŒ1µR;ÆOø¹=|ñÊ ƒþe÷ìÈ£_*•^x3u6ÎÃc>ÇØ TS^…äÍ• ýHñÐæq:޵Å~>¦hì­¸µ{h­šjw¦ƒ»ðžþø0g¹ ¸b›I=²InÆ®±kÆ—ÝŠ`LÝ"¹¨HŒ52÷kzUV ĹävŽsj¥2u1¢DD*$ÒûçW;ý\D¤zæ~­'Wz6jé…fxeÞvÎåŒñÁ—^ù⿱"‰xúløß¸glÏuj7¢÷.åv†_VS%&éQ5Õ¾2¸~=ñ¾€²?3빈™á¼[oõ]´uÿï’{vçIU{³]MéoEó­öÇ´û9=x“ªš„¿ýÌý}yRùÞÆm"¬2Ó#ît:»oYOª¿ºÆZ¿·,káý+cËE{±ç¡^ŽÉÆ•ðp ÊÉ B™‡wy5hï´ö*ÖÒEàð¦igü?9pJÎë¥8ÉoØ'½šê~´‹ÞÀòþ“G‚`Ÿk4Ÿí6wĹYûà.|H<:Þaªì÷û|>¿_ëçRxÞFN·Ä9*“æzðA4íp:¦‰h§Ù=½ÚéÛÓD¦é·òÑœcmÙuþŸüì™ÖýÛxðá Õ6|h\sd²Ÿ>}6üoØÆ»Í" ¸»!]ÿéWK'TÆ$¥¸)Ï ?·­›¦ÓÊG1’+–J¥’ß4‹k{®{2ÓáyçìœHTßÚÞµ4멵òQYe’R,*Sån—ÖÍj1™á¼‘ {’×Eªg”õ–¦é—¥RI_¡H×Èš[cÑÊååkìZO ƒ>VÛ+ôCüe÷¿ìþb÷"úÞfeôÑ?X„AÕeqýnYÚ‡jw{«NõÌ}½ì»Û[4¤h§æ<Ô´jz!SïÜØ÷êó¨G{PÙ,'ûˆæú’·â./»F^ï¸<ØCùÁãÃÿ‡žJÿ@Tßé÷¤Y'ëÀ¨tƺÛȆý>Ÿ/œmtû'ËÛ÷ínœO“>HiyxϤhc¤0~ÑôõÿýW¿LDò¬}ãGuÜê°¾ÞëÔ›O¨V)ˆÝð]zÒ¬Lï–ž¶óP\±µÅÎY#öûÇš7Ùá7'#ûÎ%¥˜‹ÌðBb©g®¥é¶ct:ã~0;H­ï˜¸§;æïp'Øò¦óÐ7ª7ŸìnoM»v¢cêýñð^Ü0{©ÛiîÕ**c4íЇbœ7gø³°šv7«Ÿª¹õÝñsuQ<{®õÿ}ç{ß×ßýÎ÷¾oº‚…›&?ýá¼¹h5-žÉæƒÊû?ýs:ìs‰¶Ù9‘ •ûÍéÞ˜¼· ïï9¯Xìóò¢HõlØïñ¤jd3¾ì¦¹¥xý²jÀìÁ•Íd€êzìéóù*îãöàª"qý>Åð ÷äê\ÞÈIpÓ¿o¿ÿàÛï?ôîCÖG5lórd†×3J¾¥™†ƒÆ*ýFµÅè¹/{ûÒ{×B@Y»Ÿ™wg›ÇQõüè[ÌÏÔºy¨ÔÚ±qæ˜^þÌ­YÑÆ»€ÜDXèÒÿÿƒï'Óš º†¬ïtˆHUU}‰Ó`¬‘ͪÃ#“Sx:cI‰sëèd‡£[®v&õîà`ÔeÌÉX×lú¨†Hý~ñ `ßEæàæÈ¨SUÕîú˜Wž'ÚâY¿ÐT Óò¾ôsÿüÐßp ·êo%ú»pëýqÏ ‚n<ÕûÒ\-—÷#¦ƒ/‰ˆh:¼²Ù‘ï;”J%}F¤1ñþça\ËeãseCV6ËÆ)z²î¸" ®MðwLc}ûQ]8ÀXCŸlhzúéTªì¯¸­>¦kšŽ=¸š ´cÓ!qm÷FlÏgh¦s3Þy³½UαØÍOxªçA•ý~Yå’²´1ªœ 0¦&¼¹‘ô‰;ƒrÛ-ïÁ¢9ûSöYÜDX<ú«ßÞXýöƸG¿ÿY¯®ëO9f8ç|¦=áÃy32cxyêÏÃîs7~¿\ qQžkì‡Ãµ\ÎEfÚsÅd•KJ÷.¾iNÆê#{p¥L,å[Ú  ” ±‡ùÁrvë§„1(› §;™o¬ ]ÓR˜–÷ŸýkIˆÇãñx¼?•P(´··7òžëÒB¦;˃ŽèËß~÷½/ù‡ùUñsÿ’§ÇÃÿä¥Â¿ýõI¾ÀõϾóÞo~}ûÝ÷n~mx …ïâ zO³þ&Âz#€£zœ›Ãqš»†3ZÉwïÞ½t¸CÒZW2 Æ\n3} ` À ŽIG²…ï¢nÏpq¸&GÿTÁá@%r¨HB¿DDV¦OŽ —›gi£›Ãqš{¨³[Éø-P8¢Hâ\8 ’€ãõü¹†J@$qº<üñOp„Î ŒI ’8]~P*àðœ!%õ}T"‰Ó“­Î†*€‰ “¸wï*yüøñÀH" ¡‚`ˆF£10’ù=ÙpÁ=}úó$`rˆ$‘ ’D€H‘ ’D€H`òHBÓª)Ççóù|>'šoi³î´jªS ©‡üaÊãñxRUMÓëGÿg ’8Ø}¶òKÞDJ±X*•67eRÒt™‡én-n{¬=º¦UÓ‰ç’R,–ËËרµår¹\^v ‰åàìEµû™cdLï2Á\Ýï>«©ÎXEªÚÓ•æóÑUÓÞ„ÊcjÂÛD4­•zôKüΫۚ÷ô†Õò'ù¨§;‚¢USíÄÌvÑI¡7?¦‰Ë~ϘĠ<Œ,fµšBÌç9’дj¥@œKn§É»­|TV™¤‹ŠÄT9šoí[$s‘ê™û5ApÅ6“çœKÉÍvPRK/dêbD‰ˆTH¤kcmÛ¯gµkljvNd¬Ñ|BD´ÛÜçfímÛ»P$Æ™ûí]ÊOOâú˜„i6Æ-f¢â”Àé4ðWÅ766z–ܸqchÑÚÞªsp;‰È-ñBak»5?o#""Î¥ð¼È1MT/Tª1§Ó,F!šv8ÓDõfKsZÜÖ"ÛìÜL¦^¨Ô–]®'Mš»ië¾ÕÙ…[â…B{µþüØÝÇ/f2æTù§ÐãÇ/ y; _îíí MíI³~pA½ù„È6Ö Se¿JŒµm÷&B7,0«°ÍΉ™úN³¥M5w¦¶±óc?ª QÅì©y€Ó©Ñh\¾FOô .w€TU­Ôb.WϺS‘ÈLˆŽ©123å‰×' ‚k¹\^½š}vNÌdšOvikÚ½:h€¡m“üKÅ´œ OŸ>{Æ¥óæâ ç…ÄRwfb5•ªjšÞO3¦VjDµŠÊ˜q" >•h§¹»ßÍ3¦æÖw-öÇÝm­¯f›©P¹ßœîè±ÓÜmg›¦vA3?t<Å8íÆŽ${pe3 z6ì×Ó¨¸Û—×öàª"qUöûe•KÊjÐ>|„`^^©ž ûõôÍÙ°éã÷µºšJ¨Æè–âõ˪q²‚õüS1N?!Çãñþ7666B¡Ð9f×Zù¥…L=,/·ïÍès, 8ê»çßÝ»w/зekZk]É4 ¸8öGâÒÅ)ª ؃«å`ïBK³5À~Á I" @$ˆ$F9Ïn¼ýî{8p½ñÚ«h´áÅúèÑÏÉS wn} ‡.”½½½Ë—/ŸÑïD£}n¼ùi w7Î$\ÙÃ)HIÀ©$4­šòxÆýáÊq·šl/ÐÓú ޝF£ ºK¨€s†s ¿o 'fì»Ý 4Ÿú|>'šoíG£Õ”Ç4 6†®=al7‚ö.åv쨕zºI!ø˜h”¢Ý–¦ªíƳ•z¢ù–¦¡Ñ†I´7cêÉÅ\D¤zæ~­{v& b$W,•Jåò²Åp¸–N¨ŒIJqSž;¸|!S#JD¤B"]ᘀ ØçW’ç…ÄR¾¥iÕÔB3\^ Ú6¼ÈH‚s) A°ÏΉú–Ù».w€ôwõ{lÆåŒ©•ZÏrûìœÈ˜š[ßí| 0y`BµôB3¼ÙžÜ¶®jm8u‘Ùƒ«É@=ö›>Áì¼Ù¾K—s,Jœ—Ïp®ÊþŠ;i\n®*odÃc= Ýy>ŸïúõßME=÷æ²KìÁ•d€15±´ÞÒ44Úp4C ñx<÷¿±±± …ÎÄoüýî{ø1¸hn¿õwn}í,þ‚íóäÍ7ßÄ·eÀäIÀäÎÉ·eïííávÐhà ûࣿ>‘į½zùòeÜu@£ 'ìÍO[çgL‡6œ°§OŸbžLnؘĽ{÷PA0ÈãÇF¡P;ä Ì IDATC4‘nbÀp˜'‡‚HI" @$ˆ$I" @$ˆ$&‰$4­šòx<žTUÓz^êÿû RU­“AiöoxÖ,ø‘l5Ù^^L$1ç’R,‹ŠÄy!‘¶Þ½µ7ÌEfo8$Ž9a"‰“esLznã(…¦UÓÞ„Êcj›~È_vb‹V>êñù|&ÑF5åñ¤ò‡úË|>êóù<žh¾ÕŽ ´V>ÚÙcOÄгëî[ÕTgýTÕb Ò¿ßéôí·gȧ§\>ŸÏ»”Û9°£Þ8ƒ‘Äns‡ˆn— Œ·a­¢2F÷5vm¹\.•JÝQŠ9c›I‰sÎ¥äfì»f|©ï¨–^ÈÔň©H×ö ÉÔDÅ]./ë«1¦n‘\ÌEDªgî×Ú±ÂB¦N¥X,•JÝ5u‚àêßW+•U&)Å¢"1UŽæ[£ëºo¿z:‰‚É™ìwX=¥*c’RÜ”ç.7¯€c2ðWÅ766z–ܸqÃJg)ûU"âdyÙ5FDÓÝp&²söŒRÔ-¤ iÕJˆ¦NÇ4Q}§ÙÒœ6""â\JÒä\ ÏÛˆÓDõB¥s:»Ç’cmeÞ>ª;×´ÖöVó€ÛIDn‰ [Û­ùšíww{«NpØÆ8fšÖjîç3Ž©õcZvAè?”GâñãÇ—†¼ …Œ/÷ööF¦È¹”ÜtW¼‰B¡R9­I/÷Ûýe+¿´i0FŒ3"aŒêÍ'D;hApÅÖw2F6ìÏJJqÙ5<çOš=ÑM½ù„È>ö!èKgŒ­¦Mãž°÷G€£Òh4. _ÃJôÐÇysQT³jný¦+hŸ,gšÖZW2usáæB¢`i£)‡H¼~ "±>U@°WËÁjÊ#«¬H»†5¦û:0T":¦&)h_:‡bR“D€Ñž>}:Þ< Ap¹Ęš[ß%ÚŸÖÐÓéÚæåÈ ¯gã¼Â£¸ìžrˆD´ÓÜ5y)öÙ9q?oqÆ’çfaù¾*µv%ˆs³öq'…tÒ1”Ȥ¶õwõ‰=G¡RëY~50–±g\º–˹ÈL#öù|~Yå’Ò?BìóácŒ²ÞÒ4j¹ûMŸP²Ä’ÆÔ„7·#’þÐDlóò¢HõlØïñ¤z^V5Í\U$®çm¬‡ºBøýrÄE¹wƃ ØM÷¥Ê~½V'}±W“z6ì7ͳóf{§9ǢĹqù çªì¯¸“Æå×Àd„x<ÇûßØØØ…B€AîÞ½‹oË€É!’D€HI" Dp|.YYéíwßCM@ýð’ÅUïÜúê ŒÞü´uÉúÚø¾K0û¼ŒIÀE§iÕ”áïº/»¿í×ùõÁ¨þûÆ=뛥¶¿Uªªƒ:9ÚõÇMIœ]¥X,•J¥Ri39Ýý}c‹[s‘DzhÌÑîPO sEÿ ˆ$^(§;Po>k›cºÛ‘·òÑÎXE4ßÒ´jÚ›P™šð¦ò‡Ýÿ;E+õø|>OO¨ÑÊG='õ?ì¾Ôl讀ꌠŒ»3$èé_Ó<þèßQ_G†GÕT»øéš1}ótà ¹„*°bw=·³(/ ÂýÝns'à^M«¦’77í‚ µòK ÷kó±Øf’¼÷fÌ%.ÃÿD´»®4Û%— USÞt­¼ì""¢BBY\ÓѪv^Úv×—îWçcNª¥¤lõDŒÁ;¸‹Z:±³¸V Ú[ùèÂþ.LõîÈ%µô‚žÃN@0¢&ZùhαV*Ùõ"Aw»VMK “8' ²ß¯_I+$¯ícmåUHŽ9õŽ|y5h×;xÃ@Å€a€Öö9¦:!…Jçb=\™·ïG —û N9ÄB¥6:šV­áyÙæÃ†]˜êÝ‘¾¹ÛiµõÍÍÚÚƒ;±d`DIcçD@)Æ\‚ÐÊGï;lãnÕÓy§½ •1"â$¹‡mþ¤Y¯«a–ÈÂÊÆûüJ2íõú“”â²K85Õø¤YŸvÛŽ¬¤€HàŒ±ÍËŽ¥tÕë¿q`ñ¢|})AÉÍ’KдjÚ[ºú”C (+öeñZ]\Ëår¬•_ZHW7'Ì­Sñ¨Òé-)œ9¸» ¸ÜÃMÝæNÀÝÓ· ‚}^vä–,>»azñ-¶‡ñw›;ûËwš»½ÿ ‚}vnÇÊMŠñuwár ¹õ]"Ú]ÏúÊ;ªÆìŽé!·Qvš»íà©`Võtwùñ•0&p‚œ±µæ’×'3"â\JnΛtŸöàJ8å]Zÿãß{‰¨ ûU}9çRrÔÕ¿ ¸bÉŠ?ìÏñ™Èb ðRr3KV¼ iÇfÌ%¸ ÿ öàª;å1ä'feN‚ñŠ”,öCváŒ%+Þ_–q.%7×XOöÁÛ¤´×ë%qq-X¨ô×°¤$…öòþ’b|âìÅâñx<÷¿±±± …ôoÈ~ûÝ÷îÜú¾-ŒîÞ½‹»09«w7öööðÛâ`4ƯŠÑ¯½Š*€®çÿãG¸»“C$ˆ$‘ ’Dˆ$‘ ’Dˆ$‘ ’D€H‘ ’D€H‘ ’D€HI ’D€HI ’D€HI" D€HI" D€HI" @$€HI" @$€HI" 8O.Y_õíwßC}œ°Ë;_þQõpaí}afoúåS›½ýÐR$ñÆk¯^¾|ùέ¯áˆœ°ÿþæ›ÿý÷ ¨‡ ëúÿù‹ÿò÷¿o~Ú²:&±··‡Ã pò~òô)*႟§¹ ~úôé%$€3ág_yågÝnÔÃñ•Ê?|øá™È*" €3I¸Ý¶xõpAì•HÏn" xpwˆÎàcÞo¼öê™Î¿u_xôÃyÆLvV#’€3æ·ó7ÎJVÿþôLç,¥Ò_^œÂ^d¦g5" 8K>÷3 ùGaI" ,DpòÓ%ùGaIÀ½ÌŘ" @ç„Î…DpF;§K ùGaÆ…sÚ>{Æ'ûûég?þ“wõêÕÿðÁgÏÍÞýðw¯š¼;h¹•¿#É¿ž§ÁÈÌ&ÏÿòƒõÓþƒÅÚ;äŸñx]½þ“¿{Þ“1+Gç¸à‘ŸÕ“€3I<Ÿ°-Óþó§ÿ+cì»åâ¿øÅÞ™€šÆŸiÏžóÏaäòË¿žÎÿ×o}”ø%Aдí·~ùë_ÿ¥¿þŸþã«SÂM†äYOä}úªžæ¹?Xš¶ýÖ××y·¼\ûŒ´ã(¯öäÏ"ÿÛÿõCúê·*úÁúä?ý–RùÃÄ5ÚÏØ3á—~gûáï ÉÆ‘Ÿu'œ>Æ$à´GüýôYóþ»ÿmñ­¯ÿ+Îß÷ÏþîÙóÎò’³×¾ôÊå·þðq·m¼|¬¿#Ê¿Æ xÆ)ö­_cì¿þß¼Ý-ÚŸ½víK¯|Ñ=«|Ø.×MzVøé³îþò× Œ1ö¿óËÿ{wÕÔ•÷ üwÎøü7ÅÕ5NÂËXí­¢vž) BíÈ[•Aª:؇Ëôåi­Åªmx`î]:3ÐÐjaªõÚ§ÎíPÛAElKÓˆ€âÔ@°¡Ü?툭I€®uï<.i{¯Ëäì}ÿ8!òFAø~Öù#gsÎ>¿½Oôü²ÏNÎkò.Þ*¹+ü“¥lï+©šTMµÑÞ©Ó,KÕTwvU»ÚÛùÚ²U+RV­HI}­Ky8y3ùOϱܲ4<«Y–ªyêˆÅK/u½ÿf¿(æì}5‘q»ÄLµþm"ãÊ32V­Cr½>rä©U+RÕ:·ÿúèÓãË™ŸPåÂU+Rt]’[üÊÃMÅ»™DT&áà¡,¦ößÿôºÄ.&êkí´8ËM5¥Q\«3žªÈÿtø-j™¬ø¹[‰®eŒšÏvÙ™ÝÁM5ùûû–<§{q}¬­éöÜÅm‡”¼½£v-cŒåVu¼ú°D¾*¹+ô“¥lïN[Ïj–ˆ‰b³¶ãQyõÚ‘§ÿM/®ÕOêrEýËϱ¹ºQÞìäádìÒ¾Mi»ù«–.¢ ûw½fgʰoÙMŸ7c¹šÄ N¢ÛkQln—vÔåŠâÅý‡»í~˽†ê’_4éÏv+íVî'Tç2¾Üš9uïꈀy0vq vnþðÐå~*^uh´äò™NëãùsÉúM?-ˆ¾ole}zg»·8}Æ0c~†w7ÀuqbÁ-æß›÷ÛÇæryUbÑ¿\¹X/ë¶IL­^C¢øY·™}ùÖÎ3¢(JóUì¡''~‰ñщÙÝ÷)cÙåÛQ4ç³£Ù¼îâcƒhÕB"°2?•Ü…ÆNÙÉRö¡Ûª«ùÝfæ0Ÿ=#ЬLžÃ¸Ûf¾^+—¥Kæ3Öþ»ç›m’\Òó§×{ÒDU X‡¦y±ŠC»—ûÕj¹DDóçÞçó@Sú®F&‘Db<ðÅ!Ù>ûëÕY¯Vþä‘´ùŒ]ùÜ4(±¥ëKæ3Ö±;ý|JÍ£Œc\bÜWyPËíÇ//ŒH ¯?ž¾%7í‰ÇËO/,ÙûÉËqgUsÖ½½3“]ýsÑ–Ü´ßäì镘¼‹+fÏ We••<@?x.].ñZÉn씞,e‡x®ÊÍïØþÄnË|m÷:•çf¾^;Êܼ]ŸÔ¬¦‹<—¾%7mKnÚùç™ò_UמÕOì60–ýêójÉo¹×POzrWŽ(tëþrm!‰¢A·no¯äçÔ½«#‚ ÕjµZ­çZZZ ¯_¿Žÿ^f‚=‡ 7oŠ”hŽÛùLA䯔óÏÝߦ'¢ŸiµÑZíônìdáÜüÞíYÊÙùQÙ/"d¾‚Û»z¸¦æÛšåyO555˜'N=¾: âGc'5“`rIsxnêÔB&N=¾: âGc'•º¨±­ˆˆ8I}…LîÌÇÜ¿89fÒÅÕLI>æ"~4IÀ4º8Eø­wi&M0OI@¸ÁÝ 4™„®ýd3âCógRc™D*·Ÿg@üácøW¿mÓÏÆB$Âo\2 ¸pw 2|o4£fÒéF&“ziéìü¾³ýáw7 t“k÷¬XAaü(H¸o€ÈÍ$p î¾þgôÁÌõý÷ÔÒ¶Ñ]¹rÅg&QXXˆÓ~\¾|Ùg&qýúutøqóæM̸€Ð!“d€LIÀLÜ/Sqn®Ë(×SŽ®½4I”«jê©Ë(7ˆc©IvukY’à¶‹¯:=wŒôžõlcÙ¾:Á?Oúö“e’Ç$Ë®nmmm­ÎfL_^gæ<¸ë·.ô½#çæÚôôôôZù¯n«S„v,¹]mmmmmm§O—á2È$¦RtüÅ•;sT­™»>â‹¢¡<£î ö…ru4·j*IÏÌÌô’m˜kÓÓk¿`_È«MM%™™™éé%MCÎÌ€5•ŒÑ-cp;´ëOæÚÑíkÍ¥#ÎðjÍΆšJÒKš†8W›ÇÑ]IŒ×\*333c{ý€·Ý™4 IL¶aËå¤ý¼ÇhEÊI]&.+;}º­­Í5JÑCêÒv]6cò=‚eâ2åª| žº¢ý [«·&¾¼®g¬‘¢¡Ü˜êECU´ÖoM þG{œ¹BÑ~Ê‘ÇÜ!ÉóXCM%1»ºµµ:[4T”4 MØ8APmܧËfL_¾½iˆssm‘¥øôþ<• 5•”ë¶Ö·5tÑSWnÅìêÖöŠÕã˽÷À¤ó9O¢ÅãW¾×¬Y3qb"*² DÄrt§Ë’‚Èh\;.Üz¸Tí6JÑÐ'~³QOD âÕñ ˆú,C\MDòEŒeoŒ&Š_@Ô¯7šKÕjW±=þ𾪉.䜙:úËIUQj6Óë;LC½ì8Ö.g’TzxÛ@уÅYn=¼Oíª('>:ˆ3Çùe€[3®—¼öƒJZÂøgÛ Bù{îy„kÇñc ÊC˜kÓÓ=·ô—‹ 5•Œ‹§¤iÈ{´®ƒÖºÅ?úWs­³+êz”¹Ž÷zcÓÁð‰úme‚Ä5nØ2“Z&9TSE{»Ê9Pq´gcii»ŽF ’¯‰høDµ¥¸½-IàæÚŒºžÓeIDD¤/¯ÞvX®„›;GW£‡Ol/:jÞXª¦žºrªnoõH„¤Òñ‡è©+Øv¸-O5ÔTR4vUÞ>3žáõ¤Û—§’«*’£M&¨g¨©¤>þp[›JN)Ê)'ÕÙÃ^[ “ˆ`úЬ,ùÓs5UìÏSµWF5U”ªå yÙþ<•|W TxÿèχL3:¢7Ž~@ÏÑíÛ¨ËFWÇ*Œ‰OÐ{]àf£>§xc4Eo,VÂ{Û]ƒBR™ŽÊk›šª;VoVU•ª´CåÖ­Ö8ï©Ku9´0&Áœs†šJŽÆG»—ÛÅÛ5‡‘Qvª¿Ý-ýý†â¬ƒDl¬xPmܧ«ËÈÈÅɘéé}ž„zó¶ú¢ tíª§P Zú¤FOZ«™@ˆÞX¿½Î¬q"çC'¶—“®½-É9¹Òïæ1ñ 9ÕûÆ+ÀÏç‚Tvút©ß™ž·©çhÇêm9Œ=eII£ÑNJÅ^Z w7`愤ÔÅMaË@NªÛõLT+âë·Ÿ qÈ}Ðҟຶ Œ•X†Ý_ ‚J³z ›Ás")5G_b˜ˆ†OÔë=Úë3%2×–Sq^^™ŽÊkÍ\Ž6~Ÿ[*–ag"¥÷ÖÛ=u®ò©k5`L`Š©K[¶gdVˆäüá„^UÞ¾âÚŒí'Þ+ŽH_‘eËù¡AH*ճг±…[·åèË3H×^Zª3fÕÅ·—& IŠ×‚*ojmº"žÒ@æ!(o dëZ=’¡q‡P—êŒE™EƲuí^«k£ÆkïÇ¿_NòÆêR1c{Óá}y*ÁÕ{n¡ BRi;ÕeddP¶úœ"£gogWërôÎrÏVc|"’2r­V«Õj=ÿÐÒÒRXX(ÿBöžCU¯<‹_Ë¥ššÜÝ€Ðzwãúõëx¶8(ñTñ{ï½¥]? áî„™ÜLÂT•Xer­ÙŠ•«€LÂ[Cq¢Z½ý#ñ£íjubqƒˆbW®yè«olèRdˆ-¬ïíÙ·aÆ Kv|Ü[_Kr*A-ç|¥¦ªÄ*“©J­V«]ɇ«ÜÖPœ˜¨V«ÇŠÉŠº¸¡¡ CÓ+“ "SÕÁùÅ•ÅkZê]—yÿ©QÓ gÒzzzzzzz·^ÍKš^¨¤ªÞÞžwÐÎÚLU•TÕÛÓÓSE-M8KÓ.“ÐTÖÆRla}¥†L%òÞvm«IËk:cr•Ë£±ót–ؾùêÁyò@GáÖ<œ%€i—Ix5ѨD ¬Wÿ§`Æe“–JÀLÌ$(våºjõþ·¦\s'MgšòÒ4>k»ùak8ˆyÓ#“0ð5ŠØ•k¾á¶}ÞÛÍó&&ªÕêăó›+5~jÑT¾M/$ªÕêJZƒyakV0k*{5n»rÍWõ&Òh¼l[Xß[è»N·×½•Ddk(¾šV‰ù™D`©D¨LU‰/|$ŠDÄØ†·Ý“˜Æ™ÅÖ{"4ž¡Ø¸ãÓ'“¨|ãßÑY t®ëË@3‰ªWžE€Ò®†ðTq2 ¸;™ÄøŸ‹°5ýÐNE ¦*µZˆÇ~D”о»ak(ÎÝÛ'’H©?bKv4×ÆÆ®\óPË76ÒÄ^ë ¦ªh_o' ¢„6&[XßÛ³oÆ –ìø¸W~’çÄÏܰ5'ªÕêↆѡSUbU—ó×#>z3#“ "SÕÁùÅ•ÅkZê]—ÿ©„©ª’ªz{zzª¨Eù( 4•½oo`Þî­Ä˜À É$4•õ…±[X¯¸üûK%lß|õàáÓÖP|5­r\…A=)"2“Œ"•P4B$"Æ6¼Ý[ˆ®@&á=•(¬¯ô(€˜IT¾ñïè,P:×õe ™ÄÎg Ð_ $ýã*ž*¡C&È$™ “dÈ$™ “dÈ$™ “d€L™LµY耰õ½Ñø]g'úa†»gÅŠ§¦N‡LbÏ¡FœN€;i~Û§÷·é —†°IDATÑ3œ)3çê¥áðŒ­«·/ Lbç3÷Þ{oÕ+ÏâtÜI_ÿ0ô52‰/mù#O‡ë%x×CŽI\¿~çàû7oÊ/~ÞãÛ0¾7¿ïì”ßa{¾yó&æID€§¦Fkµè‡e˜èûH˜%ƒïn2 @&‘ó$€(¿æ½ó™‚ˆŽ?@ó{ûîü“¡½«‘I@„yîÉ'"%ÔwÞû0¢ãÜþïkÿéí[ Ó²±3œ×w52 ˆ$ÿô#ñ‡QfNc™ “@ü“ìG2 @&‘r%ž% þp#Š3¨±€L"<“À˜Døùîn2 À•ñ‡LÄÝ @&s%ž%"þpãsLb2 ›|]2»ƒ…¶Ü²_ûà¿&&&þñœ]òö×Î?$zù«¯ò@–I‰_@­0a0·sh‹Äx˜Ÿ¬[çþ`ïÝæ¢<_‰‰Å|#¹ÈÙ™ê38éïjŒI@DeRˆÿ—ñî÷ë.Š¢øñé.í#)9gwHÌ®«÷U~Çâ—`ìñ½]åÉ‚À¹éå/½”üÕKÇÿ\#øÙÅOÌr%Í´A®óöÅ8瓏é—N0W{·ŸŠ7'<²5ÿÍ>Ú°×(Ÿ,Ûñ­6¾[¾ŒÆsÉ;L_ì òƤ¿ëîpý“€pÏ$BXn9,Gý}Û/-b¬ùБoÒhy—N³lÕŠ”•ÿúî×ÿ­¾ËƒZ&)~Î8XréÞõ¢xñOï›\M;ò̲U+RR5ÕÎvÛÅmƒ[Ž®šå/éEQ?Ù±ü5yo•±ø“ƒ“¥lï+©šTMµÑÞ©Ó,KÕTwvU»ÚÛùÚ²U+RV­HI}­Ky8y3ùOϱܲ4<«Y–ªyêˆÅK/u½ÿf¿(æì}5‘q»ÄLµþm"ãÊ32V­Cr½>rä©U+RÕ:·ÿúèÓãË™ŸPåÂU+Rt]’[üÊÃMÅ»™DT&áà¡,¦ößÿôºÄ.&êkí´8ËM5¥Q\«3žªÈÿtø-j™¬ø¹[‰®eŒšÏvÙ™ÝÁM5ùûû–<§{q}¬­éöÜÅm‡”¼½£v-cŒåVu¼ú°D¾* |a,|O–²½8ml=«}X"N$ŠÍÚŽGåÕkGžþ7½¸Vg<©Ëõ/?ÄæêFy³“‡_|±Kû6¥íæ¯~Xºˆ.ìß}ôš)þe7}ÞLŒåj'8‰n¯E±¹]ÚuR—+Š÷î¶û-÷ªCJ~ñ¬©åL§§~GüÞpkæÔ½«‘IÀ4“¸å°4½÷÷g7'9Xô#¿Z"Šýg:­rùµb,!&šÙçÆÍ#"â’ïò»4&ሖ¼•ÜrtÓÑщqóˆhàšÅ!µÝ÷6ADÈy˜Ÿ,·>”ˆ[÷ûÒ$¹æ®Ó}Œ­KNdöÄ•YŒ]:mtõ’s³¹qóä×oåÏ‘rñkKgÊëŸÜ^3¶nËúŸÉ‡&ýÙnÅ¡ÝÊý„ê\Æ÷€[3§î]0OÆ.NÁîÂͺÜOÅ«–\>Ói}<.Y¿é'¢Ñ÷'K³û*¿;ó$Üp–,úù}³gD¢øé®¬OI©ÿªUb?!e[&Ú@ä ݶ™Lcãá|²ÜúÐcU®a¬»|u£—×¾âó$Òí¼öêAàCÚß¾uEI‰y‰s´™Sò®F&‘Ä!7¾Êù áð•âw;~­œ«/¾w©ý¼-/;šFï^sðZ¸+ñ»À¿ü[»(Òýñs9xLÌ"b—~]iØù°|I`äPîBm ÷ZI0s}͸ ““ÅÝÛë¥ùtIQây? å-±,i-µŸÒwšw<ôˆï“è¿Z_‡v–{ÕNƒÝ[_Ñâ'ß}ÊúôÎvoqúŒaÆü )în€ëâÄ‚[̾7ï·ÍåòªÄ¢¹r±(^:×m“˜Z½†Dñ³n3ûò­gDQþ”æ«<ØCONüÎÙŒÎìŽîƒ¿û”±ìòm(šóÙÑl^wñ±A´j! X™ŸJ_|I„ÏÉRö¡Ûª«ùÝfæ0Ÿ=#ЬLžÃ¸Ûf¾^+—¥Kæ3Öþ»ç›m’\Òó§×{ÒDU X‡¦y±ŠC»—ûÕj¹DDóçÞçó@Sú®F&‘Db<ðÅ!Ù>ûëÕY¯Vþä‘´ùŒ]ùÜ4(±¥ëKæ3Ö±;ý|JÍ£Œc\bÜWyPËíÇ//ŒH ¯?ž¾%7í‰ÇËO/,ÙûÉËqgUsÖ½½3“]ýsÑ–Ü´ßäì镘¼‹+fÏ We••<@?x.].ñZIòp?YÊñ\•›ß±;ý‰Ý–ùÚîu*ÏÍ|½w”¹y»>©YM?x.}KnÚ–Ü´ó)Î3忪®=«ŸØm`,ûÕçÕ’ßr¯¡2žôä®Q4èÖýåÚBEƒnÝÞ^É=Ω{WGA«ÕjµZÏ?´´´^¿~ÿ½Ì{5nÞ)Ñ6=¶ó™‚È?p?Ôê~¨«!¢ŸiµÑ£ÿWOׯN"ÎÍïmО¥œ•ý"Bæ+x¾«‡kj¾­q?ûᦦ¦ó$À)¢ÇW§Aü^ùž'ÁðŽõ›I8¿?+IÌ!๩S ™8Eôøê4ˆßG&1ƒ;©ÔEmEDÄÉ×7i™Lögú¿89¦g&ÁgNc™D6ŒI„!Ž1 @&s%Žð[ïÒ´œ'áë‹*˜'È$ ÜàîF8ÂÝ @&‘¢ýd3â7ó¯\¾Æ4I@sû";âÃÿ¸úm›~†4"~ãB‡1 €ð½Ñ8Œ^˜y'™LÒE¥³óûÎNô„!ÜÝ€ÐaL |ݳb…ë£›àŽ¾ I@~œšúãÔTôDj&ÑÐЀ_®\¹â3“(,,D€—/_ö™I\¿~~ܼyßÝ€Ð!“d€LI2 €‰à7. \ì9Ô¹Áï|¦@¹ÚØ©m)(˜& ¹Í†2 ˆHÏ=ùD$†ýÎ{N+“×¼a&\bgN„L¦¹ún¹ “@&€Là.d³t2 €P3 ŒI “@&€Lànd³I “•ÝÁ‚Úžsë±§7Ô]‰ˆ±%/ŸøŸ›c#u¦ç#ý­-}#qµtMÖâ(!2b;ߨeÆ‚Óä§ÄbÌ´…ôÂ)“XàË-‡¥á© o^Xºý˜éóÎîs]»¥ÿVmtH·UËÔÉ˪Œ)ંÞE¹LVqáÆì%åhÈtÞÆ9ç¶îcÇŽë¶qiùDœ&???_ǹ¥ë|Pñ‡ÐêÈí(ŒILr&ÌõÆ2ÐGD¨æ2»$©Ö¿£å’©fe©AEúdÇr^sN›Dçß\Yjœ²ßèÜ‘,pÞýæÊR=­¯ÙK¯¾üí2¡ûKÅ.Ë„;ÿzdäÍŽº‡ˆH¢?–âúp/µ«‘–$Ç Ùº™¬ñ8ͦ”X×0€…â—.½Ñ×7¶C®qÎã\Íá#[[.ŒÈ¯yœ&?fð¸IÙêTrÈ#®&/_Nÿ÷§Âÿù‡GGÆ$`æeøâ’59$ŠÍÚ•Ï»Æ\…Û;j×2ÆXnUÇ«Kä’_b³Þà<.6†(&6ŽóVÛÈè–œÇ-I¸G.'‹íîŽó ‚ÕtüøñS}7â—»Nl"š5›ˆnŒŒ(‚Öþ‘ ¾'j¶{‡Ä-OŽÁ?d!fv‰ýâÅsM'ÿúäƒL?ýï%ǬÉ.q6>-¸e=Z–¾"7ë•VQ-wÛÆ}—;ŸIÈÉD~þcK¢¸ï+«|DáÆÈHXžJÎã4ùÏœF¬¦ã&« È‘ Blòš¥Qœ #}§Žï¶yO&øÈÅSÇŽ—wd¾8$Â"1Õš7÷¤1F—¾¶JÜ!‘œÈµ;lͺ·¾¢ÅÅï¾žÆØhù¸m{FiáÏCŠV-$¢ë ¼¥Õr‰ˆæÏ½ñч4îµÇ.Á-“ñ ÞÖ}ê¢sbÐf„ÑT Êy'à;gž7[¬¶Açf³ãb£Æ>¦ßùN±{||¿'A³$Šß¸`º8Â]Á&㓎äåqœ{mµÛtTÜvd0#IŒ¾0žôdí[·zKnÚ» ì¿lÛûúÆ9œWe••<@?x.ý79{þS?¹+G ºu¹¶DÑ [··×y;ƒ˜³ªq»ôJ,¨H&c("6YC¦ÆÆÆÆÆã&+Z²&+!J!*A³t6ÝpMžˆZü˜&Ž[MÇ›¬…¼bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ »gþ IDATxÚíÝl#çy'ðgÞÛ94‡ÄŽS‡”ͺ&`·ÁmÈàÔ¥Óh)2 ›‹E¸ %Ù+úƒ‘Å3Õ6G†›+ Ü-M!vÉœd†½we„f±5(7.3HjÕd¹nÉ,Ð&ÆjíÒ+*NÒl€&È^k¿s I ÌpHýX®ôý@쾜yçwÞ™gž™!G8uê”Ýn'80Åbñ„Ýn…Bè €ÅЈ¸ˆ¸€ˆ €ˆ €ˆ ˆ¸w©ÊÿHR)1Î’'VÚ¡»üÙü©+Î/ˆ¬wœæÜÝw‚X!h¥rb*Ü1 ÷¯,M íVŠ;""hmjë«çÓ¾ÕŠŒÉëÛ1¯$ÕW³©jïO9î·£ššM”UcX)ît:•á¶1ËT¢$I£Û¹LL¯ît––/¦ª¸´p¼sܾÁ¶°¾¾ ™~¬ßrˆTfxõ̼/U¥l±´öÈ5ë™@8KŒu$µR)>>À®Q®ìÐ*É‹¥éÝÕ—¤új:‹‹ùÈqï ôÏ͹ڧå‹É*cÜ]_ö*¯!ËQf’TŠ;N§Óét:ñŽÄWûSÅdõ̼Ã1Ÿ©KRk®ŽéåIUÅK+Åùøø8gL,*S÷Í ññññöõm«¶¹DeÚ&h¶Pc^å)æªgæÛÖ¨çêt/×áˆcW¸ë#®$ÕWa‘1²˜Æz}ZÛ"ÎÇçÎZUk¨gŠÃŒ‰á©@¦.éù´½³IšÓ¸7,Õ3ÙdµU•Ñ ºfŸÏCDÙôj+@ÊgŸÏÜ~BPVËÄp`US©œpùR»(®ÀkÌ+I¥ÄÔlë 6«¦|.Ÿò‚vßÕ©­”Ë€}ޏŒ‰—Ë©àrEÄý>ì¶–ârùRUÆùø\¤g¨Û®UˆÈl2Pß$8ŸÏçóù¨›3VM^,ëùTÔf“‹JÚ4îOçóù\ÔMD”-jÝH¶žõsªllî4"\:K|ÜßãäÁ2—Îåòù|.íçœ*µmeGED>îoLн\•yˉÆÓ[Ñ\®µîúW‡11•ªÊ³ïùâ:ŒÆUe>î_),yÃ<µ+I¥b¶- ¶žç\ÚŸ*“¹ˆÈ,s64«rû¦ DDV»›s¢­ÚŽFë “–V€—#œer¢ãäAl ­ 擹»”WÔËí3ïݻÈÖ`¬5¯žÕáãþw¤‚Ñd&V­&£«Z@’wj[ƒ|ʹ;V8[ ̦ªbxŠ´Ï8Ÿ[ ›ÝC¢XMEªÄ˜ÅÖ&סåéŽæl '7ýæís¦ÒsuFøûVw±»à¡ù:p÷·o¥zfÞ/“Õî¡î·ä±ÛAxjŸ*sQïòzÔÍÃ*ßñí®j öË¡½q ·-¼5®{7+õß2ט·»µ­ßåØãêÀÑÌq‰H0z—b5WDl»*§hän„´l²*FœYç[õO•l ëQrDD10­,MzÆÎ¶ªô]7LLZ’Õ*u…yÙ˜ÉB¬ZMù\)">>ná¼ÊÄð=›?Õ¯oTç‚=Zëñx²Ùl¿Õ±b·8ž9. ¶…\.ío{Ô¶í£w©°ûLçî˜â9,íO{]·œO÷øQGUz/½Ëëù|~}ÁÖóÓéH3 ÷¯,-Eæ,úkÖ˜W0z—VæZ_üåîh!hßûêÀ±, …B!tÄÑ#IõÕ@”"»§òM_îŽöŒýppO Ž®íZ¥"ú\)Å% í߀ƒƒŸ:²Ál¿h¬}ErÜ#tð{QÈqqqg•×ÖÖÐ#ûîúõëßš™™A¿ì¯jµÚãû¸·nݺ³ÍzîÅ—°mà(¹üêwFô0Îþ÷±yàÈxægu<9pqqŽpÄ•¤RÜሗ¤ö’xI’·m›çOžßì*y•6ÏŸ»²Þž…Ýùª2ǽyÁwR3{özY»|³Ùò¶ÅÛ›|Í4½™ ož?y~³Y¾›÷˜rwé¾ 4›´['2l€Ã‰¸žhÔͪ©ÙD¹-¿l ëëù|>—ösž 'Zñ’11\´ËåÕ”o*J‘•9 U’ÑFØ.'f“‹?ê·P6Ü^í¡ºùæëÞÓ½îéÞñö©×?ÿJ¹\~åó¯?ÕŒA= wcVêáW®¥¹ênÄ;wí\._{žR‰e§O7Cîæ%:}º­ÒstþÚµr¹\þë?¢/¥›ógž’Ëw {O)—–Ëåó´–éÓ¤F×®›Àþp9.Yƒiÿ8#ʺ» &s{çîXÐ*—sîŽ-Mäi*µm"I*³Dd6YMf"Úªíua}}}}AóÂu&Ðv[6~MU|¦×GoÝøîw_þ´õyùì„?Mj!7uùæC7èô9¢K¹óS/3¦9»Ú”oÝø.=4d“àà#® §—bµ©p2š¶ÙN$IõÕh²B–¹´¯6ΰ 1“…xÅɧ±ˆ&N{Ÿº´ynbO1Ù»T>÷àß§|Ô•æ>øð¯z—ÒýCþ„ïÌú¹”àO)Óà›|­Çº´O;ôO©·I°/ú|WlÁ•9K¥Ril×*Dd6[Œ '&-Œ‰éÕF®|§žœR¹™§Ú¾žÓ*N]¸ID7/¤š·z{6<0“¾æ¿ñ©ÎšxìÌë—ô<‰ôÀcfz¤ëŽò[7¾û«+À7ß|]kþžSî^5¾y!•´Ip—ˆ£w)æÙ À1cbx*½e!ÆÄðTBgÈ4z—£n^MùZ+X–{îÚ <ÿéÎïãNœ{á‘/}Êjµ~êK´žeîYØV•ÿƧNú¾öV[$>}餎/û>0“îUc³m'ÏÑoæ©“ç_U[®)7‰&ν@O´Z­çèŒwà&À>B¡P(’ÿ³¶¶6333 ï› ÊÍ ¾ôC¸– pÈžyæ™è…c@ñ,ü…kx2À€ˆ{´~¥ qÛݺu 鹿#cDßHÿÇ¿ûÄ=÷܃[¹pd<ó³úèæ¸Ø<pdܾ}ïÇ8 ˆ¸ˆ¸ˆ¸ ßqù>î=÷܃ wÊ{Þó万à0¨^U–¤Rb*,6~Œw|neÉkÐ_û™ãJõL`*œ%O4—Ëçó…B„¢‰Q{¿Þ¨½a`àˆ[¾˜¬2æ‰m‚@D‚`ô./Èÿ&¢RÜát:N§#^ê ~¥¸üÑ|¦.Õ3ó‡Ã1Ÿ©K:§!"IªgæÊwè¶fÌdæN§­5ssN“3ÀÈ8¡–,.L‰©pÊçJ‘;š["2z—£5G$≸;ºì5îoƒõ§|ÎÉOEYÕÃótdnc6™ò¹’ÜýlþÔç_ &Ë\dÚ(”±`D¡P( ÉÿY[[›™™9’oƒÇï*ÀôÌ3ÏàW".Àaè¼{áÂt ÀþúÞ÷¾×qgffÐ)û®Z­¶EÜ#ùÌÀwûömÜÇ8 ˆ¸ˆ¸ˆ¸€ˆ €ˆ €ˆ ˆ¸Ç#âJR)îp8N§Ó9Ä{g%¼°qûÇËz&0ÎZæÒ¹\.—ž³dÃS»¯¬×bÁ¶°¾¾¾¾`Û¿—صˆ[¾˜¬2æñMAŒÓ>cÕäŲ2²f2óN§Óá˜ÏÔ%I*%¦Â"cŒ‰á©DI’ºsÜR¼™1ÇKAZYU+äÏï!ø "®$•ŠYâÜm·6‹¬v7ç”-¶"câErQ·‰Á,ÄÜœsÝym=3™;šËEÝLŒÌgê»Í’«Jû-TiõÄl²Bžh.—Ïç‘(ÀÝåDwÑÚÚZGÉ™3gôÔŹÛ7m ²»y6›-–‚V«V¯onT8÷Ø­Ô˜ec³>=mh«Êd&ª(ªbL L+KÓÆf¸ín-À¨¹~ýú‰žt¼¶ï`Þ)´]«´TjÛD•©Á\™ÛšMV«)Ÿ+åŽælá ƒp7è|[ŸF”›ÝC¢(ËA›ˆˆÊE‘1rÛm‚Ð㎪Å4Ögéc& Qe€Y£wyÝ[Š;""ˆöBÐ&xà Œ¾ÁÞÖg=;7Îy6½Z—$Iª¯¦³œÏU^9Þªí4#±Ùd„FX•Ë;sVãĤ…1±XnÌb™œ0ê¸5k ÆÜœëˆè#ä„þI£w©`JL…}®qîé~j#:•ª2Îݱ U«Ó‘¹ÙdÊçJr÷³ùSʉÞåh͉¸D"îŽ.{Ko=ùLDœ,s‘i#žœ€»‡ …B¡²hmmmfff «µr8Ì’§ç3ÉÇÜââ"~åà0œØ—Zä“Z@w¨@Ž €ˆ €ˆ ˆ¸ˆ¸ˆ¸€ˆ €ˆ ˆ¸ˆ¸Gß¿òøÜ‹/é™ì÷ t+Àð—ˆþóïÍjOð?þ|} Ðm°«Ê¿øžÚ=ç’¤RÜáp:N§Óá˜ÏÔ¥V¡Ã/IÒˆô…Z“îlSõ,ýZ¸—EH¥xÇÖ@Äíã½ïùí¿GÛz&0Î’'šËåóùB!BÑÄèDY=ä7#­¯/Œì«•-ܯèÛQÏÐ I¥DÑžÏçsi¿…*Éèj]BÐDÜ~~zûí¿îYÊ“UÆ<±Æ›êÁè]îqÔ–¤zfÞát:[‡xefìt:ã¥ö̸ïTJñV2Ýøt·$^ê=e{¹23sÌgê’Ô{º›*ŸXÌ;:=Ä ª­ÕVjib«…WùÕÄTXdŒ11<•PkpG7^åW;Z"I¥Žzºyw¶¦Édæ[MÛ‚ˆÈ`2Q¥¶ÝqûúÙíw´ÿº#A1Kœ»íÖ>5—³ÉŠÅõ[(N”[I•œsž ïfÆŒ‰á¢½;ߪgæÃY‹?Ëçóò§õÌ|Ddîh.u312Ÿ©·¦ìYÞ–š§M+KÓÆ®“ƒî¦JR)1›¬4óøž‰ þì^ y•7(ÒH/–5’Ý`!ææœsw¬Ð8Ëé^tG7~Œ}¬£%e²v×ÓÑÕj¨ÚÔrQdÌ2wvd/ŒRÄýïhÿ ×90™MV“™ˆ¶jmåÜHsw,híN"77*Df“¡­¤ï­v7ç•ͺ$©•·ÇÇš¯W¸Õh*cb8Ðû’©þì^‹Ö*û¦ )³EýWŒ5Ý£»ºZ¥N­ìÙTI*%ÂY>îL°×Àñ4سÊÿü?ÀàÏĈK$Æä F9ÑœMV#ƨÿ’·k•~%•Ú6‘Aµ\¶•d+žØ‚z*ÖÙTÁ\™ÛšMV«)Ÿ+åŽæl°+ؽûß·ÝAo¯]­R­â&œ%Ë\¤ÇI rÜþå®ý×1½ ØìbL,–µ+3Yˆs·òª¬$ÕW£É Yü騛ë‰ôc&K¿‹iL«¼arÒÃĈÊýÝM%"Áè]^_º9)/€¾‚Ýk±G½Ü‘³îµ«Û;P5ÏF~ ˆ¸z#î»\û¯{ëÙ¹qγá@ëyŸR¼óÁ"A0NLZÓ«;]‰”Þô\ ÑVm§³Úb¹yqrÂ(jå͚̦é`.í·dÃÝAW¥©Í• ÆÜœw‡ý+ؽÃ…ØV Ú Öìê¶zz®ŽJvO?ê{Œ\Äýçw¸ö_£­Ñ»Tˆy¨’ò¹äG[‹öOâ½ËQ7¯¦|­GjÁŒyÃSé- )¾Ucô.Ç<É•ÈÕŠ—+"rwtÙkT.®»¼³ÙÙp÷³ÁÝMm=uìrEÔ®ê_Áîµh ‚q:2g¡JÊçRv‚rÑݱ»%e2tÔÓ½:Ø‘ãŽÚw¯Ÿ …B¡²hmmmffæÖ­[“>÷âKg<ŸÖ®n-û×ø•G€‹‹‹ƒ=9µ–ýkôÀˆ¸H^††·õ â â".Àh9.€÷ÓbñŸ®\A? áßœ:õ^»ý€ˆ  Ë?]¹òýÅEôÀ0B!DÜÑ«ÊÈqÞ‹ëcúü´Xü)îÅ â qívCû/’@O;Dˆ¸#W•qqàøÁ³Ê{õÜ‹/¡^‰¡ Ø)q¡ÍÇt‚šoç³ðŸ>;ÄŒö¿ÿ½‡¡‹;".túØ/ÿktB·«ÿðs"ú……›º€qáàáà€qáP.'tv @ÄœÎ`§D\ÀÁ;ÃluI*ŧÓét:ŽùL]º‡#^’$=å}["‹—$=Kh)w=kª6ÍAôÌ/œ`Cü =„ök(Žì6=èÊ»—¥½Ë÷lÛ=Jô]£Ú­îøNG-Ç•ê™Àl²BžX.hIª¯¥¥ MØŸÛ‚`[X__dÎݱBк³˜Mfà {¡c†Xʈ‡ØÄT8KžX!håÚ©Ô¦i/o«vèæýË;{šÆöt›vk5wyIª¯Â"cÄGú(1j°S ÇÕ¥|1YeÌkì<‚`ô./´v¤R¼yV/)çR+ßÝEKqÇ|¦Þuò(Iõ̼Ãétö?4˜Ìº—Ø}ŠÚšþôéÿŸw´ÎÊå†mó«:Oiw—Ûœ¸»%»K/Ååæ3u©ž™w(–Ûœ&“™Wf i}¼$ɇf‘1ÆÄðTBí¼¶è®G#{¸Ê¯*«½Ê·3]ÝR×w‚ÿ/ïò!þ†Ì?ïÒ®ª:‡œžÊµgT.Qm{ ºM5ÆUÇâö˜iìò’T_ D)ss~w%zíAÚc£5ýT ½¥Z§Ö˜éÙªCØ)ஸ’T*f‰s·ÝÚãÓzf>"2w4—‹º™™ÏÔµËÛΈӦ•¥ic×)p91›¬XüQ¿…²áDYóÀP#Ý&}—ØÝòpÖâOçòùü¥Kÿõ줅±jm›ˆh§¶e™œ0ê;7WÖ³¾¾ ÝÆÄpÑžKûÇ9¯¦|SQЬÌY¨’Œ®¶"câErQ7cÕäÅrëì>ŸÏË3fÉ2Yƒ…˜›s9×ï™Ft×£'PVû1661l·(?õï5þöxp®Ku¹¾•k̸A‘\Úo¡Jòb¹£c[ùë@ÛT{\)·÷t\c—/'fk¾¥iÃÝs”赕:ÆF{וa‘1w4WˆLª{4ÇŒ|(¸S;ÜÝ9®úžYßܨ4v3«ÝÍyec³.IjåÝ»m÷Ž$ïºDf“Õd&¢­ZϤŠ11âr¹""÷¯­:–Ø£åDfSóÀa˜˜ç<[,Ñv&' ò^ÚsÏѨG»%œ»cA«œšsîŽ-Mä4½"µÆ4¾iƒKì;½ '&-T©mïln˜íº÷èZîÀ-Ñd1Éw뢃 YüéhÇͳê°ÝÒã–ÕêÚ·”¬®}ëÎܲêÑà ¹½Ì8Ä6Ý×q5Ô.ߺ6›Ïçs¹hÇEòQ>Jìô›~tw ©«ÊÖ³sãœgÃÖ“¥x¼$Iòḱ›•‹"cò}>µòf}fÓt0—ö[²áîÝ©5ozugÐÀ ¾D•@B[µöt޲ŋ5³ÝJú¾]Ð]Ï -ée«¶Ó¼Em6Aå¤[>`µ­B¿zôŸCìVÛÑ-:½ó®Ôý÷Wßø[ùÓ¿úÆßöœàÀƼVW 7䟱£cÛ¦«½?9¥¶ËßµG ½ikÇ ‡|CwÏ›~4w Õˆ+½K…˜‡*)ŸK~دho\Ñ5z—£n.F\®ˆÈÝÑeoã°ZygÙp÷ã£ò¼Õ”O烈:—Ø=}ÌÓX£ÆR䨒¥A"KzmI·è”+"¶n ‚-ó0&†§Ò[’Ÿe-“a:2g¡JÊçR륎ztF‘Îj‡ê–wÞå=ÿ¾öÊ¥¯½rIíÓƒôÚ]1ÜhÆŽŽ-“uÐmº÷qµ/»üÝx”è¹iÌ"Ÿ=ˆWÑSˉ‡3£¶SÀáB¡P(R­­­ÍÌÌܺuë8÷Kã …žØú‚M{Êç^|éãNϾ¿€e¿¾ {§ºEvõ~þí|ö³3g‡XÖ_^¸(¿ tgqñû‹‹Dô¡PÈÐ>V@—ÞA4távоök¯}´¸¸ˆ_yìyh®¯F“UÆ<¥rèïâÜ;àw•{'þ‚Ñ»¼î½Ãm¹_Õº[ÞáÒh´ÿHýÐÜÕFd§D\8r<ñ€qáPNçq ; âÂÁ{§óØ)w¿\ý‡Ÿ£p:¡ Ø)÷`};ŸE'hÈ‹¯ 0t; âî•ίÇŒšèùt8€ˆ ‡áÇ?þ1:á.rï½÷¢îj ]€ˆ €ˆ ˆ¸ GÇëüºßî'—ȯR¾·Gªgæ[åí/ÑS›e/ ë[®öؘ}©Ž'<9ê‘F~[yb¹ M$©¾H”–‚V*'¢)Œ‚ Õ3Ù°ckneiºùß³ì×ûšðûØ€Ž òÅd•1O¬/Áè]^° ‚ Ø–½—Æ&&-D•Ú¶æ,r…¥xï´X­|7ö—âŽùL½+Å”¤zfÞ¡óÅ´ÊäÛétÆKmIp&3ß™Ç7§Ÿ ¤·TëìlÀn Kq¤Â€ˆ :\©TÌçî~¯gÜ®U,s+rF«5K=3™;šËEÝLŒÌgêÚåm©vÚ$çÐç‰ÙdÅâú-” 'Êzòã|>ŸKûÇ9φwßEϘ¸A‘\Úo¡Jòb¹YyXdÌÍ"“ª'%* `L íëë x3´àª2cbÄ%¶þC:~‚P’J‰©°ÈqOtÝ(ô›¾¾¹Qá\~½²ÝͳÙÍúô´vTÊ•A­æ+»Ã­à‰Ì&«ÉLTÙªÕ%«AÏLf¢Š¢€s·oÚ@d2U²ÅRÐj¥Úq>në1}ßpîŽñ‚m@Ä€vœ»c…F’š˜ ëùíÇÖýT©wE"Ž-ÿÊ’2LöL…Û *µm"ƒj¹l“ M|IDAT+ÈV<±õL±\SΨ¶Fòmæ*c:N,䆙M}ç+í è1TРSíbL,j_¬µÚÝœËÁFs–1“¥½ÀbÓ*o˜œô01¢rwÌd!ÎÝÑ\.ŸÏ÷½„+IõÕh²B:êÞŸw Ö@ÄP ¦gçÆ9φ­‡‰Jñæ7dZ!°\k…IµYÁ81iiãrQdÌ29aµòf̦é`.í·dÃÝA·5ozuGß éM[;N8亽¦´€ˆ Ð3ê½K…˜‡*)ŸK~¾·hÊÏ*íE¹Äù¸¿õX“Ú,Ddô.GÝ\Œ¸\‘»£Ë^£¼µòÎfdÃÝßî•ç­¦|zW[0æaL O¥·,ĘžJhÌ"Ÿ=ˆWÑSˉj÷* …B!eÑÚÚÚÌÌÌ­[·Ð;0 v¿¿¸HD … ícöâÞ{ïÅ› Žê&Ã^3‚‘ãD\€ÃÐûÛA.\@×Àˆxïõë¿HDD[ׯÿÝÚ:޳5}»öštýúõwff]£ãjõL†ˆ}ôÑ_ÁàÜ?ŸùÌg¾qõúáî¢óøŒ½fU«ÕÏLÁHùùíÛ­`pÂ1§sÀ^3‚nß¾û¸‡à0àw•Ž5Iú^.òå×è±Ç£³¿"ÿmMP‘ßXÀú? ô>Amve¡Ú,Ã5¬o¹þ5Úc/=D¯í½B@Äh4?*|íù‹oÓcÿw9z½}í++o|®Œß¾ö•/WÚ_  =ËÞ Â£Ÿ|öÏ?‰mˆ¸p”¼ùí‹?dìÃO6⥠Üÿѹ'›ißÛ×¾ò¿è·ž¶<ÿå×ôÍBDo¬þÞ׿Ȉ4ð‡Óö-ß äÕ¯Æ×¿ó9ÇûÚSLIzûÚW¾xy›q~ªoÒ©L¾‰Èòdê“ã»Iðoü‡íËß|S™”·¦çcݯZggvâߦ—ÿ‚ C îã€j|z½DœŸzä‘^Áøå/þÈ>ùfùIñÙ¯‡YžL=ýä)ö¥¿,¾­]Þ–7¯çsŽ÷w…®7_þâ·Þzø±'Ÿ¸Ÿ.¿üòkzòãàù?{zá‰rþÚ_¬¼±ûFú+ÿ—~çé…'î§ßúökÍÊ¿\aÌòdjá·lª'%* `ìÊ˯üÃgŸD¸ä¸@Êððõ/^iý§ïéR|öÕ_úïŸôÿn¿$½½õ÷78ì‘Gˆè¤…_~íï¿û“S¿ô>úJyËk¹çë¿}7ÒïõÝûȇî#zûûßÿ‰ôá÷éY£|è>"e`çüÔ¯Ÿú%¢ÝGôvéÚø!úÁ¿Oœ?tßzLß·œŸzüñch".´éº"Ú'÷ý?߸ñCö'‰o6â£+/GèñèìCZóýðGoµ¼U¿Eô>ÕrÙö«_¹ü¶íéOj½‘þÊ׿x…SΨ¶Fòmæêz#½Ü°±{? ï|¥½ˆ¸ — <úˆ*ß¹òú볿2ÞVÞzv©ëIàÞ³Ñï{H\4Þ£UÞðoí±~séO©çýÝÞ÷ ñ·Nµ?)­•g_û«‹oÓÿ±ð›?z¾Ï‰…>ƒ5Ž9ÜÇU}üì9í/bßùQ#Œ¼±úÕ74CŠÚ,‚p¿ù×fìÊ믽~­ÂØý¿ö«ïµòf}c÷žš}zá‰ûK_þÓÕïu4æ}õÊô­Þ´µuÂ!7L¾¡ÛkšAÈqzFû¦>ýP.òåËqÿe"’ŸïÕ|Hc–÷Û¿ðð{_ÿª¿BÄ?ø¬½ñü¯ZywZzøãèQ~Ô˜÷›’øfãJòCšAÔõÛU¾zååÈöýÛ¾òr„>}þßi=”.V¾ê§'Ÿ¶”zçÄ5ŽûÕýFz€‘‚wk{ï½we­Œ~¸‹Ìž±âôw/¼‘à â âzŸœ’¤Rb*œ%O¬´ BÇ÷·Mrå¢âÉ@ÎÝ}$•⮈(OülþÔçöØ<íuT6’óñ¹•%¯QدEh÷´Ìž±¢F.â¾V”•ÃOxjK#ªIR)ÎrEˆúØúúµMªg³É yb9¹…õÕ@¢´´oÑQl Ù~"Òù ŒVÄ•#Pµ‘ðµ"e}50›ª²ŽØ™%O,Fá0éLàÁŒyĈ˜¼Xö.؈¨£f+•åt“‘q‰9®üi–"2w4¤„+™7¥—½Fò¶³–´ieiÚ(tþVmw;ÕúüˆD®\ùé•+ØiàèDܵµµŽ’3gÎô­ˆ11hŒVX"2›¬&3Qe«V—¬¢FBþî‘FÍ8wû¦ D&3Q%[,­V*÷ªg§¶Eœ›Æˆ &3Qe°¶Õ77*œ{ìV"²»y6»±YŸž6ÐŽJ¹2ªÖ|… ±× cµõíèóžÛîxïõ뿈=`([ׯÿÝQ<,Ü®_¿Þ;Ç™™Qþ÷Ö­[µ‚-¸2·5›¬VS>WÊÍ-Ø„VޏDbŒ*µm"Cwr¬xBªÿ¥Q‹iLà5jÖ¯«žíZ…ˆÌ¦!k”gWh«¶»¼±S¤ÙŠ'¶ õ[ímí4ªôydž;n ?yôQì®Cxÿ'>qÏ'>~ÕjUõª²v”í ºFïòºW¾O™ 'ì… •ÆLâ•¶ Úq±t€çƒÊE‘12›Œ‚ IýkÖgÈzÁf÷(ŠÅrÐfëQg[^Ü8KP+o˜œôTSõ¼¿Û£=ûÜ&mµ»ÆG>òþ|»+Àç¬Gò°pº}û¶ÞïãÊa†11½º³=ve °cnÎåX"ƉIËîô{Ðx¹y-z¿jîYOk5‹åÆ ÝžóZÏÎsž 2õFˆ.Åã%IjÕY,7ºÈ29aµòf}fÓt0—ö[²aG¼¤§=ûFÙONÙÖÓ¦y_ÊçL)¸mûf*Yæ"ÛŠFïr´æˆ¤|Î5*@ã:*qËœònåkné®Ç&Ö³sãÙ¤qQ4æÎ†³*9ýRÁ”˜ §|®¹£¹åZG\"wG[G©•w×éÈZ>÷Õ'µÛÙz<»£Ï`dõx“ÁÚÚÚÌÌ .Dì¼Éà â â â".".".„>¿€ñÜ‹/¡öèÕk¯õÿÍ©óŸÿ}ô íÜ—þ'†`†Ð3?«ëú•Güþì†`Á1B¼Éö·A’Jq‡#^’ÚK⥡^Çx Õ3óó­—JõHf |œMGÛøÙ×¥`¤!âŽËV: {!ƉIÚØÜ}µâÎjzkî¬ /w-žh.—Ïçóù|!fNÎö=è ‚ma}ãwt˜}S:QîqzXÏÌ7OBç3õÝÆR\.Œ—¤Ö‰j+Q–¤zfÞát:ÍSKœf†‰IÚØ¬7¶x}sƒ&' j©g ÒþïÎQGü¤Í¶Pˆ™“ËpçaDûà£vÈ’¤Æ?štŒC@Ä=̃åtÄ”V^[–Gj"J‘B!ŸÏçÒ~J^lø²á0Es¹\Ú¿•ŽÇE{¡Kû·ÂDyg5Zóòù|!FáD§™Ç+äÊYîÎnÀUHZºG}V»'[”‡G9Þš[Éçó+s[Š uðÑ1Ò²á(E ýãq(æú(½ZW AA°-,{¯|7˜Ì»ÓZæV‚6A ƒÉ\¹ñˑ濛 îæ™Æ:÷8ú9Šâ²påÁ£>Tas’T*f=¾iƒ|hR ­ƒŽ‘æ‰-M³Àá8.è:\Ú‚¾b`ugiº=Í ‹Œ'·½Ql6Z“(ÿ-Û®U*¢Ï•"jŸ ŽG–ݬOOln˜}K†~IFѱ´SÛ²˜ÎjM¡}ðb¤"î º¶_q~uÇ×Ê3VaŠò6A’J‰©¢¾jÆLOt)ˆkÈÇ7ä–iÃl_n€¡Fѱ ¸›³Ï(Ã]ÑöW•{³žÜˆ¦·vó KãÊÞNmKo®lœ˜Ü*â¾Û1½Rbœ˜¤T$e¶[ÛVí´UÛi.³EÇ•TŠÏ&iˆÁf÷dÓ«;D´³šÎzìúν†9drÜ;wÄ4z#“³ù¨g ÆŠ.Ÿ+EÄÇýsžlxŠžÍŸê[‰Ñ»l;œFDœ»c… •ʉ©¢½€”åXd¹ãɶ€«=Á,PbjjŠ,s+1ÏlQmaðEÙˆK”ÿŹ;VXjmek0Vœšu¦çîXÁªï„oÈCxd …B¡PHY´¶¶633#ÿ Ös/¾tþó¿ßWƒ¡a†`Ñââ"®*†þW•oݺ…wöÁ^`†`éz[ýñï> {!BṗлÿxW•".".". â â â".". â â â".ÀÝâD±Xì(º~ýzµZ½}û6½zíµwÿñº `/ŠÅâÿ©q`DO kIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.8/08_resp_time_graph_settings.png0000644000175000017500000010675712032647172030415 0ustar ebourgebourg‰PNG  IHDRÝZ½n³bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ ™( IDATxÚìÝotS×/üßÙCïš®{C«iËFåâ6Ž ™¦® )Èv¨êÐĆ0´õã› Mc'v±":4S+2!µ×$3㺌B…ø/I„HÃÌ]-¨&1Ù}îó‚…sgÍK{?/Ž$ë¿%ã8ßÏÒ i뜽÷Ù’­ïÙÞ:–6lØ——G0Oìvû’¼¼¼ÚÚZŒÀ/¾Ù‰ Ÿ½»wÄ.YÈ=®Û÷$^6XL®]»¶lÙ²Ør|ï`î$Z‚\0ÿËæ_ÂõåB8ó dî­ÑHa%ö¼Þj$Íau¹{ÞaóÎWï;Þ¶+k!iD‡ƒÝ~ôйýZrÔåöo9·_;[ƒ#·r“Îlàær¹Ìjhœó «¤ÉLŠŽºÜýt2×î?wnüŒ«ÝnæïhGÙ¶Wï9tÎ… pë›b c6CU—WˆðB!œ :]APƒS„ uº§³A.¯´x…×R©Óét•¯îëµTê tº§“{E6‘8ôn)ùÝ¥‘Édš«V«ssë¡ ujµ:¬ÐQ—[ç–uŒRئ¹Q»;êrë£e¹¹jµzrÛè:4=5G]¼^Õ9&;VÝM8Ú^¥}ÇãÍlOE`ßà…T’a™Ü>ªæ+—™Lz6ÔZÚè /•$MM__OOOw[yçVCc(U3f3Øóäò¡Ö²|Û+Tän1½«±´Å­*7•«Èjˆ¬6£­÷•i÷÷_*?çr¹Î¢=ìê¨ÛCM.—Ëå:79QmÙÓ¿Å%–_ÚL¹Žº=÷w¹\Ç÷]Ü3}-{öSݹs®cÏÓ«mŽuÆk:]–=rµÇž¿ØúÓŸ–õo9wÎuìùPW¦jÂÑo¹ëƬ„•狀sçÎÉ‹gä#r¹Â*á°Ä˜ç\N¤®n+Ïa6£<)-C™YÀ¹Þ\­–Ë9×››Š3ämÜž1"!œv+e+ÕÊl"ö\%uM____MÒ¥2–*uÀ~ª ®aýø­\NDDÚ-%–~Ñò•÷î…)9Šè“[:ú-%廲ˆ(kWyÉäN%‡ä²VÜ(‰­3nÓéº?0Ùµâžß}’]¼ŸF÷¬H¸š'xDDÚý¡û“õ'–¸#³nêÿ+”Ql,(m1T)ÛËB…Âk©*mbŒ#žæ©³ mĘÖSïX_>ÚQÖ6EG.ýîwï<¢~M> G·eíj;T—›«fìÑÉ5é7)¶Î¸M§+c6C~àœA®-Ð7]ÃY~ÁnÕ\.„Ón%Îõyê8Ïz-•FÓ›º»Mzf3VZ¼“52›Áž×ÝVžÃùPkY¾‰Œí*r·˜º¼Ád<å6®ÆÒ·ªÜT®"«¡Ñ^ù»ÛÊUän9ì’$Mu¯YÏ9çzsoµF’„p6–¶¸ƒsü}}“'·^.OB¯cÀˆìê<=çîG(ss®7W«)C™-ßo*ÎÈPf‘Û3¬!ù6ò)Q¶R­Ì&¢aOxåeÅòŽdµ'šgÌf¨ D|IÒÔôõ! ÀbËåDcwdAXæž±ž1›±Ðhc,­Ê%ISÝ^‘Ã9j-+,lpbí Üʹ\’4yEĘÍîŠ}2S©Š,P)3g²W™Jq®ŸÞZIQÒÜ×gÒs"²±¬ná\NDê9œ[ U¡¯c:œBH’B»Yˆì.»1Õf­bæV‰„êo뺚bˆ'öDn«®6ë9'•R ¶À‚—ìúå’¢¤©WÙ˜oh-+l%""½©»F’ˆHQÒlòèŒÆB×›šK3Û­@ý­e­$§S8Ä+J[ZË [¸þ•ž § ^ \pTÆb…äÂË œT[[[[[^tâĉ]»v]»vmñí²eËð’À¼ëèèÜõõõ ƒ0ïËæ_üõå€ùÌå»ví¸Ìs._”ßøXȰ¾¹Ë˹¹ËË Ý\.„×R©Óé*-^ADB8t:]ƒ3ð¬×RYiñ ¹‹³A§Ó霑åóbî;#œ :]ÃY~6Ôúôzw„CÇU¦Á)fc”ÂgöÆpf `ærIR(³‰±!Ï]õ ‘ÕÈIcw¶R!I‘»hjúúúúj4’tKgôit^g£ÁʹÞÔÝÝ×W³†­ Å4;o„C䆺»Mzέ†Æä¨Ã™þQÌñ ,¾\NDê¼""²Ú]DtÕ10Äc6»‹ˆÈe·å©'ó«³!|¾ó,?Û˜o°1ƘÍHò|¢ùרªœBÄÝ^žÄŸÇ ÏÐqó´Î8‰©'ùöDälnü£AÜ]Œ……QS¿1'‡y„ÓŒ¹Ñ5GM®‡fÖCåùUmÃqãr¢Ã ¾:q$üE”Ÿª´xw þáeV `qærÊTæpNïc·^¯—cº^ϰJ™¬‘Ù ö¼ðiNIÒT÷šõœs®7÷VË宯Ò·ªÜT®"«¡Ñ¿saUÅn/„³±´ÅME¦îîžžž'Vc;“¼ž¸÷Z*6¦7uw›ôÌf¬´x51ås*ã „3¥X.ÿ£(/ÑËÁèééén+Ï ›Yw5lŒéMݽÆÍÉG,üpÂ_$"o&·8ÔZ–o"c{…ŠÜ-¦®ðe93>h·–%‰ž8{å?îùÊ)C»YÕâv{ÆäÙÛÞ<²Z­V»k§r€63[r®7WO!…pÚ­D”­T+³‰ÜïPÇ.ÒUwûŒPì«R¶7+nnµCêõáu ¸9—ƒržž[­oñt:â8ÐUϰJ¹3iç…6"âEæ¾ÍÔ5g(³‰ÜÁÃñ ç9Ê̈ò)…½:ñ$#r³l"7×››Š3È•Mäv{ƈé¿R‰-ê °­ùÊSÍå±[–˜Ùìd-Ê«¦LŠÈ=ìq;;O!Ié.(¤IÆ(µˆ½½¤©n¯.mj-+lÕ›ºk4Ó‰æRÚõŒy¢¢ët#fŠãpÕ1@›Ir?çzsož=ß`µÚÕêÐLslÍÂk©*mbŒ#~8ÙÊŒi¿¯âHÆl¾•c-öÍ °0ÅOLï:‰òs›ÍV”§–$…v³Š±¡ÖV[ºKŸ‰2•ªÀ·S[‚{IQÒÜ×gÒs"º™ï;¦YO¦RY0¹Š‡f|„ð:h³vÊ”«ÞY¡bÌÖÖu5QÍBx»L-nR•·™ôœÏÜ[kd6Þ<·€4¯_ž©Ìáœs½œÃ3´›s8,H)º {®3}(DN•›“n¯®6ë9—³ $iòŠ É˦§ìLÜzRé¼ÝEä²ÛSmÖNoMjã0æq§4™Ql,Ïáî“Å+Ôgj\1ùpXJGqó2sƒ°¸sy†v³*l6T~˜ÂIR+Tän-+”¯¡¡(i6éùPkYŠWÕˆÝ>t‘ÂB£•TÆÀ oõÎ@CmÊŠ¸³ÂQ‘¯û[Ï”· 6®75—L{ M=.»5øUΩ¹¬ˆ±!ù+•±5K’¦Ú\ĘÍß6¬¢ÐfÔ;+r8· íyæéÍ£Ïà€ÌÌ Üj¤ÚÚÚÚÚÚØ'Î^ùO,Ø]œ :{^ïô–ÎÀ›´ëëëÆe!‹º%,VK0 ™$)Jš›1‹æË˹¹ˆñ÷>¾Ù‰W -{wïÀ 2Ø|ý¦]Ì×c©Û÷$^{€]»vmÙ²e×®]û|~¾âœ`=õø÷1qýòŸ~“äY\'<îtFùçàóµ5é'%¤ë •ÒÓ\Éü·%ø|ärär˜÷ÏWärHû÷†„A@.€†ùrH;—c¾¹Ëá–“â׋þwsÍ —#—ÀÂÌåA€ÙöÌK“oðúí8[)—ã|~–r¹ÎÆ|ƒMŽ/çúWz6œ*xÑJEæÞj5¹ó ò}´`—9êr[WoÛ•µð«uÔåöo9·_‹·',7|<­í…pÔ¯­:Îç«kºþqgÖ-¹ÌTþ웩6áµT™ÈØT¬¤¸Ÿª¡V¦ÝîLu8¼{á›ívÿû_.™v?c‡q¥ Þ®ªÒÖ!yÀs*Ú›J‹aeöDš¿7Â{¼xû­~nº¿@„ô¾æqþHãéo}¸î™w¨øçg^\'-ô±MõÝûv_Ó×WÄ[á 2zùâý[˲f:õNV;KçèpËårî§G|lÐŒ~ºØ”yʰFúÜlÌãÎÎS„CèSUΗ†üa9I’¦&øñ:g#^KUi‹[UÑÞTœAW»ªJC›í¦ÿÇ_~a{-,>í‘C¹<â% IoWU£³i!Ïr¦œËýiçr1övùöŸ§G_³ÖJ’£Gh²¿aX›æháxõÙ.N¾6hX+I$Hí8û<q1A =³Nó¯ B8t:®Á“Ê…ðZ*u¡gC[,•:]¥Å;Y^ÔàŒØØélË+-^áµTêt¡ã¶2E~þømݘEŽºÜ=ï°wöäÖ9Á·Îá¨S«ÕjµºÎ!—äïGo[Ö1¿Úà–£e¹¹¹ÊG;ÊrÕjuða ¾@Uá °¶BÃÝÕØ}£1º¹°íi´£,²÷1ñ?_}<Í›$|>>ábÕŠ»|üÆÄàõ¦·ß~bÓzÓà„ÿÆ•Ž§Ö¯Ù´þ‰·¯øå§'ü7MßÊ[w`p²dÂÇåÂM¡‡W:žZ¿FÞ,ý^%»¥5 ΆÀ'—®Áõ±XPP «¬¬Œù|tÙ­Ey긵I’¦Ú\ÄØPËaWìÇ«üñhN×à"ÑGjìgtøÇ«|Ž? ºJ‹7æÓÓu¸eˆ±¢²b…$I’¢¸,Nǵ·‰1~6QZˆòÿË—ü–^8q6èt gC­;B}ˆ}ù¢ö Vø°§þöHó@Æh¯MÖåí~âÉ`y¨ª„÷MÁÏÛ»×lÚ°.Taº·YÉåI¸K[ܪrS¹Š¬†F×dKÌ6@Æî¶r¹åryV §§§»­<‡s«¡1ô23f3Øóäò¡Ö²|Û+Tän1uÉ¿Gµ2E,'íþs‡åšœ„¶ìÙCM.—ëØó[úÓ²þ-çιŽ=qO(ûZöôoq¹\.—ë\ù¥m‘8,–Ë[sçÎÛ¯%íØ©üœËå:wˆ‚•9êä¶\®sSÍ‚KÑ]b_Gݶ@sñ¶_OY»Êïyµ-ì¡íÕ{Êwe!q@ óåéÞüt̸yCþËboÓö;üB.é÷ÿøýþþÊ7ÒùrÊúS¶úì–—_žÈÈT}òG?}òØCú‡­'7<—?U­ø²ÿybðµ½âåžßïáë~ñç OçËÝ›ÚOYÛžùô­Ã—'üÓèX¢[ê£áµTmLoêî6é™ÍXiñ?û 6Æô¦î^ãæØ°˜8–‘:OÏ9YíQYGgci‹›ŠLÝÝ===}}5¡iÔÀGªIÊÍQY?êãÕEÚÍ*ƆYû `’Üç>ᨯ¶1öm³ýc>+‰ï3v¼vàA¹*Gýöæó«Ÿ2?s/«­?îaNøÄÌärÆlÆÂÂ)O’äŸj¢l¥Z™MDÞÐé8çú²â ÊPfEÿö‘ £þ2U­–Ë9×››Š3ämÜž±¤­LËã¸ßñýZ"ÊZqÏï>É® ÞŸÜ äP(k·”Xú «-94¹Î|ôã´ryÔ^ËWÞ¾Z’ïëè·”lÑ&Ý^[¶ïbk`†|´£õâ¾2¬€YÉå‚Ó¶¿}ÿÃc?¸ô7?;*Ù¹-ã†ßð\vo[ó¿ñÀ¦‡Ü—FüŠ»Wž¿ì9ý±uÛšªMYOžñ\úÃÊåwøÅ„ÍwŸþôG{Ž\ Dð‘Ëîóo”m,*{ýîKž™ å©çr!¼Žw ¹ªóôœ»^!„ðz†‰óefœO4ºêV)3§;þŒÙ U]QsÔ>îÇk†vsçV»‹ˆÆ<´Y›1Î$û(ׄ|†JŒû?û’ßR'•(¿|q÷Š;ì)åò4DSÓgÒsƆZË §œ‡–!4¿ž $aFŠ{PQ…éî>ƒóå~""á)¿áó öçüáµ¹|"wc!çè³{|~yÎþÞ#wOܵ|YOž–‡WzxÃç¹2Lœ«23x`—àfþÄ÷9øåj<×þ±•ˆ¾š‘»| _ñ¤?e>3¹œs}ê'IŒÙŒ…FcrŒNöóZ*uºByãôU¥ØJ²XN÷¬ÈŠ{jI«¹ô»ß½öˆ¼¤Ê(ÌÚÕvˆö„¯“I]ºûÆnŸµq+øxtªžÜäç«ð“ðùùÄ76å¿wò¬Ï?YþlðΗ³Vù=W.}{Óý\£þö§øZ–B®êŽm¿èüÁ¥òÆ3Á~Ñ:p体Gßß{ð¯Û3rKy0äUa@«¢c¹c€R™9ŽÉî’¤©n¯Èᜠµ–Ê«=S=…ˆýxÍÐnVÉ1ËëŽßÕ›uMLïÜ)­p’øå›±aŸÞhjúº»ÛÊsx Á7æâ”ÄÉHq*É‘¦²ûŒÿÞà rù„ä²;ô”àDä¾4½K¢ûQ媲3îLq÷8U1öÛ— ÷u3ìÆ‚^Ç’©T¥ús"„·ËÔâ&Uy›IÏù,µ2k)4yµËWÞ_"/#‰\y¢Ý½N&uIö]¾òþ©·®eÁHƒÏÏÓ½ ~?÷]¾,ß •ø¹ÏŸ¡Èã>çÉÞœ¯Üéç_R¬ì£Y¹î›>?¿oÝʶ7ÞS*íëuïŸtùü~®Voýíi'ŸF¦¼¥õé“£"IŠâ&³žó©¦c!AIlFŠ{Pñ ÓØ=éï ‘ÖÍÏ×h¾MŒYO9cŸÍ̼—ˆäûĉèÞ_Ý/s?ÅÍR¬*3ó^âü;aiéœæòàò2[[×Õ”'Ò>kO³•‘KÑùùâå4¾ðh ûæeøTÁ˜B IDATj‘Øj#¦«7n½˜Ú’¹3£e{, Ÿzv|Å=©¬Ñ–í»X¥®ÂHŸ‹toœ¬¾«ûþS-Ë_zî~A~.8—ŸŠÂš-ƒ?ܼëï.ý ¦øAþ»V¬äúo> ü\øØø ç\?>ÿ™_}ëûß5ð`%÷=]Ïÿnó÷¶mù뢃çüÜç?óËwÒípºŸ>vW ³ÊK¨Ã­¼Ð<ò“.ÙÇœÎFƒ5jEuµYÏydˆö\Mèã¼fh7«Èj?ìÉN°Ú]½³"‡sk[—¼8§«ÍÊyNÅNuš3æ“M$¹JDºÓ«3Q¢^¾t†=…\žÎál}W~5UÊÌà9’ü*‡¿£g>ò«Ÿ´$QFŠ{Pá…ÓØ}¦Îçï+®\Éyïž>>ê—K\??àòùý<ã«{ï´“ûœ'ûûêÆµwpá üè†NþãßèçjõV’«ú××÷ö3^N4<2QUU¨'‡ß¥Y€™ÿ¿BŠ’f“Ggl-+h \ÀHð'DSm.²m†üa•ŠØÍO¯ôl˜^+ ÏËý#®d¨Ý¨?w[ÝŠT¯?XrèøÊÖÜÜ*Æøêç·iT“”wµm©ËUWÉ×à”¿¾)_b…Ñ£‡\ÚÀ”6ÕåææÒýûŽ*ÙÖ=á=ÙÕØ}#®¢¨ÝürY®ºŠ%n+0eþè«­+±†ÒÉåiî¡yüXÿã»k?¦!A~9Ü]üãcÅ“ÏÞ]üãc|Vóø±þ°½õûV³ ¬6öކ®à˘ÍXh“ï>käOc¡ˆëMÍ%ŠÉ¼b5ØŒ…d2ë­kØ\¸µ(¯&æ*¢fUE{Sql@Œ¸”8©*ŒòåÏϘò[‡XÜ@÷ãÕÜ[­ÎÐnVµ´XÉ\àsYQÒÔ«lÌ7”¶çé_•|ª&¹1­ñ¨hÊ¡HðòM9ì³t ’¤©6zªòó‡äærÊCïõÎ •µ¥µ¬0§¼BÏ[¬a‡`öèŒe…­aïÉØ’˜$æŠ÷^ФŠÔvŸéßDw•¼ôîò·¾[ûë§t¿&"¢Ü»[_ˆ;>´×³ùàOtD¼à•Ÿ<¬ðs!„¼È„8~Jp_¢ˆÍ$ºïéúOÔüDÇ\ÿà‰ÚPù#•_=Ñüë§t+Ÿ¨|7Ä«Šˆ=y«ô{oçúÞ}îë3zQK©¶¶¶¶¶6ö‰³WþsÍW¾xë~|³³nß“Dä¨+»\6íÿû“ð â7W-À‚³ÿÕ¨Û÷äµk×¢~—îØ¾}Ñ{çÑ£3õ¯Ñ—/2÷ÕhˆÈÙ ³çõÖhfì“ûfþOTßfÃôš8øfçÖ¢G’osÂzláÿûúEs 7?»v>¶À;)þdy¹üÐpaý¯*4sÙnÇá#ò 6i×××/¡Enªií…U-À‚3y¯ÏŸˆ©GUE{ð ža•rçé¡·ËÔ2ÄXÒK6Î['¬ÇÇ;aÑÈMòùù‚ýQmÛþ¢]þQ½§Âüdî‚êê¢ÏåÚýmÚ›Úýœvª¸u>_‘ËS÷ÿtJ’¢¤¹yJmGEIs_ÉìÂ4›X4óÇ‹~"|QœÏ«K;{J'súŒ-{C.€Ïóç+à|~QA.€¤¹|¡þ=p>\Ÿ#˜÷œÏ#—߬k×®|³¯1ÀÍè}ÿ8p>\>}{wïX¶l™|©D˜öïR à|¹üfE]…p>¿`1 À¼K6_~öÊb€æ3—GýkP˜=XÇ€\ÈåÈå€\€\ÈåÈåñ…ö5ÿïÅqT¯V~=üáÁ7;lW÷îÞw!, åoþí·Á!íþû“Q¡|Áfß…|ÂóËåP~æÒg‹ìðr(aåónI÷Ù?ëG(˜×\¾mÓŠD¡\ˆ±~ã÷º†q~ïöæÝÝÒ4ÚâÌov¼pŠ®ì|~µ$ÍÁQ¥Ê…p6ælL>ºœŠö¦ÅMõM®ÐJEæÞjÍœ&,lìÚ$¡üè'«Š_ï?td ¥óGôó×Î ‘(yÿzûƒOo?(oõP’Öþà臿8ºwõ\¥Õ©C¹×R•o°R‘©»»§§§·×H¦Fg‚£˜mK?5zõ"ʾû.""IÊÔ½²7<²w 3οSÙùü*:û›/8cô^óÚsdã¿?6ù0´<_º¿ýñá®¶?„OÃËÓêÆxö½+>¹p98¿.þtô@e“'0±ý™twnb¬È˜Ø–$EIs …Ïy›É` Wz6œ*xQžS'"½©»F#…¶©¨nmŠk÷tUã•$’ðÿ IÒÚoäcï5ï¨èûSÄDò…_~ïè'«Š_ܳ‚~Ûü˳’´öû´œË¡ù>ñ0n†fì=ý¨ùõ=+èÂÑcgƒÕ¾à`Lûb˳ºÐ–BœùMeÓez¸âpÿ¡#32é.„Ón%ÎõyêƒÂl{^__Ͷ¦¦¯¯§§§»­<‡s«arN1Û»MzƆZ»Â÷ cw[¹ŠÜáåÓÉåD´ºüÊ-œ±?t=³%|Ê¿õQöÝ,Ï$¢+#ÿ'ý圧H¯ »–gQïÇç…bìOWˆó{32(P™ã›–ÿ3WëL8×›«#3{†2;f›²â Rçé9'«=”×åòöaåÓÌår4o>üëâl•Œ{¯e§ÁÁ}rùÿ›™žD,› ‘¤µßo®RrΆýdç–_ÿÛÌÇ\!œ :N×7C ¯¥R§+,4†V³Ìu.'"IÊÜb: å<Á³2¾Fœg–LÑ»·×ý°b '¢Su ¿{šF…’&¯ˆ³Ù§Zf"„·ËÔâ&Uy›IÏyÂíTÊL¼•`6r¹g~ýâÑÀù¿ì`Œ¾¶âËD’”yÞ*ÆÞ³Ú¼a›ge|ˆ†ÿôÿÆ}˜JV,gÿ·,4Ú`ÕS´œË}¸yêQëÅó¸‰([™ûÔ°ç*‘ËncŒ²• \nÂ’$AùûÏŽØñ­À…P²÷üÄTr§$ÑßùEÅȃ-m?ØÓº@Jæ–g«\•M]Ïl9Ê¿SÙù|øÃ=G6¦Ò•UOÐö¾àxe ½x@Ûû©àé|‘"â´jû³>Ü$IQÒÔ«lÌ7 mDDŒ;šjs‘Íh3ä«TĆl†|z¥gƒüì€)¿uˆÅYŒn@ÝýÌ‹»Ÿ}qAõI¾0âåü¿(_;ÝßøÍ¿¾ZùõYìÞÌýÿ üSR ¢úúú% (އO­ê'O­Á+Ÿ (—Ëÿô ~È$ISÓ×Wƒ÷Ì\û`þ-Y”Gµ¯ùß"=½çÖé*Ì–sgÿ´sù›û-¼´p yÉræò3—>ÃK ·±k7°¾`þ-ùÒù=Ë|€ùò¥/rÌ—Ì?ärär@.@.ärär@.@.ärär@.@.är€…eIŠÛ|³ƒ5göîÞA€… ±p–ÒÝ’Ô«{êñïcLçÀ/ÿé7XÈ g#Ý¥‘Ë¿ðXôˆ…³¹Ëo­\¾DÂxbá|çrœb!r9 —#—Ó–àÄÂùÎå>žVÕB8ê×V½Ë&_6Îùù™×IRèÙw¨8T’VµÓØ1I÷8_ý\×?î̺©•R3Õ1€.ýX8räom¼0c¹kQ¦»tr¹?Ý€û‰8ÿîkƒ†µ’$„ãÕõÏ>»öâ³GßÚ‘)­}Þqöy"âb‚DºÕ ŸŸOLw€ÄØÛåÛvž}Í.÷môèMö7 ko*èÏ@Çn\žN,bôè‹~þ>9ÎHîZ”鎥õ¤yYû ?É0v¼×ÿÒûæmŒ]hn?U­Ï¿ö™“Žý§ÞoæέÏ×;| õæÕŒ]øã1áž?~rïæ wú#:cÂñÑqâ|›67~Ÿ;^;ð`÷ÉÚ\¾.ªþPÏu,PÞþ̽ôûPyZ7ü¨ÀBÏåédŸ­¶ˆ;^»q÷‘+<¼¿ú)ó3÷Ò±Úú舵8ÒݬΗfþý J¢î3v|ÅOØ Ÿˆó‡¿÷Èݹ 9'ëÉÓ>Üj'îZ¾"XxÇÚ‚¯qþÞGŽ ?÷\¦MkïN¥cQ¾\­™HPòŽÊåíƒå˜/€E•ËÓŒ7ÔœzIÏsÿ²4¯ð[æè€ä²¾JD¸|å†Ï3Øw~EÖÝò|öÇV"újFîòD4|űAº›Õõå™pEN äÞ¯Üéç4ù¬OZóÔ??sé½þéÐëO¾žÿ÷'+4RÄî”à¾$ ogíÿzýSƈ1âÂïçw®Ë»—†>½2â˼òivÖ|Â/%é˜g~ñÐÞnÚöwì}€bú[?¥Ð±˜zS.Ow—¿zæcKÕ˜õÙ¿þ§‹¿ýqåWZ¾ýî¸Aîóù»ÝÖU›.»·i¿Á'üXÈØo_*ü-1FîK#~~GXÄZé.ùrŸ_¤y£àBðàÍùa/cô?•wpŠzÖ×vÓû½ø'¢îý¯:}2æóûüÁì{ñƒÖY«ˆ¨ÿƒ÷tÁ ççl\ÅØ{‡ßMÔÊ"Hwi¬c t&eÁ¿8Ø|×&—ðœÊ×ß-È/DðÏ Ä¹ðÑÙ·¾[û¡|±IZõƒšâ;ùƒ ÜüëOçúžVûyÄŽ\Ò<þRÑÀË6ó×¾šCì›ùazáÝçþêÎuërš}‚^xZÄŠ»J^zwù[ß­ ô1âĹðÓdå~‰ˆâÔ¿ïØÆ);SÀâ‘f,Ô<^ãyéáÍ—ä°÷µŠ×ß!ˆS‚ ÷Í-+߸ð)­Ê¸k2ÈÝñ𡽞Íß*ýÞ[Ĺþ…wŸûzÔb’[?ÝIµµµµµµSnwðÍÎ];›Ë×[ç?=Z{’Šö¾SóWi.â²¼\~h¸°þWšÕ±Tt>²w÷üÀÀÂ4÷±p!ÇΙJwõõõiÌ—Ïñ !¸ÜžßÏ}éýCPoïÏý‘±Mkrg£ÏÓîÀâ°ÈVÞ.t7‹ëXnšº´³§”ˆùEZMgl©ëÙ2‹}žvǃ9… 6vÎS.÷qdP@,œï\îÇ ˆ…óŸËq ?@,œ÷\Ž?XbáüçòÞ÷c¼±p>s9®¨ ˆ…³‡a˹¹Ë˹¹Ë˹¹ËI.ÂÙ Óèt•¯¸É®Èêt N!fû°ç²-€ÙÊåÂk©Ê7X©ÈÔÝÝÓÓÓÛk$Sã‚ʸQÉ;ê¡$ijúúúúj4’„7ܪ¹Üu¸eˆ±"sµœk%IQÒ\£‘¤ÉøëlÐéÎò³¡9õ‚‚‚gDD¶X*ãε{ºª’ÌÁ ¯¥rrž>»½–J]¨Dgc¾ÁÆc6C~ãY~6ü¡¼A(¦'éOèoºÊÊÊð”¯sšË…pڭĹ>O Rf3ØóúújÖ°55}}===Ýmå9œ[ “sêŒÙÈØmÒ36Ôrؾï»ÛÊUä/5ÝXÚâÎÓ‡&¼]¥-nU¹©\EVC£K’4Õ½f=çœëͽÕkØšð‡qçÈã¶ëj4ØÓ›º{›§ìÀ´-Iþô‰'¢J¶nÝ:e¥œëÍÕ‘™=C™MäŽÜ¦¬8ƒ(OÏ­V«ÝY­VG”+³‰ÜV»³Z›z³ª”íMÅ I 'e+ÕÊl"÷°Ç+ÔiDl»jºê&Îs”™qúÕ‡¸c²k×®k×®M3—Ëû‡?Œ­K^4b¥"souìºðZªJ[†#ƈßìÁH’¦º½b¸´eh¨µ¬°Uoê®ÑH¡ l,´cäöŒeÌÀÐyÜD”­ÌH©QÒÑÑ‘|ƒ%©Ô•Å%I“WD6›ÍîªÖh’í(„·ËÔâ&UE[™§Ô`M´J™™z4W”4÷•8tF³óz«Õ”©TwG¬Q™Õ%ß±}ÐHR’³€ä¦ù½OõΊ¨õâ ÄŸr&"¢aÏU"—ÝÆe+i.ÑVW›õœË^’ÚÍ*Ælm]WÃ6ÉTª‚­Äy˜Bø–4yEĘÍî ,4OÒ€yÈå’¢¤©×\DVcaaa¡16³†¢mµ¹ˆ1›!¿mXE¡Ë¡ÈϘò ¶8‹Ñ ] ¥°Ðh%U…1°¼[QÒlÒó¡Ö²ÐR$IQl¬P‘»µ¬P§kpQFøÃ¯ "'o›±ÐžgÖsž¼Ó&ÕÖÖÖÖÖ&zúĉÉ×§OCøzô[åJ&ò*yw‘¹¯Fƒ7 ¤+y®®¯¯_‚1šòBþkWU´§<¯–yÈåòÿÚ¬¹Fçê*ÜÒ†¹Ë˹`AÀu!™ƒovbR·w÷  —ì(üû„T´þÓo0€\>>o“Çòìï[‚ÅNÈå Lݾ'?'GzíÚµeË–ÑËËa¾|³S> Á|9r9Ì?ärärX¹ü/0³-©P!œ :N×àb^ú:e„p6¤ß½éíED£e¹¹uލRGZ­V«ÕÑOÌTùœ»áãÓ¸ýùò¿ü?¹eí—ýiì2qêåÜŸ~4áŸö3r›v+øms”ËxvΆÂBãpÅN$¥µ£$ivV  œ©÷ÙQ—›»Ÿ¶–Ä·®<ær¹\ÇV¶†eö™*¿urùåN\`ç?øh$­½ü$|‰Ÿð¯}nÐëqÃtÝš:û EöäÝ@.€”ËCùÛb©,((Ðé*-^!„³1ß`cŒ1›!¿QŽæBx-•º‚‚‚PXŸÌîΆ-[þ¾¡R'ïNDÂk©”kή hÊÄ,„³Ñ`åzSSñX¨ryßJ‹Wx-•ºÉV ë×éÆŠ›Lzn54:ƒMOuj¡Ýî\Û®ѱ¼ÿ⾺]YDDY»êö]ìwÌlù¼˜ðñto7&<wÕ4𳕿œðOøø‰ÁëM^Yó­¼uã—Lø„ 1q¥ã©ÝW&÷zâí+þ`µƒÖ›'üò·ß~BÞ÷ÆÄ૞}½»wÃ+æ®t<µ>º­·ß~b£Öx`÷ãr…7®t<µ»ãòSÖ¯ùVÞºM“ A—þQã· ÌC.ìÌldìn+W‘»å°K’4Õ½f=çœëͽÕò¼µ«±´Å­*7•«Èjht…ïk°çõ÷ÿíÎÍ*ƆW‰èªc€6k’$Išš¾¾žžžî¶òHÌIzâj4Ø+ÊS‡W.ï;ÔZ–o"c{…ŠÜ-¦.9ô7–¶¸©ÈÔÝÝÓÓÓ×W£‘$u^c¶ð¦ÏÑo¹gEVðQÖŠ{,r ž©òù1)çÓí-+7}Ý¿f]ѱO‡&¡ùóNYÛžùô­Ã—'ü J„ÿ®ß_Ùð/ò^§¬EO<|—ˆÉöÓ±~ÿ­=ý{ͧ}šŠ¾Ÿ=Äþiß¾¯ûÅŸ'ÁiÛšø;—Å}É“°DLøø}ÛŸþèô ?óѧ³]Vs`yßÛ2"Kä;ü†oä²ûüe‹Ê^ÿCX[;·eÜðñ/iòyß©+#ƒ}´A“qÃÇÿì9üì–õE{ßìr9Ì¥¹¸ c6c¡“cqFÔÓê<=·Z­vWužÇšò&áµT•¶ 1FŒÑ™gÌãN£?’¤©n¯.mj-+lÕ›ºk4ÁîöŒ)ð¾3áO/q qöÔ{Ôÿþƒ=“$qvú~>?ŸHåÎë6 ÿËÙ‘+G†uÏÞÉ'üR°æö•$!„Ÿ~Ѻ÷ò™"ìÙ;×m ñ/¿BºGîä7|^›¹gÃ[Öe8©ÿ0ª*¼ú0gfûÒÔ™Jq®_1›’óŠˆ1›½Ñn-Ê“7ÂÛejq“ª¼Í¤ç<•VÒ")JšûúLzND‹dTÊÌé¬vKÉÅË£ÁG£—/–lÑÎdùüðùyZ7ï;ÿxù‡¿ù—ãýòíç?>üΨÏÏ ŒqŸódoÎWîôó%Âïç~žQ¸K>Ð+6®½ƒ‹ðÊå ’ßñsµzëoO;yÜý<ãç_?y9X¹_¬¼ëÎøU¥uÃoXP¹\ŽÈÞ«ræVh7«³µu]r›Í69[˜^Õ?dK e61f³§¹8\]mÖsÈâ.»1ÊVfkÚ—”Ñn¹çÕý£DD£û_½'§gª|^ø¹Hýæó:?¢ußÌ•|é›[è#ǘ_p¢Áƒ›¿ÿÛæ]Åwòóø%\ÞñˇVeDÕÚ êšÇ_"óïós?÷=]Ïÿnó÷¶mù뢃rÉdÍ\|)så@·myf†Ÿ ._ßxéÀwu»þˆ?d5?üÚ9ÄÆ©ßðÛnÆ ¯c‘$E±±b ´¥µ¬°EþögI³É£3¶–´’ü}PuÌ^ÚÍ9-nwØdµ$iªÍE6£Í?¬R²ò镞 ɶÕ`µ»âÔ#tÝ"⤪0+$Éi·r^d®V¥’îu¹{ÞaŒ½£~‡óGÛ¯%"íþsT§V«‰hõóÇÛBqz¦Êç)—§³¹¢°¾9b¯»‹\OB8­|ÄÜôW’$?+E•i?¦!A~!ÄŸ<žÂ òGœ6à1wüBÐÏýêî“æñcý^ïÈ͈èçþ¹ë¹P'¿\ÔüÏEò¦Ï=þ4ÑýáÌ ©¶¶¶¶¶6ÑÓ'NœØµk×µk×þ‘ÈëÑ©¢½¹$íõá^Kei U´7•(’-)>øfgݾ'?'ïŒý¯þCݾ'÷¿ú;¶oŸWG8Û¶ŸúæÑgï—¤D%a{{¯Ð³¯Ü}+­ðî?|ÇÈå ͵k×¾Ùù¹:dLZ —/,{wïX¶lÙçg‰y —ã €Èå Í-ñØ™…u,Èå0ÿzß?ŽA@.‡ù„ ÿÌ †!@.¬ctœ½òŸ€Ï¹5_ùbøÃÎÎNŒ íØ•Ÿ€\s례ϭþÝ‹H ''0#°Ž¹Ë‚i®/?øfJë¨põkø¼ALÂàÌi.'$¦° IDAT¢g~Xš|ƒ×ßhÇO&|M+SŒ§œÏ•é¯cùï¹$ù-j{!¼–J]AAAAANWiñŠÙ8!œ :N×àbÆ÷M«ò›éÉ©`–ˆñ ùàÂxŸPBŒž>rz4釚=ÝÙÙyäÈé>"oœÊ^ eLFOwvvÊýŸ÷Ç·yL!FO9"ÌÆgöˆ”éÏ—ÿ¿üB:áíª*mq«*Ú›J’Þ®ªFgSµF’ð‹ifOKó V*2÷Vk$I’45}}5Xx>—ÆGF?[µjé ¸3ƒ¤Ý±=K’ˆhùcˉ(Ä=Ó9šµcmÖ‚Œã>81²|ëöíKF÷$)kÝcYQã*œ ßìL<•®Ôn_›ù™»ûÄ…QÕ}ç3—ÿßÿò¥³ù˜ÇMDÙÊ ù•V”4ׄr¤¦íõ¦î4.Íd4Úˆ(§¼­Ië¨*mqS(Ù¶©¨nmâÐ:Ä8×ËQ5¼rƒäÂD7ªc¡g=]UÆÈFcJö[Ãk©*mbŒˆÂ:6E ‰6p6èŒ6FD~ÿ7×HÎeŒ‘ÍOæÞj5¹ÂczøÆ\oê«Ñ„Gùð‘,ΈÞ` 1>:r»vûêÑÎ@Ì’Ã)=##ÒríöuYqJûŽ»?8MÚBÕÒÀ^ç—n-\µT¾?8"IžNZ¿cm&Éi23Ê:BÏfI’¿Ð}â÷ãRDsKï»þûßß¾~γ»ã£#tŸVÊCG$ÄÒû¶®Z*‘=}Ô1"Äò¸GQgÒ-CÇ{þüxhßð]äÌÜž96nÁBÕg=§I[¸j©$Æ/t;H[¨ºí3w¢ž¤ʧÞè¶¥·Óxðm}àrÉu¥R顬ˆ7@Ä;!îÀ&zõÃ[Y»ÔÝ}bdùäöç—n-TÝ6÷]:=Ó_ÇòÿåK~‹<åÒäc6C~Uø yB·§§§»­<‡s«¡1´â‚1›Áž'—µ–å›ÈØ^¡"w‹©Ë¶Í»MzƆZ»b;éj,mq«ÊMå*²'7+ïë«I:“w,¶ÑD ÅOü¥-n*2uw÷ôô„ú0e q7ðZ* VUy[wOOO¿ù•^³žóDÉÞk©4Ú˜ÞÔÝmÒ3›±Òâ 2v·•«Èw$fÒØ…ßßž•%ee)=£c“_”µcûC«¯Ÿw>vcKHZªZ}ûï/È{z”«åÀ*IYkw¬_Œ¡1ŸìÏ 1îvŒ,ßÝÜi{lÝ|LÇŽ_¿}émÑ}^÷Øc;vìØ±cõ¸Ã=.DàÛ·ËLpÁè9õ–žÒnß®¥Á3£1•Ç·`áÒ¬å42ú}6:B˳n£Ïõ$IeqùÎÔßõõ(³âŽãnÇïo_¿cGy¦j:v`ã¾úQ­|v›ªpëò‡{\ˆ±3³ÁDïÒ9Ïåö%¿Em¯©é3é9cC­e…qV:FDc£×ï[•9Ý|ýüG~pþzXs«U·-¨ã>8räèQ‡çúø8‘$e­ºïú`w(ÿÅ=Š@ôLaˈãÙ%™Û²–ÓÈè¸ÄòÄ=I% §Ê=Ž£G;Ï/ݘõŽmn|üº2+“(3K™þÀ&xõ£[‘–®*\=þÁÑ££Y¡Pžð]: Ó_ÇrÃÇÓÝESÓ×]-/ưª”íMÅ Iš\ÔÁñ™C3f3Úˆ19Ðg¤þ“fÇRlH’4ÕíÃ¥-CC­e…­á+d¦¬!fyuPª¿£7Ns@f&kŠÑQŒ <¦Ñµ™é…ëÛ²–_¿0:>~þúríôƒ´R»=lÅÂ<péÒÛ¯F´4| óµÅòv«Ú±ôtç™±ÇÖeÅEDI·Œ{¼1»$æÆi|œ–¯º’÷ä¦Cy r:ÓyaLìÚô_¾¸›Ê›„ˆ>¿.ÄÒ¥KgåM0ýùò O~KJÅMf=çr(ÂÛejq“ª¼Í¤ç7—ÊUʘéL¥Š8×G­IíK­cFÓkHR”4÷õ™ôœˆ‚+d¦¬!î™JUê³qœ˜uŸ¹Ï_¿o뎠­÷]?ïþŒˆˆ®F46ê¹={bKä8±TµšÎ;FhyÖô¾%)E/¡™gòÊß;b窣·þÊ0*ÄÔG‘ú–1»¤Ðáë£gF¯/ÏZ*I73ž©_ª°‰:ÞÊÈõ Ý'F–kUK¥¥*íÒóÝ¡«|†¿KoæjŒs´ŽE’4ÕFOU~~à"$9åò""Mµ¹Èf´ò‡U*bC6C>½Ò³!õšLùK”Ä[/®(i6ytÆÖ²‚ÖÀ•OÔ©w8qÇbM½¡ð+½pRUåq˜º†Ø 4’¤(i6{tƲÂÖà¥]Š¥-­e…-\5’Œ…6"®75—(ðñsL’–®z衈’¥«zˆ„%º}uaaäBˆˆ’ˆ‹ô}6~]™µ.zJnrƒ°ûa…Yë{,|ãÇÖMî=‹WLup²ÖíØ±.:¬¯’ï®[·ŽˆhùcË×EòcëâEبòÄÇ~grƒˆÁœ·ˆÂðÞ&êÉÍ'òèžüÿíÝl#é}çùoUÚ‹»8`pI¼b;ÃÂE`½ø²3ò(³#S¤'4í ¤Læ´>A°obëd)¦nÇ+š6·A†Ãv&KÂ-óädr† µ;=}&6§"“bk<æŒì&ÏpØã*%æDÝ?„;¬1v·TuE“%Qê÷ úC"ëÇSßzØüð©‡Õï—úÖVÚcüß¿ûÿþg¿\ÓºžÐ°°Ò®Œ¿ø»¿|Üi÷—¥<¦y/í¶,.....6{z}}}rrr¿æñ—_¹ûŒÿ·[oz=ùÚÙýª57êæŸ¹óqÿw?ú!Ò<<º¾ó×¥¿×úÈÝ»wŸ}¶o÷õ7oq»qÃøÿ ©-ó>}ýP–š"´¼wË\IgTœ†÷”<]Ý¿Y®6ݼyóäãåëÉ×øç ôDý(c‹qÇúA÷>LŸœÓó,N·£õg×oOㄹüÂ?áñ?Y€þôh„SœÓS)@.@.úÀ5J€®|ç¯K`u÷.ßqÈå8_5÷Æ '7I ÌcÈåÈå¹€©ý÷>oß¾M™€‹Ìå“““Ô¸à\¾¿¿O€³Æür€\€\ËËr9r9@.@.ÈåŽ]ëvÃÈÅÆ‚šZèuÝ÷RúÉ·<_LŠ?²p)JýZ ŸÐu.W×B&³Ð$jßÈdâ@—z9Å0rQ·ÛíŽÞ×ï›cꪪÇb9è[²”˜s{<·;Zÿ,@.ïEq6">]×u_Ãñò|l*^pÌ„g’ Æòœ<âÚÌcY__¯yä™gž9å. #—MŠÈ Ýi)ìK†Ó¦(õû®ŒÉÉÉýýýærs}ëŸ-¶ÕUÕB^MTU Å][ÝŽ€+ãöíÛ­èè{Ÿ½ÊâG®Û¢j§¸ôz/À¥qv÷/¿nwˆÈNq¯ö E± :TU[YÛãg˜ËÅ6šuHayÚ[ÓÛÄRاo/OsK@NpÿrKò.ßȼÙ#Šmb)3QyöFõ®…Lzú"g9¹ — —ärär€\ ;×(éåWîRÐÏ^xþYË%=qäòî¼ø…ÏPПö÷÷{ì1™ùÔ'©Æ%²üõot¸$¹àxù•»æâ?ºÆ<䫉\p™¼‡\N.À…c¼œ\r9ÈåùG×~†"ËED # jª*"º>4»zk¦œ¦æ“âl\ŠrÊUN°5€KäÁÞ]ÖÚ ?¹ðšˆèúoÇ~ðÅ'º H†±uó76Ÿî~Ån¡íÖz»‹Ë‘ËRb~*^$p)Ša”Öæc¹[gž€kÒ¶¢¸2™‚8 —·K±/þoæ^Ýú÷+""‡Æ1ºŒaú¡úƒ“­ßøÞþìºõÖ~j¼ýò“oüó·‚7¥¼xÝÍOÊ߉o«ª?RNÀŠb›XZp)Šaä¢n·ÛÍå¢nwô¾~?êv{ŽDs† Íe‰9ÇãvÏ%JU禸6ßðñʽªjÁ±XÎ0*›º¯ß¯yª®'•snÇãvG­+Ö/ p)<<лù1 ‘ƒÃòŸÞ¹ýÙço¿óððáþàáÛ_þð§oÿè­/8üñé§GžøòۇNj}øÆS¿ýððáaˆq°õReß6W18ZøÓñNÕ³5Ë¿ýððÁ÷¿üáO<ñôÈG/ï˺÷ªUÞ›OUo$üÖƒ·þøÉÏ¿®þå O¾Ô°‘5›ªkϧGžhØæÏþEÑÜéS/½m­Fý–;ü9“\n¹lRtÝ7âl²-U fG2™…ê…L&N§Vf†t=]×u_Í x‹§Ê$bSñ‚c&<ãd0–ç• .»zç?oÌf>ý÷“ß»S|p ?|ß³Ÿü`ô›ß×辿™ôúãï3åµ{‡ÿ:™~ùð…ÈÖÃß>,ÞýÃèn¾õW÷þÕ¯ôCy-øÆS•ÌGîþ뿺÷¯þ˃0ÖnÆÿðÎ,ÏV/oèo|îÞÛ¯od“/}\üOýê¡ñӇŻ˜zjõ­äÊïÿퟗWp ?8°]wüÇ¿/êßãµú>ž|cëAñGëøÀÏèæÖoÌfþíGõÿQæ ÍYù©iO¥ZæÓoisüï>L¿ü¯üÎØO%Ó/ÿÖ·7ªÑ°…þœI.oK×}‘@uf°Ö-3=> Ο®K2[ÉëåÇÍå-Ÿ†ùABdÐî´ŠÈNqOœ ™L&³ÀŒð(är3šö;òøWÿÍÿR<|p ÿÊï|~çÍï?8Ððæßþw¿ãzp`èò‰ç>1ðàÀÐÅxx ?8ø‡>qãC•-º|âæ]–*«XþÐS-ü]±êYëòæ/úƒý§Å;¯`yÞu´ú¿ÿ³éßôOå?”W7Ûlû§ü÷?*~ÿ{ÉOܘê£É7~Pü»ÿðÁ_ü¹C£ÉfëYÕþêöè?-ÞùüG>ì÷¼ðW–6­^³Æ-<‹\~òû±X'v× ›3Ñ·UUTUô‹ì»ªª…¼š¨ªŠ»"6^Íà2{xx‚håz^3¾æûò}í…ýÂOî|óþ?¼óêŽûó¿ ?<4Å88ÔJÝ/Š""†ÑjVÏ6^~W‹¤ŸüÂÿôsºñP Ã0åã_L¾ð_™c¦ºñðhúÏ¿ÿ—‹ï¼ó[Oýžî:ø­?/ÿ‹÷Ûê öذGƒ°õO=’I?ùçß}q ÷5ßw;h|ãö>µv¾¨¢¸Fü¢ªZ¶Ý|Ã(­…ãq̬„}zó®ã°_?Û~{Ýî]÷…S©t:Í09¸õ“üìþèGCÿ¡~¨x';_Þ0~ó7~N7uCŒÃCÝòË€mèÛßϯ[·Àñ/‡¶¡ØÕrol =þ í–ÿ_¿2YœüêGßg˜[>ÔÎgªöUùùÏm¼÷gKö'~ýàPÿ•'>¸òg¯Ûmÿô i3?Øì©Cãƒïû…6M5iÑÂÎ$—‹ˆó¹ÙšùâMì "2h¨j§¸'’Ïjª*ƒv[§AùºÝq´nÇO)ŠmxÔ¡ªÚÊÚÞѾ÷ .·CÝèüçàð_ó?ý/>ñ‘Éß»÷ÄÂøÏr¨‡úÍ_Üþà¸À\FÑ-¿è†Í»0÷ÎŒþ7þ—x¨×/Põ‹aó.|äíßüƒ¿ûo¶ßlùƒÃü`]6ÿû_|â#•ÿÊSÿƒQë#åŸ÷}àƒºï×?d˜ þ纮ÆaU;]Ÿú%òñ?iÖÈÊOýþêoþÝ—ÿk÷äÇßÔ?šŒ|üO~xØê›¶°³ŸÎϬ²¸¸¸¸¸ØìéõõõÉÉÉýýýÊ#Öû—‹9§|#à”|ÍÍ \ÔÒt}Èá(lo«ºî{)ýä[ž/&ÅQyÄ\¸z>L¾éÉ&ÆX6U^¬ÅS"’‹ºCšy·õÏV¼üÊÝ¿ð^ê ?}éÿôÅ/|æKü§“Ïýî)7eüŸ‰?\³ÿÁ¬‹ªžƒÛw^}áùgæj«›7ov=¿Üzïp‹Ú×B:]µ”aäÞœ¾u«æž*–un\DD±M,e&*Þ°,Öâ)s‹Ö†Üh²}€KáàðT_Ý3ŒÒÆ¿½wãó_9åvÐs×(À%ÒÕÔˆF>òâWz±\Ú\Þd ]8 O“Ëpáç&— r9óÂÉåWÞþþþ˯ܥ Ÿ1…\~Žðü³=ö·J}n㯾EÈåW\³ÛIô óNظ’TJËËr9¹,ßûäö…çÿm~(þ…Çå ÷@¾?¹¼;OyüW¦èo¦“ŸýÔ'O°â×¾þË[üKwÔ—¨^öÚ¹\÷I¼ñø{¯@Åï¿ó®ˆ¼çg.Ù ¢Sÿ’õ¥èW£¶€û—_ŒG3E‘©- —÷YŠº¦pÔ ¶€\~Ñ)ŠñrP[@.'EqÔÔ\‘\n¹ØXPSÓ€®û"—r†×Ó £´6?µ¼­Šˆ®ͮޚ°)}² ³ Iñ›E0rQoHkV–÷\SÏ®µ5-éu}oÜ(%æ§âÛªÚ¢'œéQŸ¦ñ'îöm÷Þ´\½>G½ª-¸|¹¼'Y¼«tb¦±xÁq”>Kkó±Ü­^FÏÓìBQ\ ™ÌB市I½ùq=<ÐϲµÇ-éy"×TUTUª›o†ò‚cvõÖ¸­y­Îô¨’?»O# »½som~*ŸŠÙÏ~mõ¤¶àÉ[.êöx<ÇÍU"]Ôív»£‰ÄœÇãq»ç%£’óTU ŽÅîë÷Íer†Ñdûłˆ ÚÌl›XZp)йqÏ‘hÎh¶ÇJˆœ;Z¾nwwaÆÁĜۺJe¹\ÔíŽVÚ_¿_9®×Ûðˆê'øéª æ~kŠci|ÕáXWiýÁ#• ûôÚ–äïÄ â˜ µ ågzÔf(·ô¥ÝÄœ»rÒ\Ôìqõ¿Û"T°¶ëùõŸmÌÓ16¿²ÓÛ\Þ›Ú€+”ËK‰¹¦ú©Tاj¡¹Déxgª¶)¡ÔÊŒC ñ;yEq6">]ïpÐ]Q\#~QU-86_ Ù•¼˜N§S+3Cºž Æ*¹ªff0ŠMÅ â§Rét:“Y°î·Ù.D$›Š3á‡$ƒ±¼õ ‚Ùëv¬ÇN¥jvQŸ¢žzò‰?-RT‹Ö6(NØ'"â1ÓìpNÀ0JÅ,Þ«ùtnG]Ó—n¨×‡Gªº]ÜÙ+î8F‡ë?3œ¶ù¬¦ªŽÙçÌ’¶èù–=5Uõ…S¡ÑÞ¾îzR[p‰s¹9$lq,mmtÝ7âqŽøt½°¹U§Ôußôø@y”1™­•4dÃ[áZÈ„}ºªn/O7‡®¿l¶GUÕ‚ók¥Fâ wa¹lRDíNû ˆì­ 8»NQFågýÞ[Í[¿÷–uÉ® rs±`²ÒÔúÃÙgÛâ7·[,ˆªj2²‘ ûTu;n\Ûó<êáÑ!]Ofó"²[”Ñáúšœ¸f· J8•Zš°™NZô|ë]²_oÐWO›Ë{T[pYs¹9$lx6çXÌ!Ëžq-dR©•™!Ýš­Í©)^oÈú=Ô†ÅXÒuu{yÚë5'½t²‹£4ÒTõôU3àÛéïÕ/óíô÷:™uЬµV{k+šªú#U%zx8fO¨DÒf<×£u˜Ÿ JÅò¤—& »ë"˜Ý~uv'tÜ…:éùU3pz«‡µ—2—×¹nwT?à°_ïõ>Å6~+RɆQZ Ç â˜Yi0õ¹Á궉¥L&ìÓEÄ:é¥Å.ÌãªûÒ³õðP_[ÿ®uµõïv>¸®µUŒR"/ ͬ,¸ëiêÝáÔô>8jE± :¤PÜÝÛÚit€§-ÂÀø´ïxÞÔyôüs«-¸ô¹Ü CªªeóG³oÍë­‹t;Å=iû­;ÃÈE+ßÞËg5U=Š>'†t">]¯ OÍvQ9®•µ½žêàШÿyõõ7Ìg_}ý† t\*ù;ñ‚c64>Pš*‡ÓõW[žôÊ,öó=êã¾TÎÍãIfïGœ-š}ò"ìwŽòw'=¿23>›/O4ïáK¯'µ¨÷ÿ¯mb)\t‡B^MD÷…ÍÙ·-"Ýxhvs*¾<íýêá¯ßPZç?W Tœ+ß${hæè®|®@į…´àØŽÃ!ê¶“—ÒO6 ÷•ûOëu·i¾‹£ãZžö,Ý&ïT)ªñPå7¿u¯Å³Äš*ÍYÔªº<í]Ë}-k§Y¹—NUUÑB^­vkG'=³à:ÿ£9îKqó :âñ¤D-ûj7E(œUµW«éBô|çs³CɸòJ8âK“½Ìå=¨-¸@Êâââââb³§×××'''÷÷÷/¶•/¿r÷)ÿÆãソÿλo¦“Ÿœ|îë~ãöžö2ÿBŽº|Wu¤Ùç„«Ñ/]àÑÔ:Wß¼yó5º‡äøåyµù­ƒmUõ8©-èäò‹q õ™RÛÄRf‚Úr9Z¥¨Gò+w|ÑÚryŸ¥(]ç¨Am¹ü‚>’£›‡ŒéR[prùýwÞ½2u¿t£›=)þeÓíçÈx9äòsòf:y•êžÖ¾u‰ZÛ«â_®£¾\=ðR×\š\Î-–)>EW›J r9r9@.@.ÈåD¤“û$Þ¾}›2™Ë'''©pÁ¹|Ÿgùå¹¹ — —ärär€\€\Ëœ.—F.êv»ÝÑœa´~ð¢ôUc€3Éå )Šk!“Éd\ŠrþÉ»æÏsn Ð/¹ÜšŒ+¿'sÇížK”Œ£ÅJ‰9·Çãi6˜m”sn·Çã±.S³–aäbcAMUUU ŽÅîë÷­ZЮ1¹¨ÛíñxÜsss֔ߨ À%Èå 6­j›J­Ì8¤¿“7ÌǦâÇLxÆ!É`,_îcSñ‚øÃ©T:® x׬¥(®ÀFħëºî‹ln¨7¬6#oÒ˜ ¦ª¾pj#4Ú¶ ÀÙ¹ÖúéõõõšGžyæ™7­ë¾éñû H!™ÍœNÉg“"2hwÚE ;Å’á´Õ¥^UÕ‚óöÕ[ãæS†‘«_k ËãlÔ˜½âŽèúýºÈ€}P¤Ð¼ Ktnrrrÿ„¹Ü\ßúg‹muHUµWU•BqWÄfyJQ\ÕÙ©øööò´wÙN-¸”†k ô 2»Å‚ˆ Ú«·Õ¬ 5u:wûöíÖ \ëd+§ÏâG®Û¢šÎ6Å6±”™ÈEÝ!MMc#g£µÎtÊw}\ŠÒ»"µÎõþåŠbu¨ª¶²¶×zIg âÓuqد7]ëºÝ!";ކvÒ׈_TUËæËÍ[´èÓ\®ªZÈëíö¦%¶‰¥°Oß^žn¸Vå)^o()ŽÙPyzwýZŠbÍ:¤°<íu»£y°þÙacÌä­…¼Ù‘ˆO×[·8;Êâââââb³§×××[ÏO¿ŒRb~*^ðGòšÙB IDAT2 .úz®u®¾yóæµG¹:•û ‹ˆî˜] 8é1¸t.7ÿ[Ðz.šJ r9r9@.@.úÂ5JpJ/¿r·oÛöÂóÏr‚úùѹ¼—žòøÏnão¦“ŸýÔ'O°â×¾þ NÍ9œ s@€\ŽNÝxü½g±Ùûï¼+"ïù¦õé :ôÈåèd2Ð —£2Ù5…"Ð(är\t&c¬”>@€\2èà¬üÍÞ0J‰9·ÇãñxúÙ‰GÔv‹´˜)Ê6±´`†rMUUU ŽÅr†q<²˜‹VÆW…§\Ô=—(æ@fyˆ·Ñ˜w)1ç¶ y–sî¹D©’Àææ»ú}ëÐfe¬tl~eÇ’í¬m®l¿¸6_RídˆTQ\ Kå>0<ê)w«¼µYÐõ!ûu‘ëö!]/lníê÷+ y½ wñðP?ÁO'§Ìg­Ç+ÕãÊ'š«WN$æj®“´8S­WlØ%¬o¸n͉»_}¢›É߉o«ª?RÎñ•"4Ü]ãNÛ¤6;ðžåòÞôpår¹¢¸Fü¢ªZpl¾°Å؈øt]×}Ö!LUÕ‚Ù‘LfÁ¥(•ãTاj¡JŒ>N9¥Äüн2ÌœMÅ Ž™ðŒC’ÁX¾º ¶áQ‡ªnon퉈ìmm¤¿cf£½­M¶U£æcAMU}áÔFh´m›7%”Z™qH!~'¢Ï-ŽÙÕšq\K2°ŠH¡X²4 œJ™Uj‘Éžzò‰?-2YÃSvÜêŽ×±N§Ó©•™!]O?´”ûTu»Rœgªv/Õ+¶í [Øìĵ`¹lRtÝ7ÒÁ5‚šNL:fVRétºþurà½Íå'îà ærq-dÂ>]U·—§½­G uÝ 8åxÀØ7âqŽøt½°¹UªZ1›*N…r3H‰ ÚöAÙ)V/|n7·J†a…ªª–Í—wT>Že¥âŽ”‡«Í5›Óußôø@y±d6/Î…L¦ah®I~æ³×Jú§'l½™ÉóðÀ¨ü¬ß{«Ùbë÷Þ².ÙÕ)«9Þª³YW«òÂΟ®› ·=SÍWlÛ%:háѧˆ¶'¨s5¶r¡aÖo{àýÓÀÌåfÎK¥Vf†tUÕ‚ók$sÀØ¢j¦ÇÎÊ|0驉Vªª…¼!MUk¦…ˆ”“œŠ»’Ï&3á™!]O®¬íÉn±à¯­šÈqŽÇ˜Ã>U Ufãœ6“UONøvú{õË|;ý½Næ0tuỂB^³øt¦gê„]¢Ôµ°7~a}\Á\."Šb¿9 Çm]·;ªpد[þõ«ZÈ2ïüºÝ!æ†S*s3²±lÒ1:ìŸö‹6·Ö²õùþ\`¨?üâžÈ^q§îð;ÌdõµõïZX[ÿnçs‹;eÍ´¸¼°SÜ;ÚȠݦ(œ©Ö+6é$æâ^§÷.t>7;¤ëÉàñ û\´Í*f Ûvév~Z=é Ÿð>‰Šâ „ŠóccÛª*"úÐÌÑ75mã¡ÙÍ©øò´7®û^J?Y³¢mb)\t‡B^MD÷…—&lµ[¶MÜÚ°ÇÆ‚î¤cvõÖ„¹üò´gYÃϼ±‰8F‡Ìä53”ŒŽþ¬eɸòJ8âK“GѪu›»¨ÉHÔã ™š5|W‡ß$“5øüæ·îµx¶ÃSÖ,”*Š+ñk!-8¶ãpˆº­ǤRœÍðØò¶Z™„}|h-ÎT뻬I͉ûêá¯ßè ÌWz×ò´wYDD|áÔBó"TZ)ºCÓÞe½®‡txà§Îå=è Ÿ)‹‹‹‹‹‹Íž^__ŸœœÜßß§RͼüÊݧ<þ¿÷,6~ÿwßL'?9ùÜ ÖýÆí;/<ÿloÛsâ{½÷ê&ñýv‚ÎA¿õp2­sõÍ›7¯Q£þwÈh(}€>ÀUG.¿ô~™(¬œôÿÅTúþ?Ô¤r9Úe2¾ÀG @.ÇÅg29 ôúär\´CÆJéôÈåèÄýwÞ=»3VÚç'èÐ —£½7ÓÉ3Ý~ZûEîçtèËÑ÷‡æœžJ € ×~¼üöíÛ” ¸È\>99I€ ÎåûûûÔ8kÌ/ÈåÈå¹¹ — —ärär€\ ¹Ü0rQ·Ûãñx<·{.Q2NÙsƒnw4gç³"Ð'®0C—óSñ‚ø#©€KQ £´6ËÝ ¸åüAQ\ ™Ì'Z.Ï߉o«ª?\âŠb›XZÃÈÅÆ‚IñG" ÊKé'ßò|QSË£ò¾pjÁ¥T–™ÝY^ÞÖõ¡ÙÕ[¶ã@_\›5zÜú‘`[UED×}‘€Sòåý^Ù£¹ÀÑ'‡©åmµòçýã$óX #—MŠ®ûFœM6ªjÁìH&³pC½±É¤ÓéÔÊÌ®'ƒ±ÊTUÕ6%” ûTu;~'o]wSB©•‡¬Wv›ŠÄN¥Òét&³P“°Í±ót: ûDDü#æùØT¼à˜ Ï8$Œå9ñè+mÆË×××kyæ™gÚnT×}‘@uf°Šª—™ñéÉd2› 8UÛE Él.à¬ÛVU-8o_½5nk2ìm¹X0©‹ßl†ùABdÐî´ŠvŠ%ÃiS”ú£ÎÈäääþþþ s¹¹¾õÏúmÏ]ÙÔ O;QUÑO{0Šâ ¬ÎîLÅ··—§½ËæÄ˜úÅöÖV4Ë4›Jšy5QU)wElu‡œ‘Û·o·^ £ùå5Y\Q\#~Ñ4-›¸\­V4ŒÒZ8^ÇìÊtq*˜l¶œÃ~½óhn›XÊLä¢î¦&ƒ±‘ºF)ކfW-‘ýºÝ!z¡vfy‹Ï+Ày:á}ÏÍÖÌob·X‘Aû@ýS;Å=‘|VSU´Ûºü"¦3ñézÃ@Ÿ¿/8fCã–¶áQ‡ªj+k{œrô¡ÞE±MÜÚ°ÇÆ‚!¯&"Íæ¨(Š+ñk!-8¶ãpˆº­Çä¥ô“æ³›á±ò RÎ÷kΙ1o·¢‹c64nSëGs*¹ª.O{—År?ÛÄR¸è-O{–…[² ß(‹‹‹‹‹‹Íž^__o=?ý¬óÑ Çx´ÎÕ7oÞT©pá®ÿ.ùï9€Œ—ärär€\€\ËË€~q ÜçÝ+vD7/5§æËqù|ôC¶+s,ßùë5§æt…y,ÀÅ;áxù˯Üíd±ž–g•ËEä÷oªõ_ù³Uê tâäóXþñÏ^kýS³¼aä¢n·ÇÂíŽæ ã<ÖlÃùï÷”{?ëf'æÜn÷\¢dï+š+ﺔ˜›Kìê÷6 EÃ.¶Ô}¨¦ mëÓI)2är‘ò³ïiøóôȰùKõtÝN¥Òét*öK286oÆÁó¡(®…L&“Yp)Ê%:IgÝlû ¨êvqWDDöŠ;"’Ì–£Þn±0h¿®ÞhÛ2bÿœtÎV.ÿO?9¨ÿq:•§ÚÆŽ@įªÛñ;yÃ(U Ùæ¢î¹DÉ0*ñ"‘˜óx<5cº•q÷h®z25ŸK”Ê® ¶ä•\ÔÝlð¾²÷ÜÜÜÑZÖ½¸ÝÑûúý-©ivEqm¾áãåý–sîªVY›]sì–ñ×RbÎ}²«Î¿ˆ$³yÙÛÚÜVUUÕ²y‘|6éq6ëõx¾½<=–Ðê¬C ñðZ©.—”sÁ¤cf%•N§ë&ó± ¦ª¾pj#4Z[5U fG2™…ê-Ù”P*ì3?{X×­9œš±©xAüæU…úV{Ø'"â1ÈǦâÇLxÆ!É`,ßݹ¼nÒuÙ)– c·Xðù|fL7ŒRqÇa¿^»x}eÅ؈øt]×}‘€«ù¹CCmO_ëÞh-r³s®n.ÿéÁzPùýcc#"òêëo˜WžêÐÀðè®›C¶»E¨<¥ë¾éñ°Še~Ey5û`õvtÝ 8ÍÇuݹ5>`.S(OÓ°$àÒÖfAdÐ>Р=†Q*Ù¯7ßKÕ4Xfz| òÙ£ÒìV‡cÍýó >HTÅ÷`²Ò ÃÈe“"2hwÚEÌ„Ý]õf‰òÙ¤$pôyiok³êT´¯Œ4,ÂÑÁæÅyçõòõ¦j!¯×ãñx½!MU+g³õékÛ[ô¨K:w ryètó÷ßýØÓ"òïþòžù õ©öÌY3îKF©¸Ó8+W%•RbÎí¶†›îí mŸ=Ÿ–T¥¨Àê쮫ÛËÓ^¯91¦ÞÞÚŠ¦ªþHÕh¨ªj!³uBÚíÔfUÕ²±lÒ?â”ëv‡ˆì·Š…A»­6ÏuZ4ü Rù~…O×ë"{³ÓGÍ —7÷ð@h ß_Ol˜T~Úo"ŸÕTUí6EQÛð¨C Åݽ­ÍÁ‘Öc{†QZ Ç â˜Y© 7Ý0Óç©tÚ’“Aš§dÛÄR&öé"bcý$ކfV\ŠõX*™ïƒ£æsMÓü#Nó\¨êöò²æqò"9{§=}àÑÎå‡úÃÃrýÓWSæŸÖŸv‰¶j&†”GÌ“Ù;ÅÁöY°ÇåO²SÜkø¬kÄ/æ×Í©½Ý·d§¸WõÙ£» ˆøt½a Ï߉³¡ñšcQUmemïÄÉpH×uÝgÖÞœVTž8ÑieŽFÙ÷Zt¾ƒØ¬+¶8}÷F©?Ô€«ŸËÍÉ*Kß\_úæºuúJëy,ÖùµIÇìªõ{if0OJÛX~t/-8¶²ãú{€tÈ6±ñ–§½ ocb&c-äÍŽDš…·nÉfxÌÒLF—6ɵ\q̆Æk½9Ùœåbm¶mb)ìÓ·—§OxcxsQåc€ùg“O>Îçf‡ê*£(¶ñЬC ËÓ^Rà ºbëÓ×Io´}˹Hü_Ô€Ë@Y\\\\\löôúúúäääþþ~Íã/¿r÷ÿo·Þôzòµž¶ó¦¥ÄüT¼àd\}U£nfÞ¨.)~î†Ñ¹ûï¼ûÑÙ®Ìá|ç¯K7o?ôFj@Ÿh–«M7oÞ¼vòM'_ëeÚ0Jkáø¶ªöÏ„æÊ} EDwÌ®˜i z#8+'Ìå] „wBQlK™‰~*yƒ¹…s\ SðÈR)pá®Qô‰ïüu‰"PsÈåÀEâ{Ô€GóXr9r9ÐÚÏ/¿}û6e.2—ONNR#à‚sy³ÿ)@1¿ — —ärär€\€\ËËr9€SärÃ(%æÜ'š3ŽÌEÝs‰’a4[ÞíŽæ=kY,u·_ ÀùãU@?ærE±ßŠøt=Œ™ï¦F)1¿b_½5nS”+äï,o«ªªeó­7ëZÈd2™Wø8ŠbÍÕ¼êƒáUÀæróÝ4ñ«ªŒå #›*N7y{6ŒÒÚÊÎLxfHד+k%èx+%æÜs‰]ý¾uäÌnóx<‡á4à⣹m"4ëPUmemÏ0Jkáø`$àâUÀÅærQ\ aŸ®j!¯7$MÞžEDòwâƒÓãÎáQ‡HaskÏ:Ü>Ÿ(F.:UœÎ,MXc½aäbSñ‚øÃ©T:f8 èã¡™!½G£áø`dÁÅ«€^ºÖúéõõõšGžyæóg âK“âq6^×6› Eu,oooníMLØÅXÝ™Š/O{ãC3«·¯¯ªZp¾jzL}cœÞäääþþ~ÛW½¢ØÆ§ýË!íõ×}‘ '¯zNùžÛ].7×·þy¼­|VSUU´`l$³àj°fþÎòö¶L{—(ln•ÆÇmŠ¢Ø&B³›ÓËÛŽÑáú 0•·ðííåiï²/œ2GæjZàônß¾ÝÅ«Þ9âÓ“É›ãU@7ï¹Ýåòªwå#†‘‹%¼‘’ØXH EGR5µËsLWR6¥üçüT¼°¹µ7>aÃ(mmDÔB<œ¾e.Sõ&m›XÊLä¢î¦&ƒ±‘€KQZ|¼Ð['x¹ñªà4N2¿Ü0Jkó+öÕ€KQœª{³Ë߉NWÞzÅ6<êPÕíÍ­=ÉǦŠÓ©•‡âS±f_ð27.ûuNÐÿxÕpž¹Ü+N—‡»ŽïÍ2¿V¹“qyŽésUSH†G‡tý¿÷Wÿóœ;;²±àRÛÄ­ºuåè®ÆÇë %Å1jr/6}ƒW=§¤,.....6{z}}½õüt—ZýkœW=çóžkuóæM•Ž\ËËr9r9@.`ºF Ðÿ^~å.Eè­ž–"@.ºöâ>Czeÿ±Çã€\à"½üÊ]>ç\½sJ¬¸"€\¸|ÖªàŠ€KŠï}®®¸¤º/ºÝšZ›ãuÝ÷RúÉ·<_LŠ?²p)JOšeä¢Þfn¿‡›=y{Œ\Ô½®üòÚ¶*"º>4»zk¦F.6<ý±·Ý޹€µþ=©Ìm¶›½gGºØÝÖ‹¿vï#?üÒpƒGZ<€¤ÞQRgö €K“Ë2™…& òF&³ÐÛ¸Lê= ú§ÊĹèX0ùóï“ÿ§à8Šã¥µùXîVÀ¥¸zzì­UB³ÙæàØŽÙž“×…dñš†=7»2íõú©—«ÀÙùýß›j½ÀWþl•*¸X=˜Çb¹¨ÛívGs†qü{.êñx<Ï\¢d”sn·Û=—(G«”snÇc®UÚ4UUU-äõVÈEÝæÝÑ\í~sQ·;z_¿ßv׿*ž#ÑœaÝ]p,VӘʇãcŸúÿ[Dí""Šb›XZ0óqWÇ^Y&‘˜óx<ÖšTï´i}LŠâ Düªº¿“ïü¸ÚnÖê| ¾;~+ìÓ“ÁXUÛµ­K[/þÚ‹[Öß·^t:N§óÅ-ó‘_;ú½ã,Û6—üµ_;~¾ö‘ˬÒgZt×Nþe8÷f_Ø®¯L ¯žü³×ZÿtÒù/݉»¤=í4Í6ŽÞ’ºý' ¸"¹¼ÁFU-˜I­Ì éúöòôXXB«³)ÄÃk%Ñ|l*^pÌ„g’ Æòµ‰s#âÓu]÷…S©LfÁ¥(¥Ä\HS}áT*ìSµÐ\¢T³/s±¶»V×B&“N§Í’ÁX^œ•Ý53ÎÇ‚šª~ü7?9âUÕ‚có­_çmÝ\fSB©°¯¬ëvÚ´>Çœ#>]—d6×ñqu´Y9Ï‚;GüªªµnÏé ©j6KâsŸ“[ù|þµù7ËôGÓ÷>òÃæ_û—ó¹JŒn½€uk[/šKæó?,?XÿÈå¶6?/8fVRétzc#$áØ¥xw7;^¥—"òO~ö= ž6© å—´ó_ '~ F.–1ßtjÞyG7—ëº/pÊ€}ÐüýÖøÀ€}PD Å]ÃÈe“"2hwÚEd§Øúec¥­Í‚®ûFœå0ZØÜª¬RÞWg»>f>Øþ^*k×B&ìÓUu{yÚÛâC|' Ðußôø€5X×ü³ÒU}¤³ãj±YóÒDeý¼ nÖa§¸'Îþ!NÌ;­æ=eõϾð­/ ‹Èû?ðKÿÛ|ñè÷.¨øÅþ³Ä½­Ö\nÅ‚Ô_&2Ÿ:¾¢rtñÄza¤á«©ÅåšÎ/7U_~)o³²ÇRbÎ=—Ø­\ÌéòBVÍu›/Zðx›¥ÄÜ\¢t´‘Åi¶÷ú¢1Ê~ÿé'õ?N§³òTõâ»-:¿ˆ׿ëGdk.3Öv ÃìžåaŽJ©ï 5T{Ò?ë\ÿ’¬¹(ZÿÞdöd÷ÜÜ\£6tt}»É!trÈõי뛔ç‚ëøM§æx4sy‡cê!oHSÕ^6æ¿§x¥™ÿfyÍ]·Wµk×B&•Z™ÒUU Οí§ðNëã°_ïæ¸nÖ¼4‘N§2ñE¼Ó]L˜£ÑGnMtô”Õ/}àý ï|Š÷O®|U>gåRÿÈåÖì2Q)1L–‡3™…êš #õÁ±“Ë5Ý_~¿ñéz28Ÿ(F.:UœÎ,MØê>Úur!«Å«¦“uÅ6<êPÕíÍ­=ÙÛÚ”Ña›¢Ô7»óTÝù5.´õãŸüø'O<ñôÈ•ßEäõ¬ùgÍxm‹k¤åkžæˆìÑ5ÏúËŒ5]Bö¶6 Rˆß1;@¥‡t²ñSöφi›õ®š‹¢–ÞÔTÕNm„F¶¡íõí‡Ðúr³²´h’䳚ª:fŸã¢Èåm]·;ê³`›å†Ñ®3¢QZ Ç â˜Y ût½Ã¦Vÿcm3s@Ï>…78–Îê“Ïjª*ƒv›¢tv\—ý" ~Ò]\´á/ÕNƒ©äkx™È¼¢RJ¬ÒäÂH‡WNpùEQ\ÕY‡–§½c+öUËÅœ“lùtëV6KT[ Î.Óµ(Zg×”Ð$—ÿôàÇ?=¨üþ±±yõõ7ÌÇ+Oµîü•.1=>P>¡Él‹ËŒå.±¹U2Œüø¶ªªª–ÍKãÒdã§ïŸõi[¼$k.ŠVþ1/Ù¯7èÉ•UZ_nmq-®!·¨y³&•ï14 çƒ\ÞÆÑ‚¶²¶×ÕòÙüÑ'àFc ©º4YCwŠ{ vmUÕ¾—ËE+Í@|ª¹SÜ« ÖÝÖ§üÎñ¿ží«ó²ŸwÁê0 y®Ñ÷g4¯»LTwE¥³ #Ý\%kÒóíE±M„f"rŠŽÚ#GÁ"/»Å‚ÄÙEqήh0=8ДG~÷cO‹È¿ûË{æƒÖ§ÚuþÖÿÖY˜çËì…â®ä³IÇLxfHד+k{Õ=äÂ@×®~”è g¢i“ò±`R³¡qŸ`A.ï„mb)ìÓ·—§;¼7ˆ¹¼òzCšî /MØNú‘À¼‰[Ùq˜×(cy•ÇÛêã D|ºþú[J $á±1Çã iúÐÌê­S½à7ÃcÞÖpX¢E}*Á½ÞPÒ1»zô…Ϋó²ŸgÁ¿‘M6«CTßA¥—[+ߪÅùÛòK_=úÞgí#WAÝe¢Ú+*\éö*Yã÷r4~/…xøbo¿P™üe“þó»¿L×Ë¢¡âáþо¿žØ0©ütÖù[¬*ûõš.ávŽOûE ›[kÇ=伕•Ψwúr멯_ `¬—еnWPêîØ]ýH'¿—ÿN/tº‹†Ë×,ÖY3Dq-¤ëwl›XÊL4M–«³;SÁyûjý2ÝûQœ¾uËú`ý!×o›¥wx\oö| ^JÌMų«æŒ¶7ƒþÒ‡›<ÒáSmïv~©v§5\nѹÄsæGPó²Æ5lãŽxa§¸'.[íÀU±I¸u,ok+kϹNú1¯Ù^ò±©âôFêúÚüT<>³otý!Ï OÉäNqOäNPSUÑOØÄëv‡È¶¦iþp u³Ûî½¾h½úÌÑ\~x|RÿôÕ”õφÙ.6_¬ïü->»š'+›8¥ê2£sÄ/š¦išcfŦ(#~UÓ–—·3ÏcÿÜ)î‰s×z‘¶»—¤ÙMÓ²ù€d›¶¡yZBmó:¹hÚ¬IÊùþ¿"@o©” ý‹ß6q|  LIDATk#2xôeôŠaäîÄ#Mÿk$\¸f—‰lKayº|Ÿ¼8ë/ŒÔ¼^º½JÖøCrõ^ÝsgG6\Šb›¸e>{¢ïd;Ÿ+_ÃY±Ïv9ª]e`xtH×Ës^›4»¾8Íö~ú¢¡Âœ¬²ôÍõ¥o®[§¯4œÇ¢(®n¯‘6½ÌxÝnv‰ÑáódÏ Yþ<¯þY‘¶ÛÞe^=ÖBÞìH¤EšÕ¡õ!´¾†ÜU“¸m.wæ\\\\\\löôúúúäääþþ>•Âzù•»/~á3Ô¡W¾ôÇúâ>c¾®ë_ã¼êy\¥^©Ï3þßn½Özòµž–êµR)%æ§â$cÞ‘ðt£3=¹ÔÃ&gªõ;ìÍ›7¯Q#\ ûûû/¿r—:8áÛaò5Špú m~wYwÌ®œ4 è9r9.žö±Çc8À‰ÿ ¡§tó¶O¹M¦’ƒ\\ ¦Um_#\Sr9à"qM È倾À5%¸ì¸O"@.@.úAûùå·oߦLÀ#…W=}—Ë'''©ðHáU@?ær¾à6/8fÂ3Icù£ƒšªú©ÐhÛ…EDUµM ¥VfRˆßi³àjh3^¾¾¾^óÈ3Ï<ÓpIÃÈe“"2hwÚE ;Å’á½âŽèúýºÈ€}P¤Ðja]÷MˆØE Él.àt6ÙHÃæýirrrÿ„¹Ü\ßúg‹m‰ˆªj!¯&ª*…â®È€ì "2hèdáfšn¤¦m@º}ûvë:š_Þ:‹¹nwˆ^8žY."ÍošÒÕ§lÐïz6¿\QlãUÕVÖö,ºFü¢ªZ6_ž#Þbáæ[n¼€\nÎBñz<ÇcÞPÜ6±öéÛËÓ•GDĈøt] y³#Ÿ®WVo¸p3Îçf‡m¸”ÅÅÅÅÅÅfO¯¯¯·žŸÞ9£”˜ŸŠü‘Ì‚‹ºà‘Ò:Wß¼yóÚY· rëqѳ«'g¨qæ¹\Q\ ™Ì•šã;”¹¹ — —ýá%°zù•»Wøè^xþY ûž…~(þö½+ß/¼¶rùYyÊãïçæ½™N~öSŸ<ÁŠ_ûú7(ì#{zRüËÛ÷ú¿^öÚÈågåÆãïíφÝç]yÏϨ–³pÎÅ¿ì}¯Ÿ{àÕ¨-€\þ(âý›³ÀQS[¹}ðþ}M¡œŽšÚÈå¸è÷oÆÕ8 5µËÁû7Èå ¶€>Ê冑‹5õø½ÄNœùØX0)þÈFÀ¥\â˲5G§ëC³«·&l}qD﹦žÅ1Šˆ®ûÎúÄFim~jy[=»ªžxfA*½×ÈE½!­YYzw´¶¦%gÑ·ë7ž‹ºCš*"º/œYpqßëÍ9:ñáKdcÁ¥XÉŽœý?Y­ß«Ú.¯Ó¾èº/œJ¥Vf†t=Œå £osvÔív»£]µ°rt)ħZ]ÍöO¶»=<ÐOðÓúÓét:Îdº&]©™ÆâÇÌJ*Nol„$Üã>sš](Šk!“1‹`¹X0i§aYzršµÖÚ’ž¿ ¼ÞõØ©”˜ iª/œJ…}ªšK”ήï5;ê3}ÕÔèìzûº<й¼lÀ>Ø$xŽDsÇhùqó=Ø0J‰9wåϪ´—‹šKÎ%JF)1çv»Ýs‰’Qyƒo¶b"1çñxÌ…+êªÇb÷õûݽý×Ýqû£9± «©ªøG¬Ã{fH§Ó5£é¥Ä\0Y*3Gó±©xÁ1žqH2ËW½wfGÌÕ·—§ÇÂZuH!.¿¡¶XqSBåqî;yEq6">]?á<|VSUÇìsæŠõ#‹5Û¿¡Þ¨ß]‹ñȶ‡Ùâýû©'Ÿhñs²÷ïÖM=MaÅ5âUÕ‚cóÖOͺJýËŸ‚¦âñ›Ãü5ƒÊÍvѺ·³#ÖíX«éxy/ÎB‹Ö6(NØ'"•WY³Ã9KP6?…Š»í²coºîEt}xÔ¡ªÛf;öŠ;ŽÑa[ÝY8iüá°OÝ^žª[¥íë´ÒZ¿l[téNrùY¼®W?—›ŠÞ¦ͬœmǛ͑¹ÊP™³²I´;íƒ"²S¬„Q]÷ENsu]÷EnXBCë§ÇÊûMfkÞ;Ÿ$`ÝXP©ÔÒ„Í2²èqŠ8G|ÍGG6^«õa6xÿ>0*?ë÷Þj¶Óõ{oY—l}ŒÖk­›zʺ2aŸ®ªÛËÓÆ¡ë.M4Ûc‹ñΆ»hßͺԫ³Ð¦ Ç]¨<¯Æljýáì‰ó,¦¾\àQ éz2›‘Ý¢ŒÔ×ääEpVf†T-dÉîèuj陽l]K”³]Å\^™œYš¨Í2¯íVÏg5Gæ¦Ã¦ªÍÂhËXy’;?ºÕÙ×{ôþ]×þŽö{²µÚ«=<Ô¿þ^ý2ßN¯ÃëÝÇg°œfzÙÔfÑÜüF‚5[7ê*)Š+°:;¤ëêöòôñyi¿‹Þö–ž…f­µÚ[[ÑTÕ©º(q¦ÿâz`xÔa~‚*wŽ?É÷ê_€ñÐÌž ίíÉë´ó.}¯kÀ£˜Ë[½-¥µp¼ Ž™ë|ÖëvGÍ‚×íŽút؉¯Øñißñ•èºö;ì×;kj÷kuôþýðP_[ÿ®uµõïžbj/›Ú<[ÛÆoE|º~té£aWi¾ºmb)“ ûtiþ¾š]ô¼·ôö,Ôµ¶6á…ã…¡™•Ê-Dz}8æIß)î‰ìwšŸôóûêëo4\ ÛªvÜÔ. k¹håÛ{æwʹ§AWiˈøt½&95Ûʼn»Ù™ž…æ©’¿/8fCã-:ÿinfr´µíâ®Ènq»ùI?㣮y™#æÉìâàˆ³“º-‚yíÅQ(¤ç¯Ó®»ô™¾®—Âþ¿BŠâ DüZH Ží8¢nkÁ1‰l\K‘¢;4í]®Üzb)\t‡–§=ËåG:œíkëxEE±‡f7§âËÓÞ¯þúÎÞjUU y5ÑÅ17ß¡Ë; y5Ý6ç[·×}‘@ÍŸ®Fk46$ûæ·îµx¶s¶nšÚUaÅçÇÆ¶UUDô¡™Õ[fUt•—ÒO6 ÷•Û®[ÏK»]tÑ[Îí,4k­5Uš³¨UuyÚ»,–›©×N³r5.ªª¢…¼ZíÖÚô3=j‘Ú‘s`xÔ'%èè_€NŠPÛÛÄ­Hq,x’Îßí¿~­›wÖ¯k@ÿS›=½¾¾>99¹¿¿ÿˆ”ãåWî>åñßxü½ýÙ¼ûï¼ûf:ùÉÉçN°î7nßyáùg)ì#xzRü 9j£”˜ŸŠü‘fÿÏÑÕè—÷u èJë\}óæÍkÔèÒ9d䌳ðµ9E{[Uý#Nj xË/ŸI¥œ…«ÔŠb›XÊLP[¹ýûþÍ—½8 5µËqñïß:×»9 5µËqÑWã,pÔÔ@.ÜçÝ~nÞåWëóÂ^í³Ð“â_ö1Ý~ÈåµÞL'û¼…ií[–³p!Å¿¤}ïRôÀK][¹¼÷¸0…¥ø€ ¡Ràµ/¿}û6e.2—ONNR#à‚sùþþ>5ÎóËr9r9@.@.ÈåLײÙ,U.P6›ýÿ¦y ð›?IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/0000755000175000017500000000000012165514774022276 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/20_jdbc_trans_isolation.png0000644000175000017500000005047312032647166027503 0ustar ebourgebourg‰PNG  IHDRµ_FÅnsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ7wÏ IDATxÚí½]pç•ç}ºËïE.¶í(€$®$V ËÞ}CžEDÙE‘„v" b–Æ¡‘×UvŠ| ŽË¸é¹Ù !ì$YÂC †?Êk˜Sa1.PÜ+ƒ_c“ k„3[AÀYÊZˆG¶SNª¶v/öM÷{ñt7ý…Æ¿t~å ¹ùôÓç9Ý}pž§»ÏAÑ‚€ßýîwèA9mmm4zADŒ‚ ÚÜ¡øžÏÆzÃiðFçBNŠ"ÿËÒÊ0ÊÙ‚“>+EÉ÷R4ã<‘ù§bÇìxÃÒzý¨©µý®BáÌÖ¨u^’ŸYŽóœŸ=y¥ïÅmÑ.t2‚ù£éÝ ‰€Û=žåÚ°LÏx¶|gÇûúúä·1ég 7–å5ú©µýn¸QÇ{zzzÆ·Ó¼–z‰çK3Ã¿Ž·›“Ìà8üÇYÊ)ÒááöÉ ¿•R7ã³ãn†…ôr6äpR_J ‡Ó@ÓÊÄ3;ÞÖº jl¿;¡(çÈüüHë‚E˽´YÌgÿÁVŽh:Áü±æ+247´q4]ˆOç´9º<ööƒ›ŽhšóDæ/øåó>rm«§EfÚ“T¢¯¯¯¯¯OžPÈS ¾”’Ú ¥JëHêq]sÌÞf/U_þ+{ƒ.$î@Î)Î ËÍàùlLîš Ϙ aÛ0jãc5,í/nJ}Ñ,ãv÷õõ¹ÝxÞLf.ø­Ò4  £ÝRôθ½”:ÍÎÎÎÎÎF<Êd–¦Y†a9[0™ÉÌÎÎf"€ô²”J7 ýÛ‚I?ÅÂ,MK;ÎÎÎÎÏÓ”æ;ÞhÅ Í„ëÒꟈÝ «nÃG;ý4lïè´¥ã–éþH›>n6ôTô_^=p„¢žt˜•FþD–èB!pÇ…-U»mÈì÷’¶£¼^o:–/@²ã샓â@8_mé€x2ÀÙlvŽ+Ðl¸ÎÏ>±ÍNF0”O›—Yš–¯*jÏ==‘ÙÙÙg•d[0)}bH9G2™dÐÆ)žt> 3nOæïÒ´‹ã<ѹò›êMÈŒ*ûWd(äõOõ„WxçÉt·›½³^F4Y5ç‰Ì…ºô|B ðU[¬”ïÅÙ‚“Ì }ŒÜ¶”ë›÷ôH³[0)¾šƒ Æ‹-¥™á0åD–5¿¾G=D[[›Æüš³Ÿ½ƒ˜c³˜Ï³wB6)Áù,²ßòG©7…¬x&c°f‚ {+Äøˆ ¢±>.‚ ˆ6A0>"‚`|DÁøˆ Ò*Êï?^¾|Ý ¢àìÙ³èAxòÉ'•ßÏ|ñÅ;kÓOÞxO ‚ ».Ü%Œ½ð,žAv–ó? âóAm0>"‚`|Di$>í„ñ¬Bj}|'¤/WÆ:ÇV„t:D:;Sò6å?‘ÖÒ_d»Tü¥¶6Û7̆úhh +cdÇ_6Řm/‚l ÚÏgÒáX×î*QåŸÈº¤ûëñ¼›<{¨òO+cçÆN¯Jÿ†‹«9—ñ}ZµM cÄ‚`*¸FW]vÖÐ@VÆÎÁ„¸û×W]»}¼²³ókšfÃÃJU<’Zö‰“lìéÏfÇÉö¡T‰/¥†zzzz†R%^Ü·”êéëëëéÏò|y¯:ÒR×èêÅã?NªR×i¿t;.¤üGïBý6BN*KÄVÆ:ÇV6¦‡CL_57ÀÆT S•Ç•7þVÆ:Ï]¢/+gÇò™9tb`Œ`s`jjLÛTÙÆ©@g§p ±‡¨g¼²³ñщxèBb V¡ÞGQΑùùÙÙÙL2hã¸t¸¬™GÓlx¹‹l/$½`&í—¤Gs±xÞŒíÇrZí:íO-¬hĉӮʇÇÓÚAåÜÚ ïær¹w_X;Wq©s£0¶ºšûÅóPŽÍ7¦F¯Ws¹ÜêEv_{\ظ:úup®^<ù¸ª jµºY10fÆVs¹Ü\NU9BŸ««£.a¿Õ\.gâuŒAv:G(´Ñ,#_ˆ,ciï¨Ü ®[Ú;D­w i“/nŠríŽö ÚœŽ‘ùùJEéºI “u7iרLp!åž=‡ÎeQØ‘Lè9.›õ«6n,]†c‡AÜL¼®õЭîmãÆÚñ#‡@ؽÚêÇEiµ\£Ò¿«¢¹ãEíZ‹ .ÄÃÃí“ò»”ˆhhjTl4HEEì†Ô¿6n¬Ý,P¹4¹1èƒf„ÈF¸yý£.}ÛñSò³gNïÕ ãæõàHý«ç.Ñô÷‚è¿ßCQVßDÔ ùx$¹.®!ÎDây°“WSt<ØnŽóD2™ÙÙÙÆÓÆ¥Ë ÉMY¢9ý63EoœÃÇî÷OäV…h}øØý­;ƒ-Hý'g*p.®ær¹\nÂw²/ã#¡çÉA{>/J¹oóÐÑ^£¸!EY]Ývšf“3[BÚÈ󙕱Ç /\ÓµûeSÛsU÷uÚ¸NûS‰© ؘJ˜šWFéS®©¢Õ¡#ÇÕ!líF“Ýš”ÃîÆT"¥4{c*p.¥›xЧaãÆZ Æ‹ ;?¿B›Õ?-ö†Åpõ² î]·Û.°á^8?{ÒÌa¬þ ‘b“ô%€ã<&÷’‘v\"ÿâ¸3W“.ÕŸ8îÄ ïŽ I¥ktõâ˜Cšçj=Ðk㽸Ðù¸ã§4ǹXû›(‡Î&Ou:†éÊ>ß½èt Óâr±#•VÕyèÖ Ä5zq¡³ÓAÓ'žÞ×Å#ÁXgg'Üÿ»ý/èíGŒáN<ÿ‚?u®.®Ž6s¼²]”õ /_¾|öìÙÝP¿G¨O±1…±òÂ?²s3æä‘ä(Æ/ä6›\Óô»Ó²±ÎÎÜÿ»I Ž;„ì wæâ*Ep~½k]]Å“³“¸ð ÈnŒ_|ñVÉEdÇÙuëp×]wá‰AdgÙ¥ë»!F#‚`ýGAŒ‚ A0>"‚´Š;n‡AâqA0DÁøˆ ²#ókžÏÆzìðù­mprÂo¥ÐY‚Üîù#_J ÷†Óà%ålçæˆÄvBßÕˆ†*H"‚ÔsÓñM{£‚¾+EYýÊ¿³ã‚„aÏxVªô% ë“9”ï˜J õõõ‘ÆRzKÓl¸WˆÝ¤7Á¶žñ«ÜU  ‚43>--Žót94Z—RC K{"™LÄC³ÌPªT„!4 sHÓì"0™dÐùøtŽ¢œ¡¹¨‡ã8Î 9)Šç³±x^Ìy›¤ü… ÆG³SÚÒÊb^Ž.ÇåW¤Øg,ah¦ZæPÞyÀgtÓËz)¡\¶›¨Ñb Dd;⣨?#CûšfÍ2n†eMB¤rlG·[[–A¤‘øHQÎ./Ð4»œS7>Øn¯Ü`o?ØLc’9¤¬þ óóép —i~þèè´q\:<,=6ÉŽgy^’!\Îä–Yš¶w»¬Í›½ªe«S€õbe[G(êá8°·[ñ7‚ q‡f"61×ë 'îx"™ŠI†q³œ'rÁom®5 ™Ãè\È¡L}Ìàâ@<pÇ9ÏùÙ“Wú^^Øû ã³R9<»‚4”´Áî«ÞtðûkAjž\Ó4~_ˆ ¢"Ñ‚ šT¬?NMM¡GAåõG\¤C)O®åú…¨ˆ R"Ñ‚ A0>"‚`|DÁøˆ ‚ñAã#‚ ÆGA}yAF«¬¢D k(U2QZ±ªÐ ^ƒš IcyÙpžÏŽ·¸ø#9hŸˆÂE­8VSÊY*Ìîëë«£Ü:êG"Êek ‹+åR´[+‹`®8îvêÀìHÙpRð\ÐØnêŽS’Ù6ŽÃrëRÿüÚâê¶ÉÔ¸x>;‡n—E‘‰4D.åªÐYÕl/Qœ6ÈÂÔÒ¯ƒ‘ésé¥Kj#kÒ›Õ÷Q{Gå#!\ÑŠË5lÆ÷'×µ‚£ZçVóÐ&ÍÖÛ±†äv‹`quÛ.$¦IMîÜrÚÞí²¹áìì¬: !R®Š´Ñ¸ý"0™ˆ‡¦ ñiÒßzÒ¯2¼‘ˆ‡.$*ÿZÕÈ:ôf5 ‚ƒýd¼B¸ºg¢RÃVu˜¥iO$3Çtkææ Ûš[fi¼]NŠÒÛ±Ž± Èþ@©¯pùòeÅ–G}”¢¬¾€7Á°éå܈ә[NÛ»'+&×–ö€|åô-ª+Ž Ý>à³ty¸t:½œ 9•‰’\ú5¿^,ñÙ½#” ®ÌxWFãàúFvä‰Þ,ä:òùâ&€ÅÜAišeÜ,Çy¢s¡D!\o—„-®”|>Kµ oÀghïÈ Ø*®ÇÙÚj¯3ÝÖ>´žÙÀÙ‚“!‡¾Í[fÆ¢¾ldÆG8{ö¬ü…º>)rÁrÚÞ=)Ü |)5</Ð4Ð4p&ÖËjl¯qK‹Ò¯šÚ7\ˆ‡‡Û'ÛsP’»œ¸ÝžHfÄIé áZj>;¤ŸŽvK­»(­g¶”Ýó¼žÍ¦Æ¢¸fdðä“OÞ¡ùu­3¢ûʲìr ÒÞÀ¼UH”f"ñ<Ø“â@8m"»1Õ^C6ö`»¸|Å-­ EY}Ñbo8IÚ¡£«v#ë8(X|O<œǺæB¢­˜7Q‹¨ûÐz;šê‹ã!·ñú#™¼vy€eY2ת+Á1h¿^Ü—Ã:ÚóÁš¤_)Êš´çóùú³°š [Åu1vè á’ß2R²°Xu ’¹~û Ûº5xõmn­¨/‚ì“øŽ.ò(@ å E½4͆{“ëvP‰…z‡69XõŽuwˆ {²¾a«¼"‚˜§­­ ¿/Di|~ ‚ñAÁøˆ ‚ñAã#‚ ÆGAVqº >~òÆ;èÁøˆh3ö³èÙ¯œÿaçׂ Ú`|DÁøˆ ÒÄøˆÊ…&Xë[1Ú®×À¸ÏÀÔ†ùc!²íñ• Mà]u5·Ëk÷?zê^Ÿ²‹ã#*ªåsº•±N‡Ãáp8”iÞÊÙ^™nL:GgeV¸±tdáQ»O©CÌ(dGâ#*VW.„Šh—8ön.—Ëår§Î¥d çN“í«c0*´•±Ç¯Ws¹ÜjEZuú\;¤Ã¦g¯‚˜‰D¹ÒË9)<ª• å˜Q.T´ø,¤89¤—Õk‘rAX/j/}:BÉ fEfZÅHK{ù÷„ÏBÚä‹›Z݇‰µ‚Џæ½è/ÿÉQ b‡N=º¶@Ö%RþÓ.ãnôú<|ìþÔæ²“ù#€,re…ì‘D®Rj¨§Çífªê¨Ô×^1}fÈŽùâ¦^àõ1A—ËÕbZ}ÐJn^ÿèø‘Cfš&¡“k½>M^„syA¶->–U¢bËioÀ_©\LFÌ記m¯§\Èy"™Ììì¬AG” ½G’ë5T³5ÍÚò¢ãác÷+þ¡p®®æ~ñüÚ9Œ²Sù#*š}åÈuÚ_žó®ŒÉ×?úñãbÛXº|œÌª9®ž#ß¼^ úDdÄGT.4¹—kôÝc áYóÂéÊõÇ‹0L7?~=(®EJíËÏ WÖ*³G>WÆ:;‡ãÛ?=~ŸÏ HK@ýÂ:ùÉïõ)6¦£0–<Û”·WÆ7Mê AF’GšÆú= 1ÖÙy‰¦O<ÿ‹&´•…µGdw€ñ±!FWWG›ÙŸk4‰seÁø¸÷ùâ‹/°J.‚ìcpý±~îºë.t‚ìWpý±Ñü€ û9D¢ A4Ñȧ¦¦Ð/‚ ÊõG\SCÍõG\SCB$ºAã#‚ ÆGAŒ‚ Avk|”Ëêi n35)e›š¦ÂbãÆ4Ë{¼(»¨PˆÜCÞFýùRj¸7œ/‘˜›c ²’ÓŠ[´¹ÛDPA-vس›ä=žÏÆÂibçüüȃôƒ-Uo©·dÿÄÇÜt¼@ÓÞhˆÜeõ_(ß'Ùq13Ï*n­TjHž1ém}k©óÓ§Ã/ö†Yš–*«3ó–èR)v¨îÐx{ë¼ÇóÙ˜8|ÆíVçRŠÚ344T©ú¨áÍ_ZYÌsQîêòpéôâJÉ糈3Ö€ÏÐÞO/gC‡îöœ\r:¿^,ñ l­,æ¼f¶jµD}ÃÓ4˸YàlÁÉC¿Ã-ƒÕ8­Ç{z]×ãlí…8onIA©ùcnß:¼­¾´dÅG8{ö¬ü«}qH4eä‹›–º¬"”(9mQwÞJK‰ÏëuØÄ!7½«šÅ+Iâšš®ù–+®+Ùå<ùä“Úõ1‘H`³,»œ 9жÛí•ù†††µ¶ÛË+"”ªój=4Ã’ªÖv mñ^£HZáƒÉ@q œn·ñÓ~dÏaöùŒ£ÐÆqéð°´ÜžÏò¼$½œVîìÝ.kíÏ75u®ÉFA [~[VlQöР%U;¬ã@­öž…IWd!R¾xL¾Ý\ú¹}ÞF=)«b.ê…|"à&,—»„DHE³ŒÛͰœ'rÁo­ÏMÉi«ÿBÔ+´§g<3h‡|"àV¿ˆ×,KªvXë¶Á{àE=Ç2î宨‡ãäÑ™x,Ù>(ß®¯j­ðmö6‚ì6PfBVóÞèüˆ½ õÑÖÖ†ú3û(,Šo,gœ 9Ð'Ò÷Ñ\€rŽÌÏ #¤I`} AŒ‚ A0>"‚`|DÙ^ðù5Ò?yãt‚ñA´{áYt²ÿ8ÿà ίA´Áøˆ ‚ñA¤‰ñQ”©P!zèØ‘nå<Ÿo’ aKöäòê£ìc‰G“lL:;ÇV[WƇÃáPýAö~þHÓ¹ŠQBhœæjnO¬‘Ë*n‰GCVÆ:;GáQ¿zsâØ/r¹\îÇ"‘}í6éeA$¯”J®ÛmbA…rôx–—d¥ô°”"|ª°Ë†‡gÛÍèí‘c ¥J|)5¤Jo 83\UQ!à§d q>µ| b—})ñHv^©²÷ÖÊ"twK ¨$=©Ô½³ø&¢±\6Ÿ(æ/øUÅ¥½‘ˆ‡.$b5èÛ½=r¬B"ÐfrÐùx¤gñ¼ˆGžöjŠ#‚LÀO‘^©ÅùŒå÷¥Ä#Ïgcñ¼˜ו„®,¤Ž9$þß¡#ÇS ‘ý5¿G—‡ãò‹+%¾´²Ý®v62ÙhŠr†&…ºÓ½ÉvÝB„ŽP2h£YF¾iŒ ·giï ÿžðYÈqóÅMY›€ÏBl&i/ ^’8"¬¥`ª!àWçót9äc¯{±Õ¨7ÁZ2 1I×Ü®9 Ò¹IY®ú,‘§ùÛ8[G½ÁÑ庘ŽMÇ; %S2s»¹¶ eõ3ƒv0–%±ø˜ K‡‡g¶Z?Tšeˆ‘²`ªƒ¶8_½4³7Õ(š ñ¨ù³q]HÜnó?cr[ÅGAaŠeYoåRÒ½ &#rm1¯|âá Îçi®ÓþµâÿmÜXóŸvám‡ì³øW·]s}M[v9(æ„Ŭ£ûJ˜ŒçóyY 1¡·gÀzqKÕƒŽv¹â`Ò\šZŸ8ß>–x$Ê_`o·Öþ¶ëôñNmlLþø8†Gdïp‡ù›ÓaÞ/䆕Ñ-êe6Ü»n·]`Øó?»÷ 07â¤üÑ¢›aÃÃí“>½[‘²ú'¢ÅÞp9ÐØÓñDÀm z¸x/-FzZ¾¶hõ_ˆ{˜D /äÙ…±8‹Ðžq³&Åù(«b®=ÖNÜ ðD2#’Ha½Y%…“¢¬þ Ñbp'@Øèc≀;ÎyÎÏž¬{\‚6`d|VÊàaÚÊXç¹K4 4\r\â¸3WG]à]…1‡Ã'ž7‰áÙ; ~!Ò?yã¬OìÏÉ5Mã÷…‚ :!]€ ¢ ÖDå‹/¾À*¹È¾×‘F¹ë®»Ð È>œ\Ó4æHC`æˆàüAtÁç×ȾõAô§ØèAŒ‚ 5€ëu"ÿöŽà‰dFœT¤Á+¯Õ¨î™Àqžó³'¯ô½¨h¿«Ø˜ <þãã—…+cŽáKpf"Wñ‡fmGÌw!¤šŽT¸)j å’ÙˆTŽ—ìy~pûË/šV°©Q_¡YÛãã®FV´ Œ·×ªL NT•dP«,È;¿Ê]Éš¨¯Ð¬í‚ñqwCj©y»œ¥'`` lÐÐù«&8¡'É`Ò¹ªD]“z=}…fmGŒ»Ö}4˸Ýn†ålÁÉCOÀ ¹‚ Š ¾à„$C}Æ ¾r[ÏgOV´ , ·}Û‚8 ¢$Ã΃ ˜?Þ¶è 4Kb¡{ªK2´Ð=}…fmGŒ{=ƒfI,ÔmZ’AËH=e‹²`ß<}…fmGœ_ïô š%±P§=*IMc4•-(Ê* 6\üãêFõõšµAZ—aÖ7Cõ};¹F}A݉.@ÑבFA}d¿‚ëH£ ¾²?'ר¯€4fŽίD|~ìKP_ADŠ.@Áøˆ ²£ñQï]íÚ®¦?ã%»%]Åú¯uôÓ"vÜ’ªð|v¼vójÛkc*ÐÙép8G§¼Â÷ÊÙ¨,úݬír;ç|)5ÜNƒ—Ô¡™›c Ûñ˜¸‡b(Ÿw»™õÁþZë6R”³pq»Ç³ÕlÞ˜ <~=¸ºšËår¹Üª$Aƒú ÆÇªy_ïpr]·¶€Dn:^ ioT¨´HQVÿ­ê~äYg__¹É¥8•J ée£šÿV´¯åí%Õ-"T š§m0QM8}ú¯Æ‡Êb |)5DzÒ”±=±pšóD&|›¦$J©¡rª>¾é›ˆxuƒ¿’¼ü軪Y¨¯€`|Ô…TÊòD2sL·~ ùí½œ¡Þu•c)û)k]©$´hš]&“ Ú!ŸÎU÷iñÐt¡†öbÿšBz'ª Ùßm§éÂâÊl­,‚XˆLoP§À+ºÏX’ç³±x^LÕIÉHG——¦Yõ©‘g7ÖŽ¹©žÿ¢¾‚ñQ?1,®ÇÙÚ*E¬áO¡P_¢jÔêèç ø,ÂöôrÕ9¯ÐÞÑåá¸Úë÷o`° š Z/nQ„ŽöÊ"ß:.Õ:å_cI†r ž“Nt IDAT);Œz½¸}…›×?J[8M&×§:Sxw!!¥ü•÷µf¶Å¸VÔ¨<ª~ÈlÑM6îÂ`Èø¬•[NWõ¡³ÉÓ äùÌ(ŒÊu‚׿íp8ß®xÂݬíÒº °¾™‰ë §Á+—rÝcC(¥†â08Y‡îM)54‡ÁÉ ¿Uc쨯€ìÛäõn—ŸA«b.ÚŸ®ãû™éxGtN;8"Èþë›™™;GæçGöÃ(œÛ³‚`|DÔW@öqn¸þˆ4ê+ ûÔW@3Gç×¢ËC}^t²ÿ8ÿCŒH3xðß~ €ìÃ)6ºAã#‚ ÆGAŒ‚ -ŸÏ4Ï—f†âù~š- 3ÇÙô¾ƒnÅAÍr.7R޼X:‚`þx›‘›Nh3ÕÃêçÚ)a2òI¥XC³ºåeɇL„hHµDŒ·Gò˜\F‚6ŽK'5Ma¯«ÜUµ8dÇE¬ñ¬Nø5&Sï.—÷ÒS઩Âò«ÜÕú„yÉáH‡z2¿UeÚãã^JãŸÃÕmÈ-ÝôJ-ÎUJ 1,í‰d2Í2C©’:²“ìn¬Àe¾žåõ\g4^î2N'eÚããKûbð‚Q€ÔÚ}e1/Ä>G—‡ãò‹+¥’2£ÝÍ(p™ic<ï®É]UËë6K¦ Aš>Ÿ©?yL p'Ä ùÅ•’Ïg1»¿J6+_ܰ6¶»e;•¦YÆÍ‚¨VfÅË Áø¸G“Ç`2C%‹O±W¶ÌȃívyŒS©_=–e—s!§³æÝ÷ÛíÀåñy7‚ó뽟<Æ;Ò{6ò)¶¾È—¶8×rNP¿²w»Ôš_zÂd&wobä"–×÷^ôÕþ1©V† w;dåQ¾…¨h‘E@M‘/=q.–q»–óD4•a „ÉÌìÞ*-OÝj¸C=43je²`}\¤!~òÆ;õy±~²ÿhkkÃüAçׂ A0>"‚`|DÙ^ðýp¤ \ýÿ€`|D%Î¦Ñ ίA0DÓ þ5²/Ùú×ÿו+w,/ãÉØ£ô¬þæßÜÕV8|]`þØ –—¿ô×gb¯ÆG€ÿÞq0>"[Çþï“øÚ)<{‹;ÿqéκ‚~@0>¶8>~íTñé0ž½Eû›€ñÙÇàókAÝ?3ùÌ3Kªâ¯<*ôÚwOì‚ZÓ<íoŸ}5hOÝýÔºc³ –uøq†y9¯¡}òÛc_û—Ñ¿‘ÿÉþTâ%Û÷Öê+/}póÔ™ÈÀQŠ’zƒï½&5ãù3ÌêñÈÀøtõ•—–6‰ø‘‡Ÿ?p·QWjóÈ^m׌ ¾J{ÄÝOš±ó¨ÆåzKm¹Úo#å†xOÕ¬¼ñ\SÔLŸÒ. û5eÐ?ÆÇ&3ðúë-¸«›È(ê±p×Òjƒ)ê¾GοþˆÖÍÉóÿ‹x‡;óÚ[“díý¥M𦝬­ µ•ûT6àùOW/}pó˜xsÞZ}eò“TéŠÿ|îg?¾§Îühà(%ìuãÆ—Jv?Üÿôzî„OW_yé³)Ëj;µüO"ŽÒò#ÚáIÛcG4»Öñž™“|áí—ß¾ÎÎ ûuúLúÝüÏ~:ýÁO'ÿDϤ=÷^|¬~Û‡ ƒç^ûÚ?>û²”ižzîÕ”Ô¦¿ÿæÏ~ƒçôG^콇þ³¹óÌô á®8zí»÷ÂoþöÙ˜¢á6˜|æå% 8îÞû¨k¿¡( –bÏ‚´—pBnªÚ ÝÑ©ÌÓë\íù¾{¯0¨Æ î¹û7ÍN?ðÀàSU»ºñáôg4}â)á^UìUa÷ÒÛΞSKo_ùàÃkøîÓ·SÍgš–7X"ÝÀ{¦w_â¸c?t¢†>Û¾z7À-¸-Øëµ[í|ýõû¨û^ýµ×^{uì‰#<ÿaìo¯‰ E-]…g^{â(|2}ù7ÂýÏL=÷ꫯ½öÚë¯H‰•º‡Ïæ"±>1öêk¯½öÆ¡ç^ ây½ þgs‘——¨SϽúês§¨¥—#sŸÉMU˜aúUæw.B9„ßÀ½ßm½Á¦øÝ¿~P‘­¬½ÿÁWë<~ÿŸ¸™]/W²?õ­§NÒ›ï¼yéš<ñ9îš¾r‰‰þês^I©»âùײÀq'¯sÝ@¹ûñN;ÇAvõáÒÒ°S3e3²¼&U²yþpåÍ¥MúÀ7Ÿ–¯QTïsm5OÓ¾ùÈÑÛ@Fm?ÄGž?úî½›î¶VµùVÏÝÂöWåq3v~þ3õ︬žÿ쟯~pØr·c>û竟ðü©Î{îí<ÅóŸ\ýg©=3ŒB¿Ì<ãÎ †Ð,ƒ÷¼þº¬k¸Îè+÷Rðåñwn9Ÿû 1ó"©Êà¨ÿîMßøío?-ïs|à{ß8BÿjâýBy€G}¯ëަo,ÿó‹oR¶Ó°«–¢e§=Ë%çÄF¿/ß®é1uòX÷yþãÿöÞuŽ;ùõ“_1Ù'1iü-øÖOv0sƃÂùõNÇJiNJQÀ‡žßôßd¦oÜøùè÷.M¥µzøtëó&¨²õ)ÀÝ5DÇðGT+º};ïº}률â!Û~]ÜWï÷ðügó¯OGŸ{Ÿ,êž^æõן;Å™JëôðËQóV¨µ|¥¾u•yf:¯Õ M4¸'þì›ÇhúÊ/¯|Z^çI„Æ^ ½úÜþ㩃œbBGQ:ðÜ ¸þÁÏÿþsPn·sÜ,}aØ•4±][«oéFµûÚjž¦^=;µ:¬°¼&i¬<zÏèNù|î½÷®s¿óMUòXµÏ;O>fç¸koM~rLî³÷I*dj",qïwC§x^ =PÔ=ÿþÁ£7·>WÄù–ŠÆµ´ú€ß¬.QÔÑÿý= üŠÊÍ3×¹¦šc0×&Ÿyæ™g&¯ÕuoÜyòéS¹[ï½ù«Ïy²Î%­|éM)ê>÷óýn^¿Àó¿Ÿû=94‰S‡­w‰Kfz]y¨ÿŽ»öVyáï“™f|Âîóó¿çyñÆù µš“YmËkò˜j屪÷ô¨|èTcŸdIÔœý{}5¿¦¨ß =´ôòRìÙ›Guc)ö,<÷Ú×t’Íòs^Žö?ÓsEhôzí»'z™ÐÖ3/~ÿçâ£äžgú¯2Ó?ýþ4Jqˆ{z™ç¶žyùåï/ð§žczï©+Ö4¯zçšNØƒÍ áùï?LÿâÁ͇û+^1ºóO÷¼wýÖ¯?úý×+Ö¶¨»{ÿü{¥ñ·€¢îs?qëg̳Ÿ‘W~Gxçf~óá'tº:ù•/ßÝû瑯f˜——Äi£ý©Ä#¦±(q÷·^z8î”Þ´Q²S3u?ñ¯ Ë¿LQ$`Òô•¿{éŠ4-ýöØ×ÔûàçóÇ‚ÄkÃpÈ_?`Ü'yè4äßæË ùÂtŸ{ø‰*ö+6îѹöÎë_é?ý§/ýõ_ÿŸ0~_¸çh3Úþ_¢ÿýû±òí³è yª|›z?¬Ä݆<õ 'ÖD¦§Éå°‘= ~ ¢ÍnÉïüÇ¥ö7ñtì1îüÇ%t‚ñ±õwÚ?]ÁJY‚`|¬àÿëêBmнË/Wóop¡Œ-áÿœ<ùNžÄ3±G™ã‡®{ÐÆGQƒúׯGÑàüƒèã#‚h#ÿ¾Aö mmmñqjj ]ƒ ¢ü¾ð®»îB§ æ¡ióGävÉ·óËkAÝ ®?"ÂóÙXo˜ÕÐôœŸ=y¥ïEùŸ<‘̈S.¹Ušˆç½Ñ¹SPÚÉÆzÓšñ|6Ö»Ü5rÀÖÌð@¢@$mƒ“~«QWjóÈ^>KÎØà4(íw÷˜±Ó©!^¨tñƒz»žÓBŽœº¥Ì˜Š±œ½]ÔFJ&Ûå>Ñ‘¼óúnÞ6½Ãa|Dvß å™Ÿ/bEp¹"^ÊÈÅzÃép¬"‚䦚¦Ùå\Èé,÷©lFî™ÿ÷©xÞ.Þ´¥™áXv¢JW|)5<σ7š!£43ËM„Œ .”ìnœœðY`kfx Ü».Ëj; PûÁ¡u«W8mkfx žÇNΞ4 •c78#z»(ÜšˆÇbí¢‘#ª:|“7i›ô 8-Y>ÂÛٹij4“\F‚6ŽK'gJ’,lx¸b Àf1í”­þ #²˜¢ÝUn:^ ioT¸ {UEØ=à³REY}/MâÓ9C;›Š¥½£7Ö¿‹‰ãnÿU!ÿIE•çã#²—Ù*®€·KžñÅ;>‡«Û_\Ù’šz#]H Ärò[¢Ë 4͆{‡S%^#’©ºâùìr8ÎÓå¨sÝ@¹»£ËÃq^Î 7­†õøÁ(B/³4]¥±®¡þ]rË,MÛû›959p“ÃQž ŒÈÞ„¦YÆívyot~Ä)OûeuuÛiºPq+8BÉ f™ñlùêwŽÌG<MwOÏx¶,^hØUKѲ³&?HÛûúúäƒ3,g NŠs\uË:Æn¼ 9Do"™Ì¿Ṏ–72ð<• ÆGžÏŽ÷ôôõõõõõõô iü†ï@*žïé1>7fòùÔPbD|)54”ÒÌíåÕ3 VÚ2Fú‘Ÿ\‚™Þ$ç‰d"Ê_ûÜt¢PHÜ}}}Dò‹+r‡[|LÐÆ¥ÃÃ3²Ä92ŸÉ$ƒ6®bb[­«–¢ig ~¶gfggççËsÿòÆ ~«z£Ô²Ž±îB19¸Î¸ÝU¯MËx­Ã±·Ü ñ‘/¥†{Ãið’ñÌÍ1‰e·]ÀLqÿ“uhãsSÍ_ª­•EèvY«u[·­H“‰?\:ÜÜóëè´Ó4›œÙ*¯1%3³³³³³³äŠÉEY}Q/äã‘ä:(·{8òÅMî¤)ùr®¾ Cµ»ÖlWÏN3~hÎR¡ëÛÅâ xš| TxmÃ!碣ÝJí‚ç3ÆëÜÙq1¯Ï*îÿTjHžoêm—ò8u®.u~útøÅÞ0KÓ4͆{cšé›yK*®W·ã¤_*žÏNÇ¡ÛeQdUêŸS…RûÞáò­¢îDzY¡é‘(Î Km 2ŸïÑIEwT¬Í«-‘o¯5ÏÊÇ#©OÖ˜¤'z“)Šr†&íù|ž _2›Ü$w0ìÊÑ?hã¸t¸¼d™¯!¹vOΔxžçK3É4ÇÙûêH*ÙY›ÄœëÙ…¬65;«>pÓÃáùl,œæ8O4ä€VB›û™2Zç.¥†–öD2™ˆ‡f™¡TI¾¾°L&´C^ñÔO½=ˆçíÁHÐé°¸à]J …Óvò“²°=?õpœÞkuXRv  á/¹å´½ÛeÒºÙÙY“)U.fiÚÉÌ1ÝŠSÞI¡ DÞ&â!ø¤ë¬¸)\ùvãÔX–%éY"m¯)O'Ï/޽ù_’ëŠ(£ø‰*ïeõOD½B b ÒÛÛ××'¬Ê‘wn »¢¬þ‰¹¨òdÊÖ××·ÜUÃKsÂîùxÀív»ñ¼7:§ýB‰d§y?Ä#Âú€´ gr!OLþ*fÚŠ•Gƒ]Êk…`d|Òu¢i¤yË«ÜÌp¤ön7“¶Nnÿû—/_VlyôÑG3ü•Å<Çy»ÐåáÒéÅ•’ÏgçkŸ ½ Ÿ^ΆÝí¹å4t´;Ú;òëÅï°ÀÖÊbÀK^é¨:רÉå)àM0lz97âtæ–ÓöîÉŠbiïÈW3 ¸gk?¨ÓÞD' *Úty¸tš¸×Õm‹çÉè6‹ÐÝoÑ¿ýX Ïô-Ù’mW®6Œèo¡œ#³³#z‘輟ü{dþÁŠ?9Gæç@ÖFÄê¿pÁ +M«Ìl°;E9Gæj;y>;Þ#ËšüêúA³óU Fa~ìUÅ]ú#­n$Ïgc½½Lc¯Õ¶V£ñ~øÙ³ZÕ¾8$o¥ÉÈ7,uY#ÜŸ4-v¢ê¼u–8¤hËi{÷¤¥¼ð:/Ð4Ð4pf èPGóZ:i²Ke r<¿^,ñ‹ëz¿7ª•õ,©é¼Ü^˜ d8ð=öüú Ú Õe¶Û›òDé`»]ý×ÞI³\ZÞ—L±!_ÜÜZYìè2=+ѳ¤¦ó‚ û+>ê.T«Ö¹Åµ-v9'¾SjⱯæÚéGþxK¸«a½¸¥¸cå[”=Ôm‰£Ë ,ËÊæº)¡Q„Í ‘†´p B·•ø,®n;¤—§‹¦ß–Ö³¤b;‚`|4Xç¶ú/D<Ë¸Ý Ëy"Uß)ÕƒôSHäk½Vÿ…¨W8hOÏx,>fÐyÅÂòê·ÄÑEž™HDüŒ‰ ÷&×í =n6þa÷rWTJ5;ií@#½n†­xÀGdjú˜DÏi;ÞBÈ~^4€Êú—/_>{ö,V9Û¥*?`hœ¶¶6¬ÿˆìKÚÚÚðûÂÛ#8ò¥™H¼@ÓÞ.zAL‚õÍni¥ñj ‚ ‘V'§X·ÂÎëã6½L¬Ú’ߌG—{Eã츰¨-s¬ÞÀ«¾üãRÙ_™»lô6¶ºD.ÆG¤ñäëã6³>n™f”‰Õôñ[ÕÑ‘ï¯üâ‚un9­x¢[µñå!Ñz—fÙàm+‘‹ëÈ&žX·çÈCOÕ2±¨6:»ÍV®¸Ã—RÉu»­âÞª Zû«¼ %r1>"ÛÖÇÕóƒ^`k¸L¬LŒ®#ðJ¯$o­,BwweQñª ZLëKäb|DZÖÇ5ðìæ2±Ž.P¢´²Ý®öš4|Ù˜©|ëH ùÉï´´ŽóD纖{ÃiyAÜt¢P€€;!6ËËÊp)‡µ8·Oä!2*Í $ lx¸}rÂg¥¨ª]µM;kðƒæúc­#jU™XG—X61+¦;sˆÕÜ ÁËF¾þ¸ÍcÇøˆˆ<Ôç­oÇó?4{§õÚÙ›œéwú­R%ÔòwîÃñüâÊV9º³ÅÞp<’´CG(·§I± ý®üVg—XVù|Ãü —rwòɦ§ËIQÒíªg§?èÌë«;GIÊÄj ¡ÆÑ9úmé8˲ÞH §9ã-¤õ%rq~<øo¿TǵåYXwÛËÄxÀÔè,®n»ánÕ­a{JäbþˆlR‘Í‹coþZdBŠ»ÌÏçWJgWìeõOD‹½aR÷æpoo¼¬'¯«×•Ïgµú'æÚc½á„8WõD2#µÕÇmõ†ÉÞçÕ{áN²Ó¼â‘™ÿð7‡AVvþøÇ‡»÷–±säí9û °ÈPmj˜üËÍŸ•ª [d¥¹öùÙ“µŽ½ -à÷׸þøÆ;õykJ%ðûk¼¦W]—Ú¯ÇÝÇ´µµaþˆ ÍM“w¦Lìm[—·¥àú#‚ ÆÇf. qA¾”Ú.pQ}Pþº_u٧bß>Cç׵Ǒìxo²}rnº=‹;:á6}VUõ;YÁü©—»æ/ø­²/Õ²Ýê5©WË“Gãp¥n¯r›"×¥Ôø6ŒÂ˜:RÎò.Ùñžžñ«ÜÕf%­‚ñqŸPœî]îRÔßÖ”íÖÜ*ej3É£©pUoÉm­,‚¨Z£gLÍ× Í†—»Dé4ÁøˆÈ¢C"QP|iK>ò—d»a½Xâyͤ½ Lmî»úZ?µ´w@¾¸It«I¡µ1[à™Ÿ¯#̵ú]\Ùmàúc-Ña®¿8L¾´­(9§’íÖݨ9uÕ}m­ÖpE ï\¨«˜¯PRPcmªg°>®ÂN½ú¸ë8 ©#¹Íõb1>"F)šð¥í@¬]¸¶ÛË+>¤×ܨêLP¦Ö~ÀRÛG¸Â[ü¢6io—ø•ˆ†1Íëãšt¬^ãFŽ‚1ç×»áK[H¡WÙnÅF ejƒ•G3áÊ!¢Úr oµ1¿D±¦xw‰çíUW¯ñVáE0>6;DZýBˆN•x=ÙnõF‚†2µþÊcEîêê¶ µötïÒ†ãlò’OÆÔ£_ï®aŸÛ½>®vãVUáEp~½m9£b ¬PtŽÌϪfÈŠbPêLLTÍ_(Êê¿pA—¥ƒÊì©°MO¦PㆯLjŒWßmmmfò&RS€S×ÇeBE¹ºí‰BaqeË/•ür„’Áõ@‚ïÊH¿#Αùô0l!pÇ:V]µ-;›ÓØÜŽeßâDóGd/ÂqžH&¢|dŸ›N ‰€»¯¯/(yú$ËmI°txX¾Já™Ïd’AW1å¬ÖUKÑ´³)ÍìÈqžH&3;;‹ï]a|ÜóIèm|;úËË ÒÓ§ÙÙÙÙÙYò/x’º³^ÈÇ#ÉuPn÷pyoЕ4%_ÎÕyÊ”»“…ãJé=;õfŠÆ­8 ‚ñÙc`}\½Æ­8 ÒpýÙ¶ ëãj7nä(Š"²¸Ùä‹°>îmÖÇm"X§v߀õq‘2WÿÇÿF'4#MÆ:µ8¿FöÎ¦Ñ ¢ŸÏ ‚`þˆè3ö³õíxþ‡Á÷®^G"˜?"‚`|DÁøˆ.@ѤÊú£X Ï.¯FÇgÇ… 4½Ø¥.\*/wº#ìri*ƒ ¬ÍØke¬óÜ¥ò‹{g.®Žºdt _€39ÙVÒÿÇæå¼F¹Ù“ßûÚ¿ŒþüOö§ØäUo­¾òÒ7O‰ ŠM|œa^†ï½&5ãù3ÌêñÈÀøtõ•—–6ÉsäáçÃÜmÔ•Ú<²WgÛ5cƒ¯Òq÷“fì<ªQ÷–Úrµß ¨™>óå £Â~Ícô¿¯â£dÒ…øtÎ/V^É-§O<5 —V”;݉€¸›_^#?K¶ÁäH.¢(gÿ`2àv+jwkáWE?1r&޽›Ë‚©@çˆse (ê¾GοþˆÖÍÉóÿ‹x‡;óÚ[“díý¥M𦝬­ µ•¨lÀóŸ®&^úàæ1ñæ¼µúÊä'?¨ÒÿùÜÏ~:} NùÑÀQJØëÆŒ .”ì~¸ÿéôÜ Ÿ®¾òÒ%fS—Õvj]c$â(-?¢ž´=vD³kï^ ÂɾðöËo_gg…ý:} &ýnþg?þà§“¢gÒÞ‰µÎ¯í6[¹ò _J%×í6Ž“â‹\4y<ËKjy’N‹(]ñÑ«qáÒì¸ÐgÏxV~ µþŸ. ¦² ¼óÓ§Ã/ö†Yš¦i–Ô»U׎5o‰"ì*Ü¢ØÞ344$;ž©q<œæ<‘ ߦ$%H:J•‰lùØK©!Ñ€žžñMßDÄåñúô WÖ^;{àÐÙ±ÖV¤íý8ÝZß<õÔwîá¸kó󿯨{åÒ+[>ýü&ü“6rŸx`𩊬G««NFÓ'¾'ܫнª"ìÞÓóeŠ¢¨=§húÆ^3´SÍg–·Â{¦w_â¸#?t¢†>Û¾z7®?VÒx¥Ê+[+‹ÐÝÝ!ËMFæçggg3É ãÒáX,¤¼ ) ÀgÇŠ¹ *T+\ZJ 1,í‰d2Í2C©’ìrdÉ$ƒvÈ+ ,«·kêö•RCá´”{YXˆžŸ‹z8No­ KôÜB‚Q.fiÚÉÌ1Ý¿Õ$ÉŽRUp"%H:/$½`&íGHƒll ž¯¼ò•£ËKÓl5ýÂÔ°Ãáp8ÆV*Ãcêø‘Câÿ:rçÕ™”º+žÿx- wòøñúj÷ãvŽƒìê'BàаS3e3²¼&U²yþpåÍ¥MúÀ7Ÿ–¯QTïsm5OÓ¾ùÈÑÛã‹IsÓdG—G¨\]ZY„nW»F¢ž'F‡Ð¤P_º7Ù>YK-P¢½'„Îòq+õÿȱdÅÕÛu”K+‹y©F+,1p Ï—Šë ÷®Ø®«wX¹cùçD(?niï ÿžðY$õBY¯(ÊOªRéºFWWs¹\.÷‹c‰ÎÊÙØEF_ù»—‚/¿sËùÜ_øî“§*?t‚¢tü»c4}ã·¿ý´¼Ïñï}ãý«‰÷ eWõ½þ­8š¾±4üÏ/¾ýIYmܰ«–¢e§=Ë%çÄF¿/ß®é1uòX÷yþãÿöÞuŽ;ùõ“_1Ù'1iü-øÖOv0sƃڷëŽ./°lb:VLwæ,S­$hh81DZýÌàb Q°‹*̦!2#2 õÿª'…ˆ ªó–Y¢å– cS­Æ–T[p M®Ä …DÀ¨Xv4¥_xèlòâX`jÃuöP3.2Ž;y&ҹƼ|-»úÉ™Bê±öþÒæ .‰Ínýú£ßŸüÊâÿÞyòéS¿~郷¢w?ÿ˜<ÐÉ’¨9û÷w˜7’ò“üê¢(g(êe6Ü»n·]`Øó?»÷ @ÍýÑ¢›aÃÃí“>yp¡ô —Zý"ņq³œ'r¡^¡%¡ŸD /Q.Ãgõ_ˆ{˜€;!Öæó1ƒ‹q"ùt~ö¤Fµ[¢vK¸¢s!G(êI‡YÆ ‘¨'NšªŒtépz9gf-·âÅR°2>+Ee—Óç†9ݨ(¾ÿxfbµâ5×è*Œ98ñü»IWy;À_šöÉΞSKo_ù‡é_ü/¸ùpÿ@E,øSç=ï]¿õë~ÿõе-êîÞ?ÿ^iü- ¨ûÜOÜúóìgd\¿#¼s3¿ùð:]üÊ—ïîýóÈW3ÌËKâ´ÑþTâóõqÅÝßzéà¸SzÓFÉNÍ<ÔýÄ¿*,ÿ2E‘ûˆ¦¯üÝKW¤ié·Ç¾¦öØ?Ÿ?< ž\Ã!ý€qŸä¡Ð;˜/7xä Ó}rpìá'ªØ¯Ø¸wçÚXwg^ÿ”éù™Ü'ëøÁ(¥†â ÷þOÞx§îú4M¿ý_³xBå¨òmê}²wòÔ7œX¿g›oYfg¬éɾ˜qOg}5?3ïÀ*ÖÛ”qÈ^ÀFn—ù5Ò¤›§¡ïs(Ê92ïÜž½Áøˆ|ñÅ?yãô‚Tä€ëÀ]wÕù@’¦iÔçBö%¨Ï…`æˆ 8¿FtiD_½‡ìW°>.‚ æHk¿´$‡ã<çgO^é{Qþ'E Jž/ÍAÅ×Ho“šIõ}°53<(hTVw¥6ìå³äŒ –H®ÜÝcÆN§F}\¥‹ˆÔÛ+¡í½öz§FŽü3¶ß |µ±O Êi“ƒšhàU_9„?þñ©ì¯Ì]lzÍ¿ë†ù#Ò(åbn™)§øœl!­ørÓ‰­þtRÙ¬,„Útss DªwÅ—Rýá´Xê앇±ÁÊÝíƒÉL&“IÚÓáÞay=µèùA2@iƒŽs¤ö™LÄ J“jBÏ~M¿I`}BÊi—O˲RZ½jƒ‹ja!5q±)œY·Çöv|L õ(ÊÓò¥Ôª¯ô£'}w¬W#¶ÖÚ±uÔš­Ú›TÔ6»Ý%VÆ:;‡Ãáè4*o¶2Ö¤âg<_šI®#AÇ¥“3¥Šª_•ÅÙŸ´+ *ëue\†¹*Â¢(Êê x÷¶–ÍÊÊu#"¡¨Ò¤ÚÖ×tì7ð[5Ÿ•Ó6× µ¿å5yloÇGW·¦ ‹+å²[+‹`¢ŠùuÒª”S[@¬»Ý_lýŸåV38IýÇÜꪖÊBƒl×ÀÛ%ÏâŸÃÕmÈËO£7ñÐ…Ä€¬š¯TÝCÛ-Z]—a6s®•»“šårŸvÖã½Ø¬íœJ”&Õ„¶ý~3á£rÚæ´˜Z<¶·ã£ÅÕm“•­åùìtº]=y½0'µïN®kes¢t„°ìÒt=ãŸeƒÌW-ÌPn?}ú¯Æe)6ŸïJmrW5sÞëùOkÅ©@§~F¹a2IaÜnw !ÿÞœäGƒý±|QÅï8BÉ fù¹sŽÌG<M·Üþ*]µöfÓ°³&?HÛ+Oâv¨ûk @Få´ÍÔÛ®µ3ê öz€´]HÉrn9mïvYtå tªµd´¤#¡Öè1˜øYÖ³\[˜0,,üe·¦ ¤ªøVqÝ DÛè»Ç© Et½\Íår«áœ*BnLš^w‹(‡“›N ‰€»¯¯/(€¼<;X|LÐÆ¥ÃÃòªoΑùL&´qÃj]µöÔ²³?€VéÏZGTgÔÚì¯!@z.$¦cÓñŽ€ÏRGƒú1¬£Z³Çöv|$y¤—sRx¬¸ÿe2 =š²5uÍÒc¨}¨)Ì 0ˆ)6ñÏfº]Ý5Cg“«c0Ú) ’K—áØa²–qÚŸZ¨ K—k¸gúË5.…ŵ¤°ŽNBžbIQVßDÔ ùx¤œÔKÛ=Gj¡teX†ÙÔZ•rwRC³rj¬g§?­<:Gö )”õ´Ö»Â£¶ßÀo&}¢WNÛ|ƒR‹Çöþóërž•²Gq9o¨§ÇífÔ¯¨Ð•=¨¥ÐÓch54Í2ÄBÍÃY„ŠÀ%¾T\¯*¼sèlru5xýq!DÞ¼þÑG?ý6yf3œR6¾yý£jÍS„zò¹éxG@zÃCo)åóy²n =y#—¸P÷ר+½2Ìæƒºôx„çK3É4ÇÙû«þ¢µùA屪s@Rµ B¼޵b™¦ý~3åÝrÚ¦´†ªS°çß$W˲Ë1H{óVñűH<öÁd 8N×éÊZ;9ØnÈ×3ë)"r:e¿rž.§XˆTïˆ\¾b²¯hLî®x¼¸¹‹]Ìd®Óþs 7Áác÷û'’zÏj»ßÿôO5%û †½8öæ¨õA&¤\JŽçó‹+¥3‡+ö²ú'¢ÅÞ0P”3ÄÜîí-×îlÁÉ Ÿ¶f’ú]ù|Vý2̦lw'{sœWïÕ9ÉNó~ˆGfþÃßIzþøÇ‡»÷–±säí9û ¢ò´çÈ|²}(ô%8OD³ä¨Â~ƒòÕf|¢WNÛ|ƒÆÒVšE‘Š×5yl_ÅGÅÃX–õFBê”°XKl‚å0«%§UTÁõâ8­‘(Q`—s!”õLž~Gÿ -O'gúä¶—Ê} ¦ÓëÅ-€é²…Ò“3ýNý¢¹W·=_žövtù@õΰÆ+ ©ûzt-¹.íyèÔ£k0 ŠÛÐÝB9GfgGô"‘x¿ÀÈüƒrŽÌÏ€¬ˆÕá‚AW`XS®ªÁ»««Æ;y>;ÞS~…[\ªÖõƒ™zw•ÎÑn¯xu\¾Dnõ_˜õ›µ¿>¿éõ©jl¦yÿ›jù`÷ÅûáŽ.òÌDÊÕÅ·œØporÝÒãfãi˸—»¢’œ–f'9°øAºVý€Ìê¿ñp,ãv3l­Ê”Õ?1õæã·ÛíÄapR¿ýÂA“íƒrÁ/rÄB"`ôÀÎâê¶C: Æs™òËçàbRŸ9t6yzA÷¥ÈCg“€hÝ·³"My÷k7wŸŸMÀúf»ò­H¢@ۂɺåw䫨ÆZ ê+`}3d_ÒÖÖ†ßîÎÄê¿0ŸI!>Уó9PM«¨šÞ…²ÇÁú»8Jj,·ÕjýèMÁøˆÔê+ ˆFz¸þˆ ¾‚¨@}¤œ?¢ç×Hó©VçUã¯Æ…KõJÔzÕ+j+§¦Ú¨¢§¦¦Ð/HHч„§pﺼL´"6ñ|öŠAÀ*—†?(ªéUáê/Ã#ˆùøxöìYt bž'Ÿ|R3<…¢^–aãÓ9ÿHÍáM* »>(²bhCvC|Äu(¤98º<\:^Ά5¿x™›ŽwæÁÏçW¶| ¿# õ€ï‡#Ûu©i.ÝÉÒ°Rkþˆ ÍDVÁHµþ¨±‘$‰BIJ1@JÃúš[DA0>";ˆ¬ ©ùÏ#¥Ò°~«ü)öâÊHç×Ⱦ Ö*¤òäQ¯4¬ÉR¯‚ù#²+l «j.U'ÅnK½*úÇzÆQ~_¨›è¿ýÛP–±-ï¦Éíç8›ü¥¼Ì°š7öf ÏŽ»dïoWµ°­­ ¿/Dö%µ}_hüöïNžê÷<©~Þh†_šŽe'¶Û*…C Š3ïÔ…I±ì”=Ø$ d¯N‰êÉ9…ÂÚêÌft¢õ©‹3Ãrah½ÆD-KP—Ö€V èJG…{ž¢¬þ åÒÊæåª d¬õl:?}:üb«…³ ü”1nwOÏøÕJ™lé¤ô ÉĸñB0>ª©3›Ñ‰6¤„¡#)àj6æùll ž¯BÜVOZŠJ]iuÈUkn×´¡” §íD¥sa!z~Û„³ëê–¢œÒ)‹d2êêüšár{ÅÇË*jèÌŒN´ª - ¸+Tá  ML'ë‘«Vo×´t®©Û,K¶³Ûêá²ÑXT|‚môÅ¡øö/Y+Ð4”Åÿ´—ÉŒÛ4&½ëñB!p'<‘̈“’‚&ãfA€6ý)š¶\u}¯Ù)l°¨;ß.KZÓ­®D8‚ ‚ ·ÿ?ÜtЙÎ*’‡IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/03_look_and_feel.png0000644000175000017500000002453612032647166026074 0ustar ebourgebourg‰PNG  IHDRu¢1ÓʼsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ‚I±¯ IDATxÚí\×Ýï¿3шMò¸ Š,WD°âÆIei®“Pص]éc…Ç`Ói®±”ì>BÓÍÆöy½š¸Ò¨ !›47Is%½Þn6)?ЉP[wññ]0Eqí."¨kSÀxæþ1Ë0ûcvgaùý}¿|ùZΞ93sæœÏ|Ï™=Ÿ@(xyÿi¬ABË®§žç[¬X‚ŒHüBá'½²ûí z2/nÙ4{öl¼¨2 izš·¾€leâD<ŸÙ³g{Ÿ ‚ c…o}™ˆXÏ6úDÔA})P_d|é Ã0“æ|&Ó¹ ÈŠ_æ|nŸ•¦€5õÙ‹(*˜ž¾F·¯Ö»á0ã†ùËîäŽÂ†½Ûÿ'Eyüéë8d@$ÄúÂôÔ½¿·ªkAÖ3?I×N½¹ãˆÎþø ÚÄJ¤ PÔòu»~³nÔÇGŒ+¤aBEyüé3òŸAëKǧUÝ4½,5UBQ‘«R×?Ðôɧ-‰Ë9y|½ýøG„Ä>þ‚vUx ìÐÐtDõÙ±Ðâ¿\:üìÑfH¢æùŒå|IâÅJ+pÝ¢'_úBX½ .}ñøÓ^ÿÔ­4!ë_?öÂ#îîÂɽO¼ôø®FÓþÆ­„,Õ¼_þÑ(:" ¶»ºá3¹`BÖ,Y2´d•Œ0Ÿº40ßAÓM­ð̶œ54Ýñɧ-µ\©ß&#DH œ»Ž6Ó²öœ5tséﻉ-ªpS$\üäÓ—îì­ê‚µ^3ì|ëù]9B#,â^<âõç_÷uiã²Xs1]íg/²vÉpmröœsͼYnEÍèâEÓMGÞ”>ó6†;¿Ë&дéå4'`@ØÀÆ|Üq ä âþÖnû‘K½Ê"D•»1е*b4Ÿ,”'ḠAB;¿Rº{®¸'\qܘ%›¢–+_ÈêÙ[Õm?´Ç!YŽa]%zþ…°±«v[E1ŒyŸâe#éqIÂ4 ÖËÿ d>ÁPHè3ê ‚„J_(jù’$°67]¸½(.œ²Ò4$®ZDQ>¢ŸÒ@¿ÒŸ±àJ›Pi?Ø•ÆNÙ´ì¯\’ùˆZ°Hëwvþñ?]! ÷ ^Ÿ—.ˆB}AÐÆ/±eÍ5WµÔ×?²$u\;Uœ¸Ç[ÆËb¿qb¯Ÿ²Ò4ÌŸ/¡(†aEÄ~ã:,Šð¬Èø•qÇíM.dÇÂ)+MG®\!ñ)U‡±q›Ì¼¯EXŒ‚z~ÄPó“žXúÖ…*d&~Oê#¿ktÕ~ÅNV9š>¢iˆ‹žÏ0eƒ "õEÌü ‘ö”~~nßþ‡€?ciý`ëq;MÈš—±"²êɬֽUÇ‹ó>!k¾·óüÌ’ä—7\{öè<+IÔü 9üÍ×ð~zq?)8ãsþ…Õ ö;?£6ÿâòw~þöÕÛ@Ⱥ×LšUàž޽þ·/Є¬{M½ ‡ "¡Àn·ó“ÊÞûCPëGç‡s±žmÞ¹}kgggËd˜æ²ôŸ ßþ…Qˆc" †èèhQ㣒W~ìçÛm¯iÆÏ)yŸË† „2=z4¾àœ.‚ /~¹|ù2?Épð£‰èÏÀÆ/W®\Á‹Š ã… âúFAF ôg@d$ÇGׯ_ç'm/;ƒõ‚ BìV?„• †ðððipñâE/ÞùÙX;âÍ–Wy÷Äßø(1Ñ}6×t nÞ¼‰µƒ ÞxöÄ¿¾¼ýöà 6mÚ„•‚ ~à÷1lÚ´iDCž¸¸¸‘.Ö¬Y~2¼óÎ;þôeëÖ­\Åáû=Ä?\)FlŸŠ‹‹‰ƒá”eDËøXÖgäååMá‚Åì/b~öá³Z¦asAdøú"8>B™úÂ0æ’4­‰¦¹BTEu¡õ|c÷b„ôa–ìQNÀbCµ_ñ56ú‡Ä\ìxÉt fÖÔ — .UwV•9WøÊÀ0Ϊ²ŽfŠò_‚ú2DB®)½ˆ¢’ ëë 'Ñ%äjŒ=SmZ{~ei¦t´Ï´ÛÒúËÏ$?}náÜkçGGü"yú9T–)ª/}wî¼÷éÇÀú{Êñ™‹SSSS‹Í ãósuµZ¡P¤¦ª«ƒgb.NU( …â[ßÒ¾œ¦5Ñ4M›´i%…xdN-6{ìÔgáâÛQ­NU(üyŸ”wùÞ°¹Øgi•TP”NÓmåUŸU§ Øì»ïªàÊQ(©jµÚ½êxyzÏë¿é..ÍÔ­ß–]na†q,íh°´¾XÚÑ‚K½BÇõë×[[[­î´¶¶öôôŒ}ñƒwþ ?V>ÿèé‹hÚÔºšŠ<XÙNŽjµÖ(Ë«¨©­­ýÓŸŠvÕ© ‹Õj‰Vékjô*Ú¤SW;ü.KIv¹U–§Ï“Q[bñwðz§~6¤i“¶1¹¾¾0@d'OVÆF `c™ÚÚÚšŠ¼BŒÚoª K‰ÖDÓ*}M.Exǽ]=aó$ü=J²Ô±‰nÃçiˆÝ£‰ÅØ$T]÷Ƈã¶/:;;oܸ1æ«vƒÕ—»wîö÷}5‚úBÓ&R)tç÷äfDATL<Û©Æq¢Á %*Ê8Ñ`%D•,wõLkà ÇÀN½ ÷s´J¥Ž›as£âcä1ñÐnsøÚÖU>OülHˆª¨@‚úeOGtU0ŒÃÖ„$ÄD n+~à£Lœ!"›sÿg1Ì ØoN§ÝnïïïÊèïï·ÛíN§3$ÓÖÖÖÖÖÖ:%„¾0äî¿zúFoþ%øÊ±Û¬ÃÈlµÙ¢‚?ÚYéaß.\™CÞpYL´÷•sTk²ËÛhÚõ–±UÁ¦Ôë°ÈˆÞkNX6;¨NâšÍ…)á'õüËí/ï|-lzHÎìæÍ›v»½¯¯.®¯¯ïÿøÃ0sæÌξZZZXwÆ5`wýöìÙ•+W†vþ…ôõõؾ€qü|::F`jf_=shÇ@¬Á¥k¿Áoè90k4Ñ4ÄÇHÝ=ÏÆqX_nY~E®-ÛMCR¶üëðË»–oœ‚±•d³æáÍnÍq2Ÿ´Z—FýélḚ́{†V\¿~Ýápôõõyt`Š¢Ø?¹}}}v»a˜ðððሠ·¾Äܽ{÷ôéÓ?üpõå«;}Ÿ÷ôÞü E%%§@»­Ó5(¿tuŠŒÍïÖsÜRÜ2Ó´©Ñâ꙲”ÕÒaß_¸b+û÷ôm·uº)‚è …®¥¹DkIC„ª‚­6ÝýÏ•/ÝýHïëoœÝ^v†ÝP”$k=°ó»8¢€¯"Nýw÷·^sØ{þu÷îÐ뤻»»¿¿ÿÞ{ï9sæ´iÓÂÂÂfΜ9cÆ š¦ÃÂÂÂÂÂ(Šb¿1cFww÷Ðvtîܹ»wï2 ÆA¬^DDD„……1 C9uêTÇGäÎÒÇŒjü"ÏÊ—Ë ¹Ê„¼|)7Ê/Í,+²¥êr•†ñK†.¿!»Ü«,'ª]µk<2ëm©:Ò@Tú²LiHŽÙU¬!WapƒÏ¹“}š¡æ+‚È }Œ§ØË#˯,Íð–HöÑ’IgÒ¦µËd@·™´i ²*äE*£Ö¤S‚¾HeÔú©*.v·Ú3eËdY²Y#á…-áˆF2YõåÖí‘ýŽ>çµî…ÿ쓆Ϝ=wöÌ¡M¾L›6í¾ûîûꫯî¹çBÈÌ™3oß¾=cÆŒéÓ§³ØþOÓ4MÓC‹•Ξ=Ëíî izΜ97nܘ3gÎôéÓgÍšuûöm6ƒÙlNJJ Iü„™6ÀÃ_êСC[·nÝòê±w~ö.Jh„ú·v£qØŽjMv¹5½¨¾0 /b°l/;óè²3ŽûËœ‹ž7;Žî•~íîüˆ{çžél}tqÔ¥UŠGΣgÊ Û§š››½×Z­Ö;wîÜÿýŸþ9;3òÀüóŸÿ¼ï¾ûØ™éÓ§ßsÏ=½½½œÜÈd2B.^¼È®ŸZßxæÌ¾œ…‡‡ÓÑ+!äÚµkýýý”kîŒñÖ¶dÊoóþàƒ¶nÝÊWŒG•*Ù·nþßÝB¿( ïÄÚÚZlšãA Ù‘‘åW†ä1֔䢣õKêjÌÛÚN æÃ ÉåKV㼌÷g)ÖñÅ% wîÜùòË/ï¿ÿþÛ·oß½{—›!„Ð4Íöê¯}ík„/¾øâÞ{ïZ”Ä}èïïïéé™7o7@c…Œaÿ lüÂBîŒ_DTÌ‚•0Þý¯oáúF :ÆI_pý4‚ˆ#ú!à[_¶¼z «AÑ—'¾ùV ‚°;ù9VÂР± A}AõAd„ô…aÎÿñågõòKÃX®’B‚-œM/yåÇÜ¿ `D5J^ù±¸ËÍú~¹™–1æb‘ž$"JV!ã|>í !k6곡yÒÔ–˜‚o‰º?ÓmåU–Ì•–F£ÿ{ö]S21ôåÒág6Ó@5Ïg,˜>xUÚ×KŸùIª„wIæ|nŸu`1…,ǰ.b[`íãëíÇ?ê $öñ´‰??‰Ž î~ÒuêÍÇí4_z|&"SLbd V«±Ñ\ O¢(ÆQ]Ñ.K ƒ–M ã8¬Év­}­+ƒ…]¢AƒI›ü6¿J_S˜4©ÒèÍ¿8wm¦e9†m9kèæÒß5vùOìÞ=uï{‰ PÔòu»~S°ó­m…›æÒ²¿’˜ÐtS+<³­pS$\üäÓ6±ãÈ>+MËr …O·®¯ãÈŽO®Ä­ÍÙ Çiñ“ˆL±R|nn:gÄÑy¢RRøÞ€6©•Tànó*ÆðõETÐ~ö"!k–,X²JFH×ÙsN†JçmÚR³×ñ¨—¸¸>?ÂkŒóèšy®tó©K Ã0]7®!±á>ò»G¼MGwäq“/ sþ‚¢ç,™W¯:±CNEMH' eu ($Æ_ÕÅpMK§úø¨»çŠ{ÂÇM€Y‚é,ö?¿y¼+iÛ:¡WðôÔ½¿·ª[Ð,Òû¢ç2óï°M‚¦›ŽîhšæžÏDdÒ n Fžœ&“¡ªÄfŒÏ­‹‚ÏÛU›Ô@†§__:4ò;š±€/% ¤³ý¥»Xºrm÷G¥¿ó2 Óuꃪ.ˆ{¼ð»={÷µŒä‘“+¢ã3»äTyV~‚±Üd2¥ë ø/™l“*Âðtâ¶ò¡ÝPTdüÊ8šnºpàÂ)+MG®\!¡(¡tî ÍY“½­pS¤y߯ŸrHÂNÖ,IvGìDL°Gþç¦kþ‘)(.Q«Sdàzgƒ[Ëñi“êaó*Òw}"Ç//^ ½n±cþˆ#ùå מ=z Ï @5?Hv=Ѥ^§ˆ´§ôóktû~eŽã±’¡|z­õ@Ó=rÐö¦#:øÞÎoRìcYsÍUÖy³Mf"ÞqáG?/ùhpôä‹ýr Š EI3Ëê3}…'Þ6©I””oóZTWÐðtBãæ/Ų½ì ®oDŽc'?Gǵ!úøÅçS½`ï ‚L’ñÑá?5»'.ÍðAÉ ®oDd$ã—ÛÝmyõØ×%bÕ ˱“ǰ†®/>ÁÙ,Ap|„ ê ‚ ¨/‚ !AìúÆ=ïø^£ôǪ·_ÿŠ ÈpôþWÎS)O®, 7ÌÉ1ÎðBüîøN_¬ ÏÔqýBÆ?lû„¢:ΊaÌ%iÉÁ7×Ilj„¾Ì¾ï^Å@í±?ûy]–Û³mÖ/§pêù"S£¶$Ù«…s½ bþeöý÷rXq±X,ÁîÏ\œªP( Ej±YLº¶Ã…BÁ™*³NÈŠŠÍƒ‰©©Åfsñä0IFÆoÿ¡MZÍa‡§Qü A7¿5²­T]í`Õj/op¡æíYÃ[‚«ËŒãF„¾ÜüW?ûA.—³Q —"GµZg¢Uúš½Š6éÔÕÿéÞײt5zkªÌÝ(|Ú Ò´IÛ˜\__ˆÑ2b¤ëõ*ºÍ]b ,CÉl+m3ä¦éAW™/k¹~P›¼›·¿ñTv¹Òõ55µµµã¹‘£/·ÕäƒݼÝÏO1Ètœh°ºl2]¡tïQåfD±yÀØè¦Ù^ö‚„¨Š 䨑E^P‘—@›tlì,„«5FÅijŸK3¢ØkµÙÅ4oÑ¡ÓÖ—Ï¿¼Ã~øß¿¯ýüË;ì¿`öÅZéðpU®Pº8ÙrT«SS•J‰ÆgíÈ•¡ËK F­ÆÍFj$¡¨¤‚ÊüBè6C®Ré_Ú&Œ¾ü«÷ξ÷LûÞ3ý«÷÷/˜}±Î]ÌÆQ­æœo8§Ÿ‰n–9¾Šb3¸Ùð0æâqî©3Ña.vl/;³½ìÌ‹¥-•Ì0΃Æy°ôôÁ‹¼«vój±ßÒ&j]ñ΄lÏ<šk€oÕju5뺪öïéM5àt5 ˆ[dÛÿ«wŸ9èx àÀðÄå°&»Ü*˯,Í”R ã8¬)9ùë'¯ügŽG¢¹T¬; k·“Y˜Äþii4â°näè¶´þò3ÉOŸ[8—âleUeÎê…Ë‚\äbùû­ÍqöóßÌWí ™lââ¨Öd—[!½¨¦ ‰òlØœç4»\H›ÖζpÿÖ³P»ÍŸÌ_O4„öïáNË÷ëds‰ÖHF˸–;ÐŽ¿Ÿ|FùØð \Ð %Í,+L¢¾Ež›,!aÐn‡qTW´ËLù÷Ǭ®V4Óä§§ªÕj¾ÌÄ\¼”Iî¼É0½ç?ƒõߎt—ŽfêÖoË.·0 ³4XZ_ ŒHäpµá&Ã/5 ™|f_–ªò6šN/ruT¡†Í®Â èJÇÉGz²\dûgñð–åV?Ò´I›VÂ÷ÖÍšª៰ÏDQ“•Ÿ@ˆÉdòˆƒòÇ ÒL3:Fæ»Lb(*lù×áûºƒ¹R”d³æáÝê‡v«ò7=¸XÒ|á–|ñ¬ÉXW®Q£˜—ôXø®t‚íóD¤¬Žßþ‡è-;6ú½fÞói†1<]sÕ©,Fê+1¸ZˆZ"ó9Öõ}xá#3¿•°1œ®N‘qãÞ©Ã\ùÒÝô¾þÆY.¡(IÖz`çwƒî„q±»ÕmŽ›œÒÌv{£vpVÑ\ìcìïzdxXm·YZ²@ûçZi£ÅÕ³¶,ŸmóîCo·f/·4Ó“ }8Bí¼e)Jš¡ËoÈ.7ä*ˉj cÑÓmvF“]nM/ªø­‚Àhùcš‹S“ßf= ŸòB …wbmmíø•¾[²,¿ßʆŒA#tØÚe1Y“í¼B¯/ãYJ„ÆMø6rd¬¡4³¬lòþÐAÔAP_AP_A}AõAõAÑ`Ú•ëö£5’0à\çf«5ʧ:¶{G& …Büo¸¼ÛyF”…KáCˆjWíš&ÅËüÈ8ª5Ù )<_;Ô•î×7A&‡Äølç–ÒöçšÞ÷3†17ñ77§UÄTÖ•J'ïÝnDÆG}m‡5|çJ›?ÿ鬓‹‡M±·£¥˜ûx‡M0Óäû'{Ž#'2†3üvî¯á™‹Ó“ëË2=Ä…aÌÅ“èê‡^_úz;W‚/›??é c.É.·Bº‡9‹£¥‚rØa3Í  Ö‘‡œ?¦;¶Ãš´Æä©°Œv æw½+…lþüÛÿyøàùq´…‡M!3Í  ‚#'2©ºm2Úh“Ž‹g'1ÓÆÇaø¶ù‹H—RI•ùíÙåmm†\¥A¥¯áVµ»l5-¥¢g‹Úhhˆ˜ãig%Tx@GÎàŽ!‚Z©+þé!ª¢º,›&»\«‰˜ÙåÏ &¥ ü¼Ãd*Ç/Áùº²ù´ÿ£¤™eõõz€qÇP-ƒ4Í v¨ˆŽœ“V\†ÔÎڌҢt°–g»†ÌƒCé½jµ‰ô ä]*ß6Âö;*(RŠÎP-ƒI„Í4“’Óµ#ä§£#çäŽ\Úyɦc)*© 2_FöE8ÿLÝI3KëŠÒÁjÈU²N“„yÒÌ2½Š˜tJ¥ÎÄÙü ¥sÏ_”Jdù:—ó ›¹Íëç ÷^6äEé4mÒ¦U´Ë€{%•`“*(RbÒ)“‹ø!‰<+_VC®²"&ŸKx±–gáB…ˆ9~dü ‹Ú¹Q§TŠ|ƒ…çæ.‰Â{Á&è9Ô±O(Ì4Ñ‘sB0:þ˜“ÑóÇ„Ù8••P˜i¢#'2E@Ì ‡ÍÃ7ÓDGNdŠ€ëA}AÇG2ùØòê1¬ÔžøæX Áò.Ž9P_A}Ad¢1ªþ˜þ3³kOå`K†qfKËs󣘋/™nÃÌú‘zá2óegU™s…¯ ã¬*ë€õmŽs}ÅܼZò^¯R½ðA¸%´Õ„¬+æ|nŸÕÕÎcA›Aè^Xd9å’–ݾX»QŸ½H¤©UÛ}š€5â·wú"ä9®{¦¥ÊÐFÓ´©ÑR4…¬ßmiýåg’Ÿ>·pîÀÅò£#jôï·6ÇIØÏ3_µƒ(J²Y#™$BÜS÷þÞª.X»ñµìEÅ0]§Þ¬¼ô“‘ê·¬(Ä^¯oUËþʯïü†UâˆaÎ×ì?N‚Ñ£qª/.ß@½›o ÷­¹8Ug¢€¨ôþ×ݸ™b°>/\X‘Ÿßn0´ñƒ£A³žw˜Úh?n ã8\Ñž§ÏkЖ+gÉ3¤SÒazÏë¿é..Íe)»ü£è#ruï‡'ž~n–ßÂ$r¸ÚpsVÊlйyµ$rwµâŠ2ý¥/Qµrsåñ«hl0å?’+:>­ê¦ée9®îJQ‘‰ù9nûi8²Øþ|éð³G›i ‰šç3–óªÛÕb]1…wb,¯áó#ºü8\tc¥išŽèà{;¿ñÙ+¿fÿ<º£‰Û—÷Qy<»!ûçÑM0÷;¿xjé¹÷÷VuA\Àxm´ý1…|0}ؼR¯¢é6Ö¼rX¦™–ªòøÜ ùꀵáÄÔ5Hèíê ›'á_I–:6Ñ­{;OCìMlÀÞ¾bqØéö>èiwF-ö³8OCìëÏ-„/·øZ,Î0ΪáéçVŠÙÝèŒ.˜5K–t-ºéH˪çwå,¢(g㮣ʹ,ǰ-g Ý\ú»Æ.WOÞ[Õk7¼f(Øù›Óg¢[¹NYi’VñÓ)jùº]¿)ØùÖ¶ÂMs iÙÍ7ImÒIDAT_ÙË”úm2BX)‰£WpnxÍà稼žû“-¼û£Ÿë_ÈŠ„‹Ÿ|Pïô»ÊŸÝKâÏïÒBæ•òd!¬y%§;Ášf²ÁK~–|À¥m* Œ$ÊÄ¢2.’D¸ÚÂ8ëO„­X4”¢(J’ºº÷·»º' U!k6n\ ÓÕ~ö¢K‰–¬’Òuöœs°Å6yÓ³— %Ý‘·ï@‰ÞôÌÆe¾÷>?BlgôwTÜÁ»ý>?‚ýü“ÔY쎮8nŽÉü®B>˜¦rĘWRC6Í´TÚÚ Wiàªá„###j*jGXdDï5',›ÔmÃ5†â¦„t}3kEBǹZ°$H²Î é€æÊ—îžÓ±½öÖåĵéî¹âžpÅq@B-W¾Õ³·ªÛ~hÿŽC²úŠò•ÈŸY48tõ1Ô-ÊæÕßQÍ é™²?¦ ß¥P¼#Ê_r¦™®™—ŠšÚÚÚÚÚÚššŠ¼2e‡H¶üëðáÇÁÅ %Ù¬yx·ú¡Ýê‡<2.–4_¸%_\£ý[m‡Å=’·9[ÆYCQË—$M7]¸X$#¸',²NE¤ý`×o6$hÙ_y‰õÊô•09õAUÄ­-ÔÈÄÚ¼ Õ¸ÖöÇ èw)ïø4¯l·uº ø˜¡›fZªÊãs¹gç8Dš+_ºû‘Þ×ß8»½ìÌ‹¥- CQ’¬õðÛ²ËCèáT\ìnõàSê€:•µö¿qöÜâXn2ø`éé—Þ¸ ëÇãóìØÇ²æÒ²¿¨¹ÇU3—ð–ŠŠŒ_çR¢ §¬4¹r…„w:±·ÉñèÞ>#Ñs½Ä~ãºÏÚpT!aDÆG”4³´.¦$Mkt¨ô5…œ…¥-U§Sšø>˜‚Cž¢t“ΤMk—É€n3iÓ`WíöÛ}šë©P<~qãašiKÕrOCv×Ì‹®ÀmªguJB¹ÕÚp±qÁÔ”*.v·Ú3eÆ5cÂ=]öó¤Ùû+^ŠŸ¼]~õðæq[QiOéç×èö/Î;ÎFÒ9†uå­Ã’ä—7\{öè<+IÔü 9<~;q?™*açw}$¦”O¯µh:¢³G.ÚÞtDõÙ«žÌjÝ[u¼8ï²æ{^ϳ}Uˆ«&š?&¾Fe¶—ÁõC ç;I¸>A‘bâù3 ¹$‚L0~Ad$ã—]¿¿€ ~øáºD¬„`ÉAÿ: ¾ÿÇG‚ ¾ ‚ú‚ ‚ú‚ ȸԗe!]9Æ0æâÔTÔÔbó¨,Ncwígw ã¨V»eàopó)s±c{Ùný‘pm;úÏà^Žw~~ ›Ùÿ69}ð"¯›W‹ÊáÆæ¨V§´p5·Ôá3 þ}“9ZBú[{?fqc š`bÈþ˜ÙÆYõa¯ê‡+SfûöÞ¢$—”zå2ŠbçÁÒ»sçÍ·fë8Ø)²Ì…€ÿjqRúb³«‰9ªÕ©êj;9ÉÆ ÕÕjþMÀ#b·â‚ ÌüüišŠvÿm¢¢=OŸ—@ˆ±â°ƒÁŽw ùcÞb×O³1Bƒ¥õÅ!G —.o/;à liçÉMnüÏÂå³Î› ¼ð7ò™K«ÇŽÐbͽÀZ®:Êb¢ÅÛb5‡&˜¢Äb(þ˜pövF„ÍâñŒwçMnìÏ*ƒÕfï<ÑŸÌÝ_}9·zÀÈuÏïîú}gËÈŸŒ¥$Û–[çš:ÉæW±·Ó¥¸Ä}$ÜhqMÄͼ  ¦Ø»z(ü1¹qÓö÷œó&ŒÅhŠ˜Ý­ó&Ø‹æn]MwÀ:juŠ ŒU¶x¯ôð[¼¨Ûmü6)lä:1©ñ‘+Ò€»wûîƒÇ ·®0‰È,-²)u&­&æÀ¯]”N—þm1½‘gå'ËM:%è‹TF­ÑçÌ š`Š¿'ÉÓןnÖ–"-2Ýwç3¢{çMŠJ*ÐÙ4ii®—ù%äU–¼“/juЬ¼ÜEƒbä˹Uš¡ËoÈ.7ä*ËÙÉ/#Wù$hK°óƒV~R»Õ1:þ˜èt‰L”©ñ=Âõräô"ÿï& •öî} × Ho™ŽÃúò6šNO–cmÀØú¿ Ó%2Ù†–”4³¬>+‚›'Á*@dã——ÿÃí Ý[^u`½ ‚ñ ‚ ã;~ñf˫ǰj{DèõåŸ=õ2^ÙýöÎí[ç½çC/nÙÄeØóÎ!à§ññÇÿûßGgidÂÁ®@)þ?¾… ¨~BIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/09_file_protocol_embedded.png0000644000175000017500000003510312032647166027762 0ustar ebourgebourg‰PNG  IHDR¼ŠÇdsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜìÁ0 IDATxÚí}{˜TՕ諸šLÌ8¹%‚i››B$ÌHQèS<ì°µ)·"RŽ¨é¡ êv°s#…Œ-Wº°|åZÆ¡b´hi¡Óò(‰(G º|´¼šK§CA1B”Wsjþ8§NÇ>Ï:õèîõûüü§ö^{íµvŸ½ö:ûì@ „8àèÑ£h@ ¸ð h@ F€A@  @`Ѐ@ ƒ@ •ˆsˆwŸ|ñu4 (~y÷­øB úwЀ@ %.¸à‚/¿üÒl<@ Ê‚Åþ\+h7Ü‹6B ÅÝôü\€v@ úJ—iø]2u<û™ãÄ÷îš1íŽ@ rȲÚ)ðÍ…–Æ”uª¡ùct´e4Íû»ò ¶ìù›Ÿ]pÞ™c_ømû‡ÿ»f:ÌxòÅ׏Ì/¿üòÉ_7ò>Â`1„‘xk`SÖ©†æ_ü·ëÑ×Öp÷c+"Ópàd÷°óΞaû¾uÞ©]_§4‚&ìIúÒ4%½ó“´ïO¨Å)ù܃eëšUîGÒ4LXôSݲ”XhNr¾ËŽih\8lˆò,uó 1Ø;×;rÁõùó-»Û/v^Ë^]û÷¤z~éžE&ìIZí Ÿ°ý‘T ƪ„Í ½Ý-7{—rC ê|üM·Ïè~¢W  {<^§³NO-bÐæÌdÎ÷ïÛ #G p8†ù›àf§'/lËíqž¶xíÜÍÕ0cÉhll€Qõ±e3ÿŽå;aôÜß,óË—™;wo4º›eGq÷‰ÁJt·“e§-Yÿ‡DøÂ…Àݦ@ÙO^8(«Ù‰ùw,ßítrÓö’õ÷{!ÅW”_ç'×§§<Ôæt:¡mádI£E˜ŠtÎÙ™5jôÎ; ªæ¯'8d!ÒŽ?¾îÞ/U§ ›ÝŸlüÙʽN–>ïõc8•½ñļeûx•¦Ï{}Á°õ¿n}ð}¸ñ–Ú»2¶‹e/¿¥yù¤KxŶGÿqyÒ ¬oɳõWs3·Zy¥ð1Q Y(ð_·>È8ìÈË«7ù¥ìCÉÛ¯ÜÊÝqšæ[AÐ\\fÖ¸‚ìi"Ó0ë†ñ×_u¾1èn„ŒÿþÃó/ëüêøÁk\Óþnèµ·_ùà?M|>رÍBß©³çWw†Ÿ_W!O+W \ö ¯ëçÞ#p¯ÌÏïj(:N½¹ +„ûˆª‚·šŸÛÊÏÄó–õÀs_KF~÷γoüR˜ÂÎ5)x¸ù¡éNç®7ÞÜÊÝ<¼æŸ—'ÔCÉæ‡¦;“ ÿcÍ~‘Óפàáæÿ UÁ®¼šp¥2ìxîAÆé¤J.¿o’h\=ë?D~÷Nó†F°ìûá¥;àªÛ_‚bY!øP–)0aîõ„(ùtâ½?¶ë{ŸûæàêÔËßœ<îºhäèz`Õ¦ßôÍžøæì¹uêÝ­‘Šyj¹áêh0žp][Ó¥xÍLX¼§¡«'™xP¸I”@WÀƒ•S†&<°añ4ÖéÜ N%$´‡Ž)-ϲӖÜïåî³ì´%ËfåÊìÜ·_T&8s(x'NcYXýžLf6»í½Õ0r„wÄHØ»Oˆ6xá$?iTw:ÛÎÏÇ.å‚ÓÙÖ8uêÔ`tçŒ%˜ ¦s6{`ß^`ÙQ#.%Ø™´¦/sÇÎ5ËoóÍûE¤gòB>àÃõ0ò’+‡_ ê=œWiMscâ°T%–>cÚ0¸òZŠeaý¦íÙl6»¿ó½,;}Ü•ÀÝïy9œÓgL?~)Wž(\C !rèOÀ²— ¼4ˆ7-”±=h0Ž~ͯúø›³‡Nftü©íþæ[>Úµ>ÜõÁÁÏ3gN±'Ÿ9qôôw‡ì»û‘ßTNØ«ï® Æ3®@Ì—ô_:0|– µ:ÊßLú„= ®ï®õx<4„óH˜°Çãõz½7/uG¸ÜEGÜMµ˜u@ T÷4‰Ö®ÕbÅsOö@bÞ¤IS§6¶9‹ò”s:Û9á¢hÃru‡cÂý¿™;Še»£Á©SË»ýe§-^»X0)º,y7TùgÙés_["Ì÷Ò`b!ãtžž#ÇÕ·7ÏÁ²Î½‘Goóém™ÌÜ#½±§çˆVrHU¸L R+#/ù";ôÆÜòó¸Šjáš2ÆQ¬ÃιhÏ™ìŸÏ|Íž° Ølß×}ì {šeûØ·< p‡xAO§eodw” V4PEtƒ¢Ó)ZV¤B®AR-Í— TH“ÜÃùÈç,| èp ›¹lÉ¾É WïÜ·`höÀÊÅËwÂè¹±à¾;®.D§Ñ#ë³KGŒvç4éÆã ÕÀ1Ìß¼Á¿í©ImÎÕ Ÿž¸^%eQ"xo›;º-Ú[yÛÿ°‚»\9¿jê?]ÁÄÖ¬n Œ™~)€kè€Ý#ßFà¸ä–}ãn§Âûá¥ã^_p…RÒª.à$Àå}õ±JNVCÙìþä3ËzàŠ[þó΃ó|ßj™ŠÈ4|õeß±/Nÿóé“_÷eÎù«s¾ó?¿õÛõË·lß=Ãöï;uôÔÉ/OŸüò̹çžÏJbÃÚž†lvÛSó|Z;õ^›Ó™›ã­,‚EØ»ï`NàÈäÏq‡cõ“ÑNg[låA ¢µ«{ï_2e¹^p;68e¸Ýj31¯°­:³±~»sùâÄ,QgaCÉ{)‰zjjïxñ:O{xæH¶çÿ-Úp(ëp\:vâNçšÕm”%¯øùËJƒ€½‡>øhãt‡q8 ~Ä߯šH 10ñ‹…k«Áå'ÆM®nsƒfÂ5ôG9U5³% „s´Ñ4ç—o=õ¶§¿³öÙïþáåóR+¿»sýù»7ÿõî÷ÎûtÃw>Zw·ëÎù8ù?>zçìíïõϧEãù „­9óð„ûañäÉS¦L™ÚØÆŽªÿͲ™Ã‡cÂýKf8m 'ÇöŽævJšûtðÅ“§6¶©íQæo^<Ý N™2ÅÂy Êê S§6®†Ñsgr‘Š÷¶¹£ag4856bî4–%§Xù2ö#áp ›œátîæ¶ˆ»ì½mî(–mkœúÞÄ%bõÔÔ6Øñâu ŽK}?½ÑéÜõÆ3‰ÃÙìéÏÎõ±ûb³B?ý ÷™¢p¨Ã¼Û¾WÜrŸ_¤ž¹~ÞãkXvú¼Ÿ_ÅÝá$0ûæ=¾†õ-ù×é—j†¹dáJ5äAÆÍóG°,ó¸ï럠r&u8®¾¾Ñé\Ó|ëËûNçšæ[—î€a¾ûæWÁŽ•¿ðýó-O”e ٠連GÊîr½¶Sc¿ýÑݯ4Ä`Ýô<÷„“Mˆ¹'„÷¥<¾0ÿyd‘¿ô+ŠdÌòÚ­gA ŸPš}ƒÐïðÂuh°\^xá…Î~Ñß%S/mXóëÕïÀ|(Ω|‘Vðr ååDàxxýv“wðêYoüazºx!mÄ“Ýçžwö,Û÷­óNíýZïK&,¢ƒRJöð'6Ø A¬R% JiÎ#œÅ]ÌÏ:Ŧ–Ž {ŠHÇU¸ÑŠavæÌ4” &iµ™p–¥SÜþÄkÒV÷)fzºÆÖ]`3uu^lÉ Ë n?:Û7e<‡“Løõ¦m{ÉÁ‘m¼¿‚;§A¼Å¡¡ùcpç.…c`óîÇ6Þsûxô®-Ð!4ˆhµOŸ8yì/ùbÖßþKÇ_}²qˎ믾‚4[„ZœÎ„"iš"O™x°vév'›ç–$Ëlj‡š°‹(0óç·@ݲMñrD’옭9þ+©X#Ó^¨Å©PR«ib×DpU¹¡[dƒ¦íN'ŒYð¦ÀÑÅU³`»©;gM™*aŠß-D Lü~-ûË,¬î ÖêhmS'ø jäº3fÁ›±@¯I—!*1ß ~Caä[-ÛhÿŽô*;hhßòÉ'œ8Ýwú4ûµ˜Vû‘¤ ¢ÓÐ\eòtÕŸ–NÓé(arw)&B!$¢2ñ ½hQÔ1)¦%‹øD(áOtÊ7a.f`¡®†ÖTÀ%Íè4Mêš4Éá÷ñjÑN§]ütc4•»›rA&¬·OÕ\úðùÜQ.j`’àóA"©a™…UZL„è†VNg9r?åúbÞeˆŠ€Úžœ ˆŠŠ½J½§Aɦm7­¶ˆtÕÄR¶ cZiŠ[¸wîÎ]‹ÖÙ‘<5•´ ¹X5úo&™ð×\à Ô‹$h7­Ö5%38E ùQõž.7Çñé ÔûM™K Êçnß”`’à£LÙ_­€?"ÍÙˆüO/˜r¢‚r h¢ÂQêLƒñs¬Òjk€HWMŒÔî<{¶äÚXÀ"k–þ[»iµ®™Áù=HX¿¡Ê’¹T¢†è¦LU7øh€¤ –[´l7DA¹§Ck"ŽÆA iÐ`9ZícS®¸ï’¿ñýs‡ÿú+PÐjÓ÷N1#uxõXÿ²˜vRÚðÆóIŽ"ˆ5Õ5^“x0n³¨v¤b\¦"jÖl £ŽúcF õ)ß üêÒöƒæ„,~ðçúÉeqhµÐU÷vËßM˜¢®N„„Oø˜dÂ/¤ç•bÕ—éþD4Î1mGE ïš°šË¿Èôt‰åªgâQóìÞuF‚[¡ºš@Á´–]†¨Xãž@ %F% Å£ÕV¡«}©Ï$»$“»Yêj¤µ:êñx½^O´ºUX3ËÅjF tÄÝTëõzk›Üën"—·šø¥7ójü|”CÑy¼^/ 5~Ó2‰êT' ”XØ@‹º'+ Ûx?Î1 ˆ G%rO,Zù´cxû™Sì7ÇNõÙ©/2ßÝÿ G«ýá7~û¼sœNžV»7}nÇ;¿9fÂÁž ê¦;ýÚ*ßn&¶´Èă±*õW¢ýÂW‘™x†p?é¢B`„{ⳓî{nßšˆãë ¢""‡£÷4|õeŸó¼S}}Ù3'$´ÚÙlöÜs}Çû²gÙ³g²l_öÜs/´µe&ÙUŒÃ—Š$ÖÖ`I ´Öñé4-­˜€± ­1Œvåð Q±¨Ä ¡iÎ/¯¸!™=›Í²lölßÙÓç²gÎ=Ûw&{ö,°p–=ËfYöìÙS‡öÚKaEÑ1ª êä3( [ÈBTD $¨î Ñÿ‚Øñv›Ù*w?¶݉ð¨'$šÏ10aO´š?uÏG wÐ Ãï’©ãÙÏ'¾w׌‰Ån½ÏìA d¼þV×îÚ9 ddzºÆÖÌvñ玃Z¼-ʳÛ„½è,—5öˆÑg¾7òÀoÛ?DŸ!Æ¿¡àNX®@,ZVWWW7fÁ›iŒ LQcg;›é»kº«y›ZyWóîl6›íà.Œ·˜Ív¬¼kÁ{‡³övD«TÉ‚’Æš›Aß]Ëý·²3[$ Ês-._wP쎇ìîW‘œ^ ë‹áÁA“ç4ˆOegÂÑê ¬iáw¶Ä`âo§†üPLýùÂgî–§`ö «ÿõ¼ËÞ™¿ž7Êá°Òê‘Ì¡êë.¿Øî™ '¶„¨™ýÂªð‹­‹Ï9ôT¤4SZï–­Ÿçêêh/ö\k›Óõ|„aA…ää1O§B>@Ø‹CÍîl™óB‡Ó¹mÜùRÈ é–9̘—BnI™ƒï‡ïù}“e§ÞùRh”ÑÍvpÅÄ3Í¿ Wÿòûn™óˆ\àðÊ3k`ü}«ê~Ìߪ™cs¢rت9 èÚ‹b/r8´çl¶ƒ+WR½ib×$B/v]½¼üëž]øÂ~§.½í¹¹S†Š«_zÛœKâ½cøv5eª„)\ïî:R;qd³Û¡f‚ºýÝR [äû¾dø†…/ôBL ÁV¦œÎ%'æÜ$íšà#Y™à‹¿ãîç >><ùPï$Q­l¶cå]ÏrŒ£Þ"hC…>j`ßÓPìSÙD¿ LQc;£ë^zrqbþbý“‡oz+<Ö‘ílnŒ¥¿s¼Ã1~æ¯ÇËè»¶ÀßÞ{‰Ã1T!°ýå§jî|i•ûHë³Ï7¯\åøñKoÕi}vad7?Qµ¿Üñèã/Î㦮 ™XÝ^wÅ9x!_·`)\6FÅ\F¼6füe>>4qÊPø”ñ¼ËhØ_laõÛ_~þž/½u‘bât8Æ[p:Ÿœxi•l&ûHYf”¨!Çu3¶5VhbÅ¡À-C»ŒÙ­+vW@’,µ¥¦á É7轡À˜(567% ùü˜šð.CN5Ùú ¨½D5}Ih”û.éîùÁ½¹kÑ:ûΠ‡¿”5!ÛþÊ=7 ¾çÑm¹Ùbû»5“&_ߟü3‘­¦Õ»Æ·Òø<ü4èáfÙ™ßÄϾ¢êG2—]|1ðš2—?¦.Ù²õól¶«ÆüØ„ýÕ ÔÜ)ÍÙìôaCªÛ·ªíz•2àžvÏ¡U­Ü[˜l¶ãÝøe“&_`¸›Ûß­[†Ô–Vëfö4grA ý<ÓPVj쇻ww4Þô{`aêR!q‚Z~fU\ëC!¶fö ’üvËí]\ÚM«uMÒŠ¨­G:xjl®äÃÝp±%s‘àãZ±ëˆë0PuÛM´Ü¢9§;Cÿ~´eδèýŽÌGjeø Ç›&¹poaàSfÛuTvXí…²-íÖqŽúà « %Fq¨±‡ ©®™Mk½6þÁÂz×v±Ú]#æ²Ùƒï‡Þ ç6ab.5¸§]÷éó+7= 6£¤Ñ^ît‡cüÌ_¯®;¼Jx¿£ô‘¬Œì ÷øË^nKÿCpØû«þ8ýÞ¨§ºv6¤Z7ÈõQÞð#ƒ{0f@ ʈADíp ½üê?ê¥|–¿›øã‘#ÆiyNî#…O™m×Q¹g½R¬š’ãÇ\×¾aý!øbý ‘„»&¬ƒGñÉó#™C¢F¹ê_¬_±Í´L.¾êp™4¯!·pA-Úb}‰ÃýÓ3L×§‰5®ŸMâ0Þ¢Ã1ôb×àzõ`6ß 3à» 3 y䨱OŸÌïØ×½5ýþÜ¿ºòò«9jìï~ÿÛg²}YŽûÅGï0.ù¢)KǼ<ƒ~†cfš*ÞoÏÏÍŸ2‡®ö /Žñu0 #+š*¨¹sÉð sn|Åéd«æ, sû¤bu–éÁG·Ï¹‡~ÛZï) kä ¤îæáÆ›~ÀVÍ™~]ûËÜwÁG·Ï¹‘v:/½m΄ÜwJ™×»ÇЉÏSæ Hóåpì…)¨8A3þUD׋_âäÊHT傃¥OÁô%!³ÃÌ|áHøFú§š>¤Ö8 sOT>“ 11p¨±ï~lcáÇHï~yÁ‘iOŠŽÆAüz³p±%FöðªgÛ\sU>”ì‡><¼êÙçá§V÷*š7²\[$[ðQ¶³¹±ƒ2øQ‰-xý­®Ã=¡¤Æ–íi@jl¢â"¤Æ–MHÛ3×]g÷áKE[Ì™¸V}ÄŒŸùëÕ3EWÞõÈ65}É“•d5,S Œ>Êf;Zžú£2Í€° sÜ¢PÔØÓùœ7úÕ{¬W¯›úÉê=ŸØ,¶8êþº UÑppËž×û÷‚u?ïÿ¯,˜çºD ƒ>hKÔØ•2 0¼§Á”LÙeäζ·é¥U‚2LØjáóšuêLØ;¿E§LQüeL½¢Íg1á0Ђ™Leg%wšÓ¾wĵ+9hÁ 56À ®¨í“¦æÛfúL<ÚâÜÞRecÍă!ˆ¤S”^‡`_°Ä1ŸYª\<&âžÚ0hyqä æ I÷¯ñ…=aÛ©±DE€ÛÓP´gq˜ÉÏ[¯×ëѺÄ=a&z<^¯7Ïä×¾^¯^]¾>W2̨­e[B’æBT smJSQC6aojw/K-s7Å$Ý:%'4¡ßŠ9ez»;ý>Šhq•|¯7K®3ñ`®L<è]s—µó®Ì 7b+mõd#J¸V6jãA®­Ìײ&Œ QyÜM÷² æ y¼XíFÍýU{ø¡¦4½ñ!BöBÁO.N¬R% Jèê/ÛŸÈLØ#5öxÂE',¶Çéº>20!4)ûж@5JÚs\—ûSÛ]ŸN¥RéÜê)§ù;’§c"DC8N½¹ø‡,Á²TJ·n&ŒV·¦R©T*åK†„´G¤N”úf¡®†ÖT*ÕÚÐ’[^˜¤˜Zd=5¹}P>"™/’%}œªéúîZ¾.æšH¥Ä­(Mg^Šn­Ž*ž® ä{}äÚum ´oÊpàvçváj®u©¨-(É©mÈV ­žˆ!Ž¥¶J_k+@hKR+™ò@ö!lŽ˜Ò ¯¾Ýñú[]w?¶ñÕ·;Œ×2E-üU§ù¡f5Å”ééË cë3/¶dðsϸԛ ºB%zôwrǹQ[ŠYͧÛà#±&•Œ h$0Ã=QPßeRnÆ©®|:ú#±€ \U¹/¹‡W?<ÕêÊx»#~*ÕsMêý²HÔ ÅÔº Q5íjR@º¢ÂLáÏ/Eóu9¶qI+JÓYRƈ¥Ã@‹—&,ຶº{¹er]]]gîÚ]åRQ[¤¤Q[%æKòI¦D6i<¨ik|„(ÛÒê¤@ð…²ûrC•(hxõíŽ[s×·77ˆ¨±O8yìØ±/fýEíTׯ-;T…j¹í<¤"‹ÇÇ­J¹T^˜É/åóËLµ\ŸrìXH…i5­—s*ÍÄc0ë¥^µŸh~·50Iðûµì¯L½j%Š $o :˜g&ùH™ý#[²Ä4²ÑÄ/1Ó¨–~4k"Y/ÌŽê“cPAowgçÒ›9Ì× r]XBbãëæ¦°Šêkr×ós”+Pï&­LÉyÊù ûíé ÄÒéúîZ ù\W•;‘d¸‘æ&3ñ쨫¶õü²|RÁÞQ–l!ZVJ_èt¿D!¹ˆûÀáîÇ6nÜz|ãÖ¯j>˜¢Ææ2Z ¹_†OLQü£2MS¤Í&ñ®K!0 ù#镉éE‹¢ŽIé4‰kyY‰P2’NÑÂÓX¤‹Q>_>pIë5Mêští÷Ñ¢œ˜‹›KjcL€¦rwS.Èăµàö©„jÞD·IDATšK>Ÿ;º)¸€I‚ω¤†ýeVi1¢Z9íqºxÑõ i7o(²õÀAÐD42ñ`˜‰å-­” l‹|Ó¼‰äBÌê¡$ç4 ¯«¼ã_3ØSŠ–ÇTÝ¢vJ[L<špnoñ¶äsÌlW|6U¥Z>¿EŽ {’*¦³¦Œ(ëJö˜Œ¯(Ÿ?” CÂüµšÚ…¸»¨0¢­}m‘@~C¬_TÄž†ÒPcKLi'Æ6´ÒívîÎ]‹sS„\Q,ŸÊAˆ4Õ2QÚM«u-—h¢!Ì+F̉ezºøXب÷›2éšË50I0–6œ(¶ô×B’©Ì3}¤ÌþÏ(JƒëÚš.įZ¦ÑxîWÃDÚ9L#£z åø…ª4áÝ•´˜V!Ö•8† ‡T‘]=™|ù(¿/š oM WC¶ÊŒ¤¤ˆ¸›b› ‘ÏåWì½Ýcùa–ééR5%eÄés¾s |þ––®”øZEm«êIJRS)†zÕIãAM[¥¯ØG³]µÀ(}º/:J”i¸þªó7n=~÷c…κAçðÝ"Pc÷vwv¶Üì] ,ÔùTcµ„€8Ëd.©+ûªG7ÒÔnZ­kÄo‡D_âò%{»;¡Ê’¹T¢†è¦LU7øh€¤ –[4ëtW  {<^§³Nd c¹ ¥õ ª!XØš„â™Èú¨¶¶žÓÀ…ËüªŠûÜ\”+hí z¼óÂWø®@Ìöxçë~šŸw\]„OSë M@ݲˆ?‘$d,"IOm¸Š/Izj½K9•(íÂjé~õ.dâÑ®†0-lx¶1y)ø#­ÕQg¾ÓÉŽYУ„½7{—°c4ø!DÒ´Òtæ•‘ ÀGºæ,@ùêØÜ‚„òÕ±]¹éŽ ¶ØõÔSË/)Õ£è4„=Œmhøk“šÕ‰ãld¢¯õ죑“ahj8yÌöÓ7y”¾P‰èR¿ž˜uÃx~[ƒ‘ˆ¡8ÔØFSF_"XXïA¬…œ›ñœ˜õ<¬Ù@Gõ1ÆŒÀbdÕdÊòÌ}d*£ØÕ“Ê%ËŠ˜“¬œäjQr 6E NËž‘×äµ®@,PTHѲ”âš –TWÑñ)OÑé´–Â*…‰Š©©!(#Þ~å&ìI’ì@Ñ©¼¸@€&šÎ‚2j=UÞ—¾8–›‹R+¦Tû…ýÕÕ•Óˆj‹næGQ1•ñ@4²ª¯5ì£r¢EG’ž0“¦‰`8$gJ*‡@¨”îõĬÆßz£ûÅ»^7b€âPcKLõvËßMh'åëR®(Öl*̦” 9'&Úù& OÛº® n…êj ’(¶Ã2ú>2’ÿÐÙT+|„·©Ý­‘ø-Fw@7 ©4óœb0‚¢Ó¾d!{š™°bÃX%žÓ£Æ>t2{¤ãOm÷7ßòÑ®-ÀQcŸ9Åž<~æÄÑÓ5¶¹'n æKz¤Ûæ¥ûí™d—dâ èˆ;ÿèןëóz½žhukþ°N™XT˜»©ÖëõÖ6¹#†—”¤®©Šç6{h¨ñóQEóÛÂi¨ñ›–IT‡ :I Ä´hÖé¯×ë½yiÞĆ|D°ÞfÁ~OImw½°§Ä„kŽÖý¢Òì¨.u¾Ÿõ%œSh$è>.ÄńڇÛ0á`OÐò¦;Õ³N [ZdâÁX•zþ›t0{&¤!\¢þëdøþä£5¶ò» ¤ÆF * H-Ÿ8’]5Aû§"‰-ÞLÐ\šˆßƒ1aO(cZc¥êŸÞÛßë£ä·D ú5¶ RŒ*¨:y_kb+y&.Ò^ Ä0M[f”äœ1à‚°D@ 0ßPLïKFºXú9ŠñöÓ:8H4ÊaÂÞùüGŹïÆóÊ ^“ë*±¥÷%qµ@”vŸÓPŒG¼5ªb[æûJ£ö®Ø)¿S§í.ÓÇvEà E’‰%¼áÁxk,àò¾š­óш²—Ú„àü)º×8H@ *%Ç`Ÿ<"C‡.¹0‰˜#Gê!g.%‹Èé’7bÁÖ£‘K.µ·ÔF¨j 2P«¨jšXG×wªü2êP£Š6ØYº¢p6sw}¸:JäV‰¿¬£èˆ>•H¾n2áXI{p=¤ÆV·Rc›jhàQc›nÝÀã¾ØË,9C7ý 6žÓ $q6F.¬ÊC­`.1J‡V±´Ã( ¶„»Ùl×l§ö–´FæÈ¦!œN¥RahOˆm¢Ç@­ª*§Ø› º¢‹“¾tZLÌk¬ƒ2S:«ŸÎ!QE›éˆ²‰ÍÜ … ºQÇü©J$ºøõƒ ©± RcÛGùÖË>ú^9*•+ß |2Z#uR"±ˆ!Å´Ô°Ò5Û©½¥ƒÊ(U ` VkÎ±Ž¶ïTøe´A Š6ÕÕç°%6sÞ—ä$¶<’öz£¢ƒ¤ÆFjìrRc %ª¸™˜‡4çY5ËK:%Ë›W©R äúáW—½ÝåmÝ^joµ„¥˜ûÛšVjÍéëë vgM"ªhS)†×(º¾›.EØ[aê­7*z#$Rc#5v.¹Wzjl¢¡ä¯Ñk]׳DË«ŒyÖXV È Ýý)Ç`SÄ`ʼnEJ€S{[¦J!J¶Æœb™oEÉ/c¼ª@mcG¬J èúd0ž©—(ÇÐ%I?ÑÆ;&®k¥Î4p,ØÄÿd%‘©±ËJM4”¥œ§–g‰–Wâ˜îß°oOƒ’ÄÙ¥‹b"±¨Ð%›bÁ6Û5Û©½e bƒT5F$[SÕT-›HUòTÑ–;R›¹ì™¬i§£]ùŠwÄ0áPWCÐõe"TÐŽ½RgŒ#Í©±Í4ÔØ¦œn[i(rEey0ú7Ñò†òáU0aW¾AIâl˜\XŸ‡šd#0ßëÉ!ªDºdS,ØVºf;µ·Ì$ŽìHÒãñ:c,ðC·Z–_)Ù-5˜¨%6µ²³ºŸA’i»-u¤@6sBépM{m§¨r$ìõz¹ÕER&UŽ„½Â#1ßtžM^[¥ }=ÔØEKv!5¶ZêRæ#5Ciä<Ìù˜e€Ýç4(ùž “ “¹‰AÊ‘M@*E“SâÜ%A ès@“RçYÎýl+µ·ägGvNT&ìæã„^%Sô¸¶øÎ¸uþ~uD)Ìl§´´•{]⺚âŸ]y º©±©±íejì9¬ z–hyÝ1`$?Ü/s <õä¿åÑ·" *1Ó£Æ>}2{¼c_÷ÖôûsgüêÊ˯樱¿ûýoœÉöe9jì½ÃÔêC‘’¯)ã-2˜«%-[«£Ï|§“³ 5&¦Æ§Æ¶À4•Á3˜o´–KÌU¥))±p-šuºøÓGû:?Ú·ý£}Û;3»¶ïïÚ‰1`#÷„ÄCBKCb •Ⲅ¨) MÑb—q, /5mJɨalTµÌ:#56¨ØtNƒîùÂ4­v2iÉ ØAl±¢G[xi R²Î–ņERc#ˆòÃ>î #ÄÄrFPÒê6æŠgâAèš¿Ô!¹Þ,SJÎFS0k6™D˜°‡HlKºOä+aÂæøÄµ”ÑY.ks[ë[Ø)\1;:+ëŽaBp ¿ Ábw«yÑRHg#:†ˆãeTJ™8ÿãQŸx®ñ‰ç²v£ýÃýj½²±}ýþU¿ï}½µç•Eo¼¨Szó¢ñãÇ·èýìæEãmænñƱyѸÙ+zm7€ V©’%47n|¶K')¿yÑ8©á6/7®˜-Ûét]Ùk«Áá #~ìÈžBs~õÎ{™‰¼yѸܠì]1[><´ÜÑ»b¶Poüøñµ0>äRÅm‰…«>N$­(­+ÜUÔËUÖ¾O´CþZG%±= Êm+yV¨û%kØÂ¹¾ô®˜=û±Çfç®*f¡³òg¬ØA½+fç«æŠ Jô®˜=NG1¹4=¯#)­lNç¤Úw…©±É@jì0Ȩ±-¤ñ42г§49”µÈD\×Ö@w/ôvwÖÕÕuæ®ÝU.ã$×=ñ 'Zݪÿ1¯YÖl2‰Œ”=%â×¹_˜Jùv‰ÊâãÑ&å1®˜-äédmSŒšbriz^#nëÓ˜!Ž'Q)!56Rckd´75¶–GÀ*¥µ4µH-ºÙÅ‹’Ÿ ©I Ì“Cq‚ÜCSùÀÕFbéÒíESžHZMäÄQ»_TeJ]> R*¦Æ£mÍbÖ¼Vt¢öŠÚ·|rш§ûNœê;&¦Æn~-¡²†‹ÔiøÃ³$§RéäÞÊ•Ÿ0q(&B!XÆ-Ü£‹“¾tZºˆO„’>ž’¼¾»ÖÈ|DZ8w5´¦R©V1“™^Ó¤®IÐü³Žg|æÒÐ˽9£!œN¥RahOh™K>_.j਱µì/·°J‹‰ átšÄònÍé|rBÁOöÑ#D‹©øNuF!Ž¢dÜÓPÌÜOZ%Gùü‰d˜‹Ä׿R}­5íµÑ ªŒkŽ%•J¥–•›é´¢”)£bÃ«Çæ’»ògKåX¬P&w¤Æ&–BjlôÔØÚ¹;k”ÖŠÔ"a´ LÚë’çì¡H¦|þ––.N_›âˆqbéún½¸Á,錉 Â&tîk[̸J¶µ€4âŠÒY­Ä‰é†ÈcÄbF¼¦UK…˜Æ8q<™J©¤Ÿ\çŤÆ6×4Rc›rºAjl`U±2œ“öZöqO§Œ!±HÇr BœPÇvñz³1²‘ÒÚÈh´×¥Ë1 •…3‰ÛÕœj–«¤„UÔØåRcÛl1EaÞVºG÷cÚk# Rc‹÷4 aQi@jlùÄÔØHm·ÅäUÆ,xÓe³dÌ7 ˆRÅ ˜i¤ÆF :d™åw˜i@ *0Ó€ÔØ¢Rr vHÊoేSXV]´ã,/ߣB•Cml¬w7ɵ¹^o.n73ñ T(öØp–5[•Xˆ½æ5!í|Z!ˆJ€Mç4/° ì17_E[œÛ»âA*à’~º,ñd¥†²OÅ.q ¥õ5¦{gÜSÜ +ÂgÒL8‘t ÿ|'mÛ˜”ŽÆ’ 1Ðò Ú‹U2•°&ÇJfS»{Yj™›?y½·»Óâ©ÒU²i-ú‰Úþ4+öqˆ[åQUC›À…¢sçÁgâQȪªBÙc4¢Ë7­Æ9nœ.LjÁ­FÐâ²Ñ$ò˜WƒQ~”ꜞÇDL¼bˆc…‰5¹s  Ptku´àÌ8®å›6F¿"R›ÀŸb†fÈÜ: ãHr Få(C Ë«ë¸paC<þ²p8¾iÚ ƒ$­nåH%|ÉA‘.ÇÁ-Æœ4—Ù|àWƒ18r D*a+™x´«!Hlèâðrbé0Ðiäc{1ô†XÉ™©G¿’W[ÉŸb†fŨq˜’£\g±1DàBÑhêž”ÏÌ›¥}±2HÔ8Ç  Ë±o4rÒ\6D²!"Y«QepO¨ØÇ=a O˜X“»>Í=z]z·'Æ8ʸ@,`ž`<Ç)adOCaÊðPò§˜ Y1BäƒSJ>HÜ>W ºVÈhTÏgÉɆ RƒQYù†ÒžÓ Ëx’‰GÎí-Þ᎓ï@£|þP²Àe¥i³ÊH×Ûþã4+Ö`YN18e*¶wÍâhœMU©–' dÇ&+ƒ¯'DùQ>î =v&Ö䎤¤ˆˆv “LŒÈ/Í5­ ).„~ÅZ]{8Ä VLPÃùŽZ-Nl&Tã•Ö-—Ob©¶`smƒ[›A…ˆH6¤x&”Á @TJŽ¡,M»1_Rí|…üûcÉ2Û¿!”«‚ˆÕ3Ô¹í”âv5•‘Ìü™7/uç^e“êŠIÚ¸›j m¿Ð”Sˆ…åjpÿðz½µM&š"Õ¢èt}w­Çã¡!,ìBåN´ <åõz“¾|aÃþ2jp+£1ØÐMþ%Çeãõz=ÑêVÁ÷Ò›½^¯×CCŸ,”ϸ2z"$Ø@î Â>Ø|*‰*÷DHùQiÀ¢ür ÈV…@˜GéŽÅL(?0Ç€@ô `Ѐ@ *Ü9 hƒÐæ BÅ8§ +©•ÌÒpU4èžKÆs×d³²g;lä&¹vIøÁKÙw ÄàÈ10aOÒGSEjStºÔg:€¢}IÏ`‰ŠíA]ù]Ìsz¥Óô5å÷רÎ4 ˆŠ€{˜p"4U8ñðê™ÕÃùÿë>‚‹Ês-Õ$O­2 dâABR$¸¢×*…tNÃ0ÂYOù¢2þe•Ö¥DÓDj™z$j«m1<_±øÁU HÌ(6 á‘&'Ë6bOUrð<Ž*ÐøÄsO<—E ˆâ@xÂ(>ÂÅœ_½óÁÞcžE›[´Yq™Ý¼hܸq³Wôf³ÙÞ³s÷{WÌæ¯Äeu+î(#I&ê@hX_+=me¿÷®˜={EïæEJÈL¤ºyѸqã¸û½+fÏ~ì±Ù¹kAN¨è&±u¹L’*šê©õO¸¶`IÝ¢%ܸ>º%È]ç55ÒutíIv Ì4 ˆŠ€­{ˆÌ¿¬‘[kÔvžkY:YG[)o2krÿ<Ðk•Bzlw.±«Êݹgd8w-d¶üËÊÖëågm+íP8õ%Kêh¥!Ü8tÕP)À¥”âqº½&w~´™‘F Ë6 #àáN¢P~KÅ#n¶çÚ$\zwpS&pñ ðŽÅ¾¸«\ÄkY~^Ä¿Lj½ø(Ž%U…Û8T PÁ†hm“;’v•a €A¨p{ÄT%]ìÆ¥á¹6ÊçŘ=<íjÓEÚPHä_V¶^Å’*Âmfª˜X{Mƒ¿)ÉÐeÇH+øz@TV¾¡ð'»4[±áeh©y®5^€h•Ú•dò/,SHë.£•üËÊÖ 9N]=%Œ¨mŠ˜»ˆ)=5T 0áÔâ}¯ÆG‘,»ÐþbЀ@ Ê{ÏiE ’Äó½^¡ðfÉ"´Ø<×j1ƒÆGƒ®kkºB¡<Ÿ²% iëoÿ²²uC‚”ê‘=HTÛ‚%+„œT€ËàÐð{øO 4U²lcý%©±D ¤Æ–íi(»DTÁ傸{™x°¶»^­¯å5ÄwC"¶©±D¥À^î ŠNû’õü#&œŸ˜°hUN(if¡o¿žålQàFHQ)°÷ Ц¨Ä=£ètZ3v¢Ê©g#†f|Ì4 ˆò£Üƒ1ü– aöîi@ 4 ˆŒ"ä¬q$–‘Û|P26¨ …eö#‚i²ú¾¹í7£ƒQ~ØË=Q„GgE‘»1Ña?§gÌØùIý2˜¨d¦i½ËQfSb”bЀ@ RŽ¡p:l݉­¨؆§‡\؉G!ÿÉe…0_5‘Z@¬YÖ–Dm¬Í„ê„ à•¶Òk5*êþ:Jù!56¨jlñ?  Æ.œ»’(°µû¹bÅc"ÊéŠa¾VÓDDÖ¬F­hË k³zu}×ꨚ«cµ×F¨½ûÇ(ÅLù1ì¥Ã.9¶v¶¡©{Rþ½S1Ì×jšˆÈšÉ„ „¶ô¼iªºÒ}T͹Æj¯Ð(ÅÃD%@à·,É9 öR —›Û”…ùº·»ªÀ@[VÞO9‹bÏ’ò}Wè(Å @TJŽ¡T';B%\‰ØE†Ì×]= \j–Tm«@U5Ýg%äû®ÄQŠÜ¢R`ë9 Å£Ã.9¶©­R˜¯Õ4éÌó+f6µ»•dÍ*m¨ª–ûÔTUá•¶Òk¥@ þy K¡;Œ–cIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/10_child_sampler.png0000644000175000017500000010315512032647166026112 0ustar ebourgebourg‰PNG  IHDRkÏ©1xsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜf0y” IDATxÚì½}\×}ÿû¹’“8±])NÂ*¤âòºÉvq¼ J«å¡ ¥ÔÒ&Õ¥7êÞ¦þ)[T™†°·¿:­—à"R¿ý¥î½ÙÈ÷µvÜ Å„ð°r"ì‘ÍdÝ„›È…´ZÙ/'’-W’%vgî³³»3³ìŸ÷K¬†s¾çœï÷Ì9Ÿ9sf†€\…!¢«W¯Â ר½{7 /€œj@­µ ¶;´ÿìj©œ+k:ÓoÊgäÇEŸ«õèà\YÓ·ÿeïwj¾:BõÝ“m “*ŠâL_uÇ(%¬…RË™þÃùÙ)Q^nFš¶SŠÍøA¨Ó¶™°è 6 ã$X[5(cÙùÁgù˜ãW¸óó,[vÀ¿Aú†·m=ëÅu+Qgz«ªªªzgÖ±P€mN‚µÕ¼ÃæºÁŽ‘‘é™6}xáMgžœ¨Þ|8aòOMÏ~E勈Á•ݹ•ËDù›ÁË S‘¶—äy± €í›P*UÖËŽNËWWùéQ–¥úÊ †Q\q}®–ªªššššššªÞ™Æõ¹ZªªªZ\¾`Ê™Þªšššª—´D4ú¯¦ˆ.,&¢²Â=²cŠ…Ê #ÕV¹æ* ¨áÛñ,;ÚY[+O h<¦¾1fåÿªv2mW'Ê”R5ÂU•G!±©hgäZ%"}e=Èä*?=BDõ•z5¡Óztp>´Ï’í”äÃäËί\ ¸é""š;Ï]‘‰àâ„» ø¾ŽQ–­7Gö­ª*I´ÎÑl=L¶Vã|_­Ù©ö¼ýhŸ¦Tgúä`G;¢wJL÷U‡«Ê²óvsmRÖŸ‰“è+ë„‘ðfIe T§"V‰vpžeK-ŽÓ¦|q¦·¶s”By÷–ÍLóÇ+*‚Ú”Bú5Ÿ®¬,jˆ`–í¬•~ Bìƒ_j…ꉗjë<¥EL†©h›ì¦è»ðaW¤w_žeG;;#‹Åø*`–59$S²y¡²FF"5—Döˆãìýá¼T"ˆëLâuA†©8ÒTƲ£Ž³WˆèÊYGx@|â €êÌ’ ÒWÖ ÑâÊ"¢<ÃRA ÅŸ(J ´uuuD42Í‹¢;?'¥Qw÷U¨ïŽ’ªš…î),£àíûÌ/®Õ¸P×5uÚ\!V;M¦âxØ”´SB^Pô«ôGšJæ¤eî"°ÎìH&Qžá@éàÜÜyÎwØÀŸ„²¦#z- ,[%–%¡¸PZÁË+,&š›[¹LWVIê*.Žs#Ó|[åÊQÙCžŠ°êº'ÛôtålëÑÁŽÖ¸—j)Ê0ù‡ûÏPëQû<ËŽvÖŒ&~åS*qMÆ¡®»MŸÁXFmK`YÒ¾R Òˆ @ªUÊ3(œ›;Ïñt^SS†tXiü+Z‰(¸9?:}¶pqލ¬pOÐòâÊYJfÓ*Ãäîï^©î<ÚW­ Õ e˜|Óé)SäI©ÑŽÖÂ3ý‡[\9Nz‰SÍøú¿ØK’ªu]ãÇ+˜Ð«Ô‘v]”©.d«G`]Iê !†É—^¼jï´k¿f5ô…W´†íѨ=l'dÙ>ª)Ÿ¢Šh;ÓTF#ᧈ´ Ê8Ù]}<üºéáü£ç©4Áíxå{âŠÆ×ÐíûÐ>ŠÐž`’5³#ôüVäy,¥kƒ$ °>ìH2ôâÕQ–„Rí•Uý‘¦Ò‘ÁùÑΚÐdùýñ¼Âb¢y" Û‰?’X°æ›ú»Wj;íGû §ŽWhª'>öCP,KuÒ»·¤‡¾(|Ï[ʚΘWŽv¨Ü"—†çíæÚÁDÆ×=Ž‘ºÙ‰„ÒÒ2A˜gG;ªéëŸ VMæbY}ÚXO’}û’´äFDToÖ¾AÌä›ú¥UFe)z–(¼ òtQ ›#™Šãã]uìh§ôŽÒ…Ê(µ8$Ë0ù‡;›Â+©‚P×=©²? è¨ôÚÆ×yÝ„RË™þþΦ2y¡®k|Üa) 5¶ÔrF]}&ïL€¬ë"ºzõ*rÝ»w³ðÈY VÔ*P«j¨Uµ Ô*©‘àË«cccðÈ×®][“Z•¬À• ³8Îd’íH&QBÍ›mN>õ" °exìÑÏ%™rÇfi’­ýâ °¸víÚ®]»’LŒ§¬Àº’Òms¨U»@­€M®VEq¦·ªªwFŒ>Ò;#ŠëYW§ÙìôÊp6‹ú±8›N§¡ÓÅ”•¶ÍT+–d–¨Ú†ê¬‘QÍlF\°¡jUb¤£oåi ûÒØ…ˆ„ô:í íf‘Áê±2P‚©Ÿâ(é±fB¯¦, “l‹Áêñð<Ïóý‡„CRµ=™qÀæT«,;ÚÑzÖ-X¥eךÒú«t°ªªwf¦W:Þâò‰>WKUUUU‹Ë'†òú\-U555UU½3¢É¥¢‰ ¢äª÷ÂÜ_§½N³N¶Ðè¬Èzfì·öâ©Áhš]º¤l3XfôЦ¼QÚT$Φkb‡šÃcó*êZΦ³q^§Y§Óëõ©­ô†rÅf —«lN©™›D­ÖwuÕ±óö£}¼ü(ÃTŸšš˜˜wXJA¾þʲ£Ó•Òñy»¹º‹:Ï4•ÑÜ`WPòò}GçÊ,]–2éˆ6K åª\¬F .ë’ÅÃó¼g€šmœ<÷ÂØOÙŸ†+å–Û /ÜÆÛ$"ÎÖLI®h2d°z ‡‚)“Ïëj¶’ÍãáÏ GÒ ’³I¹x>:£«Ùm ®ÛȧH•š °iÔ*‘¾Ía)eG;åX#äG„ºî6½t\êºûçIiæV.‰âÌôê ‹‰hqå éOMMM¯`˜„rUM¬^£¢½DDd0š\î \]ºDD—–f:4ú]²/^¬ºZC{@­ds4¨Ù$Ú[Tü•:Éç5 H•(ØW’‚}ƒ5Tõ茦°6.Øp!¦ ŠÍØ`Rû:@ÞáNËù£ƒ­…gÌტÏÕztpže‰eIHQ,³£µ£Ä²’„ÍO”¾`ÿA²^ð6î¿0VbqÄËÍKK³³CèOIr™%ÅærsVr»LF‘t¡ßVuØÏ[ D^§ÙѲJ6© Ñ1`Óéô,{HÊ“kÉ›$ÒÞVVáxGѾ„®Ø\j•aò÷w¯Tw v9ʨ¸’H}g»稬Éa^9Ú1’‚±=…e$ÌÕuO¶©/¦ªÈUŽÆJŒ…?ï-*7õ;b ÁhjvÛÈe2ZÉ@‘ßrÒVd¶qÉŽ¢M’žs²zæ—òãMkÉ›¯ÓÜLÞ ÉVwèøÂ²— aG%ã:€ &å÷­2LEÛ™¦²¹¹¹àË+sDT\˜—ª|Ã2–uœ½"Iø”UX®žj=Ub4¨üu!þ¶Áh2 1¿µõª=ø(’²M%–½A±èRýë:pii¶ÛÓÚŽê½0ëÁä› Ãj•ˆ˜|Sw}D¼v׳ìhGµc±ŒXv´£:Ù]å›NwÕ óvsøµÉä*ØðAášÚ,htݺØ'î ÆCá,ã!áÁ ˜ÓÔ«ËRƒÙéU¶zÝé#§J‚»A Ve©A§ÓYÉ6`ŠÌÖ’XŒÏ›Y Ö’Sèõz½ÎJM®fí%""ÓÀIsu K–¸’•]°¡0DtõêUµ?566^»vmckyò©çlíÇ-€-€µç›¶öcN§3¡Îܽ{7¾¼ r¨U»ìØ,½víÚɧžCÀ VsŽÇýÜ®]»°uj5GÙð'½Àúƒ}«j¨Uµ Àz°cÛ¶|×®]?@ŽƒµUµ @ꤰ@gúª;FY–ˆ¡´éL¿)Ÿ@öHvmUô¹Z«;F¨¾k||bbbr²“ºúfD1§#Š3½UUUU½¹V1]µÊ?;8ϲõÝm CD “o:}\úMD3½U555555U½3±Âq¦WúS‹Ë'ú\-UUUU-.Ÿ˜d"EŸ«¥ª¦¦&,CÃ]®–šš)qxé—eG;ªƒJZ²¬[Uï+Â+³[M­ŠâÌô B]¥^á¯>WKç([×5>ÞUÇŽv¶¸|ëìhÇtå¸ÃR*óvsuuži*£¹Á®³¾^L˜†ï;:8Wfé²”ÑHG/7~ž:Ç–2š|–g˜Š¶Éî:A„ºîɶ †Å™¾£ƒs¡õà©©ˆ¼[G­j Yw~.(dõ•u‚0wž +QA¨ënÓS^a±ô»ÿp^^a1Í­\YÐN# e¢âB}a1-®È›çIidZm¹”eG;ZƒÂ—a*ŽOMA¶lµJtye.ú€L‰f¬–ìhgmç(˦dœa*ÚÎ4• ;o7×ÖöÎàî?ÀVT« SQYO,;:ÍÇÿqOaYô²Â=™¬ážÂ2„ºôîæ3ù¦ÓSS]utôa»*ÀT«D¤?ÒT*#­á‡Ÿfz{gD‘aò Ê‚B–ŸeÙ²†üÌÝgÛwœ½’¤´%Z\‰N«oë®*+ÌÇK6ɾo•É7õOöUwØÍµv""ªë?Î0D”o:ݵRÕÙY;J$Ôu6åg¶ŠAûvs¤'¨ôêÒöpgÓù£ƒvsí P÷õ‰O½XóÕà b©¬©óp>Ã#䛆ˆ®^½ªöç±±±ÆÆÆk×®m½–ïÚµ áØ(œNgB¹{÷n|yä.P« wI¼oÕétÂM`CH°o›;@öH¸ouÇZòU°o@­µ  V€ZP«@­µ ¶³ZEŸ«¥ªªªÅå‰Hgz«ªªzg‚õ¹ZZ\>QŒÎ2Ó[UUUÕ;}|CXÿʈ3½555555UU½¯¯„KO¯&Š·«FF /É›“=fÖiØFj•aò ‹‰eçW.Ñ••E"™ª‡Ë+sÅ…ù ¥âøÔÔÔÔñ †ÙÔÊ5Ê‹âL_Lj ÔuOMˆ}(ìŠ4+­äá0RAãã]u‚0ÒÑ—q'Ç4'ýV¬³Ó°}Ô*é+ë‰hdš'¢+Üùy–eÙÑižˆˆŸ©¯ÔGTÝL¯|mìᕾêŽQ–eÙÑŽê –’kÕÖêbL͈¢bziÁW¾æ'W–Š*Sg*gG;=Íô†Ò‡˜³tÖÖÆ,Æ%ÖòCÉÃ)Š¿XË1 ±áUØðñêVÇ¢¢ˆTkN(:Š‘QúS‹Ë\£-ÒgÕiØ^j•ö– -®øDñòÊ\]]$^EÑ·²XV¸'d혮”/‰1LEÛdw B]÷d›tœï;:8Wfé²”ÑHG¯\Q™©øô¢8ÓwtpŽê»ÆÇ'&&’\„‹¯Œ¶ÅÊû\-£l]×øxW;ÚÙâò©‘p12?ˆâLRbUZð®¯Tó°´Ú=111î°”ÊVaù¾ŽQ–­ëŸì< í1ysäÑÑpˆ”L*qÞn®î¢Î3Me47ØuV¾±!ãNÀæeG2‰^ùÕ-ùzà=”g8P687·rYZ雬¤‘‘‘‘iþHáy:ЙL)uÝm „•(ÎLQq¡¾°˜hnqÅ'êãos‡M)¦Ï ‹¡ÖÂ3ý‡ó×v¿8y;¢èãÎÏ ‚$+ë„‘‘óœïp:HÒtee±¬ðˆfå;kG‰H¨ïž:^‘Ør^a1Ñ\¨9+‹$¥…{¢Ž'De‡äE'+&šêºûç_L47·r™(?õH©5-¦Ç yè÷dL­Æ› n]úÊ6Ú³RF4·¸ÂÑ\qe>äzK6¨±X–’.±é™Š¶3M‹GççíæZ{]×øñŠt+“²Ë+1‚.]ᕤ®pçé@§†„ºîÉÊéꎑ‘é™6}xU2Þ²èsµœgYbYäÍ).ÌK»ã);$/›}=¾iIö~lÉ/-¥ÿ+iëêèèh}¥žaò ÊXvÞnMuK%ў²à³AÉÝÄWNÏä›NOMuÕ D´–§‹R´³§°,ú@deÜ¢èãÎÓCBí§?ÒTƲ£Ž³WÔ,‹¢ïl×à•Y]u‚¹¾—A‡d£ó`“±†÷­î),A¨“Ôižá@© o"'%hW®…”nXZ%R“šéõmÝu‚ )$†©¨¬$mÇLXE;ÉT~š'â§GY¶ì€!½}ÉùáòÊ\R Ÿy‡;-¥ÂÜ`—Ë'ªXVXF•<&5GÝcIµbíɜӰ=Õjžá@™låLúo7‘&ÿpgSÍÙ͵ÒsÜù¦Ó]u¼ݜä“ÝñéÃO²×ÖvŽPYSgpç¨þH° Ga“â bLe¤gÏãí$¬ühgmmç¨P×uÚ”ö.Jì~z$ôàTb'›ëYv^z€)Þ2ÃT´u׳ìhGµc±ŒÂo9Ði*„ÑÎÚéÊîôÖ\3èÌ8 ›†ˆ®^½ªè•_ÝÂFÀ\`¦·jºr2½-¹¹C’òr÷îÝøòê¦!æí`ÛpÁfaòM§OÃØV`m@­µ  VXð”|ê98ä&=ú9tæõq F¨ÕœÆÖ~ N¹Æµk×víÚuíÚµ”r}ñ/ÿw¸îþßÿœ@ÁÀ‚Ñj ÀɧžKã:jçÿ‚í=€ ƒ@­0©0°µ Àv˜Tvàü ,j³“ –@XÔ*“ j$ùyî?I½e‚@­riRÙIl<_úoGµüË¿žAC0°µ*Š3}Õ£l¤× BÝ×'>õbÍWG¨¾{²MO|_u‡ô»‚Á6Ö›U¿âIÍ=ù‰Öï†NjAxðoÎþ_G ¶ÚÉ+]™šDŸ«µ‹:ûç3Œâ¨.%ír3UayõäËv¹ï}w&—\˜GRoˆïlëQû¼äðÒ¦3ý¦|f,ñÃËZÆ‘ëúäñsD$ô]üÃ<ü¥!:ü—¿ú0dÔªñƒÈCSSǃ].`C'•@ªjU Ÿžz©ã!ß³–Ïþó?îÚóRÇ'0 hpye®¸2_æ¢ð¨(©®ŽêEI¦0LÅñÐð¸Ýçj=:8WÖt¦ÿp]9Ûz4\±lý¾wïÌÈä²á¤ÔIªJ7å3¢è;ÛÚ7Ó¿ÖnRXˆH¼üŒå³ÿüS:tjºã #ŠÞÿo]ÓÿšòØ"Š\Ï—Ï tè”4.‰¤ç^9AD‚¸JÐÛ… ¬í‹âLoUUUUïLœVEŸ«¥ª¦¦&ü×pb—«¥¦¦¦ªªÅ勯 Ñ;•xf¦W:Þâò‰>WKUU8£b)lgµšâ?Q "ýaõ· 'ôûŽÿ¥nÃC•†®_êª4t½è¬„¿þЧ?õð§?õpå×_Z wü+Ï<úP¥á ϬÂÿ=öÌŠdùΊóØ£ÎeàΊó˜!”1dJJ,?’Á)yl¦78òTõÎÄ k555U---qã?=R_©W´Æ0mÝõ,;?ø,?œÏ0 “جP1µr‹¸,¼¢6ÚÇð_ïøµÿ¥6¹ÌôVUõ¾.}¦7\‡øðÅä {Kîöä»GŠ ¹¼2GDÅ…yRgÈ7>.]Äý?cFšߨ`…9N±QÊ“ΞÑExéÛÿ<Dzõ§þV'ˆ«Á/ä?ò?¿"ýŽLVecÎ3Ï|áÓŸzXXîø_zò“_aY–ýn{¥¡ÒÐ5½úbph Ž$/uúô§®|ô ÇBÇ#×Úïа¶ö“ΦQ«ð}GçÊ,]–2éèã#¥²£ç©sÜa)£9iè”V &&&Æ–RAéè Ÿ<,;Ú1])Ÿ·›«»¨óLSÍ v•FgµRØŽjÕ/¦úO:Óü~q•{a”e?ÒòùH:βÃ_9ÿã/|åãúÕ3õÕö3ÝÓßën`Gþ毟ñú{ôdÙŸM^¸¼êWW¦'J?ûÆÓ/­ «~qå¸pàSð_>1115u<¼ä»êÂj2FÇ <å”±ìüÊe"¢++‹e ùÑKV¢83=B‚P©j\Åâ‡bY¡ù ‹ÐàÆ;~í)ÌRìhÇteØ]òÿª…OžL/MJnÏxC¦¢²žXv´£º5þªC­vŒ”Y‘ºÅ‰Ÿãû’ZK2{f–;«Ü‡I :…¿Æ&᱈e‡'ïÌ—>Bÿïé3ýO´žïýŒ BÃ?NMKHdÈò‹Ü“m£,û™îéïwV ²ã¢úoù°¶ö“NîªU–í¬­MxA&•DÅ…úÂb"Z\ _ú BùpåÅŽéÒA‚P×ݦ—Ž B]wÿá<)ÍÜÊeÍRÀÚj2ÿD,;üwU•ô·âãã?œ§Û»ˆµ’ÑåÕ¤ï ù¸ósA=§¯¬„¹óœOEÑ·²H‚PZ¸GaD¢++‹e…{ÒsÙÑŽÖ³1ÃTpHT‘¹ŠÃcžá@© ŒLóDty…òÒ¨ŒÖP¬T„¤›“77nûµÿ%?¹§€˜A=|йÝž”ZM±!ǧºê–·›k®YJM¯ÅªQãs0Õì™XˆÄ@ÜqµÁ$<æüù#Zýí½ûˆhä…‹¡ãrSáÿÞñ¯üj‘¡lOžÌJPÿ-Ö20aÒÉ]µ*uÉ_±ìhgmç(ËJâRë¼õ¹Zªªj¥Äéè¤Jj5~'€ ÔÿÝ÷^°ÿõ/¯ýô7.ä;B3Ä¥å¹ðEˆæ–.„Õﯚ[º¸8=òÑ¿üÇ– ÂØ·¾ã \ZžkøÄÇ¿ðпõ¥ ;ÿ/Ç¢³ì<^Û>βAS°@ºo+#8€DÝÏ«ÜyJf•1NÑ2LEÛ™¦RA`çíæÚZi¿S²Â:~xÌ3(“ćoeQ¹ªke EÜñ ÚÿÖ>¹¨‡/cnO¯!ǧÆÇ–R! 9×…# sœb£4ZšLöl ,ŠjUu0‰Ê¢ö;æ¿’©â¼&™]ÁÔ"L:¹«V“fOaY²£(úÎv ÎQ™ÅÑU'Y*€-? ¦øBûVÅ÷ÿÉŒ‚0ní™ñ òãþ€èìÙó‘ðI ¢ìû@@ U|†Xv䞌¤úã7}î3D?Ÿ|ùìÆ?óérü1ðÛŸíúÞ¿úG…ŒïÙó„?þêÈùï<ÿ¿ï1)e¦þ¥4zhKL¥Å°D ™üô(ËRqa¼¢eòM§§¦ºê"’ïwÒ®ƒâð(Ý©§¹•ËW¸óÅ•ñã^ø®ô4]±úÊ$É„Eh‰¿ ý/SSL2áKÊímÃäîﮄD (qMP9?Ç)6Jé` Ù38°DF†™ø¿*&ÑcŽÚï$“%i*&M¯VCÛžFg¯$½È‘ò AŠ¥°åÕªê?1´Øà¿¼¼LD¥|0æx@yÛÿQ–}þâŒàŸyÁͲÞÿ‰ûÑ~ïáz"rÿyéÈï=\ϲ?wüëó.È“—ò{Mÿt@$ãakÏy¥¿®ú/þÏ|ú³Ÿù§™U.æï¤Ú¢TGi>¨ä¤­™r'm`©´†)Qœé뉹 ƒ¾­»N¢¥ÕâÊ ™«<<æ”ÑÈô³+Å*»hõGšJaÄqVÚÞpÖ1"¥MGô)®®FŠÐx¦6Õ¥¸ N11áKÅí¸YýÞðãnR4Ë ÷„®¤(Ë{Tðz@оæµ9N±QòƒidÏÔÀò{‡[Šaòÿüëaoðæ¿ñO¼? 1˜Èǵßòÿ½þ I¦~ô/¹YV~œhñÒå¨ãjÃZx Jã&õ!»_È7îZ±Aµ IDAT©ê´›kìÁW“èUÇŠ¶îúÑÎÑŽêŲ2bçG;ªéëŸJ¯,¯‚mKp4NQ”î…þÓŸŽ‘@ýüñÃ÷‹¥[f$b€!"ºÿO[9pòkU牄š¯íOò¥²ÄßÞW$ÿ}ôáßÏ ¢ø±ÿíÏwäéùÐÅWþíO¿òé…‹2ãAkÿvôÏÿ¡®ýÜþPq÷#X \³£µ£4[×=ÙV!µ£DB]×iS~déí¬¥®îº‘ŽÙºéH}åñ¸&ÊrYÓ™þÃñ²)êÕ§TÖÔ)½®5ø×ó]ÕöyVQæ*Ý“mú<òÁÁênSWóMý“…}ÕæZ; BêoQMT„wÒZ= PÂ) _%| Ýž¥†0LE[çJkuõ¼T\©%ÜôGšÊFíæÚRKS08"kB÷JU§¹Ö.ë“ñGâfR^©/)·4?¹ì™Xˆˆ~Ûôøw÷þÛŸ~åé/V=MDDðß'•Ÿþу‰(sHå7CbôÐô{ýäŒ}åüת„ÿþäŒ}å|øø#-;ýô«Š¾ÐòÂéóJ¦"ÃZh úÛïþÍÿ ý“0DtõêUíD¯üêÖC¼g«ºàäSÏÙÚ¡+€\ÃÚóM[û±k×®¥Ô™ü\ç|ö;™úfð•¥õÝSÇ+ˆh¦·jºròxEÆæ³µ¼?¦nÙ ½"N>õÜÁúG´ÓŒœÛ_^Ý Y»r`_sýƒe`±öÉo7UlÒÑf’¤¼Ü½{7¾¼ À–w¦2("ƒ‹OeMgB¡¯,–É‘úÎv γ¬æË´6¬ˆ±‘s[£'l™†lÕEgŸýê´tª–4uÓa Ü’@­°¥H熈CñT “o:}z J.c¾éô”)»NH³ˆ-³Ô„5³Í0°è>7q4¢^)€·XB­r?Ô* €Zä,X[``P«€žT°g €@­n=®]»vò©çà°À ;µºÕxìÑÏíÚµ /±[ƒÉï à ,`+÷­€õ&ù÷­²pÈY’Ý ðʯnÁY Õ*¶€ ;Ô*P«j¨Uµ Ô*P«j¨Uµ Ô*P«j¨Uµ @n±ƒˆN>õrŠÇý1D$Šâvk¼µç›¶öcèðN ¿Á9¹ãaIžJœ|ê9[û1†avHÿ¿víÚ6tÊöl5|…€SÀopÎ&ûV@î²#¥Ô¢8ÓWÝ1ʲD$uÝ“m “ÁÚˆâL_õteÒfEŸ«µ‹:ûç]9+ýÈÏh}Ößr³a$ûzâSrN޳Q-UìcRe¨{òx“^W[˜$;CJ}l£F› œ¹ÖaЛéí¥¶ÔŒˆâL_?^±5b± »4Õu‡'/¨UEßÙÖꞜȧ\^™+®Ìg1ôc½:Š‚+R–ÚJé¦âøÔÔqå¿VŸªØ2=O£¥´ºlÑÑ7£ÇÐ À›×seæÊöð>Ó[5]9y<ÅŒa*Ú*{«zi*û‚5½©—v*Ôw·U0Œ8Ó[Ýѧ蟭五v\^™«¯ÔÇõ$Ÿ«¥ªª¦¦¦¦¦¦Åå“Ô[Õ;3Ó+ìEq¦·ªJúŸ ªÅå‹S(¢èsµTÕÔÔTUõΨè—++‹e…{ä?ÖQ&G¹"t¡3ÚQÝ'ÕVÕ->WKU•ÑØñÕèôɨÛÞªÞQLèÞ$½—ë\9+90Þ{UA?(´1Þíáq\:ØÇ«•Wlî,t(ý9¾EB4ÎG•žF|_ü°†Î°Ñ«¹5secxgz;¨ûx“”…pªzgD‘©8ÞMá¿æÔÔ“ ì(¹Óâ[´½:¸¾²žHôm‰n» <ýÄøV¥çl ×¥ V¦¢íL¡£ºÕ壺ZuNNNLLŒ;,4øl¨µ#Ô5>>î°,:z{[§+''Ç–ÅŽ¾H‚éʉ‰‰‰‰‰IóÊÑ8•pål׊yrbbb²›:âþ*~fûü¼Ý\SS#ýP;²t‰ã †©h›ì® Ý×ÐrKuNNºÝÝ_—¥O½ Ü«í½Í@ÐQŠÞ›š:^Á0ñmTs»ÏÕâ(<#u¶Ê鎵2ów:b†ì´{øæÐÒª½"<¬uRW(îè »¢™;3Wö†w~zD&µ,ˆâL_uOLLHc©$xF¦ùõE©“'}[¢¹R±EÛ~z¤¾ò¡=&st _ºø¾¿n—»NyÒÜ$®Kí)+&ßÔ?ÙI]Õa]È0ÇO›‚·àó ‹#i˚δU0 åÏ-=Ðú-[ÄînÓG® F¦å¢^}Üy ®–ÆýUÞÅ»ÆÇÇÇ»¤SᚬÃ犘꩸¥¾;3›kµÜ›Ð{›£T¼§ØFE·K)ò‚}­­»^½Ô¼Ãfrœ•4½¾%B´&]Õ<<¬å,NK7Ð68^93seixÅ™(±š { Ëâ¤ézõÌt§Nm”Z´õ鬭­©©©ž®”vqè4-†æ/Qœyv°Ø|xw¢Î¹i\·#宯ä›NOžé­n={¦ÿp¾t1Þ4Mu•Á„Å…yáLòßIryennÔ\k'Š6túÙÖ£öy–X­•T÷H5­ó~íWäÅ_í)¸%Sh»WË{[å6*¹ýòÊ\qe^’1­h3O·ž½Ò8a(‚m¿¼šà¿¼2G…è ¹r±ñ3×:ïZ&ÿpw_uu ËnÈÓ9Ÿ:7¼Eµ¦#í[õ¹Z¤mÇL¾É\ÜÂ]9lÊ.¸¶1ô¢fÏÙD®Û‘f>}e}Çôe¢<Ù¦ii?o†*¶§°¬¾«_Y}J}Ýàjé¢ÎÓ¦|_èÇÆ¸0ìŠX= ·dÀ{[…6fÄíLÅqótËÙ+æµÙÜ!ØÎRU­W,®\¡ŠüpÐè«ðâ†×1sesèKU/VŸšjó¹ZöÍlÔ#8:s¢EDÞas}õôL›¾‚aô•ÅÏò‡Ûöœu,6u¶ñ ;çfq]ºï[å§G‚5]^™ =àtee1#‘Œøé‘úÊèGãó µW§/¯ÌI׌áCÄÁ¹ŠRpK8}†¯\zo ¬”(µQÁí S!ß‘Å÷©ï[ ¢Gœïr,RJ¡Üv!ØÞ¨õйÁ£¡aí w¾¸²‚aÐrˆ˜¹²1ôÅŒriz&º-96uÊçÊÅ•+A];‚.ãIý‘¦Åižv°ØlÊgä®ÛìQJo°ŠyMš´ƒ°¢­{ºÖ\k'J-Mõ#Õôõ‰O%a¯¾ûL¡£ºº“e…RË™þØ'6óM§+{«j:•ßÊ&о•ŲÂ#‘뻲¢êŠê£}…“mLb·0Œ<}†Çmïm ”Ú¨àöîÉ6}Û™•Öj)e]WwýH‚ëu&ßÔyàüѹH˜ÒèáÛ!Û‰‘NiÓQ(š*½¢¾»›:kkÃ#ƒZgÐã90\¯ÿÌ•½á]_Yß1ͯ¨HÉ!uÝãRõ¤ûƹ9uJ§[$Á$õUWWSYÓ™îú£Ój-Ú>ƒ’ ”6i“6ûJ’ôh5i‹—J¿Y\'=°"®ógÄ6ü`Ò—gññ4ø §Æf™¹´ ¾o5õ­‡âLoøI )›}¼‰æfôðc~.Æá ÃàË«À¦§âøTåt_ªÏõ‹âLßf7 6š‹MG¶àÍ›DtíÚµ“O=·Þ%7üàßþý×òiõæ¾B€À©‘ 3Wî) 4ªw|jCÊoÿà—£ÿ~r˹!¢«W¯¢ÿ€Ü!¼jä"»víbf‡üÿÛÍÖžoÚÚ¡+ÀW85üç䎇¥g­¤µUJÿëÙç;nþmñuæÖ}_¨Ç—à¶)x'r”©—qoáë…e«÷ûž{ZÝâxfÎÆeÞgÓéô24JѪgSùSľb‚ÄíâlRvY¢¨:ÇgW±ÛRY^Ζ ߪ6@Õx‚†äHwÊTßKÒ[’+^Šø-èp6ÙéÍF(%³ñUÊFŠêÙ €ÜÕÑŽS=¯³}j¬›°ùQ˜#rß;K;ïÿ]wß^¼áA¸r»ÛÈKx,Ô”1^§YSäHìØ.NÕ5/´·›h) v VÇ*Oâ6R­ƒ×i¶/”S‰R¡2ûœMgv; ’ogÓÙ‹†y¾€¼N³ÎFk°r¦~Þšb=Ã5ál:·Ñ£˜}}¯?zJ<¼!—»S¦ú^Òuk¦þK>éI×5Þå…òƒæ‚LÇ:bvÝõs¯ÓÜ`ãÖ¥ÓÎŽ]ð6ORÎí"2%ê!™=›rãô›hzTž#rç÷ù–Þñ‹þUáÎíÕ*z«ã®î/›·ï6n£‡·/yƒÝÆë47SxRælºÛ>Õ !c¼NsÃ’Å“x®Ú&k««ÇãhÜ—};œ­™¬¥E ¼œ­aÉâ°”$\ð0M³K—Riç^h·IÝ¢ ÑÖ¾àæ²è«ÐRèzгélœ×iÖéBL^§Y{ý$»®’/Jq6öå>çè¡öa¥5¾Üà…¬\¹‡£× C׋êk‹)¹(S}/Y=Ä5k-©Æ‡@!™÷ÂÜ_ h0êz:èØPþ ™M¦!J•Ô*Z¥w…)ØW’ Ë³›N™C4mªècSÉØ…Њ‚›L&-ÿÇxX=@QýYã¼K5d`Û«Ž”çˆõcÙwÕÏÚygU¸}ëëׯÿæóå_j¨-xáåŸ!p¼VdK2˜ÛìÒHzii¶¼ho(ÕÞ¢rÙÿe ç;8œÔõö­f-€d°&wÊÙìE±ÑRÉ˹]ñ±×ˆ\%û d¶+<¹Z3|ëÇÕl%›Çß;A=.ú Çc5yÖ%‹‡çyÏ5 ælR.ž—gô:Íö¢ažçyž7º›]ÊM+WW>Qår¶æ…öažç‡Ûš4ØÕì6Jåz,K ›lJ7X=‡„CêO)ñ-¬*ã ºš›©Ÿçùs'ìOö‘O¼úó‹W~í}ïûßE´*úÅ÷~påÑ¿?óÔ׎"†¦©b‡©‚F‡Å¦Óé¥?=x"ô¦*uSÐè0w–û÷>9ô|ºy?FtõÞ'ŸÏ´ÙuæÏˆžR« þ|2ÜØ?#úñЌޙ{Äœ|ý:|’ã¼uÍÏÞ}ÛïWoùE¢ïÞñžßºë™ÉAQwîdüoûÅ€X¿¸sçn¸k›µ @ƒÕƒ{§°‘ôüÕcý#·EAþÀÂê΀U H ¢€DAn¿¶8 wm";N>õÜ@îóÉ ­¡° yéïN ä>ª;¶á& l=¯6#ÏC­.Ç0æÃ9›ÂÃ1G°€MLxFOÔ¦=ÜŽØì|ÇÍ¿-¾Îܺï õ•ðÆöï[@Ž2õò/î-|½°lõ¾bß3c¯Â!P«[ΦÓI_"×élkñ¶×i޶±Ÿ°”¸¼1ÕTüS‚úkÙ ²ËEÕY–]»-±•%àl™ð­zÕŒ«5$ë$v{º‰×î-É/Eü–Ft8›Ö›×JÉl|•²Ñ…¢ºG6 wu´ãTÏë úCŸÕAd½ÿdùIß;K;ïÿ]wß^¼áA¸r 9¤Sáà 0)ȳí°@öILΦ3;‡Ó-"gÓ5/´·‡_kŸ‚oœ4$›WsûB9•¤XM›á$ö¢až/ ¯Ó,ÿf¯â÷ÓµÛþkn¼—Ôë47ô”?¡¹Î×?‰ÜžfâLÔ­™úC.ùdÚ¯8ð./”KoóÏh¬#f×P?÷:Í 6n]:íìXäSלÛEdJÔCÖèá =qŒ6ñ ‰AêsDNàü>ÿÁÒ;~Ñ¿*ܹ½zãCEou|ÃÕýeâ–ýFSEÉù÷®‰8[èó%)ȳm¶À`4Í.]Z›ðu4îÓž6BŸ ‹YiÐÈËÙ–,KIÂUŠØú'¬qî…v›þ‚F[{*_u”·%…ë,½^ºnâl:çušuºÐe“×iÖÅ^E…rÉ23k_îsŽjWü"m|¹Á ¸èUäøßœMgãBË ê L‰Ýžnâ CìP³ÖêZ|’y/ŒÑÁýŠ£–a‚Ž kUÛ!³É4D©’ZE«ô®0òïQ+w¹`v³Ó)sˆ¦M}l*»Z9p“ɤåÿ«(ª?¯=è‘å´›Q1’¥yIVÐK^§9náä‰ÿÓ<% ÅñõQ©!Èð¨‘þ‘u–}Wý÷\¡wV…Û·Þ¹~ýúo>_þ¥†Ú‚^þ— ë€ZS[”\‘}ö•Ëþ—¤YÐh1¹äªÆë´/´ÿeiÒ~ãl Á¡ïKÇÕG­† ã“¢Ú±ñŒ½ü“û oÝñߺí¿þ_7®¾ñºï];Þsß½túY"·©ä–Á:PÒÓÚÖ°d‰_CM$o¶•ZålÍ4½¯#zÖ±ƒfCª™Ìnc’uÊ`ý Vi¶æÏÙ•7æÞS°nòE¬ðÁÐDìŒch²3Xà "£dÁ: r×G6ȪU&x˜,RÕb'Y¥Œ‘Ë £)—îŒôQ¥(¦RS•åÁåì‚}%³¿(¶…~'ãÀX³Á륭®ñÒ.Z­iÁRtV²+¦Üå–‚Ý© ÑbJÉ]J‹ ’\åܽ+(¡Aµ¦5œøŠ6÷•+µ'*F*i$Kæö{x]šsô”XþüI7“s»LÑž‰/K«t°¸ø“_Ý•ï½qûÍ[«WoÜüõ›o½vlÿãDtá§ÿq÷‡_øöðE¸h3É-ƒÑD³§Ñëõ­±gròfÇ6ò]–w\qŽž‹§ åL³C¬~(tíàÒ‘ÊI–ê_Ðè°™^CT/I«- ¹´4;;ôˆþ tÈiZèÃëÁƒ—–fKŒ9âD¥[Aò/Èçj!ˆW,¶‚ÄWW ɘÙ9ÍÙtnMÚE«5Mq¶b—£}i¹KE®Ú/x÷-‘ÑJäNÁ`Ú%¦ô‚FÇ€M§Ó³ì!™ƒ¢c¤œ&üGK‰9¸?—s»LF+Ñùô[_–fé`0ñŸ?Ú÷û¯±·ß÷»»>>¶üôo^c×~à7}/Ïíο{èOÿEÃÃðÒf‘[œÍ^4ìáC·m¢÷G'5wïØ¶¾Ëô¢•Ó¾Ðn³¦šMþT“F%Ó®¿Áh²/{ÉPZ?2­ÙjKBö•›ú±7e›¯êõ¦m<Ѩå(Š!HE¬®á ÉŽÙ”š–j—KÞf\o0œ²Ú‹ƒˆKÅ`ú%¦Þ ƒÕã±F=|£ø4Q’¼ÙÁ5Z÷†Æ .•fªœAQei•25p¥3Gdç÷^½çwfßzûzÍG¿ü¡{ ß¿3ÿíoÑÅŸM "ùoî)šµ}sÂz¬!Ü r‹s»J"Ë`45»9«Áмa·‡óâ7†fºGO‰%[{ ÖRƒ±¤Ç*ݰó:­=%q 𜭙,ñ «ÙhKÁþƒñ;øe›¯½Ë ‘¾¹ ÈÙ÷­’Á|p,©¥£É%Ý´ô:í²{ ËÞ v‘ÙwEžw‰¿]¹éQ A\Db·HŽJ5Æ›M5^koZR]Îë´»R¶©PbŠ?ÛÔ †=¼†3â™Ä1’uƒ¹}ÁÍ)Œ ḴݑÛ]®&˜#6„é_ŽÝußë×o^á¿uó· î/.{@GDß½pÆoÝ ì|÷í¾2€ðm¹µ·¨\6tx—Bcpòòf;¬­rn×ìÐPè¶Ôšnцn ²4¤’™ò./”™µ¯0Ôò&¼:Ѩ¿¢Íèr VÙôz==xbØaˆÎHt¨?¦ŠmÉдÙè0ÚtúVVÖƒuÀ­DŠHxðD»ÉÕ,í…°/›ƒ)õ˜\nesΦӵ†ï¿«Üs4Xܺý)V x ¿èt:*o05„훆‹ì:]+Ë 2%× h͉³/WBÝa8÷BÔû‹$çIoIÆšÕœ>â•^ÓTÍ+u¹·N§gÙOœ¿“%i›ŠÕ±& „=¼†S zhàUBŸ&¦3ì?¸ÐÐLíÃÖT»YøW¯R AVäªâ±‘<þÍçxèÇ7wÞßþÑÊÒ+ž›êÿácùÄ«?¿xå×Þ÷¾ÿ]D«¢_|ïWýû3O}í(b¸1ºTI~¨È•‚F‡EÚØCDƒ'BoªJAž1DtõêU"Úµk×vs6>V _i^`ä(Ïß{oøwÆÞ- IDAT¿¼ÊÙÌËæ´ŸèQuàÚÌ®/^§Ù±Oý>¶lÏkxlõ:ÍV²­Sû”*»©Çh3œ11_^ Ÿ2 gÇü'Îö1{ÇVo 7¯ßyëõÛ¿ñÞ¼zùæçk[–|?õ—/¼ëî,ËwÁ/\òìüÑÔ1!nÉî÷Ø£Ÿ#¢“O=gk?Æ0Ì8V),n¼ÙìIÀFõ”1”9›®ÙEåíÃŽõj_–vH§#éUcVœ6 ³¼uÍÏÞ}ÛïWoùE¢ïÞñžßºë™ÉAQwîdüoûÅ€X¿¸sçn¸k›µ €\¶»Öt#PÍk4›ËpS<]—¥Ðã|Y¡ç¯ûè¹Å€( ‚ðîìVwü«b @„€ B pûµÅi¸k›Ù pò©çàrùmÍ—þî$N¶ª;¶á& l=¯6#Ï˦ÞpP ÔÆ.ùqš`̇s6ÝiKØ €\æ;nþmñuæÖ}_¨¯„7¶',\€Üdêå_Ü[øzaÙê}žgÆ^…C V·*œM§ ŒÜ¶æWR{fNn&ʾ^¯þ«vÞ˜j*þ)b_1–͸¶GÕY­9:ÙéUõdt^Φ³qYŒ šq†d—ÄnO7ñÚ½%¹â¥ˆßÒˆg‹~¦B)™¯R6ºP†Ïý$º(g‹9mTÏë zÂ%q†*Ôl‚I2ûçHúøÞYÚyw øïºûöâ µYåV")¢Ýý¶ÃN€˜¯›®å#~œM×¼ÐÞ~yxœýà  Éæ•ÉûB9•$¨?gәÑW"jÚ '± ó|yfù·y¿Ÿ.ÿ(%g‹~-|¸&¹ñ–E¯ÓÜÐS®íºž‰ÜžfâLÔ­™úC.ùdÚl{—Ê¥÷e4Ö³ëF¨Ÿ¯ãŸÙíæ°…v³a}BkrרJßÉUÉ˹])ÉGâÜ®’}² ;òunW«‚4XJzB÷–,)|ÚÆÕl%›Çß;A=.ú Çc5yÖ%‹‡çyÏ5 ælR.ž—gô:Íö¢ažçyž7º›]ÊM+WW>QåJ/1çy~¸}¡9êp5»R¹ËRÃ&»“i°zi~ßH)ñ-¬Xâ ºš›©Ÿçùs'ìOÚfLŒâOjeï£Ø[ÂÁFVÍS^{‰) dR¬ªÎÏØË?¹¿ðÖÿ­Ûþëÿuãê¯ûÞµã=÷ÝK§Ÿu!r›Xnì+‰ZwKJžmµ\†ÉîǽNëØÁTµ°×iv“¬gk¦Ì4À`•f þ\‘=ziÅ`4Ñì©Gôz}«ËdL¥5¦`Ýä‹Xს‰0¨µ FSpL4Xà "£¦Lƒu@å®lU«Lp86Y¤ª5ZL Æb“ìrÃhÊ¥;#}T)Š©ÔTeyp9»`_Éì/Šm¡ßÉ80Ölðz)D«+A¼´‹VkZ°•láoÔ+u¹å…`w*h´˜Rr—Â锫œ›¢O¡„Õ˜Öpâ+ÚÜ[T®ÔžØÅŸÔŠÞKâl*ØpAã”O4€$. l5.þäWwå{oÜ~óÖêÕ7ýæ[¯Ûÿ8]øéÜýá¾=|.Ú“…sô”X²µÉ@ick ‹<=Vi;³×ií)‰»·ÏÙš)Ró½Eå ËÞ,¹+r/0zÅ%T†wy!2€FnSFß5ˆcIm,5M.iK·×i—moZêušåö]‘gD8wŠ{!6Á¢‚¸ˆÄnu‰Ä¨90ÞlªñZ{Ó’êr^§Ý•²M…êSüÙ¦f0ìá5”˜Ï$Ž‘¢÷Ô˜í Ÿ¡Þ cA¤d¬ƒ\M0GlÓ¿»ë¾×¯ß¼2Âëæ;oÜ_\ö€Žˆ¾{áŒ? ÞºØùîÛ?|eáÛ|rKº\Ux#Q½±ÖVew„CkÁÚM±4¤’Ýíõ./”™ãËDÕòªÎ˹]³CC¡yQmF—\~×у'††XŸê—×£ Ña‘î‘ðà‰Ìn›(htm:}++kˆÁ:àÖ?¢?E$ìX¯öei‡tîÇlÞºægï¾í÷‹«·ü"ÑŽwïxÏoÝõÌä (Š;w2þ·ýb@¬Š‚_ܹs7ܵM€Z@® ÛÝkº¨æÀ5šÍe ¸)ž®[‡Ð1zþê±þ‘[ ˆ¢ ˆàÎNaugÀ¿*$Q@¢ ·_[œ†»¶ ‘'Ÿzî ÷‘ßÖ|éïNÂ!à”`‹¡º`nÂÀÖøj3ò¼lê @mì’ÿ§ Æ|8gÓ¶„Èe¾ãæß_gnÝ÷…úJxc{ÂÂÈM¦^þŽ…¯–­ÞWì{fìU8juÀÙt:Ûß½íuš£¿rF£ˆ¸¼ÉÔ-b_1–Í)»,QTÕš£Ó™^åšÄåålkv¬fØÔŒk4$»$v{º‰×î-É/Eü–Ft8[lô3JÉl|•²Ñ…¢ºG6 wu´ã21æ¬WÐÆ(‰3T¡&`ÌŒÙ?GÒÇ÷ÎÒλÁ×Ý·ox®ÑR dÒЧ-Ÿ´»ßvÚ àuší åT²¶5/´·‡_ND±s6ÛhH6o2u“Ùçl:³SöÆ~M›á$ö¢až/ ¯Ó¬³QøõŒŠßO—‘ˆ³E¿>\“Üx/©×inè) ×v]OÔDnO3q&êÖLý!—|2íWx—Ê¥÷e4Ö³ëF¨ŸG}b4»ÌŽ]ð6ORÎí"2%ê!kôp†‚žÉkÂÇœ¾Y„‡ò‘8¿Ï°ôŽ_ô¯ wn¯ÞøPÑ[ßpuÙ„¸m(‰d‚¤I(Ÿ8›Nkˆf·ÑÙ°dqXJÖ!Gã>íÁ:ôI±˜¥¼ñuSY–0M³K—R¨qî…v›4q4ÚÚ}QöQD"Ú[TžÒ—W½N³N§×ëCkKœMgã¼N³Nºœò:ͺØë°P.YÆ`fíë-ÎÑCíŠ_¤/7x'+Wîáèå¨Ð2ƒúÚbb·§›82zˆjÖZ]‹B2ï…1:¸¿@Ñ`Ô2Lб‘…5M†Ì&{á[I­¢UzW˜‚}% º\0»Ùé”9DÓ¦Š>6•Œ]ð†Î?2™´üãaõEõçµ=²œc36F±'µê +*´EVŠ<©‚…H™5R›#Ö•eßUÿ=WhçUáö­w®_¿þ›Ï—©¡¶à…—†À帊ý’ª¢ÜZëTÈnwÚ‹†³~ÅèuÚeA3X“»FUª›J^ÎíJI>çv•ì+MØ®ðPäjUЂë@IOCè>`Ã’%…OÛ¸š­dóxøs'¨ÇÁEôx¬"¯Óºdñð<ï æ`ÁœMÊÅóòŒ^§Ù^4Ìó<ÏóFw³K¹iåêÊ'ª\ÎÖ¼Ð>ÌóüpûBsÕájv¥r=–¥†Mv'Ó`õ Òü¾‘Râ;[X±Ät57S?ÏóçN,ØŸxÂì6z<ü¹2·j80Y±ª¯E+5-zÉÐd4¨w9é(Ïó6si¹+1FcH®rn25ýëa•£ús&‚ÎÙ$gò|´Í˜ÅŸÔÊÞ#"F±·„;ƒ¬š§¼öSȤXU#6ž±—rá­;þ[·ý×ÿëÆÕ7^÷½kÇ{î»—N?ëBär„hÙ“¾Üò:í ífÃ6W«^§ÙmÌþ½NëØA³!{uãlÍ4™v¬ÒlÁŸ+²G/­Œ&š=õˆ^¯ou™Œ©´Æ¬›|+|04µ¶Áh މk8A$cÔ”i°¨Üõ‘ ²j• Ç&‹TµF‹)ÁXl’]nM¹4pg¤*…@1•šª,.gì+™ýE±-ô;Æš ^/…hu%ˆ—vÑjM –¢³’-X1å.·¼ìNSJîR8½‚r•sSÌí±DÕ˜Öpâ+ÚÜ[T®ÔžØÅŸÔŠÞKâl*ØpAã”O4€$. l5.þäWwå{oÜ~óÖêÕ7ýæ[¯Ûÿ8]øéÜýá¾=|.Êu#{R—[Á»d ¿]½ö­rŽžÙ!V?Òç. dagçè)±x ²U·,m-ht ØÌN¯!´ÍÎf/öð¡ÿdtÓ¥¥ÙÙ¡Gô§ˆˆH CÆHÓB½ ¼´4[bLyrÞØÝ´‘VP¦?àž9ÔB¯Xl‰¯4®’1³sš³éÜš´‹VkšâþlÅ.GûÒr—Š\µ_ðî["£•È‚Á´KL5莛N§gÙC2i†^Ã{IV#ìáô,€íÅÄþhßï¿ÆÞ~ßïîúøØòÓ¿yý]ø7Þô½»óã µ½ý¿ÿðÓ³wÍ›mµZ”aE *׺ >8óNˆÓr÷{ö©‰ÈKG^s×=m±X[K,Y N~³ã·™O™ð€²×m«ñÈÚº¶æ‰Ú¾qzB:ÿû3ů‚ÖyCÁ :2TEfÏ™=÷Ï þö+ªªX‚·‚jH ¨JP-((¢\3iÐçûL¯À¨nšp”ÍæsœŸ®›€®ÆÌÁ|öûס†TUQÔP04\ Œ„‚#j($Šˆ„”¢*J(4ôù']”k†ˆ= ðÒ‘×(ÿô·5ßùç—(À!L3¦OÌÀ‡0xô„ZME'u§Þh§ÐA€Ù{—þŸ&¼çSœ)wØ O€|öËß-õ Ëà=ÿ°©œjÌL|ß*ÈSgÞûÂ’/J֌ܳ²ÿçíRÒêtþZÍæåwoû[œñĵŸzIó&¬¦áÅÚ7œ U›‘´Ù'ò·8[N]«Ä-ŸÑíÇ4k|Œ;w»Á˜M<úji¥x'V·zÇë¶9[üãÑ•Z³É«4»PÜî1ž /u|áLë<ìô\»>²toÖÇ︽Q¤Y%dvŽÈýßôÌ …”`ἡOnwÓ]ù« #D1)³Ýo†< `ø[á¹õPMO]]ôËÃE$ñCÁ^·­£Òžé¼º8ÓÔ³VV-T×¾×ms¶è¾±?e›ÑIšV´ù|ÅâoqÚÜùzF‹ssouwòG¸SÔ*º&ùñ½¤þçæƒ«Â?á8Ájº²ç8ñX¬[Ž”äÁœ¿âÀ¥g­ö}FcÚ×±f'üØû‰Ññu±ýœ[ø õvxDéöQVxŒ:=Ç>Š[ú¤Š~%EÜ* Z¤}‹2À”¾ì¹N<1ú¸õxMªÑµä.0˜Ì®]]_lØ`Üup¸°±­”Œ4›é…{âJ¦Z´ÉÞU¼lUš].<»³¥EW”mšäcǪösþÈñ'Gªú'TؼƒâöçÑwzl<#¡Í¸>2,”nÆw Ö?Ûž5«¼á”¥›ËëÎe•f|X59Gäƒ+ýà·®KÁðˆ24øÍÍ›7~¼öŸ6o(>ûÞïè¸<ºÜ‰ÅžqÅpzKSl^»³®§Éô¾Î I«žr›#®ðbwevêu7­H ]&óz;<)H×h†UËŠu'ìÈo¡_éYµìšáð{εòÔ¸ÄÝÝí{s·löÆ¿ØÝí²‹ø[\½ÕÝ>Ÿ¯»Qj 𺵹|>ýŒþgÓŠ6ŸÏçóù*;j<Æ›¶Ö<ùÄ-×ë®é©kóù|mu=5i6ÌSÓQ©-·»ºwó;ßÙ]Ý[Sþ¾‘Q$ïlÑÄ’Ü §¦Fû|¾7w÷4½ð‚³£²»Û÷æn]YS0Ó°jÒ_im´iñC†ŽJ»ù.§½êóùÜÒîIU®ô*+#qÕÛ!••)ëŸXa“%ÆíÏcÑé^·VLŸ/¾M}*nÆ3XzÚž5¬|ÚcÖp.±d¹JD “sD^hï·ß.o~};ðÇ/úïš=÷žÒð =—'âcOú¸b:½¶ûÜ™’Ví.í ×÷抦ñ¼Üö·¸ÚuÚ³ÉÙQ™á¯zÝ5Ò86¿Œx­÷b,UTvDGÁFS+GxÝôƒXÑ#'ÂðÎk¯t„ßí®è±ãbÝÕhr×G÷&k¶2áƒÆQ­­Ú¶jGš÷b‡îr£Ò‘OoÜc²uáTf©rmx8»xÙª‹XéŽü=“&6¾.ŠØáIÓ_©m¶iá¥Ø\⯘ñ.w¥'¼;o«vdU.ƒ·œp\õvHüSAi4›À1Šß°Í%+ÖmO‘gP(“3 FÉ=kXù´Ç¬á\˜VÞýíÕÂÅþÛC ܾóåŸn|þôúŸŠÈ¹þ}Þ}g¶½K‰ò!«šÄ“¸’8}ñ¶jÑ]¸Ö¤¸ ™Qß`U¼­¹ÑílñÛÇå§°½ÍWUwg=ÓÅãÖ²ã‘kML†ÆöQÑ%+ÖÆR…ÝÕØáŒ=i7nµºÖ{ñâñ–½,""Šl­ŒmZäG/Ã/^뽸ª2ëOîÓ´±­±þw÷.HN,îâôW)®2i6á i¯ÛÖ‘²Ô‹6Û4Ãç° w9Y–S¹LâjÓ9ÿ²^©t‰tdÑ`ÎK̶Ӌ·57ºm¶2«u«®@I}”\(ãGqV>“Êa.L%§/|°ì¯?·Ýý ÿªýÊϾøã‡þüêïr{ÑâyÇÿëgOnþUš\&±Çô\l0½ÝÕ-î²²"²õp££çÊÒêx_a4õÔ¹³þFý£Ç)ÂVÎ9Ì^éhºâ{qd<ÂQé’ÄѰ‰²dÅZÇáæÄ›Î-Î R*m^1ß´É7%~Ó° ² «£8BƧ٬6-Û].ó6“öç£g\M–êfo6 æ¾Äì·ÂîêîvÅ}ø,¡Ì •<ãÔ: É9b’µüLJßZ~ñÆ­›UßÿÉw”,*X|ëö y÷wgU‚C¡o­¸è~õ´ëé*º0Ïby\1‹Iv—Ïùüö*ÓÝof}ÊÊ뮑êñXÝV<^«ü`kƒ<]Úm~‹ëàªÊèãÌ+š"Ãïþ–¦ä²ŒC­Š×?šüÿµÞ‹‘g[üWzbo ±›fwìÎGÛ3z°Ô^éðhnû[š<Žè½Ùž+þð)Y×¾'öá o‡nâéÁ° ’z$ñ1­P2+`r³Ùö×è7-£]ÎßÒäɺMƒÕY)«’VݬÁh…G±Ä1©L\j”Á(¹g +Ÿv0œ cyŽ˜\]Ÿ¶ÞóÅÍ;×OøþõÎ7·Š¿½rÍR›ˆ´ž; ©ƒwBs†~õ~#Ý7™Ê(ö¤ˆ+ib’vulžtfÂØjìæÔÖã¼;iÊ*ÇËŽëîsù¯ô¬]áL}…a6¯Ù‚¢óz;-ª] IDAT<ÜÈ‹›Ñ°Íøå†‡ÙËD¤tw[st‘ÅÛš+ÃÃ糧ßl¶y­ŒN›Ûš+ݶ²V݆Ø]e?,{YD)Ý]çðÔhÏB¸Ú®8ÃSn=Üèðt7×íuÛl;¢wMîœÚ]¶Íe/[ekc·=V›Í&këÚ›£í;ÛV4Ùl;¬V%®^™ì2ê‰Ç?®tAüãíè‰ûþ"­xîe™®¶I›Myú4è¯Ü6Í´y£]®±Ãf+³ZKwïŽ~ÝXÆm®Ž+óC ZáQ,1ÛNé¾]ŸP¨†îÊÎä3FF=kXy£)ãvTùS\59GLžŸ¾zr鿹þF½õA_ïûÝ¿~fÓóëþòo>üý»×¿ôÏ_t—ȈTç§ï©}ÇŽìßNNãØcWÌbRäY£tow "²pá™Vl~ê—Z¥¼ÀÈS',ˆþý±›7Ƕƒ¼nçgΟè1\iTÍNð›p‹³y™ùÝx£·W‹Ó%î Ú¾,Þß'°ë' ò9Îå:øêƒÿòlò!ƒ¼}ÏázË’ö‘!åÎÍá_ øï>»óã µ½ý¿ÿðÓ³wÍ›mµZ”aE *׺ >8óNˆÓr÷{ö©‰ÈKG^s×=m±Xxn€îʸg<¾½œš¿¸Í|Ê„G3½n[GÖÖµ5OÔöÓ³¡“ÕG™W~ôsaj¸ñUÐ:o(TGƒªÈì9³çþYáÏß~EUÕ‚KðVP )¡U ªE”k† ­ú`ŸéÕ@³޲Ù|Ž€ÓæsE“ÕG¹sMgÿñÙïÿ]‡RUEQCÁÐp2R ލ¡("RBŠª(¡ÐÐçŸtQ®"ö$ÀKG^£@þÓßÖ|çŸ_¢ ‡ 0͘> 0ÂàÑj5Ôz£Bfï]úr˜ðžOq¦Üa+< òÙ/;|·Ô/,ƒ÷üærª13Y)ÈOgÞûÂ’/J֌ܳ²ÿçíRÒê´æoqÚlÚï‘Ûlnïh[Ò·àuGZNÛ~Ò¼ߌáÅÚ7œ U›‘´Ù'2¨IêmIüßøÝÞñê¼Ç­’m×!û²ç:ñè«¥•âXÝrè¯ÛælñGWjÍ&¯ÒxìBq»Çxv€¾Ôñ…3=®ó°ÓÓöÑxΘÜ3džöKÿ7½óB!%X8oè“ÛÝtV~íÉoqfqËìu³ˆoöL©ôæÞêîÑÞÛë¶ÕôÔÕÅuü§S½n[G¥=ÓyukØÔ³V U×¾×ms¶´Å¾1e›ÑIšV´ù|ÅâoqÚÜùzF㚤ޖèÿæÇ÷’ú[œ›® ÿ2äDÊ ì9N<ëV#‡#%y0ç]Þ¥g­ö}FcÚ×±f'Œ#üköÆ¿:..¶Ÿóo ¤Þˆ#Ý2Ê Q§OPñÍùf‚ߣ²ÓòŸ¾ï¬ªÁexhäöwWÜØó¿=/þÄA·åÅî‘]Ìâ–ÙëÚûŸÏ¾Ó·Â1¶êmn´mLÎRvWwwó¶e©O‘ŸKBH1¯×½¹·º¹zUÚá{¥ãbïµ,ÖG¼=uníÄY¼Í]ýÆ j¢ß–,®¿ÊÊÊ"cK^·Ííõ·8m¶È…”¿ÅiKq½¥”òºm©¯·¼Í¥Îp’—cÓ-W_áøá¨ÈužùØbú²ç:ñ¼­·¯I5º–Ü“ùÏµË£ë‹ Œ»6ú[«© i6“ 1ZÉT‹6Ù»¢Š—­J³Ë…gw¶´è ’²M“|ìXÕ~Î9þÄáHUÿ„ ›wPÜþ<úNg$´iÒGÉ=bV1Ã)“Ï4{‹aË¿ë‡ {ÊΕþ@ð[×¥`xDüææÍ›?^ûO›7Ÿ}ïwt[ìÉÑÅ4Z˜¼îoiŠÅ »³®§Éô–ÞLH«þ+=«–]sÿÝÀøÂ‹Ý•Ùx‰ÑïêšÌëíðD~¸;ÃøÒáYµ¬XwÂŽü¶vÚšÄoK&<5.qwwûÞÜ-›½ñ/vw»ì"þWou·Ïçën”šðR½nm.ŸO?£¿ÅÙ´¢Íçóù|¾ÊŽñ¦­5O>qËõºkzêÚ|>_[]OMš=ÀSÓQ©-·»ºwó;QÚ]Ý[Sþ¾‘Q$ïlÑÄ’Ü §¦Fû|¾7w÷4½ð‚³£²»Û÷æn]YS0Ó°jÒ_im´iño៛7Þå´W}>Ÿ[Ú=©Ê•^ee$®z;¤²2eý+l²Ä¸ýy,:ÝëÖŠéóÅ·iÜG†=bX±lŽ5ӽŰeÌ@íïýöÛ%ƒÃÁÁ¡àͯoþøEÿ]³çÞ³@~Á~‘ƒ®ÉÑÅ,ZdÊ—­Š›qiõZïÅØ{beǸ<Ž>'´?êÌþW;*3üµC¯»FÇæ—ÓÕ$—mq„×M?ˆ}1r" gm{¥#œ›í®è±ãN™vW£É]]7[™p®uTk«¶­:²\óc—•é&žzWnF]`8•Yª\Î.^¶êâVº#Ϥ€‰ÍzvÄ=½Ã“¦¿R/ÚlÓÂK±¹Äý…y£]îJOxw*ÞVíȪ\W á¸êíø§‚Ò6h6c¾a›KV¬5Ú“°jÔ#†ËêX3Û[ [ÆŒóîo¯.ößúÓàHàö/ÿtãó§×ÿTDÎ}ôïóî;{´í]J4™çãèb-Ì^/ÞV-º àšW!3á¹Õ%+ÖÆÞí®Æg쩲±¼Îh>¸ªº»8ë™.·–\;xlb2F2¶Š¦©INÛ’ID¾xü‡e/‹ˆˆ"[+c›ùÅð‹×z/®ªÌzñ“û4ml+d¬À}ü» 9±¸‹Ó_!¤¸ZȤÙÈ¥ºîKÙ@êE›mZÂRRìr²,§r™ÄÕ¦sþe½RééÈ¢Áœ—˜m§okntÛleVëV]Rv}r³É«½tœZÆTrúÂËþúsëÐݱð¯Ú¯ülà‹?.|èÏÿø§þ÷.·-žwü¿~öäæP¥Ib]Ì¢…yä°»ºÅ]V¶CD¶ntô\Y2ƒÓjÜÈÏø]h4õÔ¹³þ)@ý§šR„­œs˜½ÒÑtÅ/öâÈø‘£Ò•¶&9nKFùpsâƒg„?)•6¯˜oÚä›?iØÙ„ÕQ!ãÓlV›–í.—y›I{ƒóÑ3®&Ku³ˆ7›s_bö[awuw»â>|6Þ}dªå?>üÖò‹7nݬúþO¾» dQÁâ[·oˆÈ»¿;£¨ }kÅE÷«§]OWQ«É>ßéó‰Y´H9ì.Ÿ/òùíU•f§Ññ)+»sESd¨ÙßÒ$Õã4°ºmœÞæžÉbç Ks÷·¸®ª´§­É¸mKñúG{’n ^ë½y×¥'–Dc7Íîضgô`©½ÒáÑÝö·4yÑ{³=Wüáì¢kßû¼‹·C7ñ4¹r3ꂤI¼¬*CfLn6Ûþý¦e´Ëù[šeÂÊ^·­Æ#këÚš'jûÆé élû(óŠ%ÎRºûÍâ1nÓʯ‚ÖyCÁ :2TEfÏ™=÷Ï þö+ªªX‚·‚jH ¨JP-((¢\3iÐçûL¯@³} 8Êfó9N‰O×G×ç°á ³˜ï-Ó¤¤ÈÑÁ|öûס†TUQÔP04\ Œ„‚#j($Šˆ„”¢*J(4ôù']”k†ˆ= ðÒ‘×(ÿô·5ßùç—(À!L3 OÄÒ*€)á¥Kc§á«W)À!LKÑ´j¥È[¤Uä/>eLaú[œLKŒ­€´ V0ðÜ*0Åð<€…±UVÒ*H«i¤U€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­¤U€´ Ò*@Zi ­¤UVÒ*H«i ­€´ V@ZH«i¤U€´ Ò*@ZH« ­¤UVÒ*@Zi ­€´ VÒ*H«i¤U€´ V@ZH« ­g6%˜6ÞYº”"L®¯^¥ŒKZ}éÈkÔbÊG%J0Ù8ŽsQU•BL', “ë±›7)cU-–Ù"òÕW_Q `ô8”s<·:=ñå„áqaÆß Ò*@Zi ­€´ ä'¾Á N¾ßKR{ìÒ*Hc¤yH«þÊù³OýˆÂM-ô,˜iUDþélO=Ãÿù¿Ç¨ÚTDÏ€©(ñSVóçÌNý'azUí÷Ô>\UUUUUõðõž~u4k£ªç=üðÃ:¯ªú¿O•jæ°ÎYm²zþPΥζgõ«—°P³õÌd[&·[s[úhÊÆ8­Þ=§ õŸ„¨úÆŽí¯\ZSÝüÖéÓ§ß~{¯¨Ï«p9ÞÙ(¡}‹åþ]gΜ9³ë~‹e<–UßU~úôé·š«×È¥W¼ÑŸÍF™uèCåöäž /±ß³ã‘='dÓ·2êßqÝüIÜ…FSö„]åÐy5þ•1Ø3ua:®µ±½’œ€CLí;ê(ŠzîœÊ…AêÊŸ{nò ¥Æõ–ãhŸšWÛØwÔ1Ív!Uµu,,*šŸ·¥ž›_T´°¨hásçÔipp…7&ö繂ì+i'Óy³>ƒNyN[ÿùS¿SÓê×ßSÿ‰Ÿü³¾K"²²ä^-¬,v4Ä’ÊùCÑ3å¡÷•÷ç´ð)[›àÐùlÏŽUÚéßpTï}åýúGöœ²Z­ÖS{‰Å¬äåÆfœøk=ýj¿§öá‡õËUÕó í'Ÿ¹“‹°æ&Û¨-;²èó‡®õ\—²]»î¹·d¥ˆ\êû,›ž6ìͲ²²è%ÏâûÅ+—­ÖM/îÔú4¡E¤ï™Œ¹ê«÷ÈŽæO̶ºßSÇu¥i_§ë¬‡>äñÔ¦ÈjÑ<§_ç„Õð®ì NìãË9U=_¿ç„¢l<ðÖ[úë„ü¿’LŽªO¬ûxçÀ@ ìùõÓèšgŠæZ³UµïØëvvVÔ_‡d×¾)Kn?E°>ñš/¶W¬±Z/kÉèzß'k*ì‹£íûºNY­kžùû¬†0µî{¨ü•ÿ úw9ùvWrÏj1¨ë„(ÊÆò2“]ÇzªSö†GáK½t_ýžSVëÆo½½·Â4umåRdWÛIRôuêΊ[íֈkè«ßþÊ¥5Õª×ȉ=õ>³ÕMÙ“‹¶g‡ñèl&o Ó诗önØ`|%™†»}בÖ-ö“PÇ(˜ê¨Õsûmiiز(œ)u#£±$š0¶ý+Å`ƈ«wŠHéò%ÚÞUò¤çùõKòÒã"oä?Gû"Ë ÊF§9^ãÁZÃÕNÎϯo_>½ºÕz¬~V}ë`…HCýÜ>U µ.°oŽÃ1§/ܹÚÅbUµà9íŸçæÍÿ•2û9Ý a4YF&[XäXàˆ›=±Aƒã÷ô¬úCƒ%‹Å¢l?4øÑéÂéT‹eý×­µ"stEwÅ9ŽØ˜k䟎9áî8ºÀqÔªªú0š0^;ÿœªªçî^´¥PD¤áîEû â§×Tð\¬Ÿîœp¯8Ì2táémW,‹¥dðPý¬ü¼ÐÉ=­SÿI˜þþ]glT¬ÖËMÎØÉRUû½—¢gÊ(EÙøâβèá$TV¾QQ.uz³¾Áªuew̧Znxõî-Y©ýýðã÷§e¶\³"dØÂ½öŠÕŠr¢Ë'"ŸõI…ýÞ¸±´ÕÕ{¿7«m×wßí¡àc”‹È/Ož5ëÙ´e£óñ{ÃÛr¢+Ÿªö÷}"вºä{i¶Ý4Ì%Í•Ig…×°¬|£¢$¯¡ÇEV–”•¬‘Oúô17a5r.{¼Ml´^nÚ^ïK¾°I{ñ–<þz,alÕìJ2¿.t)äÓJ—_ݧO9Èí´ú| .ÔWˆ4lÙ×%åûZkEDj[Â×]ûÖí쬨o­¯Ð&QÕsûÖíì”ÚÖððöók]ŸÝ6Ê¡À…ú.C'\¸6”†b²<Yùi’V‡ƒJê?ÉMÜ¿ëÌ[o5W¯Vtçxm\'…¤ ²¹Áª Õlذ÷”5ÛßâšÈå!‹îµW¬Ñ"Tß'±Èë«ßsBÖ<³÷ñÅYŽBé»ï¿?öˆü¬µ#uÏŽ¸q>ÓðcϬVëå&ç† ÑÇ$FÑ×™vîÕ¿Ô÷™ùjä\öDe;›«W[Oí€5ýÅ[x†W’ùsïêÇ [NWiT^äˆ{_Fö–,/5=Ý "¥ËË——ŠÈGŸêóâ–'ôñÑÔúç­µ¢%Oƒ‘Nƒ¥×¶î/¼^Ûúúö%Úß;?¾ª›fçö%R®%áÓI¤Xíé=^n=V?«þ©á„„ºdyHD:?ž¥ªÖ³­³J—‡"ÁQDBËËC¥"òÑ,]•†[÷ÇwS¨T·”O?‘Ð}K^OÑà̽ƒQØ "¥¡òå!ùèS«ª†–—ŠÈ¬¯ªj_ak§.¼›¡Œ–ÒWØÚ)R;\ÎʳZÏZcůܾ$ÜÔ¡9¦Õ‘ ’úIÔXüøá7*JäÄö½’5©—›4Áš’ïe<>úÆW.Éšêæ•l3ÖD.7qYYµ = —ú>»îí\Y® GÅÒ@ö| Ý÷ÿe´VS8­fõ$€Årÿνrà‘Gªªª6ì=¥¬®>v8|«t±£áÅM—šœÌ>W±ØÑp`£rjï† {O)48g}v¾¸Éj=µç‘æOÖHôóøeÿ̹ÔäÜÐ\òLô4l±,~|oøum5Æv¹>¹7¡ý„mÔÁ'e†kž&®žèçœFómAZ÷5ü[{ÿµgøŒ‡e±ãðÛ/n’ð&TUUu•ïÌ-±iÁ÷ÔÞ ]å/†¤è§6lؽçnÖ×™/·óÀ#öžŠ>0m¸^nr& ~5Æü{дáÆ5—.]Êøâ-Û -³+É<¹HVþÔ}õ‘'¯«—ÛKøÄU.â>ÿŸó>Òò„ÅRòЖ ‘†úc× :bkm,,ÆÍ¨Û»Î=ç8üî:Ý›Þpé™ûèÓk‘K——$î]©V{:¬–>Y}=îa€¥÷…D¤¡¡°¶j8~‚Âúc)†á †QcÙ·+ük6 JyUhç®ðÇ¿Žíš[Z5<:AUÏݽ¥A¤öëýåÚ®8¼¥B¤anü®¨åú††„îø±Rݳ¤±Hª‹•º^[JaW8+‡’ž…MsÒ¯*»ë˜UUµ 2^«)Ã""@@ûÇKG^{tÓSÏÐ~âM~Ÿs‚Ž~ÏŽí¯\Úôâí”Òygil0âÁ«q·k²íÙ“ï÷>öÀŠ©üær¾þ‘='d“áw5Œž¾>)Êž´J]åºõQÏzdD×ðü¡‡÷ž²Šˆ²ñ€Y'O“bKµýç²Õ*"ú+Iõü¡ {O)Êê5k.]¾lU”ÿëôûuÕÿÔ)_´A£¿¯‰Î¥-1yb+©lŒÎ¨ ¨+ÊêgŽv,6ù2—sÏi÷x+ê/xž,á ít_â ÷ÚÖýå]ÚË‘¯{bÝÎÎÈ4ë-–sÏEf®mØ_.]ºÖ*ê/¼®%$µïhÂŒá¥Ç^×&_]D:1¶ô7¿¬zûÛ[â–bö÷¸uÖ¾d :¶è„Õ68L(‹ñdSÅQÇ9t#šVEDí›óĺ¹ƒ^\rmîë´QÒ¸iÎ=·0R‚á֯˥pß"íã:_¯wÓüE[ EB³:;&“ÚÖ¯eKÜô Ö3Ò¦TÔßð<©Lõƒëî„ûõõ7^ß®‹ÏEB}ø3RjßÑ{Öi£§¯£>áv"„wߊPEç¬ÎðŒÃ׎ݣ=á!µ·¾¬ºëÛ±éã–RÛúÕóëÚ–.}û†oªÚª¿ps*¿©%¦ÕLf#­NÈÑÒÿÆŽíM—­¼µëþŒÞjS§Õ¬z–´:æiuêïã[R¼¦x²œ>Ý¡âÚ¯ÏP äIZM ÍOËbGÃǵ6ÓzV{Òt»dzÍP°/ú¹«ŠÁ û‡µ»¯@^œÖE7¶Š)m ùN¾ßK=S›ic«LŠÄ±U !ŠL.+%i ­`á¹ÕéIÿÑ€©‹±UVÒ*¦~yª¨¨ˆ" ýŸ¶K¹.)ÇIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/27_succes_with_child_failed.png0000644000175000017500000005407412032647166030310 0ustar ebourgebourg‰PNG  IHDRNÖ¨‘š¥sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ +'oµ IDATxÚí|SÕýÿß7üP‡à–‘:ù0%&saá3è/Y—ñVeÖ|¶ï>³öÇgí[ÖèÜÔtu̵®-+›Ÿ}–?g ÃÚA“6¢s *Ó*ØÊBI‹ ´ôgîýþqo’›û#¹I“ÒÂûõàpzî9ïó¾éy÷}î¹ç €B¡P(Ô-Ξ=‹Ž@¡P(Ô©yóæ)Ð ( …º²55Aí*>ýtÊѣĹsŠsçˆþ~zölê†ènð}éKÔüùèw …BMÎPGQÓ˜öL;p`Ê?ÿ 4-R‡ |+VŒ¬Y3òïÿ>òµ¯ÓJ …B%VqzV744cçΙµµS:;Ù¨7óš¾¥wÏO¹~žïšÙSú§?;ýLÏœŽ(†™:¾Ûo,.zðA˜1ï …B¡¡yóæÅ!ÔM%ÉÙS>þ†o¸ù“ußúüËi¾ôjšHS ^÷î›_x«ýæ}/M;÷ øRSûëëGU*¼( …šx¡ndäš_ýêšßþFG”_<õ­âOÖ}K4‰Ƽ›þÖ¸à¥Úkº;aêÔ²²ý¦NÅ»‚B¡P¨„‡º_¿ð9Oñù¾õXþÏ·i‚Ø«þ¿®ÚäSL‰:#ôþ‡sç}䂦ÿ¹båKßþ/ ŸÞ¡&³~ô½DËeþZ¡P¨¸ë—?)ˆ1Ô)(jSãÿ¬x÷𥙳§ÿÑ —ÅŽ;Nþó±WŸ›5ÔÿÎÝš¿lúF;Ô$ rsçÎýì³Ï¤BTD¡P‰Îê$ Í[¾æJbófx÷°oÎõÞíû2ÿíË™cµä~/.¸ï®·]we|þÕ¯ðÞ &—L[?wî\ô 51Ó³1»ª«é)SOÔì¹ôo_–sž·Þ»DŸ…¡k7þûJÑ —VÜ{âùÝ·}?‹øÍoàë_‡µkñÞ &WJÇýo˜ôN¨-µï cÖÖâ»xÙó•÷uÂÕï±;3úPGQÄ~4ýÉ÷MýªÕr®8tÔ3'éìu3Gû/~²÷õÖ}õÑj}ê5Ÿ<úøÍÛ~Nüàô‘#0e Þ$Ôdѯ_ø w!ä³Ï>“¹b¹¥öžXƒŒMß{úï.\«Ä¼À†Kßqqfô¡î¯…wß^pÛ'ÿï§2¯øt¨ûÆ™Ô(å›vÍÈÇwHÕüä?VÿÌ3†ö4·›Ü½9èÔ¤ÊçhúTÛO¿VôàÚ¢×>vÿcm½t"Ì£éC;îÿÚc÷ÿú=š¾ì¾£1aBM»ªÒÓ39ªrÑ“âû>ÎMÞqI%=½Ê•à¯b”o°}ðxæÝo|ø)ï¯î»Çz¦Þtz`øâàè…ÁÏ/^•]ÑÚÚÚZ‘MQÍÆj׸û3†Ù\N>wÙÇ5¹b¡ÜP·æË×À.ëa8?ó ê³W-½‘÷w‰óÃ÷§Í:«¡]sǧŸöœýäôu³æ~vñÓw?~ýúy#md³T_/ÀØÛOveÃFLJɳÔAM/tõR¾ØåAµºÄ®ÚÉ®£¢…GŸÛ ½\ܼhÄuÎX…ïÜNLÝ=Ç õ–›bAú/´œ ˜À¤zE®Ýq„‰ G~Í”?ûÚ)º÷•gïÿZ  Ôi{í±0ib • Änã¼À#ü‘ðr`,ñ§§Lµ` i4ýÖ‹üØ©P(¯Õ>ØOÓ^kqzff&w dKéÅÅÅþé•;Õò¦]ñF¼ÖbÊ•ž^õõVu†±E¡P(ZŒ HrLâÄj-ÎÌÌLO/¶zƒ†¹ªü•«\¼x#¬/l\Ê ÑÄ4£ÄÒ)‘­V¹hšvñ¼'¬çP÷ð}÷¬ùòµ4A@ÒMÓõ«î _ÿoŽf/8~±ÿÓ»nÖ-¯úÆßùÕ÷àÝÎC4Àè05;åø^ÝO÷žŠùF/\¼BX¨5ñ×ôx‘Nô*‘i¨ÑPun’$I²&7Ûr™µÊÐåJ¡y¨I¯ˆÏêDE÷®Ì…âµÚ ¹1‰ î}ø•¿×½¼¿ö·EJŠzÝ  Åkµ‡V3åËÃ…ÏÃwjKÁû¯üÏ—Ä.í…ákæÍã-ö€ÓxV§M˵Ö7v@wc½2eÑ’ðëþ+$§“}ÕÑì d÷‰cájmîn¬$p«×kO4;v¢£É–ϱZ^ð÷Â4J¡ø é¿ÓDÖñn^¸€¿ŠõâG¿Ì”SÔ7Š+rodê?ñ)§Ž>;î^­¥(°äµIӇި õ–».€ ÄH¶qñÕ3öGa.W(^«-FÜË%…¢¥<++ËPß¡¯l+Ó0´£R•je*tz¼4MÓ^O'PÔRå€$eªŒ…5a#%MÞD?|’7®0&QT¶!' ÔºlŠ‚f‡‹¦iÚëÜßAQÙ:50åûÞà÷!Û“Ä:§Ùá’h<ŒÔ3‚«eø_VØBôܸf?¾Úï^ùGò¿}8H¢?{ß{ðÙÆÍ~|>øøÝO??=:Lõž½æ†ÞŸo,c¾óÖ<ê€;îðg={׳ûÛÓÏê@kª[²u½Z­^¿uI?G TV÷(ªÔjµzÃsÁJÎöc¡«—‚«Ä˜©n ³©2Áº\k‘Êü†tUfYÒër9k©iíªÐý–Bó"¾KÀŒSÀ‰.©gur¢]íÎ9©7T0ëÅ›ŒÎÄœ«P¼¶iœ#c¾œ î}¨¶DIQŠÎº_lJcV\/—(*»¢µ"0›‡†Šò…:<§Ny: U™m¼ 6BšÒ†Â¥¥ø°Þ••ÐÝ"2Ç¥IŒ8b#•ˆK6.p¯°W3Ë¡YÌ…RdȨ#Tt¯{’–ŒN™zÍû‡§œ?ç»þ©jSæzFáâè5<Šö ŒÒC5BS>ªãèŸôÜk?øGÇÞ£0c¬\ɉî¼`¨å®Lšø‡V«ãl?¶Îé*­Èg­‰$åå™V‰Ö ôÛÝhèJ3qJIqÕÄ_nÕF4Ãí–Y™[ˆº<¹] [Æ bAZůzøñëÇO| p#}ªýùšpçý¿ýÏžâ¿>›¾¸èFÁ¯LÒ:²fMB"r9·Üÿ“Wî¯þkÛÚ¯›Ÿ[ù—Íw^Î[¡ÞT¸¬¥¾ÅÒ´I“› °@¹ ¨ŽÅès0‘F€HέmËuU¥—·(šÕ:{©ú²ŽK®IË” üƒ‚a¹ôwU¤qq3"Ц½MÛ:`Y¡ÅàÉ76ÇZ'YÝÀŒYܦ"|£s_Û¦Zß_ßçÃýG†|4À”Sf\;mï›/íG›æ¸ößôÇJP(èßü†ç^n'ÿ§íµ?6;p>E] ¹ …Š»bâÕ­Y?ú±u뢒õoß'Y^³ŽZTº|>0A§ ”·:~òôÜY#Î{_Ú{ä[ëVâ=CM|ò¹Ë{Œ!óBÞÃx?¢ö›¦¬­­ x)ÆEBº² †)}ço{ìës\ûǚϽÕ~Ûc_Wô]€ï~—6›¹?òvM›åóQ£Óg uö»Ã6“¸#ÿfç$ç’¸th$ACàl“á $ä¨hõÙÓ§Ez)î÷Eª ˜hÀÌçP¨ÉŸÕAÐ/¼@ôõM±Z?ó“ïüätáÏé©Ó¢nfdø–mOÞø§­@QðÀôöíÀY8nÜGÞ´tx”¡†‡FúoY|Þø¼µòQT¶Šoë>qlEèë Â’Ë/©ÑùyÑúk­7/bª1À>’LîFƒÊ L©t}pšUEǶlÉ….Y^Š»&¢Û%%äÕhãß{úÀ=tÎ>qÑ•Èp_‚`ú¸;sjì-L™BïÜ ¿þ5ñ³ŸÝô?¿¼ÞnýÔ°ù³o>BOŸ!+È Þðªe¾å73<Çaútúé§aófî#ºÞs£×öÀ´ájx`ðB_ßÙ‡¿ôÃÃ3ß=pèý5÷J¿¢ÓÝhX¿õ=…bùæÝ–¼“fUÑ.…ª‚ZwÚ~ÿç:·Iˆ:()ÙÔòÍ~D«HÀè>¸Ö™S–øÃBÑ.…‚ !t7Ö?÷§Ðo!,ß¼[d7hÈR$[všÕŒñÔFñѱ59‡¼ÀÂÅ+Vó?gû±-f{*µy‹Áâ­6L}ÿ }NóV‘PÇó‰Ó¬*Ù¥€55Q»ˆ34N5^‚«D]'âm§YÕž¶gq=ßÉlƒË7o^²µËï=±^$Ì“Êí¸k˜à8â{â"¸£äèOŽ%Ô€B?þ1žN<òÈŒŽŽ”§½eÛ“Ÿ}ó‘‹ÚÌþ•:јG Î>â¸Öi›û꟧ž= °|9m±€JÅ«¹÷л·j†G‡‡©þ¾þsŸžöΘzÍõ×Á“°J‡:k‘iË·;¥»Ñ°ÞâÌ3™ÜuàŸôWq>³•ÛëØ7ºf•Ùé6iÅÞ¹–éX¨P^Jw£a=Ûš¤åÔ2ÙíNagQ‹37Wò‡ oÙi.‚Nᣠ}¼®]µÞ{,y)Œ9Lxs¶[—_ngG3iµ’õ#$\\Ÿø¹K)lpƒÜ´¨\:4Ñ.W‰ºNÊÛ¢N6ÙÍd¸ëaI;ÛKð"e^ˆ¤žÕa„‹¯ÐŸ(¹Á*mÜs}ô(ýòË ÑL=Ó{ãÿþjñ÷3—¯ž·ø{é)?ÿ¯¤çÊü[ó»²yß^½LwÃâG³nüÓÖ©gOŸÿ·»lýý>Ëßö)ná5ùæ»ÿšžÜÝ?ôùÀȹþKg>?ßûýÕ?€ƒï½:ëöÞó¦„)‘7¡•ƒG.sÚ™`W§„-a#‡¨ (ÌD[ŽHÿáö™– T¡D„V4öú|Ÿ\åÜ¥`>‡ó 5A45>Í(pÿýôý÷ƒÃA¼ú*ØlŠwÞ™ãÚœ+7j®\ YY´^ÝW¿z·D{¶·/º§W14ç‹sWî=±ãìéO箹ñÓϽ‡>Ü{Cò¬]ßñÈú¯Œƒd¯^Ê»ˆlL‹±‘”9ÙutIÚØ¸K¡Åêv™Þ>Ùu‰ݵAýçr¹ž>«cô‡㼃BMÎPNGëtðì³pæ ¼û.?ŸÎüäý>âÎ4 |éK~d¤ÿväÚÛŽž¿x!óÎÜrrÞ´ä‹ýçàÍ÷Û(F‡|×.>jþ½ÍôýÌ é„x YÕ>Û´&·ÛÄ] ”˜ëC*µi¹EìBeZný‰nЦø³š\¦–Tý¨¼$_’ܥСñºˆ’»£·.^‘[cúV¦ç%ÏÀÄ=)(ÔxêOBÂN$™?ÒÒàÑGá'?aþÌ}Ö®çÀññÞéן¾p©§™üÓ¥Á‹)óS—ݪ€¿lõÑ—|Ófýã­:Ù¦p‘7ÜÏÖ¢ÀötÑõ0æïzþZ¥°$ä@…䓀·q¤ÜùšSÞ}âØŠÀšÜ’­&fë~w£ië¶aÉú&% ñ r—b<…BM’¬nÌúùï_»õËï\ò Ò{ºÞr¿^¨êî;î=òÁ›=gºgÏ›0BÒ³oò|ïɆ~‘9õ©k÷o—ç~€Üº=‹ëUª…‚Z¾y%°¹ž³uEAÃ"p{R?ÇìÖ B…NTê’À>­©®]½Aýµ|ó–\k‘ jÝirÆÚrp]nc©å”;Š”‡B¡.‹¢?3Ví{Û{ßÝÉ«=ÓTM,Ü;2D]º0|þôÐÙîKçN]z8«¸ËûÁ‘̘5U¡ ¨aŠ¥Nº§n‹ùíYïØ9͆†×„%¨qðɸº½»Ñ`Yd‰òõK9g`ž\ò_Ýó‡ÿ×C÷,™;Šßj|4oÞ¼ —ÕÿlT1kht”¥¦Îœzͦ¿dßFÓô´iÄèÅQÚGùFhj”ž6í†DÏáQätWq¤K¼OÆ£‹àîjc—]8an‡BMM¸P·õÿýèÎûÚiMSíõ O£F¦ùFGhŸ(ðQ>Ц(Ÿo¨·s,@Ëa–jMm¤Ô8ød\ºÁüÆ® r& …š ¡Þßׂ75©…ù …¡.:½ÜN^¤O×W¯Ã†š,’z¯…B¿&:þ”ø(—\Ÿê}iï¼a¨I—Û¡P( u„Ÿ8Ù…A|&²' Qß«C¡0ÔÉVã>ò¦[¹Ÿ3Æç­±F‘1ÌÝ'Ž­àƒ)(¹ü’ÿÄ’$IÒ]·dëúÀ‹ófUýâÝ$I’»×.–®N³Je‚u¹2½w»Ðšb€1%ÊÌçP( u±Šñ¼páÂÙ‡Wü÷ú¬”‡Þ;5T*µZmhìöï ßU¤2¿ÁùÌŸü9 ç¯s‘€!÷Àg2šôt7B ýú ?é–ÆKŽ­'„ò,æ@|òÿ¹ ’õ™mŠ–¼EâŽõ‰Ó¬ “/FpghNñ.BóàÜ”í"x¥¸ÃÙN _ ,‘e @w£Ð!̳:9_ušvU¥§g†*=½ÊEÓ4íªJ¯rÑt"~ÅDgŒ©rÑá«%Ìž‰âQ“ÒÇÅì‚–µX~wQU¾:5q·¥ Ä!>‘n„ßcE¹unRÛÝh0=óL=‘r@¥¸ÃÇŒìáã4›þM2·‹¸†Iš²¶¶2švUg8töRP|™æ®e–j—:hÆøh¢ùöZKò·¥VÚmšqõM»ª3Œ……zðÄ·2fuã¤}o{¥þñj"Ä!>‘o«[ö˜´ŒÇŽO5û?‡sø˜‘=¼!Zø¯œÇùY]OSqzzfff±ÕÌB¼ÖâôtÒãµ§óÒÚk-ög$Ì…Œ\Ula5)Õ_ª¡\iû±°MÖWSX墙P 5šc–6¾~ wnƒÂ†2Aœë—²èŸy¾J/¶zÅ<À„üš¥ü¿dVÆP7Nºïîd©¼š¶·O›Ó«¢–Î^ÙÓãé=Õ=wŽâsóÈ®¿ï7›e¯^ÊW`ÓG‰5öFRò,uP¤¬ŠöW¿xÿÙ[Z{Äç•ÑÖøäd×Q6ÄqhÒnçö%Ú¯Ðá'»Ž «ì:ÊxnM™Æ8Eó¹8}›Pn··Z `ÛNÿ 浕i¢§©Âc°Ûl6{%«Iöý (·Ûm6÷B¯µØ¢l°Ùl6›Mç06Kõ™”S®´p—1ô Ðl4BEkk«¥ ÓRUUâÐÙí­–‚Nc5SAhAhÊÚÊ¢ÌÇÕ4ír4/[«M o Ó/Ymì,l°Ùl …Fé¿ Ø :¦_»Á“¡2jr†:™òC|zV¥dß•´ú¡»üÝã €øL†H' ñ!I’¬É“mZ“ÛMîÞ|¬(|,r¶[9 ˜¯hÓrC lr%U?*/É—$Ä'th1w!ßá ¯È­!Y¹ƒ Ýén4 ›“ÿ¬.’ô•59ÉIÊTa!M{ûA¹Ô:}³ÃEÓ¡)«Íe*.dj¦oui¥^º×¤Xš¸i‡h›Ì‚gaC©†±°£ëÖrÿgN§<ó&‰R•I‘Œaƒ¢Þ“Ä8-Òõ•¥jö㘼šü¡!>2ZŽ8Rî ~åA|äKÔácDöðŒ9ÙuTœž7^û0Oy::ê Y™™™YYåÍ!ëlé¡…§<a¦oþÊX©ÁSÑÔ#X»ãµÉ ÂöÅÍ›,~à¯[^¦Èt7È\BˆB|&%Ä'ŠÜWàð:·i È¡1ZS]»)ô@Öñ=sr™¾¢&d M{›JŒPi·if—G íš2ƒ£¸©Ç0¶6EÌ›ø~ Noñô€&yBLŒ=;¨+$ÔM|„þ|¤Ÿ¡€87ÐûÃꇈPôhÿ(5ÀB|Žú5@~誗Vä³ÖävƒÈgfnãŸa²SF¤ãu*<2XЇÖD’Zyy&€Ul#CiY¬¯àèxûH¥Ï21&b}ñr±0:êè\$RGÚía<¦ ãð`/݆.tÝäõ‡c´&pü^˜ÏÏû㑬]Û¹“†—â,cWóz<:vú6:ÈR¦&Yml†§í©7­µTXRumÆjÞ$ðƒzÓZK~µÒ!H3­Yš6ir“{š,ÍzCAÐ4tzz@äm*á¶ßlÌ€J¦MÒѬוï6W uEñ™lšŒŸ± {ä3žg`&çÖêªÒ3Ë™eWÚK5„¦´Ò‘eȪ –êÙV]Úà)É`jfWTê›#d9DrnùÚýùþ%M§°Dí IDATA›¿´}5óÔ@ò^'˜€~ ’skì®êŒŒrû ‡‚lÑè®.­tdägÖ+(*»Ò®f}e‡êŒŒ XVØP©Ï´¯¯lPZ22Ê jiACZt­²:ÃØ¢P€Z²Zü!¤6åW¾š5áЬpç}ÙˆÏ52,ñéÂû‡š E³2¿MLn‡hV”ð}AÔøh"¢Y!>¨É/äÕ¡PJЉoâËíäÿ´½öÇfÞ-Ôdž‰*¦· QWG¨Cˆj’*~ïÕ¡P¨+=Ô!Ä'Nö#Ä'qß §YeÆÜ…ÂP£âëHy± !> 5FDÈ«C¡0ÔÉB|â3i >cÎç¸ga$â ù'}$Ú9½ÐœÃ£ùË<¡´š¬•ßxlþ‰Øˆ”a Ó¯œSTxu8Çpó©I"÷‚öZ‹‹­^üg3—3ŧ¨·x-¤¥$¦ËPâƒ@ˆcvlqɯŽ{¢Çåý¥µ$Ú-òrêsÏþ ]U%M #%]UeCkkô4•dTa ˆÒj´#fä7µå2‘4ÀU•áеÙÊÀU•(—7R}E«loÓ®êŒj—½TC¼XxíD²2µÃq à”çC…˜#dNy:RuÉ„dïíÍ „ø0á!>c¨W9ÄGR²s»Sž½Nð2q Ä9˜QÒ”%þ7”[Œ,¦@Ò*¯µ8==-ÍøSN}YÙ¤Z§ïðœòÿtt–ç$A$ç”v:Hî|ŽVÚŽ¨bo\Fr5€¦½M­ÞTØiiò†ñžŒ‘F{b'M»ªA¸Z \Öéé€Ogvv6Ós§Ó .` „î"B|¢ÚĆøðÕ³:‚Д6(-%Ì2Qpꉉ˜#$Ý„±„ 4¥öÊlÿᬪ€r»½½½ò—œú²¶×“Žfÿ¬IÓ.G3ç æ$eªü³ÿ9íHÍæ±7S1¤Líðœ ór¿ßæò¬,ÞʧԵ=M–ÎÂM¢åP)ž1æ°àrY§ÇKÓ±˜ÏêxBˆÌd !>rî`â!>cÉçüSrn½*2yXlÄf9+ &&"RGh )Lܪ Ô&Ê%SWµb»6í\– "9Çü³ƒ¬66Ëî—I%m6[k«EiÉ}ΜÇrP^››,\?¨Ø¿v“Z:ymv BÍ„aÒÑÈþÙ@;Áy ññU´À_úñAˆOLÆDû^A$çÖ¶Ù žü–1GÎbi¤ŽÐÑIsìDžx=ζäM˜Fâþ ŠÐ”Ùu¦#‡®R/‘,†é— ’sj*yˆÁÐ$¯­µÕ²v>ÅÎ×ÛR aböå²NÉ,Yr?³åT´¶2«møy„ø Ä!>c„øDÈí¢{ß@­Ó§’âAᑘ¶ä!u–„Lµq³JtÖæ£sz<‘Îþ—jG y]ãRÜœ˜ã\øÑš2›­ ˜í!©"†=¾2áГ±Ó•Ãù³Àkµt–—†»J™Úáp¤v¤ê’C>“™‡„ø ÄgŒ­É­5m øÄ~&éh^¦ÜĦ_Qs˜%!&&0%EÔ Z F“,ߪΈ¤7²Ú¢l¨ÎÚj]ª±¢I[““=MÛR öfJ´#¾£k|ì=Fkíµ–Á#DÛ/Ymƒ=‚j§3x[)]„«(—µÔ·è+JyŸ'‘âFñ‰ÍK¿‹„C|¢Êç‚=Ã,%ÅH̉ˆ‰#Ý-É`Ém‘­bX?L})XM»Í--Yõ<3M™ª²²²`iAC­F`‡V£RªÉuBÙ‹¶Ær9ˆ p;·AÖ{Rýr¯Í®¾¢À»–×~rðŽ{ù¡OLIÚµK·±x“”©œÖæò¬àý–"„*…øpß«ˆbbP(¡âƒB%PãÉ"G¡Pa4uâ›ør;y‘>M \ÿ]½ojRèrñêBSÖ¦Aÿ£P‡~@¡0ÔÉB|âd?B|Æá["äÕ¡Pêd !>±Ž”›â“Pc0·C¡0ÔÅ*„ø ÄgÒ@|œ|4k´¼ºhçKSqìK¤qÎaÐù˜(†º‰¢½‡Þ¯½À…øÔî “ØY‹L`v»ÉÝ›a«Å Z“»n#µ±ÎmZÅùÌø¤±¹KA—?u¦ ²Ñ ¡†$÷l —Èj‚g*²L’$ýF†‚TËNsÔøOkŒŽ; ­©nÉÖõþu¿õ]ìé'¡g]Ïç’ª!Ç A°’$É´öÀÁ`²]Äš6â`-bêïÞ|¬þ™g íi!GVŠ;œ…ø¤öZƒÑÏÄZR¢~–0Æi.šèù7¼É:‚9Ö8W’ï1Øíÿ˜(†º !>ñ¹!> ¯ùókìÏêg0†œ¾(`è0rU±…’Ä{‘@ Fü “’;÷¯mÀWúPW}¨Cˆw!>Q mC|Rò,â‡1·#«… 6›­¡°“9ö^Š¡ãµ[” L.¥sðÏÅçxB $$þH%…4íõt¦*OU‡Ai£P¸€B|d&kñ‘sÇâÃO}£}V'šÒ9šõ†œ$HÊ10´Q†ÃåY«eeV—Vê£è'("ñ'T§<ATžÎ‘!<‡'⓸gub ±`2Ã#"8Z \Då©K+S÷;½¸-51„„ø ÄgŒ§YUy¼Ž™guÜ#1ãçDö ½dXÔ Î¨¨ ª wÜó3MÕĽ#CÔ¥ ÃçOí¾tîÔ%âsäã3fMU(XˆÏI÷´ÃmïÄjNhH“¬d8aÙ€(,AƒOØEw£Á²ÈÍKz¢Æˆ÷Ìü61k˜á{=¦ÙU•nQ6Ôæ&{­ÅùC[™†¦]ÕeCMn2áßîXª!WUºCÇžjïªJ76ëyåB.ô÷ÅÅÂg?{­Å;•5óò#Db¯µd§²¶LQ]ˆB%Tñ¸g„øLºH‡¡b:3Ca 5¥•ŽŒüÌzEe33BŒ¡Si/U—6xJ2.OvE¥¾Ù!H¹¸`($$þHqy€HέÑUef–ÀÒK-Æ9fua„Ô¤“0«ã1 ÆâƒB¡&GV1A|¾÷ô¼¨Ë¨›gòKñ¬…BŦIñ±¾êœóÉ¿NϹå‘MkÂT{à›Kðv¢.—þaÙN‹¼:j‚h¢“ ö¾þÁ׆ßO¿®;kð¯Æ†šû{u(ê* uS:ÿù¢|ƒó‰óÓŽ†[ؤé7îV=}KÞã¡é7îVåÝ%qé4ÐH‚†@ÓoÜ­J¹ý:×ÓLùÝ.ZN}˜Ý”wŸ˜‘B/Åý¾Ä×íqÿVó9œ_P( u‘µc÷›wMñLÍùï©ßz|ê#ÏþûôcOVý5¶(2¦9·çã9÷ê{’–\nIަ»¿Xø l?¹ÏݽÏݽwû©úgX‡¸ž^÷ÇÅŽÃ'÷~³ï ™h®>ýÆÝª”• ?-ÓKq—¿ ‚Xõ¶û‰ÞË{Öb¤ñ"¯…ÂPYÝgoÿ¼ãó³Á³….|Ö{Gï_È÷N†€þO§J¹O•¢kê¦é7VÞóàͰý®{ž¹™z=ð9˜?ùsšû{q¶t8œóf3d~­Ÿ3± KB“¡` 4Ý}ûc!…´÷E?gÒ5u‡B¸–Æ«ž[Ó3çÐê¾þÆ,î¿wñEH:ø~çßî'‚H9þijs:Ã×'ˆUo»»n¼MÔñ<ŸÜòvŒ+Éè]Ä÷^ºàçÁœÜ4ÐE Oux S]Ó‹œ?†ø–È1†©3ÆÜ.¡`8ü!…h†ºÉÞæVOûWß…à‹}}Ÿç^Ûñ‡ÿ}Iú¢íw= GŸÜÛü,<ó¿I =røåÓðè;‡?­øjà³?Ø~×Át6wùn—®ÊéŸÍCÒšîN²AïW„)a”TõàœÇßÜçîv<þþ]UNáWæ|—Éžè%š~cåÓpäðÉ}înÆHA2æ§Â–iú•Â;‡Ù–y£ãŽ‚ VÙ~gªþÛ̺ßJ}×GÛ¾ÍD‹[vÜÙHJ’nëÛÑv MKÕ4S‡ødvSÞí‹Þd|Û{ðÁ›£ugh{!åv€íw= ï>¹·ùÙ9|zea[/óùQ6ê‹:<©j ¯¿}â«Nzè=|!ø+7|Ïä]z᥽G$zxôf^Nº­/²9¾Sæ?#C~zG›øÚfÏßoÞꥠ€¦ß¸eÇ£m\}K˜Ö˜Â^Î+»±êíß=ÄFq#ùCm@Ùwïö[Hy~W§Ÿ†ƒ©ú…ëîyðæ‡Ó#¯ûE[?Ô'¼˜ÔSöòéh\$941·ÀêÎæÇ{êè{ÂÿYÚá4Ý=ç8æû6–œæD/6 ~ä£ì»w{ÌùœÌ\ªØêå±x aÇaàÀenÍ·NY‹Cã%M»~“f(B4êÊÕ¸¾l ór8²ÿõGg€A<,<78wL»Ô°³æ[ëþ8>6Ïy³2· V/·öÇú›ï_Ve[oLDÊñm/¯¼gá}§·Ÿ|;ì±IU5}Í'ßNf—ÚÖýöýpUë |â™sèÎÞXÚI MÚíœÜ4äs‡{æÁßž9‡Þ¬_˜Ê©)ǦØÏñšã{u^O2Áœ¶“Ì)-µW礖°£!hWUF5ÙV¦€fcEaƒÝžÔÓT’¿Ó•Sª!²:Ÿ©É:YŸî K5àn²tý².7YÌ ?šÇÐÙ­xÖ ³ºøhÇk‡3†ÿ—záÒiä,`~6H}>H}}Ø>>ù«—RöÝËo0°écïá—OÁ6æÉY`¥.Ld Y¨ôç+±ª÷á÷çôÒ”ç<œÞ+\Ø “ïÆè“.ZÌ]Dãpeß½ú×*ƒË•rŒ!ñ?Æ’Û‰òzxAH‚°£¯¬ÉIañ¸Íz'uVo*ì´4yý‰àÎm© -HLˆæAa¨KŒzþ±#•úˆîï¥û½³GÏTg^ûØ=³žY3{Øgè3ô\¸ØÑ\!»=΄ò™ÝÄ@¶I¬ÔyæðÍ„%ìd×ûðöÛw€9»j˜Ö"¥ï‹¼å/ΦžçÈ i–eŒ”;ƒ‡†4ÿ6“žÕw¦>ý³iš¦»¿øôOúVkÃ×—VˆOƒ£Nªb3*Ù.ŠÜE4q8×Â9»jüæ¥ôd¾/oM8²1qyV'Æëá!ù„Ð/Ur®!u¿“¹Ë¤£Y¯“^ŸD4êJЄ;-Å\ójÁÔºo|ƒƒ£´o”*µ±3í_øÂ'ý0à£F| ¦þYô„¥îiCÄ8qd{Û:ý3}‡ïå|îxôæÅ·ß³ð.¸÷YÇ6­±«­7°u…l›“ùE3aI (”½|Ë=_¹ïxôÃZá›s Þ÷(S°aa*ÜûlçÃÛïºh2ÄGØ2wQîôö“½AwtÎÀ("åø¶f Ø‘²ÛLÍ{áéu÷,€þÇßthËqâõ¹Þ|Ïö»{|>áŒNoùôŽ6ù.ê'oháÝ.ï âp8üxOÙ˷ܳð>€þÇŸ=í‡øôç4öþ&å>v‰\c·üãÙza>7¶8‘×#BØ‘ˆA ”ËøEj]ªq'™Sº ÉÒYX^*í@Dó 0Ô%@_êwNÆÍ?{Ãþš¢(ŠšP(MS@Ñ4Ð4õ~wp“’ P—W7Ï<Æ…øó¹ ñ¡]Uß& uÅj‚B|*Ÿ{ ੨.yá‰5x;Q—Q¦­ÇÆÏ]–tÜUmìdR:êŠ×$€ø¼ÜN^¤O×W¯Ã†š,šà¼:‚Дµa>‡ºZ4ÑÉm‡Ž_§<­\6r}ªWúj" ù(†:YòvM›åóQ£Óg uö»ÃÖušUfgB¬pšU†ÆnÑ’¸th$ACpšU*µZ­V«U¼8ÍLyh¯Òõº *q#…^Šû}‰¯Ûãþ­ yu(†:¹jÜGÞtëð(=:B ôß²øŒñyk¬Qd óc÷‰c+Ö­N [rù%5ºîFCÔ¹I’$IÒ]·dëz5§YU¿x7I’äîÅõ‹¥ëƒÓ¬R™`]®L/Å]Á.´&·I{yýv¼˜Ï¡Pêdé„÷Üèµ=0mx„¼páÂÙ‡Wü÷ú¬”‡Þ;5T*µZmhìpšUE»»ŠTæ78Ÿƒù“?§áüu.0ºî^¤”p“¡Ð¤§»ÑZè·Ðodø!H·0^jtl½“]GW,^è¿jáâþÿ9Ûm1祤䙷kw†¯ 5¹Ý–¼EâŽõ‰Ó¬ “/FpghNñ.BóàÜ”í"x¥¸ÃÙN _ ,‘e €Ó,tHT¼ºÀÁ(³›Ç1ùå¡%pÆ+Ñ®*¦¼ÊÅ·Êk-FŠ*MÜm){½{«f`xtx˜êïë?÷éi×\<ùëš{ÈZdÚ²ÇíNén4¬·8óL&w¨ÚÓÜ&-À*Îg¶r{›4&L·I  5¹µ"s¸9%l ÓFѱ-{ȼ”îFÃz¶5pš×w¸I-§– Ìnw 3¯®·8óxÙ Zñ–æ"¨á4::î(´¦ºvÕzì±ä¥0昘hÑn]’fò×JY´ÄÚî4iµ’õ#ä8\Ÿt7êï!ÉƵE›•‹B‡ÞíÖ¢¢Ü:7©ín4˜žy¦žHw»MÁÄΔ’)ÐÝhXKÒX³M¬%Áïƒcœæ"€<ÉÜ.â&÷`Nñ˜¶$b×I˜wïb’¾¢U¤)ÚU•aQ6´¶&AOSIFØ™¦°Cga¡<8q£&tV'âóæ»ÿšžÜÝ?ôùÀȹþKg>?ßûýÕ?€ƒï½:ëöÞó¦D¹u–¼fâŽlNn] ÊhÓr­íN9ÙŠdNçl·æ0çø[s¶[sÓB¦I­‰±PÒHáD[^¸x…”ÅiÓráèsÔju ßœ¸Ôçû$ä?ZS]nt.’šD* °bË“–ñØÑã©fÿçpï>qlÉ"6Ÿ-ÈåtÀ&°Áïƒc.^Á_WòYÝ)OGÈqÌÜdK*|¤/ÁúðEV³í[½4ÓvH³µã?#!„¸ Y̹)éè,,ÏI&‚HÎ)/ìtœàÝV“£ÄY5ÑCÝ}w'KýãÕ´½}xÚœ^ŵtöÊžOï©î¹snüôsï¡÷ÞpóÈ®¿ï7›e¯^ÊW`ÓG‰5öFRò,uP¤¬ŠöW¿xÿÙ[Z{Äç•ÑÖøäd×Q6ÄqhÒnçö%Ú¯Ðá'»Ž «ì:ÊxnM9ƤäYêDó9ùXiƒÒ’QbõÒùYh­ÈÿÑÌ,ÁÇf³W‚±:ü1ÕÍÆ (·Û[-°m§Xà ² ìåPQMɹ}³ƒÓjï®7ç<¶%ÛØŠ¨4íª6BEkk€àJš2I”ksyVo•’¦]ŽæTe¬L P¨IêdªñoG®½íèù‹=«R²ïJZýÐÝ?þŽîqxóý6ІÑ!ßµ‹ŽÄgÌ‘náâü9›>jrÇd›Öäv“»7+ ‹œíVNæ+Ú´Üc'‚®Nc“+©úQyI¾„.ZÌ]ÈwøÂÅ+rkHVîàB·cDRߨžÕɹ5ör¨È`’*ñõC¯µÄ¢l(UC8‚øR!ë#R!p¦X’vm§ÃEÓb Ÿ¸‹®b,P. a×WÛl6[k«EiÉ>“C¡®üPçøxïôëO_¸ÔÓLþéÒàÅ”ù©ËnUÀ_6ŒúèK¾i3‡þñVìö8zÈgkQpD»ÄJÝÉ.þ+, Æ„úÆnèn¬÷·Æ<ã¥þmÝ'ŽÉ]¶q¤Ü<4¤­¬Ò-Ùjböit7š¶.a–¬/-žOB£Ó\dÎErº/Q‡-ìn¬$p«×“·&,ט(s»äÜÚ6»Á“_Òä[¬Î÷˜ˆÅ®yÆH𑱚ÊFß° "9§¦Œ¢;J¤FSS –&¡ª ·-åç¿íÖ/¿sÉ7>0cÖT…‚ †)j”:éžv¸íXÍ i’• ' Á™^´5>I`ÝË"K4/é‰cÚú{îqÏÌï7ÎÉ<î™ÝX““d`»£«*Ý¡c7"äµïTÖ”Ip»%ÕœvD·P2;›AÏ<„£½Ö’ÊÚ2?ÄîTÀèе•ihÚUaQ6Ôä&á  ½Ö’|A^¨ãŽãž¦’|!dàñÞŠº*4{>ÿÙ¨bÖÐè(=20JL9õš/Lɾ¦éiӈы£´òÐÔ(=mÚ ‰žÃ£Èé®âH—xŸÄ½‹`®FQëÜy‰0Fþ˜L°iQX<9ÉXÏ£i—£ZZXÀO€Â#$øŒaö×WVByVVÀ€Àê"ôCšH!20ìÊV©àÊrvEH0#4ev¨ÊÊÊ€¥ fPð´dµŒyÈ(Ìê.7ÄçÎû²iMSíõ P#þÑÚç |”¢)ÊçêíìÂû‡š fu¼ÜnB|äA?(Ìê¥÷÷µà½AMjÅþ¬nBÅ9ý ®!Ä…Š¿&>¯NŽôƒºb„*!Šê½: uU‡:„øÄÉ~„øŒÃ·B<·ÃY…ÂPNñ‰u¤¼Ø„Ÿ„#"äÕ¡Pêd !>ñ™¼Ÿhó9á±Ècgë$”Îsõ0†¤˜A´«Šsôv8&j"!>ñ„ø0fÇâ#ÿ½ºÉ¨1îX™àŒ!æÌ—2HË(ijÉÀžGÚ¹ ¸GŠŠ3‰PWcV‡„ø\%ŸØr;éI\ —ãçòðÐ<®*¶K;¶À…û°ÀPþŽ0‰¥ó\ùŒ!µNßá9Å‹©ùC!fu¢’ù 9ØÞ>¼èž^ÅМ/Î]¹÷ÄŽ³§?»ÆñIžµëï;Yÿ•ñ±YnN…8GuÀÆ´IɳÔ1'Un¬!Ã?¶b¡<)Zÿœ+ÚúŸœì:º$mláФÝ.âÃsøÉ®£ X‡=Ùuôè® ê瘩“­)ǘ”3sÿTû˜2"¯S·‰? AZIjåå™V±H A¤e±¾‚£ãí#5LhLÄúâåba(tÔѹH¤Ž´ÛÃxLÆáÁ^º ]Á¨Z“;Ô2q›¶þž['ŽÏê¼ÀN4^r³Œ] ëñtèXØ›1ð‹¬66ƒ^'ÙBÜDVç{ ö²d"’Í1«c›§=Îý©ºZ&º¨7Zv’$lK5´%3,6(ŽÝæ\ aŒ¬6‚ÁžŒñC]x!Äg² !>°|Ž•¯GSZéÈ2dÕPK õÍÆ ¨´—ªK<%LÍìŠJ}³CªµHÂß ÿÓ+ž1ähîhiɪTØPœI„š Bˆ ‰B|¸ïÕMRˆÏ2†Pr„*º2ø7Î!c%[ñA¡â¯+ƒW7Á…Œ!”|!Ä…JT>‡~@¡0ÔÉB|âd?B|Æá["äÕ¡Pêd !>±Ž”›â“Pc0·C¡0ÔÅ*„ø ÄgòB|¢åÕñM–²TÌŒ›«“ž¶Ã=AA1í½d)0´«*ÃXèc8®b 8m‡öZKò=»O?Á¬n¬BˆB|®ˆOìÏêÔ:½ ;á%<‡Ÿì:*¬v²ë(à¹5å“’g?|<ÆguœÃ‹ÉjcgaƒÍfk(ì4út~RÍf³éÆf"9Ç 9³¿§ÉÒYX8€Ÿå×´¶Úl¶¶¶2ṎìÓÙ ¥ðØlöJ0V‡Ç4+ ÜnoµÀ¶b§ÙèÐ1]ØË¡¢š$’sy³ι$B„£ MYèpÄýé?C1†!HpW‰iÚëéLUžªŽv…¡.v!ÄGf²†9wð²@|¢}VÇ‚ÇдËѬ7ä$@RŽ!ÑH‘zÄ 6\ÆRxGÛ9åéÆc#C2=Ea¨‹—â#£åˆ#åÎàñá9<៘ò9âÓ ´¤W¹¤«‰“zÂCmÂÃwŸ¶³@¹,Õ¥•©ûâ¹’„„ø Ä'!æY÷HL™JÊ1è3®Rµ:Ê PÞäŽID²TBŠº24áŽ{~¦©šX¸wdˆºtaøü顳ݗκÄ@|Ž||`Ƭ©  ñ9éžv¸íXÍ i’• ' Á™^´5>I`ÝË"K4/é‰#zÜ3óÛĬa†?î™;/Ó®ª ‹’Ù1èªJ·(js“½Öâ|YØtU¥;tìñù®ªtc³žy¾EÓÞ¦’J¥O@öï3dŽùg{ä6×Z¼SY#uHÀ`n;¢Ñ…9õ¿üFz­%;•µì mˆÁ4íªÎ°(XÆw£Æ\UÅžM|\xh…Qs ?vÔ¤ÓD<î!>“.Ò!ÄG¨˜ÎÀl.ÏjŠZZØPÊ,$ªK+ù™õ ŠÊ®´–×ÄI=<¨ 2!…‡CÛ!’sktU™™å°´ÀR‹q³º„fu€Ô$”0«ã½W7>ŸIµA ê*Íê!>¨+B1?«‹=lL6¨ RxPã&„ø P‰Ò8óê&Ô)<¨qB|P¨ø+¦÷êP(ÔÕêâ'ûâ3ß ~>‡ó …¡.²âëHy± !> 5F\È«C¡0ÔEB|â3y!>ÑævRЙx)Z’NàTåË‚³ñZ‹‘¡ƒŠ¯âƒ@ˆcvÜ >Q½WGÓÞ¦#TÚmã].ÚU•a„J{kù—yv óÞ[ga¡<8;£&kV‡„ø\%Ÿ(ŸÕòtèu‚sÀ¸¤Pæôa69ó§\U® ‚‡9’W!æ#k:0RVŠÝD!n²ëãq›ô„I1™s¿jr”85£&q¨Cˆw!>Q mÒA|ä?«#MiƒÒ’Q‚—£]ÕPn·Ûl¶P8N³Ñ­­­–‚NKUU‰Cg··Z :ÕÁ bŽÁ“/àï„§ó08Øù›¢D! …`}HP—Ú+€Yäjò†:™BˆÌd !>rîàeøD›Ûɹ5ör¨Èäa¡)«Íe9!pœe… A4I™ÚÑuk¹ÿs°‡˜#àïDIçá‡@QHºzD¬ uÕ‡:„øÈh9âH¹38B|xO8Ä'†÷ê"9·¶Ínðä—)nÌ‚a(F‡Kð¡ùÈX,M…š¸BˆB|âˆOì礨uz£ã@g¯ ³§#N¿aè<¡Ñé²TƒÇ˜ ® !Ä'|%„øÈq%B|Ä!>Ü30e÷ ø$ Úˆ’wB¸?!H1ǘ2·rDB íªÊ0v6ð 8B¢P»““ÔÓT’¿­C_)a¤š39‹¥òQs(TD!Ä'œ†Ÿ˜¼4ñ»H8Ä'ªÜŽK–a7É )­td²ê¨¥…úfcüÒöUÝê+”–ŒŒr…‚ZZÐPÃßa‘ÎChÊì•UL×Ü:B¢AhJíP‘‘Ë *õù’©'ÐÃ…’®P@KV˘áA(ÔDÍê!>¨I(^V'dŒÄó!jRdu€Ôä×83 P(Tx!Ä…JˆÆŸWˆÅA¡$„*±¹ú…ÂPAñ‰“ýñ‡oEPÈ«C¡0ÔÉB|b)/6!Ä'¡Æ`>‡Ba¨‹UñAˆÏ¤†øDÅ«ãB|ŠÎA:êêB|âñaÌŽć›ÛÉ^ÃÔW´&ö%¤ó 0«!Ä!>W Ä'.Ïê¸4œôôª·¨·¸ÿõÓpĨ:œ:Ü‘΃ÂP7Bˆw!>Q mrA|â÷¬Ž¥á´±Ô›ÿJPux—ãÒyPê&â#3YCˆœ;x¹ >Q=«c¢HyV–à)šŸ†ã_ä üWšªÃ»$rîˆt†ºË „øÈh9âH¹38B|xO8Ä'¦ÜN_ÑÚÊ UÛ07B¡â*„ø Ä!>ñ‡øÎI™8ïÕ!u5 !>á+!ÄGŽ+â#ñáí½ ܳè>F^¡°ŽUGr?$ÒyPW§âaNCˆOL^šø]ŒÄ'ú30›Ë³‚STvDdªá[¤ó 0«› Y Ä5 %ŠfåævãñA¡P“#«„ø &¿&à³:êj–bâ›ør;ù?m¯ý±Ùw 5Y„g`¢Pê¢B|P“TÑ¿W‡B¡®ÖP‡Ÿ8ÙŸqøV`n‡Ba¨‹^ñ‰u¤¼Ø„Ÿ„#"äÕ¡Pêd !>ñ™¼Ÿhó9šžö³ysçÿ]÷gÏ•Iº¡éi?›7ûà8>ôÁÙóB[ Îfüö³ƒ´œú( uH{½;_90<:04z ñ©Ý&±³™Àìv“»7ÃV‹´&wÝFjcÛ´Šó™ñIcs—‚.ê"Ld£ B IîÙ<.‘%ÔÏTd™2$Iú ?©–æ"¨ñŸÖ(wZSÝ’­ëýë~ë» Ø·ŸCϺ žÏ%U?BŽ‚6`!>$I’iíƒÁd»ˆ34mÄ?0ÀZÄÔß½ùXý3ÏÚÓBެw8 ñ!I3ìµ£Ÿ‰µ¤Dý,aŒÓ\$â‘èŸÕ ï>sîìÙÏΞýìÌn_YÙ5œ…qË3óþê)kB#Ùüjß‘3çΜ9{õ ¼h'¬ÂP—p!Ä!>W Ä'¶Ü.(ÝpÑ)ÿbÓ ÅŸs™T/˜šò¦M•…¹3a’“/²—³•=3sçÍ7onmJuš¢ñ+»ctðglÂú¤#âå’MO{rå”ÒW–s ¶)UUJ‚ *¿jà=ÛôðõQê.„øpñâÕÐ&ÄgŒÏêN6\ó^ÕÀj‚€“ s>*=wöìggvÆ'§³3øð§€ý«Ù3G¦o° ³Ia锕O²3¾ãÉ9ïU?{ö³#US6<Ó7”AÕ™sgŽ @Ù5L°¶)ìš'Ç“×3—ˆvçùóuÕ·ŸglË´Í© “ß>AŒ<‘°»kn?Ò§ ~¶:ßmÁõvßòºéH)¬ÂP7„™ÉB|äÜÁËñ‰)Ÿ›¾aþ LêS}ÖG(&ï9ðW¸ýVªÇÎã¾Û×L·9럿&…uÓ™f«.Í÷ÀÂü¢`ÞýÊ€’ `¡ÏŸñðÛ”èšf†3uü^wL;ÿ±ÆÇšö‹¾"yíóäùóu¶Ìó(åž%m}†ºñB|d´q¤Ü!><‡Ä'æguGª|Ëoóù §|t`JÙÊæÍ›;>›•ÿJl¸Aj#F kS¤ë˜4壜Ä+¤\nû4=í…²)u•§o˜?'LhŒ¶> CÝxËñé¤?=ü¯–ÒÚûßþà0Ÿ‘!jðâÈÀ¹aâ#+õ n—ç~†ÄG­V«êï1à8ÜÝwíÇxsš°$´'µZ½~ë’ÀS@­iÏâzî¦>­©n ³J¦2Áº\k‘Êü†¼1„¶ì_”Û𜿈;:î(Rò,]ëýïÉ™ÀÌ…øtmP«Õê {×ù¦>ÛiÉ.Å®’ “|ŸF­V«ÛÓÏêdºH8´pn—ã<žÃZ»,É}w"%Ï’Ö® Ýo)ǧY¥í;¶gu óûn¯Ì˾Û×·«Ö b䩳Ÿ92ðÞ†¸Íà‚6Å»æÈwûš±t±}¾mìò왾"Þ}¦o5AÄHfÑ”Oþ™ò^Ñ0S.Zgü«Vñ _ !>r\‰þqÏB¦A$ˆÏ´'çOÏôOÇ´gæýePõÊ€’ <¾î…ÛÎ?µZ Êã™yÿÊ)¥gút0ýÉùsêü:}pö|ÛðÙ§FààÏæVß~Þúåùóu+?8ûÔ·/^¿Ü6W‡íšÑÁŸÍµežãVvÇ«vðgs7Ô±vFl_*c ñ³ó•…0¥áþë?*=ÇkP8FÔÕ&„øD˜Óâ“—&~ ‡ø0ù\ÌïÊÁWJgÏ¿ÿš#¯ (¹ù³æm,r@Ñîs« ‚¦`x÷_õü6Àš#¯ 3Èê~Ñg›ý¼2æZ¶P"~„´ ®yÑB÷‹óßÏT`*Ú§íî+ªc·«H -º°D¬î?³çÏ¿ÖT·®Æx†š Y Ä5 % ñáæv …ø`â‚BM²¬⃺R4ÆÜ…BÅKS'¾‰/·“éÓÄÀõßÕã2¨É¡qæÕÄÈSgG¤'Q(B|P¨Dåsè C,!Ä'Nö#Äg¾!B^ …¡N–âëHy± !> 5s; C]¬BˆB|&/Ä'Ú30iÚU•žžéWzz±Õ‹G{ÄYŒ“«\thI•+Êwð¹7+=úËåµÿf1ÔMP!Ä!>“âS>§¯hmµÙl6›Í^™º­¢É‹“]üµ¬ÓR-3Š„ 9ìÍjk+Óà êxBˆB|®ˆÏ˜žÕ©uúÏ)vÂõZ‹Óy íªâfì¤(,¶zƒ6 \ÎVöZ‹ÓÓ333‹­^Ñ6¥ºæGÿUU.:ÐW s’c¼x‰ß¼ ý­[­UÒF† Q©†r¥¥š “«\ZalQ´3d…FI?‡~–r>¸ªØñŠY‡šT¡!>ÜE<„øD5´ÉñCnÐÓdé,ÜĤ =MƒÝf³Ù+ÁXM2ófµYE³Ñ¡c“Bƒ'ß?_’ÕÆÎ›ÍÖPØi N¢ÍÆ (·Û[-°m';³ Úv-P³Ñ­­­–‚NKUU‰Cg··Z :lxc¼xI”Ûí6›-`!ÕPn·Ùlå°¿9è+~¡) “l%å”+-ÜeLQG„¦Ô^™MeWÚKåäm~q§…:¼Öb‹²¹}:‡±CÓÕ°€‰™ÉB|äÜÁËñ‰‰W×\ž•Åü]_åµ¹ÉLÊâÜÊþT¯Ùá¢i€ÊeÍþtª¯,U“ÂfÀÍzCN$åü—€¾²&'™ I™Ê^ÃoS¢kþz`aC©†i§£ëÖrÿçp-ç—„¦¬67™ 0œÖ<©Ê$`Ç…‘Â`gKÈú°´£"ܬ@ Íå|ç3£X«Mbï^i¥CÓÕêâ#£åˆ#åÎàñá9<៱<«³,egt€SžŽŽzCVfffVVy3 ’sj*Á˜Á]*£ÄÚéZ¸´4äsÆ‹'°Èéú”§Ch€#…ƒÕ”<M=cpX|ŸÕòt½‡Š§&Üi)~ˆÏð }ñ°§ë-÷ë…ú§î¾ã^â3{Þ €z”f >/ü"?rêS×®Zo^ä6iC>CâS¢PPË7ï±à8âA4>3­«ŸSPÔÆ:wPs R—0…¬ ê êç¨å›·äZ‹TPëN“3†Ð–ƒo¬#µü‘rG‘’g)0«Tjætãå›÷p!>`V«Õt@˜úN°K½‹ ì‚ø$0jØXS—kmÆE¡åÀg‡×¹MZS]»J¥V(–oÞœ ]‘§™Y³£1ÆiVA^¯cæYo GI9åÊ’j—šY7[ \¦¯¨á¯¡„¦¬­­Ôk-ɯvÙÙÜ£¯Mñ®£‘,ã5!躧©Ä•v›† iWu†#Ú."VSfp7õ0`¨»LÍ?>B>ÒO P@œèýaõà Ä(z´”`!>Gý ?tÕK+òYkr»Aä33·ñOµç6"'Òñ:u›øô¡5‘d V^ž `ÛˆÄDZë+8ºQH&4&b}ñr±0:êè\$RGÚía<¦ ãð`/݆®4ç²PÈ4ÆmÚú{©Ü.Ú³Á"9§\YRÒ´ &'™HÖ®íÜI‚FyýÓ˜ìƒ%ÒѬו€F§7Zš6ir“{š,ÍzC‹Ae†ì®ãÞÂ)OÇ2vY²ÇÓ   Not¥ ô4Yš!U76#Õ›ÖZ*,À¶#å¨NOh’#Ž4Üåê$oS‰±$6ä Èêp•QWH¨CˆÏdB|D4Æ30‰äÜCUFISCMNrn­®*=³œ±6»Ò^ª²:ÃØ¢P@ve«†Uõ• JKFF¹BA--h¨a3=ui¥##?³^AQÙ•vÉôÏ¿á0Ø&»Ž6y’g¼°kMi¥#ËU@--(Ô³Q\]ZéÈÈÈT(–èÁ¶ ‡.’µDrnùÚýùþEQ¡£BSZéÈȯVʸøåv¨ÎÈÈ€e… •ú|GØË<%Ì(²+*õÍœYâ+„ø PqâÃËç ñqəܯÑ^kÉNem™¿x(9Bˆ •(Åü¬1廊ìJ{ú%_ñA¡¥qãÕ„¦¬í Oq˜­+eø­BÅ$„ø PñWLïÕ¡P¨«5Ô!Ä'Nö#Äg¾ü|ç C]d!Ä'Ö‘òbB|jŒ¸W‡Ba¨‹,„ø ÄgòB|0·C¡0ÔÉB|â3y!>ø¬…ºzCB|âs•@|0ŸC¡P( …BŸþ?ïdÒ%1SMvIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/14_reset_counter.png0000644000175000017500000001775412032647166026202 0ustar ebourgebourg‰PNG  IHDRY]MAsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ^q²lIDATxÚí[lWžæÿu6»3³»èA1ÑaH€ÂôZ ‚!B­ÛEm±±Ým‹ ¶Y2hÌdBSû°+𤗄eô½CÈ;vÜ “ÉpC×ñH &GžAÛ d@‚A;tbì`{;8§ö¡ÈR‘,‹u¡ôý ªtnuNÕWç–þ Dôõ×_£#ØÎìØ±ƒ¡D-@ дPÊ+US¤‚ݾĊdðv÷øXŸAÐwl—y˜ öôô(…€ˆØb¤ßJ‰âš6KSÁîîîîàZW¨2/s±aoœ+™ˆ© Í‹~`ÛÌ ÒŸ„ãÿôE§rE tžž>Û)òÓ»§§§§§Gù W}ª+}ÎņäB†b9QÅTÈæM0ÆXÂg·•¬LL©”œ‹ uwww1´4@ D1—]"ÎÛšµ&6o‚åK`,áµ Çr5NéÓ!»+²(²é¥µjì¯$Nød9ÈÞV–Xý¼à‹l†ˆÚŒ-Tuâ099999éwpÆߤk¨›%|¾owG'&&'''ü"¢ø|šÌž©€ƒsÎþ‰ y"ÕØîŽ*ËSƑȢœC @cÖÚˆbj>^4q0lç\ysê¡h b¶:8¯V£ÃÕ×¢H¼”}¦(­Ý=>åéÄwÔN¥½Ã]FQf)ûŒ: Ù‡cQ¦–º9w<æÚ¤‹%|ö„ü ñ•pîàËN«‚`0¶[\ ûo[´n0…X<Ë.iÖôìv4ÁñU5—óöÁñ1§A(ž2`X³5‚4ç/›@Ìņºƒi2[{I¹A -æ©×*OÑĶ¥{5êv^«¬,¡³¤FÀ:¬H08ÇY»/Q4-—ÎäÈ‹E<¼˜ðõäÿÈÛ»Œ&¢E’srnweû½º»Œ&b‹‹—=Ì)O§ ”ÕHœ;S5.35Í ˆHè<;1u·óÒEþ”§Sƒsl* ïöqîLågï‚`èó ¶ÿ©¯¥†f•”°"OŠ qˆkгF@ д-@ ÐPùÎ;è DDÇGï°MøéOªýŋ۾¯ý ƒÀÏ 6 £œÂ °Öøÿr{‡"|€ôiäAL•øl¯YrÔ\ £c4‰¡ ¡Tß;Œ{CÖ 4ží8M—Ò–:sxaÄ‚«=kÆÞá۹⹀Ò=­§§Gš;¬x™¥‚Òñ¡X®`j6$[*I¡PeÛ5=6ªÉ™˜ó’êM›íè(ž)$GU>'G;F“Oo¸::Ìf³ëÆSI]>eŸž^Iüô†K­¨§7\˜‰hA¯ßï(·6„γÓÓ“““Qw;çqoHé_ä·JÇ#.›Ÿ|ãƒ&Ê„ýyAI‡úÓÛï6QÜÒÔ89sVW‚Ó>ø×¦ó2{¢îv–ð)7Vh1¶È; ´Û þ%-RšLö‹‚ýQ›Ñll#)è¹ùìô´l”VÓ$&ætßMD»»±M1p^ŠJI÷ìUùëÓ¹;ÔúY+Š*äûDÔÒçsÏö‡½ÃÆq×Ê2Av:­Ý%g1I ßO–ýëOß1ÿB’3úÉa\ZPŽ úÆY›7욨ÍJ$йÛþp†LƒQW¶ß¯¡Æ]FñL>°º¾,–ÃÎÓ3ÉËNÓßhýçX €5Bu9èôŒš2™‚ÙIu#æJ²b9db,½wDÒ³wh9ìŒvÝxªr8rã)=½Ql)`2îjdÃvMĹ£¾y¾`p^œžö;8)}\uÎ ÌGÛ9{‡å-½T0˜E9œñ|š(=Ÿ`ÌtÈbhÜ ¼<\rUá|WŠï 88'“Ñ€/¨Æ+U°cSÆÍqÙ#DDäðOœ’Âg»}>{‚ˆ;ü v<É—qõDHÚ4WŽ>ßàl8ⲇ¹ãüä[ÿ»ç\þ…2 úú B# @•›6w\£†ƒÿG@íŠ8È=û€í¾_pãÆ ôÛh™@jûXT°½„ RdD`»ý´-@ ¥ldd˜¦-È3úÁ)ŒŽÿ/°Fa¿-TÓ9±nxšòô†«£c4‰1`óhÁíáþpÆäŽy"ÔaC ;Kr´£c„Ž81 lêß#d3DÔfl!*x"¬ØPÂk£À”ÇLiÙO‰¤xG‚”,N½}øáoÞRÿ¨ÈR9f¡eda(9úÑ2†€M4/Bžzm+aËm¤@ã“““’Ç2Ĩä}038_œÝ @“iAçÙi¿ƒ3¶qÙ«Ïð%«yï@³k$Qw;WšŽ”näbCÝÝvɰ%µ@Ú)è 88Wµ*ÅÜm8C&wÔïà] ÀÔ‚àP,?HÏ'+ø ”Ø|¡Üb¬€ºs 9´Àã#¿ÍÖÓÓc÷%x»{|¬Ï ’ ‰2Ò&BšÌž@/c ¯-ºd"¥ÍqÑÌB‘¥r3’£fóð§ìÓa³o°þ¨Ç;\>¾ö+üo›BàÐZ#¶¿àÅ‹ˆhÀ¦X&ÐÆíŒØ$BPÉa=ç6Ø/@ дPÊ+[ûôð…%ЂóŒ4UÁ~Z€ €R¶òÞ!¾JZ/  ø#ò@ Ѐ¶‚…<SÁZÃÐÖµZ`Í [”CQz>^G‚ÐyvzZŽ’ h:-0µ·s9Ö°˜‹E—Líœ+Ÿö=‚©+„`*ÿüÏņº‡b_Ȧ ¢¨ÇA9Pÿ¬i¬h¸´¹\½rÐÁgÉY:t¨­øi?99)yĽ¡4µôœÇ½Ã±œ(¦‚ýY×ôE§¡l:PÕAsªR^@k2[œgf“91—œ¥C£Jɪ  žñ|èA[Ô8î1«–ªmŽ ÍjòêÕ2[{‰-F> }nsõ[Hós»Ý—`+…§oÐDD¦C6Ø*Z@棃íœ'‰^kÑC^s·ýá ™ÜQ¿£°‰ OÎfˆ(öc ÀÖÑj±2çké|_2M*5PK‡ú³®©¼ßa¨Žï¡ÓÚK’ßA:äUN:¦‚`p^TùFP:=^Æ^[tÉDŒ%>ìþïÁ¡îyëÔÙNA08Ǥ¿׳¥g>šßtˆ•“ÀÚ±•ãÂÝóqø#tí¶[<~ÌлL -íst Á–÷G€9:Á~Z€ €R^A¬|g   ÞtÍüy h@[ ¤ ÃrDã‘Õz4Ð+A,DCÞ\Î ÉQ³Ùl6›G“«;À¦šĽ¡Íip"Š©7ιÃ?1±Î z%,9Úiý,N§?kt¬ÜÞµ`³ij`¢†ødo÷ôô(Ëö ò-§,PyŠb*dó&c,á³Ûå?¥‚y¿†î`ª´©©`wwðžìÔPÍ¡Ø÷a¥:¯MK“3>=¾›ˆh÷ñÑÍ$ë;ÀfÓ‚^¿ßÁ#ý¡t Åéð/`,1K¾ ¿CéË”õ‡3&·ßm¢¸WQ£T òá/ž©€ƒså¼ ò%˜Ã?1áw°„o(–«T‚v Õ|Ìru)Oå9Hr&¶wÏîÂo»÷ìI7w­ÇØ|ó2{¢îv–ð)7´Ñã_À¹ÃÕ×"™/H¾L¢˜šQ›Ñll#¢¥¬,ù«ÌásÉÙL>@늧ƒz z¾lª¼kÔÒçsÏö‡½ÃÆqךËKøì bLº-[jÈ*eVPs eÉņûËŒc„À«ó‚„ÜÐ7è¥LØ]Z‹úMÆ]DD»Œ&’æü“““µoî2šT‹­]*ø>èÀrØùèñÓÂoO?r¶Ôs€M©$;£e2™Â¯«ö/XÊ>#JÏ'£6£AÁ`9d’½kEÎ>ŸÎ» ×&UßIk–²Ï´Å`ïG#7ž=½1òÑÞ­]ëq6©‘äw°²°jÿ‚Y¿ÍîK(WòçE¿ƒ/F\õ½2 eOøìv_‚;ü†úº£Ü÷Ák ¥©¥Ï—?åîî`e1Yp/¿c6›ÍïÜ9òùˆ¥Þãl[<Þá:°„þ€Ö€-â4¸0€­°L 쬸0€¦‚-ï°nóthv°_€ h ì6|³  ÞGÍüy h €ú~üW>âðOœí¬DLí¾Iµ„®Rû)0%·YS!Û¼u=Û–5*}äü'—F,”í8M—¡ ’£3‡Ïvœþ´8*L! ª…Ëјò˜)²yãÞP¥)ïV@½›A”h´y„ ã4]ZH—ÝÌò(2š´ÝäYFF ÒpšbPbd êV Çì@#M,6Tâž@Jûƒ ÙUέ²¿ƒÒ¡¤yæz*ÍKÁLÌyIõ–ÞëmÀ4¥<Ë.Q¯UzÀ–¨ºè1;ÐH3K¾‰¨ÛDÙ=!òÆMîèJdÔJÙ¨û;”; ¤Æ Úæ:*]‘‚Šá w‡€&ÓéQowE2½é³Òó³’‘òÁ[Õì@;«¯%oOwOÈ%g3Êx¤zšATÍß¡ÌAÛ:Ao¥:Ø}ÜM‘OqõfÑÎþ ¿ìhR¬¾DÁÈ ²Ž4 ©ØèÎÞÒçs·ó¸wX`YšüÛ¥¼µö—Þ6kcq/@ Àf¢ê{‡æ£ƒ¦D$½}´ÓiÈdо,({:6*MQbÊTÉ®ŠäïµyÃþ¨‰Ú¬ „Á¨+Ûï×ÐWz+%²vžžIŽX,šj0ãºñÔK4Í~ôhÍ„ý±œ¨ÇÈ QiJ+í jÌ^äïPÁt6Cg¥–ÃÎØi—öƒßâ:rg$ò× h-CŸ«—±Ei M‘A£Ò(z3—]N\Sv¥¿ƒª‚N;†*µŒ,\Úû‹w̪Žê»¡_ã›Ä;l$ðJÍ*ðGè]#¶ˆ_Ð`à•šu™@Ø/h(ðJM)ðGX‹y:4#Ø/@ д-@ д-è¡ú{‡:ß®ÿ‹÷ÿ3z€­¬Dtæd¿v‚ WÇÑ•lý5¿ûÃW´”‰K dªFªÄŠyA½q‡7Z¿þ'Û¨k>Ó‚ÅúlS_Q?¥Z¯›Õœ…Ü[Õô̦õÚ¼  ÿ÷›—å?f³YþSÍzœ vwïñ{åF%.I%ϓª7Ay®•#ÁTù3Aõ³ÒµIé %‡EÔã ¥úÒ0†’'S¶áèRQÕà.UcâUÕ¨Ú3ÊäºÊÇKÕk«Ê`•u¬FSõ_QÙÛÃå]Ú× bê—”VÓUÑÄZðÛo^þö›—?¶þé­*&¢¿›š—~­­Ê‚{Ò›ìMU £r—¤•Êņ£Æñ±>CÙä­K]ùójHÃsvÒ2!Î~ñŒfÛ¬«Oë,Õ¦ÖvEÕ)çÅig*ØíK°¸7dò˜×õªØÐ5Âwßóï¾ÏßüWnMH¿*ø<,wI*ÐfìóLDݦ¸WÞ[ÒÈ%Ûͧ‰Òó Æ¤U« tZ{IJ)­™u]¦…’krOÒÿ¨±ö’ÔTe“4ëZÊ>ËŸµ ‚P«—Tí5Vé•™Åç?ɶYÍ:µ£|°ôd)njMWTõ.Ò¸NÌž€ƒsI³ÖâªØ¤ZðíKþíK~ñ¯ï\üë;Òç’Ÿú§[jFå.IJI› ôƽå{¿•¼•>»Ý—àÿE§!?ŠGM”‰¸ìQã ƒóª—iŸ/Ÿ¾Ë&˜¶sžðÙç­e“4êšõÛ쾄r9ZSÃꨱjϨˆAœ¬úË•«jeS븢´»¨ü:‘¿ª°Û}q2 úò»WkqU¬3Õã |íWGzßÑ.åNü3¼ƒ¼>4Ë[Òº=ÓP[ÐMÇŽ;tí܉†Îµî-2Ök5£7¶Î¼°æøŸeâ hZ€ hZ€ôñ ýÑÏŽŽ éøî­·^Z­*M "Ä… ùæÃ÷ᇠ)*ÿŠÿç?Xÿ¥ÃŠž YøÁÂüÿÓ|ã×ÿÒa;wý @³`¤ók¢ÚüÕí =ý—>;F€æEW,“Ÿ9ÿ“v‚ÿû[t%[_ þèßü«š Å×O†æá"»Î\îß«¬õC‚»tÐsõÄ~µPhåc$Áy—çÊû§´ò®]Ô­â|ϱóçl;…ÍÐ]MQÅzhÁ¿ýõdÇŽ»yóf¥\œwy®žØG¯Ÿ Ý ]?°ê.ØÞÜüCX‚°¿ÿÚµ~µÅ÷7D¿žO?ws™z.ŸØ/¢ø|úüõçÖ»Û5â%åÈÞÜó‚ÿ÷ûï˾çúY¥?ivÐóéóçn=f’Rä/¾çSçÏÝ|œä—¤”4eŽ1Fs¡“¤:NÆß¿0WTÈÊ‘®3×ú÷—ŒP^§Š?;öäÖ­ÇÒC©ûU•JËOa¥L…B*mÓh†²ºòg`¥ºäç¹rÂUtúWH¿œ>¡rùÚ”ä-?Í}ô•ÎæÉÇùž=­ª{xçæcÆžÉ÷ž ì´ùú‹†Lѽ«ÙŠ]!>¼~ªö¿ràþ©¢³>±¯ôÊQ6I:Áº¯Š5B×{‡¿ûöåï¾}ùžëgï¹~&&¢KW£Ò¯Z™¿úò < ÿÃëçn.·¾{æÝVººþ0þçn.ÓÁ3—/_¹råÚµ~Õ”‚°ÿÄUOçJQò|ʺÛúîèJ!ϧüæXי˗Ït±¹ þ©çÕ»ƒÍÝ£“—Gßm¥å›wÔ+-?9oèþ¹ýʆUjFIu*·GY]ÒãåÊ•+—GßÝÃùÝÐõ¢X~úû]åëï ÕÓÔß¼‡×CsŒu¹|õ䛕ž¢÷ïç]öUl\oý#{¦‹±ÇZ]!ì«gÄYéY?¤}U/׺¯ŠÕ‚ï÷í÷òçÓ']Dôñ¥_JÇå?•÷þ…‘[Ë=²ìÝ¿KDo¼¾ïõ7ˆèÉ—Ï aä› Ÿ~¾bPW1e¥éÆ?ß[&zãõW‹Žä¯­}º8_¾÷ÏÏ«û)v½Ýý*½úúDt÷þ?ÅŠ ã¼ËsbŸjÃ*5C»º* åªpú:O§Ž®O³¦æ}ù„8ßÓòZÑñšPÔ»Š‘Ýw ‹óšº¢¶×wv«¹*6x tFú‹ÓïÑù תÚ%qÞå¹zàþÉÐÝ»÷œØ'K#csæˆ1Z~ö¢Âþç=9wóñã[#·”“Þ’”¯jÕö›gËÕŽT/¤†gfý «±¥Ý¥\R­X–Ÿþz=Ljh^©Té\lï£õÙºG\í¬×ðªØ0-xù²H™þÛÿ¸Zr¤2ûŽk»5÷ùô‘ý¶D¯µ´_.5 ;m¾k6iù$í2îSK©©¯µ´-kimy­=¶ê†ÕÐ ÕºžO_½¹L­ÇFß~v.t·âé¯ú›§k/óÀAš››»ÿðÄþýÕë]ÕÈÖ–¾úˆ×~Öktq®ýá%ç/ RÿõãËүʼ¯vŸ|w_¾yuê¹(;ôf+csŸO¥"'<]œKR!åk-­Dôä˯ʯ¤?z³Uù'¹„û‰ÞŸc¬õÍíéš“RJ‹X]ÃV(YûÔ.qõfÔ”·¸.•glùé¯Ë7ú›·ÿÀA’:A£Ï÷9¦Üb¨µK«ì“/¿Ê§§7^ׂ:F\uâSår­ïªØ`-øî{ñ»ïEßÏ#¾ŸG¤Ï%?Ú#×ýöAÆß¼:ý\wÚ|gºøã[#§Nzÿýñ¢(ŠÆßÿÔ©SîR뱓ÝR§”§„Ý'µÒò­‘鈲¢6Ÿçàò­‘9½TÂÜ… s¼ëŒÏ¶se®BË·F>o9ÖUÝO±´Òò†i—P©zPë„ý'<› üüI+16:y]j•òô®ËSó¤û|îÂÀýžJ}.ì´»ê9Hw/ \ÐéúFöÞÕ“æT·uV9âªgý^U–S2"«¹*ÖJ܉(ûžWãÿþêö„õ?Ö.eþfð2ØœlÉ7DŒ¿<ÿÆ/ÿ?ŪÌÿà .)¶6Õµ|ÐÔlþþ6 ˆq€ %¯Ñæt}@³ðƒ…ù5Ñ‚?þ§ÆÇN4ß¼à›}E XO¾{ë­–&Ñ×_n`;³cÇìˆð=Z€ h*óÿÁö]˜ù“†žIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/07_multiple_selection_params.png0000644000175000017500000003020112032647166030544 0ustar ebourgebourg‰PNG  IHDRkÚ·©MŠsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜœ?D÷ IDATxÚíÝ{XTç½èñßZÇó<ý7‰D·ÑBŒ{7ÄLCì–Û1±@.{bSl¼”6Zµ¦ûI=»ƒ¤&[Áب©4MHš ‘°±Û`& —³sŒ!Òj,"Zÿ8ÿì§ÂZç5÷ûp1\¾Ÿ‡?†5ïz×{YóÎo½ë2"@4jnn¶X,7nÜ–n{Õ§‡þõŸgl3­û·?í.ý'׿/zwۺǦ}­gH5@TbbbfE’Î?¾øÿh2â*•ð‘ð`<#HÂGÂG³F>êúÇo>ös»êŽAÍϵÿð>e†ºÞ¹7³¬É£)r*Z¶¤ŽOSød®i‰ߨW§D¾n£äV¶mNUvw0.ÔÑ….šöÈÆwÚ«^)™¯igl/Óõ[\]ÿø÷~ÿ™G_œèM‡}Ô´œŠ–––šâDMk,ÛÛMyt½sOFFFÆž`k¹2O’ÞýOE—9Àøš5>ÙÌ™7Wä’ˆ®ò{‰IcVÒ˜­<#+K­Re“’?<ô_‡J³× ™_ôûŸ'Û]ºï’ÜóhÕþŒ;Ñõ+íåO½ jÚ#¥ïn½G>1æAU9Qõ˜”¾»u±¢ø¤Y¬ø ôÝ­÷ü­î×¥ûúUÕ‚dãÓ±ó‰ô:ÿëÜ“QÞ¤Šˆ–SqrKª#^¬ÛôÔþóŽ­çìj}ðLÖsMªªJSY¦„š/ôÎy³tß%Y¹ñöê?œzõ½m‹Ç1êêhRUÉMKU”ÁºÒò&5§¢¥¥"Gm*/­t„wOíï•ÜŠ––ÖÖÖ“'·Ü¯Þ¿¹­2GÓ4-'Ìéæ®Ž&UMÚø„‘&`þ"Òµ·¬IUs*ZÚÊ—K%μ#¼Ð5d¦Wû/8#Å`ù+JjZ®Ë "ݨyy’4v¼Ó¿(-…]L–RQ–®¶®TÕU¹òQÕU½tN:M0³yucºÖ_óÃ’Ç—OðQ”¹éÏnZ Ÿýiº±Ä?O&Æ€J_^úDÙ¹çÑg gOÌ„\\aUEŽÖTž]Þ¤åT8¯_ìÜ“‘‘•••]Þ(IË âEQâ Ê7&Iï¢ì€Ïôq\dYt ×¹J°üE$剉šÖTžÝ‘V™ã9Ëk„B Æò‰ÈÐÐPss³Åb¹qã†ë ~ÆÓÁ7»w—þÓT¯…ñ¡ÞÜJ×sBã7x€¿˜˜•V˜!t}ðhÅþóªšË $›Y4Á ¡(q…U' i0fÌA :æ ·W}j¼X÷oZ¿:™6òi–™$aFÖDAŠÈ¡ýgãwÒø4À ÷úóA"HG ®ƒ@t‚Þ‹pÛ0­ÌA€D ‚$ˆ "HAÀÐõÁºÒŒ¬¬¬¬¬¬ŒŒÒºA}l¹uîÉÈÈÈØÓ©ëþ˳<ìéÔ§Më¹ÚÍQý=ŽwëJKë®hŸl“Í5ŠŽpÅé×$|ŽnzjoRqMKkkk[[¹Tì64‰œ¦åT´´´Ô'jZcÙnhÜï`%nþ"QÕóýWDDäjÿiìp䥿wÑü¹êý[Nžµ¿7©¸¢8IËöv¹Sµé””·Ô'Iïþwºœ‰ËšT5§¢¥­|yøMvu4©ªä¦Ý¯Þ¿åäÉÖÖVÿYIUm*ëH;yrKØ4ÆòóŠ2+¤üIÒ»¿âè ®ûWAQR7·Uæhš¦åT¶m6åÕ4 b$‘ÜŠ––ÖÖVc*Ñ«:sç'jš\èÔõ+ý½999F@©ëƒý’æÏu' X€`M:ŠU‚Õ%c®47-D#D×§2ÑõNŸ¦»_½?`u"H˜bR·œ¬ÈÑTõü¢lÏy¸ŽFY4?eþ"#<2ÒkZNQA¬c±±£S×u}°ÿ‚hZâü¹îùÅÀ±ÚTž]Þ¤%¿±9Åý†ßZš–Sé™ DšØù‹Œ×û b4½ýWBVÁ%t5=  ªMe›Žœ*‹5/O26ÚÕј›¶9-GÓ¤±£ëªý”,7džïÿ&Å*‘Ô×ÝEzs+OnI Ö‘÷iØ– ÑtŠ’ê:¿Ï'D0õ‚HãâDŸ/{Um*Ï.oRU#& îŠç©ðÐqc:ªª0Î8W>XWš‘‘ml%XtAš1k˜*„N£(©›ßؘ¨iêùEÙÙþwŸ8/…lêØÛј›–"sç'‰È…~{ï¢ùq·66 [_MË©h©0b\ÏPÕoÅHû4ÄÖÃ6@ S›¢Äì«ÌÑ4g1w~’GÀ71³Dº>x´b¯$×TähÚ¨ÓI"ª¦WXuòdEŽ&"ï>1.…ljjÊMKQ”8óò$U=à@SnZÊ-ìÃÈ»,å‰IªÚTsôªŒ[_Î$lÓD0%í)­sL:—'&ÍŸ+â ƒ\AFèè3Õ¸˜²£Ëqñ\Äd¢k4“a´ Π«!Ò »6Wæhšx]ÙèÎ5QÓ4-LjcÍË5Íq 8P¤å*@äÁYØU¢ªKlAyq¢Ö»¿¢nP¸b°>5–…ñ^jëÞMç®÷eƒ¦ªÍåR‘™™••帿foW€£äÁºÒŒŒ¬¬¬¬¬¬ÒºA÷qsçcážNݘÅ4^{‹gdeee8°9Ú0íÅš—Ë)û cдŸ’忨`c©{˜õ½_û¤$&áÈWP>¿Æó\¶1–í­ò¶¶ÖÖÖ–šbÙÿŽsk,+“Š–––šâ 5{ölêHkkk©)¾Pæ˜È¼z´¢¿¨­µµµ­RÊöv‰ˆ¢¤n9¹…cqÓ?„4f!¯ºÈàci(þ)@‰ÉCIÍÑAqMQR·TÆa_ìüEî´Iߨœª(;QïÅ(w¾văöS2®ˆˆ¤¤å6vpô `&ð<‘mÆø|, Š¡Í¢ 0™Æ¾ÔÍE›Ž^ÝWà9ŠuîÍ,kRUÑ$'ͱxÑüXWÏ׆+ý½½MEÙD¼×€é~(n^.öÁ³ýÔ¢¢}±áÆÒHA‰)D¦n)ê(=zµÈu|tS™T¶µ¦*ºÞ¹7³#²læÎOÊ­Ø·™sÖfhÙ%§¥U9ÇÀQ¥ ¤…³Ø˜tRžX~ª¢æ‚û 8Éqåjÿ…ÃP%μüBí˜ÇáJœy¹(?°(-ÅcqرôBÿUG ÙÈ@ "HLÉá/®°|¹ô:†°ÔÍ•‹egeeeVÈòÜÆ²ÌˆúWX•Ö‘iÜuhÜEȽØfˆXóòD-Ç3€ =–*Jêæ¶¢þ§233+¤¼27ø@JÛ½S‰ÈÐÐPss³Åb1~}k{Õ§ëW'7ÔÕÚ¶oà÷¸`t^<ô.£(€i)&&†9HD'Ô47nÜxñл´Œ£(€™AÞvÛm¶íh#ëî×ELK»vsÑ!‚$L:v›Éf§AF<\Úm&SŠ“ÉTT;@³˜YÑcJʦzµ~SJŠg9P[dò +í6×Péµ4Ôêón° 5’Ùnc€±[󫆅ûº¬fוW$ 5–xÀ̈Kú¶6컘מÞc›Ín6ÆC{Íî„êçØ8P[T"ûzºÌ޲¨Ö=Nz¡ÖÚ‡Œwj‹òv'T;Öó€l¶öTÛL5v‹ÕL§'’9HÇ1«ÇÑ­Ýf²Ùj‹L&çÂÚ"SJJJQmm˜35fkOuÂîNæ˜9Ä»†ÀÀñ™½fwBµë-³5Ø8iN/<{ñ²sÙÞ0¦pÀÄEv[Ißö†®®®†í}%îà°®Ä*¶žžž«YÄn³Š­§««Ë&ÍuáǬôºvF,3ƒ9½°î@í¥Ðm{]aº9ü89P{ o{‘ٱʒÅGéŒio¯+,¶Ä‹H¼¥Øc )¬vŸˆ¸Ôç8ÂŽ·Ò¨à¤Y{lÒ\¯Ö—øœ¡Y²p^DÔmr^¹h›Ç5@î©Íq2oẠÀøD‘¸|ñl4É.õE:nÀto)Î×ò«ÓÛ÷ªØm¦ m^^¸¯««««ë[‡ŒGu»·×€o±-<À=ãnUåxõAóÙq?r€ÉÏ}£ÙÚS|ÑêºóÙï\²ßimg|ç ïÌé…}—Æ|ç´÷€£•…–of«ï9ãä­zü#6³µ§Ç:ª‘\‚ioãAŽn´€UöPS’J *¡æ ­»_£`ÔEÌÄrYV. £sºµ‘QÀ´´kg±%"HAÀ$£ëÝGŸ®:¯ëÔÀô0ë–mI×»ë×Ú.ITÚÀ ÏVýâåQ¥{}Kò³Ç –8ÆÀ¯[·¾T{ךÈFÅȇP]ï®_û|·ã½ÙkÆ<êž?R%E% ŸU‡®E‚ôøl×s‰AÓ²‹=ðùº_Kæ±Ä]YGŠˆˆkÓF5eËqWIÂ6‘g>ž-<28ÿ5Jë¿Ý{<êåYßHÚAD4í;T¾˜6[1êuÍrpcVlÀZ„Ømü»ž.E„þLùwVdͬ"ÞËk¤`M²çFCì 3(‚T”ä‚ד'á!5q-€‰dö|ùpåó×Ëì‹—HMõù{KE×»OG>†B=¾“®±=/[ŽÛ–ŒÏ˜vþHî¹äãùÒº·«ë"²âGÝuÔõ«glë=“éúÕ +:__?öêùÑácÆæê×nëpÍ'^;æ(I$q|ùYsø˜Oâù`»Š’\ðzcA ¯ÿv0ºìs…úÙªò×î¶æÝ®$çÞY¿¶î|¦o½œ!ÅúT¹h¸JŒSÜt€”1¾y}3ôgút®wžÝGŸ®:ýØþ§s­ëòö·^ >Pún=hnÞ¯ý7á¿+cü“5=½¯»9uK€oâùíÐÈ·©{Í©/…?Šh|&3>â¶¥ ƹ "Ha/éâ%¥käy×p’S#8z–þ«Šµ×ö8ªûº›S“M‘ÔBQ’#Ù®²Ð+êz÷¹ÓÞßÇ÷šSOÛÝ_wä=>÷­°ß¸ò‰0ÿ`"Ûnä†ÚÞºf)ËW ]p˺ DÊ{!„„äÝSãסÂÎAÆÍ^Ø|î3¯)À/>–Ùs|ºÙ7Y %^»KFæ"“ù¤Ç޲b1{|Güï‚Ás (Ô&‚TÍc-ˆ^âšÆÇåt·Úâ{ˆ»p^Ì(³ 5”)³W=sx›¼¶ò¹_û:Ì×pâ#•%‰F>/ÍÙà|h¼ [‹ ÛmþÝúUžç£ü“ESàb2Ÿ”c _ßòDQn×·|þA¶y\î7{ᨂHº`ܺ ÔêÞ)Ã7ot¼ÂQî ·Æ¬pÇ4±ZwÖ¯]iUUçÅ­ƒ×/žï._õ¾ˆˆh’½8P²@+N~ªãòU—\k_œlîW[­y1ÒS¿ö­Ù•/NС©¢Ä¦ý¢ñÁ³U嶆­Ž«µrŸ˜ö~=ÊZÚ®ïÅgþÉnW”ˆ dRm•ýÕ¶kÏdÞÒ>r»þá¹~ݺõôwz}ón˜÷êÚj‰þ}º`\º Äê~)Ã7oÌ>È£Þn5’*x½Ñã¼FÜì…+ŒÓÓž§’ý’X2&4\5Î˧%9ÿð“×_›ài›È¯ëßZD¸]ÿd~KŒ³ç^§³>³w.3û~a/)͸ò♯B}‘ùæMþA³ ·Ýˆ0¶Í>æþ¢Ôõ«g^»œ1– .[ŒKʱÇaOøf#Hÿˆøî¥_<=ùAÃâeÍ'Û®‰ÈPÛ[‘ï(ÆÖïˆ÷ÚÕ‚çöåW_9n1ë “ë—_}5>U¿ï€î£GºÝ_žg®Ç9¼s e^ßÄîÍE>$øj®> ‚ñOhÅ„œõ®iãÆöGrLþ™%ä,û¿¯½u-øÖ’Wtî puZ°ü}#›¯®ú¶ »ÝȧšNÚ\±øàõ‹cË‘.kŒCJWcFX‘@ô˜÷„‰4+ìØçzÖQòÇø·g½´øH®õåÀ’2’ù¯èÙÔ E;Ï­]o}GÕ´ì5‡MQ•8¡èàW¶•Ö—U×£¤üsS”äüÃR¿ve¹$>R¹3µÌbˆÌßb//«¾ãpI¢¢ªŒé˜9?¹êë[D•Î=ÙkOÈEÕ®¡ìvßgÑ›‹tHôÿÊ?ÒÝS°$9l-üžD˜w»cØoþÝúW²‘‘ï~Gé¹è‘,FzŽ>pEgÕf¯zfKÕ/Ö¯2þMÞr,às^”Ù«_zú¥‹¡&«*¶TýÂu’ó$Dþ®¯WÙF±]'¯v0žè“Ï3«|Ozz âóݪj<•ÓçYƒ~Ït¤ Fß¡?¤®”?+Ÿ¶y¬‚WĽºÑ ÒÝœš\257jnn¶X,7nÜ‘íUŸ®_ÜPW»,+÷?vßçâÀ-sºµÑ5Šz@{IèA³£Ÿñ<È€Ox–ÉúHÝ©þÝá~ºçW ¯–…9‰©_?6 ]0U ¯Ÿ­*ï6ïòz¨ø$}dõæøIAÀôˆ ƒ~[ì‘Éÿåjü&Mˆ_™µ˜Zá‹l9žoOØèŘn]ï÷›4ž?½C D0…=lŠWiDeVèhFQÀLŒ mÛ7Ð@0:Öݯ1Š˜–ví(æ,6¢C "H˜tì6“ÍN3 ‚Œ`¸4¥81p˜ÉÑcJʦzµ~“÷`8P[dò +í¶@c¦×Xj2ÕiMAƒTWü"7»Í/w¸õ¤ˆîëêêêêêúãÖ¾bH35~,éÛúÇ}ùZþ¾®®ôv×`h¯ÙPÝc5»ÂÉqŒ™]û¤Ä3–sŽ¥]]=Õ »­Îwj‹L%RÝÓåzו[$#³‘[žkCfkOuÂîÆjãA:ŽY=Žní6“Í>P[d29Ô™RRRŠjkœ©‰_À¯K˜ÁÄ‹3L äÙkv'T»Þ2[ƒÅræô³/;W‘í ‘ÄŒA4˜¸Òn+éÛÞÐÕÕÕ°Ýs&±®Ä*¶žã×n³Š­§««Ë&ÍuþY \ê+L7ÓØf"szaÝÚK¡Úö:ïQÒœ^X×îÙ ÔèÛ^dv¬²dÅCñãQºvBHãAÚÛë ‹-ñ"o)öh «k,ñîÑq„o).t¯[·É¸ÔÆ*6+$€™BZ{lÒ\¯Öû^γdἈ2pŒ¥)))V±¹‡^©Íq2oẠÀøD‘¸|ñlÀ厫mz<<˜â-ÅùZ~uz»ó^»Ít`¡-±Ñ1–þqëâ1ã¨n÷¸Ôçdã-¶…¸gÀ­Š p_Åh¶ö_tÝã.Ùï´¶3¾s…wæô¾Kc¾szàƒæ³î°t Öz±¸‡sFÆ!‚4®à‘Úu/gt}µêhTðmî»Ûë<Ï\;ï‰s‘ç•æv[‰órGÿÒyó´¹hEsÞØæ í¶¼Ýⱡ`'”À׬ðÇÌÖêvS^ÊKª¦åW÷˜ƒ§1¥¨êâ­[ å"Í î2Ý–’R/ªÔ•äW÷9so©©¶¥¤¤ÿåWwNo©)¶™Šjj,ññ–š»ÍdÚ¤:æ4ÉO_žºM)õŽôZ~uO 3Ž&$‚1[{z¬¾KÌÓ Ô]L·N34†ìêJ·™ÚÓCŸ 6[»º¬F`sðþ㳈Øm¦’zUuƈV³{€é`B"Ȱ|F+ Í öÀ»ºÝd²Uÿu‡£ í6S‰TsèàÖEÔÀèÆNJ`Jâ^lD'Ô¤u÷k4Œ£(€™Aþí¿ù9k¥9ßê[–•K;˜~víwäc+ " jïï£Lc\ "HL¶R?[e]—÷ÜÓUçu€H|ݺÕØ4†S뺼£g#Z“DÔσÔõîú=ò£ÃDž怈†ÍµÏ_³¬O•Ë>aby·yסR9$÷¨/X¢„X“Gø9H]¿Úñ«\cÒñ ­«~íóÝjË‘µÕçu]×»:©]¯/®Ûÿt®u]ÞþÖ«þù0y `æP”ä‚ןɌ÷ZÏ“5E&ãß„œõ׎5|­ëÁ–ÓŒ&•ðs}5믯:ns'Þ)kí‹—$*Jð1­ùÈkë·>óUëeuç3KÅ'€Ûñw^´‰ÄY~;M`2 ¬ºmTõIDAT3©ëÝçN¯X|o´Ù®XcÍ»]QäŽø;Ç”LOŠûà*9RÓãß­ª¢J÷úçXÚãX(â9*º{/€IE‘¡¡¡ææf‹ÅrãÆ Ù^õéúÕÉ uµûï~FáÝã}s¾Õ·,+—¦0ýD>0áÏbëz÷ѧs­ëòž{ºê¼®;—8^‹Èù#¹ÖuyÖuyõŸÑžYø¨w×—]ΰ>y§×`ëZÝî5§^¼<ä,>“4kïôá—ÀDD}5Ï_³´jØjùòHMÏ»_·n=9÷ íPƒíPÃâîç;iQˆ@_Í[³+K<–(JrÁë¥Î2fï\8/&ò¬ƒ¥6u©ëÝçN¯ÈȼSDb2ŸL=m÷<>Öõ«_|,ÿøOŽCè„¢©´(„óuëÖsÉ/¦Í6Y×»ë÷ÈšˆO=Km>Ú¬±­>xýâ]‹ï  RºÞ}ºö|·ºªÛy ß¹VÞãíí‰Üæ`ªD€èxÝÝ<¶#|0™©aGºÅËšO¶]‘¡¶·:—™=Ç ãÝsÎhúj¸Ƈq¡däa_°ôÑæ‘?™P´óÜÚõÖwTMË^sØä÷îÁ¯l+­/«"’üìÎÔÓvÚ¼5ÿn}‹ñ*ÄC=' u½ûÜéóÝ«Þ÷[ËýˆGUº×·o%HOÀô!ò€±PDdhh¨¹¹Ùb±Ü¸qCD¶W}º~urC]í²¬\Fçtk#£(€iéaS<¿j€èA€)Ô4§[i 5FQ31‚´mß@ÀèXw¿Æ( `ZÚµ£˜³Øˆ$ˆ @ S–Ýf2Õx/°ñû]fZi·1ö@4Î6à !ííu4€™AÔ™RRRL&Û‡b·™JêÕú#ˆ¨-rG“v›÷a6@DD \!¤½] iÓ>‚´Ûò.÷tuuõôX¿'fkOu¾–_Ýc5‹H¼¥¦ZJÁä©®±ÄÓ¤à+=ÝBÚÛ%=0í#H{{]aº9øûfkµ”Øjk­Í+ŠÌ´'*!¤½]Ò*Ì€2‚±h{ßîÝ ÅÌ?@è’ÀL‰ ç-\&…½¦yÅöºvÛ+.X@˜!dü‚ÿà°ï’û®B[‰[,Vçõ€€£éC‹$À ‰ ÅlmXxÀq/¶ÝXP°;Ïy/v‰T[Í⸒{± hi©±@˜fE6êõX¼ƒÊž×;žKÀï0Üwld´0åñ›4 ‚$&P×AZw¿FÀ¨1Š˜‰¤mûF>2Š˜–ví(æ,6¢C "HL¤Yã‡Ý–²©^Óò«{ø¹ð"M%õª*"Þã¤{¹÷[ÁÒÀ´Š í¶Ù×ÓŘ­==VWÐXTÛPc‰w¼U¸¯Ë?@ ‘& ED†††š››-Ë7Dd{Õ§ëW'7ÔÕn[÷Ø‹‡Þ¥à²kGqÐ9Èmë»í¶Ûx" EĘ’ÜÿΡ?oÜýìÝšÖpèíKÃ#ÎåVšï_öà­?ø×wXðåQýMÚòÿ}øÃ¾÷l£ªªê±íiæ4sEÇÍ3•æûÓÌg>¬H3Wœ¹9¢Ùuÿ²Xöài»>ôÜœ‘ÌxkÃÛýï¯Ý`¾?ÍüôÛý#þ%ÿðwÿÞ«ª¹/ýܤé7G´a-î¿ÙaÒô›#ºæ,˜;Ûá×ë·ß~zÙƒxdëHÿå;k½—k!Šj,\öà•Žø”ßss“££Ý rsDÖ–n~éªúùË¿³»ö·×Ý¿ìÁ\䳊OÏ^Þú½]Æ*2ùæ+pgðÛ&c§øï{F »Šmü»áí~G'ö×nXWû¥óã6u$€ ä°>š?ûï«îZ»Òôà÷ï9×r¦ß±ÜþÂæ&U}¸²ã?Ê3ñx8äò¨þ&mù‡G–n:µçaMÓ´¼;ÙÑò§÷ˆ.¢ª ;N}ßø÷¯o¯}®Q}¸²ãýÊ<µñgϼ=`¬ëJöþ?Mд/ö=ž¾Sÿù››ï–Ϫv¾ó×›šg±ÿ~Ó~ºA4-Ïl P)Ý£`>¯Uµ¡mä—ïWæ©êçUo|t3äò€EYúÓ?Ù›ÛÏålÜú‡75ÏòÕœT­ûÀôý‡5Mþd”Üþ£Uçÿ¤ò§wËw¼ð‘ÿ*> <{Ùvêç÷H°L&Ce#Ù&a§øï{Ã#sS–/VÕÏÛ>¸rsX¿ÙßÑvN>ù÷FúþZ´åÎv~ÜÚF~ùþ?½[>Ç:‚À¸ÍAþ}¸¿î·ÞðDê°›üÏ‹Uµ·ýÌecù_/ˆ¦%ÍÕnΙ·@DD ¾ü›šƒœ òx/Ñ´•ÿ{sª‘ó‡'ÏiÚÊ¥&í¦é¡lMûâdGÿðˆW²9ó¯_yôvc+ŸÙn+ÁÞòy­i+ŸüÁƦ¥ñOylÚgyˆ¢:þ¼[À§š“ª£ýÛjÄݧ~Ð("ߎ5Í[ "þêêŽÜ žf2T6’`òuJà}ïöøo‹ˆñúãÚ½}ªªª |ìH¿ þN¯:;ÞøÕcÇuÀ´ £]Eï|óÐù^)Zvȹä|û™Ë«#—/õŠÈ¢ØÙîÓU##ÚÍ`Ë¿¡ë '¢üºîµÜï_##7]‘Þ‹—G´ñÜJ×Á·âU)=‚¬"z¸¨·+Š>øîŽ5¯üEUEUE PNg5'EGû·•cÉÝÿ0ÛYrU=þËì㢪Áº#Tg/û¤¹}T6¢a2vJÉ}ejÇZz/^ùÈÞxÏm™X_i>ò‡Ü7ÿRožù>ŸOë8×D‰îÜ®_izã/EO=§8þý™å·_´}]¿:9á¶aZ˜¢^<ô®å‰Ç§JikßùöuMÝò#t½ó·ù;þ$¹Ûê·üã¹,lFuôDWv¼v€™Ð)þuÄØÅÄÄp$0=Mõs7œ{ @hFŒhÃSùÆ‚ÕÑãXÙ Ýøô!DÀô4ÕÏÝpî)œ”§Þm}JDtÑu:zæUvw>} ‚f®á)þ0Ìw;*•¥œ ‚p‹1 :šÊÒ) ‚åwÀ¿’i„+±ØQ©,å$€[Œ³Ø £©,"HÑi{¿òƒŽ¦²t &σ@bbbøMD‡D ‚Àäô^ì¾ܦ €˜ƒ@tL4ÎùV_C]M`üã­õ?ËòÒ IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/13_aggregate_graph_bar.png0000644000175000017500000005067412032647166027251 0ustar ebourgebourg‰PNG  IHDRSúmVÄsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ:-4­Ó IDATxÚìÝ{\åþÀñg–eY¹(X\@­¼„fá ,Ù±Iƒ!çõf§‰¡KvNï'I×áMÚ’ö û>9k¯B~wa#V&ßß®Yû&¯0[ {fÓÿÜq]Þ&@ãMJû’w›²~GFFÆÎsÄ¢×s k¹Ý¿î¿ÿþûÿ%/`öR’úÍøòË/¿œq}Ò¾Òê®WOûJ>}eä¬l1lêÇ»þï“ÝÉ›^+^ûÑÊ»pQJ›—,:uXÑ©ƒF!$)øÑ•3L“·ózý%;§÷¹¯?0;]¡Pˆôوőك’Œ/ Èm~Æé©Sµo¿oÚ”(7 ¦+úÛoïvøðáßÚ gþ=m\rþ¯sCÒpøÓæ7O)‘I¿6ÎIRÈý‹Ÿ¦ívsÅÊŠ¿}2ðà¨_Û…’ví%—1A›ºþHÃöÂ’ô©É–Ê®3…ËIR¿¨¡B¡HŸýÀ´ŸùCcXîëã’w›²hJ7‘6ûõ\Iê7}ç’!z½œ–õWô7}i1KS(Òw‹9;ÖOé&'œûÛjg§+CíØ9'Ƹ¤Áóú¸äÃbè¢;222Òph0ì;°Sèõq½zZ‰‘âó•û¾õéó=c?Íú¿Ov¯|ãoôúìþÞ.¨P|ž+^\™§PùtóMÿo®xqå»EüdZ༙Ÿ¢ßŒ/ Ñ+ùolz%÷ë4!D§};tBhOiúER½~ÈøG4BÓ¡“"íëƒÁ`8sJ+ôúÛ;„ˆ_Ëÿ˜)Ξ–zæz]ÕëãžyªÿŠ‚Ú‡4Xfè`Ñsà½^ìüʘþZ./oRàÔ™ŸœüíØ±~Êíz³ÜK¡HŸ3xNºB!Ÿ*rÌŽýáⲑ$õ›¾aêíz½"ÿíñƒÿ+Çñ‰”Á°ïƒÑOXf1K3”|ºtDô3Í6^ópÏÌO!IÁ¼¹dˆ^ÿ[’Ò¡›Ðë‡8ðòëUv øÑ•_~¹hˆ^‘6Ûj/“¦¼£ˆ^…âó¯šíZñæ Ñý‘7– Ðë­.×å–@jpÝÌÏ`Èù×3ÿþµ‘/÷ët…Btë"„$ˆé¦P¤¯O-6Y<¤C7!„öT±Å—¶dc¿ÞVøuî¯7ü™-Ðwú’!z½¼Í×}ø4³ûö¬8]|TÑ©]PÃYÚ’R!~µW¡Ûÿ‰a\€ëf~’Ôoú±è 4xNºþö)Þ|$X’„Á®\4DŸÿöøAƒÉ÷ÿIRð#s¦v‡å;s…Æô¥­trn—>gð×QK†üÖÀ&3hРÁƒç¤‰nSçüºÍ$µ1kÓ+‘bkòc÷5r%W’"ÆÌ¦P|¾r亢.B¡ø|åÈ×~üíÝ䮸÷™ÅŸ[¸)À9HBˆ .'~z‡<ŒËá¡K¾œÑÏŽÿ~­ŸÞáÀ›×|øÝ«Ï„S)€ÃH’¤tÚý3Žç'„Ðw›ºaz_Ž@s8oæ'?êc†ÓGP’"Æ~š5–ªœC“Ü($!Ĥù»Ýþ}&Žéãü;¹æÃ﨑Àá‚Ôÿ|áÉßïó[;ï^÷~Ã×®‡‡¹ýQ-bî«ò„Ò…#·ÇQ×÷ùÜ(~ïÛq›áp'fWió¸Qùù€Ìd~ ó™ÈüÇÓëõþþþ’$©TªÚÚZ7xG’ ¥Réï˜XVVæö‡Rj”é2-¾«?ýôStt´Z­vàþ\··fmC¶ÄÿÚí’¿¿ÿÉ“'ÙÕ¢¢¢ÈÈH•JY\\lºXQQÑÇ<~üøN:ñ•2?ÀÍ¥¥¥]ºtIQWW·iÓ&7{wõõõ—.]Z»ví„ 8ÖÎcìØ±{öì©©©!¶xðÁ[·nÝø2—.]zôÑGùñ6jԨѣG×ÖÖ>öØc#FŒ0šðþûïÿüóÏDd~€›ûøã…wß}·qÚ= ƒÁPSS³nÝ:;wºý¡4˜h¼¤ÅwõСCBˆÓ§O;Éþ\·øÛç‹/¾¨¬¼úCÌ¿ûî»iÓ¦Y››““óÌ3Ï!ž}öÙœœÓY·ß~ûŒ3ø2™àþjkk7mÚäááñÎ;ïxxxlß¾½¢¢Â8·wïÞ’$}õÕWÆ’Ÿ~úI’¤¾}ûKöîÝÛ·o_•J8{öl½^/—/3}õÕW÷ß¿J¥’ËwìØqÿý÷«Õjooïûï¿ÿرcÆU?¾uëÖjµzܸqeee}ûö5½Lfm[P©TcÆŒBš–[[UUUÕ¼yóÂÂÂŒ"Í®“VWWÏœ9Óßß_¥R 0À,¡ãîÚµK^@.ÿÛßþ&„èÒ¥‹¼ð©S§Œ×­®º­Æ‹aÆeffš.ÐȪ<==…ßÿ½µÕÞyç{ö쩯¯/))‘sʸ¸8y'žxBñ—¿üåÒ¥K—.]’OäO<ñ„é÷óó{øá‡>l0ä,ÐÓÓ󪛶ý½Û—ù…††nÛ¶­¾¾þóÏ?·Xb}ú›êÉü2?àwo½õ–Å»Þ|óMã2òõ#¹Yëᇖo67ÎõððhøßåByúÂ… ¦[¬¬¬œ6mšÙÕ.ÓU5r*jd[œï½÷^///ãÙ«®ª¤¤$!!Á¸@Ÿ>}Ì.86Ü–±ÑÎâMýfsÍvØô¿4²iÛß»}™_ãÿÑÆ£ÐÈþÛ²{¶DϬ:Ùž¸4¾òæT˦îŒëžµÍ:u* Àxñ—Ì ó~õç?ÿÙbæwÏ=÷—©««óñññððøþûï=<8p ®®nÅŠ¦ 9ò­W?þø… êëë333ï¸ãÓ•4²­Æ7}ôèÑ€€€;î¸Ãx¡ÖÆUååå™^Ì•WûÜsÏÉ Ä÷ßß­[7Ó;ô7“UVV^¹rEÎ'ÌîT³ñ\k¶iÛßûµÎüì -»gGôlO\_y#Õò¡‡BŒ9RNþ¾þúëðððæìŒ}”322lßœé(-d~™`xõÕW…'N´Ø,·dÉcÉž={Œ§üü|Ó…µZ­Ü†a­'¬ÙÊý"å›ÐMÛ$8 ßán$ç‚ÆûßÙÖUO`»víòðð»0Û²Û¦Œ!2ëÚ) 6¶ßØÒ;µ‘]mdÓ¶¿÷kùÙ:[vÏŽèY\§Å¼‘jùÍ7ߘ­Mî¢awüí `ÿþý›ZçëëëåA:mIælì” ù.LnºØµk—Y¹Ü#<<Ü´P¾ÏÝô*°Q~~þ£>jzT#g¾ÜÜÜððpOOÏaÆ={víÚµ¦ã¶dffÊ£N´iÓfÚ´i.\B´iÓæªÛ²å¤»nÝ:¹Å®ñU9ò–[nñòòòððèÒ¥Ëüùóm¢òbgÏžMHHðòòòññ;v¬éEd¹!ð¾ûîóòòòòòzàòòòß+7mû{¿Ö™Ÿ}¡³q÷š=Û3¿ÆWÞxµÌÈÈèÕ«—§§g@@ÀsÏ=wåÊ•f6@ÚÀÇ÷ïßßâM‡lîÔ©S7ß|3™pÕÌO’3¿Ä1}"nóchCàº1bÄÃ?ø`ذa[¶lq†Ý“Ñ5¸Ë'à†µïçJ!Ä–§üó…'%IR E¤§§ÿûßÿ–oÉ’µjÕjÞ¼yDpíðô6 eìÞ½û‰'ž¸ù曽¼¼ÆŽ›››kö˜©$_(ä0€›¡ÍhN»{ÕÕÕ#p?´ùù€Ìd~ 󙟙êêš#&¨Õ!’h6«°°¨k׈°°……E¶—ÀI3¿¥K߸çžþÕÕEC™Ù¬… —'%Má…g/^a{ dN÷ô¶=~õÕÖ€ÿ†³:v앟ÿ­B!uéqòäKnXfOosº6¿‚íóÏÿÃÛ»ýÇo6›U\\ªV{©TªââRÛK sºgxèõú‰ÇLœ8&!!ñ±Ç†;pÍ'Ožüì³ÏºtéâããÃÀµ\¾|Y’¤¨¨¨6mÚ ÷ÉüÚDFöB”•3›¥ÑUW×èt:&Èö!„$IiÜ@ffftt4qpŸÌoèÐÁ[¶l ìÑ£›Ù¬aÃbSRRëêêââÙ^"„0 BˆÏ?ÿ|èС+V¬çÀàZ<8}útâàn™ßK/Í4hÄ¥K›7¿/—HR ÜÏwîÜQQqBˆ={¶Ê³l)1’/ò†‡‡ó[—#·ãÀÝ2¿ŽÛì3¾,(І†ËÓMV›kº°-%9û3<&L˜–‘ñ)Ç  ù”N¾ÙÙé$‡à¹½d~ ó™Èü@æ2?ù€Ìd~d~ ó™ÈüšM’WUXXÔµkDXØ€ÂÂ"k%)pŸ †2g-\¸<)iº^¯_¼xErò+K༙Ÿí¶oßµbÅ"…Bš?™µÈœñ>?µ:$>~lQQñUg—ªÕ^*•ª¸¸ÔZ dN׿g0”]¾üËÒ¥oŒ5);;ÝÆY“$É8——ÇQÀåpwÏÌOáëë³`AÒÒ¥o^u–FT]]£Óé4š k%BƒÁ „ÈÌÌŒ‰‰ ŽŽæÀàZä³9Ü0óB¬_¿1,¬óUg ›’’ZWW7ÈZ œ4ó“¤@OOÏ^½îܸq±DîÒÛpÖܹ3¢¢â„{ölµV'ÍüÌÆm)(І†[œ%„Ðh‚´ÚÜÆK sögxL˜0-#ãSŽ@ó9ûx~Mêà €FðÜ^2?ù€Ìd~ ó™Èü@æ2?2?ù€Ìï’¤@ãŸÙ¬Â¢®]#ÂÂÙ^™Ò ÷É`(³X¾páò¤¤éz½~ñâÉɯØXçÍü¬Ù¾}׊‹ iþüe¶—@æŒ÷ù©Õ!ññc‹ŠŠÍÊ‹‹KÕj/•JU\\j{ œ4ó3ÊÎ+¿cÔ¨IrÆ«½¾¾> $-]ú¦Y¹FT]]£Óé4š ÛK„’$§óòò8ê¸Îàn›ù !Ö¯ßÖÙ¬pذؔ”Ôººº¸¸A¶—! ƒ"333&&&<<<::š€k‘Ïæp·ÌO’==={õºsãÆ5ƹ·ïܹ3¢¢â„{öl•gÙR'Íü̆t)(І†ËÓMV›k:×–Èœý&LËÈø”ãÐ|Î>ž_vv: À!xn/™Èü@æ2?´4%!œ“¡¾þ]__âÐÐͽ{?œM€Ìp£ÌÏ`¨¯®v’IÔéÖ(•ò¿-¾3õ55T óàO †úzÓÉãa!ÀåpŸsé±±’‡Çö¡C×(•òŸ¡¾~µ$ôz‚d~ÜÊé;VKR÷©SLK3-_«Rpi\í`Ùññ¡ƒ?i0l{è!¢d~ÜœÜø»e ×yÀ=8ãÕÞ;³$)°a¹$ÿä’¢®]#ÂÂY+ÐL_ÄÇsÈü® ½^?}ú‹Öæ eòŸüráÂåIIÓ_xá™Å‹WX+Ðìß?¹¶vbUÕÀU«ˆù9Øë¯¯zðÁûl\xûö]£G?2nÜÈÏ?ϰV ©ž4u:!ĈC‡Ž}ðÁ»¾¾ëZ·.?|øÞ÷Þ#8@æç0çÏ_x÷Ý^zi–µÔêøø±EEÅòËââRµÚK¥R—Z+`‡ " {÷ÞxC_[«×é~xãN£G ós˜yó–$%=çëëcq®ÁPvî\Axø£FMâÈ×N]eeÍùóBˆÚŠ ¡øõ[BÕ¦A§#8àÒœ«oï[o½÷Ö[ïû´B’÷óùúú,X´té›òK&¨ººF§Ói4AÖJ„’$§óòò8êp -øÀŒœ_ŒûòË]?þÕSOõüßÿÝ¿`A«  G÷ïÿæ¹çœ!2•••YYYÔàFÃÜ 3?cªg1í“­_¿1,¬³<=lXlJJj]]]\Ü k%BƒÁ „ÈÌÌŒ‰‰ ŽŽæÀÃùéuº‚Úôo¼Q–“3,+Ë'8ØC­î™”t¥´t[\Üùƒ!2~~~|Šñ÷°Á@Ü-ó³È˜JR §§g¯^wnܸFž5w¨8!Äž=[­•°CéÞ½wíJ€Ìïúäõ¿6øhCCƒÍ 4š ­6·ñMõ¤ÁP¸mÛö¡CÀÈü®« ¦ed|z6tdíÚÊ'¨ õž7ÏÃË‹8ÜP õõþùÏIÕÕ{gÎüqåJd~×IvvúõÙÐÑ>(v¦{Æuº5J§8:á/¼@æw*ÉÎ^«RÅlØÐoáÂ/ ·o'&@æ‡kÂÓ×— Àì7®M׮ò²”­Z\¼øðêÕ5/ óƒF?îwË-âCxH-8¢`êRAÁMÛ=øä“žIIëüý‰ ùÁN[ï½wø·ß~ Ñüá¨x{O¨¨ 8h) ;v\øá‡Oºw'2àê„ e]>yRWUÕú¶ÛL uUUô©D Z«R óÃ5±±S§ŠŸæÔ ç—¨Ó%êtwÍœI(€Ì€›[£T¾ØëÅ ùÁ‘u:‚'Tsñâú¶m‰ùÁaÕÎùS„$àêèÛÛÂÕNèIƒÁ¬J .‡6¿¶õÞ{«JJVKÒ¥Òø÷®‘A J•<<¶j¬“†úúÕ’D—s óC³0ª œÐé;VKR÷©SLK3-§Ë9¸:®ö¶¼:5,tÝSìÙ}ûŽ¥¤pXºíÑGÛ èB;üE||èàÁO ÛzˆÃd~€üñ‡+ZdÓýúÅed(½½)*úüþû‡ïÛ§¾ùæ+gϦÜz«®ªªÅ#ÓºS'×ÊüÄo±[¶Ð îÁ¯öîÜ™%I Ë ‹ºv PXXd{‰Ë¡¥Ýb7oÎ1b­J•÷ê« ZíÞ™3WKÒÞ™3Gþø#ÁiŽ/âã¹Î îÁéÚüôzýôé–lj]¸pyRÒt½^¿xñŠääWl,qrt¢t ïàà¢;…ëÖEýßÿiSR„Ç>üðÞ÷Þ#8'ló{ýõU>xŸÅYÛ·ï=ú‘qãF~þy†í%NŽN”Nþ4!„®ªJ_W§×鄾íÛK z2à|™ßùóÞ}÷£—^šeqnqq©Zí¥R©Š‹Km/qrt¢t C}ýã'Ošpôñã¤ÑÈœëjï¼yK’’žóõuðhv’$§óòò,.S^^Þ‚oÜ™;Qfgg+š2¾à¥üü–ÚÕ5J¥…-âØ±cç³²š”Èò eQeeeVS" À=X;ƒÃ…3¿·Þzï­·Þ;öi!„$ e¦s5š êêN§ÑÙ^"„0 BˆÌÌ̘˜˜ðððèè膛Þêï¥Eß»Óv¢ŒŒŒTµicûòùZm ,K:wîÜÃRݳF¯Ó5Küüü¢›IîA>›Ã­2?cª×0íB ›’’ZWW7Èö×òE|<•ÒnN>ª d~WgÌçÎ'„سg«<Ë–%ê²oÖ¬CË—SMm$êR´sg÷©S´ÚÝO8iæglð+(І†ËÓMV›kº˜-%.jRé Õ’ùÙŽQ]hœ³v1a´ŒŒOoÌcSsñâú¶m©£MKþÕ×Íü²³ÓúÜP‡„gxØQ]hÏíma<ÃÜ|TZWÁZÏðd~7 žáqp霂3?ÃÃÕyúúÈüœ‹Ó>ÃÃ…Œ>~Üï–[ÄŸ{&yxpÓ$d~Έgx4ÇÖ{ïþí·h4¨âÞÞ**‚ûüàN.Ÿ<©«ªj}Ûm¦…ºª*šQÑæ·²±S§†…t—@F›™à.uºDî®™3 €Ìpsk”Ê÷{½ø"¡ùî¯æâÅõmÛ™Ÿs‘¤@¥²ÝÀC³²¾i8Ëø'—uí6 °°ÈZ ndòÓ;x†2§ëÛk0” ! ´ýû./×Zœk´páò¤¤éz½~ñâÉɯX,ÁãIƒÁlÐfÉãa!7,'½Ú{âÄ©øóUÛ¾}×èÑŒ7òóÏ3¬•àÆ‘+yxl:tR)ÿêëWKãù༙Ÿ$Κõò[o-k8K­‰[TT,¿,..U«½T*Uqq©µÜ8ä'àuŸ:õÁ´4ÓrÆó@æŒ#9 eë×o1bBVÖ³òË—YºôQ£&eg§7%•”ŒÓyyy—)//§6X”­ðñ±}ùKùù-»Ã_ÄLJü¤Á°í¡‡œ*’ÇŽ;Ÿ•Õ„©­¨¬¬ÌjJ$¸kgp¸|æ'„?>!1ÑÂèk¾¾> $-]ú¦üR£ ª®®ÑétMµ!„Á`BdffÆÄÄ„‡‡GGG7\óVÿ+TK"##UmÚØ¾|¾V[ÒÒû,7þÅnÙâT×y;wîÜÃRݳF¯ÓPÿ,ñóó‹nJ$¸ùl÷ÌüÖ¯ßÖùª³† ‹MII­««‹‹d­7¬/âã ÍÊü”Êv:]‰b̘)¼yóæ÷‡ìÀ’GléÖ­ëúõ+%r—^I ôôôìÕëÎ×ȳæÎ'„سg«µØ™ùµní'„ˆˆˆ]²dÞú&~®˜ IDATõ+ýý;]¾|Ò;d6nKA644Øâ,!„F¤Õæ6^Y“ûö®ZõšRÙnüøÇbb¢”JemmÝ5Ý¿ ¦ed|Êqh¾&·ù?räï·OÕÖž¹¦ûפ>¼hÏí¸Q4¡ÍO©l'OÔ××{xxÈžžž×ºÙÑ„6?®D§+<øÞÇ¿‘§32>:uAp·ÌO¶k×W—.Uèõz½^ÿ§?®\ùAp Mîá±ÿ®¸¸ÑEE%Bˆ€€6))« "€{f~Ý»ß~üø~àþ™¸œ3™™Çއ†n1BåïO2?«RSÓFšl|©P(èÛ ÀÉY³æØG‡†‚̸¡4¹‡GB“UU§ä¾½:] iXнû„ŠŠIÕÕ·)„è5wn¢N7®´TéíMp¸Fæ·lÙËôç[<´mÛçÌyG­Vz{·½ë®ŽC‡®Q*¿{ùåáß~Kp¸Fæ7sæ¼Y³^V*ÛÉ*U0A‹|BB¿ý¶¢`ýúo½õÅðáBˆ#k×ú‡…-¢É÷ùét%D šD}ÓMzîJi)¡Ð²œî¹½’¨T¶8phVÖ7f³ ‹ºv PXXd{ ´”óvŸ:UR(b·lÉš4éÏkÖ!z%%Už8Ap´ˆ&·ù}÷]ÞðáO— !BB4Û¶mìÞývîÁP&„((Ðöï?¸¼\k:káÂåIIÓõzýâÅ+’“_±±ZJjß¾c‹Šî^¶,kÒ¤ŠcÇÊž\[[wùrÊ-·®‘ùEGÇýõçwÝÕ]‘“s oߪª ¾['Nœzà?›nß¾kÅŠE …4þ2ÛK }bœ>´|ù¡åˉ WÊü„555 …B¡×ë¯Å>IR`xøÿ6+/..U«½ä ÛK ¥x¨ÕŸ<©¾é¦ó‡}Ö·¯á·ïÌDn’ô¸Bæ—›»36vÔoW{Û=ú_‡ï“ÁP¶~ýÆ#&demáp]åçûüóG7lPßtÓ˜¢¢CB ׿3\«Ì/,¬ËÉ“®õnŸ˜8Ó¬P£ ª®®ÑétMí%BI’ŒÓyyy·X^^Nm°(;;[áãcûò—òó šEÇŽ;Ÿ•Õ„Ÿ@õõÍ¢ÊÊʬ¦DRqöìÙÙUŸ£6!ªÏŸÿ@£}üxÊ­·:U0srr¼ÊʨTp ÖÎึ™ßõ±~ýư°Îf…ÆŦ¤¤ÖÕÕÅÅ ²½Da0„™™™111áááÑÑÑ ·¸Õßÿ ÕÁ’ÈÈHU›6¶/Ÿ¯Õ2ðE;wîa©îY£×é ˆš%~~~ÑM‰¤b×êÕ-±«5/†\´s§ÜÔ·í¡‡ÉÍý|Ð ç f¿~ýºw§RÁ%Ègs\ïÌO©lg:¤ŸÙËæ“¤@!D·n]ׯ_i,‘;üÎ;#**N±gÏVy–-%ÐR¾zꩇÒÓ zýZ•JQ~äHzlì#û÷sÍ€Ëd~*•ç–-Û‡ y@±eËv•ÊÓÑý®;hCC}LˆF¤ÕæšÎµ¥ZÊñÔT³žÕçÏ;Û_d~ùæ›mÆ)--B„„´Û¿×5Ý¿ ¦ed|Êqh̯gÏ……×ïËììtŨ.\>ó؈Q]Ð*ƒ5’BAœ(óÛ¼9}âÄç***åŽïánÃùGuA ú 8øJ)0çÝ®ÝØâbâpí49­NHH}¨wïû …¯ï-ýúõ~lQQ±ü²¸¸T­öR©TÅÅ¥ÖJÐäÌO§+iøw-úöîÞýõŽ™rãŸ)ƒ¡ìܹ‚ðð;FšÄ‘ÀÝ»O¨¨˜T]}ÛÈ‘Bˆ^sç&êt 6tãpºÖÝ‚ík¯%§¦®SZjyöõõY° iéÒ7å—MPuuN§Óh‚¬•!$I2NçååYÜnyy9µÁ¢ììl…íË_ÊÏ'h;vì|V–íËêë šE•••YM‰¤âìÙ³ÄÍ¢œœ¯²2âÐ"j»Çî:{hÛ¶ÿΙóãÊ•]Ço{×]‡]£TvŸ:uø·ß~z×]Îkpkgp\«ÌÏøÜ6S …±Í~O=õ?«V½¦²þ ™õë7†…u–§‡ ‹MII­««‹‹d­Da0„™™™111áááÑÑÑ W»Õßÿ ÕÁ’ÈÈHU›6¶/Ÿ¯Õ–5K:wîÜÃRݳF¯Ó5Küüü¢›I!Įի+œ%ýúõ èÞ8´ˆS*U‹œw|BB¿ý¶¢`ýú‡³³¿>\qdíÚ{^Ý¢R©¬}Àå³9®_æw­{õÊ23³o¿ýîߎq™B’žžž½zݹqãy¹sgDEÅ !öìÙj­4¤¾é&½Nw¥”ÛâÉüZ”Ù¸-ÚÐÐ`‹³„MV›Ûx 0:ð`÷©S\¹2vË–ÝãÇÿyÍš=‰‰½’’*Oœ 8d~ R×Öž1»æëð«½f&L˜–‘ñ)Ç ‡HíÛwlQÑÝË–eMšTqìXùáÓkkë._N¹å‚Cæ÷×g$g3ÙÙé$è“çZ¾üÐòåÄäÆÁ„€HÔéuº»fÎ$î­ m~’èááaž9^㫽à:X£Tz$hµ4º·&´ù8±àÀ»##û컦#9€ë¯æâÅõmÛ2¿_uìØ~÷îÍÛ¶}¼aÃ'þþ† I8y²àB<Ôêq¥¥‰:Ý#û÷KŠßÓ€DŽàùYàíÝêÿx¡¼\Ñ©S?"€ y,?ÿÛçŸ_£T¦4¦¨È4ù™Ÿ•Ï>›äëÛqïÞœ‚‚}DârtÃ!Dõùóh4 Z-1!ó³ìçŸOÞuןGš4}ú”Ë—O¦¥}tÛm‰ .¤æâÅÐÁƒM}Ûzè‘Ü\¯€"sƒhBßÞ®]#„?ýT Oüš9Ò·×ñÕSO=”žnÐëתTBˆò#GÒccÙ¿ß ×2¿?¸Îc8‡;žšºFù‡³õùó)·ÞJdnÜ× @æ2?ù€ÌÏfÉÉï¶n}kûöáii;Ìfuí6 °°ÈöȔζC'Nž;—¿oßþ„„Ä¢¢ïMg-\¸<)iº^¯_¼xErò+6–ÀI3¿W^ù‡bÀ€¾çÏ_0›µ}û®+)ÒüùËl/€“f~²·ß^7uêD³ÂââRµÚKž°½ΛùíÞýõŽ™©©ëµBI’ŒÓyyy—)//§6X”­ðñ±}ùKùùÍ¢cÇŽÏʲ}yC}=A³¨²²2«)‘Bœ={–¸Y”““ãUVFZDmm-A°kpkgp¸væWP }íµäÔÔuJ¥ù¾i4AÕÕ5:N£ ²½Da0„™™™111áááÑÑÑ ·»Õßÿ ÕÁ’ÈÈHU›6¶/Ÿ¯Õò°‹:wîÜÃRݳF¯Ó5Küüü¢›I!Įի+œ%ýúõ èÞ8´ˆS*ç†T*•µ¸|6‡»e~O=õ?«V½¦R©Î6,6%%µ®®..ní%pÒÌ/33ûöÛïþ-»/BHR <1w¨8!Äž=[ål)€“f~r’gTP  –§5š ­6×t®-%9û3<&L˜–‘ñ)Ç  ù”N¾ÙÙé$‡à¹½d~ ó™Èü@æ2?‡‘$I’$ÿ 68Ïþ ÉüšE™æR¦ ÃgŸ}öüóÏ;Ã> ƒÁ`:!O“ù\Ū?þY}éÒ%yº   ,,¬uëÖiiirɦM›ºvíjÚ÷òË/{{{oÚ´I.ÉÉÉiß¾}ûöísrrŒË¬_¿>00pË–-WÒp+§°Æ‰äää   ¥K—¦§§·nÝzúôév¬ÐŒ’Šn+W®øñÇK¾ûî»;v 0@~9`À€;wîØ±£OŸ>V³«?®¤áVš©9+tº«½/¾¸833Ûzª^fúráÂåIIÓõzýâÅ+’“_±XnOÙ¶˜¯¯ïK/½ôì³Ï~øá‡o¾ùfBBÂØ±c+++åNµ’$uèÐaãÆÆå“““?ûì³­[·Ê/—-[6|øp!DjjªµM˜­¤áVš©9+tºÌïË/SMzWµ}û®+)Òüùˬ•·gKd\fèСrLj   Ý»w7¾žwÞyçwÞ1¾ìÓ§Oaa¡Åÿbmd–†[id‹¬Í8Ñø çb÷ù©Õ!ññc‹ŠŠå—ÅÅ¥jµ—J¥*..µV`///7{G®”ù eç΄‡ß1jÔ$ê"¸ÖäQZ܉‹êâëë³`AÒÒ¥oÊ/5š êêN§ÑY+|J^^žÅ5———S¿-ÊÎÎVøøØ¾ü¥ü|‚fѱcÇÎge5á§N}=A³¨²²2«)‘Bœ={–¸Y”““ãUVFZ„½2o°Xû€[;ƒÃ3?!ÄúõÃÂ:ËÓÆŦ¤¤ÖÕÕÅÅ ²V"~».ž™™Ýpµ[ýý¯P,‰ŒŒTµicûòùZm Q³¤sçÎ=,Õ=kô:]Q³ÄÏÏ/º)‘BìZ½º‚ÀYÒ¯_¿€î݉C‹8¥RqÞiH¥RYû€_ëÇš‘ùµ ¹{‡$»ñ§%)ÐÓÓ³W¯;7n\#Ïš;wFTTœbÏž­ÖJङŸÙ¸-ÚÐÐ`‹³„MV›Ûx dÎÞÃc„iŸrœšÏÙïóËÎNç 8Ïí ó™Èü@æ2?ù€Ìd~ ó ó™Èü®¡½{sbb†[œUXXÔµkDXØ€ÂÂ"ÛK S:Û½øââÌÌl‹³.\ž”4]¯×/^¼"9ùKङߗ_¦JR ÅYÛ·ïZ±b‘B!ÍŸ¿Ìö8iæ×ˆââRµÚKž°½2zxÜ(\©ÍO£ ª®®ÑétMí%BI’ŒÓyyyW^^^Nm°(;;[áãcûò—òó šEÇŽ;Ÿ•eûò†úz‚fQeeeVS")„8{ö,q³(''Ç«¬Œ8´ˆÚÚZ‚`1,Ö>àÖÎàpÛÌoذؔ”Ôººº¸¸A¶—! ƒ"333&&&<<<::ºáÊ·úû_¡:X©jÓÆöåóµÚ¢fIçÎ{Xª{Öèuº¢f‰ŸŸ_tS")„صzu³¤_¿~Ý»‡qJ¥â¼ÓJ¥²ö—Ïæp·ÌOîÞ!IC™±Džž;wFTTœbÏž­ò,[JङŸ1á“hCCƒåi&H«Í5kK dÎÞÃc„iŸrœšÏÙïóËÎNç 8£ºù€Ìd~ ó™Èü@æ2?ùù€Ìd~ ó»–$)Ðø'—uí6 °°ÈZ dJ×Ú]ƒ¡ÌôåÂ…Ë“’¦ëõúÅ‹W$'¿b±.™ù™Ù¾}׊‹ iþüeÖJ s±ûüÔêøø±EEÅòËââRµÚK¥R—Z+€Ì•Úü †²Ë—YºôQ£&eg§Ûþ%I2NçååY\¦¼¼œÚ`Qvv¶ÂÇÇöå/åç4‹Ž;v>+« ¾¾ž YTYY™Õ”H !Ξ=KÜ,ÊÉÉñ*+s¹ÝîÓ§Á`(---((pÑà×ÖÖR-†ÅÚÜÚn›ù !|}},HZºôMù¥FT]]£Óé4š k%BƒÁ „ÈÌÌŒ‰‰ ŽŽn¸æ­þþW¨–DFFªÚ´±}ù|­¶„¨YÒ¹sç–êž5z®€¨YâççÝ”H !v­^]Aà,éׯ_@÷î.ºó’$i4Fã¢ûJ¥â¼ÓJ¥²ö—Ïæ¸±2?!ÄúõÃÂ:ËÓÆŦ¤¤ÖÕÕÅÅ ²V×Ëü$)ÐÓÓ³W¯;7n\#—Ì;#**N±gÏVk%p½ÌÏlH!„F¤Õæ6^×Ëü-«8+kר±-µõ›ûô¹ç_ÿjäá奯««>w.kòä‹?þè ‘¹cêÔžIIÔùÜG}uõ/§O·ÔÖ9}úäþ㜑©a€ùà@Ý»JMõíÐAÙª•îʕ˧N}©€Nð™À½t=ºÇôééƒUëu:…Ré­Ñ<ðÉ'—.=±y3ñÈüîãÏkÖ¬kÛVÿÛèÇzîraá–èè¿–—¿ëíM|)À%H ÅUKù\Þž§žz$7×·cG…J%„P¨T¾;&=º»åú®ˆ«½pìÃKöì‰ûòKŸà`µº¾ººòĉÍwßýKQÁÈüîæraáÇ]» 9¸Ú pI‰:ñ_6¢Íàž4 õõ¦%’‡GÃB£ÍàÒcc%íC‡®Q*å?C}ýjI2èõ ó¸•Ó;v¬–¤îS§>˜–fZ¾V¥"8€í¸Ú p_ÄLJü¤Á°í¡‡ˆ`wkó+,,êÚ5",l@a!ýüÀ ÿ¸Î ØÁÝÚü.\ž”4]¯×/^¼"9ù0¸¥/âã @æ'¶oßµbÅ"…Bš?GÀ3¿ââRµÚKžàè¸sæ×ˆË—/ !û¬sçÎ>MiÁj÷Þ{oS›4@$‰$Á$’pïHþòË/Bˆž={rÈšCBLš¿;qLŸˆÛüÜàý—FEÅ !öìÙ¢qÕ£"I4UI"I0A$‰$šoßÏ•Bˆ-ÿNùç OJ’änm~MV›Ëahˆ§·9#~{I"I0A$‰$Èü@æ2?ײyszÛ¶]”ÊvòKãšI¥ &v°X©–TK"I0AæÇHHHs¦DQ[[»oßw:„´ €€6UUWLK._þ¥uk?"d~p€Ó§ þ„B¡ðõ½eæÌyGŽì%&Áõ û,[öòÝwÇëõz½^_TTÜ­Û=K–Ì#2TK"I0ᢔ„À©x{·"Û»¸~aŸñã®\©îÝû¾‹/ !Ú,Zôâ¤Icˆ Õ’HLùpCS¦üuÊ”¿p\íu.cÆLQ*Ûÿhuw" ª%‘Á„ ÍÏÙlÚ´¥ºú´RÉqq0®_ØG’=<<Ì/*Ä“jI$ &\m~Î%-íÃÙ³‡fýša´9Ç9qbÿÀwGFö/(اӕÈœ€ÌŽñÕWß®\¹–«½ÍáëëCþç(;¶ß½{ó¶moØð‰¿§!CNž,$,öý ‘ÿ$)Ð8Á¼ù?ðä;dÒÒvª%Èü\Ò«¯®¼|ù$+ͱbÅ?•ÊvõõõÜ1é(ÞÞ­þñÊ˵‘‘:õ# v?уß{øð7òtFƧS§N 2ö‘•Œˆˆ#GÆo|Éçj 2?W¥Ó•„f2ÞçG0›¯k×!ÄO?Èü i¦îÝo?~|?qÕd~€Ã˜ÞçG²ÂO¸¥Í›Ó'N|®¢¢R®¢üÒlÇ}~Îå»ïòÚ·—;%tìØë§Ÿò‰ISqŸø€»½„„Ä'~o¦R©<‰ Õd~.)::~ëÖkkÏÔÖžù䓵}û>@LìcLõª«k’“ß ¹“˜Ømóæô¶m»ÛP1‡x‹óöö>s¦DQ[[»oßw:„ª%Èü\UMMB¡P(z½žh4Ç? ЪUèwßåíß¿‹€Øö>àÎæôéCÇ?¡P(|}o™9sÞ‘#{‰ Õ6â>?ç’›»36vTqq©"$¤ÝÑ£ÿ%&MU\\:kÖË›6ýç–[:lÞü~ßygaiÓö•¾§}…¸ÔÉVd{TKù¹ƒ°°.'O ÍÜcìØ‘gÏ‘ÇzEó>}¨wïûäö•~ýzrÆåîl† IHOßH¨–°W{ánÎË Ñ÷ À­Ê!·¯È·eg§»ñ,™æ[¾ü-µ:D¥ îÙó^!Äöí»¼½ÛÏ;“ÈP-Aæçb>?‘gŽÙ禛Ú.Y2ïòå“iiM˜ðl}}}b⌲²óD-nÁ‚Ù+W®%Í1{ö‚Ý»7WWŸž6-±mÛ.ii;ªª ##ûª%l$ !&Íß8¦OÄm\s–©H§ÓmÚ´eÖ¬— óˆ†}RSÓFšüûïEGlƧû¿¼‰d3¾!õz½JÌ·%ÕWµïçJ!Ä–§üó…'%Iâ>?¸ý—šrôèGF~„PØmìØ§«ªN©T*BÑìß!¤)ÎTäi’ª%lÇÕ^¸ù¹a̘)Je»´´ÄÄn}´Š‡¸7SJJª|wÚ A#ˆF3Ó”†¤}TKù¹d¦"ÿ™NsŸŸÝ䎽±“'­®>HLì®–#FLœ5ëeªes<ýô Û¶}\[{æ³ÏÖ7•€4•j û¿Ø óü%´jÕkJe»7ÞX%„¨­­#&TËtéRÅÀw !k_g‚$IDAT|}}þóŸm¤™äN Ï<3™PP-AæçvGˆv92~äÈxãK.¡eyxx(•¿~ßVU]! Í4wî"!Äôé/Ê/¹Ïj 2?×êç¿Fì£Ù4ùŠÝ¨TKØûüàž6oNoÛ¶‹ñKÍlØ4‰Jå¹eËvN§ÓéRSÓxn¯}™ ý@µ„S¤û„n)!!ñìÙ#mÛv1æ.ÄÄnß|³mذ1¥¥eBˆvû÷ï"&háSCÐö¢ÍÏé‚cdooï3gJ„µµµûö}סC(1±[Ïž= óä§·?¾?,¬ 1±MÑŽbÚFµlÙËî&&TKØúÉ89~ÈÚçôéC½{ß§P(|}oéׯç‘#{‰‰ÝTª`ê¡CÐ}-<ùäþþ¨¢TKù¹Ú‘°t×<·ÒÛÍÛ»Ùž£0‚†ãªåïMÑ|OSts¾0Ó …"5u1¡Z‚Ì€c0‚†£Ðí(ü$¦Z‚ÌÏå´©ªºâíÝÊXrùò/òƒ(`‡ÔÔ´Q£&›¶ ¬p–mq4Eƒj‰Gïg±lÙËwß[TT¬×ëõz}QQq·n÷,Y2ÈØ'!áɪªSŒS¸¥ï¾Ëkß>\~œ`ÇŽ½~ú)Ÿ˜d~.füø„©S'öî}ŸZªV‡öî}ßK/ÍzòÉ'ˆŒÝ™ôʕ럣¤¦¦Ì›#::~ëÖåþæŸ|²¶o߈ Õ6âj¯™2å¯S¦ü•88ÄÌ™ó„³f½üëO®ö6]ÿeìØ§«ªN©T*BÑ|555ò Wz½žhP-a;Úüàž•ÞÑQ>úhMÑ‘›»sÔ¨É*U°JüøãO=ú_bBµ„hósš#Á.pVtýsÈÜ8MStó……u9yòq Z‚Ìø}{ˆ®ÍÇï:P-Aæ‡?¨¯¯oxã<ùŠÝ侽ܹ¸ç©Ëä"ÉåË¿øûw"‰lÄ}~ÎÂÃÃÃìÖ4îNkúö:]ÿ˜¯4ò6òön/ÿT–ÿÚ¶í²aC2a¡ZÂÖ#Nœ%W…;}{ˆ®Ž¢RynÙ²}È„[¶l§—´}ªª y–4Õd~.ÏÚ·=?ìCÐHîú7sæÓ„¢™¾ùfÛ°acJKË„!!íöïßELû… ª%Èü4ã ‚®Õ³gÂÂ<âÐ|›7§Oœø\EE¥ü_ÈTKØŽ+ŒpO<ÜÉ!Þ{Êí§p ‰'Nì7¾ä%ЄŸô„n)::þë¯?¿ë®îBˆœœ}û>PUUHXÐRäûÒÌî§õÔn¦£‹8ð=£‹S-Aæç>èùa7îä°¯‰?^JãÊšäS)qsF§Z‚ÌÏÍ?™hªÜܱ±£Š‹K…!!íx¸SóèúçÂèâ™ð<ÜÉèú瀯Z“†RMnÈ„ôôÄj [p%ÑÙ?–-NîúW[{¦¶öÌñãûú´”åËßR«CTªàž=ïBlß¾ËÛ»ýܹ3‰ @æçbn½µ·écä?Âb‡ììÿ*•í xH1hЕ*ØÛ»ý{若ø9ãçš§¡Ømöì»wo®®>=mZbÛ¶]ÒÒvTUFFö'2TKù¹˜ÌÌÿÜv[G³á3èÞa‡¸¸ÑÇ·dɼîÝ#ß}wEm홬¬-ûÛ,"c·Í›ÓÛ¶íbü)Âo;0>Ž£èõúú)Š FWTT®\¹„˜P-Ñ´tŸ8‰ŽÛì3+äh‡K—*Ú·iß>äðá‚öíC„ýúõª­­#2vKHH<{öHÛ¶¿^䥇‡#¿‚¹¹Ê® ™M3 Õd~¸qyxxÈ'ã„`pœæaì482€ÌÏMÔÖÖŽ1ñë¯÷UTT !Z·ö»÷ÞÈO?}—”…C‹cì4¸ÀÉŒf*€Ìϵ´mÛå“OÞùä“wÔj/!DUÕ•;³Ú¶íR^®%8œZc§€Û =ÉiŽ„B¡ÓéxÚœß! Á|‚ª%ÈünDååÚuë6÷P©‚UªàÐл>ø` ~hYŒv­Ñ/TK\g\íu¢ßX©©ëˆœÊìÙ ²²þÑç½÷RÚ¶íòøãVU{¾j-ÝlÀŽý %TKØôa!ÎÿÉ$œZ c§ÁUÐLùœóÛÃ8¬?CüÛ-  MUÕÓ’Ë—iÝÚÈ8äÇ0¿©– ó'N Àÿ޲lÙËwß[TT¬×ëõz}QQq·n÷,Y2È€j‰ë}–$ìH¯¹¨IÆO¸r¥ºwïû.^¼$„h³hÑ‹“&!2M%7Sy{·2–ÐLEµ™Ÿ[áî4N pS¦üuÊ”¿‡f’›©¶mûX£ B—Þ}÷ƒ4SQ-Ñ„¼‚8§êêšääwCBîäÊš}'®_niüø„©S'öî}ŸZªV‡öî}ßK/ÍzòÉ'ˆ `#ÚüœÎ?1bb~þ±‰ß¿±ãÄÀõ 8ÝW-×LJf*ª%ÈüÜAqqé¬Y/oÚôŸ[né°yóû=z |ç„…ƒsâ& óC³÷;väÙ³G¸# Λšª¾¾¾as…BA$›|Ò¢™Šj‰fþt'NâܹüMpp°°?ý”O@šsb ×4˜DØŒª%Èüð»›nj»dɼ˗O¦¥}4a³õõõ‰‰3ÊÊÎÀ¾j¹>î r3•Ù£‹S-Ñ„Ÿô„ÀÙtî|ë¾}_ètºM›¶ôî}_aa1±ãÄÐ𠎲v`ˆG±Vý¸vÙTr3q ZÂþŒŸ8iJ®TŽýiŸÝ'®_8CäÀéNZ4SÍL081À†È³¡™ ó81\C ‘î„Öh¹¯`š¨Aµ™'Á.×w ‚j 2? ¥FOf4S5£¾ýö:ÿN’rç¡C?7?` Cä8Š$ !<<}Â/\8ÖY¥ Þ¼9€4_ïÞ÷ýÏÿL5ÊÞxcqÿþƒ ˆvïÞ\\\Ú±cÏ-[¾8p˜¿§—^z¥¤äG"C渒Ç*+kKUUa¿~½bb†æhdˆ‚c‡gž™\]}zÓ¦-¤ÔÍ÷ÓOS§NB<öØpÚüì¶`ARYY~mí®¤¢âxVÖ•JEXÈüW¢Óéúô W(S§Nœ?vXØ 'úÎU(>üðm®ó6‡ü¬^!„1G!“ÈüpãZ´èÅyóËÓÞ½wï¶þýqb@˪­­ÛöÿÛ¹ßØ¨ë;àßkKW3Fð´am ƒn‚µØ!é̆fà4%EH«ŠE„Œ­ËÜ`Ùƒ\Hx Ä­ûÑ ²V!Mø1`.ÁhP¡Ø•Á°N1µ"ííÁ- h8(î^¯Gw½»ßƒÏ}óû¼Ÿßõ-N¦–h´xÆŒ¹}}}*“ú¥Ý%~o*I[–¤pí¤¤™ššE>½õÖáÇT®¯h´¸±qmcãÚ¼¼o„º»?ß¹óµh´¸«ë˜â`Y2˜ B€ÔOf¨©Wìüùó¦)WϘʲDòað‹ìæZjººŽÕÕm,,Ÿ›[˜›[8rdICC“ÉʈF‹.œ{òä¡ä=ß'Þž;÷§Ñh±ÊX–\&w{IÃÆàþÅ@Ù½{ï”)•S§þhÛ¶Æ1c~ÐÖÖ~ûíÑx|ÛØ±£'µ‹ì¬¬ææ:uJSY–\Õ÷®h |•ªªE'N¼½lÙ/&O~påÊå‰Dgmíêòòi*3`ßöÇI‘1•eÉÕ~¿J@ú5†™3«ydqw÷ç!„¡C¿yß}÷h Wæôé΢¢‚‚‚ñø{ö´„fͪ˜=û •á:^ÚSäõ*føßõßÿ÷G¸±šYη/\¥ÀWžØ•€Ìi ŠªKþ'‡ïüHýl€Še‰äÜ l‘sôô|Q[ûBQѨX–H~ÀÂÞiîС÷b±ò[nyàÀ[îRkfÆT–%’h W_4[ä ˆS§N?üð“yyE3gV¿úêºìììµk׌‘¯2WɘʲDòaÀØ;m Ž!|ôÑáÇ㱘¡é0¦²,‘ü@cèDVVss]W×±sçNž;wò“O>hl\«,Wàãß/**(,‹•¿ûîû rÅŒ©,K$?Л-rRuÛmÑU«~ÿÙgí--{ìç½½½óçÿ²³ó?*“*c*ËÉ4ncÇŽnmÝþå—§¦L™|×]S$UÆT–%’h ÜdrrrfÏžÑÑñ–R¤Ê˜Ê²Dò2Ž1H~ 1 Ö‰Ã9ÜŒ©@òáZ±E€ä¤?[äH~@š³E€äd [äH~@¦°E€äd [äH~@ƱE€äd[äH~H~H~H~H~H~H~H~’’’’’’’’’p38zôx$’èÐ{J ùi®¾~cYÙëÖ5*€ä¤¹††¦††¿¬_ÿJ___¡¤äžŽŽ…N:]ZúÑ#Çb±òaÃF·´ìH~$ɯ­}!/¯(ù8É:ô;‡|5ߟŸÿýyó–F"ùÉ¿\|É`°íÜùÚ„ %±Xñĉ¶mÛB¨¬|`Ó¦–ÂæÍ[§O¿?„°xño^z©öwö>õÔú?ØÓóEwwG!‘èL$:ÛÛß|ôÑ%É—–/º¶võÒ¥ úß|É#H~ƒêÅ_~üñªBuõœçŸo!TTLÛ¼yk¡©iKeå!„={âwßýãQ£J=ÞÿÁššEYYY!„×_ß7iÒÔ‚‚ñûöL¾ÔÚzࡇ,)×ÿæK Óä(p}úéÙ¦¦-6lJ>2dÈ™3]eew¶µµ··w|øá?KKÇ'_êí=Ìy«ªZ¸fÍ+*¦õßÛ=¾÷â7Í2„“ p=544ÕÔ,JÞ®M$:—,™·~ý+!„ÊÊŸ,Xð«ä­ÞBEÅ´¯ù}^__b„;öï3„pæLWaܸïÅãûwìØ}9Gü®¹úúTWÏéZ]=§®ncaúôû·oß¼ÕBxî¹UÏ<ó×aÃF÷Oõ.´rå²1c&>ûìߪªfÅbå!„+~{ï½3víÚ››;ärŽ!"!„y+vÏÿYÙ¤ï~K9€tÒÜܲzõŸãñ­Jd¬Ö¶³!„-›^~ú×OD"¿óÒÐðáczzzFY_ÿ'Õè'ùi¨«ë˜"\Ìïü$?$?$?$?$?$?$?$?$?ÉÉÉÉÉÉ€ÁÓÿ¨µí¬r¤13?€L‘B‘wd˦#jÞ"!„D"¡iû"‘œÂïVÿ]-Ò?ü3?€Lˆ}‘ˆ"dŠÿ”‰ÙˆN«IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/22_drag_and_drop.png0000644000175000017500000015166312032647166026101 0ustar ebourgebourg‰PNG  IHDRüúûfsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜnÈ’‚ IDATxÚìy|EÚÇŸê¹s‘›Ü„9@ün™úö¡Ñâé\ÿzîòM)\øÅæGíò†…‡Í'þÎKîmkyá¼M¶›€ÿùçEŽ{è©™þŒ1ðŸùÔCï%÷ÏÿOZ:Â|²–O 8)ºÅìyËòˆW¡É!SWÿ´t„eÍi]NVø¿yØxѯ²¡ò´¨9­>¶¾ møÓn¿!‚ ½ËÞ«ÖX<^·½²Ù'Öþaã…¡óÞš7v/_{‚Ú@›†è‰µË¿ã¸Ä·L­Œ‹]|ðíDJ)M|ûà⸖{·g)nÔ4à¸ï–?8ï롹¹–åg,î/‡¥§§øl^$¥»—¯=.b8î»å‡G:ô—8Æ ¾þóòÝCç}v ==]\#nÎR|6o(\Øø…½ÞPßÈ€i£âkßó™„ã‡w¥‰£bWÅŽJ¤v¶<Ùt–rà­DŽ»¸ñ‹ŒÅµò|³+XðõŸ“¿ãß:pà­Dî»ä?]@Û/§ _û‡`Ú[šhoÍé´B¶ã·ÆS£‚ · ¨Q~caÄÚ€ãÒ^?>!!aìØu'©E? c–Ë”ž<²‚cƒÃ Rf-mE¥ókËhóek‰ûËÁ·)Ç]ÜüäøÆ“ê¬ü­ @iâÛ‹cc”ª3Ò/„û7;Jç<âoÚqÏ‘“vycü“›/L{ûà_âXG'Þæšû°ƒÇŽN¤´ñà-ö²¬ êŒô ”&ŽŽeâ.Ò3Ô»´UNÓù¾7)Ú¢0y…î ôc¬•çÛ¨ Ç2M»D>ç×QŽTc1¼9™R“:q8Ǩ Úº ­O AsŒ0bÔÖŒAcš³enF³•–Ëþ3Ö¿q}Êë[ŸMÜ ”Nz3maŒµÏýÀ8nïëS÷6ª´Io¦-ŒNz!<탽¯Oeo¼9)íÕï[â?}Ù ?þ郭ÏNÝb­Å˜Ë þ2eÊ%q Tøsÿcº?c¬­òÇ,xsÊÞ×÷¾:%?2¸K{_Âþﻑ-Üâ?cý›×§¼þìÔ­”Nj±AkZã¦üã”­¯ÿ°åqÿ˜ôBdÚ[ŸþÜ “èß·eÂVsâ ü#-hcâ«ÏNÝ ”Ny3ma Ó‡ÄÂïLÙz‰£tÒ› ¢Å«méù§lòäëS÷ÐIo¬Ÿáoq¨–å¤ìÔÆÄW/D¾°Ìt9lõkõ±õnÃW­O Aé»4½DVo0¢;VÊãÔ{Ó^ß “ߨ³ ¦wõ1õâSC¤w Ë_"{kéä%²3fÌh½Ï·ß~Ûåå¸e†zmz£ûÒž9‘;_7WÛ0ù¦ƒÂwê®ÖYç‚ Ò1ªoТ;Aä6ÁÙI1ºµ4‹av‚ ‚ }œŽºÒAAú¨0êׯºAAnÐ ¿¥0ÊÏÏGw ‚ ÈmÂÀÐè„ßRÅÄÄ ;Aä6¡²â&:á·Fbòõ‡~ØÝ&÷»ß}ýõ×hå6´âîîÞÁX7ПèÏ[s¦· ~vk¬ÜW­çú#F·…0€çŸ¾ûìmݺÕÃíܞV:MÀG¢?ÑŸ·ÆJXXX÷Y1ßÂo•NÇ;£?;sŒnaUUU·À6Z¹Ý¬X3eúý‰þ¼5Vz·ÏUC‡„‚M‚þD"xÕF6aúý‰àUCPaõE° ?ÑŸ^5…Q7T_L"_ÄÖ1–—Ÿûë_o;H*+éý÷‡-Xà4p 6aöýîÒ²Ò)“¦úùù·þöì¹ÓÇöôôztæïm=òÕkùÕÕV¥ ¸»{ íâäÇ7^¾|ÙüqÈ! .Ä[Þb¼jH_FY§2³Éêôp¡^î:„cî^ÑáQ“Èí(Ö™Ü+î.Î@€ ”¥ ¨ huúÒ›þC9¤QNœ8DG¦«Bʸú·¿Ý5cÆà×^“ººÒÚÚŠŒŒ}“&ظÑÒ$+M¼´ðÅk×®qî¥%/Ë$˜}ËÑ ѶɬÞȯ_³š 4:&æ¯ûëoeÅî&ìì¹Ó•qq#ŽŸøùáI­78}æ×Ä)Ó~üéо{'ŽŸlÓÁ+++ï9ʪ+{òxW´ãTàPP þø“Ojkëbb"ÄZÂ;u*÷ÕWW<ýÔS„€D*#„Ã[‚MgëÙàê[7æqÏÐH7+…þì#ÂHo4~”¹?Ð-(Æ{X°Ÿ¤[‹WWWWTTd0!Œ1•J¤T*»Ãæa•„Žã°nôxa”ýKÖËËR:»ðF0^  Ì‹SeÙ/Rêm$q@dv”lðÀP''U‹•{¤¸øèœ9‰™™ÎÁÁÖ˜¸~ãúâÅ‹¯äåÅÝÏI)z–4ÞU BBHM½öJÎyA~Ø÷ƒõ'ÒåVì¾ñ\»vuâ„ÉÎN.y—/_È9?4j˜å·Gö÷ó÷p÷3úÁË—/Úq½^×ñf …ÒñåéÃÿMûôe]C=hÝGø¹oøðf*üþûïT«Ë?X»DUuœ(UΉO¿}÷¿Ç¹U÷ÊxžU• ¿Ð×Ü”]öê~Yçî¥@a„ÂÈ̤…˦oøññÊ93}dÕã£"|9bñÛ¥ªèÚµk:Î\HNÇóü€T*UáêÕ«z½^üèêêÜ-§„ÜJa$rõêU‰DÂe˜nºâÕe2RäÄÈTLžD$žnÞ?IØY  hk±r¹N¯+**¼víšåú’òŠGšúïÿ}ûHâ…\n÷isצ0úå7üœ•Ò!þÁ/¾”÷ÕÖšý©žã~7àÏ^?uÊW¥ÊX¶lü—_Zs|Jé?Öÿ#"<ÂÈó!fÏh&V€Â0òôòåË‚ PjC#Ò©jÔ-[ª/¿øÊ+®÷DwjÅîOMm­·—V«=æÁL·FMݥ˹ýn– J¥òfEE¶5%‰„§ŽÝ8£û>[15Ö§Ô8,³vh}­àåå3hPxS8! ×CII¸" 2ÎíB?(Ý÷ù FV¢Õ?ï¬+È¡ê¼ΧƩ&êæ5®®ܽºë{ëÑtá8&SÊ»÷¶WQQQZZ*¶ÆfÿB|}}½½½{´0 ¼Q/8)‚î=ôë%Mõå™qþ¡>Î*Y—̪ÈR BÄõ¡¡¡]¥(¥ùùùFtcL§Ó ‚0°¤gô ad!ƒ€1F0ñ #BôŒç À(è hm¬D:P)d½±ÿþ®®®–_ÖgŸV(ãGÇg_¸÷Ž#ó阕c¬ìر ªÑg}ýËGaÑϯ¨áyçØãþ®;±KZ×P‘•e}[Àó<¥”#D&ã~ȼÒÁÆSG aÀ(¥”RƨM-NGVXý Q¨~¾ºûÆ|³S=¢c+vßxT*Õî=;§<Äóõõ;‘y|DÜ}¦pÑÏGâïÉó‚D"ùñ§ô¡QC¸Tš—Ÿü¹¤¤¸E?(cì—_OµØ+8(x|‚U} olÐÔÈd^Y•C“_[]S]ó¬;}úB‹Í\]]’“_ñðôXõÆË3ýnjjªnÁ|ÁÆc—Ô5Ôï½…÷÷ÐæF"§¥¥Eײ=•Á5¤Á—¯—»Ö*\ºñkIʾOúyPýõ‘¯?:´;ÎŽ1vN÷ßüo]œúõ7Ü÷û¸'“I»ÅPUU•Z­6 ­¿-,,ä8ÎÃã /^´¼â¿C‡í¦«Æ¨PWÂkˆ®Á¥²¿ßE ·=£2>DwÇ@gog‰JÕEÝ\EEEF£Q¡Pˆ‚RŽãAJ¥ ………ƒîC—.]Òjµ...uuu”R™L&•J+**t:]TTªÞ#ŒcÐ0×I(q¥à#åów¤ÝI©Â ˆ³MÒŸü±,CÇ!¿¬¯¯?wîœå·e¥¥_îÜ= 8èÂÙóƒC‚}<=ˆ1ËpGHUu5g08©@©ª/ÿîõ’¸8¿{&^;þCåþ7ü‚ ²8­µ"RÉ#‘IÈ´û†XÆ60Æ€1ÆPÆôF^¨ ‚ PÁaÔ±•œ—ò,šyÀx_ƒq”Ñxø¹ç8ùkÇVì¾ñLš0ù‹/ÿ­ÓiÈÃïÚ»ï;Q•”ß¼Y~ühAJËJƒáwÜeweõòò4ÇŠ ÕË—¾Òi !ÿذÆ&+„¼<½¤É›o¾Éó|ËߌTJé×ϽÁÐɧ …Ñ%uÍß_ËþöÁ¡ÚÖPJ÷íü9p¸Ò¯¿Ï±/¢¥RÃðIõ ÊÃÏZíàˆ?£ŸzvæºL™Kì׋öü~´çô¤‘>]©©{~íßßp\ªt./úaóñ§âýãî òrQJ-â¹]£Š ÚTE`0  «´Ñ¹sçA0K"óÂéÓ§ïºë®î¸jL§«¸Â‰¾ÁËÀ{knzzVæé¯×iïðfƒý ^>n2ÇÏKTEbÍ”ÉdF£Q"‘Èd2ñßÖ?|û8{ö¬x¥är¹¿¿¿Ø(UWWSJ5•>Dz€0"„PJ Nì B8 ~:ˆ—³‹2C¦”]ÈÏSGÜñ Û’Œu®F>ÊÙÙE*á†nùíðáÃ)¥×ŠŠeJÅ‘}ŸÜå]ɈÜÕ?ºÿЇl»ùYè!BiTH*¹œç µy2Ååö…Þ7É0gyÝWïÈœ@ÂK¬o¼(¥„A ZŸž}µƒGÝÌS&‚̱©‰lÏJÃÕÿ<¾ï‰7øSç+ aÆû¦»qùwÚ±»o<..®á‘;wíxbÖ“æž»b~Î8:2~Ô‘c?;žçy™LöÓჿôq‡n<# b‹_[[Óñ.nný±H‘Éd9ŠÝ"aÔÓ1h_ì¿âæ~Š É/¦NøçܯiÌ¥Tñ—(‘HºÖŸŒg‚ŒZæâ¬~èDz¢«÷=45røðEW#žjêΉ§O•,>õÄå¼ÒüÉwøøõsuV’.©«¢ÚÈÓÓÓñûºØgm+ÿåyþ×_½ûî»»\ Fm]© w–)Æzm?­^§ ôt¢.ý4 ÍÊ ›â6¨K.™^¯—J¥‚ H$ñ¡Q©TRJõz}Wå_‹‹1VQQáïïÏqœ^¯¯­­5?ãaãЄ‘k!cžãE8B@ÎH ¼ªr–<[;dx0Û¤½¡¡²ž¹iœïV*99JKK[o3bÄÆó?|ùŸHM–ÁH«KÇÙ*ŒÄŒ®Q‰²È½_?.<¼þt¶³×‘Oüýê7¯±¼UP™2äw+ÿ´«¶æ¢|¨µaOs/PªÕó÷ ¶¸2ÆÄ.HF0ÆtSĈRʨm£6­_þ>"|DzÍqºÁÇ­~Í  w~°lÄÓZq¤á~`ÌØ}öIÎÅó!Á¡ÞÞ>çΟ9sö´³“‹R¡bŒýòkvøWG*«9bÄó‚5ÂvŸŽy·ï¿ÿ¾­Ã¤I»;ÂÑ›0 ÷gï”?¨a*R¼Î1nò«srkREƒáôéÓeeer¹ÜÏϯÅQ#ÊŒZ¡¶x]ÊXãäTé36ý×›×3ºkF\„—S×ÜŸ˜ ð5B1R'ŠUõ˜g€]NjwùÉÜú)¥Žõ¬UTT´×ƒÖ¦6¢”:’otæÌJ)cÌÉÉÉÙÙùæÍ›â“˜¯¯¯F£©¯¯çyþÔ©S111]12™–°~@80h@#€‘Þ”Ir 7#'©Õt‘%D*•J¥Ró¦L&£”òL/©×ÝHprš0#ròÎ_Õꣽ‡ú;*)yž¯««3ŸÏóâ²§§g`` táááF­Vß¼y“çyÆXYY™xi† "•vCr>r‹…!¤¤¤„Â1NìIkÒEÄ,•ˆ}S^kòS«Îl”Ë|ÝRÙéyU®‘î®ÌM¼3J©Ñ`¬«®©+Ô¹¼îÜU-iÐrÀXƒí1I1äÅY¤‰ãÔ¼½½ï_ºôØ€†>è——'S —W xy̘߿ð‚õÏ”1R0ÅÿX<î7©"s6/âŽÖŸE +‚¡v@ÆËW®¼ò¤¦º|õ\n`|ëÏ ~¡þC†Þ¥5ðZq<Â1öq_}½ýž{¢c‘áQ—¯äæ_Ë÷p÷hs:l›i¨0 õg‚@ÍE5—±hÍM‹QQŽ>#FQ"Æïµµ5¾¾~V”Ù~^R׬}q¼‘2ñÇÄq\½Žg ÞšŸÀS±ÚxýƒƒŽœ ¥£ÀZûÜ+‚ dΫºäáêÒÿæÕzœ0‚¡ºÜ¿ÿ*ß»^øþì¸9’1~’ÚÚZžçÍÝônnnÝ1Òéxª¬8PBÅuAëJeÊëý]œ `Ø0cmå·§‡Í¸ËîºÊ½ÞØ*%%·òþŸþ´nKìàrŸÚ/gó™- ôSUÜ(¾üyÙè/B£ïµIY6_ b`C¡PèõzWW׆†Žãär¹9n$vu‰0ƒO~~~–++3»íéJãÞ@å„Ê]ù’^Œ‹'FLúÄËk£^ÚYïíôKöƒÑןŸvŸ—#•_¥R 0àÚµkæÐ—XTOOÏàà`1»°°P«ÕŠg*•Jm$¹ºººººò<_\\ ”Ò!C†xx˜UUU•––Š÷ ''§   ”&=L™F¶&NÃCÕHcÈȾ=+Î}â?0’ã¤Ð8# ‰B%séç$6ZQCÙñÃAš†B´Z{ºÒL“ qœY‰gáåå5î¬LL¼zõªØÓꕟoSDšQÓ$§o,g[‹`˧,¬;òìj—ªê†g'W.Ÿ»Þµ¤æØ °’‡~°ÆŠãÂÈÅÅuøwø&uRÒc ..®eçÏMœõÇ.‰I7EŒ„¦ˆ‘y¼«E ¬z–í0Z–ö½E¨ˆNœ8Q\¨­«m½q—ûS£®—70”2Ê@ L ÀSÆSF)„ùuA´¿û¬t¬â¢{`€_P:m¸Pœw–z‘ÿDœãïØT¬íïî¤Ì9¨P€ÑhT*•>>>]1âB%@cϼ®F8-…ë=€‘é%ý\ `¿ˆgF#Ó2æLÀ²}cÞ~*õÙ—–Ó~¥QŒ¿ÛäÆÙÚ)ó¿ðU‚ï±tõ6ç6ñ<ßÐÐàææ&Žý6·Àb—)¥õõõŽ$Ê´ˆ¹Zæq{zz–””@ãÌI].ŒŒ‚ DWÁio$$Ý»ü¡ûÂÄÉ8*+jyZgŒañ'®Ý¨ß–ñÄ”aá¾nöÏn¤R©BCC Í)Ò*•*00P&“ µZ]QQaŒBŒF£}ó †ššq^€àà`³*ª©©)((Óc†ÒUñ*äV#³zàšºÎ€˜^@Aš¦Zæì éuõ‚Q×ÔÇÓ(ŽÚ+ˆ—·ËÕ\^©äê쌙ÃE`9_£Æ0`Ïóâ8…«W¯Út|ÊL\¶BmJ¾¶°2ï‘úÐÁ÷'½pQ£Õ& /™ûˆüÅ.yE\dxhQÚ=]i"ýpbfðˆ{'jµçÎ_(Ù²ÅsÚ´ %KT!!ö¶Ñæˆo¾FæP‘9bD'•JŒF£}WÁ,ŒÌªHìJ+..ÔhꬼLŽø³ENÏÄ—ÓÌ?€}o'vÕï¿[çŠÌÜ-ÔèË#£t÷<àëââÌSà80ðT©’9\Ð3âÄÀY"0£)«ÃÛÛ»ƒ„CÂH™¢iw#Ê~'W"Sr=ÇÈ%þù¿DFþ1Þ‘ÉL&! €QJ˜»ú?¨‚ýd@µ»úÝsQ>ÜßËëâþ3™™¹Ï<0ØŽ‚L&S*•bʰ9¨Ã󼓓èt:¥RÙÔÜ:Œ±êêj™LVVVf0ôz}ÿþý«««»/Çèbiå–uù8ÉškGj¨Ì3J¡Þ½ÂÐ_§§•>U×ôEÕÕÃaHp¿~n*ÛRvôzý•+WììÜ,·¬°°°ªªJ&“‰…s¶ÄiGì˜ûQ¯×çååµ¶R^^^XXH)uss“J¥F£QWVV¦V«yž¶î TÈo,Œâïéëë{óæMb)‚80½Ü‚kŠÅØóDgŒz X1RÈh½–rR`¶¿‹ÍRYFÂ,g°çyžç áxÁ¶û«8æS\þÛÿ½Ñ^Î¥ô…ç_¨««åy>$('xäy>ijøÅ?ÿ~îË_¸jôq*ݼ”û÷!÷“ùÞ¯¤<3iÒ$›¬ØÝŒoÛV¸aC€Ñèåæ&sw‡êš‚³ç àdf@ppL` ‘R]zúùÇ-òŸ3ÇŽ¦Ù²©ošEˆ± r,ÊÎ''§~ýú€¯¯¯åø5„‘8V…ݸQððÃIzÕÝ*ŒZãî,£=jXZnî¿ÀðQÓ¤„5Å-ô«kúËÈé2 R`¨ÞixÃNY¼¶ÓRÀ…“V>ãø)SÊK¡R;q*7®´\¿~AÓ4æÁ)¾>îý ¯8µÜž³ Äüb/ƒÁÀkhh­V+Š$ƒÁ ÎâaÙ¬ÙGLLÌ©S§ÄG žç‹ŠŠD»F£Q­V[†Râââºöª%}ü‡“òè¢'Zº×¨¯+á宜^‚QSï^_ë\ãïnpó–T²úÂëaã…r6ž²¹Í§”ÖÕÕ‰M‡V«U(¢X'{öËd2A̯>>b:‘˜$¶'æPœ8ÐÖÛA›VÌÎû‘M·A''½^ï—ýmáš?”[]ƒÅqà8Ž3u¬5ýc; ¯¡Úºjj¨£ 5Ôuòg¬£Æ:''©VœTan¬-~coZ‹_»¸`4‹ŠŠ´¡¡ŠÊJCüüÜÝÝmý%ðF£øÇÓÖ×ëµZñÙŽ1f4êêêêêê£Q ‚ðF#³xÔ³ a¯þI±vóžÝG™“œw~uA¹tÁ:í!CfÏžm‡Ö!톋¶-‘TÔד„„þO=¥’ÉŠjk]‡øÃÝî¼³¨¶V%“õê)’PQ_-‘oÿÂÆpPJ¥Èdr‹6·©º‰]Ÿ •JÅ·ÿœqÔnmD©©­)..:{öŒ8ÍAmmmiiɆn˜Òÿ”.›ýÙº.‰ !>ÊQ‘Ý¥ºº¹B*m5‘YUUUiÎq§†7ÍE×ú˃úiãî,µîbŽø“ ¯'LDÂ*Kœ.}óèXòå—¯<áÕ%çË-¡ŒñÆŠ‹JýÏÏø 7~²û TÊ] °, JŒ%FûLx{{Ë­x¶\.öòrôÔ¢££¹ÆH[‹ô‰DÒ©*²ïª]*«ÒóB¶ºN”Îþ|OþÍj`<“H0q‚t ¨Ç‘²"¨Î »Ëc ­á"'''ww÷úúúÓ§OŸ?^*•‹ºSÒˆXHqš(1\dk“ÒS|B*%„”––RJå¼ùm"FÐ45bã}1øa3;“Œ¼%\ÙýAp ªíˆÖëÝÝHH«««Ûœ ²£ˆQ[ç‰rUUÕwÝ5üHFFH@ yø€ ˆ ÆÆç6Æ/¼ ƒ¡¡¡çy£ÑÈ7¢7Å×Ýy> 0ð†ºÀz+ã0í—eRIõ_ÿXì䤘¶¼^©ryñŵZ­Vì»×jóò•Ri¥ý'Mºöâ‹ý•J¥¿¿ÇäÉz½ÞsÊ¥¿¿3Ç]ý÷¿CÿùÏÒÿýO)•6\¹bS„ÏÓÓ33ëDë¦V@oqGG)ÝúÑû–ûxÛ5"ž¿³œ–ß,÷÷7 ±RSS]ZZòáÇNõ;å%¯¿#ñQ2<¨ßÓ+¿‹<èúLYTTÄó¼!’àààáÇ[ÿüíPĈéÀS]©¢8ãî{‡¾žò—Á]{j>^^_~ðù¢U T.þc’Oü%¯îƒ=¹Ó’î–x4°áÑyðÞîsÃýì|Ï£ØuüVQÙÑpµ72÷©YÆŠ:žðÚ‘«öðCvž¹üò·?†x¸•Ö5üRPúbjúÿž”0A.F8N *wNá®5Ô unxènÏ‚\Cü½åvü¸üüüÊÊÊÄ–¿¦¦F©TJ$ñ=²F£Qœ•À<$MüÑÙª]Ú³"ÎGU[[k4KJJt:]aa¡øÞt•JÕæËˆÛT™uEãP4ó4F3q`_WšgèÈ:V[{ÖÜÍe©ŠHs‘$~tQQjª’Û$ŒHóN4Ë;øn?W—ÃÇ~ ´ï‘‹0ÐiµbôB¯×­N'äuuu–z…çy­N«×ëxžçƺÚZ›"FÆŽ0jÕo-ýãþ/GÇx$­p ôW(„qb[­ØÑ„QJõ7nÔÊdnJeÍsÏ ÷ô<§×KgÌ(**2½[xÚ´œo¿®R©Ÿ{ÎM©¬Õé uâ+ŠÌÓ¿vÌÀа¡a-Vþzú—ÆäS0÷ 1Æ$ 6eÂT(¿Y–ýKVÔÐa¶žT0=»êÿ’ íÎ;ñhàq'‰¡;n íçŸóãÅ£õô»T*36ƒ£¢¢lê•ph^¨ã''ÌžjªǬÝùÆÈn:»aáCw}ÆN*•K%$.ÂËóϯ^I^ú¯æyß¿wÌ‘|&BHÇÚÈ¬Šº°ªX©ºêª½:ideƒî‡ ùJ*ÄÝ_-¬hÐeÌ2T¬ÁÈø³3âCíïá*•Úy² …BLåCAâ|EF£Q9/*B±{‹RªT*ÅY.·"ŽSËËËÇÛrG)­©©qqq‰ŒŒ”H$€ôaä`uÇ §¨g.~ÑÏ—Yù‹–ËÀIÕò 6_©f_£C)Õé Å%ƒBBì~äúË’%k׬qqv§_²l¹Áh ”¶Ð+F£±AS¯ÓꌃQ.7çâYå.½ÎÀëkË~ÑVž p×±s;hÅÖ&L Û>ö˜úÓO½”J‰Bq¶¸X2q">½ººZ졇‡bjõÙ}ûÜÜ”„¨kj|gÏ[qšc»/– âô˜2™T"‘Š-‹ùý£…E…çΟ¾ûž˜Èpk_ "‘Ê]<4Z>6 &ŽmFjS_Wkx—~^Ý-ŒZ‹øŠF£'ÇÄĸ»»Û:˜ÜAîÿü»î>ABˆ“²i wÞ¸qú+W´Ç.ìÞ“»=m?¸È¿0-Âq+žžž”Ò²²2Ë૸ìëëëø»c»;®ZW§-MÔydãáS›gø‡)Ί²›ÅÞçrOyDòù¼£T£>>ÎþÞxÿ#é#æYõš:ÌK¬@r¹ÜÉÉ©½ñðm2bD'ŠÍ¿¿¯ãžýÃOüá‰':Ý,99ÙÎ'¹âߟ}þ˜sk[iÅŽ&L|%Ó€—^¢ Šã„ÅÙçÄoÅkÇqœtÞ<ÉÂ…¢vé’XØ ÷?x¯u™0BHQqá3O=gÇ{ˆ†Ž˜6tÄ4ž7jµÚ††úúzM}½F£©Óh4ƒ^.—+•*ggW•J|㸳B¡ì– {#ÞÞÞ3f̸ŷX¤' #S+'á½»Y€m÷G;nYÉ•J¥Mó9¢–°žôHadŸÜ±éa]¡P( LJQôF›~›4aÄâesâ“Ö-8ýqŽ÷àøîúUHe®®2WW·ßÄŸú¯‚ô$a„`† ?ÑŸ^5…‚M‚þD"xÕF6aúý‰àUCú¬0Úºuë-0ŒVnC+6aèOô'úóÖXÉÏÏïVn“«ÖCý90tÊ”[€ò²R¨®©®š/µªªªÐÊmh¥ã_5Ö ô'úó–ù³×Üc:>—[vÕz¨÷ P]°{×Î”×æÒýH$CZ #AAnÜû¹¡0ºõÂHj©ÜÑ#‚ r› FŒ[L“0º5]°‚ ‚XæýÆÂhÇÁSèÄV–>û»6ׯýèkt‚ ˆÝ¬\ö|eÅMôÃo)ŒÄVIäááÑ›²DAnógNä7F+—=ßfò/« lHz¼w°bÍVk’Òð· b+k?ú³~CnÅ»ëPõú§ü #‚tS‹ô6a$ª"¤÷=ÐX~¬ªªÂ¤"Aîh`‘^%Œò/«ß|ëuqù™gžyæ™gP'õâGŒ!‚ (Œ:QEŸ|ò‰øñÕWÞøä“OÞ|ëuÔF½Œ!‚ =n•6$èÕWÞxæ™g,W¾úÊ&e¬Œžÿ ×L®QúȦìñv–¢ÙÙ˜µ">ceôÁqöióð4ìGAPu¤â£&=¿œ9 §`ǯÈÎ^a4¶Ê—övIÚ˜µ"Þ¤‘VŽÍ‡W½ËcE¨ŠAžÎ­•&Š¡{î¼·²XkÿQÔÛçDGÇÆÆ®ÌhZ½ògSdè›ùÑæï[‹®qI-…Ttllltôœíjóš•êís¢££;8Ò˜c„ ‚ 0ê„üËjO•ù£§¿ÊÞ#õö{'ïÊÎÚ¹äÒQÆdl[¾1+++++;{ÅHˆ_‘½é‘Ž;ÝÔ×.%i!”VdggeeegÏÍ_Ñ( uþ X™½+l j#Á#A¤§cUWÚ¿uðí¤»Úû*ý‡ŸÄ~4‘{î¼7ý‡ŸÂ†Rñ+6Œ}ÄÔOÖ© c¿:lÉ®mñ–rkÎô5ç9ŽÒGÆ$mÚ6+‚BÃ_g-˜c„ ‚ô!aÔ±úiö‚Cù—ÕvMö˜ÔRůÈÊš³}Nôœk»D1cíŽfY´bïä]ÙÛ‚2VFĪà˜c„ ‚ôº«+-ÿ²:ý‡ŸÚü*ý‡ŸlïP‹—”z°ž­ YÛ6…¯ÙfoŸWx(NÇÝE`Ž‚ ‚¨#Ud(6ÿQ>|ÿQ¾ø'®´CůØóÅ\i1õÇ”:»6‰!q냂FO¾´066:ú $¥Î^ù3VÇÀ#A¤§ÓõÃõEÅc(€êZ½¸Ò¼`â¼/LêLeÇ·Z#Žäoó£y5Ç1­ šµ-k–¸¸bÅ €‘M·ÞiÌ1BAzÝ1;ÑÌbhåŸ÷·¹ NÝk°/V”º !!a}&cæ5™ë&L˜°>Ó¼†¥.HHHXZd±™50–¹>¡åñ[|;¡9–v»ƒŽ‹„ ‚ôZa$†‹:&ÿb z¿7aGŽQÈ à¸´£YfÝPt#òn˜ePqÆ¡\Ž‹@H·ÿÒRº[!‚ }QuŠFr]ßû°5n;jì1+£âŒC9s(£Ø´®ðF ñïŽSš¸jß¾ýû÷ïß¿ߪD€=G1œƒ ‚¨‹™òl¸»)ÜÝÉ™ÖðÜK¡÷{ æX‘m9F±£)mÒ"…7r98.÷F!c™G÷¥‰£bMÍý_–R–]T¦®·VÝU¦/:è’ hÞ¥(uÙ\c$©µ-ÓÍ,~×ÔI׺<íï‹ ‚ô*a$ÎQ4åÙ0yp<¸ ´á|ë?QÙ5›r;bïx´À(È»Q ut$&&Z®Jã8˜6*ŽV”ºp|rZãû€9.-yüÂÔ¢fzâÆŽ…çlÉåZÖjÆŠv,œ½æ}¾qf›]rŒíX˜œfÑgÇŠRÎÞl>T½lY,mq¹[foÈ2‹§ ãgoÉmÿÇÕþ¾‚ ÈoK·¼DVT<â ×Ï ó\w<ÅömŽs`ö&Ä#qlš•?6jKnâ™3áFP2*$bÍ9”Q4sfáÑ=œÄÉújs.ÇÑÄUé‹ã s}BJZîæ¯²’Ç™¥Ò–-@iâê‹âa,óX“™½9'jÞç-UÇ¥¥LL—)š÷ùƤÓ¢¹ˆ¹ÛÞK `™ë'¦¤Áž£™‹bcÍ;¦˜+*-Ë âÉÚœÆqæo-äWçûb“„ Ò …¼»úÓŽ7x)ùiô~/ÃŽù¯ýãÇFlÎÉ9”Q<3Ä”M2 'çF!dÝ"ÆÆû›úÔ bÞc¢2ØÇæEìÙœc!V µ€;nIã¢æ¥˜EO›p\⤤0wáA✙þb/Ûž=w£b“ÌÍb°Ø7b^ÊÌöÆÛÛAéÂèÝÕŸÎzfZ§Û 6ê5Ø?‘¿(ƒeì”Æq8*ŽÄÁ4HKK;º#$¢ÆÆ7%^[$a‹;Zª š¸zc1¡-[r6•9sQ‹Œ9¼¦¾³Ù ›§­>°¨),ÔOŽÚdÒÄÕ‹b;<±vóÅ­ØAùÍèú£×ïœõÌ4__ñž}öOæÍëg=3­Ó¨ÒS°{ÎkBâFMŽËݲ% À”ú,f¥mÙ’Ëq0(ÄBë˜RŠMCû;†ÒÄUû¶Í —–<~C#ÎH@ÒÆ«§Ážä…;ÄThJ#æn3YÛ¿zúb[ºº,ŠŠ ‚ôea$ª˜>}úôéÓÓÒ¾›9s¦ù_q¥y¤×`÷»ÒÄAû"b˜Å?~l¥âši£b-õÓæ¯LIÊb˜—Ý™ÿ¤÷ÒW%v®ŠwlKã8ȹQÔÊœRoóì 8òA¤ÇÑ]9F—/^Ÿ3ç©mÛþµcÇŽ_Í™óÔå‹×‡Dh½cÅÇV®…ç׎ò%¬ìÛ÷“ß¹ºqy+ü~ÅtïÎúæOÃ>žѸ%c§¾ùÓ_Oq¥C¦®^;Ê×þüÖÖG,±#Ç 0$‚Ò\Ž3Ë»Ér¡i >4&妥L0õnq”6¥uJÜâôU’––¼0äóbêPóÎ23â ¸–æLýnÖØ‹]´:qOrZ³Ìnk÷EAz§0€;‡Å¬{'ÆÆ§mŸ Üó¥¾¥…Üe8]2j‚?”Å{Û/G&?ùáüðò]ï'oòAYÓ 8ô®4ÿø±Q›ssÁb¡À(€\° ‘€¤B64ŽØ·L²Qm™=þП?{²ÍmÄah­ÍÙXãø%Œ†D¸|ñº;†ÇLþשì™Ãc.Ú3jrfa€ÿ¥S{ãbæC³ðÏħ>žAˆ)г:8=ùØ<ç£û̇bgßKY5ñ­YMG ö¿*ûöýä 9.æ¥ogoy§ÅS sáâAÊwmn¾bg¬È$#’ÞKOêpYp,NO_lÝú6WÆ-Nßo^ÕÖ¡¬0g•­vNÁÚr"‚ ½M‰eÓ§O_÷ÎFX²|¡å·âʶé¬VßdåêßÁÁß6.'\ÚöWX¼{åpÂξ—²-û­§ÄˆÔÞm}nÉÇ»½ aìÔ¸¹ɺÂ?¼õÉÆN}{?{n ýÓ’Ó½ a¬øØÖÃw®ÞýgØõþÖ]7ï˜îeq¯ò]ïÿi|™Ñz‰™ùÉž™–“˜™ŸÄ´ù‘ _ðÖ'Ð|—¶Žc±i±Üùfˆæ!‚ (ŒÚÆþQiHsŒAF1¿`Ø&8oϨ4¤‚±"A…QG8’c„ôDìÈ1Ú»w/ú A¾Æ¬Y³0³o #÷úîêO_J~z_¤&˜VîÚµ«Åfï®þ4hH?¼½ ;âF³fÍB¿!Òwؾ};:¡Ï £¤¤™©©;Þ]ýiÇ› é—”4/@ïÀ‘£ßüÉ '@äÖ€ù}T‰ÚȾí˜I¹èé9F+—=Aîn'=<<з?øöo¤Ëž„ð7 ÒœFa„ôÅç!üå#‚ (Œ¾Ž9V„=è\? IDAT‚  #¤¯ãH¬ˆ±Ìõ ë3Yó5ë3oõ«}ÕÛçÌÙ®n\ŒŽ^™Ñrugd¬lÜ©ùÊèØFZm;mZAAP!·æíIÞpË•P ‚BÃÏæ@AþyŽ»tM-.Ÿ  rèÈI³²²²²²6>’:5 ‚  #¤oàH܈ãÒ’î(j®Ä`Ò„FĨ’¸2!a}fæzqý‚Ô"V”º !!!aAjkÜ·(uA„ Ög2Ö´Wûò+8l¸(†Ô×.=òÈ#¢JR_»4<,̱Ÿè¦€MÆÊè•êís¢£££Wþly¬Œ•ÑÑ­Mñã’š>¨·Ïi÷h±±±;·ÞÒÓj¾‚ ‚¹=p8ÇhÚªU‰\î–Ù²,×·8=}ÿþýû¶Í Ô2ªÄqiÉGG‰ës·Ì¿ R>Ÿ9›W™ÔUÖ†Ù›s¢æ®š{’›¶=CFê#{!lœI%™F+ç_Z¶+++kײKqŸÔù+`evvvöŠ‘–ªhKØ®ìm³Zš2¦&‹7 ›ùs³³²²²7Aë£eí\k¶e˜6Ý´eöŠøö7CAP!· ]0-vѶ¹\ZŠe²Qþ!ƒš¯ 4qõ¢Xq=¥‰«7Îô·É¹QÀXæÑ=0($6däÝ(†ØÅéééé‹ãi· ñã’RfˆZ(^TIf-“q05iî¬ š57)õ`£IÚÔ\ÿ\Û>'zKØ®f+SÆÆÆÆÆFרmÔGö‚)e2ÚühA¡á­ÅT­7CAP!·ŽÏcä?3enÝ“¼pGqÓJ±lâÄ”4ÎæºÊqi)âŽ97 ­Ú#8lø¥kbç™å²õ¤®[w¾ÕJSŽÑ®°-½aùgÏ®{XLÈ^˜ŠµA…Òûp0nDHÀÌ«§AÎæUÛòDUÄŠv¬ÚœQs·­J¤Ô–ƒ†D¥‰«öíÛ¿'¢&‚BÃÏæ;Ï,—­'icVÖ®É{§·•ûcj Þ˜‘ݬ¬M­†5 A…Ò£èªyŒ‰[ôù¼¨œœÓŠÂ90(Äßf?6ŠãÒ¶5FŸ¬I¾eÈ7ß|#ö]Y.‹=^[¶«@½}K½[Íжì¹ùmh£Œƒ©¦øSÐèÉ—Z•žzÓˆAP!=ˆ.œóš$m\=­I'­žÆqiÉã·åEÇ¥%·vT@Ò{«iî–9æiVÉÑ“‡Ña&ñN— ~Ŧð5Óccc§¯ ßÔAˆ§qëì¹ùÓ£ç|QM9Fó/-[iÊ= šµmÜAÓüFÑÎK¿bWØ–èN7CAºæ6åe¥°î“€oÓD¬cÅš­bU©ªª2¯ôðð0uRǤ½{÷Κ5Ëò¿ k?ú«=‚ ·¦Ùܾ}{§íž¹Qª¬¸ …ê‚Ý»v¦¼6}x H†`Äé2ð]i‚ HO…Òà»ÒAÞ]€8Ž+깪c]‚  #¤+ç1ú͆ì.9¦!‚ (Œ®¤çÆz¢žCAºÌ1BºÌ1BAP!ˆ ÌÑAAP!HŽ¿+ AAP!½Œ!‚ =L¾Fºóx4Ì12;€ ÒÁˆÒ`¬AAa„ M`Ž‚ ‚ÂAšp$nÄXæú„„ &L˜0!!aAjC"‚ (Œ‰ƒó±¢Ô…ã“÷À´Uûöíß¿ÿÀXµ!“Ý^ÚH”n ëo·‚!‚ (ŒÛ sŒ²¾ÚœËqÓV/Š# Hzo±¸ ™ë#Ië3[j”ÌõâW R‹XQê‚„s´Éšm€±¢Ô &L0+óŽ©© Ìá+Æ27ŒONã8ŽKKomâÑ£\ëOÒ“¨œAP!€9FŒeÝ”&ŽŠmãÛ¢Ô)i\âª}ûV%ri) R‹šê.—–|tÔ¾ms#(ÍÝ2gü*Hù|^äl^µ£¨QštºMÖ†Ù›s¢æ®š{’7dYü¤ìÛ67 r6•EHÜ¢«)¥4qõEq„0–¹aöæœÆ(Wzz“’CAP!H×Mc¬(ãPŽI3ÅŽJ¤4çP†YôPš¸zQ,ø‡ —7Îô÷97 Ðñ6¢&2ònX|ÎLqGØs´½ Ç¥%/4i,Bâ§§£BBAa„ôuºí]i…7rš¯°=]öàÒR&¦¤qœM'$nÑçó"(år·Ì™8q}&vŸ!‚ 0Bp,VDHܨiÀqiG³ZÕ|ETH`W<0$ (M´¯;Œ$½—ž¾*‘Àžä ˜Z„ ‚ÂAL82Qìcó"(Ý“¼Ðœ¹~}&c„Ä2i¦¬£i56> ë:ªÌÇß¶£ØJw£ù¶±‹V'R Q!8l A…‚˜±;nD’6X= r¶Ì™(ò::Ê4B- é½U‰4-eâÄ”4š¸ê½¤€®-³xüÜ-s,¦µ§¢f¦Ì‹‚œ-s&šÇ M˜0aâÄ”=5/ef¦!‚ô|”—•ÀºOvÀÊeÏ£SNY±f«XUÄW¤™ß•fFTH§íÝ»wÖ¬Y-vìà$à‚´ÉöíÛ;m÷Ö~ôµØÀVVÜ€BuÁî];S^›ƒÞ»H$C0b„tø®4A¤w€Âéð]i‚ H/@Š.@º 1ndÓˆýíÛ·£ßAFH¯Âœcd“*š5kºAAa„ô6ìˆAcâ6‚ ‚Ü>`ŽÒ5`Ž‚ ‚ÂAšÀ±i‚  #é¾w¥!‚  £[Õ+ Óa è0V„ ‚ 0êáTTÁƒá³Ï°t ˜c„ ‚ 0êÉÄÆ‚NGž~šŒçÏcUpŒ!‚ (Œz, $$üô‰Ž&‹A]VûÀ#A…Q‡M˜`Zâyظ‘DEÁgŸAûïWGÚcE‚  £žÏäÉÍ>“§Ÿ& pîÖ [Á#A…Q'(† 1bo½ÅΟgÿþ7„†bͰŒ!‚ (Œz8'ÄÆyë-É \\°fØæ!‚ (Œzlòd`~³gCm-yähhÀja++BAPõ |¢£áÎ;Ù¦MçÏ“… ±ZØæ!‚ (Œz>NNlÍgg–š ..ð¯Á§ŸbͰŒ!‚ (Œz>>hZˆˆ`[¶™?~ùc=˜c„ ‚ 0êÌšÏ> z=yüq¨­EX ÆŠAF½öî»pÏ=på yþyô†õ`Ž‚ ‚¨7¢T²/¿77øúkØ´ ýa=7BAPõFfÛ¶Yº²²Ð‚9F‚  £^Íôé°p! äÑG¡¢ýÑ1+BAPõrØš5äé§ñͲ‚9F‚  £^Lƶo//øî;X·ýÑ)7BAPõj‚ƒÙ¿þ„”8rýјc„ ‚ 0ê$&Âòå ä‰' ¼ýÑ&+BAPõØoÀèÑPXHfÍA@‡´ æ!‚ (ŒúR)ûê+ðóƒC‡`åJôG{`ÜAAaÔ7èߟýûßÀqä7`ß>ôG 0ÇAAaÔÇ;–½ö0Fž| Ñ–`¬AAaÔ÷xõU˜8ÊËÉOÏ£?,Á#A…Q_óÇ>û áÈòúëè`ÜAAaÔÇðñaÿý/ÈdðöÛðí·èÌ1BAPõUî»ýßÿyæ¸zý+BAPõi–.…‡†êjòøã`0 ?sŒAF}BØÇÃÀ•E^~ý!‚q#A…Q_ÅÝ}ù%ÈåðÏÂÿþ×Ç9F‚  £>Ol,[»Äd£‹û²'0V„ ‚ 0BæÏ‡'ž€úzòØcÐÐЗ=9F‚  #ØæÍ çΑŋû¸+0n„ ‚ 0ê󸸰¯¾• >ú¶më›>À#A…ÒÈw°€,XçÏ÷A`¬AAa„ü?{çEÑþñgv÷zÍ¥÷ÞHB¡†Þ«  ¢(ŠŠØ_¬€"6ì퇢 ¢"RJj !½÷ëuw~\.•¤Ìç½ï6³3óÌÌî~÷™ggxä˜; 4s&hµ=°HŒ@ ˆ0"\õÄÆBFz≞ÙÄoD "Œu…xãFÉ`ãFøæ›e:‰1"F„&„†âo¿´`œ:Õsì&¾"@ aDhŽ{ï…§ž‹Íšjuϱ›Ä#B3à>‚øxÈÊB=÷É߈@ Dš àÍ›A¥‚;à³Ïz‚Å$ƈ@ ݆4ÁMÁϯ[‡¦OG¯¾Šû÷‡!Cº·¹v_QEÝ•Y/|L@¸•ŒèF[>´Ž4ËÍ`ÏOat«˜:.„>B³gãÔTpqéÞæÚcŒª««IÏw'f¿öÐ5ü¹^$MA º%w-9b*¿¼ë›™DÝ ðûï£cÇ ) =ü0þë/ ºùÄ%ñu?UôôüÇ ¸Ê@Zƒ@ ´B¥Ú`c¹6&fhÊY!î$9̹# aÒëêµF7†Á¿þŠâãáŸàƒ`Ñ¢îjh½¯ˆ¨¢n¦Š +ô¤)ÂuUQ•F1e_Ó÷ê?†ã°£²¹9”Õ aô“žØb×FDÝd||ð† hÂôæ›xÀ;¶[ZI|EÝ¡k8à&UŠÁ‹— ˜Å ØNíw Ë È RÒ€B¡Jc¬¨Ñ¥§î3iF¸ïõm¹œ_½o×ÖˆøÑ ’‹:Iõ'="Œn £GâEðî»hΜš ^^ÝÒJcÔ˜õÂÇ÷Ï}*¯LÛTyòòú÷é×ʾ‰G“J!È‚d]Îê“GNTÙ8eXì/Q·ïâÎol£ö¨ÞéZ˜­¶ôÔýÃÇMw–‹*Ô¦ë¦w–‹"âG§§îï?|2‡q'ÉA%E…hF·¼t):v þý=ø Þ»hº[šIüFÝmÜ6Y„Ë“É2p8a(ŠBˆ²ÃqÇqÛÿË:bï‹yýº–±©I'^\2£·ˆNߺkyQ`ÏŽ¹ú–¥œL3ØøÒðñN]ר›gÅ•c)¹f¶á6j܈jHe»áÞq,!Š/:¹¸Dyñ9Ä;„ê Õhëõ ÕV•ãp{w´we£vîKje¯)c†\7‡úL7Ýâ˜F·77üË/hÜ8xÿ}HH€‰‰¯ˆÐÉášœ/XŽ¥(Úl68X ‰b†a̳Ùb²X̃þì¹4«ÍÊr×ÕÖ|ÿî»[1 ¤ &ä0NMNQ³Xá¤.(¬ÒÓBYHd¨ÒRq>³Hkæ¤J—˜^~ûé³Eyye5³æ T®ná ‚<£-¢.‹îò¿‡aðþ"Ä5›N=YmãäAáJMaQ•^îã%jzT—dV茌h@ WzD‡¸Ø«QœŸŸ_Zm0[âIe²ø˜Ô\¶Ñýú62¶.M¨B]R\­Zàéê%hÞ KYaóuh—msw¤e7PFÆ-µyKEp¬± ÂÂJvhï§î÷òRòÍzýéÓ™k\Z5.™9BÊ€ÂkضóÿÎòø}‡5NÛ'ìüñ“ÿ[2£·ˆ¾ò×á 'D:WÛ÷ZªÇ€ ‰c=k 3 ®¾oL‹pÑ[Y­½’yõÇãQANOŸNˆybÖ '!¶˜sòËßßœºš¦Ù.ØYõÖ›3ë¥r.ØÓdìHJ2`t¸ ™uûþMÙ˜e—]mÖ eߘfê|ƒ«µé«Òæ~”Q'eЈ„øFÝÑh¥̱ͶylŸ0¦-aT_~þ“,Ù_4c¢Œq÷5oÏ?}ôJsmî*®Éî?"î™XO/ßbÐ_¼”÷ÃÎ *_¦TÐwÛ w³¾à¾å—DlõŠ·ïöåQ¿.ß’(â‰û ßöœRWqú¡OÏ…ô m©ƒš­s»¾›zŒÚƒcšëæðÅKÓžûp{#¥ÕlDÝ>^{ Nœ€íÛÑý÷ãC‡€Ï'~#B—óéuz“ÉX^Qváâ…KéM&Ã0½zE"éuz†aº¢Ç· F²M‰ÝÝŸjˆ‘ï"2³ ÄE†-™»äŒÞ]eÀ½çEJX«þô¥b·@áÃûDy¤ÍûÑXV\SàìÉC¬U—SfµŸ†Ï×4ñüÍEõò³–Ô9Šàll}¶úb™ô·'"p—.Öp´·‡sÿhçÿÎÎ1æ ¼wâc‘PWª+¬LHˆ¯^,¦©æ²m`l½¹!“„Y…çrtƒBåS§±}³m«@ÔÔ $öý`F3uà‚œ ˜kW DQèºÊ¾'×ð/Ž5´ÿÌ»Öl›Ïß\4$Ú³¥"0¶"Ä™F`Ö©)ž››iskEư9“cÌåÕ8y(û÷ï,{ìÓ4–Ép狽ÝñÑJ¡—/€ø(ñŸÇõ 1(I)£ù.Í6Nž1¯¥:·Ðõ¸«Dušä’ôÐ_㟚öL€È½··qo~ßçãH Æðé‡ÿ®±ñDn›ßå;B˜±míþÌÓ_wèÊO/ü²R"ÂV¾ß¼æc7¯+£ÊÞ9T ´À5(Ú¥âxJUí­-Ï).x¢@ Y_øþú£zŽBÀ)ܼâÃøgsý>”À¹¾‘X#æq”Dvé|f“lƒe¨¢YcµåçŸ[—%Âæ¬wÎvç»;àç/uÿ¬ÛŸùÂ5+ÄB‰û4­Cÿ(†Ž-†üSç+ë+ß/Ö¿‘6ªO-QÅnz/¶Î{tæ¡ÏJ¥-ªVÀlu­ù6Æn.²¸¹ó¨æŠˆÛ¶"ÎþÝb¬údm~DdTþ™üÆãì‚øþ‡‰àÀú]_ešrß_ö«|Ÿö:õIn~¡u€7šæÄl–@¹ {ôw6'ëïP0š¦ç‹B›é pAZv‹un®ëƒûú‰ºÊAÔá1FõŒ6°þû¾Äã-ø{šÏa̰õÚ¨^6°Q$ƨ³ˆ¼a>>þ†3ˆ¯ˆÐ9±XÙÆ>$ŽµÚ¬:½~ã¦-íÅç X–kºo§w9^z¯U¾øÄe³³‹¹¸Àþ9Xâå.ºše†ň1§—zÄÚï;¾>s¡C†Ãœy'¬Ök§Z¡w˜Oy.ëßRâÄ‚Z÷EqjZ™<¸¿ÄjÌ?_è¿é½Ñöí&mÖý+®ð©Œj6ÐIâ»þ]ïêjmv~ÅÁä‹5”Ô3Þžì³Ä²¸¸XB6“–ãIêíªÏsøRQcëÓ”ž*”xâ¼iúÙãùB¹?k>¬ÐŽVDGòÓÎ7S‡,ƒÒ‡¹Ön6Sþ¥"ÿMïr¨|Ö€8¿:»…(#Œ¹FÝÑà§©Zêѯ¥fü\gq’òša1B4ÏÇYÌ©fOð|ó`¯Iã˜Õ™y¢PûÆÒõ±}â.Ÿ>sÉßKHô–PùÖ­Öç<‘}$Þî Öª]M/ Ji%0gÝ®amLsTMI=âÛÞõ˜ÃV–ƒ.r ÕÇ÷èM–öîh?Q´”C³:n¼n­ìÛ("Œn7à+Ðÿþ‡æÍÃqqÔ l"1FÝæ¦Ò8›Õ2$a¨T*o|m2?*à XŽåºžÇ7ë*3«YŠÏgM¶ZéÀb0Ôº$PýNã­‡Ò³+ç+%PѬöj61Jíß eVFDqC3á2LD ïùϧö‹ðTxº+âc}cü^Y¶­Êïšc×ö n.ÛÆÖ›Aó(–ÃÇQ|Ô¼»#aD °¹:ü¥‰ì%­‹ÆmQõ^¢Ù+.×ÖAàã–~º¨Ù‚ÃìX³ÍèD£fK1ª/?ÿÉU>Ã¹Ç ÿb–{XÿÁ;6e5iÜp@4ò%Ð"^úQ-Ì¸ÆºŽ Õi¹ÉÞt˜Çø˜@0j2Œ´kL j¶ƒ*}Ú×õ]ÈçÊ«›®e9RRÓZIÜ?>hŠŠBV–kšƒã §iö×Í!%5­Q·=ÞÈ^¦9aÔ xáHJ‚-[ÐÌ™89DÝaÉ2â7êf4ó¸>ËZmVµZ“‘™¡*bcûB]ðuNvŽŸ¯¯Z­±Ú¬Ëuí©4ÜæŸˆ§+Éð@Ï]ÞZ<„­V[XtˆÑ„dtí³ñ÷™ 2‹VÜbb¦Á0Æß;Ü3wú«©öÍOÕ7ÚÝÌš¥êÜ •`–£~x÷.%Í%¡~,Îð€ç‡¸.Mº$b0’8…y:tC]¶­ëÙ?¤^ÆôÓ}¤`ÒäQ<% rG+.]–*›«üae%uLM+ßÛ·ñƒ÷ŽšCàÕ7Úµù×ðbä­´¹JFá†F7ÖuuÓyž Ê´âFC •úìÚ–œ.þêÜ¡* R@@ÎY½ÈMYq)ÀE¬ŒA39Iš<+€ÇìqJ(?_ÈWÈY>ÕlýPÒŽ®ïZ‡ j2ÕÚ3e»ŒAuÓX¨…©´f5V[rH=}¶¾ŽÁ×vmß§wÓˆ0êçÞï¿GçÏÃٳ襗ðW_ui[HŒQF,ÇÙl6Zc³Z+*Ë÷ìýÇ|Íãñ'M˜ÄqœF­±X,,×õbŒp;”‘#|”·îrô#áâž™Üûr™?_W/)=wÑﮮªK&ðJ]ûúLÞX±lÝ™–ãÆm€â{õë{m­|ÎZ‘‘'ùíÍ»ò *‹j̹RI#ŒÙ£NFç~©×c‘’ØÉ£~PSacÜ¥÷½¾QÐ ¬§6ÛÆeÕ«ÆÿÇ×ݪ@ä)£`ÿ–lÿ@ž¦¦‘oÿ®k¶JºÁ5¦Qå[×dõuk¶;úmä.(³¥fT¸¸RÍ!R„þb }* ¬¦Ê#&Œ*€'g|áÇ+Q‡‰G?49¤H­òP"†êü¯‹øá½\Ïg_¬f㜜OÓÛ ê2Û@71—Nè$N‚Œ\i ”×®®ïBÔ±ö?SuBÍüµ%uÕö쪨OlŒýK}†Íæ@„Qç@&Ã7¢Aƒ`õj4æÌ!¾"B'FÐŒÇÈjUk42™L( …ÂÈÈH¡@&“Q«Óª5‹ÅÜ%gÒÚ¬‹™æqxÃðޓã¼"ýµ–”Uî:Q$põ»Ër“' è/ ðQY &+HZJl+/q,±ùDbOw8½"Ì[Ù߇Oa®¸¨lÏþÔ"·`'þ‘{ Cc§öõòuVŠ-欫ù© šëdë°%gß¡“>½îè-6ê´ûöŸÜ uôáa‘oqC+XKAóu P»ú_o¼µÔ­´9ÕèI´úë-òsaŒMFcVvñ¦ç¼ÂCÊÒ/4mˆ¿ì1Š›çéí©´ )sÜ‘éBrçÁÕÖG]øsÛÕ¬;ŸÚVc}Ü…1·µÒæî*F-vï?u}—ðÕU½ée×Î! W!ª[·ºƒsˆímÏ!¶wtK[å@„Q§!&ò zê)ôÌ38>zõ꺦£á1b9>Ÿ¯Q«7lø­¥½Ì ÛÕžJ³êJõxð(0«mˆ‡Bc¢ß~{³žÅß°p7çT9ýÕíJ#éCÓw™(Fí‹‚ÓÏ^MwêÊþ}©f+KÑ<©\é,¤cìÙ+õóíÛÌ,ŠŽâ#tæóíÓí?{Gñ)äã -wPðw}§ö¡z2DG·v!s júLYGåPŸ‰câ¦[€<•ÖI™?Ž…Ÿ~B³fáãÇA,&~#B'¡ÙuŒø|Á’Åoò†axÇÙl6kµÕÁ²,®{wZ—QEú25íöÚãýÜ„1÷WžÅ5ˆæ0ŽºÖŒ*.VUÿSèçáØD”ÊÝKåîÕHWr€þ!¡ ›´ÅÄÁŽ%¶xù5Y¶.=rr÷rro0{…[ÈÖq£ca<'ï^!‚ÆéZZ®CûðìÕ˳…ÝU»‰-·y E4[áÚœröðvöhÞ@—ˆH‡~¶ÚAÿ­ë;·Ç¨¤J×öÇõ˪´ÐdÝêÛ›Fì¾üË/QJ \¼ˆæÏÇ?ÿÜM 1F=ÅcüM›7b{€hÝ?×¾ÛãW0Æ´  Ýõ²fç3 HjÐhvï9vEé@A_‡é¿õzµpC˜¬ì¸)3÷îÜâ1X©^7}ZW~tÜ”™&k­k¹3ä@„Q'C"Á[·¢þýaÃ=}”øŠãÙxK‰hp›wî2fò•²Ò£w¾f y•›·¿³¨§ ƒ ^½V¼³EÇb±wHˆJ@t¡]è &±?fÒŒ}»¶´m—1“f˜-6CݪB!"Œ:aaø›oРgŸÅ}ú@Ÿ>]ÎcÔ-}=ÄR¾2 FÙã¬v$02²'›Oøèf•B2õÎYmLo¶ÚôFsgËê–#¨Ópß}pð ¬YƒfÍÂ)) Pt9 ˆßˆ#Ð3©¬Ñuõêm#¨3]‡>ý< §O£ùóñÆ]¨æ$ƨ›!«øsw"iÐÓN}ûˆ0ê\…xãFÔ¯lÞ _~ Ï>ÛU*N|EÝm+fUUVñ„îŽÝWTX¿æÛƒ@‘é\ã´p!=Ú…*n1"H „. FiÓà…ÀfC÷ß••]¨âv¿é@@ t]ÈTZg¯XRR 9Í‹·o„:y…IŒQwd*@ tkPË,ñuJx<üë¯àì ÿ «Vuþú_@ ºDuV|}ñ?BhÉHìÏ‘#@ aD¸™L𝾠,‹fÍ‚’’Î__â7ê–àvòI|èä3š~¿eD{{½Ÿ§¹¥ß뺯õšþGv÷(… †žF]êšôÎ;0f ”–¢–í´õ¬÷‘£ÅÖ¡‘ž^õŸ; ×ÔcCd· 8O¯)?e¶’Þ±&ô ½cãÕö–øÝ˜¨˜i¿7Úxrш€˜oª¥-a*K}oÁÜÁ±½|¼}‚ÂûL{๟÷_¾Íwï3ïå™Ùž9ªcï:à¸åÈÜaƒ~ Ç{Ï_wr…ׯG}ûÂÁƒðî»°tigöUÔ]=F-ÿ T1ïoü¨_íh¥ÅãqK—sÜ«_JÚ°8{û6›¹ý.б&øº¶4ÇÔ÷F/™ùF®i†Ÿ€®ËÚºä÷ìØ¥ß7céMÆXºwl£†Ø»}ðMd€«M_y1õÈ–¥÷>0êLG5¯sìÊ?¾ÀUå¦-}bá 〔ïÇþWãÍk ³…»Y¥àf‡J "ïßí6^ÒwwüË/@Qèw`ÏžN[McÔ3áIü£££ìŸ^‘ðYÿð©Í9r0güñ§Æ„yùžøà¦³Uÿ±¸èè¨ '>°–ü7¹#ØÏ7¼ï˜vdÕ'®¯É¿Sb?+Ö§,æéåí<¾íŹõ{×—Ñ¿þoaý–šŒgôÔ{3üYÚ¬u•çž÷ ¿Ïž øÈ\O/ï7®ªí‰£}}¾(nßë ¾žõB…Ï#Ç·|~ÏÄ¡Ñáqñ ³ç¿²åPŠý¯œ¥dåó÷E‡ú{û‡OšóòµåFn”EÞ¡!!¡!aÇÜóö¿ªSG[ϼ-…îxタ軒+L°(.dÚïÇ–=vGH€_ï!3¶d¨5Wÿ~`ü ߀á3ÿWï º¼z飸úø‡ÇÍ~ñ“*›]Á¢¸)ë·½pïØðÐÀéß_i©”ó??°·—O`DÜôGÞë`ÕÔ†a¼(.dò[Ÿ™9¦oŸ˜Èþã?Û•CND:š‘#áõ×côÈ#PZÚi«IbŒ­°çåI+Ž>X¿3õøÅwº.¸c⣭Cr^?gú†Ë>ë÷&í߸<{Õ,5Ûø®}ìδ<%ý?M,.*,¸ÚŽ» DËWŒ÷9ñö¯õ[¿ñ‡SÔQb^[¬S„Ç´·—~yíåŒìM7[ŠUfò‹_Nyã»”´3‡w¬Ÿ;Êÿ¶ ã³o/ýÖï§NŸÛóñ]>>î¯ 9aDè`ðÒ¥0j””ÀtÂê‘£î<öZ Y,=ö€§—·ý3éÛôº¹ǘFŒ1¶™ržü-ãà ËGƆxxúOyâãGœªßöϧ…Z‹þâkKžØð騘 Ÿà>oüô±`Ëç…Úö7ï_?_?¿>czNÝúþ@ŒqK™·V(æØ_^úÊNéŸê«àÕáýñË÷  {è­×ÍU»|¿úxÊÀ^Á‘ƒ–¼]¸s§=UÔKÏMëåá;rùÚ;sÿø¢~w¯áŸÎêç‹1–ʘfK±ê/Z‘hêè>.Î>ÁÑwÎyàq ³»wàëã†ÃÞ=áãÑ*Œ±ÏÐ'ß æ­Xyž8w¡àkcÔE i¼u+lÚ3ftZ_QE=UÌ{¿Õýˆ=ZJf¬üÓ„á±è`ǽ/ªa¤× nSÙßPùÊí[dÞóà­4PæóÔxŪ÷ÖeŽXЫäÈâjÚ÷Ýx×¶[7'Þå•5Öèò Ϋû¿ôQñ$-ûbÊÙ¾wŽº!‘ZûEärï¾G°Ö’qä0˜ªÿæ¬çËú ò’/©xIÛ•¿sì|>tåYkßxqʼïÿøxK™?ÑZ¡?¿ûµB¿Ý§¾”4ð®yN ª½öˆÂ`‚íî²Pk)°/?ñÛÿÞ^}ô|–ÁÊbÜêw÷ïë˜[ÓRD.w?»bDìÐ1F:rÆŒ±Î<꿌j8³tÎ;EíÆ^“ë¿Ç&¸–º ON]"Œºr9<öX§­=ÆÈ¾þ5¡çÀ“øGGEµáŠn€Ó9yî<ªc‹Ó øõ¹"¿£ýà¯<1ùÿVÀ‚7/Mò™ðrµÝºð'z•=ñ«:I}Ÿ ýgª,ß•h·f©ÇÜÛ¾)b‚wþÍÕÍtÅ8ED8±fqÃT¨•_mºˆ¼BBBBBÞý~ND²£š¹Ñ×ɼùí£îª\óÝú²ßŸæøwЇ“òwÄ8kùä{_éýê7‰?÷PJtù+"†üvmwAƒn¦Ä[¹ã䃇wï?’ô×gϰ"îèñ_ÝÚ9ê 3µŒßÞaÌ:<ÐÇöȇûº4d*ÐÁ~#ÒÝŒÖиéß¡™ïBÕt>ÀÊ”òÿèïnZœ@9mG¥±vÊ©zžƒ¦5áQÀÙ¸+6ø¡%6õ¾O/î_yUóð’¾í²Î)êQsÕö¾88{ÆøÞÁnÛÖ}}ÕL?é#iWhaè‚Pùÿ}iášL`,tšL|—£¶o´hRNè¬ áòÿÖ¼…fkK™·R(`PÅÌÙûë«›L\þO®Cƒ5(–hl¦ê½…VîÓÇ'x(Ä€qyʉkó¡vo¡ tÌðÉ/,zTù‘/Û?¥Øx˜ÕU´µaìh†ü-§êî9\æ:$ŒLW‘uŒ= cD¸Ž+Bü÷…þþðƒë÷¤–”\½²vÕKÛ*Û‘jÓç]p ³ÐÀG¾à¶ìÅïµ,ƬK›u”Dz‹ w.®¨¬®Ö´·P¾|ðÿdŸÏ}’QŒ{Ò[Ú.ëøò¡ñRzñ®‚ Ó| x^Ì•o¿»=pž³§7|䔿nð½/nÞ“táò•ó§Žþðé*ÓˆE,éñÍì…‡Îg\=ýÎË|f<ÛÎy4`E™™™™™™iÇþ}ã±õ<ùÀ)*QK™_·P!OýûÝ“ßÎÿÕ‘Òö´v‚”‚/€¡èø‚Åç[Oߨ}éº÷¿Ý|>3¿¢¢ôÄß?é9j˜Bp뇱:ïÍ÷7%•”•ì^óÂ×Ŷ…/õ"'®t¾"M@è(_QE„V˜¸r×*Å_½>÷õR­ÄÙ«o˜7Dt{3©:·xü„k?îÙ’ôÉ€‡×oÍ~â™þ±ß©ÊQ}âòo3ãpÈ'oxÏyg@Ü›H•—ñO{Ëõv‡íîýúË7`ÝáÊù§ÍºKÀ)ü `wºšv (ö˜¸/yóÇË¿úøÕ' *´™sT¿a®?p¿‡f¯û«è¥Ÿ1ªÚ"Œ6mã?ïÒí/¢2íÕ#hÕy`¼lÛþ‡âœÛRZà¿ãÓgæ=7~#O)w~âëûSþ³õ]K¹×Ï-ã߯güj¥žu ˆùßç»Æ*·~÷^´ºúe ÓÞ;ÝUDÎ]åe¥ðÑÚ­ðÞËóI£®ËâUßÚ‡ŠcP‘cŒ‘}NH¥.ÊÒ%‹>ÿêÿª*+Àl6“!ÚqzìžþÖž-ÓüIStä¯ùöÛ¯VK¾~M7äçÝÊânj‰­z³ËmWM:¤2ÇÒN8ª{fSôdˆ0"tõ¾"¢Šz·ø"q[®IçBx³kB.ù¤Dõ6nþE&“Aý£08¾<ªþIŽã***SNœüvõw7P ñucÈ럄vñnj:9pˆ0"tRÖÿºîž™÷ Âf.vP÷^M0š åeáá¿múù¾{¼²È:F@ ˆЩ‘Éd¾Àh2pÇqŒ9À˜ÃÀaûÿ0ÇaÌqÃ0r¹""<ÜÝÝí÷-¿mß¶ýçŸ~moqÄoÔ-!7¾¡GAÖ1êÎpgÿ—ã8Œ1æ0ƒýW»‡ƒÅbÑé´R‰\åäÒ·OŸéwN[øÒ‚¶DÖ1"B÷€xŒº3,['Œ0µk³ÂµX#@aŒ \\RàÀrlß¾}­Vë=³îÞ´qs[ "¾¢nLNöUÒ¡Ù+š£žDZ`w9£zyT¯ Š2™ H!SX,¦øøx‹ÙÒö²HŒQweȰ‘¤B7ƾfF=DqÀ9¼ÌÀþÂ!¨}'P­6 ¢i! Åb‘Õ§oßo¿ûzþ¼§ÛXñuK =iÐs ¨;cŸJØÃ\íkkÿW‡ƒ. (”vî´N§7™Lr…Â××W$·¥ ²Ž@ ˆ0"tvê¦Ò°ƒ$B€Ao²îOÉÍ,¨©RRÊõsïCÓ4BMQã‚_×ç _øø£ÏZ/ˆøŠ@„¡Ó #¶výFŒÕº‡ð±³y?ïL{hÚÀ¡}C<%W‹Ôy•™¹% Wízlf߸0wVåd±X´mUUÕ ƒ‚CƒÛR‰1ê¶Çõ F„n"Œ0õK\#€ýG/?›óÁÿ¦óù´Vo>“ž_Xc)¯ÑOJ½oBìßìÔL#ú‡ø™Tæåå%‰QÝDÛu!~£î©‹H„žYǨ[ #–­½²! ʪu?þ‘¼ä©©R!m6èT®~þ~J¹$À™A`s’òÞ~~úW¿RkMTÀµÁa@Ö1"F„ÎËqu#k6&½Ÿ‹ø%Uz³ÑᯒW8_RTiúrÓjïØ1¯Þ?ÀÍI|5;1ÞN21ŸÇÔ» X޽nAÄWDhùâwtäðÑ<ÿò•‹—/_ŒíÝ·'®ÓéD"¡R©´ÙleeåÎÎ*†!'[GÝ ;z,iìèñ2™ÜÅÙu箿†)—ɻ˰7Ð¥pvAMžèÅ´Z^o Ú¨3CbŒº3vMƒE!„êés5§˜BP\\àâ$"»˜™îÈ_'wo8pøXQQžÑÆ/©Ô÷ñGÈá©4¶M.cDhzñK>ž,ËÊdRD!½Þ@FB§…ÜÄtgì#D!À!ô샣ï_¸fá¼)®ù¹©wË**)\“õ×ÖßÂüæ{yÇ®ùjû–ÏŸª} c€¶_ñuWn(ÆH§×%K?v¢H$Öé4 Ã+((ðòðè!K|†g4¾ÍÊ2 ãéî^T\ìæêJüF:6éè‘ñã&‰ÅNCQ´N§‘JåÓï¸kóÖß'Œ P(»°*2( I%Öf+-.ÎÍÊj”À?0ÐÝËK&‘èô:½^/¿Qg„xŒºµ0â8@€ìøx¨ž™=rËßÇ|=½8à]ʪtB8šœ”“•ùÏž¤5¿ï{aÎh7%EQv§°øúSid#BӋ߸1×TQIiIÊ©a‘=¤¤2YUuµÉlFÙl6š¦==rpÌȱ ¹¢G5Ã0®®®•••f³ !dµZ†ñòò.))±Z­=p`>rpÒø©õ£¸¤ø`âÁ¡C†í?¸¿°¨¦µºZ"‘ξïÁ?¶m­ª®êZš-f‰DʲlYIIAN®ÏGµï©¬ÅþÐ4]›[RTd³Ye2™Ñh$çNwð’&èγµº¨îÿ<? ðÑÀ GÌá²òŠÀ€•vWllìîÝ»Ç'‹}ô‰DR÷¸>ÛÆâHŒQE‰I'M˜*qPE‡Ž?fÃðŽOÊÍÍõñö‰‹í+•Jµ:íÉ“'2³® è?¨‹>‘IJ¬Á`°?–/‘HhšfYV«ÓšŒ&¡P(•JÝÜ\KKKU*g¡Ph±Xx<ž··wAA¾§§Çë!CoÐJ<0uÒôz'bqIñÁÃ&Œ›¨T(rÅ_;·1ÚËË«²²\¥r™óàÃk×}7ëžYJeWº×B0Æ9W¯ŠD"„® §«WEPû~&LST~NŽ«»;M&ë„u>ˆÇ¨{{Œ¸º#êü…µ¾C@Ó”B.µŸÜíKA0`çÎË–-ûå×_uz½ý-im\ǨÞoDš½»q[>:öpâÁIã§JÄÒú‹ßÃÆ¯+Τ ~ì‘ùÁÁ¡'SSã”ÇCCÃ<÷¿ð°È£ÉIm,¥³}ôzP ðpw :­0Öj4b¡ÐÛËK$j5†fÜ\Ý*ÊËF°˜M Mûx{X-–.ju{?—/_š0n’X,Öj54Í8¸oÂØ J¹0V*”S'ݱ÷ß=yùy WZV$•Jœ=çÐáC]ËLÌÕ~Ac–Ň9îÚŒë¿Ô¥çcŽe{È0èÔ"Œz0â8húP‘}$Øÿ‹1Øl6¶Î-4tèÐ-[¶,z}Ñ–Í[ z=Ƙmà ‰1"K9,K4šŠ¢)ŠÞ½w× ~ƒ” %ääf…7W·Ì¬ ȸša4<=<Ó¯¤wQ«Í&³P(dY–axö9£Ñ(‰Y–åóùƒx<žJ¥*))±?Ó`2™†'“I‹‹KzÈØÈ+ÈuRª´Z EQ…E…˜8n"Ã0G’×ÿúÓ¡Ã3ýŽ;wïù'?/Ï”••*œrr³ºàM„ýÝ”˜«“An 8x’ì‰ÈÙƒxŒ·»Ü©»=i‡9l÷ ±,k³Ùê×Y;v쯿þúÒK/mÿë/ƒÁÀÙÚ4•FbŒº­Ã¨mŸñ/¥_ºš•IÓ´Ñhàñ˜î{(éhbUM5ðöö9u:U­®9tø€¿oð<~âXuuõžw…tјMŸ¯Õél¬­F]# 1€@(Ôh5V›­²ªJ a‹ÕZQYáï€(Êj³Q4U£Qר5ž=$²ÕËÃçÒ¥ ,Ëæåå8´âø‰ ¥SêéÔ à'ç?v<帓J5sÆ=ÿìÞ•~9ãØÝ»ÿ ìz£‚Œ8Œ9ŒYŒ¹&Œ1ÀákÉ8“Øg|M¸u F­V#“Èd™T"“ˆ¥b‘D$‹„"¡@$|A½Çˆuˆ%š2eÊš5k¼°`ÇŽ:ƒ®³àÄoÔ“‘Éd£GŽIL:\PTÀ0Lii±D"¾÷žû·ïØV]]Õ·O|~AÞ¯µ±ì€`ÐÀA¹¹9߯[c³Ú† ÚE­–H¤f³¹¬¬H¥2Éä&“¹¤¤r¥Õj-**òññeÆ`0Ð4m0ËËÊ}||zNŒQtTt^~Þæ?6ff]:iª=r(;;+4$Ìh4x¸{dff€³Êyöý•¬]÷½Ñh1|d×òÕ{ƒpŸ¨î?µ¿í%ÜÀc„‰Ç¨B‚¯»3ôÙ‚Ÿã øµ‡«Ã?ö-Vk½Çˆ¦iš¦ë »çž{ŒFã¼yóœTÊW™jº¾}ä]iÝÚeÔÖàP…L>~Ì„¿ÿÙ1$a¨‡‡GaQ¾—§ÏìûüiýÚ»¦Í3r̘‘cêó”Ëä“'NžpØþÒn߀€Â¼<û[˜ £:U„1ööósGýñÇkÙ²½i•‘ýzób°¢ é¿3rìo±# ¹|ó•&ù•;&€ÕûʯS³± óìÊç§’ÁÐyo…Û¿‹ÒÉéÎi3ß²qİžžž—¯\ ˜6í®}÷ϼëîžÐhUÕÕ^Þ>4CktZ>o0ËËËüüüx|>™5±£Ñ¨“’“._I 6tX—~EÈärµZ]US­+T®®ÆÅ¨aü]¹{y9¹8#Šª¨¬dÚÙÅ… ‰Î ¾¾=L|ðå囯E ¼ª¨ž‚‚‚;î˜&óqö üâ‹/Á Ï?>yÆÀI„b)O tTE_ Џz_ù¬§ß&£¢³*£YDåätÏŒ{öíÛ[PP •É.g\ …W33{Ȳ(ZV( Æò²R?ߺ¸"òÁ0>’”ýÆâ·¢£{8t X¤ËÆÕÕU4M©\=}¼YÖfsøpëæå¡rqFª¬¬ )äêâBFYLjPˈ;ï<•¹÷ÞY.1ƒ&Î~çŸ~ö¹Z­^°`AiÞå¢ì ¬Õrkê0jæSdTtl6[EE…F­‰ïÓ箿333$YÚÙ3žžõ Ct¬XñÁ+Ú¾ý&ËHl±X„BAUUEQƒ¾´¤Tåì̲¬Åb¹eËgf\ɾšÙöí·žKééQ½¢Fƒ¯ÏÅ‹ºÇÈwrr¢ªªª¢)ÚÉŹW\l¯ØÚOdl•³ ¢PeE%…››9WtÎߣžK¤ûùà1pà„¼ƒzEt÷üòË/e2YlllnzªÕbjéTž0)dNPGFK¼òÙÒ)ݽ^o0´Z­Íf 9vôØ×_qåjxX„Á`Ðß„7Н\µªÑIðƒ+V®\uëmgY–ã8±X\]U“SYY%“Ic›ÍÆqÛæìüG(Šºr9=7;«‘*ºšq…Çç·/x³1›ÍÅÅÅînî‰GUVUlÛ¾ÍÓÝ«¸¸Øl6w}ï*–Éd€qUU…(Ã0 C34MÓöÿ‚ÊŠ ÈÙÙ™¼ ¤Óþ$ƨçRV¨1ëaÔÝÏ„÷®r÷Jä€ñð;ŸX¹ê¹ý;aø]ÃÆGj~ɳ6»;h;òy ïàhÒ)Ý…B!—ËÝÜÝÍ&“ÉldD3ŒP …>¿•unŒ×^}V®\e2›–,^ ï½÷þgŸþÊË/¿öÚ«·Øv†a†áóùR©”eY `o(EQ7i>ºY‚‚C(ŠJ¿t‘eÙÀà`ȸ|%;+3*¦wHh¸Ét;_\ª×ëu:½·§ORRÒ¶í:99GGFëtz@ ºî°·?Øk—Ŧ¨¨×½_ îEi0……Rβ,ÆØ¾H 9ct¶ÃŸ£ CAæÙ2ŽEC¦Ì¥(Šá×Fù…÷ùìªÌ³É£g ˆŒŠÅi›Í!ólYÇzä" é—nBH(Å­=9þøãO V«o‹*rtØPu{3ApùÒÅÜœŒ±Õjé ªT*•\.÷ôôˆŠŠ²Ù¬ ËEB¡ðö6×Ç.Y–E©T*Žãêßb?"Bö²K¢¿IèáÚ¨£"Œn?ã§„¸/,òr‰óZ ¦ýÉ…™X<} «¿‚©©Ôl:RZ“¿Ï¼XnÕö¢ºËõäÁY²öÔ°î.“#nbšµÚJ*4?'WØô‰r u ½Þœv¦èp‰mü”K¥•>ª0'~ե܌`¿ ôÜŸ®"„Є©¡éeÕ>N¾š›èŸxbÀÉ[ÄĨ‘J!êðz`mæ•æ:V;aRHðå¼õY–6š@3ÂÇïðÍOÉÙY`×`¯Gb˜ïþʯb‰?¹SÓá!A7‰—.ä8îÃ?²饅]¥æ7_?Œñ•ôKÓ;(8T§Óv’º …B¡PØGZ[R=LäôÒIÿF •£N{/¯Ü‹Å?œ³…DzMé‘oAgR‹þµR£†yߣ^sƤ.(cûôS)$*79¶ìW³#|(^•t,s¥…â1Þ®µ'šðx¿±^ì?Ç r56‰TèUwœzĸž9’¿³Ò*à¡ø`°ßÁØÿäãšz0ç¯VáæôÄ„XvÇÕô#É“Cü.äþœkùï&°6Ó†š'øœ)Í)£Å³c¥Ç³ˆ*"t ¯¼ü2†W^y™´†_?àñxAÁ¡ö—Úäð'£.€¡¦$1×§ÎVŒñ÷R¹z¹š€çÍDÉàŒ‰c-ÿVÙG SR '©É/²aà1¸ô“–Å`bÕZ3P4š??ußÕs5,hŒºâº‚´e%g+­`¶6V$Úò’ 5,¨Ëª÷iUãé§Lh¨ K÷—Íæ|…§0”*o«¢§rr˜Ó§Ù.47¼Ë$š99j#GTþDu%´EµÑÍœÍWôµAÍf ‡¨Ú>Ê8­›4Òw2‡¥ø£•ô¾d3XMš3ÕÎó¦\-Òç•.äé 0ƒà¨†m® Ûuë%嬨M`êX õhA¿iþ½9Óꓚ¶gÎùûóßxƒ¿k`…‚õ÷gÃÃÙˆ. € gÀ"ÏW-bµZI#Du%0×ÀÓp~©vîÓXS^!£ô …²hÎíÊÿ³?ûŒ»$ÈMá1<Ê´zWAí)_¿ ÅPÍï@@ “È)@ˆ§bÆÒæy4„ôŸ|¤¥QEEH­fΞeΞ­-W¥2¼öšyî\¢nÚè$Ó¡[Ó0ƈ\KºÒjOŽ5,N%,½T帽¤T—|®ìç=ÙX($¢lf­ Ã`EûžUú]›¢ qg åf»¾A7FÅÜ5Ü¥ðbþ®b<}¸K»žÇÀ..ºï¿‡çV0Ÿo\¼¸æôió£Ut‡ùùO·þ4‚\Nº¥—*%ÎnýEh_N­Wˆ/RŽ •»Ëxbãã­äεb޵lϳÄóŠvÊDŒ‡«4Þãú®AÄm¤¿X*dBC=‰PâE3”9¹·X& E| Ü{yÞ—àtÃõïëãnÑü–n:w¢@-UÞܾ5KlýûëßÿšÌ²X¿üÂ$&’A „Ž‚£®„ͬ=e£¦¢ÈV«q9Îæì©œ5:àù©Ó{IޤäeZ0\>™·?×6l Ï3“ï‰W‰ÛyÉùb‘Ÿë““ƒ¦„ ˽d—R®‘¨žžüÜd_àË„ÞN¼«¼Xå<ÝþûP¹ ÇZ7©Žõ ¶oó£Z¦M¬T²aaTNŽìÁe³gSÙÙdxt]^ë4ýÏÒ­pdßž,£´p 1F·Ÿ=;¯-”ȱÇ·Öë« ?üË1-rcPNŠÖA*é¶Ö5“)æRϧžm± HÞ•™ìð“c-»sw5"zíúÝ׊Ë?žýQýÐA€ëôY[L0TU®ØZY¿]WQñÁÖŠh.ý—_Ò—/£Š õ‘#‚M›Äo¾ÉÛ³G¹oŸéÑG‹a™ŒŒ¨¦å£­C#Ÿºª¶ÊÝŒ½ç£_óÐ7XJçf*=zà‚þZ¨2Å(GŽÐ*&T¹‚¡ªëŽ£G" žÞ¹÷¹^õ[Ö ÿ*bmêCº¨EœUyéJY•ÚÂ_ ’)œÂ£"…Ê:²¿&xP_O19yaD¸¹ˆø´³—«7eý¼üvß8"J!ô ÌªŽ|%ˆÙ¨p½þT,Öýô“lÊ (ó¬Y–ñãE+W ¿ÿ^¸f Û6ãÒ¥æ{ﲞì­Â9vÕ¶/pU¹gÞ|bá]Æ©kÇvu£øªþ#Ö½àñ aey› ÇaŠê€±×Qùn*—ާVñ<ú$ôs’ ­MI~O&£ : ¤*…Ъ6‘%‰0"ÜLæM ²¶)ùÆÛ}_Í)Ÿ§*,¬Ú¯ëÈþðêy€€¶¤dƒƒË–Í ƒœ Ë—[î¿_üÊ+ÌÉ“’gžüü³þƒب(2f:ÜꟑWHh@hØÛS?»ïp2†±¾zéK¿ýs.³‹]†Lyø«U T ˜3ü´üÕÕ÷ä”\"g¿óãkc= ÚñÞ¬g~5o8ô[‚‹ðvÙK12¹”Qk­ØRSmƘ3ç\:_T^må(™Ê#4*BΣàJâ>mP”¸4»B£g\¤–JÞˆñ`®:|ªÜ7aTˆ˜˜M:°ß7a”ŸÑç]¾\T¦3˜0ÅwróŒ ä!Ô(qà x?:óì¹¢J5âK}Ãb¯Û]w8Ù·¼|æÅ•Û¿:–Uf`<ŸzgÍ “:µ!¬ºÔd ;ÄOÌêtFŠ'ñ íͣ袇rL68¾ýŠ–5¨µ‘ØKTš£6˜YJèÖÛß•8™ˆ0"´‡/¶^¹y™7šek‹¡êƒ­ïÒ_ùÂÔ¶'6ÏšåøÓÖ»·f×.Áï¿‹Þ|“9zT1z´ù K–`•ŠŒœ[ƒ¾ôÒÚC%ÞcjÝE6ó3ïèa(½øñ³OM#!qù Øùâ„7v;}¸zã÷ò¬3§ ®5›ß¼ë¥í‚­I¿Ç+ù·ýº×è•ÅiÇóõòøáE\fÊ¡´“#"XŒ@—™2`ÈOWdSoÿóo¤Tàµ>OËHxÚ‘TÆ© ¹VÌ‹ññ¶V•élü€Þƒ=œ`Ö\:–˜–í5 Hhw½ÖçCÊ9´µXï4pÌ0'¾åü‘#lX4áì²¥m?ôuŒs~â׃ï”vþ—N¼š+%æ!T]PatgÌ,–µY-feÿÁÉÔ½'’`kÚž?[9ÚÌŒ°„‘Ýœ¬•—w<¦;ZAÇè }Kšà¶p`Ëÿ‘Fpdÿ¦¯þk™gÍRŸ8azüqÀXðÓOÊ…ß|Gš÷æQzì!_?_ßà¸1ÉžwüñÁ ûöèWžŸ”çãé7zùÚ;s·~6ÓÕ§~¿úè¦îçíá—0éÑ:wûË«S^Ù)ÝvxýmWE¦²ý›7ï8ðïžÿîIÍÓfuW*MÇû»J9–òéÃêsK„"{z¡GBˆŸ»U_£ÑÙ\ùô5æ!T¨¶Æ{ës x"Ú\QJ Cøgä°4(ÐÍUX‹ x±ž†‚« ¯Q>5•9iå¦C½UB+KÄù³¸ûÏ»'|zwŒ3ø{zY0oÅÊó¹¶ñúDúkÏíÿçÀáÓ§Ó®fçë,µ§–ÃÆVMEyYiYI^k#Çmp·³EWm¢]B%Tf)Tâ1ê±ìÙð <þÖzïàèžüVy³Q_yvÕ‚iOŽy«cîó ÃòåæÙ³%¯½Æ?.^¼˜ÿû+mññdÔÝh›¶|‹Á9vùŸ_ ]yÖÚ% &=º&å§ùP~bËËV'ŸÏ2X9@Œ`lªøÓ ð|¸¢iž>y²Ðoï鵑ÞmŽÂÆ bŒh±Bh©®¨*ÅÑÎBcU¹ÅÆH U®¥üùB/ kV›,6ð”ó3ÒÕ‚}%ËäwÕð7ÇVçD>¾˜ÕcŒ-5…gSrk´–À(-€¦Ú1ÖRŠE)…†ÊR+‹)Æ“B¯Ó]d051áÚ¯Éõßã\˧îÔ‡­Ä3th@”U¯­©,/ÎÏ:™5d+Ÿv6xY²æ‘A¢š‰÷¼ÒûÕo“~î¡”èò?KøÍá^»™|@„Ñí>& üwœœjW}lƒºUØgÖRS/¿ #Ø´©vf%ω´÷ÿ:ËÅ6ÚRh±™jöZ¹ÏŸ˜è¡”@yJŠ=™ÀùNÀç—jšæãûоß^Ûôâ„÷ÿÉëkàbÖj³Ú?6S<7¡µØ am5jçâ8凱}wFæÇšsK2kD¾^«wwä^¹¨çP¤L`1ÚXk¹‰ÃƒûD9SeEiQf@¸a>Ïa®ÀlãìÅYËí+ctéÅ…‡yˆ‹÷¯ÿɱÚMåQnõÍž¿åTý_w.sÞ5LÜÅl2 "„X£M*ç#»Ê±ò·:r ¹€jó©¨2ó]dj²ò5¡›P]]mwuº‹ºXl|õUub¢uäH¤V‹/–Ëœ8Aº¬£° 323323ÏÛ»äÑŸxòASU"¾4Ÿ©“&Dþ¼$#=ˆÌ¦·năÄÕÃŽÍJË0lÉ‘Û;H%"‘ɨS+³M,GD wOAvjf®ÙüÄÎ"JMJ戈º{¸ZtééJcÎߣR…½BÆã8–5kÕf{GiJrr!å0|;G'©Ïr¬Q£+\Ò’ËkO¨[)fÚþÍ=ý߬_ 2…½X,ðù ÃYÌfƒN­Ö艈áKBŸãL©Éi…ž9wNÖ×kåd6K±³˜tª,-F¯¢‰H($¢ø¸Øe¿ýö󯿡ÅJ­­èuKBù¤R]D„±_?Ù7ß”Mœ(^³F3w®¹ID°Ñ§%ë ?,e†F™ÿeUJþ¾?CFrÊÓµL)IyY§ÊÐ=½ÓŽ>9»ðr8‹:3ÍvÇ•6‡æuû‰¢U)µªBÏ]fšî™ggVe¦©P—¯Œ1‚RðÚŽ1*”%0PµnjÕ*¶BþõëöaavC‡òâãq ÿÙ/|á«Ìü¢^ÃÁ×h1‚Òñ:1*”©sge›6’Å‹%‹‹¶mî߯ÿâ ݨQ$áhæMFñenÖ…ÛoÛÉܬÂ]A*=¾ÅÐbh7zm~ãK$ºˆå‰¦ŽN:¾CË–ÂÇq(à%P¥$fê0¨ÁÊ£×q£cTÿü£ZµŠ­X‘_?Å A¼¸8V#€ñƵdêÜYyâ„vòdN&îÛçФ‰tî\2ppŒž›uŒÑ½ œD¢9Ryú´¡_?F¯—ΟïТ…ðÀ·üÈb`&¾ð…/ ¾xñv£7±7-7ÖÛ[³d‰qÐ YDÿömÅÀ¦ÐPÍœ9¬ŸßÛšŒ02Ðbð<Þè1F…2µl©Ç†õðÐ,Y’½m›¥zu^b¢<<\Ñ«ÿÖ-œFO•ƒyŒJÎܬ™òÐ!ÍÂ…œ““ðøq‡Ö­eß|èÕ8 Œr¼=íFDDáóΜÑò Y,’eË7¯[‡YÞìŸî¨øïl×£•ç1F…᜵³g /¸pA.^½Z3w®¥Z5œoê1å8“Ñh2Yd\€ò…Çð"¡X,F0‚2WޝG+ s:Ù{öˆ£¢dS¦NžthÓF?t¨nÂN¡À¹ñÆ¥"N{ÿÞ½èèÓ©)©‹uP>ðù|7w·ÆšÖ¬]‡e-FPæÊë¨ €r)((899™)¶1ÁJÁÛu=ZI0ŒaÀet´þ“OˆaÄQQŽI–.%–Eݼæ, zÐʇ—÷þ3±~äû¢SQ“m/ „ÂgŽÄ÷?”Ž·j£â´³g+27nÌdeÉ&N´ïÐApîj LÅ]ypé`7g‡.=^Üù\ë"A©A»Q¡,5jdïØ¡^¾œõö\¹bߥ‹|øp&- 5óbÕ ê²²¼Ý×6²IÕžßÅ^” £.ûøšñM[´=töaJJ‚_¶Fð²aŒÑ30Œ±gOåéÓºqãH GE96n,Yº”ÊÑÕà›V®ÑópY”<«N`·µ÷lO«‡õílÿ’÷naÓª_œO™×¨jï¨ûeQrõ®½Û•ÎN•ÅF–PIöân¼=ÎïXàééíââ>¤O«×®Ôé< Á^6´•'“é""”ÇŽ™Ú´a”JÙĉ:¢£Q3Ï¥Ó·óF7÷x™Ÿh1<ú%ÁQÓ¥ìJî0eöÈfJ F¶T yµ{@D±×ÞÉJZ{ýÈÒ*ÕB8Ž;öxöŸùVo`¯Æ•ôwap°jÃÕªU¬ÿêUû®]åÇóRSËåβƤ9_ô«àãá:hÌÅ,cNFdµÎoìîîҨìý Dtó—É][5ðõöô ª1`äÂt3KDû;‡,JÐDhææîáU±=åíJ+ªüˆþ]×ì‹x¿KÕÊ5[ÎÛþð¿ìEúå9"Ÿ/îôm°8^ýUKÿʉhR½Ê½7œžñIϪAþu[½³éNvöý]tiT1°]¿1 9Í“êUîþצý:4ª_»f“Î?îy”¯ä "~îN¨˱º¿g~ѬNU¿ŠA-º}°áJê^7ßFº˜õSz¬Ú6j`hõªA}þ¸{¯¯ŸÛ¥YŠü*…Ôíóñ,Û!û{öÈ–u«ùU¨X¯E—y‡ ’o/ îuÁÍ+ô³^ðOŽÓfS&ÌiÞß,ô¼yíÆ)©s`“w¦=o9F€v£WÀÔ¹sNÏšH$ŽŠr°ö¬™Íål7ÿÜyÉqÉÏ[Žœýw}ÕžÞíG[!ö”Í IDAT«ïÙqâßÇüuñʹՋF[ÛL*—/f/;}þÒá ‘ÑKzLŒ&¢Ž{®ò–7Š<™š’œøè` Ë'¢KÓ&5÷ÇÍÛvÍi¹àÓ°£…ˆî­ óð©ÿ¼{qn~t¥ÏºµÛ~q¤¢ÑÇâããÞÞ““!~&í4z÷Á½Ãë&gÌç­8uÙ¾=«în2ó’­„+3¦·™º.úüå] z}ÿièÎ4}î’ ~bIŠÝÑmþ Ѭ?·GŸ:ôMO·1½ºÞÖ™ nd¡‹ålÕwS›ŽýýÆÍ{kß zzfj.uós—‰¿¹páÐÖ¿·ñ³¾¾kL×i«üáŸÓçNÿ1o¤­]¨ÐBŠÚë|›WÔg¼˜´GwÞ6™]„•ä Ÿú[¼Æ<ÿ»FP 0ÆèEþ¸‘JuÊãÇMíÛ3ÙÙ²‰Ú·œ>]~ŸöÆøC‰Ã×ÿؾv°_¥úÓÖü©‹Z¯6ëï}ºîî°h[×ÇÓ»Nó®wô&¢š_um^××˳rÝvsWö~¸iñ‹•o}ׯ۽k{QÕn3+ðÒW$i‰HâÒ¨Qç «Pè›.5¾ûNëÿ*ƒ§~£KÛåûã÷Ýš„Uk:ñëñ»vÚólú}Ÿ.DT¡ÅgS‚„ó\/¾ägk1< _wgÞêÙmêTòô®ØíßqÊüöLJþæÉbónùCÿ~D¤°ÚV1kcLŒ´{»zžn®‚köúà}"2ëï¹áîµ+Þi]ÇÛëv³ÎCÚySHq{K¡Ÿð"?NY}â­³’Â$òª¬Êq÷‡ZØQî>ýÓ⦥Ç.B0´½I,ªuëT«V±*ð¯_· ³:”_vMŸ±“%ú40g4®HѰ±BxüF–>m³‰hDUÇ|˧žY3¨s‹Š>Þnî•[üeÒ\±ò­OÝZØ5˜ b~œÑLD>ænß¼ü¹öBðk¬¨ywgI¡ïzu °>H+Q§Š9wdz«dg1Æ=]¬‹¿íqí¦n©'n_ò3‹Õ¥oÑZØkú<ñ{’:3&;_9Å/æZˆ2b†ú=±;S/u}gP-YÛº-‡Žœðûú}é&–ˆôé[ ,^űà¦Z )¼r ÛëÜ ý,€çþ)jÊxt¹gŽ ¨ÜÙ×?Ã/h»÷Q£Î5=e„£ûdgßFð">?çK"a<=™6mhútŠ‹+y ¯Û#gW×2]¾”W:wVž:¥7މDÛ¶94i";—ŒÆòqrþ,ïˬ)5´Ïa÷oN_»“’’|ÿÜH"ö¿”Ïðò¼Îr/¸õwßâÝþ‹"€Šx¹?X”{ï8.WË¥àãbJ~f±g!¢‹cãsÙ9¼jþ?£‹]Œ/æ‘CЬCO´²#œ»ýì¶ß&Õö`vDŽhÚô½[^)¬GÂZHá¿® Û뼫èÏ(֢н&•‰œ\ªX{Íôº …à AæC·À¡ óÜ·>C0‚'?C-Îbá4îÆ næLF­fêÕ£¨çhB»Ñª‰D¡îz‰„ogç¥×¥1 ŸµX Zå“÷c_¬X#È÷c’OÎÎÔ¼97>·oNׯ?s%Œ1*µ¿~TkÖ¨V­b+Väß¿¯èß_1h/6öØx“æáÕk×l_ñTy^;¯_úuøêýØ»¦ "­Ðo„@´´ðï}¯?r9!)áòÉË÷'ˆì›+x´øDiãOñõU[±!>²¸íÿ&¤¥gdäé*H«Z~1[ ¢{ïŸcTg6gÉÇ:XŸVó‘Åï<š˜–ž™™ý\5£|b£VÓce-ÊÉÇDZJ•|E9»º’Ù,=Û1$ÄÙÓÓ¡aCÉï¿çù ˜EÿþN¾¾Nò‘#æñ¯èå]]F>fŒSp°mk…{ö؇†:ùú:ùúÚ‡† ÷í˳¼Z-ÿòK''__Eÿþü›7ÿkÂèÜ9ëÔ)íÌ™œL&Ü·Ï¡iSéܹd0¼æçKÆ•¯ÛµkoûЏ‘ñÁ_»?mªù¬{‹ú­Þ‰–wÚtà{k¿KØâ}ßôžó¿žµk5ôÕ¢TñÅþ{~±óóv!utøpñ»Kß³Ûâ§i¾×­^=¤nï|ŸXTùEѧ]޾Tò=J8ºÈ¡òX{ANR³ï'ûÄþؤníºû?WÍÔšðkÖæéÍ6µ,fì’ý=ܤùJ~çîž÷I­åß iÚ Q·÷¾<ð@\IÊ/¸‘E-Vä·†Ðýî?ÞkS·^ãð‡G-ÞÝÞQLD]îœÜÏkaø;42.2y‘½Î·yE}@ i³OI$ñ¸xÔ#¢ÄØÃ­Š/’¨”XÖIJ,/{b"JMI&¢…+6ÑÌqÿC]¿…>Ÿ+t昦GîΜ`4x0׫uî<1r¥õTá||t“&{÷f22çÌÑK¥Ú9sˆhÁïQ®iÉ_ýù“nÊc÷îD$Ú¶Mxø°hË–Œ"î†áX£†­(Ù·ß²Ö¢¬áÃ0h`x÷]ÖÅEpåŠ|øpý_&"Þƒö]»ê&L0öêED¢…ÇŽ‰¶n-ꃊ_ÞÙÕÕ0`€),ÌØ®‰ÅD$lìÛ7ÏÂýŠêôÌåM;çYþüyShh¾çÎ=]=_i}û )Ń`jÙRyäˆvæLN.îÛçЬ™tî\æµïY+†Œü*D&,Ó’5‰ËšuøÀ½Ó¨I¨p€ç%WpõØðªÝCv®azC\£ýD”™vIæØêÅÊ Z¡8’·÷Ó§žžyÒÌÈ‘¼¸8ÕÊ•lpðü5;Çéíœk™V•wD[ô#Ù×_3©©Ö¢8™ŒÌf缟źç¹'•2O®fçed°nnyÎû4ÿ_ÏZ>ßg1ÙÙlÞ™X''&W3lÁÒxéé¥ýÝ/Ôú©±gOéôéâ¨(éüùâ¨(ÍÌ™¦Np’¾æ¾»p»˜wí|F>~8òmÛk€R'–Uõ þ‚øïE¡Åеe µi“ë|É{ÂlØ Y¼ØR«'“ÖÏI¥Êý¦VfÇË;ʇ—Vä˜Ѷm¶¢ˆˆ÷hãÆÒ\¾~ýÜ—¡‘pß¾Üã¥ò—¶i“u˜v15o®ü÷_íÌ™œðèQ‡V­dß|óÌ ñ D)òww÷ØØÇ¨ €réÞ½»ž,Ë"A‰Y,”™I'N0ãÇ3¡¡Ü/¿PµjE.ܹ³lÒ$&#ÃI ¯XÁ¿q#÷›;v“,\(^»–Q«µZüÏ?¹Çåäÿeß¾½µ(F­.XTñtãÇK"#Å«Wç|Ðß .^,ÅåõŸ.›>]´{7£Õ2Z­h÷nÙ·ßê¿x:g±àüù§¥­^-ùñGýøñe{˜ý§Ÿ*Ïœ1ôëG&“dÙ2‡ÆÅëÖáüý¯õ*5jÜäàÁý7cn˜ÑnPŽ˜Íæ›17Ö­]Ó®Cc±÷À#ÈÁX[…Brp ªU¹víèÂòñ)fnéRfèPÇZµH$ºU©z@ÔQ` íÝ4WÕúõ²©SecÆPhìÞ]3ožhçÎB‹Ò,Z$=ÚZ”±kWÍO?å.êY. @µaƒlêTYDI$ư0ÍâÅÅ´N=ïò¦Ö­5‹I.”FD–jÕ4‹›Z´È½ñ²‰eS¦Á`nÚTµq£% à%2ÖÃC³d‰að`yDÿÆ yx¸èŸ´sçZªTÁùübÄbqÍZuìŠ;¶¦$§X ÃÞ@|>ßÝãGÏ^ÕªU×ÛÄŽ`DD\ ~²Œ««zåJëC"G'§|SYjÖTmÚôôl;}ÚR©Rá…»¸ØŠ²Ê]T¡3å~Ñ¢Ú°¡¨w ÉFE/_èŠÆ®]]»Y3 …&2Rùjþ jÚTùï¿â¨(Ù¤IÂãÇZ·Öô‘nâDÎÎ'ö‹ÄMÖR¹rÕ5j2<4¨”³ïnÖh4jž5ðÁJõ^i¹ï b÷þûú#̵k3f³àÔ)ùøñº²îcz;ñx†Œ¡¡Òyó$¿ÿ.Y¶L´m›nÊCÿþyf[€’1ôƒõð–þ@EÀWÔ½ÒŒÈ&Lpp¬RE:w®öë¯ ¢ºÊçä¤=;ûÀsýú¼ädyx¸}ÏžÏ5Z Œ XÛŠ ¾nìÞ=ûÀŒ„„̸¸ìýûýû—¿}/¾Ïîå3×®½{·æçŸ9ÁÉ“mÛʾù†É;“ AÙ;¬Ÿ“îiðš|[ó d9£ÿäâ8ɲe‰×­#ŽCÝ ÁKRT»¼œ££völ忆 y©©òðpûŽ‹Ÿ˜0øJ““Sff&c¯œ¥V­ì]»Äë×K§N\ºdjxçíwßq%ž›{÷Žm¨F(Ǻ„õ@0‚RVðz4x0ŒaÀcçÎÒ9s$+Vˆ£¢Dû÷ëÆÓò •ìŠô÷>ŠZ€riõÊù^AWÙfwü0Æè5Ç98hgÏVÞŒ±gOåéÓºqãH GE96n,Yº”pû # '÷úà,ëWΫ‡1Æq_Í%'sÉÉÜøñÌСtäH¡%¨·mãýï3ý¨QY·ogݾ­9òõÜ¿m}W>r¤¹Q£¬«W³bbŒaaŠÞ½yÚÖå_½ª:T?jTƃªÕ«%‹ ÷ï·½+=š$’ìƒ3bc5¿þ*þí7ñ_á•ÂA—ÉtÊãÇMmÛ2J¥lâD‡ÑѨ@0(¬YaáBnÎêÙ“är’Ë©wonæLfÁ‚B–üôÍ™%4ˆ“É8™ÌØ­Û¾Î=[ÉÉ7æzõ |À)œBa|8/55Fy9Cݺåy¥{w:}ºÐeçÏ›BCs1Š©^«ÂãûÖÇÆ¾}s/lìÛW˜«åIpò¤±S'ÛSsÓ¦‚K—ž.ßÕQQ»ª·ÖõœíípXÁJƒ¥§Sî\’žNŽŽ…ÿZµ·ÿõÇ•Ÿ}õt¶™V­—Hs¢Oj*ëéù4 ¥¥±¹"çàÍQ2¼L–À@ÕÚµÂ={ŒÃ?s¹ržGOcÇŽ²N^íV­Ú~Ôͯ®—P\ð¼{r˜M:MvÆ™˜ÄÃgV~Ô»]ËúÕpLày¡+ ¬'/ÿEIç¿ mçNjܸеÍõët—äžÇ¨J̵X¿ëcÑæÍ¹mÚdjÝÚöÔÔ¢…h÷nׇ©sç™úÓ”)œH$Ú¿¿Ç„ÉÌôéôêê2•j¾@d2êŒA¯6èUz­J¯Uê´J½:K§ÉЪÓ4ªTuvŠÑ¨Ëìì]¼=üÿÜrdÍΣ¸9 Á ¤½{sßd”5ŠùúkÚº•4ÒhhëVæ›o¸1c ][ÿùç²éÓ5kÖDþ²ŠÑjE»wwÞ½ùX«ŽÖwçÏ‹W¯fÔjF­¯^-ùñGýøñ¶uuãÇKgÎmÞÌhµŒV+Õ FP†0”:†aø|¾B¡èÕµC‡VML&“5ÖXSIJàñxDÄçóX,V(‰Äú"‚”!´A#™L&‘H\]]¹œ6 îʱþËãñø|>ÇC? A™Ã£·ÓíõÙ;™‰™“ùíÔ,ð¼œÄ*9Uò¶Ã)ð¦C«2”\›ö¶9|5mãɄǩº·9‘ÉÌ>NÕm8™päZÎ #Ìcô6º >}+õÛÉ›wÕ¨#xÛ¡­è-töÎkÑmÚ¬Kð¢Wµz!Õr; ç‚@Î#ÔÃÛ#1Óð:lFJ|ö=Õ3:òZu ~¿¢è…WÎjÑãÜ@0 B»Ñ[æuW$àÑÝ+)'SÍ/\Â\½ £3k¼ÙpU”Ìc¡Ý‚ݯÅ'x»Öñ”˜´úC'ãïr²žÝ*:²Ò³£Ž'gYÈ©¢ï°Úìüm 9ë0¼ÏzÝ?|_–ÅÃßµk5wßb2'¥e¯:™f] nˆ{#;'1£Ñ._J8šdí쓜îë\ÙI”óèN_ЭÇß7Z·ÁófJ¦¯“Ÿ@Àš£/'œJ0µ l.ãQCÿo’Ål˜·åQîÍnÖ%8÷êÏܾ@òI÷ .T¯TëIDAT±gîŒ3‘[÷G5¿oͰà.lFO`# "êÞn$þyÕ\Í»KÏX#sé|¯mKŸ~5•Ë.é•q)–þ e¼³Z–ˆäÎîöœñÒÂH×w>q:vCº‘'ø¸I¬V©ï×ÁÛ²çLÜ£l³ÜNâýdÂjÏšn—ŽÇîL7‰…Lý <ÛàUÓíü¿·gYÜ>mY1sǽ›‡îŸèìwýñªGÆÿ¾ ³þŸèìÏù^J~˜Â— ªmwæØ}¤"€ò]iP:0Æ´YIÇi3ÔÆ WÒ„b;etÒ­4C†RwøšÁÞGAD¬Åx Ã\/$'÷T®#ÏŠM1sĈùÄÞLÒ«ô¥Êpã¾’ˆx|QŠ¢óG®&ë³uæÄTõù¤œ>/UJÒ•tLù‰*5éz–…ˆ”)™U\«qéî)ã“¥2}[º´oíiˆK:Rª=q€`寽åT &ëÖl$¢ÛšœÑ6†l–áå4Nß¹¨vôq2Äã‹Ú9ò£oˆÈ¤Ï¾”É óïÛн¡¿ŒGD$+ ʶöAægn%¥ZdnâRß":*ÎäàTKb\s.ÇÁ ?ÌcDıyÚoòö/åÜ…C—•šBÂv|_wƘ}IgMÜžCþ:š¨§ªU=‡wñ•Û~2qÏþ <Ã+üq)î‰r{ñøBgî.€`PÚŠ äÙcßCSå:òú!’ä˜ÜóCrIÉê“WSVí{ÀIdM¤<³Ae権ÿ¹Jwô“Ø{´©k¾aJïGÃônå#vw"׳•+’@9#Ào8(Eµát‚|’cÒåa ‰Yù0§ßJ$ulæËÆ$éTFÎÅÝADÜ#ÇZŒÛ{´ôN9“úHe–ÛI|øzÛ0£¢ˆåîm*šÏ%½*¸6‘2[oˆ(EÇÖñ‘),fŽÓYê^mõkO¾à•Uêùz³¼©gyqu»û¿”uπà P>ƒ‘uüìÌqÿC½@©D%œNo¨áÃË®p³AuAïQݘ–`Îé©bY³‹—ó€ê2©Õ†ãgß5rDtëÜãC5=Z6ö 1áÒ¥„gžt-QêçöY}±Yo8zúQŒž#¢ÇgS³[¸}æÎY ó¶<)$>N–Ûx™³KO?þ–Ý©fŽÈbÚp<ó‹V¾Áñ÷ïêqa@¹ Fø¥§ÓÛfßλ¶Ç¬Å8{ÃmÛSMFü‚í¹—eÜÌóª\QI½ñha·ãØóWÏ_)òƒˆèäî»'s=e-ÆÝÇíÎ[ŒA£ú{ïÓ‹=ó`¡í' CÜ“|V’]Ðf¤ÏÝ”n{]–6gn PNƒQF:¾½¡Ôàt*÷„Þ L~-ñ]¼Ý|x¦ÈW~•;Ãs°W3w3Js®j‘7ÊK0(9o'É£Tíó®5,,Hb1GŸÕ½ê®'‘ÔqxGçøøŒCjK)ëå$Á¹ðÆ£ø¸XT<—†•_ ý¸évÙmR¾^¶âµs6e”ú64ªŒiNÞü`´}ÛT<—J^vͪ:Ÿ¼™ª°iQÍ%ØKŽzxãƒÑ„É¢"ÀfDøü’,Öº†«‹4úvfb¦þm¾«¼HÀóv–4ªìä‰TP.‚À‹ ö’£Ê\@€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`€`FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF€`€`€`€`€`€`€`€`€`€`€`€`€`€`ð2PP¼Õ+W Á€º„õ@%ÀÛ]iFFFP,ªÔeåWµúë¹SÏ«º·çÌǪ‚¯«ãþ©Xy}õ²¼{Í¡[ál#xM-oX©ï¡øìGS|+ôj·¤zXߎÁöÅ/3«N`·µ÷^xõ7¨NŠÙÓ°fØŒßÍóˆˆâv/ú o—A>nîÑ*c¡Ë›uw¦}úNHŸ»—o–=~Øz«à2›V®Ñó°íé¶ý<|êÿs5Ãú–›»‡õ«BpÍw†÷È`±.Öÿçð=cF8|ç‚@Ñ ¶Ó·óF7÷xáþãêå¹n•G§\T/èYÁúÔ¤ÔTjÚcÊœŠYeÝ€>Ë‹¿_·÷üéÃz8Ìü¤Ýî CÑ‹së'õøßoqKz·¦³õ%—: Ož8~òÄѨ%“”»éýé!ëë ¿ÏÚóÏN¼œ†ãFðfˆ¨áßmÝ©©CºúûzWoÒ3ê¶2ûÞŽíøxù6ï5Òú§ÿƒõ}}*~ú‹Ñ’]ß×+âj:]ýgV»úÕ=Ý=+Tª6xFάöÏáB‚ÝݽCu˜µ?ÁúAÿÚòEß¶A–ßÊÝëQÿÓ>ëÕºvÍj•ëµÿa×C"Úß9dQ‚&zD37w¯Šíómv¾ÕŸ¹ Fõ…¾^_<éÖ¹±â}/ÿŽ÷ôægÖO;¨ûcúgõ«º{UhØñÝõ—3 ‰E,S°r îiQëZ ±“w©èíT»õüm÷ ÝàÇ[çJ¼†ˆs¦q 8iÊØáa-ƒ‹ÙÇ]7³ª˜Ü©Aµ +õ÷§”1G¥iŠX–ý{lç‘«²–Ý×§ŠƒíUÔ§R¥J•*UiÒqÀwÝ+¦_8i{+<Ôgïô³øF#x)¼¼Ý¤žÀÉ×ÇõéïþyK»Œ;tìЗõ’FõøjØûÿ¼÷ÝŸG¬¼½eÐô DT¡Ç:øŒøò¬]ÙÕÛôë»Qá}¢UF]ê¾^„¯Y$U'9Í-Eìàž1¡³‰æ¯Ùsùܱ)½Ý¾ìÚá–.Æ*j™‚•SpO‹Zwå{a«oVXsèÌ‘¨y÷ç½£4ÒGuiÅ=·¦mŸë¬Ú-àþß>P‰,—¶|kø|å£(,™–}Ù~üföïã»»( -J“|cù¿‰>í;Ø^ñ/0ý*&…— <@‰ôßv¤?ѨÓO‡‹kÍȯ´%¢fLš²a˜ßºÝk»Ñ´I5ÛÍÙA³ $A³ë»}?óâ§¿´$¢øõY!á1:í #íÙ¡¾—T@n®~•j‘YïÓuw?93 ¦3ùxz×yòAÞm~|·‘)ì…ù6̳yd¿š.Dä×*|FðâÙs®öXаäûõÌ] "¿°ï§·¨3¸ßÂ0å ûž?MjæQLX™ ÛA‹áÑÿÖÜ^s ³˜ˆºùñ’€É§’×·ó±­XÔ2kšé‹ªœg®»º‰ò›£IÏ.h^ÑžÈoÞ?Ÿm¨?¹`UOѹ v~®³¢ýÂ}CÞkÛ¨’ŸH@fž÷wÛ÷×’ .–r~Ø„hfÕ¥˜^²|o%ŸzÏË›!âÌf‹{ÝGæ5µ½%ó©fÊ^bâHÈàûJß½»{õí¯V«Ðb¥Æ»k`ÎßX²ÊDÔ¥bNc€¢²Âbˆµ>Û#vÇË™u·¦^ÍøüëÚD$uí7¸Ž¬yõÆï±ôŸ=i&–ˆôi›MD#ª:ü ÏN~EnC·Ûã:ÍÝSÝ*õ] ¢a®•_‹\\yëâÞ%)¶ÐÔ¥mÒsôaU?ÛˆãeÉÚŒÊÜ+µL1•óìu3v²Äû_…œ!ç ß!ÂÂVÏ0³B{ásÕÞÎñaËn¯Ø¼çÈáý‹¾¬=¹WÙ… Ó¶ø ªÄ4yÒ c†*—:óŽù÷è‘#û¶üÕF¿§ÓeO?ñDµ…Å7”…^}û£ÅJOhûãŠ!"“ë—ó;Ð%dZužÿ”kŸßü†sêó¡§Œˆˆ-Üsyð‘=ߺ(|æìzçί“=-)?¾˜_Ô6Xž\Ç”ïq)î)ïŒ3ñ9öñ=­Ù§èyª°”rf"º—è!*òR®ˆeÔq»Šªœg®«ŠÛAÄ{ú#*ôóý%‚“ º’WkÊøä¯«ïþ»¾{ug" ŽøãÈ~“¿shtH¾%%®v­jÚ¾åÿÚ…KŽü2,wõYÇUª4û¯ƒN9‘ýQs{YŒ‰ÄS8 ð<”‰‚mEh1€—‚͸kÂÁe3/ÖûU®×µÛ„ž2glj3¼”£‘ j‰ko!QdLÖsÿxÃÛã½G’ÝZT!"áÌ¥v©7kLú¸ÏìFã·, ë3»¤á«ÀJ]{‹ˆfŸK-f¥¢–)ªrrïi‘ë:‡1dÞž®·>5dîÕÖ Óº’Cꑤ’W ÇêLD<ÞÓ°ÆcR~a¿" lÿÁHÍÖÉG¯.þÀÄs*8óÊ-©KOt£Aé:°w·"÷#xÙjrvü²DÃÌ9Ý^š¤ßg,YåNlZZÒéhX~+{±@´´ðï}¯?r9!)áòÉË÷'<³påà 3ÖKJIÜýë?&˜Ç]ƒˆB|dqÛÿMHKÏÈÈ&¢«s?éûÁÒÞþcû\qzgèï.ÝXáÁo,¿ñÌUŠØÁàeïUY7hàŸ{£ãï^‹þ}ÎW›Ÿä•œ”"–)ªrrïiQë eÕg5÷˜òåo* ÇYÔË¿šXhÚ¨>¢NÆÕU¶§Ãã«×®]¿™DD÷o\¿zíZŠ‘Í]™|±ÏçÁ>³ÿü͸Gw6üðéÆ }ÿ!AEÕ‰C•wîY²vL׉m/šuñwîܹsçÎ¥Sû¾¼Rèд‡³ÔúÖõ÷½CâÛJ—­ ]iðÊH\ú|ä6z³ÓÄzv"ë+|¡çí}‘ýçI×X<jûe¨“˜ˆÂïûvú¨9ÿë›it÷¯þÁ쿞Yx)Ë37NiðUŒÄ£Ú7¿ÿÛÛMJD-~šæ;pZÝêyÒ‰ªî^>{ÑåÅ6>íÜÂO¢R—_œ%æ‰Öü^³Oï½=.ur“³VQ;Øuáþï=#"ǽ?>)[îâÝ Eè4iþ޹¢–)´ròíiQë~´vÛ½?«Sí7'GÇöŸü亿WÁmöh2S¡®¿;ÃÐÅYLD™w&´k·ßúÖ—Ý;ÑWçîNôSä®Ì‰»£t#&…÷mŸ©å<kZ¼çË€â&Ït®ùÞ¿ÛôÍ{„÷’H¶LîFDé—Æ4kND$;„4íø÷ßs%<""΢ùöBÚð¥Õñí¥ËÖƒVTWCDËÔØŒŸùó’ŒôÒ›[3‡UôüóÜï­¼JwS#jøÇÌøw[oÿ’¯2«N੉·÷ À.èØØæ_‹¾?1«ñ+ß’Ä£_´üÚëîɉ8(P*l× |`] >.vÙo¿ýüëoèJ€²•™‘qfí—çLþóš½âù¦9V{çÌÆ4]­zN8.…j:cy¥Ä ¯Ã8Žo6L\ý%Ž”–‚=hèJ€W£yêY¯á?ou~Õ—i~­ßúÇÝÆNtÄq)üW‚´êŸÌ¶¤ß¢e8PŠ ö áª4x5n$$%Ü¿8µ‡_Y>÷ÚÃ’÷£ÙùŽNIx°kÙ®tx;¼ W¥À[ª˜4t¥ÀÛ¥˜4t¥<‚@t¥@áâãbQ €`@#‡£Þ^ÿoè¾°3½'IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/11_jks_keystore.png0000644000175000017500000001432712032647166026023 0ustar ebourgebourg‰PNG  IHDRD¦-sa¬sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ)©Šì WIDATxÚíOh#ÙÇUÛ{XØ‹ûfuGÆÐB‡¹ˆR³Jœ,mY¢Ú!#1ÛôQ, ³B¶@&Ó ”/ ‹4†žÁ·…6 ,Â$Âä ¥0’ÿd3žZ…/Í"ÔàÙ‰ãQßÒ—…6ój¯T*U•¤Ò_Ëòüê½WOõ­ßï=©¾A™€€?ýéO8r­¹}û6‹£€ ³ŠAPÌ‚ ˜A1#Ò˜e¹ºéõz½›UYn½XÝôù|^ïj¡!ÏÒT7½> ÞÕBCÍ ÒaTªõn¾ /Œ£zµ˜¾ÑÈŒGf¹Qˆ'‹„6·Ã6f6®*z{ĶA`ëÙÈòÖðÝåÆ~<)²S”û tg›[/‚­H¦ÁÄ›afãÌéí X–8¢»Û![ó¼äêærr$-|sQí Ý?:Z›¦A`÷Ú”u cd¦¦ÎØ®^Ér£°ª¦‘›UZ¸°êõù|›UYWLM_õi­wóy±µœY–eEÁï׆]¦ª{¾¢Ôßü¯±W¦H{™:Ë’@úèYئ9/zyÓ3µÞº.E—åªñŒÌ'/ÍkNO¦KyMÓ¡YØr—ëî8ï`Ì‘ë™Ûãs6ú©,÷(æ(fê¢àÛÒrú®Ï{82µ:ËGT]06¹XY‹n†‘å;v'°õz–÷gšõš`»¯?+íÜ«¶ ×ÞÞ¸ð b[ZN€YU½[ï“ÞƒÁb±¨ ÔAí!ÎØ.IÖºÕÚÉ,q8œ„ÔY1¹ •ÿI7È\ï.þ¬‘«ŒÌmñ¹ž,Ç ™±…·;¯ÖÌÓ¨ÀùÀÓ9‰G4w´æV¦ÓBLstMXùþY^é »×J¥\ÔAŒ+n† õ¾ƒ³-¼½Û:kH&µsí˜Ð„zM°µGGtw{[ˆ9M+´2€ãûÎ2rÆå4B?ï­³çôõ&#Ëýx„ÖÑé. ¤é=A,rûöí[ãºFÓ™:ËB€G%w囋ZMäýYM®„i-2ö4»Ÿh£|«Été Ñ.8%Ú'˜Ö"S—f#2á4Í ÓlAPÌ‚ ˜A1#ÈLcþ9óÁÁ ‚L'?~óæU1ÓpÔdÚÈçóýEfŠ©ú'ÉÇŸ~†o‚¨|øþ{}§ÙÓCêÉø" ®sss] à‚\z&ª(f™PÌrÄLMÏÛììåêælnRI¹Rí_.>9}cYIqM\Ú÷s¸Ë•ú½î|'0¤ÈLÐ{¬˜ÜZœž]i*)×ñÒÙÙú(jY÷Œ¶c+°s&y>~¶›‡ïÌ3¶±£gíYKÈt§Ù¦û!hw0Q7£im_Rݤ¯·¶[Ñì©nÈÒe‡S.ó¼Aƒ—yÞÕŠ„—y^p*)ÿ‹ç)5`þ*)×Êçìç+­’•”ËÕN+)Wªr™ç]®æ‹í …r\ï˜ÞºUÎqŸ¿}—´aSi—ÏçS&ÿ­´½¨íp³~ MXé!2 b¦Óãþ#tÃ1uÄb²epɲbòt‘¾^ÏòËivcN¨eÒÊAÚŠdjÎh:ê„bÒò¶&_çùuHé¢ée~ý«è™$Ig;°’ªÀÝÇÑpḢ-­þŸƒmI’$éìlý{àY?Ûy—¼»Ó¬«’Zyõä¹$IÏŸ¼ZiIµ°²©³³³³u±!3-/™K¹[åÒ¯~OsC—4‡¯CêL’¤zŒ¶Ãô¸3I’,4a¥‡Èl,€q‰\ÔÁŠ‚vòܰa‚b’>o_hú³ÏÓ2µ‹ošF° vξÔõ•[;:ê´[Šzm}òÉ¿<ø¢=F\~qo}þô³´ÃÉWŸ8ç¾›C±Ý`ÖŸþ,õäƒ|>oªÍq™à_5ôÓ–õY8×Êç, „¼»s†O˜#ݘI1ÏÌ×›<ëCÙ A1O oÞ¼A‹¹öbþðý÷æææÐŸAf$2㛄 VÀç™ÅŒ ŠA3‚ æÜºi'ÜݬA02#‚bFd2i¶,W·–“¢ò aGlw;lcpàäšEf¹Qˆ/'‹¤^‡‡¤·&nµÛûvÓÇÑr3Å,íeê,ÜP¬vÆ~Öò©n*Þͪ^W :3ñÔX(¬ú|>ZXM´ÏTÓÚ”¾y7_¨väF‹™šïXäLþÛ(¬ "H—Jé+ «…F«Ò^0„‰'ËŠ' ”rQ'Ô2{ø‡B l&Ü #ËÕ­H¦ÖÌ&ús&BYÌuÞ¨œÔs‹Bj'U¨Ý :­”1šxj+çCóŠ+hñ´S°ÕÚ}Sc`T5‚b6…z€i°ê³ÙOçú6ñhÚ•9aëYÞï7wF%f†q/eÅS§ú;vgû NûQvlOÆ~vt”Ðô#ÈÍÌÜ£˜ƒb2®®KU77«²¬šlžJҩȲÎÛè’X£‰gOåSCý¶Î'6„€ÓnÃånäp«gˆÛ>´o-'³¼? tia€šl^xÁ/@úYØ6Úž)õgy_èâ×Yù!!vÉdy†>*ÿKßO•ÆÁB6FÂw™y¦Úsàw³‘kMwNü:'‚ÜŒ93‚ ×~ΜÏçqtäÚÏ™qb‰ ÓL;Z '&‚àœA3‚ (fAPÌ‚bFÅŒ ŠA3‚ ˜M‘¾ÖCÂZ—Ìét̾WSu^rÓqò¦…èˆ:… ±=´—­³,+žJ ·[ÿOj»µvýˆº!Hݧç¼d¹º•,’fÇàþ8;6µã€ ™e¹±Ÿ;¦£Bй–ç¦é›þîk¢šré q›~ºz‡ÝN%Ûš³\•1¹0P-„—–’?m÷ñ5F¤.~ÃZK`ÓalÛ¬ÐbmZƒaÁï7Ffu̽«««fé’ùïÕMµ*íûeô3í8 WšfK{™>Äy8j'•®Þ>ô.^.—©±.5åêdˆktØíik½*ýI˜hV“Eg4W*—ËÇǵûøêjèî7¬µ6¶®mˆöÙzmZƒát©di+)²l ]:X½X1yºxt´vŸ½¯{¿$àcdiöÁÁªa9&$†ñ?àEc|¿F;ºë ±BO‹Þ `º;2[Εèöq²ÜØG2µ“ÊëŽj–åÆ~:Sg,Ç_D’EU„¶ð³£puÓ+ˆl1¹µx˜à¨ÃnMŸËKê2=‹UµOœM ܱ;­²f m…ûð664Lm£]ë2¿F8øŒítÌ™¥½Ì¯nÙôÄ­w7w ª!î^»Ú’¦X¯ : /¶»öšûøjkÀoØØÐÝ‹µ†çtò¬}6ª}ÝÚû5–q@®LÌÊlùQÛÌjÞóÀѾ=ñÚJlYVL.çÎ@WDÕ%S¿_(*†¸Mß©gyuW]˜Õ•Ô­œ[©J×1Ó¶ð³`-Ëûé‹̇„˜jYÞo¬„Ö ~¿ öë7¬k¨*ËÃÔfz_ÿéâF€´eî‘r.9{LûzÏ÷k|「 sÛ ulV wotö[ n­¹q4®5ÝõØÑ6¹ön~2 ÄÛMp8&3ŠyF3.ü†ΙA1#‚bFÅŒ ŠAf \ÍžúÒ/¾ÿŠyù¡/ˆƒpù]¹ø¯ÿòãüÿü9Fæéåþßý ÂâÅþ ýWcŸÒ¢˜d ˜dVÄ|‹A1#Ff3‚ ˜¯5Ú†(F§¡.5æµ·Þ¥c÷(¼òYI³Q̃BµÁ½ÞG2¦NCW…ú<ÓHîÈuáÿþBÆÝĬl޾Ќ‡Zkèª,÷tÕ†Î^Ð&àÍ×—ã¹s]‹–÷|0õ¯6Ý!ÄJç‘éó·d€³éTdY.ÒЧZC»¦§«¶©´©8 äSÝñ-Ñt²ãiõê<2Íbþá÷ÿ¾ËŠÙD‚ßïD∪>ª5´Î4Î/tfM/èÀ"À-Œ&g͘f>Õªì»k²ã¡«1HÏÎ#S™fËêÏÁñ—Š©-‰sf“õ$Ó«½««¶¹´ÍÜSzXŸêAïVwq”ËÔGf퟿.ñ¾èÊüºüE¿ÑøFˆ¹–\µ^Ðý{JO¨óÈõ3ìüWèá?hÿFÉpc´îªmð‚6 ¦>ÕÃozÚÉæºgç‘)ä/ßÊÆŸ_þæ·ô¿¿üÍoM  ˜-aÑU[çmê)]•eîQÌaæS=$l®{v™>1ÓŸ_þô³ú‚øÔÔMãÅþü»rñÇ pìÏó{êóÌè› SÁ·ßŽýK#(f™HšMd3‚ÌÆœÅŒ 3™1ÍF™3cdž9¨#‚‘Å|½ù]¹ˆƒp3)‹ÏÇÝšà#ÈôbÝ4#ó¤I=ù±È›7oæææ¬k #3‚L)ýn‚bFÅŒ 7XÌÔ€Jû°Žöq¿áýS ®|>Ÿ×»ZhŒþº~;9üIi¨¤\.Žã8Žs¹R¼‘«ŒÌÒ^¶Î*ÏúØ.GUò~<’©9£¹R¹\>< ½5Ø=¢Ë!Cvr8<ëgg’$I’t¶+|þ/CäJÄ,ËýÜy4uRÌíݧŒQÚÄ˲QXõª±W'¶¶§ÿÆ~¶ÆD½¦Õç‡MkÖº[.-%Ú~H÷Nz½›…ª.0znêrѧz‚ÂêÒÊæ¿÷¼ûx–Â/¿ú#^†ÈÕDfi/³À‡8Ï'@í¤ÒÕëÂÔËR–«[‘L ‚éR©\.ë£êÚ‘\Ž«¢bwâp#@ˆêìÕÉ%šî–ÇǵÒc Xñ„R.ê„ZfOI9:ynêÌ1ÆÚÞRLÆ Y®nF.ø£g‹Û;ã>.¼ýÖwð2D&/f–c¸¦sM½‡šU4^–-ÉÅ÷Mm%ÝkGéaÙz–÷÷Ϋ 5÷t·4…šWj+žÒxkôÜ„æ˜ ãNì*® Ë9ûn‚³ÉWR+°“{|/Cä "³´—­×³¼ßçóñÙ:è húoV½^¿_ÐXX¹»1!l=ËûýjjªÓs©”‹:HÍk5Ý<7YVhÓµ‹oèyÙÂBÌ M·°žË`ÇKg뼑ɋY™-çJår¹\.S±uÏ´U/Ëh.­µ°blágGGém†Üž¢+¹«ª+5O„;v'ÐM¨Õ6Ô2é^+ð¨däj#³´—YàÃ6F›…L»[pãB¨…mÛÒÔjA Åt? ¥À»¨UeÏšµªÓÒ¦ž›ÐÙSÚŠ\ð‡Ê¬;²¥Ý\Æ åì[ÏQÉÈÕ‰™Î–Û¦«žãVíz0zYÒ«ÜçóùýBœ1!dk_K^^öù|Ê~Û!Ã0Œ-$(“R¯wSÎÔ%SÛ5‡ ðq'ÏM9æ òMaÕ{ºx¸æf[x›v,þåÿv\õzùÉ8ü¨-èÎ99>þô3|бÎúÓŸ¥ž|  °§;'~AnàœA)Ÿgž(oÞ¼é÷¹6A1O¾ÿÞÜÜN›óµc22@@1O)–‘¾&eh„ 71•C1#ÈŒ€bF³†ñ µYXßa¼SÓWj¤¡’¯s"£bD `-#¡„Û­ÿ'}²wmèF,Ú XaT]ŠË<Ÿ}õ6Üë™–È<~#¡ÑÒºÝO—.MÜ6¨’zç«h.ŠRF¦)ͳ‘PèÇîgTõ o„OA"S'æÉ ©¿_º­ÛýôÌá'ft™ç—Ð.™¶9³´—­×÷g›/ÔN*P¨‹e€Ü(Ä#™:ËËQÂub7vÉÔëYÞŸ ¤Kkn¦çœ¹³ê­øX¡§mMÛ ›btÂgë½lƒ*¹§/?g¹Ï›·Ó‚ vÐu¹ÚÈc„ ׂnŸ3ÏÍÍá!ȵ˜©Ý¾}ûNðçÌ‚ ‚Œšÿ$4JŸ~éÑIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/21_poisson_timer.png0000644000175000017500000001371512032647166026202 0ustar ebourgebourg‰PNG  IHDRfœÃ:–ŠsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 9ÛÿýMIDATxÚíMhY¶ÇŠlÞ2³“âÖkbˆCoLy@Œfá/ÑbèX Á £ÍÐ9zÈô4åíH-èž'ƒm!†Þ/LhänBQù#‹ñÃÐ*¼é…ýÔŽ²/gWz‹úP©¾eɱÿ¿UrUuï¹·êž{î•uþDà›ýë_ÿÂ@<ùÍo~Ã`þËÀeà2·Î#ÛÒn·±1—™>‡"O,ïl.„÷•{J²S^ß Ãtg˜¯{lûÕë Ì²,Iwíq€‡e0­ÊÒ†tzÞª,eö:Ý.^†2ŒË”²4uj/S• Ç,ë¾XS«‡‡«w¯«Æît;µÌR¹Ùl¿' }´Ï8ÔÎqÍ}ຠ#Á…WÎ Qqßl´{w¥Y^dlg¯ËG~š`?ìe–Ê-åÿ{`xœ¨ ?1ö¨SëU¥5ç³­n·³—Yª´ôÂ.›§¾ÐÆœ2²<‘ÞÙL†ª§6” ¹EºZs}#ÃW§lŸB“ðNؘèó!'2 is¬Û©e »h†ss™ZÇ>È79ŸùjBÚˆ§*-ýß['i#'2L"eœó mV¨Í™¶-Îmu»9Õ_(¥â¼ñˆÁG_Ϋ™9}(¦U^Ú(•f• ¬–F¸ 9£¿ "FägK c]í½ŒqdÀÃ2Fäã¢þ?YžHóê“^•[ £/8Ò,/¶Ê¯¤äê”u•;H&Îzüæò‘Ÿ&FäùÞjßm”â¼è²u2vG–#6‹v$]Uª2l[‚>ÚRKèä£/­fS5I›¢¢ ô•Œp5PsŠñËÕ­dÈØqV™J¥/nˆ2H ¶Ô9¦Nuy"ýBymˆ}‘žeŽ6Ëà“pD™®qÓêäò‘Ï&d®p¸•T#6ÆÉ²Ïî$ŠfL­êUÃãÖph«Ûí´Ï•H¾7gØlÑpw_d™+jë´n-õ±Ž¯æ4ã¹ÔBÐÐñóöÓ»(ƒ<—Žñp°ÿhÀþˆ.´°¹C™¥J‹aD~^ìUëò‘Ÿ&d™+fÙA?Yú°—Y*ç2aK”Ñ0 É>Ûzßnö›:ÄpÝÑ…Åo2 ɽ¾È2W¼¶ïªÁGeØî‡{K͇ö¹óu@(¹u¸¿¿_¯8Y6¸|4Pþ B ›Å5ËKÆ€Eñ\¡®sõÑn¸î ²<±\­ïk®"¦€ËhÖMÅÄ0­ò+ɸW§DÌóû×ìA‘“ej¶ß»~tå&|ÚŸÝIGHÐÝ“¾wPOw¥cÑ÷ažÕTÓ_X]k_®«ñ“«À¾HOå–ÈÏ«á*cÜ«›N%Ì¡È0ÄÅô/ül?¨‰«Ì„Pr³ØŽó•¥ðáê”zªÒjURñ ‘<1‘å#ææèëýß{F,A¢ÈôL%9‘H‚0øpÝA,Æë[<€(c )wÐ;áë;<óbb¹zhùbÅúÑ0MøêÂÔj½À1"?û²ö‚ |zB–Iý«ŠM>¬ªêò„n*W8ÈÆF5\·hô8H±ð Rìndc€Ë¸ \.—€Ëyú™©ÈZâTCr[ÙhôE46ư,»NymS]×·'}7Zk»øçúücÚža;éaÏgk¯×£J ?ÿïx^û÷Ÿ¸{mÿ|CO?Ñ(똜eø¹(¸À/¿UÆR½½‰®îÛ/,æËQ)ê[ C~uF Ǿ[¬nç''Y†y®Þi-ö,ãb7Uýt¬?þ_ùA‘G§ç3Ž·ÿúîçg3Ì¿g†Fž}:ìÄu¯í×w?ÿüÃìßïïÖ €(ÙžÂX¡z®GìÊMŠ,W{Ž,s…zýšu·¢ëæÞZ2c‹ù§½ª‹ÝÔ mŸJ’$I›Éõ}øäégIeûfÜÁ0˜Ë ]a¬ÙÔ”D} ‘ÚxŸèt„aÄêž*78ØñgßÁc­²{¡(Ô´Ž›­al1ÿ´¢žjþúîçÏÔþâ—3¯vzG‹úYÆðöŒÀ þáó³#œp‚!7&êl%7‹í¹œæAŠ ‘ssç‘1-¿ÂbDJnÚ³|%5_!Yæ|ÞeElMþ‘ý;#ËÏ·Í_"ööÏ·¥¨}‰{ ¾7@ËùÉÔîëêâúöûûw"ù·_­%k+“´u:ã`ùë_R“l†!¢ç›ÛÉÚÊž„NÕ™¼j›,?ßF L~€ì¤Þ¼yãôkù›äÛï¾ÇÏÒ¸IÖ¿ùG~íËÝÝ][é#ÀõœeÝý|———H´\†/þòç?=~üÇÀe eà!pwÀY.—€Ë|Lã³EN–)á+FÄ#Ïåzó ¼1—«¤â""â õÕ@€ôDá|\$’¹ÂV24ZËL‰È‹YÖÙ¿,ðé·KåJ*^–¹¯÷ÿ?óUÿ„"i~!ð¤ÍrNw8Ãøu€ß˜à 2Œnä,Œ^ÝŒz½ !7×ËtÝ*¹Žo&ë—IxÙLÁ=Ù˜´÷2º\õë(¯»“ÔÀ¼†žªS/ŸËTÏýy´l1Á0­ò+I«ÁÜ–uÛíªÊšñ’"{àØ¤’²Ø®›äªØ`Up2ÕXçÌLî¯ý &bÛS“22’;ç2LrÆòÜqLY­R½à¥Ñ–6r"Ãp…ú?í×6ÆÉ²žvÜIÖÀ4iíJŒNG¦¥ä&þÐ>÷ÈN(‹ C‰˜²Ô»é®Øð–øz3z7†Üqìè¨øu¿ð‚ÙËíPf·p–ñÓÿýÛøßßýçx†ë©… Qxœ¨)7²,«1dY²H 4ÏÛ.Û›“Áð8QS[uÛç$Ëá'}åEòÖ¶‚ÎÁ‚R0:=Qn ÇÒêÔÔû6M¿:9G>.‘<±¼“e‰¤þn*Š ‰KD1N„·'……`ß(Å8YÔQ’œLÕë¼ZOFÌeÂ;› ú ›ž)¶¸LöGW¾s˜`„‹¤I „Ç¥r‹aˆaHV®RDÆÃÁÁ0ä:7µeªÌ¦Ý`t:Rnž·;Ý'ísÇÖM«½%ä·Wl2,Á!G50•ÝIŸ/•[­J*^ÑÏh¯ã‚{†ûºòèfyŽÜ4Í·Î^¡Ü¤Hºšj/å„aªWv ãáP ÐíÚ¶e\œmÚU2›—Ëí÷èíxlëŠÁü“p¤?.rRlPË=L½Â¨’ªÌl”fy‘r1|·îàñ§× ¥­Ô€M@a”PQ5üìD6r‚Éû5°d‚Ñé ǯÚã1vÈn:(6œ·?ôy7 ö ž=Õ•žàeË Ej€“[•”~Œ¯}Ó!ææªçÒ¿P$TD>~+r²ìÇçççãq^ˆ¤w k©µ­þ™fß®ê3ºªÇè5-òñ8/ZÞæâ¼h<§p7•4á…5+©¸õëíú÷Añ8/¨Ê 1À(~²Kä§oiàÖW9àh&Ї«S#®>’³ §‰Që¬îìÊ-†I c€(€(Q`0à2p¸ À­óCŒ|ûÝ÷÷©;ùóŸðLá2Àõ’_ûò~täòòòñãÇþÃÆ€‡1Áeà2p¦´qCâ§¶«µØí6þ{&—©Vcüüû¶ž¥‹ Ýn£t%Û.vS““ùSéIžeY–eÍ8•ƒ{Äý9þì6Jq^œX©š~6:8Èî¤'d™iURñ¸q'Å0"¯ôBuFVËíS :h.6 ãæ,CM·»\-¸$Úó…kfJ )y1ï’×%· œLDÚNêI8B‰9«å–’«¦í´³a¨ •Ž™äÙ/Úÿ.~9KÎDÝÊ\† ÀÖ¬¹N)‚= BáqõÆ;…1U¯mR_¥Ð˜Ø+Õ°MDãžW¹/]°6ÚA’®ü•ptæÙ7ë»DD»ëß<Ó<ƒS9x¸.COÌ«œÀKÄÚ§Ûõ5k®mŠ`Ǽ¾–‰!Ü Ÿá”ª×6'p(¹UL4+©¸^èžjØÆ1Ù š­ Ò±àGKIã$?9ɲ™˜2,ÛûëŒèúéò»/X–e¿xóùëÞ7©Nåà~qù)i~)½3ò¿Ë¸tj/—Ê”ÞÙL†ÜŽ<¿ýîû{ó³´õoþ‘_û?K”‡’È/JnÇ˯ Wlø¼*<üžÜ«¿S«‡Sx¨—nŽËËKül8.?QÐÏãÇï™Ä3÷³ Ds òeà2p¸ ÀÇŽ?pª.p T]°1\àF€Ë\Ë0fú¶ÍÖ}×0¥&·¦övºex9’þ±ê«­«¥2WÓ ÷ÿw´Ý‡ªËˆT]”Ô!ì`ê-÷TÕůËèvj™¹œ e¬>8à©°1ªb˜7Ìó^=w^½^H›Ë\·³SÇ*’®Öëõz5é5ªŠ'È\¡^?<\eI2þ×ò^Ï^w¥xœ·ò_ÅQ§V¾»×éçš[$˜z‘>çM)Q݈®ŸžJ*›´bp'ùÉÊÓ%I’~|Z1ˆD9•?—!½*·&QÌ*/A Jnõ^ˆÁt7úõ5~’ژˉ £§ÛrWH1VØí6L÷º¿(Ùb¨à$,b¤”Ý®*p¢é›4JŠöc•Z@h!¥6j´–Çgfr5üW]Ÿ} xöª.× êâ~<ðà¸ÛéñDnûàà^¨º(Ç?~þæ©Ý ¸ ï§®g¾·0°î†£¾†a™BŠ9dïi 8‹x˜¡Ê4Ûï?œ¼Y×%›±RMÄüœú@qª.ƒ¼uƒU8¶XÝ~öMUÛe.yênè§ýD$÷4>B |úíR¹’Š—e®xÍ"/ææÎ#bZbn޾Þÿ½Ã[b¾×´3ŒÈÇEu÷Iïl.èïœjy%5_!å(‘µ|Ãb2£xeƒÑéH¹,P1ë1VÊPÉrÂ×ѬãàØØ9åÚk6[䄜p,eÙÛÃéT ”Ü*¶gùT¼BZá o—ꯅ²ÈÇ©P䄜àlCãXåD1Ëy:דüäÊÊíòóíÓõ1ã~…ò,ËÑo¿z]z•ü ÷çàs SË,•›‰âáêÔ7ª.N@ÕÅ…‡¢crSkfg¯Pn9|…y§Ž êâø@ÕåÚ7&@ß%·“‡©Ð.ÁÈÀep³@ÕÅìp g8óU] cÀõαŽ?p¸ \.—p¸ \.—¸§xüÆä§ÿû7ÆàËeàg¬lLp¸ |Äü?lóÓ‘)Ô§IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/17_vrt_max_size_display.png0000644000175000017500000003457412032647166027562 0ustar ebourgebourg‰PNG  IHDR¹bÔƒæsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ$üÃs IDATxÚí|UºðŸäEïê®ìâ®jJk¹„E¶·Kê…»n,lAíZÛ›UîjÝ.¡¨»·vz_õn§r­|t-a«uïKÔK–­±ZV(!RC°Û¤|è •ùÑ2yÿ˜Éd~&“4iBû|ÿ€é™3ç<ç9Ï9óä™3sAA‘C§OŸFE ‚ ‚ Ÿo¼Q‹Z@AAYÐWFAAô•AA}eAAA_AAAÅ„0çžµ„$Ž'^††‡ ‚ ÈÕê+#Hâ¼äI“&9s&Z7AAdÔ¨ûõ/#ûÊTå#¨)$Žõ¯Lš4 õ€ ‚ Hê3Úqå?º½çƒš ßþÅ=óPûãQÌ8|€Y.ψ£æÇ†2Eª\×…3õ+sQ ‚ Éô•wì=2qÚà¤ë‡Î~5ð‡öýÿZ8;`òü«Íü‡gΜyþÕf5‹.TfCÔüÌÊ5ªr]׫ÿy'öul<ü›¨A$ûÊ{Ó¯¿2D_{ý¥OÏûÂøÊÊà6ùHB˜òcŸé}ƒ­E+ø|M¯SH·ûH<ïTqƒ—_h°äPšž]Ùê°èÐ6FˆË—ÑQŽ»‹9ö”É8Ê{{Ïaÿ"‚ Iö•ßxoßÎÎspgþ ü$OåUÎ÷¼“g^ Ñ—/ Ÿ’ýUÕo]k5GUµÒç#åœéÛÒÀÌzÈ~§µˆòø$Þ2—)€tÎUoYVæñEøè2:Êè(££Œ ‚$…¨¿¯Ì9ʰ³óÜïíSsUßÀéáNÀ5—‡èK.ž={ö‹rV-ÔíÜ{pT›«ËÒGÌC˜Ìݽýì~§Õ`4 Ê#ômF£Ñh¤<Š=ňŽåJðPÌ嵇j·Ø„UŒ¸÷üÐQFGeA$Õˆ:®Ì8ÊÌ¢À‡³sgç¹;¹³J‹Û÷þ9sî…Ë×/Óçÿ~þô©Á˜pÝ·'ÂSM®;o»uôšëïë1›ÈðYœ=•É“½å>/Áz¿¾`lº1»ÕëÕ1N± ̦p¥IKðP6hðyyq;Œã¸rÌå@`à­Šk€¦g®x½Áœ®‰»xÀÇ/Tm†{Öt<6W£I®®F(LXe~übAÕVÞ*¦ÅuÛŸ«I}û ï({ÿwÙ¯=¼vOº˜£¹G Ó–ÝpïÊæÕ³5@AF…8ïÛ÷Þ'ï}2 JüèÏÇ®M÷Ÿ¿ôå…¡Óç¿þÛ—_|dþÓ°ëÀ»×ÿãÎ×Z?R(ÌUaäSáŠ].¶( ”¼Gª‹*¸þ¿«²3˜¬Éìr{‚‰…óÙi»ˆD¶„Œìöa`Ö+Çà(¯?4«Ü±mûöíÕP÷âÇÀøQZ ðñ wÝu×]/¨ouĈ2M/®Û¶mÛ¶ºÅ4½¹* úŒ¶Qƒõj"Ê4}÷ŠMîu›Ö4½›Z{`ŒÚI °÷¥?úÕÒ猧€ ’h¢Ž+ß™ÃÎÎsÜÓj–,oÿd_VÞIí¥o͘4§½ï/OMºó¦S_ì=Ü~cúõ-¼QZôÏr×™…¯áy(ƒ;ÖfšeÞè“ËàwZYÜBåþÞîî–ûŒk™Û-›ØD½IíZfÙt‡2ŒZmq$±Æ꿆ä³ã‡`ú´©MºyÝã ‰2ÁÑP8v TWo€™åŽÂSñàúC0‹ HsyV¬8ÚØxX)Pͳiz1Üå^Uüˆ¯ô”Nˆ.€À€«âÁõ‡µL€|ñšŽÇŒàåâÇÂãOùâ‚'·jµZØZU yK›Ì×3=sæ¬C‡Ɉêå‡Àå 6üÙíwì­F@ ð™»úçoÕÒôÝ\¤6pòÍçV6gEº{eóê[¡“‰æ.ý·£o9>¥éï/]·þ®)¬`´Þ­Ú´æwå·/ú+Í/-|¶F#+†ÈfBãôôïgIÙíOºïÿa'“¢…-ë–'9?ÏUPGI.QÇ•øIÞù7¨w”mûo¸¥û«s'n×-Î:ÿþþúßæÕÀGwоtå†ìnê•í)¢…ÊnäÖ gd瘼,¾XÖH(•@>Ÿ÷íÕ=6 ãË×+Ë¢ÑÌwhµ[« *\~úã;vlß¾}›£|¦08ªÕn­úp“~¸ÑZPÕ¯¯˜‡Ö×½5ÀËó>To«[¬Õ^¿É+­×ûâƒëÍ*¯+Ÿ›«^ e` ß±ãq©{Ç?%½<øøÅׂ{ê¶mÛ¾}»l ²Í¬cÍbšæ»žqãÄñ£pÏ<¦XÙ&{_¬ÚªÕ.®ÛÖQýc5Eªix¾6?€ÁþÏ `>ã|ùço¹uÉ“¶,xwÝˬº²¡î]±Émÿãû¿{ó ÎsÕj·x¡fÝ“wkµŸ¾ùv'“øù–_­wk‰'Ýëž¼[ë®úï-Ÿñ:}‹jÖ½dË‚ƒL~¥Â¥bˆ8øò¯=Z-ñ¤{ý£wñ à¶ÞüÀþÇ÷×½d›FÓ»©µ!ÿþæçšæ|niŒ7#‚Œ†¯Ì¸ËËîÕ¿úŸwªùƇm¿öÛƒg¿>±Ù»áë‹çtß›>+Óïìz}øJàÂ×W®ùÆ¥?uÚSF!: •Ýhuútó {$‹%Bk)ÀCÙx+CzúüàwZ¹DÙda®0å.œûøŽºÅ´V{¸ÑºPæ©ýÔiÓ…ùizñšÇŒL:M/^Ó°d*“çÐñÏxy¬K¦‚qÞbš†ÍŠÊ >þp3LŸfœ6Žçœl¶p9¸Sa.×j·VU„\ö¤MÚ­Õ .´6ºgÍŽÇç*É ? 4=sÚÍ2z–’ô†kµ[Ö—˜V®²÷<ÇE÷wÀô)?̸Žõi˺j×çB‘húî{§Ãç4 »Àgݤé»çü˜ô¾=Ÿ‡ìáî{§CZÆÍL~ÙÂÈÌðÙÉc@Óߟ:ØÒDÈ&ÆA‰£¯¬ž§_Ù’™ßõõ•“§öÛúغ¥Ÿ|ºöúщ¿ù‡.ÑÏ ]8}ù›“?üÔë©ã-;Ê{‹¬N?€Îâ0¹ Ü7+§— [³ÙD·‰[¯L¾òÞ"ƒÁ@ZÄ,W‚‡2ŒF£ñ¾µz;i&H»¾¾hüƘ•Ö+«q—·ms”Ϥù.W`Àµò®».¬ÞªMˆykµ[«™ÂyNvÌ—k4s{}ÅLšÖn´.\øÂÇÉt—izqݶ:éïI“ `R¿á4}÷ŠMk87WèCWy´Z8Òw @£¹íþuÓhZ{ÔþL‰éýáEòŸ8"L8ÒwJ9w˜ÂEbÈÕ2}JšäÈÉ7ÿ{éV2*ýJQ‘A Ob÷"™ð½#C/‡ÎÓ/ Ñ 9}áä¿¿øÀ Wö| t`øü0}AC_¦éazÿÞçä]J>Ñ’QŠ4ƒÊ U\ÂK HŸ—”zÓ> {ì¡—ùؼ¼%%ð² ÒÆµ!F¿^™sAÒ—4¬9^PµùÐñϦÞª[f­pX?Xµy$2Íš&‰ÆÝûÅ¥s_^¾x~80á®ûεèX¿÷ÀŽÀ=|nøÒéKÏ\¾xfèšknÀΟĶ^9øø…•.öÙ½÷íZmе%äÉãèñÁ§OKº/M:ñãYZíVÇ['b(:üåÆÇÖ,¦i¦ÌjlFfe°’Ê W¦.©.ŸIZ_çÈÊÌ-ÿÐ+OIlõ O\£à¦Å5K¦Ó}ÿ¯vÇÉ€Fssμ[µÚ-›·HsÞúËçšú¾GO|²Ë£ÕBfÆd†+aÿ'lzÖÜh]°`ATßkSºœùJÚ‚ .¬Þ ³VT/atcÉŠYp¨ÑºÐ1mÅbš–õ¼—T³yb$¼O¿ÄzV{˜yëQ¶ÉÆ’3izkõÂç­á‹§$¶Ê†'®Q ÑÜlúÙ½Zí§oþÖõy 0ùîß­0ÑÇØ~öcæ;kÌ7×l?ûñÊ’ªÝpëÒGÍ|ß×ûÛ;W>»…¦ï^ùË|&…)Áó¬iå³[hÓšÿ¸ûæ°¿îä —Š!ö­ï«˜FÓžgMûo{ŽªT£¹í~ò^­v˺e>›Zí–uËÖ„tÓ£Ypð­U¦_-}þ äKóàë}‚ Qß>àôéӲ熪|Dzê½O~òÃôÉÄ}n<£´«Ë€¬…1ª3gÎp‰“&MâþäcŒæ&s)µçH"H2“«·QرoüìÒô¿ûêWæâÜ‹ ÂçÆoœ0ÊUþÑí=Ô\øö/î™&Û²{õã¹cšßíoMŽy½2‚ ‚ HâU_yÇÞ#§ Nº~èìWhßÿ¯…s°.¢œ\G™ù0óãØ¨7qo{àÍÀžFA_y¸Ø›~ý•!zøÚë/}zÞ è+ûZòÌþ½mfèÕû}-yn}õŸ>üô>á«N4½Ðª¾ü÷6=øZzŠ;•÷è;Kr4’ºBhzÆÝkžŸ77¸Š7;wÂÎpמ}p~®»x.ì÷¸Ý0›Ëx—ïÀu_ôò‘3&•YÔy®ìÔ¹Œýev\w~ êAFŸ¡;îž7õ€¾28ßóNžyy80P:%úœÜG>vmºÿü¥¯éÀÅ‹—Î}ùÕà#óŸ€]Þ½þ=¯µ.(-úgYûµ²mü¿iX8;V_)ŠÎzh5i_×Í%/¯X0Ÿî…ÉÌó~@Ì}ÁsØjÐÃÉO÷Â?=®êÓ[Ÿ™û'Å­©JHŸœÝ~à/¶™9h~ÀxÌŽ·¶Y—,DU ‚ 2F|å¨>®¼ý“}Yy'µ—¾5cÒœö¾7¾<5éΛN}9°÷pûé×·|ð†‚¯ZC ÁE½±6SPT˜ Û¾úOS¸·[>ï=¼¯ú§mO}àóÞ[fߤ²^™4š©wÏ´ükûµß<ûõ‰ÍÞ __<§ûÞôY™xg×ëÃW¾¾rÍ7.ý©Óž"Ñh¦ÞñHƪõo€F3õû·ýõÀ_DòfÿK;—ØãxêãÐÉ¿ž:żÈ&Ê– À_O¯¿ª'Ndp‚ ‚ ©Fb}å§_Ù’™ßõõ•“§öÛúغ¥Ÿ|ºöúщ¿ù‡.ÑÏ ]8}ù›“?üÔë©â.Oþé¯~Ú¿–jý[ ð½kgï»—|¸ˆ|¸èÉ_¬;€ÞÚ4ù6ñ@Þ3sƒ>tñïþyÕ½Õ=°‰ -!Ø÷Ö/î!.ª©þý”Çm35&¯øñ[¶TÙGµ0eŠ‚ ‚¤ ‰]ƒ1á{G†_§/^¢AsúÂÉñ®ìøèÀðùaú‚†¾LÓÃôþ½Ï<rX5yKþ'Oà S¤T^¨ê’œ•Ï_¼›¹|3µ\”꼚ÍÌGÃ}-‚r6/aþà()—_ãÿŒ_+TZ¯Œ ‚ 2–}å¯Î k¯¿4<º0˜ð ×}çÚ?t¬×\£>7¸B_ ÐÃk®¹;c<ƒ_Ã@AdÜùÊõ=qëOÜ+M® _¹| =tÍ•á¡À•+@Àú  é+W.<ú!ÿÂæw{®ÞÅ ÿ¼ùÈŸÑ”b…‹(££Œ ‚ Èøò•àà{[£½äUܽf<¡:¢ÜÕTRçÖ²+ìizúò—j¥yõt5•tæo*ËkòpåÄP`"t±ÌùÑ´©:FÉÕ.8iYãS•SpB&]©œ°å ¶Õ¬Ú©¶Þ˜ZwŒ?\»šJê :n=“öä%á%œa¢è…˜äLÌ`µ¬qR]‚¾2‚$Õë• ^AC›!Õ½åTótSPÈܲM©l«©ƒêMÎÜIž[¶iS×5m!'­«©¤Y÷’Ó™ƒm5%Mì'¦ÓœeÌa0]©åòYGvyøeŒB\~ìÙí\ÄVÚÕÙPWŠR{\¯6›™ò½ÜÕT²ª)¹"L/„)?² E;ô¢ÊßÕTU¢ ‰ -ªI¢þFn~ÁÿÉÐ}¨Äb±””4uñc* /±«©¤©‹K¬iÜD—w5•4u ¶Õ””X,–P^q™ Uó¼·Ö]'(VšY6Qán[RÂ)$gðrVžš¶¶¦x )¾HNaj Í\(è'.]¦ “Á¶qí]M%5[OÊË&','ýG òs¥­áädˉd¼Æª2lèê<¶¼‚ñüÒU,?ÖÙÅ–Ü ÕA—)·hù±f‰r„å(§ç–mÚT»(]¬Öˆå3Í‘í¹_¹™»}ƒÁ6AAAxÃôcWÛ÷ñÒ^°ØUþeµË2½+ª¢ÒJ„cG)³`X5u…®åeU3£Ê¥È4Aý¤¤¢$I`\I2±­Wlk>¶¼¢Œ=nð/ÛäÌe'ÛMe¹ 1•ŽºÎj&TÆË ]MuÇ–¿ä\”6ØV³*˜ÐQ×°ü¥M›ÒÛjVµv-*Ë•+S®j¾R ¼8lE µËÝ  bÓ¦4æ.Êē“—‰ s­‚Ìü8 Jjl«iêª-ËTK0ŠÇÄàØGßù‘Ã`ò]F'Ë J:»ÊrsvR´¿¡U"[$y„‘Ë—jJjä—ý㚬G$§¡è®ÎŽº¢Ð™ùeÁSié™üÆñÒtžHS,GEzdËg^1PSR*–Cåçg63‘å®NÈχŽÎp†¶¨¶šUÚ`[3T3ÅÇS{]Mͺ—js¡«“ßœêÎ’U5ðRí¢´®¦Uþe›ÊÒ•£®wMH4ôÔ pŸ²t؊Ƶx×Toræ¶Õ4¼òJ³æ¶M›Êx^ÝŒ*—"×Õ“ÒUñˆ Á¸2‚¤zD¹cM0z×Á{Πo7°ñŸÜü‚&¶3E7£Cå)àBe¼œ]Ë¥@Ú¢e¡‹ ØtZzf(Ð$*S¶ê0·qiEJµËÝk¹›lH$žœƒÇ2ÓÙ0ײ‚¸ ©¬Æ4Ãl0-b-ƒ¾Ýp‡sª%ÏàÕwY8ƒ ]­2—.9Ù"Ê#òÕnª€†’’0‘TÆûfŽJíÿ£:òÊ¢´EË .Ý«ëP[N¼Êç«eS4DŽÍçæ3‘å®NÈÏUaعeÕP×ÔÖÖ°ûŽ"µ”ÊÖÁ`[Mg¾\¾Üü8òÚc‹eM‡ôA‰`BjøH†-ŸË3MKÏ)!Æ•$úõʃm5­éÜíã¤ÿÈ÷c–×€S>{_ªn*)±hµ#~3‰¯•)[uâà½$_×IÿH—ILœ\k9é?’™Ÿ•zcÒIÚ¢e™5ìÚØ®ÎŽ‚ü28ù±Œlå‘wv‰×ûò$ E"cS{4«QsË6A“ŲLUÕǦD.'^åËèŹºšJJê ”_#ËÍÏlö ¦û!¿  S…aç-o^µ!³zSšZKPÙº®Ö GÜZ‹;/ê(a_ïëjjÖ½´É|F‡eÚÑšP„/2CÓ§à8ªUvÀJ›0ú“‚ ¯ŒŒQ¢ú¾rÚ¢ ]MSW.3?OÑÍ(¨ª•ÞÓrË„ã¨L¥ªÿÝ ®¦’NÕÆ]Ècƒ›ÆÇZ¢í2yäægÖµv-*›\§3O äæÔI$0!åÚÜØÕ.ëêåæ4‡´=8p¬ ôÌrËœÜê”ÐZ€x8ÊáÊ—ï†Ç^;jªâV¢(”WtÇÞ†fͲZ€.5†ÝÕºûŽå¬kˆQ{¼53‚ …k*ró ꘺Ë ×;±˜Pl<QE)ê›0š3'‚Ä\ƒ$™‰'2ѬWN[T¡kfe†ÖD¢#ô¦KWgðkn~AóÐ~°­9ʯjª>60ÈÝ!¥©¯÷âÑàÀ1Å›pp…A[sGÜ„qdÃ*îUßîL&OÄZZÃ=ÖÜe‘t’[´üXgWWë†Lö¹´œl±Éîˆ"öÔVù—‰â„êÍ’)!´zC(e憆àûn 2¥Âø'¡°ž|9Jéj(]:ØVSRÒN§ŠGi† ¶@¡»šê`Ù¢EeաŠОØãÀàÀ±Ü2ùr¢,_Ö„¸Õ p~~±1Ç:‰Å6­©Ÿ£bž”$…À¸2’dbܱ/mQí²à£ÌEµùM%–5¢oß²MÕÜÛ'Õ/éšKJÖhµôôR.ȼÑcyMKÓ¦êp/—È”)Wµ0SÝÉ}yJ¶"Õµç–UwZ³¼@O/]^ÐQWOnÊ—ÉTRbÑj§—–r_¹B ª«aÅ,m‘ºZØ—›˜ ¦ªê‚ŽÎˆêUê²0:©ÞT– i†;Ž­ªƒå/•…‘MAÙ¥è˸¢§ç]àv³Ïô¹òÌR>èÛÙqÄí>’æk] až¿£¬PŽrù\QZp[ÜÒáöë¼¼w¹ÔÚ2U†ý’îÍ:`Ì/·¬º“çñÒ^ø9¥ÄÂ4|z©à5<Ùr{G¥ ñ‡žš.ªÒ*¦µý¤bF•¦(ŒGµ“ÒUñ…Mdœ¢€Ó§OËž{þÕf *A5!qàé§á™gËŸª¹îË—2^2?ºÌýéxkÛ—³Ì‹gíìhcrƃq6¶Õ´¦_å9GÐexÛE’8ôVù—¡ñÍI)þ¤ýîé´Ægà©§àé§Q)ê(k4WFR‚£ËˆØCĮƯêŽqAeUÛCG'%d̾2’dbû¾rôŒ‡wò_ZÍÉžFƇÑ⤄ © ¾Û‡$™¨wìCAA_?0ßWF= ‚ ’jà dTù–wgÑ„ƒiþß¹t‰êØ¡£¹³¦@Ñ¡£__ùέgnšØ{„ɉ ‚ còžˆJ@_A|ÓûÁ½ð‘Ì©iÁôiÌßCŽBNAAô•‘±Åw2ÿ»÷ì3Ýž/^dRöøÜn˜ÍeÜã;ð÷áïæå¤>ÔÍ䌂³yÛ ¦û~Ó’ÿ®—ÿzË/çë®m2¢Þò×Àþ]/oùâŽ;¾»ûŒbü»^öN²Ü÷ƒ‰pö/o;Ï9_'-g”›÷JE-ÕþOõRq ^´ÿò–>YeŽÈ&G÷G$u9­@õs/W?÷rAâ gT|cãÿYýÜËý×û=Éüú7–Öî'î©S»»céîÔžÚ9¥ûÙS{öÔæåååååÕîaRæƒÄU0× Žú7–ÎÉËË›#¨¥vOÿÆÒ9sØÄ`EÁ<üÂÙze/ÏËËýœÉŽðIDATV©Ðößlìgÿ7Â5{jy³ÊS*‡Ë¤RNÙœ¢65¨NTárá¥7†i‚fD ÿg ³ d¬"B§zAI}ßíCR„3gÎ0{ߨ :­ Iˆ“³[ÉÛu‡l”üÎF°;,l”Ïe³Aƒ×ë}{uOcm­Õmòù¼o¯îa²Ê ³”ëë¡“G½¾Ü¢q’½å>¯×ë ÖÂNåóù|$Š©ÈëõùDB‚‡²õT¶z½ÞÖÊéåÞ·W¿J%Áj,:ö_•xÜ.}—[—¥w¹=aËñ‡m&_NUÄæ 6V¶L÷x½^¯×krÛ\2BÊNåóz½´»"73ÍÄAÚõõEV§?Øz‡%C¾jÖ& æ* Hƒ¹ A¹*@_I2“&Mbžxx™:—2$P>ŸCè ùV¨`"AÚÁF9d{¡5䫿T2^‹.Kß}d:<çY+{Y߯ïlì©,%ü»Ú!;ƒ9k2»ÜA/ÒòÉ!#;'tBⳚË-:Æ—¹\ ‡2Œ< Ê3J=©™!9=n—ÙDDl£W;×&¤Ý,S©´p_ëâë,åæÑÐŒ«BM„É Ýkï3âÖ+Ù$è,ŸÒh4ŽZG"‚ #×+#I†‰(«s”=”Áæ2Û}^RîœÐ) ¬•Eõz»—Æ ¬ ŽÃ ›_ä.¿Å¢óïj‡B*ú{»»[î3®ŠMrWYvÊ`0jµÅ ^’ˆY=éó‘Éé5ÍŒ¶@½IÃU5ªš1 {ÌCl-Z6¬@ÓÅvIx¨ÆìVŸWÌBäùŒMrÆáµ€‡2lf»oÖ ‚ ¯ŒŒžxxÙ¤I“Μ9£ÊqôPFcÅìÕo }Û¥7 ]'£½°Ò\ïöĈ¼¥\opx,&w½¾Ü§€ìsƒ#¢‹C>éwZ‹(OìþÀQãûj1¸Ý&scŸöu´¾³)¬¯™¡®™LÎÑ·š8j&†Ÿ+B{#Lf›ÔÎdl’Áï´Þ·ö@qCÒ~!‚ êÁ5HJÅze‚ôz½’eŸ)ò“<” Ê-R°Ô6VoÉZÙSa¬è©dVsèæö¸c/“0™]̪¿³Qùñ}ÈQóòðÀ$Lúz’Ñ™ßIÖëÃ×E3ٵϑÚ(XÉá¡l.Õêb×p8]QkFP)ó !þtFvNOŸŸWl»\EØw‘‚ í½^/Æ“A® 0®Œ$.¢¬v½2ãY>‹ßi¥{±`«<—Í ^¯÷íÕ=µµV·Éç󾽺GåÞQ £J3é,5ûïH\eÐeé»{û™Älë8÷÷vë³tB“h nBQ¼(=1á>Ùɉ”â(ï-¢œqð”Àd :Ë7˜Lq”·‹§`é.æ@­Ùâ}æ%FKåóù|äí‚»cQo¹Ù–üv™«bu•¯^è-kíPš®8o—mšÛÄn®^Þ[ÄV)ÝÕÿ®öÚܱfÑO‹¢?%¬F±p±4‚Q#rbl=•­^¯·µ’?Í„ú”nDéõz)hw©s/•§t‘$¼t‡ 0ÁeÓ‰üc.œéózß.l/RTˆÚUŽÁ~/ñ;­Ù• ÷„,Äëõz½ êT0Îrr\åÐ ª¼·(®ñf@dy/™ÔWçÔ6„Ö{Ü.³‰dî ŸÛ)AÏ„Ïõ¨‘£¿·{„î%Ûo¯ž-~L$)°VöÔ×ëË£ŠÄ6mFÓ–O©ÑRÙù™‰rö¨ô'^lyó‘×ë5¹ ñ~s}e$ÙD³^™ }>ŸÉ\³Ådn’Pèö󴱉0Œ¤ì¥E§.æÞ,õoÔ8®º,}w¯›™3ùÇ¢I’¿ 0ÖX_û‰ÁäDž2Ù^HY,dkvc\ÜKÂZx”lL€«L˜ÌÌ*ñàÝ=L¨H²Ò4R°*οe¤¶–Þ²º'&3ñc>%¡²‰FMâqέ‘)Áãh/¬ý9:Ñ“CŠ´Ti~&Ȩ×rDà‰ì-§Õh4ºM>_¼Ÿ¢¯Œ$ŸèÖ+¤×ë•<úU^롊ê[GXù‹ï<”-´FŽ0™]6kj¤xÎJ<} Þ$,ëyÜ.‘’8©«¿W|§¦@FvNKK #)ÿ8L´FY\ƒ‰h´2kŸ…WEÙA ?!ÚÉÆž8Aþ±+ôî‘â3çÈ !LfΘùÇ1ŸÐÈÙâ„ÉìjdßCmTh`h2ñ;]#è/Ö[WI Êå ÷Bõ¨M›‰žR§¥ñº+Eàò7#esÉä“Gâ& $P^¯7Kñ›qHJÀD—Õ6Ngqø,~§•ò8d¿èäª0¶0G4]l÷9A$…2Ì_Åv¯…·PÌg§Œ÷׆.Œ×  É£ºd‚´» ETV¼dkŸÕ`¬Ð%±ˆ„¤éÙ•­¤NN“ë|&A$bäêò¸{DßJ’¦èæήæ–®ËÒÓ4oïÌKÓ\[H]DñTÕ¨l?*ºXþ¿ÓZÔ^ØêÐ…œƒB«ôëQÑ;Ë©BñÖX½i¡ÅØÌ Dév¤Ì^Ý*iHóL#T-gÁz…WEÙA2–ü-RÔ=â±LÔ4³½5»Ñ`¨Ðjév„ TÓÂTLŸ ¦bº‡ÿk/úS¢ “MvÔ.gl\Ët¡¬ ƒQ«½zuèdrCX•!—¿á)*ý>!¬‘÷¡Ï¸M›²#"ñ“Cê´4LN€b;óqÈ‘p‘…nFÅ v³Ë-mšB‰¨$P>_b_99­@õs/W?÷rAâ gTŒ™q|Ã{è¿ÞÿèèY4¿1ÏžÚÒýR®ö‘1×A{jçÔîAKãÓ¿±4¨’‘73u5úÓ’‚à $U"ʨ‡q‰ÇÝ#^ª'I¹ÚkDÆgKãmÜXÔ[ÎÆ GÞÌÔQÔèOGHŠ¢aâʲ熪|ՄIJþƨ˜íú¸Ýûü¨/»?¯ÕåDóCA$i޲Fƒqe$%Àè2‚ ‚ )úÊH’‰æûÊ‚ ‚ è+#ã Œ(#‚ ‚¾2‚(Ý÷•åñP#ݧgä%$®(®À8–,­Hô5biÊ(#ØJŠò$®A3ýN«ÌžOJ^ŒhÓ#+6>–¼Gl9)bÏ µá¸FÊÊ›lr&4Téná©0êã'X‡Ã(÷r"d榠¤Ü7S§D’p3§ØÑWFR…ÄD—¯®™1.ÍŒµÉþ¾žÑc’”ц¿•TØÓ•‚fz(ƒ„B³TÁn#‡ÉÍÓo´é±+vœXr껿ñkññøìº‡2Ø@y·ð„ºìG}C1]Ü£`WÅ–ä]a ºÚg›ɯ‘³@ô•‘ä3‚õÊ~§U8$üN«ÁÜ›ùŽz‹‘DûØŸáF•ßiÜy¿ÅUå¡ ”G • –£"^’‘½$;ƒý7B3÷„m²_½ÔSÜ×ï´¯ô;­†Ðqi©}}ô§¬â®šlªQ‘ãwZ †`¢ßie4æµ]Øp‚ôù–,±4‚äíûØÜÍ.ºtIòÖ/K–ZއŠB«áW(IlÆÁl¢è=”A.гHj” O¤FEQAÅ”¢z¬…›Y¤3OK²’‰{¤ã$ÂÀ›„Çí2ÛeÝÐpcJÁ,e¥æ*Õ/¾ÄS;§¸TQí"aä&ÒpÝ‘ ɬSS—d>ÙØ/_—x¶Ï}3Œ‡n¢ušÌx”Ìä2·ÎHÃ<Žà^$H÷"a,-Ú½Hú7–ΙÃÿŠûžÚ9Á„þ¥ìNü-öÔΙ3‡ù³ciéo~S<–É,³í€à[ûj‹Š(U › Dl¦°É²gdÔ)ú$~(…;êßXš——Ç—nìí”l5*³ÉjD¬¾–„üïßX:G Ù‚Ešâõ¼àl´ér5*YW",YnØŒ`pñdUÈÛZA˜“KåÈD §ñøj”5ñcMI6%-ÉÖ<VåÌ¢˜=˜R°4…Ç<гIÒƒÿûŽ’Úe5¬^©¡pbÊ7P~>Õ%1´Í6ŠêU¨Tf<Šfr™º" ó¨z^ñOŒ+#)Atë•=”Ñh$òùD›šíL‚.K/eNe+I0ºL§‚Ç‘žvÚÁF9d{¡•ˆ¡(©TÙ9¡ îEKô"6S˜™ &³´ÚHQeÐÍ/„Þ~èïí...îë³t±â×)«(…^=n—¹œÑ‡¥œ×À –Ø'Žly:K¹9|ÃeÐYÊC @<”Ícº\òÖ•Kfkx¤âã”(—W{p§ñi$w0'×f‚´›ã#Rx%ÈŠ'Ø2¢&~¬)ÊVKгï±…ßÙØSi%¢šL –1%¯ %…G¥Cµmð8êõå?¿IAí{_Ü^‘D ÄÐ_ uÉÏ'ágû„Í6Šê•­Ti<ògré­SMGp8°L@G I˜õÊ‘–ax(ƒÍe¶û¼dL•ðý4‘ÏaŽn,ª×Ûù{ÍÇXTÐ;°SƒQ«-nðrÏêIŸL’òý»Ú¡Ò)¥è²ô.·‡·Ëlò™À<& ¶S|e„ÏÆ¨Åï´Y¡UÁ]ŽHo7d©k¸Òï%PFc7ØÍ=}±¥ËÕ(g]‰²dÎþ¼ðPƒÍl­vpõ÷vw·Üg\ 4›xå´hµ¼ÄþÞn½Iw‘Â+AI<ñ|"5š.¶ûHB^¶ÈZ’ÕÜüB wù-Ï´’2™¨Q¸Jý(ÿhÕ[wù-뀑ïÇS˜¤h ¶þR¬+â|¢vÒ‹ÓlÛ`QОôÖ©Fçñè+#I†Û±OÅze‚ôùHe4VÌ^ýv¬žSô#ØÑ^Xi®w{H"^o˜¤ÏGúÖ"ÊÃÞ÷ŒÈ·Qt•“Ùæ¦Àe6‘@@è8æSU¨È¦³8콇Ç_…Ds× H/ã±y(ƒž'^té25&Àº"5Ûi½oíâÑ $ÚÁ•‘cnpˆzÄï´ÚÀîó²ÑM÷èŠQ¼8ˆËHZ¶¨~ù”ë Åä®×—ûtÅdB˜Ì¶øÙ]lŠÎ!Lz›Ãc!3œ=• à‰‡0Ù9IÔ@l“¿b]‘æ“è]å8¨Eå f<ŠnjtŸ{+®Á@’LÔ_À H¯×KiPõE³ž¾~õÌCÙ Üb!í‰úCh ðòˆòÕo~3ùÇ®Ð+²Â˜…x‚8…0™[ZZ˜«ùÇ1Ÿݱ#gó÷õäȾ”C˜Ì.æÁ¬ßÙ¨Ð@Þ£Yg£+\ÃÕÍçÒžQ›.©1 ë±%ûö ”×ë•7¯(—n~aä‘gow°Ÿü}=ýƒÌ¢”8ŠQ<¾eEMôX #[-1µøV¡êB‘Äž c»þ"šÉ„0™]6©VÕŒ)©”Wc&¬•=nÇQ¯/þt’U{TÂ0϶’¨õ“¤ºäç~]*'½xÌ6Šê•%¶ñq˜‡W¯p݆¿¯G¹¯ÑWF’O ßW®r ï`¤]__4—çë¤lqùÞppùÔ}kõö¸Ä–øÍ5ÙloÍnd^ènÌnek}`ÕÝ#š<¥)„©˜.fgÂTLÏù­±œ .»ÎÌPÔ[Š+ .gl4‹êÕIv°1ëžy߃“6“­±¢EÛR!x±š'†`…@Té’£°®[2#˜Ü²ßXè,“Û \HvýÚûŒF£Ñ@B¡™õc²5»‘Íé6ñWâÆY$5âñGŠTÔx5õ²)i‰ }å½EƒJ~³ÎR^LÏŽåûŽé *A(Iä1%5KÙFÅÛ˜uó {l6ÞﵫF ùÔÖ@¤ºäça]2“^¼ÄSü†T½J•ŠÆã·ÎHÂÎGÈúW£b–^ðíY†ñü«Íƒõe÷絺œh~#sÊݦHñieí³ |iÊØÁï´:²˜Gv£ß̱¬Xk*ÆZR “šF-¥ÌäwZE¡1„F£ÁõÊH’‰f½2ÿÉÓÝShÕ…Ow×à+#t±ÝgIR3ÇžbdÔDz­§²•DE¤Ø䡊êõvßþÑ‚qed´‘Æ•E_ÀÀ¸2‚ ‚ )á(k4¸^I>1¬WFAAAA$iüç Âu…_IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/16_udv_comments.png0000644000175000017500000002527712032647166026025 0ustar ebourgebourg‰PNG  IHDRíú€½sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEܤ~b IDATxÚíÝm\×/ðÿÌõ}wߘÍm Ƭz!ªëûY+"¶bœ^#à:ZâÚ¨Y/é%Ú¶Ù”òÐ@7ª´/š{+E©ã¢ÃGmÓíª´%n*œRU¡<¦kb%‘VûÂmØâº² ïðû¹/F#iF Œ¿ï‡b4sæœ9GóŸsFšCPl­¯¯ã@@±TTTð8 Ptˆ.€èˆ.€è€èˆ.€è° ÑEüC:N7ä„|–—¸—Ö º>÷j!û•¦£Ó }È>ÜÖÌ+´UwŸN§ës¯¦ïWòŽP”}mbÍS§€èRÂÙ]rÛÚ†üyau¢ßäåw¾ŒW¥=¥âù¥Ñ«´·Ö| K<¯:¥­â84GØ5ö•ræÓÛgã§]Að;ZL^ž÷˜úkƆ U9OÇwÃ!b”’Ècssƒ;Q–Ê£~Ôäñ,ú4Ò] 1j7vT±w¨,¢ïâJÂ’°ˆÃ>±åCþÄ)51ÊoL†ãfǺXZ'@i/b(ây¯¹­-¶»Ô! ÌœÈŽ¿É¦Ÿè¹û’[­eÍ|S;ñ¼wQÚ{ ,zyžÚ›’ñFº/å|*òÉn.[Y²Ãt)ES.u–(NtñéÌ^^éôÔß5º˜â½æ´“Tx¢¿Íè\*däŠãª:Ì= ŒÑJX 9÷’—€Cš~ÉÙåä,… ø-]Î¥äVÆ6s–8MS;y$á%°è!¢ö&M2Aé¾x¯©Bç²±œ›/:Z•ÅóKN£âc–Rg©q€âDAð/zˆ1½mzz&nnnP¼\]âù†n×ÌÌÌ´MODäYL\äò¼×é\·Ml’ßSM…ÂwÅ´Â^8®q`Ö®g,ç.xÞk6{YC·kz:3«YJp˜¼e×)ãNªÒHžFˆh}}Š¥¢¢?‹€âCtD@tDD@tD€ÍS|ÌÔÔŽäÔÙÙyïÞ½|£‹¸Žd1>>^XßE”ް×Þx •Pš^|îi¥·ö•~î­ŸG”š{÷îíß¿_é]ÜÕ€ÍÈ>¶„èŇè<ºˆ“ ù…Ô%C‰¹ŸUmõ)þ»Å”Õš8µÚ8ɽ…F£Q«­7ŠÌ"ãÆ´<´—ì++½[Äã @”ç]}ÉÑT¼¹„Ka8`Ñ&N³gŒ4éê¬V>A÷Òp0 ®ÿxP[ìÌTŸk¼Û‘¸úŽŒÕ©K|VµÕ7ªÕêìéZKp¤þ’ËGòIù¬êÞküµÞä¿’‘q£Z­Ñh$]ÌœÄÖó,›•ê“§iêz<‰Èõ):}²Z’^lÛø^RŠ–Ò’Y9õˆÉ÷Óäò,s¶]Úm6=¿äìr¤K9®qpnnffFœ[Þcr$bÏ{M‹Mâò%§±ÅFæ±…Fm±pt†TݶnyL©É[zi8Á`¬ÿ·Üêàõ&O†î^ YƒÁÄjʦÙàž÷É'¥µGαs#2‰ÄÒ¼}âÑI6'‘q£³v2æù^wöð’\|Vq€t/Ò¢=.=2J+Ï7‹{ZÉ’,äò,sŠÐw!Í€«»÷š¥7`’*kêR0¦·hÄåŒéíÕâ:¡ð]"Að/zˆ¨®FSSGD+á5Ò ÎÍÍÍ >øv°öH<H.ök¦Ç "ÃH–á.yJIɯÅÒ¯>TŸmó”p¡µŒ²ö^R{.ZK¢ɽ(MyåD€¨>yz9­P²yÎ<È9äûkÊÊs÷Bר©¿f̘[u÷w.ñ<ñ<±Ãï5·y‰çÅSµÉüWwºF¬jµ†çÏÅnžÜ¹uóæµ³šËbœ£sÍ…&¹½|¤ÖH[OJvó;·nÖ7çŠrñ{/'¯OÕw»ªSÕz¯ñ|~ùɹò[7éP´–ÉÛFµ¦Ÿ'"ÆÎ;cççøàϹ‘Ø·„«;]ÍVéš9¯µÝýškâ+ÆÎ]‰õ O*õT-·¹´ ç†G îy¥ðrøRÚ¹_k™×œÕ\&b‡/\4¸{Õt%جxÀäW6ŒŒP¿F“z³çYæ äˆD´¾¾žùÆÔÔ”ì#û°×Þx O±(A–K?°^|~||<3XTTTàI0P|ˆ.P|e0¿Ë½{÷0‡¢K1½øÜÓû÷ïÇ­D—â÷]POå÷]Ñ]Ñ 8öíÁ2ïß¿€¾ ºÀž—×Ș ø-&¯8kè6Tq8v°ù¾‹°êîo1y¨Ý6==333;k&›Cy"–‘Ç 1PJÑ%put‰çÛí±y$9®Êpe01§¤H×ÚÚÚÚÚªò§ŸèýCâ[}îUaÕݧÓét}îU!ÏuˆHVÝ}ºÖÖÖDØHlèv÷µ¶¶Š+'ºV<ï5µÄ"Ÿ˜Z,oº¡Ù‡?¥]Á¿è!ÆôM™wWÝ}f/¯·MOÛô¼×Üç^M¦Ë{M‹MÓ®îÆ–œÆ™ÇzTµM¬ÆÏï9× 8ºFCªn[·Š<&G@šø™§]Ý* ^ p\ãÀ¬]Ïc±Ù”Áïè Åû[ssƒÅ˜bŠ×wQ<«¾…P,ðhšôŒ…|‰ÈÁ˜Þ> ¡Êš:ñõpGeeM…Âwã)d_G lDu5šš:"Z K7vTŠ’gQ©;Âó^S,Pq\ãàÜ @©G¢»áPêIä(Zþx¯¹Íìåù‚ç¸Æ±žÆø%§±­mÈÑ0€RŠ.רÔN<ï] d¾y F•º@Us ˜y;P£"Æô›Ý⪠WæælzFD“·[J«ï¢9ßÓÀ˜ÇÔŸ¸Ùîò ÇUiO©b'°èåyÕ)mUñÆé»&Öò ED+áÔu5v=c¤ª©Â—Ê Ü¿w᪠ó5ޓӨæ$""½mz㈨ÊpÅÖ™Ím^"¦·]1T7s±ôÆV'‰wì5Ê¡¨ÃܳÐ5ê4¶2ý+3'Þkýfì:¤ê1wTqT6ÀÃÑúúzæSSS»ræ.‰ þ¡Äʲ·ž%Ùr ª»O§Óõ¹W% WÝ}}îÕ<ö•óX)­Pôƒ °iûp ¬1¦·Ï4rœ ø-&SËJÏØ°¡ŠS:);LFíâ&DôØÜÜà6äŠãª´§TÎ¥¥ßšÁP%.\ó-Ð)sÇå±yãàöd }Øí=›Uw_¼ç!é߬ºût©Kâãþ¡ì—ä×8`oçù¥Ñ«i"‘š~¼<Ïó^s[[Zß%±#·»¯µµUÚíÈÌ•´çÔÒïZ‘ËO¥öTc¡ßj¼ WGé”¶2­Ë5ä—)ffÆÒÖOOô§å65šÊå\îÈ ºÀ®-‚ßÑ5¢vÛôôÌÌÌÜÜ Ø“8ºFCªn[·Š<&G ÙLy¯i±)±š"M“ž1ò,ŠgÌ´Ô8®q`Ö®gŒ1½mzZ65ž÷.yÚÕ­¢P"JÉæ*à0yy^o›ž5Ÿ’ÏL¥ö”Šø%g,™À¢GuJ[ë—ÌÌÌL»ºó˜‰ó»l1³¯¿@æi›^S¥2s®tä]`5>ÞkêŸX•ô=DTW£©©#¢•pâ-ÆôöM¡L)µ,Ó;*©²¦ŽHŒR²éÂjx…k¨9@±•eúRUÆv"ò,Á%eX,cÃÅ”[ߨQ™Só9iGÑv Žkëi`Œ_rÛÚ¤£=<ï5·™½él‚à´¯{› ¬ºûRæ ÎÞ*ÐfÊñSŸ˜4Zi~è-ï"ß&±×ÚϞ껨V\œ 㪴§hÁ—|@ýÚ„k¥ç<æ;ÙEbs<ÏÌÌÌÚëF»ú‹`8®q0ëìÑÒˆ’seD—òUg4׸2Ó‹sÿ‰8}îÕd›ð‰ ‡üÉG—':@‚°êîÓIŸÊŽkÛ²S©=E ¾ÕXõ­ú(mIi«=e¤¾NoPBƒ³öºÑ«¥Ï/ ñ¼N¡NcÕ½êîÓétº¡Ù‡CÒå‰ÍûÜ«‚ ~G‹ÉŸ4!£ÙÈ=â­.­É!º”þ¹¤Ã\ãJ›íUü™gggff¦]Ý4z5ÞÔ<&Ù¦§§]Ý+®¡¡þŦÙÙiW÷Š)ÖZ›°…³333³v29{ðÚd÷„±÷²– .Ê­"›Ì&¥EÓÔîYTúü ‚ßa"±¯3ÿ ]âjsɶÇd#óìì\ú‡ÝcZlŠõ“Œá.G€ãfíz–>=(¦•ž±™™™±žIS‰¥œ“Ct)©øb$×ΤÚ8®qðŠ!6‡ReM]r]UÏØ@#ÇQeM]èÖ_›ã¯ã>¾ŠMì'i²Pf׳’Á11¸ˆ-A¹UòšDÙP¨¬5*Ïb åÒsÑ#™V4¦Ý>,;ëZ{r·¬ @LÖØQ)ž‘$kÆSίɕ¸}{ïlÒ8`\ìŸXîHí¾´Äæ¯e¤oФIæšÍœwön8òÛœD©[Aö^l¾Õ­o¡Î8\™«Ud&QòÖÂ+ªšó •ÅqUÃvGKK+ÏëmÓƒ„@t)4À4û&ÖŒ‰«˜‰~Ùgg9Að;ZóKæ@ªÝ6<€q°]^´P×t%^››jh%\| ¡:cÇ ‚|eq\ãàÜÜÀª»¿ËáŸÐÐÛ&íÑß»hΟZ°¹V’—œªXy-¼RÀˆÊÊ"†ÖwCw¶J{Šœfg]ÊHÎV±^‹!šD9üC]£Ôs^“eq\UM'ï:õˆw‹žö¦xèZ ¯¥ 4µ{\kD´6á’¬‰¾Ë.8¡ŢºB±š°/¶ÛœD¬¡»§Ýcj¡WfNäL¤Êp¥iH×j扈1½}v@CGËbÓ,®^˯÷Ò0š\²· Žk˜%GKK ©zÆìí]‹JM-a§yÌm^ñczûìp¢F>¿±±P½}Z\S30îoi5óñu²h·Õ¸ZZÌ<Ϻdž5‰†ÔÒå¨IÝV3`_léjuŠÉjvçi–ˆÖ××3ßxí·¬ŸÇÃÐrwŒÿÞ¼²ŸwœÙ***ð$(¾l#c÷îÝÃsøÐòÒYý»ýòw8ùD—ýû÷ã9Û@D–K?@c´m Joad 6Ovê0DØ¥1ÒœÑÅgU«5F£Q«­¾Ô%‰å7RªÕÆñEÆâ ij…&%'2nŒ7†”º+NòFfã)0ÍȸQ&i²ÙIFši ,[–äò“ï~¡d$N8x[ Êõ{—ȸ±—F‚mÚrÃpÀ’ºÌ· ]質-ã']'O“åz¤³³:žœsù¢ÕR`"Õ¨¥Òú¸ö._¼h [é‹ç›ƒKìCIA‹–ˆ´–`Ð’XÁ8>)_› iFÆgnuƒÚ,mÒgUŸ± Z´y¦)ÓêòÌOžû…‚ÚÒ|siCi–´– ªwK²÷]îܺihÞÄÖ6nÞºCT}ò4M]_äE®OÑé“Õ…&¥Dk ]‡Ò¯Bœ4?Kh—WöÙjS6Mò¹¦NOfžzîܺy¤ö`ü¿ƒµG$ÿåLs eÌs¿{¯gﳦvçbý¼”þ_bÍØ@Eï5þZ¯Lÿ@)YŸUmõEÆjuÚ8JZ/ÓgUËu£¥}ßÄëȸQ­¥´MÔèXf4|OVRÞÌÝe¦sô¨Éš6Ø7ÇïdÝJ]Â,>ÇÇl²ÖYø @dܹ|Ѩ¥ÔðR`pI&å¥úP}f ñÍ» ;Gn/׺“9Ú¦µŒÔ_:#¶IŸõÌ­îÂz·îþôó9[Úïnåîo@ Ø}ëLü°ú¬½Ë'ÀäÅåÞØBŸµ—†Å5ƒ–ÇIk ŽœcçFäû.òɹ{-d ƒA‹V~/7:k'Åm›ç{Ý9Âã™[ÝÁœY’ÝQ"3·/Ð%—LŒ””WË›%¶»ÊLç?þÃné®—¦äs]ªïîä²n,át®û.Õ® •,iã̱hj8M.´5þÑK†—Œà’"Pêñ¤³;Ùî}ÖÌ´ÏÚK#…Uç[7“§˜æyIÔ6èæå³¦ß]X×Zk @ ðv­³ðK¾Íïw3$ú¬¤m6¸ç}±K CwgµØ2â Ö‰½Úl²Dd´"Ù½¤œf´–CÖà2ŸWEÊîH’™êCõ2[e–7r}ŠbWXJ…’vü#ãÎå‹Ïjóت\£K<»oI~¾ bL–†åÄ·/®?”,u<¼D®OÕw§20kž/ æ›G )Ý”Í ¯¬=’<Åh-#õñ>°Ïê¬ ÆZNóü¦ª;]#ä,¬O^ŒýîíK×õª7Õq,袤DΙå½së¦xu¢Ñhú:Ué—ãóÚªŒ£Kk/u4°Pœýî:îämùä8“¶ÙàvÆ~”àÌ:ø$9¤¹“ͼàÍÜKJØO¤÷7&VªÏ¼FÈÌRþÅÉqN;yz9K­ñâr¿¦?~×9Ï­JѾŸAuï5qn>vn$˜ø4ºû5×+1vîJ°9½SØüjõÉÓ‡/e—ÂÒo<]Ó\c±[ ií$N|óî›×®i.Ç«8þVZ‡F6M¢êNW³U£é'¢ÃÞvi¥ÍB­wwøB¼yä“f2Ÿç†¥ùl«´ß=Î02YëT«ûyž¾0éJŽdΫÏh.óŒ jÓN&çFÚäZ²_ì–O6£k¹ÒZ&oÕš~±–G îùx7‚¬jµšŽ\œ1œ™O[9^ËòY’ÝQ¾Ÿ”dyÅËSüFUwvŸ»ä¬ß=Ês«”ã üøôY.ý2ÚÃ6ý`¥Ùá üðÀìÃ!€MÙ¦_³ãGò»D¶‘1ÈIvdl_ö pÔ€pßÐ@¹1(½…û.P|ˆ.°Ñ%eJŒ´'‘Ê-—£%}6—|&ü€’¤<ljÌü.›Xöj{Pšã'5Á:oH'¦J>POòpeÌ"£`]Žù;ßAn|ûè·o‚ Ÿ?+ûZ¸ñí£Ïþü޾~Ú;™ïB™ˆ7†”Zn|ûhâ¿dE+¶’<Ö‡½Ú„ß>zôÙŸÿ\ùü°³§ŽÌ½o%?»ê4hþÎ÷ÅöA “<ùÉçºT/yŠ©e¤^æÔ„9ZvÅ9N|óË­âo׫;­ãO®(t}Ø£í!×|<™“Ád›pE¶#™ôE®#"}-™5ãYT>kŽ™`2æbIOmg‘¹‘9pdüÙg­ßÜ¡É` ‰.‘Û˱gìd<úGá¡~˜£ewQšã$õ ɧ7º>ìÍöÇŽRg^É>áJæ£ ™ôÅggm &n!.ÛL0É c´ò©mã,2'ž)ít7ÿ·š &Ÿè›sEm!k^yÃ-»ø|Rà'˜í¡øí!ׄ+W¹…Lú¢µ$QzNwÖŒ¥–*ÿÔŠ4‹LÆ 1ÆÇi§&ƒÉç·úùLE.³~dÜèÂ-»KlŽ“êD¯²_ º> =lÏ^}su!ÅJ<••Î5oý 3µ4Õ®ñáªçb§éê“§Ér=ÒÙY¹>E§­iÇnMlîÉarOÉÆ-»ïd¢0lj¶ÙútúäjAëÃÞl%EœCBœ&nØPض™Æl%µ|ÏÆi³æd̳c6ù{­Q:4è³öÊÞ^Á-»Œâ'ÚæúK±¢#ã–Ät …®{´=lâê¶ W šôEòÕƒÈíå{·•RÛ¾Yd(c†˜³Ù§XVwºF¬FüïÜH@>FbŽ–]EyŽ­%H±ö ™£Ðõa¯¶¥9~/× ›p¥I_´–‘yÍYÍe"vøÂEƒ»WMéSOå±#é„1i©-Û:‹ e̳S0¿ ä†çJÁ.j˜?¦È0¿ <0˜ßöÌó€`~Ø’‚çwyñ¹§qÔ ¥®î»@ñ!º¢ º¢ ¢ º¢ ¢ º¢ ¢ ºˆa0: 3IDAT¢ ¢ º¢ ¢ º¢ ¢ º¢ º º¢ º º¢ º º¢ º º¢ º º¢ º º¢ º º¢ ºÀÞ¶/ûÛ¯½ñŽŠ#¢õõuÙ÷öïß9Ý»wOúoEEžü×È º¢ @qì+—Œ–Ýw£_|îé²Î? ¢Ë·°{¡RÒʈè²%_ùâÊ%«ßÿñÏÊ:ÿ€Š.ßÂî…J‘-#¢Ëæý×ÿRÞãxåž@E—oañéCtAtœpQXT ¢Ënû¸òþ–yþ]¾…ŧÑ}Àå< ‹JAtAû@ûDäÊ>ºì+óè²í{oœp÷RE—KañéCtÉæþÛ܆‚pç_>÷Ýßw|ïƒo縌w}¯ë¿Féï*-ßù|¶Çß&"ÆÎ«t 9÷½z¬ÿWÿ0ݹ"¢ºÊO$»ÀÑ(»¯´|‡î»lGþ!eyÆ¿b bj#¢Ð­;QöW$Ý‹Âk彤Žhç‘T^¯å³úÇ «o½ô¯ÿ‘ç‰ç‰Éä3^Ì’¨èÌc[òÈ_"žsžÿõ·Ú~M<¯TÙVˆ×rÚ:•@aój ¥X) “£'[د¦C·îDß÷y>ýEkËuËëSÿú‹³Gkn‡Îh¦}Z‹\FD—ÍÛˆ ¶»Þ±?¸ðwU\ì߯wþøãÙ"}%ÅU… Êã5·{ò/)Ë3þ=pà¢%)ýÅ~éΗ_œ•˧bv¦¢Ó3 üûïfyžþ¦æ!FÂûøï,ÞŠç F)ùϵB¼ZÓ×)Æ·9¶XØA¬èR­”̶åâÍÞ!Ì>Òrå¨á“O¾n}göƒ‰ºé'?û|zŹáadl+íƒöçÿÙýãÿ~Xÿ²Ê¿=ùižÿøúû‘(ÓhNÏÿæ}?û÷×_œçyñ Biy¡».ñü ñ+¦Ìã{ùÍû~¶áwžç?uòØCLH[Méµôï3}µŒÍþóW'#QqIà{ß lDs%µrçnl×t¨Z²ëôåÊY½þ˜ˆjþ„âŽJ«¢Sóvã}ç?ÿš1½©çQi\½‘ÝDa…ʪ†øASNäÁ6qäc9+ôôÉ#Ê]Ê•’ù1ùÌñv"šÿíoÄ%Ÿ9ÞÎó»~ø›OUWnäýÙÙ\]6/Ê„üÿ6¢‘ßüüÖÿ9«‘.ü«G›kûã¿ùîFÙgÎöÕ2¶ð²îƒã¯~–1"bLˆ2AiyA%ž±m2…zjäÅV¶ð²î /{Yë+/?U•¹šÒ딽K¤¢äyïw>§{æLó>gškè»ü«Ø±JóÖºž9Óüí¯£,í¸e®À„ª¶Á¾OÑG?ýŠN\"›ÈŽöHÏÂ¥/="æD¬¸Ÿõ4f¯è’­”ÌIôáCµŒ1öÈñG+£Lˆþí?<ó?$ÿæ÷ÙÙ\K GDëë륟Ñ×Þx«óüß—K ¿ú‹Ìù‹Ê(ÿ;Bü?>÷Ò»ÔþâµÁÿY&ÃÐ{ª¢·»°Åj{¡R2ËXj***Êë¾ +ëQîùßþèÂIJr¾É¹§*ºˆ…ÝÖ€O߃WNÑ¥\úƒ»5ÿÛOÓõÖL TôÞ+ì66|ú]²^}”yûØ@ûÞ#—ó{©¢Ë¥°øô!º ï¸œGaQ)ˆ.¸}”ùÈi#¿{ä„»—*º\ ‹O¢ËnîÛ¢o¾G`d ù„2‹.³ïL–õ±.÷ü*º| ‹O߃W6¿w€rQQQÙ@ ø]Ñ]Ñ Tý¦ ÷Œr¢‹.IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/01_toolbar.png0000644000175000017500000005301212032647166024742 0ustar ebourgebourg‰PNG  IHDRÚ[qjðsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ !iѬ IDATxÚì}w|ÅÙÿ3³»×O:ºNÝV5r‘,Ü Ø¸€S„P!Æ`lL $„$ôf¿€I /$!ðÒ n`\À½÷.Éê]:Ýéú–™ß+Ï*¶ît28¿ýæs’öö™y¦ìw¿óÌ3 (P @ (ø‰€ µ¥9"Ò¤øB (P @‚‹ ŽãXù!Dq‡ (P @tœRªøB (P @‚Ÿ†ŽwWÇ)ÝùòøE+1öÿ†k^Ù2qË„E_ÜW·>: v½<¾ãóh„B.A†ï)_.£”Ö|~ß-oÀ@HÞß.¿)…Ñ¡¥ ¡„ݽqÍË›—ŒFÚ vqþE¨r¸\}ÁbüTåT @ (ŽS @ÈìW6/À]FmÙ²(%Š:¥„~Ññž QJ:{`ˆ¢Ëw@";_™¸ø¸¶K Ïk«öóûç½u<Á'ïÞdA”Ö~~ÿK;Þíë×û^ÝèËa÷+½è¥ ›ÃY®k?ëtÉIP÷ùýó/‘ýÓ{!wëù³B.â2KW_Ðó4L=V (P àâÐq"sÀ](Ýõê¤%+áš—~Xt9œs¥µ_7i·ì¿çË#·ÂY‡ÌzáÇÅ£{N÷rÒÚϸuéÉm>ˆÎÓ¥çtû±{ƒöàÏý¦@ (P0Ðt¼)ñœ_Â9ì~õÖ¥Çóç¿8eãcË–¼2~Ó¢ËûL@{Ö,w¿ºd5Æ3ÿºþË—óo;ÞÅ(Б 7¾H§<¶ f¿¸qaq_uÙâñ³aõšÕK&•Íÿײ¹–@sÝË_üȦMÐÚ/æß¶lå’WÆo|¤(Àxõ’ÍÝ´ér ´úó–¬Ì÷ßÒÝ[0^½~´þ£óo[¶ôã]7„溪2˜=¾¸ËZtýÜs»7¯3Ç”ßO€Ž?“¬\µróÎ…#‹oþ×O®|b|óîžlÁÚ/~÷øj<ó¯ë×®|âñߦ}ô?s-r½º—“Òݯݺô8Ì~qý#—Ë­ßg‰ýüêx÷íÞ{»WM™(P @? ユSþÆkž¸r 2óÅ GR¡€Ï„îÙ² 2SF¦d/«ª!#-}Õ8{4TWU„ä¤%Qš˜’ p¼›Ñž?_?²ñ¯0å‰5'ß¾ãÊedæ‹#DÏ[þî dæ‹ GRJ)­Ý±á8Àì”D?×ë¸àW×'RHÉ8¾jËî…#‹CóÆì7>RLi@ {ªx?ÍÞªûo:o>a&YµjÕ–Ý Gvé_!´vdžã„Ìž0’v|eÃŽšëoH꥜ò­0^óØïÒþ¹ìKp1ëçøJþH¯2 .\µb%ˆE (Pð“ÐñƒUd¾ò×ï*>+[ÿõº~ÆxÍW­ŒáDe !‰}9èÉPMå èŒ*9ŸÑŽÏÁ°¨¢‡×÷PÝW îx÷ÔšÇæ§~ôÖõ‰½”ŸÖ}¹àŽ·Oa,ó¼îFiG9Ï–Ò~•0Àã¶]õĪU[v=TXŒ¥}pB¨æúTþÞ û•‡È—¨¬!$¡—¯STôÐG”Ýñö©Sïüêªwfþù»‡‹ƒì ì9”îyóª'VõÞ! ÌI (P ``éxO±ã=G6HLÉrrÆŸ¿[PtÈAP†zù4‹J˜óÆŸ+§?µúDe5!ñ=•_"µ+þòö Èýí·WÝùÔꞌRš˜’ p’ÒÙþ”0àë…7þ6wÍò5~ycÑõIæ¢1³`ÍÚ5[w?XTŒ€îÙºc˜1¦ˆRÒÝhnJbNèÚ:ÒÛWº”3áº7×]·çÍi¿_‹W=ñÆÙsº£[‡<¯ßär*t\ (Pð³¡ãAÄŽS”P<)wùéµÿüjnÑuIA• —Øñ¢13aí·k·í™O·?µc ÝæeæWV]KŠ’úHàö.]Xsãës’¢{·­Å²S{)?¥5•' ÓO+{ª5A ¡xRî;e8Ox}°Þˆ¿vÉo6Ýõî;/|YüúuIEcfÂê5eÕµ„~Þ›CBÉR8÷þìÕï®þçWs ç$Bý×ÿ\MHîýs !…)«®%…uÛÖb ™–J =Çó禾éðä¶=ó aÛZŒs''œ'ö½³œ…óŸ¿zõÓk‚áÄç‰ï¥A»—¡{Õ”ü (P @‚Ÿ‚Ž÷;Þ¹i206øœ_~Nœóús•3žyïž™ï!ÓŸ_ó`QŸÃ—)Æß>3ëÛÎwƒéϯy°pî}Ùk–ûÌ,úÜóÓ×<½¶›Q@‰×>zßw/ïžYïöÕbÑüG«™1ã´œÇ#ûÞ÷_»6€RÚSù‹æ??ãÛg¾}zÆ™Ü\À§¿}zýÓê±]Ü’8çõç+gì‹7ÎVð¶ï=óÝ»/­(~mNáÜûr×,ïžYÙ÷Þ7,_Û“‰`ÍÉxmMòÒ™Oß3ë= dÆók,B ¬Ë÷ùá¥ïÆ„L~~¡ÜÚžïRåO>3ë[2ý¹×ç$ܪk9 Ý·tæÓßÉ͹÷=ÚÑÁúŠvû±{ƒöà«îUS @ (¸¨@ÐÚÒìãÅ ºñÝ}Ëf?ó-\ýܪùEÿ]QÿÅUS @ \BHJJê5XeΜ9Ý¿ðõ×_‡½ÍÐ%½1péÍœŒ+žñwŸaPõy Awußê@ (Pð“ Cw¹=Š/(P @ (¸˜HMMí5v\ (P @^ƒU(P @ (Pp‘èxdd¤â  (P @ ~:~æÌÅ (P @ ü4t¼¨¨Hñ… (P @‚B[[›â„óÑqy+çßþö·¶wÓM7}öÙgŠ• ¬¼ò÷·r÷·fÄéÏsÒ7‚µb2™*þ ÁÊEX«ÌÌ̼8V~­¦øSïJMþ5UÐ5³Êo~ó›3öÞ{ïEEE)VB±rç/ÐÊÿþ;3ÞpÁí¼J«eEñ§âÏ­dffœ?q¼V.˜³Kñç¥èOe¼+5ˆš*tº ò‹³” X ð£jú’ìRi5ÅŸŠ?•ÅÖK±Õ*ã]©éÏ¿¦ WÜô³o§ŸW øSñ§¥Õ*5UjªÔT¡ãÿ?‚a:®L=Š?(­¦øS©©RS¥¦ WðSÑqEW¦ÅŸ ”VSü©ÔT©©RS…Ž÷Åá@%@ ºD="47}öÙ–mÛ’,dµ’qã2çÏ×edüÄí„ñÏy¨¬Y»²±©qÆôY ‰Ýÿzäè¡;·›ÍÑ7Þps°w.¯8c³õ) ÍdŠÊHóVª¥K—–””øÌÊÊzðÁ•©G™Ê(­véú³¢¢BÞ½g·ÛSSS»_°sÍr£V;dòa·òãç/'¥dgšã¿lï÷ª°4tê]—DÏá=í%ÛÿurÓrŸ·=ÿŠ{†_óÔýÙ¾}»Ãá`†LÅ,‹P@ !Š@`‰5%ÇG)³ÁÒñ½ûöì?°÷‚÷ˆD›¼‰±NSStavÞÕT!”éð©R“A¨D(BH’ÇëkliMJJÌÔ/f¼k×®ääd„0Br_’hZ¿¾ü6gÎàßÿž5I{{ëŽë¦Oµtiâôé}4ñЃ ***0ƒZôÇ`ðû#Ù Ùv‡YŸ ¾þò D"…EEÏþáÙïÙ=Xå{î*//ÁJÑÈâç_|)ŒCåÈÑC­ÖÖââQ;wm¿nÎÜî:|pæŒÙ?ü¸iÝúo§]yuP7·Z­ãÆŽïSËîÞŽ™‘H¢ÕÕ5ïðA{»£¨(Gî%”Ò}ûN=ýôS¿¾óδ´T`X!¬L=A!8²Ù»ù·1Î1qž9=7¢ŽRüùÿ }ô Âß÷|o‰H.Š’’À hñG]]Ïó!J©V«MNNÖh4áZ „U^ yˆ¢ˆ1–íº\®áÇÀÆe¢|Î_Û[GcÒ qý´âp8.»ì2(++“­Øš*©Ï›à¿Þå°ylµ‰ÙC/•ñ~ôû7ÛJ,ž8 ßÞŸš’†¤]÷“Ðq›ÍvæÌ™sa+L”ÙÛ¶m+))2d˲*-F,‡0„ D¡„R‰ „¾òŸ¯.¸º·Å|eß`ïc>y¡Æ@8NÜMAgm:À’âB(ÖàŒtNÛå—ßþ°¥ºª26**ÖzöJ•JC)`Œ0Æ(ÎS§Ž>úèˆ)“Í—ùÊËx‹>1²  «¾~ë¯~5sÏ}JJ_LTVU.\¸°´¬¬xì„HFö,êä"\BòË¥Ýå)=qL’¤ïÖ}×k;uëß•![éqchÈC¥¢¢|ÚUWëu†²’’ã'Žåç üëÖm›£Læ‰&•”œ ½€Ïç=ÿejµ¦ÿË1‡6ÿßš<æu»Àc—5º àœw¿qã†ÖÔ4/e‘¶m'Ðhõ3ýâð+nV¦ž>=EÚÖ(\ï³W1M%±’Ë}Ýc^S´Z¡ã ÷cúƒ^ûÆ(úÄákǶÍŸ‡QßYGp\¼¢¢Âëõú éõzEQLKKÓjµa4$IRyy¹Ïç“4)))¡U)´QÐÚÚÊ0 Ô××GEEx<„PQQQ]]ËåJOO—$ÉápDFFÚKT RÇå„`E’$™)Æ!C†ð<Æ «©©ÑZ±#*2BÔœ¥ã¶ÆR,ù ñ9—Êx?³ó?c®¼ÑQú:"±`Ä„½_<•:|f¸‹!D’$c&55U¥R¹Ýnpº\<Ï7—J²¤ê¢’ƒµâõz“““ 55U&ⲎãRSSÁ[½çLrê Âêýý¶¡l_l‚%"~ð¥3ÞĘœõ‡c ²LQ1§·~™’\z`Ù¸ë¾ —‡VSƒÁ°jÕ*‡Ó9nÜxBh¤–€BG IÏñ$%$„ðˆ1nnn¶Z­<Ï mó“LjÜP/øŠZ#9JHÇj%ÒðT¬<–Žo ”¢ŽW1ùFN„|¥6`5OS—´jŽ÷ ñññF£1ð®ý‡Ôjõ•Æì?~rÌð¡ý¡ãþêøù8¥´iÛ¶dâðíýìÀß3 ó”uHŽyèäoüÑ»ëÖájÝ»·ï£KEBFˆãðw{JÏsñ¬QY(!„Bi¯IòYg…Ò ÛC4U­Ý^¾òŠ+&~µ‚-å·Òýný*Z­våª3g\C)‹Kصgç¨âÑòŸ¶nß2fôXQ”†ùáÇ ùyùýàVÿç»·74Ôw‰4¢”8¸¯Ë·R’S®œÚ§(#IÜN;ÇEïµæ?þûì6ûk¯½zèÐñ.—†Ç"Êõ—ç»!¡Åi·^ú8é¶Ó5vÈNŽ\öà¸Kt®aT¤±±®b¿Y“bGî8Ñ¥2 ö¨ ûÐòãÉuDF_åØgn̈ÚQJÖ”ýß™¯ ºÈx~ôÍÅ9æ8v@ µµµÕÔÔÈŒ§ jkk1ÆQQQaÔ“Ož<Øò¿ùùùÔj”HŽщ¼nƒ5>á¤ÿg‡uLª÷² }ŒžÑjÃHRWW'‚Z­–©¡$IcI’X–u»Ýµµµƒ‹¡Ó§O{<ƒÁàp8!DZ,ÛÚÚêõzóòò.uãy¾¬¬,""‚R*‚Çã±Ûí¢(EF˜4*½,Ó:txPrd{KmfÞõ!X©ªªŠ•ÝèõzÛÛÛEQ¤ aE"]MåÄçÒÇç?v$jìXµZmo®r¶6¦ŽœÒc_íçx—$饗^Z¿~}BBÂïÿûÜÜ\¹'ÿéOjhh¸òÊ+—,Y"¯…A£qlÿÚᣦ¸ë¶WíÎ.(Þùó†$ƒ$zÜŽ*ƒiÐE ãüãÇŽ;yòd¯×›ššjm³!¡=ê“&ÅèQ”GY¢õÈlÄÑz¡enÎo ÍÇqÇ0Œ áz;ɉÇfcwSù¹ksƒI‡mîΰX@,‹.iIå£ã”R8+ŽË¿c2ˆeÅ3o6‡÷îfÕÑ€ôA•Æ·û&¡i›OBÓ>q¹\G ükScã'+V¦¥$?rlpjJ¬9*d:N) ”Æ1Bm6æy–j´ŽæÕO7'Œ˜V±ó;ë÷HHk+`O__-!¹9¹”R„Ç Ù£³u\ ”R ”R „RŸ J‘$I’$"õJÇÅn:¿•?,d®»a½0Ú-Œ„Í÷Þ{Åîƒ~+bO†B*Ó¯ºúãOþåõzÐЂaß®[-Óñ††ú––æqc&H’ÔØÔH)\6,äžmöϳµµ5K?qÁ#„^{ãåऊœ>ˆ6G³ óüóÏ‹¢ØuÀ°,B(2Òäæ/ÀwÂ8õœ®±ÿñ¾ÉàË7]¢ !dÝŠí–MB|ì¶ Y–/˜y“´Q }e¬ýñgá÷ÜðêC,gùÙënž`¾vîØØ0ËÕvÇo^ùã¼7v²}sÝwoï¼sLbñÐähƒ† X» ¯®®î‘‹Ë¬¨ººÂÅÈ=*I’Ÿˆû?:thذaÑjÔëm-ãsGóbŒG¯k1›­e¾J‡ç²:8‘Žàú_/™‹Ë=“ã8A†‘™ÇqÝ~h8räˆÜR*•*11±ƒÁØl„§ÓÙGöÓŸz½Þn·B|>Ÿ(Š‚  ŒXJ¨ ‰v[›GãÖ°F/ï;¾k]ã)Ul„‘3g†`ÅçóI’Äó¼lE«ÕaŒ)¡„Ò½ßY[]’)©cU*‡Z­.=¼}ÿŽõ:NŸ3óçŠ+8pÝu×8qbÑ¢E«V­€E‹¥¥¥=Úãñ¬X±bîܹÁÞvÄ5Oضþãâñ3_KUÓSšaæÍ÷ïÚ´ÖÞ|ìâÐñJ Šþð'› ïÛD‚$ŠÂÈ2cÇæJ@@$!.-ùé8Ã0 ÃR@­´ Y¡WŠWó"‹`mÂW{Û=•ç_Œg¢BÇ;@ApǾZ„0/ŒQÑ“¿‡¥ÇÏ”Õä\và‚¼Gµ1*YóôzËà‚‚‚À¿B*êê9z˺†ÅX)R ãó¯ Žr°p„êäåZ•J½íNH½ãé„Óš¯K=ÿÕãŽO_àtÀˆLßG!!$IÄËö—Ÿçâñ—¥ˆ„J’$ ×½¾ëw‹c9wù¿oÌ^÷ËçÄ}Ǭ|¦0úÚ|æ2A"~+ROQ1!ƒÁ˜“»â›/ù‹;œNçˆaEÛwl;fü–m?N™|¥(ŠÇý¸yãÍ7ÎëÝéTÇ%"É<£½Ý~þ¯DDDöÇ"Bˆã¸ó9Š^$:~©ƒ÷_› Iêd/:Ó8D2õn¬<èØ±€ŽB¨GÕª?þ¤"•x<Ô ÷^óCS]Õ ë®™•[PªWˆÄéPëyÆÛÆùbWIY㙫/‹MLŽ4ê5(,ýáü\¼ #7›Íýg“rTX ..ÿ+ŠâÁƒåá’àq4J*=+—'Òãóz-f1D:Á³÷T挈Aai2ŸÏDz¬$I ÃÈR…F£‘ik¸vsÊ´žRÚÚÚš˜˜ˆ1öù|ííí~eáâP7£ÑèñxAp¹\Q¦èÆæ ›·cÐ31Q©.—]T¹íÖ&s”± •œmN¶ýãM™lD¬þª©×3Ô¥ûº½rÕ=üwe¼ðÂÅiS†aüñT&-åšg gÇ Vý¶¸Y$د6Êô,äÄl2—E(†e„5*qâxccc÷kFEEñ»OþëÜË ÄÖ8%X:.GZãN".w[Sd$ÎÎvÚ«žûË?–õ{Zöý¤¦Q¿´"†•ŽÀ'ÿïGœ8y,5%=&&öè±Ã‡Òë µ–Rzààþ쬃ÁØŸžêWÇEQê‹ìruü_[»vmO·…éÓ§ ´šûßAà7~¿…j’“jQˆ ÎÞNpè"Îrqžç:ÔÔÔ¤R©º¼‡‡Ž*x¤vˆ^‡V°ët֨ɶTîùqØœâœh–šRIíRˆÎ©¥mñe<|³³~X.–ÀE$EjØþÅ®´¶¶ö£Ò##'„ô'ŽüðáÄJ©N§Óëõ---òû\\œÓét¹\¢(îÛ·¯¨¨(Ìê¸ P¢‘€0ðNpJ Ž9¥VG˜iw†éõ !–eY–õëÇBDQäy^ÎÃÐ%:×L&ÆX–ä ƒÓé ù†A]_^^. ó>Ÿçy–áN•°©¾zÙŽQ•”㨛hã¿ât¾ÜnïÉzF˜`I Ö B(>>^–ÆÂ¥å‡mªµC†ž^qÚˆ¹ä(8\Ú.¨ãÌqIÍ;¾:Þ°9ÍGN4"M|LBjçO§Ó9oÞ<ŸÏwûí··´´$%%}ùå—&L§­V»råÊ &¤¤¤Ü~ûíÏ?ÿ¼Z­þä“O CPVb2 ŒÙš˜vHáOõ¾Ã¿;£j¢y±‰Ç>ú¾cxJÎÜ ‚ȃ­é³Ï> Û¶mkll|饗Ýn7!Œýe¡@‹”a ~†€ú±<Ç0ŒJ¥Â3 ƒ1ƒ1–¦7éØòfb0  Ç\O\› )kâFQÇÏ‹?ü0 t|ϾÝcFõSpŒý™‘Ÿ™S¤§ÈˆTÑN÷×Áf9¤’Ïëá% †ô¡£ÔÔÔ¸¸¸_Á#Ÿ×mŠÒJ©°»B˜ˆA®€ÌÅ1Æ1 “üøãöyóÚ6Ü|KGF$‚¯ñù–õ+›þï8Õ±=¬:.JÔË ûKÎsñeé±2Q¦”’ÞcÇ%‰öÅŠ`;vµùåe_ «¶âk~ûqÖ2V0çê B¨ßJ÷»õ¨L?qÓrsòÚÛcF?rìPJj¥”ap]}í-7ý¢Ÿ¸µÕ*SeÿÒ9œ8q¢·&ÈÍÍë§Å3ft²RJHïoM:õ\Š3™ úV|t()Á«…xDª`s3L3”N À€ÏÇГ'O644ð<ïv»{ èì—?Þk¯M €¦7c %MÚXRÏ4eÝPœêåámU¡1NŸ®ZD>#ç4 òTµW7´o'É1LT‚9ô@‹ÆÆFžçåµcùƒ¼Véöù|ò_ !<Ï755…LÇ:$÷sJiDDÆ8::º¥¥%&&F¥R™L&?¡Ü½{÷å—_ÎQ R•šbTB N‡¢¢4z.©µ,9•ˆ¦ IDAT›<4),=S­VÛívYA8ü“j¸öqú×X–u86›-&&†aùBHL°þ¬¬¬LIIaY–çyBˆŠSªz?vDm…ÍKnB%MÍ'ÓJ&§F³·$—lt&p¹œz½!(+ÉÉÉr!„a¸#µÿ4¯Úõ{NÜЦ–½Þ¨ó€VWvð{ç%êQ¢Adu’×Õ®RÅ„k¼¿ð ©©©#FŒP«Õ“&MÚ±c‡V«Ý½{·œ¢©©I«Õfff>üÈ‘#7ß|ó^xá…çŸ>ˆ'QÝ®ßÜ’•Ÿ˜œ‘dÛsºú‘êDM”I¯;ÚPyWvý©7ŽïxnèÄ,Yר:.ŠâÝwß]YUM)aìp'·àÿ×OÇCH¯)«ã2Kb0‹1®láíIQŒ·º€PHŽæ@§Æ ÆÀ]:±ã{^Ÿúä dæ_6,,îµØu_<øxré I=orØóÆ•¯‚Ù/¬¸¸oñ¿¸ó¾î¿\¸pat|TñèÄÄƆ9g·?^¥ %GÙö‚EÚ½<´Ñ¨ØHo«8²õ{¯£‘R X¬X°zÎ7eÊ”¶6»–¶¹<"% §¥ –cYìïäâ2·cáBÓ›o:V” Ð ¶ùÑÉ´<<¿hòä>KqDN?$ëÖy©1]HUçÝ¡Ž !’$3½^éx÷`•nV¼Žš4öýv·½óµ·5þãIuD”ù‹“×]>bh\RJ ‰„ŸŽÊ|üı­Û¶Œ^ÄqœZ­‘D!ôÝ÷ß^1aRÿGNçÊ; TÇå :=>ÿB¯íAïäâ€^uÕUMÇý{7Ï)˜öØÿ/û¹³³»•²Q6~}ŒXœ8ªU‹cX€x%äðð‚Dd:ÞÖÚ|òtI{{»¼—NNmvJ>ÁzB@ØÑ*q,—_éájÝv‹Ã]cLJŽIq}V—$åŒËÕ‡ÞA)ˆ^ÁZ+`9l`0¹S£þ¨³¨È\­mÒ¦»*Û²¬¾Aö†ø½m§¦fD¶¦MÈ+/Ç:]PTŒeYƒÁ Š¢Ì¹u:ÓéÔjµ,ËÊhµZBÃ0òJfÿe]Jisssll¬J¥JJJ’ikCCƒ¼LzA¡”Jƃ9˜b©qy«¦êtWÍɽzÅÁƒNÞU“oIìol·ÅbEÑápøk!Š¢üÙl6[,²³³NgMMMKK‹(Š”Ò¦¦&¹i²²²Øà—K‚õ§ÌÂå÷ Œ1%àv¹u§Û[E,y›ÜÄ} ™,N§ÇdbDQôzy¯½1(:Îó¼ rÙäxq·ËEñ©ž("úQ$>—„ `-Û5(Ýjs™" .D”Ú[k"¢ÂCÇ<¸aÆÁƒ¯^½Z¯×{½Þ–––É“'oذ¡¶¶ôzýÔ©S¿üòË;wbŒ].—Ñh9?õÃes{yÕ¯­:1h|w..ñ5Æ@‚i; Û_u!ÔÐЀÂ˱*gÙ8òtÚqœÎ3_´^ªââ"Ô,wè6cT®ÉH#döH !/8lvG­gKÉ«G˽¤ÁíÁ@©;øU?YÞÇáãò[cLL̸ŋ·¥¥ñË—G–•q5¨T­%'Þ|ß}}×KüYñAþ/ ió,÷ïé%Iþb¯Ì¦SïbEâÛÓÜo””–>±œ±Ûš_¸g$«ÞÛ>5!=1+˜‡­ˆ„ ÄP™|Å”O?ûψ…”ÒÜì¼’ÒSg*ÎD™¢z<ª3ȇ´v$I¤’DüEõç|àóòú›@CVÇ;qJ)‘9J{»=..a€&ÙŽ¿ÆþÊ‚+BQ§ªáòŠ”Â_7U$r·ðÌòý©` ¡‡å—~Y‘$iïæ²¶ÓQFC|K¹Ë»àm͉ññmqÃî[{dJª 31‘30øá"""@÷zE¢i0h µRò §©Œ7¸t4dˆÐnýúÐ9ÃBî«Tòù7h54øÏã~¼ûÕwGnv&Ô$œxûpƒ2´­IUõ%ÿl÷¯ô‘£ƒââÓ—Ûí–E\µZíóùŒF£ÛíÆËNY#—Ã0ÂBÇe¡=!!!P¤ïã>ÑP‚UDIä‰ •Ql¨ŠNNË™66/ý—½’÷Ð WŒîÀþI…•¿™=:º?_«Õ¦¥¥UTTøe~¹¨f³9%%EÞÜY[[+çç–y‰Åb V57F£QÅúúzè\˜%„deeÉ'V@[[[cc£ü Òétr®ÀpùSÅ={ö 2D¯×kµZ§ËÇ]]Ó¼ÃkHò†VsÝð¨ÁQ^·OÃ!GC Òë9 jCt°Vöïߟ——g4µZ­Ûã4sáôqsªÑno×°ØÞÔ¨Òé½nOTT”ÀûÔ,r57§aA£7‡¥¦‡cÁ‚YYY£FR«Õ,ËVVV~óÍ7»víš4iÒÖ­[`üøñ»víb&777--MÞ ‰Z°`ÁêÕ«»drë c®ýÔã¬sXO—?s÷à¨øF—½•õe|ÀèR+Ew³W<i,œvïk+Nnù|fÆÐ{³G>„1Æ6í’YÅátqÔ©¹S­Ž…h=6ëQ´EéQŒGP´EhñoÆp¦‘wÉ•Álӕ鸜q!Ì D‚0 LÉÕûDxï‡vBÓAÇä™^PZ·cÓ BòR-šCȉM;ênèYÿÞ»uÕìñ÷4/ܰááu<4\èxGN@D;¶í¤[Aòxh{Z~˜‘+÷ZÔñŠ0 £Ör†Hü¨Ì˧;7';ÝU BO(Á*É¿1ösq¹ÑÑÑSn»Í:sfyy¹AXœž}æLPk¾”tÀöÜâ‚ë"½çï!X%À ò콚ZÇ–{^0´ÙÜ÷\Ý6¡@uÿëÆû¶A™ »6}×勬ƒ±à²¡ë¿úbúÜ[Ün·Á`l:vtÚ/n Ëð9«ŽKgÕq¦°Qú¤ÛWX³fm€,N¦M›&hw´w¿8ìþtú¤Êf7¥ò±g * H %2°ž>pVx/m=i²$%œÚgM'³ ¤ú²#$ý»Zº"/é¨xÙÿÔ{âM:͉MµAÐh4999±±±áWÇEA²tƾyí£Ò•æ4¨‰”œª€Ð_© P¥z„]7ñÅ;¿¸ç¡G§x>U§ª¯ÞáÆõû=3~û¯8ÄmûÎë :f]EyŸœœ5Ï?Ë}Tþ¬×ë !.—«?Ð]Ö—w…šÍ憆èÌtv:.HNà‘·{ª¦Î½|É5£3å4¦ÖÖv‘8Iȳ«¢ÊõáŽ_Î’z6r­V›žž^[[ëßp©Õj- Çq<Ï×ÔÔ´¶¶úB‚ „–<%%…çy»Ý.gTLIIñsq»Ý^]]-àQJN'Bè<Ú|°þœ9s&¬\¹2??_ŒQqáÔÊ¥­è{Ä`uëå:ä¨i‹I0Š” §K­×ºEÎa ÁÊ7ß|“››+Ãp&ªí¾«£'¼Ï'ø¼±Í.–a B{[›Æ¨wyhLbxbÇßzë-½^Ÿûá;K[lv£^3ûÚ닊Š6lØpôèÑ¡C‡ÀÑ£GÇÔ©Sy§ýõ¿þÑáòƘ"§\=«¹¹ù­·Þzꩾžx¯5$i I¾{~{êÕ 3²­À*/÷!D%ßQ,U¤¦%ÞöðÁ=[¿ÿ°(«haZþ/Vƙ͟Y…a°Íég"PÜIžÈù5äÏ”úx†8Ù 5ªƒ[V«Õjžç†Á Æ1ÊÿÓ¨ð˜ÁÚ÷´{yŠ0ƈRÀì…¶rÈ™^A£¶ê JM€ÔA'NTÕ$õPæ=½°ñ~UùòËi>:pêø¹9dŽžK)„ÊE¨ßKÓ§Oó+âþ”í”Òæ¦æÒýÈNŽì’ÓðáÛ&î+³mÙq¸Ëeýñjw+½]ÂÍÌÖ6 ƒ[Ò¯pO‰Žöòƒ-þ¾öý2Ãܽ–QŸh$©A•JÅ0Ì Aƒ ÔÛdݯþ)Š_çØ³Œ¼Üº9&€†Ï¦¶~d?¤Xä ÀKo˜2{åo®ÉMIàþ³¥~1!#~L«1r§kBàârÎ9*@Sñóæ@Rîr¹äížý¤ãþÏÑÑÑ*•ŠÒÚÚj6›ÕjuLLLKKË‚˜ûÛ_ 4vÑ=Ä™Îz #âm£­¼WÔ´Eè«Õ…Ÿmj(ÎpåF›õ| i·¶wÏ/.BuuµÕjõwÅŽc›ÎN’$Éãñ ÔC6»Ý^YY)ß_žü†©¯¯ÇËYÃ5 ä·)·ÛÑêhžzÅM,÷ ãíŸ>———¢R‰G+l^tzÁçÍÌÊ ­ÏÈ/Ò—w7WÝxY~¶ xNUy‘Äj´>¯'¨MŒ„cå­^b4:ÑãKHLWÏÙ¿RRÒw+>-*–j6zDºõ»¯/;•Rj±Xäa±Xššš8 [¿ûzæ„˵,ª²:¾[ñiáÓ÷ïßô[ÖâÅ{Õ¯Œ¼eº«åŸ”¸:Ÿ!ƒ(ú8þ †«=~Dþ°ËìY±öïÏ ñÛœ‘ 0£K›ú3« „£ ÝȨãP´GéQ—¼ãF ~`€Ó ’7í`ŒY–!Ôqpb¡Ÿ£_±ßÕî¡Zó`À`Úyû9Ññ>£¾ª,/õ–°ÞÒÕ:¾s׎qcÇËÛd%p >焎«ˆø¼¢/@çîz“®?k4àtIÄ»ƒ~ª(ý¨#÷÷•|ýºuðÀ bÇ;¬L.h¸bÊí·Ü÷^e[ý—ûØgþ¡Ù~r³Så\Ý­„=vÜSUUóê«ÖU«<.×´!ù­{ö¯ßuCʨ˧yÞë#֨ض _Í6ÄY)‘‘ÚàB±}>_iiéàÁƒõúsö ÔÖÖ¶µµq'^ŽÅ—¶†pBÏç+++ën¥¹¹¹¶¶–ág<²ŸkjjDQLII Ïjƒ ÄÅÅñÂwùñƒ.JÚ#}d’ÛÙʨâDo9íÌš†±³)W½ÞÈcßÞHiì”+s‡­þôœ‘ ú_S9³ÊŽ;êëë_ýuÇM’>–™yG(.  € â04Ûp¦%¸g¢çõzåýÇr°ŠŸ05¸´Qb,Pa$ÉÇáÿªD‡õ;6Áä'“Âú áòõ›Ž=6..®¥¥Ro ǽ㳺s(ê• >'ôYWsÄå!˜Š‚ÎTÈÂUÿÀsŽ$IEQÎÙ$JÁõ`9[–üùz®·XXBÈ}¿¹ÏáhE159$):.[I5×/øíÍ÷?öþñr!V×øöbü¯M¦Ýgbžxò®éÓ§÷f%¼t¼þÃkßx#I¢#"8“ löê#G z÷ž¤””"‹E Ä»añ͛-?œø«_…@ ÆÙ¬ß”?~" ì”RÐét‘‘‘˜ƒ¥t\η@«ªª¯»nn§¬eP:Þ&=G.©©ìÔ©Ã –ìñ³YDϪA>‰:ÜR<‡5aòà”g±dgg_PÊí?–¸€¬\Ž9ýÏwõ¿Ê„ˆ E„•k#pc³ïõùgy[ѤéqñæÈÚÊQÇÊ›C©B^¯WöƒÌ®ä³Í=LÍå}{þlÖýQ¡ŠŠŠöíÛ'¿ÐŠ¢XWW'Û¡¦¦&P6...o«Í}ÿ«(fëÿìê^ÁçhUFìó‚$8]&W»Þžhâ#b+uÕVf^9(YeÿœOq8òÔáñxäàcAäl!rJDŽã$IòŸ½ÒO+uuurK9ŽØØX­VK)õï‘­¯¯çy¾¡¡!==cáóñ€¹ƒ«–1Ä“–f©¬¬ÙEQÃARb4ƒ›S,¡Äkñ<ßØÔ”•[²þmQä3ÓRÊ+Êuœº¡Í¡ÓEXdÑéó n ŒÈ''%Ðú本Aáê9©©©‚Ë㫊K|º¶9¾Ëk#ÉÉùvµ4}úôxc¼lÙ²ï¾û.9–ñµß¿©¢ÑE‡N˜#mYï0EGëCYLHŸÙÒp895KôžQŵ$Jjµ érlÖRSL<ŠÙÒrçv—ÆCžÙA¸ûî»›š›å“¹Û½ˆÁa9Ab0>WgX¿P,, Ζ¬Žã³èÌq ÕX%@H"ˆc‰$ºDZRóN”UÕÃH¨*9Œ¼këvl‚ÉO&†×¶»ÿt!ÔÜÜìÏ-g­ÿ ?¨XYz×5ƒ­¬,M§à»•Õ BÈ&bbb0Æ<•Sfx)))ý?•³°°Ð¯‘‡ÀÅCkµÓMm úý5…Éñûª—mÞ·ü–é™1&*R†¡@%„@ hÕcÔT e‹ÊV×étrõC‡É*`}}½¼˜)Ÿ .O §uíÀÎóXéx³,B¨±±QÎé>£ 33Ól63 c4Oï]¯i*ÿ÷·Ç¦È—°×¤R g6ªXhjiOµÄ¤ ­·´–î(LCË??|ݸa^ÌÇè5-VG†% ‹|y]kþ $;Æ*52è5–u{}±QFV®šÎ›7ïÛo¿ÝÛFÿjLJ„Õ‹Ön;\ZZú÷¿ÿ=ð²Å‹ßsÏ=dð ×Í1kè‘êö-{Žèõì¼yóBxFhM—qjKcMI¤i˜Ï±K$ŸÛ“á±×0¶2]ì ^´ìýñ?µµžqׯdXMXjÚ%³Š Š,q¢[$U<‰Öa³GAάb6àh=2jÑW0pª¾ùd}.+Du!¤s— ty†fêݪîãuA€©øáKA‡¤¹ËþR5õÉ'§­ 3ÿÒs–ý[WÍ¿°×íLgbXóä´5„̼`öñ‡îu[h([9;Ø8‚ÞyH' 1xò»6ДqCÔƒ\sàQ–±={[½N§ž½Ä¥Ñ,X Ÿ‡|+$|tÜSvFònBâ§O¯X° ^£Ñ$&F]}µÏç3Ϙ¡ILÔc\þ¯¥¿õVãçŸkXÖ]Z•4›Í{öîêRNêA¿4Ž1FBÞûû;ÇÆ)×_¯"Í-͉‰+W Xv»ÍÏÅ£U®‹@Çe.žùë?¯†€]•—Øn˜NÔÕÕ‰¢(„“’’RPPÐw­±_ê8õ"@$ÞFuýŽá—ç?óä#ƒÃ[µØèèO–ÿóá¿Ì×'N}|áµ¹ÊËWš}ýPÀ,ºà€e+$D…fEžŽÎÏÈe.ÂÄÕ›FîgäéóÆÙŸV»nhÖŠÃ%}ýCjTD£Ã½¯ºqÁ>ÿ͈J*(˜­ «MÞ‘¯w_3Ü|E²151FÂàJHHhjj’g~»Ý®Ñh†aYÖív ‚ çsô§U‘]PÒÏy¬ÈùãÛÛÛAhhhðz½µµµr®=­VËq\xG,*UÜÛÚXÉ´¹cŒ:IÝToŠÖž¨j•Ÿ|¦²Ù SÅFj£cCYT9y` ö½¥5Ã2Nå©qF'é«QTÑì’Ë{„ÈUI]ëˆü”æF«×çËÉLŠIL WÏQ«Õÿû¿ÿûúë¯¯Ý´í ·cø õÜ Kééé|ðÁ›o¾¹ì£ræþqãÆ-\¸0¨}Ïræ"·Ûír¹Lé¿;ºÿ÷S®¹Iô–cµÆílÕèÎcÇ7W—Ôt×ÖuNODƨ·ìN"‡Á`@=¤¯îWf„q›Ñ/UàNÉѯ=!€1©i>8+þ †as¢DPgìøðT•Yã#Ðáj #$!@€0¦— €â…¾_x¾ öž7©ŠœèpaFÛÚÚÂCÇýl¶3Š?íxgæq ¡©ãæô±ÒÞ~į»rqt.5—4h €h¹úúú è8:7L%ßBœN§Áhؼm{j²%::”UlDÁëñÈG<ø|>Aà=^¯JR9Ž@–,Š¢Çëñù¼¢(Š‚àhoJ¿jò(É Ÿ#rIDATÁSó×%~øþ“ EQsŸÒ%YÕj5BHNä|+áRÇ !¾ªªvŽ‹Ðhì÷Þ[`6õùØ9sêêêd2³gŸøúë­¶æÞ{#4šv¯—¯vø|>–eýGÓé™é]¥Ò‚nµx£îÝ[¦yZºyß²Íûß¿u†E¯nj©E䣻S‹’¿óªÑµA£Âa)'Çq©©©²†"ç#¯¬¬t8å×h4ééé}<,æ‚VddffRJ­V«Ü²jµú<\¼ÿ£€‰šrr’*Ý:F¬µ1±F[{{ñ$k£aÞ)ŠQÑ@%@Á‘T„Iä!jHNF‹OÅú*­\bdcsë¨Ë,õVk«Ûçà­NѨ³ÓÌ»G£æ—ÀR(‘ëÖšö‘d‡Àšۖ3„&iAYÉ£©41e¼J“(4۽飒’fj¾×s9 xÒõ¸´rf•†úú7ßzËårôc’¥q7_ÈÅ#„¸Ýn¹ßÆ₲Ųlkk«ÃáàyÞëvcQ‚ÎØdQBßi?¦Œ`|$ª‹„’æ.[vQ媾¸iÄðÂ_þKP÷Y4*Xv:¢9çñce[‰$PJDJ)¥%P@@ FB¦@)Õ¢ÜQ×ùÏ‚é#ﯬ¬ìÎå}‚X]S›38SÞüæÝú BÉK/¾H$rêÔ)ùP+îêÀeßÚº:ž÷€Çãc„±wúœ:ºý›×^ýä¾[†|úMMyýŽ_ªTž>Z1Dì"õ„Å‹ëtºº-[¥úñã¹Y³äÓΡsWû裾ÜÜÆ­[Y†1Ž—pÿý}—ÆÏùÔ®79Ö“R*I¤¹¥éè±CWLœœ“TufÝûêª÷—¸í-çzƒöÀÄådz!jâÍO‹¢À²Ü¥>õ\x½^Ç3vìØÞúP:~ñ1hcÇi¦Å9cÂ,ÉÇÄÄu6Ù%DÇÀ¨VÕ*A"C“b?»kÎÔì4ØûÚkî¹A[cYxßKcrµá-gGtl'dF^SS#ŸÊI)U©TIIIýáâÝ­ÈÓNfffFFF 9@£aF­7ŧèŒQ>w»ávµ5ºl m’€°cqS+h’’hð Ü3ZctâàB£9žw·ûÒܾöFPÕÕº€C­„á¬v éŒõŠí,W¯æ˜§ZoIƒÞs?üœÇ»^¯—#ªåC+µZ­NóʡݪuWòž]GöÂúËM¹Ïit&F£ÕjµZ­Éd2 =¾„VSžçïºûîÞiô9or¿ýæ–oÆ‘9²¹¹ÙëõºÝnÑëà±ËI-Îù‘}ºÿš9ü"£Ot¼xä¨â‘£‚òfPdKÞ~«Ÿt³0îúΰ`ÿÙ+g—éýÓ™ì?¹ñÞ%¸[¨C…aŒqÚC‘”3¬Ég”t¾BJ)Ƙ}àæÁeÆÜ—GΑ™9èå˺—™ýíÝ}Pgðßn€ð"¾PQA`*–7­måÍ2õ,‚µä¼Nï´8 žÊy½ÑDÛ«mÔŽõpFáE¦žuœžƒd¢TAÚÚÉBìÕ£^dLoÐZ={|ܽ?6,!˜D|?%›Í¾<»!ß<üöY†aÚ®·æ®XeÚe£sϘ³¸»»ëþýû÷îutt:: C»Á`èì|èåååííãç7fÌ___????©Ô›qï“!1qâÄÌÌL;pÇ8.ð”°¿~¡Ï?N–wÙ–{{{Û5¾ø“dtW~ $žÞã§Lç9žçuwÞïz`èzhx`¸ãý°“½{Ígr„£wÖ&O©ßø)Äs×ÝÝy¿ë¾¡ûá½»ÿýñY©ïÝ+êç–z0Ý ;~öì0ø<ºËL´¶®aþy—J¥Çuuu=xð ³3dràÇõµËý_˜–P4nR¬§§§p—///ájÝÁÝÓèèè#GŽ˜þslÀšüØðÓ?ñK$’Õ«W·¶¶J$I`ëÛÌ=zÄ=êFÿeYV²–a=<$Ó™ÖÖîqãÆùøøôÿí¿áƒÇ Ùvüjg©T*•J«Õ ÌtôœÅ–Rµ‹¿8…>rñÅ;H; %y~Jò|g}$<<ýý=ýýÇI{ÚG œÜž Ã2 ËzyxzùŽÄÍc†‰„•H<¤RßñD4>8’ˆ¦F/?ðYgŽpy¡î.009bÆ5—ÓÉ“'gdd8uï¼¼¼ò,÷Áã¯ÁPÆq*œóïƒsí‰ö5´'ö{Š=E‡=âÇñ§í 8jhOì)ö{Š8CÇÑ;Ž?=hOÀQC{bO±§ØÓÑÇ÷ïßb-ö:£ªò ŽÚíéšµèõú‘±–arÔОø¼cO‡ÿžŽr ݾõÓÏÿ»KD&L¬{¹Yqçάž,þÏëiÏ íw Î ´'ÚÓeí9b¾`¬ï‹ËŽÚŸwìé0ÙS¬Èô‰ã΀8n)Ž{ †Š1Ž»¦´F§ððp4‚µ8~¼¶mní+—8ý£Òch€¡‡´i=ޏuŸ0aÂHº` FiW¾½ÚëÐ7·QxDˆõÙV¾_7l›©tk2ΕáI±k¿-W>Xê;*ÂÿðÞ;nc,]9 [êØÉË8]†-³œnrp£³ýO¿g]Åœý³Rtç΋€Å'Æq}sË;Þçæææææ"ƒk~hbàNpΊãB/++žnÙ¼­¬¬ìƒï ‘ƒ  Ü…³jÇÃ#B¶lÞ–››k:qËæmVŠÈyþÒñÜ?4²}~!p\úŠƒùQ ãÀ6ð|㉼wÅƽU‘õ¬öDžz¦£ „áO¬ǵ›0âø'ÕuõíD”œè¿lAœ½‰<)65uÁËDtá»zzÜ “]V•mŒÑö…fËoYøÆü(†á/î“Í(}‡|dúÅ‘Å`$Äq1‹Q]};Q£½‰\ˆàúæ–ÙÏ%ÖTáðVò7+þºé@+ËÆ½U‘=‹!¢[g6~ÚLD—žSúâ÷+ÿÜȲ yd±+ýÙ¤R÷ïï6²,ÇE,ÚùÑÜIŒ1Ðï ­Ùtà-\t·…aÈÀX«²xéÖdaÔm1šÛHßÜä#> òq¬pœç¯½ÿËçvžü`{ÞŠÊ[<Ïó_öÆ ei厲uÑl|ÖÁ÷⬗µüÔrc^’ø*ÃÄe—U)K+·üíÍý•·xžˆˆN¼Ÿ~sðäö¡5yE:ãDp?¨wa_íxõ·mfS¼liæšê/„JÐAñ;û7²í¦^×(Ï“è)"¢…+¯Nd>0d ]ÃÉáŽP;#'Ž''ú×Õ·‹7ËLNô·¾ÍXê×7·ØxK ¾Œ%àâsfÖºȾV.)¾q`mZoû»Å÷7µ'òÔ8F ÔŽ€{±V¬²lA\r¢¿˜Åm/×7·Xª¯©þÂÞ’†‰›9ïtÓ¿úOzIñÞ”£åŽV•L Ä 0aÜqp#)VY¶ ®®¾Nx`Wï¼JD§Jõù†œ*Õ÷¼*$r¢—íê#Ìy¯)o‰‚e…q#I+Ž`WPÅ0DqYjy^‘—`2LPôœ Wer\z¼ÓçQ]AÐG#$ŽÛKèù²øÏw ÅFM“hõ¬—]×oJUvï³§DD̬u;ÊlYŽqÊÄ´ÝÊ4ááºìDDÑeñ–Þîµã0ªã8;¿CÅ®|óŒ…y^v¨ˆÀÇúÅ SSUìÀ…[—±óì†çŒzÉó {æo2[5µæðÞì`†^­¢ÅÎÛrì /Qè·Nÿïhzp’áS;Îó …©©©©… ö\ÞÀêJ–ïÑà8Œï_º$ÒöUla|‡v§²·¼ ¦¦ '@»¾CÚ´¾­|]N‰ŽªÎ7lˆÇ@wÀ++ÃO•êÇ•QKGÀó¬zë54=8ƒSkÇù¶òõË‹u,KD\Æöš‚ñ¥†ÂT¹Š5MØ;μôuÚf˲¤’§«l,z ÊÎÉ(ÞTeã6ô,ÓôWDüõã½3ôÔ½àÄ-q<<"DßÜòÊÊpa ÃµMýçÙ²y›0gÿ—޼ŒCOÂycª˜æ`"bUòT2&r³,îø*ø¶ãë7©X–¢Â¦¯øÇÖÛVfh¿{ïÂ7º ßè¦L}*=·ì9µv¼O76Ë7=,ˆ&8{ïaZ¿¼DDz*yšÊî±íš¿Oa Ë×w9pý'⸣ªÏÌŽùEÿW/\úJxóÚ:6°Ä©÷ã丨µ‡÷Ê‚Ís3ÃËöÕÈzÇïWÒ=H„,ž±ýó‚ñòM@ é™/FÏšö—‹:ºnê~¸pïÁl?_ÿEi²Ù ³ÂÂ'ã°Ψg˜„¹‹I¥Òª‘Y.Ga˜„ B½¸II7Ñ•«×)በí)˜é¹ÌSs^Õ·wÇŸˆ³£¦ÍîÿRDät"²šÅÕÊØüfw7ä²öiSÎÅÖ¦hIƒ¹¥jå€ËT+ãןW]4È+;8£<þµµQUÅ:•´œW;ÎËöž ëOûþ„ÑWˆˆa‚³åkÏ™ MøD`²4áŠO:¾>§D‡ƒ€8n1‹ ëêÛ‰íJä–|u¾.fF ]úþõMä–µÍyu×E’õôX«•±µ)•á%âÄ–£9¯îjbÙ¬½E‰}í7óíÊC¯‡ô&î,;sãÆÈþ+()—i“é}WÔ»ä¬>cþX­Œ­ ûòîÝM}·ã ûÅ&A¼C§Í¯Z}‹±ª|pVg¾4Ù¾3=Ïû-ÇúÂ`˜`´\!‹—nMF£¹-:îœþ÷#Ÿ â‹dóbfĉÜåù RjµÚÊð’X¥Úl¢V‘D-G§Vj5Ÿm¼\r´…Hèk×h4Zí½B˜Bje>i5’N—›¯âšþ¢,%ÉêÚµŠ$“…h‹(_Ü ›}š”F[¹«gÀBí8ÚÜ‚ëjÇ«¿m3›béA~¾cš/_?Úg q±;ÜÖ~q""Y‘йòt$éÍ'ÃôÅ¿ŠßMÄqY׈BÈØ¡ÞIJ—•BBêÚrYŠ‚ˆ(äõ5²]µv¯ˆLBI)²üZµ"Érq‹lð¾¤Y~­q«À6N_À âxr¢]}ûÊ÷ëħ¶ßž“z®ÝkÇdO"|h6V©ûË…¨•±¶$ïÐðYå&áÚµžà|NwFŽÿ¢iKk„õJIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/24_diskstore.png0000644000175000017500000010743512032647166025325 0ustar ebourgebourg‰PNG  IHDRæy *øsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ$lï™ IDATxÚìgxG€÷NÕ½7ɲÜ{¥LïÓBIPH½B¡·’!$ÔÐ{èÄ`zc Ü{ïM²¤Ûï‡l!ËÒY¶ì øæ}rwÚ™Û›[í@!B'#„}~Œkã5iD7p ¼vvœ¸)*ˆ¿ð纔}ÐçǦO™ŒÊ)®ïo EeÕR¥ea&ƒ´23Ô Ö¦\„ШÎ6L„<_Ï*¬‚Þ²|½¸¼êùƒH-ËûvìKQX9ç~òKkê’x„ׯ !„1V-^Çeˆ‘!U7ø—# ̽BLq ±„kÑèÅå5…¥•qQ—ûé%°h²||FIäùãÞíû „,M ôDB]Ê>¬O‡ôü 墿d‘;Ÿâhc\P˜ocm«üojZraAŒÕé›î×΢ì˜!“âÃCLÀÃÛ÷‹¥”¹gP(ϼ¡‡Î”‰ .ßIfpíútv8ÑEIíMHW.qkßÁÍ„ùz-ºuý^…-|ƒ;Úrál}@,‘ÆE]îѸ•©Aa™¨ÉòV¦ÞíûÄE]îØ#œÂXO$Ô¥ì!•v;v~×Î=~ÿó×¾}û^¼x±ÿþÊÿÞ¸~ÓS"M6’U÷ëëmmrtG\gHÙà¿ êÖýyKF0⎟ÿ6Û¥£CëäùÆTKÙÆ^=Û[¼ÅÞS1³-œ)Üy!;öÝâÒÄñ›S{wªËÚÓ·dº† õäU1!ïÁC]@Ë ‰º« EáæV”<*ÎFÞ¢©5¸o×&%(„(n|DY«”j8ŠD"„РwöèÞÉdJ¥RÅ¿©§~L‘r««*ãâž—×ÔfÖT ŸFAÊÿ AÚ¯Ys#‚°t óäRGÝ~P&ænÞe™YÅU ®‰»‡ymalRv…˜26·ðuâÈ ,ËNOÏÌ/­K,Ž¥­—‹=“@é5Rïzùµ•ñ—®£°® Jma„Pô‡%RÊÔÕ˼<+»¸ÊÔÉ/€g È¼ë?õ0+ËÍ)©D Žƒ“‹Ϥ᧠ë’TVZZf~iM­Œd²Í­¬Ü]ù† ¢Iiš,RÛ¬Fê£bfXgÒ,ËÍLÌ*¬¬©ÅƒÃᘚÛû»[«ô%«H­5_çl@ÉD¥HƒÃXÆצֲVZ³RgÔ«w(\ýüîC-{ÞÊ ™{øëgœ¤D¡¤òÍš87åZJ&_YÔ8ÔëzZTæfUP$Û^àêÅ7aðˆ¢¨‘·§•WVlšØ‘Ç&›_˪âRsK«lC'7÷œOª(lîÔΆCiXVÿ"5¯¬šÁ6TÎÒ1FÁ Mxœ¤Î$ô)„"]nf²J„¼Jc ?/¦¶Ê¬N)·¢IÂùË·åfýpjPŸ.j¨H@šƈDb„¡¡¡¡¡¡òT|x¾sitÏÞ½’32O½[s«Yž™½dìðŸðø^Ô’ú¯Ú×årQjìâe£½¹d©+O:w ÷µ¬)*عïÎ S§Å3ÃÝÍ™)‰)ޤx»rõ<:6¨[à´1<ž9[\Uôו®¤|Ò’Q=™!3^÷“ëBhÊ7‡e,v»îª…ƒBÆI°MžBIný5Œdp†ò`˨UŠ–†¡N¾|V/ðÆA»¾6,IÍ•Ë÷§SA3æ¡ ÑRÃÁ=ME×8¸57_~œ9öÃ.½ÜÍEe¥ÿœ¾3·~}Ë÷n!VLMÁ ªÅdû°kO73QYé?§ok:[—ÜIž¥Î®¡¸µ€þβ7[‚r™&%ü¼`جN©Ü¨• q–],ª[ý8Z¾œôÛ8+œçÔ»—¸ ͼ–ÍÂ&Ë´Ðc‚)vø¯P>Ù”Ï<ç>=ܸ2ŠAÚÙÍžÖµ†mm –1™LOÏoz¥-y\eW•úþ;ŸúÉ$UÑ/rl]ì{ôñ³ùtwM~Ni޳•‹I*_æKäƒDØýžr4Û¸¾E×~ÝÜY’ÜÒŠd „åcˆB#÷A]¸)YO_Vvö02¼¯ô“‘eFX]]Iab÷ñá= 1¦2²K-ìÍ;vôõs3™üÓs6­4vF¬Z‹Ô*‰‘×ÈLª¡3ӟŨx$‰!3>ø¹¨ñY¥ƒooÕÑßjã¹TÊÕJ¹wʳEîá&¡ÂØ"®•ƒÜ'eéåž#ìD•iOEd`#dZ÷ “Ö®¦,EC±R S¢D?ãD­’Î}{:ãš"1v0Q-r^…Vx7»üÂÌR™­Ñ;Cz=^u"ß>ÈÈŽ“þ yÚðE‹(g•÷˜a¥K A6J‘“bžú|Ø;Œ©B kÌø¸þúŠ0ÖG³íj³ß›:| =c\,eŽ?P¹¢² $Û ±Y††-˜ù ™“娥³ì¨~Ž\yª­’«”Ñ$¡Ïγ~8%/¯œ¬ÏúáTÿžÕJ@šÖ²‹ÄâºL=8„ áÂ=S­ˆ§ÝÅùi嬂G7¹–fUÞC¾úÀS8ó³e÷X]·}ÂgØäܼ5átæ€iÃf8Øòk.fd²7úaŒ6ÿpáz©”e`{tEo+Ï žÜÄ“;.';ȎSY=ÿ—"#,a;}ª®pwÙÑ{õmb¢hÎêkyˆÁ±qkçd 2†TÄÎÚ™b€Å)sßkÇî?Úyï/…Š4îU]+k‚-œèiˆº²çü¯IbŽ©`ßüކ–‚é~JÇ¥ýœÎ`ª·H“’ì¬ËÉÊf2HD(ͳ–dJ5¤Ž>0p# $®ÊZ·çNEˆ2³åuô³W±º¤VÖׄ‰*O³L˜c„pj¹t­ 7ÿ^‚¡ƒÇ…—“æ4ÐÀÚõà¥BZߺ„Ø)2°±Cù%z'ÜGÔ()“¦}²á‘SïoÎT‰DåI“¶<¥Æþ5à H2\ÀÞT.ñ1dWfV#„Ø”4cžrÝÚêŒG±Eu©3Ë¢CP9k—Õ1\†;pB×÷ÿ)®Æ\è·ã³ºUT”´Xc`ÈŽÞaº ³g#„n<¿1¶ÚÌÉoçç>Š«ªò‡çÒ¸÷ý|Yž}žeÇ4úvï¤ØŽ¼qOùz }»wRdíŠ|½o÷N*M¨YË^+‘)—`ˆDA$ý8º}H»„Í£,Y¥‚î]Äùi•eÌÂè[ŽŸnÏ9y›Û°mò¹Œe¯NÀœûñb+kqNB|„Ð…«¹<;ƒä1r6 ™†˜ª2¶’߯Ï_4j¾’ÀîV¬û‰b—Éå{:¤É„š ßȬ»ŸÏ‰ŠÉ7u a Kd”|ºX¡^Þ£,#gœ~?¦jì6×T(_§êSE]qYRº‡üஸª àøèÇ/Äí}¹¤s ‘ì¥X³´3Ç€f)YRÈP6ÓßÇìù£˜WΕÛwÐ(07±Dæba$س†_RR‘šQxõöó”jsGfƒ1°#’@IE6 j%2Ym¾ÌÈÃ…Mþ}³ÜJèÈ-QÕáÙ£ÇÚõ ˜Þ·5UX¹¡Ò<}ŒQMžZ%³ï'’ö>TÚù¨Êþ}ÍU¢En‚Âüœ)7”Ÿ%Áî‚cΔæIjY$¦$!‚ÁFXª|E“Š2^d ¬í]—ñW¤ŒYŸìôª×*K ­ƒåÛ¿¨ zõ¸LæmÆ BT ]`ÄüºŠ±•AAOÅTȼM„\gÜðlµd«ö>’ÊjaP€6F±Ž¼JTÛÜŠòÁD“µ•6)¦®ŠDóø)A £CûŽ¢g‡|=ìý:×<;QQÆ(||Ûæã¿˜nÝ*+#Ø09ÿ5 ^²¡Ø—ÉH6[&’Öeu2ÌDÕ=ƒG(*aŒ_‹SWÀ67B…jï Ôf¡º<«:_Â4 )Œ«2Ó²D2ÛÆMh¢PÁ"e¦(Šd•WÔÅ ?Ó4ߨAZ3”TòRô”I'Çdz·Üæäí`æ`gÖ>Ȭ]€Ó•§Ë}|•¢d“(OŠB3¦¬BF1«ó‹ù]üe’ò“ÌYÚH¬mbzß6jHïâš•Ä#L©vQÊI*)‚‰BR%(™„Áæ"„d’*‚`+_Ѱú[_¥o„“ü#¢±ÍÌ'^¥à"ùrU„j±å»X³´,FÝ'£(„Ѓ¨šÂÛ!„$‰"IB"£KP ²«|°I ¢bTža•¯k—+ÐXÒ´0F,I’Œ‡Q]Ëž˜û!½‡ˆSSó¯lMñûÜÐÒ—‰E"1|Ÿú‘½7µK°*sÓ²'¢æiüñ|Ä"°D"õôw¯& $“a„ÉdKE™I9 ÖX˜Ù ÅF•id¨×,kVMyÚŽkåŠ:º£+Qñ˜1=Ä!$*O'YæHš«\cÌàšW¥f dúØËðקϸ–Î>!ôòI•"V'Í„Æ"%ëF*¢™/̔ӂiªQ` eba,ÍI;pº!,£È]kF˜3X½Ð ‰Ìˆ|•·™r1ùµÃ͘–ž\Ée ¶`çŠ?è`\úò.id0n¬C3:”Ö·y…y Ò³8‘wª7…ºS×¢ã1µ½ºhÑ„ڲZ w#„¸"ƒd™+_›H6ßË!møWQu»,Ëöå ¶iuV&B¡q^F¿ÄÄš»˜)‚­10ªk™ÕÙòŠCmYGH'+&¡^K¬&½=x0Œ@[C4Z”B÷¾ #„ä 6Q¿(…а0Fmö¯„¨è' ”?•gííCKИ²+fÙɪ3·ß7uÉŸ!)/üÖíI’,«VR );¼Ö,]»!„ØÖDúÎxÿO¼ ?šŸ_˜Nž1ããŇml¸Å/DˆÇ5¶é¸yFiUMáÊ5VQ@RYaêd×Á‰[Q˜Y~¦Vñk7 ¦p÷"Ûbdà`Â@]>–j-t©NÎU®‹1&˜VøÙž†}&„»g—YÚ›ª.Éø-›Í%Ä¥9»0s´TR>R±LY*f.Ý®4mÌ0µ&’4 Ì­0;¸lDzfQv©˜cjnÎ 0–Ý©¦Ì„ò0ȵ3|y¥yZx8Öþ“IIQ)ò¿1óZD‘‰ƒ+Ƹ èzðU3½a%°/ÎlоŠÆ˪U¼¡(Ãd9ÿ½È®‰h¡µ¨¢¨Ök´B(ãF×–§â’ÍëÐŽ§¬MƒË9ÓÒT{2'p¸§÷„AÞùÕÖÖ…å/r!H3k"Q“™FÌŠ³ùƒmÙ#§÷³{Z,ðv”aT—ícÕ³µqï{8ÓË݆5hS®4ÿ}/¨~%ºšO5åýÚKçë!Aò …@µÍK ‚ IÆwkW=zšàíéaÄëÀàyÙØð,--I’”ÔÖBÆú“¿«& wíݼ¯ˆ¨îÌóñâ#™$7¿èüýl޽¡IÚí{7\Ã: Mœ-k«Ed¤©°´ Áܧ¦1àe䵇޾C k*+"/?‰Oc.­{ÓùÒX©¬¦“l+;¾À¦î=Ù*uë³YAnNAI…X"#,cSs¾£-—$𔦽’uÅ™©ZLƒ@BV–žWU-ª•J"Ù\k;¾9§qUf&°ºô^×Õ,þÜ…%·+ûÍú3nÂ–Ò M:hÙƒ4Þ(ˆ0uˆ¢!ýŒ%ă£«iu~~i}´¨ì*,raææl›è˜ÿâîôã²W‹æžY2±˜’¿H*’Q„ ÏkÏì „ÐöµÇ ¼lY$Od5é/3K*Å“cmÏ/ËJQØØÙËÓœÝXg5 13âþ{öØû|””U¤ecÎõ‹'UV%Ò +Æúix/»X|íz¤¡BèyܓƂªªk(Œáéøïòõªü2†íןu°eS§Ókm\Æþ~¯Îb¦ep¥b—kïl¯|‚“–vahmeÌheåzÃÊÖFѸDOãDYÉÖÕÇÂÑñYÄÓ[líälÒ"cÆ•™9éÞN~^Žl‚*)*½ù4yÏÕ<O!<²o:"‰¬ÿàQÏsô373n²|iYefÜþƒG‰$2ù baLJv1t*è9â’ÔøÌj‹ciËw°4ÐO%Sž?¯”aC¾»»%Gߤ½éhé7"NôÚò¼ô¼r‘X‚b²9&f¶– o†\6‹Éˆ<\Ëò}”HeÕJoIíÖŒ¨KÙ“µ^[o–fFSËÂb‰´¸¬J¯$¬¨~a ¼•V¾é˜¡þ½} ú Â"˜k½JÖ ÂÊÚ†G€>);è5 \……1 ?ȉ fÙ@¯”ôÆlîàyqö¹³ÜU¶ÿ3ùcïÄ-˜´uë¯Åºÿ†EAn/VFþó®ókÔá-vï›tè'Úβïæckg¯østŠò2²Ÿ»I[¨¥Òœ­ýà¿“hÊ+kò];¡‡’›Ûâ¶¾~ë|¸¸§sÀ¼6µT-â’è¯'ðóp¶ç |Ûu3eaf­L?H¥›ûò«_‹>ŠÈ±ç;ù„„½ÿé—Çïf½§bËâ–ÆA#®(¹ùq¨gç]0äÀ›ˆÖ³ìY}wèÇu™>ÃcÜù·ý•kaÜj°6l!dȨŽ1VÑ7i‹:†¬í³dÔÒ4ÑH'£^´dÉáÔ åÛÕXÚÆÌíûÞËAw-õ°3.ÉLºqª VÆgé´ŠI\KqØš$´¼ã"/]’o<^>nyÊ»'÷Œ–ï:Zpš'³µ‚#›NüÜ KÄ…YÉ—Nî˜önè­-WxOßgŽ[·ôâIÓÂÉ­xÐJ4# d ýýýä¾>.¡Ÿ:z Q7ù©šÝ«§w ðä \ÂÞwäIq 4SnÎßßÏÕ‚’Õf,ûd¨›“À«]ßϤ( +4¹48hSVŽÙ]íìÝhßœm‡5fÕ¢K¯fdK×GW‘kG:©XªÖº¢§³¼>”ȹù±½ÃÒä2yaãÏ9Íø‰ZIÕãcY•w¬Ô%ÄÝÍ£cÏA ÖþlÄ¢qlüÖåC{wv8 ½‚ÇÎÛT,¥äÇ»ÞsrÎûý¼<\†oOÀTõßkgu òâñA]~™#/FÕ|7m”—‹À3¤×g^6«›äbÊf°íëÂÃÓêÏ/Æú{ùB¯Aã¿|\V[ßPî†Ù6>®Lì¡ït tä9ºxÿdmKnC øîîž>~]ú [öó?¦y˜ÿ¡ük M ¨õÌ(/çOJbŽ›²*å^vøîÊÉCÝ»Ž<–XVž|磾HËèÏ‚ÅÁîC^\Å=¦Ÿ»|uýxÞÆiïfë¼gßǃÿ¸ÅÝrìòÝÈí+"F÷_ £=®|»>ï—ÁK·=ˆy|ýÌž{ u™nó7Jk³~H*£Q@“g4ûà "®\œÑ.wþˆùŸO<8fÕöȸ&ž·:ºÉ³ fåòÐùÛbŸ'ž^Û]îp•¸m ?´à }²jyŸ‡E?Ø8â‡ÏúŸ.Áˆ ¯mÆ`„rn±³¯Ûm·êʹϼê¿{W,GÁc™8mêÁÄ_Ÿ^èeÁA þ|ã'[=—ÝÍ;Ћ§½Z*Í!„æÞŸo•ùÍõÜEw¾ š"$X·wÊ‘ŽËêVÆ(iR¿Ùì/÷Û/_ºîj鼞flJ’¿øv^ߣƒµ¶Î+Ü’ûû³âm¡¶»¢ gü1ø·ùñâ€ì‹gŒyS Éf,x fÇ6Lþàë ®¿Ú…„„´í2jÜ_+cýÌò“W¶·ûvÇ»ÁÃ~ÆëBåjózlþ ƒcÌe¥O?’4ùß§ïù["„xvöAõ.³òûáëû „\çîZ¾ÉuWnÕ"A³îËý„1–T¿øúJΜk‘½=ÌBKÿÞ¶Ókø–¬µ3Ì3ÔŸË3V¸WRõ\B éboÀDÖVŽnþÍíGÕH@ˆi ä0Sž•Ö sÕ*0Ó2_­gV $\lVþ¿|¯BhŠEËŽLì{:8Ð !´d‘ÿÀ gñêö4…„o`‡1ö´Ò‘±ë•Ãë›k?¨œA!3—&ÎP•3Ú®ËÆ‘þ–cÇnSW¸ý¼~CìõíaЀל²ÓcôíÁúÅå†ΚŠÕýS-£>ñuQ>ü¼ 5'eWi!dko$Ê?'CŒÉSùþD¹¼}aâ8m ù÷kw&õœë›{ó›†`M{í­ßÞzá_‰ÿ‚KÕV[;.ø1gP…lރݩ‚w{7WïW<1ãþÍ;cž\=õÛ~ûéæå¤Æ¦ îübÕÖ;±)•b)BˆÁ~•©ÙÈ7DEÿˆ)<Ó˼qsƒÜêoXîLu•œ“bü™K]ÒÏ6éj¾ý¢l²·úãsyÆŠºÖ£Ç­ïÔ­ïÀ>]»õ9²Ÿ«¾¢hûÔ[£g4á0ȵîü1ðD ÖÉ4ñ0‘Õf6yXwQÄ!`3;¼Uü r=^>~uvóÎPÞ We‚ºØ\‹GRvÐï”e$ôïhÎ- IDAT÷ók²ÆR„PLz¦nÉVãæ*FùêJ‚Å&‰ÖuÇÂiÞ`Gsw]~Ëqàï¦ B{ë¼>÷Íÿ|Y"a,˜Îå GYÖnË­8žRÖ÷ý–¬j`plÂú ë;lÚÜ/gû­™{wÀOꛦ$áï/ üê{{Ø›Uf¬÷îzPñ)Éi¨§:‡‘,Bùsªu>$4ìtú¬ gŽ»þïå›·Nÿ4û»õÁwîí·Õ-$•Ñbi7?ó&hä•à’©÷b+K«ûºî, Æ•‡·†TΠ2vsÏP™X¦v€ÿ²a>ª„pãÏ‘šm®åp.IlxP€uA]sópKÎÕÈwE%Rª±&,QŠãÍÄmÂié¥ÍÏ/oH.›¸¤]³¬³ð›$*:uáç‡.c;cŒß³=¹ó·$1cª£‘N® ØíX¢‚RMM‹J.fˆ¥›?hofˆ0.xpÿÕ %?r,‡sHâç%ú°¯›Šú.Cc®E8“ ¶½,“®-p¿¢¶‹—©¦ã‰Ð#|Îâµ'®Þ nþ’U¡cäÜÜ´Éq\àj¢IMžásU9Õu…«žI)¤ÁcÊ-ÊýG'š®·­í…¢tg(j gƱGŠÝˆëù6]=1ÿ-jRöÖ™·çºýþ¡çá‰ãöD<ÈÊÍM~ö`Ç÷ N5ûÁ5iUú3%’²ªY†>«ºÚ­œ·½B†±¬r×üå Bͤ±ß0ëÌõœÂ¢’’òæ6Ê6 ûÂÅtËÇS™f¦ò›eÛ´[Æ7ç3sD¹}ðçoF¶5÷Û©(©ç³¶»ðôEbRÜ“£¿-Zš^ÞyV{MM³M»˜2É_îd!„ª³ïÍý&VC¿¸þ:Ú}燓Þx’“—óäÎùõoŒiå0ðþ¶·Ãcç_‹MÍLŽ^=ñ3Á¨™c×ìh£¨»ótö‚y3Gö.©åtvèÂíq%Ûm/ý6vãWEU2[ç€/¶œïgÞìTµ úËî=A²,lxºýr|ËÈN|zÅÔz&tÝîAOéà·ÏÜÊaôü߬N hÓ³@9nîÍÒݺë¸xkɉ•]æÇqì¼n½8ÜÆFLx-!ŒqqQ!BH,ƒG@}ÓÎ+nEıaBp¼F8Ž•µV³ì<¾cãƒÙY™m¤™ÚæÚ´EšFÛº]=1¿µ}zÒt¢Þ:ü@“h•²ÿÇ×ø×’RèOófeTz¥-$£àx+i°0F$‚_7}ËåZYÛàÐg,Œiî¢ÐÖÀ,;è5 fÙ_¦&ƒG@OðñõG*Ÿ"„¢rŽ]}‘ž[ z»a$ßÖtT/ŸOð€Þ¢ú^öGñÙÛÏļgPë]G°fæm†Â¸2§:ãÜK'+„´kWI×®à}£AÊ~ìZ|»@÷ {|wo×ü?ŠºY·]³AÊ ï){nA™_ ¹XŠB©a©žaà ·L¡¬¬Ìád–Ùã[à €7 e'•ûòYyq.B(ÖÎóTÀPpÐ[Oªua/æCHÙÞŒ”I¢ÕÓÑyêï,ÓôÖóåÆcà€7'eg LQc!„0ü²Òÿ xÌà JÙÂÉSvŒáÇPÿ?Rv!èg€7%eg6˜pÅòT®¸¤8%5©¦¦!Œ±<»Ã ’47·ä9ð--,Á‰ovÊN"$7¼)){ÝŒkݤ«|–=!1Îß/ÐÔÄL¹¤L&-)-Oxnoçà,t?¾É););À“²3HDQ˜Äuù:¦0B¨²ªÒÔĬº¦š¢¤2™LFÉdR)F¸¦JÔ¥s÷¨è˜¢œ…®j¥ïÖëæÇ»vŒtGë­[`-;€žÓ _còÿ×ϲ#Œ–Je!E¾NÉd2Œ¥RiqII’íC:¦e¤—É «ü¹÷y§‹ÐXíGÍýû}H¯ÉgÒZEÔÿ§¢|+ºEñy%rÓÏ›nݹ¥|ðÖí[›~ÞtåÚešŠ$g€^£úƘúå0u BH*‘ „êóuJ†)LÉ(Œe˜ú÷Ò“ãæêžœ’ؾ]§ÆÒ»ÍùªB­ò+F5óØZ Åf‘mW^{±*Ê·¢[¼ˆ{Ú±}Rb‚D"éѽ'BèÆÍkÉ©É;´{úäYϽ5F̲è7¤Jö†©úT½n’ˤR„°|~Â2Š¢( cLY[[;;;Ù:Ø$™™™%;¤Êߎá½'K•oÞó³³Q?-œÜ«[—A£>?ŸZ^ñòòœñïv ëöÁÔUY"iÝKjd5Ƕ,1°W§°n£&Î9û¼a|ë“w¶çV=^1ºcÇŽ]zŽ×TLÞʤã«f|Ô§W·)Sš|Þó“£ç—M34|@ÿáãw^ÉP[žªÍÿcÅ̽ºvîÖû“yëž—‹é«k£F×.T”Wv‹& §ÿîÀ°Nzô4eÁÏMγ'%&ûøfd¦_¿~õÆkÉ©É^žI‰ÉíBÚÑT„…1zŽêZö†`„T*Åõï|Ĉ „AˆËá!à oÞ¼.“ɘL††Vêîþ\ÜaÊŠ¿gÚÜܶpÝçkBL%ï.únžiÕ/³æ}ñËðCóB7¾ýxk‚ߪ;ܬ˜±—v-žò±ÏÅ£]wœ›<¬OÔç»þì$¥¶˜+—ŽÛ²iÄO- äUVJ•Þ_ˆã¶lzÿÏ«¼,²ì{oö8§³úZrTÊŸürä¯u¿íu6¨8ðíÂéãÅ‘ÿ,gh®®¥{ÇPV^Ù-j%¨øIkvOZ·õÇ`'iyÞÓG/š|c—Îa2©$þEB`PÀóç/¤©—§GbB’›»{ÇiªÃÂ=Ge–À*+Ù1’H_½O„ÿG" ƒÁb0˜!É«´¾ÁŸ²„¹ç’)ƒ: ]GÌ.*¹â°jIïO¡[ÈÌiž¹W®`Œ¤¢¬%§_.þéËÎ>Î6¶Ž½Ç.yÏ´tstaÝË%ëEÑCÙ†.ÀÃ1•5±i·ôO Œ‘C‡f Y[ÿLP)Ï!ÓÖßÉóÓ²0o¡ƒÐÖ߉rÎïέÖT½j()¯ìM¤5IÄíæocaá ô0b„6ëÙ»uíáÈÄÇ'úùúxûx¦¤¼tsuïÒ©+}-&äìúê{Ù ¬HÚë6¤2iý."D ²>Õ'T_k˜Ê}uÜ®—@¾Íä:#„zò 廯ÎFTmBXTQCQ ôP®ï›T:Û*‹¢/fÓÝ^­&¶½Ç}ÚYßOAÈ_¹¼¸ì² ãuZ±Œ‚ŒØQIeŸØ¨­.*}Ø5pã]M†p;½ó®ïÖ1᣻ôkß¡óÀwºZh»äœ "I‚ HŒ1A &§çaa À›”²×eo¯nÔ-Œ©ËI‚@òYBé!$“É”&æ¥èÕq‚IÔmc„bÕ7ˆúb”!tîÆmkVé_E-ùm1’Mª}´S&–*ŽSb™B±Wå_ݪ4Ì­1V_½Yj(‹ÅMÙ‹Ð×þàúÝ"w­Üú‡ï±ã›­˜ML‡ß¼}3+';¤]ðÓ§±’Z‰››K||"B(¬SM-˜dÐs=~J(e˜a„¤R)I’ ƒÁ`0L&ƒÁb0åL!$“È”«`¥)e¬á8RW’cÑŸCÄ7®Â$Šªû €¦Í_Î…çŠí‹,Û»ªà˜÷bÄÁ¬JùnmÕÓ˜ªÚön¦šªk¯†²òÊn¡“@0¼C{#;ýùÏ qÞog¨©º–j¨(¯ü©& Õ…G~=p!.-·¸¤0æêñLv4fѧìÑ{ûx>‰‰µ·wèÚµ{×.Ý\œ]’“½¼<FÝ£©HBʠߨ®e¯O&_½˜]&•"„$!ùƒ§òêþÅõ‹g0¦V›ý)-˜Q,žQy÷»Òú™_oÿÊæÇ½¾ü¾ ÒÐÂο]—™aÜ~É »/~1xÉñ¼qy§¦bÊb«_Æ=}a®hÝkúšò·Œ^—̶r›²fO? Žª ûîÏüo×®˜öQ™”íÕ¡ï–óIÚêÚ¨RQ^Ù-j%È:íÖžyÛ¿+­¦¬½&-ÛÑÅ„Eÿ"wg¡óÝÛ÷‚º„…ÉKv ëFÌèè'n®4u°0@¿©K»‹‹ B<9mòGÄÊ•ìï¾Ëš¼(sòb„ÐÖ¿~Ÿ7wA¨šƒˆúœ½.ód³9~ønê§S™L¦Šô?Fô³ìúž°5ÈßɺÇIÿàñS€7)eW;˼å);̲¼A);~ óÿ1e‡NxsRv e ¨þø‘X,â€WþÏHO{é„PRBü“3§À¯’$MLÍ<=½¬mmÕ§ì&¦fµ!„LÝpDëÀeo=“Øl£ò\„P@PHÀÄIà€×KMuuÚ˔اOü­mlÕ¤ì L£ošFß—ýÿP+‹ËËÀ¯KkÿÄøx)»´{·ø¸aà©ÿ7ò•wâø 6b”b;5%õþƒ{ùùjK’$iemÚ±“‹« ‡Ã115-¯ŸNU“²Ëºu{R7hÈ0K+kåãégßë³È:éÉïY?ú†ýñ,5Þ~†ç-"\ЪìÛ½C±’’rãÚÕ~ßqvva0˜¢0Æa©DŠ1Ƙªª¬ÈËË»ví*"‹‹ EQuÙ¼öM&ïO3ó…Ê¿~ÃÀj$äë %—".yxx’$)“J¥R©D"‘ÔÖŠD555ÕÕÕÕ66¶.΋ÿžW©ËlRº´&QèÞ«~o"Ÿ/ßxÀçïá÷>xowè §V" íÜcŒ1¦)æçïÿ46¶Ù);“+ŒˆˆŠ’‡M_~äLW3öÇCÂý9°ÀÙŒeì Þm`³Ù2™¬‰Ü›Éj|P‹…1ÛÏÏO`tƒÉNîâÎÏÉ®•ÎéÕÑÏÏÏSh®€@QÔþý ÖiÐv-û˽Q&‚© „Jžíá˜õ 6b— ÅùúÌY³¦N›6ï‹ùMfíM§ì®G>Ÿ?tgBIâ">ŸßþýKⲫ|>߯û!ð5´ _Ÿ1sæíÛ·gÏžuçÎùóÐgíM§ìçþ8wj+AKŽœ‰ˆˆpå2{o9qlç@p74—™3g>yòäÊåËkV¯þ÷Â…ØØØ… ¿Ò)e÷öõucMíâj÷"UŒ–…wöóóóv7w@s8pà™Ó§-,,BæGŽîÓ§7My¦6B£~|`×yPÆ©ÝFö“< ˜àhhǧ(J±ÆÜÜ<<<k^£Uò=èÐÃA!„<'ŽŸN€ÿ\²ÐB`U:ü¬ÿv-¤ì §ðìƒXl6ƒÁ /ùàÞ]•#°0ôHÙàmIÙ±¬ÜÓIðcfBhZ û{gÓµ¯[¿”Ïç =úH±^˜¿mˆ@èÝßꔥÌçóù—KÅà àuÅÕ‹_ÜCÚB QñY>ŸÿiB œ¡àÉ7ˆÔýlùã2h¥‹Vo_ΰ¥³7¿8GÞ”½ºàP5&ÇÛQ’üs%¢í­´¯ûls$“+”VÇÿ™S N€ÿ( =°õ=LŽA«×ÊÇ'"ïÞ½{dY0œ ogÊ^Áµ·e‘Uù{(ÂðCíënºš#±ÑÀyl{8àuaêÀö–lpÅÛ™²'ïO3ó…Ê¿~ÃÀj¤)ƒÐ²bMÁ‘;åµaŸzÍö²H?¶KåÓ¬k»Æ†w÷pvºxtî3tõÞùqJRê"ì³â‘ráïz„Ì•oË¿¨J»øûðží„NÂïî)n([öï_«‡öu:¹y‡Œþô«;å’7!Ñ?èꬮnMáq>ŸÿuRÚ¯_ÒÞ×ÝIèÖod U·¬'ãêÎ1ƒºº \½ƒß›ºâEÅ+±MjÕd]ÅneÖO|>kNU“¾Òúºå)‘ó' ôvºû ·àN~ö=:ðíÀÎB¡kÏSoÔ¨´K#¹I?#„dâôÇ?ݬ°ÖÑ“ô:·¸Äe—¿š6¾{‡¡““§_‡13V>-«mÆ xþ—!ÝB„NÎaƒÆ½»…Ïç¯Ï¨ÐÒÞ&û·euu±WǸj’„¾ï×Ñ×IèÖsØä ÉåÍé…&Æ Oö}%trYq,Nq$æÐúõ:_x8Ce ŠŽ£Š¦>j#OŽðvé»ò1ýqµ9»i<©ã¸¡‰'ßöº†]Ûúu·`o'¡{ïS.§W¶ÊÈßdäè2ª´xÌñ ø|þøGùUy;« ÒÅ2m®GM_Ùi}Ec/½VMŽH4íj‘´ÜWô9C‹ÇIúþ¥¯Ä¥—ù|þŠ5Ÿù¹¹„ õ$rSw¯>ꇻ&£ž6ºm›²Kkå±;îjVî‰|>¿Ç‚Uù{ø|~è¸Ú´‘v|A²g»š¶ŸîYSxTy“T=î7ai†Ëð¿?qx÷üq½ ãê¢dÙlwL9°¤+ Ç®~VÜî›9Šê˜ªós檿/Dßû7œ“´äÃi”R»ç™¼j»óÀÏv8¶gëšvFÉÇŠª•êÖ~8ýäйëvýõ£Wy¬J]9·¿~÷&;ìc®E9ØY†B¨"mo¯ KÓmÝdÛ†¹Õ×vø…DébA£U“ui ñ•Žukò/öí;éb‘põoÜöƒwù¥q}'äK(m,Ê»½rØ—¿ö™¾ÿð¾™ýLfMŒh0¦7%™ÆÏrj+Λ7ïëåÇZ1èuñ†.½ .»Saé?gåæÃÇŽmÛ¼Ø6åè¨~3´ìýŠ´=ý§|WôÑ߇-ë¿bÜ͸²j× ­^·I{[WMBÉJG.¿;yÕïwoö)¿3uÐèŒZ™–ZÑ ÿ½`È¢#ŸýrqÅ(où‘‚‡ë‡Ìÿ™ÝcʾCû粚5ñ¢ZÝZ6ªÐÓžœäažýïÝFçΓûµ>j¯3ÍÙ­É“º4Èj³fž@ž¿÷"úÒ`ãèÉ?ÒRr“öÒDŽ.£Š.cNä­;wïÞÝäomhóÞÝzxl†î×#z_ÑÛK¯•.í6™´ØWô9ƒ.ã$}ÿ69^ÝöÝñ×êÜÇ'F͉^¿sßHÜ ó®7+Ú[0òë“€®`Œ‹ Š öîÚŽ1./+Ý»k{Qa–C‰ccc?ü‡ÇãýqëQlllg§ÏÜŠY‰µ`mG/ÏvË1Æ5Åçx<Þû§^*>*{¹˜ÇãíË«R[±*w/Ç[ò¤P¾›°k¸£“oªH*ßûk0Ç;’_-ß-|:ƒÇãE–ˆä»âÒËN|þàŸ¢•ŠdX¹îÏÉeòÝœ[+×ÅWãñxÁ÷7ÖêÔÈ¡Gÿ2)%ß-ˆ^Æãñ–Ä•h£U“u¼ Udnæñx¿gWjã+zèë"tï›%®s¬¤:ÞËÉqܹtm,ZßÙË=pU/êèí•?¥—Lïgå!ß4Ë^]nh"f]?·£Þuµåwùü‰‘™º÷}äè2ªè>æD V;„6ÙƒôÐøJ›qC“VôÑNß.ý¹ ‹¯ès]ÆÉfõ¯òx%*‰äñx¿eWbŒÇûº†M½1ŽÝ4Ð=x¾–ÑŽ1N>ü.Ç{×ÁÿöîÚ^^V*ÿÛ½ýÏGî=‰~û„þo÷ö?ËËJ33Òä9¹v c¶ŸŸŸÀè“+œÜ%ÄŸ“]+Ó«£ŸŸŸ§ÐH‹Iú„?r*ùCßEq-µ3a?ßtEñ©åp#¹qÎÊ#ç¯'g«¾=ÀÐî£ Æg¾ùW¾ûÓÆXû®ß:s^Ýõ${¤|›má†JIå»…ÑJ1ž7¡Á#Þ%s ‚9ÅÅT¾m$ôW®«Àÿ«Á-:_fæe;LW¯sËF•&ìmOÚv*g\(É$¹fÍ]ðåU„Pú±®Å;n\¦ö:Ӝݚ<©û¸Aç+wœ}Ý•‹eÒ)Àˆ™p M÷>¢]FÆZtŒ:_é4nèÐ.ý¹ #49ƒ.ö6Ñ¿M¢ŽBˆÇfð B\;®¬6·YÑÞ‚‘¿íb GÛ_?}¹7ÊD0•PÁ³=³^ÁF,-+FmR8ìžX,FMñµ˜õ}‘d‚‹D±LB/ïûnõ¯ûWÏ>XT-5¶ÿzËŽñ¬Õ§®Ý;}E\Íû‚²½' k¬íÕðää*."BŠÕŒ•/+B¾FLÍ·!›PÔe*×UÀw0h\1S,åÚY¼’Ã47a5Y5ÚhÕd]šôU ëbIšXJ^›èâòêáJ"11-kÒ",«,•R—Wwn<+屦IÉ4~n;tñ†.½pwå°Y;S'³vEW?S\1àݵZ~ !–rmÌ» Ž@ûû-{¡•ëjao ãJ› SSæ+fZa¥6Z59n „RöFýÈÿ™ûSu­»„cYe‘Tƾz(Ÿcc®¶zËF•¦RöÖ÷¤¡ÍkÖòÃq¥a›Ø.S+žo”âa÷Îe[}Ó,iÎnµžlëqƒd˜³”žÃ²e1²µÓ™Þ^ºÈÑmTÑeÌ¡GǨÓè+ÝÆ–·ÛÔõW×”]SΠ›½ôýÛä(*7–I ’I"„&¨ÚfE{«G,ð:SvW£¸.0ñù‹êÎ>ßÜuã³4YýÎ÷Q¡]ýBv)ÜXºÞײî±ûGtÿaIbTäw3ç.÷ɸ¸ÓŠ0 üÞ†úͱ—sïmãZ ˜[Û$ÆÎ&¡gURsF‹½£ö;>›“÷ê¶’’–TȰ€¯ÕѾ.Á$zu.R2Õ'Eè}EƺˉÃä|øû¶IÊål{-†0b–1± IDATcK&£¶ðÕ!©¨PúX[É­þƒ^-÷¤:·¸ÖŒ¼³kÅ”žòÝŠŒ#͸>±™1¯.2Qº¶ö6e‘.uÛÈÞ&âJ (Yy™›Õgíéb)×ÎD­´7ºl=¿~ º²lÄŒ~wÛ²H¹ÎVLFuÆ«Uïâ‚ÒÖUšŒç¶ð$Ar'9Ú“šÀºôÕ~¿å{öäWìÊ­òXíÙ¬‘æìVëɶ7(Ia¹ +¦–SDRÝûˆ.rtUtù[|=jùUR·qCËh×£ŸÔÍ^úþÕ媡M´ˆh™Em“@ ’Òœû7âÜ©­A,9r&""•Ëì½åPDDı›¾U£jÖ?-¶ô[tºžS'örIâúƧCÄ£Ã;‹fzI*W)=FD²ì¿ïç³áûÅç2üæ|­}@X‡LaĦ±ÊÅT+¸ì=/³²ÔŸJëªèé2Œ;¼ÃÓ½®±‹ –Uf×?'Wx硦B­¯´\×h™{õž³›»2.NÆÚÈû„o”{õÕSȉ{<6®‹äú'îܹ_~ýS³¬ÔÅ“ÚêÜü^(—R¼W3åÏþº¨½E£½ÌÊR«®Ÿ/JØu[{{é-Ò¥nÛÙKWM¯‹ê¼ƒÉ5R1Nº÷}ä´Î¨ÒÒ‘Ÿi¢¤Å­{-£G{5i¥K´·Â,¦­t··eWg]FQm¢mÅF©¼§M¯ƒ@Û¦ìÞ¾¾²sL£ ©]B\í^¤ŠÑ²ðÎ~~~ÞîæMÖ­ÈØ’!–vX<²]=íC{Ïv2ͽùƒ¼oK“g8cÉ“÷>Œ<¹û‹uOÍ<§7|}dç•SjŠÎ¤Ö’«ÆºjoÛ¬×Öñþ1GÎXûçå›w®GžY?Ì’´Vøb®çƹ¤(nЧ«"nܾôÏŽ cö;_æe¡{]ëàϘš¹åBqeUZÌ…Yk“•ëjã+MÐ×¶uQÎŽ>/:váÊÝ;·ÎÙýÕÔ÷§Çj#yÜcÊ_~¿æÄC±T’z÷àŒã ÖÉé"¹~â§ìÈ‘#GÿiÞo[èâIzué…Yav)×ÜO+Ã2ñÃÓ›'hÆ…¡×³ˆê˜Á3¿¿rëöéÝë&î+ÐÞ^z‹t©ÛvöÒÇ•3Äì£MÞsöòÍË'猜Ï2üa€£6Zi?np­ûývPòÑY+.çÈŒÝûÓÉë IIIIIŠß o­lŒ6=¨I+]¢]w4i¥»½-»:ë2ŠjíÖ!3 bÚº==zô葈Bm}tŸu }c ÆçÞo:!c¿}ˆgûÚ?${ÿË|G§¸jIƒ'”äñxçUaŒk OÎþä½ÎÁ>NŽŽn¾íÇÌXù¢¢¶±œÁ^Îýÿlîs嘒œÿcåàžœŽ.^Á#'/¼W^Û¬gÒ¥–©µëeä_ï÷s8:{Œúl铲Zíµ¢©‹1~°mQg?7G'·¾£§Ÿ‹Z§\WK_©¥Éºå)‘ ?ìã!;õšðm¿PÀ¹çˆé‘>çñxw”Nð*ô}Ôvž”Ô$ øüîóîÉ=×ÇÝɯ×ßÚëLco“žÔqÜ ycŒ“KçG¾ëâåèäÒóÝÏ.¾¬ÐRç&í¥‰]F]Æ92Iñš©£KŸÿýôysxCAuÞNvKfßûJ`ÞÐORèõuzbr‡gè O¾í?ô¯Ê´”;à ¢øÏØ·{ǰ£äÛ'Ž b±Ù FOZ>¸wwÄè÷ËËË®F^4d˜•µ SŸ¬L{þ"+gß’µ\‹ž«ÛA¾þÿÈ­]©Nƒ¶@¾è?”¤à« ‡úõììlk\˜tÅÒhϱ{ _Z½NÙŸoþ|ä‘t;ÏŽÿÙʆURÿ—|r5öððF@°ÊŸE,>ðs~i‰­°ßÇ«×Ý ¼¼ý){覙› @C»O²²à^F¿ ™æì?~Ðg]L[n Ú7ó*.HÙ€”þÏSv,+÷tü˜YšèþÞÙôVצ,e>ŸÏ¿\*n-¥ñKù|¾Ð£T?~–+~ÛÐÂh“”½ºàP5&ÇÛQ’üs%¢í­ôß¼g›#™\¡´:þÏœJèlà-OÙ‹¢"¸á¶,²*E~`c¨ÿæmºš#±ÑÀyl{t6ð–§ìÉûÓÌÅšÏüÜ\†Îz¹©‹¿»WHŸÉ劊WwŽÔÕ]èäêüÞÔ/*$Êbøv`ç@¡Ðµçˆ©7 jT-O‰œ?ax ·›ÐÝgð¸wòk´W¸¦àÈòÚ°O½f{Y¤Û¥òiÖµ]cû{8; ]<:÷ºzoŠü8%)uöYñH¹ðÎw=BæÊ·å‹[Ò.þ>¼g;¡“0¤Ç»ûcŠÊ–ýû×꡽C]…NnÞ!£?ýêNy“‹¢~Ð/ÔY}]hfÊ.­Iäóù|>ÜÕ¬Ü;ù|~ªò÷ðùüÐq7äenHûîøkuîã£æD¯ß¹o¤aΆy×åU¤íí5aišÃ ­ûlÛ0·úÚî¿Ô¯,Ï»½rØ—¿ö™¾ÿð¾™ýLfMŒhsç_ìÛwÒÅ"áêßþ>¸íïòKãúNÈ—P!,«*VGII™¢zÚñ]ÉžíjÚ~ºgMáQå¼YRõ¸ß„¥.Ãÿ:püÄáÝóÇõ.Œ«»Ç Y6ÂS,©ÅŠÂ±«Ÿ·ûfŽ¢:¦ªÇüœ¹êï Ñ÷þ ç$-ùp¥¤öùÅC&¯Úî<ð³ŽíÙº¦Qò±¢j¥ºµN?9tîº]ýèU«RThú§”˜\aDD„T”>lúò#gºš±?îÿËÎf,cg„î!„F>´“ƒQwÓåIݧuïØÉò=áÑÝW‚ºúÅF×÷Â_ߘ2„::¥ Þ¶*aõj/s„Ðîù ¬F_7•@u #o\™}ãÕ<úéi_0=nŸØÄc3B;yœõî;ÿRÖžA‚²Ô…=ÿi¬-ƒe›þ2Z¾}|{²‘íD>›!êò Æ·6_Ë*¬»(šÈº>€ŸtzoªX)v\ì(X@ûêÚ *6\» *ŠQ+öŽë®Š»î*Ö-–uׂŠXhÒ!dÞ‘ŠI  ¾>ÿß’™Ü™;gî93ÜL\Œ‰èÙàb¶þ²6eÒnñÔ­ÁM5‰Ì¦®tßÑõÐÅLQ'e]·ën“™Ç×Ln"ûpk÷î¢2Y9#-ô‹Ù8¸¶5Ð=Ѽ_¼¼,@URvbñœœ2nçjØŽjÝTœyöU‘x³»«“6ˆD™DDVYò9É–šD¤a®!)z#+}àß,}»²Q4Ddìü#‡µõæÉd’¥ì¯ò,zf•¬ªõ„ztåµ|ÍQ¤›·}Ÿ¯W³^ocÍ3»ÉËZG8yß¾T–Í—½ü·ñu®Ã¨žD¤aèÕL—ÿ`åê1\6WÓÈO›³+2poh÷f], Ë.DË|ÐÐZ =ú­Š¼gÑ&ÒNÀ)»–Þ¦š²×|C"z\(îD"Jûc“˜a~Zî±0‚2ÿÌ`±¸cìõd¯µm‰âåeª”²ѳ=·u­ÇqˆRïïè»7Ñæ•+ËH¹,bsÙDÄâ²HZ$›õR$Ö0/MˆY\]« ¹€ˆIn¦Xjm¯-Ÿ«iYæ)4Lñs‘˜}i˜½½<¥'iq±®^qøVNN¦¤ì¬÷‰uÚíp±”iõ½¥H$"¢1ކão/O/jÌcO·åù˜°Ðu{C'ïKÏØ6Ÿ½zÛ&òåŒ i¹g|ÈÂþÖY{¥L_ì^þÂ@Cž„³ˆMDÒ’Q4¹Ïr‰ÈQû“eq´ø,yYnÙ²UIÙk[[‰Þ'•s„Â9²‰B¡Ð väý+ß+-.äsÿzû®4ç¿Ë‘0ÖBM"bqtŒ¸œ¢´"ùÜ✜2¹-ÏFÀ ˆÞ2²nÙrøD¤t`̵巉h‡gÓeæ†?Ê\æh${mÕnÐÆvƒˆ)~tû\ØÄ)óüð˜üâÀºërSNË ƒÏ¦\ߢaØeJÉ}q¥tìt‰è~ž¸–Í >GÊw:^Tð¤»_@ЯÇÚëóÇùzÛ†ÇÌi`ÈUYA¿úú—ï®ÊûpYD”~7BÂ0-ºYÊæŽjo¹x…¨©ìí£ÝOË– ldrñºÝb/.ë£ÌXáÀFZ°ìn†‘Óœa­eÓqVÿ>C.GÞ¥-ÊàÕmÑmÎÄú§gßÉ“0:%xØ<‹åžVc×ÿ”—ä4{+K倚4Ãe]^¹ýžçÍåEÒrccª3eoàè˜rc W»ñ¸ÖM Ó$Šh«·[=MUGÔtˆœÂn÷“×è… Fuf§?Œ˜£cå7¯þû¡2ƒ#Fö[¾èPë=¿ºupBìó²e}7,YÞjl§á¢À]„úü´—¯œ;‘°~}c®fývíêj¥9I«“Dâ.?õnÖÌR>q²^Ôo+êÀ"Ê|2y\¤ž_—öµ…F¹É÷W-¹«_oœ<_—q[0¦À5(‘Í_óCmÕÊ×wß0ÄÙ?²÷„ü >\¸¢ôkq1i7,·×Gk€IÙ‰èvÄMs·pQÒÑÚ#UÏ׉HÏnè…E3ö´…Ñ4lÞaÈs價ÍZÍ‹]Êš³dØÆÉy†­×yùŸ’—Õ²ðºx~Ç¢Ðu‹¦LÏ-2´´wmå>ÔZWéJÿ]ÇbsggVvbÀ†á?&ìIÉb¦¥aài^°guHì«´žžyËNÆÍü`!ږÛê.xaóÓ÷•òZr|‹ý’µ{7Úø†¥eÒ´m—Y&ZhjP5,"b&#=ˆN?:hØÈœì¬£‡zùø›ü/‡&ïõÞz-f >úç²æ¦h(PY1;·ùöê#{}èÀ¯.óø|GÉ7o^OèÕ·vvÖÅsg½||ML¹åÇrŸ?ø'ùuLðb áͯÀ—„”½¢ÆöÞÿ¼žkäá |âHÙ¿2-W^y¹a€¯=€”²ü¯§ìŒ$»žuÄË" hT§ß‰UX_ÖÓiB¡ð|¦¨R¥ž]ѵUc[k+¡P8áq¦ú›½Ú­°Ä§>“¸wãêçÑDÊ͹ÃaÄàëMÙóSÉgØC̵¥Å)qï »47þ›ÅÖ±¶¶®TÙËÓ¢¤ZO¬™¦ÅfQ«ï,ã}7ªú}YÅѨ¹²iû³ÅÒ¹óÇ»›iQ3×ÖýÊ@}nC,®A:²×ÿì³õAÞ¸‹’Œ\Z€Œ 7;Y|'''kí+\ ÛQ­›Ö¾~U$twurrªg«­XžëµžP¯ìܨ?ÒÍ[͵,¹ÍÕ¬×ÛXóáîD•êÎ^7ÏÏ£uÃúuííí]Z‡Ñ¿â/Ðý3õíÇk±ßoqÝa­U/«N4Ô)«iä§ÍaG.Øòò“W襁áYÿÅøŸôœ;ÒÙ°zö/È’(?÷lÏm]ëq¢Ôû»úîM´y*%Õ’ÜL±ÔÚ¾4³×´4.›s?‰Ù—†ÙÛ—Þ¾•ëêe©²ð„¾“¶'Ž ZÒÆIWÀ½‹ïÒsq1ó…š$k˜–þ7€#Pùv²:ÑP/’<Ý–çcÂB×í ¼/=_l`Û|öêmCZ˜¨¾Õâ‚GÃüæt Þá߸ºjª¦ìµ­­DRY"^ߘOD/DA_-åêò¤âŒÊÖªo}ýË÷×çK½eccþÛqUõZ)ކ:eUÅâÕmÑmÎÄú§gßÉ“0:ª=èjä€uw¤Ñ¿o°üèºÕS+€ÿmÊDz7pt¬%‰ãj7׺imóE4ÏÛÍÉÉ©AÉ—10ûÙòE‡n‰Äʼn û&Ä>/;×wÃí×Û: ŸsðÔ…„k¿ß¿sÖ¸þãÿJSeÉ“Z™?Ý·èÆó,F"ºu,jäÏåÒk“&þ\M\}*#7ïù_§&-~òñLšç²XKvß¼sçÎ;…Òrs­{ÛfœXuäò?~üX¬Ú÷ˆI¬ü¿ºO\~á÷«Çv.“ªz­GC²Še>™<`BðÏGâ¯ßºuîÈΩKîê×'Ï×Ei¯“’’’’’²ÄŒ´8]öúmf±lnÖ£è+ZNwÈIzX"ÿý¿eÔªȨ4–ývÄMs·pQÒÑÚ#ëiVâ˜ÌZÍ‹]Êš³dØÆÉy†­×yùŸ’ÏÕ²ðºx~Ç¢Ðu‹¦LÏ-2´´wmå>Tµß7í¹eÿƒÀ©#<å1š \»¬Œ6²Ûlù\¾~Ç!C'­ l¼†ê·ì:mÇÀÑ=Ö~°a·#aþa½¶æ2 sññóºe6Ͷ禀sc¶Îž[DDמ¾¨ðfüôìGÄGgOY²}رu–ŽíÆøOîµLÅZ)ކ:eÓ0ð4/س:$öUZOϼe§áÃfÊçÞ˜â7àBrÉ»ynn󈨾ÿ‰ó!Mˆ(ûé1Ã\‹éUºÀ_ÿIl£ÇW³V Ã""†a2ÒÓˆèäñ£ƒ†ÌÉÎ:zè —¯‘± ¤¦ü·Ûë6 žœðpòT€ÿ11;·ùöê#{}èÀ¯.óø|GÉ]à›×zõíŸuñÜY/_cSü¢ ÀW );ÀW‹Ô(-óÉÉ#¨2Üe@ÊHÙþ×SvF’]ÏÆ:âe4ªÓïÄ‹¯yÃþÝâcmÛ°jeÿYçmc×Tµ'îݸzãùÏYçoØj·Î¶Õ1âìUK‚†ôîêho# Ï.úà9ÏÏôõ¨ggSÇÉutð¦l £ú\€šMÙóSÉgØC̵¥Å)qï »47Fø>™²ÿ¼amåSv¨qíºuìõ>Ûê$ÅoWî:™«eçån^Á\Ñ‹þ]F]xe½xýö°{ü¶;ÔçÇã*ΨšJ<1&ýv¼†¡·“¼[ÊÒúÞT áƒÏ`ÐÞcƒ>g—ÐtxüÏ.‹žîïµ/þÕsŸþ<ùnžxÝ•õ~fZD¶o.õÚ8ù%Ýšêð”ΨšJÜe²÷¹~½>D”rùЦqo=K6]”u~VÀv-\lmlê9µ8aÁݬrc ’/íøÁ»]];[ûºnz„îy*›.-NmioÛ)äNÙoïÖ¨nÓ)²×²"ÏÏDûuhfkcÛ´}Ͻe”¯”äôæÐ[Ö¶µqhдïèYײ‹Ë]fü±ï{Ï–v—Uâ¿ÃË=]ml:øŽ:õ$[>]ñö6´µ …Cî¤ä½Ý.,ñB$ù u~rr­OÛ¦¶6v­¼†HX- —%唤ü“¹É«„Bá†×yò)ÙOÏMêרƒm†ÝO¿–R Ÿ¥NY¥>Õ6däüx`LÞë ”Ä¢F­Ø\Ö'ç]ØüŸÀ°«ŸÙûëUGÿŒ´hÕߪ̨åwÙÅl븗¼&Ê^Ü w ;î»±§(ëZŽ‘sà‚áÖfz¢Ì¤ƒ‘óûx¾¼c3EDTœ÷§çй&>›çºëq‹žÜMøíáûô—Í3 ÷¶þspÑü8þûß ½Ÿáº2P¾vFš?pÍËè]§¬ùCûðÏ/ò댓?ùøïþ§×„ éí›ðŠR.Ú~0=¿•ž~IÙ¢ã ZÀËÜ0köe“J2{ÏO ‹¶ÕÌÞ2kœWß+÷NZó9D¤x{Ïý~MÂ0×Fû½íxþØ4ÙÒjñK–¶†êœó|wç1a¶¾Sv-o—ûøâ¬ÁUo)g<¸·óÚŸ§ÛéótìˆHÏ&hýbùÇ]›9¿>ÐbÉþÔüÌ´ˆ¨ m¶X:wþxw3-"jæÚº_™…·œ7¾øðÌÐ{é¡.ÆDôì@p1[Y›2)»xêÖàÆ¦šDfSWºïèzèb¦¨“€ˆŠ².ŒÛu·ÉÌãk&7‘}¸µ{w‘”Ê”-ô‹Ù8¸¶5Ð=Ѽ_¼¼¬RŒ´èû½›:Q³ƒ‡FþÓã^þÒÓVéöZZYÑ#>›ÅÖ±¶¶þ`±5WçËÓ¢¤ZO¬™¦ÅfQ«ï,ã}7fªØŽÌJåÖ½zh¥%ŸCD®ßÕ=ÑÀcÚÙäÝ^Ö5ZVqÛ "Yõ+ºéÍâÔ©c {ýÏ®1[ä-Œ‹±(¹NPP«¬Ä™.}™•Ã3{ñì¥uNIøú&Źw¾séI̓ïÍf±òžç©2 ¦Rvbñœœ2nçjØŽjÝTœyöU‘x³»«“vÉð\¦øðúÐí±gÿ{™ZX$&’Ñ¿bÙLM#?mήÈÀ¼¡Ý›5vq°4,»l-…MâY IDATóACk-<t:ôèD´*òžE›H;Aé=i›ßÛTSöšoè@D ÅH@Dil3ÌCË=bEPæÞ.‹ÅSòµEm[g¢xyYåÍâÖ_U cï&:¼Ç{©§­ÒíU¬æê¼ÿa¦¾ýB-öûì¶î°Ö´ñ¡Š êtó¶ï³["âjÖëm¬yfw"©v«SVqÛPQÖ1~Á'=çél¨J­t„“÷íPÁgóUº–“ýakêð飻òŠçÔXÊNDDÏöÜÖµÇ!J½¿[ ïÞD»ôët |'mO´8¤“®€+zߥçââ’GÛñt[ž ]·7tò¾ô|±móÙ«· ia"/>.¤åžñ! ú[gí9”V0}±{ùDJCžÐ²ˆMDÒ’%ç>Ë%"GíOn‹£ÅgÉËrË–UŠÍÑÓ+ss×ZÀ}ž–«Êö*VsuN‰5LKsDŽÀZÕMeŠŸ‹ÄìKÃìíK·WZ\¬«—U³eUhJ‰  ó›kÐ1x‡ckÅá[99™Vx‘¦ÊmœYi<­Nçî>&"IÑK)ÃhÛj«2 ¦RöÚÖV¢÷iã¡pŽl¢P(4¨yÿÊ÷D´dßCën;BÆtÍÊIÚÿÁ¬Ú ÚØn1ÅnŸ ›8eÞàƒ“'SÖ]—›rZ|6åú Ã.ST~œŸŽ.ÝÏ×2àT{\¤’ì,1#’ñB$Ö0ו½Vº½_¤ÎB>÷¯ÔÒDYRXî©ù,.K~ ˜ˆ¤’Ü2óx6®`@ô–‘uËáð-Ô/«”â¶¡ì‚A1¨ÿ}6—6.Ÿ}+ª•šc:iÜywš¨¿ìmá»ÓD$ì`®Ê\€šJÙãNÇ‹ žt÷ úõX{}þ8_oÛð˜9 9‚÷_DÍK5-KïïÞß|¦â±xu[t›3±þéÙwò$ŒNÉgØ<‹åžVc×ÿ”—ä4{+K媛4Ãe]^¹ýžçÍåEÒrãL“ˆžÿrðwžVý~=›˜ 2’¨2æ»QazÜ_¹Åí‡Ø©¾½\]žTœñ9ëÜ·¾þåûëó¥Þ²±1ÿí¸ZîRÁ^—‘ä¾*’ÈÆŠ¤]»Uvn`#£‹×í{Uø¤uÊ*³â¶¡ØÕÈëîH£ß`ÉÿðúGA­Ôãî_oaðé#)ù²ÇÂ<ؼ—ÅæMnd¤Ê\€šJÙ8:¦ÜXÃÕn<®uÓ´‰"ÚêíVO³´à¤VæÓ÷-º1|««•Æí¸è‘?—KU3ŸL©ç×¥}m¡QnòýUKîê×÷ANæ¶`LkP"›¿æ‡ÚªW¯ï¾aˆ³dï ùA}:¸pEé×âbÒ&nXn¯ê⢜Û3fÌÐ6ñq*Ébó U{éd{ÍœÝ fót­èb¥ÊöÊX÷¶-¼|bÕ‘Ë^N–l";‡:²Ü±æêì1‰Õ~n÷‰Ëç j›ûøâì˜Ôr— Mü¹¬ËWŸÚ2Î=çÉ•I‹Ÿ”ë»aÉòVc; ì"Ôç§½||å܉œ€õ뛨YVq· QÚë”1e‰);=))‰ˆøºæ<"Êz=peBËÀ­9IKíÛÔ«/»bQP+®fývíê+¹8}òXúö¯wD”2S“«cÛ¦ƒ³9 \岴잊ç a%ÿ´ù?ûžëš•ÔZWý²Š)n7¦ø ¸\ònž›Û<"ªïâ|H"Ê~zAÌ0×¢FzD•.ð×ÛèñÕ¬- +çý#Þ#ÇQÝ!G/†5'"ŽÀö×Ó[fL[2{ì0FËÜ}pðÊ…=äϨ1 “‘žFD'4ldNvÖÑC½||ŒM>O%ò^ï­×bÆà£.knŠ]R-òßn¯Û,xrÂÃY*ç©P½bvnóíÕGözbÄ Õ ®Ö=;;ëâ¹³^>¾Æ&¦Ü/»¹Ïü“ü:&x±†a‡ÐfÈ×à›Õ»GWFÊH†‘J% 1RFT,aF"-Â%$\ý àNÙDí½ÿ…y=×ÈÃø,ìGø–åŠ%RF*•J¤ŒTʉ¥R¦ì#Ý ~ç §ì-W^y¹û®úi™HN8|ØRv@Êð?ž²3’ìz6Ö/sˆ( Q~'^ |_QÊžŸúK>Ãb®--N‰{WØ¥¹1Âð¥ìé·ã5 ½Íxì¼”ÝR–Ö÷¦ZÀW”²?Ùû\¿^"J¹|EÓ¸·ÏQ¨qÊŸË..xd[ǽäÝ0¡Pöâ¦P¸[Øqß=íD€J‰Ý¿¯ìÛŽ]ýÔJÙ¹¶ñññâÂÇÞ¾ãçï?ÞFŸ?ÜÇÛyíÏÓíôy:v7@eõî7àƒ_?U+e'ßÉÉ)ãáv®†í¨ÖMÅ™g_‰7»»:iók€šÆUñsÏöÜÖµÇ!J½¿[ ïÞù:@UUóÀ˜ÚÖV")CDDs„Â9²‰B¡Ð väý+ß#Ü•UÍcâNÇ‹ žt÷ úõX{}þ8_oÛð˜9 9!b PÓ”§ì Sn¬áj7׺iaÚDmõv«§ÉE쪦šÆÑ툛æná,¢¤£;µ-F"_PGu?1†Èë—[^DDToä±G"Ÿ!øš}ò.;ï÷ßéÎ@Õ˜‹ j6eçþþ;…/G ª˜²÷ô­Ù”]&¯E‡·?fÿ 4¹¤‹;Æ îÛµ³§‡‡Çâ95½º‘Ý»ö›Pú^Zäáá1,üž*ecùz”PúáÜ—+<<Ý7¾K·þê,á«í U82¨Ø6ª°äšö©½ð,vbg…¿¯ñÿN¥úïg‹ógèû5q¦C‹ýŸíG_ühöE‘²¿W˜qºa÷0Ö”Š3®d‹Z;¨XPÛrÈ¢…!“Gö³ÝŸ>tå™—ÆÀÊÖF¨S–zcݘ…sj¹Mž37xÖäNÌïÄÿ°cŸÜÿóþëhï/É$¹SÃöæ»ôX³výúõ#-´¿æÚúEm‰‰‰‰×;®zNr_k_¨Â‘AŶQíÇœox/|cý÷ Æù+luß^‹ý<³©võµç¯_%~Ç4óÁU^;#.;/嘔¥ÑÕHCÅ‚|­n­Üˆ¨sÞvS수ùƒûs^¹«…îËÖt¯Ö ;yJ«Öàè¹ÃeoÛvð4* û[qÁÃŒbI×AÞÎVÿz Ž©™‘XŸ‡÷m«Â‘AŶQíÇ@ÿ­‰ö ðÕ¶+´ç*ÓÕàJ†‘J% 1RFƒÇfF"-¨™²'ŽֱíGD·ï tñλ2³©·uc¤€Í"¢Ü—×7DÇ\»û8W«Өý˜ ÊÖDZôúÌ…¿9¶ž*q“©(÷ƺ¨ÃÞ{ø&#—§m䨢ƒàèº:¼*ÄêÏb'ŽZ÷ìõéa~§‰ˆ¨ÓöÃA6ºêGCŠ×«Ø?'·¬Ús21-ß²aë£T­IQÎ ¯žsú~ß.þp‚¶C‡yƒ­BÃöeòjˆò²ÖQ¥VŠ×«´m¨ãùù‹6~žQ$¬ç:zæŒ6%~;ÑcÒ™ÓGdoóSbz Ü6vßñþ¦šªôÅ·:ÅÛ«¸å(82(í Š©sÌQ¼EUì…̇§Gìºû<]ϲÁð9 ½ëëWK»RPgqVÚSþÛ2fÒÁüÅ#Z¬Ùþu¶Äºa˱³f´¬¥¥b­¾Tœkî˜SCg:5)胊{Y¶Ø*ŸSÔ©•âí•Ew† Ûtàßä,ý¶¨&z™¤è•ŸÏ°:“·FùØÈÙßçšéøý뼕¶+¥uþ÷Ô¶ÈÝ'ž¥å[6l=ÚŸ=oòù¥‡O¶Ôå«y­r¬T9ÿ~ªå¨îþT«ãI3û Ðò‹ÚÐPþáÃãúlÉhyü×YUëw±ÇNW­ òƒ‘Dô¢‹÷ˆ’wA%»éž‡Ç1ó–Ë÷.mV©õišzÅ&]xK%){LL ™âª¢û¾þAk Úš?ÖU‡Sœôèï?s+\ìÃc“לíûÓ¦1îï[v íMÿD¸ìÕÖE›óa?ß²k„aþ ™¸&ÝuËša²‰¦%7þó^´ÖØ­ÿÜ1­ØYOw®Œž2.3v×nùÅü5ÅÌ¡ÿ¼HvþŸWŽId{=ãšÿè"‡ŽƒG±rÎìZ3gô«=¿.7â–2Šó‡k÷¬\ÊžóWž^Áãý,Œ´‹rޜݵþGÿ·‡÷†Èj¥z¬>fÕuaLë¢â¼?‡Yî±ÉßB›ˆ4M´Õ†RRIan®¼žÅeg©¸Þ ¥ÿ=)⠳ŽõSïŸ[t®R­ô¶ÄmaH‹AQSþ[v%|õDzç\7UÚ•â:¿»¿m⊽õ½G…y:eüwqip|¥ÚL•׫ÎùWiË©ò¹[A«p lg>7nMñ¸õ¼÷éÖãO²œg®Zwó°ÍsiÔ˜Ççs8ÅŸ¼y=¡Ò);‡_kÓ¦MbÑ‹ñ“D¬kªË ž0¾ÎOˆ u¹š–•­+G`EDyÏóäS,,,ˆH‡SÁA±ð]|®X:6`€«‘5tnÒ¥¢e>8>eý¥Á[F¶Ê'ö›½ðÇM<û†NßµéÔ§g'ý’ýjjnND/xlbiÉ*PÖ­»¤|‡è6‹È¥žErŸ 7<Ÿ8ÑN·ìÇò%Ã'ô’½Ú½O¾/.ZùŽk³;j¦ì0áÜÈö²ïè )KÚZ¨yTÕ©årãã̉u ˆèÕ™5b¶îjÑg§Â¿üX<‡¬ÄÃ\eï& Ä9 )Åâù®ÎšÜ*­‘EDLÅ£t>¤¡ßI“slWX4×·}Ãúu­Mõ* pdYàÑëæm|p¹®ØyàÁÍË7îܽ÷÷í˜è¥‡ý¶cëS Œ;ùÈ%ØÒíTÕkeÎgËîͼ5ßX )NS¥VŠ×«JÛ¨2‹3ÈN¯¤µk Å{q<™:YÖèáCq«Sq{«Òrö…/µE5׉ˆÅâö-ùš—¦e¢«/D’–ºê¶+%uVg=…ˆX‰fÉ}—ºšÜçq¯H…”ýKÅùKsÔ9ÓU‹Šû z½Lý[µsJ•k¥t{Ylž‡áûÑ;<=k"*-[c½ÌÈe¼>çò¶ ¯W÷°!¢ý_:N3Pù³ ê|èM¾‰Gù‚œ¾·£„·ÕçªÆJñQEiË©ò¹[q«Ó0îîkºáòê«×xÑž]MšÌ°ä‡¤«šv¿:þ@Ë¢?›(ûñ1¾®kƒ*æë$%‘¶JO#áj;o ›²q_ÜÆ°S™b=KÇ‘³C{8•{RÍ˼»×‰;¹$îå/Þ|o’ÍwüÎÓñ;O"zvyý¨—^Vé¾ãÛb ßX¯Ì‰GW›Ã¥|x›ÖÌTðñ1îU‘˜}+¸[·²ÓÄZ:¹ê謹7LZz8¹·ÿäñM´xœâìkc7‰+«ª©z4TÀӬݤI“÷o¤EUXoE×÷ùÙb©¹P³´¿™V.²>Í!bsØDÄâ°HZ¬´VJÖ[“mƒˆØí²7<,øœW™ù5~øPÐêTÞÞ*´Å}áKmQÍõA"bq4x,yûä‘”©†v¥¸ÎJ㬠§›­[öŸÎF\vjŠH•ë±/ç/uÌQ÷L§¶ û š½Lý[µsJk¥Jkg Ø¥-Ÿ]¶lÍõ26×h\CƒÕ1Ç©ÇxQÖåøŒߥM+“:W\gFšŸ)–˜Z–¶X¾¡nuƹª±RtTQ¡åTíÜ­J«ëàr|ñúDQW‹œãçÞŸÜ‚¾å™·WgÏ¢÷ÁŽòðˆ’Môððгšqhg·Ê®¯ õ,Ù¸›«z¿³Y÷yͺ#~ñàúÖ%ËÖÍ™ëstMÙÿÄ4™»þÇÖÆôwÿuS–¸í[ô©›èvíÇ›ð§ÜÌPå¾£9óozéCp¥’ì< cnöáÿÜ+X‹[‹Ïå{‡ô,7ÐÃ3QWm>™hÑfQ@ß÷ %ïM|ecU5UFͯ—E¬ŠZú\Žø]iê ÎËû µR²ÞšlD$•äåJyÖþºH"0Ö.96±dwnJ>Y©ü'[ÊÛË®¾ð©¶QÓ[TC}PáùMÝv¥ ÎªÄYQ›gæJùm­—EAùÓaÅûèËÅYÅc]MsªëLWÅ þªö²m±ŸùfMm¯Ú½¬Å¸ï &ú#×_ïè^®ÀÒ¿¶~5ì¶–—Sø¦t$LÑ»úÊ©w¬S3“±h3ÕýÚ3ÉƒïÆ ôZþB¶TÞ)Öoظ~Í<‹56bݦM›¬Ü–sVlÚ´)2´MòŠ+/rx&c +»«lœÚŒh'ÎXPþbMÛZ›Øüñ+Òʽ55¢ô‘þ¯Ÿ¤—ý˜8ïA¦DªS»ÜÝ}Ž—‘TðäÇ.v:¹É{r$ïW”õh§„aœÚ˜ªRÓÁõôÓnÞZÛ”%,ÿœiÑ«¸¸¸øó*ƒ< #0-m%O&T6VU£N4jz½<½.’~P¶§™fÚ­Ûò·Ï¿ü<µR¼^•Ú†8cÙ²e‘Q1•­ÃHv?}ߘE™WþÍ/¶ñyuª%Ôb$ù©Åù×ý‹ª/¨ÓCUÙÞªQ¥/|ªm|Ž-ªj¬Ú^¨ž8WTgU9Ÿl“âÝOÞoNaú©¤B±­W-UöÑ—Š³:Ǻê9æTþL§æqCÍ^ö%[lu÷#5[{Íõ2ƒzcÍxìmg_ý|8ɤùD-võÜèm¡•vý„¼ï=øõ}õÔi9jf2l®É47ó·ïXuåÃàQ¬/åwÙí2îýÌլ߯Iƒ¢Ì3ÉE´°]#[Gõuå?LH榿¾yþ𹻙ݦo‘?q©(35£PBD¹†g¾yó†ˆxÚ&ƺ\"ÊI ݥݱus+3ýü”'{¶<Òµë_a{´Œl;bÅÒèŽZšÑ©¹#~·lÙ©m 3½‚ôñ¿Ä0c¯rͲð¬%º}%æÂí¶¦,"¡µìeóCXÃVÌß0¾w+vfâΨZæÇÙ©4bÒ}îä탎 .ìÝÊL‡÷îmÒë—óú×/ý/gqþƒˆˆMãž]:9ªÆ¯8µéžßB' þƒ+¿Î;Yî¤z¬*KhÔôz øqYwm9б‡¨vý†²ÿÆùL÷Ú5mǦsM†»×O½vÉÙן§VŠ×«JÛ`$¹ñññ\Öí%1¿…ôwÍKº³tsR·>ÑSÜêTÙÞO4÷ÅmCcŽâ-R¿Vm/¨gÅuV%ΊÚ$GpzÖ|«)ƒ¬9‡Ö®çi;NmaªÊ>úRqVçX§¸ï×Ü™NÍãF•Ï8_ªÅÖ\?R³µ×\/c±uÆ71^´-üA^á@'ÕÛ•bÞ3{ìüùÇUö£:»¼ûïbÄ•ø¿:ëU‡:-GýL¦Ñ„¾…V'³ys¼­è Q)¾vÞ3j4•EôæÂQM“ž•Ê׉(ïÕîà`¶†ŽamÇ&Ó×ukV:4åÞ²À7äßxX7hÐ:"²ï»nK@"â뺋ŽÇDŸK}—ÇÕ1vné9eħÖbã5oä™þ»Ìèøë–ÚÜö£†&Ÿ½|t×úŒì|®–a—¶óB'4)ÿäæZæ}Aldжüb*óôVË[¯Üz(tv,#ÐslÑ#rÚXžjg “¶Û¶.Ú´qߦåg2óÅz¦BçÆ-zXTÃýƒN!+ž,[1׿O#°sn=såйã¢äs+«JQ'5½^¾^›USú,ÛµuJl>Ã0Ûãâm"2j<.*µ%xXYíÆƒ‚ÜV‡üöj¥x½ª´¢ÜÛDdÔ¨Ò¿ªÍæèEMn¶pýâçEÂúßÍ nVòžNˈߥ»—õý™ìœ[[ä5âÏÿT_PLq«S§/(>2(î ŠÛ†:ÇÅ[¤~¬Ú^P'Ίë¬JœÝìä­ h¼xí¢çYÅÖ ÝB–Í0.?œãSûèKÅYcâ¾_sg:5U>ã|©[sýHÍÖ^£½¬Ñ˜vÅ£ð4ë ·ÖQý8©˜¡Ó¨5Ó)r×¾é'¶Y9µ ^Øb΄‹,¶úÇ皣NËQ?“Ñ4õk¨ýº–•¿ÌY ÿ§!"†a2ÒÓˆèäñ£ƒ†ÌÉÎ:zè`ï5×§ÌBðYݧ]~]íµÉ}¹ÂÃÃãFN‘ú‹Ù½«‡‡‡gç.=z}øSXüŸo*üXÌ ß^#ÎWjÉ¢¬Ë!ϳ?õÄËûgŽæÓ­K7oßSWï8õÁ’ãöÇì¿ÆÕœ²fœ.dØ=Œ5¥âŒ+Ù¢ÖŽ_ù¶i[Y´0dòÈ~¢ûáÓ‡®¸*ÐkgÄe祓²4ºi|åÛÆ×jàÖʈ:÷èm7eÀŽˆ™?¸ï1ç•»Jé¾lM÷j]éÈSZµGÏ.{Û¶ƒç QYhgð9Rö¤¸×:¶ýˆ(ãö§›EDE97¼zÎéû}»øÃ Úæ ¶ Û—É«5>"Ê«ä—ußÒƒmIDATÜ<¹-öþÓ7R¾£k§ Sýkk—®÷Ÿ“[Ví9™˜–oÙ°õˆQ>ñ2÷åõ Ñ1×î>Εðê4j?fÆÄÆF‚Êo&Ûgj‡-#b£f†¸É&yxxÈ^èÙÚÞéƒ)·ŽDl‹½ÿôu1ñM¬ìÛ÷œ5ÖǪÂEÿwbå¤U§{ÎŒð´'¢ùŇr¿ÙËæëË_ûuíœ+–Ñaò‰eNYq¬D™g½û,í±}·Elô¡‹wÞ™M½­#lVõÅ þ¿¥ìÑ‹.Þ#JÞ•$º÷<<Ž™·\¾ã'"¢Û·…!-fEM ûnahØ•ðàíá·½Öt ¢¼WÇG­5vë?wL+vÖÓ+£§ŒËŒÝ5‡Ë""Jÿ3zRÄAgß1aë§Þ?·4è\ÙU‹2®ù)rè81x„+çÌ®5sF¿Úóër#.›‘dW4äÅâèéU0ÐEÓÔƒ(6éÂ[*IÙcbbˆèÈÿS}X\ðÐ?h­AûAóǺêpŠ“ýýGbn…Áyx,bòš³}Ú4ÆÝF6¥ƒ…ö¦"\ öjë¢Íùð dË®=†ù+dâšt×-k†É&š–ÜøW+¹?£¦˜9ôŸéoÀÎÿóÊ1‰²X¡•|ã);‡_kÓ¦MbÑ‹ñ“D¬kªË ž0¾ÎOˆ u¹š–Dw‰¨Kß.¦šÍuÖ¿hÞ¿™³‹~—ZgŽÞ"ê@D·Vì’ò¢CüuØ,"—zÉ}&Üð|âD;]":ºâ¤†çÊÉýYDäÒ˜}çÆÒÛ…òU_\´ò×fwÔLYRëÜÈö²ïè )KÚZ侌ì]Ñ×F9<ãøS¿V0]`EDyÏóäS,,,ˆH‡SÁ/Y¾‹ÏKÇ p5Ò ¢†ÎMºT™‡Ã§¬¿4 xËÈöBùÄa³C£þ¸‰§cßÐé»6úôì¤_’7›š›Ñ ›XZ² ”¥8Vrù’ázÉ^ í(Z9À7ž²‹çàà•x˜+°ìݤ8'!¥X<ßÕÙA“KDE9DDæ|6™òØoMDÄ7HŠÓd¥ãsu„d£hˆH¿î+öÞo)$KÙS Œ;ùȳæÆlévª|Í{þÉ2j6S~š#°õÔ\;–Lm-´Ì-_îUAeY¼Om1 £JP4ô;irŽí ‹æú¶oX¿®µ©ÞÇŸy~dYàÑëæm”Í׉H`äºbç7/߸s÷Þß·c¢—>öÛŽ­óT¹Û­8VruF¶ÿ¸¬‚X¡•|ë);½:þ@Ë¢?›(ûñ1¾®kMî‡é0‡ˆÍa‹Ã"i±lÖÛb ߸4åeqtµ9,QJ!1Òül±Ô\¨Yš+›–y #~U$fß îÖ­ì4±–N.±yæ†¥ìœ ë/%‘¶¶JAÑvÞ6e㾸a§2 Äz–Ž#g‡öp*÷„œ—'xw¯wrIÜË_¼­ÊÅaó¿ótüΓˆž]^?jÁÁ¥—ß,ïd©t½ bU–™éG#ÔÆ ¾ñ”Ý«³g‘Tvs:ÊÃ#J6ÑÃÃCÏjơݔ7çqþM/}„¹T’'aÌÍ4ˆˆÅÖÒçrÄïŠåsÅyye²on->—ïÒÓ¦ì9<"ªìÀ˜‚Ô³Ddãn®b\Ì›uŸ×¬;1â®o]²lÝœ¹>G×”CÓdîú[Óßý×MYâ¶oѧn¢ÛµoÂ;œr3ƒTHÙĪÜAW*Šbßxʾ~ÃÆ"ÑË “CǬXÛ\—·pÒxË©a£íõØ<3UVÐÅNçö£=9’öºe=Ú)a§6¦²¹=Í4coÝ&z? ûùñrN\OýÍ»ÂIm?p^É1Ò+/rx&c +ׯ©Í¨v¿GýS e´Ø¥õжÖ&6üÊŸ®žq~Ç,OÙô×OÒk9—¹y)‘Ö©]îî>G‹ËH²*+ÅÄ ¾ñ”ÝÞÁ!ãÞÏ\Íúýš4(Ê<“\D Û5²pT\AóCXÃVÌß0¾w+vfâΨZæÇÙ½þá3Ýk×´›Î5î^?õþÙ%gËý¢ªûÜÉÛ/\4Ø»•™ïÝÛ¤;×/çõ®oÀØ5kf§xÕEù¤¹é¯ož?|înf·é[äÏR,ÊLÍ(”Q®„aÄ™oÞ¼!"ž¶‰±.—ˆr’ÂBwiwlÝÜÊL??åÉž-tíú—Í×å-#ÛŽX±4ºc〖¦Dtjîˆß-[vjÛÂÆL¯ ýEü/1 ÇØß«Ü"-Û±ôÈÀÉÚøa âûëHÙ>Ÿüü|¥Ÿ‹‹‘²||÷Ƶ«J?vÿÞ=>‹”àsëÜÅëþƒO?’HÄŸø“šš’øìyç®^Ìøä×OO?ŠÈT ûÚöDôÛoWÒªð˦l6ÛØÄ¤ƒ»»½½½J)»o¯>+@õfí²Ä½²00૆”à«öɱì‰OããO+]ÄÃ"ÄàÛãa›‡ |,ùõ¥Ÿáñx]ºt«Ú0USö§OŸ^¹tѵåwß¹¹ñùå—-]Ü»GWì9€oLì±Ó.#¦ì³æ)ø@AA~ÂÕ«—.]$}ü]ÒjKÙoݼѹK·:õê1 #‘H/‚‘29…bì<€o†®—ˆx|>BPqÌ0>õE†Ï´wï(´²þý·Ë5˜²§¥¥ÙÚÛK$†a”.BÂ0)ƒ=ðÍ0 q8„  )»ŒµuZZZµ¬®â”]*•r8‰XüAÍþþã¶y-K‹Z–å¦K¥Jk ÿŸCèÑÊRvùéòÈ‘#§OŸ^»v-›]îÉ.6§º’d®‚svÙu0 ó÷_ädg5nÞB*)·n C¸Ëþ ‹Ý¿¯w¿¾€o•@qÊ^&UnÛ¶mزeãǯû(k¯.\—òz0 s÷ï?ße¤{tî*8Z†‘2R¤ìß4ùþýø|£‡!ì_…çÊ2©²¾¾þÑ#GÜ;v?aÂÚ5kj"kÿdÊ.–ˆ‹ŠD²×¯“_¾|ñ¼~CÇB‘HúÑ·QEÅ’Â"|ýô[&ß¿¿€o’¿Ø HÙT™ˆ´µµºuëº~}´Ûw- ¨þÁ Æ”^:˜YÔÊÉÍM~™TËÒ’ÍæTt‘{rß2Üeÿ¼s€ (:WJË}ýôݻ̸¸“?üðCß¾}kâKž* Œ!"ûÚDôçÛ.›~ð ‰OŒùÆÉ÷ïÇ/àÛÞã 4UÎÌÌìׯëV­"V,'¢Ïœ²ø[;ûç‰O‹ŠŠAù‹ <1æ[Ö±«Ÿlÿ~ü¾Ý;Ø¿ŠSöÒø·ß~sqq _VCùú'Sv6›““Ãf±>˜nkgÏŠD¢²ñÄ€o ž ,e/}È£W·n^ݺÑG÷¼FZ]_E­8e711IMI155ýxVaAÁ‡5Æc¾±Ãz4€²”]é õÔÔT“LÙ]]¿»t颋K#‡«¤ÆDFºì9€oç0„(>WJ¥ì‰øîÝ¿Ÿ={ÑÁݽʗTfÀK¹tœÍfççç‘}m{"Š?uïÞ}¥KLH¸ŠÝðí¹y=A¨Ð† ë€ÇãuéÚÍÞÞ¾jË—=W]>®¦\Ê®§§ÿâY¢±‰ _ a_Û~ì¸ì€Ï†a‰DRPŸŸ›«§§_AÊ^·~ý{ÿÝÐÙYWO…€|f,åçæÞýë/çF€ÿþÄ=èc¬ä@IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/23_confirm_remove.png0000644000175000017500000003563312032647166026327 0ustar ebourgebourg‰PNG  IHDRGÒÏóysRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 4¨±dB IDATxÚí{XWúÇß™pGAQDâÝlÓ¢Unµ”ÚJ¶õ‡]šVmKQ¶º¶]Jz·PºêJ‹°ôf—u[×vÁJiŠ(h+–¶ÄØÖj•j¸yÁ;È53¿?&„$$!„[ïçÉÃ3sæ\Þ93ÌwÞsΜ€ ‚ £®6]€?Î_Àê@A¬>Ÿo£ÞÉ/=Ž5‚ œÖ=ª7|ÛÇ_bå 2ÔØ` ƒ¨g'N¼~ý:V‚ –¢j©/>3ÅÔœ©¿™ÞXã£ñÖ'Nœh¶'‡ 2pÒ^z–†bPÒÆˆ£¦¹kŠÂ!‚ :C®jŒ¤!£n³ëׯcG‚ £MÕjÎÔ½ýÎkÌöš5kÖ¬Yƒ"7¦¼7ôØ=ªÆHÚ®]»˜ÝW^~k×®]o¿ó ÛØ=6A†™!é7Óû•—ßZ³ffà+/¿e´ƒ­<•·~©¥µµ2K&˜i…V†+3¥bAy*¯4Ìü “P†Äá!‚X–ªýçÀñ#?߀¥‹\þ|p…MÀ ¿ÿ>8ñÛÏÐ÷˜X&«Ô¨¿Úc(‰0S*¨.u™, ¯ú°yi(i‚ 3¤‰’G~¾ýŸæ|©Í(ÙÂy‹®5¶šoiÝÇçóSË{ø|>ŸÏçñRPùdûÖóÔÇ{+f˜PWy|>ŸÇí©S‡¤–×íñx<#ù ¦ýj‚Xœª1’öñ«K?~u©z×tjÎÔ¹y:ªwÝ<ÍíT«Û#.Z^ “~µ¹:‡Ñ òÜ­™R©T*•ÉÄ÷€@,ËZi¼­²î|µ0ìm¿P*•Êd 5ân]ƒ¼õbH•Éd~9(lƒä±a= 2lô»_íÀ/ :!÷/`Š\rà;¦ù‘aá¼E%¾ó›ùxÿí¬­9yrß#üíµ²Àâ¬R>Ÿ¿RÕ¼h„¼$þ> fo.È”kù+¶ž"IŠZà ÌÊóoߨÁûÃl°_ AKTµ¥‹\Žü|{Ý–#ê]#ÖÛQ3nÖÙB]ýˆ¥RÑOt¾€Q"Sjû¹Þ婼R¼†ÂKCICd˜é£òÏ÷/]䢖4ÓG‹Ôœ©+9ð!®ÿí‚0a^©žAï¸Ü¬€­¹æ6øâ„'Cö«!bqªÆ›Î†‰’ÖQëÓQëóíÇ5ðíÇ5Ì 4CØâ,XÏ î`º»Tc=øü$Èb\1&ŠéaÞ‹—W'ñù<^)óÖóRÀÛah<6¬A†Áÿ^‘«ŽZ¸q« To¨8å÷÷¥b2A¯fпÞ]u˜)ùÔŽž4ŽÙ‹Å÷ôDîéد† È(Q5(9ð€ZÉRŸ;h Î}8åñèöÒú+i4]‘‘\1é‡6†DïðwÞ{,òe ©¿¢¢ûŒ~h#¤É:q¨À„Ý™±lB5‹612‚ #Î̘Å8j}¸t•±öG7ÖÕ¯FVåÄgHû9)¿¦-ó\hºbGxxxøŽ KµAFØW{ô¡Ó‡>šB3ë7¬zôØÌ€ B6•”l2êØ-ê+ó¨gü6&¼!oƒ(§ Ë*6òCôy`š‘醼¤øl¹\QÀÆkŒ cÁW{`¸Ž·woßÌú­÷ž~~Öþ(Fí¥YE¿šg¬(š¢LŽÍñ.ÇKÓ=jÈÛ¾£BÛsjÈÛÐ}hC^5|GMëuªzɼb‡*\u4|ÇÏÔÏL“)IJR¢¢ÐcCPÕ ÓUöÀ:?;ŸZ;ŸÚKwNõþ1’†j£ÞK³ Siº!?)YB’:BeiF²„$cD=ýjŒ÷VÕÝ÷FJRÔÚCÓñ9U݇ªrDQ"õ®IæμbGxЄě A4’Ñ"Œ\1sˆp~Y6¸­—ˆµÀô«1#!û÷ªEJR¢$½CLó´K!)*01ÅàÍÈÅMÜ)d÷Ä”îÍ®"ÉÀ„ÜB6]±#*E¢nÌd$P³³¿Rd(s>HË ‚höU9”úš^Um¸QÔ\ª>uþbýUŠÒÓfâ2Þi×gnð ¼lÖå±Y~#d¿Æ4ƤkIMW0ê"Šõà‡FS……pNÑ|ÏÅ9 ¨ÀÄÝ=êÂߘ]˜\hªi$s/È*IJ”„ŠN+Ù‚÷‚X–ªïÿñbýU#nߺs⧪?UMõrzøn¼x–Ì@¾WÓôlÔ÷ŒS•ÀìRúŒÌ‡Æü¤øìä$޶¯¦ëù‘$PþO¨WÈ€Ù$·²;s‚`Çføœ*’”¤DJúwF‚ª6(ÛÃl,ä.î}ô„ü(³!Zµ¯ziÃA°c3ÓÉÙñmý ¨ÀÄ^R×=J㜢BLn†oÌÏ•h7·êÍœ±G¸³DØóQ$9‰³;3Öï?d cA]ÍQßýÎÛÛ'»ø99Œ«úãÄ ùQŸ³“Ëc?ùÎÛÛÑQ³ Få<²qw" “»¿W#ˆÐ ɪì½ÒÞ‘uéý¦›$%eRæhCÞ†ðøÃØ= ÓHæºVJ¦(+ê{‚Ï)ñ6DÐWQ8~S púÂÞ‡føÀ¹L}0 ‡jÏA­Ü) ;ÜïeµûÄÀºÛå©ü¤}ꢳ¹PôØ,CØØÂÌtETJN|‡éÍâ¯J ,Ì®’¤DJÔ7žª1 ©y(&&¦°°»5Ջèu #Eqw‹ñÉòîâ e®g†’„èЂ i¦Ë­*G•Í’újƒÈÿòëêu[Žôwmg§q3ügøûúÌ`~S=|¦zøÀO‡«¶mù`Û–¾Éû^;‘jP©4s%µRcAÑá¢<•·˜r™¢Ç²¤Y×÷jý¶MÅiѤ$%|C^Mla&ã*é™› ö½¨è´CC5|,vlJbÏQ*:ýn¢‘ÌuLÈeTV'[Spµé lß•©/>Ó;Ò_ÌÿŸÇ5×Î6q!›Ï¾æííåì4Ží=:[Uï˜>Ó¼ÀsšëŸ}ÅÅùi9w÷Aá’¾©òT^iX_Ί­'AØí?õ ì^A´{R•çGQ³_ìY¾M8{󿀭5Ú¾ZÝÑŠš}î›néêœWj£»]žÊ+õ{±zûöSÚ6X(â­27z(¿Ž—Æ|¾†“šñAãææ6„¾#i¿ºôãW—ªwM¤åN³ÞpFÒ.yP¸„;‹+?-7-¿¼õbH•Éd~9=KÕtÊÄ‚îD¥_m®ÎÙS§áùÉd 5b&ÊS×C–L*•¦BQžnµ5'…a£¥ËÄLdY°¾esòŠ U*•ʲ¶vÛ`Eàúj‚ ?ÃÚ¯và—C. ³Ó¸3Õç˜m_­ÔÔΙ>/ÍÂ,ÆÕñö €Ý@•&Ü÷;E­¬ðVy_[O‘$E­ ð†òÒIÎÞü¢°§%³' YV*ÿþv `eXß ºSB*ǃ¹/d W¨]Cáróù§4bZfω b~s ÙH¦’0b †Æ@ž¯=»8t©ç4WÃß«2¬¬ ³÷Hu¿ŽDd¨Ú1f ¨¹Äl©±dF÷÷j‚X,4·ˆ¢æÒ‘"Õ´@š- ‹CUÞÞ‘"éÒåü1à± Ä2+k‚£ªfzÛ##iÞÞª…õŽü⳯<ܽIŸH|/ž…cF¿ZQQÖ‚ £ÄW[ºœ¤Hêáî —¯Ö©Öj„<_{˜£K—óñÊV-..ë AóX½zµ©Ço #Wjm3$~cfÀˆ3ïÕF|Ø$~“€ è« š°€ºuq c/{SSÝpLrþZS‹ãxeÀ÷`×Åeœº 1r½±>ÝK³(ôFÄÂI{éYrŒœjKóÆ 7.)Z›¯Â•?XÇöÝ8[©À;`HÁy ~Æ„ªÕ*N¨ÿn¿¢½µgmŽŠPÕ†ÉcÃz@dذõgøÁÖ¯o6’·oßq°qmfýã”ó€ š¯áÕBpHAPÕ†„g_|èÍg ìYã{$ hÒÑ×Tr/ͽîãÚÏ)¥rÁLBV£ûðŠiG~~ì\B#ó×õÅ pÈÂäŒP‹\W“X&듽{ „@Ï¢u{D+RËõÌ…¦±jDy*O¼gñ°êÚX_eAU³hšNë½ÉSÜ#¢–6…\;ð¯ËªGÏrŸiÜq~3}ú~~Á±» c{iž!!< ËŸøh} AÐ'w¦ìÈÒŽoäо›­Èc#IIrgwf,[«Î+2"’%ÝïÑiÅ›BˆžÕ¥Ó!%E ¹™‚ò¤øl9pwg ÙÌjÈOŠÏ©")*:ýÐF>HGfMj­Eþ  µ¢^ÝÑŠí§4OW©PÒ>VffÂúžõÓÃô,°®/‡òT~Ò>/3Y(lˆ•3jG‹Ð4þV†§—Gxä’¦+×g-UÀâýGÏ4EÒÄAˆ ‡èËû³×Ĉ׭È?I«¥(MŒxÝŠìƒûó×쬢iš>ÎltíÞî•¶éàfñºâu+^^³³’’î[ûúq²ø_k³˜øÃÌ€çŒIK‹&«râ3¤Úï!›JJü~^ú×ÏAÁ??,hš³bATç¾›¾NK4ܼ¦Ï6¨ÙºiÝAöýžéO|²Mí™~ò&Œœ¯6ß«ñ7æ&œå¤ì-ÞØ{2OŽ?€\#€¢¢Ó7òÀ@NE§gÆz‚Ô@.WÔxÒe…àÏásüäçkÂêyIü}šû†2UVÔì͹ãeÍÞüUwëcÝÑ"ðKíqàÊÅÔ-‚婪æI8K˜gda[½9è,r‹ ¨jÃ…‘ï£|Püæ«÷îsïâ»›._wïrþZO/wo;ù½ÂØ#^ÕH¨n¾ë¿½*]¤|×nóôòZõÁ;Oz@Ã嚪ã) @QQWÜéã§¾_>[à±:dtÓN"‚Wn*åé‡-§Ónàë«yƦ$ŽÏNNâìõ(zC^R|vIIB?Gü¤$%J$ rE=€ _¤ë¬nâÂè¦de0BÝQnÏzµµ5'OîÓ]´¯¶æd@˜©}nzsðŽËÍJåñø$¹²/³UmÐ0o"Œ·^Ýj{“{oèœ+—®M˜0á3¦z͘égkk;ô&÷è¢ÞC Û—úsSÄŠIª8ZñûÙR¨[1wÃÛ ¥>”}ñ£ÄHOK¸‚ôØ‚›™®ˆHÎNËå‚(Ó7––-nb®HŸ\ØÌ¼8\ äÑé9Eï¸T?Qj¹€Ñ¿¹ÂÌÜ莡b™Llpè ‚X+£­_mËkÛlnEÆÎ9ô_…‹‹K}]ƒßo/‹Ðo‚^ù |‘+c¶g/):õ»æq¶‡Ÿ*¤:÷õŠžð?®\šn<–ª Ô—– ÷¼WüæÔ=y#Ò—¦É`­¯F!w'råòîÆÆz…ü9žý͇-XÆ%IIn~c÷;DÅŽðððð#]Wzu-G´§À{ñòêR]§]&ÌS–§jö«UŸ¯€º="u Þô¤ET5‹!ýÍ òZ`DìéwH’,þï^ÓŸÿÈö€,ÆQˆ³¶®H-LJ"båpµé lß•&uÜY†‡ˆv~Æjñ{[v´– ‰Û7[y&È“íáääÔgZ œÝxˆÆåÝuoý¹y4;Ò4ûÕ‘3îºÅÅÅYœýV5»1~j† êVbôøj¬ßà%Ó~û±ÁÆ–uëFËCkf8;;˜"iˆUxl‚ ¦0zFö7ž¿s.$éê{ca$ÛÓkŠ‹‹‹5¿qÇî ¶^ûqÈaD –¡Ÿ† £NÕhšjºtËsV‹¯ßüsX,^Ý÷Ò¬WÒÐËDTµ‘$5±˜"”ý®Ç¯{/ª…0ðïÕFÖr\8A¬Ž´—ž%ªæ1ëÊåSOo@ICmÐ,ǡ è«Ô3Ëáiu`¿‚ £JÕÞKÿÔx„瓟ÂÚG/ AÄ Tí½ôOãÖÄô…mtc½ýj‚X/ƒÿ½Ú';¾Š[ãá1™ùÀºukÕÕáqkbúôçÑá±a= bݾ#f+V¬€ØØØØØX‰äæo~~>0qÑ ö«õ®¬±J_áLå‘èIÈ×D¢'ÏT^0®nH5«+Ôíñ4¶»7û¢<•§3—jÊ;ÏÔ,ú“9‚^‚ £ÝWc˜7;xûßû;;†·oÀIÕÊöµ5§ÈSp´..λëIéA˜) êöˆV¤úâtyÃö«!2z|µ™AÓÌK¨^c£¼4oåÊ•'kj™ma˜@ÛñJ-×ôŸêöˆx</õ]'Môy­FÈ\?µOÈãñùüî\´2)×ãçiꉆ ¾ÇƬ¾!¯ÆúDdÄTíLå…™AÓ6¿”Äìn~)Ióg,¥ßÜêóuPw¾z®_˜Æ¶#2ë!K&•JeY°¾GVòÖ‹!U&“ÉÄ÷hJOi˜L–»Úò’ø|žRsã¼™ƒâ¢å2éW›«sÔ­’Ý™øåt+VyjŽ_L*•Êz<<=ÑÞ p}5º!/)"¹bÒŠ‹§Š¤(ÕÂÙꄉ‰çrrª(*0qwf¬§4#"YB’$H’#@³!/)>»Š$€¢¢ß9xï±È— !&ýÐÆ(¼'Är|µû°üÙWcÚ SKó|½ÁÛ7àdM.³m:yEEÀ4]öθ¼Gç¤ÚN2È0ýjæù@e…@QÑ¡|=Gò6¤HÈè´ââ´hR’²!¯ç}‹$%Ée¡Å¹ U•#ŠHƒ”݉\g§å7t»S}Æ‘fÄg˹ i \(LÎjf~RŠs¸ ÏÞ+%ˆ‡Ò£)JKüâ³åÝþeIɦ‹Y«APÕÊúÚÙ:¾šæÏxZ¿¹ûöícÚ5·µtI£«­„Ü\YX©naÝùj}úÖ‡¾b#ã€=¶A̦ÊËU‚Ǧ(ùárµbQTtúF>xrü™íÌXOOŽ?ÈõÝ9Ã*€?‡Ïñ€s ÍÌE±žLB(,3ÔêH’’ä$•@DȦ’”7N†j d–Ï©õµ³2à ÓñÏŒ ›÷âå³·ÂòÅÞ:Û g•òx|’¤¨•YÆ×”ˆeÊãå¼°? /‰¿VfIzò1è®™ éÍ}¯V¯kÈõžƒû®GJR¢$@’ýÊœ B6îN<Ÿ]U•#ŠÊ‰N+Þ‚b† £EÕfMË‚Sðw“d¬—¬ÅåÊâôl«ÄJ&Ö•/þ]X&Ý$½óÑÌDgÛ”hˆ~/ÍX9ÈHÑÞÙUy¼tIäÃîã›n¶õß}¼cPpXåñÒ%ÑM3Ú6;Ð/ê‰W÷¾÷WôÕÆÔ ëÀÚ.™²Uq¡áâÕ›-m4Nã\<¦LñgO4÷èªúíô}ÜÅuŸ`ÏRvÞz½šµ¶ó§ãÿQ»lÌ ÝU]]ÓtýöŽ.’e;Ám7Ðljįà‡æÃÑ©nã””©)7—J‚ÌǪš5ªÊš5ÑÕz¥âdSD÷®‡›‹V64^ýéÄÙêÁŸíjF†w.U+ý=ºÀƒ¦)éoŠÛíwÀÉÇÈí¡TÒ,Ö =Ü7·A”´3gÎG,žµpÆ$öx»Î¶¶ªê TsÎDa6Èîù¨nUû¦ä<~¯:Nï&á >ÖPÕ¬Jûòß?˵åÊm7û.ÑFØw±Ü“Á:ù(AЄSè¢ Š¦»ºÞªo¸Ö2ž3{.Ûñ—Ÿ¤7•ôxÿ ‰7ë꯵°\fpgºv4ý~¶áv;5ÎuÒÜY{}³´èÍER EÝåwÚ»X¶ön“=§Oµ!ŽÿPajAνéÔ¯¿]k·çºÐhº³ìØ/4Í^°0ÈÅheï¢YtGÝÕÎ|/eGÛÅk­lw§ù ‚Þtºž˜õÞ9îx—¯Fh>£¾-ý!ó…´­à°{ô†¨R¨jcÛWÓÚogÛzí–SçÅqSìÈ `ëäÌrž¤s“IŽ )g=³*é‘Î,šRæçýŸìr; ãÝÝ–Þ5ÝÏsM)?ñ{È} ÖÏ÷dO°ë¸ÓrZ®ø×7§¦ÎŸ}Nzü¯¯ÄÎsdU}ô7Þý³&Ûv¶.ýi÷Õ÷m~äYw;p?sÿ»3{|¸§ãÿQØðûS÷Üu?×½éÇ’ç ¯½óÆŸ‚Èê‚ÿÝ}Wô,·Ö«W>ý¬\>ž“²!z†«MÍ™š¿Y3sŸŽ°ýò£´wnÉÇ=ÆÝ¨™:ï¹86ÛÕ®½¥åĉ³®ž¿0à·+R^3­  ôž»ƒC—ÛÃQû¹Î7ë¥kw]¾wþÄc?Éw¥>:žEÌÚŸGRg+õ½À×ןýï=‡%'¯Q œ%|à`/ïÎæJšFU1_!¯W>IDATó…IÛ ˜ž·s8$A` $új=°½Ç±½çœ8rUñ{µK‹_uÑA@Àb±*++ýýýmmmÛÚÚ‚ƒƒu^£á¸Rׯ°ØM²€ºŸ¿ßSm×]|­Í¿ž¨õñåœÿýÄâ¸DN4MÕ6ܘ8Õ5$dÖl—µï¶ëÎdFtè”ËMu7”\çå1K‘åß¾x£Þq’—I)Ûþ¸Ø ŽnØŽ$Ðê«ë:öóâVŠd©Mò [âï ¤X¤Ó”)yîÞV»IŽíJ›n€xé…W~i öuÖzÒ—[çÕêEq¬ã:+;[NÈ=¦O]²dáì©¿>ó¿'“ šÜ\­ÿÜ3d¿¹ÜYã=ço+¸}ëö8¯ãY„²³yW=åæ©9-×WtÓ=³ÝO4M ™ú«ôt°·=4_j°urÅ~}5­gTä}w'm+`”LSÏ’¶DÞw·æu!@_mŒûjz.¿I¸::v(•>>> …ÂÃÃÍfŸPúm“ÛD‡v2ÈPÑï7wØ4½,ÆÏ±³íJò¶c¬ÀYöÕAá8l¾šJÕZÚ:ŒDë}” ˆA|.¡ªY} $L¦¨ÆÚZ¿ys[k/^ý^ÑüËuÙ—o´ŽStÚ4SÜî8ÚtVòÃgz{±½¼¼)ºëp˜`Mè¸S Àîb×k‡š|PÕ¬¾’ βe'óþöÓ[ˆ/VܾEØ’·m:½Ü®Íõpwã´9Îwq]!òæÝM’,À†óÕ•5ÁµëdaSgÌ$[ïEKVוýOö[E¹Nr_z÷ôŸ¬li«˜ O:e<åàæËµ'àüo-Zƒçõ M÷í`ðF õ]nc¹¾=ºsc9¸6×(¦Ñz²*ÿ2ØtggWÀœ­m„‰f¶-— ž»£»œ“ßÌ[2Îþ•ÿ󀆟u˜Äf9´)ÚÍ…l³±ion»ÞE¶¶Ú;Úx«”¯Æ40?ñ›ZÒ4G‹0¼p0:H` $ªšæîoçoÒ4íœÿ }º®Ci7~ú¿qxã 3œ|“÷تÇÏÖ_51É8Gûïî¿ÿAáÍÕ¼‘]ÔÏ÷š=¤››újÖv€[áK¬ÝdO¯Éžz¯#é>ÕË}ªžCþsfkîÎÔØuâ,àôrö X`8!ƒfr°q[0ßM½ë0uÆ‚©o-½¹nSØnSØ:ÎÕ¿‚ ž;é4þœ~ “¸ÜIøo2¢¾ÚÅkÍ”Éó@^¾vôÍ-RTTd¶¨jVøâÿ®‚XmÊÈ…¿Éó¸NèÛW¾q³¹®²<òAa[§îw´qqqæÙ€+ÑX©ªa bq4ßisr°  ¶äÛü:Ó’„?ÛÞÑu§×lׯ_G_ }5A¦¥µÝm‚sÌ#«LŒßÞÙÕÒÚ®6Ð5PÕPÕA«7š’\ïœì¨j£– —¦¯Åz@dt?èPÕÆûß]uíj±#‚X;4¥€úºÚ><2|H¬JAdÔ€ª† ‚ ª!‚ ª‚ ‚ ª!‚ ª‚ 2–À‘ý‚ ˆe±íã/QÕAQ‚Ùk¢¥½ô,¶@"‚ £ôÕF-ɾ<ÈoOkß&‚™¥màsµ!‚ ª!¦ÂÌ€Ì_ʬ ¥Gd$I²X,’$QÕ±L°1•ÖÖÖööö®®.Š¢°6A_ n_mpinn¶··‚ llðÎAU ±fUkmm[[[[[[¬aAPÕ Rµ 9\½á•¿Ë %ioo·±±Q*•¸l)‚ ¨jˆ4‡[|ðÀžoö(=Ӄ⌠]¼Ø°)•JŠ¢hšFUCU ± I{÷½ôâŠu½´?*_ßùúÚÆµ«{܈dž bÉàȱè¥iJš“ƒ“f„ý¥û±–AUC¬†c²cêí¨{¢¾Î-,Ù[:iâ$&¤ézV‚ Ö ¶@Ž9îåÝ{§í#`{>¹òwyЮŽÇ† ‚ª†X•¿Ë£"_½4‡ûâ›/¨‡p<9XK‚X/Ø9…ùÀ„É®á«Âd§eê£i/¿3tCEhº!oCxxøŽ E‰ ÂíT±#|ho'K+bìéÙZfè ©Ø¾!¯aø FUÓ<óÒÓêí éA%{Ko^¹1„åI÷æT‘$))“bÝ Uƒ[]­šq:tÅŽ¨¨”s‰«B4æƒ%ˆU‰çR¢¢vTÐLÂŒ²Ðƒç&pAž–ß0\‚-c¦ƒ ¢î‰bú؆òߣ!?÷\BZÂáäìÂÜüUüX6AÐtEFDr!Ĥ§Cr2¤ÚȇÆü¤øœ*’¢¢ÓmÔü·¡é†ü¤øl97qw¦MÐ;"r9»3cÙ;ÂS$$PÑi%›BTÿWLæ‡6òAªÞÑžš™nÈKŠÏ®"I` ÕŒ¬{$¬ÕÍnÈOŠ?¼l÷N![uiðòû>_D¾,!Uo«ÑiÅ›Bz*91ñ\NNE&îÎŒõ”fD$KH’Irô2¾ïë¢'%E ¹™‚ò¤øl9¨ŒdrÓ9YÝiÈKJƒ”Læ~h0\Ÿ:ó»)ò“RºÏ‹)ÔH>†.zˆÑÒ5/AïêT*ƒǵkUo*õéP\#ÿ2ý´ÇÄ‹b$aŸ7 MWd$R1é;…ì^Õ˜™¦ˆHNÎ=´1„Ù´ <9þr¹¢€mòãB¼õCôÕ1Ô’Æ8jÙþ¢X¾`@~¸¼Qã.$%Ée¡%%›BBšŸ-ç&¤%p¡09C˧#¶`—$«õŠsÜeF$ò6¤HÈè´ââ´hR’²!¯ÁôWÑŒøl9ĤI}ñó~¨jcšÊßå%{K™ßPKã¨%®âë>šToyùÌ㦬ü9|Ž?œSè´Zx –RTa™ê°LàÉd^~XNQÑ¡|~h4EÉ—÷«¹ƒ$%ÉI¦¶Œ µž`âK÷fW‘ªæ\&OާnTm³E±žªðÂ2SÚÇL9SUOŽ?³멲RQoødÕQ4-ï³> ©s^&æ£sÑûL¥7c?€VÝ›’Jq(*ã¥çJ ÄÓ.б„Æo’nË£Cùþwø¡Ñ¥ÎSåØ&¤Äzöë‰qÝ\PÕÆ.As¸ŠFÅ‹o¾Àü C3C–£–SU•#ŠŠŒŒåT©͆4&%*EB’Ì?!è—ù?lPœS?Jê:¢Ü;¡A(dãîÄ@Š"«rDÝ]ýkîFkU ¹¢¤e…Ü„´„@Š*ÌÍo„z…<†yÐ0#r¢“cgj'ËœHa™TÃò”Ò?k\ô>Kï¡× ö#•A-€=Cz5µÎרÿNwžÒŒäBà&¦¨Þ±_ b_íJõèGOŸ(¸h{Ôr‹5Ûô³å‡Ëc{½Àyq¸@É ¶‰1®^v¶¢¾û‡îTÅñâp4.\Ž—ÉæláÎ!Ó5R˜œªÑaÓÃm-A„„Æ€D")Ë€Bî²ÝüXNLvrááò|ÿ˜ÐMLNZ¶¸‰¹"E|rá ]C=gjš{©ÿdµN$&t“FÍ©O¤ëbà¢÷yŽz#ô:ÁA­ºþÛ3¤WS÷‚üßár¼4BÏ~_¢¢"ó_hðᎠ9Ò½Ùþ"õؽڇ$¹ù[á˸PX¶Wáßý†¯NU&ínÄ_&`óè8§hTuó‚6¦GS”æ3·Ï„#b-?4$ “ŠC’U99’ne4Õ èyBÁ9EcŸjÚ÷™O¨s²ê²%IL¯š1\ŠI›n­öEï#•ÞL ¶IZFHLµºÖæÙÓ¯‹bZBÝÓáøƒÎ0fÍjd®2øs˜[zSI‰)}Õ½‰3T5d8`zÔtžõú“ØÂiÑTUŽ(22RÿðhF( A³ÙŠI%I‰ŠJ‘PÑḭ@à¯J䂟¿å¨RØqômÞŸÿÑ©4”ªw&Fõ×$_Gç±-<ž–yǶðÞ>j²yý5 APÕÄâUMIéýÀÊ7þÊ¥¨}ϧ•u);•T‡âóµÏÓÛ?|t EJÕ;#‡úkRïŸ@m^wÝeròþ† ¨jbŪÖ5õ±—ŸŸC’û?Ù[ÛÑ¥Øûú?¦o‰GÑJª£Kñßu‹–Ü{w¨ íX·¨t(ö<#X´äÞ»ÕáC¬j4@’û7?ýßó*hJCÕŽ½ÓmÌ;? ª!¨j26T­‹ÖûcM~ägƒ¨Óï½¾íÝ×wNßñ—`Uüòwÿ´óÔìgÓÿ_ýíÝ;»èŽÎòí«vœ†G¶””•+>ò·…Ê>òï¯I½4<²%})ïÏïþØ]]tg}á¿k_.$H/û6}Yø×çþ[gbžxK ¨j2:}µN%ÕEy>øÄÃ$)—ÎxkcˆÊ'ëúáh!ÌðäùøÀ¹ Š.%ÓH’âÄ/ÝÞ y $­ä½ða—”lþÇJUˆ’êèRüPrŠ¢º‹GuòGQTeI™B£¡}5U AÆ¢ªu*©Î…‹#( €Vê6ý}ýFÔ‹Å$ òšZ%ÕE-zö_™AQdÕûÏD-yïGåЫM­TRî¿úTU”ü̾:UH§²ö¼ºm¦)ÆHT5d°À‘ýb¡t)iã‡h(ºKIw4íåTåƒbÉ €‚. aÊŸÒ¾ýÓ‰÷—¼s€,o ‘¼`<3LÒ„¦ºKI+ öòl»ýÂ'é»f‚ˆ’î/¯ €JºKIwPä;¹Û~AUCQ¬j”ñC4MÑ ò{º Ï‹g‘ÕßìÝ÷söÒI5'ñï˾}©$pš‡’º`43LÒV5Šî±Š¿ö£ çŸÞyü”JJI¨,ü±â¯sàH)IÎX|×$Šîì6CzȲG¨jb¡()Úø!𦑡(ZÙíëLz(ëŲmŸÄ¯þ(*ú¥ýŸ<ü·ïH(˜õçM±“h¸`43LÒV5šÒ´jŠð7Îÿù UˆÊÂ7ÃP‘ï¼ùÛ KQOê‹Ï˜‘*í¥gQÕÄZU 䩯JŸ”tOä9Ï•þë9µÂ¥Ž¦|èT 䩯B´¬Zð×Õc§¦…(iÈà‚ª† Š‘æ¾'c#ô†üeñ ä?À$ë2t¨_"ª‚Œ _탽æK™é$™˜Äyè™!¨j2†}5à ?{~HóÄ$‚ª† ˆ1·ÆÏ—3Ô¾ zZª‚ ƒ­j–÷ݱ?…FPÕ1¢oö[šI؉ ª!2z8ômV‚ª† HÿxaÝ£h‚˜ÎnŒ ‚ ª!‚ ª‚ ‚ ª!‚ ª‚ ‚ª† ‚ ÖŽìGA,Žëׯ›·v(ª‚ bY¼°îщ'š±p(®Š ‚X¨¯f^BìWCAF¨j‚ ª‚ ‚Xدf­Ð”+A}5A}5Äb¨¯«ÅJ@AU üeýsX ‚ ¨j£÷³þi±¶‰·~È|2©ù•ÉĉÕ»Ì4¦¬Ì\ÏJè\Z´LV/mdÃ¥°[FŸE‘pZ_"nœhÐjNÏÆiž~d%$ÚfÈ[ì¶Iká4HD‡“d1Ívc; ÛGŠÒÖ†€YÇŒ‘d ©!ÃËÈTç2°p™ëtw¦êþ¨b±H‹?Dɲüý@ÈÅ·Þ÷­W4ßç}ê%IÐ<†ˆîß¿€Æuvv²hb@ ˆ!1 †¨CB&`±X,Œ Èÿ´Z­ò‘òÂ…èTå£B&`-R=«tzÃ%5z¸¯TGã`š8"y–G–w*rWÂeõ¢S6O\y–{8¨:ã6^•Çš=!º’`9 ±‰)cAÈ\ åˆeíþÄì# ¯«®ï,ù`1ÌÀl*5‹' @kyžïïïçY6¾Î)Žî¤×rÄ÷÷÷ó|yaû I9ÏÊaGUµ*%UïÔº‰ XŠ·B¦¢õ‡ªï•È·`”)› Ñ)‹Åb ÜâoÕºy¡Ñ´xºôh S} rýxÀ!ˆzÎ"ŠE– ÅÙ”»Ú`Ù§³W±jiè®Dã%5¬‡=qé*Xv#ì´2‚<ÁËU§@‚Ãã·`”òËÓ6gxƒe[kZ(D§ÇCòélÜ#‡×p˜5y/Ãô‚«?Ê­¥wF: ÑHŒxƒë]Q–š¹ìÚoÄ=¶8õ»"—:õú.©±ñXld~Eº·" ±Èò ¦Ñ.âÖcÄ“]~T‰ ºã,Ë÷»./ŒêŠ‘ ËÆÃaâyé\AÈü—fšÖ1ŒZ‰—#d6Oœb뙓‰TêdzŽ|‚ˆºÌ§ ,»ºÂÉIÃisWe‚A縔J&“~;ODaguª¿Ù’ª*¦aÓ ýX¨^ÔmZNTxl6«Õj³yâ,«l®•úö¢¸‰a#ì o°¬aâ…º‹i)ìÒ­—ÜYŽÄµ7ì䷈Ƞ?VžäH$üvžgÙ¸{Z”%öª¼i"âù~W$‘,JÕÞU ðHÄ$çíI= !™@ùýiîW̯ –”ß"¾‡a|*ÞýÁ²qw“k ŠÛ{õK|†˜Y™—£9 ·¾—S£éRýW8<Ãà¨z¬•“ºÌ§ ¡ ¢‘Ákë\Øi —qªfïk•Üш6HÚlIÄó†‰ËÎü¸;W1—Ç=ÖxibçyûüŒIš×‡Ýey –%»ÔaÓ̼=掳rõÒþSSaD¦¥0+ÚPh¡~€‡0Á­«fŠËzéAjv@íÑ™i#‚<}úÒ§H5X’at£ž 9ëÀóöù•…ê}¼ÝŸHDä´7*ö»"r‡«›n–vӌα f>Ž(†ˆîß¿/ÿ;`±Èk÷fßi ˆÎÎΚû!ø~—§ö.àW™‡¨K+ 1 †Ä€CTÖõ70(PalllwwW+† a¤@¶´´T}Pý;·*ƒ÷Æ;ïáp¼öÒóªÇ;´=öͽŒ?Àƒµ»»ÛÑÑ¡úöT@MwC@+C@ûbAÈ,–@F(?ÈÂêgÚgô¥Ëþit.m—P JûLEåhׯ]sÚg4ŠuV6WÿÑZ×Ò–aic ÑÚSsWfæ÷r{)|ýtsÉië–~|ãæö˜ôïôj”È¡<Á9I YÎ,ͯΥëÅ©uÔ¨y{É9I‹R¥*}ÔztŸ˜½Y3žÄpˆòÒclÜ=½\(Ï=ˆ) k‘˜«Z,L& ŸŠ„BtÊb±X¦¢¡xn!:e±Z­K #¥³ê¤7¶oÞè[àú.FKm‡£ïÆM)_^%‡C¹<\ì[ôšå‰v±üÔ:jÕüÙC5§lÕG•éòTA1MR–ô–Jn/9Š#iŸÑ—Þ^rF£ïÃFꬬ¡²d/ í1Ĉßog7ÂãANy”afS©d2™ˆ¸úy>æÊËÆÝëƒâñ°sØOžËÊ…üR ÂÇC9ƒËï2PÌ]^­–täbß™ÌCŽèªbÆ*NõéURž°-ŸÎ+O­£FÍfïõžpùü\–Ðz´Btruˆã8Žã²>òJóxÚ7I âÁ¬¥}g︲Ê#DÑI/ù²ÙlÖûíúuÒö’Wªa‘&KC©ä1 ýy2ÍD\ýlÜ£ÜQÒ¥ï-?Àóöù“xœçíó £]b™\þ‘ dÖcDÔ«7é{‰h+¿C¦ÙT*•šÕ¼]²½Þœsš‰ÈìœÛ +æh³4Õ§Wi¨½3a­š»Ç"Yyê¡‚ö£å©ŽR–¤ûÔ™M1¾9Þs²"Ò© †ÄsÕo˨ֹ}óõ¯¤jUЖ‚¨kÔãêçcîéåÒAñ&…Íæ‰³M¿­ƒeãñÄ\þ^£I—4Ýu¹ÊnJˆS}S!DiÛ£æÎGš»Ç"Ù¬ëÎYõ@AûQUŸÝùX>w‘&mm°ÎÏî|üñOŸ/w:Šç;´OÏ©dÝèÂ|~ØòG Ô;H$…e(G†‰ˆ3?îŽ5ÑÖ1½øœ}¾‰}šÛKá(ûé5ÓµRÂo.ýÀ|BšêgRÞ0㊥Ë"ÇäjÚk6—­ç½DDfo6ëm$¡^sY Ÿu׈@´%"Ú¼»Mféáã='Kgz³Yïö’ó¬/õšËªKµÎã=' ܰ€ÏCà Ì\ž0är9éÀ½|Žˆzõ]͵Ä0:óiËÆ#ÅœFý=•éÈžE®ÜbßÅȇò²ÿT/õUç ÌιÍIÅÂɨ£Ù»5j.%'¥[õݼ»Mâ»6i€/ž•7,ܼQ³î}ïãP­³tWà@óÒô¯s,Ìç‡ÝÅb~$‡· b7âîaºüN#õè—üy‹'ì´†‰çíuÏZ oÎù¼ÕñÁ_yVgÙ±ˆZZ¡{,²è3™LDÄóOÎ]Ï6ó¿ºæ´Ï8ye‰ˆçŸ[¬¬RõQ³7K>£ÑH'ç®/:ή ;iZêÞs‹Ù±Šž[”Þ"jö^¿ë4š¦Yžn±ÎþGÕ:©{,2ä3š¦åŽ!'íÁÑýû÷å߸q£ú ÂÞï¼×¶ïÜÚ^rž½qFûó!¶—œ^òa›!@9ïÅ·|s//--U„Àg]×y»DÚg4ÏÞ8ãCЄÇËì‹“û•Ýe G ±»»«ñ}£€BÅk/=ßÑÑѶ-ðˆÄDôÀ÷u€Cˆ!1 †€#æ±GçR;::ð÷hä!1­{‚ »ãÒwQöO\^pè FB(D§‡Ý1ñ'ÉdreÅCþ`FUï!°X,–ÀaëÀ£CpWB,;2?3À0DÄ0:Ç¥Yñw"Ê,V«ÕjµZ™Êé<šŠ„BtÊb±X¦¢¡Á2D$…è”ÅjµÊÁ|b4:eµZÅÂrš„eãîa)¾k“úf Üâo!È8¸B2ë1âyû IåÑBtÊgíþDÂogãž©h¡Tw¯&"®~žß;‡ýä¹?c¢.}¯øûÂhW—¾—ˆrù{Ŵˈá Q¯Þ¤ï%¢­¼²rçh—x"ÅÖk¥X6†˜M¥L<ø‚è^>W~@´­[lÜcóÄY¶©Êf`æòD?ϳa§ÍÈàþÀÁÆ 308B,_çª<¦7”0èµ³KÇôây{k÷#ãR*å·óDs± à@c"2½0ÑÏó1÷´¼Õ1datæÓ)¼àÖã,k8mÖµïN\dy§Á€ƒh+_^Ö43oçy2èuxãÀþxLcA¿°¢»ÃN[˜ˆˆìþÄ,ÑÎqÉŸ·x<¶8o÷_rèÚÛ'©þ°Ó&q¿¤©vÀ1ê™X…¶o¿üα¾.} &<£:†Ãß`?0Dtÿþ}ùß7nÜÛÝÝ=z—ŠïËhÍÒÒRExÐÙىϺ€V †€V¨ì‡XZZ¸€¶ÊýØ4ª*öC<¦ñ0@-؈!1 †€£æ1ÇÞxç½Fªxí¥ç1Žˆ!ʼr~\»À›o_Æ <‚êÜËøã¯=¦ýSQ^(ÿžLaÏ_›Ùl ÊòÂáþÒζtOȬV«ÕjµX·ø[˵ÀÑÏCüÉ×þèÁöafS©Ù?wŸ‚†à°;F#ó+3 ³÷î B&èŽñÅ ‰è™b…ˆàç!þá˯´š›ó Ñ)‹E^7s…è”Ey¤n^!²Z­ËT´ (‹Y­ÖáéÈ–æB¿V%¥Â™€|J&Pìm £}ºê…(ër¿>쎳,ËÆÝÃÁêTê8¨Ž˜2"+ôØlyˆªaÔd€öÇÿøåWÚ?Í-šÇC9ñ'Éd2•š—Î\p<”3¸ü.ÅÜA®~Ùøy—r¡+Ry.莳¬ÝŸXñœnè²ÅJüv–Ý+»×ž¢Sž8k÷'~;÷LE ڧ׺±ÎÕÕù +óvžçy»œ6Pª>½ÖˆÉY–™b…þD¢âѺ•ìs ñ»¯´šn»§— B)°#¢^½IßKD[ùB½U2ÏÛ£]Ô¥ï%¢ØzF¡ß"žï×#éx=R%¦A;Ï‹•ÈÇçgLâÂ=½–ãyû ‰Äb¹µtAQ¬ât ‘ëÔ°j^1b-haöCüþ+^û§ñ–f`æòD?ϳa§ÍÈÊÀÂcóÄY–rù{­\Ž|Žˆzõ]m±N…ú¶Ç ©8]cÄhÏ•ìQ=•h&J¨Fè—RŽLÀ≳1wppeÆDÇôâsêéýbÐS9zLo ÊÕ-&W¹fVûêãP=b-Ò!dxÔòø'^û§:Ù08B,,ïqëq–¥‘AåÔeš™·ó¼8õ2ŒÎ|ÚP*ßZhRlt“6FTPÛ\¹•ß)v¯W¯«šY厭sR1Ãi³¢Xåé]È1½¡xnæTOWŽXKãÓ†Ah.ñûæó³©ˆ~ÊvZÃDD¼ÝŸš Åûˆˆ'ÄgTœ’uŽKþ¼ÅvZÃTk¿a]¦&úc¡¸ÇFþy{Ìkà”5ÿpxƒÕج uÌc‹ñvÿ%‡Nûôê 1UÍ壞‰µñPØi ñö Éï¨4Wv:§:b-hË ”ÍkDtÿþ}ÕÇÞxç½3#ÏjŸ#öþ¾~Öµô™ †‰Ë ­Ï **>Sá O8:;;«"<¨ÎÉy‹=.Á`?hå!Tuvv⻿ ˆ!1 †Ä€1 †Äp¸=†!xx½ñÎ{8Õ_…âáæ›{ƒûmww·££cwwWy÷2 ÕÌ7bhbhG !™€Åb±2‚Pë2uO×. >jµZ­V«Å2-‡d˜”+vOkˆ€ˆˆÒ>£/}¤ÚK»raí³Z«³ñòFçÒvùòÒ>S‘âúÜÌ)ŠFàO™ö®u€G,Á0³©T*5;À01ò¡¦çéBtzØ£"‘L&WV<ä¶0O7µv"ÏÛž%“ÉÆ¯±åþ@ÃÓ§Ù›õš@ZkWë¬í¥ð5öZX9Í·ûÂ?¾qS®=½­hÞ9I œh&ZQ¹¢–ú–öKrÙ¦¯¨µ²â,ÇB+­?¨ààaˆ!äÉ/R&äã·ø[ÁawœeY6îfA9_V¬Ý™:3(w%´Á²#ó3âÜÌ0:Ç¥Ò< óŒF÷!SÑ%"„BtÊ"'äÊ]*D§†&?©:±©ä„òåÞ ¹_W«Vãr2™ÀÐÐ LYJž ˆWw!¥XE¥}F_z{Éi4n/9&“ɹ´¤þ·½ä,®ÆŠSGÚgô¥‹kIJ¬JáRe‹¹bÉ:Åêô¤ì¬)í3N^c¯M*VöÒö’³|ÎÛ^r:—>Si®ìº|éÒ*;”ö‹jMå©•+UVÒÈij}óFß·Ðw1’.Ž6]89}r‘^%‡Cy=‘‹}‹ò$jö.–w¤æ•ŠÝPé[ZëZŠc‹ª3·Ö³ºXUE£jÏ®í%gY οý¬ú¬½? ëtøé§ð\esiŸ±Á( à¡ÍC°l|<‰ˆË@¹Ð®"!1³2oçyž·Ï¯ÌT¬ËÅœD2™LD\ý<sµï¬Çˆçíƒ&•G Ñ)Oœµû ¿{¦¢…ZÝSíå .¿Ë@1wcÝè¼çcîéhA2ñ¼suqö¯}-ù˜ê ,D§Ü1ƒ+’H&“««óªªÕ¾÷úàêê¿á´e7ò÷ˆˆvò[†Óf]í.¥}“›s×9Ž»>·9Yz™ŠNzÉ—ÍŠK«´ÏK¾,Çq>ºU­ÃK¾l–ã8îýW©4uD'W‡¤¢ëÎY©rõÂißÙ;®lùbNꃲØö’W*¶H“*¯áõ+ÿ6™½ÙÅçøç«F†ºÇ\es^:r±Ï5ƨ7׾þÉOœ«CÙ,÷þ«òðm/9Ã=×Å ZŒÖÿ¯¤z¥MV’Ž\ì2“yÈ]-ÍBí½p*éUª˜Í‡”“yYG´®”ˆµ¾i>µj4ÚØ³ºXUe£*Ï®î±Hñ÷í¥0-Fþìx­®îéI¨Ýá>úù¿+Íí¥ðæœo¬Óé‚çíÎÑ.êÒ÷Ql½•„¼xn«¡^ËIá…iÐÎó¹µ´¼(¯Û=1:!êÕ›ô½D´•/à Ì\ž0P.ì´ Gô—gL ÷Øl*›!(ö–¨WßÕâåÌϘˆ¨Ë|ºŸçcëÝËÓis—ÆÌ³u¸Æº‰¨{Ì¥x™r,Fä¨í»›}'ºI*£šŽ– wŸèS,[ëRyFQ-¬:ûP*¶}óõט¢¯¼ú"œs›ÅûÛKá͹˜k5wrîº×,6ññ¯z}Åߦõ^µ}ÆÉk,KD<=7ÔÎÂ=ùøÚ³¦ŸŠCª~nË•wŸ:CÞ›ÛccÝÛ7oÐßñšÍIUÕïr'û†º÷>æÍT’Ž\ìseÅòÝc®>c$=ÖðÍùÆ/\ "Â7·OÜ¡!/ÑêA¼Î´ümaÌÕ¯Úìœ Ÿ½Ø·˜­ñq,pUé“¶÷¹{ÌÕç¼¹=6Ö-$^LA€B#°ìåÈ0qæÇÝ1Í 308Bñx|›¨xð˜Þ@¤œw úcMtä˜Þ@|®jú—l.äš:¦MXÕ[jårFg>m…ò÷vh­wðRó{T›´½äœ¤Å,g_=W›/|¼çd# ï9éXˆhLŽ{©\ž|‡V‹r½æ‰í¥p”ýôšéZ)îå7—~`>µnvžIyÃŒ+B¤L™‡“«i¯Ù¬\Zï}žÓ~jU5º'5Ÿ]éÈ3sŽ‹¶´§'¡VNf¨o2’ó_ oÎùBÀCoïŸqLo ¢­üN­w£khÓ ýÅ= â‘L q6eÙø:GÄ­ÇY¶^æ ¬Kòé‘å².rÁñ¼sEÚH1.neиŒBÙŠÍ•W¢ÞŸº—Óe>m Øú•|ï ©Îë’#*¦H·—Â5²­¥ÄîöR8ª¾€;)%·ïn–ŽGK[ÆJ©\ÕÂÝ'úTîL¨­˜75‹5^ùæÝmµùqnsÚ4-ݨß\Í!UìHhd?ÄÞ*IG.ö-råû.þ<½?Þ}ª—úªŸ(f§òN~Ú7ÙÈ}”º}«õÔR “Ê@yVW7ZãªÓ¾IryËw†¨cËOÂÆ:lvÎm®¦qCÈSæ¨GÚXP±K€afæGX6îŽl¨îûcae~„ra§M|ÏÂú ”9Ð9.ùí|Üc³yâ¼ÝÉ¡kªKâéa§¸•á/:eY\™`cAìäôòuÕº–Z¹Õ Ô9.ÍHWa±¸ªj½1ˆˆÑ`½Ýfïbßų&“é¬r[}Uš4šL&/qȯ¬Êwâ-öýôY“Éd2zéŒ#:iô}HDäX¼Þw›‡{®K•«N™½×{ÂÆºo²ï‹ ­V¼¿NOÔ*/Z¥¡î1×sü“òFµæ˜ÿ‹Í™L¦Õ¡Eµk¹ÅÌ&¿e¦¸¢rº /uïË…w©¦(ºÇ"‹TÜî¹Þìû,UûVë©Uz<[, ìj#ÏêêFU®ZÌ)xÍÅÿb¼Rs[~6ÖáîSg6''UþÜ#†ˆîß¿8„Ä͹‘ùÔì€j7Þy¯•ïÜÚ^rFN4–ÝOûŒ«CYï#ÿjWc¶—œ^òEŽèzr{ÉyöÆ™ë,—æÙpÈy/¾å›{Yù[øÞÎÃ@…ehƒeGMí¨O±AŒn1;†nËx>ùêûGv†í‹dO-9FšC ÑÎgÎäæÜuì„ä!àAk1Ð$ä!Ž ÝÝ]ÕïcØoÈC<Ü:::0p` Wùwä!ŽÔŸà ±@ ˆ!11ØSY‚7IÔòÚKÏ#†Ð‚l¨¶»»ÛÑÑQñf@ÜË€:TSõˆ! ˆ! 1„ d‹U!öÒ€X¡ÅÈB#Ç[¨SùÏZýßKs{öKÛªGÒ>£/݆úÅJÚR›ší%§Ñh2™L&“±¼‰í%§±ºÑö•€CN}O%ÏÛçWfL;ËÓ㡘;8¸23À0­5À0³©ÔìÁ^•Ôâ‚Ãn±ÿÍ|vÚg\ÊzÍm˜€ïnž<ãìÖ<òàÕ¾Þí%çÙ;®lÖ¬rÊäæÜœƒîìOyxóeºô½ëþL@^ÊgÒrßÈ‘ ¢S‹e*ZˆH(D§¦¢…bb "g`µZ‡§#[e©…BtÊbµZU² ŠF€Ï8y½6YZo/9ŠUrÚgô¥Ó>ié\Ê2¨d¶oÞ 3§º5Ï5V-Ä+Ú-[²W$7*ÖôŠGÕj–;oô}Héòë-»ŠtäÆ™ëª±”Ù›ÍFÆNT^FÛÊÀÃCpëq–¥‘A1 Á²q÷ú`*5;À0…è”'ÎÚý‰„ßÎÆ=SÑÃȩ̀ ,»±–Þ!¢ô6몲\ÐgY»?±â9]~|<”3¸ü.ÅÜA®Ô?E£M_ÜN~‹HÙÅçøç‹ëò´ïìW–ã¸li¥\â8Žã¸¬ëÎYiÎ5{+—ò†ißäæÜuŽã®ÏmNgðªvÓ>/ù²YŽã¸÷_¥‹‘ª´tR, xT­æ´o’ÄÎg½ß&sùõ*¯bûîf߉Ϥ€£Û û]†‚eã›Íæ‰óý®ËÅûÞs²V+|vçãR´4´jTO~\yxbž·û‰d2™ºäЩ,âïåsårù{$Å[çè^>72¨2õ‹'VGòÄ¬TÛð¼ÝŸð‹9ØM”͇Í4>é^Æt´õJºÇ"‹4il`é¼çd)Z2{ûnÜÜ~åàaˆ!ê9¦7”0è1ÌÀà±l|=¸kîÂ1½A¸´vç¢’é… ËÆ#Ë;{¨äxÏÉBT·»½äœ¤Å,Çq·àØÓȘ½Ù,÷þ«ÂÞ\´ IDAT¥'5¢ Õtǃ+ QÜú_ç¤=†âÖ1¸ˆÇãªYˆRÁI#**lp¾—ë‘Ê—ïÛuz\ý|.ä·y6cóî¶<ÏUgþ£¥—ª÷:ˆˆ>»S0T‘fô!G4¼´MDÛKábmÕí~vçã“=ÇÅpâîfc±‚ZÍÚ×[~¾³'\ÚÐ&טv´ßåàä!Hç¸ä·óqÍæ‰óvÿ%‡Nš¶Í§ûy^ÚñP#9ÐÏóqm}pÞÎón„Ê·fh˜ME\ýby±ÕûF7êaÙYÜ`!î“ÞNb Ô\¦/ö],m•¼Þ®xkƒcñzOX|¿C¸çº¼ù²ì½«›Cõ‘òöL&ÓÙ‹}ŠÜ~E»fïbßOŸ5™L&£—Î8¢“F߇õÕ5oˆ<ûÓâ!åõ–_E÷XdhUÜóè%Ÿb˨XÉô5öÚ´rdÚV Ý¿ADo¼ó^ß¹ÕЧG¤}λΈrY]}àaá½ø–oîeåwnuvvâ³®÷C3Y€‡¾û»YfoýU4{#æzGC!»»»ª_o °¢LGG ÖJ[þ½³³yˆš£°§Cb@ G öT xC)r¯½ôÓôµbßž[¬÷=ãûÕ‰¾â¼ê”ÉkÒsæAuh !¢Óã¡Ì'fF ËÓÁÌÂAϲAà ̦R³mª¼µ¸¡]qL½‰˜³ÜƒŽùzÒjŽ®…С…x<•{Ü•ÐËŽÌKÓ$Ãè—få)3°X­V«Õj dä™5`±X,htÊjµZ,SÑ‚ qœˆ¡²X­V‹%¹i¹ò¡!÷ëÃî8˲lÜ=Ì‚\›\¾ñž4,RmV«5i¨Ku»‘Ɇ†þc`ÊR“LÀ2-5{•^:UgÓ´Ïh4™LF£/]:âKo/9F“Éä\Ú®}ˆ¶—œ§—üPÊ"\›” ¤}e 5Ò´šb™Z©j·NsO?ýƒçÊ.A|T« p@1„ dÖcÄóöA“JéBtÊgíþDÂogãž©h¡T_#O"â2P.t…Ó>ÎÇC9ƒËï2PÌääÊÝ1ƒ+’H&“««óVæí<_+aÐBO4ˆIŽd2™ˆ¸úy>æ–B„º]Òî†{}puõß¿pÚÀ²ù{DD;ù-Ãi³®f#½u ©G“›s×9Ž»>·9YšC£“^òe³Üû¯ÒÅHºöÁí%ïW–ã¸ì"ɧ§}g¥ƒYï·ÉìÍ.>§v¢™¦«z-–á8e1ívµ›û裟ÿ;Gtµ, oÎùƺñàä!j/Ö éµœ^˜í<Ÿ[KËKjž·;G»¨KßKD±õLíãb˜BÔ«7é{‰h+_±r¢^}×~õ¤ì²Ù¸Çf«N„Hg)ZÑèRÝnÌϘˆ¨Ë|ºŸçcëÝËÓisWó¦ôjÔáë&¢î1—bu,FÄ£'úJ…«nß¼A=ljˆÈþøÚ³¦ŸŠ×NÏ íWCÕû!-ÛÕn÷˜«Ïys{l¬[ H¼ø pò 308B,_W¹ pLo(?`Ðk¥Ñczñ¼ÝŸH$“ÉTJÜlQUy½ÚÑ“RFaÙÊ‘ÁñÛy¾f+-uƒatæÓÊåïí¤×z57c–²mu¼ç¤c“d¥»Ç{Nî÷³k{É9I‹YŽã8nÁQêÌ^ë5õ]Œ¤¥ûNìÅ81™^˜èçù˜{ZÞ˜ 2‚ Î…RxÁ­ÇYVóÖ~Mr=‘åʉ–¶ò;3´òHe {ìIUF¡,IP·Kw£Ë|Ú@±õ+ù^Õm&AÄdõAó#*æï·— ݂(_¹Ÿ:³YštŸè«ŽW6ï¶³éÏî||Rº‡²}w³¡vkÎìœÛ\Mã>Àa‹!cae~„ra§M|ÇÁú ”ö×9.ùí|Üc³yâ¼ÝÉ¡k­U±ž°S¹#Aç¸4?"5j±8êõL(vÚ*w-´¯'röef~„eãîáÈ–äw^ÔíR£ÝƒˆÕ !ˆÌÞìbßOŸßÊPzo‚Ù»Øwñ¬Éd:{±o±ùwAvE†VUu^ï ˶/,ö]<[ñ®‡½4mö¯Åè¥3ލøæ ívk®ûÔ™ÍÉI$!$†ˆîß¿ØWÒGnŒÌ§fT ¼ñÎ{øÎ­æàC%÷â[¾¹—•ß¹ÕÙىϺÞÿB(,ûC,;R?  GHBãäæÜœƒî`ƒnyz<”3ˆ¯·‚PXžff¦îkãÞ›þ㯵”–殄7X–¯s3­t¬… iûµWÃÿ2XzÑø¿Öë¬/äyˆJ 303?²¡+\E˜¬ŒYÄHTŽÂnñ·‚Ãî8˲lÜ=Ì‚2Ì‘F§”±vE@Èâ¥V=bÓ™@±Ý@¦"¤ª¨_{¡*.sÅ¥¨°½ä¬\•¦òôs?0úÒÛKN£Ñd2•–éÅ#ŠƒiŸÑ—NûuJKêb¥Ê•ñö’ÓØØ [ªDQ²¬!Eê@³~¹|y‹Û7oЙSÅÂáè»qSª.½JG©²Š~Þ¸úñ?£îÊYù{mR.Y9DèhÙ›ÍFÆN`ö‚à Ÿ#¢^}—øò«s\šg¦Š^íׯF^o+ß¾¹—ÿäk¤úã›{¹V*B Ë‘-—ßÕÏó±ÈrA­c•§46Y('‚²…r&04ä~½}×®:ÊBŒ'´ÇA;9!^Bå„¥˜ÅòËÓÝ«±F†H<>-HI¢òI¶î€¨Îò-ÆDD¦A;ÏSl]¬‹ އr—ße ˜;ÈI!áx(G#þD"™L¦R³Ï°Ï̬ÌÛy^#:cÙøy—rb€"æ’Éd"âêçù˜;È‘I»žBtÊgíþDÂogãž©hA£~ª½Ž÷\ç8Žã¸¡ÕÉ(Ó=ærDWÓÊ2á͹öStÒK¾l–{ÿUº‘æ?ñÇ)Qtr’8Ž{ÿÕÍðO~â\Êf¹÷_Ýœ¬œÓ¾³w\YŽã²õÖÙißäæÜuŽã®Ï)«‰N®‰Ïºîœ­šy«êOûÄŽU¶XB ƒˆô* IGUFææÿøoþõæÿª¼õaöfŸãŸ[”[¬¢Šp4—ÁbÙ¸{xºâŽ⅗aê¾Æª¼ÞúíÊ¡Ò?|ù•ÆF"Ôë5™OˆrkéÒîX#“EõD Oc,w¯®®Î_hëµWCãÇk­½U/¡rÇ ®ˆtíbϵ§ªêkdˆÄãaç°Ÿ<—' ” ù— Š2ÚR=Ëï-†(¿žõõêMú^"ÚÊ+»åž.õ².ž·;G»¨KßK$(ñ`ýÎÒk9ž·š¤@'·––; Uy¡œ;ÍÞEqÁmvÎm†K ÙÈÅ>ן=NäXŒŒuQ÷‰>y¾ŒH ÅA":9wÝk~ü«^_ñ÷ª©p5êjh6K¯F.±ñ²yܱ(φæ¡òù]µþã='+ ©…Df)ˆH¯’²†ê‘ùß&'"Yy+öP(B õ!R¿Æƒ €Ãe`6å·ó,»vÚäU Æ os¯·å B¥üò+$ÄÄ &†Ñ™OXvc-½ÓPö»ÁÉ¢j"àyûüŒ©Ù!­{íÕãÐøqùŠ<6›ÊÂ]q â„%'™š ëŽX­!êÒ÷Š¿/Œv‰erù{ H³O¶†cƒþXÙxyâ,+v‹af.Oôó<»vÚlʼM³ÄÄ‹M¬¼¾{ù\ùÅ05ì³;÷è®:Ü=æ’“ùéÕ¨cèÛõ’ê&Ót´tPY§ZýL÷Xd‘&•7VÔCˆbQB¨ŒŒYª6›uÝ9«F¨¨‡‰DÄÕÏWÌ/¼íõ¿ûJã§V"¼±vÚ¬V«3¼ADÊU\­z#“E“AûÇ¡ñãò¬¬ÌÔ¸„ª «±”†êˆí÷5þdk yn=βԫ×1 Ñ1½Ae¼ãR*å·óD¤Ì«4™ä(,ûC92¸"~;Ï7pÆ1½¡f ³w桾‹‘´tÃYkõZÜQÈq·àhº‘ã='÷õ„jýfo嵂Èì<³å SÕʽæÈ˜‡ßù¬õ!z £pè0ŒntaÞÎóÅWpõÞU½N¾öÒóÿùçûÿýî+ÕŸÿüó¿­~[£´"’H&“ÉdR zÄÛu.­ÞdÑüD°§kW‡Ÿ-¯(ÿly¥Ö843—UMX >ªF¬C¤2 Í=ÙØzc‘ ºcr©˜³ŠG–Už)¦™y;Ïû$Ž×V~§ñ«¹§ÜOT>î*õÈYç¤@ÇpÚ¬kú¿VYÊ;훌*¦Ð¹ÍÕt:r±Ï5Ö­‘Æ8Ùs\œ+ïn6Ÿ8ѧvg¡F?Å{ÛKaEJ>ZÚº¨’ªo°þÏDݧz©O%ù_kdÒ«Ñâ`mÞÝÖ"¹Àa €&0•–òââÍ ?Vó…·ìµ‘aG¤rAwÕòt+¿S± ¬ôÛßÿ“êO­$D¨×)¿Y¯üvFýÍÉBu"P]@¶íÚ«Çá¯Þý?å­qhx.‡¨É9±Öˆ52D´D{–o4†ïîØlž˜aâ²bߊÎqÉoç7ÂÎê=¢6›'F† ϨŽaF7ê™0PNyW¯~Òf~„eãîáÈ–AÜXä¨K£±3qÍæ‰óvÿ%‡®•|ƒ÷zOXz×ÀêТC9…žÙœœÔHB‘Ù»Ø÷ÓgM&“Éè¥3Žè¤Ñ÷aK­×}'‚Ù»Øwñ¬Éd:{±¯tן‹×{Ââ;Â=׫v VÕ_¼­ðìOKµ¤W7ÕB¢î±ˆêÞCåÈ(>b’¤ý"RgÅU†(]Vàކ< ÓרkÓ-~þ@ÛÌxÈ?ëZsNšÜœ»î=ò—¹ºYúh)Œ À£ ŸèŒqh òG6°:;;ñÝßÐ ÄЊGz?ÄîînƒŸÝýDÔÑÑg†õ :úû2ðÿ e؈!1 †€£Ÿu}”á«Ð.ÕŽâˆÃçyÀÞíîîvttT¼Ÿ÷2 ÕÄ6bhbhG !™€ÅbU°XAØ{KbÍÕµÕ:^£’BtÊRìØT´ ´Ðb{ûPÖ³ €6ä!xÞîO$’Éd"ᡘ{xZ{¶>‚PXžå ®H"™L®¬xÈ<°é“afS©Tjv€a 9¥5‡óˆ!Ê&Ιù–Ý]áTÄ•¿gKàK¹Vdʦ·üò´FAÎ4¨-¯ïåsDÔ«ïû¦s\š`˜Z½ÒhQ(D§,–êu|&P:(^EÅEU´NÉ5 B&8쎳,ËÆÝÃAÕΔêd*ÂeUME6Ê?Àa‰!ˆˆLƒvž§ØzÝ?ËÆÝ냩Ôì3ì3³©T2™LD\ý<s—²,_#OÂo¯5íqÁñPÎàò» s¹Šùrp„X6ÞÔ²»ºEAÈÇC9—òrž rǤ$‡|P¾¨ê\BEÍ 30³2oçyž·Ï¯ÌT—/D§?c*;Ô¥ï­*ãíª5í Bf=FD½z“¾—ˆ¶ò…ò³)¿gÙ°ÓÖà>€Z-²lÜ=½,×/…ôZNNrh]Tc×R_I¯åxÞ>h’fýÜZZn]ªJ.Dp¤bƒþX3õŠ7 l6Oœm:LaÙ¸G<1—¿WõèÀl*‘ˆ¸úùŠ  q 30sy¢ŸçÙ°Óf+Þjo”쟪úÕ®®uMþö?†àÖã,K½z]á°ìåÈàŠøí<ßÌ´wLo(m¬µ‘at£ óvžoz.¶Èè—R)¿'¢â­–czþNáUõ·kÖoþ°ï1„ d‚Ïw$måwˆ ºkçÊ6?–ÛÊïÔœöFg>m`ÙxdyGµ3©¨”xk0èÕïUÍM3óvž/V¢3Ÿ6H…U]³(¨T"_Ú:'b8mÞû¬_ñ80êß—Á²q-.þÎ&./ŒÊ³é… C,vÚú]v>S;]|³@Üwo ÄnÄÝÃt!ùñÑ5ÿpxƒ­5íé—üy‹'ì´†©bs"à ÌxòÓÃÃ,KD|¿Kî˜v¯*Z”ß@AD<&€öÃýøÇ¿ýñ1)ADÿï¿üëHhÚ׳ëúwë€GCüÆ8˜ÿ‹×1Ð,=]@ ðhÂ{; a~¶œÀ ´ìlnë8чÙOSxo-À‘öÚKÏ#†PñÊŸÿk Bkžøí'”¦¡oÿË!|Ü8Àѵ»»ÛÑÑ¡|o'á^Ô¥úAŽˆ! ˆ! *û!á“_œ~@ßyûûOÒ§¿8ü€z^¼ðúðãŒTà“Ë?zó&ÏŸšyûûOÒß§.¼~õ.KD<BY¬XÛÚTÛýÃÝ1¿ýö¹[Ï\=ÿTñ_/^H‰¿Z^·tôœ/ÅJÏ÷þpÁ÷½'4ŽW>DDì/?÷óZäü„˜Ï¨ŽjøäòKoÞ³ÿó·è“ÿʲ,Ý ž'¹L©À©WÞÿVY¨1CÁ ½óÎxõEŠ‹øä9ò,t¿7½}®,˜¸ýÖ¹¿ùoôä9/]¸""¾×Yš¸éó_z§#[,Ï[¼M† ·¯ÿÍ ïÕâ)O÷Þ:wýö÷ªëxê«ïÖ¯‰ž¨<~þª÷mõSTÕª yì‡8~öìwYöæõÔßÑßß¾EÏ­>WµÀ+þà=ç|ýÖ[o½óÎÌ¿}{æÏ+ƒŒ/VüoÞdO½ò×ýÊ)öæ›þ•/Ù”›ÁžV ˆèüU¯…·x¯žÿO|ïœ5yë¶"úåÕÿöçÏž ¤ïÖ3ï¾ûî»ï¾{õÜöôÛ·‹¾¹}îê»ï¾{ÕK¾·o70žO|ïe1þ¸}+i}æ©ò9¾¬åRîþðìSµÂµST)ê‘û°1Ñ“OŸâù;·n!|qû=óT) þ­ñw^9ųìݫ޽ôÒåO„ÊHBµ€ |òÑDtü›O~ó8}öë/ÊOT- _ܾuGÎjT ðü©§ŸTöYª™çOÍ|ÿɆ–ëgx÷ê/?W$ ž·wY½òr¿4sž]'é®@Ùt~ûísç^T8wîíÛÍýi’Šç¾I¯øšñK§(šk¡€úüŒ©'Ÿþ.ݼyõÆ/v>8~öíoÐ/Ê£„¿þ¾xßáfðB×…×-—ߘ¨.ðbbàÍÝ$–¥;;ŸUUÄ;#Z+íÊ5j®›)8w›ýü{ß{BJœ'ʨýõö¯~•ú·/FÄ0…,Ï£ŒóW¯žßÓŸFÚÇðù/½×uµ'þÏ wÿy÷ÙòSZ©`bzòÌ‹'>x÷æÍ›ß}åûD•·æqËë3;çƒÜÙùœèñªÓ+ |ƒžèê!þNÙF‡òL„j'ºzˆ´Âˆª=]­M›O=sÂwýö÷Îó—Wïþð•óDµ’ßìþçÖ×}Õ3·Ê»$ªvK<õŒÕwëöù§ä£Åx¥<žy¥Ûûöí§Ô·<|ž]ÿÕ‰s\£v=Íjøó!¾ñÔ3=$Ý& Ÿ^ö¯H7 >ýè&ËVÌÙ‚ð‰j†yü©gzä=¤sT}öë¿/ŠGä³>úTj®ç™§oâýw ŸËóûÙÞ½uûöõ¿9q®˜þOúä¥ OïªíGxêüÕ«ï*\UÛnùÔÙÞ-í¡¸ý¶OuÛÃß{¥ûªW¾·R¨Lÿ ÕÚ)ÑD=û—‡`˜Ç‡=ï W$ ˜'¿þ×Ο¿Ë²DÄŸ8Wq#ƒa¾U«ÀãÞWv^zóª÷å«Tü¨‰2Õ¾Å0{fv^zÓû£«$´œñÖëï^õþè]±ŒxÖ›?ºIÄŸzÅ3üx㩇óÞ[ç¦ßÖI“ýÆÁ»Ó>úႜ°zº¯ž;weù^ç‚ï©âÌì{æís/^`k$êLë>ïÛ/¾ø¢ø/‹÷]õí O|ÏwîísÞ_¾éÓ%/¼˜Rä6|ŠæJQñó!TëYÀ¶Ø3†ˆ¢§2>è”IDATÏþÂÿ‹×¥äÁ+ÅÏt°<~”?ëIò³å„úwn•}`>”©FôWù?ýÕÿAÿá?Ð_þ%Fà¨ò^|Ë7÷²ò;·:;;+ó—_zé&ËòÔóâùG"€¨íöÛ¾»Š$”©Œ!Æk}~Â#ç©óWŸªýOÄ@ô›ßüægË ŒC ÎþÝýWD«þß©‹oa4C§òwÞk¤Š×^z〢Ì+çë|‹ç›o_Æ <‚êÜËøã¯=¦ýSQ^2‹Åb d¡úŸ{!…èT+Uí±m¹„½T"dV«ÕjµZ,SÑ‚€§,<1ÄŸ|í´®§Ü•ð˲ñuî f}à ̦R©Ôìô4´V‰XOp}0™L&".åBþå‚€0†â¾üJû§¹±²XŠ«j9WQˆNY”GT“Ë‘-—ßÕÏó±ˆ4*çiù÷[ü­à°;β,w•æ—§«Wó™@±?LåôŸ ˆV´b-R=È‚©èCuX£Ñn4:%÷“afgˆˆºô½D”ËßÃsŠâ¿üJû§¹%õx(G#þD"™LÊ‹r.8Ê\~—bî W+ êuŽšÌ§ D¹µôŽVÚ`feÞÎóærdRíƒL»Ýê~qëq–5L¼Ðl&àÅ¿ûJû§éöظ{º”„ÌzŒˆzõ&}/må«sõbbâÃȩ̀ ,»¡DÔÀóvçh—´š­gA éµÏÛMD¦A;ÏçÖÒrëW~ —¿GT·ÚåHœeGü¥ƒPˆN‡6X–X–øö·ËÝ12LxFuHBÀÃ’‡øÃW¼öOsa„Îq)•òÛy"йÅÍ Çôây{Å ŽŠ$„+’H&“Éd2‘ˆ¸úyíÛ ;¦7”0èÕÍ"¢þP®ß‘ A(,ûC92¸"~;Ï·½ÝRª9x˜bˆâµª“ ƒ#IJñÈò‘t_Ü7 —1ÍÌÛy^œ8‹·'ŠåUÖàWB½N‡Ž)Ö_º!¶E´•ß!.莳lù$½•ßÑ΋HM¯sÅݧÍuúÜ•PÎ0Q~OAÌ+TÌñ5ûÐl»-¿§àAÆ¿ÿŠ×þ©>e`6qõo„V«Õæ‰óvjv€Šï;°Z­6›G™™×9.ùí¼X¾â­òNeý]æÓýÅ=¦& ” ;mý„œ`ݨG:®ýO±é¸Ç&öó’CW' !dÖcÄn„6›Ü[†˜™aÙ¸{8²e ñ½uiô¡©vÛûVU€vaˆèþýûª½ñÎ{gFžÕ>ÿFì}|Ö5À£¦³³ó±º!† ªiå!Tuvv⻿ ˆ!1 †ÄDÿ?^'Ñ–ÿð~IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/28_loggerpanel.png0000644000175000017500000007766012032647166025627 0ustar ebourgebourg‰PNG  IHDR¹Ò¦i›'sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ/ ñÌd| IDATxÚìÝolgžàù_Õz1ݸÛÙunÝ¢Ž!íãÍ5ÜQSÞÕ´fncŠDLh²ÓÒF‰pPs<ˆ³:EÊH;ñ CÞ‹ÃN“QÇHÙ‚b›Q×Nä¥z‘%hAãÃŒ&Š:£u¹¡äx›n¿ØÖ¢q‹í¹Ý­ºERE²H©?–äïç…AŸzþüª(þøð©¢+Šˆ„Þ}ÿ­×^&Àå·#_EQTÂX"WÈ•€z±SH×ÓãÁ„Z”Xkþhj¤u·û§§Ç|¡D®EÍ?º0ܪ(FâÒiü·¾ ‹÷­^•õÀOõßœèrÔÙn#Þ…†`_ãóÊj"äKïjç²±ÁB¢,"ªšvŒ§uý ‡lmªo|e›™ñ˜ÇãñŒUËöÀåÊšæÎÏ'“Éd29õ‹ˆÄw/sÕõôG“ñGóÎG;ŸDŒÌŸî?µ{ß³†`Ç‘÷s·ûµxÜå<^Hm³±¡¾É5U•²åEOY­£p?šÝ*P¼ð@Óüíî\=ŠÒ:’jsöXTyñ¾UºÔ°¦®€2/Îé Ë' £+<›ó„ª9~'ù½¿ô¾PUU!_ÂØÅ]µ¡òXeŠ×Tj]׳³C}Skj¡õB*Á)ïsa¯*OUê‰eçS©^{`ÿkd †®gg‡‚ Uu½Ðæ(K¼¤xy†®§ÇÍO©‰àÐlÖœí®ŒûS[ò ¥µ½³Öº‹ ûVïRà —ü‡=2­3VÕD°c(–Õ-“Îí4dؘ2·z뺞ïØJ”‹ê¯œ*}®òTõžXv`ÿ«c^YU!_á2;×À͉nGn så£É5U=Õ?}¥Û‘»/¾˜vçæ8]Ó]E1R´Lfã¡HS¡ÎÐÖ|pɾîá›ýë}Sk¹vú‹úSyßJ]r7ðyÂ4pUÓN „r³×F+…yÙô˜'”X›üh¥{¤U×Ó‹qÑÄ_~Õ`ë¨_Ph|¨ÔPáÙ©©âYÞÊ­‹ÈÊx0¡ª–VÎJ¥>WNõ8bXÒy€ý¯ÁI>U]»»ô¨(‹Òü®&cy†&²¾ñHÄX8q¥;—«59›ËªÒüÑT¡@nßEqt_I%“ɨ_‘µ©€Ç3hž­¬´oõ.m‡vªÿæBîCB¾•S¯ä2p÷+§4-¿Èø¸Óe¤¿¾¦´Í oÜZÛP¥õ­gC¥‰rÕàTésŧjÅÁ¢óBóÊe«]û<“…µ¶Es¢ª*Z³³)÷¿¢ïîUU´â:‡kOõ¶Ž¤’#’ ¦Ö&£³ÿð½gìì[¥Kõ¥­5fCMÕ69›E2ùD¿k⦠õM­©j"äMÔžU­^@Óü£·³nÝâYÁ©Ògé֓ 8,¹²™âèžXpŽwƒCÎç2×SæUF¢ìδ®çkPîr·ÌÆCyÆ^ŽkÑ¥]¸«ÄúÆ#i5Ö†<ÚX7GIqt_Iuo]÷–9oNt5íIë¥ÏÚN•>;¥Öpª÷ààiüB«G³Ó U•ÌF6wÞÚäG¥7.|;Ÿ»Bme1aûÒ.]O¯¸ÈµX|¹›u*_¹K;¨¼cÙ®t¶—Ì +Jëð¨_Ó$³ñ°8‘Ý¥Ö·ží+½2Òfp*ôÙâ)ûq8X¼¶oKg{«¢è¯ œŠO®%BÞüóù[¡wºD][› ø¦D´S§\š¶¦&‚òNò{6ÚÌ;5èr(µ3`wÅ.í¤²VÔ²]‹ŸâSUñ··*Š®o…er½ªÒºˆ¸‡Gýñ`¢èŠÌܪ‰ÊÁY©ÜçŠÃ©Ù€j[7ð:Õ?mÜ÷@qtOÅÅÑ8¥i’»ùñDhÀe³rEi^¸Ùj«Nã§:FZmMUVêÒÎ*iEÓü£  JÃe Ëîµ^À‚Sèsõ§êŠÀA¡ˆHèÝ÷ßzíeb\¾q;rñuQ…†¬‘+äʹ2@® +äʹ2°Ùúë¹¹9"rek½½½ ‡^øÒµºseÙÜÜ|²ý¾|ã6{æÈÁê®ñÛÜÀ.1Ï+sm`\ Wv)WÖõô˜Ç3–Ö‹·Œ¥u}oû¼iiqçE–v¸Î–£Ê¥H‹Íº %-wÙ©ÞîÆ¨°C¹²!ßóä¸\÷ÄÊÊÊÊÊÊÄ÷col?o|p+ð†\½gTyï^¸m—zû¯ÿèóúz[’|7\ö$WVÕDph6[œ.SÎÞÑ;}6ÒâREDË]×¾ú‰û÷Ü*¢ýæ]쎽Ñ"Wî•®›ÐÍë4´ï_½Wmé­U+ %Ë᫟´¼äþSUÓ¾õ^þ¹|7¾u¥m«Tä¤íV¬ª•¶ðÇ÷-î!µÐa«Q”·^¾Åº~€ÃJ‘лï¿õÚËU ÍÍÍõöönnn>Ù¾^¾q;rñuŽvOøÒ5#çT…߸¬‘+ÖŽ¬înnn^¾q›Ãrå"o½öòÑ£GY² €Ý¾tí@æÊ"òį/ÀÓƒõʹ2@® +»åÈS>þ£GrÀóʹ2Pº×`èzz¼#˜PUÑ´S7'º qÀáSß¼²ž uãÒŸO&“ !‰Ž§u}_ I×ÓcÇ3¶ß:€Ãœ+¯|4¹¦ª£Ã­Š""Šâè¾2b<‘ô˜Çëõz½^ÏXº4mMO Ʋz66èñx<ƒ±¬n³Œˆèz66èñz½…$¸°c,6èõzÂ…ioUM;ry¼Q[®ož±em™d;™+ëzz1.šæow[<› †ª?:?õ«‰Ð`,»Õ†š.¶ÏO÷ŸÒ´µ©@GTB7\’™ŒÎfóÙjÍ2+ã}“W´ß%ñàøŠ¹ò»šŸîwIfò£Ei^õkš¦ùG†[E×Óã}“™ü\x*µ•Ü;“+WM£³Kw3¹4ÚÝî×´ÌÝ¥B¬iþÑa·49›Ç]MMÎfÉl<Ì×P½Œ‘¦‹4;ÝÎfYß0Wèj2v”øb¥©bUM‡ri·¢´Ž¤R$ÍØ‹\YäáF¦xƒ)Þ±¾ª‰/”PÕº*W”Öá›§4M]› ø|ciÖ]`§seEimïUM,®”?yÜé*ÞàrßÉ~wºDÓü­£PÝWR©¨_‘xpœeÊØá\YDܯ œÒ´xp¨pÉ]zl,­ëŠâh{Á•K£Wªêz¡Í±s+ õOÏ>²™X‹¬o—uú5M\N7Ê€ õÝ_YqtO,8Ç;‚Sß”ˆˆø£ó#Š""Žî+Ñ O(äKˆhþè•nÇÎv4WÿTÀ;%Æu{îʉuWhànßäTÀ7©ùßI~ï/½oçn-®P—CYáÀ vö+"¡wßëµ—«š››ëííÝÜÜ<|ã?zô(' —®E.¾."Š¢ð×€5reÀšÝõÊ·nÝ"X W.ÕÛÛK¤ð4_ºV_®|(¯êªc½2@® +äʹ2@® +äÊÀÓ–+ëzzÌãñšŒ¥õ]í±Ñ¢Ç3–Öõí®«¶¡Þéé1ãÀí“ ìà1Wuø48¹²AÓüÑùùùù¨_ÓâÁñÍrSö¶ßšÓõôx0n¾Tj¤UQxIìp®\!ËÆ=%–z66˜Ÿ‡.l/)©ëéñŽ`BUU5쨘yoÌy½^g0–­Vy¥ÂU’ÔXl°Pز3åCÛJpÓcÏØ²¶\^Uy±´®Û{Íæ,CdŸÊm…|¾B=é±| ÇÒ¥é{…nÛ9ú%_A˜¿ØjÑT[ÍCfÞËøž}¹È•ë÷hc]D:ÛéÉ•ñ¾ÉŒ«?Úï’xp|ÅÈ–Æû&3ÒŸO&“…‰Ì’’ŠÒ:¼0ê×4Mó. [Nvªj⮄æ£~U]›ü¨Zå[…§û]’1 W‹HqaËΔ­°op±½Ðty'Ë‹Ù»ÍæªÇ§zœ óÊÙØ`(¡ú£óóQ¿š Ʋvº]ÆòŠÒ:’J%“ÉùéþS¦ï²±Á`ÜÕ?]tÔj²’½Î¨g,+ØŽ#ö‹ÎÍÍ•lyñÅ YTÈ—­s45Òjd®‹qivºÍ"™õ¬în*¤\CΛ]E©^² MóºšDÚýZ<_L»ÝV•v6‹dâ‹éaw•Åå…ÝŪtXÓü£Ãîš,³3vûÍÕŠÏŠ¶²Kw3šÖÙî–ܾw—²]]M6ºmxMÎf‘Œ©E‘NgS£ÐZT¿õ^%•×u2l+W‘ÞÞ^ó777 ™ÍèBûbG0^œÖärhU•ÌÆC‡Ò:|s`½ormm*à›òGçGZ­K6Õ?¥rå»aû®«ªj®V=7JÒLÛ]rØ( gcC}“kª*ª*Z…m±ØËªr»g2@AøÒµses~\ÆýÊ€+1•˜ž}¥µÛ!rÜé-SºˆBqt_Iu§Ç<¡„Ž·/ »­JÖ÷ý¹Ëy¼b廡¡ç;YU;»mÍÊÚî¶>gg£“q L6ú‚ñJ-Ú>æ½*TÞÀi °e'×+7u…úOi™Éh,«+Š£í—ª&¦gY¤Õã~M3ò° %;]"²¾ñ¨RkëDVª*ÍNóså–ê¿ÑDQgªÍf'sŸlŒ½žæª5m§žB™Å•ܾ®Úlw»fc2¸Ù¼pÂ(Yõ@W¬¿x/‹ÊöQ®¬(Ž®@§ª®MFg³ºîè¾õkkSóŒ›ø|¡¸¸B¹UÅå%ÅÑpIf*à«”ÔÞvøB ó"ZËÊwf\Å)ïp¥}K:YÎÎØí7W½i;õe!Ÿ/”ÐüÑ+ݛݶ1®ÖáÑNUM;¦×]R¸Ñ‡£ûÊhgf*à«kt%{­ˆÛ²r^á`[y ˆ„Þ}ÿ­×^®Ytnn®··—/¯í0nÇ—ÎÊ«°]¾q;rñuQ…߸¬!»Á¸—ð8ȘWÈ•re€\ Wö÷ÁxÂ.߸MÈ•aíw¼`Ÿøódœ\y9ó_'û"W6=f½2`\ WÈ•€íküÚ>]OwêV¶íδ*»×W£Å¸tŽ. ·*Ê!;åñÔ4¿åHwöíÎ+kš?:???õkZ<8žÖõí§ŒcÇ3ÖXUÛÜý‰7gÄ3™L&“ÉTj„TàçÊ2ÈllÐãõzÍI¤ž z<^¯×¼½¤danUUÁŽj™w!IŽ^¯Ç3ËZï^Þ™­7=æñŒ-kËåU•KëºÞVoîìÙ`°žÜÚØ×›7–¶ØËN`9Ñž\®ühc]D:ÛyЕñ¾ÉŒ«?Úï’xp|ÅÈùÆû&3ÒiLšfLKJ*Jëð¨_Ó*-?(í½š¸+¡ùé~—d&?²Þ½¼3…}ƒ‹í…žäªŠúUumò#ëbvz[«¹îcõÄUQZGR©d29?ÝÊjæÞf`9Ñž@®¬ª‰Ïç Le:GS#­Fö¶‘f§ÛÙ,"ëÙ|z§ª‰àÐlá¿UJÚ¤iþ@W“49›E$¾X>Z¥ Mó»K«r·û5Í\U¡˜ÞÖlÎÈ}«,®0âi1lŒ±òQØÙÀ@vh½r´$¿Ìç|¡„ªJf㡈¢´ß8¥iêÚTÀç3¯%()¹+ƒÜ¹&ìTµæ ë• ù´±ÄÂgTXæÉàpۑ߸v¿2àJL%¦g_iívˆwºDË”.¢PÝWRÝé1O(¡Æƒãí Ãn«’;=ÚP.çñ«Úáézv6:™×Àt`£/·*c3°¨×άWnê õŸÒ2“ÑXVWGÛ .UMLÏ>²H«‡Gýšf$£JwºDd}ãQãÉqa÷ê)¶¾ñHde1¡ªÒìt”¥˜vz[³¹úï›ñp##"ÍΦZŸWjO"WVGW SU×&£³Y]wt_‰úµµ©€ù–Æý|¾P\\¡.#-/©(Ž®Ð€K2S_÷p(ß½¼‰JûÞvøB‰’uÌfvzk¿9{ÃiíTÕD°czÝ%å·±XÎu€º“1 ½ûþ[¯½\³èÜÜ\ooïæææ! Á“ýiË7nÿŽ·óÌo|s`?¸|ãväâë"¢( ¿q X;BŒû¸c^ WÈ•€íc½ò¾°ü×ÿ‘ +£ÔŸ'ã€\¥ìÜÙ{æòۅǬW¬Õ7¯|ëÖ-BråR½½½Ä ‡[øÒµFråÍÍMb€§ë•re€\ WÈ•€ƒ•+ëzzÌãñšŒ¥õ§6šF4<ž±´®?m.9<žÁXVß¡Nfcƒž’jëê¹¹pÍu==¶CGвç{sDxaÚí?Lågfç÷žÄðÀü}€}‘+4ÍŸŸŸî?¥iñàøÞÿ%Ýw‹—øî‡xΗd&ûÆw"ÏÎõMf\ýÓóÉdra!$Ñ]<Áôô˜ÏZx¥UQv©çÕc«(­#©T*5²ýÖæN÷ð‰¦ÎÑ…áVEQ”Öá…ÑÎýý—AQZ_Xù||ô@®Ü&g³é ²dBkë½'=æñŒ-kËÕËÛcY=ôxÌó=…y ÂÌxG0¡ªªšvä‚’2åHëF‘Â|RÑ›¢e"’Ë—KW‰ÄÆìPÉUy,SŠXl°|ö´|jвçÖ­Ú-TÛ14½n•ßlgìæ3¡ÒØ«Ÿ!ÅAx¸‘‘fg“ñVíè¾R” Ôêê‰Ýx0®ù£Wº6RÀš•[ôÜ-+%±µ|]”L.–œæzk&£‡è…YçÉSûlßG‡Éæ_’ÊÁ)/,¶{a å½-iña×DÔÿd>zÀÁÏ•Wª*ígÔ3#©T2™,ŸÐRÕDp±=•©YÆØ¾6èˆJèæ€K2“ÑÙ¬®‹ÈÊxßdÆÕíwI<8¾bÌÇø5MÓüÆ My™­ç;à6ŠHgt~>™L–LYÖ™ †ª?:?õ«‰Ð`,kS5qWBóQ¿ª®M~”kºRªïhL_•DI×Óå=·ÜX©Ý•ñ`BUýÑù…Ð –SG Ý|&¸ò³³å}°WQŒ™éV¥µ½ST5ì*ÿr¼¤°ýP[÷z<˜PÕÎv·Ùµá›ÎéŽÏ`,[!c°ì¹elͧeùÎf‘Œ„‘TT<¡ÄÚTÀ7Yœ»”¶ u“­IåìÆºhš¿Ý½5³^rtÌM+Žî+©n=êèȸ,O¡*=/?ô¥¯‹ÊqÛ>‚‡ü…iã䱫'~˜*±úKR18/œòQT>¦ùóߺ·¥-ºÛýZ<ž-—¿5ÀSš+‹Hoo¯ù¿…_½ÖÊÞ`ôll¨orMUEUE«Ø(#Õ“Uã}ºþ2ŠÒ:|s`½ormm*à›òGçGZ«§ËÆwµ&™‡"ŽFûlsÇò(Yö¼ÊpÊâPô¥³=vÇnœ Çg‡>_•>8ê<ú­#©ùáììPßÔZî=»iÛ§G•1óp#6öÉeÌé1ŸÏ§ù£©‘Ömö¼žÃQûÖf==´«'{˜ì«ÿ¯–ýˆY÷¶Z‹ù×rÉûáK×Ì•Íùqõ)ºÙèdF\Ó¾`¼Ñ2wºDË%e_ƒÛ)“KtÒcžPBÇÛ+Ï'ê,šlq9×ìl®ŒEììX)J–=/ßè¶›1·?ö¦®€2Xµu}EqtMŒntã5Ò߆‡¼5F;óÊæ$ã¸9?_iÔvÏwÝáxan£‡;r‚=!ùWœÕË|Ž{Í„-æ»dçM®]º¿² •']ÅÑö‚KUÓ³JYßxT¥Œ5÷ð¨_Ó¬’?ë:Wòëq_h«­o<Ê/mv:ÅvJw¬%Ëž›7Z¶[X ¹¸’[OY1qldì""òhc=ÿVZaìv¾®§Ç k‚ÈTMÓë:ô%;:›sa)¬ï4+Y¥j\ðÔ•ÐÂBêJwy4*÷¼(¶ euvŽà!~aÖÑÚ±Ú—‡©Ê„šÁ1këú¼Ú«ÙÛ¢­ºäÊõ½I vªj"Ø1½î’’Û)Ø/S‰£ûJÔ¯­M W‚+Š£+4à’ÌTÀgl)/cù^âõz}¾P\\¡Ò•‘•êL„|¾P¢úÝîF;|¡„yucÍþXîh¥Â Ì=¯4Ëvݯ œÒ´DÈ·Ø>ê×4ë9¶†Æ®ª‰Ïç LeªöÁþÑW”ÖáD;:¼^¯/”ÐNõ×\\n3Ô•’³øbí+–t==Þ·¨%Wïyylx‰]­rõ ³¾V?Û÷áaªò¡fp>î•zkÙâÊb¼ÊÒm8d ½ûþ[¯½\³èÜÜ\oo/_·íãKÿxþN«ä‰ˆll¨oRnÖ¼mܾêp¦s´|©4öÿaÒõôxÇba‘IÉ÷çI• öMÊÀ͉n©Z—oÜŽ\|]DE9B8€­ÏŽŽî‰çxÇGé®}ý¡Å¼¢Zs Üd†ï¦x°CF†›:Ç¥³}÷V×ÓM6ó‘ÀÓ•óÊ@žy^Y%€%re€\ WÈ•€ÝÂ=ã¬]¾q› +Úq¯*IŽEÖ7U)cÍ=<ê×4q9ÜL»++Jëðh§ª&‚Óë.1ßž¢®2•8º¯DýÚÚT p› Eqt…\’™ øŒ-åeJ*)ܬÃç ÅÅ5êr°LåÉ­ˆ„Þ}ÿ­×^®Ytnn®··wssóiˆËå·#_çüxÚ„/]3ò@EQøkÀ¹2`í!¨dssóòÛÄ€\EÞzíå£G²dài¾t\¹¶§ä*FTÂzeÀZ}óÊ·nÝ"d W.ÕÛÛK¼p¸5¸^™õ»xª°^ WÈ•re€\8X¹²®gcƒ¯×ëõz=žÁXV··WzÌãñxÆÒºÞ`»é±|£cËÚr¡¶ÆjÖõôØ6:³!o?;ÛŸ'€}h[¿q­ëÙÙ¡¾ÉŒkàæD·CÑõììÐxzb¸UQªï¨(­#©ÔH­ül¼#—ÎÑ…Ò u==Œk¦§Îäkk ÓÓc¾PâÔÀôH­no‡!ï¥zÁ+ÓŸÏiUxÙ€§Ä6ç•ndD¤ÙÙd¤_Žî+#…¼6=汘úMUš ŽÅ “ÓF––PUUM;ÆÍ3šæ§B>_ImåÙ¼1í]i5—vû£WºE}Kv/Ì—ëÙØà`,«ë–5oÍÔ–Œ±lÈ…Â^¯·chz½V‡^‚i1Ì vð<욈úµxpœÙe@®l‹¢´¶wŠª&‚C%«/²±Á`ÜÕ?=ŸL&S©\­ª‰àb{á¿EýPw%4õ«êÚäG+ŠÒ:¼0ê×4Mó—Ì+›ŸŠÎÏ[ÖV°2Þ7™qõGû]ޝX&Tµ³Ýmô9”PýÑùù¨_M„cYEq´½àRÕµ»KDäÑÒ]y¡Í¡(Uj.c¥!íú£ó ¡ªwX×Óã}“éŒÎ³(Ý·*°ã‡ÀÝÞ©ª Ë0Ju¬Á˜››+Ùòâ‹/¶Ž¤¢â %Ö¦¾É|R¥ëÙ¥»‘Nc¾¹@Óü£ÃnËÊ5Íèji÷kñx|1=ìvo{lºž^Œ‹H³Óílɬodu·Ã”#êzvc]4Íßî£Ïšf¤Íí~-¿»”íêjr6‹¬e6êº,ÝÍ4š*ÕÜd5FË!çÛ=å<.ÒälÉTîpS!rÞœèrTø`PR`W»Ý¯Åãù0–ŸOo®,"½½½æÿ¿zÝ:’šÎÎõM­åÒµ¦ÜÚŒ}AU!_BTU2EEOšûYÖçÌÆC‘&w.w\nßÈ™´uÍMutªhíJ+­Ã7Öû&×Ö¦¾©òÊu];ù0–œ ‡CøÒµsåB~\BQ]£Áx.k<îtå'Kàrß™‘wºDËøË¯4È÷³¬Ï.çñü:“D"±8.ñÎöüõ5ïÄ:^ë+Žî+©îô˜'”PãÁñö²á”pïÞ!È?ey&&ÛZ¯¬ëé±üµn²²˜PÕ|~éh{Á%²¾ñÈ~eëò•4;Š’K^뫤4ƒo{Á¥ª‰éÙG• 8›EU‹+[…WrÝpå—&ýH$…Yåš5×êXn÷âJná²jÝã~M«’Åš ìÊ!(z €\¹VÎ7’hG‡×ëõ…Ú©þÂzYG÷•ÑÎÌTÀWå%îF;|¡DaA­¢8ºB.ÉL| ß~ØÑ}%ê×Ö¦•ºaä—ñÅ•BáDÈç % wÆ‘¦¶NiZny±íš«s¿2pJÓ!ßbû¨_ÓªT[¸c†ÏŠ‹k Tºd¹R?ÿûb¼Êrg€ÃG‘лï¿õÚË5‹ÎÍÍõööîø7ïU7ôll¨oRn’ã§C öMŠq#m^6à»|ãväâë"¢( ¿q-Š£{ba´yò#î\%™þh²ytD<]Ž<ñ쇴S”Ö‘TëÓûi¡Ö!xÊãžZÌ+äʹ2@® +{ëÈS>þË7ns€\Ùšq¯i@D—®³°F® +{“+ëzzÌãñšxMó. ·*JaË™Tj$—ìÖ][<8Þ^\ð¤ìðŒ*sɺž zŒéçJ³ÅªšÍf‹Ÿ-™À6æž·JÛcY=ôx<žÁXV·l´®©n+ï‘•ñ¾ÉŒ«?Úï’xp|ŪHg4êWצúŠŸU”Ö‘T*™LÎO÷ŸÒ´xp¼éªj"¸Ønl_› tD%tsÀ%™Éh.á¶Ñ(°;¹²ª&B>_õÙbÑõôb\Dšng³ˆ¬od- »‡§ûO©‰yáò–&gsñMó»íšæèj2Êd6Z5úHÜ#©T*5Â2Ô´Ãë•«/mPÕDÈ—U5rY‡U™¦®PÿݾÉàóf`+ÕÎÆ†ú&×TUTU´²ù;Ÿ+ÛvÜé-Sz!`9EqtMŒnt'£Ó.inÑõìlt2#®éÀF_0¾ åöh½²¢8Ú^p©jbzö‘­Ã7\™L&·ááFFDšMÛm”kû°ïreqt_‰úµµ©@ÍÅÍ"¢8º'F;·RçÑNUM;¦×]¢ª‰`ǸÍd·®F€¢¤TDBï¾ÿÖk/×,:77×ÛÛ»¹¹y˜ÆùÆíÈÅ×9`_ºf䇊¢ð×€5reÀÚB°¹¹yùÆmârå"o½öòÑ£GY² CøÒ5rå-‡ìjEìÖ+Öê›W¾uë!¹r©ÞÞ^â€Ã­ÁõʬëÀS…õʹ2@® +äÊÀÁÊ•u=ôx½^¯×ëñ Ʋº½½ÒcÇ3–Öõíµžk´’š}¨T`§:'kÇccnçû:WÖõììPßdÆÕ?=ŸL&B·ó®¯(­#©T*5Òª(ç²é1Ÿ/´>ðJ•J¶Ù‡CÀaŸ Ei}e`=äó¥9â®\YäáFFDšMÆ»¾£ûÊVê™+Ì7-k˹´#=Vô_]/d$±Ø`arZ×ÓãÁ„ªªj"Øa‘ëzz<ÿ/çþÙ wû óÙz66hì­§Ç<¹Ö½^¯‘…l¥>úPR¾`cv¨Ê¬yafÝœTéÙØ ÇjøVYW!PgÏß6zY{hÔ\èO66h„ÇÜtcÃOëzI'+MŸ›‹e=EÇz,]}÷òà4ÜnIä+EÃ2öz½CÓëe +?«Ÿ$–ÊÃbnË388èñxT/oîXyVÆû&3®þh¿KâÁñ•\ß7™‘Îè|Ñð-™õÉ'£ï˜F}F=Þ51ê×´xp(–ÕõôXßF u¥Û‘¯MQ ßmt¼V'+ ߯ll0”PýÑùù¨_M„cÙ*»Û ŽvK"_)–gŽ?:¿z¡Ê °"î’3°JT+Y˰XvÀÝÞ©ª ãüûG¿Û777W²åÅ_lIEÅJ¬M|“ù¬B׳Kw3"Æ|s¦ùG‡Ý–•kš?ÐÕ$Òî×âñøbzØí®Ü]Ïn¬‹¦ùÛÝÒ$Í"k™‡º.Kw3Íâ&›œÍ"{}¨T¾JÇt=½‘f§ÛÙ,’YßÈêî¦BV7ä¼9ÑUH^G¬b(s7|s`½or*à›<ÕsÂmÕ߯‡oîd]Ç¥P1MëlwK®ØÝ¥lWWSÕÝw¢]«ÈWÆÖ™sÊyÜ"8–³s’H…#k–GÖp·ûµx|}#«»ŠRþZû=W‘ÞÞ^ó_½nIÍgg‡ú¦Ör PSnmÆî1ÕïÎ¥S+Ãí#5ѳ±¡¾É5UU­võ–7SÕDÈ—U•ÌÆCG>Á][› ø¦üÑù‘V¥ö@*PÝ¡»©5—Õ,iÃÃWêè¤ícaÈl<i’Ùÿ¶Ûµˆ|S…h”õ¶¹üÉ ž“¤RX*v PÆQöB{)|éZƒ¹r!?.K€]£Áx.!8îtÕœ«Ìå<^£ÄVýÆ:D"±8.ñÎöEã¢ÃèdF\Ó¾`¼f¢l³¼EÇŽ;]¢eJŠ(Žî+©îô˜'”PãÁñv«e$%©Ò·¥»53µMt;”’Ô³ááÛîdõãR6„J‡/¿}Û-‹¼E4ì°±:O*Ûa±©å« ì½mÞ#=V¸|je1¡ªÆ›½±rTd}ã‘ýÊÖ7å+iv:%—mXU¢(g³¨jbq¥•H"‘0M$V½³P¥|yÇŠzÒö‚KUÓ³Cuú5M\NG…;*XªtÔ+ã}…ùé~—d&û,ÖÈnsø…N·{\Ä2‹+¹bÅóßwß©vK"oÒFouÃU#Vr,êˆj¥°Tì@å‘€ƒš++JëpH¢^¯×Jh§ú +PÝWF;3SŸå½,ÝvøB‰Â‚TEqt…\’™ øÊk02­øâŠˆ4µ½pJÓrk@ íTÕD°czÝ%•n¦Q4ÊåK:VÂÑ}%ê×Ö¦¦2äntàó…ââuUI€Jµ"M…QŸ=û'cƒžÅö…‘VEqtO=š-¹·Cc÷ßÉêÃ/D òùB ͽÒí¨²ûŽ·k޼e4J?¼2pJÓ!ßbû¨_ÓªDÌ|,<ž±q×uRU ‹qê–t`e1^c%=x ½ûþ[¯½\³èÜÜ\ooïŽ;lÜœ+.£5¿‹/Ù1ê›”›%ÉžìqÙîaÝ^»)ÂÙØPßd¦sô¦sºoRn–.°OÄå·#_EQŽÜa(Žî‰çxÇGé®CžTáð}1V_h®ÿ¡þ‘·ùÐ0à &œò¤ç•€ýÃ<¯¬À¹2@® +äʹ2@® +äÊ4J׳±A×ëõz½Ï`,«ÛÛ+=æñxÿüà`µú‹£ZÞÜÁhiÉ?¶TÕxÚHÑ9ðiIòc4O¹>nÝ*›æ|`ûÄ+¾­Ã÷†\ ·Õ:Íçsi=Ö=|P:Šò–Ô³ÃOÆ©RÀ¶ðUy#÷D¥Ç{ô Ûz÷ý_Øð“ŸüD×õÂCᆵúÃçø©ž÷éŸÿ“¿üô‡?øÉWÆÿ¿úÉrOúÃ矾°½d·RŸþðùç·žß*kޫ𸨪 õmþê'?0w°¼nsSW,[·¬¡¼UÇûÕO~` ÅH‰g•-Ÿþðùü ¾úÉ~ð'òƒüãjƒ²¡æ@¬ûlÚnêCaØ_ýäÏ—w¢Ž¯ÞÃWò°Ò©h‹U=e=,;¬q:S¥âk²Òcö™Ð»ï¶;¯,m‹ŸOå&°ÜšúüâïÿV[¸°¼áÄÉomí¾ºµìá™g¿û¤ÚTR÷ÕÂ÷³mg»«—5͇}+™x+ˆ åe†%’ïȃ¿˜“ÜLéV+þbN^üíùo£¯VýÙSËjŽ®Ø‰Þé{ WZGm'žõúöÅÃmF…Ÿ}ÑÉ?®6¨í¤JŸóÛM}¸ÿù·Nž0jíïÞÖ‰Wïá+9‹*Šæ±XÕSÖÃ@Ñ™i9ÀZ‘?§JqÍ©ô€}l›×öøíeî/瘅ˆ†b³ª«òFÉ—¹»ª{beeeeå_ÿÑoæ2‘¯¾üì³?ý=wqW¿úò3S‘,kh`t'z§ïÝëÿò%ë¨f<ëe`ù`-µ#±ï«/?ÛoGZû4°êaõÚéÏ¡9U8¶{m߉ÞþoµL/õžýäÒ·úï(¾Æk)ÒòI…ýÚÂ÷î…Ü ¼YÚÃk|NôFž D–ÚŒŸyöÛÝÓÛi½R ®íl÷Ÿ|%RœØŒçÚvX¬²ã‡²±oGGZµž²î\Í©À¾·ý{Ƶ.~>äÊÉüÕ—Ÿ};÷µìƒûŸ7XgÌt¹žùÝÏï?Èå¦I,c£ØûZ÷Doä٩ܜ܉ß~ñó²òE•,EÊ2·nYƒ¥B'+[ú$öíÂÅs…ò6ãi£~ÛY¨íAÕ5zÓíüš˜[S±9ñl¾’³¨Ò©h'b%=¬9ÀJõ”Åp_Ÿ*Å4­Òcu®,'zû¿¯ýfþKæ¶ðÕo_˶„åÅîØ-‘OË’©Ü7Å¿÷§ßÊ­-¹¾ûêÇÏNµ´¸Ýî–©g?ÎÍ[µ…ïõùRKKKX"…eÄmá«ßºôRþòz;k OôNç¿Â>Ñ;}ö“ÒÖ¶…?~v*·ñ“³¦†,Z·¬¡|tE´…ÛÝò†äוšËÛ‰g•ú; a)î³åÆê©3YçÖ±„åÅî íÖsâÙ?|%g‘å©h7bÅ=,ê¿Õ-ëÉÅðÓƒsª˜h#Uæ>€}¯ñû`ìŠm]!¿Ó—×ïøåúŸþðùç¿ûÝï~÷»ß}þ€ÞÀt„=jnÏã”?ê{r³†'1À=  ›`ìñé@÷Á8rÈòþ¶ð=‰V$ïÏhÌRä¥/ûw}‰¹qç`UD4íûWïõ>‘³èÓ¶³‡u€{@ý‡ƒƒÊÿ”?S–"[?xRüø¥KߺzÅ€}K1æ•ßzíåšEçææz{{777ÿ^¾q;rñu"€Ã$|éš‘å*Š¢À¹2@® +äʹ2@® +äʹ2@® +äÊÈ•re€\ WÈ•re`ÿ8²777/߸M@®\ä­×^>zôhäâë‡FøÒµÈ•Edss“hà°b½2`­¾yå[·n2+—êíí%^8Ü\¯Ìêd¯ýÉÿñòï’.€ýèö¿ùüw¼Äg~ãëGµYxssÓ<‰|ÄüD]­>×ôë„ìÛôˆ ÀpùÆíÈÅ×mæº%«-Ž4Üêõk‹Ðà«‘+{½Þd2i+íá°M×þrüâ÷ÌÿÀ¨’åÚÍ•½^o•gÿë¯ým¢ `ûŒ?&æØ'éò‘ÆeùõŸ 1€ÇßÀþI—4–(‹Èàý À.ào `ÿ¤Ë¯9þÃû€]È•ùÛØ7¬såd2YsjùÿûÏá°ãøÛØK¬Á°“.ÿ'ÞÏìþ¶öI¢,Õ×`TO—ÿÓáý À.äÊümìDYj®W®Rß“Ø ümì“DY¶sms?¶/ðOþû’ùÛØ?¶‘+3÷`'|òÙÏKþ`åÊ›››—oܶ¹Ï±¯ÉŸ'?'v`2•?'0 _ºÖØŽŠˆüâ¿8zô(A¶eEQDD×ub”äÊGDdss“X%¬¯í3n«ly+Jw\¶yß à È­W‘£««¿š›‘ÿøÇßüï|ÆÓ¾3ßüÚ×¾ö«_ýÊø¯ñx~¹ôBõ—~çdIó˜Ç<æ1yÌcóxŸ<þOßûÞßùÝß-,¦8zôhÍÇ"òo|c+Wþú~ôµýˆO8d~õÇüÿø/߸ýÖk/[ì<¶È•ÿÊÑòWÇ¿[R{Û·ÿ›_ûµ_û›¿ùã¿Æã¥Ïþˆü#·£d;yÌcó˜Ç<æ1y¼Oÿú½Å¿û³E#W¶?£\È•K×+ÿ·ÿøw]ÿóÿV²ñß‹üò—¿ü³ÙùßïÊ­Íø³Ùùßóýú¯ÿúåÛyÌcó˜Ç<æ1yÌãýñØ)ïüÝŸ-~zﯞ‘üŠ3Ç•›•Î+õÁ?x›‰zÎùÎ3ÿr´0¯\—o|ã*,ã×­=÷þê¬ÈÏ2ëÏÎ/eÖŸùôÞ_¥nÜn0W6Vf|ýß})Éøw\ÍßÈ/ò4ç¿ÿ?eI~«å7Ÿ/[‹\ÝÑ£G£ÿË?e `\ WÈ•€í;R¾éϸ›÷Áx«Â•G,·¾ùûÿÄô¿Õë=Ëgf.œÞzóøNx胓a«§ »¾úNÊxèyûò§`Ù™JeõzÏ;)UD4Í66®^ï‰H¸b’”Ž«jù’Ç‘”ª6'?xPÜaû½5ïI©Å)K>ÔZsàüÉ>HzC3gÒÖ =¾š^WEÄóöÛÉo¯QÃÖ1·Ø·òIb#† ”\4 šæ©<Ø=fï„ß“7#çŽIÙæÿ ùGU_ùñZöÁb/Ë •¯ðÌ…ÓÖh+bV/à q°®ß(3sbbkà}+©<,ïU°ÜÑöK¬(𥣫ã¥QVÞºc•Î|À>õÞŸý+#¡=öÿoY’³¿õݳ_¯T8|éšåo\‹åïöýó¿÷Ýâ\y?©Ÿì_ï„?vDý»êþ?.Oɦ\ù—¿ü¥Íßí+Ï•=ª(Ê‘ƒ3äÂá¿8v@º*¹y©s‡úT\½ÞIÊsç'"Ç8àº|ãv¤Â¬óÊ•O_˜™¹@W,ìîƒ+à)æõz½^/¹2Pš(—<°ÃÎz|xÒM IDATå¢;—I¸äNK5nj¶k÷Œ{²vµö+/ŠÿýóÅ÷ñ*9VÛíRÑmÚ¤ÆýÔö&û³Wûä$܇Á)ê’Õ æv‹éî–;\pPüøÇ?‡Ãœ7'“Éʕ͞»?s}õ´å»ˆ·4~|'‘·g>Ìß5|gbû7;}af;oaÛÉöI†TÑ‹÷ŸËxu9)âݹá.’ÛWAØŸ½jø„ÙÙQì³àä3ÐOïýQˆÜ?Þ+vº0à`³™.×›+ŸìyóDÅl¹ämçãN† ‰íé áåžWÏm÷-»ø÷ò¿qàyûà §s³V¦ ìÜϘ¦Ó")UMöHÉï ˜¦¸V¯÷,Ÿ™813ôÁâ —ýþ…ißÜÛÿºª6þEäÜ1«}ËëßÚKDò;æ0~þÀóöÛæá¾jõ#ÖGüd!Y^]–’ov03¡Ý EC ß âs³p°B3gÒ%¶¨ÖÜŸï|G~öÕ8"88« ç'¬ºXÞnîä,=-±¥ð+'Í ŸÄO_˜™Y½þô·®Â€ƒä?øÁËUﯼS¹²È±sožÛÈ–W—“Þ3æûu>ã,¯^8½sóJÉHÄžùðôã;á÷®]›QþÁÌÌ…ÇwÂC×Wg.œy|ç½=3žY½Þs}uæÂé 3a1eårÕ¾w~bfæXé›hѾ[Åß >íkUÿêõ÷äM£€iÇÇwÂ3'&>üðX.+ï#-Øš˜¯íÌ™“3F²¼º,gÎHrÙ”í`(¬Ä®‡¢ïö WÅ9_ñÁúNQ„­«-îOQÊkyDnp–“ϵO«Ñ™|øðÜ1ÓK¹ò(–Ã3ægÏk \Ûwì\ÌÜy\ö¾õΫ¯¾úê«==×W÷¨óÏå&ªŽ9N~ñ×ϼ™œÏï-ʉoæÓôärY¯*ð†m-ÉÛj±d_ËúO_((îj{˱|VÎO óÄsý®<)væäâ½Ç"«Ëræ´‘ P4`{Uý`YV[%–};¸Á‘“Žcµ:“ÿŒÝctí\·Æéï ’cë€íjì·HN_èYßy)ú4ï¶/Þ«÷Òó»où;ñÏ|ñEê_6jOÙ\WÍÛT©~Óu¹?ðÅÉ3Ǭ>•DÂ×{z^-ZXR=Yž¹÷Øñ@Î\Y>T¡Ø ;Û«š«¼Úzûvpƒc'¸Šú‰]exJråB¶ÜS-o+YrQ¶(âÒü•µožxÎûv¤Ê[`Í»ÑÇwÂÉ]á´z½g¹v ‹–Ô(ýRû¿}oF鉈¬ºPìÿ^U9XõV»ÛGdƒsúŒw&ûXNï—ŸAçv5~åÓ/µ/¾7s¿Zó÷#…õ«×#÷Ï¿´—oýÇZÚï[}){?û¸z* û6ÜŸ?øâ¹ÜWÛ³÷·2‰­ïW¯G’Ûô3ròÌé=ÅöÅ.‡b_ôªaËjë="88§_j_²³:ëôoÒXáõøÎLÒ[8—È<¾6ןŒV|­.› °cŽ4¾ë±so¶/}Q­@$|ýÕW_5þç xnog•Ž‹œ¹Þóê;æ»>Ÿ¾^îºî˜¹pÚº@ ó7ÅEûn§¯þá«Ó"Zsà¼71î{pa"Εô¼öæ.ËÛú¦Øþ°ì†•Ú¼°;¡Ø•cQO(vþ+ûm÷ªäT)9Xæ[Tš)YˆQûˆØàˆ;™Y½ÞÓóNaåC……(F^6îƒq:·mF®÷ôôÈsç'ÂÞ¡BýÞðĉ™žžwTUkLD,?.ª¤^MÕ:·ë* Øï~ùË_þÙìüK™õgD>½÷W©·¨D‘_üâ"òõýèk?úÑWüçï»oþþ?Ù§ƒ~|'üž¼9wŒãO4ðTÛï÷;,‡àbÒp‡Ëw\½Þsýg¦Ó¯ §òö’3¶øäÜ‘`n¿’š5¬^ïé ›i¾üÕÉ jßwO[|'lqJäÿ&_çÁÀžz¯í{îþÌõÕÓ–÷i*ûëÇwÂy{¦pcàð‰íßÞl›ô<©ûLí}»æùݵ”­+KGú Û‹ÎXÛ?‹¸ß|±xïñ¹ÜKju9)âÝóÔAÉMwIßõñVy¹íY´W¯÷DîŸ?ï•¥›gNL|øá1y|'Üs]¸åÔV=ož˜±7#±úñ'Ã…?ŧ/„O~ðñö§2Ì3Ù×W‹æHr3…¦Þ=¾î)žJŒ¤ÔÔÖo}•ÈWûøN¸§§Çj ³Ð¢iN¯|—\O*·[R JgÊ‹UðøN¸§çÕW_ ßylnñg¥­WEi˜K¿%ÈןoÂÎ!°ÓV]‡`wsœ¬Òüß áñpøÎÏ-"c}Î4¢*3‘^ïÉÅ{¹V—Åë­Öyc‹9ÈÆfû/(sOêzÖ<ÜO€Ò“­t£e…E­Ïÿúš.;E'gõ?2EåVÔºUÏË_wÏ)ÌDÎ9J{¿|ÿü›Æ‡«cçÞ<¿«¿Õ ‡Fý÷Œ;vîÍáJsËE–“Þ3滚>ã,¯^8½sÉHÄžùðôã;á÷®]›QþÁÌÌÓáã;ï=è™ùðtî kæÂé 3a1Mù”ÈUûÞù‰™™c–-.‡g>¼Px´Üeõzäþù‰Ï+ô¥¤Ýò"²z}(×™­÷M‹bCatàñðÐÇ«ç.˜[üNqë•Gan¹ð…@~Ë{ò¦1À|§m‚šmÕvÁãìýâSµÒÏõœì) ]dõã~ãåð¿y/k»gi­U›‰å’|ggfDì{îüÄ…ÓÆý/þú™7óóoF÷åÄ7óiz²| ¥Ro¸âR¯i¢¼Ò.«ËIoϹcF ¬Úµ,°ºœôž9]³X%ùTš"µ5Š‚ožx®dëé …5QýÔl«C;ÍòÞInã³VîŒ}OÞ´H­†|ú¥ó÷ó§þã;3÷ÏÿãïTŠÌN…¨úìácfyuYŠOž ½:}!,‘ëwî¼·ØþÒéºÚÀ˰ìó³­“Üò|.ßhyþ”·RñÃ¼í¦­^k¶þÈT:™-w,Ý•}~+^ßÓêcØuýÉé =Ëá;#çŠÞJ×+×?íaü2ŸñMó„k¬¦;é8fùØðó_|‘úÃW§ÚÄsFê-ðÔ2f {^UUÏÖAÝ::¦XU?55pJN³Õë=˳æ[>äc-íòÞ½ÇçÎ{|oQÚ߉,÷å$Öe@Kü°0Y^³,å’›ÎÍ‹¼‰T%!&sÌM ½DKé.µ°í1gL_ ˆy¶’›°W˜XîJqE‰‡ Í g7AË TY4܆WbÛhH3”*ò­>“”Ò4ÂÈÅŽH ;›K÷pdÓ È<ÏC_*'rÃ¥ºtÈÉëkãÎRlþïÑNÃïd‚ÜèlwuSÉ*SÂT­e±iŒ>Ù½CA,tÀââ"\>6¶~lì…|dÓ­#»wµ©¼ZÄÔâ¨{eƒ¶Î­Ej¬Õ¶Ê·¾FA•"{ø©ÛîØqstÝÖ'2[žøìÙýûÏìßï–øÑÇHûö,--™/vwwwuu­íœ*3%½C´?Ò+B_*'¡ƒ!‚ ¢ÓA±òо:N8ke-:Kc+â`—±y‚ ÒÁDP‚ ‚ ‚±2‚ ‚ ‚`¬Œ ‚ ˆUæEÇɻċ‚ÝzeÂø”Ä1Ë{½)cÿ)ÛÙ{ÕëFNBfJÿI<ŽpK° m·¨ÊFÒ¢†Ï?´åiÚ‘ŠR?NiWßv ëÐ2‡ts˜Fr®ÃZÐ4Úª½·¹Ã;[÷JuhöËBfª2@4ÒuxßÕýRËÚ`°\uýû¸„¾ý£mÓHâÅ6ãø¡Ï|óÛ›ÿTI”jJðÐþíÔ>`Õ5²»ùaUŸ¡T¤5­²ÕmŸòÛ>çiÀê1óEU泅톗º\× ¢£úQbú3lͭݲ DƒŸI…®zs†¾²U4 Ê¼$7,†ùضö6Vª,.œ§’f9äŠä¼úfõÑâÖĬµ¶5䢔ÞY !ЈШþëÑ\{©ÓÞK¨2_Jˆ›¿]ríÆëšÑ•ÛiЮ¯š¾úé¹3‡f›-hEVçë!­Á`ÜìÜ‚çuur<.V5Ë¦Åøø¤ +*¯Ò#Se^VUYAdU¿ÂW~WÍÏ ‚À×n‘¦"SµÔì *Ùj‘çMmE¿Û34'ðÓ$¸ Y½ÆëU«¼1« V¹¸07ër™%™{)ÞJ¶dXuÇ­2½øsj¸Q3§×¼Û½y G èN¥iÑú¾S+ˆba¿5?CY9[Ô" ®Õ'èßt‘är¤7´¡´5bdU¨2o*ËÙúînÊÄEí„6Õθµnçt÷F—VæÚ'”o›yòîñ\Z«ogîê´ o¢‡•ìì¨=ôãÕ«¸û¤í®zGWµPêÁáNÄ>„Ô]Ø{~¯T÷lë‰ÝëýÿÞÁƒ¯[‡ )S펻2¯vêHï£ÏÏ|Æ+ÿP"O}ÒVÄmÌ­cx ¯VJi¯XY+(ĬM×§÷² ®H8äÕ-«€% FóùüÁ¡²rèXJ(JþàPõÌm­ã•|>¯§ý²iE0½\p$¨d›…Eñ=Z¶Ë‘!u´VÓIUΈ~ÎíÁ!¨=m‚U.²é\L!¬>³%󨩧nmeTÝ6ýŸ¥„qN/?7ì¢áÆÍ´ Øt08ä4É£ÊR9•Ëçó9óñíT^aS“ä-ÏŠêäxœOjäü+€Ë)Î9‚Mu/Éçó#0]t“§ªÿÈV½Ko5–Ó ù‡ÛÖ\ª@P…V•XN;Qªž³íjbGѵßpôëä6Õ¶[·êá<îNΨò°¡%Ïfå¢|ód’OGÊ–¦yúz`ý[Ó<ÄÙQ»êÇ»Wq+Ñq—-ÿ ýž@z0»±qéy,=¿ÏZ™äž$cüß+x¨Ë‡}ÝÕR»m>>ïl§¶ô>£¹¢88ŠÚ{铺"Îq³îá)´.ºZÓÇÊÅŒ 8k­'¹]§Ê?¤CÓúR¹4 L4>ûü–‘ÊïŠg¦ÁxŒ"‡ìn 8±Yïw ˜^ke`ÓUjÕ1 V½È$%e²¼uHu$óW…g&u¨Ž3½cpKÖl3½Ú!gíŸj©ÈñzÕ“|ÀâJcSeŰVPÊ©¬[þ0_y%æ²`Óùr<Êç&OUÿÌöþrɘcèsjÙÛÜ·5bDUh3ÓÐo-lZäüzKBѵ¿k›[›jc­ÛÕy¼¼‘8‹A6YPåÓ÷ v8tnÍóú[üzòíÌ]ß½ÌîDìC\zžnàôRïà¡q&æà[;ßvJã$„÷ÆuTÄCæàÃS8 ÐTÓ¨{½rí¢V'£ ÅuÿüÝo±-á÷}ÒŠ›²‰;²\˜›Ú+Lè¹Á@‚&šx”4ë.ƒi•½`LRR’ª÷ç¡×4Ä ›m¦f¯Wöé~¶÷CvFK&mfúGzÀmåQqb"½ýAôÑ`zÖÓ3II”y^ˆD‚|`Ú`[ $g<Á4è?vµ3ÁÚT{ÅË~­;ÄvTù-èjšÔ„å!èT^êëCÂ:MÁCã>Löàµón§¡;Iózã°:ßá)”X«é[Þ¹«•±²· Gb¢¬²vϱ^gœTRÓ,kyPLÓeö™j=±>nTòpußÍyŽ×õD”Á¼Ê^•ùÅô@‚“J L‹jb†ík¦°lç'Õd¢4ç\cen4Ÿî)ˆÃ"„•ç5`™ª­ M+ˆÃ²ª´ÆˆÍƒ\´CíÁÛTûàÓº)µÔ“µÞêì@ÂðNvªFõzRGÒ¸³¹åPWíÈí´õNÒ°ZBèpšçxäšf?ŠT‘°¼T!LÎ[®³ƒæÕXª,—%»eús™ôú¡<¯y'ð >t£ R£–Š}ú«¢ s³ÆŸA›/Ë0*ꉽ‚dX4}´áöz­fj00)ê/‡´‚âúJ0H†ƒ©rFÈTZ‚WþLRRø¹aª¦azéXP\ÖäÍŽW— j3Óñ»bm^Õ–·†ªì³Üнh›Úƒ·©ö¡ÖºÝœ‡Ø/Y´ÛÞÅõTùÍëjB,1,q*Ùí§Û×׫„ÞÑtP¡´·žß{¥Y1`‚ú°³tzw¥å-£p5=¥>ƒGÍkƒäŠFý†§Æ`ø½ å¼r1#LUÿ¡oŸióR‰—y±•¢Äë9)É0II”«Ÿ%ˆyò™ù–&>¸H ™2æýÙ´Xâ‡å¨’fÉ ì^cÝdžç¡/•¹á’ñjʼn¯ixy¹7•K3žB {… €åÞ¡W”x°Ûàuûnˆ^𤍩¿÷Tpb.¦ð|&YîÊIlKÌЫ]ê)LD–—Ä0¶Åa’üÀ¸3-¡óÊßð2qw–§“"‘Þ¡!怨2‚PõŠ® ·CÛ‘Ì׈ôªfÓ¹yÑÈj`TäŠ%o»¹‡UíTmª­dbë&iŒØ/9Umhµª"¢Þ\”ß '4w÷@ßþ! qíüm·ˆJšèöõõ*~w…£Øà-ÅÙ‡Ø$!öüþ¨ãÅ´_ðÀ‡ÉÍÄÅ]mµóèʈíÔœžFŸþ]e¨-Âçü—ŠÔ.؆'{¹ 7ÀZMÃZƒÑ‹‹‹pùØØú±±xð‘M·ŽìÞ‡VCú0iþ`Û붪QLF%Ô4‚ Þó‡=l4ãD…•=!(ŒñbxŽo™ä-ž²‡ŸºíŽ7G×m}"³å‰ÏžÝ¿ÿÌþýn‰}üˆ´oÏÒÒ’ùbwwwWW×ÚÕÒ¥©H¤wè ÊH¶iÔ‚ ›V@&~ÎÔ>†øUÕJ ­”;uxZ»ZQGûè%ØéáL'6A°çtº}„Aë\RÃSAAA0VFAA¬E ‚ ‚ «ŒÅs7ý^ù(À{Ÿ{i ÀÑÒÂäß¹n&Ǭw͇f^Y+ˆbõÈA±z°é2¨2o>Ü]•y^¨!\MªÊ[ØnlèÖWVBÿšµÁeé­ÙŬñRÌ¡bUæ%¹áúšOÓ ‹Š„}²ïâYo>mBÛʨ¡µ¿¿5U—ÎÞˆñ™”mGüÏNÏhIc`SKE.l»s-9º~ ¬´üÍs°NÿÂ7`õ/à‡Ç`ëæ+®¹jôö\żéº×Î^xíÜ…ß^X>aùüÅåß^X>qùü…eì¨Ö+÷ÄúŒsQæË³s úoÓypÚÌt|4?Ÿ$?@° N¿ ÎÄ”Ÿ4¬óªlšÍ2žzMj‘·NMIS‘©ÚyBö•lµ‚Èó¤‡fGz­ Z`+Å‘¡V+Oç¦iŒZÎÇ rU£–ÓdáÉÂÔr®\\˜›u90ʒ̽ï4Ǽ…åÞŠ‰]4ãÌÇ©R¶9I’›JWÝ®øYç8Íw`ùM’ùsñmŸ&ãÒІîL#[ÐÙQÍgQ`Eíî>IÛrÒÅBì'nJ#:€_÷¢6¤L³'Ó¹½›—:K§ò oyœ]D ¹.Ž‹OÏTÞ‹–€ã¼TàÑä¸Û@oA*µ¤é h’Ödvµ‘mF÷é¾</nÇþ‚[¿°àÖ=Öj¬ßåÛ¡ù5C·.—П—µŽ†.Ä"ȪPeÞñÒÏÃĶ¢]ÔNîgV÷ñ¢.ÖRÆ-³¥˜™†ëSæ5`-ÓÊêäx<¡ .gëh¥œ©mb=»=lВĉJžÕ böÐ!¥ëvëîZ!;Ç+yÖp %ͦLgÎF¶ÙTNQ‚9Ò3II4~kDéžk)Ö U9 #úo­ OªÉ4[Ùð°:‘¶Íšƒ*KåT.Ÿd¬“®ršZI©È%Ò®•% S˹r1›yqÞ~Ä¢=ëªRgÂùrEBR5UY‚QÓ ã6»n ùØ4CÔžMá®ú±–NºBemJ=ÐÈP”J¢’O—¬ÚvzwõmÏ&ãÚІîT#[Ðî ¶6{Ì|½ªv—^ú†®”<ZA†x™‡›Ò’Pv/¡(“¢jê1²ÄÒi}ÃÛÀ]àe_‰¸¢Ï,«%H$Àtfa£‰Ù‘jC¤mI2@ÝAsH“Õ4t ÖatšîËwðr–äã¼ÉÔÉñ8¯h2OÊ¿*±œ’f(:4¿fèÖåú §m4tq©AÕZATb¹|ž1"nàž³ì΢j¿á~ñëÙyRk]¡—]¹y‘/¸7”ìèöÁ0Nð^˜›GÙh|vnÁr”»VPŒƒ»ÙÁTY©>M3•LÎõ˜$J“ž;úR¹4kÄøÏo©ü®Mƒ1!N>dÞ-'’tIϦEäB!;Ý?Hös†lºúÛ4•hR29ᓌ®L 9k1÷ä$á‰Â˜r®^d’’2YÛ‚>G2;$ÌÂH剀TÍžX_Ñó´wg>6ͳu*œ(¹³tç•:¬Ó¸üÀ‰ÕôÌöþ²MIn†ðn2®ómCwœ¿ùXÐÑúÜÌgR»‰4¾¡Í—ãQÆè*9âHà¦4‚$ôÝKƒÊ¤t{7u9K§öæ» }fY-EÿPÇhR+k“„„²ƒ ä~&£Ò0I~§Ñiº/ÿîÑ!˜9ìÐ J9µ“uËæ "¯Ärn­Øáü~ÍЭË%ŽP¾*m0t!AT…63 ýÆ ÒÀ¦EÎoΆP´CíïÚæÖZW}¼hå¼²± C•ûbƒ–ߦç8¦×6Œ5LZAœŒ2„¾ž/‰Mò?·¥vÐ P7•w”¼07;;µW˜ÐsƒM@›žL)ÃãqQ¡;MÐtž¡õQ³/ƒ’fÝ…§†IJJR•y±síæèUJ¹îMŸuá…Hd€|CXë爒;K÷•§NK5,\ýÀtf:n+·C423ØAþfž (RgR¬}^cyONôIߨ½dÕ J‘¶Çp“„¾{iP™”nï¦.újRE0úà]¬³‹°«a Ä‚†>šx ô½C6»§jM÷ȦÊ!c,õÌŸIJ ?7Lõé™o3ôír[ºÐ«Ú²†C•¥bEÛÔ^wkíÖÒ[©wÜX°ÂDãËËúoû7{Uý)ÙÒuÖhYâe^,d¥¨íÁd¤zx¶ÅÏ RBæ…Lj+:Ø´Xâ‡å¨’fÉ ݘi &!½ñ|ÅèYë/Œ-¥Øç´Ä’°W˜XîJqE‰QIë«Ó…L„(§þaBÿ+Kîn­ ÿ3Â,/÷¦riÆS6a(ö×)¯›ß¶,ˆŠ×c:…J=¦ûœÕ¬= æÙZ*¢n鳇‰’;Kw^©Ã:AgA‰ùs¢A¨%DC§ƒühA»3¸Ã‰¹˜Âó™Hd¹w('™]€à“¾¡§á…H¤whˆƒ9‡Ã¸)ÍUŠî…^™®®KS5!]Õàëå( ó<}©œÈ —À¿‹ðmŒLRJ7g4©µå幨ÂBÙAsH:“y«È!¿’¨«ûjhjy`\‰™Öàzåo8ˆ¸;ËSÈik†g&t¹„þ¤¡K# ŒŠœñ¹ª«‰ÝÜØªvúÖÚŠÝozÇ_†’],..ÀåccëÇÆ^xàÁG6Ý:²{W‡ÅüZAt~?ˆ ÒŠN¹™[œjq2J÷êu…6[ ÖývÂŽ°= àž»+Û ‘6âá8v÷ŽøÖÍWüÁ“™øŸ†‡zõÁ¿rÛ_yê[“Ò¾=KKK溻»»ººVÁׯÓCïÐA ”Y-ñ·e»ßVÖ¨}©œ„ 6Ãi†HÓY±r¸_þ!‚í‚Ø&äYG·ÖúCÈê³ÍOJ[J§ŸE‡Î€`¬Œ ‚ ‚ ­eò™òäšiçõ¡]ˆ±2‚ ‚ rI3ø¶øà'ßNüÓwž[ÀXAA¹t™|¦<ù7ÿê¼ʼrõ£ZUæ%°ìycù“i |õŒpYÈ[É„tV›|áÛT1è3·è¿œ2m¯î´U£"ÕŽNÔñÝ=ªùªh3©TYÈLéû%óÛí¯u‹ÝQŠrˆÔüÝëjhqx œi>Éy¯1䟈Dz‡JI†t¯3ÿÚ]P¹Ñ( 3¥o >j®®>1Os¯Ëj 8Ξ„¤ ×è§™ª¨+ÈkÈîaõÒ\LqŠ¡G´¯]l¢u:TQFÏ©IDg¹†bíniÿmé –{‡\žÊÙ´¢¨ò8Mø(1‚ Òî´p½2“‰‰ѲZ*r ón+l‚“jÛ‡AQ’8QɳZAÌ:¤tÝn=~]+dçx%Ϩ2/«JšM+"˜" g#Ûl*§(Œ}à´Ü[K¦ÄáêC€å^Rþªœ…=éF­ *±\>Ïap =0MUú’HÄ=XVKH@±dŠ…BTÉMWEs±-ÊÃ=¼Å¨„†ûÒ­Ó™ŠÒ{†¾þã#LEAåT.ŸdLÍÚ½%QÉWfÏ}#‚ —"¯ž½@<‹Äû®H%1IçYêÅŒ ‚ÀW¡o:}ÆäÏ>¿e¤ò»ÎL‡r[?¯. 8‘j©H%Y­DÛ½ÄüÙt5UÔ~Ó᜕)ážX_±D¯M6ŸžÑÔXϤ_ª¨ƒ6‘Š(†‡}é‰rv´¢âQÆO˜Êó6¯‹–ä9Ÿ¦À‰Õà˜ìä‚ RõíƒÁ¦ù’XÐ$Ë)6\ÃïýÜÇ<â:Gß…¹ÙÙ©½Â„ž 8æ·|4ˆ[þ¦ï ‹ s³ñCz*‘D™çËÂï`Y™Ñ¢sH”V•*šÁŠKEi_¢œ«IQ+»Šzž2DAVq¬\–y¯¸Í¶ä±(ƒi˜gäôÄú¸Q¯ãÛ}4C­ J`|Õ¤Ê|É_ÑÖ…%>©ûŸÍ*]¼ ®:U¬J©hìÛlë´XQl‚Sæ5`Ûåa<š Añ"R÷ì`ÿtV){%H•¥êz U–Ê©ÁV÷Ìöþ2éEly^óNàAõÞºX˜›í3^gkóåZôP{g¬ÊR±Jox‚m*·E“UÑ©RQÊÙÁŠbû§‡iVj± ®¨¯öÒ J‘«úµî·ZA4ç_”ª«¿Ô’)1‚ ‚4Dg‘0É‘þéáY¯’( ‚ ÿk@Ì'[;“Ä$¥„Ì ó®ÏlZ,ñÃrTI³ä6Ìo‡-÷6"€°W˜XîJqEIß9!›”£"g|–W{;< 書•™nŽ*šb‹ ªÿ5}ÃR5ˆÓ¾ôrB+ŠIJŠ*ó|¦ºòÁeÙî£Â„¾k\S@æyúR9‘®æÏ‰¹˜Âó™Hd¹w('±^ À”0åçç#‚ «–.X\\€ËÇÆÖ½ðÀƒlºud÷®6•W+ˆY‘’ šµ „gZAxøŽÝ½#¾uóðd&þħᡇ^}ð¯ˆû`œ¿°<õ­Iißž¥¥%sÝÝÝ]]]tƵ1ÍÓ;tCC]EèKå$Ô‚ ‚ H“è X?ÁAm ˆ[sÀ9eA¤)DP‚ ‚ Bd-ªAAY}ý^Þûœ˜|¦<¹fÚ-%³ceAAä’áêuÏßvÇè=¹ ŽÁM7^³nçn‰Ÿ)þ¢‘X¹ú¹*óXvN²üÉ8Á˼¹’* ™)ýç@ÃÇúYKì8”ÜEÃ+)•ù^‹'”S9ÓAů AæÚAkÁ¢ Õ-‰Y]! Ó¼¦áÌÜ^wSõ[, Y¤Vîò¦Äáñ8eq#‚ rstÝuW­€7nºìê.w•Ýs:¯ÜWVd•%öòŽ3®µ‚(Á¨RÝX,äßÞ¬ÁxV0ÔnDróiðØ0;=£% S«¥"¶Q9P=ÜïÀ<Ú½£ýYÿº´=ü°æ[-‡þp˜â`.ìÄ‚ H[ôÛ¾8?SdªÞÔÉñ¸XAÙ´Ÿlüh8U6NçRe^VUYAdU¿ÂW~WÇO^¾v‹4™ªïeOPÉV+ˆÒ2II,ï2¿Å¦«2×òt-¨U°i‘£ÌÁë^§8F°¬–À:–Q g³ú[K áâö¾’P¨®ù}s XÐQ;¢é©mÝ.’Šò¦ò Ïë¢%y?ûr¦c¡?ê#‚ A}û`°i¾$4)iWþx/è§9æÑÑ9R.ÌÍÎNí&ôÜ` AÔ~an¾g¥ÉœIJJÒuá·éã?Ùâ ÆGÿ.9xÜë –•-:‰4@)|£P:[“ QŸ$”ªkPþújç4}}·$+»Šzž2DйåÍ]ÏýäõKY©wÏ8#Zæ½¢%N*©i¶:D¨¥"—H{gæYt=±>nTò¢|4˜>\i-z]°æÿT™/ ñ¬bö?›Uºx @m¦QVÎ ±v!›~%$aœ2¯Û.¾ã±š‚ «‡úÏícû§³JÙ+y= *KåÔ`+#f{™ôÒ´<¯y'š!qä6Þ×j¥næj©Øg¼»6Õean¶rU›/Óɦ[¥"Mn÷’+´â ¶ÙFY9CÔ+‰¿ê‚É_U]ݵ#š¾>WLv°šjA1›àŠú 2­ ˜>©ÐÕ¨DsþÅÚw“Žï/i 8©Œ¬8 œEÂ$Gú§‡g½H¢,‚þ¯1Ÿlí¬“”2/dÌ{³i±ÄËQ%Í’Ø#Só›\Šô•9-–x^ˆDz‡†(÷‡"eî¶}µ®Hs]Ø´Xö ˽C)®(ñp@I¸È–›‚FE®XªŠì›ƒË½nJ7Ç(PÌSÕ,/¸W6\C4" ½êèå·¨®‘Fa3½¨¤ë¸ñæY§$LRRT™ç3Õ•.ëgt• ‘ååÑØ°M+ ó<}©œÈ WóçÄ\LáùL$²Ü;”“ˆ:®´ÍL S~Ë-%FvgÃ÷¾¾ù´~ö98ÛwËÉò•·ýiõ¯ë®^ÿ…}oøñÿ†µkOq»æ?ñÅ›þdƒ-ð]÷ü/¶~l×ì‘ã`ݬ–—ûÞóæ_Žf_MÜi[ƒqžwýö­ÿÅO.\Û£íùäÒ}ÔËÚúqþ_ÿy5Ùš—_êãÿèçß<ñúÚ˪oÜù_þóo¿zö÷o&f¢sË›»~úÃW®ìãYsj#uº`qq.[?6öÂ>²éÖ‘Ý»ÚT^­ faDJ2¢`­ NF¥U? ¶¿]:Ý—ˆ#µ{ì‚„‰Ûrá+KßÙ²OxñaùÕ;î€+¿ô|ø?;òÚm;ô ø÷v¿maoæÔ]ï€Å§®úÁÑßú'gV[?¶ë•·ï\2_ì~úðÕO:ñä÷m¬ÿ?Ç÷Ãw¿ø×ÿðÊ[ïYWþùÖíúåþ/¾òÖ{à÷…Û~ùñÇôÒàšÌõd¼ðé‰ÓwÝgÙÇþµ'{àÄ“ß÷ÈD/nipèôÀ»_ù¯ï|ýwÖ¡t4ÙÃOÝvÇŽ›£ë¶>‘ÙòÄgÏîßfÿ~·Ä>~DÚ·giiÉâŠÝÝ]]]tƵ1%Ó;téQ¡2 ¼ÚC ©}©œÄ !P~A. ®=üèÂÿ;ýŽwéÿ<=ðîµ§^Ú|øóz´zÝ—?uòC–îMé]z÷k^=µñ[ÿäÌçW|pë_Þÿrò}¯_ö;ú•®ßžc¾üð‹â—œ‰¯{ü3'ÿÛ_Ÿx7œ½ñÍ¿Í^;ñ˜æ.Ý÷Á«¿*Wcåî§Ï‹õׯÆÊWU^ܵÇ;ß°R­‚@Ck0ZM}.sI}ÙÓΕítCà'b+«|œSFWÞðܳsŸ>l¾rzÇΞ/>¨ÿ¾òÙ©_þ壿¿žzç{¯ÿüÇœùœ¹é¶ßné½Fùò¯ÿb¯~ååË6\m^«\ñoÏüòcŸ¯þóµíoÝò‰÷é¿_N¾ÉŠkN-^ÜxõúÙçº.^XÚùkŸüÛË^8ß³eÍ©Å+ŸzñS{g¢óÊÛw¢}W 7G×þÚÑÁŸØðý™ŸN=~duÇÊ‚ ‚´‘WN]ÜtùÊÅM×DN¿¬ÿ^³ôë‹×\gþë…«¯sËêW|pËþ?_|÷—ßpeäµW6ËŸ™ÿä—‰)×¼üÒ›Þ·\êê2J¿jÓ+o½§ûOþú/öv?}xéÏÞ/ßóçÝÿüÄÉ<Ôý'OÝ}ÿòºË½3Ñ9MÚwÕ°aƑݻ˜3ÿ?€;ßrëûö¸¥?ceAAÂaùªk^~ɯyù¥å ›ŒÈµûÚ5/¼°ùúZ´±xÒ-«Wï¸ë|ô†k';ù‘‡6屋Ýמ¸˜òâU›~ñ_\ÜÐMüëâ»?Í ¿$|tSáþßüôXù÷>Ðòßìþêã/Œý#M&`ÿÐépNŸ>½éÜ98{öìërdÚ'CT"‚ ‚ øÍ-·_õÌ¿˜¯\õÌ¿üæ–Ûð÷ößþªù¯z½ûþÕû7å±uÿïg×~å '?tÀ6Ñ[åµÄ;6|÷i·L^ûã·GÎaþî“g{o:¿9 ç¯{ão·ô2_~xù Wží»…&©/VVec“QU¶`mù“à<ãZ•+ !|]-±ãhPr ¯¤Tæ{-ž`9‡Ûé5!ÈÌ &æ¢ y´ˆ b¨²{-ÚÇáÍ&î6è¥Ø&7–‹F¶ã×øXÏßîßðݧ#g^‹œymÃwŸîù⃿ú¸þדyè:Yêžœˆ¼öJäµWºŸ>|¹úCÜN ÜwþÚëo÷Û.to>uÏûÜ’üÈCLî¯6~ëŸôB¯|v*þÑÚ.uÐÕµtojóc/ï|õÚË;ßÝ¡Oë_õQe‚ ‚®Áè++²Ê÷Qrö«D FõC¸Àõhæ€4øÁÍ îÕˆäæóÌÚ¡.>ÌNÏhIÃÔj©À…m”FT÷›-á]Óªª\k&íàð¾·xˆÔV>é­Ø)ºæ@¦sË›í³¼ÏýäõWï¸ëŇ]'Kú‡qçún~ñS¿–x‡žàÜ 7þÇ— ×a_ôo>—]vê®÷Ì‹¿ñ;ÿìZF$òëÔ¾7>œ~qïg^¬qKu¶÷¦òß}£'{ ö©4\¸pæÍ·W£s¥wíÞ<þ9óŽSw½§çàè©w¾—>i0VŽó#1ÊØ@‹ÕA•M‹%~RM6Úç›ç(%DÈd¦``4Ÿf ¶ja”V‡'NDL'JHS‘HQ?à€ ’.¦ Ïç8)À+ý‰H¤wè`åiÀHÙ;4ŸKØñº…tBÁÂܬíÐ0G]´‚8<~"€Jžn*ó™)ýd‡Qkå\s¨jƒ|¯5åâÕ`Y-Çyé0°Q\ûhª!<âaTÍ¥¦ªÌ—þXI«\<‹žã-¥¨‡øñçá&žBZSÝ„ècª,d¦ rÊ1û-žÑ›Ï½Û‹WK4•årl‡¶Ÿ”‚Ñ8ä+ÀÙ7m+é›n™œgb?ýÁió•å7\ù³©y§ln™àá#Hã±2“‰‰ѲZ*r ó~Wl‚“Jjš ¯Ç/J'*yV+ˆÙC‡”®Û%­ÄaYUÒ,€VÈÎñJž5Þ*i6­ˆ` zœ Œl³©œ¢0„Ù]ÏôZA6žT9 #Jž­ C<á”Üq‹Kæ•'ܼȋóµ‰y[]ôÆ«%Ä‚D%–Ëçcô.A“C%Ä Ýk'‘ˆ+z°¬– ‘ÓAkaE=ææÍ2„çä®K‹Pe©œÊå“LÕ%m5€.«»8ÞÜB´‚òüî{ã‡gë­ ní3 ÛBÒÏžn dJç·Ý{’˜FÛu4d‡§.ºÙæ@ö↽÷þ*õ‰3xk×…óWÌü¯¨ôÑ“yÕ‚¬ _ùÊW}ûÛö8 Xô½±žoû˜$ŠyEªQ\&üÕ´Þô¥ri˜h|öù-#•ß•qfb=•0½XrHå–€ÉKEüÒ›Šž/Ç£Œ¡+ÒúÂ->Ò2II¬m-°i®Ê\ËÓµ þíÕˆ[ä(sðº×)N">=£¨%°N‡‡eÃÙ¬þÖCжµTäx=ï$O™;˜*×òQ'Çã÷ßÓí-­_}uÛ룎€÷½Ú …Ñ½Ë ¤í`‚ù9|=†nŽ9¤½xyçû£Ÿûï7½eã¼¹îKk}Äv8‚¬842Ô»g›æKbA“,çˆ5²„´2AS9¥ \ß´š1¢Ço…¹ÙÙ©½Â„ž 8&„|Ô~an¢ÁêN“9“””¤ëÂoÓo>²ÅŒþ]rð¸×,+3Zti€RøF¡t¶&‚²EÔõå+•3ÇB« ±jLRež,‹—¨Åõº7P{¡qþºålD0J‡KŒ«‰ +Ì©»Þ£p mÂ>ðó¼2e  õï¯lļW´d[ráX”AÈ4ÌSÊzb}ܨä1Üø&h0}¸ÒZôº`ÁÍÿ©2_ .@ã9XÅì6«tñ€ÚL£¬œ!·ºlqiRM¦{ J95’¶j¯IUcÓÖÅKÁªíz/½&)S6"g[ùXóÌ ‚xQ,9Ž (C#û+³ƒýÓY¥ì• U–L{ŠIåÔ`+{~f{™ô6³<¯y'š!1ž5^¤j¥næj©Øë±×ean¶rU›/Óɦ[¥"Mn÷’+´â ¶ÙFY9Cø´6ÁõõZA)־̬ÖÔ£Ù”Tur<ÎSlCSÁ:të'$Õ½ôÅ5nt7m‡ÖÝ>PÑ­7‚ b—ÊÐй}Lr¤zxÖ+$Ê‚ èÿóI¦¥ê`’RBæ…Lj+:Ø´Xâ‡å¨’fÉ ì‘©yŠô•ñ3-–x^ˆDz‡†8˜«WZóŽ •ÕË¢¢+Ò\6-–„½ÂÀrïPŠ+J<¸ìa|'¨40*rƇwT9¸ÜëV¡tsŒÅŒ0Uý‡¾c@K  Eèµ&ô]X°›Ì+’– •£zÅâWA_ÝÖ\k@̳´BV[‡×½ôí…®%ÚÊ"ÔÓªí@&† ¥î¢›jA¤)tÀââ"\>6¶~lì…|dÓ­#»wµ©¼ZÄÔ⨻1'£ÒªæÚß.dˆúvÔ½D< AAèÈ~jd÷®Ó§Oo}"³å‰ÏžÝ¿ÿÌþýn‰}üˆ´oÏ’õìîîî®®®µSecÆ¥wè Ó!¢BexU»¢*óRúR9‰AC„"³T¦œT¾Ä< AAV€Š•ÃýòE½*Û‰†tPß%åi‚ ŒÓ§OþÚÑÁŸØðý™ŸN=~$´X9{ø©Õ§¯Ås7 Ó Ò®^÷<*AdÙ}ßÝúÿ·¾üoðxËö›þèC÷»%~Ô=Œ&ÇÊÖ+Ÿ>}úßçϵ¿ÊŽ~¯|÷Ž8º‚ -èmn»cêA$DnŽ®Û°a}tV¹k/ãð׎ÞvÇŽ›£ëÚ}ô€­›¯@oC¤5Ý:*A$,í¨þ­eb}^¹‰±òjåòßYƒÞ† ‚ ‚„+ïÙ³çСC+#—Ÿ;üãOìþ#óÿQ'‚ ÒV´ 4]HšU Ó7¬[‹Ž…òóÿA¹¤Âåµôr¬…þæÜEô*AA0\-V^52œùít)AA0\-V^]áN "è<‚ ‚„+:thÕL-Ÿ¿¸ŒVGÐyAd5±Âk0VS¸|áÂëèO:‚ ‚` f¬¼jÂå Ë85ˆ ó ‚ ÊaÇÊ-¦œ¿ˆSƒ:‚ ‚` Ü„Xyp—œ"t r½¶ÿ£ó ‚ È¥ÆÊâJiö×¶ÿ#‚ ‚±2œ>}úð׎Òçò£~ïGm_Õ«×Á~ø<šAÖô6?BE ‚„JöðSô‰«¡ìàÏNløþÌO§?N¬¼û¾»7lØ0²{šAAéh˜3ÿ?€;ßrëûêÙ£Âu^5‹ ‚ ‚t:›Î€³gÏžYZªãöjAAAˆØç•7ÌLo… êAAYl˜™3VÞx|zãñiT+‚ ‚ ‚ ‚ ‚ Bæÿ—ä+ ÙÆIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/02_ignore_pause_timers.png0000644000175000017500000001045312032647166027346 0ustar ebourgebourg‰PNG  IHDRÉ:•¢êåsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ5hã«IDATxÚí\yxT广³Í–™Ì–=!)I@À ÑîƒRÜRÃâz•RQ/J½­½Ô‹Õ§öööJ«-ˆ VDÅ%HµŠÀ½&T‰&“È’}™LfËd–³÷ !b–!™„DÏïyfæœo9ïû;ïv¾ó(P01@`·ÛA(ˆ.)eY‘…‚¨Cá–…[ ¦#·0ÆŠ (vKÁ´âVllì´Lq=²±‘¬¯G.È2¶X¤¼<);Šj§·§ÑŒÕ–ýûGލ››aHoŽ›™é½â × 7°™™ŠŽ/ÚÍ?â­Š xæ8p L)Y¥ åÛøÌY¢ÑÚ£xª¦M]âØ0ÉàÆá׿†¢"EÓ“M,„lÛ¶mð¿+V¬0ŽèS^|ñʼnžÙŠ+öìÙ3ðSÓ×Wüæ›3¿ø0æuÍ%‹ëò‹ZÓrEŠþn[ZäÓZf×[{„8@èÔå—W––²zýwG™›••59£L­ \é‚ (X³fÍÀá²²2“É4jt?¸IԞùQŽU« £CÖèzþõ—®ÛVÇš FëçŒ×iÙõgëÎM9GættÀîݰhÑwGÉÊÊš¸kõ$Œ2ªÿ™­ \)ç¼ó"ñ’ßm5”•ézDÑ7ÑÉ_oå’fø|5&÷]ÿÞvUiÎo0ÔVÂ’%-[øåË¿¯nhêh­_üÃÍrLž´vïÖ­] ¢ØµâÏ¿ßO¬ ›œqâÏûº–ÿA·f óî»ßcnM ­M}n%ó ÜsÈrË¿i|ä¿1I]èÝøóg[ÖlYÖ­]KUV*ÜúsËáøñŽ íw<Ú~çú¨tÙ~÷c·= <¯[½¹\ ·~¨ÜZ·NÛÛ(¼²õg£ØkóÚ§|s‹‰®.í† ·~ˆÜJœôÖ¶´¯¿†“'#9ßåruwwcŒÃ¥æ°|BñññV«uzÕ ÎƒÄ‹'iÕÁÔË>­>é÷žZ^˜”§ÓÐäTåÖ†^Š5É\ËÂ¥ùÚ–yí5ð.]RëFâéî¶Û?ÕªõaîÒ9AQ‹CŒ5»–Ü¿ÿUxå¸å–‘µåñxÚÛÛyž‚£A˜L¦Î ƒUþÌÏÏŸ naY곋~ÄcÜ ‰ ~bw¥»x;'SgÕ‘zŠùÄ‚{WkmÏÇ\¾ÕrëúGËw¼]ÑsA¢?þ¼7¬áœ^à©[M¶=Ú‚ÝžÌ-¯×Vïp8ãHuÜsu)À£«­­mHbÏómmm'ZfþĉDZg …Ÿ555ä1˺N‹®FÎÑáêp6ôø¿˜÷Ÿ¡ö׆ªNõÙ{|ÂÔâ±ÄƒÂ*š+(9äÈÜüûŽoå"™ r»Éº:žVç/ÍøÈÁ-ú ƒÙg™÷ñqá@e{[«ÇÏò‰ñÍ+(ª«ÉáKü#ëí Žâ·ÈúzÀØ‘Žif´QdÑ/û<¢ß ù}–Ôv1õÓÚ`íiŸ»ÓÃJ£%=2£vÄÏYÖ “-º\®Q‰5˜^N§s5¸Z¤^¦Õ- z€ €’gÏ|î÷jf/›—t~ÛP†\•u¾Käy‘µJ±îÒ—ŸÜùfþ OÈÚmm|⤓€T«Êoïi-wß]ž<{îyÄf€`Ù‘â?„‚Á ,Ë!•JÅqœ^¯ƒA0 3`½(ŠŠ·Â&011q°ùŒ0Kž(J"/3Hfô¢½Õ’.¬¿vÖµ ó2îxüÙ¼Gö¬Ú¯¾¼² eÍME–)oI¢ ¹Õ*{¥`X¹»¯¥_©˜#c~¦}ˆÆZ-Ð"PDÌaL ØTqï£Ë®®ø¨®}–¦™¢\CQ®!ÕªjªcŠž(7«ÁòÊÖ!RžY£Ö]ˆb04 $IP-l?†!¤Óé(ŠbG$hä1xø§Ùl8d6›ÃÄŠ„7cК ùG¬‹ð|vÕͦ×6þä§Å¹éc·Ë'Ê}‚Ô›UüÏæÔ?í¬¬wø¤)`·Dqpsš¶W µ 7¹dÂbPó?ÂÞ¸!Æ5@ìMŠ2P$`@xù›õ—-Þ\zeF¢•>PÕ×ÛR-wÞD©tTù?¸ÐKãˆÃ¸_„I’‚ `ŒÃÞp@yƒÂñ¾J¥ŠJÍÓb±0 #˲Ëå2›Í*•ÊjµF˜(ŒAk_Gl{|uzC”m Õ”(ÀüùÒ0>1>>žaŽã8ŽÐtɲÇ…y>Ä0LBBÂx,–Íf#¿íiÐYôë‰ F&ÖØ´–h8—­·{ûì¾ÀYñ²Rp}¸Ï ½>¯Û×”:­ÝÍú"áñÔN%Iäf‘Ømמ|·t zýõÿ¸»pÖèé†pÝu`ü൅(K2‹dŒEÑÛ¤âkn±ä{µ@ïüBˆ?¼ìNÁîú©EÜÁwJJ†Âjµ¦¥¥1 3ꄆIKK³X,0>gí=ú6H’\°`ÁDÄò'N”¾l¶î»þVÞèô†®$,…gAÈÑ Þú¬y¦L";=v ³He¶›n~Ï–Þ½ëõŸÿçmW¤F(b~åJ0~ø†† wŽÉhüŸÿÕy<Ù]sIžñ™ ¥wݘþã£_w¹ç@lõ&]â/¯½-ÑJz¢9Çz¾e¢½Në'oÜqÇ31™L£Ò+L¬ðû-ã‡Íf#blÄ›Önž›c÷ïÐý¯x±¢¦ª­{ÝÛŸ°!,14`DhŒ„6ŽåûfèzJlÔÊb£-/ÅI ýxëäÑϯ¹ëFAòÌ´=»÷é…Ú\š9³#//¥¾¾èh9ÜyÏp§e§gýeã !Š¢IÍÉ0Æþvs'Pm;ö\öœ?ìþj]É+’ßø+Á†ÚæÌIËÉᤠ„¤îáϱ¢¸Âf³E%ߌO,]è²êëì®póЦWch4&°x|YñŒ’…iI&=EEz±²ÆæÛ?žæÇJJRUîkìh½e8Å«¥ým«Wó­­ì«{n>ð¿G@K§•^‘ñ݆êöÆä7^„Ž•”¤š— d6›eYv8C®ß\‹ºèƒÖôÚ­+¯ "ô—#U›|¹cÕõ):•ÃÙeEÄáîÏgØRuï5E1ª5C\ìúÖ¸Ñ «VÑ»v¥n¼ÏµéH–5§mßþ2'c>Àüa¹"‰9¿{àY~ÕªžŒŒçcµZ§ÔÀh>óЫ½Š$ynrÜžû–]õ£t8v胒ÕË5í)ëö‡â\Í”yæüñÁòr݇fl{ºeíSÑê5cË“†ÚJ9))øÔSpð |¿0­Ñ$Q:Öàömgœó™ªïùÄǼÿ~ éÔ]Ï¥îz.*]¦¾²)ùõÍÀ0íÛñ¸Óº©É-å=ŸˆÐ9kìÜ ‘¾åÉÌç…$qÌ]!QÈúÓ/ÒËž‚lÙ"Ã÷ ·.·ßر3ªä=[æ<òuGÓúдŸ™³®$éí2¬Vû_~™q¼Â­ ·øeËüï¿''%ª?»ôÎËÓËž¦zݑƽ®ô-O^zW‘¡¶RNIñïÛ' _,U¸uP0x§«£Â²²²I˜ÜÀ(šÇ ï¿•úʦøÝ›kæ]Q—WÔ–6K †(l†÷ßʯÿç¼ÚÃýûoU––²0Ô æÉÙ6qF™"Z¸Ò¡×,“É­Jôðx<ç2†}o¸žxb„}'sÏ IØTÐZø‹ÙlFpæÌ™i$Aæôé˜÷ß×>¬ª«ƒ!÷ #nöìàâÅþeË„ìlPp1ÀívOÇÙ£Þ^òôéþ}šÃN!¼OsNmÁ½‚‰F¿Ý:vì˜" ÑEÿ~§ï¬Rd¡`’j D!h™¾ñ–‚)o)vKâ(ÜR @á–…[ n)P pKÓÿ5v‡^éWO¯IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/08_file_protocol.png0000644000175000017500000004723012032647166026154 0ustar ebourgebourg‰PNG  IHDRé–â0öIsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ •‰Ü IDATxÚìÝp#ç}çùow&[¹Ú½TÍÜ%AÖŠñ Äu»cP1c(6n†}a{Šrl*ŽÄå ¹‘S¹ª½„0ÉK&ä L2{>„¶'ct¢@½\:dÆdnS®ªdhnrUê½MmbÍtß €øM€?†çý*þA6»Ÿ~úéÆ4ðˆ:""wïÞ¥! Sœ;wN¥ ãÝ@vÈn@µ3Frn0ïÌÚdŸ¢T/ÿüê‡Þp}NSk‡¾®{ö]afmÒ.©¹Á@Å:zïèÒü¥d§¥»nre ßý`«’Y™Kµ°òÄrÎ0Ú³Y #9ët:³Év­!€SÕïÞ—¢ôM­¯O5ì¤?¹ß f ™}psy.:î_ÌH,‘œ´÷ÕêM—®lä¢#át:»-bá ß}Rº†ü]ozmkˆØ¬Ý¥]Ý\tÜét¹\.—Ë9›,ïç¢ã…GsæªÎÙ¤aÔì W/lPxr6¿<ÿ_çì-ý–9È£ªZÐí¦÷ àtf·aä–'šªVÄq=©¹€¦ª^ÿÞx·ÙÏÆÄU-XLXÃHÎ Ž,f ÿÊ,úÝþâŸMU¯~áÉYgPãý^í1f¢ªZЭU/ý(÷]¾U×{Ç‚uß~,]Y×mcKó>ËÞš©ጪöŽF|#9ëjÅá3èK‡\Z Üz…Û%•ˆ‰.žŠ!é[›‘ZƒEpªÆLôÞÑ¥µ²8nÀ;S¶¦a$1Ñu¨KDÄîðèºÈVvG #—Ý]ï[ÚËPûäLóã3 é¶Ú$?0R>'Ðï.í¥–Œ<bG›×º§ùniáæÂ剑p`ºTôe½xU½ÇÚ%"ÛÙ´ˆ˜¿ÑK„BáŠbš_’‰‘ÅŒªjA—ÖÚÀgwÛRËÐüLv0™³–§¤®÷ŽUzá=­ìŽô5}KÊÎrD+ ªY¸Yߺoï&t-0a]šêâÊð0Œ™´ß}“Kc6‰ ÷w+JŸÃ+ªš ßHU¯\ñ¯šŸôQU-‘2ÿ›‹Ž;G6¤·0¨Ò ðÊZ­Íxt]ÒÙí½ÅæÐ <Üýî|PZ|ó3Ywpqdκ>Õ'"öKc½±pF º´bO9?|awxEÓÔÒy½ÞX¬0þÓmµ‰d¤8&¢ë¶±%v$.ì®^á5>ªªâqô)Šat[m¢f2‹~w˜ô»óñÝ7yT-èæ C±øæ×j¿©ôMÅ#£Å~´î ­M:Êa‚c{ÿÕ=3k•C ¯Ð;1ŸK*Š€#Î@yøæ^¨÷iOè̽‰ì€ÎÃ|•Ða3€ŽDvÙ »d7œ•Ÿ‰_YY¡Q Ã²[D†‡‡ih[Ï<óLíï¢ÚÝÝ=Ùš½|íN´ÐïnÓ/<Ëé€j¡Ÿã½Jèµ¾¾¾>ÕpX&:a/5=øÁæ‹:E¦k'äÞ¾®Èta¼äÎë+òØ{ ñèÍÍ‹OåTú¯\õ5ŒîZ%¼÷±÷ç€VíóÙœ®¡àèÆH80a]òï ›ä¢#áŒªŠªJ‹3¡«ªtk¢ªf [ößÂWþ¶âæôù›=X_w(k­pçº?òhq û·¾ýí¯ÂþóùIž¾_øø…fÇÂk–ðÈpäêôùóvU}z¿j@kÙ­(–¡ù™ì` ŠØ¤Ç!b¹åP8-¶±ˆ?;ˆµ°¯n«Mô´§ýggdxú1ÿôf¿™¨ï}ìý¾ùÈaÒµ^ ýWnß¾R÷S8ؘI>¾û&—Ælét:¿`;›‘kWk{RKÿ€MUµÈòN¾ÿ~RïU6—Þ‹þëwDDyêâ›Uƒ{c"²9]:ÞýæÛwDäÎuqaÍj2·€Cg·ˆ(ßüŒw/Êg¼ªª#[6QU-08×døZ| !žYôo5iç¾wdô­û¯ßyd8ráæùâ=!›ù>ó«-æÞ¼Pïî¿r{ô­Ÿ?þŠLï ‚×*asúüy»ÝnÿÄ¿jvºû¯\}ü¥sŸ €&bYÊç‰_YYn‡ïì¨ï¢âÖl0¸…ÏÄ@ç9C…þ+·és »Evww™jjÓñn9{ö,§j·¢´u¿›35ñ^%ݲ@vÀiðÝßÍ+èwÈn@Ó™˜³Åkª*"ºÞ;¶4ï³(4´o¿ÛÈE'1ñ†âñÕÕÕµµ „æÚí[[ÛøÀà$²;u#œQUïL~ŽE±øö&–LÎæ§ŠwÎ&+c´þTñ›N¾tÃhtÜår™+_”~‡¸YZ¾nÎÙ[ú-ÂÀÃ’Ýæ¼ÀºîqØkü7jª'‡<ªæöŠÛoªx9ÄtòªªmH0µI:|#¥(}“k3]×õü–¨×•VU-0‘P”¾&¦¢€ÓžÝ…ù*K”äò‘UKÕ‚î V˜N¾IæÔš½º®fýn÷l’qSv+JŸÃ+ªª%RÕÿì¶ÚÊجÝGY¥n«MtÝs°qÅâ[X_yt‰ææðpõ»í—Æzu=˜(¾…˜œMFqº÷DJ$•ÐTÕ6Ðo9º‰êéä÷ z‘­lùºöÉ®‹ÍjáF§Ñ™Øù5ëÜ``Ñï^O(>¥(bN÷žuƒnMD÷„|–£­S¾üE¿kQÌ÷!íõƒ~(8¶1^ô»Ãºçó«zÃõ¹ü éb Y”çÀéÓ¾óæ9¾ÏÀ) n所NDv@ç©1Þ}ýúuÚÚYåx7ƒÂÐîÁ]=O<³³@ûc¼ÈnÙ »€ìݲÈn@ge·‘Ÿ¸|ÖàâDùèøx4Wë;²›™Ê½8¹pqaN Av+ŠÅÚ#ªšÉOA¶“Ý’’I#·³éëÁf`0ŒÜòÄH8mÄWWW×Ö‚b¾8Šì»Ã+"±DJDv672ªZœ-•ˆyöÒtuG;»¥•ÖÈ&"š¦{ÝMnMvwõØJ:ÎæŸ…[DDÄâ[yôÌ¢¿úV“Р;¨•Ž8ûΓA º\.wPÓ{G—æ‡ÌpoPZiJŸ?ö­œ•sž™VVV†‡‡U€6tîÜ9>‡ì²@vÈn »d7 gh‚“õòµWhdwç™~áY@óB/>ǘ t²Èn@;d÷ÉNânÎ39›4Ê—´ÝWî͇iæï®¥õ€‘Ýí0‰{,Ðy3Çëº'Ç#£½ºÞ‰õÐÙÙÝ“¸«ª˜XΕ/¯èÞš}ÛÒ¢ÌåãÑœ‘‹Ž;¥/Ìg_”œ-¼Ú˜MVv®›Ÿl¾ËÚ#bä›Ä<¸ìnƒIܽ¡GÍ,ŽÌUN0?µ¾¾ººZÝ·5‹2—gýƒ! .Ù$åŸêÕ¡(jª'‡<ª暨g-æL@Þ×€™Ý}Së!®ª™E¿»´§\:»le‹âòIÜ%Ý6ŒÜæFÚìº7³a öÉÈh¯ªk›{*¯˜™´›ËuÝ33?ÔU¬MÃ:{å›éüÔnv‡G×Ó›MÕ³üµBÐí6gúÒÔg¦Ö×›{8|v›ñmÜVŒ]¨ªtµÂ\ìUëðèºÄ)Ù®5‰{ý kŽ= G{õX`¢tJs0ÄmÕê‘7ªÃv6]¾ éz–>„âñÕÕÕõŸ…Èp¤šý\åžÄ½A¡ˆMz"†‘[…Ób‹ø³#X G]£Õ+Hi|×™ÛÚ´ßÝ>“¸+JßäÒ˜-N—õŽ÷f:nþy¨qŠ+$Rù£¶ë¦ôB®9"»ÛjwÅ⛟ñîEùŒWUµÀ`dËf¾¡Úì­xûÖÁ\A ºÝAM÷„|®íƒyâOØË×^Ứ´8x ð™xèWiɹÁ@L¼æt3Å??¿ú¡7\Ÿ«žuìþý<©$ÿ¼j¹®{ª7ñ„âS}Jž¬d÷¡˜óµOU…{½Ð7—¼aNÚ»6ißYž ÇsŽªÈò+Hjn0Ps…ãVïˆàdµÁ˜IÕ,ïûåi.:î¬˜ïÆœTÌår9ÇÇÇ ³‹•Î4V1ëXíBrÑq§Óår™Ëoé·Ì¾K3òÀÃ‘Ýæ4˜^GÝŽíNvK¤¸Bjn$œ¶†Fm Ì¥òeÌ4Uõ„âkÁ¦öYUˆa$çFÂiñæ'w_ŸzR}rrmÆ£ëf÷Ÿ~7€v3YYY©XrñâÅ|Ø«ZЭ’_ýÏ…¢ôÞÑ¥I{£¼3ëS}fÂ&b"Òcµ[{DÒ[Ùœaï’ì–ägÅì²ö”Ïð^s$¤V!ù=&¬Å99›ih—ì‘áááÒ?‹Ÿ’/vB cÁ·oV×=3kŽÄ` K$'íÅ5󙮪’În‹thÂøŠB,JßäÒØÖH8“Yô»ë½5ZÑ,ðà=óÌ3Þ«lo5±_³i‹ZdùRŸÏ"Òmµ‰ž. ýÖ¢k""ŠÅ·°îKÎ:ƒšj¾5joÓ6ð°ë€û»»†‚£½z:Šæ E±ôØTU‹,ïìe®ÒçðŠªj‰T~à»t¹ÈVv§byBöž+&g<º.6kw!åÍ€ìn¢X†ü^UÍ„CË9ðøB=³è/½KÄ~i¬W×µ ;á˜ñèzY§]Ò‹~wÄ:Vº¼ºâ*nw0&¶±àEQÅ2Ì—PzG œp0Ê隯’;²œzçÎã3ñÐyNÛ\ÃÅyÀ)F¿ÈnÙ »€ìݲÈnÙ »àaq†&À©ôÍ÷½FxHüäw¿K¿@vÈn€0Þ‡ÁÃ9zºñ~Ù}ÂVVVh„ãðƒ4NuÝ'ïöíÛ4ÂÑz饗^{î9Ú§8 Èî¶ðO~øGi„£2ý³4N}Ýíâ§\^¡èOWcÏýìg°áï|ñË´N}„Èî¶òäûþADn}÷¿‹È÷7A¤—¯½Ò>•yþ³Ÿ" èw£3Ý'®MFŸvwwÏž=»»»Ë)ÅÃíšÝg”üÐn¼xHÐïýn€ìÈnàøöáaÉY§ÓéœMF;”s¬:¢’§'»Ï¨øiéTºJÌ&v»®J—íµ×Zi›Óv»ýüùéoÊæôùéMsQþ—ÎP8Þñhnïxä¬Ëåj¾Is ¼mé…Z¬¿a$åaïn¦5+ÖQ”¾©õõõõ©>…qÕc÷î=ý?-íB×=¡x<íÕõX`î<†[çY›lp½UT¦Éº)JßäÚLs7¥nN_–ùTêöí+?)ýWn_éïÜŽªš ßHÿL%bmÞW3rщÁ@L¼¡x|uuum-(¡½«ô(³{ïP“³æÅx4gä¢ã%ÏxÅu¢ÑñÒg’ª¢rÑqgé³b3…7Þ°t†‘œ hªªªZ`p®Ø¯)í…Õ[§ô\&g O‰³ÉŠF¨Øö–³û¾~€Ÿƒì©ËÚSuOVÅ)®¾*ê] •ËëتìòD½Ëø–~«Þ[ïá¶ï•9}þò×Õ¯_nÔݾsÝÞ옷wOÜÖÛ«K,‘…\4²eëÕõz™SïDWœ‚'ºä´Sep"²ÕúóAêF8£ªÞ™ü“·¢X| {GõžÜ´@Âaöe2‹þÁ—Æl’‡–sÅg UÛ`<ä©x&Ü«ôÜH8m Ú$˜K5_xƒ 7$ŒÚ$¾‘2û]×uÙ¯1ûÔ«««Å^XJìëTT2jª'‡<ªæêíŽ >dvÿÔ‡>Øàç°ÙJhª*^‡yŠÍkÌ|uU}Š«¯œWB.:ˆÙF#ñÕÕÕz¶úàjp?©>YóŠÝ÷áÖÀ•ÛWŸÖŸ¾Z¿»}çú•·Fo§R©ÛWår[§wßïUU-²¼#";›20ÐS?sjžèzíz§55ÐTÕНÐNÄD×=ûñŒw×|:3i7û2ºî™™ê2û5éìvÉ:þ¡.±;<úÞ3aE¥Ez¬vkˆle‹¡ß¸ðÆú‡ºò=¬ª=Öì…íײ¹Ít¾eí®§76ëí.%v[Z31Š?+7ߨ·ÚÊÍ7J×l5 ƒn·;¨é½£K“ö²kl¿S¼ï•`.é±v5uÍ4ùàjö2®ÞªÖÃíÐÀw^_‘ÇÞ+""ý|Ñ›mÝõÞkóÜæ† ô[›Éœ}OAƒ »%ºÞkíÞK•#wmßûLTU º5QU3—»ŽC# gTUTUöïÀmgÓå ZÜöíw—þùÇ«¯ÌõTÅ:¼úúûÚŘ.éRU=Z›<ÅõV«Z~ ¯™wÞúö·¿þ ûÌö”§/´umí¯hÚâ¹l¬Ç¿Ö%sG/€½'ïCŽHÏ bâYË÷2Ú »mÖîÊEÝV›è鯫š¼¡Fn9N‹m,âÏŽbÍíKÒG–Ý"²¼ò'C?\úça‚[Žì×[­jy;\3G¼Ç÷>ö~ß|¤cÞÀ´_ë…5Mó†&ERGÇtZ¥ÏáMөɾ¾2fÒœ­ìNaœ±Çj)ù (–þ[qdª•£miÃn«­P“½'ÏŠ'ÉŠujì+‘ʈm ßRçuïUÀ½ûFõÏW_û†ù߯¾öš+aêŸâ²«¢ÞjæòÒ‹§¥k¦µ'˜½½Ô¼bë>Ü}e>òÔÅ7ovÐÝ‚]ý¶ƒÈu¢£îÿ™ëÄ _s¹9ðÝjƒÛ/5¸êÄîÜ ºƒZql±‚Å·òè™EK7`¶´¡¢X†‚c6I/úÝNçlJì“3^UÕƒ‘-›˜o.§¤«tŠÒÌ}iA·;¨éžÐ‚ÏBàivë5¾òêͯ¼z³Þ¶5OqÅ•“4ŒzW‚Å·0ãM/úÝÅ«ñȯ™ªË¸öÛøáv G.Üa/^ä!­FÙÓ¯ôóÓÀéÀ˜ ݲPñnœN§ã{AúÝ@vÈnÙ §Y½WÉ·¼@çe·ð•Lо‹ :Ù d7 ²Û0’³N§«Äl²©‰Í ÎÙ¤q°‰7§Ïû¯ß9òC.»9}~z³ò_KŽdwçíG^z­ÊoNŸ/o¸Íéóçoχo´ãhv€~·ˆˆèº'Ç#£½º ÌÕŒãC‡u¹;o¿ùþ‹O=rÔí½bß|*•J¥RøKo^~@!õí•׋á½y3úÀÓ“8Ú#»óº¬=µ:ã³IÃ0’sƒMUUU –…{vyÂår9ãÑœÑ|¾ßy}E.>õˆlNŸ¿üuõë—÷:•Ó››Ó%ÝØ|Ƕe+TwÜ Å6Û_.é±î»k¹sÝ_±U‰G}¼lÅ|¼¤ŽùÍýׯ—d_Ã2ë<[ø/†÷æMñùÊÛ ¼ÀŠ®¹ÇÍéóÓ›w®ûÏŸ¯]Âáø¯ß‘–O€ãÎîTBSUñ:žTŸœZ__]]-öÄSbŸ\›ñ躮{fÖ&û%¿UÛ`<2j“tøFªùîq!cû¯Ü¾ú´þôÕÛWúóÿŠ^¾,óf7vñ×~ÍóÂíÛå]Úèå›ÌžîíÑ·>^–ÍF÷æôå7_x5•J½úBi_yŸ]ß¹~å­ÑÛ©TêöU©Ñþóö›¾ ýfñWdúöm³3./E6eoi*•š–•è^*6,³Ž  á½yS.\(ÙŠ+[¸Î£—¯ÈôíÛ·÷N„Tü«p,8eŽ'»UU ºÝî ¦÷Ž.MÚ«{â [üC]ùÕb‰”اÖ×××§Šá¾Ot×ðþ^½Òovc¿ýžéÂï%½Î«ÅÐè¿à‹Þܬ[ltÂ^j"º7Ìà~DD-)¡ñ®ï¼¾"½·z¿ù½œ¿"ÓùŠõ_‰ ?RÙ¿óö›?úˆäwºO™ûéχ÷æM¹Ð_Ù² ¬·‚ïj±ÎUÝüü¿ÊÎBK§ @kšýlNEoZDŒ\tb$œQUQUѸZw^_‘‹Óu’"pU¿ Xß|ª´¹9}þfÃïú·¾ýí¯Âþ³Åäé µ÷RÜ×寫jÉšï¼õmyTš,³™ð^|ýΣoÉ…+"7[(ðÀ{Ô‚›7ß,ËØþ+Wéã-ÜeqõÕÇÍ»D{µØƒ¬,¶ax_¹úøK·Ûíéñ«M÷AŽ\¸™¿{¤ám!ýW®>þ…OäÁ/úòO6ýW®Êåóv»ýŠ\ôµ\fÍêÔ¨z­ËZ¸‰=î{ `«§ @‹!,"wïÞ­Xº²²2<<¼»»û «òòµWÌï¢Úœö¿í¯û¾Ø¾Á?}þæ…÷B²ØëÎuäÑúã%cåÅÛ9î\÷_‘é9>‡ nEiÃù*7o¾yÑÿH§{”5,OäáF½ÚÛ·¯”o•÷¿ðj„àèwŸX¿ÐIýîÝÝ]f`€Nêw‹ÈÙ³g9%ÐyýnÎ ì‹ïï²@vÈn€%DQ IDAT »d7€ì²@væPŸ«lò»Gžÿì§hèÓ‡³Ïé ‘O°‘û™ø_øù‘Æ+üÖï-qÊO+Î>§ƒF>©F>ì˜É?ý3*Ö7çÈ“râ|dýîö߀­ÌYçí’š ÄsŽòè÷¥(}SëëS‡{èÎ bâi°ëÔÅŒªªZ"5Ù×wèÒŽ®¶‡?ü£RïìÛíöT*ÕøìGCÎëð˜OÇ1v2’³ƒëÒÚ¼åhÏuÃæq?:–xíØïþoÿp¯ñO«O§}±bÿhp"²Õ¸ï“œ-,©QŽˆ$góý¬ Ÿ hªjN³Yó Ð0rË‘­ÑÐh¯®Ç"˹ªçÌâï·ô[sµJ+îÎ9›¬¬vrÖü×x4—ïCú&ýÁÙ¤a>¼K˯~êÞÛ—sö–~«¢„ýú/…]'gãÑ\+ÝšgÜn·ÿÕ|QÕÍÕÒú•ÇRèïíõþš>´“½ÍãØ÷EÉqŸŽz5©wPµƒ;áX_ðƒ»NÃV.,¶d4:îr¹œåÝöšÌšýÜ[úvÙ%Qr 4Çšxkdó »ÿþî5þi´ñNvKD¼³Ç‘š §m£¡Q›ÄsùnBj. ©ª'_ 4z Rµ@±¾>Õ§(5ËÉEÇ1Ûh$¾ººzóæÌç×f<ºÞ¨˜ºîñÙûl"éÍF¯ÉªÒrÑñ ¦zBñxÈ£jÁbˆ«ŒöêzfÑ?’àÒ˜MÒáÐrÎ0Ì^ÃêꪹB,0—ûdÃÚ–ÚúúÔ“ê“%Ô»:ÅÒ?`SÕLv;6lý-u‘ÌSüÇ?âø`ñwym-±ÿÙ/?„zÍÕäúÅcÉŸªÍ´¤Ã7ÌcßÙ܇Ö6סa$çFÂiñ†âù³Ùw§#ÿ‚ VMjTµìòÄ`±>UÖ+®Ó°µ TUmC‚ñGU3á©=0Ë.‰Òk É£8úÄ;ÒF>tvÿã½Æ?õ.ñ Ûíö/¦½3æ 6Œd"&"=V»µGD¶²9Ã0Œ\vKt½×Ú-ÒeíiüâwÒÞ œÍ´Hµ«ÙWË‘­±KöÊDhúÄæFZ×=»ˆÝáÑõôÆf±ƒ¯j—µÇü}~¨Ë<´´¡ ·b_µ­‰ºúzu=–H‰ÈvVú»pö‹¿tÐ!"_}íÍœýb·¢qs5ß¼ùVÜØÌFêF8£š/«óë×<÷íyªª˜Xε>z°ÓÑ|MjTÍ­3ª,}ÍW§Aê¨ëÿP—y~%–(vH[z`X¥×@“Gq´‰wä|Ùý½{zãŸz—x(*=+%¥ ¦ª… ÛΦ¥ùÌݯœ–Ô2‹~·Ëåò/fЉÐôöU»«Èå&^F¹Íú`_-•ÐÕ?`3¯\v«åv.=ÅŸþèGDäKt³¹³_ÚÑhµ¹ê¬o>ÎÓÙmI%b¶âËêÙΦ½{\‡ŠÒ7¹4Ö«ëjfÑïv7ùöé!OG«5©:¨š­íÕc‰Šw)kn»o`¢?Uu ´°Ó£H¼#oä#Èîwïéêoj¿4fSU-²l>sv[mÕê¨YN·ÕÖB¯y9²e¾ª]]]Ç#£½zãWg5ëPÆfín~ï¡pZl£‘G×°¯–J0û/’Înïlnô8ZmóŠSüÅèZÓgÿ0ÍU{}EésxEUµÄ\"fè·ù½"éÍåDÌÛàÐÚë:T,¾…õõG‘ã]Çy:Ô¤ùÆéšŸñJ:tvß×ÿ4êó G{õt8Í…AŇPyÓ§òŽM<•Õ,Ç’ï^îT<þK—” ¨ù,Jõ¨™Ys«òú”•V¬C"%’JhªÚÊ8rÍ.^ÝÚÖ:´Ö:‰]ý6‰%nd{jvM›8ûæï¿ûÕxKg¿ú”5Ù\ Ö·;¼"¢iš¹ÄîðªjfqQkü\Іס}rÆ£ëÍ?åìt+_ÉTBSU)ž+­I̓jÜ©´IÌ|¶AƒÔ)p+»S¨RÕ¢( ˜û>ÏkšVìu·t‡O¼ãkä“3)6âß«ªóm:‹o!äÑ3‹þÒ7Xí—Æzu] ºŽ™æú¡R³‹oaÆ›6_m9³)é ŽÙ$½èwW¼ëm¨U ›¯Îì—ò[E¬cÅú(Š¥¢4³ZÐíjº'´à³´ð2jÆ«ªZ`0²eó„zµ-où¡Ù«KhÔ}3Ã;&­Gwþì/|eeá++‡yýØjsÕ]¿ÛÚ«ëºÞ›¸·_í-ù³í¯Ãâ=Bnw0&¶±àPKoàtôM­GF{ÍJšY÷¯Y“šÕ S9Ÿï‰hÎ¨× õ Ü ºƒšù¾ÌÆïèäß«hxjŽ/ñŽ©‘5OüË×^¹èýDãuVbÈÇpÛ™‘‹NŒ„‹oÖ5³ßVNÍé8îOKœŽF>wîÜa?›³ûC6ÜFn9Ψª÷½nÎ~›átòжÚgõÁý0„ÚCòüœÚì6ƒû[oý4ßÃÜÚJËãÝ7Á  Ã²›à&¸´ƒÆL·a|ëËŸzq³dÖþÏÝü驜ֆkÜæ¤M¥3ÒzBñ©¾£iŠŠÂu½wli¾8k3Û¶çlRŽ¥ßÝd[×?:vãæÂo]¶êúÓ_øËV&ñ<¢hûÖ—>ùáóÉ—{×ûö¸uÝŠÇã‘Ñ^]æZšÏÔœ„´Á4£ÅÂm’´V8€‡«ßÝ‚÷¼·[ämøõ¥’θÙ7{èoÈÇÆ¯È´\þêSÿùÓÖ þ5±ú¿ôâ6c|þmyâ“ aç("bÛ7ƒÏ,o©ºþÑñW~é ¹eöýUymáS2þÊ/ý˜¢T¬ócJeÆ_ù¥'þ6úãóYU5Ÿ~ÌÕŽ¦)º¬="éÂ_ÉYgPSE¤8W´fûÍä÷îùüê‡Þp}NSUU´À 4ê#—^·üBW]ïíµå—ä¢?NÛÌ>»‘œŒX—æ[›•@ô»[óŸ_ßTU|êÇÕŸøé¯ýÉÕ¯nT÷ÄUõµ…o=õÛ_{~ßuÌåÙÈOý¦üìÂÄ£òW_ûÍè߆ˆüÕï<óµï<1ô¹ËÊ/üÎ-Eù‰Ï¼òýº^š¿ëìy¡OÈ­/Ï¿-»qóêW7~ûkÏÿØFX*¡©ªx}Š’‹Ž5ÕŠÇCU ŽGsù` §ÅŠÇWWW××§žTŸœ\›ñ躮{öÜH%4Uµ]2שY¾ˆ¤æšªzBñµà€¹DQ,ý6UÍd·EDv²[¶~‚xx³[U_ _º0þù×ôžËÿî¹'+zâ£+ã¥+4Xç=ïí6ù~È\ç;oÿ¿"†ñ­ÿgMDz~ä_¼·[D¾ûÎßU 4X§¢ªúÚB0úwG7ø ªZÐív5½wtiÒn¹Í´®{v»Ã£ëéÍÜÞ³”˜XÎ5½w³ðÁ€„âñŸÅìJ×,ß0rÙ-Ñõ^kw¾Ÿžï²÷ôêz,‘‘í¬ ôwñ`Þ1“êã¿|-?¡ª¢×Þª™u>[¼&ªjúµ¾Ž¢üÄg&¶Çç³[WÿÝ¥«GõkE¯Ù0¶³éò5ÒÙm‹Ò7¹4¶5ÎdýîÅ&ßÕ4 ï^žð»Ý…Mj—ß•_Þc­ç®þ[8½•ÍÝÙ­ªÿxÇLöº½Û7sþmybè·fúuýÀëÔñH׿ß­?ÖÑÌ:¢üÈ'ùk2vA‘c{‹µÛj+_`³š¯3‹oa}=äÑE¤¥w5»†üž½7Bë–_“9l"éìöÎæFƒÛN²»ÔïˆHϼçëÔLŸî÷;žPÕ×bZ®"¬E¶þËß6X§¶'žû~]—}ô‡Ž¡! CÌZ"U§.b¶OÎxt½¸foewº“Ý*dt½ò¥Ïás¹9ð]Öó–XâF¶Çaç‘ÝåÃW>¦ª¯-|êÿÞþQQÕ×>õ…¿4Z^§žþèo]г‘Ÿ¾üéó¾@Eé¾ð‹Ê_-ÿÂsIõ:Uÿo}链üéñK7ä‰Oþ¢ï‡§jñ-„<ºt»ƒšî Æ©“³N§Ëår»ƒ1±‡,Š¢(–¡à˜MÒ‹~wÍ;óƒéþÅta“z勈ýÒX¯®kAwÂ1ã)}ec†wLˆn ã("r÷îÝŠ¥+++ÃÃû»»Å%|¢²Ôï}ùÏ+¾G°™÷&¦½3Å» ãs¤@›8wîßßý2ŒÜr(œQU/½n ¡ Ò\ŠÅ·°î£!€ÎD¿Nc¿»8?Îgõ?ÿ™ÐdÍò0yü!Ÿ, è¤ì‘â9¼WYÑ ðàý‡ÿ£¹ì&²im…ñnè<ÍÞgòøÙ{4ÐïÝ@vÈnÙ d7€ì#¾GÚ‚aä–'F3ªˆèzïØÒ¼Ï¢Ð¶<1NÛF#ñÕÕÕµµ „Í^Kv@[ȦE¤ÇÚ%’ÿ†ý)spÃÈEÇ.—«tD²Ú‚9-x`p"š+ën§æFÂiÛhhÔ&±À\Šì€6Ò7µò誚)dÜ0’‰˜ˆôXíÖÙÊæ ƒì€öŠïx<2Ú««ª˜XÎGHT-èjª*é춈pŸ ´E± ÍÏd±tv[¤Kº­6ÑÓž™µIsø;Ÿæ´´ƒÙñh¾£Jhª*6k·ˆ¢XúlªªE–wJW¦ß ma2(ƒƒU½wti~È¢("bñ-„²Îà¢ßµ(ºî™Y›$» ](ߺ¯æ¿ú¦ÖW§Ê–0f‡ì²@vÈn »d7 ÍÞßýòµWh,è°ì‘鞥½àÄ…^|®µÏUîîîÒjpâï²8Q†‘œu:g“Fù’Ùóþd7Ðl[‘9Âd7ÐYzüAk¤0­_Y¯<w:].—ËåæözåÉYsálÒ0{îæï…ž{åL¯ôåAvÇ k(h”Žœ˜;’àÚÚêêj<2*á…ðŠÇã‘Ñ­ÈììD±¶Œnò÷åPÖ¿¶ººº6#æL¯ŠÒ7µ>U:‰ @vG’Þ~‰ìM÷—ÜŸùeöÒeíÙ[×6¶4Ù§(ÒeíI¿õ¾`á÷B§{sC¬Ý""bwxc ºÛh̽€ÓIQú&ý‰‰åù¡ò®÷`@3ç%#¿¸ÇÚU\¥ôwÓv6ÖüîE‘ò­²8Žøî›ò'Æ—wü…àÎ-OdfmµO1ŒäÜ`¢¹bº­6oh~’´ÆLpšÙ/ l„"[{=h[~ôc'»ÕlÿÝÒ?°•HÑ– »Öõ¶ø‚’ΧpßäLÏ¢ßír¹C2à›º•Ðâ[p$ÍQÌ[M¸Ï'm‹ÈÝ»w+–®¬¬ ›Ÿ€aá/~þ3x5z}ú…gùL<œ¸sçÎÑï€ÎÓÂ{•»»»|,tXv‹ÈóŸýM'+ôâsŒ™@ç!»€ìݲÈnÙ »€ìݲÈnÙ »€ìݲ@vÙ »d7ݲ@vÙ »d7ݲ@vÈn »d7€ì²@vÈn »d7€ì²@vÈn »d7€ìÝ@vÈnÙ d7€ìÝ@vÈnÙ d7€ìݲÈnÙ ¨íLKk¿|íš :&»Ÿÿì§Îž=;ý³4œ¬Ð‹ÏµÐïÞÝݥɠ0Þ d7€ìÝpœ¡ RÇÝ=üüg?ÕÑõ'»ç~ö3RÕßùâ—;ºþÒê=‚PÏ÷ŸJýéw û¨?٠ำïŒBýÉnô[©?Ù €ì#» 2ûΨÔÿAâ³9ŽÀ»÷ôƒý|ïÝï~égΟ?ÿk¯¿{¿ÖßøÕó5þ[oy3?m^ÿï½þkv»Ýn·78:úÝŽ(»ïëÛÐø³ßŸû+UUÿpý›¿üV¾ahú}ãÞ}ý]EÙwy§×ß06_úÅe]žþÂ7?¡(¢ïŠÁ˜ €öÊnø³|í;c/ýâÍ_š}õÚ|ÚþénEÃø³ÿÔ¤¦ªºí‰'J2®ÞòÓQÿâUù£¤ëŸùÓ'~j*&Ÿøõ/È/ÿ’üúë¿ü¤¢Üú2fà¨ÆLŒƒül~iáŸÿÜÇÎèÃOˆüeül~ùæ¯Ojªú¯fÿ)8hf꽆Ë[úiÛúß»ÿ³ÿJ×uý㿺žˆã—ÿå}1DTõÕ_Þø°ùçwÿàç>SÉnGÖïnõç{÷²Ñ/~çÙK}÷ô®|äÇT5}ówÌåßÝ]·uwéï¾ç½Šˆ÷ë/ou¿m^ÿûåËï‹èúÇþÏÉ>³äo®ÿ¥®Œ1'6fb$¿|-“ÿO]+,ÉÜ|ãÿý“ï‘wÞN‹HO×ëïÞ7ôb–Õ[~Bc&ÇQÃ([^õ§Y‚Av8÷î­Ÿ±­-ýÿ÷6>jQòþÛá/þõÚ·îø<]bÖ½ûÆ=iâwåôÔß0Ê–WýÙÝý¿ˆüµÁ˜ €£Ên½µŸä—¿øè¿þßÞc˜Þ×»þÅSO¨ê_¿þgwîëvûEQÕ×þ,©ÿùo=SUÍŽg½å­îºÍëo:ÚÕöòÙ àhÜ׿îÝ¿óÚWÞúéOØKþO¸ð˜®ÿÍŸnnß×üãéúÆ¿s~냿þa]]7îëF½å-ý´yýÍç½ÎŸÿóÇ®>ïÒED‘»wïVÆÊÊÊðð°91ü ñóŸùÀãgïqu¨éåk¯ _út§Ôöú¯VϽÐAõ‘÷¿ï,ãÝŽfÌ„ú?Hd7€£3¡þd7€Në·vxvß#»Ðï¦þd7€NȾï¾Ïx7€‡c&d7€Î³ö_¥þd7€NRq»4õ?n¡Ÿãs•ÐyÈn »d7 Z³ïU¾¹Ë»š@¿p|ýî÷üÀ›¯Fߤ¥ }ìÿýÝ€¶rîÜ9ÆL óÝ@vÈnÙ d7€ìÝ@vÈnÙ d7€ìÝ@vÈnÙ »€ìݲÈnÙ »à´;³ï/_{…f€Ën™~áYZ ÚDèÅçÎ4¹êîî.ím‚ñnèÙ Ú}½…~·al¯|å­Ÿžú·¥[‘ÝÐÖÙ-bqÿúBÅVd7Õ§_å #·<1²˜QED×{Ç–æ}…s-÷»uÝŠÇã‘Ñ^]æ’†qL53ƒ;œ¶Fâ«««kkA ãîà4gw^—µ§ÐŸu:ÎÙdrÖéœ5³59ët¹\.—Ë9›4S8:ît¹\³É|òæ¢ã.ÿ‡ÿkÜétŽGs†ˆÉYçx4WÍÛÙ´ˆôX»DDÅâ[˜êS”Ò‹{,­Æ… ¿:[Zr.:^(¹ñ†Å…pJ³;•ÐTU¼3LUU $ëëS}Š’‹Ž5ÕŠÇCU ŽGsŠbšŸñèz,0ÍFrv$ë¿yõç.ØT5“ÝÙÉnÙú-ÊÞˆ¢ô9¼¢ªZ`pÂLá½Ï„Ó¶ÑШMb¹ÔÞÁ¨Z á¸yóW. ØT5³±¹#";›R(¹ñ†fý¹&´¿ÚãÝ+++K.^¼XŒ¹ [½wtiÒ.’2Rf&ífÇvs#­ë^‡]D=ÛØÌ Y”¾É¥±­‘ð¢ßî]š·‹HWÿ@o8K¤¦úú¶³2p©«b§}Së!qµÌ¢ßÖ=3k“}ŠbÉDLDz¬vkHz+›3ì]…ñ³]Ö‘L:»m²¹‘îñw™]ì}7¬yìÐÙ-"ÃÃÃ¥?%¯2Tòc&Û™%ÒÙm‹ˆbñÇ6ü‹™½þuWÿ€-œÞÊæŒîìV~l¤:¾ã“æ;–Z`º4?ÔUú¢ªfù•›Ú=‹%R“ŽlÚ|"ifê€vóÌ3Ï4ºÏä@ßjÒmµ‰”Æ·ÍÚOùÜæFZDM‡CÑþyŸEQKÿ€-ÎnïÈFc¡Îx…9ä’ ÄòiÛmµ‰žnôbŽ·hš–˜“˜×1•_mÿ …ïrÐ Žøþn3ŽUUK¤òcâ¶’±æ¬-µI:<’¿c¤«À&±ÄlOiß8ŸªÉÙâ»—æðºÍÚ]²‹ÈòÎ~Ï!¢iZ±×Ýä†ðÐe·ˆX| !®Ýî ¦{B >‹ywG±6Õ§(ßüŒWUµÀÄrÎ0òᓪèEé› JhpÐår¹ƒšÞ;º4?d> ˜»È,úKï©ÐÕ?ЫëºÞ›ïö—Ô­ñ†Ðþj÷ÊÊÊððð=0rщ‘pÚ;³>ÕÇÉ€fœ;wî$?o¹åP8£ªÞê^7 ¾3'¸oE±øÖ}œhßEd7€ìÝ@vNšàd½|íÙÝy¦_x–FмЋÏ1f‡ì²ÐÙ]œãÑår'|`Ìù$‹]–´ÝWîÍ{iæï®¥õ€‘Ýí0Yû±NHLtÝŠÇã‘Ñ^]ïÄúèììn‡ÉÚ÷¾ï»ª«[Ñ·--Ê\>͹è¸ÓYú¢¡ºÕ*f»—ƒM*ßeí1Œ¿òá\v·ÁdíÞPÈ£fGJVEé›Z__]]­îÛšE™Ë3‹þÁ—Æl’‡òOõêPT=Û}õ¬ÅœñÇûãïáZð ³»oj=äÑU5³èw—ö”Kç\—­l±S\>Y»¤³ÛæL•f×½™ k°OFF{U-X{àØÜSùxÅ̤Ý\®ëž™ù¡®bmÖ¡Ø+ßÜHëºÇa7§-ÖÓ›MÕ³üµBÐí6güùÒÔg¦Ö×›{8|v›ñmÜVŒ]¨ªtµÂœëUëðèºÄ)Ù®5Y{ý kŽ= G{õX`¢t²Is0ÄmÕê‘7ªCíÙî[bŽw¯®®®/ø,D6€#Õìç*ðdí *ElÒã(L»“ÛXÄŸ ÄZ8êu¨^¡æl÷Ðýîö™¬]Qú&—Ælétº¬wœµ•rö©CƒÙî¦ôB®9"»Ûj²vsšù½(7§œŒlÙÌ7T›½oß:TÏvϵ }œð<ñxùÚ+|€>‡ì€ÎÃ÷wŸ¼ÝÝ]f`ÐÆ»OÞÙ³gißnIDAT-·¢Ðïn‹~7 %Œw@ç©Ûï¾~ý:­í©öx7#°Ð¾Á]o¼›XhgŒwÙ »d7ݲ@vÙ »d7<,ZþXÃHÎ 4U]÷̬Möµ2º¹yL¼­nØR¥•,ÕR…¼ªp2Ùmä¢#á´mli~¨Kv–'Fƒ[cKó>‹Òd*JßÔúúÔ1Uq/ä/€S©µ1“ÔpFU½þ!‹¢(ŠeÈïUÕLøFÊÌèY§ÓéœFÇ].—Ó9ÍÅþ¯ªjÁ¹¤aWK†YfrÖér¹\.—s6YŒûꢊË]³Iã`ýôš…¹èxayiõö6LΚÇÔÌÊÐ.ÙmÉDLtÝã°Ù]—X¢^ªªmH0ò˜™®(}“k3]¯7X‘‹Ž5ÕŠÇCU ŽGs{53‹ŠŒÚ$m>=˜½éÕÕÕxd´W×c¹„fÍB #97N‹7¯®®®¯OUTÕÈE'"Ö¥ù!‹¢ì»2œÌ˜ÉÊÊJÅ’‹/6Sœ®{üC]"‹ÅÉI»½Ñ“Ans#­ë^‡]ò›ll憆ºÊвöˆ¤c‰ä¤}/"»¬="éCzU!ªª&ò]ñzcn$ë_›,]^½ru£ÀÍn.ýóx¾Ñ{;[Àéì¶HWƒ¸ÏE'FÂUUý€{­.DQú&—ƶF™̢߽è ŧúŠ1½™ˆ¥½3S…Œ®·rE‹À1yæ™g½WY‘׊ÒçðЦi‰Ôd_ŸÙMhª*GŸ¢Ô½°Y»÷©@·ÕVÞõm¸‰aä–Cá´ØÆ"þìH v°à®Sˆbñ-¬û’³Î ¦Æs޵Éâ+†of1è”ÐúT_½•û… +<0­½Wi¿4Ö«ë±ÈrÎ0 #·‰ézïØ¥Òq‘­ìN!Ó{¬EÉ´¹¼œ¢Xúlªª%RùMlý–FcÇf?½ÇÚuøÎ~íBì“3]/ é±MÆ#£¶X ønjý•àDÇLjR,¾ù5ëÜ`Àï^]¯qïÝFhp1£êºgfÒnôPplc$¼èw‡uÏçW?Tº²Å·Ê:ƒA·&¢{B >K£½+}“3^-¨·l6Q3Z`P* Üÿêò†ësù›ÖÅ64ß“¬qàΘíßüþϼó3•+s%x*çþæûÞG£¨ö“ßý.Ð&Î;Çgâ óÝ@vŽ_£÷*Þr¼F¿@vÙ »d7€ì€ŽvæXKíÖ[41Ð)>úäc4ÙÍÕtzZ§9»_¾öJ3«=ÿÙOѲÀ©Dtj¿û~~¤ñ ¿õ{K4+pŠí å÷*ÿéœiüS±~żìžß]Jæ?¦yÙ sú÷’òK÷XoïÕØd |8krȽáù:qFr¶¥3røk²øç-ýVE3kbþËé挊ª6¾Ò_r…b›*áÕ­tLÕ£ß]Û?ûﯹÜn·§R©z[™óÄÛ%57(NVó¢œ ÄÄ[sRysŠ÷©ãkŒÔÅŒªª%“º5Í<ÀS3a|“ç«­ƒÛHÎbzk鸯ÕêKÚ0’oˆ¨j&|#å+Ì¢—JÄZíHU_rOljõBû_“õóíØûÝÿíîUÿØíöâ¿Zíç–v7暪ªªœ+ë>$g+zµ67{Íù‹ŽGsµÖ¬W™åÈÖhh´8©ÛÑtÇ ]¿ñh._Áò—ˆd—'\.Wéòš.ö¶'"[µzaUË[(äç+¿0/ôK—'g ÅÕ{Sq–Íö6/9¹Mîºø 1¯¥ Û]vñÔÜKu%›8q‡`ëíÕ%–È_ɹhdËÖ«ëGsÉU]º­¶ÞÁB ô§µš×ªI3ÙŠ‹¤ñ FÇ+e%Ô{áR7… RuUkî´:ßjž¾}êY2íbËÙý÷ÿpïïÿáÞGüˆãƒÅßEäµµ„ùg£w²["âu˜Ï9©¹‘pÚ6µI,0—R”¾Éµ®Wt(TU $ëëSÏTU››³_f66wDdgsC ³_V¬Y¯ÓîñÙûl"i³ŒCH©Z áˆGF{u=³è IpiÌ&éphï¹AUµ ÆC³#VóÐ šªzBñµà@y;Ô[ÞB!8_ùˆ §ÅŠÇWWW‹ç(jª'‡<ªæšl+³„\t<³FöÊl~×ÅnoñZ ÅãÅÿVì¥^%›9q‡Óã÷{UU‹,¯Õžã{=Ùbë5 ~ZëŠÖªÉ¾Ùꋤñ Ý`<2j“tñQV]B“×gÅŸõªZ±ÓzùV±—ê4¨w\­g÷?Þûû¼Wüý£ƒùêkß0—ÿU]§ Ûíö/¦½3æl놑LÄD¤Çj·öˆÈV¶Þ£¢8õeÅ)¯Þ¼ËÚ#"éì¶aä67ÒætÂÍìÈìt]²W<´ÓA·»¢›¯y—µÇü}~¨«XÅ’£óu‰ÝáÑó±š6Œ\vKt½×Ú-fÅš×YÞB!‡<_ªª&öBÍl|]÷8ìbWzcsßÈ+žesóÒÉ ›ßuSã %{©WÉfN\ͳïv͉L÷··ÓÜæ† ô[Ð3¨¾äj†ãQµ^E4ø9H/§ìÚç1[ë"Ùç„ú‡ºò×|þQVYB“WNÕ…T·ªÕ;mf/UiP÷¸ZÎîïÝÓ¿w/ÿâîÓýˆˆ|énš KÿU]§PÄ^tVœý¸ÙhM†·WÔÌâ¹áÿP×ÁwÚÌ%w´­Wúx¯ùÓÒõjÒð1[}‘´zBk_fGôh=Bu«å÷*ß-?1_Œ®½Û쩲_³i‹ZdùRŸÏ"Òmµ‰ž.{ùÐJZÖØ\¤ÏáMÓsó:¦òËk®Y5Ò‰û,Jþω‘pzcsgè¨Ã‚Z»ëT¸õ¾Ñá Ùÿ|‰ˆbñ-¬û’³Î ¦šïjÚ¥ÛjIWW 5/Û¼é]·ò¬yÈJû¥±ÞXXÓ4ohR$ulûi¶õ‡}_·Î%Ôà1[ï"iå„V—pdÍ{4ãj%iPó¸Zîw¿{_÷~þÌýîWãæŸ¥? ¶í Žöêép(š3 £ù!¿²•­ì~#u6Ïo¯iZ±×]oÍŠ‘n3¸KÖÏ͘÷þ¶²;"©„¦ªÒcµ(JÍ +JŸÃ+ªª%Rù1ëý–·PÈ!ÎW!†&g<ºn^UÅ5©üqÙú-ŠbîÝ<Þ{77/½šßu+ݽڕ| áÝÕ?`“üËács­Wý¨oÅ /_ój/¼Òàª÷˜mp‘4yBk•ÐÔõÙRóÖ~Âh”ouÓ ú¸8f²ð••…¯¬´úrIQ,C~¯ªfÌ÷|,¾…GÏ,ú‹cvŠb ŽÙ$½èwïûÞwõææÃ¡W×óCº ׬é®xLõ67J[=øx€wí7Bƒî V: V³ÂöKc½º®Ý ÇLé ózË[*ä`ç«x׊ÛŒ‰m,8d^UæšZÐíjº'´à³ìõä%½èwG¬c önñ-ÌxÓæ–¹£æwݼz•|`Åâ[X¯7âq˜+jßGÊ![ïc&}Së‘Ñ^³fƒßGip Õ|Ì6¾Hš?¡Õ%4y}6DuPûå[½4¨>.EDîÞ½[ܲtzºêù*_¾öÊEï'ÉJ싇}íÖ[|Ÿ Ðj>Z«¡Õ@3Z½õûܹs-w¯Äþ†f„@;h-»y.r„Àq8À‡Æý;`ùbI8á~w«ì€ãÀœg@vŽßšG¨ÉIUÐ)~’“Û®Z»¿Ø7»§_x–v85^ûÁ,þþÑÿú_iv nEi”Ý@v·gv3Þ ‡ì²pü*Ç»M+++ÃÃû»»rˆù1|Ö l²Ò?óSë6üý§Ü=Ú‰J›,³Õò^%ð ‚ûÀãݧr.Ý–¡ál­Í4Q½éw« ¿¥ßjf¢Ò}÷å*˜MÖü´z ׊“Ø`Z[0fÒñsé6P>Íníi³µlÖÚêŸTŸlf¢Òû2¿ìfuuÕ\!˜K‰½ºÌš°Öœª@d÷)›Kwß#-fwŸg¯†³µ¶:kmK…p_õ[¦Þ¬³¦¦Ä>µ¾~T3s8Æì>eséîw¤5¦Ù­o:ä\·³Ž¥ps¥á\æG9+€63iYé\º‡}28’Bê±_Û:sʪG‘X`îh¼pÃÈ-‡Âi±FÌenΧ€ìn³¹t›™öTʧÙÝ'æ4[ëÿßÞÜ Ca6èÑÜã9‚k¸„CWp†n`ÌH¼i:øÔ æÑžº³(IÆÌX>þUŸÔî5eéÅž¦U5‰ÙÍg ½µ_fÝ>;ü,Þ´7€õ£ æþ}˜ã¾i·Ý麭gK.Õ¦3fÀê%z¾¦s¾~Q¸Ýg°æ=–Cö…Å]Òs³ßMa!“óîºÖwS¾ï6 ]w­]OÞG‰IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/04_duplicate_context_menu.png0000644000175000017500000002246312032647166030053 0ustar ebourgebourg‰PNG  IHDRCˆò “sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜáOÝv IDATxÚí{\WúÿŸ@±%‚¹L$ ¨Ån»•Š)Äþv©ÔН­«²¶v]´à®ýbÄío+Fº¶ŠÊ²ôòB¬íW¬‹Ò]ÊKƒŒ¸(`¯ÐÊÅ`«‚ŠºÌ|ÿ˜$ä2 D zÞ/þ89sæÌ03Ÿyžsæœç ˆñEigþ\ú. 1J¶ïùd×Ö· §§G;ÿÃÏŽÿyý &LÚ§NZµj•^ z¸ººÚáÿ¹ûŸõOÎMÝöÚ,ôd?áL™2…¤i鎌Ñ*YÑØ^_Ûܦì¢(Úp+gòS3øÞó‚f »ˆ@ôôôh¬±m)Yúõ…6e—‰}·î|±îû‹už\WÑo¢{‰xÂùóúËl[6ùtùQ&ñ<±áÖïåç˜Äš•‰è."Ï2JÉ¢ß,œ=oúÞþ~ûÁº¦ïï ôëxú)β¨¸çóx~è"P;ÙvÛÉŒD¦?o¸iæ,0!cšvzmaÐÔ÷õW}ü×9—“µf­ÿ“¦^[ÁR'íí%^ÀÑú_V=(1fíä/N_*«ì;þïú°ùœ7–™_ÑÓO9Ó<àÁ]•<ݧ1‰‹¥uçÊË€?‡¿,N¨ÙÃúóÿYo(3sâ?’+K{{‰À¿Ž× ©Éñ´“3é²Ê>€K‰ÙçÊËøsø ÿEÚb6…³Û["WWµT©]z‘:³ÆÙmƒÈÕ þb]~ ¦eáïUH›ËnaÚf¿KÞÕ¥o¥'„ÏáÔ_¬Ó·Ò†ŽºfÝ“ÑM×絜.ù„þDís@ ¬e™iº*#2¥Ç€¢69G`,JfdüÙŽ0X¿³¬¬²ï¥æãö~/ú«/ ´M±ü¹yJæ¼ÒõÙñºÎnVpœ¬ÑÊìÀ0&†‡8ÕKëJÁmCˆÛTEg‡¶…Émê©Î !àbÝîlê\Ÿõpÿ²Î!&¸rú.+˜Ñ1ìGïÀ0À°À…ªJho/q§öB¿‰ÓžÍ»ÿyŸöö‡¸Õžêì@Fa¥v2MæoZ%‡˜ti’Ãhš<±)£ê`’Æo'ŸþÔË16üëé§œ®Ô70i_oÈéškëÇÈàæ½.˜ Ÿ©ÒáÄY¢€€>w€z²+c¥ú.Ü fOë»\€Áš®z>Çâ£ÐZ•€¢¯~g.ÝWc|Çó5÷Ø’ÌY!Vi'W˪Ãñ‰JºFÄe&³{×aó9e•}ëw–i~Z4l“éâÒ´“Y±DÌfèMÓA…a4=Ae¥or^[aŽhïwõqfó ¶E§K¬=qÛk'ÓtUy!PÌ^×þñÆÒ °ùŒ-j$ß¾ÓÏÚB~ý·±ãŠ`XÿåëœÙ<}qvÜdÑ*†èw’cØýÒ_úf-ð ›L›{ gÖõ>u»zÂTg é á/i×ÌY8Ñ $¡o™­X!M“,ÞõKƒÊ*˘„EÕ™ð®5äìÛhŒóýÚëÖ¯xúê¯s^YAÀq²´¢kƒ(`Ûè’wÕyéj•¶´JÀK¬rÑU>ùpê ðþ‡×Vˆá^…”¬ }Ǫ¯m¯MÔ”D.ÂZídã(u.ã]3ý^æ´á/Ó¦q ¿B5·\]æåãbì{òxœAÑ 'щ°5rÞ[b…ZÞµ‡±2Ó/óßqÄ#€1½ö£”qÙ©jCïšaq¨ê‰/;UöRðã$æ‡ñe ,J^ñò,3»¬O›Æe~²ö]õe»ë´²SÕ¿Û¸ ]nâÑ)Ù|Â^ .;Uíî: nt]¿R¯Ó}ÝÜr˜­a/£k@ب’y~ŒD5z6&x4 °]%ƒz.”Æs¶(Øx ˆ³~'ê»FØ"8ºR²u¸tñ§RéZ®µµ\k3–n¹ÖfûW“¦ÉüĈˆˆ}U4Ͷµj_ËVcùCTTÔøPrЂgÀÉé)ioÏqpÉ«e×á8^T^?Ä#óX*ùð'_ådç]W´_W´7\i>y¼è¿õÒ“8îY_ô¼ò¦r\ä‡Þ–¼@Q…‡Oj˘ܨ¨¨ÈM‡ L±a>11¥’×¼õ:p8O€ÿL_˜ìü´^:ç¯S‹,•«† Recj³ü×, çÈK+ZÕÙ)E8-‘ž‡ë7’@Œ@Ìö6rŠwÿÒrï>Þ“W|4(Λú£GGÕY…¦@Á–»÷¢žŒ‰xÈ#•Bkž‹,•ŠÈ4‹êd òFq†a!áü캺Ҋָ8‚¦IEPT àÅó«Ë³æ##c,mrÁ–—§~'kýr¯Y“‚}½ï[ŠÜ½9 y¬’“¥„®•–¥²¤e©DªL‘KÄPNü!ìP¼¦°"7– ¸\î0æ¾úXv]]öQTTÔšì:—V4  TÈÀŸç¥·ƒ±|Â(ÅÅÅ6§dÆÆj¸ï\¤IG;¼§ž{íõ÷7úÄó>©[GóÕÊ»Žã!T*•dÄ#ÁœøÍp€$É 3ö©2¦‘yëèuy*›¬ÈÝ\{TVìªÙ›«0ÝB>,-.....–J¿@i;ØÄC•ñCñ® iÐ ÑÈ8ß< 8@cÈÏÍ?ÃB€{ñ­sª|ÆÈØ”{,ÍI¥€P”/•¥ »Ê ykyÀó Ã6yóÕÊÊC!Üí4½®Ùd ¹D Ã-[EEEåÕIPžR„ã@1eØóˆÈø¡(Ùœ1^~ò0$HS¿ÿ³a¶ïŒù9¦ej Ž*‡øÏ·µ3½B²äòÒ rùòà• ³ŠÄ"¤G¦ªËËG ,•1ŒU—ÆÀ~T2?Ü»²´e^_ù´_ZÜV‰ºòŠÅùc‚p^ÕYEÃàŸ|€N¶jxk·$ñ©½SZ†XË<Ô4*@ÈS䯯ç@‚Ȭ3Þ¦c—™©ŸIÄe–Ä©~h§KJ’YËhå##`¬G†PMP½Èš¦~óüU& ”*ýIbMÁ–zMka™« ¾B Óò žàr¹D<¨{Ä„iä–« ‚Ø òLª7-â «ÛO\„ Úd­Ö²Ê^>¨94­N§iÒsáˆòšqŸ\˜¦T¦±ä’dš‰LR#o¡ÖV¡VAöª>G Ùdƒï,‰¸?ÄÍ€{)¡zùš¦µ%^²ÉJÆ0™ÓÀt›(0&hÖè@ žt%3 +Q[Ó0Š’‹°AÓbo˧ØXOž/jîî¼=iòà¬ç\ƒBøŽ“-œŠ’‹@6Ù\n÷ßi½ÖÛ®¸{ï.ôwÙu4õ:OQúâ/ÖLZ”¥L«2±‰õä«2"SŠp(*`㑃qr"lº±ùÝ¢›@ÓÎë}æYÚš¦{eöÎ3(@÷´e|1 Jô™‹a4Ý{,³Íã€ð)6tqëʘI—Uö}qúÒˆdœáÅuˆvvô8:Nš6‹—ù-ŽžiŽŒG…P”0‚Mš“'ó7E¦BŒD*-..>sF ’ ñ«QŒëGIGõå­ßýã³{õá&_Fy›k;øØϤep¨ø&t^jk ñµ)[SÉŒŒ?ÛÆ œÐ¨Ú|>Øy€ëí% [ÔÓÝ7aÂÄë-dÀÜ鸵x™Ÿ½½1ß!G3¥‘Ë]•3š@ÑXÃJˆ Æl2Úy^},«ÇcÒ“ªIËÉ ÓV¬&]IU2ÖÇ‹R"3˜®5¦j®À²—<¦ªÍ,M÷Ël¾„Ý<”y­–¦U—V_þ³imO÷\ÖÕVÚØöÅ—7‚&>AídÃ0@&‰üuÇß|§{/Z¼°óFg2§¹©Å‹ë:G¤ìŸ…a&^~Ú=d©„ÔòÓÌYÅ=´`×…!ë&Á® 2ªél¶¼(ˆ5oEJ $I‡È”BˆI?£?â¡1ÐÞé8ÏEûú»¬LôµMÓÐûÌþp“#M÷Ö½kŽa ß-jŠ~vªíÝ2«)9l>§¬²O3&9l>Çü¥ÞÞß±Çá&Qh`G{·³³sÓ•kÓ¸3fú988<ü+`¼3‹Ù$KýV±v-)âqÆEd{fvl¼ë7–…Íçhdl~×ο|hsvÔòÀ3y ‡£¼NzûyLóæ÷¨1´°YA=òãG·½–úä½yØšùãÖ̯›¦Ê.DG{´^lï°½‘5¿'kÔk¾ŒÓÿšwD.¬>{ Çqi^×Ç}Æ,?Ç ³†·¶@$%bFÉee¢å l s œ ßœ²L~æ¿é¹=‰¿Òt’u^jþa¦o¸Ÿ§Èµ­¤ g%[ʧ™_º; D¯~®ÅÎÞ®ïÖíW~?ËÇ×{Ò¤IæZK/C¦š_†m“0,0å`¯Ü@Q…)›òIÕãRµo_M3"hP´ª–QïÁåñUùˆ‡ÍÔàÙ{ üíï?i ,†¹¬\L—Y&º§í‹ GÆŸå ßÔ•öØ–YÆ€¢tB-[´š¹L;ÙÌy9œúTŸ½=]}¯ü~Ædg'O/›^“qýβÏv„±Î…Òþž Ñi²æÕê¬:xûmÿ¬,M/—&Ÿ¢¢Q¿bÄlÍü1ç½%cÙmm¾s ®á8îâÛû|áÅõàp8ãÙ‹$³»Õ‰†Ç%VVòŠ—g™oÏišêl¿å5ç¶·¯ß¯ž ´³³C÷° %›Ï®R œâ׳zýoÑm@ Fɘõx¹Ïé°‡7‘Œˆñl“ 5<šž6Ùd”Œ@ ždïúÑP]~¥ü›kO?C-]1çë…î7ÙäñG˵vÙ××n÷àmW øŸrt³HÉãƒïÿëïí»}³Ï¾Çí:Zîën—¥ªVQ•¥„zÑVí¡Õª|ÂÄxk)Ù*/\X¼páw•?nòšOpxІûNƒ¿úïàO?$Ž*•J¥’$·\]¨­Û„£J%y!¶`¡zådYª‰“a DEEEEEED$j`#lº±Y{b“ñ›8L,3ëAídˉ‹ëÚüæw>ýõüyš¼3»{º­úÓŒ¼›)‹Y3#(Ôߌº„ic7ç.Ñ›,1†/;‚"Ùo0™¿iu–bÒ¥I £iòĦŒªƒh4µMÐQ}ùƒ+.ÿóGݰ!,ñº,­ÙäÑÚaæ ²R%fµe>~ôko‚?gvçþ ¥“bÞà›'càùV^mVýÈYÅå›á€JØÍW+Æó2ý‡ÙZµOm«÷Uiðˆˆ}ùù‰NÓd~b„ÆžÓUû˜l$ÅQYc+Eÿ1¬Ç¦°-›l0HƒÎ ‘5k ¿ÚÚŠ!1ø´²ªÚÃsª§‡çÀÝû¸³b4±Ž*Ó„²T"Uf:®¦éè?d~¢¸–H“ C$'ògÆ©þ/*…ÃRÉ1‘¸(ëXu\² $œŸ]W§PЪhà‡¯$U-Ö‰þcXR²Z5ÍáÃCioo˜?òó]|ÚÒ¢Äûx³=)jðî[‹ÂX|2iÎüoéxÜ¢„x©,M(ßósÚ ÒBƒ@V”Ê)*&4B£©ÂÂÒ rùræƒEE¯Yî¥Ê/,¯J  È’–W' J„¯D_Î ã>úÏøk'G]¸ íikd,¿\ÛqÙÕÍãédϾ89t‰å2Yj|NB©ÓHV4Öˆxk·$”Ÿµ´N¥Bïû—\¡0*P¯p~–¼AAÒ\Eƒ? Ù ¨¢ÿÌbÑ+˜ñÀ1P‡Èž3¢zP;Ùlòó£.\àzwýf?ëÕÙv›ÇŸºä×–T¡ µ» ò´ýèœU\.7d{`ž:O˜Æº¿Éè?Ll-ø<.k-|Èp>ÈÊÖŠRÿPÔa6z¬ýgdõ %›kŸ=xßþV÷ƒÖë½/NŒ‰7Ã+kT=ÒÂ4’TªÑ÷CdÅxô"$œ¯yuyŽóÃC´š¾ ŠVU>øó˜|¯p>–Sø›t1£þc¬ä][eã-òz[ÄJ¯E†w¡‰øC¶î¨ÒŠo1"îà^FdJöQ60Ñ0 ˆ¸L‰"B,PÑMwC©$2»§¨èô¤`m;«Ò“­wƒü|÷$êç|¸IÕHŽßä¢eŠ],ª)Ùš”Ÿ­xm}ÈœçÍYqF³p”Õ½8öè? H.)fÝþkÔw¡[+Jå1ȵF«™Ø4l¼.} 9΄îir:za¦‹íı!%°ó×ÛK¶¨§»o„‰×[È€¹Óqjñ2?{{c¾ƒfB"—Ë]•3šÃ+kD¬VW‘»7GµÉŒÎs/ž¿–>£Ôì«R=4L„uà¾}•T%cÏq¼(%R¥& SÉ{ÔÂ:ÑÜ‚<½*ÚjU7h æŠ£M'°¾wmn]þºão¾Ó½-^Øy£‡3™ÓÜÔâÅuÆ#RöÏÂL½ö´°²TBjùùæ¬âZ°ëBu“`W™ÆÌ›j¾>fŠbtè|\0¿¤$Y¬¯0%#ôLR0TghîcöœI‡ÈÍ éL!þÆôðÒ”¬”ŒÐ’dä(°Nô s™Ðüs“Ï\?€¦¶o\]>´¥).VVòÈ–h{LJ›üE¡íÝÎÎÎMW®MàΘéçààðð¯@‚ñÎ,f“,5ö[ÅÚµÃNÄñ"±¨¨€·$ëYi¹nÉ”M¼#—³Æèb¢‚øó‚yþòI£h^³¢ÿÌ™árèêÍx?—_®öÏðA=^:ìüˇö7gG-<“§XüByôöó˜æÍ5îQ?b„icSeiB!@™‰v²Æ¨jéM«³êpp(æ½.H:²±auV]]öQ¶‰Ž1Õ{Ç™hAh ËQ`è?s1 ¦»Ó[?׹̋²­rŒÛÉéÍÀ»"—VŸ½†ã¸4¯‰ëã>c–‡ã„ÙŽâ­-I-]‹‚™Ÿ(þÛ‡%ÑÔÐH5ŒˆË,)‘DS`¤cŒËã«úÏŠ‹‹KJ’ÑDåÑ`­è?LfDÈ@î߯µ†xε±›2–vïÓÌ/Ýó^#¾;×bgo×wóvì[³½÷I“&™k-I¡Ù?Í/öÉDA£0±øüy^,eÁIéÑ…)…ª˜^\@Þ h¡ å•]WtøÄJA2ÆV`jðì=Ï4¿û÷Ÿ´ ¬ËÊe½[3¯­Kô±h(¿›¿ QÑûœ¿ÍâÄ€Ò²ðW$Ïùà|Чúì5èéê{å÷3&;;yzyÚò3±~gÙg;ÂzzzôZ¶º]Vªüª}"qEðùòº:œ¢¢w/:µùòLQŒ#0m?\ã¢Wí‹á¬N;¡ÍÖÌsÞ[2–JÞõ‡b/ß§0 wñíõñ'fÎòãp86~ÕX•Œ@Œ¹’DzLÓTgû-ûg”Þ¾¿z.ÐöeŒ@Ø,cÖNÞµQJaƒSüzV¯ÿ-º Ä(3›ì>§ÃÞLD2F ƳMFF %_Öï,C”<î ›zæ6DYeŸ”¼-ñ#‹ÊïÎüºô„ÍÙä¡°fÀDóA ¶è]¯ÚÂ÷›9 hšÖ –¾70poàîd—¡Aë»þPl°«"7v3(šg¤ÈÝ û ü>e ÷a&ÖÚÃxxLÛÉ4Mßê¿ÙÛÑò ¦ÈÕëø4§w´¾o:Mqwžbl oI,lÖš2¨ø¶bøo£œµ07jÏ$mä߯‘Š÷˵¢ÿPÔ¢W%«§hˆ%S[-,~U²Új5ééhÀæhѺÏ÷~~Ø[CÓ5Rñw³LЭÇjõÊk×À6óa0ó ®’[;[Ó?|`÷`O “Ààëý&Ø-¹éâN½ûSÙ¥¼vK ñ‰l-#6Ù'âÀ-$OÇ*rcŠ«0lÝQešP‘û‰_ÁP~ ³p¹iW!%€tÈÚÕ£ÊÙ^4½.Lê˜_SL«í|ш4v47€‘âI±òÅ?¥¹J~¸t÷§KGú"@âgè-ßó“ !-Û…MoÃ]Ì¡b4]#ÍU.þS¶æ¶N¯Â°À¥»Õ…á7’læ‘8½ÍÔá ÏÐR¬32äïíÿp˜l÷õúüîÞ}&Ò€T<÷ÁùÆ ûwß5¾«P”#•1fOš£G‘»¹ ö©¬ØU³7W¼%±5LaÅ·UVÓ¨P[ò%<ß}(jn=ª·ÆQ¥R©T’Ãm „idÞ:z]žy«µbX híbo>+«eîèémoîÝöyM³¦/•ïÎØ¾aï¶Ý—:iÃ'ISžÉi:ñfÆö Û7ìÝöy#õóémªŸÛ7œ®£5ÞŽŸ?)>Ò¤ UÓ~)ëMf—¦'/–M·7ü/¾¡+ãýrõ%¢éšÓÛ>¿T¾{ä×§þsýÕ·ìóFêgÍ!´Ó¬õž¡Õ”|úÒØkùAlÐñ¿Ž+ÒVæ'þ ß;é·y–ýãÁκ¹Ä ½}¯»;˜!e!CóÕÊÊí!\nÈöÊʫ͠‘²âÛØut|«`²*¸×f8 ©~=´Ei{hÍ'S϶ø-þÝ 8wòdí“g’;:[¸Ï¸ê¾j%ïðuœØs—!aËîß™6Ñ(’¼ÜùÑ[_–·keŸ;YûëwÒ6AîPµá‡Ï38Ü0ghµv²¥s¡ÒçJæÁ{/ìX³fMff&ÇÃ0lŠd78›ÞYø–dïæ\YcAä@šñF¯¦e]³9W[±„K`ïæoeP±x†»èEí1ˆò#LS*ßÊ%b/ ÛçaAQ‹^Xäðk>u®¶ê»¦Wçúš²-‹Yn¹«§@»ÿ°¾ ¸ÏÌòthokë¥çº ¯[ŸÅ/,r×q…ÄT8ÈSµ›¯"É;RqÎ¥Ùš¦ÓâW_ 0ƯH+ yæ™g2226lØ000pêÔ)GGG3vâ-‰…UÛ»*x,;^*K Y ›Øô¢öÔ£n§ä]j¨×4*@ÈS䯯ç@‚hô—Û˜bÍ«ÛÑÙb ÔÎ3ÿûѱ­CÆ,ÿשçÇ¡…ìpy²T:ÕÍ[ÙÝÓÝ,îž`mNcX HRñ‘&Éjß‘öhÊUsÔ™n3‹Ïð¡+™ÁÁÁÁÝݽ¿¿ß<%oI¬€fmê‚0-OJ\ S÷KéæùÒFvTéT”ÊØ\ƒz†>V­ËS ™C‘JÌ—\ÈKX(e;‘T=^º §ïä8žž.ªÐVQþT7o€+ýÝWÇÚÁïÅä—;?Ú_k|/ªeÑÛ†aþÏBÎW%þˆ°š3ÒÕÖéM,°Z/¦ÎÐúJö÷÷ÏÎÎvtttu5Ûñç­- ×êÈfè+”fM ¶ÂÂ4’4Ð>{Ô½z ªÕËTí¦U›0$ÍtMÓ5ÒÜs”Êé œ%€Ú*ew€l¿\ßx*»»À·kxåc˜‡ÿ³~g[´_ÞŒ•æ>ã ú‚Wcö:§<ÿŸóK§‡z<™®³Kè¶ä©ŸïO}[ÇI^ûÝ>ñ‘W-±«Æúc¡§IDATsJQ¾/þ)Åü×4¦u8Ö÷)ÛZ&éÑÆ Ùõ‡âU[øæ”<ºWÞo÷Óx­¹~g™á¸k–ïÉÜ ZïW<õÿ­pûæ˜î·b?ïÆ%®÷ËØ÷ä¦o~}IË1«?²ÿóóå«]‰oW s8Mz{¡¯Se•}VˆþÃ6rË(«’Gúð‹°¢’Gë]oÿ‡Ea£ÐuG hVãöÄX<~ 0Ž.lò“ÈKƒÐE@ØR;¹ )y„ x×ä]#Ûó®QôâqP2Šþƒ@<Jýx<” (ú]•™R¤5ZÓÄçVDû¸Ú+?š(l¸ $âñÀ:=^­­;~y?½ûÏžjÏIO?íh\ï79ï–ôK$=Ævä­Ý(þD=Û_ö‰8pËZ&ú:€"7– ¸ªŠÜX|ÕEn,ë2åBQ‚¶ùªG•Áår¹\®º­ƒê¤5ÑÅ©&.³v¹T*‰¦(#Kœ[,Ô}ûX«¢ÉüM‘)…Ã,˜~æŒ$¦Ša‚ä’´®:R²)Pôãj$ó#¢¢¢´I“ù‰QQQÚùz%5öÇ‹R"Y$Z},«ÇcÒUȸÌd†iëßX=÷OŠwm,Ê '¢ýç_ÉçÏOrsëëí†hè۷ϹýÆ-77ŽI)3AdÒœ‘žTš¯VV án éuÍÂ%±5ŸÈ@èËDÿ)Øû­bí’oõƒ†ä¬âÁ® 2ÇZ„iyR.—;ꆴ¡¢h€˜PF`Õ«³äüéá¥)Y)¡%Éš®ÊX%‡˜t©Ž—kX2éL:ñ‡iºª¼(ˆ FÏ0ˆ’G° :Šþ8^$“^’,Ðè ÀŸÌó7(H:ØK]8eïÈÁå„*h£Ñ’Ä£ó®5h¢ÿ„‡‡ ˜·oI,l_µÍCÖò½Y ›Ø„i`³ªµkXº^§ÕPWyë¹±ñ9–ÿï-‘J¢) ˵=X/‹ÄE8r…ÃIG6P^—½F$ÚWe´¤µZÔ¤äâààÀãñúûûÁl) h±è?OhõKéæùÒFvTéT$%bs,õÈR ‚Ëår¹« /MýgËÕ…Al†y ì'’:Ü¿¼r#Ç‹Ÿh.¯ê +..Öô6aD\fI‰$šuß{IÝW¡1€ãEåÕèFo'†'<ú×rñÛ¥«³²$ù!ã"$œŸ]WtøÄJAœ~›%8)=º0¥Ïã`kI. oP´‚€`ygf¦d„žI 6yaaƒ¢àXJ‘ÉH}d“uh¼r]ûïÞúf÷]½Ì'ä‚b±|M Ž×eIN4MÄeJ¢©ºì5ÚÒû""¢¢¢D"q!ð7ŠUMeÃ’F,oäƒ<{ÈÐsƈ¸ƒgÒc P,‰Ÿ\Û1yöÑaÞÆh éøÉxðÀ úE<Ñ>Û†æB!l‡­™?¢è?ò®R2@ þ¥À˜re[ÈIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/26_ignore_child_failed.png0000644000175000017500000012062112032647166027242 0ustar ebourgebourg‰PNG  IHDR4öØUsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ *2[â^Î IDATxÚìw`EÛÀgëõ~—»ô„„$@ ô@éM,¯íµ÷®v 6úÚýì] é-Ô@z»ÜåzÛ6ß›„trÉ%DœŸk¸Û›Ýy晲Ï^Ü߬t”nùë—Z†¥º5b ÝÞºžqÖ¯?\rÍ’Sóþì2ñkœNÞ=#Ux 0 {åÇ7Æ@6d«8¹þçïœ?zûªÍ¯ü§¯{ƒºVn;¾]«»uBɬÅèa<ï)Ebfæ ñ8 ðú¨ô¹m9´ øä¹»Æ N‹‰O7ëšo×uA²¦Ñefê§£ôê+ê8A<ÿøÐÔ >ûùþ˧¥÷Ož÷Á (ø?]zovVzLL|VöÌeªÄ`S»ìÎKÓ“ãÓ†MzeMqXÙÔ˜AÉjš -õÅ#ÍðÞƒWgöOŒMLŸ}íC]LCDÕ/ÝweëóM9úõ²c†ÄÅÄ%g wãÒ®t8d±ýSSÓ ÊžvÑSoüôå_.¼Rt=¶'@›š¹4=éÆŽÆÛ‰[QáµzÑ7»ž¹ùÂÔ¤„!ã/ù¾Àå>¹ö¿3Æ&Æ'w郥!¾ãZðøÐÔ ¿Z÷øõs3öoTxërÛ}=td€u¢†>>4uÎÇ?Ü}éÔáÃ5ãõß‹Qs‰@ }Î8ë<=4{ù6ɲÏ~Û¿{ÓóM\8ëD€‹È?»vÞ—ùqŸ­Û¾ñë‹^¾ÂÅ -LûíЂXÕ˜UÛkª«ÊOþÕù;c„zùŒ¸=Ï~Ñxfëâõƒ’SI&õ.Ö½uŸ—ä­>¦JQmÿªà¯ù´hnŠRt^B’d ˆ]?ïã`gËz w-]½}Ͼu_¯Pï]=ñÞÆK=»dÜCæ}ûß”ßÌZü%¼þõÞ{>yeATC˜#¯ÜÏ»kíÆÍ˯yíÎù•ÝBýü† ÞÝ.]õýÆ]¾áùë²é‹øÏ75Lç,xó‚Åïï=tpëšÏn˜œØý23aákSñJ¡«ÚÓL{}å6ÙÌEmZw÷ðê…/¼ýú¯®zöƒ ~Ù¯àçkžË9c-8ôÌ’Ñ ß?š[ðëÒ‰¢Â[”ÛžÐCjèág—Lyú›9GþzíâWnþ«-ˆZLè:;¬ ¨Úq•ÙRÿuø³›ÖÞšÞ0rÒ8˜!„|¨äޝ Þ:òÇ$pÁí¯Ý¸:í©]5_NŠ £gß<:À{òÊŸØZýØÎeãÕÄ¿ð·};ê©úqÍ&’4| {hfÄâk=£_Øì\p¾†Xëã;j¦~wA§S—>G/}çXÝû££>Þo»ûÝ Þ^¸>>¸rÝeÌmr<Œá*ŒÐ|ÿÒÍW–9ó¥ßàs#:È,@üœó›!„i³Ÿ‰#>>­ð†è"¢‡5 I>C mQ£ÍÙ¯]’©‡ÆM¸ãé”7–¿ttîò¨ÑD ˆ^5Î:ƘõâW “ÀäÑIí Øò󓛞šëág-¢DYAëZ7Ç«Å3ªØë%ø’êBwçLíËK?*<ÿÕÛžpñÏ0u>u׎0>ü¿6³v½ß°zÔ¢W«f{ø{?)ŠŸ?9\I2®|úÀÅwïÙ¶óà¡Ã›yåÝo¿¾mãL¼Ý¨k÷|õ೫w=å q‚>ýL¶Ìˆ?í?…xOº¶utѳS C*UFvsñAб–ƒðÖäzóŽV­¢wwÝœÑöùb”×ÊŒ—]“µüü¬ SgN?aÒ%—L3Ppî  vKF»šièÙýêë, 03±þžªþ*ž)?c-0f7–+,ž&Z+<"zhQƒ.¹ö¹ÊðjhÌìÓa²²Mµ[ò@Æ@ô%ãŒR$fÔ  8TZnîÞcµut†ŸžÔŽQ4ŽEVß™1çåàO¾[²=næ;jë|êÒoh½ý W¦Œ¿K*M¼Tϼ_íùá”kêå]“"$¦qS/7õ¢;xèÞ¡ƒž`׌×ÛŽZ`kç\þðGÞýûÿγhÞ²åã¿jü—4—³-…áÖôw!2ÓÁ±v¾aɃQ/­ÙwÍÖ?7nÛþëë÷-[>tçî/¢ºWXoNYˆ›0H{Zi¦EáâÛÖ ›Þ­Þ…ØQ-Àš—«6 =´¨A.n åC|›ŸÑ£àÍ-ö¶þ´ñYªŸ'ű—öÖÂîÐVtí²kìñkÐñ—‡ZKBá@h<&)×=É9ׯÌÝøÒI×õO+uºA7í¿üñƾä«ÇB/õóGo†ˆ;âÝRFPPÁZg{QëÊBÜÊ[gZ4raíÞ=§ÇßšèQ¢Ÿ'Á±7Ž;Zåa3]Ÿ©tœeB(ÕÍ!1ìýb—xšqïÝãa²ÓÕíoUˆÁç͹ÿñ¥?nþ¯Ýöf…§›%gÛŠ‡IIÜ¢~ªöhO3±ÂWå¯ì;fçÐŽÆšÆ(ꯃrÒžÂ[–ÛHë¡QÐŽj(h&gÙ÷¿þµÕjŸÑÀžX@JSÞ¹2í›ë¯ù쯽ÕÕ'íýðåE?ÛÞJÌùJ5¡°ÂOÉ<;ÞüÌ‚<<„¼÷ã…K¬ GЀXyÅš­U6»Ãá7RZ=îÁdõªî 53îˆU†•:Z=a¤Šxâ÷²™ÅRn|â½·Qÿ ׃È Ï¿âÞ¾ÿãÈñ‚¼Ãß½ýØâR÷Ø{G´5­ÎV“ø›;+þÊÝzá½ïŽ–Ùl5{Ö~êð‰I¸ðÊ‚üã»6þöüý—^ýNþU/Cí ÖŽf.›}ä¹O\8÷gßCôp-hZn#¢‡îËæ*}ê…o·W[«ÿüßýoWq  DÝYè[ÚgÖK¿¿lyâ­Çnx¬Ú£0Æ ÏžºXF„{ۡǦM?ýµß?n_1úúÏ~(ºýîQYïë5ÚÉ7¯0®ÿOë ǯX{ís£‡.Æd™¥„ïÏf¿tÍïCŸx¨ ©»=]{[Nè&³ K¿]`5O¾(ìMÊ|É ú§·ž}ñTE@ ,In\üáÓ—&µ5!I\³òî[îñ5¥URnûªý×ÿÔæç¼úÛSKzù®Ëîw0Q‰®~þÃ*UWôkå¢÷\2ÙÁHO¼èë?ž':<ß$íQëß¾úµGì>>*iðƒ«~Ÿ¦ Û(©ÍyhâyÃ))fðÈ oþ°ê’1± Ö¦fF¿ðÉìn9ès­!ú²…o~œÑ£µ i¹=±ûÞîë¡û² y|µãÇg²æI̯^7Ï$C-&@ô˜8¨Rg·B¡Ò<1<=ï鿾¿(©@ z“˜Ø8²“áZŸ¬¬(ï9±Ú<ßs1viOÇÛG’AiÏ¢œdbŸU Ò@ ZÐ)㬗[ó³òðè;O¬Ö³³OI‹Ì¤8h6¬ ¢À@ αqñ8Ò@ Dß¡³¯oB @ôÈs†@ чhæ9+.:‰4‚@ qi¶ @o0" @œ5Ë ÃšyÎü~R @ ÄYÍ9C @Æ@ ¢-š¿!m¥@ ÑwŒ3dš!@œ]а&@ 2Î@ È8C èㄽ Ä„ŠJNYkk8ŽНã„’$©+T µZ£±DYpo˜Ã†!-#}‡Ó!—É$i{<¯ÏçµX,ç¶¼^¯Ûãi|Ë0†ajµZ©Pôñö8÷ä;{NTz©ÑŠÌdõèþÚÑéZ$q.Ñì ´DrÆ Žççêuúä¤oæuãyŽå8† UUWÖTlOK&”’ οŸ! xÒu—ñäç}h ÈôGÕƒ‚ˆ,ÇUVV’$ÓfA**+I‚Ôj52™¬û˱-ÏB±{@ФÔjuï«¢´¬Ôb¶ÑЬñÕÕ5 ñg¿ðs˾Î;Rèd0ÆhT¥„$‡{ °¯¼:Ê@=~U†NI#Áˆs•J¶q¶i뺹³/†‚‚À "P@€ã¸„–Ðà`ö2¾½çzYÔÓ¾ê”Q×étžAÑwíÙºiÓo-šx©T6wÎådcù´eâÄa™!±œ<ùù›7¡‚ÛãÃãv0LP*•+UÚÆGo‘­Îaóx•J{[xŽcí¶“ÉBÑ´Ïçõz]¾ïd®½®–¦%©)i>¿¯¬¬$>.¦{ÛÍ 2z½V¡P–••+r ÃZ˜~¿_¯×sëv¹» x[ÑSÅÙâ?Bår¹ ½“vg]*“Ñ4Íó‚Çãåù @¿ß!í3žç¤…J¥Àq‚aBuv[l\¯Ž¸}Ì¢wvŠ÷ÔV|ºùØXõ¤)ƒ¢t#0 TX=GNü½qûÚGî}ì©#oÇ7ÏLÑ«$}S0­Œ>µ;z”Òj±O?%¾þ$@ möœ3žç€‚ Ô·£@ü8`‰ÐZÁû¥SðtªÆx@f¸Ág}ËV´'?“Ŭ&dÃ#Ôß A 576µññIï´¶JIRS&Í=râ?1“D ØÈ!R{:x`löÄ@8/TµÖÚü>ß­7þwÀ€™3;yÕ‰ùûröýþצ⒒Œ´þ=*a–™½ÆdЦ( ‚T"u9ìµ®ïd®ÇãIJ4BWÈä±11eå%ñ±]·Ïº¦1&8®V«œG ßX£Îd4bðÏ0L÷‹ŸÀóBçkkk°ùFƒ@(|ïì‰Í±,­V3¡`e•5&&Æd2áx3Û4)1Éëõ–•UÄDGÑífÙn n=ÿéþx©Òc¯ÞžûÇÜiÇKQ©ÕzÖeæ9® °ð¯­ž_ùÌmW/˜™‘òÌ{^¿Bïݰ{öƒ]“%Gªâ-ƒf”JgúñGüä),œÖøg€ç9(š ¢Û @ 8aÆù¥6ùsZ9¹1<†ËLƒŽèÔýTWt«&}dšTžw¹œLˆiæ„YU*mJJ*äyA4 A€¼ ,ˮ߰æaœ9œu¹ù¹$Ib`Æ ¼8tÌq`ËöÍAˆºç8n쨱z½¡×d+.)±DGC(ð<çó{_\þ¢ÓálÌår©T*ǵ:í¢A ¼`Ô닊‹3z±9®·ÌŒ’¤8ŽÃq,ðI{}Lªcär…ÇãV«ÔpZc‰)«(íŽ}Ö5E‰eL«Ñ””•ªT*²Á¥Á0  T*eÂÈx³(ˆ F§7¿np @¯yÎû–$I”””´L&“v¾AöäÖì;R1Þœ°îðïO4u|¦Ñ`T(:^«Ó$e¶èu:…Bõñwï-¸é©='‹þ>\9qHLßì†Ç þ¯ë¤ÑwÞtÛgŸ|°¯¸dŽßÅžSãDgiuxŽˆš á±Ë‹7)I Ø>¤ç¬é´ð>¿ý'R>4R Ïñuuv¿?°ÙüµµîöZsÇM&µÑ¨`X¦ï¿çù“E…ýJ$R¹\.ÎŽúÇ9–… 4ŒÃ0q·ËåÜ»ïôi3[ŒC…÷p 'ð©âbƒ^!¤)êTÑI[­mذ¡99›þð¼À0 I’v›ÝZ[CQ„ êä©"ØÃ658êì5£… (–cp ‡àóyZ&’¢$2™¼‡L7×ãñzÁÇ2­u{\ ¹‚ピDb6[Ê*JãºaŸ…«1’¢YŽ i‰Ao°ÙëÌæ(ñ'›Ýn6GqÂÕj͵×êÌ?‘ëv»4š^Z¯~¢ Àd4ð™LF’d $ÜçóZ,ÑÈA[ “ÑØ`›5üÓ¨·^²Í@£­E’D'Ül½ÚÅË9^©"åÅîªç§Z+WÈqc˜ „BA*‘ú‰c³Öý}bœeࡼSŒé#‚ šûÌ;õlÊ„LÕáÿ•ŽRÈÈ1ɰ¬smÙq¶3ž?ÝÍmèb@/à&’’ ¼ `@ €>sIÔ£ ±•D<Ç;ÎÆŽ8A¢S¤5:A¿?€}}Ç]AŠKŠ’“S}>ß¡ E•ÊTÔžGï„BPX–e¨~þ‰qscmGªóV¯Žó͘˜¸Üã¹cÇŒëŽó¬óOŸzž ð”„JퟲxÉ­ŸU8N4µÃñ,I“´„Ž’+¶íØÛ;𬫫•JeA2L@ 0<¡Âã8„)*Úår8êì:}Ä juMB\l<Çs Ë¡À/ñ8©D*•J+ªÊ“úõŠq¦r»=¡Pˆ¦(‚ ŒFƒÍfŽŽv¹\111 Ãà8îõz¥2‰Ü¢á…aÀf³cÍ­3“)J¬ ååå …ôôþ°-7FÀ¶B²œ Ñêêêzm³ã§*'Æ f!%Þ¬T*¥2 ŽÕ!À0NK$ …b`zü—kvÒUXV+®f8ë‚Q…­},5 &œw^°ªÄç"¢½¹)ÙóúgOG^"㬳 5LlR±†*&s¬”¤¥+õ;7ì¿Ë ³dšá.cYB‘š±Áó<Ë4ÛGc_Ξ6CNŸ2À2,A“½<_$lãŒçË+*ÆŽoµZv;n„l‘缫n¬cÙ¸刹±žÝöP¡Û£“A3Ò3~þåçÑ#Gw}{ˆptRQUÕ¿Š?àApïà‘I‘˱ÇápÔù}¾Ä„ä.–Øð¯Š2kjjŒF#DzR‰”ÀñÚÚZ­FAà–e|~´Ù‘$.˜ŒÆ†: þqݦÀóZƒA«m殪ª*U„m3q…MótA;³ÙG·„éœ&yŽá8Ž&dMÓE`8† `õ.B ’$)’")2d6ˆõpWôÌ‚ |Ýg·JC5ñ³ƒU%7Q¾{ó¤;>W¥Oèãí0ñÏôœqœØË…Ä0¬ÞDÝgàÀJs‘«ôeWùÿ$r³LipW¼i=aƒ¸Â0 ’tqœš/9lô™$ïÓÚšklLŽãÛvìôØc¿ßvÛ©4Áæ<=TPQöOì'µ¯sT” GX,þ®»ªk¬ €VWWÅÄÄö‚óŒaØÃGŽÖZ­æ(KXÆÙ®]»4j-€„^X=O’¤Ñd©µV©ÔPBKX6„„ ÀšêŠÖ1 —HhÎÈóϱ:­ÞãqéõØdËVg×ë Ëð¯Goˆjá6s»þ`@&“‡ØMK&2kG‚Á Z£†‚4M{½>…B•˜Ð¯…‰S]SMÑ$I’.¯›$H àõz“’)ZÒeºv¡T&SªTö:»Ñhr¹ÝzƒÁérÊdr›Ý®Óë ’„‘+êb10šLXãX˜hfÐ0ï^°×ÕùƒÆý5 |ÌDÄeçmIÈ B{›}t_˜N^;,üuk¥Qžœ›WÅ^À PÀ1BOOу€ÏÌ-•«»:kpt/4t†XýÉm¤·(~|½eV±{˧ìíêÌ¡Èc†@ô”çŒãyãõ&™h¢aM§õêx0Mœ˜P¤I‡òß1. sxŽoXB¯×›—Üf_¶ªª*  ç9¾/ç/ð'N\8w^EùQ·Ç#—ÉM¿×^+Zµê×Çç&Q$ùDZ-è»î i4 p¹= ËfóÓÏ?]xáÜH96:Æëó1 «P(H’1t àôJËÑ!°aÓŸZÀrœ×çëíÂMRQ昚šJ•JEÓt(è“ÉÕv›µµçL¡PÛm5J¥*`%štŸ„‚À²Œ\&M®Öyäö8ãbã=>7Ža@Àçó'%&ÓôÙÙgX­Vs!äy~û¼¼¢š4Ãù*Ü2lÖÙ¾` IDAT @ë§·žSõ>37Q±{Ë/ØÃ;ا‡õ¢+ÆY'çœaà q8¢é„‘&4p#†+8ž0Âûžú@(Äœ(8¾õï?‹‹ ÅÍÀZ 4õø“wc–5xøåÿ¹±Oe„°´¸Äh4ò)©ûk$iÞñ¼F»¨~¾ƒÌâÇ]W(m#£Ñ x!âÓ•à雜äÑ}×Þf¦s×fí7t`lÑ©ã‰ê1öx¥’‚¹ÓÒ(šû¢e¶m_ÞêÏ7DI2NZ‹Ø`åù#S{aRWÛ‚Q´í‹»qwaÂÄzˬ|׿¯‚·î÷+Ùà±Þ ø—zÎxŽÇÖ¸0§õÖ´Åð<A‰Yóõž=Û &-lh.-Ù—_½7hÀÀ‹çý‡¢$ ¡«Û´OÜ(Naa®½ÎÙײA„}û÷;®¶¶–ã8ÇËÊÊ´Zí°aÃ|>_]zzÑØ±|0˜0v¬Á`P*•ÇétšŒF’$Y–7nÜλÒÒÒzô­‘B•RQ^Q£QÊú÷K<òdW95ãš wÍWÆð~§• ¥B&L˜0ñ×µ¿[kíÇq¯/ •H0€õ²n)Š2[â\n‡ÕZ#W(µšÓÛßsbB,ÃJhZ&W„B>‚$†•ÐÒˆD-—)X–•HéÒjµ~ŸÏZk•H¥r©¬q3£Áh­µ:…BÑ/)…¢zûÝM,Ã9xP&• Ñóz<•%%z³9àõqÁP”Ù,mÁ@ððþƒ†fIº÷±Ø˜˜ÖþªS§ŠÌfs(m!'¤R)ÕüM£=±¿F›ž³>µÙÇÒû/šuû›j"O#¤lÙÂ<º}Ä0SFªÀ±‚’š] rŽkˆ~ GÔJS¨’çž^¼äÙ¥½/Ø¡£Ûç“$H­ Æ«K<²|צÏü7 ƒjÇzS0â_iœñhð™áÞ`¦áö™¸H qê,¨‚Œ»wï˜{ÁÎp×Z­R©¬ªºzȰ¡´D²gû€ Ñ116km àx~èèQPí? 7j­Ö˜ngmõO À0€c&ST›ûkôÐk lèÀ5÷œA †5Y²aaºvôà䵫ïyòõŸß­ÁµJZ© 5R ñq>/ã+ e}•ý |€Ûvîºâ²yïðilBü´i3zzw£`èo§dÆFÇfkJ=²b÷–wìWüí…¬ïðY 8·kèP‚ zÔólÍyÀ€§pyÙÎçKX”f9‹‚!çqÖ¹ŸØc¡Ét3Øàè9½À»±±ãx>RUB8 cÐ_|¤“II‰4QÅÄ>1ñõw¢Õ">wE·Ó‡U mrrJw¶Ï^¶|9€àÑGéäùNû¤0‚ rrr´ZíàÌ!ââ>{å8žãŽ“Ð¹\.W*äR™Àó ñ 8A° +@0Œ$É^x±ŒØžÚjmÕUÅEE·Þq«RÙÆ>œ†ñwá8Q¶áµŠò²ã¹¹n·‹ ¨ÆW…öX– ü¡`ã80•R#•ÉÄb)ã `2FÉer—Ûí÷øiš’Ëä ¥2"[íG­Þàq9•Je^n.EQjµ: šÌf¡ÁdrÔÕ)UªÊÒR†eUJ%Ë0:ƒ¾‡ eñƒ©Éþ ùh¤Þ¼~º«ÉóA™Tvօ鄇ŽÏJ=0Ža˜`0– ƒ!†atiwÞ}ÏêwÞ–He½j‚ .¿lþ}wßññç_&'%÷haƒåî*/¬šò–î A–¾ð…›cFœuÁˆ‘qƲlLlÜ‘£‡‡ ÎêäÓ« ðD”1JÜ÷<" AS¦Ìùå—o7nÜÖµJ¥úŠ+®-¶îthëÖ-Ì;~ü„È:ƒÿY‚!ÿP´:=Ù¢ >£Ý5ÓáŒ7ËÑåQq «›,Z¸P„—^zððC-Z´0‚©‹ì³äŒ„+¹\.=jTÖ,عgÀhš’ÉdM÷ îQ ]ÓÙ`A[ß¡qªËùˆˆH©†8ŽSAR©´q¨âô‚R ›>cÆŒ™3AÃ.µ½“¢>+ñO$ì!ÿ¾0c¦/ô·~è!€àá‡úW•‚  …B¡@•8[­Ÿ8 †@ ã ÑŽ}†@ 9P@ ¢ö&´ˆs¾Ÿé¨X"¡g[®q‡uÙñ Ó{AJoé¶çŸYùÛ¶ƒ6Ÿ`IÉœí]‹o™uØ•!GÎ’EÏþ²5ÇîçõæÄ¬‘Ù/¿ùb<Ý»gwbûŒ ,Iƒ®¸çù'®Ù:ØÀ¹—ÀTUÇ7|qxÿíü±æŠ”ÈJxdˆ`âèQI§_`U±cS‰"+;+¼AJõ&yÈáç»>èT³sÓ1Ÿø®*Œ’*ŒÑI)1XïÊÐùùL|Ðqª°¨¶Îby’–kM–¤~É*ºÝºujÛFgÊØáÑaoŽnD=Áé¬Áp‰LiIÊH‰Ñ†u‡.'¿›õN„Vª(üµ3µ¬íè:wÉéÊŽSú˜~3/¿ûÕ‡/'±/Š¢}ã¬C(¥ôû;/?ò>Õ»»Œù«ÖNšp1é¦W?Yœ¬#òv­Y²ø–ÍGWnZyÙ?]ûLýÏFýìŸ<•fV:Ê 6ÿõ‹zÛ8ë¦a¯þüÆóíúaÙC^¨“wЦ™¡É3ž^6ãìIH(ôZ9túO»pZ«ÓÐÓË’Hôc&g›äÝÖ¢]{bQѪ¾¸:´îÙqjãŽlÐ*ø §²(ÿø)&{ ŒÚ}¦âJ½Fʺ‚|OGÔƒY#pµÅ÷çî‘™gÄ„YÛºüî`ºìÛWë;B8¡ôB-+;‚'v|wÛc÷{†ÿpz,zX"½I³ž+ìð°œ÷j¬÷Ï{ÿ*‡Mf³ŠŸ!ðñswÊìo‰K3ó¿ßªƒØŽÜ—~… rÛõ&³åÉ“.1ðÀ¸ØU•^x¦Åã­+ºoþû“g§ÍJMÏœ{ý£üpÿÑ/ïYuÊx4+eÖÇßßyÉ”aC3ÓGN_ù{q"‰á/ørÝ£×]0p@jêÐó_ZSÜI1"~0¾ƒßUxoøè…ÙÙÃRRú<΢¥«‡*(ÀñÕK.˜4&!.6>-ëʯÙ9PðÅü„·ÁÓ:÷MŒ_xÐÖAb;>:“é)‹Iퟚ6 ëº'¾§¢¾û䔨ÌÙŸý|ï¦õOMºðƒ+F¦Íù´°=¯›3äµ Ïîûƛ̖˜~Ó#(a›e¸ñLþßöWÖæÚ½mËÆ­ï(²ú IÁ¡=[6®Ûºmg‘ÕßxA:¶Ûæõ›6nÜw0×Å aå,F*”2Œã Üd‘žZ\EòåGvnݸiÃú{T¹™ž!¬<-É9ÆÉ’f͘”c hE€QÙƒL*%•³yýÛrÛÆuEAζwKq«ÛýËk~ß¼iŒDDí%3ÿï ûÊ«Žíß¹ãïÍoßU\ë‡ø«ömÞrðô!·sãº|vÖð@—0LOáUUW–¿×ß[6®Û¼yË¡ÜS „bHOeáÞí›7­_·eË–‡ m$¿<`QòÄA™™â1`@2àŒµ À1e‹o˜›×Ø”—=VŒ•½zæ7>}‘Av|MEÇ-j›-0li› šØˆ}¼ôÞ±CÒ-ÑñƒÇÍxq}U—[3t ã\:@XsÎH:öýGGüvßCÁVÝ?ÍZ¶^þkìÞüäŦû/œ™à4©w³®­û¼ ïcªÕ¶¯JþšOê€æ&s§¶˜ç¯žpN^qwSwiäCsõ²Ï_9.~=üÌ’)Ï|{ààÑu+.~ù–i¿Ú‚í‰$†?ôÌSc~pìxá¯/L|íŽy•ÌÙy‹!I2PÄΟör­|œÛp÷ ïnß»ý7+4{ß·x ᢧ¸º_¿³Ä0μ¥%ÐüÔ`Cljí0 ‰ ~¾Q™Ùx¢°ø»ÿ¶©l­çik?«³j»µ¦ºâÔºÞÔ¶çdaLÆè™]6eT\ñÑý8…*î­òÉÆL;sj¶P’Ã7 ÁTÚ]æ †ž7kÖìifÜ~h_îK) Ï󬧶ÄÊpê89)Åmy»‹x温³/¼pXª&oÿ^ÃzV†3è)ö±Qc‡S‚ßát‡†ã8– ±¼Çéc”Ψ&O·r}TüØI)rÊ8vÞåW_{ÙóL&}÷#ê ™žÂ‚øÁãg\xé´±©Å‡w¹0 5ĹZ‡\)`Üy!L9*9>ü¬áxŽÅ8¤ICÆM»`þô)ÞÒCE!È»ö癎›5ï’Y3§¥'Fi5Jèó[$¿½<íMÚlÍ>»æ¢/òãþoýŽ_¿Xôòå.¾Kïvƒ\áÎ/ÿr3çÆvÜÈ´ÙŸ±Aü¶`æâÏJ¬úz_ΞO_]ÕþÓùQÿjÏÙI¿ùƒ4vÛí?—4³•ÜñUÁk_-Ÿ<´tlÒÜ;VÞ¤w,Ùe%eè¥ïä:í·Ý³|fÙë•ë~SÆÜ® :ÕŠ…œx§7™K$rI”¬.ç„øÙœ½ò²Á@üÄ»žI¡–¿t´=‘Äð sVÎϲ2æ<GØ?®ñŸÕ“Ú_¾åÔË×%1ïê[ž]ùq®=$þ”ùð}³³‡ÆE[Ò†NyñÃù%?¼ •ÃïOT¿õ^ýÛÏþnÿ¬šÀ:Nl„ÌžïŸù½.8öÊDñDÌù¯_9* R·|ÛiÑs½m;.)ÖÄúœ¬4AŠ+)5Æ{ ê‚©çOˆÕKYOšÈC€a@à='ìÁäóÎK4)<Œ÷•TKe+hÝôý÷¿m^¿n÷þcÆþ£ÆÅ)Y¿7·Ò›9q|b”ŠgY™1- °2\è)ΈÀÚ ZIÈãkÑ;ÚŸîÆ P€uÛj­5µµuÝŒˆg:J¦4j\¿Xãu c^XŒIIEª†.<â‘á 6ß&Ac]xr ®ê6V0$©´R£LŒg8@%gEûËOjT”À{ŒèŸsÁ ë †Ã·H¾µ¦¢Í:Jæ:™w ¯Èéñó`¸Œ(Ê«.üóÇŸ FVg0[ŒǶЌªj3OF°Þ³–}Ó0çL“XU‡µ,X÷ˆ[âê ¨b®—àOu~A€é÷+G2Þšÿ{æÞ_~Ù!Ü{A°ÃF¦u àˆ¦r¶Ù m?…x_º¦©`Ým͈sÓ8ë)W¿7ì¹Á·~yêîÓ 8RZanµö*ýŽAÖÛ>w`Êø»¤ÒÄËtÌÿª=?œrM½<¡“ÑI´“q왿Š<—›uI¿·ô“Ó\w|7ß±H¬¹Óîì®&"$¦ì©eO½è®ß“5ðùûw]òUÖ¬ÿ<<ä‘÷¶~žE«ð–-KËþJ ;}‰pçÔÏk³ªž«ÆŸHמ1±‘Bl¯N›uR¢‰üíFÚ›z&0bšÝ°‚¦`@h2~-ˆc`Ž@½£¨Åëš1?'4y’†!>N*T Ü妒‡,Û°ý3%@ÀEW^#Å›é$PÛS2tBH•^VÓãâ3FÔ2™‰ …†ª  Äi’RõW‚MGSm b¨io-ÛyaD»`¸L©¢ òZ·ì=¦î?rÚ¤$µ\Êùþôk!†‘ài#ÏKaƒu¶šÊÒc§Ni³³³H¬Eyn;Okkª#¨=J‘˜™9¨ƒmÕ20ütc€Q4Þ`+)ËÈÈ céWŸÿœ1ûþÍ÷,K먑iÝ7wÖ¶× ‰³¹ÉÚ­Ñ÷éì‚€Ó5ŸP¯Z6eÛ’;mœ ž‘æKqlÙþÚÖWéÝ´ÿòǪ}Éÿ͆\žmþ飷 BÄqªNN‹#di R5›¾ÍÀÓ'­û^þ­.pÕ Q°²ï4þôçV«i|z"1¥gíÀ%#”T Öt®+ q«nŸeÑ*µ{÷6 LÊ<š¢yïü­Ï¬žü¬Ç:Ö§Û“ò¸ôŒŒô´~Z)ÑÞš~mïæŽAF\B­„VZ†5N¯fxi´¼þÚ–l8eÆ Pâ <[+NþÃ)3@‡ÃóœÓÅ F-–Ìò,Çq‚,Ý$«ØW¨UÄà8j Ú¬ÕÖšÓ‡›5EV†0ò”P%*¨ª]ÇHk¶N%ÀC¤8Æù9ñVïaÆÅ0ÑN «˜µNEµ™L1.‰ `õmu!Ú¤@€§Zäåû««Oº•ý³€a'Ñnæ9Æë´Û¬5u޲ Ç Ë A»­¦²°\\6 †Ç)©%1}ìä™XÈV#SaÍ“Óæ6ó4âË\:8Ùf‰nÙ_ë‚â× ó/'t­Y ƒß˜ÿûƒ+:nQ[·ÀMïÓ^ƒ&1Ì—àØªãΦwërk†tü{4’8ÿí TÁÂýµõÝ,iÊê«Ò¿¹ö¿Ÿþµ§¢ªºðèž^Zø“= 5G©ˆÇ~/›5/zëàï¾¥0_V¯èî¯_R”|pþKÖí>\X»æÓ—f_ºjÐoÜׯ¾+î*Y¼ô›mÕÖê?ß»ï­*nÑCƒ:©ïÀ '^~÷ûßýqøxAAÞáoß~ôÉ÷¸û†Óêl ‰¿±£à¯Ü}ÿãÍ&pÌ{rä©Ï_\²·öâÇGœQÿ}±òò_·TÚì‡;‚·Õgı®Šj¼>¿Ïã(ÎÝÒa J!ÔîjœP¥ê¥‡vå Wq<«wE(û¤'6íðúƒA¿ëÔ¡C„,v‚îš`Ú´~œÿD ¥£*Þ²ÁæpC!¿ÇYq*×Ê¡ìÚ#aèÒ{|ÓÁ|«Ýéóy]uÖ¢ÜNºq3¥ÎC'8 ƒ«Ì?Š ºR"P^1,Ëu?"‚Vµ™L†¬w_n+Ä„leGKC0}ˆA`8€*99dÛSgè8Ÿ/ìdCžã8ŽãpRObØ «Ïí²þº¼ѓÇÊN•Vy}¿×UYtœƒ J&“XÓäc¸¢Í<=ëUŒ’|n¼ùéûß÷ðòÞ|ª;KI&L‚ë IDAT,}ÈWýïÕ˜:hdZ·Àͼ•í4h¤´ßÛ—¥~xÅßn=\Y]uhçïn¨úgµfDo kžaܤ~†I_Y1kÄ?ɦÌ~é÷WÌ¿ùÈõV{Ƙã§>%ÅÅŸnO×Ýš¼9J Ô¦Ý&°¿X&_Ö„EôÜ-›ÕÏ=·jáuŸÛ|‚¹ßÀùOþïÉ[f6Þ$ë‰w?<=öÁ<‰9ã‘w×Ï7J„ˆÔlú c{ÆÄ‘Q— ¤|óéNUÂ’4ð¦§>zæÒ$ €5¯ß}ó½Ó¾"µjCêï\µïºŸ%´œÿ éh—\ÔOÝx²£Ä¶OÿþéöÚÎÏ´mÚ„mkKÏãW.Ž»æÙQCžÄd™å…FJBZÕoäiqi~©Ë1B©5 ›”m a]kâ h)OÌ̉¼¿·æ$¡DÛ÷‹Á¢Š íÝθJ=ö¼ñ€„YHêã"(K’"¿`Ÿ}òàÑ@U\|<Çãg ZªÑG P«%!ode+O IÔÈ챕¥%Ź9–'i¹.*väD$À§e™rsÿÜP@’sòºf§(•v@éÑ£®`¸zÒä1BçfšwQ[ÉG9µYÙ’œ=5N\¢ì?|zª‚tYY!N™cèãµÒ¡1Üáì„ÑÓÅäÃ&çí\SœT$ Žw¬`í·—)>Îp–©S†NŠ¡ §Ð2ùÆ´QU%-ò<=_ïÎPËnø¿NÝ~ÏÈÁïë4š)7¯4®»,ÌVît`™ñâ…©O¼÷à¿i·‘i³n¼A'¶× ]ðÚZëó‹^ºó’r•8à¿K?:CÓ@ükÀÂ:» À±ì?.ëüéu?ÎKBy‰ eJ•BN’!dž|nW¨a2“*ÊBºk {‡j£,BÕÍ #”ZŒ"(0>—Deت}<¡PkdR€e^—›íô’7©Ñ¬œ¶ºÐé†Ñ,ܶº T©–ˤ$Cg™ ×åæ è ÂhZ¡RJhšÀ1(pL0èóz9ŒTiµRš>èuÊÔ&Q*Œiu*Š$ dkkl‘ˆ¨dlß1÷<ÇIUR y6àqú‚¢»ælݤ˜8?ÛÄÛláyÎZg €”©Ô*9¡ p~/§Öʬ55.Uk•Eâ86àsû, Uò±yêtºÿU•µÀDÄ1GÇH ˆs.àu¼mþä±6›¦ílü y¯ÃÖxÇ_ÕxÞçªó¹º"FÐVÓbÆg«ˆ ×ô¶ºiȆ‰g¼Îº6´9ÃÖèòªÂ ›íE(¢ö“Ù\˲~[¾Ê&˜eŒÓÖý¬pO]wW°Æ €BÐUlKØɇmç)@tÇ×ЬÝù& õñâÜ uÕÞ»}+‡K²&+0¡–áQÅG-0qNÒlX“e¤ÑPEE“žZG«ÝáM– ð~§Íä‘–Ň%& k"ˆ¾ˆÇZÕæùÚêJ¤qnƒ6úC @Æ@ ¢-þñ @ ÎYã mô‡@ qvAÚ@ È8C @´E³aÍ“' F@ Î"Í6¡䜨ú~óñÒj'R͹ ã±QêK' –´@ DÁ`45óœȯü`Í¡ìQC®PŸ0çìF :'©>Î6<›„j«ýý_s®šì™0< ©@ ˆ>B3ãìû-ùÇdjµíO;3>]´sNbeŒ¨ÕºáC¯Ý{g@ôQ㬺Ö5hˆÖäÅ õW”6éèœ!ùÄÎä‚ ½!A<#Ujkl¤@ ú¨q†¡ºø˜ éuÕ€£æ´__ˆttÎp‘Ëž\°Ó]W]^x¨i¦#Í ÑG3ÏÝu³¿ƒÑ™I‰WttÎ`vnÛÀÔÑéSî9ms_ñÐÿfè«Æ  @p1€½3àœŠ™*BÓLG ÑG3P´È Ä€ ãìœ2Í`ƒÅÝ$[ )@ ˆ¾jœ‘õï h|rC`£îTQa B(þ ×jõ1ѱz)ñdžµúИé@ ú qF` C™õoቂ¼ÌACÔ*MÓ<Ï9œÎü¹stRb2Òã?ËDkê9#‘ë @ ˆ>kœ8xzüK€^ŸW­Òø~Aàxžçžç8`ÀÌ;qÎ^(I‰ýÚ¼û‡MÚvÃÇ^’„ÝÔ"æ+„ °i¦#è;4{2‹>šxÎä8Ðh™ <ÏCÈq\ÃŽãøˆa£JÊJëv(NQk~¤N™•¨ló§pwæNºyMIDnÕûG á#¨–Æcæ +ÞX±}çö¦'·ïؾâ›¶l¿ž6ÒšÈq†@ DŸ¢åjͦóÅŧ7Dz€ËLà¡^€‡ÂŸëÿ’”~©'OŒ>¦õÝ'ÜÿÈ„†yèÝõúÔ¯Uã†ýöÎ;®‰ä à³iô& º„ÒAÁ‚ Å~€ õ°÷Þ°Wì»Ø{?vѳ‹]TT,H'”²¿?!R6›,(w÷¾ÎËîì̼yïÍìËÌNVÊa3jîzêÅ–¾Õ"çÅËM¼¿}óZ$µðóG]¿q5ù}²—g£§Ožù·h‰Ê6 Ÿ—5¡@-â§X„Å@„” ¤Dià@ ‚ˆÅ²93)!‘J¥R)ARKK^Ýú¦ ãóçTB*­8¡³-¤eä‘÷²ÏËÚû>sõ¤È_Ÿànž{Ÿ›÷áòèˆ.¾Þ¾½¢æ¦‰K¢Iá‘53º¶ hêíÛ­ßè3ϳAÜÐnë·üGÑݽ¼¼|ü#ªºLVËÀ£ækà;dÿ;¹$ËÚû8|nVTŸNíÛ´‰Øþ¿O•^/-NÛ=¢m@óf¾-Œ]øÙÁÞîí›äFJ.C¥ËÕÒ²?صŠòÏœ•Ädeb±˜(n!ÂÆÀ0†4540 ³àòoܸ&‘HXUN”„z¯7Oó½k„é¸I ÿœï¡/ê2uñXýüu#ÇŽ[r`¼+Bèú¢þ±¯ç®ØfcÌJº´cÚþ .n¾íldçV÷ÿܱ¥OVT¥—Yk2"^®YÙuõ–Yn¸@ VÜŸørÍÊž›÷Íu0úòw|Qá¼3çëh”»þÄÄÐ}ïnØc©•·oѤa„㳙Ug§(Æž?Ú( ¯¨–JK°¾8çÀ…±1îß±M×®Tž;ómÞœkñêÕg§Ž ìß½û`cmëÓ´yY½DI\¦˜‹Å€‡Î ¶Îœ±+¹‡—FˆKÄ¥Ÿ1„†!ŒÁd”u†Bb‰X!WÅi³’óf²Ï,MK„?W[v¨k©#-þŠQ”}¡P*Ô¦…b~§·y¨Y]Å¢È/3õ«W©$uÌåç4ª“y÷B.Š× s.K¢·E‰Tl׆:œûos˜iUš½(ûž*b«jˆfÓv]œbû´ïîÓ»±g³¶íšQ]}Ä0„ ÃA`ªPiyI`YjopV²ÂõóÆ>±X\r×g`’Ͳ` ÿ`!‰D¢0)T.(;±°Ò‡ÒBˆJŸQÇJ/“ŠBg¯ß2aÿ;~ÜÑO¾þø‘òúÉÁÍ /f „lëi}¿|ç{VvvN>Éeе¼Š›9rÒyù‚/+ÖŸ½÷#ãǵýs÷|l[îz†¦ÍDïºûF/H|õéËÇçk'LÕ¬ß.ÂL»ªìÅ('¼bjU%¤Z¿ïüË”o™Yé¯-$^ºlòàìá£GŽ ìŸÞÞ²+›{û20ÖÇOl¬í~R;úifΠVQ`ef¤#„ví?142LT\ÌY´ˆ³xqjäÔÏ‘Ób·l;fBaQ&a¥ÑYÉžÃÑXº|qÔ (‹U®ôM][?ŠÚ¾±­ùoogLHàÛQ»6rKöZ‚ùÖ…Ü­‹Š§L)ž:U~2n÷¡¾½C '@mÀØÄ´â†aÂÊ‚7ÝÜÜêJššLýüÀúהDz‹üœõQmù­‚ž$úwü膠–RqY+÷ƒXÍ}šÇïÝ››KÈH+yM£üm„žž¾‹€’Œ t‹ïâ?`„¹~õ¾§HÝÀ !oL¢™½Ö§%ÿSl,k@í ΘŒ’‡ÊOZYZ[YZ«QôÍ«—jO;ÇŸHøÙk˜¢Ñ¨¥Á‹!{ÀŸ½üÛ PK)ÿS²gýÿ0sµ78ƒ×,þ£@í Î€ß ‹$MÿÁus´tô¯AÿÁuPüÂ3¡°¨ì^þð†þà£=çNŸ%@- Îôô òrsÄ~¾Míü+ûù*†õ:€ZBxÿÈÊ—5%¾¾__PмÜPÔ*ÎN;ª¨-ÁB(¸cç:Æ&  €_FxÿHø) €Z„ Á!ɵçYÄ|ÎC u³íqæ#•\=Xs¹\.—kγtñòÿsæº/Å’ZÒø÷{7­Ùtù×ç­Š~Î%º27·²w îuüQ†Éø5¾Á¢~iÁ#ÂLG*J;›U4£±1ÅŒºõ­_âGH‹ßÝ?¿xÃâÛ÷³žœY+†³}±ëR;Œú³Õ/ÎKf-»­±3BY©§7-ÒÒäé=_}ŽÒŒRQÆÈ À3Ÿ ŒÜÔÞ$+%iÿ–åý1š«K±ê…ëcMØ%ÁºžµUYÌ'ú¾r×9O¯à€Ìý¾”Ë•zqr×I{¼Â'o_àžùêòŒùÑí3Í®¯é(Kͼ÷PÓÂóώᦜ¯/n¬Ž¾õ\roß*yÿÑ[ÛÙrôk›Tù_Ž=—û¸3Œ³¿¥w×f™k¡Çâœn£Öè„L;´¡™3²ÐÏ~#,Më QŽ=Ìu5óTGýÒŒû4Ú×e3òRwK1í^¦ÚTëÐv B¡6í]ržôÜŸ6>¬®6»" –A‰® ògÙyLZq!Õ·»•ÒŒOWEœ|'˜sñVd#„Bí{èûR¤A½ê–ÁíyÌÊâE›·/°0ôîP׊ÁÙ¦)ǵëö:¶d†jÑÂ6÷vÇU£ž-në¬ÍFy,Œß"¿´k÷&EOºn›û¢`@m¶Ò¼ÿhÂöž «}R³TÏvRpMèh@í÷XQþ£"IËÑ}šX€€Ú€ó°ÅÅk;Í}2kŽ›qMץ²fòÞûn¡´k×µŒCõ™ê¼“Ñ!œº–S6­šû.a|ß7G¾mƒán§Ê΋…ìy]÷¼UÌ>ÉÃÞ½Ã^¥ye¦år¹SÞ¦¬Ÿ2 ±“-oëZ(%B ø\.7âAZþ÷íòµ¼BJ‹€Jó~º²½Ops[>ÏÚѽGTô‹<‘ºš>Bˆ ¶Ò7wë ]|Xid†B v='Õ¢i¾  rAª6õ¡ôSÏîòtÛÞí©pí›ÊžÃÀJ‡ ˆ|‰:y+åõñeA^N<¾çÈóɹŠIä¾Êx¸¿WPKߣE—½3åç…9—'ðótåóxöΞ}†ÏyšSLÝ'å.Qé"‰o”[l¤®ær¹±_ó©ø3$”‰ßݧ†”;/«7åâÆÿFü Ú éÏ©WwüÑÞÏÎ’Ç·²kÖªÓ¼=ï(ÚèÉ¢Ö|k﫱S|Ýy|Û–]‡\þ( b#¥º"Ï«´w+õ+r#üµe^§–M¬ù<Gîƒ&ßÎQ÷ªlD.³R]‘x¬RßP{&çU\G.—kåôBè Ÿ“L<ÅeMrŸ¤ÓSªj‘0û2—Ëž?ØÙÆÊ»ÓÈ' +}\l‰’ùCTýJV“iûF•þL…ÌKóÄÒþML+&Ò‚>k?ÏÝuþá¿Úk¼UÔ™Eù‚úÎüd²eßÑcwŽo™þ²ìv¥ÔF’âÔÇÐæsw^<¼ÔA÷adÛ0y*‰”êŠLST]9ÈmôxaŽãÛJ›_œ›hÎåöKøLÅF*éªb^’Þ­tÌ!A˜}™ÇåvXýPñd‘„ªoØH¥Ñ¬ÒöVå±äõÒÉ)ÊJÀq|\r¶ªc¬Úõ’´H&̆/‚ "œ¬½£n‘´²­­ûxú#Ò’f¶n#KïŠÄá^õLžJ§d¥h’¼^ò¾_s#!y/£#³œô§ƒp?ü£€º_‘ûFþ·=8ŽÏx’.;|½#ÄœçDmYã8;;[è\giò#}ÔXëåî÷²ÃºMæÔabKާ”<Þ´å©g´qéCëäyå¸Lîð+פ¿Ê1°)_ó5vËݿϥRÌÎÒv 쬬¬\}–"„^Š©ødúMκŸÅÒjP© ƒjª%ûÌ1²QÔ™µê„è0+FÏ9tîZò—¬r©ÊmÄÔ ¯W2°õšºê°^ïK¡b#%º¢–·R(Ž9•’þp³˜ Æöýi›°ƒªoØHÙØ ~{Éëý]#0EŸT£^¥-2×`"„pS ×BišiJŠ¿Ñ‘v~ɯ.ø|†Û+JEžJ§d:cy½ä}¿æFBò^FGf9C„Ð}jO+‘ø†¶YXßúº§§ÿ%;\½"©^óEˆú†€{îëYD1úñl·†A€»Ž 3éá#w­o%)ÊýßÞy±Ç¶&ŽêÇ“Ý QŠP̸ÚÏʪì~,‰ôôsJŸšª;«‘ñô5{Pß9E™gý(è»ÇW>âç-{¢¢¾Ö¯ Î> Åšfe~a,C=&V˜Ju¥ŸÁÔmÒ¤‰ìs‹À¶I f>Öå|B¨ÒgüdKÛ!”÷:¯ä¡Åñõ/šÑ3M­&øŒnEˆ;ð-?ÈPù~çQû'½ÝmÃ(‚Á2Œ˜ðÓÌz6?-‘87öD5õñ pÊlÜ{æòqÝ'ðõ)æ%Õ•¾¾ÂÓp¬”tEßÀ˜ÚœÒD ±BòYêÄ9Gn9}Atsg= –0ëB›. äSîd>YþAÓŸ¥")Æ`WqÖ”mb(jƒŽÌl½&—ãÏ[¿wÞ¨ýbC~ã)k¶ExšP´ƒiÈVðùºlæ—ÒzÉmD®+Šy+r(Ž9•"ø @9é°Ôó ‘£~{Éëý}#0EŸT¹^*>)»©cˆÁb „0†¤Å4G$B"ÈK-¬Êf:´ð²‡ÍÉSé”LkÌQ¦+²¾_“#!Y/£'³B`#„„„jËšUúB¡¨è&{†E¿,ìi‘³çXzá„÷öQά-Ì…%Ýq*—;µD/\®¡õŠg×{Q‹©i% 8¼ýZ|oâ:³×ìÐ;+YB›§ÁÒè½1n ÝO×sêÉ?ûÏÌï¸íFît£kYšüé ê”jHy^ÅîôËàrX¿—ÝRqVž„°àª5žA(!dÈd B!Z'Ä!Ž!ÄÖqóÔã¼¾v¡ÆýÖY IDAT!=·&6HÁP/8CR1Bˆ…aÔÆníQ«þ9ûóÛ/9&VÅvN‘„úÖ­ôb#׎L|œ…øúªæ­l?7GL”züG¡XÓLO%ߨ”…û_Z´Û=Ä¿äñˆO‡Ê]P¥OÒó Œ…Éf@K[WùŒ©Úþ¬k«+yûáû³¹_Ø&¿0DˆÞÜOXRšW),=¶Tœ©ÞQUÞ9ïWg—>PŸñ4FBžípµ*‘\ʲ4K~Gë®–0ç–|ÛXQæ-„¯¡¡ì0º¯]ÞLJSÔé{E??+›°ôÆê[_MjÔ1wvq6Óažµ€¥í8ŽWâv‚ŸKþv}?BÈÜZ—J^å_t ɪ%&(Ê8ûX ²‹°¤ï¹b©^¶uÿÙ–‹å. ñIrÈ}C×Jä?Ñœ~û^5ßÒ:›‹…Ÿ^R^ϪNÆØvží¦Žp å—º„R„xÅóû|ߟ\(¶ëãh#:ö%éÝtüÊÄc ÃVnOR<)”V›ž«’™Ž®È¡?«GµŽ±ÕÙ"µG¤\oWÊAy³û§M‚ä©tJþºª¬ï×ÜHHÞËèÈ,çÇ­d cuRñ‰H|!Ä`×[dþxé²ig?9ž"»£(þœÒî®eé4Œòñ(J?ü^ˆ¶¶o¦jØ(ǸáŒó=‡FM_úd;Cc.óþ³Uáè>m¸œôÏo¯'œÉºaCC“Òï ús|̆.{?¯pøtOÅ¢”æUŠE(¿èÚ™Õ'®;ã „,mlY”¤ª¼þ+Æ0ü¦š;'²5#ãeÌ”x]óYF”'­r.]º„*Îϸsfóåì¢öËË’üæõ( ¾px'OFîÇÝKVjxÍ´- ÎNÜÝö¤ÿ„6ÞŽÒÈÊøGòݤ‘>µÕçÁ¾mê´mãåd¥E>º¼Ûé”a›½õËòÞúë\–XúýqB(ñ¹l-–.¿¹¿‹!B¨8÷ÆÈE7|Ýít°‚{vï:Ÿ¶þ¦^i¼ÒÕÓߦM›¦  5ˆO¯mÚ~^o7·tª‰rArõÞÒêzÿ‰Ð-ïrcœëPÏEÇŸ³“GE­ÐiÓš[Gúlõ§öQòX–Bß×<øG¤ÍâÑVšÙÛfFsô-óÇ)ÚˆŽ}Iz7¿âÄF¸ ^:¼`z7W–0ãöÙøô±Ë¬ è$2“·—ÜcÉ¡?«}]ÕP‹Ô‘Âcú¬è±lþ1Ÿ‰~¹wdøÑÅbÉSé”\sº"ïû57’÷2:2Ëy¸çƒNýÛŠoÈh6gH¡×ô÷ ÎÚ?¬c:ÒÝšq¶gã&}‚xµµ£}ãh•ö¿ôp´ròݯx&íÞLLJœN‘æ¾K˜4 Ô½…ß­i@ä˜è«?í%É|1Çq¾]kùO9äye{:¦¾Ï©J6‰(s~TwW{KÙ^Âj{•æý°¥gko+ sK{×nƒg>É)¦X¦ânMž•ƒoÛîËâoü´éãôÆ^m}lø|;×nƒ§ÿý½P1UTøaÕ”AÞîŽæ<Ï€a³6~¦Ö¢¸ÉƒZ6s·æYpÍù|ÛÏÚpZô³ª;;Xâ?ã?ù^É6ºüçý»:ZóÌy6>m{m<ýL1ãöùBZû6°µär-¸ûDN\þZP¦ ò¼J÷¿XðÝßœ\Þª±£¹…•_§ÈóÉ9}ƒ|7¸èÃÜ?Clx|k‡¶½Fž²«¢Uå“×¼𠴜ý¢oü7µ™³9Ï&°û°³÷VºG‰ÄŸ•2»©C“ˆ¿*îÈ#ߥ¶?¦Ÿ5 G3÷ÛÏ ,·§’<•NÉTvkV¥I’z•öý I{™ ‚ˆ2Üù=$«äTJ}CFK×Ö›eŸB˜,8ËÌHG;}2¬ßÀ¼Üœ“ÇŽwì\Ǹf¿ð+ùvsb“°K7_ß³à0k¹¨Oµî´Eòî6X €ZÂç¿5öêÎË«õØÕü,eþ×½öžÃO>ZÒØ!„aÔ ÿê5_Ò /ûT „hΤ+>Óâª72¤<ÿûVÂô°šFþó•ýH8 ÿsï½ýô Ñ÷Þ+65oi_½Å>_õgè¡fö^+ŽÇržpƒà þChÕmÔªî?@N·©S¦‚¹¨-09ææÕ^l“•×?¯¬ì›4h öÁgÍàŒäÚó,b>ç!„†ºÙö8óQvþU\G ~ò¼ï÷nZ³é²z©µ5͹¥€QáŸeßj‘yM3Gÿã` fƒ³‚ F„™ŽT”v6«¨Mc^¡ú~_ì:’àŒ4µ¶ÑÿXBbbâ¡Yîà=Õbý¥ÌÆÖv¶Vú`@ TØ­™qÿ‚¦QûºlF^ên)¦ÝËTû¿©2ýú\}„Du8à=@U„í=ZÔB…™³ä½)öÝBi×®k‡êÿüΩŒ‡û{5±äñ=ZtÙû¸ìõm ø\.7âAZþ÷íòÕÀB •Ô'‹Z󭽯ÆNñuwäñm[vrùãO/¨O½ºãö~v–<¾•]³Væí){««0çòä¡~ž®|ÏÞÙ³Ïð9OsŠK’²/s¹Üèùƒm¬¼;|’°ÒÇÅÖÁ£Õ¾ä\Šõ’“û.a|ß7G¾mƒán§*¦¦år¹SÞ¦¬Ÿ2 ±“-oëZ(%¨”LÒ^òzÉ[D¢+¥2“ç%·¯R])Cò×–yZ6±æól=ºš|;W$Oûte{Ÿàæ¶|žµ£{¨èyeI²…ø”‹CüñUôX¥º’g©¸¬I^oÍyŽR+”\î¡Aêj.—û5¿š,T‚ò™3qá¾m@éQ¿Òç¬þærws[î¿»Ç!DH‹{;Ñoú¡ììØÉSfôÚûÅYÜ—pó¶„ nê8ý{Ë˧ÆË2×/}{ y*BHRœ:â:pî_#kãè‘mÃî<9V—Í@‰òõiÒqô–™ú¬â䧉7^æ*·ó긌žÓߢ®¾0ûÓ‘³»}~vw »4¤¼.ܶſw¿)ÝF·Ú¶=þì˜þKÇ^ës²£ÒzÉ)L»8Hè2o二ìÃ+¦‡¦Ü~p \Þ[Sºp†n:2ݘ!¸uv—„BlFÞ^¥õ’´H©®Hd&ÏKn_ŠºªŠsÓ:Þý¢ëðéZ¸³‹Ó®Û~$£À[ß!”—²' ïL³ ¨Ø­/b&ÏéÚ6ãé͵òÒ‚>k?oÜuÞ‚“Ó·;uUª«ÄÄD„ÐŽ®A*“™¤^µ=‡ägå+Ö…aL##*½LmŸ¤iA J”¼ø\*LJJztï8Žã›n>HJJò´äõ?}3))éÕìå¸8ޝ-}‘ç×›ý+¾Z5¡£»Çôª^ ZUêã…A8Žo+}ãiqn¢9—Û/á³ì0çÃ4Çã¿çSyóhÞ—uò‹e¯°ÝðE@D„“µwÔ-‚ ’V¶µuO¥^É»à8^±¢¡|ÛÀTaÉ[‡E¯xæág?–{i«{ÈVUßÈKÞ^òz©´¨R]©*sż$öUª+„Ù—y\n‡ÕzS²¤äÃÉP¾]ëqÉkÉ<œ…ãøŒ—Yò×9ã8~(­@v˜þt¸ªKÞ^‚ V7upnq¬â+ÆIêUÛs²Þ Ã+ÂïN±E$ö%õ5 •Biæ aggçÌ—ÛYšüHqö¥/Åâ-^Î:l…ïè¬!¥?ëð]ºð¶HÜ iÐ1¦fx=Ùg¶^SWÖë})¨!¤U'D‡¹kÅè9ì¾5tµÁ~9EÇ7ÌÛ~ôÒëÏ?ŠŠÅIB¯ Åòts &Bç0Sq-„¦™¦¤ø•zÉYõ0ÃÌw%^:-ÁÒ²5Öº¸û= ¶P¼ÌerUUAÞ^¥õ’µH™®Èd¦–—Ž®*%ýáf1AŒíûÓ6aÒùšÃ¯r ,çÈWÞ]Æ2±­ŸKE†%Ú`pBMµdŸ9F6!ªK£½äõªí9ºÜQû÷÷®´.•L Ÿ¤cA@ýeMöÜ׳ˆb"ôãÙn ƒw…È !„1µåï„ !Dí*å0˜†Š‹kuÙÌ/©…¥F“Ëñ‹ç­ß;oÔþŒ±!¿ñ”5Û"¼Š76;ÏvSG8ü5åA¾„Ðeb¡\±T 7_òlËEÕ&”ÕË1æ „> %<Ÿ‚ƒÑnu¢¯Ü±\ÌÂÔ4‰D˜ràÈM¶¶C.«º‘Wl¯ÒzIZDGWTòVe_*ºªJ&CXص•Û“‚Æ–JKV6{8\{º:[ÜÑ…!„2žÆH³Nßciú j{ÅeMò>XeáVz„Dð¥X"[»L¿}¯z½P'8strJ»»–¥Ó0ÊÇ£(ýð{!ÚÚ¾™½K¥j,BùE×ά>q-Øg dic«8š“¤bL̓DÚ,m¥™½mf4G¯Ñ2ÿ’[lvò¨¨ú!mZXsëRŸ­^øÔÀ>J·tfh¤·Ù„ýóïößêe®yÿìÆûT»-‘Ô[ôga7†.ÜâÆDÈɽ‘l½ªsìÂeÞ¶ê/ݧ ×€“þùíõ„3yC7lhhB±êâ¼û'NÔ1P.!o¯ÒzIZDGWTòVe_*ºªJƒ€Ø—Á+B‡LïæïÊfÜ>Ÿ>"v™•BÈņߴàAsçD¶fd¼Œ™¯k2ËÁˆ¾Ç’·W˜þ5­PŒÊRFƧOŸB½zf†l¥5ªí9,-??š}°*Lܳ°k#Öœ‹ ÈK¾>rArµÈ Ð ÎB÷cþ6k¶CèÓÉ:õª™!„ø]6M²uR¿¥‚b„Ðíw'œHR™¬ºGg{›9ôMF±M£ -ûV˜•îÒ×4 2+ܳ&úè—ô<¶¾Y“Vý,ž$/³KÜ¡ç£Ç tË'´½Ú¬<:~`»)Ô&©W††Q»‹ŽYÜu«€ ˆ+oSì´X!ízÁW.ï˜?oýüqG2ÅF¸•—w@_ =ú¦"o¯ÒzIZDGWTòVe_šº ^x:Îjẽ["7}ôM<|ÛL6)ùad}˾ÿÛYs9Zùû$jÎs¨ôÁªà´<ÝwäÊÑ ×"‡&mÇïè3¨Óº_&3À !DDfF:BèÜé“aýæåæœÒÕ­a¹¿t‘´ÜeÎoèÜÒÝÝÝÕ­áä÷95Ýì×ÛþhØ8°ZŠÊM™íêÖðzŽPT:%ÕÅ/Óó–vÍå] ¶ˆNÜÒ®¹_ȹV{Õ&åè®-;¯ÿ_­Tϵ¼dàMUÞþ6>¼¡‡/è§æ`Q¿´0ýx!bô0Õ–Š~\ÊŽs3¢’ËÄchLLBhÊĉºvCf ±Cé³~ Inÿé[tÚÙÖ»±3ÄõÀ0À¿>;·—©'DÆ<«m²ÑìƒF–ÖVlÝP{éðñèθ¯Aƒûùýúª+Õs-/oj68ËzrEà ДÍ|=,EZ]M´¨äÒ2ólÓ!„¦!¤iÒ¨Mëf¯å?ËI}‡tmÄדÿVtÍêë"$6âÔBÙhöÁî±»»ÿ£Úû¥R=×ò’P–5ßþ¬oÛ!”~;QÓ¸ƒ.£_ýÛøpW·†}£B':ùÉV@¨/©R®Ïѯ…w&¾ ¾—^$;/̹îêÖpéŠñ¾^^í§=¿¶©}‹¦ÍZ…ý§˜=ùÜúnmüz4é1öò•’e<9ººG»¯Îý&ÞÉ(*'y*’É)Ê<ãêÖpÞûOÛæômÚ°QÓvÝI *õ~½µÿÏ>›4öp÷lÖ¶kDÌáÅÔÔ›û†ôîèÕÈÃÓ»UäÄå¯"E *NnçÝìêÖpÇ÷ŠR!$ýßža]Ûyzxxú;ïžBátd&‡\ÏUµ·ŸWèò¤Š¥ÉÏË´ñùꎈ ÷F-;÷;ò,›ºT$zæÞ˜;ixÇÖþîMýÚ ™¼üEnqµxyTZ¯|áRE±² RŸ$÷+|<<\Ý{’^ðc¿¼á©B) ’@e¼"×3¹&ÉSIJVêÏÏŽ¯íÑ.À£‘Wç~/?š¢Òâ2ŒWÕ22PYÍ’•z;B(ëéñAÝÛ5ªÌ7ȵAGfµ=GéhFÓ¯HzŠÖ§4s¦ðÈÈHW7Ù‡G®n‡ê7ßtac3:Á™eÈÊó-E¢¼»zÌnwp¬¹BH».¥%•¢ô«]»Ú·›ºt¸)#÷dì¨ÐÏç/o6)]3Mû­Yé=xÄüþ3|׬Þxiæ¨u3o‡în#K%$¹ý—Ü;s©…fîeó'ôxêÚ~.‡¡´ä´»ËÃçìñè966ØùÛ£3S‡ŸU”Š<•Nɹ;¯}‡þ1ÛÆ1óÿ¾xPB¡^qAR·áKê´¼r¼SüþŽ;oÊî ‚Ï‡C†/©ëßoù8Fæëóbúõ̼vf!£+B(aAØØCoÚ3ÜÛ…]œ~ãì¾S™…žºlš2“C®g’öþa­?ç÷ÑÅëÅÏŠ»w5/ñ+¢pHÜ×eë÷ãìì #" ™Ôõæf*ßÈõ,Ê»'0l0dRos=anê©Kûwÿzó¯†hzy$¯!tþü9„Ðþ~Ý«è¨5gAšã GÏœ• âÞ˜°?|Å•¬ÇaTKO!¯HôL®I¥z&· ‰?g mf¡ÇÖµ 9sÆÒ5åê"aŽ1BHÛ¬>WaI寉ó2˜6gwÌ—¹‹Gcë‹ÞÝf]ý¶!—]Щ_›FfÚÍô–¾oÖ¿™G#ÃNæ'ÜB¨48“w‰]êhˆrsbyú›l¡´äƒ³iµß1½†jäÉL¼95±,6'O¥S2Õž,´yrÙg¾ •z 3NåI¤ã'hn¢…róð Q(ðæÌX©¦ýÁ•ctBœÍ?úÿ¿üÝä©64¥*ν9þà —{.9ãÕ‘QØÍD‹¦ç÷AòzB\Gé3UžG¯9 Ò7H¨‡×G½ã00†¶¬á¨úz ùxE¢grM*Õ3¹IüùðŒƒFí÷ÌÈ@5n̾suüµ¯ª}¼¢Ø¢Je¦S2¹·#„©08vYw¾BÈNçRà +rß ØËÔ™Žçf4ýФ§¨g}JËšŽŽ¸v"SÃ<ÌËÕªþ÷oÅ’!ÍÝl̵ãŠllR¦©×8y ÏÔ´îXGóÍ¡²ÙB\ƒ‰ªÇajÖÓDišjHEiòT c ±+Q«†Q ‹ûýáOTJÞÿ½ nóò‘Ìk µ¢Tä©tJ¦Hƒ‘AªêJÓ¨6ƒ±qúò ·?|+¿ w*9WÏ"R¾ŠmÔàO†=¼ô¾T™OwK"ª§âI F5ÈL¹žIÚkÚ¬Dø%![(¥ Ÿ:#zÎ-„Pê©ç­,5˜%~Åàt4Ö”}fX"„Þ )}!T¢gBtvÛ’ˆn}¼›5öôjÑa=Bèm‘¤=§rHë¥CÍY渡64{ ùx¥¶&éè™ÜŸã¿ÌüzÊo!îl`¼ª‰ñŠb‹*•¹F=ÃX¼’/¥ÚŽŠ¾A±—©!3Ï!ÍhúIOQÏúT7|:üXÛ‰PÆ«Cú>.Ú,ô{!DŸ…ÆÍ‘=˾ðID"=½Ür'!“ÂX’–-cL}=…/‹\ós†@iÉ„4?G,ÅyeQ©f½: ß$ÈRé”Lúu5UÕ[×ãX쌘mGc¦Ï*X4µ`UO÷’Ú¿%šu ôf ÇÄŠ¾Ò• ¡üOù!m¶ö%—™Ìq”除½ZÆ¡uØKO¾Îñ2ÜÄá÷Ë{+!ÚÞOøfä^©­IµõLîÏ„4?K,­g^¶-LÃØÆ«j¯¨·¨R™kÔc1†“û³l¬£ÜËÔ™Žçf4ýŠdäWÏú*=s¶ÀÕmüŒÎS]~[p†±¹L.KWýaõÓÇ©Ku”–äæJùdþçb‰†©žÒ’1†Ž‹!Ê,{ŠPœ'PpV²T:%S‡¡–®ðfÝbšuC„øÝãk«§ÌX2ttÛ»eª©Ïa&¥•ûRIvž„Àëk•ú(†¡pã, >C«c¡ƒzY 2«¸êGOfÒE‰žIÚ‹14Âêj?üñë®óÈXÇ¥¦ ö}Ï·ž¢ÒLUå2’ëyåÑ·xàšI}½K¦ô¿œ¤Þ":ÔK³½5gA2Ÿ¤=nÝ-H-X£kR==S±Bá—²›“0#Æ«j¯¨û£öx,å^FçGðÕ𥣙Ú~E³‡Rw ‹»—b6nëžCò5X¾ 7:xpÇš–¿wîìO'£´›÷y–VŠð¹:Tƒ3Bºéu‰®…Y ÏòEÖ=,¨”ܧ¾NÚÍ;òrÞý¼í‚<•NÉ¿BWËÚ½Õ˜Av¢‚¤‚Ò°¿³~ÞǸIÉaÖóR‚p4+°x:„4ÿ[qÉ“?¢.U×¾L ‹Ý÷Rñ¤ü:2“C®gòöú´®ŸùàòÞ›i‘MM;tçŒÿ,”„º¨0SÅ1â „ÊmzRZožDªU¯l£Ì«ÝW©·ˆäõÒioÍYÜ'iŽ!–.[*®dm‚Ü‚¿ä++©&U×39a¸î÷k‡åv}²#Æ«š¯jί¨”\•·×èݹ†<‡êh¦º_Ñï¡RÑ3fFÏߢÚÌY]i 3_í IDATKÛ¹¿—«0óÔÇb´:ÈÓF“IQ˜Âï÷®?ÉBI*JpábB( ¨5‡öq´[6}]ûñ]FÿÙ5 ¾>;ãËûÄë—ý—,u¦t§ÄœSQc,g æi .ŸÏÖqš€S)¹ûœ®#ׯ8ë9¼­Ë·G§'ù¬X,y*’kNW9¦MبàmYßPðõÕæUÏõ­ûé”.®7Ÿ;„Ñya¯11“ÃYo6Ì;ªS¿Ý›’ Þ:.,,qr\ª~Íó?$N]ùA…Û¶¾OLDZ±'ŽéäÓ€)̼—p4#ri4OŸ¦Ìä뙼½!î»_Ó÷‹Ñãtíô®ÍJ–?ÈPC•!¾ »3aÕÁIÁNL„\Üd³áäõö4}låƒÞ+=pÇwŽ:šM½Et ¯W˜ù=½H‚Ê•RqVê—/!¶Ži]¶ÒöÖœÉ}’æ¸Â;˜ o_Ú|îv c=Bmãš~{ ‚8q÷µ&Si½Á+ã^͘5*´e¡iëá?ǰQ½æQlÈë}8½ßà›_K–´k·!dl’‹ÒöÖœÉ}’渲h¿|Àõ {æŽZ›_Œ:ÿ÷C®C©é@®grM’§R±`U»ŠFѱÛ.°t\ºÚ{XØm&Æ«ê¯jί¨”\•·×èݹ†<‡|4£ãWäP±¾0ïBÈijWYˆ‚""3#!tîôɰ~órsN;ܱsc“ÌŒtW·†OŸ,Lt3Þ?X¶8É6tDf w÷ä.TüELÎÕÁXy¯®Ì?—žS¨kbÑ¢÷äÙ£š‚V@ ú¿Úçç3œ*Ã`ÄÄî=@M $8«cl’šš jøE_~@œô‚3B’kϳˆùœ‡êfÛãÌG*¹Þîá–·²÷mÛcÕ¡ûµ¤ñï÷nZ³éò?ÅTkš9Ê5ù»pñ?®’T¿Wfõìûb}{ž¥Ç?«ežár¹ƒ^gÑ/*çÝx.—{9[XKš–|ry[ï†| s.—;ümvM{ì?ZWüƒ³‚ F„™ŽT”v6«¨Mccêy'oŒÛ¹s熳r^/ÓyÜ™Oµ"8ۻõ?–˜˜xh–ûïÀØÚÎÖJ_%©~¯Ìÿ,û•|!çtµFÐdè¡“§Ïž=;ÙB¯¦= 6 ÂnÍŒû4Ú×e3òRwK1í^¦ÚÔó6l®ÏAwlóØÑëÌì­+:DƒöUB¿>W!QÎï lï©0¥úí2ÿhDù~ˆ$-G÷ibmðk< 6 ÂÌYòÞûn¡´k×µŒCõ™ê¼?‚Á®ÛÝTK˜{Kv(̹ÁÍmùwçÅÃKtF¶ Sl JµQí ¿ü•X¡Oîæ{öæËeú‰ª¯û‹½“Ä‚y){úÎL©»÷PÜÒ1Wwvm;N®g:öEI%Ù¡³#çnÜ¿sUƒÜÛQÁÝ?KhêY©õéôEíšÐqê¡Áë.Fws¤"ó÷[s:O\¯ÝjØÞƒñ#‚ôFö» JpF&3yO!Ǻ׶ÄÄÄkW „:º(³à<¾>E]©í±5§+o‘‘þ##ýÇž[ ‚ÈÍÉÞ³ckFúB†T˜””ôèÞqÇ7Ý|””äiÉëúfRRÒ«BovuÆqüÒ×,@ùýÝ®9Ýpo·ða¥ç}Y‡ãxü÷|ù™‚GpwÙZñâ¡|ÛÀT¡Xv(*xåÀ3?ûQvørKÇ¥ÈÓŸÇq+˜|° Žãªjƒ„w‡ºò¬šÊ²Ý<~øÒ«‚ 2_ŒãrÍߊ¯\ÝÔÁ¹Å±J ©J**©UAnÁ“¡|»Ö9b©ìðÇÃY8ŽÏx™Eß¾Ï×ã8>7)CvX˜~ÇñžÇ>ÐÔ³RëÓé …§q|•yoÛ ›Å§ßQ÷%ÍlÝFJK/>Ü«qÅžB‘r2«ÔSH”6.9[¥zéxì/Ó@U JÏœaggçÌ—ÛYšüHqö¥/Åâ-^Î:lêñ_߯Î%…14}{MÙ:©ai`(:¾aÞö£—^þQT,FHŠzU(.—Ýer‡Še®z˜aæ»R>ÂÒ²5Öº¸û= ¶(­‹jª%ûÌ1²A½-·B4cY­:!:Ì]+FÏa÷íШ¡« nôs¨«¤EæL„Îa¦âZ!M3MIñ·2e35ÃëéÈ>³õšºê°^ïKA­”o+Sªª¨ë×I,œq>³¨^vß‘cô<Ö?<Ñùã‘ÇšFíl4ó $H,xøUŽåùÚº±ËX&¶õïs©ÈÁ°êŘ£J̪iÜÞ]—ývÏ{Ô…OGÏÊ­O£/Èx³st——ÍÛÆMî`EÝ7v~ɯ×%\þŒ‚Ïp{tý+å/vd2+é)´¾PRÒ•Ô ®(CõîûaÏ}=‹(&B?žíÖ0pW%2CÍÝsÈU‡Åäh›Û8˜é•åMœÓyäö÷‘ÓD7wÖÓ` ³.´é² âR·¾VÅÑ9E(f\ígeUöè›T$ÒÓÏQ¸µkÊWm1Ä@Uö|ŽÊ°õš\Ž_ø2ÛÛh%Ç**ïù 1ÑùÎÙ/uNÿíÞIbÁÏB±¦YÙÍcê1±ÂÔêyˆÁÔ×g•iÒBƒ•’. ©g¥ÖW¿/”ònÏý?Â\öî±÷݃?¬õ©ø!d‹¥V:eß=pva“ËLÞSè@QWjÄ|5§+€ê ά-Ì…%·Ä©\îÔ’;—kh½âÙõ^«qlìÙD¿’íQ ÷¿´h·#zˆ¿ì0ïÓ!’[ÚÏ÷m6Oƒ¥Ñ{cÜ@;ÅÓLN½_ 5s¿°M~aˆ½¹Ÿ°xĘYáÂ_žÂTiQUHEé¹B>!ô®H¬õóÍC•íà¡ Œ¡9°¾öÝï_³o6œ¼×yöîÝiy;¾åÛͳW!ŠB˜Ú©êÁå°/ûY/©8+OBXpµª¥p©$7GL”Æg…bM3½šö:õû‚|"'öÜ’¶f(ÑcV×áA÷vÖe3”ÊŒ1uë°˜Åée_DyyÕ(3IOùºRÙ'kRW*Ì(½âì_ΞŒÅ0lÆ¡Ó.\°Ödµ\sàÂ… G¶·¥_}®Xª…—m’¶å"õ¼£Ýê|»rÇÒÆV+ž ³ôØRq&‰¶g»©#D‚Gù¥fÓiBˆ Ä+ž—ˆTð}r¡Ø®OñŽ1!Tqã!mø·çfÜ=¿íÊ·¾õBívoK)÷qWaV *©¨¤ªGƒœ÷«³Å%jÏx#!ÏvxµØ— $«^”d,Ê8ûX ²‹°¬.¯«‰¾ CÏF14æY§›sµû„ã}cWçÛ•²=ov¿«~™+ë)¿WWêõ#:º¨ÎàÌÑÉ©¾ä,K§a”‡µÙ‹÷B4«}3gggGÛjx¸g¤·Ù»ýóï¦äá½S«îSáVÚ9v¡Î×m­úO=rþ‰·ož>´srTÏaÓ©—`Ê/Ê<³úĵ×oß¾}ûVLí®‘<ª÷ðûN\¸sï^‰ã>5°Ò-ë¢Ó"„ÆÔ<øGäî3ÿ»‘plD×hŽ^£eþ?&ýY6táî¿Ìý3ÔɆǷvhÛkäù'»pŸú>§Ü5Å3Šä¾K˜4 Ô½…ß­i@ä˜è«Eò½~æ<Dzý\ŸWá8¾ñËOÛK%¢ÌùQÝ]í-qÇq<¥HL¥E…é'F èÑ̽ÏÜÜÆ©qŸás^äSi‘lëÙéŒB‚ ¦{Ø-|,Û5fåØC¾[“gÕìÅ¡Å-=ÌyVþ]_üWQ€‡»£[¸;p¹\Ç_ˆ¨hƒQa²—ë7öެ­lyλä©×¼𠴜ý¢TTR«Ú­InÁ [z¶ö¶²0·´wí6x擜âr%¨gßçë‚-øîoN.oÕØÑÜÂʯSäùäŠ^§tã!‰õéôùnMù™UÝÜy6~r‹©È|g×ÜVžNææü¦­ûl?3úDr™É{ ÝšäõÒôØÒõÝš˜,8ËÌHG;}2¬ßÀ¼Üœ“ÇŽwì\ÇØ"×_É“E­;m¤¼» ª€ÿ&†ý´!Àìå+­!º½|®õü%ÒÒýJÌn¼›UŒ¢£Aü P@¨j傳—èøIB® ˜ßœ!4!4g¨€_ŸP›ƒ3¹¾OŒ¸<¾¥¦¦&(à߇ÎßWtî]=À?'8käwÃÊË·EKCCPÀ¿3 ÁÔZ Îuƒ³GG´nB~MêÙCñ‡îª—ZÛˆëXÊï ë€Ëÿ&?ûteGTx÷¶­ƒ|Ì£¯j´‘àóòÀÀÀ»yÅ5­„wû‡µi׳ZŠ"—™N‹~™6þ›ü³FBjupFiÐ9whß¡;ê¥Ö6BVÅÅÇÇÇD9þ. Íù<®î¿ÆÉ‰`Üâ½®=cÖ®Û°aÃÀz:ôµñÛmÕ>NÈ` *¢kZW!±ûw ÐaÉÚÿ"}Š _fŠ$mÃÚ»˜ëV—6~»à÷gÙ/Ï/ˆÙõ4%Cwì?un{‡’‡´m-Ë^Mw<0°äuË{Î]¬Ïa(M}7dä‘‚<׺ü5WbÑ ÉŸ“'6©_öã·i÷NÄl;úìÝW☘[µè2ùÏŽ%o9,Ü]¿êø£¤—ß2l:NžþƒG²Óe#„Šóîw™Ú½—ß…ã‰:6þ³ÂÍç-ÞŸÍ®?,fU°….•zÉ|¾»1þöÓ· Û֭ʼn#Öѧ ³/µï¶¨ÓöÝõŽnÜSmÄçGÍùêÊkµá3™«+<à“@ˆårùd> 4­Ÿ4ÅK&Œ]ô÷½Cf­¾ú"¹» Tå•jõSbFws€¯çþu(q‹Ž›Qó?ßv/òFoÉ+ªäTõÛ¹ýG¼ u•l|Ðud€C·Ó9WÞ5y^fç’Ó‹x­vgÌ7,¬þZŸ¼lä¶ ~í"gW¹¼Þ¶¦ÉdÈ—>ÊYuRèø^úŒ‘’W¿Y‘_a‘g6=êôš© ½À·=9hxbÚ…‚•aîcf>j½lp9̳›åˆ5#*Mé7I9·}>Z¿0²ê–ÎÝz«õÀ1æÒG«‡ûÅ—æå`³š½np™¡¡¦]œoDõEÙ"÷v_=¨Ôu·³@%wU¿–´ñîŸxÝ]@è&¢Žf§dò÷öõnßRf_¿¬Ó~ùùæ#g.ÝVT©ÑÐðk…¶æ¸« ixoúL&©@§yÁæ¼ÌöüPì4¿æ-/%hýžƒà룡þRØ.ª·e»êpʹ_DÍ{a¿Q ¸ô¬^&I~¿U{|û–PÓGy÷J%Ó$ÕûªíÇQÄ¡ŸCý—:£1³l¯9Lõ Ù˜cÎ),—†…×T|£[C~¡EžÙô¨#¨HEÕ08¾ã#æ?8öÂÜ9ÆÌ|ÔzÙà2r˜g7ËkFTÊþ©¥éqƒÛÖ½±zkÑü˜Å®‘+W4¶rò¹gÒ"+B¨9g”_½~À=m™HÒ®îV…,|^Y]3ùoK‰Ý¼ÿÄæ”\e¹ÖÞ½cÔ§I~U·àú¦é+Ž<=ãã.^b>¥)ùzò̬º/ì†g¥HŠ‚"@¯as^æzâ‰ZK^‰0 îmZ±¤ô;ºÈ,yÍ­W)µ:™»¨öå¤Å›¯R) kÛNÖí£gÔ¾NoÚÙRDåó Ó1³n¯Lö Ù5CÌ´^U¢Õ»zÔfR(s´È3³u”mÝå6Ô¥ŠcÌ&Zd½lp9̳›åˆmtTª'åÐVÄ3£b&ù®^^-Œg÷˜-²"!„šaqf=z­²TO×¼E~¤Ö ê,O®AÄ}´öÁ­ËÛ–§nX¸8g­>ªb€Ø] wʵ2; Ælr[ÓüL2·×š3!Ôä‹3JÌ£uÅf¥iíî;Å1í âeîà mÈ@·ÿ_4[ùõš8FñŸŒÊõ´˜$ LG dµ×0Ý9x©qo8M—ïÈ€§j}Íש ÆvpØøí=¦‡6þR¨êµUý$÷Ì5žPÑ?¬#ûG “‹÷]>®C4·üÊþ±ý’üÛ{^ëzÛQßÞ¥£i¿^26åÞÞ†pìA³ûh¨‹èЕ|€ª zî{ÄþŒ³AÓºÝw«F]¥òÂO*M×pwî13µ^6,“+c³›yÄŠ=Ä´NU¨Ñöò”ßßd•£ï‘¿ûÈ/!ãjgŸZ_µ³ivÌ,·5™×Ɇ0·×z3!Ôä‹3ù{n•ùöþ;?ÔKFx´lUw¥`8JP‚S CxÄÕä­Gcúv Úzûv û,ž±cìÒ‰q걃z¸HøEÏ^½|¾ld\œ7Ûý êVZZšH:ôâL­,|U¡€RMk•À·u–Úñ`Ðüˆ3÷ÍZÓfâûE?ŸKû¹Ÿpt7Ž˜°&&aÓÇÃzÊ{»2Ž‹]ûNUسy,÷ö6„¹™³Á¥ÂçÌž³3ëlçûxÞ<³üÌSö1sÌAòOšà93ÒSXv43ƒ/î0·§œÍ33ÇÌ|ÔzÙà’+æÙÍduìG5Ï–¸êNêªÅÑÃËi¿çüôñ‹§f4⣾†Ï[uvû^kb‡§fo‹=¤¢izlj¼V „Ρ۷%gmÞŸµò´R¥µ—yøGÈÅÜsx#uæ¼oj®ñß¹ڌذ5ÆZøM\7VgïŸ{|»§ß;qKƒN;'$XmŸJÜ#¶-Ó¤o;œôé!Z`ß18bõœ)|vï³­×^ædΗ>r œš1“ÈØ÷EJ¹KÛÀÈE!k/²Œ™c6HÊ>cFÐÒËî¿R{xÿ)>i®KõuÜ\bf>j½lpÉóìf±|I÷´˜Á+v§ŽØ ÿž’&|²}`¡36,ñزïÄÁø/^¾A=¢…Ücæ¾N6\P2µ×z3!ô{!€¦éW/_ÀãIŽä<š¸pO›n¡½û:8Zý—áÇ`OÜó7û÷:¯=ÊÊxzìÄç6øcF¡FrÍLtÉ\ ˜ˆÙ@èíªÌÿ|S“¡×eìÈ îäî$.zp#sý­-ÇÊ !„jf°8kBµ4¯ô—¯ÖœøÇ«×•¶Nn!C§ÍŠê‚YA!„°8³¤“²NMú— ’²‹O]÷V…”ššÚÐ!;QãXéÕIDATÏ¿~Ù¶É͇æ×"ÌBaq†þ@,X€-ÂþE!dYxÉB!„g!„BÈ#ÛšöW/„Þ»ÛêÎe¡Pˆ B¡æÇöÛs˜„šTqöÝÅPL B!„Ðï^œ=óñ H袮¬üéÇ[í:x‹DøÓ!Ô|õéƒ9@èí/μaBTeIñõÃ=‹¤Î˜ „B¡ß~!!„B‹3„B!„ÅB!„g!„B‹3„B!,ÎB!„B!„j&þ¹FZèÀý|IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/06_post_data.png0000644000175000017500000007532212032647166025273 0ustar ebourgebourg‰PNG  IHDR÷ÍúsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ2:ô  IDATxÚì½}l#é}çù«ºÉb{ÿL±#JÍôJ°f¶qNiÆšÄ-ŠDƒfÓ¢†ìÓðëØ\½$œöÒ$r@ÖCZçžt+‰a²sXJZhO¨öu8zK2œfÒä*É6ž¨ÑfKTœÝÀÞ’»µ«îâK±XU,¾H¢Ôß êáSÏûó{¾õ{žb\D"zþü9‰K—.±h\H r•••••¨¨€óÀ+µA¢˜Yñ'È=·93È0µáßÙøÜ'Žoñ¬ºBWÝs›3eFüŠ8€oeqÔ$ËTžµÁÈÔi¾v/:¾m òôZA;³eE13o·Ûíó™N-!p±y¥‰kfpvkk¶´–«:~Þ¬AZú%¿Ž^ˆOy£{”Hef¸A5<²XˆOGr¹ü‘ Ý€:È—Ó5êu ‚áØæ>"²˜»eab!>e·;‡ÃaŸÏÈ£‹b!>Uúj*^¢Úç3¢¨êt© ÔI<3_ /~kŸ$<’¶ØX–8ðè/¯ÊÅÂÚ´ŸgY…pÑ"»àçYÖí­œË‘¼;{¥³;,(kQÌ,ŒŒG÷J_íE½NoùOCÅÓN<3oð8Ä tš;V,Ëœ|m( í̾:V&šŠå‘Á2±²è1UbfïEöXvÀ[ò˜Ä̼3À—7¿$I$ßðjTšh%ÎQ6• \Šý8"Üœ#µ­:œä„|+›UÂE÷\ULQ̤$.ïh7䢃ü1‰b!@‚00±RQÜÌœñÝ1ĉºÍ*nKUocàlÑôåÈ=åÅ~aÄŸh¯²\Æ]¥GÐצÇ#þióŠRUy†X–„>såsD$}nAª%Î0¦ÑÅšî±,pðÕg r:†1.ÎåGü‘ñsµž„‰éS:õ{?¦AÃc¯Åøêí9ÕÄ¥òx–¶<•õáýÓæ•ÅÑ. .àL9—ÇffpfeÂB é÷rfpÈM,»¹—­¬øJõ7Y–Oe¥o ñ)ûø ”¶´tW–jsÎ%”ËU‚¥-œ6¯œÓr3&Ïâ\ÞˆŽ/˜·f‰ˆ»51ˆìñGi[©¼yÄ ¹‰çYùWn·;‘(í¾u›-D{TÞ‘ËÄŠ7?îÏ•²ÓJ\åœY–\Cƒ #ŠÝf ±{{Q¯3‚m,àÔ9Ç@3ƒ³É°‹åö©xA“gqSýL138›ŒùʾÁÞœª|˘F•o×ܦrÃI'q¾˜¤ºÉà´¥=þüe«¶Ö/2àbpéÒ%üœ.&P9¸˜¼¤;V¸Ø`Ç ¨@å@å@å´•7<¬¯¯£]pU¡ip~ùò—¿¬ù¶Î/^œmáÞûàCôš¦£ßIºý5ôš üͯãô1.&P9€Ê¸*G3óvû|F¬™Ïˆâ5²zW;-ÙtÈJ·­$¥¤Ò!Žã¬ÖÐÖÒoâÚÃUo©5W½ÖÒõ‡«^ïê3J‡¬VŽã¤²¥1{t6uN'ü C›3ƒ sö%=|ºõº·§’M‡¬ÛûA[{”M9)[p×V œ¤ÅݬôÇ/íÚZNÐ8=Wúo?#ê!zöä,KOÉÖCÏžü—Ï\My'i¹T, ã©³cŲ¼z­Pí¿‘Ü<Ž’¿G ´Ûç3™y)|*^ ñ)»ÝnŸŠÄÒµ…ø”ÝápØíóQ¬\UÏEtøñ:]«‡*nÉ©Pò<¤CÖP:*z*Þ­ðF’•%õÒ!ëä}öþ¤Ü™QºP–üáª×ZíóH‡¬¡tULERªéË P“¦²À:×Ý0ºå!"ºÜ{uÿé¡$ÿnÞ¼ùøÉ³¢ì¥'=Ã8.ŠÊq‡Ã.v/:¾•‡2ÌàìÖÖÆÆF2æ„„¡¬QX–÷§†¤ð½¨w$L• å"á¢TÊ.ŒGr_Øg¡„¿:YÃ"' Rhw7›Íf¿ÿ º+-ÛñÉíál6›Ífw}OnTDˆV¸Ád«`ÈÜ]¾)Ü\®ørâ“Ò…²«WƒO|»Ùlvw™&å%©ŠY›”júeUr£˜fñ«Úë\;¹ûA6›}p{_»<%gΓgRËô%ϳ'þåàƒÞè‰lgáË!n&æ`ù€ü€N….s_u€ ¸æf8)\\s‹£]Rœ\þˆH3©õ™9s䉛ÝÚÚÚš­³)Vår±ccÅ=Wú+‘<ËåÅÝ6ì‰o§ë„L¶.žeéÂÊU‡¯Sïeµ’(c'½W¸RŒ8½÷ø¤œÇ|uÊS,ð³'û¯Ø$ÉSʺg,¶¢ RÀ¹ þ¯v|;ãÿ´yÅ[ ñéñÈË˒Р°bù€“'–•¤É¨''Ô#÷MX'ï³, ts¸ÙÊŸP²DÏž<~|ÿmî}Iùµ”TéÓ¦˹Ü{uÿiºwÿj¯·êsQOÅvÇÒ!«wõAYcçTå0Œitq.?â„cê"ÅÂZ8’#ËDÌ›÷'È®Ûl!!çškìD³B®VŽÁ¦CÖí6‰œv%+ Ïb,ØÖC,—{¯*Ëß¾Ëé¹Òÿx{»ÿqÿpOÕg¶aÏdñŒ2бú½†œY™°är¹bÀQ>GD}æ®Æ2c“íš…eùØÚ±bìôñ³'•}%ÉSrµ¸tøt¿-^9\µ½£n0ÙâaÜUïd\¨)Þº¾¿môIký¤äâ#^¦~ª$]•ª×;C|¹÷êýû÷¥XòÏÒÛñRÎÀùV9DĘ<‹sîŠè™s³,ï‰XˆeyÿÈ‚ÁßÑ1y–Â.a/ê-?fUÿšôö¾\-¸ÜÿþÛÇqÖ ]÷Ä'­¡‡DDžå½QéI¢h'E#Ü@²i²w}OnX­Ö …–=²˜wnèý`LÏXlxÛÈOËÔOJõAoTþœ”FÕ”B9Ž»q§¹ž©ç­ë¯ ¯I*¦çJ¿Pü,û±œIZÆv€Ž‡!¢çϟ˃Ö××ÇÆÆ:áäÒÛ:Ó!ïSoÝEUë7l4ÛÆX²8Ÿ‡a:ÿ J—Kg' €Ž:Ôñ¾€†%üÒÉå{ñâÅ{|ˆ~@3B‡:Õ—CD¯¾ú*zÍHœÎ÷å “Ð,šP9P9P9mç•—ª¶xh xy€/P9ç‡:;V¢˜Yñó,KD‚00±²è11h5t>z¾±Ÿñ'ÈN&76667^ȈbGU@3óv»Ý>ßi@窜ì½È˺çf†ˆÆäYš•>QfÞîp8‡}>£™yé«©xA,ħìv»}*^ Æ!"Q,ħ쇣,_ÊÆãS‡CŠ\v5±,ï)*0)µbÙìó„GATNQ̤$®!NåÛB|*À³®p2v±|`*^¨¤ÈòþÔP2愽¨w$L• å"áµBIgÔ“]ä,¾°ÏB ÿBVžø’1Ÿ…r‘{Y†œÙœs ‚ ¸æ6gF3 ã‘\Éÿ´µU‘e€Ê©ƒ(Ò;¹¢â†\‚ÛI—Œ ¸æf8ê2÷IŸG»ºÌ}D”Ë•RÐ# ,¢>3gî#¢ƒ¼à ð,ÛPâ 38³21 ì^ÔëtÎg°K@åÔÈ…!7±,ŸÊÖ~Ùm¶TXÌÝí,U·ÙB‚àjn׉1y–¶¶Â.ˆþÇ r”p·&!áŸ. ÎÌÏgD‘aL¶k–¢Ê¦x–µ\³™Ú·TN?¶vlPä«ãr3s.A ‹Ù„‡°€—½ßËaLžÅMóˆ?êuF‰ˆÈNÎ2 ™e·Û§â‘ˆD13o·Ûç3Åo ñ©©xAÕ.ÌÌÛívû|Fí[yâ‡Ãáp”³@{‘eG vûü#áQÝõºÃ*R§¨¯OŽaLæ>b÷öòGD&¢ãü%R™naè(Ÿë21LS-¬MGr–‰•E‰ÅÂÚôBfqf°©Ô ½šÎnm͉bfaÄŸ ÷ÜfeÁ}skköÔÅJm1ê_•™wø‰Ø¬î%íXqCn"J¤²DtœÞÙcY–åSY"¢l*áâHæ•©ƒùµi WÍQ>GD}殢œò,ÍJU­M­âÊÌ{^î^’ù“ô/Ò¢™Œùa/ê S`eÂB¹HxMò)¨®¶…øT€g]ád2ìbùÀT¼ ãXšÙœs ‚ ¸$_Ž(fÆ#9r‡“É Õõ:»àçYVò­è’tv¬Ö××!ׯ_§.Û5K$—ËI¾›Í!J$‰Tö–y‡®ºH3©õ™9sQî _¹.""—w´‹hÈ%$å}®ƒ³[a²ø½¨×‘UU'µ¹ŽˆºÌ}D{¹ü‘(Rz'×çí’T^Ý UëœkÆÆÆäoÝV_Í S^4ûˆr‚knq´‹²}D¹\þˆ¨K}µ=NïäA!C.!‘ØIFG»UWÓæ•ÅÑÚ“0¢XÈ ¸J"G³¤.gllLþç‹/JGsøÔ%ÜC3Ô·åòi’åH^%–åNžX–¤V0V¥ÁÙ­äLamz<ºW¬[H+ʦìÌP>Wv†Š¡¨ p®Y]]5²š·ÝßS½ÚJ§Pd4"fpfeâ`<²·õ:£®prvP!tjÒצÎéãÚ¶à†ÜÄó<Ï»Ã3 ÃØ®Y¢{{Ñèž;ø8GüÖW¿„Fè(Ó}Q{¤õF†ÊéB·¿†Fœ ^¼xñꫯâ7c;Çt_ìi¥‘Ãßü:v¬œêí5@œP9€Ê¸`*G ñ)»Ãáp8vûT¼pªï÷Å̼Ý>Ÿ«C:î5ãR9¥7²JŸ2äå×çpÕkµ†ÒŠÐtˆã8Žãj¾88Ze€j‹×œ•;}ƒ/·Ïè;yßþšÞ‰*gmz<’³øbÉÍÍ…N $ü çnt ‚+œL&c¾A0VþtÈj ÒuOmp´÷ûÙl6ûýÞ¨†úhW­2@¬œ!Íq þ¹‘8…øôˆ?Aîpò,×ôSÓ†TN>GD}æ.""†1y–f†d>žrA+åÎÌ{~Ê^Ö‰b!>5/£é]¨Zm–åýÓk…êpÅÍ„$ÿåIIáSñ‚XˆOÙírÑZ[†Z2ó%µ;ŸQvŒF9Uè2÷‰ââ##õ.±wwccW”ºc{ÿvh¬‡ˆ¨g,t{[Ež´+ŽV@ßÊ´œÃÃþoøy–eYÞ?¢¾¾ê|¹¿\ùY׿—³µi…£ÞBæ÷_,'Pö^deÝs3Ò:._Óõû.Ÿ’7V¸ÎòZN\1 NNñR9CnbYÞ?2­.Ù…ñHÎâ û,”ð/d«hjh{û·o]³°ìÞNú˜ˆŽÓ;tÍfb˜ºnmUZ¼„;v±{ÑqYd*¾tkcc£öNBJJ ß‹zGÂX™°P..έ2”)ħ<ë '“a˦âåTS)žeÉý¯>Ýd¥·ãýWzJõ\é×Ê“vÅ€&VNÉÊ 2L]˹½=÷Í9— ‚knsFÍŠªü:‹Y=›/ÅÙ¡@2ìbٽȽ¬‘…lkËóé ÔQ¢˜I%H\C5ºêíP óY(Wn:­pÕ&-ħü‰â¦1pº*gpv+ìXv/êuÊÕn*AD}fÎÜGDùòH×Ü WÖ÷¹ü‘(Ò;9ÉdäB¸™˜o€åê[¿Õw•¤ºÌ}ÒçÅÑ®ritËP–¢é\q(pC.AÈí¤ •³zÖœNg€|0û•Ù­-£ÂÎr+·2õÅrÖ7øjèÛürïh—T0J¤$?þz$ÝK¿ ¦»nßyG»ŠKm"•ÑWmR)ñò¦‚md£¿ 88»•œ)¬MG÷xÿ´yeq´«2ÄybYi$)ËÏ ¹„D"‘ÊÎ åsn¹x¬s¡ªOt4àÛø§Í+ÞJÇâÓã‘=–%–%¡‰ùY)ƒ©êË£|®:¶árVͺV©p†(¬œ(¶Árêü“Ôj­G‘¶õZ“Ö$~jBÜxT†1.ι¡$»Í–âѳ UÆ0ƒÒnWj!•p•"Ô¿P§nÊE±ƒ’ö\ GrdñÅÂ.¡!S· ÝfKu€ÅÜ}6}döì?=,ýuøtß3l;©8Ð m³œµ¿Í ÖäztN©,ÊÙ“ë;Õ&­I¼£TÎ|éÔpqóÕbî&b“íš…eùØÚqÝ!Ïó|Ù“cðB­šY™°är¹*í©îÓŸ?úe(GHe‹µ¶”5G+çÉmÃýw‚«‡DD‡«Á;ýjâ¤]q …EÔ å”V†ƒüq_Z¡¥«² ~žmâ÷ÞòÇ¥…¬Ïlb˜ºkÁÅ{»51  å mf~>#ŠíZõT›T ¬îñÊ8ÑF64Jfq8ÅÍ×ÅQ©æ&ÏRØ%ìE½:O*uÙ® ‚ È5¡‘ 5[ÐäYœsWæÀœ›eyÿHìÀB:'ök©[)p:¼à /yL'?üÒ!«•ã¦ï³÷§9®ò‹5¶à®ïÉÛÇqo¯_´•#ËoW­2€aÓªo9Æ4˜°PN~Ö³®Á—Vh骘y¢Aÿ}‘ðˆ3ÀËOµ²K%jò,nι)õ:¥'žRCÅ=Çv­zªMjò,͹‹™ÚíóYê’øN®¾DôüùóÚ/Ö××ÇÆÆð>¶Sà½>ÄÛ:ç…àßÝþV‡Î1Ýò©]»ÏõjÞb#3 ƒ7<àb•€‹É+h‚NàÅ‹ï}ð!Ú`ºAçr:‚W_}8_k¡£L÷…<—Ób#3 _ì˜î‹ÙÈ8—€‹‰ž/guu œk^æÕ\ó\NŠçù.Ï˼šëËÁv#p‘ÏKÎå****Àýö±(fFü rÏmÎ 2LùÏïl|îÇ·xV©™~ò“7Þd2ÿ¹&\\µ—¸ÂÉÙAF‘—N€¶©-fpvkk¶FiÉ#)ä"ApÍmÎpÇkÓã‘„a¨ú**G ìˆ_5ÂI£U#t8±cÕeîkLyâSv‡Ãa·ÏgD±,Gæív‡ÃaŸšš²Û¥¯¤ÀÚÏš‰âSv»Ãá $Ëòþ‘…r4@å#›âY–ÜCšÎ’ãüQ9Bva<’³øÂ> %ü Ùb ~že]áäfàš¡3gî#Êä "×EÇù„swÑ3”ÓÍW#‘bŽþióÊâ¨ICÓÔ¶ ΓÊ!¢±±1ùŸå_‰.;6JgVš§®D\s›C©"‘ÊÌpå˜Eõò”ËuÑQ>GD}æ®Æ5V)38³2q0ÙÛ‹zQ­ÃΊf@òå/¹ÎéãÎxÿwkÂÂGùØÚ­A‰¨Ûl!!W%?0£’1&ÏÒ–'3oð¬tØ™ëÐ6@ÎÇïåt|B.ŽD†1Ù®YX–­WÔ 38ä&–åSÙây8ÑAþX®’HEUÍ̹,æî’’RTN›aÓ¨×Ͳ{‘ðZAMž¥°KØ‹zåOHq·&8SCs.¡rVˆ»5a¡\Ô댙'äᵉ”ŸÒr: ²LFM Ã0¦Ñ@1ùÓXètý@DÏŸ?¯ýb}}}llì<îÎànpéÒ%¼á“W.^•Ê?Ä €—ør•••••¨¨¨¨¨¨@å@å@åœ>¯  Μõõu4ÂIpýúu4€)À´P9àŒÙÝÝE#´—;wî¼xñí` 0mT8{þÙ§>ƒFh¡Û_C#˜L[ r:ˆ_v¸Ñeþl#ñõý•&.ü½ÿô‡h=S€i TNÇñæÏþ÷h"zôÃ$¢Ÿúïp:þ,yïƒ;§0¿õÕ/Á`Ú˜¨pq€¹ŸÅNHçD9…B*²hoó:‡Ãa·OÅ ÊÄÛX5±Ÿ*ç5Ÿiº%궉M4ˆÄ|Fì´quBt^¦Û ´pqä3ó‡Ãx#´ÒhM\«3D«§s%MQ,ħª¦ym"µWµYåœä´mÚÖ½<œœÑh˜tˆã8«5”Ö‰aµrÇqœÕê]=ìT•s1FƒÁ8 38»µµµ5;È0g^`ã#X,ħGü r‡“ÉÍÍ…W5]µÚR-„)°¹¹±±‘Œù, ¿dlñÎÏÖ~ÿíÇBÿ*¼ ¸ÂÉd2æ„„áV»ÆqÏmÎètJs£‚ag6ç^¶Ÿ.`ٽȽlùÏl*ÑùZ°vˆ§³e"–L&“± KÂ?2/ˆ¢XX›ä,¾Xešg‰›ÝÚÚØØH&Ã.ARÛØØ89#v Ó¶E[׊ö„8õ+ªhšth’³ÙÝÝ M=òáªw’–w³Ùl6›Ý]î¿sCGuŒÊ©ônf^’ÒSñ‚tg_ë?ˆÇ§t´vù¦DÅ|k'®¡siMóSàô¦­ú¶Î¸¹®íú¦M¢ñ¥Mu’4 µ#M˯S›KùZûÔÔ”Ýn·Ï?Õ¥Õ‚ÆzHéuò>{²ú³¶pyöäñÕÞË¥¿.÷^•ýÕé¾–åý©!éæc/ê S`eÂB¹Hx­|Oϲü’a—âîª2XÆ#9‹/ì³P¿5ž¸Î…;HÆ|ÊEîe¥{YéæFºW–V_É!Ý6e‰SÄQ²Ÿ ð¬+œL†],˜Š´²k‹*—æMöMÕ²Õ6¬(fR ×׈±h¶«“9Êç,+3Í™Z¹üåÏý¢Î¿VÍe6ų,¹‡¤rJcLºªíbÕ*k„B|ÊŸ(Þ[k%ØèäÒiã£â¥¤Ïëu³,[;&¢ãô]»Ö§=æµÆ¶êÔÖêÖ삟gYW8¹¸ÖÚê]¢e•Ó™r %RYâ†ÜIJ¼äÚ9«V>½i«v+¨c댛kÕ®o“I4šN£ÄàHSÍ¥-£”![pwù¦psy7øK²Ï6Í+lÁåþ;7¤ªtèÆ_l¬ç¼¨ApÍÍpÒ͇ ¸æG»¤Ù=½ ¸¼£]åùY{!• ¢>3gî#¢ƒ|Yé'®¡w´«xKT“£Öm“îŒ*¤wrÅÅ ¹!·“ÖÊNò÷²,p:‡‘Eãë4lCÆ¢éf,ß8„Ûë15y7ùß~,–ÿ­o¢m}ûyÌFECÀétxaÀ·2ÃU±z]\w$Háå{kã Öï_#ÃØØ¨8ÛMØÓ¦Òæ…ô]³™Œùº] 3ò$æîŠUi´ÁU‡¨ƒ³[a—À²{Q¯ó¬üs§0m›²i ˜k5L;V–Ó1n@TGšñÑÛú(mÛ°‡¿ÿ6ÇqÓqϰíd2éèg¬X–8ybYIÁtü…b!>=ÙcYbYªw!ù‡e4˜]¥¸93È0’ÿ3q®Ú_š!³DbfÞØ|+‹£¦Æg‹âï7>þUÇ[Š8¼ñq+7‚Šû­e°‹µ¢Õ„Ÿä˜†dŽ›x>zo!ŸèónvÑB{Ƽþ¨¬R'0DU„Nr¦°6=ÝãýÓææ¦^‹¾œ“ž¶Mц©×´Il6㤕‘Ö†QZi‹- é¢'Šö>ØÍö”¢„HÏõÓQ¾œ†±˜»•AÝf 5uP®é I káHŽ,¾Xý##å¼êUäì–a%?vªŠæ›±öÖYq.§9×·ôomýOåÖÖÿôä6øéb­h5á0f:m”ž²Ì¹51 <Ï»•»­ŒùÓëV•é\½ßJD c]œke굨rÎjÚêÚºû¨M&±±t:Ò€4å´ îOg+ç‘ÓÛñþ+=2¿N|ûœ>n„ƒüqi~ö™w c²]³”wÐå ](˜ƒü±Ž¤UÄQÉ+•-VÄrͦuÛÔ¦3žŠÂ¨–M¥a%ËžðWvë3óz%i¥E13_>'Ãb65UýÿD¬ý÷½þDúö{ý‰j„¶®(Z]\Ue­hR¸¼ƒ3'=*Ú:2Ï]¶k•£c^sú'òEW:úЖ/NçØš´U±KÂÀÄ-N3óåçKSïô—À³¶Z¶®ñ©§>Ç›ZYš4­Æ ˆêHkB68J÷Ÿ’ô¨T\h„˽We‘ŸîŸ£ÓÇÙ 8|ù „“g)ìö¢ÞFÚÁø… c LX('íag‰›™s³,ï‰X¤C| Yê’ÇQ¤&åÅœÎ/¸ÂKÓ‰¶XMÕËVÛ°ŒÉ³¸9ç¦\Ôë”秆êœn©‡RR.ÅÃÕ>sù“äÒ™­ôüAõßÝÛwlk}ÛÞ6WíbE•3¢¨5Lž¥9w±Ùõcžþ¨x9a“gIýÀA혯íè†ÆIÅup¦†æŒyˆ TAšÎ¹ˆ×ét:½‘œ{nsÑcbfp&@á‘­©wZ*ç,§­Ž­khêiÍñ&L¢êªapi3n@ZiÜÌœ«ákmÁ]ß“V«5H¡eO9°Â{Æb¾'7J¿—¤ÐÉœ>fˆèùóçµ_¬¯¯ÄëñJMêü ÈËÃúúúîîî?ûÔg~ÙánåEÄ©aýðÿl#ñ•±[M\û‡«÷¤—É]€—;Šbfa$5ÔB‡êŒŠº‰¿÷Á‡òZ¾àßÝþÚ…[g»L¦-hÒ\âÓ㑜{nkvP+Nç˜cw5 Þð:—ŸœöùÄÎ$á¡¶+ײúBLÛ—\Ü”~㇈ËÄÊÅr÷žÊ)?€аúüXѧ-ö©V ˜†Ó¼ Ö¾ÐÁæò'0—gÌ‹/ÞûàC´À´çÔ,@å€N¾)„ëû,ù­¯~éÕW_=G{ðÓÀ,È óëP9 sù n ;ঠ0mÁù5 P9Å£þ#7…œ_S€i  r€:¶‘@#ÈÙà L¦-P9çœ~ÀÐ^X4A'pçÎ4¦€ö_ÎÙsýúuœñÀÐvàËTTTTT r r rΊÎúíã÷>ø]€ ¨roª@;óëØ±ÀÅ*P9LåˆbfÞnwȘψÆ/´Ûç3¢ØTñÒ!«wõ°íµn1ÙtÈJ·­$¥¤Ò!Žã¬ÖÐÖÒoâÚÃUo©5W½ÖÒõ‡«^ïê3J‡¬VŽã¤²¥1c\0•#!®p2™Œù!á_P.-ËÅúûtÿêõ·zÚ]éf’=eC¶ànÐ&NÒb6»»ü¥J`+ §çJÿã'ψˆèÙ“°ìþÓCéóùÌ¿Hy'iy7›Íf³Ù݆SΉÊ)Òeî“ ¹wG3 #~žeY–÷TÉ üÚ´Ãá°Û§âѸ:üxÊjäpÕ[r*”<é5”N‡Šž†ŠwF+¼‘deI=¤tÈ:yŸ½?):¥ eÉ®z­Õ>tÈJWÅT$¥š¾¼5i* ¬smÑ £["¢Ë½W%esøtÿæÍ›’ä9|ºµ—ž<ö CÚxYTN6ų,¹‡ÞdßœÝÚÚØØ({w²ÄÍlιA\s›3ƒ S̃åw(Œù,”‹ÜËw¹ÈÔH:¤Ðîn6›Í~ÿt'VZ¶ã“ÛÃEOƒïÉŠÑ 7˜l Ù‚»Ë7…›ËgF|RºPvÕájð‰o7›Íî.Ó¤¼$U1k“RM¿¬JnÓ,»|”Ö¹vrÿöƒl6ûàö¾vyäΜÃשw¸(yž=y<ð/oôFOdÓè$•ò|ÀétxaÀ·2ÃÕzw´—w´«-‘Ê7»µµµ5[–A<9¶`l¬ø±çJ%’g¹¼¸Û†=ñítpƒÉÖų,]X¹êðãu꽬VeL㤷ã WŠñ§·ãŸ”ó˜¯NyŠ~öäqÿ›$yJY÷ŒÅvC´Bê8w4ð«€  ‰…øôxde‰eIhsÉ?^§ë¡¹oÂ:yŸe‰H ›Ã–,ѳ'ß›{_j«–’ª#}ÚT`9—{¯î?M÷î_íõV}.ꩱØîX:dõ®>(k, ãiþIrQ,¬…#9²øba—ÐnSír!:\­ƒ]ôt\²’Pð,f³m=¨{¹÷ª²üí+°œž+ýŸl?yÜ¥§ê³ Û°§tF¸à*‡è(Ÿ#¢>s—<°Ûl!¢ƒü±Ž<2rúøÙ¹¡gO_-î>ݯD‹WNWmïh…L¶xwÕ;Wj …·®ïo} K?)¹øˆW§©_`…*‰GW¥jDãõÎ_î½zÿþ})–üs…ôv¼”3pÁUà Î̹Y–÷Ä,$=W•¥®ÑÀ„…rQ¯³¥çÉÓÛûUÏzÛ‚Ëýï¿Íqg ÒuO|ÒzHDäY~Еž$Šö>¨8P4 $›&[p×÷ä†Õj RhÙ#‹yç†ÞÃä=c±ám#?-S?)YÔ½QùsRVKP å8îÆþåz®¥ž·®¿&¼&©˜ž+ýBñ³ìÇr&iÛUÎ =þ¼ö‹õõõ±±±/^œfiÞûàCémé÷©·î¢šY·‡Uö†´Â & €ó/q¦3ßð t¹tv²èH¡CéËhIâ0Ì+V¦/^¼÷Á‡è´*t¨“|9Dôꫯ¢WЪÄéL_:­Ã¢ •••••¨¨¨€3¢Õß>6øÎ©ßúê—ÐÖô>ºŒFÞYåÑoüú¸~„ÿðW0z.*è}t 0¼;–6ìXý‹þŠþ?E|QÌÌÛíóÑHFÒ…vû|FåŸO®uD±Ÿ:ñ\š*XÃÕ?¡Ök½÷uŠq¢=~ŽÆáIwG¹ü­W§6±Ÿ²OÅ â‰NÌÓì”3oä2']0±ŸšŠÊ]–™¯k:Ç~ÖO³µêè˜#ùWÕc¾Ÿ*‡OÅ bm"M©E“no÷dï•ó?üóŸÒÿ§z• ¸ÂÉd2v B¿Ðè°`˜ÁÙ­­­­ÙA†9Áž½ÝcY–OeÏ`Úè¤ßzõÛ…V§~ÈV·÷766666ζçcžpwœàr’™ S`sÑcjkëNÌ“žÍY¼䄬п>ÊçúÌ&†‘â,øÒìë;Öâ¬lWuŠæ(æ(™#±Ÿñ',±d2™ŒMXþ‘éxAÅÂÚôx$gñÅ’›› /d‰›ÝÚÚØØ ZÙÌ6T¤–ô˜ÏB¹ÈøBGùÚ rþïú±þ¿FoÑjkQ*ŽLÇôï§3ó¥•tˆ(3_”œÃÃþoøy–eYÞ?¢Þ%¢XX‹øÂ¾AHÄÖ 5÷aåÏ„G j©•³³Ïg”Å. ÿ©x¡x_Z’À i<ŸE1£H¿vVò²Ï?)R¨wO\Ê:3o—Ýl5ÝûÇ•¿2žTms5_Y—’Aõ>²“Ç¡Tæî ÛØZ%Ѫ”ºÄI m-yL% «Ñ°ÊÀrKÆãSµw‡ªSu‰z$U Ù0^‹µxÍ5²q3¢ãÜÒ·*Z]PkåÑ1­ÙTÂ=Ä)²8å‚é̲eÓ¯¸Ií6boµ,jÓÕÑx]澊žì±¬Û;jb†1zÝ,»¹—%:Ê爨ÏÜ%){“g©=b±¥á-+¹je›3ÚçˆVó¶Aåü?ÿôcýzçˆÈ=$uOva<’³øÂ> %ü Å۴삟gYW8¹¸¦§×XÞŸ’D«j:…ø”?QT¾ÛÛsßÙœ“ÔîÜæŒúàÈÞ‹ôyG9Û5 Qn'}¬wC?S“Z!>àYW8™ »X>Pî¹rQ%Á¾õŽ„)°2a¡\$¼VEéŽjcc£¬è³ÄÍè–V^µ­­Ù7Ù7)hM'†1Ù®YXv/Tì Ë5›©‘©"uñç‡~ñóC¿XþLDm¦ê÷~u´šË`ür]Š]uœÞÉQ.rOªûqz‡tªÖ1ãP3 㑹›¸ kcwm·ZIT+UK~mz$5´5;X5¥ÔV=A–åw( »Jf½‰‰Y5$äcÀ`-ÚoñÚ×ÈúfĈr¦ž ¬í‚ZëTYKXÞŸÒ2­¢˜)‰œª¬Ëκ³Ü8MW\u ±·:µn½:jMñ,Kî!޲© ‚Kj7""nÈ%”He‰rËò’k§ž–†w6ų¬eâV¹jòÊ6g´»¤Ù`xŽÔ6o;TÎÿûcýZS4àt:½Ñœ{N2…¢˜I%ˆ¨ÏÌ™ûˆè _EQ,äHÌÝU:QÕc67Ã餓ÞÉ••¯‘»ùµØÁÄ-NÙ †Ré\qtrC.AÈí¤Ë3°XÔ.sŸôyq´KªZN*º¸n^êU3B—íÚ€ $RY":ÊÓ5[W½_þü…‘!"úÞGb¤÷Ë2\¿¹Œ7o±wÒQ”î¤M )¾jßwæ8dYÞ?½VhÜëÛ\w/‰j¥T¯ŠF÷X> ¿ëÕhÍÁåí*›õò \C³<±äcÀ`-ÚkñÚÞÈFÍHkû¹µ] e[Ê#_óFÂbînÅ`¶VñúS؈½mÄ&¬ŽŠ9 ð€oE§1‰ˆhpv+ìXv/êu¶ñ°D+ úˆŸÂÉä’Ǥf[2ÚÆçHmó¶Aåü?ôÿioã…k'Ëòg€gÙÒ­òË5d8ÔÒihã/êu:ot¯Ü †¯¯É®Ó#9èœRù›È«¡ºl×,Ò()ängyÿÚ>ODðlë}¹0o´¹4âKæ8—?¢l*a)ojÓQ>çâÎÁ8d˜Á™•‰A`÷¢^§Óà軣ђÔTJµUc¾!áWÞhª^[7Áæ'fåÞW9È´¯í|fgV³N%‘£ïLmÍ`ªnKÕìùjNa#5jÕ&«NÅ0Êöyõ…ŽtЧéû¢¶.èÉ•‰ƒ€¦ÕjÒh7=G¤‘Еóß~,èÿÓ¾”»5aaY>¶&Ýu›-ÔÜ©jTÓé6[ðĬŤ=… iéûÆUËP…ö}ŒJîáHŽ,¾XØ%MäÕP Ò=1åòGÇ龡FÛ\ÑÅÿ)¾i¸÷[i.õø 3(yqS ©„åšõº‰r;éµT­SµÎ‡ŒÉ³´µv DÔèè6u‡NIŒ7N×è✻ê(¢fƒÔOÐbînjbV ‰Êh©‹[°xmoäS¤ÜY§²oCßOܼÁ¬íqiwÉàà FjÔºMn®:•Ñ›Unf•+Å0¦ÑŹ’Ph­ ï®Q¯öcÍíææˆ4Ú¤r~"èÿÓm”€o@ÈEÂñ‚XrA—e7K»ªF†j:¦¢ËâXÑèòÊýb¤Ï[~*Dî—Ê#]U]žªÔÊeHeK[• œwQ½çÐ,­ZÕse/Š…µXB&nq¢˜™/?N!uP³º° zñ€£ZIZ7ÚMÏ‘3Û±ªèPéÐxx­ Š&ÏRØ%ìE½rO£ÔÍ|À™š3x÷ šŽÉ³4çÎI¾n»}>K]£ 囚å…(í#r·ŠWÅÌåò0ŒI‘šT>àtxÁ–oUÖ_æÜ,ËûGbé|Ù‚ViËõ­®W›‚žK@’9 j\ä{éîúÒÝõV¼÷6—fünó€ Â@ñÆ‘»åýÙñã°ü|œÓHe"0Úql¢;g·b¾©Rc–Ï'©–DµR:ŽŠÅ¢Ð™ŽD­ÑJp'<â ðÒF{݉©3º¥!!·™ Õ¢u‹w¢¬ç*¯±TÊa¯mUj»@Ë:).TI6«ïLmÆ4­S؈½mØ¢¶¯:ŒÉ³¸9çÎE¼N§ÓéäÜs›‹Ã0ƒ3 ŒGÔ€oeq´-º°¹½rÀQÛj5g´[Ÿ# =þ¼ö‹õõõ±±±/^è·È{|xÝý¶~œõÄ÷ñ{çŒXˆOGÊÇoƒÞï(.LwHæ&È­ùü#ù\uAfÞžÚœd0IaCN™K—.µá ë‰ïcpœgsVX GöXÖÝ„'½ßa ;ÐÈhaòó-´†÷ÙЪ/ ¹té‹VÀ…*P9P9P9P9P9€Ê€Ê€Ê€Êh'-½­ó½>|™ÛNñ^ÖÛKý2ÔúÎÔÿˆià‚«œ÷>øð½~½í(Þí¥¿þà·?ákýÕoÿ æ € ®r^r‰£@’8ñäÿBSC3çr q q€ ¨r q q€sAc;VúG3 #~ž­('W89;ȼ„Gÿâ¿ôÍ´¬)lßÚþŸ^oOS(„ŸûâRÄþ3Œñk?¡_úð¯1 &€ L¾ƒ^Ap…“ÉdÌ7  ÿBFO¹J¢˜™·ÛíöùÍúGÿÔ_׋#_˜¸·½ô&Í‚ðIèý4RQü‹?øâ¯üÛ/¾§uU9ñ+ô74ÕXâÀËÀ+'•p—¹('iŽ‘o•<’wGòú$È=7G~?}gãsŸ8ôâ< øb‹¶ôôx$G–‰•E‰!"Q,¬MG÷XApÍmÎp”•üI,ñþšÛœdEœAFY€¹Íîxmz<²Ç²’P“¢µ§)>}¹›èié¯D%²Í‘0<÷»¾Ï5ÍßýÑw§óÅÜ¿0ù½·þê×¾™fY–>Zúéù]ª×L¿äþú~îJ1äh+ð•?úÛŸ—ü@â_¾7ñ½+¿ö| …ûUÀlŠgYr½É¾9»µµ±±QëÝaYÞŸÚÚš­G ß‹zGÂX™°P.^+ˆ"eÆ#9‹/ì³P¿e˜Á™Í9— È•Š"N¥ò¥pRr‡“É­­ÙÁ6.öõqšeiä­×æï?ú·‘mÖö­í¥o}Ýöÿ¯%ÈÔâSúÕ‰{ÛËßÛùÝ?ú­Å~ö+~×&‚ð…:[Kõqše¯üë1)ŽjúDô7¿÷Í4ËÚ¾µùM»Â0ÝW‡~žeÿÏãc"¢(\²Aâ€ÊÑM‘åN§3À ¾•NáÝ‘#®9y8]æ>éóâh—'—?"ÅL*AD}fÎÜGDùBÍÆNEX–÷O¯Ú·õòEn O}ç#¡oòw¾þ¦(=Ný |áõ_ ú…·l‚ð4•þûŠžûh)ÿ{ùK‰O„hâÞö¿ûB·äžQM_þî‡$?×ÕUôýHüôv³ |òˆèž÷† óÀE¢ý;VµÛ=b!^Ü bYÔ¯2GWWñIJ’ôéj<à άLŒGöö¢^g´]‡¦žQ<<þÛêûôˆ>Å|ö+KÓGS‹ùƒåß¹µl𜲔øOó¿sk¸t‰zú?] ïû™OWûi÷™Å§?|ö÷bÏßý°æ[¾}D±°ŽäÈâ‹…]‚Ðt ºÍ–âygí&#qˆ1y–¶¶Â.ˆNìÐtO×gª>s姥ܿ‹ÿîþtbX ¢†Î)ÿ´ë¶UŽ6k¦¯Š´iEûô~”Îþì[xä TN£åsDÔgîj1Žê:m²]³°,[;VÈ¢ƒü±Nu¸™9— ÅÜ} Q: óÑ_þUéÃ|öõ’Â¥:‘ô†ý ýñ_~ÿi÷gßÄd•ÓèÒ>83çfYÞ?;°Ëòþ¥§ÄH-Lž¥°KØ‹z‡ôô8ØFÊE½N)¤6Ž"éás‡Ãátd™ŒšNƱñ©/üîİþÎðÔw>†çJçiþâ¾ø+“¿vmê–ÿúù/þ¦çS Ã0Ýÿ9}…þfí7†UŸ'/úùå§¥K´Ò'¢Ÿ{Ú,éï ÿåg¿k“{Ë>mã>CŸlÒë¿€¹à¢ÁÑóçÏk¿X__{ñâE9¿z,çbüê±ôûÓ‘ï–Ÿ9×ç?þáÆ;Éœ .]ºÄ¢^ZDñhû[̳ìç°]à"ò šà¥…aºíßùS;À¾\L ùrn/ý5õ—>"¢¯~ûO~ý+o¼lµÆp¡T}ðÛŸGcÕrÞO7 †€óÂÿþ¿V9/Ûr0 œwp.“ž±êõÇh/œàËTÀù¡+QÌ,ŒøyÙ»]áäì`Þ÷tr)×&.+‹cüÚ¹ç6gñÊnà\Ѱ/G\ád2™ »!á7úNÍRŽùOYzݦê›8‰[(og±pATŽ–Âp”˜Ïˆ¢XˆOÙíö©xA$"éÏ©x¡¿ŸšŠ´tF—¹OöWf¾˜²}>SɱŸ*åh·Ï?IÞšú/3¯N\3ýRF¦cÅêeæí:UÀ9V9Çù"r 2 à Înmmll”Ý0Yê²]³°ìÞNú˜ˆè8½“£\䞤?ŽÓ;tÍfÒÚʦx–•R.ħ<ë '“aË$$Š™…ñHŽÜádrccckköMöÍ™Í9— ‚«ÎÖR6ų¬eâ–G5}"Ê.øy–u…“›kRؤ劵·èTçQå°,p:ÞhÎ=·5;XõÌS"}Ìí¤ ¢˜½ÙcY–åSYÅBz'×gîÒL9À ¾•NŠ)®!Žˆ¤ä IDATr ‚”Z9²z͸7EJ|ÄOádrÉc""­ôE±? A0wW×Èvm@©,åéš­ £¸P*G\ádØ%”H•÷†¤ý§3P9AÌ ¹rù#ʦ_Ø7 ‰ØÚ1åsî!N+å䯯ÆÖ’ÇÄ0DGù\uŒ\þˆˆagV&Ý‹zÎùŒh¸ØÉ•‰ƒ@åõôKá5J¬ËvÍBt/ˆ…üªNÀyV9’„¹5aaY>¶vLD¢XX GrdñÅÂ.Ab0Ìà›X–O-¤–k6nÔë&Êí¤×R ÷±ç•ºÍ–ꋹ[JÜäYÚÚ »"jèœrרWvhZ3}U¤M+ÊåŽÓ;}Cxä ¸*‡ºF¾! Ç ¢–óƒrÏóÒnÈͲ{Ñ(¯«%”ªBÚç*ž§©> ÃÍ̹¡$M$Ér?ÖMT:Nd1wk§_ÑgÙâJ­m×,”HÝË÷©:£pTØF½n–Ý‹„׎‰›™s³,ï‰X¨ò S·y@a x„…»åýi“g)ìø€ÓàW¸tž¦ø”ÓHe"0jb†1&,”‹zªÏ“WŽ•.ÑJŸˆ¸[‚Àœ©¡¹²wª"s‘t> =þ¼ö‹õõõ±±±/^Ñí¥¿þõ¯¼÷X‰…øôxDåØ5:ŒK—.á †%ŽXX GöXÖ OpxM`†1y–¶øí€ ¨rˆ(tûkh2t>áo~çrp1ÊTNÒ!«•ã8Žã¬Vïêa+é„Ò'Ußö&.¥¦LópÕkÕÏ%’ªI=S¡œéi´ ÕkÝv«`•\¶møéç++^©eý¨3Ò*‰hÄW)e*Õ®ú*©Ö‡«^EeUÛ\%ÍtÍ£ŽšÔMg¡ó'WªtÈZÛéíóÍÏ‘zû-ט’êÖµ^¸žÅN‡¬Þ»V½Šæ=,‡¤C sS5SkÇ€nÉÏrruÎŒnÿjØÆg¬lÁÝÝ`yWߊõtœª³wm'ÜC“û·o{è‰^”hïƒl¶‡W½Öím/C˨6Äöp±öéÐ$-îfµKp¸ê¤åRŒtÈz#ô³»Ã寙“~ÕùV— œY½«ªò;\Þg°¿êµUB=‹Ù MºöF(­×í¥˜²¶Ú¡«ûÑPÚVÎPÏ[×)øñáX)—ÃÕèþíPÐPšàôgGõ˜¯|nhH>Ý¿zÝÛ£ríSš}ÒútV­RMYvŠÉ§e]5­®®Å–r|sìËHfRWƒë×eóýñze¦·ãDžÆŒÉ¹áÍŽÞóéË9\õÖh®ž+ýŸäW½UªVvÿ]%«‹òV[¹Õܰ®z½«ÏèpÕk­Åé5”>\õZ­ÅÀRFV•¬b¾ª—sgàæèrïhïåâÿ•Ù»¢7:¶÷o‡¤)Ñ3º½¿VKGy§a¬œª1­µ÷ 鵿¶¦úT;qïꪕ­¨‘¢Ù%çÄä}öþdõgídŸ=y|µÒ:—{¯^-§_Ón=Wú?y&åÕä-nyT?{òØ3\3•Ó±;ýËån .÷߉U¹ó>^ï_Ì.*B+Åk¦Hý¾Po´vª½uÖ?>¬äK×ßê1vsVÛÑÆ'šÊí©r|–§^U’ºIµj14†®ŽPÏQßn·E/A©0:c^«ÅTò•÷quˆ¬ûeî‡ÃÕwÞYŽ4þ•WÙqF¢rùèYlm;S[q""Û°§8Ùµ¬«^¸¾Å®äØ3º¾\=,iœì–Æãé/ÏÀô6yKåkäT‡IUÒ¬|ûðÝ×å%ªMª*ª±’³ürYhã¨UAý+˜•ÖÔ«fuékk[[Y÷H )š]+ñâEÏî¾ózÃ-#/š<£Ú@Ý4ŠÅÒ,¯ŸæÕoðª+žÝ}G™€Þ¸’ÿ% •}”MçX=¤²úVWÝ@š5ÝÀD«7ÔúV-)õ’6e1T‡n½¡¥ž£nÿóú…Q|~ÝØl¨íãJHùÓ³»ï¼ñÆåÏïÜ}ÖÜWªÙŒ¦Ú"z&·ŽÑH¸œ¨žu­kuU[\™ãÃw_÷®JØÃr¡¾ûîC]³¦bLj#©[`Í…@j”s«³¢5:‰ª«©’‹ÑEª¾Mh|9éÇqA íî*6W½A •mÁeš ­®ׯ{+öêíA[ñžûoûB¥Ïzî4ïíýhùî!ºûÛáÇëT{¶aO¼,Î=Ë•]î½ZùBéR‰{|c’L÷©\^Už¶khÀ©P§š•r¦·ãŠÕ:VÝÙ‚Ëjwµ‰>Ýï¿R¼òyΤelÃzüþÛÇMÇUïˆj‡õŒÅvwC4t\@uT÷ŒÅvC4~Úçp5ºÛkS [¢ø´ÔDA ÕqôcÖ¶gϘ¢ŠbT¼9ê7»ziÖtt­Þ<ª¸º†åcO;©¶XŒÚ¡«c´rÔ¿Äø˜W5&šÛ”j-¦ã^P éyë:=y&9 nÞ¼ù¸ô¹ÿJOs_)Ç™^´b³TO¿FL®žÑÜéÐ$-ŸÐшšmÁeºóÄW›mXò椷iXf«“Z»­n5æŽþÔ°Ë¥mÀ…Üè$ÒÊÅÈ"eÀ&œÅ¹œtÈ:÷,ïfƒjß)¹Í{;zãNÿò®,L>}SIst”Ï~¼N×C—éÙ“Çï¿Í½ODDÝVSË!«•cÙ›-Jï:Ÿ2FªÙh‚ýÃ=M\EWN©e$whQ ÂÍåÝ (Šö>ØÍVvcT4Õ¿ò8ÈŽQ:dµNz–Õ÷’õFµdœÆTŽß¨?v§ßWî=c¾~k,=´©Ÿ¶Q­©î[зí]=ŒÕη>^ï÷Åz ŸõiãDkç`n“ÅhÀÔä¨ÉZiå õh…ô\éo§ƒ´÷ ô9HDÍ}U½ÓªMj–ÃUï /=hVxhÙ•ŠŸôÑšW½ÑÞÛý“*‡ŽlÃýѯ<¡á Ñvýiؘԟ;u§FÅÈ”®Ò2;­L¢Ú\ÎjkʱwwƒéÇM¿öïWwSz;Þ¯˜éØúõÛž;Ûé ­¥ÑXZ/†·KkHïUÏb¬n÷Ø‚»»Áúç=Xw -Dôé!ÙzJ·.5ÆD¹Ùo¨šRÌÓ·ºmlýU¤zhÙ†=“µCJeø•íÓÛïÿàæ¢Îê¤3ª«2}FÔS›}ºlíW£qö÷¹ûåËXaõÛ•¶©ç¢Îñ)•IšÖû‡c-÷h³Í†s»,†q# –£Î%'1æÛ#rŠc4DqÏplTùÜôW5 N´ž±Øò“²°?ÁŠ«J-ëÚ¨ÕUÉQ:ŽëykÕë]½¬06ïõ­`”ñňÒF×¢11h·/75 åçÓ!ëv 2]gF¨æbp‘ºÜ>ó¢ Û´ÝÈf³5~|[PQÿth’|ccÁešly'Ãæ½½?ÍM7¨ç­ëû-¸·lÞx´xš,ª½RéଌÝŒšm¸ÿŽtŒWƒwúë¹8 WSºÕª[Ç*·`:47Ü\Å]‡Õh¼™–ÙzXœqe ÁI.‹|øtÿjíÙ´šáGÅcqA e³\ê£Z&eJ™Ú¼·÷'eg'K£2»Ó¿œ­f¹ÿNìa;'­Í{}=ݯ–9ïO¿_o,ÄDÓšGñÊÉÄŠ—ÚÀ`n§Å0*Ô̱Ek óòϪ-Vsã«ÜµQ†Ø†=÷ïß—®–nú+Egצ>7 š\-;£¬f:í} ÒìZÖµA«[“£ìȱì r•î£Fæ_ŘÔÚí…§¤Ô‡O÷ÛÉeJDÂkßPJµ·wéPB»»=Íj™'V¸¹¼;Ö#óàJ(®±ÒzŽÛæ½ý»í–ù‚áæÒî°¢ˆ¡ëë7W™Š×”¦[ÑõÒlv¢iÌ#ÏòƒÞ¨Õ:Ͳ‚l”×Ìí¶F@Ö2ê9êÙV½J•1¯ÿª-V݉éí}Åãµ!¶á›Bétˆmø¦°_QÍ|¥°]:ÑäÓ$Ø£6˜\u;£¬fz;þøþýÒ6‡| iYWM««j±«s<\õÞX¿þ Ö#›~5ûr=c± þ\þÉO~ñsÌÃ?¯1&µv»Å…@ÑœÜÛÜûDÂk߸í‰OZ©)¿cíŒPŽdE.Z楶²MÕ«1"zþüyíëëëccc/^¼ ¢ÛKýë_yãA|ï±t¸ê]‰á·W€žM<7¿¥qŽZ,ò>õVÉ¾Ú igN¿š¹a_2†y­ÒòÒ]Z€Sžƒ<9ÒΜ~5/^þÜB‡àËÀÅ“8 ƒ·uàb•¨¨œjZy‹ºÆ«êK/Óøå~EŽU?Ê®[•ŸoHéòWÜ¥WNÖ¾ªÎHMo–?¹WÞËÞ>¨rB½vVœ£27Ô˜ËI4u:dõÞ}¦˜ çqT\$;pBE2hÛRqE¤z)Q~¡^ü.­7×zï>’½Í´rA¥$UßU­-µc@·ä§1¼Û>/¬ÊišÒ**~}ëpÕ;I‹ÅåZ¤IåŒ=\ÞgïW¿ðÇSŒÿýoì×ùõ¯RÌR¦¿DDtu¿æ}ÐŒâ…Ðò7µÓJ6;Ÿî_U¼ò¦&œÙÐ>•¾8_=.•ö2Ç…·ò_V\<©€¬T³’Ýîrõr‘Y£½ßÏf³Ùï÷Feí«NéÕ¤ëíùͱØù®ׯË~\ç±lÍHoÇ^þÀɪœÃUoÕ¬+ëÓzï—OTÝ·ºWßÖ¨¿ª>»Ó/{µ]p¹ÿNLžÓáÇëý‹ÙEEh‘^Z&§ßê­Ñ9 ™£û¶Ä jo–¯j“Ê{íkÞq_ÕÔòW¾ÕZ@Ý÷úÕ¶y±Ê›†ÚÎR‰f`”ÒÑí÷6Ž4ÕÄ‹‘U+(+˜V#«ß*ÛápÕkµ–‹må]]UtP½¾hOQ«Ç€FÇUuq{òpÕë]}¦:6ê6…zÁ4“’J{Yu‚œýÑÊQ}è¦CÖFœgnd}}(s?®¾óÎr¤ñ¯¼Ê^6Í˧ S¬¢¯†=Ò‹F‹"cÿ¶ô“ÆÔ3º]þ^­pI0ÅÆ®¨/åe?,ûÙäâ]´§¿¼f¤·ÉãѬ¾úòwº†ºv”¦CgëlŽçjܽ{WEéó¿ù÷;~ð_ßý=ùëÑ+/L7òþ÷ÆÞê®ÿªzý·ÀWþ’…Ê>ÊÊ­ûz•Àê*KŸÝ}§T<ÙÇF¨Û&ŠÏ¯«£ÒpŠÒÈCT®¬ R-˜¬*åœ ö{FšJkj£U°ú¬žZ¹ÅªSv÷׫R©ßí(jÕÐì8ENj“IãÚÊ'õ¦P+˜ZRbóç”ífŽÊK=úº~šaÊŸžÝ}ç7Þ(~çî³æ¾RÍÆ`´“œbj‰ª4œ–õ¨·âhäøðÝ×ß½«ö°\è‡ï¾ûP«‹µ–¿Ó7Ôª‹òëͬugAS;V¶à2M†VWƒë×e{3úï¯Újì­î*¯ª¯çn*íÙ¼·÷+»Vñié¾'øÿ·wþ°+yž/ \:“\04`h%†ó18î]'ŒùZ#\À}€ì½wE>Ù¾® VëÈMŒ¸„‰õ)RÄ ˜Œ—h0‚1n{ñª/à¿"«(‘’ÜþÓßO`Ð¥býùU±øe±X?B7ÌüÅ1ùÇMIï’Q¡Ùl÷è XâSRKÞ&ë^¨1ÓXå®ê7Ìäð6úÎá ÞÎHẩÍ}}PÍt¾¶b»ïÚÓÄìÆžhºIÉ…«bdajŒÅâùëØK°¤w;¤^[졨¹\ÊŽkbö² Ñ|p¡–»É‚‚•'Uq&ô+?âùSr¥WM«óÆéÝY,£Iƒv»}Ÿ·Ž¤í~*ŽŒë¢Åf1 -Ùcx—Ó=b=ÑžÆ\Žªi‘á¢Ëg§jÑlŽç’Mn ùÛßר…¥ (1ŸrMÕs¯ËQÁ|8luÙÆÛèÿ}}KZ¤'—›LÒí è.ΫÏÎJ&éÝì­U¼Ú&Èú\nôa†žl]÷*T5»‹‚£¶Dæ„·³¼Iöêãsç+®²Ñæk&Qï¯ÞG6ëkt€ÔÚéY›Ë°CO«^A¾`ûb¹¸¯Ò:OUÔ|.e '0]A¸Ö8wëþSUä<ÇøÃçÈŸÂßå_Ã8;OôÜqG3£{arÝî§ÂÚ€uÑ"³|:›ïð¤â%–^>Oèx„Ë1tŒQs \tÉœÍ"§öíïIêÒbù¾¯¹²üâ&o£r<{v6èŒ÷éHT5ƒ`úàì}*÷ä’];¡37&é\ŒÒŸ4Æ#gI6>U‡^çD7ïvVtI[ýî«‹Í›'Õœ¬QkÖs¥Ëè®;•Û}·žV¡S•ì+·ÎSµK†KžÒ'†í½Vÿ©.ržaüåX¥É^þ8 j±K£ñ“=Þú§Â½1š¤Û–xåž+.”8ªÖa܇ó¬‚Âð9ÆËqtsÚñúD5ÎþfŽHu'æÙíïYjqTEQ\-xùË¢ë«öHW×Më©VƗ固ª'ª1`ö’›<{زü9&„t¬is$ËýFcu|9µUÁ“Êf¿~¼Í‰jN Yé7V«¶U>Kº­QYé§R¥Ÿ«¦å*ï•+BVÇ—ƒÎ¸'“öçÒvß½§ +h¹ò¹rUP]S°*F¥&lEYi4Ž//;dQ§-v,ª Ôj8Iﶇ£æ;©Ê¹%¦LœTE÷ˆ_{ü)ËqÝåCi_[±ûÆBT­½JæT­½šgŠc›ŸòXØMI4ã²ÇKÌßO&ÊU2¤gX5ßJØ«§4<-yƒL”‰¸‡Žq>;›ÚsÃ0Î ’ë«’n›ëï>ÿöoÿá?Üý…»ý}åš;Ñ£&¡AðÊ6$©÷xN6}Rü§4ìhäzä¾ÏÙc[”õ¹[¼ž Ñ?1¼ÔK øuS.¼ª<Á¯òª#?ùÛâuµ8ú'ÆWw‰¡¿¢¹þ‡Ùl¦ëúãã#!dðñ—¾ÿn:vèàG˜ ¯@âÀ['Þ&P9€Ê€Êùº”¸§OÜ’•ìjZðl—Û¼kíV‚m¾îˆG‹»}yT¦w÷tBßÂÕs__ ¼•Sâž>tŒI6¼&½âþ“¡3š4&y·TÉf‘›·4Ͷ•Œ2ý;B9™s^Ë nËY?[ei^·Ç=àÛU9¡cDR@ìžÞ³‡-ÆYÜF<¼µ®ýkñæâ•¼åñ´º´É霂Ìa7/™†Q5ÞÕ_ažÈ£2;ëó%tŒbR•›¥Gwp@å<ƒÀ‘3ßâª9mŽŠ.˹=Ï Î¯<{ØJ¼«ðB£’ã’.Ð9¬Ì)¸.îGɔݣ½ù`êûþ”ñi:ƨ9æ}4·7&ä ï´—$û@ÿý¡jÖrè@å<UÅ$4`|‹‹ÜÓo’IÉ[#Õ̳·VãÈÏg¦ J÷K|ïIz—Œ Å(:y–Ö¦Élqî¹ãN7v†’ʘ‚P²¢‰Ÿ|EÏì’n%f}÷ãTÎW8²,»šïû"×5uÜÓ3 õ¿LIWÆ0 *·(˜4kܽò^ËS™ÞÎÒŒyâ4§ÍÑÚõÄËÅ}ëHd€n+™1âf²$Ýö}_seK•@å¼å¹Ò’J|º’{”sO–„ì%Ó§®B¶qvq{'²ÎV·_f¥'2þ~íVèE•ó–)ñÜùtÞ¶w²ða~’wúŇ¼\E:FXñÆÙÕž'Ñ<*šŸ|ß÷?1Î<êÆb›TJv‹N Y€Êy•„Ž!¾ãô¼©Ð1dEQ Çá‹=*S/t Yû²#' ˜¹Üœ/W¦’ô“s+8º:lþ±yÿeK•&íÓ8éÉôŽ9Îj—æÅfÏß¾9Ϧ%¾N×YXfUD2S"ž£Ø\”2c(qíâxËÅýIf ÃæIòŸçÎ4ñ¤JóxëºñE6Ôq­ÁáBSsÆ´‡ïilÇà{‘GŸbN >‹¸¹¹ùòåKtüÿøç¿üí_ú§ùD,o.NO/n–iÀ݇ÓwÉQôÃòæ" ûr÷!޼¼¹8CÓSî>œž ÎaIâ.o.²$OOOÓЋŸ¾HŽ+¥Ÿ¸>,ŸŠ•5i!d£… §&¯naÊ|‰Ëëp÷!I´ÌùëÆçm"®£Ðàë"g|1¹Vκb!‹Z=»`0—³‡÷Š¢˜„ÈQ:ñÜq'ò)Åøà æ±SqIïv‰v¬(1é¨Uò¢À"=ê8æìŒÙðd05Õè¬û¿þ&Ç•Ò?lžðBsþØ×Nól*p!rú–ƒó©Z&GhaÎ';QÍ´}ªÚD˜²ÐPeïs´¹¿z¯(J¿Xœ½Ä/Ú¤¬Že/oˆ\²¼1ÅåHÈ峨Ñ1"×-%fÉ $¨ vÜAàȽqÇ |³æ‰ËÅ=9Ú-oՌ·-‹uP+'î¸âíÅ¢²¬4íëÔ©§jùLÆ ogäŒJkC¶h¯Øßik[&"4TY~£æ4ð¥ôí Y¿ˆ¥n|‘MöRÇ-L½\ÜßOÞ+W„ì˜udb_'•å^Ç‚³Àn`.g{¥aA ¹¥ë<žTaÙ³³A§ò¬BÕêøŸ.sŽÜ«Îå<È©²&GÌaó¤˜ ³¶÷º³gC‰›È3Z3›áPµÎü!í/áÃ<ž(©Ÿ·É¾êXH–7¦Ðàk?&ØMš„Ž¡(Š«$*çÙ¥Žïû”˜²ø³[UëŒGNH Q2ñŸÝÁBg4ÞjV¢GººnZ¤÷”ºC5ƒÀg¨y×aî͹ãq/UK¥/C–‹¢¤áCÖXX:j ³¶7|˜W«¾(å5eoüyur’¾Òi ͨ³„Ž™ú©¯Ÿ·IYË ^^H–7¦`þåÝÙ¼²äš+8²lêû>`/àÕt;ÐCÇ ž]œUÓrås媱Zµ­@ee¥Ñ8¾¼ìEíG݉’RMË• g*\TS7%o:Ú–¿ûKToz˜jî˜Ò±¦Í‘,÷ÕñåÔV“0¾Ô=w~fHù™‘bÈ O YéGq”÷Ê!«ãËAgÜ“ÉÇ@«R‡|ʼ¡ØÚ±µt»½Û"„¬Ž/³VRÍ€PEQ!™jÇçmRVG¡ÁIi8gjΘâK@£²ÒoBÖD#ÅÎï„&¡A a@ìBÈçÏŸùf³™®ë„ÁÇ_~øþ»éØ¡ƒa²}:†}dCÏ­y5SÉx0rÒÕlRfðÒ†€©oGâ`.çYîôÉÑUÛ tX¤`Ÿ39°ÒëHžIèÌåàíIœƒ¬>±ÒD.IDATÀÛ*P9¾]àl@å°íøÉ¸ÝjxÝÂËÖë>*•G^B÷~W+l•w»7ó>Q²-‹;Z‰ ^7~™•žÈøûµ[¡Ué¢ýIcÒÏ!t y}aÓ•8–¹}GÙÚÉ\e?Õ4úVÍôBÇ%•^Ý#â¨ùÉ÷}ÿSs$6Ts“„M)¼êêï¨Ï¶½†ó“ÂÔ\ÈË``7ƒö«5-N³$…|¹r©1¹‡­øáRôÐY¥.\™·¯þ›lÆsÏÔIFÑn“žLï˜ã¬„iØbñ·ïªŽ6b£å¼CÇÈ&%,uŠÂÛJ˜2c@qíâxÌfÐ„ÃæIò_‰ÁëÆÙDPǵ„ MÍSÐj|¾²ƒïE]7Ù‘y QͪÒʳ‡-Æ+¬É(Ï’ØÃðZ]ÚÕVì(ÄÛó%ŒKëM öÍg777_¾|‰Žÿáÿü—¿ýëOÿô/pãÖ°¼¹8=½¸Y¦wN“€åÍÅ釻80:`£±!|6°JšÂ²àåÍEòó݇ÓÓÓ4ôâçŸ/’ãbÊëRÈo_Õ_ÏÆŒ ǧâ_íɶf!$;óî—¹ á»é©UÍ+Ly£ †‰(³Fþߺñy›ˆë(4øú†È_`L®•³^]È¢V§å®a6Ë‹››µÆ¯Ò4lÉ…ùj—¿`7ôÝ’ºî —ÊM öærÀÞ^(Šb…ms;V µ²gäÝŒòiVC5-Ò£ŽcÎÎŒì ò$~ž”ŽZ÷ýMŽ+å»±.;V¿ºÃÔZ6é0O×Z©Óת39ž;ît£Ìõn’ï¢L5Ó®Qռ”ëPÕ:äþê½¢(ýµžÈ¶_´IYË ^Þ¹dKý½Ê‘z>ËeQëb‘t;(1ùéLÕ (™M“¢ó²­­Ë~«_}.祉î9;·¶÷ºó5lî¹cF¶f3e¯Ÿ·É¾êXH–7¦Ðàë=©áÐ1Eqµ@œŽªuî˸!ê#5µeÓRy«Vhs.§Ð1ݸ„ëG¡Š]÷Æ¥ ¦P9àåHß÷)1å­>©UµÖ0ÁBǶ4õIRðhtuÝ´HïE=7•~ǹö.Â{©Z*}²\ï |Hv'‹Þ'„Î(IM:jÄ$³¶7|˜W½Ið)o¬){ãÏßcNÒW:Bƒ×ÏÛ¤¬Že/ /$ËS0)ðîl^Y½—Ë‹Ð1dÙ$Ô÷ý|Wóh¶âÖ³o©bÅSÒ„Æ€£íÍÉÛbÕ8›×¸UãlfŽæ¹Uq*ëºÏ:.•šìxë{CÒí@ƒzëܬgÎJÛ–¯¦wsBE!„_Nm5¹Ù9Y—?• BTÓreÙîîy›¯ËÆ2W¯þÎÂÓråsz˜jî˜Ò±¦Í‘,÷U–_¾äu\¦F©+WÕªY˜¢šÓCVúQ`\å½rEÈêørÐ÷dò1ЪÔ!Ÿ2o@¶vl-$ÝîRYV"ϸǗYƒ‹ ^7>o“²: NJÃ9SsÆ_}••~긬:C¾sš„$>Bùáûï¦c‡~„Éð $ÎÁærð6ÊTPä‰\Ê•ÞÐ8ɸÌÜr cßûæ}­á{Cõ…¥Ê{ |ª»Wa둼£Ó½™÷‰ªm«XÜCElðºñ…VÊíåȸqÍmðxzú?©ÁÛV9ß«ùFÙ¯= ½«J×íO“~Þ8ÌŘ«ŽØ®¸ Ч'!¡“šŽ½æ™à´½ò9š†‰-ª¹ Øšzuà[û倗ñ(8jN}_Š\‡~3 Õ ÔMIôæƒA‡,Þbõ·K4ÝգιQóa~’ßi„yæÖ.Ù‰8Ýg'Ý$FlðºñE6 ã|ØJÉѹÎoÿ:†yêzêÎ|4P³$rÍ&Øx½T7㦳zóËéõâÜÕ“Pê©q—³‡-fÏž¤:¡cœSÉ%tF“ƯsÇPu©Ø|#ÆHG­{wIˆDÈrñk£AB¢Jd¹¸oiRrÒunaÅnŽÅÖ£²é¼‹ɇŸ$>E5‹Ê¶§W¶Ì×È7>b.¼*BÇ`¶:•©:†,çv^OžZÒÇÏbo8’NÉ®ìãKþ!•O“¨fØúÑÚÇ65fB"÷?Õ‰Ÿ87×…+óöÕ_ÃaóÍÃøoî9.É(ÚâlÒ“ésœ•0-[,î)°²—‡ØhùçÈÐ1òI KšU”2c@qíâxÌNÄ„ÃæIò_‰ÁëÆØÄ³‡$öþºéݙ݆ëMË)3² 5ù8|Ïd; ß»<ºnn"s‹¡š›ª^ôdÞÎZ×þukh{q¶¸æCâÆ‰öoæív;Ú~9Ý­Ú³‡-ƪi%É•CꪂSe§¬îøz àú¶ûfÀ®€`/,o.NOÙ ¸î>œ&Ë›‹x ¯‹ 7ûJ…iVÛ(,ùqys‘Dºûpzzš†^üüóEr\,mźòÛWõ7n¶>£Âñ©øA{¶ScC²3ï>„K˜Ù›­ªy…)×Ù˜îîC’h™5òÿÖ/°IÙtÂB2çæŒ½¦UÖÇcíÿ’õö\‹ÕìÌܵÍfyqs³¶Q˜cæÚcÉ·’°¼¹¸¸¹‹MÂ'¶Æ,ySÞU-ÿf“úà ËÛ»PcÆUQ“Ð (¸MèXQ@ö wØ<ÙÑ]&Ÿf5TÓ"=ê8æìÌÈžOâgoé¨uÿ×?Ðä¸R¾ë²cõ«{ë¬e“ó «•:/­:“ã¹ãNäå]Ò»Ij¼,ÕL»FUó S®c@UëÈSw\ÅÕbÝø›¬qk?îÛ1›ÍáLËGæ³+uBV(_ꎋiëš‘¤ÛA@‰ÉOsªf@ÉlÒ˜ñ¾®’êÈ&¡¹·U±[+ÕÌ#e’nyWT|HV—åâ¾u¤µîËJÖÈÖ$´š“Î[jépÇ7ä ËÛo¬¨z'–]Í÷ýjC†¤ÛéÉÏrÉ©Æ`>¶ºlAÙÛÒš[Ô¾êR딽uîöêq7§äkE[¼}"5 èÑQs0ÐÜë2ëÆ¯`ö¥ƒÀgx"sÂÛY¾W±ƒñúM°\ÜGºmG³Ç¦÷}_så‚Ú–ôn{Õ¶47"•GMÊÖ'®NNxvv)Jz7{G$évt癬áC›'ó/zGÅo–QI>]¯»ÚC65I§Í³zÍpW¡žg,k;¨*݉Í-]lQvóþt™8+VµNÞtG{¢{¹gÏΟ¤ÖÖe¿Õ¯>—óÒD÷ø›.#õ}ß¿î| ›{‘e3e¯Ÿ·I>f¥›Ï»32»õng•^²ã,l±`Ú¦O8†¢(®ˆÓÉ–¹¨fÐ]˜ë‡ƒÐ“tbEéO±úbjÂé¨u¿p÷­#)w,šŸÍòH:mŽJûOx;»ÏúB蘋n\åõÃ]ÅkäÀ m•ÀÆËÖ÷}nZ¹òÙZk‰¡c[O$r<Ú#]]7-Ò{Q3åÕßq.‡½ã²ÇãÌñPé4ÿrQ®ùLD·§Ð%©IG­‚˜dÖö†óІ¤¼±¦ì >ó8I_Ý ^7¾À&ªq6;¯Õ¹¤wgäªU­Ï²ã,L^YÕ—K´Ð1dÙ$Ô÷ Ÿ~y4[ ëŽÙÙáÂÞÜDŽåçÉ-ù-¤Æ…6O&“IÔ)ØcMÙö˜u»½ø½˜@ç‡+ž sÊrq_q¸+»Fžu,m»o|Iö†¤Û:õì5WSô5GƒÒ¶’ïCU3 TQBÈñåÔÎ>è¬þik’lƒL”ÉjÕ¶ 'ÆS *!D5-7÷q麩X—e®^ý…§å&ßB³Ç„Ž5mŽd¹ßh¬²üò%÷ÜyácX>$Ÿ“rÕX­ÚVÖiú`ÈJ¿‘´…jZ®ò^¹"du|9èŒ{2ùhUêO™7 [;¶’nw©,+!du|™5¸Øàuã‹l"évàQYî7âÈi'•÷•I1í¢Ò»³cÁ}M™ËŽ3²øªÔ¨¬ôl¦›: ×iMBƒ@ž¥QE™÷ÚVPñ’Ê5Ÿ¦uÑ1ÿ³5îj¥–5w’É·ãa¼äH:j­V$S@’n[q{EýD\¬¨Á çÿÚG¬ÁW«¶l¾ Ã]ù5ò|àš¶ûV€·N¾)* 5Œœ äCÀW¶É n¾Sm»EÓ«½dp¼P‰o~¸vç…‰w>|e›¼ä&PÍ¢PM‹ôÞÂBWÊ=bU‘k¸F^ªÐ!˜ËÀÛ“8˜ËÀ[*P9P9€Rô YûÜos?n`?`¿œ§$|˜ŸlÞ?¡Õ T˜ØÌåìMÑ8Fqê¥d»ïxÛþüný¡cÈŠ¢ŽC3‡)ÌA貜ßVÜ£Ûì3 @å€:GÎ;Û]#r<Ú›¦¾ïO™]È£ý)}ß§d&ò¨7ÿé’d{ «æÖ.¨°*ŠbÜ–—%"Çw"?¼’ÞMœÊ…óØ5œ¤wEŽ ;V”¼tÔbƒ%ÝJÌgñï @å¼]#˲«ù¾/ÜÓ»ŽgÎ\$Ýö}_se«•¨œ} šAhn~­ÌV"g7BÇPÅÕ‚ 0±\€ÊÙ›Ôñ}_´P_’ïI·=t êÙ‰ØðÜyÉ'äªi¹ò¹rÕX­ÚVò­¸jZ®,+Æñåe‡,ªe-YàoO‚GC¸\g¡cØG6ff€%ÎÁæržDä”Î䔉"¹7i4!«UÛ tXبœ§@5mµ^ü 0a6`¯`õ1 r r röˆGã}kb˜E§˜UDû§2ÓåµñÅ1£LïˆG‹»{T¦w$tŒÂæ:…|ëæ¾¾TÎ |˜Ÿœý')tŒ±ß÷}ßÏv£G®£PÿšôŠ[‡ÎhÒ˜Œr¡8þ§Ë̵¦˜$f’éßBÈÉ|T<ë€HïÎÈì6dó uMš×íqÂøVTNèÅäUá,÷ñ¦Â,ž=lYéF4ªiµ2÷ÞñÙ­kÿºSp“Y•V—69S9¬/ˆ’iUc\xÆs<…y"Êì¬Ï—Ð1ŠIyT6n–…sP9/YàȲIhaï¼T.¨æ´9*º\ðÜq^údnR¤©ÅÐ4퇹@8U@Ò:‡•99‡Wª)ôEŔݣ½ù`êûþtÍ.…Ž1jN£yÍí 9`<ž'qFóýûCÕ9¤ rž*ŠbÜά\t;¨u3ÏÞ©Æ`ž½µ÷£u6¼¦*ÇägY$½KF…bd2g­WÏ$wWKÄçŽ;]]Š’M_å…’Müä+âÙÃVt"‘t;(1k.÷ ržNàȲìj¾ï ]'prAÒí è.ΫFIïfo­â•1Œ¦Ê- fM¶.‡ó ®šÝ…™/E"sÂÛYš1Oœæ´9Z»žx¹¸oñiHz·•Ìq3Y’nû¾¯¹²Œ¥Ê ržÕ ‚@sEé–’9UëÜ/–ñQþUTvãѸ1Içb”þ¤19Ëòbø¥‚¦´ìEÉïvÖÚü"Œ{ûTÙdZ¤×ë›CÇPÅÕ‚ªU ržZêø¾/zµ\_üxîø¤yj0+Y¢õ-Ñß³‡-ËÏcµ†öÝ^ nœÍÌÑæ'gRè=b~aýkè=r{T6œiî#ðÐM¿ÎCÍB;×Ñv¡cœSo݇ÑILFUü™œÌGÔSsáDzwFÌÛPOrïœ#N/ÝçrBÇ(ÎLDÞÉrq/päíÙÖ•ŠÕ´2¯QÉÙ­kÿº#µ¶)d«+ð žs ž÷±qºÅ£2õBÇåÄã73:†á,Ièrù Pú% h$½KF…bd2§ÄÛçš4;VTõtz‰-qèŒæƒ 5¼‘Ä/Û+¬g3s4ÏËœ«þUKS÷“ü`ÞWúI•¤wgs·ô-’ªuÆÑ+®Ð1«•ƽô½X¶Š©<©dy”ïãK0 c§/É%ÝôÐ1¨—Î1xîüÌR“¼TZ­ÚVLûHºmQEQ¢ÿÚ–¯K¤ì;nÕüé'÷÷5 5î3sA«Uûc  MÏfç÷9™s<,ˆœ‚#ïMiæ’ﶇ£æ»¬®••~j„œQM˕ϕ«ÆjÕ¶2‡SkÚÉr¿ÑX_N]%IyÔ$4à«(p@ùüù3ÿÃl6Óuýññ‘2øøËß7;tðãúä€ È‚ÀŸÿŒ €^›f,ËâX ÈÀ€“4Ž‚ (I£¦% Hß”ô/eR ”öl§·ïé§Ã±nù vvvø³@ú) ÃXYBÒÀ{ʯ?Žˆ%FAz5ñÆ1‡ô§˜ï‡£ ¤8H¿—4žñÖGé÷’ž3g<·ý» O «å—\ÑÇR†Jç,NŒœ@ˆ¹ÍË`®¹ »¥Yö‡íï‚E; ×?MˆÖŸú¶³“ bYIŸ8±mÇ3ë½³mîwëfZì'ÈÞ>öåά:—¥o¾- 7K?yÿ ¨&ð¿ÑÄD 2uþÖÿ7¿×oV¸Y–RJˆÖŸzã¼ñ bñ¹4÷¤”¶Ã™ó6| Ïm;ñÎïô½Ž‹“íÚu‘ÒÉq_¦ÿÁÙŒßëµï²n1Œ@`K€ƒ¯`î©ÏNŸü®ÌoÉT•tÔœúö¥îï$øŽ*ãB:§Š`qb¤;”iEé«Þ:TÂõ‹ûÓ’©šGÍ®¸£wL¹ÕYŽ OÒêñ¡„èüY“óÊ®‹ ¥ ¶xgfÇ íÝ71 hu• ÂüY–R£óša¾ÉgEÇ>‹™R¿ü‘@o¼½T ”ÎñòRyùò(…âҫʹ+ܾo®Y6‡a®ü®Œ©a‰kx”’_cáÖC% oYÆšes˜’Ô/ ëÔߊëjí Pqò»2…ÔwfÕÁÜE͈߲ûO[—JÝõ}!ÍqÐþóǯ¤^˜³5f |½aÇÔȸm2ÌE#ㆠÝD!éeéÂÿvüOþ,«qnHßkJ…Q‹YGÈ9u†RV]ÍxçÌž3VWêrò:ÙOŠc„—/ÒºŸ~nT6Qt5jÜh­£ÆÁOò;éYÿbñ{!! $ä=1Ã(5{æTx¸ð]<@VU­´žqãÏRjdܤ›(o!¥99§~\ãëOËRu°^?²¹â­Û×;\¯mi 6!SÃÞYz{gÖ­šýÿ~?oYÆ|obò\šr²Üš·ÆŸ–-þ8ô½¡`ñ{¡b`VVS:®OòÌ¥ÿðödñnqæ?ø-vê0Q^›öÓ$dª—?HKN_º9Á.•Jü|'¢'jº8uv[æ˜Ñ.×ÍhBF‡¼º5„›~—ý{¯WÌ¥ÁÑe2Ћ¿ßrtµ?×ËRãc8ÙÅ%Xt.í°pà /zñ“¤Õí,ë7K²ë5´øãß2Œ¡yµÆÜ²ó¹4¸?³t ¥eùù,˲u¥ù§(u|ÆG£JMý¥Ôdz%D¡[®\ûáàù”ܾtIÑÄá©i¶&èÄ}ñ¥FôoÖ\šeÇùÏ›Ì0ßî=Xc >÷Zv½†ÒâÓß2 x838rÒݹ´8.|í÷{><š±í¿þ_ä±r²x÷žå ¼ÞZ9ŸîþXîö îgªûÚDÈèWÇåŠ>þ÷ûû€R=——/þgÅ©†Ò9‹ûpºõ}qéÅY§’£OÒ9Ïo™¡YÙ6à½E7ß:ôY´€úŽà`t†¬qI<_Ò¿îwbَ߽㟎‹’ÿRùû÷,îJçÿUç«g¬àĶßï¹ÄP:ÿ¯±¾x7 b9ÔÔÔôl§iŸmÖ²Þ¹‡¤S¤?•lY¿âÆ=Ø'Ë–¤…xžýKN¬&Ûˆ…qvv¶€çž{NUtèÐ!K|RÊÆ•FÞ]ó׸¾3(º‡E‹ªÜépu8݈’Fz'JWVVöl§û¾í‹+¹(}ýúuüY ý777\¶Ñù\Aú¸¸²óÄAúYâ}çΞít}ÚyY1ÄöØéêyÔ¨QVPQQÑã]úÁ<Üs¢ËòNXBqo?¿ž>•%> ¸ÿD—žWœ–¤÷ìÙ/¼ðÂþýû{¨[/ÜmbNq†è¦­`ÅŠ{öìáÌnW¬XÑý->óÑ Ümb#*릣££­t3dL˜Ä¢˜(±®)‘ÁñEJAPÒ†e‹“‚P ‚äâž¾©‹û”î÷¬ÕO§ÝöÔçš>b½¿Ilŵõiç×§_—z­ÌpŸ,Û¸Ï@–mÜ—z®Ó]¬úì–Q*L:ïßsKX¶8%$!¹n ñ_›Ÿ¿víKÕˆqß4!D³75©·¿é-ÉÅ¿]¶}w•Ûå¾cÙÆ¬´Æi±n>æíMÛ×W™Û1AÒkâV_»vĬyç]ëAŒúó  „ÜÈBZåmC-ºU‚äƒD÷uLŒ,#£œRoîw̵*NˆÄ ´·ûýŽ—0 â„Ðê„;p¨*SabþZÍÕÛ¹i›]{ .2£œÑ{„2Ò¿nCõ$AB9ÞâŸ.‰Ó³$kýu‡Ná LÌ]믧Ý¡Pm­˜a¨·7O*•j Æ7zðËeXð¬CG=_+!D’VùF¬Û¸›•Öè0ëÁ7E6¯¯‰ |‰weUåÚµk,÷Ÿ=70HðLpÈ3Á!Á!óó‚‚ç ƒ‚çÏ  ‚‚³žy_ƒ€(73šÒô, WX››Ã‹ÎÌÍËË;~¨ºÍ<`ÜÏLVu£ƒMnhøTbB޽“`kh(¸ñçÊÿþäí3lÛõ“ê!¶KÀ¿Ò*1…î!@½×Üž:|èàÒË¿€¼±ìYûm{6¤ -MÕ_l²‚aþ[ñÊ¢gCÇ:¹ìü¬ìÓæá½â&…ÓŽÒúÇf×fÇE¦KÓT×·ÓYŸvÞˆ‚%*ïÆ»Â5oÌ^QÄzøh:ÌæÉac‡[;ÚŽpokr^é¾Þ„Óc”Òövà¢4Ïuôƒæj7«œ8ÓðÉAönCÝ¿DCFØÙg_|þw3žëäÒýÄ;44T·0// }áĥܔ³·GN¼#fïh{ ¯¯‘3V¤¹ž´½ïj·yØÝ³×ó·×³—¯YÜ’5Äuˆ‰QZ‘x@ÌâßÜ'ΉXyñ^K‹`گы¯N}RVËLöOTÕ1¦ÉÆ1ÝI¼‚•p}hØvnIpø×+ž›ì2Îz¹I±¨â"V Om`ðÂe«3+k[&¹ž¸Òjs¦Í÷¿€›‹«µµu§¹C„ãµYîÝ9 0ÀZ"ÀR°ÄÚV1aÜP—qÖÜÛ&]Äjkksµ¿±úí£ßýÇ…«ò1ÃêÒ×1ŸØž©ýžèÍùóçsÕV®XÙÜÜÔÖÖ6öiÜkb)(mÄjƒ‡1CG0u·Z“c'ªÞíC<·ŠÏN°ÄnzíÆ°aC^þ°Åfè“«W¯niiijjjVÒ*—···SŠ’FK1fÔ¨}»÷Vžq»Y4sÆèÏÒV¬}uÒóÇ$U7­Ÿ0u.4SÞR½uÃÜyûæúÙElæäì8dÈBHSSS›-ZZ[´µµuû8Ô÷TYôÆ,CkÞŒ¡œö˜áÍÒOo&C´%jÑ{+|¼¦Þ-fce5Øjñ÷eÿöû×ÀJvüOíDÒ[_ª¾Z}wÙ¾ƒ·´··«–gi^²ª©­}ø°Õ¢#¥×@ÇH¹:'‡dºj­dÐ ªœkQó §ó¢º»"ãFªÚD<ç^ø{Ï>˜Ø™¤­ùü³º¸{-é¼ë„„î……ž\©2Љ‡”0‘(Ö5“[$d¨\­¨Úì8=ƒÆŽÜ:„œ„”å‚'†@fnfQ\d:çàN=ñÎâ"Í0Xà\‡b’‚ ÒRò½é)DPÕݤ“ÓcÁ ]ÜûÄ®ŒèñR ª*JßJC5:Î;zLtêѲXÒë:d¢‡‚˜‹UÿÙTã:ºåЉFf\Ž473š—“ H.îrà¥S’)N=†¶\Óu¨›VDêÙX”Ö|˜­ñ'ßšLL¿;Øîp©¬N=†ˆSDê1×”AOÓ[ß×MøKc¼sÒMqêÑB×uÈŸ.X!CϦ<>ºËJ$ ºÕÐÐÀ=Û¶›,ÿè!ˆ^Ö§ÿôƒyÆëtY‰ ÃX@EE…f_ü;£Q2°ÑTœUw=ñî‘ÈÜ‘ª~:A^ÀŠë(iSŽ‚ôf”î–¤/één½p·!ˆ!, 8é4Ž/‚ $¬`Ëú=ÛéòNàÈ"È#“4‚ ½Éºå/X¨ç­ïFcâ ¥»ÄŽOõß1s4kà…+é‰÷—½¢Uòâ‚y ‘HTÖu½~8ºà éûà z!(éÆî‰Á¡óf@Þ‰ï€{=i‡“sj[4âBóéÕ¹´Ý“ƒU/8=K$s;)N„†††††j­¬2T®EÕ¸ÐÐP 6»–å"y²@Ñ0444¹X]($'s6øCAPÒzh¸§päóù\¬V•˜ˆÊ“(7QȈE±ÙµÆËµ¿-#.Qn¢aÊÓ³$ª¤ ///73Ú›Òœ„•€FœPŸ¿s%m@Ò¿©üŸoN4üöP³Ä„¹q—½ŠÔò¨%Ž\Î~Hýž>¯¢$\ïˆà\ÚÍ-rîÅ?þžêµ9tÍ«¨³#…^E‚’ÖàÞùÇŸ‹¹]ê ‹^Eúá¹:÷žW‚ DIOq°6tuÚ8sŸŒrq¡$žšžDúËõ¥Þ²ªÀ¯)3 xº:²j¯¢*ü9 (iÓY·ü;;»nÞOîÔU¯"‰! 7üx>˜ïU„ }œFE=!ˆ!Ö§ß;ÝB5ªQúÄ rò¤Þw¼FèÉ¡--¸ÿD[gê¬gDÈçX*캤ÉÉ“°y³Þ·À Š{Aô©£åwJºËwOvw.ý?ðžvü.©™ççÜÚÚŠûA4yöÔÈs§-úÝ•ô=þ¼º·7ifí.æ­ôojjÂ]ˆ š¸þúº¤ ñçÝŸÿD‹¥¿ÜvøL,³uR?8IñXbîOÝç4¨ï† ÞÑ{>³ÑR’æO{÷‚háT9ÈIdŠ„{H›¡ÕÄj$)a"1(+0å‘)®F]ŒFEò(È),ŽçûÂ=_M7öªx*RGf¶89L$VµÕÛ1!Ho3Iyc#÷˜qJ½cDsi*LÌO‹P¼Ë­8z$si]>ÿß¿zëµÕânFc >;µ Ë{5ñޱ럺…çʯÙSç–ÆÙ€+ßÿï2ð ^îÜýµÊì Yi%uãý–½9ÅNÙ[Ãß…¹/Žú%õËû é"²ªàïÔ3}õjâ=b¨µî?#Ñ»g £\¼ÆRsõj½ª¬ùjxMÁLš½fSäšçPÏÈ#AùÐòòôÈ”ž2ÏéÕ(=b˜u7{¨9¶¹àvÊ+‘!5£z!ìXgûºêz¨;|‚Ý©êúK—›gØ'Ø+?Ÿ‚ ËìµÓöÎ…¬´Ò›„eg¯w†úá½s!+íªWìßQª8ÿÌҙá¾C+BÔÝ.‚ã‡SÄüø$aN‚Xçiê]6ßèÕ(Ýt_®ûÏôæÍ¥ÿ(¸@<~ðÚÂä—ߔÞQè<ÿ‹ B<~9ßGKÛI€ÜÌý¹*¥2[ãE~ZIÝxß…aöPz<_¦Þ/_­ƒúSß×°¬*Î'D»•ú|öø¦H§:þØÞhï[:Õ«Qº©EÞõÆìë—ªYÖ×Í xl©Œ‹ºP÷6°¬³íHÛÑvõúrï)Oû–>+»"›í>±æJ©½WìpB@3Óa¯T–ÀØ‘n£íêoßnf=‡Û¨áÂ{SÉÑBœ­¬ wv»sýRµÝÓöú[qý±3‚žø“EtyzÙ²üw×j¨Ú)"-?B»–Â*WKÿº…2JÿÖÚ¦ûÏäÖ u ên5©ËÇŽ´5ÚÚçÁ²P&­a¯T–Ÿ0ÁÞÀ!ólAê—„(:çZÕÝjYeÙxß…av,+ûáÇfhh¬ã.úZ!È££W£t‹ÖÅÎÖ@SÕcF˜‘ßLtóŠ g+óAæiGôöÏÖÍè8õÕhåàó¼ÛÌ‘>G—•]?;VæÃ›M°úZ¡G0ò˜HºúƯ]?¿MF¹x/½y¶²2ܤ„Ø{MNˆZu•ápå‹ ­tZ牾pálÅ…³ž ÃôîìlgîXÇVö«†2|¢/¹p¶´°Æ>`¶‘V2ð%ýÚêíGY½9ÕäÓg RÏ‚j^º:ÜÙ÷Aõ› TÀNyeRB΂W=ʾ¨8ü,|Õ£ì ™±Ü»Tê„Y‹á\ÿ…»>/õéë‘cìX¶”¹ºÛlß±¥%uêÔ]O+üY!Ž®‘Í›aóæºèMº‹+ÿ¼»øÑ,Ûhøá›ÏŽÖû¼ª¾¾… }‰¹9és¿IoÙ°¡åÝw-Ñ÷ŒŠúÊëÒÀ:ÌÏ3#˜x÷óTcâì5›fãÎD\‰… ¥M"|ö\ÑÂáü¸råÊÏGŽô¿Ä½ÇD ÛÖV˜6mÚÔ—_¶Dÿ¯¾újw%ý¤ä|¢]¸´¤ÆŠmÑ!A:2òì)È?]’¿}…>¢»±p'!ˆÙlÚÄnÚd‰Ž†éz”f‰Í:|òÚÂ@÷|Ú‚èw¦î¹À@ËõÏÄB^e}ÚùO?˜g¡Î†é‹±X¶6;V*Äfײ† ‹“ Ù#„²‚¢¾¢°8944ÔH+¤»{°âÚú´óëÓίK½VfxY¶qŸ ,Û¸/õܾ ½Öðk²ÑÞ…ªû žÄE¦KyÑ™¹yyyÇŽ‰ 1å ­Ñ-4] Sžž%Qý))Ä'Ã[[’‹ë´Ù°ê©í±ÓwĹûbDºÆ‘\¹«z}¡ø×š5NE[|·é)ôå+Ñ}»_J@ý wP¬_ëOjõšèÂóö¦SÈØÚìLÏ[9×àÂx¨’äâÁ?;;V7)Ъ¬Y.ˆÕÈT™…F‰2­(NiË>øå2,xÖaŒúQYi×JÈÝ¥U–±,'ïÉÅu‹Ü–¿4°\ˆÎ[þcqHŒH•H$‰$uqöª®ˆºÏIZi°&N‰SeËz MÆ3**œaÄ™nÀ¢ òÔø¸µùùyyy¹™ÑÞ”æ$¨ƒ?È @”›Í)ä UæÜÕ…‰¹ÇDA‚LJdº”̓œ„‰FÖ N( ÈÏ_ë?=ŒÔݶk«¹Cm—ƺû±#߈uóQ|߯sàÎpã}M›hsNÖ ·eŽmÌùúnù^;6G}UݱҬ` Ÿ“ꯢ|ù|¾¯:°mñÝRTýU”¯/ŸÏ×lÜçÒþkó…”aÊ3¢ÂT¡Lo¡©ð„”J ŠjÙÚ¢šåª§Ž£«ÖjJ…QKåÊ ¯[™ek«d@©·«³Vyqaxºò]=@VU«ì¡ æÌ Û0¿!&Uœ`ëXôkÛ˜_d3mÂÀùþ¥¥gkê9ÃãpiæËãµrðãÙÁ³‚ÞX]*‘HJwFäÎ^µ¶”–JþûlÏ,ê˒望›íMFœw V©jÝBS5LyFVJVºgÔ’Ž6èlmv¬@&›p²P_å3i¼XÄU–VÕ<rµqýàf£¹ézã¾ÔsúΨœæÝøs^£ÄÛv@Þ`|í«(ß ÃäœÇçóù|ßãÁ¥Š>u<\”¡;û¸R½»¸†ãݽ”‡èËË6qZ’š$¤TS z MÒôÒoJÅbqx_ûl\bºxÑ™‰>šÄ¬Êή< T˜˜››——7@Ólݽf3u|s¤î–9i!¶/ÅýÏöØéª3jª·¦L´-¹t—?qä@­ì;Ë Í¥{d(³ìë?ÿ¼óyî”Y\v¿›K³lqrl¶"K Å -¡m4*zdôˆ«Z#õ;Ö§wšù”êÜ ôèué>êjbäÔ¿3<Ñ7=Öp5âÅìíÒí3=Ò ò¨ÈIH °Ø]hTÔësŠžp5Bk¤þ çcòwCQØã0—FŒêÜÍã¥d`áD,•ga”FJA˜x#HosäÈALâÿB þ×cVIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/19_jdbc_pre_post_proc.png0000644000175000017500000004046012032647166027154 0ustar ebourgebourg‰PNG  IHDRÙÆ…òsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ6¯²; IDATxÚí{|Õ™÷Ÿ™ —pIh@Š,R›Ø¨©ÙEÓª8l|ůêlm›ØºÓ7…¢µ­wí¦aU ¶oK%¼ ¬Ýµ­ªèjÓ]5ÛW­Öرˆ©ºXQ»„Tµ©M™[¹%ÜËÌûÇ讑4ºØ–ìçûÉ'ùÌ9gÎIç§ç<çœAA²…ý~Š&ß¹ã+¼é<ü+ìYuLwßuöR°úqÅW¼ùæ›ØRÈœÆßÊK] /ø t‡»ÉÃÁ‡®¸âЬ-AVÌ!óUJ’_C$úO!Š‚ Ȫá$AòEœÛãÍ7ßDG‚¬YYxÁÿÃûÿ{½oß¾}ûö¡¨ Ëa E‚ kPE8 yôÑG¹?ïùî}ôÑÞÿ($HÞA‹A \×h•îÜóÝìÛ·/:ñžïþ ¥ƒÄe”w!cŒaZ‡<E–­ˆ©°uÀmP¸ŒòÉÚì+D ‹ðb-t§#HªÈ/žv…Áã1GÿLÇúdETnƒ"((ÆO-¾µkÏ A A„Œ–8öìÙ_ÅMgqÜpýO>Uºão2oÌâÂÉ“Gn£`˜ÖE ( C“Eµ§«R`×RG€Ù¹ĪpÅØ7-O‘$ôÖHTCVµ$ÛËa?…úE¤ UdÏ›Ž={öŽûŽqI{nÜ”B3 ‘déYí@TÅë…ÂàvÓ6ZNŸáF~¡cí«Äe”Oâû]ÔVJ‚ $|í–]{nÜ–áÞõ…üO>•Ì@É|^KQ«²OòL0IÔÖ¡òƒÖl§žÊ·ã†úâý"R¸* IÜ òÑbÉG‹%ÿõðü×à Ü?.1 !Q† “s†soœ¢´0Ä™\áÎ Éî¦9-EÉå“ ²wÊ¿Æ÷¼È-ì)(`Y¸-ÎÁ.DB8Ù€·Þù ?i0þíx\6õ·ex²’†ƒq‡„rîÄÃ}99Á9.Y]6oÞœý®Ã‰'Ÿ(á$%$”ç¯PH¼X!ÙiËÎô×ëÐÜ{´»Š ¸?dü© L…æÐ@›˜ ¢KÅec”¦‰žª¸‚3}uz'™¬žTµñåþDùª Ar$ûP>Z,Io²üáeìb$/,·_„œµÐ}3lªÊ¡¶ð™¾:½sÖ|Ø­ê©w¿Î™0;QV_3ÜÓ` fn0¬IÉ.Řq|-ám<²6g´díY$)5`vʵ”¯Ú˜ Í¡£LTbÈ Ã ÄŒ’nEæÓ`Þ·”Kmã‰ÚÛQÁ0à˜žaÙÈU=Ïê²äÍØ&•qbÖ˜`$%½”º%¼GÖ¬-’;'þû¹wÞ>wmE)¼úò«¼¯ äš«ñ}Zç¬Ð9ZK¾y€èy¡ïzÀ®mo¯37÷í¦`›Tà÷-A•`#<õk†Qö&Ø1I±~²¨-Æxâ ¯dWSXQ¡f„¸màhÛ-³$éÔ78#MJqIHK’4A[$]Ÿ¿.¹ä¢¯QB³B¸™Îó‘x•«Žö6ƒC§^‘´ HrÖlXÔ›½ÉÂTh¬cã!„øíSeÊp’™ìª°f„X581>>>6fR2 I:uÚ`‡¤¸$ %ªHJ¬ýÇ£–_ú}¯ø}¯Ì¿púȯœþø“¸×nÚjþÅ›-wžÁwáXÖý"ÜÒ ½“ŒLÝðÚ*ÃV'I‚×w&4“¸;„ Ø»–?eATU7Cª5c¹ÕÆI&4WWDäj{üNÍ ˆªî£½J†á:'Å¥Ô-ÁÏ9Îh ‚þÖWµürÓ¦‹Îž}¯lÇö|—^vñûïýúÑÿã5×Ê’Tw ”Ë0;DÎü ¦Ç&¸Œ”öHè·_’´–œýæø.#¥=Â0­ƒžÚ©å 9œÍ“æq¿H¬k:4QÐÜ3GÄ“ 8Þ‰U½¾F½31ʼôµ·£Âažuêœ1³XT~j#cœݽJ‡Î³š 8•¼îø-ô$ ÊjþB—Ò¶AÉŒ÷S¿_üð#òÍ_ŽÛv©ÊˆOÿÏU¯Í<å gxìÛŸ€Ûþé¿“T>Þe”Ó¶ˆf¨Ü…ßF··{‘taÈãV¤ÖRgX‰ñTað(rª)§Gp;a Tü‹EáÍ%$V± æa”CYû¶Hf0 Ë0 {Óøý"À²Ì­7üñùßÉ€`˜[oøãïÎÊêzþ±ow@ª5Zv-œòŠq¦·…,) ž!#<‚ˆol’ ÃФ\N}¿ÿÎ-žX¡AL0Ƶ'›û.Ë#HÔÆt‹œ"Éû¨‚s_ ƒŒr¹*Œ ©ZxM ÉÛ(ŠaZU*{§†<†\žt%ÎÑB$s"sŸü] ë3*ûØ·??ûçVÕ\33õRÅy÷”º>w¥ºñuÛØ‚âùèôpþxïˆßFGÜæÈ â2Ê-¥#+ÒóqsÄý"1A Í›7¯Î-‘ôÔÖùàwªð¡®:.OB\F¹œºíÁr JÈJJ‡œ¢(Š¢ä0´Jâ½ÜñEÉšÑ ¯Ñº4päÀ‘wB¯Ÿ€ÓñéËÁ.móG …œ¢(ÚvšçÞ/³¯œËÈóÚe”m6:¡ H 9Ÿ£Õl2)ÉYK{¿;:•‹Ï:>>>fÕT0ŒC×Ö’tꦫ¹ôY ]oý¡xͦ ¹ûÛÍ^™Æ¤‘C[m6ðF ˆ•Ÿá™þþÓs‘ì‘” ¿Í° IY2yÁpÈË‘s‘ïOK°¶ÐÏ)¾ú]ÆÐ/O8Fr| ýqm@Ö¦Špòð½{¾wOøO¼ûÞ9Þôÿø·ÇdŸ•}Iuó—T7sB"¬¾”Ql=OüÚ¸¨®¡ø'I€Ø‘wã¿rB¢ÀrGÁèv»=Cå ¨#ù·B‚PÝVMéÔsG<"iYlÃ({»).a”½m".×w€eg¦P&¥¤e0ï[ªgbbb¢'“fv-÷;=ã9ÚPA#£PúBiI¢n¥-èš …5¡‚‰ÚÆ[$DMˆÄÞú!>z&Räß/’:7Ù¡ñ_tÉ sóÜëí%1D¾¤º9î…RF± j@\üÚĨ®‘®ÄòÝ=üí [KQ«êœ\LYv½“û~Q›^3ÕnÖi¥‡"!1Ù€]Ûnž%I I`2ž%Ó7:$9içòxþÓs‘HA/…ßFˉ¤ ¬ù ­µB „·~‰Ú:d”Ë)’ ¹îSu¬"{nÜtìÙ³wÜw,ügFAJ8wúÇï§úù–‰dú5Ë4ªk\TÚ$îwd9-’¬û„¸m ×W¯3›¬2(«`ÙÀ°ÉìY‡•öµëT¶M*Æ«ìÍ“ÇÞ|ôd¹&î„D­Qɹ[ú#Â()­T Xóõ‰-)­X¿Âàñb\÷‰)ÈzÑúÚ-»öܸ),!_»eWŽ3Zǧ}õon[ž‡å{Ž‹êš,@lä{mïLëÀH–7ʬ=8»–M8ÛõB¾â‹DU÷¡™×š$=ãó@™T”± )jd$é´/mš\¼ë.cËA8@'ºÛ&í•QóC¹{Î$»›æ&]Y~w¸ªßf }P%ÛËã¾Pù­Y73Z_»e×±gq/2*˜bFk™HˆVËÕ•/@lìª!#Å3'âFŠPIÞ(³ª&0PÔ©ì"ò¢’±ˆU½¾z]HTz›z§®~^&rÖ©«‡ûÇoRX5hòÕé-tƒF)°T‘`Ï Ó:ä±*.1ÌÎ# ï/Û%æµµÖ(§´d¦•( C“òêÁ˜ÀÆ ÃÈiZNi#¡ùê¬ÎE°NLá¯) ò1—›ÑâìBè¾ë$’m_t‰XrUôŒÖéÅ?î®Þ#ºæòu³åçÄøá˜í1wttT­V™¾ÁÓ1Ø3²ö$„ È•¿«oá•3Zqy$Î")ÒÆåryËh“%Yk¬ôÞußÂ+ÇFƒ‹ë£g´8vW­™c£î=MÔ:°H4Þ°ÎÑÂ`ϪH*¾òår³aœ„H$Û¸?y×hýÇ¿=¶u‹äبûë_Âwâ/‚§#¨"ycOulÔ½u‹^ý“ÿ…¹˜I­Ó‹îêž& ß$LñÆáZŽª5É*D©’–^ÅÉCXK’‰ žé‹¬‹ƒk!h‹äYH <[•ËÚ°DæÏ8O¿ñú»^úIù_nÙ¥mÚt ¾ÍÅÆA‚…\Kóî¹÷–^zëßûçþ¯½¸á™#oýñ>|׌‚ý€ ¨"ËÈ¢/pê·gžzÜ÷áû‘ã~=Š*²F༠ØRhœ·6ã§Ÿx{‰<{ö½ç]~nÃspÉ'×Áœ{ßâµf‘ं ŠäŸ»|ùûw|jÃ¥ –¼pƒïñý"‰‚€ Šä“þüéÖÊóß8UÔ ØË¯ÜX¶ëüØŒq'ޏŒòÉOíTBÞO>ùÂMįÚ7YjŒ_V‚ Š¬,\¨Ä_=1—éyÀaX–íýÁ?}Õ–úÆ=¯W½ñ俼ʥ±©äÙ%¥;JÒÖ@p‡Tóh ¿ðLñ†Å’âÒ2±^Nâ*Þý"²¶YMïzîÑvY–íýA¿hÛÖº†›_íÍ/üìžO`÷—Jw+w‘œˆ ‹êR|˜^ˆ Êk‹Ë[7¡¬ßF‡Vÿ:hýé\Q©sY©b=:|:‚ E¬"¹DÛåøÇûþy[‰èæ=7½ùÆÙ .ø”1P±ó3äùÌî/•žw^23+”¢(ŠÒÚsy€˜ Õ±W"1Ãô¦Ê|Y—õ`y8`õAað µf{Hx‘c|6`×ÖëÐl?zT¦þl,'9E(AÕ£°ü"£íÀ÷ïýÑöϔܴû ¯¿úæ¦K7~qQ´m‹D*Öý¸œH~.:Ü¡À‡‰:t˜ûG¬ ÞK;÷?æ †H Ó+<(obY…ah’¢¨õætÉÑ/â>lž%ÉfS0.!AˆUƒ=á«3}uz' ŒÒ4ÑSÅ èýõ:4÷ö‚^ï€ u@áÒ¶›½ ë84 BòNQÛn™%&1\°£cÞb™e˜ŠŽCm"w½ÎI’$8uõÌŽæ Á&Ï4|×ͽG»qèBÐ.Hâ÷ã“pÑvãþ%+ûƒ{žÿ¶ì¦ê/¼öÊ›6mzñ…—¶—‰vV^w饛ˆ|D0M‰*h ðŠà. ”÷'æÏÆbH(«0¸Ý•Zä¹Ç½+.²Þ/²3Ó`e5ßÁl{—ÞI*Mcc&%éÔwÙ#¿cHÒ©›®³j*fÖB×›@¨C^³i82Òæq÷·›½2I#‡®ß]ùèǬx͇ÝQÕ}´WÉ01bÓnö†ì§‰‰žªeÿ`#H±©HÖÑvïû‡Î{ûº†¶Ïý¥oÓ¦Mgü’Ò«$%Û’Ïb­0 ƒ AWEb˜ÞdAyãéò†ø‰Ú:T~ÐêZgÖ¼ï`gÙ€kʪZÉ0Þ)WX!FÙÛMHZƽh‰¤eàõ Õ:'`eRJZó¾èÊé6WÓÉf±HÒ©Ó‰ ªz&&PNT‘x!‰{‘–Þï÷“oTÔ·}ÎýÔK$IŽýòÅm×l½¶¼tÓ¦KˆÂùvIÔÖÚIÎ^P† SÎùÃ]Ü5ã¹N9EQ–Òª°ðx4 -r¹ÜÆ!UDŽâÊÝò¥…!Î:Წqïz¾â®'ÀÅ]"J!òö#úF½“$3ªœ _Á0䬅nlì›Ag R Ù~‘Ÿ þÛÖU•-ö_ÜpÞ†³o¿{Û·®‰·^xá…B­„˜¨P©ÿž‡ïRä/E|„"‰ÚêQ§ ¢ „²Eê‰+«à v¤0x<ë ÉNB¢ªºœNç´»»ª*îâ6© ZHdÒmùlø6© op’*d n¹X58¡âÜ6]uT%‚¶H–lxwû®›¯yî7óÎßðÎ[ï~yßµ_¼ñ¢‹.Â7rÍ“Ë9ZÔÞŽ †qè´á¾3}}3,KbEŒ$Ón÷´“$e5 qþFêpýÖá%’0ï‹ÍKu÷*dR1.âBÐÉ¥ÓH’¼|û[74ˆEÛ®Ú´iS1÷?FÌ] ‹„«ŽJûëuºÑJÓXA€X5hòÕéõNFiT‰óÛæ`ýºÁœçœJ.9múŽ©v³…n4‡Vd9¹Z ëз‰ 7~„[ŒÈBnq>V¬ì5O^p#ú컲ëKoØõ6lÀ·pMb8øÛ¬ž¸ks³§V”ÑÑQµZ½&·»ã9ZH¡HAÓŒ–±cŒ!>¹¢ôö;þšºQŽ²Þ¬ì)@ŠIE¶~öµ pþ]ƒoÛ:ã‹ HaRL~‘DýÈo´Ýpû"‘Œà¶É»E’‘_Äf³á ¨"ÁW¾\Ž œ_=1—ÇÚ²‹/¢V«ñ@eåöÛoGAŠ€ìVgá1ò‚¶È*àž~aú?_ºx3sËW*¥ÛEØ!ÆA„Ä.ˆfñ¥Wž~ü¥wß$_~ÆÿŸ;¤-ìA[¤@øÁÈÒŸºhÃûçÍoúó®×?Š¾Ê²'Ž|Óµó‘Îrðùæ÷NÏëÞñ¥Þª·¡ ß;A’щÀž¼çÇcÜk†iüÆ#‘Ã0N„«€]÷x[ešÓYY`ÜuA)Æ¿ðØòÏ?“ßXwIt-ù§Å‹X8{É'ñçO>ÞVz~òjš¾þ³Î ‚`ÙG¾ùéˆf4}ýgå¯üD7ôéG:+‚=9¨ïƒo<òxEÒs5BUÔ÷ íŒÒ˜ôwÏ ÈZ°BPB¤Y—3Z*ÕŸþÏžgOF§ýtкáB½ñÑf梙Þñ¿«K[Aìjí½ù¹‡F^;Ú¨´d Ë.=óøhU°QþsŠ*–=1¼opöÕÇÍûš¿»op–eÙW7ïk6ÜÑ2|’Z„=1¼¯ÙpG ÷g؈‰KL¬ùõñý†;Z¢ó$¦ðԓЀåxÓp¿‚ -²ÊöG„gŸ IÈ"ù•íñ’kÄ¥e¥¯¿úÖ®[._õyµà˜íŸ–\½àúÀ€Ñ½sŒÙþÍý†–+ ‚e¯.4íüœ°z^ó¿|³¢•€ßÃè¿×q¯;:æ-±=nÓúOx¦ïê’õ9Z£££q)MMM!n£›-z§cÚÝSUåžvÈjÅLg%ügeoÒp·üùé6@µ’q8Ó3Ýû£{ÚeRJZà÷XŠg>ê¶jæi‹¾¯zŒçæÉYàe”½m"p—x½¾3"a7%I§¾ÑÉ0ÊÞ£cUÁ…×”—aš«)>Ñ”+ÐÖ&J7ÅD·‰¤eÞ`,ùæa*¤ÛxŸd‚‹ÿÖÉš L…æP7•¼ÍKBž%ñcƒ ŠÄÓó¿Šo1Z$YLjÅ”"*<¾Ã´CVs(8Œ°»¶Ý/”IE™‰¿u²fWEÖ.&k³ gÁ°Á“á‘â w¿H¢CUÕÍàt:§ûÁÑLO„Ý&³dVÚ×®sø¥,(¿Lº->i›TŒW™Ö‡Lâ¶^_½Îl²Ê ¬:óFfqSµÑJ³ŽsSS°M*‹5xžh™ÈúÖÉ ªOF[$ÿä7ì²2VHj(NFœÎfSwâe_†?®òÏû–€:3í$I(“Š "zih˜Ó:¼·J•fÛATuê˜o7{¡,«FfsSXò͇FØpÁiw7ÓN’”Õ(ÄPUÝ Ǽo à°Î™Î0Š(·»¦“åçFùyßT‰SÜZèÃ&äOÇõ½¨"ËKÞƒ¿"™²,ñE¸I-à¦ÈCãuo³SïÔÕÏËd@Î:uõpÿøM©Æ÷äù§LõÁÕP|±jÐä«Ó[è ¤]1EˆU½¾z]6Ìô¦È:ôAD° ¾Ñ À(Mƒ!¢övÈf ÝX¡éP2æ´†µ·£ÂavêÁÔ«tðR!nÓwLµ›-t£™ka’[ }Ø„‚âl+Dø?œÀ²,äÃ|µÊ"kÃÁ‡Œ¾•8±¶H¸%[B¬“ÑÑQµZ²lÞ¼£T!E@x×:‚‚ …F‘Íh}·ëÁŒòß?¸ßã5ž£… ¨"ùá’O®žù܆çð ^3`ÜuAÉêoËJwH€eY"äüðƒ>üàýK/œÖgüÛñ„¢~m£U-‰Iø¡uû¿Ê'k=E6ÍqåGBgQ´¸³«%ª6á-‰¹5ôyrkZ$‚¬máôãso¿õÚâÇÏ; ðü&æ­ozëÉÙÏßyÉ[/Kzò«dwŽûÕ!ñ…&c H ž\^UP;\Fy§±6?ƒ¸9Q<CÆÚS”`|)XŠÒ»¾ôúÒ½¿ÿAï]ý¦ûê ?¸øâàã-½xÙý¦s&Ó›¯½–¬ D­)?hu…FjëÁrZà2Ê®°u"—SetqĤÿðÛhÚæçÕkUÑfO¤ž`EQE…ª‰ºiÌk`ƒFƑΨÆ–M«@F—ßFËåÁü áI)+¿®‚*’†^ùÉù—nxüû}[KÎ^ð)×Eð\öê«çÝ}wŠßïµ*û$7tº&íªÚØßï~›a´iÄã~lÿœÅæÉî¦9.³ÿøè)’œ;íY0»% Uûm–P…qõkÀív»ÝžtF ƒg¨527•AÙöN=Ç àiLbJ€qפ0)ˆ-¡QoC|B|²ñÏ¿òýö®‘žgž¹ðÊ+Ͼõ(ál_ße¯¼úΕWnJ)#“.ƒBáš´«j ±Nž ûöZŽûÕ»B“1ZDìZêìÜÿ˜Ç á­G ÃÐ$EQY9N²(«Šx“˜RL Nj-hí!Ū"Yl9ìÝi¨„ï}ñ^š¦¥R)AW˜î€ËÒŒÉô‹Áæ:=:wÀhàcÆjÉî¦9ƒÍÕ4 MFÅn°Ž» ^D‚E\F:ÊåW( n7m£åôé‘(ÿ¾Pɾ,ocxR ô‹¬ ÜNOŽé{×áæÍ›ûûûïºë®ššš>ø@X!Éî&xPû ߬TÔ|Oæ@a0‚!ègH¬'X›Ú:å˜ ÎÙèN»€fÇ–Í@‚“¬y…n…à7A µ°wýüóÏ—J¥çΘ_²»i'³“W †!è”Gû±£3K¶—3I ÇùÚI9móóÔã2ÊåEQ”†8#@aðhZär¹ŒC*þ†$+›©%ÿP‰)…úE¤0Yýs´2³¸ÿv<¼_$Ì™3g6nܸeË–¸œç6<‡{׋º¢-EApI•:.d•kr.v‰o’:#Q×Z‡Üè]/"Vaï:_¤àþóõIâÞõ¸ý"¸w=ïDö®'Í—‘>Mç©.¤%„ Vg¿F½Í0¿ð฼µ­…`ˆw}e0ÊåGHrçþÇò4ì'X"ÈšcÕvbÔÛˆ}Ÿ¾åë(8n 0¾ÈJXÁOZ¾P¬8;…*²<,½¾Ô»ðÀÇ>>øf.€oùèE¸ßôöå[™»ï¾âÓŸæ—µ¦\nu©#q5IÌðê·Ñ-O‘dë€Û ðÛhëvk$½œûŸÌfWÔª`2båDê &Üöà©(; zLßCQoI»Â7Œ-›(6.£|²v¤ÔÒrð$¨„íÝ Þ…avˆÚ=|ÚFk<—˜ì¡ŠŒ/²’:ý€‡ŠpQoÿŸú——ÞÿÕî·^½ä£`ÃQoٻÿ<Ù¯›P¸Âà&'CÜ0imñXÁFl~…:®PŒz §ý ø† [ì*¯ ¹Ö#è—õ¢4FXY{§áÀˆÇ#ñÛh¹Ù1!…¶ùƒ’a…·[.£Ü`Û£#‰…V„›3Äc}‘Œ0Ý}WÞT£Þ¦î• Eº•l/‡A‡l †i­ ƾUi8uPÔª:'câk¬\@¿ÈJ©5v²:¶F½¢#¹E½M¢!œm!q哊Y¬\´Hd]¨H.„£Þ~ðÁ£££7nPH²» nÓ>È·’$j¾‹'sŠ‚ 0OÓF—Õ à«'X›Ú:´qÌÌq3d6ºÓªÚtÍŽ-›“°'ŸîKöP…NŽ~›Í†_uY³*ÂqþùçoݺõܹsÂT$»›v„dQo'årŠŒì{ŠÎ,Ù^Î02ê­‘³êIÜ¥0xÀ(—Ë¡òÀȪe’¯!Æ$eó‚dwÓÜmÅ0­*•½SƒžZL†·})ÒvΚ·BÔj5~Ïd™¸ýöÛó³ë0#0ê-’Þˆ¹Ñ~á»Y>6oÞ¼j¶HbPÛß{ÿí70Ò-², ‚ ËÄê¨F½E2÷‹ ªHŒz‹ ‚ k<)ò_ATdýZ$ØRPœ‡]€>y÷‹°l`XÛn™%€a*: p€egúëu\<Úèà\ºšS‡IVAPExøqïÏSgø;ÝÿÆ.Fòe…äWBÌ^',ÖöÏ tW°‡®´‰`iXÛ®«ŸÖ˜45çVAÖ—Šü¸÷çê}Íió  y!¯çhÅÄ%±j°‡»à>lž%ÉfºMLâ6ºÙ¢wš»U=UBêMQ<Ú”¡ÀmÖ„ £°íÉÜ ÿ÷ç¾üÙcްæÍôÕ[¥‡ÚÄhâ …A–~‘GúSïkÞºõÓÜ?¸ãŽo†ÿ§«÷5§µW$#‹$÷z¢ªºHÒ©«×Úl”23í†QFb±SÕJ†ÇtÊàä¹w÷·›½2I#‡®ßùr’NÝtõää½{kd$9ë;°ä›—Õ(PBµ`‹pâÑÒÒmmmmmmNçrÿÀÈÈ—Ar$¿Èèèh\JSSSUÏ„ êôÎY Ýh^Uï§=eRJZà÷XJœ[¥›‘¢¦ÂìuL»{ªªÎø f¯(Ù£!H1©¼ð‡—húVë¿p² Mã…?¼´ãºkøÊE…ˆòÛè–Ѧ‘Ðk¡ÑžCþñÇkÊŠuO°­¬ý"qGiq‚TÕ31ÖÍM%9uZé¡6Ñ*Î N}£H¼¾3ñ-)jdfï¼/ÀnóÍ'âC €Ûo¿=×5Z×ïÜõàveXH²½üd0ðÅâÂ)òpDZ/.œ,¯ÍaüWc¶·£¬9rô‹ð$qÛ@¯¯^çðúΈ‰ªêfp:Óîî*Îâžv’$(««"휑eñmR0Þ{(.3Aˆ52³Ùwf ¦ÊªCÙ0Rä´_$‰©‘E­Ê>éפ½µµõäÂ"2W„¬9EQr¹Ñ±Œ.¿–Ëårã¯ã,9ýï‹Q)•¥%a›G.§(*TKL%®Ø*bo,› )‹$÷zXv¦¯Ëà†jn —I·µ·£‚aÖá˲l`ØêO+ !EqNcæ}Kàî.+I:­ÃK)j)jdà˜>ì+«¦ð“€¹Îhí¸îš–––4ûïÖF_åù))­œ;퇒Ós•¥šÒJKè5Í ê0äq+‚Ã~È®E“pM…†ú–ÇcpÁ®¥Ž0;÷‡&´x£Ãò„¤u-¥#wŒ”iäZdyÉï~‚¨êÖû´õõ³Ü®Ž MxÉ!V •ö×ëèF 0‡ŽÆ¬† N=ßvÔÅ©½2‡ÙB7Vh:”ŒÙ*%V š|uz Ý` ÖIñˈÙì€Þnü8 ¬"™F½ÝqÝ5/üᥰZ¤’ þ9­í ÐDsñýÛ ‰–@Lp¥˜ J¡h²!NÛh CnC3Záá›’Ö5i/º›EäZdù­<ž£EˆUƒªdÓ31ÑÚVB7Z*4ÖA•8œžV¢x‹ÇßT¥Š®ªªgb<¦ê„{-¹¦¼ÍÕ¸‡)\É"¸Hö¶§F°—×8I±ò æ©°ŽVž,Oˆ+<ʼncå㮄X58ѰkÛÛë¦:2Ý¢‘cñhX60l2Ï’d3Ng!klF«sqçœÊÆ()­<òà‘ÊýtÜëà‰ù14VÎòˆpòŸž¨MГ4zV„AdÑ"Y!-Inµ¬@ñhARá'Y{*2TrªsqçÆÚÌm‘Ø(¶±áoc£º¦݃!k-ßy\`×RG *$­Àè°EDv]ñE¤`‰DÌ͈GúûfÏmðÂ^J‘mÇu×à!(H$F̳B„GÌU«Õ¸(A–ƒ\#ææàAÌXy¿‚ BX5¿‚d F>>1ѳ¬böÊ4Ö±ñññ£Gõ`êŸaÙüÕ?ÓWWWW×Wg²û&Ë/¤Îåø•¿)ªRô¬g¿ˆû°y–$›é61A„¸n&ÉYóawÜ€7¸°lÀÞU×ÐЕÊ0ÓW[{__W]]]§FìL_]8Špº±ÞÎW0\¹ÝÞÕÐÐÎØ’äƒàŸʤ"NÆÄªÁ b%> o«3ÌôÕ544444ÔÖê¾[¯s’$I:uõqâÄs_ Üý±ù¹f7„è›aÃæZt©»+Ûe{1y/EŒîRÞ›¢Š Z$©~xN;€a”‘UTµ’aÀ1zq÷·›½2I#‡®ßùΓNÝtõää½{kd$9ë;°ä›—Õ(„ÄÑ Šç/H’Î)Й”aKÑ’D맺HÒ™hi¥­7CÀÞ¥s-ŒÉÉÞûörFU|œc¾ûDUwlþˆqfÕT0ŒC×ïª;¡ÎÔÝΕµÐõ&Ðê×læÄ;EÁ)ÐY52𚻆*‚ éÁý"Ùi@™”’–À¼/lg0Œ²·›‘¢¦‚aÓn8ヅH`å) 2Œ’nEë\bK–€ê™˜à«ê™0)’œµÐÑ?É“=KЇeÙ€kʶ0RÃ{ßäÏ/-˺ÛEÒ2îõ@›ˆ«Çë;“® Ý& Þ4ÝOTA+$¯_oÒ©oÔ;I’ªxÔ@Æ Xß¼ Ñ6ë‚iZ; Y5 I:uÚáð`𶆄 Ü<•P’Ý7F$ö®ººFî.ùxØ|\]pR¬Ûs´¸ù§Ó9íâ¦o¦$ Êê*‚HþÃt›TŒ7fÒ#.377e6ûÎ,ÁTYõ à¹¡eÒmIZ’¶þ¶^_½Îáõ¥Þ Û¤2oF]wß8;#0l2{AÖa¥}í:G¶Ýy.ˆ¶‚ E’joGÃ8¬ÃÜDͰÕž•â4†›'r÷G憼NëðR:£Â1}ØWñº·Fx Îû–B:W&å–ĵ$ùZ©™¾°‡Ÿ«A&Ý&àYx3p‰ÁöDÔ±)©î›?Æ Ï[§Ànø©%'ñAPE$)ëÜ/BˆUG{›½fº±±±‘6CÇ¡¨_¬ÔÞx-t£UÚ¡d˜p)±jФdf-tŠ¥MA5p@†"’ªà”©¾Qï ëœÐ–pm=˜êëõN¦Bsh óÛ§­7ƒX5ØÛìµÐ\¢Dmú`_EW’ì¾!ŽÎ請·™$ºz뼌óÆ÷'Ö)ða^0®a«î)É2î:‚,+w=áýqë Jœkm»¶Ýìmîè©Ê±`.ÛxøW774㙾ÅÈæÍ›ÑAŠzÜj>¨TÜc1Ë ¶·¸Ë(7ºðSŽ*‚ +`‘ä^a¤Ô"§mþ|ŠHmÞY+jUöÉLV¿Í2w€Vð¶*¶ÂÚÚŒ¸&¡¶Vø-Pd×\Û¾È_\aÀy­¢g´" Ï~‰ÚêÙm£årˆvصTı‘|²^`¶å#Ø€¨»Gš´sÿc¼³`¼*Un9îW«'¡Ö“ËÕ|mã/Ž Š È2[!y=ŠQ¢¶zÔ1Î>‡³åŒÿô\e)-¨Á¿¶n>&s2²}j ¡ŠdÐÉÚ–X)VpF )–e¿H”!·Z2Ÿ{J+"ÇGO–oÏhx•¨¥–°w!¡U‰S\tÓ¼Á¹LÆ îÀضå·ÿTÉÄ"Ég®I{eiI>ÄÈÞ™GG €ËØr‚ŽLu$Ô}`®3ýRÕ‡DI”>ßçÜÓg{ZléÎóÇH²~ŒdÉ–ÿx¿ŽþGwî½ó™ñÜîŒ$"X"2ïzXÀ,O?&Ñ'Ÿ|‚X,TK—.!‹Á’t/lïø_ c w7|9þÏ=ûÍÙ®nÛü ŽH˜Õ´o{ÇÿÚ÷ï÷,€ÍÛüÇ’r¾9›ZÍå|fÚ'å|ïŸýÿئÎåœ`¦1ä|‹.íCΰP-É2çÅKæoõŽ0"âüæ::µ× ShOßÿÕƒO§ ‡žºUfa ³ÉùDÑÛVar0iëŠë÷·W)¦Õ7©B;­ýMêYÙL€ÌXö9ßëÞRùòÀÞƒƒ‡þ~ôÒ¢˜.±ûåw÷=R¤?aõ·_çǯo»u¶’¡És¾ ­±Âd'£Åét¹\ýýf²´yÓlÀ<µ$»b/HDE×^CD$Ë´;·Åg„½#Œó¯5zê:õ«ŸbŒÑÑŽiëÁ»þëÆ H³}±ç<<ÒÛý‡øIDiRpˆ1^tóŠ.:;(þñõ] íÈ´Ü×ò2eè;Ð9̘Ñ™–EUG3ÅÏØYÉd¢®µÇuÏJ3‚Dd°8›ÕB¬L}ýHW×pêLa ·Ñ,·`–eõuÍ‚°úŽ bìhǃõî?&Lƒýþ•o½þá-•Ïn]Aou¼rJV?th—†s)'»%ü)›¢1vÔGÿÖñòÖôûןŠVûôcšg:ŸÐÆJŠâû¿jh?Gê ì=8˜—)CQôzìĹ¡T•&@Ìaò”ºÝÍ%¬¤Ùív¹\ÎîºbÎí¦‰AƃdvZ Œ wðů;Hfgw’üñËæhÚGD·Ö½S_ÎûCïãåñpÛODE×Þ~Ý2":áÿä~m”ó¯ ºæºeDÔÿÞ¢(Š—þxž8¿¹ €"ËÓijíÿÌÖEXΠ֦Ĕ° °(¥Lme©J œ“ÝK#Ë¥òqËænÚ'e~~YYÄ“/ÆŽvn2 1FžûóÓ«„kÊ1‚°ú¡ŽÆBÎÙÈÞç7•ÿò·ùÏ¢DÑÛªÕjµ­²)š´5hµz½9v©`¦}D$ËÊ-»4œG3¼å_$ο–Ç«®“tàÚžyýúrNDÇ[Ò~¬$—-R—‰1‡g²k°¢ìµtúIY×m1pž¶œ²p+˜§iŸ(¾ÿËg_Lïý×{CŒÑW|H–}©ôÆŽÚÁ¸âË ¾HD#üdÿÌ&‹ÜJøÛÿŠÜä—Tà–Çvi8—ú0}ªMõI÷ê¥q)à'¢¢Â‚Ô—F—‰|cTT¨À7¶ÀÜ“Õ'yaõCO\Øõà=‘Ðm}ÞRuµ ÑÕ_ûqý…»;»¿½µ;öÑÚeåO4úÚ{/­áÐSñn=xW6-ÞòØ.MÿÓC;ËéÙ]šþ§G³Oéã½DÄé–žˆôašEU{a[…ɬw1F\6ê&«Ñav˜*F”JbÃSít­•^´Tt 3™æˆ>ùä“9ûûÒ7¶œ«ØõãºÕSXýÕ_ýçî†/Ï`÷ò÷µÌø)˜!K—.aÉÜì\ÂÄÞŸ¬; `:æhÚ'ý˜Ç·ç|øAÝìv7ã8€9_D°(Dô¥?}è+ ló^ýÕbÀbvÍgÏ´lß"‚ô¸‘/.™ƒ阦Õ+ÿ/ìlXÌvìþ‰”ö-YÙ^ÌÞ4€œàÞ>€E!òIÞ›–† €…äÌhÂw¶`¶`Q@Ú€´öÒ>@ÚHûi í¤}Hûi í¤}0‡,™Â:{öBàfͶÍ"s NƒÓ?›!†k`~¤}DôØÃ!v³à•Ÿý A˜›pœþÙ 1ÄXó#íûÌßáê0,j8 "†Hû²b°Ò¾%b‹:eÁi1X,iÞ¢À"OYpD ö eÄpÁÈò3×ø,ð‚Nû–àwÊ‚Ó b¸h<þhMæ/¿ºQZÈißxˆçT^‡^\Ýø&›øçü¾½ÿìAˆ½úUÆ–äTíVÌÐ=Îo}²÷nZ>­;NòÕ1˜³r? ^8øûÛ~Ÿ·óÌ8›Í©¦ŽS©£U6‘É)b™ǹã?»$Ç`{kº†¥=U\¿¿½J‘Ç=åm«09dö”ÁÚߤ–ÙSÞ¶ “ŒI¯¦[ž¡ÑXáœÖͦÂ9Ÿö…sý_åa"οþÒ ÓjAÅ¡Ýw>ñÄê3O¼þÓ— D«Ÿ:õqqœÄ\«%Ca>>Õ¨‰—^«{à‡Ðý/y¤¾]|ýQ‹çUÓêiå‘yèÌé´/—Ó (^|ýÑÊ}p›tÒËËyfœÍæX ##‘4B¡û¥‹ÒŒMé"“SÄ&å3ÅäîͼúìgrÍù:ýJ)ÛÅ`oc›·=oÉ ¨›Ýîæ+—9ÍklÊÿ«9>Dû7ó_ÝôÒ}ŒýþG¿ó±Ð «¦¤Tc9 ‡ùX g‹¦dÝÚ5ëÖ®‘Æ ¼öÚ#ëÖ®)Õ<òZ œT­TFZkÝÚ5Öá±PàµÍ%±Âc',¥›{Î…ÂI};ñ‹ú3¾ôô*.އyˆ+î{å™U\œèÕ K©Æâ?žT|ÏÓuìãßI\žÛ(À\NûryF> ¢×ðÔóL¦W gKôÄ%½;1¦¶2ïÎfs0†©֏ܸ’12 «OÖâäƒcâ¦xñÎ'ìŒ1öæSwîŒ)}ËóXóß e~$¿ðQQa”¥)ª:š¥²V­VÕêE1hkÐjµ ¶ HDbÐÖÐ` Š¢”;Ú´:N«mõŠÙÎ¥6ÿj ·Q§ÓÅšKÍV§ÐbºuÓõ$¶¼¢±{$‹´ÚV¯·u ]ÊwÚs}Hý Å–¬ºû«œÓ‘c'Æyü«cãC/mjý=Ý÷nOßÀqç±gî“T€±#ýáçÞ¶ndì÷ûO&U ¯~üØPßÀñ·÷?~çö§^ )Te·2öûÏ‹ã!1ðñ‡7—­½:œÐù±ñ¡wç5«äûÌØ‘gïv{f_“T¬çé:Y¾ÿñ›éÇ–çôÀÈ 0wÓ¾\þ—CáÕ#1vä™»6<Ïã—§;qõ¿wi<$Þsòè‰kèÅ:>¸õ1ëã7Óág^L>¥ÌdzÙ\‹aº+µ‰I#[}Ò3 Žr›VÒ8ØúUÎ9ߨ2øôaJ×·üŽ5ù[(ó#i6®ÔHŒ9Lñ –4Kçr¹œÝuÅœÛMm>*Д)ºLD—‡©L£"òµÕtú•u–:%ÙMm¾œ&㛈eKŒ9Éì´î< SáÔZL·nºžøÚLÆ g¿¹,›Ös˜<¥nws¾¦3gm¶/2éN³$é9cGvÔ Ľ1 q¾á[÷];¾ê.=çd?v2–­vüšëVD^µZ÷Eξ;4æs´nõµÙt,©ÑšÔãiêÏܱÈr©|t9fûål¿½ùøsΘÿ•šRý=ÖäBü‰kùDô‡sçÇBîV,¿VšøyÏND7¬ºnœ¤œRæÝÙlÆp’Hf1©ÌÔöZæq-m÷Ëäw¬ù˧¡Ì¤òêf·ÅÀîªÕËÌT%>õ.‰bphÐ/ÍŠ¢×c'¢¢BUa‚¹ÎuÅ5!áÜP[Y@ªRçd÷$u)Ës˜õzN§×›c7N²n\OD1!΋ —%-O[çk“*'®Y»·/2ŽÞëYróõW‡ù8M¼Jûùãgÿõå†_Þ¢¹â?ŽÕ«…„Õ)ÍsAƒ‡žù×—?bŒ#.†Ã|üê5¥7ÓðGç/„–ÿ¨hùÕ|<,dè˜(¾ÿã{·9iã÷³ívJésjý”EÇRꀅ‘öåºÊ¿<þž­ñ’ý‰oþìÌ[ßk¸¾ëG\+{âºã® þ¦ÓþŽ·qÝ9ÿFÍ|<9 2öÖsú·ˆ1òŸ½æW%ÜR6ÿÎfs-†é¬iF,û½–<8ÊnZ6{3ßcÍX(ç=¥nv;›¤v8L…ûÛ+‚ m5Ñ®‘ªÔÀív»Ç×TðKUI9–ƒ#à‘"Ë|#µ‰ìgÂ&k1ö©‘èm…™Ö•ëIÂåïÌ­Ì̉kг}¡°˜ãƒ¢·/DÞwú£ ¯â”ôjøš,o¿û콜ˆœ;v{C<±q"ºyÅ«]ÄØ|^˜‡NvýÛ[œLõ_I}UzÜV¿«Œs*¾þê‰#.ñ÷Øc´bùU\L\ñBàD´òš«jû¼ªüFzë䡳…k¾"Û±Û*VrÞÿo»}¡pRO{%_“Ùº,YæpÚ—Ãÿòxèä›^ …Cáè¹"rr“?±\½ü"øÍQmôÄæ·ßu cG¼q1]+óîl6c˜fHšbIJi1ãà(Ûn¢8Únú¾åw¬Éé2±(z[£ŸÌ ŸÇÁX4Í’ŸëZV¨$"‡Ã›ë…¦Lɘ£»÷rŽÿ—¦ÓF—£ý)*T$æUÓh1ݺ2=™Èq}‘›ü¦ßú,¥}a.æúàDŒ9v}]û­å}Ýä.nxéÍ'¿$RìU"â\ …ßÅxO¤ ÝòíæÊ«DŠ8±§ì¡çœžþ®*iE.ª~ÎȘúáç狉1‡uÃK§Ã<|õš5Åäܞ¦c×T=÷æ‹edßõuíC_7 F¾ï*¡òpÚú'ïXÒóœYæ¬ÜN€¢úáfjßPö­å=ïà_¬iWåU"¥;q}þ+å+9çüæ‚k&*¹jÃÞm:~ö§5ßÚXþMãžÓa>ßÏfs0†a¹ÍœNÄ&ßkéGÙvË ôÍ 7Òïù˜ö›Æ=¿å*ù±/¯cÍXˆg~$¦Aê&3Y**t:ÞìàÅuÒ^AP7YŒ9LÝ#Jé3m^Q,Дs¹ã-JQÕa1ðá®Úœ>Z›® éÕAK…ÞìHw·ÜÔZL·nºž¨6Õsî0ë=¥ÖøYÀé´ž[’JD'Gþ|ÓÒPöëìÙw¨zÓ7fóô*ŠÞŸÝÿÌ12n{£ù_rœùÿh{¡nïˆþÅ_Ô«çTDzÑsà ~î`šýÓà\>ÍNíl¶ðb8eköì;´Þx_æúì‡1ZÍMgF—Ñ[OËö-‚ Lñ#³|ýQ#)q8ÌC¹ýŒG°ÿ‡{?fl]ɪ™èó”;óÝ» ㊜Íp+Ë|Ñg?Œ , SLûfýú£ªæ«†ˆD ç6óYPÞâ*ŸÁ>O¹c0¿-¸Û0®ÀÙ ·²Ì ˜ÆCÚG!ü¯Àâ†Ó b°XÒ>¼E€E§AÄ`Ѥ}¸!yÊ‚Ó b°HÒ>ÌÌÀ"‡Ó b°XÒ¾þ· v°˜á4ˆÌ;SùÞ>˜û’¾·!"‹Ò>¤}€´öÒ>@ÚHûi í@ÚHûi,®´O½­Z­N§ÓétZmƒ-(NZX«mõŠâ| Ó|ì3@žÓ>1hk¬0ÙÉhq:].W¿™,mó.=JJì’þu³Ûív7« ,Ò´Ïw s˜1£µIJ‰AQÕ1‘y[£³€­ÞÌÉ–üso«´zƒ-(m Zml61VÆfkÈ0Ë(­‰ŒeuA[ƒ6¶D½m&cŒ9Lm§ø©ø?Óõ-µÝج§¶¡¡!>‰”ëÀ|JûDÑë±ç†R•Ì«A[ƒÙÁ §Ób`sƒ-˜[ç˜Ãä)uv×s>ÜU[a!óþz%ù;-½ÁhæÄ˜cÌÎî:%ù;øR»×VÓéÎDƦë|m5~e¥NIvS›OÔMýV眬ýM%¬$þOÙ>Ùv}m&c‹³ß\6ifÓ’ì‹öõõ%-Y¿~}ÆŒ084èçÜXª"¢R·Û‡‚••Y·È¹ÁÚ¤"¢""?7XÛ+ ÈWDä÷.DËÔVùío“*5©bÌaj,Üß^©„XªJTT¨*,"ò‚¢ª ÇÀ¥¶«¢Ë⼸pQAa‘?}dã êêêÑÑÑLû¤6âÿœ¬½K₸tmv‚ºiýHMçðpW­¾Ë`q6«…XfÖ;ˆ±üõJÚޢ‚¬úL€lôôôLmÅ%¹®”ê ‚ºÔH‡ÃãkR«“Ê.+T&Ny) —ÍzhEU‡»ÊÛª5;˜ÝÔVÚߤ¢e…Jâþ„ ¸3z»]jÔ‚0…$`Êòð‘Õ¦úbÎí¦ÆØ'¼­­^Q…¦LɘÃã#òyŒ)Ë4ŠÄ+°RÖH4¸¹1n†¶SÕd5p.屎u÷^NNRi$pYöÏ,r;A]j$i{e·%¾ó/íUíýV#ù»jõÒ‡U=¥‘Y4EU‡ÅÀf½ÞìàKG•B6kT’¿«Vß]Xoà<¿›ûh­^o¶“²Þ¹µNêØpWm죵‚ ¨4Gz¢Õ¶ú¨ þÏ,?{+%v³ÞSjmKº>Ì&ˆNŽüù¦¥¡I‹öõõMíþÁEH Úk:ýF«»Yh@eŸ’]BDGl=-Û·‚°±Ëg¶ýþ?"âÊúýM*Äæ¤}ù$ý˜G3sCöÒ>@ÚHû`¶-ºOòîÙwhqîém›ÄáŽãgæŽ(Dç@Ú7­ÓçiÏßuÙ{ø¡)¬øÊÏ~…c=_¦¶ Ù# ‘™{ ö-|%×ÿüëó©ó%¢Ïü®Ë_a؈ Ò>˜O#ë¡Ï}ÁÌÆƒŸ|‚äiÒ>¸#ëAÀ.@diß"Y1¡‚]€ÈÒ>Œ¬€]€È@–²üð5>ü‹Hû䉢·­Âä`Œˆ8/®ßß^¥2¶“ÑÚߤ®äµ!Q ö6Ötú¯|O²Y—`dÅ.@d ?´&s—_Ý(agÒ>¹ä)hk¬éô“ÑêlR ‚({Û¼íó ‘"ß®aƘÃãkR«çzgÇC|3`Ú¦wßùëüoï]áuΛC9ÚùÁ¡ü£¹´ DqèÅÕo²HJÄù­OöþÏMËgðÿBjñ ªüÑûÏ®™ÅÀiF†ˆ8¿o–ûû{íŸ>û™ÌÙ͹Áâtº\.§Ób$»©¢Q:[Î…±6Ý™_ÔÍn·ÛÝÜU[a!óþú¤p0æ$s$L|¹¥«Eµ•*M™’È?8t™A¡)S26<8t™ˆ. R™F!Däk«éô+ë,uJ²›Ú|I=t»›KXI³Û-í°bÎí¦È¿™¯Íä`Ì`qö›ËOSa–9Ǻµk2R57«³?*®äl_†é´¡A$#T•8÷唽rn°6©¤pn°¶W¤„ƒsCmeA$LvTÙ$ÚÒT_ý&URª«^ê¼ô#¥¶DE…ªÂ"" Ķ"ÒÃxRÑV#ÄyqᲤåi+ÌxMŒ=úާ+Ö7p<¾d6óm7”ÑàÇ{rÝÃeåÇO&®«NüùÅßÜqýùßnß÷'*+OHÎÊn -¯Ü»ïOtý¦míq Û?&¢4×g?÷ê¹ò²ó¿½Wø‰ H5îÕsåeôñvá•íƒT¶û¯êI~­te"ü¶é³ùŸ£œ?Éîêp|`³|H; LJŽ9»¹áÛw„)^ýø±¡¾ãoïü&ÎíO½xbœK…;òÌàÝÎcÏÜNhîükßyæÈ­í÷ô —^=ÿÚwžµ³¯Z=o[72û“ß}íbr‹!1C™t MúÈd73›½ø@Ç·>f}üf:üÌ‹'¥2C/69ûªÕós«ª/Ò]OtvÔ™´dðã=D{ý³îÁÏɯ•®LRŸËÊϽšý·WOíâcGþ][zïÓâsÎw_º¿ ¡À5×­ "Ã×=7¼Ð¤Nªd,8áþ€èÆ‚k–p¾aõ*>¾ê.=çp{¡pìrax²2² ÍòE^)2ëË×êﱞ …³ìðXèÄ{v"º±`Õu+ˆhä|  ÎçÊe™¢šMÜRŸs¾á[÷]©Ö~ìdÆææË^û˧¡Ì)œ2¿ ޼© Š¢tkcâßcçqÖ s?ã' ¤Y™toÅs˜3]n‹Ô–’'m~jˆDÑÛf²óâ:seAæÇï‘¿|úZE)iêKnÛåCÓþJWyÞfvâ›ÛDLúù—¤U¦vÈeÚûcž®KÙW,틽±ðȤ¹Ë •‰ ”…ËæÄ}ÁÞîé¾—Ëåtv×óèuÞèæ´yìÆÒh®½¬P9qS‹ì{>Q öZ:ý¤¬ë¶ø¤ÉÖäf3²öö½_ ·ï©ÝÛ73ÊÊ¥ ¸×MõWAþ埯Ÿl‰LåÙ”!ö8ïÝ÷'"º~ó¢¨Û6CiŸÈ‰87þûÛǺ¾ûásúu?:½Dxá@³víFýv'cÑŒ!r¥/,SÏ…sþ¤—â—ˆœˆüg/$W’M™+•öMD¦·ïÃÎmÿEŒöÏ IDATÂŬ;,r"ÆÞzNŠ^¤Œ´nQÁÕIå“Öͦ‰lž§knÞìµ±ÏüÈöß4ÍY]æm°44ú—Èç±+c÷U_Ny}¥f ’ÞŠ ‚ºi}1çl¸«V¯Ý±Õ(#3 2ùÐf²“²Þ\©˜ìü¿G¾ñµ{ˆè—odÞYêf·4´M𶦠unûk¶å2o’iþå ri»”ýQq%gûT›ê‹9·›&擽­­^QŒÎ;<¾è¤eÊ´°”f.Gæ<§¯áäéðè,ª}F&i6[ÊUG츎mHwïåœöb|N¿uÙU˜,S“^=xô˜lÉwÚóñ •ݰ-_GÄÿý§óÒuÛ®Ÿ¦¯'ã’ó#ŸÐÊ ÎG ÂÀ Ñ »³º·O6½gKüü†GÊ9wîØí ññÐÅ#Ö—ÏÐ-µ¯î*ç\*_8å±lÙÍI/Å/!ND7¯øBr%Ù”Éù‘÷Èä¸Q‘bœíYûàÁ£Ç^{Û—8%–I÷<Ë&¦ó|ÞìµñÏüÈ⚉ÇÁ*²{œð¦ZY¦QUÖ‰üƒC½ñﱯԬü[qAQÕáv[ œˆâ¯ÕfN‚³™˜˜²ÊbN'iüÌÖŸÍÎEe»5šºM²í©[‘ãþš‘c`*ó&YÓ:ä¦}ˆætT\É´OPTµ÷[ä—®™êt:Oiäî EU‡ÅÀf½ÞìàKG•B6kT’¿«Vß]XŸÅ]=/Åj¾aÑ6à Drú$MëÊ$l{ùöÓ§†Yî‚ 1:Cºtî_u˜‡Â ¢•×\W œð<þæ·ßu ÑÈ…K K;zÒËCÞcŒÝx×꫸_I6e¦°EùL8‡Š/và‹qëªTëIZ÷?_Þ6CM·nRÒêR„3¬Û´ÍÍ—½6Í/ˆ\Š’»¦–a2CUj”ÞTKSªR#cÃ]]ŽÔá2ݬAú™iÌ \žÒ(–ñ­¸tO?¨.'%Á“O/åôyÏø=ò“ƒÎÌ;K½­±Ï[H½Ê˜Žd˜ É~e¾8½™äðæ:o’nþeÚ‡\º½?õ.Íô§ÎóùuÍR_›å^R7»]Í™ ŠªwU䪪æ‰õÜS{^’¦'±][ÕÑ‘š¹Nô!þy¦ IÞdAÝìr5Ë­çn–¾ÝˆâÞ$¥Ff’œƒÏÔ'ð磄a½¸ûŽßˆwÑÇÛW4#\U¶ùŽßˆÚ·ïã²ÍYf~Ÿ<ºb H,ßü›-›¥i¿òÓ爧¶ì»á7›ïøxGÊ;"õDz58 ”$-Ù->FDƒÛ>êLÛzÆ2ÉßS¸åÑlÒ¾pŽ»@¥Ë‘Ž]_w§[¾Ý\y•HœÔ?g|ÁaÝpöÆbb:¬hûỤ“7çb8å_þª {Ÿ”íyLûK"Î O¿ùä—7ìÝ(Ûó¼vˆëv>¿Aæ¢Ôb¬’«²(“S‹Lj²ìp¤ØOk¾õÓh4á¶ï¾xwß3ƒÏkù÷^¼»ï™A©<¥Y7± "ºí¾†û:~ù˜vå# wó™Õ«ºí¾†•}ÉÍ óf¯Mé{@s˜õé9WÖïo—¿%½ v˜¦Š¥’ذÃTAÖþ&Õ²ÂbÎý¤,ÓHoúëŠíþ蟉U–€ÖlÖ;ˆâg T›ê•öήZ}q]½wÚc3[æúÁšÎ®Z}'7ìt­ÍuÓ"ÍuÕêº"_I(}á_äg2^w´Tt ³X,»ùI]ÊéÛݤÕñë¾lvœ ¨›ÌÆŠŠa©çÅuÒnÊ0·.Ô”ËþÊp=0uå$)¼ivVÆ>4Y v“ì'‹Õ`7ÙsŒCæMHí^Va‘ëÒLU¡@D'Gþ|ÓÒÉoÝíëë«®®¥ùlϾCëtÆ’ëÿa6Møý’è¿_®•œ:ÿ×w]öo~c*¿½óÚÁCI?ÚsèsŸ#ȃŸ|’tüToúÂÒsà`Ò5×"#þÑöBÝÞý‹¿¨WcÉîµ=û­7Þ7Éiß~¿÷5GF.쬼¤_—0ZÝÍÓ=9ä+E›B—²OÉÎŒ.!¢#¶ž–í[AÀoòΆ 󠹚¹Ù>Èv\ÉÈ 2“Ÿ…»xÖ#½Åº©ÞºeöWæDAÀÎZ,Ù^üü‹²~“jqv iß¼Y‘ö]aadÞs:2ªšC®‰ß.)Œ_&H3CØY‹Jç_òUçLt iß‚Kû8¦.®ø.@ÈÌKHûæ™0fû®ø.@rƒÈ í›GNÿë<íy¾fû’>©¹dÞ˜pEdöÍïºìó·ó.ǵW:óÆœ"€´o>À±0Mýo#óFdöàm"sCöÀ‹¼0-{öB ³Ô{pêÈ&JHû`ÎiÙ¾A€tFGG—.]šúã¡u?„àÄtýìW í€ùmϾC²oÿ~ î2@Ú‹Àgö í€Å³}ó;íËò]ܵ Hû0ž"8ó;í#¢Ç­É\àåW÷#èð÷KþAÀxŠà̲<¿ÙúÇÏ.Éü]K½­Z­N§ÓétZmƒ-˜é—=¥ÂZm«Wœñ´­œ:3ýžÏ…²3Ô²ªehâù*U¢U¯ µÈ/—¯ ˆ±Ïéñéøñ¢'“ÿñËóéËüàÝñpî5˯5µ §ðÈÛxêm¦³1Jf1â$wCváL'ñiFƒ-˜ß-š_ò<Û÷OŸýŒìr•Jåóù䃴5ÖtúÉhu6©Aƒ½mÞö&µ à´˜—ÿº¶ “ŒÖþ&µ ‚ºÙínžÁ/öÔn|éFŒÞP½Áo}êHwõŽÓ§wD²·òÓ;4IÝVÚ{ڧɺ¶åØ© %íËñlÆÃtÿ®÷LêK¾û_xªL%)Ä(ò0‰¡ËeɰVÆ—†ö¬=v÷q™nÌèxšAÐÖP3X¶ßéTÌTÔÍnut$ò”N CêÙO6ˆŒg“êrocÍoåâÍ1ò<Û÷ß ¥>T*Uì¥ÔU|:‡3Z#û@Uͱýámζz3Ï]É?¾ïi°Å ­A«Í&ÆÊØl ÙÏ2ê¢Z½ …½I•ˆbÐÖ Íò-—Ô·¤·h“Ö®@,håå¦g+LÆs˜*Ú’¢”.²‘Ézšpyu÷i_ûý÷ßÿ­O>=Y–64`«Ú»C“§Ú`ñ¢Hb(Äǯ)\)= ñ±ó=ÝYrOéš]' e¢/­»ó‘×·ÇC|lüÄ®;Kî)][2âc',÷”®¹Û:[+öHz)iõ±ñ»×>q”½¹míÎãaÙÊszd9žÆ?RG„¡Aª7WÆç|±‘+axò¶&Œ5Ñ(i\›´¤4õ%±uãW‘ œâ§Ú*LŽ„a¨õ¿dkˆÇA驘¡'ÓO6" ‹RFÞ‰ÎKyBkkk\ÿãŸdl,Ie|+bÐÖP>6¼¶¶¶fµás.íûËßBù[èžÒ5÷”®‰='¢£ýéÏÔ\Êc'Î ¥*ù7.f3XœN‹9̹NÌ2æ0yJÝuÅœwÕVXȼ¿^IþNKo0ºKs ’ÙÙ]§$çßdïZÜ.—KªÐnjó&Ub106«Ä×VÓéWÖYê”d7µù&™«éô“Ñâtº\.·;’õNZƒl ­ÁdWÖu;].×À€ug¿ÕÀ9çi¶/ûg™Ô\®¥keíŽÚõ}Ý“]™°U•kòU̳پ\‘‰·“ƒvãº/‡ÅOLJ^p®ÛÜÞýøG?=pn<+óéxàÐ ­+^<îx±¨ó…çÆÃãá’­'Žö{îG>~áÀ¹ñð§ãC?=|ïÎ÷¥¢]ªyâÚnòKI«Ÿ©ëÝ?¼—oø{û—ÃbjåÓ¿È+ š)k\ ø‹ äG®þþÚ€¥7(Š¢èm3‘Å锯Q öZËö÷;»ëFº'ÇÈØ4yIû ™N ™")]ü*±>4õ[ ‰Ã (4e48t™ˆ. R™¦€.§ëÉô“¸Óc7–ÊnŽ({-EÖþþR²g5‘™ØX4â·=©•Ë•íûË-½AQôµuîo¯RH%íTšÕ†O_ž/òþåÓPüóo|í":xôXüò¬g݃Cƒ~Î¥*"*5p»}p(XYYu œ¬M*"*"òsƒµ½²€|ED~àQA´LmeQa‘ßîñ6©&Ÿø-(,"ò'6T[Yé¤ÝãmR©Èç±QQ¡ª°ˆÈ?Šª‚I“ÔÆÂýí‘7jRBœ¡†4. ú‰Œ…ÓpRd|MMY_ÖìèÖQu÷Ž|Sù­ æPÚ—ã  rzó{º·øM]?R…¸(^8çÿÀU{׫Dœ!þy9‰ã!>FÎù7®¹Ñº{ýïBü*Aƒ‡žþ×}ÄçÆ’ÿ||zg<îJ®(ʼ”²z´-餸êUÓ¾†8…qS>nA[cMç0cœJ‰‚zS}wMcot¸¹ðûµú."Î —ˆq™Mæ’DDÆÚÊ¢KiVÉ8–jÊÈ2¬Ô R™¹€È—®'yJ6ìf½ƒ×íoWE³ä¤Í¹ðGD#yr l\4’rñÄRTµ×¶êõzƒÅÙ¬ˆ…Hj·°Èïɼás.í‹ÿ7–vÃ/ßÈõ;.X‰ âÒµ+"¶‰1Êb›s˜õb,sÏAÝ´¿~¤¦sx¸«Vße°8›ÕB–5¤H Ú¼Š0,ãáœÓ¾0mxÖ¾Úï~Ý[Y÷!¶ä)Ãàâ¸(†I …ù8%?£ ÃêZûÓwZ ¼¯Þ‘-3>‘ö岺 ˆâ¥äW§öå>t.+TŽ.“Z‘ðö^šmj/ðµUDREUGakE›ÏÝ,Ýcg´8åïuË\RvZ*e•ÌyßKT ²M‘'mOò‘l-Î&j«8ૌvmòÍÉ0o’Ø íÆoÔåÀçÅ…Ë®Ìÿ]ž/ò&Ý£ð3[æÛA]j$Ɵ윸@y¥¢ÛÇ~RÖu[ <ý±éä²B%qnHºn›Ž ¨êp»-NDÑËÇ“Ö [ %h“œ#®l„5åU¶\»X”BažëC$1æ·Õïÿm·/s•jý['½2eBáEñÈ…K<ä=Ö_|ýÕa ó°¸òš«Ó”‰,‰=d^JY}â‰ì«9=Ò§Ùß(]6¿‹)ªHæúªÔh÷xEQÔ¥F»'Ã<Ù—LY%s)APhÊFÛ·¸`<åàÌüÏdhW=kÍå3íÃ4d)„´ã)‚3ë– 0û0Û€´GÚæÒ>˜gFGG÷ì;„8@Np‘iÌ3Û6?¸téR|˜rÕÿöiÌ3Ù|€ é#‚0ûB€´öÒ>˜SrûHGOOB°ÀÓ¾êêjÄ `á§}øž€ù ÷ö í¤}€´öÒ>@ÚHûiÒ>Xø–LgeQô¶U˜,9wäܰӵö¸îY;­ýMjAH]Kö%˜‹iŸ ¨›Ýîæ4™\‰ÛÝŒ<`n˜©‹¼¢èmÕjµÚÖSü”4#ȘÃTÑæÅ”’A[ƒV§Óiµ­©¯ÀœNûbAÝÔo5pιAv¶Ï×VÓéWÖYê”d7µù°KfByûúú’–¬_¿~šÍ‹¢×c'¢¢BUa‘$U AHm $ÕÕÕ£££3˜öImÄÿ9…öd1æ0ëÄù—ˆ) €¤§§gj+æü‘Ž|¥zQË •ÄýÉ×óÝ Àb7;ßÛ·¬PID#ËÉ/‚BS¦dÌÑÝ{;`~§}‚ ¨4×+ÉßU«Oý¸®¢ªÃbàÃ]µø0/À ¦dDträÏ7- MZ´¯¯oj÷@¾dŸ’]BDGl=-Û·‚€gXö í¤}€´öÒ>˜ K‚T{öB`Û¶ùA vótÇ!íË¿–í[XFGG—.]JDu?„hÌ#]?ûÕ4k@Ú°¸ìÙwHšÝøû%¸×kqAÚ°H}iÒ>X 0Û‡´öÒ>X8ißß!‹Ê´Ò|Qô¶jµ:N§Óiµ ¶ 8ÍÞHjµ­^Qœþ*S¨-¡–U-Csh¯ µ¬Z¥ŠZµª¶çâ?Ì:í¶ÒŽíPK\[Wj§§V•! yubE­µ¬R©TI/_ì©]5·o˜=c!žÓãÓ÷~=eýàÝñpΫaJ+汆IkËoù}LO}¶O Úk:ýd´:›Ô‚ ŠÁÞÆ6o{“ZfôEo[…ÉNFk“ZAÝìv7˽”¯/öt½Á>8ÓS«©^>gþU«Ú};4±a}GÏ]Ýs¨s)4;NŸÞéë@ùéhÏ#/if0éÛJí§}šùìÓ»t+~éLWË&õ¥¡[UûéòUC;4šH%[Ïlß^Eg1ø,Ú´/—ñwhÏg=°\ " ‹c”Û¬Š(ò0‰¡›ú½úÉ«§ÐtæÚ>OìY{ìîã¦AÈG'箩Ïöùt3f´F,APTu4«abŽÍÛªÕ¶žâ§b3‚:®Õ+ÆÏÃÙl ²3…ÞFÙåRbç`Œ1‡©¢Í+бªNñSI/¥mA[ƒV§ÓIóYÏ^|¯ï¦v_ûM»»‡"“#‰³k{jk{.ÐÅžÚU‰s6C-«Z†.öÔ®ZYx±§6:ÇWEdÅÚžž¸9¡ÔÚ2¤åU¿;{!ÊC-2l±… [™…’ÝŠ„n'×™cŸeæ¢zÕ24Ñ™¸ê²Ùºøš·¾ÁÞØš°-“í£ì¦- ËïÖÈÔZbÿ³~£‘q3OÈlZ¼›êZVvɼ¢)¯²5ªmU嚸쳻zF>€Ek<Äsyˆ"Q(ùsì|Ïc›{·ÇC|lüÄ®;é9w|×–×^{äžÒ5»N„'ŠÝY²îNˉñðxHI íŒ?!­"ˆ~äµó ¯&•?1?±ëÎ’{J×ÜSº&Zy¤­øÖV9a‘^J¬Är|ìøîµOeon[»S¶“IU¥ô§äžÒ5²}~ìµ€Ôèº'⣑Zs–+–ö‰¢×c'Î ¥ª4õ2‡ÉSêv7—°’f·Ûår9»ëŠ9·›&2ƃdvZ Œ wðů;Hfgw’üñˉHÔMýV眒¦ô2¼ÉSÛj:ýÊ:K’ì¦6_ÖiI÷î›Ê5¤)¯² Ñòêºh{½®ZèÙq¶î´Ïç;½—¶NŒ¸¶­;¨åôéÓ§whh¨eµœ>íóù|‡Ÿ¢hÒRŸÏ×B}¶‰a_¶¶´“‘g¶×jÒ®8Ô²•Ú}>ŸÏwzbrȶu Ü'-¬;»1ÚÄPËÖ3Ûø|¾#ÛϤnE\·eêÌ©ÏiضJÕ~êL×~P;P~ú´ïðS±®d½u±œfïýüþ½Ñå™·îtSnr5ÈïÖ‹=µ]+H.ØjË-é›d3ïLÙ´dË«e?ÍŽÓ>Ÿo*s‹°pgû²Œ‡KêÝ|\­Ùz 0âã×<øÐÊÖ_Ÿäc!>vrÐn|dÃ5b˜„¿gwí o³‡?z¡uÅ‹ÇßxúËaq,ÄÃtØtl]¬€´d ü½·žþ—Щ°ãŢΜ‹{5±¼ ññpÉÖGû=öȸîËañÓñÀ¡œëö·w?þÑO#«…øXH±LùáÇ~òØá{ ìdžÆç>R®øBˆKµ…Ã%õîÞË7üÀ½=]'c¤þĺáp?òq\Ÿ;Ï>bwíYñòÇÖÙ]{¾úÖ`4²=œ½‹¼3õΠ֦Ĕ° °(¥Lme©J œ“ÝK#Ë¥òq˧CÊS‰Š U…ED4¸Lªf·ÛínÎx9x"§ÒÔn?ÓÕs1áYäõÿ¡¹ø^­¼.6¥2p«öN\{Õìˆ=_¾â¦hýçÎÜ´b¹4R×UMÌ/ÊÖ–!5Fï ÛA-ÑŠeW¼nå—R«¨Úû'J تꪗG:“ºÝN­3›>OêKÛìÐH ýîâ–èóLMÈn|Î6ÉÖM±ùÝú^­¿kytÇï­Ê%ë›ÞfÆ¿:êšó÷|À¼Jû¤Ìï±ß¼týÞç_„ÇBü¶žy÷äXˆ¿ÿîGßy@=9mÜ´±`,$rÇC|,táœcÉí±DN¿ß¨Ž+[%®ðíëîõŸ $¼_^zÂÇBüÓÀ¦Ÿ­èjTGWÿàÕÚ»Œµ/ÿ!²ºÔgŵ+?88ùž}cIãº{íÇÞœýÃÊë® ‹iªMídBÿûÃ? x¢üN£nÛÛq}Ž®žT|çǽ}IIU즺Ôé?é.Àaƈ1âWòøfÌaÖ;ˆ1ò.)²šê«;½<:Þ´ª{¨z‡fù]ëiÇ{««—_|¯Ö·\GÎþîwoܧzIJ[éþòt³E«¶¾ÁX\™ gG+’‹eS[äÞ¾‹=µÝ+–g\qyu÷Þ–U«TŒÝ?q?à4¥Ö™e2»ibSžÏòÖåJv·ÞT>Å{-󵙚uµ=»«1®@Zãá)ŒÊêÍñîSŽm·_½fíȯO]8pDûÄÕ|<,†I …ù8¥<"ÅL2½*_þ’ÃêZ»ýÇWqqœDQôáYû¶;¤Ù.ŽGïÿûÂò[Âó翺îQ®}õ§@Ñ—+ÆÃ\¦EÙnD§‡R_£ ÃêZûÓwZ ¼¯ÞÉ¢óò=œ5SLûA]j$‡Ãáñ5©Õ™3Â`¯¥ÓOÊúîÚ@Éž®œ²pÙÌné²B%q¿!—O{\ìé²±ÞP½1‘7ré“‘ °| š®üRU{wæáøbOíVÚ+}¾`¨eÕ@ú’×eQ[,ÿjYY»?ÝŠš§Oï¸ØS»±e(oWø’êÌ¡ÏS5›[—Ãä\Ö»uÖ73’øÕa`€tBSIûH¼|î\ñõÂ<,è«ÅßÕOëv\ÅÅÈEÃa¢Ø“Eñ['½O~é+RÚ—Z úDD±@Q"Uíý…m&³ÞADé.à ‚ºÉjt˜¦Š¥’ذÃTA;]k¥W-]ÃLæFÀLŠJsý`MgW­¾“bUe~‰ˆU–€ÖÜU«ë"žòjªž®3Û[v¤Œ£Û»vô\ÔT/¯®»w×Êèý[Ë«»Ë[V©qù{í5;ö¨îS½DÄo}j{•më*Ú{z‡fÇÞU«TŒÝúÔS±ïÑÈ¢¶„į»®eUmÏ‘îj¹'.AÞ¿7öU&U{¬ìZµª‘1~ëSGº5]\µQõãüþ½™¾WE¦ÎÜú<µ¼/Û­K7ù•åÖM$ÇÑ™ÞHs25¤Û­GÎÕFºzûÞ*Û@¾7SêKËŠÉŽ–õ}7Ù~dô†êÚk0ÇÓ¾\Š«><ðpâºâý]‹E"õÇÕ$> ‹"][ù½Ã•D¿œË–$š(©?myžØšè@ta¬ÎHµ e’ê‹"Ýþä/S¦¾E"üÒŒ?7J¯>ùðw‰ˆ¾”iÓôp¶DträÏ7- MZ´¯¯¯ººztttú­ÎÐìåËž}‡Z¶o™íV/öÔv¯èžawÊß ÁŽÝ?iÙ¾eÇîŸ<øÀÓ̓ýæôÄ˺kDuzýõm›Ì)%;3º„ˆŽØzZ¶o?ÎveÅ}€ß¿÷4n¿€Ù3íë†å-/磘%W&í‹ÿiÅ-ök ³Ü(fú€BH×öÀb€Y:¤}°8Ò¾0GöŽŽîÙwq€ y‘ömÛüàÒ¥K¯À‡yfQÿÛG¤}@yùž€9Kú*XTB€´öÒ>˜SæßG:ð½*1³7î\þ¿y¸¿ißœ³Ng\0;à]—ý±‡šÂНüìWó7øón«çÑ8ßc Hû’•\ÿ ú§Îÿ•ˆ>ówlQžnõ¼8Fliß‚µ8i¤&ˆ- í[|ƒô[ ˆ- í[ƒ4fû±¤}¤±Õ€ØÀJûDÑÛVar°‰Á†sƒµ¿I-ÌàÅ&Q ö6Öt 3"⼸~{•B˜#MH±“Q ‚èmÕ›éÂò™%læz›Ô“|ÇG¾r1hk¬éf,Ñ0£[=ÎOù°Ÿ´õ´áÊ÷>ÊWli_ZÓLõrü¤Á¾Ó¯Œ&7ÁÞÆ6o{>3›é4!êf·»9¶]&;O¿]ã!>“½èIÞ>cÄ%v_ÊùüÊúý핊ô±šÑ­V‘oæ’]ÙÃ^u¹·±¦³³¦­pæ[œT^b ÏŒÏ x[µ:N§Ói[½±Œ¡U«Õj[m¶N§Õ6Ø‚b,`Ìaªh;ÅOIe¼¢˜¦âK?Hi–¢ª£Y-R庨V¯˜®ÅXŽÒ-ŸÒœ|R¶akÐÆ¯kÂëmÕj[cý?ÅOŶˬ×ËnÑx˜Oá‘S@¤v“‚×ù„͉_%s^ëtZ <¹'¾~RÖ›3å|3ºÕRÎw,]²5hc;]ô¶JG\j™kMv䧦ÎÒî¨hìÉoÚ—ŸØÒ¾\m f3XœN‹9Ì ¶àDÃÌ1Hfgw’ü|‚ nê·8ÏrÊPÔ¥FbÌaªhŒåp±tÄår9»ëŠ9·›ÚbÃvR‹‘)«šN?-N§Ëår»›ãÛM×ùÚj:ýÊ:K’ì¦6_üF™<¥ñõÄo—ÅéLj"u^·vM†G†A:Coe‚c1K¥Î¤Ûœ©M¿Fˆ¨(p ")Þµ­N:–JØ2M™’±áÀ%"¢Ëe™&5%n|cÊúMRH3ùq-šŒ,Î~sYžgûò[@Ú—±.æ0ëõqó%Á¡A?ç†R‘ªÔÀ¹p(6˹¡¶² 2Gb÷$Í©H Šl’£nv[ œ±á®Z¹Y´”Ù—t-2æ05öå&ud›E¯ÇNDE…ªÂ"" Äo”µI•ó c¾ãéŠõ /™s@â&™ÚLöXWS7ç2©& ~z—~bÌA¥ýN‹±áN‹|lgs« 4eÅœÛ=>"º 2MAjL¦é°¯0‘Åéì¨RH¹o†#?>?漸p™Ì±:Ý´/O±¤}iIZqÓfÒ¸8~iÂ%oÔÍn§³»®˜Ç§nÒu[½Þÿ“t³_Mûë‹9gÃ]µz½tE8›&¢ƒ½ÙÁØô7*éZÛ[®÷R˼åz/›Krézïro·ƒ1£5aJ5›# ±Œ']…³ºÕš2¥” #‘+Âi¸œƒ öûëĠP6G~ÂåéüÊcli_––*( —å» APT¶[cé…({-~RÖuËÜv&³º¢ªÃí¶8Å_ÎЄ´])9nÞéñ0ïí{'¾@oß;Ù߉•ÒÛbÐféô×u7«…øÝ”¿ÍIÙés`«A¡)S’?péòÐ`Q©ÜN7•µ†‰› fãÈŸµØÒ¾¬2M™’1‡Ç½óI”Œa$p™&½¡^½­±ó}cÑ‘u*“(ª&«ó¤±9]±íê—@…ÂbêãàÑcÒ«“-u@øtú•õæÊ‚ÔÝÛœœ?Íq§Çî œÝ­ž8–"i™¦LIvÏ@Q©*C·§„Ë‘hz—Í‘»+Ñã‹Üä—ǽ¼Äž™ýºfEU‡% 5›õ"n°Hw>eš°1×ÖtvÕê÷†¿R"dN/ÔMæ@cEEäËáŠë¢_¢n²f‡©bD©$6ì0UÐN×Út¹cì{×xʇOÓ7Ý®®Z]Wôû;¦5HËO´üúÈ@†W³ H|Ò"ÝÁÆXW­¾‹â¾p'isÒ…K>tŒ1r˜õŽäÚ¢;Ýݬžý­&š8–:¥T )SvvÚÉÚ”ñXÍ%‘wNÌaÖ;’¡lŽ|Õ¦úb{§Ã¬'‹Õ`7Ùó™öå!¶°ðDträÏ7- MZ´¯¯¯ººzttôÊöxϾCëtÆ’ëÿaDÿÔù¿¾ë²?T½i ëþªçÀ¶ÍÎÇà_‘­Ž|› Ñš. ]Gà¼;¢` ²OÉÎŒ.!¢#¶ž–í[AÀ³]yáE9û2›[-Ýñ9̘±T…ØÀ¢…´ïÊ q[=£AQÕá®Bli\áAzQÞMÏ ¶€´oñ Òœc«±¤} _xQÎÍ„1#…ØÒ¾lœ:ÿ׳æÝÜL^‚?ßg¤æòˆÙ>X8iß».ûBÚ.Ç‘EüùµÕóëœ×±¤}ðÕb>‚0 !@ÚHûi í¤}0rû—žž„ `§}ÕÕÕˆÀÂOûFGG/€y ÷ö í¤}€´öÒ>@ÚHûiÒ>@Ú—Qô¶jµ:N§Óiµ ¶ ˜— µÚV¯(ÎΊ Û’éW!m5~2ZMjAÅ`oc›·½I-³¿=‚ nv»›±còžöùt3f´DòãfŒˆ87Xû›Tä‹4}kQ*MLkº†Yl ŽXð¦{‘W½;qn(U¥i€9LžR·»¹„•4»Ý.—ËÙ]W̹ÝÔ»˘cÌN‹±áξøuÉìì®S’?~y¬é¶šN?-N§Ëår»›“8iæÏår9-""c©TÀ×VÓéWÖYê”d7µùpÀbÃl____Ò’õë×OºçkSbJXPXDäO,S[Y@Tjàv»ÝãmR©–ùío“*ufŽ1‡©±p{¥"ͤ(zÛLvNF©RžJTT¨*,"ò‚¢J!©[07UWWŽŽÎ`Ú'µÿgj{vû›R§ÿ&®É2F|º,ê¦ýõ#5ÃÃ]µú.éªqj±Ë½ÝޏkбdѬwcä\"R¤lÀÜÔÓÓ3µs¾·/)Õu©‘‡ÇפVgZQƒ½–NÿÿßÞÝ…¶’¦‰ªrvHnÎ¥åŽfÃ1uÜŒY1Œ[–ÒhE,:YŒL:Æ‘ƒ }X¡¾ÍQÓ ‘ãʦÉ"œs¦‘ÙœUW<¶u<;£ÅÍ‘+|Àô¶-³W†&CÏnŸ®ÊEÉréûÃò÷ÿ‡/ìR}½oÕûÔSo½%‹¶’ U—¢ùnóiÎÉÁ3?Gp½,%=1]ÍGSî¶\Ó¬åâéÊôʆ-#œtjbTZGõ2Ü"cø×{+-cõº8®VDdÊ9ÑþÑQõD¤\ÔUU¦œŽ!ß±pE~Ãè˜/–Ÿ¥+ÚJla–§:fç4UÕ³['~pŒáM^Å|ºçLÍGc>]Dº=ÀU”™H" Çôèü‘¦‰z¨Gçå¿îþ‘õé~|¾þjmÄ5àv­ÊÖ‹º†h+±‡¢Ø3OkŸªfB¾ŒØÞäu×ãUO,òf„—yÀ=¡ˆÈgG_>zøºï¬ÛÛÛ£웺YcɽƘ’½:} "Ïs›O¿¯( ÿœ à^xp½›çŸj\ zûHû@ÚÒ>ö€´¤}Ѫ7ÍËÏ¿¢pc½õíoÑ‚€;Ü‚Hû€«öoþµƒJÀ ô³_×hAÀoAwyî…1ôö}ôñ'ƒÌöÁÞ¥ºnqÚ'"ÿù?,õžá¿ý êàç!ï?ÿýZæ7ÍRÒãñÚx<É’i^eÉ­}¸úí^pë—½Û¹°Çã çjæù¶’¥ú¦k¹p8wl¼ì¸=vìz«¸Ê¶Ü÷l¤9ÐdÜè´ï_üátüù{Öú¥ãR†áïììîîîìÄ’ίZÙÆÕP”™µB¡PX›Q”[tÀ.{·S¢ª‡Õc9©‰H¾X¿öW+SÎIõ­¾;ÀE ¸Œ&LËp#Ò¾ÿ÷û×í?.—«ñQß8ITõ0ý¬l𵦧RÒÎÕL³ïr¹°×ëmé‘jô&KÍ7Ü¥¤5=œ«ÕWÜÒ•e  ¥¤§[×cc+žp8|¶”}+Oò¥ñ²Çž´ìvCukµãôúvk¹°§i¯ì»ÝRv[C-öŒÖ‡êrD$_,‹ÈÉÁþ¡ªªª^,‹ˆ”‹ù€ÛÕ±oÃëõίfÎê*5ÕUUUõè|ʾöÂrÃ}ÐÞ»µ {léÖdì-ëe—~w¸ô´ïw¿ý»ß¿þû{?p¯ñ»ˆ|ºW´þ$Ýð†ä‹e™˜ÓN'Õ#mnÖqv[¬ªú¾Äv²ËšTÒÏÊ[çÝÝÝìò´aä£çy†ªêÑ¢Ûš~˜ ÍÇ%¶±¢I%ߪµÊZ.ÍkËÙÝÝÝöñr*ª«ª?¾³›k­AUÝ…ÂÚ[ê[=öd_b;q¿•ÚÚ—m)NK®™ZJW$`õ‰¶ïÕyÙã~‘€Ûš¡œZJW´åø²&ùhª<ܱœtN†Uk¦y\­øý~+ 4ÍZõHsN¶ÎÞ^3Š2ÙKø Ã0ü‰½ÈL÷cÜy}cïØbo2ÝZ\yÚ÷¯÷¯¿ÿñ¼[D~úéÏ­é41;7mV‡ÓqUæf'†?´0!Î)±=|¬/æœj^aø—5Ý0ü‰§ Ö<•ú3LûùÁ~EdÊ9Ñù~½z$†1íœì¾•¦t˜'´0ÑHm»Ý«8ö´rµCžÚ”FóÝ0ÍR1/"SN—sJÄJà†«}ͪ¢r1pGÎÒñ“ƒý¦CÑ¿f¤c%œ¶,®ÛøèIU=æóy½^Ÿ/¦«j£mönŒ}cKøpK‡©¸ iß?½6þéµaýþïþø"ò¿þ÷ k¢ý£þ¬î$+ó8ªÖÌZõ¨s*Ö:k¹°Çc¶Ã;®Vú~z5{ÒÖ#+Ó†¡fB>ŸõÔ¸ÝÉVVWÕ@¢éî_Uõ˜µm9n¿:œS¢ªz1UÌÜ.™tj"rT=¨V¦œŽÖ Ì 5Ümö‘Ê~ÃhË»5FZ€[˜ö}ýÚøÚ–ÛýEnÏšÒøé¿ŠrQWU™r:EQ³sšTªÇ'ûSîÞ÷²¦YÛŠ§+¢-g[£í0¬äæBÝ“OJ»'aŽàz¡÷"bjlO4ãéÊôrvmF±—¥q¡3ÀÞ§ëzÀí²Ž…ªf2zÀí¢ÁÖ‹4F¸‘iß7Æ×ßÔ?ÿéŽõ§ý§_ÂÔô˜Rêý}ùâ³êTÿTc ·ËõDSŽª'?qÄz³Áˆ3üžUOšRÛáò°HÂoóÅò³tE[‰-L´”EUõìÖÉÈ—ªiÃ0 ¿U÷Ö3÷ús¨Akæ¬ð¤×Ag@:î¶¾qàØ"í-‹àÚÒ>ëIîúO¶×²m¶Ûû!¯}4L^[Ù°R¶ò¾¼ôÍúÎÞÖ£óÙ#MÚß#¸žT2!_Ç`­ÄKùŠîD·ž¼Þ{²Ÿ÷Åô¥ObT¯ÑVb -ù¢5rÈzlßmGp=î73¡¿ÑzÈÞÈ2­?»$Ö®÷V¦ÛjFQ ±M*™Ëî³¾qØbÏ#m-+÷Ô/€aoGEä³£/=ìÿÖÅöööâââééiËô>þäÀû,›ÿ«¡þ9›YË­.¥+DamæFÕ×°;f}çB^¼y7¸—ŸÅ?’ÇÍô³_×Þúö·nBl¡tŸuKÉÚ½:} "Ïs›O¿¯(Êxþ9Ûvþ¯ÆþÌÚV<}¨ª7g0Yã³DÄÐV6"Œr@lpËŒ!íªoŠâ®‚7©š¬ïJX»ÂÜ„WI¥ îƒTn ŸýºF%´ ¤}¸ãð Ђ\òö€´·Èpcû677©2€;žö-..R_w?íä€àfbliHû@ÚÒ>ö€´¤} í íi_O¦YË…=^¯7Y2Ï'–’žp®fšÝæ÷x’¥NŸÚf+%=ýg€‹#Ž íˆ¢8ž&ü†‘¦¬ÐfÖr«YçÆÓ‡¢tX ü,s¨ªª^,÷^íÌZ¡P(¬Ít\ Œ¢8b+Ó-q,* âÒ¾öÐITU¦Ê¦YJ-UC]b¥iÖ¶²GËñåiÃÈg·j¦Ù~“]Ë…=áܱñÒ~—lÝZ{½^¯×Ë­3€ñg~Ž`lESU=»ubšµ­xz*™!Ž íë1gÖâ~CÕc>_LºÄJë9=ZpÍÎi"•ýƒ{gáj®fš¥äR5TXÚ³FÓ,¥–Ò Äwvvww¹up&bËÓF%O&ãé©ÄÚ q Àô`ðY···[¦¼óÎ;Ö/®HŸæ%àvu^ÖºE^‰EE™Ó2‡‡û'Á CQf"+GKéLÈ—ž^ÞxÚyyUÕ£«MÏŽÛwÚ-..žžžöcŠâX21ýÓOý‰=q Àí nãOû¬mØÿ<ß^¹¨«ª*z4å.¬Ít¼EÎJÈ—9›PÙ?¨-,8Eqc+û¡Ì¡67Ûþt¸O3!_Æß±îÂ[öÚmnnÇ\n¿‘Ï÷Xq À nãOûšBäùp)•øÞޤæcz,éÞiy>R “Ý :”úŸ«KéÊþÁÉBÐ!¦Y;دˆ¨•t<7ûÔš§)b:‚ë…`)é‰éj>šrïEfe„ ºÅ±¾ˆcŽí3ÍÚÖjÖ¹™QW¤é­^û-rz*ÔˆƒŠâ˜ÓTõpÿàDDÊ©¥jho'»¬I%½”ê6ÒÙZ¹hÎI€«GpÏÓ>ë~·ªßÚž¿Õ»ºÕø¾«úh˜÷š»LÌÎMÆß½ø?ÿ3ì)º÷ÖfÅ|Ú¶¬œ}÷•×ëõùbyÑVb]¾R. q ÀÝ ˆÈgG_>zøºï¬ÛÛÛ£€kѵˆcîdpëæÕéyžÛ|òø}EQøçl÷iiHû@ÚÒ>öà2<  0š>þ„JÀÍôÁÞ¥ˆ6ц´ãôäñûTnšÓÓÓ‡ò…ÌD€hÓŽ‡¼îz†mHûî5Ò>Ò¾îL³”ôx<žp®fžO,%½^¯Ç“,™æÅV;ú.uýV/XÆKÚÛ¾3wmÀ`šµ\ØsÖ¨›¢ÙMn#7¿y^î~±zóM—Ëår¹Þ|óÉAcúÁk¢mÒHÓ;íB¯t¨êaúY9¸6cýY.æoZ÷¡i–RóѼ{‘E¹èª¢yc«¢Ì¬ kœ¤ÀåØZ]JW´•§A‡bšµ­ÕTééµn"Ãè9ß¿ýÍò¯~5+­9Ü›™ï>/—ß/6Co>‘_}8;Òtà®»H–¦MO’/Z÷sf-—=Ò¦ Ã~·ç=“,™ëd©~ÿWË…=á\­ûí`c‘Æ]cã&2— ·Ü 7¶è ‡ÃÇ“|i¼LÍGuUUU=:Ÿ²ßwV·V{ßß—’g}ÉR#}´Vóùìw±Ã–kðš96^Úï˜ÍZ.ìñ ÒÝØ¾ û§íeo¯ç[Ô¯Œ¬Z‘)ç„•K9‚ëkœï<x’/—=TßFÔԎΞ„s5«E7Zâh‘að5·Î?ز-<_g-çjg+éQ9ݶÞ^iƒD›ƒìö;Ï;dh/^=~²ø†ˆÈ‹O¿zq0Út€´¯‡©P( ªzvëDDNöennªù~twww'»{ÔÁ~¥Ñ Ø»Aõ V-­/qY+1 â鄵ÂJõøb‘aÐ5_lÙÆd«ŠZ+¨_àí[i'âêmþþ7ÿ7÷Ÿ^¼].—ËåòÛ/Þ m~Ái \aÚ'.w@ÔÃ̳ԳôTh¡9XÏ|¾˜®žoEqc+šˆhs³Ž2 UÕcÖúįcû󚋱Ve3@èl/W˳¦çÂÃ׌ý§ C=Ì„|¾Ž™úVþ8ê¸k™ßÎNvyÚ°ÝSµE€ÁÔÅÑXbæ%:»],Ëqµp»FŒ6¨´ùÝü³³g¼³þÙ£í_’÷W™ö‰ë½•iÃÐuý<Ôïäj[ñtE´ålÜ6àÏv'-•t¼ß{s“NM¬‡ª}kŽÕ¤Skž 9'ûß¹¶–«ñìÃÒØÿ‘kFq× …¸ß‘ÞORºm¢U½\×UÏÀЧq–y´F€ÔÑ8bæeWÔŒõX¼˜*æîÞmÀH;d¥½ñG§Ï¾|õÛFøÅo_ßže:@Ú××Äìœ&õG¢M:w¿•SKÕÐ^}\ÝR¯Üål(I}ìà ñ¨\äלÃUO-Pc»Å²H¹¨«ê 7Ùƒ—ë‚5ãŠ$ü†Ñ/íÑ÷yT=©—K¦œEé]ϼÒ;,ÙxõÊjÄ®(ü aIDATšsò,4>† V—ú†G«DÍáqÄ{âæûü¾•Óyëí•6H´™ }7s6¦ï‹ÍŒ,[¯eÈìÛ~ü¡õÄ÷‹Íüè,‹v:@Ú×?I ®w¡(3‘D@Uõè|öHUÕÿÔó_’aOѽ·6£(ŽàSëÓž#ÕÁõ¸ß8Ì„ùª<+Òc¾¢;ѸéTÇB¬>2fðÜÅÚ®óùbºá¯½ïÑsÔk´ši<2öùbyÑVb Žž¯t´lÂþ"ó~|ÞÓëz†¯gàΈÄ$>?ïõz}1ݘ^ÞxZoVŽàz"PÉ„|V‹(‹«GƒW#KÌìß«‡Á¬seÈ>¹ÖÛüiè¢ ÚôÞú(•öÆböíÖ+Ê“ówzg?üÕòo~èr¹\?lz×wØéÀ]§ˆÈgG_>zøºï¬ÛÛÛ‹‹‹7ÿ_›µÜêRºHξP—á£?៣ãúðÇþäñûV¤jZ·%ŽhƒÛm®Øà¡ìÕéyžÛ|òø}EQÜ™Úo|µžˆÚÊ ¯ÓÜw'íãZÜ‹´Wïôôô£?¡mÒ>Üeüè݇2àÑ íý¸ÿ¦m€ÛB¥ îƒázû677©2·q i_‹‹‹Ô€[8€´o ­pÛÇÜgŒí íiHû@ÚÒ>ö€´¤}¤} íëÇ4KIÇãI–LóŠwý7 pïÒ>Ü .i½¦YÛZ]ʪ†áOìEfEDL³”šêªjLOk•JEÖGí3[sæ%°²r”ÉÆôÊÆÓ £m%@€Á\Vo_9µ”®hËñeMòÑTùlbTWU|g/6×wfQU}_b;ÙeM*ég}V€†èíÛÞÞn™òÎ;ïtœÓ4KżˆL9]Î)‘ÊQµfº&ä¤z$†1휙pN‰TzÍ,"bþЄˆsJ¤’/–".W—•tÜ=€;iqqñôôôÓ>kö?{oOUõ˜OU•JõXdBŽ«™rN 2s7]WÒ²owÒæææh =¶o°ÔrÒ©‰Q9Õ'"Ý_·jæ îÀ=u)cûÅ1;§©ªžÝ:±MœqDUõb¹>>¯ÇÌÝ×Üy%¸Š´OUõ˜Ïçõz½^¯õEzŽàzÜofB)"âŠ$ü†¡Ç|EwÂoÅ;ÎÜ뽕éN+@Šˆ|vô壇¯ûκ½½=ÚøÁvf-·º”®…µŽÀàOÉ^>‘ç¹Í'ßWåÁUîeã+÷DÄÐV6".ŽÀÕ¸Ò´OQfÖ …5jàÊñJiHû@ÚÒ>\¹TA7}üÉ.Ý?z—н‡Gá&Tþ5ž{wþ ¼öº@Úw‹}߸ɻ÷‹Ýüü÷2‚ÿý/þ’н·Ga,•{Ͻ›Þöº@Úw‹½õíoÝÌ{ùùW"òÿL¥b9 W\ù·ýÜ»Égàݨ[¤}¸\8 ”šºÒ¾ûqyx P JMÝi½à(PjêHû¸<€£@©©[¤}Ã2ÍRj>ª«ç¡Ê߉¸Ê©ùh^‰½ÈŒr‹ŸYt,ÝÚŒbMï]ÀAæ¹ÐåázIe4 ÿe8Ó¬m­.eU1Œé•§A‡rC6ÑràÌRÒÓ»UËøŽB‡½½ÔS¨ÛÊKIOLWEÄðÇ k3—|îç\|Iì­Í(¶)E÷凬Þ;?®º€ã .†áïììd—§ #M•LóƦqIÇãIµ‡õÒíÄýg¥S”™µB¡PXá 1Ú>´ûúµ1ÂOï2îîîîîîŽP®¡ e]ìÓm9»³»»»·“ø˜Ï™‹lÂ~pM³”Šæ­ÊéX-c9 Ýöö"§Y߃åóÅì¹¾¥– ÇtÕßÙ‰ûU=ÎÕ.ïÜëVêq5AÜÀ`5Þv —’öÕM8§º\c¼g’%ÓÞ¯`M´B¼iÖraOãϦd¢”´æ çjf-öx<žp®f6®ÝÌåÂ^¯×š¹Ñ­¥ªzt>õÒx9òÕ¥åÊÔ(£'·­³ºµÚm.rÉùúc„Ÿ¡6q~€’¥–‚_¬b«™rNXi–#¸^ϱÚO•Ž[¬ïL-ö4B}7Ñûl)•’O²±ÿ/—rÅ|¾Ž%ÓQèU!g­£©rl;ßTœAr&+›´ncZò°ƒýŠaL;'E&Ó†QÙ?¨uZÏå•Ú%åæsé8>oìf)iqíä°•P‚ª]ÝêXÆ'ËyÒ#:õˆ~ר®öI¹¨«ªÜöÎ ë³»»ÛÒXË…£ùú¾ÕŸQN-¥+Úr|Y“|4Un ÍE·µøa&4—ØÆŠ&•t¼¯{,¸/±ì²&•ô³²¢ÌDö~Ãñ!æIõH¤¥tõr§¢ºªúã;{±¹öëÊ8÷¡Ëåáûô½?£]ztü\°PŠ2㈪êÑùÕF×ãTiߢuAM-¥+°:)[ºÄºm¢÷Ù-ºíë±—«koß8ŽB½íP9q¿ØÎÃnʼn-³ná*ÕãK;÷:–ºå\zKœÓTõÐÚ“ê‘67ëèÐG«„@<îW3Km‹ô>ùíçIïèÔ㔾®v €´oëRõ˜Ïç‹éÆôòFÄÕ·/ÐêWhÜè[Wñb^D¦œ.甈U·à†áOD\Öâ†áO<]˜°]“z/Z˜¨o7_l ¸ƒ?A«—.”©í£L³V=’zI[gï}¸ˆ¯_›ŸíÛm¶íkŸ³wí=¯ûÃð»]".·¿¹ãçâ;³Vˆû U=Ì„:õ¢ \=zk:n¢ÿivMG¡O…غ™­‡ÎÖ®¶çD\—ñ\øK=1;7mùbYDŽ«27;Ñ^'£W‚+’]žVõ˜½®ïÉo?OzG§ÞOB® ]À¥¤}‘a…õ`û½¸õà£y,‘Õ¯Ð1ùˆéªÚ­›¡gÖ2Ê‚—.î7Œ.y[Ó³ª+Óò”ç¯wÙ>Ï_ïþrÀ‡AçG°~±l;@ã®Ø™µ‚5Ôžºu:UºvF6V¦ C=Ì„|¾ŽÏ:nb¼gËB·½mêqÞÊêªH4u©^êÉý¥ž˜Ó¬½V=êÚÊF®„‰…Øò´‘®nH×ètŠü”¾Œv —’öõŠzfm+ž®ˆ¶œµ%štj-3N:µöäc#/8×{+šªêYÛÅázµïÙÚþû [Ûs1@mHsNŽ»ŠâXxšðÆYÇmÇS¥ûâŽàz¡÷Ò}l~Ë&Æ~¶Œ÷(´ímkOW¦—³—OÇ]ë UOΆ4t9èWYjEqÌÎiR©ŸìO¹;ðB•`m= •t<{4î“ØSúòÛ5Ò¾Kס3¬Ê­ ŒmÊyÕ ž_؆}aÐꨤã-£¯C”Šåú ¿!.®ðú³ýç§ŸþÜúô§Ÿþ¼ã ÃÖj±\²ÙqLÕhkš¥dc`¾5´~Y¥ßÔIø £åÂÜm#Ÿf—zºWH“ò³tE[‰-Lô8ù/òìÙÚ«Ç"ÇÕÃîý’KÝÚ@&fç4ÉŸU§Ü®A"À°•`õk•JeÄ“¸èwíiߥS”™H" ªzt>{¤Iã VGp=¨dBçãÉÁõ¸ß8Ì„:½˜ÙËà *Šc!¶¢I%òy<¹¶k*PÕÃÆ«$-™‡ó݉¾÷ôÍû0ú·T¼þÆèøó“ç/~òüE·O_¿U«zÌç‹é†?¾t \¨>«(3‘˜Äçç½^o}<èÓ‡¢t;UºæŽ×ëõùbyÑVb ŽæW::nb¨³åÊŽB½µ—·˜뉶}ÏG(Žý \Z^Rð _j©;4+ïË‹ÛuÑУçøi"0ÚÉ?Bô»Æv àÞRDä³£/=|ÝwÖíííÅÅÅÓÓÓ{R5}üÉ÷½·¾ý­a4k¹Õ¥tÇ7?Æèåç_ýb7ÿ'‹ï°ì_n>ûàGïÞºŠ½nÝQKå_K©Çجnòx{Û5€«4xJöêôˆ<Ïm>yü¾¢(üs¶±±ÿ£ C[Ùþ…Ð|Ã-þ p?ÂU–Úw¨ª·‹º€‘‘öõ•%kW»Ñ×z®ßý< WYjEq× AêHûîuÂÁ8nŽ¥¦n€´ï~ô ð0ˆ£@©©[ í»¾¡W€£@©©[ í‹—ŸE¯À=¬Ø»}ÆRù·½Gê&Ÿôö í»¿ØÍßð=ÜÕŸS±…k©ü[zîÝŠ3ðV×-Ò¾[‰oÀ¢b©|*î•*¸†ëíÛÜܤÊîxÚ·¸¸H}Üý´ïþü7^€»‡±}¤} íp³üb— 6 ½ºIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/18_change_ctl_type.png0000644000175000017500000002460612032647166026447 0ustar ebourgebourg‰PNG  IHDRƒpê•íGsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ,òÍKA IDATxÚí{\×ùÿŸoh$¢ ÈlÜ Ìri 7²¶hÚÆŠßT¹¼ÒH,(ØÚÁµß¶Á…ÖDˆRBL¾¸šö+þ JRºIoY¡À4±”‹«;ˆÁ€ŒÌ|ÿ˜ÝeöÊ.,‚ø¼ÿaöì9Ïy8sv>óœ¹<‚ ‚Œ0 cõ»~E/†Â1BؾkßÎm¯@GGWòÖG~óêc…·>8üAñôô$qdpüæÕ5Ó§OÇq@dˆ #ÈàéèèàBaAA3~48‘ùQ=î û¼ñr¨búôéÜ25.G#2êbâïnÞj¼píâyš$ÉŠš‹µ—/ü§©•þÇÁhAdØ•X×tƒn¼yç6Ó×ßœ»:}Æ´»½ãïÜ"šëÚZéoI’¼¨Ñâ #c¼NŒ ȨSbíÅoçø{™Θíæ-t÷?Óç‘™pôÈ?pÐŒŒAŒ¸ì:qóÅë=Ýw¿9w¾»Ùuå2MÓ×I‚HN1ÖÉüý_V­YƒŽŒð:1‚ £N‰;Úº'Ov€ï¾ë®ýO}{[GÏí^–eÿðë|O¯]½mð⊟^ml›ê>Åç/K ìŸôEîÐõɺÜ_^ã~á]KÎ:òSlËëTßï ºsÖ«¡ükÈ¨Š†Q†F%þë?Ï®ì:ò÷ú¥ ݱ|Á€±q»»ëVw×÷½½w–aY–$È›7»¶gý*ó÷!IbÊ”ÉMu–J̲S_^4±BUwú;€ è.ú¨†S«Ø9>é‹à“#uýŠèLwŽë=2&á®_ô âJ%æd˜Û>]Ùpξßêê1nO™âv÷îݾ¾>‚ H‚`öî?¼õûƒÑ/FÀøñãZéÎÁD_ÀO¹ÃUZ®sO_äWéÌ³ÝÆjßj&†Š&ôV¨šõZn´ó°çF‰§'@ýuEWžý‰áO¸×Qg©£,;õå5T/JÖ;£º³XâéÙ²Sk(0:i­‚ýPÛÌ=ËŽPæ12FdlcýŽ-N†?رôƒKíðCoß‚°yÜöíï{~øáî„ñã…¾>†  ˆ»?ô+K×…[Z ˆî¾¸*™ÿZàDk=¸ÿTÐ%?B×?B¥ë7ÜYÖøm´d~T/ÿâNh¨×Ìþr`Ù‰á¡SëUurÕ·žO˜|0Ñӽ낵[¹ƒB)ø¢.ó£zùðÓP÷~BáØ‘:¹êÎâ5Tt}t„®7K}…ÌZj †3ɷ꞉œ££ã]Ó( KLlÉ?¿¢ÍJÌ^I}®ì·ÑûCÏ$·I}} A0$IN˜8¡¯¯¯óûë Ã’$q·¯ïÝ?dµ âJ‹\ÛõòŸ¥WÌãZ€®O*ºÜy&ß–×ôA€¶«~‘û,€ë&r;)@2? k@›±øãt]¨ €3ÈvÕp>|ÖÞFp³÷[°zº`¨`ψæî]7µƒ`4Œ ȪÄKºŸ®ìzõÍÓÆöSAÌNk¹¬_sn¥oxx¸ëö¸ñã‚èêm7(s³óV{[Çä‡&زCÝ—×PGè—ý¼°ÕDÞî|Ûåþ¸j¯ ãø6hhøó›Ü§kfï3~e«oÒ8YGšã/ÂX²-÷kþG0-¥ìJzw'‚Œv%þÅòúKŎܱu÷NÖ}´PTXXdVáa÷‡ ‚üþûžïnv=âëmÏÖ´Iž]w®;÷_¸/šT[{„îW»ŠÂè At_¸JY•[‚¸sê›®ôET ÖäZ¬I ƒb4òÉàVød”`q> ȨTbNŒOWž6¨òLqŸtó&=n9qÒÄzÙð¥Kš.7wÜèèé½3õ¡‡|||~ôô3ßE¾øìÿ¼óñãA¾–x7IõV¨šÛœ¿®zðyãåI]Ÿé2»ÿ¹¦‚~|Íü7åSÄ•9ø¤¯™ÿSÓèÙ´I—­ª ¢û£/ÜÓõwl™ÃU ðòè!‚ ˆ¹š€íüÄܹ³ƒ!Ý…šË-—;"_|ö›sW†`9ãAÀÍÎôÝíó ð‹ø‘YÛ¡d€å5hèv,E%FFÛr¿ÆÕi=¸2?ñãANšBQœìêºE@A$I°×[Û.^¾Ó{瑹ž–2Œ ‚ 2®ÌŠø|øÓÿ®¬»X£áé1~ü¸ˆŸýüÓóôÕkíí“&M|âißçÃ]&NÃþA%Ä­F?Z8ŸzÄ«ñ¢Ž¾ÒöÞ[G¿þ÷7îOœ#zrî#zãp#‚ È0ÆÄÞ”§7å‰#‹ ‚ Ž@⌠,K%EFFfW±¬µo«²#­|k«A8¢¢¢p䎉9þùmÿe |Þx9À~…Æzº\Ù|£ýÖä‡ûžñ\*rwŸz_Œïoä¨>œ_G’¤²¬:%$g#âJ1.--Åq@Œ‰]íîï[.w¶jow mMãÊu^²ú¶èû0 >z !Qž8ŸaJ¥ .òFEE-K>Ð` [–#FÆ‚J<Œ\ÑÒµÿÖ}þ±¶÷vÿCÏÿúl,(1TÎó].Мªh1ç¤)I2Z®:žn’*ÃV9‚ #*ñpñÞ®¿Êù÷ß~Åöëw¾{Üy‚é¾1FâMkƒ ‚ ‘d'Å,Kk€aæ >B^}«å‚ *ñ0²qÛ‹·oõM÷0§ÁSûž`ÉÉî÷ÿÓÃÕ‡óëêòc%QQQ±ùu 9UA³,€N«¡Y[åb¼TŒ ÷ãG³s9zoÖ“nÔÎÑk0¬‡—›ÿ³lNj¥’ÐbÞÇ(ZRJÅì7}ãG_ß²ådéqÓB–?dZ9þÎh @-³ùÕâĪաÿ˜¼>Osª¢eÕ*ZeA0& °,›ù‡œ©Ó¦ü$:jyÜ,cùó?žó“õsü³Ð- ΠiN§ÓŠgãét:îÚµ, i:ã€î£îP|AŒLmbÌÎWƒ ˆóüc9þ5A„„­’T–Uë/ êX/G”aA%ÎúcŽ`Vd”¸½­ÃÍmòKû`É ¿%Ñù=6gx»KùJ«R”@ à)³ZFQ@ªPÈ(®Xm+ Þ´6˜_è>Ÿa¸ê൛æ3Œ2]R–ÍKÎa«AP†ä¾f4®NÿéÍ=‚9>aâÐŽ]'Nºz…ž8÷Byó’~„Í÷K¬ìïW;ˆ— º{mcM‚$Ãê7ŠÝ [3¸ÍÍÅÒ³t1(¤›Zqœ@-‹BZ'­BúÙr€ ¨Õ¹¹æ…ÔêÜ«õøÛ'N¤Z­Ã+GAP‰­óϯl¾ÔÂÎK?þ°ãϾsç,^ò\ûõ÷‡Ý››®ø<RiïöÒ<$ð.àªe”ÊyõZΆì<[,¶úUÈÎ :CÍ—*+÷‡ ¶°l|3€Ôª½€ ã¶&¤«pn!‚ #©ÄŽ¿`‹ÏwìšpS´8,¨­õÆ´iÓš.^ž;_0ï1¿ & ÿP$ؾ‹ûJ-“žÔÆÅ ® ‚ Ž2Š®¿ù»·Æß|Ô¬)S¦ÜŸ£Úÿ|ó«ožþ`ÇÒŽŽœjÈ(a[î×»’žÆq@Q‚§§ç¨ˆ‰ÇÝò] ~ôüYzü„qßuÞz1aÞC¹Ý·2Œ ‚ N0*.Á¶4.“$éáÛù£(ÊGàíîî~?ª8ƒÆuiAÄ!FEL̲L{ëwãgèæøz?ýLÐ}. r_ÅÄ;7©¢oº_ÇúW_Áý ‚`L|¯™õDÛ8˜ðˤH†Y¶*;2222»Šeï}¿Q<²«Xü Œ=0-1‚ ;Ç/“^Ùþ.8îÌ3L´\¥RHœÏ0%i9.?©ó ÅAP‰‘!éVQQRTTTddR­0–.J2„°FacYº()Ò´Ä |UÙio,KS’$I*Ó–ÙUY¡¿µ@™‹’ù6¹ŽìôË÷œe«rtA1F•xíRy ÒUE É;\Íé\Îú< ¬”«T¥¥¥'N¤†Tç¬ÏÓˆå‰"(IË©æ[H+ ;y2+óxV4Ã0LtÖñ”;/E©.S’$¬ [H.L=q¢´´Ô2Jælr]Ûé—ï9A„¤8è‚bŒ ˜Ý±õFÒÛN5ÎÌý5Ž K`˜èØU>BMIYUJp°Q “…î]E'Ïe%à/ úh´4ìc°•ì ê§K”ÀÌOüßÄGè 1õгi¿_«ž#‚ ƒQâ©}O9Þ²{Üy¾áƒ BR>ÜÔ°>¯®.?V’-W¥†&RJ’ Ñê|œW}³h•¥‹’×çÕ‘$$0Iø`ûEî=˜¨Aî?%€u[E~=,Ë_øÜÛÓÓÛsûaéÆj;_·ü…kÒͰ§Ø˜«ˆ+x§Øï}ëG-£bö܈jò£þ—Pº®¾‰‡zacã i¤iâWeG¦+É’´œ°ã)Á Š€Ñ˜Hé/Ų,}Tž§Ѧ±Úõi%Ök¹¾_eA}œcíÐÌÞìêÔ6Õ\ú$óRþ+­y+zÇu|ºS×XwÓÞû“…R(>©íWæ“Å xÄC’¥„C:N§ÓŠ/ˆ‘©]ó_«e”#¦ñ\œAÓzÿØxÎUšve¶Äà”¬h†‘P@Th¸ˆ$•޶Øn!Š AÛâ`:­ü…>vtGú´Ê0‚ ›ÒÒÞ²ã›?fÝØ7»£zö䞇r?xÞiš–)ï–Ë;ÚÚlJqÜÖ ô}…SïKÚ'4‘=­BJQ@¦æ>˜”ë?hR©BkEò$ üð»ß޾@ ð2#ñµÖDwY}»?†×¡i[KÁVË(™Z«RE9x6 –Q”@ B¨ª¿¥Y"I/Ѧtý¥bju®<š©Ëå߯l¦š«Ò7‰@“+qäQ"‚IÉZI’Ê´eD`ëžçû´Ê0‚<àXyÇÖ_Zßðð¸Ö>œùó”ÎëSïÜ!€…Š)p¦]¿Îþö·°¿­Q’£RgˆÅjUA‚$Ãä[­bs±ô,] éf…V!­Ù§±´'‹«µ jOƒtдV±» ak†5;BPïK:D;‰ Π ¡ÙÙÁ¶1›ågiZ¨UH)8+g¼úæi«â—zâDªþ“#Û&„¤ž(M5+0©É-kÔ/¯<$µ´Ô¼x¡EM»ýšX¶å‚ âPLÜGô¹Ýu[“±¶(éïDøîɯþ°âÝÞ|û†€ê?¾sÖ,{ú#I(P©A/ÄfjÕ|©²r{¨@º½²òR3€0BZ£RsËØ;í„â“Zý’6_ˆ Ö `3ì1ÈŸ¹.Yð:^ˆì ¶M(䮀 ý‚4¬UH) g‚ âtLœ(xþûù±±±¹¹¹B¡ ˆéòL˜6€®½&ß½Y¡n,®‘ïɰ¢g&7] #¤5›ji1H÷ˆ#`÷æ“j°ˆˆ¹&j™ô¤6Îx7X‚ùÍ[â î5…”’6žåÝ3樾­Þ\,=K—8“ q¶å~mç#‚ ă¹Àíe€˜1cFNNÎÆ{zz>ûì3777 #¤ºn{ÈÎ ¡•€Ù°vm¥²† ÎØÓ(•©‹3ÄÖìè­Å^¢ö©ã8‘®áV»Ò˜H ä¶i[—ä'„2œ‰ÈèàƒKq†Wß<#ŒXΊÁÇÄfL˜0aÖ¬YÝÝÝŽ)1#¤!¬Ù ³QN U% ãs>üÊB¿ ÖFC½VJd\Üja§ÿQ¢øB˜ëŠEQ°P~¶0á9•5Gd6Úºa„´&T øIâßp:"£„{Ï> 8ÂȈAÃèßæ°óõRãóÄFt:›››§§'¿pçë¥ÝãÎã;¶\xN„ Èý¾ê€JŒðÙ–ûµ#«ÓžžžVbâÆ‹WÍJz¿¿}óÆUÖÁ±t¡;2²œ®ìÂy8Ü#Œƒ€ s%>´[ƒƒ‚ ‚ #£ÄNæ Æ4/‚ 2T0+"‚ ‚Œš˜¹—°l*ý IÃø¾ðë´^WX K^’¯Ÿ;BÉ}­:v/»æþ}_¨ñ¡¸OÉÙ¾1eç{Nö GØY#ccv9<ÂU9ËÒ”dÀãxÞî¡·-•Öç÷Â0ó7}¸w5uÏvG¿“ÁPí Ã¨ÄˆKgaûñÿ}ûp+,y)cý\‚`ÙÖ/ßý°éõõ¾£Õ1gV£á”ÅøtDAË3ß_þàÍ.ÇGØqumÛ‡‘.J^Ÿ§•Yª”‚`YúhrNÕ^§»s\øTâÑE³úpInÐGÂ{Á¦ ÀK5x£<ëãO›ÍbeáY´!ùüþú…º3¼Êüȃøz_il5³X¶õËwegt$Ã,¶z³åGÓÑ_~|ŽfAòÖUAüc"߇g=k¹ÞI(?–&!HS×µ¥5»¿vsÏûÇ<›8µ\"ÆVwÕIe\ö·µ˜cclv e„¹l§ÀDËO¤†˜èY¤¥Aféâe~Úò~ƒL´±­öhrz~­`·úp^I®”ëå“ ¨Õ¹©Žx¸iSC¾Áì*ŸjÎ%”iËÀ$ÀÍ‚´4àäÙÒšÝÝAM^Ÿ_GODÌgìI>^'‰¸“­©¯†Y`c¯å aKêohü\]kŒø1pÖšÏ×Ô×Éðw´EÛ1=»;¡ÈÏrˆ„Gè£ò< ˆ6ˆÕ®O+±eС£PHØJP*•eÕ)!!.óÐÿ¯@(Fcvú2Æ­¤µÍÞìêÔ6Õ\ú$óRþ+­y+zÇu|ºS×XwÓÞ[U…R(>©íWæ“Å xÄCR¯„C:N§ÓŠ/ˆTbë*; )qMë;fã9hÚe™š|Åkg2L­"ë\»~Š5=Ødoº9‘˜òH²¼¾^mÏPîíÿ”I–ÿ«üº³ŽÛÖ×Ô©!Iï§ž´»²=Ókèn|kÕCç¬9â9â ‘°¹klM*˶¶vú›]Ca*4\D’ʲj€ê2%IŠÂC)G/|rñ¥?!š3РmqΓ൛æ3LIZr­ßUÙÙU,뼇¡l9à¬5cýG[œ¬•ŸSK{ËŽoþ˜ucßìŽêÙ“{zÈmüày§iZ¦¼[.ïhk³)Åq[ƒÒ÷N½/=hkœÐDö´ )E ™šû`R®ÿ UH¥ ­e”$ðÃï~;ú@  føZk¢»¬>ØÝÃëд­*®UH)J_ßÂ+%–³ÍkÙÉ·Bã™ìÄœís¶o¬´wë/AIâ–dù±ô¿·Ï’,?–þ¡åö}i‹ˆa4ë·ˆ˜þµl°7~¶€iûôw9Û7î~ÊöÛqŒk«9˜øÎÁrfAò+aÞöèÏþ|­74žÉN´Ú‘SÖñœHdùÇ2ý¾æÖÖ®±5©ÌvÓK!úÉc¹›ÆÌìâbÔê\y4£L—HÒ•L´¢Ïí®ÛšŒµEIŸ¤–—Oöòêê¼ÑЕ=­õúw^^v~ÐbIBŒJ!«U ’ Ó/›/UVîl`Ùøfq„´fŸľ'‹aç¡Å»Ojã"Nƒt?EqÁ:Á~ÙYAg­Ú‚8£P%u!ym û¯†[:cR½Àwd˜ÿ&£9kðîb'‚ŒV¬(qV àIøïçwÄÆÆæææ …B‚ ¦Ë3aÀ[ ůÉwoV¨‹kä{2¬h˜‰Þ #¤5›ji1H÷ˆ#`÷æ“j0b}µLzRgÔ¿sÝgèt¯)¤”´ñ,ïž1Gµxðm­:Ã+©üÄN½ùApR!ÈbïÍ3fÌÈÉÉÙ¸qcxxxOOc…Rؾn;H#„Væ•ÚVe; @œ±6믻ZÚÑ[‹+.ä]¨®iÔ€V!)pÀmÓ¶Nȸ…3¶ÜCAÇbb3&L˜0kÖ¬îîn777¥8„µ®§âŒBE Âø8¿²Ð/ˆµÑP¯•·ZØéâ(¾P'溢AFQ,”Ÿ-LxNeÍ™¶ÎFÔæÿ¿$úõe¿X¾ç2²œ®<óp¸G4VîØâž'6¢ÓéÜÜÜ<=Mžž±uÇbÆ«ožÆû8g[î×8‡{„qKÇVãÅ«f%½ßß¾yã*Žé ÅÁy8æÙ§$QÈéÊ.kš+ñ¡Ý>×òÁŽ¥8Ȩ’dGÎÓŒ‰‘{†‰o7Ê™¶Q8|‚«‚‚ ˆ-0+"‚ ‚Œš˜AqÜ»Pja —[‚­;øÎÁrà’-Zda1yq ãû¯Óx÷ÞO_¨åûŒ;•Ad ©²â cCáô/…%/e¬ŸK,Ûúå»6½î´ši?;*1‚ bÈí{4$IBùDzr˘¸Y}¸$7è Â{Á¦ Æo›Žþòãs$0 ’¹w}÷…º3Ÿ6s1ô³žµ\TMBù±t0 pãà˜¸N-­Ùõ¼õËwegt¤Ñç~±çÙÄ]M®ÊŽŒ4ä;K2¦EFÅÞilÞ–ûõ¶Ü¯³·¹ÖvR6–í,´Ví¸–m(gÙνNuàþEq”hm8ߨé€gE Ózþ?†ùÆ0‹Ÿ_< GÜÜŸ{¹–e9U>U}Á~¸ sg¯øöÚ©Æk½èñ‹“p`›çmDP@dy}½å—3½æ˜Ì¡¦¾+g­ÍôšÜŠzÊÎ÷p-úž)±Ð/¨òR34_ª"ªŠOj¹íÊ ?áà{I8¤ÓÑg¥ÅÏÉ0Gà–•ÃD‡;øC I9žÍ0 u\/ÞȰÑÓÚî6˃?þk“|°Óâ“ Ô~çWà˅˶÷šÛÒEnJe«Ï¢~QG«øŠ×Îd˜ZEÖ¹vý¹]ÓуM,KÞþOùéEºþK Iz?õ¤‡½éÄi­îÆ·Vç¤sÖŒõÿU~÷ѽTâþ”~jUA||<'ËjUA‚Dlà5U-£dj­BJQ%ûÜ<–î¿Ì+Y8Ï×{S”@ 0X11¢¶Oó ­TC{Œ‡Ã\Ä…a±×²ÿ’o „Æ3Ù‰9Û7ælßX¨¿åÊ#ìŸ-`4ß9XÎ,H~%ÌÛîY»÷³?_ë g²w¿qÐòʱSÖŒõÛ>ý]ÎöV ".Áâ)&ßy kµàÛX³pÞÖy w¶_ã„1 iX/t'Ï1›ågiZ .5Èås—¶Òt€ZëûÙg‹ã„Ü—›‹¥gébPH7+´b®Ð`D«R2 3ÄjÙîygiI0n¥‚¸7o¯žëèÌ" a›–ŸôèÐ{ú‹žèhﯾhm›‹añ©¯DÐòÌ÷—ë?ñ·¬lÂÜU溺rÔ2áµì•ÌeÆš~6²f­þÿₘذ>Ý| ¤â)ŸÔ6_Òg æÅÆÆØ ¡P/±zÒͰ‡§’ ‡t:zë%Ãâtó¥ÊÊí¡AèöJÃZx¿¡Ÿá7µªÀrMܲÚýøû [ $©,«Æ8 ÷Ž[ÐcðÏZÛœ9ý'˜ägv%=m¼É«ý\óWù†ûÍ–x^;ф㊠ˆãJÌi¬ŒA¡_På¥}ÖÑÅÅЯ°¦†ÕÅ„ ˆãJ ¾óîß¿Ÿ»¤Ëß6ÑR^xlAÂÖâbZ¢2¿’«m¬±¦É¶q°ÚýxQ«÷ÏZ šüX ÷HqY˜þV¬àµ›D É•nŠfCÈE­J×—ã³L÷bùùò\®„Û&c!oÛ¤ùôÙ©&uǧ˜±…•·] #¤!¬~=š¿ âŒBE ‚eã i»Ñ¬8ƒEíÞY± ``?ÄêÄVìØ ‹¬v¿ë‰Ô'R­‰tî‰Õú«W§Z-Gd”ñ‹å p>§+O;*À/Äå¼úæév,ÅüÄÈèa[î×»’žÆqpù¨â/ÜoÍÓÓß±… ‚ # *1‚ ‚ #‚ *1‚ ‚ ¨Ä‚ c„Á¥Ps¶Õ zÁ”¬V“Üàc™¨Ä‚ Òù“)Y]{ž #‚Œp|\T”d‰Ve#Ta³AãÚeÉL:¢‹’"-M±•’ÕÜ“ì*;ž³l•YªÖ~÷ª²][Z³;Dæž[µ‰JŒ ‚ á€K*OAºê@¢4y‡õï§‹’ÒJD‰T¥¥¥'N¤:˜ö”{n´\u<=Ü´|}žF”(OAIZNµå ”¬tQRº’Œ–«TòhR™žTDÛòÜVªV’T¦•…qÿ…k6þ#ëžóm¢#ÃrŽ<"—j÷Ncó¶Ü¯ï¶½; íWpÌò€À0ѱ«|ÀGè%eU,˲tÅ) €¿ÐÇ©£­m†™/€ÞOhü…ÁBhÐÒN\<¦+Niô"Í0šSÆæ–žÛú³R‚´fõxhËs£Í1ÌxümŒÌž.J^Ÿ§•Yª”‚`YúhrNÕÞ”Ì7 h«¾ð§‹ÿïWS²lçáÜÎ'“ tfYÚA tZÍ [Y×o’T¦K”@’ Ñê¨A{¢Ñê|\õ9`ÍÌsŸf`L<2¸èR ]”iŒ§Ùªl®‡whk=5aŽMe¸ùq“ËÅÄÅÁ§ª/ .›ÛAkpiÖ\ia¢¹»±,Wtí¦dµðD$¸ðÿÀÚž£#.?ÖíR<š$ëòW."É:­ EÛ ¥ð¸?TzZÛÝfyð^k“|°ÓâûcâίÀ÷-kY˜ìØAK¸_±­„§¶Ò¤òÕ´œ;&(µ™?ÕvJV}Û²j€ê2%It<±—ªÕYkŽxŽJŒÜ3‘vàRMpX4Ãp—j|BÃç3LIY5è´êƒcxOðàr#ÈСVçf­Ô'Hµ¼CØjšT£ *Ó%eaYürju®<š©Ëµuû´”¬\[eºD’®d¢å¹«)ûçöSµ:eÍÏÇ0xx´áäÅŸÐpQž¦AK³mƒs7} 6póöê¹Þ Ó:…âV° `ÙiñI>1(;ÈØŠwù™Ommë?—ò>/ä}ëPšT»ÖrÌ˶¶ÿ óT­ -l:eÍZ}›~bLŒ¸à÷é‚K5"¡À¸´¥ÑêZ*Nù‡á _®Ø;nAÁ?>kms攜 "µ+€»ck(vpl±W§G(ð¢Vï=.ÌY––+É€h¹*Õx©F™ž.QX^\9%_–_Gš<`ç.ÊË+¬W×í ?ß]Iæ%o%s›1ɼPØÃ);‚ ‚ ‚Œ"þ5ß)"©%3ÜIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/changes/2.6/15_random_string.png0000644000175000017500000003465412032647166026166 0ustar ebourgebourg‰PNG  IHDR¹ìÿà)ŽsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEܪ¥P IDATxÚíT[וï·nÜ·Öû3+N3`Ì0¸ƒC<žiáD NÇÂðJ¨±’fHž£i›IT ›†¢™µ’‰¥à¦X^j›NFuÅM…SB†­1JƒFï½åIˆiañIÆÎZûþ¸úquuïÕ•@˜ïgéq8÷œ½÷9÷œ}ö=º‡@}ñùgD¤ãnƒ9‡g‘;¶ÞÉÁP¾à+¾à+¾à+`£°& † À¾ €…B0BáÐÓÓsãÆ • ¯½þöUíø3£}|6*ÿãË#öŽgµd{î[Om8Õ~üÆ/Ѿ¾›‡k`„œð»Ñ¡ìærí³é—nÃ0_°ìùÓÿ #¬’?ýï5˜Ëá+ø °±É»¯°E#ø °‘}…<Ïåˆ+ø °Á}<ƒ¾¬§¯°¾¸5AÏYÂóÓ½55µµµµµµ55­Þ%>žXSÓ;Íó*ötoLæÜ ¹¾ê‹[D wš/ux~ÉÛ*í*ëbÉ/má²øh/y…eô¹¹|é½^¯?qq9’úgÚü9ù`(ˆ+€¼MKKÞ¶Ãgf¨¡{¤½J§ãù¥¶¾éþvCÁû7}CŒºÇÚ«tºÜ¸¿s(V NWut|üèºêÈX}÷X»‚}û;‡:ûªs¤éj…¶Ãgf*œí7‹»JPl:ÉUy²d¾§ÆåËÐ8,BDįDزN'ù3m~ D¾(h‚çÎ\á¸Gt”×éŠÍ§Q|¸0ÐÖåºÂØNa†§{kº|±zÇøÑªxi²é‚;r…ãâó_Ì)9ìºÂÅSRgn]Ö;FŽVéRÿË‘¯«ÎÇXý«£]ªý¾0]‰§®ø÷#Gæ\ÊZD"÷íÑMÿ;ÇqäëÜO’BÙRU‹»²…çËCJ1‹ŠñülçÎÊä¢TÔé.í´ºû¶Ãgf¨òÈÙþCE×fˆhGiŻЏ-¤¦ë¦ÎN’mš4¢ÎÌ̤ó3Ëóï+ð,ÉWü°>vf†c¬ñäÅ÷$g¸I¿ÿáÞö!:ØúÂÏôÌØ=­ç~jÞä<ƒÙÌ=“CÄX}µBã|Ô5â¶VÒÌ™sA!qÉÛÚåãê##ŽzÎ×Õê]RIçùé¾Ãgf¨Á122:::>~T˜‚}‡ÏÌTZÖJêì Ê.FGGGGÜÖŒ uö‰#Ø:]UûXw=cŒÕ;FFâe*Þ ZtUZÝ#£££~÷«±e§(%•• Ï%×戨¡:í5‹¬Á¾NÇÕ;FƺöiW§s²Z(ÿŠË²ßA]gTÒÌÇÀu2T7Çù:÷·ÅŸ>ˆÛBl:¡Ù¦ÉHT•¹<þyø¡T>✙Ä-øL?‚EVäþ œ|ìôG»žë~þnzçÅ“¤fà‰8np,òÒûÝ÷ñé³d!4_¬ŒÕ[QQé"šœæyž_ LÌDÝ Cu=c3%åôÄÌÑ6ÿSðQˆv”JwÑÜÂ’ÒÃl¡êüh_"§ó¨ÔTK-Çñ‘»¹2uqˆˆ¾R¤ß^FDsŸ.¬D„üBá;c>yðO–õ{룡 ¬D2〯 !-bfášrºNWÕ~öÈNƸ+.K]xÇùºêº|+!y†^ò¶ÖÔÔ Ö@‹lTλ£æqÔ3&vA21KÒ#ƒ\©Sut|dÄmÝÉ$þ_.šC“ë&;—¿;z15Ï»£³žM3÷xFÄXÃ?¾a`ø·Þ÷°Ÿ±˜+À3"Ž{÷¥ºŽŽ£™ùÅX¢8ƒÜwø ¾(tº*!ª<™Aì|[©äÑweé6µtÒ›O;êÅÂæÛJ+…¹0éÁ„x)?à83C•V·£žåcL‘6•×ÃG*9Î縞;³¬V®øPw=ckã3iœË†+Î00üÛÕ̦+>ÃÅö¤þ¹mÛÝÄØ×¿?4ñ«÷.üúýã»%gHù~wÙ €g¾Èç\´“±¡ÎÄèé^µØ²NWlÜWu/‚“>Ž«Üg,Öé”Òµw×3&LKñ̸ú…¦àôÍ-\>ùN;Û÷U ù“gPqJ•צŠuYw²™3YÄŽ Ø&Y«ÃóÓ½­Þh !8éã¸d7QÆtYø¬ZšOi.ÿÕ{„ÿþê½ «œMW",Ó‹HþŒ°¢¯î½‡ãÞ;w>¬”Ÿ'"š[¼ÆV¦/ø9ŽÊJ¶2>S0šø o¡…bsÿXw͸,uÂïæ'«Óü6¯Ø|ÚQÏ|]uu]>Vï8m.VI¿* ®®kˆ*t¦%!ó—Eö :]U{wÇù:÷»ç*…ýt}ê[ O©¤—¥Î]zDËš»Ø|º»!ªuMMoŠuEKH•GIå5‰ý²4pÜawaFfA_WÝdu·Ø&Ù©£ÓUµw‘cÿþÚÚÚº.Ûi=ÛHpUL§Õgmï®—5Ó¹üÍAÿ›ƒþÕϦÆgúJgrn}Ôy¼–Íÿì𓦿ix-a’ Â÷©×ö=õ²±úï}×…Í€¦™ˆ¾øü3"Òq·ÁÃÃáPè|ùÏ®m¨*ýñã¿ö§t¯÷{Ö—è ?R·sÆøðÓÿþÝèÐSÍOdQø/=çìÏÑ7T²½öúÛÍO|síTæ§ßhzñ5?ô/WÑôžs¿:þÌã¸ã€bOc‘;¶Þ‰÷+Pð½Ü‹‰ö¬÷KŸ b½:‚U9›îe`‘<‡Ü×2¤ÏóÑ@J$ÂVð^&gà+n)/Jm.ÏsÈ}mCú†Ão&"ž"<%ø ›u~çÔ<þð`cû ,¿Ï°UÀW€M$Ïq…~‚à+Ö…?ýo!'ä;®€g¾`øÝèŒ+F}ƒy-ìýAÀW¬)ÂÏúÁ†o)·0xo#JOOŒ(ðÞFÈ#¼·q¨_ð_ð_ð_ð_ðà+¾à+¾à+¾à+¾à+ÀW|ÀW|ÀW|ÀWÀ­È˜€œÃóÓ}û;}\Âg¬¾{¬½J§Ëy-CÔ°Ê’S¥­wŒ­Ò¡ˆ+/«wŒŒŒŽŽŽŽŽŽ]½£ÀóÓ½5555½Ós…ãˆãˆ)ø(ò¨úR>â8QÕóètUígÌ>såŠËRç–LW`³±­´r™+K·­¢nž_pœ™¡J«ÛQÏXÖyT¤ïýTxv %éŠÍ§ÇÇõŒˆÖeK&ð9C§«ªn ¢¹…ëìKú¢Bþbã¾J!²C NIÊÌq¾É`tÏAå>cñªÞ õ' Zò(ªÆq>÷Àõw'ªBy íÝõŒ­Ò=ÀW`ý1Ž#"FõÕÑä¥Eñ,âï×ff|–:QòU€Yp–;,ýEé0ÀW·ž»PuÔ2Ù:pÝ_ ´uR÷Øh•Žç§ûöOj+f[ieƒ£¿OØØÎB&vTŸŽÝÈY  6x±)0<±oÂážK¬ *£ñÃë sZãÅÆ}s“x. ÀÆ]6èŠûÈÕåÚQmH¨s ×£.ÅFø àV#ŠÍ]ûh&zŸWµwïpYêjkk÷;h_ÃPç~M?­,6Ÿ®žÜ/l–6?ãwl¸ÈÂNV/vÔ®ª}̲pxÿþýêênP `Û[|!¢/>ÿŒˆNýË€½ãY¼Ø€MÎk¯¿¡ŒDdïxö¿¾øüŽ­w"®5’ö6Þ¸q'S0}…Ûo¿gѰɱõüCÄâ¤æqø PDü 2ÕWØõzC ½Þâ ¯²º€]o¬ƒš«¬7b¯—)Èž°Ç¢Oí·»0D C°+˜ûƒQBΊÛª½…õqŒ¶ÍXÐPàìz½˜S“]åïƒÁà;å.ôo6©¯ žpMæËó‹¢õ…°˜ˆEv½=K‡ v½Ü²#´-Sv½=´F‰æ‘€b9õzûìú–óÜù–hi abÿ•¦' öX„Oºé<šS*vº2S$L2£¥}0¢wÈÝ\&½ ý³öæ"¢’f{ǬΛÛW{\³£0;ÚÈ ƒÁà;ǨǼ-Bº(1챸Ê…È„ÉßâMLô-³ƒÁ`p°c¶%1{z[Z¨? ¾slÖuâ„Åo …‚ïç@BÌ#²=HF[ÈÙÄšœ‰øAT˜PÈö`Ò…2B úƒA; {ÓÁ6o ƒÁ“’ÄNW¦NYÂd°‘‚ ~oEYI쯒² /œ6£¯àm‹íW°‘Ý-¬Èh‹}£’²ŠDf³SHO$†/Ó½%±…‰ÓœbÌV!o³Õœ_vw ÚŒB —ÿ°Ãû.#ØöòÝêÃRL¥t‘Wg£ã]I³Õ¬ê*\¦òí±(K¢þìÊL½ (hdÏ™4÷mF¢°Çâ.+IZÖë[ÎGÏ-m2)–¹8¹ÂT¢]Ñ%é{*%Ín§]¯7p\“ bö,Î_¦2­9/Ÿ?h8E¤Aqe;®Ÿ™íå®xÌ=ì±´3 ƒÁ~óº l´)>¡ÈÛËw‹6{Ä~IÖ£É<{5±Eçê¬Ù„›€Íë+D½…è¼ÅùË»£¡øðÕÙ4CI"R°Ç÷+Mf¯Ë&¢°ÇåÍÙø"¶2ï¢B†=.Õý %{hܼ¥TfvP°ÎBüçQa­§®·:[Òü¿¤Ùmµë-žAw³Íé74œ"b»Žu˜½-z:2)¬ý¯Zô†6Žˆšúf¯?–îôë §8Æšœ¡,Æ—ÄC&gИ(Ò^–ùrßhsúõzÇí:vÌLóê60٣갤ŠZÊÌ^BÖ›ØÇÑyÃùDç7ÚBd7 D´ëØ =€[é™Ô›ÑaÅ]æÎíTž2Xl=?Áa` Ñ™Ô[6«Dû4Y“3Ô\¨eë̦õŒ¶PȶÊ ÉWœA Øœ`((ú xH À~€dÁ€3© |dá+ÄŽs®xk­°'Ÿ¹¬Oí·@;â˜ïhüt¦¹%e/'&Ÿ+‹>@NÙ"W¶3\“—ìz¿i­ßS°·Pÿ)¸^º’U¶qƒk´AU9¿%Å=áèë2m\!à÷š ý5ì±èõƒ!úÞgQŠ(1`×ÛaE¯®bQŠ”EƒðB‚ó-I‹½òòBv![~ØcQ*GK¥)*HdÿKÕI¶" Ø£9“ U ¦WÔˆz}Ê…Ik2¡„)©‚IOI–_2BFMgñx–b²R ž¦|5kKM*§‘†¶“dŒLßNîoI©27B‡—äL½%:¡´Y„¤KÒÒÞYJý'ÍM*©G¤¸Ì—:0N¥éäö) {,Éu,:y°þL8n™ØÃ‹Å³öX’JþÕBa@@•/>ÿì‹Ï?ëúÁyžçù©÷ž˜âS™:qï½÷>ýæ"Ïó‹o>Í3uBH‘$Æsª(óß©)5(fŽ—)ñͧ£Iò•§­T¢‚‚´X@Tèâ›OÇóN¸÷^Qeò,¾ùôÓ¯¼òt컌>©JJ %ÛòBÆõY|óé{åm'“AÎàŠFPË©fÒÔ¦O×v ݨ“ ”úvܨ‰æ”é…J^¡ˆoÉÔ>¦0þ¨ ñΑÚíÕî,¥ûB¡§ÉôJ%ÅÓŒòz½ãv;f¦y´\CN“:C6YVm:Eß6;Ôf0PòyªñîoV¥Ÿ¶¤í„¬ÛÉ®×[ŽÿÆš[Èô4³s°Ü¥×·qÛu,¾VWR<“ÛVv¬‹†šz\å{ãÛ{LMŒLÆø÷Ù˜{'D…Œ±r-žAwsIÀï¥óç çÓí$¡#"a—ã©ÀKàA‚°Çâ.S §Í6&t„ö>öXld_Ó³Æ×!à­ `£ŽDdïxö¿¾øüŽ­wnE€ìZG¼dÌ$ùî„òùw{‘uWl²¸ ã 8´€¡ !ÉWÀb€¸@²`À™ÔP¾2óvéécëtô{šóì3,K­¥ÿjW<'&’-D¥äuj—\µî: ¯U€€}5ræJMá¤ÁÕɲáÛ=éŒDœ”ÀºÇvϺÖý Ø[¨? åæwÉF[~ßœ¿òWSò*'ªœOç…éܨI°ëý¦Lí/.0—CGF›É¿‰'G£- ƒÁ`kêƒÙŒÚà°|… «½\Þ[9Ï>íyð${°½ìŠAù<ûx9ɯlMœÔ.'Uì¨ø)ñ!“9ÆH=‡^› 2GÔKË—ÈŸzÞ|²xIŠ¨È XWª %F–ä¦4]ždä@+ɵ©Œð윶F‘"© “¦ ^±§ÅýÕø9‚ êK»¤@IÕŠL2‚R¥ØÉk4×¥X;ËÛŸv½(ƒÒ]¯µ4RzBØcI*Ùòæ¢jsÔùâóϾøü³Ä¡õ÷ž˜’?˜^ù<{µóàe«—¤.w6¼BÖäÜ_¹¤,•ìéõJ™ãÅʉ›NQùñzEÊĉ-/w޼쵉úRjNS—ä 9#«ŸfŸör‰‘µ[IQx %¤­Q]qKI-¬.®¼ú©ËW—΀â—ï¢)·c>Ï­çeo¢loÿøub“)Dµ4%È÷œØw¹Ñ f†á LŠ{Kš­äJYÔÈŸg¯~|Úãê•Ά— CJOpÿÛ•¤ŸVÑ9ô2GÛ¤UAL¬Þ¤òe«7¯vmâhuehäíå»USº\l䌬$+¼–ÒÖ¨®H«j‘Á•Õw›4*§3`ÂJ]”´U”[ÄÖÎþö?;¼ÀhsšÓD½4Å ‚|ÏÂ0mø€ïX`lQ{:hõ[þÏ…tµ(ýKò±GŸ<ø'BÕ4táQÕ’tQ£Ÿd HÔ,¨†NµU$ѦS‡ˆè+EúíeD4÷i¼94fXV΃¸X_°_äÅWÈô~ú—¯_™!ËïÇR®ø/-~ã±»hñê í(úr"œ‰°e¥ôuÚ¯ùy>)=åO¡¡4žÑÌüb„ÝAâZ¾+×’¤¯¡(MßåEݪÓñKo¿ø·?ú#ÇÇ“‘3¦fA4tª­¢)wÿé—c’sÜ»/Õ½K§Ôjb­,ɳû|pë±É, Êó×|gÿhùéÄ׋uÑ?ÿ¾ùOÆ~6×Qìq/¿B¾ënùy>)=åÏmÛî&úDTÂÝewfc¥=UÐØ¿ ]š>¶û>‰^š…Wª:š./ê2]óuÿh–îùÖO¿½øãcrr*ʰ> -€ÿ÷ߎqýYéVF+ü¶mwûäë6ßñ{…ÙÑJ’üé2ÄšUš‡ðX¬3xòá+°Ì>Ó¿|£ìoÿ×]¼ðg„}uï=÷ÉÅÂf0 Ž{ïƒiöï?:îç8a¦”žiÕ.?[q¦þ«å½¦ÙÊô?Ç}eïý[/ɦô]üù‹C­åŒýÃwÃ!%øÏ?®DÒ5·x-Z5••ˆª–¦+‹º¸ð •ßõeÅŠ «¡“e[^ùÀõï2Vßyä>q‹œ;–½D!CQñΘє Y½²ÀW…E„ñÚ?+‘ð{oÎÿïƒqâ÷™Êûãï×"ì/¶–36ñrÍï8ù5ƈˆ1>Âx¥ôŒ>.¿0ê3…?·>ê<^Ë&^®yêe«}õåG‹S³)}Oªå.óK¿9¹>þÅs5O6šžl4ýþ¿ßÍSÚ¢¦^Û÷ÔË>Æê¿÷]CD5]VTÆW}륎óu?ú¯Ÿî$Žóu?z*‘ÊY Wã|?øFÍ“¦§¾Ñ9¾³õÔo¢¶Š«9ÿ³ÃO6šþ¦áµP„Iì–šñÅuG[¿Bÿâ¹!E¶Õ+ ÀjÐÑŸFD:î6˜¬ž×^»ù‰oni=ç~uü™Ç7®üëÏO¿Ñôâj8~þè_nG雪¡S• ûûEîØz'ö+€Ü³Ñ£ ˆâ¦ó˜` H„­lämwhh4_äžE7†Ão&"ž"<†¾™/×6ø¼‚)_`¹†å&@C_¬ß¼ÁGð_ä<ƒhhà+ ÆØûƒ ¡¸eÀû ð~¼·jÀW|ÀW|ÀW|ÀW|ÀW|ø €¯ø €¯ø €¯ø €¯€ÍɘÀ&çµ×߆Ž?ó8|@†ç¾õŒðã7~)›_ /݆‡òŠÀWk¢|€B@6Ì_¾(ìÏ€u䯷ß~û7¤¾ÂöBÞ½xy£èûèÞÝð€ xíõ·e-™Æýõ_¾²þ_Nâ%ð€Œ}…ò̾ØÐìz¿)d3€B˜S·pyÍ¿Qô’%Müë¿sLþ´óþ5™%y>Ðóà ƒÔtjJ­ÆLõÊ8®éý}Ø·¿ÓÇqçëÜß'¬§EdÃÂ\+ä磌Jˆ¯ÅÅër¥Ä&5™:¿Ÿ,@êâ^£ýe]@ueuM÷*é¢Ò(5­­­éãe%ñ1#Gc¨Ñd¾<¿(Zn ž~ly°ëíXºxͰëåVáÑu^²ÀMZ²GóØD´8Ùl’: -ç¹ó-âeqØcÑëõzû”d¹,#XØcR<‰Õ[ÀÞBΘ½Œ¶PÈÝ\&>ý³vÁa*i¶wÌúòŽÔ>I‰äEYTñ²OÁh’œ ((%’'©±T¯2ëFõÖQ±sš†–Ô#R\¦£…į6tJ7U4Ea%¹ŽEç#ÖŸ Ç-ûoØc±xÃKR Â%16…ŒXH¥{D͆9¼_ÒzÞÉ¥¥hýæb²a6'µ¬2Ä´aÚ?Bþ©Ÿÿp†ãN}OÏøå[aÅü¢ðýæÊÂ[Ïìyø¡ªŽK+‘廹2ÕmÜSmt¼õÖ·~èjã·ßZˆ¥©d¾4å¨6:&—/u÷<üЧ{*rseêäƒ/ qÇýæØƒ¯Æ®’–“…^™ù cq²$¬\GGGGÜÖŒ uöŧ™hink%Íœ9Œ:1}>Ž«wŒŒuíSóƒ’%Qªˆç§ûŸ™¡ÇÈÈèèèøøÑ=Üžö±îzÆ«/µƒ}‡ÏÌTZÖJêì JäçwŒŒŒU-È*µämíª´ºGFGGýþîWSÈÌþÉ…'¹5”Ê霬–Õe5›Õ½.ÏÕ\¯ë]³!>a·‘= ƒÁwŽQ;6€x[„tQbØcq•ƒÁ`0hò·xÅ¡ŽÁ`08Ø1+¼--Ô ß96ë:qÂâ7…BÁwŽÍ¶Ød´ –»’&£-älbM¢HIT€PÈö`’ì2‚ :ƒA; '¤ò{%þHêJËïMøaTRVáõËLJöñ›S„ìdḴóÖP0 ÅQ2ZØc‹æŒÛR È*%«~šÅ¤«|0”ARi;+4tÜÖùFÑ„%«¸¸eB(E¸6d{P¦$Çí¨¤ÙZ!Ö;ðóŸýÕ×ïüýÅ0…/Ä}4ûNön/ivÇfŰÇENÁF›Ð Á`°¿‰ä{I²J}@Õ†¹»_ÔïeIG"JÑúÉíRÃMf¯UÎÂò ¯ýCD7—¿$Æz™ “þh×sÝÏßMï¼xò!‘'â¸Á±ÈKïŸ}þnúÓg?H›ùʼn¯\xQÏxþB`Øéý³ÏW06tìd`eOÛDï#Œ1ÖhŸøÞ½’-' ½2Ž+(»K‰™¨a¨®glf"0Vo9T$¤ÓÐä4Ï÷ídlh2HD×hŸ±H±è¢ÒÉ ÑÒ„ô¡Éižçù¥…9blgé6™ü2׊$Q©ˆã|mK KaÁs"ÚQj(ÝADs K«xx/«T`b†hGiQŽì/*\ÖYQQ6^Nw»A»ü%>‹ÚiøŽÓV»¦iUKE:]UûÙ#;㮸,uuñ²Sl—p¡º¾91ií/ hS6+ù3h”’fkkršü±™5`×»Êí™î60 ¸wŽí­¦Å!Ù6¯Úå‰áWâ̲–4»C!ë|ãj÷Y.Îç÷E/ií£"€’Ñç/_>uР\ìê•òž:õÑ*Zg•hì-ÂXŸÉÞÒ’½(9x „~¯Ùd¦À$§Íhé˜íé©°Jî—€½qÞªuËŽlP·aÎï%;Ëw$­ZÁ^îÊp³dæ¾Ï’¦êÀ?×<ôõš“®D„qÜ»/ÕuŒpÍÌ/FXr~éwÕÌl9Ân.ž;ZóP£G¦ùròî+ètUÕ Äq¾É`ê?·•V&'T–n“-¥²t‘ð‚f®]Lì¨NióüÒ€ãÌ UZÝŽzÆò26V–nS®HWl>=>î¨gD$~"QYxÄ „îs½Á3ŤeV²¿l˦Wv Il20ÚBÖy[–SlI³½Ü%~(ÞBN!$Ûo^O¥Ö¥îÙ«aÑJ^&¡dÑ…‰e™öõÙöòÝQ×MüÀ"§˜ûƒÁÁëÿÉKž[Á¦-Ø.v+zÜ ¸£S¡Ñdöúí‚{ þ›çÝÃ:$±µií…€bG’ÓZý9Ffp%ÂkÿQ„í©z„8nèÒ´HÂ̽áW"Û¶ÝMŒ}ýûC¿zï¯ß?¾›Qr†Œ2óË+áÁîÍÒ=–ŸþÀĘ\!òåd¡WÆqÃGv26ÔÙß¿6ÝÛ;Íó±-¾É QpÒÇqÉ[æ®GÓiG©^dÜWIC“çvÈnÈdU*vb„gäÊyS%Q«ÈÐÞ]ÏXlÞæã¹…ëB¥Q•Ý×5.ß«¢—§2Q~¼:J 5³²ý5¡¢ldÒ(”ô§€ß+~îý[Òl/wE§Åù˱BÃWgÓ̬‰‘'`?vT„…pÆÿ$¥ÄpFS~,ðíqyå¤U¾²¢'êr…=¶ž Ù•ìs¹'ñdþâpôÊÔ-JFK<·ÈD©,ZÚ‹ÈzC{û1ëy%ŵ îÂ÷°Ç".Áhé˜m3´ÅöÜÑd>þ¼P³ø{´n²67'íæË(¤É=’ÿûE&Ê"בä´N2lRä%› ÖJ„iÿùÿâPk9ccÿÐ\‰¬D[åGXÑW÷ÞÃqï;_Ïiæ•ÈâÂ'DT~×—ÅéEÅ;‰hnñ[Q(' ½2ötÅæþ±îšqYê„mó“ÕѽoÅæÓŽzæëª«ëò±zÇis±øÂ Çþº._ÒoÁY"YWA§«jïnà8_ç~÷\%‰} âÄøºê&«»ÕãId+öù×ÖÖÖÕu Qå‘®CÅ:NW|¨ëH%͸,u–~Aå+.‹Æ7(žˆ^î.=¢%XRl>ÝÝ5uMMoŠ$H2«Ø_íLì× êÊfq ·–F!2ÚL~áý --äÌÕ¯KšÝÑ)ÄhsV1L½˜½-zû”¢(ƒå®è¾n¿)ñÚhsVô4 †Æž §†Å /~¹BB)¡˜lvgmÑ8¶˜e‡êhÑ×T$vŒm!ëüAƒÁ`88|`Pô‹Ò¸Jö1;$ìÿÐ7Î[?·ˆš(^…’ÑJšÝ&¿Ú&d•ÊrÝnoÔ[Þ\uôF¡¡ÍÎÁr—°±_´VWR\>¶ðT¬Dq7ˆŠ®×ÛÈžTBI³µ‰íŠï £©‰5™Œñï»bS»Çû1ŒÑ椖èï ü^:ß&ù„Êû2¸Gòq¿¤½•¥I^ë¤ûkõÛy"Œ×þò³»Ì/ýæä>úÁ7jžúFçÇc|„ñ[u¯eó?;üd£éo^ EX„ ¢ÄßÓg櫾õRÇùºý×OwÇùº=õXQÝÑÖ¯ÐÇ¿x®F¸*µœ,ô’÷ˆè‹Ï?#"wÛ*XågúÑW54t­ZƒV¦oG¹4¾r['¿†=õwÕâáQÂ'luNMÙ„=w™[4çgókô°ÇÒ˜qHvÍ”J“S´muMÐhã‚kB¡5úš6šZëØz~bïxVrvÔk¯¿ÝüÄ7µWøgæ¾Z¹£ð “©œžs¿’ÂɳÈ[ï\‹w< »®p\ƒüpK¸±—L«PøÛ¼Ç¸Éë§åBžn¬ù†JA]hF7Qu›šÇÔb ÚcƒÃø¾j|†ãÒ?NHHHø8ãš$à¸ü_æ&Œ5ÊpÕ|4d5jÔ¨‘ó¾»UŸÀP€“lúª‘‹wÑ4MïZNçi ýcCÊôõÉ>Nçô“ûë¼Q£F%$Ìý%ßzmàfžÎq&ùe®uâNý÷óë4ýÀÓ3½1ÆØ{æÓÐôõÏÿ{ÊX¨ñÍ9®©æ›´ŠF ù8½IËi^N.ÿ—¹ Æ ä¬n9m6Èæú´ZoV£Mú1zU4}²Q‚Ó«_w-bþó#`çë«O[4Þš„N¯~ýOšžüÁCË¡™PÀ±¯úh2BMþèЫqMs·$)nÄT é?_=ÿׯÃMóòc÷ÚáÃ<ðýü0„v¾¾úÇñ é?_?:âðá×â0Îÿõ…×wFÌÿþÀÁƒù3|‚ƒxùïçGÀµu?Y« yÞm˜:"ã–5ß.qwêèN@hòˆØúS±#&#;?ìA¼üÀ“iúúºŸNc×Lój0ÿ×–þIOþàÀ&Ó.}á×|Ôr99îÔêÇ×]ƒ©hP µ-§ÍÙ‚Þê ÿý` éÝËÆŽMJJ3fÍdäYÁØø¡3Çv@¬ÜΓ#„Í… AüЋPh/Œ½ýƒL m|l.â^;ôÁdDÓ׿œ=¶þ¡Ú*³ 4ù£Wc1ÆÉÓ^ò÷nô8MN™á­Ï¸ëØ«´1vö—צ~tèµ8ÜÚƒw€¸Æ:láæ± “ª¿y“\Æ-Až~ðB“b1ŸåÚÁty}SåÔ?ï ¶ZÒfL´œ±c—íæçÌZ¬Ps€€ ÓÑæÜâûç½Ç;Ê1F5XKÐô˜¦w/·h²råy›;cR<7«ÁKÖŠPý±%®ü˜Wì{¹pûK³7dï~ãÅ€ï?ŸáÝBùqá¶—f™MÓ@Ó€LÅúr6”ãv•ÐHÃOŒ[¶k×±Ó/GÇQÆf(ÁZqf•¿eA³)„O–•+GÈ«…옊yùûù·g™ýUʸ¯&§í{%ÎܪlÒr0>ûÙ¸e»Zn^ÐÁ ‰€€ “BŒ<é AhF'ÁøØÛ? ÐõIiû^2¢læ b‰ Ž-5¼¦¯MËúgVn>Bž¦ÊÏ¡‚ßßÿ2 Â^øî©¼§Sÿ4%coÿ0€ëØxønO ²G?ôBØî»7o{(f†O§)$&~ ìÞ³ûø™…1qà³ÇwÓ4LŠÁ5æïmB M[‚^!-eiRN¯?ÛÿàÙÏÆ¿¹‡Þµlm¼¡ ,l9͋ѬA¶ª7¾œ„~ºAès?{Å£é=?l/°Ü hBÆ1ñ“¦÷œ8‹Î~–º‡¦MM{xû‡Àí|³erÜ™µ/m“óÑgOì¡i~Ði¡üòÜëäëÙ⌟±qZLl©6<§½þ|ºþÕ‡Ûä¯^PË ±BŠNž‚П?l—sÇÉ·ÿð'B!ó’£ s;¿ ^]A¾^7Ó¼‰–pâ¬>KØè8¯Öæ®ê‹ñâ{Òs@»ç~Z¨Ðæehþh]1÷ÓÚ²SŒ¡~’ߨgÞè¤ñ±÷ôOWæNzkӜɛ¡ ïí^cî;,`šÞûÖ”½õ\8á½Ý £“ç†ìÞ¸÷­)xå{v¯ØÓL(PÞÓ–Ì=òìÆMs¦l0WbÌ‹Kò_›4é¿Æ%ä¹o?™æ €16Uþ˜ß›´÷­½+&å„…}cïŠIøÝ?‡5Q‹÷ôOßËôÖœ)›šÐ$Asš£†|rÒ¦·ömøø÷¸O¦G'Ï Û½qÓœ)!ÏÍ€6î1%ÂRqü|²ÛoÝäs¦l„&½·{a ÅOëð7„#OÚtƒFhÂ{/Fóµm¬ù&¬×ä[Sö  +?îmt«¦åDøÜºÉ+öñÕas—è«ÃR]áf?›Wh´ ]54‚®@Ö£ZCÔAÐl|?÷ÅÔ·öÂÄ•»^ŒéY^©ühÝ>>>­ÍýLŸ>½yž?þø£ÃËÑe‚î ˜ÔFç)¤%q<~ÿý­ßl÷£[)|›êjsA@@ðÏX?u*5QA €l9J@@@@ð€|p€€€€à¥GGG¢‚®¦Ÿœœ¢‚®ACè‹«QAWpE5 =øúë¯;[êÃ?ü믿)ÝPŠ““S+ HÛ ú$úìš'í_TPPP×Hi¥ÖLD¾=ÿüóWšM›69;;)ÝSJ›á'DŸDŸDŸ]#%((¨ó¤ˆ§ ¤´Sm:𺪪ª Œ/"¥»I1'øžè“è“è³k¤ô XL?¤¡}}ú! ݛ蓀è“ÐéÞDŸDŸÝ’~0`(Õ}/‚)+»òöÛå'NøøúR••høð _´éÝ›tïV°{ÏÎ’Ò’I¦xyy7¿zùÊÅôS']\\šùˆ¥w¾s7§ºÚ,W»““sïÀžJ]·nÝÍ›7 ?ûöí»páB2\ú!è:úÉ8w6ó|F›’h ¹:i¼Ý•;¹F‡„OÄ ¶¢Ä—²o9ÙÙ˜C€8N­Ñ–”WøøxG·‹ NŸ>íççGQ4EÕ°Ù1EQ¥Üù÷¿NŸÞçÍ7…öö¨¶¶"=}ÿ„ CÖ­óž0ÁL//|éîÝ»´€~yÑ" ÝÒ/†^¶^¬–a?]õ!âPtLÌÛÿ~ûŸ’bu÷¾|åbEeE\ÜS§O>8=¹y‚‹—.Lž4õÈ߇÷Ø;~ìD‹n^YY9|سjöÌ©Žè-ˆcÈÏ—ûÝwµµŠ˜˜PJÿ[|î\öŠ©ÿzúé^½@ QM†K‹@Qpù¨æèÏ*{ÅÈÇ\ÃÌþ¼Ñç}I?™ç3ÞX²¼-1 0×êƒ]1ØT–ž"7†ŠJdE¡ûô´±‘59¹÷ȱü¼\wggw'«Õ!‹]ÝÜ0š¦hš¦Œ Ìξ²dITâ—ÈþÚ;·ušÕ²Ž‘‘}‹ŠŽ§¤L>{ÖÖßß¹y¹¯¾úê­Û·ã†%8ÚHyÍRõ}¯ž€¢(ŠŠ¢jêÔ·²®r·oÿ>ó¤Ã¥XݽïÞ½3~ÜD[»Û7o^˺ÞÏøêñG½½¼\F&Œ¾yóº£hµšÖ“I$Òö›Ûþ²û?ohTu vâÑwhdd£wáÃÈåeW/’UÂR™íä}4hÔ#d¸4k$B˜eqU wံ&OPzÓ«S=ø†ÆÉUBè‡ÐO[n;wƘ¬A?´ñ½‹¨Bú€@$ÃâdJàâàö·_æ¨^|--±D,Öh5……wïÞ5>_\VñÐS~üí“ÇIÄb«5BÓ´Iú9¿r¥—­TØ×Ûÿ¥—oÿoSÍ_[]îõøœÜsçrä 1ý(•Š7³}xÇqR©´¼¢¢£š5ÇqF%€Eíž0Fû¿Oë^Âô;[QW˹ºº‡4˜Æ@QhµP\"ñ ‹s¸æ%ûH%ôc&ÔJîäïŠü,$¿]L»×ØÔ„—ߥ%àäÚsœoJ†¦h‹¤âÎ}¨¨¨())áGcƒ~(ŠòððpsëF[Øtý‘ `Œ)þsŘ¿ÀÑ”’¢´˜òÚ€P ¥ÀÂÏ! È$"–ñôô´··7¾X—yQ"‘ŒMˆÏ¼v=~ЀöÐáq üƒ1.=qÂ)´¿žÿ&(úùÔÊ~¡.ÆœZûŽæô¡¢®"#Ã|³,‹¢)J$¢÷½ÕJâ)CúbÀü÷Ï ß@ë)÷®~Hd'ïì5jäöß…ÑCZ—bu÷–Éd;wý>yÒc¯ÓgO ‰ª7}N‹:Œe9@päïƒáíèo•†ãSgN5ñœbŒÏ_8×$—¿ŸÿØ$³¼¦˨”5"‘kFeÄÒ7?¬©®ùä“5/^k’ÌÞÞnéÒeÎ.Îï¯|c¦W¹²¦² †Ë׸!¯€?Ç/¿GéG F%%…w3]¤þ5”ʃ­;õQKì:` 3Ë÷ç茴¹ÃÞz(¢“ÆÙ+òÛ¿äüagãè©úH\¨ˆ‰„"¨ªªJ.—ëtºæW hšvvv¦:î#Š×¯_7®þoDDD;kÍJúÁCƒñß Ê»ÍÁôq†ê4g„W l-zN홇™Òz45þ纺º+W®_--)ùù÷½üý®]¾Ú'ÀßÝŹÖ66}hŠªª®¦u:–Êe®(Ž‹óŠ÷Ծʿþíå•@«Í¥R„PXhƘ¢)‘€š:´¯ñ{:Œ1`Œ1„±–a9qÇqâ, ŸÖ¥dYìR8ó3TÅŒ`˜£Ï=7êÌ…Ö¥Xݽ'Œ›øÓÏ?j4jj@äÀ½ûÿä駸¸¨¼¼lx|Çq%¥%CdÿV÷WWƒÝSP }ñ²6 LQÔ'kWYæëÔR ®.®Bà½÷ÞcY¶iŸ )ŠrttRéÚèßH?7ä5ï̃þ½ñð=Ê=¡ý¿Ÿô”zyºŸø)Z(ÔEN€ðÑ2g/¡ùîÕÒ£Ÿž3sÍY;w‘]쯯ìz$ÁeZò0÷6Gjϯ~ç±µ§„RÛ²Â}_žz:Þ;n€Ÿ«Thä›èîÉÏÏ7É= Óéòóó £èÊ•+LjÇppñâŶ§Ö¬¡Š¢ê?OLóî# (—âÅøºHwVˆ¯åÜ–‡öe“4Œ"ßÞÙaÃmmí„:22Òøjdd$Bèna‘H*9¶ÿ»n•˜Û{G{F<`ÙcÄ:EQõ<$‹YVS«„€Ù+¼¢Æ—]Û8t‚.e©âŠl@À Ìo"!Š¢8©uìÁÌ;­$ÑߟE˜ã8Þ0±¨!¶$Euç¿…ìb%{îj¥.ˆ:ÍÎéÏp¨u)Vwo;;ûаßwl{bÖl¥R50ædúñañ#Žø;qÌX–eE"ÑßG=òÐcíó6èí q|¿ª­­i=‹ƒC»>#BQ”H$jMQøžwu tjæ§¿n9¸û€—ÄOCå”ô“ø'=KÛ:6DÌ „8Žã{¢@ èX}bs:`ÔØÎVýÀ‘Ò¼÷?0%,22@ÒQÏH‹” ‰­Nàâ^%Šßzúæí’œ‰ýݽýím¥T‡´‡Ö¹§ ¹¸¸´SÜåË—y/·±ÝÃÿeYöÂ… ƒ ê:úáíª>®ªÞö¡€¦(cÊ—W"d¶¢3—kûFúc°,î@§ª¬ÃJÛAR‰$+ëZIIIó4C† Á,»ïçÿ†)3t ª.I´”~ø™ºžxxòqrt¤CBê.fغ {â;Ûßķ߃Ê}N;õ÷ŽÚškâˆpó_ôøŽÄ!¤Ö²Ãûù VcÞi‰Œ±F§·~BYfý˜”RtsOhȶ%_BúE•»Cݪ¹ µ]:ä_mJiO÷5rÌÿ}ÿ]Öõ«þnnîW®^ºtù¢­T"ß¿Ò7ÔÎξ==Á`ý°,gÎkÕcȶgÏS·… Æw³¨Ç€at‡þÊü]±7B¸u)í.FŒ<|ä`Xhxm­"~èˆËW/úô taQÁ£Ïj¯s£¢’§ƒ+²²²Zz–°°ðvJœ4iR“{bÌk™YAìô¿¹‡ÕþþýE/{wxÚ€£Ž–Áx»[†¹@«Õàëׯët:•JeÒôi¯>¦4ÕøH €P½ø÷âÝ,”öçÕŽ1µ®:…°›Rk“ÏRZ{‘Ò)XW›_\1¨ù¹ œ½\DV ())Ñét"‘H ð¼/Ša‰D‚1ÖjµüU„N§+--µš~.^¼È·sŒ±ƒƒMÓ®®®ååånnnb±ØÉÉI©Tò)Ïœ93xðàN§Ÿ!qC½½½‹‹‹ù53ÿ[ ¢ê£-®=¦V£ƒ*ììîh§«¾{ùø_E Æ€h)e ´¡­ÈÎ#11±ªªF†«êÔ,FÀ‡ÉZÊ?4oÌÕs>ǧ¿úªÓgŸ)~¿ÀÙA¹+(–]´W Ê_y1f̳_µâ8àí’ð·&ƒH½ «·~!ŽãG6K^èšJÑ(佄ß9SõÕv\SUòŸåg—­×5ÀÃÇ¿M)í.ƒƒú\˺züı¨A1"‘H"‘r,KQÔ¾¿öŽJÝþ¬Þ“€­Ÿ°°0“OapR·g˜7¶~ê¹àqãÆu6ýb  Œc·ád;#šK1 «¥°,s諨ÒKI;WÈh7!0€4¥PëñôSUQvýÆÍÚÚZŽãø¾¨P(:\Ÿœ–©Ìb(ZQÁ‰„:ˆ\µ¨@Uã«PÉí}üÜüë~½éáÃ…³mû«a* ZH)ªÁÎIàüŽMÍù»A»\e¥²ÀºÜª¾•ÚàšbÏŒªì¤Þ޽ÂïÜ¡ml,zã …vvv,Ëòccc£T*e2™P(äÈd2„@ à=UíàÒ†iž²²2www±XìããÃû]Š‹‹y7X›":ÒùV\\LQiÞ÷ÖÀ>”(ë¶;Pæl­º´N,òpEçWÙ;‡9Ùc~´Ä!FÇ(ªkêc7×\¹£q@Å*5 «êIØ"ë‡âoõž7>ÎÍÍmøâÅ'zõÒmÜèxû¶HÎX\Ñ»÷Í‘#™;W&“™ëØC†ÿ?PF¯® ÜcˆA`9ŽÏhó­±NWÛKµöæ­[Ë6 jªË>œG÷öo:™äèÝ7b ZǶ)¥ýoëcF%þï×-QQÑã°ð›·²sîæ8;9›Ü ÁÂÎú mÌqÈPTCLŽQŸÑ†‡·7À‰·~ê-Œ1âûdmm‡‡W§ÒÏ yÍê—Æ2ó‰¦é: ‹1|° ‰E|³ à­‡Úó€ÆR7×y{¤p—qôvÕ g{;Ïò;u8Í€®ºÌÛÓ³ÊcàÜ=—Ä4Fz jkkY–58ö:ÁúÑhX$­hBE.§¶G"i®§=€ À|úõcj+ÿ¸Øoú@«Û*æ´ZF2))6üïg×lˆíS¦ô’{e}y©X ½½d>yE7(þc`ìP‹¸ÇxøR©T¼çC"‘hµZ{{{•JEÓ´X,6Ø@B¡°£è‡7¤¼¼¼Œ03ã:>ôS˜_¶FápT½ùC[çZ¹òwï0šBýÊLÑ@ €Hd";G¾i„GàSGý”ª<E©ÕuÖÑ!èÀ‡ ®®®‰O>Y9yò;wt:D"‰ tÍɱȆÅóvëÊÅó-õP['…ôösÒű9ÚUU«æL¬JˆÏûÔ¾¸æDpPñéÃûÌ‘Ò~ú±³³ì?àÀö­’U©Tvvö¥W¯ŒŸõd‡xž¬®Áú ofô€Yïem:¸vïÞcdö ñãÇóµŠZs¼aíÔ§RËå–©0„0ÂÀ!Ì!`pfF‚¼díWkçIÑipÅu'_¯ìs5îhj$Wtû2r¥þ›Ï ÷¹Âö__¤öt²‘fö•H€a©TêîîÞñÖËp•õ¾|M  °T¹½]zƒµGN)–Xÿª„«1¶¥(€%ûG~ôôÖ9//ITÿO ;H¯Æ™êI/üèa'öiê,žsbYV¥R988( ¾ûÖVdÚÚÚ"„êêê$Iûé§±ïA\\\ õ+ºˆ~ c4ÝàlJ¿Å Õ°Ìž¶ÆüÑjê8FÓà¢ZwßQ®nvw²Y©”V)¬´~ ¦¯*°·····ïÕ«˲übÉ;wîXt„õn1K, =0’2F]`ŸáÉs¯+Õê¤Èây3Ä/­³»]H‡…øQM ƒ:ÇùÆÃóȱ[ªÚ+Ïžs3»ìFvîªU½–,é<ë§qLÏIaƒµ}´4aÂxƒÅcX2…1.+-ëlç[ˆŸc“ëWžyîvõ±ôKM’µG«Í¥´”ÌŠ› haá%'¦Oyà(e\¢»««F×Ç—¢€þ«àÛÛvÉ¡¶2$«(N,ˆÅb@ÜÒˆÖ®öɲÆÙEºSy´7Œ©.W·#  ŸZå>¾03qêÎçó÷m9vf%ôöŒï+”Ú‹nÈ­à>&a>€Ÿ}1&þ¸®®ŽOh'ýŽ]]]Åb1B¨¢¢ÂÅÅE"‘¸¹¹•——w©õsêtúða#(ŠÂ zÚØþFS?–ÇZ «5²cšÞ¤éo©”u¦€Ó©,®E#KŽjÆ@†Öoµk°K,¯rd…”1‘Å£Ÿztî¦ÜB¦¯{þûs…oýGzò „…ˆD¢æ%Áz ÎË“¯YS¹k—º®n|¿ˆŠ³™NÏô2x¼Z}åêµâ \¦Nõ[´H`mO0X?Àq¬¡ŽBCC fÁú¡(Z(0 c]-èÇÀ=¼ó­¨¨@©¬S©TfVS{ôÙd®eü» `ÿG“¡ƒÐ©+XÏîäj´eaᚨQvv¶,š‹¤2‘­Î^"-¦l0Ø 8Ì`___77·VÞ¦ÛE?ˆ$ Ù¤Ž{J$¥{»Œ ¼s·õå†=ßžÅ@˜,P# °“ü¿½{Éü½D€Ô;UŽQ×…ý¼ÝݯÿuéìÙìgFõ±¢#ˆD"©TÊ/à3(,ËÚØØ€F£‘J¥ èŽx¡ÄWWW‹D¢ÒÒRN§Õj===«««»zî'~è0òòrʘjhÐoC7ØÖ¼0£U‚ÙÖD„êÔˆ¶|O9cÖ1¶êŒ×ÕrDz,˲E³²tä2,Wü÷»+[òe#„æ>?W¡¨eY6ÀÏ8 —²,àRôÒ Ì{ãÛkww›’/Ó?v:“ã¶lù3&L°HŠÕµh󿂵k}ÆÕÁAääÕ5ù—¯@þ™³>þþ1¾¾ Bšƒ¯=êûÊ+Þ))VùÊØ°êãkײûÞÀÆÆÆÑÑ<<<ŒcäÚA?ˆŸ€ÌËËðAý†ª55ÕJ?Íád+B÷Tè[vö%/ßS…nx×rX¡âfQ©T––– „¢âŠò¾}‚-{Óâ8†aøãÊÊÊËSu:L&{óí·Œβ¬¯Oi©°ºªŠOÏq¬ERœ¥¥_¼õú;ßÿ‰íŵëþ:+\û LšWYYi‘ëºwÕ©Sw×­ ŸL*ž@ãÆ IDAT½«TúP‡ÿ‹/BŸ ¸•Súßÿ hºcW;» –Í^·NêICñ U1 1ö½Ñ´€âçóÚgýpîÑ;ß0≧¶¶V©Tt1ý€ïÞxòõHš6Yïo/<n{ë¨D4‡DBÊ×–  š±;M{ô‰X,¢…´@ÚÀ=%¹ö7~Ž[4sÊ¿f»vDý°˜ÓÍPB!b„œRw ‘¿:iòÒ<¬ülùZPÆ Z­¶ÁŒ«g4M½—Qß»Åb±§§g{ž(&&&33ÓxsÅ&Ã,MÓ±±±V×ÝøÓìÚå#–ùœ¦iZïŠkøc9$®jE5Ò)N‰tŠ6þ1 Ä(ll„j ¢…CXà|3Re“†a U*u``¯ÂÒ’//''Ëönà8ŽeþÆX]W§U«ù÷Œ1Ã0*•J¡P( Žaøz–a°Ñk‹Y¾u ¯xV²úË];c1ûÙ‚êü2á‹kÔ}ûö}ê©§¬‚[E‹¦Ï–Ÿ¢‚Šº:*)Éóé§e"Qam­}ddèãO: PX[+‰<Ÿ~šJJª¨«‹жüd¡é!¡D"±QËnhn¼³„B!¿7îÉôãV3ªGMmMQQáåË—ø€õÚÚÚ’’ⵟ¯äyÎ £Íb}6oKüA€»tD˜sgq['@, ›-ü«ªª*É:e£ÊwP^·¯»쨎‹ê#4og´öès«¥°h(®,¶¹±ý¡1ÔÏ?/›êÚ!Ï‹1â85…0f™ŠëRíÉg¼"™ïvÞ€J¡ ø–f@~1“_ÌX'ÂÍÍÍßß_lÆnËb±ØßßßÕµ½M×[M&,A›ÜÓJ­Õ¡Týn;zCŒ6AÀVNþ¸'ÝÚ¹ÑßWfÚú¡ ùy'ªF „ÕÕÕ&¨¶fý˜z.¾·«Õꪪê#¥§øø:;[¼³‡8¦þcÌrËq”N§R©X–e†­‡–aø-¨–õñõÍ“ç›/%qx?IðÂÝç—Õo?Ydc#™úzTf÷ÒK/©Õj+¤X7¢©oçH…BBž&Ü}é%O©Têíí½°°P¿íÔ©Yü)“ÉŸ{ÎA*­Õhtù ­VË(挡½ƒšÃôÂÅóõS¯ >7Œ±@ @€'›e奙ç3Â#úYúPþèòûï.UéZ\Aðï)®S‡Ë&÷ù|A<·{”uF¡eY¡Pèëçn>÷´SŸ7N÷Ô†«ê³ú÷•Ã:ééú…DìØ¸›¦h¡P,Pq¡®./¬¸ ¢Û‡/öüxõ‹í™g¢(ªu2pO63™¦sé§žÄÖ¡ÓélŸ¹qô%/ÎL½‰E`#ƒj±ŸÉ­á¬«Z„F«Ë/*°úõáµE‹V¯Zegk+  Å¢%¯ëB¨ +0 £RÖiÔF§cÄâÂÂBóéG§ÕèXmméyuå•À^Œ™÷Š;¥XÚ½yÄ÷ÑGåÿù«T*H. ÆGÓ¦UWWSÅq<ð–Ë/ïßïãà ¥(yMÇSOiµZÃvVWÇqü¢]‘H(ù72Ãn•…W®^bîÖ;¡ØÖÎY©fc}jâðñ&&‘É·˜j%kçèÖÙôÓüUé…R©ÌÍÍå‡3'''KÂ۩Ͽ~ø³³¢(iÃ2©Û‰‰Ú[·Ôé×vîÊÞ²û/°÷™;5´ýR\\\B¥¥¥&¿÷ÓþF;@?Qƒ¢?Zõ¾ERcc†X:š¸D•….½zû8â8Œ‹1ƘÈ `@S˜ Q4Œ±Œ ò aí¡™<—››Û|ìãj6_^Ú'ˆž²=> aôñG!egg‹Åbýfkõ0¤,(,Ôé´ V«ÀÞÁÜM9OÞùïÕ?ϬßOÈïÈkfÿ+Z,V·SŠ¥Ý›½/.´±)Æ?‰D@p‚î1æp9h2µSUUE&{ý´Æ=g‘e„~LpÏ{¼Å?óÌ3Ï<ó a#‚±ý˜àžï¾ûŽÿ¹bÙÊï¾ûî½Þ" DÐQ0Ø=$Ö€€àÞBç^õõ[±lå3Ï:)iÂ(8é ´€@Q13¿Û5SO–‘DËY&ÎþzA(EáË_,ÿt}Ä7CIÅ÷$e@÷"h3¹ŽœQü¸ÏÊxʉ0¸²HmuYqé_>35uδm—õáÝå-J3-uδeÏ|qelöísôþÿ{v}vKñßýããÓÕ¶g¦¦Î™¶ì™EÇKqý™/²Kÿøò™©Ëžù"›¬ò¹§l ¢‚žcýðÜóÍ›£`λGŽœQ<9Á297å.Þ2ÃOoYÎM¹ØØttÀ‡;_€_mÚQÞš+dÝÒ{ö·« ¶Nè·ï@ëS™¼xdü ®5·´Òv”§NsØû›ž[ôíNײ_=»ˆ®{Ã`÷ÿA¢Ÿæh¾2t ŸVÒÜ÷7ïyã5`ðÁ}õ}Âò¢–ædŸ[>}Bã+ܨ˜¯¦¯xnzÌËÌŒl!ö~ÿÜ~@Ï.JÈ4¶¨¾ZúuM#4¾€+ÀħS§¹Qv÷ó‚|ÒDî »‡pAO£ŸÑƒíœQÌy÷ˆágëdÓÜôié¼UKPõS8†ßTä‹ï}|"í/‹¿ž?ÎÛÌŒZƒEåž¹ýÙtÒîQ¹‚{mÌý<9!fô`{÷XzsS~pßß-™D–Æ^STL¿‘{¯^i~Þ{xê;^[¶Z;OÓÛÝ4ƒb=ôë‡g #gŽð–r.ßö|“³à#¿=ß¾'äÏ3À(‹l ”w®>û@*MóqØ!iˆ¨ŽyõPŠˆ™ñjúòg×›¥MQÞaCî|úÜt„ÆÇÜûÏB Š»×@æ~z,ýX޲ṧºVËŸ4èqÕ&´aîÌü.¦Ù™]3N4ù @E¾øÁwæÜGÆmÜš´qüá‹3Ÿû.¶¥ŒÝÖî±”{>MJÚM›6ýšüáWâ:'Þã³kÇ.m"…ÎûaÝLŠâ¯î‚©W‚îƒÎÚõ€w»('í…¿L¦!Û´ÝgÏ7ŒÏ~š”””ôéYK\Átö†§Öfz$¸ß@@Ey¬ùn´ð½>ô€¿nÝ`á§õsnÊyW[S‹§1”‚KϽü¨±ÿíøàY Ôå?ûM¢‚v⟽֭Êãââb–óíáB, x3JÁ%Ò ZǤ¹«¤î¡ _~•¨‚€ xfÍ1MYöOÎé>Eê¬=ß&Í ÚóMŽ“ƒäugM¦yîåGI› h…{æ?ÿ,Uªˆ6 ¨¨Q±2wˆЮŽ6ðÔÆ=¾ô›îÃ@B?A}ýrnÊ'Í âg€J2¯6O³bÙJ  #h•{ Êëˆ*špOemݵ³ÍL—„vu´)­VÀ°Äºu4ýÔ‡ëý}ÎdÊÿü§ù¹ ¤q€Ô=°ÑL›« ¢1Óf^D‰8°a)¢F‚†ÊZuyµòú¹CI“f†ú·n“_up϶°˜Dpqw®G?¦¦å÷](4kÞè^ 3íVåì¡qãg¿9ëéòJÎ²Š¡an¾žt³€iŽãž{º[Prâz9ÊÈhÕ5È8~¦’EN!ûw.´ {ýÜ¡‘㦻:ÈÊk4m¦wu…Å$^?w(näd„1OBýBƒ}ù“î‰ ìFª%Ae÷.v~s`uu^®Á‰„2zpŒ±F£a .ˆ{æcìåêÈêr±à~iiïÜÊ-¬¨ÕèXJ ”J¥‘!]#ý܉3¯®˜9@&¸¾mÏ…½ã¼[d ãÇN«‘é>ž4r(M–9™Ýé½\ì8dîhéáb½!*¹{AØÝ ”—SrãêÝâ‚ dJ¿ö6}Âý#cú†ØóGÕÆÝEÇ0¸†Z­Vwj#¾ü3÷ Õ°§Ö1 -½/Þf0Ò^ʼ5fâÀ×#<ÜíDÃTT*oç•~27²o‡1Ça€2§Êp ƒÜ‰ãg>{÷aO¡é›<¼ô#F 10™âîCÐõÜ0<þyðLInHÓü Ÿw?þé^ô³ÿSÅ­$PԪΟÎ>:ÛË×uüt²ANOjÜ[´:†ã8„~ÔjµîÔFêÜ·Âù§U·N@ŸáB¡8ŽÓêÉýaLç]¾:lö¤'zË€cXL‹¼½\¼<Wm½Ü¯?æ óòä¥Õ*-+I\Ü=B{{ñ,PtãF^MFÇrDb©«»Gh '?ìŸOϨb‘CP¨SmAaeC@¿H™€FEùùù%U*-´ÈÎÞ>&²±–µ%wþÎQ"Zìåêkoу:vº¹¸–JÞÊCõtë‡2î{\·x,\½cRâ0“g ¡Ÿ6±ïøþ *<¡ùÕóYÇøƒ”G_$tO·~ 1ýèBÇÕ¿ sšs?R'?ã^8ÇXG_ø½|Ž¿ŠÒêtâû}0ºS‹? ”@ƯÞ;WEQàèì8(Ü7<ÈcÌ];eàˆ/ÌòñqkëêΟ¿õõá£BÊnݹ ÈÙÝA"¡¡¶VyþâÍoŽåE ¸|:ãµ3È7v½:lÈ„p×òS—žó°«Îé?,rî£Cýœ¥X§½›_öþo×8Z4e\¿yŠõáC§ÉCý W}í­:0æÕióÝÄšÚ[O}t¿úæÛ™g²äBhñ¡z<5·~x¬[4,²÷'­¯cJ³ïœWi”MØÚØO—äIèûËúÑj9Ž3¦êàÛ’×ok?ñë·/iµZÛûÃú¡(¤ÅXDQŽN~NÊF¾~»<$Èa,¿zqð#ç„ÛrLÝù¬"Þ^#GFõóºøüo…žjePˆ›@Q{¡ ÄÒ}ÝFŠéE\‘©0 AcGô1ÅÕjD ˜ŠCfMz6Üj*jÊaŸ>þu5'múHÞI£ûÊš¢¤bÛ‰SG_X¹½Ôk ›°>N„‚è˜( ¸äüE¶ž<9ÚuXŒÿå³çMŠvü„G„OIi”)>533Õ7¤îu¦§E/€õ™„rÚÃÿÔèôÖ˲J¥¨‡~oNÒ _ŒjkE"Ѻ­G]d³ÆÆ2 £Ñi›dï©°ó )>vìµ[¾ãúDôrëåbÙ¯wÿˆ^?}¶ã8'²óŠáß|-K^d”+ÁU´:÷zôà˜·F¸KÆk¡Øs*T¢èÜÅR‡à¨^¶Úê[ù¶}ù“Ÿ+4h „¢X‰l £\Á™+µ®}Ä¥7ó,¦%NB¶„ÑÙ5 @äŒAŒuLC Wƒ¸š[y²è–J~IÔ«¥KŸ+uÎv¢mýèÃ:®•dͯRÕ {D'ÒÏ=üñ‘3 €s–2PK8vüHxD8d]Ë€Æ Ô2ä[R¦­º ÉõIzZô¡ÄA 'å[R¦­ºJÓ3Öe¤Æ7ØRõ[²có,¿FV¿E‹B𠨰5y}f¼I;ÉXPÃg4*LÓãô´èCAKn¬YsµqîGç›F«åç~8Ž[ñí¡@`++´¯¢3ØñÚá˜ÿW³è‹mÎ=8,\£Õ¢û&Ž¿†¶·©Vþ¶ÿ²R©Ú»|øêh”äøûïJ{/½¹íïëÆYÊb –Œ €“G.œ«úÍéXošèU§*e„2aŒL €1FX_GúÄÚJN ¡5دÍkÁx¯ Øø âŒ,à&%/¥è–.•‰œTÏ®wQ½«“«Á9{éõó@q1õF)MMSŒÙûôôúṇß'{λGŽœQ¯Ñq@Ñ©ÔÞÞÁ×Û·Ú›9 Nd2È켜´Óߨ£(aÔÀpøøÝ­ Ûú‡„ºŠë5I†ô½yùö²¿Ïkt,ÐB™­mhpÕ81¸ö_¹ò·º¦yàqëóÓµ-rÔÏcÜ7²¿)q-–œhñRO¯uCä›aî§ÿãŸ&ÏÀýùö䄘#gŽÔS‘ehÅùÖIˆO](::¶!"À/aâccš‘œ¼uA4¬ÏL•¶$eZt,M÷[´$¹Á‰×p‹Ìõi±Æ®áßP`FbÛ‚âësBZtt4D.Ù±>yšÁØJž©±±WRÞ/h2‡L Äg/^94fDÿÀýMfáòÏ^¼F Ä÷O胫»ƒ«{ËÚ£]<}\<}šp;°s÷‰po8?ȹ!cpÿ~¦jröôq6ºï:k’¸¯é¼ p wnœ q-–¼ÕK=ßú)®T"³÷|+­T@wÝõÀ¬m›»kµ)Xú¡nxeî[~~¾Í¯ïæßJ1Ú»—Ó}³æ´U÷]÷ÜD°#Àïx}§¨Òødaþõ"ù EME›Ùí]½ýB|üÈ“ ‡ÁV& é¿þÜêïäh×fúê¥üzú¸)É ‹êÔú²‚3ýï_“"þÙgyüñǻ㖣­8ß iÈ®=M¸ÕÛ/ÌÛ/Ìêì=J•ÆF*Nš4óàžmró²$Mš©Õ±ªf+fÍšEè§)¯Ù›¡çy#ç„zêÈÞŒÑcïŠOͼ0!‚f¨Sk]m§>ø¨™éµ [§Ö6>G@êªMÿø³t:ý<ü@ˆùŽ;ž{üü|ùŸ&#ß~ùïï®~GöfÌž?…´EB?÷*ª•íÉÎO ™œgéJ¼ÿúÜîeýŒž{do†‡«”VÈoÞh¤å»ù·€¿:zb,i…=aöå¿ï;Fô@@Ðy]¬;£{ÑO@'Ï+j‰¥ÈÜOÏÆ=ZYQ- Ú èâ @žÿõ¦#„~šÚ„À q6i)=݆~L9úÛðÝ97 Oì¾[Y^'sàB¹ÆÄ‡ÛÛÛ‘@@@@pß[?‰:¥ª(·º$O­Uƒ²BPv§ÚÑ9/*.‚´‚ôýðùy…WÏüýGžVݰ,úäÞÊ«ÿ)Ôo9J¾˜@`Vó+QA÷Äâ9úù€1þpågGû'à IDATîž®cÇ.«Ü÷¥üùaý{…Ûõõo–£É÷~Ìßó¦;!Ëÿør‚横ªrvv®ªªêžÅë±Î7Œñ‡+×zûz$Y^V%•Ê"Fs0%(ar_SÜcr@OK7È·¤DGGG§¥È·¤ÄÆÆÆÆÆFG§Ô›MÛè7În” ä[R¢£cccÒ¥§EGÇÆÆ¦lÙÒHVÓ˜Èk^ˆ]N¬Ÿ®ÅGï~îëï=bd|U¥B,–Èó Cûõ¾~ân” Ã-ÁÖ©Kvdfúñ¬°*d]æfƒ1,s=˜¶<ŒsÕ;¶¤¤n‘ÇÏòHO[ë33âA¾%e„$¶(½yÞôÍæ–€€€€ÐåØw¡°¥K­¬H}çÍ{ûOZ^Zeï`÷N¾·¯«_€ÏÒÏBZåž­ c·CÃÜ1’×7|Â4>uý¡ØØØ]u¦`œ+?çòåíÆ®@hF>€ñLýfÍK^ÕÊ÷¼›ç5¿ „~,‡»¬|s•¨&|øˆþe%•ŽŽŽwnæöõíÓ7H$µ•5ÙÜÁ<>5##eKJtÊÝ6>¬måýÍÉkeîU`\¸máS²ùØÐù?¬Kö¡:ôþg׎]º ¦~xà•8ʺ;7^él ?‚{=mîçÝ·V kÂÆÍìàç<{{ûy¡§Ÿ¿¯PØáDë7kóúU›Ížk‰OLÞz¨Qjÿ Hý™ô´[Î߸+ù–ÃÉæy­+Ã=Œm Ÿú2+|Þæýýõ×Ëáýµg»Ù¶¤,€õ™™„îuëÇ"|øÎZº2tìCý3þÎû¾3ñ©^½d2YG¿rê_rg¬Ïˆç-‘õ‡¢£ÓZáåÅÒtý«±ß¬´%)Ó¢ciºß¢%É£O• iÑÑѹdÇúäi‡ZÈkeî]äe@p€7Eù$ñj«¡É¼áÂÛ1»iý«Õä÷÷¿G57ÂÒ¥À§<ûiÒòݼ±2ùƒ¿†ëm[¸|C6o`ÍôÎ0ß$ʹœœhBõò-)ÓÖ\¥ÛCÍOê+´ñ™C‰;‚6L[u•¦û-úÝ`㦧E/ÜNÀŒuëÈF`ºÃçæ*ÊË*ÊË–¼qùDZ)ì=_€­E—åÝ´îÇo?<~æpΆ•o|ïèê%{nݼSWW‡ï œ|/꽓˜cŒΟ‡1æ›ee=ö½õø×W**°ïͨ¨¨Ç¿Þ÷õãQQQoî3¾TqåëÇ£¢¢¢ÞÜWQQQ±ïͨ¨˜˜Cš+_?n|7C‚Ç¿¾¢Ïøæ>þ$TÙ2ô'ÿ§ÙQ³Êoô,ù?ÍÖ׫Q 7¯ì“ïésæÿ4;ª!CTó³ù?Í6È8ù^Ti6-ƒo™ =¢¼¬¢¼ìÒ…L¾‹ý³èQÖ .0fd¯Œ¿s…"AU…bÚ³}lm¥666ä5§g îÕƒïCÒòÝÙRÆidèßÁ±ÁY·ó q¬ÁLñÈ2º B“?|%–·™ÒgLåÍ)ã)3½‚²vÏxå•W|Õ|wlf–”èhXR?'?¶‚Òê¨ ¥§ÆÇ…œìéC[“çeú„Í'ƒ†Ð¿À½q,?¶&¦ùlâä­‡HÛ °Ýa1PÏ™û)º«:w4—¦i— ÚÄǼ½}=½¼½îâǧ’Ù3hÿþÍóBMï^ºp[aýÜMï^>~ùnš†¬¼Þ#W¸õŤ¤ñüIÓ(ÈËêŒ2úÍÚœ™9/gZÊ9²¸æA~Ö­pÿüœË!~¤-ôôëcT^RëQç4pP€|%³‚¢|f®û0oìÒ]YyÞà(k²ñÜ Æ…ÛÞÿ2 ÂçoNÉ{jé.Ówò oluä»Dbò‚Cù~à™¼ns“ ÿ HR“=ÅúI›¿QœsPåSsŠM¸§çáÓ·êÍŒã»iÂ|(Ê'~L8MïÞ¼­¨™eÜıքÆâÇ„ÜÎ+jýæì§IIIIŸZe—~hkd?€_ÂÄÍBýCšÄ1Æ'&oݰ…wܰÕdƒQÊC »b,ØJZ±~þYxD”•^õxîÅ'HöT¼²Ž›Í¯ª ÷ú™üOòïç%-ß2nԿŽòáÔÝËw/{;<èìÝKÇ‚!°ÍŸä/>ÌKZž2~CãÈ7ëߢ£ýèÃÔüfmNL‹Ž]Øh1P|ꎻ)ѱ i£3ëEO‹]ßiÍ kÈ 3Ö‘¹‚{Ù™åe°æ»mÐÂΉíùèuWä¥È§,A7[.Ó/-xáóõ_UV”E߆ìêo~%[ŽtC¤®Ú”¶äyC”FÈó¿Þ´éóõ_ýÃÜCQ=eî§Û©Ýæ}ƒP5A·@ÏÜr´¶¦®¼HÁéPÈ@ß“®¹yÙp9»:xú¸’*' ôÓ)(¸S©¨ÖðÇY™Àj1£cî–—€—¯Ûk¹}ÃHÝt ªªªÈGçîkúÉ»YÑ+Äg\¼¤R{/_7ØöëŸo¼õ©{‚ŽÂâ9;;;“é‚û—~îÞ,Õ(Yž{jkù¹………¥4E½¸ìQCšßùræÃSHÅt¸õC”@@pÿÒOU™R&“@m­òêååeUµc¼rñFW7…¶ ˜2MžSfgoãíçÖìéiÑ ÀxÏNù–”i9óÌÙ =-vávþ°ó7Û7l³OöÛ' ¸WÑ}—þ¸ïܯ;oÌy÷ÈûΙiúŽ•Š:¥B¥ÕêF# PS£Xúö| iÊÆFvçfAK÷Ñ/ÿãÙçØÞËfÒÁX—‘aífûÆØ& ôórÏ‘3 þøÈ…9 T§ÐŽml¤,ËrGQ”€¦1Â,ìyç‡éL¡PP^ZÝÂm’“CöÓóOúæœd,ß’’bà¤ô´è†ziÃÖäõ&)'=-::666º]ÒÓ¢ÓÒå[R¢£ëOò;ío_Ðð³y‚&71ù–”èèØØØúDÍïC@@@@è§-ðÜóÍ›£¿ys´ágë`´\ôð`þX­Ò0 + Ç!Š¢€¢X†3$žþØè–2qïæto9”’”߬y†oº¥Úš<¯ñÇEó[øÐ ¤§é¿?–¹4PÀÖ©–™™¹#hCtZ:ħf®ŸÑÈ_WŸ 35¾Å›4#ŸÔ½wdfü¾èFƒõÖè>„~¬Á¾ …Mþ5O“yâ6 e4©„¢iŠ¢hš‰EEU«JÂÀr܆U-ߦK~ìvpB=Íħ,á·îJ?tcIŠ™ƒyú!Ãî]vê2ÞEß´¶¾áëÙ-ݤ êwV~pÍåË9ù&îC@@@нÐMCF¶?rF1çÝ#†Ÿmî¾ãàX”«w©•V:9Ù«êÔ¡€¢(…¶œ?1ª©®+/«’ÙŠ UþÙœ¶ùFpÊ,È7>—.¿»á†ác+ðßÌÖ¡åŸCòº båë§}xrBÌèÁöîyrBL›YXõ;ïD Ïι¦Ð–+uîq°w (Z¥ÒÔÖ(ü=¡uþÙzcb‚1ÏøÍšR÷Bã³õ—’·šð‹Y+F6Œ…0ó&­YFÄú±ŒŽœ9˜“ÞÆ^RSS(Ðb‰˜Ñâ1£îäÞ­ª¬Òhuv¶¶ÞÞÞQUWÕ&Núîóaý[»—͙߬³šð! q³)oV|jæú´ØØXþWãmŒ£cé6·1榙 ×6ó&“3ˆ€€ »£[ïxÍ;ßøèƒV‚â·½~%·(·*qjTVfBóHQÔT×ÞÉÉçX.0ÄsDb”Å¥‘oIÙ¸ù^ØëuÕq¯ìxmæ.;‹ç±”—حɱt‰˜¸—ÄMOFv¬›g3Ö©u.%¡¤¤„gÿ…›q¶ N‚CN^+ĤɱËÏBKIBIIÉPÆ™àòƒ W‡Ÿ/÷»¿œJtw¶Î vö?~ùå—õõLgA¥‰BZJ×CA]ÝÁƒ«c(ŠSeAcÜžú:UÖIU¥É~Jõ gu#l¨«+€õiá±õaU}áRûÅ@ŠÉâ Q×=ºFˆ“C«žŒÂXYÑ7W§.´ŽSeÁ»ó ëë—@µG~žÝ8Û‡?­ôg”í‰k,¨4¢/U…í)“‹¸œÕ°d(ã€Ø˜({?è•#>‘ŸßúG¤bÒä®x÷Ÿ4ͲK—ˆ¨˜Ç_T­È­ÜSÆùIÝ­­5LrË.íñ¦T÷9ƒR™Œ`€nEÜ,‹ƒ)C¦k„¸ ÁzW=±ªÞ\Ã.ÈÚS&µŠ·ƒuÝ­©K¤°$š½gÞà8Ü"ØÛ(’—1%ÉÉÉK êV‹l#Ƶ6¯µÙ«q@&–üÝzxúÀ·êÖè™ì÷€WúY/K„„-:ÙÙ1"»9îv»,X_šh™CEòíõa%‰¥úƒ«¹=˜Ô‚:áÍ÷9?§"îõgo7„uBÜã–YÚeOFz¬,mAiâ^}†µ§ƒ[çúë)0ÎnÚåÛØÓy’e„… dŒ$¸ø@ˆ'Wû?»÷”Ú¦¨Û±ùó¯¾8rñ§‹ô—Ë/éëgÝ_NÒ/’ÅÁ»ÎË5Ž+rÒ%©ÕÍ-„PTÌ’Ôêf½ë~xžÓ©È`÷*"YÜÉæÒæ“q2EyQÿ°Çj §« ¹eC¡Ö-rúf‡Å7}éz¡å8¡qvZ£sh…˜4q{ê7@A)oĬí.BUBùÕ5–K¿ôœ¾ð}篗~€³§U]øîx' ÒgfÝ_žÓÉ$'Û6ÿ¹)~Crrbb3¤V¯O,=Â)IHHNÞ…–{péªBXŸÈÄÀzïÔâaN7ElÓîªBà=°óÂæÕÔÔØ¦íAëÁ±²ëXn¥‰‡Ö)J”ÁÌ«`’›!•—yCrró’ÂT!)峫þó[9Ò­É]Ñ·!CD‰26„©sm‡4$&o¨Ie2Dåü¤2øB ŒáS†ƒ‹oƒ}cº:M=§®ß{’˜~?MdÎ~5¿@^¤‡Œ£SÒÎpŸçÀþJü%ÿU+ÒR’¨ ód7k„VLÆåo‰ø§¼þfo;3cÆŒIøÃ=ïø±‡¾xñ— IÓ.|×›oнtÇ7÷ìÈU+ÛOSYvÁ‹{V‰ð¤qÊÏ ¬ÌO{}¥öw7 hzòœw¨­Þ‡ƒàñ➥^íWä–‹òƒ8RºùýÙÑç…Z„(2mVм;~­SJs«€wâõ¨¡SJâñXk_ƒ«j8VÊϨ@)Ü´í÷sf&&?x.æü:åߛ:wÑõóC%!»-O«÷𢨂 |òÍö”‡ÌNHºÿÜÙÞ  É·ûýù©S§ž:qú¦!7Ï ôä¸x™ÂJ‰Rgñ ä¾›±‡Ó´SY™B¯gÔŒ„éЪücw AÑßìxãµ­“~\˜”±¸þãÎ)S¦tM¡sÄ¡!.Ü„0v´EG„ZÜMƒÝöˆÛ]ƒFïZ0B#¢-9uÊlÍ`*èÔ«âmF0ª[¢sYq¦ª<²H…û=‚ ÷3¾^JŸ_øÈbýÿœ¨ûøTÊŠ¹á7…Mž<ÙƒÒ܆<ͲQùZ•Øâ3”7H$Rš¶=Š=XŠwEœ©ÌgÒ%RšŽÊË—[VäÜxa ç|5‰¢óµåòôe-¦Àòr½l ‹·2öÐÀrTÌÎíü}·ÈÐÔEÑÔÅ^öŸ ƒE³¯½öÚ ÷¡ÎcÓþw肌/ÆÚ¡;¸øf!àçð;ïŸûÍaÓ¤À€Ÿ.üœöÌÍ×]4µAdL€‹oz:~ù_8MÓô´ð w$‰‚CæL™2e‚Ú*SpÍ AƒÞÕ-%ì¹ïš4£;4|Îm·/ž¸Úƒ ‚ÞϘAùbK™§Gô®xîI Aô~®³o9Ïç ö ‚ ÷sÕ ¨ç¹8ȳõƒO'°uçXOlcÏíFùa08.2ʬ|zbzÕïïþÈŒue/‚òƒ c—ÀE”ÁEP~œøCN±WùßÚž‡!2ÖgäI”ç™4õaWÓb£¯¦±ÊÏb  µ\ ø??dâ9Þæ“~V~õ÷áû.èý ãU~ ó•EóÅ@±×ùíòåß.ÿzôé¶lʾt*jT3 PòÕŒÞT…ÿyèGœ œ¶ ÃxãÕakvMs°äÍäLJ38Êâ×òà ÏO—~¼p¶«ïÕ`úÇöBÐuS.\#¾x÷ó×OŸ=uútåı) h2fZõÇØT )ÊPïŒkðR’­¡“:=Ñ!™Â`Px-ZÈØ“ŸIô¨æ÷aWÇTç‘qÇXü®ôœëyõÛM…çwÜØ«¿qòåë® €¾™WNM}«àRAAïÙ³® Š3³xitª¢È¬L1€NiW F5#‘H¥R¥Ž{c—nycT3¼ˆÙ<9ˆ—ó­z, R©T*•Z«á5j÷ˆÅ­©Êæ5h_vPéRêŒjF"±äwêŒ@ â;úúYÏ/¸ÒwúÃÿX¿̇f¯jôºÒwè ‰D"y³©Ïìд·]¦±]=“µ}Èö"Íû)ÿþ½À>Ëüø†·[uáÌõW®P@@w-\©gεka÷nWÃ@Àj^ëYYQ›¢5¨@Í(ÔFYflJ›J2›jÑ4tA&æ|&爞Fu…Fž¥ªG :UQd™A剃BLa(‡‡Æ‹²V4ÙŠ|­Á îŒs âSù1{7s©ŸY¾íØâ—?ÛõhEˆñ³ç šw®¿›±-}»¤ßÌöÙWëmW‡o,î³yû,/n^75*&{b;21å狯M®þ$ ÈL™ƒúƒ}óqMŽvõ¡C“gͺxá<,…‹%%S¿?óÓ¬YnNµé€ú@WûÑ£UˤÅ,»¼ @fџЦZÈ+Ë«­h2fÆ:©&WZQyû ±`=b)ʤRé6‡†PV^>°ÃåÜçd<ÉÏÉcp³hÛg¦DËÞ_,éBˆ±2ë‘w[i–MßÜ´î.Š"äðÛ±«j¬„K‹åÝmI¬†e›‹a]p9l¹çÕ4°lzá_`È©½Ïæ—}˲·äìÝ)¡|%?Gþüv+M§­•°¤ˆÍä+DçÆºœ—¿{×¾óÀ7ssÓºèv1¢üøü !Ö\aT@4üñÞW†Ù¾}{XXEQÓ Þ€©ƒLæL~…B­ë¨mËW*&n»I^›Ò¦PëRj!E)‹… E“œ|®ˆNÉð¶•ê™B¯gÔŒ„éЪ¼õ7†SV°3)ˆß¼;YC– 55Úu±'^øhçò)²eë#ÛE½°%©qméºÍÔ­¹àî—¾Ò½@º÷¾üdiuÞfYãZ)@ÓÚuÅu_Ýf8ýÙ³ë´Q¶ÚˆùpMkëÍŸ|¾§ùå'K·ï9œ¾æž!tuøÆrø¯Z`!]&!}ýtgsçMŸ=Ç7Ì s1B,Çœô÷“>ÿVŸ±pBÒ˜þÙéŒ3JKKW®\yùòåÚÚÚ    ‰cS`YnqTÞ>±›¥9Ìn €L¡ì`”:•B&T¥¶LUy»D¥Ëä¦þ6n1OÍdk@?X·íËz1Y9uÆU÷ñáýܾúÐF¸ocMëû+–¼Ç¦mªÏ¿“¢9ÜT 7KBÃŽŸ<ÝÙl½'sBÃŽ1›Ù>`Í,›¶iULŸ™%Äø·ƒÇ¶¸S–(–M{bÙ}p¼ú«Ã«b|âýØVÃÌ®ÝAë:/n'3FìF¼9?A0°õÕ¤`íÊqpêA``àìÙ³/]ºä™ü€86%ªRbÅÂë\‰”¦mO0ó3‹Ã#YV¸ E ╜‡âTÏÀCÒËËõ2®)(% DçkËåé BQº(ëýâ½QÎ)È8’Ÿ>3{ëKMšÜîê—ÿmwÛ×ræVl{d€¦lL>4 ­í]fvEÓ§ëžzç;šš–› -ëKÜ KHWG«Ý„k[€rÈì#ù±ë­ã_Ý[g÷ZØL‡› îšó+z{{Ñû„yóæUTTÍœ9ÓÓ2âL•!Ón~xðÚö4³Pf™Â`pšÛùm¼s¨Ç©Z‡DK1^mm –uÝX¥Î5 Z'rõè7“!奼½õôÒ5õÇOu™ÉL Yìñ‡5kîàæMúˆ±¦ð6¸åéÏt=»¦H¿™ôX·7H?„„„,8ny „ð2ð2¡«Ã7஘…ú/ªµäEßé L݃Xg÷ÚÙLë'vƒƒø–±øàuû #ÿúíòãù_ñ“CÆü°ž_ðÞªOºûÍýf¶¿å«š†sg›Y3|{ì-4ý—½UF^þ®Îã1g6K¬7õýf»×\A€“]Ý­fBW‡i,w-Îȉ`ÙúÿzAk4s)úm[ôýfO¬³½v6ÓňÙ¾½ˆ·ÒR’PÒBÆ¢÷£~»?!d"a™ñ<æéÕ°1-®¦€ÿbñ–ŒYÌ„ÌJ+_Ó·u׊'vË.]»ÿ•Û¨˜§7¦6nª)Lk¿yÐ'j Ó _,7S²,1S³ÒÊ×vÆm]™ð!Ë.µË`YŒ–%Cèêð˜#߸?t×Ãë>\™ð!<ðZýsXÌ:^çÍ”£™k÷¿r›ÓˆÝj_ñ‹NªJ€€Î€âÿ®ûQ_|mÂl24^Ê~áò÷Îÿp(:`\Û²õƒO3Ìóü_·ž¼}Ñ<ŸtÕÛ¦Õ{?q7畱ã g{ÇŸçÁš ÛصsÇŽ×ß,ð•÷SšØ¼dOØ¿,~. Èèâíº×y†ß4.R!œ€òƒ £Œ·ëQÃ_»j]SGÆ(?2Ê.…—3rëw㥫£Q‚ò3\¶îvŸáåõOãè#èý86Ž5ô~1'?Û wg>“:hT Ä/äÇŸ¶C̸÷ƒøP~v•ìË|&uöìßsoÏœ9ûÜsÏ~ðÁ.î_[zæ3©¨@ˆ?àWëQ¸ø†øØûá4&==222222jjþÂý[YY Z­Ö¦C2±©ÿ\‹Æ"EŬ>3Šò'ŽŸf˜§Tª?qzÇaž:qüôü…s…ÊñfÕLzmŠÖúÚ>޶kœcƒZUcÙ¨ü¡(í®rqÇxÿ¥‹Œ3ï‡ãÖ¨;‹·Üée!qxäÑ.FMWû1úpQºÚFÆC8äez…̨fÒ•á(‚ø=9àÂü…sO?=„‚üxqË—Ë5í]b^ìÇžÈüIDAT8›+c;ËY§”4Äk#*Ò‹Ž‚|»!ÞÞíi[³?k %:"Ôæe¥£ik7»Jx§D;7g)kŸ A]U/Å€ ÜòZzzzñ–2È[›Ëÿ+—(LhDt[‡B;Ú¢#²"¢+¬¯N ²¡Ü —蔥Î:ÿóƒOëmÑže0(tJÐäJ«Ø¨<ëÚ›`8jk%F5#Q‚A!Ð)+"´½Û% A-ïÇÛ€Ùœ÷c“wzã€eù-¼R.©1¼R1ð¼ »˜jüàÓj¦”ÖØØ`Y|P,ÁpÔÖJÄá‘Ðι> šHÇ€ÝÙAÑ‘Ÿ!œ7:tï‡%h"㜩„TÀšÚÚ裑VY±¯Ø¦XŽAćŒV¼Ÿì®(/]UUÅmÓð_ÈâåšÕ3‘Ç»Ðy–Jeˆo(uvɯ޶!²Öã³!‚ £ãý òÐcÙ]QAeñÞ{?ö°í#gÛ‡‘vë½X¢]W¬ÙŸ É•V/šµ‡á¨1j5‚ È(áQ¼¯ØU²ïÙÕËÀý“oóÎÅSAøñ~Y|ïÇÆŒ3ÆÞ“o‚ ˆ0Zò“ÝUdžòä‚XïÑpåÇk†³÷ƒ /e¿€ƒ€ (?Þ1-Œå6uê^‚$K¢Vëxá¶ÂÝâùSñ@œy§ü=7Uíàv({{{m‰Ó§O·½åNqÿ£î­|Š”!ÈD“¹‚ (?È„Ææ÷àÞ‚ ü ú=‚ ü ÜûA”AA”ÄÀ½AùAô{AùAüÜûA”AA”ÄÀ½AùAô{AùAüÜûA”AAA«ü?êcU°= (IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/includecontroller.png0000644000175000017500000001137612032647206024614 0ustar ebourgebourg‰PNG  IHDR¡‚`…à¹sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ) ¨ájV~IDATxÚíÝopg~ðOÕ}©¹\S!…s£Ô2Inæ¬"'ãt,w¦ÄIDR××ÓлzK7ÒÕnšNïz#Lâä¤F¥×¤=F×Qœ'ç#Hrr–­$0~s“2'Clü.zy3<Û ha—$üGèû^˜‡ÝgŸ]àçß³‹ö§ûòË/  I1@Œ@Œ@Œ@Œ@Œ@Œĸ;Wfg]C!å0JÝH'‰¨ÓÐFU½â†KÎ$ªîu‚L£ó~;çÒ8å;˘ ¦äíU·¢u44w¶l[ø(l*+™ô™Ìv΋™×R„8ïr{ôŠk*É×ìh1j˜FýŠmÙ]m²a¬¤on$a̻虹»8/‹˜•öZë@u ÍÎçµlEs„Z;+ߨªéšçvÿ¨Is­Œ©fÕ“¯|zeŠOˆ«.ßn0%WÒ7©G_Û°Û DÉúöZí@M+c½ÖVªgÐv¶Â¶ þWƒªÑDÝͳ!1âutÅy—{vÚ©×únëtzC'±T*à;Û«dÛº™^¹Uyã[QÝYü^ ñsÕÊѤÇì ÆRÁš~tƘ°”ÈÏLÃÖÁ ÔU˜®wuF~5cý„½r Ò¬Pùk81¶L&ÈTÖ•tò‹æz¦~U¦ÉÊ×¾•ºvnagõÛ#A6«âÜîŸWNóÚ F¢—ãÜèžu¥=Ź›Éì A`‚·¿0?ã‡#‰È#W$’/Àí~µsR:½sÚŸ¶y…’éž´ ÙÕºbÚ×a•ûÂR© ËPßÙJ®c+•vÖ„-ÀmË㤌ct~v¨‹W[L?àu³6ÎíþùéÒSiºž±hhh}»o~Ô\¹æýµœûÏ÷ • ¬˺’Æ£=®´/ZKnf+õì,¨PÏÇ Æ Æ Æ Æ ÆbbÀ–Rþ·\çÏŸÇA€-íðáë««ê1NzǶ¨¹¹9­;K§JêBét=c ±XL*¼ñLÉ+·{–ÌR{*è²úÈ;ë6R2àËÊÄÔ` iò )♪·ÜTøØ8M\¹’xûŸèTh9ÿ?xuèJ"‘¸R[Št}μÿ\"‘H$}‹ÇÂëíãù~fè˜J¬X^ ;ûÔ#ܱÏNœK$çN|&[±l¨½ãWfžâOͬ2¿€4ì (¯:È’® Ž<ŽL£¡¡.&xå'æÖµ:KòE—Û … ÇmÒ2ÉôBáw¢NƒÉÐIRÝ>ÓØÂÂÂÂXmÓaçLèpuìØY-ôTŠÏÓwöuHOzÇgœ²öûï“ZûœáÅÚÏè-†CÒ ÉVTµÂ¾hu¢2xµAÊ»€rU~Ü6àº0ðŒf]ëÓÕLxd0bŒÊË?×S¥J€ŒIO[wö‹«¿ÛÙסÚþ»·ž4½,Ejzªïn|§¶Ä ¶ZŒÓéôÓþ´Õð…ŒÔi&ÅÌY_ IFwÈ•ôDêØV»ÁH<©^uCî»ÿ›Ô ~œÓ!¹^oŸóØâòxïœ V$Ô;W͇¹žÑY·1™,Tz¾‘NQ§¡­¾-étúÞýFÆ„ÐÙ|qùz®9¨êرScbùÙµëDt}ÎU<ïV2Ç[ž(¶wìûÎgÚÔÞ>gø˜ìR‡¬98'm&XmÞ,G½ï:©>HØHŒ£|ÍyÇzÈó;<ÖЊ‘<Ö©ƒ”ÞyÚgç© «xiu“£ï?wPõŠdïø•¡«»»»Çi¢xÞm}y“É´Ø·ÞÞq8Ô·Ø­õÛ·Þñ+3;_~²ü÷q½ã3;O4™LOíœÑʱ¤Õ/(ÔØIõA€2|•Õ>þ¼üÖKwÊK¯¾‰¿É€ºŒŸúùĉ£sssò †¿å€m?WØ¢îÞûÇ­®®âN™Ðœ1îø‘gZ[[qJš9ÃÛ›„óq€€€pû´lŸ]U%äqˆq[n®*Šñ)«G`Œˆ8ïrÏN;õ¨_M‘lj™ðˆÕ!‡/Åbóó^òMÝöÚƒUlút°]c\âL Řß¿g¯N§wž^/¼ŸÌ—æ²LÆËÃMåÒ\+ß%_1îïï—.¦™ò{ØI½åÇf™üˆ„ €§’-Eˆs»Ù¤òj&<ì˜ÝúìLð‡3ëÝU+ÍE›(ßŘp¼ÑБ’3 ®gtÞoçœóüýÓE1>5HrÏš«áÀöËã*O3Ë’ùðg2Û9O^X.Æ/íÒ\µ,£,ß%ïÜ5Ж¯Yª”šÉËÂJ•ìãj'Õs‘ů† ‹ ^›W(”晴Tz¢‹s– ºl6õ’‰€§Óõ˜ʰ¤Rè¹Ý`,m0Ú9¤vƒ‘8·ol¾©Ó;O/,øìœˆäõ­1®„黋óˆg¤x) >9Åby­¥QbI`̸¿W߸™ ²|WÕ€(Õ£.ü¨ßÎ9 z\xØÞZ4¢éyÔÕtÙ‚DDd÷EÇt:’Êk¥-^¯M âvßigƒ+Açûºúƒ$]O0Uˆ^÷…Á@Ðe pûÉØÞKýÏçÐGF·w@¯Kà=ØÎîÒº\·þ^`;@].ØFã ™µ¨fz8.ÐÊÏÇá¤4âù¸–J/4œÄ8Ä8Ä8Ä8Ä8Ä8@ŒhF-5.'ˆ‰Cªœp‹Öª}yy]D¹bm‡Meÿv_tÔ”ØÀAäqu“ 5Äb±hÔ'•­ÙÀ}ƒ«–.”º•Êëà®ÂÛ%Æ©V,¾º^–°4vÈJYp‘žö÷÷[GB+%*/BXóUVT–%T–.T'UÉQ;ýRíí#[)+«(5fÂÞˆq(T_J•˜òŒÙ}ÑyïþÒvõ"„5tX¾¢²,á¶§¬taåî–ÆÈa–/³žH*²<Õ#w„úù¸>ÿƒüéžoü‰ê<Î5ÐFdè$JF–â£&Ý\¾$rÚêÊ 3éâ¼ËОϘ’…DI^„0¹’Έ&}m'õ”+¶¢gÄ0;=Pc ƯM "Þ54;j"JTÊò’šG¦G§+;¤p‹”Å«–—«¢,akuªFÆ|”)!¬½rDùŠºžÑY÷Ê` • ºlA»/:ÖS=Ì•¥xeÓY1 ¤#ƈ×wÜàVP&- í¿Ý`,Mi6ÝOnà:©úŠ:½óô‚3>iñ ,â™2W.…ScúyÖH’Ñr¥=|¸îJ¼®*• TV,¼ÚcvôªtNÞ.3,m¯«aù0*­X,KØ^ ʼ™ôš0Æ‘ÞyÚïH]6Õ‹¡¦Cn#%ƒ.[Èà¶s.oïâ\ðÚ–Ì~y»ÞyÚgç© «ÞK«Ê‹—Am6o$_–P'•.”†Tï¥[®gÔï`LðXC+Fª~qî„ò{ç´8[Ž2váo¹sUÄ8Ä8Ä8Ä8m-ÛpŸ_zõM¼ñpw:~ä|˜{èZ¶çá˜8qŸ ¸Û¬®®¶¶¶®®®ÖµÖ³ßÿ;ºÿüŸÿE°føß÷ÿgœ0Wh^ˆqˆqMãZPZ1yb Æ!ÆÀÝ6WEŒÛDŒS–åÜ~2¶÷RÿóR™Q¡ä(À´–åu-/ŠË/<2ò«Â—šó‡~tö¿u4í—·¦j>yy-ǿʦ_?²ÇÜûƒ×Ó¹âÓ£¯§¥ž¿JÏ=2w-›û*=w´·°b¡+iayK Žq*UDU–Õ®OêY2Kí© Ëê#ï¬ÛHÉ€ïlFiuWšq®*Öû¾iÙ¬¸¶üžÀØ®áïíΑÔÎØ¹ç.üUô½çvçèó×ÿáù;à_z×E~ô¯_ÏæÚMûbì“ù‹7Ö²âZziþcúäßyy¯eÅôÅ(ß¿÷ëÙ^>4ù =ùÓ…¥ó‹—¤®Ö²âò OŸþø¡gý?ÜEo?÷¶Æc³1Ž1Ák³UÍ›Ê ›ÒJ:SX8_rT*8Y*éDQ…žs»Ô$µsn÷O´IË$Ó74·€<®–GŽˆ±sÿb1ûŸÅGûòSmÅvÎÿ·Ñ)íº¼ð1ç?ÒÍ׺÷Ù8ÿta)ÍÝÓñIÿþpnê3Æ;wñÃüò;:þ¬Øÿ¸ût!_û*{ùb„ˆhë¾o­|žnh*×àóqÚ!¥¬°©FÕªºê“joEO:à|\­çšDNĹã_s¼íí!·í1ëOßs÷è¤v"1—ãk:(~q-YxJ"'¢äÕ/rük»÷Yù¯¢É«_ä>XŽ<øý ëÅñWÎÿâ'w®%öîæY¾çÙ_üðêß¿òûÔ+Gm¯È;gì×?¶ýš“ººç¶œlì\µÝ`$Îí¾h4‹-,Œi\i-Ö' ù䵸»€¦—͉u>¨p>NüÚã?èã<:~*žåòölNÌæÚÛwŸ'¢];¾žs|OÏb,riêýè.ëîÝÎg}:ÿáÙ÷£û&§lNÌÝû´ïÝß>ÿmND…ÎÛÛwçý|äÂï¼÷ï—–lÔã6Ÿ:+¢n°>é†ë®4iŒãõ>ÄB¾–½qíu}ãOËÚs<ÇÛ¾µïAÆÞù γñ÷{`ß#÷p1›ã?ê ¢Åß¼#µ<ü¨ƒ±OCÿõÎmò­<ì~q?çRçÅÞμu]zu-ûÁxìé/Æ×–Ëþ‘ÈæêÝ£ÍÎUk§wžö¥-Þ «?˜Ÿáš*†ªžQ¿Cð ëŠÑH,%x¬t2¶wc[A*ÛV>4Õ9WeLxñ ˆ8=ø½±{DÊåçªÄ¹˜ÓÝóøÌñôþ—~b¹@ÄûOþäq½´-ñÞ÷sþ{zðÑ¿lËqQüÖß~÷/"¿LžŠ½öÄsï3VÖy¾·×¿ûqn?ñö¾ÂæHñü“{mÃúª»ƒ À­6~êç'ŽÖuÿ¸—^}óð¡¿Á¡›;ó†tLeìÂßrlù¹*Â훫À]>WEŒ€-•Ç!Æ!Æ CŒ€­ãp>1NiuuEÛsUĸætüÈ3­­­øù4‡ùwÏá Æ©äqxï¡9þÃÆAІ»$À¶Ìã>úü8:°Õ©ÿ-檈qˆqˆqõùrôÕx³ IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jmspublisher.png0000644000175000017500000016347412032647206023603 0ustar ebourgebourg‰PNG  IHDR"ßTáz[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì¼Eö¶—œƒäÁD’ ‚«qAD„% ‚"’tY "H’( ˆ² $*P@$Š %ç 9‡ïYËmÛîžžž¹÷â ïýáX]]uêÔ33ÝoŸ:Ý“ì_ÇþM" " " " ±M yl”=¿unÕ(%ÿ‰„ˆ€ˆ€ˆ€ˆ@,<~Æ 7ÜìØ±c±hT¦D@D@D@D@ €ÌÒ¢¡> " " " "ˈfaQ2+–±Êœˆ€ˆ€ˆ€’Yú$ˆ€ˆ€ˆ€ˆ@œÌЬ2*" " " ’Yú ˆ€ˆ€ˆ€ˆ@œÌЬ2*" " " ’Yú ˆ€ˆ€ˆ€ˆ@œÌЬ2*" " " ’Yú ˆ€ˆ€ˆ€ˆ@œÌЬ2*" " " ’Yú ˆ€ˆ€ˆ€ˆ@œH'V½Œúí/sæÌ¹sçN“&W“˜Ö}ñÅ‹/.Z´h›6m|˜ ª(ìÙ³gРA6l°šU­ZµgÏžÖ¦U°ÌR“|8õƒN—.ÝÂÎ;Ç¿nÝ:[«V­èbßk•?úè£ùóç³.ùâ‹/šÊ/¿üòûï¿_³f ›¹råêСÃM7Ýdµ§pôèÑ1cƬ]»–¥Æ&MšÐ×ÚK/tá/¿üB4î®»îzöÙg™;{­Qyä‘qãÆ±ûþûï[½TH¬ÉP“¯V­»XÝ;rä…õë×S BdÚ'K–ŒÂ 7Üpë­·R@‚ 8ДÙä•|vÓ¬P¡BXDZíß¿ßTž?žMþ±±“'Oþûßÿ^½z5âlË–-ÿú׿P]žÃi£ûÞ½{ÍÞY³f‘C¶bÅ RǪT©Âú¦‘wVßS§NuëÖmÙ²e¿þú+q;4“µ W»víJþYÅŠ™8¦˜¬ÙkFa9õ•W^AÃá¶ÕKDL F2+þü´ˆZ=´páÂÔ©Sß}÷Ý^íÛ·GlQùÕW_5oÞœWGÇæÙ³gIN0`ÀôéÓÙEžV‘"Em|6wìØQ·nÝO>ù¤ÿþ)S¦$ìã?öioíB™Q®P¡Â /¼ðÿþßÿ#Ÿ¡­½¶oß~Ë-·5ß±cG6 _!¼( Èq¡öž~úé—^zièСT„Ä2 æ¯n»í6‚sÄäþW§ÿ‹€ˆ€ˆ€$f1’Y€1-$"ƒCb9Žõ;Ú ’ü˜(º„0 Æ*á¥~ýúÍ›7ÀÏ=÷ÜC8ÊÆ|ºØw¡„þùϦH‘‚t.îÀ.䑽A¨22ˆ]Ì…ÑIíw7#¨†üb‚¥K—f/ÎçpØ$þ“§VcÍ4}úôìeÑ2„Î;s@\äò[£¨ " " "Ä(7‹i ³Þ}÷]– ÑX,¥ýýï÷œfèÞ½{íÚµÑX4# Ô°aÜ9sz6æÁZÍš5Ë–-i^¡Úxv4•&#Ê” .̺aÀ•Jn„D!}þùçÄÒøã)]ºtÁ k,fzcÓ¼Zõ, šò°aìJ öh϶˜‘f· ²ˆ€ˆ€ˆ@Â%S™eÖ IoçéY„y*Uªä~ ƒEáÒ»wo–ä¨!é~ýúÖ.{ER£F {½l2ë©ñy>–ÕÞ$ã“ÌnÕøÒ¦M‹o<âaÊ”)K—.%Ýþ?ÿù•ïÓ1GŽf/™[öGpÓòé¥]" " " ‰›@L ¡cÖ ‰‘•e$p¬Yˆ’¥L=šÆ‚¿šåÈ}ûöÑ…ätÒ¡<ûž;wΌȚ£y–„ãnAÏ^VåÍ7ßÜ«W¯‡zˆ2Ö­zŸZÓ,’OÄËú#Sͧ—v‰€ˆ€ˆ€$n¢Y¤x nE½Y7¤à¹bˆÐéÓ§ Œä$¤OL %B„G›Á_IüâGoˆœs"Le=Õ.ã°Æ*!ÝbÄ à9>7hÐ È(ÜŸHã;î¸#K–,æ™æɰ}‘S­[·æùß~û-òÉPxdw“#6¶»ˆ€ˆ€ˆ€$Jdz2“÷Ì”"–Ê!Q+~xÇ͈4&ž5E2–µ‹_ÎáQ¥æÞC«2H”vž¤ÅrJ ƒªã tt$È“váÂ…!C† ¿XÎ{ùå—­E=ÿQpiùò刚€dVÔèÔQD@D@D@üHfùÑÑ>ˆš@˜; çÌ™µiuDI I“&yò$ÓùûßÿÞ­[·³gÏ:L¡;W¯^M%‚ïé§Ÿ¦YŸ>}¬6çÎëÞ½;Bð7Þ0•ÄÆZµjuï½÷¢ó,k/¼ðÂW_}Å 4¶úª " " "  D ³Ð Ù²e1b Æ>gtÌSO=…>øî»ï¦M›fv±žˆZBf•.]zÛ¶m½zõš;wn‰%Ö®]k–ØXìCµ!£#r§oß¾h£3gÎìÞ½ÛöQ<Ë„£X¾4þ0VíÚµM³âÅ‹ã-j†ˆ]»vͳ/•ŒøÑGÑà¶Ûnc“¡/\¸`ïÝ»×ZŽ$ŪAƒýû÷G„YªÎ²IK´F†Ú¾}{"j-[¶´ö‚«\¹r(Ñ™3gš¯ ÅfÍšE¯ XÃ)dYÝiõUAD@D@D Aˆ@fe̘ñùçŸç‰Žd&´EÕªUo¼ñÆ‚ ®Y³ÆÂA`iРAè†äÉ“#ÅL̆½±xE„=z” NÉ’%+V¬xèÐ!"^h#Ô•–ÿBáÂ…YìC¬ ˜¾þúkä‹Õž¬,bl¨Äœ%˜¬½&NœÈZá¸qãGå˗ϾËQ~æ™gp 'IçBJ:öšM”"(HÖ(íÖx†>q¾R¥Já*ñ6$ˆîºë.²ÜÐv+W®´¬ #W !kÕ¨ " " "  D›Å½½Þ]N“&©,R¤ÈâÅ‹Ý LM¿~ýˆÌç•W^’©,T¨)¤J•ŠË‹Üùh­*‚Åìå5GŽVYD@ 2™Å„‰]¡X¡3“_¸páôéÓ‰÷pÃ]ç΃ß{˜3gN,°GÌ)&‘Yo½õVÊ”)¹ñÐm‡%KóÔF·Ür‹Y+´÷B)²‰bEÏ^oÊÄáî¼óNw½©!,÷Á¼ÿþû$]!¶,qfoŸ5kVŒ“§e¦oߥ²ˆ€ˆ€ˆ@"#Á¢¡™9ú€Tq‹‚‘#ä˜/[¶Œ,%Ŭô&«g'/ú"ÕiþüùD–.]Jn8¯äËs÷ŸgSi‰QC¸ˆL¬ü±ZµjV/’ß·lÙÂ&²‰„*{ÐÈjã.äÏŸŸ\x¦À‚£=ÿŒ\xR¯¶}ûí·,º;RÃÍŒ¤ ±6úàƒ²yñâEÏfd§±zÈz¥¡dų½*E@D@D@.ˆeSåÞ@ä‚™3â†u·‘#G’üÎJYP¤{ÁÁyñDwH-oÚ´éðáÃ>|úôiÄ ¯¡, È9ö=BÙo'DZ‘•Ÿ„²eîC‡³Ù¸qcž¶E/n?Ì•+—Õ†<*öðÃçΛ,4«Þ^`âÄùêׯÏ]“ü9–/­–è0RàÑm<ð9[ñíé–Ÿ*ˆ€ˆ€ˆ€Äœ@²cÇŽùX!ÚD7iï>mØÅ#LVŠ$C† &É¿‹µ—ˆJˆüz«Æ]à'„øéè?þ=G((HtŠTtÂc#»ür[vÔ –PBvÿÑ|$oa¸=óÌÑÑlñB`‘‹æ¹×^ (×<íÍTˆ?º‡ !­<¬:2Ò%âÜ,Ï©Zúƒè”gŸÊPw~9‡4¬ ‹¾¨%–çÜFükÜšÌè?”“]{…2’%K–P»õQ€rXЦˆ€ˆ€ˆ@<';2ëúL’g„^Ÿ4Šˆ€ˆ€ˆ€Äœ@‚‘Y,\‹ù„eAD@D@D@®„!³:·jtà 7°z} hˆ9„!³˜gØ4ü˜³ˆEáÅÁdJD@D@D@’ɬ¤ó^k¦" " " ו€dÖuÅ­ÁD@D@D@’ɬ¤ó^k¦" " " ו@‚Iu*ܺë6ePD@D@D@,ŠfY(TØ$™ÌºvíÚ‘#GøÑ~à/6½-Ht‚.^¼xqÚ´i~ø!‹ø»zõ*¿ßÇf<rùòå”)ƒÎ+ú/—D@D@D@ rdäÈ‘sæÌy衇š6mÊ=ïܹsÛ¶mñ¿{xðàAa<ôM.‰€ˆ€ˆ€$)dÖž={æÎ[¸páçŸ>Y²dºñ·?Cн£GÞ°aC† ªW¯Þ¼yóT©R± Å“?þ[o½uÊ”)3f|饗֯_O9Ož<]ºtá5`$݈#¶lÙ’7o^l–*UÊtÌš5kÍš5ÇϸÔß|óÍÓ§O§‘¶-ZtêÔ©téÒx…äZ»v-mp¬FK–,y÷ÝwÛ´ióÀÿõ*" " " qA PnÖöíÛÉÊ*[¶¬ÑXv?XLìÖ­ÛÆÛ¶m[¹rå3fŒ;Ö4Ø·oߊ+fÏžÜ!ôÕ«W/´Z‰%=‹- ØæüùóØ?qâD÷îݽoß¾¨(úb;'N,S¦ÌæÍ›—ÊŠ+¢½Ò§OÌÊ—/5£F"“¬_¿~è*SsæÌ™Ý»wŸ={Ö8 Wˆ#¢Yæ÷Ó¤Iãv!uèСºuëÖ®]»V­Z ,@Wµk׎ü-§K—nРA)R¤X¸p!¯ƒFß,^¼˜•eÊ¿ ö=Šý’%K¢¢†íرƒPÝQ] È–-*”5EŠAc]¹r¥jÕªl" é{òäɽ{÷ÞÿýÆ%œ$æÖ‹–?*ˆ€ˆ€ˆ€ˆ@¬ÍÊ;7ƒ­\¹Ò=äþýû©,V¬¯hÐ¥K—7¦%+ƒ¨¨Ô©S#q ,HÅ;‡ÿ6$ZÑ~òäÉ?þ8÷X ²e,äÌ™E™!PT³l⋉¬W8°}ûö[·n5•8#™åÆ¥Ø%(š…ŠâÞ=ÒžxšCŽ9ì¡C¸ÈT8pÃMˆö61)£¥èÞ AƒÖ­[´c—\¬c’6sæL„ÚðáÃIähDÍD@D@D@D †E³V?ü0#õìÙóÇd•äªaÆ‘8U®\9TK—.%‹•A‚O•*U"æC·¬îåË—Ïœ9379Ο? Ç@dÜ[{Ý…âÅ‹³Ä¹nÝ:’Æpl0–)6lÈÝ‘¬'Ò Ï>ûì÷ßïE¢YŒ×²eK” wíuíÚ•M$ !.–ÞøÉš=z¼ñÆD›Ø¬P¡ët±èƒ’;?tèÐþýûc–á^~ùå „¢^½z›6mêøÛß=÷Ü3iÒ$|ñ›nº‰¼xz>}š||^CYP½ˆ€ˆ€ˆ€Ä dÇŽó1D©I“&&žf¬Ç¯â•„*GzÓñãÇÑ^±ÇrxuêÔ)F$ÑÊQ﹉ÃÜrh<$¬uáÂ䚣¥~ÓÐD›" " " AL:Õ®Ž<» ?£o—ÖA£YÆÂÅ<ïÊmY㮌Å·Nò1n—P(¿¸>>h—ˆ€ˆ€ˆ@'(7+‰3ÒôE@D@D@D á£YDÆ¢°«." " " "Ä „‘Y,=&q@š¾ˆ€ˆ€ˆ€DG ŒÌ²’ߣ³®^" " " "d (7+ɾõš¸ˆ€ˆ€ˆ@ÜÌŠ[¾²." " "d Hf%Ù·^ˆ[’YqËWÖE@D@D@’,0)ðv.<ÏÔ¾ªÜ¹U£P»T/" " " I‡@2 (/<ÓÔ͈·ßóoó½6l¸téÒwÜпÃȯ™'S¬Y³&UªT¥J• Ø÷:7‹¹{W®\áW±—/_ž&MšÆïݻך/?ïÈ|ó+Ú×yRND@D@’,È 3¤MéÿÏͱvíÚmÚ´±ê;wîÌL[›Q† Ö·oßàgÿögÚ¿öÚkÇÞ÷:´¼|ù²5JÌÝ[ºté+¯¼b~ü‘_r´üì³Ï¾üòKk,D@D@D@âš@dѬŒiSŵCaí÷ïßÿêÕ«a›y63fLòä‘)KO;±UÙ¡C~Š›x›1s÷–,Y‚)tmºté(ÄÜ`lÍTvD@D@D ˆLf>ÿGè%æ°XþCa¬]»–ŬæÍ›×¨Q›;wî1bÄ–-[òæÍ‹ q/ðÍ:yò$¯4¦?Y]³fÍñãÇc„Í›o¾™úÍ›72S½zuVS¦ü}š}úô¡}ïÞ½íÎ#•+W~ÿý÷‰µmÛ¶J•*–qÊ'N¤#Ëp£GÆgÂ,³g5sw÷œˆËجZµ*ÓD2¶hÑ¢S§N¥K—¶»çÙÝ“˜5— &,[¶ŒÍçž{îî»ïnÙ²¥Ý ÕŒ‚§q{•E@D@D@bN ²ÐΙó—ýÿEäШQ£víÚÕ¯_?¢/ùòå£ïùóç»uëvâĉîÝ»£xXt®8°oß>3T2¨L™2H«3~OÒ8p »š5kF³cÇŽ™Æ¼RIwkÓ¨$)ХŲeË9rÄZU4õ“'O.W®Š Ç6n܈CQ1ÐØ±c}º‡šˆÝæ]wÝ…æKŸ>=2ËLßr/Tw71û\Ðmùó秃ժU£`´7 eÜÞFe˜ˆ,šuæB¬E³HK?zô(q)Ò´ï¿ÿ~³–·bÅ *ëÖ­[²dÉŠ+N™2eÇŽ7Þx£Ï›«V­b, ìb‰ e–6mZò™,X@÷Â… SO Õuà 7,^¼øÐ¡C8FªY­Zµhƒ,k×®qÛÝ·CMIJ‰}4IëÈ#‡{žŠ-ê&fïxÓM7eÉ’…·A{3OãþíÝUH ²hÖÅËWýÿ¹GM‘"ÚŪ'ã›6‘G¬ e̘}Ó¾}û­[·RÉ2¯üñ?ü0uêÔD¶¬¾ž…œ9s¢±Ø…Ö1rjõêÕl/^ܳ½geæÌ™ÑXì*T¨¯Û·o7ͲgÏŽÆ¢¼ÿ~^‹+Æ+ž#JX‹Dô˜fîî>±lš¾ž¯žÝ=‰yv÷¯ô4îßE{E@D@D@¢ Y4ëÒåˆsÏsåÊ…F9wA„yn»í6ã(«o·ÞzëÌ™3ÑUFމfbWƒ br7":#ŸxeÍ‘‡\3#†}ݳgmH“r´4JŽÀ›©gå‘8– Ù[ZÝà 2ÏH[(nböÑ–CØ]ÍD@D@D@ˆ,šuéÊUÿîQÉšBëðÐ&tª3gÎÜrË-4#ChîܹgÏžåIN™2ebùŒÊòåËš3gÎüùó‘2<žÀ·YŸ¤©Tf]ì.Ö%Ý?úè£üã<ãÀìBâÌO?ýôÃ?(PÀ{/Ò³È|Ç] .$ T©R%K½¹»œ!·_ýuݺu/^´çÙÝ“˜½WÀ²§ñ€}ÕLD@D@D 8È¢Y¬7mZ’ÞNr7Ÿ»=Q(+¿ 5kÖ,R»XÄ´?å˲‰'=zôÀ[Âl8\¡BV<­½îî'R¯^½M›6uüíïÁ´ zv'xæ&fu ^ð4î†Ü ZŠ€ˆ€ˆ€xHf¿ϳ…UÉí7«Q£F)S¦œ:uª÷¯½öZ¶lÙÆŽkÚ\¾|™.¦ìØå6òÙgŸÑ·aÆŽ]/^œ6mÚ‡~ˆÀJž<ùÕ«W³dɦ£YÀM»K»˜f¡:‚åøñã–©Æ?óÌ3ÖfØB(³a;ªˆ€ˆ€ˆ@B!^f™É˜1cPB¦e‡<ˆB2›ö]ALYmFŽ9gΜ‡z¨iÓ¦™2eÚ¹sç¶mÛ¬½.ïëß‘ô·!C†k3fŒ-³Áí¨¥ˆ€ˆ€ˆ@|&™ÌBvdÍšµfÍšãÇÏ!›7ß|3ÓëÓ§õ½{÷ž>}ú–-[ˆ<µhÑ¢S§N¥K—¶vÑlذa¬-²xÇw<õÔSE‹ …fÏž=sçÎ-\¸ðóÏ?Ÿ,Y2šÝøÛŸiÏÞÑ£Gc ªW¯Þ¼yóT©R±ËÓ=·K(¶#FàgÞ¼yéRªT©Í›7÷ïßoñ™^zé¥Ö­[oݺÕ1‡·)R¤(P €½Òs‚û÷ïGk®_¿ž‰T®\™.³þÓ©R¥Êĉo»í6zõêÕ«P¡BŒøöÛo_¹råÙgŸµ®²ˆ€ˆ€ˆ@¼"YnÖ¾}ûÖ®]ËY¿L™2H“3~Põ`b+VDo¥OŸ™•/_>j¬]”Ñ%¨«îÝ»÷ÝwV¸ËÇöíÛÉÊ*[¶¬ÑXö6,&vëÖmãÆmÛ¶EµàƒµXééžÃ¥óçÏÓýĉ¸ñ¾}û" ‹EŠ!x¶dɬ¥M›–¡í>˜2BgïofîTº'ˆ·]»výá‡êÔ©Ó¾}û%J8ÌúO‡Ì¶É“'—+W®dÉ’»wïþúë¯åôéÓŸ~ú)vÜ.©FD@D@D þˆ,š…ßH“M…"Ai9f‚XAc¡?ªV­êØÅ&:ƒWÂE D@¸X5æYiÒ¤±j¬ÂŠ+:T·nÝÚµkתUkÁ‚³gÏn×®Yµt»çpé›o¾9zô(Ý.(•)S¦ìرƒHC,ž9sfÔ¨QØqt´° 8Ù¬Y36säÈar×ÜDP"Âî»ï¾V­ZYíˆ/^ì3R܆Îê$êðwÞY¸páÓO?ýÕW_åÉ“¥kTAD@D@D ˆXfåÌ™ÅLÒ¥KGÀ)ø”½ûî»Ë—/GvPΜ9³Oßܹs³wåÊ•-[¶t4c ŽšbÅŠñŠB!¡ØPN8FMX÷È£!"#ŒR§NMd‹¤Òƒ>È=*T(^¼85aÿP?h šÄâÕs‚Æ[–#CYóŸNöìÙ…¾ØÝ!³6mÚÄMî;BÙW½ˆ€ˆ€ˆÀ_E ²EÀ^zÊ/$iR„ fÍšE$Éß*Š@ÙH$r9Z‘Çb©G´Çâ&DG3Ǧå’Qc 4øâ&,têÔ)c¨®U«VýòË/Vw«£UcPWdwñ—+W.*='hD’;ìg™ >BbŒòæ›or‡#éq–*ˆ€ˆ€ˆ€ÄO±/³±š¶nÝ:²Žìs6¾"*³lÙ2DÒÙ³g/\¸`o`/[zøá‡©éÙ³ç?þȲڢE‹H0gíŒD%2ß—.]JþʆèT¥J•GöݥòåËH# kþüùH4ìN{²Ô ½þúë ¡C‡š¢ÒÞÑaÓ½é9AË[2ú‘Œd¶9ÌZ ÂNϹ㒤4¢nþóuû¦ëO öeV½zõ¸™®cÇŽóæÍ³Ï§ZµjĨxLÉï¬!˜MöŽ2Ë…ÜBHÞ7)äO<ñÄo¼ÁCJY%$>Ô£GÒ¿¸°_¿~¬ñq· £¯cÓîJ…ûõÈÓçÖBÁªßáÇÉÊ"»¼sçηß~;@Ê|þùç±wtØtozNÐx‹.}úÏ?ÿ|õêÕŽ;fÍšµJ•*¨®>}úè=z4KDŒªW¯Ž £Ëøñã—-[Ö³gÏÂ… cdæÌ™Û·o'ÎD{úöîÝ›ÊÍ›72äàÁƒôºtéá%*ùÛ¹sçˆ#¶lÙ’7oÞ:”*UŠJ öAO¿µ ÿ‚34&Üõþûï>|8|µÍb”Ë—/Ï;—{‹/ž™üôÔ©SÙ2m¬A]R¤Hqá«’Ø5Öf¡B…Ú´iÃ2%jÀ˜}—ÕFˆ] Y¡«S§냖Ʋ;ÁmƒlîÝ»×T² Ȫb–,YؼÿþûyeµqáÂ…5kÖ4 ¬W4e"a¼¢~,„>£¦Aƒ_üï¯L™2V/ϵG¼½„Ĉ~x³Z¦OŸ‘÷Øc‘ öÁXõ*ˆ€ˆ€ˆ€ˆ@ÜÍòù…#^ÅŠ!‹€Ä¢H'E/’±ÈaŸ?>q,Övn½õVòºXU$G~åÊ•<‚Áh£òåË?›3g2âgÜÞHž%áènßD‡¡ó&Mš„8ûæ›oÈÁºå–[ì (7nܘÕL²àqÏdå“tϸ¦RÌÝÅaA›" " " "œ@ h–¿9–{ôèqåʕ֭[÷ë×9Å-VZ„—X=DQY•¦@ &ÔÕ¨Q£Xj4A,veÊ”©W¯^ÜTØ¿ÿ¦M›’öö@Ö‰–Í›7,–ÉCT9†ãvÈV­Z]¼xqðàÁ&§žµÈ—þ÷‡ŽöÚ˜HfÝß+¦/O1%&dâXÁ­±ÒÇ"#ÈÝåÔ©S${92ºÜͬô1­|ùòaЪŒºÀ/é§££¦§Ž" " "X t4…àÿÓÑFEÄ¢¡‘ø“U^H—.]¨Æ„µBíò¬G“ù¯-zöR¥ˆ€ˆ€ˆ€ÄXˆúÄ…[²)" " "  @lF³: ·ÿÄ ú¹ëU#" " " a Hf…DÔ¹U#²û•žvˆ€ˆ€ˆ€øÌòÃãŸÝæ×SûD@D@D@’<åf%ù€ˆ€ˆ€ˆ€Ä ɬ¸á*«" " " Iž€dV’ÿ€ˆ€ˆ€ˆ@ÜÌŠ®²*" " "ä (>>~ô‰øø®È'øGð¿¢ßÿ%³üèü…ûô ‰¿¾†<ˆ€G>y }0j—ˆ€ˆ€ˆ€8 _t’Ìr²Ó¶ˆ€ˆ€ˆ€Ä  2ëÚµkGŽÙµk×¹sçbeà˜Y³f͆ bnGD@D@D@D .„Ïͺxñâ´iÓ>üðCVòäɯ^½š%K6ã›°6/_¾œ2åï>¿öÚkÙ²e;vlØ^þ 5jtüøq«MãÆŸyæk3lÁîRØÆj " " "t„—Y#GŽœ3gÎC=Ô´iÓL™2íܹsÛ¶m  :Y²dà¸ñ·?Ã…½£Gfå.C† Õ«WoÞ¼yªT©Ø…øÈš5kÍš5ÇÏ.6o¾ùfŸz¤Ûˆ#¶lÙ’7o^—*UŠÆû÷ïGH­_¿žq+W®\ @KkÑ¢E§NJ—.ݧOFéÝ»7#õ„.ö¿)R`ß^3lØ0æÅ:éwÜñÔSO-Z”½a]òw£J•*'N¼í¶Û˜H¯^½ *„Í·ß~ûÊ•+Ï>û¬}t•E@D@D@0Ñ íÛ·“•U¶lY£±ìf1±[·n7nlÛ¶-2hÆŒÖúݾ}ûÖ®]‹¤(S¦ÌæÍ›Ùe:zÖŸ?;'NœèÞ½;£ôíÛ-…ñ®]»þðÃuêÔiß¾}‰%*V¬ˆ¨JŸ>=2+_¾|ÄÚ(Dá‰}"”:{û3©Ax¡®pé»ï¾3ñ³°.ù»A&Ùäɓ˕+W²dÉÝ»wýõ׌rúôéO?ý”©9üѦˆ€ˆ€ˆ@" &šež ‘&M÷TW¬XqèСºuëÖ®]»V­Z ,˜={v»víÌB‚iÀ€äN-Y²¥euw×cçèÑ£ØA 8¦L™²cÇ#¡î»ï¾V­ZY}ÑX衪U«Z5¦'v#L³Y³fÔäÈ‘cêÔ©Ðv¼R_°`Aeô"Ìǥŋû!¥løðá¬N"+ßyç… >ýôÓ_}õUž(ݬY³ˆ±™ÂºÜ BbØ|óÍ7¹Ã‘ 6k"*ˆ€ˆ€ˆ€$&ad‹h?ü0îÙ³ç?þȢآE‹Hgå‹4#ÒÛ—.]Jþº„ T¥J•ˆEEJ§|ùò„‹¸™qþüùh5 ’Hn'…G¦f‹/Î*ÞºuëÈ‚²b5Ž¡'–Mól0ÂNË–-CGž={öÂ… Ö(¡\²„uƒ)sÏ&im>ø`Ä,?UˆÏÂÈ,\g¹[ÉÚ&'ý‰'žxã7xH)«„DwzôèA²TëÖ­ûõëW¡BnŒbªn»#½½ÿþ<3‚ŻÇãȸÁƒ7iÒd„ X®W¯÷vìØqÞ¼yöbËËfµjÕãñ$ ’ßYàCS¢,úÜ îÇ$ÃŒZýúõ­AUHd’;v,È”X­#^Å+)Ûh,{V¾HNyTæÔ©SXv<¶ŠðQ%¼¬©A“9|0{cËcíäÉ“&+ ³>ó¬ v…u)ˆ]ºtÁø+¯¼bÍË^àÇ’ôÓÑv *‹€ˆ€ˆ@ü!Ð}Ð8NÓè—Ì©#žûÅ/¼ò/÷Vˆ€ˆ€ˆ€DG h4+:ëêåIàöÛo÷¬·WŠ$Þh¯QYD@D@D aÌŠïWçVXˆTzV||o䓈€ˆ€& ™ÕõmèŸXw}}Ñh" " " ÑPnV4ÔÔGD@D@D@ÂÌ ‹H D@D@D@D ’YÑPSK@2+,"5h(þwjzzB4õ¹.¸óôºŒ£AD@D@b™€dÖ@õ…?X¨opÏ)O÷Чñæ ‘#" "-FKMEàúPœõú3׈" "[$³b‹¤ìˆ€ˆ€ˆ€ˆÀŸHfý ‡6D@D@D@D ¶(7+¶HÊŽ$ öE̤œ›/Q|ÜíÐ|º'åÏ•íJ þ2™µfÍšT©R•*U*†àbËN ÝPw¸ž®]»¶wïÞÌ¿ý]·qÍ9²åS[#?…rR;)^O“&MÊ!CÆ -æU!¶ûì³'N\½zõ¶Ûn2dˆ“ö/‹O³°»Ðüö{>JëÕW_]¼xñSO=Õ´éŸÎ¯‘:i{fE—¸à`?„bßÂgPÞhŽ“ñAfÅ–'Ò†?é8€Ô®]»H‘"ÖÉ¢sçÎ'Ož7nœ£Y"Þ rºŒÉ§=HßÙ³gûË,û'$ˆÃñçýòŸÚ›o¾9kÖ,¢B8\²dI>~yóæÈù@Ÿxî'çP~êÔ©­[·¾ýöÛíÛ·9rd¤J«C‡D6ÿÆŒ“ùd²dÉL³H‹´=£DÑÅs îÊ(„‚9„S„ Ý6“NMÆ´ÿ=]é/"aO—1ù´Ç¤o¨Y„u8TÇxX_«V­G}4W®\¨— &|üñÇíÚµ‹ÈÏ@2+EŠ Àî-·ÜÂrøðá„‘«ÔìܹsĈ[¶lAßñn™EÀ 6àÐÚµk w7oÞ¼FÓ§O§ ß-Z´èÔ©SéÒ¥ûôé“5kÖÞ½{c„Ž”kÖ¬9~üxº°i4ܰaÃ0uäÈ‘;KÀ¢E‹úÛá 4zôhº`¤zõê mh(û‘Rcˆ8À÷ˆÇhqe™ç·?ã•û›èþ²´jÕŠoV×®]éòÜsÏqàèÙ³'eó©\¹2Ž/xÛ¶m«T©bŸ,¡,óT¹òåËÛë‘\?üð»ºçÐZ°`G† *Ìœ9“_dº»³Û rôp°`fç'N¬Zµªã€õÜí¾Yì•VÙ‡ƒuµ{NÑÌùiýúõ¼ ¼*Mû%K–8Ž– nbTzÚQþüùo½õÖ)S¦d̘ñ¥—^b,Ê|ŽºtéÂ+Ã~hãþ°QðïôùË[iæ9÷°î™9ºÏ8±u ÅÐÓ1ÓØ|n9-²>å8{ÂÁ~ºtOÙý…òÈ1kw_;öÍ›7a!>ÂùôÒ¥KÖb”§}{GËa>·Ë–-ã8S¸papؾ};!O vÄéù ÷êÕ«P¡Bt$¾såÊ•gŸ}Ö> íÃ~žC½§Á§fE”¸Xbôo¼ÑîCrÄñ¤;ï¼»;vìàõüùóݺucñ¢{÷îúöíË €úQ£FíÚµ«_¿~mÚ´É—/5+VDH¥OŸ™ejöíÛÇ ƒ]üQæÌÁ±L™2L~ÆŒ¦žcê ãß}÷ ƒùعxñ"Îlܸ‘“G(ŒXAæPöÍ(zD€/ GBDD³8 Ï=¿‰î/ËîÝ»É00]øR>|Ø*“KAä¼lÙ²\ÕpåÂÙÑóªÞX ˆÅa?6)›J·cöá‚=ÜG,0#f1yòäråÊÝu×]ŽNLænwÏÌ7Ô«½¥½Ì¹sîo¬Ÿšz÷8‚¡€‘­uêÔáÍ-Q¢„iÉ[æ>6Ú»‰±×mŸJ­X±‚7š ÝmÛ¶qÃ)âð»hÑ"cÓ`ôù0x~Øìþø—Ïœ¿ìÿÏ¿»c¯{îAÜcŽî3N,žA<†rÌ46Ÿ[î1eÚX§KwÇÊg ÷¬}xÈФ QìØ1³7”}{_Ëa>i|õ¾úê+³—…Eb1¡,ØQ°eÚûž}ÞÓH§†dkÜsÏ=¬$8Ü»(še·BX I{öìY*™!ËuëÖ…¸*B~s¢’ÅRtï¿ÿ~³2ÈÊ: 5ÊU¦ÝšUF¥ 0€,®ÛPZ¦žc .Ü ,È”²œáx„3P ÊÇe4G ‚{ÆOûÖè*ˆ@B!À·%{bÉ«V­âbîÅ_$ZìùMäªËÿKgŸrºté8î¤M›AÀw‡kMsõiµáÔh•í…Põ´á²•s9¹Y9rä §“ùóÏ?Ï@>ßbBtAŽî#ƒq 8hDsÑ‹s8_{3GùÌ™3œG©$bÄ‘š‚{ \Lr*½ï¾û¼Ù»û»<‰yÚ76á?hÐ DØÂ… y²—ñK .TŒ«n†œݧK±>·ž3²Ïݳã õÍ7ß„È=kG_ûX\qñ©àðR¿~}ê9à0:…€„)"Ù¬’sH!ÂÂe!—vÕªUó±`¡@нóÎ;|JŸ~úiT_¢0v÷LÙÿóê=E2F:5¾)™2e" C·þ5Ë,>U¤Ë™ˆ±D¬sø˜:u*’ð‰láGÿ¡C‡rÔþä“O:vìX¼xq'Ø›3gN4¨™÷’Àػᄏ|ùr³J6¡Á$©p4Ç>ðñE™ñiò§}*õ' ‘ßöþýûóå" ˜S&ÁÏobDSãû…Æ¢‹ Ñ£œ2+ÄÙÑç¬I¤„¬,Öñ1ËA“?”–ÿµ`£‡Ï‘!{öìFcÅîÜíÖ|ækoæ(sp#Ѫôœ‚9‚qõo53÷±ÑÞÀ“˜§}Ó‹ÓÇXÊ\rùÊA vƒ”ý? 1ü°]¼ü߈þƒ¨« ' jØôœ{@÷ÜT£8ƒp~±b<øƒ˜¶œt34dÇéÒ´·>·ž3²lRÛ€6>ܳ¶w”W¯^MûôícßaMdÓ½÷ÞK 9´¥K—ffµÚÇ‚…‚ëRȬM›6 uˆÿç9Ô{j¢6Á§†@ÄyÊâêNC8ù79FÁ4hРuëÖöfÐaùŸUX>R\\rñmöýdoéS†/ËÆÏ<ó |YÊ%6O#ŽÊ*÷8µ IDATK‘Ë,’9_ž;wÎ\„"qǘuÏ=j÷¢8ƒpzrÌνi14ŸF÷éÒÑÅ=£€ ¬O{¬¾ö±PSNcÔ¥æPHGs´7 |î⻌™6ת75Ö¦½ÀßY’Lì„]œo0Îõ ǬŽD¼Â=B,#¦à"†s·÷™µ½™½l¡¦†«yÏ)XG04e.,o¿ýv»ϲ'1Oû<=-¸+ý? ž‡}s”Û”»æÒ•ˆ£Y|Ú9D£ðñ hÄÍXXöœ{ÔîYücå âfÄ1ÏÙ†j`ÿ´ÈnÓÞ×~Æ$VÂ=d\,qZGÄÉŽ‘Ú'‹û`8ûóÉg 1¸"rO¾õ?ÿùO»cvçýË¡ÞÓH§†ö@ê…º4õ÷½Rà¹öeI’{Xéä#Hj9¼è ’(I5e ƒ‡â¸bå• ß6¹’£6+²Æ‰zõêñUDÌΛ7/¬[4`õF$Œäw>/î¡>”®{ôèÁɃÐÙ÷¼¬]HmD  -”yn iÙ²%'Î^xì Ïo"“r|Y8KQÉ*õÖõ™;—(\‘é…zãÎ79Ÿ|<“ç.^¶þ™w(‹î¤S„di,j8tpÑl’aŽYÃ9z„:2XFLÁ1DLæn·)Ó×B9ŠòG ³çÌŒ7‚,®c¹uÜ>n¨²'1Oû¡,¸ëý? ¡>ln;ž5,úÿs÷âI0ƒÇOŸžsÇZî¢;ƒXþSðgÖ±P3²†ÕÀþi§qØ,ƒ}­]DFî ȾeÐ^kçŒ ^yå{¯(ÊžïiœNÍ8itÅŸŽ¶Qxoº¸å*ÇSè¸O þƒEÄ™½¥GK{/•E à›jÆýMd¾ö/‹ÉsÁÞ2TÏS`¨Æþõ¡†ûíàáñ£öö¡Ž Ží]b>w»ñ˜s5»Ïö}ÊžÄBÙ÷±cßÖ Ï›Ý‚gåY¶’‹sϽçܱ{tŒÅ3ˆ'Ã°Ž…š‘…(TÇpa² RpôµvùÈýˆì[í ä#‘†oV±ì½¢({¾§q:5»“±#³ìUHXÈ ²âÄ Ëó˜{›”çîI/NÄ\›zúß*ã”a|›lÜùCä’'×8nlj»áâβdVܱ•eHL^jÂð5¶½LÊs÷d) žX"ªÈp…jäP}ãU} øx屜A@Ѭ?Þ&ríi­ìPID@D@D@"' ™õ;3’È4¿9Fõ'ɬ?ˆÍúcC%ˆåfÅŒŸz‹€ˆ€ˆ€ˆ@’Y!À¨ZD@D@D@bF@2+füÔ[D@D@D@BÌ FÕ" " " "3J?õþ3ïvžûs…¶D )¸«pºD¶YÀcÆŒyýõ×6¶š9|ˆÎÖjÕªE4¥øÄO¬]»öã?¶†PAD  ÍgóæÍ·mÛ6qâÄä¹\N ²èÔé󗃛ÛrÆ ¥Ñ ,áq¬©Q£]vîÜ9bĈ-[¶¤Ašx®Í-X°€½*T˜9s&Ýï¸ã3V«V­n¾ùæ®]»²ùÜsÏåÊ•«gÏžÓ§OÇÚÕ«W[´hÑ©S§Ò¥K›ÆK–,?~´,ˆ@$Àá…ƒƒ9>üüóÏ£8¶8`ñübº+çÎËq¦_¿~yòä™3gÎ|Ð¥K—[n¹…¨ÿW_}Eø?àñíÊ•+C† 9xð ÇÀK—.Y‹Ið Ò”E VD&³ÎĪÌ5jÔ™3g8. HräÈÁ|Ο?ß­[·Œ3vïÞ}„ }ûö}ï½÷’'w†Üb!>ŒÌ¢lɬݻw£] —}ûö%K–ŒrÅŠ?ýôS,#³òåûýÉ™ä6¡™Ê”)óùçŸÏ˜1ƒá.^¼ÈÐçÎkÛ¶-²ŒJjžþy,` ñ·}ûöråÊ¡ÀØÄõ”±IƒÇG*Í,R¤HºJ—.]=HŸzùå—Ý>XFüÇݵk-í~2§OŸ†Ì=÷ÜÃ" ©‰ùkð·Ã$æãÊ‚$Y$ÌŸ?Ÿ 6ô:÷¡2î/¦geáÂ…9®ZµêÁ\´hå~ø³K—.ExùgìÇ·ÿûß[¶lÉïØ±c\¬&ÙwGX!¡ÌºkÑ,ûŽ=ÊòßÞ½{ï¿ÿ~£¥V¬XAeݺuÉ:Bš)Ù±c‡#`ן;ghšbÅŠq@A ¡iBá 3,}úô\¢U­ZÕjƒ0`)VÄ´6oÞL=Cspah„ sÌÈK aÂ8Æ%ÝðáÃMÉ2‚„26ˆîÁ jjß¾=m8t,XTwÊž>;þãºý4½œ)S¦—^zÉHIS“×HßO 1q@}E ©Ø¿ÿ#<Â¥‡²^x點_LÏJ>\øýøã\‚rØaE’H?-W®\IXËÿ8c}¹âEr±°P¿~}üA´a!©½/š¯Ä.g ÈßúÅËWýÿ¹»s}ÆqV=WoÔ°‰>`í‰À…ƒËÖ­[©$RÍëäÉ“üñ?üsâÄ «¯)'+‹Õ=”$þPZŽ6a7sæÌ‰Æ¢úÌG8䱉nãßÐvĨÐ|ÆTöìÙËÔóJv1ùxÀ˜ˆü³ÆÇµ Ù`°Â¤üÇuûɈÛ¸BEFq§al½>@,2*ˆ€øÈœ93±óþýû¹/^¼¸ç¡Ãó8éYÉ!Iô«ûãëɵâúõëY[<{ö,ñ~ÿãŒõu¦7ãŒÛÚ%"ÈdÖ¥ËWýÿ¹Ç&æÌ7œ+6v¡9ˆN™•56+W®üÎ;ïÊM<‰X5¨ ^4hðÅÿþX/£Æú#(Eœ‰Å;Zòw×]wqpaÝÐj€Œ£Œ8³k;jÂÊ£º­SÀr–,Y,Ëž®¹å°D‰æ2”6 .$C Äý€Ääì½<}ˆb\¤!Ã1w»ñ€åØ};ªf" nŸêÔ©ÃÑ,mÚ´ì uèp'iìYÉÑ’»Ix ¡ÉÅ…"©d£r]ð8ƒÞÂ8q}^‘}Ž£(•úˆ”@„2ëÊÕK¾ÿÜÃóÍçëÊÍq|u P‘ŒEºÍˆB—âJ‹+°þź•åË—ç üMò:ÄlHÛ´Ûüî»ïPl$¹sÈ‹z¤~úé'ÓŒEº_~ù³$E!ȬŽ\œ±„·nÝ:¬JGÁä]1"‹’UªTÉ?\D¬‹ç2 ÆPŠ$Qãg%ÇÍeË–!Ú˜ 9T…ò!Šq1È@Ñc÷íp0Ô¦ˆ@Ô<žÇIÏJÆ-[¶,¯¬r E]qø¢l®Çgn½õVóMÊ©±$uD=u0"“Yþ+†ìucmÓ¦ ¹óæÍC‹L:•0OãÆiƕڋ§^=úè£d¦›\rôV¯^½Hc'Î.B\‡¶Ûdy޼o{&±q¢DÔÓŒ0¯¬'Ö«WÏè6Ó—MžLÓ±cGܰ[³—Y4â¬uëÖdås9Èš¦½»Œ Cî0:Ù‡:¬V­+#GŽä&J®89 rã!}Cùݸ俓 æv)lMì¾a‡S€<žÇIÏJF! žƒ':éÎ;ïäÕDÓ‘\ì xœ¡×c=†º"ïžÄ V :¯f" ¡$ã^’PûõüØÎuvT:6ç|þ‰çí „í §ˆýØ»^"*ƒº²WR>uêùdn9êÃn"kHçäÏÝ’€Ç ̺wÙkPNH4ÿ8–½½g™ãa9va¥^¦™±2®§3îʸ{;¾Ûy®ö¿ßÎéW5"Ì]½ï®Â!oÊñ'àyèð˜PQ>{}v!nˆ'¹ f<[x¹ûzÖ˜,Ï]¡rØ­GB8ê#Ú4‹.k>>8ZF4\¤¯ÛÛ©cj/Iœ€ç¡Ãó8éY–^ãŒ}¹ ¬A5ð'Ìò Sù[×^H²þ´„—d)hâ" " " "ë$³b© Š€ˆ€ˆ€ˆÀ Hfés " " " qB ‚ܬ8_Fî¿HtsÒ„D@þD@_ó?áІ„& ™šöDN êûØ#J=D@þúšÿ5Ü5jÂ$ EÄù¾ÉkxO@2+Þ¿ErPD@D@D aÌJ˜ï›¼ˆ÷$³âý[$E@D@D@&¥À'Ì÷-Q{Íï@%êùir" "  ž@ÀŸÆ‘ÌJðït¢œ?·™(ç¥I‰€ˆ€$¿þú+?RÌkعhÑ0,"5?_u‘ÌúƒšJ" " " "‹þ²EÃI“&eÈ¡aƱ8»©+W®|ÿý÷Ë—/O“&MãÆsäÈaß{Êq=Áë0…ø3„ ÏÆä‰ˆ€ˆ€!>šÕ¨Q£G}ôøñãÆÂ¥fÍšûöÅôU>ûì³/¿ü2ˆ‹ÑµYºté+¯¼’,Y²Œ3^¸p!:#1é+¼|ùrL|ˆ?}£›ÈáÇ»uëöàƒ¾úê«ñg.òDD@D@/³0tâĉ7ß|3 ÅxÒlÉ’%xÒ¦M›§žz*þüñÄ«ˆÜèСÓO>Q—øÙ8ê‰ï|î¹ç{ì1ärüœš¼ S§NýÍ7ßÜ{ï½U«VµÛjÕªÕÍ7ßܵkW*9æÊ•«gÏž”9­¢ln½õÖ)S¦Lz饗֯_O9Ož<]ºtáÕ22gΜ÷ߟ“hÛ¶m«T©BýÎ;GŒ±eË–¼yób§T©RÆ`Ö¬Yi0qâÄ>}ú+V̲°gϞѣGoذSrõêÕ›7ož*Uª &,[¶Œ6xu÷Ýw·lÙÒjOÆÓ¦M[»v-]h_£F *‡ Fý‘#Gî¸ã”YÑ¢E© 2Úà[åÊ•±è9)O7¬^Ó§OÂÕ«W[´hÑ©S§Ò¥K{ÎÔjo ž³Ø´iÓСC<È;xôèQb{  }¨z3#‹vÊ”)ÝïH¨¾nÜñ¤á˜ˆÙLŸ>}¡B…S™"E Ôã~÷Ýwˆ0Sɸa'b|sLÄ>b¨Iyºau¬X±"ê Áp2ÔL­ö¦à9‹þýû8p uëÖ&¦ƒÃ¦q¨z;mºx¾#¡úºpL$ ÇD´)" " ‰€@ h©çŸžüâFnÕâI!]ºtƒ ⤻páB^|öìÙÅ‹ɰÚÓfàÀiÓ¦%¾²`ÁvíØ±ƒpKݺuK–,Éé™57Þx#]8ß#ÅxL…Õ¢GûÚµk£1‚Üi×®ÝM7Ý”%K8ÂoÔ\»v!Nž<¹wïÞûï¿?yòß…fûöíÙKªuÁ‚‘t”Í_t)\¸ðÿ ü×I÷¤ˆ–yºaõ*R¤‹D~3ÐyÎÔòßttÏE >uêÔ¡ Î@€B¨zcÇ¢MÓí<ŽyÚ¤¯ÛÇD< š·Ø ­WH4É,f{Ï=÷.š7o ˆA&ÏÊ …–è„ ½Üé5™3gFcÑÆ, mß¾ÝÄÆˆZM:•zzÙ2ÃeϞݡ±¨ß¿?¯f ûœ­QHÈ‚œ9sš^îWš±(Æ" ï“O>騱cñâʼn™½ûî»d÷#>(ã˜Õ1º‰ØeA;¬9&åé†5¨»d¦ž³X½z5ÖÜ:&T½Ú¢íéüæÍ›=mz:à˜‹§AGmŠ€ˆ€ˆ@â Tf1[œ› Ùgnî C Åän>B#Ød…ÑZ4hÀ —}”Pe–2ÙE\Ê4@$¡êL+TêÑ‹äÍœ9éC„läÈ‘„ÜH!zæ™gxÀDçέe5#ž»¬‰Ø÷Íçž”Û {/S6@(™©ç,Œà3ˆNÿögV]CÕ;|ðtþ矦™Û¦§މxt ªMH"Yœ É"£Èš9aª_~ù…¼+´Ë[V}Àú’xôÃ?` ûåË—'’D^<*“×…(P @(ƒ&U‹g7°bÈš#‘·ýãmä±nuçw¢¨fÍšÅúÆÏ;Ç+¡5çQl¢yàV¨qõö‰à­QVÏIñ/·VS Ì6þüuëÖqŸA™z΂”8Ö|áŒ%éYlŠ¡ê>x:ª¯§`´OÄÓ Ï[ìðG›" " "€J·æóÐCqе6‰ÐP&a«^½zF¯X»‚X+üôÓO_|ñEÎý&|•)S&òåIý&úiÓ¦„š¬´zOƒ,#öèÑ…GwRÚ+T¨À‚ gK«òÒ¥K<8ã< …‡pd g;ÂZ$¿dBŠqÇœÕ%løŠÍL„´zG{ÏIyºáèUôËš¬Õ™©ç,PW/¼ðâõÛo¿}ä‘G=F††ªwøàé|¨¾ž`Ð>OƒŽA­Í­[·>ðÀãÇÇy ,òZ»TøO Ù±cÇbâ%Š„tiþ¢6ƒOœ¹í¸¥‘  a{¥O#è<ÿ8–½;7î¯â”o¯$/O¨ÁʉCØ÷†*óøVVô¸Ã‘ôyÖ+±÷rOÊÓ {ʘEwš›agêžk©ظá§Ÿ~B ’f‡6ÅT¨z‡fÓá¼O_·Æ‚c"ƒöAù­(ýt´ˆÊ" " ñŠ@÷Aã8Oq^óñʜˢ—GÆ´Éa÷&ì.4„»C¹8j<8ÚØ7dnMf4Í"µf,»3ôí#RvOÊÓ G/‡Ù°¾¹gA€l3´ ë¡<çÂð%T½Ã³épÞ§¯ÛcÁ1‡AÏAU)" "  š@LeV‚ž|¬8ÏÓYƽbe¸(Œðd ž^†Ò"ÝÍ~ d¨ú CĤoûj#" " ‰€€dVLßDÂbj"Žû7"åŸ?Ç8¡êÍ<7cÒ×Ó £’H,áVG¥6E@D@D aÌJXïW’ð¶s«F¬0*=+I¼Ùš¤ˆ€$j’Y‰úíM°“óÏ+L°Ó’ã" " I‹ÀŸîïKZS×lE@D@D@D . HfÅ%]ÙHÂ$³’𛯩‹€ˆ€ˆ€Ä%ɬ¸¤+Û" " " I˜€dV~ó5u¸$ ™—te[D@D@D ÌJÂo¾¦." " "—$³â’®l‹€ˆ€ˆ€$a’YIøÍ×ÔE@D@D@â’€dV\Ò•m$L@2+ ¿ùšºˆ€ˆ€ˆ@\ÌŠKº²-I›Àµk×öìÙsòäÉøŒaÍš56lˆÏÊ7„K@?pß;y.×›@Ó¦MOŸ>ýñÇ3p£FŽ?~ÿý÷¿ôÒKÆ>øàí·ß.^¼ø˜1c¨yï½÷>ûì³'N\½zõ¶Ûn2dˆÃ]cÊ4iÒ(P ]»v·ß~»£Mm^¾|9eÊß~¯½öZ¶lÙÆŽGcɬˆ@R& ™•”ß}Í]bJ`ùòå/^L:5†.\h™#ˆõþûï×®]»}ûöGÝ¿¿µË^È;wŸ>}V­ZõÖ[oMœ8ñ7Þ°ï£r‡<8mÚ4cQ˜<¹âúq[fE ©ÌJêŸÍ_¢&P´hÑíÛ·¯\¹²råÊè*þräÈÁB!8@ë×_e3Ïož£¤J• #üMŸ>ý矦KÇŽ³fÍZ¥JT Œ@×èÑ£YÔË!CõêÕ›7oNL!•hƸˆ¹dÉ’µmÛ–.ÔïܹsĈ[¶lÉ›7/mJ•*e566«V­Ê^jÑ¢E§NJ—.Í(˜êÝ»w¨îŒŽ&[»v->à@5h©?B@×pA(©ˆ€ * ƒ-Zľo¾ù¦bÅŠiÓ¦Eô°yçwæÏŸÿÛo¿%š…¬ñèü¿*ÖïæÎ‹ cµ‘¨Ò¾}ûH–š³QèÓ}Ô¨Q»víêׯ_›6mLëOD@‚Ì BImD@< ªPZ¬^ºt‰ÃjÕªYÈ|9r$è—_~!ª4oÞp´KD »ï¾ûÌ™3}ô!EöÖ¨¢þýû“ØŽR4hñ*û^SΜ93‘*šM˜0h–©Ìž=»@&£«X±bÔºñÆÑsˆ«/:r¡B…xeù’Œ+ DÂüñ?üŒ1"[¦±eÓlz¾zvg\dbÆŒ‘tDæ¶nÝêÙW•" "àI@¹YžXT)"ˆkyŸ&MšT©R%}Ð( 4ضmË‚ëÖ­»çž{ ÈvªS§Ž£ÒÚä@Ê„‘L JŽUÅ,Y²X Lœ0 dY™´0Flݺµ£cÓ´tTæÌ™“wwæx뭷Μ9G˜(££6E@D E³B‘Q½ˆ€”“½D7²´g¯_¿~= |„£vïÞM 9½ ,ho¤Lzö—.]J¤ŠEI¢Mˆ9sW#Ý1Žzûé§Ÿ~øážHbAðØœ9sæÏŸ&££Q`ޱ )³Î IDAT›ZCöá¶}—gwò½åìÙ³ 6$>Ç‚£½‹Ê" "àO@Ñ,>Ú+"ð;+W®Å#Dš5k†ú!Ê^º:t(5,VýÈ»*R¤ˆ½A2K‡=zôà)D§°CëwVGجY³6oÞÌŠÉéÔ#ƒzõ꟬B²I÷—_~fu1…zõêmÚ´‰[ù{ðÁ­½žÝ ž«Ã¸é¦›Hœ·Ú« " a $㸶‘ˆ€$q,–q¬X¶lAgŸ}6 bEdŽ#†™æAú:ÚðTÂHV‹½<ÚÔkSø Hfý…ðêÐÿøÇ?† f?¨™™¼÷Þ{íÚµkܸ1—×®]3•ÿú׿–-[öꫯ>úè£ï¼óÎñãÇ»uëöÏþóã?6 ¸¬ìرãÃ?L›sçΙÊ7ß|ó‹/¾0e½Š€ˆ€Ûn»-K–,K–,1mX}úرcH«õë×—)SæÄ‰·Ür‹¹š¤#mŠ/nYPAD@|°n¸jÕ*)´12Ë4uP e*Ô)T{Õ‹@XèÖŠ$5„šxà¡C‡>öØcÖÜ¿ùæâöçÏŸß¾};ºÊªGx™2¦l.4©\·nÝ•+W¬dU.=­^*ˆ€ˆ@@ ¸é¦›X¥J•¢ ×l¦c¨ƒR(³:"…"£ú¨ HfE.©wlñÛß§Ÿ~j@lݺuÀ€o¿ý6R©k׮鰸ÈÒ!YYÙ³gØEÍD@DÀM fÍš³gÏ>pà€•üä tõêULq2‰¡:"¹Áª&†´hC€I·{ÆŒŸyæ™Õ«W›lwÂõ™2eÊ•+ù§‡6Ǭ°tŠ+ÆeèôéÓM†+‰¦ËÞ½{Mü?¬5Ü{ï½»víš3gŽ%³Â”òäÉCæ+ógΜÁH¨#’‹@Ô$³¢F§Žãò‘Œ+¢lÙ²³¸ÍØT«VíÃ?´§g…‚Eš©ñ¤dqïaóæÍ_ýuÓrüøñ_~ùe¨^ªQ$}æË—¯páÂfW؃RýúõÿóŸÿ4mÚ”¥Æ9rÐ+ÔÉ1–6E 8dþ1~:šÓ¯[šÄ[ž:uŠ˜Nž<™9sæà4H'A>uêÔÁ»¨eR# ÃQR{Çce¾þ%î.$U4UªTޱtDrѦÇ"6ê#sÈRn–Ê1%`4V"ÒX´çJ4¦c«¿ˆ€¸ø”Ò¤Iãêñß ‘<±¨2 áe¡,#Ü¢°®." "‹t8ŠE˜2%"p„—Y8ѹU£ëàŠ†°t8 ‹H D@âš@ðð“Ràãú½}DE øõždV¢zã5¸& hV\–}C@Ѭ0€´[D@D@D@¢# ™7õ0$³ÂÒnˆŽ€dVtÜÔKD@D@D@ÂÌ H»E@D@D@D :’YÑqS/C@2+ íèHfEÇM½D@D@D@D ɬ0€´[D@D@D@¢# ™7õ0$³ÂÒnˆŽ€dVtÜÔKD@D@D@ÂÌ H»E@D@D@Dàÿ·wðVg–Þ{ïU@:‚ ˆŠ5?DŒ  Ø‚X ÄÀ‚€Q‚”&A (TšÒéM¤w¤·ï“l6»{öìž{îåœ{Ÿ~'³³ï̼óÌìîß™sŒ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @Q ³¢â4 @ˆ2+6n”‚ @QdrþÒéÁ£&1À @À"EfuëØ¦P¡Bý»w¶ € @B ŠÌR R6€ @vìÍ²Ó @€âF™7”T@€ìYv¤!@€@Ü ³â†’Š @€€@ô-ðvkÒ B ]þþÖjÇ›t}LvÿíðIûp ô¤Iéù÷nÚ´IŽ«Ò1(Iw÷ð™o攣ƒQí1HȬÄ‹pž<Ñá‘pÛzä;cÝ&Q“Ý7|r< x´C‹xLÆLO™€W¥ç $ Ÿ1ÏÏÆ\Ó˜2+Ç­¹lYÒÿ‚o²÷1ÙýÛd¥¢tD Yfu²ø™Ž¦]ñ&€Ìòæ’ø¹á&’ì}Lvÿÿ*Àô',³:YüLû¤Å4&€ÌJcàqk.[ÖLq«+Q+Jö>&»ÿ‰:/ðërH–Y,~^α¤í4!€ÌJÌ©ÐHFxWKö>&»ÿ©0m©2é $ˬN?“~BÐhYÑ%êùŒpIö>&»ÿ‰:÷ñërH–Y,~^α¤í4!€ÌJÌ©ÐH¶¬‰²~ñâÅÙ²e«[·®zùæ›oæÉ“ç‘Gâó-ÈÔëã»ï¾{áÂ…:8F&R¾Ã,àaâøîܹyóæÍ;7GŽíÚµ+^¼xÀ.Ä`&°{÷î=vìX‰%rçÎmj°O û„‰T¿Ý>’MJòã;Ð)ñ$xÙU«VéB«V­Zð"©a™z³:¾Þ&‹Ÿñí5µ% dVJ —Μ=ÈÎft×-­ÿxÑ¢E¯¼òÊNŸ¸êªš6äÙ³g³fõ›'={ö,R¤è{ï_üE}\é~õGEá³bè£iäw¿ë1ûË/;vìôxÇNžÍ~øáGR¶ýµãl¤|‡YÀÃÄñÖÌY½zýîþ§Už¼ùŽ?³cþ?uêÔ{cF?îøñã™3g>þ|Á‚ÿ9ý3•²O û„‰T¡Ý>’MJòã;Ð1x2eÊá2sæÌ)Pµk×.T¨OU7n”¥¿Ìs‘÷©$å§b˜<×5»¶rå*æ!žyúÉǼ?v\Êñ©!?c»CúøÀ)ˆ€ßã@‰Là̹Ð2ëÂ…+ .òÚë#Ž=²~ݺoü¥ãã|ëíê5jDêéÓOtÚµkׇÿ˜É@ù£Þ­;»ñGMè1øæYlõ9rø›¯¿ÖéÓO?iÛþ±L™<¿+pá o?#å{:%3qüÿrö—òõÉgº˜ðRlŽEéíW ôʧŸLmu_ëö=ž?-›7oذδeŸö ©N»}$›”åÇs cóDS´E‹gΜÑËÏŠ+fΜyË-·ø+-ÿ†fÍš¥ â=÷Üão–³±Mûmá|\ƒŸ1Ü!#µN>,È, E’%b¸‰¨‡™³d.Y¦lÉ+®¨V£æù †þyÐßF½Ùà`ÚºeóÐ!ƒ×¯[[ªTéç^ì^«v ãÞ_»vÞ}èW/öø]í:u_üʪïWîÛ»·^ƒíëX©r|é÷½ ,Ø÷冠nU±ùfŠÛ?c«gúô¥K—¹æÚkÿ>qÂâ%KêÕo`ê\·vÍàÚ½kW‹›o9}æŒBt¦þHùvObK'ˆÿo¿5ò«¯æª ïpÝõ7t|â©gŸ~BCv]óëß}{TÿƒräÈùúðWW}ÿ}ž¼yZÜtK‡Ž³gÏ.{™•.S¶Nݺcß7o¾ÿýÿ_¹Bé’¥J÷øÝïK–*eDzýǧ}úI…Š•žéú‚¤­^ÊWª¬kbØ'ŒåɘwßV©gº<׬ùõ¦ZÙO:Å‘¯V<]õœ™V妛Z9õœö^¤eZýÍ—/ŸZ,\¸°>—,Y¢eÁæÍ›+}äÈJ~i ¾aÆEŠq8æ6X³f‰UOŸ>½Q£F W»m•Ävh h¨âÖè«”ÉÖ¡5FŽU¹§ql~úÜ!=çÞôiŸL7öOƒ†èrøç§S??®ûïzÕ¬Uû«9³gLŸÖïO¯˜¶¼ã®·F¾‘'OÞ®/t«^ã*O‡ÉL¯R7¼œ^©%B¿Îœ½öߥwÈ+¬Ruê5TG6oÚ¤œ£?ïþB×Çýî÷}®¸"S¿Þ/:}®á5M ,”;wž_?þD‰’ee–)SæGýxÏ?ôY´pÁØ÷Þ3UmßþãÎ;MZM\¼†÷Íi õ¨ÈôiŸÞ|û7ßz‡êüç§ŸX• èßwÇO?µ{¬Óùóìßoù)ß*$‘Èþ7m~céÒe塯ñºnRw4dË—.}oô»W7jœ9s¶îÏ?ûÃêÕO>ÓõÚ¦Í?˜0nÄ_^3]–ÙÂùß|2eJÍZu7nXÿ‡ÿí)¶Õª]µbÙÒY3g:°¬ß°Ac_ÿêFgÏyLûİOãÉ'SþÑ á5’ï¯þùS­ì%ˆùÇŽŒäj¤™iu3GÎ<©7О£*Óì–;|ø°JIΙ3GKŠ×^{­¤Ø‚ .^T¶?OƒR¥J)<¦—‡:uêäÍ›×ÓÆVGìIǸ9TcÖå&{¥ÕS0ÒR­eãÙëlðÄE¿l·/û2ÒÜ+S®Ò¶m[-Z¤V´QábzáB¥çΙS¼D)%ÔÁË–½ó··êÕo¸vÍÇîeéÙA2“…Ѭd)§Ÿ±½«]¼»ý{µ±x©2º);~L9óæ}³ß¾;~qo•jW5jÒôƒqc´¤bå*¹rçÑýºq³‹™uþÍóJ:x°LÙrË—-±ªÒÍÉ3ít:ä±Ugðr[$7®ÿýÿý©HÑb•ªTÕ;e§gžË•+÷þ}{®»éÖ–wÞÓJµ-Yü­nöª?R~ð},Äÿ •¯Ì_  ü´ÆQé,Y³¼2lD¡B…¿ùjöž=»ï¼ûÞ·Ýqã­-gÍülÚ§SêY³Å'g®Üý Í’%Ëœ/¿È’%k¿AÃN?ñõW³·lÙìèݾ}ûUm¶ì9ùŸH“$g®\ÿ7ðÕœ9s8qrάÏ7nÚT¾BE•rçÿ¸mK$W#ÍL«›©:ÐVcN(¬%àÚ©vîÜyòäÉ*Uª(Ê%ñôÃ?(.U @«òHºœ{.S¦Œ,·oßî_‰U[ØD¤ñõ¯ç¿Gÿ¢ì²êq´™þF=kÕÕÒnñ9ÿϹW©j5E—,þîÆ[n×ëGñ%—/[Úæás‹¿[ø\÷^ÿò!Ó} цo¾š³ní±9fw’tr@f%×xýÇÛX®ÕK¯ÄVÁÇé¶^²TåìÚ¹SUO;úƒqï)‘-[öý”©PI7Gë¾£;øØwßúvÁ7{ví:wþœ6ßü«*YX …öôœ1e¹¼üçÓ?Õ—éF¾>LENê¹}òÄÜ9_Þ|ÛK—,VN…ÊUMß§/ù)?x‹>–‰ã¿º+?ÿãÏÅ]zEóæ/¨Eøtª|¥*æl…JUV­X¶{Ïž¢ÅŠ«P±%³fÏ)ƒL™3—.[.S–lÙr^¬J+Îÿ©MÇW\QDöÒ¯ß-z¸½××ìã¿ÓùòåÏ’í¢8+S®¼jظqC©²åÕ´;ßžÝ2p»Z¸HÑH3Óêfª´¼JáŸbWº¾…R=Ú_¥O©+­*!km–7­D5R‰©*†OǸ©Aýô©SVAmGË”9Ë¿½úâHñŸÕ\ˆš.Níÿ\&ö;¤ÏeR³NýKµ=aq¡ÂE$¶>ú`Ü÷߯<~ìxÚu/úpኢE‹ç+PHé9s)”‹c!ú€iÂ@f%Ütèì¹K·„€Ö—Ì.>Ý.\aœ9ãŸÊÖ=B9…ŠSú÷ÞÿècOZU*_öºû›"_Ïž©;ˆ îþŸ6½÷Üî;Lþ¥‡æ¿ªµ§­zbN˜úƒ?¯Õ–YŸ×iÐÈt§`ᢻ?ùhÖŒÞpóù ^Üþ²g÷nÕ©>}JßW:R~ðF},Ç£þ,ìÃdè)bÎJC+¬’'_^4³MI+e³óçÿS›!P®B•,Y³nÚ°nÏž=…/M';{‹‘ÒÚû¢"WÖ¨õ¯¦ÿí°•úô¸]ûeô™™ªmïilé-[¶¨`±b/Ã\¹ré³jÕªõêÕSÂýÕ@E‚ظk’c&@K˦hñâ»vîøùçã \éž²mëæ«jÕ5õØ'ƒ5Ð14aµe%b¨Ä1áíwHŸË¤v½«õòùñ¤ õ6¾ªv½ƾ;~ÌÛ5jÕÉ’5‡|°wмíÄà˜Õ)ÉH™•Œ£vÑç³ÿ^û Õ3gN+Þ 0ÏšÕ+>û䣂…ŠÜsÿêªvýFyóåŸ9ãÓr*W»ªöÖÍÊ–¯X²tY…¾™ýŪ•Ë?vì¸ÚҪЂy_ïüIK'ôÓ )S·NË{:”onc«N÷)ϜŋæË«'»öÔÝÜìøéÇK¾Ý¹cGÕµ¢ûfÎLõiå²ïŽ>\¸hQÕ)ß³þ°™‰ãÿE½üßsƦZõjûÝÂys›ßtÛöm[÷îÙÕ°Éu™2g5Î[fz)¿$¹¤¹µ»ý¿FÜ`É_¨Èwß÷éÇ ü¿^·¢D©2×ýðýòÅ>ötŽœãaÿ©ê¿Ó»wíÐBe‰’¥—-^TªL¹….Ž‹ìíù¥Ë–W~$WƒÌÌThC ì§äþnéþ³gõ3c6lÐΪ«®º¸9ºdÉ’º¬$¼ô­Cm~?tèPþüùÍfyÓD$ý*ĶmÛöíÛ§‚‘lÂ:é¶;«UC­: tǘøþ;-ï¹oÁ×_?v¬JõšV=ö¶OwÓ¡r¬úC•Št‡Œ4÷ÔÊUu¨‰ï—/¹ãžût÷Ô}få²Å<ö¤å€}æËÒÊåÆÉK€-ðÉ:vçÎ_ûO]=zäð€?þvø+}–~» ùM·÷úfÎ\yTOÎÜyŸûÝÿ(Xèõ!/wíôð¨7^Ý»gòonyn|}zv;ëókšÝ õšwþ:ìwuãf§NžõúÙ‚Æ{Úäüô†€e-³¹3g\Óôúl9rZ9ê£îqsfÎÈœ%ÛÝ­T÷G¿ùZ¹Š•µsKºAf‘ò­&Ü3HV_ìä¥Ã.=þ¨x=ºtüËà~u¯nÜþÉ®ÆÒn¦´HZù]VmV¢MÛÇÛ<úØÎŸ~ìÿûŸ}üÁ7‡’nÓ‘£*ZUIä}öé?þïwÏIp<Ôþ +_‚xÆ'™üÝYù‘\ 23Su MïÂ~j)P?;þ|íµªX±âí·ß®«*Ñ×<›5k&¥µpáÂiÓ¦é+‡'Nœ°WÉ@Û¹¤Æ¾¼¸{[${=±¥Í…ú|°ý“ñ_}ù™fÅ?&»áæ–wýÏÖ@{N€Põ{v$T –3‘î‘æž –*[!BY³f«^«¾¦Y•j5äOíú×Xuêð_i]—.süÓ³ƒd& LH_ñÓ"0xÔ¤‡~õ€uÇıŸêËM¹ó\Ü#bý9|0_þ‚ÊWÎÏG(î¥ÄÑÇråÉ£›‹e–’Äø‰tëØÆ^CjôQa<­ˆe¿³·)ßnãŸNvÿÕ;r®\y²]ú)ÿÎúŸ•Û¿w·>‹/iæŒ}—÷,T¸ï7/α|´Ìaì™ïéj™™­_RmÓæ¿¦®£ 1ž>}Zöò¬ÄÓ@;ß³ì=m¬³þ w×RrUjJìÞù“–öQŽ:ü=4gÓæê3myν N¦ÄÆÝÁ”ÔFÙ4# ë¥÷Î,¦ð87”J‘ç¹òÈQGå¹óЋ×Å1}ÿ+w^s6WÞ‹bËaßNƽò¬Ù/.qº«”ŸÂî¸Ja…‘üŒ”ª9²'œP•ã‚E.n‡·æŒ_ ÿ^‹¼8Ç4¿\Kážùž®™™qå׸ž3¿^æS¥§]c©¬§OQO¥dV-QÚ9ÊÑ&@T"¤ÄÏHu*ßsîùØs Ȭd—žaÉê|@¿“½ÉîÀaJ‰Y‡gºeÍ–P)a˜Æeã;X©7âëgC¦¹ôD™•¬£yößû]’µüNö>&»ÿ†(¥&Õë6R€J)Ç4,ßÁJ½ _?Ó0M¥7ȬdÑŒð®–ì}Lvÿ“õÚÀïÔ$,³:YüLͱ¢î„ €ÌJˆaˆÁ‰s®],1T’àE’½Éî‚OÜ»,’eV'‹Ÿ—ei4- ³Ò’v<ÛÊ!ñdïc²ûÏùJ]é…@²Ìêdñ3½Ì ú‘2+"š?ñÅ?§$¸‡)w/Ùû˜ìþ§|3H úრÒSu3Yfu²ø™qfN†í)¿›•a‡žŽC€ ZÌïf9 0µZ£^@€ Á ³2Ø€Ó]@€ÒŠ2+­HÓ @Œ2+ƒ 8Ý… @ ­ ³ÒŠ4í@€ Á ³2Ø€Ó]@€ÒŠ2+­HÓ @Œ2+ƒ 8Ý… @ ­ ³ÒŠ4í@€ Á ³2Ø€Ó]@€ÒŠ2+­HÓ @Œ2+ƒ 8Ý… @ ­ ³ÒŠ4í@€ Á ³2Ø€Ó]@€ÒŠ@Ö´j(ƒ¶3xÔ$«çÝ:¶±Òé8‘»œÂÑ„X R€@Â@f¥ÖИgçãí¶ˆÅÖ}JA€@@ÑeV›6m:tË-·ôìÙÓTúÁ¼õÖ[U«V1bDÀf2š™dzÚ:zmr¿õž§Ò2œ­"R?:u²ã›øæ›oúöíû‹_ü"oÞ¼§Nêׯ_áÂ…GŽ©VLJ‹ IDAT¦Nªt 2+%]–°«[·î#ï¾ûn™2eÜù‘rΞ=›5kô ?Rqò!@ 8 w[E>NŸ>={vU={öìà dXË<9ƒ²µ*ThÈ!æPÈÊ{â믿VO<ñD®\¹”\Μ9»ôbèr•*Uºwï¾téR‰¼“'O¾òÊ+qïlÊ+tK|‰µhÞÔrrö×ó­´#1hÐ )$e¾üòËëׯÿë_ÿª`¤K”(á°ô9ìÚµëîÝ»öó±á Ä‹@ )P©R¥Í›7/^¼¸iÓ¦Û/ý-ZTaãÄÖ­[‡®û~©R¥t7kO«W¯Ö­|ÅŠ TtèÐáÖ[o•±gæÐ¡C•¿oß¾zõêµk×NmÉríÚµ¯¾úªž-Z´Ø¿¿".T¾g[Æ óéÙ„\~ã7tJÎÜxãòG+>²ïرcµjÕ~ûÛß*ýÌ3Ï/^üü£ÒêEÁ‚›5k6zôhE}rçέÇêªU«2eÊ$/¾ø¢¿ŠëôïÞÙøãþÔ©^ƒÞô heÉ’¥lÙ²ö"OôXõìˆÌϨ]»ö¸qã¤Ïw”·J—,YR"FŸö:ßyçyóæ)G]¾îºëüqõQýíÓ§ÝLiÿnÚcî²BJ«bÅŠï¿ÿþÞ½{MžS ¸í¶ÛF¥qÔ¡ÆNöëÖ­“6ÕTÑÈž9sÆŠÓDôP¬Œ?îq‰#±FÙIJr}÷Ýwž“ÄG£®4â9sæ4eÝ#%, ¨U«–¦ëÁƒ5%:wî¼aÃ]§çÏŸì±Ç”¯³>¨­ù/¤î ܳ ½#¤!@@Å0®¹æÝÙçΫsæÌiÒ¤‰îïÒ:T¢G‡îÕ«—rú÷ﯛ¸ò_ýõmÛ¶éµ[!“Ò¥K+'R¦žaRW*¾hÑ"ë%[O­èÁ [üÂ… wìØ¡â‘ÚºT÷¿>Üí*'׬YóÔSOI$Mš4ɬީÀ?þ¸gÏSRMXy¥µùfìØ± 6”Ó“ïÎ;ïìÒ¥‹Vµ‚¸ñóɳ>ÿìÛÓÚ2¥mRú³Ö†žDêˆÌDIKfzpnܸ±wïÞ3fÌ«’¹fÔì­4oÞܬ1éY{à 7蔊[-Z–Aºi+áÓ_²[ÚÓë¡>vìØÍ7ßlNyN 9©îHø6hÐ@BãhŒÓ©öíÛëðÀ&ÓgÐC±2µyŽK¼ˆ™&쟆¤=Ç?í9RÒ ¯Ó§OWäR^ìÕW_­+WzZ¯ zsUFBmÍ]€ž¸gA?9 @ ÍÒ=ZJK놊hÅPªH¯Å–žîŠ6Ý}÷Ý5jÔÐM\”-[¶("¥Ì#GŽH1hS—YÒÕ©J¤]ô©îråÊéæ®´` E´lÙRÊF‡jÂDÎ<Ûª\¹²lÌŸg*¥¹~ü¸Š(ÎáhêÊ+¯,P €2¥·§ì‡QiÛ•Ž­Ë [jK–Šk£Ø£>jêtO “/¯ ¦¶ŽiP¤´”© ¨:¨Xé½÷Þ«Ã%K–XS%.¬L»žãbNÙ?ãE,,ÉHíj’ëõ@¡>IX½~ˆž„—4–T£5ô‘P[³.ÒlTЄ4 ’Y¤Õ%=Û>üðCiŽÆ¿ýöÛ†k”P4ÂÈmÞRdK7t-ÍhÕO‘†?þøùçŸ×~yÏL…¾T•œªU:þüªmÙ²eútåx¶¥|ëϳ‰;wÊ@+Sú”ª•˜“N*V¬˜UÐ(R¤ˆ4–òMqE‰,›¨nÈòØ©ˆñ«wB-JÛ)_:É:ëð$RG´¢d6ZI>J°j ÔY«’Aºi¯6¶.—/_^ñN­WšÅ,uÜsJ˜†4dÒXJ«§FN™©¢Ùe÷DiÿAËÊs\-ê0^ÄÂ’ŒÔ®Äú]wÝ5yòd½#¹ÉaÔÖ¬ó¬Ü§  9€22 2KËmzÁÕ·ý¯½öZ³5ÄP3b¥U«VZà³s”½¶ é/&éðÚk¯é¬;S¡—‰'ê+uúj[·nÝ´ #³ *èS‘0}þ|éO{q”ŽÔ–NYî&̃ÙÔ&3é9 ÎÑ¡ÙS,i¨í_V%ö„[&vbò£º¡}Wú톇~õ€½+=~âž³d ‘¡ým–¥#á߇qÊ£vÓÞDÌ]VpEªýÁÔÔÒ7Xõ[ žSÂÞ–=-5 C®ô©g¿Ñ|K#¾¬üÇÅò'6bï~øEûûnµ*ÑáñSg}&‰ei%"µ{ôèQÅnDA¾M›6Yï-F¡ªxÔž•«Z÷ekùC€,Ae–„Nýúõµ¡ÆVa%´W!(mQ”Ål ’HÒk´Öd/ñ4eÊ=Je©$îÌ'Nè”%µ)[JH‡zRjS‘öqkw‘ôö­K ™ÀŒg[ö=ãžMh•œ×OhÅP Lz;×Þ^ó0VÔG5¤eD­¤Øûe¥­âuêÔQZB0ª¦ì‰ÓÞZ5‡MXž¸;¶ª ö»i¯*æ.ë×+4Ú¯¡ñœveooQR^›çôÔ׬ÓW4´N­¹'ƒ4fe\Š™Øˆ 3¬NÅÀ0R»úÞ†dèïÿ{} B¡e½íè‚RXkæÌ™ßÿ½6oAíYy‚VH@ÈÈm7€´mè7¿ù6`ÙyåË—O®µ¯V›Öõ»>º•k#¹¶p)8¡Ãûï¿_;mµßVE<3µ[úL±.m~W J:Iß`ÒÃàÙgŸ•z[°`Á}÷ݧG¬QEžmÙñlBᨗ^zI*Jñ6mÉ׊4M)á”Ðw÷î¹ç£íµ™´).¡¦ÝNеèkzQÝPAEw>þh²þ8}Öúgr"…²ÜM;r|:â°ŒËanÚJI—5ÄÚú¦}났mCî)aoÈž–ÆR$LêJ{­1¡¤1+ãRZ³CðlWoD_~ù¥"ÄúA²_þò—ú È'Ÿ|¢Ršêz3Ñ:þ_|áyõÙkVÚ³ò õp@ cÈd}9+…ý× …bNö_{ÒSS¡)ݦí5{fê1iveéwP%hôìÔÒž™Z¬Y¹rå /¼pýõ×K*Yõ¸Û²N)áÙ„òU¹´”Ql–½„CõgåDJh´¢nfÿ“±ñwÃØè—¬ cXV &áÙ‡MƒtÓÞ\\ºìžö&iW$Í=#^iÌÊ8vYˆ©éàíj2ëÕȉ¢vW° c°8„ A˜Ÿ:Š›ÌŠ/µ'Ÿ|RËsÚa£•Dýú€~tÛ¾8ß¶¨ € Ä—€‘YÑ£8ñm5`múmýþ“”–ö{™ñ b@€„@‚Ê,-5j½þn@€ °Bl[5ö€ @ #@feäѧï€ ¤"dV*Â¥j@€22dVF}ú@€@*@f¥"\ª† @ #@feäѧï€ ¤"dV*Â¥j@€22dVF}ú@€@*@f¥"\ª† @ #@feäѧï€ ¤"dV*Â¥j@€22dVF}ú@€@*@f¥"\ª† @ #Èš‘;Ÿò¾5ɪ¤[Ç6Vš ä%À-.cƸ`LöJY1Ž ¹~o÷°U~ð¨qJ#¶, qO\¸pa÷îÝY³f-Z´¨½ò1cÆäÉ“§uëÖöL¥W¯^}æÌ™zõê9ò9ô!°|ùòlÙ²Õ¬Y3’vTãH•Xù&Lа>ôÐCVN&ì]Ž—{êõO?ý”ÿÒ_¼êŒK=ÜÙ.#FnqqŸh•d:pà€¿OmÚ´9tèÐ-·ÜÒ³gOcùÁ¼õÖ[U«V1b„Ù4>Û¶mÛ]»v¹}÷ÝwË”)ãÎ9Gw¢g;µõ,>ü­÷ÜJ+^Ž={V"ÃÝn‘Ûù 9RKzkâ>}úüùóùòåk×®Ý/ùËÌ™/®z«û… 9r¤£ªÎ;kꪔ#ßÿ0ÃB6X"Á´ Ù ìiË TBã¨GË{ï½ç.i Ü–ÊY´hQ¯^½tSzýõ×5+¶nÝúÔSOýïÿþoóæÍå¤ÿLº¬ÆïY³2cë¦KêïÔ©S>¬É\§N!C†˜¦Cu9’·)É{g3püñÆìOÔ‹¹æÔ.Fnq©=(—¥~Í„þÝ;{<³=½™?¾žpÙ³g×ÙÙ³g{Ú\öÌAƒé>%7^~ùåõë×ÿõ¯Í‘#‡K”(wßòä ŠNMÇű®]»*–#µ©/I1F‘œ÷Ï×PN™2åÁ|øá‡5Ä:ÔÓôÔ©S¿úÕ¯| 0@1÷©Œ ÙÐл“¯n8îœPÆîâ>9QÂQ¶qãÆ×^{í‚ þñÜ{ッ¼òJ“&M¤±,³´¿:"¹´}ûö÷ß¿eË–]ºtÙ¿ÿÎ;“a»lu-¾‰Pw6«éÔÛz5[ΧFÂ`lѼ©Uùì¯ç[iw‚[œ›IºÉ ¤*Uª´yóæÅ‹7mÚT÷ýiÕFï †‚^‡.YSªT)Ý)ÌrƒÖk$V¬X¡Õœ:Üzë­2öÌ:t¨ò÷íۧŽڪ-Y®]»öÕW_•ªhÑ¢…îDz 8Pùžm7ôY²dI“6êJ¬œ9s*Gƒo¿ý¶wïÞå˗סBqçÎ{òÉ'åmÁ‚Õ)Ýõ2eʤ×ßfÍšÉÀ¿£OMCîOI×^ƒÞt´"9æÙÖºuë¤jÕªõâ‹/ù$wîܲ4 @@>ÿüs…ÐÊ•+—1›>}ºc5µŽ9¢OxŽ©jÖÜXµj•F_Ó lÙ²é²çµæ Á]ײ.Š>}úšçµih›O “1ÖDÕ´´Ÿêر£†Ò³EÍpÅotukôõïÐNœ8Ñ1‘挽ŧŸ~zÉ’% ]«f­ÇÉ7ë¬ÿÕa™ù',Ò]Å^‰§KЏëB1ÝBug07w—ã"Jî۬穠n}µk×7n\Þ¼yuÑ WZ uïÞÝ4gwÒJÇpg3eýñFrÒóÞk9¤fÏÙå9ó=3=‹íÑcwÛÂØ¨Q#{¾$×wß}çù€àöYo›øé@ß4¼æšk$\æÎ«þÌ™3G¯‰’/z2éðäÉ“=zôPô[{åôïßßÄlضm›¢JO<ñDéÒ¥ ÏÌ,Y²H]©¸bìV¨F:C7#=MusY¸páŽ;|Ú2•û|Ö¨QãÇüòË/eóóÏ?ë}W]PZÕjsÉ´iÓ®¾újé¼aÆ)3Rìõÿ|ò¬Ï?»¥Ú³­jÕªU¬XQ÷ô¯¿þZ aB-÷ä°îJ’’YO{åÉ2FЉj¬Y³F¢VÊfÒ¤IÖbŸޱcÇ6lØP ÌêÝÆ5©¤Â­(K$Â$¾5ÇŒ™®RÇ8*_SÈgæÈ“ßþö·ºñÝyçŠ+T¯^=Ý@VßÝךçd“¥»ÅÍPõ¼6Í)óik¼43õ§õq =6ô&©E…šT°}ûöªÄsÓ‚c |æŒÝ½æi™éøñã“'OÖ­CëÈÖYŸ«Ã²ñO¸'X¤»Š½O—êׯ/¤À›fÔ¤±wtY™öqÑmÐó6ë9@*¨{¦.½ŒéÚÑëåŒ34½õÒkîáviŸÛšN9Œ­C¼‘œtß{­ ­„OÍ‘f—{æ«6ÏLOÇâòè1­^X‰HùÜââõ¬·P'T"ÌÒ“^Ó]Á[½zjÅð†n°ú ëYÑ&ÅœtÓÑbÏž=[¶lÑ[š2•Ö;¥âö&¾å™©zt¯‘Måʕ˕+§ O9ºËëåU™zþ=óÌ3Ö’Ÿg[–'> =Î%ÍZ§¢ zŸkР±W,D7ý^xAÒ_¯GAZ9vò¬Ï?O§"µ¥—`9¦7~ICñ‘~•ð’ÆRÔGX *ä¨G‡É2Fê²&†ÂZ4Ñàj—•žFš«zœHì*.bç6Oâ *Ø{m“z¢›L÷8Ú=9KÖk¦]ýõŠ»ÈŸ»ï¾;Ý@ö¼ÖW‡½¸OÚ=Á|î*özÜ.‰ök¯½¦w§M›6)òôÅ_ÈÞÑeSƒ5.º©ºo³²‰4@òVtéÍDbbðàÁÏ>û¬ìEÞÔéÓ綦S‘JùãõqÒqïu×ïS³çìòœùž™jËíX¼=£»;‘ò¹ÅÅëYïfž9d–Õmñرc~ø¡&¢öX®ë%OiE ´iæïÿ»î¶ŠléN§Û‡âÕºŠ4•µà%ÏL=_Gõøã?ú裺èzå²eËô)á¥OûŸg[vƒHi]«º'Jº) ¬§­Zµ²,õEÕ¡ylkm4H+ÇNõùgU5©-Eîºë®£G*®£]½Që1I1FŠsÈ[óÔ”Ð(K»ëbºP¤H·ˆ4’K0;‡~øA‡–s£ÝØ“³ñĽüj/èN'dÏkÍ‚é 'vÏkÓ ÄžóÑGé5æŽ;î¶P¾g‹æê>«Uÿœ±; mìfÃÀ›o¾iÏW:ÒÀ9Ì"º'˜Ï]Å^‰§Kz»PÔDoSºãIYo ö‚J[ãâIÒg€t]Hién,™¥×W%ìáaG+öCŸÛšNÙ-éHx}œt#uÔi#ÕìÉÄsæ{fz:¯GÁèîN¤|nqVžƒë°I¢Ã 2K2E¯Vúb³4–¹‘™N+VL —OÿýgE²ÿÛßþöÈ#h†YŒ“™;S&mJP`Cœ3uš¸…"a:Ô›±þL~¤¶ÌYÿÏ›o¾YùË_ô¥˜Ûn»Ím,¦L=t£¶¢}W3îø©³žÿtʱ1ËÝ–•©- ¬Y³f鿍½&zåµì µ‰¤#³”cWþKµëI E@G_ì‡W^y¥Phw…™ÉWõ¨Óʯ£ëЈ€sF¯sÚð‡?üÁ,}õÕWVUJDº:ì6AÒö õ®âã’žýºmêÜ‚ðý÷ß›¦­.;<ñ$v€uºSrg‹„7ˆ“v¤n¯"ÕìÉDÅÝ3ß3ÓÓ±¸Nºï½‘|ó¬Ù“‰çÌ÷Ìôt,^ž0ªÜââò¬4‹.c~ôŸ' èœÖ¹ôZ¦(”e¯ðƒBSº¬%<3uÏ•¨ÒYÝ©uí鿥À˜î¿REŠ3éÙ©}ʺ}[õ¸Û²Nù$ôefµ¢5ËÆúÕAE‰´n¥kÌ:¥DVôÝ]«H(e•2‰ mK¹*QkÂ{ŽJ¢º[ñÏ̸‘ÆZaNÿ8–£G è[TŠ}:~Þ2SbkS4^/–›€N ©êÔ^Ë,}@öGõÑ‚ÕwGÂ=îƒ ‡îKÐ0Ù·xÖãˆæŒgµ1g:&˜êqßU‚T®¡Ñ²©îuR{G—gÝ$ã2@ŽVt¯;›©Ùí¤ÿ½×íOŽ›‰çÌ÷Ìt;ßGOXŒÜââò¬÷™-i|ÊüºG ßÍ â™CN©ˆž î‡¨g¦ÑX*"aÚR„LTíÉÐJ¢öߘx˜å†»-ëT¤„–5µ½Q¡2O÷ÍNfAZI‰´²{¤-cï骽*Ÿ´»ÏáðÌŒûYcíã°ã”ÌŠç92퇦NÅDvUguÿÕw`ín:ëFêαWâŸv7áÉÓ33¾=›ón}zävÉÇ8Ò)w‹vQ©”òÜñ©<†Süï*>õkh"ÍdG—•¸IÆe€­è0^w6S³“þýu;æÎq3ñœùž™nÇâûè ‹‘[\ÊŸõîrÙsâÍŠoOô€ÔO‰HiiOºã›ü±5¤7zv¬xêË犜iÏYlufðRq£xñÔ¡^ОžHq¯xµ•Úõ$,äÔîxRÔïyWI Ï/»“ {ïMŠ+Ž[ÜeŸÀ0Ѭ•Yû€ @H@Ffý×n¤ô— @€@’@f%éÀá6 @‰N™•è#„€ $)dV’nC€ èY‰>Bø@€@’@f%éÀá6 @‰N™•è#„€ $)dV’nC€ èY‰>Bø@€@’@f%éÀá6 @‰N™•è#„€ $)8ˬåË—¯^½Ú°3fÌäÉ““” nC€ Èsù6mÚ:tÈ*þÀtêÔ©_¿~… 9r¤ò§NªtëÖ­-€ @ ãˆ]f‰Q¡B…† b`åÍ›W‰#FdÎçYÆ z @€@z""™•%K–²eËÚqôíÛ·`Á‚}úô±g*½uëÖáǯ_¿¾T©R]»v­Y³¦Ã€C@€ Τ(òtîܹŸ.ýíÚµËpÙ±c‡•¶Hõp € \^¡‚DAe–g—¤®´×Êó”=³X±b:lÕªUçÎíù¤!@€@:&"™K£FòçÏ?}úô*UªÔªUkãÆ*TpìXf€ @ Y¤h |ÀNæË—¯wïÞúâ€Ú¶m«uƽ{÷,‹ @HR™8Õu-CzîÍŠZÐapôèQ}ÓÐü–㇀ @ ñ EƒGMêß½sZ,ZÈÖ²Ò$ @€@ú&‹†é› ½ƒ @žYžXÈ„ @)%€ÌJ)AÊC€ OÈ,O,dB€ ”@f¥” å!@€€'4ý¦¡§—=3Ô¯æ_voq€ r¡~§iÒ¤I)o1ÔЦM›°½@f]$Ö²~é°à°‡ vÏìg IDAT$)Ëv„õ<…¶‰·Mk²h˜àÊ{€ $+dV²Ž~C€ àY >@¸@€@²@f%ëÈá7 @ N™•à„{€ $+øÈ¬åË—¯^½Ú03fÌäÉ““•~C€ 8ýƒúJç¡C‡¬ÖxàN:õëׯpáÂ#GŽTþÔ©S•nݺµeC€ ŒF`Ê”)§NR¯sçÎ]¬X±zõêåÈ‘#£A-³¨P¡BC† 1¤òæÍ«Äˆ#2gŽO`,£ ý… ¤W lذá¶mÛÖ¯_/±U»víôÚÓHýŠEfeÉ’¥lÙ²öûöí+”}úô±g*½uëÖáÇ n©R¥ºvíZ³fMe*!ãÛn»mÔ¨QyòäÑaµjÕ”?tèP­<îÛ·O‚·]»v•*U2ÆeÊ”ÑÀŒ7N’®gÏž«V­RºdÉ’Ý»w×g¤V”Ï @—‘€B0ZàRLKJ [¶lÆ“Y³fåÌ™³téÒz _wÝuË–-Û¿¿ ¤.êÔ©£R[¶lY³fÍõ×_/°yóæµk×6nÜXUmß¾]ÒB¥d/ƒ½{÷ª”DB… Tù‘#G–,YrðàA•’¼+R¤Èeì»i:–Ô¹sç~ºô·k×.SËŽ;¬´Õ¥“'OöèÑãðáýzõÊ”)SÿþýÏŸ?¯³2^±bÅèÑ£4h°nÝ:ëgUZêJÆ‹-š0a‚UóÂ… §M›V«V­7öîÝ{ƌիWW sçΕM¤V,7H@€ pYœ>}ú‡~Š’~2ѹñóÏ?ïÙ³Gù%J”¢ÒÓüÀõë×—ð’*ÐnoÙäÏŸÿèÑ£2SZÒJi#3¤>$¡”¹téR‰*é0…fÌšÄÉœ9s$鮽öZ©Ž \¸pA–—÷/™%ØþÒßóÏ?ïã½ä‘Äf‹-jԨѤIÁ’85öêÿÀMXKLMf—.]š7o^¹råråÊÊ&?W®\ƒ zñÅ5’bƒ~öÙguJzVŸ>­˜â|B€ pYœ8qBrêÌ™3’YÙ³g·|Ðý¦›njÔ¨‘¤ÒñãÇõܯX±¢‚/²Ù´i“ä‘¶')Lµ{÷nh²Ò‚£>U\9gJ¨f”üÒ’—‰ZíܹS‘U¥ —ÖÐtV•[-^®D,‹†êü°aÃä±Dßb¡³cÇŽ?~¼b§È–±×V8QPZʈMq|ûí·çÏŸ/¹ª´d¬±Ô§Ve¦„FEøTTšuÖ§ˆ @iO @’SZŒRlI‘…¬ŒZ4ÔŸÒÇŽÓ§ÌL¾ö)(# evÍ+­?i€òåËk‰PۊΞ=[¼xqkMpñâÅß~ûí† ”–21UIÕÉR’(f¾©ùr}Æ"³äºtbT¥¥dÓªU«Î;G5ž={öĉõ¥E}E±[·nZXŒZÄ„j%`˜A€  ‘T­ZUÛ°´eÉ,«f#¶´Œhr”P$Å|!QrJb@»²¾Ò³^»·U‰W&ģƢE‹jË—òµë–[n1µ¥eD«þËžˆEftZÁ@¥¦OŸ^¥J³³J;Ô{ç­ª$]•îyóæiåU‡¡A¾ùª«9€ ¤6-jg•¢PJ˜(”£EI(-JNiÑÐ, jÐ)³8¨hÖ•W^)E¥L¥„Ò6¬üQꔢYªAÕjíK²AÛ“Ù’ÓOI„h‰låÊ•*¥…2GBâÄáLjƲ7+ ùòåÓŽu жm[­3š…UÏâ7Üpƒ:üÚk¯ió{Ó¦Mµ¼ª/zZ:2Cµâ(Ë! @©G@{§´Hq,‰§ºuëºRxE}i Ï>ûL ‹’JW_}µ1“H’lR0LrJŸf¯‘Ñ^’YŠl}úé§úi.í7¿¡=EÍš5SóÍ9…¸²ÑÆ$ëÓp;“9™´½?j½‹¶žh\áâî¨ØþDY1@óEÿ¤dÍ®,‰P}•ÀèSÿ"ÖÙà­XELB½kY¿´#“C@€@z%0cÙŽPuý&€~œkÖ,骧Ÿ~Ú¬ôåÊ•kРAs³gÏÖçàÁƒ?þÕW_©*•uÿÉ#ãŠ-ê³Å^îß¿_Ö¨Q£I“&ŠmÙ²¥råÊŽ¾»ë'€ EÀBQ{Hf©ÏË—/ÿÄOhõM mŠýHôèóí·ßž?¾ÂEJçÏŸßò X±bÒX:”N2rjÙ²e:¬Zµªec;wîTBË‘ú”8“Ö‘\“R ÊÑÊ jPBªKJ.{öì²Ña¤?íÍ6l˜ÎʽH6Ê×Â¥>™3RLÕ*²¥ÏŽûÔÃ)@€Ò1Pñ—-æÎ»qãÆ>ø ¢S|ð˜*Â4qâDE¡¦L™¢°?å"EŠÈ@+}J“:uÊØ5¦…>s(Å&EU @söSêJ{­ôW¼xqŸ²FõjÕêÓÿi}ÓÇžS€ @ÀŸ@Ðh–O-ú•-êi|³fÍNœ¸¸¼˜3gÎyóæI'éPâ)GŽžÅµ“]Ûµ&X¡B…Å‹9rDëz²lذ¡v¾óÍ7Z1ÔR âLªYá%ÏJâ•Ù¨Q#ÅÞ¦OŸ®(šÙø%¯{çãÕõ@€ ¤(šeIEuìØQûÖµMªyóæ’)¯½öš6¿k÷ºö•닇‘8Jc)&uõúë¯keÐÄ“d¬e¾—^zI[×;wîüòË/_sÍ5úÞ_¤J╟/_>m¨×7 жm[­3ZߌWÔ@€@†"Éú~ŸO·µ j‹’”“Ù•¥ß/U\ÊüC¤úñÒš gÄKŵ.™Úq,‡cGÕf/ó [ŽSB€ Á EƒGMêß½s ݸ­ï ¹Ï:rÌ~vG¦9 Rܳ`J2ÖJIqÊB€ C ‹† „ @p@f¹™@€â@™ˆT@€ÜYn&ä@€ 8@fÅ"U@€ 7Tù¦¡»™DÎ õ«ù‰Ü|ƒ $êwš&Mš°ÚômÖ¦M›°Df]$Ö²~é°à°‡ $)Ëv„õ<…¶‰·Mk²h˜àÊ{€ $+dV²Ž~C€ àY >@¸@€@²@f%ëÈá7 @ N™•à„{€ $+øÈ¬åË—¯^½Ú03fÌäÉ““•~C€ 8ýƒúJç¡C‡¬ÖxàN:õëׯpáÂ#GŽTþÔ©S•nݺµeC€ ŒF`Ê”)§NR¯sçÎ]¬X±zõêåÈ‘#£A-³¨P¡BC† 1¤òæÍ«Äˆ#2gŽO`,£ ý… ¤W lذá¶mÛÖ¯_/±U»víôÚÓHýŠEfeÉ’¥lÙ²öûöí+”}úô±g*½uëÖáÇ n©R¥ºvíZ³fMe*!ãÛn»mÔ¨QyòäÑaµjÕ”?tèP­<îÛ·O‚·]»v•*U2ÆeÊ”ÑÀŒ7N’®gÏž«V­RºdÉ’Ý»w×g¤V”Ï @—‘€B0ZàRLKJ [¶lÆ“Y³fåÌ™³téÒz _wÝuË–-Û¿¿ ¤.êÔ©£R[¶lY³fÍõ×_/°yóæµk×6nÜXUmß¾]ÒB¥d/ƒ½{÷ª”DB… Tù‘#G–,YrðàA•’¼+R¤Èeì»i:–Ô¹sç~ºô·k×.SËŽ;¬´Õ¥“'OöèÑãðáýzõÊ”)SÿþýÏŸ?¯³2^±bÅèÑ£4h°nÝ:ëgUZêJÆ‹-š0a‚UóÂ… §M›V«V­7öîÝ{ƌիWW sçΕM¤V,7H@€ pYœ>}ú‡~Š’~2ѹñóÏ?ïÙ³Gù%J”¢ÒÓüÀõë×—ð’*ÐnoÙäÏŸÿèÑ£2SZÒJi#3¤>$¡”¹téR‰*é0…fÌšÄÉœ9s$鮽öZ©Ž \¸pA–—÷/™%ØþÒßóÏ?ïã½ä‘Äf‹-jԨѤIÁ’85öêÿÀMXKLMf—.]š7o^¹råråÊÊ&?W®\ƒ zñÅ5’bƒ~öÙguJzVŸ>­˜â|B€ pYœ8qBrêÌ™3’YÙ³g·|Ðý¦›njÔ¨‘¤ÒñãÇõܯX±¢‚/²Ù´i“ä‘¶')Lµ{÷nh²Ò‚£>U\9gJ¨f”üÒ’—‰ZíܹS‘U¥ —ÖÐtV•[-^®D,‹†êü°aÃä±Dßb¡³cÇŽ?~¼b§È–±×V8QPZʈMq|ûí·çÏŸ/¹ª´d¬±Ô§Ve¦„FEøTTšuÖ§ˆ @iO @’SZŒRlI‘…¬ŒZ4ÔŸÒÇŽÓ§ÌL¾ö)(# evÍ+­?i€òåËk‰PۊΞ=[¼xqkMpñâÅß~ûí† ”–21UIÕÉR’(f¾©ùr}Æ"³äºtbT¥¥dÓªU«Î;G5ž={öĉõ¥E}E±[·nZXŒZÄ„j%`˜A€  ‘T­ZUÛ°´eÉ,«f#¶´Œhr”P$Å|!QrJb@»²¾Ò³^»·U‰W&ģƢE‹jË—òµë–[n1µ¥eD«þËžˆEftZÁ@¥¦OŸ^¥J³³J;Ô{ç­ª$]•îyóæiåU‡¡A¾ùª«9€ ¤6-jg•¢PJ˜(”£EI(-JNiÑÐ, jÐ)³8¨hÖ•W^)E¥L¥„Ò6¬üQꔢYªAÕjíK²AÛ“Ù’ÓOI„h‰låÊ•*¥…2GBâÄáLjƲ7+ ùòåÓŽu жm[­3š…UÏâ7Üpƒ:üÚk¯ió{Ó¦Mµ¼ª/zZ:2Cµâ(Ë! @©G@{§´Hq,‰§ºuëºRxE}i Ï>ûL ‹’JW_}µ1“H’lR0LrJŸf¯‘Ñ^’YŠl}úé§úi.í7¿¡=EÍš5SóÍ9…¸²ÑÆ$ëÓp;“9™´½?j½‹¶žh\áâî¨ØþDY1@óEÿ¤dÍ®,‰P}•ÀèSÿ"ÖÙà­XELB½kY¿´#“C@€@z%0cÙŽPuý&€~œvÚQ}ê1§&L˜0~üø¨f—×ÀÞåxy¢É¼}ûö#GŽÄ«Bê Ž D‘YmÛ¶½Íëï§Ÿ~ åìÙ³žöú¯QªúXg?øàå<õÔSVNR'Μ9óÞ{ïýò—¿üõ¯ýÐCÝwß}üñùóçM§¦NúÙgŸ¹;8tèÐþýû»óýs2,dƒ¥_¿~Æ óAd§ÕاsjÚ¥?O³Hái¼hÑ"3áͬغuë]wÝõõ×_Ë8êÕ!M*ÏjM¦½Ë>fŽS>.i2ÿêW¿züñÇ[·ný /XCuÙ*E€@º'å?¶3hÐ s}ùå—ׯ_ÿ׿þ5GŽ‚R¢D‰àhºvíº{÷n½ýG*2þüÓ§OgÏž]³gÏŽd–Œù"6eÊ”|ðá‡I¾þúë§Nҳʧ;Ò–ó1³ŸÊÈ ‡#FdÎåµÁ"ÊØ*$u •4nÜøÚk¯]°`Á?þñ{ï½÷•W^iÒ¤IóæÍ-³´¿:"¹¤ Öûï¿ß²eË.]ºìß¿çÎÆÉ°]¶ºF€@º'Ef•,YÒ 0êªL™29sæ49zí>|¸´W©R¥tŸ­Y³æºuë¤jÕªõâ‹/®¿¢E‹ja"R+Ê×ÚDÛŠ+òäÉÓ¡C‡[o½5R¦ÂB2Öj]½zõÚµk§¶d¹víÚW_}UʯE‹zZHô 8Pùî)Óþ'ßÞxã U¨vo¼ñF5-[6¨û lÖ¬ÙèÑ£ûöí[¥JSJÏ¡O>ù$wîܲ4 @@>ÿüsßÊ•+—1›>}ºž^™2eR O•(SnkQFŸJ{z¥š%V­Z¥RâV¶lÙtÙsp=!8°k6júôécºÇÝÐ6Ÿ&c¬‰ªii?Õ±cG‚g‹šáC† ÑÌÑè+N™5«óò™8q¢c "Í{‹O?ýô’%KÞ}÷]Õ¬8±|³Îú_–™Â1Á4s¾ýöÛÞ½{—/_^ßzë­sçÎ=ùä“öJ<]Ò·.dÓå©;ƒ¹9¸»ìQrÜ(Ôç…©‚ºÃÔ®]{ܸqyóæÕ D3\i5Ô½{wÓœÝIÒ€Ÿ@зGONž<Ù£GÇ÷êÕKOz­péþ[­ZµŠ+êž®%‘#GJ]}õÕz5×óLRC2«téÒŽztxÍ5×HÃÍ;Wé9sæÈ^U§=[Q¾BÛ¶mS€í‰'ž°êôÌÌ’%‹Ô•œÔ:ˆN“ÔCŠG€… îØ±Ã§-2Š·©ËkÖ¬‘’²™4i’úhN©íõ;vlÆ ¥Àþ]âŠ7 ‹že)P €D˜„ü7fz²jõI ¤­5/¹çã•<ùíoûÝwßÝyçŠ+T¯^=Ý@÷8Fšì:7CÕsÜ­qQÂ2ÖxifêOëãÒ¯Rù‘ZT¨IÛ·o¯8`¯Ð¤á3gìeõ¢¢å¿ãÇk£ž¦eáÂ…­³>W‡eãŸpO°5jüøã_~ù¥ þüóÏŠ¢ÉmG%ž.Õ¯__2H7Í:©ISÄÑeeÚÇE—˜ûF!ÏRA]ºô2¦kGBpÆŒšÞz¡2÷‡“BH|1Ê,Ý R4H·lÝg÷ìÙ³eËõV/Á Òè_7qÝ‹¥–$¼¤±õÑ:H¡B…ÜD$ªô,ÑʈÂZ1¼á†,ÏVô&­¦Õ¢ÞûU§¢h²÷ÌT¾|Måʕ˕+g6•ëI¬ƒ2¥QžyækõÓ³-Ë%d FÆÐ¢‰ æË—OÏ©(c£Ç‰D’â"öwnó$®P¡‚½BÐÝd —ÞÚæ¢ŽË^A»±§W’ŒêÅõ×_¯¸‹ü¹ûî»Ó dÏqô„àƒ]§Üãn§jOk©Z“A ðHs(¨£·Ï¥ƒ5:×]w–öž{î9kæØks „ÿœ±TæÕ …š³>W‡½¸OÚ=Áô’ ³:¯Øªflƒ Ü5¸]Ò$íµ×ôJ°iÓ&Ež¾øâ •rtÙÔc]º-xÞ(" ¼ÕF]Gz3‘«:×…Û[r $&e–^‘ÕÅo´åèïÿ»žUŠl)G‘mà=zô¨â:U«V Øg=ºŽ;öá‡J=h_ˆUʳ=t‹×š‚Ô‰nÖZ””½g¦4ШQ£´]÷ÑGÕmZpY.[¶LŸ^V+&áÙ–ÝÆìD1OA5§¤ õ16EŠq‹H#¹³×óÃ?èÐRcùóç×£T9F~iýÔnìé•ñĽüj/èN'dÏqô„`:è‰ÝsÜÝ@ì9}ô‘ÇwÜ!m¡|ÏÍÌ >«Uÿœ±; /-šuù7ß|Óž¯t¤s˜E:tO0Í7³@¯Õsí‘oÕª•gYO—ôv¡`°Þ¦t5IYo ެqñ$é3@º.¤´t?‘ÌÒ«‘öð°£!$>çæ’€+VL–ºAkÃ^DkÖ¬Yº9j¯‰^y-5c$ŽÝÒžÖM_¯¿úò¹ö›‡9©Ùk‡VX¤óCÒ¶ìÝ™z_ׯ‘N:é[QݺuÓ’„ÌLlÉ|SRÑ ý™ûx¤¶,?ÍRŽõK)B= ´h¸W^y¥Ph“™ÙÅ¥x˜½zòiñÅa¯›râÉÓ+£í´OÈQC:€¬¹ÇÑ‚£ïöCÏq·8Ò sjýW‹SRíæ”g‹K—.ÕY >%´ò«ÁuTe­8gôª •;mÉÒ% ²¯¾úJ¡J«æHW‡e0aŸ`7ß|³(ýå/9tè¾çè®ÁÇ%Ia]øZÔÓŠÞ÷ßo\µºì¨Ê“¤nî ÓQC@éƒ@ŒÑ¬FI+hÖÌ™3%8¾ùæs×îZ½ÈþéOÒmWÛÌõ4&ôÖ«;²¶ªxR“ÐѶÕ˜ÝÀ³í›Ñý]Y$žôn­IñÌ {Ž£' ‘;á9în3“#ͪwb~ä‘G´aNòBÊóE){š$‚‹µ1ÒGÙÂ)Ÿ9£kDûÁ²RWQ"y¥=éÒå–Ñ®c K}}Äü™@©UÐ$<'˜:¨kGqVÅžÝs8’KÚ®¾«BmíÒ˃.ÍXµbï²£uO’¡ÈQ!‡€’‹@Œ2K÷hmPÕÞv­ hï°BJ{÷î•PЖ,ÅêÖ­«_ŠÒM\ß³Ž{î¹G_…{þùçÍfO@R¿ùÍo[q=[ÑsE/ýjôþûï×þwm^V…ž™Úí¤5>ź´ù]!=Âõ<ÓU»=¤µ“W¿b¥à™yÌx¶ewUšé¥—^Òw²ÀÓî{í'ÓÚ¥ÝÀ3­~ék†gú}#%ô×6,±ŒµV¨H†2%øì¡AðôÊx¢§¯v®¨ÚwÞyGµ¥Èžãè ÁèNxŽ»ÛÌäHIW©] ®¾Ü ?½9x¶(¥溒@W˜Ö!ˆ­úídÎH¸HÞ¥†Š3IÇèÇÕ¬ •ð¼:Œëõ<ó'Çì¥LÚs‚©/ÚŽ¦ÍOf‘ÔQ*’KRWzwÒwJ´¯ Gב6f©¬½ËŽª©€ 8 ³@8„ @ñ!€ÌŠGj @È,!@€@| ³âÑZ @€€ƒ2Ë„C@€ Ȭøp¤@€ `'°qãFd–i@€ ÷ïýøã‘Yq@I€ @À"°iÓ¦Ÿ6¯mß¾=2ËbB€ ¤”€4ÖôéÓ;tèP¤HdVJiR€ Ú%¥8Ö·+×+.€ @)'°~ýúÏ?ÿ\+wîÜìÍJ9Oj€ @ Ø5–âXìÍbZ@€ 8ph¬3f°7+X©€ N`íÚµÖZ¡âXÒXfo–´W¦ 5)ƒ¢û€ @ öíÙ¹e]û´çÝ‘®Z<×ÿÐU»í:w‹IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/workbench.png0000644000175000017500000000215712032647206023044 0ustar ebourgebourg‰PNG  IHDRèDîº pHYsÄÄ•+tIMEÓ .‰‰ÞtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíÜQ’« …aº;Ò5eOÉštM™ª,. mCŒÐ5ÿ÷dHD¦æLeÞ¶m¼ùé= Á…K.\¸DpáÁ…K.\¸DpáÁ…K.\¸DpáÒ?ýíu]§iŠï -ÙÆ†Í”%¾};[óÏ‚;™*n)C] 5ôrRq·m; ÊWKTÒ-©EpÜÄ‘Ñu]×u-…5ŽWvFQÊzÛ߀>{) F§å]ôuýÉYRe,UÍSk9–ò᪗èî¼âêõ5I[RüÂK¹¯½ÖÊÄ('…Ùqʱ•ÆY:©PÝTÁèø•g§È–t*d4•ÝõúA ›áIDAT³jGt÷•à^(›Qez?Â4Ç¿Oöò ÛÆØa6¯Ûÿ®FvÁÉ™òÕoLö‡i‹W;ëhÛÝ]dÕ`p OK0Íóü~¿¯ÊÇ;BæÜi¿&ÎÉ.TSZx¡ô»ãc;lÄ-!‘G‹Ü«Ôm©«¸ñø¤ìkƲfIDAT_6ârÖ9®\Ù%~ª6™NñöeÔþ°¥†`ÉÚÙ–Z¥«¸Q¶”ñ ¦Š+×õ°,3ÙꨱÖ™ËÖÑ,=µq¶N{S>¿E¡½MÅT!»œ–e9G½Ÿ{Ș„XÎ:02kp“€~²´h—Ç3C.-¥šªéB·ë¸Ç•µÓKlrn`Ÿ-|¢ùZnP\9y­½¬›ìuUé 9ô4'gWr¯Ú®nøûAÖùŠä¥—ú ‡–íR‹$Ñ´èÛÆ“-KW–·p9þå —.\úFò}ßyYC¯¶,Kï! ¿ì£WÜÞCÀ ˜ãÂ%‚ —.\"¸p‰àÂ%‚ —.\×Þ‰IDAT"¸p‰àÂ%‚ —.\"¸pé,%.÷N¢IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/save_image.png0000644000175000017500000003076712032647206023172 0ustar ebourgebourg‰PNG  IHDRö`ƶ̵sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<1uIDATx^í{Ð^E}Ç_ʨcc¤RªµÞ+„›QA WÍ ° b@Åj´Ü•ÊEPÄ„K+*Q‰J§SǶ¢S¦´Ã´Ä2:u&DgÚ@µS[‰åötϳϻϾ{;{öœ=gwßgvàÉy÷ìå»û|ö÷|Ï>çì²õ¡ö_øæ¼ €P <âG£û/€P ¦À _؈¢;P @¡ÀÄÿöžgv•æíu漽Κ“œõ‚I:û Æiï*ÍŸ¦sæï}Îü}Îy¡’ö=÷…ûž»›œö;w·ýÎcéwDÚÿ¼ß§íþ4½îüÓîUúh•˜¦ß=à£U:ðc"íqàǪ´¥ Dú½…Téõ<ý)O/fé 9}ü%}ü%oPÓï¿ñB=½ôM)é¾hœ.ž¦C.~Ù4]ò²CÆéÍ—¼|NúÄËßò‰W(éÐK_q襯”Ó[/}e•.{•œ»ìU‡]öê*}r’ÿä«Çé5“ô©×1Mxħª´èr‘^»èòI:òò×ùižöäi±HWì¹øŠ½XZ2'-Xò™G©iï£>³÷Ñk”´Ï1kö9f­œö=vílºrßc'i¿ã®”ÒUûwÕ~Ç_µ¿’Þvõë”ôö«_÷ökPÒÒkXzÍK×MÓ²u.[·p’®]¸ìÚ…Ë'éõ˯¤Ÿ}ýl:hÅg'iåuÓD:áº7Tés,½‘§åtý›N¼þM'ÍIŸtýÁ'}þàwÌI‡¼ãó‡üÑ Jzó;o§/ˆô–w}AJö–wUéГ•ôÅCOùâ[•ôîÓÓ©7~ê—æ¤÷|éð÷|éˆ*}y’V}ùˆU_^4M_YtÚ$yÚW¦éô›Ž§Å"½÷¦Åï]ÏÒ‘Þ·~É$}õ¨÷Óû礣ßÿµ*1MÇœñµ*}àër:ö_?öYºYNÇ}ðæÙ´á¸Véx–>$§oÿ¡o¼mµ–>|ËÛµ´ô#ßTÓŸ|sY•n¦3o]væ­Ë'é¶ågÞ¶ü¬*­˜“6®8»J+åtÎí+Çé‘νý„*Ýq¢HçÝqâl:é¼;'éü;O'âŸy–97ÕëÉgGÏ>;ûÉ1ÃÿŒ«ψÄñ@<§<Ÿâÿêî­ŸÜåŒÑ/wþÛ;}ë”_?m§ûø/@ü‹Y(Qü8G(~iâQüeçoûÔó?øãó.í9o´íoGOñ0j`Ôp¯FäÕÀ¨›6ù5O=ùį~±côÌè£ßŒvŽ~½s0ÄÏ¿âáªî-áÅËçŽ<¼xæËËg¾<¼øp/žý„·ºdÉ’§Ÿ~zÍš5nÆËFͼËÇP6_ÞÁåÖÄï¾ÿí›§Í}lÃiçï~Ú}ÛÆG¶Ýþ¹ÉåÖ5[ÇØ_m—[ïò£KøµV\nÅåV\nÅåVvõµŒË­œ§uôŠ+žyæ™Í›7üñGqÄ7ÞÈŽ~øá‹-’¡/#þ¿ŸýËöï/m½£&ñ|;Íîû_·a;‡ø,â·?¶mû¦Õ¾šÏm¨ÞñØQƒ5lw vÔÐÛQ3Aü‘K–/_¾aÆM›6íØ±ƒ±žgln¹å–ûî»Ïˆøy'¿Š—·?¼¹莛Ooš<å^DO^Ûï]¶àìù§Î9¸mãºñÖÉsæzò% ÊÌrr£†™Ÿ¼ýÞå|ë$?>9xßò}';&ŦIâ7mØ2ڼ棻Ÿ¶iÛ–M³ @Åï±æGRi›V,üØ%÷Ë-®bù_)åùÙV²“ïýÁ£,{_ýé_?Ë­¸ÜŠË­Ø4É7P&~¹UFüw¿û]ô7òƒ7ÜpÃ]wÝ5zfçÓ̦Ÿ}‰(~ém;رm·]=ûæš)â·ß»tÁYË6Ž3l\'öÅÏ_°nLÛN={ÂwFö}Øîøk7lˆ¿wÙ¾ç^´¥ªoóçîöžjyضñ³ÕÖø+*Ë…½ç›â݈_Áü™-w\\žòì¼Ê¨ÙãôMŒÔÞ~½`ý£w\¿ÇÂ9F §ù£w|¾Ú?f={?‹øÇ+ÐñØ}ñlw<Ÿâï¹çžoûÛ?þ¸:‹ë;vé¶ç¿ìݧžôóŸÿœ爟÷Ú«oæÁûÉgΆó÷V^ âLjŸ@|Ëm ñ÷³¯ ñ³ŸþôI6jâ—o|Lޱ«÷[6z!¾²hXK˜]3EüŠÛµÒî¿CAüÊ;ô<>A<óë«ß@aÓ$~ú4ùõ6MbÓdêQü³£g>¼tåé‹bF ³eâyä‘§žzjíÚµ_=a¯;o¾ýÿ^°éÖ™_±Ûõ<ùdµ¡r‚øÙ ­27_nFü4œß›“½1âyoûu«Ñ¨©ŒxþëV ñ“(~úëÖ9QtïÌ×<çÃvýçͼðڙѵ3ŸÙ1z‚ßÞ`ìÒÜ:ÞeX¹4“ þ”ñ¥×ÑÃ*—[Ç.Íü·ÍnmÜ1ÞÜ2öâm—[ij˭c;^¼„¿Ûþ•“Õ jœˆ¯,ø±/^c/þ‚Ssf|¹•Çì³/É‹_z…Q/^<¢xq³šô/·î|rô7÷Ý×Ùûþû̳?ç¿v™Yþ’=gÉÌ)?Üå—?¹iô¼U7}øqûššH^×Åû=LŸV!€1ðB¼›2-¯Äæ2Ämá¼îí4õâÝ8‹xÅøöo€#§XÍ YpãÈ×ÏQnÔd†P ¶^ˆ7:¹FÛÁü6âÁ{›(Þ8ëÁiçQ|·ˆnÚN}õr£òW¥±g'ʇP ¥!¾¶ƒ#¾Öèh¨Ö5#^.°Q8ïcÔˆÑâk'62@”èñFñÂCˆêÅ×:þƒçþ– |QèĨ ‹©}¯“Ý&”¿>È  @ÿ t€xOÓÀ_¼Û‚7z5ž—[|‡ªls»a÷WŠZOÉSsã|²!ÞX¦õýÏTÔ @€øuk€hÍN °Ë›UÐKî2zÑ‹T¨ $¤}0Ê€c½ˆ>ب $¦€—QcôšvD7j:¼w¼ÿ¦ÉH¨’%RÞ7*v~[Sc׋ò¡è_DñýkŽ¡€=)Ä÷$4ªP ô¯ß¿æ¨ @(Гs¿>æ‹ÝK)_bN ”  @,úŒâ׳ǫ╣leê)ä@5P tª@߈ï´ñ(¬'€øž„F5P k€ø®-±< ¾ÄQEŸH(Ä“æ–â[ ˆÓ¡ÀP ñC)ŸS½@|N£…¶BI Ó¡^ ¾^#ä€I*Ä'9,‰5 ˆOl@Ð(à«ï«å|@<åÑGß³V !Äë·ÇÊZÙ’Ä—4šè )’C¼P?Ò-!³]ñãXw/DƒuØYYKÆC2ÈñúÝŒ}Õ¤œå~ ]+Š@­›¹@|Nô ´W Ä;s*?Uy8*“†áoäGÚ¦Oy™ÝÊ{Ÿ?)_ø?}æg6Ÿ¢ @>HñŽ€]ÀZ~c{ïX|Êés üë2r\íÃŽ8šÄûrB¤Hñrˆ­‡ÛµþŒ;ƒíaÓ<Öª‡qµ!^Ïycä[Š#¶?ñ=Œ ª€=+(âm¶PǤ׆ç6Ä÷,zpuF/^±–½§›¯´Q|ðáD(0¬sÏž€óUÝLØÑ[÷åP%ºC¼X›^ÿê0ì¨Øj·í¨±Eñr /ïJ _ÛÙqù´^ö! ¥z›»é"^Ék±.Ÿ"Ó\]G¼-[-õHe …x6²ŽX$÷<ÚOMâ#=³‚aÂÅ“‚f^åcGáÅ>ÿ¼›î(>¯áCk)+Ðâú“ŸñùÎ3:ˆç!¼@¼Îzæ;”h95ú@<ã;ŸõÄ¢ƒx=ŠW€Äg=“ 6>:âÜÏ8ã >ë¹EñŠ5Äg=“ 6Þ ñò¶ñF†,ç;;ˆÏznGüxcÒÄœⳞÉ_xÆwù4쟔g ‡Ÿïô"‹xxñùNZ´œ+PƒxÎ÷õÕL؃{ÃRSÊõ‹Åg=áÈ"^Žßù"ŠÏz&l¼âÜg÷¤W”@<‹†Åç;½(#^|¾ó-÷ââ©›"žÅïwßý- >ëÙFñðⳞ½ÄïÅs£†¿8â¹o#’Ãç. Ÿõ<#‹xxñYÏ[4¾>ŠgSœ[ðF<ƒ;_À<#‹xxñÌ^â]¨ßQÃ)/^þÛi8ßøfeÄË/`Sî‚âå›òýÆ ÿŽ'£ÆÿÖíòÍÅ(a}'Žxxñ=Ì1TI(ˆçw,àp_û‘ï±ä‰xÛ½$õΧÿ¾H¦ßOØq¿xÑ9OÀÍßÉ"^|¤iŒb{S â™?#øÎ)_»iÒFmûþ‘~o:öS‘‘Ô>ˆÇ¡ÕEó¾ó³ü¿Àe÷¨ég&£–Þˆ…x9„ïñÕeâñ«7™©ÈHs×s»9Æwâˆóâå(D¼Wf‘ÿvOuÿï¾µÓX²Bí)a} ©=Ë_a^”O~Ÿ<þ¥õàOø"^lšô‰Ñ—ˆ¯‹žŒŒõ7J±@|íìµÝ/¾é=jŒˆWèà ‹Úl]!>¬yžSWd³)Ó´ŸüµÒÉ…xföÌæ¹`{á_…—[z€Í{ö_–ø³ƒ¦ˆ”gáüÅg]ÇR‡FMù|DI6O#Ä‹ žwFM-ßÇWŒæ<$Ø‹7~JÃ>ºÎj”9ø[E›ˆÞBÛ·œ6µÄÑžÒyfkÃ(ÿ*|$ŠÅó[KŠM“ìd>·!³ṳt«‚R)äq{ñŽ(—[}ø®#~¼4Îyˆç=jMf™G ïtCC”¬¿‘±bä¦ ¯âDù,‹ÙŸŒñ¯ÜÚFñ©\ £_z§”ÌÁ Ó‰¬+¯/-k÷©¢=vb!^þDñoµQ¼¢²m*óQ¤‰xŒëṡ+Á¾çõXÇd¢|¹•É"Çò‘¯|ÚuvÔ1®ÊǤ âõŠ cl¼B[ÿ°Ú¶ªhÓÍ¡†OÃÅʶ©ÝçÜö|¯PèQ"&Ä+Ñ„2‡lk@'B  ÞÅsY¼x]RFöÙ²ÉýÓ¡ÿU {ˆ·…± +}þéˆÀ|"3G¨n‹£µý•™nk€{-tZXíþ5¶DSrˆoÙœC²Q|·^¼#F‘c:eý#q#[«…;f >ÑñŽÀÜ8u•-Zþ S–OÏ…¹65.0Æ¡÷Y =?é@¼§P¤³‘E¼¿‹pÞçñÜ>Ñ¢‘ÝbX[T+OÖ`RŸèORÄ붆ñÛOdK£{Qi¹ÀØ:å0CÑ/ºáãÅt§ô eÄ3y{ðâ=ÃÆnãôÁ£x¥×nj+~HTÄ Ÿ ª±S9!žu@\â{`q¤*ˆ#^ŽåÛ\nuX.a²AÇíëˉ—zïY¬›P¶È×;½´ sèïX+gGüklù¡ŽÅs¾‹‡ñ-‡jÀÓÉ"¾¥¯Ÿ#8Æ… ‚9`,GÔè6=l5rôF¿¦è6ˆ§g¢/6ŠÒ?JFà:†C^ÝjËu'Ï–ü£#^<1 ˆ¤ÁO$‹x9~ç£Ð(Š·}øQ³*(qP)ÓXŽBy[€Ìê·å…ª¶IÆÙkäšQ¦rʂԦaÊkÔ6­]Á±Š·!ßF=*çRF<ã/žÊ̺ŸŽ¯ M›PTÀ)>­ê¶ØèˆDï3ºiæ!Žx9–÷ŒâÓÇòZÕ! Š 8Ågº-6"╇ñ>£›f²ˆöâÓÇòZÕ1 ÇÅù«ÔmíŸÊ¿Izθˆ— Ä·§aÏ%‹x9~çC€(~Ø©ˆÚ›*ñ‚ò@|Ó±I'?eÄËOg¢% ñ¢‘;…8âáÅ“›ñu89Ä;vS${f]!‹xxñ™ÍT4WS -Äë? À) o&¬çÑuÓOô×–,âáÅûOäLS>Ïï-\ëÅ;.O롽þ3ã/Ò=¸UòßÅ{ŸÛÁOôoeÄË÷Ÿ'È™ Ù žkgü1›ÑÛ‰±Ÿiðñ3Òœ‡çãxÓúxnýÄF}!ŽøŒ¼x¾á/( ÈñF÷Æ}°H¾sˆ~°Q\Äõ×Õ³[ÉÛafÛ³—=Ÿkˆlå)ÄwøùŠ^T#Ä‹ Þ¶6ø7w\ï(RJêC¥ >;/ˆOj:¥Ð ÞtÃçt{ñžQ|€iCñyyñ@| TMª !^¶ÚuÛ½Ö‹—34úòðänÒãŽáÅ+Ž\pË5‘Bxþ\ßt^z?+éjñÆç©OM†´Ë¼@|:s)‘–¤…xAv÷=m €|z—Ÿòe‘â³ÛÄ'Ötš‘â=qj» Zê…VOY"e#‹ø0/~Àý»ñò63ö^&ŽòOFÆ¿ŠƒîsµøŸbâèK{nú4Æ‘'@:½Í>mhßSQB9ˆó æ(Kñ^¼2û ;dÄûcÝ?§?žüsºq&—Ó¾ÌÚÚ@¼¶ð)vç.ºݰ¢l}èv”ý—%¾•ÒX_{Ï´ö§O”šxßÄ/u6ØØŽË™õÕW[uzNŸhW&©ɶ³”é¬÷ÔÁ³×Jù‘&ó¤Íˆâ ÃqŒî0ÄÏ2¥ Þ9£Å²õ#âɽ ÖåFßM ïd_¼ÂtǶ@æ¾mCìbÐEñ2Œv|pÑvF:/tÓ+•GÙ¸`¸Ö®(ôŶl4¢Mó#ŠÄÒÊQ¼?Üåœ//ž·/(05¬Òñâ@ëûŒÄAùK€¼“¡$î» "@ïfzS¾£BºO}⪊X>ñ(>X-ID ¢xÙ{Q€.£œ½×W%C"¢7ÃÈn×s+Ï1B? ñD¢ܽøà©…KU "âo¸zƒœjï4éˆâ¾õ˜]‚ˆŸ ±y¤9ñgbDñ4/Çï"œWÜùRÑ€~•¡@,Ä3¸ïØñ˜œ<¯û-rxîvol-Æ«1à:Ù• ~–M“H?`âò±£ð2nšd—¾UVM€†8 ¢@Äýú¿dpD`ïW¬Xá‰x][l.›0ÜÌqçDßn+u{ñŽ(^Äø. ?—ßYsßßí|Ci( ñœŒììõñ«[Äi^¼QÃi+@|Óˆ8âÇVÕä+öÅ—1¥éô""âß¹ÏA(>ßYEñzñ¶î‰YaÜ÷¥\^òŸBŠ«)|KùRµ~Š­:ÿÛ„øçttMÞe§l¬(f³œÿÈ6ÍÙñŽ{ *Û-ØŽ~Q|ÓñH3?YÄËñ;šà(> ñîÀ‹z :mEó§ªN÷´w”ÓUi~î:i•/âí™ãˆGßÉ¥PeÄwèÅë?ÜA®íOJ«ä·N)O!ãAåOú?åˆBô%Á¶løä”+­ý*ãè‹ÒÔ>8)´!"âýÞ»íÛ€ ñî@ÞÇ‹·yMÊ(ügDÄË/î¼ d/Çï³RøÞÀ€ÑD™Ž˜Ýb;,‡/ѹQc\Ÿ^ÛÐïÆ½û›‡#êç¿Ñà²ùWÅ|u$"âáÅ7‰”3SF<—°}ñ:â’t_B1ÙÝàs#L‰yk½ ÝÙð_!l±sÓ(Þ¿Ûº¬ÛñðâS¦v£¶G¼Ëû{ñý Þ;£ï°pÛÍ}}PŽøC¼¶GµîåOwDÄËo„Ñ”3“E|K/^Sb+qzmo$¦‘eúEN£§1‡s#ÿÚ?é¼Öûe ämüU¾|èm0±µ$åOSÏm‹‚xvkv3aeŸ%~úÔóÐvXYÄËñ;׳eßá  ((à£@Ä3¸sÊ<ÄqÉ«?Mêm =lÅû(›³>Ýì9eÄ3©;ôâ{8Tb!^ÿ©Tmoû‚é?HMœâ›6Û_®rG¼Ë#ŠïjR¡œ~ÈñÆÐ^9¨çq!0^>b¢;ÎÒO1.KµÛ±éJÓÏÌk!‹øÎ½øþÇ5W ÄË&†‘ËÚÊHœ¥œâ¸ŠåßN[ó’š—d/Çï|DÅ'53јZ2@<ïƒ-f—{¨_^—ÏõG¼Í÷·r®±Ií-©Úqí6eÄ3%áÅw;PZŸ $‡x‡'£¼6gF_Œfw'Fg“Œë“fxñnr5s‡Ïn5î‹ï󳺠@¨­=À>3ì¿,ñ/¡‘>BM/· ¨ÓP6²mQ¼>ÒF7\ÿB` ÉÝÙšdc:iÊ« ^<(™»¹"¾Öñ¡°Î\ϳük¯Í©|Hs>Q6j‚ŸÝZXÏã?¼²S Ä+F¼ˆ¬Ý–ŽnßÛ\ûZ³Å%p4ÉsñâBïO15ðâÙ´Œ÷ý¾ÃáCQº !>Mº¡Uã7Ñ› ‹ÑxvkyQ<š£@<^¯YÄË—¹‡6ñõ€C²ˆç…<ÈQ“éjÄàõ PF¹Üa]@lÂÓ:‹,âSðâwÅŸûŠƒÏ¿À¨É”ÔÁÍâiÁ:¬·”ß•/+ï0XjãqÁhÙrizVÀ4@ ÙaOLñ²)0qJ ˆ#¾¥cDú/ˆ–ÔÁµ§…x[0Òÿ„F²d߉_Æ\âƒ!;ì‰ !¾éöaå«Ã²,ã36`/È"¾/~Àë°j ~XRמâõ߀èWle‡s`Q”ßÞ‹/cÂñÁöÄœïˆÓk7—ñ1ªÄ/ž+0,ªP{˜Ù#^¹< 7?Æ2@ñðâÅtâÃ;øYÙ#^!Ä·ùPé7Ƴ[ùŒâ:ð‡^á•‘ !^\>U ù²ªœÇÿ7 ¶ß‹Ç a‘e’âùhʱ<ÙûqðÊN´/Ó\\JµaݘÙÍ}£e_$”»íqÄËïv:¡´>HñÆÎ‡Ý¯OË®‹,âáÅ—=±)ôˆ§0ÊmûHñrüÎEldÔ¬Ç ­@ˆo‹(œßNʈöâÛI޳¡@7 ñÝèXv)Ŀŗ=%л\âs©!ÛIña^ü*¼ @2 ñC¢3—ºÉ">Ì‹gŸîÅxA4âsÁìí¤Œø/ž#>» Ôhp‘ ñC¢3—º‰#¾©ÄÉÊL;Äç‚Ù!ÛIñÁ^<¢øLX^³ø!Ñ™KÝd߯‹/èQŽ ñ¹`vÈvRF<¼ø¹†6 €ø!Ñ™KÝÄ/ÄÌW´/ßü]¾ YW(”Ÿ ÕU™Ê!‹xxñù¢ -ç $„xå^c1n=ć-Hd/ Ì]t/ÃÈñh'–M¹E°mm°ÝIX)< ‚eŸEñðâsgñö'‡xÐúãñ~íóžjŸïã{Cè'ŽxxñÄ)™u÷B¼ˆÇvŠ-¯·€¬#g ß¿ ¸ó^E<¼ø¬é†Æ§åÅ+,núü&åR­Nm5Á«YÄË%sW ­(^÷ße«]·ÝGŒ Óe À•XÇ@ñðâsgñö'„xÛŽ›É®@ÙíÅ7*\÷‰ÛôÄ/ž8%³î~BˆwxñJ ÎãM=îvì±!^©T.Ùÿ+B°’ˉd/>kº¡ñ‰zñ¹€N;É"^<(™»iEñt ™WO)#^|îŒ#Þ~ >/ØÓZ∇Oœ’YwˆšyÕJñð⳦/>/ÒÖZ²ˆ‡J殢øÁ¸™QÅ”/>wÆo?Ÿik*qÄË'Nɬ»ÄÆÍŒ*&‹xxñYÓ ‡Ÿf‡l*YÄË%sWQüèÌ¥nʈ‡Ÿ;㈷ˆÏ³C¶“8âáŧdÖÝâ‡Dg.u“E<¼ø¬é†Æ'çÅo7Ö!›Þ1˜ø &…òd/”Ì]„¢xÇÍ »¢|ˆg´åI毢üWùOʉþªRF<¼øÜG¼ýé"^í©~kº¡ñ9yñ¶@¾Üò àÊ€Ö¿=8¸ìä4ïñãsbÚ8âtùOv YÄË%sW ¡(^a±›ŽHÙf¸wbÔøàÞ½êÈkUS¯ÆÓáÙd”+'6õj(#^|îŒ#ÞþotØmmàV,¬Jän\j¿"øÐÜÑOŸDds{ñn·^¼ÏG}õêÕ<›æt­æGXörܪU«/^ìSò@Ø $„x£éQ5 R{ºê>뇷ãS޲´÷âEl®°^„í³šî·‘a`шcOÄDÊW/>‘qA3‚Hñ²3îð¸¦ë×9î‡mýP*5ÆþµËŒŒ{åÛ€#ÌoêÒ4 ù;ÌOÙ¨QbvDñÁ¬Á‰ƒ(â;¤R EéËO ­ heÄËL¨´+€øâ58E¾Ðà´Ä²G<·àáÅw”Ó§@|b4M²9d/¾O¡® ñI25±F‘E¼¿#Š ”[ >1š&Ùʈ‡›A(?ª@|’LM¬QÄ/>*ƒPxT€øÄhšdsÈ"^|Tú ðâ“djb"‹xxñ=0UDUˆOŒ¦I6‡2âáÅG ­Ÿ$SkqÄË!”O >1š&Ù²ˆ‡=(¹€ø$™šX£È"^|?B-ñHñëg_µ”cy~Fm~9CÓü //3eÄËG”܃¹">낼mÎ-ß>="Žxxñ=UDR -Ä ø*¡=¾ÝÿTBûÚÌJäQËCñðâ#qÅö¦@ˆ—qo\ŒŒÖ ǹÁ†Ö“E<¼øÞH„Š")âf‹ÎnŸ/:ÖaàØV,ʈ‡ =(¶ÊG¼{¿ñ@<žÝÚwPKo $„x¶²ó®ÐÇíÞ¸=ã¹D,—°n’âáÅ÷F"TIä¯[1ž^¼l¼÷S‹ãûØ^iþ¥V¬ÅãÙ­©ÚÓH ¯o¡1î™1"^9×~¸4Ž€2âáÅ7 2§¦@BˆŽ1qblˆ#ûâSÃÚã¯%”OñðâýQ‚œi*Ä—€àØ} ‹xì‹O[h•¿@|l<–P>eÄË÷§ r&¨_‚c÷8âáÅ'H.4ÉS >6K(Ÿ,âáÅ{rÙ’Uˆ/Á±û@ñðâ“%æ©%”Oñðâ=Q‚li*Ä—€àØ} Žxxñi ­òQˆÇÊ'‹xxñ>Až”âK@pì>E<¼ø”á…¶ù(ÄÇÆc åSF<¼xŽ O² $„ø™¹/F~¸)§”Ó¨Ò‚3G<¼ødù…†Õ*â9([âˆïv½!‹xxñµA†ÄHñ2åe^˾æëÙ”¥¢¶œn±XRid/>q~¡yµ ä„xÄuKG¬Æ¥ÂXNIDî¼/”/¾"Ȳù!ÞèË+ѽ;¢â›®Ä/>e„¡mnrB¼É«]üSãˆâžOSöÉOñðâÐÜÈ ñòÅXÎû[ðÆ€£[v“,âáÅç8´?QÄ€[Ø•5Àã·„`Ù§SF<¼xP2k’C¼|¥Tß@Y»£Æ†uc¼ßrkfÙX—{Gñðâ³fñÆ'„x:ÄÌ®§d/ž8 è>Ÿoh0YÄË/€qÄ»Ä@Ì쪤ŒxxñÄ™{÷øìx;@ƒ‰#^|Ü~ ~bfW%YÄ˧ Ç2úÄgÇÛLñðâËÀå^ñ3»*)#^Ð÷^ÏH”©ÌuŸ.¬^½šgS–avœaoÄ{ÛR½jժŋûT‡

vgP~$ÈFñðâ#Í(Û›}#>; ‡®ë{›‘ÃV¤GñJÌŽ(~ØBíMâÁðz(#^|S¦ R ñõ€CâˆÇ¾ø¤˜…Æ4RˆÀë ‹xxñh‚Ì *Ä×9È"ûâdšÔH ¯W€2âáÅ7 2§¦_8ä Žxxñ©a íñW !ÄÛžÈj$,žæÑçÂCñðâýQ‚œi*Ä÷‰Ê\ë"‹xxñib ­òW ÄëÏóÓÄŠ¸>ÞBñðâýi‚œ *âÝê–Ÿõ ÊG¢×ʈ‡߆/8wp2C¼Í¨Ñ-> X|]Ä/~pN¡Á d€xáÀø\w-ž¶ƒt,âáÅ“'&¢@Bˆƒ.±†éÖè,²ˆÇ¾øD8…f+Ä7bÑÌ”/>.81²G +8+€ø<¡Ûo«É"^|:¨BKÂâû…ežµQF<¼ø0²à¬Dâó„n¿­&Žxxñ‰Ð ÍP WÄ3R eª@ÀÜÊñÜ£&ÇQC› ô‡x H_ñðâÓ2´Ð­¦ 與ù‘µ@|ÖÇÆw¬€ñðâ;VÅõ¨ߣب*yàÅ'?Dh`3€øfz!wÙ À‹/{| öˆ'8èè²Uxñ˜…)Ä6 èN+àÅ·’'§§ŸÞ˜ EÃ)/~8íQs€ø(²¢ÐL€ŸéÀ¡Ù6€xÌ (0U^Ь(4SàÅg:ph6¼xÌ(P¯¼øz#+Åg5\hldàÅGÅ÷­ß·â¨/eàŧ<:h[€@|€h8¥XàÅ;´T;ÄSyôÛ¤¼xÌ‹Ââ Pt§•ðâ[ɇ“ÓSˆOoLТá€?œö¨9Š@|YQh¦ À‹ÏtàÐl›@<æ˜*/³¡0€øÂÝi¥¼øVòáäôâÓ´h8àŧ=jŽ¢EVš©ðâ384^<æ¨W^|½FÈ‘•ˆâ³.46²ðâ# ŒâûVˆï[qÔ—²ðâS´-@ >@4œR¬ðâ‹Zª⩎<úmR^<æEa ñ… (ºÓJxñ­äÃÉé)ħ7&hÑp À‹N{ÔE >Ь(4SàÅg:ph¶M s L€ÙP˜@|aŠî´R^|+ùprz ñé Z4œðâ‡Ó5GQˆ"+ ÍTxñ™š /s Ô+/¾^#äÈJDñY Yxñ‘Fñ}+Ä÷­8êKYxñ)Ú  N)VxñÅ-ÕŽñTGý6)/ó¢0€øÂÝi¥¼øVòáäôâÓ´h8àŧ=jŽ¢EVš©ðâ384Û¦¹¦ À‹Çl(L ¾°EwZ)/¾•|89=€øôÆ-NxñÃiš£(ÄG‘…fª¼øL͆9ê€_¯rd¥¢ø¬† ¬¼øÈ£ø¾âûVõ¥¬¼ø”Gm Pˆ §«¼øb‡–jÇ€xª#~›€yQ˜@|aŠî´R^|+ùprz ñé Z4œðâ‡Ó5GQˆ"+ ÍTxñ™šmSˆÇÜ€SàÅc6¦_Ø€¢;­€ßJ>œœž@|zc‚ §¼øá´GÍQâ£ÈŠB3U^|¦‡fËÇ€õ À‹¯×9²RQ|VÃ…ÆFV^|dQ|ß ñ}+ŽúRV^|Ê£ƒ¶(ðÿ>Fpd_*›ßIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/setup_thread_group.png0000644000175000017500000002161712032647206024767 0ustar ebourgebourg‰PNG  IHDR!åBäPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<DŠäsÎ}ð­‡-ëåï']’÷<¾sï=?~ç»—ç;—¢x È 2Ì@ 3È 2Ì@ 3È 2Ì@ dbÛhØ07m°›íHï2lò'wU^Ë]ï^^­oÂ.8ÌèÚb‡oáßgo£V5öÁAdÆÆp×R$[Cªw̬RdÂö dư3ò!צ“¼R]’ 6[ùh`K/xÒ5ñ!«KJxD‚ÿó®My½ž•õ¢Li0jÐlš6³R#»âñò 5i³I­½½´×:#|‘¾Îš ³’ø¤¹V…¥ËP3k¥¼|H:–‡¦ t<û± bçiæT;¤Ÿ…¡LW4·‰2§áŽÁA>¹Ž•›Ä˴ηÑÙcf$àW©g&ˆ}¬zû½¸µ–aÙzVúcmU‚¸O•ñî$e†î61ç‹ßËt¥3à–:ûô>cšìº(iP–ÔýƒÏrðÇÿ0mž|ºq«õ§Š•¾H;öÓÞ2£V5·T×?þ׵`R€25Ò• >Ý3Òºï½@ˆrüv&œަ,Y/äK¾·¡Ôû×?pÚH~ªœKÖÚ­!vÕÎ0O\|ö±œ‚“ǤüQú¢¤ÿ¹jAJªXEÙä#½ðL¯¦Á™’Öš¡PRW-X~¡\*Kã±›öXg4ýûdî¢K£CŸq%ãd›Ø×œõë3¤÷”‰¼DÙä|ÿ4Û‰:æšU”VCye±ßágÏSuaÇ€×äç…ãá9©äz£Ô.buÆç¶œQO»I ‘ÂÛ6?Õ…ÈÞ¹ ù 0³³=ÏAµ™ØhãÓ¶.rÇÕ*³O \ø ([+pn•‡õH±†By>D*•àóbÉHþƒ0MCì©Îh…gÙ+é¥^òá?OrŸ˜íø`LŒlxx’|2m&V =ô6‡ž¦äέëbÉÀ¤šëaï'ÿZJùѽ¹9i¤¬:'—L’ÄQvÓ3Ã<·êÓ;²y¾w¤A«0Œç ÐÔ6ûêU^ÑbbcÈ‘ñ|ƒY¹™XÕ­ØZ“VCdΤ-<Mææ‘&\ÀøI4[hTÍkåñ¥m&Å5[‰³Î¤ó1ýØDNimÄnÚpÛó^´=´Çå{ߢ®@ÔM¶€Qn7ny{`˜qbWîöŽ&d™@f ˆGðÞ$W㑇ÿTÍ»V?^™GµuÀ©­JˆàE<Œ0&ê1cëXÁËxøpê7h"6 ¼kE 3Ž2 Ô·Ô÷7]fx„þ ЉÂÛHiZ­šRáìŽýÊ b„줛éH9Q6£ÖÖ #v4dó¼ó‹>Ïb l¶Õ€7[ð¥áƒ°×á˼\‡‡‡å·aI?ßþááÊ~±Pi-(d¤.+$n5Ä!v_gŒ­jÈëWÞQåŸtõ‘3=smO¼~¶ç?þ«goê«¿äÂ[ù€!- µÞ†+”LIn]qˆ=`†¡û#òz-I3_  WÀUH€Nq½»j¸¨3ŠÔL©Qbd¸Ô,©%Y±˜Ñ:%¯ñî) ¹F2Þ8Ý9xãr/ÂÑdܦ¦.{«`Žû— m7y¯ËÓ›à_Û¾Üæ7z¤8áÅ?PÏ3ô. >¦}ŽðjøÉº-PjWê6. oA ×PÅÊÕE‘BûAgOW)ø›à’¦Âþø0åŸ6ÖMäAeDþH?ÔÓ$ÅZìÓ°lgŒ”<Ï(/´‘8ÄÃC‰Z¿õ_áW6y4±ƒÀû’Ý‚u¥£„øt±5;c0²¯Å!îÓÎØ"Ná¬.dF-ƒW™Q[gà•;ŒH<\;(™@f bÖÞ²l ¿ G2ñ0íŒLxo5(·Q?:ŠñðëŒõ¥†Ç~v!¸úOÛñ>̈éßs·Ä<Þ0 V•ò{cÉ+ ‚ƒ'_¸’.äõD $%ð¥=Ô})»èõÖ+k!3Ö`†½ÇÎ[Œ½ô×Ôµ#ÎókïÒ9ãÐù¼õnBŒÖžKq¬œ ¡köcýA¼–‡ØÎp°Ø$¯€Z #€‘#›²$mù4ÛxH‚®«:m‘Uí×?Ä:Ã%:\Žgþ&¢W ªwZØœ$ýL' Ф‚'™¸sŒx˜uF3dYt 4Ö­Qé` ¹½–¸8†×òë 㟶-ƒÒ‰ºqT_'eDŒ²Ø©0 zxuFcGØÇÏ@;âæŒujg£ßž–#$¶\io¿à§–;ðb*ÜŸWA=à/jèU€Ø¦@Ô´3:x}i´5%3pqiDmf §í 2Ì@<´{ ù'~%ÿlBgmÕZ=¶|6WU‰L¬­n^9®Ï©´ñöú ‘TNÙ²AÈqŒ½K:cMÜÐY[îW~“Ù\]}[=„ç[žéß ÀÊ…¶ß²öá­ÓÞ3#ÓtJ¹â ®Ð¯$ý±,âõ ó¼’¤K‡°ïŠ´^BܸÃê„éo÷^š}'àõ.¤™Z¸’ç#šg³¥}l°ü¢×³˜ò:¡ó--ç/?ÏrÞ+þ´p<P¹Ë“×½ñk>_šÍ•Eö|Ÿû¾×Ëfšé®xL–ö¦×9q_ÌHƒ–êŒhÏö/]AU¿Üc4ôÆh?™Ÿ#o,=Ö«ª'&ÔÊ™úߢu,½„@pœfM{üè ì•_ÊUﱚYޚŢ5?>Þa?KK²Òr~ëWiî²îøW‚ˆ×Í("”'-Îî‰#š™þ±®S áfKÏ×ȇÿΆ%ù8˜,’yßh>—óÛ³3þ–¾|±08ª:9ø©òë âŠ£È›  =Àü%ø;)1ÚÿðÓW®³Ïæ<¼_‡%¤¤Ÿi?YgØd ¥Áù ¯HyŽÍüŽ×b‰¢¬b¾†Í,;š‰ü¶P®}|p¦­œ\žÎ&ûo &ÙÄC‚þð›‚Ö<¼I>|—E®ÿz™,’–]b:!ÿo±ßkã‹u-Ð/ Ê[ ~1«ºË¦tIà©z¡ÓþÈ¥’“Žƒ«b)ÕùÝI±znÆNR87×óˆØËTB¼{ª­(«˜/L ŠwO[„rÊÇn&ú&:äò °Ú>;ÊœyZ¥,Ž~æ*qQ¡6¸7Yƒ‹äõ?ßåøõébêëôÒ6Ui.J‰:ðúun—ŒO/EØk[ëùXUžGU>´•îVäG¡]š!ÀëuËU–²x ðW_ÍgLJ½ÿ vF>vß"Z»ÏÚü0Æ¾Š ƒDŒ$AÓ[!ö–”! ›|~+kc6Sú°.!*Ý/”äÉXOÈÂ>¨Ìç`--|Z°¥¸h.-/#üÇÀ–.UAbÝÖ%'Wµ¥†DÞÅþ~ç\Ѝ†„N?·¢˜lëj´½ss¥Á hºi6úÂ7ÅDÕWHaý\<0ɾÙ&×bÇ|dQ'd*[3Yš7e-‘` HáTÌcP‘o99wd&PΘKËËhú7/±öͳÑ\q¦YÉqˆ GZ¸©ÃþÞ:Jæt‘qæ  ÀøˆkgíŒ/nò ôà'¬ïæhrp;pWŸt!È 2Ì@ 3È 2Ì@ 3È 2Ì@ 3d™@f v›ÎÜ¡.hÆlp§åí›VF{s±¶¤3"‘yý¼.²cwZÞ6ZÕ?ÔV#r^ó;Û•©ŸDö£ÎˆÆéŸ",27ýÆU±‚Nõ¼å7—Wˆ¤¾}µÅ¬Ì„Ë£¤ˆû6¸¥®ëe¿õÙÁƒ‚µ:~Vh•ÿ½Ë+þâ÷kÆf–»uo,½*72/œW!"4‘­r Ò7e¢íu›(OLW­@d Ç-Ê,DW£2cmÛ“Yû2> Îwt¾ÑùƸÌ÷ªåB ¢P=oùšòÆ ‡,/x¡í:õrïªð«—÷£5dlÝË^nUlWÜ]¾qä„åÆrmo~z"îíÏHÏK:³PoÇñö‹ç ««MÔX À!·t±z;N0™}Û–ÝéÑ$bvœ¡ïop&A¥­:—ÔnòM y=̳œÆ8ù\ô–·ÙR+)æ7o“=Û+åqNÈ&Ê[¼ÜY””‚ä龸葾0d_r&+ãñ“B¯œ) e±X ìóDØùü…ÊVœÐ®YhUð­?ö¹èÍ_§^ÖÏâºÀÑ2<Ü x¨gÁ¿°Zu¡Lây9Ä&’‚f÷'>Ö„¼Š€7p§¤R!âñ…8X÷{=Ëw*ÏJ”ÉŽ»¦LO}™|•ÌkìM8W²­Ú’Dƒè ÞUþžGŸÈƒ…y–猎¯ü–¬ÅÖ wCRUÙ³½\/nÒXÖ½˜`QR dzÓk`h;!Kr’¬P³n ž´Ž—+ÍX‹ÅéÕ[zèe ¡ÊVåv4¹® ;îúõbíƒô«¦³@¸×ÐFÊ´iO Bh@—«ºP®Š6Ôp~! ð¸àãoÔ³UÒæþc%uV{¬¦ aX8ÖÑ×v¼j(ØD¦I¹V.ók=Ã…h•Ì“_ 2ȹZÉy´¤ ÅRnyf¸Ë߇D‡âèï=0]üI±øR3Èa ^U+¤ªä¹ò@6I^ûØŸY¾«Ç‘¯0'å–’ÅuZ"ÉJƒéd,2±T!òPëcS UÃËd¥µdU±Õ¼Ô®ØêIÈt}?/žI½z%|“¼5+©Ÿ} i§½áÍ9¿4è–«.”|^"å-“0øôŠðmŽF ÔíÒ¤‚RïKÒGj"‡åÿùY­¥åãeN”Êô 2Í÷Êd¾ ÷ZkÈ|w !œ«Šœ«"÷ëÌøÚ¯× ûxù»èãJ=ËOKžåCÅâ§¥ˆ'@c¤tž\•¼ñÙ$yÊ£79èì–Õ®ìSLXé¤{«(‹×ál9]!RŒÅ’“¼òOsP1šmOhW<çW17–Å3©WÆ]áe¡³“”Y}úß›Éù9é¹WY2Òy ˆ'ÖþÑ8\üš¨²²œJãà‰N2®™Çìx/UË:’[ºX¹$™z¼Ì׿üX ð¥Z2µ®Hñ\•Î6g«ã­!åÜ›#öÁNòþé¤hÕk ¯jI>èÕsŠ«ÜVÔÇÙ'ívIpúÛ©³ë¢•tä»ïUÖàŒ|QV!:ñÍ„¾â„ÄX,Ì+ŸQAYÉvÒê¤Ð®Ôê%h¥¾õ™ԭ'£Iˆè<ûÇy¾êÄΊçe‰M(´º›çGØÇשlzI½ï”xãGpßר>N\=Q}ñÏNˆÇ-ÉäŠ2¿S"óõÍerºóÅsý9¬º´càüùóro2zã¿úÁF%·u,Â%mPÁjd÷ç±²oY:ÎåL=é«äöfeyÔË]Í,J Y/ŽÊ[Ç™¬4õl:µï9£rä&Q«±XÔŽ(‡*·hÒ&kWÜõÛ’ŠrèqoXO„ bëä¤ cçZÍ|6´žW›ñâf$Äž–™a¼>t-¢Õžy8;g\4©òOŽ«£ý·JV.š`+“èš Òû åÙ_èèšWçf¬¡ óܳtÏФŒŠ÷Ü≔€ãÓÂS“GË–BìøOÕÕl%”b¶At qPq„(Ç2‘o@Žt©J%âÏÁÞhVÐu ^¾°r Ö ­yX%Ìh‘ýÌ_)ehéÒ0~ì‹}…ŽF“S•7.N7]hŠ®)EWKŒwO=õ‡ÜC%+1ÙF¹™O@\ÏŠaÍ+Z¡g@XžJ.{ÕÙI“ ÜŒýô{!ö‰­ÛEˆë?Å„µ´Æœ®hÒu¯šÊÖ¼jV·*…¸Þ–ööZââ(öÄ¡xž!®ÿ$®¥Õ kµÃVCl­¸æ• âë6q}DqÝ-qí®ÅN…Ð=ÌÐͽ˜j‹+ðŸÈÞÂd°¹F!Ó—¢AaÍ«È]Ë+úåi³c[¡oúÙà‘Ò~9à› áµßß([§+á߉¡iT;cƒ{“Á¬y…ØgÏ3v'ðª>Bv™@ 3È 2±ïM2"ØiÆƒÏ XÁnÜyœúÍ)M[ÒÄÈ Z dâ!Ü›ØàcUíŸK7ü u5žÕ´ÝWììÕßùdÓ£\0©Ê†G°ëvÿ®5¢º ÆùãĶƒÿµúç›R—ÍÆŽÛ‹Ñd€·ƒxÛlÉEO<îó¾M¿Þ¾Å<ða/Ì“Œea†o˜÷:¡³ìÇ÷t—/-”Ëÿ¯€×Ó•†|‹õ{½ó1G‹ÔV¦Ëã], >o¸@owIåš1V5Æž2ãäjÙ÷3gêæÛ4¸çºÙ…Õ^«©—ÞähŽ0eÑKW¯Nä eÄò¿m8þX& ÑŒ‘Ç ;ÚO @‚ÅËefŽ·Û—¨Dk/¥î–TNU‰±7Ìøë²IÄÚ&€Ö&#ÕØB:2 -B ì9V7¿PA´JˆQ¨Aʈå; €,©ßò1+°œþ#[3²ëcü¹Û†Öf ¡ÚYpVŽÆÜvãL±½fFëøK•%”BXoNé¥'΄ãß‚KåA­pBK •¿Ö•±Âe­grٻϰðÔ%QC-'Ï.\ƒt>!…Ë)ç‰í ”ÓRý>æ„|e΃4ÈyyXïÒ`Ø r•¬<ËX¤Q½ø²žúO<' W¿Ú›¾à"þè’TY,Ç×àb÷ŸgèÇÙ6¯Ìx6 Zn›†â–oh pí-ˆå9È&ò¦6Šÿ‰×DÇ‚fø?D%eh@íÅ7ýä€4p>o •ÅrÇÉÃIk}°®œªèþ=:®0®m^(iD;cX » µzó2ØQ 3¶S8« ™Q Æß`¯!3jë ìµ½ºkE d™xD-ÐàýëÎÝò.f WÒŽÝð¡'b‹Ú™@ Ì@<„{ÀØëÿÕÜ´a-æTRæYBp?úEU©Ê½k_踟e!‹uüúŠEèc°[w­n¸öôÄö÷vCìÆkÖò”jÞ²?àr¡ª°ªŒè•´‹£Id`}ÙãõgÀfKù}±ä•…uJòù åßd[ʸ#í` ¸°Ï¡~J›¹ñú¼Ÿù$yµàà” \asÇ3Ï©û‘X¯@Ê/æ¾OÝ›h‹_ ‹þ8+é¡yjG½’öŠPCPsâè§»Öî8¿öþ ½­É*…N›ûÉúrî5ü¬‡ö£ŽÍäŒ÷õ½1èrB™”Ôâºá.“ìÿgGìKR½Õs»=‘Ô½‰ä挎ÙµtNb¨ÿñ6’G£e”‰±{£ ù>Náh6²&¸qdSиFBÜ’r˜xH˜„ü*èH¯µ~÷½W®³x'@ƒh8HèÓ ûB¡¬´ýÒiÁS ‹ú÷;¤zqP)ÜÔqMŸ‡˜@K¥¬A+/”Ôݦ1²¸|õÞè ÷­±|¬>½n‚!“R—ÉÛiNˆ9BŠÀœ“Ä)š6oä_I¯uv²'‚`IsZÒ+"N ®Jð³±³­I©žC¨W^ÁŠÒ+$‘£©æÑÁs Ir<9춽Ѡ6thƒEYe>Ò¸%D¥¸€ã9ê¹<ß¹.Ù›ÿƒš(eQM^§uš`œº+1p¤f™Ìïqók\±ÞÉ»;*ž/’Öå`3Ü5ê[k½cD5`·í•¡O®7@>V™Îâ–¸Ýnh!ÃDèÝ#rþªìÎb²Á»ŒA+áFJÖR9Î4ŠõÞtÆæ'­$Ò,RŠÀTˆSû5ÐÙ %lÌB3z%íÙ“.­3zÓµXå½Èâ–0ëb6öyd–~n|aJ_ZÄ|9zoz¹(èæKÑ9=˜'ÓB‚þy¹ÌåÿÂä©‹£r sÑçd÷&ãD„¦eæùÅÉ6X vÛ.`žH5Pmÿ™UáÉYãƒq,Ñ!»?£WÒN¡Úicv¸%®mƒŠùÕ<‡¾Yô‹ß+ ´jÄ-y|û nÅñhC|‚¶ß˜±^IÈŒš@¯$dF==¸»w­2Ì@ 3‚Š÷¥»s›wïMð ønÜä¡'b‹š™@ Ì@ìó{“ȆÆ/âÖóúyƒ¸á¥>è:c³iZÙ`4þ35ó2á£å ûãȄܗKúíûÑdýù??ºöÌTíÌ®Ê^çœ@ÿxÎ)¥ÜŸ§z(î£Ñäe¯—~ÍÃ>o„¹ú„ Ñ»zNån—ò‹ÑÖ¾”‡*…²iÝüùãyy­–Í¢¬"^oèmS¼l{;ì]QcìWfÄþÁlèA¤Woh.Í—‘3:^8Q¥\®AWžl®jÙ­GaµÇòË ¯Nöå!ß7ùjï/­=,‚Z[™$Æ>Mâ š`n‡Zâz'8.:D—41_.¯U0Ï´ n L Œ‹[L2cÀ-×ÕÙТƒÔMˆ™¢ YŠ9-6ãÍô¾ÕGOeDa˜—ÿð!3J tÈl¿ò]ñ.ËSF«ÏS0(Íá¶38ù!x¡íºµo /×£ngä•<'llw 2Í*7!Ìïþ»‚*p ϶5s¡dAgàÖÃYêp@ç— sÌÅtLA;^áÃ¥3òãy—¸‰üé^L“÷Ð CGu)IË4Æj±Úo*Õ)¦K1[‡ˆŠñqcûíã`f¹IÐ5Ò%ÀØ<±ÚqH€ÊTV[LhVâ>dÌÈý}BÜ‹´ã&ÄÎ<á©ýáb¬ò䃢ÜELLJ%‡ÐΘš´‹ÛY úÛ‰s9w•+­+ÅX¥ºaÌ)9?7”ÇlE"Ñ?Êþ&ÉÆöl)®šA‰õb4V ü„ÆXýKX 15’•¥#!3¦†¦Ê¡);ygûGfBŸ¯|hãläËÓ²YiþÒs ÓË Ÿz®ÃcvÕe鈚Ïõ_û³“w¿õÃoýðµ$>TPîñ\›¥å‘&3jZ HÞX"d™@f ˆ}ò»Ö8‚~0>IDAT\k Q‹~¼ˆšÌÀ5Lhg d™@f d™@f d™@ 3[Â?çHÊ…ñIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/modification.png0000644000175000017500000003767212032647206023541 0ustar ebourgebourg‰PNG  IHDRóEîõubKGDù¼å– pHYsÃÃÇo¨dtIMEÓ ûãda IDATxœíÝpçy'ðwB±hËtk•ªLR¶(Ë¿"ºq”H#©>³nºµ;&æLšÚUmr®nCiŽÒ$U’™8ÕÕ1Õ3áÄ€ñ)ig2ðtÈ4q§iœ+u¶¬tÈ; ¾1åÚ‰cÉ)»¢ÛŠ-ù"Øûã%_½|w÷Å»‹]ì»À÷3 °?Þ}±ž÷Ù]chhˆhchh(™L–J%Û¹ îDK!$ŸÏÑôñW!½[»ƒhšÒððp2™¬¹Âq°511 ¨i„5ನD9¼@"Ö¸% 6•J% ?€+þG6Ç_Yøë¿ù"}¼k×®]»v!ÐÏhÙMؽ€È°l Ž«æhXsèÐ!úôóŸ{èСCý7_Dpž!sêÚ¬“ ÃÊóOMÓTl®wk÷ç?÷Ю]»ø‰ŸÿÜC(¸ØIR(EbdCÚd2I‡J¥R>_tÜ|ì×~÷·!Ï¿ð¿‰B±RÜ–µW|;t–«žƒnh¶a ¨³J&“©”‘JžKh4sËÍ¿ñö›Ô\Ø4M°ž™+ÜŽ£žPg®Ô¨ öpL9þÊÂ/o\ËžþòƵފl¬…>üþ­±Õéu6 Î>²)•JÅâªôI©´êŸÄôÓÏÞróo°§·ÜüÓO?ë¶[t‰Ï¾SXŽÇ[küD7ÚbÙ H€"±Î†éóùb©´|ûáá”ú‘Szæø+ n‹ˆ­Å7tŠ|ÄŠ­Å/c¾ þF¨³·lÎâWaSzfúég ù-WÁu»*EÁ¶³øU¡‰ùm¤ö£Q,pÖ\˜ï¹0ßó/O'„üËÇé?:qúég=ÜÕÉÏÑ Âš(B ¨óçÄ4d¹0ßCy÷ç¿x÷ç¿`Ø¿Å;Õ¤á ÅJj„)D9Raëb*ZPgnùvw:EcBÈÿò?m—‘¤m„°ƒÕü:M±Ü8 `‘Õ'–KŽ|× ,ÈÖ€[6u6ÞЄÜñ—ÿcàwýÚ ´ou6©TŠR,¦ÓÞ8­nÝ¿QõåuJ¥t¤cÎF8ë»~ïÇ_ð±5hQÉܸ–ꉮ¥mÇTø–³ùÄý½ÿòÄñ+.ÿ!dáÜÿ±]æ‘?òksÐ ‚»oŸpJðÔœkmD’ê¦×\¼ñ'²éÝÚ}ü•…OÜßK«mNÿèEë2ŸÿÜCDáRL„®gãv„Ëvy6Åi_‘.c ¼œ¦X›:À7hÛ@$ø–³¡!KïÖOB~½ô)Üê|•ëÙÔ?ÅOr9Â,Ï⛵íâh¾E6ž<~ú'/¾ö§~V­Ú”õ¬»¼ýÚ{ú’×6¾c  Ï™› ëE¬íK"yѱ I¥R,Î2.®vJÒ¬mˆ%'9!G6?øîÌœú™d÷~~þùÙ??ûã_íºòwîN7¬c ƒàêl‚à*°]Xµ°å=œØ%Yž1ˆc i„Ÿ³yúh>¸åÆֹϿô}pïýEãúz¨³ÎFR­â o¡Œ&µÃ|„„$ 4ÿ#W÷œú»Ó7ômþï_yü\yñÇ'ž?ÿÿÞ¸´}Ý·ÞòѾM½|ï*è/*u6êXHa nŠ-ä§kññ ‚h>G6†a åù§5ƒ²\¿ù묭×m!„ ¬iq:CJ‘Óˆ’P[#«ÔÙ¨7+ŒCá6Ð4üŒlhX“L&éí~J¥R>_T¿[Ó¥í—]Õ½Rþ`9ëó«Ë§ˆÏþ¯?wôBÈ7ÝxçàNa£üSz‹(¯1hÛ{N¿6VѪ³ñ€Å|"‡Î²ÖÔ,—±’4+_‘`ˆ "Ë·ûF1Éd2•2R)#éß™ßÏ}æÆ›n¼ñ¦_ú÷—þyê?‹¿!Tcâ ëP¸yx ¢rõalOJ²Îu5ËúT²®dID3iV'“ÄUuĹóïb3êôßúŸªyéß_Ò6¶hÌAc‹°ì‹5ãâ4Å6[c{7Mù&„û“³%¶Œ·:Å Ëö¼ŠçÎHšUŸ¥Þ¬·ÍhÎÿȦT*‹&Ÿ¯ŽJN©œKÛ/{å'¯ÒÇ×ô¬º€ eTbÂE’ÄŽX§¸JÉH6¡¾ùÁû?#oˆÿðßýéË'Ã:p¥i#›ù“o¼øü©g¿{òTÙÄû>"›èÁR ®9#›üØ?ÆŸÿ§¿ÿ¿f%þ~ü…÷ã/BˆQ}ÿí°{ÖX•\n)›­ärÖYKÙìR6kÎÎzh“6hÎÎ.e³§ïÝËÚä§×׳·š3²Þûœ«|(~9i.«ÜL!flíºÖº¡93Sœ¬ŒŽ Ó«““ôŸ9?ï¡MsfF˜XÙ»·2>N1ÒiϽµò–­I¥R©TÊéic«´"[wê`š3²ÿJ¾³ïŒaÄ.«Ü¼Öæ¿ò¡ë’—‡ÝµF£¡Fur’ŸXšª?1úûÛ úØ\Xˆe2m…B|d„Ÿ^?Ïu6f&ÇíV½­¤ù"Ó4ÿæKã—u´â÷nÿÝû:Ùôß¼£çŸÞ|ÇÝ–Wù}ìíè¢Þr G/£»ÛH§«SSüÄêäd,“᧘ •½{/$‰òŽü(•¹°°”ÍÒY•½{/N_u¢#Pô){À«äråÞÞ ‰D¹·—ã›-ïØ!Ä^<ëlR~ YÚ±ÍúH¨Éz#U·¹Ïk´š¦ŠlLÓ|ø¡ñ]·ï<óÖ;—\²ö¦[+„wöîø½­½[{„åéÝ(ƒû}Üø_Þ4P&Æ2™U‘Êì,!$68È/³´sguj*~ð M·”·og«,íÜiÎζ ñƒ«SS,1ççmÃ~z%—«ŒŽÆÛ …ØÈHet”ÅF4 j+è—²YsaAhªÎ:!øH¥RÅÂ\:‹¬„,üôÛµ¼á?uê ok´ ð¯g㣯|ù±®žÛw~ì·ß[³æC óo\ÿáÍ/ÿðµwöª ØØÂì(B+ü}¹ù)t•&ð-»ß¿hL³¦\¦Ç+££æì¬ÑßO©NNé´Ñ}ñºˆ´à&qâËdÊ;vTÆÇÛ qÖà`yóf¡ý¶B&ihŒÂ×îTFGãÆGFVM#„˜33ñƒiê(–ÉðÙ ¦žëÙ‹E! ‘„&t–õ±¤q]RÄVq·tŒl$W”T\|é \³¹çã;ÒgßYwùº×NÌo캲{ÓUŸÍ]çÖØ%Ná‹ÓvÙ\ùb¶-KvË)¬!l@jr2N#›©©j,OÉdøX'>2²”Í’BA˜etw ÃX4sctu±ŽÑÕEVÆÂŒtº2:jÎÌétlp†;V´Î¦æ'XÓ6Ä.èqÛN ÍÔCÇÈÆCÁèC_Kœ½ñãÛ·½uú펎ޝ¼¾ùú®k·ö&,C3”»œ yÐSs_HÂ*–ÉTs¹øØ˜9;kÎÏ CQr:¼­P¨ær•ñq29Y5Òi§ºcÏ™!‚aaÛv<¯× u6_þâÁ¶³7Ü~϶}òäºuëN-¼ÑÓ»¡»§«­M5nÊøâ›z:æK#Š$a !$68hÎÏ›³³Ö¡([æ©S>vLøG³>Fww|llM¹ÜV(Äwï6gfª–ëîèv=Ûrc¾§èÀIä#›‡¿4{ûúß¾g[ñÙ×c±Øž<Ñuuçµ×õ®[w™úå@Ü. œçâ¶ÏXë‚ùYò°†pRttI˜¬NNò¼ìä)a–¹° 9‰Il6“!„¬:jv¶ÜÛk.,°t±øØX,“±V×V”µ€ÆmP"¬¥ž¼áOŽãÃC[§Ëy[  é8¥îë_ûVç%íË\õ£çæãmñ÷Ξûá6^Õ¹víZ•Õ…ÓLèCHÞÐìÌ6ne­2®y¼±m¹N*a E¤l‡¢b™Œ±oßÒα‘£««’Ë™33mG.ÏÊå.ÎÚ·ÏU÷â»wWFGÉ‚Ñßož:UÍåHW—ÑÝMº» !¬YšLJ=JZðPg#òê`§¹êkÙ’¿¿’¹®f±)ˆu˜hçlâç®Iî¼ú…™7ÚñŸ¿{îv]{饗´··«·`;ð$L±}l]ÞÚ²dsü2žK’DŽrŠj;r„žBEËbGÒ©!m…›T¯ &„ÄÇÆè¹âKÙ,;ý›m‘tuÑf«SSm…Û¢÷uÑÎÙ¼ùÚùy=‹]qÍ»·Ü~ÕÆ® ëÖ­ »S R³j˜¬œ†MÝÝÂÂüSZõb{‚’Ó¬X&³f%Êá7ÄO'„ÄGFâ«OÅbÍ&ž{NÒyBËÖhRgú‹vdcšÕ3§¾ñ¦s=×ôþÚG¶Åãñ†w œQ•°¦ Ôs=›° îG6þüU£òK½ï|úþO…Ý—4}XCÕy=›£½Íçóaw uE8²é¼é­Å;ø‹– kÔ«† ‰Væ&*A@³Špd£ÓÿÉ?üÞkoŸ9·öòÊu¹2ù±×­»ŒÎŠÖ¨o¥Ã}éÄÜL™8tÞÓ]±½sUÂìêlÀ­hŸ%wîýóo¾þî铼ÿ3òÖ‰øÿñÝŸ¾|2ìNÕ¥/l$áJÐa AÍ ¸×´‘ÍüÉ7^|þÔ³ß=ù‹ªlâ¿}?‘ kæf´‡j@XCÑÊ•Æl š@„G£$òcÿtöÍØ{¦íŠ÷ã/B.«ÜLŒêûo‡Ý3OøT5mÓøX‡™Õ˜ø&Zu6.½"ë½Þû_~êCñË/†5„3¶v]µÆšÓ*[ê†i|P1êlÀ-"Ã0††òüSÏÁÍøWò}‰·_ìYŽi!†yÅúK¶$5ªSQ§ILCœ¯£Ppƒl ¸¥KdCÚd2I‹*J¥R>_ôܘ¦ùðC¹_Ùpåoÿέg>úöÓß\¤ÓóŽž«o¼¬wk¿p*e‹¦ð4•Zu‡ËšSøh#®úï–° Â6è°T´®g¡Ó%²¡’É$ ŠEÓÃÁÌ4͇ߨµá·þÓÇϼõÎ%—¬½éÖÊ¿?ßqgïoÞqu[›ÒÎÒ@¬S²Xc k´ävG4d›­i̘27 NÓs£¼ ó•/?ÖÕ³qç­çí÷Ö¬ùÐÂü×xs,QÝqg¯bXœTÊ ÿ„)d%Í#Ì’¯å´b j.¾gnØYQk@‘^9›R©T,š|X#$n$Ï—¾ðÈ5›{>¾#}fñu—¯{íÄüÆ®+»7]õÙÜu|a² ˆ°À:VÅgnؘ›%iÇi-Û)ªÖ1&åo¶&•JBŠÅ"ÿÔ:…=•¬ë´#Y¥Kdcš¦aù|±TZ†N©Ù<ô…±ÄÙ?¾}Û[§ßîèè8ñÊ뛯ïºvko¢Ö±V9Rï0[ØXØŽ^95n­ã±Ýаp±h†;ÈeÄ1‰:kÌ”J¥Ü„B—Ȇ¬7üSÅ¿üŃmgo¸ýžmÿúäÉw_ujážÞ Ý=]Ž@Õ ,„„Š·@D1l EÃî]åWæ¦X,²˜CH±ÕÑ ?WPj&o„¹Ö¦¬›¶&äk!fÐ(²!\p£Ö<ü¥ñØÛ×ÿvf[ñÙ×ãñøž4Q|`]‹péœ&qêÌÖìÙ³Gh­Îþ8%Kø,‹JRGX‘O#Ùæ“l {ÐÄ}ôQõ…£ÙÄÏ]“ÜyuñÙ×Ûñw~öÞ]ví¥—^ÒÞÞ®¸ºälm§a §¹5Û”7è´p͵B‰ivÓ(Rwçà FÈÁ™ž : yí@X¢Ù¼ùÚùy=‹]qÍ»·Ü~ÕÆ® ëÖ­ »S-¡aE6Ä×3¤XŽ„¬Ä"Ö)lIoíŸÎ“B1 €7Ú]ÏÆ4Mõ"Ó¬ž9ýó¶_>Õs͆_ûȶˆ†5Í:–T¿Ð¯gÂöTe1WËðÁm펷”@ËŠpÎæÀŸÿ jT~©÷Oßÿ©°ûåêÃ|‡X9¶!ˆ° ±KY×òШ)‘MçMo-¾ØùÀ_ ¬i¨FÙ®gc \M‘±¹ší€ ‘5¦)•\Ü–ÁÛ €4¶È†à¾Qà†vu6Lèu69­ÙRa÷YÉÖ„Ý ˆ’FÕÏö¤¤†Ý:;Š\dC"rß(ÐGKG6ÄRmc½Ù¸aê'Ÿ·”ÙÔÙ€­;eË4ÍTÊ@‚@¨³·ÙˆhpS,š¨¶ êlÀ­V²Ån9n%ŒRѧÂÂtŠ0˜Å–tärZEeI6ïƒíVêq!‘hüPêltƒXÆ[‘=…(VÛÐelƒöØ[<¯ÒLuB¨³ÑM>Ÿ» ÐüJ¥’·_¶rúíœh<Äþ·†G*“p;ߦunÍå u6-Ës†¸Ùr6’ØÎ¯‹+æÙؓ툕Û-ZÓB*YÛå%­É—o¨³W0INI s}J ~ŠíòBé±Ó*/¦p†¨kªœnä'C5’mÄú&9™«AýsÀ²5õH¥R)þiÃnM·Ë6'< ë‰ðÊ=º§H>Æ ­ 9›F“ÜÊÕ«Tjwägx±¹Bˆ£~RXÐüÊÖ°£8E,Nм9B|qü¥ÃçÂ…œ;Â÷&ÿÔö±ð@òµke]E˜"éŒSOj®¢Òf#QgÃç$ø£¸ÓqÝšq‘¯¥˜ópj„µ/LtZK¥MWã›rZÅ©˜Un¹åt™(Û²6ÉÇRHÞ85â”OUܨJO ,­ž³)•ÿ&|ÌÜQ ŸË!– Àé ^ÏZüS§4 Å:Ì/ Ù´µŠÓ+ã/@À*À+÷%HÆgknÔCO ‘Z:gƒÛzkί:>ËâªÒ…®Hà IaŠ«°)Ä94±}\“¿£HòM›–‹ðYo³„öëßyŠT” i­ÙàËK>^ÏFˆ$X.„x <¬å”1rÛTu0ž­tÓº‘ D‚¿u6¶™or·k L='Iy š€¦Ñêu6 ¿úël¬6êËØ–ñºj9 Aoºfûü@’0¨äm/èúyû¨žˆ4?s6¹‡¿!_`ä³êãæ éù[gcp¦»-¾qµY¶±v©þM{î˜&¬±»d6©c(™oV¨Vߨ/=€àøÙäþFv×ï×\Á ¨ó½ÎFeº_Sl§Ë«ƒæª×{è˜ú+cåtÕo³Ü^’€¬Ž6œÈ·âj®|"hŸѨÿñèw²»~¿³óWè?BÈý÷ÿûŸMÏîúýšy­³ »Ð$ø‹a":hVö9áFB* р殻î"„ÜsÏ=÷ÜsÏ÷¾÷ÏôÿoûÛ„§žzŠ.à îøÝj‚‹9Í´›ÈÆ0Œ¡¡<ÿTñëà•—_¿÷Þûþîï¾ICÞ½÷Þ÷Ê˯o½áêzú ­ÆÇûFpRЙÙа&™LÒ!€R©”ÏÕƒ››?œüÛGÜØ^XÝé©ÊêüÜz~¢!_:dk4DÇóù|íEÂ`?•L&éõy‹E“þhVŸÚzÃÕ¯¼üz=½‘\“T«À4Ä}£ Nx;@g5ÎJ&]ÜA‰Ž7Ýu×]ûÈW !ÿuß_òséD+ù5-ØÙÙÂÄ!’1N-.’ÜúáQˆ¹uö‘M©T*Mþ””bÑäæÛ³UhΆE0N¡Œ[¶÷–„5Öô’¼kœä´Œ/»êPgn‰‘ =ÆçóÅRi9å<<œR¯ ö³aT®LÊ÷Óº¢d–õ¢¢ò»åÕ\ÙpË&g#ÜWýèþàü‡'/úž³©Ém$‚:pÅ~4Ê[ðxÏ‹Îø’¯Þæ6gc Mê¯#v¢Ò,Æž´‚Ì[8%šƒ·o~?ïµõ†«'/’G–Ÿú•³Q¹K  YNê-È—Cg8+¢®T*yËÙûÙÔSgãêf.¶³X£Ò¾¤•@c [в&&&¼ýHó3² «ÎšêlÀ?#Ïu6ÈÜ€:"›+6Uscä³úƒÞ'·/O|ê©§„År£{k‡/[„V€:pËŸÈfpðž©©oçþ†|±î­ƒƒ÷ø²Eh~ekR©”0¥X,ºZ]Xž6È& O½uÏóêr’+k@3òm4 ! ÁÇ:>±+N¬Q?+ pÄ/5¯ß @óñ³Î ÖÙð SlCÅ †Ï¾°ÇÖÄ!Oc› rê›Ð P±°;à(¹r²@ëlŠÅ¢mÜÀ¦çèA’ѱ.ɶÂ?¶]€pQŽSßÔw ¥ ²}ÑlMpí«Ç%¶\…ü¶+zVj†8ôú“F E`4 ´æcupÇu†G6Ž’hAˆl@w~ÕÙ1‚Ê]‚Q'·0újLM<„;ò“°œê𫢑 è+è:¾¤—HË_$„µ€ÆÛÙà¹N*}«É¶ÎÅ7ÐÜ0Zó¥ÎFXgy˜b[l{^•ú’n·ëÄ6vA@M 9Ð]Йh&ˆl@_Ñ­³€°`4 ô…»|{†D´,D6 5¯gÓ:è‹–ÏçÃî@Ù€î¹ñ± ´,ÔÙ€¾Pgn!gúª3[óè£úÛÐ"Кç:›={öÑÐ"Ð·Ì MZêl@_¨³·Ù€¾pQp ‘ hÖÙ„Ý ˆ D6 ;dn@"ÐêlÀ-D6 /dkÀ-œõ Zó÷¾Q©TŠR,…§ôÏÕDë&$ 4@*•jüF4Èt×€ûFÑ8@ˆ{l'ò³è\Û0¢æÁ±†V-‘ è‹ekš£Î†9œòFü²:®’¬Î&²§HÛ@ËBdúª'[säÈaÊÎ;ýè”GBŒB#Ép˜«Õ&»× ŠöìÙ£X™€È´VOpë(ÖHÆkló+*Ád[ÅbÑi+¸4Ww8Fdº«'scÙå¸R3p±ŽÕ¹EÛÕYÖ¦K¥RËÆ”i}¡Î&D¡gŒ¼AdúB ¸…Ñ(ÐZ+×Ù@ ø Y·¤ Î}Ð"Ð]+×Ù@hÜúÑ@;IDATÀ×0 Ó)¡ÇÐ:÷ *Ù€¾X¶Æß°&•J SŠÅ¢«Õ]-/ï†JS†a˜¦é4Ñvn(Ø ËvÊ:Åv-:Wý±nT}­‰‰ 7ð2<<ì@🾷¼b±XçGËmß䛳öÙv-Éî¨÷@+ˆl@_fkø£¯z°b=@=Âz=…Ažáƒ'áÓ"|lê ÑøÎ8%¶l?ÉN}úÆfùÒsM ²­5²ÎFþ»œÿE.'øU\MägÕ<œ†Aayö?YIÛ°ÿÙba¡¯5j©ùzò‹©¼ž’µlѤˆÓÇihhÈšš î¨Ïú&¼nôűí›kŸÂw1Дpnè®ÁgH±ß¯ÂS§_êÂï]vP± }œ2ÿ5ѨE\èÂÅ1ÂbZ±¾2¶¯§SÔhû"#…æ tÂî@P³}Tg£¨æWÍl³’Å$s0:Üð‡‡àÃ6¡¥¸-Wò@RHÔ˜ÔOH•‘ˆtÀD6 ¯@ël"wLj‘NX5>9n?ÉBJ̯Šx} ²­Wgƒoó@9E0á¾ìòjyNÐXß„ø‰¾b’¾y{I=Œèu6 »è^‰X±šÁÇ¢ ËklùµË|#ÕŽ„9ÞV'«³2üDD3ÐôÙ€¾Â½o”p$ ON©µ.Psbýøs£èZ;únø½&J^OISNkyx%ijDˆ•'&&j&Elß¾ÇmO|é›§>óÓQgÍ £Q ¯€êlœ¾ÊωNŒRl_ÒxÍC ¦°ÇÖ¶OÉö•Q¹œ–T\KýÍ®}'L‘„®Î—®'VpÕ7ù†Ô?çŠ D"Ðî¾£'þú|Àtî@T ²Ýá¾QŠt8å;BtŽtî€þÙ€¾Â½ž¢[= D6 ¯ÏÖБ8~`jBdZkñ:›–ÝqÏpÖ7è#2 ‘ è+ÜëÙ@!²}![n!²­Ñ:›°{‘Èt‡Ì ¨CdúB ¸…Èô…l ¸TBdZC ¸‚Èt‡Ì ¨CdúB ¸…Èô…l ¸…È´†:p‘ è™P‡{}ƒ¾Ø]¾›¯Î±Zëh¾O/€æÙ€¾h¶¦Y ù|>ì.@àJ¥ Р10ZC D’s‡Èt‡:P‡Ñ(ÐW×Ùx â㥑ðŽè ‘ 諹ël<—g¡¬§ñðŽh‘ hÖÙøû½J¥„)ÅbQ¾<]€®(_X7†a˜¦éc;ÖýÚ(’ü9LLLZáÓîôéeŸm_>änÿÄ‚ëFcþZ=¼#¬cõì©M95nÛ¾þß„ˆl@wenø?WÉ7 õ;kt ?ЇrRü“¯ëYè¹ ‹«ØæH£Þhc ‘ è«ñu6ü·!ûiB,_Rü—H_(4áÁgDèt>\ ­Sø‰¶íÔŒ9ØZ5Û¯ÙHÍŽ)¶¸=Š ŸsõÅ„O¾‡?ÛM[[ÒÖ>ضÀ&ZÿrwÙ/Þâ*•]“¬h}k6唆á§[C4ù›Øà—ÚÎ}5ø¬(úL‘ÕÑŒð•aý®¬‡0ÐC±M´Ná'Ú¶ÃÏ•o]¥}õ¦l;æ¶5 Çö˜¸?„ðŸs‹Ñ§Þ"*¡MÛ#¢¼N-8ýåÚ®å¯úßÅ]sZ±ž¦|üNkÀK­‘ h­‘׳aŠ5¿ë…§uþ.QÌdÔ\̺€JËåQøf‘ª ŽâA4µ‚(l|9ȱªüøòû^ò÷(tRg·žNz~˼õÖ6lòÖßa4 tPzBµ‘"Õà³2ˆf ÁAƒµM•ßN…z¸mu5èp=íK:éãëܘo¶Ð‹œÙ€¾­³±~ûèð³#êP^ngZAƒ?®¬ð‚M©ùWc­Õ¨¿ÏZ Á½nõ´ìÔÉzr*º' «÷¯XèÉŒF¾"qõᚣWÞX“7Ò9Šu6n›uÛT¤Q: ýøQëއªÛD…dbЯX=í×ì¤ü«F’¹©9ѶY¾èPe£¶¿Qg`#ô:›FÖÁÑÑŠ%<ØDë§¼ˆu•ª·OYã§]õTÔS,"|ÎÚQYL±Ba¯Ð¦µì×mçåÕw¹êïßõ½pÕs·Mý»DM^jÝù^g#ÏœK& ß5[S!ì"·Sø0ÅmäSä-;m1_Ü&2#ù‡\²n=íKæJ–W±jî‹/<¤–åѤâÂÖYnß;ÅuåoŠâÔ`ˆl@_¸o”_lǃü½614MaÊ/ç„wDOˆl@_¸o”_‚K¥x8ê;é&Òïˆù• ²­qß(MD¢> rÙ€îš2sƒ$6@@Ù€¾š»Î¦)Q¡ÃYß /Œ×€[ˆl@k¼ž 4D6 ;dn@"ÐËÖ4e ‘ è Ùp ‘ h u6à "Ð27 ‘ è u6à"в5à"ÐêlÀD6 ;dn@"ÐêlÀ-D6 /dkÀ-D6 5ÔÙ€+ˆl@wÈÜ€º¶°;à(™L–J%‚:›Ö“J¥ø§Åb±Î¦ø„Æël¿©TÊ—M ûÈvÐ:…Md›¶¾>N¬¹¤SÇx©ýz‘!B³}![Ӛؔ"vÈúÝ~Mߨ‡ýõ¥“!¾Ô¡¼³:äl@k´Î†fn 59¥[„D‚mÞÂíu§öU¦}pÊ£ðKKFÄí¦ùiSÖc¹Ð=~ºõµµ}µåK:õJÎv-ë+éô’JVg…þ{ûH@ù–³©ärKÙ¬ð¯:9éWûVæììR6[g#¶Ý^Êf+¹œ/ôÝR6kÎΆÛßßVyƒ~enÖ ë …úÛa:¦§7íß¿iÿþöcÇ|lV“Í…Žª…)Ä!ñ ÄNÇòš[tÊ.ð–áûàÔa$ˆXŽÙòM;-c%YFØ´µó®–tÕ+¾ëZêïš|u§Z‡o‘93#qÍ…%øµ q‹óóõb­Ý¹¥l¶:5åcƒÕÉI§‰¿×³i?vÌǘ ýرMû÷' !ç·mó«YM6.á8ªr°t:t¹:¤ñq‰‡e„$Šúv]Žß~QoÍÃvS+W¯g×$¯ï/hËÏÑ(£¿¿mõobzÐ2wï6úû}Ü¿¬ÝÖY„ºZ?š­Ñ³|8qú4!äÕ¯½)7:!Àÿþö«rBe4D²¢Û„QèyÍ4Œœpµõ@yK ÕùV «ëüú@ƒ[AËd!æü<}j.,Töî½H\H$Ê;vðÉsa¡¼cUÙ»·’ËÑñ ë›%¨ìÝ[îí½ØøÂNÅè,·cLË‘ÙJSt+´ÚìR6ËúÌ–±nÑœå÷Nh.Yîíå©NN²Uø>ð£QNÍÒ—ˆõ¡ÜÛ+InUr¹‹Xy}œv¼’Ë™³³ìM1gg+¹}O˽½´cNo„¸­½{Y ü~ÑT__:Ý—Noyà½[¶X¯gÓ1=½qõ[ÉO阞ÞòÀîÛw!‘¸áî»;¦§…ÕiþƒŸÂT%7ær¬¶ižõ…Âú'Ÿ$„lÚ¿Ÿ®¸iÿþŽééî¾»/¦SÚÛòÀ´¹M·°m­/è´'l‹í>¢ÖÍщ´…î¾›ezâasúüò®ÿ÷·µ•#b=GÍš=W\€ï ?KèžuJpTÞÛÑ®zÞJëê’×ZJ°Äô€jôôЧKÙ,9u*~ð ÑÕUš*oßž8z”¦s–vî$„´ æ©SÕ\ΜŸe2dddyȉûâ6gf!dd„ßPeïÞÊø8m™¶°”Í&ž{Žö¡:9?xK§]õ?–ÉTöí«ìÝK3%•½{«SSmGŽÐfÍÙYÒÕEû\%„ÄÇÆ¬[4ÊÛ·éôr#ûöU§¦Ç‚°nÏÎVÆÇIww|d„Ýc™L|åáw'68hô÷›³³¬Yº k– ±Åy„nq)›M¤ÓFw·°ƒ•\®2:ß½Ûèï_Þ‹……øØ˜ÓŽ ãPæü|etÔèéi+ÌÙY£¿_òF,Ï¢Û¢;»ûòè‡ää„õO>¹iÿþúú&¾ó>sSÞ°aýþýg²Ùrg'²þÉ'é ZÎ <ýÇ|çwžÿoÿmÓþý/÷õ±% !‰Ó§;¦§Él ¾ÐAŸ7GFʇo¹ÿþWŸx¢æPÇôtÇôô›##„ó}}íÇŽm¹ÿþó}}'H,.®òɎÇ_þîwÉÊ X¹³óÍÏ|†FQ[ !tɹ\¹³óL­1ܹÜúBáL6{~Û¶öcÇhäD·.ôd}¡PÿæÌÇCÃÃ[Íž;-À³h¸_¤¾ªm~-Û½sÚek­±Óëƒ\Nëð3²ò+æÂ‚93ËdhìRœ4gf'NÐãk,“)/,TÆÇÛ …êä¤9?qÖà`yófW›®ÎÌÄŒ¯„;FWß“øîÝñÕ‘¤ÛlÚí¶#GÊ›7WÒéX:M{{1>èê¢Çlª2:J#a‹KÙ¬‘N³%tº¼ysur2–ɘ33F:½¼d&Cº»iìE£·øØØò ’NWi<Ç©ŒóÍÒ6K1çç×”ËüÍ™ÃFTFGù×ß ÛŒÐ¾ñƒbm…‚ÑßO2ùA#ž‹;K‹Œ,ÍÌ,7xè93?xðìöí„k÷í{ãOþ„XêlÎoÛVÞ°a}¡@ßíÇŽµÏÍ-?ž›£ñÄO‰e2¯nÞÜ—N·ÏÍ :¦§Ûçæ^~ê) ز¸¸¾P8É…A„Tmš›ã§ŸÉfYˆ°iÿþó}}lðèìÀÀ wÝÕ1=M»‘8}šF9„ŽÃ‡‹‹ì©m1ustßéæÎ ”;;7æro®¼ì|O„ŠÅm[K§+££›ÎoÛöÂââãk×qéæìm·u>̲å hZ…Ô7œ8mT¾€«ž«,_óõ‘wÒÕ®ÕìRͤž®ªošRPÄËe]]üæÌÌ’%÷à‹êädeß>VÐc¸uªYA¡dt¬ç⊫÷N‚޼¬Z7“!+Gúj.W¯Œ==ñG¡QEâèÑ¥ÑQ:°E²ÙøîÝ,!ä/ÉÉkN;.QÏAµ Õ\®c|œ–Î|¥¯¯ã _øÑéÓÂbgè8ËùmÛ:>{ÛmtzbqqÓþýíss}„,}íkí}}n;Ð>7·‰‹l Z‚ª fõ«6–ɬ)—…õo‹V¥Ð…¶){ò ’Ë™óóFO°;êXÇØ?KÅGFÇ'Ž¥u9•}ûèt£¿?ñÜs‰'Ú #®Œ×<;¯ÕUg}GXzÆíŽ»}#l÷ÈèîŽÍÍÌœ7÷æ_ý•õz6ç·m;ß××1=Ý~ìXâôi~(±¸xòÀ¿Û¿M¹ìád¢³s33Â?·X± â Ú8@ãy.+ žE hØxDlp°:9)œnCÂ,saA8—‡_Ëz8d•ììãWÌÙÙÊèh[¡ä!¼àǼècÛ!›X&#ŒŽ±“•Ê;vÐYF|d$þÈ#4ÛQÉåÊ;v•1&:ÄÃ!¶Í.W5 ªïííªFfg˽½ôÕ–ì¸Éa¿­íÛ…f¯Y\d8;0pÕßÿýÙÄâ¢í‰ßgo»m}¡Ð1=}ž+nŸ›{ó3Ÿ9;0ð~GY¸±ÅG¬Öäìm·uLOó³6ær‰T*Î г™Ø¶ÚçæXb©Ntt‰?Šî¦b-@s ðÜ(£¿?¾{w5—‹ Ò#´±oßÒα‘v*Ðò D+³Ø¹<¡'Ù,ýõÏϲ.Cë•\Îtó#ÛHQô`LÏQZ.^™šZÊfÛŽ¡•+æÌ Ý(¿/VñÝ»ËÛ·—wìXÞšI§ ­4% ôÔ¤j.ß½›MçW1zz„°‰o–®k]¦¦øîÝBHWÝ;ÙŽÏβŠ"žü°n‹V—³`.68øZg'!diçÎõ÷ÜSîì|#—[?=ýêOØvþìÀÀÆ\®ãðá3Ÿü$›x¾¯oãcB®}é¥ÊÞ½›,ã€tBȦýûéŠtyÖfù±Ç¶<ðÀ™O~²ÜÙÙ~ì«SvåL6»åþûi;ôܨò† >F´°&±¸HÏ¢çIùÕ8@¤{Öw|l¬:5UÍåØé6Õ\Žž môôð'Ñ´9ÂR8ñÝ»Y’Æèîn+è=hŠ5³¼Ì¾}K““„z²4-ôQ©vªþY“É,÷g¥À¥­P b¡cIñƒéu_„}»×ßO‹fhkË…ÕÝݬeV…Êiè€=[›®BO5—4ß½;æþ#ÝÝÕ\Îç‘ìx|÷nziéÄÊÉü»$}#¬Û¢íÇ2ƒ~*!mGŽ,e³ô:+å N8pã½÷ÚÞ7ªÜÙI«}ùˆáäô›©¦Ó'ØøØcíÇŽ U´' §”—7lxó3Ÿé8|˜Í}õë___(°°S\9¿mÛ«O<Áò=ÂÉJõ£'¥¯òÉõ…‚çN4%chh(ŸÏ‡Û Çð§ðÐÓ…ª™õÅ…D‚v_ ÓO£ʰ+Ó‚•«9rdÏž=¸•&@PÿJŸ˜˜öĪN¢×b¡Ïè(‚ð÷¾QÐ ‚Rdô÷ÇèÐÏJF=®÷­¦ 1üºo”/· €óöý¯EdCèY⑺ף/ç«CMCCCÉdÒÕ R_:Mé#ä¾}}„Ðs¶Cr…ƦŸŸ°;Öôo}‹ìàÄÄ„ÛïJ—ÈÀ‰ÛÌ eè ì…D¢/þ*!âçBKA¹UËjú·¾éwÐ=êlìÔ_gC¯³÷—»v­)—iLCïqMÿùÖQÐr6 /¿êl>ac nÎhˆl@kêl qLTë]‹qã–âê€Ï†"ëÍÛý}Ýj¾žoáîö-V_^qÉ _:oÙ€î|ÏÜØ’:ZE98\ø.Ä¿)þ/:ŠÝvu6 ¯¯g#Ü“¯Î ½@§X,Z'Q©ü6_Fe-Ððî Eë›Ëf9=vZˆÝŸ›^óÈv1§%ÙU~yÛÇ~õ™­ÂùØnÔwÈÙ€¾“­©)*é§_~ì1ý*a…üc „œ‡ßýQO4†õ/EòÀi®µ5ÀŸ›b[÷Ù[S ƒÈ´\gÖ@G27 ô‡»ðãôÃOÇÑ«Yá­“pf¯§ä…U|Í%IVkêyëï*¿¼zDâôÒyhÊ/ˆl@wšdnœ„u¾•mpãíƒÑÂÞzáàá}Ä[Ï4,4tzÍuN›É?'v‘ è‹ek´ káŽ[ Icõ5üb·¼½ûxë/НyäúŒ bÐÍÖ„Ý ïø2ä¹™ßËÒ¼žˆã|TØfì(ù›(IøÓ³V¢>Ƥ2=ÐèAÒUWß!~åƒþ¼!gZÓ°ÎÆ³ Æ­øà†=v5°-´@èœ[òwßv®í[ß²Ôã þŦØNT|̓ø£³vÕv–ü;¤æçÄö¥Soß¶Þ¹Î<="Ðæu6Þx·²ý†²>¶­Tyì4t#y×äï>*Ê­ÜVß+þɸzͽ½®þÒfÕó9q;Kò)åÔ™­GdúŠ\g:œoÐÙ€¾|ÌÖD¬dg×.ö𫇠Î_rs¡¦ˆ½õàŸ¦룲ƒCCC î'"Кu6É¡¡¼j¸¹ÕÝîK'¾zèÐŹ3å†÷(JJ¥‰dr(¢o=Ô£éßúVØAÏë"²Ý5eg|(Ó—Nô¥Ns 8Ã5—"$Ù€ÎA‡ôüµÈôÕ:u6ÞqŒè ÊT>/Ë—”J¥d2éÓ:CßÁ‰‰ yœ ²}…˜­I¥ŒbÑäèÏèHæ¶ TÊ „øòn6àã¡^+“×=•µÑDdZk¦ëÙ4Æ­xþ ˆ9 •évãÄ ;ëÿé¯öTÊ øéÖ‰þ6h]ÒÇnÔ47Sæÿ‘•XÇñ4%öâ³§Â!,i]FhÄú¿í*’þ¸zëåh¤H|ê³}QgcGàxø-¢Þ ¿YùÝïW7\iµtN±hºzk¾ƒÞšæ*®«Ø€€ßW$ 9KD6 ¯ êl|ÿ›´6è´ á èo7&})Á²&»V&×(($x?èÑR,m8¥Õ²—3š±T·ÉòkšÀÁ²Zm–¸})h_ßv>+šßnšuseiiÃ9ÛUòl –zQ²ÄR!“ë’íĵR+÷é³ÂÙ7g ìW°rqñÕl[-käõÁ]"g.0H–Yq‚/®se”·ê#Š l²¸`Fa¼ž>+¶¾ûÔªÀ¶w/ç–÷í¼|ûºmp7|œ#(í’qÜ_»‚>êàö¢ßoŒïqm}¶ÇÜþëcíßÜ»å¾*’ýòÈ>[¯ù}Ѹ{Íâ²Û´¯_¦±¼ ”Gâ•79ûÒÒZí¼ ">Øz wGÚaÝä°{n[оްy;y·ýÒGð õÒêkD•å ¯&+ü·ÉíSaÍ;ûp¼Ò÷Pð>m‚÷Lmàåø=Õ7Òö)o`gúC´¯×òy €¼¸¶ó>ýx<ìà}Üï÷WÍë___v!𾿿»®ûù7xþ€ãÕô(Èk€× ¯ä5íLÜoLG§¾íþ Aÿþûo:åçßÊÒ7 –òü#-°4ר„ÒŒÍ7NúGÃM½¬&Ã-Ð|ÅA^Sû„? ‡f:qøß¹¡¶8Åϸ¬bë“1›¶ ÷ p@ȯá”Ûÿdo4à^0×»ùøOÜ0Oÿ®ùwøßÑ"ú)sã8[áì”R•²…,« È뉎‘Q‹»Fv”ÈýÄáßÃî”t®7 ëÿ³ ªFM×çߥ‹Œá"Ò)ië¸ÐôФ¾´l•Jk­%ÍúCú1O‡SJ;w´½š÷4i| ™›“Ýßmg|ÆYöß¹åÄ‹hØ-³¦4a ÍòºÔÄÎFùÜrœÏ+ûU×Ì»¸ã;{+/ûßk‡—~Ø<¯G¹¼æA‘—ÑfÔÎ]3cp;ôÂ4¥a±Ãž¿ÎÞœ<<ˆ‡ÍÀÝ’%Ûäæûâ‰eíÜ‹[ÖïôƒMÚ×£&öóï¹9;šël íadOöü–z«œ±rYsp²¨~¹s{œ³ž[Úk ïã¼ãí>¿Ï·u»^hÂIüþýû'ñâßçû´™Þ-£k.€’×ïEFƒ¼ÞÄÏ¥Qfþ÷úøÌO×u]gïã…û¯ãª¼¿ ¯×ò€3òüõy^Ñý~—×ïÈWùáµ|w]?§?à5.‹å5Àk×ò€v¦ï7fGÚ]iÍpb£Zí÷Oú!áK+»~Ýíë(XŸn‹FËMõ¥]L°qÎ0æpñöu©q=  Qãqrâ°¼ZjŠßзgkÊI—;ùêä*¤ãħMìšÖ}²2€öõÿÅʨy8lw÷ÿ­ŸXjn†`_Т5Ö½¦#ý VaøÎ>:KšnÃ҅˲Êo×£uM:Œ%˜ÇM«–ce9÷Õ/zÍ;‡‰Ü¤2À»·¯³É›Mðá{z?pÁxê§Ò¤þ¥Ë”C*¼–ÚþëìÕwÐf^Ôg'®¼ýÅ;´ÓãFŸv‹‹Õèíë%í¸þ=ýÙ^”¶3ìùÕ¤ &¾\ÃV+äu¦½<ŠÝQßë܉ÙòÛfzz°4±¾¨ÉJNÞÌVfî Õí>3û¸ê ? åw‹¶Çãá÷ùàµüþýûç´}áñvW¶¯=§ \É•ÿZFòš³û¹ª2Ê \̇Fè%u]g#À+¶´´¯íuàåùýky €¼×Èkä5€¼@^ ¯ä5{›ñ}ôšßºßï¶)ÀÁyý#þüïïï®ëürÀñy} H(Ö$é*þ9À~P˜xD˜YŶwý 5mÇîë“3³ôÒk™µÅöv^)¯ŽËœTs‡Ž]<ØîʵX¯lºÅD6òzó³q8v×蔫o!ß9:ÕGÍöaþ–š¢Á;g•“&~ZN©ÌÒÄ•W T9ËÜLI‡ÉYF#ÀÁõó|Èó$|eô(¬'G¯iÒ$-s´ à£€ˆË©o*f—W£ŸÞÿQóRºå'4·néÆL—˜nÚã!.Äu Ú×öLžZ“ÝióªŸ8ëº8ûæ>Dê¯Ó×÷™d—ذÇ&ØòñÒëë–~xLîëÉ÷HaØ©}ýë?é5òš€û3mP•©Lœš77üË.±yÒ-¯ïúºÕìëW¿5 i_—š¨ÍOÎR'ø‚&pzE¿ç5G©C`‹°®Yß5uÖðJíë}Ôt:W6 Ó«í*\¹Äš–ìâ–x¼ô¹uÓw—Êë>Rã›þ•Ý,“Ê£Ç0&³8~g}9ÙF}zK­Tæ‚­ÜòõëÌ2z>$»Ä¹ÇÃÜ}—ôQ|?ûý+ýëëË÷¼ä?öäc»5tªpy3ú¯Âºëºø+éí¾­; |[DX£} Àñüž*€¼@^Èkä5ò@^ ¯×òy €¼×Èkä5À«˜1^A<²ÌÓý~·MÎëÛßᾂW¿¿¿»®3Àñyý å > ôÑX[ŒeóZƒ`UŽ1¸ÅP„ý†jXx«¿¾JÏšL–³¾Â­¶^:8\\íšwŽÆ&>íy‘ŠÙ­š¾Z¹‚ïs‡e ·nžA—Ü+Ͷ-6TÃ2›dè+-5+^ÿ Ñ¿çÌçŰnñJ¥¯Ö¯àU#ûsÏCsÙÁn+}êŽféÿ;Ú7£áÑßÁŽOwp0Kð±/±æÀ±Å†Š+VZ©´­”+®ÞäF‹7¬ XSáxJië-«v)šKÕ®9öÒý˜º5Gøäºdÿžu(–êSº¬_Á«¶äŽ|>äÏ_¥OËÒy•^ Í:†ef'VÎRù ?«ðÊëÇøÕt¹Ù U*³²b£2ƒ¹ÒêM–_SNM«y8K}…Gë+3«Ú•»;>ÈãÖO}·Û‚uÉ.zÙ¡8w[U®à%#ûó¥ÖlÊls¦IÇY“ ¥ÉÈ®âÉú̺l¬L‡Y¡¿6Z6oýŠÕ^°×öÑg7òúj/ËÙú^ÔÆÍüš®†á¼5W9s?¨–íâÊÔ¾~ÉáaԿº¸ç1¨O«Ã•·ïJ÷¸âÛbõŸ[¬øúÕܹª.yÞ½C†^¿}}`d¯Ô´^©¥úœá Z¾AU+ºÑŠ7YÍÓVUX³kûzÿ7êY‹+0·•]êJžÛ²ÛâɰæÍϹ½í5[ò<§q©ÂMªzø5DåCœM®!V–°löæO©¾{^§Çýð®ÅmγJ£Y²ñ‘}<3ž=[x–láÁkVgñ ¬TzL/ØÎ•çɬ¹ê·ùÊ6òâ 7Y©¸_õ×ÀF½øœZpd®<ëû gÝ–¼’úµz<÷û=þVú×××û|¿ñðt×›gÞç©Õ59ve³¾ûó×?aÝu]ü•t8ä’ÿªÏÛ¶ê ¸öýÌÒ…Ú[·¯8ßS×Èky €¼@^Èkä5ò@^ ¯×òy €¼x3Æ+ˆG–yºßï¶)ÀÁy}û;ÜWðê÷÷w×uï3ÀyóúÊA|èÙ‘pÛr{~}…enrœøæµÚb•[í÷&# × »¾Â­¶^:vZ\íšwŽF1>í)™ŠÙ­š¾Z¹‚[¯ûçÛh8Lró x­Çt è³i^«-öQÃ2›dè+¨5+¾`”ú3Ÿ’õg_újý nÙŸ{Ãȶ]é£o4KÿßÑ}Žþ¶~º•'?fg>ªp<{¼ÄR5‚¢âM]¹Ê[ì£øŒ*m¥´­4¹õf•_Ó «äÏ_¥¬ÒÁ^’Ì:‡ef'–Žàõ…ÇÎV#»†Goxþ7[T?qVë)[Ò«éÒ³«\*3Þé¹=:µ&·^Mùõ{!nj g©¯ðhb}efU»rwLJkÜðš<%ë7Âä1¿æPœ»­*Wp»Èþ<$©kÖ'.Mz¯æ^­¬ù̬YbPødƒnô†úó³²å5ë²±ré³¶Y¶lÞú=2w/ìЭ”­jýyQÔÍjúT¾sx=l5] Á1¿òDX³‹+Wð"íëCzë†'iÊⳫt‰·g§Þ¬C§yŚܾ+ÝãŠo‹ÕNì¼GTx‡ªþ¸ä)ÔýüM}ÞÞFz¹Ô°)t+ߣH—x†ct‹Ž¶&gHÐò ¶aåB÷ß#kÚ§'©ª°>.¼GÝ[“ϱ•ò«Ôu—3¹ÄS}€­ßÂ5?+;µkZ£'Ü#¥ 7©êáוq6¹†XY²Ù÷0÷Ÿ=ÊôÆË܆F³dÏáì3’ñìÙjÄå,+<®ðú?*j‡2X幟 õÛ!û@ý\ñî^ðÛ‚;^P“•ŠûU ìßXp>nz(Ö÷AϺ-ÙÜG}ÑÇã~¿ÇßJÿúúºä÷¯zyeƒ\r;œ§V;Ô䨕Í>DxŠç¯Âºëºø+éðV¶~ÞöÕ?É.ü¡^ZÁM×÷C à%ø=Uy €¼×Èkä5€¼@^ ¯ä5òy ¯×Èk€W1c¼‚xd™§ûýn›œ×·¿Ã}¯~w]wÉñÀ^,¯Ÿ¡4À³žyYoÙxhÙmWZ32[vÞÑè«mk \O›þë`»>•êÇÉn¬mÚ—¶i…÷ÙDÀ[´¯—…uÚr̶(ƒffvâšé²…¦ãæpÿêd3<}ƒ5°Uûú×_+û+ÒöoÐÌ|¾¿æÙJÍØú‰¥ævPÏ ¬KußÀ&ý!‹ó¥µR®:f-bÔ ®é^t01¾ž¨¯gúNa l•×+óe}<ÕÇý¨ \êé§g'kUÿõa]3{¶k"kÔòüov⦴¬­Ú×5ù2JÌúæêšwÖÌÛ¿§ÿ#Û‹²]†¦5Ô–bõ‘ô|¼zòùëô “`Ü*ž»¸Íy`¹Ô¦ÞáùìÕCöÕì/ZÙ@›¼¾ßïñ·Òã@`¼þÑuÝä{ä5ÀæÝo”ÅGñ{ªòy ¯×Èky €¼@^Èkä5ò@^ ¯×òy ¯×Èky €¼@^Èkä5ò@^ ¯×òy ¯×Èky €¼@^Èkä5ò@^ ¯×òy ¯×Èky €¼@^Èkä5òàÕýd/{›‘IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-config/0000755000175000017500000000000012165514774022603 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/http-config/http-header-manager.png0000644000175000017500000001225212032647175027123 0ustar ebourgebourg‰PNG  IHDRVߦ®[PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<ê|hP`à Mð aµË<-9G‚˜ïIJX‡¹zn¸ËVQêˆf‰öÏü¾ÃOg¼N§c!Bc:3+²4–]qÍJËk"1ˆ…5¼Çõ{×|Œ¦‡æÎùås‘\bºŽù˦åDz~×Ìv+àöÃP½:6¼HüîðMxÓŸãm8 –Œ4€Eˤ´BÝ©kC–ëÕô{l'ùš£ÞKIæ:LÂQú#´"ù}BÄbßDeae×YZL¯_½¸·ïkçC~‚nèÇ‚ä‡É¦±Ž'“iÅjø""­P þZ´t–ƒ¯´Ÿ1ܱqV’Käq’‹&›a&ù,7uƒoøZé!yٸݼu˜×Õé³”ðÆ+ÍðÈç!ws¯µ'žJJˆ¦FZ¡ÆŒm‚ßïþ"à倧³-*rÌȹ¿[È…(M*hsy¹ôTØ%˾ŽÏÚ!Çâ–DT`±—Öì$fŸTr‹iLFVºÎú¦ÄBâ=õ-v±¤gà);Üf1Êj ²\* ®]¥L6Ã}ï<&Ì,õNitûÉÌUKL q1ísÕê ä5X‚ßœ¡¨¼¦Óeç10ù§„uoï¡Í}ÏÝ/G†y`î²´°ƒ°Äõ V·,\“ÀYÓ¼bš|«–«BÑJ*õÚyb´b”Úù¸Ë¿‡dg 2¤·Öà Á ‡C¢Õ[ÉåjX–&SÏè{¤«×ãÖÞxÚÖCõÏHut‘2@'ùþï§(¬ºÞ`M}-@ó¤_U[» ¦Y3Tc¥É¥±Ö ŸMyCxšSi÷&ýLmãÁå&Ý OØÐï‘Å?7Tˆ·2åý²ÃòÂiÞd´}›?Ødéá…HP ˆUI5Mq­Ñ7 VE¥6¡…±+bE¬(ÄZy5ilL3{³V°fÌFÔž«Þº7ß<q•ŒÜÆoc†öÞiÇK–òò`M+Xˆ•ã’Å ýšoª¥©Hüî—ÅŠ?‡dKä\9KnÛ+)xõ…f0”¤!CÅá¡«ôoÛBÀ,´šÆf]ŽY?°ìòœÓçv`Äítxx`Ù¢6Òßß/ Ò"û3a&£3VéϽJù{ëð2mßx槺ØA+qÜhÓã0µãñ=ï9ñÝ?9üA‘éûENý©È„gõ JZôz«TÖÆcôm³·Bž€ðêD#Р‚Wƒ| é¥n—éO–­™K e”À™±²ŸCù¯RXëlKäÛwl¼Ex{‡‹‰>{.\_“’ï\¶²vÕýÙ0¯qXòûUAXUõÇÈ÷|j–Ç×Àm¾ø e»* åqéÊk•J¨·6XÉ×7á¤_­‡ÿŒ°sÅ^²’Ž–á¶ý²ªÙÐZÚ_Y›ù¨…§ï–¼¹x/£e¾ñ7þ™‰bAi¹8$Â\2Èæ}Rªü×Ú«”£ÒÞjáfò0¸ùO°ÊýòߺОã1vÙª¿¢ÊÕŠÁZy÷´EbÝ‹í%Àj¼ƒäJâ­Hn•¸5ê­¨’Ü +bÅKÖô@Wð=,+*GÙrGøºFuë‡ïïDˆëxkä^Õ®_v-²þ¡nd¸Ö%‹AuÞÞàu8ÝÂð3NïÊéi±mÛáõMŸsßéðÄé!s®€ƒ¾³žu:æ"h:ØæXƒ Žùá=Þbì¤Ï¨‚õ¾c¦³Q£åx¬õî"Üï2¶žà„˜Þ…Gé sÝ·ŸZD–¹ÊÖ^ûL?zpF#C&„IÜücÂÄà â@ªO’¹úÛü6ÑJoµJmÖ¯à ï H ÚO‘à1qê#ñûö ƒ Ñ–nañ&ÆtÔ1ˆ,sy«Ä!”ˆ3ÙÆ’ÖÈlÛ®ý<È=9Œ,sy«ñ=ްó`€ºkèÀ!ËHºJ¼wv¿ª™ÐÆKVo­nw»økP?uŸ™ÊÕ|m¼¶tv"9¤ÂŽ= mmOÍñãóí3¥â´ñQK¶G-iüðæŸ TfÙÚ¾áî™X¾®ÆŠ}3K‚©±lE¬ˆ…X+ææU’Ð0kgœ= y÷J¬JÓ¬^£ †ÍÇÄ›UY²uàsUøPù ³¯·.tµýaËÉ?_¿ Æž@‰›_B°Â þY§óþÄfŽ?íZH‡T¥ý Ÿ¥ý çfapÖá˜* :û»B ¸]Nm²™ëþ¾ËéŽ'Ö¥þÅ’¿€øS\B³ûý'ÛrÈO‡ËÍï朎ŽÄ:¦iG)?!oA¶QÙH™w:gI Í;2çpÎ`dÎå#”öƒeçg¶+'(ùÓw«å£®#0×øÈ.“¼ÝMt¸ê#µÞ¢{ظžîÞÕ~Rhm©†£³¡ ÆÓÙÐ|ÂG" 7ÀÓÕÔÚ¹œX7¡`K/íþõ¨xòúZø%X¾ÕÒÜy$ݘåÎÖ¦NüÙzÈ K!#m£òò¤} ¾NG×]¬{ä!ÜõohÞîºGwšž'N]¤ö ngbK ;¹ËÖé¶@|rê­üÆöÇQX=ígì§ý ½BR<þµ8´òC6s7L´Éõ¼°„–!^¬çÁ× ­›P#“þ¿ >éÝÖ(ÙV¢ÄÚ9L«&'x{È»BN´×„³BÈOÈ[PM×'w)Öaww¢ãcÚ"î¼Jm5¦ö@Ç”î^²}­K–t§%\4µtTfß±ñV°Ø-â˜ÔaÚŸ0.úùGÃ}G÷üœSíú€3Ÿ‡Yí7 ßOó±Èdzf¤ÆEõ"˜Þ`¸~4*•+#æÄn«àåžÔºëoKV< #•ÿ1´òB|Z~)©¿•¾.â†Ö´X74‹¶ò|Ö¼·ô’U;›èSXGÿñmsy;Ùæ"µ¶M³~¦ 4BL-÷ƒÔ™›ÌÓÞ‡Òº™‡z·å§ÛJ“aÃ@xEܺ'•_šÆ-Ñ=¢ËéΣLµðöRj?¶ºÞš,§TäüsaŽžçÓã÷iSKsZ¶ñùøx#Û9¹«šl†WÚn\óð_•±&ó1r>Ö‹ëfªåêâŽä¶é¶ÒêÔ"CbZ†çiƆñ…–T~iÒ‰C­3iãf7Úfé¿ò0ŽñUð^b?6S²±±hv)+þY=`¼mS¶%gWÛXG¸%~bK†+ÞÖXÏã£|‚…B¬ˆ±¢ ¬ `ö"d\¿‚U¶#Þ¶–«e­pgïúõÖr½Óò”«e,[ñ’…XbÓ¾ËL¦±å­øž{I°Ú\Y¡'+t(;$b¶H‚e¬=a‡d i¥¬·*äµöäD_š`í‰_[þžD²ÜåxÉ’Ü5a¦Êí“ͱ¦Jù“Íž½Ýêb—ÆÚ³ÙÁVÖ´3k+ܤËJa˜ª^‘Ó Ø­v×L3ØRV%áJ&;»:¶‡"¬K”ÿlÂTåvUË«g¡lŸ ,”í3b™¼åo^7©&P¾cˆVÐè¦YÊÖòý?Àåj™gj Œˆ½µ‚…X+bE¬(ÄŠX+ ±"VÄŠB¬ˆ±¢+bE¬(ÄŠX+ ±"VÄŠB¬ˆ±¢+bE¬(ÄŠX+ ±"VÄŠB¬ˆ±¢+bE¬(ÄŠX+ ±"VÄŠB¬ˆ±¢+bE¬(ÄŠX+ ±"VÄŠB¬ˆ±¢+bE¬(ÄŠX+ ±"VÄŠB¬ˆ±¢+bE¬(ÄŠX+QYþ»›©(Õx¡”Â[÷",[+bE!VÄŠXQˆ±"V”’ϲ©ØçÂ?íPÄÒ‹±C1k.*Š>6©ã¶‚'oA¶¬©Ø!NK·f@áBÀ<³™Gã†ÊŸ]ÅÙ!†eX¶ÛÌ6³­ÀPy{‹³C Ëk¯|TÂw¡òög‡n"V&–öƒ›ÉõTÐÓÌ3E|ÜâEB‘²õâìPÌšÜ+ËÙåëP¼˜"&ÅU¤ÂTŽÞJöˆ)xº¯¼·e‡8•¡··'¥PÑT7Ó[«òßùç‹gþG+Ìïƒÿ¥áWàvfi–»öwÖúgÕ©Ÿ ˆk ´CÚöêOþÖÄ#AªïîÛŠšoåå­“^çIªf.“»l½Xëúaluô~T¨‰m¯š².›UÁÁë†ÚËïoIËj¶ÆeÓ³0Ï’ðà4¹y±Úïí[!uõŒeÖ¨)ªÎAø×ÎÍxÈ·ìg¼ÔsGüËÞP<_;HŒþÕWœ‹$œv|ùg=5ç$ÖÄW/›UxÔ¿1¿wù­È@€Dâb_r¬´N-ûôÀ@Älëè®;KR>Õ uõŒÏš¥OƒuÚË~ú+:¨Ó¼l w–]¯hôƒÑ|íbž»ÕÜÐuĶÿÍÝï„:Í{ò­¬©†AEªnÐß |ë2ñËçB—5uƒáÒße™ˆ]&•9††¿m59¾Nráà·7ÒÓ…p­³™|þ TA-Í‘oBùÚ!Ð3©^„ß}~Ó®3Ïý% Ùþ ž¿IygØ“#Kí·àµKÿ½úÝ Àïˆ-¿‚ª(T«r[¡VÓh·Í4µ%Âã ±Õgë…nRÊFûÀÕ –.†kd8Bo™à¥A:7/½(aË—€Ï×!äéöãK?üXL5Ñ#aO.ºïœ…Ë»!|é·ZxÍu&?u¦:/½´šn¾5Q“üó×pŠÄ~ãõ}½c»Æ®ZºÇè>g|¼¹3ì¾¥&ð¾›<¬ßc’ýŸ¿`Œ†?²ýÓ4|zî îÛ=Z€5*UÍùÁàÛÄšžð?Ÿ»ò÷ŒjM+óÖî÷Éñ¦)ü\ù:\Õ±Ë$õáå'È>§ÒÅp2 :ÐXNDˆFVà„49÷âþ|íüw´ÛÜQÐòÐÅ‘e¾£’52{rdéˆñÕ¤„­ž >ûÊ5ùäs[¡Ö1 cë3%ÂèM?…¨é“/-½FRÿ]ói ÙŸTºæ¾[áÞûŽ jίø÷5ÕêóþÀ9=èÏ@û|hùœ6_;\8xaìõ¯>ç½öq÷ÛÖÅ!Ëß½ÿîŸ;Ï3=ïVUW×NuwuÕÀ±JŒ E0mg¬Gvqu#c'ðPÒTŸ˜H] ð¿^[ãÚe>•ÞÕõ¿ŠýÏ F_¿ ˜ííããk ô|"£c@~…éà ±‘0F=‚1s4l Œ§vqÀ¼¶‹½c4ê·Œƒ>hvp*5:¢L'ÇûÀzˆ`Há¾Aá0¹ÀXË'ê G1,#±‹{a,æýozþ S©Þÿè¤RþÁþ ÜØ (&2”šôûÇÿe¿¯ß n á¡V»¾a…ï%_ª9üä†ï_‘¡¿}Ë@œ~áŽö0mK…{[Yÿ…µü£ì` ÷…l"cõv1üÎ ÿÈX‡¿è“õ­`L€é~1†ë© ¦šíúŒ¦·FÇÙ9ÂXÆ÷bâí a Ï(h!9ÐÁù/™ _?ƒ¿è„‘é)(Ötw,fØç!æ»6Àc!T€9~ DÃm8@üÕJ@…9ñ0/„€70ƒ{DÀ}"`LþKNÿ?(F¿ûÀýþ»F2ðeãþóÏhdxÌ¿u_ÿM§Âcìòv­‹ñ JûטKìêûm\“ܲܿmB‰ PÊ(=”&J ¥È(V'F)¡((]”6Jæ©#°køÛÆ]ýa­þñÅIêN0w÷¿{ÿÍN¿¥ƒþùý€ ÁÕë«[@¬_"¼ЈLŠ Œ%ëÂ+×OŠlî##EV“—ßeÿ¿¹v÷¬?Æ~¶û½A¬Cÿ¢Eo ñž£ÿ¢y”ÐZý×Ñ„ `, ËÛ'.:þ>Ôî h=Òé†ôGF#"³…Èjd3òò!ò)r¹ŠÜFaPL(2Jž§&(G”* u•ƒ*EÕ£ÚQ½¨§¨YÔꚈæFK¢ÕѦht:‰.D×¢ÛÐ÷ÑÏЋè- ÊŨbL0®˜`L &sÓ‚¹‡ÁÌc6±X,V«‰µÆR±±ØLl ö"¶;Š]Ä~ÅÑâøp 8#œ.—†+Ä5â:p£¸·¸ïx¼0^o÷Å'ásñçñ·ðCøEüwFQMš`šÃ4Å4Í4÷i¦h>ÓÒÒ ÐªÑÚÒÑ¢-¦½Lûˆv–v›@"Hô î„8ÂIBááá3‘H!ê݈±Ä“Äbqšø•Ž‰N†Î”Η.•®Œ®n”î=ž^˜^—Þƒ>™¾þ*ýý*žA„AŸÊp¡Œá&ÃÃ&#£<£5ccc#cã K!’|Ié¤Riž É$ȤÏäÃt„é<Ó}¦Ef ³(³)s0s6ó%æAæ5‹‹K"KË]–V$««)k(k.k+ë8ë766]6?¶ãlÍl£l_عØuØýسØ[ØŸ±ã sr„pœâ¸ÎñŠÅ)ÁiË™ÀYÁyŸs•‹™KƒË‡+‹«•ë%7‚[‚ÛŽ;…»†{€{“‡—ǘ'’§„§‡g•—•W‡7˜·€·ƒw™‰O‹/ˆ¯€¯“ï™…¬K%“{ÉküÜü&üqüUüƒüßDÒZ^ ÒRý »ׄø„,…ö 5 ½Æ S„…‹„ q9*r]dI”]ÔT4Y´ItJŒ(¦-%V-6&ާˆ‡ˆŸ–@H(KJ”I I"$U$ƒ$ÏJŽH¡¥Ô¤Â¥ª¥&¤ ÒºÒñÒMÒ³2¬22i2×e>È ÉºÉž’}(ûKNY.Tî¼Ü¤Mþ–üº‚„‚B™Â˜"QÑH1Uñ†â'%I%?¥ ¥çÊLÊ–ÊG•»•ª¨ªD«4«,« ©z©–«NP˜)6”Ê#5´šžZªÚµmuõXõVõÒ!K{D÷øí9¿g^S@“ªY¥9£EÖòÒªÔšÑæ×¦jWkÏéêøêÔê¼Õ× Ö½¨ûAON/Z¯Mºþý{Hcƒ,ƒAC’¡£a©á´‘€Q€Q“Ñš±²qŠñ=´‰¹É)“ SSÓÓ53U³f½æs{óRó9 ‹h‹[–K3ËÓ–SVÂVáV×­µ©õiëW6¢6Q6·m1¶6¶e¶oìäíöÛ=´g²÷´o´ßrÐsÈu˜tsŒsìv¢wrwjpúâlàœï<ã"ërÀ¥ß•Ó5Èõ†ÖÍÉ­Öms¯áÞ3{Ý•Ý3ÝÇ÷‰îKÜ×çÁéêqדޓêyÕ íåìÕèõƒjM­¦nz›z—{¯ùèûù¬øêøø.ûiúåû½õ×ôÏ÷_ Ð 8°¨X¸¤Tô)Ø$ø\ð—ëºPçЖ0\˜WØÍpRxHxooDbÄH¤ddfäL”zÔ™¨µhóèÚ(f_ÌXføp8'—7¯_ÿ5Á)áj"cbxâ@’DÒñ¤·ÉFÉRP)>)Ýûù÷Þ?{@÷@ÕAè ÷ÁîTÁÔôÔÅCƇêÓ9ü$M.-?mãˆó‘[é<é‡Òç3Œ3š2é2£3'Žj=w u,èØàqÅã%Çeùf=ΖË.Ìþ‘ã“óø„ü‰â;'ýOæªäVäaòÂóÆOiŸªÏgÌOΟ?myº½€\U°qÆóL_¡Rá¹"𢏢™b‹â%B%y%?JKŸ•镵”s—/ÿrÖ÷ìh…NEó9žsÙç¾UU>¯2®j¯©.¬ÁÔÄ×¼9ïtþáÊ…†ZÎÚìÚŸuáu3õvõ½ ª ܹMˆ¦¸¦å‹î‡/\ºÑ,Ý\ÕÂÚ’}\Ž»üîŠ×•ñVóÖî«”«Íׄ¯•·1µeµCíIíkׯÏÜp½1rÓìf÷-[m·en×Ýá¿Sv—ånnMGzÇNgrçæ½È{«]]óݞݓ=.=c½¶½ƒ÷Íï?z`ô ç¡îÃÎGšîô©÷Ý|Ly|½_¥¿}@y í‰ò“¶A•Áö!Õ¡Ãj÷FöŒtŒjv=5xú`Ìt¬ÿ™Õ³‘qÇñçî3Ï}Ÿ/½}ñéeüË¦ÐSY¯^NsOW¿Ý2£2swÖ`v`Î~nrÞg~e!fáÇbúâ›Â·|o––î,-¿Ûûnq%råûjæ{Æ÷åÄ>\û¨óq`ÍemñSô§õœÏŸë6”6º7m6§·Â¶¾ÉúÊñµ~›²ýð›ó··ß~`ÿÿyë—ù¯©°Hj4õ÷Y ·ÖëàÂΆ ¡û“Sü–€Ó–±$è…Ä¡xhŽÀ H2² %ˆºˆÖAOar°¦p [ÄwÒ\¢½Hh#öнbÀ0*’"˜Ú˜°±eßâ´ájâÁðzð]å' ø ^F‹¸ˆV‹½“ Hî—ꔲúrò=ŠH%}åt•;ªj’êny{z5·´Euœu3õZõ§ QFâÆ¦&þ¦©fgÌ›,îZZMY°%Ø)Ø;:$:–:Ýv~éòÍgïw×}±yž^=Ô)ïϾ´~BþjfŽA^ÁÁ!‘¡Éa‡ÂD<•³?6&.8Þ+Á.Q?I1™=ùSJïþ¢áRùCó‡ûÒZT¦ŸÊÈÈL:s,üxHVDöéœw'Õsåæ³Ÿv-(93Z„-V+ñ/=Yv«|ºyN´Òª*¾º¼¦ëü|-®N²Þª!²1¿©õâà¥Õüe‘+:­{¯Æ]Ëmkhp}îÆÎ-ÎÛÊw,ïR;b;3îv]ènî¹Õûàþ؃W½ï[|ü¼ÿþ@ë“ÒÁƒCÃ#,#G{ž–Œ…?Ó'/L4?y¡ôbãeˤÿ×ÔЫÃÓ Ó ¯ gÌg‘³·çâçUÀ“Ţ7^oÅÞ~\j]Žz'óîÝJõªë{âûŽ‘?N­û´®þ™ôyccnsrkîËæ6ó7íï1?.ÿ\ßÞÙýÏŽ@Œ3tÁ‹ˆGÌ -]ð‰íƒA`š±þ8QÜ~¦¶žPI¬¡»Jÿ„aƒÄÁdœÄr…u™]ŒÃ›³šë%¯ßQò]þO‚ÂBÖÂ)"çEûÅÞK0HÊKÙKGÊœ½$÷H~F᫽²€Šºª%ÅG-VýˆÆé=ÕšÍZ7´;uztïëõÀqåŽa›ÑEãj“rÓ³+æ-Ç­f­Wl6ì€=­É‘ÓIÀYÔEÆUѲWËÝpŸ‰‡±§Ž…*ç-êÃçËêGôGùo| \z<Òz=¬1¼""721Ê(š=SG‰ÇÆ¿LhIÌLÚ—¬’˜²ºÿñƃÇS9vN£ KÏHÍžß®¥©¯·hˆj,mêºø®™¡Eórð•¢ÖW¿´‰µ»_ϽÑusã6ùŽþ]ߎôÎò{-]]Ýý=ƒ½ÃðîÔñðÊ£ê¾ÜÇ)ýŽOô¥†˜‡¶‡_Œ´æ= 3xÆóìëøÓ‰Öçù/b_ºMêOɾ⚦™þözufföÙ\ÿüý…®ÅŽ7oï,Ý]îx×¹Ò³úäýâGÌšÒ§èõ;¬›G¶~~ÍøÆþ½í§ó¯_¿ýï1C~ðêWBd Þ"Q<¨“hZôq s«…Æeâ)ø-švÚC{¢4‘n~Žaˆ±‡ÔÅô„ùËG6;;‡§—·OïQ¾3äóüW:û„ž ¿Y]û*$qR8©éO2¯e‡åîÉ·(œU<®§ì¡b¤*I¡§|TQoÖ8¾ÇWS[‹CkM»O§F7UÏS_Û€×a¸`ôиÑä„i´™£¹†%°œ³ê¶®±I·õ·³²×pr$8~ttntIwuq“pû±wÀ½l_‡º'­ç+¯+Ô,o? ŸEß³~®þœþ¯“‚,ƒ…C W¡·ÃJÂc#¬"E#FõGçÅØÇ²Å¾Œ+ß—@N˜K¬IòIN~“R»?à€è¥ƒ©1‡¬Ë¥1¦my™Þ‘Q Ï“Ðc6Dz˜³¶²Çs®8u2"×6Oùo>mþ·Óï æÎLŽ?+yQ:S¶\¾yvç¾’»J»:¼æìùÁZ¨N©> ¡¬±¯iýk³J‹Íeß+±­‡¯ž¼VÓÖÑ>~}õ&¸Eº-pGé®i‡wçá{µ]c=4½Æ÷O<DÛ§üس?gàΓµ!ñaêHåèôï3÷ñò‰—/Ø_ºLVMmM»¾žuŸÇ-<3¶Œ_‰ý@Z{ûyþ Ï·ˆŸ¯wýÿ§¶´0*\`À ÎA­š¨Œ@®×0Àõ"j× „å ü?€çš ÀÎò“Aœ=>sàÄ)BÖPt ºuC3Ђ¡…ðD‚³ºûˆe$R éŽLG^BN (y”'ê$ªµŽA»¡O¡û0HŒ&s³…UÅ&bocá q'px|‘èi¼h®Ñâi½ho˜„A¢,1Ÿ¸MçM7H¯IßÌ ÀPÌHb·ßw8ÜkíὟûˆð¸ä‰æÐ‡ÑËÏ2ž‡MºO+ÌÌÍÇ-~Z²{W´ÚõáéÚàú­¢­À¯²Ûkß/ý ø½ ázƒ \ap€kHY ô€×°÷9àš€\(€®BcÐ&‚ ¡çöiˆ:Ä œÅó"M‘±ÈJär%gæE¨A4>s¤ o¢·1ꘘ.,k‹-Å.â”pé¸q¼þ0þ9Í šZ Úf8ûM"Ì­‰t tõôô < •Œ"Œ-$R+“ÓMfæ>G–yÖ6$[»,û#N« ¹ÞqŸâQãyÃ[ÌgK&óg X 2 N Õ Ç‰Šrˆ~{,^#qDÒGÊTš"c!!—/Ea\ñ«2»Ššª;%Uí¼zŸÆM6-=í}:T]=ý0ƒDà £<ã “+¦Í&Í×-‰VbÖ†6~¶ÇìêìûVœœÕ]¼\»ÝØ»¼ËÃÆó˜×CoŒ¹ožßd€T`JP&T7,>üJÄ›(þh·˜²Ø‰xƛēIORû-œ8øäé°KZÅ‘• ƒÌÚcøã‘Y‹9Þ'ærÃOáòk œ 鋆JŠÊ‚Îêã¨üT=rþVíÅúËŸ5¯]a¹ªÔær=áæ™Û—îvwu½îyÿû#ôc†®Aáa‰Q™1Åq¥çZ/õ¦L§ífÜæTßÞN/ŸYÑ[ýûqóSÌú†Ífû–¯‘Û}ßÉ?âöÿö?p€^ÿVpEéh£`ℴᘒ]ƒ¦X„ìù£ˆ«ðÙ‚©…Œ„ë4("Ê•ŠºÚFSÐIè»ðj7ÜÆLc¥°)ظn’€Ã+ãKñ;44Oiõh¯Äàó7±ŒŽLw^‘¾›Á‘a…1“$@ºÇäÁô‹¹ŠE^Û§Ù´ÙVÙÏrXsb8;áu­ÅƒàyÄ›ÍgAf&ÏÀ1)W0BÈMØTDS”"FW‘P“Ô”Ò’Ö”ñ-‘V@*Ê(9('¨œQm¥Œª­kpí1ÑLÖj×¡Ó Ó6P7l4æ0É7c0ϵdµ:g#cÛeoìÐìDçëòÌmÏÞú}Liž[Ô(ï÷¾‘~ÛYAœÁu¡ a×"T#Û£c®ÅIÅW&²&e%ÿØq`:ÕúУ´=GΧod-<¶œ¥–“3w’’››÷1ßñtïå¶bJÉã2ïòŠŠJ¹ªŽ‡ój³ëe^4¥_’j»œÐÊxµ¾M¹ýö ­›7oKÝ©êèìï í¡ëmy`ùp©/µŸc uÐ`hr$ê)~¬~\wbîÅ‘IÑ©ži§×³³¾s Z‹gß,-‰.»½KYÉ[=û¾øCöǘ5ÇO²ëèõ‘Ïåî›Ü›Ï· ¾˜}ùòõ¶íöouß-¿†³ŸÓ¿úvý㯨°=DЃËÓ;;ŸEÀæðóÔÎÎ÷êŸ5p²¹úç{Å®0®¹—ï~ý1U»Ï¿þ ÷7‹TŒ²Ë pHYs  šœ IDATxí üNÕöÿÿ†«¤âfÊ<ÏdK!‘ ×*Ó‘”¡H~ˆä’!ÉP¸IIf‘Œ%ÝL‘!³È"•†ß›ýúïß¾gúžó|§ó}žõ¼^ßïkŸ}Ö^{­Ï>gíµ×ÚϳSýõ×_ÿO>‚€ 1†@ZôýñÇcLkQW˜Fà¶ÛnKÓˆò‚€ Ä*býcuäEoA@ˆmÄúÇöø‹ö‚€ «ˆõÕ‘½A ¶ëÛã/Ú ‚@¬" Ö?VG^ôØF@¬l¿h/±Š€XÿXyÑ[b±þ±=þ¢½ Ä*býcuäEoA@ˆmÄúÇöø‹ö‚€ «ˆõÕ‘½A ¶ëÛã/Ú ‚@¬"â­ÿ™3g>ûì³/¾øâôéÓñÄeË–U®\yÓ¦Mñg%A@3¾¬ÿ”)S2gμpáB‹&wÝuW±bŨ¬R¥ nŸ^½zÅIÕ‹b’?þjÕª <øâÅ‹–Nõå¢E‹î¸ãhÒ¤IÆ K”(‘7oÞÎ;k‚ ?ýôÓÁƒ¯\¹A[K­ÎÎ;-·V­Z¥Ô¼pá‚å–\ ‚€ 4\û}ÿø^ýõŸþYñùàƒæÌ™3`À€R¥J©šœ9s¶nÝÚ›@ËзoßòåËãÈ¿ÿþûcÆŒÁÿûßÿÖwu¡ÿþo½õVÕªU'L˜PºtéT©RA¹nݺï¿ÿ^Ó„¤0{öl$4…™5k–y)eA@’„±þÕ«W×¢oÙ²…rÅŠï¼óN]i¼ Ê–-[¿~}èùOùã?þý÷ßÓ¦ý/9‰ó`úk×®Í ¡o•»þ1; C™™épàÀiÒ¤Qòœ?~éÒ¥Ô‡p¢ b"ƒ $ ¾"?I#Š¥—lÙ²/^ÓÏÇrë_ÿú5ÿó?ÿ£M¿…€ËC‡8jÚ´i¡B…4hÀ2âÏ?ÿÔd'OžìÞ½;!~¬0K bSú–*,Y²„€a%Ö"ÇŽ3ïÂù¡‡‚-q'd¸zõªy×RnÕªë˜Õ«Wëúyóæ¥OŸ^ÍpºÒCÚ+V0ÏmÞ¼ÙM$¶ðß·o2.\¸R¥J£F¸]ºtÉìÚQÝï¸qãjԨѻwoÝD ‚€ „×úŸ8qâÛo¿-Z´è7Þhz×®]Y³fÅøZêÍËíÛ·³È¨[·îäÉ“É"0lܸQ`Í1góçÏøá‡gΜùôÓO“30Û«yæ™gJ–,IÀjúôéĵôÝ#GŽ`=‰bQIs¢RLú®½Ð¢E ¼~ê[„}¨¼á†t iY+|ýõ×há&’G[¢a÷Þ{ïÑ£GG=tèPðdâ„Ûü¡z÷PGõË„1mÚ´F=ðÀ¦ÀR”ŽÀET¼•éÖ­[=LšË—/s8¤Yÿ2<1g+W®ÄbþöÛoC† ±ð$Ì>z[møU A 1Àú‡nÏObè³<ùZoóæÍY±“ŠŸ|`¯*_ ûç?ÿ³€ˆâ‚€  ß_C…Âzß}÷?ðÀ>¥L™2ñÛ–_BE%A@ð€D~|€$$‚€ DXÿÀÙΨAA ë‹£.: ‚€ Ö_žA@b±þ±8ꢳ qïøäÇa&A@„gOÅù5Þ¸­? Ã(©-¢ ‚€ Ëð‹Â~Ô÷eýaç4â§3¡A@ ÷É@ˆ‚€ $)bý“néL à7òqµÆ ã×:ÕwêJ)‚€ ƒp$ø¥K—ž{î¹@º§TëÏy¤®O) ¤³ ‚€ MpzÕ7ß|T£”jý9“½`Á‚œLTa¡A Êàœ«6æ¤Tëÿ·¿ý Ç?OV‰²§AÔØA€CË1‰AõMÁY_}4yP…^hB 2c˜‚­J<ÎYdÆNéZˆü‚€ BùY¶lçârBºV•³Ñ ¾.\X×$WaÁ‚·ß~;G´k¦L™R«V­B… ñµ7²áº^X(qÖ•¾Ô…Gyä“O>9}ú4Ó)?]¾|ù 軺ÀÁ)K–,Ù²eËÉ“'óçÏœðž1cFMgÞï¹çžÆIi!@YÄ{衇}‹Ñ9~üxçÎuA@ð@ €õ5jÔ®]»6lØ ­á¸qãZ¶lëÏYµwß}·iý9ºö½÷ÞÃúc U>„£ÌO:Õ¸qcGÝr”9eKýƒ>7²(Å‹ÿꫯ>iÒ$Ì ë \NœÙ¯¿þ˜¨$¬B¼”H,}HØ"!™ 6±i¹…îä9ˆì£¡pP[qг\@AþcXU\ÈM;ˆSË,Â2n”¬·Xa-7 Üd0itÙíÊ”)Ã÷9µwïÞ|7B5ñ/›îB ‚€ NRnöþq8Nu÷s@0êÁGEöÕ·¨´Éð£9N.­t()Î&Ä%˜rÌTgœMƒ€¼¾9€žé…ýìbÂô£—2dP]ƒ•@äGÖ@4gãb;› vJj¼‰I/CÀ"C·§lšA A íÇöÝ(n~Œ6ûV"‰û»‰«·Á²ûŠ&R[I7þ!¬wLüêD·E#EØ:ŸÝ“n28vm'&sƒÅgóÒ§Ÿ~Ê—ûø˜ ã)›ÉJÊ‚€ \DùI.q¥ß¤A€Í¦µØ¨Êþ«õëדŠHš~¥A@H2Ò÷O2¡¥£ÄF€¤ŸÄîEø ‚@2"R­?é >ò ÉÉøèHׂ€ ”= *LJµþœcÉ·aù•f3ÝTy =R# -°º ÁåH,:¨2Ö0Äò Ä)Õú³¥2¨ªB/‚@´"hS‰A²¾Ñú0ˆ^‚€ x! Öß ¹'‚@´" Ö?ZGVôAÀ ±þ^èÈ=A@¢±þÑ:²¢— ^ˆõ÷BGî ‚€ ­ˆõÖ‘½A@ðB ¥î÷÷Ò)Ƚ6Éa/´‚€ „ñýC:0"– ‰Š€XÿD…W˜ ‚€ R‚E~øõŒ+Vpü'8æÉ“§`Á‚œËÈ!UNÄA@pA €ïÏÑTÍ›7ïÓ§çÈpšÀ«¯¾ªbtaž<Õßÿ½:%8yº—^A@H ðý9Êœ£ÆW¯^%K­šú-=}†Bß¾}Y” <8 ˆ ‚€ „¿¾ÿùóç§OŸÞ«W/Óô£’ú=d–ݺucAP¢D‰îÝ»C¬´¥òí·ß~å•WJ•*U§NƒΙ3§råÊ&NÉ?Í™3g8Áœ#ΫU«¶aóáÈ‘#9€°Aƒ[¶l¡~ôèÑëÖ­›9s&§þª£h9î²E‹´… >ª-­úõë§Êò_DÀ¯õ?pàG©¸ý®r—.]Nž<¹páB€åg÷»víª ¤¿q³qΜ9ÍK]NlKÊ~>º;ïÂí·ß® í¾¾+A@b‘ŸDGTA Zðåû³ŽˆVýE/A@b¸ãþ‰ωMÜEkA@3YkïÈWÜß›…©Ô‚€ „‰û‡ŒDBA@±þ ©pA üˆõÿ‰„‚€ $<býSá(‚@øëþ1 A@HxÄú'<¦ÂQð# Ö?üc$ ‚€ ðˆõOxL…£ áG@¬øÇH$A áðõ;?önÏ;·råJNT·üȳ¦ä‡£ù)fŽÛu< X“IAA YˆÐú¯ZµªR¥Ê*”W? oS´¶lÙÂqê-[¶´ßõ¨á.xº±õh˜H·’Kžäê7‘`¶‚€ 6Ò 8ðÊ•+ÄâdÇõë×ÿãMm4^?h8«ýÓO?å(.7²+VÌŸ?ÿ£>Ú³gË~‘Ÿó#›6mÊ ŽwÝuW ‘8¹äñÓ/râ:N9‘ˆ¸ ž>ø`Á‚ÈÃŒl"I(lA 8-1’¸?–SVðî)à¢^½z•ÿª|­ÀßõKEÆ»dür\óæÍûôéóË/¿/^üôéÓ¯¾úª÷yv&R3wî\N«W8pàš:÷8ž°Xø˜]âÌêÇ T©R'NlÛ¶m ¶B,I€@$‘ :¦ÿêoW‘/uªT×ÿRiY•ïàêU5Cè[º0dÈ#Gެ^½š³vu% uY ~àüdMÖ·oß‚ · »ñÆíÒŸ?~úôé½zõ2M?döò™3g:tèP¨P¡jÕªmذA±Â5jÔ¨hÑ¢¬H-¨ÊnݺqP;‹ ˆúé'³SÖì^ºté|ùòÕ®]Ûƒ‰#¥¢9r$ÇÄ7hÐ@÷è(›Ù¯#£ðú5»@ëÉ“'S3zôèuëÖÍœ9³J•*Ë—/§Æ±w Jvaì|tðDN.Y«•(Q¢{÷†JXÙ!RwY0Ð9räP—ò_B‚@„ÖŸ˜ñ\>ÄíŸk7®\ûçhý8À Q±bÅ8!èÒ¥ [†¶mÛF¡ÿþŠ;2lذ;vphûøñãUåñãÇG•'Ov"YÎþíܹ3»¶oß>¢L)¡Ÿ6mi‰Ù³gÓã˜1cGÙÔ-GáõkvÖgÏž¥aªV­Êt¸téR5Ã9ŠgAÉ.ŒîBõròäÉ… ͧ¾k×®JÊÀk‡ˆ»ß|ó ·f̘aÕPþ ‚@2"¡õÇ÷ÇUO“&͵Ý9©SSPu™:Uê4©Ó@à˜ëÃ-Eá8w‚>|xíÚµõêÕ;qâD¥J•öîÝKz€†8þ8òpÆÞiOœú† öìÙ“è2h@Ì+{OÓ¥KW¬X1uËÎÄzRÐÌ7ø¼0a*¢ÆM6K¿~„Ô¯æo)`[„¹/›‚‡x&Jv,|Ì^T¤‹Ïª‹6t;vLÑØ!¢þ·ß~{ì±ÇÆÇ𙬤,a@ mdB`h0÷iÓ¦å¿%b£ãþ}ÿ¼yóÒéÑ£GÙ âÑ»²,cÇŽUÖ rðàA¼o"¸ù$hk¦ ·¾(&5jÔ°tdgâFIC¢Iª9ó‡êÑM6Ý‹A<ûÕü½ n½ÓÊDÉ.Œ[•R&ˆ¯hÊ•+GAÌ;7;DT¬»páBݺuUù/¡B rëÿ·ë&¬³ž”éç?qþ;ZÜsŽ”$B4ß‹\¹rq·_¿~:XÏ%™Ú’Hä¬ùáÇ{pà–b²yóæ;î¸CS:2q¤ÔM,GÙLG‚ø÷kváQvìÝBï(Œ…ƼTÓ+0Uؽ{7w½£ùŒrïÞ½M&Rð ðA’@2÷ÇƸó!Ô@Y}TüAÿ¿é¦›ìl¹ûüóÏ &jO®Òü1ù“¸@wß}7qvåu’E¸té’Šq‹(y΋/šMìe( JL:uûöíÜU)G&Ž”v†ªÆQ6“Ø‘ þýš]XÊô¨·Ì:ön¡w“Ùïž¼7‰eFžác?~“ÆRfn˜¹ƒ@$ÖOŸXÝ~ê‡å7>9=ÎÓÛC„ˆ!‚@L!¡õ_µjU¥J•+T(¯± ÆaœîòÉ'Ÿ´lÙÒr+´—œHƒ:n…Vl‹`)T‹„熜%áØKÐc&‹¿¨#GŽäLceýGuåÊNåTlsåÊõŸ;w.ÓFZÿøë( „\ó]àŒ¿Ã‡¿ÿþûÆ ã­´?„ÌÄ“Q˜Þ Çw+uš4i럀¯dB V|øDhý1úW»JÇ©S¥ºþ—J ñçsàêU5Cè[‰W`:9räÈêÕ«³dÉ¢{A ]N²BJÒ·o_|¥ÁƒÇSxbÆ cÇŽÕ|î½÷ÞAƒéË éA+i’"H¨Áõ~,!— œ—^zéË/¿4×ð€–P¯dH4ŠpÏÏ 7Üðç_½æüÿqm ?Êâs o¼ñÆ z2ð-Z´(T¨PÙ²eY-ªæ:tè@eµjÕ0džçÏŸŸ>}:+}ÓôC£BR<Ê5*Z´(k Ü Õ¯¤G,>òåËW»vm“!n2]7hÐ@{÷n¶õ–„N»uëÆÒ¤D‰Ý»w‡Xµ¥!-ýŽ=zݺu3gάR¥ÊòåË¡„lÒ¤I}úôŽÕtãfÊ£Ê_|ñE™2eX‡Ùo©äÝ›5k–º$[Ãr›9ƒK:}ë­·^xáÄ®T© vECýäÉ“uÙÌ.ÇaUÍÍÿ¸åÈÍqLÏž=Û¶mÛÂ… 3 _}õ•fëÈÁ¦&nß¾=ž¯º|öÙgY¡ªòÆ;vì¨É|ÊI/ö‘ÕLTÁaU·áv|’UvÇJËà:ª€{®Ñ1bDݺu-zy¿ bÿ—–sÔÔ|†®e{ä‘GæÌ™£úb‚üªìÈÄŽŒý•´ÓøW$ ”ZÿôéÓÿ|ýC¨Îþ¹vçʵXÿÔ«W΢E‹tÔ¾K—.ìÚ¶m…þýû[€#¼Ë”C ÂR¯.säÈÁbsÇŽÙ²e?~¼ªìܹóçŸÎpîÛ·oâĉºá´iÓx¬‰ABëïgM:Wm’¡ >ê2uªÔiR§² j§M›“ÄÀ#J—.Í ®]»–)áĉ¸Ÿ{÷î%¯k²eêæÒmk)Ž?ï-’0rÊW ymØJD$57"’Lø¹Üâ¹që ¸ý¿?<”{H¢SX|V!|((5U×ö~±ïÈÌô‰iÖ06lØÓL8è»ï¾Ã̹qÓê¨&LGQU ¯Á§×?, T ÑÕ^ÿ<õÔSM›6%û­™Jáu"‡?pà@æ½$Ò´`pv,û°šÍUÙ‚ÛÐÛÇüÙ‡ÆûÉìÈÜððÃ+žnL™Í]^¬Xr©X©ViëׯǷ DAå„Þ®”bbþwCX£ê6ÜŽO²›ÊŽCàXiÊæ¨öô³Ï>{â‰' (Àó‰ü–&\:¾ LÏ€©ˆí¡‰c†Åñas{YQé.û+é=·~ÃPIܹ±J˜{”ç¿ °he®‡ý¯Åý)¸ùþ´RÕ bjT÷œVžgë¹çžÃð©)š8 zK¹uðàA|sÝ#óe…œ9sêJ]ÀóŇRÝ©L€bˆ'«it Š*3+˜Ä–Þo¾ùfKÜœ'oÈC^`8«¼+…råÊñ™q«)Øû¥ÒþÉž=»ªôæf6ÄÃb¡fI³¶ÈOUxµØ÷)S¦˜ÔLÍm·ÝÆ«¾uëÖÊ•+›”µ`nƒeV .í ¸q³)ï0ìYh7k™)ë.;Јqýƒíš5kÐÝÙ¥¦ÈüË ½X÷¥ nk ݆[YR˓즲ã8VjÁTÁ®KXn©gØB¬/Õ»€äú­d­?~ÖœµjÕ‚Ìñ!ÔÍ= GMÕÚÔþ$¸1td¢âCdçà={«ðÔDný‰ ðaàmÑ€2ýü'îÏ7ëÏaFfYfêÅNñ|–!ÌŠeĤ²)¼Øˆi Ðkñ…y9 ×ЕªÀ¬š¿GÁ‘›ã˜â¬1—3¦Äsy®^{í5oy<:%è÷î»ï2ÉaÚ°\§NÂoð¶þŽrzta¹'ÂnÃM¿ö'ÙMÇ!p¬´ˆg¿äíæÆ] èO¤”Å¢^»kbÞµšdPteÂ5u{蚤3%Ñ'R¾zÏ‚#ˆ‘Ø|%iVÇDå‰õgj%OZ GI{ý¦”¬¸Êlu$xüñÇyLj±’ªe; Žv6É+ˆ§žå¶ÞqÁææ* û5@õËBÜÖ›¼±ØY‚Übà !oæl d#ÜO= ÉÔ©S‡‚ðfÊTD•ãìÝlâ& ]óÀ‘ÍF_>¬7±³ŽàhnmÚ´@t!ø +UÁ'7Â8xÊö|ø¸qã€W}ØaEN‚­lˆÇ×p˜hñyYréä ¯1I–ù&Là='êeÆré—ã°Z:^Ú¹¹)¶†p 9ž%ýäÀÓÎÁ±#]ÉcIŒ‚°5èN ƒB@8‚öb2‰aá¦_û“ì(Œã8V𲹕y×À„g†w‡´¯§òÑG%èÊôÀ:€——×3cÆŒŠÒòÚ›û©qÔÔíIxì±Çpk°àì¤ ¦ù;2qDÆòJ:Òh¶á/\ûŠ6" øæìñâ­ÀcåÛBC ¬1%n4ô‹ÄÃâc2Q®½Ýʰ¹ÇŸŸ2‰-eÌ%ÍU@ߢ#¾ùÅ+Ds*õŠ„o—P©GMïXðÓ»ÙÐQ†ÙÎg§ÐcÅú §É\—½¹±¿¯™¦ZÀçe Ùûˆ Ì0yOW&s;\nÃj¶r+Û¹9Ž)Ocêø„Ø9¸õŸúz „°Ûp;>Éva‡À±2ì>@0½SÖÞg‘H s€~õì4ñ©±kªŸ¶šßúf ‹¾ŽoŸ‰2æ+éFu’¦-ëxgÛíÝ=Æ ™pÚçFŒ#Ùºukû’PÓÓ=}© v»¯n‘sç£É :ÅdÞÕ½X>·mBf[]öÓ»&¦à( õZ“Ø£Ì*xÜõæF ¤qãÆÍ}ÞÂè{‹açc‡ËmXímí5vnZqsLñ3M? íì½Ä¿&â^|"¬µ¶ˆêø$Û…qÇJ û%û ˜rø–8{¢p¥‰dÚit a4>ú2Á vMÝžÇËÎÄ ó]p£Ipƒa$¾?r°b`uÌuE±ʼ‡Lþ½E ¹ $*X­\ƒ0Q)C E˜ŸlfO Óüã~6P$Ëð‘·'ˆûŸ,½‡¹S<‰­¿ÒŠ9ÀC=±ûàÈ-A@’¬$‘-±Øw …A@HY8çS–"­ ‚@PÄúELèA@ˆÄúGÃ(Š‚€ E@¬PÄ„^h@@¬4Œ¢è ‚@PÄúELèA@ˆÄúGÃ(Š‚€ E@¬PÄ„^h@@¬4Œ¢è ‚@Pâõ]ß  ½ €ðÓÁüÆ–ÇÏ&`_ÂJ?êL9ѧ¨bý}%d¡C€_ã7&9V(t’‰@‚@r À™+ß|óÿžÅúûÇJ(Ã…?ÌOÆsÎT¸ÄidBà—_~á ÿ‹õ÷•P† Ž•Æñç`¬p‰%ÒÉ„'ÚòRøï\²¾þ±ÊÐ! ¿2º!’ ¯CÔZŽvS‡Â'êXpÂ8Ljûé"iäñ#IHh „ˆ³øŠüp8Çx5oÞÜ<Æì“O>á¸Nóøì@„3ç™GG­X±‚`.‡­GÀÍl‚´HÛ¯_?³2Ë$XyäÎ6âðú?ü“„½™'¶<Þ½û¹ òY—d‡4%8 ¤¼dÉ­)gˆ—/_^]r|ô{ï½wñâÅ|è5MÐzÝP ‚@ àË÷5jTïÞ½ÍS|¯\¹Ò©S§§Ÿ~:žÀ™³:¤ùpùÆõeh X¿ÿþ¯¾újÇŽqšþdÑkøÝwßùïšS¹QÊ?}Ø(÷ìÙÃ9ÿÿ¸T=z?ÓÏÜÖ¨Q£U«VEV6}EA žøòýéƒc£±x»ª¿Å‹snr<ûVͯ^½Ú³gÏ  Z%Hï3Ù´iS¾|ù"nž ûöíË*jðàÁ>ûzûí·}R†–,Ož<œ0noèС÷Þ{/ÿ©gñŠóõ×_SZoa+—‚@JGÀ—ï’ܼaÆ“'O*…gÏžÍÊ]+áÀ«*Z´(•[¶l¡ž€8¯Ü¬Y³ a"ÝzÝDüq,é´iÓt.0ÙÌ™3G]¾ÿþûmÛ¶UånݺÑã+¯¼Âvï:uê}ºIOÙ± “Æ‘ÀR GŽY¶lÙ (üG½nÝ:N GÂåË—Óû—_~Ù¢E „ >¦<ªŒ“'OÖe´ð´4™=z”.]šY°víÚê®ýI Þ‘RÑÛ»pÔÑÒu K@àáTM7nÌZ—Aëu*Ä‚@øðký«V­š+W®yóæ¡sÀöíÛï¿ÿ~­;¯ùâ%/U¶lÙÆO}–,Yðè±§;wîäå§ŒÏ帉@óSO=5pà@"š¡*°fgÁ®Ê˜]¢´ª|üøqBFlõæ³Ý»U«V,ç™iÈŒ1B3™1cFîܹ Ê3+`§ø"·ºtéÂ:fÛ¶mú÷ïo2Äs\¹re† 4E¾D½XÐo×®]©dZz衇0£xš-[¶4éU{&‡ ÞJ¹5ÄÖ“˜aJÿ1cÆ(2&c$T¦yÀ€õêÕ#ZµhÑ¢[o½Õ”G•ÑîìÙ³ºlçiiÒ¹sg"EíÛ·oâĉê®ýI Þ‘’z¦|‹ØT:ꨘÇùŸ4 †þÅ_<}ú´"f.a:çÑU—Y³få!Ä]Zg×B ¤8üZÿÔ©Sã¼üACþ³0¿eÃ+‡ˆåÂâ(ß²&MšüóúãÞ´iSb¯nè£È™3ç3Ï<ãF`¯Ç‰cjÉ›7oõêÕÉO˜0D1«]»vibfüÙ’%K2µ0!ÖaíÚµAòÕ,öîÝ«ÍDÆ ™¢• ©æpäȑիWcñYÖð¡À"†I(}úô7Ýtv„IÎĆ](¶ÞJy4dÚcöerß}÷1±ÑsÃlHH"uJx@óóýX;O%¿©fáV¬X1Uo”ØvJèí]xèhöîXfñÇr‡ÕÏ_|Q¦L&3ÈÔZÁÒMÀäÂ… Aëus)Qƒ@€Ø=ÆG‹Iæõ×_g¯‹FØθ ìoÑõ8×øwX^B%ºÒ^À<½ñÆ,&Ôìb'°×dΜYU’-È”)“2̶ٖq·ÝvFpëÖ­Ì´;v¬¢gÀ Ä_¦2{öìö^TÖTo)W®4¬HXR؉UZ 8v'·Rœ‰ç(æ¨lâo Éš¬W¯^¨üÄOðK jJ0 ,eožJU–Vö'Á’†ö.DYÆá 2¯Jeë)°þc)@eÐz{wR#¤tXœ_¢4/½ôVžwì³Ï>SÊc@‰¤v¨U«á—áÇkPpºkÖ¬‰ÓM8˜€®·*V¬H€0=ksó® ×P£ƒæ]ŸeÚ²Ò'(¡"lÕqjojJ`ÂS…Ý»wCVqv'óˆ*†DwÄj:vìÈìÅ–-·ŽüÔ+aÈ|˜;DŸGJ·.â©£b›1cF¤R¾?^?;²øñžCî‡d Dº(h½›ÀR/¤\þ/ÊáGa'ämcX¹,P Q–Þ:RO¬œ°É[o½…égEœ» 1ýÄ£õF=xÌÁ¾°È`µ¡’f×Þe’ɬñ™?HÌâþcñòî»ï&2®œúŸþùÒ¥KLTŽ”ô d°"‘À: þüMâì"N7æAB¯6·(†ì£å VÊHÒÆÿ{p0'n3uêT2@ð?pà<ŸGÊ„ÒÑä£L<ÊêHã“O>ÉÃÃ÷3 fMF.DÍßAë;¤,DÁ¬?vÿÍ7ßlß¾½©9»JêׯYÁ¼ ¨B—ˆ9Ñ|Þ:Öã\bô8›:Èn6×e²¼œfôæ±ÇcÎÀ|º$(¯)}¤â'\C€Ð“úª{{ˆÚ³Ô`ùÂLûhg‹.¨@¦”82âÌd¦„ö&ÔÄÙEœŽlýp6¶iÓ†D:©é5kÖPOÞ›è<Š‹çwôT/hAr›=WLÒÍš5cEèø$@l§TÿG ™g&6dà$¬Põâ+èÎâ[èuÐzGi¥RH¹¤"LL\>þ ÀDÅßq¨áfæÙâÇ¿›µ|P&„w m“˜=uêq‹É¾|ù2rZ¢L] ¿#HŒ8»ˆ“ÀMž@ Ù°DbCå9ÔBÇü¶[þëÏ;s·'ÁNéÑ‹ññ±õ:ëŽwOÒ˜À©{;g<Fܾn Zoç,5‚@Hà7>ÙØÍ?òI0ëï§?¡‹õO@ÎÂJH‰µþÁ"?)‘YAÀŽ€X;&R#‚@ô#`Çgôƒ!¦(HYñ‰ÿþ¥¥´+¸" Þ×Û¶býmHE A€4/›úIì[RúñŸ÷‡æÂP0 „@HÞ>þ%—¬¯¬„R(A€=?÷’±5A@„€Xÿ@p ± Q‚€Xÿ(HQC@ˆõ— ‚€ %ˆõ’5A@„€Xÿ@p ± Q‚€Xÿ(HQC@ˆõ— ‚€ %ˆõ’5A@„€Xÿ@p ± Q‚€Xÿ(HQC@ˆõ— ‚€ %ˆõ’5A@„€Xÿ@p ± Q‚€Xÿ(HQC@ˆõ— ‚€ %ˆõ’5A@„€Xÿ@p ± Q‚€Xÿ(HQC@ü/Bîñýþóô~ÉÁÎE>}øù[x `À"ê(™˜ÎŒB†ó8|hdÿ`¨$‚I˜±$žƒ`#0€‘ð´IØI ÒÜŒ‡2¥2‘pÝÓæ>ýv²Zªô]OŸ7V•A”Äw‘²R°õfÎ¥Hw~õÚô)T.@ÝÑ”yÆ(I\`á*õ*‰)ܰbÕ˜=;ƒp!c;zWèØ¹8¹ÞePXé^¾/"û"ØSÖÆ‘òê©‹qšÇ[Ø]93aÏrínÞ,–®Ö C¯í±-ÖÓzÖÙ´ébº¨cË®£v±oMš>¼¸óvÊ•3o^Â^Á£3œN=‰ë8̉OžJ÷¾ÆÁ§P^›õìÛ[{ï"~|òéÐoaÉÁüÿsì7Ûde8 Žq6!à Ug• ’±` -}VeƒÌ$%öçM8ÑTCuÛ‡£Ø‰(ù‰X‰\؆[ À¢Ë!G£H|਋%Ÿ— ,©£o£Ð˜b6V /@ñã“–L)‹Õæ ’NÆ’È".ù ",Rif‡× )ˆ‚œX£—Nv9&gòRç|j®Ci„hçœ8³bŠeb²!“hž‚åDÆ]u‹)…¾r\"‚Jºa™“j¨=½,Z]£Ì$“(-ž>(ߨ³”áYª®êS«7ôçj°Ú ë¬éäÙÄ­Ç„+Z'ð+„ ú«w%k+±ÿ²aì±nèʯ7A ´è‹µêy…mdÒ.Á­©(–Âá¹Çã! ƒ†Qk ã’+&¦sÆ©.»p\òlTáï×òHo¤ó^ú%¥>Ié¡™b¢¯¾‚ÞȨ¶O¬Òl²+¾g½’Bø§¡AÆ2覀J¬ðŽU>—ì¶Ì’pÁ?Ün•`’i®Í(’Ük½aÒŒòÄß±¼C|/Û+&Çå*¼$Èfnü¤Îu~l)‚ïÒð¯Ew|4½ÉòÏLz2Ó M¶¥Èº,4»DÏŒôÛ0ëXöÜVVòãŽ,š±ÓRRìÄÕ!dá¾UÏÀí`ƒ³™¯ß»æ;Á·z]1äîöK„²ÿ”ãP8 ˜g®¢åCtî9 ›Ã縯£³ º‡ã”úâ’ÿݲ!ξ®:ãÓÎNû¾Ø–^Ÿî»ÛôÊ“-o×è*B ÆBðÞüêAmÒoltóøÎð¹=ðÒ¬)Ï9*ï¼Ú³`±mÈü̘jìõÙRŸ>ô:Hß÷[Ù®Ìô»™1¸6†ô­@ëà_ÌŽ¾©Ù)l °ßOp'.îízßãÏ 47@Ù)@øËÑ @j°r«TÂÄÇ©\QÐ_L #²a@´Î4ú¡aq@- ïx[Û;òÂË ";Ö‰»Æ-ñyE Ýé ôD÷E‘uÄÊC ÿ_WÃõ¯ZœUQ =oUqaÄ“ñ¬ÆUñŠìb¯ V -NäJI\ÖÓ†¶>¬/x„cþbHBêQiy4“¶3F¶ŠMœ–'.沌)òlþ›’Ô¶Éa˜+M‚ÜBµ*iÈMIÄn™ô '/õ³M¼1*í£ß´ÀUæÍx¥ŠbÙ?LÊ©d¶›Ò\™Çtðr+ŒÛ%Ö¥>’‰iÌÞ1!]ráQõ¨f1ëáÃ3ZóŒ Ú&8õ#ÎqÊá›æ$B«$NZíÐ7¼ig*Þy0Ê“›¡ xÌxÏZÐó ‚ëçýò9ʾ…;¥h ·ÎøDéNV9èB¿ÕPŒ•«l,<¤ÖÉÌ&Ë:“Œ#)#èI‘ LŸŒZÝÜÆ‚bmd»øXüæ¨ÊâÊŽ1˜fëg4ø™ÐÂéD¦iBžjͨcK‰ ?E¢ò}NÝܧ9¢ TsKEÜUUÒÒnnu _†PÃêˆg’Ÿg•YÓêO¶Nc­níæJ׺Úõ®xÍ«;apache-jmeter-2.8/xdocs/images/screenshots/http-config/http-auth-manager.png0000644000175000017500000004741312032647175026643 0ustar ebourgebourg‰PNG  IHDR·î5Þ7[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxíÔTÕõöƒ‚‚  `GŠˆ *APˆ…OFÅŠEšA¢Æ‚Å£ÆFb¯`C"Fi*¨°¤( JQÚÿ‡û[gÝÜ6wæyï™gÖ»ÞuæÜSöyö¹ÏÝçœ;{×Y°`Á/ôB@ÖŠÈW¶B@¬A@,©y „€ˆC@,‡Ž® ! Ä’šB@8Ä’qèèšB@,©9 „€ˆC nÜÅJ¿6bĈÿüç?mÚ´9ãŒ3Š5Öÿþ÷¿ŸþyÓ¦M÷ØcbµI;%j¶ˆª)!P©„°äí·ßþøão±Å÷ÜsöË/¿ü׿þ•¯0ËÙgŸýÉ'Ÿ¸K¾Äf›m¶îºëƸï¾û¬«»ÖZkA+mÛ¶íÝ»÷;ìàkÐûõÞ{ï}àȹöÚkwß}wï¥ÒÐÙäÉ“—/_^@ݨ*£G½wÞ¹¸,Y¢fmNÛn»í-·Ü↶zõêN8aþüùä0¨Æ»KJêA „%s¾C‡[n¹¥{ÿý÷¿ùæ8®}ûö–³á†®½öÚñ\5Úm·Ýf̘Á­Èûí3gμûî»×_}WÀ›à¦}饗,ç…^È—%?úè£7ÞxcÙ²eýúõó6[ÜôvÛmwÐAµhÑ¢&ÍE-J³9EÂb3gΦ›nj%§OŸn™³¢  F –<óÌ3"ùË_ ÌÀK/½Ôezñ0<­"Öåý÷ß¿páBˆ2ŠþÞ~ûí¹sçÂÂð).^¼¸aÆ޾âÓT§z,)Kî÷ó'^’œWƒ¢¥ÙœýRàõ×_?ꨣ¬ä˜1c’TQ!PÙÂ’¥@dß}÷…%iù‡~ˆjÿÅ_äÒ€.ºè¢Ÿ~úéÕW_=øàƒ]aŒÐI“&açžvÚid¶7Ýt‰Áƒ7hЀ›èС|ýúë¯Ù1Àòíß¿¿«‹9|Ûm·M:••òqÇé»K´ÃÎÆ=¶jÕêˆ#ŽØgŸ}ìêO<1jÔ( “yçw~öÙgì¸ÌóÏ?Ÿbƒ š={¶k͇rHÏž=§L™Â>øà*²˜Ý{ï½O=õÔúõ뇊êk–v’vòÉ'GË'_·Þzk„yíµ×Œ%±ÜI³&`_‚«|µ*QbsÕ ÕoL]ª³«ðØc ÿ¾}ûþãÿ ÓK.¹ÄÙ¶ï¼óÏ9tÁ¤cÇŽh°^½zÞ~½Š0iõ_Ô¸3î=ŸânÞåæÅ2[¶l¼JÎÒ¥K)³ãŽ;îºë®P!9Fš®0KEˆã«¯¾²VÖ|å³jÕ*r`n-ìn´ÑFÞ-¶ï¿ÿÚ;vì·ß~‹õß¹6'Nœxî¹çòŸÝRxœéW\ñÐCYyóæÑ>ËRîdÊÐ#ù–ùå—_Z,_º³÷üÏÍÄ æ*I§Œ—:uŸ|òIˆžüPQ}Í&Œ}Œ¨q™l¾ÿ]»v%‡ZÇä©yñ-,Y² b„ P”d²uëÖ¡U°k¸a<ð@®ò³‘!9e -ïËä,“ à ÚbÀ{õã?†§n¾ùf$¹ñÆ1XàMöFW®\‰9ØbàÀTa·‘ƒŽ|°{÷îÎÀáœjÿý÷¿þúëC—ÿnw‚6!\a‡ñ°Ã#qÊ)§üîw¿ƒµI#ÉB›tŒ¨\å“P°¨qY#Áÿ iæ$|ô›ßüF[guºtéb6¾+%¶+ÓoT]ždvT^yå•4eæÖìŠ+ÐÅúôésì±Çbûó9Ù{:+¯'žB _"Y’{ÞÙ4 Ù=œoñåi Âʰ’…GœÍâ«Èq Gçtäsëb²6'“Uª¯d¾_±æ`+Nœ0T© ±= Kb–bŸ’ãöI͆eé=mÚ4Ç’Ðú\`dÕ5m^uÕU_|ñF%Ö¨­¹½¹í±ž8!á¶§.örT Þü„‚EËÛ”/ 7!ìóX‚³Ø¬ð•É)vL¿Qu1Z j÷bÀæ›onýÚ|`žØ9z±y¸ÞzëñˆeõíX2‰"|cÑW!H–äØîpMð&P)Xr“M6Á¾`¢³ÿƒ¸î| öª &ˆÛ™vópäMõx†ò5üÊH¡Hòí¿+àïXX–É}Á±ùà.‘Ïâ=§·Þz+[r,¥1”6Ø`kU3¶ª±ƒå¸½?ûõßõ/XÔ¸¢š%–ü÷¿ÿÍZŠdÿ¡[·nÁÂ9ÅŽé7ª.Kfëh«­¶ öHŽ+ð÷¿ÿÝ[Àë÷/‰"¼u• ˆdÉ„õkXŒ™ý«_ý*g#ö…ÝÝBš5,6È[o½ål=ÚqDSóTg¤`ÈÑ5Û¬Y³œ2»O?ýô3Ï<­³KèÎ…¾ûî»Ë/¿œ=„“N: Ø=à PW%>Q,Á‚½¸E7oMbEvêÔÉ÷&PMÄŽ©ëÞýâqȾ$‚¹íH²yóæ–Cgo’ƒEiùú/J‡ÀšM±Œ >X«“WÊÙ½rVvH΢Ûä·µ¡(³gË7.ˆ•Ö¶,™}—B¿bÞÚMˆme8O°Ä6ÛlZ%˜‰ ùÏþ“|l^N±]Y³fAX—ǯIbsù¶,9rá<Ú½8É&¿ b[ÍM^^qû†ÎºÄ2ⶇ"ùQçÎ{ôèß;w ÔÇÑ,­q Í{*Táè¦]»vñuí*g,±á>ØÞáäÇòí¤žöi“ó"ÖàØ›\ÂVeOýÙxQk.XŒð¶è¦@èr›£§±cšåR|]vB}ôQVüÚ‡g|øá‡Ôª[wÍ¥ÓÓO?ý†n?~< :Z˜áLƒø~uUÔ2°%yã~äÙ7TrØI„õ8åënÎv¸© Jî"î%+︕^¥Ä*aÓ×î|­…~娗ÍY8Ë”3ha8ZýÃþZ8˜ ?Ú럜3ð.!?ò³¼eÄK…Mš4Á7nû­Xˆ”g[vrŠZCÁ‚¢ºða¹Í«¦Þ} w5^lW,4_—S¸cŽ9†½iö{³ÝlL„ ÿüç?ó¸â õ 6Œe½ÝÚ2…@±¨ãÝÿ.V£)¶³hÑ"î+L80áVŒ/ã«Î ‰aÈ{|Žs} ûJ›’ر6/Ç2æx6sŠZ"Á⇓Sì˜ê ëÞu×]Xî@•í;c?-£‹à†@L¿º$ F ÒX²` T1]Ø‘|ä‘G8ºÁ˜å}†7ß|“U;,ÀÓL½ 2Ø—”’ªL{h‘—ì ;ñèŸ?Õ0v1ãȖ̸‚ªK<Þ«ÿôÓOy]ýG~DP]ƒ×h³Š€X2«š‘\B@d28ãÎP’B*E@,Y¥Š×°…€Hˆ€X2!P*&„@•" –¬RÅkØB@$DÀÿ&ÐóÏ?Ÿ°¦Š ! * âð+àˆü,I ŠË)G!PÁ<üðÃQ£ aIІjT¥Èû¬»Š„Ó§O·¯gu¿î¸ãB† æK¸ü8p tCl+‰ãñsÎ9‡è10¸Å€$Ÿ˜<¤i„Â|å DtŽØhÇû¬¹Š¿nÀDby[ô_¿V’Q}Á€>©(ìý`KºßF†ØŽµƒ½Sùƒm†–üì³ÏÀ'Íe—]F¼rC‹»oß¾ÄyçqE” “ć‰W<¥…@ˆcIîy 3ú^Y‰6C¬.n¿ &à_Ú.±‡ì`IB_׉@.0ζÛn;uêT[TΉ0¡Ø§T„ª „¿ÕÅ‹ÉËÝ0Þ^\zÒ¤I,iíJm®d’‚Òiß¾}°üðáÃ=ôP–¢s±.Ð>%ê,9ñÄ[µjÅ ?dÈ‹â JŠ7‰lóÑGÑ>Ïâ>ÒÏ '3fÌ ;ªcžÃ›<‡¯Ð+ÑohÇ>›o¾9± ,œ ‘pdÂöy÷Ýw©îëתÇôEu¯TÁñbY³—búEw0²+ìÝä¶Z’À¹˜êh‡"Ï낺<6™QãœÜúòaâPBd8–ä^ýío‹¥ãÛÅÃD"h*æ¹=Þyç7Ì„rÿ¨î¾ðÐÁÂñ9Īe¡MäE¬0øÈW˜P¨D1d£s§vbh°†¯€ûJ¼0ÂOËdá1¸Ã;Àže| tŒ)Þ‰ÈwÆ)AÁ°°\Eª_ùÐ# {Í5×X¤–ó„7 ¢Éû¥zL_>©œü.´p„ÅÃcôèÑÞ¸‰ÁÞ­V°Í`I~0#O"‚AÓD!ç¹È³ÙÒ±cG6»yDMž<Ù‰ÄÄ]RB¤Ž@ܾ$±"cúòË/»í*n'öø1@XG“¶ÈÑ6 üKÛz›–¡ ÷†!ÑbI?øàƒöK ®bWRÀ[Æö&ˆ¨çlNoà2ïÕ¼ÒÜ¢7-t¬ˆñ>K8Ê&º Þ`±Ð Î% Y84创šE±UlÞ¼yh °¡hYS»\Y¥Â\˜]D…„XCk‘Ó—OªÐ qTDÄ&|.¤æÊDõl3X’ó{Ѧk{ „#ô®e2CÜÕ(L\%„@Šä`I$Ãrd~;ÊÕGÉv†À~SòSo‹å¹°µ?ìí·ß>t¡$j9’@²F ð2Kc6O1¹Êó€ÿÜäp–Ûö ÝWoóî~¬i!Þ¾4–õ€Î?ÿ|ö+ì";z@ ›°é-ïë7ß¾¼M‘†%agLcöÜ¥˜Þ]K„–Üf›m0'Ù²@6 ³p»M›6@ömm&øÚÑW!YâVÜ&4sš•£€Ñ–gÁì(±Œr{v®Lh‚WL0<9+5jæìåóŸm;C«Ôf&‡Ú‹Äãþ°ñŠÀ¶LfÙËò™‘rŠâ¶h1”ÜÉUPNvØ”äÑ£±±Àæ,±ÂƒÅ,‚æ4ƒM Öì® kà¢ÖàÀå¶nƒýæÕ—kß%° YÑ¿õÖ[]»vu™Q½».Zr„(Ù:`KšÍ ž,/0¨Yà³éaÆ!éšRBdÜ,‰ÜlÀ3ÅmÜK¬Xo¾ùfNXŒs”Á‘E’±±šãHƒ‚}}N!XزɈ•ÁQÙI)]Î8·ñ¶ðÁÃéö#–ßm·ÝŽs´be?üð§žzŠx«¸4û W_}5{ ‡vý˜¨]ºtqW} ÖÚìºB(lðÙ‡­X¶nY°cÒæÞ<`[“Á~óêË×µ}…£yxã€Gõ¬UòŠ+®€ Ù`áU´4ÎV5§7ìW2Fž°g°5å "à/°=ÏÃ?^V^U±Ivâ6l˜WüxŒö"Ù¶‹é‚_VfÊÛnrß0Y?²®ä„:f Xñ`°sð˜bQ—ÎìẎ¢ú­a_AB{#'¦$s ®‡å±.­.s†ýk…H ER™µÀÀëï„m°i¢¨/÷¾d¨ÐîÐ -“é="ˆ)–©K^;Ë Æ^žc.—éKð¢/'¯¯goGQýÖ°¯ `¡½‹‘,‰qʳ¥7Gœ˜9Фps&´Se ÚA @–¬áÔKù"ÀÆ.GóàüéOÚsÏ=Ëw ’\d—%Y©åôh$ýe·>^ðÔ«oe_NI(¢È(Kâ:˜×3µ5… ò…€¨l2Ê’€žó©²£Ñ !½ ”Y%†B öKÖ>æêQrB@,YNÚ’¬B@Ô>bÉÚÇ\= !PNd÷ô¦è(:_;EoY !PÁÈ–¬`åjhB@,‰Kœ¾àßë1¬ݪ ! „@™ ¹âÆ^† ?âö /ü”˜¯Þøis“HB@T‘ä‚o4üá. ç`ø§À,.Î28`¢’áÝ…ßÉ „I²F œ%ñ‹—|¦÷Æ".å† •«DÂÁ7>Óp.Û§Os)aá°– 1=ôŽÑps@ AÒx·½ð ÍYw’202Á¶ˆÜ€ÇYÊ›·pø’ÁY!Q´è—¯¸™Á•7ŰsñL¼}#Œ‰×[Ê ž ÓH ¢6âÖ°¬U%á…€Hð}I¼p³#Ù¡C‡`PVâ„BÄ#ì™gž‰Þ¡C‡ªÅDÏF‘b9Ë„†Z´Špž®wÛm7<‡Ó/™¸€…:‰ÁKZã°‹Š\hÑr’„i4ùõ_!D Ü–´ßP‡úI%"AZˆ‘‚kU" ~¸f±°F§³„Çá?a E@°ÌC×w| µHûjS”ˆfÆBÙ8»Æe!æ¡…œmݺ5IDlÂ!Ð>ÌŽ'Z<Âj¢G&BbéÞÉ£„B p[’p+ÔñÆuMX,@‚:õÀ_„m›¬ËjH0”…Qdåëê&)ãB-~†Ã" µh E’¦ Ñ×,_‘‡•8‹ýë®»Ž fø7´L„KáRŽI·%!AN->µ/ ¨ñÆšµNà*8ÈëI;I¯1e,À^^¡½ŒÉ&£?þ8W­ÃTL_º$„€ȉ@¸- 3…ŠÊ;%ºKlbWŒMC‚Ðcû½K–Õ˜~:uÂâËÙS¡¡cêÿý¢k±aŠx:±Æ?òÈ#9—·˜±Ù Ó3 ]B ³„Û’ˆ{Úi§A4œ`¯0&ëV~çw饗U™°Ú|ÅY?‹Ü"N‰xã7j‘féŽ@Õ-Z´ˆê‚À‡„„þýÏŸ}öÙç¾ûîC6k×®ÈÍN˜Æ¨!(_,##†"‹Y¬Eþ³áèÛÚ#ÔYD+ÒS’P‹® æ$‡Ý&!F%1Na[wÕú·}BÀ!Px ExÇÞstm¹D©#áiÎuLxâ.w»VŽ•@ø¾deY£B@$G d_Ë3y}•B@T6þ}IïÒµ²G®Ñ ! |„%ôÛ’¡…| é«B zоdõèZ#B Ä’… ¦:B@TµÍ’¼õÍÏ Æ÷wÞÁ7ZÁÕ­bQ‰‘×Kq.‡Ó˜2E¹Ä;ÿ¡Gm5` uT“¡Õ°ëÜ$/J#5Au³†@!,yÅWàeçþûïO8|‰»’Ï<óÌ‹/¾è¾æ›¸êª«øuv¾µ(ï•¡àF’ô ,Çs ¿\âW’矾«âÀeÖ07&>ÁF  W¼êHÓÃ4Ò«W/nû ™å<öØcäàr0¨2ådÿéMNY1‘ÆS5È®wïÞ¾ä«óûÅ"ú¿í¶ÛÌZ°£˜Ÿ …5Ó¾»„ ùÀàSDøI2ÿI\õ àÊ—(‘ï‹(ž¦‡O§ãÆãÇ`ö3üø®êkY 7KâPâü|›…3nqwÙegß¾}qn?ú>ûì³7ÞxcÌùzùå—ssr/Ä@1\r°$'¢‚tÒImÚ´ Ê@;ÖHÎ~yòûä úB÷Ê€‡$§#›ý¦Ó~¶ á`qËôÙŽcÍ¿ýíoÛÙÙ ‚.œË]A° ‚úò¬"Í™kÛõÊP@Ú+^ì¡òx½#kz„"s1a¸M8m󈚫Þ2.Zû€OÜqÜL6¦ó*95åšU"!yœÞ°¶Å,rI6ù¤±zøÏbçá^úà+÷‹Ó—_~9J&Ö¤ø?‡[Ù‡&Hlÿçlá˜í*ò¸¸k×®p ;ƒœÛð ‡Ô8¤Ó(òí—î0 8/:ꨣcËÙ‘oDa±gû‰÷%açsÏ=—]?Ÿ ;5ŸíO³~§Gvf9ƒ"=öXÈ‘C$–Zf5ød(àk>Þ¦BåñÐôð¢áMsÔÆ¾9G7Þ̨¹ê-ãÒ¡…!G&ÛJœqÄÌ7{ÂåÔ”kV‰„ø}Y5vvã·3C[‡•X\ð ^ż熷g]ðªË)ŠÿsHÄv$i'9ÌbíÇÈW¿Rc¢2ØÞWYÓ¯o;’2>vôÙŽeÁâ]¾y(8í/ª  ñ©Îª¸XÁ£GÆ5ö/–2â…BGIâ=àŽ°6øôÇåå5×\óÉ'ŸàZͼØÕɼ`A›ü”÷Kü¬¸eË–¡ñå°DÀCï,8Þç°›P%þá™xwÆ‹h6ÝO>ùds×^ô2ÁBð_Çc5“׊R˜~,/ðm…ßUœ¥†Š¯»PÑ/+3¼—†N’¢È_óF‚7`è<  ë=çÜv%k'Q*[’ý…¡C‡róóhµ‘à³ä’K.!Î.rmÃß”L&–Ã<™RV ï0& âŒ1ù¢áÞ}÷Ýxu zºÏ·©š”O>4<üë_ÿâžÁ¡G¾‚ ñïòì³ÏÚ6M:+yûí·³¸ƒ\0Û‰XÉ-ÚxÀ4§ñ5D2¯áÃe#FŒ  Áÿ ÀA@‚9¬UqåKu¼ÐskMœ8‘ôôéÓyÜâ&Žâ% åâ®Ò´àk>ô°¶ð(L°_0\¢ Z¨ý®$éÝñ?JìxÝdŒïs–N’ÚfhÁ0t†Ð5ÈHãñq%k'Q*–$öëÜñ–ÖFÂýL/“„ß´)΃—>D¹Ç,(+̈»ož–ÜoXIy¡@8n!Ìs¾›WÝâÎkhlàdL<ª|ðÁlé²ÁjÁ¤‚ÐYI|€òDÙy籸I³Ã1F4±kˆd^hEvf‰`z $˜ƒi±\ðìÍc»1=°(Áµüñ „KZÜt›ïgätèaâf‘¯Ì:pàIIy ¤X…YÄàóybÄŽÑbôÉœ$¾©| Þ€Qó0çãñ©åÑ•jÅÍÒ‰5FâgœÁlb!&‰‡!«i ÈP1­qNÎ%–ÛÜä~àà†n0xàáÀ¤7[É.yí\7ÿÛ ·Þµ¶%Oò¡Y$7R7jç?8:Ê;b…,0ÖN$]5LðTC¡°’Û Øúr° ±¿pN K<˜X¼¡Âªœðëì$àØØ(˜ŠŒ‹´Cç+VgºÛ,†¤M€—Ü(±ctG#¡Zãö?8I¼WÓJoÀ¨y˜s€ñøÔòKÅ’6 ¶ØX"•µFwÝuÚe›ß ²]»vC† 6lw'ìÍÁ€D²…ì\_‚»bæÌ™lœÝ}BĨ–ÇÏ4ì|G¾Šû5Jž†*öH(t¡…]f$]á&0{m¡míD ìFóå`ÒäH‚›¤}ûöŒ<5™3¬-/^ ÚÍÃÎc Ù¯¤Ì’%K¨Ž$ÞÇg ˜ou&<ñˆ8®eo4§ØÁÆ£ –ÌZNð ‡e7ÀR­¸Ñëh"Á2Yyƒ5 ¾ð˜Ù zØá`I‚ÀÚ„Ó|å=ÎÄYf²‚#M‹Gþû>Üßûª»¯¡ æ¸BÌCB¿ñ ½J&«én‡4ª˜/¿X£ö5ë¾æÛ•t‰PÝÕb%J=p'gpÖÎޣ櫣µlŽ1ŠD>‹qhr{Ón$lg¸th‚}>¡—RÉ •§°¡…Ê ]hI_fN$}å‹õ5Tà ÁœxX—Ĉy²ÆW,éÕœb{0X¬\r‚󰌘hÅÍ“ÐØ·\TR9«sÔ@W¯ÎQW­ºó¢ˆD,I‹É}±åÕ}Æ W稥îŒOË¢‹W…óÿü ›o¾Åž: {ô‘ÉS¦ì²ënVyæg þë5sçÌÙ¯{Ÿ–/¯[·®ÝŸQùytYÔ¢Ðúúë¯O“n¸!ÿ§L™Âšzï½÷&½hÑ"¾Âž 6Ü}÷Ý›5kæë9X`ÆŒéùçŸßc=°q‚e|öµ0²[xV}ñùç·þãÆ÷Þ}·a£†ûuëѧïé,`éÆÁ×½÷î´¯çÏße·ÝN9µo›­Ú’™Ý-Y²rÙ²eüG;| ÆÉ“'óÍ7ðæFm´ãŽ;6iÒdÚ´i_~ùeçÎ7n¼f3g.\¸pÏ=÷,‘^LŒjø_ÚµRf\¾buÏ?7¢ûuÿÕAŒkäˆg] ׺rö—_žtj¿U«V/øæ »•ï*&I”Ã7Þ˜–¹‹ø¿råÊ1cư ëÔ©L:~üxnHo¿¡6Ûl3ŒS íÛ·oÔ¨Qho#§“ ä+E®±%=Z^¼xÙ…¿?wúûï÷?û¼N{íýØ#ÝvËÍV NµzŸ|ÚŸ.¹|›ã¼ÿ~ËÌŽî Aàýꫯ°ý½qúÐäˆÊæÌ™Ã xy¶ax~úé§5‹t]¥ÓKÁ -»ŠÕÊ’+Wa¡äõ7ëƒ>úpÖ¾ÝزuÛ6m·þϘWýð-Ì™;÷ÓO>îÔeŸž‡þæÌó.Øx“M™1ùyuJáM)ŒJöW¬XAûܘ*[n¹%6&܇ñ‚õáí7´Æ I#[l±tZÆÛHÁé|3РyoűãÞ˜7oîÞûvÛoÿƒúžu^£õ×nÄð—¯ Ìé¿ý}ÇÎû´lÝv‹[¾óör¢têm0Iºà!{+‚0#›l² 4¶8 ²y´€*çÍ›G•M7Ý”³Ï>ûŒ‡Ü‚ 03[´hQ:½x…¬ì´VÜIõûÒó#˜‚wÜz–-]ºlÙÒׯŒî¾Ï·¦L&§ÕV[sÛÀ[cK®\•Ÿ´¿—Ãräà#…~l«kúôéf’¬½öÚîœÇ¤ÈY I#ȀͯúϦ°·"Æ>-´lÓÖ2[µiûÞÔ·çΛ·a³æÞs×ÄñoÌ›3g媕7É îØèÚµë¬Y³ØMž8q"ŒÉT|÷ÝwY_ÛzܶàShrþüù³gφ4yE!‰îòöúJW)K®Xù?+Êœz_Åšô•—Úï¶ÇÍ6¢pÓ ›Ï}öÉW^ÙµûA›®Ùã›7w.mÂ;?ýô#S“tT~ξj§À'Ÿ|BG¬æøß Aþo½õÖ»ì² ‰à'gª$)l9IN¾Ê¢M´Ë³Ê[ÑÔWZ&œ§4\¿Ék£G=ùØC½OíÈá½þ2àws¿šYݵk×î»ï¾Cq_ý53GÚÎ;ïL&»%?üðƒ!ÙªU+X’2,ÃÙ_&³tzI¢»Ê(Sµ,™ßJvò„qýÏûSýŸ ÝÏþòó©S&~5{öÖÛíX¯Þ:oŒµy‹VÓÞž´há ›7_±rUT~Šó†[k.l¾b¶Æ|À2yûí·G[©qkqÞÍÞ·"ÛÿvÎcÒFàu"ÖwÜ´TŒ*Sóñf,_þÓ”I¬bƒõÖÛq—Ý×[¯á›c_Û»Ûþ_|öéüysvÿe—:kÕ]¼x eê­³îø±¯õåhyñ’¥™Òð²ÛÈóŒu4Ç5H‹j,ÁŽ6#É{ ì?²@}¬X•c]²yBáÒéŰ­†ÿUº/¹rÕê¼þ^õž{íSoÝú®ÖÞÝ`ÖŽõÂZk×;äÈc¿_´ðÞ;oÞ²õVÍšo„%C±¨|×BÂDg!ëè×^{mܸqìUñfÉ€ÙKûÜQŒ²ˆ{óÍ7Ÿ{î9»ÙÒòöU m۶ܱ£G†+£ÊxÛ),(o1:B#×^öGû»÷Ž›5nzÎE—A%Ó÷–ÁWíÜ¡ã)ýϣʞ»² ¿ûö›žöP‡Ž\¶lÈ­Ë”î ÈI“&9’w  E¶#Ù‹deÍ# MaQ†Œ‹#oƒ·eË–$ØeÆX&Q:½XwÕð¿»¼Áq¢ãŽ;Î{ ,S¾98v=‹+?;•LJ~ák6*ßW,æëÃ>ôäZ"ÿ’?ýô'§F¡"…àä³Ô•-ã®Æ'ðcèZÑ•µhá· 4¬÷ó;@N˜¾_Ôhý5oÏ|¿ð» Ö­»æá‘ÝA‚ì?¢/ÎHÈcg›%¸j´È×ÐOqõÚE™fæ¤;­¸i¶o¯¢Ê ú"—ꮳf²׆QùQ­•(?Þ‹ª#&ìŽxB ønÝÐ2ñÍÆ_ ¢_>TY¦&*®×¨ ÿ}mÖ_¯‘å4h´†+-eݙʌ"Ø%HG}Š®—¨Ž*/¿JY’¥V^º¼ãÑ¢ÊçÛTT;%Íw&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí üUÓúÿ•¢IE)%"%T„2$„‹kL†D”¢{¹7¥›LID¹¦K$Ó5"’D…ÒHsB†æÐ@Tú¿kýîzíÿžÎ>ç»Ï÷œ³¿Ÿ­××Úk?ëYÏóYû¬g­g­½žRkÖ¬ÙA—B@"#PºÈÄ@! „À6dQô! „@<Ȣă£¸! „€,ŠÞ! „€ˆY”xp! „€EÑ; „€ñ ‹Žâ"„€eJ8o½õÖÇ\¯^½.]ºÄÅüùó¿ûU«~øáqñ„O–ØÆ(¡X !PÂð·(>ú諯¾ºçž{>ýôÓ ÷ßÿî»ïæ–^¸[·nß|ó}äJÔªUkçw'øïÿkj1eK—.M¼ß~ûµoß¾aÆ.†ÎÛgžyæ¹çž#gÀ€Íš5s>Ê M×?uêÔM›6eP6¨È¸qã@ïC‰×¢d‰­Ñ¶ÅøŸÿüǪ¶uëÖK.¹dåÊ•ä TåÊ•í#%„€.ü-Š‹È{Û´iÓ½öÚËäÏ™3gõêÕØƒÆ›œÝvÛmÇw '°<+UªÔ¤I“yóæÑmñÿ‚ žzê©]vÙÅ8tpcÆŒ19ï¾ûnºeñâÅ'NܸqcçÎlãM7hÐàÔSO­S§NQØzE…mJ‘˜ -[¶l=ö0”sçÎ5æ$eA! 2´(W_}µÅî¶Ûn£›fzqË-·ØLg"œ€ )ȬåÙgŸýå—_0*A¦bƌ˗/Çba{¨tÆ +VtÖž¦8µPcV-J«íW¸$)ŸzE…mÊz!˜0aÂùçŸo(Ç¥ˆh„€ ¡EÉvÇ<ÎëׯâÿÞ{ïñ¨wïÞ½zõúã?>üðÃÓO?Ý3¹ùüóÏ™?]yå•db™xàƒ *_¾<åðáù]µj^;fT]»vµe™f úè#cQ˜’f®‰o§Üš"AbóÔ ToHYŠãÙ6lpá|ëÔ©Óƒ>H¥7ß|³3Íœ9“1mÁÔ¶yóæ´`Ù²eõ:ÂH«¿B@)özýî¸â]lðjÈ ¹ÉÜ{ï½½OÉùí·ß iÔ¨Ña‡†Ù ÇKŒ»†NvéÒ¥&ï·\þù'9ôÔtC$X³Ù}÷ÝKëÖ­ÃDMš4é§Ÿ~bTŽm°<§L™ríµ×ò—ÕlN¡Ûo¿ý…^0+V¬€?®!z=h¨‘|“ùÃ?fTTg.úÇí-`vÅSÌ •¢/^2ÊŽ1£H¾¯¨.¶Qפ—‘Íõ÷¸ãŽ#‡R]³gÏ&ÁÜÈ•*UÊ$‚Äæ©2¤Þ²Øæ;3†Q¯Q£ö´‹wÐÔKëßpà xY<òH„9rä=÷Ücù6„y¤¿B@asúD†ÒÙå×_ed:yòdæÔÅšÊ>ûìã[)ãe:—SN9…§üe:Bç‚ì ð¥we²NÎT€;]<Ž8çÓ¯¿þš>ý¡‡B’ûî»06†µœ-[¶0Læ/½jŸ>}(Âê‹ØÏ?ÿ|ëÖ­íÀ™='Ÿ|òÀ}]pÖCOŒLX9묳H\~ùåÿøÇ?°p¤‘ s‚³‹tˆ¨<åŠ(X^†‰÷/Hši }÷9çœCï¿ÓN;µlÙÒÌ-}Ø– ¤Þ ²X}³ kѯ_?XaÞ æ†íæÍ›i;È:vìxá…2§ä/râÿ:CÞV<%„€Èa…þÑŽO©ž¾ÛôwñŠ[F¦†'Þ$ú\;vUÄR<[Ș(O7Ç„ÿ™xŠ\”éÞ2K gg7 ÊÒ_³œƒEaºÃ¼‡»®cæF¸¿¾øâ kQ0=zô0†!¨jxÞqÇßÿ=“f9ÆWCWHɨœÕoºHÊ2 âàÌ(X^NV®4ý8òÐScó0áôï8 ]4)Å©7¨,“!µÝ W»vmS¯yxOÌÚż‡*T`8‚ÌZ”( áÒE·B@Ĉ@˜Eaûý¬­ŒÝÃÙ°(5kÖdÜJ§€¿žÞÖVçJà[§ÇÈÙé…éhØúEñðÞÜÅÊ{‹¦˜òÍ_K`hŒÜM&}Æ }D>´”<üðÃ,!àÎb¾ë®»nx®˜™žÔ䨵 sô×Ö.X^AlÉÇ¢<ù䓸»0'øO8á/qJ±Cê *‹ÛÊT´ï¾ûzk$ÇÜÿýNg€Ÿ( á,«´ñ"fQâ­)ˆ½ÀI'ôÔæ›MÃÛž…4~$ƶӧO·sèm§\ô…;øe€lúnª3l«U«feK™xã7Þ|óML «vÍÿçŸîÛ·/~¼:€<¾°IÉÊÄ%˜·:ëøâ«f'Gu”k÷pQÄ)k÷‹3t`Áìò‰²zõê&†vC3“¯¿B@ämüü¿0Xf3|Þˆ·Ý^xWÇ—QÁøgÌÆ*b¸Ý]ªa„ÈÁ¿„ÛÊõÈ÷–i“é°³ÖŠMâ€ð-âÍdjòÈ#Ï\ŠÝ\–`áÂ…tšÌZ.¾øb64Ce6@.j,‚YI\ ³>ß×¢ñÎ9 ÂÅvRzÓ!eA((òÁ`x7°.e8˜!¦ÎX¶N0²+=ÞŠ”#„@NÈý%ŠÚxÛø …±¼k‰…åtöeÙSpúó=?Ë,ưáÕ®sØY #nºHÌ ÿ·hÑâÄO ¯Þ 3€=€-ÜØŽÅÞVа,_¿~ýð²æ)ëɸ¹°X&úhVõM¾Ù±x²?ó1b ƒõ¤pQ‹.XˆðÆñ¯Ë‹m!b‡°åQxYVn^~ùefœ|¥}¯¾úŠReÊl{K©ôª«®º÷Þ{?ýôS@tx¦w¼áõê©Ń@aÌQØ%Œ-a?• rXùÀB°+‰Gø¾X·§¨ÐãÐïzk‡XÌçSF»,ðYƒ‹›ï-[žXLÂ0ãa/ ìl1ºþúë}‰½™Øóy kÈ|«ÁA&æÂF2âæ£*Uª0Çúä“OXbæ=ËðI)jóŠjsÀ—Ÿò8}‰öi¸Ø–Ì7^–íÚµc- ŸÚÙ¯,Í܆XŽ›nº ÓÎ^2šï•W^aºiv„ûV§L! ŠRÎ…Íb®;KÕ­]»–>ˆ!mÃé¶Âi\Å鼘pð„µO.‚ÌnáɸْÀ\Š%w³}(ñ:âËRb+„@¼Æ:J¼:‹[~"À”¦8³=ùÇÛ¯ü”VR !àE@s/&ÊÉ%|ãùí·ß²mõ>hÍ¥(ª[4EI0‘ ! „@…±×+@xe ! „@! ‹’G!Q„€€,JA7Ÿ„B@ä²(yÔE!PÐøì~çw Z% /„€ÙF€X·|íªÅÇ¢@©‹N·B@!  /¾ø¢/þR¯ññ-Ÿ½ÌAC·Å„×%„€y…@Nmƒä ´(AŠ3¿Ïÿ;ê±8+U]B@!„“ 3ÐK£•y/&ÊB@½G²(þ¨)W! ÒE@%]Äüé ×±xñbÿgÊB@” Â,JÛ¶m‰zDˆVQ¡ˆpebî'8gœq†ûK½?ü0!°HpÎù_·_û#£I0(Ÿ"°B"0žvÚi&R¯¯"7Þx# M˜^_o&1<¾ÿþ{o~ÊœóÎ;ð_)É‚ŠX@L0DËŸx_Dqç0y›£„B ")Væ dK8?çEdWœdD›7Õ±×™ŽÕ†ü# o¾É¼á†ˆ#;eÊ”nݺaWêÕ«gòí_B9Mš4‰°ZDçÅöØ|o¢sçÎÔ[Ä´Ä…äœ]/óg½÷rƤµiÓÆä.3­@d^nÊB Ä"6G:—ñãÇO˜0ÁÐý÷ßOÌÝsÏ=·oß¾„h5O¯»îº{î¹çí·ßnß¾}×®]¿ùæ³.‰º"44TÎ-ó‰.]ºÌ™3‡L˜–ðJ®*²w‹µ ¬ª-X°À[ ó¡£>ú”SN5j”}Š„sçÎ5·×\sÍ´iÓ{ì±Ù³gƒ *˜GÃÞ§Oºfb¡J2þýï'Z;Ön̘1&óÚk¯% ˆÉÁZ!˜íðq^6žÇ0æŽ;î Â#9®zMqòƒêÂZ¸¤‚Øy1G±ß´¶½ZµjÖÂyk§ ò{yúR.Y²ܰʷÞzk= Ìä:uêÔªU+L;‘’$.Lœâ)-„@!¢Ð?¤öÁ$«S+¢»wèЮjòäÉÄÝ3pˆa°(5úꫯœNï|àΚ5Ë8v6nÜØ«W/æ=¤[ïß¿?±•6lØðÝwßÙÎÅY‹Mþù縕Ìåk,e”•òºqãÆ^ú‘#Gžy晸ƒ&NœhC&#áï¿ÿnˆøá¹ôÒKëÖ­Kç8tèPÐà(˜C$yÖTàí¬Y³&ua_1½óæÍƒŒâLû°1&X=·˜"¢ÍÃÇ\µk×&Þ­ ŸNäù»ï¾„?üðÃ/¿ü’â®zMñº(î”ʨàüËŒ ¦i_ÚëeŸzkç5zyúR0€) ­Ælª ,&Ñš ¦.&V%„€(,RXúµ¿ýíoŒ ]« ½9æ˜}÷Ý—®dæÌ™Vg†·¤¯$08ýì Aƒ~ò”© ±7Eg|Ú Aƒ#]¾|9éçŸÞ|ÁÏSæ+8i,±3qÎ9çØ±3+óôûΧi¥éÎè4éàèš½;c$xà@µ8¼d¾9{ï½·É'œ- À•5ZÌÕpL‚êÕ«ûr ‡}ôÑGñkÙˆðÑË3œ_´hFÈ·Tx].©|9`ð0êµjÕª_¿>ÀÒÕîåé¥dm¿\¹rð´ÜHàßÛ¼ys¿~ýL&oˆ}„‰%PBüG µEAf$ôvÀކ-Uf}ÿxôÝ_»ï¾;Ü0¬Áä šƒ:È×Ù…ý¸ã޳™Aµ[›ð¥Ä`Tpß±„†ƒËÊ´•‰N6æ…±HZVJ!PÐD²(hÈâ*ÝQ•~¯ÑC=ÄŠ11–©YŽŽ‚–먲fË 3Î%E½²ŒoưQ˜d†5dÖäüO?ýtìßüqÁ <Ø$Ʋ¹¡9ûì³_ýuq±i|zwÞy'þ½³Î:‹ oL}Z¶liŸºø»X%¢óeAÂ\,±Ô„ÓŒ© 1xî¹çÌRŠ·Þ´êrUmn±gKF öiPí–À&‚(o¿ýv,NN¾bPs–ÖX™g}±XËD ! €@)»É*CÊÒ+ƒJ›ã›`{«YAa•µbÅŠfñÀ—Ò›Éà”µ–¼l§ÇäÕI‘N:D—šøpðí°SËŠíM°#jöƒyŸ¦Ì±8³æd+ ª·ˆuy…ñ­ÝKFN%ïv‹È¬Å”åa½•*_VÊB oè3p=3ce_3iÅW7» OwéK’é\þ !Ë«GÎñ»ŒµÛËÛLW‚/<\9iÝZœÕ[ĺ¼‚ùÖî%#ÇKɤ‡qî/¶u°šˆ3xg|+U¦y…@æ%¯Ô0yˆ QlQcü¯ýëˆ#ŽÈC %’ñ"×oIøÉÉñb!nYB`ú×k^ÿpz–˜‹­ùƒ@þZ„ñYF^-¥äO³I! „@"¿°RîÈC@%’B Ä"u÷p‰HŠ ! „@DdQ"%2! „€H€,J €ôX! "" ‹(‘ ! „@ òze>…ìé?¶gú¦_T%„€B š£¤H…€B "©- Gçr¸,^§¸Gä.2! „€(9„y½8s—Ó…_yål G‘å‚£¥¸ÍCt89‘£®òP0‰$„€(9„õœWÏ9ÄáÎíœíHÌ(ŽÏCh®»î:¢CÚp÷y(¡DB@”- ±°ˆK|$âÌ›¨½D•ç2 ð”ÈóÄ7ä{IuìØÑóNçNp*‚´¿ð VϳgÏ&M$«ž={š †Qh°^>ø щ.½‰¢H‚3k ¶1tèPêå–ãl qó'b‚ßžˆH…u!Â4Fd‘ &ƸK—.„å( *…€9A p…脬 4mÚÔoX¯^½ˆþtõÕWqkøðá„F7Ò!ø³Ï>#p!=;BEa–ÕEÿN8©ˆ4D"?á@úôéCíýû÷7ya"6iÒ„ˆŠÔ CÂ=afˆã‹E1AÝ DϪÑ®0!&‡&°²1s´*B@$À9Š9SË7&6ƒ èÄ$'ŒR›6m>øàLÐYk/") 8S„£çï AƒèÊ ¸Ë´Ã¢N"GÁŸ`· ¦8DÕ5Ó# A ¹Á´£Ã}öÙs²eËBêr‹¤,ÑŸW|â‰'‘’™×4Zy”B@¢#8G!¼9܉Vë­céÒ¥d˜¿tÓôõ„I§7”¸¶0Ä©¥7ßk¯½Hà}r1 §aQz¢Éîp`¾b8\sBš*0.¶Ü"Þ0n÷ÜsÏßÿþwâs˜L„‘EñÂ¥! „@ŒÎQ0ìžb‰‚­ÃÕ«WwViút&&sÙ²eô×΃Nâ Ò˜ JsÎ9W]uUÄâNë‚#Ž…œW_}›D({öDd"2! „€( s¬ÈÙgŸ ë[o½uúô鸹X¹ÿþûYähÖ¬ÓŽ‰'²Ö‚k‹)ÅQGÅL¢(r8Ë~øá„˜e›Ùرc1WTÄF'+½ÿþûã£ûòË/YàAËõ”Z¿~=ÛøÄAùB@!PtJÜÅ…ÉÁE]d£]áPbÂ_?\K?ÿü3f&ÆÙ‰K’uëÖQ#‹"®|ß[fÓ—‘ÉÊï¿ÿŽerQê\/ ºB@d€À‹/¾è4–CØÅÑG›ïHl› ·él$¼&!¤§µÀÈeÏÎ…È GB@’Œ@à:JIEº ! „@øÏQ˜ÑdÀKE„€B $#೎ât•dh¤»B@„ `—Û-ÏÅKd©•B@!„€ÖQ‚Q¾B@¤‡€,Jzx‰Z! ‚ÈEá DŽH (eþÌ™39¯>%Y8A,LBªàó¾óçÀÊšXñý©ï6Š"*XÄ6*ŠjE¬ºˆŠÉcaRTV(Z”Ûo¿Ó|Ÿ}öÙˆjcÑR¾ùæ›ï½÷ž½M7qÇwpZWº¥ wÊ1“(õK»ví8q€“`ºwïn‹8°™ELpê3——I :Å+béõ0-Ò¶m[~&æè“3lØ0rám2å à³2ŸR+†ÞŸ~ú)ÝcÚ·oïúÞ[œ3ZbŒ±8xð`sF½·¢— ™1 áo15yî¹ç8矓9ÙœÓÌS—–>K‰tŒQ<½®6ýä“O8ÄÁ|rË9x®§ºIB ‹B@B+rœÎ+B`zè¡‘N:TÑÖ­[·5jpʤ7Æ¢!&À‰3#™!q!ù8¿E‹ÄÚêׯ±¹íÛ·/{ÒÚèl €Œã,q‹qd2‚uèС^½z^àc˜¤¬—¥KNoŒH§ mI|0d3çÖ˜ã¼DT–㟽±, óïÿ#MôLâ@ãÀ¤ b-PÖ«ˆ-åÏ<ò¶‘olMËÇ$JøëáBƒ×U‰ Á‘Ø4:g°òn2ï»J~P{ùs¢'àñ2´jÕŠ ‡@&¾-e8ÛŸ’ HáX·B (dâõbjB÷ÄEÅNÿq9¢ØHC¼Å•+W’öÆX$2W(Æð¸øµ9šÞœy gzm˜pþ1Ar]zé¥ôàÌÌ©û„ùÂÿqòäÉ&ø¼WË$¼^oÈHêõƈ$Ó^‡vq‘™Ã1G!€Éw ^©USáË’Ð/Èùå—ÃÜ{,›©Ñ*È-i_E %]â™|oÅÖ´|L¢„¿.4x1›7LÇÔåÊ•³Ózï»Jñ öò%Æ¥ÆÏ3[y[UGY8µOíÛåZä’\·B |†·† çEºØ™ í ¸8ÇG9Ý7c~*¢'þ•‹ØÞºb,š|~Q®PŒáq!ùµ°vâúô7‚‰ÛH˹ˆÁ þtåüÅÆï‹ßi_Œ$áõzådtÉHÇŽ3F¤aeþ"*YXƘ6mCBÖQt–ô×AA0­²t@ÔåŠeÉ9ÿ ?áyÖYgQ#µØ¯S WÚ«ˆ“À%žyä-[Ór+ᯇÅÁ&°_Ì&qy1Ö1Qà ÷]5ù^ðÉ÷cK˜ôàb=í´Ó  ÌËÒRöí‚Þû7µë¯GÀ÷ŒHS$Тð˜bN¾ôÑÜ}„1×#ù$?`~l¤é-¥o"¼^¯œüÔ±ø0c¯¿þ:'èÅÅ™.9òtÈ!Hfjå>¼R«,® 8393»¹° Ä²\¼x1™ÞJ]2¸n½Š¸¼·Þ"¾ò¸ –ð×Ã…†¹mÙ²%þÃ×^{w²yóæ¼Ÿ&?ä]õ‚ïK:ó×W'^'6Í ÃÌ€]Ѧc4fóCÞUKc¾ÄuëÖ…ÀDSešÎe|Y)[ʰuýºm]JŒHaQ\|Y™øí·ßX{·n.&ÝŸþ9ƒ/– ñ21‚¦e?+‹-Ë€šhŒt¬x¥‚º?²M›6xud±~Dl83ƒÁ¹Ä¾¯K.¹dÉ’%dbᮆI“&ñKã–>—Ÿq éÖËœ g‹%X¬‘#Gš‘VS³gÏFþ&Mš`\YÃÇ´ ùN"VjcYâ]lÔ¨ö‰„€ÇeË–Å®“f½ÿ›Y=rÊAÚ)^ì¾ò8#¡éõðEž^ž†Ÿ ;)œA望Ʀ}‰K=ˆ_¿^6^9Þ7Фl)ËV !/é­Ìã_b¸mÍ ¢`Û’OšÑ;¦òÏ IDAT4qˆTÑÙÕrK¿ƒƒèý÷ß’¿q!±C¬1ÞyçQâBâ²'äîi ²ÁŸ »uÜqÇÑÿ²’ÁšNV¾ò8 ôz8Ñp¦ÙFÁ:ËòÎÌ wÕIcÓ¾Ä^0\»ì9÷ÜsyßÌh eKY¶Jxð9{ØTàŠä±Vzp&ø\^z¦ØtŽf å}jsb‰ I‡kVPàÆ‘^Øð‘!­zÙ¬Åԇ߭Û™à)^)êu-Ÿ@ã b¥ÞX–ŒXéMœ.§§]âññÊDéÊ/!¯‡KëðÛ wÕ·”—÷£ ¶}ñÅlaÀÇ˖͸¥,%„€ pÓ³EqÕ­[! ²Š@×®]Y,de/ÛÖñ;ýY­ZÌK&áÅg2Q2a’ÖB `3! lVÚÌB}!j!™ƒ€,JbšRŠ”Dp½²ìÏU•—Îù‡@z+óù'¿$B@|A@%_ZBr!  Y”BoAÉ/„€ÈdQò¥%$‡B Ðˆ´2?hèðB×Sò ! „@ÆôèÔ6JÙHFý{^…h²„@ŸCÔ!Ø Ÿp¼—rK,äó½6_@û83£ZÊDaçd­tì¨ Â!>áø¸ž . æV°øÂ1Së(™È1œL:oÞ¼ ¡ês„À°aÃ8‚6G•§Qms”4¸ÆDʡŸříZܶm[Žì‰ñ66ýë_9‰SZ Ošä ü¦M›R)sq"$§YpJ?G(ò‰:| '˜ÛÂú¤laiQ<Òš€CK9u‘ cÇŽÅSoÊZ8Оó4h’²˜ bÈÆáÇ5kÖlݺõÙgŸÍ¹sñŠACpŒ,Ç¿ÆË¶x¸õ*Ñk=z4§˜çÿ±1·zt€"Rø„S„9N˜Èꘖˆ¥ŠHÆ1±ÄGj×®çûšH$Ed¨â……/À«¯¾JÔ‚ ™@ …%ñK{Í5×€ãènݺ3‰ã·c—áÁ´ã¿Ø™ÃÒ«äõÅ43CEÎç}3êyöÙg ѸjÕ*âqB¾9̘brXq‚¯¿þz rÒGqâ=ÓŽž={:OàòöP×A„ #ŠQ5¢)Dšˆ¸ÝxãŒÖ {S¥JÒ\LÝÆG A&mLïÐÝ·] $ª1Q tOäZ‚ÊÜu×]ß|ó ò›ØEl¦ìaÎ{ÅIYœZÍ©Y{ï½·¯v^ô\9L‚­ó2å%0Äæ¥" (/'éµ€#‹5ÏË.»ÌDO1'ÔàCülB$ð¶3_Ïž¾±p4~5Lˆ‰ƒÇ¨œ˜I:òÕ1ü­ðE›7G‘‡|_¿XäÏ6o¯âûþûªoeKù›²”9Iäû×áðáÃéËû€8`õæ›o&à.1µŒ[™-¼Á¸¤"ñ2B¤`]h~'®{ºàbœžzê)B›xC®¦Ë*oé£ãFã'žx‚^€¡(êp ¼‡z('ÝŽ5ʸw½íb(}ôQÜ ô­Ì5o½õV:š’3&Üg›){ØÒï¿õÖ[ð§‹ä¯W;/zÞ\@D!£8ÁFé;¦L™Bzîܹ ’ˆDDÏkFô ÌÂ… yꂚ9ÁО{î9,7¨š<¿ƒœ¼ü Ò1ü­ð¢Ê¨O4“ð¾~yމÏÛ«ø¾ÿ¾ê[Á!=K™“D¾[‚à2‰&~W­Zµ @tO¤ µR¯^=ó#ddÄEÐ!z†EaEˆ¥Èp†a =ä´À%†¢éòV‚/Úó×ûú9ŸægÚÛ«½ÿ)ÕG/·êç»E1èàµÇ90mÚ4¼¸•üq^)N-võë×:tè+¯¼Âo•5UÜýX‹Ûo¿Ã`i\ ~· ,À=mò‰ŽgÉ„©Ç,1R`XÁ´Ôö€.t¤l¸ùjÍhÔ·]|‰mf”f²ÄÅ™`îeœ]¦Ò í\èÑû»r˜[À CB‚^ qãÆLDëðö2{Þ°aÆÆô¬”x-ë+Ðüúë¯Gç §8ÑH·.~§Õ«Wgc ?)uô2BÛKYX9Þ^Å÷ý/tõóÝëÅKƒ/kĈüœØ7‰«„€üöú1`ÚókF|L´O:é$nÙûËÞ0¼1ø.H“ƒ…¿®‹Ÿ÷gŸ}f¾fbÉÛÏú¿“†Y½XÅqfhÚWÙÌpóEÀ·]|)™QšÉIŸ«´¯v^ô¼9Ì–wš7oNš(&lˆ2û_™”0<;v,/6ædΜ9-Z´p)Èü£Â""Ã#çÑ×ä¹QÁ~°_ƒõ'6âc_£èèR™[_´½dšãìU|ßÿBW?ßç(Œ| À@å\~]8¦q\pÁŒòð>3)áËüºwïÞ¸_0*왩T©o>+6‡àƒf ˆ©èß¿¿ë¼ôÒKY6d%ŸåÓÕ«Wã1ç7à¤ÁtÑü샤 `·X>µž4˜ÓM;éó9í«,†6Ü|Õômì¾Ä6“öJÙL–8‡ _í¼o/ž8ÐØb, N0¶‹ÂËÖ§O\µ¯¿þ:¯´¡q©Iñ…ý™gža§tÞ®£˜ŸNB\…ü¬L°ˆ:ºTöE;å»äb’··®^Åûþºú‘âÌsR$‡JåÏáëÖ­£axipUU®\Ù¼=¤±%.¾Þr—©p¾mìBf`…ɱëΧù“Ž¥ |•Í 7_d|ÛÅ—Ò•™²™\ôÞÛXðñ²uæøjçEÏ›ãdâMó³âƸz™æÙ8ÊìŠNYZùÅ—Sž”::‰MÚm/Y¼9Å ‹ÞûþçD}++,äXÀ8óÆœ ¤5'®´EO¥Mû&pørù>J^¦¯²N ­Ê)q³”΄o»8 ‚Ò™UÄ-Kù¾ÚyÑóæ„ËÃÌ;œ d<^0ž¦ÔÑ+ª/Ú^²däxßÿÂU?ª×‹Q†±TÉhÂBÔBMÞjÂ'×SÁåÄÜ _X¢gFµ(Œ2tšztXc§äœm5AªÂ'ï#ÁåÅ„Á‹o¾ofìõò•[™B@!P<D ·…0éY¾"^¼xqñè`k‰¥RËÄ&,ÿÂJºü……¶¤B¢/y¤gQ8åûï¿ÏÄ|o>.±ÌmN,•Z&6a+*bÂÊYD>‹E~jüè£"V$²…@1¿Æ% Û¥lzžfb?™yäLûûfr<$:÷Gzs| s¦W»ü”3Î0C(¿d"PX¯qÉl£BÑ:m‹ÂL‚/³Ú´ic¾õã‹-NâDEÎnãDL›f=çØ|ðÁÜͱ©½zõâ0  G›}Ä çtµlÙ2<‡§ºI¸¸þùöX=2ù8‘S‰óW ㌖öíÛs$8'ãú~cìR!ˆ3Ãy¾—¤º~ýúAãÔíÈárJî¢ç)ó9NDnÕªÆXõ½oç”öŽ^æ$`s¹·"¾œzï½÷ S¶¯_tßtÓMæàBšií˜võ* œ¯q‚Ô’*9@ m‹ÂñÚ|¦Ž ¡ûfM…oz9+‚~“cµ:tè`Ó|±ÅÑÍØÂ`ðÑ;'xÛy GØy©ëĉí™&ß›ƒmàH¾oÇuíÚ•ó»8ÊžZÈäE¬ßÏÙâ(Ä—ö}AÌ;ÎbsVdÒ.|9“É×ò0úeÂZPЩ©ýÍÊ饧b`æŠ Ã¸’ã+°‘*­¿„ÄãèLߊ@˜z OTàKf>á¤EŒk‘²9Û1­Úóœ‰ÏÆq ¼VÔè™¶HÉIØ×¸ä¨,M³„@Ú…ƒ”™Ž4lØã1þ|ΰ#(«s¡3mÄÅMÄx 'Ÿ|² A>ŽÎî¶úð1ŸŒbBrxD]ìxÅW°‰–ó»€È&“X¡œÃ—e欽SO=•3Z ãÔ ß¸Ü.|9›“ÉÈ31ç}yµsJî¥gRÂéå­Ái€œ×2uêT«…K`«xħ}`G™g˜Ó }+"jäxxrÎ'Ï»˜»@p=-è[â§¾ð œÕ$*‰Ñ%zfAëžðÎ×8ƒâ*"œ¤mQÌ W°ˆrl‰ACÌ9h“˜ á”É›ÃSNÆÆnÙñIäp8Ç®{ÃY‡‡Šã :YÏ¥‚/græc7Ì'Ç;ùÛ´KN=þ%øÃc†¯ ¯‚9³ÒW`Ë0b‚éÎ.Œ´¡÷­ˆC—9QŠƒ9C“#51ê.æ.\O ú–U#?G›¶‰”™­{»^ã 8¨ˆ°¤mQlIg‚_©½u¦m&G›ÃãlŽMx}¸Þˆ™16gIÀ„!9LJð#1w±Ü˜ppPXñYq¾¤ÍIør†ž£Ž‰È‚ó„U³\A¦S;—œ.zN¨Ä¢°ÚÄ~_.sT¥WàÁ‚qº%Ç6°Jd|+â Kœ£ÎɵLÚ\ÇqNF>‡*}iY»!zf2@ˆ®…ë5Ž^P”BÀ‹@ …CX ~eX;Óä).§ã ;LæìnŽ,4ô؆،¦­dÞóˆþšEúG2î&,#‘¸˜©à|ãlWìz¸åïMørf· ë%ùË_(bfNí\rzélœk¬G¿ÁÇ+0™¬ÕsÁ‚Òæ©ù˦8ì%N-B#“ã[ùìVàŒt޶õº¼œÜ’—fÎÊbûøkÅŠž™<@B4r½Æ!”z$¢ ƒEa';Ý ×ÔçLs‹›¸âdÒÅÛµwÆY1ÂÑåqNµýÙ“éÍ1”ÐàV"¼ÄYgÅ  ­l£ÇçTy„äbsb`·ðŒ‘¾í¶ÛXK @·ïRŠá™‘¬{SÚs™ƒÛœÚ¹äôÒ#~|l*S\gø¾¨Î+0™XD.# ÛôöìÿË7Oí_Î||àžþyö;øV%–4 d=É,! 6£³%ÄÄ5°*GÏ´EŸp½Æ‰×W fo}/Ö6™ ˜G7Þóé‹:³C`Ót£„·dtÏ%¨ìàÁƒÙ3æ|êÍq>%Í,o’+“'Ôk3mV*û($áål¦>Î"V;_9½ô”ÅS‡½q2!íØõÔ{›² (â[‘—U"s¢à“HÅ3SÊÂåûgÆ3¥,, Ð%F€Å cÌÓ4xmGÔ“"Ã-Û½ìÌÎ4¥XÀYÃÇ+eç.¦ oŽ«jß@¿xÌdöDq+•óiPÚËÙ[Üjç+§—žºLØWW¥.]O3»õ­(3V*UBð}KˆîR3ÄcQ|%ã«F6õú>²™Ý»w·i“ðæ¸òä¶Pä̸$F~" ×8?Û¥p¥Šñp5”äB@!PDbŽáý4ã"Ê­âB@!Wdëìá¼RRÂ! „@^!Ãîá¼ÒGÂ! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B@%WÈ«^! „@ÒEIZ‹J! „@®EÉòªW!4dQ’Ö¢ÒG!+dQr…¼êB@$ Y”¤µ¨ôB@ä Y”\!¯z…€IC@%i-*}„€¹B LôŠ X”B@!PÒˆdQztj»ë®»öïyUICGú ! „@t"YØýôÓOÑ™ŠR! J ZG).•…€YA@%+°Š©B " ‹R]* ! ²‚€,JV`S! „@ D@¥6ºTB@dY”¬À*¦B@ˆ€,J lt©,„€È ²(YUL…€%Y”ØèRY!¢~3Ÿ•ÊÅôÿG àNNãx§'¿Sø”é„)›u\ФlGdY”¬Â›6ó./I»LŽ <öÔóÞš H~¯ð!9 S61êø*ÒŽz”mdQ²pzüËîXØ~ÈB—?­ÖJ˜² S'­¦q\Ȣąd<| ýW]èò§ÕŠ S6aê¤Õ”"Ž Y”¸Œ‡OÙ2¥âa”#.….Z°%LÙ„©“VSŠ8.dQâB2>…>N,tùÓjÅ„)›0uÒjJÇ…€,J\HÆÃ§ÐÕ….Z­˜0e¦NZM)â¸E‰ Éxø”-“­•ù§Ÿ~zëÖ­;vt ”ï"‹x›=ù 2¤bÅŠ—\’ã}qÅ£¬SqW:ÚŽ—jÉ’%U«V­R¥ŠK<Ý–@dQò«Ñ7mþ33z÷îõá¸q:u¾²Sg_¯½6‚ûK/s= Êw‘E¼Í@þ¿œvŠZ½zõúõëw¾ªËA5 ©qøðáÕªU¿ ÝE!4›7o.S&»¯wfÊ–)[väÈQ!’G”ó¶{≡#^{•æûóÏ?;¬ÉàG‹.¼(‰@vr‰„,«JmÚ’‰EY»ö—‰&”+Wî­·F]zù¥Jù.ïoÝa‡­~üƒò3QÔ >[·î°ÛnÕzxðÚuk.X0ø‘ÿtºòŠÇòÀ ‚JR„ÿB꺦KçeË–½öÆ›AbÉ ˆ?’#zæ²í¾[²äÉ'†þåô3þѽÇêÕ«—þøC|z¨«ì¼G@%¿š(³ßä;ï¼[»öžGuÔ+/¿4uÚ´Ckb´Z0Þ »ïZ¾lY«Ö'þ±icvÃ?(¿èXd&éKï±g=vØá€ ÿܺõþ{>1tHÿ»!Ï·ß|}ÿ¿-\0¿V­Úÿ¸¾g£ƒ!éšM]^‚—^xnþüyŒšÛ_Ôîú^½n|ˆ—¦èšÂ!3e½¶ðûï¾{øÁûfùeÅJ[pbÇNWí´ÓNð¿oÐ=³¿übÕÊ•‡6irùêí»™ùÓvßýð cKÀ¡zšü3€xÅ~üÑG&MøøÖ;îÜgŸz¨ðê°—/þªç¿nÌR»P…®\!-¯}®ô)ôz7mÞšÁ¿wÞ~«u›S[Ÿt*ê~k”å0 ¿ø¡ÃÿüsëšÕ«·õÂÛùåÛ‚Q¾PG)è¢Ù>ßø?ÁxÔøÐfpþzñbÒëÖÿÚ³ûu¿üüsï›úî°C©;n»å÷?¶O£‹/A³#Ž®Zu× *^ve—š{Ôñ¥qÉò6KÊRï† {þóÚ¹sætívÝQG3ì¥ÿç!#O©R¥Û_vå¿nî;ù³OŸöY“™?mwð!MkïYç“I¯¹ªÓܹó,†^±4l¼dÉ·ï¾=ÚмñúkÔ({íâÛXÊ,dQŠ稵0ÊK÷ßÂE‹µðøÖmöÚg¿zûíÿñø×®_“eË—3<ªå±§yÎÕ×õ¨Q“9À¶auP~ºõúª”.èáƒïƬQkOæR~Ý@ΤIW¯ZuÌñ­÷;à Ãå+T,[¶lóÇV¬\Å—ÆV1‘%e·©ðÉDô:æøZ|j§k®«´Ë.o¿5ò÷M›ytÕßþ‰ {ï³ßžuöš9c9yÕv[K•¾÷¡!‡5=âëÅ‹þù·®ï½;Ú€éûÐfÍw©\ùƒ±ï¡×ì9³Ñ÷ècZe¯]|K™Åƒ€¼^ŃsÔZøMF%ýݘwÞÚyç{ø26þöÛÆ¿}4~\ë“O›>m*9u÷ÝßðÜ>°ßÖqåÿ_‘þŸüÛì‰ÃƒôË/?³¨¾G­=aµléR½ôü3Ã^x–DÙ²;­^³fϺõ¶Ùîõ "Ø6‰ùÏ šmµí*º²ÔÏ$’¿{×ÛÏp«[o¿Ù³f,_±b·jÕŸúñ)ŸN\±lÙ–?·T®\‚|k»+T¼¹ÿÀ·G¾öôãÜ?ðÎÆMߥr¯Ø;”*Ͱ`ô›¯Ïœ1ýÓ‰5;â¨ÊWÈ^»­UUºHÈ¢ ¾Ø oÞ²½Ì÷Ï-[Æ0†_ò®Õv§PÕݪ/5âƒwG×úÔÊUw#gÅòåðÄßýÇ¿3l'”¹Î0Âtå‡×6ë°u[p컣ÉlØø0rŒR§Ÿu~û+ºÚZÉßnP¶ $غ*žA4–aÆ Ã?­â.e)kš»b¸a?J—.]q—*;bØ (~ÆÙmoëýåK„ ßÚÎè~Êç.^´pܘÑ_Ìš¹yÓ&¯Øµ<þd,Êûï¾=cêä®×öD—ìµKZ-"âxE‰Ï¢rÛœæeêäO˜”t½î_åÊ—7uÿøÃw³¦MYúãû7hÄ ~âø±µëÔýbÆçkùe·êÕá”_TÑ·—OW~Sé¦MLû|2¬ysf½7jDÕ]«yþŰ:ø°Ã+íRyì»oíUwß:øÛ¯ÕÙ{Ÿ=jס )!ÌÌ&~øþì/fÖÛÿ€&ET¹(ÊšªËW¨ÐèÐf,ù|6é£cN8ùû%ß®\±¬Ù‘-K•.³aïДÝiçO'MXúÃ÷´ò†_Ë«¶[0÷K>øÐ¦›7oš?w6; ÷¨U‡„WlæÐ´_=j}Uf6˜4mNãƒ÷TĿÞ}‡Ió–­,}éwœ<é#~· iŠ·ë2kúçÍ[¿rÙR¦mÎ8·Té}ó-‡ˆ‰Y_ÎnÑ´‘‡ ä§®·_¶ní/>ƒØ˜½¦Í[\Ûë¶Š•*ó¨LÙê7h4÷‹¼;ê7_ýÅŒF‡4«^cŠ`AO8åÌ ‚ÊUv]8oö¨/ïV½fýû2‰¨¦!‹]Yôåß’¯¿:åÌó0{S?›8ò•§|òñ!M›_Ù­ûÎåÊï^³Ö¬éSÆ¿?zù²¥|è¢ùsW­\qD‹ãó§í¾œ9mè½óækcÞ~c·ê»ŸÓ®Ã!ÍŽô»Ù‘ÇãúµkçÍžÉì¹É-B·ˆíâ|!•ÎᦡԚ5k|k}çw.ºè"ûé™/2ãE€ˆUµ» ^ž üñ¢ì´óÎ.¶Aù.²Û_æ v” ùÖ¯cŒ™ ’Ç—`í/?íR¹ªý:Ç—&ˆ¡+¿”EÚòå+–ݾoØÖ¾~ÝZfiÜ®ûåçò+–)S–tþ´Ý¦?þX½j9í‚ ·YºêA8IDAT2“ðÛIàLÇÛ.NÎJgpÓ ¯W60ÏœgºŽ”NmÛU6tø{<*³Ó6[âe”Ä-b¾·¢ð‚!òSШ@bçòùÂÜ— B¥*[þ4k.Û¤ð¥Ùö Ó+D_–¾ÊZ‘–R.žå*T29å+m³+&ÏmgÔñÛ2co— Š”_ È¢ÈiT±½Lƒþ±—ß ¢N—UŸ´òÓ­4D~êM—[Z¢8]ñ|•M—IÑÅâ®$y®NšÊÏ*²(Y…7mæ›·© ø*tùÓ‚>aÊ&L´šRÄq! ‹’ñðIwœO­ñq)tùÓB"aÊ&L´šRÄq! ‹’ñðÙ’æîáxjK¡ËŸ S6aê¤Õ”"Ž Y”¸Œ‡O¡{ ]þ´Z1aÊ&L´šRÄq! ‹’ñðyôÈxåˆK¡ËŸl S6aê¤Õ”"Ž }’â#„€H>áߣèìáä¿ÒP!P<È¢ΪE!|dQ’߯ÒP!P<È¢ΪE!|dQ’߯ÒP!P<È¢ΪE!|¾GyñÅ“€4B@˜üe×]ÿ¿€1U'6B@!Pð…Î œ£(x$¤€B@d­£dWqB@”<dQJ^›Kc! „@vEÉ®â*„€(yü?-z-µ»y–ÌIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-config/http-config-example.png0000644000175000017500000001446612032647175027172 0ustar ebourgebourg‰PNG  IHDRèÙ¥íë'bKGDÿÿÿ ½§“ pHYsÃÃÇo¨dtIMEÓ$[%ÃIDATxœí{pו‡O$HèýB „À‘G@bŒÀÆOlì¸\»dW9l%Ų[&Eœ‚dml¯½özÍF¬‡rÇ&Ä[~¦@»Œ= áez?FH^£™éÞ?Zjš~MwO¦ç+Šºsûö¹—â7gNß¹gAQD†ú6(.É“¶¿;³«fëVg¬—€È">Feª–ÆéÔ‹VÜn}½‹ lš[¤U‹ QEcá6Ô·ýêùgévMMMMM ê‰Â%X(²E«öÀôË];÷8pàWÏ?‹ÚE4‡ã±uk-û¥ü§·â’¼];÷ÔÔÔ°;wíÜ#3ØEùÜ!\ZµN§“~`r»Ýµµ.¥ÚýÎÝ«V=t?œ¿ðÈxD«ªºÃ¯»\²æªª"8#ÙvèKü1ˆiœNgUQUE¨~Þ§ÅZ¹hIoçHØÁ.EË‹i¨†¶àrQœ7b>¤ÎTè¶¡¾mfvórfv’º—~ç°õÇîaÿ­Âs;êÛ¸ìãºÝn—‹b«–³¿)!èGëè8¦rÑ’GëŠKžP´&öG<Ý–îQjM°‹;„KQAµµ.·{|3þ©§ªä¸bε¡¾Méó?ð¥{¤Ã æ.öÁÈÅjt¸—Ö.û¥LC õm'ŽÖ ^:q´à~EÚå KŽƒ¼Äñ¸ò׀藫RÕŽµæµæòf|òfý‡îYüÉ› ÓS¦@ÛÐׂc~ô“Ç4™ A@á—ä5Ô·}÷Ébz;¬ëÜ%þ˜];÷€È¹<¾¨@øáÌíVó}oä÷"ˆL¢’º#Ÿ–†®k—šn¶ß"I÷#Å>·,¡sîä/ Ñ9±î±?}y³ý–ÄßÀðù³ßœ?ûMVnÚêßž´…!ú'Æ÷è™wéFeÙrþÕóWNÓ-m›¼5!F@ãWé9‡–†®W^xc(Рボ«Ó쎵n®\¼° 8SÍjó¢¥ÇU‘öC+rþìJþ¥’ysU‹¢™p#Lû™fOÎÉË€ÀȸÏÎÊß;;{ò›ÓgN@YyÙÚÍ÷q&e¿¤¶iøÕ‰ 5fÒ(ý– "c\:í\.J« ÚÓgN••—À•ËW€­]Z:ÚŠUö\“9/ÂAû¡Q" s\š÷Þ9B;Úµ›ï++/£µvn=Ý`¿ädÞ‹õše+•­`‰)8–Ù+ý„Ac«:ígš=¹þÚ º]”ÇÆ-ãb9q‚Œ¼$L[¢G‘ª$¦?‘fÂ0í&žÆ˜W9ÚåOÊî ‹ÅìHh—é*Š5B´ô¸ªÓ~`sêÑ'ÑfqpVÅqJíàg}¬Ð8T`´«Ô£H„ Q‚óÍ— ¿G0´P4£ØìˆRbüÍN¨púÌ©å÷®Ðv ögóϼÓÄÒTL¼Ãšhí*Ȥ¥¡‹nˆí*°Çˆ!ø¤"Ñ'5§‡=’ßÖ‚Ò)؈ béq[ºN}ê¢ÛìP†q·§>u­x¸ ¿?CØh/\ù^„Vm^^.ýRpWá½wŽd¤åúÔõO¯Õt™±mäh\>lÛ}KøW2Òò=.Â!–Â…‰ø•‘¯ ¨Z„OŒ…«“yá£í0Õ x‡z:}¡1rÞ]¹_|v9=Ë"Éi)™9i±^- /ÜöÆ^_ÿ(ݾr®‚~*0hêñ@VnúµËÍ%e±\"b¼!-õ·òйnufVbf£hþ¬¬Üt8ü‡b±4$ºèÈã*=çÐTß=:¤½ì€××ÚÜÑÑÑm#ˆm;oÿòÈÞÝû6}Ï<ûhƒ^„«"í§Ï3˜””ƒ—þv­ÇÓ7:â§(jÏŽÚ´ô™>¿Ö¯ÝÐÖàIvسóÒ£º~d’Ñ…pU¤ý4Õw3íAßРoØï#)’¢(aóz}?{þé½»÷Ùl„ÝžÔXß.(\¾WqnFÎxÙ>ò-kž°dt!\Ei?C¾Q¦m·'ƒÁP(D„ H’ /ï~{Íú•×ÕÑÏ·À?¥Ã˜í ôøp&g+7àݽlÝ ‚ ññ@A(D „˜Á¿¿"¬AöùZ~*»!˜rÃÏÿaúŲ}ó‹ø ›z$± νfBGWiÚϹÏÇåø£S§†B$A6›-aJB(êî&IÊf#‚¡Ð¯_ú€?ôÁBæ#˜6 ˆßCp<§!=Fp¢°·˜ ]WEÚOVAjgóxÐÕÑ;}ºcxh$.>Ž Ÿ¿gÂ,éíêñô%MK›D~~}ÄQ°ŸCä^Mâß«(2V}¯±Ð…pAyÚOp,C*—”:Äõ©)Ž‚° x}yERG4ñL:чN–1 è(Æsr‚ØS½^ߘ ~ªzÅò¢Ùù©©ÉS§¤¥Í¨¨(߸a·`åºÊÑQiEß‚:ö.édÌI 7MײÑ×!EÙ,W/6w6÷­\Wyå\;IRÀígoÿ@cCk(*š—yïJŸx‚;ÿwãKÁ¸“½Hö¶±‰Ø1(^æ’`x-q£Ø2Ìà‚~B”Vözúß?xÒçJN¶ôEQÝ]=m-7ƒÁ`áÜ 1Õ‚x";ß÷‹%êÈü”›HÂ¦Ì [Ñ`3¡£PA÷TßU\šÝx½¥½õfW§§Ü™ëéî½pþÊÅ ×FFFKÊóV<´8ÖkD¢‚¾BuóvuÜj¨oïhõôvûüccŽ”¤œ‚Ye gçâñsÓbàP!3' ÞZ c‡ ˆe1p±ê”¥0pKa†7Üg/ xçÎ/€î›Ý‚mÈ/ÌŠå*V÷¸Î¥‹ 9Ù.ÑFÕê‹z܃ûß ‘äê5Õp£¾©±¡¥úåm-]ìv’#cßoûÞÿ¨çü1®î°¨ÇݲõQp8ì0§¤RR§qÚ~w=v DÂ`QËfä÷Ç«.·úÇl}‡Ž¿ëÜ<‡˜õ×LÏ×u-Ì€#Û—À#¯œez³'¤×ð{džj‹àbä—s‹±¨pl_ê!Ÿ;÷çίN¶.”1¾0''ìþ¹Á“.JO‚+E~¦ÓV1Ḵ¢piÊ0–ú1À¸z×$üâ›àsLšaAæäTîøc´W%¡ï°=l 2¬‰­} ÿ4œÄzÂRÓÖ¯›á¬s¯ŒYŽjÃ"¨Z‰Dù~TÎG¼àqGÁ9™?bwIXqñ ¾OÂÚÑ Sy\9¢—ó¡Ï¦æØ®ó;úÏÈÊA…#”cSPôŠŒðƒr:')f–}i2ˆL%\90îó…ŸžXRÿÕÉÖ…¾3y—[Ó_}ëÐñ×›ç ‹« ¾®k¹ Î-èÑvÑx ü V:‘œÀWfp< zÝ IŠ IjYEn¬¼N·oïßvñÈö¥J D/ÉGДDÐ)gjþÁ»¢÷ägQá²…¸ø65Ñ&™ö‚æGÛOíå†:h1Ñ0© a{Ø÷J˜’?»Äxþ‰ž¨î²YQ¸´j³ ܰrUües øŸ¹—ÓOÃ> ›x#ÿ*0üNƒý’s£àxþ-|ScØ=aW¨!¦ÚUs¯&» CدT¢„åΔ~è£j¥™L±²±œpi!ò¿Ååv[,'\š°ŠDÉê‹ 7, ×:>ÿ¸©·g()%4ï[iÎï”9ɱ^r®CƒÃÍý]-#þ¼çiìOÑR¹¸<ÖëBncÅí0iZ[:.o¯ûS‹„d:¿ø´EâdòA{µ/ýŸ·Óæó 'ÆOŒ»É¡E@ƒ½±^r'èqïà©Y?2š—r[µ@Ù’†<´jbÐãÞÁ«/Ôf,Lè½”?.Y ¨éé‰sœÂ? Ä î8EíÝóڬ̴V¯èYÜ{ô7ãU}îy8¿°,¹¸$Ÿ)}Ž6ì±Zþ%ö"ÿ‡„Ñ`¨0®ÚW³s3V=x_§/11©|E–¯-^¾¦„­ZìƒÒ‘ÌN£ÕY*ƒfã(… ðÂ/ÿ37?û¾Ëúz}S¦Lmk혿`¶-\¾¶8>žû¡$¡0v: çªLIñog^²k 4½¯¥1U¨ ‘½#qþf÷Ï_,š¿lù·{ºû)ަÆÖìÜ´¼‚œg^›§ÎuñsWòoç¤ÇˆMAcÕ‚É„«âdÙžŸ¿”à-[vo…§«755µ±¾yöüܹ%Å áŸÆ8gd9‘.g°„ž8É<’L±–~ùì¿Ç{KÜTñÙ¡‡ÃÑÞÖ‘_œ™—ŸË”B±?˜~ILÔ¸”¾WÑæÃºÂÝ»ûU[ïü6U¸êšm6Û±C¹…sç;ÉaßÅò{h"q1OÑ3¦ äó?ÿõNFââ…—sîtk\|œÏ;ôÈÖÒ윌¤¤¤È³?ÐÙY„¼,möȰ 9M‰E=nÜP‘ó¾Â _vÄ'Ä ô­¯™;mZ¢Ýn—oA"%DrW¤i8JÓcä˜5õ¸MÃnh¶ÙlÓ‹ú+ÌÉÎÍt8±^”(±JÑ3õ¸Eöt ÄÏlÏ/ʼë[zV-Xþ9L+zÜ{úI„f÷ýý“OÄz-ˆJ¬èq3Ê=qð£m¨ZcE‹’5V.›ïPO§/4Fλ+÷‹Ï.§gÙC$9#-+þéK ·½±××?J·¯œk€ Ÿ Œšz<•›~írsIYA,—ˆˆ`Å—¦¥þV^1×­ÎÌJÌ,pÍŸ••›‡ÿðQ,–†„Ç$WéNgS}÷è`ö²^_ksGGG· ¶í|Œ³w÷¾Mß[Õ"‘cá±uk-ûeXíöy“’```ðÒß®õxúFGüEíÙQ›–>Óç÷ÀúµÚ<É{v^zTרÀðÂ¥Uët:N'¸ÝîÚZ—´v›ê»™ö ohÐ7ì÷‘IQ”°y½¾Ÿ=ÿôÞÝûl6ÂnOj¬oç 7J‡µU?¹ι^`xáÒ8Ϊ*\.Ê®õo”iÛí‰Á`0 a#’¤‚ÀË»ß^³~%ÄÇÇuuôGuå gÃ>f{8“s–<àݽlÝ ‚ ññ@A(D „˜Á¿¿BæÔbù6œ“ròmØ –° ö·àb$–ʹטÄãºÝn—‹b«–ãv9‚>÷ù ºáŒNMœ ‘AÚl¶„) ¡P¨¸›$)›†B¿~é9 È·a_•ŸÀ#h“ß#8QØ[ á…KÿçÕÖºÜîñá©§ª¤ÿ² R;›Ç€®ŽÞéÓÃC#qñqAøü=fIoÿP§/iš–¿¨¹8$,(ŠŒUß« /\Wj”Mp,C*—”:Äõ©)Ž‚° x}yE™š.VN¦|LãrŽlKcwLõz}cþ1ø©êË‹f秦&OMœ’–6£¢¢|ã†uÞþ•ë*GGý¥E®SN¤Ä0Í1V\ËÆ W)3ÓS² ¦w6÷­\Wyå\{RR~nNÀíoÿ@ScÛÛÿýIѼ̜ü A#ÏÏ¥QšÀ#Ó‚àJøÉ7š#íNJ€ҊÂ^OÿûOú|CÉÉv‚–"EQÝ]=m-7ƒÁ`áÜŒ{WV Þ.–o£n˜| ü±Á—2“„ *¸§ú®âÒìÆë-í­7»:=åÎ\Owï…óW.^¸622ZRž·â¡Å±^#"ŠyÊE©£«ãVC}{G«§·Ûçs¤$åÌ*[8;¯Ð„Ïdf¢¡CfN½5"Ö CcuK£mˆ‚{&®Æ`ÅžÉC-ÁŠ=“z\ÍÀŠ=“ z\ÍÀŠ=“ z\ÍÀŠ=“ W(Uì1Ê1n¤Pã{2ï¯^ÆTì¹|*nùÚâ{.”øqsMòÀ´Íö1PúƸ‘b¦Š=zV*ô¸ã`ÅcÂ+ö.O·`¨ WìÑ¿j…«Wì1„jC˜¸bçNÏ Fá*†®ØãªkŽOˆë»åÛðCí+öð/ÉÏâççÈÌ)’è×!(\Å`Å=€1®b°b@« ¬Ø£Ðã*+öèô¸Ê@Éêô¸ˆ!A«÷Ù ÞÁ¹ó‹ ûf·`ò ³b¹J“‚W=Î¥‹ 9Ù.ÑFÕF ô¸Š9¸ÿ½I®^S 7ê›ZªXÞÖÒÅn'92öý¶ïýzÎCáFô¸ŠÙ²õQp8ì0§¤RR§qÚ~w=v ´èq#bä÷Ç«.·úÇl}‡Ž¿ëÜ<‡˜õ×LÏ×u·óÑl_ ¼r–~ÃÔù§g”¦fÄä\z\ÅÙ¾ÔsuÖ¹?w¾óÊE9ã srû}D²æ[1i;ÑÓV¬~=®2hÊ0–ú1ÀBº½&áߟcÚÐ * 0'§rÇ™ñžŒŸªÀ?].!>ÁdöK‰«‚9a—½÷ÔaõŸeæ•€YGµaᨖ†“‡#öî”…`êŽàKùÉ?3ò&8£Dg´A ;oGìC_Œšc»ÎᄂUꎘq±K*$ûÍ£Ÿ“:(\0îó…ŸžXRÿÕÉÖ…¾3y—[Ó_}ëÐñ×›ç ‹« ¾®k¹ Î-èQ1Käâ°ÀqŸŠ ê*9ÎTA’ @’Ô²4(ŠÜXyn9ÞÞ¿íâ‘íK9F”Rw¤-Ž—9˜àÆêQŒ W1l!.¾ @EM´I¦½ ùÑöSû@a€A‹ƒ†“º#&M±Á‚ãù¦¤‡5+P¸Ê U›]à€•«Úà/›KÀÿ̽œ~Áç³°©;ìh’ …ï<$ÎïäÛgwrzø3 Î"ñÏ™pWAšì* š€g Pº«€ª(\ÐBä|‹Ë'ì$r0T@ ‰™=.V¿11¦.V¿17æÜÃê7¦Ç„«ßXz\¬~cLèq±ú0•p)¬~cÌ#\ «ßX óĸXýÆRèÎãbõ¶@‹ ;ábõÎt*bøPÁÄÕo Œ-\³V¿ÑO†ŒnÑ]¨ W¿‘¸„ÐØãÒÕo.|ÙŸ7Ð?´¾Fûê7œô¦3¬öH~†ŒØ2/!`h‹Õo¬Œ=.V¿±2Fõ¸XýÆâÕãbõ‹cT‹’µ8Fõ¸ˆÅ1ªÇeƒÕo,ˆ<.V¿± ö¸XýÆÊØãbõ+c`Ë«ßXílƒ=.V¿á˜•³Ó`T‹Õo8“Š­Ç¬èîGï$Àê7|ƒ|,’1¡/‹Õo$`¿y,®ZЛpe‚Õo¤ƒ+`à‡3¬~f^c`ábõÎæªü¦q1ªp±úØ,âwõµ« ¬~ƒòá «ß †ô¸4XýÆÊX¸ˆ•1êÃbq4‹q_Ûû–ô€Ÿ<óZÍ… Ú÷µ½o=^³.ìÔ.¢„ ÿûG¯Y—‘1‹þO>ùCæo¦ÿñšua½2‚ÈDKëuÆ °iÓ¦M›6}üñGô߇€?üƒ š YŒ[µyË–<øZ©l¶lùAýÕæ’ÒB­æB-¿€X´Àùò‹ÊvÑT¤ÐHßξÉ—ŸV;³b84Û‹Ü¡j›B¹)DÏh*””nذáå_€þ×b_¥;ùˆ$„p).Š|³˜`yeu‰:H¬®Òê7%¥…õW›Š)U)Ò 0‚c˜~þ`±ùi6ˆN®Šï{Õy\‰>¾Vð’¢$Î9FDŸh*ü¸uÁpIs¥BGÌfÂ}#ÿÒ[$¾¾R©Çå+OŽÕ!Ç,†@3á–”¾—àÅñ—Zy\ö怘ž(¡Ÿ2VL Òc]ã]Á\±«‚—890Òö%,ÈY¢ ã"Ö$ö1.‚¨@ƒ‘>8ÜVï {dñµ½o啤nÞ¼)Âé4.LhWz ªÑÜúA æœ!†…‹.bHP¸ˆ!Aá"†…‹.bHþ3^ÖØ–{IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-config/http-cookie-manager.png0000644000175000017500000003025012032647175027142 0ustar ebourgebourg‰PNG  IHDR_DbKGDÿÿÿ ½§“ pHYs  šœtIMEÜ Aßáw IDATxÚíÝpé}ßñïnä™tZKsÓ4‚:Ä5;ÇàìÌtÀwôÑN)´‚‡ôYe\qí: LÉø\ÂÐt¦žŽ`(>¬©ã0É͸k3² Æs$EÇÆ‰¾ªü¦ÞØ þ©9¹¤9i·,âç€H $Þ¯áÒb÷Áî³»ÏgŸg¬òÌ3Ïôöö  Í$‰3½½½ÓÓÓÔ´!•*2@È §Î™ÊIºžœé÷EÅ\t(Jåôϯ<óªë³1µz~hšûÀ‚«“vIÍôûÊæÑºGf-EoZ)rúcjC‹˜«µ½õ¼z`±1U5¶·lY]Ï.MŒÌoVÚ± nÎ̤j¶ªÉËå*€Ü"ý3I]oÝ*Vc᥽ò©©ó›t´^?à@Šâ˜Z[›2½L~ïA3vñUp62îß”h"9i¯r=žLø¢¢ªeþz2Ôï; *ÞØ¦¥çn$÷7_׳Ká(qèìëôº5­Ö«©s›ªª¹kׇŠG~Œ&Úh^u=r:].—Ëår:CeóW‹fËFÆÎñHV× K•ÍoÌ’+*”4Ù(MëîîÖT5–(îÞìm¬§Eëîî.ÝÞ’bóïX¼%3ä×ÐdÙâ-*Z*/Ù¢ª›Sù¾Ngˆ Ž„®g—&|1U›µ³Ú«™-Ñ´î±Ëöš%d#E7T5æëŸˆdõz^-]‘93¹Ç g##s›…¢b~Óèòz=" /šl#Ï<^oWiDÍ«Æ|KÅ­¼¤f¼óû3›™,«ëÉ™þ‘¸“º9ïðC¸9™¥‰â÷Рª1ÿÀ€«ÈÀ€?vØ Aá]¼ó›ª¦uù«6¾»™´ˆtY;äÀŽÂÊÊÊÊÊJÀ­©êæÜT=¯5³#si[u(y£îÑðÊÊJ<à‰&ÌnHØ/vk’^ßØËµ¹á¨hÝ£UâÌ6ŽÇWVVâáÑnM“tf·¸¢ü1­{47CåûÖX65“»/ˆÇ Û^ÿæ¨jl~~ÓXü¡‡ÄÐ06é]X²4ó ]O&¢%ûå±nM3š3óW‹/xý1Õ6æ7Y‡|Qnï`‡ˆˆ½×­i"[™=³Q®ž>[!rŒ6×Ö×SgŠâ˜* suX»*ë§x,÷¾,»ßZØ¿aŸ –­gs´îÑ>¹œR5ï W~f1w÷PÛýz?Ùiµ‰¤·2{â°˜ÌVÔQè°v‰¤ë~UUcóó"÷okw_b…ÿˆfÖAãVÇœ/ Gz3ëQÑÄhswËf+ùØ«ªŠVZQ“v“·¨±ìÁý'óÍÑ4wðá>z àDf@KQ‹µKÔÍ͹ÀRY“T{™­F^Õ4wpõrfbd~3æëódÒ´î±…º,ŠâèõH,¶9ïßUµ^v(JÙè‘ш»ñ)‡ÒhÜ´ìÙYusZøÓ¶NãX9cô¦òÛz62î ¥ÄÞë‘Êâéu(ŠÑ×zµøz}èúZÀ­©jÌWã;•E5´þFØä^ªeånˆ§õßz1Y¶rm ß\{ÈÍ@?àx»–¡Ù`fÀ+¸0.cÅkd£s›1¿+÷¢Z~ ö«ÅSkqúc1ß„uav°£jk^RT}#Z=}¶¹ÍM©C§Õ&êææ¼w`^Dëî¶iÚ¦óõËçWž9¨nj.\¬²¶'´9vN€~@kÅ€c*vkc8“EQ,C³«ûw;5Í,ºÃlþj•p}Ž*Ÿ-+ªîá ËÐõµ•••µ)GÕWýùŽB÷èÂì¬ÌVÉ&Ë*–¡Ù…±Â4w`u²÷á7Àé LOOó,ÉSL׳Kñïžqó@sª¦€öqíÚµ3ÔÂi·›I§cÞù¢ÎŸù·í´¾üyÚ;zŠc²t¨Ç| @[¡Ð10Åw|Ð2Èh/U>´¼¼L½Ài2<<|÷îݺ2À˜›*€Óaqq±~€¡jb§_¾Éž€‡ôÂ'Ÿ3yµ¥¿#võ3Ÿbÿ@ÓîÞ½ûØc™ÌÀ=a8µP! }‘@TÐõdÈé %õÒ)¡äq?gvãê…«SnËÆÕ ì¥.Ôž¾‘[pÿ¥²B‹‹¯XðaÖ¶ÖÄZ‹_ð.î”Nht ^ÜŽúfz|J⣠HÏ•;w®äšÉ[ï\éÉ¿ô¾ÓEDdh6u¥GDv½Ï^Ý(Udãê…çå¥;©žÃ\Ùž+w(ïûËßÝ>o¬Î­ˆÈ‡)€ãîä^Vc¾‰¥l鵿ÑEpå}c¢ÓJ&CÆôñHVÏFÆN§s¼ðDF]ÏFÆ.—Ëé %u}©cî^œçU¯ÃoE†^ºÒSã ½¢gPubå5}q?`gÑ{Á´‡14ôÄòwwò«#C% °³èÍweòÝ…«®nä§ï÷!ªÌ¹ÿîÞÅEÓUÚ/“^ÐÎà ÜêæüÈLªä\qL­­­¬¬ÄãݚõÍZpUù½ÆôÍyo@ü c6IÏrA’š™KÛF£6‰úJ‹=V;?ýÉÐÅžjp±z<ÿ“ϼ’J¥^ùÌOžÏ·ŠU'î·¢óïzåN8w=¿ß_ycôN*•ºó’<_£u½x1·äâÅ’B¯ÈÕ;wR©TꟖ/„óËGž7¦ïO¬>§15•J]•åÈ«”+óÎ+=œ%@ÛöÄ>íVcþâû:¬]¥4Íœ´Ó5Íœì0æIgvEt=™ˆŠH—Õn푭̞اÖÖÖÖ¦L‡›"%Ãû‘æ·7WÔ…+rµÆmãVdhtø¼ˆœŠÜÚ¨9QDä§‹Þ óïz¥¼ý‘ï.Ë»7Ƈ./R:t” [RH=W e–ôc†^2¦ïO¬:çÎOòÄ;ÏKn…X¥|™Nµƒ¿#Ö1è]™óMX¼ûÃAÙÈÄÈܦªŠªŠÖ`ì¨1ÿ@LTÕËÁKäñ÷¯±o5»½eE…È¿¨Ê»/U{iûïÿ/?lÿ¢‘—òÛ¥VÌwçoÈÅ+"·ÊûÏÿ¥ªš.^kÎí7¾/ïlr•´k(Šep6˜é÷ÍÂ6éêÑõìR`.-¶±°73â‹6ðvV›hiw°%ï3‹ô\zþÖÆ•ž‡J‰¡ÙԕǽÏz¥¢+ðø»~mh6|põx/­]™WFÃ"%#IÞ kó ¬ÎzW @[ŽåbÀ1¹0fK§Ó¹ »™´ˆtY;{3E±ôôÙT5^ÚËõ'Õ=áÚ!y¾äÙ…Éó‹;"²³8Ÿ¿ePubÎùáðÑ7ž-/éüû/ýäV=÷XÏ¿¿Kž¨¸3±ýÆ÷-7n³óÓŸ˜-_uÎý±žÅùH£« m3@DËÐlг AªÆ|ýá-›¨jÌ×?Sg#nºpk›óÞÂGƒZ¬'påÎKO|ñÃåßè¹òÒ_xÖn·?û…' Ÿª:±¤¨Ñ7ž½àýêvI6\¼u¡Ž/œW+1¿n®È¥¡Èó®Þ®µsnˆô\yIž¿`·Û¯È¥¡†W À)¤LOOOOOOZ^^®õKÓÇéÅ—oò›qGegÑ~'#@À©wå zõ3ŸZ\\¬Úª_»ví uÔ6Šîk¿ýÒ@È€öQøf5œ„ ¸{÷.O’€vÌ€>ùÜc=Æ-hß~{ŽÏ2@ÈÀé×^ßxì±ÇØå@?@@;`,Hד3ý¾XîGfºÇf‡, µ§¿ g#ý¾¨xñøÊÊÊêª_3­ökÏ­ö8%º1·©ªž`î™_Šbº¾ÿàßdÈér¹\.—3”,oŽ“!ã¥ñHVÏFÆN§s<’ÕëœGDt=w?c °`$2îr¹Œ™ Ý”âg¥åÖÍz]{€Æ2Àxþ»¦¹{íU^ÍFÆý1ÕˆÇn5æd÷KTc¾Do<<Ú­i›óÞþ€øÆl’ž ,eó­ðó¤fFæÒ¶ÑÀ¨M¢¾™Tqáëâ‡Gm’ž»‘RÇäjЭiš–{>¥®'gFæÒù¾ËAO«2 áá—ìÆz:ö^·¦¥×7 í»¦¹ƒ“vé°vÿžìè°v‰O¯g#~Dº¬vk—ˆleŠ ÷v J4QëÒ^Uc¾‰\œ(Šcjm0€ÃÉ€ü󄋵fjÌ?à©jC…>îÖ4usÞ;0J2þg€¢8z=¢ª±DªòÅN«­t‚ÍÚy˜kÕiµ‰¦¹›ÏQ,C××ÖnMD¢¾n@3ýûå±nM‹ú& ·j“¡PR×ÅÒÓgËÅC*SU[_åðFZ 凗öê ‘­Lé¼öÉ [ÓÄfµðÁ!¨áŒùõìªu¦ß7ï˜w >¥("bºÈ8ýþ˜ˆæ\²îjåÊŸ÷ºæÅ¸ßk¯ƒþ±õ‘¹yïÀœæþüÊ3¯º>›ûBƒØÆüƒ%Ån€êMèôôôôôtñ¤åååªO ?ø½ mhqq±j«~íÚ5~+ÚíëL­ŽUí˜ÃÃÃÔ ´iœÊ»Á€JÜ2@È d€ ´gw/<´½Ñßå×ùA8¡ g#ý¾¨m,Çãá1[Ô׿ÿ™z}ð '5R7æ6UÕã´(Š¢X½UÝœ»‘*në#‘q—ËåtŽG²º®'gú}1UUÕ˜¯&©ë•ý€d(ß«%Ëb£¸¨B?D/Ðdèz2Ms÷ëeïukšD…¶XUcëâÜF6(Šcr5èÖ4ãq`•×þÙȸ?¦ºñxÀ­Æüã‘ìþÊE…Gm’.ÄÌÌÈ\Z<Í=jP¬æ³$———˦\ºt©ž5ÍíìéukÑh4‘œ´ÛÍB%»±žÖ4O¯]r‹¬od;Jвv‰¤‹ŠRÕ˜oº0;XxˆqåÚDÄü¹gÌ—,þïÑüžèn&]:!Ùé¨1·¢8&ƶFæ67ç½óî@|Ê¡¿w Õø0˜3æ/—µûŠâèõH,K¤&I%bª*î^‡¢T™·Y;XÃN«M$ÝÀ"ŠeèúÚP2äôÇÔ¨o¦wuÒ¡(üÞ54¡á{ÂöËcÝš /eu]׳Kᨦu].ïÙÊì峡ËjQ”\CoL/¿®·ôôÙT5–Hå±õõXêâ·OÝšVGÆšíT½ Ÿ]µÎôû¼ó"¢ižÊ;½ëþùMUÓÜÁI»ÑÐúÇÖGææ½sšûó+ÏÏlºÈ8ýþ˜ˆæ\²˜¼{áSF"¢‰mÌ?háž04K™žžžžž®|ayyÙüNB­:*žªŸÿ3ó–üÚµküV´¯3‡X–ñà)*Nú@È d€ 2@Nž†+âÅ—oÖ3Û Ÿ|ŽÊ€Ó–"òÿiÄ|†/ýÙ5 ­¯™± ú‹gÌÿª.¥ëÉÓér¹\.—Ó9Éê…‰Ng(Yå!dF­Uz´«ZÏ»Ã>Ì[èÉPÙÞp"3àŸýâÛÌÿªœÿÙÈD¿/*ž@<¾²²²ºê—ÀLë´ûõ0~ummªeP¼†‡•eå4] ºžœIô®¬¬Äã6IÏ–²:1œÌ ø?ÿpßü¯r‘Ô¹MUõsÏ–QËÐõ*툮g#ãN—ËUhtŠ{.—+”,í=$CU›¹d¨ÐáȽº?%”¬>géôâ«Wçx$«ëe­aåªQ7î,ë&6°ÖVˆHfi¢Ö¥ta _×^7ž¶¦ª1_ÿL­.«Æ×µ×ËÖ¤ðÔ¶B9•ÑRY…y"‘ñª*ŠcjÊ!"Òaí‘tf—“8¡ðÿá¾ù_eÛ”ˆŠ¦¹{픜š™KÛF£6‰úfR… Oãú±[Ó¢¾ýÞƒªÆ|‰ÞÊkÒldܵ†ã+++Æ«Ùȸ?¦ºñxÀ­Æüã‘laΪÓKº/aëÂl•'VV®ª®'gFæÒù¾NÕ‹åú7°r+ŒM^îRúFʤC0¹tk𦹠Ït«|ë²j|¯úÞ²5I‰½²œ²ª®U5WÕxjôØež4œØ ø÷ÍÿšvHDE¤Ëj·v‰ÈV¦d¸À¸~,Rx^qÙ…öÆzZ¤ËÚQ2%—@ö^·¦¥×7²º^kzi‹ñV “UUÕ˜o¢ú@GýX¹…MöväæŒ&êç1yë*ÕXQÕ5Ê4«Àª«ªëÉ_Tëõvpî­ ™Ïýã}íCIùb¢ªÆpŸ™ÛTUQU9øw3郦¤3»"5§¶ÂÑ´'8Uûrµ|UÇäÂØÖÈÜææ¼w`ÞˆO9”f7°r+¿n+›á‡­êÅ…ª/*¶1•XpbúoÝ×Ìÿ*‡&z=¢ª±DʼàN«M4Í]<–¢ëÙ¥À\Zl£á€[«'{:­¶ƒ¦Ø¬fÓsúúA•UÅ2t}m-àÖD¤xتñ ¬ÜЇT}…ˮ붪K+°f_„>p²3àfþW¹ˆýòX·¦E}…;™ÉPù-SE±ôôÙT5^Ú«¸Ø¬·á0 ÙÊì•›Hå£ûz,ŠRkz¾¤.ëàd<d)~»Êéå«õU~§rU Ÿðð×ñ¨+·¢¡}¤(–Aÿ˜MÒóÞâJ(~ëÊ6ºrMRÒQVNåæ˜T`Y? Õ¾ @™žžžžž®|ayyyxxøîÝ»eÓ_|ùæ%Ï‡Í ]Ž~ƒßŠ€G®VKn¸víZ3÷„—£ß fàh8¸À€SƒßŽ2@È d€ 2@È ­ç Up(^|ù&•pDø¹r]ÝIAš¸59®ÊÞî!¯XkòŠâ˜º>d1ÎýŽž>›H:³Ûâ­Dµ3ÈüØ(Ìß?ÞªY¦Ù1Su­Žá¤8’ Ðõd"*šæîµWy5÷ÇTw ¸Õ˜<’5Ÿ^r¡¶WåÇßÌÈ\Ú6µIÔ7“2=T1UO¯CQ|ÇÊ5÷Em£áøÊÊÊ­[ÿõrŸMU7Ãy/³eëë±ÔwýR\ÎÚÚ”ùš¨jÌ—è‡G»5msÞÛÿ˜MÒs¥BÛªª±uñÇnUÝœ»‘*\­¬¬ F}3)±O®Ýšfô‡ª^jU–SÏ¥Vq±ïU;{š­–âƒøÏ\.×À€?¦ªu&„q<0àz¼C¥¥Z‰¶¨¢¶+÷”®g3[¢iÝÖΚ{çàc摞‡?ÀôB tB:³+ÒQsºa+<M{‚SµPUùb¢ªÆ‚–÷ ‡¸®›¿ckÞÑÓg›Koe²zgfk¿Mo¸¤Ñ5i`|vSUEUå8›¬)»~ù«•ï~Èõþ²yþj廇~™ÓüõQé!×qô 6¸Oä¸*œGù[ ŒËëÉЀßïÜ]˜ìhV¢Ãt‹©mcÅ>ÚÝõ­pR4ÓPG¯GT5–¨Òßê´ÚJ'جfÓsúúó wk·õ^Ú—E qcà¡w} Mf€bš] z$=ï0n¬'zsã0–¡ë·ó øcš;p}(7lSkzy™Q_åG5Œe7ç½uÞô¯ó+çzr[”{£µ‹J#m]•r]“Jëþ¬0°¨(ŽÉ GUc¾þð–MŒÏ¤¤cÐ?f“ô¼w V-••Sg»V^lSÕrÿVõ﫯Üúê+·j½ztWÿæUÑÜ!×Ђe›{£ûô᫇?åÅ1Ù›0¦äîÆåÇë[¹•¨z™,bäYÌ?è Öê74qÌ´ÂI¡LOOOOOW¹ ±¼<<<|÷î]ic¹8{‚kSó9_|ùæ\žCÿñÅÃúlþ£ªÃë?ûûï¬D?6|¹‰÷úÊâÃ}~@kVé#tD‡.Zä¤0oɯ]»ÆoE0b¸©ªž†.w©–<à;b@Ëd€ÙÈÐõµ¡G¼-÷MȦ«å¾¦·ÆúŸª/‡ãDk…“‚ Àqît*hµ“‚ À±]ò0´ÜIAà˜< ´ÞIA&ã¡ À¡ úmç;+Q*ÁÄJì*C­vR‡ãp?Ãpèâxðx? d€ 2@È d€ 2@ÈÀ£gö ™ÅÅE*Ú1†‡‡©hÓ ¸{÷.µ§÷€ 2@È d€ 2@È8© ëÉÓét†’º^ùßÃeî*RÏéÉPaæ×µ×~õÌ·±x%ÎñHV?Ä·8Òê1–d+Ð4wpuÒ¡(ºžœé÷ùú·Æf‡,J­ÆtÆÕÄc,""ï][›:²uÓ³‘‰‘¹´x‚qc ³K3ÉÙÜ[?Ûþü!÷™ŸüÒa•\µœÂf&R¹U—µ_ëÖ´¨o¢p{9 %u½Pf"•«"[_EQjMÏ—×eœŒ‡GmQ_åíbóí-®s¨_ß uL­…­ãÞy¯k^DDsç.Z‹‡t4±ùsÃÓ–¡ëŒÓ?ïuÍçÆyº ý0†‰lcÅ£ÞYrAe9E±_ëŽÎÅüº£¾h~Ïìªu¦ß7ï˜w >U¼Õþ˜ˆæ\²”¼WÅôÊ2QÛïÿù0_O»¤ªÖ9Ô{<=====]ùÂòò²ù@‹3oɯ]»ÆoE@û"€ 2@ÈÀéS×wÄ^|ù&5'Å Ÿ|î03@D®~æST«‰+_øSªˆ*¢Š¨¢V¨"yì±Çêü†o¿Áw†©"ªˆ*¢ŠNîðˆK %õÒ)<±²¢²‘ñ’gÖ›WT;TcáyŸùGi–ÔÏ¡¾Ëi«É²ª+>Û­*ªÖI[=–µž)oÛ Ï$í“<Ñ„¢Xzú$°±7”ÿ©Ñ½¥ðÖ˜ªÝ+͈çŽ=ê™…Ù!‹r¨5ï˜ZsœâªÓ³‘‰‘™d7ézr¦?Ñ»zÊOO]Ï.Mø$¸ºâh»ªÆ‚º¼~k¸èQÃû;¦è鯣wsW"ÉPáú¥Þ…k™O±?ñÁÞÑÓ'ëÙüóå7Ö¥¯§£VEU½v+ýw•'ÔŸì˜tL­» ‰.å‡ùÁSëÓõÜ?ò3T> úÄXÖ®g\þác¾þ™ýƒdo©¸NKç`7“öT>¼êiR6±ê)V|´ägkÑ3®5ît ú­á²©®'gâ_]]YY‰‡GeîF¾â¢>Ÿâñxxt+ M$zWWãáÑ-_î0Ý[ d¼«+++«A1ž½®(Ž©Sð¼u#ŒGÈìíG@íŠ2SYK§½×M›Ÿšñm-¬¬¬,Œmm ÙÁSGMF}ñ¯®Ö_Ï'À^fËÓëP”ÊÍO‰}r5è.y¼ky œŽ“KQ“ ÖpÿDÙpbÕÓÄxê÷ÊÊÊÚž«+c¶–=ãZåžpÇ WÂKÙ¢“JQSׇrE)ºT±-L:E:¬]é7~ÅŸÿw>¢7Ö%÷<­¢áÔ !`D€Q9µ+ʬç{Zk©p‘ˆz¼ƒÆ¡U´fO5é O1ª¯ž[[Ô?0àr¹úâÏ=›¯žé4Õ@éùeš]õK ß9)îm—&Æ¡Õ[×óªòuÕÚgÜ™–ià“ÞÄÄÒÞì`ÙXdá9YîÞüØQÑ£Þ+û¾›I§cù{-u*zí=}ØÈöl¬wyg;ª(óžïi¬¥½Ì–ÍzÙtàÑôài¢&O®ý[)m¹ùÕ/³†®¯ &CýK ³ƒ‡yš´îw¦…v€cÊ›_Úó®U wiŒSõÓiµy³§ô–)Yï꽞ßÀ¦*êtÖÒÞÆzºËkQ”æ®±š=äNMç©­7Ÿ½×ãKìŠtT;Mt½Ójk¢ÐÖ=ãZëûöË}ëðÖ~r柒¾—Ùj`Àd+‘:§14ïŸï*é‹XQ[™½Ü=½µ¤'C#s2v97¬Ñ뉆—öDdo)õôÖwî5sÈ"µ6+³×NÕJDmÖΧ‰¢X¬]ÑŠs§ü;AíÒ™–ZÅ2äï[IçG‡‚‰ïÀ¼ˆÖ=:æ‰úúåó+ÏXˆeèzoÈéò«"ÅÏ^?%Ÿoëèéëž+‰óŠRÇäªÌô÷÷‹ml!èIÔª¥“Y9Qÿ@Ìø—¦¹ƒ«³…­°Oý#®yUÓÜÁÕº†o›>äNËF•Í®NNý#3ÖÕI{õÞÃiøðhÉ ˜æ®æÆñ«ž&öÉ…ÌD¿Ë¯æ§T?Ål—Z¤Æêz¦ü‹/ß¼ú™OñýlTUDQE-RE"R¨%ž)¨©Þ± »wïò ÒTUDQEmšÒÈR·-ªˆ*¢Š¨¢G®¡Œd,Ú7#É h?d2@È d€ 2@È d€ 2@È d€ 2@È d€ 2@È d€ 2@È d€ 2@È d€ 2@È d€ @È d€ 2@È d€ 2@È d€ 2@È d€ 2È d€ 2pZœ©Ö_¾I}@ÛeÀ Ÿ|î±Ç»ú™OQ_ÐŽý€»wïRYpÊp?È d€ 2@N®3TÁ18q?µôÂ'Ÿ+þïÍ›§ù§¢ž{î¹½³Në¾+Û/ N¶ßûøÇNʪþÉ—¿Ò>'dÕ&òí¬ÓºïN÷eÐŽÞö »±³2€fì,€ h»fåŒB%°³2€KK°³2€fì,€ h—få Í ; ÚÕ[÷µæÔõí¯}â·ÿøƒÿãµÏ>­(¯n\{jâ/¥üÕZÓ®ï¼vóövÉ*=þ¾çž:_{eŒE2b5Ÿ­wÖáÖv ì»{éøòï)"¢ëgßsiàÉ³Ü !ðÍʃf3à{>ó#UU¿±v{úן®Ì툈~ÿöVIƒ[}ú±·&¹vßhßoß|óa”c ‰FwÖáÖö£ÝwFüàÍsÆžÒõ{éøk;8•A´ièúÎÒË;ö…ÿ|ëÓ¡W^þ‹Ú?Ú©Wgßûã÷OÆTU³=ùdQ{Qkú#ß|E9ÿÔû¬ÛÛ?øÑî“OŸ/¾Ø¬Õ?(›¡SvŽ…"Û·oJ>Z(ä¸2@×jÔöëôôg£ªˆhž?^ÿ/Oï;c÷^ýôSfûôØ÷Õ½{oŠÈ¹³o7vÜÙ'?øteÇîñž<Õùó’´¸÷£ø†ô ØÎÙ~ÁQ`Üó؆ôfþ6þ×õù‰]xæ7žùaüÕLnúƵɘªþf0ñ-¿Ñ\Ý7ÞÐßQUAçùÇu]2;;º."»¯-ÿàÍsïîy÷9ÉÜ~m·rö²åüSϽïq]/nV,äØv–^­¶öŸølTýÍ`⯃ϪÑ?üý¿Øyë¾~ÿÁSðíå[¯þõÂ<¡iÑO_»ý–Ö:ûNQΟ·Š¢lß¾ÿÑ=½xúÓýèsÏ=÷‘¾û¬®gn¿¶+o?ÿø9E¹·½ósùùζ<~þìQî'»Ðèß?ÞÏD¾ü·Ÿºì¸¯uüú¿y·ª¦o½ºmLÿÙ–hš­³C{ë¿SDDP{z£ï{,;;9w¶óì9yóÞ=]oh†:ç9¶õ ¢¶ÿñ~æöÚ5íCO]ÐÞºðþMûñZ"sÿÁþR­ºïÎ?ýÑžÇuE¹÷Ão}ýk_ûÞNY­¾ýì¹Ò¾yïž®ßÛÙ~Óè;Ý~cAí5¤'¿òòfZ¼x9?eóÖ«Û¿õ‘wÈöOÓ"ÒÕñËÚ[r£hoÕšÞR=ñsgÏî_Zno|}[EÞ¼wOäíU®I˜¡rž³t,¨¸¶uÝØÆ®Ñ5I¿±ý@û%Eѳ7§÷K§ª¢ª¢µâ¾;ÿôG?ò”1ž³};~ö’1ÂsïGñåÜSQÑ }»L&³³ûÔù{oZÏwí~p‚Ý 7جìÆþÎûgëÿÖ¢äþû‡Ã_þñêk;CîÉ>ë÷¥Ž·Hìîl+Šœ;{VQtýìÙs¢¿Y2X\z±xà ÕçyD;«Jmëzg篊ü¸hwüê;ÿÅý-Ù¿ôyòãö·?ñÂj«î;E9kxß½›·3Fë÷Ò?xSνçƒï¾·|;S4p´½½½óšd¬çóŸb:ªýÆ‚Nthý%¿òåwþîß¡ÿ} uüë÷?©ª?þî÷vhvû%QÕo~/©ýï/½pKUkÆZÓ}ë#üyívF×ßSFûrþñsвýÃôÏk5@Õf8›\ø¹ÔSÈñí¬šž¿r/LÉï²o~/©ÝO~û–ªþ«÷?õKš~ÿÁvæÇ"ò®wüòþR­³ït}ç{ßúQnô¦Û"e÷ŠËvÉööv¡ptûdÀ ö@Óëÿ»ÿ`ç›_}ãߨ^<ñŸÿúÅwiÚß}gc÷öž¿KÓÖ?ç|íék¿¡i"¢iúM¯5½¡¿C½–ÜÞøú×oÞ¼ùõ¯odνçRÑ…áÙ'?Øó¸~ï‡ßºyóf•Açj3(ÊY[Ï{ÎÉ›…qê 9†eüi"ªû£ßrþγçÙ‹ÿÎóâÚ/}è¥\Úúçœû\Ls}þs²<ÐtMw|ü¿yT5üÐÿüY·¨j,ø¡/Þ©½Oyß)Êù§zdãæÍ›7o~}c[?ûnc Èød—¢lß¾ùÃ7Ï7_ÛÑõ·Ÿü¬®ëúÙ³gÍö-@ËR¦§§§§§+_X^^¾{÷.uôð^|ùæðåž”µ]¼ñµÊçœâçT>Cæí¬ÓºïNñ!wÌÌ[òk×®q?àøÆ‚šÿ“Ï Ôzéå›ñq›¼Úâ§÷¡ì¬±›êßw´È§p|cA Íÿ'7¾uXE='ºÉ8”u"vÓéÛw ZõÒRcH”ôÀÎÈ€¶kVŽåû·`gd@+bxíkõ¯_9Ñëoþ9vûdj*ûÈö‰ÓV9é;«÷šÀ÷„€ 2@ÈÀécöÙÐÅÅE*Ú1†‡‡©hÓ àé1pêq?È §ß™D"A-@J$ÿíkf«gPÎßIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-config/auth-manager-example1a.gif0000644000175000017500000000567012032647175027521 0ustar ebourgebourgGIF89a!ɳÿÿÿÏÏÿÌÌÌŸ˜Ï™™™fff`gŸ333,!ÉÿÉI«½8ëÍ»ÿ`(Ždiž ®lë¾p,Ïtmßx®ï|ïÿ3IÍ@,ȤrÉl:qÂYqú¬Z¯Ø¬Š`aàpwK.›ÏhZ0v]Òð¸|®\wø|Àí¥ØÚt‚ƒMvzˆz€‹5€„‘mw‰‰Œ+c™B›’Ÿ ¡†–—}ž”l™©¡¬­ƒ£¤Š^*¨´«©Ž®º»d°±x˜«¨Ã¼ÅÆX¾¿ÁšªÄÇÏÐIɱÁÂvQkÑÚÛ7×)ÜàáOÙâåæ[äçêëLéìïð<î+{La÷øùúûüùñÿ:橨·dÀ¯ƒÈp’ ‚;¦Ya0¡Å‹y6ÜCà¡ÿ'ª¨ˆ±äASöé艥…|mHšœ™¥J•óLÉ¥êÅ›‘4ƒ"²y“£;ÁðLe‰ÏÈ  ¢ì"Ñ¢  !À€¥•ƬjQª¢ÎiȇjìôšOˆX‰2 …‡RsÁ†X ‹øânø¦b ,v´UWrù$c]4öôƒ#µì(IsýXCRã.Ìhâ '·dÙ -Øl©£’H0铆ðÕŒ¿9 —¶tÙæ–lTƒå-] à ˜VˆéÓf¯A·&tºf£‘Öi¤¡oÚ‚gz¢Ø[”¤ä’$¢Z:“%’€&Š ¡‹¶càBJÛ”–:Ó ›Þ ¨•q*Úi!Ÿ"]Ré*¥qR‚è©4‰®›~ùª<±æà!x­Ü8ì‘ÅrÁÛÿ²Œ6 í´HKíµsYû„…Øf¥­ÜvÛÝ·M„Ë%ârÓhæ²A›²é²².íJEãðÆûɼGÔ+`ZúBÃ/þúÄUÀÇ üCÁ(NIå&ä å‰ù*«j#¶b¥° 7üg¦‡rºiŒZ‘ïJ¨jL.»pðÇIÞ*2¥ºžze°[Y'¯§´Š²Ï=ßܪΚº²q¿ÜÃË¿¶„©ÌENj¦;»* œ4=‹¡Ywij×' r4-·À´Õ1*iO¦Â92È_]êÖ#ª¨ÝóÊËØ;”ÍÂÙ—rš¶)nÖívÖP>·—ow}x¥Æðà¾LÆc½ëÿãµ`Âóª„Þ¹«ãC³ié.’;HùÒO'îúÇSWÝyá;ŸÂõèªz~7×lnÍź¤^áê0ÞiØ ƒ¿jâ隺+/Q/£¼ íV_ÎõjÏZôJdï½}à³;>oåÓÛáOç~¿”_‚|ûqpOCÙöÎO?öÏà7ÀûÅûF¼{é/€½à Ø+‡Õ®6jɹ„^…J %3Š9ÆÀÂLp! ]!0w" °=DZÿÖ:¸¬D3]¦œAžë†¹’™ (ˆÂ‡h!i^¨’"fµ.w±ãœÛÐ6C2Î…™I!ÙVH¦­fOÃ"éòƪ"ÿ2‚ˆX°4èÃ,ø­Šsáà Öº-ÚÊŠ%C"1Z8®2bጣEÆFÍ%‘j»Ûv—D$zËŽWÀã!ôÈ .‡2,$!™çMX¬º¹´R1s8aºú‡ÈG¢);Y­ pIRìÛ+™ËÉÍò«,Þ-qYKÕír{½^+Ù÷ËWsyñ›J*‹é„\¾øb¦1KY…ÿOP’3]FE²c™„9&ö>y Êc‚ :’6ÅÙ½F<ˆrª ’ÎmÓlŸ\dÅϺÕp†×ø]Ñ@µNjn+J+ž¤.g''‚.Qz[# ÊÊ;æóÿš@ÃÛ­ìö<¼=P¢Ý ¨.ÍxQçઑY$áéø8Q{²ó~%Mãg¸5ñŒ¦¢'+šÈ˜Z°fý¬Q&sôG æT¤Ïô¤;Y'¶q •›$ugóøgÎ%èô{×ú²ùͧâ3ªòêß”V—fµ\ º*'GjÑ ‰•dýº2óÖÄÕ”òû‡ZÑwV–u0t¥A°H¬b»X@±€ Ù,à°Òx©ÿVèÍ®Òà„UÇ 0­cQëØÒ"À±xm ÙÑ’ö §-P_¥×MŒ¶§´]e½ Yâ® ·*ílC‹\Pv°…ÿ¥-+€Ð:·¸¶µ.e•[ÃJv»Ö5–fw›‰•“‡$³¤xO¨,Úšv¸™(n|Ûå² ¸mrk‹Zç‚Ö¶®/e«Üë7¶Ð5ðmeE^ó-5[2Uç<1XD.p±Œ]0äK ùž¶¹H¬a•K€6à°²Í/i›+Ûç¿*h.Œ‰Õ`õ=ø™tÜdÐn±Þar“,ÅØgµ«áÏW´Hld] b`¶Ä8@s‡ËâꦨÄ"0’³ ªñ. ¡AdªJ%‡Îm¨{<çg1«bãºYË0Pîi _úFίmn .›gGð™ÃÝð2[ƒ Dç ¥¥aÿDd!ÏÀ¾mÎDxÙ`]=3³¦ôq5í_×J6Ó0þt|›+_#;‹§VP¤oß–æ@¶ñ¡û”ç£Ù\ç ÓÈÃÎt‰­œØþbY±ÉU²lOÛëÃÆöNNn’ùŒl6‹·Æð»±ËàxæÍ‹vdKÑÚã~wÁÝfi½½ç↻ËÐ& ´Í¶P¡õ,¨'•äMu†^Ø…B¿t¸çX×ͦ6sÕå‘ “*ÕZÁA½V­ëGÀ*W üGáâ[ [ÍŠêj¦âweÏ^ëXñm]œâƒNõV‰ëuàPUûôŠq†›Ri&‡DÌKŽò¯ªÜ «ÇÌÿSó}ßç;÷·Šôÿ W~§L„ŽJ%½ r‚·õç›Sãi¬×I£åO'´˜±†C·Ü w9œÝ'Iá¡÷œ`.ïÖ! ÐT­JŽdöHc½ ¢ÛÕè ´iãP±6&Ú`«*ÉÌžn‰C}ÚoÜ{ÔöyÅV»GMOyOñ®ÏT¹q¦F¼v$³]vÙ}á‡gw„/©è š"’+Á6ƒNËÂsò9'„þX¯ŽÏ3Ïà°¬w£ýcû‘—XŸüj.ìù³ß]šÛè=ò“o|Ð/_`ÍŸÞ\ŸÊè'³4Ô¥õ× Øì|û¡wí½Ï׫Ðè%Í?E¼§£ïÚft=o©üðK½Âñ§ú¶gYÿ­+”ñõA”ä3¸CU2>¶—v´Ph„ó&1FÍp€m":x>Ÿ× B¥w„yb§7Þs>¥ŽÔ9*õ8‚͇k94ÕDH&8PÕ#‚°GG`'€ATÒuícƒö—wy¢~cætùvJCH„÷'yÚçJJˆ+ø„¨…Rè>ìW…­×qXØ5æp[H>]¸r_=ascÈ|eh@gˆMéc/@·†Ð—†D%€ø:ypX-r8‡q×"t¸yØ"m˜‚$:^#76å5=ˆëè× ¤>´KuºÉIY~4Û'DÚk¯f¯Š’:.´ŽÒúlVõiT'N]E¥6ˆž…dÒ¢£7¬«@ 뀌ßÅïkô̾˜‘4#Íè!àû¹x!=óÌýü˜ïÜsÏhnÝgŸ}FЇ!È.@v@v² ² %Ã!ÕRAXmôSëðtN—^þ½[OØüZ€SWmƬY+ O÷›(4Ú4˜R‡Õv]k/—í4G“RÊ·I›› pœØë”Öac²¯Ó½¤þ-Þîδäî íϱæžÉ{©¥¡kî%\spà½Ý¬ètu33Ã/f« IÏW,ßðõÚÝKäŸ_è7íK¿/2qm¡=9‚°1éñ#Ô¼Ý]£¬Ýnel»ñ _occssssssãÈ‚æW# ¢ðÇÐ×ÿª×w/·faa¤±QlJ¬Ò¬,®R[[Ë8.0/wåïñ³bµµµÊ^«Ú™¾¯„µòŽäÜÇ ÉâdÜûˆ#€ý »‚°1Ù7à82TÙ†æöuN,ÅãÅ\À!—QùW\`°or#®h£M‰‹}nÉmoqȃΚY›ìk±»—¸ ãYm··‘ß3™PÉе‰%ŽkµÛ«ã ig<.1*ß—<,“gíòøF!úØ^㎖@z)±BZ Ü ÇXm·Cå–ZŽ&‰BVÛå¹l+FZEÈÂÐík/×éD‰‰DÖî•…FSoy-Œ4:I}ÑjÖ·Êí¦ì÷ÄLg»jý‘Yþ^»­œ„ ŸÇOÌÐuÖD×RjªÙY–GòÆcÉõ°·‚ ¬¶ëêô˜­|‹Gµ ,Ìû‰1«½½ŒˆÈToeŒhe푾l“½¬¢Zæe¯­cµÝW“‚bêN„;27+³<«•™ ·4q-”9Cƒ¹LYIËÎ侬C3‰ ’1Y¶-bÛðvÓ]›øÍ±‚Jm>T.&)Aؘì"G2t+‚™uHõ@l“»k‘HÀÞâ–]ë0VÛ}Qd;q]£«ëWƳoã)iÀFÞ.@v@v² ² %ƒús»SSS(÷ïßÏ"»b= l¯×›“·+"—ç]áÍ+ïaÎ{—ó/>Ÿ^Xê?v]x 3؋ܿÿðáÃé帥E½^‡ì@Qì@ÉÈ® ,Œ46Ž,Ê’‘…bg×â]FŸVòñ.£Ñ¤Ä¨]ÎK&¿Ji4þøÛŸû†F»7ª,ئ1€]&û-5ÿàh}I¦éÖ‘Ù;%5 ZÂNsü«/i”‘m,ä4QÔk?íâS¿-9§æ¢zQuƒ>"V-û<ÈÀqÁ¾É ¥‡+:ÂÍqDX,llYXË{}†¯·±±±±×·!Ä·Ýðõ667776Ž,Br«";ÑúÊš¼·‰zíF™ïœ(“uz ¼Ëèâ£^»Ñ¨æÉÚl5SsR«|l¶ÔÆRvlMaº‘’1v¯Wæçk! À²Û:4då–ܣЄ²:]ÝÀÌÌ­[·ÄdþÁÑ„hr\`p¾^,_rÛ›†ÈqµÛ@‘‰!I»C£C×P—üƒ£»—§6zgÙfÉËÕz«]áP(§Ix—“\áp( ½Ž.zø¸t¹«n„B¡P(d öø2µ@D¾'¹Âá°šëm±Äu—’Å¢A¨í:Ñš¬P½¦X …\4µ övÉÔïéªåy7IYEµ²€1ëp¿I,gÌ:<Ö^&Ö‰¬Ý''ª®0UTÑÊÚ=2 ÌÌÌÌ dŒcøú¡Ú>ßÖ»,5et’K]C´ö›¢ª£DDd¶Ø|AžˆÈìôH™û›¢S'¥b³sÜ–©"²'IÇ,é.$åYBuײ֒…êFÞY®©Ôé;º¶e! rú¹DY»£k¶sb°¯âª=gØðõuN,qqå™m–㎖qœ¨ÅåÙ·ˆd“—½Á­v9¥©Ü÷µ¾º¸xýŒé’xv¡6K²BÏuŽ“®¯.ÖXTTJ«…̘-5î¹hå*YœDÊn§ïZ U#©²0 -»:]yûØðZÓàÄÇ@ÕõbÚ¡‰º=öµÎA{£Ó§HŠ‘â§›§µ‰Öø”Èì¤y÷Õv{kâMr÷øYjh¨V^¤ï]µï;o*E"ÓȦ¦¦RJN:•X»Ž–@b!“üyJˆÈÊÚ†`J¾ ²¬¢š(wšÖVˆ±ÚŠ#)å*-”Q"…üà髸:Öžþ¶Éº™!jt–Ä’É…Lîµñ³ÆZëMDToe~ÿ,¿ÑÞž²/ {))UTEüó ý¦¬‡}ú&&é]c„eƒ³»³£À”^3?K ŽŠµ‰´:iØi¸ gjú  °¨¾SìPÖmäÿ&¶W$.kô§óñ”åbúáΉ%ŽKH@J(@]5â-”¥…Mû¯v¯tN,-¹í-nëÐÍ:å½Ù¿1Ù×é^’Ô9m?êÙ1Ê({2_”hiê§ëõnÍŽºî¶R à¾6ºæ¯¶O—Ѩüü§²wí I¡MMYÞ­W,ʺe>¿X;Ra Q8˜‚°194!C·Ç¾Ö9èßJ ©•tå¶Ë3¶…‘FG€óŽÖ«ù³:]yûØðZÓ _ý;RaPúWêÙ1r²§ˆ¨ØSj³£¢»g»ký@ u¨Ÿ($¿æÈ}ï;a*~ ö|lW#%„Š?"O$Ææ2¶ q0Ç“GQœ #½>)ßeh>Àqñ Š 9fÇPµGËøíëiz‚ŒÜF¸gGC07TSPçuÝPSØ[²KbJ+[rÛwuººþáVŽ 6yV ”¸Y/¦ 8Zæë‡­Œeh!Íë‘î\·´8üRòÅ-µ~ 55577·8¬¶KŒÿŠ( qÛ[ÄfÅ--Ž@†ìªöh¿3VŠy¹pIÍŽVïl—U§ÓÚ»F#¦ö[ g*E@ý d"û8ÇØˆ‘ßHëðÌ@F”ZzCö¶ÚÆŸz&"f辪™r€R² öøõš®n`fföx@v² ² ]ÉõI†7¯¼‡Á€¬œñùÂÈ.¹.¼„ÕÂyñÇ DtøðáÌ¿2Ëï¹]üb ãØ&ˆíÀ“]ñÕ6‰-ñ¼»ìúÊÜðõ*óof\™X·`oy»†Ï(Ö+()tºrsÍòÉWGÞ›ô¬tŸE6 °?d·Úî¨ð¨e“g«ÓI>ÅÂH"•aâU²´†ªé ቀü(37Ð,¿ωÉÏRƒ¹Lkeªº½ÊÏ[O? »;±ÀÛy¨A\²£C䘞ÒĵøbõÒÐÍ›7=]+ž‘‘¾ùúé雞®•xZÃ{“Cköé[·nM“,W#²‚-é®èïÞKª®öÊÌDú²Ý]^;y&7dËW§«¸l“Þb^VQ- Jt_í¯Ó騬¢:²úyGüsÜÕågIÊ9aªog `;qQuÅÕ¨½25Á² •Ò¯ë·Ï÷MÞkW:¼‰·©’µ>”evIO sw- Ø[ÜDÊ­Ø’¿;$¦=®¶•e[™À²¥'»D¤«°Ï÷NÞ³'„ɾAž¾U'&ÁÏ­™#†Ö¡±~„@Át7D³Õõ—å©?ó^™X– ô‚ "¦³ ³Cž•¤ƒOQyom% Õy„Î@áâ n‡»Z‘€3ëÊ\Y»'©³Ë”¸ìêÊmŽ)“ºNW×?\í¶·4777 QC«?CŠC9å¶ËõóMâ]fñ®1ždÛñwk•i3¯L®®Ú¾ÖÙÔÔ4DŽáVíe‰±= çòSX¾yå=×…—ðãW-0>ñ•a )ÐJa‰@QÉã–Úýû÷ñúGŒ x²{øða¼ÛP çÅc|€äR A(YßqÙ€B’K¤1_Ùå]F¯ùoaÙÑÆwÎf£ÝUl¡‰¾§Ⱥ¡bÿÙmà]&“Éd2enw•Â\d­­™Ì³Æ»ŒFqˆŒ*“"}¥¬ hHûÛÜëȉzíqc£^{bƒ¨×n÷®ç7;yˆ©¯+ù`н(•U\•¬eQ¯û:w{Ùk7wè tÄ-a§yç-_œš‹vHFóA‘-ÿ6ÌÎð–,ÞY>~Ê®W¤îåãT£9*ž¢^»ÑEê$Ý®Imbâ¶:,[Ÿµ¨×ÞCãáænmc¡Ì‹*k…ë$ÐWÖ,׉ôDë«·9ŽîDɬ§õÕÅËÑ¢¼'-䔤]ZWÊÁä]ÆÓ®Ê°Óiqi®¼} WÀN;]G½v£²„w]|Ôk7³Õ£sS5c¡±š‹^!!F“Éd÷z]¹íÅd2Ù½Q"Þeì¹Î]ï)†ûl³ÕLÍIž$›M͵Qu¦Ôü) w'¾IŠg›¢S'õòÝ^íòtÕhMZpù‚KÔ}‡ëÂrPÝë¡ñøA¡:Újã¯pv¤:ñŠ ?3µk)§ÕÒVKªaùÍÚúê¢ÍbÞ-éR·öhÕñå;Qñ$ÛÖÖ¶¸º.p«Ž¦^(Ž‚d»üÐøp¥øÔ²Ïq'UÛ=zÝÉc¶_Xv‹[¯¯.¯:*ë†øŸÙ9N=Êåå ¶Dzh, …Báøi+êu®v…C¡PX1¨¾'¹Âápæ³ï¹Xc1“Ùbó““\áP(ä¢)_r†3í%ôþ9ºèáÉì ·±¶ñ¢œR-–øÌÉbI¦å 7B¡Ð ËqkÍÎp8$2ÖFÙqq¡P(Þ;MÕå]Ì}5•z™åSÑ]>èKÅ»NK£Iµ‘¯G\ïŸ[v÷»ö %½NVÃ×´ˆw­ž–ŠÓ»–aâd-¸È™vÔª- ³S{hÌšÙy£Ê­¡ë¹áëËÃQ­£i­¾²fqu]œî*‹¤Áë«‹²¹T= â?U7Äq³{|š+Sò‰›ºÍÝN|¦S'õjÇ{Fï|u]ìÑxÍÅÓqÙ>½Úå‘./Ç9d7gŽVO·èÜIg6Å ÚÆ=Y£Q¯{ù‚ݬ"j·-ß9š¼ü ‡ô‰ ÊÁ é\v¥“¶3굟vña§™ŽV·y2ªÙN¿Qõº}ÜíëqÁ "Ž-{¿a®ÔXY÷²ºk?5ãtëºÚ{°õ]ä³Yœd¦ägÕã]åà…œÒ꫷⃾šä 3[l=AÞi>€ºËå?²‹èeÍX¤Ê…_nîŽçbÍxHÉxÍÅŸòÉ]G½nßVö"Þ‡(Îqq²šjÒ†Æl±ùÄIÔëN\d)¢\99,ñûÑ;ËòråÝ´Ýò‹N)†ãu^¬Q™LùŒ§GÕ{”KÄ3y{3y}¬Õ5Õ‰[¼ Stn*Õô--?õY“Td7„ò^×®êÊ2ɹÔIœU®_¿.›üs^ǯìò_}Í[¢eùç¼Ï¤’,'îƧ81žª1x»²sØ;v£©‹‡:R® ÛÆ¥çCô‹K^3×#êu/_p9ÓÜ n§÷žq2MwìÜ9­R~{1;ǃâ+E™]}‡Ç©e„éÇXÛ¸ô ôÑõ¸sŸÃ@™ãAÓÓ%"vìÜ›¯GŒðÁeå“cÚWñ2ÏWº4ѱsêþ¶Ü)IÌ~ÂNµå‚müF•Ûhìã8–ܱz×4&Î6>N}&“r*& mad}ˆ0}ÖdAÖ6N×D_Ÿìº,múdÇŘü ¹%¹ÔQqjŽ]”‚×úÊÆ(Ç‚üøm·ù‚Ú+“Èlic”Ðà6¶œÉôã]{Ð’1øO—š "vì\"bÃ}Y.´öŸióÎ;ï‚ ~v|ÿ-¡tXçßýH(%v}|>úî7ÞY߹Ɵ(èxº½Ü—Í%¶nöµ{p9ìˆR.¡ríDªßA@~œ›¯»å°=¹\¼yOßþà]§/ÖŒ‡Í°¶ÔzZ¤Ÿ1íå Ãî¡zÿ ÄÇcÞá8 :•æ]Y?{kµ”¥{ðŽê€Ën./4€ƒÌN¼ À¶€ìd » »ÙÙÈ.@v@v² ² ]]€ìdd » »ÙÙÈ.@v@v² ² ]€ì€ìdd » »ÙÈ.È.@v@v² ² ]€ì€ìdd » »ÙÈ.È.@v@v² ]]€ì؇òªýæ•÷0dP Ù=ÿâó‡v]x CEòvïß¿ñ€m‚Ø.@v² ² ]]€ìddö‡0YÙso¢8ÿâó{ÚþƒÜÙ}Ó”ŽÈnÞ|ë›_ß+¦¾õöÏö´ý¹³û¦;ªÝüø÷ÿŽƒýè,º »Xú8t!»²»_äC:ØÎ¢;² ¼]ÙÅ‘ ûÑYt@v q¡ÇÁ~tÝÝâñ`“mmCAX÷…¶üßöþîµ§tº´où7Nô]§ÔoµÊ‹f¿hÀ/¹äÏØ™ÌÆÜæ"w¶P–—ÀÜ­¿ûBÛè8"bìØ+“ÿë¬ÑaÈî^”ÝØVe÷㟎þã¸÷g>zõɧÒe—ňˆ„Í{ ]õò¢Ù/ÀØW.}4xB§þâ—^~ùÄòË¿øççè2l’Áf±‘Ô&¶Y:“UØÑÞݹ„è/þ¡ý‡·¿ Δ DñCó?ÙÙÝ’]AˆN^ùc÷Å—ƒçFn\ùùWM_=¢Ó‘ |üƒ“ýŽc†Ç—¢Z廡DSp¢ÿÒÿ…?ü)柒ºÖõÜD„cìôs¯~Q§KÙ$¥BýNìG¿<÷%!¾Ij#»$»)Mòûï?õšŸ#"ÖúƒY©ãÒ‰¬?#­FJ¢³›ÂƒMáÓŸ¿ðšŸ{fxþ×ç9ÿ+ÿíçÑ›ÂfìÄ·ËO?üõÕo×0æ?÷F|@Jbî6c'Ì­Äq7^=ù⻟2yyŠÙüf¹©áÇýazîîƒMamî&kxúáœÙÍÛãÈ÷ïÏ›k¾·ÿøÒÙºMVöäßã¸HðÃu±üÓbÌp¤Œ=xäh%‘Ó.Ïw¿…²?–f@,iêGs~"z´Ìx´’ˆV>]ÛŒåUávéìŸ7×>š¹Íس'Œìñd cŸÌÌ+,,Õ¹û«¿cey«³¾åo†?NU™yé%¢Oî|*v¶Rÿ;:/A†2 ?»²!û__‰—,?\ÿÊsÐúU—=ÌĤËÛXŒ=Ð*ßÕ C©ä±Ï?cH`D÷«ï´üŠ8Ž"«ë1ö9’÷%[…xP"¥ÎC¥ÑY"q:’ÝIX(l¼÷êßÿèOGG¬ä授þÓ·ç|}wý/ÿÝÛË¿GèwIDATú½Ÿwÿð¹¿P5û‰“Mì—7ýÿºÐ÷×w"§ÍO°±œÙÍ͘ç‘|7põOöŸÌþm¹Nú÷•Ž·?™þ]Ôf-£x$Qؤ>ëvÅþT„û×iŽ£¿¬xˆÑ¦päÈcÄ>ù[gàüâÉhS¾ e« #AµJ¡³D’yô‰l:«ü1áÝ ÿh™ÿæOþëú ç§Koî┟úÁ›ŸZÏOòÿÖcÂçÔÌŽé¾X÷ MÿÆÿá¨0ýÌ—_b´IÂÎÍ @!ߥÏòû[øÙÛ•ÿŸÄc¬ì¯N>ÎqŸÌ}1“éqÜ/°ûÑù ljž‘Vy¾».Œý1&Ä]¶Í{°ù±û¿ÿŠ1ë`÷“²î|pízTu eåµD´²~—ehd×;«œ²>^`› ¿ rÜ£'O<Ä„ÍØúÚ'DTõÈÃòþ–ÊÜ=ØüøŸúß½»ÛŒIfSíçŽ1U³7cìaýãDüÍO=™Òñ‚Ï €ìæGŒ ¹ÿmÆ¢¼³ú_Θ䅟{ÒRÅØŸþ7ƾp¦·Š±Ù×÷Ô_fŒˆbLÐ*Ïëoûö‹ŒˆãßÿJã×N[¾þ•Á™ÚÞK¿|å¸ 5õгãç›Ùê?w~í´åïZß Ç˜¸IÂæô L(oè}”þð/ßjKTÙõÎ&ŒÍ›}½ñë¯Xó÷^¶<Æ&Ô}ó;­~öZK~öRX{N‹Ü&Ô}s€ÆžmøÚiË×_°ÿØ}éûí ¤e¶¸,{¬ì‘d#;4/ î³Ï>Óúnjjª££ãþýû|ŒÞ¼ò^ÇÙ¯îk½×ÞMUö²ÿ wvßt'½#- El7× C^õ_|¾Eë«+ïÝÜÓöïVŠÜÙÒéã>ë€ìædÈ«þ[×~S¨¦JÍþÝêB‘;[:}ÜgÝÝœ=Ž=¾j7ÒQ·Ï:» Å„ìÂÛ…ýè,º »;¿ô÷ø31±ƒôLÏ>ël ÏcAv&2 ³è€ì•é_߀ýè,º žÛ€AKBñ+5(*]€ìdd »2’å¹]¯×‹1€’é¹ÝÇc€`;ä÷¾]üP b»ÙÈ.È.ì=þ?žÐšÊ‚!ÖIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-config/http-request-defaults.png0000644000175000017500000005256712032647175027575 0ustar ebourgebourg‰PNG  IHDRUÏ4ÿgsBITÛáOàtEXtSoftwareShutterc‚Ð IDATxÚìÝol#y~ßùoU:òàfÑ8 ©fo„ŒÀ]/ph“ck—vNM‘éã1{»Ò‚OàL …£ngp4~p0Äe0³!ïÔM(¾É:ÅÑ{©5&tBI­Ä殼M¦Ÿ¬F“h±æ´(äI Þ<pž©ºERüSü§–º)ñý‚H¥ªõ«ª_}ø«*Ryöì™`d¨4ùä?ÿ@þùCãFã†QHMG³LìFÜŠÒ>ý»;ßø¡ï·4Õ:5êz ç ‰ÝˆKŠ©éhË<úÄÂÆêŒ½áE_ºÏ™¯ Ë•:Çz5–c¶­û¼mÒiÓ€ëgXÆÿÔõùTq€™—¶*†1´ñ.éõz½É€5T×B~²`ô÷*•­¥h§¨ý²V ¿Í­(îå½½åZD°1z³× f¢h¯ªd¡µCÉæ —åàSãÌF%³4Ÿ.•ÊÇ"ö«Üô-#võÁ¼ltɱ±:kï9w\.‰.FìÀ@†büÏ6 èzßs;ÆEÄék˜fT2a¯×çóù|>o²Ð8»aT2áڿ™Š9«7Y0 ËQ®ö‰] /$«Ó«ÿõ&ëͧªZÌïïMQܑ݅ ]UÓ»¯Z=,¶¿JÓüµé}®iÏÂÛ×—BÈ;»ŽÙé:)¦¢šªCg÷É™#‚‡µ+¡ªkÎIók‡µ®…ü¡úŸ}U¯sá…¤7¦]d*Š}&¶8¡ërT6¯nwyõYH5ίjÑ‹»P~áë ^ ‹ë¿ªªÅüZûTÑ/ò…›_EÕõ‰ÅXÇGgÖuçbóåÑâÇéCUXX¿?k7 IL«_J6Ãbã•ÖACL§Â]RÌg­/¿ºwrîg)lŽq‘úÕíΫæŽtzçâúêŒ]Q/”Û‹¡…F¡Óú€«e(†sô‰…Ý~îx &𿬿=š±‰ˆ¸<]9*ŸˆaTÊG¢ë‹g‘ÅIô­¹Ká"c§T¯v“;·®¯Þ1º-ߟ­ÆhóBù…¹ôõ/†Åø_û'‰Ôžä¸ÐÌ7Èç•Ô>8ædki>mõxDÓh¢ªŠ>î°‰ù„„ˆùûsdd«ÂÅ>³º!Kók‡ªªÅ|Úó~KÕIùHšînì°j5 p^ܨíe­/†ü7´Å>³š(OGÓó)GsòÐõ‰Å¶PX»íí¨|"î¾>ÙZךc“eáf}fïïÍž=0¡E—«3Ï“6Í ¾Î©I»¢Ô”¶~õ.á/Ï-»•ž©½}M{¶¿åúÚ‰€\)Wìv~EqG6’­?Ö (nOPZž™­ÏÜò/Ë^VU-_4ÿ[É„½óû2Q»@Ü¥ðÖZí&º.¥òñÙänjÛ™OãÆ4µ~Á·ÏWo,!Ÿ]Ÿ¨óý¯iÖ«Ða}ÀÕpãÊÕX±Ï®&ÊþØÚ|ʱ·ì×ÝʼnlúP‹ùj—Ië—&]ž hšÚø¯`0˜ÍÖFÅÆN‘C©_aÕuçâF¨<-Õ^®Sáßb¢ªð¸Å0ÆNQ×Bþt狤ÏÙ¨ªˆ w+v^5«¶9{Ý5}b©뇪–ïîüzÏ5íTTº×úrpµ\ÉóPÜ˹x@ÕbÞp¦bŠ}vu×ú©Žœ[_¨réønÄsößúç­œE«ÖË·] o1±°næÑ–bû§â;;;Ënå¯ÞòºúÄÂÆêjlÑÙÿšv*ªçú€+¥ž={6R+ÌÝ€ÇÇùÿp}Üõ_€Çøùä?ÿ@þÀpkúþ·íímZà:™››;==í˜ÿÌ9h&€ëass³}âöI- ñÅûð£‡l-€çôÞÛoYN¿1œÕ]yÿ¶À¹žžÞ¼yÓò_<ÿp u¹ Jþ-ä?€ÑbqÿŸaRÓQIì.»•†)yÏnÄ­(/°n+·Ý~ro²yÊÔ“Ûû·ÞýÚ”\uýÛ÷;LðäÞ¤¬4üëÛ«ÅÆBk%ŸÍ ë_}ÿ“õ¹W‡a ^±ƒ×Òj+~”ÿLÙhê…¾¾(2yïÉ“{V©å릋ˆÈl5õ=Ý }såÀ"ë̞Ń•[÷6õ…&À. ¬¹bß I·x°ò®¬>)N^|5À5Ññú¯ªjÑ¥­Ša4N4ŒBÒëõÕ$ F}¢×›,’æôp¦bT2a¯×ë g*FmÙJ&ìõù|^o²`gK5¿Ä¥{õËoôœgòöìO~úYõ§›¡[.—ëÖ­•ƒæ är¹\.×ÊÁÁJõ_õ_Z~·*á`Å\üÖ­•Uù~ðnóKXUìÞ“o|°^Ÿ«¥ä¶ržn†nUëÚ|*Ý*)Fûâ •<àXàºç¿`<P׿SÅÆ©Šâ^ÞÛÛÙÙÉ­/Lèz6šª§7UÕ¢y9ýp-4—ØÆ¢SJéx5DSóé’s!¾à”l´¹ØêéÏ>½Ý}|ëéæÚ§ï‡&«¿ßûé“b±øä¼Û«Ö^ÿ¤X,‹ÅÛÞÍô(­½„ƒ•weµX,‹OžÜûºLÞ{òàÛ}^±¼=›yt`]rK9+÷dåÉ“b±XüÃïHCl´¤´/ÞPIF¸öùOÄY_˜Pµ˜9È×Êæož ëDÄeN×õ@buÆfÎS*‹F!Ÿ‘q‡Ë1."Gåq-ïííí-w½ÄœYr5ZÊœM«Eݺ'+ÖaæìµîÉJí ëÓ?Ù–×_k ^Oÿd[îüjõìä½³]ãŸU ¯½þµZˆ{Ž$kUrST¼W¿PÜϨg« ©$:Ý>ÿÙ6[ØŸOG—¡úD£’YšOªª¨ªè†MU‹ù5QU3Ú{/1Ûü¨ÆÁÊ­Gç]ÓY‹§>¬fxºZÿrýöºÏ~ú“Ÿüà[®ï™W¾}»:ñÛýÞhY«sëVnÝr©ê·{U«-õýìÓ¯½êXr‹³ÇG:ÌÐÅsT\Ñü§(ö™ÕDy:šŽ¯;eÜ#b•­xº$ÎÅõPy>šà…ÆNÑKÄP>SÒœzV^­Lšçµ×¿6»ºþ<á§S “÷ž<¹×ña”ÎñïO¶òÆÂ«}Õíéfè]y`> r¾è|ÎJ€aÖãóÿÅÙXt–J¥ê„ãrIDƶÁ^FQì“SNUÕÖ·NÌ)/íùþàZõq‰WõΧm×@›®¶¬4Þÿ÷éÏžVƒWm¢e –Ìe»:XùæR»5±gÉŸýô'_«^ ~ú³O»UrÀj€kœÿDD±Ï®&‚gq0TU-:½~äUÕ¢Ó©>œ}ö~< ®…êo«¼:·¾ðÓo†6ŸŠ¼:·~ûÑ­–Ç`'ï}òúZuâ£Ûõûÿ&ï=Yøé7oݺuOVÎn ´*á`Å|,÷[ß{ã9®6yïÁ|Óò1Û³o½+žœ}ø‹eÝsê½o|ï[Õ»ïÌfÞ½µrС’‹ÔªÑ^Ip(Ïž=«ÿ±½½=77wzzúrëôáGWÞçê´!Ÿ™†Î½~wåýw677ÛÓßÿ0ZnÐÏmòÞÆþùïùœžž~øÑC6ÀHä¿÷Þ~ëæÍ›Wê@òßóyéÏ \W<ÿ@þùä?\=£òù7oÞdcãä?\g¯ÿF!5ÕTUDt}bqcuÖ®Ð^WõøŸQÉ,MG³Œçr;;;»»1‰§ †1TU7ŒBÒëõz“ÃV1€«—ÿЧU5˜ˆ¸EDÅ>{Ùü]D I¯Ïçóù|Þd¡5Š’æ¿Â™ŠQÉ„½^¯7œ©}Î#"†QÉ„½>Ÿ¯ìê f2aŸÏgÎ\žTU-:]ͦfiÕºy“õÇD€ÞùÏ0 ù¬èzÀã²X ’ Ç45ÏåâU‹…3•³²T-š÷äÖ&týp-4—ØÆ¢SJéøV¥–ÀzÎSLͧKÎ…ø‚S²ÑT±±ð}‰åÖœRJ\Twd7Ðu]$v#nE1ŒBj>]ªYîíVtË]Få`¿T†.O@×Kûõl§ëDÄ%6ǸùûêŒÍæ‘Rù¸VB÷yÌè)2îp9ÆEä¨ÜXxhÆf.(Ù|§!=UÕ¢KÕ(©(îå½=‚ ÀùóŸÈq¹Ô<¡!Û]XT-æiª:PáŠâŽl,Nèºz¸òû“®ùô—ÿÅí Šªjùbû?ÇÎæ NÇØEÖgÌá]œï®bŸ½¿·è"’¦¸í ¯ü'"®»‹ºž.ÕË($“ÃPû䔳 ‹yMUS“ö‹»ºZ/}ë¤Ï°(rTnž×It]œ;´±þü?Å>»ºëHMG×Bþ5 ÄsËŠ""öÙûñ²7ók"z ~Ö~±ª–¿ò­‰ùl‡«sXœ‰-îϧ×Bþ´øîÎ7~èû­êŠs16cWŠl`€ÖõìÙ³úÛÛÛsss§§§×o=ùþ_0‚677ÛÓßÿ0ZÈ£¥õþ¿ÍÍMàkºÿ›ä®Ÿ–ûÿntù®îÿ ÿ€üòÈ ÿ€üò†$ÿF%öz½áLÅÃ($½^o²Pýo%g*†aµ`!éõz½É‚Õ ÷ù|>Ÿ¯þ 'óÔækãõ&ë{žõ†lEzWµñTÞÏï/w»XÖ¡Ï5)7ú™IQìŽqQËÇ"v‘“ò‘ˆdó…ˆË­(r\.{ìŠr®­UÙZšO—œ‹«³vÅ0*[K©ÂjÄ}®Ò¸lŠâ^ÞÛ[1ŒBj:š•`b÷ì´õæÞÞò Ï=íÕè½T!éi‹ë˽©¯¯ˆtJPó ç&»»¸òûñܲ›€!Òÿõ_—'("Ù|QDNöUUUµ|QD¤˜Ï=.iÉkOßå­¥Ã{Çå’ˆŒ;lÕ 9{ÙÜ}ÛK;‹ö…äíÛ¿“l’lƒì¾ —w€K‹bCb…¤9@ÎTª—ÓΆN…díÊXýj›Uáõǩ騦ªªªE§SÕ³^%öÖ/¬Y‡¥¢Y=_9îYÉþ.å5ÍcYÞkZ›ÞeÝ3™pKœ¨ÇN/­5V©¹Ç3«ñ€ž¦Èƒå?sL躕+†q\.3F¥|ätŒ‰ˆSóé’s!¾à”l4U<{ UÛ—X.PÕÃôÇÅ–Hî ŠªjÑ饖hØ¥´hÞóèÑoßrªêáþÁ‰IejÒƒì¾àÞÞ2ƒ‹€t–UµhÞ“[_˜ÐõõÐt\b‹N)¥ã[昅å9«’ Ç45ÏåâU‹…3•.#[‘ÝD@×u=`ŽÿF!5Ÿ.I0žËíììXžõŠ©¨¦ªæØM?•4[V ÓšF³Î…õ³9»¬{5N¬/8¥Tæºâ¹ÝØT÷:¸óæ?ó‚ªj1¿&ª*ƒì4îå½\¤²µ4¿vXÝT6é£4W5P#žr©þ6¦¯j´¬ "²¹¹ÙÏ9ñb_´íœeÞÕ`Sª¢¸#‹GóéÃõÍꎷ¶ò/T— ô^Ó×½é.²¾¡T}–a’€åþÜ-ÿYîß.OP4MÓ´`<¢(Êä”síðpmí0ˆˆÈ˜Ã)z)Ðxÿ©Å°qõZqûîbŸYM”§£Ùê–î]šyíXÓª‘´vk_Õ¸ð£p]ÚYÃòœ5æp6du8uvL`öÙû{³…¤7¦©ÙhÊÓú\H[ùÛ*àêsMåy×½kš ñ$ ´—Nèz}ÄØ695¡ëÕAWE±ON9UU[ß:i[ò¨|"RÌkª*ãŽÆ±hÃ($ëŸcÎàtŒõ(­e7MÓê£}.ÀKgyΪOÌ«gFçÔ¤]QÌQó”jÞôÖ|2<*7Ÿ÷\‘D@×ÛóSõ‚^í!ÎËÓX.kÚXóNëÞ¹«Oä‹-mbÕV9„ü×Û䔳!‰›6 ºÚgïÇúáZ¨ýéžýø´?¦5ÞWßr‘˜Ä§§}>Ÿ?¦é õëô]Jk¬QcíY †Šå9Ëœ¨Åüþ˜¦â÷gíÕ4swÑ)¥µݱÐõzfš‰U§×?ƒÐçóùý±¬8c·š©({9°þ@nK:­i"XZ ùë;­{Ç”ywqB×µ˜?ïIÔÛIJÅ|¶=‡Œî{gÏžµLÚÞÞît· ×XûðºžJfi>-‹=ÖõPÉ„çÓb~Øð(ïÏu|ÿ#G±Ï®î&ÆÓÂU2Ã(|œOìŽVøëîMÀ(F@޼çfMGãä?ÿ@þùÃç_¦?zH##轷ߢ†ª¼®[„F¦©ÉCjåýwh`¤œžžÞ¼y“ÏØžðzo™¦¶Äõ_Ýq°EhäÑljòÀh!ÿÿF%öú|>ŸÏçõ†3•ú-†QHz½É‚Ñ<%9l_VhÖÓëM ÃüÝ× ±þ¬ÜZ9xÞZÔ ¹Ò¼ˆ~cÀ¾â¥u›½Ü%4ÆÁÊ­[.—ËårݺÚ|ÚôsúPujÛîÅŸŸÇÓÍЭöD§FtúÐ/UãÎ{e£©+÷íÔºˆçr¹õ… ]¿Rõ';W ¯è™Æ®T·ót3ô®J«ošß7<Ý 5O|ºª½Ãh~³Üô.¯ù¿V%×Þ[ܺµò#9X¹õîÔ¼K^0›c¼ïþçöíèoMG5UUU-:m}²ìÒm6^©hý½kÏY=)l-µ zõ:D£=bÊg?ýÉ×^­ö×k¯­ö×Á£Oß_™{UDäÕ¹•÷?}4=Sñãô¡ªólØxfì¾í2™pcÓušÞå$U/¼ex¬?î# NÞ{òd}îË­§œ<èôK¸`î–µ‘צ½·½Ú–…·Wc°Ø=y{ö'?ýlX›ºGþóEUµèôRKPLͧKÎ…ø‚S²ÑT±©ÓÉ{=úí»SNU=Ü?8‘“ƒ}™š´+JÏ÷öÎŽ¢š`<P׿fEq/ïííìì´¿o6‹2§®…¦ãÛXtJ)¯ö†êPWÉ„cšˆçrñ€ªÅ™Jõ´ì'òšªJða€ñ·w?}ÿ“b±øÉûŸ¾{öø›?]xR,Ÿ<¹7iN¸'+æ;Œ?üŽ|°Þ¶SdÞ5ghø¯UÉ+ïʪù6åɽ¯Ëä½'¾­ûAõU¼°Laö·¢ôì=J|w7Ðu]$v#V}‘u·ÙãdЫç4çÙ—X.PÕÃôÇÅ~N{{³½:ÀÉ{Þøà›æ{Õƒ•oþtaÝ<ç<ʼñåWks½úå72/?F!Ÿ]x\2è¹c_b¹õ§”êM×iºe“V2áh¶z9®} ßsN‡FtúE8)‰˜Ge#F!5Ÿ.ÕF^OÄ–{æ@›£Sá=CÖ={k3LMÝOþs/ïźª®…üïíòYw¸ã"rT®÷ºHD\õw³¥ò±aTöKæb? ZpEÖ&T-f}[@óûæ³¢lŽqó÷Õ[½6]ëPÏq°_ªÞ.O@×Kû}Õ³¹'ùýþ˜¦O,ü³åßXÞÛë/2<ÊÌ.̽*"¯Î-Ìží³·'›»Ëjÿ(òê—ß°(gö9ÃÙ-K~íõ¯e1Ö¼<}ÅFÄu!ýOïnÓJ÷ž³>OhÆfVL²ys8¤{¯n¾WïÑNÞž•Ÿ|ï[.—k©µ·»:zn»ÐŒ­zÂÊæ §[6©Yxýr\‹¾yø‚ÐZ)˜Ø[vwO –cÛV{æy6GKáíÕ8Wÿ'ô•wåAýd=„ÍÞs÷òžysJK»¨ªóÇ4UmìzŸêf(Êq¹l|«ÔcA+¶™ØÂ„ž.m4l•LØëõ›EgoëT‡ãr©yBßõlÜ«ï!îÏÚ/倬ßaº”9!¯Î­?wo Û½ÕÀèhë+. ÿéÒm^æù{°^½¹;[{ý“Ú-S·]Ù;P.lÛY5i[á×í(ˆ×£[§FPwdcqB×Õõßßë½Í`›£KáçÚ½Vn=º=ÜÓúJNŠbŸYMt½¶òcgC·e„Åm^;ΧòÙÚpn? v©@PJéøúQíÖV<]çÂz< ëƒ¬rÏ:Œ9œÍœŽ±—¹^{ýk-So—^}®Â'ï=yRüÃïœ]lð2]XÿÓÞm^°jÅÎÙ«7ž)›®sMÞ®] ˜¼=ûéÏê70?ýÙ§C04xvj+^Þ¶³lÒ¶Â/F§FtúósÝ]tªª¶^}¿b½_)öÙû{{ñ€.]rjØ3ÚV…Ÿo÷¶ ÃÓÔýå¿dí¹êí)Nǘˆ¢Ø'§·S·nLÓ´úè_Ÿ vÉæÎR©Ôí­û÷‰ÝëPŸ!_¬®µ³vóâù r»èäíÙÌÚæSyº¹V»Ò~Ù¿ávé§?û´ßƒ¼½dK ;€/úìÌþõ¨|2@·ifs©b*zŽ+'ÕW4O㻢ôìQûè_{ýkÍç¹Z÷6yûî™°=ݼ÷ÁÃqeØuwqB׳ѳÛâ ÉdÁ0.êÜaÙ¤æÄæ-~¶<ϧótjäA§??s唎g*F÷ýÊIt½9ÏuÜ3Ý…·W£Ÿ¦>XY{ý‹‘¿áijSïÿÄdizúPUEDŸXØX1›Ï>{?^öÆÖB¾51ï?m¿'Å695‘.•š7Q? vÉæ«‰òt´Ö¯%‚ZL‹N9¢jÑiùîÎ7ú)§½-‰¾:C̯‰èøýYû ëY&ï=xt뛮喙þíOj;Á½O~ºåZ2'Þ›”É{¹¾åúžˆþÕï¼?›y÷–Ür{ð’Í~UùöƒâäÙ\+_æà%é§ÿQûLlq>½ò§»>ÐØmVÇX²éµba1 §³ƒWo?>½v¨6Þ‰ø<½ºˆˆ¼:·¾°rë–Ë<Ñ|õ;ŸÔo™š¼÷DV\.—ˆ|õ;Ÿ¬G¯¤ØgWw©éèZÈ¿&""xn¹ñÌøÜçË“”}ö~¢ì…ükRXß|ñKoö6µ_•¸~ ×õëÔȃN¿ˆ7?3¡àZLKÇ·&Wg¬ö«bjºú¾EçblÆ®(õÖqÏìosF¡½ðömÑGÌ8x”ùÉ~àúžˆˆèTMSWüÙ³g-“¶··çææønòàÃÉ×Exaî}ð»+ï¿C;<`ãi?^ésâp6ò2s[V‚Ï÷ôíÏu|ÿÀh¹A€«Èüì›e‚üw圞ž~øÑCÚ hdšúÅEgîÿ{¹nÞ¼I#£yª †ª¼–÷ÿ g#³?¿Äý¹Žñ? ¤‘1ZMÍó£Åzüoss“¦€s"®%‹ûÿ¸# 0Ê/äqNÄuÚŸ»å?\cÜÿ@þùä?ÿ0ÜúýþÃ(¤¦£Y &v#nE©ÿùÝoüÐ÷[šÚš#¿øâ—ÞT ÿ¦mº®Ú ÄsËn¥åµºÌ€KÏ(Š{yoo¹- v Žæ”Šèz ±ql-ͧ³Ñ”§y)©Ï ÅÔtÔr†ËÖi®´—}ý׿,“U2a¯Ïçóz“赤×ëóù¼ápØë5ÿeNlÿ½c!•LØëõù|æôÇúcs RUµètª>ùïùóšªJÐÓq€í¤|$RŸ¡˜šO—œ ñ§d£©bµŒTTSÕ@<·›êë5Û 1ŒBj>]’`<—ÛÙÙÙÛ[~S}3²›èº9 Éø¸6,®ÿnoo·L¹sçN5-ªZ̯բ£*úsÏZQúÄÂFù‚‚ IDATÄÕm†`boÙm¦´|VDÆ.ǸHé¨\1\69)‰®O8ƪ£‰¥®¯Û¡ê+F—«3öi¯½e†ÖÜÜœå÷¿Ýè4wãŸõ%ëƒaµ{ãί縚®»žüt4›Í"®úœÕ\¨ªR*‹Øä¸\‘q‡mðôY+Ä®¸#‹GóéÃõ­Óã&-Í0´677;ý«ãó–iñ…sÝ]tjkÚúÖ]÷¬]dÌá½Ô¿1Ï¢Qì³÷÷f IoLSÍÇM\CÚ&ÏeØ?ÿÏ6[˜ÐKéx¦b(Š}rÊ©ªÚúÖÉYnSÜž ¨ª–/Volœ.rT>i™nQÈYÞŒ$º.NÇX-)š%ÿ^E±Ï„‚ªz˜ŽoU Ã>{?Ð×BOïºî.Nèºóç=‰€~vO¢ëî¢SJk!ÿºc±qz{!õ'ˆýþXVœ‹±»¢(Š}&V-¡ñIa€+MyöìYˤíííNw 9>± g¢ãûßFËë´2õ/#@'Œÿÿ@þùä?ÿ@þùä?ÿ@þùä?òȸ®nÐ/Ñöö6pîܹC#@þROž<¡.Ö|pzzJ;@þ^ãoý᢬¼ÿùï ø5_F¨ûãì?ü¿qŽÿÉïý>­ùïÊxóoÿMADÿÅ‘¿þ×x2éeúð£‡ÃS™÷Þ~‹-Âþ3â8 @þÃH ÿ½tCr%ýôôôæÍ›ÜÐÉþ3Ê8 p8Ëb(óß å?´ÛõÃHÀQ€ËÀø†2ÿ1þùä?p!žë,k…¤×ëõ& †1 å\ª+QÉë“ÿn¨çøhSú$ ưíWÓ/vßcOnÙ¼Þp¦bŒàê_ÆÞ`$òßõèþúœGQÜË{{{{Ën…ûÌ.Ý_}®Ÿãg —Ðõ@<—Ë­/Lèz6šêóä÷bO–ÁÄn¤ËþÖR™>ë¦(îÈnb”?pȨd–¦£Y Æs¹ÝݘÄSçØ Ï³3 Oê¢gÈ”¨ Ió]u8S1*™°×[{]Ÿ'“ wyÛm•LØëóù,Nl ï¾`ã+F!5ÕTUUµètªþ¸q4¨Ó<ýu!Y?HZ¡ååx{=pþûB?ÇÏy^ÉæoÛë«e·ïö„Öé Tyk©ÓnüXÜiít¸ìžYü8}¨ªÁD5[+Š}öþYúéÿ¸nßÎÝõßZnÍ>÷´zG7½´~dµty•ú²Þp8ìõz½ÉÇúcz6€üW+NÕ¢y9¦r¸šŽKlcÑ)¥t|«Rë#TUÛ—X.PÕÃôÇE‹Þ95Ÿ.9â NÉFSÅþ ï²à¾Ärë N)¥?.šã]×õ€9¾b¾ÞÙÙ©ÅÕ2OK%+™pLSñ\.PµX8SéôrìdÏ™ÿ~í¿Òåçyó_1¯©ª=æ&6÷1s,¤}·ï9]ö„J&Í:Ös;;; ôà겿©¾i¹Çö<ÜFnðÏ(ä³¢ëËâ¿ý×–;ù» þûÀö¾¥ÿ=­˜ŠjªˆçvcSýïi- `DóŸ®—9¦¢ëÄêŒÍ_)•æ ÍØÄå èºdóí·=å³"2îp9ÆEä¨\ŽÝ ï¾`hÆVéi{EËÑ ^§ÊÁ~©z qyº^Ú?èôrEqqyeàü÷¹QÿÙ~ôÃN³m?úa㜃Ʃ˜ßïiúÄÂFÄÕ´õÚÄ=÷sºÈ¸ÃÖ×>ÓçÁÕïnܾ”ÕáÆ…¿ç9®­í.¢ °œþ÷4è”D×'c=::ËWi_–ý¸Ò†ôù_UÕb~MTÕÌv¶Ë_Шd–æÓ‡ª*ª*½’ŽË¥æ ¾zŽÿ5þù/vþäïû~µež±ó'çó«G½†¡—¶3rŸ›¸ÓlmÓÙg®€ ØFçî‚Î[Nÿ{š9ý,)Þ2ç[ù¯Ó1Ö:iÌá½ÔýÜléÜ ŠaT¶âé’8×Cåùh¶¿×’R÷Á…å?ÙÚþ×3wþnãŸÏþäÂ6q§ÙÚ¦Ã>Ã^*¢(nOP4MË#n÷Å×ç£œ¡ÜÓ ½—òüïQù¤vßÕ¸ÃÞ|í@Qì“SNUÕÖ·NìÖZpÌá¬Õ¤ã»Û–y,^+_¬®ˆsjÒÞá"ÏœÃç_í?ðGÿÊüïüÑ¿²œáBSB§MÜ´WtšÍœÞ¸ó ´Ï RÏ^Åríx¸ìžéº»8¡ëÙèRýá†B2Y0ŒÁ·‘õÎp®.èœ]Yÿ{š|ÍéæÍ|ƒ†æ–eéÙòßÀöãÓþ˜V¿×ª…}ö~< ®…gëGÿ *Š}&¶è”ÒZÈïõ&‹âŠ$‚ªªE§×œb>”W[ã<-¥™¯¥Åüþ˜¦â÷gíìLšÿtËŸþÉ£þÉ£Nÿ½Ø:Xnâ–=§`öûìýD°´ò×÷Æ ßgÚvcë=¶ûá6‚ûìên"(Õ­ãóùòžêHÛ@Û¨ÓÎpŽ.Ȳ{é³ìO3ƒ¯óç=‰€>ØñâŠ$ç]À0ö„Ïž=k™´½½=77w_5m~êA¶×§šŽííí'Ožü¿õw~Í|óoÿMDDÿÅþãìoÌÝ=Dz¿¿ù±ù­ó×à‹Ò £šÎ{žãHér¸õ,üÚ-ùÒÝûàwWÞçlÐküUºLì-»;Í3<ûÏõÀQ€ç‰ßÿ†aôÅ 0ˆH6:-þf©ž =40ÜmÌ+¿ºsqƒ±dàŠ{¡ùÏü¼€eZ½|®úEϰt*ÃôÞÿÃPæ¿/¸£ü%;==ý𣇴Øòð¢ò7˜¿Tï½ýÖÍ›7¹… ì?ùxq¾`üïeãfs°ÿä?\ºÇñŸi„:Æÿ ÿ]s¼“¥íhŸÐÿ®-î’/’J¼\|ð^$Æÿ^¦;wîp—4xÁÿ ÿ€üòÈ ÿ€üòȸXÃòý~ôðœÞ{û­+“ÿDdåýwØfçvzzzóæÍžß.Ëõ_€k¢Ï ªä?€ÑBþ-=îÿ3ŒBj:ª©g11Ï-»•žåš f%˜Ø¸…†}ÿéz žËåÖ&t=M Ã2ð%½^¯7iù_\¥üWesŒ7D=_M²`Ô‡ UU‹N7ÄòÖ’ÏçózÙŠAF¸Rù¯˜×TU‚ž7Õ7—÷övvvê#‚EqEv]×õ@ã_UÕö%–[_pJ)ýq‘æxéúúü?UÕb~MDô‰…ˆëì6ǸH©ó‚ºÍØDã"¥l¾‰,ïí-ÓêCžÿZFõDĨd–æÓ‡ª*ª*:Ípeœçó_ £²O—Űè¤?€ëžÿDŽË%wØ'Ž9œ"rT>éyþà æ?EqGAUÕ¢ÓëGN1Ÿù-Šm&¶è”ÒZÈOÂZ7zF=Ë'6÷òÎNÛdûìý½Ùú_ož-xVÈ›<ÿðRñýoä?\_7†§*§§§~ôM0ùキߺyóæÊûï°IF"ÿ‰Èéé)Ûà²qÿùä?ÿ@þùä?ÿôÍ0*™°×çóù|>¯7œ©ÏWZ!éõz½É‚a´O÷5HŒkÓzõv«®~²Pýo%gŽõÇ–mÒ¥¹ÎÑÂ}.xý6ò€m-ͧKÎ…õÜÎÎÎînLâ©AƒEÿt=Ïårë ºž^â ]xxêDQìŽqQÕÃò±ˆˆœ”D$›¯–\.;ÆÔ7—÷ööö–ÝŠò"_·M‹®Ë&@þ0°rIDƶjš™½¿ìVi¬ŸªëgîL&Ü2XX[š^Z?êù’6ÇxóRÃQgù ôz“õÇÝç1§‡3•êH\S­šVÁ0 ©é¨¦ªªªE§Sµ•긚f FuŒ¯6DÚ\\ž ˆdóE99Ø?TUUÕòE‘b>ô¸ê>Ö·W º¶–,Ç_-ëÜi‘öué;“Y,Xß:Þp8\Klé­%ÉYÒÜt--ð¸óÈ(ò€Kä ŠªjÑ饖äQLͧKÎ…ø‚S²ÑTñìPWµ}‰åÖœRJ\¬ÍÕT5ÏíÆ¦z¿d1¯©ª=oªo.ïííìì´ªªÍ{öö–{ÎcN?\ MÇ%¶±è”R:¾U1ŒöUPwd7Ðu]$v#fÌí²šf\æ,Œçr;;;æ0^ÓêŒ9&t]ŽÊÃ8.—€ £R>r:ÆÎf´¬@§&=Ç"ÖÅ‚9Nôti„Á¶©U!†Qhiº7Õ7-WùÀ å^Þ‹tU=\ ùÇÀòYw¸ã"f¸1ç×õ@hÆVÃËæ †a•ò‘èú„cìllϺ›Pµ˜ßïiúÄÂFÄuö¶¥t=hœ¡Ë<6ǸùûêŒÍœ§T>îº uÝW³±ªªE—¶*–ÃT¶É)§ù¢Å|6è‰xº.Ù|ñä`_¦&m½7A{“žc‘~Ö÷l„ÖJÁÄÞ²»S#ô¿M{¶d—¦SwýÊ8G"@þð¢# yS^Ë©ZUµ˜?¦©ª™¨:;n¼ˆÜ=µT‡‚îÏÚͫ̕LØëõ›¯Ò)[ô1O×ÄÙcºÏ£(îÈÆâ„®«‡k!¿¿ý™‰Ú-€Z>•Ï=.s8Eä¨|P.;ì/6Ùô\_]Äsq3¡6Ͷûݦ]^½gÓ ÿx™Å>³šèzíô?æp6ĵË¡1ŒÊV<]çÂz< ëçž§ƒ~V¡¯ÕTì³÷÷öâ]D,Ÿ™0oÔ4-èq)Š}rÊ©ª‡kkZÐãzÛ°ÿM溻èTUm}ëD.l[[Ò³éÿ¼Ép¦:àgÞ–çtŒ‰ÔBL="tÏŽnó&Â|±zÓXß/ÞÏ Óy¢¤ã*ÔçNºÌÓ!4E]—¦;úÎJÐu]˜yÏ695¡ëÕ‹§V9©^þ£UÏEZÛLlaB/¥ã™Ša¹`§mjN7+Ó<½Û«77ÝÙêð,0@þðrDbŸžöù|ÕÛòVgÌK–öÙûñ€~¸êçyR×ÝÅ ]×bþ¼'Ñÿ(¢¸#‰ ªjÑéõ#§´?âÚç<´¯‚¢Øgb‹N)Õov칚õÇ`ýþXVœ‹±‹Kºæ-€õhhþi•YÛ+ÐOís‘þ7™¢ØgBAU=4Ÿ•±\°Ó6uÝ­VfݱØ8½½˦k^Ìä®8åÙ³g-“¶··çææNOOi¸¢ÌÏ ÉJ'v‘Õ%Ñ1þ0ZnÐpý˜ŸÒ²LC°Âøùä?ÿ@þÀpëñüï‡=¤®Š÷Þ~ëy󟈬¼ÿM Œˆ{ü.‡<À!OU¯î‘›7oöü¾>ÿïF ‡<À!OU¯7îÿ ÿá1¿Ê=Y0š§ôõö®ì_ɄÙJ¿>ÝZÎ¾Þ Ý7ºìl/íõ6íÀ²ß4ÿ3_R‹uªÀ ­Ô ßÿ6 œGë©‚‹ï€F…¢Ø'§$~p2;k7§œl­-Æ–éЗ`<÷N_ZhT2Kñ­ÉÕûÕØi_\‹]T+1þ7 ÆC1Çzªhñö¢’ ×ÞF„3•³7…¤91Y0êo5ꃈ†QÉ„½oq<†mrJö*Õ#´r°/S“¶N¾åCóï­G=FJug¨í9õݦÃéÀbW)$«»\㹨Û~esŒ—ÊÇ]½îûùyêÙU½´d¡ú*±ÎG¥ˆµ“rki%òßhž fbŽõÆ«Àæž—ŠKlwwgg'·¾ ék{U6•x.—[_8ZO&—òžÝÝÜúÂQ4eÎp²/‡vwvvvMkoG–_†.žˆˆÈÉYüë|àwÓ~Ôcôd£q‰íî6î6ÅÔ¼¹cìÕNÅTôhqcgggcñ¨¾«T2áuÇÆÎÎÎÎÎŽ'ÍöÚ¯ £²µ´îØhD­¯êu7h=ÏWše~írTF!•x.ײ"çj%òß(&À¬oUv)Eq/ߟ­Ûãgó:ÍýÉæ/ýôoÇj¿×v¸ƒ}qŒ‰ˆˆËÌæ †y Ø €fü3öÎ~—“GýÈE½˜ßß6àL˜×ÏN…|6èq5å˜|6š±™'sWi~vEÁ®û•aT¶–â[µkzW¯Ÿý¼ÿzvo±N¥u8Z»•cg6_l­í¹Zé ÷ÿÎÉÀ å—¶NVgšßsLG5U]žêäq‡­>Kãï¦ãr©¤…ük"ÍK²w}“S?¨ÌLì‡Vm½ü.8êGMëÝlÏøË¥q­ßýª˜z®XóÂêÙ«Å:•Ö)}v<*Å>³šHMOûT5Ï-»• i%òß(E@÷r(Þ: 5¼{ˆJbwÇ­F!5ﯘ1‡3_åiàŠÀ¢ì{î7]3ôÀç¨G§ã9oݯ £ÏŽ{"ÃP½·ÿ÷<*Íg>"•ÌÒ|ª°qIñù[‰ë¿£Åuwj?¾~töžÆYÓ>)õ"ûäÔQžû€á˧Ø'§d-¶6Þt ¬çT>©ž²õ躃9Æ›®K*ŠÛÌ®oˆÈÉÖz6èq+Š9±>[1Õm¿ºÀ»ÉÛ«×k? ž}¼ºui–/=èéøBZ‰ñ¿;\í³±©ýùRuŠ$òþMDŸXX f£ÓòÝoô,Ä>{ß“ôúbªˆèz ±qI15÷ì2< ÛäÔDº)þu?ðÅÙ•Ôôô´87Áù|§£žƒýZËÆüZý]t:5¸"å¥i_L­ï®H"?=ï[3§¸Zf‘@<Ìæ_ÌÙ¤¥z®Æ£Àj?￞mÕkm±ÄnIJ4Ë—î~T6^$rn¥:Føœ­¤<{ö¬eÒöööÜÜœù+~ôpåýwøº`DpÈòTõÂ]Hb볕D¤ÞP‰®×FKïë¿§§§fœ0 8äyªzñæ^ý×ÿôûÿú å?yïí·8B€ÑÁ!pÈSÕ+ªÏˆÌõ_€ÑJóä?€k‚ñ?ÿÈ4ùä?ÿ@þùä?ÿ@þùä?ÿ@þ ÿ€üòÈ ÿ€üòÈ ÿ€üòÈ ÿÿ@þùä?ÿ@þùä?ÿ@þùä?ÿÈ ÿ€üòÈ ÿ€üòÈ ÿ€üòÈä?ÿ@þùä?ÿ@þù—æF?3}øÑCZ `$òß{o¿uóæÍ•÷ß¡¥F"ÿ‰Èéé)Ípmpÿùä?ÿpõÜ  ôéÊ}Ô{o¿ÕøçÇ×ù£¬Þzë-vQä?ïþƒß¸*Uý'¿÷û£’®w´@þð2ýõ¿ÆM#@þ@þÿ\ÛüwC¡€ü`”òã@þ@þÿ\ßüwƒüä?£ä¯>×Ï· a|ö¿ùíüg3ÿûëW¥í¿ÿè——~ ­ÿí4ý…1Œ§?~ø£ÏšªôÚ×ßúåW;WÆ\¤,Žî³ùÀÉ_œ7ÿýéÿú·ªªþáÞþ×_ú•öü§!"b|þ…þWMaËzú OÕÌgf»=üË_¼ãÿÊ+ÊyK#  ÿ¸îùÏ0žn}ôï?øŸ}'ùÉGÿϯ»~}LQDÄ0þôÿjDSUÝù•¯4ä¼NÓ_úê+Ê«¿üuÇgŸýÙ¿=þʯ¼*"†ñóRnûÏ®tl™aLŽÍEE>ûÑC©ÅÊ…ÀÅâVƒä¿Ïóüü³ûÿÕoþý[ßø»_ùóÜËÕéÿ(¢©ê›ÈÿËØ´™+?ï:} ŸËj‚±W_3 )?}j"rüãí?ûË/}uò«_’ò~|Ü>{Ë Šòê/¿õõ× £1êõ,È^^þûBôçÿû¼œù½ÿÎ]÷çºí—þ›¯ªjéÑ?3§ÿÅ‘èºșÿÕ/¼öeã‹ÎÓ}ÝІñôiYD¾ôÊØ+_‘¿üùÏ c úœ.× –ÿI…ßÿè°$¡_û¨6åðÑ?ûïÿ‡_Ï~V‘qÛßÒÿê C¯ç¼NÓ‡êªè—^y¥ö«¢|vðýÏDQä/þs‘ÿ¢mÞž3´Ïó »ò€!ñùƒ MƱ¶ñBÿçþgWªþ/s¿÷ïvüt6`3Û}þ…ñ¹ôñûĿ㧟)Š|é•WÅ0^yåKbüeÓM{̓w=g°ž.× ”ÿôÁ~ ¿ÿ{_þŸþÞ/æŸ_è¶ÿúW¿¢ªÿîOþôéºËuGTõþ´ ÿ›ÿã½GªjŽóuš>èK_ÆêÆÓÿ¨l¯}ý—ÇDDQ^yõµ/)Êg^úO–ów˜á•ê…Þÿ$ýä?/ÓºÑÿÏç_<ý£þÓÿñ[®Æ‰ÿå/Ý~]×ÿáÿâ·Â¯ëúþÿæýñ¯ü£¿«ë"¢ëƺÑiú@?¸ÖŠòÙÁ÷¿ÿðáÃïÿ ü¥_¼Ó0P÷ÊWþÞäkÆÏÿü_>|øðþàOŸ¶îµÍ (¯8'ñKò—þ/¿oNéY\,åÙ³g-“¶··çææNOOi>üèáÜÝ_¿*µÝüøÞ{û­Æ)>|ë­·®å¦¹Æ«àܺ$:îÿ0€Ï_Èsµ€KEþ0€‹½® ÿvŸ“ÿ€ü`¤0þä?#–ÿ¸ÿÈF ×€ü`´ìþ¿Ÿ\éú?|øä?ýjù8½+‡OÈßÿ@þùä?ÿ@þÀð°þü—ÍÍMšàZRž={Ö2éæÍ›´ À5pzzÚ>ñFŸóàzàþ?òÈ ÿ€ü€áv£Ïù £šŽjêY^ ÄsËnåòjf•­¥ùµCUDt}bqcuÖ®°ÁžÓ`㺈çr¹õ… ]ÏFSøÔð—.9Ös;;;»»1‰_âËÿº²9Æ«)­ôz½Þd¡ôz“f>+$½>ŸÏçóy“3ÉeÂ^ŸÏ—,TÓ[%¾ýî?ý¿Â^¯7œ©"b’Þp¦ÒïŽË%wØDDÅ>{Ù­(Ö_±±·oÿN²±äJ&\+¹û‚õ‰ä¿6ż¦ªô˜LUµhÞ³··ìV”J&ÓÔ@<—‹T-ÎTÅ>³šèz6º”©F!9_=zð›w¦œªzX>9)9§&íÊÙå]Eq{‚¢ªZtzÉLrg/žšO—œ ñ§d£©âÙš¨Z4ïyôè·ïN9UõpÿàDDNö¥Vr÷Íú³C€kÏâþ¿ííí–)wîÜ©G¥˜_}ba#â)Šˆ®—ˆFå`¿¤ëAKD<=›Ý?¨ÌÌØwdcñh>½ò§'6V]"b›œšH—²ùâ²Û}\–©»¶–u/ïÅÅÓ×Bþ´HìFÜŠb…|VDÆ.ǸHé¨\1\æ’õjØã"‡¥ò±aÈÁ~i>‘ýqÏý×^ÍËÇåéh¶šØÆNÑKÝb¨yíXÓ´|J²AÏru¶Þ ß} FÀE~þŸéTUË«÷:î½+‡vsë N)¥ç«OòÚ&§œ’Í\o£«&³B²þDˆy»¡Ó1Öðë['½r¨hšVýësAòß`ì³÷ã]‹ùý1MÄïÏÚͧnóžÝe·¢ØgWAUÕ¢K[èÀ¬´Å?Qw$&ñéiŸÏçiúÄÂÆêŒ%Í—8\ 5>ÉÛÂ695¡ëº>Q~l¨[÷®=åÙ³g-“¶··;Ý-x±ŒJfi>] &ö–Ýl € Ô%ѽ´ï3ŒÊV<}¨ªÁöÑ?\š/ë…Å>{o–-ðb©4ùä?ÿ@þÀP»A¼D~ôF®‡÷Þ~‹Fª>í:m‘«u²¸–ÇÂõÛä¿—€õ»|ûIDATlåýwhàª;==½yó&_ ><}ÚõÛ"Wådq…k¶ ¸þ £56À-Ï& ÿŒòù¯aT2a¯Ïçóù|^o8S1^då £ôz“£yJ²`CÕˆf=½ÞdÁ0Ìß} ë໤Ãÿ’zÂÆŽëzo‘ú:ŽÂ*Ô¡qÙ;ÌHç¿­¥ùtɹ°žÛÙÙÙÝI<õâ%M]¹-¡ëx.—[_˜Ðõ«X/øðïyâ¡'Áhx9ù¯\‘q‡MDDQì³÷—ÝŠ" ã‚ï« ÉÛ·'öÖÇ J&ÎTª³u[вïSU-º´UižÞòfÂ|'ÑX”9=œ©•LØëm¼l¯C»B²6ê™,´öÎêiÁæ1Œÿ˜™žæ'0ZlŽñ¾»”Û·£¿5ÕTUUµè´õy±KOØxñ¡õ÷®aµŸßZj¹ÂÓ«‡F¯Å‰Ù µ \õ5íq’z¬?6ÿÌdÂívÙg¥ëwhX¶XÇíÒ<ñ±~œiŒF%ö†3•³j©£Ÿ³y½&ÓKëGä?“'(ªªE§—Zú‹bj>]r.Äœ’¦ŠM=TÞóèÑoßrªêáþÁ‰ˆœìËÔ¤]Qz.¸·WÍ— ‚ñx@=\›o˜YD޼··³³ÓþNÂ,Êœ~¸šŽKlcÑ)¥t¼ÚuvªC]%Žij žËŪ«ïR]ëi¥˜×TU‚¿ø œ QS=ü=nEéÙ¥ORÕv[_pJÉl·K=+]ËCãMõÍö³Ü.íßTÇ&b†œì—¤”þØlózêèól^LE5U Äs»±)ÆÿªÜË{ñ€®ª‡k!㛡|VDÆ.Ǹˆ•ë]‰®W=ß—ÊdžQ9Ø/™Cˆý,hÁY_˜Pµ˜õíÍo²Ïв9ÆÍßWglõÚt­Cý}ØÁ~I×—ˆËÐõÒþA_õlîvc~¿?¦é ÿlù7–÷öúŒ®z¯ÚpøoD\Ò¥ôî ­tï ëó„flfÅ$›7OÀÝ;j3è\>­eTµÿ“TµÝÌöÌæ›í.ú¬t].-f9ÚÝ2±Ú„ûÃ(~œ>TUUÕòE©§Ž>=è”D×'c5ÝügF@ór}KÓ«ªóÇ4UmìJºªjoR”ãr)èqµì´b›‰-LèÙèÒÖICP«dÂ^¯ß,ê<{a§:—KÍú®gãÑ^}›rÖNìFIÛá]J—žð2OÕƒuÔW‹¢¸#‹º®®…üþÆT}îu¿´³Òu=4,ZÌr»Xo,3f”ÊÇRÌg ñ… ]Ï®oœ¥Ž>½ãÆ[ÝFèjlj}f5Qkhs86¤Õ»@Eq›×Žó©|6è©ÍÐ{Á.J)¯^›7ŒÊV<]çÂz< ëƒ¬rÏ:Œ9œÍœŽ1ÎiÎ麔öžð‚U+vÎŽúêE@ûìý½½x@—³Çkοî—yVºž:µ˜Õv±˜Ø3œS“®™PP¤´°UOœÍŸ#ÿ%kwPV/Ø;c"ŠbŸœrªª¶ÞõM¨Ùðš¦ÕGÿú\°Ë{5g©Tz¾ÀÞ³õòÅêZ;k7/žwç€ÑÕw—bv™Gå“zBóh.eÞÃ4xÊ'µ~ÜaW”žäêÓ꡺. 7eÖçqE]èìÖÁe•®¯n-Ö¸]:Mty‚fÌ0)—'¨ª‡kkšùÿ>½³Y<÷Ató_$&ñéiŸÏW½`¿:c¶}ö~< ®…º<¯d›œšÐõê5õš~ìò^m5<ëAUÕ¢ÓëGNéòÐ\»žu0gÐb~LÓñû³vÎaέŸ.EQì3±E§”o¶îÙŠˆënu©uÇâ€ÃNUûñiLk¼¿íy:êaã^Þ[_˜0×Ålÿ½e·4<|ê÷Dzâ\Œ pvëÍ/í¬tMßY´˜ùxuËvé´±dÌaÆŒ©I›y0,L4üÙ÷ÙÜuwqB×µ˜?ïIœï º’íÿìÙ³–IÛÛÛsss|‘ù ðáG¯Ê÷IèâÞ¿»òþ;t›ÃÓ§]³-r…N×õX¸¢› K¢ãûßF ù`´Ü  ^®ÓÓÓ?zH; O Ë&xa¸ÿï%»yó&\›Ó0T}ÚuÚ"Wëdq-…«¸ º$:Æÿ8H€>†Åhmîÿ-Öã›››4 Àµdqÿw¤\ýÞÿÇM×÷ÿÿ@þùä?ÿ@þùä?ÿp~7šÛ0 ©é¨¦ª"¢ëÄnÄ­(ƒ.ž•à  T`c% Tá ¯*ÀÕËF%³4Ÿ.97Vglr²µ4>ZÜXµ+}¦(Eq/ïí-_ò*Õ_… Ðn€ë¿ÅÓ‡ª ÍØEQì3¡ ª¦?.š9/éõz½ÉL&ìóù¼Þp¦bÔÇáTU‹N§ †QŸ­`f™…¤×çóù|>o²PŒíEÕ§ûj’ãkÛ©£’ צ7VïlÁBÒ\§~f¸ùÏ0 ù¬èzÀãªMryº.Ù|=©ª¶/±\<`æBEqGv]ïtáµ’ Ç45ÏåâU‹…3•³j™E­/8¥dFLsTogg'·¾0¡ëÙhêÁ˲Ã(¤æÓ% Æs¹½½å–ª•ÌÒºccuÆ®(=gr×···[¦Ü¹s§Ÿ²t=š±‰xz6›Í".W·@Y9Ø/ézÐã’ê"û•™[SQŽq‘R6_ˆ¸Îb–Í1.RzÎõn+DUµèR5ä5ÏZLÍ—C»‘Æéí3·7ÀË577wzzÚWþ3çnüÓrÉçv\n q¥ò±ˆ­Kd¬d–æÓ‡ª*ª*ú9_µ½EqG6æÓ‡‡k!ÿZ ž[v×£ÞÑúR¶L,×r^§™[Z àåÚÜÜìô¯ŽÏ´d>Eq{‚¢iZ¾q»ED¤˜×TU·¢X\‰u:ÆzÔjÌál‚뺈aüÿíÝOh#×ðß )Ú‹Öªƒ˜C/aTbªC\iEQDi$R³‡.iP»H€2{öT€Eí ‘Šº%Ë&ÈI‹2ÙZ÷ `ˆÄ^z*¸5+ßÖ—’¬3ÓÃŒÆÒüÓŒþ8þóýàƒ=žyÿçÍ›7o¤Á®Xî—­¦ûw õé60¾ÔN3ÕÞŠ[/”Â9}æru5Ñ«›ùÝÎ!†YÌ`þ<¼ÿÁ¯eƒ²\¯îEQ»Õº,³k£Ïxû'ÃqaÀïcm§nÇ0¾•UŽe¥VG;„[]ñ9­¥Sç þåYòëŸ+Æey|ð'sj†«ô7Tìw¸<|þ ãKmøKÑB:V!"Y¶ø\•C1Zé±²/æxu—²‡wË•t¬,Çÿ°ÿóÑ}©±„˜D$ÇÅ”Ï)v&”+&$A*D9ŽØžTˆ’!ÀÉY° äóÛïhjH\VPßó°Èx¤Îýý÷5ãÎhFp…0OŸ>5lÚÛÛ³[-hŸ´p©8Œèðýo7Ëss åb¾Øf‡ù?Œÿã?Àø0þŒÿàòxEs÷ÞÏ+¨·^å €ñ\›o¿1{ §§§KKKž¾’ &Âó_¸¼æ8ÿÜPžÿº¼ ÃB €ë ÀÿÑï{×y‡?þù>ÊàC'Ó;Ú|áMúÓã{+( €ï›·ç¿?|þ9çÃþŠÒÞŠDnØj+Ó%T *Ùj+Ê" BQµõ±ðGc´‹ÝœA—)œ:;Î)™1ö9Ö×÷Nioyª‘ÙÛ¤þçò†bÔS¢þ+Y¯ CR[šs“ë*„M× ˜KiAÉ»É\4žAm=2l6Z#¼¸ùòAºòž.oó?zþ–Ûyžït:vGÉr¼xã©SŠê…Rø bËΫ-Ô)Q´ÚaBùf3¿¸’è<¬ôX–•Z\(äíP5ƒ–™ºŠ\Ö×%¿– uÙ¦--šÞVÍMZQÚŸ±l¯ü°“Êkí¬Óª{½37¹Ÿ ÏŽE_ħëÀ¹» v7î–»\öþvÊÇ(Ê`w£ÔÞÎ…ݵjŽ6õŸÌãÌ£¡1\Þ®:ÿûúÌüÃó¼þ/O‘z'ªOZ”¢‰eYV*DKcÓí-à ‡ÕáêìÝðŽvP[_¯ ¬ö´í«Ç1”åzuw0Û%t4åê­özm %p|⇈ú»£÷âv Ög}¢Õc«Ù ÓvLQ_ÚÆAm=1O³µ·†·Úæ™ ëßÛ[zç‡T®Ë¨õ ­Ú–„Xl¬ñXÆbN¤‹Š› ÊToi-yP«sAY^ÐÄ×Ò»ÈNÀ.%nÎYC#q®ÐZmÝp–B°›@µí…† ÉœTËHÍý›eõMHç0_ÎÛí=éw‰(à_VïR|©|ˆaÌù5?Í0w×^§ 6+?ùû\ÙñßW_Ÿ}õõÙKá_ ¿¨ÿNDŸ´Ô?>éQ"¬ÞûvJwË].#f8ªJ† åŠqY6Ll°¬Th…›Í¼áŽÙt¸oe•cÙÞáÑ ÒêŠÏ*"»É¿r äWV9¢®ÆÌ%ËJ…V¸QÍe¹WIGEîg9ê–Åóñ%ËJ‡$4ĸ:!d™µáƂIJq±q ¬Ž—ƒÝvLQ_Ú0ën¹K ±ÑØßß×ëhP[$6.6bœ•„õÚÀeY©! jë…:—©ž‡é>j}úMoKb£¡ÿ׋]"ÝTÜlét‚e¥ê®ÞVW‹›×öXz‹íÌSbV)™xΚ‰s…’Шf8êêg™9—íÓð§]R ‘Úõo†X̽]¾¦8Ë&NËJ…è†ÝÍŒ:u½¿¿ßãäxú{òåƒô£_Tïü\€«;þûæì«oÎôß_ކ‰è£Ïþ©n×ÿeîׄX,–®tÅf>¤öû­:ü¼?@DÇ}»+«,Ç‹9Þ|Ù0¾ìQ·ÿDQG‡]õ&×MDêä_v7 "= õ„XÌ0]¡¥|ÙPßN.ëIÉ]:¹L|8.kB– V”Aÿ˜d9è¿Ej€zÊm¶{dÆúbY©°q>0R _–ãažÔ|u&›ôZV×§(k';îŸuZËRÀïcËë wZm ߤ홡¾†C™\1.ËêHß³ÕÑòÅ­®øF]ͯCìêá£mÀ}Ô^¦¬y¡gÞòÊ*GÚ#¼…YDéyíô†§¥AmíÃ…eMÈîœuh$.+Ô*WíÓSñZ:ú7ÛÞÀt6MȯåûŠÒÞ¾§ÅbUõ‡å.—FnÍÙćøÜ¸ñŸú|gçý÷FŸø¸yôÃ0¾d:Á²=u½/µ#Æå^%­¯ab_RÈrÔu^›¢2®^Rƒ²¬-qsÜstò/»Æ®ËA×ëi´B.ÆšâmÊC1¤ÑF– æ×²AY–„X+\}Èh·ÝS ÓÕ—þª`,&Ô‰Ë Iõ ¤î) ±˜ Éqq'å;ŸQ¤n%«ú³±ûR;ÅDW}¯Fä>j÷ìyaÆ—Ú±]A5K‹šx¦ÌXzSt¡|³š ªiP \_WêЄ,ÏYçFâ¾BÍ!¸lŸn:"ÛjRÿfטó5Ef˜PN 1Õj!˜¹¿m¬zu©Ÿú8~4Gî³9ÉÊ=<ü¸˜§OŸ6íííݹsçôôÔ°ý½>þeâ×ÎÁíÕ?ÅW?\Wèá{ÿhÀŵ–ͷߘ=œ{﾿ùöæKLd7¢#¯ëÿö꟢4nto‚Nàêó0þÃ==À ‡N`˜ ú€©Æîžž¾÷ÁÇ(ŒÿàFxëõW—––æ²0þ€«/m\Z,Šã?Àø®ëõ<@Ñ\Kßÿ±´´„r¸Ü~ÿÞØ¸Æ°þã?Àø0þ€«çÿ½Ò³£'¶þIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/beanshellsampler.png0000644000175000017500000012660412032647206024407 0ustar ebourgebourg‰PNG  IHDR ù‡øKk[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì½ ¼ÎÕÚÿÿ—Šd2ÏÄ †HDJR:梢ÌQ4 I’2•¡Aä(S¦H”cˆÈ¬Td9æ1:†”Ùïý´žÿêû|§û¾·½Ùöþܯ^÷³îõ½Öµ®õþnϹ®µ®µVŠ—ûïÔ²áÿ§ˆ€ˆ€ˆ€ˆ€ˆ@ò&0p䔫’7^D@D@D@D@Dà °l ð@ " " " " " ÿC@«ú;ø›€Vþf¡’ˆ€ˆ€ˆ€ˆ€$s ’ù€†/" " " " Pxð7 •D@D@D@D@D ™PxÌÿ4|ø›€Âƒ¿Y¨$" " " " Éœ€Âƒdþ á‹€ˆ€ˆ€ˆ€ˆÀßüÍB%Hæ$ó? _D@D@D@D@þ& ðào*‰€ˆ€ˆ€ˆ€ˆ@2'pu"ÿÁ¿>éÓ§Ïž={ªT©Œµ_~ùåâÅ‹ ,ئM›XíwµuýôÕækƒ¯dUFcdu-µ" " " " ÉŠ@TáÁ|0uêTÃåꫯΒ%K… š7ož&Mš„ƒµ{÷îlذÁvQ©R¥=zðs×®]«W¯>sæŒ}}ÁÕÖõÓ¥'Ä—d‚þ 72A»–rdE ªðÀÉ”)SñâÅ÷íÛ·}ûöÏ?ÿüÔ©S;vL8X¯¿þúÖ­[säÈQ³fͳgÏ~ÿý÷çÎK¸î|5'| S¥ˆ€ˆ€ˆ€ˆ€$ƒ¢E‹¾öÚkÑ¡C‡7þøã aÑI>±åvíÚÝqÇš6mzþüù„ëÑ«91ØàµJ5" " " " "pb¬7Üpá+ ¶fÍš5cÆŒùÏþ“6mÚÛo¿ý©§žºæškxÊ”ÿÂ… ùå—;w²€ì R’R§NÍ£iӦ͟?¿páÂO<ñİaÃÖ®]{óÍ77nܘžÒüª«®" ­ ¨¤†oççðáÃÞ¶F È$góðr¸ ‡Vºté»ï¾{Ô¨QäGýãÿ ÎÉ–-iZË—/Ï“'O£FÊ”)c °(êׯ?räÈuëÖåÌ™³eË–h²0htVU½zõFŒöqãÆ)Q½ˆ€ˆ€ˆ€ˆ€¸Äî¿råÊ¥K—²ë N:F»„IÂÁw¯R¥ ®ðŒ3Ž;Ö­[7ž,[¶¬lÙ²%J”X°`ÁgŸ}–"EжmÛòˆ¹ùÍ›7£°K—.{÷hÑ¢ãÇ÷ë×§$2•,Y’˜¨ƒt&¶ gÈÁtg¿öm‹@ˆI¶yÄB¸ ‡Æ&yóæaäéÓ§W­ZE¨ÃØYr!QêСCÿý b¯¼òÊ‘#GNž<¹eË–—_~yøðáùóç÷Ú2:«êÕW_Ý¿¿šW›jD@D@D@D@DÀpÏÇÛÞÂ?üP»ví^½z±>0zôè›nº œ]æïñ}Yx饗 D%þëo¿ýFáÉ'Ÿœºpá‚-SȘ1#1óí|džâRרQƒØ€lÈÎ'ƒßˆµ 7ÉÕEÄŸôâkCÄ¡±×Â(7CcÇ…ÙtavexûuÖ“SD~‘”œÂÑŒŽ®½û4œJT_1„¦=î2‡‘/ƶç2EmêÙÀÛkd"qþ)ò÷Þ{/É6¤ÍXè ¨EÇ%Ñ„ $8…·Íš5«ðšÞ0ä©ËvYÄËЂzd†Gl÷ $Äè¼½¨FD@D@D@D yˆ!¹È"µÝ”ÉÊ;·É`ac1‘ƒý\{íµÌ0eþè£r¹Å,ÊÃIÑì\g EÇôh&à­%¾…“|åƒ*Cl¸˜¡uGÚ•2[“Í¡®,×x…ãkt^ͪVð‰{öìIÖ'Ž 6 ´nÝú­·ÞZ±b…Ê•+ãÝnÚ´‰å‚;3§üd¿2›ŒÙ¤K+öã’˜„X8züãÞ½{£4zrlæÎ‹<±»¢Ãò4Ĥûï¿?bs+báJœ‡fõ» àíÞ½;Cæˆ'ö£ßìiv‰Å×è\jõSD@D@D@D@ Cx@ö?Gšr:'Çe+VŒ£ŠÌÉBøÜì»å˜N¶Òò!ë=W®\ìcfUN.š3gÉô„ï¾û.i3\1< _Ÿ­Ìl6°/‰£Q¹:Àôh+ƒ A&ÉûÖ‡Ûç¡ùöE%>íí·ßf ¢®]»Ú<"W“xK§~Š€ˆ€ˆ€ˆ€ˆR¼Üx§– ã…ç qãóÎ]¶L„W˜ýÄ8¾\bÀ™?Ñ䑆DÃÐ*{öìA¾r¸å¾&…7q> ·!ÎCsvA™™„8шE˜?þø›¯KÆ÷çEŽÎW§*E@D@D@D@’-#§Ä°zË|\bäáØ³†Xy`aÁ%ô“Uˆ,}‚¢©÷5)š†F&܆8-Ķtó p>ºÈÑ9U©," " " " ˆËÖdH’âsõ IºƒbC£FìéL— Gu!" " " " ¾øb¹¤•lìæsI»Tg" " " " "àG@ÉE~TT'" " " " É’€ÂƒdùÚ5hð# ðÀŠêD@D@D@D@D YPx,_»-" " " " ~"oMž={¶_CÕ‰€ˆ€ˆ€ˆ€ˆ€\a7nÌÕÃ!FGhŒ–z$" " " " "ø L˜0!¢‘Q…h 2"vsñÜð|ñJ¤AD@D@D@D@’'N-F3ðhÃht%´LŸÎ­º é¤G€¹þL™2E3.mMކ’dD@D@D@D@Dà &}&ŽÂƒ+ø5Ëtˆ_ þ—ç™3gvîÜyöìYó{̘1ÿùÏ¢am%mÁÕÊ¥Ùõô"uz‘jÕ\D@D@D@D yˆ!lذG}ôõ×_gDK–,Aç矾{÷îh”[I[p¶òjv>½ø²o§¯VD@D@D@D@’'ض&=zôÝwß}å•W./¬.]ºT©Råƒ>À¡Ÿ1cÆUWÅäx-g•àÓO?ýâ‹/®»îºsçÎ1Ù[MÂiŽ›=j%" " " " ábs¬¯½öÚE‹™ùu§ÞÁƒ·nݺ^½z½zõÚ¶m›yôì³ÏöïßÖ¬Y?þøSO=µ}ûö/¿üò±ÇëØ±ãþýûÌŽ;øùÏþ³M›66l åÍ›7_¹r¥S¿·Œ%yòäI“&‰ ˜éoÙ²eÕªU_|ñÅ?þøÃÈøá‡t]£F ¢ˆ .˜Ê:|óÍ7ݺu»ï¾ûÞzë-*ÏŸ?üøqcvÊ”)S§Nm$ÿüóO§•¾½aßo_ÍAVãY!ûí·ßÚµkwÿý÷Oœ8ÑhÆì €ôî»ï&:²c´ýúÚF«yóæ¡ŠXID@D@D@D@D ˆ@lá.uæÌ™‡Š?íÔˆWÝ´iS|ÐU«VY–¼#¼|ƒ›nºiëÖ­={öœ3gN±bÅÖ®]‹ƒNó“'Oâé²"AÃ)RôéÓúĉ»víòº¿ÎîpåÇŽ;}úôÎ;›ú~ýúá7³’€Om*óæÍK=ö,\¸pݺu¦rÏž=T–)S†fêÔ©Lð)R„q]pO„"f˜N1j|{1j}¿}5YõöÛoP}üñÇ:ujÒ¤ ßÇ7Û!0›Õ’ºuëöíÛwãÆÞ«¬}m£Á)aÄ`¾ªRD@D@D@D@œb Ò¦MKÆ?Ǧ¾ÿþûN-íÛ·¯T©R¡B…ð}׬Yc‘®3`À|Sæø !È|6OY4à›àáðáÃLù/^¼|ùòd…O(‚J«Ä[ ™+K—.e-ßìcþöÛoCòˆe 6°UÏ›ý ¤ =ÚôköE“ƒòìÙ³³»åX¤ [¶l1:Ië·‹.yß^\2®Ÿ^ÍÑ[åRÅÏï¿ÿžñ²ÀÂq®¤9â`›³¹Ê" " " " "`Ä%< %g á’wÝuWáÂ…ßyçüuòŽÈÝg×o4|Ó¥KÇ~ef¾ÙnËNÜ!C†üú믿ÿþ;û˜ùÑн{wòò9㈭ÉY²daWsñžIëgS9w:W®\[D4nÜ8çö§rBöU3"–Hì1™ENSöíÅ+æ¬ñjŽÞ*§SfY†«'êÔ©CÌÃN§@ls6WYD@D@D@D@ /÷Þ©eÃÌî“âÏvä;vÌì:`ðõ×_ïLëoÈSæûñËÙ÷"9pä”>#ä Ñ5[l޾Ó*&Ý3dȤŸëX¸Àí¶§šIRïí%DØW³en•S-¡ §š}±VãÜÝᔉÕ6W[ýHªº /ÍŽßpÇ—;.{|©YŸ•Õ_J–BžFÿÈÛµµ*$6@?³ï¤'EÙ‘·—†¾š£´Ê«– +<îŠÉ6¯~Õˆ€ˆ€ˆ€ˆ€$sñ$sŽ =|N\%ƒ+¡{‘~dNàJ Hpb½#ù¾°E?&ß±kä" " " " —„À°A‚Û"n?¸$ÐÔ‰ˆ€ˆ€ˆ€ˆ€$MWLxþˆÛ£“æ+Ò¨D@D@D@D@DàRˆãÁ¦—Ê<õ#" " " " "pé(<¸t¬Õ“ˆ€ˆ€ˆ€ˆ€$r ù ’y" " " " "pé(<¸t¬Õ“ˆ€ˆ€ˆ€ˆ€$rWÒÖäxGÉQHñ®S E@D@D@D@DàÊ% Õƒ+÷ÝÉrˆg1‡.\8tèÐÎ;ÿüóÏx¶EêD@D@D@D@D@.+’‹NŸ>=qâÄO?ý”Àફ®:þ|† øyYí÷ïüìÙ³W_ÃÐüµ¨VD@D@D@D@’|èwÞygöìÙÿüç?›4i’.]º;vlݺ5âzöÙg8@$“m“I" " " " "˜ DìÞ½{Μ9ùóçæ™gR¤HÁ ýõ1cãéûï¿¿aÆ믿¾J•*Íš5»æškx„§ž;wî’%K~òÉ'iÓ¦}饗֯_O9GŽ;wæ;JB‘¡C‡nÙ²%gΜè,Q¢„i˜1cÆêÕ«9’~©¿ñÆ'Mš„+Í›7ïØ±ãM7Ý„U„ k×®EÃî½÷Þ%K–Œ5ªM›6÷ß¿±_ß" " " " " ˆvïÁ¶mÛØuPºti8Ù‘tÔ¥K—Ÿþ¹mÛ¶wÜqÇ”)S†nöîÝ»råÊY³fᦳÔгgObŒbÅŠá¬óÍ7QÊœ.%á2l$@~üøñ>ú(;¡ÑÀJ‚Ñ-[6bÊtA$àRËOì!鈼¦þýû·oßþ—_~1•£ðÀ‹K5" " " " Éœ@´«xÿœDZ?§šfÍšÕIÍ8èLÏ›Êýû÷ã|s¨‘SæbÊÄ4¯[·nëÖ­£Ôã ÈwbóÃÔ©S 0† Âë(•HLD@D@D@D@’hW êÔ©=züðÃd±y`ðàÁl (S¦ K—.eDLöW¨P9þøBY¶lÙôéÓshÒüùó‰=èˆÐ!Ê‹)B*ÔºuëØyìv ©~ýúœ¶DÞ ÑðÔSO}ûí·!JôHD@D@D@D@’!hW@Ó¢E ?Ë•+G>O<¢¤Sö44¨oß¾¨¥»®]»æÉ“'¨‹‡zhÓ¦MÏÿõ©\¹ò˜1c° Ê-Ê~eZýþûïì“æ;HƒêE@D@D@D@D yHñrÿáZ6 <Óö76[“#o‡õ¾Ù0àJß?rä1C<®¸¬:~ü8=²‘ÀUïûƒ9ÂÈXÈ2©S§3\’D®ý¤J`„ NÇÞ;Ì#§Ä°z`Úãp›û ¼êpǽ•ñXãõïC”;]"–„ ZBlÐ#¸²D»÷àÊ•¬ˆ¨VX†ˆƒj5¸²DÈOº²†$kE@D@D@D@D@âF rx`7%Ç­µ¸RhïÁ•ò¦d§ˆ€ˆ€ˆ€ˆ€$8… ŽXˆ€ˆ€ˆ€ˆ€ˆÀ•B@áÁ•ò¦d§ˆ€ˆ€ˆ€ˆ€$8… ŽXˆ€ˆ€ˆ€ˆ€ˆÀ•B òÖdçH¸GÍù3¨~ sP+Õ‹€ˆ€ˆ€ˆ€ˆ€\^±…ØÚ¡U“p‹‡~86\à<3fÌõ×__¿~ýhúŠI8…‰_&¦!Ÿ;wîÛo¿]¾|yªT©~øá¬Y³^öÆd¸µNUÎrx+=¤J æä¢ëS_þŸ—TÆ «ÿõ©S§N÷îÝ7mÚ䕉[ÍÙ³g}Μ9sîܹ¾¼•…±?šË‚Œñö/5Ó]Ä!;-\ºt髯¾š"EŠ´iÓž:uÊùèr•c²?ÜH§*g9¼•žŠ€ˆ€ˆ€ˆ@R%óêAÚÔ×ÄEáÂ…;wîüÃ? >üäÉ“ýû÷ƒW“gŸ}öÀ'NtÕ_–Ÿ—ؘKÙÝ’%K@Ú¦M›ë®»î²°U§" " " " —Œ@ÌáÁï'ý'ìÃ-¾æškˆ (0nܸ_ýÕïØ±cèС[¶lÉ™3'þn‰%¨ß°aÿÚµkÉjÖ¬Ù½÷ÞK¥WrÒ¤I4<þ|óæÍ;vìxÓM7y ˜={6Ý1íݶmÛŠ+)7 q‚GŽI§Xrã7zµ™žf̘‘µ§°×¯Á47m±dôèѽ{÷f쨺ãŽ;\FºÄ®¾új¥¸u× ¼|¼fôÑGË–-£áÓO?}çw¶hÑb÷îÝï¿ÿ>¯ VUªTáñr½£óšíêÝÛƒFó¡C‡n¹å–¦M›,XÊ}ûö 6lýúõ¼JpñºªðWæmå«Üe•~Š€ˆ€ˆ€ˆ@2'srщ“gÃÿózáÂ…ƒŽ?þĉÕªUC†5„.]º=z´[·n¸}}úôÁ×§þ½÷ÞÛ¹sço¼Átu®\¹‚$Ë—/o&MÂ#æê—……Y³f•.]_sÈ!æ©W¹©Ç6\öÛn»móæÍS¦„m¿Þ»w/¡‹KØeLÐÐh»fÍ ”)SßÚüôéÃÉöRŠ[wùøš]©R¥Ü¹sÓÎwÝu×éÓ§±ççŸ&âÂS‡ËAFsD³øö…@Ê”)‰ ø“Xµj•Y¢Ç_|ñ»ï¾«Y³fûöí‹+fô„¿2ßV^åN“T€@Ì«'NÅeõ€ý=öý=øàƒ?þ8…•+W>|¸V­ZÅ‹Çßýä“O¶oßÎl1•ÇŽÛ³gÏ=÷ÜsÕUÿ½øJ*TˆØ€]³ø¯Èx?d”:ujÒå,XÀ\u¾|ù¼ÊMCâ“~ýúeΜ™ i"¯6gW˜U§1‹-ò ƒQ‚»O¬’)S&£ÐkdþüùbAªâÖsÞ®áï5»hÑ¢2d ¡á¼xñbürÞZ5î»ï>ÀÞ´k×μ);º ³­Aï”™ÿþ÷¿yóæ%”¢Lœ°ÿ~BÊ–-[Úæ¼oÁùÔ·•W¹³‰Ê" " " " ˆ9<8}öæøcýàš³ЫW/“Ä<.³û(a*}„ ®½öZVðùH­4hžýôéÓŸþù"EŠøJF4 }úôĈÑ5ßÛ¶mÃóö*7z²eËFl@§™…SôQ8Äà,Y²ØØý¾FRoÅBTYóBd¬+l Þ®ñûyêz#VÞÈØ¡`ò”xYÄ<8ñ0¡Þvb’Ñã+ÀòѨQ£8"‰x€2"lzô&…¿o+_åÆ}‹€ˆ€ˆ€ˆ€X1‡gâ0Û}ûí·7jÔˆ³#'OžÌA@Æ¡¬[·nëÖ­­5HY)Y²äÔ©SñS™hçw‚$ŽèÊ#C®<߯¿ô*çQ|}¬1!õå4Ò)¢êbºsva»6 ½oÄ)l‚(ÖvL%~<ëfyÁ)b¶ó`-‚m­ZµâDÚN:‘­„°‰¦".é8{÷mµpáB¯rW+ýˆyïÁ™sçÃÿ ajNÍg'.©>eË–ez˜Ý±óçÏÇËäôLüTRÒçÌ™óÇà ¦K—Ž m¾’Ô³°@ʺuëH4÷vÊü1ª~úé'ÒÖÉTÁõUîmhj¦M›F'] ¸êÆìjÂO§‘yòä1N³S,HUܺsjvvmøõålevMð²XÁáf B… ¬ü8e(GTå+ðçŸÒ–56Cðg@b˜í‘·É66~¸úòýémå«Ü·­*E@D@D@D 9ˆ9< ¹(ü¿šÜ«E9ÞüÀÙ›Û³µÎÄ« IDATgO¶÷íÛ·I“&,p¢Ñ™3gX^àgƒ ØpÌvX´'x%©衇p©I@úꫯ¼’Sôù矿ð Ü`(|•{šv5`§Ù-$ã¬wd°SÞ”0cÆ c$ÉW^ UqëΩßË'¨/g+æò¹¹8 eûx¹råÈ×r ˜rDU¾l}&m‰õ"6%³ÎC8ÇYC¦G@ñ7â')y»óÖx[ù*÷6Tˆ€ˆ€ˆ€$s)^î?¼SˆQR8rÊýµê„ Ïþbzô Quüøq²Ø¹r˪Å/gÚÒÖ˜‚W’zˆ1Ðà6?9Â…Ù8kj‚”û6µÒeŒ¯ÁV'·­‘«ÃÉ?´"?Çi¤•±_U1ugU9 ^><õíËÙŠ2 YÛñ®¸Ä"ªò °1Ýì:  ¢sj*j, lquþÓÕ*Hy¸=dBo?æ½xÿñKÇàtúú^I,1¹éA&9¸)w‰Åí§Ë_ƒ½š]­¼Ôøªr5ô•ñÕf+½|‚ú²MLÁ·¡K&U^›Ml@[W®Ázûò­qµ RîÛV•" " " " ÄÄ´, iÆ4dŽó·Sã15”°ˆ€ˆ€ˆ€ˆ€$ØÂƒ2"yª%q?y\£H´bÞšœhG"ÃD@D@D@D@D@.’€Âƒ‹¨æ" " " " "t({ë­·.~DcÇŽ9sæÑ£GÏŸ?_ªT©·ß~Ûè 1ûõ×_Ïœ9óðáÃ/²÷¤ýŽâgÖ¬Y¾áÁe|Mÿþ÷¿‰ xàÔ©S~òÉ'·Ür á6üDÄ$7tÎV;wî9rd=tÉ·‹Ê" " "T D›\”={ö#F4kÖlëÖ­£G¾,8ž}öÙÇ<~»^±bEŸ>}š7o¢öСC!Oí£Ý»w7®B… _|ñh“&MÌ£p³‡ öæ›oZ%SHªïèb˜xÛ^ö×T°`Á5j*T¨zõê^óaMåÊ•?þÊ+¯$BÛd’ˆ€ˆ€ˆ@¼ˆjõ€^™8Ä­á3iÒ¤72;>tèÐ 6à:3ýÙ´iS!†+œ1cÆŠ+BôîÝ›iN_™Ü¹s—,Y’©Ó´iÓ¾ôÒKëׯ§œ#GŽÎ;óž;v Ë–-9sæD'¹7ôËOúÅ•ïØ±ãM7Ýä•ñpêÔ)2LÖ®]Kæ±Í½÷Þ‹ŒóƒC_¦L´9+]å÷ßÿÌ™34Ç¥s=rþÜ¿?汜kFaâ5Û…ˆaB¬W¯^¨2ð™¬Å`~ÞxãÔoÚ´iРA¨ZµêáÇT¿~ýœ]›rR}Gƒöý+‚›—ÕæÍ›Y´U•*UxkÞµ¦Ëþš¼/ÎÖÌž=›?È)R´mÛ–DÔ3ð ?`V½\'VO1ûo“-ß?*oØÃ?ÿ6ùwþ/Å ‚ˆ€ˆ€ˆÀ•K ÚÕFˆ?1gÎÜ_Òô¯ºêª”)StëÖmÕªUx0ÁÞ½{I¦?~<>7nÌÊ•+IüÀÕ`-¢gÏž¨-V¬Nü7ß|ƒž“'OvéÒ…”ãš0»Û]¾|yÜÁ4iÒäÊ•ËW†¶.Þ{ï=R#Þxã6mÚÐÊi¿ ž· ll¥·@ƒ©:ubšý^Ssë­·ö°Ѿ}{"Sé2›J—…üÄa5”@duÛm·áæN™ò¿‡Ê÷íÛ™Ö­[ãì‚.Ƥ÷Ž ôWä˪ÿþðyòÉ'iøÛo¿°ÎïÄðšœöØ2! ÿ(J—.MÈ=dÈSô|ðàAï߉UDÌùo3èÊ·Ç  |Ù²e¶ D@D@D@’*hWöíÛW¯^½?ÿü3kÖ¬:tN0ßxØdNãvX@¸°87œ¨"sÝu× 0'fáÂ…|8ð?þX¼x1 ´Âf޼V­ZÅ‹ǽfaÍ‘ÌÜœ;w®R¥JÈ,Z´ÈW†GÖfñ‘9vì{…ï¹çBž:?8düd7…©œ6mšÙba~âGâ«Q¾öÚk5jôàƒ1­‹*rœÈ7bö›~ßyçö|ÿý÷Lü¿ð ,VàW9Í6ÂÖBÛÖ‡X@9sÃDÔC: {Xù Æeå…$ùŽ`Ð_š—Ž5B`¯]»6 y^V—ý59_™³Ì? bö$°:´`Á’/_¾ ?`ïØª‚ˆÙ?¼ ?ª 2Dæ,ôÑÊÙ‹Ê" " " I’@´áû)I0¸á†˜Gǃa:Ô¨QË—/Çc ì<¥'K–,&6‘!ñg ¸ìDøß¸;–¯ñÚY‚˜0a•5…k:qÓÉ Àëš>}úóÏ?ï:žÈå;âŠ9ç›Oœ8áì4]ºt ˜Á*‚¢®]»b˜S€22LÊÒû4ˆXB1(\bÖBW=?³eËføó~üñGêÃ󚌞$ùŽBþŠ‚X¹Þ²òå}M^{ìëã_e¢¾·mÛ–?þ ?`ïØ­Úbö/è*äŸ \ÿ^l*ˆ€ˆ€ˆ€$%цd ™Ùk3xfýɪoÕªg­uã›îŒ/J\êëÖ­K:KÀ:(!2Î&wÜq›¦NJ°Áš³ûΧìåå§5žá8Ÿ:ËôËzÅG}Ä4*g…Ü„…å$M‘1µnÝ:¶u¢ÇšíÔeI@øþý¯ï·m’|G1ýáþB†Ä¾ñ’™†÷†pÝe|M¾ïÎYÉb?M–ø°³•-GC,äÊ·G–àØl¶ÓØŽTH’¢ \ƒ'ˈ&;IGÆså'®Çž:Å¢‘qÊÛrÙ²e™g›fáÂ…Íþ¼R€˜ž?>>7vƒd¬ ìOÀ§'GˆfÆŒ$ù8ŸRfžlNpÕ»~’ãÎùB¤õ?õÔS8O®§ö'7IaÛ’ìïÄea„§N³ƒ¼U«Ä[`Wy¬´ åhöŠyk¢áŒW35Aüƒ ’q*ŒøŽb²PýÙdæð³zõjœZráœÝQNl¯ÉšGno™2ß}÷9ÀáØ¶Hû׿þÅŸ¨I¢ ÿ·ôGÔ£ù7B¦Ÿ³G•E@D@D@’$w:~”ƒ¼ë®»ðÝ™Œ'¯‚ÃR\m£‘q51?Éý`¿2óô$êp<(³þ¿þú+zè!‚r„¾úê« §B®á)44hЯË÷ôR® EŠDgCW™m\MÐd×®]$2±]»E‹DJìÐ0:f»4GóoUÄKlzfûš£Œ1¢áŒ¯‘Aüƒ ’q*ŒøŽb²Ø€]"Dì¯%Ë,19»£œØ^“5œ¢Ï?ÿœ-+D€fÝ,"Û–ÛrNŸ>ÍšI4Ä‚þ¨‚zdÿ1yÈ¢™Ó•E@D@D@®h)^î?¼Sˆq~n+mÙÑKf ΙWO42ÞV¦†|fÊ™;w ÷Oä`gÐ}eœòøL¬làª:+e¦]9|‰PÄY·2}‘Ù ï–—Ù1égƒž.Û~úé'ÜG–ºw牢høG#Ô/×`}eœ #¾£˜,dÁ÷×µ–åêîr½&¶¯pV/1 ‰:¬op+{Ù³òæNe³`lŽÇ94[ŽH,äÊÕ#«œ Ê^ï?¢#§ôéìδ6¨ " " "Øt0‚ÿíÆU 2Œÿqcr‘ÑhbÊøëA}D#ÔÖëŽ éò¼}eœ ™kŸngJÞwšÙ©$Ê2Ùs\M\f»ž†ÿd-… ¤B‘ÇÅÙ©¾Ë A¢áL~_þ®ÁúÊ8þõŠÜû¼1Yhv½;›»Ê—ñ5‘þÄ®zîNfŽÿ믿&-C† Nó¼ÿ”"Âq6·åˆÄBþ¨\=òÓ76°}© " " "”\Txd@˜ ĉv88gìu&B`'†ÙTšhMMΆEóš¸ÑÏ" ÏU³b TˆÆZÓµrŠèH­ˆ€ˆ€$N ç{ù?V1ûÎk>ÿ§V?+ë5Å—µ¬N² ™È^…̈;…qg§–"Ì °m‰D2m?H澈€ˆ@#ôÃMm&±?Y GD@D@D@D Î"J”ôÃØiv3Î@j(" " " "dÌÊÈÉEŒ4Ž÷$Fˆˆ€ˆ€ˆ€ˆ€$ѤÕ(<\øìÙ³W_ícÆÒ¥K{÷îýàƒrk2×;µa š„ƒÕSˆ•€_îR±{÷îqãÆÕ¨Q£}ûö‡Þ·oŸK èç°aîº*BòÒ³Ï>Ë%²'Nô*Y²d •mÚ´1—àF£Í«D5" " " " " шìß¿ŸE68“_”ã¯ÑNœ€Ë¾~ýú)Rpÿ+×Áâëg̘±bÅŠ£GfâèСüìÕ«òæbDÈ·mÛ±I“&mÙ²åÍ›7§9W[»?úè£eË–ñóé§Ÿ¾óÎ;[´hB«ÍŠQرc¡'gΜôç\&§N•E@D@D@D@D yˆ0».ëÍ;÷Š+X=À 7˜NŸ>ýâ‹/~÷Ýw5kÖ¤¾X±bÔïÝ»—ýãÇ/S¦ {øIhaäÍ£Y³f•.]úСCC† ¡¾|ùòxüiÒ¤!<È•+—‘4ß•*U¢SÊ<ºë®»(8µYÉ“'OvéÒ…¬§nݺuôéÓ‡`Ã>UAD@D@D@D@D &‘WØðÎ;ïúÿý÷ß3=ÿ /Ü{ォV­Âõ¯V­ZË–-ý!ŒëÏqªÎJS&G¨ÿþ©S§f#Á‚ ˜õ/P ±[ \òE‹Í!•ÞGNÉ•+W’ïT«V­âÅ‹l|òÉ'Û·o/T¨SFe( D^=@QºtéúöíÛ®];ò‹ @¢‘ÙàL2ýeÉ’Å76à)GPÈ—/ßÛ¶m3M.æ›} 4g½âÑGýôÓO¯½öZV.F¡ÚŠ€ˆ€ˆ€ˆ€ˆ@r&yõÀÐ!u§nݺ[·n3gκuëL °yóæ8°c¯3­lhAÈ%¦I¶lÙ(`XëÖ­ã¬D E@D@D@D@D@ È«l>fÏË»víÚ°aqBÞ¼yÍîÎ%Z`/ÁÚµk#EÂ?ýô;òäÉc<û"EаA¼Áf†ˆ¼eË–eQböìÙóçÏ'Ù {Lìá•Tˆ€ˆ€ˆ€ˆ€ˆ@D‘Wˆ  „"ƒÂ… wèÐ=üìÞ½; 8rÉ’% å ›•g̘Á‚÷p\©{衇6mÚôü_Ÿx ¨mP=YO={ö¤krŸaM£k×®ÄAòª!âåþÃ;µl"Á#¦ö<ˆïÝWÀÜ?; ÌÕ!J6lh®HCž=Ç®û¨ä# áŽ?Ns¯ØÀ‘SútVꑌjD@D@D@D@’nFàã{ Ï9òêÙò4%ï ‚:3õ¾ò¾•áz\OYFpÕ览€ˆ€ˆ€ˆ€ˆ@¬¢ bUê•ç’„k®¹Æ[¯ÄCà…åÊ•»Œcf……’Ëh€º+‚À% .# vV¼¤í—ñ¨k+…@Òx!Û/®”÷$;E@D@D@D@Dàˆ|ïÁ%0B]ˆ€ˆ€ˆ€ˆ€ˆ€$ Ã[ " " " " "((ΆŻÂ8[âj8qâDþÈ7n쪷?]¯ÿçm;ݾ}{žýôÓwÞy'K1¾ pa,\¸°Q2räH4ôèÑ#þüÔàMnÛ¶­S§NƒƪC‡ÝrË-M›6-X° W‰ó]øÊ›.¼XL½ùöeëûjl« WŒ«Íp É`o¼ñFä½Vµ5ʽòԻБ«ãý ±¶QؼyóÛo¿M€Ê eæÞæöxGê}}ü…»þ¼«W¯î”WOP§ü£à/Š?þA¹þ!8 VYD@D@D@š@„Ù}º¿õÖ[sçÎÍ\>«øâÆ Ó§O¿øâ‹ß}÷]Íš5©/V¬õ{÷î%Ç}üøñ¸õx~ü$´0òæ©¥K—Æ‘5IGåË—ÇÁJ“& áA®\¹Œ¤ù&Ù´i“ñt©yï½÷ȾÀ gêÝHž" " " "pYD^=ÀÍzçwÈ´Æ fv–½LÞã‰âúW«V­eË–N»ÆõÏ”)“³Ò”ɨÁ1J:5i÷ ,`bˆØ€Ÿø^.y\UjجÉ7«$5;vŒÍ ÷ÜsIXZ¹r%•µjÕ*^¼8~ä'Ÿ|ÂæN¼goe¡B…\ʽ–Ð6¼!ÝáÔÒIV÷Ýwö`´k׎™o¡~ø™cB£ìÙ³ã&bðêÕ«™ vö[´hÑ 2PcËò‚¯B3:_ŒåÊ•cg8]`§ýú믄($<㛀*oÞ¼Ø`;õU"ïÅb–)ŒB_àÄoÞWc  àûŠ çH¡Éœ93kDFÞ; ß¶V¹WÞ<²£^´hQø;%Lå?æÚµkÓ–?o^ß‘º^Ÿ5üƒòÕÃôí=„ÊlJ±µÕ¬‚ˆ€ˆ€ˆ€\J‘ìI—.]ß¾}§OŸ>bĈ°8`v x³ ²dÉâ Lj؀B¾|ùø&1Æé}RãüGÍÔàx– 4ˆèžþyÎ22ñ+&L@ìÚk¯e%Á·Ò©Ö”½–à©óÈ¥ÍÙÐŒ×äù`!Ž8Þg¶lÙn¾ùæÿú0v|MæïÉ·ùã?Hõqjp•C"é‹Ç·jÕª3fÌ auâöÛoÇ›dÍdÔ¨Qœ†drÀšíÈWIˆ¼‹óù²õ}5Ö€ Ј xJ@b^tˆU¾JBäí¨} vjã¥ñÓ{.VĆN%¶ì”¯žÿüç?¾=ðtþå[å*ˆ€ˆ€ˆ€ˆÀ%#Ux€58.uëÖݺu+ÙöëÖ­31€úÉ\rî‘·¡…¯?Ä4<2älÍäó”,Y’l{¡§<‘dÂè8½Ô©ÁUQè’tþdñ„ð€W@ a.\HŽ~«V­8TŠ}–˜³•³¼Åâlè ï«q¶2eßWì ±Ê·mˆ¼Ud°  l"Câ µ2©‰ØÐj/øêa¡É·S*Y;~ü¸+'-¼ =x'yï{%I¤a¶›ÔæÅ‰Hb1» ˜ÃÆU%Iƒù숖¡áŸ~ú ×–¬!ã<1wKV ñ¹øN xÏF¦S§N5jÔpÉë'@dY=ðÀÏ=÷\öìÙ+V¬(8" " " " "D ÚÕÛ~ß¾}íÛ·¿ûî»™­Ÿ7ož©ß¹s'—W«V­Gøë¶Þ¶zå•W~üñG~ré2kݺu»ï¾ûÞzë-jÆ7gÎfÁ¹åàСC¾ú ¸àá›nº©k×®,2pg³Uî,ÐÉuë֙ʗ_~yñâÅ”?üðÃÇœ@âõ×_çÖaóc-ZÄ¡«÷Þ{ï»ï¾ûÛo¿µk×îþûï'É °XÁÉŒ·K—.üñ‡©·ß¬¨´p‡1J¼Oc°O<ñÍ{÷îmZ]2K\¬Xœ™={¶±¡ÿþ\9gG¡‚ˆ€ˆ€ˆ€ˆ€±…8Ö;vdçò©§žêÕ«×Ï?ÿŒ".6.X° .>i>ßÿ=×ĺø’ÄM±TRèׯkƒž:u*»ˆ ˜Ò®Y³&éCì¤öê?þüúõësåÊEsnâ¢4ómºøé§ŸˆFø°¼@MΜ9™)õÕWénÖ¬Y\ö\©R%êóæÍK¿øý .´ÁƼýöÛĸËü1M“&Møævg¶CÐ >ø nݺ pãÆÖ½6]óN\ÿ3fЄ­7p 4ˆhjîܹ-Z´0•—Ì+ÂÊØÀm.kõSD@D@D@D@b 6mÚ´yóf ðã™q'è‹/¾8qâ!“èÜ‹ß_¸pá)R„mܸ1!móçÏÂ4iÒ¤J•ŠÔ£Ì™3³›Ö«Û¶mW]uy2¾:ñÚ™¡ç³ÿ~#À*Á 7ÜÀl= ¬cˆrçÎÙEŠ1!nÖ¬‹¥K—Æ ÊwÜq± á ëF U«V,”/_žM«V­rÚÀr9ý·ß~û‘#GJ•*µzõjçSÊtÍÛÎ;gÂ*/‹%ôKàÄZ¦Rf˜ÅŠ£ ˆ€ˆ€ˆ€ˆ€8 Ķ÷7Ýzº¸˜$ó0':uj¼O§Þr¾|ùÌSï=ʾú‰ X@RHÎŒkïò¬làÖ„*TÈ4dyá믿fŽÿ—_~!°ÚˆIL?žà2ÍíS „.ægLž’}Jº‹ 6kˆeûÈÞxã 2©ØHÍ‚N9õ—Ë“RåµS€@láÎôï¿ÿÎM ƓޱcGŽ9Ø À‰û<ÅG Îd}õã—ã»;v,}úôÑhƆaƱ¸1þ|‚’‘X£`SĤI“ðàÙ]¯ ƒ½õÖ[õ3f$<`]8ëåâÅ‹sZ+û+Øœ@°}ûöËe ÉW ?J†Î!¨," " " "|üŸ™òˆÃÆÙeã9ýLEãé®]»¶J•*øôDo¾ù&Y4lA&x0SÔ\MàMÇïÂW?±‰òfkAxsó”~Éb·öøâ˜J¦n1–³Õ ß=ÄAšÉ›BÃÑ£G9^‰#§‹'äG=úÔ©SÔ{w\œ9sfëÖ­)S¦d;§OŸ¾\–Ð;É€2öïÚµËfO™}‹€ˆ€ˆ€ˆ€ˆb ØíJ¶ wÔ®]û±Ç㌠;ï¼-¯½ö.òøñãIÐg*\#*Ù©¼dÉ’˜(é瘣 Ó¸LÍÇæ³aÃsc™<ôË„=>ñرcqëIˆ" aV˜Ëwn?· 6¬S§Ñ½8…ñûÙšLüÀv™œO)ŸRYD@D@D@D 9ˆŸð€³Jíq¥I‰&w$’á$K ™!" " " "bÛšœH§ˆ€ˆ€ˆ€ˆ€ˆ@"!4î>à†`®l ¹OÍõ8Øgݺu®Ê˜~r5òž={¢oâ»)›}Ï] ª¾;IŠ€ˆ€ˆ€ˆ€ˆ@DÑ&ÕªU‹£K9þzè¡ DT}Y8bˆ;ÑfÏžÍ}ÉÄÜeV³fÍçž{.¢1sçνúê«ã¼½ó^¹D™Kâ¸WáÉ'Ÿ4˜Nÿõ¯qàR… ÌÏ_ýuàÀ\5͵ ƒ ²†-¼ðÂ ÜØ€ÎhjÞ¼¹yToª " " " " ñE Úð€þ¸Fàž{îY¸pa×®]¹W8¾ŒˆG= à¾6–ÌyAD¾“ôñØ£QÕ²eËn¸òwß}ÇþìjÕªqùÛµGŒAl@;›¹$‹®¿þú§Ÿ~Œ„N3n»í¶:°zÀM eÊ”¹å–[ªw¶UYD@D@D@D@â…@lÉEæø |n{C09" " " " "_b víÚõþûïsÖgÑ¢ËãÜãËâPyáÂ&¼qúñwíYû$åðÁuëÖíÛ·ïÆIþ1’;vÄŸÆÍ}ê©§zõêe.3FµLŸ<˜H€‹ H+VD3fÓ»¯fêÙÆÀ†ׇˆÅl¾ ¸ލÃV>úè£÷ß?ÙD ÜVz ¿ÿþ;•ä#™G\Àlj‚êã.gb¯*Õˆ€ˆ€ˆ€ˆ€ˆ@œ İ÷€¤ &™†'‡‡¿tIö#ÂùüóÏI@2‚¯f´±Éx¾çcbž’PdNs"àáC0ã; Jƒ‹]üöÛoK–,áôXÊAõ¨[·nß¾}7nÜhÜwüìŽ;fÏžW•«‚{õêõóÏ?#0JÊ”)3xð`æÑÉËGrРA,´hÑ"¤#q/ØòåËM¸2kÖ,çqŸ^Û¼š½5èäúgÚ²I`áÂ…ëÖ­30Ün|÷þóŸ\lzôvðêÕ«ÿíù˜ë'XÙÈ–-›ùÞ¶mÂÅ‹7úù&úâòf®U65Û·o'>a­†ûݬŒ×6¶Ï>ûÌ@,gÎœÜØ`{¡žаÄjPAD@D@D@D@‚ÄÇ¿yóæýë_FËkÖ¬áÐR..Uªn±í¦U«V,)”/_ž «V­¢ž©}Ú2³‹O_¢D‰/¾øÂÈ7nܸ^½zÔp—b)þú0©Ï}Ææ:°Žh‚×NdšÆ×_M¬b›W³·†æ÷ßîܹ±³H‘"&†aVž€u®‚&’!@¢aUì3fóƒëƒc˜ý&``M=¶†úijX à~è9r8¼¶±êB†ab3gά]»¶Sž2—Uu¸*õSD@D@D@D@¼b¸÷€4!æ¤Y`çk¡B…Ðõã?rêŽÍÿabÛv`o#.P ÀâÅ‹©g» ñöö_VrŒ|¾|ùLÁ¦Ð¼ñƤ±÷ÕW_Å» 鈆sæÌaÖœ5 Ük£*¨‰K3ÂÞür" ÖC˜È'›|ýÔ©SÓ…QÞE:uœb¦ÌÊ€«mlM&ü .²:1ó“PŠ/½ôÒ»ï¾k›{mc­D,Ѱ›™d']¥laª " " " "+ÂrúqC™½fáã?ÆaÅ1%<`ÃaCPÇL¥ßzë­<Íœ93gw2enRe¨wÍ‹;5r3yòdœc¶4$„wDx@.íøÇVIP—fÂW )=ì.˜4iÑN»víŒBv 0ýÿÛo¿1 –)Ì!¤A]°€|'k‰):Å‹³’%v°äbóaGÁ>„7ß|³I“&o¿ý6»hËÒŠ×6êxà÷Þ{D) ´rö¢²ˆ€ˆ€ˆ€ˆ€DOÀ=¥±åsÏ=Ǭÿرc‘d€ÜžÑ£G3 ÎO»_™2©8x«G]±b)FÔà…³ñ€íÔク]»¶J•*Ô{?gΜ![7g—§§OŸéÈúá‡8ùÇjómâÕì­aþ>}úô˜Jº+¸ìè$* BÀY'åé•W^!È1û|‡Ï†ùž+6@'k)l#fÛ{”ùIÔÁ!§ôK´cG‘!C¢/v0ó¡Ò×6ê!‰I&L`_„mk ì¡¡ý©‚ˆ€ˆ€ˆ€ˆ€ˆaõÀ¨Àu~þùçñ€ñÅIúgo.î2K ¬ 0Ý>dÈ#¶wïÞ† >|¸téÒ•*U¢’ý¸&‡‰yê™JƒádOö%“hD„ЦM“/Ô‘éŽEBòÌO¾iëmâÕLHãê‹`† (¶83‰s,l–à“8m“U" " " " W˜O.º‚Æ&SE@D@D@D@D@b"p‡{öìÙ²eËĉ9±ç“O>‰iØqަÇhdâl@xCg×ð ÖSp¸RÑ#Gâþró‚ ~ýõW¶ 30.ã–e;Bî(xê©§ìO /¿üò=÷ÜÃ1>¶’&•+Wfó®­5jTÙ²e¹&™žV¯^Ëø˜C\=ÚV΂S† ÍÜ"ç|:fÌÎHµ5¾&q ´ À²Î{Ö{챕+WRnÞš5k¸TÁ©Ge'pÅ„­Zµš={¶Ì—_~ÉY=ìpà$P.ã›y„cÍEl¾cæýôS*éÈÕ£•´§ 7»À8ÃFÁ5F8Ä$«-¼b]s¤)C× §" " " " "` Dp-N³iÃ9©?þ8ð~ø!NÅa‚œ‹ÍÓ:Ì›7¯]»vݺu£·û‰'žàÐÞ½{Û.ma\gnH@€ÃŽÌýÄ©à¾0Rw¸>™šY³f¹Ž%ˈ€‡ëx{´zlÁ)ƒµ5kÖD­yÊï»ï>{×[IVUÄB¸yP2YRè! â=FT(äL ªðzõêÕÆ¥fæþÁ2¹sçΔ)S‘"E~þùg ‘å‚jÕªq}ž1˜ï:v“”¡ªU«–/_žÿU«VY%®Bš4i¸;Œ¬ÔnÛ¶ ÷š²KÆüä2fî%˜0aÂæÍ›ìÙeÚ¾B… %K–$°±þ:2 dƒ¼#¦ùYÊp6$na|öïßמּL’[è&„6ü1)zåáæåÌ™s÷îÝ\êŒBVNŠ+½fIŠ€ˆ€ˆ€ˆ€$CQÝ{@¾ I2óçÏç:0öãÍCŠ uœé?ÿü“ˈ,»¬Y³Ú2y>d±o˜ø§¶ÞR¥JeʬHx·X1gØ?ÞYã*—(Q¢víÚ¤<5kÖÌ>bžžˆ‚»Ã¨¡Ó™3g’eŸÿçƒ3]´hQ×åbäçX‡ÞÊÇT üøÇ?þA`póÍ7Ó°T©R¦y¸IÎ.òÙ³gm Ë2Ä]æg¸y&éË.VX *ˆ€ˆ€ˆ€ˆ€ˆ€/¨VhIJ 4“î,àn’£ß£G¶mÛ’>D꿯j*‹/>yòäGyäÅ_´ùB¾Â;vì¸õÖ[í#à~ØJãìH೩×Ö{ O?ý4“ý“&M2Ø)ñïÿ/?û_ ,AlذÁ6$<øî»ïÆw‘‘€Uè*°Þª ‚Ý”Ñ$§".»ƒú£G°9‚Ê$D±T’>}ú Õ‹€ˆ€ˆ€ˆ€ˆ€“@´áëøÓÓ§O7™E¤Êàtâl³×GÜî*vªÆÞºu+Ù>d×Púôi¾¹ €4+ƶcœ~ü]Ž2‹<"g‰Ô t²`¶PÉÔ>>=brèÍN«ÇU`€Ïxü&¢`]"GŽl]xô¯OÓ¦MÙìÜ ÌuȤHýðÃ!êRþÓ5œ a‚+Œg¹À†MrªbéfÉ’%&¹‹mlÆÈ“'S ¨ %»XÁŽ“à$¬zˆ6< À}g7j”ÙNÀ\;‡ú3õμ»sûÁŠ˾dò|Úüõ1I;Ÿþ9ž®åŽÿÚ°aÃ:uêiTªTÉÔ“03lØ0® ç†n0•Èœ°G™ŸxÛ,JX%¾˜ҥK›Gtʦd§O™Ë7‹©g}ƒh$uêÔN1Ê ÃÌǹà`Ä\Ãqµµ?Ù-]±bE|úB… Ù†!&9;%ha‡­°¹~ýúñ„©6)Ë)é5oÊ”)¼ÓãСC‘µM°R¼Üx§– íooaàÈ)}:·öÖSC†I\aú?C† ¾2<"0ðMÇÙeŽŸ= d¹`-Xvà|$§NrNœ8a:â˜NÜåË~+!D8Îm Nƒã·|ðàÁßÿƒ“‘¢ÑÌvjv?Û3£¸õ-D£A2" " " " I‰@·#p침 hPxþÑ®øª°>}Pl@+ùÆV!1€Õc+™ÅwÅ<âð"Û×™Ä!Ûä²H¬J í Þá°ÂâC”±ÍY²cŠ×â IDAT°±?‰¸8¸É«V5" " " " "` Dur‘•Žßy2… Ž›NBŽ([ÛxlÅ^†xÔ¿ªÌAIVç% cl*ˆ€ˆ€ˆ€ˆ€\q.gxpûí·_q¼d°ˆ€ˆ€ˆ€ˆ€$a•\”„¹hh" " " " " $Þð€mµ'NäàT½d/f̘1ôMwVÒ¢i•Ð2‰Ê˜xìeù3ˆË¥DD@D@D@®D‰7<8pàçqI3—.C¶V­ZœºÃõ Ï<ó —$$k*ݽ{w4Ê­¤-DÓ*¡e|á„(N1Jè®H¿ëÏ z‘ZC >ÃŽçç2ø"{ýõ×§M›–o>F'[™ÑÏ%Í\P`®Uޝ¾›ž˜HFþè£8=6±1J{xû®?ƒ(JLD@D@D@D ¢ :tè0oÞ¼víÚuëÖn˜bçâªU«rE—¹2yøðáëׯ˜9s&‰:Ä!4—.PÙà¤X±bä9Æ¡w—ýNm¾ãu ØÐgˆ…GöÆë K¼:½5Þ7ÂZ c³Ìâì=¨ §ŒÊ" " " "  J †ðÀÚ‘1cFÂv üc+MÜ[cv#‰§n+/¾@‚Óûï¿ÏJN¶× æãÉeŸ4iA ©óáÝ/^œåˆqãÆ‘pO*U*¯|È`½Â¦†Ý´¬yE‡û¶ÛncM€5 ë¸Û†<ýý÷ß $Œ/¾cÇŽ9r˜§†d”½;±[åÞB4ãõ¶25A–xuºj¶oßî}#l)a¨ ü^‚º2Iõ" " " " ñN †ä"Û7“Üä=Úì.0Yãð}èCg•ýÿøÇ\pÚi§ÝvÛmOx†yÛbÛaš…nϤ¾LÚtðÌ3ϼ뮻–Xb‰IµÏ8v“2÷Oªëîªb‚vß @€À(pñߟùìÁN;íôêÿù÷’—¼d³Í6k¶Ï8ãŒôçË_þòM7Ý4ÛŽ}ë[ß:ýôÓ7Þxãå—_~4o[l»1šlÊÎ×½îu©eJ‚yñÒôJ'õeÒþyÑÂ˼ð üãOIÖ»éýRHóÒ¤ººUÌXÈ”ó v.¦tÁK @€ù/0óµGqDÓ¬í¶Ûnà 7Üh£æ²•—_~ùj«­¶âŠ+Îe9S²~øá‹,²È”óâ¥{¤ÒyÑ‘)evÇnõ·[Å”–Œ¾´ë®»æ-úüç?ôÕy´sF‡{¤U󨳊%@€ª˜9<˜Nð—¿üå ƒºòÊ+×YgvØ!‰s>áýïÿ7ÞøÔ§>u=ö¸ÿýïß-ásŸû\VÝûÞ÷¾øâ‹?ðüýï?ì°Ã~ðƒäæH¯}íkŸûÜçv·Û¿úÕ¯zÉÞñŽwl²É&©"%¤Þm¶ÙæYÏzÖ¿þõ¯wÞ9µ¿ç=ïÙ|óÍŸò”§ì½÷Þ‰gRc·…¿üå/>øàŸÿüçÏ|æ3ÿüç?§åÝzß÷¾÷=ãÏxÞóž—Ú÷»ß¥„}èCŸùÌgrT;«¡’e—]v¹×½î•WóÒzë­÷¥/}é!yH¶ÛJO<ñÄaâ¤ÿãÿøö·¿ýûßÿ~6”uK9'Ÿ|rüœç÷¹Ïk^󚄽´ãžý믿~ÎZt‡¸×ª~ô£}ìc7Ø`ƒ¶Ù6 @€ ”ÀÌ‹‹¦7÷˜cŽyÒ“žtàžuÖY?ýéO“8g2—ÍÌõÎ;ïüÆ7¾ÑËž‰Ñꫯ¾îºëfºŸYõ~ûí÷ð‡?ü¸ãŽÛzë­3­ÿáØKŸ?³~˜lÉ%—üÎw¾“W¿ûÝïfÒy饗fûÚk¯½ßýî—ó7ß|s¦†Ù“´§×Âî]vÙe3oËäþ{ßûÞŸþô§¤lÿ­´ÒJgŸ}vógÀ<úѾï}ï»Ì2Ëì»ï¾G}t¢š3Í«)<ÓÐÌwÜqÇìi+MœY ŸécÊI7Ï?ÿü¦ö¿C·tü¨£ŽÚvÛm“q«­¶jS¶£õZ5,¶ÍÞlDãñüI'”0)ySi³˜±;v¹à¤ío6†ÈÃì)vR]m“ºULz{ô:ØæM¬ò¨G=êU¯zUÞZ‰?³¶oÎ!xμ÷C&”ÍX'8L±½tŽ?þøÞ÷Z•òkÛlƒ °  Ìmx°é¦›fJ—•B™™ýèG?JHã¬9:þûßÿ~å•WÎä»×áœLøïÿþïÌà3¿Ì2÷n¸aË-·ÌöÚk¯iÓ9çœÓKŸ?Sì0YÎä„@^½ì²Ë2AOíK.¹$çz%ôZ˜©^Z•Id.ªNذÜrË5§Ú\9“ͽ\Ï=÷ܾð…y)ëU–^zé´3‡~»1ÌË_þòµÖZ+ûÛìSç²g?ûÙiyª¸âŠ+ºYFÝÒ°üK§2I]j©¥ºé›í[5Zl·œž¿êª«Ò‹E]4a[«1š±;vÿõ_ÿöÎé!fŸTW·=Ý*¦¼=FÙ“7øð€´ÃQÒªníCðæ½—‹Ìƒô ö¢íѤ¨á÷Zõô§?=ÁX·RÛ @€J`nåvÓŸbÏÆÕW_ýÏþóÐCmv¶¯ŽöùÖ[oÍd®øfÚ”…Ô£É2³ÏÉŠ,þIxU._ùÊW2¡ÏÊý÷ß ÅÈtŸIDAT¿WBÛ†¦…9Ãø$'zÉÚ?³Ìé‰O|bÎ{$ÈÉj¢ÌæóÒ×¾öµ‹.º(g$²h*çFÚÄ‹-¶X»ÝnLJœ3Mšœ‘Ȥ¿MŸInY¯’µ[)0+‹2³ìfÉö¤ŠÚVM*¶-'±\ZõˆG<¢ÝÓl̘±—¾‡<š}R]½¢Ú?Gǽyµí`›xt£¤U½Œ=ð_ÿú× „VY¥k¯I ˜2ĽŠüI€X0æ6<èõ* BrcÊ8`ñÅï½4ü3ñ;î¸#Süæpo–¿ç©É5š,G»sÊ"QA6’=úœyHdÒ·Õ5{r»¤œ@h*ÍQù4`˜2|õ«_½ýöÛsx>³ÃBÎêü¬TIá{î¹ç0}wOIâ_üâ«®ºj7×$·VXáØcÍŠü„=¹l;ûLÞ’Š&ÛVÝØ$ŒÙÙ®,š1c[ÂèÆhöIu–£ã>)q»¿íB»§ÝmUûj³ÑÏÊ·¼Iròjô¼½¼Ý?{C<¥UÝ\¶  @€÷¸À¿-™ûÖdòUF§œrÊßþö·”Ö[Öß+?§ 2ý:ï¼ó2yJl :×\sÍ^šü9)ÙÓžö´\1¼Æk$Í“ŸüäOúÓÕEÃÒK¤‘¹Ú8§rQiâ„Þ:™dÉù믿>ט6+‹~ó›ßdaIB—œ¯Èá䬜Ûî™’8k–ÒÓ?üá¹9OßfÉÆ¨[Vãüä'?É2ú¼àIÓ¶¹¦TÔ¦-¶}5yÌc2 ÏÕÕ êrÅEBŽf";cÆn!ÃíÑì“êfoöL÷Ié³?'…~ö³ŸMJ0Úªnâ!x“%×~d±\‚ϘwÓ·G‡¸Ûª\9=c!Ãbí!@€Ì7»9<È\6÷Ê$)‹³s?øÌ¿§ô$ÇÂs'ŸÏþó¹!ÌöÛoÿÒ—¾´™ë÷²LJ–Å? ?š,Yk”í’ð …¿õ­oÍ-zr0>×d5yÖõjL05EY@’+ òR¶³j‹-¶ÈÅÓ¹F"Çò»—ôòNIœÀ wXÊ šåæHÝŒ£niä^{íœÝwß=¹r±D7Ë”ŠÚd£Å¶¯6Y.Ÿ‹nƒŸµþ™‘gý}ö—dì•ÓýsRöѺº»Û“ƽ›¦·Gs$¨{ãߨÛßü9©Umâ!x²ì³Ï>‘ÉÅ*yK'ŽjnÜrË-Ã!î¶*ç‚rbj4¯ @€Aà^{|ÔîÛn~·7%G[sQfw1Ì”*rÙÀƒüàLŦ¤ÉK…ɦÒ}5§2çûÈG>’ƒÄÝý£Û¹-i†¼”Y~Z;š¦Ý9LœULÉè\ÀДÓ&în ÝR]ƒá)Ž&×°¢niíö°Øö¥lä¼D–æuw6ÛÓ3Ó÷ö ³O©«—·ýsVãžÓ Y+5}€†­jëÊÆ(xÞ*…\úÜMÙÛN<ü†7¼!—ˆ ‡¸¤U½ÒüI€˜ÿ‡{ê´éÎÜ4(ë¼Ë³g}KIâÂd3•›TæyJË¥½¹•PIl2Û9ýô©gSû0q.ÂÎK™å7WHOjäÐmzuÊFKÛM6%Š›ž±[Èèö0û”ºFKÈÎY{fðÓÅRà°UݪG³7—Çt“MÚÎø‡¸¤U“ ´Ÿ 0?æUx0?û0Ûº²L(kúsLúÍo~sV(Í6»ôFvÚi§f5Úè«v @€ ÿÄð OçßB1<¹ äj…¨µšJ€¸›/M­ÃN @€ Òð ÷|Ì=s…å¼èUn™{†Î‹’'•9ÿkœÔ’»}îÓÓM7åsÙ(,üÌ3ÏüÁ~P˜X²{V`ž~çC×fõÑ›Uâ^ãç&o¯(ÞSñž’W/ÿáE‹‹Ž?þøˆó¹1ª#@€ÀŽÀÌáAŽëñ‹_<ùä“óœÛ_ΣÓÅßô¦7­µÖZßüæ7ßýîw'8}¸òô&½ºë®»n¸á†y:ò¤Íþy×€éõÎêÕ#<2!AbÐÜ{'Bîà9«æ ñB!Óô+SÀvΈhî¡4>wc–á“x7vçî*jÇwìÆ$ ùšhaÆò/¸à‚<÷°÷€ÂsÍ£…_Dó¨vÅ @€®ÀÌáAf™yâXF»âŠ+æÑÍÓ N<ñÄL¶n»í¶g>ó™»ì²Kó,­½÷Þ;SísÏ=7EË£ 6Ûl³<-÷zÅ+^‘§n¥Ö$Xýõs@(HÎ-ƒöØcÞ½ö³*&ðn¼ñÆ\åÙ{5·ÍÞ¦1Mx0š8­J$“uPyòñn»í–JwÞyç<'+Ïvˆ–£†«­¶ZCp '\wÝuIœÌª›®5/ ÿ;Ç ˜Ôë¬ÿ9ì°Ã²ª'7îÌSÏòŒ¶TšÄ9=’‰Ë•W^™IÏ;ìÃN ûžÇ9çy[üàÛûr¦ÁÍ-AG+J ï{ßûNdó8°¶¿Ã’Û—&m,à2M³ÓÍœWiƒ<:2·ß~{óÒh—‡æÃ=£Ÿ‚¼>øà6O`È fdG«˜äÙîïÕ8úI}{gÄ+^sÍ59)”ÇêåS9Ü3Ú¤^iÉpOÛ¼7F}’+ëÈó{_£í™±Ša‚|çl¾ùæÝ;’M*yƒ 6È0ªkÏ)5¥6{Æ/·Iµ [˜=½áȃ´Û/¢ƒ:èï|g¢…æl^ˆä`Þ½£åä#œÃ%Í»:æH#ó<ø£6ürΩ×<×/wõM²òaMâÑ/íìï8ú%3)oyím¯GËý¬µYl @€À Ì|íAîÕ˜ŸŸ·¼å-9ù~×]w55-³Ì2ûî»ïÑG}ñÅ·ËÖo¾ùæ}ìc9Ÿ'ç'j¿ýöËït¦æ™|7ç’ «#òc“¼yðp¦k½vqÄ™ÖççùÎ;ïÌr¦î«ù%Èj,›yÜã×ì&NóŽ:ꨬpÈŠÕ„M²ülgmR³t§Âi^,帙%L ’}Ž0Úë45>y|r:µõÖ['(jžÄœÄéW}àžuÖY9`<Ú©aß3M#›(¨élóßIå kž‘|ÒI'eþšJ“¬I?,¹[Úèö.Ó´9sôË.»,nþLÛ=Þ<ìòÐ|¸'åŒ~ »ì²Ëæ=ŸÉSâ䦯a£’ÝÃG?‰Ã·w¢ˆ¼µ™äù z3³îIEÃ& kîé¶pÆíQŸäÊÇsø%0lÏŒå7 òîÍÜ:ÿšseù3«ìºy'•œð såŒT7q¶G›b§¹Mª¥WxþG÷‹è‘|ä ^ð‚÷¾÷½éEÞ¨™åOY̹ÒJ+}öÙM9!–%šYa5©ýy3$PÌÉ–Y k:>ú¥ýÝ'}› óΪö¦kÉ2ZþègmnÌV`æð %îµ×^9™Ãlp@3½N °ôÒKçj„LYšymSñ+_ùÊÌïsx>§²'È®¾úê™!åðX“àÕ¯~užD–“™®]qÅÝæ&$ÈñÎöËÏ|NdjÕ¾šÃ±™Cßpà ™Ç7;Gç$Fþ]rÉ%ù^j©¥Úì“6ÒÈ^ÍËf|èÕ\6`ØëÀNw²ÊüdRž÷mÎGÂFçÜ£EegN…çW0w™¼üòË{÷ É×}V€œrÊ)ͥ͢ín9¹Gg#zê©Ù9š8kfr%tæY¼›4M99BŸ©R™c„Ít­[fô¦ƒÍž„9%Ò}µ·=g H!Ã^çtAf çw^4ä2Í5×\³W]óç°S£}ÏÉo¼q®dHQMÆ Ó¥—^:ZQb‰üâæ:Å„LY»œ)E35-9¥-Ô2­jÞ]Y —UU¹ëe»s´ËCóážÑOA‚½˜ËCsñe®‘MœÛh3ªk~SÈðíÝT—õýY¤—Óqiç¤=½ÏÚ°Æáž›ÝÂŽú4¯?“ˆÚÒf|¶){3–œóH9š;4)Íî•ÜýsR-£ÍGŠê~å*¯,7Ê©Ú\7’"MÃF‹JÆœ¼½þúës¿‡feQIûg;¬Ãñêö=Û£_2MšaÞÙÖ>©üÑÏZ¯aþ$@€9˜ùìA~{rcŽ`eÚÕÛù)Í9åLJ¶Øb‹œ=È!®ªÏD?„JZpË-·l³Í6Y,›ëz—Ü¥ü,ʤ*KZóÕŸ8$wíè–™˜$ôÌò3½KK†‰s]Dgç zŠÊÙùfI&Í9áÛå†è™v Ìv޵ç²à\´úá8å—í®•ê%ž³¤a¯s$87oÉ:¨3Î8#¿èÁ\c5zÕ5ŽvjØ÷$ÎaÐt)!CÐû˜D”ÄÍ¿éVÿ›jäÿ3–œ<™X§ü&ó¤a)º³kR-£Í ö‹(çcóæÉ¥)>o×í·ß>Dòý0ZTÒäK)mÎaš„¾ù³¤ýÃNÆIåç¥á×WvvÿMú’IšaÞÙÖžB&•?ü¬u[e›æXà^{|ÔîÛn>=ŽAæ>9ÚÝWåî„ùeJÆüØ·7Óœ^NóÄ¢,ÊE MÞÑô9ꙃgùI}µ·s˜8íI`£¶mÊü åÏv)»¿ÙÈô,Irê ?f¹.°—`úŸ36`z¯)¥ê̦×2ìTÒ«ÎÎf°²Ú¡'<¬(gW’8Ôê{%×!3ìfwO¯Ëyih>Ü3åSS t3ÏËÑ⦢^%ª½G?‰“ÞÞi@>¹ø¾íæpO¯I%½.iv[ãÐ'gðò–KGF¿†íiŠšU¥míÝI%wÓ´ÛÃf·/MßèÕ2½Ù½áh¿ˆF«˜^T/KIû{o­IåOÿúêÕÛû’™’·°öéå·¯?kíK6 @`¶‡{êÿM¦dÎä5 3z ÚÙgalÐfÏ4}ÒL½I“©m›xÆaâa{ºQͰÀÌŸš,¹8xÊ5ŽÃŒÍž’$å¤^g‘Ϥ’»û‡Ê«Ãª³st°²XÑ”¬Wr2]Ïáv¯ËI04î~ r€?§b¢+Ds“®66H½*JT{5ŽwsYK·§Ã=½&•ôº¤Ùm¥CŸæÒùIáú°=MQ³ª´­½»1©änšv{Øìö¥é½Z¦7»7íÑhÓ‹êe)iï­5½üI__½z‡_2I0šwVµ·µôÊŸòYk³Ø @€9(:{0åŽfÉLs¼÷?š²¦ÿ™½.Á*er f.€ÉaÔDÔ݇s•€HC`A˜›éÜä-qðY+Q’†³ÈÙƒù̶}Ò @€ 0ßüßýùV«Š @€X0„ æ¸h @€{@@xp «’ @€À‚) &ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxíݼuEu>~M4š˜„$&¨¨ *MAQ# Ũ (¢T¤ˆ€D$t J E@:(ᔺ€ƒšòGI4*Ióÿ†‰Ãüv;åž{î¹ç®óy?ç={Íš5Ͼgí53{¯çñ>øàãâ@ ð(¿8@ dÂ'f(¢ÀãÂ'ÆA !>ñ1,¢@øÄø@à1Â'>†E”@ xBO~õ«_ýä'?!öWõWögöøÇ?>7ùÿýüéŸþéÓžö´'=éI¹~Þfu Ψxàä“Oþîw¿ûðÏ~ö³8àåýèG®Ñ_ÿõ_ÏDs´ 2­>ñþç.¿üòÏ}îs?ýéO3@~~m´Ñ»Þõ®ÿøÇGuÔ·¾õ­|jÍ5×<ðÀU^qżäÙgŸý„'<¦œ¶­¶ÚêÉO~ò©§žš›¤ÂñÇÞyçåÊ'>ñ‰K,±Äsžóœ-¶ØâyÏ{^®Ÿ¥BÛ@fÞ]7€3ÔÿÛßþ–üþ÷¿Ï¾ä%/¹÷Þ{)¼úê«!ù¢½(|â áæ ÇÜV…ý÷ßÿ¦›nRé'÷Ò—¾ôOþäOþéŸþéÖ[oýÅ/~¡òÐCõƒ|úÓŸþÚ×¾ö7¿ùÍm·ÝöÈ#¨_o½õøD2·ÜrËj«­–uòžâš·½ím¹¦RøÃ?üC¿äÿþïÿæ¤|þñÿñë_ÿúŽ;îøæ7¿¹"Y?üÁ~pÝu×ýçþ'ùúÙîš¶t·ê§Çn»õ÷< øÛo¿ýòcùå—Ík^ó¬g=«gó6š}âW¾ò•ä·Ýv[ñ]nÌép=fšé¹Ë.»¼â¯pv›m¶¹(¬¼òÊñáݘ«®ºªô‰Bg×]wݬªRÐêƒü`ª4UßûÞ÷¯ÿú¯§œr %Ï|æ3+•Ã;î¸C<ûŒgŒB  @³Oäbè2ÝrË-+JÍzè¡ßû½ßãMÙ’O$£&}ûažþù7Üp1ÑŸJ’×\sp¦Ï†ÜgŸ}ÞûÞ÷>üðÃçœsÎ{ìA‰Pô«_ýªï¿ÿ~ssSõw¼ãŒNž{î¹ÌñwÝuוVZiçwn&V~ÌÓÛ’ľño€BTøÇüÇ«¬² Íš4öXªUî0 ï{ßûÌg>C¹è˜kÛd“M^ùÊW¦StSØÛßþöãŽ;îÎ;ï4#΋ _þò—¿ð…/$É¿ýÛ¿U-ZpÈ­öÜsÏtÖ­€üå–[n‡vøÄ'>aFoÒ-ÀOñöE‚~Eä^õªW•;*¹åŸÿùŸ¯¸âŠýò<òÈŸÿüçù”‚é³ïÿú¯ÿ2ŸMõ¢ªÿ÷§­ë.¿à/àïÈüð‡?L’âõ×_¿ä’Kš²ð‚ .8í´Óœ"Æa)ðnv¸Kå6á¤*wäk_û×lֿꪫÂáâ‹/6Xm{Ì:zHææ›oÞ}÷Ý}éÚk¯m{äàƒ>óÌ3“a ùï|G¼lÔÿöoÿæ¦râ‰'¦³ôG”†éÐ}ÒÒmj•6ÄœâU?üpwþtñÅç(õB­K“ôÄw Ôhð‰~T¢ ¢f£õ©æÝï~7‡¢¼hÑ¢í¶ÛÎw–\vÙeSm±H*@áŠÔtzÌ1ÇhÈKZhì±TÛ@k¯B6ßbj+b½í·ßž†3Î8ã_þå_²ªûî»o…V°m’"eAëüÇ8 I1c3d./·J– B•9ôC9d¯½öÊKÉ8 Ÿ˜vK5‰©±iµ°ÅOÚ¡ªÊöq:å;…Š6d8œ‹É¦hhÐùÚSžòªR´¨Àåùõ˜•ÿìg?S67÷Ýøé_¸m üšM!Êm.q¾žqAÆT·±Ç²²'€ÿüÏÿœ|ßË^ö²ÔÐ.–‚Iô]wÝ•U Šßóž÷Xxá _¨’ÚJHž%ë+ ©‹¼mrÄ:.k]OÔ †õļ§‘c´FP<gëoþæo8D¾O8cØ<ް½”Ï~ö³iQ°Éi&ïÙ¨§­Ò‹SÙÓL±UF¥`¶±ù@ÂÉ›ûØÇÊ.úI­–mnOL:Ÿÿüç§×l¥Òúi>¥ža¿ÿû¿¯¾“dŸßÙþç>÷¹}6 ±@ €@Cœ(@ûË¿üKçL~ùµn˜„!tP’±ò• B“>eKZ&ÎVúš8kèq«i ž/ñm9R/¢ n‹˜&³*Û> g%•$œµ¢g'úqî=La,åyíOXÇ!ªyêSŸšMšIAx›šg¿ˈ3Á3Ú.|¢Á§ =çi˜Š[(™Ä•1Z~6;ÏsiHÓg~íÚk¯µ2˜½@?ÈŠ?üáë×’å[ÞòMî¹ç?iú- <“ûȆ¥ jsϞ¥ë%·bsC¼–?žZ§¡Òc©3•»ô µ™8Éo~ó›IÞîG*XM…~C)]767 a£Çé“ÎòÚͰ—hL sgƒ´k!¾»ýöÛmkøöض¸Éúš‡B¼Ã÷Îw¾Ó²ýk¬aÆg…ËCÚšðžVÉ íQp:üT?±WK'7Ç!òÅZqIvÒª¢h‘3²Ÿk¯ƒ£¼è¢‹t$¶²éáùÏ0šxj“®¾úêÌèÎ*xʲm 4ì´ÓNùÈGn¼ñF½èçZýõm|WzL7€Rs7€ÔÚúô§?}Ùe—Yf¥Κ[sXf™eJ=C—Ù¿ñÆ{›Èåó„©»›ÓS¥ù6´òhL1Í>Ñ2ü‡>ô!®ÇN¨Íû—^zi?-Ë[‚2 ˆ[(žßN;Ñ©’‹´àÁo¿ÀüØ]–¯l˜ˆ(Õ§^„KB­¬´ÿËqüýßÿ½Gùì´{ì±ö=¼)H¹gqìÛ^rÉ%4Ø„á¡:„Ë®»Â÷1Æ;Åö}¬XHÏýÔ{,Õ*wHàMoz·ekØÃ¡˜nóÍ7ïxϧ¢¿ŸCÏo'¦[…{˜í©ÔW?ÍC&X˜<¾ç¦™—Õ=>ŽGàL:û*b:1 òêÛ¬‚h [§iG¿¶#LÉË »G5| 3z ÷?{DÞVô¼‹h´2À²ÇÊ©|Ø`>ëîÂTÊg{;ø¤“NrS—[]¾ŽÙŒ(@B ·O ¤æ)"D¯»X̵6êŸø‡°¼`Î^¾¬9O‡f³‡@óÜyöú ÍcC@¼Ì ZRH›Q‚Ü·>ú›ÑQ 0ˆ8q>^µl¶PkÏʨ͜yãr€1‡h 0Â'μhS‡@óó‰S7ÌP }!>±/˜B(áÈ…Ža@_„Oì ¦ ‚@ó8¨©Èàc˜@ °ÀŠÔ› % >Ñ露´r Ó„ÀYgUN³O$Wñõ–³]sôÉçÎv¡?,{íð¿9·êŸVŸXÍa{ï4þN£Ç@ ˜zÄ|9ÅLe°±ÇR$@`ú蘆†OœþË# þ˜7>Q")ËäK Ò¥JE÷,×VÿžmÉ™›Ô8Ò>Íögù%S’Ú>[…X dºÖåý—¦PRUÉ5‘&ò)‰sû1d1xÕBè–ø  d±Fh§R:,‹RÞJ—-18Àd“0· ‡®pxn´ÑFh $‰!,-‚ı’¹Ž*Ÿ`Ť5×\3ÓO¡m¤ý´M2²êÚJÃW##Ê0,©k­µVÿÍC2º|"tP Èh½ÿþûÏ!RˆD¸6,Q‹-¶3¸Eë£8E¿øÅ/^zé¥2¾`8a8á(¹ƒœe–US·¥ºAîþî»ï>à€¤æ®øÍ²ÉŽ;îȹpeec¹nR£˜Ê6#mSÒX)AzsiÏ=í´Ó€Ó(•@ І@¹³|Hš4WÚcøÄR²É&› Ó“—?•à5ýÒ—¾´õÖ[ï¼óξLßûÞ÷fRQžÃ7¼á H]¾õ­oiH¹,ù2žVºH‡RyËHsrˆ*ÅtÈíxFé¯S×rëóƒHcijW_}ujÈC!lÉìÆuåòZ¯´ÒJ2 ÒŸÈíd¢f9wy衇ò˜šœp h¤ ÖHyÞº@©¶n’³æû;ì°Fš}öÙç׿þu]gÖÐ6RV Þýîw¿êU¯ÚtÓM-Z”šì¾ûî¢Bt²¯~õ«¼¨<ýôÓq3H£ÍZcw'ÃL­Þò„‘½xàîYCÒß@ P"ÐÃ'ú½ÉæX™*›qChEý 1®HæœNñ,\Ÿˆ£’i¬ŸèrË-‡Ù*q­ cB *öÔK:ì°Ãø‘_ýêW˜U’¿(»HeŽU!>åYÌÈlãnL“ÿ¢ÐœZïILH ç¤ØôVóÄdN˕ᘆ !éA‚þE/ ¹.Ðm’³òe_|±y±™~]gÖÐ6R湋 x8ÿüóÝiÜ„Ë+TÊE…\6nCà ñ®µ®ÒZ‘_éVtÛm·U.e6 @ >Ón»íf®Šd®ÄKØÂ›Xàã&¾ñoäS&k&€~Ü'rôÑG gœúæ1Ñšðð­ºêª69ž‹ëlãöÓ5u"ÚDsbUþšŸåmÕ¼îu¯Ó…I™Oñ)t,)²Óê1diú-Pr¸Éï˜ãØÓ(PQ^1‰£A”,bÒ[o½•|EgÖÐ6RdßûÞ÷z Ãèö`Å µòº?¨†ã&F³¬±àbm¾¸åðƒÜ:ž/ôyÏ{Þl¿äE!˜ôXO4$Äx¯xÅ+®¼òÊÄý¤Fp‡0Ï–‹±r";NƒçbÒ–ß$w©Iù 4=$† 0½R㬘‘@)“ôäoñÏòË_þ2æåúTÀ.òò—¿|Ï=÷<ñÄ9_®a…Và ‘à†*òõC³K“âg=ëYN™Tšz‹­¬0šiÖ…{ hRšdæn'ÇþORºÎ\Ó6R {Þ×w›J§VK.¹d*4Þ3Ò)L,Ð=玢ôö‰‹ ùŽ<-5µDœ6 ¬O¥Å¸Ž>ò©D¹‡ÆS|—+» BQ®“G~ãߨ(ižnÑs:»á†^pÁLêgWDq%΃8QØÕf´5Ç·¸fõ3íM[ß4?µɽŠïìá®¶Újü‘ø”¼…¶4 ä^¸æŠIl³ ÂqÐKóÇ?þqòYçç?ÿùÜ\¡q¤†|øá‡Û•ÃZµíƒ½¾lÕ³|ðÁë×’…'1mgåg•z6 @`"ÐÀQ%Ž«ç«Cƒ>­$rOOyÊS:–´êmELÖ—³°ËVý•wïfÖ« ¦ýŽ:‘{±±Q÷uýƉuP²oJo¹Ô:jŒgOñæ¡å©zMyv¸rTvˆôØz·¹¯6“ê•:sóThSâ©ÌŠdŸ‡vÃÝL¢Eú ‡Ø'n!¶0Þ'.L¼æã¨=Ij'Ý6‹—|lÓÏÇ!„ÍÀؘhŸh®×‘ÒglMMG·ß÷à…_½}j† fÉõ‰²àZ=,—gcü¡3Éõ‰¬'–¶F9ÙF ¯çgÛˆÐÀ„ >qB.D˜@øÄ‰¸ aD Lá'äB„@ 0LôËȲ‘=r¡0¦ ˆ§éjÆX@`¦ôö‰Ò±H #}J‡3Ó£} Œ@×ÜYöi‰øQAñ†LÉÊåµ_‡8)¼A<†…I@ 0¿èò#²É‘#K˜üT²6Èf*©×ƒ• Þ™f- “@`¾ Ðê%æ’rU*|,‰@Fœ”ÐYy^ïÉ&ÅévÛm—r…qO(MV\qÅ3Ïõ)«Ÿò°r‚©¦›0Yß@ @ 5NLï—iP3^8LPîm´ÑF”Êõ¢Sªm&)©½ä©’WKˆ¶Å7ê>yüñ¥ý²†n™DïG¢÷fʹŸBTZæj©…~Ü"…¨T8DyXñ:äÇå^•ù)Âzë­—Lb¤è²îܳ=Q@ !Ð'Ê_M"ÑoVÀJ¼q÷«çhx«‡~˜'Jb‰ºOÆ|þH¶}sØŠ†n™Lï·å–[ÚÒ¡AÖë¤Ù‡¨Ì«rµÙcNmÚ~ä‘G¢Ö’70U2&|b®¨  ­q"—g'×Rq¡”Í’Wˆ¥JŒN¦ ð‰Ót5c,@ 0SÂ'ÎÁhÓ„@øÄiºš1–@ ˜) Ï'ö£RJId¥ä’ëPz×~šÔe$Ǿùæ›o¸áÙ¼ßúÖ·JȈÔ%Q¯Ô…gµF*ÙϤ®—64ÔÔŸ>úNó쵚dÛfoÔ¡9è‰ÀÀ>q„§ÒrÈ!n¸¡´ØÒØz衲Õfj—ž¦ÏP ¤?½ä’Kt=„Oì@ãóŸÿ<µ2„ãÏZi¥•>úÑtÐA(1¼øÅ/NÆKq¶ûî»{“2¥éM•oyË[$Jeõò³m»í¶Ø¸ºÇ[§[ÒÙºm=›„@ °@Ø'Žà”ƒ€2&©iwÜq‰>e ÐKø8úÓ64ðž~úéøjð¨[~C¾òÊ+³O¼úê«_ô¢•1Ýë•|¨Ti¸N:é$JtÔáN£mcÀ<ºæƒùÄ¡ N뤧vÚõ×_£]wÝu5Ö¿VÌHL0¥RuÌ1Çp[묳Ÿ"ŠDM¥~‡vàRŽ[ _|qiÀÕs Ú®¾úêXýèÁšP§B%–>uúÓTÏa•,©*)UÿOËã×>á¡·$MQeZKÉÖVYe1º.>N*3²”ãÎÎ s·WÊ¡»Â +ÈÕ†AÁì^M@ªsd­!8Öm¶Ùf饗®§.“5+4Ú¦ÞpùiûÄ\&Mw5Ôµ Fÿ€W¶½Ò¤(“ƒÀ`{,CœÖ9HÑìa‚„TØk­µ–ŽS?×͇>ô!ey¼y74~N¥úýèGXRYå<ËßøÆ7°àEÐÕªIë~ûíç÷yØa‡ñ>I,}×éOÕS[aIm£Tͪ:ÐXyå•îÆoäþpÚ¤&ü 4àˆUoºé&5wÝu#Õd…ªÔc.Lg¹K®ÐÐ(‘]e}8u™Ô6}7Úf Ÿ¶Ì-»QÝrË-¯}ík y¹å–ë‰^iR”ÉA 5N¼üòË+V"ŒOé!† 8å›*¤ˆ­Uâ -ûâ Å,&ž~`êùDÑV)ÐXæ ÅSf×\sв‘ 55¬ÐŸ¦Êº…”ª©IŒ1ÛÙÝvÛmbØ=÷Üsýõ××ÊôùË_þ²é³Q›8#ª¶“´µ} i³•x]ãDtP®§.S*o´Í`ÝÚøiËæe9c.ÄvÕÖ]w]Aeh» õ¿«Ra”±!°Å[¤Ÿp¥ÇVŸHN›RZûLpjª[žR®œúÅòM‰„¯'i©íŽ;îp˜ËúîòSŸúÔ”åÌŒ›¤˜1ee*Ô u {êé@CG’„‹v/¼ðÂO<áµ–yV‘ ñ€i½óÎ;w˜”NÙo±²ÄK8ðžzê©vê9 åFÚLݶîË×fdÆ<5á _˜%ÛЫüQeù(ãD #El—OdbÅŽ‡àt©¥–ÒuâJE/åS2DsÎrsAL^¸'jÏØ³§ž4’abOf|ÿûßG%ˆVÐ4Y`êœsαä÷ÐCYHmBYyÅW8LÛ2Ö­î¸ã޶È÷Úk¯¼¤@ §C¦T[±-íó´ñÓöÄ<ݾ÷½ïå.ÚЫüEeù(‚À`ë‰ã!8µe/‚ùÔ§>e‘ËÒ8áeÂøƒüÀ)Äol±*Ô’þ´Q‰Êžz:аÕð¥/}Iôd1ΖûYž:2}V°¿„6Q­Ö xøá‡o½õVR»§œr ‡•Â+n”ð“ŸüdÍù/êtc(‡Ó&“{i´­ƒŸ¶Ìss—Æþåãžèe{¢LƒùD¦›5o·Ýv~êÖÔ·Új+¬¡÷߿߼H!ù)#‡~øLN=‘ã©=C{›l²‰åËL8%ìbƒíQü¥mÅĪmhSW»ºóVL†^sëtØO-íåÊJ¡=mhÀǾ¹Íì7«~I¿5T¶¥^é1Š‚÷Ýw_è–ù^ýêW{fÓMÂY›Q‚S+•vWìíÚÇoª/‡Ó&“•7ÚÖqùúÁ<5Î{ú’ûöPA?èe“¢L ÜÉ8káþ¸Ûf:fjŒ|{Ê$q©áHN­—™|Ù?µ9kƒÂ¬“ÃMú9Kû>=AìI…jt\gÅþºÚžzѰ“kׂ›Hóʺڡk~ñ‹_¤•DPÓoÏ7©*‡Ó&“$;lk¼|ýcÎalùjSOô†Æ!C#Ðáßz{–Æ^ù‘ôÌ]ý,/S¯´F g±ÌœÑ ÑC-‰º>)ñ“ëS›P¥[²OoÕSO#bÛôŒa· CœÍ[+¨Ëá´É¤î:l«èLòýc^ÚÚöDo¢I 0{ égÏ ¤ÙF­­ nÑVfÚr™íC ˜PŸ(¸ðh±O\¤@ ƉÀÀ{,ã4.ú @`Ì„O3àÑ] L4á'úò„q@ 0fÂ'Žðè.& Ýc™h̸‰Dàè“ÏH»Â¨IA`¯ÞÒ)áûA)dæ‡í½Óü04¬;Þ&ðð¬ïž=Çܹ'D!óþ§áçýÅŽÀŸ8B0§\•„˜rü¤AâB8ï¼ó¦uÀçž{®ÜnÓ:ºW7±žØÏ=[r‚Ó¬¤%±âÐL‡óP9+%YqÅç…µaähŸ8Z<§G›iÜi<)SÙ8‰'Ç”ÖG?vöî)ÐO/!3*Â'Ž ÉiÓ“¹óÀJbÅ\©ÐÈÏ—˜7Ø`ƒ b#§ aÙÄegžy&ÿ+w¤Ä·Êr/í½÷Þ)S½9w11àÂÅÒUÚ#•ï‘Gi¦/ÖsVNòk¯½Vj^‰>%9?à€äÇ#1¥V6"Ñ×Hø(÷z\`ÓÉ–â’Å-#§úÄz&%ó¤¡o²·˜ IDATÄ*a–͆Š@n«P ã’”}ÿý÷Oè>ðŒC–#Jm`/›GyüÄzâø1Ÿ=Jc.Q›\–ÉbiŠr9ûhdI$\'kÔª‘S°ì¹2“Kƒ$’LqòuK·Nw¦Uc/9¦ÌÞ•LBGƒFÕ)¾ì‹_ü"G&»¥ü¾Ÿ±¿ÄôrñÅ'y•RüÊA)±­ G3j­’€4ãèÕ$ñEê%*–« wo8uÔ0}—Ârǽîu¯ã”åB7Xé5¹æR b Ý\•#Nœ+ä'½_Ô¶ÛnËJ „>ì†ÒJVÈik㔆V‚8Nëñ-_7g‡ÆKx¨Uc/=qh%%0fp´0Ǽ„ä¦<’døVÑY¢ú¡(\}ðÁ%è¼ì²ËÞõ®wI²{ûí·‹àäèÅ®mV›'ȾóהּÒJ¼‹@ų‰Ä¦. ßü©o½õÖ×]wˆÛ±Ç«—Š@n…¹B |â\!?éýZODÛÀÊîय़OC™Ò“×àïRØÕÁ)h‚œ²scžyÉz›½U½(e $iÀ˜Ó72 Ó^<b4œ è±È^uÕU2LŠM½QÎê±1Mò¢E‹°ÎŠìî½÷^SïRm*÷(›° Y£D¤ƒ2S–z¢<{„Oœ=lç·f®ðÏxFÏ1´ñó56ì“S°Þ¶ÿ^_|qžW¨Xî/¿üò¸O?ýt$B<#†1楗^Ê!Šòø)¾=¤·8Qïyâ,ê<ðÀq%rÓ»ì²KiX’é¨ «a›­**Ì3¦q•=–­¢<'ÄzâœÀ>=ÄÏדS° —Æ^LBÅ\7ß|sÙÊš Å¾Ïþóˆe,‰"D‚h’‹·–GÒ4Ù·ˆÏæöí 7ÜСMðxÁ ‰¼è¢‹xºäò47ûFä-ÒZj^»t·¸ï¾û4l°Aô•¯|…€OVVo²líÒB'o›z)m_s‰@øÄ¹D ú–½'KbfONÁ,Y)4ö"²ãì|—Â|ßGqÏ=÷à2´[ÂëÙŸ±ˆ¹ñÆÛƒöIü0<)³¥R«„©¹¨Íß«^õ*m9Ö4+'c ’c܉4-)’ãßH³í‘6ŽÕ¶xÒœ…9V>Ñü]½ˆÕÎß]jKòñ=· ÉÛ7·FGïˆ@ÿü|Ýœ‚ÝCëèÅ ­e[(_æwDËš&wèG–-´ÇUd²Á”,¶Øb鬈Ò\;6 ”JJá²>—{ dÉ( ‡À~GèÏ#ç€=oßpfE«)F Å_ý «JbÝúï%mïdmÙ—åšzÁ:c½RM6¸TÂÛæÃFRU)\ÖçrO,…ÙF ë¶9Û}‡þ@ & Øwž´+ö €™Qÿ)¡†ï&ZN5á§úò.¤ÁÉ¢ì™ÊrIq!>Æ:2Â'Ž ÊP4·D„8·øO~ïÁ=0ù×(,1$ŽÐ)Rg]%¸¦èzÆP@`fô?ˆ}ç™!­@`ºŸ8]׳Í$SH½•sí”væG1˜benpm¯óŽ*@ö@¯ún±Åp() F Kh †@ |â Mb“ùK”“ø÷´€m Ÿ8%_îiœËÁ DP6¬gùw¶K@¢NMö|I¤&”ãúÇ?þñ§?ýiYgäÝZ{íµ·Ûn;Y¬i¿ Á‹ü†*åªÉo"—v¶õ"Q\ÙÚ®³Î:?ûÙϼ˜,[m÷@9–(ƒ"뉃"6¡ò3¤ È£jÌòïl#—€¼[ò»ÜrË-xEäž‘NF *Éc$¯æ"Ñ• $IÊq¤P’rwKÐ{T™) {!)¹™vÚ‰'•s›˜ÊFî¬6 ÀpDœ8n×jæTiHYþSFh‘`…Kছnâªä"DN’šc @3²ÑFɯ%o«‚–ecå…ŸÒmÉÙER^ë”:°Žc½]ˆ=)äyɳ0µmä¨+Œš@` Â'×ä Ïœ* ­1Ë:Uç0qv åSÆ%Õ$.Þ3µ­l¶ë›LNV˜åë…z/¨KˆÕ3õÓïS×5ÀLŸ8ô&¨í¨¨úÏòoð±o …ˆ”¡ ï]ªâIY(§–,Öj„¾åß· ˆÿ$·ê.È›M é”AÖ'1t·Š³Àp„O·ùÚ*'ñÊ%âP§Üœé)PŽüe/{÷„›²e¾\cbk²,êDƒÇýaG±Ób*­»[o½UV9®KUeË”Hò°›r¯¶n¤_Má¡~å©FOŠjª£yœ B öX‚kÞ ËÉÚMÐS „@œˆ'ž[D=êaCÌñ©Æ†ýly¼•­dM8ÄÍ7ßœ+üÔ§>eœ¹™Jmme®p÷Ýw—·õÆoDw'ókŠ1Œuî6%Qô‰@pô Ô´‰u$ñOCí)P"b‡çÉO~r"#Mõ(¢$ñ¯LqTqpmé¬K…•²987j}à®»îÚsÏ=<ñÅ™ ÷@ål.p‚{`ÿô~Ï$þ=Ê>ÒÂbYÓÈ+P:ÍR¸gYlkbn±Òªâ3ŸùÌw¼ã=›„@ 0±ž8nÑj¬uÔQ¦ÉÜ¢5дå2Ö…„@øÄ…tµçíX­+?úéAptãgûA |b?(…Ì<@ ¸æÁEš&†OœW)lìþ“†ö¡,D¦à˜Â‹CêF ¸ºñYÈgƒ{`!_ýûèð(û蕆Æ1"Ðÿ4"žÙãe‰®@`â“Oì™_þsŸûÜyçW‡«­¾.95÷Þ{ïZÕaRI Ð(V^Žž×´¢aPù²y6ì‡?ü¡wûÊSC”â?øÁ £ÉB@ _ŸxÐAm°Á)»IÂEšOé›ÊDxxÉ/ÿñ¼Cà’K.¹âŠ+êmõuI5Rðoºé¦Þ Hgo¸á6§\{ò³Z)ã©d«³ÚÅÈ•ËëåÓ¡¶¼=¯iEOE~ ×– »ÿþû=¿-%mEù@‡]t‘äc5 á…ƒ@¿>q½õÖÊ•W^™¡¹úê«_ô¢¥<(¹²­À;qÄmgGXÿóŸÿüØc¡ÂáTy3÷°Ã›î×-½¦¥¼— ·Þzë!°õVŸ—÷ßÿ!ÚF“@ ú}g•UV‘›DÆP锽Ä*ÝÓW¿úÕ·½ímúøØÇ>&[ÉOúÓ¿øÅÛl³ÍÒK/­2%‘—峟ý¬äòŸøÄ'¼ì%Øl“O¶^~ùå§Ÿ~º¬'²4k›*ówcNü|6ØvÍ5×ÈP¿æšk–§ÚŒô¢˜”-gžy¦Ñí»ï¾rè+?ýéOß{ï½}ÓÐØ©ñšÍÝyçÒÈ­/UjÙ—²QÈ“ öŸh=íéG¦q° óa%@ãÀs+… g@O˳üÙgŸ}Ï=÷ørÏÀU¥Æ¾ ó·pWÇ•²“xê©§¾óï\uÕUKÃN:é$<ðºß~û5æX”’® ?ì<Ы٥eWMbp#™½uQ9‡SŒ@¿q"_ã/L¶w©•ÁáU|™eoæs…þøœâ)Xf¬þžÎ8㌔<Ê¡×øÓ©Fy§ä•2EzéK_ʽÖ'Úm9ñ“Îü-E•Е MäJ…ÆNY%i³NSÖ,“2 ©d¦òS¹öÚkµjëTr“8y_üZ–Xb‰²#e¿U éÞ0PvþžöPÞLã`+FæÃFJ€¶çVÉ’|Mû±ŠL’çÂÜ ¹!>zm}5¦ßç<ç9¾¯¿þú6îg?ûÙòûStÛ¾ûî» ×?–ßô¦7¡4øö·¿íN\à¯9kú¹×/~ñ‹éï¼"‡ÓŠ@¿q¢ñ›>ùË_6}‚™8¿ä%/‘¾I½ÈÑ7Gào±\ptƒåÚêÙÚä%ð3^EÂQ‰öÄå›­9ñËk#ÜÛm·Ý>ø`4Ik­µV>ÕÑ©wi9¿ßr^ýú׿ë]ÛÆN9;‰£òÀD¢—ÜK*¤TÕ))aÿÙù“ tØ“ô÷”iìù矟WZéñ¦\ºýi qàõL×åÀ{Z•…95Q>±Ë‹éà‰®`ùå—ç.Åé6Rüi5F ê*s¯¬×ÃÀ×¼æ5©/i½1ÃÈ혻΅wÜÑdÂ! ®‘dù”‚[š(õøãO ÃÓßy)å)F`ŸhõPP@ܯ±óÎ;ÃÅÕüÅn†¿Qåò¯GjåºCì×–C¤sÉ%—ô}ß}÷•>±#'~åò¸«cGâ»s¢ªŽNMý˜ià’øtMÊßXc§L»ÐÈñà^xá{ìQI©_2ôŸ?¥ì¶'´[¦m°üN¹!&¢-¥õ¯Ø¯¾qà©÷¶ïn«ÚZµõ•ö…ë†%=.}ûÔ5/Z´È=[^2ûþ¸bêjr¾2ÚsEÆðý=øƒ¯ÔÇáB@`ŸèïÏ_Ø9çœc¹ÊÜk¬ á•å!wÝ7¿ùÍ{íµ—ùQ7jýȧ=Á´—µ ”_ äמ·Pûé4wTÚ:ås­BzxÈâ€Xø“ŸüdÙêiO{šÃEº+ô“¿Ô0“rÛ`]£ºÚ6J€¶×5 ]“ï}Ý~ûí47rˆÐ-ŒpÁ] ñ¬ú›t‡ÃÕ(SVŠF…Ìeòâ‹/îÖ⪹ʕSq8õTç}ÝN»Ï–rV[mµ´,Í9j"¾Si.iâiæÛ¡¤C^He9ÏJ%nLÐé§’UåœøW]u•˜TÞùŽÇ)´-÷|;:Íú Zÿb§‘º È×R_ž· )À±àHgÎů‰uR+•¹F Ì I€™CÚF3ªh°™ÀýÃF9w“újø@ft ÃÇlÃbŸõÖÆ¾Ú £6k–íoÀdåæ›o.û² ‡Û’HÓ߉˔Κ’[É’‰8К¸'òM–±¦lŽ‚ØÀjƒ9>¹a¦Á|¢¥´ÂÖb cÍΚ‹@É’¶è‰¿Ev Ö!oÊìÁ1Y”=¹&s}E ïÓ4¿"ÿ†7¼Á_vªìè´ÒªrØØ©‡ã¬ÐÛs÷,¤-‚Òùææž”´žÀë‰ûÌΟÛΰ0Ð`Û(>CÃÊæ¯ýë­·Zv°ÄÑØW›a”ð\Ë.»¬‰m#÷ç¢xrÖ_‹uRXRÔÊŸ–'F³ œkôÆ7¾‘÷Ì(d+˳9ÎNª¬ä†Q˜zFÃ= ¾H+‰þÔ<žâº¸y¨ªo\d…åÄÏ­::-ÅËõN8"b¿çFy•ö4¬½ÚÙL¢~²ó·i´~ Á -ž—ØÊ¾ê/Ïΰ &yM°ÞWÝ0sˆ“O>Ù6Tù’{ _$ˆ5‚D«é¡HÎ4mòПþnÓ@J™Tc–€ÝBÁ¬®g8Þh>‡Œ›{ ÿaùïgØò=5Ô ýôH¦£ÓžêšívOxme–ÓÿúvSÏ‘ö´ªC` Á¦]¦Fmõ7Š WYÁ¤ÞWÝ0˜7:ÄŠyøÉ!:k-âKb¶­Ü*7ïR&IöùJBŽïé@`€=–éð8Gϵí¡÷‚·ÜrËžÆô#ÓSIÌwÂ'Î÷+ö?†€Éxÿ)¡kÖGéo6ÛÉä«Á™÷„Oœ÷—0îøK áGc(™{f)Bœû…#B ¸Fd¨™?÷Àü¹Vã¶ÔºŠ==ß=;ìùÄžêB  D ÿiDøÄ ¼|aR Ìá«ÐÏUzýªœ½ÀëÀ'žx¢äƒÝU*Û„½îæ•8Y0$š½÷ÞÊ ‘  ÷@Ö…@ ŽÀ”ûDïoI•>›m¶Ù>ð2C5s•^¿nÌl°paçž{®9º“ Ë+½õ~3+@)\ŠyÑø€ðþ‰‡Ÿ»_o/[Uʹ—J}>,/D® ÷@Ö…@ ŽÀ”ûD¶°zÚi§É2ë½.I¤Ìéé3Leºü\ÙQ(åå.½~Ò?K첽џ2÷H1­—ÊpJ³KáR,½8,Ÿ®\ÂÒk—§ú,—½ôÙ$‰y Þ+€Á=0h!<Óï½Ï/ÝÀ +¬à}~©%ä€2)KÉ%²l~ÞèêÀI—Ÿ3~ûK˜( O'‹IÜe—]¶ÕV[Ñà°Ô6˧ôúÞÝ–!"MTû¢Sb+)s¼Añýï¿4 d/±(eÊãÎT¶¥¼/åsº|•Ê~~DI&ùGÙY¼Î,Ñ€mGz}:K††Üµ'¬å%ö•?úÑR&ÁÔ¦‘$Y§@è9(¡œ^4ö¶¯déUä~+f—ÂYF™š×.ºôÛm5D?'œvF?­Â'öƒRÈÌVYêç­aèàÜôiôÄߟÅ«Ã'~Y¢E Ì)áçþè<& '>áÿ^‚˜ »"Nœ TCg Ì"'Î"¸ãW-Ë·w×Þüæ7ëº,ß’Qõø…/|A’›”Y£Mg?2mms½œ@r5JÔøêN¨0—` !OpøÄùz>ø`)We._A½$íMò‰ey¢)5YýÝê6 %‘íéû‘éîôØc½øâ‹ågÆòË/¿×^{=ãÏh3ÉÜÞ’ÎgßúÖ·î¸ãŽù°,Lì%(Œr'>!öX*̇CI 0@=éIO’´£HN1ù¶Kl#7­Ènœ¦öìTïM7ÝÔKÙ Ã sÁÈæÝa¡—©?úÑ&” ©C8NÍ/þÍogÏàXOœ-legÈÈuÞyçÝyç)‘mGg²0ȆvÊÌzíµ×ÆÄ$&’3£“\R¨bk:çœsöÞ{o|[ÂÏE‹‰CK…øyîLsÒP,|øÃ&€âjÙe—ÝgŸ}”Kq+ˆ±”{LR’å [A¿õ¾éÖÃ{î¹Çpx®¼àÚ–}ÉZÖT¶É`¤2LD©0D£©wZ—1ýú¤Ìzˉyê©§â“î,*¿7YYS×YžUf‡ëb¹ð_ýõU6¿Ò0ÇŒÀÃÌ¢OœÅtÌ0MZwÂÃÄ+Ͱ”ß»ÃÂ6¦§¥–Z Aš:m¯½öZeɲ”1,×M£.A µí¶Û@᤬àÓHqÕÖc…@ªôªìëÁLU¾ÛdêŒT•Né©Ë$å¿üå/qRKþ¥›£Jò]Ù¿}2«b›Îlöœ_¹mƉŸ˜ÿ­µÆjÿ²Xÿn4|â¬\J„œ¸IˆJ|¸³”Mº­3ùníˆïüÔ…r2}Y€¬ ŽÄ,·ß~»X ωíQŒÅ;™Ã¥Ô.µ »D4k¬±ÆÆoüž÷¼'±”•r[‰@JˆŠ‚JDF ¹Ê:ë¬c çb$ÖÃ~úêÁHE¹@OþpƒbX¥S5u™dÿÑG I‚­E˜M‹£Ù–NU¾åƒp{ðÙc=Ò©6é,TÔ¹Qæ¥p¸qø•Žâpü<ü›ÿÉÿ.ÿÊum8•ÅÚÄ*õ1w®2šC¿U+‰æÂÔ µ|¸Eþ®M{Ó“ìXw<úÁÂɚܙâ™W&ãD(—Ó¿­‹J}G¥d#é"„ž}µÙÓÁH•ûm“1 #MMûÎÜ¢OnU)p艛[xèT›ÎÜŠ*+3äüÊÚ¢0«T‚¾K}íõ¼²Ò£ÊŠXE í0âÄ6d†¯7k³˜ˆ¨c”Ây[»§ÏLO(˜m¡âM¶4É? ?ûÙÏZæãsKyL‡Âß~ÿ%••š:ÅUGäM¾}ØïùÁe¿û°§»¯GÛ=®M&1R¹=ØD{&áô;m“Am*ÖƒgÙª­ÌZõI¹rÛt–Íq~aìÙj«­¬„&Ú8ü²I”çrFœÊç_~Mi‰ÃºL)ÐQŽ8±œ!O¡71S¶§á7œTØÍ°ha«¾˜2Ó“ù )°èlõÕWOÑÆw2¦ÏW¨RÙÆBŸW\Ñ„—/¶ifm×c}’ÉWæã™âª£GÁæUW]u÷Ýw›¹gÒ++z· @G_Ùª6™ #•Cî›/;m“!éöݽ˜ÑÚâöÛoïn‘ûm+´éÌòbùk®¹få•Wö˜xo‡ßÍ»FaöøÍ# ás.ûê[7\G§ }ÚqbŸ@ fGØ&@vˆZòt‚ õmZLôÚ˜žø É÷ù;?Wß)¶ª,&RëÔæ›oÎÚ(°T—œÔ]#ÅUG%”Å»:“WG_y€m2mŒTe§m2Vi9A~9õb¿EÙwЦ37çWV…ÙCà7ü¶ñߙſÆS*û´'8ªújLbâ A™žJËDCæéÂ.ϸð”?Q®°î¼8=uΜó+Û…Ù@@^¹Â¶Úb³!”ŸqÖÙ9¢'Û¼yåï­®'æÎuL沦äcÂŽ28-›·Q\‘iëQ Yj¨“^µõU¶j“ic¤*;m“)õZî©ÓÒ„O]m}øu™¨ôô aRøÄ!@›M<Ž“·,æ¹ab 0¿ùmÃzâ ºdÃ'v¡3Ï¥™ùkXt 0“-”µéTøÄž…@ L¿ùm¿&CØ>qТI Ì%4=‹3*ƒÂ'Ž ÉÐ3$¾Ž‰0%Œ˜5"Nœ5hCñt!à)éPŒ¦E_º¸ùÄ(jã™íQ :@`Zˆ¹ó´\ÉÇãüΠᯠøÂUŽ1Ž î÷XFÖM(š#‚ßyŽ€n@`‚Žª ¾8aZ Œàw;äÑa L0'NðÅ™o¦M±±%ˆ”¤'gxìE™%Í-¿sŸ]‡ØD!>q¢.Çl“)‰°È§-ÛórË-7òÎÆFgœ‡“†H®å(Ä€}PJ.ÉÀ%›Qÿ†7¼A~3b•&Ræþù±ig^ªÀÏ|æ3Ï|æ3Ëš(ÏS‚ßyž^¸Í–ËU©4Ú'œp‚Œ‡xïV1I $þÊ Ë)I×ñÇ/…µÜ·[n¹%:‡2àŠþ6ÛìÿÒá•M*¤Ìýó;uÔQ‰k, ½$ž†ž¼]“^ØÒ…@ð;w¡3Mç䦿‘Ø~úé<ð@Z#¿0†©ãŽ;î›ßü&f%,"ÒÐÞ|óÍb/¹ä’ZtÒI8vÞy犾æ®FÍ¥@#4\N².bj=ùä“Eµ3ùrÙ#J™¦Ÿ1—^z)SQ'§Àp§v’{\â[¡bÊ´XiRjË]¤‹üΙà!¹B±aN™,Çë€ÓæC9âˆ#¨­3_÷D¦4,ÊãG`8ò©>íŒg¶ûjbÚ¬—ÉŒ¹+ˆ.E‹ï{ßûDLûí·ßi§vØa‡ñ ‚ ?cÄ››l²É2Ë,#6Çtþùç_}õÕoûÛåâôÍê§IDAT¿è¢‹üàÍO+bå5'W•Ä´DÙxòD[H²Ôì¶ÛnÎb޾ÿþû}ã«âæœb^©<•€ø •ùAd xÌ—Ñ æ^[l1÷€{ï½—¶´PH™5á³k+5—üÎh¿PW£0,ºËlæïp$:ÍsJ]§ `Odº»ˆ³c@ ô‰ë­µzGW]{}ÇÙÆSáa™›Êï~÷»–õ½á†n½õÖ ‰_x£6JôÊgžy&ze¿^ëeë®»î;ì õ3¡¦ãE^¼ oõõ¯½"VŽªQ³à+Ëà ucϼûŠ«]vÙ%y4îãÃþ0ò?½`¹Ë­ÊÏ~Æg¨aŸøàƒ*£—)e¶|bN¯€‘™€í—³Î:«”Lå ¿³X59²ºd[½œ|)Øl”é‰Lc«¨'%Y3ç׬»Fcï‰ß¹ñTGeøÄpÆ}Šƒ@ÈwÐA‰Ë„Tb¥FzåDÍŒE/ÛgnhÍ'òªvQRŒYËò šKÔ\§’ßá.ñÓ Nû•ïĆjÎۖЛ€mî¬3Å}ßùÎwr·¿ýmß9$äªJRæRRy ~çJÛ|ˆdµÃ!ë‰LV…¹B ŒÙ0Z~çð‰suYú5ÇD^l ‚+±9‹C'ó [zË 8&åJt&lämÎâœ=H¿üŠXVÒ¨9ŸUè&€.%û,›æ£:ùÖ·¾e÷ÙÊ©VâPž×öKÞvÀÈܦÿÅï<ÚâuæëžÈ´™õcC âõ‹Ðy“׬ HüÎùp BäÅ®q{ÅÌÑ6‹•¯Ì/ŒpÙD£±}LÍlµî§?ýéwÞÉ,’m…½îu¯K,KbyšóY…ÜÜêo+zZmµÕù›ÊVe™ïÃ4>X>ZkQò#ù³ D¼Érr‘eÛÆ²Ê ¿³}$›KÂýTfæëD$›šôD¦Í!3«à¨ÿCëœ:MüÎu>M ŸØ'Pã³2h¡ï°vfó¤N¯Ì¹ø ;E@,iï…qÜÊšk®)ÎÚxã“­byh]s>«šÛô¢z¨¯¼MÛR gùç?ÿù¾¿ûxæ†<÷gÓ™gg¶‚•Ä=÷ܳsOUI`&üÎ]42_÷D¦QUTŽ6çàwçU˜ã¾êôÊ ²#a%1ó…z¶Ñ<ô€¨ØZ«œmÔ\Ê´@—2•-•Ú&bù ï±t÷Ò¿s]ƒí©ÿå½nb¾î‰L][ÔÌ6Áï<ÛÏý‚—º­B¹\é ž;î¸ãcûX®É…R,WæB£æ|V!?­RVΤlçº|nq&ªfÞ6?ºXWÕ™z“¨Áï<œçw/K,±Ä¡‡ZnFÏïñ„õ@;ÁïÜŽMœù^‘þ]1þ¦àwžò à Þ¾à á@ ˜r‚ßyÊ/p o„¿óÁœXU'Nì¥ Ã& àwž¬ë1kÖ¿ó¬AŠ@ øˆ÷ÿ_<âh>#üÎóùêõk{ð;÷‹TÈ~çéþ3~çé¾¾1º@ ਵhÓŠ@ð;Oë•qÀ0Dœ8 jch#¿ôO~ò©h|f»»YåeÆ/j,òwÍö(’~}ÉÆ(Í yqfƒßyVž °—ð‰“xÑqEÉò/E ÌW+­´R&í”·¹1ñÔc(UÍ*/3¢•‘ûÄ Yó8ùA]é½B]^‹Y¶ì(Ê#D øGæhTÉ-6ò&©ð1$êªe] »fÞÍUÍܘá4ÈQ–o)”¿s²¶ì½B=Üp¢Õä üΓs-þÏ4ÂC¹Z…Wø•ÅÒÙgŸ¸¥ÞñŽw`R–¶«›«ÇŠþ Y(ÆáruUé,’¼ ¥r…°Xˆú‰O|‚XMœzÁ ^ ¡¤ŠXP¤ûÇ#*^[zé¥Uâiá°xðµ×^I@clÛmÿÄò;'¬¤¯dilÄ! §o(¹ŸárÃ\ðõ×__}p=—MH¹ÎÇ2BÂ{`0W^ye´J7Þx£8‘J*V]uUéWñLñ‰²"@ÍŒ …Ëãþ Ÿp IR–ixf¬è–¸ªÄTWÚQQ•NatÂÔŽ¤”;£­T…2} ¿¦GÓylË\-2hŽ›ïÀª¼é¦›r {ä‘G2Ä2šæïnû9Žº1¹m*$~g¤1_ûÚ×Ô´ñ;Ã$~g«´î:mé°äwÆ•ÚÁï\WÕˆCÙ ‚– ZÀžè :•¸žë–­¢<~øÄüo­5Vëø—Åúw£ñË0”÷ùä'?)‡ëm·Ý&C*"¦xÎsžÃ!ú)âE¡”#èàGFÀ+IòÌ# NŒ”ÄÇUÉDn®‘R™1‰°øšk®1‘¯Aã å¸iÕ¢dâ‹•9b=²9‘·…€7õ’¿ç;¿³ñ&Ÿ©¢ë8äÁ*@z¿øÅ/xäõÖ[/ÑX×s Ñ䔃ßyr®Åc–HLÿ¡}è /<ñÄ:ê(aZ%Å7?²õµ”õ§3¥Ø—JŸøX7E©R9›3&¶x{i èÔSO½á†Ò|?­ëa) ùüç?¿P_-vÛßfL©enù]Ž’*ZÈ\Ç¡´Ö-Çíí˜cŽq¯rY÷Øcø4BZ¶Šòœ P úFËïsçᯩ_â71…ßÛÝwß倫O~dkv6rdU}š˜‰‰/ûÝÇD ©ÕIÛA_|ñòË/ŸTq£ ÂXߌ«Ö»èÓþzöš’ß9É´ñ;[ ]|ñÅëz¿3 ìú©z™2=YU#•V–8N9å”­¶ÚÊêDò§VZÅáø(gÄ©ŒÐ¹4#ñ;WÄJŽrøÄpZO}ó›ß´(’²žeažs4-%-²0eã-Æuó#kk¡í®»îºå–[l¤ß^Ù_©ª¬ï(7?ôÐCšˆI¯¿þz³Â_ÿú×<àŠ+®ˆûÔœÝ(,;š0ÖÕvÛ_—¯×L¿s#¥Í–]ø ¡6 ° âl#¤e«(Ï uîf5£âwŽõÄa®)Wh’¥%oø¼ç=o÷Ýw·èU1rwÓ.ÜóX˜ÑºãG&VáG¶³)pxLÄŠ~ÝˆŠªº@½Æ/e3ÃLê5y|ÿûß¿ÖZkyÏêç²Ë.+âm¿ÚŠÙ|óÍͲí*l¹å–¶‰ê1©æö×{¯×˜¹£wNõ+¬°‚ q |¼³©ýUW]¥ÞDÞRìk_ûÚzÛÆšÄïl—æì·Ø·ñÝ(\©lÃ!‹ñàžßv½\,!­2§!­lgg QøûÂמּílc“zåã÷ÉáÆôbƒ¨§Þ&j 4õãÚ*ˈNÍ´ŸVªÎì‰b3SÛÐ$[l±´œßˆjEU£L½²NL,L+‰Œa³ Q+¡“®Ÿô¤'Õ5”5uû˳C”ÍÖçŠß¹‡r.«8š+,+•ëVâp<¿óxp¦;mñBÅKvð#W$ëvô¨7QSÿI'‡èTiŒå¹Ææ•ʲIåÔp‡sÈï܈C9 —Õ§¬Iå:¤u™¨Áï<6¨ÇÔÑ>ûì“"µ1õÝÓ…@ð;O×õ|Üã¬-NÛb<À~ç1‚]ÀÄ#¼}‰ÂÀ@ #Áïø`ä‚P*5”ø”åRF¹v®éË2Cf8Æ¡û× ñ;ñ¯Ï!dz8}5qbÂÃFŽé™zÜqÇu$sœ‰æñ·;#V”Òbë­·Îé,û±1˨xºûé.dE øElAÈ7rLç‘×™ Ùýø¥GÄ.˜ôC‘ ÛáADO:U'q–H\*o.cuÖAt'+6ÁÜo*h‹ëÃÁ™gž)‘¸lÛØ”¥ÈÞ{ï½vytñtgÙÑNÉRŽúµb€CÌ ÈX¤ ²’€y·u]¦±fɵ ¦\à•ŽªÑ¢sçÑâ9>mÓ©{ ÀëäËìÆ‰i:ÑCË¿í0++7’8#6 ƒP‡*ªObõ1«tʬ÷zŒ¨N–[n9 ¯½öZòäÑÄÓ<ËÝüÎÂCÝGw-&Ì!¹v`ºŽmÔ@ $Ÿê wvª”캘;÷ Ôĉ5rL'+ÍëLÐmìÆ™º>ºÞP|‡0‘¨p|u"—¤Go¯1Â<ßG}4ú'œ×Â=rܨ¨©zõ«_زvÙeLÄÓäëÔÕry“bÌ-|±õDäÎÈ[8âÝvۭϼâsE® É:Átý¢D ‚ß9þ š¿‘cºN¾ÜÁnœé¡ë}Ôõ$bèç>÷¹uáJ ròA(‘Jè_:¯6òhßôÔ‰§y–),u–K­$~úÓŸV)ÆôáùßRf rŠÔ<£×ha#ìmäÚÆbÍÁºDI0=‘ G¸2w~ç…sé{Ô©Î1]oÖ»q½U½f©¥–R‰Õ7¼>9óêzÚÈ£Ûˆ§׫‘þ޹ú2ÔÕuµ©æ‘GxâbÕÊ4¿<Ðô™ž¶ø·­S9U±°ö¶1j^'˜nën×—3âT!¿sÌçë_—] ÓL®ÁS#%Çtãx*ìÆíôdì««²&hÏDÆËèT×m‘Z½mY“É£ÍBeŸG,™‰§9ß[o½Õޱɯ†™gÙD8­QÐÐs6Eªp9ÜtÓMˆô&O–Í÷ñh›ø§íҒƲ@Û*žn°”UõV6ÂÞ6FÁì5×\c™Ø“UxnÁt½£¨@#÷~ç·n¸Ž³ }B{,}5qb‰cz›m¶áx·Ì1Ýh(vcÞ˳'„#~~¶¡%»+¹Ba¿ó˜Ë&›l¢ß>]FE->BäÑ:{5‡~x&¿FÝ…xš+´Û`†ž‚/m­ب±'n­àmo{›‡(xàQj#¿ó¢E‹^ùÊWf‡¨9Ï+îS_1£í¹6RF$ÝW^ye›L¥¾ÑÂFØÛƘ¦nÓM7]b‰%Át¥—8L`pnü‡ßÙ¿ÆSý“>¿ó<þ3ëà˜n_“È«üαž¸@þЦ˜{íð–édŒpöˆ÷Xfãè!æ]qâÈ©0æ,ai ,PZßíî!þŠb ;æ!^߬[Ý'6J×ÛGM Ó„@¬'NÓÕŒ±ÀLŸ8S£} Lá§éjÆX@`¦„Oœ)‚Ñ>¦ ð‰Ót5c,@ 0SÂ'ÎÁhÓ„ÀÿGÀ±^É#·‰IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbc-pre-processor.png0000644000175000017500000004211612032647206024564 0ustar ebourgebourg‰PNG  IHDR2ŠXQãKsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 6 qòÉø IDATxÚíÝMh#é¾çùÄä,zéÜIéRiH#µ¸F>´Îq]°e›Dx’SEái|Å@Q#ü6§ÔwutÍd68­Q MÒGdrÉV c§íî[¾¥¡$Ü‹bÎÆI]•SÞ¥—wÑ÷DÌ"ô®Ð«_Òv~?äÂzâyžx’~z"!€k@‘·oß2ïÐÝ»wUFà: –ËPr§ÙºžY÷'ejååÒ°¢ÿM©õ1Nô=[Ÿ¶*JõZuÅ4wxwy¸nÅ̪+R›ÕÓª6³’¸ØÚ.ÖygËÔ£¨wrr5£·*“ ¸V3•x”Y˜˜¨ÎdF=³ãk]ï¤ÅÙµì…mÿ…Öг;]•Ö4·1yV X¥ù§¤ÑölÝcU‹é™ÕÉ@J’™%ǰ¢è…Ä¢?)ªZ?Í–Y÷·o´XðFʵõ°Á[ÀE9×l™¢ /½|æÔTõ(ò¼Éœ“cÄ­ib·Ý‘ìóÈ‘ªjîðîSOõ¡Cexyww¹m6²L{ÝšV…«.—˵šÑu½X(ý-"Æ'&&&&&ª'êz¬MϬ–k+-,3JO”ThÑÌje•ºµZ<Ô¬'¦gçà=Še"¢(ÖéÀÜ ¦Éq¾ÐpR× ›‹þ”ªÚGVEÑõBþX4mpî3Gm•k+‡=2Æݨ;¯®.®5{¨uOL;n;P‡Å6 ’Ëå߈XJ‰!0™2Ô4û\åøæ›|NDl–n’cUm"ª¦ Φ­Šb„@UME£5‡&3Ï#Gª:è‹=õX«¡:ÎQ[ùW ™UW uyžõ,‹HvÍŸj8 kÈ6íFö )šÔ.‡¼fIõD£YOL;nKŸVQÕ£ýôéEÕ¦ úž½¬œÄVµ°t*›‘l4·wÚ"R:„*ÇùÓóÔV™Þs|67¨i’<ÈèzåÑ€ÉoH›wãžÍn¤ÃɆi¼¦µî‰içÀÍr³e§ùc‘êC5§ü‹³³®ÈÔÊË%‡Ü³ÙErÇùS¶vÅZNÿhš{¥a¦ªfJLUE«ÌÏõP[Íôž15ØìÑúHjÒ E±N¯?“ÅÙ葪¦©J—Z<ÔIOšt¼7±Ì8¸V:{¬þQÅêYi[÷ûmÏÖ§m¢E›ÎË š6Xuä´¨ƒ‹o4S•# ÚìѺ!"Šbõ<ÝõT~Êš2Ǫ(ͲtÔpƒë ¦ñÀ@J­­3sºK©ªäòoJ‡Þ¯R¦ ?rì¢ LI«_†ž¯6#ƒÊÔȰ¢T­¿âZ‡ÝP”ᥗ+nM3§ÅC­{Â~ À-ÐÝlYíùòÅE"2µRsXФ˜H1@X=ë+ùÉ@ª±Œ&î Ù$ÇgsƒÉÈQ*0QªÞ8踘ÚÔš¼–VÜIªæ'ÅÃŽÍ»‘­¿Ù€ªŠ{ÄüV ¥‡ÚöÜtÍg˲h¤¹Ã;;;ËÃm&l}±òý—”áåíí˜oP«©çâ~?¨X=ëÆ<ÓE¨«MÓÜ+U¿(_¹í<ݨœVãÖ²'à¦SDäíÛ·Õ‹V]®ò„q}† àRݽ{·Õ¹eÚ /0ma˜®€Él®X›Ù2\b± Ä2bˆe×’ÉÍ—¶¶¶€+033svvÖ4–%&€KÇ«ÿÛôVååàö®|õÍ·<[à¶úòóOë–ܹÎÝ =þ‚ç Ü>ggg}}}u 9åઙ$–\ Ä2€ëËt=³êr­fôÚ%«]¿òN¦CC¡tñ!GÉÐ7~R]¦òQºüHÕ*5´Y±}¯z[ÀD›Sþ“þµ‘—KÊrm:ìYÏå\ôÈ+/b3ýµ¥CCó¡±Ãòß²q˜uvRçIÜû(”> :»íL×+ÔksSUSþÅÍBí ™1‘6Qb̨ ]®ÕLfÕX¾(è…Ä‚Ëår-$ ziÝBbÁ511ár­ft½²V“pÎàáÆƒ'±†y*瘧ôgz/áÙè8-õø@ʉ/”>‰{‡†Jl'qïP“ù¶Ö+'ÕjWl¬Í¬þÒ<_eaã“úûn|,› ‡ÝêQtv-[½TQ†—wwwvv¶c¾AMKú×Ê¡JUSþƒcùQÔ;–À³9»ä"áb¶Ë®ÍFrv_Øg—¤¿¶Ú^8Ç<‰½úä‘ÞKxÆœµuääçW•â‰ù „ƒN‘“xðµï0›ÍnÈ|cÔi¾b:4ÿêñ‹l6ûâñ«ùJ¸zT¬­4ÁfV:4/ëÙlU±Æ%æõ×õÜ‚X&âXŠùÕT ú$³ ‹m v¦¹W–ÆrMs¯¬O[Œ2¹ü]Ï$EdÀæ° ˆÈqþTË»»»»Ëqœ4±hÌ$íu™FJ+%TYѳQ>:*'ßoÉýƒ`ÛÓ{ o¦_Dúg|¥âiýÜÿ¨.r6.1­¿®àfh9YËtÀ·?ñ/ÚžyË õBbq6r¤ª¢ª¢u™ÕT`2%ªjd5ëyºòó«î—ºU<Óë$î I7ɬê|5s¿¼þé§ï~çøÚˆžòÉX§+vÈ´þþ™ØFhhÈ¡ªŸ›i\nöÈPëôúÊ”ä"áØ±‘ÉôÂf8’»/vk]…²{6»hš;¼½½³³sþI²“ï·~zðaÝ´PÕ¼‘é1Î|pÿ#qô°úâ9jë°~gðð0ûçßWžl\Þ›X&"Š2¼ôlΞËåŠ Þäs"2`³tט¢X£vUMÅ6O¥˜ðÎqÊ:ôè‰<ö6d¤ô^⣪C‚óÕ×ÑèMÿÇ_õïœcžD4~""'ñhéÐeÿ‡êÂâÅÖn¤NX=ë+ùq)¥­L¥)ÿø±Ý.êQÊ?.¿óÛNê±zž†ó®@Ô;Msw¸V•Ä¢ã;ã/Mûdã0ælxHÓ~õøE°8…æ n„åãƒÚ'=ÍuõÏÄÆBCŽEµÛJœÁ½¡GޝUMûdãÐYZøâgïcQ-WeV:44ÿªŠÈ'Ùâ)ÿõKÌë7‘""oß¾­^´µµ533svvön{öÕ7ßoU~÷%Ä9ìà¶>ùcèññx¼ºîÞ½{çšw:44”¿ˆ‘ÉÀívÝcYðð0ȳˆeïÖÙÙÙWß|Ë“ˆeïÒ—ŸÚ××W<½ €Xö½óŸ\•! –€X@,@;ïÕÖöõõñ”€ë‰Ù2bJÚÄÔõÌÚ¸?¥ª"¢iƒsÏÖ=V…Q¸p­fËôBbqÜŸ”©ðööÎÎÎË— ¯etýZm€®gV].—kõºu àÂbYöyäHU§V–†EDÅêyºlü-"™U×ÄÄÄÄÄ„k5SŸ2«ÆC ‰‚^H,¸\.×B¢ wXFDt½XpMLL”óVyÅDbabbÂ(\žÌSÕ”¼ÚŠ}s­þ¨ýHn78–ézæ )šæq˜W» *r]XÏÔT`2RÕ®*W”á¥gsƒš¦E½““«\€ËexdJT5um|ðžÍ^»Àn»w‘½ºg³‹¦¹{;©X=OwwÃnMD’þ5N)7;–‰ˆã³¹AMKúËgâgVW3º®(V稽˜Ø²)Uµ:­wˆ°\ló´Ã 'rœ¯-ëXZqkšØmV~ª n‚V×-S¬žõ—¶µqÔ;wx{YQDÄêyλÉ”ˆæ?õX/¶[Åú£Þ‰¨§ó;šg¸éÀÜþl$êŒhî¿ßùí?Nü»â…ÖÄ>˜¶*Yžfpý)"òöíÛêE[[[333ggg·ok¹'&¸>âñx9tݽ{—›/\ Ä2€kÁüܲx<ÎÐ\%“sË8 àÊ”Ï-»Óì1\%Î- –€X@,± €Xb± Ët½Xp¹\ ‰‚^YXH,,$ ºÞÁê™U—ËåZÍ4)ܬ@Û ¯fôÚ%­Û3£Ñ‰’º!ºŒ¶\±EuÝž˜˜¨·«ïIJN)ŠÕ9jWÕ£ýôiyáiz_FVEé`õáåÝÝÝÝåá ŸSÒ¿võ)AÓÜáííí˜Ï.¹ÈìUw çxTîö ¦½“q]Ç2±8G5-·Ÿ6¦Çt=ó<"£NKݼ‹1éR ™U—kõGíÇrn0-_–ß\l1çdLÚMLL´ˆ ªšò/nÌfÝZtÒX¾(§«:ÐI£¥1² Ô.Ȭu­f#”é߉ÄBÝ”;?¾;6Ëdkãþ”ªªjÊ?^‰VMwØíf+vQ!¸ÔX&ç¨]Ô£è󬈈d’öQ§¥8¶³³Ó8颪)ÿÁHÝ$YëòûØ»Uõ(Rl¦Fvm6’³ûÂ>»$ýkY³^N…Ãnõ(:[ûhÛNË¢Þñ°žÍÙ% ³]–ûwRUûÜgÆö ”êoo‡Ýj*°(´JŒ0fÝJ#]ó§TÕÞ~m\EQ†—^®¸5MÓÜ+/—zi:{RU™V”f+ö°- swš=°µµU·äáÇŠböNE©äAvyx8{´>«9‚i± ˆäªÖÒ4÷Ê’£õ$M]yï´EdÄ­%“Ƀ̒£ze]Ï$EdÀæ° ˆäŽóÝarÕ±ó{£Õ‘m“Æ›wr@$§¹WÖ§-’ÉåòoD,5ªª©ÀdJÓÜ+/·`¤ë…ô~NÓ¦FRÜ¢ýtazÚÒò))€m@$WÓü±hÚ ížIçM5kºY·EDô=[r4ïói'ÛÒ¸ÛS333gggÅ2£tõ‹k:ÊI’öÑgÅÏe½Xœ©ª¨ªhí»Òmy“$¡ª’Ë¿±šæ½é€o6â_´=ó^M£ÆLÕ½ÍEïä¤;¼½<¬ˆ¼É×(#çuýÄõ Ø,Ý®Rßt³n—ç2u½YŸ;Ú–º}˜ŠÇã ï´^§.ĉˆ¢ LI*•:X“ä”w×ZœÚ GrbŸ‹yó³þdÛLÖay»í^ý¢{6»h¹š$aJQ¬Óë+ùq$³ËÀH÷ì¡Q±L{ÝÒ¿6òrÉ!÷löÚ©-“-º$=7ÝlÅŽ*lÜa@‡z¹n™cdJDR©”q@KDºŸÎiQþ8Z:ÕiÀVwЭôkÐTló´mŠ2¼ôlΞËåzìd/Êiþ¸YÊ+dKçœ:­ŠbD[cK“ÆÚnÈÈ”õ4/Ïf/^ó¦;ߨ†>÷X!¸ÄX&Žãìòr*S”ᥕ)UMùÇcÇv©û= y`j^~?<>H5;)ÍêyvkGQo'¿‹T¬žõ•©Þ:Ùm£ªš LNNz£9±ÏŠgq+¦““”æ?õ":>›³K.êŒÙæÜZûã©ŽÏæ5-˜<Y1-¯(Öé@±N£‡ÍšîpcWì¹BÐ EDÞ¾}ÛøÀÖÖVã™h8¿Æ u÷î]n¾p-ˈe –Ë@, – ™; Á9}õÍ· hëËÏ?%–]ºÐã/ÐÂÙÙY___ë õsàÒurxXp-ËnT,K,¸\®…DA//Ñ ‰……DA×Û®«ë™U—ËåZÍ4)ܬ@Û ¯fôÚ%­ pcb™sÔ®ªGûéÓò’Óô¾Œ:­ŠÒv]E^ÞÝÝÝ]î ð9%ýkä0p›c™Å9:¨i¹ý´1=¦ë™çuZŒ9ª‰c²ª2Ë•Yu¹VÔ~,Oz™–/Ëo.NLLÔMË•éz!±àš˜˜h1¦ª)ÿâfÁlÖ­E'å ‰‚^H,¸jæëíjàâc™Xœ£vQ¢Ï³""’=HÚG–âLØÎÎÎvÌ7¨iÕ“UªšòŒÔM’µ.¿/í°[U"Åfjd×f#9»/ì³KÒ¿–5ëåT8ìV¢³µ¶í¤±ü(êKàÙœ]r‘p1ÛuÐ(ÀÆ2E±N{§D$y-§²š#˜Û@í*šæ^Yr4Ïy&å½ÓqŒ¸5M’ç™$EdÀæ° ˆÈqÞü´6ÇRÌ7¨¦uópm:i± ¯O[Œ2¹ü³FOÅqedÀ{¥›ËÉ:FÜZ2™<È,ÉAÒ>úÌR L…ÄâläHUEUEk_M·åkR¤š L¦DUØd5Í{ÓßþlÄ¿h{æ½²FΩ‹ d(ÊðÈ”¨jê`í 9åõXÑõÂf8’»/vkíóN§åí¶{õ‹îÙì¢iîðööÎÎN‹ù*E±N¯¯LI.ŽwÕ¨‰N¸ºX&"Ž‘)I¥RS#壓oò9°Y:¬£Eùãü©Hö ¥ª2`«û§¢X£vUMÅ6O;IKÏæì¹\®ÇN6m”SþÀµˆeƉ_šæ.§2E^Z™RÕ”ùcèñådÕ´îÞ½ËÍ—®bÀµp‡!8¿³³³¯¾ù–qIJwéËÏ?íëëãô2@,{÷øa8?Î-¸ZÍ–Åãqàj4½nY__£pyê®[v§“r¸lœ[@,± €XbÀµÔÝUþu½°¹8=REDÓçž­{¬Jé¡ÌÚ¸?¥¹W^. +JyyR¦ÊKšÔl¾:À{¢‹Ù2#“Erv_l{ggçåË€„×2º."z!±8îOÚçbÛÛÛÛ±9{Ò?¾˜(èÖ|¾ÕÞ¯X&ò&Ÿ‘›EDDQ¬ž§ËÆœVöyäHU§¼ÓVEQë´wJU"ϳÖÛbu]Ϭº\.×jF׫ÿ6bbbÁ511Qµ¤T ³:6öw« .—kÁˆwzfÕµ(èD=póc™¢ L‰ª¦ê¦²t=sMs8J‹#nM“äA¦ƒÔóêÙµÙHÎî ûì’ô¯U" ª¦ü#{{ûÙ¨]UòoDDNóÇöQ§•£àºjznÙÖÖVÝ’‡/ï†ÅHE½“‘wz˜æDlÛ€Hî8_Ð1NM[rˆˆÅ9:É%²ËÃÃoò2ú™¥Ù¦\±™™™º›*Ýi]ºú¿ÆšÃË»ÛKƉÿ)ÿ¢íÙú´åÝmª¦“)QUÉå߈Ô÷ÄâµGrÇù‚~/\<öÚ¸]W,7.lóKLÓ;c*Šuz}%?îOæòoD¬ÊðÈ”¤R©ƒìÒ𰈈dRª*î‘aEi{Séqõ{6»h¹š»ºÂŠbuŽÚ#‘ü›SÙyZ*Æí>À5ÔÕ/13«å³æäd·ÝÇgsƒš–Œmt]× ›±dùHb'Z¬n„6‘ãü©d׊WÐ(G.UMÅ6O[ÔlqŽÚ%yð¿¾x´QDÌ.KÖzuÇgsöd$êô͹µH²´–Õó4œw¢Þ‰h±N‡y.‹D’²²Äs ®5EDÞ¾}ÛøÀÖÖVã™h(_rvÐ{ê±^ñêõµ‹³‘ÜÔÊîò0O6¸&ƒÖÝ»w/þæKŠbõ<ÝÝŽù$2ÛÃ¥Âιz} GŽTuŠ#˜àÚ»sIõ*VÏÓ]Ï»Z½:áyx’ÀMÀ­Êˆe –Ë@,¸–î07×Wß|Ë pƒ|ùù§Ä²[ë¯'¦®Ò?ì$ÿ÷ÿíßö°â¿ÿ¿þCëIJï×ÿú_1\ÿéŸEäþŸ.å40b@wˆe×#–ÝQˆe× –1[@,»©t=³6îO©ªˆhš{ååÒ°¢\Y‹Õ® õÚœ{¶î±*-J&ejåå’C²å¿M»W]¸º@³åMZ,l.ÎFÚ÷ €Ëî\J,»Í—“Õ ‰ÅqÒ>ÛÞÞÞŽÍÙ“þñÅDA¿ÔFexywwggg{;ìÖ4Ms‡··wvvvw—/7“+SFs/_$¼–ÑõkñDè…ÍÅÙHÎî‹ÕôM×3«.—˵ڢŸ”¹Œ€{õnÿñ/ZÿÞëX–}9RÕ)ï´UQÅ:íRÕ£ÈólÝçnÝg°® ®‰‰‰ª%¥™Õ±±¿[]p¹\ F¼Ó3«®…D¡ƒo£ÚÆË•' å=iŠ»Rœ¸R«çéò°¢kM”¬fô¶q¤Yáüæb]7°zܪ¼ÉçDdÀf‘rߌYº”ªªjÊ?^IiÕ­—çÿÊeÚ>Aƺ ‰Bq¼›gõŠÕƒoÚ(5±ì/ZÿÞßX¦ë™ƒ¤hš{ÄQZäqkš$ZÐf×f#9»/ì³KÒ¿–­Œ”šòŒìíýíg£vU=Ê¿9ÍÛGÖ¦ÁÅêl¾¢ª¦ö%°v—ƒc‹žt´±•vK³w1ß ¦%ý­rF‹Â¦=ìdÜŒjG¦DUSÕ³•Š2¼ôrŘP4ƒ6¶žG]™¶O±îQÔ;–À³9»ä"áM#7·Xq_Û1Ÿ]r‘çÙÆŽñîhËþú·ÿ¦Å?bÙyÜȀÍa‘ã|y&LÓÜ+K±8G5-y‘7yuZ:¬¼ÅŠšæöN[ªƒccONű¼»ÛûÁP‹mà…{Øá¸†—wÃnMU¢ÞÉö›wµýd± ¯O[Œzrù7íVôN[жKíˆÈÿø½üokï›ÛÚûÇê’m«å—˜fYUM&S¢ªÆ'º¥1^Ù#¹ã|A¿—?.˜ë4—u¹b]O¬½eÍBbq6r¤ª¢ª¢]dá®z;¼¼»½dœøŸò/Úž­O[zm½Í$¿"5±¬vêë?í|ÿ¿L|\Wæ?í|ßÉ YÍçÔm¯ò³ƒòѪìAJUej¤ålÓ=›]ZŸ§oŽ”\þÍiz`¤ó¹«NW´ÛîuÖ“V[:za3ɉÝ »µ6;G§…‹=ìnÜŒ˜^_qkš‘Šzj½‹a¹ 0‰euÿ6·þkuÍ­ÿʹe5ŸÍ jZ2¶YÐu]/lÆ’å‘FŽ1 f×*׳(–Šmž¶¨ÙâµKòày~ ñd®–š¯xœ?-Ç›ñ…ºž´>忸±þÊÉ[™U£dÍéöí´(\ßÃÆÄÙlÜt=³Zþa„QCUô,ÖÜ´õš2>AÍ2qÇ+Öu €ÿò½ñßüÏÿÅxô?þçÿbZཎeŠÕ³þre*ñNNNNz#2÷¬ê nÇgsvÉE½“1Û\õÜŒÕó4ìÖŽ¢Þ&?*¬ŠWIé2•µZq?<>H•ƒc§=©ÛXÉE½“ƯFŠçÑ/­L©jÊ?;¶Kë_¶.ÜØÃj-z«(ÃK OLLLRÚ ïÙzéç±â³àr­fÅÑØzV,Õe2ºÞÕ°tØÃÆ W×(o@€ÚX¦™þûÓ‹½?½Øköhûè""oß¾m|`kkkffæìììv _ùr¦ƒ¾ØSõ¼µ‹³‘ÜÔÊîòð9Wìꢬu¾úæÛ¿ž˜úõ¿þW¼<¸?þÓ?ÿÃNòßÎ|Öúÿ!þüËÏ?m´îÞ½û¾üSQ¬ž§»Û1ŸDf;¼ÒX«„Ž©êT—se=¯®•¿üEëá_Ûj߯_b*VÏÓ]Ï…$<Ï­h\¬k™€›ã_´K9¿… dtËþB,¸±LÓ.£Zb@wþÂlLýøOÿÌ p•˜-ƒ‰ØI2\±Ô bj”¯}n•! – ˆƒ˜®ã¦d)UMs÷pk2¸‰˜-pÍ2Y!±8îOÚçbÛÛÛÛ±9{Ò?¾˜(pÃxÄ2¸ZÙç‘#UòN[EQ¬ÓÞ)U=Š<ÏŠˆ®gV].—k5£ëÕ‹ˆ® ®‰‰‰ª%¥™Õ±±¿[]p¹\ F¼Ó3«®…ÄíÇê€Xºž9HЦ¹G¥EŽ·¦Iò uxÊ®ÍFrv_Øg—¤-[ySSþƒ‘½½¿ýlÔ®ªGù7""§ùcû¨ÓÊQÄ2¸Œ0'2`sØDä8_(e8Ms¯,9DÄâÔ´äAVDÞä=_s IDATeÔiQ”áåÝÝÝÝeN\@,€ };SSÉ@JU%gLŠÕ²8GíFb+äl ± šS”á‘)QÕÔAù8dö ¥ª25ÒrNëžÍ.šæooïìì˜N€)ŠÕ9j—\þÍiz`„2Ä2hÃñÙÜ ¦%c›]×õÂf,Y>i„6‘ãü©d׊WÐ(G.UMÅ6O[ÔlqŽÚ%yðç–\º¶SeÄ2€«ÐÉù`ÝDztÈQ24J_î&¤CCCåæš4–õО·¢jÅšÕÒ¡JUÕ7lÈÐ7~Ò~{)Àûè­™?ýéOº®—ÿø?þ½®ëúø«¿úÃúEùámj«*ðËŸþ梚îb+j{XÓ‡þðWó§_‹µÛ¨_þô7åõ(Öy1n2#J5 ZÆEd»›-Kï%<A§é|ÕIÜ;4Tš":‰{‡êgŒNâÞÒ‰7~"’ ͧ~7_)c¶VYÿ‡Ìšû¡f¶¬±“:[mEÕß?4ô0{ò ²¢3¸ñàI,]½!?˜l”Ù†üôú—¶cM1Þ3]]·,½—ðŒMJÌ¿8<ì/F¡àkßaÖYŒ:‡A§H:”Qà$î}Kσ‡2´7vX :fkU9ùùU¥ñêæÒû•`õ¨XC% šô¤ùVÔPÄYÛÆcžù½t°fC~S»Q NâÞèý1g›Æ)À{ç¢Nù÷lÄfúK´ßoÉýJÁ%±—qË*ó^5Ïfk‰HbÑ8)(¡JÔ©n®65:;©ó]9‰{ƒ2é:ÅÀe\åÿ—×?ýôÝï_‹ˆˆ&ŸŒ•bShhþ;U­]Øv-Ïz6è¼àž¼éPG„b¼Ÿºš-ëpÆéƒûyÖ³E‡ÅÃy'qï¼lf³ÙlvÝÓéZ]ùàþGÔÙó¼YÊÓs-CÈ^âÁ‡ýë¶IJfÁd¾íå ú?~øª!÷üòú§ŠÇO~~UYþêç“ku¥ÿÃuyË¼Îæ[atæ$îO˜ôPœÞǯæ«~0ÿê±·óôè v”5)±¬Ãh±ñàëßµ¹âWÿLllo¨¶Œ3XZq((=‰ù¡PÚø1ã£b%fkuÛ»÷£5¿»4¯Ó|+œÁCßëGCCCA mxÊUVõPúgb²X\oQ6º:Ww}µf—[{o‹ð¾SDĸTF­­­™™™ò›¾úæ[î‰y‘NâÞG¯}m§‹ÞŸbÜjÁ' =þ¢œ¬ê‚–ˆÜ½{—›/½Æ¥<Ú&•÷§¸”_b¢-gðÐI1PÙ2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@, –€X@,± €Xb± Ä2bˆeÄ2ˈe –€X@,± €Xb± Ä2bˆeÄ2ˈe –Ë@,¸Ùît^ôììì«o¾eÈÞe,ûòóOûúúB¿`ÈÞe,‘³³3ÆëZaò€äËÏ?½°X†kˆùKn„³³³¾¾¾Ö“\œòpé:9ÆE,¸ˆe·F:4J3 Ñû¾?ðBàùbŸa“‰eÓõ̪Ë5Qe5£ßâñ5¶×åZÍèú¥¾ÄŽÅïÔïŽê—ÚIÜ;ÔãkïR_´åÊÓ¡úþ³ÝthhÈ?évˆ~“¸·n½Ö=顟éÐУ¤Y7¯`cÓ ©Ù’t¨ª“UT-¯ßòu½?tRÁ…møE< —ôjº²½%jÿz¬Û„O™é’!ó7¢«ÛQ/áÅ’Õ7Ý~Úí'qo]7+K6¡æé2ö‹è}¯nÝÿó¿Žšo/±¬šæoooÇ|ƒš–ô¯]ndy‡iéʾ÷Ì¿úýŸ×?Ñ>YÏfÇö*/ÔØ“‡AçµþþôÑ«è6ê n=n¬³®3þý«ùR™thh^*,>‰{+Ë×e¾ªç-êåé3Zl½í´áƳ¼¤7òêM(o×5Ü[œÁà Ïe½+ÛböFt•;ê…¿XÒ¡yY¯nº‹Ý»ùÓ×?{ñp«²OžÄƒ[_Äfú‹ÿÿ©êM*½—+~ètsšê¦ÿõæO,ëŠÅ6`6…fÌŸU’SfÕåZýQû±ucùB¢  .—˵(è¥VH,¸&&&Œ¦ë™µqJUU5å/†Âº2(8½Ø@±~½XXHtÝt+šeÁº\ØØz±æR…åh%|Ø_Þ7ƒÎ?Eæ¿S¿›¯~s?‰{‡†Gé½- ¥OâÞÊwß“¸w¨þ+ci­ª‹+›}÷zà Ý7û ¨þ˜©ýj^ú6JW¾ÕuðIÒfˆjsÙÉ÷[òðãþÖ[Ô¼ŸMF¦Å{H}OG» {Þú?|PõFéÙ0)ŸŽ=yPYî Võ¼ùCMF¦Ý`þPµí?œÄ½&sÞ?ýr."Î1ÏO¯i:Â5û[ã7}“Â'qïÐÐ_ýÕÂBÍÓW»׿¬*M{ãqótu¹{K'¯ÇKru;êöA7ðÆý¡et.ïTµ;¼‘ÌB¥`vn= •3™ˆÇó ü&•ÞçJ‡½æýÿ‡6ow¦{`ëþ›a“Žž÷pbYkÙƒ”ªÊÔȯÕ_/ïîîìì4Ο©jÊ0²»»Ü¶Œ±ü(êKàÙœ]r‘ðfA×E$»6ÉÙ}aŸ]’þµ¬¢ /½\qkš¦¹W^. +Jc™Ê•:`E±:Gíªz´Ÿ>‘Óô¾Œ:­Š¢(ÃÍzØ~$Z×õÌÚl$'Sáííê˜}¶$¢ñŸÏÿUã퓪oK‰ù „³þ½TÞÛŠ ïˆ'ñàkßa6›=ÜÒªtÈX+›­^ñ$îÞa|ûÛ›¯ù–Ô?ÓÍAbÞø6üçß¿ŠþáÞ½±ÃÃæß红ê\V“ÊÌ·¨Ý±ˆÆ‘1íÔ^Ú¼‰ú§££ {ÛN~~ås–>ìÆLÞ¤–Wõ¼ùCM>™Ú ¦Rµí¿éŸñÕVw¾zú_?¸˜Bõœh“NÌï§d|¯U>Uç_=~‘Íf_<~US8(¡ÃÃÿößž>­5‰4Yƒ’ÍfC²•hõ¬^ÆÞÒøB˜¹ª`v•;êEöá7 Þdhq|£8¥wxl¬­&æ{ý(¯e"26VÊ5é=»Úa¯yÿÿMÍö<*îoíöÀý7ÃfçÚÉeæ­ª©Àääd ¥ úž-9çÏÊ4ͽR] E‹mÀø{}Úb”Éå߈èzæ )"6‡m@DŽóÝd«Y“”ºË¿ÑõBz?7`³´îak-ZWÕ”±.ØgšÏœÁÃl}§~W¿ƒ~tÿƒów0æÎ«¾¤V–ÂK±ÊÛŸ3X.PY±&æ8ƒžúŸD;<–ôÑãA§QùOÿ} Tú»Ràƒû™§ÎvCTÉeµse¦[ÔæÌldZfâ6M4«°ç‘Ä¢ñ}=(¡ óª^ú]¦ÓûøUeßHÇž<ðÍô_Ȇ;Ž „JÝi6ÂU“2µaÔg¼8jrcõ«£ó—ÕÉÏ¯Š³ý3>ÏŒaw{‹Y0ëüõxÞï‚W¸£^Þ‹¥ÙþТ'íÒbpCž¼ö5îNÎb®Iïɘóê7ÙtoLÉÍß›ößt ›}pœw'–™0Î-ÛÙÙÙ}ê±*Š”ØMNRjÓ.uR¦e ¤TÕÈj=—)rŒ¸5M’Yy“ÏM8.¾‡Š2¼ôlnPÓÔ£¨wr²í#úg|ŸhŸlŒí•µ¤CCÑû¡¶çñËëŸ~úúwÆÜb¢a.ºjá/¯ªL››¿ ù^wv’Ou=¦uöÏ„îGÍf¶ÛQ)—|¿e|ö·Ø¢ÞF¦ákhå}°uÍ*ì}cËçŽÆ.u'1=”ÓÍ`öÏøÊ>*ïÿ°áþý¯ªv Îž²Ëzu6iqi{Ë9^çu…;êõy±ôÏÄ6d¾ÅÙ'qoôþcÓy #×t–ÊÞÙ&·x5uÕÿfçßÉeí§‹ ›áHNì¾XØ­i=—iâžÍ^ÍvR¦BQ†G¦DUSkÉ©£ð…÷P±zžîî†ÝšˆtzH´r®Œ3xxÙï¬ÜÿÈÓpÖíIÜ;/‡Æ)·]œúpaÆôvó¯Õ-†ÈÈeéï·T¿eô°E¦#c2§QzÏiÛD³ ϱ±æ¥M¿Ä7,¯Ä£5û¼éz÷pŽg5r<׆׬ëè){‡®boy7ÁìjvÔ ±œ¢°éÙÅSÊf‚/îGèáô><F;J5W´ÉsT­^MÝô¿Û7ØnöpbY;oò9©?Ø}Óeœ –ŠmžÖ%!‘ãüi‹2í’”H*•ªÌ•µë¡æŒF³kþòŒZëÖK+nM»ÍÚô×£éPåÄÓ½DõDtåtæ½ú¹‹×eÿÇ_5¼9þòú§RN~~eöv™Í›ÎF8½·‚ÑWõ9‰{ç»™½0{èpˆú?~(_/~]“ÊÌ·¨qЪûi:2õ=zôDJ!£Yå§£Y…çÙØ&wf?¥tz«O™I‡æ+¿Rmx¨:•5ŽLÛÁ4ÛÞǯöÒ嘶áý3¡òç^³NTNë® £ÑâIÙÑæ1´ÃWSåÕq&®zoiÞ­š×cmâ©9ßèó¦W¸£^ø‹¥®;ì½÷Vç_uöÍûî€<è¬ËÛäš}ø .%·|4ï¿é6ûธ=œXÖ:9 /­L©jÊ?;¶Kõ$»*ÓŒÕó4ìÖŽ¢ÞòOÅ:˜³K.ê4–4–i]§Å9:¨iš6h»×EŸÙæªgÔ[/ÿ®sr2û\`ÚÚü”ÿàØžqšùyÙè}šÝÜxðäQ3Àý3±±½¡ÚK9ƒŒéå¡ <ô?ÕœÁ÷£Å’{cžf3îå§Ê·IßëGCCCA mxz{Ó¯¾BAgCÔÿñÃ_iŸÔ¾e˜lÑ5ßzMúi62R}VÓмlT˜ZÍÓѤÂsm¬ùwøROjꟉmH©ó‹5•V=44½ÿ¢ü]ÕtdZf³]±ÿ㇯æçM¯Xr¾ 7N®öÆOšŽ°gãÅý¨ñ±èý•mÛxðä‘ÃáxTýË¿^_MÎ`ñVPVíêW³·´œª×cÍKxèÑk_e««úY|6—\ƒõÂûÐðd7ìÍÆ¡t úw_—JŸ¾NâÞGÕçù÷Ï„nÕ_¥&fºÏÕ4—¾äM®Ýüâ¾Qn·åhÞÓ1löÁÑn¿Ùyûömã[[[333­o¨‰wë«o¾­ºUy:4´7V3[½Äø ¶*"Zñ'?Kn‡ÒVŸÄ½ê&´[{nƇʋK8[­¾ïW³áW¾{œÄ½±c—Õ`³A»ìͬªÿ]î¨ïÕ;Ãû¹É7`‚OþzüE9Y5­»wïËnM,k²—ÎË-Š\¼, îøõyƒ‡èznìIÜûè‰<¾Ðl– EïWj¼² ¿šwù«ù‚ÔlÐÒ¡¡ù„ùå^/²é„xžŽí¿³õ½zgx?7ùfôžXöÞÇ2psbÙ†éF;;;ûê›onbÙ öåçŸöõõ1a± ïódÜ _~þ)±ì6cª €áì쬯¯¯õYû*ÃpÙ:9ÆE,¸ˆe×»?·L×3kã•DŠˆ;¼½<¬ðÜt(îõJ¨úÚm/ß\¹|¥ˆhÚ¯j.ý™9¿+=T¾@ÛëAwÓDweLnTPÖxÇ‚Úåõ4^r0Ú=Ûï¥òºMhZþimýfÛzë*U½fÍÖ´i·±íƪÒF‡~²žm¸–ãõy“=¿jCG£uŸoü¶7Õ·¥Û²IJÒëĽòrÉqº¹8Iú×F^. +WšÌŒt˜”©•žš>çêçññC ~2Sz9‰G_=« œÄ£ß©ÿß«¸×YyòÔ¼£ãïQÅ÷Ìl·×Iµey¥ö½²¶Zgðð0h k«jã£WÑPÚYSXé¡ò“¸÷Ñ“æƒÕX>½ßf@Zw â§­Ê“ÞKˆxš·{÷>ª{:Ó®³§²³FOâÞG¡t«‹l_Ï‘/Õ9/ëÅ*Ó¡!o¼ùǶÒñ“u3¶½óW}«Q*5” ͇Ænèn\×ì ¦Å6PJ9ƺ «½¼ÐåZÍdV]®Õµ[—1–/$ z!±àr¹\ ‰‚^JQ…Ä‚«ú¾àÆŒ]õýÅëÊ4v |òºÕÔÞ$*Íé™U×B¢Pºû¸ËµšH,LLL´èOqa!±PÚÀòö6ÞF½ÿㇲõ}éV¶'ßoÉëßmN¾ßz°ž]ð$f~?Wç˜ç§×¿”>q==Ü»¢‹&šr7ê*hWmøB÷£ç¾¹m:öD¿èñF ˆ9çAùÉNåMÜyý“gÌyþ§²³Fû?|pcG>«¾Å´3¸qÑ;ÝuÞöŽ_õ’sÌs›_€Àû˲)U•©‘_«¿^ÞÝÝÙÙÙŽù5-é_+gUMùFvw—Û–1–E½ãa <›³K.Þ,躈d×f#9»/ì³KÒ¿–U”ᥗ+nM3&íŒé®º2•!+u <+V·ú¯Õ{ÎQ»ªå߈ˆœæí£Nk©°ª¦ö%°v«êQäy±Úƶt=³6ÉÉTx{{gg§º¹†Ãª\Ö˜ÊÒ±'Æœâó$öÒæ]¯{¥÷ç1gOo6Ñî½²º‚vÕö®æÜŸ é½ÄGµÝÝäbGbfl¬‘Ò{26Ö&꾸òÆOÎûTvÔèÉϯÚî>×täöüKØén̶·j½ƒQꤾ›üÞ—X¦ª©Àääd ¥ úž-9çÏÊ4ͽR] E‹mÀø{}Úb”Éå߈èzæ )"6‡m@DŽó…Úù'iYƤ³~ÎÑAMKdEäM^F–ê¾y§-âqkš$Œ¹ºfm©jÊ¿XŒ’Š2¼¼»k–Ï*¹¬!•UÞœÞǯ¢åèÄ¢£(X{bZ•ò‡ÃáXL\|Mß9k«mßá¡öoøý3>‰vWL+ðaWåÏ9 •ÏB#"¥÷¤áÓ¯¡Ýþ™ØaH‚Ce³æcÞA£CA u0wqƒGþ‚Ù-ÞöÒnÐÙAÝ÷y7Z»^ç–U½Xœ©ª¨ªhækuR¦eL‰ªYÍÒk™¦¹ÌÉç ú½üñ€ÍÒu¬ÊðÒ³¹ãÙÈÑQÔ;mý3ˆþâùe¿õÀë¯üðö—Þ ÅÒ3A§”Ͻ8‰{cvòöTw®F:4´wÑMˆœüüê£ûÞ6ÕvØÃöé&èÛóÆOb3Òýæ›}¯:'Æ´|÷Ò4—E¿?ùðµŒEöÚ÷³&v8Óæt©¶cÞm£·räÏïo{¥¡¡tÌÞçݸ ³e “U…Íp$'v_,ìÖ´žË4qÏfMs·<>ØI™¦ÅêµK.ÿæ4½?0Òt]»í^ó¶«çéînØ­‰Hõ!Ú&¹lëûô÷[ÆjÎøŽ&Ôï*ó\‹ß©‰hü—šOìêƒ =¹é¶‰–u}¿õSñ °yµ'»“9ƒ¾×Á^+uŽy^ýÜÓºç?€ãô><F¥«ãÍíO¦ióTöÒèù†=¿×ãù·aÛ[µÞ~”úg|×wS_€ÀûËDÞäs"Òzž©“2M3“ª¦b›§u9Lä8Ú¢L›¨W^½8_&Ƀçù‘º#žÇùÓÒYt6«¢´n˱´âÖ4±Û¬å˜ä³þÊ׋_פ²tìɃl­Ob?4¼G•Žp9Ç<‰ùnOEꮉßu=‘ÒInMª½è·R§÷áV0úªçuõöæÞÙ€´ªàãyÐ]jHï%>ºÿÁyžÊ½9#ïô>~5_®3š/ŸzT›E:9îÆm{ǯúæ£ÔÍžv ^€Àeº¦÷ÄT”ᥕ©T å?¶ÛE=JùÇåïw~Ûm™f¬ž§á¼+õNDËÇO­Ó¹ýÙHÔ;1–4”q´Œzu«;,ÎQ{$’”•¥úÂûáñè‘Z}ŽšÕ¤­lùrnšØçÓV%Ûò“úᯞTj6^(£øÆúöîÕ¾GÅ|¥#\ÎàáFÈñ;Ç×"b~)¦ªÙÊî›øbþß5çž$ÕWKŠ9[ö<ŒŸ8›†«T%•+µ;Ï¥&ôpëÑOm÷—úÊ7ƒÎþ™Øa:44´X¾’|2Ö¼3ÒÑ€tü¹ ¶íç_þòo~«üðÿ–.Z¶qØâf'Oe³FÍ"öùþ™ØFÈá(¾?ÙÈ–Ë|ñ³wȱXÆó¾»]·moúª¯{yÍG©\XÓ~õøE°ÿ†ì\¼ ×1ÿˆÈÛ·oØÚÚš™™i}CM´`œ÷–›ZÙ]..¹èk›}õÍ·7ìVå'qï£×¾Ã ó–µu»;ÉÈß2W³íïóMŸü1ôø‹r²j ZwïÞåæK—“ÉôÂf8r¤ªS#F£2‰ruoÓWÙÖíî$#ÏË®³e7ØÍ›-à}ÕÉlÙ†éF;;;ûê›onbÙ öåçŸöõõ1a± ïódÜ _~þ)±ì6cª €áì쬯¯¯õYûüàÒurŒ‹Xp-ˈef .—k!Q¨ÜöQ/$…7ê.—lu×ÈVÚ®ðÞÅ2ç¨]UöÓ•›vŸ¦÷eÔiíànEŠ2¼¼»»»»|!·6x¯c™Å9:¨i¹ý´1=¦ë™çuZŒ ­‰’ÕLñÑâ,WfÕåZýQû±<éeZ¾,¿¹811Q7-W¦ë…Ä‚kbbÂtþ¬Üh"±P]IÛ˽XpÕL š¶h3ÖªÛ:v\ˆeW’Ëì¢EŸgED${´:-Å™°í˜oPÓ’þµr:QÕ”ÿ`¤n’¬uù} l‡Ýªz)6S#»6ÉÙ}aŸ]’þµ¬ùÀ•Ä|vÉ•´í¡±ü(êKàÙœ]r‘ð¦‘>[ÔõÌÚl$'Sáíí¦ –]5E±N{§D$y-§²š#˜Û@í*šæ^Yj~Gp³òÞi‹8FÜš&ɃÆóÌ’"2`sØDä8ozZ[±£òºJšõÐb0þ^Ÿ¶erù7-[TÕ”±Ý8D Àív-/'ëqkÉdò ³$Iûè3K10‹³‘#UU­}5Ý–¯‰«j*0™U5’“µ³µ.²EexéÙÜñläè(ꌺÃÛËä1n³ëx E™UM¬$§¼«""º^Ø Grb÷ÅÂn­}äé´¼Ýv¯~Ñ=›]4ÍÝíÑÃn{ضEÅêyº»vk"R}HË®ŽcdJDR©ÔÔHùèä›|NDl–ëhQþ8*’=H©ª Øê~ã©(Vç¨]US±ÍÓ.{Ým;jѱ´âÖ4±Û¬\ÅbÙ;ÉenMÓ4w9•)ÊðÒÊ”ª¦üã±c»¨jÊ?Þj©uùýðød Õì¤4«çiØ­E½Í~ŒÙC‹­5¶Xþ]çäd )ö¹À´•SʸÕyûömã[[[333­o¨‰wë«o¾åVåÜÁ' =þ¢œ¬ƒÖÝ»w¹ùÀµ@,¸î07ÚÙÙÙWß|Ë8@,ûôåçŸöõõqzÄ2¼cÌ“pƒ|ùù§Ä²ÛŒ©2n„³³³¾¾¾Ö׸à”€K×É1.bÀµ@,¸Q±¬|/ ²ÕÌÅÜ™Q¿ä[=¶­€)L¶IDAT¿Y{P€kË šæoooo‡Ýš–ô¯]x^¹Œ$¤(ÃË»»»»ËÃÜSÜšXÖ$K ®º»zë…ÄBiv­úÞÛWg²µqJUoòm4ár-$ z±ò…D¡ê~ÞÕx•Ê3«.×êÚuí6›ðËo.NLL”[éd3e"±P]IÛË…â&Vµ^×"³wËœæEdjĘÊ®ÍFrv_Øg—¤-[ X³‘œL…··wvv:œ©R”ᥗ+nMÓ4÷ÊË¥êUÅ굫êÑ~úTDNÓû2ê´*Š1¶³³³ó ÖNà©jÊ0R×tëòûØ»Uõ(ò<ÛØ½ÆÍ4M£’˜Ï.9£’¶=4–E½ãa <›³K.Þ,èz‡-€÷4–©j*099鿦Vv—‡v‘›Ã6 "ÇùBuìXÜ,\ÐÔŽÅ6 "¹ü]/¤÷s6‹ÉÃU4ͽ²ähS]myï´E#nM“äAãyfÍ6Ó¤£òºJšõÐb0þ^Ÿ¶”7Ò¬ÅSqp4bY%I„·ÃÁEUSÉ@JUH¡(ÃKÏæ5M=Šz''/æÇ¥À”•7ùÜÔH)qÇþ&Ö;Ðmù†TZÙÌ]}‹àöÇ2#}6gWÕTlóTDDîÙìÅŸT¯T¬ž§»»a·&"òãE™UM¬$KÇOu½°ŽäÄî‹…ÝšÖ>!uXÞn»W¿È|3/¬E=¶ÞŸX&–é€oPËE‰‚^:뫜ÒjÜÒŠ[ÓŒ”cä*ãh\vÍßdêèžÍ^,Óì±T*U™+“7ùœˆÔÒl®Eùãü©Hö ¥ª2`³Öf Ö›Ùk‹­ch}‹œò±Ì$1L{§TõÈ89ÝêyvkGQoÝo'&&&'I±Ï¦”ãølÎ.¹¨w2f›3:Rët X¦1Xœ£ƒš¦iƒå¹,E^Z™RÕ”°µµ533Óú†šx·¾úæ[nUÀ|òÇÐã/Êɪ1hݽ{—›/\ Ä2€káCp£}õÍ·ŒÄ2¼K_~þi__§—@,ûÇo2¸58· àZh5[Ç €«Ñôºe}}}ŒÀå©»nÙNÊà²qn± ¸VþÞT@`‰»ÛÖIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/debug_sampler.png0000644000175000017500000003741412032647206023677 0ustar ebourgebourg‰PNG  IHDR¯¬Cê´L[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí °TÅõÆ]‰DM\\âQ4‚DP6£ÆÂD4¢!@Á”€,1¢E"¢(Š%Š(" ¸†ÝTÑ Å•äOÄ 1&aûÿ§ª«ënsgÞ̼™yßÔ«©¾}ûtŸþfÞ÷Nwßw¾Ý7oÞ¼›^B@ZÀµ „€¨B@l¨ïB  ±¡¾B@*Ćú! ªê{ „€¨B@l¨ïB  ±¡¾B@*Ćú! ªê{ „€¨B@l¨ïB  ±¡¾B@*ö*4 O=õÔsÏ=wôÑG÷îÝ»Ðcùýÿß®×þûïÈ!‡|ýë_÷o§\S/Îì4Ѝ<2°áÝwß=kÖ,7í½÷Þ»nݺGuÔ¥—^zÌ1Ǹú„‡~øê«¯nݺ5¡M~o}ôÑGcÆŒyóÍ7]·-[¶¼þúëÝeq ÅŸxqæ¥Q„@¥" mÚûî»oÓ¦Mÿ÷¿ÿA4¼Þÿý矾W¯^:u*A\nºé¦õë×zè¡?þñ·mÛöÚk¯mß¾½ý”KB@”©ØðÀ1b„ùýñÇ:ôïÿûÿøÇæÍ›~øá%5ÖÇP!.õë×ïôÓO§Ðµk×;v””“rFD ú~CC† 4h‹ßGyäꫯ¶»«W¯¾ÿþûß}÷Ýo~ó›§vZŸ>}XVû†D”S¦LY»vía‡Ö³gÏ&MšØÝûî»ï•W^á²GÔ¼ýöÛ·Ýv…±cÇ“Z›Å‹3Ö'Ÿ|Ò Alo¿ýö;w^wÝu€ÖÀ½3è{ìý½óÎ;ƆܢÆ'.Y²„[|ð[Ь ùË_î³Ï>Ü={öÂ… qãG?úѽ÷ÞËBûûßÿ>”úÝï~—í‚_|±^½z?ûÙÏN=õTëÊÚ³]@€9/kæ¿ÇA人ð ï¹ç|›6mšo¨²E@ k6ħN8ùÏþ³aÃs‘sÖ§N›6mà‘¹sç~þùç×^{­›—¿ùÍoþùÏbõ׿þõ׿þõ¤I“Ž<òHüíoƒ¡HkL.)»€’=z45„¢uêÔ8pàÿû_.íݬÜûШQ£5kÖ@Í7näèw*\¶l«~¦°hÑ¢9sæì¾ûî}ûö¥A%ãîµ×^óçÏÿâ‹/ØX¾|9>Ð`ÕªU¬¸ÿñ|öÙgŸõfíi7/7¨ r]Áï á;èD—B@\ž°2N>ùd|"X㦸뮻 Ž_üâÆ ?~<•üòûYµáÍ:<öØcðæläÁDifE·S§N¥e³fÍFŽ9xð`·f30`œÈ]x­{÷î¼»–ݺu#ÆÄÉþýû_tÑEÔÃtî.¨?üñŽ;rIкçž{Θ1ÃaoáD¿}Êy¥„褓Nzà–ý!TB 8ä†x¶ß~ûñnkLv7mÚÄå·¾õ-È…³Ôo|ãð«f7V—\r ÌÂJ“§m¨ï½÷ÜÝ„ìC¸D:kÆ¡¶ˆÚ" 9òf½yæ™gr—(ïÖ[oe©k-Ù¥ÀJ™•ï§Ÿ~Jù«¯¾²[öÞ¸qãË/¿ÜÑ=Ku"\æeìO›/¿üÒoŸr^i Âm¸žµ?ÃùC¨,„@qÈe¥Œgœ¢ðnG(,ôÌ×?üá¾Ó~lèï!²@f±¼eË¿q\Ùuþ½ï}/®M¸þÛßþ6,Ö¾}{¨å- ±»ÇàŠ+Øs4z5+ö}s6íâ¦Ýãûþûíýú„y¹Y$@ÄÐnÓBe! Šƒ@.lÈC6ë֭ÿ† òþï|Ç|å¬ÙEpÔ!Z}àà‘šƒ>دw¬x2ÑJ¬Ê-@‹Ü.ô»reœ¹ñƯºê*jØ.dO“KÌ9e>çœsXÛv¤k_ÍB伬Ïl!ª¦'2B ²^)þîw¿c;½¹Î;3$¢qÖÒ¥K ÊÜëk_ûšsˆ©ñ‡$öÌqÇgwíàØ¶ ÿõ¯±é¬(pºbчÂdñdµ5pê·g…î׳浻tB@ RèÒ¥ Ýí2ß<Ûr¼ü®Ò@ä·WYâ#*6dÍË Är’ÀA*ôÇ&—íÂzW\qÅïÿû—^z‰B«V­ ¼·Þz‹øëÜsϵ)ÁDœ~´hÑRãH¦Sp—ãþ‰½<‚8Â+÷ÐŒ‘_pÁœc¬\¹ò²Ë.ƒÂ8Y6>uLç£Æ-\e ¶áXŒÿùÏæ.ÍC?´§7|ãœ*稄[ìKràƒÏ~'éËyÑ¿›—ßIˆüö* !P|R±!гÏ>‹sÄqœüñ?ÿùÏíÜÖ<†õ¸ÅÓ'œðbÿ‹³}zr "á’/‘(@BÙh|xþùçóÕ­ë'¿ÞºnUB %iOQȪO¦h”ÔSö[ fÈF›,­k×®E‹tÙå•óâ j¨>úè“O>I¤WLS%/=«! JT±!¾’d¨pL„$&Z(^x!rthج~õ«_!ÝùôÓO£MܧO$ØQ>AÕdРAN½“ô\\þä'?éÝ»7òuÒ9Iÿ-™k2:diEˆ$‡$=´•°gÏžh(£"@&jgNJmœA]=?WÏ(ùË_¬ "¯½öe–ÀÔŸuÖYÉù¾&=w BÉYmDlÀre“…› ÂÎŒ´uˆº @áªüý µ8C @ÂZ×€üµa¯ì.ï‘s¡[\¢+”Q]K„€È#iÙÅ)ó#†üá¡­üŠ._¾ÜýÂÃPlxâ‰'"Û„ R$ 4X³fé« Õ=obµÝ|óÍÐ Âí¨”8ÎòG‰,·lÙ2 {dü ¼¹sç’v®qíÙŒC¶ ¥PèÏýk £šÐÚ ûŽ3”iƒä ËU~ LóØc—8ñÕ¯_Ÿq™õ’%KˆU]‡È¤@ü=˜:u*ÄŠ† ï“&M² GFDE ì•ó9r.XÁ­ìWð'ĵTA<"– ÉiÚ¿Û™8q¢?ü€`%¤ß¡†Õ«W»[¬(‘úäW—¼ü0æØ±cMט6p%ZN„r(2£™‡.(ñ#tiRé:I.ö•žI‹ 24ªxìl3¾úê«Î°W¯^tÈlöÁ×®>P€ˆa@ÈŽ4ý¨V¡ýä4ª\K@¢`þÀãF Pâ<ÇWšÀ´5îÞ½;1f“&MP |úé§#n½¢Ïg ¼J˜ WtËß$ç’ B@ä´û† ‰°¿Ø ,pZNtÎq¨Âú—²¯mUAˆXÁ†%&>¿ áÄ­|ÐþW†»Ä‰4ðÛdœäªU«ØÂ«W¯Â.„C̈́ᜭ˒ (J¡®>P@n…Å/"ËúÀe·nÝ~øÃ8ðž{î±¥ëâÅ‹‰FÙ¾„§\cGXLÇžù H¸$x•0—€Ü•N! ò‚@lÈxD‚üº²¶±Y!¢tL¤Ó©S'ƒéO™M§‰Õ"ÑVÎÓ ÀDœšƒ y¡]çäŸÂ}“žrÊ)®\FMTÂCöø 2n!rïZ ¬ý™,ÄŠ`4;ŒLòe;/Ð,åeÀ+¬~Î8—”«™Y!v¥lB75¸ŒJˆª–-[ÆÆ«<·çÚDš6mJ ÉFÞÂ… ‰+Sæè€wŽ\V¬XiâWÂV¬©gÏžM€F\ÉŽ$úÈúÓŸltËõ/Û|ž(ß³^¶NXÞ¾ýöÛxËâ×C‚â-·Ü¶&çæl¢9ÎO’Ç®d dÙËP(eã’)Лïar9Ò+3I˜KrŸº+„@5ÈŽ ŒC~cmÔÖ­[³Å6aÂNXD³›Æs‡Øžãh…8ˆ³ n»í¶M›6Áq¹$ÄeôŒÛ”•sæÌa_’;*Ù=ääŠá’Ómÿ1 vyXò§?ý)´…¡ùÆa42TI‰.­ò·¿ý-dÊâFH? ° rX„ !ë_XnE}”e\âøxÚ´iþÖ¡õ÷NöÊ'Ì%®7Õ !’T¢ˆÝ’Ó™<Åb;†PÏ~ûí©+ç+¡ä’,;Çÿ¦ÌÚ€lVº]9ˆ•s ö‰aý=Mœ¸áHW á8ØhÑw›~`aUŸ(ÝÜ ?ëÔ©ã·+ç<^ðW¾I`.þ-•…€È kÇ܇pJ‘LhÙíFzàˆ†X/²ABe‚}‚UÜ­€F²¬yìç3šõƪ^fÉÌ1ë¨6°'ëñÀÐnî)©Ð™ãRØ+w—B`.þ-•…€(y`ÃB¸Uü>Ys4ÌAʰaÃ88.œ< ÃöBáúWÏB@ä†@y°!«×”9yrCÁ·ZùÞæÇ–¬ôkò_^º*ÿ}ªG! ª‡@°!Ikyj/åÖaõеµ2`C>bÃÚûiæB@¬Ÿ°)ŠWD!PlĆÅF\ã !Pšˆ Kós‘WB@±a±×xB@”&åqŠ’wìÒÈ æ}Pu(„@)# Ø°”?ù&„@ñÈ‚ ICâ2æ[êšâù¨‘„€…G ÕJ™üÒd©A& äß~ÉjÅ¿årYx÷²ä€{í•jRYw-! *TÄAÎ.òÙÏŠì[äY G)©·JrÃUÛɳ” ‡rI’E 3’ÆŠÔª¤oA…,/Ì^6%‚è¹¼Ú´iƒ ˆ¥f˜HªÚ¨Q#TÉ%C*„7Þxƒ2 ×\s ió"EB¦UÒôÓþ„N0CR¼ˆpÊ”)ŒK=)gHCM3âVòÑ¢ÇB’j¼‚‘¦¢ Ž‘…Y>¤ Pé³Äˆ6½ ! @ ó¾!iŸÙ1DóȨÐG4YÈrÚ·o_öÍœ9e8kQ6fÛ…0,­g†pÉ®7nLkÆ¥’ô«P$ aCò°Rsçw²Ë9jÔ(èÏj²•壽„€¨%dŽ í„] U”I»ëСéQQ¼CºÉDB,¾Éæ‘ùÞ‘Í#]>Š"„{®“ä6&­Gÿ&­Gh‰´ž…¥P3ù®IGH¸!Ò!)–ÛÕr\ÃàÈò‘‰‚³Ï>Û\ÂI"Ê0­;TB Ö"96$Û3èø²œ¬7R¶l}P <µuëV8Șlº%0B"X±:Û4mœ´^—.]8´1i=3$Y?TH>…øÝr‰?¬ Y¤£kŒ¸¹ ­gĆa¸T#„@æØ²ã”–-9¯ ˆX|Žˆ%Á5ÙfNø L/+i=ŸY¼³q9kÖ,ÔN^á,(a,ÝB –#96„QY&3W®\ÉÒa9Ô ØÔCˆp­;öYÊ5oÞœ._˜FJë%tŽÊ;ëúµkײ¡‰{þ°6G‡„spѦ—åKE·„€¨H2džL»G ç³C† áf!`d½Éÿ·1!cd‘¹$>‹Ó<ÂÄ (Ò?i=ºe¸áÇ#'7ÄùçŸÌñÕ»^­Zµºÿþûñ ÇŽ;î8>M#Ë׹ꅀ¨l²ÐÌcJôÇ;‚­7Þ È5óà{N0ŒZ¡ÞÂtöÁÕøLAŽ£Ýˆ*!PdÞ7¬€Ij B@ŒdØ7$¶ÌØ…! *¤}CÉYSÕ„€ ’sI±a‚™0B@TÚ7¬°TÓB GĆ9'3! * ±a…} šŽ9" 6Ì8™ !Pa$¢TØTKs:c§T%gÔK" 0¸gç„QĆ àéVë¶Š4’†åÀ³óŸìÝý²æ1龓­Ä†ÉøéîiGî[¤‘4Œ(g–¿ÿîï½gA¶øÄ†åüÕïB V" 6¬•»&-„@½÷ª’«ËûK±aÞ!U‡B@ņ…Å7·ÞW¯^bªéšæÖCnV$²%ë8i½s3—•(kJˆ ј'‰ôœ9s´sçΤzE”ÅdÃ÷‘G™ø`Ô¨QГ¥å—_~ùá‡"æg>Þ·oߎ"+/ë–»ð#$€Ë—/Œ¦ÃCÄ9K—B L€ ÝOëÍ~\³4š‡ØîƒY,#-Ï2™_]“rè—_~±ù:4lØœ>}ú† ¡‡ ùµ'Ô¢ Ù†[l,Ât‘Ig•G6ž¡Z´h¡Ð‘Gé›<÷Üsˆ2tûöíÛµkGس_¿~¶° ›ãX7|Ïν"gJGŸŸþ9ìÆÖª 3mÛ¶µ¿ÎÜÈ)Ù­[7.‰¯-ñø€¸¤¾~ýúüyp-­@ "Ò`ØêR”)[·ítžÏ[ô¹gµp—~[~KÿVd9lH¿-Z´`8{öl"(V‚6›ƒˆïì›EâÄ€ m:è H*¤‡ý÷ß*¤pÄGðÎRÝØÐ™lܸ‘z[_C=pTq˜b}Øê¤}¤«®OĽ"gÁ¸,êQ@…¸{ì1”M9\¢’W\?Ì×B]BBÚJ&i–2n é*%ç'Ä€pGÌ~ãÈ!"ñ­TeÀ¶í;"¦Ï]ÄOä-*3N9I3/l A…Ä);8áq5_|ñádà:ÂCˆÒ…™‘m";ä)e{æ™Xü&?ñÇÃáe.*¤Ãdó4n<÷ ›ÿÐÁP~3W&¿!½’sØpc;†Ì·ç„\â†;ã[©,ÊrØÑë²K/ÉÁóš‘Ïü†¬Ô ž=zdû_‘\8!‰l“<ç@‘Ãa¬kižÆHCë6lû\ìFO_p‡'qs‰"ìLúAÕR”,ÛSz98ŸÝ)ÊðáÃs#ï&C† ÇGéG©¦yúÔRB °mGæMÀÆÍŽ s &lV§ÛjšWghÙ !P}Ò‰ä0JY²a󔉃À¶™Dr˜¬Ø0Ðd"„@M"°=Åã29ø'6Ì´ü›˜ÚCþûUB PlX‰Ÿê®9ñÄ@ÅÎM@`þÓs ÐënY?}]'Ô§B ÆÐJ¹Æ?‚ݤ§\óŸ<(¤§\>ŸUNž&ÿ/JN]ÊHT ÒS®ÀUSB gJH%*ç9ÈP!P}¤§\} Õƒ•€€bÃ~Še‘ãô‹ãê 諺µ2`ÃòÕYÎ(‹§_WŸÃ×ôHˆ6œ:uêᇮW¨µ”´žrܧR.:Ëy—EŽ$¡~̘1d®¥¹iÑ)½ûî»MSáCI°Ò-!P (]=帣È:ËS¦L! íõ×_orQH‘ €–H¤±)2;±fŸIh²È‘ímŽHœý¹GJ‡ÅŽãô”=ôPëÍHxÐd°¨ x{Ë-·üñä%ãÖ•W^yðÁ3kÊ‘XŸz•„@š'i¦_ÀÿE!qV1u–ŠB§xþüù6mÖ°(ÙSŽÔ#ö•—É&Í¥[¥F¶§”U Îâ8 ã°Øq²ž²ëÐ/¼eš¦ðGn™¸Bœ~?* Ê@6t? bÊÜrÍÒhÿ…ÐB,šÎ2c‘#ÝdäGXiˆŠðÙÇélj5ǵK0[j_¯H ãô”㾬qÞºö‘HCÙá£B%!à«$—œžrÐÅÔY†/Î<óL¤£Ö¬Yƒ.²ÎȰ$èGª$'´‡j#œmî‘Æ‘bÇTòŠC,®>Ò[¿q¤~•…@Å ôJKO9å"ë,Ÿ}öÙ°!¢ÈŠ"ȇWiôˆ}çÓ´w̾aœ„qXìØ·Ê¹lç-[¶lq‚¢qä<„ …@É"`Cü¬I=å8˜Q[rÅÔYf£iv´›µtÿõˆIhïK0ׯ_? à)a)vœ•žrÀ=»dôwß}Ò7‰T«Œt Ò\•B Üˆ”K®=å8KDg™ðpçÎ,™MF*£q`: í8âˆÇÜœÑh¢NVŽŽ;ÎJO90Š]vìØ‘Âĉw6Åz.#ˆ4W¥(wâ“‹ª§b‰è,ǹ—Q8`˜ÐEc6œÃÆqbÇ6h=å€{\u²OÊ+|+ì@¸j„@™"PBzÊq–šÎrÀÏŒzÄéÛÇ)»ÂÆqbÇÎ$‡‚{1lv ÜF5B ¬( =å8KDg9Î=Õ !PIHO¹’>MÍEÜžrîØÉRJB@šy•ôij.B@䎀ô”sÇ®ô-¥§\úŸ‘<,–Îg‘gO¤§œg@Õ]¥# =åJÿ„5?! jˆÇwkÔŸÚ8¸ýÔðKIDATô”kã§®9犀ô”sE®L줧\&”ܬa¤§\À†B ¤(•¨’ÂKÎ!P©HO¹R?YÍKì¨ÉØYü1¹\úƒì|¯ÜÖ…˜ 4ué8Xu[Ô>ðÀ(.‘f™,ù'tÒ¸qã²Å‹DÍ‘¹§²í§DÚûÓÉ(Äœ•Ï;w&c˜3¹øâ‹{õêå.ýBuœýnUe@Íè)“õÍÌöíÛ£ôé§Ÿ’ÿ9[°P¿D²ãá‡ÎÖ°4Û¦“w!æ8Àý½A×¥4AWB f¨=et5 ?ûì3Ëþšæ/°bÅ R=“P&OžLâë>}ú„µƒg̘|= c7hÐ D>#5¡äƒ5j4}út(`ذao¼ñe†»æšklP}ÓFr$ nlõN%ýRDã‚mÚ´éÞ½»%ÄŽ3óœ†ÖgË–-Ó9r¤bŽ4c§§lD¿´^½zþdô­Yxê#ñ»UY”/a]”¼Ì%ƒž2ª&ðÔK/½DlØ 6DÒwñâÅ\’מüøÍš5£Ö¦² [=lX·nÝ8Í_DÀD­º\¿~=<‹èGƒ P¿{öÙgÃó4}á°º±¯; ñ :tݺu}ûö…7gΜ9iÒ$ë*Ò<Á76|ðÁSO=>:ôFW&ÄgÆ$YO™¿+lÑòʨïì` çŒ3QA”5°¡ûÉ£žr6d¿o„ Mš4A–ˆjÁ‚€¹v!/G5wb·Æ<²”Fõœßdb(Sv?ꨣ Bˆ‰Ö€¦ù‹h | QÒxÆ t µâ1cÆ?’dŸøhìØ±W]uõÄ8»îßLÝ•”L6oÞìšá0²ôC ý²Ì¿òÊ+É {¥ZGaóß\Ÿ(1ùÓñ}Š4Ĥ]»vp= øæ®LÞm×Ë4ÿ¨çï行Œ8¼ìZZ!rˆHg†ºå‹zÊî=帉pË5ó%˜ãÚg`CÌà‘Ñ£G÷ë×_<‹_WÒÐCˆl)¾õÖ[lç›hjyÐ%ëÜ[o½•_àwÞy'<¤Óüíҥˣ>JŠ|g¬” CQòkOåm¸WÃév@ÝØn9ÝaÛâ<æ˜c¨Ç7ØÍ&øÚš…Í|s}ºÑÃ…HóHL¨d޼‡;¡†¿œó‚Ó¹„¾§L™Ò£GË/¿~ç#XEéLÀP—B |p¡ÐSÏ…Ê@³p›@MªÿSæWÊc KP³víÚV­ZuÖYĆwÜqg mÛ¶µN¡Höþf͚ź’_f‚J«w¿Ã…ÐüT7fÜ‚<ûÂîÛu×]çWÆirë6˪©ùËSÊ,„9#¦[¿,}eÖòª.*än²yßÓñG ›ÇabViô”ô­“¸!ÂÎø®ª,ÊÖS†GOÀà¼yóV­ZÅ£p4iÌ+PÉe€I ^Âmr¨ tÙ,YOe¤yß" m”°y&q^…ëÝ?DÆÍ%nˆ°3áÎU#ÊÒÒSæáAþ)ÇkÇ!C†ØsÔ¹^MóÜ••ùB ´ô”O>ùä|M,‡~ØÌÁÊ™TÓÜõ£‚5‚€ô”kv *„@É! ͼ’ûHä5‚€ô”kö" *=å"­a*ņñ1FMBzÊQ¨¨NÄ"P =åÝIy;¦n! j IÏ-×4Q! „ÀnbC} „€Uˆ õ=B@T! 6Ô÷@!P…€ØPß! „@bC}„€Uˆ õ=B@T! 6Ô÷@!P…€ØPß! „@bC}„€Uˆ õ=B@T! 6Ô÷@!P…€ØPß! „@bC}„€Uˆ õ=B@T! 6Ô÷@!P…€ØPß! „@ÿp¾)ŽNÇ~IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/scoping2.png0000644000175000017500000001165412032647206022610 0ustar ebourgebourg‰PNG  IHDR¼®5ðl pHYsÄÄ•+tIMEÓ 7bÌ.¢tEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœíL[ç¹ÇŸslÛÁ@B Û\ 1%m™IÕ†’Òi³K³Véî:©ê&¡þªJ÷Ÿ[i¹j+…nj²lS:íN­Š6MբݻiÕt×$j4PÒªÝìDÊ]’5l ˜€‰Áìsÿ8ääpÎññùéóëý(Bǯ_¿ïΗçyŽÏsž#T :<·HDÉ% i½ƒ€«1¨@Å Šò¢!ƒ01 ‹&:<ñý÷ß%ûúúúúú†Ì‡h0¢Æ"súôiòåÛGûOŸ>ýý÷ßEº1vÆk Ã^{m€þRx¤hñ½}´¿¯¯ÞøöÑ~ܘŒÚðùIDATM¢! …B¡D"‘°XÝ<òµ'Ÿ|æ1¸rõ/ îìÜdÏÂaAsuvbŒžôqÈ·Ø}ŠÀážB¡Pg'ÖÙ‰…¤^ƒ’Bé¸ÿ¡äÔrÑÎá0AžZê@2äá0Á"BYøa š‰Ol¯sQ/·×¹¤4¤jéçžÞBÿ)a4êãH[Ò`Æ4‰DÂa‚®ÆWp¯þÛ‹ŠÌ…ÐDhñE‡'¾þJ€¼äž¾|Ýçí£ý€Ò²Ìw ‰H å|a”qO’‰E§o^½5y;ŸçЮ§ÂÝôï 5—~a)—ñIDAT´Íù¿¸5y›§CzaéÊ—_]ùò«Þê§Ÿ{¸d C𣱥9wé7äAG°›ýî•Éƒï¾øféÖ„(†Â1ØûV±èôONügfm–Vïnu{z¾Ð±oï®@­”Õ ÔAIK#!U”TÃî¦ö[-­÷RŒQL42SE·ºËë}µ°¶¼a«vÖl\Ÿùç¯.^€`[°÷…ŒIé/É[ô ~-É95©JÏê…c2UÂa"¢Ð¥‹—ƒmA¸qýÐuCž6e…Â}®RΫ+TyÂÄßüË,1’ß~ôÒÀô¾p Ø$uSúó7äýhd°IDAT%ãéœB-œÃÒUBWÏŒ‘é?Å>$¤¶4’SE·ºË‡oþ“h•p¦¹˜È 1Ð…hd¦Šö¿sÒ‘ v=Úž˜NVVVŽ 5íö6·‰‘/Ïc+Љh@Fªè{ïþÈžÚsðHû§gbÝÏÕONÄýZŸß1iÎIDATËé’ä,OÁÑŒŽŽbz”À?v Oî~êH{xh ÇñógF¼ 5Í­§¼¨m`ÈT ßA&ôci$ð‹Ÿ}TãÜ·÷›õ—/ŽÛì¶t*óük{êêk\.Wñ€€ÜMQݬƒŽ,Xl™ÆÐ†«_ÄíÛÂ|æp_óÖ­N·Û-jþÜMF(R ‰-ÍÔèRÆp¯jœï8X_ç­õxå¶æ^~EÜ/ùèËÒ§¦-aÇ«o"Åh€Q- [.¨ªhÉ0ª¥AhˆQ-Lø¿£C—ÖüXT4PxÓ•méIDATG±Ò¯ÄpXW4ÀºmŽay›ÝÊæÇÒ¢a@Þ.@Û[‰f”n±á‰† gYŠKJ~ ¾Ræ‹¡Kn¨óÇù.uzÔ›Z>ª¦p Ñp#6²)TW–§…‘ŒLÿY´3{jÆgUõ­¦rO<0¨úe1Û)iá<(4 Ogjpª]íhÌ<¢)Í=ú‰aÃæ2iŒ(PùQøÔú ÌÍ#š’Á.°m@¡•ÖCý,¶PL#ò”Ða<-Œq”]eÞJc¥Qv± ›¤ç¬d$°Ïë)ÚR(YxgúK! P K‹F¡½…,‡uEƒnhKÆ¢¢Ña ` “‰K`IDATÐÕB4H4јÁ=-¤2³SéÜj¾õïçŸ^ß±ÓËç·UWÔÖWk½4sbxÑLŽ$Óó+äñË“°ž%ÖV×Fg°Ó»ãæõ±–à.-—h:Œížb÷}¦9Ù¾ÓY»ËÓ¸ûžÞðûÿþ_-–fftdiÄÖ§žYY\'­ËB*=>Çgp {óè‹TŸãÇ~~ä_ͳ}‹NЋh0ñ%aç‹.—¯ýßÍÙÄÜÊr– ˆþ¨Þ±=MÀáÞoLDåwo‡ªë·º &¾$ìèð u¼˜Î,¦—²ÙÕ<‘'ÇðT*ýï¿qüØÏqs»]#/¸ÎIDATÓœ¢aÛ6±w‰Å–B>¸ð‘É:%@¢!U6“^¡ŽÝnçúúz.—Ã0 ǰ|žX_[ûñ±_ÿËá'Àn·MÇçÙ#pæ=©ñ«7_G=ÂBÒ©Ö²¹¯uÝK//­¬­­;ìv —Ëc¶¾–£:?÷힢Òó‚ÙÙ“ôžœKÎvÎ{ÂS?ùÓ@ù—Áø¬RèÈÒˆ- {ù³=/³k+eβ\.ayÇ[¹\n~i&Ÿ'p[ÏåþëäïØÓ¼ûÕRfŸêÉ“s)Ö–ÉæäïÃ9QÑ(….DCˆ/ »sWåÔØ†Ó™Ž'«ª3›˜små® K·.…RxRèÈÿkæùÿŠŠ„$V8º ˆ/ »¾šƒ;]: ž9ô%ž ×–VRi_#ßn†ŠüEê$R)Í2tӈʥu{ÊR©ôjvÖ²Äã=ÝMþÊÊò2ç–êêmíímÏ}ãÙÔüÂÏv¬¬d÷´7²GfŠ~ŠÑ`ž•0©TH_{Xòlþþ·±©±¹'ží¸qy2Ÿ'€»q_j~a$:ž[Ï5¶Ö>úDÏt$œñgœA_$½}œB±ŸL(¬°Ã)žZ†JkzqOØÓÞLÌÿϯþœNgÊËÝùK#b`¬›IDATfzv"vk}}½¡¹¦b pŠ$ò%𦍉xÆT‰ê¬:rOØÿø=u#ÿˆMŽßšžJ´…¼‰™äÕ+7þvõæòòJK›¯ç™}Z¯Ñ„èË=I›w:~;:<O$gÒÙÕUO…«~×=Á½M¾´›·*Ø=QÔÖW£Ô™Rbl÷„Ð3Xe]jôfü³?&g3®Š\ëƒÕ¡G‚O¹b£óˆFA2‹KScóÓ±åì2,Þ¶%Fæ+·Å:öµi½.½€Ü“ñXüÚ•É¡cÙå<ÕøùÙ˜†KÒÈÒlbàäSSx:½ä´WÝÝ Ë/&µ^™ž@–f¯¿ux94¬ê;IDAT“+³UÜU ¸ËƒǼ ²4›8ub f¯#yÍ¿!ÀˆªÎ{C÷P5%H4q¼ÿƒ{j«Ÿzºgv_òÜ/7ÒI÷ò7Ë-~zgö]ÉÒ-T Ñl(æT·ö±Ç»fsN§«­'w}ÐÖÝØ¨½ñ®ª·õŠiN¼÷S¯¿î@O×\2½eKÙÄx|÷}M¸#ßݸUs¡üišÆÂT–FZuÏcïü°±ÉßÕýðìÌœ§Â3:2^ç­öíªÿÞ­Î1çã&Ë-7•h$|#ÜÿÎIG*Øõh{b:YYY92<Ö´ÛÛÜp8ÄE¾œÏ‘˜@œXÚ=*ΆùIDAT½÷îì©=´z&æñx&'âþ@­Ïïè’,‹uEsüØ)<¹û©#íá¡1ÇÏŸñ6Ô4·<žri‘Áª,lJ3&sOÂùÅÏ>ªqîÛûÍúËÇmv[:•yþµ=uõ5.—Ké}Wë‹E--Ó:Ðpõ‹¸Ýa[˜ÏîkÞºÕév»E ŸÄÉμTé ÎÒcQK35º1Ç«ç;Ö×ykÑ^𱨥!ˆüìô‚}û¤¿±öÛ‘bDaEKóƒ7Îç±Ü¶ÀÜ˯ ½à¥`EKSÓ–°ƒ½—WŧHQ²lù‘f\‹‰c{¶'y²@R¤fÌÖA$Å6lEº¬›7oX³.ÁºbY0§KuAÓ¡N·Ì!’9$- ’'©Nf»nb›°!ðŠJ$Q/>Dñ}y÷ÿ÷òR¤D:zP2ižÏþùßÿqï¥ÎÇsþs/Ïe8@Td(¤ T!U¤ T!U¤ T!U¤ T!U¤ ±Ôå7Þ9‡ç_×ÖÓí·:“Œ¼Q%ôg>µ»öPRM¤8AþÓ¯ÜyÒµëÓº6€›Lï‘“‘å©Ç¼dš7ÿ°t/h?W§ÕŠÛ®ç_£›ä'ä|:yÞ42¦Ñ­û¯H[k‹ªÅoÓ×®„«…ï|‡6®4Ò×W΃ý©3ÙY}¤ôêÀ ò¿þèr ™j{_vŒ¼ÆJžè®à °ƒE8ð¼pŽ®VÅò4il}8XøÙxð© Ãûj6ì&òu9›•l(xüçTÅž>¹ûiq î\ÔÁïgàGÓÝו‰nÀ€{‰hÃ’Ë^ì,Tü‰ 6w„H#ÄN8›TlbÞ2¸+oš8†¸7UiP° ×Cȃx!¢6™¸ó†+αÙi¬’ÄÔ=̵ùÁÈÐîúÇr)EÉ31Fà¥#4’s‘sè u ãp3¬ŽA4˜ø­1j~sk8œ³ªÂklc›”äÍÇ32Uc‚•6÷A§JÓ*BNÿæ(ŒwJGI˜}¤7ÐyU– !$ „ åhWûÝ1‘UÏ5UÜþAÉ3q!Ⱦ³äô>zÅŽ‚idŒ(rrŽhçáëJH$} ”š>E^o(`¶‡6G›jO«šdr«µDŒç:·”îÄQ².¾A«‚ŒÝMÍ^F /Ø?»ã|Ü]_úT£Ú¬gââ•¥ª(®(ë©Æ?OV>#a£YúÂq8D-#}ó“ê?øS¾uP*ùë‹§ ê­·)¥ê—ŽˆƒW¥•_—@JØê¶ŒÄ.Mç˜m¬ˆž]¼—:çí)ä ·üInE&1k§Þ‰àff=BÀŠiöìÊ -V¢«;”µw ËûÐýrÁ˜F8Ç˳=óyŠ ;JßÊ>f:H7æyNX«\¼ÄÍ‹ø¨iÀgJ7~›ú•NÈ\ª-·ÂejbÐWŽ‹ë‹’¢ÉJ6&_¡UG:O)A=Ô#š=F*¦ÀA(Xëuƒæ¯òL¾µí¢Õygsþ4íðÉ€‚ÕB'=;€ÞÙM™ÎÎ^ß_—ø.à0=ý+\®-·b÷å¸Í%“^Î4^ ¥3 µèÿe=¼¼;>1ân'ÃNb¢ ÅV)D ¨¸×©Z]¶áǼéjˆËÔÕ7.E†ëˆQy-¯×’³ËwpuFÁg]däÂVýõŽÑ†ZFâV·êz/èÒ™ž*¦*¡kÂ_ÏZ…¨"g½RáÎ SUBÕ^$ R…@ª*R…Ø 0‚Ò¨îk–wñÃô÷÷‹¥º?«p¹N¡¯¿V©r-Òï[ŸÔïÝc¦q\é&û±ÌÛ“p¤ë¿Z:ëö¾7’äI½FÊ+ùsÐcô;ò9\îtP[³PŒþ>à­D &Ä)ë€Fœƒè”nô®àÁQ¨ÉÔI†¬4CyKÚjÆûWÑæè_³µE•f€†G† 5CŸWˆg¥zg÷¦áìYàWÉ©€ŠþUòë/Æ•è>äV&Gq úy‡,B¤@^MS%Ó#¯AøÐZØ_wøÏs½V9Åuʱ¬)ŽÒþܲ‹RêŽZó¾™/ …‡%Ðe`Q ]¦Ù¯½Ãc¤íÔ*w6~ì0¼˜ .£Y}¿(;M9û¨ÒV&å»lb,GÇ_FYn§V) )¤‰c À¼ä+ãÌÔ·â‘nÊr;µÊp1ÂÇL3 ƒXJe„UB8Eædá$Z6õ¨ÌHD·bµJÞ¶0ÁêA;6ÏŒJìa þá°QjíhŸmm=åç‡fÚP˜[‹—•Þ®-30¸¬ú×*Dµ¬Um›N݃ëÕöP…y{ª†ª{9¡yŸ`(á¬ß˜©ç¾`ÿÇèV 袳Ž@ªn…±‡¼˜œŒB¯ÀqTî%p^HTÜ@áT…TàÏ«…ªdÉGñ!*Ê’ÕjØßŠÂ©XªœÂcCéïÞØLz¢…S±ð€Æ¾qJ½å0ʦr©ú!D Za»ÑI¢p*ÖêÇžþflF|"¼öèpî̈ŠÀ‹À;ë÷-³xgýÁ¹®BTÉuU`¦žj¡ 3õT‘V¡¨p­B”Y«¶¸,æ­<•M†G-¯;±T-Àˆ¥a­ ”°“ˆÊóõWsÿP8•í²6Æš-B;ˆ¦Ùc‘1b@Sn<ZbÍd^æÀM–Þ•w‚f²CjgA³Ç`(Ty®«ž¥åFümö܉·œ,ý#i<éO}awæS`‰ô ©ð>d8Ñ–×@³Çx‘©²PÅŽxæR„f ôîæ[>Ÿæ­©‰d¦&³³’ÆíM {µoFÐ\†ì×’ÊS¶ ø|Sœj#ý}w`Ü ùfb“QüÁ÷†¨âÜt·Ý\Ö@›Œ‘zᢱ¹óY²á1Úæ `Ö~ Æ#4Ä©ÈfÔ„@ú’m?ÛiÜižÙ—ý®2ÔÙlè¤>L¬Å†W¼£Jf!å,Ü’Y„vëXÍdˆ Ó4ÀK¤ãzàIK÷Œ34I/p±8U.«À3s^ϵ_e½7—åìPê³h•C‹¸ªÒïtÀ-Oú=1%»çŠNNC: b„06à³;JãBöž(Y‚˜=¥`M¿ ¿˜kÛ Nud¼R†sÍ Öïö½@6Æ<Ø7xD\»9š"ón3˳ܶÜýÙq $”ÄüQx‚Ú5¥•!µÛïòy¸g¾Äš´ªÇ ð¡ó¢³Ç)ºŸ™¢La@ ‘”é 4KáE(׺\ªÓ¥3\ó>©Ü¥ö š4M Ùc óÍ [±ªXÛwo²¶z)B{çðü'³—w€q4øéð5iV“'˜ÝQ¯o­óM¹vÉü|¢’åÚº±™é¡Vhq Ùè´csÁQ¼².¬ˆX ¨/õ~ïbYº_¢Äð¨ò#–VR•ß@ª*ŠªnÚ¤êñ+U-TaxTiò²gT!*¤ T!*¤ Q™×UX=Z…q€‹•wÖ<ñb™§Z%¥3[µ#í㦟{»ø#äî< pC!æAÃÀ‰-1€¹8@`øÏÝ73“þ÷ûûeRĵen…ÈC~$Arr|ÜøÀiß‚42gÞ!‡Ì‚oâ%>/NÐ7•¡CB¬&ѾqáY/³¦ÄÂÄø/Uœ;÷¯ ßoÙ»«g;ßlîZ»æOÒ½Ÿí26½\Ž4Íó4øïÇR|EŸçä@ª[íÒ_è £ÄËF•Ì2`É–Beüv+| ÔRXsx˜*ÎK Ô%ÊÅ 6j ŒÅufÀ’çý~ ^„ÿ$3þªò­UigŸÇìü Rú±ŠéÌ.‚ÑmW³êœýñ{{êÜ!1•¨¥¡Ä8AHcmë ®æéÜ‘ÆßýÍ< €°|T ö šû–ãedÑb€µòzô„ó!nåôPÿòö•ÆçÅÁ\œ '#ÛI8I6"U½¡ãC¶+Ìê§É!6e{œIgO^  ‰ÕRÃä™úAK£ù²ø b³ñ}¹8Áp”hT®z¯J‘ë qõ¸4d×pÊäG‰—M«XÛ™± õZh7†æÙ‘&Ø9<“2@ãXØ?¸#7ùr÷ ÝØ3ÔBãÓÂ³âØ…AŸ Ô)!•Õ"V ,4øËÓ˜»³l—À›ŒÄ Þí£*¿±ª|°eº=p³wh‘¨m¼[@ªHR…@ªHR…@ª½æB‹ ¯Ò—øÝ;ç· î‚Ì´åÃÇnÉ¡ nÂp‘•7Ë…º¡…D0Z×Ð̈C®çßTI3i–%Äæ´j¡k×¾ Ý¥~Ü™¨1/BÄ2B©\‚Ī Þ‡[Ì3BÝxr’~øc÷tvhÏçvxÜŒRß,UQˆÁo›”ÿˆóû>™ŒÉ´41ɼ¢Ô¹žNÜ43V{í«¥Ì~騇8,Ú ½ª\ö™‚š9=>™8MÕŒ›òòý 6DU=Ÿ¤Ÿýlþ#¿vßm Í\Ð[‚ïÕËÕwöièc­â+òÔ¸ˆ 8à!R˜@¤’0§~§Íâ‡1ùõû~[86bCTÍyÀrp–“òµ1'5ÑkH‹q4Ðç%]l¤3_·&ì?Xy$“éÐðmTf‘Ì샂ˆ'2°K¾ ±Ó&˱!ª:v}à†î9)ÿQèP²YÈ$cH+ÞÀÃ"À©Ù@”Fµj­zÊ)Röip¤\ɼDÈZzœk»Ð L5cn¥M8ëŒvÏûðûTxb¾B°S´a†FKü3¤–œ×‘;¤‡u/ °ùú$$Þ9ÓÔC‰ôî{ÈÈ‚ºPiN‚æ ¹>Û BkÊ~ãTMš^fðORþ#âo‹QdAªBdm Ú›”:Û+´KaÏ_‰¼Ù$qZE8—[Iã ñÑ\(¿?&§JG}c ŽNÅ&®«æG">~DOóÉF ÐÜîW ýìü`¤¾™êÔB£Ç’|=eîr*ï+úáãCÒ¦¢%ü‹º‘¦ì,{MMîIi´8g[ɱ5(ûuâsŸ ‡Ñ¨UÅÑ~…T%T½ƒ2ª<ª0±Q¢Ä“v0·[Å¡Ÿ´S…J…TU6ð¡HÕ~·T!*¤ T!*¤ T!*¤ T!*¤ T!*¤ T!*¤ T!*¤ T!*¤ T!U¤ T!U¤ T!U¤ T!U¤ T!U¤ T!U¤ T!U¤ T!U¤ T!U¤ T!U¤ ©B U¤ ©B U¤ ©B Uˆ#ÿ~ûñi‹UB•ácG•Põ.J£±¿¨üMLÅá]t+ÐD UˆÏ†ýºñ€{ü†íùs ÛAÕƒý|õýyO*qÕâ±”»A¸6ÃJ$[öRìÔ ·ì–ÇY<ÐZÕ2»B«FÞme¹+[ÎzÞ°šԪ͂Û/#¥œ5jÕ–hÇòL¹ jÕ–h LÙ ^Wm˜-*HÕVè•«üe k•‰nyMÂ\«6²Vu8eìNvÖ*¯×K êÊšuŠøk¤¸¥àΚ-Óî•ýëª×nM‚r1ßòùÒXššˆç÷}2£-ÿx(ÙÙ7˜ÌÖfOÔ µY¯ý4x:ÁzùÝ ÿ ü{OX¾¢€þk¯ýúßxŠ1 Ay Píá|>'`–Ëåòùù™RúçÕ=€­Ê'¥¿ú‹€‡®×ëñxlŸš¡À¹¨@€9®×kþT @ *¨@ @ *¨@ @ *¨àWe¹Óé”RºÝncË›cÚýúõ—Köß5ØÜÃ÷¾Üét égýÀ>© R} >”ïm ûßÁ)‡ñ¤¦›Ú¢²êy®ò`…á @½UOù®rù4÷‡x󣀟 l†Z¯3—Z'ù:­´X¸<õNw÷§Ë…J:Sù±zÆ:ÓQ9°…Ú*ê÷€Ug¨¯ºäÙîýýžä/Õ”o_íî”{©mh¬ÑB‹c'ÒW¼pÍ»ßPÍZwJ¾ ð3M ÔSÏÔöwâ±§}õ{ÿšòW !—ggªŽ¨g­kvÒP”Ã[štL;åûž·½ Næ×ôvýÓÑ«©?!üÔ{†vé×P›‹ŽýóŸK*,˜š‹9:©ªåw;?ØBùÅàÁàÜÙá@¬êÊúÙP†©åË&.¬v-¹³d°ƒ}Ôf¶I*@Ç‹ÿ§¤µ_žtÕyÞ%êÖ3öGm,€©^¨ëïš§Þµü¶©±{hª,\ÙhÙØªUFøŒ¦~‚÷=å[¾Õ¨^{i°2¦–XUá¢fçOc/-õ'¬Z§…>8ñ Ðw8ŸÏ)¥æ_ Òõz½\.)¥ÏÏÏôòk¨°T P €@€T P €@€T P €@€ïûómƒ®×ë«»ÄóƒWìÀÆ5¥ÔüV°÷ûýx<Þï÷WwqÊx1gžØ *¨`N žN§Óé4öt‡ÃapÉaH¡üàKbªÖ7£ÝÂú>µ]€kþ uý­ñýGçqú;&EÅwfC3{}˜!øÏfò”½Ýní’ÛíÖ>È>|Wl÷bµ)•gvºÍ’Bvaþx°Úv†ý°Î¼’©=[˜¿Z_?À´èjg’z:nt^m^JÎçÚìì¿+V›d!ÙÐTÒŸ¶æÉW(Ð,ÌUÛζk­YßÁJÆj.Ô@nþ µtæKÒH"æsÍšygM™ÕNcæ µ¹20õ e¦šTÏÃÂÒ ÆÒS¾ýIjÊÚ©õÔèï÷§Ö0¯¡úçuéáMR3ê|XI>1< @Ù¢@íç’ Ÿo~¹´/Ÿ· ¦ÎÃcÊÓÁ¨“Õíã~ÍyüTóÂvöí½þµý œ'ý)ÎÔ›wjÇËåòêŽÀ_6¨)¥ûýþê.@—k¨@ @ *¨@ @ *¨@ @ *¨@ @€¥?ßv:RJ·Û­ó´yËvÊ篶/ 6Ô©paçç9N3š.¯ûÔz^µîŒyÖï¡6{üð½žFó‚m¡~®@zÕŒ7YNy=y×,éÌŒ'Üí»Ú§m–×4Ôïí຾±\›Ù*Àû˜¨___%ÿþûohgæÈç©ik¾|¬Loy¾æ™×ÆäàÂ~NÓKÖ¢Pê¥iëPïããã~¿/©aÚ õãã#Ú¶=i®Ù¹˜ºpžÚŸN*“GÔ S½±u/ô°ÉÑNßúsÓΦ Þïß¿—W2ù”ï`€ž¢|†ÂyÑr6×”yØâ¼“LܱS»ùœuá ½æjš›Có®#.¹Öøð]Kîøí,éW•Ï\;§”ÝðVüj•ö"ëìKÌìšsݬæ5Ú„ÁØM°­úªÊåkÊ<|WÞçþíBc«3Vm§ð`çÕÀKÎçsJ©ù·ìëëkùMPðnæÜõz½\.)¥ÏÏÏä”/„¨@ @ *¨@ @ *¨@ @ *¨@ @ ~­ÐÆétJ)Ýn·Á§œ Ç¿¾‰©Õ®üÍÝÊ8¼§Óé4£‡õ{‰4ñ›Þ®¬|ÖÔÆ¼íM”fðO§Ó؆È÷›õkûšM˜7þûcfè‹ÌSØKô® ['/ü£vëê üsÐýÂ&)¼kµžoT3°•û©±qΫjKæ›l_§òG®ÏþŠ÷ß’/YÞnú{À×™S–7tå·5_RÙb¿’•ÇaÉ:†ïëú“˨㚽ÄàØvr=ºû]DcÕk¨ýá¾ý‘†F?ý}ÔhGp®3ÔùÓö;°/CÙØG.ÿXv¾¥]¸°Ý¾±oÊ“¾#æÊ}ØÓ8ÌXÇB™yûº¼äš_æ“å2y~Ô."­9Cí  _|ôk¶ÄÙZ[Ñá¶O_ÛŸ…Ö9h+ÏijŒó“2u°¹¨Y`^Û»Cͼm^mõo_ÿ;Õ™ /ìÃÎv­µOùŽÈOý ›˜†«<W9ò·Þi±ûOú”æçТÎݽ ãИ·×zŸ}]çøfáÖÙå.bÕ@íìw–Œæž¶Á›¨ÒÊbá×uÞMç; }žw¹â3‡Æ>öuQ×Úv¹‹Øöß¡¶{´š3û¤Ð»3 î:wîIÎú:Ÿw uR[{‡N5—xgôdÍ]Üà^âa&uo¯»ˆµµü>õƒÒy×nmžmùˆýœ‘?eRÝŠwΫ~‹ƒ•ôoES_òa ƒ+2xÊ®³pãPYÿÃÇÔïNý»gcm}ž=¼Ûr8ŸÏ)¥æß²¯¯¯ûýþü^ïklÓ_[1/à®×ëårI)}~~¦­Ÿò€7ñâÿØØœ'ýÁ l*¨@ @ *¨@ @ *¨`ÿzðz½®ÐÊîÕü€Aΰ'ƒö7£ÑØñ8ìxÕždꈕ­ôù6ÿ?³Ýï÷ãñ8õ—~ø°´œÑhìxv¼jO2oÄ œòÝ’3´œÑhìxv¼jO>bT P Ànõp8<\‡?^Ý‘w1øêQýÂÚÇZ,±›Mn¥»|_âp8|¿ºlRþáñAJ#iÚ¢ú…%H¶¾ŸjÕjóY¬9zmK>,Ð)“Wûýý=öéŸWáF²‡ýáCË>´±ïqÛ+æ;û :Öž¡öZÇŽ^'H)õ ?ìä 7}”ýs&<ƒDcÇãP¹hf);‡…Ö¾†Úß…-WY \¦0µ¤Â\­#ža¶·¸†úðÂ’3 ƒ‡Tó*Üñ‰Ž¯ðP>÷¨³½>P;§foqÌŽ?g;^5 †ë>Ë­}Ê·`Ï›§ŽÝ4»ÂÍÍçê;¼¹U–+ñí*­=Cm³-¿DÚ.Ül Ljwv…›>%ÒöÁWÇ ü@Æä¡Á!ª_È[)o¸%ûÞå§| ÷%݈T.0ø¸|÷ÓŒ ëܱ!|J2&=•wîþ¸=­K®¼áÞ%JÚñÿ”kZ5PÚ¼„aXÁJ§|ï÷»ßê[ŸaŸÁ åŒFcÇã°ãU[ßá|>§”š˾¾¾>>>æý¸ùñxœñ.:¦¾aOíoF£±ãqØñª=I3bóîz½^.—”ÒççgZs†ºNCä û -g4;‡¯ÚúÜ”¦ÍPÿþý¤~À¦MÔçõ6mB :Õc\C€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€T P €@€¿ÚG×ëõ…ý€Mû•R:ŸÏÇãñr¹¼º3°Uÿ¤”ŽÇã«»Ûvøï¿ÿ^ÝØ<7%@€ÿ*‘pº^ÕIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/keystore_config.png0000644000175000017500000001623412032647206024255 0ustar ebourgebourg‰PNG  IHDR«¼â|sBITÛáOàtEXtSoftwareShutterc‚Ð 8IDATxÚíÝOh#Yž'ð_¼Í=,ÌÅGËÙÚ¢ )âÐ*V=î^œ²Dh‹i‹ÞÄ;±Ðô Y™©uø²°X-¨j$°Sh‡‚E˜i“SÈ5Ôh#ùÏl—{©À—bJpmÚ)ßìËÀ¶ëÅB ‡þ‡lËå?ßy(‡"^¼xR½_¼÷Bú ççç`C l l l  an+lèz%åõz½©Š®_n¬¤|>Ÿ×Í7ô‡tý•”×gáæúÍ\ ÑŒÍb½©·ümw«þ°z¾Ñ70ÚÐù•xs9¹·t£ÿ2¡¢¶µ«e—æÓׯ†®7vVâ*»Cƒ9 ¸Oìt7é¥L•ɽ˜[Æeã®ðÖÆ‚£u]z%5¿‘3¼¯W‰“lm´ö÷WïR#‚{õŽU îýhøk.ÙêŒz#5'aRcç|ÔëóùR½c7sò§sRÈ›zËߦçã*cŒ©Šßo½î˜çéØnli–ßzµ»V=io25ƸœØß :,×et¤Æ•Ú?{Ç—®Wº¯¨÷Ô_«ÅZ‡3`Ë©m6BkgÛUºâU‘–^ÊÖX Ù97¥7ò+K™Zk†©Š7U‡gN$¢Â‘fîyV>¬1-8¡’òvL Ì_Îó0¦ÆçW:VVê;+þPÖ¬FÏZõŒ…õâÜy)]ç줥­ggµìRZiÖ(=¿”­]ò‡Ì?íël½’¶6Sã+;6{ö[¸jxÈa£¾³¢¨LNWÝBÏ»uW8W*•Š ™ˆ¨pTÑõɅ̹ñßF]>¬r.ÏJ¤ë•£q.'ŠÅRËþþêGì£Ø^RæÜxɼÙ7Æž ™3V˼¹ì¡S³Ùšõ¨~µê9ƒD4휤¡Ã‘gW•»Â¹b±ãt‚àîyE]!9®2fm„ÌG~ÿºˆHŒ4k• »8§j½a³J׸jü¿ðØÃ†ÑQ!Þy¿i€ÐÂ$‘4+sNtR?#Apψ1µ9ÞÐÞdkLŒ¼t Ñ”S¤æ$Iÿé£öS\¤——% ¸+¼ÕZ<P«QÙ=»uŽ«y:û§hx,³R,9R!Ý@ÆŠ…Y«Içô]ºjxú.‰s.'÷b”žWÔZf)íìZgLUüªùñæÍ»4 U-i«n·vTà\œóL‘ 86¶he)[cLU|jó—Ù-‚Iç4Qµ£†–ÕìÁµj7剪'õ3r;èêgI×hùá#[1£W#´M2F£uìc½jx¸aÃà^ÝOWQÕø‚ànî/ÕøŠskc¡ÏiéÙÏê'¶ºÑ>µ²‡sšX­–IìxºúÜëœ}tCCW›³œ:, 1ØZ4Ú¹på*ëªà!NRµE™[WV[3Qm³Þ–NÙý2"2¦*~Ee,0+õÜǘj§jý}{‡eîÐq cÚ³ýF'ƒkÕÚ^F\œwKCoä£Þ”FÒ¨gUwm͇:OÆtŸñôÒÒ!¹N ™MÎ)£ÞG]ßé;kw…6Œ69²K+d|ËAzq25Uñ©–é‹ÖpdÒ3çÊTkŒqWØ|X©G·ÈɳnAÐõ)§H¬Vˆü™V9]§`ƒŸ}jƒþµjë"Ádݯ¨m“ZÆ!$÷*jøÙGÕ£¶@ Ph ¦œ"QÌúq.F¶Bõ¥xuP©—-™%â.—Èy©ñyúMé?w4²4¼J7ÕððGmcŽZvi~%ßÐGpc¯ÿúí¤ñ .‰sžþS@ä çöWÝÆ¬Ñ‚é¸î8…﨩UÇÎîÕb1vñö9®f˜¹ÂÙGp8‚[—WÍåÄ^lÖrïßÖ&F†-„Xâ®ðÖÆ†{h§Ç÷»p ççç7^¨ñý‰*‰C—3]oì¬$H¹l"cY‚Ë #šÜAOn¼D]oì$25ÆH!f ô¾^­ª!Ö2øÃ¤Üq7ü[{ºÞØYi~ó¹çb8\ôÌçZ0)÷ ïÇ$`´€°€°p¯ôøÞÆîî.Ú/..†‡ cW´Àc¶½½mw´aèŽ0·ì³Ï¿ÀÛðƒøä—¿è÷Ò“»\ïõW¿Â›pË...&&&ú½Š%qh3x²aF€°76t½’òzS½}KÊšBõV”×gÖËÖ¿fBÛ§w¯!ËëRËŒµÂ£>3³þO×{ M 0Š!Kâ…xz¶WRÕªkž9x~|¼v¥¬yn¶bËôúXó\ùøeÚhþ“cÏØÚθjÏÚXN{´Ñ|™©ñ•FûÈøZŒ‰±ÑëMU*)c{4ßÐù¨×ëõFó ½ul#õú|>¯7UÑõË£† bN·C]½ýévhæòîþt;Ôy]^Ÿ ýî«usðOT^ŸYþ’}¹|¹gy}f¦}ˆP^ŸY/Ÿn‡ffZÛOÔÝ%䃯{Æ¡A…K’Ú>¥Î*Y‡Í󆶷×{¼ZnÛh­p«|§°SC»a#HȬ–]JkÖ­‚à^Ýß/•JÅ\ØÅy!ž6;}ÆÔøÑ¬±½– Í'HÙŠˆTÍ$š±GK/eªb8©o/v€ï¶Ck´Þ1B8Ý^û6|¬iÚñkZ^/ÓÓÅp0P¶î­}ü¿ÿ64MÓ´ã㵟gíøõÏùÏ_·Ê*¯/¿{õ•¦i_½z·|òËk´~|||¼æé>Q¯¨ñ¼wÐT¸öwEŸæÊ]U²¾FëÇš¦­Ón~H Y+lw¬išSØ©!€íÑI±\ØÅTźÈqiÒ9ݾs9“ŒíœËÉ…IcŸjý=‘®WŽ D4픜ÓDtR?#iuuà}þ/3þ¸-–t÷øáŧDA'ø:·ø´ÿ‰lÎ )üéÏޝ¾{÷샧Ô<|ȹ¬ö¬™ÿ=ä׬! lô2¹ „]¼_Ù9³ÌS5òQ¯×ïWT6ò³XŒ©Šq`µþÞÖÁ M;ûqیɿýæ›ßþ…1³Ò¼º~Ö /åƒ|ðùOèébî5-ÏH’tÕUà^'º üö›+ÛœzºÝ ÂFsJʱ°‘ P5“È1Coì$2Uù„5¶ SN‘8—Åb©T6ÈhçYk?úðÇAcöɘ€ò4ÇÏ>Í•‰N·³ï^…<­#µ¿û«wËW ½Od­ÙHcñ;Ý-ÓëcMÓ4m#ˆÏ8ÜrØ "ApǶ"bµZmnx_¯Ñ´sr´“ ‚Ã3'2¦æZ#ûKâ]‘ãéO_¼ëÑY{B¯Þ”˹OŸ…ÍY›.ï¾;½ìñi­ÓílŸŠ>'êˆËÝ‹Çv RêAsE>›ï¬üévh9ßw˜òãæ¬Úéwïz\õMÕ6ôøŽàF2pE’ÆÔø|îD$ÆÔø|Úæ÷9ÁÍ„ÌkÙù0Õˆ}éÚqøÛgBÛ§ôt1÷ü`¦ë«OúâÝò²9ÔhM×üÅoŸ½n=~úúÙ§7÷7þ$éãOŸ½îóPnŸµ×êõ³ÖDÖå>v x­Íéµ5zl¿þ™™5Zì{\³23kô"˜_žY/·_uۮר!ûü‹+þ”ᾘñ;Ýå>È¡[€[±öé_¯¿úÕöööù6î3ã™Òµ‡p!3Ë_2FDœÿüõ12 ÀððÂÆƒù ´gíÚ_ˆx\aãââÉš6lùä—¿˜˜˜@¦&„Fx‡îäÛ„ @Ø„ ¸Ož<ª«˜˜À[€Ñ lÀÝ3d’J×+éù¸Úüe$Wdk#èÐjmôŠüÊ|¼@#«ÒÞžB‰ôÈ?u>f£eì€ñ… íM¦ÆX 3rð ‚#¸y™¯’òú|>ŸÏçMU:{ðJÊx)šoéc½Þh¾¡Û܇ˆt½‘z­99Ìóù¨Ïç3v6CÖœFiͺySoù[Ä€±‡ ]¯ˆsyVêñj#UT&'ŠÅ„ÌT%šo\–ÈÔøÑl1vq^ˆæ¤lEDªf;VÇ=t-½”©ŠáDX¤B<­Y ?$¥˜ ‹TͼÑÁÛKÊœs.'÷bnAÐõJz)SmFË; ×mô(òaµQ¤Y™óêaÙ œËɘD“Îiã¿7&'ÓDT­¿o•0x#bM;%ç4Ô­…‡&©pÔoÁ˜_iF Ap¯îï#~ü`a£•KÜÂn¬fLUüŠÊØH…iÏ]œ³Z6ä÷§*˜˜¸•°!îÙ1¦iÝ/N9Åö ¢sê&k5å‰sùjM‚#¸¹¿Ÿ9âi,iÜÒhCzqq^ˆ¯˜+Õ•Tª¢ë‚àð͈̉¢©Œ‰sÇÍM™åçvÎlÆ¢“zû¾R,)sN¢ÓG­nΓÁ·í{Îô|<òg‰ˆHNWˆÁÍDÝ«(~•ˆË‰Í ãf«Õ,?òeÉXî–úǘ%r¸”Ɇü.ÿ¦ôçðýºùE#Ê‚CÐð6ÜØýùùyǦÝÝÝÅÅÅ™" ¿I`ÓöövÏX€€ lÀžô› i [µ ,€¡{m㉠XÛ„ @Ø„ @Ø„ „ @Ø€;6t½‘¶%±Ð-i-ô;™ââúµºS×¥WR>ŸÏçóy½©·üímVLG €GìÉÓÞdkŒ1õH‹¹Ý/é»Wïëèz%=/P ¹s Âݹ.]¯¤ãÞª}4ΊÝÙv€û1ÚÐõÆNî$œ»8/äv]·œÝ#_‹™ÜÛ®˜÷ËÆ}«1ˆ±né·gÛélÕ=`êÞ¡’jõüyü×óq•1ÆÔø|ºç(ÊÜÙ›ªt\{>õù|^oÔÌØáòØV6K3:q£bŠßß=Ú0ÛÜF{ {ÿw%ee}¿¬§G;À#˜¤ÒÞd¦C ’gN$ª–fn5îLK¥R1vqn$÷ÖõJz)S¥@G¶p-½”©ŠáDX¤B<­5ïs{íÙv#l¯¨Î‹èµC#Äp®X*•’¿ÙKÊœé»ó™7òQEer¢XLÈLU¢ùÆe³2õ”b.,R5ó¦ÇÙ­'2êl¿4ApÇZK‹Ým¢¥ã*cr¢¸§ÌÙý05~4»¿¿úû¨ãýÒHŠ­àáLRíîîvlyñâ…9Ôˆ(1AoªB–r|-©ŠÞ±}~%wÒqÆ>…÷ˆX+i$@´¦84K³Syx¼aã{~…DÔLmMYãvž15~4»¿¿ê-½”©ŠáDX¤B<­uÚÈG•ɉb1!3U‰ææX¡T*saç…xÚèµÔÜr¢¸§Ì]7Œ[*Ù÷²†U6Œ?ûóÿ0àÂF[ç«øý~Eå®°™ÛŽs9“Œûú£M;%ç4Ô;¡ëz£|Xå\ž•ˆ¤Y¹;Yzkcì\?!Î]ΩËíF€Üû÷dVrÀ dpåే?éæ¿Ýƒ?ôÛm÷àÖ=í—ÿ×6Ì.»g¿Ê˜ªøUbŒªõ÷D“m/¾¯WÛ÷®Öß9ZÙ¹kŒcÄ­;O;'o9.^VÞÿQÀ2Ú°þù÷¥¯ÿ“ï§ûü}éë‘F?l 3å‰W„–)§Hd¢sŠH×;‰L•ÄH.T_ŠîLåú… "ÚÙýß /þ£õÏ+Ç zœ?œ.ϜȘšÛ9¼Ã‘Ö\ ç<Aè9°÷l€ŒEºÒ’xWܳ":©Ÿ]k§òðÈýé{½ûßßþÃ?¯þí?ücÏ6†p72¯eCýžG2vP¿_Q¹œØ :Œ®<– 0¦Æçs'"1¦ÆçÓ]—^F\œ«Šÿh6)ó{ôMz©š ùsΈµØ¡•€Ç6xÏ¿ûêàw_ô{u„›Úóóóž/ìîî...^\\à=¸Ÿ}þÅÏ|ü.ŒÏÛþ×ß— ¹øò ÇþÍö3߯àþ?.ð |ÿýx¿î‡°ð ü‰wâaàa…ï6`„Ñ&©À¶ï1ÚxHŒL¿mÀp¿/Ð0n%õ«±–ÏÐÄ`~i£;dýÕ¯Ðp]\\LLLØü~7FÝgŸag„ ÂŒ3l‰¬­?¼jý‘ðëÿ`¸™(Ûçóy½Ñ|ãæ@µ’׿¨n§Û¡™™õ2>€ððGÚ›l5sQt¹r2T3fì¬,eªb8W,•J{{ %ÒW‹F¹f%¯­¼>3³F/‚øôÀƒºÞØÉ„aç…ÜNwë¯%UiNù¨×OttëmyÁÜ\•HKÏÇUÆÌü=K¾Ÿ/”­Qõ°ÜØ­óQ~¿bI…íŽmE\œ³Z6ä÷›;‘£XÌ…]|@té.ù¦õHn {Šqêjý½q]Ž ‰¨•uàq‡æªF®X*•J¥’Ñ­ž§ÒõÆN"S%1œKXSa Žàæþ~BæDd_²2g~Ì~ÙNÉ·bÊ)çrÇ$›®7ʇU"ªfãxú à¾6´7™éPÐ!˜ÝºyªA7ìR,)sN¢sª-TRÑ|sx¡©Œµv˜rŠDtR?^²µ·2s•åHk.r´_¸šÛi+WK/ÕC{ÍÕ‘¥ô[þöÆŸÙ¸OaÃXÕ°n™ô̹80O%îX2À˜ŸÏˆÆBw³?õù|~¿R 1¢,8Ú—Äc %æç}>Ÿ_Q¹+¼µ±àAp,(Íů7¥‘Ô]rGÝqȺoéeÄŹªøf“Ö1#¸™y-2¦zËßç£Þ£Ù½U· 8‚FÅVþð/} .¯ÏÌHÒÊ—ìËI·7à~ÎÏÏ{¾°»»»¸¸hó—­`¨Ï>ÿ?ewÓÚ§½þêWf‡?¸ÿÇ‹À6`È·q{...Fúub„Çë“_þbbbË€°¶`œwüÖaãÎÁPî&$…€ ),Œ ÂÜnØ𨶤L½’; :°{ç>)ìévhfF’$ ?.÷ÍM,‰_¦‰¹Ý/™'V¯}› —츩*]=f|ümøøØƒO<ÂÑÆøÓÄØOæ: J·™¶œÛ}ñÕb<Ò°1î4±Cj?J2×›*çzIaO¿{÷ìƒ?®3T˜Ÿ€Ç6n'M¬¹ƒâ÷w Gì'sì“ÂþñÛoòËÏ5MÓ4íùÁLhûŸBx4£ÛJkôìö†#v28Ù1¦¤°?úðÇÁ×­9*ÏÚëg»_#nÀ£·œ&öθfRا<ççhãVÒÄŽª_2×›*çúIa=¡³­5Óí,…Ÿâc!lÜNšØËжÖ6†>mÕ/™ë¨Æ•öébîù±$¾Fëx¦ î$…½%H w’ÂÀ¸ lÀoãö ), l€]H 0òh÷Ö6à†FÛÛÛh °êû½‰‰ ´À£Õo^ýɨÀc†µ @Ø„ @Ø„ x þ?ã—Ø¹? €T€T€T€T Õ Õ Õ ÕHuHuHuHuR;ðõpÓéÔ,Ün·1í/×t,o¯Ú7ÙÚ{ú¼åîy©Õ-’öt XÙ×øUÃÚÏ–CÃrªÞj¥’°³T72ù%Po<šöRt¬pÖµw9ÜÕÈýŒ yÝt›˜˜ÓápÍÞ¡3°mã“ÑÀ6í&ƒDjI,G-Ó^z¸ÿĆsö“Þmzo¹4r`€wó\­®™mìQYèôK˜ü³·Ï¾®ÆD™,ûé]!ÚsïLèðœ}¶è¼]ªAÒéd¨È½ôð¾v…¡ Ù]sæ~Æì6±‡Éš<°ÀûXãØèú°¡KÜ¢—z[^ëöÛäµZ6;VÀÊž¨Õ5¦ôÔ^º=¼f.,\õ¾4gÖr…85tìB³  ¼•̵º0^t—»³„‰—†¤Ä}“ûd|kÀÞ­T«kji½ #lºÁbZx «_Ýb^wR¸·0–ÞíÌŒ›¥cÞpx›¸[¢[™›GÚöƣɩ1½Ûñ‘®}˽7¼ä­»öµ®Å‚‘ÒÏx­/C0!Ûl͆`$‡¶Ì ,À¨ÕHuHuHuHuDz×çÕUUåÃޤ,ËwLuw—ËÅÇC]×EQÜÿ;yf`^oþ<¤TpR€TÀRÝé—¡×ñùùù°eý><µmdý_‚—È+Ã=°÷$w»Ý^øî¡äŸþya@ižeóðí¬—ê†¢^»Üd¾¦å¾Ü.„·šøºÉ)Kã½¥_ÑB»Bb“ùýïíÀPÆM¼©æGQ¤ºÓX¼Â›iÙðÇ&Ø…!¯m ÃÜø`›oÂP5”ur5‡¢ÞÇóuÄi¹y»þ¿ð½Ô]Nì|¹7ßeÚÆtÐ ããÃ}¦7‰G¬¡½Í|ûÀû¦ºF”á¢ùÖÉû™©›{Â0¸ôdå¢z'O³t`äÛ¤ºEémÎÅpy‹séj\˜¢NV®ï¢`—÷>Œ‡!د>¯®½ðnäÓR^^l—x5½íøMÆïgò¶Oõ*ýö€È6–ëÂû!žÝC¸“™]?ÙšnŒ^í6ŽìƘMÂx:³WÏÎ5«ÛÀ®}¾öQs“UUu¹\^¤Ú呉jÂ&Rݲ&IJ咜Œ!ÕÕu]U•àc¿×ÕÝEáóŽäM¯«›ó¶æC Õ Õ ÕÐZãn‰æKÀ¢¯ _j[¢/‹îÏí~Ù~oàÈkCµº6ü5zcܘÞÐkžlrOcaé®×Su¸pWÝB`º±M“}ež:ⳇØAª»^¯QË?æ¾i‘®Í^adŒ£”6¦“åøC ·;Jóù<ÿA¼_¹ºþ˜îVt]ïr"Û=U kBUom²1‰3:nwˆ?þ̲Ÿl3°Y¾é!šëì­¥ ]Q×½Ó¢i™Pü{ÊÈãú& `QK]W÷0K%Êfcî„hÂSw^uh?'[g&Ñõ ÚÖ=°ógHÛ´ ãCÕÈ£÷ösÎqæûœ>®×kï%~ï6º5Ú*Úaؘ¸eõãù»VÃ{†Ž5ùOE© ¥:V‹R¾1 à¤:©©©©@ª`k¾ ‘ªª ,­,K©ŽÅ].ƒË©ëº(м_â``mKÌŒIuG ÕHulÃ"wKœN§vùv»-ýV>\÷èÍA›nLë@ø&ì¤í ÕeÎXmÐY:p¬|¸Ee–DHu™3V³Ð&­(~EËa¬™¶f”Š+÷î?ÚUo\‹Û‡ÞàãOˆŒé>$ÝçÔ€MyñuumªÊÖ ³KwåÞô5ö«ÛØ›&'}èýÞ~{¶½‡n€C:æSˆ™i(=µÿôúϽ»á˜ðÚ»«‡aq¨z Huˆ°Ék®Ù«\¢€MÚ¼&Õ¿qa|¹hÍÂÒk‹X iÀS2_W7æÎ€¡ÊS33øÔšÑ4ewYÒUwŸK(KÇ&|Fþ©îAhè}[TÀ‹Vn~¿æÃ=LË.ã÷Ù{õÛÌ£'†ña²Ø£Ïùø¯×ëù|®ëzhÏÈÝšt櫪êr¹%XÎ÷÷÷ý¯mŸF©‘Ö¸[B¤ÛZžó¡Àñ|‚·"Ì€Tǩ뺪*ãR;V–eQ.­©î€®€¼Ê²”ê^Cí È¥®ë¢(æß÷úð¬l‰i@©à¤:©©€\òßÛûU÷svåëÊ\«ksX£òX²ϫ Ëla¼ ß}9ªÉ¥KtÝ­Âõ»Ë½G|¸&À¾,r]Ýé—Þ(ÖMQ÷å°1ÊjéH—îÃÐ'¯ ð.©.*ÎIHCµ±tÍLE ”6ªxµ¥¸W”ÁÆQ‰êg»°qMã¨øìZþ{`Ç\ñ6¦0–^'qÕݘ#Ž_àS][¢kãQÓ¶$ cíš½ëô¾šnìíÆÃ5öås~ˆ¹^¯çó¹®ë•»¾f«ªêr¹øu²øþþ¾G‹&>åŠR¾1 à¾öÛuS¥-µ:€#ø2#Õu]U•q¤º+˲( 7LRÝî=ugŠªV–¥T· {Àº®‹¢Èû`8wK¬m‰i=©à¤:©€mÈ|·Dóݬ¡,ß±æW¾Huq’;ý2?És/Hu½Â2^ûÆ4&V»ÿØûjtÜvµpáãÿ«€Cdz&Àk­t]]‰ÂT4¾ñÙ=EºÉû™¶&À¾SÝé·Ñ¥¬6$¥×醿‘]RQŽmÁëêºE¬ñe­g `¹ fËõ`©®ÍvÑÝË•Ör•âÿ€zÁóêÚÉÙ Ýî¤}idcï~Ư pÀT׆°v! dãÇ¢wý¨c{;ópM€×úœJ®×ëù|®ëzãouÍVUÕårñëôúþþ¾G…&>åŠR¾1 à¾Þç­š*¤:žV×uUUÆêv¬,Ë¢(\ZHu»·ýÛG€#q·Àä©ÕýüùÓPì;ÕÏgã°ûTç2€—s]€T€T€T€T Õ°5K}cØétjn·ÛP ¹¨ÕÁ×Ò8N·Û­-Ô…íír·ž7§±=\ÓÞ»&€T»^¯QË?F½0u…Éodc˜ä¢5Ã×»yoŸ^å|>Ïÿ²®¯\] l»f¬ÞŠ]oà»ý’hìáBcä»k€øùóg–ýd›0£ìÕ¦±°ÀÖÛøÑ™l}ê@¾»8œ¯Ž‘(ªõ¶´1® vQc”ðr9px¯¿¶¹Ü-\CXoã´Ùî àx>ç×±®×k÷¿è6…°Þ–¸5uZc´O÷À;Ò¥6”êÖÝ+Ão•ê¾3"Ñ"ðV¾Žôf$9àmùÆ0©©©©@ª@ª@ª@ªêØ®/CÉõz5[öãǃRÀ(ÿý·Aئ¿þú«®kãRÀXþù§AØ”²,‹¢0 Õ<ír¹„¨ëZ¤©`V˜0[PU• +p,€T€T€T€Tp,î…ÅN§vùv»m§KÏvæ¾U³É´ÍGî‚W}Copü¯ÇÃHuÀ”ütúe •'ôaÑlÚM]‹¾ëõ?ˆ¡7¸Í_ù™è R9ÒEêº!©]9úK?a…Þ•ÓkvsOØØþØÄŽôæ½GLÄpç‰n,.o¡ÑKüz´Á.1†QË« xáûé`#\W/sû% á,g4ã9r…¡ìÒ»f› ÂW›•ÃÆÞ`:þ¤˜ÞùÃÞf‰ÝÑÛO§–‘›Oxƒ#?µíü‹t ÕÁ»Kü‘ÿ(>ü«9þ/è˜5Û ¦Æ,oäaжŠâQÆaoßÔÈÉ•³Ç¦…†hfE:ê€æÎ%þHG·MgÓ=t¿ÂœbX´ùü7¸/“+‘@v®«Ö‹táŸÿp¶wZŒ˜|ô辄ù;Ìû÷ì€×R«ƒÅÿÚ…˯S¼Y¹6í(CQ`äÃS²÷¶»ÃÞý'îfmcÜÈXÜýõøxfj؃N©^ì¿Á½õìõvéîõFÄæsŽ8aÛù5Ô™î%ŒC?Ü¡7¸Ðoðž>çŸD®×ëù|®ëÚhỶ8÷3ÒßÿýçŸ^.—ùç¥Í†­}¥ÀªªîG³ì,¥\Wl.¬|¨Z"@ªvmkIeƒÉI˜†¸®@ª@ª ×ÕÇT×uUUÆêv¬,Ë¢(Ú§i¼3°ÀÝ#A¤:€}û믿 ð†ÌÀ‡òãÇß^¼'µ:©©©€ÿ¼ËÝF lJY–RÝDžG lD]×EQä½gß ,ÀÚ–˜E”êŽ@ªê؆ÌwKœN§¨åv»5÷…ÞÏýXëàÈ©®ITQŒ[-fu3%€T—9l…E»0öE0Lf‰ÆîÂÃ)×ïæ×Õµ©ëôK˜ÌÚ¬Ök½¡õKƒoêÂÔ5&™Wxh‹ß-!Æ!Õ™BxÖvŸW×\u7f5Ÿ"À¶R]xEûcº±{•žœ¼¡ÏùÓ×ëõ|>×u½å÷YUÕårñy[ðýý}O&M|Ê¥|cÀHuGðõ>oµ®ëªª|ä€T·ceYEáÒ:@ªÛ½ßÏ0‡ëê¤:¤:6êNi›/ºUoßÚ'wàP©®ý^¯ißßµB¤ »7ç Û‘ùØð«ZÃ…(9…ï¾-|_ð:m«¡ƒö®9´yô^º=é®n2fó,½Çíí'p`«^W×[À \e¿ÄV‰ƒö®9”AÃŽ)@†›ŒÙü©ÆÛoÝ5£aù˜Q(¤ºñbZ=iÌVs2Í„^õ&Å‘ìnð˜k€ƒÙÁSˆ·SpšÙ“hó¶ÌΟö6~ Tæ¶?b€T÷éç=énÞfímŒÞŽF XMæØèr®ŒO ÙÎGfö¤Ý¼]ˆæ^ŸÍpCñˆêò»hbqddéÞ@úìV鞌ß|Ú®fŽÉ˜ÆhŸÝëù&÷دÏùø¯×ëù|®ëÚh®©ûpö(W”ú2”;Ý9!ÒÀ›“êöì °Hª«ªÊ˜z»a» ÌRpmÕª7è4?ö6ž~›‡ŽîcMw2ÚÛÃCŒÙ@vŸóO7×ëõ|>×um4í“´€­É¥ÔêŽÀÝÀ{Q¥ŽJ­@ª@ª@ª@ª8–Ì÷ÀVUeL*ËrÓ©îîr¹øœ€øþþ¾Ÿ7‹¢0À¦ÎKUUÝOMy¿Äa‘çÕùž `kœ—€Ãs]€T€TÇûh¾O=ݰñ³“R8€TÇQÜn·¡`wú-Š€ac´Bb+€É§¦ûò½eè$Ó{¶‰–‡6|^+:‡v—›óc»-„Ëm ÀB§¦¼›@^ju¼ìßÄmãÐÊ×Xî|eص:^ì¢Óå´Ù s@ÞóRtvšp’q^Bªã­Esþ% ì÷Ôä¼Äk™å5ÿ,Îøo\ÿ8²œ—z3Yú “¸ ̨²>µ:^ìÚåÄM²÷Ðý·5@–ÓÔÐÁÝW{ÏK°¦Ïù¿y×ëõ|>7ß±XUÕårñ}‹ÀFÜOJeYfÿ m€™ç¥02…Qj3°Göž4ïñÓÈÛá¼Hu•eidMq^Ï ,Àþ©)Õ¬m‰ËB¤:€#ê¤:¤:¤:¤:©©©©@ª@ª@ª@ªêêêê¤:¤:¤:¤:©©©©@ª@ª@ª@ª@ªêêêê¤:¤:¤:¤:©©©©@ª@ª@ª@ªêا¯%vZU•‘Øqª+˲(ŠËåbdvœêîêº6¬+s]€T€T€TÀ¾ ¶‹g•eµìέ¢(ü*R0ׯWtp÷ÐÓq‡IBž-HuÀ[‹ªª<&ÀuuRRRR€TÀÖx² °”ÓéÔ,Ün·¡W£—zW=½%ý¸»fåÄ:ÍSôü«Q«øˆÂ\“Ææ<¢Ïsƒ©8ˆ°êÖíšåðÇDã˳]Îê@o† _ ·³9€Tì5êE9¯Û¸)ídko ¯ûj;ñ®Ÿ¥ ÕÛÒ{åÜ«.§8wKŒ’®±=¬À)ÑR°?í\j¸°÷R\ú†Ö‡·»ºꀽjc\ïí‰,¸C.I?ÐdÌãN$<`!®«ÖÎyQÝ®·ñµy.Ê^í]½™¬÷Õè>‰Äæ¹|Î?^¯×óùì’8ªªª.—Ë–ÿïíá‘ìÆpl¹¢”ZÀHuRRRÿñ¼:౺®«ªÚc·}v€Tð¯²,‹¢¸\.ûê¶GR@LÑ `û\W Õ Õ Õ ÕHulMž'›üüùÓPì;ÕÏgã°ûTçñ¤/çº:©©©©@ª`k¾V8Æétºÿ÷v»µ ½í­î Ñ®zW^ú-4êv ` ^P«ë&³6Ÿ…É)áöÛ˜•óv¸=.À¦|m­CMé®­M ^‰–¡’áжá!¢m»5ì Õ]¯×¨åÇC؉'Úg›½Âõá¬7¥…k&&‚£Æ‡{ë@ë|>Ïÿ²®¯\] Lw«{!]v‰ý¯P?kÂ\x _• ùùóg–ýd›}6`Î vÙg9'w¦{ŸGÓ•÷|U.°´¥®«Kß+:³\—½Þ6y‡Ý ÃKîšhèÚÜóê–~tH"M6WÂMÛgã<ú8Tª ïø®iõf£ù‘(qô螆‡ýü¸1¶wÃ1{XÂçüäq½^³Ü¸±4I Ø \QÊ7†Á×û¼UU:àÀÔê¤:¤:¤:¤:€cù2¤UUe »²,¥:Öv¹\ dT×uQy¿ÄÁ ,ÀÚ–˜ “êŽ@ªê؆ï–8N¿¾}µ]èmouWèî*} f¹]¹I·=êÏSo9ËVC#³h7©nVÔhCØä,ÅÁ9™lN¢(6«i£1­€T—GSº{¤zëQŽiv2´ÂÈê]·ReШí:Q±°w«¡>kCAv|7±XöhÕëêr•‘‘¥Jš•“ûлyØèèm”ñ`ÿ¤º·&Ì€Tǩ뺪*ãR;V–eQ.­©ŽÝs+ l߆@ª@ª@ª@ªêêêèá)ÄÀzN§Óǯ/ nzÛ[Ý¢]õ®¼ô[hÔíÀk©Õ/y]·_+DkŽ\9o‡Ûãl„Z°QMé®­M ^‰–¡’áжá!¢m»5,G­x¥… lQ!­·žÍ¥¶)­7¨…;Œ"Z½HuÀѬPÁJĩՎn®X‡XàÅæÔ±²ÏrNîL÷>¨h烤:à¡m(Ötï{}Jö´4y‡Ý £ YÁXšX`—q0×þ‡^š–5Û ÛaꀃhKVC)§Û’1%ŽÝÇú°Ÿ7Æön8foy}Î?×\¯×óù\×µÑvAÒ6%W”#ã¥þÊIDATR«8wKoG•8$µ:©©©©àX2ß[U•1x¨,ËM§º»Ëåâs6âûûû~Þ,ŠÂP›:/UUu?5åý‡EžWç{&€­q^ÏuuRRï£ù2õt ÀÆÏNN\HuàlRGq»Ý†‚Ýé·(†Ñ ‰­&ŸšîË÷–¡“LïÙ&ZÚVðex­èÚ]nÎír´.·- šòny©Õñ²·C+?\`¹ó•A`wÔêxA°‹N—Óf+ÌqyÏKÑÙiÂIÆy ©Ž·ÍYø—4°ßS“ó¯e–×ü³8ã¿qýãÈr^êÍdé3Lâ&0£ÊúÔêxq°k—7É>ÜC÷ßÖYNSCw_í=/Áš>çÿæ]¯×óùÜ|ÇbUU—ËÅ÷-q?)•e™ý+´fž—ÂÈF©9ÌÀAþØ{Ò¼ÇO# l‡ó ÕMT–¥‘6Åy 8<3°Gø§¦T°¶%. ‘êŽ@ªêêêê¤:¤:¤:¤:©©©©@ª@ª@ª@ªêêêê¤:¤:¤:¤:©©©©©@ª@ª@ª@ªêêêê¤:¤:¤:¤:©©©©@ª@ª@ª`º¯%vZU•‘Øqª+˲(ŠËåbdvœêîêº6¬+s]€T€T€TÀ¾ ¶‹g•eµìέ¢(ü*R0ׯWtp÷ÐÓq‡IBž-HuÀ[‹ªª<&ÀuuRRRR€TÀÖx² °”ÓéÔ,Ün·¡W£—zW=½%ý¸»fåÄ:ÍSôü«Q«øˆÂ\“Ææ<¢Ïsƒ©8ˆ°êÖíšåðÇDã˳]Îê@o† _ ·³9€Tì5êE9¯Û¸)ídko ¯ûj;ñ®Ÿ¥ ÕÛÒ{åÜ«.§8wKŒ’®±=¬À)ÑR°?í\j¸°÷R\ú†Ö‡·»ºꀽjc\ïí‰,¸C.I?ÐdÌãN$<`!®«ÖÎyQÝ®·ñµy.Ê^í]½™¬÷Õè>‰Äæ¹|Î?^¯×óùì’8ªªª.—Ë–ÿïíá‘ìÆpl¹¢”ZÀHuRRRÿñ¼:౺®«ªÚc·}v€Tð¯²,‹¢¸\.ûê¶GR@LÑ `û\W Õ Õ ÕðwKL·Ç=Q–¥T·!»{Ö°u]E‘÷ f`Ö¶ÄŒŸTpR€TÀ6d¾[ât:E-·ÛmæÞ¢=ô6>»«öÇ¡O; ÀAR]”äN¿LÎF«…ª\8Tªë Kba1¬mé­¥u×ï­Û%v뤺ü¢˜Õæ°î4ho(Œ&LÜÕØä9àݼæn‰ôÕl‰kÚŠk§ß$B`§©Õ­9 ú°Î7Fwö@ª[µÜ•ñXÍ ¯»%€=ÚÐóêÆ&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì½ üMÕþÿÿ— ™¯!C$óX’¹L•P‘„š ™ Q)”Ș)DÊ%šÐ rÍɘÊXI†Ìcø%óØÿy[÷®»¿{ï³Ï>ŸÏ‡×yxk¯½Ö{­õÜç³×k½×{Ÿ“âСCÿŸ^" " " "8›Òç¹Ö)$8¯¬Š€ˆ€ˆ€ü‡À?þñ+CD@D@D@ŒKp$aYø }D@D@D@€G¢#V" " " ú ˆ€ˆ€ˆ€$: ŽDG¬D@D@D@$8ôHt‰ŽX ˆ€ˆ€ˆ€Hpè3 " " "è$8±àÐg@D@D@D Ñ \™è-ü·ý¿2eÊ”3gÎ4iÒü7;!ÿÿꫯ-ZT @6mÚøÚuøõ×_wìØ‘%K–òåËû–·™®Š6_ 0B ŽíÛ··lÙsƒ¾á†H¼õÖ[Ó¦M#Q¬X±7ß|Ó¶ô×_5kÖì÷ß'‡È ;wî8pàºuël±ªU«öìÙÓÚ„5KÎW\(T¨ÐÃ?\²dI[& zX±bÅ™3g"•qøúë¯é$#Š*8\#ÙW¾ˆ€ˆ€ˆ€/P‚÷¦ÉÄI°wïÞ\¹r™Ã_~ùŨ g•×^{móæÍ”¹óÎ;Ïž=»råÊsçÎ9 ¸Ò2d([¶ìúõë1ÅÙnذaüøñ3ft‹ÿañâÅëÖ­›7oÞø›’ñ˜^¼xqãÆMß|ó«16RPd¶oß¾J•*$}ôÑóçÏ»Š9sçÎÝ£Gr&NœøÞ{ï>|ÍQ®\9g™I×üû• ¦dDD@D@D €@¼GáÂ…7mÚ´páB#8ØO!/_>6 h’CÞS¥JÅæ ƒ’FpIN@Ÿì©5j 88k2gÏžýý÷߯Y³†Ã«¯¾ºS§NEбåI}:±&Ë—/'Ääæ›of÷Ç[÷È‘#ݺu[ºtéÿûÿ_êÁž¢«]»v%N¥R¥J S Öœ5­°ÙôòË/£fè¶­¥„ˆ€ˆ€\&â%8®¹æœx2Œ2X°`AêÔ©o¹å»: ;Èœ3gNóæÍywp?~œpÎþýûôÑGœ"žãºë®s• 8ܺuk½zõ>ûì³~ýú]yå•Ä‹|úé§åí)4 é *tìØñé§Ÿ&‚•¦íY[¶l)Q¢q¦Ï<ó ‡¸4 $&¸=Ð==öØóÏ??dÈ2aB ó¢W×_=ü4ÿÍÓÿ" " "p¹ˆ—à’qr0¹2ݲŸÂúÞµ»AäÎãù`†féÏ\—Cß¾}ç΋3 Zµj¸(Œ³$ ŠóšàH™2%a<"Ë)„‚³@¤4‚€SŒ…Ö †õÃÑ‚a€¥J•â,RÆ8lè° •%²ÕÂŽRºté8ËöŠ5„.]º9›ѯ¶%D@D@D iˆW CBp¼ûî»l¦ 6Øh¸õÖ[}Çɮݻw¯S§jƒb8 5j”#GßÂ|QÇã?ž5kVÂA"•ñ­h2Mä„IçÏŸŸ]•û8=§Ï 6 Ó Ï¶P¸L™2™3g6OÆšçk¢ÖEX´nÝš¯aýöÛoIw‚Ö! ? þ’¨ÕU@D@D@.y¡_a@øFT°¾g?O_sîåE¸ß]AІ=Å÷”ó%`æ¹›&A(ßÌÁfšƒ¹}Ó¨Tt…”)rêÔ©7Þx!ÂfÇ /¼`·<‚[¡KË–-ã{Ì(–'Ož{ï½—§N‚«Ø³ 0|ùª¼×À_Èa (!" " —3ÎÀF/¾¢Šå>ß*ÁS`¾ýöÛ®ÙÝ[Å›Ã,ŠîÛ·@@hÈéßkÇäð5lÇDÝ­àÙZžˆ¡¹Hv"åS‹ºq¨h R5âë ŠÔ¨òE@D@DàR%0hÜ”>ϵŽâá˜0a‚?0á“qPTg¹ŸíïW‚ 4?Õ›q‹Ù$ÃdDm·@<«ûÚT¦ˆ€ˆ€$wQ{†¢ZQËÀ|rÔцÂ(—íÅ­ߊ·Šª%" " "Hº´jÞr(ÁÞ\â•äkØϸ,‹€ˆ€ˆ€ÄDgDL¿Ãª Ñ˜ðª°ˆ€ˆ€ˆÀ¿ ĺù Á¡Ïˆ€ˆ€ˆ@¢¸ŒÇÙ³g·mÛvôèÑ„…zæÌ™íÛ·c<>f'NœøÛo¿y-DÊw– SÆY^i¸ð Ž&Mš4nÜø?þ0]\¶lÙwܱ{÷î ßcZ|ñÅo¿ývfzÛz½zõªU«vòäI›óî»ï–/_þÇ$çÔ©Sƒ ª_¿~ÿþýüñ–-["lIobÀ€4aòƒ-=ºiÓ¦¯½ö4/^ì2E]òo»í¶;ï¼sÔ¨Q®³ÎÃÏ?ÿ|çÎΓ¶ù5Z¸p¡·9¶ŒïYeŠ€ˆ€ˆ@R CÐèáÇß|óÍ—^zéâöûÏ?ÿ\ºtiŠ)-ZÄ\îì SríÚµMÎìÙ³S§NmÒƒÞ±cÇ´iÓÒ¥KG.víÚq˜6mZgõ€´¯e|S§NýòË/¯ºêªsçÎ95Õµk×Zµj}ÿý÷O>ù$²£@öTL‰ñãÇÓJLUTXD@D@’°zÌüýÍ7ßx×ñC‡mݺõ}÷Ý÷Ê+¯lٲŌ­S§Nø f̘ñð÷mÛvëÖ­_}õU³fÍ:wî¼wï^S† ï¹çž6mÚ¬[·ŽLŒ·hÑbùò妀ïû¬Y³ªT©R§Nfzg<ökÊ~ýõ×lÙ²™zÿþýŸ}öÙSO=eÔUèRÊ”)§OŸî¬ŽdùüùóGŽ1CÆ`$ù‚6ºá† ·aÃZa€¿üò‹i®}ûö+W®4i„Ðn½õÖnݺ?~ÜÕtÞêÕ«ÉDú<öØcëÝ»·-sâĉîÝ»#¶V&I«V­jÖ¬‰â±Ö:vì8gÎ¥°­«„ˆ€ˆ€\1泬Y³>œYÖÙ3æÚG}”9ì»ï¾ûðÃÍ)v[Ð ŽR¥JmÞ¼¹W¯^…bÅŠ­]»Öl °ýÁ̊ׄŠLÉ}úôaþ>vì®;A:[±i„›#ìV,Y²äСC6G=¦o´‹"1§Œ (^¼¸-yÅWГM›6ÙœàD$Ë… † ó:_{ò×_E2¸>ùä \ýõ”a€lñ˜Â»ví²Û@ø]6lد_?äˆUNÖ&%Q2dH‡ðß°1dÏrQÊ•+‡òÃmcbAØn®³æQðB±±ƒã´Æ·Áâa*Y²$]Å»ƒbãBT¬X‘˜TΊ+¬5¼#ìC!mŽ" " "pÄÃAoØ\`;cîܹ6<‚šðL\ l”Δ)“ít®\¹Ì¦‚q@&K{vß¾}¤'Ožl¾•³(€¿çÓÿ•±…m‚%;ºgذaä¤I“æ‹/¾`ÄžÅ^É;w‘"E&ŸC< ëׯg>¶%Q-eÊ”¡EdÍ$“Àî¼8ó}-›D¡V¨PáÙgŸEUEå¬È¬ô)T¨¯YgI†c¯»î:ÂSœ§œé¾}ûââ¼üòË\ sêÚk¯5 ¤ 6_xjÆî¹ßZÈž=»M+!" " Œ@l‚ƒnáÏ`>³®… |ôÑG¬ÎyŒ¢K—.áŸ[É‘#ÖØDÀCr´8$þõ¯=øàƒfòfÓ„ ‚?¬’@¼õÖ[W^y%.Ö¦™ìYåÛb8ØÙÁ³/*Á– HøZ¶åÙ6bø¾*¡D‰f'Å&aü(hö;œù&èÆoôæ›Büñ¤I“Î@vX™â,Ÿ%KŒÏa ;O)-" " …@ [*¦Ìa„=Ú¾š)“xIž!΀¹Ü(Ø2¾ žYÅB°Â¼yóðŽAœ#ïD˜òL‡oft¼&ÄLð$*/G0â e¡O\ŪU«ªW¯n-àÁ òé§Ÿ²kC&“=31⃺¶Œ7átÆpÖ×2Ñ!lñ›^8 ^ƒ6çšk®aPlÇ8£aˆ%D§Ë·ß~ËÆŠ-ïL ¹ˆaê®»î"ÿôéÓγ6M„ {+ìæ˜kálÅ–QBD@D@.$˜=tŽçJX[+@š©}#F-Z?žv%hˆ:¶<ˆ$%’0I ó}ì/¼ðßÊÅ„黹øÂ ÂE–ï¾ûnÔÃÓO?m3Y÷3g»A£07ßÿýìVàƒÁÀdlw…l]›@•-[Öš„×2"ƒm  €ðï~ŠË‚9¤DtŽ7ާEÐF¶ ñ|Ù q-7Ýt116ß™ Lû&´È£=vÛÈY†4gi‚¨‘ºuë%d6¡\Åt(" " Œ@ çƒÞVñ@„ù{é4ÑÌšéÓ§7‘^k¾9¬¿q'à‡ð=k2ùÂöøÿxîv+è*[h…[n¹…@K<"¶]ü<5J1ôŠ$ŒÇ‚àM39sætIkÓ7n@8)¡±Ø'Â#gŒouRƒÈß³ÎL.a4¾Û.ÎbJ‹€ˆ€ˆ@¬ºËÔL fT`&ñ¸x8¼}²s$ÎïÙàœHËôàZq8Ëoä.T²#sæÌN;Ì÷<– aÔuÑ l^8„I{Õ‰Ñ[h§ ‰dÊÕíHÅÈÃå°¦S" " "g #8âÜüŪ˜7o^ž+qµŽ/+seêPD@D@D þ’ààë4bý%ÜøÓ‘!<G—VM~ŒG‚ “X $ÁÁ¨ðpÄ:6•H"¢?éD:ªnˆ€ˆ€ˆ€$_É÷Ú©ç" " "lHp$›K¥ŽŠ€ˆ€ˆ@ò% Á‘|¯z." " Ɇ@² Mp¢<ö’à6ePD@D@DÀ—€<¾X”)" " "büœé¶oßîû»ê Ù/Ù¸„„ÝRá×V?üðéS§"5øÉ~ä_ôà0 ¢8{öì•W†W쿺$" " —°3? Ê/ÇòÃô<ò?·ÆÏ®ò;òIG§NöíÛ‡6J‚}S—D@D@Dà²%JpðÛª³fÍâgQŸzê)~JXÿ~jœ5jÔºuëøaú5j4oÞÜüä)s?¿¼Zºté÷ߟ_C}þùçþùgÒ¹råzî¹çx§z˜2ˆ›áÇoܸ1wîÜ”/Y²¤©ÈO¡ÞqÇãÆ£]ò‹-úÑGQ ïK‹-:wî\ªT)z…øX»v-eèX­Zµ/^üî»ï¶iÓ¦nݺ¦ÿzHl¡b8¶lÙBô¿ênÔ†³OlµtëÖmýúõíÚµ«R¥Ê”)SÆŒc ìÞ½{ùòå3fÌ`âÇÒ«W/TK±bŘþùøeNž<‰ýÇwïÞÖûô郞 .Ʊ3a„²eËnذvɬT©*„}EpäÉ“‡œ‘#GqÒ·o_†É9vìØŽ;Ž?n: w @ ”‡ÃüŽIš4i¼BRìß¿¿^½zuêÔ©]»öüùóQíÛ·'΃ÂW]uÕÀS¦L¹`ÁÞ ÄL¿hÑ"œÖTpìiTÕ6lغuëvœâƒ]‚H¦M›†d6l¡¯!¨˜ˆ€ˆ€ˆ@åá@dÜ{ï½´Ú³gÏU«V±‡BÆÐ¡C °(W®N‹%K–çÁ¾ ‰Ê•+ã‡H¨.–/_>S¦L< 3oÞ<Ô £`¼páÂlýôÓO—Ð=¢FØÄiÔ¨OÖ°ÛBE,´mÛöûï¿0¢S" " "  K ”‡ƒ&[¶lÉœÍ]»våÉ·|Ax=Œ‚à *°‹‘€]¤Q¢M‡ Ò¯_?ÌÒÜ /¼7oÞHMÔ¯_ÿ×_}æïWµjÕ&NœHßèX‘"Eˆ$¥ÖÑ£G‰`å=’å‹€ˆ€ˆ€$8‡ 0Škᡇ2A£c·ï^¸Â þøãTHú6\½:rä-áÊ÷=¤Ã<®bzˆ«ãÔ©SWIý–Š ˆE@D@D V|ðS'øV4nJŸçZ‡õpLáæû3¼™à½™ ˜ãU Æb ”x2( :%" " "` „Šá°¥•8ˆîáÀ[»ª"" " " –@ÁÁÆŒ-ª„ˆ€ˆ€ˆ€Ä@ÁaÃEãf]µD@D@D@DŠáÐÇ@D@D@D Ñ Hp$:b5 " " " Á¡Ï€ˆ€ˆ€ˆ@¢àHtÄj@D@D@D JШßæ<Œ”îÒªI¤Sʸ< Ä 8Ôñ‰G‚1 û½àñ?»nݺ3gΔ)S&¤)~ÿ…ïb7Ï÷®Y³&UªT%K– Y÷‹÷Î;ÇïÒ-[¶,Mš4÷ß?¿âkÇËÏÊð3{üŽÝ”šĶ¥’>í•Áÿ¼LëÔ©Ó¦M›ß¥K—ð?4ok9üJmŸ>}œ9Áé¿L™×^{©.Ïž={Ö¶ÿîñ[¸/¿ü²ùÑ~AÆið‹/¾˜={¶mK ¸bópdH›êBvη-~6öüùó¾§¢fŽ=úŠ+bÓXQmƧ¿¬Ëááƒ1Fâ߽ŋc …wÕUW‘ˆ¿ÁøŒNuE@D@DÀˆMp=ù¿å¸5ç›#̵k×®ÅÕß¼yóZµjajÛ¶mÇ߸qcîܹ™½Ûx8þüóOÞ)L~4îŽ;î7nF8,Z´(ù6lxã7˜ËkÔ¨ÁþË•Wþg˜½{÷¦ü+¯¼âì³1R¥J•I“&áh×®ÝÍ7ßl“ž0aÙ¤5j}¦!ÌÒav+l1ouߘ¶ŒÍªU«2LÄS‹-:wî\ªT)g÷|«û³c?~üÒ¥K9|òÉ'o¹å––-[: Úb$|; (-" "  K ¶åþ±“gƒÿÅÔ¹‘#Gnß¾½oß¾¬ÈóäÉCÝ“'OvëÖíðáÃÝ»wgîgëÄëÌØ»wïîÝ»MC$Ð+‚²eË"2¦LùOXë€8õøãSìСC¦0ïdRÝš™O°ñrÓM78pÀüÉ“'—+WmAÇÖ¯_A[ÐИ1cªGˆÓfÅŠQ?éÒ¥Cp˜áÛîEªî%æ æšk®!ƒÕ«W'a :‹E2î,£´ˆ€ˆ€$,Ø<ÇN%˜‡ƒ@΃â« °ñöÛo7;Ë—/'³^½zÅ‹¯T©Òûï¿¿uëÖ‚ Œ]Ò¿ÿ¬Y³²›€æ $¢<þ’ p¸råJÚ °À)6 Ð(iÓ¦%îaþüùTÏŸ??ù¸FÐüØý¢E‹öïßOÇI©]»6e(íÛ·7ÝöV§Û‘bmbµA˜'BÁÕ=_ ðsV,R¤HæÌ™Éñtó5 ÙY]iˆØ<§ÏžþçíAÊ”)™Åm>1’äpˆP`!C† Ìô:tØ´i™l‚ðŽS¡iÓ¦S§NM:5Þ[×7‘#GÔ§˜õ°X½z5‡… ö-ï›™)S&Ô§®½öZÞ·lÙbŠeË– µAzÏž=¼*TˆwzÎôÌN Ó¿)æ­0kÓÔõ}÷­îKÌ·zp¦¯ñà*:+" " ñ$›‡ãÌÙ˜£5¯¾újfë'NAÀÒÿúë¯7fo¢téÒÓ¦MCaàH1bêS 6ŒÏ“,ÌèÁ!Á;;2È„‹i1êûÎ;)C8…«¤Ñ48cL>û2ø6Œ;ÁYÒV7Ò'Ì@|½/‘8x‰9[™Žd¶xœßbmÒ“=zÐ[\/t¸B… ìÙ³Þê!R¿~ý_ýõ™¿_wÝu—5è[‡Š—˜­>ákÜ 9¼A•¨R8â.ÍW›×­wop™™_~æûÕæLùìGð,†ëk0˜õ‘#L.³GŽa^gúwåsˆGb‰÷¬Ía‡¶x–ÕæDJ4iÒ„ž:ÁÙÀ¤îê¡«Öü3Æú68\=` Ö2íò¸ ãµ96á­‰˜­>á5¾®JŠ€ˆ€ˆ@Hè‡>ϵŽÍÞiÝUŒÙÔw ÍÌ휼m-¯aCá©§ž"Ÿi²fÍš¶d¤!#‘NEÊ7ñ¡‘Κ|”A¤¾Õ½ñV÷­hŠy«G"æ55Çkü:ôÎ;÷ìÙC·¼2E@’è‚£I“&=ôPðÀ^{íµaÆÙ2Ü¡lÚuÊæÛÄ_|1{öl{h§OŸæÔ AZâ‰'î¹çžÆÛ³±&œ]Š©n¤Š`¹Ãñzûí·ÄlLF’]áÏ?ÿœYät»Q£F .¼ 9›xá… øÌoܸÑTèí‹/¾xûí·Ÿ9sÆÙP@:À”o­zõêU«VíäÉ“öì»ï¾[¾|ùü‘œS§N 4¨~ýúýû÷üñÇ[¶l‰ô7%ï¾ûnß?[sÖ·¾™¶]ûÙ`iñÆoÔ­[—[GÏž=ï¼óΡC‡Úb&þ¸¹çÄó¶saz«VD ¹H˜ ÑÑ£GóóñfÌ:uÚ·o߇~h§b‚2bĈ™3gòÿÈ#d̘‘5ÖæÍ›c²` »ºdó£&‚+&ÃÑÉ!CTk¶@°Y[L‰˜ J™Ò˜¨¨5~üø«®º*¦êñ/üÒK/¥L™2v"õöÏ?ÿ\ºtiŠ)-ZtÛm·E²ÿ#Îj×®mì##R§NmÒƒÞ±cÈtéґà]»v¦M›6RgL¾Qú6pàÀ­[·âÊœ93Öðp„ FsöÇÙ¨3?8íªÕ¥K—:uêWñžuñPŽ\Îþ£B"`¦dͱxñb–;O>ùä† LÅÞ½{ÇG}ĺí?þhÑ¢ÅÏ?ÿÌY{Š4+•Ö­[ßwß}¯¼òÊ–-[e^°`AÖ¦ gYùÝ{ï½Íš5;v¬]ÿùvÏÛ%´KçΑ2mÚ´1;A „s{Å>w7òW¬Xá­èê0½Êûßä¬ïq ÷èу¹ MxÍM›6}ýõ×é¡]_²’~ë­·\ý±‡´Ø¡C‡[o½•çÌ™cò;vìHº}ûöÝ»w'Sdã‚roµÅ¬šxøá‡¹ç²ÐdcË™?>œ1Þ­[·ãÇ›|ßÂtã™gž¡ &3»kÆú•chSá·jÕªfÍš]»vµm7H„1>fÌ>oðçÓuîÜ9æþÕ«WƒÝ®Â¹¬ ‡ŠosÀùæ›oè@­ZµÞ|óÍC‡ íbu3µ‚qÑO®ÈôéÓMÏ1È,î©5ât*˜Þ:‡lÒ\ú*Uªp ¾üòK{ÖE5žÇ,”½±ÿ믿fË–Íhµýû÷öÙgüµAò™·c4U|GjFäÛ7jù^Pcµ .O>`FmÉJ†.‘ˆô©vqv5ê½ÜØyðÁí~wôœ«–éŒóÝ·ÏÁ×"R‡íŸ!ŸOt•i娱cü™û~þÝPZ’5ØÇîÝ»×®];a„²eË2IÛ¿ò÷îÝ ˆJ•*1õr‡âÆš'Orì)ÒÜ­}ôQîÂß}÷½•ûâCŽ0ÉÝtÓM,ï\Øjaª[¿~=‹-nÇô›…)ãÛ=W—¸ÑSýðáÃtã}úôa U´hÑë®»ŽÛ.Z k,àhÚUÑÕ ™Øvýý2c'Ç;@zË4öÃ?àF+VÌe6x8DÀLž<¹\¹rÅ‹g­ùõ×_Ó »éøŸ±ãí9pCNåÌ™ó“O>iÛ¶-ÚVäÓS¦R$g9ìׯ_°ƒðZ¹rå‘#G\Öòåˇ#Ë´`Á{wÆÓjÆ ©þË/¿Ø‰Ê[ª4Äm”;õÔ©S™ÕŒýáÇ3”ÄÄsÐ ò…i -‚šquƒÃ0Æqƒ!O.ãÆã*ÐO¬•*UÊÎŽ(.qªT©|›£¼qã0àŸÿü' ƒ¼óa0{jŒ—kÇ\Èôï‹‹~lÄçÊôƒ4ä©Ó¬Œ3½õœÎ³{É’%h x©ÆsàØDc-[¶Ì|f̘a—õfIÀÏvŒ¹›6m²9$|GjFäÛ7ªx/¨5ˆoƒtÉ’%mŽI|ª]œ]z/wîܹïºë®—_~™OãEWU­ZÕU‹F«^,Ÿ8ôö9øZÀ*êŸaéÒ¥?ýôS3@>ŸtÌj;“©w¸ÄÄ&8<“4Ã,AÖÃa¡pOço†Û:Ãì8Ø|“`Æ%_½L¥®³ÎCãDM“&3Ó¤—/_Î=¢FÜñ²°ÛÂ]ƒ?~sÖÛ=W—¨~ðàAÖÓÜI™³1eîq¬hYØ1ë0©ÓOì¸*z{B'ñôðboÎzˆ´BŽ0Ý2Òg&—Ùàá\y問ޏs¡W ÁÜOC¬råÊ…æóv‰©ÆaæîÝv}üØcáoÈš5+:€Y“.AI±P¡BŒ×eõý5×\ƒ‘Â… Éb à4†èp81:“é-lºC ã™2eºúê«MI"rpBÐ+ôeXÒñI¨X±"·õ믿Ç’«†1ΧVll1:kácÐLÕ_}õaÍ5oÞ8ML‘FËÞ|óÍLÃÈDáªU« —>}z2}qÙFmÂ5ÒXà)¤éÊ•+3-ñ÷‡Ë^ªñ8é‰Ôãˆ?âÏ 7È®+ª"Ôæûö³Þ j«Ð(†´ksL"àSíâìl4ÒåÆUÃç+ctÖ2-òWCü /Îâísðµè°ý3ÄÏÇ6±‘ÝhYâÕ\£Ö¡\bbŽáÈ‘#‡¹§s_°K´0P¸ÆZŠ ˜4“P@-èœe¶ NÍU G%9ÜôyçN|aÆBCÐ1r¢vŸ-Åp|ðÁ$Ø®67ÐìÙ³³îaÙ]¡B¦XNE}1›$–Ôö é-KíHÖ‚‡ƒ3Ùè6œ.Lndܛؠ‰d¼Ì»Æ½D–¤¦ ÒŒÑÔâŠAVT‘Œ¬aúaÈŠ–™Ø–´*å„/Úä{ ÙEÞ 7Ü`+šÄµ×^kfRaã·~“ÉÌê*Ïax㮺ÐC–Í›7kúûï¿#’¾ýöÛHÍY¥Â‡Ê0§ÿÆ ^=>'ˆ<—ýàC×Hc5‚{ƒëh>`0ç¢3MF¢êêIL§.ÊŒí>EŠARk4ŠÖtúÐ@eÊ”q5ç©ë¬÷Ð{AmþðQ øð\AQŸê€Ö#}º¸²8ÿÎh_n ¶ug‚}Uëì!ßÛçàkÐaûgÈš?jÜ„¬CØú¹å–[œPZ.=1 Ž0|…“%á &¨ g5Û¦Ð,XÍ"Ïþ}šòfbÀáiùÃæöaw|#Ù´]2º„MßάeYä1¯°ôgÍaoC¶¢³°I£3œs¶ïÍÔåuY³á‡Ã¬O¬ÉpØpo¯0Èýš•¢iš€ïLÉN–þF'yŸxDÖÛÁõBàûñ¶B–o¼ñF¾…YAb™³@÷­n2¹ç¢ˆç0×Å[2&ã–ªµÃ"’¥*jƒ*Ÿ“¨Íي΄A 1<ä{[qŽ”ŽÉ±&ÿú׿5`åAf>®;îýHT½]ŠiàvÊø‹cæ³ýçoÖýVp MôÊ– “põÍ÷‚Z;üÝñ78wî\"´l&‰0ŸjgyÓh¤ËÍ'“`vFåŽd?{®®Zƒ¾}¾!;Ì"gäÈ‘´K¬[l£JˆÀ¥G æ-•¨p0Û±ëÙY˜µ2‡,¬ ¼G.póbýä,àL#2̇io6„†±ñO[Ü÷ÙÕf™ ˜ungnRÎê®´³K<ò‡s…U÷Ä vX[PžëBb3ùã2d·$2]6½‡¾´½eÉêûµË¬-u8ôœÕ'+NîMãe«ˆe"xÂn-²•ãê-wC4ƒ…*ñ}\/³šÿý÷M]…vÐ^PâbY 2,ãÂ[`âH| ãYÁWÿÞ{ï!v¡ŒµàL˜bD™ƒ % qÄŸ ;pÚG¥1OüÈ~ ù‘šsVñ¦™ùl°ÝŽ6"ê…é¦˜í§·–+'Àˆ-i­á:B&²çE !/"Ÿ¸ú(§D8N>êü¡U¯^Ýv>FÍ_™üE  ôÄ–‰šð^ßO‹µÃÊáþûï5j”ùK!ŸòÜ1Â|ª­Ûh¤Ë g´!5ìur‡1WÓÖ²vl·ÏÁ×"d‡ùÛä¯o+¡T¶9%DàR%ð‚ƒ07Ý ¬eŠ“÷2ÖL<ìJ"ŽD¤ÂYÀ•f3…­t"% ºäinv—5,°L ûsu‰Å4][Å®ÖÍ¡«¢o›i€ánn8ô5f8Ï=÷ô̽Ҷh|¡½óÇÛˆkáp[´|t A€¤Àçá*`Ç‚?ÃlZ;€^Äc®£­â-lNñ£$îz[Ò7ÁðcD\eBÇÁÆGÔý5Œ7çjݢϘïùÈ¡p2±+ç*ÆɤÅÄìÊwZ#ÎÌ8¤]Tuàìï°}Æ%øøãy4 ýŠ44.LÏ}ûé‚Zƒ Æõˆw}ÌB~ª]†¼Ü®Z¶3&©ÏÁ×"j‡yhŽUÒÊÕœE ¹è>p,SSI@‡Íôe¨|ÊxËØÛs¡÷¬7Mà A0ÅBZ°6]]²Áq¶@¤„«b¤b&?Ò½F\9Q‡Ã— ¸`·³oì8]i–³°eoG w¯Ú ¼‹k G&z•b¤Â4ájÚ÷0xø!#k\]õm‹Ìàæ|kECfÝá‰v÷|ëÚÌ#¶L˜„‹j¢œkmäð !!›øö-ÒµcG(³%gm"øSm‹¹ y¹]µ¬5“ˆÔçàkÜaü+lYÇž«EŠÀ%F ±Ç%†)) ‡=TBÀ/1u’°?aqöüóϳÀ Y—Õ˜y>(dùK²Q´l'9‡Æ·–ÄŸ„W±ÎêÉ(Íné³Ï>›Œ:œô»Ê®î%ÿ±IúWA=¼0$8. çhÅûˆ©×(N­ð¿lª¯Úr賫¼¦"æ|³:â©ËûÄÒuÿ~ÐZ/ˆ•À´y?ÄZEåE 9àHŽWÍ¿Ï]Z5a›ÆÆá_N¹" " "pÁ Hp\pä‰Ù`pØNb¶,Û" " "D á‹ jMçD@D@D@.K—åe× E@D@DàÂะ¼Õšˆ€ˆ€\–$8.ËË®A‹€ˆ€ˆÀ…%  Ñˆ¼c}¾4¢!K—ÏH†œG%=bDGçD@D@.{<É72„yFR[*—ý‡ED@D@D ®ÂïHpÄ•±ê‰€ˆ€ˆ€„&pÇš5kÖ­[çí!?[Ϫ{ó/“œ‰'òÃÙñ¬5bñ4è­~üøñ-[¶œ>}Ú{Ê×¥–€å½-*GD@D ¹ˆÃѤI~Ü™ñðC—üt¿\æG=ÆÏ/ñûŠcÆŒq•™1c?CÿÐC¹òÃòë×]wµÙ¥K~KzìØ±ÔµýOŸ>==oÖ¬Y±bÅL>?y%?_N‹Î©·9Ÿþ9C(X°`˜ñF*cØD¤’qÈç§Õûöí»aÃ~FnãÆ=zô(_¾=zôW\PÏ ?púÜsÏ­Zµ EròäÉÄÔÿ'žx¢Q£FuëÖ©–·0“4ŠÍ©6¼9ÞZ>'Òxßyç#GŽLž<Ù\>Ô¡éJîÉ'Ÿ\°`ÁêÕÿçwݪü…' E@D@œ@¨‰?UªT `Ò%õ—_~9þ|§Nzöì9kÖ¬¦M›nÞ¼yçÎ/¾ø"‹uüøΜ9CGÇ×¢E‹mÛ¶™NO›6u0i´ ¿Èl2Y.·mÛ¶aÆC‡5µL>µ:wî|Ï=÷´iÓÆî¿¸5%üÓ4­05²SÅ–A£üüóÏtï¾ûî;wîÜž={žyæ™Ûn»­víÚŒˆb;vœ?>}»õÖ[ùõvvL]d ¿WníX¼xñ-·ÜœÃYšèСÖ7nãðñÇçðСC&'>Ì|ɬ֧O$§œ"Lá0ïÌÇû÷ï§·ÇŽC+„©bË<òÈ#ùóçoÕªú‰Î ƒ0Âd?uêÔjÕªQl×®]8~P3ýúõCÍœ9ÓÔå,¬K–,©Zµjp]¥ \Jˆ¤Ø+¯¼X†ïm7_¾|ýû÷'ð×ÂO?ýä4kÒÇçê •FD‡øZ&“MôÍìÙ³[¶lIEçxS¦LiGÁ¶î .š3bÄêzµ9‰]Þ6¤„ˆ€ˆ@² jK…•1ë{VÌÙ³ggAoFŽ |‹-b:¯W¯«m¦"–ûDcêQ¡B…L™2qˆŸƒ½\ Õ«WwB9pàžŒZµj5hЀ|¶l̶|ùòƒb°xñâ•*Uzÿý÷·nÝj‚l£N;QÓ¿þú+Ó$Åî¾ûn¼QË; °|§Ñ 2w‚žÀ%ƒ¼À_BFgJ²Q³fMÒwÜqÇwß}+Òh/sÖ¼S‚„B%ØLo§è*Mà ,d>þøã/¿ü’n{Ûµ[‹¹ñÆ]ÚÃÄ.oRBD@D Yåá`fÅ{Á ~üøñLof`Ù²ecR$áÝÌÁÌ^(6GP ÌÓLÃ茵k×Î;·bÅŠLÛN(fËß´§˜ÏHã`¿GBêÔ©™ªÍYÛ¨-l¬Å Q´™øcȱ‡8üq“`Ýcœ%öTL :†wÇ3K8­±CÔg¤'M¾ýö[;y›ÂÞòq!@ÉÌý†IŽo»¸ŽØÆbgÓ¦M¾Î»Í *’eò‰Åõ‚4Y¶l‡‘^F]á‹Ê‘#êW N‘H…ÉOìòM딈€ˆ@$Jp°qçwâŸO›6­w ,ýÉdgÁœb‚dVΜ93‡·ß~;ïìŰ2fõo ØwÔi¼#¼£¬b`J#‡MНþû*[¶¬­å›¸úê«Ñ=ø`8Ëì‹GgŒ-ɪ¹CüK||6?|ÂÌè´B?1©"›H‹þÀ|Á)B˜E‰%\eî¿ÿ~TȤI“˜ÅÍ)<1+þûb»ÄUÞ2†Æ!þ¶'Þ{ï=[B¦ŒÙ  ƒÓ‚= “IüŠ-@ßpç8e“7ÇÔbú'€ÃþüÎ;÷ìÙC"yŽ@½¸Ü Dá8}úô‡~8uêTó;òÌyü¸(‡…?›n~žÖ_{í5~=u̘1ñìI“&Mþøãkäþûïâ‰'ìaÔ„³KQ ÇZæ£Gž9sfÁ‚!¿mÛ¶;ï¼óé§ŸŽÕNüË7jÔ¨S§NÕ«Woª^½z§N2¿œ:uê‹õ™ ßa•H<ÑLj#˜ðî¹çžGy„ß‹gÎÛ¼ysâu(À2Þ¾}ûP?¦ 3ñW„õИå/o¼ñ†)“!C†àÂγ®.9O%HzàÀ[·n2eŠùy4G˜Àœi#/tFݺuI?ÞH‡˜ŒwéÒ¥N:1Uqµk]•Hš¢<ù³fÍÊŸ?ÿSO=•"E ÆÀR›— gGžFúôékԨѼyóT©RqŠi8K–,wÜqǸqã8ÅaÑ¢Eò1Ç߸qcîܹ)\²dI ³ƒ€¤øùçŸi·J•*yóæ¥3n‹-:wî\ªT©Þ½{ÓÊ+¯¼BáX{Bç+eÊ”Øwæ :”q±‹T¦L™G}´@œÚ¥ànÜ|óÍ&L¸þúëH¯^½®½öZl¾ýöÛçÎkÛ¶­³u“F]}ñÅ04jƒLV¶lÙHГ¾}ûþôÓO¶iÓÔdvìØ±qãÆ\¯ï¿ÿžiJ‘2é'Ø´iSÅŠI¤K—ÎØ0`Uø°ÉØ¿cÇŽ±cÇ¢x^zé%g… Â7M׋Á~óÍ7¿ÿþ{µjÕºwïn>Q hwÿþý¾#­_¿þ§Ÿ~ŠRäÚ7m;v ‘13"Wë:¸ˆ¢x¶lÙBôÆM7Ýdæð†ñ IDATgGÙjéÖ­ÛúõëÛµk‡ `N²»»wï^»v-“kÙ²e7lØÀ)SÑ7ÿäÉ“Ø9|ø°™úô郪Àx×®]øáv:tèP¬X±J•*!/˜HyòäÁ ÖöîÝK"=q„4Sþ®¿_Æ 9Lcè ºôÝwߟJÔ.wƒ‰|òäÉåÊ•+^¼8³ø×_M+GýüóÏš«?æß #¿œ¸"ˆ‰œ9s~òÉ'($WŒ ÿþ4Zš6mÚo¿ý)“b·ÞzëôéÓÙ²™?>Å`ŽM&l4{äB³U«VÌßÐÀ8…cjÚ´Žnãe6­òåËGÓð\°`j)j»¬H#}óÍ7QWœ-]º4ÊS¼fÏžf•Ú04ô." IŠ@ÁaøiÒ¤ñvzùòå¬>ql°˜~òÉ'Ùm™1có–)‰@aj1®4‡­îÍÇÎÁƒkÖ¬ÉLÌÔ‹M&Z¦yæ~¦=&<š àºë®c"ÁƒRµjUÖµÖ ‰¸õÄia>þ÷ë™gž1ù¨—ÉV 3j—‚»Û`ذaLH(x2ãbsΜ9¹råB–™F]ïôŠ] ã4ržúõ×_AŠð‚C­ZµP$_~ù¥)ðÐCÝwß}ä (æ›yüøqF„o€o`ÅŠ36[·n]¨P¡L™2]}õÕЦÏl0(c[µi:6èï×?þˆvg®¹æº]¸pa#’‚Û hî±Ç»í¶Ûè[íÚµÙã3ê ‡Pƒ lo•H:¢l©°Œ¦¯ÌI-[¶tuO89ÌO¼##˜›™Æ9rä ‡w3Q1e²,¶u½ùlp–Õÿ|@‚èB¼Æ8û&¶b@"n=qd D ÃRžwdӻᄏlÙ2Di&`2£v)¸ì}”6mZBfS&H‚$œ=q¦8À â +¡Wä7åqÿ˜¦I›mN™âÊ\½z5®lH™¶PT$¸ ¸n¸á“é=Ö¦ÙšqÆp °píà)a7¹µÝ€æ²gÏn:‰ß ž„¡JÙ*ºå–["u^ù" " ‘@Áž`™KÌ;úöoºkôžvsÈÜÀŒe£ ÂÉ”† ²¼¶µ.¤®sÊ©]láø÷+ÞD |ôÑG&d’°Gön8eäB@—Âwƒ¹–&ØÀÇ`Â/lÓÎù5wîÜ{ï½×™OC¨ü¦KDÀà&qN3C#8lț¸4VŒŽ guðø4ÀêÙ³'`‘8íÛ·ÓnÈæîºë®‘#GÒUF2:‡ ´ˆ€ˆ@R eK‘af;¦ŠU«V±ß±páBB¼ V€€Ð%K–çÁôɹråÊL±Žª|ùò¸X¡Î›7Õ‚AÖ©Ö8!h"B0‹žY–½¢%œ­ØÂñ쉵Éœ4®ˆ¥K—¢¨p3ðx§m%R—l¨Ý`Èì@±§À@ õÆ3º„åšáÓ%PÐ%öžp~°ÅËögÙu²šÀ#† 6 ŠÂGŽáÝd¾÷Þ{h "ZhˆLDcqŒOÓØäBÓs¶?¸ÐPÚnÈæ> ûŒL´& .Š%Ÿ¦ Ðaã\nBO&Mš„ä n7dsÄÄà4Â!ÄËvU $E Å¡C‡ÂtˆÅ4> ÞñÞ£6œUX`°RwH³ÔƲ+^•+žç7@ƒ:qõÁ˜M¨žkþù§‰ÞÀ,ÒÇFEDíR˜n<÷Üsùå—}ðÕôÎoCÕáõAИþØ*l<‚9ÛæÄ” Ÿ€uEóy öÑŒ)6_xtÅ»Sç¦-U"uœfƒÛÚ:!yÑd1Paxè>p,3c€3©E‰á°õ™à# 0çÙbñIàêðVg–uezsl„ê‰1hgw—Yo\9®ò¶{6Áþ‘›xMlNpIÁ&ˆ·ŒùNo~Èß~šHkåá”6?ÎM[ª.³Áí7G ;MÆUc{¨„ˆ€ˆ@’"}K%Iu÷Òè ; |/{Ègp.!'ö(؉ó¬‰Ý®ì‹€ˆ€„$ÖÃÒœŠ…!õéSŒàž ÿ›¿a½äËL›÷Ã%?F PD@’/ ޤxíº´jÂ63Œ#)öR}Ð$8B£º°ƒp.l_Ôšˆ€ˆ€Ä—€b8âKPõE@D@D@¢àˆŠHD@D@D@âK@‚#¾U_D@D@D * ލˆT@D@D@D ¾4ú‚z5¾%ÕHP<­– ödL.2 Žÿ]=†ú?J‰€\T<§Æ³ñzZí¢^5žÀ´¥’À@eND@âO@>×ø3”…¤F@‚#©]õGD@D@.A—àEÕD@D@D ©P GR»"ꈀ$9Î-žË9šUâóѼh‚cÍš5©R¥*Y²d|zOÝ„²ãÛ)S¦”(Q¢téÒ¾g•)" ’À_ýµk×®L¿.X»fŠmùhSÛâ qÜdÇ…ä0qâÄôéÓ7jÔÈ2¿X‰„íItÁѤI“?þøÃŒ6kÖ¬… züñÇ‹-‡ñŸ={öÊ+ÿÓ"¿Ï޵1cÆ\D;Q›ž={6¾‚ƒV§NªW¯îê¨:Dæþýûùüñ"ݬY³xÀU2ø0’ýàZ÷Þ{ï|Ю]»éCp[:+"Là½÷Þûâ‹/>|þüù믿þ7Þ(ï¼Ù‹zŠY¶ã¸Š™œAo¿ 9^}õÕE‹=úè£<òªÇÚ±XËÓÕ8Tq Ð{Ωƒ^ÞVlšù1)Ž„íItÁžÎâÃ}äÈ‘M›6½ýöÛ:t1bD¬šƒ uß¾}~ø¡a:zôè+®ˆKIBÙ±—6)$ÆÕUWy{òÏþÓd>ôÐC|ø7nì-&'’ý€º7nÌ›7/½Šžxâ :_·nÝ€ætJD €ÀÎ;'MšT§Nn¿ܳgO@a×M2 d˜SéÓþ{š¨YµŠ-¼`ñ2›öMüùçŸß~ûmš4iX³=üðÃ)R¤0ÅbíX¬åi%U|‡àÍ4¼ù9fê4pK”¼LN…šòS¦LÉÜÃæBýúõ[·n¾ÆÍbmÛ¶­sçÎ÷ÜsO›6mÖ­[g2Iôèуõ1kñ¹sç’ùÑG1á)iÑ¢ÅÏ?ÿLNïÞ½‡ fÊóéÙ³çâÅ‹YÐ?ùä“6l0ùC‡¥¹ûî»ï•W^Ù²eKT;üM¾øâ‹¦Ý±cÇž9s&ؾ9ëzǼí¶ÛèÒÉ“'ÍY†ÃöŠI;v¬iÓ¦ÇïØ±ãÂ… »wï^»víÁƒ›³2þÀ¸/àÂÁÿi2)ùÍ7ßtíÚµV­Zo¾ù&ƒöíÛ3[ùõÒK/­^½šÂÜGžyæZÇæ´iÓLußwJrë¹õÖ[Q!sæÌ± ÍŸ?žäwëÖNšüû á±Ç£cwvÏŒ7Ò»³¤3}êÔ)”/v—L¾wÌ\,Ø~øá‡;3‹ËìcJrɼs¢Ó¸—g½öÉÑòå˹ХJ•Ú¼ys¯^½è 1í²>46 Æ€ƒï‡ÍÙŸ0éP[*NC(5ÂÌr–1àÜCÆ/^œÓûï¿)P ™¸Ô˜än¿ýv³orÝu×1C³À4‡¡W˜½ØµBÓYôiQÏ,ÎGŠt€:â3Ṵ̈Ñ`:àkß9.“æÚ¯Zµ Ñ7ß|3+Æh|HŠ‚ ¢EðĘòìt°p'Íœú믿rÖn.\ÀV«)Ù¼ysü¤á@ICv©ø;g½bÊ`±£h—œœ)9hÐ \vxM>þøã/¿ü’«@-ö/p9àï¡fºÇ!/_û ÏŠÊAS’ˇŽ»9ô}§ÿ\œ78®æŠ+€5—AÆË&C† \\_;ʈJ€?"6²ñ›®\¹’Åè³Ï>˾PðÍÖÙ{¦¬‚Ò¦MËÔÈ=“%,·2gc~jƒ‘ò9…7šYŽìÙ³s+ãöòÔSOÑPÀÝ›…J˜YÃ;#˜®µÄÍû1nÞÆë,æJ³zD ‘ÉMÞ, ½Cà.ÍÚ›ÙU™³:7Rïœh øã¬×¾©ÿ"GX óÎÜÁ Ä·6ƒ? ‘>l¶z˜DÌ‚ƒÙ…E¹™œˆÉ  €ZH"uêÔÌR`âïu3ŸãÏ>ûŒ ¦Þ¨]É‘#‡™3()ÏrÿÝwß]¶lƒtÀìkŒã•"a¦júÀ_Ó!b,“ïµoj¹ÞQ|ŒÂ*{ÕŒDÀaÀœÊ>‚Ýk¸öÚkMž¸1 v7¾þúkVüÄ»…aòítKß̆7„ždÞpà ¶ÝH ˜0…[‰€V5ç<û¦¦ÞVV›_û8¢ð!±óõòË/3FS’…”M›ï;{@|ìFŒU'¾½Õ•#"Œ3â¹ä¦Ê~1“ zß;pL6¹¯¢6¨bneh·à8åãÞ ü±ùœbõÌ]ˆÝ Ò,‹y¡9XréfÖ˜²eËfnª‘ìûæG»³VÀxÅ\inû6ü€S¾C0·n|®ºÁs–/1_ûÆ,“s+i¦îÕLsXpµ $þ¶·îj2ê¡ñ•)S†’f.Çφy™EæªwÞy‡-"ÖëN7QQ›0bìùñ1ÅcoÖî¶¢¯3£ãV1Ř’!›9sf[+L#GE–šÂΆîºë.þpo@!úZÃ…@ä{:è­Xƒj1xõÕWó‰±ß&L¦é§ýTª¾³ ™fÿËfúÚ‡-{Á­Ç*ÇÀCp°ãÈ_/6ÔL]_ƒN’¶?Jˆ€ÄD€I‚û-žcnìØFºcÓõg¶nYÚ¿qW»¬£ÈqM{<„òÎÄ÷Ÿ:ûÏOæ:ËsH&§¼O©àÆÆS‚¢o¼Øãà>lwU¼³f£Î3‚5b 2v§MËQ{ÿùrpV·iß!©æ¶o현—˜¯}W­0‡¾®&u½Ó}ƒ¶L(ÁAô%s&!-AI0·±•€‰òåË£‰X÷Ï›7 ž]:ŠžebÆ]C ’—i ?$$l[Øæ8 8‹ú&” Aó§ÉqöAè"îȱʕ+£ãšðžÂ/‚X&\ƒ¿ÏÏ?ÿa?»5jÔ ÿørˆõV49ì„Ð 6_BŸ#•ôÍÇQÁò‚‡ßp#ñw‹5ßbd2©Ó {Ftm,3tÏÆãJ&w¼ìs9-xíseq~¢ŸPQ”4—†{Þ •æ´àLkì2šëÂög} òbb~Õ•O€ÈkþÞY ”@´ ʃuªï›®›$%¹#q[&2ѸAòüñGbØ.7“Š«W'NŸãßègÙ&ÇU̲AÀ­›Õ ë.^ljsgÆ>÷CoǬ…0³F¤Á1‰„»Ó¸µ÷ÝYÆ•6S'³'/fß!Ø™‹ Á=Ÿ›¹Ëˆï¡/1_û¾Õ}3ƒ? ‘>l¾¦"e†Ì^Ï?ÿ<Îsvqˆf Ô>Ñ„Ÿ°ÒÅÑGl Π‘@Ìz—CžžÀçO”¨i›'\ø@³Ãbž[‰Ô!›Ï—R°?¶%˜H9ø›ÉÙHvЉæÏ‰[ðêW¨Pk-|‚$!’È,æTëwÂIÈ Š„W$kLð ¯ XØaå16Ë©¼+Ÿ‰ÿõ×_§]ƈ|§®ö!ÅQ? 4À“ôàƒÚ]bxþ›GuP$®ˆ¯}¨²ç‡Â{yqAi‚ÛY‘"E¢j5¬±Åˆ¾!l…H_¨ëkÎ0>¶ÿJˆ€ÄDß” z‚»¹;Åž©ï³®›$«R2Ùã ß®Më,Òp!‹;€·K,î?ûtÿNœ>kÿ™¯{ƒêì)¬`¼÷ÆSK ó$«c¶¹0³F¤Á1 Wñ»Ór¬L]3u2{ò"ÆÓwfæâBWÁJž¯0p¶)íKÌ×~$ ÞüàC¤›×N@N óN%œbuËÄlTˆ)ÏZ™…¯™Àœp Pì,î<å›&zŸ§XôƒÃ†JØ¡$TQçKWsæÁ'“IÏY¸þ29ÅS0蘨_†aû̧-Ö=Ó. £&ÊÕIï!A*ðdî7§ð*!³ÐgH]ÃÍ[…—}úÉ•Âói µÊæ‹3ÚÔ׈Í8÷;B¾Ë 9ÜÎØ¨Š Û"pùè>p,Ï[r£³Cæ¦J\<·Ao¼‚÷L-çM’•÷×-…• îj”äoÓÞl‹Î„ó X_©á,œvvÌY2̬aï®®Ái‡´³‰øÝi<þ" >ãÑwj5g»¾i_b‘ìûZ°™á? ¾6k'RÂ̰ѧ´Hõù^aÁ|ï;å{ÿTœv¼i;k2­:ÏØq•tÖ ™vζ ž6wÌ:Þfú&lŸã<¿z2|"“ ï)d™UfÞ³ä¸ì»úÉNË5âkÄfz» R’;7ÓZPBD *î¨8‰}‹yïÀsÞ$Md¨o]WÉHeâ)2œfsæÿ=iøl‚;ËÛ»«÷¶ã4å¬ÿ±;-ÇŸC¤!8ûìl1 íK,’ý;ÎSQ»áûasZH'ŒàhàR:ÅžQ|X_ø`Ìs:ñi ÿj|ª«®ˆ@² @¤EðÊ$YŒ"n¼œÇîKì‘àð…ï“Ip/ŸI)‹˜ð¤ÔõED é`ƒ8év.‘{v9Ýí…*hÔ·Êäáø(bvœAÿ;¡”ˆ€ˆ€ˆ@üHpü‡¡@Ë?žª-" " "àC@‚ãPðpüï@)„# Ž„c)K" " " HpD£l„# Á‘p,eID@D@D  Ž`”-" " "p$8Ž¥,‰€ˆ€ˆ€D ÁŒ²E@D@D@Ž€G±”%$8"€Q¶ˆ€ˆ€ˆ@ÂàH8–²$" " "@ ß4òwFøŽðm)[D@D@Dà2%ƒà€PÇ' æ4üí÷‚ $…³'NLŸ>}£FâÖ™5kÖ¤J•ªdÉ’q«njÅÇÈ©S§öïߟ3gÎÔ©Sǧª+" " Œ@l‚#}ÚØÊ3Œ:uê\wÝucÆŒ1Cêҥ˟þ9vìØxŽðÕW_]´hÑ£>úÈ#Q4ièìÙ³W^ùŸÎñÅY³f³àxíµ×¨nG~ Î>ÄÙÈ›o¾9}útí/^ž¹sçß•‹B 6‘!í¿ç9ï«|ùò?üðƒ7?‘r,ß~ûmš4ifÏžýðçH‘"¸¡N:íÛ·ïÃ? .òìèÑ£¯¸"æØWâf„Ö®]»qãÆW_}5Ã?~ü§Ÿ~Ú¾}û=W1¸XbGOžõv´fÕÊdúžòvæ¬[·ŽYsíÚµlp4oÞ¼V­ZœÝ¶mÛðáÃ7nÜÈÂIÚwçbþüùœ­P¡Â´iÓ¨^¦Lc¶U«VE‹íÚµ+‡O>ù$³rÏž=?úè#¬?¾E‹;w.Uª”)¼xñâqãÆÑ4­P‹Ì;wŽ5Š^‘Y£F ºd È’%ËÍ7ß}ú ¼6ql0 óâi[`ÇŽ7˜ÃÝ»wÿþûï¤+UªÄÔž.]:‡i…LŠ¡Ê–-»aÆ)S¦súôiš^¿~}»víªT©B¦Ý4Á!“'O.W®Z„ý{÷R…46y±­ƒøØ³gOöìÙÉO™2%:ƒ!|÷ÝwÆ­âíƒ5Ü.rÊÕOìó:zôè{ï½W­Z5v¬LŽÞE@D@D )ˆQpœ:{ìÔœ$î®U•±}üÕÒæ_ø¡þõ×_dâßµkWÕªU'cùòådÖ¬Y“è&iÎnݺÕesË–-›7oÆRèï×Â… Oœ8á*ã<$‚µ¯‚VŒW€³¨™þýûךƒš¦9LáxG2fÌ8cÆ +wˆÿ6lþŒ\¹rYãÄlb“×÷ßhÛ¶­q?tèÐL|ùòåC©PÞ·ÆNp»Þ~šZƒ ¢‡Ï?ÿ|Ôí$Û[%D@D@Dà"ˆMpœ>{ž¦»÷ß]“ĤÏç›Lç)çxXîóT…Í!p’™)™ï3dÈ0`ÀfèM›6‘I¤ïøš6m:uêTft¼¶®IÌš5‹è ö>ˆÅ# Íá*õ0GŽ~R쪫®BúÀ?Á;†wú†\8sæ ê‡C^Ù²e³bÅäØw¢(æÌ™S·nÝ ‰Fa¤eË–—°=dŒÛÂÞDp»Þ~b¢%K– Œô”Š—§rD@D@’&ØÇ™³çùgG2~Ú\“cßí)› ‚9Õ8!˜}ñX˜} °sñÎ;ï4kÖ þr˜_yoذáWÿ}±ëaM‘8wîlmP’WÅŠ‰ßtîª h(†Lqªr¢NüFàn1ͱi‚åÌ™3›ÃHï80Øy)V¬šÉ”Y°`¨ž%ÁOã¬èÛ‡8´‹H¢9Æî4®´ˆ€ˆ€$e±ž9÷?µ1öãÙÎÃHƒD10‹óÕȈo¾ùæØ±c%J” 0ž o¼ñFOenf׃LžvÉ”)ÓÌ™3ñ4ÝÉÖIþüùóæÍkv!,”I×déÉ2è6;ØÂøí·ßp°‚4±µ .Às@>i4 ïì¶Ô¯_ß(S‘CTË3ÏHtZj@D@D@D N¢Çp4iÒ„ß‚Ç8¿Ïƶoßþ†nˆS[‰XiÆŒýõ×C=”ˆmÈ´ˆ€ˆ€ˆ@\ „òpäÌ™sìØ±Í›7ß¼yó„ âږꉀˆ€ˆ€\¦¢{8“*Uª¿>úè£_~ùåüùóÇ_·nÝÊ”)óè£r’bä°µ±víÚôéÓ£NjÕªå›9kÖ,ìôíÛ7W®\3gÎüøãŸ{î¹%J,Z´hΜ9¯¾úêÎ;G…5ìÔ¨QStS:uÊ’%ËÍ7ߌèéÝ»÷¹sçÞxã}ûöQæÌ™3W^j,ØÑKD@D@Dàåá OgÏžE(ðÜKáÂ…¯¸âŠ”)S¢3ºwïþÝwß!2L§G޹}ûv”D›6mòäÉ)3þü;vìX¹r%.\Hú‡~ ½dÉ$ÈéÓ§»uë¶~ýúvíÚU©ReÊ”)cÆŒ1¦vïÞ½f͚ɓ'—+W-2`ÀrüqÎ:tÈ”‰ô~âÄ ÔÉ<0uêT[& fÚ¾)!" " —P‚cÏž=÷Ýwß Aƒ²gÏÞ±cGÆß¡C‡ªU«,X0_¾|ˆr¡8xðàþýûwíÚÅ©’%KFÊ,Z´(raÕªU¸%¨Ë~ Nª¯X±¢|ùòË—/ÇN‹:uê<ùä“3f$>ŸŠŽcذa;w&±mÛ¶[n¹¥AƒO?ý4FLHïÿú׿Þÿ}¶„ú÷ïL1Å’`f¤þ+_D@D@’5P‚#S¦Løúõë7~üx<LÿãÆkÙ²åÃ?̬VAŠ)ØòÈ!ŽäȦM›"eâ !ìtõ߯lÙ²Õ®]ûçŸfåøñãlÐ n¨X¨P!SMƒ.AÊpÈ‹ò|Á jóNgþâµqãFSŠÞÚ´M$ÌCQH~B wÞy'iÓ¦eˆ , ÄôéÓ‹/nÍÈ;ï¼Ó¬Y³ 6à‡0ù¾™eË–åɶK*T¨€ø@R–QªT)„Éš5+q“˜ê{÷îE dΜٶb(øBxG:uÊUÀuHÿ±C&öé’9›3]ÝÖ¡ˆ€ˆ€\âhIèƒG|,]ºeÀ!ó=N‚o¾ùæÆolÔ¨ÑÿßÞ}@IQå{ß!ç ’sz€‚€ Q0ë>D0Â…a ÀQ@x‡] ‚HXEÖ9¬°’×倫ˆ H$'•œòûéÝW§^UuOuOÍÐÓóÃinݾuëÖ§º«þuïín"ùòåS™””w¦ò6l¨GªtèÐAqF®\¹”ÖÌešùšÏ¡žuŸhN¨f‰ª€ž²ÿÕ«WO3I—,Y¢!‹9{ö¬†{ìi…5~øáÚµkÛ·ooÕƒ™Žf³ˆ €@|Dp´nÝzÁ‚'NÔl õhŽÅ¸qãôýÓ¦M{óÍ75¶R£Fçž{N@êºpg*_Q‚>orþüy(ŠÔM¢išÀ¡§4b2dÈÕ“˜˜¨ªÔ¢‘·µÖzòÉ'5T3UŸ~úi Ž˜‘wI+G_"¢?kÑ$b0ÓÑB@ˆ„T?ßj'Õ© ¹zVƒ#s1Ÿ\ÕgLÔÛ¡™žöµ<3í<ÓªVÝ$Vo„gu®h D1žÏ*Sßñη…Â!@4 ý]gÃÿx›¹GÓÃag¢ ¥ÕWa5Wñ;DðÌ´V •°WªLÞ¼yC=E> €ÄŽ€¯I£±Ó\Z‚ €™Q úŽÌ²·êçñÿã¹™e§h' €™K ÎŽþ=:i*Ó82׋’Ö"€ÄŸ@œ:`ág²Äße@ˆAæpÄàA¡I €Ä›G¼Qö@ àˆÁƒB“@ˆ7Žx;¢ì €1(ÿ“Fc&…àcÌá}xˆ)} ÔO{8ü(Q&£ø$sF‹³=@ *}T_?áç¡ ©DÌJ € ðëo–ùd àð E1@ˆ^ঠ©ègëõ³;vŒ¾ía×¼víÚÚµkW­Z¥ß’íܹs‰%ÂþÉôÞÁà[Ã5š.»n MCHE õŽN:=þøãú±xS“.áíÛ·?xð`*§öô‚ >ýôÓÔJEÿüW_}õ‡?ü!!!¡@—.]о¢h× d¯^½íöck½èv䨱c|ðÁÿçþ'¶ö‡Ö €D(zÀ¡ Ïœ9óç?ÿ9šorñ+V¨½zõêÚµk¹rånrk¢Ú|ß¾}Ÿ}öÙ¨V­•¢Þõ½ôÒKO>ù¤ÇØÚ%Zƒ ¡€¯!•\¹r-[¶¬M›6-[¶´×ߣGš5k¾öÚkÊÔ…¡T©Rüã•ÖF×øzõê͘1C ƒ Ú²e‹Ò¥K—0`€­J-ZôÁèrò /4oÞ\ùû÷ïŸ0aÂÎ;Ë”)£zêÔ©c*,R¤ˆ L:uذaÕªU³jøñÇßyç­[·êât×]wuïÞ=gΜýë_W®\©2jU‹-žþy«¼*Ý‚?üðõk×Ö…J"Ê©ZµªVÑ•OA‰>ìk­®„.ŸŠxTþ¾ûîST¤JtáñÅkÔ¨Q¸paptÉ(çÆÚÄÙ³gúé§¶mÛfËöï«wïÞzV“+T¨ àFióÝŽTªTéÿ*ø¥‘îRŠg3¬µ*W®¬hCS_Í.ˆÎsO­ö›Ý{¡PC]#òyàTF‘€¡òM=–¶z¶ÜWÃ<ëÔºî8vijBsˆÍ¦yDˆK_‡ö¼U«VêBøì³Ï4¼âBã&ºT«¤®ˆº„k-÷0|¡B…m¨Œé6ß»w¯é/QOÆÌ™3•¯µÔÛa6W¼xqG´¡üC‡éÑŒ°¨~]·+èY²dI³–ûQÅ4d !Å:}ôÑ+¯¼R½zuõ£L™2EóauVZ ³VŒnGì‡:rT›c§<›amÔð³§ž{±aÃÕæ¾¢‡Ê7›¶´=¿cÇÏ:=àØÏ eXDˆ?¿‡ö\7¯ºJ© Á®`>} ° -ŸÑí²êÔø‹¹ùîСƒúÿí[ •Ö@žR_…) pAñéÛµŠò9i~ɼyó¨×dâĉê†ÑTƒž={êcºýû÷·ÂTâù”µ#ögMôãÞ)w3ìk™´QÚÏžzî… } ÑÏ¿þ™1©PùŽ6x6þûï¿W1wž pìˆg…޲ˆ ºTh>fX êºØ³gæg( Qç¿•ï3¡»v­« ß|óªRý7Vï‚f’ªÓÂÌÿÐu±|ùò¡*4S:ô X§hDFwÏšê¾FsÔ«ß AÅóçÏ×è€*¿xñ¢ÕÝ¢©¦ºŽjQñ“¾À#ÔvùöQkÍ5Õ*ã¹Sú^w3¬ULB]/Ÿþùwß}§™¹~öÔs/4uF#brV(¦iª MWS¨|G<j]ψѾ#ž†9ÄŽö°ˆ I|MµöíÑGÕÅÆZÔ]»ÒšØñÈ#˜+·õ”Ÿ„FRþùϾú꫺ š.‚ j†©&KjNb—.]Ôý`MDõ¬Pƒ,C† Q¬£Õ5 ôŽ;îÐp‰gI+óÊ•+úJ.U®/Q¬£JOibŠBuuhº¨:”èÓÖ*©&Ôg ØÅìˆ&¢:Ê{î”g3+JUWb úh$ËÏžzî…âŒ>}ú(Œûúë¯{ì1]þM@*ßÑÏÆ‡Z׳ªÐ¾#ž:6j-îÚµëþûïONNVã•Иõ @Ì%pòäÉ´´X×fM0Ô_Ô•è+Åt9Ô5Ì^ƒ>£qÝšÛ3äU‰"žð}öÕõ¡õaèâgÏÔLRµD9ªM1„>^k6TZ_Œ¦ñ}:FN5šãØûZîòl†}¥U­"0Ó-¡ÅT÷Ô½iR§‹¦înÞ¼YQ‘¦ã(JSU¡ò 0‹ŽÆ‡Y×ÝSƒcGÚ7ª_‹åÇÛì ¤@˜<ú/:cë ¦…æ¬} `ª6³>Ãl&Õ§t5u—q„îŽÏJeì‹ MÜщ‰6T,ÒÚLÍî9­ö-*íÞ)Ïf8ÖrT›jÛÜ{¡N#ÍJQT¤Ñ"}ZØtêh+¡ò 0‹ŽÆ‡Y×ÝSƒcGzn”L@¸HkÀ7Q÷Ìg_HÔ›HãŠú|²¾ E1‡¦ÅØ?>*ßÏæÒ²®Ÿú)ƒ gi= š8’Ö*Òy}õ%h’¬þÛ •ï(湘–u=+tdªwN]pŽL@2¯Gæ=vqÛòþ=:iü…iq{€Ù1È’Yò°ÇüN‡Ÿóͧ €Nÿ÷Ùç“,#€ €Ap¡H € V€€#,O"€ €@A(R €„ àËÓ € „GŠÔ €a8Âòð$ €!@À„"u € €@Xް<<‰ €AðM£A(†®Ãþƒ úÆîÐãç™,¸Ëimm`Lò ¥c!ì¸víÚÚµkW­Z•;wîÎ;ëgëõƒ·uêÔQó¦M›–?þŽ;ZÍöŸ¸é»99YÇQ‹:v*¿cÇEiz©èÈ^¹rźwuÐ#²2íq—Å7nl—TðñÍ7ßx¾H¬ãhâ ñ}z£FtETD¢kÀ<лwoõù‡Úe{3~N¹柽¤=­©šN¡?«çÜÑ’P;¢bRÒ€‚.!»wï:tèâÅ‹ÕT|æ¨Ù·Ò²eKÓ¯«NëÖ­õ”V·¶h•ô³›Va%Â쯞²—´§¶êˆúüùó÷ÜsyÊó%¡FjwÞ~ûíºšê8šÂêÑSݺuÓâÉ“'Mf˜ƒ‘•©Íó¸%f6a4’öœðiÏ#¥hLaÜ¢E‹Ô›¥¼Þ° 6Ô;W‘¥hzó® Em½þõô|ƒ{®¾<‹Y\ÀW‡ÎVŠ94ª¢;H§(>Э’ÓuN=?üpíÚµu:Ó]õ¾}ûÔK¡Ì³gÏêکɦ»^—w¦*ÑU\º «P¡‚NsJëT®ÛÓûî»O×x-j¦7Ås[U«VUóç¹ ­¥KšZ¨ ï½÷Þ%K–èÂüâ‹/†DÐyvüøñêK×ùZíѵPÝ!f+ ¹Ü»lo†Š}‰ýw[½þ‚¹pªiæÌ™¦ˆÕ’/¿ü2ÌŽhpD]îº èéq̘1.\Ð*º÷ulªF… V¦"ÇSöÅTµí…•Žn—Õ•¥©Z]Jž}öYS§û%aòѪ£KSLtPs(ScÚAõŸýö·¿Õâúõë­—J Vf»žÇÅ8oÞ<Ý-¸‰Ôà0Ô֫γò0+ºYÈAŒ€ß€CƒºéÑg&ï¼óN3„lÖ7—í:høÃnªòšR “b]D'Nœ¨gÝ™ºŸ={¶>Ž¡Eôïß_ÝÝ*V©R%=ªwD?ÿú§1{¥CmKOYîM˜K”©MÅÙè’lnñµhfá)HÒ4«{„æ~Úä§Ú ÍÏÐ'`Ÿz¢³½+=söÏ * Ë­æÁX%‰ð;â(œöÅTwÓ¾‰¨wY7ÜŠ_Ÿ|òI½´ôé'}¢Õó%aß–=­ë¢Õ™¡G]uͼæ`­Â«=щ½ÿágÝkgU¢Å —®†y‘X%­D¨íž;wNýyQÇÏž={¬ÞÄjZݵgåªÖý¶µÚCððpè’ß AõÐjjž½"MyS·„†Šuçm&(\Э•zbU^aÄüùóuQÑ*ivg^¼xQOiÈFÓhQ× M>ÐÌGÍBPd ™žŠ Ìͺç¶ì³,=7¡yj¼>ªñu¿ëŽM³áÌeI=:kCdQ?³}¿¬´µú­·Þª´B¢T›aÖ½xÙ»B«æHVKÜ;iU~ÊûÜM{UQï²>¬C y£:4ž/ {Œkߢ‚ZM²ÑõO¯:MjÖ(ž^{*ÁV¦IQ‹MšµØÚ©( CmW3ýþ÷¿×Äau7*î×J]Ÿþùwß}§I~¨=+÷³¢µG$@#àkÒ¨)ªé/¿ü²&jØí ,¨)Šš‰¦ižúž#õêQ IDATÔ4õRS=têÅÇ\sÓ4CM«xfjÒ¢"õhº¨:'1hö»N‹}úôQóõ×_?öØcºØ˜øÀs[öÆxnB]C† Q<¡>MbU÷²†{ÌZê˜QBŸûxä‘GLTd¯Í¤Íê Y4+B÷ßúˆGªÍЊºãÿèóôïâå«Ö?“ª{ýiGN˜q” dÑÏnÚ7”–]Ö!ÖÍô²¦¸_ö ÙÓŠ6Ô;¢8CstonÇU ƒ­L“2RÌŽà¹]Ý|ñÅê5Ôœ<ú裚4ýñÇk-½Ô£k”ó³Ï>ó|÷ÙkVÚ³r?+:êaH°&ö§ÑBý·ê‡°{„®ê®Ð Ë^³g¦.fö†¾aL—v]E4𡋇º²7oÞüꫯ¶jÕJAƒU{[ÖSJxnBùª\Q…‰]¬ò q4T¤?+'TB3ÕcæI˜2á›aÊèó¢V…Q‡V &á¹#Ž2.úÙMûæÙe÷K¾ GZ7Ü R={A2ØÊ4즈iÓþ·«³nLÇ¡Ojwå>Wt,@ ˜¯N,àVðw¿û/4¯q}†S_ìh: v[Ô† €é'`ŽÔïìÓ¯ajÖ'<õ}Š94/ÄÌ! S˜§@@ Æb4àÐ@Œæœê/Æùh €øˆ`Ò¨Ÿê(ƒ €¸8Ü&ä € €@ÀƒR €¸8Ü&ä € €@ÀƒR €¸8Ü&ä € €@ÀƒR €¸8Ü&ä € €@ÀƒR €¸8Ü&ä € €@ÀƒR €¸8Ü&ä € €@ÀƒR €¸bô×bÝ Íœ1És­†õïÑÉJ“ˆTÉHÅ<ËÃèÉB&Ä‚G”GÁœÙŸïú´µþ˜äJvX >Hú„ _,:Æ7n9r$GŽ%J”°×?mÚ´üùówìØÑž©ôÖ­[¯\¹R¿~}G>‹ €@ª 'Ož _¨S§N§OŸnÛ¶í AƒLÉ9sæ¼÷Þ{Õ«WŸ4iRøu3øÙ.]º>|ؽÑ÷ß¿\¹rîü¨strïÓ³‹çêÞû›;æªaW¯^ÕµÁ½ÝLtŒTR«§ßΦ_ÍŽ½|1 FÅ ³fÍÒ{ùòåËׯ_/X°`×®]}ôÑlÙ~fE±bÅ&Ožìhjbb¢ÎZË‘~1þ^·á÷—g@À! sTÒ€D«—£œY\µj•NL¹råÒâÒ¥K=ËÜôÌÑ£GëÔ¦fŒ1bçÎï¾ûnîܹµxË-·Þ¶üy~¡kÓ²™UóÒ«¬´#HÃúöí«›Q]$•[‹™âY­µFÒZô™H¿M¿š}îZtÅ"eÔ»cþüùO>ùäÓO?­wß~ûíK—.=ñÄa0räHE'a ¸ŸŠ××­{OÉAð¾Ž*UªìÝ»wݺuÍš5ûñ×?uÀª3ÖT½ÿþ &è_¦L\êÔ©£|u½êÒ¸iÓ&uÌvïÞ½]»v¡2ǧÂÇW?­î±´-•ܾ}û[o½¥ëk›6mNœ8¡óà¨Q£”ï¹-囿ҥK›„‰3Ô«‘'Oå¨'fíÚµC‡­X±¢Õ=síÚµßýîwjm‘"E´S|ðABB /¼Ð¼ys¿©©XãÆõhý)øøæ›oÄ ýG'G¨†i]÷¶vìØ¡ÓzݺuûõëwêÔ)u,é¶r×®]Ö¹þ¹çžS¾žµ¶k™åÙ›mIÚ3­´§¤Ÿõ|E…:ÖÖæüÔì>XZ림ÔíÍŽ‚ñСCüq¾|ùôÞ4]zýë_ÿúÛßþ¦N޼yóšú-ZäxkÈöìÙ³zTO Õ¬·Û–-[ô†Ò;«|ùòñ÷ºµã“Fÿ¾>¥rÇwè¾|ùrÕ»lÙ²¦M›êB®ŠSRRxæÌ™Áƒ+'))ÉÜénéÀêièÕ«WÙ²eMƒ<3³gÏ®8C«¯Y³Æº}×Wƒ#: jaõêÕ ³-Sy˜ÇÚµkÿðÃ_|ñ…ÊüüóÏÿüç?µ J«Ú7.\¸°aÆŠxƯÌP{d¯ÿ甫úgÏ1éPùî’&Çs[5kÖ¬\¹²Îõ+V¬PŸ¶¨Õ<5X±‘® 8,O{µ™ô±Pö´§Ã쬊y¾¢<µ½N“S³çÁÒZž¯jÏLφòRê¹{÷n½Oâ›hC{Q¸pájÕª)²×ÛÖP(Üw¼5”¯we˜7£:A_{í5…Ý<ð@ïÞ½kÕª¯¯[CÄ#D$à+àÐ5O'bu5kÜWã)­[·¶¶¡h@=ê‡ÐE]'—£GîÛ·OÊTú§Ÿ~jÙ²¥éóðÌT=:1©LÕªU+T¨ Ë¿rtRS7Š2uÚz饗¬ÏmY- “Ж&3¤Û8õ7Ü~ûí¦¼næÞxãW_}U;¥é,ºió³•ó)WõϽÅPùî’&'Ô¶^|ñE5lìØ± ’ä£HN!ˆ¢œ9sŠ¥hÑ¢î 3é12b¡Ý»irÂì¬ ¸_Qf-÷±vצfσåùªöÌôlXP/õP€¡^fæV¥J•ì¦ÿOj~¸<5tÏ =jÕªU=îºë®‡~8^_·v7Ò àSÀWÀ¡ºZ´hqþüù?üP'”&MšXµë6HééÓ§k$øïÿ»&y¨·CHõ`(P@×rý5 2ž™ºÍJNN~þùçŸ}öY]ìu¦VÉ 6èQ!ˆížÛ²•ÖUÄ i¤fÁ‚:t°J*THÏjÑœm5räg+ç/]Õ?«+*ß*àH„Ú–F¬|ðÁsçÎ5jÔH“sk…ZÌŒÇȈ…z µ§Êµ³ž¯(SûX{ÖªfσåùªöÌôlXP/õP€¡^fŒoÛ¶mvï¿ÿ^‹Öð_x.O §¨÷xŸ}+îtfwï9 ª€¯9ªElnèÃrwÞy§™!aª.Y²¤º„køÃ¾1•¯W¯Þ¼yó‹h¨bâĉ¦G¦zfϞݳgO}¯ÿþ¦·ÖÜx©wD«hDš¢t¨mÙ·*}Ï=÷h[þóŸ5Ǿ}ûöîbêSQ¦Î•&èqï‘µŠægè°O=Ñùý?ëöØ/sSÌŸ/\º:söÇŽÿ{ÞãÿP{¤PcÉ’%ŠÞÖ¯_¿gÏ+ö2mó¨è׬LwŒ,IÏ= /jg=_QŽú­cíÈ7‹¡ju°núK= Æ5jèÕe>ãªn3í¸ú#.(ÈpžË“ËSCýšªJ“°qöºuì‹ àSÀo‡.ù 4ЭzJíUkâ¤NRšpðù矫ó㫯¾ÒéI£Ý‹/¾pá‚Â}ÜNcZÅ3óâÅ‹zJ} +W®T„¡U4Ь¡_õލ „k‚ˆ¦Ðë–QÅ<·eoL˜´ÖUKtK§žóYSX'YmhóæÍxÖ7F}nåâåkú7iÖbëŸÉ Ó÷S¡¶¥iwÅ‹ÿÓŸþ¤3µ&ÏêæX몫CÝÝß}÷Ž‚»*ådÒcdÜÜžûhe†ÚYÏW”YË}¬­Úì‰P5{,ÏWµg¦gÃ|©»ü 5*§÷¦^Ho¾ù¦f/é=«„ºuëfâ¥í\î4†å©¡9éé$ ÷”ªÕœq•××­EA| d×=|ѹsçê´¨ùe:éèV[Ó5ÔÕ¡y—zÔ­z;4EC=Ú_öüC“04ÃQÓ5{TóÛµ®qõyè„ëÎÔ[t¥W¼¢³›6¡N]Ýii Xó64Ñ]O=õ”*×YL“ç=·¥Üí×ùNõh”G4Ïj¾ž˜ü÷ÿ·j3™jžbÍ’›1c†JjH1‡Ÿ­4oXwÊŒ¿oÛö}¥j5¯^»nþ}2ÿÊ ß½áh˜ç¶ÔÎ)S¦ >ü?þã?ô‰MÕåA‡@Š6ÔfáèÕ¾×™ñ™öG!~g=_Qšøây¬í†J‡¯Ùó`Ýô—zÔŒz»)¶ÐÛV]Œz;kÀTó¥zè!S¡(ÔÕ¡}æÌ™Ö[COiDRoäÎ;{jè£Ršò¬³i¦”z7õþ½ÿþûãòuk”xDŸ+×omÛ¢Qê_üå³:¨B=VyÝ?©»Bý VŽž™º¬ª›DÏj¼Cр΃ê,Ñ•¢õ=hF§B!C†Xõ¸·e=&1`ÀmåøƒUÆúv#õh–¾5cßð³}"Ѫ-|¨aóLøÙ–YQMÕEÎtùxV&Ó½ÏÃá™™ÞÇ((I³ûîÖ†?ÖaÐÜOÅ£:Ï(ìv|Ó¨µ×zKê]c½5Ô/¢`WŸ¬± ¸5ô”^¥ªÓúx­É‰Ë×­å@˜Oïûæ"ó”#°P¦F.샦˜g¦‰6T@§$SLß™¡ó ¾ëP·ûºÓÒgAM¾ytoËþ¬gZ(ê)1ßà. ›0w¦Ÿ­¤%ȰoÑ϶LyϦګ “voÅópxf¦÷1 JÒì¾»µKZM%ñĨHB½zŽ;aÞ’$zùå—µã /ÔÇi/æÖгndw޽’ði÷&<_¢ž™îWBàç–ðçY°ëá°j $¡óš¾*@1‡fq:>¼]ýNVW°>¸k_]ߦÞÍM±g’ö)ø1ò¹ÝèŠÅì±ÎŒêÑЧú-4K#T_HtÇ%ã×ÊàÏÂHWÓãGºî9•#€ €@† ˜€Ãï§T2¬Yl@âO€€#þŽ){„ €@Ì pÄÜ!¡A €ÄŸGüSö@˜ àˆ¹CBƒ@ˆ?Žø;¦ì €1'@Às‡„!€ ñwLÙ#@bN€€#æ B@ þ8âG €ÄœGÌ„ €@ü plܸqëÖ­†iÚ´ióæÍ‹?2ö@"ˆþçé;uêtúôik{;wîÙ³çðáÃõ›ò“'OVþ‚ ”îØ±£U† €dMèy-ZtìØ±®@JLš4)[¶€{M²æa¯@ˆ'4Ù³g/_¾¼cذaEŠyýõ×í™Jïß¿„ ;wî,S¦Lß¾}ëÔ©ã(À" €ı@šz#®]»öÓ¯‡6F´Ò–ZJJÊÀÏœ93xðà„„„¤¤¤ëׯ[Ï’@@¸ðÕñfÿE;D“JyÍâ©S§ºuë¦t‰%fΜi/cO¯^½úĉ?üpíÚµ›6m:cÆŒ}ûöU­ZÕQ­}Ò € ûVHjS}ªÅ³FÍá?~¼žÕØJ˜-9rDÏNŸ>Ý%¹råRoG¨:ÃÔÃS € ;uø 8eÏ,Y²¤;t蘘hÏ' €YD M‡O£Æ*ThÑ¢EÕªU«[·îîÝ»+Uªä˜mê³*Š!€ €@fHÓ¤QŸ;\°`Á¡C‡êÓ+#GŽìÒ¥‹FaŽ;æs]Š!€ €@$œ¥b¾±Ãñ‹ € ¹|†c’ç& Ḧ!‹O]Vš €dŒRÉ:šì) €x px²‰ €A p©I] € à)@ÀáÉB& €)@À¤&u!€ €€§@†~Jų7=3¢of½é­¥YM ¢O¤Ï;7«ùxîo§N<óÉD›(@Àñ þ} ÊÞÄcÀ¦%°xÃÁPO…ÊçZKÔêµA>7W€!•›ëÏÖ@ÈYâ0³“ €Ü\Ž›ëÏÖ@ÈYâ0³“ €Ü\Ž›ëÏÖ@ÈÁ7nܺu«›6mÚ¼yó²;‰ €þ"þX¬>twúôi«òÎ;÷ìÙsøðáÅŠ› àS@7 ê˜T?‡Þ­9sæ4k-Y²$Ož}úè)Ý?é1ÌVÌê<"€@ª/^T`qåʹrå²ÊëMw÷Ýw7nÜXAÃ… ôÞ¬\¹²nTfÏž= 4Àª®‹#GŽèvBÝŽÑ£VWŽÂ%T³VT ¢®JÓ“qèÐ!Ý'¨*u„¨ïSϪrk‹$@ ^¢RÑ)füøñÑå?Œ‹Î8zvúôé3gÎTBg(õv˜òš˜¦sÒ &ÌÍÎVS¦LYµj•n”Öm“)©G›¨˜:÷é$¥z¯XφيU†„(\¸° u"ª¿A÷ êÆ0å5¤¢?¥ÏŸ?¯G3ùÕ-„‚ 3ÏTiýé}Z±bE  h`ôêÕ«¥J•Ra˜¬[·níÚµ»víRZgS•â•TFÌ”US3 ¯Ñ:Aè¾$UE*Ó¡C‡ÄÄÄT /]ºtöìÙúÀ‹>ÞÒ¿ »¤ºŠ)ÑV|ÖI1² €úêÕ«kº†ú­€Ãr0a‡YLŽŠû͇YXè «ÙêÒÐûQ3±T‰:3Ì ‰Æ_J”(¡©!Ê×¼¶mÛšûmKƒ,Vý$@ î¢ 8|¢¨V‹-ªV­š™¡ùbŽÙ¦VUºURZ'µ•+WjôW‹ºéñóÙ¼ˆ¶bmŽØ4˜¢ê™PÂôLØŸUZÁ„†NXhHÅ ¯hˆÄ„fèD=5jÔPl¡L¥M0¡é?üðƒ*ÔSêáP ªJ}–zkk€U½ŠKô1{(Ôµ¹yóf­¥NGB'GcXDÌ(ÍŸûY°`AÍñT×ëÈ‘#»té¢Q3¸ë¹zëÖ­uZ™8q¢¦‹6kÖLC¼úЊgIGfD[q¬Ë"ͱЀ¦ú6FÜvÛmnÝ è©hàÓO?Õ°‹‚†† šb @¨ƒD…Íh©‰Bp¨·ã“O>ÑW}hƨù´­FE›7o®UÌ|pu{èCC«*¬GwÂÝr@ 3 $hÚyªí^³ÿb“J¿Ì¢ˆîOç2õ¾š êákГ™½¡›Mq7÷CáW±žõ¿k“ÐÞÝ× ¬#“EbA`ñ†ƒ½õô™/}5_º¶\]9rä0}>7¤HBŠ3åõÑ"z›;jð\ÌÏí’‰@ðŒIž›4 1‡T,zuBXéð m¨ŒúE—t?ë+îuÉAŸ~:U):ñ PÜ!ˆcE@ žÒqH%ž˜Ø@H‹GZôX@| pøb¢ €¤E€€#-z¬‹ €¾8|1Q@Ò"ŸRIKû2f]}ø0c6ÄVHoë×Ó{CÔD$@Àñ›ˆ¾ç "\ #Áéý%¼;lâI€!•x:šì  €1*à·‡Cß&£{@³@@ æ| :Äüq¤ €Ä´C*1}xh €ñ!@ÀÇ‘½@@ ¦8búðÐ8@âC€€#>Ž#{ €@L pÄôá¡q €ćG|Gö@˜ àˆéÃCã@ˆŽø8Žì €1-@ÀÓ‡‡Æ!€ 1pÌš5kæÌ™ÀºqãÆ­[·š M›6mÞ¼y°Q6 €@VðõÕæž@ú]ÊÓ§Oë©üùóßvÛmÏ<óL­Zµû¬)Ó»wo%N:U¡BMÏ´VÔU|Ô¨Qš0±bÅ ÅÊW/ˆ:Úµk÷ÛßþV‹ëׯW£„B Å1?üð}÷Ýwï½÷.Y²DÆ‹/¾hÆAòæÍ;zôh…5K—.Õã˜1c.\¸ðå—_ª*k[ö„Zbš%J„™”ªž8qB­]»vÓ¦MÕk²oß¾ªU«:öÝ^3i@²¸€¤êà+àP-ž5V¬X±W¯^›Ð0„útù×ã”)SV­Z¥.¥ *dµ dÉ’Š6´¨ˆÁ6lÐbõêÕ­2&qèÐ!%4X£G…)ºê+pQ4 ”£qÕ „âÅ4¹råR-†úÓŽñãÇëY5/TåkXGê­1A‰ªUo‡r©‹9sæÈW½³gÏVÏÄüùóÕU^¼xñâ* Î =*:¹té’)oâ ƒ˜EÅ.Š- .l#}Tœ¡9ú+UªT˜uM4Ó¡C‡OþïO£?aÊó €øðÛæF}ÖTCš7Ú¼yó‹|É“'ÏÊ•+1hQaDîܹ=W×ÜOMÕˆI¥J•Ö­[wöìYz¨d£F4Wô«¯¾ÒxŠJÔ÷ šÕåàYIP™7VÌ¢E‹Ô³b&ˆ¨UŽÙ¦Am‹z@Èjiêá0XŠ'zôè¡™žšNѲeK]°'Nœ¨é¢šï©™˜úÐJ(SEêQœñöÛokÜÄô1¨°A† ¢Éž‰‰‰#FŒ¸ãŽ;ô™‘P••_°`AMAÕ§WFŽÙ¥KÂXŸ» jÔƒ €@–H°>†@ƒ4MeP afoè›ÁÔWa>Ѫ~õ‚hÄijD«kÔ&½û6 ;wîœ&…˜oìp<Å" €X>Ã1És“$0¤bmØJXsEÕa`e†J˜ žÏúYÝsÅ´dª«#-«³. €¸RqWJ € ` à°kF@t àHV*E@»‡]ƒ4 €¤‹Gº°R) €ØÒåS*ö Ä~:¢ofýÝ¡…q&Ñ'Ò­ŸEŒ3„Hw§S§N‘®ByHoŽ_„ïkP6½¡©(o8׌Ö2ÚIDATéZ\k‰º"}ÍPŒ`H%cœÙ  €YZ€€#K~v@Œ àÈg¶‚ €@– àÈÒ‡ŸG@ c82Æ™­ € ¥‚ 86nܸuëV9mÚ´yóæeiTv@þ¿@ċՇîô«ñV%;wîÙ³çðáË+6yòdå/X°@éŽ;ZeH €@, ÌŸ?ÿÒ¥Kja¾|ùJ–,Y¿~ýܹsÇrƒidFˆídÑ¢EÇŽkö¶@JLš4)[¶`:K2#"mF ³ )R¤Q£Fعs§ÂŽzõêeö=¢ý kÑÙ³g/_¾¼}O† ¦Ö믿nÏTzÿþý&LÐ)¬L™2}ûö­S§Ž2•PáöíÛ'''çÏŸ_‹5kÖTþ¸qã4.süøqÝ`uíÚµJ•*¦p¹råtú›1c†‚›AƒmÙ²EéÒ¥K0@¡¶¢|þ@À§€nÔ1©~½[sæÌiÖZ²dIž÷³`Á‚šã©®×‘#GvéÒE£0fp×sõÖ­[ë´2qâDMmÖ¬™†xõ¡Ï’ŽÌˆ¶âX—E0šc¡Mõm(Œ¸í¶ÛÜ,ºÐSÑÀ§Ÿ~ªa 64Å.(€P‰ =šÑR…(àPoÇ'Ÿ|¢¯úÐŒQói[Š6oÞ\«˜ùàêöÐ ††VUXî„»1ä €@fHдóTÛ½fÿÅ&•~™EÝŸÎeê}5ÔÃ× ;'3{C7=šânî‡Â¯b=ë+Ö*&¡½»¯AYG&‹Ä‚Àâ #zëé3_új¾tm¹ºsäÈaú6|nH‘„þg8Êë£1:3Dô6wÔ๘žÛ%,(à3<“<7i@b:©Xôê„°Òá&ÚPõ‹„/é~ÖÿVÜë’ƒ>ü t:ªRtâ ¸CÇŠ,"€@< ¤ãJ<1±/ € Ž´è±. €ø àðÅD!@H‹GZôX@| pøb¢ €¤E #>¥’–öe̺úðaÆlˆ­ ÞÖ¯!¦÷†¨ˆH€€ã7}ÏAD¸F ƒÒûK82xwØÄ“C*ñt4Ù@bTÀo‡¾M,F÷€f!€ €@Ì ø 8tˆùãH@ˆi†TbúðÐ8@âC€€#>Ž#{ €@L pÄôá¡q €ćG|Gö@˜ àˆéÃCã@ˆŽø8Žì €1-@ÀÓ‡‡Æ!€ ñqÙ @bZ€€#¦C@ >Rù¦Ñ.]º>|ؽ«ï¿ÿ~¹råÜù¡r®^½š#‡Ç¶ô[S§OŸnÛ¶í AƒÌºsæÌyï½÷ªW¯>iÒ¤Pµ‘ €™KÀ#°ïÀèÑ£+(gĈ;wî|÷ÝwsçέÅ[n¹Å^,|ºoß¾GŽ™5kV¨b«V­º|ùr®\¹T`éÒ¥¡Š‘ €™T •€£téÒfÇLœ¡^~üxýúõ»víªm©äöíÛßzë-Å@mÚ´9qâÄ¥K—F¥|÷)“?@H»@”s8RRRxæÌ™Áƒ'$$$%%)¤¨Y³fåÊ•-Z´bÅŠÉ“'+4iذaÓ¦M‹)’/_>eË–u·øŽ;îP4³|ùr=µlÙ2•׊ªS‹ž[QþÛo¿}àÀuºôêÕ˪Ó33{öìŠ3ÔÈ5kÖX],ŠŠ4N¤`H£<«W¯>xð`˜mé)þ@@ QºN«o@=µk×VˆpôèÑ}ûö©)/¾øbÞ¼yÇŽûÅ_ôîÝ[qƒBE9sælÙ²eÑ¢EÝÍUx¡˜C£*W®\ÑxJëÖ­­2ž[Qç‡6­-þôÓOªS=+*|µAeªV­Z¡B…7*G¡†ºQ”ùÀ¼ôÒKÖØç¶¬–@@´Dph}úÓO?ý÷¿ÿ]Ó/ÔÛ¡†<øàƒçÎkÔ¨‘&~úlY‹-Ο?ÿá‡*hÒ¤‰µ–çVÄh§@o¼ñ†â Ù¨¼g¦:]’““ŸþùgŸ}VÃ%f˜fÆ *¯ÄÚŠIxnËQ†E@ˆN •9¡*-Y²¤žêСƒ&ìej,Y²DñÇúõë÷ìÙc]×­9öÂVZ³74º1mÚ´;ï¼ÓL1O…ÚŠÊ׫WoÞ¼yŠxÆ?qâD•wgª¿döìÙ={öìØ±cÿþýÍÐI¥J•TX½#züù×?MQ:Ô¶ô € F({87n\¨P!M×øüóÏÕ-ñÕW_iœBMÑgY‹/þ§?ýI†&fªA™êêÐÒï¾ûNEñl®.ù 4гwÝu—½€çV4±cñâÅ.\PQ°`A×hÏÌ‹/ê) Ù¬\¹R†VÑüÐZµj©wD5h·¦¡è38f¾ˆç¶ì! €Q DpèJ?tèPÍÕL}W‡ºŽ;öÍ7ßhê†ún»í¶G}tÛ¶mü±ZöÈ#”/_þ•W^ùì³ÏB5´[·n/¿ü²¦ƒØ xnES=Ô¢>þøãš1ª¹¨ZÅ3SÓAªU«¦þMUÿ‡‚}h%[¶l}úôQ´ôõ×_?öØcêP1ÇõÜ–½1¤@@ j„“'OF½²VÔŠzÔgj%êäP€bºR-ì(àÞŠºCÔ]¡(Á^Ò3óìÙ³ /TLß0¦®M_U—ŒPô–Í›7¿úê«­Zµ2dˆU{[ÖS$@@ R1És“$F9‡ÃÚ˜ã’o廞QqóÌqoEݦgÂ^Þ3ÓD*¦pÇVߌæs+VLã,úfÓGbÕãÞ–õ @ˆN ­Gt[½¹kéëSwïÞ­˜CßBfæÞÜö°u@â^ •€CÝ qL°õàšßüFÿøC@(ú÷èägÍTU¡q?ù)£O‚hb©Ÿ’”A@Ø<ú/š2¡iš©65ÊO©¤Z/@@ î|voÈ€#î_ ì  €é%àêEêC*ú† óÑYý|‰>Vª?µú™gžyâ‰'Ò«ùÔ‹ €ñ%zÀñþûï›]~ê©§ôåžúº­HÌ—‹ßÿý‘®Hy@ˆ4 ©èëÌ{ôè¡ßŒ}íµ×ôÅáFD?4ÿ_ÿõ_wß}÷°aԣߩ߲e‹¾âS_ëdì €D*¦€cÔ¨Q ,æÏŸ¯_-Ño¶iÛæ'Tô#®Ÿ~ú©~¦U9úr}×…âýpk¤£< €ć@ô‡º46nܨ_“×W†ßzë­ëÖ­“ˆ¾¹\êä¸víš~èD9úq5ý¬¾û\ßìdì €D*}À±aÃýÔªÆM~ÿû߯X±Âú%Ø#FèÇc5€²jÕªH[Cy@ˆKÔ'†Úmý4‰Ž7ß|S?„f/S»ví9sæ|ðÁšØ¡Ÿ‡ÕϱêY µØËF@,%}G­Zµ49cêÔ©úÕV‘éGVõ¨Ÿ‰×Ï”è‡X|ðA-šn2eÊìÝ»7K±²³ € `ˆ¾‡CQ…&jÊ!€ €.T•W‡k-2@@˜ÃE@@ :ŽèÜX @" àˆ‹¢ € Gtn¬… €pD€EQ@ˆN€€#:7ÖB@8"À¢( €D'@Àk!€ €@`Q@¢ àˆÎµ@@ ް(Š €Ñ pDçÆZ € GXE@è8¢sc-@ˆ@€€#,Š"€ €@tѹ± €D @ÀE@@ :ŽèÜX @ü ìÞ½›€Ã/å@@ S'Ž}ôÑGQб  €øسgÏO{·wëր×…@@ RE‹-êÞ½{ñâÅ 8"Õ£< €¤. yŠ6Ô·±vóN¥s¤¾%@@HvîÜù¯ýKÑF¾|ù˜Ã‰e@@ÀŸ€=ÚPßs8ü±Q @| 8¢Å‹3‡Ã7@@À‡ÀöíÛ­‘õm(Ú0s8…$œ(“D|g¾0ö4¦{œ"hLfn{®ÐJæþCÜæ\;1ÿíü3ýsoŸUïRSjY–Æ$š|?ä½ËUk­ZZ«~®ZÖ"˜(½ÿ áéÓ§ƒ“#xàá ‘Ùï÷Q&uPo^ËoUž÷úýfÅhÃ;Ø £æuº~°yžÓ´¼¥ž^SLáy1´°–®kæYŽ»ýÉjk—‘Þ ¦>“y¤&|!²¾ XUNŠ—‹n*CÌximOµ¾°0yÀårÓu­J4“¹Ýþd•g̲nLh•c#æ‰är¹\.ñ0ž¯&Þ”µ² ‹ÌHe³¹\.ñe e²®E=Œ1æ‰d³ù~CAgSM?h}ÆÿHAøBûœÐº²Ê]aÎnè¼ü};yù2LDÕ¤ßé ê¥`–ÀÞÑ¶ÏØ˜1SÈc–•fpd}¹baŒ2Aæ‰äw|ŸóX7hÚ‡@®oÖ´hÜmѮϠ¹Ýå‘<$ÃLÝ5,ú=‰P&“J;j'bäñ/ˆ.TÛ6ò¹Æ4ÕDäÀ®ö;á^?«n2›ZÁ‘Ád&ªhD?Ì]·Þr£ PŸ ?R€‡¾ÈS[D±š W‰ç…ÀKÇiOqiD<•Ú‘qàÏj—d“w»¬îà‡ýEz}Fñû Û:R€‡dȧî6nm1&½´‘¤R¬ýVÑåAJ9Mu 8I9D¾WE^Ç æsœÕ.‡L;õŸ#˜ O†ÜÏ`ŸÕ*õ¾¾V’~w²}“×ßÿ ³*qR&QîÆ3ðxå‘M›â«Õ¤ßès§gú‘Ög|Ž`’ô})4ÆKZ3só6Õ±„õ£½€åz&©ü+ùvƒ K}ÛGÑÖ¤TÆ<Ñæt×ÁG8Œ‹á‹îù­ªéGXŸñ9R€ÉÂÑû÷ï•›bNgëé#–@jÇgD3À˜xúô©ÖÜf „»æµÜ/•Ñ€±Õgô` !|„/_¾Â€;¡²hÀáá!ÚÆÁÒÒÒÕÕUÿðENŠö€ûµ¿¿¯º½ç’Ý‘Îûâ˯ð¶ŸË岩€…1å Ï‹¡‚CÞ^Mú"Þ[¨’ˆ4b r|9Q‘€@™P{¶:ÍÏ7ã—â1ÍÏ_I¼}–l¿³ÔÓùïß5CâÖê»WoËåòÛWªCéÕMÚ:=-ÿöÏèuªHöÍÓÝÙÇ»=Ç?:ôËÿŽ«ðF_Ⱥž Xx1¬œsÍ`2·o`Ì]·ÊÛóD· ršJí‚H’J… ™MV“™ˆÎj—dÝÈçóù Çé­²½¿©m¸ef)uºE›³½c˜ôš<3f“¶šÑÅqÚXš!¢™¥€/}Ü øvSòËÊýúæ¿Õ˜Hý[gX N–¡5Óž¿µQª§×–Už'ž'6`ÄÄ‹a·HÀpKwüâ‘ßLrQQ5¼ñ­ÿ@4së­gß<=ݼ£½ A×s_8ζ¾·"T*•Ɔ‹Z…ˆÌ&Ã`…qœÑ>'ð¼˜:¸”· >u—ˆˆf~n¦ç='êÓ?}ö¾HbÞ—NîŸÑù~2­wîï»ßŸëL0\þ·]=€É¦wÍ#ÎèÛŽÖBÍh&êÃbháLˆ¯Š¡úUîgzò1úv"5g8éw%‰1νºã—¥TÇøÅõÆ>Þ=]Ò9ôbßÜ=žýÈúkž±wOíº÷Øú‰Æì]E‚Áó¿íêL<ŽˆÞ¿¯Ütxx¸´´4+N7–l<ß÷oÒVjioÀã°ùú7[¯>ÛßßïŽIž>}údÌk¿5;›¦Ÿ¾z›Bì²q_0Ë&)|¹ººÒ^/¾Œ‘Ï?ýdjjª1ý`üÃ"º÷éÃ0†x4 |@ø€ð&Ô“Gu´SSSxË&F_á ÀmêsóH’Jñ…ØXÉÙ²²·í3rh5¸GZ£/R=½¶Ê7’Íær¹££0Eâ%I«¤RÌét:cãV1¸‡ð¥ü&QåyotÝÆqDÄqFßΆüo"*Åœ.—Ëår9c¥ÎH¢“_ ¦ëR=t:Î`º.éLCD’TO.—«—´vL§ƒ.—KNÜây1´Ð­äÜusƾeß"¾xá‹$• bÌã°ª¼ZOÃ"ï‰d³/†ƒéúu޼*8²©€…±jÒ¿¡ðÞŠ@•Dä Þ ú¦)Ç—! ” ÅËÊÌO(œMª$Þ”9ζ~õ0Ƙ'z´nã8I*Å—•æˆQ>oÀ_4HR½xRiD6V‡‡±ÊI±š0扮[É`2ËÿÞ^4Lf"ªÔ.š9h§‘#'"³Éj2ÑYM™¹Ñ ïH™B¯žCkHˆãlù<â€G¾]Ô*í¡ÉÈjÆ‹awXäù2ç8ÛúÞŠ…1¾šô»Ý±n<šð…ãl/ñ¼X(w¿8mÚ7¦éQÖjÚ$cžánqFßN>ñ0"Ê„â˜òðXÂ"²¾\±0– ­µfÔ–b±’$qœÑ>'4"›rAäyaÎnÝ­™Vþ©ƒK±ÑY­=­u=êaŒ“?MxX´žûÂ}ÛG¦øB(éw'‰ˆÈÉnp};‘š3v‹DÌÙñG[­FþI¿+Iò´\kïXg1¼r²œHúÝ æùUîg¿sý²ñ V‹F®Œ·à!áˆèýû÷ÊM‡‡‡KKKWWWïh±æÀÙßßïŽIž>}ŠE` |€ £>÷eMãIeî &ˆÀøèžûò¤o"€±‚¹/€ðá ÀðዤxóßÁÖªD$•b.—«™ ž:].—ËåêH¦ÌÍ¥€E`Äá‹J|5ñæúÁüåB¦šÔÖ–!Êær¹££0EÔP”WgÌf#ưÈ"Üvø"X,Œ29æêéÔ™`aŒˆˆ.j"2› DDgôí °vtkäF¹Ú¢TO­áœëí¥Xsc¬Ôܽ{”¨ýߥX+‡ëÝÛô ¾˜ý~okuèËâ ÍÍ™IŽWl/ñ¼ZXë¾m¤â²vFD^‡â”ãˉŠˆÊ„âe9"‰/'*äd³¹\.ŸoCõt0,òžH6ñðb8˜®÷?l^ rõt0”i É[ô w¯çŠÓ‡‡‡[^¼x¡žÔêð°Læ¤X_´Oh.lª%¯Ø6òr†Åª¼tôh]õªÏóbØ-óFó69\(dˆÈl²šÌD•³Z]²Z‘Çšio{ÑÈqò Mñ¤Â˜×a%¢VM š‡Í˜'ºnmíNä55wÐ_´j+ÀHh, ýD{7å{?ÎÎêð’(&ßÄk³ÿÈ@qÅk¶|v½~°¶œ¬v^ûÛ‚‰#Ga!”ÉJëÖVˆÓkxž*µ "#g[ß[9[NT«I¿;é‰d7l\ó•B¥vAdÐÛ8]»PtgÀHh¯_ôD{gOൾ\±d¢(z#ëDåŽW9θ¸­-„2r(Ð3ALŠ©ƒ—6Ÿ‘hÚ$«tØpFßNÞWŠ9Ã"Ÿ ÅGëVš6 DÊD0MÐ>]»ë.ÚÆqxB1ÀÝÑs_ ö9ó8¬×Û$© ¦ëò×rAäyíÀ°XX%I×%Ž3Úç„Ö”šÎHg=êaLέ•²Pn”"ÌÙ'ϼ!:«]R9yõ#•w—“)·è)îÅ“‘äÂÉC¨¥µÑ¶þama¡ÊóDÄ,Õ;GÊLýÞdXLDìÛ‹FßN¤æ 'ý®¤|wiÝJåøB#a$¬„¹5R†Ý"óDv|ñëË!“HúÝ–ÀЇ%2=Ê5úv¢5gØïN6nc­Ût wOeÅiÙáá¡ê”©ž^[NT„íX`h½âêµât/’T’G 0ü÷h€ð…ãlùüÚ î–l„/_¾Â€;ñM¾øò+4Ü‹Ï?ýá iëÕgh¸cWWWSSSzÖÄÍ# ú‡ÿ¾À„Aøf˜5¨µ2ó,{Ô^®eeoÛg¼çå–ä*eÈ{ÃFPšì.V—â–uíëfÝ>Þ=Ý´ßK%fç+º¸5»úuã3s_Õ€û_” Mèò`m9´pv‘D£\òF³ë6Ž“¤úÁZ¼´}×øŽxe´Ë? ²Œ*„êÐîiù¾CûæéUðm—‡ˆZ†•à®é½yT~“¨ò¼×¿hä8Ž3.ú½<_M¼)Ë×јÓétÆJ’¤ü7IR=tº\.Å–_—m\¡9ÎèÛÙh]­K1§Ëår¹\ÎX©uQ—óL§ƒ.—Ëé ¦ë’Æö^å*3ŸŸýr!$ò<Ï‹¡…xwͪ‰ž¸$æläær¹b%]Uê[R)6?ÿobAçu›”bÎ`º.õ¬Uñ8íÛU½·fg­VëììVñzËVñ|ß?;kµZýûç½7Ñù¾¿c÷¶Ñ;ùzµ‘ ¸ÕVž¢Õ4ÓôªLW¹}Šûã?þ§·‚üªVàîÂI*2ĘÇamn²:<ŒQ¦P’´.Éåør¢""2¡x¹O„Ô•X¥\…z:yO$›xx1LׯŠO(œMªÈ1–ÆvÕJÖÓÁPF¤²¹\îø8ú«£¨‡±^Ã$CÔDƒ<´“Ë岩€…±L¨ô­’v5BÇññ¿z9'ð|µvADtY;æìÆž#7Åã´o^=xY}÷êm¹\~ûêÝêõå;½ºI[§§åßþ½N{o<ßßü>pZ.—Ow©µ{që£ÆÆÓÍ?!ûæéîÇj7})º«ÖršrY™L»\íâþÛûÿþO_ú¸-K¾{µµ4ƒŽ`µ¾ÿaýµ|ìôñümÔ=÷E1ŸwTåÎ,žû¿9_ZšiÄB›èTÆdô…ãl/ñ¼XhÝý(Dž'¯CsÒè´I Æ<‘l6—Ëåóƒ&V)·=}Á4=L ¨V²+ó~9Œ¢&×ã(‘D…„@*âa¬g)CUƒãŒö9*µ‹Ëâ‰Yûí»©žýÔ·]n8mܦùàÙOoû£~¾ï_¥ÝÓr¹\.oû®+sÓ|íóÏ_§ŠG~Lù›ð…ˆ¬/W,ŒeRò½•ƒT¦u?B2ˆÎj—TŽ_ÿ X¾Rò¼˜:¸ìˆ„t&¾.7´Öš÷ZŠÅJ’ÔJ_(7b)Íi‘™j%ö9A®d{p Üҙà kÒ5ŽÒ64Ò·Jú«a°Ï ”)¼©™U§uÄ/«ÝQíó¾´|Ãä|?©ëžOûxÅÏ_¼ëŠŠf~ò¼;Tz÷ûQýÃ÷ßý´qÓêü÷ït•«¯8»ÿÕ»ã"nŒaøÂ}ÛGQo%áw»Ýn‚Vö÷;¬/Wª$ýî”iE1`@FßNÄêI¿rbÇ@‰åR%éwË¿©)8åÊéŰÛ™'²ã3תå};Qo£P§3V&Ãb¸QíÎ*£«I+Â[zy^ -¤Îjý¶¨o•ôVCŽ_2Ô/z!²ožî>ÿõ/äë\ÿúƾ¹ûüõGV«õ£×Ïwÿ‰ñÌRjþx¶+Ï·Ï’³mSUvŸ¿þ¨ãw=7)Ú¾Ù<–ÙMzáKË?/Ò.W_q3?ñnuC/w‡#¢÷ïßw¿pxx¸´´¤ºl’$ÕÖ–“UÞHÝðR w¯ñ(o4¿aSMðÅ—_aÉÆÁàa1£°ùú7[¯>“c8äéÓ§ÃüòˆãŒ¾|6 Ä²öƒC`ìb©~ITyÞÛìt/z¸[Ãÿòˆ3úvò>´àdáð¶Þp€û_໺ºÒ¿j9¸gŸúÉÔÔ¦¿Â˜$}€ûú ðn0pÇ_ž§¦¦TmÔGcÀ8Ð?ðð& ˜0zç¾HR)¾Ê7z´n¥r|!DÑ£ §xµàh¾ÔZɈڗSVfb»Ñª@7%×DYOO$Û:èTܲ®}-ÿóã®uœ)š‹9cÿøÕÛÔÒLçv"bìã]ùñ´ýóP7üèK&/õxÞnkçl6â¥LházÁű"×3›xÓ8œ[¢bNg÷"Jãå|ß¿JÍ5¢·IeG™béÝç¯7[©®·_/1­7O€‘†/XM¼)빊§ÓA—ËåtåpGÞîjŠ•¤¶K~)&o¦ëR=t:[;‘$ÕÓA§rFÝ!…ÊŽ­š8ƒÁ`3àPˆz&õt°y8Ngì[ö­<ÔZ”QµYnRè 5TyI)—+´oî>*öiDû¼ï»ïmž7_¼‘ˆ‡¯&—ãå> ­c”)ô!x^<¡p6¨"‡;gÛÈçs¹\6°´ð¼*8äíÕ¤!Bá½*‰H#¢*Ç—! ” iWò²vFD^‡|?KuÇr<$ò¼'’= ÏéiîL$©_NTÈ+Kåóò®E=Œ)ﯵgrÓBG‘¸xœöÍÛÛC“ôq±ÏxMRs aòÁè Y×S /†åA‘›cÌã_4Ád&ê wä퉣ëVy;cžèö¢ANS©]IR©!"³Éj2ÑYMu”ˆçŰÛíö'[Ë/«î(IõÚ1f1M«ÔDu0©Wéz†¬Zƒ@£*ô†‰uK¯Y6iKžùÒ±}vv 1 ÜkøBdX ,,Z;¸ì—T0MU„|ÃÅí+§Ùê=6^ Ë;Vj=¦H6Ò=8ÔµãE­BDf“aøÒ9ζ¾·baŒ¯&ýn·Ž˜o…Ž0±9.¿ý³üü'3ÝÛ¯'¾ÜcøÂqÆÅí¨—*‰Hê¬W¢rAäy2›ŒƒÿÔH’ê‘D…„@*âal]§MÂõ â|~£÷¬/WžSLÿŽ—Î};ù|ÄÃHsâ󰪹þÄ]÷uºîüt˜YÚz–Ôe8O€‘…/ÔT*•ŠzüQЇ2=ÃfBŽ«ìsÊ D‹<†TIDÒuIuG޳9¼Äób¡Ü˜¢ÜNtV»ìØ®Uºu=êa¬95m9t7ìÍ ®†±†ÿÕ»ÕV8RÜZíiÌ,m=Kjþ–hð<F¾Èƒ ÛQo[¦¼v»].—ÛÎ+{Ã>å¥ùÃ%1´:¨×/tT};«&ý}\ÃqÆE¿—ç«ò´_Õ­/W,Œ‰awÁUŽY_®TIúÝ)ÓŠr{w&­Ÿ¹Ýá +áE#Çqœq1ÜÈ¡»’7/tÐĽ¢‘Ô.­5&¯$Ÿ½mÝ*nõšË2³” |ÿ‘ÿ"åÜ—ëé/=óÐ!Ñû÷ï»_8<<\ZZj-›$ÕÓkË‰Š°²·½häïãÝîåÉ{÷Rè_~¥²dãù¾ÿ£Ãosoî6ò€ ´ùú7[¯>“cŽ8DééÓ§ºF_bN§ÛŸ¬4Ç Ð¾×ÌRêt‹6ggGøœ¹ÛÈ4]‹läóh*"j>Šfãªn,M@žð¸Ãxœ®®®ô¯]€ðîÙçŸ~255¥2ýá ŒŒµÀ8ÇÓhœì€“á ¨Ãp Œ¡«««©©)Õ Nvxœ';Æ Àdì_` |€¾ÈϼW>ÿ^¹f²$•bíÆoQ>^™Éývw=u,=@=„Fq«õ¤ÿK·fg«´ž:×¶ýz¡]yÜgŸ ìâœÎ`º®èåJ1Å õtÐÙìâÚ’5së“àÁöÊìÐ'ý@ûÞ¤ xˆáK75“[Kg³/eB kgï=’ë™ÍF<ŒÝ| hùárÃ.R=fÎ÷ý«´]–mÓj¯âúšiʧ»Ï_o¶R]o/—˧òŠFzóΑ¯&Þ”[ÿ-2­Ðä`m9Q©l.—;: S¤­÷è›`œ¾)ÝÙÅþƒg‹Ï>xPÁĆ/Þ=Ýü“™¥@û y¾Ÿ|÷êŸY(½z<ßF |ÿQ3f8ßßü>pZ.—OwiUW3³ô5Ve-n­¾{õ¶\.¿}õN±ozu“¶NOåÁÚó}òÙ[¹ÜùãÕôu­T˽Þ÷O—^qÉz*`áÅðÍgÈóø d0™‰:Ãyc{âèºUÞΘ'º½hÓTjD’T*dˆÈl²šÌDtVS%ây1ìv»ýÉŠ7šß°Q%©^<©´¾K‘Žü[u‘÷•÷ì»—$ÕkgĘÅ4­rȪC5zsˆÄº¥×šsY6iK±fôõöY܇† eux«œëR½xBsvSëÛF>âa<_Múݪã(ª tôºúŸî›âI…1ꬳÔÖUê`÷¿z—l¯S¯Ÿþÿȧ3m}帩1Œ IDAT8ÿæwhÚ¾‡ôž÷ÖþM&°4CDí!“o÷º9ÿæ^ü|¦5TëSlW+W¹/<7zla18YN„ÖL{þ~±¦é¡ŠêéµåD•ç‰ç‰ šñbØ-ÏË1Q-`Š9 ¡L¦PZ·¶†;v44†‚ûäoèìø2™L¡¼î¨U¼«ÎZµ9w˜†›µÉ€|ÛåÆW¥ÔOfº·Lvüâ%QL¾‰×2fÿ‘âíJv½~°¶œ¬Š¡5ÓÞö¢±}Ò[wƒ¾VgÿÓÕo(èè TÇGÏýßœ/-Í4FK7‰NÔ“þðýwß}ý ë¯åŽ”>žo8›§§›#hù¾ÿîùüŒþráË€8θ¸­-„‘”@f‡j¢rAäy2›Œ7è·}IªDVRþÚr(3À®Ó&XåzpU£‡z¹"ˆI1uðÒæ3ªî(IÓ&¨Ò'åÑɣǢ(â”ñ:6iô×jøÃìÝÈúK·ÏûV‹›v»òûÒü¦V¿·õÌ¿U´k„,ç pÿñËËK&!Š¢7²NTîÕfz|èH`èÂêìTNí¶Ã~]´Ï?_M—6?ØO¾{µµIÔkäôƒg?õm§ºÏ÷âÖìê×<¯øŠøñîé¿Éô*£›>÷…ãlë{+B¥RQ?JñPFÿèeoƒFÐõì“Æ}ëþcHVIDÒuIuGy#ÑYír€ü§M‰¢Ø{é»Wë–y¡Ü˜£Ü.W }»jmHܳó+oJ·V;æ­¨0IÍß ž'À}3ØçjÜ—Qtk±ædüÆ×³öp¡W=€®þ§Ù»4¶´ö*”Å ÍÉvú¼ûý¹ò,=.S¯Ÿš7cÒ«×>hM`›ùù‹wj3×ì›§§åî_v~“IË7©Î÷“=zŽ;R­¹/½Ê„/ÃE0FßvÔÛ–)/†Ýn—Ëåv‡3ÂÊÞ°ƒ Í.‰¡…Ô™@3íµ};«&ý}hÃqÆE¿—ç«ò´_Õ¾¨·’ô»[ûæo°ÏYkLdÑ]+ëË cbØ]pD=ŒµQ%éw§L+Êíª”¸W4’Ú¥µÆÝëä³·­N¨÷Ï,g–Rï?òïÿ@¤œûr}ÿ»gžcŠãŒ¾Î§!pœm=L‘…—Ëå‹Ìè¸s¤‘ ï9¨§ÿ)“a1Ü8Ǖݑv»Ã"óDv|úo Û7wŸ¿nÍÈ¥™Ÿ¿x·ºªœ…ïÛ}û,)ÿP(ùìmó¤YJÍÏ7¿M.Òjµ~¤ü1bgš·Ï’üç[s_nT.<´Ó“ˆÞ¿ßýÂáááÒÒRkÙ$yJEXé¾Å ·A’Jñ…P†¼£»ÓÔß_~¥²ŠÛù¾ÿ£ÃoG:5î6ò„‡kóõo¶^}v«K6>¶.Nýd—¿¡Ï7¿[´ýàŽOöŽ8DééÓ§ºæ¾ÄœN‘ç +aÄ.ÏÌRêôçûþÙYz5²xã6òº¸ëàeõÝ«·˜“@Wø²Ñë¡pkägÞŒM³Ï,¥N—& O€a ‹k²ožÚ{ÿ`ÒÂx<®®®ô¯W8ÙîçK>é›ûÄÔÔÆör‹FÀÉçdÁÜÀp²ŒM“Ekôe ã¦çÜÜ€û5ðÜÜ€ñ„¹/€ðá Â@ø0†á‹$•bN§ÓLץ류Ëår:c%IBƒj¶šàÎׯ>|5ñ¦Üúo¹A;jÇ+òòÑùü†ãÐ8w¾ £LA¾0KõtêL°0¦¸r×ÓAgÇxŒTON—Ë¥ÜÞ½Q¾ê»šb%I ¸\.g0T„ªeuÇétÐårµ®c‹R¬µc)Ö¬I¬¤½»j¹Ê<ççC¿\‰<Ïóbh!Þ:.íj«6Œ$|1ûý^žS—DtY<¡¹9³âår|9Q‘€@™P¼,_Úãˉ y#Ùl.—“!T7Ê£¹\.› XË„âòU¼‰<ï‰dÂs¤Y–Êòâ …³OÇ Ï‹¡‚C.·ž†EÞÉf#^ ÓuíÝ{•+çy|ýÕQÔÃcžèÑz÷ˆ‹Î&§@UϧîvlyñâEã_V‡‡e2'Åú¢½xBsaS-q=àQÈ‘Ùd5™‰*gµºd5´.ík¦½íE£â¬º‘ˆÈ`2UšCµ3bÌbšîØ®R–±ëªÏ˜Ç¿h rxX&“)”Ö­ÖæöèºUοxRaÌë°R#ÙI±¾¸hè¹{¹×1¶òÔ0Pu¿ ÄÒÒR¯5žhï¦ü¯" «ÃK¢˜|¯eÌþ#Å»<Ân‘xž*µ "#g[ß[9[NT«I¿;é‰d7l§¶‘ˆ¤zzm9QåyâyjÜ’º¨UˆÈl2¨®´•5LûÈù+TjDía«ör ©§‰ºß€GB{Ýè'Ú;÷Šz¬/W,™„(ŠÞÈ:‘ò®Í´I Vé¼iÂ};y_)æ ‹|&w­Û8®{£•."‰ +)m9ÔoJ°zYZÓt|¨Ò7Yk»J¹ƒÌT ‰°ò€Ê(Àûìs1æq´ß*á8£}NhÍŒé zÖ£Æ:‚ƒö*-gsx‰çÅB¹1 FOY gµK¢rAäy2›ºï.µò)”É„9»"YçîúÊ6 Í}é¦M#_ä‘Õ¦FßNÄêI÷ï‰Üîp†„•ð¢‘ãT7rœm=êåy1´:¨õËù¢.†ÝGÔ£ø•SwYªµ=‰,¸Ã¢ÆÄ91ìv‡Eæ‰ìøŒÚ»÷-—㌋á*I¿»;Î&§@=!¢÷ïßw¿pxx¨1eæ¾È3c*Þh~ÃÖ?±TŠ/„2äàîÒèv€¡iÄ!OŸ>}2Ç Gòm#&¬ìõûu<`6úöè –l€ ƒð¾ |@ø_¾ |„/_@'y±ÏÖ² ÿ½¥RÆ®J1—Ë%/€ú-ûV»ª½ŽeÐcT:žÍ2¹ãIÿ@ÂÝx‚&x`ÑçÅ‹t¥¹Õ¥LÍ_’JñP†)Ò˜ÏoÜA#´ wù©ã8ÛÆí¿Ë€ðîÚéé)a‚¼~ýú–“Wh¯Êk2ÜõKRý`m9Yå[[º¯òò¨Dä‰d7l\Û«®_Š<Ï“Z ^^_l¢ ѯr?ûë—ò®¬œ%“UÆ,+{Û>#×]Öºµ,oÑο»¶<‰a·È˜§U–žƒUæÀ,¡_Óõ*T~µs†Ežˆ˜'’ß°µ]t£ Qw&òKá°HD–@jÛ^\[NTHÛ‡ˆTë¯þ¶vm´RYõ­l;äJ¥¢»­ˆèúuõõ;Òl+]ô ìþTȇ¦Œq5ªÑñ©C‡ƒðÆÚßýÿ0¶^}v‹_X—òF³mWˆr|9QV¢s'¡D(îûú–Ö÷Zùr˜ ÅG×+¼sœmý(JíWŽ^ò¼*Dòy›$•~GÄóâ ¥²©âÚr"ñ¦ìÛ°©–¥?ÕúÈeécG;t¿GòKG)ÓÚr¢šô/œööV"ˉDäÀ¾½hä¸îú«Ö­G…Uš×Æqª‡¬§­êé`(#(ƒ=GÝz÷[PŠ ü ìz—;+¦QŽOú„/0îþÔåE#Ü?ÏeþÅ?û'Cìøÿü¿ÿ^âîÛ‚zn9ñ¼Z3ím/¹Æ7ïB†ˆÌ&«ÉLT9«Õ%«Qõö‡Ád&ªè’º345¾ _G>Ęǿh 2™‰*™BiÝz}¡í]Ö¤nÍõÚ1f1M«Ô¡£é4 ªO*ŒyV"rxX&sR¬/.ª¶ƒRë%3Q…y¢Û‹*›‰*•Ú‘¡wýUëֳŠCëuÈ}ÛY>F"¯É0ÌQ·þÛ÷MüاÝŸ:ÜaWÕkmg„/p>ü‡ÿ+á¶}û—ED繋YðKKKÊÿj÷5g[ß[9[NT«I¿;©¼ ÄóbØ-ÏS¥vAd츴nCð<1]ëÈРˆH_YÚ¾AÝ.j"2› z›®9…ÛAýjuëUaµæU?díÜuŒ78jíÌ€ŸÀ«Ñqíïïcôà1º›ð¥oÈÒÁ};yŸ<- yhÚ$«ôœÜ IõƒH¢BÂJÊ_[eú¢’¡ÎŸƒè+«O…o©nÝM§Yú´Ih(LÓ#x·Õ]µnjïõå oeßvî:Æ!ºÏ›2Ü'p jLÖô ‚Ñ#_žpCüݼ\޳9¼Äóbêà’ˆ¨\yž¼åȺõ0&÷ég´Ï ×é{~—Uÿv~}µ ³Ú¥\¾öýÞÜQÖÈòï»o«õ åÆ$˜ŽʦÓSP¡Üx „9»ñÆ¿HÒ®¿jÝÚ7ª4o¯CÖÑVFûœÐz_†>êa?mŸŠ;h|@øðXF_†øIѶ|*`©&ý.—Ë•¿¼ˆ9.—ËígHX 7¦D};“Ów?9ƒãlëQ/Ï‹¡…Ô™@ä?”¿…ÈÅeBñ2Y×¢Æz=6[ûè4Jo=S¯’KW–õ!?mŸx¾Z» "º¬©ÎŸ—ŸŒˆÊ„âåÁÞ¹ËÚQëg)ªYµžÈyžÓÈveÒ÷HµÆ±úÕ°;óVnöxx¾ÚjÿÞ¯^™ëisePò§?ûß5þ¾ÜÛè‹Æ×åâI¥ÙXÆ*'ÅVØÑxð¢Ád–ÿ½½h0˜ÌÔxÊþ4½4°(§ÏºV”•Ÿ©ö‹Py—Fé×ÁÙZÏ8Ì`Ÿ³0–)”‰è¢FsvƒjàØz`%ÕêúF2x^ »Ýn²5MO5«î'rê dUë£}¤C×P#óFû[ÆäöîýêÈ\g›ÿíRëïðøw½óðøwÊ”è€Æ"|éõÄñÐýÔÈÆÍ·;ÜýȇÑüXL c|5éw»c%I=~ä d½vÖóÁõé{¤7©¡®ÌïËÀï—Z溪{^ËÁáU&88ü¯˜ûpÏ£/ò³ž2¡µÖœÇR,V’¤Û~¢9ÉÏ^T}J¦æ¾O¼—Ç;¶?³³,ƒ}N LáMͬ6±èfO8%Ãb8`a•D$]—T³êýDNõfä© =[u öÈ\vV»l>vÖl2rÜÐï×€©%"úñR÷ßüÏÿE~õ?þçÿ¢šÀ†/œÑ·}õRã Œ.—«àhLɼí Z_6ž½˜2­è2¹ÖñÔÈ2YïìñŽ=‹ÙùÓFü’!‡µç! ýRŽ3.ú½<_•çA«f¥úRf×ùTP•#ª†ÚC=‰,¸Ã¢r©ÛÞ¯áSÛ _˜êßx{üÞ÷zÀqá©»ãäæÏÁÕSwïýy}“RUù©»ÿdéåûþûý7xê.Ü»ÇõÔ]¸…Ëpý ’¨ò¼×ç`N˜?`(à!|#5ïÇ¥2¶|~c2Úíþ«ú#ÃD„/åçá~ñåWz’}þé'x›!|<á ô_Ø}Þ<ú—ÿ|Y;Á¿ýw{x-|<àAÂ2¹#ð‡?HCüªô¿÷GO´ÿ:Òw-\uÓ¥C[?ÚR® 6VoPóÛÖÃ’J±‘,vkµu=:|˜w |xèW¾3}yȾýË¿B#Üû}ùûôwÆ¡ä5­¬TŽ/„2¡¸ãÎÖ÷7hòzX¾æÏúÊ…Ìcø ‡Çh¾ë?ʸžË îLN|{¥ÿ÷¿þq”A@=½¶œ¨ò|ë’cã8Iª¬-'«|ÿu7;C •[K»3‹E¨T*ä½¾°uý»WéõüUîg¿sýRäyžÄЩUR°X*•L¡´nµqœTO§Î «T´«ªÚ]å ·žèè‰d7l=tÐölËä1|X[®ô­Uw&ªõ´EIkôÅì÷›Ãa1uðÒæ3^OhnÎ\¹¾é,¥G5~þ&_œZ£ ½Žt€ö¼¹&úãÑ£Íåññ„RÙÈwXl „´V•_§¸;šR­§S6Ò§ŠkË 9ý êÿH?x)½šèú¦ÏSã Ñ:Ò¾íÙ4LsMîÇcÀwV}UyÃ-Ôÿq~x0ú·èodÚƒ]¢†]v[îâÇ|aóƪ^¢ØõlëJéÞ8àòõ#i–ûñÏUåç‡á Üføò¦ý×ýT^Z¼q‘—énNGhôÔƒ/»-÷…Í ö9·ÚÚdÐÎ;6ª|Íí}¤´g¯LêÇC³ÍïsUùÇùáAø·èo~dÚÝ»Ø6ò©€E^F[^Ž»5aèe·[Ýë8/l./Í¡úUg)=жu/__’$ù*Õ}¤-ß«¹äÇclW•œžq†§&C¯Sò‹/¿záýEŸ}3¿ϧÂOÐÂæ7=Ò/&?œ‰þx<ÂÏÉ}}x°â4ÜÇIžù-aœ¯»ò =VöÖ­øxÀ}xÆF_&$FÁ) ©{Ñ}Áܘ0_á „/€ðàNà¹/c€ð`b,--¡¾L<° s_`Â`ôåûâ˯Ð0žÆ|™@@ø÷iëÕgh7WWWSSS¸#ÃÁÍ#¸„/€ð`\aî Œ#w—0ÿá Àù—ÿ|Y;Á¿ýw{h%€ÇI×Í£˜Óéêâtƾe߯œN§3V’¤±:*I*ÅtÔJ’J­úëù÷½Žzt)QqkvÖjµZ­ÖÙÙ­b׋òK/ º`¤þÞ=ÑþÓ>SÆá䟾b|ê0nì(­k^ƒéº„Søþ×|>—Ëe³cŒy"Ùl.—Ëç7>ä?ÜÈçóù ÇÕÈퟭ¼ì[+޳õ­¿ž4÷ˆãl/WÎÂnw¬¤}ªØ7OOËår¹\>Ý¥Uÿþ¹2°I>ûm¹\.ÿöYRÚ º`Ôþþýí?4Ñ ýÕMÂ…Û5Ƽƒ´}âG.—˦U‘ƒº„æ¾Ã—ÁF/šág0]—êé Ó©ŒC%©ž:åÁå9PŠ5xœ±’Fæß²oã !‘çy^ -ÄUG#â¡ óD¶/úÖGÏÙØù}®ž6Ç¢_òúTs»Æa¦ÓÁŽ˜]~Éår-¬¥Î”Uj¯ÃÅâvÄÃ2¡¸Þ>Å>ïûîûZÑÈñ»W[K3DD3K[¯Þ‡Û0rÿý¯Ôþ¬¿ääí{zz:kw/j§gÅ”}l£cì:"íþJµÿÔ(HY+I*õí{Õû+}-ü-»Hs= ¦ëýjX*ÅæçÿML¹c)ælî¨Òk^žTßSý‡Æq¶ ‘Ád&¢Jíçð؆/*Ùñb¨àȦƪIÿB„Â{+Ê8´_NT„@$ P&/Ë{ÕÓÁ°È{"ÙlÄËá`º®ª¯EåA èÑzwÀ^އDž÷:¬:ë3pp½œ¨·5þ$W ×A…2B uRã0y^<¡p#fSV‹'’= Ïi×Áêðò¼Ø*ºâqú§Ï>¸þÏóŸÌ4_šùÉó´ º`ôþÇ_ÿ¨ýwK'ow·Ö}zz:kw›'ÎF<<_Uœþê“û´|~Ã*'é:"Cþÿ°»ÿÔ(Hy:ûÞŽþJg ÇísÏWOŠ—DtY<¡9»±_ CÇññ¿z9'ð|U.kgBsÇA/O½ÞÓ­\y^ÐqÆ(|aÌ]·Ê±'cžèö¢A‡JR©!"³Éj2ÑY­.I’T/žTó8¬DV‡‡±ÊIq¸17Iª×Ψ‘•Žú ¢­]G?Ed6®ë¦q˜Œyü‹†FÌž)”$©y,Ót3–ï]9C¹è¾ÁËÖ*í¦–fðÙ‡ñ_þçÚ·qòªvkݧç@§sßnÓ¿hhœÅü{V¬Ñ§õê úrwT§Qþ£èÕ_élaY«o–›Wî=õ4…Á>ga,S(ÑEæì†¡.Oêïé ‡Ö¸` „ 8…')|ÑÙƒ„Ýa‘ç›1ÄE­ÒžbøØ¢+«‘â8ÛúÞŠ…1¾šô·O7éP¦œþ:ê[íVÜš=ž?ݴビào~dÚ·sòÕÕhîÛºûÐqëjÀ®RwW /ÁÍZ@W5XþÍ®LµJk ]Gûœ õÚ™znðžvhåx(CÂJxш¡—[vÇ?œž6 Ä*mc’4mˆ”ŸÁ4}ƒüéV#£o'ï+Åœa‘τ⎣u«Îƒ¢‘¦Zôd¨»Øç}Éߟ“]9ÿý;ßüæ0ÛFïo PFuòÙÕhž}òÕ =7òQíUtwºè,hÔ}~ÏVrxIÅBœ2^ÇF#}ÿäO‰Díâ’NÌŽ!ã†A»hÕŠ5‡d0òòÀF_šw7ÅÔÁe÷ÆB¹yËpÎnä8ù£LtV»lÜzlûÑYíR%“™YÝ&ëzÔØüáÖ8(e%{¦Fçð6Ž¥ýðUê gHf“F†Å­ä³·*ã.öùç¯7å"ïo¾~>on;Àè×?0í¿^gMãd”Ï ¯Cšô=yêÊtžÎýœÕ.ÛÎâ*ÖÖôOÐÖØ}¯z5h ˈ¢Ø{Ñ™ƒÁ>'P¦ð¦fvXoxyR½é<´‡ôC*„/Œ¾ˆ‡U“~媼Q »Ýa‘y";>cã¬{¹"P%éw§L+ÆZšÅpc{÷¬|¢fn'~i»Ýaåð`¯ƒŠz+I¿»µ±×aöì•^®XÃî‚#Ú:|Õ:” ™Ž;âÝÑËqú»_ÿªòèûæiàû_X­Vë/_(œA·ŒÚ7lùTÀ"ŸŒò‰–ß° zòêïÊôŸÎÚN" î°¨<‹ûV¬×i'èî?õ·@Ÿ¾W­¿´…åY,‰&å Ç/6z!í+‘ÎC{„ºG½ÿ¾û…ÃÃÃ¥¥¥I\Î^ª§×–´²wÃeRÔÓÁå­ìmûŒ*ñþ_~µõê3|ÐaÜl¾þÍÖ«Ï4z˜/¾üê…÷Ú™f~;ыȿFÎwð»W ÒíW¼Q9Z…‡A#yúôé\4€3ú¶Lñ…7¥Å‡ß#HRéMÂŒ¾fç•ù-ttƒõƒH¢ªxd<sÍ#޳mäE þxŽ›Ç°ãSzA«¾¼ ñÈðh@øp‹ž  ¼«««/¾ü í_`2|þé'SSSøñ |I2‰¿~Ѐ¹/€ðà6 póH~@¤¼âc–^y¸UzG_¤zzm!”!o$›ÍårGv•ú IDATGaŠÄ‡XÖá&KB`9  |)¿ITyÞm<œžãŒ¾ëE5K1§Ëår¹\ÎX©#ÔH§ƒ.—Ëé ¦ëRkü†çÅÐB#ú‘¤z:èT®Å¥_@ø¢N’J… 1æQ]P¢ž†EÞÉf#^ ÓõëÜyñ„ÂÙT@ JâM™ãlëGQcŒyZËô”ãˉŠˆÊ„âåö„/“¤zñ¤Òˆl¬c•“b½94˜ǿh ƒÉLD™‚êšï… ™MV“™ˆÎjú÷€ÇéæÏ}¹¨UÚ7TjD†b(^ »Eâù!ö€ÇF×è ÇÙ^ây±Pî~qÚ$´oLÓT`Ú$cyFp>¿»B0‚ð…ˆ¬/W,ŒeBkézã&N)+IÇísB#²)DžæìF­DwÎj—r`ÔØ=up©3Öií _´pFßöQÔK•¤ß-ÿȨàhÌŸ5úv"&†Ýî°È<‘ŸQ+θ^¨’ô»åŸÉ»W“~åtî‹÷àâˆèýû÷Ý/.--a¹¸{qÈÓ§O±hL„/0atýpú‹/¿BKÀmûüÓOF¾ÑÖ«ÏЦp{6_ÿfjjJϼ[Ü<€± sèá Œ ý“Utß<šýšo‹uûx÷tÓ>pÝŠ[³«#Ê #½áËæééf#ø8ž2j‘w´.+xŒFróè|ß?kµZgg·ŠŠÃjµÊÿ¢1âòõª2Á­gÓÍWœ¦óýÍï§e;Qqkv«xºi'*n­Òöi¹5@ò'§»¤cÈd„YÀCuóÑ—óoéÙDDdŸ÷¥‹DD<ûiã_÷”xöSßvª;®°ožžnžïû?jܺ۬àÁºùÍ£™Ÿ¿x§ïæÎ»ßŸßYVð``êîÌRj~kÖºÆÓõ\®îòñ®<ëÖ¾¹{<ûÑÖO4‡OF˜`ÌÉf³©€…±L(~1DG¼Âq¶|>Ÿß°qÞP„/ðà  £LAޤz:u&X#"¢‹Z…ˆÌ&Ç};šñÁdîˆ-J±V„QŠ5Gqb¥Ž$vŒî´F}Z»+óœŸýr!$ò<Ï‹¡…¸b©•¸swùЂÎÖHÆi¾À3ûý^žS—DtY<¡¹99 á8›ÃKŽþê(êaŒ1Oôh½;¢êÞ]’JñåD…¼‘l6—Ëaœá L8«ÃÃXå¤X—êÅš³›Z¯Ø6òãùjÒïÖ±ày1ìv»Ã"³öÖ­òFÆ<Ñu«<R<©0æqX•eI­dþEƒ¼]’¤R!CDf“Õd&¢³š2q´™/»ó¼Z;¨cÜá <„øÅK|5ù&þ&aö/Ú^³mäåY-×~yîK.—ËïøŒ*£òM(…Jí¢oÄ‹awXäy=‰ûîÎq¶õ½ c|5éw»ïe~1 |€‘Æ//W,Œ‰¢èu¨Œmpœqq;êal¸H‚hÚ$´oLÓª Û§M‚"$øFúîœÑ·“ÏG<Œˆîf~1 |€Ûd°Ï Ô¸¿Ó$I¥X0Ýn‘çµô ;4qœÑ>'ð¼X(7òæìŠAš³Úe3³ÉÈq­ôòtÍè¬vÙ³8ÕÝ­ëQcÃŒ¿'h€ÇƒãŒ¾¼¯µ´6ÚÖÃ?¬-,Tyžˆ˜%°·½hjƫѷ©9Ãa·HÄ<‘ŸQùêId!Yå•óZé“~W’äù¹Ö® /†WN–I¿;Á<¿ÊýL¥¸¶ÝËñ…( +á!ƽ7#¢÷ïßw¿pxx¸´´tuu…6˜DR=½¶œ¨+CÇ"#«‰TŠ/„2äUýõ€*8äéÓ§}x€bN§Èó~€‡ á À´‘ÏoŒMeäGånà]€ÑÁÔ]@ø€ðá |¸º~yôÅ—_¡¥à¶}þé'# _ˆhëÕghSÐoóõoÐoÀ@MMMéydîÏ}Áx`Pè7à6`î |É$I¥˜Ó+Ií[b%IBã@ﮣžÓu½]:@ø#'œ¥âèV@?Ž3Úçè¤xÙÚry:[y‰å9á ܳ?lJÅË*_˜êé Óér¹\.W0]¿þ UŠÉc%I¿‘ÿ­øZæt¹\Îæ—-|ñxx ö9:)Öçx½xBsvC¯®ãºWQôíÿîì7¾@ß~h1lJ)o!É=K£sLæë´ÂÊÞºãÈ`2W¾ÿ‡áæ¿AO½xB¦i""²:¼™¾HÃÿ@?ô0h§AD­~C‡txúô)F_`Âèº{uu%‡Eè7`2—©©©­WŸ¡½@§Í׿A¿uúãæŒ…Ï?ýá Lý·› _Š[³[ÅÆ?fýûçm¯4^jüÇjµZ­VÅF¢â–µ©mû´*6”}w"+¸©=u÷»ÃoΗ–fä+ùqšÈGDDçûþUÚ=-Û»®õj›ïDqköxþtÓNDdß<µã˜\7¹yäó=?ü¦1þR<&Ÿ¯±ý‡ï¿óÍwEÅã´owÓ®[̶Ç·f·ŠçûþÙÙÙÙ­¿hÿo±!ÍöÂ9ß÷7Ç~üûçrÜô5ÿõêõ¸Qç(‘jÑÍÝUª+gŽ€‰ _h~¾¿i~¾¹Ù¾ùöYr¶ãÒ_Ý¥ÕÎ ¢¸µI[§§år¹üÛ?£×©"Ù7Ow?fïžnÚ)º¹{gh”|ö¶\.—ËåùãÕ4>A“¾½¿©-4™YJnÑæì¬êðu†5¥"šY øÒÇÍpÁ·ûÿ·wwam]g¢Ç_íɹ;7öä4cÆc2Ø4õ<EÄVŒ“c>|†¸¶ÕL†ô¸š6—hpmŠzž'™©Ç…ÆÆÓx&£ºœfd'”(ó‘3Æ–S4œ‹4!¦µ›`Œïìû€Ö>[[Ÿ FÂÿßÃ…XZ{íwíµµ÷«µ·$Oè²TÜ¿“zeýÚP¦EÂÉS¤fÞºÂ;Yu‚Å'/ôÊÎmyá5u8؃Ȳô%”¿Äf/‘f´æÚ®¹3˜ùº~íãí6.àÔ'šÿˆÜ8\ï]üU®Ëc· ‹Ó±;w^uuJ©=YzãøøÚõУØy’…Z»~“ãx d4ö’PøÆá@ 8Îì¤/qò¶Ha²ìEüƒÞM¦ë<µñS1öR‡·³kRD&»:“Ü·ÊãÉ3¡ë×>¯ròóñÙòñÏaÕQI˜ßͽ/,ƒû¼j+&gq[kÏišˆ(µ§c´:r«Èh‡Û¶ÛvL$ü”Ë.bwu ZwÙŽiJíéHï#ÍyÕžR·ÕV¯™Û‰d®ŽAc-ê¡Co­U:F]®ŽAë.÷ºè©š¬ÚîêþÜZõžãï ûw™EDnݺÿ„ù‡ª¾™ìrºÄuS-$à:ús~ðÀ¼"ânÜoäæ<$ÆêÕ«ÓŸ}ñ»­µ^ÙÔØí!wË(ýôÅîu±Á@¶¤/óúkà¸`ùÓ—ôÃ`–î§–é } } }¤/¤/¤/€ô€ô€ô¾¾¾ÒÒÒ@ú@ú@úH_H_H_é é é } } }¤/¤/¤/¤/€ô€ô Ö}éW}íÔ;l/éËáçŸ^µj•»q?Û dGú""·oßfc€LÀ½/€ô€ô€ôd«ûØ+OÖ}ÄýðóOguü` ³·³÷ Äô¤/È\ßûη²%Ô~󭬎 tövö^”„}é 2ÔûøÁ@ÓY¤/à@Iü` I_Ò,Ýè> ñƒ¦³ H_Àû<â½ò;Ë«¤/àÄ 4é @ú‚4@÷iÄšÎ2( }A6™žQ [Pׯÿê¹=?ýÝÞŸ}ô£-Kܳþ#›ëÏIì³ÉÊW@üº¿å±ƒïŠˆR»«wI"÷Ù\ÿž¦‰ˆRýðì¿>“g1¶Y.Ϲ‘} –ºýù´y+æ—¥Þ&KÝÙHäw­#waPÒ$9zú¿ü‹öO5M{wàÒKl‰?ý« ˆˆ>TÓQ§ÿÄåÙ¿®û¾pVÉžc—š6[,¢ôiÑ—$w¹q¦æ›?ýDönÚl±èúäü}ËðMÊl`3–͇ü¿=$’"ŒEˆ¥n¾m Ô7ŒÑuÿÑÇ^xaóø ÿñ/O¯±,,f£‘îÈ(gÌ«2&ò¥Ü»9(Àc’pŦ/ øûrfâíS¿?pô…JuŸ:óùL0\~©Õþèã[·lûû7þ9€&/Ÿ×_ÆÆÿåÌ¥#½Ð£išö^c‰½ÄÞ2<}±Õþh‰½å⥖{ËÅ™àtP]|õÑÇ·ny|ë–’W/™WgT3žÚfâˉ®ýöGKìß=3ŒüÒ/~:¦iUÇ^´*}:¨fTîî~ɪôé ®ÂÍ6;Œ<>sæ»oÝbj6Tÿo?]®R„j>¾uKë¥`LüæÕeÆ@Ïné šQ›ŽíÖ´Oö d8óü£oÝ ˜Eb*˜GùÐc¯‹$jdù;›pgˆÛ2qPâ÷=c GÂ6þÝf"4ˆ]ûŸïúcøå¶}é 25}™Ñòçÿå‰?î)ëÖ'¾&òIßʼnP¹ÿHƒOÓžlþMs¹q0˜IY>¯¿Œ&¸¹~¨íI¥”ÚõÃ}¾ôpPtMë~iè ãß/Î<÷£íÉÖáZwi=?üþ™IcÙHµNÿ P©ÏŽÿMé+ú‹o5l”ßxåí/¦•9ì/§ýÿÙ-Jí²[tJ7óXÓºûƒ/кKÓ>=qúòtÊò„¡Î7ÿàCïàE#ΞCG.M+süF73j õ˜¬O<©”thDî?òÍŸ<ô½Öl”w_:r9~‘˜ æQv½øpP’5’ MgÈÀA‰ß÷f‚klÛÒ´Oû/ܘžÑ§'†û?‘OöK£þÄ…>µ}ëWÂ/·þàËœþÁFùÝ"ö¤/X9³/_ÎLxßüýþgŠgTÎ#ÿó!M¼xÝ(ÿâª(U´&GM?°vˆˆL^¾\³/K0º<(¢ÔSÿÐPl´|iफ़ÚlUÓÖm;”úl`xb&UíµëŒÇ¯ó~c-Ÿþqb®µ${*æ±RO=»û«Æª¥çÃ˦UÇ”§5ô½bº™Q¿­‚³czéBˆ<˜c]»ND®~Ž4+L'¯“ MgȼAI¼ïÝŸ÷ ˆ?êj×4Më¾ðQ¨þº¼¯FõÑØñ¯X¸÷eŦ/ó]DyëÔ•1q>~*\reðâõo|ó¹þù˜ˆä|ev–8TÓÉÊ—éÞ—¥ˆ_×£Êãþ5Z0ZÓ•ˆŒ]»T*æµ$yœ|-QÒÓh*­Ç‰C½ßbѧÞyéï^ÿƒ¦‰¦‰Jg¸›1ÐñÛ*T²ñϾŽ\Ó~ýòŽ_‹¦%ŽT£Sçþ èlZ;C&J’—ÉÃÛÊÕ{}c×®/û{¾öwù×ë½ÿö«Ýç>¶ËþpÌ«u‘ûÒd¨™àü¦Luý†ïôœo ýu®%ôï«ßü¬ÿ£IGeŽ„/lë3’ÆcËʉ_×£Êãþ]³f£Èg¦6®û ÙJ?)ý¿é¹8rhÓ#1ýJ;ød«•'uZnøZ_—¯}çï^îp¢8“ư<€þ_ÿ·_ÓäÏóïW2£¯Y³QÔgíò~Ø8É)™‰Š® áa­³·lßagçØŒÎÔA‰ß÷‚–ðnß®÷o,?ñ°ã«O¾îþ ÿ£³}O>±?vàyÇà ÀÅ£•š¾¨ùý¼õ溿û_èÆ¿A•óWÛ¾¦iŸ]¸<T6ÛNÑ´÷/¨ÿzýð ¦ï’•ÏwÕ¿~Ïÿox-ï_Q3#jÚƒÛ6߯ô˜jÉ›ÿ¾¾·n½Rý?þ~÷dÐ( üìŸ3Á¹šºzýFhÕ².Ï´êØòä¡^ŸøLDÖ?ð•¤+Ê¬ŽŽmzærç­TeÓGÌ#òö¹É„‹$©“»!¼Ñ’7r÷;Ùò¡HŒݹmSòÎäA‰™|}K•ˆ þæ}£äë[ª4í3Ïï?˜—3“ökga}é 2TPééÿÍ'ßÿ÷kÿ{·Í\ø§”®Wêÿé¿T_ß]·^©¡WÊ>Úrä ¥DD)=¨ôdåóúËðøƒŸJòïýOu®PC¯”}럪xõ•§rã«%{µ–/¿wd»|úËï•=»«ôÙ]¥mùá&]ælêÒkÛ¿õŠO©Ê¿o ¦,OªÒ‹¿ór•¦ùZŸú·/6ˆ¦ùZŸ:6Œ3C:ÒAMóýÓ7ÊžÝUú­o4 l¨;ö^h[Eºyí_ö=»«ôo«^ ª˜í_Aé¹;Ö=(Ÿþò{eFIÂF–¥³› ýîF#càÞ:Pœz 3vPâ_&ÁÖ­WJ©[É *=øWûì_˜þMïµ³°>b°ˆÈ­[·âŸèíí­®®¾}û6Û(ë¼vêêgþ&[¢ízûW‡Ÿ:{ã_º>òæž—>”ªÃçþe–Ü pO ôRwv±v€{aPâûˆl‘"Y½z5÷¾¬LÙ>eÊ”ï\g/el `PÍdóŒ÷Ô@/bg—tàÕ‡¬@ú²2eû”)S¾s±í{çü>Ñ%¨ë ô½×Ù%ÜxõôË÷>/Ë@3@ÙQé,q¤/÷f_À@ÓY¤/ȶe–_½rõ•Î'@úr¯áâh:Ë €ôY¦ÿƒnâMg¬T|ï È8©¿÷…oÝY†ô¾¾¾Ò€»"Õ÷¾tuu±@¦Iú½/«V­bë€e”ì{_î›×ËŽ{_é é é }ÈÌôE×GÚÊÊÊÊÚFtÝxÜ6¢G?;ûT…‰±H|#ñ›—27~×$ deú¯§©=Ùi^©Ê–¾¾óçÏ÷õµTIOSy½wjî„ÀXªÏS³A©/]¾b±8Xl±°‹°ÓMó5ÕŸJ™dX,Å ­UšvåäÛtÛÍÉ/ˆÉ-Bs=ºˆŒ´…&iÊÚFbR¯·®¢¢¢¬¬.’*éú”·®Ì<dn³´´éGåM>MÓ4_Sy{dêÈT9vqѧ¼uá‰"æiÈ®ô¥ª¥¥R»Ò¹¯}®¼ÄVR©”ô §{¦ û4MªJŒ)Mó5 —3"SÞºfŸVÙÒ××R©ùšë¼Sæ\jHšûZ*Í©R }ßɱ¢š–š"éi2Åi´98Øújk¥RJU¶ö7ÄϸÄ/®ë#íûNŽI•1·Ä< wSÒoÝííí)Ù¹sg’¼¤ÁSsÕÙÙÜVÒ×`[Œ”Jó5ïð‰ˆÚPsºÁ&¥*[l"¢ëSþ¡1¥ªJl"RR©zz†üS{÷æˆÕœ{sBå=Ã# 6›†{D¤ ß–_ 2vubJ·E*·Î±®$[\Ó|Mõù§ïÍ ç.ñ ,Luuu²ß¸/õbæSüŒ@ÎÞæš¡}'›êóO;爥(Í\áÆÌ‚ÄMÖܘ‹.›¸!’“NJ¤iéTžsñ\KqÃéW÷¼r¥Ó¹£³²¥ï`±%~‹€…Iý»Ñ÷¥^8Í_>²Xr÷o(o:Ùâ)’‚’„•Œ‹Aù¹ËÝ(²&¿Hd,”(T¾&¿HÔXê”hŽÕÅ,."–\ljÇH[Y³Oëij/éo(¶Xø¡(î‚EûÞ‹¥¸áô¢±±±DÏêúH{SO:kÒI•ìÛ‹4Í7¥DEÛí¹³‰ÅÕ‰›Q©R¤¾çìÍ9R"cÙ$«K¸¸­¡µR©t¦”Àb¹oÛ²ä:Ž·N”7™’£ð],"¢Š˜o¹¹Ž-eÍÍ;|"ª²å„#×üìPKyçÍœ*…êw:+:CW¦lq9ÊÞæCûNv:wœT•¯žßš`uQ‹ÚË›|š&"JŠ4/N¿@Z)‡ˆÜºu+þ‰ÞÞÞ„·ÌèSÞú}'Ç/Y,º>Ò^ÞÔ#U ?=²H²ã’Lv9£O·“]Ng×õ«‹ê—Û?»ÍùÝÖp…dg©è •=57’Î9oòBoáñÀñ£ôæX¤Ž‹ˆÃQÉ_üƒâp˜ûã9ZØ9Û]Ñ$í©F‚Øü©t6…rt$LRíÕá¦bVšhïšìrFµàü÷ëñKÝùN8GÀ?üí=±«ó»­i&ˆéËý®e} IDATÓ|CÒÜç©)’±“ob¦aú[+•Rª²µ¿!f6˜‰9þ|Ÿ§fƒR=Mí©/H ÷ˆR•%¶ÏNyëš}ZeK__K¥æk®óN% /aHö}'ÇŠjZjФ§©=`±äî=ÞZ©TOS½wJ×GÚöM8;þ8y_RÌBÅwpÊ[×ÔSTãé;þüà`ë«qͦîNÓpÉààÿyf{‘¦]™¸!"rsâjÑv{nòüîÚñÆî@ ÐÝ8^;{„ôÖºÄ=:j¼¡ô»]â néõ&lÃ%îÑÑ@ x÷Ìžµ¼µƒ¥¡·Å5×v…O\ÙïÞu­f4ú-l(sµÉ.W¨Z‡Ô&8}ÌÝøcbwvìQ{:Lï•-’W]uºõ{ŽÖT[¯Î[k¼ã÷ÐxçO~â, ¼{(²ù&»œë»Ž—Özç~¡$ìé<ñ{Ž–ÚÅ^êðΞ·ãRZÎ_üƒRZ“H”šóˆ¨@RõTD,‰bK¹k%Yiz{u¸©Ø•&Ø»òª=áÇ“]Òáyvm²Pïh'Lðÿû¿x1zkNvuŽ7º«ó87K“¾(UéÜ›#9ù"Ò3¼+ Ʋ ¥ëSþ¡±Pfc+©TjlÈ™Š˜3<#1)È·åˆÈÕ‰)]·XŠN(’±NçŽrOþé[š™\óŽ n|1uЈV¤ ?gÝim°‰HŽ}û¥z†"rcB¶ÛsRœô½Žšê<É«®1!žÈ±qòóñÂuyª“pþ?R9o]¡éͺéÝxäd–°rÂóP8†Ùj“zeýÚgÇôq<|áe²«s¼ñÛöd«ÛÔØí²«øø÷îðcS;·åEf!sï‰{:ŸF&»:Çöè~,zÇEì¡üÅ?(¥ ¹äßÓ9‚K²kÍ‘ÊͱW'n*I¯í®©uwu¹zw:wÙ[uïËv¹_†æQ '™$/ÀÜ–ákëô)oý¾“W4M4MÔ‚›¹11]06qC$gžsHÍ;|¢iƲ¹"–\Gó!gç•Ô1™\ÌÄL¢ÆE»°î䨷»:1¥¯™¸š4JÛõk˺¹Nnkí9M%{J³rL$ŸÛm;flÒÄË.¸ñ¼m;Åua²º:oòB¯ìt¯MººP2÷8daiÞoóù4â÷-¬5êçU×Z=þê´oÄH¿ãFþÒyarÝ5)u‰ Þ#Á‚tÛu¶åä˜ð8'ö5õ¤¬l±—T‰Ïç4Ç<¹&¿HÄ|Ê/Ê_3@Ö䉋ËM›k¾$*¤Èâž³Q!Ú÷M8ûC7Íì3n[IÑ—ó(Q4VÝHâxæìNŽ}{‘ô ¿=QPb›ãèðsÒ“]I¦·ggÒ'»:½‰ß¶n ͺO~>>[î½3qvî•3\š/Éuœh©T¾æ;š}ª²å„#w^!‹_ét·­üVÝðÖ• —ô,¶XrÇ ëÏÞ”œd}I6c”°ƒ¹Ž­U¡^”•µâšM·;FþÒ#%sÝ™cwuÝe³Ùv™?8WGj­6›Í%;‘ƒºùc®…ÇvÛl6›Õ%;ÞZ«û’ˆˆ££{}§ñyŠÎõÝ¡ÆTö‹Ø]Ýë;­s~yF^µ§t0æk6æˆ$QãF§¬(¯ºfz(rÓI¢Õ¥‘z„Wg³ÙK;m±7b:©F>¾ë%öL×Ù•·$Ï«N81“Wíéð] ë»çû!愱%ÛµfŸ W0‡šÎ^¿Ò½6fR\öð«ÀH•’nÆï„霷mçxmm‚áôl+"·nÝŠ¢···ºº:ŸMÂÝdÜX3VÕ:p°8a…×N½³ŸlœìrzÖ¥w9Åï¶–Žºîùm’í0Ùåt‰Û³BßEOv9wõîìö0Ipwö&à^ã:úswã~#÷H‘‡¬^½š_œÎªÜEŸ:ÛròЦU•Ø£=Ó}ˆjOÇh5[xQ¶çC‡Þ]±'÷¼jÏè¶.§Õ*ä0‹¹çÔŽ7vs× 0¤/ÙÄbÉuœp,Z{v×è¨k!Kñ1ávXØöÌʆTw‰÷%¤/÷žÛ·o§ÿ›ã¾`™~þéU«V-äöH_°\¸á°²il@ú@ú@úH_H_H_é € ¢ë#meeÆÏ˜ÛFôèggŸª01ÿ º¹‘øÆÍK™_–>2âé €¨§©=Ùi^©Ê–¾¾óçÏ÷õµTIOSy½wjî„ÀXªÏS³A©/]¾b±8Xl±0¾é €•ø"×|Mõg§R&KqCk•¦]9ùv Ývsò br‹Ð\."#m¡Iš²¶‘˜Äë­«¨¨(+«‹¤Jº>å­+3Ï™Û,-múQy“OÓ4Í×TÞ™:2UŽ]\Dô)o]x¢ˆy€ô@v©ji©Ô®tîkŸ+/±•T*%=ÃéžéÃ>M“ªc DÓ|MÃ%ƌȔ·®Ù§U¶ôõµTj¾æ:ï”9—’æ¾–Jsªhßwr¬¨¦¥¦HzšLqm¶¾ÚßZ©”R•­ý ñ3.ñ‹ëúHû¾“cReÌ-1O¾È6¶OÍÍ×¼X÷©hš¯yÇŽÍ>µ¡ætƒÍ(Tª²µÁ&"º>åSª²ÄJ‰Æ†ü‘¹¥*{sÌ©’® ÷ˆHA¾-¿@D®N˜+·†ÛO&ÅâéL; }¡rö6×lP=MõgoÎUµ(Í\U"wÌ œpä&˜Õ¸11]06q#­”¨Ù§iéTžsq‹¥¸áô JiW:;v,ËýÅ–¿8 ¬|KîÞã­åM'[å’íöœd‡ŽÙ£Šéhý8ö¸¾`ÎãÐÞæ|ù’qdio‘æþþóçÏ÷yjääÛácJOS“´ôõõyj®zÚÚê‡Kúûû<5W›BS87϶L8ûÏŸ?ßß*Mí ýnßAÞ–+01æ_nÎf/É©Ä7Ò¤“À8ÅsvÊt”±XŠžpä9GN~ÁlÝ¢§Š-ÉÉ/»ögÍáÇ¡¤gÊ?$ùkDDÄVRÕ3Ì)`E2_?2²ãp‘üБÇ ¤é>6âŽDÅ Îáú³7ï5SFÚË›|š&"J*KBÅù9‘*æÇ†cc>çŽN‘襬¸·=öíÒâŸÚk÷8çÌuèHãH_°à ¦ø s¸îìMgäýÐÙú&ií?_lÑõ‘öòáôšY“_TÕr¼KEÀ½’¿d¨ äDø%¿ CÇ ¤…‹GHÌöÌö¡ÏÕÙ÷CE¡éÜ›WÓÌ,¹öíW‡¹r Ü ïy,¹öíÒÙÜYPb3Ïyè¸:q3”åôpÜé á`”ëhÞ.c¡JqCkA§sGEEEy‹l¯êi*OëóÕ¹Ž%Ã寇ŒðÉ#`¥Ê±oß *ÍÙKêC‡ÅRÜÐïœØW^^Þ"Í­UÉl[$8I‰È­[·âŸèíí­®®6¾ðûµSï¸÷óåßÒÇqÀ|"9n˜ó«W¯föd™toݽ}û¶‘Ç Ù‘¾¬ZµÊݸŸí M®£?ç¸`^ô+sñd„ÃÏ?Mú²Iú—›çÿµu~·­þœñpÏñ€Ëž¨†µöœJŒ”z¨±ÛS[."JíéuÙÓjæy¨²–ŽÎëp²€E,y¦/“]ÎZ9>°‡^êήPjÃ1›„øÝVW×¶P-G‚ä$Ý6` MvužÓ>ïrÚ9o~üž£…‘üÃîê(<êñϱŒ½Ôññµë‹Û&€ìJ œV›Ífµºý³áÇÆ›–ÉH¹Õf³Ùl¶p‘ßmuûýn£Ðí7J¬áDZ"-Í@¢:z ŽsV^úâô:JíÑ©‰wÐ?ךñF§}QÛUÉ‹ëZÍh íZ#È«ö„OvuJGøú²KÜ££@ ðî!™M#¼µµr<¼{h¼ó'?q–ŽŽÞ=4^ëž­0XÀh͵]q)J‚¿‘*µsVbú’>o½-Ä%nÓ¥ Ùò”oƒ¬œìåB¯¬_÷æÄîêZwW—«wgøýÝ9Xä­+œmaSc·Ën~üûwøñl‡i7>ýH@’÷YvgãxgÂ)d‰~q:tËd—Ó³./¾À=ãúµ?>·ÛvLDD”ì) ?aw6vî:ZØ1j:FÌÞàoªYh:Š®Ë[´L«õ-¬ Å‘W]Shõø«9T+&}±—:jý.{äUíô:J]ÉÈ«v¯wºýöÇy· «¬]¿ÉqÜ“à à÷ôîlt}ýOv9k¥Ã¸ßï¶.ua“]^í“s¶s‘Mq/ÙæwñÈîl4]oö»kcî[IœÀt:SÍÄοMY$oÛÎñlüîZ©©®v™nG¹~íãM¡«<“ŸÏcÞÚÈÅ踻é’`J£Žv¢ñ`E¥/Æ wõ¡›W:×wš>ä^–¼jO͵]ήë"æ{_foIÚ&€‘¿T{J­Q¯zcžÅe—Ð=0Æ[»«£ðØn›Íf³ºd§Ã[ku_Jk ŽŽîõV«Íf³v®ïŽ;‚$`ö•øÓÜd8‹ˆÜºu+þ óU?|[c²Ë¹«wçâ~GËR´ `9¸Žþü®üàß5¬œƒ†ˆ¸÷¹‡9‰±zõê;øäQ^µgÔ-.«Õ¹xïQ–¢M°²Üá'òª=£Õ‹ÒR´ `¥²»F™yH_’˜×ÏXÇ ËŸ¾¤ÿÖ þ/Nkl,]H_é é é } } }¤/¤/¤/€ô€ô€ô¾¾¾ÒÒÒ@ú@ú@úH_H_H_é é é } } } }¤/¤/±îK¿êk§Þa{€ìH_?ÿôªU«ÜûÙ^ ;Ò¹}û6 dî}¤/¤/¤/ [ÝÇ&Xy²î#:«ã½½%¦ }AæúÞw¾•-¡þó›oeuü` ³·³÷ $ì#H_¡þÛŸhÄšÎ2( }JâMú¾`é@÷Yˆ 4eP@úÞç?è•ßY^} }  ` I_Ò¤yºO#~0Ðt–Aé ²ÉôŒZØ‚º~ýWÏíùéïöþì£m±XâžõÙ\NbŸMV¾â×ý-|WD”Ú½X½K¹ÿÈæú÷4MD”zè‡gÿõ™<‹9°Íryμè±ÔíÏw Í[É0ç¸,õ6YêÎF"¿k¹ ƒ¾ É(¸ÐÓÿå_´ªiÚ»—^zdKüé_EDô™ šŽ:ý'.ÏöøuÝô…³Jö»Ô´Ùb¥O‹¾$¹Ë35ßüé'²çØpÓf‹E×'ÿãï[†ßhzTf›±l>äÿí!‘a,ú@,uûóh#¥¾aŒˆ®û>ö ›Ç_øyzea1tGF9c^•1‘/õàÞÍAî“„+6}YÀß—3oŸúý£/lTªûÔ™Ïg‚áòK­öGߺeÛß¿ñ‡È4yù¼þ26þ/g.yì…MÓ´÷Kì%ö–áé‹­öGKì-/µ”Ø[.Χƒêâ«>¾uËã[·”¼zɼ:£šñÔþ3_Ntí·?Zbÿ`|ä—~ñÓ1M«:ö¢UéÓA5£rwÿóKV¥Oul¶Ù™`äñ™3ß}|ëS³¡ú|û¹èr•"T£ðñ­[Z/câ7¯.3zvƒLÕŒÚÜpl·¦}ú³_ø#ûÀ™ç}|ë–ÈÅ,SÁ<ʇ{ÕX$Q#ËßÙ„;C܉ƒ¿ï[8¶ñïþ3¡AœèÚÿ|×Ã/·¥è#H_©éËŒ¾?ÿ/OüùsOY·>ñ5‘Oú.N„ÊýG|šödëðošËƒÁLÊòyýelü3ÁÍõCmO*¥Ô®îû𥇃¢‹hZ÷KCOÿ~qæ¹õhO¶кKëùá÷ÏLËFª}pú…J}vüoJ_Ñ_|«a£üîÄ+o1­Ìa9íÿÏnQj—Ýš Sº)°˜ÇšÖÝ|ùƒÖ]šöé‰Ó—§S–' u&¸ùú{/qö:riZ™ã7º™Q­Ç`}âI¥¤ûC#rÿ‘ožøä¡ïµþ`£¼ûÒ‘Ëñ‹ÄT0²{èŇƒ’¬‘Lèl:;@Jü¾7\cÛþ¦}ÚáÆôŒ>=1Üÿ‰|ú³_õ'.ô©í[¿~¹õ_þàô6Êï± }ÁÊ™}ùrfÂûæï÷?S<£rùŸiÚØàÅëFùWE©¢59júµëDDô`òòåš}Y¢øƒÑåA¥žú‡†b£åKŸ(õÔf«š¶nÛ¡ÔgÃ3Á¨j¬]g<~ý›÷kùôs­%ÙS1•zêÙÝ_5V-=^6­:¦õÎK÷ú4M4MT‚8ÃÝ̈ŽßV¡’ö•päšöë—wüZ4-Ùp¤ªå˜:÷g@gÓÚ2qP’¼LÞV®Þë»v=xÙßóµï¸Ë/¸^ïý·_í~8ÿó±]ö‡c^­‹ÜG¾ CÍç7eªë7|§ÿà|cè¯s-¡XýægýM:*s$|a[Ÿ‘4[VNüºU÷ïš5E>3µ°qÝÿXÈVz´øIéÿMÏÅ‘C›‰éWÚÁ'[u¨ûk—ïðÃÆINÉLTüsUklŸeû;;ÇÎ` t¦Jü¾´„wûv½cù‰‡_}òu÷ý-è{ò‰ý±·È;V.­ÔôEÍïoä­7×ýÝÿz@7þ ªœ¿Úö5MûìÂåÉ ²ÙvЦ½yDý×ë‡5Íx”¬|¾«Îðøõð{¾øÃkyÿòˆšùpPÓܶù~¥ÇTKöØü÷õ½uë•êÿñ÷»'ƒFIàgÿ˜ ÎÕÔÕë7B«–uy¦UÇ–'õúÄg"²þ¯$]Qf ttlÓ3—;ük¥*›°n½RJmÜòHNPéÁ¿úÛgÿÂôoz¯…õ+€EDnݺÿDooouuõíÛ·ÙFYçµSïT?ó7Ùm×Û¿:üüÓÙÿ²Ðõ‘7÷¼ô¡T>wð/³äV€{j —º³‹µÜ ƒßGd‹yÈêÕ«¹÷eeÊö)S¦|ç:{)cƒj&›ïd¼§z;»¤;¯>dÒ—•)Û§L™ò‹mß;ç÷‰ˆ.A]g ï½Î.áÀ«¤/X¾÷yY~šáÊŽJg‰ }¹×0ûšÎ2( }A¶(³üêu«ïì¨t–8Ò—{ À@ÓY¤/È2ýt?h:Ë `¥â{_@ÆIý½/|ë.È2¤/€ô€ô ‚OÍáµSï°¸;Òü‰MÒ—¹¹÷³Xj·oß^µjU:ŸzæâÈé_ñ }Y†ô¬ÄôE×GÚÊÊ*LÚFîèG1ŒËÊÚFt=ò´iþ7Yüw²º…ò»­Î®É„%~·Õí_„öF¥5²6}1(UÙÒ××ç©Ù TOSûœò-–⃋-–»ÖÕPü}-•wÿÂM~>¾iç¶¼”%ËÔ°RÒ—œü1O]Œ´E&0FÚB“em#"¢ëSÞº²²²:ï”."ú”·®Î;ž‰™)©¨¨(¯÷\5­ÊX¼¢¢"ÁœŠi¥wA—3zÊd²ëÛßvÿÈêöûÝ6›Íf³¹ýÆYß~œ8 ˜¼Ð+1ÙK\IxY«Íf³Fµ0ÙåŒ.œìrZ­F1S:]Áôl¢–ý°ZÝ—Äï¶ÖžÓÎÕ’ÁVNúöišT•'šæk.1æQ¦¼uÍ>­²¥¯¯¥Ró5×y§,–\ûö"M»2ä¿)"7ýC²Ýž7ãhoòiZeK_óöèò}'ÇŠjZjФ§©=0´i¥óŽÿæÄU‘Hüiª®)<ê1î=G kJÿ»xkkåx x÷ÐxçO~â, ¼{h¼Ö8ñÛ]£.û‚²¿»v¼±;t7†ñ»w]« £¡fýn—¸GG@àÝCbŽ/Ä[kT0=›¨e¿ÛèE 0:êzLì®ÑŽ=jOGlðdaú¢i¾æ;v4ûÔ†šÓ 6£P©ÊÖ›1SâSª²Ä&b+©TjlÈ?¥ëÆdÍØÄ £BA~NL³º>5qU”Ú¿fvjǘhî‘‚|[~ˆ\˜ ϵDV:¿®ñ;;ǪZÏoa»³q¼34…1ÙÕ9Þè|LD65v»ì"’·®ðã߸Ó5’vö2èuÔTç‰H^uÃ;è–F%v—§:´hâ•::Œ ³Ï&lyíúM¡G¬´ôŸwäüùó'¹ ¦.nLŒEŒMÜP*#=ù11VU’ ë0ŒOl"9G³OÓB­Ý¥*[úZŒ`æÕ)oÛNé½0I9ÖŠˆ®›Í<Ìï,{™‡Ð• ›­Þ»ðFòª=Rk¾ìÀJI_æèa+¢MIDAT²&¿(º (ˆÅR\R%šænî™ß%›5ùE¦œiqîóµ=s HÓ|ž³7ç’7. ù=G kªrÜaö²vý¦Ø»œµÒ1ãŽ;Ú,vWÔe/îô%|›‹o8º?¦(|›‹‘×ø|¾„s/³ùM tLLƒi¦‘vBõ£ïщÈÙÛ\³Al1î&ž×9ÞÙ8^o«ot.è¦ë×bs•ø’ЊJ^ãJÕdWgø’Q޺˜K<ׯ}¼iýZ#“ù|<½.$j9¡ñÏ'yuVzú""¹Ž-•Ê×¼cG³OU¶œpä†2ûö J…înI2%²A)_óŽá’ÖJ¥b¼Òé4ø(…⃞š F}#†ø{\,–ܽÎ*M»r²å¬q3qOLèSem©'`ö¨‡Òž/‰þä‘p.2j1ÈP¹uëVü½½½ÕÕÕéülÒÊöÚ©wå'ýnççNù¢S| ÷2×ÑŸ»÷¹GŠ;sœe-ý‘§dÄDót—êëóÏÿU Œ¥ÖRu¶ËíõÐxUòtd;ÿÐyÞdF›ˆNGó$ÏG¿š3úmò õä}ÈkÀ‡›á l¿*’W½þ6y+Q0Ý=c›yÒ³;Û„ó¤ã‹O؇ß°o³ÕµciÉÂèNºÁbZÙ¸³ìCÎ[>ÜBwKôGæžÏ‘°ÂdM®ÆñÕæ']xËÉ›?ÞòÖ€;.¹±‡î–ØiÀbþ¸Û%9i2t?ÁÐJ&ÄÜæ ©{.Õèðæª‹噴ʼ!yM[Û›}¯&¿ÙÌNë¹½5`ÇŽw£¤_T–Jr%w×3ò ³ìUþ~Nˆ¹œùGžá2û[vïþXÝÐÝ—ÉÙÆ›™tÉS–ã»ñЧ?¹Åäü9_ö¢·ìÛ—hÆŸ3 °fG‡ ÙvÛò‡Cx8°]ÎÀì±:U€ª@Õ êöe½Ï««ëÚ@«,Ë­VÝMUUþš¦)Šâöß‘yœX»œs˜ª`T€ª`UwúmèÇ…}}}E/ú¿j_#«Ÿ!ggž\Ä· 0$ëØ[É]¯×Uí÷­xþóŸÿ$“.Lïÿ˜\¶?ÃC[6ìÆô3°§Žî”Ãÿé%GûFfX2ÛrJŽóu§„éÑ”CjŒð00Ø–\¼¿Åñ•ï ê².úñúè·a`¯Íµî í“K=*ÔØø°YÎpW4n×êÿ…‰íüÑš£y2˲¿Åñ•ïðɲÎÀÞ",*°‘,ëž«Í9o;ï¹Ý(qf9‰ùÐJr+¬ðÉÝsŠx¬êZýáºdð=ºžÙݽ®nU ³³È=¨…¤›°ÉkÇìÑ3!’ÞØUÝS«þ.KTÝì’·V<¤=×ùh%/M›7Ô&„£;àIœížlm_?ZcÑR9cuÝ˼õáîuuCë|t[ÉuF+éO¼»ÔaôF]£z@Ò×ÚDÔu]UÕ&éê/æ¶åûûûÖEMÓŒÌst˜æ*¹ðZÒËSuóPr€ªÔ4M]×þîZïuu7EQøhmøººñ] øÃ!Pu¨:TÁŒl:™ÏŒ/òòëêBU õÇ„9»íÒŸ9Y?ÑÄä¶ú“59aëCï÷úG÷!¹é0ø@[} ñH3 ØCëŸÿÑ­÷̉×äªîÆâÐè) ê^a“ç\r¯æVtÒà=U—ãBþpÑ’KïÄ2Ìèáëêrî yjÏ >4gtš²¿†Y꪿ÎWlh–›ðgäo9¨º;Ñ|[4€ÍÜþ˜?çÝ5Lk—üu&¯~{rë#‡ñî>̲i`¾r²àr¹œÏç¦i†fðŒÜµo¾º®«ªr”`¾¿¿oÿR·éu7Âyî–tkë9(ðiŽÁΈ9Pu|¦iêºv@Õ±aeYEáÒ:Pu;dà X²,UÝtÆ®€5hš¦(Šœû^»þpàVeÚ)DU°ª@Õ êPu¨:U€ª@Õ êTªU€ªPu¨:Tª@Õ êPu¨:€Ïtœ°Ìétêþx½^'o¾]Õ3kà0a¬.tX«y,ïøäòÝa¶nÞuƒïö:“¢ë/Õ¿ÿ:¹Å»sìÉÄëêN¿%S¬_Q·×݉Q«'Ýø> mqòœŸRuÑà\N! ™QÈ7å l4â†âïËߢ!:@ÕÝo»îÄ%åoÑà°cSî͹â-g`l|ž‘«îr¶˜?'À'V]¢ yÔNéN?ŒŒ…9“ó$;>1¹wçØ“¯œÄ¹\.çó¹iš…wnɫ뺪*!€·ûþþ¾eI›^ùæÃöà¸æsª “±:U€ª@Õ êTªU€ªPu¨:Tª@Õ êPu¨:U€ª@Õð¸£C4MS׵㨺 +˲(Šªª @Õm[Ó4ù3Õ^§,KU·{À+4MSÅCãMwK¬Í´S‚ª`T€ª`¾[ât:ES®×ëóûÑ®v–U¨º\!¿N¿=_czà U—ÔÆëf_ÎÄ‘Ùn?&m7ÌÖ}qøÿQÀ¡íæÌ °f³]W’¨[Eù]óPÒM^Ï´9¶]u§²‡²B$ÏÓ¿Ì]2¢|²§®«ëbåk=:6×€Ùëö`{UÚ.º[âuCks Åüvé%Ï« 'g'Lì߸pw%áW™“ëÉŸ`‡U",¼èYþÄœM$çv gbrgîÎ °f_9Ér¹\ÎçsÓ4+3KFX]×UUù Ìîûûû–mzåg˜o ؃ãžÞŒS¥€ªãaMÓÔuí8ªnÃʲ,ŠÂ¥u€ªÛ¼õß>|wKìAîXÝÏσ°íª;ŸÏŽÀæ«Îd+çº:U€ª@Õ êTk3ýÃN§Sûâz½M`Æêöàøü*N§Óõz uÝéáu<asíô䜪.v¹\¢)¿~ýº›zÝêê–_æÄnÉEsv3.¹xrŸ¶è|>ç|Ñ×1uÝ껕±Kßõ·‘‰ýA¸®œ ùîZ`~~~2ç|à ì„oƒÚ+ÔXw€-9ñÐ;ÙúІ¾»ø0ÇYÖ22¨–œ2.„]41*¼»\N|¸%îm/wë¾èFXrâ´ˆ «ø4_9-u¹\ú—éE·)tÇÛFnM61Z§{`€‘̰™«nyѱPuÁqCï*ºsBÒl²ê”Àß êPu¨:T€ª@Õ êPuª€õ::Àž\.aÍ~ýúå €ªÈò÷ß;ëô×_5Mã8€ªÈõçŸ:«R–eQލ:€‡UUå ¬DÓ4’TÀS1á ¬A]×"àXU€ª@Õ êöÅ=°ðr§Ó)¼¾^¯ëÙ¥Gwæ¶T»È´Å3W>×Þý¼ëbè æÿõxÅaT0¥ŸN¿­á_å ûðÒ6íW×KßõòCop=žÿ#“ž ê`ÏIýSפ0sô/ý„’3ÏÙïžîÄðc›ã‹'·8ˆÝ•ìÆ‹âräí¿èèüõa7r £)ïÀë¾/I+áº:x›ëoQtÏrFg<3gj—䜡 º¿mgîNL†iþßâøÊïîí,Ù½ýñjÉ\|ÂÌüS[Ï_`Iª>ÝÈ?ÒÝïþ«™ÿ/hΜ!DºÕ8˹ÛCÑRQÍxØÃ›Ê< sõâìÙô¢CôäJ:PuÀJ»óÿHG·M޳i›º_á™Á°hñçßà¶L‰fçº:`¹¤ëþóß=Û;-#&o=º/áùÎû·vÀ{«ƒ—ÿk×½X~™Á›…ÇÀ¦me(2ž2ûÞöW˜\ÿÈݬ!ã2³¸ÿ×ãðÈ©a:T¼'ìºÿ''θ­G¯·ß½d‚Œ,þÌ',ûüÚ™þ%ŒCïþá½ÁýM>ÓW·Èår9ŸÏMÓ8^ÀžIœÛçÕßÿýçŸVUõü§Öjck[X×õí£}ퟘ𱖙a®«V+£Vð8U¬ÈÚJe…å$æ€!®«Pu¨:æâº:`Ÿš¦©ëÚqTÀ†•eYExšÀ'pØ¡[Ò9€ªض¿þúËA>3°À®üúõË·ŸÉX€ª@Õ êø×~î–ð¸Q`7ʲüܪ»ñÄQ`š¦)ŠâÑ;úX—ig UÀ¨:UÀ:<|·ÄétЦ\¯×vâíÅ{|ÛÖ2ØsÕµEeÜb™ÕoJs=Ù$D^ÿE?»e62±¿†îæ ×t½äººP]§ßºeZ­Ÿkɉ]Ë |tÕu«+§ÀœWxÒ{¾[BÆì¡êœB˜×;ŸW×^u—3›?'€uU]÷.ŠðãøÄþUz: ò•s2ôr¹œÏç¦iÖüN꺮ªÊŸ(°ußßß·ªiÓ+?Ã|cÀ¨:€=8îéÍ4MS×µ?T@ÕmXY–EQ¸´Pu›·òû9^ÇuuªUÀ›«îÔ1mñ—.•Ü·ðãäÝØUÕ…ïõšöý] $]w÷žÙ(ÀV<|l÷«Z»/¢rêßíuôâÐù‚×iK m49çÐâÑ{éïIÎî"9‹Ï21¹Ýä~kæëê’xÝ€‹rpdØod©‘&çjÐîFs »‹ä,þÐÄë?úsF‡åðÄ@) êîÉ‹iãI9K=Ó4ö*YŠ™;™<#&vcq®|”U<…x=NOîI´xfëž?MN< ŒÌ­ÿˆªîÿêg%‡ãÉ=é/Þ?ÍšœÞ†Ž°Ÿ.çšñ)!ëyàÈ“{/¢s¯6ÜÐÎxD 0½ê½‹À’W†$KÿÒG—ß“üŧ­êÉc’31Zgÿz¾Éû ìÕWN\.—óùÜ4㵤þÃY4|šü ;:X«Ý9!éU·á°s€—T]]׎ÀK•eùòª»©ªÊ±x‘ïïï¢(½¥á`U& Ô©:€Õ™vÁ›ªØU êPu¨:T€ª@Õ êPuªU€ª@Õ¨:TªU êPu¨:T€ª@Õ êPuªU€ª@Õ êTªU€ªPu¨:Tª@Õ êPu¨:U€ª@Õ êTªU€ªPu¨:TªU êPu¨:T€ª@Õ êPuªU€ª@Õ¨:TªU êPu¨:T€ª@Õ êPu¨:U€ª@Õ êTªU€ªPu¨:Tª@Õ êPu¨:U€ª@Õ0ÍqÂ2MÓÔuíØl¸êʲ,Š¢ª*Ç`ÃUwø=VçÀ¬ŠëêTªU€ªPu¨:T)G‡XÌétºý÷z½¶/Ú×Ý_…)áÇh¶hæ¡^·ÿÝÝ[f£ªØ|ü…CN%Knh†WìÕ’  ê€-\wè.)?¡úá54%l´?Xx/ìïðÐ&$ ð®«Ö|ãµ7RÝ ?v×K •– µî “ç‚£G֠ꀊÚ+ùzrÛçÔãgQÛ¼š3°Àzƒ/dYò²¹ÙÏrΕá­›*UìÇݲ¹;¢64Ãìµ4y…Cwr„¶vÀœÖ‚¯¾mdý“· /Ä ê€ý£VÉÐiLN<ýcrl:ºu|'£µÝÝDÎÚf÷•óqs¹\ÎçsÓ4ްuJ Ø–ü 3V°î–>‹Q:`¯ŒÕ¨:TªU°/ß[×µ£ðReY¾¼ênªªr¬Møþþ¾}2EáPúÔªëúöÁõè@L|^ŧ°{®«Pu¨:v¬ýõñ)›þìò±†ªãs?UÇö\¯×¡°;ý#JÀîÄh†‘¥^ôÁu{}›2ô”ü,Š^-¯ptXXô)ÙÝ~†×Ñ‹îë0à-\ó.O2VÇrÿ×&Í|w€w}š9¬Ÿ±:–»èqÚùg1€%?µ¢Ï® A>µPuì\tVÂÿ+{ýàò©Åœe¡ÿññÿbýï/°À§V²ÉÆ?FnsTY€±:–»ðzä&Ù»kèÿß3ÀbC— ÷›üÔ‚—úÊù«v¹\Îçsû-Šu]WUåM¸}d•e9áK²Þø©ÕÍ­n†s`¦œ½Õâ-!;`+|jªnPY–ް!>µ€Ýs`ÿ#ªêÖeÚE#ª`T€ª@Õ êPuªU€ª@Õ¨:TªU êPu¨:T€ª@Õ êPuªU€ª@Õ¨:TªU€ªPu¨:Tª@Õ êPu¨:U€ª@Õ êTªU€ªPulÓqÚbu];v®º²,‹¢¨ªÊ±ØpÕÝ4MãÀ¬ŠëêTªUÀ¿Ž0nO2*Ë2š²³ûºŠ¢ðWPuÀ³Vþ0£[ÀÝ¢§Ÿq»)!OTðaQ×µ‡h¸®@Õ êPu¨:UÀÚx² ð*§Ó©}q½^‡~ý*9q1ÑÓ[Æw×Î<2Oû= €Å«8D1×ÖØ3èóÜ`@Õ;Ñu ƒvíëî#ßÞvÝ8k:’ ×ýmw©œÅT°ÕÔ‹:¯?qUÂÉÖä^ÿ·áÄkwþY†T°.É+çÞu9À>¸[ ËøÛÝ8Ct€ª¶'œKí¾ØúPÜø ­wowu?, ê€­ —¼=b¤×`èÁ%ã4Éy܉Â^ÄuuÀÒÛ%'¾·ç¢ö w9$›,ùÛè>‰‘Åæò•ó1z¹\Î糋Bà3Õu]UÕš?’{¸§‡{ 1|²ü 3V°ª@Õ êPuüËóê€ûš¦©ëz‹»íÏPuÿS–eQUUmk·= Pu1ƒ^ëçº:U€ª@Õ êTk“ûd“ŸŸ `ÛUw>Ÿ)€ÍW¬œëêTªU€ªPu¬Íq–µœN§Û¯×kx‘œôgˆV•œù¥nÛm7Ôß%€õ{ÉX]¿ÌBŸuËiÄõ93Ï»Ãa»r\~“íÐ]›^#S†† ‡–ín"Z¶¿àÐD€ TÝår‰¦üúõën„½¢x¢u†öên.ÄY²ÒºsŽœŽ&Þ][ÿÌâ|>ç|Ñ×1uÝÇWÝ¿nv#ë_`ü¬¹î†|U.ð ???™s>pöÑoƒ}&ìf?Ë9ygú÷y´S¢á=_• ¼×ôëêÆï}r¸nöñ¶É+ì/ؽäîE'šõ†çÕ½úÑ!#5Ù^ 7m!ã<úØUÕuï8 i%Ûèù$ÙztOÃÝý< Ü›\0gmËûÊé’Ëå’yóÅ{)-`gò3Ì7†ìÁqOoÆ(ð±ŒÕ¨:TªU°/G‡€º®X•²,USTUå ÀJ4MSÅ£_á ,ÀºL;¦êö@Õ¨:Öá©»%N§Óá÷·¯†ÉéA†þªÆ7Ô¾/2éOöç¡·<ËRCG楻¨º§R#DØä‰rð™&{f¢{~©iGcÚnªníÐÝÝJŽÿEÓ®dh†ÌÑ»þHaÔ Ñn„y¢ÁÂäRCûœŸkC!›¿#YlœögæëêæFI–~”´3·&ïCrñînD[y4¾Ñ¡}zËÑ û[I®0¹a"ð æ«ë_H÷̪yò¦g¸æ]žd¬Žåþ¯7Lšùî<ïú4sX?cu,vÑâ´óÎbK~jEŸ]>‚|j¡êع謄ÿWöúÁåS‹…9ËBÿã;ãÿÅúß_`O­d“þŒÜ"樲cu,váõÈM²w×Ðÿ¿g€>Ć.îÿ6ù©/õ•óWír¹œÏçö[뺮ªÊ7*›pûÈ*Ër—d¼ñS«›[Ý ç ,ÀL9{«Å[B:vÀVøÔTÝ ²,;`C|j»ç ,ÀþGTլ˴‹FTÀ¨:U€ª@Õ êTªU€ªPu¨:Tª@Õ êPu¨:U€ª@Õ êTªU€ªPu¨:TªU êPu¨:T€ª@Õ êPuªU€ª@Õ¨:TªU êPu¨:T€ª@Õ êPu¨:U€ª@Õ êTªU€ªPu¨:Tª@Õ êPu¨:U€ª@Õ êTªU€ª@Õ¨:TªU êPu¼ÆqÚbu];v®º²,‹¢¨ªÊ±ØpÕÝ4MãÀ¬ŠëêTªUÀ¿Ž0nO2*Ë2š²³ûºŠÈNQ¯IDAT¢ðWPuÀ³Vþ0£[ÀÝ¢§Ÿq»)!OTðaQ×µ‡h¸®@Õ êPu¨:UÀÚx² ð*§Ó©}q½^‡~ý*9q1ÑÓ[Æw×Î<2Oû= €Å«8D1×ÖØ3èóÜ`@Õ;Ñu ƒvíëî#ßÞvÝ8k:’ ×ýmw©œÅT°ÕÔ‹:¯?qUÂÉÖä^ÿ·áÄkwþY†T°.É+çÞu9À>¸[ ËøÛÝ8Ct€ª¶'œKí¾ØúPÜø ­wowu?, ê€­ —¼=b¤×`èÁ%ã4Éy܉Â^ÄuuÀÒÛ%'¾·ç¢ö w9$›,ùÛè>‰‘Åæò•ó1z¹\Î糋Bà3Õu]UÕš?’{¸§‡{ 1|²ü 3V°ª@Õ êPuüËóê€ûš¦©ëz‹»íÏPuÿS–eQUUmk·= Pu1ƒ^ëçº:U€ª@Õð/wKŒÙ⣀(ËRÕÍlsOs¶®iš¢(}þ€3°ë2íl¡ªØU êX‡‡ï–8NÑ”ëõ:yóíÚ¢5$'>ºªðãÐOÛ ÀNª.*¹Óo“Ûh±¨šk‡vUu}Ý!±î`X˜’KëÏŸ·Y­?B€ÃìÏ«‹2+tXÿ4h2 £¦ÝÎ‹ÆØô@׫î–¿šmäš¶åÚéŠØ¥‰cuKž½;Η£ö@Õ-:Ü5ã¶Ú3¼î–ögÑçÕå&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì üMÕúÿ’1ÉO$CÉ,‘9”¢uQ’n)%Dd¸ET ]‘y¬d¨®©J©.Š$C*Š1c¦ð7ÏôÿZ÷®»ïÞûì³Ï÷{¾|‡Ï÷åu¬½öZÏzÖ{Ÿ³Ÿg=ëÙç¤{aÀèÿÑŸˆ€ˆ€ˆ€$ tHÉ’*" " "Ö 7U®FZhþ" " "¤.IRé." " "– Õ«‘–ßš»ˆ€ˆ€$9¹IŽXˆ€ˆ€ˆ@Z& W#-_}Í]D@D@’œ€\$G¬D@D@D -«‘–¯¾æ." " IN@®F’#Ö" " "– ÈÕHËW_s$' W#ÉkHËäj¤å«¯¹‹€ˆ€ˆ@’«‘äˆ5€ˆ€ˆ€¤e—^°Éïýó/{öìyòäÉ”)SÀ¸á[:…|öÙgß|óM¡B…Ú´iã¬OŠòºuë¶oßž#GŽJ•*!ÿBÓ‘LH:¡\mÛ¶µlÙ%|ã7RxóÍ7§OŸN¡D‰¯½öšÕï?þxøá‡ÿýwjh€cAaÇŽ\³fmV½zõž={ÚC[ßÒv±lÿ²eËΜ9ck’®ðÕW_1;PWãBt“’dH ¡\€YßïÞ½ûꫯ6m~ùåãg8»¼òÊ+›6m¢Í]wÝuöìÙåË—Ÿ;wÎÙÀ–÷´].J¡dÉ’õêÕ+P ÀE]ƒŠ€ˆ€ˆ@ "XWƒ©.\¸ðþûï7sþúë¯]“g7?ƒÊvíÚU«V£>zþüyW3÷ôö½À55ÿü»Àƒj8H‰åj-ZtãÆ ,0®»'”¯¹æ6`Á!¯2d¸ä’Kð-hi\ *©ñ nùÎ;ïüðÃ*T0[9ëׯ>|8B ”%K§´­[·Ž7nÕªUyóæmÕª]ìÙ9sæ|ÿý÷+V¬ æª«®êÔ©S±bÅÌÙÍ›7?¯èàÁƒ`n»í¶fÍšqêÃ?œ;wn‘"Eî»ï¾1cư—4iÒ$[ùÌ3ÏXá†fÐ &üúë¯Ù²e»é¦›ž|òIæI¾S¦Ê" " "¢ ø˜üðóÁÓxíÚµûöí£°zõj ,ø„téÒQøßÿýßÒ¥KSÀÐ0àСCæ¬÷5¸%Û4¸»ví2Ož<É!®ÉáÇ_|ñÅŸ~úéèÑ£6lxá…0ÿ¦Ë'Ÿ|BÊÈÒ¥Kɹùæ›ÙÊ¡9E’A—E‹aþ9•>}z‰á,±Fac襗^ÂMa\[ùÛo¿™îæ5`hòU»víJ¶J•*UÀ‚& 0½|å;Ū," " )š@¢\üùóØ z)…Âüùó3fÌxË-·¸ˆtèÐ7‚Ê/¾øâñÇçÕÕÀ†oi»¸ [¶l©_¿þŒ3úõëw饗’òÑG™6ø*W®Ü±cÇ¿ýíod¶–/_žœ•aÆáy1zôè矞S=zôpJFl™2e&NœHpÅYï,GÉ£Fb”Ç{ì¹çž:t(½ vàÀÛ=Œ|ÛXHAåj0OØÀpbJÙ=aÕîÚΠÍu×]ÇÖƒ‰v9r„=¶Ü—Qø–¾Ý©¼þúëÿú׿–¨X±"¾RÃΈiŒ¯@UûöíK6«©äuç΄L( ¡ÙÔ ìÚâA±.]º°±rùå—ÛŽ®B¤¡ ~˜TYúâî°»”5kV| 6S¬„0òmcD@D@D ˆ«ÁÖ ~ÆÿûÿïöÛo÷<_Aѽ{÷W_}Õ„7xRÔû Šé¾¥ï@ÖWàlÁ‚yµ[6<ÿÒ AjxTµ}ûöD/L\ÁnÊ_ÄW,Oíºœo³HC³Eb;yöÏ¿ãÇSãŒj„‘ïQ5" " "ü $ÖÕ0{(„4øv âU«V ˜3ßBñòË/›‹/N@K“jJÇ0ߟa²SIÿ4eΜ™­ô4[<$™þãÿàTΜ9Mr;L!ñ¯Î¡såÊevëÖmªãÏ&µ$~8IdK ±®3{(0áΕ½™3;Ö? †ü Sá7ûÜÒì˰ÙA{Ò9É~°…'N˜áÈß4©öÓ¬xñâ½zõjذ!‡¤yòÊ#3ìhP 0cÚ$ì5ÒÐxcfÛ…'‰ÙØ?òZ6z‰€ˆ€ˆ@ "êaWÍ”¼žõ¸o¿ý6ßÝì}ïÞ½ñBHGÀáqSZbnyàÓÈ´¯Á-Éáû¿yb–È1û¥aN?QD&Èèd¸yóæ¡6 7jÔÈ Á“)–-[öŠ+®0Ï»šGc0ùÍ›7ã7øn1¾Ã”¼Q¶TˆšðLŠÕ-L!ÒÐÈoݺ5_´úí·ßR¸õÖ[qƒH©]»6ßF²Úˆ€ˆ€ˆ@Ê%ÊÕàË$Ì sçÎí*«vv%ˆIð%åÞ³dhîß¿Ÿä {ªT©RXq“´a+)·$ͳF<Š·‘Æ­áñQz™Gj­œºuëž:ujÈ!¸ ì\a÷/qÉ’%|áóåËwï½÷òHˆéˆ;B”…§KØÖáЋý +9j!`h\ ¢2|Û9ªü‘ö|ÁFT™j " " )@:gr¢w2|]1¾‚§1ɲ;v¬Ë´{»xkÈä ctÏž=˜~kÍÚþ´ä»+ð ¢n=wÉ£.Œå‚zÎúž¢1z²ÂYüoß05CÓÑ™é#¾ñ¡0òÕFD@D@RAã¦Fq5î¼óN3¬/_‡E@"MOªŠ€ˆ€ˆ€\\¸Q6PˆùóT*ÏhðÓbQc w2]D@D@D ˆâj°iÂ_2Ô[*‰€ˆ€ˆ€¤qxØ5EÌSJŠ€ˆ€ˆ€\r5. v *" " i…€\´r¥5O¸(äj\ìTD@D@Ò ¹iåJkž" " "pQDyeÖ¬YE- *" " "ü <ôÐC|ûe°žQ\ :#%X„Ί€ˆ€ˆ€¤Aï½÷^˜YGw5Õa 3RbÚð]c‰é®¾" " " ñ%Ð¥U“C¹!e%i³>϶NRù." " "’1ïϦFê«´ÐHdT/" " "àO ¦Ý¹þU+" " "iÈÕ8{öìÖ­[=pVÈ™3g¶mÛ†p[ã,Ÿ5-'L˜ð믿:{%¾œ2¯•$ˆ€ˆ€¤Aa]&MšÜÿý4Œ–,YÂïËïܹó¢ ãçìkÕª…·£×¯_ÿÖ[o=yò¤­yûí·+UªôóÏ?SsêÔ©Aƒ5hРÿþÍ›7oÙ²%Îmé- 0€!L}°äQ£F5mÚô•W^ÆÂ… ]¢‚ÏÚÆüñŽ;ìab 7^°`â(31ú¨¯ˆ€ˆ€ÄzèС×^{íÅ_¼¸Ô>¼xñâtéÒ}óÍ7wÜq‡S¬l:uLÍœ9sì¯Þ¹eË–Ï>ûìá‡îܹóîÝ»M¶38lذa›6mÖ¬YC%Â[´h±téRÓÀ÷uöìÙÕªU«[·.6ÞÙ€¨†ý±uëÖ]y啯èîÝ»wÆŒíÛ·7~]P)}úôŸ|ò‰³{@9’äóçÏ9rÄL.ÇÅ÷,³ûå—_ÌXíÚµ[¾|¹)ã?AìöÛoïÖ­ÛñãÇM%þÍc=FeïÞ½MÍ®]»ž~úi,<*\%*;vìøÅ_ ª{÷îâþôÓO¦±¯LÂ'­ZµªY³f×®]í@.!¦»^E@D@D .bp50o9sæ1böÕ96VöÑGÅÔ}÷ÝwS¦L1§Ø[ÁcÀÕ¸á†6mÚÔ«W/\„%J¬\¹ÒDøÙìÀ¬)¡#!Š>}ú`›;FøÁš@ç(¶Œ‹ÀVû‹-:pà€­¯]»6Û:F7ÆÅ1§Œ+P²dIÛò’K.A“7ÚšàB$ÉE‹… –›ï0ùã?\B|Ï2;vsLËß~ûÍîøhiÔ¨Q¿~ýpDŒÃ„À¡C‡vèÐð ;>tžˆÆŽK4ˆJ„jbo‹SæðĉF¾W&õl!á»ÀfóæÍ3-]BL¥^E@D@D .bp5²eËFl€Gißxã çØ˜ÃêÕ«.\øšk®Y±b…=EPaàÀ˜@L;îÙ¬ž9K0ƒW‘ýû÷³¼Æ ¨R¥ ±"Xn<*­WaÆ ûöí«ZµjéÒ¥—Â6(X°`¡B…0Ÿ˜ä¯¾ú ƒjN¡p† ðflK —_~9^[ëÿû¾Îf¦I2gÉÒ ¢ƒû…Ûdý+!ø¬mFá‰'ž`Öp çæ·Œ­™|ùòQC¨e®H‘"Ù³g¿êª«Œ"Ä9ðÍ¡}õÊćãÝtÓMäÜ”)SfÙ²e¶q$!¶ " " "01äj0+i6/¾üòK›m&“pÛ"”1V«¯¾ÚlaàjàÐÛiÏîÙ³‡òäÉ“ÍךrÛÿ§yýOÛØXŽãñ >œšL™2Íœ9“Ý{–ðžJÞ¼y‹+†3aê9$°víÚR¥JÙ–ø+eË–eD [IÍ »Ïâ¬÷•lgZ¹rågžyf̘1Æ—rv >k[2S¾îºëÈA1å¾}ûòöK/½vˆAòÆo´½L!W®\®sè•ÉÞ OÊØí.ŠíIˆm ‚ˆ€ˆ€$Œ@l®cÃÀbÙpÂüùóßÿ}Ð<ûÐ¥K—ðϤäÎiì°L©:AˆþóŸ>ø ñØ"aï€$ëCà¼ùæ›—^z)Û+V&1Ú³‚·ÍXܳƒì+þmPð•lÛ³IÄô­‹`ëMÁuÖN0ùv§ÃÙžO¹råL ñž>ø`Ò¤IäUàpÆ / ":Î.QËVfŽ9—$Y?jG5ĈaÅ †•"·Ñlì%‘<–?VÜæ"Ø6¾žD%B^Âܹs‰ˆxAÆ"¯ä~ÿý÷¾]°åDJÈàùRþHAˆ39ôÚk¯%CâǼí¶Û¬¢ D>>úè#öh¨ÄZckq;èkÛx Î g}%“Â†Ž‘IŽ…3H@¥ïÙüùóã+@‰½gÊ ù¡$geùöÛoÙF¡;~9.l<Ý}÷Ýž>}šü¶r&NœÈö»*f¨øóÊ4Æo®‘S9:%" " ‰!sTƒÁxf„E6©”1êìbŒ9²xñâù‰v°AâBTØà W”ÌGr!iÌW©?ÿüó|¿ö5Ò·lñ]$„:%ÿå/ÁoøÛßþf+ `°]ƒà`ªxà¶'ˆ»°¸ÇÜÚ= Û×p}Ê—/oMÁ+÷‚Í|/ÒD\»'¾gÑÄÌqãÆñÌ.‘ïo.!y¥B… $¾POæ$²LÎ:f?èÕW_}î¹ç€ÀæQæe%x ^™ˆbtžR©W¯ÀñÌV”·¯jD@D@D ^Ò9âð %êæ§èy®Òdi`Þ.»ì2 ¤WT¤ÖÖ„ˆ=Dj@=ßµžøŸ[#NÀVª²+pË-·ð€.Q;.k}¥ž¾ˆ+Ja›9 DÆäÉ“Çåܘ6¾gñ!0ùND¸VlñИ‘3Ù!¸M8¤h8å’ÑŒ}"g¥« “–\&Òhl2‡«¯E@D@D ˜@÷c°Ëd[Fu°àAæ*xçYk 8ëÔmþf˜Æ‰iƒu7Ž‘üŽ+®¸Â)cÏìqðÆÏ /N›N!βïY¯SbÜ,ü §ÿaä¸44•Þ‡Mœƒšr€L$à2y‡Pˆ€ˆ€„!W#ÌHɪMxfÄ¥¡¾vÌU©CÄH1®_ÓOÖ&ŠúŠ€ˆ€ˆ€Ä‹@Êp5º´jBcâÓ5âEMrD@D@D@BH®“!ªrJj&" " "|ü×£ ÉG-i"" " ":ÈÕH×Q³dJ@®F2½0RKD@D@R¹©ã:j" " "L ¤˜´Ð¸óã‘–¸Ë”@E5\@t(" " "O±¹üú(?(ºmÛ6ß@§^’%" " "*„Ý@á—Q§L™2mÚ4œ ~­ƒŸbçç98L†Ξ=üSdÉPg©$" " ©•@XWƒ;åW^ùùøfÍšñiüD*¿öž ¡têÔiÏž=xEÉP7©$" " i@(WƒßA={6?aÚ¾}{~ðL…ÿü3¼8ûÆo¬Y³†Ÿ¯Q£Æã?n~¡«Ï¯¤–.]úÝwßå‡FŸ{î¹Õ«WS¾ú꫟}öY^é¦ n͈#6lØ7o^Ú—*UÊtäçIï¼óÎqãÆ1.õÅ‹ÿý÷iFÄ¥E‹;w¾á†Ð ·cåÊ•´A±Úµk/\¸ðí·ßnÓ¦M½zõŒþzH:¡r56oÞL–¿½nü §6l¬tëÖmíÚµmÛ¶­V­ÚÔ©SGmìܹséÒ¥Ÿþ9&ŸH¯^½ðWJ”(áç·ÚC¶9yò$ò:Ô½{wFïÓ§ž}ŽœñãÇ—/_~ýúõŒKe•*Uð?øV\|ùòQóú믓YÒ·o_| SsìØ±íÛ·?~Ü( W$%*ªa~$S¦L^Up&öîÝ[¿~ýºuëÖ©SgÞ¼yøíÚµ#ŸƒÆY²d8p`úôéçÏŸÏë Aƒ°ñß|ó +*¸ ò÷ïßü’%KâIÙ²e !ºãyôïß?gΜ*ð6¨¹îºëð3Î;W½zuqè{øðáß~û­V­ZF%”$âõ™¬>*ˆ€ˆ€ˆ€Ä‘@¨¨Fžgeøðá$·†¢f" " " q!*ª{qï½÷2^Ïž=üñGvLH¶6l‰+V$P±hÑ"ò9Ø%!QµjUbqQ!•*UÊž=;¿Ì;?†ÈB ^´hQ¶{V­ZE ê‘–MãÆyj†½:"áÉ'Ÿüþûï„蔈€ˆ€ˆ@¼„Šj0XË–-±Ö<ÍѵkW1Û„:؆àë½{ôè1xð`¢V®\™=‹x)‡%ŸtèСýúõãážþù D¢AƒëÖ­{úÏ¿[o½u„ è†bÅŠ#W”^G%G•×HT/" " "Gé8 ŽpÂC=dÒBiÆÞq ^I°p¥;Ñ,Ј±ƒ$þìš5køú²eˆÅï¶ðMêæ©Ý+VdÈ¡T©R!û^àf‰Wïܹsü’Ü’%K2eÊôÀð‹»v¾ü ?ŒÇ/Ï]àIi84N ¶ ”Ë2_üÏK³nݺmÚ´±õ]ºt ÿsð¶—³À/ÊöéÓÇY\þüÏ?Óæ•W^á§äƒÛ_à³gÏžµ#&^=~·ö¥—^2?Ã/¿8Μ9sΜ9v,D@D@Dàˆ-ª‘-s† £VÀ(üÄëùóçœ5jÔ%—Äæ]HKü)~—Ÿ¯#îbD%^½… " ß.K–,/0ñs”4N 6WãèÉÿ,ÁŽ­¬ìÊ•+ ì?þøãµk×FæÖ­[GŒ±aƼyób‰½›D5>Ì+iÀϼÝyçãÆC‡Å‹§~ýúõC† ÁŠ×¨QƒÝ–K/ý×4{÷îMû—_~Ù©¼R­ZµI“&hÛ¶íÍ7ßl…S?~<Ù’xã7Й‹ÂìMØfÞî¾1c™Õ«Wgš¸Müº}çÎo¸á§z¾Ý}‰Ù¹¼óÎ;‹/æð©§žºå–[Z¶léh›Qðîl ²ˆ€ˆ€Ä‹@lKüc'Ïÿ‹I­×_}Û¶m}ûöež/_>úžH¤„$J6bxÊÃÛž ¬»Í9Åøä“OHõ`CÇù- V&šôèÑm · påÊ•Ùý±g½ÝCN¤AƒëÖ­{úÏ¿»ï¾Û ôíNÅKÌv _ðî…^ ZŠ€ˆ€ˆ@tÎ4ÚqŠ/&¯WÿÞà6³>áûÅä{vxÎÂõµØ{ŒŸKì‘#G°è~W=‡DApMŒ/â=kkزa,žPµ5‘ Mš4a„'J0`Î]ºz®ÆŠ+Ö¬Yã«PÀ)Ó~„ Ó§O÷íKåü±oß¾mÛ¶8q"RÕ§\ë_ý5¥h›¤zN:uÕªUI:D¼„Ÿ={vëÖ­G—@_9®÷¿ä¼cÇŽ]»vQðm¯JD º«Ñ¤I“‡z(xJ¯¼òÊðáÃmîM¶ì:eëmaæÌ™sæÌ±‡¶púôiî>÷Üs£?ñÄ 6¼ÿþûíÙX N•bê©#Xîtü;6.bc’âüñÇØ  vãÆ,Xprñüóχðžß°aƒé í /¼P«V­3gÎ8 (ˆòíU¿~ý[o½õäÉ“öìÛo¿]©R¥Ÿþ™šS§N 4¨Aƒýû÷oÞ¼yË–-qúMË¿üå/¾[sÖW ßJ;®}o°¨2dH½zõ¸uôìÙó®»î6l˜mva `áÃÍ='‘· £­FäO >i¡£Fºä’y-:uÚ³gÏ”)SÌä§bÂ1räÈY³fñQoÖ¬Ùå—_κjÓ¦M1I°]*Ùú¨…àŽäÂpO4B²eËUšm,Ö6S!&ø£3L½Þyç,Y²ÄÔ=ñ_|ñÅôéÓ'@N$m>¼xñâtéÒ}óÍ7wÜqG$ɉŸ8nY:uŒ|ˆŒ3šòàÁƒ·oßNÐ1kÖ¬Ôàú·mÛ–ÃÌ™3GRÆÔÛ%@·nÙ²…¨ÏW\4¢Q3Î\Ê8u 8tõêÒ¥KݺuÚûžr ñm£JHƒþ儜96’uÆÂ… Yâ<õÔSëׯ7{÷îm¢ï¿ÿ>kµƒ¶hÑbõêÕœµ§(³:iݺõ}÷Ý÷òË/oÞ¼9`PÖ¾³gÏ.X°`ûöísäÈÁ¼pá¬3Lβڻ÷Þ{~øá1cÆØ5Ÿ¯z^•ðZ:wîŒÓ¦M³ïÃDP˜+ò¹¯Q¿lÙ2oG—ÂhUàß(ÉYß îÑ£V¨ CxÅOM›6}õÕWÑЮ)Y=¿ùæ›.}ì!#vèÐáöÛogÄ/¾øÂÔwìØ‘r»víºwïN ¢ˆã‚rWµÍ¬†xä‘G¸Û²¸dË ™7oœÞ­[·ãÇ›z߯¨ñôÓO3fÌfEj mº3ýV­ZÕ¬Y³k×®V UƒBá£GæýÞ]çÎÃêÿôÓO`·+o.+Óá­â;p¾þúk¨]»ök¯½vàÀ@áµX™^Á¸Ð“+òÉ'ŸÍˆýöÎÔ qŒ¶Î)›2—¾Zµj\‚O?ýÔžuQMäÄKTŸÞÈ_·nÝ•W^i¼´½{÷Θ1ƒ ñ3h@Þóvަ‹ïLÍŒ|u£—ï5ÒX¥æä fü *Yà…Hïjg× ÞËœ|Ðî^q'Á“sõ2Ê8_}u¾‘¶CÞŸxTf”cÇŽñ1÷}ÿ;ÕPYR(Ø\;w®\¹rüøñåË—Ç<ÛÏ õ»wïA•*U0ºÜ›¸¥æË—{Š2÷©G}”ûïwß}goâ¾àpD0o*T`IçjÀÆ FníÚµ,°¸£· ÓÆW=—JÜâé~èÐ!Ô@xŸ>}X6/^üºë®ã†‹…4m íêèRƒCLÚoþ™¹Sã ÚbÀ~øáâÀ˜ÿ%J¸ÄO‡L—É“'W¬X±dÉ’¬/¿úê+Faלh3r¼*Q7©ù$^¬¨GSŒ(Îg9ìׯ_¡B…ƒËµ|ùò#Gޏ¤]sÍ5„͹LóçÏ·÷e„`P5jD÷_~ùÅš(oc¨27PîÑÓ¦MÞù#FŒ`:ø8&oƒQp\0`x!ø1.58 #œÐŽ).˸q㸠艴n¸ÁÚE|.q† |‡£½ Ú0àÿø¾yåÍ`vИ/×+ˆá÷Å…ž$ñ¾2ú#\3u ¡uàŒ¶Þ‰£<›ó-Z„÷C/ÕDN™xWK–,1o€Ï?ÿÜ.åÍb€7žU «„7Ú ¾353òÕ.Þ jÏ \ªT)[c ïjg× ÞË7oÞ»ï¾û¥—^âÂ|ñ¨ªW¯îêÅ Lu,œ8ôê|-`õcXºté>úÈL÷'ŠY¯ÎTêUR Ø\ ¦yæÓ˲—ÂF5,îæ|Z¸¡óéeÁÖ›¶–zâ|n1¢®³ÎC2Í”)“³Ò”—.]ÊÝ¡F܉¬°·Âý‚½9ëUÏ¥Ý÷ïßÏš{(ÖQæîÆ*–ÅösŽžÈquôj‚’DwøcínÎz'ˆS…#‚¡Å ¢3fÃ%6x:—^z)á"îYx*ÐÀê3«¢«¯¾oÏ«5,LMþXîÚvMüØccÈ™3'ö• ‡9,R¤óuIcMŸ?~„-ZÔ8+¦!bèŽ ³3•ÞÆF ‚XÏž=ûUW]eZ’yCà­ð hÃ2ŽwÂM7ÝÄ ½L™2“\jpF8ï:X±Å쬦@c¤?ûì3Ò †{üñǃ‹‰(Êx±7ß|3wðÇ„Þe—]F¥/.;¨-¸f«¢ƒ ]µjU ŸÞäHöRMüĹ88y|ˆxóãö™)ðöæƒìzcð†±îT¤™Úz_Ý8ë½ ¶ ƒò1d\[c ïjgç ‘.7áÞ\q¾‰j0Gg/3"ŸòTø3i+^ƒ¯E€ÂöcHlMaãpãÅ’—æšµE Õˆ9W#wîÜænÎÁ.ËÂààFFÆë'L/eÌO@/åœÅN‰æjFX’n÷¼rÀqÁVá= 5QÕ#BK3Bï½÷¶¥Í­3W®\¬uXjW®\ãÊ©¨˜a³mÄ2šÆ¾4Ú²¼Ž$-x:„ŽÇF ㇫Á-Œ»Û1‘‚‹kBJ´aj† ÌM/îždIõ84V~¬b±Á¶¥õÿð™ˆ<›zoc8³°»ñÆmGS¸öÚkMÁ˜¶9pÓ7•ØTW{à wõ…Ùܹs¹¦¿ÿþ;îÑ·ß~i8ë£ð¦2ÌÑß$’Çû÷Î%?øÐ5ÓX…Òà:š7̹èÈHT]šÄ4qú⓱YÃû¡X±b8F‡¤…âe:c x?eË–u çš©ë¬÷Ð{Am>øøÄí\ÉOïê€Ñ#½»¸²üpšñz¹ØÑvQm€‡z¯ÎÁ×"@aû1dµÆ‡šÐ +6zn¹å§*‹@j"³«fò¾.f’4“6EhšÍŽQx,RÍÂÎ~2M{cošC>ÒÜ8ìÎn$™V%ã‘°À‚ÛÙ˜õ+ ;, Ë}Ööd;:›2†ÓZûNÐ-oøÇŠ ?ì=C°#`ÓV¼Z!;5«C34‰)^Ɇ –û4ÆCò>LjCC× ÛO¼Ç; 5H.W®߯¬‘ÌÄY”ûv7•Üm±ýäm˜ëâm“pKÕÊaáÈò?ƒU)Ãَ΂A 1¢Ô{Gq6ŽTŽI9%ÿüç?I)`µ@l×`~$ª^•bš8®ûb|â°yV>ƒŒŽ»o] œ&´²mÂ\ºù^P+‡ÏŸÁ/¿ü’L,[I!Ì»ÚÙÞ éróÎ$]Yã†rG²ï=—ªV ¯ÎÁ×"¤Â,o^ýuÆ¥`V,vPD 5ˆy%êä `çØÝ'bìlÌú˜CÓ$Õã(pÛbÍälà,ã^˜{ Ø5Û$±ÁO¦îøì^³—ŒéemA™Û“³»«ìT‰ù¨°’à.ƒ›‚Ö´çÖÃZìK>öC‡åfD¥³£K¦÷Ðw‚V[V¬¹S»ÄÚQ§ƒæ¬8YerW ˜/C, ‰·3ö†‘—¶Üñ6˜,TÉàãz™ü»ï¾k²%PJÈÁë‚ËJÀC2¡ "&_Ä·1Ñ"ó'NÄ1"©…6V‚³`š‘ýcÞ 6e$X_á¸}&½À)ÿ Mz#»'ÔGÎÙÅ[ÆþñÞ`[¯ˆì L3«§·—«&@ˆmi¥.ÂAd‡‹TAþÈpâêã3%ÑÄ ðVçƒvÛm·Yeˆ+GaÖ|ú¨äGˆÛ&¶MÔ‚÷¢ø¾[¬Ö <ðÀo¼a>)ÔÓž;F˜wµbt¹áŒEê ;›ÜaÌÕ´½¬[ðÕ9øZ„T˜Ï&Ÿ>"¬¤LÙáTÔG þ®‰l<–AúK'/îb¬“x„•LC†8 ¸Î®2['l™“ IZ%Ošp›ã¡ Ü&sëEX¢o߾įIqõu:UÂZ÷êÕ‹å7rÁP³ä%m“Íb-üùÌcι­#ÄÙÑ%Ó{è;AB h‹oĦ/›Ê<èk„™ŽÉ€aé¼§‹n^4ƒkPßÀìßÿþw¬;IHXÕá¢v”ÄX ølÁ°˜†‹¿I“&Ùt ÂQ|§Ž Ž™7‘£'® q)"cOKïÍHýÁ}!ê@4¿Ç´ ÖÄW8*1 ×Ô9 sÁsÅ”Ri8gß2k_â ä10#l ïCÓÌêéÛËUIˆmf¥Q€›­§€«„ÌûÄK5.çSÆ£Fæm`ÇÅ×ÁWÃö“Äbßa€›k;Ú‚W·€·–éEsgƒƒO"YÌ|ºqvC¾«;¨ïåÆ{ÆÕ -”ÆÌš÷31eÛËq¾úêü& ©0[cÆ åÏ9¢Ê"ʤ3IsqŸ®:æÜÞ‘­|¾*Àdi°ØÅ{ó¿lKS`ÁAÜ‚Wy.iH`iþÆçR‰4][®ÑÍ¡«£o[i‚á>n#ôf:Ï>û,ôÌ]ÒŽh |½óçÖÈ_ápC´ | (†+€3AœÃÕÀÎ…†Ù¢"G„[?ž"!smocsŠ7- ÎÛ–¾¦›âjR8Q¶9¢î¦!Ò½B\5Q§Ã¢–4·àPS7bþÎCW™%,lÙI!øÄbÝëgÐÞÎÅe¼q½>b¤Æ áÚ÷0xú!…ãиTõ‹Êàá|{ErƒhÌZ„§ ØËóík+„Ø6a .ªI:q®µq,x<óò™ˆ¯n‘.¨;.2pöЂßÕ¶™kЗÛÕËJ3…H:_‹`…‰©°=dƒy®u(©†@z|êT3™Ô=&Ø£‰ôŒ+s_¼|M­[*†„Àó#D•HÑ §ïBöâ©H¶0«!Û§Êf¤ÊÁ骒Dãc²Á)æ–˜¨|2Ô™Ø*ù"|“¡nRI˜·xvÇù„Þ^ئ¤ŠjxSM" xõ $Šò'}mß7˜1ÿG{½ðõOÑۤɋ×üßãÓúX LŸûC¬]Ô^R¤ÊÕHYR¶®M™T3/MDD@D Ù¸h¹É–HêV,øz§î¹kv" " É“@üvMžó”V" " " …€\‹‚]ƒŠ€ˆ€ˆ@Z! W#­\iÍSD@D@. ¹»´B@»F¼Ò±>5QNˆ€ˆ€ˆ@*%Ð¥U“¨3“«„Èù=ßAítND@D@Ò{äK¢>ü¨ ”´÷ÖÐŒE@D@D B†ÿåjĶdˆ€ˆ€ˆ€D p\+V¬Y³Æ«?.ÏOŸ{ëÓHÍ„ øyëDNÖ ±…D ôvç§X6oÞ|úôiï)ßZÛ{GTˆ€ˆ@ò'=W£I“&ü33áG) (Ю]»0?Æ0s~S”ßB=z´«ÍçŸÎÅ?ôÐC®ú0‡ü :?YdevéÒ…_|3f }­þüFš?üðÃüV–©ç‡/°sÃŒ3¢ó§ämÍÇÌ .f¾‘ÚX!¶©eêùô¾}û®_¿>_¾|6lèÑ£G¥J•óûï¿4èçŸìСC­äxµ·UH‰¢»Ì*Ož<½{÷^¾|ù›o¾9~üx~2;1S5j?ƒ™ ±ö-R¤È³Ï>ûã?â‹ðt ˆIÂO<ѸqãzõêÅÔËÛóŒ¯æô3¼5Þ^¾&Ò|ßzë-~ˆròäÉæòáÝðážzê©ùóçó÷NmãÕÞ)SeG ”ÉÏ!¿޹%Ñô—_~9þ|§Nzöì9{öì¦M›nÚ´iÇŽ/¼ð tbÄΜ9ˆqãÆµhÑbëÖ­ÊôéÓYûRÆk>|¸©d‰üä“O6jÔhذa¦—©§WçÎ6lئM»ÛâÔ´ óŠþxŒ‚Qd ¦‹mƒw²zõjÔ»ï¾ûÎ;·k×®§Ÿ~úŽ;î¨S§3¢YÇŽçÍ›‡n·ß~{·nÝØ/0}qh>üðC+‡ÂÂ… o¹å–àÎ2D‡vÿý÷ñŦ½wܱcÇ>òÈ#„sˆY«ï~âĉîÝ»£§u }%/X°€‘g8® Ý]óuÎbêÔ©>ø uÓ¥Kg†ã'Ô¯½öZçЦ¯ö^ɪHAB¹ÌçìÙ³8lÆ-Zc³sçNR.XàV¬XCމ]»vmÛ¶m«U«†17ÜpÃöíÛ­±œ9sf©R¥EßÝ»wFX2›7oÎáL%:tK‰=ëÓ§Î §œƒâ4˜Æa^±Ä{÷îEÛcÇŽá%„ébÛ4kÖ¬`Á‚­ZµÂsB „`æ§M›vë­·Òì·ß~#؃Ó¯_?ü°Y³f™¾œ…€•CaÑ¢EÕ«W®AU† Œ„›‚öòË/–é{ǽæškú÷ïO‚ á„U«V9Åšòˆ#¸:8I¸DdøJ¦’-<›9sæ´lÙ’ŽÎù¦OŸÞ΂M4B\8¼IÜ—‘#GÒ×;¨­Iêöv D@D@’9P(¬†YÓ³JΕ+‹x3%Nçøæ›o0äõë×g…b‰OÖ)•+WΞ=;‡Ä6Ø) œpÛm·9qìÛ·èEíÚµï¹çêÙ 1ÖkéÒ¥û÷ïG`É’%«T©òî»ïnÙ²Å$1ØAr¢–×­[‡¤Ù_þò"QÛ;°dgÐlÙ²‘_‚'AÇ‚ m˜iÉŽCÍš5)ßyçß}÷¬(ãu™³æ•Üœ'ü[é­áª2áÀBæƒ>øôÓOQÛ;®ÝÐÁùÃ)S¦Œ•l d½Mp•K"§W2„ñŸl”.]š ::çË¡…qqkð]öìÙóÌ3Ïà…”+WÎ5¨=Lêöv D@D@’9PQ l* Víï¼ó†ÍLéÊ+¯ÄRÆáÕX_ì>[!ø Xh 0ÆÊ•+¿üòË›nº ƒíÄa¶ö­@{ KF™ »32f̈‘6gí ¶±)°þ& ÑVƒ¡ÆÞ'4‚< ±§b* oV, ³Fy‘ž"ùöÛo­Ù6½5Ô6€’±ú’hI︄‹Ø´b7gãÆ¾»©AØ)’dêÉô$Ü‚S²dÉ#ý¿ŠøSîܹñKωԘú¤n0´N‰€ˆ€$+¡\ v+îºë.¢ñ™3göjÏrŸJöÌ)L#öøŠ+®à°V­Z¼²óÂj˜¿i`_ñ(áÀú 3jØ’øìßåË—·½| W]uqÎbw‰‚€±-Y©ãègÀ²ž8­_0¶œQÐ!‘:¤‰´Ð™¨Ì£GÚ§FHw\¢äÊàÿ±ýQ¼xñHú8ë}%Ó€ÀLþú׿víÚÕ^¯ïBw0ÚM.#Í)ßUNêö®át(" "l „r5‚µÇÁaeÌ×-àR°¯Zµ*!z‘œ‘7oÞ¹sç’PÉ~ŠK‹cÜfÃ…¨ ¦P²&&éŽ8.H&íÔÕ×uˆ/‚À—Ià¸!âúë¯wµyàð?&Mš„ý6§ˆ¾,û÷›#®öö)05‰1°1qâD˜@¦Ùú!ôB ‚SIžŠm€n„pœ“·ÆôÂð“¨ažûÅa" T£F ï¸H- ¢€Èæ¢!¾¯¾’!@V/ »ï¾›^æÛ2ì|©±³À}dˆ‹B<<';Sßá’º½ï ªH†âàj°ÂW,`z[·nM4—‚Ç1ìT l°Df'Å„ñm=jˆ4àa¼þúël»˜`õ—_~y¯^½räÈÁ– YŠd„D}l„Uˆš°MCN_\AÖŽ…s,Êls݉5%KO ÎÁsÿþCW{{È“53fÌ@Lò«¯¾Ê.Lƒ ‚JÓ†|U¾½ƒfØ~›øIV&i¦Ñ+V̸_‘jL=m`ÈÈ_a.ðá¡︘y6YÐP¤tà?‘®a$Dzõ•L.9¡Œ@þ Ow;_ÊÎYƒ[ÃV OáÉè2c±ƒƒBÚ,ž‹%^í#ÍHõ" " )‚@:O¼º¬õ‰±; j™ìz°¶éÎ.<ò@ò‡+ÃÃÙÀUƧaŒ@שòÕîöçÖHþ Rbv…4‚ $£Pæ`\+ò0˜•¾‘IÊ&ˆIÒ4 ¼5®Ž$»àl93Nhà—C¼43">“ÕÍ%Ç{è•Lwœ '4×|Bð«ØGcÄYPNêöC딈€ˆ@’è>p †ÒnúûŽ…1 õŠogo%¦Ñ[µÆù•V®Æf‘íª 8Ä/á;²$ø^…Ó–{ -þ"ÉgƒÃF;Lo«¯IdqUºÆµžS7Wï¡W²·»k¾N!6eÕYPNêöC딈€ˆ@r OW#9ÌçÂëÀW€˜§o†æÑP×Yo«E@D@D u«t …ú…ܯÿë ¹ƒ$꜈€ˆ€¤1ñÌÕH}è̇¤¾yiF" " "/4W#^J'9Áø’žÒDD@D@’-8<©‘lç&ÅD@D@D@.:¹ýHHÍäj¤æ««¹‰€ˆ€ˆÀE' Wã¢_) " " ©™€vMŽW7Ô¶ÉQqé$" "¶tiÕ$ê„åjDEtqØïD¿8ÃkTˆF€ç4ùVˆ¨Okj%Hð#2/WÞêD@D@D@âD ¬«Á¦îÛ·oÛ¶mü~iœ†N¬˜+Vðã쉕’úó“÷;vìØµk…” ¯tÿˆž«qúôé)S¦L›6ÍüÚ;ÖŽåð?2.`‰77?ÝΘ¯¼ò ¿t:zôèDŽß¤I“ƒZ!<ðÀOú装 âlT•‚Õ¸ùæ›Ç_¦L&Ò«W¯k¯½™cÇŽ=wîÜ“O>éÝ”ñ«fΜ CãgP‰kuå•WR@“¾}û®ZµŠÃ6mÚ€šÊŽ;Þÿý\¯ï¿ÿ¥H•è‰7n¼é¦›(dÍšÕÈ0`ÛRÄÉÜ¿}ûö1cÆàë¼øâ‹øš•+W?42]Lö믿þý÷ßo½õÖîÝ»›wÆÝ»w¯ïL4hðÑGá#rí@JhбŽ;†›13#×è:¸(¢D6oÞL–FBðäX IDAT… ŒUpªÈÆJ·nÝÖ®]Û¶m[\¬‘ÝËØ¹sçÊ•+1«åË—_¿~=§LGßú“'O"çСCÆöôéÓá]»výá‡Ø/èСC‰%ªT©‚c ÁÕÈ—/‘¶{÷n ÐÄ9Êûßþü3©Á€áa Òwß}gâ(QU V>yòäŠ+–,YûýÕW_1ÊÑ£G?þøc¦æÒÇÏ `/g®nDžüðC|œ-® ˜Aÿþý?iúôé¿þúk¤JšÝ~ûíŸ|ò 4óæÍ£Ì‘‰©Æ`§WdzU«VXnh œÆ1 mFÇcãÏlQ]sÍ5 Ïùóçã'E×*ÒL_{í5ü*Ζ.]ŸQüÍ™3oU~†¡¡WH&¢¸&\Ÿ)S&¯ºK—.eÅI0ƒôSO=ÅÞÊ矎Å2-qM0*&¼·a»{둳ÿþš5kbƒ1ºÈÄÄbà±úd¯ž&ãÄJÀçp:¶>ÁC[ª.±ÁãG2 ûJ&tC† Ýy§ hõöµãÍ\ÍLÍ ±¼¿ÿýïß|óÍ£>Ú¬ÙuU±XÛ£jº¸&è=L§ÝD …w[Ã…Æ8&W#ŽšDw5˜?6ƒwö‘#G6nÜ8vìØ:Œ92VoSºgÏž)S¦ X£K.IH¦H¼äØëš Øl,ºW“üã¦ò¡‡âwÿý÷{Û„©‰$? /^BœZ-X° N:¦ NXÆŒ}»ÿúë¯Ó¦MûôÓOé{îÜ9Â4{â‰'п^½z¾]\ "i{hàÌ=õÔSóçÏÿé§Ÿ"©ªz¸ÀvìØ1iÒ¤ºuërïÝ¿?ñÂ\wÈ€–aN]–9”pŠ:|øð·ß~›)S&î<òHºtéÌÙX‹µ=£$ ‹Só€²áP³z5ÛfþÂ%¶ì[0vÓœ"åÛ&íT†2öéÓ§Ç강РAƒÖ­[ãVW1Œ¶nÝÚ¹sç† ¶iÓfÍš5¦’B=X³þþòË/©|ÿý÷1]DGZ´h±zõjjXì>Ü´çýѳgÏ… ²låF¿~ýzS?lØ0†»ï¾û^~ùåÍ›7G•Ãò…^0ãŽ3Æ9zE’oFq½"%ï¸ãT:yò¤9ËtØL1åcÇŽ5mÚôøñã;vÄúvïÞ2k×®mÛ¶mµjÕbwg"ÉG1ï_¿~ýž8Â]`gÔ¸ ì¡|ôÑG¦1®:$æÂÙþýûW¬X‘ Œ[Àjž×\s •hËÊxÕªU¦ - á[pÉYšwéÒ…Ï6¯hH¸648qâô¸ü¸2cXwÓÝûŠV´Ì“'χ~È»‡Û7rÞ|óÍF1‹_~ùÅ:‘ä#‡m\&Õ²eKç@‹-rn|à$-Y²‚6¼kc{ÉPƒŸÄ‡œÍCÉ,XšqãÆqM½ˆ\ "iëTÏYŽ §L•E ùà®›?~B|T±¦F1ßÛ¯÷¹}ûv¶_Mî„lÚ2‰n|–+T¨°oß>»ðsÎúèɳÿœ-en&wþùG%esÊ«˜³K“á5H`FÌbòäÉ܇oºé&—•IÌÜêÎSŽToΞ:u ˆ?ö’Lw ˜-– ?üðÃ]wÝÅÅÅô˜–\2¯A4§Ì«—õ^ùT‚héÒ¥\èn¸aÓ¦M½zõB%Âæ²Î4Ò Æ€7ƒï›Íô ù³«ƒFú‚Y.3¢y5kÖ,Y²$ï$èà‚pß§’2[e?¯»î:l3y ÔVò*‡§‚…Æ·â½b£ §}áÂ…1N¼Ÿè e´FXAœ÷Ë/¿pÆõ¡£¯|¯\øü‘U>ô›o¾™ÄýÃvr‘Œ3rÏ=÷˜¾ìk°RgŽ˜RÖúTâOpS`ŽE‹5æß´|üñljUð©†eœ!äc¹ù[5ÀÜ ä0.^ðUW]eO¹ ¦%~á ¦ [\.v\4gG¯|fÇo8‚ Æ4í âA‚Ývg‚… b½Ò¯¾úŠ(ˆ9åK†ˆ³1bÎïQ¦Ì{&[¶ll@ÒË‹ÈÕÀHöjk•qâEÃ%V‡"LðñaÏš»· n’&Tì{û ¸CzçB`’ÅÏ3Ïp‡‰è+V OÎÔG"Ã^XåÊ•¹‹±“eÞÖVN$D¶)øjëjcãHÃW¾*Eà¢àG¨’;*(Ì‹xßÛoLzrS5‰Þæ>†—ÀŠÂ)áØ©ÿ‹¹ÆôÇ-‚[{ôb™ÁÞ† ‚úŠ c2Ì›¹¾ËWß±leÔ¹Û–"qˆToúrÏ·™ÔøNÁÜ·‰78‡£l°|‰ùÊ7b±hVÊØØ8$¸F ’ø7[ÌQ +[¶¬ÁÁ+ázö~ÌŸÙDÄJ½õÖ[ì±FwÆåŒáša¤C6 ØÞã=úÉ'Ÿ5q6ó•cl9¡ÓóÖ+®¸ÂÙ1j!Ge ôtt÷Ýwó)Â?¥€cè+Šå5ìààiÅš6‹@¼]lPÇwSiô´?‘€sj¦ïìB¥Ùí²•¾òaûÁðH q<"~¦±+QÃTâjè3éiV&…Hdøü°ùý÷ß›Æf"'mºøjë×–ãHÃÊTA’Ì7ÛZµjq—`sÖ,¢¼·_Ôv}”Ì.-ë@ûwMå5.ƒÇ&oMx÷ø©³¾ÿ8å}…à(OÜ tã nÂvÅ«˜U#ªÉ0Vˆ)ÄeîN™–Ã?>ü¿¼CûÇ!d|9Ø6΂æžïEÙKÌW¾«W˜Cß7W“¾¾o¶02iÊÕ ¿rÙ²e˜Á‡àÎÎÆ Xá ±ÖŸ;w.¦Ý}´ÄÅ$³Ã‚™Á'¢eT!¶iäÂ&EåLØ §›|%šÏI$9¼¿Ùõ@|s ã…U­Z5ÒS‘ ‚LZÎ?þ»h߸D·ÐŸø 9°‘º³R(ˆsÄfeFjïª'8Áª‚§Úñ¡uî­¸Zâ0 ;D¨Ç¦ÁÔ3m–/_N%·"l£8;zåse‰vâ9á.ÐÒ\ndä¨ÚÔ3+¥ðÙ`r=”ë"³ŒòEÌ. ±ê ‘m`‡ójkO¹ ñ¢á«CH&ȪæÃÎ ˜äòñ9øXùÞ~QØu‡¤%·#îÉärWqÎÔóh7KvÆ9q6 |âô9ß®fæíîÛ,ZXnñGò;·eäs3¤K1+!ŒÉˆd¬Sp ‘ȹ;…£¦Ì¶ÿL³«lì&¦“?L‰ï¬ÙâBpoäNîâ{èKÌW¾owßÊà7C¤7›¯(ßÊP®vë¹çžã 6lØ›'™‘è=âð$È1!„NdÌ>äÁ—¨‡<A„Ÿ|30O¯ðnf?Ål4újã¬Äž±Â%)–xpÀ%û’‘äàšÏYl ½gÇ)0d™\!{‰µ³&¢‚lˆà‹ðI¦)‰ 1ÎtH½l=&ÿÕW_e\戂¥ö”«€ Åñ{È!zôàƒÚ=|x¤›ÇpðEœyHðʇ*Û{!—?³-½Œ-_/›yöÛ5ŒV.2¸$óâákBÏìž Óá] ‘m`gêÕÖžrâE±l{‘JBú*Ž…€KàÒA‡"tð0”ò±"w›Ÿ)¶G}o¿èàºC²¥’ êíÂϨÊÚŒ˜1»œ¬¬øø{õgA?ã£éü;qú¬ýgj¼! º³7JÚ‰ÕiØ V>æ9—bv¸0&#’9°BLÁ5Dbæî”+ÓרML'dqúNÁ˜-.ù,àyÎß9n¤²/1_ù‘$xëƒß ‘Þl^9‘jÒ™oˆŠt:d=éã˜.¬ BÓåB`×ÄÚoç)ß2ù‰Ä 8ÅB6%"@-ùDùZJß!L¥y¢É”Ñ÷ßõ±äIŽx0Q¿ÜÂêÌ[-Ö£…Y“îd^IF'VÙ´Áºã`á™áán¾}]òÑ“+E¨Ó4æ6/Hwõíë[é"=â[ø:N§„Û;Sˆ/"gç(.m§\å¸ÐpÉÔ¡\xÝŽá)Jîrvh½sôæ%xo¿ôrÞ!YQp3qÝOXŸfÝHK>•öãoGtœÏµú:ÎÆÁe§bΖaL†½o¸ÌSe牟»Sxâ9Dš:s·tziÎq}˾Ä"É÷•`+ÿ|ßlVN¤Ü¢³Hõ^—Kïk콟§oÙÚK ªól€WKg¯eÖ Þ–D ØÊá+¼§\5Vç„ùHó&^¸†°‡l÷ز-àYŸÌV: .ù.=Ù÷q…Cœ}½e/\W~½¸ÓÙ|98Gqië<å*Ç…†K¦E 9àvJTØWïí—fÎ;¤Óã÷Jp¶ôž55‰t/œb# ÷§ÅðùV@g{{ß¾É;»$~îNåÏ!Òœ:;G (û‹$?@ŽóTT5|ßlN ‘Êñq5"IOeõì%ô…AAtÁ<ƒ“˜á¨ÆÚ=y’‰ XQ¨½¤l†/HRÄ,¦dZž»/± D®†/yŸJ’0øó9‘œªHù¾ðê$[2…Æ…ç¯E Ø N@¯ÔÑ%-ÏÝ÷ ^ ¡ÒB}•S¥ˆ€ˆ€ˆ€D% ¨Æ‘˜ãÌúùÏ •D@D@D@J >O $tôäÕ/jFLòRWÚˆ€¤j,~Rõü4¹´B nO ¤`ú`§Žë¨Yˆ€ˆ€$+ÊÕHV—Cʈ€ˆ€ˆ@j# W#µ]QÍGD@D@’¹ÉêrHHmäj¤¶+ªùˆ€ˆ€ˆ@²" ‡]“ÕåHZeô(oÒò•tH{Â|_»\´õ¾à7œÒÖ„5[$#À“›|ODÔç7µ’dW@‚E@D@D U,—«‘ªßšœˆ€ˆ€\lÓÕ˜0aÂôéÓ½"Õ{[šš?þøcÇŽ‡ŽÔÀÖÇ*Ùvô-¬X±bÍš5¾§"U& K$QªA z®F“&M|8;,ЩiÕª>G×®])?õÔSW]uUÏž=)cbsäÈqóÍ7?¾wïÞ„ØkØ·o_Ù²e}ôÑB… ÑÆüÍš5 w±mÛ¶¥ý¿«ÿõÿÖ­[GŒ±aƼyó"³T©Rλwï&˜Aî+{(WÿùgÎFÒÊœõŽˆnx+W®¼ì²ËüñÚµkÓÇÏ`õêÕèV­ZµÎ;»&…bÌñå—_¦±9E3ç\Þÿ}4GÃ-ZÐý†n…킟ôÆo04ƒÖ¨Qƒq3dÈ`EÝyçãÆã’£zuÈLY¯" " "p±DY”{Õ*W®•[¶l1§¶oß¾wï^SÞ¹sçï¿ÿnËä%Lž<¹bÅŠØKl!F÷îÝ¿ûî;»Ä§%+þÏ?ÿ¼B… x!x0¦¯}=yòd·nÝØ¡#ö¾OŸ>˜m{–ÊäÏŸÿÛo¿%ªQ·§"iEß_ýõmÛ¶õíÛ·M›6ùòå£ÙéÓ§ñŸ~øá‡»îº á%J” ’ :'Å!¾ŽÔœrÍ¥J•*8Y³fÅÕ0bmä3µµk×â`á L:ÕnÄЧ­|ùòëׯç”"ä«ë…ì¥f" " "DBE5œcÞ KàøñãÎJß2ÍðˆískÍ+á‡k®¹kmÛgÉ’eÀ€™3g>uêÔ¼yóˆa,XО]ºt)Û"õë×/Y²$fûÝwßÅÅ)\¸°mÀlå_Y¾|9«ÿgžyÆ$loÁ;âµ×^Ë(d•þöÛoµjÕ2{"¸D¸wÜq§礜õ”½’¯»î:üŒsçÎU¯^ÝÕ˜©á¢15vêÔ©ÃÜqSÚµkgFǯêß¿?‰ .ÄÛpõ > ‚å謈€ˆ€Ä…@ÌQ 2És4kô` ®¼òJãgŠ`/ eË–<òΛ¶cöìÙñ38ÄÞóºyóf{Š^ 4mÚtÚ´i3f$Âál@ùòË/ïׯF±ŒúE"Þ±ë¸)Ù²eÃéÁ%"±&íƒ-×pvR®z½’½ml‘OŽ-5(€ÿtæÌ<Ó wîÜø”q_œ¸l÷€Bø  D§D@D@D ^bv5æÌ™Ãؤ\X ð<(ã™°•ÎÂüùóÉZ`ùþÉ'ŸŸpž²e(»L;—ÊF}öï?öl[ÀTÓ†€>ͪU«L}T­œ#²…ñÖ[o=üðÄÌ>Žq’b(˜¡’©ñõŒ'AÅt!‚B<ãŠ+®0‡‰yõ^ ÄHS_H$P(,¸—-[vâĉŸþyÆŒ˜É‡zÈ Ì†È¯¿þ:{ölâÿìøjCGê‰^,^¼ãÊ!NI¦L™¨dqO_b$dE ÊøVH¥J•ÅÉê/dÓ¦Ml¯˜UÓ†œMÂ$ø8äWâs „SZyG$#ä믿&ÅÇnq†Øò@‚I1Y´hÐR&âÆo´Šùœ’QÒÌ¥hÑ¢sçÎÅ"µ“¨Œíhå³{ˆßël`[†)\ 0ÝÕFD@D@’Ž@(WƒˆÅsÏ=Dz›Ç@0l…°Ý=¶Ñ IDAT`t"œ@>#OR°õ@f¥¯¢·ÝvO ˜çc‰à” 6Œ¤H³oòñÇ“щÀÖ­Ý?ÏÁæH¯^½†Ê ‰4<ÿüóNWƒôOÎr 'w¤cÇŽ¤Gp •wDì4Ô <!ÅŠ#…ӌգGñ4h‡¥K—6QŽôGö+ž æBz©iÖ AƒuëÖ=ýçßÝwßmû2ä3(³fÜÊ•+³‰cÏÆZ¸@±ŠR{ˆ/tH¤D¢$Kò,‡¼KB´!™«lì4]¨á”ɈôÂWz`­ãlãäW"ÐlyØSÁZyGD±œ+ÁHþ C΄«ÞuÈwjìÁë¢=û ®¹PÉ£(LÁÕ‹C4!Ž’àx†W`@ _V¯Ÿ[ à£S" " 1è>p f%8KÓÅ?3¤ÉëŒÚÒø4Ãèº{k\ ¼€m€‘vÆ9l}°VÞ‘ßín .ÆÖG*ø¶÷­4¼šD’¬zH‰âàj¤ÄiÇ]g¾„牻| J@®F|.Éñ”ÄRs…üÍß$VDâE@D@Ò 8äj¤T©bž[9©b~š„ˆ€ˆÀ…&p!r5.ôœ4^"¿!!X]E@D@DÀŸ@Ì_áå/Fµ" " " "àG@®†Õ‰€ˆ€ˆ€ĉ€\8”?r5ü¨¨ND@D@D NRáîz˜3Nï ‰(º´j¥ÅÿüO*t5˜³¾~;ê…WH$žjä;¢>Û¨ ”DrVwH£Bn#ÈÕH£ïM[D@D@. °®Æü±oß>~&þĉV3~{}úôéæpÅŠkÖ¬±§TDÏÕà×Õ§L™2mÚ4œ ~ýüùóüH:‡tž9s&¿œÞ¸qcʯ¼òŠùõ`={ö¬ïoÐóËìÔ¿÷Þ{ȤÌï­á T¤H‘æÍ›/^<鋈€ˆ€ˆÀ#ÝÕ9rä¬Y³6lجY3~Ì}ëÖ­›6mòê7jÔ(o}ÔšN:íÙ³o&jKrO† räÈ‘7Ž;¶C‡è&o#*75‹H Šs°cÇŽÙ³g,X°}ûö9räHŸ>}áÂ…ï¼óN¯Æ½{÷>|¸©Çéܹ3ÞI›6mì® .EÏž=.\H4â©§žZ¿~=ßÿý 6®hÑ¢ÅêÕ«½b5Œ^ @믿¾Aƒ­[·&¾Â޳Ê" " " É@WcóæÍdiT¨P!]ºtÁªïܹs÷îÝ´9yòd·nÝ:Ô½{wzõéÓŸ€z¬\¹rüøñåË—ÇϘ:u*•UªTÁƒÉš5+®F¾|ù‚‡pž-W®‡[¶lqVª," " "ÜDq5Ìò™2e ¯÷Ò¥K÷ïß_³fÍ’%KâIìÝ»×:xýû÷'¼{a¢×]w~F† ªW¯Óï›Þ ãøñãáSK O Š«‘'OtZ¶lYxÍH¼ ñäÉ“›6mJöhÆŒ‰p˜î¹sç&£“r–,Y–„—émÉž ɤ1B¼BT#" " "Ô¢¤…ò ÁÒ)xÒ5W®\a´ÁŸ Y£FH§Óž6 p;æÌ™CDzeˆBÍD@D@D@. (Q Ü‹{ï½ÍÈèüñÇÙ Y°`Á°aÃHȈ¤n¥J•²gÏÎC+sçÎ%{cÑ¢Eä–FjL}Ñ¢EÙ¦YµjOÕ4ãÔ™3gˆ¯XÊÓ.o½õ’‡z(¸‹ÎŠ€ˆ€ˆ€\\Q¢(ײeKžqåaÔ®]»rHj¡Ž€,Q÷êÕkèСýúõ£=Ï?ÿ<©‘æÉã$ëÖ­{úÏ¿»ï¾;R3êÙˆyî¹çx¤6oÞ¼uêÔA±lÙ²´×)‹N ÝÂ(ÁI¼^}õÕ~†S_€AËÞ rECJvŽâ-ó•ìú¹5/Õˆ€ˆ€ˆ@| t8ƒüskåèQ £NNFL*Þß>¦ÇO‹UK‹K J®ÆÅUN£‹€ˆ€ˆ€¤ta£)kžsBþ²mÊš—´G l®FÊš˜¶cRÖõ’¶" " )—@Ür5R‚ài§¬¹H[HÑ”«‘¢/Ÿ”äN@®Fr¿BÒOD@D@R4¹)úòIyHîäj$÷+$ýD@D@D EH»&æ’è)ÙÄÐS_4E K«&Qç+WѾ×ÜŠªD@D@Dà¿ ð¼'ß.õ©Om ü76‰€ˆ€ˆ€„#r@®F8œj%" " " Iâjð°;vì8|øp$•¢60'L˜0}úôHBRGýƇ~êÔ);³gÏnݺõèÑ£¶&© ^’zDÉH;Båj4kÖ Ë÷ÑGÁ¥I“&¬U«ÖsÏ=g0}ðÁcÇŽ-Z´è¨Q£¨™8qâÌ™3:tþüù2eÊ 2ÄE3jÛ99sælܸ±­ SÀT_zi¨y…‘–Ôm5yòä:0ÇÈ‘#çÎ[¨P¡½{÷æÈ‘£G×^{-§êׯÏÙ3gÎ,X°Aƒ÷ß¿QÌÔgÈYóÓ»õêÕ{ðÁ/¹äÿCùóç[mfLš4©nݺØÎýû÷ïڵ˞2…¨ \íc=ìÔ©Óž={¦L™kGoû'žx/ãí=Çš\¹ráNç`ðàÁÛ·o'“5kV† ¨Ó¶m[3gÎÌa×®]ñð ýüóÏW¯^ǨѥK€(ZµjÕK/½DˆÅyÊ”í«WŽSÛLˆ „l °æ>~üø²eËÐ×?l¦ŽÃÝ»wÌ •Claùòå]ZFjÀ–AçÎ6lئM›5kÖ¸zqèÛW³ŠCÀ*;ýþûïoذ K‹-V¯^M/t{á…î½÷Þ‡~x̘1¬æd<’ž={Ξ=»iÓ¦Þ±¨=z4† vß}÷a¿§Njš;vŒ.L¿cÇŽóæÍCÎí·ßÞ­[7jLFlÕªUÍš5±è¶ÒwS™'Oü Ê„1f̘Ѿ}{ãgPóÈ#¤OŸþã?¶ÝñHJ—. á#GŽØJSH—.1¤x€PÐÎ;]g]‡.9VW3Š€ˆ€ˆ@â $ÄÕ¨\¹r¦L™,XÀð_ýu•*UXvcê8,W®\þüù¿ýö[¢X}¯~¾ Nž<‰µ&Œß½{wäôéÓkêìëÛ€° æü‡~¸ë®»®D‰h¦¦W#_¾|4@ìÚµk±åÕªUÃ]À0b1Æ+V¬`ç¢bÅŠÎl™=#¶*pƇ 7›Gœ3gNÞ¼yâ·ß~{óÍ75jÔ¯_¿_~ùeÖ¬Y¦oÿþýq>>ùä“'Nà‹˜JܲzþÌÓA »çž{h¶yóf^K–,iºðŠCÀ¤ˆRüÿöÎî¦jÿÿÿÇ<QDÆ$”L^™t»B·„Ÿ)¢ðS¢ûÒOJ¼„2E—«º”)iн^^ÊP亨džçyÈüàÿ®uï¾»½×ÙÏ9ç9<ç9>çåµ­ýÝk}×w½÷~öúîïúîs 1qãÆ•.]ú¶Ûns„îÑœ¼­[·á?üðÕoóáÑãØàV¥²ˆ€ˆ€Ä„@4®3Þk( ˆç×­[×1…$ ² ªT©ÂlÇÿüùóC¦`­°|ùrV[ˆ0Ñâ.ð|¿}ûvwCk…+V#¹ï¾ûpêÕ«GjB‰%pH\`ÆåM_Z¡ŠC¬/<ûì³¹sçž3gŽãÄ` ù˜„RÜ9eôP!W®\¬n4nÜxË–-fþ&f`<j²Â‚ÍܨQ#ŒABæž{î!²‚ƒb?È É0ë{>Hœî(ày`¹ñØ96£Êì0ÏfãÆï¾û®SÁS ’D ËÈñðùÊ©Ž§² " " "JQæjÜ{ï½K–,ùä“O˜Ã˜Yß{ï=ÇfGôY `Ábذa„ ˜õ£üÈ®@NŒaÚ´iH!Âánb­`A*T¨à®é.› Ä2…—*U ?Ÿ¦`Á‚H (à1ÌÝÖ]&RBP„¸Þ ë#ŒÝ%´c ¸8‹/¦¼zõjÒ3häÅŠ3VpLÁ½5ùŽ„` ‰ŸÄ`Ê—/ï>Œr³K„Ëñ ÁXœ:î\ºt©hÑ¢FÈz n–»åpôxšhWD@D@¢&¥«ÁÔËC?y‹5kÖtf\Çæuž¿‰ A®"ç)x*˜¹Ÿ&;wöÔ4»Ö 8 å)ßÓÄd $ Á–•S¯ˆÙ=oÞ¼žú»Žª‡zhìØ±ìR làiBЂ…!„8%¸dƒj$”rvMD"Ž—ˆP ÇÕ01üS‡wIÀNš*a‰¿ýíoOÅÔ!S¨P!Ç;q”» áèq×WYD@D@RC ÜO`?gΜL®êYžpwO*%‹„È »“VΓ½©f­P­ZµÁ®“¼ùúë¯34ÏÇígP™ÅNI aч]z†NÂfÆ Ùu>ÿû¿ÿ ^^v$¦ÀÛÈp ÎD¾j8c ¥Ç£V»" " "J)G5È=z”9ÏÓS»v혹ÍëÂÃ1b»8<¦3íyž°CUàI†¬¼Ð–u ÞçtV°æb­@´€ïí`J¦¯f ïœØ°aC¯ß>D ¨@Œ` ö_Bú5Ãü°êA§D#˜×‰ÜÜÿý¤k¸W.ȵä[F®›Bvj xúòË/{`¸Y¤ƒ„ÙÕ°ãOúþ ÊÉý$”â‰^à“18|RdxˆVÉ’ ± €³b…[æôh™]Ö³œx ¿§• " " "CI¸ê˜)©°lÙ2^(}æ™gj:‡'ð\N¼!T&D@Âø<ß;Ú<kâ dªšïª2õ‘°–*³Kf%ká<ëSŸotw~nÕ’7Íš )8+ÎwgÇ… Þ4aÚöØIØã_ZòT³îÒéÎ;ñí`h­ ¡ˆ€ˆ€Ä~Ã&0c2çìšBTƒtžª;vìÈÌ È}ˆÝp2å€ D/üõÝk¿Oã‘àv¸•„_&ÅøÄð·WxÚòÎݨ{¤-ºc'~å’ˆ€ˆ€ˆ@:"‚«ÁBF:ÌU5•ÛÑ!ÈaÞm¹ªJ¹ˆ€ˆ€¤w)¸é}xÑÙO,Èúø³¬ü¯WÿnW;" " " >)äjøê_ÏúËu1f RD@D@¢"Ú\¨:M÷‚©¥ûái" " "p „û½×Ð$u%" " "8äj$ιÔHD@D@D  ÈՈÓ"“D@D@D qÈÕHœs©‘ˆ€ˆ€ˆ@«‡'E&‰€ˆ€ˆ@â«‘8çR#8$ W#OŠLÄ! W#qÎ¥F"" " qH@®Fž™$" " ‰C ‚ß@±þ,ˆŸDïN-ýBID@D@D@®O¸êñt›`L£ÿúAp…x8:yòäœ9s6oÞ<:cÖ¬YÃÇ—/_>ºæ¦Uj”œ?þàÁƒ7ÝtS–,YRcƒÚŠ€ˆ€ˆÀ5 ™«‘3[dõ@“&MJ”(1~üx3˜Þ½{Ÿ}ú°ûì³Ï2¿òÊ+3fÌ@ÛåË—;tèð /T¨PÁT^²dÉĉéš^h…p÷îÝãÆÃ*„õêÕÃ$< B¾|ùj×®=iÒ¤b»¯¾ú*?‹B£Íl1€j#GŽDÉáÇ1Œ¸KÉ’%ý6 Ç(I±ßF¹í4¦ÒÊüÒ}©R¥Ü¨," " ñF ²§óÓç’ƒÿE4¼±cÇîܹsðàÁ]ºt)R¤mÏ;×·oß'Nôë×XÅ Aƒpü: f0óáe§Â®]»Hb0»{÷î=tèå5j0©çÈ‘WÃô‚jø •+WÞ¸qãÌ™3‘\¸p®×¯_ßµk×Zµj!t–HPEjÅ”)SªV­ŠÂîþýûiB|XÄÁíØ·oß7Þˆøàƒûî»õ)#ÑVD@D@â“@„®ÆùäÓÿÂä•+WŽ9”¿gÏž:uê˜èÅòåËÖ¯_Ÿ,¦gŽn߾ݣsÛ¶m[¶l!Rú·Ï7ß|söìYO÷.™"øÄ'èÅD8ŠóÆo˜pÞº¦;‚LÞDDrçÎ=gÎÇÑ!ÏcÔ¨QÄ0n¾ùfG9Y™èäóý÷ß3÷?óÌ3&äн{w„ÄŠ+†B}« FOp¿~;M«áÇcáK/½”ââ‘c­ " " "&"s5.$_þçø¼1áÈIDÂ.s$3}®\¹†Êܼyóf„dT°%~ЪU«?þ˜¹œ‡ÓÖæÍ›G–+d†ჷᩓânÁ‚Ií¤ZöìÙqz(“`‹÷ÂÛp.^¼ˆßÃ.Ÿ 8nŠ‘8[²%¾úê«xàÑGEˆwÂzGÇŽI"a1È(w*û ÁýúíDëAK—.Å%Ò(~ž’ˆ€ˆ€ÄÈ\‹É—ƒÿù‡G³© <0ï¥0« ÔdâÝwß}ê©§ˆ+3@ÂÌʶY³fÿøÏ‡5·ÎK—.‘¨ÁB5ùÜsÏ=dhº×Ppe¨ƒâöo¤8åσ‹éŽ%4çÍ›×Ý»¿LЂu–Ûo¿oÉ]´h™ø¼'BlÆÝÄjCýâÑcw+WYD@D@â“@di¡/Y2'‚†¯ÀüÍWYà@|ýõ×§OŸ¾ãŽ;hB4‚ݻロ—N™•Yã@X­ZµÉßœ?>óñ´iÓxÜüñÇ©Æòþ •¼ºI¶&É•É?0`YœC† á¡“Úé¨e©‚\HÇÏ@Žg@´9e¼¶¬­<òÈ#Æw1 ÙÅ_éÕ«f‰ËúHÿþýqP:wîL¦*¯·°¾ã¯æ–5”Ï@hH2)šºuëâ'3†„PÂ6xT¼B«P6D×/9¡øancTø$tôèÑ0-ã‹ÉhúÇàÊsÿþ™õ‹ÉñxÄÇ¥ð|#ï_ðtއáQ{êÔ)&ÈäðÈSÜej'…“¿&/‰àĤ˜G‰÷€›Ïð+÷HøæÂ3ÑÆ‹*æ¥YvlˆI¿3´+" " iKçÁ2%Ø„'p4à¼{ĩɌnÔý·Ó$¸ÀÊE¨ ¡ò:=õqG<’(vŸAC¶<5£èTMD@D@D  DàjXÃq8$™$" " "?"ËÕˆ»e‰ˆ€ˆ€ˆ@º W#]œ&)" " é•€\ôzæd·ˆ€ˆ€¤ r5ÒÅi’‘" " "^ ÈÕH¯gNv‹€ˆ€ˆ@º W#]œ&)" " é•€\ôzæd·ˆ€ˆ€¤ r5ÒÅi’‘" " "^ ÈÕH¯gNv‹€ˆ€ˆ@º Á·…^¥ñ¬Øqö*i–Z«Màžâÿþ­õP¥½«eMî.Ê>ÉE@D@D@â–À¼Õ{S´M ()"Rè ÈÕˆžZŠ€ˆ€ˆ€¤H@®FŠˆTAD@D@D z)»Mš4éÒ¥‹ÓCïÞ½;wîììª " " " Rv5눀ˆ€ˆ€HÕ(ëÖ­›>}úÚµksæÌÙ¾}û† ÒÙŽ;F½iӦ… ÷ìÙ³|ùò)äË—¯víÚ“&Mš:uj°M:*" " "0RÕ;vìÎ;Ì K‘"¿¾°zîܹ¾}ûž8q¢_¿~IIIƒ º|ù2ò½{÷®Y³fÊ”)U«VMvˆˆ€ˆ€ˆ@Š¢j\¹råÈ‘#'OžÜ³gOƒ 2døÕkY¾|9¦M›–+W®F0¶oß^ªT)eÊ”iÔ¨Q7ÜpCŠ6©‚ˆ€ˆ€ˆ@ÂH9ª‘1cÆóçÏ;NNNFÂ.A –EråÊ5tèÐîÝ»oÞ¼áØ½hÕªÕÇœ%K"¦mägÚŠ€ˆ€ˆÀõC å¨F¡B…öíÛwöìÙìÙ³É Jqçw@µjÕªX±â¬Y³ð-ˆXŒ3¦`Á‚jÖ¬™ÞR¹~®!TD@D@¤Õ¨\¹2ù“'O>xð ŠÓ§OßqÇh$-cÞ¼ygΜiÞ¼yîܹsäȰZµjyòä™;wî‚ öïß¿téÒÝ»wt¯C" " " ‰M å¨)Ÿ, ÌŸ??—‚¯ÙxüñÇrñâEü7ß|“•”Ûn»­C‡©0`À€#F 2„]VLþüç?-Z4±!jt" " " ¡$=z4Ô1·œ¥Ò?yÍĤ:‡.\¸€#‚‡áHLáÔ©S¸ drxäþ]~ÙU?·æÇ"‰ˆ€ˆ€Ä?~n-ø—]‡Oœ™rTÃŒ¿Áœ ñ“Ÿ…ßùðבDD@D@D á ¤œ«‘ð4@«G@®ÆÕc+Í" " " ÿ/Ü”«ŠŠ•ž«ª_ÊE@D@D@ÒŠ@Ú»Áé$iÅEýŠ€ˆ€ˆ€Ä„€Pb‚QJD@D@D@ìäjعH*" " "r5b‚QJD@D@D@ìäjعH*" " "iŸ“a„RÂW‘†:$¹ˆ€ˆ€ˆ@ê ¤øzG‚»Ô·ž§þ2’°çë*´€bE'¡ˆ€ˆ€ˆ@lÈÕˆ Gi°HWcúôéÓ¦M³ŽPB4$r®FË–-?މY³fåÇ]»uëv×]w¥¡ÅÖ®çÌ™ÃÏÜ?ùä“֣Ѐˆ€ˆ€¤°¢7ÝtÓ„ Ú·o¿eË–I“&¥•­êWD@D@D ÝH9ªÁ2gÎ\ò·ÏŒ3~þùçË—/=zݺu‡®T©RÛ¶m9H5$,d¬]»6gΜø% 6´ çÍ›‡žÁƒß|óÍsçÎýè£^|ñÅ;î¸cñâÅ_}õÕk¯½¶{÷îqãÆ¡ =õêÕC ªgÏžùòå«]»6îÎÀ/]ºôÖ[o8p€:/^Ì”)¬± GkF Üé999yÁ‚ÇŽÃ'È!CÆŒñ0²gÏÞ¿ÿ,Y²üùÏÆâ±cÇž>}äÆo4cð ‹/¾k×®U«V=ôÐCß|ó å•+W¢véÒ¥8.\èÛ·ïÙ³g»víºiÓ¦™3g"yî¹çжwïÞ;vlÛ¶­jÕªx!/¿üòÁƒ;vìˆäèÑ£… ºfÔÔ‘ˆ€ˆ€ˆ@˜Âr5öíÛ÷Øc1ýã@ôèÑÕÝ»wg‹çQ¬X±5kÖP&UâÈ‘#'OžÜ³gOƒ pGB Ë–-‹£ð¯ý«Q£F´eu†@ÍÿùÏÞX¾|9DÓ¦M›4iÒ¸qã… ’‡A•. ? IDAT‚ˆQHèbÔ¨Q7ÜpÞ n“G}”Žp\Ð@A¸"V®Fž~eZ³Å#×VD@D@D > „åj„xðÁY¶È–-ÃX´hÉDfÏž]®\9g`µjÕz÷ÝwŸzê©7{0r«°råʼÕÂâHõêÕq;p&H¿¨P¡/¹äÏŸŸ†„FLóýû÷ãšäÍ›×éÅð9(ÿ`‹ësþüyO튀ˆ€ˆ€Ä°\ ¡¬¤ ÁíX¶l>ÑfúsçΑïI¹yóæ¹sçΑ#u¬BäUªTaËJµjÕð0Èö |Ï=÷ 4yämOCÖgÍš5©À!÷§bŊ䊚å•Aƒ±pã>ª²ˆ€ˆ€ˆ@œˆÆÕ¨[·. cÆŒá}‚ø#GŽ$21yòä6mÚ´hÑ¢H‘":t`„V!r2Cy—_áî»ïfkB#¸b}„TSÞ.éܹ3¦„=X—ñâÕO<‡AÚ)‹, ôבDD@D@D Í $ñîFtF0Í“ÃA[–BXaaî§ÌÛ"D8ˆj¸uZ…î Ö2j øãîÊÄWX^aÙÅ-t—ùeWýÜšˆÊ" " "CüÜZð/»Ÿ83¬7P¬6?ƒCÄ'œ x~çÀ*tš„*¸Õ†ªÃÛ¶¡I." " "¢Y@‰»eƒˆ€ˆ€ˆ@º W#]œ&)" " é•@ô (éeÄ,#¥Se§ˆ€ˆ€$w5‚sUïtjD" " "o´€ogDöˆ€ˆ€ˆ@B«‘P§Sƒx# W#ÞΈì„" W#¡N§#" " ñF ÁÓBã ·ì ‡_-N5ÕHs½;µLѹ)"R…4 0èÅÎiЫºˆ„À±cÇøå2¶Á´€ÌGGE@D@D@ì BËÕ°ã“TD@D@D &Òl…_œç÷`›7o“aø•ð3ôßÿý·ß~Ëï¾>þøã7Þx£¿ÎU•\í^UããM¹‰ÑÅ›U²GD@D )G5Z¶lÙ¢E ~ÒݨcònÔ¨ÑÞ½©ý¶ï/¾øâË/¿ ÇÄèê,]ºôÿþïÿ’’’råÊÅïÚG§$5­b2ÀäääÔØ?m£È¡C‡úöíûÐC½öÚkñ3Y"" "”] Ô8qâí·ßŽHošW^²d 6téÒ¥mÛ¶·ÜrKšÛ…={ölݺu ã­IÔ!îõì³Ï>ñĸŒñ6(Ù#" "&°P²dÉòõ×_ׯ_¿N:n½:u*[¶lŸ>}2%*Tè•W^¡ÌÔÂì^±bÅ©S§Tx饗~úé'Ê7ß|ó‹/¾ÈÖQ2wîÜ?ü‰¤k×®µk×F¾cÇŽÑ£GoÚ´©páÂè)_¾¼Q˜/_>*Lš4iàÀ¥K—v4ìÞ½{ܸqëÖ­cZªW¯^ûöí3gÎüþûï/[¶Œ:Xuï½÷vìØÑ©OÊÓ§O_»v-M¨ß°aC„#GŽD~øðáJ•*á”,Ya8¡¶ÕªUË3wÖAYÍpZ͘1—/_îСà /¼P¡BëHú¦`ņ FŒqàÀÎà‘#Gˆñ¼ñÆÔ%7#rhgÊ”ÉFBµõàˆ•†g f7GŽ·Þz«õ„" " é…@XQÆçÏŸŸùæÔ©SîíÚµëàÁƒFÂ’ án§¼|ùò9sæ0AnÙ²eÀ€óæÍ»ýöۙݿùæG“uªT©Â?jÔ(äçÎ#`N¥_¿~øƒ b®EŽò5kÖL™2¥jÕªøކ .Pýúõx*Lö3gÎ?~‹)á `•„IššÌ…LÞ´ò/·çÉ“?ƒ:&H¾mÛ6#!z1mÚ4ä´"Âaº+P €ÇÏ@¾oß>¶f=ýÌXx L 4­ü[ª±@À‚^ÎgŸ}Ö«W¯2eÊ;yï½÷Èxe¦ŒaNÃèâv5Þ Í3(«N§þB8#µŽbõêÕhóÏå¡ä¦k‡¶Õø7ZuZ ðŒÅªÐSG»" " ‰D \Wƒ1óÀÊüDØÀ=~ófAjÞòଶ˜îfÍšíw÷ªÌ²‡ˆO˜ 8 x6&žª r|&òHfÍšÅôO¤d̘1„^H)xúé§yù¶wïÞÎC€ë!g î£ÆïñÊo†»•) ”éuÆé1ˆ~ùícV BÉ=6Xÿù矩æ×i5À3«BO§ÚH$¸Lä aàŒŸpÅÖ­[ÉÃÀÿ ÔïÈÃ,ð¤N[V®\‰*ôW«Vˆ¹¢*Lž3bÑ¢EC)4©¼×Êê ë/<1“Ìw!W€þÝwßW1{ölÖP~öìY¶„XH&eeω/äÕ¯GîÖšÙÔ©cßóá7Ãib „[,Xðã?’{ÎH­£ E†õ/8ã„‘ˆŠkhÂK¡ä¬Æ‡jk5ŒîXœb=ÚHwÂJ uFõ‡?üiÆÙåI2 <òˆ™³CáX7ùüóÏŸþyæ?ÆÈ;79¤¤C’uئMBNª©U!K*ýû÷ÇË¡9ižÕ«WgqÄZÓ^¼x‘/×B9_‚—ƒóÄ!PpnoJ°w„7)œ&)ˆ൘jê©o”Õ OC¨2³ÄúU8#µŽ£G8pß}÷Ýc=ÆÄo\±Pr VãCµµ€B÷@¬ =:»›7o~à&NœˆñXðr© " "^$=z45¶2+“BÈ'j%|9!³—[¯ºððÍã¸[PF ¾Np<ÃÝœ:ˆ[0í¹…äŠb ´á=ðÒ¬ûh¨2_qÆêo¾RÊÚg îVþAYÍp7¡ŒZ|/Š`7Å‘úGÁº’søáü!ÒnðÏPJî1ÀìzŒhë7Àhð Ä£ÐÝ)_ª¯Ÿ[sQYD@â“@¿a¸]s{0[zô.‚Ñkò:úHñó¨¿ŽÇ ðWðH¬J\©R¥¶mÛ–,YáÆßzë­Ô«WïâÅ‹™2Ùm¿º`!fíÚµZÚ·oß°aCzÁ†|ùòÕªU #“’’ºvíZ»vmä»wï7nM¨ŒÔ§#§~£F&NœÈ!š—-[¹U¹u°TÖGD@D@ž@dQÓç’ù‡oÁ?§ £Ì_bv­¼Xò8xðà”)SNŸ>}ÿý÷Sçܹs}ûö=qâD¿~ý˜× tùòeä3fÄÃ@¸bÅ ¼£mèС{÷îm×®»G5Bÿ6ü^ÆŽ»sçÎÁƒwéÒ¥H‘"F]¬Y³†š*UªàëŒ5 ù… °sýúõxx!3gÎ?~¼SgeÒ¤I•+WÆâ‘û•‡¬©¯­ˆ€ˆ€$6{„ Ô˜OŸÿoTƒòã×§æGÿXä–ûÛnذ ä?ü0Ë(–/_~äÈ‘¦M›–+W®FS§Nݾ}{©R¥ºwïÎÑcÇŽ+VŒ‰Ÿ2³>!>ú(»«V­Â¥ àÿ„Ù ‘º>yòäž={4h!íìÙ³ãÖdË–íüùó .¤_<œ$ìlÒ¤IãÆâ‹tëÖÍ´ÂIzã7òçÏ¿dɼ LÂ6¿òPƒõAH<ÿhÃÛ…äËü35Ÿñáç Ð}È£êÖ[o%n‘%K–KLô‚ÕêçhÕªÕÇÌ!"b1¢cÇŽ¸#LóÆ¥X½z55Ë”)ãÑéß ³ü;råÊ…Wg³yófGUžQ³fMb0NOÁªÜ:XOC튀ˆ€ˆ@¢ˆÌÕ0«$oOË?÷º‰SÀ”5kÖN:‘h9|øpæïðÆÇ!CÚ´iCh7SêÖ­ËRŘ1cH%6À´Í )ø„Cð0H·dýÂDRÓ + “'O¦Ó-ZÚ¡CGVPyþùç“““ÉE~à 7ôïßÿÒ¥K;w&´zõê,¾8õý«rÿ`ým%„$ðN‡gÀ|1ùMÿèzvçþý³ˆ¾˜üÔ©Sä79áèÁ« àÁ._üÅÜoÞ,%àÁÊΊS-¢‚¿<B&8޾Œå^0!)•%wº¨1†øG@<ÃÑCÁ¯Üõ›án¥²ˆ€ˆ€$œ‡ÈÞ@Á“ˆ-÷do4?ƒ21§/ò.r/8 ¡ü"þ.ÜÆøz$¡”ûÍð4Ô®ˆ€ˆ€$\ˆÂéŽTŸ>}L%ÝY.ƒE@D@D ž DàjÄó0Roy©W" " " " ‘¥…zkWD@D@D@‚ ÈÕ棣" " " ©" W#UøÔXD@D@D ˜€\`>:*" " "*r5R…OE@D@D@‚ ÈÕ棣" " " ©" W#UøÔXD@D@D ˜€\`>:*" " "*ú ¯Tá‹çÆ|í|<›'ÛD@D@€@8ß$.W#NtÈ! z±sÈc: " " ©#À”òÃalƒÕh%˜ŽŠ€ˆ€ˆ€Ø „>—«aÇ'©ˆ€ˆ€ˆ@LDïj¬Y³fݺu11"†J6oÞ¦6·ý“'Ož5k–iè.»ë„©6æÕ¦OŸ>mÚ´Pj·oßžœœê¨#¿téÒž={œ]waß¾}gΜqKL9R¹_ƒ$" " "r5Ú´i³ÿ~?©¿ýío¯¿þzþüùÇï?zU%̬™2ÙÍ^²dɧŸ~úæ›o†c€Ûþ/¾ø‚±4oÞœ†î²»N8:¯F9sæ\¹råÉ'Ÿ´*ß¹sçĉ_yå•Ì™3[+ GŽÈ~øá:D'Õ¯ä" " "ûœí 6l˜yhfºÚ´iÓ_þò—¬Y³rô¦›nzçw2dˆ>(âtQ¡gÏžàAßßê»ï¾4hÐðáÃý‡¬’pì§ŽUù5Þwß}Äc^~ùå7Þx#T§:u*T¨GW®\ùÒK/ÝÿýÙ²ecwĈ•+WîÑ£Q–-[V­ZµR¥JQÈCõ+¹ˆ€ˆ€@ WƒGaƒÉx·Ür‹™¥80_¾|¯¾ú*e<U¬XqêÔ©¹råb>ûé§Ÿ(ÓüÅ_4JvìØ1zôhü•Â… S¿|ùò4ܽ{÷¸qãXˆÉ™3g½zõÚ·oožÎ™Ë–-Û§Oê<ûì³Ì”<¸Ï˜1ƒæ—/_æùû…^¨P¡Gχ~Èdi„áØã¶ßQâ)¸ë`$.ÎÚµk1;6lHeë XzÀG@RRR­Zµ05Ô0±†5"2Zv5j7nÜøÖ[oáTÁäâÅ‹NÇo]` éÎÄ‹ñ3ØÅA,±wï^gm…òòåË õ3ÛmÙ²eÀ€óæÍ»ýöÛ™˜¿ùæ:fëÛ·/ó\¿~ý˜ ?à1\¸páúõë»víÊ”tèP±ØÁîÑ£G“ü6p¨D‰l—-[æT Uøì³Ï舓¨^âUF &™#Ry¨¾$C …¨Fø˜²gÏÎjKÆŒ-ZÄ–… Âò‹/æ¹%LüGŽiÚ´i¹råðxÏÈܯưI“&7^¸p!ÎJ·nÝB­Ë0§âgáX§Na-ZÔ‘ÛãT ³@¶öŸÈ!Ñoƒ&‡Q“G}”ÝU«VÑ;« Èq¿ˆ$9në¼óçÏÿý÷ÍÑ_~ù…‚£"je$‘Ê­}I(" " 裎 S`•„Ù=K–,LÃÅŠ£ÀŠ€SǸS¦LiÕªÕÇÌQ",4P¡téÒl™qK•*Åb3ºÓ*ü‚™ŒÝõƒíq× §Œy¬n0£o VaÞs ”{-#x˜ ÄÏÀè™QÂÉn™2e<†Ym0u8ä'ànþí·ßŽ9’µ*Ó‡LáôéÓ¦F¢»{QYD@D@übÕð«vK˜PÙmÖ¬YçÎÿýþJãU8/aò\Ž›’7o^ÓФ£â‘œ?Þ­Ê:§’…@" îš±-³ÄC2 9˜8L£F3fLÀ L|Â`&õPÃôi¦|!b™‰áã™™j~k9uê”IˆñkC²uëV2]ð3ȧq*`|ži?þø# ŽÓ9‡˜8Ý–IËÀ–„x!6wîܬ㠸/Yäâ­WÞì¥L:Ë7<òHršè#" " ®‘«ÁôL®(YL{|WQ2=ÉO4ž¡Ò-«W¯Î"…±•øÄ™ÿ̼näì’Ñ«W/Ò<£âuM– ðZ<ò˜ì²²ÃW{ay‹-È 4_A0(\(²Uø2 r#†iµ ?ã‰'žÀà ”Hƒ‰PÓjr_xoå®»î²jCH¶o—ðމù8i1äð2–ÿùŸÿᘨõ#•‡êWr€@’û‡k@„P?‰$=¸û:~ü8þ„³L`ñÏKžÎ{žîú6ðZÐãRþä“OV¬X7ã‘Çj—P Ëx…ÖAa$I—d`8•­ÃtŽz ¼’Êr’yÇØ}Èc¯ºð¢, ¹~«øjúp~nU'ó^»Ê‘Ê=͵+" "ðú ›ÀDÃ|0R&£k”«ááŸ9ÄTçTp ÎËŽÄ)˜×5]§ðØc91GÃÎÇ2Ê­ƒòif(óÜ>Š»ŽÇv­~†»IpÙyßÕS-R¹§¹vE@D@DÀ¸Ö®ÆÕæÎ·g^í.âJÀºI\Ù)cD@D@®[‰æj\·'Ò:p‚Zaþ¯µ¹„" " "z×:W#õKCøü‹8á·UM‡@Üåj„c´êÄŠ@ðéU/Ò#" " ®Ñˮ舀ˆ€ˆ@«‘À'WC´' W#íÏ,& W#O®†&" " iO@®FÚŸY " "  L@®FŸ\ MD@D@Òž€\´?²@D@D@˜€\>¹šˆ€ˆ€¤=¹idˆ€ˆ€$0¹ |r54H{r5ÒþÈH`r5øäjh" " "öäj¤ý9" " "Àäj$ðÉÕÐD@D@D í dJ{RmÁð‰3½;µtÊ*ˆ@Ðå‡'E&¥ž€ûÂЦ[tœ>¥«qåÊ•#GŽœ9s¦`Á‚Ù³g7€&Ožœ3gÎæÍ›³»f͚̙3—/_þª²3wǶ­œ^†OœJYW³Ä¬çËSçúÙMÍŹyóæL™2-Z”m¤Ät¹FJÌÔOÍùŠ®Çë­Uj®j7«O·qïúË£ÿú_ÈÝiÏž=y~ûø¦Râž•R©*šGGãüùó¼é¦›²dÉ5„ˆo—.\˜>}úÇ|öìÙ 2\¾|9oÞ¼ìbÁ_|‘?~ãj¼þúë”Ç…eÉÉÉáÜǹqû¯l#þ׬ÞF“&MJ”(áXÕ»wï“'ON˜0! #M“–-[?~¼Aƒ/½ô’‘|ôÑGýë_Ë”)óÎ;ïD­6† ÎW {I_ª¢¾8—,Yòé§Ÿ>úè£'N|å•Wp¦Ã¸.×pXñÅßþ´iÓÜ•Ã9_aÞ4Üj¯A9þï@HÍUía˜3[ÄÊ|ÀÄqâÄ ¦’;ï¼ó­·Þ2:cuBݳ’ÇZën¬úµ*Osa¤40øí·ßž={¶¹×•+WŽI³páÂQ $â+c̘1sçÎýÃþЦM›Ü¹sïØ±cË–-þŽ™hqDüò%={ö|8±ºY³f½üòËo¼ñFDC3—ký:µœV‹–|딯Y!ž/W+„ÏWD7 kWUÏÀSU»ÑåÊóMÃÝ»wøá‡<vïÞ0ù¾}ûŒ¶´:¡iÕ¯›a¼•7nÜ¢E‹B… 1)¿ÿþû‰n™9Ï߯œ/ŽŽ7ý ¹^½zŒÚ¸®ÖSC¿V ;uêĉëÓ§ž}öY®H÷)£ä–[n©X±âÔ©SsåÊEÔç§Ÿ~¢|óÍ7¿øâ‹l©ã7Ø4ä¨]»ö¤I“¸ŠJ—.Ð/çÙ×Qq«bZ¢#.NN—µ çâäÚ[¶lsIÓ§·ÝÚŠ{bÕªUÍ5 +FAG—èoVÿ{ã\®ÕªUsËq;V®\©Ë•«%`±Õ9_ ó_„þ›†õô…ºª*û/ÂHÿd08žï˜—š«Ú}%›ò/ç’ýÂÉþýû¹Û;vŒ&÷s[ðŸÐ`ìü¥3 þä»víÊ)³vÇã±§Žÿ¼{ú¥S$ƒÆ*š®æOþŽ;îX¼xñW_}õÚk¯ù5еUêÚs›ê¿°9j½ÿ‡sk5=“±šê7ƒÛ»±ó†n À„ï6;ürdnÄ\UªT1~F@7{÷îå2¢Â¹sçúöíK|¬_¿~´â¹k 9˜×™N*W®¼qãÆ™3Mí¬Q£ÓLŽ9p5Š) ŸC\Öÿ‚ÛúŽ;vçÎ\X]ºt1]‡²ÜÓ¶zõêY³fýæ›oýõ× ![¶l†O( þ¾hkf̘t+V¬p"=C† mçΙn—/_Iš[û 8_„a8/ëׯçï“+þκ’õÔ„²p×®],ãq” :ä”±mΜ9LÆÄ½ €Ósûí·sÒ +«ÁF kóS¦La^Ç2ÚÈC}ta.NlÃ~n¦¢‹LxÖVÜ ñðŒ«Ge–áØâ¦˜†ál͵ê¯Jî¯é–ø¯«Ùî&¦Ï—«ßZ#áº2ç‹]ÿÀ=7P¬Wu@eÿEÅŸ Ç3ðÔ_ÕžSvú\rð?Oý»ï¾›"+üÁòiŽzNh0vN7¦$žÇFåÑovy*óÔ±žwO¿<~psXµjJ¸eQæÞByéÒ¥8V V!M¬×ž±ÍÙú/lYïÿh ¾µšƒÉ„2Õj ùå–ºî»ï>BPŽÍ"s5¸4ÑÎÌ~@áÉ›ço–y8—LKÛ·o7Í™y7þÞBîàø<[שSÇøPEtMèáþFbÙItm°,wkñànBŒôâÅ‹¬žÔ­[×9jÕ`íË*D؃#Y¬X1.$Üsq·2¡E UÇtgí+à|QŸñÌàÒAkaü5/…þSÊBÓ»uK¾ð°aÃ-°”Æß K=zô &Þ4[«ÁFžw š§G¹#çò_TxcÀá@ ãjÚ´i@F''Ž\´… 2p< ü$NŸµw+š jâªqæ?Ç€‚¹\ýBÉý5‰õ\XÍvš8…x¾\#C¬÷Ü48ø¯ê€ÊÎÅæ\„TŽèOÆŒ"ž§þªöœ©Ó瓃ÿyê™^…­[·2ÌŸ?Ÿ þ€›ÌСCŸþyþr=jî-ž^üu¬çÝÓ/Oó<êüë_ÿâÆÎ½—;-I\°‰MZ5X…Æÿµç6ÒzaSÁÿ7­‚o­N2VSC™BîÞ̧ˆÑé62WÃLl°¿s5óÚªU+²GIh Âašóö ©£”Ç Ã×ijFtM›&Lx,78‘„„]ðq¡3ypn8»äc# °ÜÑ` ÷Þ{ïéÓ§?ùäæž{î¹Ç9jÕ`íË*dþ#Âß±cÇÖ­[ó'd­^½ýþ(–µ¯€óe–EÍò½£¿(æoc¼ÿÔX-tFj-pæÌrÆq5p•(¸£Vƒž XMGnmkFä^ѰVs›Ê'ƒ›·9Î×€µ•ÿúˆ_èVî)›ËÕ#d7”œC×Ûåê‡ã‘„sZOŸÑ㿪*;›cC¤2Nø½?ø/àH¯jgŒ¦p!ùrð?O}v™ÀÓ²ü1<™˜§#wµ`ì<*àÌQÿÖ[oeK×ÝÖ”ýuλӜ»Ö]wÝÅý–) ,˜²¾À{—,g[5X…F¡ÿÚs:¢`½°­÷Ó*øÖjêøGíîÑjªÕ Zp"–ÃC©ÉGtë ¿Y®3wg:&ZEFB8Ý€˜jÍš5#àN}êøÿü ÉÃà½Ö'ÿô¸ÿ’i3>²&jIÀ…Ë»3ƹáᘜg£E X­Ç+â‘_;|Ëi Þ#ªY³¦;äJƒ¿/l𠉑°XøôÓOóR Äͨf² ˆ¾P&¨ÅÇÌßÖ¾8M¡Î—qòŒTá$ñ§ÅËD”C}üššxlð Ýn\(%ŽÜj°s4¸`mkü$3Í­Õ<šy{ˆüjwˆŽöêÕ‹£ÖV<0qÈœ ¼¸têÔ)çy×£Ó¿ë\®ûd~»Ç~M2vÏœOÖåú)ÿê"tnÖÓJoD•£ø“1ýbs|ÞRyUû©^Lþuq<Ò3ˬüþøã&ÑàœÐ0±륕ûIÃo†SÇ(·ÎJN¿4gqŸp5‹Ë„?q;XA`ÅŸ.¸É[¯ÞF¤•U­ßÄa[ïÿžVáì:£vW¶ÚO¿™.y'øäÖi9²¨îÅÿøGú “ŽÈq-±H]aá'TÇÄšp¯H«Y°`óΑy¨ú¼&ŠcËÇ]¨:Žüì…KÖNOKWŸË ±Š ͇:ØÏUŽ»Ê¤Ž—Í"Âð-g²gу‰Û»{´j°öeâ¡ Ÿœ|Ìc.''o¬eQ|¦yþPCYp¾L&§ƒç®iœ\ü¤§Õj!ý® ø‰=ýû÷¿té’{øÁe+OE?ü0)¹µ­3"ŒÁÇ"Pa­æQÅbÙÊ\œÏ …£ÖVÜï¸2Éæ1ÍMA¶à]s­¾3}žóÏHBµºÞ.WÃèqSóùùçŸÝpB]„õô¹•¸ËáTv.Bç óOÆé(nï1¹ªaR¸xérð?weÊÄ X·åñLÜʸŸ wŸÐ`ì´åïý‡~àQõM3ƒzzq×A?uBww¿(1“+3õñ0¸=R6qk««ÐcŒu×za[ïÿÖæV¡{Ô~2VS­f œy/*¢'I¿I‘¹´'žOú=W)xO=õÔ›o¾Ém×Ìv~íH˜¹I dm›(ïÇ0p2­õyä¸ð|iÖí¬uŒ'ÅÏ>Å¿³’Fb iЊ”OÞyA3–óî>¡Çÿ5.ÂÝ ÿóx«‡œP’RFdy»víx+Ç3÷X5Xû² Y}$ŒD|…„PœM®¼:bd<དKõØcá_ÿÀÚ£u¾X¡0ÎÑ&’a™eYB¢~¨ÕB*ã³åMNœqÑBiðÈCì®Æô‡wèR¶¶5#â¶Î²â“O>É{YÖjUìØàQ†•óN¨V|G8&BË«4,åò ã×J¢Ë5œËz„ÇX6üi7ÏP¡û¦êô¹õ8åp*;a¤2N/âöþÊ«Ú=FÊÁ«'õÔgáe:2ß¹Mq+ãÎFÂuÜ'4;ïD%ÉÕà¡‹Û»G¿ÙemåóÏ?7uLp=Ôyw÷K[BÈÌ\Üx’dKº!B&i¶V V¡±!xk½°­÷ÿ`=î£Ád¬¦ZÍ@'7=":Öoµp÷\N21´àJþ£ÜšyfK 9ÀÏp7$àLMžÈÝÂPeœã05ó&¡£'”“áT €Ù p)˜¶Ýrf57Î[H9"Ë=mÍ®_ƒµ/«X=Žzð+¹z¸â ᘳ/ÏßñFœ§__ 8_¨ÅEˆg8š)X-Ä">ÌÇ]3ü²Õà0›[Ûrñ "èç(±Vsކ*ø[ñ€Kò)þ(94¬+û/•PªÜr]®)^®n\þ²õ"¤šç¦á?}~UŽ$¢ÊýÉ8]ü½[Çh¦þþ“«šÑqa?ÐôטwÀgîß?óÜ¢1fîl¸ž†žêÇŽŸD`†Wç¨Éâ¯ç~îÑFsn¤ž:~ò´òôëÑãÙµj° = ý»až_C¿$|2~S­fø»ˆHµ¥«Q7ª[Ï<ó Iüá0ñªߥè¼ÛޤÍO€·ê¹©•,Y2:?ï0á%º\¯ñ)ŽxL®j·0d«P3ÅC΄šbÍë­B¼‘‘«‘.¯@üPbYx,š,Ñt9 }}ÐåzÏóõüûï¿7«טpüwodäjÄÿ5# E@D@D ÀÕø]²B:ŠLˆKr5âò´È(Hr5åLj" " "—äjÄåi‘Q" " "(äj$Ê™Ô8D@D@D . ÈÕˆËÓ"£D@D@D QÈÕH”3©qˆ€ˆ€ˆ@\«—§EF‰€ˆ€ˆ@¢«‘(gRã¸$ W#.O‹ŒD! W#QΤÆ!" " qI@®F\ž%" " ‰B@®F¢œICD@D@â’@¦¸´*fFñƒr1Ó%E" " " ¿'лSËß ,{ îj0âA/v¶Œ["Ô8vìØ 7ÜÀ6XP‚ù計€ˆ€ˆ€@˜Kr5ìø$ˆ °\+W®ìÞ½ûäÉ“1éRJD@D@D@®)çj|ðÁ_|ñʼn'._¾|çw¾õÖ[×’Nrrr¦L)y-MR_" " " áHa'˜ñá‡6iÒ¤{÷îGŽÙ·o_øªS_³gÏž˜>}zêUIƒˆ€ˆ€ˆ@šHÁÕØ¿?Á ’KYC¹ù·±rÇŽ£GÞ´iSáÂ…qÊ—/œB¾|ùjÕª…w’””Ôµk×Úµk#9räºuë>\©R¥¶mÛ–,YÒ©L…I“& 8À‰§ÎŒ3ÐOï:txá…*T¨€ß3nÜ8ªåÌ™³^½zíÛ·Ïœ9³GÕÔ©S‘è#" " "'RÈÕ¸ûî»o¹å–ï¾ûލ¿1úܹs}ûöeI¥_¿~¸ƒ Â!àÐÞ½{׬Y3gΜ*UªàXŒ5ÊÔϘ1#•W¬Xá„(Lå)S¦T­Z×Á_§F8.9räÀÕ(R¤È… ètýúõx0x33gÎ?~¼ÑïVe$ÚŠ€ˆ€ˆ€Ä ¢äIŒ3æõ×__µjA‹çŸ¾aÆ˗/g1¥iÓ¦åÊ•Ã! °}ûöR¥J1¤ìÙ³:4[¶lçÏŸ_¸p!ÁâÅ‹ã¦pˆÐH±bÅðEœ‘£w„Wr‘øë”(Q?ãÒ¥KuêÔ¡ÂâÅ‹›0a°aÃB?œ€Ä´iÓ(dÉ’…‡Iž•+Wö †¼ $$X,Z´ˆ¬ B³gÏ& â©fvê#bêäÏŸŸÂž={Ì.Ž ñŒ¼yóš]mE@D@D@â“@ ®ÆO?ýÄ:…]»v‘‰ÏA”¢Zµj'æÎ»`Á¦ü¥K—Ç‚RsÞ¼y?üðÃÊ•+‹-ŠSröìYä„:–-[†£pæÌÖV<,BÕ)S¦ Ë.87$j˜”ú"R‚kBd¥fÍšT<ªBí²ÊÚK¨£’‹€ˆ€ˆ€\%)¸x#FŒ ©³cÇŽY³fíÑ£),© 0€œMVÚ´iC¾Å¡C‡Œ}$x½ ¥ƒïÃèÒ¥ ºuë²êA ¡¤s’RÊ )žÁ„ªóÈ#à¯ôêÕkþüù,µôïߟÔÎ;<¸zõêäŽxôì~þùçK–, ¨ C" " " Wƒ@ÒÑ£GƒõQ ÂäU¸+Ÿ:uŠ8G®\¹Œ°eË–,sðb¡–6L¦9Ä7š,ãǣʼ¤êVE9T´áÖБ©ÒEÃŒgðõìæçÖið¢JëÖ­=jWD@D@D :ý†M`’ešhÎDœrZ(“:¡«ÂV¹ß)q²Aq¬M†ªãÑ !”fä,ô/PA‡D@D@D@®”]ð{íÓ§5\¾†«W³U«VWO¹4‹€ˆ€ˆ€„"KWƒü‰Pݤ¡œÀN˜¿r›†FªkHT)çj¤÷‘{Ö_Òûpd¿ˆ€ˆ€ÄäjÄÕx¢0&A ÕDD@D@D |)¼ì¾"Õ?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ÄŒ€\˜¡”"?¹~&’ˆ€ˆ€ˆ€ĆÀ±#‡äjÄ¥´ˆ€ˆ€ˆ€xlݺu϶ IGõЮˆ€ˆ€ˆ€¤’~ÆÜ¹s+T­­¨F*Iª¹ˆ€ˆ€ˆ€—À–-[ð3Úµk÷ý›2yj_D@D@D@RA`Ó¦M_}õ~FŽ9”«‘ j*" " "à#àö3ˆm(WÃGHh xüŒyóæ)W#Z–j'" " "ð{6lpÖMˆgàg˜\_ß@>qæï+kOD@D@D@" pôðÁ}Û7¶kßžb¡ø¢Ú@»HÉ‹gi£}Q„BB\hk b|6/Z½Âš&ѵ6š@Ajÿr=ûÌî0;ÿÎÌœ™¹çÌý|xx8÷ÜsæÌ™{ïï;ßùsf¾Z­f‘\Cúè €~ Ä!sÕb±P_®V+±F]H>žV¸YšõXÝrøA{‘õp½’'2¼%*)ç?zåº@;úa†Âì¡$¤@-Ø%bq@¡h¨‰œÿ@QJ0Uýèíæ†æ!4Ù®Z¬n­´]D!¢ž®ò剘•Q[ÒU« ä)3£ï€öHÌÈ€bFÀ!¥y†žJAe9O±þ±¶¤V«¼mþ9jhÖÈ`Q"p»ú¼V ÉÞ­¶†ïR¬ç|­»‹hžVá#Aú10öm<$µ×e–âš<šäJ)a, §~´Ñ3UsmHÈLÎÊuR8 H Ãý"@g©MŽp®£h§÷€\í\îZ2Wþƒß dÓõŠÕ„ˆ¶P˜õÝä1p$J+<¯ñ·ƒvå’õDÂ[r`›'—ÉõW`eNP(gq¦Þ¶Èä÷€ÿXY{*{ Öa¨¼=\×HWö~t쥷wã¯'L[?zaü Шšýý}Z¢õãøñã´ÄÂø$ùš¬œ?ÞõÖéÓ§ÑprâÄ ×[Œ_@ è €~úèúipÿØ9}ú4úÑø°Ëø¤€~@ óS§NÑ -áú@Ïž=Kã@.vwwÉ4¥ÇgB0¨ÓO=$•¤Ä1.>÷B÷ÿè±#4wi–ËeÈT`ØMÈÙ³gE´)˜ÿ@<êw$L+ ¥£M)ýâ5{êËýý}P4ÚÑN<þäOÿX,øäd#}\”Ù?ŸÏçry½^ÇŠÇ#<"4ãÿäÑcG:  ´xM„ !çõô£S§vÕ—áÒ‰D'`¨+ÊÈ ±¨§B<Ž ú°»»«X ù¥wÝ}÷=wuËO}ëfYtÕî„;³V¦mŠª9Î`ÿØÅâR,^­Öi·tšqñ¹îxç/üí×þ¾w㌱^–°Ê!ávØŒ~(B2‹ Al¼ñ­?._vËÝš„ñ+i&TIkÄr¸Hh¥‰ÅÊVeÐ.ôtÎC½~GSÏ¥=áƒWaAŽ»?V<4'á_[šu¡ÈÀôCÄåÝÝÕþþåÁår^]—ê&X3)"í‚§>¦kQ÷Õ lõsÅyÀfü‡m£ÄÕí8XW”„˜Ç ± Ö·4ÿ± -ù(Ê5½Q8V<þïùº¿¯~îb·¦û/þÄÊîÝ´ eªÃc&ÒD9`¥å?„AN` ]0Ñ&çüÂ|ôÈÌ·¿w÷=´ ò‹ÅÂóîjµt •Ï¥÷¸ZÍë×` 9äë¼Ïß{ùG¾E‹×d®Â²j^· ؤ~Äòëýêç.^ÿ†í–_xå­ÛüÎÇ>H£W -ÿ¡ÆÜMY4Ìš#!“Ññ´’NBÄõ»/þÓs›O|ü“3f”jÂy¨½~¦¥ähÚ#7ÖºÐɵ—¹¶¨@x­z…S]£•6c¬ Ð\rðÿÒ}æïÚ¿¿ÎÜíÝÞ«ÝÊÝÿ¡Å}­§o¾kÝÒwr½ëÏÊôÚ‘ÞZ%˜×I µùîÅŸ½ðïýÇ÷_{Ír­×ëßpíÍ·Þpûñ›ù´ÆãB<2`u$ò¥mý‚¡vùKÔY-?V†ì €~äáëýN9<ü×^}ê›ÏtoyÛ›~õ½¿Ègfb Þÿᕽ}ÿR7P‹¢Œ‘U¨†”Ÿe_ô#'_{ò¯Ä·ž0ß}êéóbáþØÆGFˆ¼èÇ :KqËíïøÌ§~å‡/=óoO½ú?/k\wíëï}Ï}wüüí7}3X8ãyþ•Õ¯”¤êõ4‘kÆP ! ?ûŽ;º¿Î‚¨xï‡.d<>Cä?z¥ÅÜË/þÜøògîûK*€C£ªÍu׾\Ò‰þ÷åGT½åðå‹}¿ùwÏœò‰náÖŸ»õÞûîtüÔç«ÕZL›x%¾¬å[Wǵº—¹R–æz9rFòü+™¼„×µW¸„(“µüй6 yøQÓ‰G§ÝßÓÿüô—Ýë [kñ§i‰¹^¨‚¹1Î#£„ô.›NŸúÖv4‹ê èÖ£÷¾²=þc3¼òê˳™eœêK_|\µ„¸,ˆ)$ß ½h/L¿¢­‘6H¾Œ*?ó½q3<’®éá‡H¨U‚„ Ù»ÀžÑûúë®}ÝsÏþ«X~û WÝð!#P9pÿû=ALcá?º¹=Îcº0l Wþ\Œ_ußyþ_²èÚZÎ<$®&3Ìí=kêççEþƒ¯8l…ÿ˜ãWù8ñËïî5rŒÈŒÚÖànŽ/™6Âz)°¹½§„Þwq!0]|ó×îïÏêô_¿{ñÅÏ|êá#GÞfêGgD:ýxëM×Ï®ÜfhV²1ÒÚ\›¿Ö¼òŠùk rþÚÍ_uâñÄß\SVǯğ4Ý6Ý–|rQ΃v€rl^?„xó!üG÷÷önbå—¾ø¸Ü!ÿEÙ|þãÝ¿¶è„áð›.=§ä¥ï¿ðܳW=?Q$ÒŻݖ|` .dcV¸%€ñt='£7}³©".™áŠáLñþk*w:ß[1Šë¯„0üÖïÞ›(ùħí<`T#á=¹Ìúñçöþ >öG¿Í'TÍ„Ždþh’œúщÇo~ø7z·ABp!ÐÙ®¿úü™Ç;ñ8|ø'Å_·æÁ?"ÿËõÝ6½†#¯¼B<`þCÈÆÉ“'»ÿï?à+_ù²øÿØcu+Ï;'¶q:1ý†6 즞ø4ŸÏ×ëµXP׋•r×[ê»Úz­|Ϩ¤Ï}ûßxàC_øÂ_ ÁPéÖwï»å&½ÉùN6Æö”@M3Ô—®·\Ë0RýèxçmÇ?ýPôEQÚ/Üÿ2dwO·tHŶÁ…x¬‰@+PΫ­ìÝkˆ–Ä~Bv1KðØM™L«„\úMg/:“‘eàb`àŽ’Ÿöxÿ‡fAÔ—‹Ô—BBT9‘+UÙØ¬­‰Ó»ôš ƒ#T'OžüôCŸí^þÁþ¾ú®XÛ©tuî¬2ãÿݺJÐz”®Žç„"Âç!C¿Õ:˜[—=…ç=SÕk–ø€zË´n€xú=­ðR'<‚‘fJ<=>síÇì/ÁT#×6SùhÞÿ¡©…6Z•\NÑøžë’½Š™7]¸À6êG­ÝÉþà !CX±iUó÷ï)_¾µ…ùM'†$-¢ö*§Ð±%[G¢Â½ãW° d~þîGŸ¿Móê_é~¨¿{(¶‘´ý¹Žíþ™ ‘ E•@û2XwñlÓûE²nлÀù¾áB'!?öÙ_Ið¦ážEƒ¶üÊ+Õ‚¨òØÔB¢:®#×MÚ[!£I®m¬ë{ dü ÐA»å¦‡gf F²½ð‡s¨JK (S$!ÿ¡…xnÜõnø^® wMÈ[Ÿ ç›P7d¶ ßüµQ|þÌãÙy_oþ£{—G`•@›¿V"]ÈÈç¯zê'$þ~§üµfö}þ¶Î”¸þ ¢˜âü0-F”ÿ€ŒLñÉ»ÌÙ°¥úqý¯‰©¯ßòòì=—Wž;wNÛ¬ÛæÈ±Ÿ Ý+0­ù?DmÂØFý¸ï¾÷?úèc½ÏfïÄ£Û’vÇ…XkËG°ú!$„ ä? 4×Ð ;ÚЈFdh(Ä!š y’k+üNrù¨ö³}>ò=í(þÂKϽ¨ÝÛ_â@Ö‡(g/lSúCÙ`þÜ3*Kø+[7ÒDž§âgîŸÐØRç1»úùíÚüQªZÈ—Ö)¤4]±Î`¨«Y¿,õÎ~˜VxòYô6‘˱™å[ë.ÕÖÓŸO%{ޱÕv5Qo³²Vùf©ÿÑDþ¤å/Ùú“V· 3ãiZž>»VŽY7WábGWáÖ0xÖÂÕ£›5ñÔٌžj«¶#p/õ¬§ã9Ǩjnìzé/ð°I¢Ý‡(BþŸ±g”&<Ã1¤½;ºâïlؼŠå©ü%›FGl?d*ÉMEêÀÖãþ¡,Du:Ñf¿CòÍ\¸zü³+š³Á§¹´¨Ê /Y“ 󢆼ªUZ AåjÃ,=Nü”ºòÊ F#gàå[Ö uâ )nX²©"…œD‰s„‘Cþ£Y²ç?Ôqsk8ÃEMÙëæð)}¾Ë/Q½£Ž»ñï  ÐãBJ÷îeðŒ°[· Ü!»kWùwñ{¾Q» ?ÍÀ’Õw=Íûqû3¡Ú mˆwÙæ‚Í¢Íe>y7|þ¨nG†’Átîmèq†üöåüQøœ@ äÏ›eZóÀ˜Áy€ü.ý€+ÈALæÿôp€~@y˜ÿÐÀ…úU ÿèà<ý€Šÿôp!€~@Èú8@? "ä?ý\ Pò€~ÎШù( óGµïBÂR½Ô6ŒÈmÛùÒPèŒ9óàÔT"@ˆÉ–ËåR¬irjÅm;_ ýœG©!„Äš.X¸"Åb±Ë ¯v»‹½D95§nM8_õdÕÚʳH@+S[®5JsC¥}ÙÐÍÌÞB¸$¨Áhq@Ôïs öä:_ÏKOä•çkƵ(6%ŸÛÖPŽ~.¤§©‰‡ì²u'eö4µ_²ú“6…An¬-ÈC¸60£†¹œ @ò|]½å2ÏË4RþsO³ ®’Í>¾keBØC…4‚yô)ÂõWmÂýÖ¨a† 5vX…Ç5®å­½[æÿ±,õ,zÏ=v¼E;¢mÕ—bs¥F›i(W#h+ý_6ô6ïßf:Ô4Ôf!ÿѲó ý€h¸ÿÐÀ…úUàùW€~ÎШù@?èTü €óô*BþÐÀ…ÀèàùWm2ðùW<ŠЭviâÁ¨„ÀøU³ÿô¹ÚÐ…û?ýœ Pò€~.Шù@?çèT„ü € ôª@þJÃó¯ZvÅc±XhkV«•XÙ-d¯¿Y²µZ²;®8P¹“@?`\ˆüG®'éŽ$†ÊC/(]U´PôR*ΪcªŽ)®•Q‘:äp²X­|ÿ¾šñŸ#bè4Âù?ööö´5wÞy§?‚‹ðª«$ÈmÔ-Õ•j”Oó%šhRëi­Xˆž¹ÎÈZšÙ˜£egg'jÄýÀyØ¿FZiá±;<Ü»t"MBL0¼ž G_àjI€ÑræÌü\f`þ#ï„fXOsÙLjr •<Ͳ0“#4 ú ©ghH9Ù+6dGÕTUÈílîÿh“qÞÿ!åDuÀ]Í9 ±#{{{±—aŒb:@Æ~LD´ÁàBR Þ&Cîÿhœ@ ð8ô˜ÿÐÀ…úU`þ@?çc„믚%ïüÐ*ô3è8]CXà‡Û‡·9D ée2~Õ&ä? ´ûD?Zv´”ýhîÿôp!0:ÈŸ·I®ç_iO®ø ÛrÏÁ•Xתª¢=¿½DK®6»TÂæóùz½ÖÖˆm=úѲóÈ•<ùlzÖØ­NÝ1ªÊš+Ëg'¥Â*'¦´úmRôþ5.k3™kÝ|k·Ú3îk–º±|(ÍöݳÒ_CóèfËøëXIsÖ>~)ò`J€ òí»Ê½fÇÅd|fhÓVʸf ‚®økNV%žcYë#v1Wj1Ú:!Íè:zoy¶ üìð€~À%òÞÿ5þ£M;°´ƒ? °N¸ë)P‹æÉö.vwÏŽÉ•@?põ,HZᕱõ L¥¨#N gäÙÝ_àÀã$@þ£Yòæ?´QšìŒ­kìOØš•YÒ¥®Ý¥+ù¸ø(ëB†›Ï.ãw!½g$w‰MæîîªRòŽè\E‰ç_™‰´N®v––ZðµñÓÔaÍXÁ_ÃÞ6 9ºÿš.s›!­$®È`¹ˆ/<€sê,—Kñ!Ê+íþaDBädooogg‡¿ulÕîì=V÷Åàç¿åqCüØÃøò;ƒÿhž5N*§%È‚@9ЖáùW[.!ˆ…ë¯Ú$×ó¯€~ú±ñ€^Ä8')@?@ ¤Á!¤·A#@ä?Úw!´  óŸú8@? "ÜÿE!Þ¾ a ‚—m»£‰~ÀUpÿä… |[íb¹J“ñ«–íåœ%úѲ-%ÿå@?p!è\û? 4äÏ[vÃÅܱ®è#]µù*§ÊRÉðÙ8\[Š  jÎê1°U­õ/m>Ÿ‹¦“ô£Y2>ÿJ è£X;­’ÏEJפŸ”Þ\ê,„ÌHè.$ƒ5‘“§ÎŒéi­Ëi3„'ïhVR®1«gª‘ÿˆ®Sóø×QÒVºŽh­€¹»ÜqVwnDhòmR:ÿ!z¬-*Éάê\¤u“w”ÑÐ*®YÄÕµÐìQ‚ÀªZ«¾ÒZIë­5÷”ûYà?p‰½xOWã²+F§U£BêÅsè¨믪TߨÒ¿ƯÚd$ùטUì6®-­;f<" [ê<Æc;dÈkÔõ~[`ÝR®4'®ñ±ð#@ sÑ?õßW ãg¹\ŠQMx¨ù!'!vdoooggÇLœˆ¡0¿,uuàþs€)âúá›È;…É´ïBr a‰„<]  mRèùWx ÿhÙyЀ~@4ÌÿèàBý€*0ÿ9 €óô*BþŠÂõ»í»„!¬3gÎÐz€~l#CîÿØÙÙ¡ýÀy¤ìK@/ä?š…ü 0ȅЀ~@(Üÿèà<ý€Šÿôp!€~@Èú8@? "ä?ý\ Pò€~ÎШΊrˆîê¶Á Y˜Ÿ:€ ušÁõôuñ8w>hÈÅ¥ñ+bÊ–À ùòžÏë€éˆIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/threadgroup1.png0000644000175000017500000001640312032647202025264 0ustar ebourgebourg‰PNG  IHDR3 ›fŸÊIDATxÚíoÈeÇ]Çï jÒÖ`qÛÚݤ]³šRH÷* nR 5Jd[h‘€©mÜ þ¡û ˆ…ÚEÐÚEB^ú‰cÇ ‘´xM¤ aÎêé‡Ó§·õ—á"DBH… }'âQu!âõôCŠÇ‰}dv{{7VB~þwÝu÷bûÉoüÃ"`]·;áŽÇ.•m›¢JŽóä?dvµº‹ww÷Òn)šqùÙçoÇÏþÝ—¿Ú{pÆX¯R˜§r(¸6£š,bC}Ë«—b[ìI¿RfB—µGn‡‹„‘š@£W mþC¹›²iØ%GB&£òi%BBäõ»/üÓ%û˜}ô V”jÂyè½~¦•äÚ£6ºЩë,ûãY€ðRõ §¾ÇHmÁX ¹$dÿÿ•ûÌßyñ¾:kO´w{C®v+wÿ‡÷ž¾ý®óH{Ü©ë]ÿ¬L¯é-U‚YéªúQ›o_~á™KßúÎ|÷ÕW×z½þ ×ÞtËÑÛNÜħ5â‘§#Q/hë ½Ë_¢Ìzú±20ä\ô#_ù›¯ åðð_ß{åɯ?-þÞüÖ7þÒ{~ŽÏ,ÌļÿÃ+{ûþ! ¤ E#§P I?˹èGN¾üÄ_ÉÛo9i¿ûäSäÆýø>°;ŒyÐAKqómoÿÌ'zùû/>ýoO¾ò?/\wíëïy÷½·ÿÌm7{X8ãyþ•Ó¯”¤êõ4‘kÆP) ?õöÛÅŸ° úßûßóAÄc  Ïó½ÒbŸå ÿÜøôÝ÷— T‡FUšë®}ݹ¢ßÿ﫨zóá«û~ýðÄãbã–Ÿ¾åž{ï8øc^Œ){bøŸ/ü9RS™fÌ(##yþ•𼄷ë¬p1Q&gú!ë:€ÉsÀŒ!B9ÄßSÿüÔÙ1CqµQ¾C½”yI­Âyø%¤wÛvþ©oãD;©Þ€î̽÷­ãæƒïù‰¢ÿš|/Bì¹gÖ?rä­bãøOþ„î?ŽÞxD‰‡´B<„„üþ­UF¶KÛjýv}zi¸‡®=¶›é27þ,œÅ3 ùšuHipûù‰º YðüÄl]‡)Ý–P‚"ÏO´%¤{tŽÿºk_÷ì3ÿ*·ßvôÀ jÌʼò[ÿ†ô=2–©GoºŽÏîBÐ (A)ýH6.†ÿp"!v86<„ñV—NøG¨ “«åFÛXÿ¦ªi¼üÊK‹…yÕ…'ÿ}ïÍ›‘¸ »›Î§@p…`ä @1®ùs9~%þ¾õÜ¿ÔÉÑý¶Ø{ G;ôdœ[®jòþ¾â0 ÿ±°Æ¯„ù8ù ïÊn>ìq'}¶Ü¹áO!! c'.¦E©ë¯¢øöå>óɇœ×_ #"ôã-7^¿xí6C»¥Ë¸d¹þʾóœë¯ êú«Í_ ñxüo¯Ž)ëãWòO™qŒ8’O.ÊyÐPŽÍë‡i>¤ÿo;z“ü“;ÿú/SG6Cé[™ÿ€¢l~þã]¿¼ÂpøWî|ñ»Ï?ûÌç'ʉtù®8’,Á…LbÌ ·0Â#Ææõã†co’ T¤Kfx„b8S¼ÿÃ9 •;áÏíÅõWR~ý·îI ”|âÓv0ª‘€ðž\fýø³?ýsÿùÃßàªfBG²þ4INýâñkúÕÞc\4@¶ë¯>wö1!‡ÿ˜ü{xàÃê¿Ú/Žéõ(0uåâðR6N:%þ¿oŸ/~ñ òÿ£>*vž?^ãtÆÃÉë?«|¹t<ÐeooOìÿKdçLV£D¦è‡›g¿ùï÷ßÿÁÏþ/¤`èˆýâÝã7ßH£×!yþCÈÆ¦ž¨âu!Áˆ• `üä¿ð·žøô§´ÿÄþðާÿeÈé:Ù{ÄÓr!Y’Ziè{W57V8÷œ•öYè‡ÜV{œ·ggˆ#‘Ö'0;ç¶:kÒ_$€þCØ a2²tvýôsgØ‹xÿ‡aAô—Rô—r9q5Ø¥Ї¿Œ³†Ø§?HØÐ_¤(â< ÿa"G¨~ï~W¾úŸÿWÚÛ%4z|F0Ä.t¥`ô£z¬í9;Êëà98DB'ïãþYÞu~Ò¢?š3õ±kÐJÿñéO=(_ªáôv0ícŒpooÔ0=]ÇLå£xÿ‡!º½’N9œ?Dõ£l úѯ!þãÔ©SR9 Ï"'*F‡ ay©º†Âû†ê­éö“ïÿ0tbÈ…XÕ¦âí©«?5üG,¿ýÜ­-.•ð!á#JoÚflÏ¿2ìKQQ±¿á֤˃qBL{úÄCG/ ù¡1ÁØPÿÂÿf~öÃï<×-ˆ>C›‚žHéÞƒmåNã]{goRÉÙû‰8оõ£øÜÙÇ>¼õÞÅþ–ç°ã7ßèy„‰³çhAôÎgq!6…ÞcFˆ±þ áB£_0ê©mSúa>`RÈHâŸ7U¿ÖÌúÑ;ÿá×È«ò“–1ú~äÕvæ?@gŠë4 â 3¢ùÈÈŸ¼Ëší3ÕëoxUL}åæ—ᄎóüùóÆaâ˜#Ç„v¯À´Öÿ¥e B€9êǽ÷¾ï‘Gí}6»q$íŽ q–– `Žú!%„ Ì@i®¡ v´ œQ  ‡h‚æ]H®!¬ð;ÉÕ£Ú>­$ð‘ïi¹ø/ýœãÞþÏ ÈžEýå)ý€lpþC[C‚KÑ÷V{*poä-T{)â .+ èÌ×y,>ÑX?JW }A{ )CW<U4Ò ”%çúíö)±‰'×¢·‰º›¾³láRí¬¾¿ ÎíÀ:Æ»«‰z›½µ‚@˜ÿh– ó*š¨Ÿ´ú%;Òú‘!¡sa­Oåé³éØeëJ\žØ•¸3ŒÖ™¸ž»]O™í(ì)¶n;Ïҫ଎§ŽQÅ<¸ë¥?}ÀÀ&]ˆqF ùÆžQšðŽ!è=±+þ.‚×UŒM| þ”m£#÷œÕ»”ä¦"u`ëqÿP¢:èG³_‚!óÍ\¸zü«+Ú«Á§¹´¨Â OÙ û¢†¼ª•Z AåjÃ,=Nü”ºòÊF#gàå[Î Uñ„‹”LÙV‘BN¢Daä0ÿÑ,Ùç?ôqsg8ÃEMÙËÖ5àSº¾Ó/Q¼£òÝøwÐèq!¥{÷* xFØG†îÓ«ƒü§x­oÔ)똲þ®§Yb?nc&;¡ ñ.ã!ÛúQ°YŒõ£ì'%Nd(lçAàžC3ä·¯ÖÂà<R`þ¼Y¦µþŒœ8ÁàBÐx 5ˆÉú€~ÎÐ(ëú¸@?  Ìú8@? "Ìú¸@?  Ìú8@? "Ìú¸@?  Ìú8@? "Ì@QX?ª}ÒÀ–î¥æ0"7·úÒP茵òàÔT2@ÈÅ–%ëõZîiriŹ՗†B?çQ*FÈ¡G¹G‹®H±Z­Ôv«âty–L§æÒ­ õÕ+«—VÕ"#M™l¹ÖHHyÌ •öeC?`\4³þ¹¨B¸$èÁhµOÔïs ö䪯ç¥'òªúÚq-ŠMÉçÜj`îèàBzú˜†x¨.›¨”ÝÓ4~ÉúOÚu°±¡²è:ÀŽöv‚©úvõ<–Ë®—m¤üuO³ ])Û}ü® awü ÒvîS„ë¯Ú„û?œQÃzìp O׸–?¶ö™wüǰôZôÖ=v¼ÅÈш¶úKyнÓ£Í4TW#;ý_6ô6ï0‹¢Å ,ÛF¦ˆª5”ÊWm43r…~´ï<¦^ ÙÓ4*rnŸ®>¦1Ú._:wìŸÚ¡Qe©¯ž³¾þ"e¿«#¤ñ=­×FC…GåÓXÊþ©~'Lé诂×ïÿ?¶;"NÏĉ,‰¼µXbW³=ãXº¾ ô…i¨BýÎß¾º“ùö]Ȥ‡°d8Ðû7m?bnõ¥¡& úÑ&Í<ÿjž¡¡t}›éPÓP›…ù–íèDÃý€~.ШϿôp€~@E˜ÿôp!€~@˜ÿôp€~@E˜ÿôp!0:xþU› |þ¢ôcÖÎ#M<õ€¿jæ?ý€A.„vôBáþ@?çèT„ù@?èTù@?çèT„ù@?èTù( Ï¿jÙydÕjeìÙÝÝ•;ÅFöòÛ); P¡%E¾2£r•@?`\Èù\OÒI UY¯ö)]]´PôR*Îêc«Ž-];£"uHv*Y#}ÿ¹†ñ×±ôaÈú;;;Æž;î¸ÃÁexÕ SÔ1ú‘úN=ʧùC ŒŒôr: ¢g]5r¦f7&ÀhÙÚÚŠ±@?p‘Zxì÷]:‘&!¶ ^΄Üw÷éjI€ÑröìYü\eàüGÞ%í°žæ6²å*Uò°’#4 ú ©ghH:Ù 6äDÝTU˜ÛØ8ÜÿÑ&ã¼ÿCN ”óÉÉÌs¢Ú@6ý€œÇJ¢O)«—ÆNãÈ!!Ø™zËSg¦Îyš¡"0–²º½½M[Lšõz-?D}À]ŸÿrbGvvvb/Ã9Ät€Œ?|Ld´ÁàBR`þ¼M†ÜÿÑ8€à?pèh°þ € ôªÀú€~ÎÆ×_5KÞõ? Uèg(Ðèt! anžsˆÒËdüªM˜ÿ€ÒîýhÙyÐPô£Y¸ÿÐÀ…Àè`þ¼Mr=ÿÊxríÀÙ–{®zĺQTãùí% ˜rµÕ¥2Z.—{{{ü‚ÿóÈljŠÝÆjê¥ñÖJ;Îì„xðÛü”½ÿCïn+™Ý|gÇÜiktáYçÜxK½ŒêkÛ%ìÍݳÓ_B;w»eüå ,¤½Çh¿C’Î üdv!áÝXÇåb|vh3vîÁ‚]ñ×^¬0J<ªY»<3äúˆSB<§û˜/@Ì4KÞùc”&;cëû'lÍÊ"é ¨®Ó¥+9_ü”u!ÃM‰ç”ñ»Þ©Sb'óOï*Rò‰è Äó¯ì‰´N®q–1µàO0êà!Õ4²pÎ8Á_ÂÞ6 ÉÝM—} F ±”ñ…pNõz-?D5`e èGËðü«™KâEáú«6Éõü+ Ÿ€~Ì1" Ћçd Ð0ãÓàÒÛ  æ?Úw!´  ëŸú8@? "ÜÿEaþ¼} /ÛvGý€pÿä… |[íb¹J“ñ«–íåœ%úѲ-eþÊ~àBÐx îÿ€Ò0Þ²ó.öŠuEéj¬W¸TÆB†¯ÆÑu¤\ªæª[ÕYþðÔ–Ë¥ÜØÛÛ㇆~@›d|þ•ÐG»°vZ!ÖEIפŸ”Þ\B<”lèÛ€~.$Ñš¨ÅSÖò´Îí´“O´ ©öØÅ³ÕÈŸcWÕ<~¥+—´]9: `Ÿ®N\Ô]€ù6)=ÿ!{¬#*©Î¬îºHë&ž¨¢¡SºV×6B³G ‹ê,RøNg!9:KîI3ö³Àà<{ñž8®Çå®VŒ S/ž¬£"¬¿¨J}cSó”¡+5»äžÜq€~ÀUç‘wþ£«+=’®«s´gl=kÕ\öHQ…rzr@?   ‘Ñ'ûåF¹¦ =ðQ}(Æ(“*^rvåóm2æû?ŒŽ¶>ubl¦OÏU÷Þ«ií¼†Þ˜äHÈý˜£ó(×{ÕgÈÓ|Œ3ŠéÉÚÇÄú£þ³œõîlü¹¤í ù¤z$°.{{{Ë×àâ]XÊþ)ל:ëõZ~ˆú„‡>ÿ!å$ÄŽìììlmm•X;yÔk´ãõ L$„TA|y Ç ùcÿá«ïþC µ€yÂüy›Œsýq^¹;óà‹xúçÁÃ/ èD“ñþà»$¾KLú Hù.Ñ`Àüy›°þ îž#²”ýSÿ}Å0~Öëµüõ }þCÊIˆÙÙÙÙÚÚ²'NäP˜_–D¸ÿ`ŠtýðmÔÂÌ´ïBr aÉ yº A?Ú¤Ðó¯ð `þ£eçA;úѰþ € ôªÀúç€~ÎШóP®ßmß…$ a={–ÖôcŽ ¹ÿckk‹ôç‘r. ½0ÿÑ,Ìúƒ\íè„Âý€~ÎШó€~.Шó€~ÎШó€~.Шó€~ÎШΊrˆîêÜàƒ€,,OïÃ…:ÍÐõôuù8w>hÈÅ•ñ+bÊLàƒ€Œü?GúSÐ3ßM@IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/JDBCRequest.png0000644000175000017500000000633312032647202024733 0ustar ebourgebourg‰PNG  IHDR;)QÞ ¢IDATxÚíÝMzÚ:`r®ìÈw9dÌJ2ÆËaÖÔCËW>’,^ÿ@ ¾ïA/ ²lœD%õöõõµ€Ýî§‘€H@$  ˆD"‘€H@$  ÜÝûØ ~üøqù÷zKíëãDr·íb™¼X±ðлGÕ¹—cvr`s½„£¥¾U¤ž9å™~Õ€ì%LëLè:\ËT.®‹uºøÎHÈ[êë%¼iîF%õÄ+¹–º<Ïëé¿”†åá”?s3ê’áµâÛXUO/j=ëãNù8ÕÍ.KdGõzŒ[ï%ÛëùËõªä’¼ßqI®ñG5Ü•j‹÷B¶ ŶuÙ&2ò¦bùâˆÓ„4J2C"!Ô^/2œ\ûÄr?Zt €Œ„;5mÁ ó`+ßÕ–—¿S£\ÿT?¤ðDBÓËÉÅïâ)RÓïZù9mtÿȇf˜ë»(¾Z¬¶{lÔxRo7¯ÊÌpd¤>Rf7éKÎCÚõÍÝÕg›oV¬SZOÜK;¼FΫͷšÐÕØ |i ò.êo°~T•zvÿÁö«¼B/a ÌìÜ ‘@ÊÀz ˆD"‘@Üûj¬m[?€í÷ûg„‹ãñèG°ˆóùÜ4ÍåßJG›z ˆDEãÚüÞ›H¿½½ýúõëú ÿüõÉ®ÌÐKýW“ç‹Û{Ì{X]$tI°¶»ã%1ÐÿïÐKCë¢DB('ºÇýå$/û‰b?£¸Õœx¸Ùvç±1¶¹/ö0®Oök«„P¥OÓïýÈ!à»Dçòµì¿þJ^íº×åéû’Õê+Ë2?¸ŸɃ_uíx÷d>â4jóîÉë!É`Õ½„î¿xŸ.>®T¾ì[ê7Ðc›×úTD½›ò°|øÎHê(Óbl=w½ü;S™l˜Ùèç®ëÓÝ+„¤éŸ30j«û ¬×kÎ'fF}6Ûü°ßö½„ëLCÿÁ÷ü’|fœ_ï;C½Šþ\‚ß?à){ IGáúxlSžlé. ®T& †^;PÓï(·íO ÷_­<óÔëf€¸YßK(ÎÇÞãò¶RæaŸ¢Yj_ñJ|@x¦H¨çD¤E«.N¥æ›T¢hhvò{šÇN ·êžŒôo*%‹Ÿ_û àÊáù.lYhíåÓ霭`mâm¸Z  ˆD"‘ÀhïNÁdmÛ: À:í÷{‘ðhÇãÑIÖæ|>7M3áûÅŽ^Íä1 ‘€H@$°X$ä÷—Žßtº^²øj°ò¤Ø#—RØt/aò‚e_Üïýˆ€Éþj}múdUœÊ²ÀC13m%á¡£*O-å¡­üÞz ·[Þ¯¿ò&5oô‡ w Š%—ü]‹\|u¨£ÜQ²ÓྶÞK¸^\_ÛÐâbÁJ† Ϲ ïiìŽ";Õ?ôÆuâMç´q˜È¼ñP÷bÂÛÑ?ôVš‘M’ŽÂœ Ý@/!ÚVÞiºuÂGNïªÛ—N FçD¤Ý¬N¦(†6©DQ>I0¶5ï àe¼E»Óét8&ÜTïµµmëN¨À }||\Z§®ÑŽ·ánh€Hà¿,¡3Ë¥#fm5@$ð{»¦iL'"ÿõœàe˜K`d/áóóÓÉ »ÃáàLˆ„ߌ˜l¹D"‘€H@$7ë†Å…ïó—ºç#ËÑ7`Õ½„®}¿ê·æý—v±…3gnÀ|o“¯Ä‡.ùóç»g꽄à†ùã~—¢¸lg¼°e¡£Óé”<óóçÏoog“l¸è£ÞÉÈßÀk .´ù¯®ÿßKÕÝÅûj/À¯GxŠþºe°)ñû–Ž˜^Î&ŸBx|*L˜opË&€¹‘P¹jš'‡D|CsK™õ‰£b $“Àñ1¥È†C}‚àÁøyÜ¥—ÐÔçìùKCÍzÒLm˜Ï ä…µø3…>„z:‚³Õ•.ŽG*5 `Ëâmøûchr‹<§)×åý…ß›$Åmï ˆD"€€w§ m['x1ûý^$Lt<àeœÏç¦i&|¿X$üÿ : ÀkhÛvÚ•®¹D"‘€H `ú'Ž*+á,«¸¢Î]OJ²ÇÊî¦-ÆP\bh§7WŒxä’×ß²¼6°öHè7…Ýzgw:Ä/–™ìhñw7´Huq§C+ÓÕk{X6+ù\ªzŸ|dù²šÉ‚Éù㼉º.umžT^ulºô‹Õ;FÅW‹Çvór;9E]ᛵUÞìÐ&¸UðÈû]¥Â‚’˜Kèš•b³µlû’4Ž•]߬')\¯ªøjþd?Goî4)|ݼR[åû§%~Šú%ëG<&îš»•L/[¨iå#g§žCI·`©Ñ’ù;í·és~“â¿@ZXy*,þGú¸Z|ãHôØ]ÛܬjÎ{¬ì4ï‹Tv4íÌÀ¥ÂýæVçFB|dù/9§íº8@é¾,Õaʃû½Yàû úgòÑç-o^uÞÙ…Šåë—ÏÝXS¤X=ÇÖ0§c£zB…‹ð\&Î% k糑yá»^&5a×ýMâU_­?9j§Cç¼R`Tï-²ÕØ)zàé¼EŽÓét8ê·žÿÙıQü$å„c¸ÞEÖͱ—‘4k‘6üj±éå9yÐ]x+[€ˆU,¡3¶eÀ‡s6Èmï ˆŠÞ‚‹óùܶ­óˆ„­Ûï÷MÓG§ ì|)`g.‘€H`€¹^P}IT@/måÁ„ÕU½^3º.B·Ütr ñ]évßC)R\VOÿ½ØJ—¢¾\6ˆØœ~TôóCZð’ ù l ¡µÚ(`àˆ—’Ì—_êäk‰묔‘+M…¤Õîžï'DRXw{‹ü Ä—r†Š Uj<¯xn.­ôæ„<`#DÜ+N`‘`2€•Ûï÷ë%Xƒ `µ>>>š¦™0ìGº"àEMÞ ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$ @$  ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$  ˆD"‘€H@$  ˆDˆD"‘€H@$  ˆD"‘€H@$ðïÓ6;ŸÏmÛ:}[„ý~ß4Íñxtúô~÷œ;€c.€‘½„ÏÏO' @$쇃3 ~3s°æ ˆD"‘€H`´ž³âç½XJIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/JDBCRequest3.png0000644000175000017500000002317212032647202025016 0ustar ebourgebourg‰PNG  IHDRÞfÕ‡ IDATxÚíÝ $u'ðê™F˜X9çÅ #OWœÖqF=EPOðÐpoƒðô|ОËÜí^¸{êêÆŠî ®z·Ê±ÇÉç OWY•6N·Gâ\Q„yðž3ç3}I'¤ifVVVfVõ¿«?Ÿèhr²²2³²ŠÎoýò—™c333€0,± Ñ@4DÑMÏšœœLÿsff&“¨½¼ÌÌós+\V4\}¡=Ñ®ôâz.(y!Í·d•LW¾ô!¯ôˆ&ù½lë{©*3ÌìGk/br΀v´™üT¾ ¾B ˆ&U¿sbG›_D&‘4™Ñi\Ê<%žI¼žÝ柼üʤ·d·µD¸)™g‹Õ2¨¨f¯I²¯Êï\›Ì­äXÌ Ê´òBJf[þB ·df­ÚÝæÕßÇmè¯j’쇑 º}S/L'­ “Á 6n•Ù–¼Þ§ÇA¡Þ 7<4óMîVç}o7z_ô“ÜVûðJ·öå@4ïÓéþÑH'Ôñ¶^”ºáháº&ñ¾¿•µÎ×÷¶–’)Ìôìämk;îl£n½&þ? ôh’>]¶ÆÎr2¥Óëâ% ÍdfÞn¥|;dÎm)|!Õ·dÃm^{žÎÐ`˜ÆìoT}¹DÀð¹P=‚ªÉ@/ô^x\¦ÝïåÝý´þí¿ßó~çÑж ´Mæ‹:€hPd|ûöí¶J4Ù´i“­Â ã60L7ÜpC·‡.¹äѶ͛7w{È ¢ šˆ&€h š¢ @®k Õ%—\"š¡(¿µ°:@@D c_|±­@sÝ>HW^y¥@EÓÓÓzMh!”lÚ´©üÀ!Tü–;ž„”A,ãŽÛîŠ~o{Àh³jòêwlü›ÏÜqÔŠC£á»öÿCá4ïüýßµÑGØàzMª”Ij”RâiJŠ …óTœXÑ$¾,}”NⓇïûÁ-ùiÞûGèT¸Ÿ ×Юk%ƒ¸R="¤eæS}&ñôÝÊùù¤Ê¥Ê‡¤ü˜ž‘+sØ«ðe,Æh’dŽøª¯/Ø~QÉåba îº&}íÅËeRN桾֪Ûl W@D“–íºã¾ŸÝ²ãw?xð`AkËÄŠåÇŸ²îôMÇ{·Šùº&l~·Ý|Ÿ]~ä(S¢Hr25¾¢IÉl W “«Êˆ&õ]÷Õÿ…’’ ö>öøÍßûiôóì5G¿ê‚3½g! íº&­WªœòS8}á‘ ©(“]@4ˆoÝøùxàŒS6ç½ù'7ÄoùÝw{Ã7¿÷ÐDËj¦>1ïGOÒG™Mªêëþ;¯ºàÌ“O?îc—}jÿ¯îÿé7?þÿöe&8|ùÄkÏyÃ/<ýØÇxÃÂW£×d@»ØŠ…ŠŠi#™[~ú…ƒò“†ÒE:FÉ’Aä’‹/žN~ª\>Î'wFôsÆ)›Ó?oºà­rÉ‚Sïº&™b@ëi¦°ç#IM²BzÍ çßs…Î6v4U-WMâ\²iN¼‹šžž©x››¹É«×>A~õÄSæÙ+Ÿ:Óø{÷Ónün4pÊsOyí¶t[z·{&gRz}2÷åɬmõ•§S·×$]è–j\`­[žhÞ-›*òkžo.éÙ2ReƒTߎòª&Åû§ÉɱègS{'G¹$ %ÑÏO~ü“¯q[ùijOËÄ”üø8yä'f˜õ’NÑåFzN_ñ(LÏgÕ(½t %¯¢ü–¯UÉ|2aÈ'P5é™Q:}]Þbÿãû:‚7_¸ú+ébI”NºNò¥¤ì‘y¨¼:RxÓã|¹%™g~úE¢öuM*^µö4ýN\}}JfXý¡ê³­·8€EM¢ÝÒÌÌlºb’ÙOu+¦¾üˆÛ~öóxxú߸I’E*†’’lQ#.¤CL&‚¤Ítå!¡ù=OÑ$[¥˜žžÙ¾ý©¯ÍSS“}í˜O8ñ9T¯I¡zé¤IIr¸'>ô“Ï:™EN¿„v]{4Iï•kÔ' èÜpãwßtÑëKž5œ²D¾R¾Ð¦ڑ§^RÂÑ€*Ò[qçЉ~vì¾½•5)O™UÒ›nÉOV2fvׯ½&þ× žñÐV(s@熿»ù%/뙄’£'ùdP òG^’‘…UŸòÉòé§üÑ‘§v@ý²B¼ÿ˜žž.ÚÁtjûÍd…r»î¸ïc—}jíÚ5ùh²c÷íQ4Yµþ¨ÎÓWf#(SSSñ‡'n1ÉŸ›ŸK,¦P.Ú_Ä;”%ó¾*Q.ùî7Ÿ:Ÿ> ÿ$%“hšhJï\àj_×bƒ: Sý(FœKâ’I§Ë:_¸ú++^Mù¯ßõZïYàj_×:!ôš¼ì¼É(sDÉ#¾ÿÁ»nûÙoÜÞ/ô†- ¨×D`h_\L49vã1qæHJ·£×$| ñº&…V´û•µzA=ˆ3tâÌ‘¬iÒ~˼øœ›@FÒâZÅÛ‹v¹® MŒÌ+Ùþ½>öè¾ãOÚ ßÿ‹û ‡#ëÖ?Û»>ð÷B퀺F§j²éwžý>âˆå%ÃrÉÀß…§ë%r õ,øªÉç®üƒ_õš—GÃ?¿mÇwìzù+7ßµë¾ô𲉕ÿù¿?ü¿¾¾çæëD“ÁªW/™œ|²:¹ÅLæŸÃ‘¹Ÿ@áu„á…}D“¾½åâ7]õW×LL,ß»÷ñ眰!Š#+Ž<ü‰'~™¾êܾþøS¼ÙÃQûº&Q"™ßàÞ›z±Ý `ÞTìÿóo'?÷í_~þº‡ÿÕ{?ÿµÇøñ³þï\ý±%|åßÿNôSò]9SrǾ±”Ì™‘=oìW8Ÿê_ñÛºq`ú¥µ2ï ;™’“È —?«övN~ç?ÝÞúÅvgGÑä©´ñÀ­ÏúÁ¶{Ó¤ÄúÕ«»í˜;ÝïœùHïœò#{îöú}JfeZÿ6ß|† {M2é!®£Ä2&%–8s¤'HŽåŸUoƒ¤7Kò–%㻽Ê-‹1šdJ ÿtä7’á×ò'éáSw¾éON{W”KÎøƒ/·¾/Ï섪DüS ¿§¿©wûŸž ÿe½dúÂ’@ÅÕD½$4'>J&®r(I*åoJ¢yªKê ´×¤¤Q!¹dF’KNZòÇ^ý~røŽ³þñŽÿØ9snüø?vÃSããzIa.‰“DúwáøLìÄŽ'½ |¯Còí<³ãLOPeæù¥t›aÉj”,¨á=tò…“8Xô[ü¨Q,©þžæ·˜?%#Mª\²+h¦ÜÛ®{ïÍÐ÷¾*¿'Nç€!|3®¾ˆòjM>] ®Pûº&™ÒäTÁuÔvûH0ÊÑ¤Š¤rÙ%ßyÑË×}ÿïvŸ¾÷Ƶ?ÞýÏ~ïU^ó·ŸØô†çŒò—û×ïúù_Í¡³§õÄPøí9ðU¦(Òv¦ ë:™¢Ë ÏÒ_ÐÜHœ¡sðàìÁ¹ßg=·ˆÂÁÁ θ=ŽÆÇÃW¾ûGù3tÒ…„*;•Â}yú(OÅYå[&[Ù/VYÛvšÑüÜœ|I¿'×džÕnÉœ§“¼•mu¨°à¯k25>ÿêGÝéœÖ™Û=Ì (>µó×wï|rš~•GŠÂ£$étR8qáS ÇôµJ%åÓg¾î×[D^“Lz(oqíöhõguÛŒåãKΊʔQê Œ ï…÷œ¯;W_n\ylõ¿\ûœ '–Üt÷õ ¿òÇݽþñx8Oßú:Á½Cÿâ>55x2Y$é5‰‹(Á^·¾¯›aÐdgQþ­5ùƒ¼€«&É¡™÷|ù±èçéáïGÿÙ‘?¹¤¤03|¡õš°à,àhÒï¡™Q­—uì`!Þs¸Åk×°¨£I5âÚÉë?ö½n“õœ€v5¼®É¼¬­c:¢Ikzf¡døVíd¡¤(ÑdDÜñ³{núÆŽ‡öì_¶âÀ‰Ï?zÓY§LLá½&4´d´_Þþ}ß»ó‘ûv=±ïÁÎw.½éËÜ~ë.ïúàèÛ@4éj÷®{n¹ùî뿺ë—OLFþý7E“ÁŠ»7lêÙ:ÓýÚ£÷.Ù»÷ñÃÆÚ·ô‡Ñ˜#<¯3vpßCÞô[ˆç鈑­šLýáëžØàÐ¥+~K"³K–M¸Iì%õ¹Ñä7\qÙôÊÓ÷Œ-‰BÉS¹dlö¨gzâ¦ÞõÁÑk€h’5;;ûg—^qÄ‘Ë_ýšsÎ}ëÊdü‹Ï[÷ê7wÞg¥'ÎÜb¦ÊïºM3ˆ»å-DzMM~#—|øW¬Z³òçlÙóÀǶì¹/;ßüÚ›_sÂÆÖ•gwek…Ú µZìeüË5ëV½dËY?´÷Ï8ô®Ý÷œtêq·Þ´#Š&åUL.Éßz7¹[oÉ4"Žëš0šÑ¤äúœ%Ç .}ßG6·îìÍgî¹ÿá‰;îܽjÍÑk]ýžŸØ3—tËñp2&™2?\ÒiûÜœÉÉÉè÷ÌÌLϑ՟ÞÊÌ3“U_¥Ú!­õuÛÕ7r“ÕèÖ¢@èDù£ÛO7xßGyô”³_ræ÷=411qçm;7™ºK‹Ë*\nÅbO2Û¤pÒÖêÕž š,0¾ôŠ%ôÊ7ž6sýÎ¥K—^wÍç½yý†ãŽ]¶lYëËÊ`œ˜“Ö¤×dÛ¶m™1[¶l)Ùí¥÷véîk»MgFæ÷ñÝŽnäŸUeAIPHFVYV·rEÅge^i&¯dæ™O--®^ɬòŸ`lݺµ¯©.øhòéO^½ò°žþÆÕ?¸a÷Òñ¥{Ýÿú‹O^µze\’Ô<â|M¥|@á¤y½$úøfæÖmÞ×±ƒ’‰›|qÏï×+.¨ÆBËKDÕ7B•WQ²èz+\}V™0.¿üòEW5Yºæ-ëg®ß9~ÈÒ‡Ü{þÛ?üðÖ/_^=Žþ3Ÿ-òeJž»¨Ä½&}äLékç×sÏZcâ¾öÊ™iê-¨ç²ºcÑÖašÚ`”,øhrïŽÇ·wv.Y²ä¨ œqÎêUkŽ™˜˜ð¾.èÚI_¹¤õ‰«Tº•šœl² /t-Zð—\›=¸ç¾ÇÆŸy÷º ÇüöóO“Kæ× î¡SØ7:ˆ¯û%Ó í¬“¶–U}&N¨D“6ýé»®;8và·6>ôæw¼qòE/Xºt©wt~ í:°éVÊ&¶|æŸR‰ºõŠÖ~-Ýúm3>+Y¥ÞS2eáù>ýž¹]²z®e”‹¿ÝNOOíf:ór/”êËýô'¯¾ÿ–•ÿ鿜ãœ/SSSñ‡'Ý%î5‰“J•"ʶmÛúíâ pÕÿ¶Gû‹x‡²°{MÞùî‹zNsÇÏî¹é;Ú³ÙŠ'>ÿèMg21qD’FÒ¼ß\o8×5`$-í—·ßã÷î|ä¾]Oì{°óÀKoúò#·ßºË»>ÈTÔ~¯ ¢ÉˆØ½ëž[n¾ûú¯îúå“‘ÿMÑd€Üs€†ÆGõ…MôkÞ»dïÞÇ?jßÒFcŽ8ð¼ÎØÁ}yÓ«áuMXäF¶j2õ‡¯{bÿC—®øu.‰Ì.Y6áºò§v€h’uÅeÓ+Oß36¶$ %Oå’±Ù£žu艛Vx×G¯ ¢IÖìììŸ]zÅG.õkÎ9÷­+“ñ/>oÝ«ß|Üyœ•žxrr,ùÉŒO~Sz Z¯I”K>ü+V­9æ¥/?{Ïvزç¾ìÀ¿»tók7¾ø¼õãã¯wff6‰#ñp2²á¸ugo>sÏýO¬˜ØqçîUkŽ^{ìê÷|üÄŠ¹$Ž™„QRVé6rÑJ>Žr Àâ”\Ôu¤¢I½‹™~à}=äÑSÎ~ÉiÜ÷БGyçm;;iÍñ'l<äCÊŸ˜©”L–ž ߆"—tÔKhlDè|ðý>þèÉç\xÚ·¯Ùµù‚ÕwßuϺǬ]·¦°¹¤•H!ˆt£×€&Fá _zÅ’‡Nzå…§Í\¿sÉ’%×]sçšõ+?qãÄÄÕã”+9Xã,ž<çéPÛ‚¯š|ú“W¯<ì…§¿qõnؽt|éÞG÷¿þâ“W­^¹lÙ²¶‘9‘8Ê(éÞXå“´{M&''gff2cæ6øL•ç–LYøhÅ™g&«¾JÍE9{vv¶|Lú¡d8ÿ¬üø’Yˆ&ýYºæ-ëg®ß9~ÈÒ‡Ü{þÛ?üðÖ/_^ñé…Á"Yr qf¤€k·×$Nú ƒÎ ùØ4éQRÌäŒÌ³ ‡D“ÖÜ»ãñí'ãµá‘3ÎY½jÍ1Þ×y4„^“8¦¤SHfL:Çä'îV)™“µ*\ŸLä*|V½¼R’62FÃÒ  ßk2;{pÏ}?óîuŽùíçŸ&—„` ½&qÅ"–ßµçÃG·‰“ÊGzd:>ZDª/(³ÐŠËÊ„‰~  j2<ú®ëŽø­¿ùy/CÐb¯I\lˆ÷åéBBŽx·šJrH·u«± * íwÅ’âG’W’#š¢É°­|î÷ß²òï–Kª— úº&™%-NÜ­(Rešz ª³úÍ+ɰ£6€h2< CI½k»Qnн&}µbÔ>ƒ¦çS2¤É©:­wÔöÌ"qME^E4ùø‡ÿkù¿ÿžc£¼¶j'É1Aì¿«œe3Ìsƒ {fó {W+6´&“ÅSª¦£M¢\ò{oû=§‘NFØî¡“Î+M&î2O)É%éÂI_kUcY})é5I?” 4™³‘¥`¾ŒÅ»Â;ñD»˜ê‡<>{ùW^wÑÙ+W>+þçý÷?ðŽw¼ý3Ÿùlü;=þóWýoéddLMMÅžäN¦^ŸªS%©lÛ¶mëÖ­®pŸQñFYJ @Pû…äyõ¿íÉŸ»6«&qþ8ÿüó£ßÎùÆ7¾ÿþÒ—¾¼öÚk“ŒÂ¨ryø†!—#¤å^“ÛnÝù–·¼õsŸûoqI‹ÆGžpòz}ä¹ÿðÉ%€hRæy§nú‹ô}êKÉ¥µ;ÕÎ8ÈLßÖnßGû2„^“Eõl@4©ã„“×ßvëΆ3É\?ªù÷HñbÈ;Q¹¤Eñ²*í&¢IøÍùçŸÿùDôÏÿðÿ]úÑxd·$Ñ-@$ã3wL-L0=ï!R8‡t”év_ÖŽ²y?»R½&í>M’¿‰]*ò%óOGªkØkrùå—Û†¢I›þíîS?Õ¹eU“žú2 B“zÉÖ­[m@ZŽ&ŸZwK”NûÄ?¯Q5Ég‹æÍ°ÝT™­Ã7õÔî5ÑQ@ggè|ªsKç#•²H_2Øînò½&ÕçP> UB†^j–J.Tß—Ï^þ•·o}}Ï^“èQ·Ñ%™ Õçë%Õ/TÀb6 Õwæµ×„¨—ÐP@½&Œ×5 ˆhrÔ±ã#5×¼¯sÎS#¯½öÚÌdÑ4kO8Òvmj'Ì4yÃ.üâ¿%òÉ¢\Mi»*÷Ð ”h§t‘D½drr2ýÏ™™™Â‡’ññÈôdåó,Ÿ€![bЮ¸×¤Ý\2ó´tªH?”O0çÙׂq›€Ö ®×¤[i$˜œÓ³RòÄôCùáô äÓL_5D†¤I¯É¶mÛ2c¶lÙ2ïûûLFI§Ÿò¢Kþå,N[·níë´MÑ„65¬—dn£Í-)ftB-Ht«»¸%@§Ö}[EZÖðº&ù'æ[L†ŸNjô£¸² @=¢ íD¯IÉÑ“Úa¥úõŽ 3thSrnN[¹$>VRžT2GRªGœnOìV#©¸2>M¨šÐ¦Öë%I'G&>Ô-^dâB·'æ»FòKƒÖÚ‡Yœ2wŽ¥{MªßyxÛ¶mývqçãÈ ì”ÌAphò·}Pw†ÎüÝC§v2h)TÚ%šÐ¦Ex‰ ]Ú`iS\/±ME»÷Ð@4¦ÔNMBë×5@4úÔKhÈ:´¬á=tF•Ä,ªhBXæëº&saC`‘ì~AMhÓ"¼®I¿ÿÇÚÀhK.êZ›^ZÞõ:r€hB@\×Ñ„°¨ š×5@4! ê%4ä ZÖîuM&''“áÞã7½ !,.¿Ä’ÅÅSö»>ѳòOé¶Ð‰{Împ[ÆýœA46µu]“ô.yrÎàöXÉR†Jò jýÕå“VÉB 'î9·¡eD`Þ•ÿÙúßLÑ„6µx]“Ì~4Þƒ¦w¥ù0‘/±”ÔBz¦üŽ<=“òGûM9éÉÊ E…®[ÏòCf%÷œ[É‹íöÖT|VÅ5†¬ä;Ì þWÕkBûõ’y õ3sò;ÂvÿçÉì¤KÝs>™‰ËgUøh~d:Ïõ\hfâøé%s+YÃôf©¾‰ÒS–¯90¿éd8¹D4¡}Á^פpOYoú*ÿ7–ç¡L™¤­£ÍšÎMþrUÿƒ%…ÀM'ƒûŸ×U;™—ó‡ç±S¡ßEw;žÒsVM^cÉB3ó/ïA©·úH`ÒÉzòDÚ4 {èTï<˜Ç¯àõ]xà¦J9§ùªVi•Ä‹z:ô"СM-öš”ôWöüÞóhE§òA™ÂéËË É1 *“•²~çÐ|¡ýFÆ3l}5€#šÐ²{Mºõ=ä»&ó4×g¢RE§ŸR}V…–ìk¡Ý¶yÉ}U³ª<«ßVb`ôŒÅ…÷†÷/fÑšššŠ?<™k¬%½&q¥ÊñmÛ¶mݺµüZmÍÏ)í7¸ž[c⻄·u%:€`eþÜUùÛž~bG¯ íP¯Iæ+u“PR}&ýN@+DÚ4çæ´k†y? ½&´,Øëš š°H¹ÿ0¢ AHê%aÓ |zMhSȽ&lÛ@4a¨â^gÉngéˆ&Ì[y@í$¿Yl€žôšÐ&½&ˆ&D;¢ aq]šÐkBûôš°Øäï†Ô¦jB›ôš°hsÉÌœŽÛ&Ccª&´I½„E›KâF“sâä¡üp2}ašÉÜì:3F›ª -ÓkU¢LaL>@4a œ§µ¥#K:ÇH-,èЦä:°Žé@ ý( š0$zMXä£bmC J8 CËôš°¨dº\3]±Idée *ìœUhA4úôš°8ÓI&=$ãÓI%3±ò ä9 C›ôš°˜ÓI"‰#铊»M\P Ÿ¢ ôA¯ 4LIéEA4vĽ&qíf¬ÑеR;L]uÐ5IDATÑ­°p¿£Š&„¢Ý^“ééi›`a™ššjX;w†mrnÀ"×ü«©hBûJ×5X´šAMhŸÚ ¢ AHê%Ã?xll¬ùôÝf26§õN´û*†³çýeÎyp¯ºÝ·¦dµôFÀ¢ –6-Üëš$ûƒx`vv6ýPúŸm-nЋd«èe.è 8ªo7´EÕ„–µÞkRøÍ¸üërÉSÒù#=Áìœô@~Ê̳º2 ê÷{yÉü+~Ûî¶qºÕ-2Ã=7u•õÂË,(ó–•¿#ý~Àú¼%Ÿ½*o¨š@@µ“ô÷Ëd¸pdŧÄ‘nǑόé¹é ’êKÏoÉI**Ÿá£}mœŠ[»¯—Y}q-¾ÌÂ9÷|Q…ïHõW]2“u›Ï—Ÿþ ¢ 45Ð{è´òǺd&Uv =×!kJ&ËÔlš¼ŠŠ;ìd§˜ÿÝïjTœrp/³pÎ=_T¿±¦•O£¢ #R/ÉïòÇYJ¾(‡¿­Új•ȼØn[¬IáªÉz™Á÷ ‡7 š0p­ßC§°´Þ°¶Â©­•̨}@§ÞƬr0¥õ—9ïY¤ç¶6/,BÚ`i_‹×5iø•}T» +¶‚îÓ= }íà¾é(ôû¢j¯ölNÃù+Ÿ@BÕ„6µÞkRxx¢ü˜EùSÚ: Ðð¸IIFºY²Ê«Èì’Û= ÓsnÕß‹Á½Ì†¯4¿¸mÊŸÕæNXðß¾â]ˆû¨QÏÔÔTüáIŽàdzMâòI•¤²mÛ¶­[·¦çãcI½ZK8;õÚ+#š°Ð÷ ÉóÌßöÉŸ}th™{è —Mˆ&´Ï=t˜/¡å’&G ½›ˆ&Ђy¼‡¢ d©— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµD‚ ×Ñ„€¨— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµD‚ ×Ñ„€¨— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµD‚ ×Ñ„€¨— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµD‚ ×Ñ„€¨— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµD‚ ×Ñ„€¨— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµD‚ ×Ñ„€¨— š½&ˆ&„EíÑ„ è5@4! ê%ˆ&„E¯ ¢ aQ;@4!zMMˆz ¢ aÑk€hBXÔNM‚^D¢^€hBXôš šµj· hѦM›¢\Òi©×DÄM …0ÑJ.‰ MOOÛª¢ 4qí¤yб=½&´ÏjS5¡M {M.¿ürÛ@4Ö4é5Ùºu« €hBËj÷šè, £×„AÐk€hBÜCÑ„€¨— š÷Ð@4!,j'ˆ&A¯ ¢ Q/ ¡q{ÚÕ­^â@cÏÑ·HCÝ.˜_Ö €Šž< c·Á@ù€PÝÿ©°yÞÓIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/jdbc-config.png0000644000175000017500000001761012032647202025025 0ustar ebourgebourg‰PNG  IHDR µÉ;xOIDATxÚíÝKrÛº¶PùUf¤´3§­‘¤m Gíã1ù¹¢º,?‚ ø‘´Vã”E‚Å{€Äýößÿ åÿ\$ $ $ $ $ $ $ $ $ $ $$$Xѹüüùóû¿÷Œß_‚g'׉WK®<ùó¹ëïëûh‡#_Æ5v´Òe‰?Íí¯ùf—X¥'ñó¯¹á&¹U¡¹ë!Cl³—õ.Ë.ï‘?bГ8Õô zu/îëŒo—¯«䪗åP—W IÄ·÷ûÙú?àä Á½Â¨TÍúãl‡Îû&ñ åwƒ–ã#Œ·–-LJ4÷P7»,³N!x7·fðna$sËËŒzâzîßp¹¿29Sÿ¿¹×5;­E™{¨[^–šSh*o~„Ëz+Ú~Â3¸ÓϺ½‡ÜAÆ!lüÖÐlr§¹{Þ¾‡ºöei8……÷]Ža¥Ëz;¤Uû"ɰRNTåwþOy§õ¹pÉ¡nyYš›­ÏÃu«üÄ^—ô$úG¥q†x”IfžõXÚ“h¸•kȽ"Å–‘å¿ ¸kðñ¯-¼z’þhë1ëo;9=ô6–¬?ëÈÛYœG oõºÈ /ãJ—¥²Ùʶ¥‡õ>qxM?&ÿPã(Sù£‡ÉuÊ_­‰…õk޼9-vš¼VÉo©v<Ôí/K²Ùõú…Û\F ª'‘ûrHy¦¡Ùx«òÏè&ן{äsïÙ'÷RXmáE>àe©¼&•ÿ„r=¤m.#0xó‡ÄråŸËë‡K@ßT< §?J€ge¸ = $ $ $ $ Žé¸¿“¸^¯>€U½¿¿?j’øöññá#XÉçççù|þþoaÃM/ªfÀF’@’@’`»$ÔV[©šiÙÛÛ[rInùýÅ ^'^¯–<Œdƒ³Nda “—hÆWVõí¦ïİïs¿cß××W¿—Ëï¯Ç ãm“¯ç@ý†ÉÖ³Á.=‰*?G‚~FráäV[fš!Ç,ß0î à?î ë$»ÉÍã=–/@Ÿ$Äñ{ßb(–¤aáøõiT­,ÞjòypÉx]¸O_ãæ:èUÜáx¼ð¾~p$Á:•‰*Þc¹ñò”U 7 %æÇKrQ¾¾°sý:“ù£p§¿Ë̬քì¡Á…§c< èŸ$r‰dþ˜ÛÎÚ1z›É€-é‡KA2XRæ~í9ðɬ0¥YiÛœl¬m·ßI$g¹Ëƒ…¡y<ˆ?«µä°þÚ=ƒÉ CêI‰ûë¹GÁV+u) sã·âoÐäÚ,4Øœ´‚£:å'*r+&fÌCíw±ûþ¢àz½¾ÎS`Ÿoâ8¾ß¿‡ÙòS`¸L;&†\Çà $‰ÝH €$±Èw'H}:€wNâÛù|ö ¬};þÀ= ŸÀŽÔ“@’@’@’@’@’@’@’@’àé5þâ:Y™®¾\]yÍ%«-© WycÝw”»õyÉá­zõ€gîIÜGsAÓÿþZï¬6(£œK|Arj '1/Åái¨p—|«æN¶°IÃQ%'è‹tÜWr¿• ¡Ù¡3Ñëðš›$‰Óív –üúõ«€Æqgü¿É¨—[ùþ:XGÛÜØK¼UÍŽN£«qò¨ç rÃäVÁ™™#h3ίÐTüoxh—Ë¥æ!ª?ê›ÿïwÓ¹`:kd£°ò’›Ù8ÂVî¨a§ånSýE¨9‹Â®Û¸¾©àðÐþüùÓ¸©þÁÝ…{á…+ÏŠÁ:m;šÜW®ƒr½‘<¶^Sÿ9‰Y3ØÍߟ™Ü$HK¾¨óÐôf€%ýN"9Ó»Æ-pa;±Ók_õø2ðØI¢œ9jb\aåä$m¼I!9åfw›Ï%7C¬ÜjXXÓ*¬™ü®ÔÜïÏo#€±ª×·Û­r€ã«êË€$€$€$€$€$€$Àƒùá4»^¯.ð(Þßß%‰­}||¸Àñ}~~žÏç†ßDnx~Í#’’’;'‰øiÛõà.¯™|·²ñ`µ-KM¼½½M.¿5ȽUÙÀÚ¿Ý4®vÐPÌ`={ýå___5bX-Þ*ùàñ’DM'c\gXTËÉ%\âi«Øœ;ªäñÉ/¹U[æ(ÄýàÝï×òp=ç$îwñwqÓ@nå¡7Œ 1:ùn2%Ôï(Øi徂°>· OØ“¸ß€ß£j²fe#¹•—Œ ‡4wG5;{`C‡`ÈC.‘$€§MåÎD2R/_9×Q¨ìL4ì¨>áÍÍÃkcJÀ %‰YCösÇ÷ëoçƒdм£Ó Óì“YáÞÏ9€ƒhœ“h›ÈíÛWØì®Ã¾Ê;MÎ6WNAÃP_éaOØ“æ*®Luä6)$§qgbÖQ5ìk–ÂœÄø­ Oß©•?€Í¼Õ„¿Ûív¹\øÜ®×kÍS`u €Ýýþýû;^ a¼>ª{,ÇÊIX†™$±.xhŠ-òÝYSŸ$Hx?ŸÏŠÓ’Ùž„‹<1s,îIüùóÇÅ$.—‹+ I¤yxMæ$$$$$$8¦¥åóé^¢®fïËkäÅõˆæ¶“Ûû‹Ø—·Ë$‰éàx¯ã¶e”雟†zÈ‹³AÔÞ7ÁOž$‚(6Ž2qôVBç)U¬4¼‚…ÃÿÞƒoÜìäÞ›ÃhMl]xq&Ï.^9ùn¼—/ ðIâv»K~ýúUscÜAñ¨°0y>¹°yï•=Œ`«…§šÃKž]2Tvâ®Òò ÿÃEeùÒõÍÿ·Ðt!~âQøP—½Ïmª2:¯}xõy"×™èr„êªþ™­3†›¶|‚ÓÂX¼pO9œ2·r´À.Zthû0ýÜãìæ€6í¿“F0îCÕÝC[Üæ;Z)å¬wqÖ è™$NÿNoÿ›\¸F›Éqö…{ïxv«^œñ†É…åƒIf²îxo5Qàv»U΃³ªà»F‚8Ц>ªÿp±Hòë‘$/O¸Àf<àIIII€]ùv®×«‹Oàýý]’`.<´ÏÏÏóùÜð›hÃM†$ $ $ ¶Ð2q=ßt½Ç£æNsß‡î †Ýæ¹°ooo___Á’û‹`9ð¢Ibí`wL¹<^~/ðåYlœŸ†|Ìqþ^:IÜb²x\¹‚HZÑ’[Å/rm&;(ñQÕtÆ5æÆk»ˆßJ^„òy¢ù¨âf'÷>ùaÅù ÎÀë?'qXw§™55ëW±ã-ÉA˜!ð%ch2cWN¦IÉÝ5m¼°|T5{/\–˜^H3Ä4ƒ»Ñä-j¡17þ–7\2ö²¼Xt¡….G›Klm{RE¹q@’èЙˆãQåÍøò]n|ÕöîhǃNte€Í,¸ÎMHä&xOÅ êä Ç1ñ!ls´Áè“>°zO¢Ð·h˜¨hë^6éxלÎ÷ãÉ6{í(9¨WôIÃv2n¶šäôFÃímð5žšI‘Ü)4¬<«…%m&“nýÞçéïlöÛÿ˜Ù†çóVn·Ûårix| Oàz½z ,<ºß¿ÿ!a¼>ª{,’ó):Ä´ï>©út I@Âûûûù|6-’$èCÀÓÜðI¬B7×ô$$$èÈÄu‹ø±TsŸz”|¬^Üæ6e«‡¨ÙQeë… IâáņòdéÐÍÜ]ù4ÆÊ× ’ÄKt2Ê«gu8j*{Wî:W û”ª•ç5®á¥˜“X¥‡Q¨¤½¤TC¡²wMïÜ®+;.nóAO‚n݈òÂæô3«G²¼¤ IÐ!%$°ª(HGqÀ;n /sÏÙÅ©éRäÖQãГXëF~a‡2ÔñÂw=,¾È,œµßñ÷†™í… ãPãš j\ÃPã€þ$ ²ÌI0Mk$ Mk$ Kžæ†O’`ºðèÔ¸ ÿ€$€$€$@GM\'‹%«­U6u—,ж¥É]//kZ¿Ó%ûª/p}ѱœµg7$±J|ìRYzƒ£}”}M^Ì5ÊY«q ’ļ»ïB%Ÿ`Ãd së<çJF—‹KN*xqú·æhò0Æ‚c·3Ù[ª<µä‘|RÊøkë9‰dì‹ßm+Üü£“m&Ãwù.»¼æxµ ™ÕÔ Î58yAâåmÕ°k.øÛ_þr@Ob]¹<±ÆŽrá¯~¨ªrÍ%c_q™‡äÃçº\¹äT8‹ä0 '±uocIþˆ7ßqf{ù©u?øqî™{0èIìoa@,Ïd<Ö©­tðñpœ¿àX=‰ši€``à¨|#¼¤;’âß ?±Í7z‡½&BÔ¸öéI$ ,Çïæî»Ë+ÔÔyn;¶¹?æˆl«t]yð³&x G2ù¦îå¬Õ¸†ƒS㺪Wqü™…ÇYØ\kxj\¿ºåiÌÌSOâyBçÂ/àú¬I‚j\ƒ$ij\ƒ$Yúð47|’«Ð€G×\ãZ’ ö_˜‹=$Ðv·ç+°HHHHìÊ·›©ªë¬² õu­»\rµòØ68B@’x¡\Ò¸W- ÔP!u›¢ÀÂÀÒëÏS’èp>åAˆOv& … øŽß·@2|W®aCŽ­fw ,¿ÉË剎_æ$¶ø ãí^†hn'#¹Õ8÷$óÐä É#l;ÓB C¶h8q >ô½“$ŽÕClØj²´\}í¹šX9Otÿã•$Ø:GêCÀý˜“XÚ!¿pÞÖ;û—¥'±ôƒÉ δÝ/ãõ»ÜwwÜi®ý x’Ä*ù<èU$¿ç“ûQr…É­zöÁ×gá¼Õü­Þn·Ëåâaѯéþ„aŸ><Ór}Tד@’@’@’@’`W~LÇ´ÏÏÏëõê:€$¡÷÷÷óùüññáR€$éž„‹¯Éœ‹{þüq±$‰„ËåâJHi†¤^“9 $ $ $ $ $ Žiéc9ÆU‘·¯ZŸ~-I¼î¿^Çõzm»;4'€$€$€$€$À®|»iž fÃz%â§E³{í4.©ä™²€$Ñ?al¦ïÕ=…‡Ak I¢[†ˆ+•&ÖtÆë…QË;š]˜‚FÆ-įõ?`ÁßûJ·’æ$ú$ð!tŽ£grá°~²äu¯ÔÕ¥ñ¡ öôWè{Ç&I¬ØÝ[µ'˜ÌF ±x¦<ÑýÝpÓÒ=™3¶¿ÅÞr:p„ˆ´Þ´¢$qˆ®ßø»LÃëñ‹YŸý–ý}8lðéÂpÓ*ý‰É…Á ÿýOaIùâ5‡=&§o¿¡ã.€C‘$:'ŒqÈN.\µ{XØc—fƒSXc_À¡¼Õümßn·ËåâáÒoÆw ©÷'û4á¥øõQ]O€,×[3,<= $ $ :2'ñŠ>??¯×«ëH„ÞßßÏçóÇLJKH„ô!àeo% ªèFÀ«ùüü<ŸÏ ¿¢5q ðüš‡$ $ $ :j™¸WÈÉ-YÒìiE§ð„¥¹µ†¶}{{^}} ‡%³¯ž$V ˆ§Kl¦÷ÍO“‡´jžâûwÜg‹ûëú…€$†¡r©çøö<¾U–Äo%›J¶4•ŒþÁ JhÜìäÞ'óMᘠ™©æ|s;Ë Æ»ÙIýç$î¡v(½¹üŽ8ÙT0:”\8ÇòÂdrjØ{î܃(î\;¹nÁ¸›U8ÍÊîÈÛÿøK:÷$ÆQ/x}JÕp—A®Ò)ĸ­÷¬Sè¸÷S¾êu|•®vyïC~šu𯋀­{¹ñò ûzÆÉi›ÝÍÊ‚]zZm­É ÀŠ=‰Üíöä`ýÆ“ÒÛO€×ï±×±£OŠß‡îI¢gn0*È"Ýïý“mîÒÉèÞŸ6Ïå†\û¦"€u{÷AöxX©!ê%'-Úf2ÚCÿs÷ž<÷qãÁ,N®ñY³…¦ÊÇüõõÿÐaáBàɼÕľÛív¹\ÈéßñŸúñ¨…¿é+l~½^=^Íïß¿¿ÿð‡0^Õ=*|uA· 2î/ù*T[Ç @’Ø-Olåe@’ ‘×€$Aš×€$A–>¼ì ¢$AÝx5j\¥Æ5ýIH¼x’˜õ¿á­¶gÿu|áÏ‘¯ØÛÈäšs[îÒ°¯gûvSÃ’~œÜ±&öŽÅ½ƒBCÔ’!@’x€NF…Ëõ·OkÖÄŽ‹{Ï‹ÍUw‘L{Íɬüx×ä»÷…÷%÷×É$$OÀcy‰9‰Ê²Û¹bÔÁ¶kb7w;’ ca$(ezÇôä»ÃÂqªŒÇ‰ƒžÄÎrwâsôdÉîÉÎJîÖ~¯+Ë ãÐ%ˆË Iëh'§ÍƒåÉ·’sÝÍg4·K¡“z™9jeM1êxÍÜ^fU K~Cineì¹rsåâÕåz×§X›ׇ³ü§厔×ð‚Ô¸~ª~ÏÂôpR¾èD’`$ FÔ¸$ ÒÔ¸$ &z.PC= ÷$þüùãbH —ËÅ•$Ò a¼&sHHHHHSûc9â:<“ëÖÙ Jèø€·ZêpúËÏtá‰Ìýàö=YàQ“Ä8ÄÄeÚÊi{q9Ï-#WÇü´ðDž>}½-,=l¯q˜ˆ£FnI\ç9qêNFÆÊ#YrxÉÿ{ºœÈä‘Ä+'ß-|”Ox˜žÄív –üúõkr¨a|«‹x…ñ¶ã­&›*,\Ò Ž$wx•GR‚õ{ïr"åÜSÙá /|@m'ÿ{ºë\¾4x|S¡éø¶±~… ²Ö¼”.C7å88¹°&˜vÙûMÕç‰ÊϺí=+ ÖVÿÌÖsõOpš¼3­¿u×^Çw¬»Ì|ì>ݲ¯¹½¾ÿÒ€µõ/:49¾\?[s|;¸ØePû•GÒÍ%ÀÓëó;‰^Á¢rࢼ»a…dRI®Ðå ÄmvßÑÚ'’Ùów’ÄÒàÜÎñ+þÖ|2ÀÓžå¦ k:³¶ª Ù“m&ÇîÛö¾ê‰Œ7L.,L2“-9Y`wU_½Ýn•óà<¢à»F‚8<½ú¨þÃÅ"ùI‰(ñ€?$ $ $ $ våÛM;¸^¯.°±÷÷wIâa|||¸Àf>??ÏçsÃo¢ 7<¿æ III€‡O?ÿU³þdk«jü¿?# óööVX˜|w5ÇÙåh{{î€ïú.<È)ÃJöüvÓ¸ÆÀd%»c?a»|I___þ n–熫=¼^¸ô$6Mq'#Xž\aò®¿yázÝ‘ä}h|—š[,‰ïèÇK’7ªÁ ¹öããoGÏš;ñÉÕ6 Ž~X˜ ëm±>™BÚ®|Í)Ãëö$’Á4¾7êÙånÞ‡•‡“MîuŸ‡¿ Ç/Æ‘.h§Ç'o™“¡ª&ªN6[yo^¹I¼ð[òâô +_ÌYW~òãI¢Ô«˜µBÙ kÞÓ@—LPY«§~_÷W”'oƒ†Ð™ @É%kÜÒ;š ‚ Qrr“d”/„þúÞvåë?n$þ »A­´Y+Ö^ÇE:Ûš&³Ú‘#Ô.á©KšuÉ(_yó.‚#I(C4¯0¹æ8¬G––t,ÆÃ\—' >kgˆñÞô,àéí?q]÷kÚ™\§¼»•æ®ë›­ÿ†eC` F<Ê-”wÝ Iðþþ~>Ÿ§$ ô!€]nO%‰‡¡lIk²Ô¸ ?II€ù–N\çÜ=.øl’{@wð€\ƒ¹Xãê¬Úøc‰3\Y)¨¾ýñÿæ¶õÓex°$‘Lñs³“åäjJÂMŒÁ÷Ò=X'Kì­½S l•ᦚR<ÁMz¹T\P"(‚«Y|w²Dvî)³K*f^Sƹ\B9¾_µÌuòÞ¿¹@w!ajVWžÈä)[÷$63·îPЉ7/wkVª˜]_ù¹¾„òÚe®ËgQyv ƒQåõ'¯p žDá6|¥¢ «qZ\i.W1;Ùÿˆ7 N–ÔžUð¹¾Êf®¢r}™ë%Ps tÏj¹p"†§àñzÉ9‰ÍòSÇv&+fÊhÐîe®;2¬GIõŸ.Ç9«bv®ŒöaóÄd:Oè4ÀVnªÉ"Áäv¹ ôÜ“Sõ]ŠÊ•“hå…»ß÷*s]³þ’Ý5ãH…‰ذgO¢P:W):ù{ˆrqérƒ sîʽ*f'#Ýiq-å}Ë\÷*Ðl»üD€åÔ¸ÞÁPãzŸ¼S™k_‚¢Æ5ëö9dxM’ÄkéUæZ†€¡èÐ>Ô¸$ ÒÔ¸$ ²ô!€]nO%‰‡¡lIk²Ô¸ ?II€I¹:tœ<Þ$ØÆ³}6ù¸Ùxa°$((4¹a\¦´r«ÜÿøÁ×…Jœ÷ãGb +ëµ¼bO"(TˆK¦‡d!ëq½ ä†ã5ã­r»Kfˆ¯¿*ë++Ç ï¹A†ô$J©b²¦tR®®uyÍšM®S“'&[ð¯$&bq®¾tÛÌv\×zÖ†}ÅYD¥@’hé Äõ¥:KJy¯Q×:™ž¦B5pLÏ6'QŽìYvØ][ëÜÔxN¿`@O"qŸ„ÝB}éYE§Ë{iت¾ÆõxਰðTQ[¯èEë$k\‹ìÀzšk\{Tø®)z4^$C$IìIb$ Ô¸$ ÒÔ¸$ ²ô!€]nO%‰‡¡lIk²Ô¸ ?II€ùuâ:~¤Ò^ír<°<|O"W9€—îITv2 u§OSŨƒº¤Éê§§ºŠÖ¹.Åýn}\ytX~1wa¡>ö¸ö)*D¬ Jå‘ ¯síÇ‘}2ÖJÔ ý’qe24 'ñý†8(Ç÷òÉÚ×…‚ØÁVÛ«,g­Æ5 IÔÞ­"×Ã8‘â…q5ºí¿¡ Åw÷ãÔ¸Võ¿“HÖ¾ž,ˆÝ±—S(ƒZý¿U_{< =~½°+èI<ƒdaêæÚ×ÁˆSý&ã¹ñ²øÛMËk\Oî딟؈w ¼25®w0Ô¸6Fl£¹ÆµÇr I’nppŠíCk@’ Mk@’`¢'á"ÇgN€Å=‰?þ¸X’DÂårq¥$‰4è¯Éœ’’’’’’’’’’HHHHìâÿ߸áƒ[j IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/jdbc-request.png0000644000175000017500000002131212032647202025242 0ustar ebourgebourg‰PNG  IHDRÒNl<PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<H©þ'ØÝà“þ€¢Ý[pØÛ¿ƒ ÿªÃGò°v#BDøtMµ²¸ã¹lc6ÃUj r<¶~µµÔ½tcÉ{n5çÓ`xé }WˆÒÙ”Uf.›µ ûàçÁ2v ®0ëÝçı¯ .µ™òMÇÃ:zýœ˜éÀæ¯2¥­w‰†Ù¦ŽétírÿÚ 5ÒûËp:ÛÔbR|­ãC·¬ÍwúÜ íD­µßŸL7|‡y+Lêcà^0V=€}6>4¡#Üš&R¨¥ÕW¥(ð&¥Ÿ!êò¾ôÑáA³Zo”¦EË@JH)RŠ@Jµ6âbkì]øŽ–¼‰ñaËìUô”»/=Zi AlÄš‚9ZŽÒʱŠÍXC8ú~ê AñâM )EÔ ¥G¬b/x—b­.+*wQ”Ú¨ F¼A}5Nâ¦\ºå$b' ïP„®³K‹óK1¢¯ÿB8ô`17 óA¾¤»@PAQ™Bº¨6æU3/É´T’WnÕ¢Ô¡ßL¼`:øÔý"c9—ëp¾gúÞ¶÷†Ë˜`·Û%­é†lÝäŸ*TÉ+6ˆª^Ó¹Ûdý½d0ξ‡1qF \…(t6zË™U!á*cX]¢”»è4ÆU§´m‚~>7mƒQ¯ðM Ñão®\ŠÜ‰J ‘ÜåË^ˆ'D©¦ýYoÀO†ÔåMp¿2ÿ0j[])Ÿ[Þ¸ÓjÞ—ÇÉêËp)¦.ÖÃwÓ¿rx$öœJmtݧ¸¶VeÞÔT_K·’Õ·×–[ úØ[1ߌY­e’ÉdÃ!¶vÉq TRýdyÅñä ð¶ú*¹¶Z8ŒEì"ì«= îð`Ý÷¥Û*i÷¥â(ú5Ô¥æ÷±åêNK±åj Ñ'Ú—"ênx„@JH)b'†Ge€á]úñ¢áE ¥ˆšéK“4ßfÒnãxŒQ_ÛZš^nxêûÖ¶süs؆µL鯍Aó’· 4¿`žÚ¾…Ðæ'þŸó¡ðƒOÆ[_˜æHɦ1>O㥖æýiŒl^‹”&à&Û†ÎÛÌ}ô]K¢kä|â_†h2c=Ÿµ°ëÌöÞ(+q®¦ázýzú×°-k±/uÂ0Û~ôˆšÌY4"e+ϰ…‡M0ä bhÏ_þöû< ¬E-ý:¯Ç3?^Ñé“Î󌰌òcÇi¼eæ ÊÄ-ÜàÙùW±-kQK›!ÅB·rãäPËÅGú¶¾›ˆ^ô`[Ö¢–š¯Gù¸c B¹øó:§‰Œˆ1¢µKÇ5VÂ4jPK{‹ü¬ ÚçÖ¹9s™#̳_š±J¹Ž#«—ýüôJ6fmàÑœ>ËÛïÐésÿô¥ˆzëK{;äö§µE)Æ›«;JÑ‘ûRRŠ@JH))EJH))E ¥ˆ”ø&Æ7øícÉ““Ê'¶ùùHÅ”j‚RÜÓ=lÊRÀumc‡v z|<Ü©>h ôËÇJI"*ÖÒ6ø&Yÿ&Ù*à}H#*8—÷éÎÿÄNõtØ|ß<&¥óð2Y¿ óÙ¥ÅX W?‹Kvß?¿ð NvEý÷© X¤]„¨¯¹¥!êë÷üóáÐâb\%C›2_]˜ ‘œÉâpÄ}‹›¤n²¢X`š)øË—X 8¿HKÖÙ±ˆŠ)2›rÆ!îœ:æ7<<@}x l:÷ŽöÃ]CÔ]7mí?À4³ÏÔ!Etõ„©Gáò?zŠ1d=ÎU• @ Ú!xÝd;¯ˆ·;7à@¿%Ár‡¨c°ìGÌ0 „{-ƾ/ÈÇFy¼_¾/eï׎ ®‹åè¡1\©o3#¾3õò™W¨5 Q #ˆØæÏý€)D}íùRè7™C¨c~¾¼ 6J㔨œ1 !ƒ|N3¿ûƒ(èñºe?b þ,üÃË!:UÔãÿˆÇâ«ÀÈi•,çýˆ…aÙW€ìoŽåÃíß—¶ÁEj/9HÄUìg„¡I0AºDªÍ¢]°¨¯<$ œ]ˆLV–8!JÑ8ImiE„³„øºØ)Ã~įÁfˆüI:ˆÐcÛ¦´ÅžÛRQjžðeš^œbÍj½¼á›‘œ´yÚ»Ú<þ”º*ë­%ÇG«S`šÛøµ9Ü_iÏ‹§×šÅ<Ÿ ~Äj?âö¹ÀÆœ̳¡µ7 ÈÚ–à”¦õ xò"v£/Uñ†÷‡áE ¥¤”"R¤Q7hر3a4üªÀ¼‹”Â*¶ÿ“ÇÑ÷¢á­/±/Åá)EÔ ¥ún&íXR•9 RªGÇ&TõÈå*5ó·K^!ªt&ãâè•Es› µVv66Ýi©IÚѪRJý¸âО$¸³Î3™xÿõT:û©7t„ñö]=’F4­fÁkdðå4ŒsÚï¼ä€»¡t{C³´Š2E®Ô⤥òÜ¥.œâ½š†wÆ™„Ôд&Ðv¸{ðRÐÚE‹ÞtèP’ºÒfoždÊÜg³ômÇL(µkm‡»†ž'‰DÇHoú€sC)g»ÜlÂZq8»b•µ´¢Í!bw;Ó$óÿ›c]{â¡Mæj4s¹ N qáá…¾÷-²îN˜‹ùÊAFIäuÔ…ô톖¶Årñ±6ˆ<›µ°è¬BŒÞïJÚXWÍ0|‰ðp⤅cLãÔÙ>ò\æ6;‚–Q• ÓFló×RNqvd†ƒ Ø&Å¿v!AÔðCábxOv¿äLgz…Ú‹.˜wñ.©îKõÐ?ÐB朒iHÅ„ñët/€b)‡äóÞ:Á.LD]•â)r;„a]wyÄ;ç¹þßĘN,)¼2ÁæYîTÎO²´}n›’>ÔPOLó¸¯À!“ÊLÛ‹ïe„¡®Û…=k°sNŸA|SØW¢Óç~ìKu×—V Gѯ¡Î(5c”ôúÓRlmìK¯¥ Q[”büƒº£{;ìKH))E ¥¤)EìEJù¯.Ì/~5 ôÏ/øÓ*·ëÔÒÂüÊ}l·=FéÊõ®Ã¶ë+ògv,)ÜÁ ½ôKzÒ/¦±áö¥IòOç=‘«¦ñ‘ Å®àèÚF‘Âéæ‚ó‹ëŸŠP›/;?>Êü³[ùVˆІŠwÇ«ùâ¹ÈÐõßéå9¸¡ –ê¹1LX•îæàW©êRæ›=±\b¢ï<¢¿‰6tß&ÊÙ Xí“ã2üô?:ðP߯À{^ïÓ¾–Ëk£‹í[“Ã#ŸcSC÷{ֲͧUñoÿp,˜ÒŸ"”rBäÝoA,) ‰Úà|[´¶†G"ºfÖ×47­Ðêü˜›ÊPÃKoLéÇJ=e~ú·ÀvdÎa`Pø^·xF&š°EwwÍN†‹ÜåS!{‰üç;ÍØ¢»Ñ—n1â-…æbúšJ0 gšï £5jx ±1kwx„@JH))E ¥8â­à·mÛ‡¹¶)…Y¤h+ô'‡&µ¹‰Ay{¦ÆµàW·òø!& þm`_º·áœÒªí}Nyõ‚”îqä8'§^Ò=-p¼zAJ÷>ˆ^òœb[Åor#Á5[·”\¼½¹®m±mãR¢ý²µ:ðo>—ÜèT”g¿ðuàõ¦Æx¤CþãÝÿÈTüøˆz©¢–¦V2»s¾ì–B^¯°l-ô´ñÒÚ“mˆ“ýÊÜúO»u]\…S—òT2°ûŒf9gÁRE-8í%ñô-+Õ ²pk±œÁ¨qÀ”&;øMég'H¢>!?wW[lÚ\(̵ÞV*˜ ’¤Š›éyß½Õæ•cé@B£ãxóaM«•¿ñ‰\{¡ÎYKcv-E}sþtöSsäqxꀆ›½°HKÓ˜¶ÁºL“7NGyƒ‰sÀíX !Þ®“ÃhÊê§2»Mé„sÜy\ν✨æˆ7 ¿G'sOHùÀ‹½—þ4Ú[I)õð• çã¶þ„zío_8«¾™=ií‚ÝGŸÉX»}¸‹Åñ~« ½6K_N ¼™)üKˆlBýê‹ê7z*ýÅ›ç²RžÆkï©ûx•y÷ñÔÃ?ÖÉüPžÅãwŠuV¿AØmjõŒä¨l:³…u‘ƒÛ¿xîܦÐ?äël‚û|áõžÿ µÂçàäÀÄ»'£d;89ªž–úrOJvïè¥f”,ùmí{5 ¶ÄØ0¹Yþ«# o7«7â}Lg‘µ­ÐצÍü íÊðh;3Ò¶%* WS[”š‘´Çö¥H))Eì0êõQC*˜ÊéLM¨¥uƒôR®ë©´?…”Ö 6FZ›SŽHÊçHú¼Ï‘…´c©~g>®SJãô³ÆFˆIùp¯ÝÚ ‰¶ÏP¨8´`_ºÇ0Bý“4yÇåÏA‹b4"ép Æ´Õï[Õ:ÕRꃢŒHzNcÞ‹<4'r›“Ø—î1´Àa%A6`–yŸy½â{ô–ÑÕËulwë•RÓØétË)h#\¦¨¿YüYJŠHª‡~h…úÕi_J#’f¦“ `_§bƹ°_‘t²žƒÖ룆Fú©Z2Ô¡cŸI€ÆÌÞÐ1QN£¥¯¼Hé^Ds)_ÒùÆß×jiáÀó°¿(ÅpR{ æJ´tÛiïÀþþÑ}r³•)Ýã"¥û•Qê*‘¢ŠR;*ªª¢ó'¨DÞUÑßQ\'ÞÄÈpÓrËÉG®£|ë»å¾‰q©.v×Cõ¢XÒµµ:¹ÊHž¡€jsÝ…]xåŠZ²Îý£¥ÄRº]âVÎI…t„S¦QdyÅŠ ¤¾QÙÓºÔGTb$Òê·ø÷‡á-þ¾4¸º?ܵ/LàÀ¾z´ðûR| ¸_úÒj÷8¨¤»B))E ¥¤”"¥¤”"RRŠ”b ¥¤”"RRŠ”"RRŠ@JH)RŠ@JH))E ¥û%¾\;Š!çêŒRóûØ*u§¥»÷× }Ø6* ¹›À”ÛÄQ YoÀ‚xƒ@J59â-‚` ômE¾ú™Î‡Tö¹òáPò!°ä u 19ìâQF¼^Ÿ»e­HôڵǛ®£LìAdê S ÐQk:Ó6˜u˜IHKß e š@ƒYŸ …¹Ö{?CôÐË­År£ÆSšNˆŸš&zëï¿sÚï¼$**YnœŽò—ÜHpGe3·A*ÝbDO·Z­ÛéK5ÀÁÚ­§»_ ™wÃÚíÃB:Ùé<µg(‘^ûÛΦ*½~ÁbïF€n²ÿ>¤û'¢m‡CCÊé<Îô½mï ÃZÿ¡Îå:ìr»Yè+·Def±«ÛÔR>:è^ &à*É4Ðýa@Hßx¶R†›Oàèyˆ å¾ùZL­©ÀçÙ”v¢`ÐAؘßkïqJ- KçRZeÄÑRÇÿEnÚ r-c’%,F®e­Rš.—‡W@˜©ùGpüаg”QÐÿ1×m>—y F•fàÊqr”mlèuߦ\êvåCë²T¾±ž•šëB%}”áE¬“R‰2-á=N®ô•aÅUÓÖ;5:§Y»xýŒÂ ²i‚ût~QýÝ_oÍsZ˜R”ŠŠšûè÷¥ 9_*-  b÷~r»Ã}>íÈwÆ#cFzDHÈ3}†r ߥRKW|äÏ&Ÿ,ou¡”i./ƒZZLÜr›œžÈ§Å’Ù5ã´ ¾ïYé¼;ägò÷<´iÀ:îûšTϪ°é›1CÇÍ%ã”Max¥¾ê¡rðlEÄPÑ0£¢ªPés7\Ýò~QŒô‰}i •´}éýžêRô{ª;Jƒvdd»ZPë†}¶ÛS¡ïQ½}ð&”"öÒˆ×àá+õ@Jº‹Š6:+9R˜¢KJæ§çÜTLå–ŸFM娢š_­°Šb‰ý}ã…ÈÙ›•Ýfœ,v;9Y™'Jž‚b§#Ťƥ)fÃÃê* %ö½ám…Ü_™_xð*8«>HKéØÒBpsáÁ&ðÁùÅ7O•úF`a>È“þ%rè)Zrd!ë8épl..å¤ýqÿüÉI/ײ$Ç¢Ê\PÜ®Òm£Š}K)GþÙ$¢Ö.X“ÒÉŽ‘Þä¡ ÷Ú,}æ$úÖÈê)jMˆÂ¿qËÀפýíø= öÛÓám=j¸q–z I>D:.Ÿ6qf2=@œ=Ò}‹š‰Çÿ#Ä Ihc<~#ï{´ô-µïÑ–ý¬»d·+k¥[žgÕ]ÔCo)±?)uŒ…/[aóÌÍ·NŽz™cÑæ™9Mš<fâ¸rx¥%xéùX6>ÙÈDsÒ~ûØ |öÍç·ÕͪŸ8¥´bÎ\W‰é¥][Iì×á¼ °6™£¼?QÞ4¿+•ˆ¾EJ4;gFo‘mvŠð,î×1ߣ'fc]2ɪuK‰ý~_ª‘}ˆ@áO$Áñ”c <ð¿’o‘¡».A;I‡záïó¾GJß#™yÌSn𣠹KŒ†ŠŽÜã¥í?¶Ïû±´A½·}n¦í`s½cº£¾El_·nl´¹‰žu}ê?AÜßqÓ§ô=Êw˜²S‘œv‰=¡´q—%yK¿¤zUÓõ=âácç=Ý_:åM̾öJ*á{´£/×>ιîèÆ8|jWS†÷1pÞ¡›ÃxßY7”>è{To”¢ïQÝQоGÛׂZ7¼è{´Ýž }ê è{´€”"¥ˆz£ÔA_œ¥>U™£ ¥z¨õ›˜(5G UYäÅfÜÓ”Ò˜)qh—ãÍdzàÍùÓÙO½¡G¸.ªùüFXÓj¦sp7’´ë²+™\“Qï€Û±¤Â`Ó=RÜ#Ä7¼3CIH Mkä¸GouÑâeÓ¡CÉIdßdãj惴!“6¬Á ¦ƒO ¬“\Æ2r>×å|á‘â!ž<¥:ˆ2ÿ¢î«,îQ «¡GóY?‹c4 xCdôð‹Â1íÍÀÃ÷4Áeæ¦dldËUÑ÷²àû‹÷ºÁ‹JºK”¶År‰±6uÜ#¢”'ÿÜ—i}à ¾=~\zGBÎ1B$RvöH#•”Ž{„Øé¾”Ó_œuÞä ã… K`2Ç U*|lÀO†ÔU•‰{„ØéûÒ›ÐG–â¸G AÑ"¯S¯OÙ)/Ã¥˜º¦Òq;N©Ác÷(­(µzV„lÃù)ön ýçÖ—§•Áœ_Nªk2ÍžõÍX„¸GÈÄÞ‰{„( Œ{„†±F¼UúÕ¥è{Tw”¢ïÑöµ Ö /Žx·ÛS¡ïQ½}ð&”"jqÄËâ5YšKŠ;À[6~QÞ/AL¡£BÍÜÄx!õÜTw¹#ÊÆ/BþjÙð6A rÁù…õò-ÌûÓìÝ{ÿµÀô8åX!éÇ«K Œ ±Èn1@dÑŸV$Æ6¢*ëˆ/=Ø„´ÿ£_’ä6}‹¡È'Ĥóà˵êRš„Ñ9ÔÎÂóƒOõô¯åwbêØ4u) ÙK“/š=•¤iÛ()míï¡rì#‚„mhÖn?Ý=øi’ûK»óüÕׇ‚ÒyÕ4¼D_fÌ¥s¨Eí\n¥Ø ·AÄ‚ööägÿ”ù ±ä8Hf6éD1rì#`±‘2Ðý¡8oÛ³â\mâyÐlWSK½w=™i5ËøàÙŸÉÆ7³Q!tò¢Ï+•çUã4Â|k¢‹¤š·­h®6Dµ´ôÆó³qµVݽèűÃc£  bÄÎÏŒ¼É‡¡Sù]ŽƒtcP˜±(öÑ–sµ!ª×—'£)6‡ÚøNh­ÐHçI½r=‚þ-x.y@ö9’.1Òé‹oTû¨ì\mK8<ªö£†¶‘›C­ºf–ç›m`šXølöA̱VÐËû °Žû¥mY›f¨éó/ÊÃÄ©|–@œ« }žÐ÷ho}ö±áEÔÙˆw÷€¾GõF)úÕ¡–"#Ø—"¶ÖÒž(¶H}QêÃö¨7J±'þ”"RRŠ@J‘RRŠØaü?‰n~[ÖIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/JDBCRequest2.png0000644000175000017500000002167612032647202025024 0ustar ebourgebourg‰PNG  IHDRÞfÕ‡ IDATxÚíÝ $w}ðÙ»ã!¡Š ’îô8H"·`HàÂâ™H(EÀ´U„ÚÄIaÛ&1Â1‚Ø$^ÙÁ¡!ÅÃrÙ”ÑJ¤ÞCŒ@ !ôô@BO‚‰nÓÚ–Ú­îžž~ü{ö?3ŸOmf{zº{zFûÿίÓ½´±±1ˆÃ»MD@4MÑ ‡]åIËËËù_766Ò)ù×WXxyi•ëJn7_éÄU„•_ÝÄeO¤ÿžì°‘Ùêê×>åm€ Ѥ<Ê¥š,°0Žv^Åò–ÚB~ª_Q«¢IÓÏÜC ´åUIÿxQˆ£Þ¡ÂCÒ…¤Û9nùÙ)oL~OŽÛª!ÂMÍ2VË ¡Ž½&ÙXU\û,­æXÌÐe‚<‘šÅÖ?‘Ê=Yت°û¼ùë8Ð΀vU“l"Œû¤^™N‚*“Á;·ÉbkžoåÃÓ Ðmƒ{€íŒ&=‡Õmíæïƒ~–Û:^×¾£À D“ùø<ïÿ˜t2Êß õ¤ÔEˆG€óš¤c­™ÎÇ÷Pk)f&vò†ÚÏÃ}Ûh\¯‰ÿOˆ=šä¿.Ûa°\ÎM:yIÏC3……‡­ Ôï‡Âw[*ŸHó=ÙsŸw^¦oè0MKÆ›*s0–K$LŸÕ©¨š z¢÷Êã2a?—;ôüÓÛïýn£©íM¶‹:€hPe×Áƒí –hràÀ{ˆ„:@DvÙÀ4]zé¥ãî:ï¼óD`ÚÎ8ãŒqw9 DD4DÑMD@4èÃyM€©:ï¼óD õ—v@ˆˆhDdéÜsϵèoÜé /´shhmmM¯ BÉê@ÃO¹»²2Ä:®¹êÆäßý'íµ»çÕÊÊJ’K¾Û`œ /¼0Pì5‘K'áfšÄ¨P†Š&i.aBnþ׃j. Ï€2H4IrÉ»ó×ÒÛoÜ"©,TìU; ³±m°KKKÙíÍÍͶ¹äCúPGÞñËïÚÒÞ$¤7ìñEÖNô—,š$¹äÜs×ò¿6O'IþHRH’Eòå’‘}UG. X4IsÉ-é'൵¶éä9Ïxá _üüäöå_ùÒ¨A3l¾H3j\§)oU¹ØÓjËéI½€ðÑ$ûø»¼üÀ0¿±±Ùí”I¹æªOú³>÷ÙK&Î0FdKJ¶…Óœ0H4Ée”QÛQ&I$?qôaÙ¯ÉídJ‡:Y $Ÿ6²)éíæù£°´ôéD &,µÂG“dtÙØØÌÓ¢Pj¾„ñ¹Ï^’ÍI¥…“ý'½¶m.)Ô?ê§´]Zå zÒk@øh’ùkk>X•_YYn>rûžp‡ÂI¹%+rÔlO¹Ö’laÞa©—>š”òV¹d\gÉÖôç·J'åõ6)rTÞU¨šxᇣ×€>vLàÛæ’¿½a_òógpM2%ù7ýI'&÷v;÷ZÖVR™œ:,ŠA9',»òpš9’ü‘üûƒ»~”NÌn<èŠ=£7]`>¤ñ¨óO3—xïs dÕä¥oÚÿgpÍQG>*¹}ã½]9Ï›ßösvú®×¤I™¤C)%§¦ØP¹LÅ €ˆ&éié“t’~yøæ/_Qžç¿ü®Qƒëé0»¦v^“$¤%æ!¨°œæ IçW®(/'Wù(U9$•§LŒ\…Ã^•O`£I–9Ò³¾>ãàkkNË›¹óš´ÅëRNá®V[5n±• ˆ¢I`×_só7¯¸ö{7}ÿСŠÖ–ÝGþäSövàÉ^­Y±]ç„-ÛýÇìú#G…E¾S¨y´Š&5‹­Ü€Q©* štwñÿï$”ÔÌp÷]÷]þÅo$?O<öq/:çÙ^³˜Åv^“à…&_ù©œ¿òHP‡TTÈ.‚ š â³—}4½qú)g”ï½üë—¦7^ÿsoõ‚En{¯¡3DËj¡>±íGOòG™Mšjuýóì“O;ñ}çðÞßòo_~ßÿ½§0Ãcßýò³^uú3O;nÿ¼`ñëÐk2ÐÛ°PÑ0mdK+Ï?P8¨ÿÒP> H'À<Ù1D.9÷ܵì§ÉYáÓÌñÔOO~N?åŒüÏkÎyƒ\2sº×¤P žf*{>²´Ñ'+ä·¼rùWQyoåb³ÛŽæó*pÕ$Í%¶¤CÔÚÚFÃËÜlHŽ8fïäÇ?|0ПÜ8å'Oyù«Î·öq×L.$¤üö®ËSØÚæϨk¯I¾ 1.t8ÁÚ¸<Ñ¿[6+T”·¼Ü\2±e¤Éi¾7åTMªÇ§åå¥äç@¸/'¹$ %ÉÏ׿öõ?ýÄzýÌ›)Ä”òô4y”gfšõ’QÕéF&Îßð(ÌÄGu(½Œ 5Ï¢þ ÖoUÍr aÈ;P5™˜QF­Noqï}÷ŒFn>þ‘Oç‹%I:W8)g”š²Gá®úêHåEËå–l™åùDçóš4<kçyÚÎÜ|{jØü®æ‹í¶:€…Ž&ɰ´±±™¯˜Æ©qÅ”Ç~ÄUßüVzû„};‘I–E†’šlÑ!.äCL!‚äï-ß-ä!¡íýž¢I±J±¶¶qðàƒ›WV–[ Ì'=åI£\¯I¥né¤OIv¸'=ôSÎ:…UTοb;¯ ‹Mò£r‡úDåK/ûük^ûŠšGM§,Q.‡Ô¯´²©vî©—Ôp´ ‰AÚ`ÞeéäçÚ®²%õÉ ¢jÚ`ó#åÙj¦,`wmÚkâ-ºÙÛè\zÙçÏxÞ &&¡ìèI9Tˆò‘—lbeÕ§~¶rú©¿wî©Ð½¬ŽkkkŲó§ßBV¨wý57¿ïüîÝ{l9š\{ÃÕI49úø£F™¨¬¬¬¤ož´Å¤üÝœô»Äb õ’ñ"Pvlû¦$¹äóþà1øüô'+™$ó$szå"×ù¼&ê€Nó£i.IK&£1ßÐùøG>½çq{“9ÿÙ[^î5‹\çóšÀ(†^“¼d9ÉIòHnßòý¯úæÃ.ï—öæ÷&szÁf õš¨ñLíƒëÌD“ãö?!ÍY@—`ôšÄoÏkRÙh@Ø¬Í êQ|C'ÍÙÁš>í·lû›Ïws(ÈZ\›Øa–óšÐÇ®¹y&¿ø•»î¼çÉOݟܾå{·TÞNì;þ‰^õÁ_ µºšŸªÉŸ~zòïG^s[.üUx¨^"—° ÑäÃ~üC¿÷±¯¿9ùùÖU×~ê~æÿýøþÂíÃvïùOÿ펳ß|“×{hÝÎk²¼eܯÓÑäú Øa!ÌO4yý¹¯Iþݽû¢È“N:!ù÷ÈÇ>¦pûCÿýj¯ôÔtî5™~© x…Ñ$°þ¿Xþð_þè£ßñOßñÑ?¹ëÖ¯=þÿ\vëGÞ÷Õl†OÿËŸN~š|V®ù ½”S˜¡0qâ'æÊå4ÿ¤êyþ©Y`ÀsÂ.çä§Œ^\©¬»ÔÌÐ*—Լܭ^P€&f¾ 6‰·ú÷_^ÿî—þê†ÓÌü1ÇÔŒC…+ç§§·ËƒVyzÃÜR˜9øÇúþ ìy^“$=lllTþšf‹ü¯Éí,pd·Óé”ò£ºå’š·A!‰Ö¼ Ê0 Q5)”@þö±ŸÉn¿ì¿ž¿}êu¯ùõ§½%É%§ÿÒ§‚å…Q§píâ&ã_~HËìΪ#å)åBNe5¥fþò]•3TnÆõ’r€ÈÇ‹š™›$-msI«0Wó@¹`æ«&5ç‹ËÚ²\òÔ¿rç%É¿ܾæ9s͵3zöÖô]¿r×¥NOë%•¹$+dÿVN/ÄŽ!Fš‰Ð7·ÔTnš,¼¼–¶u‚úçÞó:…’/ŠôYNóýß'FT¾ŽãÌC4iÒFY>4Sï¿ãò_j])Tù0…ÂÍWQ_­)§«6cÔã¼&…’?4Ó¿Óð9vN'•GGcJkÌX4i"+œÞçžõ3ûè5¹û²½_»áïÿü‹¾ÿ±¿ø¯zÒÒ#žù3Çýõ%×ëþÿäSF£Û‚'†r½a:y¥q#h L×5t E—†y¥y:Q&n.¾¡sèÐæ¡­Ÿû¸­‘!ZsúÕéídzzû·~µü CQþ(OÃEJA³¶gæbíÿÝœrIÛӜխè’M³Î›B婲Çhܫ߭X j2{¶¢Æ»ÓÛ?þêFOm [·ßÝ>uôG7]÷À9§…÷Êën×€›¯7-ÜuÌ?Ùû¤WîÞñ…›.ù½äöÏ>òÄ›Ž¿/½MOçþ è^Ω74¬¬¬¤ožBÉzMÒ"J´ç­ou1Lú õŸZ³?È3\5ÉÍùOÝ•üë•OûË]Æ9ÇÜtãwöíÂÞ}ÇîÚ5ù ¦a"_iö·{©p¬§ÃBÔNB ŸåA1™’Ï1å™'Æš‡tتÊí)Ô]®«r½ ‹=Ùb³ÂI¨Íë¼(@4™1ïyçûwÜþÔŸ}õÓ6.¹nçÎìÛ/yÝñ'œxÜa‡6Àp¸4qÊ"ëÓk²¾¾^˜ræ™gÖ {ùÑ.ÿkåX;næôvabyŒwt£ü¨&+Ê‚B6±ÉºÆ•+>ªðL y¥°Ìrj ¸y5‹*¿€9°ººÚêBª3M~ÿw?²çÑÏ<íÕÇ|ùÒvîÚy÷÷¾âÜ“>fO‡\’Õ<ÒåšJý …“þõ’äí[XÚ¸!¼Õ±ƒš™û|p/ë WÔa¥õ%¢æ;¡É³¨Yu· n¾¨Â˜\pÁÂUMvÞ{Â3߸äº]ØyÇ÷ï>ûŸü˜Ç<úðÃoG*-g‹ò]…5](i¯ÉÁ®—unþÀšÏý=gn5*æé¶¢‰ëWŒ‰D¨Ã4§p5p z3M¾{í}G×íØ±ã¨~púYÇ}ìvïÞíuéÚI«\|æ&•†q%‡>_6™éÆ ]#@@3ʵÍÍC·Ý|×®Ÿ¸iß Oø?õ4¹d{ q ʾÑ!>î×Ì3µo„ZWó…øB š„ôïÞrñ¡¥ûÿÞþÛ_÷¦W/?ë;wîôŠn¯©6ßJÙgæÊ–ÏòCj"Ѹ^ÑÎÏe\¿ma†ÊGe›Ô{jæ¬ü¾OÛon×lžs™5–ÒO·kkkUÃÌ(òk¡üþï~ä–+öüÛÿ|V×qt U„9­¬¬¤ož|—@¾×$M*MŠ(ëëëm»¸ˆ\ó¿íÉx‘(³Ýkòæ·¾Vnˆ¶vâ\õt8š|à=X?ÃÛÞþ vús "Š&I.ùù7þ£‰óH'sL½€ž‚µÁþ— >ä’={Ÿþ$SÞô¦_Ìþͦ'óL¬¬0Ó^C€²j’&’³Ï>;ù÷•[>ó™?Mÿýä'?™L¼è¢‹Òy˜oj'DMW]yÝë_ÿ†ø¿¦Y$/™žÜ{ÒÉÇÛésL¯ qE“ÄÓO=ðÛïm]Ï_ZZÚÜÜløk“‡çï­l« £žz qE““N>þª+¯ë¹4 ôÌ­’ õ¼†Ó9…@Ø ¢h’²9ûì³û½¿“üú¯þÍ¿Èß›N—$ƈlzV É~-?ª>…Œ[B>ÊæÉO”oR; «òŒˆÑ=? îš´‚±wU~ #­šd¤&‹´•Ïù°2.—äé”g./¡tÆÍãmWC¯ À‚ËNê:H4éð ÐÎU“r¼hrL§¦^RyW¡¥¾’Ý%Ž´ Ëê% M:øç7œúÁÑCTM&jeˆ^ú|åáî»"I'Y±$¹‘ÿi›-ú7ÃŽS.Ÿt›‡JS»þ0ó'ü7t>8ºbôÞ X5ÉúUGã‹ù(Sî5i¾„úy¨°×dyyycc£0%ù·0qÜck欼·á ³5ߤ yºðž¬ îå÷ù.ßb"šôì5)ÿq×>2î®,…4Y~Íšlea{Mòé¤U:+”cÓtŒkô®1•ÍÝâ°(Ñd{MˆÄzMÒ˜’O!…)ùSžyb¥¤æ!¶ªr{ ‘«òQÝòJý—ç§sÀ ˆzM˜ƒöš¤‹Tyh/‡q3g•üÄ|2¨¼·2ˆ4_Qa¥ ×Um ° U“£Ž;ô÷üáÛÞþ Ÿ|Ïè¬'^tÑE…Ù’yöžôXû}^ì5I‹ éXž/$4ÅÇÕT:”CÆm[‡5YiÛ ËŠ…/Þ‹&À¢G“W½ê•ŸøÄ'“äQ?[’K’9í÷ù®— }^“Â’€3+Š4™§ÛŠšÇ¬¶y%»í¨ ° Ñ$M'v(C÷š´jÅèü š‰)D>_Õ ÞQÛär˜#Õ V;ì‚ ÕkÒ­-´UÄ™8Ï%úuÕ¯´²wµaCkþŠQz`hí² h ×ÐÉzPzÎ\ha÷šH”/œ´Úªëj¥¦×¤pæžšo#K-ÀvYJ‡—6¥›•••ôÍ“Á)ôš¤å“&Ie}}}uuÕî ^(K ˆj\Èþ˜7ÿÛžý¹s@‡ÀÒ^ûaªŸ0ä`Žˆ&„ç:S&—óD¯ !M¡×DÔM Ý *—” Ó ˆ&Ðk(ÕÍ6ðÙ ÀâÐk C©t£jBH={M.¸àû@4`úôš¬®®Úˆ&Ö¹×DG#½& A¯ ¢ QÈÎëûÈ&l?õDââ:ˆ&ÄEíÑ„(è5 '_&¤!®¡³¼¼œÿucc£ò®lz:1?[ý2ëç`ÊTM,l¯I–3RùT‘¿«œ`.³Õ˜UÂîúÃãJ#Éå-K 5ÌßU¾ß€ršiU³@4aJú\Cg}}½0åÌ3ÏÜöñ¾Qòé§¾èR~:‹iuuµÕù¾EBêY/)\F'YZVÌÅZWwqI €Q§ë¶Š&Öù:Y)ý£‡·˜L?tèGqI €nD¢פæèIç°ÒüzG¦Æ7t)øyMÒc%õI¥p$¥yÄ÷Àq5’†ãmЇª !¯—d…Py׸xQˆ ãXî)Ï,y m)EÖÖÖì :XYYIß<ùÖŠ|¯IzÆú&ae}}½mw9Ž }d§f ‚ @Ÿ¿íÉx‘(ª&„7ÜyMêuN}"…‚ @X¢ !õ9¯ÉŒ’HÂÒKH®9 €hB\Â^CÑúR;@4! ÁÏk€hÝ©—ГoèXÏkèÌ+‰ X¨@4!.Ûu^“È9±!° C@Ϩ¢ !-àyMÚþk'ó-;©kgzM<ô:r€hBDœ×Ñ„¸¨ šç5@4!"ê%ôä:ö¼&ËËËÙíA¯ñ›_ÑVW^cÍêÒ9ÛnOò¨òCÆ­´ræ‰Knϸž3ˆ&R¨óšä‡äå-ÃXÙZ¦JÊ+ þìÊI«f¥•3O\ÚÔ2"°íêÿÇ þ7S4!¤€ç5)Œ£éšJËa¢\b©©…LL!å<¿ú{Û¦œülõ…¢Ê{+·mbù¡°‹²™'.­æÉŽ{i>ªá–SVófˆÿUõš¾^²¡~cKy û?Oa®YõÄåf®_Tå½å‰ù<7q¥…™Ó‡×,­f ó»¥ù.ÊÏY¿åÀö¦“éäÑ„ð¢=¯IåHÙmþ&ÿ7Öç¡B™$ÔQŒþ+Íg‹>¹šÿÁ’B`FÓÉpÿó: ÃPµ“mùþð6v*´]õ¸ã)Õç9Ö¬´°üú”nÛ æ L¡'O4!¤®¡Ó¼ó`?‚w[uå›&åœþ›Ú¤Uvˆ' Ìz:zèRÀ^“šþʉŸÂ'­5>(S9}9!;Ôd¶ú@Öv ýWÚ62vX`ðÍæŒhB`{MÆõ=”»&Ë3šë Q©Ãªói¾¨Ê{ë'¶Zé¸}^3C«jV“Gµm%æÏRZxïyýbÖÊÊJúæ)œc-ë5I‹(MŽï¬¯¯¯®®ÖŸ«­ÿwJÛ—ÊoÀv؆ô*á¡ÎD­ÂŸ»&Ûóé5!¬zM ©û„’æ i;?Aˆ&„´ßÍ k¦ù%~2zM,Úóš š° \Ñ„(dõ’8é?½&„s¯I$;Ç~M˜ª´×Ä·d+w‹oéˆ&l[y@í¤¼[쀉ôš’^D"¢Ñ„¸8¯ }è5!<½&,šòÕÎTMI¯ ›K6¶Œ\6zS5!$õ6—¤¿&7–·¤7²»Ê·³ù+ÓLáb×…‰0ßTML¯ 4‰2•1EøÑ„Aøžt–,ù#µ°8Ð!¤ì<°Žé@ ý( š0%zMXðÀѰ¶¡5Ð!0½&,”B—k¡+6‹,ã¢Lå]•³ -ˆ&Ð^3ÒC6=ŸT 3+Ÿ@™:„¤×„EN'™,Žä¿T¯ßÒlõÅÔˆ˜ïoh54ö|-†xõëŸàpk=Ô.7Њ`©šRð^“ÊÃõÇ,êê(@Ïã&5MùFÝ&Ï¢0$‡= 3qiÍ_‹ážfÏgZ^]À}Ødÿ„­rÁ<|úJ‡×Q£›•••ôÍ“Á)ôš¤å“&Ie}}}uu5¿oKºÕZft€M˜§q!ûc^øÛ^#û³ï€¹†Fw Ñ„ð\C‡í2Ó¹D¨Ñ„ð¶ñ:ˆ&P¤^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄE#ÐßjyIDATíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNMˆ‚^D"¢^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄEíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNMˆ‚^D"¢^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄEíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNMˆ‚^D"¢^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄEíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNMˆ‚^D"¢^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄEíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNMˆ‚^D"¢^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄEíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNMˆ‚^D"¢^€hB\ôš šµD¢ ×Ñ„ˆ¨— š½&ˆ&ÄEíÑ„(è5@4!"ê%ˆ&ÄE¯ ¢ qQ;@4! zMMˆˆz ¢ qÑk€hB\ÔNèl—]@@HrÉ(P¯‰ˆ š@€0$—¤†ÖÖÖìUÑúFŠ´vÒ?èØŸ‹F¯ á9@gª&„Ô³×ä‚ .°D¦O¯ÉêꪀhB`{Mt–0ÒkÂôš š×Ð@4!"ê%ˆ&ÄÅ5tMˆ‹Ú ¢ QÐk€hBDÔKèi—…°ÆÕK¼ÁhbéÜ-úéiÜ ÓÒ“ÃzƒÐÐt  Ê €æþ?^Š\âþD`IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/jdbctest/graph-results.png0000644000175000017500000003751012032647202025461 0ustar ebourgebourg‰PNG  IHDRQCeŽ ÙbKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÓ5 F™_o IDATxœíÝ{´u}÷ñß>焜$çä„NBH€(î/(•¢»ÀÇËòQlª9­ÕÚV«@JÂ%^j¡ÕÕžÔj»V¥¶Uk1µ¨u=‡ªûÌÔç¡¥‚Qn`BÈÜ/g?ü’¿ÌmÏÌžÙ3{¾ï×ÊÒÙ³g~óÛ;ç°?ùÎwf7&''j­¯ì  púÿ.»l²ˆÑ¨åFA›¿G ›véöf¼·½øÞ&ÜŒ÷–÷–÷¶R¼·¼·½õÞR稿ßãVëÖVëhlµŽ4¦ª?i.l4nËwrÈEHž;²UMMMíß¿ÿ鯡ý(ô¼H·ö£ßýÓY—<½æ3 v NÛsøÿþU÷§€…d¾ßü“ ßýÐ7¦öl›ÖÚ6­oÛÀ{º>+ä)$óõ^zdÙg>½mÃósΘwÞ‘îO+‰}ûnÞ·ïæ²gÐü×p(¥f«~¥NqÎ\zhöÌ“O>yçÎ>ø`¿RjÕªUëÖ­K>úÔÔ­z¡¯¯Š—wìÚõûöÑ‘;vîü}¥Ôœ9w7Þ¾ý&¥Ôܹ!O[·Þ¨”:ùä»òœ%@Ç"/Ñ8ûôÅK–,ùØÇ>vÕUWíÛ·ï‡?üáÔÔÔüùó:Ôjµ<ØÍYdöì;ôßú;nò­Ñ G…Ôù´¾¾¾¾¾¾éÓ§ŸrÊ)ùÈGÞþö·÷õõ]tÑEï~÷»/¹ä’M›6-Z´è·~ë·b†nµnUJõõÝ65uëÔÔ­ýýGK}GŽÜª”X}øð-zÍ´i«í¼Å,OŸ¾Æ,ïßôLîàà{û½{?n–gͺÝ,ïÙóâú¡¡ÛU®žþF³|ÒIw©cE>¥ÔsÏWíÛ²å³åüùk•R›7ß ”Z°`í/~qt!ß¹øDߊåÈÔÔÔÔæÌ™366¶|ùò©©©íÛ·/_¾üœsÎY¾|ùyç×ɾe``õÀÀj¥Ô¡C/†¼ƒo9á„ÕúRêÀ£9O/ ®\cŸRjß¾›gμ]ÿQVÎÓ CC·ë´·{÷‹ù/ž>±k—ú¶o¿éÄ;¥»mÛMJ©yóîš7ïÅ´§“ŸRêä“ïò¾Ñѵ££/¦=M>€.hsû½f³9222}úôï|ç;}}}›7on4‡š1cÆë.{åŽ=ÛÕþ©lÖiÏ,˜Ø§£ž |ú¡]ç›1cMp{øìš_f1¯í¾ºà§Ó^ЂkõŸÎ' /òÜ®¶oß¾©©)¥Ôðð°½þСCú´Ž ýÇæ‡_>vþáÇ};š»êØéÝ#G^<½Ã>±Û!ûÜn*sæÜ¹cÇM;vøÓžÍ>·Ï>· PаÌ×R‡§ZGŽQJõ÷÷_qÅ?ÿùϛͦ~xøðáM›6>ô͹ .ÝwÉœGþö¡‡r'ôªsÝnBºÚgJ}æ¿Y³nùŠåx:ö‹|†]ç‹ØÔùÒ O!çv?¶bEëàžÙý­VK)Õßß?÷ŒSþíÿýHPG¦OõÏ=yþ“Nœ»cß/ï?wÙÒ…>úèÞ½{ít‘¯Ñ¸­¯ïÅ?êØÕè²Ì·`tþÍ¿ó‘“gå+_=|øð;¯ºnìu¿´öõ™þèå¿çÄ·6F®½ø}­o>2ãGoî{ào¿ü×Ù¿–W_½ë»t×G_½k.ݰ¯á¥;ùìs»É¯á0æÌ¹3´È§oÑgŸÛ5Wìúè+9ìs»ö5]rn÷·¿ø~òΧ-9<88 ];8ýÖWî?ô’‹Ô^>íœ_a`]ãâZ®Q;?°ïµ­~釴Z©Nœ*u,êi&ðM›¶úС[BOéNŸ¾æÀ›uÚ\Óöp³fݾgÏÇMÔºÝ7Åà ™“O~îÜ;·m»ÉÄ>sÅîI'ݵuëö½ZFG×nÙrƒ‰}ú^-]Ö˜œœTJ]vÙ¤~¬OËîWSƒ‡ß{鲃Ooºoß÷ô}ýëJ}éàO¿¢îTƒ?vøe?:üƒ9ê+?ÿÞ{ùU‡h4ü—hßNwtÁÜŸ/~3èÀK²™/ v³À.ÝÞ,Û–p3ÞÛâÞÛ„›ñÞòÞòÞVꯀ÷–÷¶·ÞÛðëv÷ï~f݇.yÛ·7-]rò ê»§þàKgðï/VS·þõþÿkÆÈ‡Ï8ãºç¯þ?ï^¾H)50Ðæú_”(<«]tî’ß]9ðk¯ž»¶uÚûO¸~oÿƒ«wýúÈIÿ9pðÐÖEðÖÜ|Óãý'¨V«ÕÝUžùþóg;TßÈ…×ýû%g^üÎË_»ö7n^{Í«ÕÌÁ©©Ö²ÛGԜ֮ê„é©›ø”RJõ÷ß–mGdžù§(¥.¹àb¥Ô—|À¬o´Ôˆš«”jÌžÞ•é þ̼½.û}õÐ+ŽÞ«5vôÜîÐÐP¹ó@q8· Pd>€ú#óÔ™ þÈ|õG樿ðï^SJ9Žc?t]W¯±2Õ7xp´Ðc9Ž“ü m‘/ûpmd^Hçïd*¾ÃŽËs…ŠÌ|šý‘ŸûÇ’}%ó!ÇISñÓø¥J‡¹h“ùl¡…Ÿ|Lð¾¨×ynóå3Õq Ó·‹DÏ3j|óB‚“1ƒ„NÏ>¢½eçbÆÌ±¾ ÊÒQ?Ÿ ÁÔÒÉh1§e‹>?›Ë ‰6þ…„¾“¾Yåûž›C´³ 7tG›:Ÿù€/"lEÕ–Bc_¾‡UP L2lÌë Ý]'°lîð,9èE)úù¢dÎg]ˆõ+M™@œùLkT‹dÞ%à“¢Ÿ/Jõ+@v]ÙsÉïTo^/ªo•Ûýùt¨Êk¨\ÆéÎQ|¥Ä¶—¡tȼÏÅ]ƒÕÏWÄá@wt”ù컓¨ô)ıأE]ß :>z9Eçâß߯¡/$ù;Ùá{žyL®Û §5&''•RCCCeϤ†ê’êñ*Žï^¨¿¤ß½¦z­Òu8÷W‘ö6+%ÊöžTíU€ 8· PœÛ¨?2@ýíçó<¯Üy 8G3_³Ù,w(çvêÌPd>€ú#óÔ™ þÈ|õGæ¨?2@ý‘ùêÌPd>€ú#óÔ™ þÈ|õ7 ÿoݺuåÎÝ´jÕªÐõüPWeO]µjÕªf³éy^Ù]u\曘˜(âmxZ)5¶ôÔ"GrãããÍf³ífQU@л ïç#ðU‡/Ì%É ŠÍ|:ð¡"|ízžçÑÀ€f¾Ç6<}û]·èå•+W®\¹’X5º½¯ìY€ÂµÉ| Kªquàû¾ ~üÆÕ_øÂn¿ëb_ÕPí@‚¸ëvƪUöÃV«•pܱ¥§~üÆÕ+W®´W~üÆÕ4öU‡¹€—‹6¨½Ȩ̀_³ÙÔçþ<Ï›˜pÓÆ¾W¼üòËßðZ¥Ôúw•àJ_51᱂³²ÇÑO¥š¹ºÂGà@‚6çv›Í¦ã4§‘¹ëKç¼ /¸xÛ³ûÚnÜjµt23 ™µŽI{VZúù"é5‚Ácžž»p†y8wáŒlÍ|Á†B{ý¿F3»‹†ôó A›ÌçyžëWró¼ãþÄøî·¸ð‚‹Íà /¸ø»ßz íüô9Y»bç[cê‚ÙF³WJ‹}¦ÂÇé]j/²ŸOg ‰ ×óŽ~S×ø¸“ü|kTIï± O§½Œ#Øä§×ÄŸÿ5{ÙÛ„;±}~ôó GÜu»¾„”*ðE•ô¾û­”zmªØ¸qñ?þ1¥Ô?þ1ýG¯üî·ÈÜØ§Ž/àeÎm>ƒ~>$Èù{8t˜;¸q±RjÇ®;v0 æÏ–‡G“¨ƒfZ÷|kTâ gö{>×F?räÿÝkú¬®N{J©;~ã;¡ÛÄ”ú|Ì\uµ&ØØu:X;èö‹i5C…9âúù²ÑE¾x=ò‹Ëßû‘‘Z‡ý|ŽãØ]×ÍcRqÇj{ß”ŒBç¦Ós§è#Jû:Ÿï^-ÛÝÿPŽ£¡C™«}&åh*:ouŸ{<ÕݹUç}ÀÈÿÜîß;¦”š3{úœÙÓw÷?ü£”z߇ޖûq‘V'ý|Áª[ÕbŸ­Ês ;r>·;¶ôÔÇ6<ýÆ÷Žé®¾Íÿñpp›ß¸Z%øî]-óýù¢N³º®k窨3¿ ׇÂަÓ§1CÅÏ0ê¡o_ûÙnž Tþý|:Ì-}§RêåÞ;ù6×*ËÜÏ•ZBƒ ý0›‚­o&'…vÅÅ?›/ÙC%™a |ó€\äŸù2{ê±Í?}ø‰_<óüÔTHûàðì™g»øüæYÝŸX½uóÛ8^‡¡éðä‹GÙ¢R| =P‡GŒAÚ”¢*™ïÛÿøà/žy>fƒvíýñýñ]°hÞëß|I×&Vc¦Â×aàKrN6¸¾Ð l“O)~„óYîJU2ŸRê[ßÿ½pá¹—ŸýñO¾§®Ûº7§Z˫—$É%ß ñ-wñ3±»s j¹@f¾TßÕûú7_rÎùg|æŸÛshË£ÿxïþݾ f;úŠë.¼èü%cóóŸ«T™ûù²u¤Ow"`L_`(ß ;o¿Ë}@Ò**ó5U«&ì‡mcŸsgŸqað©¥ËÎTJøŠ¡ÚÕWÁ"–ïRâ(œ9ùÊÿþ|êXàk6›«V­Ò•¤‰ 7áWâ*¥fÍZºìÌ¥ËÎ<}ñYúÏ‚ÑÅ F+¥~ô¿ýôš‰O¯™ø§¯þkÌÑõÿöS¡ëí§BG‹zØÓ:¹?_ð$Éc“ïDgü³ç°àT}kB¯«m;lòm@¡ <·Ûl6§¡”rÝVæo÷òùÞ÷'Ï]~®Rê'ÿý¥ÔÕ×½&fcSY´«Œv¹Ñ¬·7HR’¬‡ûùLµÏ^“dÕ.0™gó*¼ “¾Éû. Žz]Á§b؃§}£È]7®áh6UªÈ·gïn¥BÎáþÝ—¾~îòsMÎûÉÿ$>ó­V+&ÉùžJøLÁÏ‹ö=¬+Sß~ßn|vÉvë“„wþK~ƒÀ¨õ ûù2ŒŸêXtG™Ïó<×mÙ÷döE‹¨Û5Ïš9´á§?×˧/>î†|&ä%L{A©®,‰ÄW ­öD±›÷çe)$óé 41ázÞÑÒø¸“*èè‹6í‹kžËûBÏífDgÇV«¬óº}éòº?¨¾¢ê|&嘇É÷ =·û½ïO¾õ¿³W—ëgÁ^üуۗ®j>N€PœB®ÛÕ†¡ }nwÃOþÄÆŸå2“ø¤å‹§I®Ìµ›óÚ^êÛvûé~¾²g W`æë„¹W‹~ø½ïO^úêËâwÑqÊ×9ç[£Ž¿]‹ïÜkpcßSæÙàö1#´}¶\ºÚWö,@±*”ùžzl³^س×ÿ%ÁmBÙÝr-‹oƒàzû©¨a£†ŠZ“|ü²tr>Ð[ª’ùžzlóäýGÛ¹ìs»ú)òMÞïÆÇ>$G…9ŠÍ|É+[:ðzê"ýÐ÷=zåß}éëfKä‚~>„èÆ=™“¸ìJgò~wtÞ©J©-Ï?½á§ÇÞÕsèg/»’¯±ÊSÕ®ÞE¨Jæ[26_‡9“üB]v¥³d,ä+:÷ç@Žªd>¥”sï~ÿÕú¡çE~QGýtÓ¾ùĶ­{fÌ>²ìeóš¯8wxx(·Ñ{>ä¨Ê5…Ú³{ï³OîØüÔ¾ÝÏ«çïÿÁ?ìøÙ#O•=©J Ÿ!êŸù6>µéá?óÀ?>u`ß”Yùo÷“ùŽâê]$¨Ð¹Ý"L|ê;Ÿí{á…½ƒsv÷?¤”:rjLíÞVöÌ* ×ûùˆª@-õè‘€ê«yæÿ½7Ý6~ßôþÙ/>¥T«oÆðT›=¨A?ßÄÄDÙS'ÏóÌ?G䫿çvïþÄÄèù[¾¡# |Öœ“§/kÎ.{j•@?€J¡~§¶™¯ÕjÝuÛÝC#3ßxÕoxϨYÿÊ+¿ñ]g\ùæWØ7˜‡¡¢¶I²o¥ÐÏ€õÌ|­Vkíê».½üŠ×l}nûààŒå—QJ]zõØ¥W-[º8fßF£Q©oÅ-ß· €õÌ|ŸXóÇ‹/|Íe¯Ú¾í…N˜þôÆMg¿äŒ¾iS—^=60×Âè |c|k|»Wª^(øQá@ŽJ_ÃÓÅÓ„vÛÍŸ<ýŒÅ¯ºô’­[¶Ï~âñ Í;uÉ)7ܳ,>‡ÜÉzÙ¬1[· .W™îçë¤]Úq¥”뺡»Éü¥tþÎÇÿõŠòú»¶ÀzâçÐC*ù2\]°úæOMÛyî«^}Þs›·ŒŒ<¾áÉ3Î^tÖÒ±iÓ¦ÅïhR]’£˜-Cwé­ì\®Þu§”œgt9pûÆï­¿q€L•Î|i­¹åÓ;ϹâÚóþåËO]úæSžyzÓâ±ù§.^>WÓŸÙv1/ _Ô0CõD(úþ|ºæ§éDhª€v90´RºWÔ|ﶯ"Z  VpUX’ ®l+´ÜuÜÐùëcæ @õéç[{ÛÝ}ÛÎþåkÏsx²¯¯ïÛ_~|Ñi£g-ʽµ®»÷‚òíç³³š:VùÓ|Ïš¢ ã8ö²²â]p¯T|ÊΚ¯G3áʶBuÜøÉÇÏ€´jRçûóÏ~itð¢óßrÊ|ocÿ@ÿ ;÷üʪsž2:cÆŒ´C™²ý)kWã|ƒäòêŠÓy?ŸfJwöÚìŠ]’3©Î«bÁŸÐõñw¾ø•ü/º“‰êÿ8ª¬&u¾þ=§7_sÚCn˜Ö¿kÇž7­_©¯“ x º$´ù²CÁ‚n|Õ0Cõ·›×¦j¬&u¾Vkjëæ]sŸY|úü—¾ì<_¿?Ÿ©öµ-û…¶âÅlŸákW2°ûù’O&Õ³$W‡ÌwÇû¿=Õ8râØ¶w½÷-ÎÅ/ïïï/{F=#ßïÛ 6ê¥=KëÛ+yÁÏ>Ó·ºAÔúT‡Ž™FüʨƒÚ}¢L­çvG—?·åáÑ÷}àeO¤'ux>_,‹¿>#êÙä{ÅHr)FT·eÌÃà°ñk’_s•IÛH«™/IÚ{ì§›~ðÍ'¶mÝ3cö‘e/›×|ŹÃÃC]˜[•}>Pu8·ÛÖžÝ{Ÿ}rÇæ§öí~^=÷xÿþaÇÏyªìI•¯âý|ÝA Dê|ñ6>µéÙ'÷<ðOµŽ¼Øç÷o÷?uáEËKœUEäu¾²[H¨æ™oâSߨùlß /옳»ÿ!¥ÔБ Tcj÷¶²gV¹|ßn)t`˜˜({"ô€šg¾ñß{Ómã÷MïŸýbàSJµúf O•<³ ¨A?_ïV(貚÷óÝý‰‰Ñó·6}CG.8ø­9'O_Öœ]öÔÊljQä¨mækµZwÝv÷ÐÈÌ7^uÅÞ3jÖ¿òÊÅo|×W¾ùöÆ ‹o½ªõ}qó½?¨¬zf¾V«µvõÝ ^~Åk¶>·}ppÆòËŽ(¥.½zìÒ«–Ž-]º‹f}BèªÖ Õ>$¨gæûÄš?^´xák.{Õöm/œpÂô§7n:û%gôM›ºôê±D-Œv…Ïüo°|¨z§.h*|½ÛϪô51 ú1'$o»ù“§Ÿ±øU—^²uËöáÙÃO<¾qá¢y§.9å†{–%Ocºàúuf½½AèÊŠëÝ+v@Z•Î|:ÍVßü©i;Ï}Õ«Ï{nó¶‘‘‘Ç7P­Îí®¹åÓ;ϹâÚóþåËO ?óô¦ÅcóO]¼(Éù\ÓÏ—êˆ-KÖY—Œ~>$¨Oæ[{ÛÝ}ÛÎþåkÏsx²¯¯ïÛ_~|Ñi£g-Ê«Á.æ¼m¯ôðÙèç@Žšd¾?ÿì—F/zý[Îûñ÷6öô¿°kÏ5¿¶ì´ÓϘ1#¯Cø®äPÇzþ´^¬óQá@Žšd¾þ=§7_sÚCn˜Ö¿kÇž7­$¨Iækµ¦¶nÞ50÷™Å§ÏéËÎ.{F=€~>ä¨Cæ»ãýßžj9qlÛ»Þûçâ—÷÷÷—=£Þ@…9*}¾„F—?·åáÑ÷}àeO¤÷äu>Çq”R®ëÚƒkÌÃàJÇq|϶=\èøÁ™}»Ä žp&©æ3ˆýÐ~ ¡oÙÔ!óu˜öêzCâ„×f”ømÁŒXô±ljjÉg’ïœí)òE¨CæC6¦Â×yàÓE)§‚aÈW¸²wñmf’™½YÌhi+m¾½¢æÓv&É·ômúlÔ Ì<AuèçC6…öó“ýThYËÞÅlS\ PÇ5û@Á™ø6ˆš³ïu…fÙN^Q×Þ@Õ¤Îwãþ0Õöw}öÃͤ·dîçóíÒ‹7ùk›Ÿ’¬øm’ŒìPL‚/J†L½ø  j’ù†Ž\|ãÝý7“ž“¹Ÿ¯Ðÿìv§”zÒ9Õy(IÔ îË'âŸ:@f5É|J©wüî¹cKOUǾM¯<°ÿýûfÏ9ÑlvÇo|§œùUOŽý|Êj•SÇLpMªÑB×Ûtf![[Û‰åuÙl^ãÐÆèD}2ŸRªÕjíÚ½sÇsý×zµé¿†§v ÎÞq©/ü÷ 8:râ‰ñ»;ÎѤ躿BÍqQûšÁ;<„9J̱*ñŠÝ„¢ÒRæ ~kp÷“¼@)ju dz[Ÿ½ù¿W¯Ý¶nÁvwÁŒý³f ö«Có>>r×»ï¼sûsÏÅì«#”þãËgy1ãwˆ´*ò}»¾«7Ô±›ª¨üÂMp@ßÚÎ$óœãÇI¢ ÷ J­ê|ŸÛü§Óf÷å_ž}×[{Ç–¡ƒª¥~8ST#[¶´>úQõÅ/†îè«™™e_EÍW4ϪãëvÁ51‚ÅÅУøæ©·‰šX*9Vûb rm&¼A]Ô¡Ò¦-ÕL2oÙö©¨‹‚cÆ ­Jg¾˜VÝÐâÔ‘Æ‘ÁÃÿóö·}õ÷ýÎ~0㤓^رM]¥^ø£?Ù¼e×I'eø^;W…f¯¶ öPf9jÌУù’h’]‚òíçUVÝÌ—á”ãÚ—Ü©”Rç«[_yóõ×_ÿÙÏ~vÉ’%FãÄ;ïRJ$ÄW33*ô„l0`ÅD®Ð,ìó3e„é-Ã.Zõûù@^ª›ù:1wîÜ»ï¾{|||ÿþý÷ßÿàà`ò}}gK _9-óÜ|ż¨Ô˜ªb—a-¯ïÛW«k8|¦M›¶dÉ’Ý»w·ÝÒWËO¾-;œ¤o(»Êè<êX1»$Qè·q€Š¨gO)uæ™gþÙŸýÙààà¼yó’lo¦ÐÀgŸB ƬT6Sê 4fMh $!úù£V™ï± OûÖØ»oç6ÿÊ(m›óBOÈ&YN8TÛ5v‹a̱¢Ÿ9ê“ùþæ3?){ ½‡~>„¨Iæûý?½"Íæ©6ŽÔá×`TÕ>$¨ó5ˆg¾ƒÀ@í‘ùäâŠ]ä¨É¹ÝNTàûfKC?B’ùîYþµ¶Æ‡nøÕ"Ž‹ èç@‚ü3ß=k¿øŽ•+ÚnCì+÷ç*‹¾ þ»ä.çÌ÷ôõw¬\1:z²~¸eËsï}ï¯}þó¡ÿ׬ÇÊľÒQáªlbb¢ì)”Æó<ÚN€Üå_çÓÁîšk®QJ]{íµ×^{í7¿ùOú¿öµ¯)¥î»ï>þP.úù€*û»¹nÝ:É‘(H!ý|yòúëßóWõ—:äÙ®¿þ=yré9§q\d ³Úlj3TŠ´_@¥(êºÝ ^ÒüÃO¦» ¶Ñh´Z­„“ìn?¿oª‰Õ†ð~>ª¨ÎcèŽBîÏ×yOÇ,_nK«eép¨Zâþ|@ðk ;Š:·»ôœÓ®¹æš?üäŸ(¥>üÑÚÏê•A:™…VÔÌzÝÌÃà^ñe¹¨”U ômc¯¬YÁ~>„H”ùb"Aè —žsÚ†Gž4Ù.*ä¥e‡9;F>»¶Ü88B0AFm“ËË©™ý|HÓ>óeøšŠlu>Ã䪘Êä\|‰ÉIDATŸSá }*x’7f|óTÍrž&¼ŸQ 9·û›_ò9õpîu¾¶ÒfDከð9Žc?t]W¯±r<Ã÷Û§øup¼B2ßç?ü›_2ø'¯K[ç †¶$1.›$ÃÖïL®OAý|ö' Ÿ:@7™ß8ÇqÇá€QHæ[zÎiŸS«O}˜WϾü6*ŠÙ1ØÏ—|„ømê¤è~¾Ðòž]ÐOE•nÙv/@¬¨_¢à³ºÒ·KÔJ•UȽZt?Ÿ)ï}ø£´ÿÄïŒY¾²Ÿú”½Ð:^ÚÚnSÍc­š]îç3$ÁÏ߇~ØvËà^Qãb™ßßCß/ˆýKä[éÛ…_4 çÔªŸ©Wá3ÿõOûOßö1Ÿ%œ>Bµ­½egæß`g lÕêçC—u¡Ÿ/JÂß™Üä¨:@¦Îûù‚¿nfM°Uƒ_4 ‡äœùæ,™ºgí?tï~ûœÝꊣ+ï»ï>ßf÷¬ýâ©KGò=4²)ëþ|Ésa¶ºÕ 9ê|íÊú= 6]Øëô„œ3ßu×]ûÕ¯~ížµ_ŒßìÔ¥#×]wm¾‡FZU¸?_Ñ7pá1@çìÖ½ÐÂ^ðÊ*nÒTPþçv s½¢Ä Ÿ]Qˆù0Öò¨Ÿ¶ý|I~A|Ù.t~Ñ€žSH?zEîý|ÁÿŠÙ,—-ùø@Q?öñ¿DQ+ã¶™“¿@r¯ô]í+{ Xd>¹Êº?è>ÎíÊUV?_EPàˆBæ­ ûóUŸ~áeO€.!óI'¶Ú'0é$#óÉU…ûóˆBû€|‘ùä[áªö¹#ó‰&¶Ÿ¨>~1ä‹{µHÇù#$ óÉÅýùƒÌ'>ä ó‰¦ûùÊž(™O:ª}H@æ“‹~>äà^-rux>n$@!ó‰–ùþ|tÐ[8·+ý|H@æ“‹~>ä óÉE…9È|¢q>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ!È|ÒQí@2Ÿ\ôó ™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€eOeÒý|žç•= Ç$ù÷R*è½2Ï y™>2_5:Aæ“NWûøïÖÄÄD̳žçUäT½2Ï y™>2_52#óÉeþ[@àƒã8fÙuÝ·J;ˆã8Iv±çi%ÃA³ÍÓ'æÓtݺu¾Ïã¨ÉGIøž$‘jžÇŽ~´ß×u{&1¤z™Íãÿ:¼”oµÞ=f¯¦ãègÛnÙ¡t?„ëß6î W¯tW5CsÜNá¬w ¡ôóÉE?4“~tÂðE“®M ¹àTÍš*ˆ9 ßç.ü-tÿ/ºñ/Ós];™%gv e¿eA¢^µ»Â5ÉÉ^®¸`TE6ÔùD£Ÿ¾r—¯rf¯ŒZãºnhÍÌ·2ª”hÖ›²V¢£>®ÞË>VÚyw yÂL™0HÙ“š€Jÿž$×.q6•R®ë9NÓqšzAY5?{kbžy*~Mp„˜-;‘ð¯Ãsݦãø*söSÊ*ÔùžÚ^+õÙ»Gí“'à{O:œa^ó óh\ Mlf¥^¶· Œ1£¥™R§/Ód¯„õ?ììíMn p¡#‡ÆÍärùË5‰Ê—íì˜eÆÞ|I®í!BWÚìÂdº—„2Ÿ\ÜŸ>Î1Á§LÚ>úéºÒÈ¢æjÎ1ƒøuÐàK M«Éšv¶1ïm RÉ6ÏÐÄ–jÇÐ W\³`^¹V_ Vã̳IÒaü!:×É«ŽOTή =I®›È|rQáƒOüGEG'ÖyÒBÛȲ¨ó|Ðámwϯ2—[²Æ Ïsö*q¼k;Z²A:}™I2œ½±*ò*„ŠøËEÍÐÏ'ý|H¨ó_ñ¬¸O¦´Ê듲úOKð†4ƒ 1‰->Ì¥ |©¶l7NGoWòW‘À§ø:ŸtTû„ë¤ELK²¯©ºåø™:`ÌR½FßÅ ·O®¬’Lò#ÚMxfŠÎpÙêsQ»tXíËÜÃ\¼£"ñ.¨ÄÀzæ7áéà¨Í¸V·d>¹èçƒæk‹éÏ‹êçk›`â Xñ“‰y6f÷¨yvØ-ßž˜dò¡ˆyO²I;Ïdc׫Z¢ íç³/ïH5Z‚)¥{™¾T§ýym^h?_èiGN®ˆ¿\ÿ!Ž]fa_WkVú®ó®Œ9ù˜¹½©“““J©{ï½Wµ»£7zÝøø¸þ+6's}ßÀ¡ ~D@$Ô+ýCÙæ¿—þ݉¯‘OLL”Þ8QÍyÚi¯“„gTóe­š¯ÚŽkñ·bî½ áC?ŸhôóA¾ xCéßêÿ;¹šó ½±_'ªù2‹VÍWí»K ‘®RÈ|Òñ}»È¬ú>-ý}Imß+ÿXªæ„ óIGµ È|rÑÏ€|‡\|G<ÊŸ€:!ó‰Æ÷íÆ#jƒs»ÒÑÏ€d>¹èç@2Ÿ\TøƒÌ'÷ç@2ŸtTû€Ì'ý|ÈAæ“‹ rp>Ѫv>Çq\×õ­Ñ öúЕ ™Oºê|‡Irö“êÌrèJÌ'—©ðU$𹮌}™GSJ™MXTViÐ>ÁP{ôóÉU©~¾"R—]´—••ÿì•Ôu>ѪÖÏçcWþ2„B{—ÐÝu¤È€:Ÿt•ªöù˜L–ãi_Í>ÃK‘ ™O.á÷ç³+|Ä>@í‘ùäªr…¯h¦¼Ç‰]€ôó‰Ö‹ý|6ùÙƒpŸ?€d>éªs>–½BÓXÛˆuõFÛ«:¨+ÎíÊ%¼Ÿ¯Îzúÿ=†Ì'—ä~>¤!ó‰¦ûùÊžEïqWp^ÐcÈ|ÒQí@2Ÿ\ôó ™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ!È|ÒQí@2Ÿ\ôó ™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ _6Îz§ì)™O4úù‚Ì'Õ¾´ÜnÙS 52Ÿ\ôó ™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ!È|ÒQí@2Ÿ\ôó ™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ/-g½SöÈ‚Ì'Õ>$ óÉE?_î ·ì)™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTûÊÕl:ͦSö,õGæ“‹~¾Rè„çËy$?@ÑÈ|rQá«Ïs=Ï-{€ú({(“îçó<¯ì‰¢ž/çûE£Î'վ̜õœô 2Ÿ\ôó ™O.*|rWpBÐ3È|¢q>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢ÂWºf“oòt ™O4úù‚Ì'Õ¾yßäè2Ÿ\ôó ™O.*|ÈAæ~>„ óIGµ È|rÑÏ—–³Þ ] úÈ|rQá@2Ÿhôó¥â®pC—¨>2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ!È|ÒQí@‚²'€Ò4›MÏóý|½©Ùôß Ð󸔉:Ÿ\Tøƒ:ŸhºŸOWûÐ[¨êR¡Î'Õ>$ óÉÅýùƒÌ'>ä ó‰Æýù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ¯8ͦSöx™O:ª}H@æ“‹~¾Byž[öx™O.*|ÈAæ~>„ óIGµ È|rÑÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â—гžïRô02Ÿhôó ™O:ª} ¹+ø.5@#óÉE?_ÑšMÇþ£×˜ÿ Ý>¸µ1©ùä¢Â€eOeÒý|žç•=‘zò<ÿé`½&¸>¸½YŽÚ€T¨óIGµ È|rÑÏ€d>¹¨ð ™O4îÏ€d>é¨ö ™O.úùƒÌ'>ä ó‰F?Bù¤£Ú€d>¹èç+_¤ è&¾{M.]á#ðµå8M¥”ë†CŽny}Cš ‚žçš‘í•¹ u>Ñèç+ÐMÔù¤£Ú×VT…OË7ºÙ£™eÒ! sÔù䢟9È|rqÅ.rùD£Ÿ¯6ô…&D¡ŸO:úùªÌ—äB; Í6ŽÓŒo=HFæ“«Ùlzž§è竌¶µº`ª3»¸®ç8Mb ™O.*|Õ•ðB·Ñ±¯Óô 2ŸhºŸOWûP®$%:“êì…à”úA\Ã!Wï&Th -íàñÛSí‘ùäâþ|•’°8纞ÞÒ,d ™O.*|©š¥Ò¿=±DæûóU§b]@擎j_'šM§ì)™O.úù*‚S±€. óÉE…¯sžçv8'vÝAæ~>„ óIGµ¯DÜ?Ð5d>¹èç@2Ÿ\Tø å¬oI/E>@×ùD£Ÿ/•„×[$I{ŽÓäê @7‘ù¤£ÚWwE§—ô£²'€Ò4›MÏóý|‰%ýJÜi³º€.£Î'¾"è»INïÐMd>ÑèçËQòœG' ûÈ|ÒQíË—>±K3 jÈ|rq¾|%Ìy܇P 2Ÿ\TøRi6Ü…6>@U‘ùD£Ÿ¯û(òJA擎j_BžwêVWøbNïêë6¸zP2Ÿ\ôóeÐIh#ðJDæ“‹ _Žâ/à0×mpbP2Ÿhôó¥ÕIh#ðJD擎j_çâ/×åæ,€* óÉE?_—ÅGæÃ}^"óÉE…¯sGcÜ´"7HVäÓ¯é8$?@AÈ|¢ÑÏ×5Îz'þ:ÏåëÚ"óIGµ/-û–+î ×YïDUòt‘¯í—s4G>Ïu=×í°ÚG±j ì  4ÍfÓód£+|Á"Ÿ]ù‹‰}Qù̬· ~ñ•<¢ u>é¨öeú-jŽÓ4ë›MG%¸n#ÕÙXNÝ:AO.úù:l㳿fÍY±×z§õIaü¨ä2£Î'¾ÌB/×°Ïðzž«Ú} ¯Jy6–Àè™O4îÏ—™> ®ëÙ'yC¹+\®´t™O:ª}Ýä¬w¸ ôóÉE?_'bîÆ—äËÖè2ê|rQáëPü ÜPœÕ”…Ì'ý|eqÖ;m¿“ €qnW:]íãônÉÏáÚ |ù¥ Î'—©ðøºI—÷Ü®¹“ ?@Pç“‹ _è ßqµ=+á‘öL¦Ì}d@O£Î'ý|… ½'K0¥Íg1½€” Q¨óIGµ¯ !¾_Úkûý¼1‘Îé¨ö%G w‘ù䢟9È|rQá@2Ÿhôó ™O:ª}©4›Žþ£—}ëÍrÔ¾=f¨ÎÇÔ™O.úùc ì  4ºÂGàKÅóÜTËQûvxôС:PcÔùD£Ÿ!È|ÒÑÏ—_Âèid>¹èç@2Ÿ\TøRáK8=Ì'ý|A擎jù䢟9È|rQá@2Ÿhôó ™O:ª}HÀw¯ÉÕl6=ÏSôóµã¬w”RWK³yôÆÑ|À‡Ì'ß·›PO¤=¨ˆÂ¹]Ñèç@ê|ÒU°Úçûf[·ì¯¾HÙéHzFî¼²' >È|rU³ŸÏqõìåRLLL$ßx|¼ZÑ=Íó<Ïó(ÃÈ™O® VøÒ…@×uÍ‚½ÒÞFë$8êX\Üö@>®ÿŠõGKóØ÷í:üU­½¯,ëÖ­›˜˜Hþ1¼n·jÕ*>¶‘ÏóšMÊ~rCO. b ”=”I÷óQšŠ’6¯[7^Üd ç)~=ä…Ì'Ž5œÏ Ò˜†@=ùä2>_J,€Ú ŸO.úùƒÌ'÷ç@2ŸtTû€Ì'—©ðÑÏ@í‘ùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈÁ=™åªþ7p8Ž£”r]7ôa¶Ñ|#˜•Á§rÑáœ}㨈Éç>m”%ÕŒã8þêC÷ªà/?Þ°9ÎÑ"…ëVîVùfnÊš^5'Læ­'¾o7Û[pøðfÊ\Ž•;{Vf9t%äð¥´Nöªà/?Þè-¾`ç8M;üU'ö‘ù¤«~µ/”ýÑ_´p]×<Œÿðˆªÿ™Œeæ[µAÛ9Ç¿øIB޶?ÒI~ºªü‹ÄÐ53×õ§©#”YÜÀ쥟M²&8BÌ–Á¹ŸªNÈó¡ŸO®êç -N¸®ü´ }Ö|®„~À誆o{Œo|û#6ôã6t¥²>ígCWƼ ÙJ;èuÁHßtŸ®Êþ"¹0q-4±™•zÙÞ&42ÆŒ<®þSÌËÊ™O®^¹b·mïQªg£F¶?ð쳘]B?8³õW)ëS0j½Ÿ‘Åü@¶•ä§«"¿@r¡‰-ÕŽ¡-[}΄Hߘ¦*™aÌ‚ùDë¡ûó”u|Ÿ…öÉ/UL'{Ô9¸øÈ'¨pI~ 3ÿt©²€µ-¹¥ÊˆmG‹'4–‹~>éz¢Ÿ¯èú–ï4SAŸs¡cúNÆ‘í”ð²óŸ®€(&3Ù ñI«íhÉko•ªÒuŽ:Ÿ\=ÔÏW"Š I4Ç5 |"/~ºJÿEÚ²›ðÌá²5ØEí3ZèúJÕölÔùäê‰ Ÿa—úô²¯ëÈ·eÔ³1[šƒë3Ì3ɬNÕ÷ÚcV¢|?“¡?fepƒ˜Ÿ.{¯àPöšÐõÉ¥úEˆÙ=fÀÇ\Øk¶ÝÆ·Ò>›d4³™o›Ð•UИœœTJÝ{ï½J©‰‰‰’§ƒ"ë¿bû†|öýùô%½’«†Š øE@òÝNOU,¨åˆ:Ÿt½Uí _¡7ö«%2Ÿ\¦ÂGàË… @ñ‹€ÞTãœgã¹zåþ| sd>Ñzèþ| d>é¨ö ™O.îÏ€d>¹¨ð ™O4úù‚Ì'Õ>$ óÉE?rùä¢Â€d>Ñèç@2ŸtTû€Ì'ý|ÈAæ“‹ rùD£Ÿ!ÊžJ¦«}µ<½Ûtû¡çºvÙ«é8úÙ¶[¦:¢o¨Ð•È‘³Þñ­qW¸z¥»¢À÷¼óC8ë˜Ýí×e63+};‡ŠÚ2æÙ˜]|ãGížäÝH¸Y‡»µDæ“«Ùlzž§êÞÏgb™‰h©vŒbÊ\Ò˜==;MW"_: t!äå+Uƒb‚o98xè–1ÏÆìâ?~ð´/ @rd>¹j\á ò\׎}¾Äæ+Ôó\èöêX³wÚ7x”à ®D7ÙY0X9‹Z³ —m7‹šƒŠÎLm³”/uÅ$Èà8¡#g‹bQÙ1êåÇo©Â¥ÞÀÞ«“ =~>Ñdöó™ìLiQÛ냵·¨ 94n¢â‚AA)å®pí¸`ÆÄ&_’k{ˆÐ•63øs»úOèúàPQ#D=›PL*\ï¢ß.{9~˨ è£Û1±í.@]‘ù¤ãê]u|A.X³ÏdzAŠ]è9è '¦‘‹øRP†ÐPhÍ,8H0Ü$ IÉ· ÍsINׯî‹Ô1ãP«RáÜ®\Búù¢¤ª·ùÎÏ'XJŒZ Ĉ CÉCR.q**ÿ•˜Õ(ïA22Ÿ\¢úù‚’ç§¼.Ëê$a‘Ïd¬Š\<[…9eáÜ®hrúù¢r›9c›ï]W2­ Òü×»¢úÏ2ï›|÷T[f“0ð™ó˪]ã`îQ,ÉÉë|Tu>éj_í ÞßÎ\Ãë[Å·½o¥ï$lª‘ƒ†N5Ãhès‘yh¯´›ÕBW¶9ù˜1#¨ã/øHxÕjè–¾+K|„®L>x^ì·.¾‘‘‚jLNN*¥î½÷^¥ÔÄÄDÉÓA‘ÆÇÇõ_±nã3ý|†¾˜£Æù(EðfxQ£çn ‡Pç“«ö> "|5'"€RùDÓý|¾j€Ü%ÌyÄAÅáé¸?ùä2Wìrz€Ú#óÉE…9È|¢É¹?‘ù¤£Ú€Ç]·ËÇ¿LÁ~>~ ¨™3Ÿ>ÍÇm™…ãÇ€ZzñÜ.}]PüPSG¿{ 5Æ5õ7@èyÿÄð¶ùÞÀ[IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/throughput_controller.png0000644000175000017500000001135212032647206025533 0ustar ebourgebourg‰PNG  IHDRI§Ñ9¹sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ Û]URjIDATxÚíOl"WžÇU›‘fµ{ñÑ8öb©+í•W±â’Æ ˆa[‰Q¶ÕYh¥la{ekÓS>› u@k±Ù–FÈ;ƒ:-ÜÙR²Àvgg-5ˆKˆ–Üšaú_6šÌvw±‡EAP`üø~ÄÁ.^½zõà[¿ß{E½/÷Ýwß`èàÑ@Ûhm m´ ÀóŠîÖ°Ý.ñú²—eWhwY \d6"whwyŠã.ÉÉT*ÙKÕªlØ.Jõn”-¾­õ9Ó%hXSG]¶~ˆÛ£Š°Ýn·‡³•J»bÙ°ÃáP ›ˆøbl~6Ò~Ç~5ý¸½²··Ò6â{ÕN~åäR E<ߨ+ÙðlÝ'nWÊÉE»Ýáp8ûb²\©4…V@ 5ì­jyUüÑHÚ¬:ÕáXíÍq¬c«²a¥ ‹É²¡6<–GfÏó¼$:­‚gî^´Èó²+¸·áQgàÜÔÊÞÞ »Déí)°KmSzèê®?Öp¶Uóìö0T4¤ÚÎEœÞX±68狱ùHNý~i{I] RN.Í”Á<ÏKÙ%EZÆŠó±býp^§Wù×x«"³JÂÌóŘ×Îö'©TÊ¥#’e‹ÿ†Ð.°wì„N§ ¥]])'—æ£õ£K¢"oÝcaÓ6ÏK¢(É_<Îd2é ‹ˆ(u Äž—b±¢,»‚é4 YJLËd2™L&è’y¾½—3|% H<Ï*Tjè¡U©”»©†T|»Ü)¬qÜÔònÈ%Ëê3Ò”ú¶T ¢Ióxë³èÔ ­N!GB«ô·«Ù¾_ÜÈÇ  gÜnÈ<…—ܬ4ÙâÛªÕ+•ìAª!¦ 7üYVo …Ä­úà_Xé´m«ØT½Ö†BéÛóš3Ò ;Vç³èSW×öuyçÆUG?*=Ó?¤¹4£Â–]¡e¡C»>ª˜6nž$*=`çh¤UÍt׆ŽL˜­D…£Ò3š2µ)Ö®º>…þw5ñ¼$:%å’ëUµ8"m÷Šê{ÿ¬tÔ¶è³í¸Äó$·Ø½/°6XÍ]´¡MÞn2O_,FƒÛÓíÐE'œOWk.ÿÖºÇÄ5†tHftæÒºã¦fܤõ±q¹gÔãÆƒ\5O.Úç‘¥–ŽjwWæ»&DT5°I£I³É@ÔšiË~µw³+åä¢=œ#¡c'í)»Úø¾q»3 ¿%-J¢£šîñª1á„ÙJT$%”e«Ë[šZîN²ÛíN¥RÝ^ÒT5Ï«ràŽm˜0[‰/c^g´qÜ^׆ɳ*9E©!­eµ‘«S'ÊùÕ zéên?&å÷ˆq»UL0yÖwë³_²ì íV?Ž3͉~Kã[sãšÝ·Te\ÁÝ噦 ‚é¸Ï"k§…:¶¡©@ËÓœZI«Ñ4‡×¦ŒäüFо«»Ý "Ü`­©T©”·—‚$Ö¿£ì7Û²+¸·2e`wüp '¿¤|[*$¯3¦J=ºIh@N~9ӌگG]£©&ÈɈÛhm m´ À( {gg]À`qóæÍ“““ÚfåÐY ‰DÂPÜf¨¯»÷ñ™Б>xßhN~yX»õ!>9ÚÇà±±1ívÌ¥0Ø´Jo¡m†h€ÑÓ6[h^½pw¥’ Ÿ»[ÍšÍ&4b³­®Uÿ8;Îø‡kš“:‡s9‡~Oç¹´T 2s¡+¬æó«Õoäþµüêô€õpëf®Ùh3Ÿ›î{ÍÉÉy^ ,5¯Ë¯6£q8,¶× e²a¶½néÓàËS5ýÑZÞôrÇ ¯Í&‚7q\NÇ ¯Í¦ ï¶ÆÀ¨\ê¿^VU¢!²é¢rmµ­Újÿ‡×l ø zqòp?éÙÔUf‹74£©f#gݲûZˆð>ÔÚvƒ.­a ÇM­ìíe2™tÜg‘åT ¢6̰íŘw6Hâ–ßJ…h°zÈE棫/è³R*9åJšÉ…UZËçsŸýÝŽ6nÌçW§‰×žÜz˜ËåÞz²Ðö»z¸¶Jkù\.·F;ÉŽ‡Ø¿–Ëår¹\Þ÷ôz‹j9š^Ío¾'¿·©]÷“žkúÊÖmpS3´5÷rÖljէ¾|.—Ëo’öXy$÷IXŽû,¼$ê;f›'7T× 7OÖ©ge ¥okžD“fÁþý“«W^¥jÉŽ‡P¾öÓ×ÚVÛu¦Ý¢ÁºÍÐëŠ.Îúø«zí'Ú³PW†w¼MDãs¢ïÑ|4°dÞòÖÓrÅÎðºüê<_tJÄóLð¦KÑ|ú ]­OÿO¿ùæÁ»Â/ÙE™Þ»AŒš¶9Î4·*Í¢Á¸•&gØz£Áh¬þ¸·4èfy𠳕ä‚käW¾æYØ?\¾È¬÷'¯ýg=ŽÄ{dsòÚ{yËo-jKð²æÒ½LL¿måy)¾ýL=-g?«[kÓ×<ÉX☈Ž1Õ÷ÉïÙ6ïBR“['bÉŽã|ež©aଭV٨ײ…úD\§ë¢_³áJ^ý‡wžìcºlĵMU» w]ê!7ÏKÙø‘•y;G ŠÓäÙºäbÌÛƒá{/â^ݼzûº ×o_­ ’§Wó¾§×m6Û*­mzT%iÁ&Â*½ãé8ÎøZŒMDÇ^{Ø®Zv|½é¬éÕüæÕ_¾Û|[¯ÁmÎL¢Ì`%¯ÞŒ_Û·× vp®è¯sº³³Óô,è…pçîý‹yVä8á_i«âÆ2¸D¬ÞþdíÖ‡‰DÂèóÛ£»cÌ‘,¿·™Çãë`°¶Õ)2ûœ‘’ˆÙÚ>'''X¡€aÓöG¼?66†åθ €ÀóÛ@ÛhmúÏÈÝßÖ]íÄm´ ¸Ì9y¥’̤ê­-þ­u‰CÇ0Øq»RN.ÍRä¦Ó™LfwW¤`äœ×06rõ9Ë'ÀFmçîE‹<ïU×Há8“g£¾°Y6\]êÔÎ6ˬõR§½-‡ªÞ1™\t8¬°’V¨Ÿ!gµUÛf?–CüÚnˆ‡)’e׌ ón9¹(J¼+˜N]¼$.&ËõJ;-uJ§X•ç¥G$¦ã>+¢÷r7µ¼rɲ,W×iªT²‘ùh¡–kôºÊ"C·[˾|ø¨P•½0ã’å£CE·í—:5RF»ªºrïÜxu}ÕÔA«P¬^V­¸ ‘hÛl½4*Ýö­q¼$:E©¶ªAØÒnYæ‹1¯Ó©¿ô2£¬mŽ›šqÏK:fkã«y¢Ÿ ›0[I–]½å՜ɳ±·tÉD¤öEÚ®"Üð[d9XR¦¸²áp¶RQ–+=Èå$ž·¾=mê_Æ«]µã…€ù44~9ä’e²šM˜H£Ç+àú®92ˆy1""rÓ+Gl¹Ò’]‘ì nxúì P­?æuĈ͓ ­/s¢ÿÑ|4æuFe×Ç™7¾vü¢zCž¬~qÎÄåðIƒQãR¯szà÷ä`(Ñ®sŠßœ0’ãmÀ°·‰z€aocP À ÒÙW«‹€ñ6Ú@ÛhÐŒþ\ìõD>úàýÚ&¢7nôçÏ—™ÔÏÿùg=ìø¿úuç¸Íøû¿ùKt4çÉã?ü‰ˆ~ô},¿‚Þà²m0¤Ú~…ƒ¶@܆¶€¶jG5ÊjÁ½’U›"wS%ÚÃò@§l—“Ÿ±¶ÙÒ¿+Ý|ûO¯“sÐsS#•Óà’ðü…|úJNuyhòÑZ|0'Gn—V¬E”ËÉŪ›ˆÆu¤¹Iv"Š'Écù±n#Õõ´ñKQ[šTßjô0Ár‹ Ú~)÷ðê›¶µ¾"Z‹3™ óév9aŽ3Í­‡\µ…V+Ùð|É»·á1qœ®ëH9¹HY}ñvËkÙñ¼êÕhiR½œÁÜ¥¶ß|ãõ6¯þk»½¯ˆÌÄH"ÁK¢Ó©Ä@f$`¥BÌ뜛·–já:šD4i?MºÞÁ/E×ÒDía@?ròŠòÚÙÿºU±ý¯Õ%û·úа”ÕÉìAŒ·›b gòˆ~+5-®qÑ4é,Ï«žÀÜqNþÛÌWÚ2¿Í|uF9¹!_‘J¥¼ŒÈê‹]rÓµ€L…h°6ÊÕuÑ4éÌΫAÞð0g?ÞÞÞùºÀöÎïÎj¼ÝÚW¤É⃅ÁSåɹÈ|É»[åÎGÔ®&j×¶Qí.Â<Ø–\D}wM߇¤íyu@ñ0™Àœš/+Ú×§ŸÁÞýôó/t 4UÒûoWt}Eš,>B»ËË!·$JÙ#«•ø¢˜¥3otoKìï—/ßüÇ¿ý‚¼»+S‘g=TrŠR`ɼµ>§u™â8“g#T²‹^g¬v/M¸á·¦¢1¯Óâó»ähJ™¢kô!éx^­sŠú=ùš‡ æÒÀéµ­Ÿäþæá~›w›•î:§wîÞÓáÆs`œ3ÿð§/3©ŸÝ¼Ñþ¿NÜ3ôü6à¢xù²¿]¶¸|9¹\¶Êñ6´ ÀpÆmää çxûŒã6[º 0TqûËL ] À…‘ž¾ýûÛ€A¾"@Ûhm m´ ´ €¶Ð6à¢À³" ;wïPkÕËŒht`íÖ‡ÑΓ““±±±““|dÈÉR hm0ÞHÂv»® ùÇ™7¾vüâÜŒ»/Ä'ü8á½~ûêf~ußÄíá£jEš2÷ÏA·ìÔz·àpÍf[¥w<ø@Û#Ki{ImÊ]O6¬H¨§·Ö\ñ-·/..jtØêpMÞàºõkíÇ[ŸÖôj>¿yŸ/´=ª=¨1åV¶fXxoãé­ s/sÓ»âÛÆ÷ˆÄtÐÅóEõö&:ÚhÔÞº¦Ü²ì UÝ»ó*¯TÊ¥#’e‹yBÇ·¼Íá¼sã¬~õvmƒ³£;OリŸmŸ]{zŸXhûhåéÝÊœmgåmÃÛsTzV­Ÿ&Ímêoc? mÐ&ÏFÐ%K¢Ó)JjOoá†ßJ…˜×7û]ªåæ…åK–%Ñy0r^†þQpÖ)JÊ8¿UýÌ~œm·Ûíë;\³Ùaéÿ`Il¶µC|ƒT°>ùe¦RN.ÍG îÐÞÊTË2}ýMË»÷åY‘ÕÛŸ¬ÝúÏŠ´¿K»”’®dÙ]h"’­þ­ZÚô!úÔÊÞÞÊÐ6]NNNðø$ÆÛ`¬+>2ÄmµŒ¸´ €¶Ð6Ú@Û@Ûhm m´ €¶€¶Ð6àrÓùOƒéôÁûèMIÛDô¯ÿ2ß¾À¿ÿ纀ÁÓö_ý¸»%ÔKù1\ÁôÊ×C%ÊòâP À·ÿúÇ?Ò}½53ÍþÐÝ‹ÙÙ¦ã>‹,§8Tpé´ý¿?¼Ð¾APÞj·³Ê­®R)'퇣Ɍ¶ÉÎÖPT/'í5×Ûzm}«€‘Ðö÷?¼øþ‡oͼþÖÌëÊßDôùîû·ÝÎÌÅÆ=3Åq¹È|´`õ}VJ"úv¶FÓõùhÜM6÷ýª€‘ÑöŸ_|ÿçÊß?!¢O?ÿ‚mWÞj®š—D§Ó)J²Å·µ,T*ÙƒMšó$•Ê;ÛîšÎK¥m¥’¾×À@ch’ìÿ^Ô-©þé§oÑý÷¾zc«ñ¶zÞ‹ ç%Ñ)Ï3ŸÚÞ\h9njyË4-c^gL=Q×—úm?o”ñ¯’»Ï_ÈÝkÂl%¹ #ø^ämòlìy²a»(ñ©@dfwYèkýŒDNþü¥üüeUÌŸ|šfÿª_Æ‚mÕª6¾ýÌXùªUmµ¼jÜ®”a~—ÌnºÛú@Ü®æä¿ÙiÊÏ»ÅäÙ–ìbÌëˆU3ööƒà©•½¸yÑó:bDD²+Èì,¬ðÈêçL×Cý 1=ƒîܽÿŽûÝöevRŸá7§ ^ÜÞI}†ž`Øâ6`Á3ž@Ûhm m´ ´ €¶Ð6à¢øWÅ›}DÏIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/module_controller.png0000644000175000017500000002415412032647206024613 0ustar ebourgebourg‰PNG  IHDRøÙC͵sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ :}– IDATxÚí_l×µî×ì›ûÛ±c‹Š ÛÄr… ®j¹M‘)žžZBjä2{‹¦e ‘Ò`èà<Õ46¥R;,O[à†1C)(Ÿ¤ÌÄ $ë$’*À¤õÐD e@ŽAGT;rú|š=÷aHŠfÈŠr$êûAÒÌž½×^{曵׌f ««« qap@è@è@è@èÜ¡—¤DÐf³Ûí6[0!Ie{3Ñ~Õ½Zë×x¸®Âj$‚6{¶þhfµÕ‘’ÞÕ¥³ #¢gLŒŒ.—nMŽ„¶Ì<@Jív»O,2˜-„{»†×)¦eÀVáÊ»S¡‘D÷ Uòáüh$¶U>R&:àcÜä¹p®ÛïE"ØåÅж}DϹÉd⌉ÓÉ‚­Ë³“)â&“‰óòð6›) róÙ9m²\-.®,K™h¾¹`B­ É‘ÐcÜéŸ8ß“Wy"¬CCòÝKÍòBŠšëf$I’Ã]^‘1ÆDŸÃ‘-VvHINFÍ?UoWåUl g3@ŸÐµ¸Ý."ŠEFómY:]nwKIàÜåY¶*ÆDo×@4³¦˜Ã]½ùl[»¾|áãôÞÐB¾9ѧ¨õ’”I/禾“–JU©[ž»] ;Üáµæ½ÃÉʦG ÑÔJ­-i t =‘å¤ÇÄ)59»œHŒ¸ÉS¢œùÀylllllÌïäŒ-„F’9ôŠŒqîôÇãùë±XnÎ䉌ÅýN"¢Ø´RŒ¼”NQ‹±‰ª†üŠ–Ë¢ìó‰Üä‰Äã…Í%É28pr.÷+?? ‡ ·Wm¥æÎ–´…³ _è©©ã˜9¯J²è˜u4ç^¦cE³ådŸ‰sYÖÂê k‰~Ë`ÀÉkÔú\sNww‘¥ÓÉ9Ñbz¹æª”-_Kaf~²ÍU›<Æó©!-­ÔÜÙ¶@‘*c›ºÝÎ7‹D;Ó“1â$‹ÎRyžg-pn2¶¥4‡ÕµÜ˜èsˆù?ˆ+Ößl4¥ÓËd5T¨LÍr""ÎA‹.Û8w üji¥æÎª´z„^¬.Å…°o3{NZA)-ÐÓåôb…½XˆŒ¯ ¦¦¾ çz BEË Æb !ÿhG%5¬ly½¨½ÅÎâ•N@½R7©*È!”Ý Š’ò#¡ÆÈÕi„ò½ù÷UJ‚VùÝù ’ÞI2©dHÊ+¬jyù[óR&Úo &ÉRÁr] ^õNY[+º: 5FôDr¢>´°@jÚd9ÙgŠ…DŸ=›``E)éN‰"[ÛKÜårÅb±ÂËåÓœ›û.¸Ó½ÞTù.jŽ8w”òÔ‚¡ç\ íð‰EÙùrVµ¼ÍF3±……°ÛâÎÀ¸jŠg=­¨uÖ‚3PLj^ =ç'ÆÆÆ&†¬Ê =çÆ×ž¯rî Œ¯¥ëP<âÉGèÜéì,¬¼Û×g*>¶»bB¿¤¹*Æ[‡âñˆÇÄ‹“!ÙCeË«º¥ÐríëkEOg@YI°Âl÷ˆ„„„„„„ ô…O \¾|~€­ÈsÏ=wïÞ½êB/…¿`kqñâE­½Lù=á>óÛ?ÿÃùåOžUÛõÀf¶û̯~ŠÁ€ªÜ»woçÎj{ñ0¶<•S zhp ô°]…^’A›-˜Š·÷{¹ÒÙ3íío83«¯† å+ïU(nɡӌÚú.7¡ÓHÐÑǼÉM°õ'—§òJ?{%ú­Ù1{¦ýE:—Ì27wº£Fá€M#ôŒ‰ÞÑL±ÖËÁ¾=‡õËm¶`"”·÷G3R&Úo³ÙlýÑŒ”;6í·Ùív›-˜¤µ£*ÝNzzZóJ?{…zzÊBþòøzöL»wl-ÔYEÍýü¢»½B¨>{%Ú󆢸—Û0{¦ýÌìçÝíí‹Å}ñsù.q‰]z±0Hÿü¢»½½}mK»†‰B¹‘åU€V¡wùýN¶îNnëÐÄÄØØ˜¼laÔϘèî”·/„Ý]~ò]è3S*äÏÞ-’ý¡”Ùã÷˜)æ-®¶Çç”~ö ?^,±/ÞøÕûÉdòý_Ýx1§rŸ_t‡½/ÇÝǯ¼¨q ðùÅÓ7=sÉdrî zQA0g¯D{Ž+˼‚ DÑOÓ™¹¹äý‚~™¥ŽÓsoœà'ÞX›d È3•J4YTèˆèÉ2ñ˜˜è+LÖ¯Ñdl)ÞÀ¹30h‘·sî œën’ˤÒKD’”˜ŽQ‹Ñbl!¢Åô2Y†&&&&†¬BÅŲ;²J?{…Š¥vöJ´ÇóÜ#DôÈsžžè•Y"¢Ï§.Ó÷Ž>’=ôô=Út~ê2ÚŸm.W•¦„Œ’ DÔóFDÞz Ue¦’-P©FVETÿ‡©¦nŸg²7ä0^p¯eo2ÑÞÐcÄq÷&ú"1&«¿AÓAÇ[ÃSŸ¸IÇO]©RøöÍOZë–½Û7?ùäÒ,¯Éw,:q|3Ž×–0°Õ„^ Ýçé.oÈ1SK'‘$eFý¡™û"ît¯7¦£¹f£™xʬ—+½û{§Ã‚'B´AYèý‡ë9©úè8Þóâ•ÙÓßfr¤ª‘P^k)$ÖÁ }æT*•ݰ”NQ‹±I_c‚`è8ffLŒŒ.ggšÆÑ#G[¨µ,EÞq¼'¾ø9}~1œK¡%5fÏæèoܒ˺Ë÷ýÞÊùšŽã=Ñ‹^õT·A Ùåº5TRÝH¨Eè‰H0ôœ ¸Öt?àbLôvEÍĘèíÒú¦¡ç¼ßÉÂîü‹7šM}ä9¥H¶ãô­¿ù¾ÅbùþoZóoÄtœ~ÿP8ûÖÍ•ãù}Çé9ÏÍï···Ÿ¦3 ‰ûGž‹¿Ò^éùŽÓso´¾öƒÒ÷èmPTóÓo´þæûÊOZ5VRÝH(ðÕÕÕ’M—/_Vü¢ñ}æ·þ >jZ8ý›?žùÕO/^¼¨¨Þø48zhp6õ÷èïÝ»‡åG a…þ—?yvçÎHÓ@ƒGô!X'ÈÑ„„„À·ÃÛª·;wîÄÑ€ÐØ:TIÝHRb¸Ë+2FDœ›ú.œë1ð4HD/e¢]Þ¹üñøØØØø¸üÃz>,|?ÐñE{€Ð— -0æ dWƒCÏùµÅ]A›Ýn·Ûí¶`¢TsAyW4#e¢ý6›ÍÖÍHË‘$e¢ý¶ÂoÖçŒFûív»\8?á(ü&¾\[Ö6[ð*¿Š;B¯)OLjsg§Eao&Úï™ÓûLôõG3k52Ñ;ÝxLœ/„Ý]~ò]è3S*äÍ䤶j™äpo(eöø=fŠy‡“…•O’/ñ˜)I ‚up<àäœóìò„’”î ¥r³êËŽÀvŽèÕï™ÙÉTö`étržšœÍ‹8çÎÀ …šŒ-òï纛šŒ-DòRàZÊÈ÷¢£ÅØBD‹éÂÊÝÝMò›V Ò½Ù{† X‡&& ø½.ä5c (ñºYÆDŸÃ'2¦«ryy[çl!ìv8‚ ¤kzuÅìtcât²|g³Ñ\¼Áll®§UÍF3qî¬-ý"zÎOLøœˆbÞa¤æzU,'ûLœÇ¼ùg¤‰`0!I‚`è8fÎÞ’Ó"cæc†ú%FòõGF—5ÞˆÓÅe-ƒ'çd6ðZ`{ó@åÐøÜ¸q¸Ëv;ÂDDäôLJˆ =çýi›Ï牸ӾÇP_³²õ‡Ýö0ÉZ-êw…n_ßdo(ìv„¸óìØ‘û+ÙÿÉÜçë6I 3`;#¬®®–lº|ù²â:â ¾uh`.^¼¨¨Þø48zhpP‹ÿáh rôHdÀÖ¥±[¤Oã¾×ç­/½Ü}˜ˆ¤»ãï¼KNÏÞ«§?OGOø{¸%[˜Žžð÷ ùüïA[ÓŸÆ}¯§#"ÎÈܯ^¯Ëòu¶XÇV6¨ZŒš‚Ð?¡× c ¡‘dÏUþ39ûÿ3K¬CCzî åÈw %‡»¼1ïp§þ¾]aï®}Ä–nÝýŠh7ÑW_Ü%¢ÄÜg'Ú }•YÙ×¾CP;öðÓgÿôtö"ÔyÑÞ絑:zâ×½A’Væþp᳟ë¾hï¿ÒÝ!Ûœ}ÙΣö?ÿäz˜M¦T*6´XAÊD#‹fO¥ J$‚6ŸÈˆˆ;ý¹ûA>væ&“Y)rÏêlö÷’S*3:Ð^`Úç •Ñ5í(6,û{_ßb8¼À¹©pró-r í(]›™ŸŸÚtø×wc4sãFïAÝšŸjkë%š—K®ÎÞûðV>Ž+ް& SKŒó#Šó­Gî0Öv*»Kö>Ñw*¿÷³Ñ޻ƈˆ?1[äÚzꙥ©œ íÍËÑ%£™K>* ô~D—Þ$¹éòÚªNq -_ëfAÅš5תG°4ö%§¤•ŒùÁ™Ñb|*7ï4Ÿ ;Z¿,šÃÝç]zæç¶JÍ5ê¨Õ"ôß4¦ÐoD Ýâv»#£ËD´<;IÇŽµìÎDû}"súãq¿“‰¾þh&ø{EÆœþø¸ï˜Þ&“ý¡”Ùã÷˜)æNj?PÍe–Ó‹Däê¬z#aLœ$_<â1S*4’ÜCýaçôÅ_KÒ½/ošŸ8BDóóó’´²úÅ¡Ýå-Ÿ¹N?~ièÙ½tó£ç+WyëÒ«Ý>tôÔ³{iêÒ¥ùr¥»‘ δ¶*ûõôÙ÷®1ó©ðK§Ž°kçÞž^)ð^‘ ‚pØáÉÌy‰016si¾ýå³§ B…ÚtY^XgÉ´Æñ Ãß|?ý]hük=ó-}ÑkLyyyÖ5xæ?_zvçóo^¸E·<~ˆ±[ׯIDÿ¸ž ÇÛQ±¹ÆµÚ„>ÿóÝ#ÿ§ÂOaÉí)ôD–N'ç©ÉÙŒ”™¤cÆÂÐ{v2ʳÓRXL’¤Lz‘87›‰šŒ-úfˆ‰éµ-Æ"ZLg´]ŠjÆ( ·Ïáp¸Ã)W@KÔϹÓÝÝ”íHl:¡7å±!BÿØ£û‰ngîÑüÄÑÖífÎ)1wë«O®“µå¡¼åG¾säazhßn9·£n¹¬DÍ»Z÷í&’o!š‡leñï7³jÒÚnæ|åïŸä×hçGNœh«Z›.Ëóu*¤°vw=öOC?¤ôÈ}Õ¾è5¦ŠÛ冈ˆèÁ=ÍD´òåÙ?»÷<¼ GMêFÊÿ\¾2£Vìò•™Â’ÛUèÉÒé"¶ µ¸»› w-¥SÅeS饵í-Ʀš ˆ>‡Od,W¡ÔŒQnÜïä|³¨vÍiz6sãÒܼµýíÙ½Ÿˆ–V¯gVöíÛQk(ÄØÌ{¯žK1F·3÷twçîíâ ú¯CmµYž•{[æÍW=¿ý´nסNcÊËKwÇß~å…×å2­¹{9ݹ{ûha„¾ÝF­¶ˆþ¾á›*/ó×±©’bÛ3GODd9ÙgŠ…DQtù‰ sÍF3Q¡¼šÍëm­Ùh&žrêʪËËÉ>³#£'­=†­¨õrš>um¦íT¯ -šZº5õá­¶S½5Õ·g÷~â·¨%Fáp«•RײOÊ¥Âë|¿agí=Ó[›‚åoßÙ•ûOþø×áõyÀ¨×Åò+sС§†þõîk¯Ï—øÿÍ[ÛŸÎÞŽ£¶žýè庿÷TáŸ[1¿a/Ã4u3S6+Rt:Ž™§“DÉi‘1ó±ƒ ‚µÓEòv9YŸ+oítÑbz¹h»bòS=A®²1ª}êöyL<òG3’Ã6öpžO¿>ø¨uçœÈ'èõNZ?ÄØÌßf¾T½µ|÷äÎçß \»›½"?}ë3IÊ{ãѹc{säJ¢@K«_U²DcmZ,W”ø·_y!ø.=ãÿãË}]ëPù¢¾è5F¥¼7ï*Ê"¢Ôµ™¶¶¶í9jzùç7RùÏ»ü·¼÷Ýþ[±ÀözA0ôœŸ˜˜*± =çýN.úŸÈþó¹èØr²ÏĹèsLwœœÒ” »c_áöò:Ân»Ýn³µgWÔŒQëT·ÛÅØBÈ?š‘$-†m2¡ìÑýq“üg™:hgGç+ÿö¿óá ŸþÙï^y«<-+ìîúwÿKmts*è>ý³áÓ?»Ñ– ÇäcSoy^k†?1ð|çÞÊêÖþÓ{éæTУخڴX^ž Ž¿–ùÎz%^¹/z)//‡?:ÊØÌ%ß_ïî'Æf.ù.|&IŠ÷òí3j5 =Wüyçý+ï¼EmïÈÜ®®®Ø:üöÏù®Ý…¯WP_öìmúx,öüs'k8öí‹#ø=l ¾ùÿ0 Í?¹Ôý‚Ð@Nè¿Ð@ƒGôHÝ@Có "z°y×· ¢‡Ð7&Åà6‚1ñý†ìÞ£ßbìÚµ N`³±É…=N)@ƒ‡_ ƒ „ ô ô ô ô ô ô ô¡¡¡¡¡¡¡====€û ßzHRb¸Ë+²Ò›4çÎÀø Uê^¿Ó´$‡»¼1rÕ¥‰š;xvìÈŒý• 2CnW­òB«87õ]8×c6ÓY‘è ¥Ì²aÙ¾¸CV"’2Ñ?½òûýï*y¯°ãÒ=ÐߢgÖi9"z°yëÐÄÄØØX<îwrιÓML i?¿%)´Ùl¶`B’ ÈÕÆ#ç1ï°Z±MÛÁ: J&:Ðå‘K¶d|ÜGþûê N3[ˆ±…ô-§‰(65r)j1T¼';¼6÷ÖË3UOH¡E‘]´ßf·Û ¯)í·Ùìv»¼ý*¿*‡`Œ‰Þ®Š—e“±Eåš´ç&¤Â 5í·Ûí6[4#©\Ïu¸˜Ó£…­¬ÉD"(w¼ÜŠfnïˆ,ª4— -0æ dCEA0ôœ² By»D”æ\L”«˜âïuqš¥ÓED±é$-ÏN.0Ƙ8$"JNÇ\–êÞ+kBñtÒâyoWv9?'ÈŸ«ëBP¬B¶$ÉáÞPÊìñ{Ìó'³ÓÛÞP*sML =ÉžÈÁr•ynrZdŒ\…eÖ"î²xŸ1q’|ñˆÇL©ÐHR1x¼`ŒtuÉxg­J+Œ‰ÞéN92-÷ƒšÙÉa¯È˜Ó÷S 6§cĹ³@*KíÉ·›‰öûDæôÇã~'}ýÑŒÖîøŒ-¬ËiÍFç´˜ÎHÒR:åt:eÝ—¤LzÑll&cTùtÒî™ ®(±A¬Š'äz«fyaz°EÃùÄtŒˆZŒc ‘|ͯߣڵ•1Ñçp8|"7y. Z4Æûœ;ÝÝMÙíù¼A‰lzÎOLŒûÈ_«Ü«µÂ¹30h©ì‡³%)“^$ÎMÆfåé‹F{ríff'SYá³t:9OMÎVí`¶;–N'çërZSÇ13Q*½$GðƒÙ “˳“t¬£IÇU=´Ô\¡Ñ†š[Áò|HÝ€->¨Lô9|"c”J/eãÁ>çl!ìv8ò)‹ªê“œï)Ïíʹ ‡ÜJMd•Ëv;Zfâë÷ƒŠÙKéµ›tÜMÕ³Érmäš® •–KÓ‹ÓÃr¦¦Ùh&¢Åôl¥} nÔF}]QKmµZ¡›f£™ÊŸ^Êáwr"Zÿ“UIÊŒúC)2{"~'ç5V’‰öÛl]c$—ß Ùh?Ôl¶ X;]”ÏwWm·ˆµ”‰6*–¯ê49M/Š¢«Ó"†ŽcfÆÂaÑÕi©ãé¤Í3ëvźj«b9„lar×¶]VPÁ€“óÜ’ ÷–k¯tDÁ jå'ßø¸âtaÃü `v¡TÉÉzÅ -'û´¼}”ow:™}¼a>Öa¹ÙÛJ­,¦—sCTBo­Nk6š8Ï'Í›:Ž™8Ï&¦ê}:{f ÿ9 &$IÍÕ¤\ù„Ô[›Ë!ô` cè9ïwò…°;ÿ¾Aþ­‡Ã#sŸ¯Û ‚`èöõ™)v;ô¾ ÖÁ€‹1ÑÛY4SõWwŠóýi÷†I|?¨™-K•èsLwÔ"}ÁÐsn<࢘Ï᨜°’Û}‡OäNÿùC^eoGŒ}å­Lú»>Q-}¬Ãirš>íÊÖzKVt£ŠgRa·C~%fº3û4UÍjÒ\ù„ÔU›Ë·W¸ºº qÜBìÚµ CÖ0Tþ-€«=Dôˆ¸*Ñ@á====Øäïµ–~“6ÿÙØL´¿?ºÄ¯*~¿Eíûºš›^û2°Ú7x7¬×ë²|íæ¿½q-êmá –¤¸ò$wÙ܉ÇãñHŸ9æíØ}¼ aE=Øb`IŠÊ–W^’Bûb)Ù.»s™p»òŸ˜¯¼ÆÈšý*«¦Ô«!…^"¨øÝc¬(¡[ ,I¡Árµ%)4®û¡Ðå²OÌ+z8í÷ÆÌžÈÚwuûV[CùžüUKy†·œ^,ÿ@VЃ-–¤Ð`y…%)Ö¿XŠZïdû ¿;¶ßVh¨ät0q.Ïð–Òg@ƒ€Ðo °$E],ߘÅRÊì_—oõÜøÓ)“^ÔûmK¬(¡›,I¡ÑòJÁlÅu?º¬´ânuûk𭦆J³7”J/-ÏN¶(…E ô`k‚%)4[®*ñÕÖýÈv92š‘$IÊŒFbœ›úNZªknAïtøVOCJ1}lz$Ý¢r§ÇŠ"z°Á’š-/UyÍë~d»œ ¹‡ÃJ¹ãçz BU{®¬—d{´úVgC J#µVi$ð™â->S ê‚”‰ô†R®À,Ø‹«=à[Wy)3ê-0V뀈 ¢W%"z÷à‚-ÇWo Dô ô¡Ð GßøHÒÊÜ^ýèö¡§~á}b· IŸÆ}¯Ï[_z¹û0IwÇßy—œž½WOÿ~žŽžð÷,øŸ la:zÂß{€æó¿Ôöçòá)ƈˆó²÷«×ë²|-Ö±• ª£¡ … ìݵØÒ­»_í&úê‹»D”˜ûìDÛAA ¯2+ûÚwjÇ~ú쟞Î^„:/Ú»ãï¼6²BGOüº÷  HÒÊÜ.|ösÝíýWºû#d›³/5=تh;J×fæççŸ6þÇõÄÆÍܸÑ{ÐD·æ§ÚÚz‰æå’«3÷>¼•ãŠ#,…‰ÂÔãüˆâÅ|ëã‘;ŒµÊOôÊïýlô…÷®1"âO dç¹¶žzfi*gCûCórtÉhæ’Š½Ñ¥7Inº¼¶ªSœBË׺YPg±f͵ê,}É)i%c~pæ_´/àDd>v´~Y4‡»;þλôÌÏm;”škÔQ… G¿=xȰ‡sú⋯%éÞ—7ÍO!¢ùùyIZYýâÐî‡rg›¹N?~ièÙ½tó£ç+WyëÒ«Ý>tôÔ³{iêÒ¥ùr¥»‘ δ¶*ûõôÙ÷®1ó©ðK§Ž°kçÞž^Y;#‹m„ÃÿKfÎK„‰±™Kóí/Ÿ=uP*Ô¦ËòÂ:K¦5Ž_þæûéïBã_ë™×hé‹^cÊË˳®Á3ÿùÒг{8ŸóÂ-z¸åñCŒÝº~ýK"úÇõ=þØŽŠÍ5Þ¨ý6úÇÝOt;sæo$޶žh7sN‰¹[_}r¬-9¡çüÈwŽum¦íT¯ -šZº5õá­¶S½5Õ·g÷~â·¨%Fáp«•RײOÊ¥Âë|¿agí=Ó[›‚åïsÙ•ûOþø×áYgvÈàIDATõIè5F±üÊÜ»#+tè©¡½ûÚëó%þ¿DóÖö§³…·ã¨¤n¶Uöư‡ó|úõÁG­{8çü@>A¯wŠÐòø!Æfþ6ó¥ê­å»'÷p>ÿfàÚÝìùÙè[ŸIRþØ7ˆnÌ¥Û›Ë WZZýª’%kÓb¹¢Ä¿ýÊ Áwéÿ_îëZ‡ÊõE¯1*ååè¸yWñPî|ø¥®Í´µµmÏQˆè·¡Ð?öèþ‘ÊÅMòŸ·KÕA;;:_ù·/_xïÃÿþ_ávwý»_Ü÷úTÐ3EDDæSa9´Ìû–'EÄŸx¾soeukÿáÉë¯L=ñ#%o¡è­MÑò•U^ú4þZæ;þ?®ÿq_I_Nø{ê4FÉí‡?:šzkæ’oiï~bK¹]µîùàæ *¼—oŸQEÃoÞn-víÚuár~`óÐû= >S BB 6ð0vëñÌ“‡à"zz€Ðh£ßzHRb¸Ë+²Ò›4çÎÀø uÝÿÔS^¿Ó´$‡»¼1rÕ¥‰š;xvìÈŒý• 2CnW­òB«87õ]8×c6ቑ·_J>QíÄø»Sh§…îßy¡[ A°ML U¦õˆZ^,Ë£½¡˜wøÈØ‘ÍÐAIJÌ|+š‰ô†Rä Ä­‚ I™ÑáĹͫM’”öƸÚM«NÝYÏî'HÝ4^¼Ÿ‰öÛìv»ÍLä>û$e¢ý6›Ýn—·_åWåhŽ1ÑÛ5œ¨ðu¨&c‹ÒåÌÕf·Ûƒ )¿Ñf F£ýv»Ýfëf$R>6˜X÷÷¨Ò£…­ä[O$‚rÇËý hváö®È¢JsÉ‘Ðc®@VÎÁÐs~È*åíQ"˜su0QØDÎ0…ßëë´|´Î˜ès8leǪuGÞ[ÁþB; [‘Ï"ÞÐuö*Ö ôÛäpo(eöø=fŠy‡“Ù˾7”"—?›˜z’=98pr^=Û“œ#Wga9â‹G<&ÎcÞµ[câ$ùâ™R¡‘¤b´>xÁéê’µ¢Æ³V¥ÆDïtçÄÄUÊý fvrØ+2æôÇÇ}ÇÔts:Fœ;;-ªöäÛÍDû}"súãq¿“‰¾þhFkwüNÆêâ4A°æÇ׈iìNûKÜ^ØJáY´o”Zy¸Æ!ôçÓ1"j1ZŒ-D´˜ÎH°w`T»¶ÊÁ Ã'r“ç Ec¼Ï¹ÓÝݔݛVŒ¿CÏù‰‰qùk•{µV8w-•ýPb¶$eÒ‹Ä¹ÉØ¬<}ÑhO®ÝÌìd*«¡–N'ç©ÉÙªÌvÇÒéä|㜦q:XÁ~-ƒ»oTµ|B 5Ú'2F©ôR6ì3qÎÂn‡#Ÿ²¨ª>ÙÀùƒR’·ßfsÈ­ÔDV¹Üi·Ã¡eR¿~?¨˜½”NQ‹±IÇÝ4Ÿ{)Û)×V@®éº°ñN«¯ýµÔV>jBJh6š 4:7Õ•ÂïäDT˜i©9îõ‡RdöDüNÎk¬$í·Ùº"ÆH<>1d½~¨ÙlA°vºˆ1q:©©Ý"ÌÆf]†W,_§Uìκí_WmÊg/€Ðƒ’kØÐqÌ̘].ßk 89Ï]lòE¸˜^®9RÓ+¨•Ÿ|ããŠÓ… óƒ‚Ù…ª''ë+´œì+yQ¹Ýédöñ†ùX‡AäVdo+µ²˜^Î=i1*:¤¾NËug ÿì7 &$IÍþjR®|é­­òÙ ô` CÏy¿“/„ÝùWòo•8¾™û|ÝAC·¯ÏL©°Û¡÷eA°\Œ‰Þ®È¢™ª¿ºSœ÷îM»7Lâ+øAÍlYõDŸcº3 é †žsãÅ|Gå„•Ü®ès8|"wúÏ÷òÚ*{;bì+oeÒßåð‰j™èº;-×TØí_‰™îÌ>MU³_Mš+ŸEºjS5\Ñõ }°ðÈÖb×®]²†ï¡ãªDD=b®JDô°ÍЄ„„„l%Ÿg‘Áü'‹Ëÿ'¥ðs¾jνvVü¤L=›³—±yþU§¾NØ># JÀÂ#ÛQô±$…L]–p©ÿèX’·°5c±Dô`©üöX’b+œ”T~•_ÕµÖJÉJ/…¢(Yö¤ÐÇ{_Qó›$é‚òa±=Ø.lŸ%)êµÂ‰\ù“ìIík­”¯ô’ÍËkÈDû½1³'»r%p¶â‚0Ú‡ ü¾…ÅF ôT»¶Ü’uYᤴrÍk­¨®ôR¼ìÉìdJãw@ë21²B6ˆ­º$E½ëо֊ÚJ/êËž|+C°åG@èA‰Æ[’¢.‹uè]´¤|¥•ÊüPO§5øÈ=¨‘FZ’¢®‹uÔ²ÖJñJ/ŠËž:Ž™‹½¤ê7ýCа# ô`}A}£,IQßÅ:t­µ¢²Ò‹r †žóWÖÛ6[0IMü¦×i 9² –ß¼ÝZà3ÅàªDDBz ¾u³õصkœÐÆ@ƒƒÔ @è@è@è@è@è@è@è`;ñÿ v„–û°IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ftptest/0000755000175000017500000000000012165514774022052 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/ftptest/threadgroup2.png0000644000175000017500000002152012032647162025155 0ustar ebourgebourg‰PNG  IHDR]xáiÛdbKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÓ&îc%J IDATxœíÝ{\e™Çñ·gF’ $Ù( „(ì✄rSÄu‘­¤ÊK±nİÞÉJ¡n¡ êÊR*eYÖÖL)®UZ{ñR,–´¨ÍdHH·ìb!„HVYaWnB2“éýã5gÞœËÛÏ9}NŸÓïûýT*tŸ>—·{BÿæyŸsº7Þx£*M£Ñ`9ËYÎr–»ºUÒàõ·nݺÜÛ6v»ÝÍæ[·ní~ z'ÚPxëðÿ©—Í:tèçªÎ{lîCü211‘c«0ºÜ¼À(¥f‹Â›¯»ë_:úا¿xÒssç¾äùéÿüFŽÐ×fsñý_>ïŠû¿?óüS/9î©— <5ô®êF@5fsqð¸ÓÇÏüâçŸÚûûE‡æ½ì5‡+–ÅêÕ«W¯^]õ(5µ~ýúõë×g}(4Û_œ¯•:98cxjþ±'œp³Ï>»sçÎÁÁA¥ÔæÍ›ÇÇÇ3IßÈ7Û[¶×½îuæÝ{î¹gttT)µsçÎøÊ矾Rj×®]–®ZµJ)uï½÷9JðLÇÄRIí@ËÞ"+Kö¯ÌzQ;ë•K–.]úÑ~ô’K.9pàÀ=÷Ü333sâ‰'NMMµÛíC‡ Tg÷Y®ÓѤCÐGÂ84ƒ0¼Ý1Y‡"÷æÌ™sòÉ'_{íµïxÇ;V®\yÅWŒŽŽ>þøã§œrʇ>ô!Ëõ±·nݺ~ýúuëÖ…%£>‰vbb"<›vÛ¶mæ†k×® oONN†·×¬Y£olß¾Ý\ßœMݱcGxû / oß}÷Ý–¡æ`&¥.u±Þؽ{·¾»råÊpÍf³©” ‚@ßo;6èwöÐ|êH©#U£<U¼^T‡gfff<¸páÂeË–­X±bffæé§Ÿ^±bÅòåËW¬Xñš×¼F8¬D:)u"šA¸víÚmÛ¶MNNêD ³Pߨ¾}ûöíÛÍ \½zõöíÛwìØ¡1ÌB}ãî»ïÖ‰xÁ¦'QÍ’qtt42}Ωš‰NŸÞ{qPܽ{·^¢ƒP3oJ¯…s°É,X°`Μ9?ýéOžxâ‰F£1555oÞ¼7¬¿à™çŸV/ÎähX>F¢1R;j:ÃÚѬ#µ£¦CѬs´%F- ÅÄG›Gt?H€…„òÆdtU;pàÀÌÌŒRêøã7—OMM8Ø>|ÜÏžxàµËΙžžŽlN¢ª¤©T ³vì’9šÉÎ;GGGã‰h’wÍyT@ïEú‹Âh4r±­¦gÚ‡VJ ^|ñÅ<òÈÈȈ¾;==ýøãO?õÃE'­90ºð¡½ÿþûƒ H<G>¬éPܶm›þ¨½p5Ÿ;väþȾŽÑ¨ëEÉþÍzÑÉ€:3§OÍ^cÇ gçQ?zé¥íCÏÏÔU788¸èô“ïþ¯]ê :ˆ­])vó±udé)&ž¡šf6OZ|â'¶\{Âüã¿óï,^¼xzzúòK6.{Ãëo~SãØ\wÑõ_ú“·5lXõžöš·ë­ÿú/ß’~¶x\X#ZÖ‰œƒÓñrþÈ98*Ëy7¡;w&‹ºR4çQÃ3Q#t¥hΣr® ôLâ‰6òhœG½æë_ÛsËß­žýÀußT¯ÿþÔIívæ B³v CqÛ¶mk×®Ml1NNN®Y³F'bâ¹6;vì¸ð Ã8Œ_§¿¨_>ø]»vþùa4šg¢®ZµÊ¼Nc÷îÝ+W® £‘³lx"-uä§½%~Dó‚ ‹Ù\l(õÊë>6wª1¹bøÐcŸ1øÖ•Ûo?F}ëÐÃoœºJÍýö²é?Û5ýìBõ»¡¡MßxÇE—LOO Íî!ñiGNºÑwãqª321f'''ÍåñtŒœ€jï/&¡åD›È ¨iýE‘æòx‘t»¬§§$²d°$ž:õÅý¿ÿðèÛòøðÒþ î:yúƒ:ÿƒßž^¢fnøæ‹ÿjÞ‚ÏNŸ~úƃçÜ´ûЧ(¥ÌP ›º°÷5e¢£‚måÙKÿvÓлW/º¹}Úû޹ò…Á7=÷7 ^þó¡CSÿwÊÐo»ö÷߃Ǩv»Íé•'•‹?ÿå3j`Áyï=cÕå­»ù½Ÿ¸ù²ÕêØ¹33í3ç=½@-l?wP3'ßUõü q@÷º,õ ©‹*7ÊŹs(¥FÏ]¥”úÖÎÙk´ÕµH)Õ˜?§£œÑå%Ú…\á]àeâo¼±¨}%ì=e ,g9ËYÎr–;ù¡%ù/@À=šœÿ@ wÜqU€êíß¿_1 €‰\`¹À,r€Yä"³ÈEfE¿#ò ºÍfS/1oä>Xüëy#{KD™b5“HxÛ”)AUéüЉD±ïòñCDâ°ûl‹d˜êºŽl¢w¢Ç™¶ÿð‰Äî$qxæÍ5»gÙgóÐGòôÃ7Êø;{7{³L–=ZȱìÖþD_ÉȨŠ}ÍÃCtÜgI/ÔVr½¾ –Hi5Jb4{ˆD%…®d·–相¹N©|îrF<ѹ¿˜&w†õà­Ö½'ü¥!÷¬fZËÖ¥W º×¹¿˜¦þ•„Ùó«z,ˆL«õ¤Üxq (Ý^¿¨ƒ§¡ô¦p)ê(‘’´ã©C] _çòέMë/–q8¨­<¹h^™ ²¿Ssoi礨®çlOéžýuˆœÉ™øDä¯d—¯yî}r>*ß4x¿+œAâÆ³9¾€¨Ÿ§ú­bH›q-üYd½Ä¢Bù^“º= è æQPŠyTâÈEf µZ­ªÇ@õÎ:ë,¥ÔÐÈÈHÕ# zôˆÊÿù¨ô—ÉÉÉ´‡®¹æš‰‰ E.¼²fÍû Ì£0‹\`¹À,r€Yä"³ÈEf‘‹ÌâúE€/®¹æšŽë‹_H¾*ƒyTf‘‹ÌjlÞ¼¹ê1 ,i?ÜñññjnllŒÏ wÙæÍ›GFFøÒi0«ˆ!¥ÔØØX‡Ù·÷1¥Ô²áSËØ9,®¾újÉ×M3UJ©ññqó=³¬þ"¡X¡HàI2¼yÏ,%u(¢*‘öa«Õ¢¡i"ïÅçâ¾½}æsŸÔ·7mÚ´iÓ&b²rºÝXõ( $çbÃiw:o»í6}÷úßtÛm·}æsŸ$+GÕ ç£6Í›ÇÌ»ív[¸»eç^ÿñ›6mÚd.¼þã7Ñh¬Pxb*'Ú@GÑ\Ô¡822¢§ÝZ­ÖØX3k4¾îµ]ôçë”R÷ݯœ}©J…ÇŠÊÜ~(ÓÈ]¥+EB$’çQGFF‚ ÜM)…ç»ê©ÿ9Ðqåv»­Ó+¼‘[ûˆ¬3Àn£¿BλÉñ^ºoïc‹^1/¼»èóò5ã Ns‰ùw޽…›ûŸô@"9[­V³yTéÖjõÇâ®;'Î;wUx÷¼sWÝuçDÖaéùO³ò‹, ëË|{3:a¥ÈT*tí/êœk¶Zü±«¯äs›i¥á¾½e=õ&ÞtÔKìs­áVæ:‰áçOß‘þ"È%œI‘L¡˜VÞuç„Rë2Ecü¸’Si27q¾:LÄÇ¥€Pòù) ¶´º6œõÍ7¼xªÒã–Âèw…õuà-¾\)õÚÖå½ù0N÷®Ç+éu+õúÅ0!"Ó•‰Á–¶²}òÓEñÁH–g^G¹7P7…åbn¿Ù÷ÄÃüêw¿ýýÌLÂy¡ÇÏ?öUg/9gäU½˜cJª…‰=]À…bï_&nÛõÀ3 O.÷†ê£â\üÉ¿ïüÝooYáϽpß®=÷íÚsÒ)/{Ó[G{60—Ôÿûã…c!z6ÉI .©¾^¼sû?ëç½&þè}NêW¾ý½“[êóù¨–Ì+㼘’â€Û*ÎÅ7½utù9§ñ¾òüÔ“{þû¾^ÜYá¥Çÿ–‹7ž·òœ¥ËN¬d„n¨Éç£ gJU1Æ&€.U_/êÀ;ëôóâ Ÿy†RŠP,D}ªF­Œk"ÓÚ{ýuý%€jvýb÷^zìqÃgž1|æ¯\ò*ýç¤ÅKNZ¼D)µë?ö|þÓcŸÿôؾ»-qÛ hè?æsyäÑøæ‘¿-"+t\¿ru¸~1r*ibPEµo+üȯý¥|«°ðҲƌ¥p”‹êèfa|Ÿ–%‰ëN÷Ë> 8 Fõ¢ŠÍ£NnߺfõúŽ[™Ñb‰±0ç„ëKî!¾OûQºCT Q}.þfßúFÚù¨zû¥ýiÑ’vÍFâróo;áÅ–+F„*ýE«xõ7ûžØúã?vhÌyTý',·þ¸ÆgÏôæ4ÑЕbÕ£€þPq.êP<õÔSôÝÈçÝè…ÿö­ÛÃ5{ÉPÔè/€PÅó¨ëßlýqsñËNUJ=ùûÇö>|Ôç†ëpô£ëßÌ÷!t…þ"HTœ‹K—¨/LÇDëßðÑá¹Ñ_¹êÏ»ÑwÅûÞ’c[¦%¨@®È\üÒÍ_·¯ðáýu‡ƒ\M¾꯰\üÒÍ_ç¦K;®C4V…ª$ŠÉůÝzû;7]ºxñ úî“OþïUW½û«_ýšþ;\þÎM—½×ïýE.2œTÛw¤ÂêE~—]v™RjÆ 6løá ÿþÞ÷¾§”ºãŽ;€D/9P)ŽU=EjµZµmîÙ_ÜûЯ¯¼ò]ßøÆ?é 4]yå»ö>ôëáå§x8ÈÑ_P+ãããµý}·àóQÏ}õÈnÉv’h£Ñh·Û»’ÍÍGíÛfX¿s j€(òónº/uE²-«¶¡Ë]¹!ü¤B:*xuxùi—]vÙnù²Rê#×}Ð|T/ŒÓé•X™…ËÃx ïÆ·²—wi{PFMYÇ\Ø×…#•"ÈÙrÑÒJ¼ ~xùi{úu˜iA˜•xfR¦…¢Y#ÆWŽï!ž²iëòt*Ñ}1e| oän/¥ýú’8= œ„—ÿ ã+ôû¿ ©¹˜ã£dòÕ‹¡ðýÅRA†,•bâC™Þ1Ç\z¿+¤j ‚ Úo¨OüõÅ”)´\úù(J‘ó¨ïôÕ_Q^/v”5G}Söõ‹ºvÔtj†Õ¤YV&Vœ‰[¥(þ P¦Z-^hvœÀ·¬#<„å¸imÕ*ò¼›¯,yàý¾:,?rÝÍ?– ãopYßòä$gâ8v¶N±ß¿hæ™:RAj‘GÃâ2ó¶2"0¾U>ÿ©èN¥ž•xˆ´ãFfn9M ¨"ëÅáå§}E= nùãÝ¢êEóý"íí/ñ·ïp}ùìëô¯¢®_ K@s‰J 6³ò“̾2C[È…:á?§Ü¿œuÜ*q÷þáý¨úóQ5{£(òhâCaJöoÙƒdý¨À³Rã%£JŠÌ¬û)„eþ³ìj,íW+ûqÝþ… èG.ôaWl1’Ýœ˜Zê)<‰“óå.róÐòÚ‘S[:(2uqî—ßï|T”¤æ×/&ž¤“(írš¬$¦M¢ZÆãá`ôR1¹¸péŒþ¢ŒŸ,߯.þãÂ;î¸#²Ú—nþú©Ã 9"2)öóQÍ’QßÎ:#ÙJ^8fšu43¬ÀéÊ´]%.ïx\æQº)&7nÜðÝï~¯ã÷Ÿ:¼`ãÆ …YuY5F¢Ë~NMÚ£ò­,2]hŸGOu “IØÆ–ŒJ~P½QØ<*W[ýþý‹•`zðV‘×/¢žŠ½~Ñ„"à­‚¿g õÔïß¿H´èrÑ5?+ÕB‡zm¿Â€cÈE÷9Ð_ìßJ@ß¡¿è>&!@Ž\ô‚žŠ¬zÐÈE_P5€¹è¾°Rìßþ"ô ¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"È‘‹î£R9rÑ ô@ˆï™òEß¿AdI³ÙÔ ›Íf÷ûO<œ¹çÈìÍ=°Ä§™u'9A TÞK À‚\t_áß¿X“wípa”w”(©ð!Ë3M|j‰ÝVÉëF:EaÕ}…_¿¨%¦NävÚÔ_¦…ÂHVνa¾5ãI¶M|âò× @—¨ÝW‡J±ž(¶ÄQ/z!÷õ‹nëÁ§äè;Ô‹¾ j rÑ}|ÿ"È‘‹î£R9rÑ 5¼~ê‰\ôU#H‹î£¿rä¢û¨@Ž\ôýE"}AÕä¢ûè/€¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäøþE/ðý‹Ž©ÿ/:LN ‘‹¾ÐU#ïVΫz©Z­¿‡¡1ê>ú‹è±ú—³€¹è>ú‹ G.zë@ˆ\ôU#HpÞûÂ3 zÙ_ ‚@)Õl6ïv¹·é=«ØPMÍf³ìt¿çF£Ñn·‹à;êE÷UX)Æ3¦VÂL2cɼy¨¶FÕCÜA½è…ú\¿h–Gáíø •RH%–¡š¹•¹$²møPx7yøÅGØñè–…ö¦­ TÔ‹¾¨ªj”—Œa>A`ÞN\AŪ½H¨$f‰¹²Yæaâ>ãwõ&ñ…êèl¶?;fPb‘‹î«ðúÅL…Nd2³Ë½E2£›cfÒKvIÇ~™È\B.º¯ò3QKí2¦ENUâãÎ…šS¬‹@…è/z¡Âþbd¶°Œý—·óì Qɶæ¬d«ð¤2(õ¢/*¯#r„¥e“úWi«Å71ã°ã~ÚGèÛùG àrÑ}•>j¼q˜éPs[39"­;û3­œOâ!û‹‰/BF@‚yT÷UòM‘·õÄsjÏ•¯¿›¸¤•í£²ïоÐ~¶‘<)¢P/zÏG!rÑuë/@=1ê¾J>eã $ä¢û*é/¢Tzb|ll¬ê"½PŸÏGEQøi%¡¿è ¦Ý@‚\t_å×/@!ÝG¥r䢸~„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT ÁçݸÏGEUêÿ«ÿS Ž\tŸŠ ÕùC\[­Ÿˆ8æQ½@ˆ«9‹J‹¾ ¿ä¢û¸~äÈE÷Q)€çÝx¡÷ß¿AdI³Ù,ûpá!"wí[™äƒ²fÍfS¾ŸÞ³M_¾·F£¡o´ÛíîÇ”‡zÑ•TÍ#TRÕD¾A†›ä¨ËýTKþr5öa@õD½è¾º]¿h¾™ši)žog­®ºÜ0>ÈpI|xæÊJPP¦=5K}™v”| ÓŽ˜8€øæá†’' ôêE÷Õª¿¨'ßë³p^.óvâ 9*ß0|—OŒ½ÄwÿÈÊ‘ÈIܦ¡&I¾0q‰GL¹eŸµr£^ôBïû‹Zb‘¡RÞLͼIËž|ÃèAkÓrèLÉajø[EÖ½Yƶ·øÈ-G§R„K¨}Qa1²°nsnÁêèQ… ëÀL¸x\•=NËÑ÷P/º¯òþ¢®< ?ýÒ*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"Èñ½ÄîÓ•"¡X†ú—àüܬÈE/èþ"ßœ^†±±±ª‡ªÕjñs²bÕô=ÄOÈ\týEcÕ}ôa’‘ükÏÈE/Ð_„ÉÞ¥+ Ï‘‹¾¨¶j ‚@)Õl6Ë>„VÔ‚ ïªÑhèív»£—Ê{ããã‘à4_[UòϨ¹è¾ðw‡'ÇÌÜ ‚ SžÙ÷)Ôh4Â84o»„8„'ÈE÷Õ¹¿˜Xäņ±—XwFšZv•¸ÛÈ u¤dìXï:„vi¯­eIäeŒ¿Ú–]=Ãù¨^¨óç£6›ÍÄ·ÂøÂ° ÌTÉ%î*‘¹ÿÄ”E„äg×ñõ·¬.z‰\ôE ¯_L|£´¤WÖ·ÈLñiß¿ü ÚÕITud‚Z¿ªY_[ÍL¾´œ|˜GuŸýEô@¾ &h¾ Ê@.º¯ÎýEÇ8\,æ&LS GÔó¨^¨sQ.­¤ˆô¥Â¹¾|{K[¹ãú„¢EøÆÏ~J\ ¨¹è‹:ôƒ:ú²ŠðnâBÍr^¨|Wñ3kÒd:ÇG_¼Ø8B²I_³ü˜2­#_ èæQÝW‡þ¢ý=Q¸rއì O:M¼Ýñͺ¿*Ŭ¿$ _[É’n6zƒ\týE˜ô¤z¿ ¨¹è…~ÿ|Tª‡bõï¿ ÈE_P5–¤["ÝW‡þ¢«˜“ÜC.ºJ±TÌIŽá: /¸qý"ô¹è Ú` A.º/¬™J€ŽÈE÷Q)€¹èú‹ D.ú‚ª$ÈE÷Ñ_9rÑ}TŠ G.zþ"‘‹¾ j rÑ}ô@Ž\t•"È‘‹^ ¿Bä¢/¨@‚\týE#ÝG¥rä¢è/€¹è ªF ÝGäÈE÷Q)€¹èú‹ D.ú‚ª$ÈE÷Ñ_¹¡ª€ÒéJ1w(Þzë­ÅŽêŒ\ô‚î/¶Z­¬nÙ²¥Œñ@m‘‹¾ÈW5æˆRèkôÝGäÈE÷q&*È‘‹^àúE"}AÕä¢ûx˜â×ÑIDATè/€¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"È‘‹î£R9rÑ ô@ˆ\ôU#H‹î£¿rä¢û¨@Ž\ôýE"}AÕä¢ûè/€¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"È‘‹î£R9rÑ ô@ˆ\ôU#H‹î£¿rä¢û¨@Ž\ôýE"}AÕä¢ûè/€¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"È‘‹î£R9rÑ ô@ˆ\ôU#H‹î£¿rä¢û¨@Ž\ôýE"}AÕä¢ûè/€¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"È‘‹î£R9rÑ ô@ˆ\ôU#H‹î£¿rä¢û¨@Ž\ôýE"}AÕä¢ûè/€¹è>*E#½@„ÈE_P5€¹è>ú‹ G.ºJäÈE/Ð_!rÑT A.ºþ"È‘‹î£R9rÑ ô@ˆ\ôU#H‹î£¿rä¢û¨@Ž\ôýE"}AÕä¢ûè/€¹è>*E#½@„ÈE_P5€ÄâÓñþ"?wˆh4›MfØ\Õjµ—3³ J©ÞýÄÏ5¶nÝZõ¨ λ`Öõ" ÁÿϦ´|ßD±IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ftptest/ftp-defaults2.png0000644000175000017500000002264212032647162025235 0ustar ebourgebourg‰PNG  IHDRa{2Ë|bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÓ(1Ò‡y¶ IDATxœíÝyå™çñ·º©%ÔjYB·ZG‹Öű+wšY³c&`BŠÀv°^ Ó=ã“Å22XÀ  qyÂáðn´ÂÆëÛc{|h™0c Wˆ1àn3Æ d ¡£A2HHèìnUío+•Ç[of囕oõ÷ \••Ç[eEýô¼OVf®P(0\¡P¨«öȨù?Ë—’Ýo.7ìAîìs–„å®WY>r—{þ’°¼¶—;j u$Á<ÏK¥ûK¥¡”JgrÅœ¨×ÍÑ\îd°ÈUW]{Û\.W*•*Ù\ž^Sá<çèx3Rqæ]Q7©Øßßÿ§F1ùtcãØØ‡Œ,ÝÝÝ1¶r’©ÂÍ܉P#n¾ëÙÿsþ²}ë¿>íhcãyÇÿã{1€í2òsß\zëËÿR<~è¼öq‡Î«;Ôð™ÔG@õddý¸æÁ¶3 ¾þè¡ïMì3éâ3éKÇÑ£_;zôkÕ £–/_¾|ùò¨/¹ô#Ç‹z!fäç· Œ;yòä#GŽ<ÿüóõõõBˆŽŽŽ-[¶è¯X¼è0 ëô·JÍÁƒ_u?6móÛo¯BLŸþå}ûîB´´<¬ØáîÝ_BÌ›÷H’£€F'½ô/€³|ùrÏÊ:û—BÏY]8·eöìÙkÖ¬¹þúëOž<ù›ßü¦X,N:u`` T*õ÷÷k ˦LÙUWWwÙe—Ýzë­Ë–-ëëë›9sæ¿øEÅ®eY_ÿÀ™3÷Þç”’÷ !FZ×ߟ\2zôz÷†'OÞë<>ÿü ÎãcÇÖÊMMÝë9rnÆõCÚä<>tèçñ<¨j {öœKÍ9sg‹H!Ä›o~EÑÚú¨|ºsçjgͶ¶Ç„;v|Y±`Áco¼ñe!ÄÂ…%;6°:Àô ÁB¡ W–Õd¤€ªkœ)‹ÅÓ§OO˜0¡µµuÉ’%ÅbñðáÃK–,Y´hÑ’%K.¾øbÍ!êï¿oÔ¨u2OŸ>Š'OÞ;fÌú±c7Œ»AqüøP.Ê€ljÚØÔ´ñƒÎ…â‘#_knÞ8a¦ 6 !ÊE“&=8iÒƒBˆwß½[s`r¢µ¯ï\)¹ÿšY³†M±îÝ{—böì‡e:¾õÖW„sçM±Î›÷ˆ' çÏô gÓQ’ 0Ê_MêÏÓ–¹>@{{{ssóèÑ£Ÿy智ººär¹1cÆ|tùŸ¿ü°8UŒ7èQ£†ÊJ“§N Åä˜1ëý+ˤ7n¨¦tבÍÍýëˤœ8q“ÿ¥¨öï_3sæ°ö¤e·Ýµk( _]°à± £ˆÓÜ¡éN¡s­ÒÉ“'‹Å¢¢©©É½|``àtÝéÒ™q¿;ðê‡[/ôl('ZëêÈå¦[•G¼·ì:šÜs­‘LŸþÐÛo¯éë[3cFÀÉ;’{®UÍ=× HŸ§©“AYƒÅÒ™3g„õõõ×^{íÎ;ÛÛÛåÓÁÁÁ¾¾¾Á¦''N»òä² ¯ÿøå—_Îçógñ8çµj’Õä˜1ëååqOœXis‰7ù¯Á­iÆŒ‡úúÖôõy‹H‡¬#uö/ëÈÚ¾ì/d–{ŠÕÝ›ÔÙ6`®uÍ 7”úo¨——Ϋ¯¯Ÿ8oÆ¿ÿç â´83ºX?qòÔéŒjnœøþÉZ¼ múöíÛOœ8áÞC©4TDÖÕ=P_ÿ@}ý²‚¼¯‚· @4ždà™® 9mÊÔ{ÿ×êÉã›~úÓŸN™2eppð–ëW¶~ôêÍ×åÆ~ù®kÖ~ãC7çšW\þ7¥'_óÂMuÝ?þÑ÷âß?Dž°ÓØІtȳ[óZÝçì’g·ºçZõÏÙq̘ñPà\«ü‰¤{®Už³ã'ÏÜqϵºÏÙx’N¤˜ ˜k½ã»ßÙþð¦Ósf666ˆ£ïoøóS]&^¹æ¼EûAÖÜå£JÛ׋#Ÿ?yÕ÷ÅÕÿ20­TŠ<‰èüðC1zôz¹ycãúS§î lIŽ·áرµ2›š6–=Üĉ›ºç½÷†¢ÑÿÛÿôßÒòðÞ½w919gÎ#r²{÷WÜ¿ý˜?ÿÑ;W;1)û5/,"2“ÿÝ?Q ÈÈœsïújã@nÛ’¶þ}}óëoº,·uë(ñƒþ7>6p»hüçÖÁÿúÂà‘ â††U¹_ýý×\?88ØÐpnW¹Üþ “Ó­Îry^«?Zåy­}¾qã6¸×?~£g… 6¹Ÿªû‘S¦l¾Û„^aG’?ÿpÖ÷ô#ò";îåþ~d[Ûcô%@Aÿ Š<ÖŒêàóZOÛ¿åKË>ùt_ÛìɈgg ~ῌÿÂ?¶ˆâýß?uúŒiÞ88oÞÊÓ—¬ûí­Kf !Ü @%õbúµf˜àl»lñì;W5üõG&n.Íùì¨ÛNÔ?¿îèß6_ðJCÿÀ»3þþæÕ÷Þófý(Q*•(‡µ*8#_ùãû¢®yéÊ—Í¿ü–k®Úüw÷n¾ñ#blc±XZ0æp³˜P:zZŒï— ç7lÒP3*,© ,Cƒ3²qt³bÙ¥— !~ðü¹:çJ¢YLBäÆNj€ÚPáOÀùy²?C÷fd.÷@‚{ŒYè#&;†ø¿k ¶ Õ‘…Âòª€ÌÊÈqãÆUwdıcÇäæZFFŒŒ  @02€`d$ÁBïבÏçÝO{zzä÷ƒØGõìÜ¿·Àcåóyýƒ–=D²Ü‡+{ çTþIFâ9œúè) 2¨Ì=­Ü_‘‰]êìÐó…ûù|>RÄFâ rõ"¥) Š"Ü÷1°°HößO4Vžsž<—ÈžMäNä8Ãöï¼ÿ`œÏ}D÷š•Sì3Áù°KEýHçKÓÿ-_ÉÞÓ¤¦çKy#ŠÝªßHà'éU²Ÿ¹sˆ²û4ôá@–•©#/DáV»Æd²‡d(€uv«x¿›ËÄŠ7à g­`äˆÐ ;ÏRøÚ­½ÒÇùDì™Ï°o-}JˆýÈ0Ù¯0Ü=Âj%ž©×¤ÞTm|8 Ä~)C(©]%²ŸtŽâ)UËžvT!çs6wŽnX?ÒÄá Ë*ÊH÷¯Dôoí¼‹{oa糈ŠçuOŸ©œúsðœøFô?É ?óØûä¼V#P®P(îiFm„Jm¼ Ð'ïY(¸Át¯E'l«$ÂfeQ¶QEñ>“¬½ H s­ Ã\+e‘êGöööVwdÄÂ… 僡Œloo¯Þ`ÈÙ̵&ëµ`—mÛ¶…½tÇwtwwËÇd$`$ºòÊ+Ë®Ã\+ÁÈH‚‘‘##FFŒŒ  @0~ qî¸ãÕÈHÀˆ£y'æZFFlh®uË–-ÕjOGGGàrþ²Ȳ®®.®iƒ:::ÚÛÛ¹q7ëxþq?,#»ººLr׎}BˆÖ¶Y&vެéììÔ¹ewX• Õ²eËÏ×—ñ~$9ÒxÂO'/ üÿv7›‘2 1¢xÚ½½½4 XÁÿee0#wíØ·áÁûäãU«V­ZµŠÈ™d{²Ú£€ÈÊddÎ%Ò~e@>þøãòéÚ»×=þøã¼˜™¨&ØHu^k.—ëèèr?-•Jšûmm›µöîu«V­r/\{÷:“#s‚+'é°NhFÊ€loo—³d½½½]]=QcòÏ>|Í5q•⥗_gîxªUÍcùGåÞ|)ÒÈ‘ YAlTf®µ½½=ŸÏåó¹Øý$™‹K/½üÐÛ'Ë®\*•d’9b+u–‰£ ÀRºçìÄøŠÛµcßÄécœ§§‰×Œô7DÝKÜÿ±7gs¢Ô(ú‘lT&#{{{{z†•t½½Ãþ(<ûT÷ÒK/wž.½ôògŸêŽ:>9Gê®=Kœº3ÞÞÜ ‰Iœ ’éVÖ íGÊÌèêêéíº¦Xgg^þ3¬dܵc_ÔÓvüMJ¹D=ëlå^'0éSE?€½Tçµz%R@†•ŒÏ>Õ-ÄU‘bÒ\Óp_roBÕ˜.ß ÀReæZD‰ý{[ú÷¶üë·w !þõÛ»ä¹ðÙ§ºc7&Åð1vÎ)£ ÀF _gG†_ÿÞ!ÄûGO¿ô´óÀùsðÕ)ú;”A(9­GÏ¡yζ̯¦†~${%-:9Ë*ÓQ±ñïž \GQJzÌ9Ë&l‰¿16=+†ÿ¼Døº•ê·†¨ Ø+ùûGÊ"Rm×ëï\󉯙ÏçÃ^êééQ¼ª^¡§§'ÒáÂÖψ|>8¤ގ³ŸJ>¹gac2¨|Föô”’ýý÷±ú—“ÜlûìÖ°/S÷rÏW°bó|>¯þ‚Žº~u©ÿ¡ *~;Š6¶²c2%ù¹Ö¿¼½U1aüè ãG«ÙÿGñ7_údâÇE6eª)¿îõ¿¦£®Ÿq5öv€$<×ÚÚ6k׎}y{«ìJøÝ«þuÖÞ½Np×å£ö~éÎåO w2¹çEP5¸[Ï>=Q©Ú œ…+Ü!`ZòÛž]Þxu÷;ûß+Î/m?öÂÅ-—´_˜þÀP¹ŒT“QCEý….¿ñïôÀWcų[ÝAÍC›hOzŽÈš¬däÓÿïùwö¿§Xუ'^zaûK/lŸ6sÒu7-Km`¨P…÷ ›º4´y…‡3'…|*+lf¸rYxw@ ¬d¤â©çþI>XºøJÿ«/½¶M>¸í“ŸOoL¨X…d…ß›Q7W·ÓÜ/%Nñkx­ÇÊ]ÉššRxw@% fd¤k½^wÓ²E—ÌûúCß:>ppû›/8u̳Âùc›>qíÊ¥—]2»ujòc…Iöö#g }‰kþ"ÅDÇNsoêóŒ9:ýHd©ŒÌår]î§ecR†ßÂyKý/µ-˜/„ í•‘~¤>Ín¢ÑÂÎDT”}Ss€[ò¿g²½½½££CÖ]]=ú—?츶óÛÌŸÛr¡ü3mJË´)-Bˆ~½ýÑõ]®ïúåÏþ-ìÐþ2»—«o§é¾Íž¸Nz Lý>2ÿé©ê]¾(Òo9di¥j¼“ƒÊZ},ý7¨XGçÝUdp®µ½½=ŸÏ !zzJIͳm{®°xÉb!ÄkxMñ‰•ÿÝýªç*犋¸†Õµ\²5qÖUnþó<%ÎÓÀõ»RÈ¿[ÿ†ê_Oª_ œ:V¼#ÿšaGT¿Á°•}w@u¥qÎN{»ˆ‘ÇO"`Nõ'?غxÉb'_ûÃkîŒôÄž¼ÅGÙÌóÜŠÙ¿‰:wuövgo·ƒ®%ñú‘‘~uWÉæêõ£ö#í:ý cMóX±÷ï-ø+Wý}Õe0#{{{=×zõ|I†]^àü±ãv¼±S>žÛ2ì‘N(z*H…Àûgù1©fù÷xÿƒÇAVW“F,#)ƒ¡««§·w¨xèìÌGúö—'é œTuøôcÒ•ðåPÙ&¢ršæÜùÙ}Ç.ÿQÜ÷êò¯_K*ü}$T‘©:Òùêwžêo8׺í¹ÂÍ·üURsGTåûôB cõQ¦ykÃH® ™Elgä¼V)vɹÖoìܽ÷‘ç95Òq¥~)†7ýûT, \¿6È~dµG‘ÌÈJ8¿ýO·=W¸ò#ËËn%cFRDš{zSg}Ã9{ðïS}” Ç` YMV{M†2rÏ®òÁñÞ‹ìø× S:Ë¿<ð©g}'Õü›¨ç9¥V½Ä?˜ZmF › YÉÈ=»~5Ô¼qϵÊ?NYøUOÙ˜L\mWx¦QA°—ÙŒÔ/d@Κ5S>õ\gG.üɶ:k¦‰€¬ýH–ÊÊ}?–<_øUÏ”I³„ßÛ·ãaÓ­òäùêòså*ûŒä³[Ø++9»uª ?')-ÿxžËšÛ…ßG°WV2Rœ½ïÇ­Ÿý„|ÚÛz!ždYx˦lQÿßD À^Y9g5Œ~$Ke¨ŽLDï /=rìÂ…­Bˆƒï |,„h™3­š£y¨&بÖ2²ýŠKýô¿7öرa È4ÙÞä‡+@MÒüFª‘ŒüÞ–Ÿœ)¯»þj!Äλßܵçê]¹oÏ÷ã1MSþ÷÷ÿô—ï¾ô4™ž¨ »ººª=IêííÕ¼a_ô#oë¸YÑÔ4V1¿m®b|óùžÇÿ0ÂÕ_‘ ú‘2E~¨FêH·“?~&ÿ‡½§ûëÿè™j_9?7ù?§þé·Ý{œ¶Þy…⯾þ‚³$Ÿv1ñžž’zIOϰ« øWNâ}„ÊçsŠ”=ºsõšúë+Ô@5 `ª‘ŒÜzç*núÝ¿½ýâ¯÷^¢±þœ3å\ô»Ãšÿßý4쾡î§ÉŒ²ÃvËȘ£²›‘šœ¢ð¡;ž½üê–½÷’ž›õ‡½|úº÷~ôÌ7ÛWÎÏwÙÕ³Û½gç™9.âÝØÇ* ž"/^IªÀñvåð…‘vi$¦û‘²¦<;¼áª2Ýåf`%¸•‰AFâÔsžÄg‹T)æy¶¹³P>Õ¹yØn={ð4lx:ÛÙQ ýÈ!Åb©(D±Xúo“„"'J¥âMKÿ(‹âÐã-ŸÿýÖ;¯ð´0Mó„?“SÊÓ Ô¬üL¿lU¬u$R²ýHw¶‰³•¥äyÕ):óù¼û±pÅ¡«ª“É!9áá, œÝÕßÜY¨q=T¡’m”Y_GJ[ï¼Bˆ òñÀïÿQˆ‹E©töñçñEâ÷¿%DôZ}N)éZî¹Ê²ü[ W]¨øù‡»ŠUOëŒÁ}8õ*ïGž=h'Ï!ç®uªCuô+÷×}àÊ1š"¼ ªÏD­–Ô>©#‘Aµ‘²(œ>»Wˆ9½fßþnñ+Û>&Äé¯~DtÿÞ½\òŸ¶£8c¥ì:þ—s­Š%ú[éìVgMÅ¡xÛ$ªé/%EP|FÝý/ñ²k*z™¦`à A•ÏgªG{̉Œ 0ÇúŒtfMÇ÷ýâhß/Žž}ü¢b·w¹?¯†$Ûôda%MÄ,´…¯í'*ŽŠÀÍ‘\ÉnýûŒ–• 0ÇúŒŒ:kš‘€Lÿ"Õ’ñ+ìžà“š%fX,UøC‹°­{‹4¼²{²ÀúŒ”™ç¿¼œGÙ`NRýHÉ]JÊÇQgM=[U=Ý¥dàÜ£ûL÷«Š…›‹áå :ƒ=¥­bFTxžcyNÕ!,‘AÖg¤T6üHÇꪰšôĘú|œ°Wõ· ¤þ™„æša+”kU/Œ±¹ÎýõÕ#Q<({\ ºj$#+Á)Œâz­ìe$#¿±ù»ê¾ôÕÿiâ¸È Œ÷#­CÕ¤)ùŒüÆæï~zÕ e×!&GŽdû‘éã²ìÀˆ•pF~ç¶~zÕ S¦L–OüÓí·ÿõ·¿ýù_gù§WÝ@LŽ(öV“2໺ºª=U|)ƒðÆoB¬X±bÅŠO>ùKùߟÿüçBˆ'žx KÔ¼èGÚ[¨‘~äŽ×ߺí¶Ï|ï{ÿW†¢Ûm·}fÇëoµ-šcâ¸È {+H0u^륵?öp´Fý7Pÿ–«ìæîW+9ÓŸ9WÈö~$€ËÈ}?*/e,U~ùfn)œöÀF¦æZÛ͹ñÆ{ø›Bˆ/ßõ÷«r¡ŸÿÂ•Ž°[Í9Qª_q†íA¸jMõ üo~5Ð0bie¤b’,ðøm‹æìxý-' ÃB1ªÀ»¶*Òa-õü‰¶N"og„  À^å32ÆehâÕ‘ϵ+õ/‘¥¸‚¿ \-ì%r±ô#XÊÈ\ëçö^ô-ñjâudYQ3©¡š`##ù­–W?·÷¢Æo~4jx/=CÓ›:»efµrô#ØËHF¶-šó-ñªxxèiRu¤ÎmtÜ™êïGêïA½ôQA°W†Îk•"Ý6Hq#EjîAgÐA?€¥jª‰Ì¢š`£lõ#Q{èG°WÂ9avQÞÐãéEÇĵC Ÿxâ ÏjߨüÝYmÍÉÙD À^ gäÊ•+~ö³Ÿ—½Çò¬¶æ•+W${hdýH–J~®•ðƒÕdvpá\dJÆ¿LÝ÷èGf·ŒFFôööf|’ÉÈ}?wü@‚¸OÉþ— ãd?²Ú£€ÈÈH¤j€ÈH˜åTô#X‡sv`VRg´æóy÷Óžžž wé¸ÎáŸ÷䟻¾¾8 ‹‡J¶r? +ÝäK΀Ý+(íƒæÀâqnã¹OŽS\úeá¼äyÕ+„íY½C¹P1 d$ÌJäŒVOá¨?ó˜OÀ³gu;0Få—”x±£\‹ºIÙõ¹²ƒ¹V—ÈõZ=¥•SŸ‰¸Ñc«°*6ê®Lt7cOÉP #‘†¤ú‘S”I•†e×÷L¨¦vèjís­0+‘~¤ÎüjØ:'ÎDÚ³!¦oÿ)´ýè,Â"d$ÌJ°™?ËYâi jÖRñ¶Aƨ9¤>tìUÎ}~©s¦LØKîWÝWPì¹ìªc®Æ%ØÔYžÔ’ÀåêóqÂ^Õ?‹'ÆÀô?wV.÷?õ'™zÛ¨›+Ö'DQÔ‘H×k`#2fq½V‹P«̵¬d¯°ƒDØ[ÖwtttvvV{AÈH—H?I‘ÿwtuuU{ €ÈH¤j2Sø÷  ‰~$Ì¢ À^d$̲·õd$Œ«üþ‘Pd$Ò@5 ÀFd$Ì¢ À^d$Ì¢‚`/2ÆÑ`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹{cÁ8î }ü‹ ™BF" Ü?ú¸ÿ3ª¥³³Ó³„¹V˜E?€½ÈH˜E?€½ÈHÇï#XŠŒD¨&؈sv`–sFk%ýÈ|>ï~ÚÓÓ#—¸èìDs5ÏõVa»Õ˜ÿ'ÈnS>`2f%xF«û[;ê7¸?ù4•ÏçáªØ­‰Œ1—[žDW¿k`ä #aœ‰ßGViîÄr¿ä,w¾÷ÃÖÔ9¨³•g·¯ÎHžêŒÊ¿rØ’ÀÁ¨÷øéȳ¾â½¨? ›èG" )ô#ï\E z*Ѱo|Íý«w«3°«yx¸¹û_ÿJp¯éY®þTÕåuÔ­€ "#aV‚¿ÌŸUù~"+ñïtwrD:„âМõ ;§pÔÿc¿ÂV`®fêG†©GFÂ,*Hö"#a¿`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹Œ„qô#XŠŒD¨&؈Œ„Yô#Ø‹Œ„YTìEFÂ8ú‘,EF" T“lDFÂ,ú‘&ù#IDATìEFÂ,*Hö"#aýH–"#‘ªI6"#aýHö"#a${‘‘0Ž~$K‘‘HÕ$‘‘0‹~${‘‘0‹ €½ÈHG?€¥ÈH¤j€ÈH˜E?€½ÈH˜E À^d$Œ£ ÀRd$Ò@5 ÀFd$Ì¢ À^d$Ì¢‚`/2ÆÑ`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹Œ„qô#XŠŒD¨&؈Œ„Yô#Ø‹Œ„YTìEFÂ8ú‘,EF" T“lDFÂ,ú‘ìEFÂ,*Hö"#aýH–"#‘ªI6"#aýHö"#a${‘‘0Ž~$K‘‘HÕ$‘‘0‹~${‘‘0‹ €½ÈHG?€¥ÈH¤j€ÈH˜E?€½ÈH˜E À^d$Œ£ ÀRd$Ò@5 ÀFd$Ì¢ À^d$Ì¢‚`/2ÆÑ`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹Œ„qô#XŠŒD¨&؈Œ„Yô#Ø‹Œ„YTìEFÂ8ú‘,EF" T“lDFÂ,ú‘ìEFÂ,*Hö"#aýH–"#‘ªI6"#aýHö"#a${‘‘0Ž~$K‘‘HÕ$‘‘0‹~${‘‘0‹ €½ÈHG?€¥ÈH¤j€ÈH˜E?€½ÈH˜E À^d$Œ£ ÀRd$Ò@5 ÀFd$Ì¢ À^d$Ì¢‚`/2ÆÑ`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹Œ„qô#XŠŒD¨&؈Œ„Yô#Ø‹Œ„YTìEFÂ8ú‘,EF" T“lDFÂ,ú‘ìEFÂ,*Hö"#aýH–"#‘ªI6"#aýHö"#a${‘‘0Ž~$K‘‘HÕ$‘‘0‹~${‘‘0‹ €½ÈHG?€¥ÈH¤j€ÈH˜E?€½ÈH˜E À^d$Œ£ ÀRd$Ò@5 ÀFd$Ì¢ À^d$Ì¢‚`/2ÆÑ`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹Œ„qô#XŠŒD¨&؈Œ„Yô#Ø‹Œ„YTìEFÂ8ú‘,EF" T“lDFÂ,ú‘ìEFÂ,*Hö"#aýH–"#‘ªI6"#aýHö"#a${‘‘0Ž~$K‘‘HÕ$‘‘0‹~${‘‘0‹ €½ÈHG?€¥ÈH¤j€ÈH˜E?€½ÈH˜E À^d$Œ£ ÀRd$Ò@5 ÀFd$Ì¢ À^d$Ì¢‚`/2ÆÑ`)2i š`#2fÑ`/2fQA° ãèG°‰4PM° ³èG° ³¨ Ø‹Œ„qô#XŠŒD¨&بÁý„/2˜ãïGò— @ÆËH9!ÖÕÕUÅÑ`„à/+œ›k¥c„Ôð— €r…B¡Úc s …çì¬:Áÿ–0t0ä×IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ftptest/ftp-request.png0000644000175000017500000007075312032647162025042 0ustar ebourgebourg‰PNG  IHDR!dÞ”Ú[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí ü•Óöÿ¹f÷çöûÝ2&)eQJÝ”P¢Td–¤JÊP‰›"š¨Œ%Q*¡25‘& Ѭ_r‰ ?— ÷ÿ¾wýïî¹Ïtžs¾çûí{¾çs^½Nûìgíµ×þ<ϳÖÞkíï^»þuàˆ]ôB@¼G [û‹þçþgwþË{(€B ßÿüó¾‹5kÖüòË/7nÜè«w?>øà±cÇzÛþáøïÿþï#Ž8¢U«VUªTq”®à%¦bÈÚ·o_®\9G£‚B@*©­‚u¿Ï>ûÔ¨QÉR©R¥¿ÿýïN_¯\¹ò믿FüñFóç?ÿÙÿ×ýWµjÕV¯^!áˆÖµk×>ñÄûí·Ÿ#ð8´ïè£^³f ” ,ذaÃã?¾çž{ziŠOñæÏŸÿóÏ?_}õÕÅG*I"„€È¤V-ß»wï¨nî¼óN”#ë€PÖ VÏêá©§žÂœ`N:é¤Pn•+W¾ë®»¸4zôègžyæóÏ?gErä‘G†ïôÊwß}—A1@Y…~/$€YA ©UÈJgõë×Ç*ÀjëÖ­)Ö®]«Ù^{íåˆß{ï=´03tÖ'Ÿ|r‡öØc»úæ›oN˜0áÓO?=ꨣڵk÷ðÃÿú믽zõ:è ƒ `u²téÒêÕ«s‰Ÿ˜¥aÆQuÁg5eÊ”ï¾û®gÏž\}ë­·ú÷ïO%¾©›o¾ù—_~áç¶mÛ¬-k,“zû‰Ï‡Ÿ”ÿýw«‰aNG<ðÆ£aÆÐã 3«¶÷Þ{cœ0 ˆ´ÿþûÿéO2VúB@ä.I­Âÿýßÿ1­¶qâú·wÂaÿøão¼ñÆâÅ‹™\Ó„Ãá‡Õö³Ï>9rä²eËlA€~7J&þ<òJ¹mÛ¶—^z)a ¾Qå„çÉ'Ÿ„ŒÈÇ=÷ÜC€ÄwÜa “|Ç0Çu†›&Ø»téâåFw›6mB*hð¡y/©,„€ÈQ’Z4û믿nƒ,[¶lZV¯ÎÝwßmmëÕ«‡nÝu×]£ðúÛßþfnþú׿bBŒ&«)³05½ï¾û"Æ£B… Ÿ|ò —\<Ü­Eb:2¶)™£ñq a~ø0Š .¸•·­ÊB@’„@R«p衇Ž5ÊFžPÕ:˜<ðÀ6mÚ ^Ù³„§ÅÕ‡ªV­Š×~èС+V¬xöÙgQôÖÝ–-[ŒžKÞ†¬0Vƒ¯ß{)y9†9L7nŒÕ™6m+>ˆÔ½{w†“œ¿(…€¹‚@R«ðüc·ÝvËlT8ÜñÈ'l‹³ž™þõ×_ß±cÇ÷ßÿ…^8ÿüói[¦LãУG·& “€Ç.9ån?ƒßŒÂ*·oßî½Ã2Db}söÙg?ž­VD­qX9×–—ÊB@\G ˜þmsÅŠ›5k¸,PLéã¶²?q˜3gá>ü)iâ½£¯ < úYdønŒm4"hA=±b‚^‚掌ݱš7oN û‘¬Þ"Ì9,¸íˆUB@ä(I× E?<œN€o¿ývàÀì"Eû_sÍ5C† yûí·)Ÿ`ìÆ*„Yü©§žÊÎÔY³f­[·î·ß~Û}÷ÿ?.·8¨U«ÖË/¿¼~ýzfý¸ƒl»*ƒ2‚xæ·ß~;û_O8á„R¥JÙæÔãŽ;Îaû,—0  ¨S§Nƒ Š(õ(„€È"Åt­ÀÙôi1mT?®jÐþ(húÿþïÿòW “&Mb’—øs´6‚Õ¸ƒðûSæãB ìXe?+ÖÀEÁ®øb˜³Ç‰ ÇC=D´×ÓyçGäÚ›,5Ø‹HV©o! „@î"°+ÑÚœ“þûï¿ç/øk2÷'l6¸’ðê`ØÀJ%§e¸ýHü¤A‚øó3¢˜SÏ–'"ç¡pñ÷ÄŸã9‡6T¥B 8 0xÔÄþÝÿ9].¾¤˜0XŒÁGC°ÁWãû™äÍ¢˜GÕ[Î%åëQ?…€¹…@ñõ 厒V!P2ÈɵBJè9äûS¸$‹ƒ”ÜD „€ÈJ¦U ºÒ›”?÷X#B@$G@¤äX‰R!PòU(ù÷X#B@$G@V!9V¢B@”|dJþ=Ö…€ÉHm~íµ×’ó¥B@O.»ì2Òä$‘-…U€¼’0B@O,ÛqBÙR[%´0 »Ì€Œ?ÅΠ•š! „@·ö¥B"«ÇB"¶: ‰¹Ø ! J$Ìé9ß3­¡)Úœ\"B@ä8ZdréKV! „@a# «PØ‹¿B —HW¸è¢‹H[F¾L;_háÂ…½{÷3f çÐåp›6mºmÛ6K·I2’ÞX~26ÿñ_„¹üòË/¹ä£$/Û^{íE²Ïë®»Î'§E§|ùò\xá…>ýB@ä!I­ÐüýïðÁɆ¶saêÖ­ÛYgå“í³\pO³ßrË-äï$Ç2™Ú7n\¡B_+È©IjÏÛn»­nݺEœ#áꫯFfrÀù¤ÒO! „ÀND ss)Ï›7Ï'îСCIxyþùç÷éӇܙv•–ä[~å•WZµjÕ¡C‡7’6™Y|×®]I[f4ü1?›7o~íµ×®\¹’J˜_uÕU‹-òu‘ñO2tV­ZÉ×®]Ê„ÓUIÂüûï¿“jÍÈãÖ¾}ûÓN; ›Aò5W‰`gœqÆwÜYš1c†ÕS¹jÕ*+³Y¶låP¤ð¼òÊ+O?ýô¾}ûB3bĈ?üèÀqзB`§#†UhÔ¨I(‡î¨I¿Ûn»µnݺgÏž‹/~öÙg­ò³Ï>C¹cŽ=öØ>úèÎ;ï|ýõ×:ê¨÷ßýÍÏ?ÿÜ£GÖ4Dw÷ïßÕüÃ?|òÉ'N‡¢óé§ŸbBø3”À[ ÏÉ“'ãû:þøã½õ®Lw?üðGQ¹re«0`º{Ê”)?ýôÓìÙ³­òÞ{ïEø©S§²LAõ;hŽGËhŒAQr@€ûï¿¿sçÎÓ§O·dÔW\qž+ÌN94úB@ìtÒ° 8ñ¯¿þzv¿¢F½r£ìp¿T¬X±\¹rï½÷ž»„÷РA¬˜£øÜ¥K®²Dà›ñõ×_3%?úè£kÕªE`€õ†ãA¥c,L›6 V|V¬X¼ê­!ìãhäÈ‘x½Bãت-Z°Œ ½³5Ä 1„“O>“ƒ!yçw¨ÿå—_–/_ÎLŸÈE:u0!˜1oGÞr(èù`Y˜$ûî»ïî»ï¤Zos•…€;4â Z¯^½¿üå/3gÎti뙌=šà3~!ÊÞÜg¸é-,ŒUÀ`ÐÍèFûÅ_P7nœý)6WY7üKyî qÄÞî¦`\ÁKàÊ(wfý(qT°«ôX¬ì¿ÿþØ-„ÁªqéÝwßýõ×_ÍÉÃOÄæ›õ â%Œ:„r€ÉÝwßͪèzõê†Ôè#„€(†¤g+®! ¡Úçž{Χ8Üq%$êJ¦êÄ$6I—ì˜cމr+Œ šx/‹†'Ÿ|Ò2¸a† bâÓù­[·âÝb­@ î ¯$ØB~Ò öh9PÏ’h„ O?ý4á l;£¨ô±¢F! „ÀÎE ’ Šº$Äê„6U¸÷Þ{/X°Ç:þçgw4¡…5j°°àLÖY³f±Î˜?>AZ¾ M³k(´I!UÞxã›7o~ê©§àOðw?®'…ÅXF”.]ú…^@Ý¿ôÒKkÖ¬qÚ¼lÙ²8 u¿~ýŒ8”û_ ®àFkÒ¤ ½à’âûàƒvÁùBšØ ! ÒE m«@ìB÷YO§žz*.šx€83ón­ì«I"Ä~ûíÇ ™5\B¯Ã† ûòË/™’£=ùNÂ![4§›nº‰MAèh7±bâÉ, Øä¶á²bW.þ¨uëÖ1vç »øâ‹yäa§Ó€H¡€…5ֹ瞋û‹c‡ò¼óÎ{ñÅ{¶">B@‚#°«ýX#æòINåþî»ï,¢@7Ë{ìÅ0XÏ%KÜ5xÉÕp”GŸŽÇ@ð/™ŸÇÄ`õ@¬˜‚)?¾/«Gãc ‚Cr p‚=ÀOåÆÅâÇT©R¥\ B@,"ÐsÐH”'áÛ”šÜ©Ù´ã ¡âº ³ýås(MT¥Mœ£®î¬úà@¼Â+Þ3ïOWrj¶!+„€E@v¬BÑ˽{ä¯Õ<ðÀ(€ºB@9cø;‰ Ž„-<àÄY!P"È «@.!Gqh¡DÞo J!@nXưӳ„Æã¨«B@’ÀŽý0%c<…B@Y…‚ §¶B@’†€¬BI»£B  È*=µB@”4r&ÚœuàÙÔ”užb(„€Èu´VÈõ;(ù…€ÙD =«ÀY¡_}õÕ¦M›ì¨Ôl "^B@!P HêAâðgNE4iö€óÝH*À>ü,Cð‹À‘sœ/ä¯Õo! „€H€@RíÉYÙœŸÊ‘ÑœüÌyvdÙäÈëü‹šä†n ±šK]ÔÝ«?! „@Ž#È*‡tʤ£!o³¥  ;WÉä¼råJÎЮ_¿~Û¶míXi4IiŽ;î¸ñãÇsPö­·Þúá‡R&Õe÷îÝ-áe,ÐðáÃIl@šè«T©B¿8”ôÌ3Ï5jýòóÈ#$+d¬cÈ DÞÍc=©°¤Ø„Á6l8oÞùä²§™úB@/‰Ö vQh‚ôþ–-[š6mzÖYg5jÔhöìÙ˜Κ¶Ü2$®4hIiHïÌ÷àÁƒQÇsçÎeú§ÿ×_ ò£ôYjlܸі) ò¦‘T™é?††‡~8&Ü8uëÖå'–Œ¶d"uhƒ L$„d…4oN„€ùŒ@¢µ‚¥xçw‚H‘ñ˜J’tòªE_“£]l”¸‰Pú{î¹'¹\¹rðäø˜ÄÓ$€~ܸq-[¶$¸ Ö Æ Ò˜Êtð±å'òàYÂy5pà@d®_¿Þ*FV!—j„€ h­€ÒgW.{¶¥–)SÆ œée&ãVùù矣s³˜_ ÕgÒa^sÍ5Þ~cÊ^ S‹ÀÆóÏ?]!541󘆺$„€‰Ö XRÏÖwܱ|ùr\F†ŠÓÿ¤“Nbú?þ|b¸‰˜Ú×®]›}¶­Q£é?Ùþ4kÖ,LÜŽa^©R%ü]|ðÄ#’Ïê‚ .`ßÎ%¡C‡K–,‰a¢KB@¼E ÑZtÚµk‡be?Ï-·ÜÂO4, ü0œÑ»wï!C†0—çgÍš5qÚdM:%L}ÿý÷ß{ï½°¥»Ûn»íÐCê¢Y³fkÖ¬¹é_Ÿzõê;Ù¬råÊ„ iµuëVBß|GqP½B ŸØõ›o¾‰?“ôË.»Ìe¼Á9Ãj€o‚>×ü·ß~‹©Èâ*Á'Õ÷ßO |õ¡?˜ÍH&!‹†mÛ¶a]|”:Ɉ~ !PRxæ™g¼š†ªðlUŒ º$„€ÈEÅrq`’Y! 2@ õZ¥G|ÕD! rVWT.ŽJ2 ! „@f¤° .ΜwµB@ÜB@q…ܺ_’V!P¸È*.¾â.„€È-drë~IZ! „@á" «P¸øŠ»B ·HmέÁ䜴ü1aÎÉ,…@ºµ¿( Yɦ)V/xò;"«°“Kûó,„ºYE€½‹œ/ Œ€ZL^ð´îˆäµJd8pà+¯¼ÂóD&Î7¾üòË—_~9Ò2£ •ÁË[ø×¿þ•¤¤4D¹oß¾Ý1w Êéå°Ç{T¨PI;1V­ZÅR4-Zä¥qeì. 1õf,dûðÃåß~û­K—.³gÏfP§Ÿ~z=È6êZ¹Ò¶oßþ´ÓN#MžlÞ¼ùÒK/%M©Ñ0–¹sçR~ì±Ç€å¬³Îêׯ7Ô®ÒðÒ¶aÆX_²0±¸9ûì³É»çâe ` Ý7òïŒ3ÎhÔ¨‘­Ð©éܹ3ƒºð g̘á:Š—Ä1T!‡ð½ è“$ï×Ã?L¢xÖܼ8¼ÁñF©Þ4€ÑwêÔ å`å$šÁ(™“ñš0^°`Õ„j ¯º›4iRÌ nLrè;…U`êZ¶lYf²¼ÃÜ$ùÑPØêž={’‡§ÿþÜi.}öÙgï½÷Þ¸qãlÚûÉ'Ÿ¸ž¥á$ ÉíƒU²nøðá¤có^Úm·ÝZ·n ‹/v* P¾X…c=ŧ…{ÔQG½ÿþû¨fšGÉà8ãÃat«W¯îرã_þò—‰'Ž1®z”Óq°‹_ºÆ ’Jú§Ÿ~P1 N:7ÆQÆB¡|ùò<ٔয়~ú裶hÑ‚¥X—Ð5Ä€P¯S¦L¡Ô7 >øà&MšôêÕ‹  Ïvݺu©/W®Ä`E†mg3è¯ f€wéÉ'ŸìÖ­ïߌš!Ð*¥ Ahå><˜ä~ø›ÄËCÚT 5L!'OžŒåæ½mèSJâxª[xßÊIÞ¯“O>§1éѶ¡îâ(µÀ‹ÆoøðÂ~ùå—®¯ŒŒ\“¼2Õ«Wÿꫯ† Fe”Æðjò˜Ü8çÐw «€Sï#âŠØÆ™3g26Àýú믙œ}ôѵjÕâ0%·1C”¼óܳ?ýéO()ð"‘2÷æÔSOMÒ0˜ë¬œ×_=ê•éƒY Ê¿6Êkä.í³Ï>ƒ B†?üá(VÖ(L‡¹j —ŒŒ¨~ýúÌ©™kާ„QØU7À œN Ì…Ñõt]¦Lz ,ˆyi\™GŸbcü,]ðMÙ°4ç3Ï<ûçZYKÃØy…˜Uõyçw¬žÉÎзo_¦ÿ¬,Y)ªÏòCeŠØˆñt1‘ç.# el!V Ì‹a12D ` ùæî¯]»–U‰¾y$ÊjxÛ‘„ Óü“ %qlUÈ|ïBÂ÷«F<¬3xÇyN‚ƒR AJW¯Œ ¦G7ß|3úŠu3J#Fc8m@œ#æwäJ!$’ãµÈDõÅ_Ä—‚¶e€9…†5WYʱn°V¥K—¶[^è2&°LÒçÏŸÚâ.&ièëÝ~2ÁDUa“\®MÔôèÑ£ >› u㢯¹µüÄ*`0hb:Ñbd0b ¨0¾iˆÕAíb÷ßjÜ8êyP¯h@–,{ï½·±Š"ޝÇ`¡]syéß}÷]&_h«d¼V`ìLÃÑæ'féöÆo°€X¿~=fÀñqˆñÚí£¹»J!F†(\s‡›7ÞÎ-ãap@Vr†9MRJâØª+øÞ…eË–!yß/{P-Äc¯¬-ÒÚ {Øa‡QƒkÚVñꎇO|ï9t5µU`0 'ì!žÓÔ0Œjƒ ° 4Yºt)ne(6 åÉÊÄ´Ý®âyî¹çÐzøîqw°š m¬L)ƒ)&¼Ö†R+UªTUL þ%kÖ,Pâ*3t‚"€†å rà(Ó*eˆÀ±Å4" Ë…ãŽ;Î*AxëÖ­öÇ–ÔÀ3~áåX©‹øÞ…´Þ¯ÐÁ ‚O-Ø%Þ LU·mÛæ%N«Lðzfu&CJu—óbNüS ¬ÄyPÄLåðšUÆ< SXÜaQñq£qPš, A_s<8¸¡!jZ³fM®&lèãc?ÑkøÜ%&¼”±êD„Ðàø1>)e`1ÄsÌ ˜&`{˜ê²Ë­QœiàÆÌ}É’%IZš žCÏÜŠç’Gœè~$ã0~üx !0Ñ&Á6'¾ ½@ÀœEó)Œpq×ðæã ä®E9B% •Á(cðJÈ6|\< ˆã1x® ß#«Iüu¡ýª²ä!üýÂÏÉÔihÌvmŸZ.O8“Q¶°ó¼¥ ºŽ¶+V¬`. +ø§Ôt‘Ö ž®HEOŸÂ*` ØCP·]»v¸p‘ãÇÀ§D—I"J‡È$Òñ €åo>®$üƒ\JÞÐÇÇ~²å de¼~,B‰y;ŹDDˆ};¡­|•)eÀ…bÏ+¡»ï¾{F@ÅÇ$ÝŸLYiñ¤!{Ÿð×¹MÀ,ƒðZR‰&µ 1Lذd›²œìEk3ÀYtûí·s•·«@´™2›‹à€RÆ¢à´!X½c ÁÆ'oh!^°P¬I¨\òJxÏ=÷°U¡Y³fôÎÐ0±‹ûñÜsÏe—Û¥N9å”xtµÄ üýâáÏ}p3X83 ¯Z€†I=ßÄ iÎÄ(ªUT=Ž#]â ,8Ì’RcÀ*­<ªëâS¿+•xi0ÔxÖ˜>›ÇÙKÌÌ”Õ>boe’rÆ }Ìùskæ¿T2EB³=>š¨Ÿ)e€'OUW Q½[=‡“„žÅɦÜVøÇ°I˜=ÖF6Ò(†HK4Å¢Èb,>ºÅÊRž4†@ÀÉÉF´†¹vÅÕ¨P2è9h$63ý˜á$|¿`ÂC’–מ9"™÷I‹#ô²ñ¬ú¢k)5FUÔ ¤,ìš$wÄI»ã µˆÅ½Š ­OY™qCg§(yn|—RþL)C0Hp2š( §$‹!•-¥Æˆa˜[—R[…ÜO “–ݶ[c'Ž«8Ȱ‡¯®…@¾! «°“ï8 ä‡ÜÎyw'‹H÷ÅA†‚$i#úO›e¡7HW(tò»ƒ Èù ˜FŸ3ÄÇrf´X½àñw$¸BÁ0QëÄß§uYâ@.¾à)v¦oÀ%B@dY…,*vB@œF@V!§oŸ„B@dY…,*vB@œF@;Sý·/Å>Q?¹~ ! rní/J(¥¬BP¡§P„ЩJ! °Š=² 7DɃ” ·T2 !  €@Z.Y… ­¦B@‡@I³ äM#„ݦ±cÇZîø¬Ü5Î1}õ… )‰ IDATÕW9†z„ 1 ƒk4yw9|¼ 9‚‘ƒÊ9iÜ[™­2é¦]fæ„’g«kñB §HWàpΕeUMžEÄwI²>rôWòóo`&ÆÅ_LÒ±~ýúq6'™è©œ:u*e‚Ίœo½õ)n½õÖÐ d˜ K3É:‡Œ®G BŽ\c$ºiÓ¦M“&MìõX/ %ÁNûöí9#Þ5¡@“ªgÏžÞúäåéÓ§ƒ¤¥?‹—<9OQ !¤¶  À±Ý»w_¾|9Ú–³ËÉv]ÐH€ÄgdÑIΜøÉ}÷Ýgô–æ´”¾SÑ“s‹§$i¤H0J†ÉìÔ©¹Û°^4>)*©!µ…lÉvÌ/e““\uÇ÷Y…|pûöí^>)ÇK^Îj+„@ÉC ‘Uàl} YØHàåÒ®‘nuFŽ-2J¢ÐM]R([¶,STr¡¦Ñ}äø¤Ìd»béyIçI¦$fÊhRR3’õþä† ~IÃÙµkW¦É¡ü}7€„-¾Üäµçlô>}úø(ƒÜÈe6zôèk¯½Ö¥½ô5!ñéœ^xálÏ1ÇCÞ>º›3gÎÈ‘#QÙ˜F¼UÌÇáÀr„ü<–þÛÇÄL•dR#Ñ ÉsÌ*8Ó… `½­È9JŽe–>â­we#5£ÈmyòÉ'“€ÓrN,YäÈyIVNŒ·Ñs˼’—)SÆñQA!D Q\ß7騯G‚0f»pAépì>ji’ú÷ïB§žTŽ‹-"%/jœ”xáQI8UÐ_ø1 À7BCrCvìØ‘c¸¿ÍÛƒjF›£Ý° $’ŒâìñÚ㟱KàÊŽ8”cA#Ǥ/†-sö /¼+EòË:uê4nÜxÔ¨QÈI Í{ì±I“&¡‚]G12SV«V ãh&OžŒÇ:zÝD$,2dV-&C‚=úè£d"$CêªU«H m<ù ÔøÍH„ E,¼’óÞ8aTB@‰¬SW äþ=çœsZµjEKT?éIÈLfv:6ƒ)ªq$Oä AƒÐ›L‡QmxÛ™Ûr‰Ùº5„˜%š — é0!XæË˜ ¤&FuÆð·^ì›Ð.þw>$wõÖûÊ¡Ü5j„Åb>bïÏ+¯¼+ˆ2E6’_24ÊLá×®]KNWÖO¤6s«oC_™¼öäžEk{ëÉkÏ‹ þúõë]=ö€èˆ-ª\e° ’ƒü™gž¹xñb0·¸ø˜ Ù,©¡Wr·@ 2TBÀHäAÂ7‚Ÿ…eNt=Ú³z K,ž¬Œ# íIT®\9.ys®nÞ¼™Kè,¾©¯X±"~ ÌþûïoÍí;†¿— û1lØ0jbfÖ\ åFï|¼Ü‚åP Ü÷ }hÍÂ… ‡JÀÃ7U·\áÓ¦M»í¶Û°XDÂË–-#w&N$Œ(9–üñvíÚÙºüÌXÓ¹sçBÀj ¨Sš“ +Õ! ¼$² Ì7ñ__zé¥ìõd_æe—]fJ'†©6/Çø²iFüF†· ër»mš ùc ˆjÄ÷ÈÕ„ÜRò1,nX.ØŸøV6lÀïO…pK(%Ë&ül¬Æà†$úbdx½Pý,ÅB[¹JŒÇ‰'žÈO€Ýºu+~-Ö ütH:J„€IHäA2FÄ?™;½DÕ¨Qç m¶Ð ÙçÏŸ'$IlãAmAÏŽL¦ÆÌ»k×®Í$—¶•*UÂ#Ä.{œ!ó•!”2tèÐaÉ’%¡Mb*ñÝ—/_v làŠ!Æk„OŒ)<*›E_ g`­f̘Á*Álk26#Ù{À:à”SN12"ö¸¡\G,)Ðû¬ÏØ_„‰z, û\‰³»—@4fF†ÁÁ¥‚ÉHÃ*0ueŸ%*›Pš.qW´ÞW\ÇíMŠïŸ!V”)‹ öì׬Y“mKÖ„ ?l("B€;…xCfüC{冎&Îwh“˜J(÷ÜsÎ4&:BbbgŸ}6±hÔ4«¤õ=eÊböÙ´i“q¾ù曉¤aíÕ«W/o:´k=›¦Ü%‚êü¹;‘ØÚ„Õ±z‚ „ÇO?ýtdÃt¥ô9n*! ÍÛÌè¢}ìoÓ$&Ú8¦l•à¥g¹€±q-cþ^ž®œ„›K^êZEØ/Ä‚)ùŸÝyù0‘ÇŽb“xÀ¼ )³SÊ.ö¹"€÷ê¶mÛà °ÞJ•…€ÈszÉ¡ŸÁ“¼°8Õ—(®àmé+3 ÷Õ$ü‰ê¥ôÍš3æÊ<»Ü|ÑãУ*1{I6/E5§¿‹BûêõS!‚Z…„݈,‹ð¶‰+‹<ÅJ!`È*„< ¬³Ò:x6„EaWÍùs5 »7ñB Uðßk2áÅRâ?.ú-„@~ «rŸãc2! T%„€()¤±3µ¤ YãB@Hd"¡Ñ! „@" «‡7]CB@D" « .! ò¼ˆ6÷m¦yøÜiÈB@-ì®LØa^X°ÐNÓ„„È„€(y°¯’ ÷ wWʃTòH!ð¤å/‘UøìôC!çì«@öžçŸ>!ô$k#¹±§Õ0%R¼úê«ÙÍqÖ1ÄÁeç’ºÄAÞ†œÉJ.èBJl@Žk’OXw %÷ʦ²B ©ã œãÏaÑ–‰3 Ç$4dœçÀQN„öÓ'l»Jòü3 _¿~1‚ú¨†®IZ…·Þz‹qÝzë­$6ä¤k2I¬X±‚\÷ß¿# -Ä»ï¾K"Ò ‘2ºI“&v‰z¬©oH(D" ’ç¸&èâc=¶gÏžÞúäåéÓ§s#,\¼äÉyŠR!àC µUð5(쟄Dî»ï>ëÅÒ6ñ¸ÒГ!‡ÜpUªT ™…:uêDÂ8l€—o‡`/]º‹rÆgì½÷ÞP69ÉO7|øpŸU ÎöíÛ½| RŽ—¼ œÕVNr35Fu’y¸mÛ¶vÖÿæÍ›Qâ~ø!ùH ÓµkWÙCFËN8¡uëÖ*TˆGœLgddóÒôíÛ—d }úôñVR&Q(Ê—¼c$®! Êle£G¾öÚk-i¥žŸ]ºt!i,±=ÇsÌ믿NwsæÌ9r$*{àÀx«˜Ãu ¹kH™dâò"™¤¾1«àLN$’kz.X°€”™,}Ö[ïÊFb5®½ÿþû¤È&Õ³eÎgR×mܸ±^½zdr6z’¤z%'mªã£‚B €dbp†pÄ?Ú°cÇŽ¨9üÝÔ\ýõ|ßrË-_ý5¹'+W®Œ“áP»ƒ}öÙíFæµÛn»-^bç²§!^ˆÉFé¢kK 2°˜À!óÄOôïߟDÊä²G#ÿøãŽÌW Àœrâ‰'¢Ê±^ø¦ÚµkGF3„„Ûc=¶ÿþû»óñ±Ÿ¤á¬V­Æ]AboM¨¿nøªV­ê¥Œ)3"ÿüó Còr|qZ ­ Çqê¦M›ìׄŠL!Ÿ¤ö q'§ÅŤEË8RåÄ!Ž„óµ¥/NÐs•$:æÐÐ~ýúA̹¡ÔG5tM¼r™=û쳜iŠ= G^“‚Ÿ^šäeNBÍìÔ<º(HÛäŠR!PpR[…‚÷‘œéœÅmMì$TRž¡ÓÓbbÄœàMr\qÅ¢G6ÎÙ΀M8Д4ؘ š¤mÝ©‰B  dhHqC22;œŒMê±¶mÛÚaŸ$éD‰“kžD9ºk×®$T€ Î 'œÐºuë *Ä‹KªƒC=ÔKÓ·o_[%û±·’2Z~øðáëÖ­ãäj4o•*U¼HHòré#ÁÒĆÑDÉú"sò¨Q£?É A:9za©qÕUW1"’"„v°-h`]HIpkذá¼yóÈczíµ×Z²ï(TB@1™ÌÁñÌpÆçêÕ«;vìˆêŸ8q¢¹w¨¿å–[–.]Ú¸qãÎ;“%†Á å1={ö$C}’¹6¹ÈÚÆ‡ k†éh\Ù¡C¶Kd œQúýû÷w9ÑŒ†!½e}„€;LÖ ‹-Ú²eKÓ¦MÏ:ë¬F‘f’$k×]wzõMr1™¹Qa(³#ª\¹rÄ]}TÊ6mÚpµL™21Á d m2ö­M¶Ë7º¥ÍmVhr‚(ùÍO…0`‘ ¦ð–ƒšTk˜Ì•¥H›3gNT×)Ûb¨hK"Ì^ƒ ¬G0du´^Q©^!Pxdbp!å@—¡‹Q÷(;«ÇÁâÄeþŽodáÂ…X Ê.ýŽ#ˆ+ 6ŒzÁ«®/?åqãÆ™å ëw•ÂÈ7Ù¦Ûµkç­§%ÿþûïÏU¾-÷¹äPâ¾¶üŒé:e[àÂÑDbѾøâ‹7ÝtS¥J•¨äìH5B@¢G «`J“Ù®‰‹ÆgÎËöû«+›_Û¥7ß|§<ûˆØnÔ­[7|,)Gˆ1H’áÒ4x‹-ÈʣŖ!â„4Xvxi¢ä÷ÒËÎB¤ì:¦-—ð¹‘Ñš¹˜4ì!ñ ½j„€; Dq…íÛ·3é¶ÏªU«N:é$"¥óçÏÇwÞgî\»vmf뮞0/º½ý‰9œ,X€ÁuN⬠µF¬<Øb4kÖ,ÌÂ@örÆœwÞyÔÜqÇË—/ÇåõÖ[oú&*àäôÉïmî+3£Ç%õÁ“HÙuL[zpÀL²-ʲ1#|‡–,Yâk¨ŸB@¢G ‘UÀ9së¿?KYôîÝ?;ót¢¦5kÖÄ+‚èVÁ3gÎLÒuT[ì+ˆ‡À^x!¡fÂ×Pnݺ•-³|{[©,„€Ø)ìúÍ7ßdÜ1qÆl—U‚ÓjÖøå­žàªE ÇfÖûš§õóûï¿GÑÛ_6„6ÄóÃj†ïƒ:Èç¾’?”•Œ ;䘤ìÚËÇÛ–k&¬‹— X6\°^5B@ @ Å´"‡±%¬Ì$®àø¢"]Ù[ð©3dŽ¢÷¶M·œR·¢Ä±¡lÓ•Ç7®”]{;õ¶ÅŽM©—Xe! „ÀÎB ‘ig §~…€B ˆ(ÐZ¡ˆeÍ·îâ—{ù††Æ+„@Ñ  µBÑà¬^„€¹€¬BnÜ'I)„€(dŠgõ"„€È drã>IJ! „@Ñ «P48«! „@n «÷IR ! ŠY…¢ÁY½! rY…ܸO’R!P4È* ÎêE!dø·Íœ£äÆ×­ýE®œ‡Aa7Ý‹CÌcçOK 2EI·¬è1ωÓ¶ ö$µkÝÒ oð¨ñ” ïm_¿~=é \wY/Ú“S²IÑ“.碇 œKÊ Nt‡ÆËogÇ2L_¢ÐV™aÒåê+B¹¹Êá=åÊE\ ] ‡õV©R¥ˆû͸;Ÿç–q"}ÁKò¦{êbf·,Ýg/Éâi¼·³è9z™ %ñM쪷aú\§ÉøIð<=Uˆ >FV3ø±§²b~ýõW¯‚&yò /¼@j„‹.ºˆƒ¯¢jÕªäK8ꨣøéêmT­[·ž>}:yx¼ƒ´ò“O>yã7™taÔ¨Q$çIëˆï"€±£Ðxê©§¦NJÞ òžüñ÷Ýw9¢F}À b&L˜À ÞÐsÔ+(5oÞܲF;½Àf†É÷Nïqb€¤þ&-öˆ#ì‘°s×GŽi?3øvÃ!eÞ 'œÐ±cG³šýúõ#Ÿë(ÎEÜ„\è ­Âƒ>8eÊ{zIc†I²Úp2¸eÁg/»È¸;hl/¾øb’9zoO>·2¡Uð6L"§ëÝû:$iXh ò$xåOû5¶Çè´ºq\Þœ·Ð• X {¹PaÆçí·ßîß¿?9|ì' |ºwïNb5ÞmøúØê9¤µheTÀ™gž‰2å'ÈÐùè£îµ×^ü´LÎA&õêÕ#_æí·ß>`Àc’ð;ƒ7*!g#‹Bƒ¬sO?ý4ú´sçÎ.]ö Aƒ¢FýÈ# 5.½ôÒ–-[B ¤NbNqÉ%—XGÙÂä¿öÞ#t€d¯[ºtiè¥Â¨d8äGš={öäÉ“±ˆd^¢@0+X=î\ž5"‰“Ù~R]1‹ºîºëŠuË¢š‡>{QÄ×{ßhK’ñíË aðuÈx Eܰ O‚WÔ4¬³cËÉÀKîe…àçRÏA#ƒË…5kÖ¼]Úi§¡ÂPF¦|?þøãáÇ£µ™× þXړᙟLfÉPÖµk×c=ÝG6M Ö³!nSKê½™×HõŒ ȉä<*f Ê–-K w5È„ (ì͇~èúrô¡EèÕ((&ÈI‡ütÊ4¶N:phß¾ý‘GIÂ8Ê:uâõfáƒhƒ'ª2—$u„e°o8øF½yóæiÓ¦‘‰1šZ$ƒÞŒ3˜ñ±\°ÌHYÁ„®·þüOcìûœV·65¡—|”¾Ÿ+W®d~@žWfmß°aC‚¯?ëHRXÚAß¾}¿OŸ>ü´Áì5"üêIH§$—e‘ÁrªB… Ž˜;5fÌ–e<¢$<ì°Ã¸ôØc‘‘쪔ÝnFQõt@Mž$4ø¢E‹>ûì3*™é÷èу÷¶gÏžèG=¾Y®ñÍ0‘gúÅ^–àv»$£æ˜?>f†¾œI Þ»Z2 >{¡Ða?pc ˜žÏœ9óä“Oæn& =‚¶½Ñn=ƒš„ܼmƒ÷Ý{ÕÊÁ×!´£ÐGÔ8_ó¨›nôA©B™‡Šá“?ã'ÁË' «@Ìàñ±ãÜöë““gzYð“J.ƒ 6Eeº=ë>Ö(ðR½üï›s¹·Ñ‚Ã,¯\_Ìy¶ˆš2¹cG«O«Ê„9é÷ßï´dJ† ü …'š…ư@1¦Ñ«"!ˆAƒç™GóN~ðÁ>þîgåÊ•Ñø(Q=VÉœ…¬±’¶IDATg”7”ÕdXmÿõwþ¹®Ÿx~¦Õ¸owÉ¢ ÌO?ýD ƒeÉè6΢™˜³:äv›vˆylC+à>ï¼óÐÅÌè†>ßOæõÄrP¬DæYÂú®ºŸæºÄ=Åf6"®>yÁ¬‘½´b…ŠñÀ­‡íá§ù¹§îIH2jŒ¶“·#¹FénMT!”¡ïÙ‹‚އ“æ8Ð 0¬’Œ…&Ì 7òáñÀ*r‹áz)ø:Du|D} ÝkuÓ}ôÞŸAæQbx[eü$x™¤a¬ÙO¿üÆ¿Gž}Ýý³/SWÆÊǾTtÏW‰W£•^{íµY³fñV0Í1ø˜(1íEÇá†G~:ß·ãÉN5[[S¾{çß&qŽ2¦àcb½}Ä1¸d~Ç´B‚ÆŠ+ˆã³ÛÌtrÆ Ô÷îÝšk…ÑK|°Âo‹ºR8¸V¾Ó.öð'»{ f€3hX¡[„ÓÑ“í¿ýÎ?c8rÂtûéýv}¹³4 C´!«FœÇs WñÕŽ„grÊ‹JeÔcã¸Y&xðqÖSC{ä|4ÁŸf™X ^BeÓµÓË^bd@Ö^Mš4Iwbn|ˆO`®xæY)¢.™Ö®]V¨¹#æPb•ÃLÅ蓌Q±R¡{…–½w'´ìkúìEAG ÍÎ;ÎSC VIÆâë1ægv¹ù:ò¾¡…>¢Æ$øšGÝt_§îg(óP1\+dü$xù¤g˜#¿øÂóüûé—_Ý?« .è†IP—.]0„FÏ?ÿ|\½ö"ñ^…Û„öÌ-ÄÚ¬Y3t%Û YrÒœ½Ã .ô¹Y`¦Ôî3 dL±q§Úóã^TÙÇ„Àá{þ "Š>XŸ.ÆuÀT”H’ ªUš#‚M) ßÔŸÕG¡1`[qQÜ „ BX“Ðo »\PCüI¼1sqÁ11ăã_ã_Bw 0‹äv³&ÀƒÌT·Á°ô˜ ž ö\jÆ7MeÔcãø°ó„U*ßÕ¨Ÿx½ñê°!ÎÌ4×’}5Ab7l™Ìš÷?H²;mæŸ-ÄÒQ—øÊhgÖÁžaÜJ6c >ɨyG5ÜNÙ» ô6y+}ô¡Ï^ t,X«áJ²)H’±øzŒù™]n¾Ž¼¯¯mP_…>¢Æ$øšGÝt_§îg(ó$ãÍøIp]SØÕmuðÖ¦,³5ÓÑ„Úw•¥Ï7od”Ñ`^ w¿ S9_Håæx8ˆÙ‚ñpM²^`ÚŽCï< gÀ<99@Ìa  4Yè ü°|‚„¢QdrÍÃÇÓlZƒÅÇ\عhBɬ2LÀáì¦çÅðäÒkÓ^ }ZPLÏÑþ^L g˜Ì}‚÷%ô±‰ï:áU”2“ˆ™z¯é2_[6˜BÓ«W/_}º?é‚I€oÁÁ¼PIAnYuf·,êÙKTvÇ’]nNÈ`!ØQðyÍazÓƒYM¹ÕňâV=σýíAˆJÂ(ôÝmˆE¡ yíqdÛ¤ÏQ_x.y5+ 7ir­²[àµÌØ$ Ir(œØÞZ¥… ·à%vh ³ww–—>ªŒ®IÞ$3LPúQ½Ç×3• 1øÛ†>6A² jÌ$ÐyIhsÜž„…C—¡ô1•¡]àŽjR£Îà–qGBoVJè¼ãÊîX²ËÍ+§¯ìè_OhÈ#JCï›ëø„ÞtwÕWˆbÃ×°€?3\+$ï³ÆÂÃ@dÕ·?29“’A¹dÉæžìø.ÃÉÏQ°£†é|º!¨üÄ*?G»¯¹[+ºUÈÏ'C£B@äÎ*¤mέAJZ! „€HY…t½B $# «P’ï®Æ&„€HY…t½B $# «P’ï®Æ&„€HY…t½B $# «P’ï®Æ&„€HY…t½B $# «P’ï®Æ&„€HY…t½B $# «P’ï®Æ&„€H ÏLM·›(z²ãr`Ù9¢Bë9x™Œ†äEá8Õ˜3&CÛºJ2pŽù8µ˜3ý9Ò5I·t ™ <Ý^D/„€HÌ­Lj“ &×vQHIo)’CÃã$E!i—COÎð3as/YhÈÍrÎ9çÝCüÓ•ÄË*a™L;.ƒBt—P*‘ ! ¼dn¼\2.?òÈ#¾D+ñ¬H•Å÷Í›7'K‡Œ“¤3ƒüSÖżyó( ÌVéJ/gð*ù¶ÈňI³K…Ý]PÕ! ’ e«@Z`2M’L˜}(£7)“¯‘Ìh4ç'Y3½c€9¹|IÒpýõ×[¦6ò1š¨®CÙ>ñĤç¥a§NN9åR]z%‰’–tˆtË-·XCRßqÇ”­‹:uêŒ3>S§N’$Ÿp äѬP¡iâ×­[Çʆ¤C]»v%Õ„·»´$·Áê[!PHd3ÚŒ{§G$:ïØ±#™o'NœH6J“››¤ê$Q-.”E‹‘„Çê)Pïʤ4A±’á}íÚµ4÷™”¤DªW¯n&Á{5¦kº²%õ.‰áà€š&ë,¯$QÒ’´–¼˜Ö/ô–kÚÚ'7nœåì&)Æ gÏžäµÅIZ0x¤c¤;òPz»KWrë]ßB@BB ÑZañÇ?y»?¹|xAÔ=J³iÓ¦ädoÔ¨ÑìÙ³_yå•ë®»ŽJ¦ÃT6nÜ>¡Ü½ ]uÏ‚Hî ƒ«·Œ)„¦´êÚÜSA¶•+W& 7̃¯¬TBi½ ±vÆ ³œ|;wæÒ–+WkAùðÃÇ$ßv—®äpóݯ* ! ‚D)í %5‰¬tI˜nÞ¼Ê#Ž8‚o1¾t"þ"òÜRã\=”£>ì)Â$p_Ðrxà\zçwpøø8Dum9ŸãÙúX%—ÖÛ°téÒfp=š­MXÊ.™­—Ø[Î@ò$÷ÂÛ…ÊB@ä3éÎ#³éA2…ÎO»¨E¦êLÉ-]³Õoý×'³;„½aJŽƒ—½CT×>²$?ã¥eLþþ÷¿ åöæ›oE`a4eÊ”£>ÚK´s\Í¢äÞ¾TB@d†@ÒµB(÷íÛ·3s·KxH̫ΎOÜGì"¶LvÏ=÷<ꨣØýI #AÅ „ò÷U–)Sæ¼óÎc*1^¿ˆa,[¶¬C‡Q]û8$ù#-¡ 60dÈM›6ac¢ºN‹¹ÇHÛ¢E hØdÕ¬Y3¬`(sb׬iØAKœ™ûÏ?ÿ¸I! JEd8âÄ}r²Ü’6' •B@ä Š6çÊ %§B@$D@V!!P"B@ä² yq›5H! „@BŠ(®Pš"#cV‘õ¥Ž„€E@·öeÖižZÀ²¹™¡¦VB@âŒÅ>x;Q4]9åAJ1Ñ ! Š;q‡È*÷»+ù„€E‰€¬BQ¢­¾„€Å´­gD“ëØ «[·nœ…ç~ª „€9@ÚV!§G+á…€B lZr'p*)8ãÚM¢ò×7oÞœ& 'l“#D-[¶ä|$ûIVÎ6mÚtêÔÉåæä j"¾Ý§O’6»¶$ÃA«V­È¬°qãÆ—_~™é…³N&´ÓP {ì1ø°êׯŸËŠÃ¹ßo½õ‰—IÁaÝÖ¤i¤Þ<ýôÓ/¼ðÂ3fXe\Æé~øþøãÍ™3‡Ó¿6løàƒrN-‰KÏ>ûlËê «Pæœ!¸jÕ*ëz2IPF°+¯¼1úöík—ô-„€È"Ù´ ¤X Û™0–³žs§{ôèA4,öïߟ¤•HÏ1y$ï7nœåœáçûï¿?f̘jÕªaœVåäíÖ­[ÓvñâÅNBL®c¬íaQ8ßëBª8 1aÕi(j$Ò!S4ÌÉ¡FJ£á`W*‘ ³ôüóÏ“iƒÕ!EèäÉ“1EX)þ@¤<î¸ã^xáã3}úôƒ>˜CÅ!»ï¾û0س'Ÿ|·ÛW\Á÷ˆ#ÈAÅœ4.ã”÷ß?Æ ÎÁ4¥¡T¥B -²ö÷ (,R4“WýÕ Ar× ê›Ê¦M›’«²V­ZãÇgjo œIQ0lØ0w²46EÌQÛ¬ÜZõ¶Ü¢»±"n`duæXSlªœïÁƒ3Ÿ;w.K„øNW@S[™\i(úã?Þ~^vÙe¬Q(sÂëš5k~ù夢#f¾?a„iÓ¦YN¥-/0$ sêÔ©¬~Œ!É‚Î8ã Ê Ê$äAæï¿ÿžl£dVˆbnmÝ7(ñÁøa{ÌîºK*! ²‚@ÚV-ì&°HÀT— h+AÌd™¿øâ‹$CÏ’‡K¬ žyæ äáaÝ@OéÒ¥Ià'9y,ƒ1C «ŠÑ£G/\¸¿e—±€K$W€Œ¶ƒ[zç§}b:ý7ÉŽÿñ½ñÆäÑ\¿~½im»vØa‡YÁæ IF"fi‚Ï'”’4 hü×^{ [ø·¿ýí”SN12eDµ›á¤&†¹µõ~³cñ„ƒ®W¯^t佤²B à¤m8à"jÔÔ7s7¿FI1‡Åå‚`@–Jt="’Ø2ƒ}J¬ž{¯¾ú‚ .ÀÙ‚ã(áh“wÊ"€ð½`ZpÜÇðG§oݺÕþ\2%Qi¸Ú¤IœiØ6 f2c8s)†¹9Ü0½–b(¬Tž~úi¢ØÒÆ3×U! „@Z¤WÀõª;vì–-[&MšD@õ˜cŽ¡K¼Þø÷ñŠ ÄÉO`ikÔ¨ÁŸ‰3‰ì™ÏŸ?ŸésBùL’ûlÁ‚x¥àì]£Ä0IÞ)ÞÄ#Z€Ãñè"Š-º2‚èz !1ŒúõëGs ûÁòˆ{·>Š9Iëð,!‘p|M4Ù¾};¡, ö†Ÿøµ¼|TB@´× D’ÑÎÌR1 hvï\|ñÅÈÂÂT°cIåÊ•-'Dƒq+Ý{ï½Ðà9¹í¶ÛHjŸDîSO=¿< Ž#<’U™Ø/±ë”m“wJ¨§C`­@´€ xíÚµ-Zàë'•¹nXX)!Vì\C>J~2Çe¡…àÕ`Ms€%Ö2jÔ(Ö1Ë—/§!¦—X N- 7‚‘¹©F!Pve—dÊöÁdÐL™™¿£Rsܘ0{ÅfµS]¬®ù”}ù_[DìÿøGóòûh¢~ÆtêòVÓÖuAÌ£T©RQܬ“@ä ¥_ëU³fMö°Æsó] 2Ç Ð—oÔÈ Â>ä}¬ôS|F ç ‘j§ãx(2N+¦íA2v¨x¦üAÅÄ´7hhBe&†.ÈŒ.ö)ÇÐy+vêºHi`N<¥I ‚׋%ˆW˜$å shÁQ#gù$üE#„€H‰@†V!%ß<' Øjó _â@Úq…â?¤„²¶*Èa³){y~ÖÒ”4"B@7òÔ*¥ˆÐ·ï·ÇQò!°ÓÈS«î‡Ùé7@! ŠŠ+«Û!a„€;Y…|Ô½B X! «P¬n‡„B@ìddvò P÷B@b…@~E› u+j±º¯FùdÙ²e¼õÖ[”—.ýçÔ$yÆNܼf«W¯îر#y:'Nœ8bÄcEr›÷Þ{oܸq'tcàÀÔ´iÓ†«)Ì‘rÉ%—gÔ¸ñ] +l*! ŠL¬ÂæÍ›Ï?ÿüÁƒ—)S¦K—.J2áºuëV¬X‘ÈhjjHáI¾É-[¶È“KUªT‰ª$-3:¼ÄLði‹{ŠåÍßyç5j,Z´&LÿImÖ©S'RÙ3`ubè° ¿M×®])|üñÇäR>÷Üso¼ñF˜AÔ÷«¯¾:~üx<`$FÆ–Y1¬Œ’_õB@BB «@JKfî÷Þ{ïO<ÁZMÆùvíÚµjÕ ÕŒBGVRxâá!+'SxlÆúõë£*Yj¯~÷_RT6jÔèÃ?Ä_ôã?âÂÑðˆ#ްæŒö†Ÿ| ç/5(Кo„ùgm‚ϺuëŒ i]ÙŠOe‚¡ˆD!M2± Lí7nŒß†¬ÂÈòæ›o`.?eÊ”£>ÚI‡ÃçñÇ¿üòË×®]ËŒÞêC+«U«Æ¾&¼C5kÖÄB ÷ {ì±lsúóŸÿLCÖüóÏ?ÇŠ,c `UÁ7VjÛ¶mFõü–úþˆddŰ2J~Õ !  ,„dqÇ#‚ö¨o~¢”™nÏ™3çÄO¼à‚ °ûî»/4?ÿüs°’úêÕ«ó©E‹ƒ=÷Ü“2Ñ*-f@Œ5 ‚É„—!à’÷sÜqÇ‚ž={6Q \Oß}÷Þ-/¯Œí™ õS!P¨ìšr»Ý/þø§“Ëï/Ósâ Ðà ÂÅd›GÙAĺ±·mh¥— ´ [n^JÃ2¿~§Ð«Tr6ˆNÇ‹GõB@”z‰®³Óñ’(pîÔcÖ †£™ÊÌú²(ñ ­tM¢ ^¶Q4ûì“ÂtE5T½B@™D›…B@”T²¶VÈ€XRäŒÙ\¦äB@d†@~Y’¾Vh!³gE­„€ÈòË*pG3KN”‚Æ(„€Åô! „À’®ØÛ´£‘JB@!PBHdRþ±B GÃB@äò åÝ-×€…€1È*Ä€£KB@¼C@V!ïn¹,„€ˆA@V!]B@ä² ywË5`! „@ ² 1àè’B ïUÈ»[® ! bUˆG—„€y„ÀG}Äheòè–k¨B@(þïë/_|ñE®Ê*DA¤z! „@¾ °aÆOÿwM›6m°¬B¾ÜuS!Š&áµ×^kÛ¶méÒ¥!UEI•B@¼@€X&UÂ’ëWÈ‹[®A ! ¢X·nÝ믿ŽIØwß}WˆBIõB@¼@“0cÆ 3 ¬WÈ‹»®A ! Bð™V Š+„¥J! „@ÉG`Íš5ÞU‚9‘ˆ+ðað»~óÍ7ƒGM,ù0h„B@!°Ë.ß|µeóƵmÚ¶Å øÊ•اk×®»þãÿPB@!°˜2e ±6¡F•ÿÍ ‚´íؾêIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ftptest/ftp-request2.png0000644000175000017500000002644412032647162025122 0ustar ebourgebourg‰PNG  IHDRa/‚-bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÓ,éî4º IDATxœíÝ{”\Uèñ]]¤;t§Cb:ÏΣ“΋€Æ®`A"h˜E\¨‹+x#vÏøä*/“„Gx90ŽsWg¼Þ+ŠŽŽ(K„ ËŽA­6N"y§cHȳ;!éîªûÇîœì>¯ÚçÔ9U»ª¾Ÿ•ÅT:gŸ]eOýê·gï“èìì`¨ÎÎΪb÷CUËÿ³tig´í&C$N=g{%lW^e{ån·ý‘°½¼·[ e†<wÕ¶çÙìÝÙìàï‚lv ‘Iˆ¤nM$VFÛ9@ ¹è¢‹B›H$²Ùl>‡ËËkòìƒí{ŒB ìUc3'OžÜW#ƨ©út€Ê²~ýúGY‘)ÏÃ#lDrÉ×ÜúÂÿ>cñ®Õ_p¤¦fXoÿ¾âd”:—ù™¯-¼~ÓÓ™ÞÃZë «:Pý‰‚÷ €âs‰‘ɺ†þ–Ù_}øÀæ·Æœ¬»` ðÝÒqäÈ?9òÅîÀPK—.]ºtiЗT.õÈQ")ĤÔÌ–¾Q#Çwøðá—^z)™L !ÚÚÚÖ®]«ß¿LæîÁÓT¯Ò?ª`Þ|óvõé„ köì¹M1qâÎwíºUÑÔô OƒÛ¶Ý"„˜1ã¡({ F'zé/€³téRÛÎ:íKž×¬Î™Þ4uêÔÛn»íÊ+¯<~üøo~ó›L&3~üø¾¾¾l6{òäI͘¬±qÍøñkÆ_cÛ.#¥JH@ ±B£­Ç:QÖ%”ªªªªªªFŒ1iÒ¤›o¾ù£ýhUUÕ¢E‹®¿þúÅ‹wwwOž<ùóŸÿ¼OÓ2‰L&W ÜÝß—•JöõÝ%„>|ÕÉ“wÉ-#F¬V<~üNëñgÜc=îé¹C>¨¯¿WÝÿðáÓ#®gžyŸõøÀ¯XßñŽû}ºÂާ£æ´i‰SI¤bëÖ[„ÍÍ˧o¼q³µgKË#BˆÍ›¿$„˜=û‘×_ÿ’bΜG¢í”:ÿ¦ŸvvvÊe6(@ ¿52™LæÄ‰£Gnnnž?~&“9xðàüùóçÎ;þü hvÑÕÉ“w ¾JFÇ'NÅãÇשּׂ]=rä=#GÞ#„è팋2@Ö×ß[_ïÑ£§ƒâáÃÿØÐpïèÑ÷}ŸâàÁÁ¸(䨱÷{¿bÿþ/kvL´vwŸN%wï¾mÊ”!C¬;wÞ*„˜:õA·o¿E1}úàëŒÙä̙Ϛõ°8% ±rf“úã´9Öhmmmhh1bÄóÏ?_UUµwïÞD"Ñ××W[[û¾¥ï=Ô{P¼ ×éáÃÓJ&ß~{0LÖÖ®vî,#e]Ý`N©æ‘ ÷:÷—‘r̘ûœ/µ{÷m“')OZ2ç±[¶ H×WgÏ~döìGH" njP t'ϱVéøñã™LFQ__¯nïëë;Qu";P÷û½¯¼»ùìþþ~Ûr µªje"á2Üê{Æ;sî£Ik dâÄöì¹­»û¶I“\.Þ‘Ô±VêX+ ðlõHý0é#³¢?“B$“ÉË.»ì7Þhmm•Oûûû»»»ûëûž3aÉñÅ£_ýÞ¦M›R©”ëU<Öu­šd6Y[»Z.{ìØ·3æ>çÜš&Mz »û¶în{i‘y¤Nû2,ïeÀXê«Z›Ô9Öe¬õ¶~0{²wTuR.—L&Ç̘ôëÿ~Yœ#2É1ãÆO|Çð†š1‡Ž_úö¼Ù-_{íµcÇŽ©-d³ƒIdUÕÊdre2¹Rfýýwåñ6ÆVƒt½ÒÕ‡KŒœÐ8þÎÿuó¸Qõ?øÁûûû¯»ryóû.^sybä—n½äŽÇμ6Ñp͹ŸÊ>ójíËWW­ÿÞ“ß®®ÿyÁNMKÒ"¯nµ®kU¯Ùq%¯nUÇZõ¯Ù±Lšô€ëX«œ"©ŽµÊkvœä•;êX«zÍ V®é “.c­7}ó?^{ð¾Ó¦ö×ÔT‹¾kjFÜ]ýÞ·ûÎZ$þxɰ¹´zmâÜáÙ×V‹ÃŸ=~Ñ·ÅÅO÷MÈf"Z?„#F¬–‡×Ô¬~ûí;]K’uu÷ôôÜ!£c}ý½9O7fÌ}|å­·C£sî‡sýÎ75=¸sç­V˜œ6í!ÙŸéÓÚ¶íuîÇÌ™¿ñÆÍV˜”s? ìyE @—ÌDÂyFuˆ?—™bú­·×ô%6Ìo9¹«{fòêE‰§ž.ž8ùú¥}7Ššÿlî×Ëý‡G‹¿UW¯H<ûO?¹äÊþþþêêÓM%+1L·ZÛåu­ÎÐ*¯ku­óÕÕÝ£î?jÔ½¶F¾O}ê_ll\#· u]aG’Ó?¬ýmõH‹\dGÝî¬G¶´×ôâÛÍ›úÅÕŸ¼`Ìšì´O¿áXò¥UGþ¾á¬>Ù·rõ?]{ó_Ùš.²Ù,é \¹ÇÈ?þõ¨jX¸ü·‹gž{Ý%­ù‡;×,»@Œ¬Éd²³k6ˆÑÙ#'Äðáf2 6dÐP6òL#É #LCÝcd͈!ÄâsÎB<ñÒé:'²¢AŒB$Fˆª€òçðHfG; Ý#‰•¶¨&Ô£íCøy”·Á<²³siQ»€qcd]]]qû€!zzzäÆZpGŒÀ1wÄHÜ#pGŒÀçý:R©”ú4NË-êƒÐgµ5îlÍõ\©TJÿ¤9O-õt9Od½‘ü?É@l§ó?{ûÊqO+õ+2ò¯Km_è¡O‘J¥…Ø@lÜÿD¢) ˆÜ÷Ñ5±ˆößy [hÌ?ÎÙâ™È;E¶"‘ýôjßz#ÎÎX¸vO=£ºgþ|ÚŒpüJK^õHëKÓù-ŸOk>äq—FòF|šõ#®Ÿ¤­WÑ~æÖ)r¶Ó‡&Ë‘GZ_ˆq'¯ÜÅ5LF{ W1`f}Þ¯ëá2b…ëpž£ÖP9Ô#½„ŽgøÚ-¿ÔÇúzäÓ«Ä[NŸD"@=Ò‹ù†Z#,v_"`zêM•LJŠl~¤ BQ5I;…9‹-UÍyÙQž¬Ï9¾kt½ê‘qœL–WŒTg;ˆàßÚ)…Úš×õ,"ïq]×Ëgòçÿ9Ø®u}#úŸdžŸyè6¹®@Jtvv îò*åñ.@Ÿ¼dgg'kÑàNw-:Qj™„רläï"è´" ÷™˜ö. `k`ÆZÈ €»ÁzdWWWqû€!æÌ™# ÆÈÖÖÖâuƒÈz¤`¬/¬× @iÙ°aƒ×K7ÝtÓúõëåcb$ -Y²$ç>ŒµàŽ €;b$¸#FàŽ €;b$î˜ ¨87Ýt“ÎnÄH@ÅѼ“c­¸#Fànp¬uíÚµÅíÊI[[›ëvþ̘¯££ƒ5Í‹¶¶¶ÖÖVnÙ  DÙ~≑qœrËæ]Bˆæ–)q4s´··ëܬÛ+ˀȭ]»V?´9¿ÄbÏ# •ÃüH(Bó»Èù >Þkvd€D…°•»ºº(@(!ί¬cä–Í»î¹ÿ.ùxÅŠ+V¬ dVYž,v/ ¤12¡Ô® ?þ¸|zÇ—W=þøã÷Üa²ÒM(]~õÈD"ÑÖÖ¡>Íf³ší6·L¹ãË«V¬X¡n¼ãË«(LV«ÉE:Œ’J¥„ét:çžž1RÈÖÖV9VÖÕÕÕÑ‘&Ï{÷%—¼ÿ"!ÄÆM¿WîØ²UÍs9{¥¶#_ ÔsDBfHF‘R>È&sŒµ¶¶¶¦R‰T*ºª$ãâÂsÎ=°çxγ٬Œdփв§%F„¨G0Š ]Ÿ:é^³â‹nËæ]c&ÖZOÇL¬ WŒtDÕ-êC´fN( õH†pˆþa2ÇüÈ®®®t:«HÛ$ŸØùÂsëå@«´ðœs_xn}sËuþg´QÇHåcÿ-A[s}€HP`¤gŒ”±§£#ÝÕ58ù²½=¥B¼RÆ-›w½lÇY¤”[üÇc­£Ô}\‡^‰‹1¡  Ôùå‘¶ˆ(@¾ðÜz×—^xn½ “Îóê¤}®/ÙòHý> –oPÒrÔ#­ˆ4@žÜÙtrgÓϾ±Eñ³ol‘ÿäÆž[º0)†&ˆ¡ã²`¨G(]¯³#ƒßÉMBˆCGN:rÂz`ý{ó•Fýe ”¬K^m[„v̳Že|µ¬+ZnP¢¢_‹N޲Êè(„¸÷žwÝÇ'•´0k‡×gaÒkxV ^"ÕJÿ·†@È ”ºèïû!“H[^ýÛ%ïüÌ0N¸z¤Ï¥ØétÚÿBmŸ¼.i º¿!t¦?¢µ½=üõÜ1Ò6÷#=ÉMQ6³…¾ºÕ+¨Û}”²mL¥RþA%èþÅ•sâ3‹þ÷ÏÚµí¶-Ñ瑸±ùgߨ2zÔ!Ä®Þß¹îó©/|$òóÂ4FÍ”ù¥~Ø º?“…¾º>âÙÜ2eËæ]¸±YV%÷þþç>w|y•à®Ë üæGªÙ›3v:s;¹-Ùuæ¾>ÍÚÚTtm @´¢Ï#eð“ëé¼»ë:Vë¬då4?R HÎÓöj$Í:ƒ«|Õª¹}êw‘×c§ècdh;¶ì}ý•mÛýV&ãr}iý¨‘³æ5Ý:«ðC> É&ƒÿäÏ6ëújˆ³øð|tuuuuuYw²r}ìdJŒ\÷ã—þ¶û-ŸŽ9¶ñå×6¾üÚ„Éc/¿zqÁ:†Ðò¬Gz ]Ætxž§‹)#y·Gù½d{ìuˆ)1Rñ܋ߕÎ[â|uã_6È7|ä³…ëòg™gTz¸O½ÐÓÕ¤>“O(=ÑÒÏ ¥cd µ^/¿zñܳg|õ¯÷ö½ùÚÖÇÞî±ípÆÈú«.[¾pÑÙS›ÇGßWÄ£të‘®ž1…(Í)\g äÃ+ƒ,N=2‘H´µu¨Os†IüæÌXè|©eöL!²RÔ§YMŒ)±#_b®ýZtâT€lmmmkk“™DGGZñ3Fֵ̞Ù2{æô¦Yò߄Ʀ MBˆ—ñÚë;^ÝñÓþÒëÔÎ2«Ûýo§è¾Í¶X'ݦt×ku^žê?éÂõUWærÈÄÑ¿«,&è“Y£ëc¯Cb‰‘ÖYS©D*•ðí dËóæÏ›7Þ_þüg˜”ÙªäzŸHŸW­}¢ê*Jz½VŸ0éšêÙ^Õ|É¿Yõ%ד  º¬["}ì¥×ì´¶Š@©Þc=B¸Œ©~ÿ‰§æÍŸwÕò åÓ¿üù/ÖcáΕ0g̳݊Ùyˆíî":AÔy{g׳X­¹Þº<„«Gê4F2GBgÑ;–½–t`è¾ð®cÙÕÕ•N¹#GW×^ÎY·ùõ76¿þƶµ½dÅ«–_8oþ[Êr¬UÖ#‹Ý ^W´-FæÃšû!Ÿnx±sÉKs%ÃŒZqôÙMÓY-8Ûô?Kž}0õH&W4(FîØ²W>è=f_dǹëúçv×§¶ý­¨æ<Äÿt¶Kjý·8;S~ÅHQÊó#”%³æG²cËÞÎgK8êX«üg%‘Ϧs†ÉÈ•k†72H¦ :?2Þ©ŸÉ9eÊdùÔ¶ÎŽÜøý'ž²ö,$dhÔ#¢´ë‘K¯H !ÇNi;¥÷X-Üðbç†;ÇN±öD© ›`ƒæG†0µy¼ ~Ϧe,tµôŠËš— æG0ŠAó#CÁïúO_%Ÿvu FéJZ%Ï`&ƒæGÔ#"\=Ò <2]/o:r¸gÖœf!Ä›{Óõ±¢iÚ„bö²’M0A¸ûG–[Œl}Ï9¿X÷뺺‘==Ǽ £Ôë‘\j”…ÓÁ¯´ë‘ùøÖÚïd2—_y±âÍÛ¶nÙqñ¥KvíØ«>®­oü·oüÁO÷o\GŒ,„2È ;::ŠÝyioòc·Bë‘7´]+„¨¯)„˜Ù2]1ªá ÛãÇ¿`õWD‚zdPå·f/`ˆÒž¡ãß{>õ­ŸŸøîºƒ½ã»OÙ÷çqÿýâ¾'¾ú'k‡§¾øž§¾øõÄP9·ØÎèÜ9Vþq¸ÿžy¾#æG0Aɯך§¾øž}¯Žûý/÷¨±ÐÇ´I“l[l+¯:¨û¸ÞÒçÕÐ<{!×Õc½VF)áõZóaK O6;ëŒÐZ!3&^ ©rçGÊ9qj—â}—ìBüay‹âÄíضKÎËvü³ÿ}œ/©QÇVºsVò¬-9²íàlÄg»×;r=µµÅú¯OßrŠ0›t¦’"Ôõ;®‘µÀ¬_ÅíP9Jûþ‘¡Yä¨îéþÑ‘S+„Øfß.¼¯kE䢭GZUF)Ÿ \‹~ùO¸b0€íˆ\…ÎÔ´åõî_=³íÀþÞÚQ³ß5¶õ¼yõõuÅîT™+õûG(3•=?Ò[oϱ=ÛíÝq¼ç-±okòW?:ô×Ww»SåõZ˜¦¬ÖkÄÎÝ{¶÷®ÿñŽì@ÒÚøëgw,\4¿ˆ½ªÑÖ# ¯ða¾­­­½½½gÊÝé©•[ôÒñÐÓ‡÷T=z¬¦ztOr“¢nà‘Èô(vÏ*†áW·ú¾£££Ø^{ûàÏ\ê‘.ÚoùÐÊöŸŒHŽ: …ÙªÚúL‘{VÊ Yº0'ê‘v>ÐÑxöþD¢ªnàœÁ™ÈŽ7bvë¨bw­üQ`š ]¯Õ)›ÍÞ¿òѺ†‘¸ò²÷¢ÑÚþÞ+š>ðñW\}žºsb(ŸÖK^‡{í#”5ʽš-?Q­× yªÜõZ²ÙìšUNœÜxÉeîßw°¦¦vþÒ!Ä’«š—\ÙÒÜÒäzˆE î\¡4¡ÜÉy¸W˜T{-¯Z–È&˜ Üz­å#Xý/“›&^¸ôüƒŽ>b×Îî9gͨ–YrUsuu¼%XVN±X¿ÎJ·  œxe¥º^«Ï@±Or¼òΧÏh:Éâýo¬U¿mëΉ“ÇN™:éöÇfûD/[žç³Q_vèÍuÕQÜ|š-¥{E+€rUV뵆¨d­ºó¡a‡çÁ‚}{444lݼ}ƜɳZš‡ æ`V¹M®m£Êv[Çp®Œã¢M©ÏP6ÂÍ,«±ÖÕw=\}xîe×,øù“;êëëwïênj?¥i²þøªÎHi…\nê‘LPéõÈ5+­:0çÒk¤×o¯ªªZ÷äÖÉÓgÍn®¯¯‹ðNFÙ¡\/^µe¢¡ÓÍRG=€QBÔ#Ë$Fþû¿>ÑX³èò/ظag²:yôHï²OΞ6½©¶¶6hS¶Â¡fÖhí¦+dî$ÓTèüÈdïôÖ §mz©»zXòȡޭ˜uÆ5#GŽÔ<ÜØ¬Š£m’†×\çrxÝüÈÙlc~$CTôüÈ=ÛŽuýr{UUÕ˜æ#ïûèĉ“ÇO˜8¡Ø‚d“ÌPÑõÈl6³ï‘ê1»›¦ç»Ô××»G  À,Z¼÷Óë2‰3›|üƧÎ}w2™Ì} âG À4•Xlœ¿/)†}ê³×»#°£ Àáê‘F¯! I':ny½ûWÏl;°¿·vÔÀìwm=o^}}|©`Ü+3X°ÚŽ9Hëa”-pÿHO½=Çöl?´wÇñÇEÏ[É}[5œ¹cá¢ùÅîW™+ƒûG–n CȰTàE¸¸¤‹;º_Ù¸{ýwœ8~ú¾Ê¿~vG»T!¨GðR¬/‡J¬Gúèxèéï>ºñéÿû‡ì@²'¹©'¹I!™žÅîYe  À=?ÒKû-:Þ;0"9JFǺs„"[U[_Î Ü…l€ *z~¤—Gèh<{"QU7pÎ`€LdG1»uT±»Vþ˜ À(åvÿÈ|d³Ù5«7~쥗/Ý¿èÀsÿçM¹ý½W4M›W×ÜÒ¤îœJ%Òi÷eá|^ÒÙMóð²Õ­©TJ}šN§ól0Ðy­ÓÙž‘ÕÛ'#Ìè`² ÷,Ï<2›Í®YõèÄÉ—\váþ}kjjç/B,¹ªyÉ•-¶‰Š „þò¯GZñ@Ž·Ÿ.„"~8@ ©Üù‘N¬þ—ÉM/¸ð¼ƒŽ>b×Îî9gÍxõWÛ–\Õì¼ÕF*•§>5í“Û…’ Z[¬§Ö!^û Úù‘jž¤Æ¯áÌýÒÌü±Ú·mô:J§Í@S›"§TáæGGvuyþó±òÎ'Ni<Éâýo¬­­Ý½kÏ„Ic§Ltûc—»Þ‹J3צ¾$£ üç ŸêSÛ>+Âzd*•²Å?5¿Žpâò9J}ꕺɗ¬«;øœÚÙÍŽ¤¬ê‘á†èVÝùаÃóο`Á¾½¶nÞ>cÎäY-ÍÆ ‹ºƒB8"+¡QI©f~Ò#y  T>¼@°¶ï çú8§hÇH‰©€—Š®G®¾ëáêÃs/»fÁÏŸÜQ__¿{WwSóø)M“«« ôS@Í# sFÃE2?Ò–HÙò¶Ñ%ÄQ^YlN­Ù&ã«€¿J¯G®YùhÕ9—~xAzýöd2¹îÉ­W||ÚôSkkkC´–g:H6i‰ªéš½… A²¥’ùD£8bqÐQ†õH}ÿþ¯O4Ö,ºüà 6nØ™¬N=һ쓳§MoÒ2ªÉÁRg•Q}Ég:‡ëá+’z¤Nâåµë…3ZŽIܧ.â[LV¡÷B${§·^8mÓKÝÕÃ’Gõ~hŬ3Ψ9r¤æáêè¨õØú¯í%õ©Ú‚×áù¿»É ;ê%0j´S· í\*ÜQ¶=m„x#ÎS‡î€@‚®×Z&c­{¶ëÛ«ªªFO?´ð²I'¯¯¯/v§0XÌsi¯€áÜÕ×íþ×ãx½ªOˆŽé2¼îøáÿU&yd6›Ù¿÷Hõ˜ÝMÓÇ¿ó] æ`½V&¨ÜõZïýôºLbàÌæ¿ñésßL&‹Ý#Áz­ SVó#õ5Îß÷æ+ŸúìuÅv…D‚´.èüÈrˆ‘yFGîoŸHꑈŠüŸ££££ØŠ \=2–ùØšoúïð…Ûÿgç…È&ÂïT¬pó#£‘­ùæÇV|0ç>„ɲgý:#@0WY¸ù‘ÿñÏO}lÅÇÉBˆoü¤õ_kûÇV|0g®‰RGé €i‚ÎŒþºV—-[¶lÙ²gžùé5×\cýWn´öAÙ‹d½VÈ_¸õZc™û±ùÕí7Üð !Ä %„¸á†Ol~u{'…™È&˜ Üüȸ)Ðå) ¥IDAT®k=ç¬ÖG –@$‰l6«ùTçpõUÿcu š¨G0Jñë‘RËÜiy¶ Ã’ë-‘õey6…È ˜ÆˆõZ7¿º½eî´eË–=òàׄ_ºõsê«r£“Œd®›µÝ uÖSçQþiŸW BÉ5mû¨I(a~$CÄ8?Òç+Î5Cm™;mó«Û­XèƒRƒŸ5½¤š;:wv¶àŒ¸^ûDòv*ó#˜ ®ù‘!.K —GZ¬8ä“YZ|2H×—œƒ®>í[/C  À(!ꑱŒµ~fçY_¯DžGæ4¦"VdLcÄz­_ozå3;ϪùÚû‚æ‘Î §öÂÑi–‘Õ®ðB*T/Oõ ]jLuÖ#õ[ðßúÈ&¡õÖ¹ööÁß^¦¬×*ò«G:Ã’W‰Ñë%+ê´ïÓ‚Nàƒz$£Tz=F!ƒ`šÒ®G¢ÌP`#ê‘£§fä}¯ÖÍí— nüÉO~bÛí±5ßœÒÒí©a&²I&0¢¹|ù5?üáå¼ïÕ”–†å˯‰öÔ0M$õÈT*¥>M§Ór‹ú@§ÍÝl[üòjV¿c:œŸ@$Íø1ɹ2WÎëºÚW>Íæ\)LóDAÛ)Ö‡YHFÔ# ~"Ì Õoí ßàÎȧy®T*å\}š#ÆÄ·lÝÿ]ËQÄÀ.™Àˆz$ ÅQtÍÒÔˆ¥¾dm·¾÷½öÔ9©u”­Y×W]Oç H¶uzåÜÙk‹kgüÛwýô\OdÛßç½øN^«(»>޵”«KZ¯Ú»"·¸¶ï“{¹®‚èDjo½ÖÅT_õoÄy¸ó}ÙÞˆë'éú—¨põÈXîûX p÷ë;×' Ú2Q¯o|Íöý›ÕéXˆÝll§s=\ýeàú+AÝÓ¶ÝÿSõO¯ƒå$¿”uîØã¿§újÎ6­Ô}ô{âÓˆþ>:S×ÔÐëlÄ+ûwÉjÙ‰ýûSZÂÝ?’‰¸X#ù·¦NÉ¿@çŠ|ÈQNáó hŽúzÈ–8êȡߋN°ÔÿRößÓgr³3-óoV³K®ÚNkÈ ÝóJ ³F×Ç^‡0ÖŠ¸ÄTô’UÏål-tû²Uÿ^ÅÄö–ÕD9Ü»Žê‹ËF´Æ–NÆYà;Ú:]Îë†JõH¤ó#£"²læ5¬´©w‹ëƒp½*ú{ Í«ä©Ïëö|A÷‰PÐÓ8~ õH˜¨õHU$C²q´o¿õœŒ»ÿ> ±O¸÷¢sFŸ¯iÛKΧÆiõã‡óÕœ“+¼NäÜG¿©|è·£_-!Ô#a–ë‘þÔËR„ãËÚù=®Yn´]¡c;JçúÍÓêU¬‡»¾Á µÆ|:cQ¯²ñÚâ¿=Ÿ“êœW¿ç!öQ¯¤u½Ç«·!Ng»ÞG-šª!ܧý¢™èììB|ç;ß,ºü´··Ë?!ëG™­)JÖÜ«µk×Ê¿ŸBÃË?ª•k¯Ôµ·¯mkkS3Eµi«Gvu þ®_¿^ÑÙÙI‰Ézd±{¸‹*° K‚WéÿEŒD¼ \D(X¼ z"ÿi‹0\¸z$×µ".Ü?Añ‹ 18&±^+ qÇ"Gæ¹*Ñjoò«‹ù‘0÷D ü© >Ì„‰=`æGÂ,› :BÌ$F".dL£ŸAJÄHĈù‘ ÁüH˜ˆl€ ¨GÂ,Ô#…z$ B À4Ô#aê‘ A=&"›`ê‘0 õHF¡ ƒA0 õH„z$CP„‰È&˜€z$ÌB=€Q¨G dL´Éý#£ï™J¥„étº‡Ë¥gTׂÎ)d³y~,@åàþ‘0‘!Ùd: ­ým/Ðáú' q )¦Så'\=’<q±~ÅZtÍù¬@¥óÀÙšµQ}Õy"¯6Å©' Ô”~˜T×9$P#©#4& E¸z$1ñ’ÙdˆáV¾G¤ 9¨>Û"âJ±È¬Qþñ{=vb¬qa~dþ¨#b~$ Rô+ZC$^¶±ÍT*m ϵ5Ê„@Á°^+ ùz­)…PBšúÔyyK þm†Kì\»¤ÓOÛymsv€%Üz­Ô#¯ÐõH¯/}çvרãz9¨~›®]›rÝèGùŸEótþ=*S¸z$1q)ÌüH'×Y†Åe`—€ b~$1q‰*ƒ ÁÀ d`—€ ¤ŸAJÔ##î ÀÜ?&*úÕ­ ¸$LÃüHFa~$ B À4Ì„A¨G0õH˜ˆl€ ¨GÂ,Ô#…z$ B À4Ô#aê‘ A=&"›`‚põHÖ¢C\е^«Éø¹P9ø³7ëµÂ E\¯ÕdÅîb'WÍYëBá±^+ B=•‰Q„‰¨G0ó#aæG0 ó#a2H¦a~$ y=2•J¥R)¯§à…z$LD6 ÀÌ„Y {=‹Ê+ÓÏÒl{ZÑKMþÔ}¢ÊÿÈ#Q¢¨GÂD…É&ÕÑN[` w]m5К§Kœô…ge¢%Ñ[ÀõH˜¥ÀõHç`©º=ÐRÿ(×RŸÉ\‹”@i¡ ƒ¸éØ )\³ƒ¸pE+*ö儉1?@I#F"^d“J1qa~$€RÇ5;ˆKW´¦R)Û–t:aû‘ôïX"‘Èf³¥õ¨@䑈QLõÈô)Â-j.‘H$ ëAI<-Î'€<ñ*ØüH5XZ9œæF5óK¥R®]ñjćÌÌ I =*y$âRÈz¤ l¶äÒ Z97ªí87J®‡Ø6¦Ói¼VÆ+?+‰§@e"F".…¼¢Õ TÎe Š>½ÎÕiP&gVŠVOÊDŒDŒbªG¦NŽT5D©/YqÎu£ÊÀ‹€ 1ñŠ#›L+ä¯Z s×ÎATÍâ"€òFŒD\Š>?Ò™kzmŒö¤q4  (ˆ‘ˆKÑë‘¶ò©ëF×ÖüÛñê©'PN˜ûE~ÿHŸ¤íô7ú?õßB˜Êy$âÅz­Jy$âÂý#˜ µµ5ô/ub$âR°vJY5Px­­­š·7ooo·m!F"F‘×#Kšü44ÿ@„B #/²I?€ÒÂ5;ˆKÑçG@žˆ‘ˆ µ7¥Ž‰Å´^+õHÄ‹z$Cx-é³îy$âB=€QôÞ²#ê‘L“s™Ib$bD=€i-­LŒD¼È&˜F½‰¬?®ÙA\ò\¯•éöŠŽ‰¸äsE+#´LÀX+bD=@I#D¼˜  ¸ò¹*bHŒäò ÄÁ ù3P0ù|ᜎ‘ܸÀŸ€rºIÝÀŸ€’èìì,v0Ngg'×µச<Àÿ_[ŒX¸#àqIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ftptest/ftp-defaults.png0000644000175000017500000002244412032647162025153 0ustar ebourgebourg‰PNG  IHDRa{2Ë|bKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÓ'-A96 IDATxœíÝyå™çñ§º©%ÔjYB·Z'­‹cWî4³fÆ0LÀ„í`¼¦5ã“Å22XÀ  qyÂáðnt‡×1¶ÇöøÐ2aÆ@®cÀÝfŒAÈBGƒdÐÕ‡ªö·•ÊΫ2+óÍÊ·úû …]••Ç[…¢~zÞ'+3W( W(êª=2ªAýߊ…d÷›Ë {;ûœå#a¹íU–Ü县$,¯íåÖ_†C €·ÇóRéþRièߥҙ\1'õas4—{ ÙÁ rÕUWU¼m.—+•Jq6W§×ăãgFŠÈ™w¥nR±¿¿ÿO2¹¯±qlŇŒ,]]]le%SÌÍ܉âQ#n½ëÙÿsþòý¿>íXcãy'ÿã{ Óydäç¾¹ìÖ—ÿ¥xâðymãŸWw¸á3© €êóÈÈúq̓­g~ýÑÃ;ß›Ø?fÒÅgÒVÇŽ}íØ±¯U{€ŒZ±bÅŠ+¢¾dçÑ/õ"3ò ZÆUWWwÙe—Ýzë­Ë—/ïíí9sæ¿øÅ€]«"²¾þ3gî¼Ï*%î‘Q£6ô÷ß§–Œ½Ñ¾á©S÷ZÏ?“õøøñõêASÓfûúGž›qýЇ¶X¾Çz|Á µ{÷žKÍ9s‘³E¤ˆ¼ùæWDdþüGÕÓ]»ÖZk¶¶>&";w~YD.|ì7¾,"‹=–ìØÀtÁ¾, jeUMF H º†À™b±Xìëë›0aÂüùó—.]Z,9²téÒÅ‹/]ºôâ‹/9DOýý÷µA¥c_ß¹P¶pác‘ ›=#ÝÉÃw®U9uêT±X‘¦¦&ûò¾º¾Ò™q¿;øê‡ç_288èØPM´ÖÕ=ËyL·ñÞ²ë„dŸkdúô‡Þ~{]oïº3vzÉÂÖé;vì8yò¤}¥ÒPYW÷@}ýõõ¨ rpð¾o€h=HÏ3]xdä´)Sïý_k'oúéO:eÊ”ÁÁÁ[®_5ÿ£Wo½.7öËw]³þº9×¼òò¿)=ùú˜nªëúñ¾ßÐPùýCÔ ;mH‹:»Õ:¯Õ~ÎŽ'uv«}®5ü9;–3òœkU?‘´ÏµªsvÜÔ™;ö¹Vû9;­¢ýG Á<22'2÷®¯6ä¶/míßß» þ¦ËrÛ¶’ô¿ñ±Û¥ñŸçþ×NwVç~õ÷O\sýàà`Cù]år¸3LM·ZËÕy­îhUçµzöùÆÛd_üøÍŽ&LØbÜœ2e«¸nêy…EýüÃZßÑ´¨‹ìØ—»û‘­­Ñ—€á CFµ÷y­§èüÒòO>ÝÛ:{òòìŒÁ/ü—ñ_øçÁ)ÞÿýÓ}ÿcLóæÁyóVõ]²á··.)"ö€ N½˜~­éÇ;Û.[2ûÎÕ ý‘‰[Ks>;ê¶“õÏo8ö·Í¼ÒÐ?ðî̆¿¿yí½÷¼Y?JJ¥å Vygä+|_êš—­zqù‚Ëo¹æª­wïÖ?"c‹ÅÒÂ1GšeBéXŸŒ]Ù/Î;oؤ+ fÄ,© ,C½3²qt³ˆ,¿ôrùÁóçnèœ+I³L‘ÜøÑIPbþ<‘_'û3tgFær$¸wÀÈ‘…>b²c¨üwÔ¶¡:²PXQÕa9C9nܸꎀŒ8~ü¸zÀ\+ÞÈH¼‘‘x##ðFFàŒÀ›ïý:òù¼ýiww·ZbPñQ;wïÍóXù|>üAË"YöÕ=õFâ’‘8|ô”ÇTæžVö¯ÈÄ¿.ÃìÐñ…^ñ!òù|¤ˆÄäÁŠ”¦€*ŠpßGÏÂ"Ùo|÷!Ñ?çy&±KdÇ&j'jœ~û·Þˆ{0ÖN<‡g?¢}Íøö™àü˜%V?ÒúÒtËÇÙ[À4©îùÒDÞHÀnƒßˆç'éU²Ÿ¹uˆ²ûÔôá@–•©#­/DáäW»xÆd²‡ð¤)€Ãì6àýzn®«²Çœµ€‘#B?ÒOÅy–Â×ní•>Ö? *žùôkñÖÒ§‰ˆÐô“ý ÃÞ#¬öXà˜zMêMÕÆ‡ Jì÷‘*„’ÚU"ûIç(ŽRµìiG1YŸ³¾stýú‘:Y+#í¿vèßÚyûÞüÎg‘Øóºž§ÏÄü98Îõ|#á?ɘŸyÅûä¼V#P®P(÷Ô£6B¥6Þ„§îY(¸ÞÂ^‹NL«$üfeQ¶QE•}&Y{æZ†¹VÊ #ð6Ôìéé©î8ȈE‹©CÙÖÖV½Á!ª)̵à'ëµ`–íÛ·û½tÇwtuu©Çd$`$ºòÊ+Ë®Ã\+ÞÈH¼‘‘x##ðFFàŒÀ €7~ qî¸ãŽ0«‘‘€'ä<˜kÀ €·¡¹ÖÎÎÎꎵ§½½Ýs9ÙdYGG×4‡Fííímmmܸ€qÿ¸–‘:¹{ç~™ß:KÇΑ5kÖ¬ sËn¿*ª¥³³Óñõ¥½I@Ž4Žð “—î»ëÍHQíÆžžŒàþ²Ò˜‘»wîßôà}êñêÕ«W¯^MdŽLª=YíQ@de22gi¿* üqõtýÝüñMÞGLŽLT“Lt^k.—koï°?-•J!÷;¿uÖú»7¬^½Ú¾pýÝhLŽ4Ö ®œ¤À8¾©²­­MÍ’õôôtttGÉ?ûð5×üÅU"òÒË/Jˆ3wÕjÈc¹Geßz)ÒÈ‘ UALTf®µ­­-ŸÏåó¹ŠûI*—]zùá·O•]¹T*©$³T¬tVÔYb$Ž~$C…=g§‚¯¸Ý;÷Oœ>Æz:qú˜Êš‘}‰ý+Ø›µ9QªýH&*“‘===ÝÝÃJºžža<ûTײK/·ž.»ôògŸêŠ:>5Gj¯K¬º³²½Ù“:X$Ó­ŒãÛT™ÑÑÑÝÓ3tM±5kòáç?ýJÆÝ;÷G=mÇݤTK‚çc­­ìëx!}J­èG0WÐy­ŽD‰~%ã³Ou‰\)&ÝÇ sŽçKöM¨SÃå[ªÌ\«•(Q²_Kÿ¾–ýönù×oïVÔÂgŸêª¸1)à ĊsŽ€LýH&Jø:;*üú÷µˆÈûÇúÞ?Ög=°þzuJøª T¬Ö£c‰„εk~c2¨|Fvw—’ýý÷ñú—“ÜLPñÙ­~_¦ö厯à€Íóù|ðtÔõ«+ø ûí|°+;f S’ŸkýËÛç‹È„ñ£'Œ}¼þe÷ù›/}2ñã"›2ÕT_÷ῦ£®Ÿq5öv€$<×:¿uÖîûÿòöùª+yðw¯º×Y÷á®Ë#Fíý>Òž1îË@öd²Ï7ŠW5ì¹[Ç>Q©Úóœ…ö<´ßþ=æ úíÓo‡@$ßTá7¿õùpÏ-\§µôûHÇ—»cê2à«¿âݺ³G½j¥]ÌPñ;´çþýòXî}ÆÜ! [òY±½»¾ñêžw¼W,zœ_Ú4~ì…KZ.i»0ý!¾ŒT“QC%ø ]}ã[ß鞯VpÇnttCZG{ÒtDÖd%#ŸþÏ¿sཀ>8vò¥v¼ôÂŽi3']wÓòÔ†˜bÞ?ÒoêRÓæ1§O ùT–ßÌp|Yxw€§¬d¤ˆ<õÜ?©Ë–\é~õ¥×¶«·}òóé ±Å¬ c~oFÝ<¸f)q¿Ö¨¬õÿÐqÖ )…wÄ¡1##]ëõº›–/¾dÞ×úÖ‰C;Þ|éäéãŽÎÛô‰kW-»ì’Ùó§&?Vèdn?ÒsÖQÓ—xÈ_¤èèØ…Ü[ðyF‰~$²FWFær¹ööûÓ²1©ÂoѼeî—Z.Ò\éG†²›¨µ°ÓeßÅ`—üï#ål@¶µµµ··«¢££;üeÄÏ;®uá‚Ö… æ¶\¨þL›Ò2mJ‹ˆ¼ðënìxtcÇ/öo~‡vßÙ¾<øvÊ‘îÛìXë¤{ÊÔï##qŸžü£ ÏW=Eú-‡*­‚‡ZÙÉAe|¬ðo0`0ï¨"s­mmmù|NDº»KIͳm®°déyí¯‰È'Výwû«Ž«œ\ÄÕ¯®å’­‰3®‚´sŸçi-±žz®°«à¹wëÞ0ø×“Á/yN¼#÷š~G ~ƒ~+ûî€êJ㜶6‰‘'Nñ˜Sýɶ-YºÄÊÅ×þðš=#±§nñQ6ó·bvoœ»aöéwkož·ƒ®%•õ##ýê.ÎæÁëGíG´ëÂoXñØB«âýWöÜ•kø}Õ¥1#{zz×zu|Iú]^àü±ãv¾±K=žÛ2ì‘V(:*Èž÷Ïr'bR7ÌrïÓó(î Ž!ƒŒ®&ŒXZ2RCGGwOÏPñ°fM>Ò·¿:IgàTP‡/|LZ£W•m"Z!2À¬;?ÛïØå>Šý^]îõkIÌßG@éª#­¯~ëiøm=çZ·?W¸ù–¿Jj`öˆŠ¿O÷!dxÅoš·6Œä ’YDÀtZÎkU*Î!5׺ó]{öý1Òá§³F:n@A¾ˆ”áÍE÷>–x®_T?²Ú£€È4fdÖo?ÔÓíÏ®üÈŠ²[©˜Q"Í>½fý0‡³öàÞgðQbŽÁªš¬ö( š eäÞÝÕƒ'Ùq¯ã§t–{¹çSÇúVª¹7 >œã”Úà%îÁÔj3RLþ}$d%#÷î>XøÕPóÆ>תþXEdáWÝec2qµ]áéF À\z32|y¤rÖ¬™ê©ã:;jáO~°ÍZ3MdLô#*+÷ýXññ|áWÝS&Í‘CïíßùưéVuòŽzuÅǹr•yFòÙ­Ì••Œœ=ª ?+)=­øxžËš›…ßG0WV2RÎÞ÷ãÖÏ~B=íéñ½O²:;Í»gSÖ´·ûþ§¢‚`® edÑ-‹£ì…Xͽ$€®Ö2²ç…—=~á¢ù"rèCžE¤eδjŽr䡚`¢ZËȶ+.ýõÓÿ>nÜØãÇOú=& Ódz?’®5)ä7Rdä÷:r¦X¼îú«Ed×Î=oîÞ{õǮܿ÷ ýñ˜¦)ÿûûG~úËw_zšŒLO TÕ€$õôô„leå1ÝÖ~³ˆ45‘­sEd|óùŽÇÿ0ÂÕ_‘ ~ SÂÏÕHiwêÇÏäÿ°¯¯¿îÈžù§¶U r“ÿsêŸ~Ûµ×ZaÛWˆÈ_}ýkI>?ìbâÝÝ¥à%ÝÝî*à^9‰÷á+ŸÏ  ìÑÝ›¯~ý5PMj$#·ÝyÅŸŠ[~÷oo¿øë}—„XÎŒŽ%ŽPOñ`=vdžýi"¡UÀØìÒ›éýH#Y-̵ªºÐÒßü¤õøúóî·?¾è­›ï¿ø³sfÌX¶ö) ,ŸÏ©?Ž%r¶òs¼¼•߆ö’×±+Ƕž¯º<¶²¸^+seºŽ è§Zí-+ ÕÝs´KÕ‰ˆìþ³WvïyE–‹ˆ,j¸çØö¡å"âÖ÷~ee–{¶Ó^±9&-2&`+Ï%ÁCrlèC˜Ò³‚MÜâÿ>2ŸÏ‹í–ÅŽ§épÜÝÓï~Ÿîåîëýº7LÿšÀî+õ—¶çNB®é8(÷ €)²›‘!OòpÏš[ýôú—Öz,™:~+{ÎÍúe¡»ßéyÇÊ*äÊ2`WáǼI#I¤™ÏçSÎE¿;¬¹¿ñíOýîjš‘Ì(;l»ŒŒÐ*»’U>tdz—_Ýòâ¯÷]òÁs³þ°ï‚O_÷ÞžùfÛª¹ó.»zöo»öî:30çÂ%"ïV|¬²Áà(ò*+ICpe»²8ŠÂH;Œ4ÝýHUSž^·ØªL{¹éY‰zn¥c‘Xõœ#±äl‘ê.Åý6·ª§anEî·[ÇÜõ^˜m쨅~äb±T)Kÿm’ˆHNJ¥âMËþ¨Kqèqçç¿íÎ+-LÝ!äÎ$Ï”rôCV~ž¾l X9êH”dû‘öl“³•¥âxÕ*:óù¼ý±ØâнUÕ©äP¬ð°zÎî†ßÜZþ.âaöàyÐq¶Rf|©l»ó ‘MêñÀïÿQäb)•Î>Þd=¾HþñÀ["ÑghóJI{¨Ð²ÏU–}àÞJluaÀÏ?ìUlðäp˜1ؼÃI]¯Õ* íKÄ'äìa˜ê0Ì:á+û×½çÊ4ÿÄ¿ žŽZ-©}RG"ƒj!#UQ8}vÈœ^³ÿ@—üǪ։ô}õ#Òõ{ûrÅ}ÚNÀ+e×q¿0×°$üVavfÍ€C[ñì·IT þ>Ò]JŠW|FÝOá¿ÄË®ÐËŒ™‚ž'ÅŸÏ UÅcNdl€>Æg¤5k:¾÷ÇzqììãEds¹øŸ× M’íG:²0N1 ­Gqµý$vTxnÉqvëÞgal€>ÆgdÔYÓŒdú¨–Œ_aÇóŸŒYbúÅRÌZøm°·HÃ+»7 ŒÏH•yîËË9”]ú${ÿH{)©G5ulUõ\´—’žsö3eì¯,ôÜ\†—ƒÁì(mfDÃÏq,Ç©:„%2ÈøŒTʆ_ð ÜþW·˜Õ¤#Æ‚ÏÇñ{5üVž‚&rM¿Êε/¬`ó0K¯<’€e TWddííÜ’B#®× À\Z2ò[¿¼Â—¾ú?u”ñ~¤q¨º€4%Ÿ‘ߨúÝO¯¾¡ì:ÄäÈ‘l?2}\–±ÎÈïüöO¯¾aÊ”Éêé¡Cºýö¿þö·¿£þ×ZþéÕ7“#йդ øŽŽŽj@$_Gª ¼ñÆEdåÊ•+W®|òÉ_ªÿýùÏ."O<ñ„–¨y5Ð4·“–~äÎ×ߺí¶Ï|ï{ÿW…¢Ým·}fçëoµ.ž£ã¸È s+HÐu^륵=öp´óEÝ7þ-WÙÍí¯Æ9ÓŸ9Çdz?Àˆ¥å¾ñËDKñ/ßÌ-2‚Ó^˜H×\këâ97ÞxãcSD¾|×쯪…nî WZün5gEiøŠÓob«5ƒoàðÆáVýH#V¨Œ ˜$kóšOm]ú‘Ì¥%#[Ïù–¼*=MªŽ s{¦ºû‘á÷¼£‚`® תDºmPÀx"0ä aÐ`¨šêG"³¨&˜([ýHÔú‘Ì•pFN˜]T7ôxzñq¹vháO<áXí[¿;«µ9ÙC#›¨ ˜+áŒ\µjåÏ~öó²÷XžÕÚ¼jÕÊdÌ¢ ÀPÉϵ~p£šÌ.œ‹Lɸׂ®û~ ýÈ â–ÑȈžžžŒO2i¹ï`áŽüdÿËŒ„vªYíQ@dd$Ò@5 ÀDd$ô²*Hú‘ŒÃ9;Ð+©3Zóù¼ýiwwwÌF:®u8ÇÓ*²Fâød$Ãju$´‹ß´ò@Wdê–òá*PŨaÔ‘HC²¿´×Iö<ðKw¼UÈ:Ìo'Öþ ý¶ ³ÏH³ïŠšˆƒ:z%ØÌçóŽü³×—⊿xˆ³•ý©_é¦^²l_!àÐî1„}ÈHè•È­ŽÂ1ü\¢g>Å€cÏÁíÀ *¿¤«@|̵B»D®×ê(­¬úL*– ¶ò«b£îJG¿°â)YÈH¤!©~¤çeR¥aÙõª©ºZûÀ\+ôJ¤f~ÕoÏg"íY݇®â[j ½ìGæÏ²–8š‚!k©Ê¶¯FcÔ >tÅ  s­Ð.Á~d˜åI-ñ\|>Žß«áÏâ©``á?QQG" \¯€‰ÈHèÅõZ˜‹¹Vè•ìvÊz $2Ú%ÒDRÔŽŽŽŽj0‰4PMf ÿ^B¢ ½èG0 ½h}0 íâß?ª‚ŒD¨&˜ˆŒ„^ô#˜‹Œ„^TÌEFB;ú‘ EF" T“LDFB/ú‘ÌEFB/*Hæ"#¡ýH†"#‘ªI&"#¡ýHæ"#¡$sqo,hÇý#ÿ¢B¦‘H÷DxÜÿÕ²fÍÇæZ¡ýHæ"#¡ýHæ"#¡¿`(2i š`"ÎÙ^Ö­qú‘ù|Þþ´»»[-±?³“«9–oå·Ûð Ãý $²Û”‡Œ„^ žÑjÿÖŽú îN¾ÇÊçóá°[£/·‰ü®‘ƒŒ„v:~éY¥ÙËþ’µÜúÞ÷[3ÌA­­»õ|Õópî@rì0̨Ü+û-ñLðþ=?=Ï9Öx/ÁMô#‘†ú‘Öwn@ :*Q¿oüûÞm˜U°šƒãpž›Ûÿeàù¯ûšŽåÁŸjpyu+ ƒÈHè•àï#ógÅßO¤c%þnOŽH‡øBÎúúÈQ8†ÿ+~/„%ŒÀ\+ôÒÔô?AíÇrï­âýGªVƒG¥‰ã-Û åÊÞuRÿ-€*"#¡]š×kM6ETÛÌoZ5ê®\MÏT6ªª¿ >æZ‘†”™È”¬Žý;æoý&'u?``¬SÙ{Iÿ= #¡Wj×kµŸ–"®/k÷÷xÈv£ã ÇVaί y¸H£Òº¹çŒÚkŒ3 ;r…BAD~øÃ —ÛGÖ¬Y£þ"Y“«Ž~¤*(¹Ä98†nœÑD1°S4Hç…Ý.½ôRûO?ýô%—\"¸gž7ožâ™gžQ¬pîܹBˆµk×êÜKÌ ‚Í-Zä˜9Èú%ß³ofNíœ÷¹«¯¾úСCÏ<óÌàààØ±c;V­V=pi¶fÍš5kÖ¸ƒˆ (v2—5+‘سH¨R…GÕDjjjjjj:tè„ n»í¶|àMMM^xá‡?üá¹sçnÛ¶mâĉŸüä'«–ûÑÛÛ+ 8ÖÞÈSŒúúú¬sm½ .´?õÔSÖckøfÕªUöùíÃ:«W¯¶ÏŸ?ßz¼fÍÅ®F`+²L"K&ÂU;¹øâ‹­9×­[gMyöÙg/ºè"ù@ï¾:7/{ÈC¿8Y; ;„âÍ’ÁÁÁÁ#GŽŒ5ª««köìÙƒƒƒ»wïž={ö9çœ3{öì9sæÜEO—]vY__Ÿ %öó¡.\øÔIÂSdþXµjÕªU«ìYdÁ‚«V­Z½zµ %V‘¬éޱYD±NæÍ›çDZwì¡ÄÊ"k×®uä’uëÖÙC‰$s Ùã® ªq9µb±ØÞÞ>tèÐ'žx¢©©iûöí…BáØ±cÆ {ç¢KöØ-FÛi«RâH'ö2‰E«Xb¯š8*(’•K¢í›"—Ô\ÖÊ%žÏ>{Rü mìY$T˩tèСÁÁA!D[[›}ú±cÇŽ4©ŒøÅöçßÞuÞñãÇ Z£9Â6¦äz,öÑœ˜ì:¡È~ØK.¹Ä³V Þ}b¯”Ž^“àéÄ+šTÅñÁêÀÀ€¢¹¹ùŠ+®xùå—‹Å¢üñøñãÛ¶m;ÞvìÑÑãš;ê…Z¿~}©TòlŒ >.%É\bNbÆ«jáHV:ñ«ŽÈéAÖìW5 «ìã8ö¾“ Ëz è|îÚk«GŒli–×Õonn=mÂÓÿ³NC›GŸ5vü™§µ·ŽÞsè]‡gÍèÿâ‹/ú°u×7õýÓCßki‰~cë„Å<²Žbu¿Ö¼Òš£%V„iƒµ<ýôÓž:²^bбÎÍqp·¾2¸È6Ͼ×PéÄc@çÖïüã‹_ûÊ‘)“·¶¶ˆc‹[‡ÞÑrÉácç^(~yùsþhËÊÂE§U_¼Kì½åÐeßïøÙ±qÕjè1{ÅÊ%O=õÔÂ… =Çqä‰9Öy:5׿zõêùóç[éÄ}ò°ûzkÁwþ™gž™7ož•NìçæÌ;×~Âκuë.¾øb+‘0¸0ÇïÀ_ÿ Ÿº·h?‹XÍ#š„˜úÙÏ·+¬šÝ}të¶éÍ×_XxøáÓăG_z×±›Eë¿tÛºã{G‰ßµ´,)<ö\~õñãÇ[ZÞZ•ç[ÐÛÛkÏ/~eÏ3t$G"qÇ)9ê^+¬ØŸUGÓ‰_¯‰ûR°î8"§Dè€Àœ°¢ž1(`Bò>Cçpÿk+?5÷ýoëž|Ö~ñä„ãò{#ÿä_ŽwŠÁ;¾wøÈÿÖþåãÓ¦Ýpä¼;ÿëó' !ì¹$"Nu$=·”ñŽΚüé%-?zEuÊ'N»é`óÚ;÷ýQû™¿l9zlçÄ–¿xßm·ÿù+ͧ‰jµÊ ‘w4ùåo÷ˆ¦ö nxvîô‹n¼ü²¿}ÅuóÅðÖÁÁêŒa»ÛŨê¾#ⴡц$‚\ݳࡥ^¢±èâMZ‡¶ !æž‘âÁµo%‰BU´‹ÑBˆÂÈ¡ºöD³sQKã£ÞîIg4Y¾|¹Æµ£ÒÐ#¢w¢_@»U-ç Ät"šŒ1"ÙýyÖßß/0 R„hR„hR„hR„hR„hRÄ÷ŽÁ¥RÉþc¹\–Sì"oÕ±r÷Ú<·U*•‚o´æ&ô²o®æ†¬ÿ ű9õÖë¼oH¾ÑD²™´¥‚¬Ðq¼‰R©*Ù„âÈOê … 1äMhbçù5ZïÖ½ G"‰/1BÄ.9‘+‘ûé·~ë…¸wÆZ‰çîÙ·hŸ3>Å:5V˨)V¯‰u¬r\ã¬M1czPFË Q¬VýB<ßIÇ^é}Ï­MÔ\§¡7‡Uë8d"ø}S÷L'z7áÉPî ²ZÅëõ\\…h;sh £Bôšø‰#êp´ËÞ}+·E^ñkßÉÒ»h\!zMü¤ÿû´½ÿ#é}ÑÀ1¾£ëEeãÍ4:m×5‘Ç~]«Ò²žúlÅQ˜©ÙÉ“õ>›;Ûȯ×ÄÄæpˆMì§ËŠðË’}m~-¢"öà‘gGj|ê÷Áqn‹ç þNÆ|Ï#¯“3tõQèííBŒ1"é=É l˳ñ*)×ßß/„èííåBõ E‚^¨^4Ú÷f¿¡í¯"ìy¿ Šöž¤íU²<t@M@Šœè5©T*Éîȳ™3gÊ'¢I±XLng@ÞÉ^Á€H ÷ШiÕªU~OÝzë­}}}ò1ÑÔÉ‚ jÎÀH¢ H¢ H¢ H¢ H¢ H¢ H®kêáÖ[o 2ÑÔCÀ{ 3 R„hRäÄ€ÎÊ•+“ÝdÃÒ¥K=§ó  ÐÓÓÃíý ÙÒ¥K‹ÅbÀqD,ޝµ§D“žž›Ü¸a«¢«{’‰•# –-[V,kÎæWSäÖÊ•+Gã½&ä’Åþ¿Öf-N‚ÑŽ^@5¢I¥R)—O)`T*§ü§ðäÏû.8ÿ"ëÇ Î¿èÉŸ÷…Ý?9c¯8¦XU–hk³O$èbÕKÓ„åÛk"Õ==åJåÄÅÇ—-+dñ+lܰ5l'¬»ENQúXKÙçñÌô hG¯ 2Õ:Žy¨\âW yòç}B\*¸·¤³Õó)û"ÔHŒâ–:€hj èXò°¹äè–Σ[:ÿý6 !þý6ÊÿäÄ'Þ¹éDœZ‰/È%u@¯ ÍWƒ•™ãè–N!Äž}Göì;b=°þ{ãùŽà+”ùC²ÚJSDà¨a-Ë ŽQôš"Ó¡z9”#C‰âËÂsEáÄ‘¬ÆU¿)1 qêùÉÂÕ‰¢~iˆz 2U¯I4²d¢¶ñ…ß]þní[FŠÄé5)•JŽ)år9Ô²r~ûc]üÖiz»Énê©v4)—«z/Õß¼^çêVÑÎÓqhK¥R©TŠpèMêh]çíJdŒþ÷ÜÜ%„5r訑Cû›×»ÿB|ìSï×¾]¤Gä^Ï€½68Ï¡niÐéêž´qÃÖ÷ÜÜ%;N¶ÿây÷<_üÂ"Àýtи´_×ÄQDQaßD¨ÂI4ꓜ Í F“P÷ß¹òú¹çœ7힯~ëÀ±7^|幃‡û3œ>¼íš+n¸àÂó&wÕ¿¯Ð­ï¡ª¤vÔÉz0fÕl‰ µ¬çž@:™Š&…BaéÒû5Ó‰Ì3§]à~ª{Æt!¹¤±D¨¤ç,Üôì‰9yx‘þ뚈“¹¤X,.]ºT~{îé)¿£ÞéÃGtϘÞ=cúÔγåã::Çut !Öýç‹ß¸«çwõüÛžòÛ´dŸbŸîxÖ½¸pÝGP=³ßyùº&Á¯mˆ$àvƒ¬ÓÞOª^¹½¾¢žM11~É$Âk€DÐ)‹¥RAQ.WuöW­î5{–â7¿þâšÚŸuÜðOqc¿*·ÑÑ"N¯‰c¬Äšèž3øxJ„íjðLEöñ›¿Ñż® ÏLUM¬#®õcðe=tV­î}ß¿¯kÇìÉ þ:Ý›§f õVüÆ’—Ñz CmFÎБ"þå€Î†—^~uËoCmÎqbN¨í*Ê'ÁK&âÔÆ÷:S<ço\²×$é½4ƒÑ$ëäaùãªÕ½ æ/ª¹”<ºKŠ$aC 2ÍYkp¯S½•˜ûf²v’ô^LТɿÛ僗‚uÏã§z’{ºçŽù­0á^D½9ÇÉAê)îÉR£‰ˆq]ÒM6oÜÞû؉û€ŽüÏ*™ô>V®™N´Ë^=Ã4ê%€ÈÌF“àÅ™K&Mš(t\ VNüç¶æ¬'rIôš¢Iˇ]Uê}¬Ü1f’â7·nxé”1Ù+Ÿ]t·Nm \×AZ¢Éä®±2sXÅÓ¢«JÜá/ý¸® ²´DqòÎÃþÄ5òÇJÅ÷r±H9ê%€ÈÒÒ‹Œ¡×MŠª&ZTÖ­ß··ÿì™]Bˆ7~÷†çc!Dç”qIîe>P;DµhR¼øüÿ|üé#†÷÷ô{L.1­Ñ{M8óȤýDÊ¡ŒD“ï®üçÁÁ+¯~‡âå ¯¾²qó;Þµ`ëæíöÇÃÚ:þö{»øo;Ÿ{œhbVê%===Iï*•Šõ­ )—‘^“›–¾OÑÖ6\1½{ªbdûéŽÇ|?Äy½&R…jhÉHÕÄîÐ?=Qúõ–#G›v?ôÄŠ7L/œõ?cwüWßfk†‡?}±â÷ïYgMqÜWÏ}§=õ”Ý3ëx¾ÜW§ u“çP·* ukC‡ ÔNõ—‘ªÉß¾xÇ gýâ©×¼çWAæŸ2a‚cŠãn8îöyÜ·¶/žÈ „n½>Ýç:€È²MdÄr´ýQëñÕCî°?>wÓûî˜ó‰)&\pÛOê°cÖ-…SÄÉ:‡ã)õR~ :ØÓ‰cUŽe=ŸuïŒzߤü:°ž=³aiI-ŠÒˆçÊkÆ‘€#ïÔAÃG5Üמw¨9ôŠ];{áD>;.ãX*`q â8†Ã¬œP{b_§–e«§¶7)&:X#GÖ"qö tiøh"ÕÌ„’ú‹Y;q¤u‹«ß³Á—ò­ÇÈ=CÀ¾%õšý–UoÑïzUÁ÷ôÊH4©iãKÛÖ<úꮆ˜ñ¶1Åy³ÚÚF$½S™eúº&€ ËÂ:5è?øú¦=Û7êSìx¥yÍOöüö…͵CT™¿‡…0'ûU“-›·½¾é@ßO7Wš­‰O?¶ù‚ g'¸W™§·×¤þ2Ÿ® µ2Mz¾þ³½¯7íß°µeTóz!ĈóEa°WÒ{–)?OGA檞žž¤wò(ãÑdÙŸ½wù²G†6|+—!ªMÃÚÞ³LË@¯IãÖ{ Ñe¼×äÞ¯ötœ·³Ph1pþ‰\R¨Ž:kèŒâȤw-Ë D–ÙhR­Vï^~ïˆöáï¹úŠw¤Ãš~ÉUïùд«®ŸgŸ¹p*ÅDë)¿Åýæ¶ËHø­6KtÝC7ÙŒ&ÕjuÅ÷ŽŸØqù wîØÝÚ:lö¢!Ä‚kº\ÝÝÕÝ鹈ûV)ž÷¦)øÜPÞ}›¿Çž«Íj'€²M¾z×ßLì¿pÑ¥»wí?í´¡[·l›yî´¦!ƒ ®éji1Û^£ñ&p˪—4n¯ )©nƒUt"*Æ –ßþµ©Ó:/]0wç»ÛF¶½úÊ–ñÇLš<áó÷ÍPßçÌzìy_´ëf(ŽBKÌÕ¦_ãž›H\ª£I„^…;oÿú½³.?gÇö]ííí¯lØ4mæÄ³»»† ¢^PFÇ-ÍܹÁšAq¶š2Gýº&€¤dj@ç®/}£eï9W,žómnkk{më¶Î®±“:'Ä 2“ùV]è5Dh²bù½M»f¾kñœrߦ¦¦¦Çze┎³gtµµÐ#d™Ä³aÖ1õcœâJã¢×YF¢Éßßÿ`Gë…WþÁœçVminiÞ¿ïÀu1ejç°aîÊѰFbÍ$…dþäaê%€È2MšL-.œ²~í¶–!Íûöxï’³O?½uøðá÷¼½£@âžÍsN÷:Ýw¢ÏÃÉÃ\×MF¢É믬<µ©©©it×¾w~`üø‰cÇ—ôNåµ@‰&ÕêàÎíûZF¿Ö9uìï½mN[[[Ò{”kôš"ËB4ùò', œÑµëC7ÿA颷777'½GyG½Yª¯kPÇìo<ßñ±[nLzGð]×5)•JBˆr¹lÿÑ=ÅúÑ=±T*9ž­¹9Ïõ»7dÍìXD±ò€{jŸ+±ÿh žo¤D¢IP²ñ¥mk}u×ÎÃFÌxÛ˜â¼Ymm#ê°oy–à5aÝQÆô¶J¥’:Oß½ûlß%²€†…hRÓþƒ¯oÚ³}ó¡#‡Dÿ›Í;^ÙÓ~Ææ .œô~e–U/‰ŸKäW|yÔw³eû"ŽÙ¬aŸM±¶°u ÇR~ûSsO‚Ïé˜ßóY¿y PYè5QÛ²yÛóϽÖ÷ÓÍG ZŸ~ls‚»”yF{MÜlûSžEû"Ö<æ *2UØ7äÞÇ ~ûìx]ž‘+Î+ªÛ{Áe¼jÒóõŸí}½iÿþƒ­-£ú›× !F œ/ ƒý»’Þ³¬‹ÜkâX¤/ŽRó0<¨ç ²w÷LÜüùÔˆ8™”ñh²ìÏÞ»|Ù#C›G¾•K„Õ¦amƒ5–Dl‘{MŒ~:Ô§0à9Òj] ’HÜËò"‘§Gƣɽ_íé8oÈ®ç;O„!D¡:êÌÖéÅ7"F{M„­Cœ<к§„Z›çt{“‡õ ZïEÍÓu‚Œ®õÐb U2ÛkR­Vï^~ïˆöáï¹úŠw¤Ãš~ÉUïùд«®ŸgŸYq/›€·¹ñ›-«wÉQKÿuM¬dã`oÝ»BÑàÇx¿÷ê,›Ñ¤Z­®¸óÞñ;.¿báλ[[‡Í^4 „XpMׂ«»»º;MlQû:ZJî¡ãh€¶°®á^¡cC5÷$ò>«×„¡÷âÈæ€ÎWïú›‰ãç/œ·{×þÓNºu˶™çN{aÍ« ®ér—1äyÓ`û­ƒí÷–­)ÖÖ"~óä™Æëš¸™žiÏ^ØÃo ž§Ì„][¨=‰X8£k÷‡n¾1é}\×Cª&³w4‹!»…\’ÔK‘e¡j3”äö>ØF[Ad¯ 7„•…ª Ò‰Ú ‚,TM6ôš©Å>—Ò/#Ñä ·üU¨ùï¾ÿ3†ö‚{èéÖÓÓ“ô.$¦R©0Öœ~‰&#Î>sózs{‰^ Írû·¹råÊ<'³F‘‘h"„øà§guuO§Þþ÷ÈáÃG9ê k¶/ü‰dö/òY;¡ZŽTÉÛ ²!;ÑDQ­V÷õïݳc˱_ý«Øö«¶Á=­§·í9mÒþ‹?6⌎ö3ÎP,[*½uC¾rÙûêò¥R¡\®ùÿiIDATÊÿ µcîE"¯JãÌÉy¯ ßÉ ^ Aeê ×w¾~û¯ï\±kå¸Ýåqß~zk³86æè+íw¥ÿ+_Ù½c‡ß‚òoýg)n£@üU¥0—ÎÍÒ?C4¨LE“omÿ»!#›zóîêèÜÚЪ(!Ä3ÃÅQÑþÆ-ŸýlÀõÈã½ (¥RÁ‘T¬éîgåîdãˆ;V©ÃšèXÐ1³båöÝp¯Ä½NuêÒˆ{è¢Iõ€Ž¢ éyÔ( ´oý_ùþÝòÈŸ®Y3ìÌ3÷ïÙ%®ûÿú¯Û·¿±ïÌ3ýî¬cEÏaá5"ã~Ö>O¨q– ªçq?å9GòÙkˆ)½Ñ$ÂWîç~E!Îw\rûM7Ýtÿý÷Ož<¹P(œñ•»…íÊeíe ëø­>{†ÅÌ~Ý!ö`ä·ÅšÃL•<<‹7ê5è’ó^@é&qŒ=úÞ{ï]¶lÙáÇ{ì±ÖÖÖ€ Ƭ.D>ö×Ü®£ btgâ3Q/)•JöË岜b qs,Ž¿>ÁŸ ËT¯‰Ã!C&OžÜßß_sN¿ƒ}äÎ ÏýN¨±fv—FÜëQìª"ÖÙg½ õš”O²kßOö¿>wX4ÊfÕD1}úôoûÛ­­­cÆŒ©9³#Øt<{Pj®$TŽ }»~ì-®ŽóŒ’*Ÿ˜î5ñ,–Ø?1ퟡîâJÀ9k.ä–ß‘{ŠõØs¢c¿‰ÈLE“¶:¦9xhï.çDOŠ&Çcûÿ:æ©üÚWÝ ºŸr<ðÛ™šÛªƒ¤zMŸwÖç 8ù™hMt<å7§8™T¬‰~ërËñWà÷"ÿ|<':á Ù‰&?¸ç7IïN0W/±¾K…ý¨òûôTÏÉ"`©YɈ<Ê#Ãn°d$šüŸ¿»"ÌìfNçÕÌ…¡{èùð øùè¾ ŽQvä“_¡1ÔüúÙÝã³ü¡åYF¢ R(©ëš/Ѿ¥ñÝÎ><*9þúì%L{âá-ϲ|†’b›“àuMŸ† ·~ ìM]ê=TM¢\Û j ÖKìŸVŠo]îorz×dOÍ^“  Ž1ÏEøCƒ‘hrߊï¨gøÔçÿÐÄv‘Ú{MÜOž…_ÅlZæäS9ä÷Ï^ýGä7QýcÍ53â“ú£É}+¾óÁ%×Öœ‡t’yÜCæ^“üë‡?¸äÚŽŽ³äBˆ›oþ¨õ¿Öô.¹¶fe+ ½&€¥¿j"Éu×]'„X¼xñâÅ‹}ôßäÿþøÇ?B<òÈ#rdUÎë%òå'½ШŒôšlxaÓM7}ä»ßý¿2‹ØÝtÓG6¼°©ûœ)&¶‹ô0t]“ô“/¼§§'é€Feê óÏ-þÕ×ÂúR(ªÕjÀƒ,nV½l¨C@¹­ä0€FF¢I÷9S6¼°)Îdˆ™ B%h”Ô=tÁ˜#RÎÔ€N÷9S®»îº¿úÚ7…ŸùìŸØŸ•ÝYÄšnÕB¬ÝK©Sˆß„-Ê8æ±O$ß‘Ûz ~Œ9"ýEE}Úóze²jbE¿,–=sØÃŠ_.±é¸gv¯ÁtüæÑòr²-·½&@úñ‡‰”«M"\,5ZÕÄbþƒŒé(ê%žO9zP„²b=E‰€Ú #:¼åÜo‰çµWMj e`½&€ÈŒD“ou>ÿÇ[Îmýæ;ÃVMÜÙ"~3¬Ÿ «eø&ê%€ÈL¡ó-ñ¼øÚ‰uUM¬~Uá_ü°Gw¯Ið5¨çAMôš¢IÑ:’; øµø=e¥ ëW¬!È@Ú ‚Lõš %è5D–®^dCÌz Ã@gš£É¨Éƒ÷­øÎ§>ÿ‡ŸÓ/®81ñ‘GqÌvߊïLên×»i¤Jä^“b„³Õ¢9šÜpÃâýèÇ÷­øŽz¶IÝí7ܰX撚6ôš"Ð? Cæ½&€Èš’Þd7DF4²×$é½4¢ L¡vˆ€hý¬z ½&€°ˆ&Ðz 2¢ Œ × ѦP;D@4~ôš"#š@?ê%€Èˆ&0‚^@4D˜BíÑúÑkˆŒhý¨—"#šÀzMÑ´$½È,Y;aL¢T*YËår‚{$ŽhýŠÅb¥RôšÁ”J%{qüä :Ð^ 8‚à@4ôšAxæ’r¹lßò†hS¨‘‘NgDèÇuM€ Ê<M õ > 'È-¢ Œ ×P£dø!šÀj'€ˆ&Ð^@-`É„1äÑúQ/DF4ôšZP8AM` µÀ °€ÑúÑkˆŒhý¨—"#šÀzMOFsh7AÞM` µ@DèG¯ 2¢ ô£^xŠ|nc:È¢ Œ ×MKÒ;€Ì’µû˜Î„“_û¶üâèž„\*Ô"õçØÉ ¶¯¼ö=W¼'"õ¯L jýL÷šl+—S~ÌžpjíÝŠ)r·­g'”Jމ~s"¸ÒUèç®—8ÈC²û¸ë.ØkÖcÅ¿EÔ‹ ­•÷ëò\­guD½Aöœ¢KVÉv ò€ª ŒˆÐkb• ä‚òý±‰¥òË"î$'†Ú®bÏ)ºÈ¢ Lñ;OÇ~`v?v§=ù~+T‹¶TØ5;¦»ƒ_Œˆózi@ÁŽhý"÷šxvdIäÑ%û°% Šhý‚\×įÑÄ}<¶7jÚÁT‹Ùõb/–ääË®n‚œ šÀ]×5ÑÕ<‘ìA:x #f.Q|@C šÀEíD8=nôŽDXëLöPíÙ1£h£±zcþAZsP4šä\É&é}i œ< ýŠÅb¥R®^ÏþMuS§zuGmœ¥âóë˜QOTïC¨× YV±S9‘¨ªF4~5¯k¦Èr"EÁ=tè„M?9~§Žr~•~ˆ&0…û‚F“<‘Ý$Áݤ?Dègú:6AŠ%n¤ODèG½@®Ä©‘N܈&0‚^ÀŽdiØvD˜Bíà •yZ~ÅÄM¢ ô£×@= !š@?ê%2Oo.¡pbG4ôšÈ0ê%FM` µ䜹£ß°“eè7˯ÕB4~ôšÈ*ê%u@4~ÔKd’é\BáD"šÀzMd õ’º!šÀj'2£n¹„‰ šÀzM*ÿYB½¤Îˆ&Ðz €l{3a-È-Iï²IöšT*•¤w"¢X’ª&0…Ú €z*¤kmä’¤P5~V½„^äGµº±ë=w§“P¿¹x²¿A9¦“ÛEDè'ë%äÀ¨œ½Â=Ñ3Áø­6·oizM`½&Ì  ì3«G|Ò“Kò=‰&0…Ú íâ¶äó`ßXˆ&Ð^&ä¶Š7œ¡ý87yÆáÓ¾±¹½À ÑFpå0—äѦP;LËí·jdÑúqå¹d’ÏôI4~ÔKè’ç\’[DA¯ ò‰ã(ѦP;QOärL‡hýè5ê&ÃÇ-rInM õ@dDA¯ €8(™Øe¸6æ‰hS¨ o8šZM ½&â äåÑúQ/½r5¦C4ôšu“«ƒò %é@fÉÚ‰{L§TÚ/”Ëmuß©ú‘/ÓzÖ«®î˜S1ÈFs@ÕúÑkb"–3dÔ°?ë˜S1)ÇÐ…ª ôó«—ÛAºTÚ_*í—„«º`M—ÜGt¿)î5(æ4Ä,ü¶6—(^Zò ~$<9r—‡÷‡ª ŒˆÙk¢(3Ø'ÊÇöy<“bm†Ïžsª—/\>°?I¼RÐŽhSž§ãyd ²~ûáÙïÙD(6íxr‰cÏ™ Ñúéê5ñ‹öDàRsm¦Õ¡³Õ>¬CÉ$W²q’NNF+âÈÆ/º&zM _Íssì‡êšã5ç ¾6ÓêvÆ£ Eá¤>8¦Q5Š^{ƒˆ5Eø¼£üI¤œP·\b½: €ÆE4)q® ëè#Qôd8¢†½C6ÔÚê@î€Ñl”’W D@å t _±X¬T*ÂÕkâ8RªÛ9£Mñ¨ÿAºf³ªúÙšƒ<=y8…˜ª ôKð:ÖS(@ƒ¢j#d¯‰¬Ôqu–’¯°yø2œ jS¸ÿ0€€U¡dþb¢ ôã:€Èˆ&Ðz 2¢ ŒˆyùÁhˆ&0…Ú ò€Ã*‘ív¢ ô£×HD¶WÈ¢ ô£^ˆŒh#è5#b‘e¸HF4)ÔNM ½&È ¾ñ&M õAíà‰h#è5‘áþ¸eõ×M4)ÔNM ½&€Èˆ&Ðz ò€>‰˜xá‡h#è5€:Èd» ѦP;D@4~ôš Êä×hä ÑúQ/ F£‰FÙ £DA¯ ²#+`ѦP;D@4~ôš"#š@?ê%Ó.cí&DA¯  Œ¨7D˜BíYÅ—~À(¢ ô£×ÑúQ/à‡š“!YÅ#šÀzM²!3ŸtѦP;D@4~ôšdF–Jĺ4Êx¿»ÊÌ/hý¨—"#šÀzM2#3ßÃRsB²ˆ&0…Ú ¢ ô£×$c(œ"­DèG½YÅxPDA¯IÆdã«XÞ¤í·F°C@-Iï2KÖNìc:òS²ŸMuÛPØ}pL´6Ôs@~P5~‰÷š”Ëå4äõD+|È]µ?›ªoº–´}à)ªTM Ÿ»^â`•ƒTÜ=÷|¬Þ{ºArIØÅíO)^¸PVbâ“›¦–À(ª&0"H¯‰u“GSEÁ¯´`Mt¬*à†Ì}±ðM ×5 ¨|’öuÊdžŽIíE41¯kRŸ/ýÉ_¯QK@±ÖÉ >R…F„B4)ak'Žù£çʬu&ûYéneÕ»Na2 ä°p’ø? ”Fù#õÜIN†~Åb±R©W¯‰õÉî×Ȱ´æâê Õç䵨ÕC½‡BòÓØý%–ª ôKy¯‰ü2ÁØGLò @áj#d¯‰¬¤qùÁ…òr«qõTM`JÊk'ˆ/?…“ý|O Þ=xRüà š@?®kˆŒhý¨—äG~ '4R×Òˆ&0"æuMñ5è—¢ L¡v’ úÙ—+ þŽh4[ÍDèG¯ ²„ƒ+PgDèG½$o(œ©•¶?Ï YŸh#è5DC4)ÔNr%mßÌŒ…!¢ ô£×$Ÿ2™N8¸"Òó·ðŠhý¨—i“žƒPÑFÐk’Oÿø ^ƒ$šÀj'õµhýè5ɳÆúT£Ñ$Þ=Ø…ú÷@4~ÔK‘M`½&y–¥ÂI–ð{ɹº_ѦP;D@4~ôš _Ði•ˆƒw–ÿˆ&Ðz D&Ò 1òWI4ôš¢Õψ&0…Ú å+Z~ðAC š@?zMÐèh•ˆƒw/ÍêO#ÿK š@?ê%°ð5@XDA¯ ,¤ ‡âψ&0…Ú ¤Pú¿-M ½&pHÿG¡]¶[%Lÿ.²ýî! ˜ÿ ˆ&Ðz ¤YÊ¿-M`½&pHùG!]âWΈ&0…Ú "0$Žhýè5ò‰`×@ }UÐòo€hý¨—ÀOCN2ß Ñ•M‰&0‚^H¹Ô†T¢ L¡vO©ý4ŒG1hüó!š@?zM –æt‚Èv(ŒDèG½rEo0%šÀzM –Âïj¹úÒŸÂ÷I‰ÿAûßN‹Æuv²vbÓ)ýë‰ýåkËî)ò±õ”ƒúÙrì°õJ£MÌ$ù˜Ÿ4mü*sËįžª ô‹ÖkR¾¶¬8«ŸM{¼¶˜"_‚ü1øDÔGVäYÚªhDèW³×Ä~¶O´¦;6òRÅY§:yòGC/M»´} ¹íÑP¦'šÀˆø½&¥-)*ögÕsÆ_*£Å«hÄ¢ éH‰°ŒæjD˜âW;±¶Õ#8Š•\‰–¥ÂÒ²fEoMÍWá(é—x:ÉçhŽÆ·=Ÿo`Îý¥M ×5 Â^ùp<¹ç×ÞKÛ%©"kÍÌj:ŒM _ëšpà' Žó\$û èMN°pÂ7~À®\.+þep1ý'ÃÉÃ0BöšT*•÷!åfG±w‡DÎ%ö¡œ”¿|7Î%nPüÖ2É/ÔçwM4)îëšXäÓP'„\¹\JÏÖ.Y?:&zNì3ÇÙP©:Éùa•8…ÿaz{{…ßÿþ÷…===IíÚ²eËä?Y&q×Käø­'¨‰hRgñßÞCÄ´råJyéëëBôööÒký¸‡"Kül‰#šÀÈê–Nøºï!L šÀj'ˆŒÚIÝðV#…ˆ&Ðëš >Ó‡L¾î©E4~ÔK …¹tB.Ñ‚·†M`½&@£`LiC4)ÔNŸ‰£&ßõ”#š@?zM ßéÓ‰„sˆ&Ðz ôâ¹@®M`½&ÐKK:!—ø ûöòNÂ(¢ L¡v½b¦ަ@£ š@?zM`ˆL'´ž$‹Óˆ&Ðz Ì)—ËF8šÖD»1Ò£%é@6É^Çý‡]¬ãhÍÀA(Ñ‹÷u@Õ¦P;QVùÄï»>Å’°(œ %¨š@?«^B¯ L“ÉÃó€J(ÑŽ¨‡ú š@?Y/!— n8^Y€Œàº&@#RŒéP2AÝM` ½&@#òL'äÔÑúq] ¡9Ò ½±¨3zM ½&@£³§ê%¨³S¢ xèâ—Kø4 믘?[ÔÙ[ÑDö-öôô$¸7È0þ‚x«×„ó)`ÿÀAz{{“Þ!„èííå "-TM<üdþ¨zzœ¢³IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/scoping3.png0000644000175000017500000001727512032647206022616 0ustar ebourgebourg‰PNG  IHDRÃåaèÔÖ pHYsÄÄ•+tIMEÓ /ÄȹtEXtAuthor©®ÌH tEXtDescription !# tEXtCopyright¬Ì:tEXtCreation time5÷ tEXtSoftware]pÿ: tEXtDisclaimer·À´tEXtWarningÀæ‡tEXtSourceõÿƒëtEXtCommentöÌ–¿tEXtTitle¨îÒ'IDATxœí{lw¶ÇÏØ1‰Ø $؉8&! J „J·t´‚.­´êm…úªJw+±Òv·­eUºÝ{Õ]ííÝhWU«U{ÙÛ­P¨@ KÛ­¶”ðHhÎ;6ޱǹLp'ãñdf<Ž=3¿ªhü›ßü~‡úëó;3sæ †ã8¤€þQ¨ª)eîÖÝŠÉyb±¤Û1£HÅ ,e„Â+‰Bn¬¤þÑco¾Nl:tèСCHX2FI Nc2zï½÷ˆ¯¾rô½÷Þ;öæëHLr ‹òðçŸï d’WÕ”¾úÊÑC‡‘_}å( ,ùÌ0IDAT˜äÀ"%2²X,‹º»»;:¬\ÅtÿÆ|ø¸rõ_À"îniYäù¬VVsµ´`”žäqˆ]ñ}©ƒfu³X,--XK fá{ZL¨§yݽΉÀ’­Vœø¾c¼!F°ZqŠ:ËSÄÍCHý£«JÔ±«JÔü‚$BÊdA[ÈyŒ; N@¨qtww[­8YF”ë‡ ;ö±´4¯»÷üÙ U5?ädyU"¶™[¸ŽF»H’EJÂqðŽkww7¡ž^ha$%r?ý£\ƒîøà‰ha^cG‘ûÐ.vH=‚CõI„˜ÈY4Ð?zþìÚ]çÏÜ(:IDAT^x€“˜â¿i6.„vÅ'±·Á š8)¦®2š)›);ýû8ýûâ?¢ñüÙ ¼&Xìlx«É(¥ÐÄI\!$2?R.OhŒm,Ы‡‡ÙH–Kì´.~åbâWF$¦ÔA­ˆXàXú¤˜C¢ªg1úµÓ>L]ãP.€dæ¾á˜¸9)È\ˆÌ„^IV+.lÞÒ¬òª€£!2â$xäÙªÓ¿(ÐeÀ¨ï+Ú>Ïýç‚Ì…ÈLPRUMé@ÿè#ÏVW¦zzãû¼úÊQ@¹o’†>âîîæ~&s,B¼³ºñÆ60Õ×;49v'¥´V§©®/’)åŸIDATk²T/¿a®¤SIŸ}òÏɱ; ¼ÿ•/o]ùòV±©ð{Þ·l†!xfŸtö‹ÿ#6šë[ã÷^¹q‘Øxú‰—–Ï&/Ž“¸Þ³³ Lý÷[ÿã M€n–²7W£mè@ó¦&s•5ˆeDHŸÄ#s—ÈšÊæø]5µ÷’‘XLIIfîæjòŒ¥¼Z±~á’Á—ŸßºøE'Ô7Ô·ØN™”ü‘Hdðš*íh±ISôЩH8N"2wÀjÅ»º©vñ‹Îú†z¸qýÅD|—ª‡ò\Ë9oæ“’gpûÝPŸŸ$üéÿ®¨ýÀöú†zBÄøljIDATLKB~ÄŠØ ¤<€•¨…vX²tÈ’b˜‚22ù/×çÀ2}ïÌÝ\M^ß·ÄvEÙ¢ H1'DYÚû¾6bÛ -œ¾f†)Ø÷5‚))ÉÌ]¸bÇâ$Z؈)~Rr mh•h1Q¢%®j†zÈé“xgîÂÂêF=G»øEçÁ>&Œqw¡XEq!\Ç‘Òò”$¯n11qýÍ1¬n)‚²¬Äk"¾…v5ä4c¢Ù%@š¯q“¡¬n¿èlÝÖ&ìd¯[•bÒO´Á<) ‰Ÿ\Æ’ªs7–ئˆDçnä>‰ =Ÿ‚ ~J ¹g|Ë’#p‚Ü( Òé“lS´v^áIDATg¬Ä6yu#ˆ9¤Î3Ö¶Ý-èJw†#¼’ØÿΕ–šˆ´çnúðoúÂÒÎ3Öÿx±]P3Ó‰”\Q á3ÝØCöIÓw蟆Ó–òI™O:•wc ˜žhA2iVRJçèïúûÓáSë"µ -÷×kµy‚ŽXL]߬bØ5e 0{Git寴5ojH·]’%ÍWRĈm¼÷ÊØ…OlÁ@4ÖxéŒ-&I ú¤Ž·O¹'^¯?'«€xb3/²°è¬3Ý–I ú¤~¼7à‹d+ußÉp…Z‹î‘¥ ú¤wÞêÐ7©œ½e  /(ʹˆ£”IDATÇ¢J«]GRJÂqüøÑ_­6îú^›c“óìûÓDû–ÝeåõyU54e0P*­PHGI8Ž?úN‰ÉðÀŽ­ûLNŽº¡-r½SÙÚ^µewyVÍ¿¥Ò ˆtâ¤·Þøµ©¬d{ÛÖ§wÅŠìÑ‘ñ5k+ªhk{Õ’2ÒÍyÚÔX~/Mç“#`¸hyäµ_TT–mm½Ï1=£Õi‡GJL…¥fãO~UËã매Æ"×ņŒSkÜG_{[å®ßº­Ñ>åÌÏÏì®\cª®©R©x†Ø O&!!úÕí×™å®{hã¹6­V;6:^Ve(-3Ñ®h¼ÁI8¬£Î IDAT”·’ŽyGá\³k£õ°B¡øìÄ ©\_][¥Õæ-éE()‘,—-䜑q«{~÷›õ9›š7ö\Qf)½nßcÏוõjµz郀E*-§n2GÄ>Ié«°l/¿úÏñ,•Òãòí=T››£Ñh8 œJKÉÇE2b@Ä>ibÈß Ã …¢ ÂÕü±ÄdÐjµé6J¾ˆØ'áxÔ1åÉZ5VVaX¿¡É(½ˆÕ'ýüÅÏ¢XdeÕÌSÏr{Q"EˆÕ'éìJP=÷’Q¦ VŸ„4”iˆUIdí¼z寵«}À\MCiÛÛÒm£\ȬÕß¼SãwúÇÆGìÎiop~^«SÍ«ë›*KËQuÊåCÄ«[ ƒ±¥"¥q¯nˆÌA >‰ÕÍM/ÒQ’€ º¹<@«T7—È'-ÕÍå òI‹@usyƒ|Ò"PÝ\Þ %-€s©››vù ÍT’¸×Í]þû£™Š“¸×Í'QêˬY )Ÿ”9usi7ˆß–’RRëæÒ>*$UÑÐ"ëÕmyêæÊù*)™º¹´ÝR†<͸œÈôÇ—|Ý\Nà2¨ž+SŸ$TÝ\†–øDØõÕ'zIDAT=ã›!ÈÔ'¡º¹‚#SŸ„êæ Ž}ª›› äè“PÝÜT G%=ùô¾ú‡¼}ôs7§Óyòäɾ¾¾å±JìÈNI~¿ÿÔ©SÇŽëììŒ5:'ý¶™I›kÒærNú‰F‡ÃqþüùÇ_¾|9=¶Š ÙÅIN§³««kÆ ………—¾ør˶ÍÏ\›š°»ÝnÀ!+K¥ÓéŠô+[iœqz T*ÕÉ“'Íf³ÉdJ·íì”TZZú³ŸýÌáp¼ü£—û®õZÏ^‘c4–””͇‚u.€bdxôwïÜúúúå™ÙɽûöëtºtžéÈNI`4FãsO:K«+IDAT½|ýÚÍ\z㦠uÍÆ®üËÚs±µuû}[6m†5ç>ýÒ?·¶ºz_ûãÛÓm¯8]œÃ3XSW·­ms]³fýÛȰÇã&öîjß|ÿ¶–Y¯ÿÛëi5S4ÈTIg?¾X¤ÙÒd®]x <œs{ÜÁùï ¡Þ»­© 0¯ÿÖ@üáØb@ÐzEñŠ"?N¦Jêï¿m26–ÇZ<^÷ÌŒÓð‘»UU›=m`Šrxìy#E¦ŠBF O%Ýêp8§Û, €Âá†aN§szÚk¬i0+³ð@À¿ä˜‰êÔ’;,Y•6ÞÉ(5ER7ËìÛP((ššÖ €ì¾ IDAT ]»vM¯78°?Ö<±·¶"˪´ñýÅ"#˜’XfßFñ(J£Å²Q¥Ê:}út___·õŠ¥e¡\$Á€Ãú’¨¼Z«Ò.r\Ýrr²sÔ9ÿñ ¥}ݺuÄ0ìýÞ±À@ÿh4‚¯È^‘ü¤8‰D}h—H± )ŸÄ’|]¹¬üæ[}½uµk+È»*++Ÿyú¯×Wf6ÀÈÐX®Z«Ó yY’9ôoÚ®}’Á´ª¾¡.à^ø¼kr”Z;¢¸ÄPS[7¾ùvxpLoXm0­LrFBbT ä¨$غ£¹¥Å2p{øÌ§ç‡oORöºKÚvIDATþ¯­7{¾úÆ 7Ü¿£)Ñ l Ö’7ÈK­žEÙ¢ŸW7‚}ÄqÜúUcÚ¹qÓú»ï‹íê<×e«¬¬|ø±­i´P\ÈWIðè»V®ºúïÞ|Þuê“¿ãQP*:]¾~µ¾yã†m»6¤Û@1!k%@ë®Uµe.—ËçóE£Q¥B¡ÉÍ-((0™W§Û4‘!w%€É¼é&y’èAµo¹‚”Dª}Ë™^`Õ¾åòI‹@µoy#Ÿ„aXK‹EÓPí[ÞHÁ'aöüóä¼/ £Ú·¼½’Y,‹ÅÝÝÝVbJ²ö­„o¨±Dô›Ì0³IDATJ"°X,--X­x7CÂ[PíÛä‘Hœƒßë”’¯}KÀ__ûVbÕp%⓺»»­Vœ,#ŠcZ†Ú·ñiµ´‰¶ ù¸¢FôJ"¾•Žkw÷²ö -ì¿¡jßÂRÙ ñ¢”Œ7"½’`qGà’ÍC®}Ûú¨1¥µoEšuĉÄI,ß¶NFðÚ·,‘ªs’‚OâAÚkßJ¯®D|W¯}ˉk¤‰=¨öm*£OŠ×Pw7ÏÛ,ˆrôIˆT GŸ”$Ì%sVϤ$>X­4r!ÒZd RO(òíIDATq†aD2‚4nìó)Iˆ»´¾J& % FLLòtKHIBBÉo¡Ep1®ä4B’Éwè*€ÀľTÚ½äz¦)š:yø™‡”$<\£%6)Þ‰Š0Ó–¦dî?5åX~ŠD«Û,+0 ›oÚu'ѢƩ³€u›‘’R¬•äo‹² ‹_7@i¤‹0/ÃRÒ²B‚Ä{‹D-)²'ö7™YPœ´LßJ€ÂÐBGXÃbŽ0I±"Ÿ”fؤx/™ôMñ^iÉGJZ&žRbóS|V8Ã8l:“? òRO¸8HI|ùmZ’8#Ã{jl@çna@JBƒÜ9b«ŽIDATW7Ûç˜ðF棵ëM—Î]/*ÖD¢Ñ•…:ƒ±0ݦ‰ Y+ilÐéu-¼ŒûFÏ„ƒxh>4ä°@±©¨ïúpM½9&Šù®n¶þ;¥UTdzª8Ç`ÖV¬Y]l*€¿þùÓt˜&J$⓸ÖO꟞› ~ÈãöŽ O+0ì¥Wžˆõ9~äÝý?hO…µ’D J¸WQž±ÏªÕ9àñÌö~Óç°ÏÌ‚8Ž=ÜQX´Ê´ÀÞö}£ö<­¦¤´(¥öKÑ+ ã^Ey¨:¶=ëõÍzýÁà|â8®Àn·÷§o¾xüÈ» ¦Ñ¨ûÇh•ï¹ÞKgÙŸÇ[€´³IDATM4ö#ãÂÕ½’8UQöyçbÛMN8ŽD"†)0,ÅáÐùÃ÷÷,åÔ¸+~Úä²T\±QaS©EÜlrÖBÁÈÆ­÷Ûÿ\(Vee‘HÃ0À°p(ëüè“mKHÎÝŽOf%o0¤ÀÒ¶ÓÞ|eŸ‰Ëœ•ËlåØ%‘ˆOâZE¹§ë[b#šËÎÉŽD¢U(ªªH$âòOG£¸B…#‘ß¾}2~:rZcüÞØªëÉËÕë°I®eîC;Ñ’‡,‰è•„s¯¢\lΟ^X³¦ÆZ¿/ ÌRbæ :îu»|ûŒ:—¾œ2Ù%ʹGý IDATâ`Èî “|òÿ—StÅûX€’€{åð|îvi¾·þÄ ª×Ñiu¦ðûç=åµM†Ãáòjý¶Í‰FH”±Êœ Ëœ5Ëi"†Ð1ŒIDAT1Yjœ:/‰DV7lÙ±¾ª®dð¶mldrjÂÞ`1Ù§W¯Ü¸vµ/˜«i(m{xSºmô¡bºê..ÿ¼SãwúÇÆGìÎiop~^«SÍ«ë›*KË™mD<2]ÝbŒ…(I仺!„Eî>‰@ØUu o¼ëïCN‡O­‹Ôn(´Ü_¯Õæ 6z¦‚”$0¾YÿİkÊ`öŽÒ>èÊ_ikÞÔn»RZÝ„dÄ6Þ{eìÂ'¶` k¼tÆ–F“– ä“£ãíSî …×ëÏÉ*˜U^€¼È:À¢³Ît[¶, Ÿ$/üxoÀÉV꾓à µVì"Ÿ$ïÝ´¬"IDAT¼Õ¡oR9{Ë4^P”s…óË™ÅR’à8~üè¯V w}¯Í±Éyöý…ìÞ-»ËÊëóªjÊÈãoÓ.Ÿ¡©))Yp?~ô“á[ö™œuC[äz§²µ½jËîrÚ×|KF=dPœ”,o½ñkSYÉö¶­3NïŠÙ£#ãkÖV*TÑÖö*öo‹§Í|%osÍ…]~OZ€_íÛ#¯ý¢¢²lkë}Žé­N;48Rb*,5ò«Z†o’¿Á27ß@Jà[ûöèko«Üõ[·5Ú§œùùùƒýÕkLÕ5U*Õ!6?Ad²Œ­n¼yãõ_f¹ëÚßxîÃÕé®IDAT„M«ÕŽŽ—UJËLìW4‰”ćãGÞQ8×ìÚßh½0¬P(>;1h*×W×Viµy†2™Qé(~÷›õ9›š7ö\Qf)½nßcÏוõjµšß€ )¶xÊ^r"8È'qFé«°l/¿úÏñ,•Òãòí=T››£ÑhXNîàw¡´@\ŽlÆ‚|g&†üÝ0¬P( *\ÍKL­V›n£ÒòIœÁñ¨cÊ“µj¬¬Â°~C#’òIÜøù‹ŸE±Èʪ™§žýaºmÉ,O↾Á®Õs/!Q‘²OJE,ÒP"$«$ÙfÁ¦ i®nr΂MôI2Ï‚ÅIDATMôI2Ï‚MôI2Ï‚M’RR’Y°ž”áHGIÉgÁ"%ƒtâ¤ä³`ã3\YVE@ú¤4fÁ2tKQì4’qJâ‘+ll,`¢ˆ³Y2Cô«ÛòdÁâ$VJˆ[I)Ê‚e8CÎ)·º±Gð,ØD$_VˆØ' ž›¨H-ÐeÇ"(ˆØ'¡,ØŒBÄ> eÁfbõI( 6Ó«OBY°™†X•ôäÓûêò~ôÑGÌÝœNçÉ“'ûúú–Ç*9#J%ùýþS§N;v¬³³3ÖèœôOØf&m®I›Ë9é'Çùóç>|ùòåôØ*D'9ή®®Ým¸IDAT 6^úâË-Û6_}º¯¯¯ÛzÅÒ²ð>äH$‚‡e%ÑK†ã×&NZ‘¶¶Äººåädç¨s>þãJûºuë<ˆaØû¼?b€þÑhqBý/IDAT_‘½"ùIÙäà&*Ä.mA¦ù$öäë Ìeå7oÜêë­«][AÞUYYùÌÓÏx½¾2³F†ÆrÕZV'àì̲ˆ_Ú$/#¯O2˜VÕ7ÔüÁ ŸwMŽRkG—jj«àÆ7ßŽé « ¦•IÎH胀ë¢2¸ V%ÀÖÍ--–ÛÃg>=?|{’²×íôm½ÙóÕ7½áþM‰‰Ï¸’Èä¥-ÑCNñÃÊáѱ®nû>ˆã¸õ«Ç´sã¦õ;wßÛÕy®Ë64VYYùðc[Óh¡|Ȭ;¸ü¸x®çê¿{íöi·ÇGA©TètùúÕú¦õk·íë7*8IDATÚnë䂸}Aë®Uµe.—ËçóE£Q¥B¡ÉÍ-((0™W§Û4!%€É¼é&½ü?L(ÙtaòIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ldapext_request.png0000644000175000017500000003435412032647206024277 0ustar ebourgebourg‰PNG  IHDRksîCÙØsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ (4"µ; IDATxÚíÝ_h+Ù'ð_n ÃäÅ’;š!†õ0/©ÁÛXß’D(D˜H4—ðèa{¡–‰é J]æiÖÕ‚îY‰±[+2Å»—Fî0ˆ¢W²Ú £ŒáJôKX 58L”¶Ì¾Ø/Ét’éœÚ‡ÒŸÒÿ?–}mùûÁvùÔ©S¿ªÒ¯Î©R•pqqA0'† ƒ ƒ ƒ ƒ2(ÀBXÿ0ŒZÆ›,R uw Âð¿46˜q¹3r°´÷¶–ç\¨mdUSë\îPµ7oB¸®2ï\ñ€»Úe\ØïO׌ÁÔ«f`L«Ögªg;S_âŠF--I’”®Æ*l§Fn{ç°u[×eÅ¢ 0wtªž_··TLî8öBvÁ’@‹Ýô\¬Ön÷„ªZ…X8× bµwìÌ݆ç ³®²Ñ*ìlgu½yFdÇ> °}PApÇ"NÎX#û¼ní‘T‹Ä¹3¢FœœS±:¹kb †eÎçï÷´ 1ÉçóIéZwb--ù|¾Gï¤ÿ»7©1Ƙ¦øýÖ¾‘Ñ*Ä$ÉçóYg´v¡ú Ä Ön_w‰æ¿Î‡›4ªòçÄæØ "ѱ¾Ð²ZfQsíFu‡'N¨ÜŒp—$¥_ð™1Ñ@DíA%êäœN›½dcáÂA׿–8e ×0Z‡;I± 1Ó¢÷"NÎ4ÅFnbŠÆ¸3r°÷ú·F.«UØÙÎ6:—™¦ ¤ªgüá\¯€elÙ0jïv®ÑûWدX¯VN¨|꼓Õ3I±@¸wtÎe…»Îtj2¾òZZR4Ü}@4ï(î„’uŒÑ x\‚ Ü¢ ä2¦)~­ûçΨ2öN™þ½N3og‹ÉGjë8«s£Jp ñ£ ݪSžm0æŒä÷Cv£–ö+š9tìê.Eéݳc-à3YWÒɸÊg™wò*s.FÉ—º¬Á„=6Jõj‘8QwŠ6ú óé áÊ3/¹<2çTÌZcGö¸3rpÔ—!æè‰ÚC{©cœ’k0H­§Û°pÐÖk6-#ª\V+û¡v"ohw”›§Ä¹3zÐË®xÊR`låSçj`¥®uY£´î©=T;Ðw@tçÍSê]¥;?ÌkŒ1²ôcÔ8>9…ìÃýÈY–0¹°àN¨rQÑ—Õ„{J…}ÝYƈo8l–¥Ä]cæ;kêDÔ+...…Õv•ç÷ÀuõAA`VÅ@AÓ÷T¿O?ý°zóÍ7///§dP³‚`zöìÙL}PÓÈL{“>øècl3xéÞ}ë ÿ}p;½ûäml9x‰.//×ÖÖ&ÀD#LEX2(À’2¨aÔÒ’”®ýSÒµå½{6'»wO§IJ× £7×Âyzóéç¾ú~Þúaþå¿~úê^}o`jÛ+úêŒ5ù,ÜK'»Ã?ùÕÉîÃw>aŸ¼Ó›þå³ðÃþ>ëÉîÃÝ“/Ÿ…>t¹\ÖÜ~²ûpT'x¸† …ÇáQèç¿øÕ¬v“Ÿ5 ZUÃÉn·wþo4dÐ>U•Y#·©[§ ‚;Q©”ËåR>âäÜÚOeLKV=æôF.ìUI9ˆŠ¤gÕv®g¶³ºQ#"“ýÕ.nóQ¨ð™å³>ÿþ«6§vÖ¿z´9Kµ¯¼™ÿÌþê—Ïrôaþ/¿½ùôó¿Ï¿ÿa§‡úå³§¿ˆ|^¯×?ï”$"¢Â;Oi÷óÏë?ý[êdñ/Ÿ…sßù³Ëøè³w ½ü9¢†q…ÇçúÜO›KªpT '»ïÐ^§wþ_h0È C\ñ|ÄÉ4ÅzA´ÇæØèŸÀ¹œŠ»ÌéœË©½ Í,£7ψ £V-цÃåØ ¢Óæ9¹•J¥’p Â’Ö¥—M6ÃO¾èävÌ.ÔSÚý±ß.Ð×÷Ú|ú!½³ûìÙÓO¿1Ó—ÿú)}çÛÃY<ôaþÍWúú»_þë§ôÝ?¥[khR ã mðSÚ5xµ '4éÛßù³Q§#÷Þ¤'*Ø‚Jäx;›Üq„»Vag;Û`Œ#>gºfšâ׈13­Ú—4ÿý‹?ûN¸×|þJ»yõaþäͧ›DÚ«Oî0.°~’ûÞû¯~Ø®²ß¯~ñóŸò®0ÏèûÆVþ«_üüÕG¯ÌXø£üå³pþO_YF…jxåÍü‡»ºûþ´8 ƒ¶ ‚=¸—jz“Y5/Ò†‡È0Z‡jV'1š7·“Å9´î‰ërê(¾¼N'}ù¯ŸþüÕÈ+íhýßO\Ÿôò5ÿâÙ_mþ镟ä?ýî“ÐûŸ<ÝÎßþΟ…öòWI(W¯^ys÷;áÝ“M³’ëkÒæÓÏ?úå³ð÷vO0x ÐM3“ÿ-îøATÔu½=ᬩцÃ6ßbÁ¾¹%2¦åÏÛ}Ù«ßIt²û½÷©}ð$ÿþ«Öû}øêûù[8î¾C‘7ß|Úw•“¾ø÷öÐð+þÝ/fÛìä=Ùí^‰Yø“rh®}ÏÒ¼šëòå³ðä&Ô2è„ägí¥½„š 0¦%½ùS‘Ó’ÞY¿ôbí«2oäÂÝÛqg˜©ï å¿ Ly‡>üܼh½ŸÆ’=ÂO¾È}öëy–Ò^ЗÏÂïЇO7©}=ÔÌQ›O?|õýïµóé+oæ}öp–¯n>ý—ïäÚ%?{Ô»9²†q…'äÐ|äæ—zæ©póéç‘_|ïáÇOiwr“:_?ý‹xÕŒHî-áââ¢ûǧŸ~:î-h7éƒ>Æ“å¯ÇÉîÃÏa$`Oßÿáî“·Ÿ={6.3â©~‹x€Ü'›O?Gÿ`¥3èåå%Þ³ È óy÷­7ÖÖÖp)AéƒbÛÀm†;‰AAAVÍ}ù>èÚÚ66  € pÅ5ŒZÆ›Ô#"Îу½]@¼&õAVaÇ›,R@-•ÊåòÑ‘Bjfñy^%¼a`¹´þ<Û`,Š»ˆÁÚO˜¿Q--ù|>ŸÏ'¥kƒÉ¬–6ÿ+´ŒV!&I’+´ŒË‘a´ 1ÉúÑBÌçó™…»]dë;JÍÚÚm“Ò/ø ¤X¸¹ jµj‘8—=®3´ 1Ec²Z*©2Ó”X¡Õ«‹iɪ§”89oäÂ^•”ƒ¨HzV=lurØÔ2õÌvV#jD¤b2S·V~LJ)IÏ>¯ ‚;~”’9ç\NÅÝ‚`µÌvVïô›+•^ʸ¡>è8†Ñ:9ÖÛÉÕå‘9×OºÙ‘s9w‘ͱaþ¾´ÙD¤7Ï:5L.c&o¢ ‡Ë±AD§Mkåá Íœ‘ŠÕqÝJÆ´äN; ‚;Q© •ÀËÏ DgM½‚%;.­MLSüŠÆØ\• ‚;~urι°ßŸ®aän6ƒ ‚Û Æ´j}øŸë±‚èX_f{Ö"q./6+ØCû•Š*s"*&3¸ü 7Ýu=Ž:9/&wº7øÔÒéša‚}sKl'×zUcLÜÚ´/oŒ´[þð|ÆtKtÚì/늧dÎItØq³.\›ã:s{GŽŒ7™ ûsDD$«¥„ ‘=´¯6%EñkD\V÷Cöå6¨].ìË‘y—k|º *Ñãíl.ìÏrù½òë?óý ýV£JÐ.Ô±àšÝ?>ýôÓ7ß|s%ßnçâÀž={6.3â©~‹@Xăáî*‚0UßuP\,6ò:胩%`®ƒ ƒ ƒ ƒ ƒ2(2(2(Àíö`j èe¼Ió­aVæ«ÇÜKz9¨u)œ;£{!û"5µ´_ÑÌæ™ï;+R`‰íœº 7¶8x¹úžêw}bò¼F«°³Õ;ÿ5ŒÖáÎsÇÞ’—‚” KtÕQ\Ãhb’Ï瓤tÍ0º1&I>ŸÏœþ‚¿0û—ŒiIo¦[¬«þ<Û`,jç!A°‡öÝœTKwªJ׺©+-I’”.b>ŸO’b…–ÑíÅ2¦)~¿¹\³˜¹Ds.ŸÏ'Åb±ÎônUc¯¥»Uù:Òµ¾Å™+e}®–c/¸´žÙÎêbDˆTLfêížÙvV§€Z*•ËåJ%ñ{-~”’99ðkµj‘8—=®õ· 1Ec²Z*©2Ó”X¡Õk:ÓŽI)å#"éÙçuApw—¢–J•Jb`AõLRcLVKGÊÖ¬ÑaZ²ê1W!Q©”ËåR>â优ÌÔÉ5a¥æj9öB€»hÄuпüÊúçkòGã; µj‘ˆ6.Ç‘~Úl.[7÷ì8ö‚ö+ oFëäXç<àq‘GæÅâñI+4Á¹ÚˆDz±Z‹»\«jžçNÇ:‘ͱA¤ÏÐÎåT¼¿ÖÙæ·ånA;Ü’àƒygÙQSü1FzóŒÈ.¸ãÑÓíl£‘ ûs²ZJ¸N¢gÍd¥7ψl‹Wµá°-Øóbmƒ1bŒøò[>WÌàLîÛ\qwÝ!’9jjض/dÚCû•Š*s"*&G\ø´·'@ŒiÕúèúûˆŽõ—DÃhªYÄH^•9Ÿ12·¡åpM®”AÁ¾¹%2¦åχÿ늧dÎ;™ÃÌ(§ÍÉõ8ê优ÜéÞVSK§k†Ñ­¿Z'ªW5ÆÄ­Íņ…­yÚ¼ jn6Ì:}¶.ìØ•ZbË`3(ÙCûªÌ¹p÷vÜî-¯~¿R$1ªí‚ ö IÏ…ýÖ»UÛùÆÚ;JHÏ…ýæÍ«UOûÞ³~MñûËê~ȾpSÍŒ®)þª'eíGº·–wDÇõ/ÁOÓ’Þü©Hæý·u²MX©%¶n¡ß}ñ˯Vûš\ûë§T%áÆãLNˆîO ú{$Fâ.ì°°{”AÁ¨TØæ° x²<2(2(2(2( ƒ ƒ ƒ ƒ ƒ2(2(2(2(À*ZÙ·›}ðÑÇÝßß}ë li„ÑlD@ioþoõ—–)?ÁžÐ!Ú€Ë%\\\ Lzñ˯^û“?º»;ôßüõöÈýã? ìÖ†QËx“Êæ\~¯üúÏ|?(R uw Âri.w¸òöpîŒì…ì¸òóÖ¿ò¡ëNŸ%3Vu¢MD†Ñ:ÜÙÎ5ØUvŒ…›}­±2Z…•”½ }þ½å®mÄÁ£FVK ·@p‹MNˆ+Øýão> ¢ÿêÙìNù?Փѧ‚;Q©$F?†QûÙKj?çrê(î:?ÜÙÎf·3Ž£¸»ÓΛ ÝLg^·2tË9©¼}Ñ6ÓgV;‰³u¸“©íÝÜŽq½±:kêûRO¶náF<À©žñ&‹ÉŒçN4oÀUÎÞVÉJÝIôÁGï>yû[ßü†5}šÙô[ßüÆî“·­—+fÔ<Üñù|’+´ s¿IK’$¥kµ´$¥k†a­BLòù|æŸÝ2¾ŽtÍèîsætïNþtê‚mŽ ËÎÚ^¨at/bÖ†Í]ÿ˜Ðü¹c¡:ÔÇElJ;oQ´Ïš:m8lfz°‡öfW{®¦J±X¬S~8Il‹ù¶ébU¯ׄ]}råwg#N9Iy, 7{ä1b=¸Ìé±BËhb’Ô¿¾S¶òŒÍèv¦Ó’ÞL߯ª¥=úût¬·\£–6gB½~ýÛ¯ýÛ¯gŸ>%:L;&¥”ˆ¤gŸ×­Ó“UO¥’p B=³Õň©˜ÌÔ»ç¿år¹”89/&3æ¾XÏ$5Ædµt¤lM_v½ª1&F<¿Ù°ùê¢q?w)ts¶ç˜”’*3Ö°N¿UÑ·'@ŒiIïÎ@æXVS‡·ÅØÊ—+èYè*oÄAçÍS" xÌ|\ü‡›=îé\æôF.ìUI9ˆŠ¤gÕÃVû8š²•gl† ¸ãG)™s³?ÝýŒ2ðÙg÷xKd¬Ñ(Þn°dPdPdPdPdP@@@@@dP€EMz7KZ’†ß:˹œ:Нð;Ç®šA•J¢ój¤"HœW™à®fЉ©±u¸³k0k—Ô|¥jÃ| !—ß+¿þ3ß4ÆiI/!‰À*Yð:h=³Õň©˜ÌÔÛÝÍí¬NµT*—Ë•Jâ5öZü(%sŽ_@5; µj‘ˆ6.Ç6[†Ñ®ŽiÉÃîŸÈ Cs2Mñ+c¤7ψÁ?ˆ:9g\ØïO×DtкC$Îå9B+ØCû•Š*s"*&35ôDÔJì›["cZþð|ø¿®xJæœDÇz'×6Ïj@”ÈÚWeÞÈ…}>Ÿ$¥k†aµ´$ù|>¿_)’U‚vA{P‰Š¤çÂ~³"«A¸¸¸˜ôâ—_½ö'„ÐÀ=79!â©~‹@@@@@dPdPdPdPdP@XÔƒ;Úî>ú¸ûû»o½q6ؽ]qQBt9{óû«¿´LùÉ}سïíŠ#˜ˆ"·Ó{»Ù}ü7½=ò_ÿøOvkÃhîlgõ@ê(î„¡ÿÖ2Þd‘ÿ;núí_q³åëÒs.O^‹yWööçúƒÙ:ÜÙÎ5qîŒì…ìË\ßÛÉÅŽ5ëŽw±ºý]‘DëZµ´_Ѧ}#wÕ­;†Y•y,¿W~ýg¾\eŸ¹»Çï [µ·›ýñ7Œü™2[ýy®ÁÓªõå|ä¥%iw†/<ãb+ι¬–Jår¹TRTLzw -cYk-îD¥R©$®xøÝò`vνÄH¾T.—ŽR37ÿ®ø;±Ë­ÂŽ7Y¤€¹×½¬X½ÜOÆÙç½O™zµ¸xÿÆrˆF-“,šGt¥’x½6ïÑ·JÇïíq—2è}¼ûäío}ó#vŸ¼m½\1ø!˜?¨'çÅüa«³ÁÌMèóù¼;ùÓ¡M;<}à,›1-ém@F«“|>Ÿu‡0Z…˜$ù|>sú þbxÆk]që¡O¬ÇöÈÍZ`x­‡€Zº³²éÚÀAR(Ä|>Ÿ$ÅRø]æYS'¢ ‡ÍŒ¤=´ßþÐngwÏ1¥kFß'E-Ý-Ù‹•e›‡;w6Jæij¶ÁX ÕîÓXc5y÷¨ÕÒæ¿b…–¹ Ý ŒÛ…f õÔý|Ùètr*VÛÛ¨UÈŸŠNέ%†ã0î3§»:Öí¨øýæ”±G_ç¿Öà¬Ìñ‹ z%¿þí×~&t@³á ksK$ÒOÎ;“3I1Y-)[}ÅÇLïe££”̹ud¦žÙÎêbDˆTLfêí}k;«wÎÇÍÓÆá¯wÅ­\™÷ŽíáƬ¿Àȵ¶jbŠÆdµTRe¦)±BËrV®“RÊGDÒ­§çw"˜‚àöˆ1m¸?ÜNó¼¾\.—ò'çÅdï£1-Yõ˜§ü­B,Ylwj»€;%séÕ"q.{\#j›¼{$«3b\Ø«’rIϪ½“ÝvpT¹{8c¨§îçË>è6ÂácZþðœˆÎOŽikkc†8Ìþ™cöA6åÀeöP­Á©“keŽ_dÐÅýæ·_Oø™Ð>v ‚}sKd¬a¦PÃh5O‰s§cÈæØ°”9}òpDµHD—cƒˆN›Ö#?¹Óû ¸É_¬Á3òɱÞþôtydÎõã“î,œËá ­ÌN ¿CÁt'*ªÌkäÂ~kwsRˆ†öÎåTÜÕU·Sk-p§£t•Ý#w™+ιœÚ ÚÌ èͳàôŸÎêùvãåD ·‚­“cÚÚtLß9ÃáÞ£FgŽ_dÐ+Õ¿ûzÂϸh®ÑÈ…ý>Ÿ/œkQgçè7j7G(™¦ø1óÈwü êäœ5ra¿ßeºÑIt¬iðÔ5šÈ šÅôYîR0݉J©”8ùÀ§ÀpˆÌÑ*¿9qÆX­J”nl÷ YC=ïn¼”¸<bÜóÌóìF8h›% ~æLØ£f Î]<~‘Aôî[oüèÇ?ùß}=òçG?þÉè»(ó§æàF¹\6?­¹K²î{·ítÇX{h¿RQeNDÖQ¦XñQgU1ÚpØa\ƒ§®ÑäŒKÕ«LA°÷R2ç—í4ŒÖ¡šÕIŒäU¹ÿêפX­D”ºÃÝ£nÖ[âîÑžwöPϳ/ç s=Ž:9×4-08¢½Ô8Œ¯v¶àÜÉãôª¾úýFþŒë€f7ÂÝ;Ë­qÇ™`IDAT¹ÖÞ¼1üA`>j‡;mž[«m_ü<œâ)™óÎÙ7ã5®øÐЊy#Ÿ9º5¹Áã Œm|·|µÞNÕâÖ¦}ÖO«[Lè¥c…v§Ó< ëcÛ9½3aÎ8³ïÀ.gfŽb²wÁ¸–N× ãj»‡é´y>p8k¨'ìç×uÐÙ6·Ä—„ÇÅa¶Ïœ¹ö¨‘ÁYãtñnèO?)üô“ÂW¿ÿºûcN×>v ìÛÎÎ(ûTQñW=)ë™Ú¸é}Ý%*’Þ½0fí«2oäÂÖ›WÍÛáü~¥HbT ÚaxÆëXñþ±» bôÀrÅ~¸Áó˜Üx³¼¦øýŠÆeu?dŸýø¿ÍÁw\!Õëõù|~EãÎÈÁ^Ðüp"óžg-éÍŸŠ4î>C{h?ÐÍ+ 3¶üNìr‚=´w” P{Õ|>_ÕÓÞåÞ=ºŽUoû‹•í³ÀYC=y?_úAGí›GQd\¦~æL6°GÕÉ5œ:ÙVãø½UîØºðT?ƒQÌ{¥ÛðÅì'÷Ùä„xW3(ÜxtÜæ ú€[ËüÞg€[ o7@@@@dPdPdPdPdP@XÔèçâ¾øåW À#ÞÍSaAó!0}ðÑÇ {÷­7A§Ø}ò6‚V———kkk———ÃÿÂ(.ÀXF(‘A °ˆ¾ë †Ñ:ÜÙÎ5qîŒì…ìb0¥z¸³ÕÅH¾T.—ŽR35Ã@Œ¦dЦND‘ ØCû · ˜}ÓBLòù|’”6sªaÔÒ’$IéZ-ýèÑß§c’$Å -ƒˆŒV!+´ÚÅ&Í(Iéü…ùg¡óù|½JŒZZ’|éÚà¼æôX¡e´ 1©·ô‘ µt²;5àÌ–˜A=bLKzwºÙÈTÏlgu1¢FD*&3õÞÌLKV=Ÿ}öw·DÆÇ'çDt~rL[›vA˜:c¥ÒÎÐŒiǤ”ò‘ôìó: ‚;Q©”ËåR>â优ìõ†ÍyÍé\Ø«’rIϪ‡fÚ·P€ëÊ îDE•9c\Øoí5V‹D´áp96ˆè´Ùê$3ÎåTÜED6ÇéÍ3Ãhëf7v–»†ƒ¶v-Åj_ÑœhÑž×æØ0ß Úº‹Ÿ¸Ðnbîfn€ådP3‰–Jùˆ“3¦%w[–žŸâW4ÆÌD5Èå‘9§bµNgM=àq‘µ»9iÆñÌáY¿9ï¼kµèBf4â™D‚`ÞdQožÙhÝ!×åÔQ¼Ûu¸Œ(nO€4M«f¨ð$ÚŦÏ86}­C5«“͇›ÛÉâk4b¡×ÛMwî¢zUcŒDÇ:‘ Ø7·DÆ´üáù”ÄE¤iZ·:ãŒcœYokšÝä…âN"¸– WHõz}>Ÿ_Ѹ3r°4o²‡öU™7rá‘7¸šl›[NÎ9w:Ö{g™qL"tÇSÆ´¤7*š÷7ÍúÕš… 0GŸíââQ ¢>úO–€Oßÿáî“·ñdy€¥AXÞÚsyy‰÷lÀŒp´gmm A€‘],ôAçÀH¸ € € € °jnúN"|]î–wßzãVdP"ÂÃóஸ¼¼\[[ÃSýæ3aè`È ‹è»jµŒ7©±^Z•ÕRÂ- LÓû œËj©TÊGœœ“³¾×Ú0jiI­àþfÐ6›cÃòW--ù|>ŸÏ'¥kƒ)³–~ô(ùoRcŒ1-éͼà/Mà¾fÐzUcŒ· ´ 1Ec²Z*©2Ó”X¡Õ›Ÿiɪç³ÏRï¥dÎ9—SGq·€_Xq#¾ʘ¦ø5"âÎÈAÜe­“có€ÇED™‹Ç'­`ÐFDDœË©¸k Ap'*•¢ ÷*ƒô# 㬩÷—ЛgD6î±Y¾Í²îû'ˆŽuDA'ûæ–ȘV­·/ŽŠ[›öW:ÍD{Ú<Ç}¹€ JDDöо*sMñûËê~È>2Ñ•¨Hz.ì—¤ÂÿCh`¥ 7¹¼>úO–€»âéû?Ü}ò6ž,°4È ‹x ï½¼¼Ä{¶à®»éë D´¶¶†¸À2ò:èƒ[Ò€»×AAAAV͵ÜI„/«ÀÊx÷­7n.ƒÝ+àòòrmm Oõ˜Ï„QUdP€E ƒ,¢ï:¨aÔ2Þ¤Æzi•s9uw B÷¿”:J¸Kùª§Sà^÷A9—ÕR©\.—Jj€ŠIïN¡etÿ[Lfj†À2èX‚àŽ§Œ5²Ï뽘–Ü9l!‰2è$.Ì9«~g@UeÖÈmgêˆ ƒÎÃÏGœLSÒ5tCt2ѱnùËT"N^Lîž#€€ :R½ª1F»ån[A°÷RÒ³jþ!dІQË$‹œË©¸kà_‚àŽDE]×B¸—F<—1Mñkæï\Œìí£¾î)ØC{©¦7‰À½Ï ‚àNT*‰1EÁ¨¸û¦¸• b÷žê€ pS®ëý ———xÏ6¬0áâââ:ê][[Cp`5Œ|Ãöƒ›\ÀÊÀuPdPdPdP€Uó`%× _¤€ey÷­7îQ%¢Ý'oc«À]^^®­­ü‚ FqÆš0¨‰ °dP€+gPè¥%I’Ò5Ãþи© j´ 1Iòù|>ŸÏÒOmbRÿ”Nϵ––¤ô þÂü³Pˆù|>IŠZ½b¾Žtmp^sz¬Ð2—ÛqäBni5ŒZf;«S@-•Êår¥’p Õ3ÛY]Œ¨‘ŠÉL½W/Ó’UO·cÚ1)¥|D$=û¼ND‚àNT*år¹”89/&3Ý\hÎkNoäÂ^•”ƒ¨HzV=lÆ„…ÜÆ>h;·í´Ó˜™V«E"Úp¸DtÚìþ‹s9wugä\mdslQ±Ú×q4'Z´çµ96Ìß÷‚6³ŒÞ<›¸P€[—AÁ?ˆ:9g\Øï7]»iUñ+cf†›9<ë7ç·Ý‹.`)æx&‘`íWBµ´¤h¬˜ÌxŽâ.ZwˆÄu9u7Gk‰hÆ¡a´Õ¬Nb4nn'‹s´yÄB^fTÜž1¦åωˆêU1 x¬‰ÊOÉœ“èX'ûæ–Ø+?Ÿ³¦NDÛ|³]m¡×Óu'*yG,œ ûrDD\V+ 7™wy“æp+'1ªí‚@Döоڔ”\Ø—#ÎåÔ‘åâç”D莧š¢%½§¢H¬¡%½ô^ùõYæ^(:£pÄ‹‹‹Õ[«>úO–€«{úþwŸ¼'Ë, 2(À"Vöý ———xÏ6\ŸÕ¼JDkkkغ°¬^Ùýêƒb“ÀõÁuPdPdPdP€U³jwá,°\ï¾õƽȠD„çùÀ²\^^®­­á©~ó™0´‰ °dP€Eô]µ¾Ô$«¥„ûÖ½zÓlg‘x3(Ü¢>(ç²Z*•ò'çÅd¦fÀô Úfslt:|iIòu¤kí„j´ ±ÎtIJ›‰v`â ~VˆI’+´ "2ŒV!&Å ­^ ±BË0ˆ¨–îÌ•®‘e¹’”®ÕÒfýÝ–xwò§ØtpK3h½ª1FÏkìµD¥R.—­½Rèe¶³:ÔR©\.W* · O|­on‰Œ5ŽOΉˆÎOŽuÒ³ÏÍt{~rL[›vAhbŠÆdµTRe¦)ÝKDŒiɪǬ¿žIjŒÉjéHÙ–€[—Aӿ߯hÜ9ˆ»†{¥}émç°Õ?Ì;0ÑœI?>iFýy¶ÁcZµN†Ñ:9Ö76óÎe‹Èå‘97 ›³s.§â.³ÿÚ<%ÎŽõ-xùÔ¼Z.—+û!» PglÖïWº7 ‚;~urι°ßo펜h&EÒ›gT¯ňqr^ÌžÓYSx\DtÖÔû[ 7ÏF4Õ,¶á°a«À­Ì  £u¨fu#yUæ¼;]°‡ö+UæDÔ½áhx¢ ¸=bL«fªEqkÓ ˆôã“Ãj1àq ѺCì_¤èXÇ–€»žA'wþ\ñ”Ìù@ΘèòˆHÓ4qkÓ..O€±F.§™ÿûæ–híš_Íb êeâ:™D±ñà%šþ\\ApÇSMÑ’ÞSQ$ÖÐ’^z¯üúÏ|?0Ó'1ªíæD¯“v'­;œœë$nmÚˆˆ\#ÎbVïüIdí«MIQü—Õý}dK\£ÎbVSü¤¦äb²ˆ­/pqq±JëóÁGãÉò°,Oßÿáî“·ñdy€¥AXÄ ¾ôòòïÙ€ë¶j×A‰hmm Û–Û7»/}Pll¸n¸ € € € °j °JðE&Xºwßzî<Ö–èòòrmm Oõ˜Ï„‘-dP€E ƒ,)ƒF--I>ŸÏçóIR¬Ð2^z+Í&IRºf·¿Ú¥4ìnÕú7¾ý³ô/ʘ5t$:§¡3}®ÍÔüðîäOûÏê¬m8 î©2/&3è‰À-Ê †Q«‰sÙãQ´Uˆ)“ÕRI•™¦Ä ­^-L;&¥”ˆ¤gŸ×'O¯g¶³ºQ#"“™z·òdQŒäKårù³ÏRï¥dÎ9—GvÔh‰Ù}‰O¬Öœ=Yõ”ò'ç\Ø«’rIϪ‡-Ã˜ÐøqíîBMnC=“Ô ŒÚVmööÏÝ]ÞÎêPK¥r¹\©´Ï¥¦nA³ä¼›É\wY-)[“ÛàòÓº‹¸}Ðñ¦­“c½\]™sýø¤û¡Ì¹Ú龯 ¢bµ6~º™¤‰6.Ç6[†aVN´á°]WKfĹœŠ»ÌÙ9—S{A›Y•Þ<ëœaŒlü¸öÌ™±ZÍÓ±g0³¬Úäö/¸‹0-¹ÓKÀ3nÁy7SgÝŽujOß³BsÑ8†à¶gP¢³¦Þ?ájÊŠ_ÑëT2TùMµäZ¿x{æŠÃµwü êäœ5ra¿?]3æÙ‚ó†Å,?x5¡ 7¼Ý&ePAp{ĘV1<¶îû'ˆŽõE–¸î‰s¹`p¨òi5,£%×ÖøÅÛ3Wn$‰ÚCû•Š*s"ê\zœq .-,£ÚpÃÛ`†>¨ëqÔÉy1¹Ó½¿£–N× Cì›[b;¹Ö«câÖ¦}þt»õäÏ&6Ï>­SkX¨%c«½bã‡ÛcžŽ˜Ë2¯ðͲjŽqg0/“+ž’973ÖŒ[pÞÍd={ë׈6˜Ò†Ã.àv\¸5T°‡öŽRÒsa¿y÷cÕÓ¾áÅÚWe®)~¿¢qY]ø»f=\ØzÓ¦=´Ÿ ´*Ié:Ù‚JT$=öß;ºpKÁ>¡Ú«4~d{\ÛËÊ;¢2ç³´ÁÌÅÛ‘B»7ÇúýJ‘Ĩ´[ö„É[°fón&óìMSüUOª®‘m¨W‹í+¾/pqq(Ü*æWr)z°ô†V!¶¥èÁ^È>¢úÁGãÉò°DOßÿáî“·ñdù;rRcí¥6²Ïñ}Ç‘ÝâçÙÔÑèô p“ðv³[™Dw¢âF@¸9———xÏ6ÜÄ9=®ƒÂŠY[[C`é§æèƒÂ=ÝÑ–w ƒ ƒ ƒ ƒ2(2(2(2(ÀêûL¢Ÿ,úî[o ˆ€ Úçoþz{òÌÿøOˆ ƒúãoÎ÷Ô\èe¼É"RGq· ü¹@ã £u¸³k0"âÜ9î¥Ê×jäZ˜5Öç\^M³ýY½7ïðŒ²ZJ¸…ÅM(ðÒ׈ŒZÚ¯h/q£Ü“®ƒ~ë›ß˜üsÍßfú#ùR¹\>:RHÍܪ—Ns.«¥R¹\.•Ô“ÞB«¿yõç¹cL«ÖGÌXÊGœœ“#Vjjq /-I’”¾Ö(F-Sõ”ËåR>"’žU[x8 ƒøõo¿žü3ß'o«“$ŸÏçóùºŸò†Ñ*Ä$닳¦ND‘ ØCû‰NOnô\µt¯þüE7XSKï÷Zº3eBf"îx*ÀX#û¼Þw?¨'çÅü¨4cslL®·S`¸Í}+›®Y;¯ŒiIo/é«‘NXÙDÂÝkžÞ<ÃaÈ ~óÛ¯'ÿÌ×qÙÎê0;m•J;Ö3ÛY]Œ¨‘ŠÉL}à“Ú Æ´á¾ÝȹZ…X²Øî°vë»ÚLKV=f± m˜ƒË#sNÅj/ןg7ÂA׿–H¤ŸœÍR¯jŒQÀ3¶©ý¬mnbŠÆdµTRe¦)±BKÜñ£”̹u¾ì`f§âIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/bsfsampler.png0000644000175000017500000003702112032647206023216 0ustar ebourgebourg‰PNG  IHDRaœßý?†sBITÛáOàtEXtSoftwareShutterc‚Ð IDATxÚíÝ_p#Éaçù¬ÜÞ‡}¸‡ŽÓžè1¬u¦`YV/0O”6ºñG#%Û¤çú¸^Â{c.Ü ­™3„Žðž·!Ø-°Këß.ƒ¶©Ö(Ý*ÑÑÔŽ(7ŽPØ0µG…M£ã^ØŽÐ4³î¡ @ÿÿ|?Á²••™U~ȪµÝÝ]´ Ȉ #€Œ2"Ȉ8a×:F)å‹êò@|TÁxqÞ³_¦” ÄôúC*˜XŸóhšåŠ­Ú7dUÉivÞlpNŒŸþ¦Î3»óˆRy“%ó÷Z6ÒÌvB)õ¨/U2Œ6|,•à$\ëö@ëÄ^}Â/·Yšs»Eù~º"¤ ÆóóMÔgã6-WìÆ0J½+À²7è *%\Î-ApÌ]ÿ]Ó<óÅùCœ«íQ‰QËF¼^¿ßï÷û½Þ¤9¿h¥¤×kþYJ6dk†¢–´-é]¾k~mÝtcê´µ*³€×›äèW7#Fmu6ªKéº5êÐ4MóŒõÔpïJ £”šNo7®k”RήÖö‹í,ÍúbzóÑíôt*™ô†2ÛûKâ­åÅfê@ùL(,Ýâlë¦[ΰ›ª«³Pf[r¯¸Ìºžk–Rš7”¸ÂË “Žú$Ÿ{nyfg:³]/02³´8é°\Qt?õÜ»á /-L84Í m•Jõ±CW©ÔÛÓˆtz.w`ÉÁòz.·WJ)éé2·´zÇ=1ÔÑëòýô¶”fcža¯W•ÉœÍí5§ÉÖ|˜”Ûšjšcr±X(âA%„ØÎ„úžÀíÔ£MóÌ/N:Ì6ä>¸¢RÁÄz#°9‡­–t”ßtî;á¥D¥ú¸£I†QÚÌ ¥‚!3=šgØÅNõIKm#3ËDpÙÙ»g¥–žö¦Û¿#Æ3_,Ì‹Z6Êl§ã«ÿ¿(ÿ›¶JF&šfÎö5#ªPÇ×ã!ç°•^¸eTJ¡†C-c²0á €ËÎÖ<¢æ˜\XOŒ‹ÜÁë¡k"ì237@rk©Ä ˆÁx¾P(äóñ RÇÙã'Õ!Zï¿éÇ#3KùBCñP·ã\þŒ(„x²º¤K)*ÕwRòà™åúCÝSW'£{%Žú ß‘zuåMýh7ˆH©GSåævëwà ;;§wÒl§ï—92ÀUfëž•}ãcM¼#*™P ÓöHh¡ ­ºUòÄér{Û|TŒ¸”Ú–zÔ'¾XøÄ!c¢óëûS*˜˜s[–tß äÒÛ-åÍSçnŽp• 0E72³Tœ÷hšgn}yfdÿü¯RÁx¾þUØ6õ¨DÓ±ðˆR¼Ada!v¥‡Jãù¥æ¶zßtbžU?æ³Û¶»»{YûÆ¿c8¾ dDôs™Ï5àp˜GdD@FÀq³ø_|kkkŒ À155õôéÓþÑ,Êx\z+++–˯u[¡3Nž²×ß|‹Ýpr^}éÅn];Ïí¾÷ÚËì<€“ðôéÓëׯw{”{V®¢ÞçlɈ #àÐÑ0JI¯7Y2.I– ãt[¸uïæMwý­ö…7ošË:—XWbõè±4ò$ª8}îYÉEScësM;ÓFN.”Iì•{·…~zE¼ñ¨<Ú¥X»wW¬ËÀZŸsÍRêÑÙÕÚÁ¹CsŠÑß`Î5š ½Þd©”4—G²5£–x½^o$[3ëÖ²¯ßï÷z“%ÃØ_ËÎôäèíI!„øÙ8y{€À×¥ü»+¡Æäbhå]!D}:pë^Ëœe}²eþr¿ÀÍÆjõœ°ÜºwóÞÖ»+¡›7o2Ý.~Fǃr;3*·.Õ4Ï|±X(òK3#J墩f“RnŽ™Ë·3!_\Ä–Ã.QIÇëA³œšNW\3ñ—ÈEVÛßÖƒìäíÿIŒÞ}û™.Í2ZZ•ߺwWÜ{ô¨\.—¿þyñ¥¥Ft˾òŠX(—Ë_ÿü2ÿö߆Ü~ô¨üõÏÿè•{ûÜ.—ËårùÑÌ?×ùÞ]¹ûã™GårùÑb%‘}宸÷èÑ£Gw™Í=# áž[š‘z¬õÂÄ}CÎრ” &æÜær¥‚‰…‰!³L¥úXÃ(mæ„ÃN·sX±S}"ÜóÅb±8ßótvvÖœ·{p»±ž›ZztOܽy0ø5ŠuÎÕY”½»4õ\ýÑ÷ÿò~ѼööÝQsáÿëð½Æïû&ßhƼÑÛ“Ù·õî÷ÖÄ~±óÑÉ7š›¸ðQˆ¡‰ØÌˆÊEgWŸì/4O"1]|g´”zÌ\±R}lkÉ…r¹\.¿ýLKü{njéÑ£™n?öÕ‹u™«ë,ß¼‘e6»_ì—ßÿœåï6ýìÇ?üá—ÃÝQ-Àåʈšæ˜XHŒ‹J:¾´cD£¶OW„kf)TjÍÝpº„RÁx>_(úMv¦¼™öy»ÑÛ“?üñÏìW±_¾q#K¹\./LÛxþâ>RªÝÓ*ÀÅψBMóÌ-‡]•J¥¾àqµ"„v ¶1MsŒÞrI©/5æ$»geëAö#õ¹]—Ø­ág?þacÍwò£:‘}¥9™¹õ Û~3ÌsŸ|áG¸-\pvÿ_³æ˜\HT}ÑFdLŒë1=êÛq¹„ÜÖ£>ñÅÂ'ìÔã˜\ŒW½±LÈŸJí­•uM¡Ô‡_{ûîsbëÞÍW¾&¥B©ß|ãQßëü,ËÞ}ãû7Ü_B}øó¯Mf_¹)ݶјÉ7Þþ@ææÍY)Õ‡?ÿöRûDásSK·ïÝtÏ67ÇT"¸x´ÝÝݶEkkkSSSOŸ>=Û–½þæ[÷^{ùœ ×Ö½ýg.°»_ú“{¯½¼²²büø_|hw!ÄèÝGÌ!2â™zúôéëo¾ÅN #Ö½úҋׯ_?—$ÏÔ™ß7p5qÏ Èˆ #€Œ€£ºZßxýúuv9@_Ì#€Œ€~úœk6ŒRÊÕ¥B(5^^˜thŒÀåÖkѨeg}Ñœçó…Ba}=&â©’aœ«F)éõz½ÉóÖ0€Ë™Ë÷ÓÛRŽ'æ<š&„Ð4Çäâ¼ù»¢”ôúý~¿ßïM–ÚãZ)i>ÉÖŒZ6âõz½‘lͰYFaµlÄë÷û›á¯¹b6ñûýfáæ4§”zÔWϯfmõ¶y“ÕCB$ÀñdDÃ(mæ„RÁ1·Å£µl$¦Ë`<Ÿ¥‹dkû5J=º9–_šQj;òÅEl9ì•t|µÖHi}Ë”SÓéŠk&>ã¹hªÜZù†ˆå—f\¢’¾_Ö4ÏÜz"¨”RÁÄúœGÓ £”šNWsŸÅâ~¨ÀQ3b†QÛÚ¨Ôã£{,¨Tec«™ÿ” &æÜbÈ9lþ¾014äBTª5ô.cÆS!†nç°b§ÚZyhbÈ\Qä6»M J©GgëqSÓ<óÅ"aàd3¢«•ƒ Zòß±µLê±@L—r Ê5Í3·QJngB@²Äùe€ãˈšæRê›åÎo8]¸œ7޳U7œ.¡Tðpç‹5Çäb±*!D.šâ2D€cˈB÷ðˆR¹èlóV’R2Y2 MsŒÞrÕãcyS—ÒukÔq|gr›õ/­>±(…Ø©,ëžK•.§ƒŸÔëû5Çäº3å‹fBŒBˆ`½|½åÿ5´ZYY± ~ü/>2"ú°¾qee…¡¸²,®Gä¢=€+¥ózÄkv àJázD@FdD@F+#F-ñúý~¿ßïõF²5ÃÞZ¥¤×ëõ&K†qˆ&qõ3g¥äñ5þ”Gc Íµî»â™ïÖãjÀáê1׺};½°6€Œ¸Wg§Ó×ÌR¾P(¬¯ÇDä¢bQ§sXˆJ½Î'Õ¡Ôˆó†Ey›•FͲÃ(mæ„ÃN·sXˆÊNµf¸[ßø+ÇÜ} wÛDVXîÕ[ÃUÏIÑYçòÂDk_¬ [lnèèÇcK;‡œÃBlWª ClmT†CC½€¶–ŸÉaÙeG{æ–Ã;ÓéL(™Y^è¨Õ=T¹\c—u>õ8!SSSOŸ>,#š«µþiVá™/æçj«³Ó™íú[òPýô)1jÙÙéô¶”BJ¡z—=prü°•÷ªDJ=Ð…”¢R},„Ãbëv ÜÎn:7a¸´F”ÙÞ΄™`¿ßˆéjd¦yí—cr11^É„öïr݈û1½yq˜¦9&ba—¨dB5hšg.1.¥õ-í¸Dßû ÍРÇ›c‰ Ú?Õê¾SßÖ’3Ü\Þ­òn•8&ãAµ uëµ¹bn³Ü·p·MØ@ËM 4\Í[†XN¸Â±‰Þ‘¥o÷;´¬Ú94zkD©ú•šÝKšw(w¶ü¸Ëìÿg£/mÃòP=ÎF¼›cëóMsL.˜Ÿ]­µ4¦¼™ëq•$gBÛÝݵ|`mm­ÇeŒ‡f~ŸHNŒŸÈY×Û­eg§Ó•ñDqÞsš•˜«ˆðòâ¤ãÔÚyÞF)5[½sð>˜ú‘à ·Ýsf-´qXžDGjÙÈtZ„—»œ€àÄô{×.wç›_q'„P®ðò¡¦jŽR‰æ˜\Xw¦|÷KýÂÇ‘ÛyžwH¬·ÜÇ]גּ1[y¹;b¥ûéáSþ¼€­ sÊóˆ8z‡=É€Œ2"Ȉ #à˜]»:]}ýÍ·ØßàŠ{õ¥Ɉí>åçÈÝw ¹ßýß>ÄŠÿé?ÿ¹Í’×®Ú˜>ÿKÿˆ \\ú÷BˆøNöŠÁk 4À…CF@GF¼v²ÿÇ•Œp3"óˆ8åŒh·vÃ(%½^¯7Y2Œ‹>¦‡ëËepá3â5yˆûõ_ÅyDMóÌ‹ó\àÂzï™:Ñú4KiN­ù’%C´Ì·e³¿ßïõF²5£­¼7‰4æäZçç:o«¼[%Bèe#^¿ßßY•e³»¯Xÿ³¹ÅZ6âdkL€ó“÷Ô!~N)#šr…B!¿43¢T.šj2)õ Ë/͸D%}¿l.,§¢º”Áx~=vëЕw«¤œšNW\3ñ—ÈESeû½h[QÓ ‰ R¹èl¶f¥ät5T\œth‡#8‡ñSŸøxŸ3Ȉû†œÃ( M Õ—ç6Íù¹êŽPjÄyâ¼ÍÊ»Ub¥ÍœbØév !vªO„{¾X,ç==³]çŠ5ÃÐ4ÏÜrØ%*™PÀ·ä\žss €ó•ŸÍŸµït+¶öàÖ’öë?êõˆF-;;Þ–RH)údÓÇÕŠbØ9t”Ê{U"¥ èBJQ©>Âa?)w¬¨9&cáPfÛuk”Dpî2âÁIÁo¾÷Yÿ'ÛÊ|£ð½æ¤£#D£¶OW„kf)TÇ|á䀕ßpº„RÁx>_(úNö]Ñ0j[!D%o^O p~2bÛÏêÚwZ ¬®}çÌ®GhjPÓiDL[_UÓ¹¢©œš®†Öë×SN§ø¾p®<Û3:¾úÍo›~õ›ß¶,pRQJ=˜7{½É²pÏ%Æ¥Ô£¾¥—RúzÅ)÷\"¨” lŽ%Z§Ýwêÿ-9ÃÍåšæ±¬¼[%ŽÉÅxPmgBÍ;”mvªmŇêq6âÝ[Ÿ÷hšcrÁlÃì*÷5€ó”•åÏ_¼ýà/Þ~ÐíQûõk»»»–¬­­MMM=}úô$ze^hXOç=§VÉëo¾õ)ÿøó¿ô £”òEs®ðòÂ×€‹åáOÿþ»…ÜoOÝ9ĺ¾rÿÕ—^´öNõ;´Ípfž V®ðáî>b%I¯W—R W8F@ÕÞÞÉ~‡ö©fÄcù'G¬„ÿ°.gêd¯‚»Æ\¼Œ¸GF@[FT—è\3ŽÅóˆÇëáOÿž£ \tÌ#§ïrRà(èo“GóۀЛdЦ×<âÊÊ puý_|ׯ_gt.·ÿß ý§fœ\2"Ȉ #€Œ€³Íˆ†QJz½þÉ’qeÇÎ ¯7Y2 |š 0ŒRò˜zaµl¤~H{½‘lÍ8Ý^ðl²5¶g¾›ÌzNètŒÇ3œYF4)Œçóù¥™¥rÑÔé¿´Ä+õ… |1;jšg¾X,ç=švèÆ¥d Û ßéQ‰ý€¸:;®¸f–ò…Ba}=&⩾QÀN/®ø³é¸[xæ»i<±>çÑ4MóÌ­'ÆOàyq'¼ øàÂgĺ!ç°Õtˆù2·ÿò]Jz½É‡êaï2æòH¶fÔ²¯·uª 9…Ðü(ŸòEu)¥Ô£¾ú{j[™Î” ³Hs*âÀûŠeBˆR²Q>Yê1ÕÕÙ¶éÎöX¾+g³‘Ö-GRaÙrë…VÛmVë›]Ú±Š‡ë{·ñÜ_±±ßÛƒ¶)™ÖAèÖ˜­æT0¾8é8޹™ÇÕŠbØ9d¾U;&çÝ¢ÜÖ˃¹G/چ݉Dú†°KôlêÛ‹ceyˆž£Ýd»ûÕ¥þ¶|<±žÍ‡8ŒXÞÔ¥ãcÏËçç‹ÅB¡Ð9"¥Ý+çû–1—ogB¾¸ˆ-‡]¢’Ž¯Ö CQNM§+®™øŒK䢩²ùQ>¨”RAóÃ}g™ýî5à6‹ˆñx>_(Úf,ë¬e#1]ãù|<(õX$[³A©oˆX>”r;}¿¾éníé½¢9óÑ6J†Qêl¹åÂnÛ-§¢º”Áx~=vËrã}ïÖ€Z6ÍÕç{š ›{¡sF§m,sà KEu)ÇÇÜvæfæ–K>Ÿ>»•RêQßl34tkCÿ^,͸D¥åè5ì—øÙÔíH>ôX£Ýd»Í6XÖoùôqK©w{¹€Ó×õÿ¬¬­­µ-yá…𝀱€.„P#3Ësî¶¹JË*JsîÎùË2ÃBTT0±01$ÊÃBT*ÕÇB ¥ÍœbØév QÙ©Ö ÷PG^éV¦­RêÑYçò„£ßé'èmmT”2ÓÈXPår[µ ‹• †&†êer›¥9·[”;ÛcgÅýwµŽQ²lyÛÂ.ãð¤º#”qÞ°¨öˆ}ïh@mk£"ĸs¨½§í‡A¯ÑëÕ°êŽP*8æÞŸþlßPK\Г‹ÅI£–õù*®°å~÷ÌãÂÓ·3¡@ºK0µÝ ç°•z/ìû%6Yµðcu滩ï˽Ð8b­ëo@÷XPår—‹ÎW`8 SSSÿ/>sµÖ?›UtÎñµììtz[J!¥P]Þàm”½ßG¥æ[Ýàe4Í3·Þ™NoogBL0žŸ÷ôމæé­•êc!‡m³Í;Gɲå=ºÓ1ÎÓÙÓ¿ï]бâ1ۯߜř·3ßc&ÅR2¨`¼8ïéÌù¹Úêìtf»þž=tlMí?ì—õÙ4H mÕÙî¦Ãîëú{ `ã¹Ööò 'aeeå0óˆm¹°÷´Ój<]®ðR¨:ͶL7œ.¡*ÞG;ÎÚ)SÏ ¥¤7¦Ë\45Ö}*¢YçOý.ç¾­—±h»’eË;ºíƒÍ1ïÛ÷n ‡Ž‰ýGx¿~;óˆ­oäWx9Ÿï6ã¥iމ…DÕÍuM§ãr<›ŽÐžqÿÜ즣÷ÑêésàY`çµNÔ±|?¢Ïâ‡ü¼®iŽÑ[.)õ¥Õ'íYAìTŸô(cÍ=—*eG¬ëÜ,ׯsÝí’0vªOד ;šf»=í+ö%Ë–·.´ÜnóZ®ÍrýÒ«®Ùë0}·h@³{:á@cÚçp½/Í«ÁZµ]…fÞà‹‹Øúzqq²³ †QJ6¯V4ÛÐ’òìHûD‘a¿ÄϦZØw¬Îån²ÕǾõÀϸQӿ߈éjdƼ8¬wl2›ÚcØ/õ³i°ö>DÏán²ßGËú-°¼™ëq1%œ>mww×òµµµ—1â(Ì󤹯—®1 ‚yîX„—û~ýÍyé©y²{<Ñy)$Îÿn2ŒRÊ·Ù<™Þöçqµld:-ÂË “&œžÞaï„ ö±Æ1¹°îLùî—&ÎuÂn½bR¹ÂËÌ]àÝ”‹úDb}ÎüRÆœ;Öú £t?=|•?18§o¸Ì#\A½Ãžd€@FdDpÌøî!„xýÍ·pé½úÒ‹dÄÁÜ{íe\bOŸ>½~ýºÍo6ä\3À•0ЉS2"ȈèÇîõˆ­ÿuÔŒçç=üwQ€Kh°yD¥‚ñ|>¿43¢T.š*Æ)7×0JI¯×ëMžþ¦Ȉ= 9‡[›¿!Y2ĸRÒëM>T{—1—G²5£–x½^o$[3‰°–xý~¿ ›s™RêQ_=¡¶•él@É0‹ÔÛÐlAàX3byS—RŒ=/ŸŸ/ …BçÌ¢”zts¬Xœï[Æ\¾ ùâ"¶v‰J:¾Z3 !D95®¸fâ3.‘‹¦Êšæ™[O•R*˜XŸóhZg™ýŽ5à6‹ˆñx>_(ŠÅysEOF”R˜®Ff–çÜû4f›” &Z ô(3ä6_˜2ËTª…0ŒÒfN1ìt;‡…;ÕZÇ´_2m RÎÖ£§¦yæ‹EÂ"@7ƒ}‡vë^=¥Õ²³Óém)…”BY¯e§LÏTª )Íà84xMóÌ-‡w¦ÓÛÛ™P í6ý3ØQV6ŒÚj<]®™¥xP©C—éâ†ÓU¿K¦û9b;e„æ˜\,Fžv¡IDATãA%„8“[m®PFâqµ"„v±ŒMsŒÞrI©/­>i …BìTŸô(cÍ=—*%\N7Gœ\FÔ4Ï\b\J=ê[Úq‰ÖÛ*Ócr1TÛ™Pó¶eMsLÄÂ.QÉ„æ’Î2m•4o¾b9á Ç&\†Ð;æíîîZ>°¶¶655eó¿>_t¯¿ùÖ½×^æh—ØÝ/ýɽ×^n¦»ÞaÿÅ2"ú¹Æ˜ž>}úú›o1dĺW_zñúõë\’@F<àŠÜ`×# ]¯yÄ••à êúýˆ×¯_gt.·n—Û]t\z\2"Ȉ #€Œ€³Íˆ†QËF¼~¿ßï÷{½‘lͰ·V)éõz½É’a®•F)ÙØhò¡zجíp5F)y„Æ¥ËGŠãmÏY8çø_|†Q[NW\áå…I‡fµÕÙTiaΣi½WÔ4Ï|±8ß/—¤|ÑœO¬·Wh¥T4§Zz¾QÛ!bŒQJbúHxi¾_³ÂN—OÓ »àNx)ãùyÆ“€+h yÄÇÕŠbØ9dÆÇäâ|3Ï•’^‹©¾R²ÛÌ_6iNFšéD—RJ=êKµÎ`µ> ÚjëL±æ4g· ³zÜ Æ'Úœ,5Woεl$’­†eÍû3sm}ìèr³°ßï÷Í.íôk°ÙŠæ`Zt³KcÜ'âA•‹¦˜M€ŒØ‡¦yÆÆ…”zÔ7Ûv–¹–Ds®™¥|¡P(ëÁQJ=º9ÖüóÀV¥¾!bùxPÊíôý²¦yæÖA¥” ¶Í#¶>Ïç-kk*§¦Ó×L|Æ%rÑTÙª@T—r|Ìm¶9¦Ë`<Ÿ¥‹dkšæ½å’r{cë‰âÉÖ†¸5êд5·õ±[—ÍíãùõØ­Þ 6ŒRj:]ãñüÁ<s­ û.pK©[#¸ôºžk^[[k[ò /xæ‹qáéÛ™P ݆QÛÚ¨1nÎ/6)L̹-+W*šb,¨r¹ÜfiÎí>rO £´™B ;ÝÎa!*;Õšáv´d#èUw„RÁ1·0Û¬”Ç‚*—ÛØªML 9‡…Ø®T†ØÚ¨ ‡†ºÕh»æÞÜwÂ#Jé±ÀæX"¨Tj›w@±œp…cí—$v+pì»àÏ7s=.g—›¶»»kùÀÚÚZË­Ç÷ ž£–N‹ðr3^5vvA-™N ó‹0y’p)õ{WîñiŽÉ…õÄpú>ßü×#DÞO'Ö ˆ\]§=€ó€yD †Œ2"Ȉ #ਮ]©Þ¾þæ[ìr®‚W_z‘ `gdȈuŸòspp!|·ûÝßùíC¬øŸþóŸw.<\U—ŒåÈë>ýkι¿üëšâþƒc». ®1àÜ"#’:‚Ý5íVEF8ÓŒÈ<"€ŒHFèì®ÉsXqŸa”R¾¨.÷W©à ŸxÇÿ…œO¬Ï¹E9勚¿{4ÍNm"±>ïÑZ–lŽÙX\ï=SgU•alýÑÇfÿŸFøQêÿ·úÝyÁæ• ¶EÀç‹Åùú8¼í\4E(½‚Ýž:«ª Cí ¡Ô¯ùûÑçk÷g~ëßý»‰øïG?v5¢Ë‘&] £”ôz½Þd©#!F-ñúý~ËGëÛ–ztvµvðQ³NC²dØP)i.dkF-ñz½ÞH¶fXn´GóÀEɈ͟O}âã=~ZKö­ÊÞ¡„Âx¶§ÞûçÿÐøýçϾŸ}~l4þÎ÷ãc£ñwží½·§Þùâóf3ƾøý÷öÔÏŸU¿òÒóc£ÿâ+Õ½æŸ/¥jÖüóêÊË/­üäÙÞÏ«+/6VlTen]rŒ?§”{(§¦Ó×L|Æ%rÑTÙªÈx<”Û™éƒjšg¾X, ù¥™¥rÑT3áI©G7ÇÌåÛ™/.bËa—¨¤ãõ ic£àBeÄgFógíÁ;ÝŠ­=x§µdߪlþ˜={f¼·õm]ÊEþùG÷„¹\Ê·ãŸæ¿ýûÝ?ýÊÿö…œüLbó[‰ÏÉÜïý˯¼ûlï†ûÖ‡¥üÛõï=~ï™ñ^usýoÄßþû?ûþ{ê½gFõ{yuëÿøÙ¾|'ù·â7þ°¸¹ö೪÷ž[ô[‹óáßMü«‰¯ÿþýàÍîñsRQJ=ôžBFi3'„vºÃBˆjͲ°{nifDê1s²°Ýsøà¥‚‰9·¹\©`babÈ,S©>¶Úèáž/‹ÅyNgpQ3âÁi°o¾×Yæ…ïÙ™-;Ĭ۞R¾ý¯½cŸþß?È÷Ë¿9Ô\®Ôgÿ99í÷ýâß(õÙÝTïÝüd@©¿+nVŸí½ï¹ !Ìßÿj%õ#)¥|û{U/ÿþçþûfýwÃ_­6æ þìûßË !>8tóß/„ØùiõX§O*#*Œçó…BÁNð’Rbº”f†³44›Q¹èìê“–ˆYËF¼Þ€¹î€ìl\ÐŒøÞžZ]ûNkÕµïØLB‡;×¬Ôø¿þÖ·3ÿò¿þAàSÿþ{­ç ÷êÅ~ö“JóOC !*?þÙžzô)%*?þÙÞ6s¿ò;ù Rkÿå«ïîýì'•Ï}ì£ê™zþwÿË¿ú Rrû?¼|°r)¿ñ×òRÖ«ºDçšo8]¶¥¦9&㢒Ž/í˜Ѩ­ÆÓášYŠ•:‰€‹âÙžÑùóÕo~Û|ô«ßü¶eûUõüëÿö³ÿâ¶Rù»_*=S­ËŸíÏönÜøPóO¡„zÿ?Þ3öÔóžÏ)s菉“ÿï£|ñ3BüÝú_­~'ÿ™O}D‰g{ÆÞ/üVü[ßý§•¢QùJýÏ_Èm|õ›ßþ¿¿õªYò¸~Î8#jšcô–KJ}©uz°kaÏÜrØU©Tê W+BˆaçÐQ7Ê=+\üŒ¨,þâíñöƒnTUCs‚ðÙãŸüD1òKÿ]Ûò=µ§†~í“¿"å7PRÏJß~ å?ù±÷)ãÙžúÕ !üå7Í%¿úñq)ÿnéÿüæŸjÝʯ†ÿø–RfåÍÚîí]óÑ÷žýà?~æS¿õ™?.½·ÕöKùÙÞ =²?ò'õÚŽÉÅxÕË„ü‹oÌiwŽÉ…DÕmDÆÄ¸Ó£¾—KÈm=ê_,|âµ¹8·êyì,ª2 ó´¯þÇ¿® !”ø•>?ñ>Cìæ¹f¡”±§ !Äû>ûÆ«Õ[¯ÿï†ÊÿÅóY‡¹-ãÞÿ¥þ_ñ+ÿ'C{Ê0~íýgÿcî϶ÿô×ÿ;R¶U^¯íO§ÿÙŸ ¥‚¯}ý“͉Ž_ê 8 Úîî®åkkkSSSOŸ>½LÇÙëo¾õ)ÿø§ÍÁS€sî/ÿºöÝBnêÎÿrˆuWîõÕ—^lˇ«ê’i™ÞaÿÅίgÇ÷ÚÇXÕU@Fçמk&#œSÏŽ/Ø=##’ÀåÀ<" #ØßE„{\HFìí/ÿºÆŽàBà\3ñ”|·c¯pQ¬ëísXñ²iûª$@€%É M¯yÄ••à êú¿ø®_¿Îè\nÿ/¾KöŸš`×#€Œ2"Ȉ #àl3¢aÔ²¯ßï÷ûý^o$[3ì­UJz½^o²déÿ$F)yØJú¶¡[ãj<Žñˆ:¡½ïo‘,§³éÓíÃ7æXŸÅ¶êh‹½Ÿ¿­{ÖëM>T›…m­ÇÃQ^ˆ¥“8 /ãkHÉæÞlÕÖ2mk5ÿ4ÿA^¯÷¶7ôgJ1ò #¶¿¯ÎN§+®™¥|¡PX_‰xÊÎ ¥¦yæ‹ÅbqÞ£i‡/%ØNøNJŽØ†‹õž}9âᎨ¢T0žÏçóñ R¹èñ·„Ïg»g …B¡P(矗ÏújpǃÝrifädÈKtÄŽ'Öç<š¦iž¹õĸe_jÙY_4ç /åóùüRØ•‹úf{(5ß5 …‚ùš`îŽb±øgáÿféÓŸ&µƒŒØæqµ"„v™ÏÇäâþ‹l)éµø˜^JvûÔžÍFšSG†QJù¢º”RêQŸÅK¡a”RÑÜÞg~ïÖÆts¶É¨e#æÚ?s›OÝýW·.mèö½º:ÛcN«9ïuàch-ñz-g):khÔíÛÑ/´ôú¡zlÖÜlO-1‡§uÓ‡ë~É0ÚÙmº´u¿XÖs`_'K½W۵>¢úöÈ\ÉÖêCÒÑÚÎfô݉=‚lß=Þ6aùÎÚÿ ïRçiŽƒåîî¦ó0hªñF"‘gí?%ÚƒEŸn5K©GgWk=')íï Áº0ä¶·¹Î©¯£4ÉòˆµsÌØy©éÿzÕå@ê]yåûém)ÇCMÓ4ÇDh\Êíôýò!Þ5“‹ñàÙ¤vàüfDMóŒ )õÎ_µl$š«Ï5?K©G7Ç,?¬K©oˆX>4Ÿ¥æ‡?óƒšùq°ýéŠêR~ö“/ŒÞrI¹½±õDñdkCÜuhÚþ§½ŽÜ–mè]¾µa/4©étÅ5Ÿq‰\4U®¿÷O§+bÜœ¨è=9Ñ:P$¾ØÒëç剅DP©\t6[3ŒRrº*.N:µišãÐÝw› ï×ÈnÝoÆZ6Óe0žÏǃRE²µ«÷œnGTߙ˷3!_\Ä–Ã.QIÇ÷ß¿±xRÝBŒ™M=âoíTƒÜ²Î³‡ÏÜÖ#Ùò00ŸªÁx~=vkÐi~ûOÉ>{ðºÔ<åvfúà¶Ž²ƒèByS—RŒ™ÓŸ½Ÿé}ËØo’åÛ÷˜éûRcóåÚò@:ÜSÏ\q3'” ޹‹ÜcA¥Dnóp9Ï=6.¥~¼Çpuý?+kkkmK^xáÏ|1.¼1}; ¤/†QÛÚ¨1nεž(I̹»C M 1T¹\n³4çv÷œÈ©îÔŸÞCbXˆíJõ±aˆ­Êph¨ówÅ^º•ïÑ0ó…Fˆa§Û9,De§Z3ÜCûÓ Îå…‰fh›·êˆå@ˆËáét&HÌ,/¸­Ú{øî·6r ýÒ¬Çì‚RãcnQ/¶±U›˜ê¹zíZQvz4,DE C¢<,D¥R},ÄБwb,  !Ôx¢8ﱿÇí[·:OwúÀDšeg2G8 \<0A{:PËÛæn{Ïu«yh"6³1ŽÎ:—C'òJÒ¯Ù67wŒM¼Œ§¼ZHÚ <õޤ±ãÚÞ+ deeå0óˆ­¹°ãýÌ1±¨ú¢¹úkÄ §ë3 .ç>%öë7ÏN꺾™¹ñ±yM3?t®ÆÓá /…ªÓÑ\ßw#›å-vÃéªÒþ­9&‹“¥¤7¦Ë\45fuº¼­#½gh„•t<;º0éh?MsèîÛndïýÒÑ…n»¯±ÜÎvÛ¨w耽°Ø‰-¡Á}'ìÒ3úÒêϤÃþwù‰jU瓳»OIÛÏâc|J¥åýûÕ­ææQšŽ/¹ÄðØà¯<}_IŽ>JÇÛ¤ŽQµ5ò½ŸòÆÑžÝ‡{êí¿r–ç<!Dã ~pÌ£i‡?x‡}·9à¢è¾æR²y …ùs9o4®“b§úÄ~e;Õ'J†M«¿ëXU¢iç°Rß,7ß„®ëûÓhÏ^ô(ßÙ°-½å’R_Zµèª{.TJ¸œŽ.WÄ[ T{¯Ë©éjh=¿4ã•ô´Å5ÑGì~³‘7ìîa9›åz±ƒó]W·Ün·#Ja:êˆ;±>]4¢*éx¶fØÜã7oBæ¦ÍK©ºF«žÏ”ƒu–ãÐó×ú0h^`ºYî1G}J¥å6ûÕ­fsËU©TùÊsÄÁ·³¹ãmÒ#v fw©éß¾R¿×1«öÜ (•[Z­†aÔV—rJ„ï¸[7WïWãÐ^ñ½û‹$pE3¢¦yæb"îóùýþ@LW#3Í+B“‹‰ñJ&°¯ÙF܈éÍ P4Í1 »D% tÖ`¾"ä6ËBˆ¡Ñ[#JÕ/Ui6,1.¥õ-í¸D·ûFt¤{ù¶†µ1ïhÛ΄:o> b9á Çz]%Ó6Pe1ÔìõíÛ˜Œx7ÇÖç=šæ˜\0[Øq+åáºo¿‘½»ß=ÄtŒ/N:z¬Þ{»ÝލAwè ½è܉퓚æ=ñÕšaØßãî;õ]¹ä ­¾>­ÇAnYçÙŽCoÝó©ªÇ›c‰`÷ï“RÍ»SËÂ=ÐSò(-·Ó¯5›ÏÍýòqðílîx›ÔyÄömvß—›-´<z±µØqë‰ñJ:¡te<±¾¢Æ3_\š1ûeÒæÉÝ#b®ïe»À% íîîZ>°¶¶Öã2ÆC3¿O!×ø:«V¬eg§Ó"¼ÜJp¶ûåXV?'½`ogjÙÙét¥q÷pB’a”R¾Íæí¶?OB-™N‹ðrûµ@ÀEÔ;ì]»0aÖ1¹°îLùî—&®ôÛ?pþã©yrP¹ÂËL´à4¤\Ô'ësnQ6?dÃ¯ø§P\§=€ó wØ“ Ȉ #€Œ2"Ȉ #€Œ2"+èe#ÞÆÿƒŽdk†½µJI¯÷xÿ4à¼XNW\3KùB¡°¾ñ”اižùb±XœïñoÖȑȈpQU+Bˆaç™ü“‹û±¯”lÎ/&ª‡õÀWJøÓ0šY0›4'#›ÿDXJ=êKµ–gÌà¼RêQßlÛYæZ6ÍÕç›ó…RêÑÍ1ËéC)õ ËǃRn§ï—5Í3·ž*¥T0±>×cºȈpîxæ‹ñ ’r; 4çù £¶µQiÎ/6)L̹-ëQ*šî± R"·Ù6_hçÜ4à|ÅÄ|~ifDI©GgWk†!Äãj…2"€«MÓ ‰ R¢R},„7œ®#TçrÞ`LàâJF²5ó¼pyS—ÒŒwšæ½åb§úÄ~M;Õ'J†MkÍêîqpÉ]c\2s11ëómK)„P#3Ë MB8&Uo,È¡Tð‹…Oô­j#îËlËæ5‹šæ˜ˆ…7¦Ó™Pà½ò<"¸¼´ÝÝ]ËÖÖÖ¦¦¦ž>}ʸj̯¹É‰qî_p‰õ{œk@;Î5@;ó{mædľ^ó- àB{õ¥9# !î½ö2# pAÝýÒŸ\¿~ÝæÝ&\p%ØŸD$#\]:x˜ŒøîJèæÍ{[v‹oÝ»yÓív»ÝîAÖÀ™4#nÝ»yó®xar€UFï>zT.—Ëåò£7Ä+¡•wu€Ë•Gï>z´4õþî ²çLáèíÉþøg6 àŒœî÷#n=È~ä¡ý¸9ʸâqëÞ+âGSÏ1êW #nÝ»ùÊפB)¾æþšB©ß|ãÑÝÑeÜ>°—9#ŽÞ}ôèn¯ H@¸r±­{™¼½D@¸(óÝ7n÷ì×ä×fí~ßáÖƒì¿üHä¾f€sjÐyÄæiånŽÚ]åÝŸüHˆÛ쀋ŸËÖ½Ï}é—ßàËoȈûFï>zÄèœO’!dD@FdD@FdD@FdD@FȈ #€Œ2"Ȉ #€Œ2"Ȉ #€Œ2"Ȉ #€Œ2"@FdD@FdD@FdD@FdD2"Ȉ #€Œ2"Ȉ #€Œ2"Ȉ #€Œ2"Ȉ #€Œ@FdD@FdD@FdD@FdD€Œ2"Ȉ #€Œ2"Ȉ #€Œ2"Ȉ #€Œ2"Ȉ #dD@FdD@FdD@FdD@F #€Œ2"Ȉ #€Œ2"Ȉ #€Œ2"Ȉ #àÒ¹f¿èÓ§O_ó-† €ŒX÷êK/^¿~ýÞk/3ddÄ}OŸ>e¼®®G@»^óˆ+++ À¤íîîZ>pýúuFàrëv1áµAWÀ¥Çõˆ # Ÿÿ(sË·y^R‚IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/transactioncontroller.png0000644000175000017500000001056712032647206025517 0ustar ebourgebourg‰PNG  IHDRzAàæ©sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÛ#.ù@8÷IDATxÚí[h#ٙǿ:t` yéGË="´¡…æÅ”B¼ÑÂt[ƒb†‹Ù¡Œ^fƒñe‘É (åg+‚™Abm ‘X„CLgPÏì Æ—î…õÆ0*ô’¡‡àíQ¿M¿$d:§ö¡t)ÕM¥»Üýÿ¡»|.ß9¥ú×wŽäú ß~û-Àèa˜ä¹È rxÕ¹aø=³¸(3k â<š>MáÚ RUËÙP²DK£Ž¿œY”äöìqßêÁî²g fÌ0c›^òìFUË™ÅÅÅÅLYUÇ×i9‡õZCD¬–_ e c"Ã`ÙÍÖÙÙÖx3‚1 Ö¸F¢5õâf²DŒÒµœ %ñ ßìF³UëÅ ÝWû5‡ÃáöASùFb]w».gÇ ÕíšmS/n,êk}ͿΆ’2cŒÉR$Òè×*AÐZtç.`=ʃ\1MíÅôK'Må4±î¯;Mô†c<6½¸ÍvÃéÆeƽ˜ºz¸‰çkÍU-gWr­_““›;®O%«/Ïjù•¬b¹åaÜt°iVUËÙÐJ¾ÖÏÔzq3””õ͆6‹õ΋Ó>àÎëW—Ĺoí}q Ý97½8D¨ŸgYj)Že_ a1åV¥˜œÏwl«*‘­°»ìí½[­^}C4Ó,/Ií­Sµœ‰H2•ÎË Q$å¼Dœì÷¡­šõ)Ù¤lZ¿Qà4MË@ó=¾lšzWË=Pb[ê°)Èo®ªD4ç±®¾»S‰„Íp̧ Ü­´}«…½˜§óìX÷ÀX³î[=нù!°ÕZJÌxçÌåõk 1å¼ù—Y¯Ÿ‹…Î;ªC³ªZ>/ç¾5©ç~Úu›ùˆøþšs*ëWöÓ”t§?.{qŒ0_žÑõ~yõÌöt0¾ì†óhÚôoÇšˆ1âåÖk Að,ïÐæJ¾Æ˜,…eã]Ô¡Y眢ºº3Þ9¢*¹ ØÄ¬×OT½¼zFϺs:νtÍX¥ˆ¬›çvS6}0®ìÆ€& ÑÔñÉÉÉñqª§\@<±½³VEýM·f;îÀ=¢«ûìê²ßVÁã#Æj¹ÔúS1œîF7(Î}«…ã“&­Mn¦KnZ™¼wVÛ 8—ûÚS„@â4圪Wß86+à1VË­Ø}±ÅV‰Úu(ú Z öwiËó·lÔzqc1£8Œîºë ƒ2×`ŠS– V«åã‘<÷ùüœ×˜œ Ñ/O~ÒUª²ºÏS™|4Uµm6}šéh))ë–Ú*LÔ“k±ˆR®&KáFUæüÑR—ËÕÛM_E$¹c=¢…DÑ»ë>œÁeªÛšL¦,»ϲ´æãœßÜß•Öü}·æ[-hŸ­87+ÄéÁª;ã$ZÕ¾´vcžþ×B`ëø¸`¦µ 5Hwn†3ø  užæ¸NÙ @nä 7È @nÀ«…ñŸŽŽŽ0)€¡pÿþýçÏŸÛÊVÓÃÃÃ.Ù†^&Â'Ÿ}޳ÀõåÃÞ뾘šv>úÎבçÏŸß¼yÓ|[Å€1­N 7€1¹LTn43³LÙ`7nߨùy±“ùù‹ÉOÚÅÎàa\ìŒqP­€‡9ýâ´U\JfƒõúØ®T¶É£{•í… KL+†…íÊ ­Ó~EYB0¼‹) 'ÌN[Øp8¬e@mk×rF;¾Q¬7=^7ZFŽ-]/Ýn×OãóóÔàéa¼™ ÅŸÊè¶ÓŠvNaQ·qT+ö{ºØ™_ÿ‚}±n‘#\h)Ø|Ç«~õÑ?*Æö-ÅÂMkVÁè§Â¢KÚ¼°›UÆ%7K©TÔl+­³³“““ãªóR²í=À˜œ<jÇkùx(EÒÁšŸª-G%»’«úWS«~*%³>ô¿¸¾M;•J¥²½@;Û´S©(Š¢|ùsú¸pÑYFwðbgvEQ”J#;°®{±óöW+Z±¢…íÊþ»üÝ}SBq±³þ䣯Eùê£'ëí+ÔܯQmîY‹›ÖÌÁè§Â®³Øl7¸Oæ¾*HÀ˜³…U“%ý&N“UfÛmÆ;×4B›ÑÊè\\ˆæ¼¢wŽ4#qëì¬_?£Ø~áþ­ÆÏ Û­Ÿoýð޹Lûàë·ß(>ê¸-ëÚ*‚Y8Vµî¯ÆÚ ›ûu•²õÛš~*ì1ªÍÿÑí×µ ¸gÑcÞ»!¢™eiõñJ.¹é=ˆ·×S-ûz£§¥ yÓ¬Q£¦Õ÷ðöVÖ¿`Œˆ8½{϶حû…ýùy‘±ww•æÜeÝ—‰ÿûãþðÅ;â§Ú}âU5˜æì¦á¨›^¢j.U¸lî¿Ì¹Á³p×Ϙ\xذƒ`«Ø|¯~£±4xú§'C¨{ë‡wÌŠðäOO-„#ø”ˆžæ]-¿ZÕÖÍ›È=µf¦§Fnýó[Oa7L›ÜPÃ%r©­>é%Æäd¨pé'Æäd(ëR/<±½T”×òñÖ‡SÃʶ÷ï|úŽ(Šâü6½+®ÏïüÞvÍ5/Š¢øÎ§wö›Ÿj›ê^-lu;¯ÿàfa{ÿÎÇo·^µ£¢(¾ýñ}÷)ÂÂv¥Ù©þ³!×­YÓSH·îî=šŸ¦o3—£­ÝÑÑ‘áá“Ï>Ç¿hpMÙþøW;ýìððÐ &ø'À4-¦`p¦÷y7ÏŸ?ÇC¶€ÜŒœ?xïæÍ›Ø¾r3¦ì§€— ìÝ 7È @nÓËWg¨–Nd7È }1¥ªål()kÏâ¾µƒÝ˜GÀ”†œÝ¨õâf(Y¢%íiX§§¥²c6~éÊ𞘘œÜ(r5Æ–Ò ãAðÄöÚÏß+gf ‹™²ñÊ·7cèϰA_±X܇ÃZáVò¥æŽÖZ#¶ÅÌ×ükèS-7ÚcÌ9E‹¿Ö‹’Ì¢©ããT”ÉÒF±Þn®› `ØÀ˜ü˜¤ãªŸª¹Š §é(çœGÓ§‰€ ¨j9»’«63²¡>Ÿ0²ìÆ~ýR¿x\m(‘Œr^}|Ñ’g37ĕ úÆãË3 ˆÒ¹]¢·ÇÒlj ;\K¹i>«X‡NJ†“¥ˆ$7 \¢=VÙÇ9«å㑈µ_ `ªäFÁ%bL>·ðž›õú;ø½³Ã i ÃÁÛ;;KE9é-÷ӛ݈ï¯ù8/%7[;¸åL¦¬ª-C…s…H9—óß]ð o©b6lèªMšE^Gð‰t”sò{=øè €©á†Cš°{ê͆’ùx$ODDÑÔñ– f¨pµ(I™ˆGS{1Ïpcj´Ÿ‡ó¤m‹öÚ´,­=^Éåã‘þòä'ÿþEã‹Bä_“–=‚‚s À”0¥N £ÿ3À8`b@ncâ†e „y ãÞ 68CD¿wsÃáo0D°w€Ü 7¹@nLr€Üä0µ8ùL}òÙçnšøðƒ÷0€ä†ˆþí_Wœ üû`C›ï¿v£Fa¿9…h'¥DKšI&ŒŸ.{7?xí{Î/‹·õDí7§ÖW†Ÿt‘›?ÿõ…óË\ÅÁ~Ó¥=fóú´-\.gZ™á&™²¯¦©K0 ×7n ¬ªƒ~4ZoþYVÕ®tµ*5OiçÀ¦€ ÈÍ_þúÂùe¾zì7]Úcv-œ<žmýˆýhëììääD3ä,%³ ‰_M‡v:fA e¬¦ ùáé/wº€jŽ4}~—9&óÏ®tµ*5ŒÈå¹`rró·ίžVîí1 § Ö ZÅ;ÕÓ@ F97úsšo0¸á§AòZæŸÎ£siUj;"×ÓÀpé²ü÷|XÛ“bó¢’"25í1gº]Î…Õzqs%WcŒ#î¶—>5ý5>Óû,i柗+¹Z-䣩㭀à>€þo5}M £’›ïz”Í~S–ås%þ8ëõ¯v¬&ìï©Ý «jýa*W%ÿZ!~µ’,¹n§ ~ïì÷—%žØÞY¬œY”dVJfƒ§ ‘ž¹€ÜhÐi`Ô‹©ïþÁ_æ*MûMã†hOö˜î knåsÞã…ÔòÕtÝéåÕ³†)(Íy=‚`Ó8õ=";ÃÏŽ©kšÎÚŽÎ=æõ9c‘›¿¿àÎ/Ëõîiz‰JR$‰HÚ·o4<±½T”×òq7ˆt-,Dz‰19*\úIûÐG¡™eiÍOÕ|<¢ÕrÙéãT("É­}ËÆÍuÝH3üÔ¦_rjBE"R©aþ)¸ ÀÈúŽ€aatbÐóÉgŸ¿µôŽsý£Ò—×úŸ^¾/¿áë|àºîÝ•¾ÄFžÝÀÁ(ä 7È rƒ)@n€Ü 7È @n€Ü¦x„¦@nေ-¦¾ÿÚ ç—¡|Ö´½ÖÄwœæ¹#êkX;Ü>“<šû‘;kð7ƒ váSþ¶ÓÜ)5§Êkzå k×k*p¿ürcé .ŠbëOnÞ–fÕåL‡%¶å»Êðk9„6 —ÙÚ]›Í¹­Û··Ü&nåæNÍqÚ«ãsó…מÌLÙÍä;„ÔÍY¼1´ÅŽS3-îïvo’ŽQÀ‘}:åF33øã7ƒ?nýLD¿;=·ô·èÀÊÿ»^ÜH–ü«…¶%¶›X•lRf,š:>•îv·µ»v6çnEèl¹ÝÕ­ÜЬ]œÎ³Ô“ñ¹žzqC’Y4u|œŠ2YÚ(Ö'¿×“5È)¿û{×ɇ#ûËÎü/{ñÓPˆ~û»ÿvïnåÿ]¿x\íÕ°MUëW—ĹÏ;Ûa›=¸Ýµ³åvonåöqºŠA»ºÚdr Ф9‚W_ômUî\¾S0f÷w÷“Gö‰ÐƒGø¿üôM"úõ=Ð8¼éÙ_-k‘µÝu/Fàº_öj nšÌ~­Ê‡{ &âþ>ãÊûŽìÓ*7ðÿ,ž~÷bðS1ëõU‡5„QÛ]ÍÜe×£5¸i2-ÁGÍ´¸¿»W Ç»Ú]w7çî­{;mû8­Çå.ƒ°B+¼s¥áî¿»àÍ{z€SÐë|öéþn¡%pdŸ:¹ÑŒÀ÷~s´÷›#—ánðÄöÒKÕ|Úžì´íâ´—1Õwa|nO–"IæÑÔ^l„yºv‰öz zÏAÜßí&_¿“GöIñª{„ƒA6˜ªKé³­À+=pdâÞ <ÂùêÒ)Ü¿v`u' ŸìÆ·wä 7È rÀõâÿü¯å––S´IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/beanshell_postprocessor.png0000644000175000017500000007214212032647206026025 0ustar ebourgebourg‰PNG  IHDR2N­[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí½ ÜMGžÿ?bKw±¯Á ѱÄ!cn’ºéûÒMFlé‘…Ú–‚‰62$¢¥…´‰!¶ ›5–ˆ5vÚNþï¤þ¿šÓg»ËsŸÇ}øÜ—×U§Î·¾õ­÷9ÏùÖ·ªÎ­ 'Ožü}D@D@D@’˜ÀmIl›Lø‘€¼µîHvòÖÉ~…dŸˆ€ˆ€È[ëd' oìWHö‰€ˆ€ˆ€¼µîHvòÖÉ~…dŸˆ€ˆ€È[ëd' oìWHö‰€ˆ€ˆ@¦äDpô§Oîܹ (5kVcäßÿþ÷+V”,Y²[·n±ší*ë:ŒU›äE@D@D - „yëÿú¯ÿš;w®±&S¦Lyóæ­Y³fÇŽsäÈ‘z&8p`ôèÑ[·nµUÔ©Sç…^àpÿþýŸþù•+Wì©è®²®C—gÃo»í¶Ÿýìg¥K—~â‰'*T¨à’LáašU”B;U\D@DàÆóÖÆ²ŸÿüçåË—?tèО={Þ{ï½ï¿ÿ¾oß¾©gô‹/¾¸k×®»îº«iÓ¦?üðÃ_|qõêÕÔ«.DsΜ9ï»ï¾mÛ¶;vŒ_Sß±cÇ믿ž+W®"á§¾ýöÛU«V]ºt©K—.NÉ„WäT®´ˆ€ˆÀM@ ²·¾ûî»ÿó?ÿ“¦öîÝû믿þꫯR¯ÙŒãªÑß³gÏZµj‘hß¾ýµk×R¯ÆÍ |þùçxã7Þ|óÍÓ§Oã°«V­R$üèP…Z—·NxEáf謈€ˆ@º#Ù[Û&Ýyçxkâl›³aÃÜ!#Ñáý÷ßß½{÷Ì™3s–€xÙ²eß|ó;}û˜{f(›ñólÙ²qêÝwß]²d Ë¿ÿýï'Ož¼qãÆ{ï½·mÛ¶äp–âŒ<ãž)k¼5™äðíüœ8qÂ[Ö™ä,kº^½zxkJ;wΔÅmÿÏÿü ¿|ùrñâÅüñ|ЪýðÃׯ_%äí©§ž¢Ç³råÊ9sæsüøñ?üá÷Üs¸l“pUdY¡Ê”)Àœ1c’áµïÞ½{úôétzN:ÅEݺuÛµkgô‡ÀñµÙ” 9bIñF§¾E@D@b"àv„¾…™*ÆÙ0ŠËŒõc=fdXð5`À&˜kÔ¨‘!C†ùóç5ÊœÂU¯^½ºX±b?ü0¿ûÛßC6§ˆžyÄ3¼}ú°ä í8!¢[‚à:´iÓ†`—oüó»wÜqÇ“O>ùïÿþï&&æWí?'þÑO˜0áã?;v,1>ØL ÷êÕ‹N^ü£>úôÓO{ôèѨQ#g{‚ʆ›äÔeúÂ… ˜·nÝ:z*a»D‰L¢?žï‡zhРAä)R„Åb3gά_¿>±¬iiõêÕñèΊªU«Fp 4€ <ØyÊ·"+ÀrиýöÛÃk'Ž7nÿxùå—Í8‡™G‡d36 ·Æ~§ñ¶EJˆ€ˆ€ÄJ rlMDÈ@.®—xG…c¦Žï¾û޵W$p±<ÐYbMØÍœÁa2qH|3š½fÍ#ñâErì‡ wž={öŠ+’IAFã µñ…ä㉰ñ…¶ ‰ ²á&95D™FáðáÃ/^LPË@÷üÇ0„Àj»Ã‡£ÁN`W©R…C†Ä7mÚD‚!n¾é¸P–°›tÄoE¶@úõë‡ÿuxí4¶Aϸj”˜>S8œ›ƒN…[âk¼ÍTBD@D V‘ck\õ°aØå5*œ#«xSÆ9MMsÎ*‰­9dŒ¿n<‡9{ýúu§:ƒ´ä˜oç)Òœ%lmÒ¤ ®š ›·ÈZ¶lÉè± *n’«ŠhyÕ›AzE‹µµã¥LÙ2eʘÞ×ÈØƒ9ÅRvú.ï¿ÿ>q9Bêþýû›îKP¥¾YaÆÌÇ%'¼v3ì˜q±V‰p8!6 ·ÄVí4Þf*!" "+ÈÞÚhİ<û™gž!€c™êd ‡dk%ÂÆ¯2„½oذ!Û#FŒ°Ñ'P‹3žÌ 7£ñáeóåËg¼&… :‹§Á~×Yëw‰VÃfÕ˜yœ÷Ñf~›çg&›ùãÏ>ûŒõhO?ý´Kóз"§€M‡×nÏîܹ³lÙ²¶‰p8!6²uqpÖ®´ˆ€ˆ@ D ·0iÒ \.\ØL3³F Gn?Y²dÁUàªyÊÿö·¿åÝ$ãÉ¢| ÍÎ(œŸd15¢Íš”1)¨HùÄÙæÇa¶lÙbŠÛán§ƒ$Íäô#<‚ # F¯L‚©†ÍMN¬ßáµÛ³Ÿ|ò‰Ks4p|m6z¼§l]á\fèPD@D >‘ck¼/ŽÇü<uàr˜lÆ+wíÚõ¥—^b! ¦u™ÜÅoŒ>ðÀœååc¬ñæU(EÊ(ºó5'_sf:t(^f&›w‡£+Àëa¾òÎÌ“ˆt’)IS Ãã“&Mâ·K` ™ï¼ó YbÆ”‰gŸ}–ñÊ•+çɓǼÄeV¹sŠ_‚ã®zäÈ‘,ÙkРA¬–D¬ÝØÆàÓ¬tc¼šÞ«ÄÃá„Øt*¢%±6Mò" " !"{kfŽÑeî§\¹r¼'F#.ebS§Ne‘6æV *Ä’4bndða‹-â]d<ý«¯¾ÊTî´iÓ"zk¦± =íÏR oIálL!Í0§‚LŠX0&-Zà«ßf7‰ûYoßiÆTÖÖ™eäá…7hýÀéÔ©Ó‚ ˆ}Y‚‡·FOxíœÅá3wÀ‡Á ûÚzœ›CN…[R ‹€ˆ€„È`Ö…… …Ÿeåö™3gx}È®CFžW†pófqƒÛyÌtF3 Í˜99B)–_Ù ×p\g}MrɤüŽͤáte\Ú0€÷²°ß•oY \¾ïÙ(3CjG Y‡Þu|ApBl9E]á–DÙ‰‰€ˆ€„H€·Ñ®S" " " )'Ã*³”W& " " " q·ŽšŠˆ€ˆ€ˆ@š·NSܪLD@D@â o44% o¦¸U™ˆ€ˆ€ÄA@Þ:h*"" " iJ@Þ:Mq«2ˆƒ@ào™}ðÁq¨S”hÛ¶-¿påÒè­‘£€KZ‡" " " ©Gà­·ÞòUæ­)àuï¾ZR/sÌÔ9©§\šE@D@D yôëÜ:ȘÞ:¨XZæëß5-«S]" " "öC¶°Ò*³´¿"ªQD@D@ÜÂÇ’å­Ý¼t," " ÉFàV÷ÖW®\Ù·o_š óÆo|ûí·Ñ\$+iÑ”’Œˆ€ˆ€ÄA ò¼uëÖ­ÙjzêÔ©?ûÙϨ`Íš5Ï?ÿüôéÓ *G}qiÖ¬Ù¥K—ØýºB… O<ñDÍš5ãVe Nž}úÕW_½áÖ8·ÀË–-ûâ‹/â¶Sh1ô_ÿúW"ã)S¦,^¼¸Zµj)Tè*>`À€%K– 2äõ×_ß½{·ëlÈa—.]œ/»Ç­'¤ H_¢òÖY²dY¾|ùÊ•+]m7n\×®]üq|’uHO=õÔ¨Q£.\Hܽ{÷={öüýïÿÝï~×·oßÇ {÷îåð‘GéÖ­ÛÖ­[ÉDyǎ׮]ëªÂuˆ%EŠÉ‘#Çm·ýhù:wîüÐCáÒ.\¸`„ÿò—¿Pu“&MpêŒ ˜ÌÞ½{òÉ'ƒ jܸñK/½D&þþìÙ³ÆìŒ3fË–ÍH^¼xÑ)F¦o-F8ü;C† ÷Þ{/6ïØ±ÉC‡õêÕëßþíßZµjõÑG™²XõûßÿžL‚{r^{íµ-[¶ª„æFÆ¥‡¶Pœx;ƒÔRWŸ>}êׯO{ç΋˜o+\µ#æÍñ5Ûeƒ±Sß" " ©D *oÍÿŽ;î?~<îÍiN®}ûöøŒuëÖ½ýöÛæÔÁƒqºxëŠ+îÚµkðàÁ‹-*W®ÜÆñÈ0 M”L¼NAüаaÃpœçÏŸß¿¿õ¸ÎZlÏúæ›oΛ7¯ÿþ&säÈ‘ø¹ùóçãbÓ6™E‹%{–-[¶yóf“ùÝwß‘YµjU!Þ‹ÀºL™2´ gÏ«èÖ©#L3bäøÖbÔ†Ó®wß}å÷ÜsßtP (@ú7Û¶m#sìØ±¸ð?ü°S§Nhk×®]ñâűЩðýN=äІ:pù(ôU‹<§@JÇ…ñƒ|RÞVxk÷Íñší²Á©oÔ#•·Î™3çÿøG^›4i’ÓÜ s½Ìòâ 7lØ`OeÏž}ôèÑ<剀q9cÆŒ!ã,!5ßøò'N—/_¾FG%þÆqâÔÉ´J¼ úï¼óuáÂ…9‹k§Òûï¿ÿÔ©S¸ÃÏ?ÿÜyøá‡`6ŒG´zøi6V¦½q‡Û·o'Ÿà›±Ü3½úFÒ%T‹U”`j¿iÓ¦ ³?ûì³ÌñS#6ãÖ°aCÌxÿý÷é¬ð¡CmÖкL™2œî‘ÑìÒc2 lj›‘ñUk2iZéÒ¥sçÎ}çwú¶Â[»7ÇW¿Ë† ÊHÈ«ÌLMÄgµjÕb~—q]“C7mÚ41¾M¯`mºë®»pØâ­qäÁ سGŽ!=sæLóûjœ%Î6~ÂÊø&~ó›ß4jÔˆ™f*®ý«¯¾b-·@FžŠL)F‰?þøc¢ío¾ù—fU+V̤3gÎl3Ÿ|òÉêÕ«?ýôÓ¸UÓ¥p‰Õb5%èF÷ã/qÀÈ@ l—æ1ØÀ3ùÇgŒ°Ï=÷„½Ú\zŒ@¾|ùLÂW-„!Ï ¼ÕÔ oí®_ý.l-Jˆ€ˆ€¤h½5ÕIóÐgˆÛ˜Â8óìÙ³YÕ²eË~ýú1¥‰ùóçG²E‹QqŠ1LˆOœÇÂ[3 mbÁ^xÃpÞQ®ÄfÄž&¬X±ÂY‹M³Þ[‹=’ø×ýW"~+@|îÜ9ûS5 3Чá, ̘1ƒ©w|6kÈÉdDÚté±ù&á«–`šþ¡|¥J•ŒXP+¼µ»r|õ»lСˆ€ˆ@jˆj$ÜSd ×DðJšÅY«W¯f&•±VÞY²gC¬¾&gÙ3K¦ ÝV­ZÅ(¾™Í]¿~}HANᄘƙáb OÓf ØÔkæÔ?Žr¦‡™™F9V)dœ·ŒÎ¯¿þÚ†æ.yßZ\2Ñⱊ¾Æ3òÏ,~½zõxÛ›©}& ~ùË_¢äòåË|,XÐ.Ù‹¨ÙW­±™9~æc‡‰o+¼µ{s|õG´J" " ‰%ClMŬâ&þ#~%]·nÝ L˜0WªÂű€‹ àˆöåÊ•‹¥g¬®1bÂÌãþéO"îÄoñRœ÷¼.fÆ—UfyóæE’•SÌ 3QÜí+¯¼ÂD8£Í,çéabVÞÌÆåxÕâ¡E§ ‚³,Y²¤÷ŠqÖ[‹W,bþf™¸Ÿi{V“=ðÀô0±`džZXô<öØcðaŠwŸZJýùÏ~æ™gxÕ›`½M›6,[ó¶‚©zWí¾öxÍŽh•D@D@K ÃÉ“'}5û2=q®3gΘk¸Ûo¿Ý9%ì«Ö™‰o`ºšÙ\g¦+Íï¦FÜÕƒª™&7cȦ¸µŠñd' oìWHö‰€ˆ€ˆ€¼µîHvé`•Y²È<á:¥PD@D@R€bëÔc+Í" " "ÑzkvŽb+§}ûö™­·S¹´ˆ€ˆ€ˆ€DA òH8Û8²Iå_ÿúWü4;O°g%¿#ÍaÊÓZ„Í0œ;X¤uõªOD@D@R‡@doÍž˜ìÇÅ^™lòÈ>{÷îekËÔ1&EZŸzê©#GŽÐ±H‘ä#Á[³¡ä¢E‹Ø¨êü#»[b©Ÿ>¦!œ4iÒÖ­[Ù+³^½z:t0;fâ8 .\©R¥Y³f±!&-oÙ²…ô]wÝÅÖÔ|S<zãÇß¹sgÁ‚‘ggkS¤5j4uêTê%Ÿ ¶Ù41âþŽ;öíÛ·bÅŠX…çÞ¸q#2Æ^×+W®œ6mÛH³¶±_ß" " ".D˜·Þ½{73ÖUªT1®ÚÙ$FȸmÛ¶=zÔªUkΜ9¯½öš8xðàÚµk.\ˆ×$ù$J™K—.¡Ÿ½– DíÆ ÃSåè™>}ú}÷Ý·cÇê%³F¸ð9rà­ *DÎĉ™e>|8îÙä°côþýû/\¸` зˆ€ˆ€¤bkóÝY³fõ¶|ôèÑfÍš5iÒ¤qãÆK—.Å=÷ìÙ“¹m„³gÏ>zôh6^¶lßcÆŒÁM®X±‚pÙª —Aÿ‰'Ð_¾|yœ1¡ùž={ì)Žó9r$›7.ã°É)Q¢®úêÕ«uêÔáeÏœ9óÝwß5hÐÀ˜„‘DäÞn‡µG HNbë `÷çŸîµþСCd–.]šo\ ~ôÊ•+øH#Ép7Î8K–,xÊ¢E‹’`DÚ¥$\†IhägΜùÛßþ–Emh Î6òçÏ«&M8f—Z±‡ráGÕ«W¯o¾ùÆdbŒ¼µ—rD@D@’œ@„ØgÌ*k¦„y}+_¾|ÎÆIðj2>Œ/d¹¸S&%i\2Å[´hѵk×(õ8=7ƒóLœÏ;ÿÊ+¯°V.J%d#!¶ÆC?öØcý /|ùå— }3ñüðÃ&‡¹êßýîw¤õ«_=ñÄ$Ö®]{âĉfÍš•/_÷3kÖ¬={öK‘yæÌ™ï¾û®Aƒ·ÝöcÿÀW²T©R¸j@áNL®o†moÏ–-S­K—.%’+V¬˜W¹)EwaäÈ‘wÜqáÛ¥ÊuèfÌÀiÌòå˽MÃ`ôà}é:Ø-˼F/^Ü)¤*¾êœ ñV ¯Ùwß}wžL¯sçζ8 ïUpžõ-åUî,âJ{of—€E@DàÆ`AUЖZ¼5v»VcYExJbå!C†˜ák¢b;ä 4ÍÆØY²d!ÎæÌ8ðرcq´óæÍëÓ§O™2e|%#2Ê;7®1ªæ{÷îÝ8B¯r£'þü¸jÒø0†LfÐwDáƒóæÍk]5ú}$ߊ…¨²æ…ÈX=VØ&¼Uã†9ëº"VÞ$^&aÕ¹XtAð©øx˜o« 1Éèñ`peÚ´i,>Ç=“ÆB„MÞ™Žð«à-å«Üãûíº“}e”)" 7Š€qAµGöÖ”´Ú©…XðþûïoÓ¦ /ɼóÎ;< Íó½E‹]»vuJ2¾Z©R¥¹sçâ6C'L˜$I©ˆžæYù6{¯rgÕ)L[cB ªÂi¤S&DUJªsVa«6 ½WÄ)lú4Œ|˜LÜ*Qµ ¾b!f1_"u¦ä»té«wýúõchaÓ¹‰8àá¬Ý·Ô²e˼Ê]¥œ‡¾·±S@iHZñÏ[›&™·uYTŸtµjÕžo\²d }^Âm0¹hÑ¢ .ð¼Î•+>ž‚¾’ävóHݼy3“”^dDW¨Ú´iSž «â|•{ šœwß}—A{^é på; 2ØU„C§‘EŠ1>Ì)¤*¾êœšU>Au9K™w.cø?Bäš5k2.â”!Q•¯ÀÅ‹)ˈëÚèp0‹akäj²E®º|½¥|•û–U¦ˆ€¤w)õÖü¼³8×1cưÌjðàÁ¬1bD»ví£Y+~åÊ‚o[µjÅÚ1V6 ·í•$¿yóæx8FË/^ì%Ëø{ï½÷ôÓOó^² ß}•{ šfıÓ,| ’qæ; 2½ˆ`í IDATØ)oÒ@˜?¾1’™¯@ªøªsê÷ò ªËYŠH—7æRVV¯^ɧ€IGTå+À*6ÆØMa}£ ô®XÅmj÷ C2¬Q÷VçÍñ–òUî-¨¸ d8yòdH3”yžÆ:„xöìYf@sæÌi5ã& ªx Û“ðJ’Ou¸|4¸„Íá©S§ˆàÍ(“¤Ü·x¬™.c| ¶:ùÑ–YSM)“FZ›ðUSuV•3áåÃYߺœ¥HS‘oT틨Ê+ÀC3cM8iózji,a7 \U„ºJ)W¢³" "lÂnTóÖ±6Éë•ñ¾nÀ+I]f^3¨R¹ëTr—X|‡.c| öjv•ò ã«ÊUÐWÆW›Íôò ªË1 ß‚.™hTym6®š²®*\õÖå›ã*¤Ü·¬2E@D HoNY¤Ül^#¶cʵIƒˆ€ˆ€òÖ‰¼˜ôM¤:韤t•™0Š€ˆ€ˆ€¤6yëÔ&,ý" " "RòÖ)%¨ò" " "Úä­S›°ô‹€ˆ€ˆ@J h•YJ ÆQ~ÌÔ°=ÁâP¨"" " é”@¿Î­£±\Þ:J‰—©Û¨Yâ•J£ˆ€ˆÀ ðÉGïwëð㦔±~^{}f”Eä­£•x±û‹Çö^‰·@E@D@RL`ÝÞ7DÈœ1ug–å­S|¡¤@D@Dà–' o}Ëß " "ô2gòßÛ"Q†+¶NIé¸u (¶¾u¯½«ål<ÊVlîÊסˆ€ˆÀ 'tÞšM!Ù÷.xŽ{ï½÷w¿û]¹r傉]«3eò‰õ©‘ü·Þz+¼– âá¥â>›¨ê,Ocɯýë.]ºøZµ`Á¶ã”·ö…£L¸±2gJ¾Uf¥K—îß¿ÿ—_~ÉFΗ.]5jTÊ=õÔSGŽyûí·ãS•Ââ±VšØêØòå—_6687Õ*É‹€ˆ€Ü(W~¸–ªUûIJëcSHv‰%f̘qìØ1#¿wïÞñãÇïܹ³`Á‚8³ *¿uëVðÆ Ä;tèаaC2½’³gϦàµk×:vìØ·oߊ+Ù€föHnÔ¨ÑÔ©SÑÉaÙ²e½Å½U Ð”­]»öôéÓ‡е¨ªU«­È!C=8å#¬wµ+Žêüñ… vëÖ­FÞ¦e̘±H‘"ÎüqãÆîøñã•+Wnß¾}É’%gIG ÖUJ‡" " ©DàÊÕÔõÖñDîׯ_?zôèÌ™3ÏŸ?_¿~}ZN„=pàÀÓ§O4Ï7lØ0\/ù'NÜ·oßðáÃqT…  ’ćá8säÈ·6bA4<ˆïÇÝÞwß};vì˜3çÇs2†²6lÀìªU«âéÍ!N´J•*øÅW^yÅTêÃU{ÛGuÐØ¿ÿ… |ÛuõêÕï~ú>|Øà¿qÒÀ\·nïxC”`}«S¦ˆ€ˆ@ à­í¿ºÔ ùgÅbrðñÄÖÛ·ogºš¦þêW¿zâ‰'H¬]»öĉÍš5+_¾<ÎlÖ¬Y{öì!"$óÌ™3x¢ ÜvÛ=_ÉR¥JáªqZuêÔ‰HÞÀÈ‘#™Á]¹r%y¢|gñåË—{¡ $ñ¾xeFžM-Ù³gg?[¶lßÿýÒ¥K‰È‹/î RkuôoZµj…å¦^×÷?þñ'Ÿ|’Ì|ùò™éù^½zqH~Ñ¢Eéa¸äÑ=XWYŠ€ˆ€¤+?\·j?XºêáúØCg‚SNIç©ðt<ÞºX±bÄÊC† 1ÃׂL9S a«q6Y²d!ÎÆ91øôµm!l_|ñEn¡×^{-îJMA{9nÊ?ÌøàÝí7ð2ýïÿþ/&¿üå/³eË–9sæY³fñ·S´hÑ»ÔÛö˜„½ÅcÍÙ·oßÔ©S_xá ޵¬äB þŽR¦L™Ò¡C‡]»vMŸ>=!ÖĪ䩧žzâ‰'b-.Ÿ:ÃkLž³ñµ½téÒ¯¾úêƒ>¸xñâ¹sç&¤9˜1cFÍš5ßÿ}žªíÚµKˆZ¯’O?ýtذa;vôžrå?~Ü•ã{dy8ÛÉ“'ÿùÏöUkæÍú‡+‡pù~™J–,Ù¤I“R¥J5jÔ(ÜÔ$9ËøÙ³gŸ}öÙ$±ç4#þ¨”7ŸÙ³gýõ×@ãÇߺu+5ú‰íÛ·ç@yHýìg?«]»6}èСô}e .\©R%ú˜ ¶<óÌ3[¶l!}×]wõïߟoôìÝ»ýŒ,X ;S/‡ÔË£¶oß¾+VôÊx øþûïÛ¸qãí·ßNW£aÆΫîÕÉ_õ¤I“°ùzõêQ$¨kùÁà`2dÈ@|I{}mvÖem«U«–«à¸qã¼”ÈñZî›éËaÇŽ„§GŽ¡W®\ñHÄÝv€”+WŽ øÝwß…’i£¯ ¾í2wÏ,zîç°lÙ²‡æÊòº?cÜæ°ôˆ†ÂäûVgåC¯Zµ*7OˆŒ9Åm7nž°!¾–{Ùºþ.¸·ù32dš}¿}ûö±cÇrzè¡'Np'9ÒkÉMù‡I3£¿yŽx·ßðËä½p6Çû$ñý37òÞ¿«'„˜} 3Þã{SykäÉÆÍÏ™‡s4/Ö %E þØ ¸Ò‹-â‘Z¦Læ32f̈“4hкuëð+ÆÄƒ2'7sæLž‰<‹ƒdÖ®]Ë€7‘úàÁƒQ‹À§~òÉ'è¹téóëø”sÓ ñ(¯Q£¸9rà­ *ä+CY—'NdHgøðáݺu£”1Ò~»t^¾|™z·mÛ†ƧΙ3'h¬’g(öW©R…ÎÊ+¯¼d³­È$Œm®‚œò¥äk¹73ˆÃ¨Q£¨îÉ'ŸD?S¤ÆçwÜmçºÐµ2áuÓ¦MÑdƒo»°Š Mgî¾ûîã! d4üâ¿ GàÛ«W/údN;=êªÎYÊ7Í­‹ 4ÝJ˜Jü«çcCj:‘ÜŸýúõ#Æf_…dúZîb‹˜¹ôöï‚Cü‡Ñé „S#FŒ@¦k×®ô´ø{ ±áæûäùÑß<G¼Û“á2™Ëíúö>Iðþ™›RÞ¿§¶ bÎrÐMå[c‰%пzõjg-J§±5½<—)?ü°É9tèÐã?~ñâÅ|ùòõîÝ›L¬|ód†Âäá‚3?b$“={öÑ£Gs{-[¶Œï1cÆ\¸paÅŠÄLèáÙD0ѬY³òåËóàÃ7°äW}õêÕ:uê ³|ùr_NYÔ9sæ k—4hà]1ÁíèÔ‰ü=P/cV7^ºt)ž•IzoAìçÁ,b˜…AöX2$¼‹/î¥äk¹o¦/+&É0‰„G}”J¿øâ Ê:Í wÛi&?&ÏDiݺuA•¯ \/o»Œ ôÀ™¸%PÀa“É%›0a³¹˜J¬ùôÓOÛQ¯pPuFyÈ7OFβðÂÈpHgÑ%O/ÍädÉ’¥M›6¿úÕ¯è‰Ò{ãþaÆ»6Í×r[£ÐÞ–®9ô¶?Í0÷¡éÑdï4znÊ?LšýÍC+âÝ~Ã/“÷¢›ï¡X±bAO-ï}âTDÌÞxA7•ïƒÍDGüSŠ´×58«V:n,'‡úà­)ãZ‹dáa)#^Š`wÚ´ikÖ¬áZ’v.5Ê›7¯qÕ!2 ur›RŽgÏ“‘ÑZlžª"f‹ÎÏÙ³&"c @'~F~ð¬óæÍëÓ§£.=ÎC|2/Ë7eñ7ôBøËñ®Ý¥½@@Œ?-¾wïÞ›'n3Þ‚4ßKÒ×rßL_ß~û-u…7ç'ú¶ƒ…1væ8ó`NOækCÈÕ‡§q{ÜÖ åÊ•‹Ž?—‰åôä›1w‘WØ·:g[‚Ò¶.#@ï3HÒæc·=JnEþþô§?q7Ú³&d¹KÌÞ–®|½müꫯȵWØ•sSþaÆtóVïö{™\WÍzt߃žZÞûÄê !fo¼ ›Ê÷Áb4sÊüÕ¸ü‚­W‰”ßC+²·¦në¡v0¬mºù&“˜˜É¹.]º°4šÑBßaºhdœUØ47%é-Z0 h3MÂ>pCdœE•˜ g1~”ˆŸÎyÖ¥Ó¸ó§èˆÐ™àE o›CDšŒ1Ì×f+ìLØ‚A”|-÷fúrøòË/©Ët ø3fÀëcŒ1–gLmg®ô±Çã•’>ú¨{÷î¾60äñq!Í£€Ä»ÌŒlÞ¼™u..sè[¯¤+“YäØ{•icbV— ®¦ÉC8¯¿þ:AkÈCÞƒðµÜ²uUÍ!lÄÌ­xî§]"à*~SþaýQ¸ÚnñF$¢¹ÛoàeòµÜ™idzÿÌ’¾éhˆ…ÜT¾52*ÉB3³ˆÄ×)øZ¢ÌDˆÊ[GSCâˆ_2«Á3…C\££Î²ÑÈ8åmºZµjt9{!ÌåÑÉã›ûŒLºÏK–,á9κ¤ «„œÌ“$"[–+=ÿû¿ÿ›[ÔÌÖ…?ƒnª Í_ s‘ΕN3)Zeæ´’9K\)¡*³z<˸ެHt ŽFÆUÄ2fÅÒ3†Fy™‡˜øØ±cœjÞ¼9e´yw(HÆ©5½ÄhhÕªžÕ÷½§N†^Ÿþy¦Æ‰éY˜V½zu†¤œ mšð÷Þ{Ç=Q3='¢ß` ²ð_J¾–ûfúÖ‹«fÎ'ÍâFSM0j·‰øÚ¾ÿ~VûU³€ sçÎhóµÁ·]¶jWLX°h±S§NxtF0õë’±‡¾ÕÙ³á ^Pfú†™ ÄÐCXæú€Îh`NNË C\5’A–;Ù†›ä{–‡/è:°òŽ{˜Déò£ÁŒ¯UAä ’q*ô½“1YÍÝžl—É6Öû$‰Ç–%ÁÊ'ãgÑ º©‚jdÁqQÈ’Ó¥N ÂþÖ„³!“Þ^kð&á·SðCöI甌FÆ)ïL3CHa–2Ù|Ædpä6Ôð•±Â$¸›‰ûyˆ83]i—NšC ñùˆÍ7½Z«0Ä\á€ê`wô¥äk¹o&µ{ë%@¡Š pÖ_ÛmqgÂkƒo»œElšv1˜É]d¦«m~HÂ[]ˆ°=E8Â[ tmN !–»ØÆT1t³˜2çwèèÞ1/@W2J Ñ`F&¨:_ò®ÆúÊ8ÝÉV&& #Þí7ð2±ô7Qé@3ªÌXË>XPéŒY½O’ˆp,%g""±›ÊU#£†¼6ÉÄPø“ÓY»Ò±w¸  7fWM÷dh42Ae}o×ÓÜWÆ©§Ñïºt†4Ç©ÙW,¢=hpUGŽ/%_Ë}3Ñà­×¬ãsì›vãÛ(ß‚ÞL¯ ¾íò$‡vE3ší,ë­Îy6(M¨4ØT$²ÇLýq÷'}D@D@D môëÜ:ÊŠä­ÿ Ô°þîß!ÿ§Ó:à„øY¾£Ñ§‘ðh(IFD@D@L ¦]yëÓ—:H8yë„#•BH0˜ç­Ùˆ‚_œÇ 6‡àgœ{öìy£¶da·«L™b¶?Áü¤ND@D@RŸ@<±u¦L™Â62üjñôéÓSßHŸعò‰'žð9¡,¸éÄ›²EÉŸ>³gÏþúë¯ÙKuüøñ[·n=~üxåʕٓ˜“€Â¡²“LíÚµñèì¼`Á_vbGvNeÌgžy†]âI³‘\ÿþýùFÏÞ½{Ñ¿sçNö˜Cg… ¨—Cêe¢¾}û²ÉWÆk»d²÷öÆÙ„‘®FÆ Ù±xÚ´iì*íܫÄjˆ€ˆ@º'OlM£…^´hëÎË”)ÖÉ칋“4hûã 6 Ú°aÃÌ™3«V­Šƒ ’Y»víÂ… ñ¸Dêl߆ÚråÊáS?ùäô\ºtiàÀ§OŸF9;X6 's¥À†ÓxëB… ùÊPÖeÀĉ÷íÛ7|øpÜ3¥8þ<›Ò_¸pÁ¬oHNñÄÖ‡bK`6{Ï—/_ïÞ½iX¯^½øÆy-Zm›Ê¼ò+¯¼b¶¹ ’aZ¶MÅ—/[¶Œï1cÆà>W¬XA¸Œ|ù‰'š5kV¾|yœ4a÷ž={J•*…«¾zõj:uY¾|¹¯ §¬ׯ_G†½ÙÙ¸Aƒô08Û¸qãFÑ ­ˆ€ˆ€$-x¼5;œ3’|çwgË–`—ñä5kÖ>|˜´Ýÿœ6ç͛׸ꆻ;ñxPœ={ž;Ý'{¶£‡ý­·Þ"ÁYâlÍk:E;vì¨Q£æÍ›×§OFÈäãÒ¦CH6ñxk†µ›6mj[BLÌDr—.]Z¶lÙ¯_?ÆŸí)›ˆFÆ ;ùóçç°E‹]»ºeŒpÙH†È8UÕªU‹ ò¹sçâû‰ø'L˜à<«´ˆ€ˆ€$-8ç­íaHœC‚ìÕ«W3ÎÌ86빜¤£‘q1‡ÕªU#Xgî%K–»¯ZµêÀœ"2fà}óæÍ—/_’q*dn›ql£K‘+W.Ò9‹¶îÝ»¯_¿Þ)©´ˆ€ˆ€$xëºuë–.]šP•õeįøÅqãÆ¹ÚŒ«ˆ9ij²ôŒ5e#FŒh×®1ñ±cÇ8Õ¼ysÞöf@{ñâÅA2N…W®\yã7ÐЪU+–˜±<³çÎcißNI¥E@D@D Ùd8yòdˆMµmÛ¶æ7ÇYÀef¬ùí†ÊyËË«6o)“söìYæ˜yËË)€a8r;÷ì+ã”''îÇ»;3mšŸlÕ®–†" " ©J`Ðè)8ëaÃn<óÖ¾ÖÛÅe¸O_2£‘ *ëëbÍ6[ÄWÆž%Á"5>Î¥E@D@D ù $`$<ù) E@D@D ]HXl®)X㑈i 3[P H=òÖÿǶ_çÖ ­kêúÿˆ(%" "ä­ÿé:ØÙþÊÕˆ€ˆ€ÜP𷾡øU¹ˆ€ˆ€DA rlm~ò3 UHÞ·v½"•*&H©ˆ€ˆ€ˆÀO‚&d#ÄÖAÅDUD@D@D ÍhÞ:ÍP«"ˆ“€¼uœàTLD@D@ÒŒ€¼uš¡VE" " "'yë8Á©˜ˆ€ˆ€¤«ÌBì¸~ý:»Y³Q‡Ý«#D؜ڰa{sU¨P!¢¤¯ÀÕ«WÙ‹zÍš5Y³fýõ¯MíV»a²ñ{WûôÍüæ›oØ$Û÷T3ƒšÌî¢d³Öª {‚ÊîÙ³‡I3eŠÿ> Ò¬|è Ä[¿ù替ùÍo:uꄃ|úé§£¬ïÅ_dƒêˆÂ?üðƒ¯ÌªU«ž{î9³o&_:µ-X°àÃ?ô-囹råÊÉ“'ûžJl¦ÓH§æ…?}œ9i“²ÇU»½ûöícqvw èPD@D - Ä38p`ÆŒMš4éի׉':¥Å8ÈÛn‹Ð?xê©§Ž9BèéÕ‰‹%³[·nÙ³g'6¯r>ýôÓaÆ3Æ÷lb3ã62±fXmÑØã¼>øàܹsŸ}öÙ‘#GZ%Jˆ€ˆ€¤1x¼õáǯ]»Æ«ØŒåÞõÓÇÛÆlÙ²…ð·V­Z}ûöå¹Ïv×µkמ>}úСCÇÏá!C7§Ãñ#ߣGÄfÏž½sçN”wìØ‘â+V´8^ýõÕ«Wsø‡?üá ¬G¡ÕfÅHìÝ»—ŠÐS°`Ajñ¼ScÕªUrz“&MÚºu+éõêÕëС£ëS§N¥®^x¡xñâ(Ä]íÞ½»_¿~¾š}ÛèÛä;v¼üòËôE¨ˆhÕ/ûªÅ$º,7nÄ0¬jذ¡³¤}RãP{ÿþý¹¬ÎËá2F‡" " ©J B¤ë[÷/~ñ‹Â…2@¶•IDAT ¡[ãÌåË— ðÙgŸ5mÚ”üråÊ‘ðàA&JgΜ‰wÄëpˆ§7òæãÁUªT9~ü¸!¯Q£8GŽxëB… 9k¯S§•’éºuëåV›•¼téÒÀOŸ>=hÐ :ÄÐø~{–ŒíÛ·—,Y’46#¼mÛ6ú ôæÌ™óÚk¯‘[Ú¿ÿG}d 2ÌŽËÒìmcP“G…ð“O>‰Ú“'OåAj'NœÈ(ôðáÃKp¡0½©t J”(A¦«dªÖ·ˆ€ˆ@ˆ[ðÁ.ƒ~øa‚ &0úÅ_Y2oMä·nÝ:|gýúõ;wîì,‚0žØ÷LÐÆeË–Iè¥K—bâpÕ¬&Ã7;•¾ûî»óäÉCÂ{Ê)¹víZç›5kV¾|y|ÿ¬Y³X'UªT)+ChKš•S|#|ôèQ„Õoܸ16Ð{èÙ³gõêÕY:Ç!=º#ÇŽ£¢ÙÕFס©š Ô£>Jè™06x ¦3Aæ™3gXI× Aïôe½©t è?åÌ™ÓtŒ¼÷ƒi¾E@D@RN€¥ÇA?!Á[S·kݲQ”+W®#FÌ›7oÊ”)£G&t6³×ÞÁÒ¼yóúºj4ãqÕ$Š+Æ7£Ífä™tÜ㌉æÍf$Y²d!Îvj3>Òä›K—.Í!8N°/˜?þ‡zhþüù D³´íþûïÇ]…hvµÑuhêúꫯHxW¡ûªÅºAcÇŽ¥7ä>}ú¸ ú ¤Þ% :ÃÍu3˜¦é[D@D åÂ÷Њ쭱À×ÕóoѢŮ]»-Z´yófã’™šÃb&)e=½Ó¡Æª GK ëÚµ«oÙ ψ4ßwÜqßįF’ð‘(ÖDðD´xkšÆØ>Έš’ o\8§åùfpžáz¤ƒÔ22_©R%¦Ìéy08Á`†K³W •.!þÙ³gYŸ€¾w‚Ë0Š€ˆ€$œ@<óÖ,8bĘHŽÉ]Ö:á¶‹-jf¦‰DñpŒú•F´ oÚ´ Èдñ[‘¸Ü?³°5xªU«FÈ΀í’%Kð¾ØcºVML “cm&¬_¶lanÍš5e¢šEj(aXžq„#j¶Uø&p½¬_3ƒí̦㘯Z&³!sáÂ^cƒÙ—N_ÛœÄ^Êi— :H3ñxkœ4ƒ´íÛ·ga6?TÒ»woæ› ìžþy–’ñfã¥,áŽØ„‰_™öæí^ÖRùæÍ›ã¹ g/^QƒW߯ûÁLµ2Pß®];¢Rf]b­[·æ'VðÐÆfü18ë¹ðÊŒ?[aÂk¢|†Äñ²dF£Ù–õ&PÒ¦Mœ4«Ãr7]“ µ¬ç÷^°¿U«V,1cúÜ¥ÐW •.sÿeË–½÷Þ{]6èPD@D ÍDØßš ÕwÒ›À—A]Ü­}ušKdÌl´y%Ú™ïJã2 sYƒ<ƒÏ®…Tdâq‰Ú]¥¢?dð–âÌ7ûy÷ÝwY“…G7gO:Eüj¢j_ygf¸f§¤7}ñâEZJÇ{Ê«È ˜ÓK𠛜 ^‚Ï?ÿœ÷ÙXšbFyʈž@Ã5¢š·öV†c3˪½§¼þÛ+ãÌñ•÷Ít–Š˜÷.?þ¸nQEÏ ¢B+®ÙŠù&B:1^µ@æã«Çd ÄJÏWÞdR…\uÈ%Ð)Hqzë”ÇËÙf„9åªâÓÀ¯tÅWð¦)Í%ÐøMs¹ÕtMà†yk³t+]³KïÆë¤÷+(ûE@nñ¬2»u訥" " " ä­“á*È# oFGçD@D@D È['ÃU " " "Fà†­2 3*•Ï™:'•kzˆL _çÖ‘…~’¸½5 ÖßÿWÄ£¤&1H!~ÉŠ_¶à;= †’dD@D@D Ábè•·N0}©„HŒ·f[h6ã2Ʊû<&ÜP)[–@ÌÞšÝ89>ùË_`÷â‹/²Û•¸`Á‚?ü0J hc›)6Õ0òl…n³ùt”$&" " 7=xV™1+þòË/4f“«É“'»6ÑŠÜéÓ§_}õÕgŸ}6ú"’[Š@<Þ:cÆŒ® ¸†Ê6VC† q±Û»wïøñãwîÜY°`A¶Ž®P¡‚K€CvyZ¾|9ÛHשSÇyvܸqŒ®?~¼råÊì¥]²dI΢¤pá•*UbÓe: Ï<óÌ–-[Hßu×]ýû÷ço¥+W®œ6m[hרQÃY…Ò" " ".Ä<N«®^½úÝOŸÃ‡›F2vmÓ¶Ù—.]8p ¡ó AƒØjzذa×®]³gm¢qãÆltSgƒg›I‚>Nš²lDýöÛo›ST´víÚ… V¬Xq×®]ƒ^´hQ¹rå6nÜøÉ'Ÿ ã[éùóç÷ïßá§~¥E@D@D ½ˆÇ[órØ“?}úôéÒNÜê‰'šË—/OP{ôèÑ={öxå ‘ÿøÇ?¢sÒ¤Iγ½zõ"Ú.UªTÑ¢EYÅfO±E4;.÷íÛ—±w<ú˜1cz÷îÍYBj¾}+¥C€SÇ«D HGâ gÞÚ¬)ÃY†4õÈ‘#œ9sæ[o½E‚oâl_y¶š®U«ÖâÅ‹‘1DáŒ]³èŒtîܹmA†»qØâ­qä!p·g}+EÀ)c…•tA o“f:bóòçÏL‹-ºvüÃaDÒ_}õCÜFí²eËfϞݥK—–-[öë×/úUâ1U± d ÏHx”vW«V˜øƒ>X²d !òªU«8T/Û±cG{öâÅ‹¤³e˶zõj¦È™rþþûïíÙ„o¥Tݽ{÷õëׇÔ)HZ©è­såÊÅ*0ÖŠ1¢]»v ž;v,Ä#<Âz1#P·nÝÒ¥KO˜0õe ’³vŒ%â!eí)ßJÏ;Ç’4¾­˜" " "Žd8yòdˆ¹DÆmÛ¶ò7ǃô°Ø›icófvŒoþ™3gÌŒ5?Ÿrûí·gΜÙWÌ73¤R~šU»zøBS¦ˆ€ˆ@š4z ÎÈzØp‡ϼu¬-!Þµˆ‘·‹ËÐcÕw¥±V$yHm©8žÚ¦K¿ˆ€ˆ€Ü"Ò"¶NB”Œ<Ä´UY6A&‰€ˆ€Ü:nEoݯsk^×Ôõ­s—«¥" "Þ ÜŠÞškfgõÓûõ“ý" " ·Í[ß WYmHß"ÇÖæwCÓw+e½ˆ€ˆ€¤gÞ·f~7=·N¶‹€ˆ€ˆ@z"4Q!¶*–žš.[E@D@D мu:¿€2_D@Dà o} \d5QD@D ·NçPæ‹€ˆ€Üä­o‹¬&Š€ˆ€¤sñ{ëëׯ³_5ÛdEO`Æ [·n^ÞWò›o¾ñÍ23¢ o¼ñÆÜ¹s½Ú‚ò½’ÊIfìÁšØ—ã¾1öìÙóÃ?$3+Ù&"<âôÖo¾ùæo~ó›N:µlÙòé§ŸŽ²=/¾ø"»\Gy„­\¹ròäÉ5„D´aÁ‚~ø¡WCP¾W2¾œVǧP¥| ,üéã{ÊfÆt-â¾1öíÛÇðW®\±õ*!" A"¼Áå[ŒzÆŒMš4éի׉':ä+æÍÄÑÞv[„þÁSO=uäÈ oñO?ýtذacÆŒñžŠ>'¢×–(ÉV'ª 鉒@š]‹|QœgŸ}väÈ‘QÚ&1[–@<ÞúðáÃ×®]ãUlÃïúécðá¶ñ…[¶lÉ!C­Zµúöí˃­©k×®=}úô¡C‡Ž?žÃ!C† oN!†ãG¾GˆÍž={çÎ(ïØ±#Å+V¬è¼0HV­Z•Ì©S§®^½ú…^(^¼8<òvïÞݯ_¿qãÆ1Ò~üøñÊ•+·oß¾dÉ’¶"_|åMì î4Ìié½{÷ÒL-X° ©P¡™TM'cãÆ·ß~{‡6lÈHÀ´iÓºuëV£F §¨"EŠ8[9sæ#FÐLù™gžéÚµ+ ·RÒüï¿ÿÞe¤Uk¾×…S®K™5kÖI“&Ñd[¯^=Ú‹ÙVÌuYÉ÷Â1ÕÙï(ëÍ”)“‹| «™ÄŽ;^~ùez˜J,‹sÖ{xï@¯ŒS³+MGÖËöíÛÇŽ‹=ô\®šÛnýû÷çOÆu«»ÔêPD@"Dº¾€~ñ‹_.\˜H—Ø7cd._¾<`À€Ï>û¬iÓ¦ä—+WŽüƒ2OÝ &NœÈØæðáÃqÏÆøóçÏcç… œÅ½ \­.[¶l‰%è.àì_{íµlٲȩ!%Í÷éÔLÚ÷ºØ|s)qÌضm},óœ9s°Óè *žzñ²^òA4œí5j†=ùä“džc!^#¶™tPó-Æ+V=z̆ÐF.l6­ö/V¬XBê]¾|¹—| Û.ú‚ÜZÜ¢>ú(™Ü´p0g½7€÷ôÊXÍ®7†/2‰¹aEG–"ˆYè›æÌ™Óta½k.ý:¸é ´mÛæÛÌÞš2v–4ŠråÊE¸0oÞ¼)S¦Œ=šÐÙÌ^{ôòæÍëëªÑ‰ÇÅU“àiÎ7£ÙN§è¬”´}À‘Æm0¢8þ|†W­Zuÿý÷óÈ#ÀeØyÍš5<ûH£Üjðµ!D>Ü0Óo Ê4K‹³dÉBœC¥ãÂh'ý°ôéÓ§L™2dò±f˜D(§X¾|ù~ùË_2Â+Bó鸛1^#]Ê9 j¾ÅhšPºti„ÑYªT)úFøÑüùóOH½¾ä}i8õÕW_qèÅrØâÑÈXá ,Æ(YIg€æÞvý¡9e”¸„¿®Ù[ÃÈ×Õó”iѢŮ]»-Z´yófã’™ Œƒ)‘¥¬§w:f«­@¤í"ñ+Þšª‰AqœZ¶l“Ž]ºta™:sØVÒjp%¢‘wf4ŸDÛØtêdL¸R¥J¸X9à ?8ÏÚt(g«Ïž=KÀJ?€@ðÛo¿õ>èãn~”Fk}›Ï©;oFŒÝ#¢êæÏþ3nƒxãÔ@:¾æûéÒÌ¡³ùöº8ÅlÁŸòÖ¬YÓ¸@ß≪ח<5zi8­¥ ÅD»®g‘ý…€ Ày-‚dœúm: k8ûáö`Rƒ‰m^ãOÆ”2÷3ó)V‰" "àK o“Æ…°ž‹÷­YÜ»wofûŸþy‚Þ°bLïõ×_÷­Ï™‰0ñ1ÓÞ<¿X™eN5oÞA¸¼xñb§0éÖ­[3Ї0ùDT83†ÄÍjd¦®›%¢e}‘‚Õ¼. ÎÃyFæß{ï=c˜+€FΘ×d™qd. ]»v„ÑLœ³Ò˜_Éà°U«V,1cBIâ(ÆøvÖë ÊÙjú.ü1Ã÷Þ{ï#<Âb®÷ßß©Á¤ãh¾¯‘^;×Å)fš@? 8¬ª£·Ä@·ðOT½¾ä}iXcHp{´iÓ'³d”Âö½‚nçµ’qê·é , <ð7B…™?þ82¶gâr¡­%D@DÀ—@„ý­‰ }'½ |Zä¹ÌÊ¥—Ș—¥F®|×!®—p™µÄÈ3ˆj(Y2q‡6±ùï¾û.«´p“6Ç•à¡Ìc‘ÌS§Nažqä.çaˆ<På2ÌY–1L,$l²™`! Ç©Øœ„TP«C”¸N…4ÇJ†~]¬“£Ö÷R<õzÉ» ó%s)ñ”®SAÄœ×"HÆ¥Êz±0C/ååŒ$Ñ äMkº¶tËxýŒeQÞ0V¿" 7% ‡kÕ¼µ— h³<Û{Ê뿽2Î_yßLJšØØÈ©Ä¦«ægo3C!ò5x²`áRó”·Þ§|4鿨âQ1!ˆ¼ÅX¯—¼m]P"¨ûDÌiLP]^, ư‚î)s4¼ýh†^"WÄPù" .qzk—–8y9;bàë«–¸Ä7_™ !÷u1µÇ]<î‚ iuj+Á+3'‚Ãf)¥}ñAà©]úEàf"püµYv3¡¼9Ú’Âëwñ¸ ¦ ì ð›B|Ò…µ2RD ijÊ, ›!“D@D@Dà&& o}_\5MD@Dà&! o}“\H5CD@Dà&& o}_\5MD@Dà&! o}“\H5CD@Dà&& o}_\5MD@Dà&! o}“\H5ã&&À/ìò[ôü¤ZômdW4~Ã?zyIŠ€$9ö¾u’s‘y"$Þ|óÍ °++›»ÜsÏ=ìzal?o~Ù7\˜ŸègËÑpHúCM†« DÀŸ!õŒ3š4iÒ«W/vg{49O.Û¸…üĽg/öOcOieˆ€$y뤻$2H,¶!¤f‹ÃÙÛì„ÍYÜ6þ˜½kÙW†çúöí‹ëå÷Ék×®=}úô¡C‡Ž?žÃ!C† lN!†ãG¾Gˆ±üÎ;QΖSœ*¦M›ÆVxÚ¾ÓÂWB’Š€æ­“êrÈø'üX)»€°Õ&±5ÎÕœc73~V-¼š6mJ>ûg“Ï3W=sæL³Í6‡xz#oN±'}•*UØ{ž=^ÉÇ+ãÎÙB oͯçÏŸg'\6h7Eô-"l['Û‘="ð˜TfËv&¡¿øâ BdvÛlذ!›Æâ‰ëׯ߹sçÿý—AOìÜ=Ìže ²Q£F±•-;º.]ºtïÞ½ìI«f“ò:uê Ö¸qãFy÷¨µ”¸±[ßXþª]"`G6tïÙ³'ƒáìåŵ™½f;/WɼyóúºjÄØôWM¢X±b|ïÞ½ÛU?Í<·¼µ ‹E yÈ['ϵ%"àO'Ú¢E‹ 0ͼyófã’wìØá/šË²5Î[OO T\'E@’…€¼u²\ Ù!^¬#c¾™`šIeÞŸÆm-ZÔÌL¯ZµjÑ¢EÌCoܸÑ[Еƒ„7mÚÄlw‘"EòçÏ@™2eˆÔqÿL„£­{÷îëׯwÔ¡ˆ@’мu’\™!>pÒcÇŽå~ºtéÒ½{÷f¾™Ã矞¯ÇŒCºR¥JF†tÐçöÛoŸ?>áxΜ9YømÄš7o¾}ûö>?}2f̸k×®sçÎiP¾ˆÀ%áäÉ“!|ðÁmÛ¶¥"£S" ©G€À÷èÑ£¸[ïœ4˜ÌF³‚,¼öÖ­[›_JA>Ož<®÷°Édq¸f¬Ãꬤp‡«Ø: .ªø dÉ’…±kßò^ÿí+f3}å}3m%D@’„€¼u’\™!©E€—³3gΜZÚ¥WD MÄæ­ÇL“&V©XüÙÿÿã* Ö+u" ) Яsë(KÇæ­Q:¬×(UKLD@D@D ˆÀ ÑS˜ŠŠre˜Þà ¨|HEÑÖ!oŠWBªE@D@D ˆ@L“ËòÖA•/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì òÖAd”/" " ÉB@Þ:Y®„ì ™‚Nåÿãÿ3uNÐYå‹€ˆ€ˆ€$œ@lÞº_çÖ?ÿùχõïšp;¤PD@D@D ˆ@lÞ-ÄÖAº”/" " "4oT¥SD@D@I rlýÖ[o%²B鈑@†“'O†a–:ä¬N‰€ˆ€ˆ€$@Ðts„Ø:¨X-“*pš·磳" " "pã È[ßøk D@D@D œ€¼u8O@ÞúÆ_Y " " áä­Ãù謈€ˆ€ÜxòÖ7þÈ'ðÿm•üa`5IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/os_process_sampler.png0000644000175000017500000006503312032647206024766 0ustar ebourgebourg‰PNG  IHDRQŒM²bKGDÿÿÿ ½§“ pHYs  šœtIMEÜ ,)Õ¥—k IDATxÚìÝ_x×}çÿïLÕß½žzã’QÕLE#‰ûÔ h1,‚k£´b‹q]&«E“¸ C‘1K!ö÷<ñv S•2¡ÄeuSFÉÒª :Q„á1[Ó†m Ü‹4†©†®QÐ%¯qæw1⊔øçýzxfΜ3gpøÁ™¨=òÈ#õõõ€¼`n¸¶fæ+˜áJ<•ŸüеzÍ®Ó%d·Qͽ(UÓ~q¨Å¢¥²cÖ’Òë—ʸy­.xxgfºy°.½øôI"¾(JÕ´?cÏyÊþL{R²O†¦ÕÕ7oä:”a$Æ;½!]›õ@Öòøxg“gd!}íÏH:³îvÒõ·±30d5c­F¥b¡ADôÏ9)•²•x*[éVFd0{×zÈÛ9žX]mq´³1³]_>>80à4£Rj‰?{}™\³þˆgÍ•Ð2[]ðð€[™[º‰Hµµ*RÈZ-‹Å¯‹XDì]Û,„|M!©i=×b)šÎôÔjæoJÕ´ûŽY4Í̺Y;Ó³v~+2°fZ+:è ézÁ[Å͉1³2©Û±ƒs‘.»]¢sAQRè^u#Rì©|ë´ÚÖ>:tÌ¢if|1UU:îÄb¶ÔìQ*Ü„‚Á5KÖ® ›s¦¾‚£ãÏØå÷LñV>¼`ãsKåÓ4K˹™©©)¿[‰ÈˆÇéìÈLÿ” jÚ.Nç^TR5m3—ÒÌø’5¿•šÖ ÎE cõY_nTJ?åö˜‰Â^ïVJd1~CDXm©{Õsæ]J>UA«5­®û\KªJUÖêœV+w¦ÕUÖêBKòÖ_ 7©#‹_ÏŸX*Õê‡ÜâÜÒ«M$¶¿!u9SE7â‹"9WÐD¤®{fª;uïö°ÜQè«JOl(åî/°UÖü–9­UìÙœ$˜=¥ë¢ª­U¢i–cC¥óøÈ‚®‡|®Ðj•JšïöƤo¦^¾]Ôšëë4mõÙã¹·ZçoX¬ü®é~w¡ [%ž*ÝjKúú`ªýѹЭÝR­ë!oú+©Vï/UËl5¨H©oÐ,-Cýñ&_ȼ,•°šû³g/b#ž¦‘µÛ6{6çŠý™öšàðÂjô5·1uõ»ƒÞPÖµ§Ìµ³¼ SOÙ%šû•âº.îúœ¯*ÈyªPÕŠµú†Õ&ú‚ù¬ª©±)µ ‡¼òâÔ# LÙÇ_וr÷wÙË;\™V€Î\”~Z«ëžœô»Õê}7J¹ý“©¯d”ÔÌŶš¢+Ü"ÍÒ2dÎñ¬þí_ jù{/¶a 5m£3Ýu=U¢Õšf9æk¯QJRÿ×eÈ×n»•# ”Û?9šÙWéÛ´Ëo5(7ôôôôôôp ¶!þ wÜ™3gø–B€RHK¥ìãl[šV×ÍÿràNcn €´@Z -–¶“¢Ÿ‰›˜˜àè€=¨µµuyyyý´d®Êñ{ÊØØXÎ’u¾o);XÝ/]x•n·Ç©gŸÎ_¸¾²ïô :lµåååýû÷ç/ç.o‘âW´HK¥–n!-FdÀéˆk— D ãT6ÜgOë g-­­5ÖÖf-Î{víVwJéÚnJùÛ •ì"eÝåôÖOwÕiÚ¬éÒ˜ç¤ ÍG©Là»<ÚzpiÌsRΧ–Ñ2íu˜%í Ï÷:îlÖ©-Ø^ʺ§ë!oçxbí|’9íäJ3çŸÌ…Nç@$2`.ï$ŒD Ãét:; #½m"Ðát¹\Nç@Ä0V·*>e={ø|&è8zÏ>;¹öþ¯[Ž”>:œ.¬¯¶/¼4æ©­MOð¤¦|ÖÎ÷,yræ/YñZ]˜¿$¥Hm—Æ<é 'ÏØÒj Óåô…Wk¸º¬jӛ嗻¶ù ›–šý~·¾0r|0š½TÓêºgf¦¦¦&GÛj” z3YG×CÞ¹zsùˆ§Ñ/¾‹í6‰ ûS‘+:x|8fkó·Ù$è][l±°t%°6g8Ž´®„ÅÑ{ùÞ‘"a!/<|puµŒÀÉ^雟ŸŸïuˆ„ûN^=}9^>}õäj9ú~Û|4OOG-õ¦–œ—ôjᾓ2f­–¿dµÒ…jî땾ùùh4ýÉórv4œ©¡YÎOž¿:ò?þ‡çÊ‘ùùèOž_­ŸN^95wÔöþѼðS¨¶¹ ›3·$ö®Ñ¶=ä˾iU•µzí¥Üý]vs¹Rîþ¡cUæ:±øuÈÌE¤Új·V‹Èbü†Ø»gfffº7r±ï`ëè|ŸôÖLNs¦WúVBËùÑÖƒYQ¬­õ ˆlmk \ Ìg²ôú„Ü{OvV‘{î½?õ(-IéÚ:z35Yý‘ûO_îu˜ ýïÕ}éÇ«+´d͵eêSº¶9 ›•–DªŽùÚjTÐÛ9~cu¡y‰­©ÉÒ+þl®‡|憱øõ[mÅÁÖÑùù¶÷L-©™ž[M ×Þÿõ¯_~Ò¼öÕXÝõy9™},ɺµÍÜú)VD:Xðñ­ÔlYZÒ4˱¡þf‰ ûGͨd$ÆýÃ1±µúÝJU²ÓV›(åöONNMM•7¥”7y’?õã8Òòë÷¯mÚ‘¹çÞû󗤂×Ú«lŽÞÜkdùK 5(UÛô­ßÑh4:Ô²™õ/X[°5iID4­®ëb»-‹¥\ÇD¤ÚZUÙ.5Íâh°ézh4=OUÎ]ÞOÖ-EæFžµ |%pêÒS…GZ#cK"²46’aι¸uðÑÇ®^Ù¬[£Wk{íý_§ë½ôÁÕ Šœ\½¯óí9KV#R¡Ú:zÏ_±?iYD}üùÓ-“µrnþHµn9ùÞ‘ÚÚN]Wþò¨#ÿ€åÕTLëéééééÉbbb¢µµuyyùÎÖï¥ ¯ò_u ÷Õ^9B`óôžý^ßécccÙèÌ™3üç€Röqv&Gï<óJ–DDdyyù¥ ¯ÒU€´TÀ©gŸÞ¿?·.ÒRQwüNs°—q—7i €´@Z¸Ýöâ÷-íß¿ŸŽebn €´°Qe]‰3ŒÈ`£7¤›ÿ;¦ýâP‹EãØ€½`ý¹%#èlô¥Ù?99555=íÿ`Ä0¶U3 #2àt:Û­b`÷§¥è¥á]oîïªÓ4Ñ4K˹nó±ˆDœ.—Ëår9"¹Á%2`>ÕH‰@‡ÓétvF™ëˆˆa$N—Ë•‰A™ —Ëe®œ™úÒõ·1•äÌÒRus¼£Þ!N€ÍOK†™ ŠRîz{g_Hwû''ýn=äë$VËÕCÞ¹úÉѶ¥F<~ñ]l·IlØ?žHç•u׉ŽÙÚüm6 z£Ù…ÏŠor´Í&±áKQM«ëšîw+¥”»º«NÓ #2x|8–ž›™Yw›™–J©Dx6– Röz·R±Ùp& )åîï²K•µÚ|³µùÛlôF3‡È´µNNMMÍÌtœ7*X·‚¥€-µÎ•¸‰‰‰œ%=öXéY–ðlL©æz»ˆÔ»U08N;V%"æÕ«.»ˆT‹Ä”»èX•D«Eb±øu‘rÖ±döTe­‰eíZ)·çX•ˆµZ$œ‹tÙír#¾(JÕXX¿¢ú[ò®‡|M!Y½$W×u±}ñøðˆ§i¸¦íâ=+Eª­vkµHl1ž0ìUr#<i¶Vm$¤æ”fÑ´ü>“ýÿtËMK’÷¥Þë}kåõxN$ÉJB›Â¼ejA×E×EI•©®$—®¿%o½üû–4K‹¯}Ö3²`kpd§«T®Òõô¡ÈÛE%rJ³ð­ël’bÿ󭬻¼s’¦ÕÕ7K(š‹vÕÕå¬{Àj[;‡c³ØÄ¨d$ÆýÃ1±µzâǽÁÍ?P¯¿9/%¢Ç†ý‡ù ÁV›¨Øš\ey»¨¤n9¥ ߺÀÛà]ÞögÚkÒ·é˜K"ÃÐ4‹£Á¦ë¡¹¨Ht.¤ë9-·¬‚é"3Õ™•1o`*d1~ÃÜdãõ{¦S7NÌ>£ã7²jeq4Ø2{ÌÔÓ\²¶ž…ë–]ئiI³´ M÷7KlÄÓd~¶k®>5áai9çw«¯©ÉRnÿ¹Ë&VWÓêºú›u=äm]´IÎgÙŠ¥º¯i®¾ß­T¡-Ç|í6‰xšÌš•Y]ùšRm?räo:œsõÓÝušfi2kØ9žH—¶0âÉþ ›¥å\sêЙ íϤê0jmÏÔ³XÝrJ[Jëééééé)öôÄÄDÁÛv™‚±çÌ™3üç€RHK¤%Òi €´@ZØ)öq^ºð*ØËN=û4Á ¤¥uô>ÁAö¦åååýû÷ó¼ ¶`(±WâìiLx ë®CZ -ܶ´d‘§Óår¹\.§³#0¶sóÌÚ:cÝz†ûjûœÀžèpf´Ô¸1I #‰@GG a”5Ös*‹62¾mEù[/ÜWë[ÚÄrƱ=Ò’‘t6zƒÒ쟜œšššžö‰pG½8 kµèúBüºˆˆÜˆ/ŠHp.5¸]Ǫ­M»•ò5­®{fff¦»îÖÊÙºòï@ÞZúàêý=zpÛ”lVZŠ^^Ðõæþ.ó©i––s«/ÎÈ@zÎ)óž,óò‹ ˜OuF"ÐáÌ{WÆ:®´Èš Žœ‰®Ìú£‹Â}v»Ýn·×ò6ØìõÍ"œ‹ŠÈðì‚®ëzh.*" 6×ÛËå L)EœÄÚ¹ŸrÆ.gGGG‘!+|“bóLé*F"Ðát¹\9fšsäˆ÷›Þ®ëzÈÛ¸ú¸t{ùÛì9¹È€³#p]½Sæ`»ôú„<öèAYó¬aZóxÆ®-yjkÍ¡8ýt¸¯¶/¼4æ©­ÍœÓåäO8Õæ ãKcžZ»Ýîc [•– #2¥ÜéqcD ÃÒÝþÉI¿[ù:‰Õ}è!ï\ýäh[R #žF¿ø.¶Û$6ìÏLn—^Ç|Û455e®ô®¾˜u=4+¾ÉÑ6›Ä†/ES©nÐÒu·rÚ×Pù1 ÷”¡h4ÎÏ÷:8G€½à€µF)YŒ' ãz<æv»Íðd‰ø¢Íz ¬Q.gjÇH:G­‡Žœ—ÚðØUæø–]¥èàñᘭÍßf“ w0š´½A[ÛèäÔÔÔ•+ý/N÷»•RÊÝ?z?¼n{¯\ùŸi°eæänÄm ޲'á2!ç`kÛá³£«Ñ%tPR 9çqûÓ’Èõxl킜”së,èp:›š|!]/¯2EGõl=/'kív;µÀ¡ikµèzhnмðvÀj‘Åx8sÓRE£Üâh§7Ø\_á]DåŒ]ßt=ä3ÇÏTµóš³±QÝL™‹ñ„‘ˆ/VP«µ!çà£ÉÄëKk—§.¥ÙírË)íÚû¿æLÇÖ§%M««o–̵üµÌ‘%Kjêz“¢’‘÷ÇÄÖ6êw+µõ‡ÅÑ;?ýÉó«¸v;óÖ¥P(Ô\o×4‹£Á¦ë ##¡ôMK•r ÍzÈ—¹ÝçŽ:`µ‰RnóÓ9éYŸ¼ælhT7”Äâ×o„g«ËO‡¹!'}5.u? ¥åœß­B¾¦&_H¹ýçZ,›XKM«ëêoÖõ·qtÑ&9ŸÚ(–êB¾¦¹úþÊç¢ÒÓ¿O¾|øÎFoPšý““SSSÓÓ>ñDÈsHKR¢—†t½¹¿«NÓ$õO»ÍÇ"HÏ9 Dr£@dÀ|ª#0§33/Uþ:®´Èš Žœ‰®Ìú£‹%3Jζ¥w‰ 8ï¨wJ¯S¬"b‰@‡Óår™ñÈ0"ƒÞ®ëzÈÛ˜Ê9ëäW b˜«dføHZi À¶™™ ŠRîz{g_Hwû''ýn=äë$VG=䫟m«QjaÄÓèßÅv›Ä†ýã‰ôŸùÒëhZ]÷ÌÌÔÔ”¹Bл:¡¥ë¡YñM޶Ù$6|)šJuƒÞ®»ý“Ó¾†RÓ¹­ß­ë æ¶¥w䫟™é~P°ô:%Z<>³µùÛlôF5­®kºß­”RîþéTÍY'ç0ÎÌtÛÍUÒ3|33«i À¶ R‰ðl,¤ìõn¥b³áLRÊÝße—*kµùxèXU•µZDbñëéÊYGD̲)åö«J-ÎE Ã0ñEQªÆz Àú¶µ×»•2·-½£þ®µ9±Ø:EZaÆM‘j«ÝZ-"‹ñDÞœP‰ur* ë!oçx‚Y%`Wà¿ê{Áõxlí‚XüºHÕ&²D óøð‚®‹®‹*§2ÕÖª­ÚQ%•É{©‡|M!Ñõ‡¨ô:šV×u±}ñøðˆ§iÄíŸì®cn ØÙ˜[v M««o]ÍEóŸ<`µ­]`³ØÄ¨d$ÆýÃ1±µúÝJmIólÖåíè*sÀj¥Ü%¯ •³Žh––s33~·‘ìKHKî0û3í5J½™Û–#ÃÐ4‹£Á– Rѹ®Û–ͼ™¦‚é¢ìTgÞÀT|ÝÅøT…¥ÚjÑ´òv´Á¹«ÌQ¿‘4ã7J¬S¤;ºúÝJmn0@ZpK4KËÐt³ÄF¸×Ôä Š­ÝwÌÂ]ÞÀN]{zzzzzŠ==11ÑÚÚº¼¼Ì‘pÛ˜ÝJsæ“hpŒ=gΜan  >`Û1¿W©›`{`n €´@Z -–¶“ >÷Ò…W9^`—9õìÓ›––D¤ïô Ž)ØzÏ~ODöïß_ú‹¸+þ¾%¾×ì)Ü·@ZpGF"ÐÑHYK"…þ%m9Ïi Àn£iGƒÌ†od–Ü]l†ÿ˜ €´)UŽ™ ' CD #ž•G•ù”‘t8.—ËåruÙ[eO2­}œt8].—“)(¤%»*.™³K7VÃ’aDý⛞žšššm“áK够ãþ¸gzjjjº_¼ƒQŽ.Ò€/ûbœ–,š&"šV×}®Å|,UÖê2Š2§¦¬DDÄ^ßœcz À–ÚÇ!p{T9ÄNs„g«=CUYé'2Øè 麈(qׯ_Òõx,ò4ˆ”½ –씸•Ùêúséû» #1Þé•þé©:Í0"ƒsetÀjköuq“8€Ûƒ+qnób܈o¤ºÞžµøz`«q%Àí£YZÎÍä-¬ëžšêNÿÖÒÒ-"òà̃™ÀÔ=3“zz¦.³U]÷ÌêF°•˜[(¥²¹¥ååå—.¼ÊQ¤¥ÂöïßßwúG ì½g¿WÎj\‰{שgŸ&-UÎ-F›•–Â}µ}a9Øu6}n‰ØHKEî«=ùšþÚIØ-6óÛ)5qôΟ—Ú+Gæ{Z°+p—7@)˜[2/·¥b–ROg& –²8zçç{9r`oØŠ+qW?XâÀÒRaŽÞó‡Ïå3q`—جÏÄ9zç«ç9°`—à3q¤%€ªìJ\ïÙïqÈi©¨¾Ó'8d`w(sˆ+q¤%Òi `§¦¥p_m_xiÌS[[[Ëy€Ýcßæ8Ù{úòüüA*ØE6ñJ\ËùÑV¢Øe60·î«=ùšžŠYJ=u~¾×Á¤¥4Gïü|/Gì |&€´°Q›õ™8Gï<7/€]ˆ¹%ÒÀFUv%®÷ì÷8d€´TÔ©gŸæ€]㥠¯®»WâHK¤%Òi €´@Z -–HK -–HK¤%Òi €´@Z -€´@Z -–HK¤%Òi €´Òi €´@Z -–HK¤%ÒHK¤%Òi €´@Z -–HK¤%–HK¤%Òi €´@Z -–@Z -–HK¤%Òi €´@Zi €´@Z -–HK¤%Òi ¤%Òi €´@Z -–HK¤%–HK¤%€­±¯Ò ^ºð*G – 8õìÓû÷ïï;}‚£HK…-//sÈÀžÂ}K¤%Òi àvÛÇ!ØævåW6œzöéÝÆ^ÐÑ;·±{¡SrÚÒÊò•/~a75çïðãÝÆ^ÐÑ;·±{¡S ¶¤%¬ï÷O§Ôt4¥S@Zi‰úƒŽ¦±t HKØØX°O£Ôt4¥S@Zž~çÄÜèhK§€´ÆÒ8Qi,Ò¶h,اÓFê:šÆÒ) -¡¨›+ª¢õ #|æ¡ÎŸê«#ˆRO~çío>¬ÝÒÕ}³Ø×äØwÞþæCòVæñ-»±6fÕêÚ?}ù©oÿ[ášd×9ûÙbËwAý°ÿSÝ?Ù¬N/ó4Sêã_ÿ_ÏÔ*=I6½#¶ºüÛðbÜêc²ÕÍÔü¶5d›Œ -áN§¥d¥cJŠ(õÙ—ßô>¤i†>û©çž{èêsÿüO(úGëì§ž»,O™›)ø¡çÃïXI¦—§êÿè_ÿ·Yõ,¶|wÔ?»O×;êþ¹›o¤ºìMºãÔ/¦z¶þÅ7³wg®f>uâ•ø‡ñ±Žë_z%žÌ¯ù›?üvL×›_þF­2n&ÕŠ²<ù÷=µÊÈ>1²O˜ÌãW^ùÒ§y8«ØÔúÿqéËk—«U-zf¦›¹:º²cþ&ë¾Z‹rç[ðdÈ;¶c§äŸ{æÎTÛüõÄ+ñT'ÆÇN<;öé—ÛV´¤%”3ÏlTúc¾‘_É,©ýÌãJÉå_½ySÝ\1Âg>wî7ÿJÿ×ôœyk%ùPçìÀãJ)u´oö$e%ùÐ×~ž¸òÆ/.~í°RÁçϘf›»‹²6«7WŒ›áûã/?QûÈg>&ò›É7â©åá3]!]¼î—¾F•UÏbËwGý³ûñogæ&Õó@R ]¿Ü3ûó×ß½òåoõÇûç~ÑT~ý«¯,eNs5³Çßú‹#/ßøq×}òoç^¸ô»›*»ÚÞ ÿËeQꨣvs/ç±®_žN~ëýGuýÝsߺYryÁª–83³›¹­:º¢cþ&ë¾Z‹²[Î ° ;%ÿÜ[I°7|\×ß~ýúÍãf|nú7òîw~d®}R5<ò‘ôËm:ù­_\üÚ}òo›ØF–°sK© ðd¡%®¼ùzPD>ZU{Ï!Yü]|%Yp“›Iuóî{e-Oy|Gæf>\‰~ðï'ž©[QUŸüÏ×õØ•7®™Ë·(JÙT­©±å»¬þ9ý’Qê‰ÿÞUg–üæÌo”zâ¡Zu³öÑ&¥Þ›™Ëô~jµ»ï9d>þîçî2÷òîÄË8Á >•óX©'>ÿäš»–à¯ÞÊÚuÎòU-vff7s[uô­¼Ëyµ[g;4¶œ`ûuJásﮃóñÛcƒWu]×/¿þvjýCÿpMÍoóÚˆ;Žû–vFZªðª|jž9™¾] µä¾?úHRÝC‰èúϾÕô3Ñu‰½-©þ@ò6I¼ÚóWßý­®‹®‹2’é Sëä­›Û("FäÇbâùô…ô’…+o\ûìçî–kÄD¤ºê#«SîɤºYlù.ªN×çýj–Õƒù½_F/çŸ`…Ÿ’[y\¸ªwiÚ:gæj3·EGßꋱŒW«Y`Î:wmƒÆ–u2lÇN)ò2yàÑFõÓÉØû×’o…ƒûb_ãë½ßøÇzòë±£Žr^­›ÜF–°¾•¤QáX é«òÆŠ&"büëÿ™Öuùcë]JVŒîõÞŸ÷†N=`¾Œ•¬¬ÝÄ0®‡ú¿{U>öÅïéÚ—OM›Ë%kÉÝÅmoãõÐÅßz¾?ûç-õë×[ðÞôÛK-îª"õÜõ7rû1ç×îy/«„ûý§¥ë—é_߈<ÿ'‹Ÿ{¥‹-¶ëÔòÂU½)ë™Zñ:h;ðÅ(å¼Z ­³w÷ßbc×9ÌŽÞ®’î%µôi?hLß×xî–?|ü»}¿˜~{¼zòñÏœÈí¸M>ñpÇq%nG¤%Ué‘~[³’T7WÞù›Ÿ)åö¶r%©’ªêÏý˜®ÿüÒkKY›TYjDdñÚuó×kñ÷DäÞ»?²¦¨b+úÙœ6F~üƒCõ_î6Ì_Ózïõ·–’ÊnLtýçoEÔ¿~÷Ô]7ëYlù.«N¿dÿšéú·"j%ò«+ºþÑGºK%z¶X/âXǽJMÿÍW//%Í%Ñïü]t%¹^Q‹×®§v-‡fí:wyñª®fn¯ŽÞÈ‹qu“r^­Å ¹ýÍùTMÌ}ìÑû‹wôvî”ü—É'n‘+¿ü¹¹ä7ëú{£ßÿùGV­lñ ÒÖ—TF¥?JD×C÷YççùÂg½35/ÿôë÷©¢îzâü)—zÿŽþè‘¿l~i>©”aiêîø¨¼û£¯8ÿ²ù¥ÿ«ì_üV³®‡úŸøÇßÕˆ®‡úŸxy>5Ï,*½‹ÌãŠ~n½+É¥Ÿÿï÷ÿë“öì…ðÉ#÷*õÛ _OªO<Ùq¯R³/8ß~øÌg”ÊÔ³ØòÝTÿœ~ÉùÕìúÙœ_x!¤\/¾ð„%µrzYÝÝò­ŸžiwôççùüÑ#o?œ:ÁJõæK _x!¤”û_µ'K./XUeÔ­{fnŸŽÞØ‹1縭ûjOª‚…Ü‘ÆÞß>{öK÷™51;îÇíu¥;zÛvJþË$y÷¡{•R꾇?Y•TFòÏþòó’õ«ÚÂwœÖÓÓÓÓÓSì鉉‰ÖÖÖååeŽÔòÒ…W[Ÿù‹ÝÔ¢±KÿtêÙ§wnwzýïÈüਫ਼_Ió©×ºÿt‡ÜƱ§:z«»Y'À^è”ü6âv*{Μ9Ã}K;À^˜›Ýémdþ|½?–Ê<@ɤZÙÉ7½î©ŽÞÄÆné À«·iiØ s³;½ÌŸ¯Ç~üÕ©ã"bHÒ0èè½×Ø-<xõ´‘•=0ìô6®0^ób¤±Ô¤%ðv–6òîÌ-QO–°]Ç‚=pU~§·1ɼi,õi wWâ¨?èhK§€´„R¦q™6RÐÑ4–Ni …í…/ÞØémäËQx1ÒXê‰Ýïò -–HK¤%Òi €´@Z -€´@Z -Èe‘§Ó•ÅéˆF¥%TºÕnu"Ðát:;‰Õ:‰@GG QF+Ömr±vâ±p+öq€]C)wÿtW¦m`[M«ëž™éÞ®Yp°Ñ”æœÖišÅÑ`YX˜ ßhi±˜ o„g¥Ág)ã lç&ØV˜[v­ÌH Ðár¹Ì9˜œù˜ÌLLö|ÉêãÈ@f%2š»rDJ”Ÿ½<07é$R»Íš2k’= V¤Â‘ÁFoH×u=äm̙Ωr4Ô(› 'Ò%\–GUÎdÛ@$·bNçÀ;êœ&笟ïÌn`ÞqÎmHêÀ¦ d -ØÞ/r=4+¾ÉÑ6›Ä†/EÍù]_˜ ßHÏÄ8 ÎÄèzÈ;W?3Ó]§i‰@‡/¤»ý““~·òuÅÊÏÙ|r´­F©…O£_|Ûmö›É&:x|8fkó·Ù$茯p]×t¿[©Â3gUŽ›è #©=Gç‚¶GUjÞhjjʬ@л³²Û•)¦ôú³â›ô»u}!»ù 1ŒÈàñá˜4û''§¦¦rö€´àN#_SSÎd†Rnϱ*©²V‹Hp.bæÃXüºa$³±jkUÁÒ”r÷wÙ͹“ðlL)w½]Ä^ïΚË)XþšÍ«¬Õæã¡cU™‹Fd.("ÕV»µZDãëX¦YŽyšE$8Í„¥5áÏ,§P» +´¾çX•Ùðüú”hˆ®‡¼ã f•Ò€íC)wY“é?üQ¹5×Û×-øz<¶vA,~}Óâ/¤ë·Tàjމ¤f–Ì“t8Mfùe¨tý Ñ´º®‹í5Jé #ž¦¦œëzHK¶;M««o]Í Î›ë˸HtÀj[»Àf=p«µ8`µ•ï*hާމˆa$ÆýÃ1±µúÝJ­•Ê\¿@à 7D³´œ›™ñ»•ˆd_×@Z°3˜ñ' •3³”¾Õ)4‰Î…tÝVäV§J"NªÌÑñe×w1^d]{}s^sÌù°b—ó•X1~#Õp©¶æ4¼tCì]ýn¥6#\ -Ø”×sú¾¥u?‡e~”L©š2ÿŒ[ZÎùÝ*äkjò…”Û.ýqý[a–¹0âY·¶šf9æk·IlÄÓTxM{½yx&,iZ]W³®‡¼£‹6)øyºµ»(µþ¬¿±É*vÃS~C2Ÿ°kjòÅÖî;fá.o`'ÓzzzzzzŠ==11ÑÚÚº¼¼Ì‘»[ÁØsæÌæ–J!-–HK¤%Òi `§ØWþª/]x•ãv™SÏ>½iiIDúNŸà˜Øj½g¿ÇhàöŒ6"²ÿþÒ_Ľ¯Òrù^o·£ €m‚û–HKØ æ? ˆk—”úg¨p cN"ÐÑH”;æ0"´„m¶8:È`à6Ð4‹£AfÃ72KnŒ.¶?S§i–°U{|ÖÑÁhwu‰@‡Óér¹\.WG ±ú>/2`.ˆæì”ù8ë½£Óår9Óïyw £ÊÑ ³áDjpH„g¥ÁQUlÌY޲†‘µs€´„-½Žù¬£Ù×ãÌñhÐ/¾éé©©©ÉÑ6¾”‰‚^¯ø'''GÛG:çê§§'GÛ½© ªãþ¸gzjjjº_¼ƒQÑ´ºî™nÞ;XKæìÒÕ°T|Ì)%ÀHKغ¼ä‘ÑñDÖØ¤iuÝçZ,fÄ©²V¯®kk¿ØU§iRe­Ž½ÿG¾ôãTÆJ„gÅz@DDìõÍÁ9ÞíÈ–}1Î Kæ8S|Ì)Š·b‡•_u]ž¹ÎñCDzG¢È`£7¤ë"¢Ä]ŸZ\m­Ê¬’ýØt=‹…ê Ü†,yN À m╸¥×'E‡ŸÍz»v¸­ïÞ‘Bïߣgåôå^Æ,¥ß…yj×Î…ûjûÂKcžÚZ»Ýî[ª¤´kïÿºåÀ;––£gqˆãHKàJv::ØZ(/…¯îìуt€’Y©÷ý¶ùh4:^N®Ž#“½Ò7?ýÉó²æíÙ:4qô^¾w¤¶Âˆ€´´icÚÈÕÓ‡ˆ8<§¯Ž¬‹¶¶ÉHþètøa @Éåõ ¹÷‘µoÄZ摃‡WZäÁÖÑù>é­%2¸íi)úØÕ+&ÖÞC¹ôÁ՜ۻÃW÷§®ò@i›[ t¦ç‘’ÉÆÏýéÓ}½¹•çôÿô]9°fÜkí{lâè¯W÷ÕÖvê©Ä¦ä©#t€5ÃÆè‘¾Z{§."J=u~¾‚y&Gïå<ÙÛ¶Š„ûjO¾¦¯.ab À¥%Gïü|oƒÜX`à›o­¼({˜£w>Ú›³À‘÷8'™¡*oÈaÌp»ÒlÃLE °Uø?q¥T6·Ô{ö{2·£ €š–N=û4‡ ì/]xuÝu¸@Z -–HK¤%Òi €´@Zi €´@Z -–HK¤%Òi ¤%Òi €´@Z -–HK¤%–HK¤%Òi €´@ZØ]öUºÁK^å¨ÒR§ž}zÿþý}§OpÔi©°ååeØS¸o €´@Z -Ünû8ÛÜ®üʆSÏ>½£Û¸Óë:zç6v/tJNAZBY¾òÅ/ì¦æüý~¼£Û¸Óë:zç6v/tJÁ6‚´„õýþïé´‘úƒŽ¦±t HK -QÐÑ4–Ni  öi´‘úƒŽ¦±t HKØÓ[Mcé–ÀX@Z'*¥S@ZÂûtÚHýAGÓX:¤%usEU´¾a„Ï<ÔùS}uQêÉï¼ý͇µ[ººoûšûÎÛß|HÞÊ<¾Åb7ÖÆ¬Z]û§/?õí+\“ì:g?[lù.¨¿öªû'›ÕéežfJ}üëãÿ뙃Z¥'ɦwÄV—^Œ[}L¶º±™šß¶†l“¤%Üé´”¬t,PI¥>ûò›Þ‡4Í0Âg?õÜs]}îŸÿáéEÿhýÔs—å)s“"?ô|øçED7 •1V’êæ¦üJn4m¼õÃÁwu]ÿÉÌ›=Ÿ|X+x(òëiìÒúFøìsã*Óʸ)Æ–D¥ë¯´}îÛ¿‘§^ž3ϱ¥þkÿÜ÷½ÊjÅV´¬¦H56½#¶ºüÛòb\§Îå½ZïØÈ“©ùVwîíì€ Ì‘–*ü1TfJªõP×ËOêú»ßùaØ\áÕø+Ï>øéG®wøßXI~¸òæ™O=Ôu]ÿéóŸzÑ\ÒïxðÓvÂñ`½ãK¯Ä“ù5ó‡ßŽézóËߨUÆÍ¤ZQ–'ÿ¾§VÙ'Fö “yüÊ+_úô#g›Zÿ?.}yírU¢ªEÏÌt3·SGWöbÌßdÝWk‘Bî|c ž y'Àvì”üsÏ<™j›¿žx%žêÄøØ‰gÇþ#ýrÛŠ6‚´„ræ™JÌ7ò+™%µŸy\)¹ü«7oª›+FøÌçÎýæã_éÿÚ}ò“ž3o­$êœx\)¥ŽöÍ~㤬$úÚ¯ÂWÞøÅůV*øüsÃìbswQöÏfµñæŠq3ü£süå'jùÌÇD~3ùF<µ<|¦+¤ë÷ÏýÒר²êYlùî¨v?þíÌÜä¯zHŠ!¢ë—{f?cþú»W¾üÍ þxÿÜ/úêÁ¯õ•¥Ì c®föø{Cqäã?îºOþíÜ —~wSeWûÛá¹,JuÔ®sîå<ÖõËÓÉoý¢ÿ¨®¿{îâ[7K./XÕgfv3·UGWôbÌßdÝWk±B¶CcË9¶a§äŸ{+Éö†ëú»Ó¯_¿¹bÜŒÏMÿFÞýÎÌõã¯Oª†G>’~¹M'¿õ‹‹_»OþmÛÒ¶bn)5ž,´äÕ7_ŠÈG«jï9$"‹¿‹¯$ nr3©nÞ}Ï¡¬åÉ"ïÈÜ̇+ñÀþýÄ3u+ªê“ÿù㺻òÆ5sùïE)Ûª5õ/¶|—Õ?§_’"J=ñß»êÌ’ßœùROÚ¤Ô{3s™ÞO­v÷=‡ÌÇßýÜ]æ^Þýx'XÁ§r+õÄçŸüCs×üÕ[Y»ÎY^¢ªÅÎÌìfn«Ž¾•c9¯Öbël‡Æ–sl¿N)|îÝuð£"b>~{lðª®ëúå×ßN­èà®i£yâm^qÇqßÒÎHK^•OÍ3'Ó· ¤–Ü÷GIª›b(]ÿÙ·š~&º.±÷¯%ÕHÞ&‰W{þ껿ÕuÑuQF2½aj¼õosEĈüøÂBL<Ÿ¾^²påkŸýÜÝr탘ˆTW}duÊ=™T7‹-ßEõÏéú¼_Ͳz0¿÷Ëèåü¬ðSr+ Wõ.M[çÌ\mæ¶èè[}1–ñj5 ÌYç®mÐØ²N†íØ)E^&<Ú¨~:{ÿZò­pðc_ìk|½÷»ÿøOO>`ý vÔñ@Ϋu“ÛÒÖ·’4* $}UÞXÑDDŒý?Óº.l½KÉŠqàÀ}¢ÞûóÞЩÌ—±’•µ›ÆõPÿw¯ÊǾøý/]ûò©is¹d­#¹»¸ím¼ºø[Ï÷gÿÜ¢¥~ýzëÞ›~{©Å]U¤ž{ þFn?æüzàÀ}"ïe•pß¡ÿ´‘£ô`Ýã2ýËà‘çïÿdñs¯t±ÅvZ^¸ª7e½3S+^m¾¥œWk¡u6ãîþ[lì:'ƒÙÑÛµSòϽ¤–>íéûÏ=Ðò‡·ïÓoWO>þ™¹·É'î8®Ä툴¤*ý1ÒokV’êæÊ[#ó3¥ÜÞöO®$URUýÙ£ÓõŸ_zm)k“*Kˆ,^»nþz-þžˆÜ{÷GÖUìqE?›ÓÆÈpè¯þË݆ùkºQï½þÖRRÙ퉮ÿü­ˆú×¢ëf=‹-ßeõÏé—ì_3]ÿVD­D~uE×?úèCwG[±ÿ IDAT)£DÏëåOë¸W©é¿ùê奤¹$ú¿‹®$×+jñÚõÔ®åÐÁ¬]ç./^ÕõÏÌíÕÑy1®nRΫµX!·¿±™#Ÿª‰Ù¡=zñŽÞÎ’ÿ2ùÄÃÍ"rå—?7—|âáf]oôû?ÿèÁª•-!AZÂú’ʨôG‰èzèï>ëüüÑ#_ø¬w¦¦ãåŸ~ý~#UÔ]Oœ?åRïÿÃñÏ=ò—Í/Í'•2,MÝ•wôç_6¿ô•ý‹ßjÖõPÿÿø»ÑõPÿ/ϧæ™E¥w‘y\ÑÏ­·q%¹ôóÿýþ}Òž½ð>yä^¥~û/áëIõ‰';îUjöçÛŸùŒR™z[¾›êŸÓ/9¿š]?û‚ó /„”ëÅž°ä¯VN/«»[¾õÓ3 òî¾âüüÑ#Ÿ?zäí‡S'Xé¢Þ|©á /„”rã«ödÉ嫪ŒºuÏÌíÓÑ{1æ·u_­óIU°;ÒØûÛgÏ~é>³&fÇý¸½®tGoÛNÉ™$ï>t¯RJÝ÷ð'«’ÊHþÙ_~þO²~U[8BâŽÓzzzzzzŠ==11ÑÚÚº¼¼Ì‘ºS^ºðjë3±›Z4véŸN=ûôÎmãN¯ÿa‘<Õó+i>õZ÷ŸîÛ8öTGouc7ëØ ’ßFÜNcÏ™3g¸oiØ s³;½ÌŸ¯÷ÇR™(™T+;ù¦×=ÕÑ›ØØ-=xõá6 -í{anv§·‘ùóõØ¿:u\D I½÷»…'¯>– "²²Æ‚ÞÆÆk^Œ4–z‚´ÞÎÒFÞÝ‚¹%ê Ò¶ëX°®Êïô6&¹s‚#¥ž -áâJõMcé–PÊô/.ÓFê:šÆÒ) -¡°½ðÅ;½|9 /FK=±»ñ]Þ¤%Òi €´@ZØ)Öÿ±±1 -ÖÚÚÊ1¤¥¢–——9F`/ã¾%Òi €´@ZØéiÉ0§Ëår¹\NgG alb… #2àt:øÛn†p¼óÎ@úð¼£ÞÉ4ªÒš¥íÜ£ÀŽLK†‘ï<>³µNNMMMOûÄ?¸?äÛ#—l¯ ‘¦&ßo¿j{ã›A¥ÜþÉÉ™™îõ»gfffºë4­Ò5­î™öE_SÓ@„ÀÀí«|“ëñ˜ˆT[«Ì¿Ç––s݆lô†t]—·Qú§»ì5—˜Û¸ý“Ýuš¹ZPšÛÛGF”ªi¿8ÔbÑÌìb®¯jjlY¦D!ýýâõ®ÙWö¶¹A$è<>¼ ë"¢”ûÅ©GÞp}3¿Âk‹½1Þy|dAWÊÝ?ÝU§iëÖÇç ‰HMÛè#Üy|8&¶Õ®­€Y`Nzô“þÅþϳfÅ|M¡LUƒÒÜ?Ýe/”\³kXhGCþx£×;XŸ·GPŽŠç–4­®¾Yt=ämìÌ\ƒÓ´º®é~·R™?ÛšV×=335559ÚV£TÐ;˜™ÂÑõЬø&GÛl¾5F½!]wû'§} Ùû*Qˆw®Þœq)¸mn9>“fÿääÔÔ”9a“SáBÅŽÙÚüm6 z£åÔÇ\¾0âiô‹ïb»MbÃþñ„aäW ?¸˜­xâÑ/d*fÎ-•ˆ8ù5,¸#{}³®‡ÌÀ&Ï-MLLä,yì±Çêºgüâô…Fï <¬6Q±53g·RŸü ¬;`µŸ+»†¥Zj³(Þ› èÜDå &2ÐH˜÷ëDçBºžþ3|Àj‘Åø sÅõ§|²‚Wê^¨¹hêöô3eÍÙ¶{W¿[©"ÎÍ‚Ž›®‡FdzŸ® QeT`Íî¬Õ©V”¿ ×°ÐŽÌnª¶Z¸Ë€Û–4­®Ë'þÆF—ËÕä ©š6óþM³óµÛ$6âir:¢bïêoÖõ·qtÑfÞ>Xâ³úögÚk” ùšæêûÝJ­î«ŒB n››ðœN—ËÕÔä Š­ÝW ÂùÅZZÎùÝjaÄc~ïQÄ0ʬO™(˜o‚sÜ‹_Â;ŠÎ3·U€ŠÃOOOOOOO±§'&& Þî„­`Þ%íϵX6«ÌD ãø°d¾ÈT{Μ9Ã>ÙNÑÕÒ24Ý_=|i³¾0Ó0"—†«û§‰JlÜ>Áö LZ]÷LÝö, €½‰¹%Òi €´@ZØNøLÜ®õÒ…W9€òzöé=û§$¿í¤¥½¢ïô  ËËËû÷ïÏÿ>ê¶/~a×·}ä?.½i ÈK^-øûÿÙÇM;¤%PÜï“–HK æ–HK€´DZOK¿ÇA¨ 0F"Ðát¹\.—Ëéì$ŒM¬‡aDœN§s b›µí­”yËm©l§ÙU-]í À†}¸¢*úùÿn¾ñßkkív{m­çâÉJ7¿#?›™–Æ;Çlm£“SSSÓÓ>ñ®û§ýÎÒþÿöî/¨­ëÞøÚû¤gÎ̽/LÆGõ˜ie’ÆM$Æv¬?IöQœâëÒ„aœ¦ ¡ÐŒ¥M:¾“]ḕ¦0*ùÓiUNcq¹­¼MõÈDÁ¤é[Fqk(–kù‘—Û™i¯u¶$„Ð’6…ïgöƒ´¤µöo-a¯k¯-8Ã@88î¶eu,ê²Zó=ÇÖž´Ì±*6ÇŽõÌ;¬VW l¹li9MeòSŸ\üøœåOmb$%ï¬l)'„4jë•9[Ó>2 '1·Ù.ñ<ÏKvóJòdÉRfô\–àóõ¬KåÞoîóίÎ*Ô‰F]ùk0u×]°)ˆaÝòüºWè•‚þ®=£Ûî§‚8Ò®aI_¯)·W¼n‰î—[Ó>" ÔoßêÙ*l©4­ð`Œ°tš¦dÆîÛ{Oš.§æN?üðù–Câ\J^¾~æ¥CÍ-‡žÿ𺬼4—’—çÄÇŒNÍ­”¤ÒT)lÉ=½~æ¥CÍÊÛ*ªÔQËlÉh#ž|náû¿¸”+9v¤~9M—Ó7ãGš÷Óåý-ÇnÈšÝû>[L\úĤ¹¯åqÿìåÄÂçûîÝ%³”ÜüôË×~üÃs×3‰ÑÅøgïw=jëúåçñ…Ä–½§$L€·»‰–È”+PV«Câ×müfþÕ½ Q­{ç(!eW¡Æzš(寎v©î1Úp≛øw ›)%Ó &––iê›-æó³WÒòJIþ«Ùwï¹ON\_x²åjÐ?y-‘`_Û£QšÚuäWãÏ-t»/g+>õºæÜùÙ.œx€²ÊS=jœ-B8NÓ6ì(-:U3–œ=q¢ëöŠ¥Õ}05i¤z:mC•5´º¼Ò´„â@ !ù·F¨eIË´Òƒ&Ë4}sqQy+‘iZ®×4Í߸IÓÑÙPÓW¿"Ó/köM¿?¢=ðpZ¦÷Øç}ÿ¼V³{¥µ5]˜¥e™êõOüñR”VϺG-³%W¯/³˜‹H<Ÿª•a>q«âõŽ3({¡"±Ìžò]ÔëVg>q+Û¯F­†ã”ö•òÕíôwU©mÌ„”£ïw ”« u!j=‰a—7l™²JJü§ž6=û’çÞŸ¾ò#2e”ª¼Ä4ÖÃs?híxká¹¶]ŒÈ÷ìÝG…‡÷3™2yÿ£ß¢”2&S––/¿k{ìÙ§í4ÛÈý/Ñ·Z¿wäðwm§ÿ,Ó´|ù]••\Ël©ßAD³Ùb±XmênÓpÇiÚ=:W63ň¾ßiãyÉnöÎëˆÚ½c+Éıž&J%‡5btæ–‘8ÎPN#EëVmF4[Rn_”Ò¾Ò/¯¶'/¶Uý-ˆJÉü‘Xîf7«Õá'ºG‘±Š2Vub~¨[$[¢Ìp|rú·¡ßN„Žï'Ù’Wîg™¦èî¶7'§79bÝM²O3¯*uójMçÉ/ùÝä+÷3’kv탚gKÜààààà ÚËSSSKKKÛõ‡€±¨Ûl÷[Ñ{ܪi0éëëôž±‘vÍ&ÅœôõvzHÏØp»¦TÀjM`­7ÞyïíW_,˜ñO0~ô™g¶}ßÇ?úèÄ GÕÒž¡¡!üå“ã4íÃ!­Û|6ÚÖ¿÷©1=ëi¬UnPZ9K/ÛÞNÏ–”ïv¨}›†Í Ø€\¸=ÒÈ–-@ X[B¶%³%™b-mgKKK§?Ç8@Õp%ÙÒvvâ…£uuu¸-6"tádKÛY_ý€µ(€ük6Ù”ËQ;ó캺ºµ¿fwvÛ÷}ô7¿G¶ëPûNã¿‹Çà [U_B¶„l JÀÚ²%@¶„l ªÏ–þ ƒPAÂÈXÒ×k²X,‹Ådêõ%kùuUŒE]&“ÉäŠ2v;ëÞfŒE]ÆY“ÞUq^BÈršVt|‘úôäCéõú‡ê[”+­~GŽZfK}ž¸®Ûƒ¡ƒˆî(cÿB™Êfç%ëVgQ—Õê˜ï9fà¸Û“ðåšý±žy‡ÕêŠ"a€MÌ––ÓT&ß9õÉÅÏYþÔ&FRòÎÊ–qBH£¶žB8NÓ>2 '1·Ù.ñ<ÏKvóJòdÉRææÜœíóõ¬KåÞoîóίžãÕ‰F]JVQ´îZQWv=Ì]›šä_¡WŠöemØeV_›¸¸í~*ˆ#í–ôõšr«tÅë–è]u=ºÙ6, Ôoßn9.lªTšVx0FX:MS2c÷í½'M—Ss§‰~ø|Ë!q.%/_?óÒ¡æ–CÏx]V^šKÉËsâcƧæVJRiª¶äž^?óÒ¡fåm•GUê¨e¶d´ž—ìæ¾\®Ãq†þS ”RÁê7pÇÂá`0ðv7ÑÌÜœ9/ÍGÀÛ­#qÏÙ˜RsÛ%žÄ@ÈÑš;QéFìc8<`ยu $}½‰Ä@@xÉÑëKª½sm_V…- <5vùÕs”hmF=cQw§'Nlb  Ãáf¾ym]µÞm¤Gz£ç%»;†ü°™kK“ŽÖGÌ'Ù‰ágvÉL)™–ß¼0ýÚ7Ò7ÆOºö}* 5zNž]LÕ7èþú·½4;ù¸ð”öârbñšnïÝiúEjîç'ØÉà'¦_{Pf_¤ã'-cŸú½?ºö볋5]²ªe¶d‹åù«£]Öõ—%굫 (ºÚê3åþH”1Æ’‰yBi“¶¡ÈûÕqöë !ë×%„±äÅ™8¥‚QOˆÞ(PŸ¹˜¬p5%¶Þ(Pª„]ÅZ6ZÁ¨'+i_ß„Z0j½Ûh”^Ì'ný@8¬$øjš-1JŽüäÂÇ“Ï-|ÿ—r%ÇŽÔ/§érúÆbüHó~º¼¿åñøÂ Y³{ßg‹‰KŸø4÷µ<œXø|ß½»d–’›Ÿ~ùÚxîz&1º±ÿìý®Gm]¿ü<¾Ø²W┄)ðv7Ñ“½r™ÉjuHüºßÌ¿ºWa#ªu×¼'O¸{Ï}râú“-PƒþÉk‰ûÚÒÔ®#¿n¡Û}9[ñ©×ý3çÎÏ~táÄ”U˜êQãl‰Âqš¶a§@iÑI—±ä„è‰]·W(­îƒ©I#„B´ºÕ:mÃF~dª¯¾*NÓ>‹%„ä_g¼M=Úà ÀN’–i¥#L–iúæâ¢ò W"Ó´\¯iš¿q“¦£³¡¦¯~E¦_Öì›~D{àá´Lï?°Ïûþy­f÷Jk>jº0KË2ÕëŸøã¥(­"žuZfK®^_f1)‘x>;é*ó÷|âVùK>+«,Ê^¨H,³M§üu#õº«»ƒ­:å=J̺փŽSê*1¯®[ÐÅ|âV¶ËÚÊ«g"Ñ6f¢ÍÑ÷;J‹£Zï6Ú£l/êI »¼ 2e•”øO=mzö%Ͻ?}åFdÊ(!Ty‰i¬‡ç~ÐÚñÖÂsm»‘ïÙ» ïg2eòþG¿E)eL¦,-_~×öسOÛi¶‘û_¢oµ~ïÈáïÚNÿY¦iùò»** ¸–ÙR¿ƒˆf³Åb±:$ÚÔ=6ܦá8ŽÓ´9zt$®lfŠ}¿ÓÆó’Ýì×µÄV2†c=M”JkÄèÌ-#qœ¡œFŠÖ- i*9¬V‡¤Ü–««ÄìÕöäwU_rgœÍV‡”Û2UiõüÜȉånv³Z~¢ëqÆ(cj½ÛH~ñç÷ æÙe†ã“Ó¿ýv"t|?É–¼r?Ë4Ew·½99ý»Éën’}šyU©›Wk:×H~Éï&_¹Ÿ‘\³kÔ<[âÕ^žššêèèXZZÚ?ŒEÝf»ŸØŠÞãVMƒI__§‡ôŒåRœÛ)éëíôž±ávM©¾¨ý jØÞÞxç½·_}±`Æ?ýÁøÑgžÙö}ÿè£/UK{†††ð—OnNÓ>ÒºÍg£mý·ùf4Æ¢g=µJû`ç(géeÛC¶¤žÜp†px ömîP_ øL RidKÈ– ¬-![€’Ù’L1È– ÐÒÒÒéÆ1@p%Ù¬uâ…£uuu¸-¡ À [Úæ°JåÿÂŒA@¶´Ca¡Öµ´´TWW·ö»?»íû>ú›ß#[€u¨};ñ¿ßÅcp-€ª/![B¶%`m Ù [B¶ÕgKÿ†A¨ ad,éë5Y,‹Åb2õú’µüº*Æ¢.“ÉdrE»ukÝ…Êb¨:ò*ÎP…å4­èø"õéɇÒëõ=Ô5¶(WZýŽµÌ–&ú:=q]·7 C!ÝQƶH¦rDZ¨ËjuÌ÷3pÜmHæ8Îp¬gÞaµº¢H˜` eKËi*“ïœúäâÇç,j#)ygeK‰8!¤Q[¯ÌÖšö‘=‰¹Ív‰çy^²›W’'K–2—çÒŸ¯·`]*÷~sŸw~uz¡ÖH4êR2¢u×d*™õ°\²RÐÎz¥ YBHÔ•]BsE 3ž¼·åçCn»Ÿ âH»†%}½¦Ü œë ½R0Dj½®4ÚNOc—@ýv䬰‰RiZáÁaé4MɌݷ÷ž4]NÍ:$~øáó-‡Ä¹”¼|ýÌK‡š[=ÿáuYyi.%/ωœš[)I¥©RØ’{zýÌK‡š•·UU©£–Ù’ÑFx^²›ûr¹ÇúCNRJg¨ßÀqg‡ƒÁ`ÀÛÝD3syæL¼4Co·ŽÄ=gcJaÌm—x^!GkþÂI‰Fìc8<`ยu ÄÜž¸®[ìÖ¿Ý[év^;O“¾^‡Ä b ¼äèõ%ÕjåÅ.ñ¼Í¨g,êîôĉM ‚Á`8<ÐÌ7 ‘Z¯«ˆöY£ç¥üwlµ¥IGë#æ“ìÄð3»d¦”LËo^˜~íéã']{‡>•†='Ï.¦êtý[‚^š|\xÊ?{q9±xM·÷î4ý"5÷óìdð“ Ó¯=(³/R‰ñ“–±OýÞ]ûõÙÅš.YÕ2[2 „EòüÕÑ.ëúËõÚÆÕ” ]mõ™r$ÊcÉÄ<¡´IÛPäýj8ûõÊ2Ì:u a,ñBµzm#!d>‘ÌÆœkgm³gâ” F=!z£@i|æ¢Z­Ü‚Pbždªä’›¾‰¤Êø¨E^E´J„d>q‹èÂáµiÀmÏ–%G~ráãÉç¾ÿ‹K¹’cGê—Ót9}c1~¤y?]Þßòx|ᆬٽï³ÅÄ¥OüGšûZ÷Ï^N,|¾ïÞ]2KÉÍO¿|íÇ?*<¼ŸÉ”Éûý¥”1™²´|ù]ÛcÏ>m§ÙFîyˆ¾Õú½#‡¿k;ýg™¦åËïª<¨4àu¡‚o§ìw>³ù*ÏBhS÷Øp›†ãÑ´9zf:=£]Vœ¡þ~§MrHvó¼NGø«’ÝL~|D­Mý±ž&¿GrX‰èüv6*§‘¢u hÚGÄ„É1Úe%Ê>kýzÝÌTqX%B”ÛÜÖ}¿SðÛý‘X¿ž(wÀB(Ñõ8Š‘Zä•F‹ø)µ9ûõ„`£7lV¶Ta ÃñÉé㫪ŽO#²ò+ýî¶7'ÛV^ÝÝöæ$ɾj8>9W+ÓN6†¼–¡Ùf×>k½vÀ ª½<55ÕÑѱ´´„—ÒXÒ××é!=cådW5‘ôõvzHÏØp»¦ÔÒ—Úß”È÷Æ;ï½ýê‹3þéÆ>ó̶ïûøGxá¨ZÚ344„¿|R£¬SÓ>ÒºÍg£mý·áÆ4Æ¢g=¹¯$Ø$•¯-mCÈ–j—0q†°aû v²4²%dKPÖ–-@ÉlI¦dKÛßÒÒÒéÆ1P\‰C¶´ýxáh]]n‹€ê„.üƒ€liûÃ@@Õ¿rcHù`GYméÌ™3&@¶T\GGÆ-©Â–Øá°o Ù²%dKÈ–¶’j¾Ë›±¨Ûl—ø•LKîŽt ?J›zƆÛ5\ùýÄæ õ8nSÏUØNÔeuH„J…ŸùÔòzEal|¸nÛé¶ê×–(Ä@ Jývw”1µéÙe2™L.µ7lhîOúúÌv?±‰@0 …DtoƉjx.Æ¢n»_½px ™o‡ÃáMÊ] ÆŸã ›z:dKëÎÍI_¯Éb±(Ósn1†ç%»Ù­”ä&ïâ£.“Éu…^Qžú|½‹Ådêõ%‹ä%±³ž«²’D]&‹Åb±XL®hAö`±XÌ}ÞyõÈ7~®\ò»? «5¿§ÊIsá™z{{K”Ê Y²\ÑuÆ¿¢ÈñO-UëVbžb3*yCÌÝé‰ëºÅnñÛÝ1Ž3ô‡œ¥” å\úáyÉ1æV>x^š!Ž€·[Gâž³±µ«&?¡T0ê‹4•ôõ:$^Qà%G¯/™IzÜv‰ç1ríO „IDAT´®J†VG^“s­íBþ€(kKc¢^9ƒ¦,SƒÁ€·»‰R¿Ý#úÒã_~äø§;Ö:û–¦¦¦ Jžxâ‰Ülê°J„js† ¹”‚F­^ÛHH|>‘dúúJ¢¡TpöëóŸvµÕ¢m$$îDûõeo0J^œ‰Sj3ê !Fúý3“mmõäVbžPÚ¤m ¤^ÛHHlÓv¼pœÁh#’$EbýCÁ‹ ZÝêÕ¶¡TcE"ß´smÆ’¢'Nt=Þ®D§Ý¿~Š#Çß €h£û–êÛÝM4î}IÆqšƒ­:ž—¼· §d2Ÿ¸µ’v(O•=:9»þXO¥~{_nrÔ劲•H"1Bb‰çu­5§œ])Ï?»Jä:WÕù_±ðÊ´¢KS«Æõéj9²¥¼¦­ËÆóW=âD’1Mûˆ(Ы£]¹›Ë8NÓæèÑ‘øh—U)ÑË<õj{J7tvMûpÈi#ñÑ.«rcWĘYR"‘V«C¢‚8Ò®ÉOz$‡5btæŸ}mä?W5ù_¿S(^9ƒÆq†~§ç%»Ù;¯#Ê}p1R_0þùUj9ÀvÅ ª½<55Ut»l6eR<»ƒ6[Ñ´ghhè. ÍÖJ’ò¿.\×3֯ǘÜYÈ–¶å»¶0[þª.²%dKÈ–-l%¸'`«;ýÁ8`óœxá(²%€yo¿ú"`3,--ÕÕÕ•þ"n\‰€«œõ{dKÈ–ªUå¾¥2·®»m `{fK„ý ³ô~ùþÆvn¶ô?þ£šºŒEÝf»Äó„J›zƆÛ5œRè'6g¨ßÀqÕµYºzþy‚0pwdЋB­zZÎI” Õ øfŒÆÚNá#+îâÛú¾ÿCùÎpìƒø àv¨~ßÒÿü/=3T™9’¾>³ÝOlb  C!ÝQÆn[o)Ä@ JývÕS3u™L&“k3b»³ƒ Œ@0 ƒáðÀf¤Jµ=|d©ÒC£û&c±XlrßèCo_Äÿ`[;[úÿL¯=ôz}Ubg=WyÞæÌü’Íqšö‘Uvb¢Ïb±˜L½¾$Ë΂I_¯Éb±L„Q—Éb±¬-'„°¨ËÔëK–=™œ"·ŠÀó’ÝìVJr3qñÇQ—ÉäºB¯(O}¾Þ‚^”?+ýrE R‹ÅbîóΫG^yZ“©îŠfê&}½¦^ßMõެûq>l}õè©ÕRëÔŽúÈ*Mò.NÿåÕ·;öBÈžŽ·_ýË4Ò%€­-ýãŸéü3ý˜ñÀcƹDŽó¡ˆòtíoÿ?¡T0êUBá¥âx»u$î9ËLTîNO\×-vëˆßîŽå&u»_×í ¬] aI_ŸW;6ܦ)±jr+1O±•Чà8CÈ)PZæ…*ž—ìc.Œ¢½(s’¾^‡Ä b ¼äèõ%³ƒ`—x^!GëªY¼Øà”ã4mÃNR¿½Ï—d,êêLt…GÚ5ùž¿ZþÇ1=íüÙšÑ+ZK­SøÈJ%K¾¯ïÝ“}¶gï×}H—¶x¶ôEú_¤sÿÓl$„œ;?«”ç^*¥BW[=©×6Büå7Ò¨Õk !ó‰$cŒ%/ÎÄ iÔÖYpw&ºÔS%ž—V«µk4ns† ¹¹°à•†íì×—èEùë%gâ™YYo(Ï\Tú›˜'”6iH¦Ù¼Y¼Òȕȭmpœ¡¬GGâ£]V³W;¶¶#z£@iµ‡jœjÚiÙ-¢‡7é’(Üùli9M—ÓTyü¿þó1BÈýßi¥0ÿ¥„ÈK«CâyOÜ$„›‰xÑ7Î{ûìþìòƒÚ4)ÄÜô¯~Š;bM¿Võ·x:Riä¹}K¹šÓ´;zt„]ëAMsvÙG9µTs,|d°²¥Tš¦òR¢ßøBJIî(x?ÇŒ6ÂóR¤‚ë ZÝÚ ¾A«+þîÖV/9ò·£?Ö£ãyÉ;qKý›¥ä ¬é—NÛPñàT,»8Dâ±è®¼H*û8j'>2ÅÁÃíYü{öÙßÿÒ~wÅlílI¦)9“½w. <Í?ŠNzMÙ]2JIÔUj+Çi¶æO“+…ÊeŒÕµmýo·Îo/0Õ·9º›¨’=EvÌœB™/•§Ê~”Œ¸Ú ä"‰Ä‰E$žW{ògëü³«D^±˜»3ÑÊìÚéÌ¿Õk>q+ iÔj8®ì£`ôŠÖ*Þ©ö‘UºËûàá¯¿óÆ™¿BÈßϼñÎב,lñlI¹Ü6òßS#ÿ=•®Ä•8NÓ>rÚH|´ËªÜF1®³'WÓ>" ôêhWþUšö§-ÓHÁL“9…ß®v“2iµuÙxþªGœH2¶ö§isdvó(%úc™§^m@7t‘±Ä (‘H«Õ!QAi×äÏÖ’Ã1:óÏ^tpÖù¼³û–,ËáÃÿÛÕkŠCŽÓ´;mV^بKÒh–¬$•.—Ë•(jFÓµ¶ûâööb3Sp}µ× rØ&§ÊËëÙP0½O¹b9l³«Œ¶®,Õ³ ³©jµvHdÆi¸DFh Õ4ôqnxmË8Y-c-ˤz6äry<ÇãJ”[W—¤z6Ôü*”­Ë«ºeIRìì^¨“x9ÑXÞøÖ•xÌËÓ£^/FR.^„*Iõ…ˆÈXGЩ¥’ŒˆŒùƒ'óPåQÕýæ\U&F•8R’ÊI÷lz¿ùÕ~:è *ÿ5”=íÄË WTÄ gC£ù”Ÿ11ê»—æîÛ÷Â8Ÿ˜j¾üÔº2çÖùµ•€ùdÍÊÃÔ>cs™Õ€Y*'¼QQ™0 ‡³­“ú +µ·Q¥˜#N¾Ž9 Ddߊ“Úôè"ŽNVøÄÜÚV[ЩÃo[S’ÊÅqî N›ˆˆlNçDµ#’¤zí€8Ÿ˜_;‰má¸ñ:‰Y¬Ôx”ßþè£9†Ú:â¨jIw$7ܨ”ûŒ16¦êhca6Y°¬u†³m#²Œ·˜ˆè°V%"ùó)byµÄÁ<½²F ³é}ÆÄ¨Gìud ‚yz%^sGR³IK{,ÈùÄ|WØÚ|Cé vDvïýmdÄö) ª‰Ëù ¬nN~´UŒ,XÖV¦M¨\¹¯ø‚=¼6o¥\¤ù{¨‚`wú‰±ýÔÃJ÷Ê_©þþ?cb±"[φ\³»4Ñœ “xg®¶â>ΩZ;å€Ñ„§ü0r¡"TD¨€`*õtssåç`ffæøø¸w„*¯Šò€3µ¾¾®ºüšÖÝÁì9{ïýpÚ.«wßzSë«k£œïå{oãä\>ÇÇÇׯ_×úoJÀyÓZŽF "T-šóP%©œtG(¾µhZ–[a» œcKË“;·ö–íK¦öníNÞýk‹°9cUcùƒ½%•–[¾zc¥Òšh3å“8ÿü½G™™›¨$£¡Êr‘乇¤†äXÚÛ[R aÿÆr"" 4âÒ§ëÁ×—K{]1ª²‚œÀÒúk磪æàjéñ”Ÿ11²°Q—¤Ö…’TN¸\ž¦DYRº\‰r9!/eëR=r¹\®P¶.5·­gC.Çãr%Ê’t²Uû.ÎÜÍ_ãVà£ÐøÏÓõà¤Íf›œ\.µG”6›Íf³-—J˯”ŸÕR(-Ë›ON.ÿ—Æî·î¶ïj+,æcûéÙd¥u© Ø·· …B>37Áy.’TâKÆÄHÑ)/ßOÝ1Š®Í[©šŠ5ÂÜJr6UµÎÅæ¬”‹´'{®ž~ò$pK¨òézúɽ £ñyéã¹½J¥²÷€î6ȧëÁôK*•J¥R¹µs7Û#µîJËwi¥R©T*{{Kÿ†K{ÞhLH@„ªÅÎÌM01*”v2YÆÛpmòrÎ}ñ•i“¼NµvH$IåbŽˆÆ-6Ë8Ԏȶ¸½½½½¨;‘ »`kµüxIM.Ѳzx²¯%Zn>áúÝMzé""rÜ dwJÍ…·_kLp,=è¨j)¼ðÒ+O èý‹ý¦éèÜîl*²`Y * ¥zva6µÏ1F¼Ï ˜‰Q¯HŒÉa«¹÷ö—šJË“;ƒo@åý(µž®3/*PðñG}ëçm_“£pzãVcáË·ŒÎQUMáæLæÁò䤱7ze ê A0O¯ÄkîH*–±Ò¸“H’ê±T•¬ó™`m6’ëcwc+ñª/>’o_µº9³üRp¹äãÆ^z%°’9M ©•‚ciooIóµ-€«ÈÐï¡ ‚=¼6o­V«‡µ*[LýíLÌŽ)+cbfãH^òÜÞ”2£¦ƒëO‰ˆn¾vûI×ãø“§õDTZn‡úä“§Dôt=¨,TMA•¼-"ÔžÁ¥9°÷Ÿ¬q?cbÄ9°cbÄ4bš«1ßO•×ùG·lnÎdæ>~=¸þ”èæLæÖΤòÞ½j:–½”n,ܹ¥ÌCu,íÍ}üúäää-ŸLNUK¡´<9i³Ùl?ÿµ—È¨Ž¥/ßïòÀ•&ѳgÏZmnnÎÌÌ?ßœ½÷þË÷Þ¾8%‰Ÿ20jéþ×—ï½½¾¾ÞvÞ¸qõFË5Á8–ö0~ pÙ#Ôããã÷Þÿ' êHx÷­7¯_¿~¡¦¢À¥ŽP‰è¹¿­çoJ"TD¨€`Wë÷P¯_¿ŽS0â0† ˆP´õxÊ/Iå¤;"2FDœO̯­ÌJ ÎŽÞªTÏ.¸#9òÇòùB¡°µ¥X²,I#u’TN¸\.WbÔ2ÃP+SûŒùãa» ‘ ˜«‹òg"*'\Çãñ¸åÎ`±œ¿ eëR=r¹\®P¶.\‡ˆ$©ž ¹<z*f³!Ç#¯¬ ñ2&FÜèYN­‘7Wâ1Œà2D¨’T.æˆsŸÓ¦òm=ŠŠÌËçc>&FCÙúIŠLŒùÌÜçûé ;Fѵy+US±z3Fì¹N%9›ªZçbsVÊE’•ÖÄw)šÏÌY©šzX{x+îãœs_|+lI*'gSÕæ¸ïööIH ;BÕ!IõÒnµ¼Úœ>Ϋ»%%úäÜÛÈd—?¯L›L–q"ªÖ›)è¯#ÇDã›eœˆj­‰§Mò†”+j ‹2&FÁ® Ø··ª\æ•è°Vm_Ð}-gLŒz£"c}%.öðÚüçl?ôze<Ù¸,ª Ø~bL,Vº¿³XÛX-cÃÌÕ˜ÅJœû{R/˜«ÛÛ1'¢\$‰é§—$B%"Ûù Îs‘å¦r"Q–$A0;¦¬àµR³N9ÌÃ{†®¤ŸÙ82ÎÔÚ×µ…ã>ÎÉj1ãe€ Eï÷Ps`eË’tGÒAošˆˆ|±ü¢ ‘9°«¹¢Q¯HÄ}±Õ€y¸Ùj¤ŸzÒ$¿eÓg§£ó»³©tЛ⾯¾ð=ÏW?àJÖùè´Y¨à4\ ={ö¬uÑæææÌÌÌñññå;Úëׯ㔌ˆõõõî°óÆø«§0Z¡ÀhQŸ‡º¾¾Ž¢€çBe*&kÀ¹éž‡z­çJç óP*"T@„ €¡ BD¨#¡JR=r¹\¡l]""I*'\.W¢Üø¶ž …²uIRÛ°œp¹\®DYíÛÖÄ=ÇãQv}‘¯¹ž..Wâ1ÜórÒærcÏfCqŽ2¤í^È´f©=‡Ó+1ÏE’NŒPiÌ2Á9Ôê’tX«ú|>9`•¤zíÀj#"ª$gSUë\lÎJ¹H²r²'&îR4ó1¶ŸzXé¸{pú‰11â^è^uR‹;;¿~gÊÊØþnéHšiÊ!ãêo¸½½ˆZ¸êA#Eg>37Áù~:èŽQtmÞJÕTlCîQ½˜Ö³¡¨È|±|>æcb4”­k¥/öðVÜÇ9ç>y U’ÊÉÙT•ü±|¾P(¨^Ž+ɈȘ<ìe$“ý†éªÐ:ÒHÎ:—9YSçØqNfÎJU%ΑÅËoE§ôó`sú[#–+Nó)ÿææfÇ’Û·o“É1eMU«µCyÌtËI¹\.W¬Ü±ìÒTÔD’T.æˆhÜb³ŒUjuÉf"""Î}Ái‘ÓÇs9en@“}q;F®¨¸ŸzS-õX'µxØFD&Ë8Ñ~µv(ITÚ­ŽMò¹ï¹¡ê1Œ²™™™ãããkÔkâ8Q•ûâ+Ó&ªŒU«µC"“úÅô¨´[å\ >žËí–êÓÓ¦~#ãËÚÊt÷ä@Iª×ˆs_3@í•ÉCó– HÚGJä·˜Nò¦sìÍ8Ç2NTÍËa›ŽjÄù„e¬¯Tu Áæôñ\î V—lfA¸"!JG}6¡Ê›µþ÷øø¸9U,&)çw†i¬f%ªÔJ$OB•of£^‘£~j}q;®o,̦÷çÌDR³5BÞJØY«*w\†²Ñq€£l}}ÝÈÅz¸;íº˜ÊóZôs­{xmþ`6µ¿ŸzÓj3/»Ò* ô>Ò¾½m£¡B¨6^ö¹ !Šj}6¡ªVt›ÓO¢(Š¢?Á1eMïï§ÓûþX˜ˆˆÆ,VâU_ë„h•1øÆŒ€îzcž^‰×Ü‘\ã”÷NMž! Š ¹9¥ÚP6†ÞŒÎß™]ÎT/¦ckû` Æ5]3F4V·å„+*²\$éì|ƒª+ý¡©]°>¾~ý:þ\ËèôÌ—ûŒ QÔZð”Nà©Î F¡¨¡ÀhA„ £ÅÐ1¿v®:V’ÊIw„â[‹v¡eIѹ¶ #ôlå|æÈß Û¨’tGDvrà‹å•ü_%¥åÉ[{K45€ EîІމQÞÚýŽÔuṟ»ó¿d£À°CÝX˜MU­s™|¡PØÚŠR,Y–¤sÎh.òvzJœûbù|>37ÁùEÌ?\qƒub’TN¸\.WBk}ô‡gTÕ³ îHŽü±üó¼d÷¬¯äc>\ÊG0B­U‰hÜb""s`uQ¾I•¤z6äòxÿò/?Hõÿ•²¸ÅÓõà¤Íf›œ\.,h~¦Òrëæ““6›Íf³5•–'—K¥eyárI^2Ùüܹ¤ÊÞÕ2Ð{…Æ^Ú—èç†Íd7Ü1ÞºùŠ;"2Ƙq«_Îuús¹“Tÿ¬Û¥7®V G¿«ïÈmä²R²ÊÃÔ>cþxc,¹õ’­î²ÙPkÑi-×¹z*‰wÔÇüqâr²V!ÈÕ²QÂíµ·»û:ª‰wgã2ÝP~bLŒ¸:ú‚Jr6UµÎÅæ¬”‹$+m½Oѹ³óëw¦¬Œíï–Žˆè¨´KS³ ôÜp{{±ë1?ó±ýôlËÊD$öÅííB¡Ð}‹/'%/ßOÝ1Š®Í[©šŠ5ºE­<(êÙPTd¾X>ó11ÊÖ äSµÃ(ŠŒ‘ÿ_|Fw­×nÓæwŸÑÓïnþ9ûså³ð¿ü¯¯÷ÿÝ~ífgô·ôñÜ^¥RÙ{@wåhîæL¦ùùézšdfnQiy‰–÷ö*•JåÛïÐýL3ðËÞ½K+•JåÛïs™P¥r1Gœûœ6ê÷¢¶KÑ|fÎJU¥è´–«i=ŠäÏZ Ô è¨v@$·ÕB¤rr6UmŽ^·Fª5³¯Ó¡•xÏHæòG¨öÅí˜3¶Ÿz[oC‹9"·Ø,ãDtPSº Î}ñ°M¹ñ®Ö%©^Ú­ÊðF6Ta gæ&˜•JõoñO’2YÆåÏ+Ó&%7ºyPnJ»ÕF;·9}œWwK†òÙÞ¥F½^oTäs°øåÅím öæk·éãÑ>þè7Þø¨ùùåoöUG|øÝMzé""rÜ dwÁœcéÝ]^__Ú¼t4É‘*Ý|ñå“^¹÷hÉ!/üè/Ç—›ŸOVæ§î‚Ӧƕ4W,k/W-R9qåYk‡‹^ÈVLWýñíE»~£ú|@­fr::ïÎÆÙ.S}6ú.¿}q[ž‹ÔQ@Œ‰QoTd¬µ›hé†ç£B‡µª¿õ®®Ç†jLÓѹ ž‹,lµ´ºz6äry天vZy8¬UÛÎgk¥lÜî¬Ì=«ËÍ_Îî”ä@mIŽášAÛ`_µùÁÇ}ôµŸ—Ÿ/d[¾pï=¹ÿå¹™›­£™§ü­k¶½]pošèß)swbCèuúó³Œ0ú»Ü\FC;wjEÚ•øek1%¸Ô*A°‡×æ'8gûé ×Ûëî«¿Ó¡“ø%®Þ}üM)A0O¯ÄkîH®Z;$2јÅJ¼Ú6†ß1óAìN?‰¢XLRÎï\l¬Ö{Cý ¤b+;別ªdÏk³‘\®’‡î¨µY-cg{.·ww–)¸µD:ù<ðW­^xé•ÀJFåúRfóö½ÀýÒ’Cþòézð.=Ø«8äPugHG§™–Œ¸¡uŒÝýù526àåæ‚:¹æVÂvû;Õ"íJü²±Ý™·Ši1³qÇ0k…‚9°º('\Q‘å"Iç–Ú3…–šÙ×éPK¼g$s±wL4ßpjÌF²ZƈÁ옲2&ftoÇ,V"EQA5¸¡Îm„µZ­¶Ý…¨?YÐïõó ¬P¬4ŽÚÚœD;#ó—·ßúÖ·äñÏÖÏÕâæk·Ÿt?Y§Òò]š›™Yj™úƒ?z¥ñ8þé'Oú8Äì]å}&•a\ ´¬ ·—G6½þ”ˆž®§³jGçìåŽÿ vÔG.GWòV•dd€Çb=Êשq‹Yzvõ—ìÍ9’šà<9yo¤œH”%iX5Õ"•¶Ÿñ“:p9 Yõ¯¦bÙº¤_¯lá¸óöˆS³fö{:ZïÎÆU|S*¥˜Ûíñx³‘V¦år4Vc>¾Ÿê¼orLMpÎùDë¹2²¡ÎmÄJÜÒÁÅýŒ‰wæÀJ:¯Žvë™y1êõFEî‹­Ìg~6·Þào41Ç­7øç‘â€_•–[Þš¿9“¹µÓxC¿ñj¼ðàÑKiùÕûôKºFKU2ОCÇÒ£—Òmoî;–¼|ÿu›Íöúý—à7UF€‘ŽQÌÓÑy+U[_]èÙŸ7Æ©¨šz3–yçdo7æöFÅÖ±§¹Ü\È»s`e+î§j:è•ßû.:lú¨©©9°÷7vêr%*dj©Ù¿¾·gÓA?cûòËyÝ… ü¸×Í‘u>:ÝqjÕLƒ§C+ñË]½"zöìY÷›››333ÇÇÇè‘ÏÚ{ï°|ïí ~øe~€Kbéþ×—ï½ÎtzæÖ3Ò}i¾ÐëÑ,ä!¿%qQê³âÆø«§0Z®¡`K{?8!ÿÒÖ" êÅu||üÞû Ð3£EM˜‡:"®_¿ŽB€‘º˜¡Fªg¾”óPG³QŸŸc}Vܸqc¨h€ž…Œ¢-xS F‹Þêúú: `”áb —’æW­sC„ —.uÏ݈>¾~ý:f(¢Ùº…K›t%0—ºkÂÿPn—†mÐlй]5C…¾Ôa0Í¡àRh¶ðÜ ¡+‘¤rÂår¹eI…tÎÔ9d²cÃ-^Çãñx\®P¶Þ™øÐíô þÈ56À¿ D–(K£V¯Îî]ˆæv%ܨù…å„Çã1^§)´¶Õ©¢íÍù$MIªgCmͼ;‘î­†¡že³¸¯»:δW¸`êåhÉ×ûâöööö¢]ž{†÷>R=»àŽäÈËç …ÂÖV”bÉŽ­>4ÕlHR}c!"²SU°ü”ð¯¯]pî‹åóùÌÜç¹Hò"•þùã[a“2X­{x+~Õ~ÞŒ±ýÔÊòßJ17úq|wm4gë|&ŸÏç3óÖ\Ľ­K’TßX˜MU­s™“f^!Ûâöv¡PÈçc>ÎåÔ …ÂÙubçÐlOÙ×àÝÈy¾,€ÑŠPOZf9!߆²u©ž µŒ^(ëd³!{\e0@åÒ«¸þ†­{”¤rÒcLŒ¸“Êífëp…Ö:­]O9ѼYO”; ¡cw§ì³:2ó˜?ÖÊ[wÁV¦öóÇŽ ˜«}VW 3`16ÃÓEã>~ª Ï?þðo=™,ã]X9ðŽS¬zȪ5¡s¹F‚ýªm,h•_µâê ¦Z'&8åŠZZÏf¬-U´£ÎkèŽS r¢[N«Ò«¸2§)ðf=iÎÁi³ ‚y:èoFÞ‡µ*[L¤ÕÌÏÁù5[5ú}ñîZµ[¸K4xiSm¤;5žÚ½e[W(r¹\®Äcþƒ¯p9ÇP#E§|Ó¿Ÿºc]›·R5Û¨7«;câ.Eó1_ǨÆIG“œMU­s±9+å"ÉŠñÄu6Ü¥h>3g¥jêaEC’ä1*ùv³P((òu¬Ó‘Éz6™/–ÏÇ|LŒ†²u­Ý ån¸53¯²WUóÖ]°’T.æˆsŸÓÖOG?h1ÊÛÖ‚+Ó¦a^ê~ö ?£óï´—ºJQdŒüN9ÿr“ºO±ê!kÕ„z6É5Æ´´ì·q锿ñZq%ƒ~ÆÄÌÆ•vijj\»Î«žh­¦­uZ+ɈȘ/–ߊN.òjTQU:›³ÍéãœrÅ Ùœ~bL”‡TŸW)Ÿ_³U»×éëŒw×ZÝÚÀ]â]k¿ˆÁš¦º—¡ÕR€ÑP9÷ÅÃ6ù¦Ÿs_|eÚ$Tk‡-ë§MJßÚ=ý®˜#¢q‹Í2ND5%´ÕO\Ãà´©1ѵG­á ÝÞ°^Ú­6zC›ÓÇyu·¤µ;ùY›ñ§-Œ‰Q¯×ãñx½Ñ¾ž•ël_ý`ÅXφ2–µEûFnþñSIù·¹ó=­Õ6w¾×ºf¿_ÔëõFE>1·¶µÕ±^§¸gM—+cZÆì}~Tccµâj=<)ózi—¦#u¾ç)Щµâ|Â2vÒ«ô[àªUT‹}q;æãŒí§ƒÞç5vÍv >­îZmàsW–>Ó1Þ¨Ö4ãµ÷ôµà,Œô»üŒ‰Q¯HŒÉѧéì7”êÙ…ÙÔ>cÄõ¾«—Ÿ©µèsw=¢ü­°]ägF¹ Rþ’T~˜ªî³ 'ÝH‚‘q“þLJÁ˜Öÿþqá»?çy­c?.|÷40ã]ƒ§Xkµ®ågYgÀPˆê'QL?LÖrãÁ-%‡ÓuèW€“ã ª¨Jš×7fÓûbdÁ²¶2m>ß ãší@†Ðô¾² šŽñä45mµàL‚‘È…Õ2Ö¹hÌb¥&õ¼!IR}#–ª’u.36rÌbíy Ï¿`Á.?û+öñtwÀbTfJ´¾™1XxJjÚ66¿ÓºÂÆæwÎnB[?§Xkµ®å£PgF­–žsˆzg~‚sQýO‚ï:Îó´ª4çö9*D$æé•¸óÖÇVç¡>¯f«Û×ò¦z œÎHv W B=¨5ûÖqKÇ]¾ ˜SVeÆX?=T_Ê­ý v¤s+Ù±ŽÊ¾Š•ÆX§ZÃCz¥#3ªyS)Xùªœ‹œÌN+'ôrrºbšO(uÿûƇ"ûÿDu…¡FZ§¸íµV“—·–L_uæ¬kÅPkæÅarLYU¦*jÔyCu[»œLòT¿¡x£9g6äÇ»™çówl’TN„²§Æò¹~áËóm¶Z}]ÿMO½Ÿ²Kì+ãˆjM ¬b-¸Ð*íÆÜÞ¨¨Ìùë`¬Æ||?ì÷§ûŒo(æé輕ªòœ­ ÙÂq?cbÄ9°Ê/$+dj]§#5y_bÔëŠÜ[ ˜Ï´Äº2¬ž·î‚Ì•­¸Ÿªé W~ ´èì1®9p1±Gûô‡\õß=Úù£G;Zß·ÌUOq÷!kÕs`5îo»þšç_+®&A0VÕ'Øu×yãu[ë´6†l£Þ¢ó´?mqrrs®¦‚^¯×LUýñ­•€Y{8J1·Ûãñ4æ­žû#þçÞluúº¾šžV?}—Ø×¥Íxrššf Ç}î¥ChÎDôìÙ³î/677gffއ¾ËæÄJÿÀ/™ÍÍͽ½½òãŸýYÿÕŸü§(X"züWÿ§…Ü—gî °í®?\¾÷6Eí=g’TNº‹ÎSœPZÑ3ñ÷Þÿ@.Éçnéþ×—ï½} Nèùth¶0`wQÏ.̦ªþøö¢]kÑé.‡+Ò¹étzZ¡æ7ðWOatýð‡¸›'¢ÜÀ¯š‰\(`@³½âió7\‰ˆ[ç×®öcÏ!B•_¦YDÙ£`{ù”K8§§<§Z) š- 7D¨]ê~ˆKÝsv||üÞû ÍÐ-"T€æ¥söŸ«wßzóúõë˜sh¶€n¡œø!cž7¼¶h¶€n¡=þ«¿G!(0è Ðl*ß" ¬Tö¼|ÿu©#¡6˜,ã-Áh먪$•“îˆÈcbÄÝÂÖ6<ËÊÖ%ãQìÓïnR#@mmà\.•–œê¡cct²uTõéz°92ÚºQi¹±PsÖ±´÷àåû™’^âôt=ؾPÉáiGv¡ªªEÆÈï|•½º¸½](”QÕ ÙÂ[qçœûâ[a» 4öÁÄ]Šæ3sVª¦V ï©%@Õ”½»s«1À9÷ñë]`iùî“{*•Ê£{Oî6¾--/ÑòÞ^¥R©|ûjÆ›O׃é—ÉIÝÚ¹›ÕÚ¡ãV »SÒLœJ˯<·W©Töö–µH…m.€!E¨Œ‰Q¯×ùÄÜZØvòEsTU ç¾à´©±Z®X!Ûâöööö¢Â RàõµÄŽJ€º“ ÌÍÜ$¢›3sÍoK™™Fª7_|YmgŽ¥Þ塚xi'¸Õ‡¾ðÒ+Ù}übÇÈ(IõìÂljŸ1bŒøsöô»›t{ùlæ ––'ï~‹1"âôÆ-"¢|üÑË·Œììé'O^y)ØÇ¾nÎd,ONÚ{c¥‚AT€žÿµ)IªoÄRU²Îeb>>ìøÔØê`)¯ïÒƒ½J¥R©¬úÏÖG/¿¨­^z¥{¡cio¯òíwN¦ÀYD¨D‡µ*[L­ Ç,V":¨é„¶FÞ”úÁÇê“Ož6âË–I¢Ù»'/$u=`'Ç­@6½.o–n~ûƒ?zå¥äxó“'-kîœ¼Š¥1µ´üú}ºth'~óÅ—ñLàT® ¼¥ ØÃq¿#î«•ؾqS|+<ßM¥ƒÞ÷}µð…S/í<¹l PK{´<99I¯Ü{ô ðúNsyàÁ£—Ò““ ŒñÏ¿ó(Óùݱô`gòuÛ×ço<Øs(Ël?oûÿü;÷Ù»“ô`oɱôè“à¤mÑ+YeÙÛ·äOœ¿ñ`ïdj‰“’ço<Ø[r´Ì(xãAùzÇ™DôìÙ³î/677gffŽÏ37ï½ÿÁò½·‰¨´ü$¨¼Ð¤Æ.OîÜ òÁÒý¯/ß{[/uBÍ7nŒæ_=-íN … ¨Þ£¡ѯýʬþ ¿óûk(èË g§…ŒBTo€¡ÂSþö£×ôÿu¬/Iå„Ëåi‘(KFv$oèr%Ê’ÔúùìJG’êÙЙïe Œõ}øgTz§?û:Ù8Ó3~êáYŸ%ÿ§?œî¤z6ä eëÒ™6Ìó<)ϽϨë8ëŒIõl(”­+§¬œèÙŒNÿÙ;ÍÓŽNwÔúU{¯gCÊòP¶.u'2@–NÙ¥»†ÝØ/1#½V_uu¸{®nCˆPÿùþˆþ?Õ­8÷Åòù|>æã<Iö[‚`_ÜÞÞÞ^´ –~åazŸ1&+Ïù\v¤úí“þE§£çÙ/ …BáùÅŨ‡g|:ΰ .'Ü1Šn­ÌC=ź ó¬[Ç`=Þˆ_ ‡XnšUú°V·˜A^'ÉÉ­oú±S¶ÊaN£;ÊÌM4»#©ž]pGrÖùL>ŸÏgæ­¹ˆ{![—$©¾±0›ªZç2ùB¡°µ¥X²B¶ÅííB¡ whJ7ÛW–NuAÏÌY©ššMŽÚ˜ÎånqCÕó?þáSýýtÝ)6nÑÜ ™ý›r¢¹D%"*'·z·nE¾âŽˆŒ1&FÜêÍI’ꙃ¹ØÜç¹ÌF½küCùü˜?Nª¥¦ìΕ(wf»yÃÊÖãAÍ[ÏŽ[ÒDY’¤rGúÝèɾ\‰ÇüqG ½Æ¢š».'\-ƒŸ}›Í¦|e<©îâêkýÎciŽÝ©ŽßŒr=”c°ñ˜!ž­œh”zxZtn¯ÌÍþW£`;*%™Í†ºGeT¦êeà1?l«-uÀøQœi7X!ïFt†gô{­SÐÝ;uäG§k­s~§­c×Q¯Wɘ~‡©ôlúndœ²» éoµzÔG³â™,ã'÷b©}ÆüÁi³ ‚y:ègl?õ°BtX«ѸÅ$ß•™«Ã tNU½[r®z°ƒuÚÛˆÑâíºb9_=ZÏ–bä:NDµ¡hƒWw"ZÅ¥3fßÚL øi.^g¡þÝ?|ªÿOoã£ÚùrÓª$gSUë\lÎJ¹H²1ö£Ò.éÚÈÔCI*'gSUò0ø1ÄÓѸîªåDõ T»Hwѹ½hokR꫞ câ.Eó1_ó’<@Ãl«­uÀàQ ¿Ç^!ëw#F†ÿýúÀîSÐÝ;)}‹œ­®U’Ê͵m×Ê cÏS)œ\µ éouŽúô‡£–Ñ¢Èù6ªsĹO.7""›ÓÇ9劲9ýĘ(©qÔêTÕ»R³ÎßQ­õ`ë´Mrk0ÜFzo×ÓÈùÒ¯oFZJÏë¸^§§Û…ª'"g?ÔìfµjµÖ•®gÛ4ÎÔóŽPÿßOõÿibÔëõÓU\¾ŒIR¹˜#¢q‹Í2NDµº$IR½v@œOXÆÚîÏTŸ2ÄÃ6tJ»UåŽÓÈ(ÚFæ`þŽ­³  .íV=‹Íé㼺[Rjs#«&˸üyeÚ$ZUUîG{îKýÐ ¤`rLMpž+Vˆè°FSÓg_ùü%·“ˆ¾ñáŸ9ûÊm–~q/ÞF)î–ê’$=È‚åõUÏýhÖCÆÄÈÂF½ÿÐÁN‡ñœ¨”êVéô>£­£M¢™ ç¾à´I¹$+'}5L¥aµÖƒG1Üoè…l´9ÕS Õ·(5_ó&Ðj;M‡yºïÝ„ô·ýôÉG¥;ŠŠ|bnM§0‰ˆÈ¾¸óqÆöÓAï'˜æ‚îŽP,Ÿ_ ˜ÕúÃSuÚÆÛHz¨vÅ<ýõº¯–2`‹ë§gN›ûÍ˺Ýl×È·z31^à_¼Î*Býÿ>åúÿ´§­ÄºOcbÔkžþ¶g}uújéVy˜ÞßO½'˜ÞWšáí»v×ÏeC*÷Êù`_}¥`rLYå W¯ô]έ§ø¿ôE"úƒÿkÇØÙo½Íê·¸4Ö—vµvH•bΪ<>¢ÃZÕï´]€z(öðÚüçl?ôz ¾¼uÊÓÑoNºJµT3s<éàQݶg‚ƒ7Ì“1§Î:ÐÇN‡Ñã ½Ÿ—>{§f€ªÿãt¦ê£ü®GšMØÈ¶O6v8'cËÜý Užµ:İàôüÚüAT³×°Ó¸ôª gRýNßRú¿¦ ¾¡Zõ®tú»>åÅë¬"Ôü”ëÿÓÞÔvgÞʘ˜ÙGAÆ,Vlrw;ÕtÆ,Ö>F@72ò#€B¡ wúÏUóÐF{ü@eï±T•¬s™˜óöÕW òXUk‡G¥Ýqg¿eÞqŠÿsvËðÙ?Mq©¯/vùÉW1YÌY§¶é Ÿ¨º[Ú(æü:‡6ZõP0V··c>NDý¾¼5¤Ó¡“ã…cš^‰ûÛ^›Ð,Þ Z-c5̶*qRNuŠOÑ㠽ϑr úë”1*ýç3ƒw˜Ýg\~viðEL#Gtú>y°Ã9©½Ê3Õæå Á<½oyCpšêmšj¿r:x§=XÑ® ÝðЪß)[J¯< Ü3¨lØg íú4¯3‹PÈõÿéVèèܯ¦bÙºÔ|l§ MTža U«¦cn uTÊÖ%'ã4©ñ òöqëóD9?òVíùiKMÉC±ÒœšÓÇüNÕ›ÍܪZ~&Ç”•rҵq§m°³/þú7ò}ýîSf°¸tÖ·9ýD$Š¢¼Äæô3¶ŸN‹úÎÖC[8îã¼ß޲ßÓ¡W#“]×¿Žœ¨”þ¡•ròk:¢‘àAí¨™%ùpí†Ù3XEQAíë(Nßãi!ë7j=•¡^Eóê[º“=¬Uõ69]‡Ùw´×^ FúÛþzÔ!ŽíμòF $Õ729Î'æïØ$©œP^ý”OÐi‚ª!]ÐúÕrrúN{Xm¤»Æù2ØRhqd¬·ìûb¤šC­fÒ×®»xU„zšg^'/'Æ6ê’d¬Æ||?l“—›¨õqƒ÷"ªé˜«qU~>èr%*dšŽÎ[©Ú1‰G™èÖÃM4ç¦Øî4¶ÊXæ•ü‚¹#59bÔëŠÜkšÓûº÷3&FÜ™«<>©•[åxÛÍÖ‚ÞÝŒ¢æ¨ÿµqöWÿhsõ6OóijßâÒ\Ì2Á9çÛ¹‰–ÿŽ|=T~‡ÁëæÈ:î«£àtØ·3sr&åÂTæãªæDõ tWAêB¶.iˆV‚»1·7*Êóœz6LÚ-W‰Öþ²¯£8}w¦…¬÷ˆª«§ê¬öÚ½J÷)Ðê:6TI¶¢ÿc`àh¯£ éoûîQ‡w8‚9°²÷WSA¯×ë ¦ªþøÖJÀ,‚=¥˜ÛݨQsk+ÓC‰é» ŸLè×îµë´Ï¢tt§¹^÷ÕRô¯ãªé¹¦ v1ÒjËZWºž»Ö:S§º±$¢gÏžu±¹¹933s||¬¿ý{ïpÛÿóúëlæ¾?’6ʤzva6¥¼*dÎþH¹4§CþY–ù5g…|¡NA9á*:·íøÑGô!—îê9ÂÕ… jÞ¸qcõt3÷m”òEn`õXjŸ1ÿ#¨8û£ÖÚq:PÈ£×ÃÔ¬–;( To€þœv  ï;"Ý1T†€‘‚¡ BD¨ˆP*"T@„ €¡<×N³ñ½Õ?»Êew?ô/[ÿûÞû\…£~÷­7Ñl`D#Ô{«öþ¯ñÊÜ[¿ñ'áéUÝ®H2B•ÃÓïü·(Á«žœAæ¡"œ¢èHœó‰ùµ•€Y0¾mŽüñ­°]Ð`õ1†jpô”ó/Í?ÜYý»ο·üµ?—¤s>$IúþüÂÿü¿ýÂ{g½ëž£§œûbù|>37Áy.’,÷“I*'\.—+¡µ•’¸•ª©Ùþe×Î*áϼ0Fô ‘$=þƒ–UyTUmýý\h‰V—éî7^ûo¿¨·Nê«‘%øÿá§J¿Zù„>÷ «)×OD$I‡;Ñ»qÀ8ÿRèƒw>Gåq\F®¾I¡Þù¼ t¬óy¡3¡ÞùÜ_g+´RcL²åÕ†S&Ë8Qµù¿rÂq_l{ÑÞˆGëÙ…ÙÔ~cᆵ¾ð=ÏWDƉ7éw¶'®™~sØ•OLXKêÙ…_NU­òø«TN¸3–µ•i3Vày;³_ìÿoß-1Fî×þûé_úæw|c·{T•±W¿ÿÚï~óÝžëÈËk™_šÿmúw« /Ò_|ó·³#IDô¿÷o¿ù—Ÿ›þÊÝéWï± üô—?ø-ç­QfÇ:'ßÌÀçèñ†V>¡Ÿ›¸ó໿ûÍw??Ä@­R#¿Ó.õl(*2_,Ÿù˜ eëðq6U%,Ÿ/ ÛÛ‹¯²WÃ[qçœûz<ޝEƬówäuTÓ'¢J2"2æ‹å·¢SòA0;¦¬Œí׉ˆŽjÖ)ÂS¸œ*c¦îÜ }õC>~÷?þê«'_|æ…±ö59ÿR¨uu>ó˜ü9ø1y¿üäÿ!’¤ïÿß[D4þÿê…1"ú«üM×Ãnu:2À؇«Ñìß ïq9cbÔëõFE>1·¶IR½´[åÜç´Ùœ>Ϋ»¥úI,.F6ê†÷.'îŽP,Ÿ_ ˜‰H+}Iª×ˆó ËXcÌUfrLMpž+Vˆè°FSÚŒ‚á?åï~D.ý÷o6 3F\}+#ëèÆÄcrØúcý¯#?ýåÕ…ÃÐJíàÁ¼ó`X/xuŒ€JÒa­Ú¾FµvHdìáµùƒÙÔþ~:èM|§JN|lc!èõ67QOßÔX>néAMŽ)kªzP«Kcµƒ®ožvÖ;¤Ãß^ù„>7ý;q篣á¦é³w³´ŸÎY‡„Ÿø…ÿý›ß™¿Å‰èÌ^ð³XÛX-ò˜±`¬noÇ|œˆúz§Ê4ô¼†¥™¾*ùA?Uk‡G¥Ýq'^퀫¡==úK"ÿ‰ÏœrÕkìççû0'Ö;BR¢ƒÿþ×:ë¨ûܯþ–ƒsúì‹?vÑœú)+Íù£íS?má¸ófX)‡›µ#ÝDjÍHT+}A°;ý$/—'¤ž¸Ž)+åŠkãN\•U~úËK?ÇØ‡«oþ‡Ÿ%Æ>\}ók.õ½Ž–ÿÒïÎßâµÌ/ÝýÅ)ù¦aìÖ¿_x‘þbã×nÉKº×éHDþª»¿8ºù}îþ}àÇÏf@ÑXù¸õz£"÷ÅšóGË —Ëãñx½ÑYç£Øfü IDATÓfAóttÞJÕtЫú›SI®Átµ¹‰VúDd»3?Á¹õq_ë(µ¢æ*Œˆž={ÖýÅæææÌÌÌññ±²MªÕïÿá½ú—ý(ä_¹ªúãÊïRéÃßЀ¡è57nÜ`( +K’ê±Ô>c~Œ À(¹†"¸²ÁXÝ  `Ä` F‹¡1Ô{«&xë7þäW¾üS(µŽb¹J^¾’G Ãñ™}bä£Oùßÿõ/Êð¦TG€AK÷ŸYÍh„ŠÀp>0FKïò¿|ýS” àÉqa'ÆP`´ BD¨ˆP*"T@„ €†O’êÙËãñx<—+”­K§K­œp¹\®DY’º—{Z$ÊÒ¥)=¥Ü‡Ÿ(7¾­gC¡ì!¬Z&:Å5@ Üðò@„ —ÐÆÂlªjËä …ÂÖV”bÉ~Cã8÷Åòù|fn‚ó\ä w4ôðN‹ ˜-ãÄØ~툈ŽjD”+6Ò?¬UÇ-cìÕÅííííE» œgHªw ò1ße9€.¡Z•ˆÆ-¦F¼X]´ µŒ­*Á„[d³¡ŽWe|ν9è¹K“e¼}«Ö!½“¦œp¹ùcýuäå¡l½1šÙ–«¶C¤rÒcLŒ¸“̓Ò_(ä¡Ð¶Ã³LpNµº$Öª>ŸOX%©^;°ZÆNVTÍ€V‘°‰Ö±¨ÇzýNBè%"I厢{•½ªz8ˆP }q;æãŒí§ƒÞÖqÄbŽˆÆ-6Ë8‘~Éësî N›ã ¹bY’$©^; Î',c'ã£êý£^¯7*ò‰¹µ°íä‹®­8÷Å[WÐYÇd—?¯L›äuªµCÝCPèfk# uÕ¡>“cÊ*ï´RÌùa§sÊ+G¥]šr˜zŸ‚î"`#Ç{r ‚éª?¾½h×*ãç´gIê Ø•ùh‰€:ƒTyrhG0Á˜õFEÆä˜OÛaëTý¸ª1œ¶0Ës êÙËå•÷¢ýXG7&îqúë‚=¼6?Á9ÛO½Þî·‹šSQÅb²˜ó;m4f±ÑA­T«Ž[Ìç{õ<^Î}±|LŽ¡[Cá® žS½÷,:D¨ GÌÓ+qçÍeÌbm (Ïf”K’ê±T•¬s™˜ó×Ñ`ä ¦`¬noÇ|œˆTß.’§¢Š¢èwÚÁ옲2¶ŸN‹~§íÏ¡ñSf»3oeLÌlÑÐεz"=‹*¨H„²ASyz¨Õ2FÔ ³” F?ºµË“Y‹•ÆäEÃ;72P7È`iBs€óHg°.÷qNm3KORàœsŸ‘šSœ7‘«ErJŒ=7éëXLÓѹ ^MŲuIuC­s*/—3Ó¾\oïíEwr8x¯¡€ºp”bn·ÇãiL]™–L›«1ßO¼n»3?Á¹õqã#‚`ÇýŒ‰wæÀJݯ«\GK÷!‚y::o¥ª2é¶ça*¯´{½ÑYç£Ó*î婨Jð*ÿW-ªî΀‘PÛà&ÆO™ ˜§ƒ~Æöå·ÊT7Ô:§¶;Ìd,ó­Ë»Q-ºöÃÉþ5Z ttPDôìÙ³î/677gffމèÞêŸýÊ—êå럢¼®&ù¯räÇÛ÷0˜'Ç׈èQvýÝ·Þì5;ܸqc¨0Z®¡ 'ù7¡Qp.0† ˆP¡"TD¨pñõñ.ÿ{ï€ò€~É¿z&*-ß{E Æ-Ýÿ:ú ¸¬ýº8ƒ¥DDׯ_§ã¿=«•ˆTúý\Í~]ÜYÀŸÏÌd‰…¢sk+Ÿ™;ˆ$åŽ6bµàV¡PØŠS$YiÞl-bŒàr†¨GDDtt j÷zº»€.¹HŒ¢[[­õª’œ•kÎvóBSIFæ× …ÂÚüR—êÙPƲV( …‚³Éõªx’TßXÈXÖú•4”=}ýæs°ÔT#lf+Iåd„bù|Ç TJˆP¡¿5H™zKuûâj 1ho²ŒŸ¬k—ë¢É2^ýø'£ÍÏÍÊZÚ%ËÙœþ\c!—•ü _QåUî1´{«#ºèŒö¢^o× ?.?M>¹è”‹9¿ÓÖisþà´I¾´Éu©cŒßŽûu+ž$Õ7b] ˜û ¼zgÏHC0žOýÓJM£9ë7Û1‹5W¬tæv RR‡y¨ Y5ÃÁâÂÆÑÊtû•;"2FDœ|ÎÆâq‹IY¥õ³ì°V­ŠAoš¨}+¸Œ7·Ž)Š•êÓŽÒîxpÅÔ«÷Ю:£½ŽY•§»g9¬UÇ&£¯’Zàu¦ùìUbZ©iÅÇšÍVÌÓ+ñ¤ÛíaÌË/Ú…¡—"TÐRí‹Ábhã(Øro¡øVÁ.HR9é.KfÌbõÇVðÞÀU Q+´;î\m{ð×oï®3f±žróΊ'IåbnÜ…ì_éÙlå·£ÂõìÂl²¼¶Qex¥D„§ü Ïvgj7–98¹c³6ž)Õ †¹‚Ù1uPÄ2€+rg+˜S”ަÇÛdöì=jG+b]œ®ZÆÛž> ‚ÝéÏe6Žˆèh#“ó;í‚ /TV«$õ*ÞßèÎ^¯†ÐG> ì]=5Õ]÷{Ñú&CÝ gD§vg«Ê޽AošˆOÌÍûs7}µð…ž‰˜«Î„ËeDĹ/¾¶Q%é.:·0:p ™S©¶U¿÷{x‹’n·›¬ókqÿlQ«ë@qµå¢^Qùç>­ -¼V[p{¢L©6¶p¼èžõ¤å%¶ŽÕˆÈ‹ûsÅó¹fudÏÖÚLÔ‚ñ|ve¯³Äâ[aÕÔTw­ßl['øây»Ðgâ•] ¢gÏžu±¹¹933#ÿ!¯{«ö+_þ©GÙõå{oãO{€qï½ÿú ¸¬ýÆ…îâ†Sê”-ß{ûûÿ-=Ê®¿ûÖ›¡f‡7nà)?Œ–þžòË0ú @¿q±»¸™›ßùOßüÎ%ˆP¯_¿¾|ïm´0héþ×ÑoÀeí7ÐÅ,¥3P.MTtуˋr˜òÄSD¨pÕýÚ¯Ìê¯ð;¿¿†Ã<ò+e}mr‘Þ”zºœœ\.¡Í\Z¥åAÛ8úèðÏ~ôšþ?æ(»(jiyrr‰nÐàýðÏôGTÿ}Ñé?à0/Y„ZZž\.•–m6›Íf› ®?U¾yºœœ”—7—–'—KO׃““á ­uš .—×›æg™cio/3ó"ÚÀôt=ØÚS4ü@¥7hïgT>?]NÚl¶öáRô âüçÝÿl6›òó’E¨D”½»s«R©T*•½¹_o\)JËK´¼·W©T*ß~‡îgJÊÊK´¼····äÐYç.­T*•o¿ó$ý›¿ܹµ·Wùö;Oîâ™À%psfî哿NTÊÜÿ쯾øª÷ú¡îÒÇs{•Jeï¡{}÷ŸþÝ?|úEçÏ|Ñù3Êg"úp«(ÿ‡yù"ÔÀƒ%GsðâV »S’‡1237×£_n]YY®¹Î+÷-9ä…ýåøró3šÀåàþÿìÝ_pç}èýßîqg:sÎT7.)šUÅT4ãøLÍ€¶`ÓNÄ•Z±È¸*“ªhWa)2!c«aÀvÞä´„éÊKâaµ)¢$´ìBrTaø×­hÁ6Q¾óŽÃTBÕ¡(jÎxs:ÓFäî{±¸À%ü~àâÙgŸ?»ÏþöÙxüÊ@džtapàÊñ?z$Ùh*@½4,{îy Ièö_Ëÿñ_˱÷Ÿ®©‘WßxÓXûˆjæ§Ü>?ì.?vAUED“CU¤Ù»»(–ÀüÀÖPôØ麴ÐÔT´piXtÙ1Ì®]}ï½ O9^±½ €íë—ËZìýï}úS"òýM˜RÍm¡. ºÉé™Ó8ñLd›ÀV Q›š÷–û‚MU'ö6Ïe5Ü»çÆ“¾ØHåÖÚ(í»þ±[[.<ÝÂÕÌö9ÔØ×‚þÆ*§ˆÈµ«ï=¹·ðáëí¤°%9Ýǯ´9Ú®wÛ1®|¸¹¬õG£ÜÇ\áÖ>»¡ÛŠvk%«}ûÕãOó‹jæ³ìæPO_Ü3P^Þ¦ªÚýÏ^ô3ήÓާ/‰h÷?{¼Ñ¬\NÍÄÝ…³“ÆRôn *4íÐéæQ€M¦¨©ùЉ=Ù œ]3Ò]^^.¿xºñàD4_Uw¹£MÓ8ÀøÀ‚q§ûÔ‡eí­pª¹…#T‘¢&ßLSÂIW(Ôý£©©KDä‘g&iœ]IßÏtq´››ù ¶3DzÓZή™PWb¶Œâm™YÒíYMþë)Ø‚†‡^§šÛ*B]; g2ý/ðTssG¨]'¾ÍN€qãC\E¨ÛäŠ@ÇnÆ [uÜ`ˆÛ¸ žçPÀ6Š6{|¹…«I„ ¶ /ýé‘Ô ^þÎYªI„ i»Ë'ª2û5SÓ¿Nå—P˜ü÷_½‹jn^D¨65Ó¡»Ë݃}ME´ ‘ÿñ«¿²«ép8B¡Ðæ­Wÿõ4Ø]Þ v;‡ÃQî\ˆ}²0è./7–G»Ë»ƒ ƒîòòrã¥&KͰ;h,)¾°Ù- ºÍ#EdÁ5‹Ñ`í8cñ~aÐ]îp8ÊË­†gUã{W¯ÑÞDDäÿþçrê×®¦Ãáˆ}´}"Tñ›¨ …B¡Ph¦ùêÁÈ™"ØÝ%Ý33¡P(ôú³rÂŒ%î’î™™™™.gŠ4Çäd(zýÙ+ý×™™ÐëÏ^9FŒ lEMÍ{Ww‘ ïÄoq÷÷¬GƒÔ¡n×Õæ™P(4sZ,†‡à„ÿ=÷ÒÞDDä?þs9õk+UóS•û>U¹/ö^DÞ›ÚÔÕÌ.Bm<{ÖËYÕ蟊ˆ8»b7׊vï5'^½é–,ÍÇ/v9…ïý¬¤;úžÃ ØœîãW"ó¤ ƒWŽÿÑ#ÉFƒTê¥a‰D «#Ïj|Ú}LNs‹@,tû¯åÔ¯­TÍØûO×TŠÈ«o¼¹Ù«™ÛçPM_YCU¤Ù»{õ¬b~`k(zì€t]Zhj*Z¸4,º‹ìŽf×®¾÷Þ…§/‰$¬’ÅW¬lq¿\Ö¶[5ïÓŸ‘ïÿhb Ô=‡ê û˜œž 9#g‹lÓØŠ!jSóÞr_°©jâÄÞæ™¢¬Fƒ{÷<ÐxÒ—†ž°pk{D¨qÕü®lkT<ÛçPc_SNø«œ""×®¾}láÃ+Ö+ÚI`Krº_is´]9î¶7b\ùp!rYëF¹¸2‘øôi÷Àž‹„§B·-õk+UÓxÿíWG¶L5³›Cm<}qÏ@yy›ªj÷?{Ñgœœ]§'O9^Ñîöx£ÿX¹œš‰»qg' €­©¨©ùЉ=Ù œ]3Ò]^^.¿xºñàD4_Uw¹£Íüë§Á ÿ{.Doý󓨢¶Õ]þS?ÞbUÎö.Q“o¦)aФ+êŠþÑÔÔ%"òÈŒ3“4Î.ë÷¶€µuúÑ úC§¦µœ]3«+Å%“-3Kº=«É/ö€-hxèuª¹­"T¦6@^ë>~”jn£µëÄ·Ùé0n`Ü`ˆË£õ¹gž¦É`ß‹g^Ët•V@^!B*@„ "T€D¨*ˆP"T¡D¨*ˆP"T¡D¨ BˆP@„ ¡D¨ BˆP@„ ¡€ B*@„ "T€ B*@„ €Íê®LWxñÌk´ò"B}î™§wìØÑ}ü(­€¼ˆPEdii‰&À††<‡ €üB„ "T€›Å]46»M÷ hÏ=óô¦.?èèÍ[ÙíÐ)quˆP;æ‹üùÍRÔ¿ýî6uùAGoÞÊn‡N±¬#@„ Ü¿òßTÊ:šÊÒ)*À9†òƒŽ&B@„ $;ÇÜ¥P~ÐÑT–NˆP|:Ç0‡ :šÊÒ)*À9†òƒŽ&B@„ $?ÇÜ¥R~ÐÑT–NˆPÙ¼9#™ñÑÑWæ9?xÔùP¥óO^™_I,ùåï}3¬ªõ/ýy¹¦ßZÑ–µÂ§þö«åš~kE×¢[Ívy%öþ•WþäñG÷™²¤ÿ÷s_X»\KQTcáãîë¹¼W~óæò££WäÖŠ¶¬=ÜþÒSªúþ·¾Œí¯<óÐãî‹uPÜ*q ̽üì#Ï«Xerç+k¹3$ìùØ)‰ûžÑ±b}e>Ò‰óƒGŸü÷èá¶uˆP;¡.ëÙ¼‚ß?õ[_x²üÑO~Lä§#oÍG–_h¨ê=S?ñÔãýrÊå½ò¶üË+·Mö>¡išvð¯Æ§FÞüêƒ+¢‹¨êůN~Òøó¯|ákCê=S?î9¨}åÏ^Y0Ö%ûñÙ/íÕ´Nþ^Õ7ô?ÿAû}òo§¾qî·4s±y+ø/EÓ:Ë-*¥› ÷^U/Ž­|ýÇ=UõýSgß¾•r¹eQ—WþÒ›ÁቷŒr=ûÂå[š¹üF5óª£õ¸”ò M“‹o%¾ðÙS?½ÿ‹=_ºO^ÿê o'®—ÀÜËÝ“þàŠ$Ë$*kgÈÃNIÜ÷–Wv9ö߯ªï]º~kY¿5?5öSyÿ[ß7ÒÏ_Ñö?ú‘èá6¶òõŸýÒ}òo9¬#@„ lš9Ô_.Ïû¿û³£‡+–µ‚O|ê~U O¼uÍXþ‹9Ñ´²]Ú­{îÝ-"¢¯$_~§æP7¨ü+k—¯ˆhÚ“ÿ«½ÂÈùòøO5íɇ˵[åÕiÚãSóË+k’ÝsïnãýËŸ½ÛØÊûÿ>Ÿn+É>Š{¯iO~î©ß06-Co¾mÚtÜòE¼Ö¶@\5óª£ÛjeµO/_‘”ß»[Dæ~ë› n%O“•µ³ä_§Xï{w}TDŒ÷ï ö]QUU½xéHúÝE¿±¦ŽÆŽ—»:›Ï¡b‹D¨™®¢OÿàÌlXÜŸ‰.™xëÚg>{\û0,"%Y½·²¢ÝJ¶ü=‡ºå×õ5Ëþ4r0rÓ5 _½¶¢ýš˜·’ä}ò­¬©”n#+[ï­‹z·¢è‹¯}õ^þ¹ªŠªŠfQÎh5ó¢£Û*²ä¾ßüH´äªúO_¯û'QÕdÝ‘*A´—ãÒÜ•µµ3äc§$9L|¬FûÑHøêµ•·ƒCûãîšK]/ÿëO=Xüaø óÁ¸£5ÇuˆP;cy%³{[º~=pöçîïL~ºP‰üù•¦ï~0öÎB£«@¢™éËbã½²uʯëk–'ü¹k×}"˜r¸o÷¯gÓJUW/Û…O¶éÈrë¢Þ’ëž—¯ÈÇþø;rí ÏY•3iîLGÇ@ÿ×SUù­â»5YÖwíºO´>ÝxîA#ŽÑdyMùÓ%ˆvk|š\|Cn•M³3¯’¸ï­(ÑݾO»¯æÔƒ¿ñÄËÝ?{ç|ÉÈŸ<ßq9Þñ€Íˆ»üت–ÙkúßÝýG¿{nü¹¢üÎcSÕ.½½°¢9DUßx{Zû×—Ÿ›PUc&#ÙòL7çå×£37‰F·òÆÛÓÚòô›ªúÑǾ[Óã’%{o~}¼¡u¦ýÅŸ]\X1–„¾õ7¡å•tYÍ]»Ù´ì.2m:~yò¢^›ÿ@DöÜó‘¤ʯŽ^[¶[ËoüÅ?iš«³åæ9waÁr•$ K£–<“Û_ÙXËGJbtèÇHÞÑùÜ)‰‡ÉÇ÷Õ‹ÈÄOÞ0–||_½ª~àûÎ-*X¶}ìdWG€¸3V4Ýþkyeá^ýƒ§æ…¿ö‰ª=šöó ^_Ñ>þTëM›üFõ;û^ø¤¦‰ˆ¦é+šžlyF¯€Ø(Ë›ü³Ì9’•ÊRND¨Øb˜CMeé€ȳsÌ&’l…'áØQ©,å@„Š-†»ü £©,¡ùeìÇ)?èh*K§D¨@¾Øì?þDz£RYÊ ÿS D¨*ˆP€ldðM©+K|­ Ž9Tä[Ó¢÷üê•‹þ+4ò%BåãpÛp—D¨*ˆP"T¡D¨ B€ät}ÑßZ][[[[[[]Ýê_Ô×—Ûtouuuuï´®'.¯5©®î}W{7–8ÙŠÕ"VþHn½Ó‘Oý­­þë¦ÍÙ,v5µ¹¢¹)z§uöCD¨°ê|Û‘þpY³odtttlÌ#Þ¾ìbD;4ÍåïxH}¨c|||¼£BQÖ™³¢—ˆªÎÎ_‘ós"24©ËõùpIñ.ÓængHš¢)FF¼.MêÜÀ6¿=Õ"T¹4‘’â‚Hœ×x*/ÆæVcAL,¦ñû[ã&\có‚5m¾¹\I‰[c*´:6Ý¿–£²^D†¦B"r#89«ªª˜ ‰ˆ„¦†ê+±Í½«½ÛWÓPUU áUÈ IDATtÖ¬‰çÏ·YÎ%ëú´ýU, o¯A¬jmÛêÖÖV«)ç¸f´Ótq-ðnòÙe BpTÖ‹ª:kÚâb²Pß‘þpY³·¹L†:ûB«ãŽ˜ψ¯¹LÂýçBÑÄUuyGÆ<ûsRªÄ­ëútß‘þ°Ô³°3¯»ŠK5Mææuýú|Øår«®/ÎÏ•ïZM¨(íc=.MÓ4WÏX{,˪e±J²¦³`ÌõÖWZ®˜iÛÚiº‡Ô‡,«D¨òBEǸץ©ê쀻Î<]:5$"%ÅŽâ#ì3ÒkšËÝP Å%¹®ë‹ós¢i¥Å»$²<Ù˜¥8.).¼½±WÚ¦Ó4—wÄkÄÐæP8aE»m»ž¦"TùHQ Nö¸4-í*.Ë, Ì)ë­+…§ÆÇ½.MD,¿]d<Šê+ŠRèÜ_¦ª³úJÇ/¼Çá–2U øÎßœµy–MD¨òHo«?2iš ¨ª”w±à)ut[a<Ì:Š<4¹þp9ÅÖí=.M“5O–®†g¥š¦i.#"-pî/Õ´È-r«HNdnþ†ýrÙZ%£¦+hð4—já~¯Q·\1YÛˬ]n¿éV«Ã÷ú¡È/íñÖÔÔÖÖÖyZióÙ“ Æ ñÂÆS^—6;à¶ótÇá–RM xê¦*{\š¶þR%n=ö•öº:Ï”µx,nܢƂWãO«[äŠRØài)“°ùéÛ´q³ÍUì7¢6¸ëUu¶ß{~Q×-WLÖ¶ŽÃ‘ÂøŠ[ÌËm6ÝÚêøÿG€ÜQDäæÍ›‰ 755---ÑF°5¿x5$õ|ûÀ—"Ôܹs's¨È/wѰM¿ ÕACÈ{Ì¡€ B*@„ €ÍÏÖwù_<ó-€uzî™§s¡ŠH÷ñ£´)‘®ß&0 =³¨¦ˆìرÃÎ?„Êà÷PùÿR€À€ö¼ xD¨n#]Ÿî­®®­­­­­­®îÖu]Ÿî]û&£Ljkk{§uÛ›¶•?€­4ÔØ%ò­üæbßÙÌ(O«quI¤€º¹l6’­vJì,`Ùe‰ î,þë)°Ô{GÚ+%úgEÇx…ˆd8 E2ÑýmGú¦ÇÌ®Uûj¦*“| `; 5©G‰ êÖ7þ”Íùú¦y4|…'ƒ‹ …Š""¡©!‘úÌ“Åÿ«bÿ9?ÇmæPí9Õ•¬ë‹þÖj[ÐÅ%±µý­ÑKðVÿ¢®O÷ÕtÔ@gMßj&7ÎiŒ«|&V­/ù(±:,ú[««#7v’¥™îÍÈÆ&übÓœq£Vâø“8¬%nzm¹KÜžb__ÈbØÌE 3ëëK&ƒ7"ãö”Ôׯ+™ísÄ¢¿um!u}ú›Uîc¦úV·úõ\U“@r7Î{çÝc£££c=Òi5@›’ÎÏÕWV(Š®O÷yÅ366:::âk–þs!q´õ¸4WÏêµøP§W‡šª Ý%­Á …"¡©¡úÊvEÞ²N›“j¡°¶«¸¬Þ{2³QL×Ï·uJÏØh…b«èpOµž¿áÎy ³ Qï¿äõ)î“"¡õ'Ë(4î<jhßuÞ7×âiOžmnª™ˆ»üDQ ûç¦2֮χË"7wnÌÏ­.Ÿ›¿A£H1JdšÆþ¨²ÖV¾I¯onCJ˜¡çoJIª[ü%ˤ Zæ¦B¡sý%îÆÂè÷ bß‚ M ÕWV(JΪI„ ÀRaã©Ê©šŒžUR”Šöž’wä±³ýõC5}!q´÷”ôéK–ßå¶ÓÕ¯Å(wøÛIcsÔ2²Š?Y k«¥*lôì—p®K˜Å¨(…§Òë(y²ÕçP3j#ôììœk9 {ë{Îûjjjkkk|Åg£Ï¤æ¤š‘›7o&~0<<ÜÔÔdü®ϼÖ}ü(ÿŒ l“öÔ§{k¦*Ç;ŒßÏÎÁo¦¾xæ5‰ÕÔjÆÙ¹s's¨XžêÓ}k&Po7»ß”ZZZ2"_ƒ­ßžMŸü÷À?¾¸úgÑ?ÿÝ?þs¾E¨;vìè>~”tø6í™E5í'æ.?n‡çžyšyÄþ“ ÙE¨Áîr÷à‚ýdÁîòîàz34¥ v;ŽòòîË«9§ÝÈ5ÎÈyÛ1i"«ÔÝtç;1«uáÃ+x¬(GÉl¦\Mì>&'C¡™™®GÄÙ5Óå̸ÏÒ†ËZØ8¥rFÎqX™E}­Ö²ƒYË¢7ó B]¸4,±Z/ ºËˇÃላÕ×$‹^f9ŽÄ˜~mÊ…Aw¹qA´Hì.?vA½p,Õ…šuÑ^4­¾0è^Mì.wÿðZ\þ Y`ÄyãÚÓªõl·’)² v—w“Ç`Ib¹µ3âÑvn ßÁÕO»»¤{f& …^VNø‚ITÿ±‰ªP( …fº¥+Y3Š»^mž …B3k‚÷Xg×ÌéCÚ¡ÓÉCû…Á®H§åXü^½võ¢&_4ÍÂà€œö}îÞôùÎÈÝž­g·•’Ç`ÍWÆwDŠX.ºº‘ÀúÓü‰P×ÔÚÙåkм-Ú½7i2i<kº¢Ç\™& P'üUÎÔM_¾=÷¥«jôOÓí§åX÷à`×ð71)9ÃyZÏN+¥ˆÁ,:"y,[ÝH`ýéF¹+›;Ð]d½Ë]PUÑäPUÒdf×®¾'»m¥Ì )ó÷.<åxI$®HI÷ñƒ'öžž)âp g8#oHë¥m¥L¢¦T±Ü•i„Wë…A÷19=rÕ›HÞ8W>\gdÁ½{H–¡ù£ìšúÞ=4žôepG è>p¼ñÄD°ËÉ%¹ÂyCZ/]+e &‹åî°Lïò_»ºfÞøÚÕ÷ˆLA/|x%i2yïDìÁ‡…KÃ{cwòãRíÞ›x 1·âž!°tåÃ…ÕˆcÒÜÔÔµö S ÎÈYˆÕ7Ië¥o¥Ä¨É¿ú=*‹§)“År›+B N\YSkg×é½/=åp8å]r 1ÚñÉD¤ñôii3¾Gvðjsì’ !¥³ëâžµß\³È-åÑ䫚ˆ|%­Ü⠆ήÓ{#á²qÙÐå”ÈsÆwÔL @Ö!*gä̬©¯EëÙi%Ëìâžòr‡ÃQ>°çbü´¬E,w9ÚB‘›7o&~0<<ÜÔÔ´´´$"/žyÍø_±Án÷‡îØó´ÉãX{Él¦´Ÿ¸ ºN|{ËÿùMÚž QS°»|¢*?~¡ëÄ·E¤ûøQ#¼4‡šqvîܙѪÍÉLûsžvRf8ƒ °Mm¨)£oJ9»|ÎÜ%³™Ò~nÛYbÔäìšÙ”q”ÝÕ˜˜ 0 =ó%Båq § hÏ ÂUv ä"Tl…5Ø]nüWâò¸-K–2y†Áî5?†ºæÓÄüS繞_P[çê9É€|Æy9Ÿ»&‹Ø)Ú-«uáÃ+Øû-›)W“»ÉÉPhÆüÃ]«Ÿ:»îðztÃy9ªcµVšl´[6êÂ¥aóÿÓ vGþáAb]צ\t—'Ìš“»Ë]P/[›À”I¬AƒÝåÝÁ…Awy¹Ãá0OÒ&)L¦Ý«[I>Ñ»fqÅ v—wƒÝ¦Í»ËË-Û€­ˆórn3. JßJ?¼–6vÚ¬í–E„º¦Ö ƒî=C¡P(ªš8æO•²ëjóL(šYû¯dMÉœ]3§i‡N¯¹ ‹oä(ÿ±.éž™ ½þ¬œðSÆbÓEM¾èû…Á9mù?«â6‘X<ÿ±cr2 ½þì•¿þk÷DÕÌLèõg¯#Fl7œ—×)¾:vZés÷Ú‰6e»e¡® ;Í8»N7¦L¹ç^#]U£"˜6Móicdï-Ú½WR&ɦ]§åX÷à`×ð·õ-ŠÄMÄyà¸ñßm‹vï}ïg%ÝÑ÷ S€m‡órneÝJ‰±Ó¦l·»²i°ÝÑZ_»úÞÞª"›)ß»ð”ã%ÑäP•u²Ô™¤–¬0I7ít8xbïé™lÿ=ØÞÝE–ïçåu¶^–­”I씿í–i„j¿Öq)ïÝó@ãI_âóÔ¹ P“J¶i ú†o<1ìròU¸=8/oh+å$vºó2½Ëíêšyã57ìƒÝæçPãR=vàÊD0m†}'Ya’l:Ø}Lš›šºâ‹Mãʇ .p^Þ±êdÔJæF°;å{»e¡'®¬­µ³ëâžÈ×ô&ªLÏ¡&¤,jòUMDR®~+-!YêÍ¥9’ÆbÓ ƒîcrºË)‘':lþf˜³ëôÞù"œ—7 ÁLÕ±ÝJkÁVì´ ÚM‘›7o&~0<<ÜÔÔ´´´$"/žyÍøw±Án÷‡n˯×%†ø¶R¦Nfsà¶Ù&ÿG~3¶g>ÇN]'¾-"ÝÇá¥9ÔŒ³sçÎŒæPíOiÚL™ÓT€mmëÄN}SÊÙåsæ4eêdö7€­;ÙP‰YÚ3_"ÔçžyšÆ@Ö^<óšÍ”*€¼B„ "T€D¨*ˆP"T¡D¨ BˆP"T¡D¨ BˆP@„ ¡`û¸Ë~ÒϼF{ /"ÔçžyzÇŽÝÇÒ^È‹UD–––h,Ü<‡ "T€D¨@6î¢ €meÓýlÜsÏ<½©ËOËlDe¡Øj¾øÇŸß,EýÛïþ`S—Ÿ–Ù¸Ê B°¥üÊS)?= D¨ˆc(?-D¨’Å1w)”Ÿž"TùÇ0‡JÏ*âÊOË*€äqÌ]*å§g€@¹µ¬e·¢®_{õ ‡¾ùo ßzçkû%áÓà ·]øO“-¿må7 ð#5½iÚý_9ÿ÷‡‹z6®eDDÓžJÝM9ïM B "rk%Ûõíïõ½¯ªêëã—¿ú‰}‰ª¶""¢/¯h·ÖD¨ÖËo[ùhÚg^ºÜùÐâ¹æÏ~ó› Þ]—;ÞrÖzZæaEÑõà‰G¾ü凯|ùÿîé]JŠURô¦‘ÉE9ôÒVla· ·„€í¡fñúåòü¹3?k9ñåû4íâ™W>\^‰.¿Üã|èñG÷=ö§ßùy,vI¾<£WŽÊ¯k±ÜSü[Ñ÷F +Þ·.{+Þ·–Wn­ho=ÿÐãî{üÑ}•Ï_6jýÊ3U:ÿä•ù•ØŸG_™Ô}~ðè3ƒ.¯ür~ð¨3ºb4+#±yI_¹o™mY{¸ý¥§Tõýo}/ëô„*¬Y%.Á/—/¿ðÈ—‡TUUôì#Ïçª8f"TÛ B]Ö³y¿ê·¾ðdù£Ÿü˜ÈOGÞš,¾ÐPÕ'z¦~â©1B‰å”Ë3zåªüz¬Á7ªz_ë<¸"ÆrU½øÕÉO޼ùÕWä¯|ákCê=S?î9¨}åÏ^YX^ÙåØ¿ª¾?véú­eýÖüÔØOåýo}ÿò-íÖ²>iDÛÿè¯/¿ýÒáÞ÷å©¿ŸžxËÈêÖ²|á³§~zÿ{¾tŸ¼þÕÞβÙo[˯òO>¡irñM£‚–UÐ×ôòšË+·Mö>¡išv°{òÏsÕ³*€m¡f5êÿîÏŽ®XÖ >ñ©ûU5<ñÖ5cù/æDÓÊvh·î¹w·ˆˆ¾’|ùš)ÔVDTõâ_VWþîŸë_ù——Ä–kÚ“ÿ«½Â¨ËåñŸjÚ“—k·Ê«Ó´Ƨæ—Wî.ú¨ˆïß컢ªªzñÒ;‘ô»‹~#–WË«ó¦©åKC"òÑ‚ò{w‹ÈÜ/æs:šÃ–‰ëš•ÕN´®‚ý¹jŽY`â9T`;F¨™®¢OÿàÌlXÜŸ‰.™xëÚg>{\û0,"%Y½ÿ»²¢ÝJ¶üÎ<‡ªk"šVÿÿü乂כ[ê¯ù«7[*cy¬`ºn”Ù(¿®‰Høêµí×|¬FûÑHøêµ•·ƒCûãîšK]/ÿëO=Xüaø óAmY{è‹ÿð¥«ôòÏg_>Z÷²9sUý§¯×ý“¨ª‘ÕÝü\fv-cîšÈ’û~ó#ÑFˆ«Â¯‰¹—Ó%PîL; B°ù,¯dvÛTׯÎþÜýÉO*‘?¿ÒôÝÆÞYhtHô©D}Yl¼WîHùW ðkOþIÕÿ~n¤ëDEà¹ßY[0]ßµë>‘Le¾o÷¯¯è+ÊCOÈØO†ÞêÓÇî«9õ`ão<ñr÷ÇÞ9_2òÄ'j²,ºÜóYï?ûÿ¾üøó?Q£™ïÚuŸh|º+ð܃F@f¤Ì¯žïý_ÿyLUå·ŠïÖdY·ª‚yI— Úª·¹lÜå¶a„ªeöšþÁwwÿÑïÞ£®h¿óØÇTõƒKo/¬hÇQÕ7ÞžÖþõåç&TÕ˜¾¯^U?ð}瘷òñ–¿Ù¯iFæ±ÜÎ]X0>½µüöÿ~âñÏ>ñ7Ó·‚qoBË+w¾eV´[ËoüÅ?iš«³åËVUˆ[%I‚‚ÂR™»v]K‘Éú+ €À–²¢éö_Ë+ oüðê<å0/üµOTíÑ´ŸÿKðúŠöñ§Z÷hÚä7ªßÙ÷Â'5MD4M_ÑôdË3z­¿üÆKQÕÀß|¦úó_ìÿ¹|ì:îÖÅXn.ØÝOž~®V›üFõç¿ÐjŸÿÆ“…‘îÙ½GÓ4í¾}Ÿ(XÑô•ßùýÏýöêŸË+ïümý§>w°êóŸé7enävõïŽ|î`Õï׿8³Ûœ$¼¹ó-)iëK?úʺ˜ÄT-®Ñhza]GëGåýï±ÚXb™Éú+ `kSDäæÍ›‰ 755---ÑFÀVòâ™×šÿÞf)íà¹WŸ{æéÍ[~Zfƒ* ` Hjîܹ“çPmg³ß6å¶/-`Ë#B¶Í~Û”Û¾´ "T[Íò&c–‰ÃhD¨¶æPéY BgqÌ&Zq…§-iD¨¶îòÓ³@„ ¿Œýø"å§g€@¾Øì¿+ÉïbÒ2¶þ§ˆP"T¡D¨ Br+Õ¯M Ò@¸Í¹yófâ;vì u°q–––îܹó®ŒV6Ï¡€ B*@„ €ÍﮌRëút_Mg@]k]Þ‘Ž eãʧë‹çÛŽ ̪"¢i¥-gO6*tÀ–ͪ¦¹¼###¾æRMêì›Öõ OûÃe;‘ÑÑѱ1x7psجjDAqI$Žœî­®®®îžî­®î5"ÈéÞêÚÚÚÚÚÚêÞi#Öô·V×ÖÖöNGâËEkÕ±¿ûûÖêêêVÿ¢."útou«qMz}>,"%Å""ŠRØxª£BQÌƶh.FUÕ_õšs^ô·FsN½bl!6a„š ¨ªÔW!£ª:§*ÇÇ;*eÑßê ¨.ïȈץ<­þEE)l8ÙãÒ´¡Î6ÿ¢®O÷™wOœþÂýeª:;]DäÆü\Ù~g¡²z_Q**ëEU5mF¬¹ºñ¾#ýá²fos™ uö…Vë£:§*'&þòðþ2U Þ‘ÁI‰æœzE£üìwPÒçP‡‡‡ã–8p Ìyê"¢•6Ÿmwˆ„DDÓ\=íÑõÅàdXÓê+"RéÒ††&ƒ‹ …JEûÙ–¹#ýîºþÒæ³'"RàÜ_Úš uTT\Ÿ—ý‡ â6ZÑ1î•jO`vÀ]ׯ¹zÆÚ+E×§§†D¤¤ØQ\"ž›_ÔÆš±b—ˆÌ†ç¯ëº'Ã%î±³¢eÝ[MMMÉþ‰é]©W3ÿËB‹FŠÆŸ wÅ[ó&áùë"…"Ja£§eÒ=0»:WZàÜ_Öž›_ÔwÍÏEîæ'©#íÆ÷¥mÅgO6˜eU5ò_ÕQéÒ†††¦Bí•óa#\±³bBÅ[ƒƒƒ)>Mó]þdmJ»ŠËDÌAjYñ®H,»œ ‹¨á~¯ßy²±PQ”Bçþ²þþùë7d²¤òT’;ìÆCó5C‘˜rWq™háT²ñ„@ ˜ê“¡úÊŽH²ô+f[käFîÕ:U50Š<«ZfztÞ=6âk.“pÿ‘È·ò œûËdhêÜ|‰yž3;N÷ƾ;e<öZV¼Ë´ ßùé"e ±T›+`KE¨"RØxÊëÒžº:O@syO5ß Ÿªë¨P”ÂÆ“=õªèl;¿¨ë‘uHTQ”Švxkjjkkë<­´ùìÉ#Ø561;à6+?Ns©¦iZid ×T¶Ô+àRDäæÍ›‰ §x|5‡ôEÛ‘þp}ÏxGý°¤5wîÜy‡ÿë©®/ž÷öϪj}â *¶¥»îìæ¥°ñÔx#ý€(•&*@„ "T€›Þ]4Á÷â™×hê¹gž¦òj°ÝJ=²¹Îb[òXØ’]@„šº¥l¥¥¥;v܆ÿÀÂ`»m{d³œÅ¶ð±°õº€»ü°Åq£†-¿éº€ù…›0BÕõEkummmmmmuu«Q¿EÔõéÞêêÞi}í’Þi]Ï«¦4ÊY]Ý;­ëÆûZsùàNQ9—6hˆ6¨[»GbuÜUÞV‡ÆFï0D¨""çÛŽô‡Ëš}#£££ccñöÝþÖêìÛt]¢i.ïÈȈ¯¹TÓ6cùl=ÙKiO qØž‡îp„:‘’âE)l<ÕQ¡(bš[µ¸œî­ªú«ÞÖêØœ«¾èomõ/F’¥ZÑrTÕ@gÛùŵËã®{Œ‹sVÆòVÿ¢¾èo­®6O'–!Ñtotæ¸w:~˜NRN Å%"ºþü55\È Å%¶ÇºªªÎ¯ÕtTUU5ÖgîC´ùÎRüû”£tät¾-îö]ºSOgç–˜g2$z÷2VÓ4gÏwµw?ýþVs»môérë–-–´_Ö.|W»î7Ç?ú¢¿µºÕ¿¸šC4²fÄJRÓæ›#BSY/ªè¬i‹8B}GúÃeÍÞæ2êì ­ª¦*'&þòðþ2U Þ‘ÁIÙï,T”´+ŽG"`“z¯×¥Î1%E©èM¼è1²2–ϸk¼â9ÛR&á~od MV†˜E«' º¼##^—ðÄö­”å´š ¨ªÔüNŠòDd\ª¬P”´cÝÄDÏóc=.MÓ4WÏX»Õ¸g=D§9ý¤¥4“âñºTu¶ÿ\ÈΩg|¼q ¶º>Ýw¤?,õÞ‘‘ÑÑÑØéÆæÙ3Òn¾æ2 í¶¡§Ë-yh<¤>”Øb–ý’¸ð!u—ÓÿÈàdXÂýçŒ6…C6ÃŒP_g@U]Þ‘1Ï~æPãUtŒ{]šªÎ¸ëÌ×mSC"RRì(.‘¹ùؘ¢i®žvGìR$<]׃“acÖΊí¾æR5à±~:dí|ÀjVÅ%Æû“ ±Ò¤,Cì’18Ö4W¥CÄQéÒ´ðdÐV9׎¿žºº:O@+mþ~Çç;ÆÇíµ°Aƒ¾i\:ÛîÈÉX)ôN‰íIDAT—~ˆ¶’z”Ž¥q7“¡)#DH}1B±­1ØÆÍLÛ?{FÚÍhÏ¡©5Ÿ¹>]nÕC#E‹YÞ1ˆ[iÂÉࢮ‡ÎõϪªª¦B ‡lzº¾8?'šVZ¼Ë¢$D¨‘ Õx:#®T5à©óTÕ<¦˜Æ¬È°’ëóáúJGÜ®|E+ žæRm¨³íü S(¹èo­®®3²ÊfwLV†ëóáµ l—Ó|ØG®¨N5˜È ãRƺCôF™A6E©h?ÛRªiê쀻®Î÷g]÷ ;]nÕCâÅ,ûź³Œø'<]BSCeÍÞæRMò¿±Ù<ô®›Ÿ´Ü^—Ó™0… '{¢-."»ŠËL=juÁª(ÆS}SCõ•ÑéWLQ€z ÷{#bèúâyoXÊš}^—¦eRñ´eØU\¶vAYñ.Nn¶šœu‰CtŽE –ådó©…§ÆÇ½.MV¿ˆ–}Ý7òt¹5%k1«~±X¸&þ)Ûït4¸ëE“Áó±pˆ0#joô‘ÞÈóeÅ»D¥Ð¹¿LU¾”×ËFØ ªÍS\V–…Ãáõ][¤-C,ÁT(Rë²èC´ÙîëüŒ€ü ƒìŽuÆX>7#ƒ!Ú8IkÏÒe^À¹ùÑSOIq¡¢¤½7Ñ` b"u1=KãhïqiZF§Ý$6êt¹u¥j1s¿$[訬7âã˜rTÖ«êìÀ@ÀøÜæ¡·醲>ˆ¶t„ÚîoMMmmmäùŒ“ F#6žòº´ÙwНø8÷—jZäŠ(;+¦¸¬<ÙS¿:öÔ«j ³Æ7W&)¾gš(mŒO]' ¹¼§ 9™ØzìŒuŠRØài)“°ùÛi‡hqެå+nÉpê.bÒ[Sç ˜Ÿ³\Ï$ßTtŒûšKºí?ÞQ!¦/’×Õy†¤¬Å“Ái7éÅÆ.·èÅ›E‹?•×/É:KvñÏ~gq04—šþ´f8·”jZÀS7UÙ“ÝA´Y»@DnÞ¼™øÁððpSSÓÒÒÃ÷F{ñÌkÝÇÒ6H׉ow?Êxž?ƒíë‘MtÛªÇÂ&í‚¡æÎ;ù¯§È/D¨È/wÑù`iiéÅ3¯ÑÀ`KÂ.žCÍ;vì lô ŒFÈ«Áv+õÈæ:‹mÉca3vAêçP™Cåh[аtA~á9Tä—Ts¨ƒƒƒ4n³¤Ï¡òd$6TÆÏ¡òL îžC*@„ "T€D¨*ˆP"T¡wÞ]Y¬£ëÓ}5UMsõŒµW(J¦«I}¦+f”¡¹f8çE@î#T}Ñßv¤?\ÖrödCÜ8ßv¤³f®åìÉÆBÅfœ§(ãã\±ØVˆ26—Œïò‡ÎõϪj½»¡PQ¥°Á]¯ª³ýçBF$Ú[]]]Ýë÷·ÖÖÖVW·úõØ\¦ª:kú¦u=–lZ×<§{«kkkkkk«{§cAmbV±åµQ½ÓzuN–‰¾èo.7ouÅé^£NvàvD¨º>=5$šæªtD9*]š&CS±MU“âñºŒÈUQ*ÚÇz\š–ìöú¢¿ÕP]Þ‘¯K xZý‹«…3²ò5—IØ‚™ÑÑÑÑ_s©¦ uöeZf¢ëÓ}GúÃRïïˆ+ª¾èoóŸ=ÙP¨(i kIïòÇ-9pà€5Íån(©tiCCCSÓíGªw18Ö´úJ‡DV™ .64¬Éª¸D$<45ÝîX  ŠKDÂë¬}B&ªèl‹„¡k“†úŽÌ»ÇÚÍË'6,555---e¡«™ÿL–Åú\Ÿ 3Ãó×E Rµ‹þ¶#ý³ª*ª*Z–[MÌDQ*Ú϶ÌéŸp× ¸¼#±`tÎ×6®ïéˆF¢Éǵ, ¦ø4Í7¥â¢RE©¨¬—@ 0j¯¨‘ÐT@UÅUY¡(÷ÛËŠw¥)ޮⲵӘ)WÑõÅóÞþ°”µøÜóG:‡² O“d¢6žoœî­öԡξʱöØìïþýõ³žjñŽwT$K\¡(Äl/SÊq¸¥TÓ†|çu]×Ïû†4­´å°ùNþÜühäZR\¨(‘0ÔX¾–¢:÷—©j`*Y¥l¿³0Õ3ÆœkIqÁzj*G{KÓÖÊ%Å í#¾æ²¡ÎØw¹’'ÀºdükSJaãɱ⾚NwÝ€ˆhšÅ¯8MzkfUMsõ´;Œ0´ÁÓ2y¤À]ׯ¹ž}Ôœ¸°ñ”w¾Úã© ˆh.ï©ÆÂT[W*Ú{êž@gÍ\Y™¨³Î‰Ë0}’dòVí×"?ò*e-ãQ¯*û³ïýáµ?ŒOÌΊˆÜ¼y3ñƒááá¯Zâ—G`GŠPsçÎü×Sä—»r˜×íùgQØÚ˜C*@„ "T€D¨@nÝE6È‹g^ËUVÏ=ó4í ¡ÝÇ®?“¥¥¥;vdôoljÜåä»ÎÅ B2–ñ]~›²<0lU `·m޼‹PEäKz$u‚—¿s––¶0d/Ø]~LNÏt9Ù- €ä²¹Ëÿßõ®Ô¯¸ôº>Ý[]]kÒ;­gW\#«êêÞi]߈æÐõEëšüÍ[L¶õÄ Ú,aÖÕI]’un=‡ýuÇéÓ½õÈú÷ÉØŸïjïÆ5c¬$ÆGÕÕ­þE=®¨©÷´Ô»\4[[9¬Svƒ@b+mPñ¶3;Ï¢¿µ:ºÛDvÂÛ×# ƒî+lLÞ›t·Œn7é€o'Êõµ¹Åî‡ ÚsR'vB—õïKëÉ!›9Ôÿñ«¿b¹Üáp„B¡dkiš«g¬Ý!¡¾šÎ¡Î¾Ê±ö E±¬L_MçÔ÷X%P”ŠŽññŽëðйYUUS¡öŠŠÌV5*hY©ÍÈfåùÑÛ×9¤%Ù—6Zl_MÜ¥u}ú-Uí?jìˆìg¡©¡L¯w¹‡¢GÇFŸ˜²z|»-X<ßv¤?\Örödc¡¢ë‹çÛú¦O¶WlôÐì>xµy¦y¢|âvî–›cºhÝ‚å‰r£w¹ŒÚ<ùî§08lÜž;S;CgÍœÑþ""Rï¹í¯ëÓŠ’>ÆÊæø¿ÿ¹œør8±2Ú_Ë©X¼ßWÓPUU tÖô­™ šî›%²ZݘÎ ,ú[[ý‹V)“<¾¹fos©¦ ùÎ/®ï$o.¹quÒê_Œ0áÂqþ|[Ü¥ecW<5m¾9«µ„åd’EE.ú[««¯À¦{£ {§¯¥¬ßO÷ÆrX]ÝÔ¹67—}ÉSW·fç±ÜJb!mtÜ:”•–j24Ù“ý¾¹²RM۠ɳL[ïvÉJbç˜ÛIRw¨ßßš8mcÎ!Ù$tÒQ(º#%Õr£‰ã›e÷¥)g´^©—'w}>,"%ÅF(SØxªÃ8uÅÕ7qZ%q¸Îtj$Ø=°çbîoî§Þ-ͯÞ-ãš.v÷ÉÆ±–~@°¿o›ïäXîr©Ç½Œú4Ã6Oµû™Û-ë³ybElŽ~™€)ÒçÛžc¾tiï©7"ÚL®¸(%‹›s°žf¡þÇ.ÿÇ.ªrß§*÷ÅÞ‹ÈcSÆŸ©V¾1?'"õ•FÌê;Ò.kö6—ÉPg_HQ*ÚÇz\š79¤ªÎ©ÊññޏH?aõBçþ2U Þ‘ÁIÙï,´ÚP² ÔþwƒÃ¹¿L$lä±þ‹›@çT刯¹TÓfÜ5^ñœm)“p¿w5VÕÀ¤xF¼.ó~cYàP_g@U]Þ‘1Ïþµíly™dÑ_‘@ðHXê½##£££±>Zô·zªË;2âu©O«Ñf[9,ú[;‡Êš}«yÚßôê¡Ý—¼##±Oã¶’¬v:n}JÜîzU øÎÇöÕý%wo ÃÖÛØA qZѪ$iÙÄ$u‡NŠgÄ×\&áØQ–˜ƒÍý3îÏdEÛh²ñ-n+‰£A²zeq”)JEe½¨j ³¦-Ùå–17:::âuIÊÃ?# ƒî‰*_SÑNÌû^Š×Fï–«Mçk.Õ´¡ÎÈ<‹c-Í€é¾8 Æv¹´ã^F£AFmžl÷Kl·¬çlžúðLÑ#€–Ÿo{NÂ}®J—¶ÑŠ yêêbs1)F¿¸jfZà{i®#ÔÿZþÿZ޽ÿtM¥ˆ¼úÆ›ÆòØG‰5ôÔÕÕ¹Âõ=ãFGN ‰HI±£¸DDææ“û5ÍÕÓîHAW/(.‘ðüu]_ N†+5;2&P[;âÂÜŒ‚Q£§Í× ‘’—ïO6ÄŠhª»¡À¼ßXX×ççDÓJ‹w‰‘a¬äI–gÉ:ûKUm«¡›ÑøšæªtDއðd0m`ëecõØuvF›¶ugÜ´•d…´Óq–½_Wç ¨ö«Õ.'e¿³8‹ëŸÄ]Îò\›«Ö[ç &þ[³ ¥9f­v’4ên(ˆìó‘£,>›{NÂŽ”´¨‰µ³•„ÑÀº^Ùe"RÑ1îuiª:;à®Ký¬s_çPŠjÞGÇø¸íh&è;ñÞ…6‡Ãáp8Ú.¨Ž•ws¡Fw¿d¯Þ-W%Œ®éµäB¦ûvêû`éǽló4»Ÿ©Ý²>›Û<<-{Äþ˜ºñódϱó4Èèè¨hJÿ‘d·bRícö œÅ`˜e„úËeí—Ë‘9äßûô§Däû?š0š?J¬¡wÄ»6xe=UMvî·q’6­ݱBr}>\_é» ˜p×ÕÖÖºfEÄæp¿¶‚ÙLGÙ­ÚÚû#Éî›d›I–ý¥(íg[J5Mp×ÕE§ú­˜dÖ¹ «g°éul%«=0®÷GŒF³¢Ö‹:;p®ï\‰»¡ ûÚÙårÛzÙ Io<%)IÊc6q'É´C­w³­9”¬^ÙïÀã##¾æR-ÅÉïÆy_@Uë{ÖÌõ®£šÎ®™™PÄÉCÚ¡ø.¿y´|mün¹Ëi¾Rµ}¬¥r8XårÜË®Í-w¿ÄvËþlžãÑ/³˳='‰²â]–‘±íØq}¶=®f±Î­eí–i·û®ÌX{¥8%n)‹MG‹ì*.[O`g±zì&ÂTßÔPôæTÚ Ež@õD.&F|Í¥Z®nôg&²ß¬³eDr“‰­þR O{]šˆSýFÊ4ÇCº’Û©‹Õ¦×±•Ì ™ŽÃ-¥šÖŒ¾¹—ûÖ[Ç `5¦'Ù…Rî½Ö;I&š˜C.›7·£A&ËmF`… '{\š–ìdéí—6û:*” ¯fîÄ턉¯Þ-u}ñ¼·?,e;5Wª6µäB«{ÙµyÜîgÙnÙÍs9úe{ åÓž“87PU)).\ßñ»Îod„º¢ÝZ‰èÛ¯Žš_)Ö-hð4—já~¯QÞO@æãgnþFúÖjõÈúæ®J–Ò<Ú_âŽ~µM²¾ÑŸ­¹ùkö˯®¡È³¤é–gÉ:ú+z„´÷¸4Í8tc)§B‘z•íwF¯Œú¦Øº±ºy°¿éLæH¬ y[ϨÎýe¹´a6¢õ2b;^¤ ÆÞ¾zÖIº %;fSì$6;Ô*[ûgFÍ›$>H1¾% ަ4õµü&“®O÷F¿qÙŠUׇÎõ‡ËZ<¦Ù˜ÄjæáO†%y·L}“*ý±–d@Xß`µf—Ëù¸—Q›'ßý¬Û-›³ùzG?»`ú ˆ<ØsÂÊøGwzc·õ×~çÄöd|¶¶'›_›2æíOýp8ö>£“eƒ»~Àè÷žwžl(l<å¯ö ¸kb?ˆPØài™<Ò?à®ë×\Ï>š"7«Õ•çþÒþpxmÛX¦4O ¶xÚ㺻´?ž .º×n°¯Êùni|W:à tÖÌ••‰:謑çG}«ökv޵BÖƒ•Å.—Óq/ãg'¬v?‹vëkwdx6_Ïèkpû`Ò(0ŸöœøSIYK´ÍEQ*Ú+{kk=ÆG¥-gÇ3دìx=°ŠˆÜ¼y3ñƒááᦦ¦¥¥¥¸å/žyí@ýS©3zÿrlU áŽÿTêÆí-ÝÇ®?Ÿ®ßî>~4ñ”ÄnÉPÀ¸y% 5EdçÎÙÌ¡½N³ÛzXa»%hsl¤Œ#T.@mŽA`#(·é¿:±[‚6çÜ¢*ö---½xæ5Ú* /<÷ÌÓ;vìÈÉ£¨ˆPÈ_o€dTšy…9TäœH‹/61ƒÃŸ·ÏœHaiiiÇŽÜýg(‡ ÜåÜVLïþD¨ØdˆP° #T]Ÿî­®®5©®îÖu›+ÚLlgÅŒ2´™‰ùÏÄšöNëë©Èm݃ÝåÝÁ )Q°»Ü=¸zIŽ, º7ªëlä¥ÊÓ2‰cË¢¿µ:zNiõ/êw¨éO·ùä@2šCÕ4—wddtttttt|¼£BQ¶j£5ñº4m¨³/”ãnï¸i­² a>¼òÀÇŠR.É•¢Çm™çt¯E¥Ìh7®]t——;÷à‚H°»üØõ±òî˦÷ÁX´ìv8‡Ã4jÅ.\–¸5²daÐ]saÐ]¾úþÿðtæ¹Ýƒ Rôؾ´º†‡£—Y_Ï LÍ‚5Éúj sªÒ¸Öœp×xÅs¶¥LÂýÞó‹ÑFU“âñºTu¶ÿ\ÈXê;Ò.kö6—ÉPg_lag@U]Þ‘1Ï~óV’/Ï “ŒÝ˜Ÿ‘úÊd³Åº>Ýw¤?,õÆÔr²ye;Md'ó‡Ô‡ÚÇz\š¦i®ž±ö,¶¥(ã㣣£±¹8ó\ô·vE&6b•Št¢¯¹L±NLǬKºgfB¯?+'|AqvÍœ>¤:=Óõˆé½3–x¢* …B¡™æ«#q³k5AºÕ™-\þ©úÓØ{å‰ÏÌü£øL­c½®«Í3¡Phæ´3Ê\Ô䋾_Ó¾¦" vM E[#Zëcr2 ½þì•¿þk÷DÕÌLèõg¯ë¦j–”HWæ`÷ÁÈ*Ѷ v»rüb(ºxÜ´åôeÖ¥²^T5ÐYÓ7£±èoõT—wdÄëRžVÿ¢Í3‘1^%Ž`–gŠôBSU;$Ž¢Fh˜éÉ+®Ì‰%´<¿Ø<éÛ.BUÕ€§®.î"OÓ\=íãZSÓ\=' ŒëÎðüõ芚ær7ˆ£Ò¥i24e\õN ‰HI±£¸DDææu]×ççDÓJ‹w­¹xM¾<ƒL2 »=uuuîp}ÏxGEú‘±-U¬i§‰²Î<Ëm%o]_ N†c׉ƊCS!qtŒ§#áYÑî½éËÞx:‹:«ýÖaPŠÕˆÌ®^‘kWß;tèÐ{Ñ÷{we÷QºpoáÒ°ì¹7¡ÌήÓr¬{p°kø€Û]d4E|kÛîH;ÚéÉ+¡ÌIKhy 0/4"fBUl÷5öj®U xê<UÆO×Í7}L’-Ï(ɰ¦ÞX<,™¢T´Ÿm)Õ4uvÀ]W—éõ©mPæÆ¢:£Å¬ ˜§R¨"E»÷ú'‚FÖeDlÑ€,»Ò„{×®¾÷ÞKOwÂÛü¦œîãWNœØÛÜTdž»ŒÜå7§Œ„Á ïmJV€´7úíXgÙ[Aªñ¼§)êJ‚l\̧ÁÎöNv§ NvV£h6'¯Ô%´<lèIØÄjn”ïÙU\¶þ7'™$ã8ÜR¦ªßù©âÈÂÆSãã^—&"9 >ç™ëúâyoXÊš}^—¦¥hÕM F&»ðÒü>ëR‡{÷îy ñd(bÆô@BÐ7|à¸yÆsaÐ}LNÏ„B¡PèdcÎ$iR–™qyDQ Nö¸4-;& A‘³Fç…;SØEss.³<lèI؆êÜüè3=%Å…Š¢(…ÎýññŸ¢T%M…"Ïî¤[žA&kÄHšÈŠV‰HAƒ§¹T ÷{ÓþŠ£½Ç¥i£k c4‘e×fn ¾só7²ëË ú5y­švëøó×ÌÍïýÇb_ÓI¼qíj\€š°ÄYÕxáÂcmóû¬?І{W¯Y”§è±W,Gv“榦.Ó£¡×®¾÷@ävü‡W2h®ÔÍ’¤)ËlÌËš6ó .ˆÈÂà@’–r¯·Õ¹m ÂeÅ»LûT(²¼l¿³PQÒ•æó‚y³{22„{ÀSg Χ S •‰G0Ë3Ev,GÑi]Ïôä•Xæ¸Zž,²#a«RDäæÍ›‰ 755---ýÿíݱmƒ@à+²LÒÑf‹TtÞÀ5UÞ˜t•l{²-‰,Y™(Å{2’Y;õ›Ý¤úÐá烿zbµ‚ÕþÔÂõ›&õ+Ó®¯úJú^—lêºug }Å|P•ѤƒÏ¸þ­+Nµ“U"Áf³‘6X’TÒsª‚èX²ØWÅWÓýª—³MÕ{¬¾IÁŠ&rJp´È¨Ô“•_¿ƒ+¶ža‘ÅÆmëô¾p­KÎîãZ|±Ùª­µ Ž4f%¿bbòÅÿ»YåúIOÜçzñ}Lónö.F÷>f£Â*óˆ6Ùi•Q9çºÇŠàŠ‘Ê¿©ÙñeV¼)¸q^4íc_oOýwÉTo3/¯ Ñ&»¨2ŠçnñTNÓ¹Þ´büÄ 6Ût£t›£Òzñ´nØìýŽ´Ç†Ç³3ˆøfÄÛä…«ŒJY‘\M'}ÇŠÁùv¤ÙñbÅ…·¯;šf KnÜcûl3·©¬39콌ñPP|¦oŒ¯X|Ç©9|°Ù¦7+ûø 7*fD½÷Ò¡"Ø?³Kª5^ÅÉ¡zuñ_ß‚M'&ì3,`wvN‰‰  ÊD 2D 2€Íì÷÷2®×«Ã{Õȸùüüta3ßßßçóùö¯‰ °Ni/2€"ÀcÌÜþ¬r÷–N§ÓýÁÏÏÏ–o|»aó6Þ¾>\}S‡ŽŠ÷ÇŒŒ!)žû×k鉸Ó2Û¤=_6Ù†¹ÂÙnbrI¤Ï¼M|räìZÁ òö8-OÿËÆÒìÉú’Å꯶Žêãf³–+Ûß´/Å7 nmüŠí/ï1ReŒ ìw²ï$™~!àðä[òátÝÅK±â(>.Ìõ%‡Ç÷lª¯Éëeü°üÔV¨ïKß%ì“ÙãÒ½.‡ŠŒñGõÏ~!Øøq¥ñÕïhÄOÐaÉ%çtv¡F.­úÂõ¦Ú¿??\·Å 5 ”ŽŽZ>âWToßKÐñÅK>~.{[kïÙ%ë Ô_Ýø^Fwµ_ù‹7G»ï:/Y—#DÆìW¢Ç­{'u­q2+¤›V߸ðžÝÔø%¯w:öÑÄäžö{Å{¥‘²êü[«ÜXXŒ¬[ô5;5+imvIG¹ëib’ËNÇWifkÅË©*7^ýÎ.9,PL¨úêS÷2¦Ú\^X­Òlš,Ŭ?9õî‘ãuí÷ク׫¿d]eòA·‹Î_²Ê xý{<޼`÷2¶w+|6쫆ÝóWÏgG¶ª_¸Êpü`WÜËD 2‘ˆ @dˆ @d"€ÈD€ÈD 2‘ˆ @dˆ @d"€ÈD€ÈD 2‘ˆ @dˆ @d"€ÈD€ÈD 2‘ˆ @dˆ @d"€ÈD€ÈD 2‘ˆ @dˆ @d"€ÈD€ÈD 2‘ˆ @dˆ @d"€ÈD€ÈDð·Ƴu„IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/http-request-raw-single-parameter.png0000644000175000017500000006101212032647206027546 0ustar ebourgebourg‰PNG  IHDR†¥)¶ësRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 7 Š]Œ IDATxÚìÝol#g~'ø_=×Yd±÷¦H&¤ÚŒÑBZàÌ{§N˜¡s#ñúÆ7ã4´…XÀqtj*KaÜ{ y±HÄ!Ò‰Ô\fâÅ¡d„å9‡.”(e2œÓäê60B¨áеɭ¹Cö.žª{Qd©HV‹%QÒ÷ƒ~Á.>õÔSÏóÔS¿zªŠ"¸P½xñâÖ­[ µ !) $„¤I!)À¹Ñ¹HËIw$GþøVØÎqË¿¾ùÅx¾Æ3õpV|]Ä·Â6ª$Ý‘¶4ÂØìêò”Y±Qå¦ &€Ëe¸fIÙ^z&Yé!ñüz]‡³fE±œp¹\®DyXK0$nô±ÇÙ ……fà¥:¥új·Rœ&͘JËëÙP0½G¹b9l³«Í}*‹õìüLªZ­™ÑŒ—ÙÍ’š¦‚>A0œÚ2JDVˈb™Xφ\.Çãñx\‰²2¹(Ö³¡æW¡l]JêJ”EQu:³s¡NæåDcyã[Wâ©ðTzÒ€1>êõb®à„¤¢X_ŸðŒµE™Z*ÉϘ?xò,©4oº×|Þ”ñQ9pÅrÒ=“Þk~µ—zƒò O;órÂåñ–@ÿ4oÜ3ÆG½|çR¹ùÖ­0A›‹j¾±¤L,Ö¹Õå€ù$eåIj±±ÙÌJÀ,–Þ(/? ůÊûþ½Æ‘Z™Û¨RÌ‘@¾¶ÇˆÈ¾'µ' =Ìž¢c³«[-Q¦¼%¥(–‹9_pÊDDdsúh¿vD¢X¯í“ ŒÍ­ž„†¶pÜøC:™X¬Ô¸;ßz7 Òœ%UÎ)Ê‘YÒÉ 6 |Æ'›¿u´>?“ŠÌ[VÛã×–9WÆHµ˜ˆè°V%"éó)‚wµÌ9Î<µ¼Jó3é=Æø¨‡ïm€ú{ãþbqœyj9^sGR3IKkð'csqjóµ¢ýÚÙ ¿œ´žá[ŸRPÍ\*O`¥8ùñT>2oY]ž2¡ss)ßËá8{xuÎJ¹HówI9Îîôc{©'•ÎÄm_©þð>c|±"}[φ\3;4Ö¼³¯“y{©¶â>A jíðd±t4ݸ¤åæÌåxÍMÏ$-…;ÙîÏåR{|ÔÓ¼».ßC·9ýÄóLù•ßïÏåš!ŒX¬D{$ߘëÜj°6©67§•¹Êß bŒ|N;ljâˆÅJlo/ô¦p7@Û%þõ"ξùu…²uQäÌå-õ—–8ûB>3+Ïz ¾ØVØyò-gžŠÎ|+øâ[í÷Ýu2o36›‘Bä¶l@3®#¢/^\·ÝÖú›RpÎnݺ…ßx€ †.Ø5½qC7îàâ!$„¤€!)\_*Ptccõç`zzš´þƽôÀÙY[[“>ÜÐJq|||±E|÷½÷ÑNWÕ;o½)¾1Ì]zø6Z àê9>>¾yó¦ü_¼Þç­í~8BR¸`Ià‚i>K*Šå¤;Bñ­;§XRtn…íwŽ%,-oOî.:Z—LìNîŒ?ø€µ„Ô‚ðÆŠÆòÇ»‹*-)¾zc¹¢Ì´™óIAøÂÃ3Ó·ÑI.($•ä"ÉsA áȱ¸»»¨³þ‚Ær"" 4уµàëK¥ÝŽ TN e°¸öÚ¹¥ªe¸âºÜ¸gŒÌ¯×EQ¹PË —ËÓ”(‹òB—+Q.'¤å¡l]¬gC.—ËÊÖÅæºõlÈåñx\®DYOÖjÝÄ™»ýòÝ®i“ŸÚøÏÁZpÜf³/•ZCH›Íf³Ù–J¥¥ÆWò‡¶Ïj9”–¤ÕÇÇ—þ¢1GûÁƒÖM\óÔ‹ùØ^z&YQ.å8ûB¡°¹¹™ÏÌŽ B.’”JÆøHÑ)-ßKÝ1Š®ÎY©šŠ5âÚJr&UµÎÆf­”‹´f{®>y˜ÔŸŒ/>ŸÝ­T*»éA3b*M…¶3YF[‚/¶IËÁ_ž2IiªµC"Q,sD4j±YF‰h¿vD¶…B¡PXÐ}6 ;oSšÏö¿¿¬ÆiI=ð;ÙÖ"-5oÚ|ƒî¼DDDŽÉ@v»Ô\xïµÆ]}Çâã€nDª–ÃKw^i|¸ÎºÿT¾i*:»3“ŠÌ[VƒòB±žŸIí1FŒ‘ÐcÌø¨—'Ƥ8ÕÜ}@ë›H¥¥ñí~÷7 òR“Z‚ƒµ`æeù!ÒOŸüñ_¶}C »éÉÆÂ»“FŸ3UÍáötæñÒø¸±7º àZ‡¤gžZŽ×Ü‘T,c¥Q'‘(Ö×c©*Yç2ÁÚL$×ÃæF,Vª¾øP¾2¥t{zéNp©äÅ—î¼XΜ&hÔÊÁ±¸»»¨ù®Àµ`èwI9Î^³V«ÕÆ‚ÃZ•ˆF-¦Þ6ÆqfÇ„•1>³~$-¹°×›Œ¥éàÚÑí×î=ë¸Ã~ržˆJKÊgIŸ}r@DkAy¡jª¤u’vF“æÀrÜ¡ÆýŒñwfßJŒñwÒ`Li¬Ä|Â^:(¿t?¼us{:3ûüõàÚÑíéÌäö¸üv¼[:?¼“n,Üž”Ÿ%u,îÎ>}|||‘–N0UË¡´4>n³Ùl_þÆÝÇÒ©cññÝG¯ã{¸^8"zñâ…rÑÆÆÆôôôñññÅ–ìÝ÷Þ_zøöå©Iü¤(€Q‹¾¹ôðíµµµééiŽãðEà‚Ý@ ˆcq3¤W.$=>>~÷½÷ÑHI/Æ;o½yóæÍKõ8)\­”ˆ.ü+8x½ ’BR„¤p}]¯ß%½yó&š`Ø`–’ÀõÖ寽(–“îÏ ÂØÜêrÀÌ¡Ö`€ôfIÅzvÞÉ‘?–ÏonnnmE)–,‹âPí€(–.—Ë•¶‚ÀBÒÊ“ÔcþxØÎqDÄqæÀÊ‚ô™ˆÊ —Çãñx<®D¹=:,'¤¯BÙºXφ\.—+”­‹Ó‘(Ö³!—Çã‘cMyÅl6äñx¤Äò$.c|ÄÝ—¥Ües%ž O³\ÊTËÅ ‚ÏiSù¶ž Eyæ‹åó1㣡lý$GÆGŠÎ|fvLöÒAwŒ¢«sVª¦bëõfPØ5M%9“ªZgc³VÊE’eæ;Ígf­TM=©pœ=¼÷ ‚ øâ[a;ljb99“ª6gv …“.YHªCë¥j#Zµ9}‚PÝ)Éᦠøâa™,£Òçå)“É2JDÕÚa3ý4R4L4j±YF‰h¿¦Ì<8e’V¤\Qkâ“1>2߈n9ξP( 6¸R!)Ña­Úº@n¬dŒz£ÀpÓû]RÎXÞ²$Ý‘tЛ&""_,¿ÀqDd¬Äj®hÔË ¾ØJÀ<Øb5òO=i’^]²iǯSѹ™T:èM ¾¯o~ñž¯5~H•¬sÑ)3WA3 3Žˆ^¼x¡\´±±1==}|||õöã`x¬­­MOOs‡?(  !)\0õgI×ÖÖP5p>Tž%Å—p~ñ(ǩ̒^É›`háYR@H I’BR„¤€!) $Õ!ŠõlÈår…²u‘ˆD±œp¹\‰rãÛz6ÊÖEQmÅrÂår¹eµo•™{<Ç#oz"s=\®ÄSái×ÓñíH÷¢*c #Ÿ/¶]TË`pO¯¼Æ“rœÙ2Jlo¯vHd&:ªíQ®XÛìG‡µê¨ÓÌq}µS}}~&UµÎ­.Ìœ(Ö×ç“åå°½¯Ü®-޳/ D¢XNº#9òÇ·NΧ¯ çŠu£ûZå„7ÊÍeº­"ï/iuÊ4ÃÙd÷ç2A¯×Ë/دoäÓÛ{›ÓOD¹b…ˆŽJ;{Œ1Æ+DD•bÎï´‘b¾³óR ¶>¯1 zX«ѨÅÔˆ}+ RÇíÌíä:£œ˜œü„râV1S«¿¢ —#pͨO–Ò4j([oÜ Uœ¦µÎéåDóƦ|³T-ó§ÂÓ¤;Â3Æq'§ãz6ä’Ï Á[ž:ìZHcwb[Ò¨ ûž6—ëì{6j‹säIk÷|f_Y¤Ö2N-Ç|B.’¼ÎÁIÏ’ŽXÆökuQ<¬U}>Ÿ¡Šb½¶oµŒU’3©ªu66k¥\$Y9Ùãw(šùÛK=©´]8ýÄqÏ·E«:¹EŠÎííß¾?aelo§t$EÉ4áfjõW,0 לtNÌgfÇa/tÇ(º:g¥j*¶.Í羽LëÙP”g¾X>ó1>ÊÖµòç8{x+îAðI³¤¢XNΤªäåó›››ª§ãJ2Â3&Ís)d¯q¹j´ö4’³ÎfNRêì{#ÎÉÌZ©*Ç9Ò¾øbù­è„~lN?c¼2b¹n4oÜoll´-¹wï™ÖTµZ;”fE·œ”ËårÅÊ}ËMDM$ŠåbŽˆF-6Ë(Qu¿Vm&""_pÊDäô ¹œ|»¿É¾Pˆ‘+Ê弄ޔ¢ãêäÛˆÈd%Ú«ÖE‘J;ÕÑ Ijì®+ªî#À0›žž>>>îr²6L>'ŽU_|yÊD•Q¢jµvHdR?™•vª‚ EŒNŸËí”êSS¦^CáyËêòTçó~¢X¯í“ øši·Bö‹+ jï)‘ßb:)›Î¾7ãË(Q5W,‡m6:ªí“ ŒYFñJU§lNŸËí×ê¢ÍÌq×$DQöçúé”ÿ=>>n>NÊ“”ó;Ã4R³U÷k%’$•.Wã£^ž£^º‹}¡××çgÒ{F2‘Ül·vÖªò5•¡b´í À0[[[3r²ìF;N¦Ò³v ½œë9Î^ÛŸIíí¥ƒÞ´ÚÓ“ù”NºïiÏûÞò\¢¡J¨6^ع!J[îòzSg϶9ýÄó<ÏûcaŽãÖôÞ^:½ç…‰ˆhÄb%¡êS>Ŭ2­Þ¸ÉßÙQÌSËñš;’k´q÷ܤ›þ<߈’›ÏA*ÆÀ[€ówf§3Õ“éˆÅÚ:ݧqN× Í•B œpEy–‹$í¯=uä?𨴣6ƒ{J§ÝwÝ2´dx CÖGÿyFÝ䘄Ƥ4Ç™VÆøÌúQÇšûµ#¢J‘gŒF-ʹzQ,'ä’X-#]rkë Äó¼;Êè쩲äZû®]WeŠ•¶:Q«µ !©.“cª¸,þ«˜”6Vb>a/ì|mm'æöFyåÓœr›…£s»=7Ê c³ò£:¹)K¤ ‹»ŒP=™J ù¨×å_l%`nX÷ç¬TM½ËœOä0n*ÚX.ÿ6ªÇãñz£9²ÎEU'•µÜÙĤò+ðmÐÚÓ¸¿šzå…Zû®øÞŸ>ê-:ãr¨–¡RÌuH×눈^¼xÑùÅÆÆFÛ3Ôp:OÍWõd-Ö³ó3)š[íó] õlh&EÒ¯³_Ïþ|ëÖ-üAQ.œ9°¼M=¹79E±ü$5ߺ^ñh§è÷0tQ)g_(ر§×fI!) $@H I.Þ¸¿xï¾÷>*†Ç;o½‰Jª‘ùª¶*Utè,=|•ÃàøøøæÍ›ø;)Ã32_íA%£ªe¸q'pß-‚J† ©j„¤pÁ’À3ô,©(Ö×çgÒ{Œˆalnõ\ÿ «(–“îÅ·ìœbIѹ¶sCô×`¥ræÈß Û¨’tGxvñûby¹ü×Iii|{rwÑC àR‘´bg4ž+‡ß¡:/\xÛÿ)GôÍÐ,éúüLªjÍä777·¶¢K–Eñœ š‹\ÀFOI|±|>Ÿ™„ËX~¸æúÄD±œp¹\®„VzŒ‡gEÕ³óîHŽü±üEž²»öËwäc>œÊ‡!$­U‰hÔb""â8s`eAº Åz6äòxó1>ÊÖ ”Su„(òŒ‘ÿ_~N7Õk÷hãûDtðý¿b%æþçÿåõÞ¿¢{¯Ýn÷ŸÏîV*•ÝÇô@ ßnOgšŸÖÒô83}›ˆJK‹´´»[©T*ßý*=Ê4#½ìƒ´\©T¾ûÕgéßýÝàöäînå»_}ö`é$Áöd¥R©T*»³Ï_ïˆU Ъ´ôz#AóFiéÁ³‡V*•*¶Ó½$0Ø0GÄœvŽë:0noÇ¿¾÷ ‚ ø4n£«ç]ÎU݆t)ÍEó1c{©'#ç©B!ð¹«4E*–‹9ŸÓF½žÔv(šÏÌZ©*WÖrÕ*­gC‘\ãnª>p Õö‰¤£@µD±œœIU›óÓÊAµgöÔZ™wd®`Hj_(Ä|c{é Wy¡YÌѨÅf%¢ýš<.‚/¶É—ÖÕÚ¡(ÖK;Ui¢ÕÈŠ*láÌìã£ÒT¨þEüIV&˨ôyyÊ$—F· òPi§Ú8°mNŸ TwJ†ÊÙ:†F½^o”Æfÿxá+ …‚N{ûµ{ôüS"úôùÇo¼ñÆÇÍÏw_¾ÝßWmá÷7èÎKDDä˜ d·Ñ›cñ1=XZ[[ܸt4I¡)Ý~ùîI¯<üpÑ!-üøoF—šŸOËŒ*7¡_EDº L:Ú—ÌNß&¢ÛÓ³ŠUº–t†P b«aÛ@Æîã¹ý!]Nœ2I£\Qš4Ò?ÝHóFç.ù¬ž~Û§L3i®XÖ^®Z¥RæòÝÔ6—½’GA0]õÇ vý0Fõ€ZÏì§9Ú2ï,ÆÙ.wULg_(HϵÕc|ÔåSŽ Šq§Ñ:¬UýÊë¶.+ª1MEgÇ„\d~ýHq˜Õ³!—Ë+eÕO?Ó*Ãa­ÚºÀp9•½°qA³0wí·_¾›Ý.I‘Ù¢´5£´þ¾jñéó?þÆ—¥ÛÝóYÅŽàÃgݾ­œ¯lܸW¦TF¹owšèÝ)K}buÆó³ )z;Ý\Ek;µ*íÈüª19šÔª޳‡WçÆí¥ƒ^o·Ë­ÞšC'ó«Ô½{øëMgžZŽ×Ü‘\µvHd¢‹•„jË´|ÛÓ gwú‰çùb’r~çB#Y÷õ Še¬4ê”~ –ª’u.¬ÍDr=ì¸J:²ÇX-#gÛŽÉÀƒí%Ê&ÉA'ŸûþJé¥;¯–3*o¾—2÷m—Ò—kÁôx·âbÓííf  ¹ Œãù€5 Öçéæ’:9çVÂvûµj•vd~ÕØîÏYù4ŸY¿o˜µBÎX)Ê W”g¹HÒ¹¥v×@Ñ3{jµÌ»F2—Œ¡™ÅD󵤯EVËÇ™VÆøŒîEîˆÅJD<ÏËs¤WÔ¹P°V«Õ–ë õ›ú£¡~äÅJc¯­Íaûcä¡cÇdàƒ>f8•ŸûþJáök÷žuÞ,§ÒÒšž^T<Þùéó_iÜa?øäY»˜} ¿„¤2Q«QEi¾·µ>²éµ":XKgÕö Î7â180Jÿ~í¨‡ñ\ §¤µ*ÉH7¾[”ÎS£3Çuê¯Ò‹árè4&¹ÈÉ»åD¢,Šƒ:©©V©´°µÅOúÀÕ¨di^¿šŠeë¢~¿²…ã>Ah 15{f¯Í¡Ì¼³×âõ¦p”bn·Çãi¾+Ýa_¤{ìƒñ¥¿0TúÀã拉äÓw>ì˜U)@k ‹ÞI·¼_ïX||÷Ñë6›íõGwã·M†€‘‘ãÌSÑ9+U•¯tÏ3QTM½ËœOú(ÞNÌíòʧZOsº¹”— æÀòVÜOÕtÐ+½]t6¦ÐuRS­Rs`%îolÔåJTȤèÙ¿»×cSA?c{Òu• ÿ×Í‘u.:¥ 1µz¦ÁæÐÊüŠuoŽˆ^¼xÑùÅÆÆÆôôôññ1†à³öî{ï/=|û’ï~àŠX|ôÍ¥‡ocðž‘YÙ"§æK}²ÎJ áù#Ãߟoݺ…?( ìªÁ±¸‹R€Ò`- "’^"ÇÇÇï¾÷>ê#3*®gUãYÒ¡póæMT ÕÙ •0T#ó•|–t8+ýùBúó­[·0KŠÃ02£’QÕ ¯7ÀÓ›%][[C 3œ¬ájÐ|–O7 !åXœ¬ájôg½gIñxÀ% O.5 ˜e¤1çZÕÝ®F&-Fæ-«ËSf´³f WÓÓÓò_ »¡ŸNù_yyʰùœeÿºÎ> ‚/¾å,º#¹\±¶É)¡*cT­™è°V%¢Q‹©÷€¸™‰™³‡WçögR{{é 7­õ6U[µ@¯ÖÖÖ”ÿíòzÓpüñ\Ûý9+Ÿæ3ë÷í3шÅJBµ%–íý!O•Lˆˆ3V rÂå™ô6•mHëà긿KjšŠÎŽ ÕT,[9Î옰2ÆgÖNBIÎîôc|±Òx¨T¹œh¿vÔ¶\%““8÷ Y-#ÍàUÊ®oHÊqæ© Ÿ±½Tl½.ŠæÀJÌ'쥃Ê÷åm÷çÆz‹Î¸O8y¾ÕvÎJÕtЛ±Ì)—wf"¿³ïõFsd‹N™9ŽãÌSÑFÊwó``Á½xñ¢ó‹ å3§—~I`È)CÍ[·náŠÀ»qõvIþSRp)`–’BR„¤€!) $@H I’BR„ S IDAT¤€!) $87Pncc•pîÝ»‡J 8l!)µ»»‹J¬G£C[@H =øg?ù3¨„AYzø6*0à°„¤Ð_ôøQ ²?ßÌýæ¿ùJ+þáúÔ`(Àa I¡¯þô?G%ÑÓ¿ýG"ú±ÿ¯ß]¤wß{x óÎ[ob(Àa ®žë6¸!$…K ç¶ 7$÷RoÞ¼‰§ q؆…+ƒ›ÆâsÛ ®¨·«38l0¸]y˜%…!>·aº‡- $À¹ pØÀ9ÀØ!Šå„Ëår%Ê¢8 ùœ©s(dÛ&[½Çãñ¸\¡l½=óïÚé3ü±¬}Tˆ$Q‡­_]]ŠÃí j¸Ñó Ë Çc¼NSi}¬«ÓE[瓟ÏÌŽ B.’<‡Ð¤wþøVX§QúëgoůۯŽ1¶—zR‘ÿ[)æ†?pïì¢ÃÙ:—ÉçóùÌœ5qÏgë¢(Ö×çgRUëlæä0¯m¡PØÜÜÌçc>ArÛÜÜ<»AìÛSŽuCxùqF.ö„pÁ!éÉ¡XNH©¡l]¬gCŠù 9M6Ò¹Š•/÷Uεڙ믨ܢ(–“îÏc|Ä”/(•Zi”cM9ѼO”Û*¡ms§¤Ú óTxªU¶ÎŠ­¯Uÿ=õŠë7]j(WlôÒz6³oStѶ>¯ÕÐmM ÒЊf•G÷|fÿ4Þì¢'‡spÊÌqgž ú›¡öa­JD£iæçàü[5úcñáZuXë{H4xjS=H  =MkÆ´s+òº®P(är¹\‰§ÂSL¯Â™%eŒÒeý^:èŽQtuÎJÕTl½Þìߌñ;ÍÇ|mó'#Kr&UµÎÆf­”‹$+Æ3×Yq‡¢ù̬•ª©'i–Hš6f¡¤ ÊÍÍMyB¢B¶¶4m…¬gCQžùbù|ÌÇøh([×ÚÜ@®w•…y•½ªZ¶ÎŠÅr1G‚àsÚzÙû­FiÝZpyÊ4ÈsÛ/~ñçuþöÜV)òŒ‘ß)•_êcÒÔBg«î²VO¨gC‘\cÖJ+Ã^.ú7Þ+®¥Ñ`ÐÏŸY?"¢£ÒMLŒj÷yÕ†Ö:´µšµ’ŒðŒùbù­èÄéB­FµQ¥ýp¶9}‚@¹b…lN?1ÆK“¦UËçwت]·ëŒuƇk­a­ï!±¡µ×Ä`OSÝÊÀz)À†¤‚à‹‡mÒe½ øâËS&é¿Z;T¤ N™äÁ´óºbŽˆF-6Ë(í×äXV?sýƒS¦ÆdCǵ&$t‡¿zi§ÚþlNŸ TwJZ›“nŸ¿Âõz=×íéö·~Åö4²÷Wõl(cY]°`næŸ>åÛ?ÐJ¶±ýeÊ^#¼¨×ëòÂØìjØÖÒǺ5qמ -—g­Œgؽ}tcc½âzÝÚ;©ózi‡&#}¾kèt€Ú> ˜eädTéµÂU»¨ûB!æÛK½5Åu‡m_cZõÚÔæ Î,=æc|QíiÆ{ïé{)À@ õ÷ŒñQ/OŒIá¦éìWëÙù™ÔcÄu¿n—n“)ô¸¹.aýVØÎqÒm Ü%©Q,?IU÷XГndÁˆ¸IÿiHéåÿtóû¿ìy­-ÍŸn~ÿ4S,m3gƒM¬•¬cùYö0“ú‰çÓO’µÜhpËDÉÁ úà$¤8ƒ.ª•æÃõõù™ô™·¬.O™Ï7ª8‡Ã¶/8ôú>³ô›ñä4=m½`0QÇP”Âji_4b±R_Oâ÷½"‰b}=–ª’u63öäˆÅÚuG.¾b9Î.ÝÎ+öpöÏj”~P¾NÑ_ÜþÖ‡ÛZß¶ÎU›¸s—µz‚9°÷7ª]?åù÷Šë‰ãÌõ‡ä:û¼ñ¾­Õ¬IÙ¨·è<íPœì‚t8WSA¯×ë ¦ªþøÖrÀÌqœ=¥˜ÛíñxÏžžû]û ?luƺž=­cüôCbO§6ãÈizš-÷ º—ôsüÑ‹/:¿ØØØ˜žž>>>ø&›Gúû¾Ÿ{Ålllìîîþ³Ÿü™_ôø_ý鎊%¢§û¾™ûÊôý>Öý“µ'Kß&¢³è½çLËIwÑyŠÕé]3÷½÷¥š¼p‹¾¹ôðí+Рç3à°…>‡‹zv~&UõÇ v­4Ã3,\ ×dpÓôäPóÖ­[øƒ¢0¼~ô#\¯Q®ï÷ÃŒ„ªNT0à°½æ‘hó·T‰H°Î­^ï)p. $•Þ€Y@Ý£b»ùLѦ§lS­p[Àh×=$0znûÎmìøøøÝ÷ÞG=[À°IáŸÛð ý…zç­7oÞ¼‰çƇ-`X„¤p­ýÓ- ïš[À°I¯£§û¨¦[C[@H çíÏ7s¨¥MþCT`(Àa IáüàÑÀP×C ƒG¡C\[˜%½x÷îÝÃÓ‡®3Ì’BR@H €’ $„¤I!)À9®¿Þôî{ï£I®ªwÞzó„¤D´ôðm´ÀÕs|||óæMÕ?žŒ÷ptî‡#$€ †.CH*Šå„ËåQH”Eã+º\‰²(öU¼ÒÒxpí`°»\Z~ëÓÒÒø¸­ÕøøR©Ï<Ö‚Ír¬åŒ‹ÕŠÑ÷æ®_H*_,ŸÏgfÇ!IªF™§ŽAÛ"½Ož½rïµÛÝãƒOž½rï_r,îîV*•Jeù áåJ¥R©ìî.:z må˜òöËw?~þ)}úü¯{öÉôùã»/ßF/THÚ`²Œ*¢O弩(–“îÏc|ÄݳÖÖç=ËÊÖEãaëÁ÷7è$"=X Ž+æ2KKãK¥ƒµàøøøøÒ_Hÿ--IóK%)Áxó³Vžš[nÝV#•'Sÿ‚JKã>`yöÊ—43T橜L=X 6gp›‹[öN‘Xk9ÀÕI+Ež1ò;_e¯. ›››ò¼i…lá­¸OÁß Û9®± ÆïP4Ÿ™µR5õ¤bxK-Ñciéõç³»­s™Ù‹´´»»»»ø ÒÐr¥RùîWŸ¥÷wƒÛ“»»•ï~õÙeh("=X[llë15×.-I™W*»»‹¿@ŽÅÝÇoo©k¤üôùÇw_vHñ©\fÕ ‰(ðXŽ®o¿vܱ(ïTKት2iYpiôðSùmsŸD$Ö³ó3©=ƈ1\²ƒïoн¥^ÄT>¶©þ§±ëdøì“rÜnÛÁƒµàz¼[qH±é6ú(\y§ù]ÒÃZ•ˆF-&å‹•ˆökG:±¬‘×›>}Þr‡ýöËwOOº-O-'7Ñ»i¼X/•|ðt«^ùY;ÃÉÏ~|ã®”úÓçËïD}òì$qV~•ªõ)­å× $å8{8îgŒ¸3ûV’Þ²¯i*:g¥j:è=ÕOA•¶ŸµFŽÅï¤ÇOõë¡yjƤәÉíñÖ+mþŽé—¿q·ñð¦cññÝGŠ÷‰n¿vï ¤hòöËw…æg ‰(ðø1ÍK _>Û˜Eu,>¾û/Ûl6Ûø"Ý dŒ/ý…”øÃ;éñq›Í6ž¾óáÉ”«Ör€Kƒ#¢/^t~±±±1==}|||ž¥y÷½÷—¾MD¥¥à'Á–w—Nï,òó B.’ìuŸ9ξP( vŽ;ÃꮬUG-fŽ“Ò$#9éè†qì”Gå v§1efǚÑXÏλ#9ë\&ŸÏç3sÖ\Ä=Ÿ­‹¢X_ŸŸIU­³™üæææÖV”bÉ Ù …ÍÍMi@“‡ÙžŠtªzfÖJÕÔLrØ&q®ö‡YÒÿ÷ûLÿ_¯“ׂ‹0÷|f_ÿò¢œh.QɇˆÊ‰ÆÅÜädäkîÏc|Ä­~üˆb}=³?›„\f½Þ1Ã!~*͋˶‹ÎDYÅr[þ#æÉ¶\‰§ÂÓ¶ºÍ657]N¸Ó}·¾Íf“¿2žUguõ”¾}_š³sª34ÃÜ¥ýèoÆe€Í¡U­RG‹ÎÂJÀÜp5*¶}¡\“Ùl¨sÞEõÀT÷Ÿ ‡-]BÑŒïÅ™ŽxýU²ñaDgFTÑj‚ÎÑ©­<:Ck¥˜ó;mm›Žz½rÁôLydÓßq#3‘‡°‘ñVkDí{w4;žÉ2zrñ•ÚcÌœ2sÇ™§‚~ÆöRO*D‡µ*ZLÒe˜9°2˜ÈæTÝ[QrÕíoÐ6xŒ­ÞŽ3¦‘öêz u=RŒœÇ‰¨¶>¯3ÙlpàêÌD«ºtf啇‰Á ?ÍÉk`!éÿóß>Óÿ§·òQmŸˆüNéXª$gRUëllÖJ¹H²1RIFxÆ|±üVtBoO):¥ Õ|êÙP$׸¦ÜÞŽ}+.]GÆ·ÂêGråIj48esLX‰ª;¥#½©²pGnõl(Ê3_,Ÿù•3¹¨Ò¥ð^:èŽQtuÎJÕTl½.ŠÒ•Óææ¦|­\![X·´Ê]+^e¯¶å Õ38Î옰2¶W;l´†uÂaîe\“šøKΟÿ’óçåÏDôÑV±{ë·î‚VuL/ïK£©ŽJ;Uª¦žHû~TÚ!]š~(ŠåäLªJþ>¦7Ø­ZITwJuLt…{Ë!¥^±ê2ÆïP4ó5ÏÁ}˜-]BÙ îÅàG¼ÁU²þ0bd‚?Üm ìl‚ÎÑI[¤òh ­¢XnF¤-›–§»˜råô½ãª‡°‘ñVg¯O¿;j-òŒ‘ßi£J1G‚à“êˆÈæô 劲9ýÄ/MšpšêTÝ»Rä³ÎÝ—wM¹³ý Ú&éh0|Œt¯ÞŽ3¦‘öÒïoFŽ”®çq½AOwUÏDš±~¢9Ìjõj­3]× ·i´Ô¹‡¤ÿïgúÿ´j-êõzƒéª?.·D±\ÌѨÅf%¢ýZ]E±^Û'A³Œ´\©Þ8ˆ‡m:ù”vªò5¥‘y²õÌþÜ}[û1cxº·´Sm %6§Oª;%¹û6Šj²ŒJŸ—§LÒ®U¥ÈP劳ë¶ÔwÍ@&ÇĘ äŠ":¬Ñ„ÃÔGëËŸÉí$¢oôgFZ_¾Ò¯.ãÕÛ¨ÅR]¥ÙéÞ®”^µí‡³2ÆGæ×ë½_böׯK¢ºSªk¥Ó{Œ*ç“4*D3CAð§Lò9XžééÀ”,e0¸ƒñ^ÉF‡‘SPm­±EîùšW}VËÈiÌÓíx÷CØÈxÛ˘lpwT†£(/ŒÍ®êT&Ù 1ŸÀØ^:èà3c§9¡»#ËçWfµñðTƒ¶ñc¤K?T;cžþ|ÝÓ‘Òç×ËÈœ25¶›+–u‡Ù޹mõÃÄx…÷}òXHúÿ}&èÿÓ~ô$ÖYïŒñQo”g¬ÙÞ-·'zåÕò1¬ò$½·—z=O0½'3†×ïØ\/ç iöÛ+•¿mõ”ƒÉ1a•zX½¶ßs=+›øWéKDôÇÿǶ±ÖW^HõZ]é¥#¹Z;¤J1g•ïíÑa­êwÚ.A?ä8{xunLØ^:èõ|ãê”ÍÑkI:vJµV3³cB.Ò>…£ºn× û?0Of•Úû@Ĉ7ðJ¾(=ŽN͈Tÿ6ÅéLÕ»ów5a#{tÚ1ÙØîœ ŒŠÇ]ô£RéÉÓSÆ:¡çWçö£š£VŸƒvßÇH·žp&ÝïôGJïç”þWT+¡Þ™NÓ§^ÓÃ3šª—)š¥UÛµÞ¦ôLŽ +åŠOj£N[­/}þæ·ó=µ~g“¬.ô6§Ÿˆxž—–Øœ~ÆöÒi^„Â~h Ç}‚ÐëÈØksÈûÕ(dÇ ¯­$ª;¥?h¥œô,¿N…hd¸_;jIzS[ûÀìð¢êë±Ôcþ>æHÑúÃvx£9PÉÃ7ÂÔö­–û¨ to€.N;K Ðó%Pë,)CÀÅBH I!)BR@H €’ $„¤Iàz¹qš•®üåu®»G¡¥üï»ï½öú·ÞÄaÃ’>\ùË÷~ûK×¶âÞú?k‹G¯C¬vMÂn¸!©þðù? ¯O< pFúy–ñ(âQ€‹ I"¬ÞnÜëÇ£¢øÃ?yóß•ØI˜ëøÚö¯ýÜ5ŒGE±œtGxEUøbùû`ª¢-sA›[]˜9ãëæÈß Û9 ƒfI Î Â/Í=Ù^ùƒAøÁÒ7þJÏy—Dñ‡ü+ÿÓÿú+ïžõ¦»Î ‚/–Ïç3³c‚‹$˽”GË —ËåJh­%gn¥jj¦·Ì†Ê³Êøs/}B$ŠOÿX1u*Í›Jó©? _-ÒÊ=øökÿåWõÒ¤¾þY‚üï~¶ô{¡åOèó¿²’rýGD¢x¸ý×ëûL~)ôþW?OO¥™ZF­¼I¡÷¿úŽkK󮽡÷¿úù¿Ëþ^h¹Æ˜UKÉS&Ë(Qµù¿rÂå ¾XaÁÞ@ëÙù™Ô^c뾯o~ñž¯ñŒ1â#nÒ›ÑlÍ\3ÿæÄª06fm,©gç=UµJ3¬b9áÎXV—§Ì˜:€swf?•ÿ_¾_bŒÜ¯ýKös¿öï=þöNç¼)c­üðµÿðwº¦‘–×2¿6÷ûôoVæ_¦¿þÎïgÿ^‰è¯ÿð_ço>?õµ/ÓŸ®üáSŽû¹¯¼ÿ{AP†•miNv¾Y€ÏÓÓ? -B¿<÷dûñ·wþÃwÞùÂ#³J‘gŒüN;ÇÕ³¡(Ï|±|>æc|4”­7âÅ™T•ü±|~ss³PXx•½ÞŠûA|]î°WŠø÷¿ùêÉŸ{i¤5¥ üRH™@'Íç^‘>Ç?!¥ù›Oþ/"Qüáÿ¹ED£?õ?¼4BDûéßwÜ¿ÖIÓVÆ>Z‰fÿ~pwÀã£^¯7Ê c³«a›(ÖK;UAð9mD6§Oª;¥úIðÍGæ×놷.eîŽP,Ÿ_ ˜‰H+Q¬×öIÆ,#YU‰É11&¹b…ˆk4á0áx€ 1ø÷w½ÅÿúÆ=qÆHP_ËHÝ ø#bLŠS¢÷4÷s_Y™? -×öÿûûõVVÛ§(Öª­)ªµC"3g¯ÎíϤööÒAoÚà‹PRæ#ëóA¯·¹Šzþ¦ÆòQK[ÌirLXSÕýZ]©íw| p^ÎüoÜ‹âáöï/BŸŸúƒ¸CúN£á¶ég/Tißp7’†¸Ÿú•ÿí;ß››ˆèÌÞʱX[X-Ò¬0g¬ 1Ÿ@D=½eš úNÞÒÌ_•tµÃ£ÒΨ/àÒ­] IDATÀ• I‰Žþ†ˆFês§L£T¼âü¾É+Íg@[ß´…ã>AhÆ‘R|¹_;ÒÍô¨¶ß =µòç8»ÓOÒré¡Ò“ˆÖ1a¥\ñImÔiÃÁW6$帟ûÊâ/3öÑÊ›ÿûáÏc­¼ù¿{N£å'é?ÌM µÌ¯=øÕ 釟8ndòßοL½þ[“Ò’Î4m™H¿õàW'B÷#? ÏÿÊ¿ üäÙLš+1ŸÀG½Þ(/øbÍg@Ë —Ëãñx½ÑYç¢SfŽã8óTtÎJÕtЫúSPUƒéjs­ü‰ÈvnLø¨·èŒû”óÐRLš#D¤p8"zñâEçÓÓÓÇÇÇòüÝ&¥?ú“ÿü(ô¯.û^H?>UõÇ埋҇¿V¡ 5oݺÅP#×–(Ö×c©=Æü˜#€ uUpmqœ9°R "à¢a–.˜¡YÒ‡+)}xëwþì7¾ò³¨µ¶j¹Nî^˽€ÁøÜ?S}/Åèû÷~ûKÒ¼ÞÔV!`Ðâ£gªË†¤ˆDQ!gÏ’Àëáû»7?C}@žë…˜%€ †’BR„¤€!) $€ëKëÙËãñx<—+”­‹§Ë­œp¹\®DY;—{eñÊÔž\oÝO”ßÖ³¡PöPxªZ':ÕÕG \ñê5 $€«`}~&UµÎfò›››[[QŠ%{uŒ_,ŸÏgfÇ!9à <žÓÂqfË(1¶W;$"¢£Ú>åŠükÕQË{u¡P(ìwž1¨^äc¾«Ò€®‚Z•ˆF-¦F€XY°s)fOåèA&²ÙPÛ”ª<çžÏìwݤÉ2Úº–rÒî$d)'\®ÄSá©~iy([oÌW¶”ªeD±œtGxÆã#îds§4wS*@YlÌ„6'’Ûc)›ÓOD¹b…ˆŽJ;{Œ1Æ+DD•bÎï´É>žv Ñ ëóª³ÔªeÖZ¥s_ ‡‰*+Ê­ã …BÍ RP¶—ê™´V][ <Õž?„¤p½8ýÄqÏ·C•äLªjÍZ)IVNÆÆïP4Ÿ™µR5õ¤ÒLáóÅò[щyÆÈï|•½ºP(lnnvΛ2ÆGŠÎBa¡kiù^:èŽQtuÎJÕTl½.Š»ÀqöðVÜ'‚à‹o…¥È[g7¥ؤ$äåó›››ÒdgËîŒXÆökuQ<¬U}>Ÿ¡Šb½¶oµŒœ$T-€V•ö±ŠÖ¾¨fsýNJè­MÕ2År[Õ½Ê^UÝ@H ×}¡ó Œí¥ƒ^åLa1GD£›e”HŠ·¤ô‚à N™3¹bYE±^Û'A³ŒœÌ€ª;Œz½Þ(/ŒÍ®†m'_t¬%¾¸2N“eTú¼³~DkkõLºVBR "J„²iQéO«e„¨WÉQ‹~8k—H-V Þ¸‘©¸~¦ëHsšS˜G:i4â¸pÜ'ÔòtèI®c‚ >)59&Æ¡q×[-t“ `<ÚëºJOûbšŠÎŽ ÕT,[UWÔjSi¹T˜Öåz[o­º“ÝÁÛ÷€ÂQйݧñˆçò”t¯ÙX‰ù„½tÐÈܶûsc‚ÀG½EgÜø\&ÇÙÃq?c|ÄÙ·RçKåÓhéÜŽ3OEç¬T•œíº›ò‹ç^o4GÖ¹è”ʽxéqR9Z•þ«FwÀHlmpãMÆqæ© Ÿ±=éU0ÕµÚÔv¿Q˜ŒeN¹¼3ÕªkÝìßá¸ö8"zñâEçÓÓÓÇÇÇDôpå/ã+?{÷æg¨/€ëIú!ªùñŽ<ôçÙñ "ú0»öÎ[o¶…š·nÝÂ,)\°¨èJú©¦Tœ Ì’BR@H €’\Þ¸÷½÷Q_Ð+é·H’ÑÒ÷Q§`Üâ£obÜ€«:n`ˆ3XKDtóæM:þ‡…¤D$ýÈ>Æ À¸!nPð,) $…a"Šå„Ë•(‹­KeQDå€îèQφBÙºÑÑc ôznò(¸Úytz£rÓ.WKHÇî)½ñÄgTcZèµ–TáŠB'ë~&Y¶…퇺ƒ8Î옠Xé(0KKŽÖ3ûsÑŒ$0þXþNLÊ?¥+Ö³ó±uÇò”ùrôêó«±ÔfI¡Óh0jÉ$+*—Gõl¨yÊÖO.˜Ê ia¢,Ê—JòT«(Ö³!—ò ³#W’É1A;¥zã0¯—vhÂaÒ=NÅ€Ðú¹}èPé9Í®%÷+“ŽJ_*'}RyÆÓëx&Ëhµv8èâéý”S—œ[¢ÜØŠæ1¨}Ø‘Ø<õ· —ZBH ]O,SQKFyû^ê¦ÉE·¶677ó™YJ=ivÁ\$B±|>Ÿ™ÝÏ$óEçÖV>3»IJ ŽÖcµàÖæææVœ"ÉJórj³°W3&=""¢£“ˆT{ôÐÓ9ttÈEbÝÚRö«JrFê9…扦’ŒìÏ­nnn®ÎíË}©ž e,«››››››Îb$×­ã‰b}}>cYíiÞÑPñôõZÎþrS ©u[Q,'#ËçÛv¤¯ZBH ]‚Ò eÖëŠþÇqö…•@cÞd=Ik“:ŸÉ2Z}þÓÑæçfï,íe„ˆˆlN®ˆÙ€«Jºw/ŤRD*Ú£‡ÎéC´‡wQ¯·cZΗnŸœtÊÅœßik ­Š9pÊ$Ú¤¾Ô6‹o ÇýºOëëó1Š.Ì=EZÝ‹gä@0^NýÓÊMãpÖ?lG,Ö\±Ò^Ú¾j©Ï’‚f_ ‹óëGËS­×LîÏ äs6ZLrågÉa­ZåƒÞ4QëZp¯f+Õ§¥Ñ಩Ûè¡C´‡wmOFžî"å°VušŒv¼J²ÿHëtz+g·ÓÊM+ Ö˜o)¼TXí¿íåP+Û`ö÷[Ÿ––šµ-ïGÖ‚Ír*ªF¹X­gÔ ªغ¹îÍzÒ(õ£¹³¿þëK_ë§VÛª¢e£Í/TêdÕVre3({Úù´Â€ý‹¿¡ÿïjŒ¬Wf71K ç¾þ|vwסÂMßù°R¹MkÁñ%R›˜2’zÖòDW¿“^Ÿ<{å^ð¶ê’ÒÒƒg_ýpùùëÛ“»‹´´Tr4¶•yt÷ñ&Ø”ev,î>^Ï”¦Ùv–mMöɳWþÿöî-ºúNàøÏ³ôœ>ì 4KQº®aM–="On€¡Ýˆ‰k.uXŽË-‚¹%&´êÙ­ © …ŸuKº©Tjœ˜$Ö8Ù&±’ªszL.5`‚mö‘<ìöœkþ³£ËHšÑÅø"ÙßÏÑÃx2þÏï7¿¿4?ÏHÊʆ9úÚHÄÿuŽ[Ê/zÊ+ûz†D<"C§5M΋¾ÊjÏdÎOǘ_Y‡ƒ 5Í•-‘pú¡qMö£«ª÷ìñ?_àQ¶vh§ûƒ z}"кWÂ~=C Çqeñí­pj¤³­Þã2ÓJÊß~óÓáÅÕ-MŸÏ—Òÿ6ÁUR!ÔÖµ²3lj-ÔÓß°N¶žú@SOhtãĺ¯×çó5‡EBcƒ7Ðk[N^¹Œ_šµ]!r¸&4|´KV.÷¸®©,/é~÷SKìË›~‘,’CÌN£¦D2lð¦_B6x½ñÑ’)BÉÒFÏÌ×-Ÿ‚‚ŸS1¿ÿü°ÕÖÖÖö ÅŠ9®ÚÇ´_ų]/O¹˜çVPÇAr$›»¬¡¶firž”¹’-¬k>ÚUùJø•Êæ6‡ià)¯Ìsevº?Ò⼇\uwšÆ“íÿþÍþ˜¯®Ž©ù|¾Ä?Ñ’€ýTeùP ëÍÄPO{òô/žòÊöÌž4ŸqD¤}ƒ_‘HxßFin ‰î´ÔªÚ–ˆ‰mYOlÜS‡Ãápdý@MlPÝŸ~m){GªW×µ·Ïç:iÅ/Ä5u†ÃáΦþ Ä:yÅ É9æli(P3°>bý®žºßHÄ¿ÄúÑ߯þÖŸý¬¡§: ïÛ˜Ø}þépÐÛW‹ä¼§¼²o`È¿¢:Ö² ôYµw0µFñ'vdÌpØ~<] še}–dó)k¨§}¾ÛÊžl¡Õ5WVë¢W×9<1dø|]µžÏÊÜ]©óRÿ@HŸcNÓxòýù/Ñì©ñòjårý²ªë—U%–Eä`÷±ÒJ“–ÀèK6Õ=£~ÛcžãÔµX7óºJT×’èܲœŒs]#Õý‘€tuhéçã” b™…zÚëÖ[ëê×Ç÷>§b~ö¦`NÅ|׎´§=³ ‰ï7S좞§¼²ïã+ñeÉ£IË8(±ô’‡.Wð±-‡ú*Ëu«eKÄì8`j<ËWÆ®ŸëþDR)Á»Ô½ÐîÉæWV÷3[²…ýQlíojÐEDohêoMÌûöF뺯_É?XWŽNêL·9æ8‹ Wûk4ûcŠ´¤¶\þü×è-7-‘·)¹4iIL€9ó“ îo©ì::<™ã,WG*ÖɸVÕ¶$;åPÀÛZ¨/ü‚˜§¾­E6xݯ{ê­‰OËäu‡ÝÎÞB9·Sù94Ð×·}uͺ±=ßàçTÌï?²î^Û—ÝÌÜi²Š4ÇmãQW¾VYíïúÈ’l!BmÍ•ëc»ôÔ¯OÞZ¯‹]Nù“Ãqeþ‡Ãal¦õ–æëÎWQ•ý15^^í¹ÜyËõ"òúþžRL“–ÀÈçr¥^]g½ï.~^t¸–4Š7ÇMXGjËÃzÏ èþÈúÿè.ë~‡›éɽýëc÷LÓ"q¼¬5¶MZÊ_V÷“ú>ìÁ{Ê+ûz¬»×öå,Ú&F2Áá`Ãi‰„Ãápø•ºñNÖµ¬©ó¶€d ˆ0ØÚ®u4&>ߨ¡µ·‡Æm®Û"ŒÍ´%éu/ב¨Êþ˜/¯i¹ìnï.Ñ4iIL½¡¢5ÞŸ [e}½Ó÷*›cgúá ¿¹Òéîf>㸰÷ öåöädž\ï© ¤7-ikBäÇ_‡hÒ¾¡¶%RÀ S+ßvM©Ú–Hbï:4MDj[Âzzüi=Dzlº¿ó|ƒ××h 8ª÷fæ›­ª^_£&"ñÝåÞ³|弿Ø{F=å•J‰í>qæ€"R×Ò">_|e}âÈùÖø¶‹¨y›êÚ7xeg¤Ú¥ âº>[²ù•ÕSß ¼ÞF-v•GImµ­mwK6?ÃÁÖþ¦€?ão³¦ÿIÏì±yr¶7ú:b‘«Ú–HîgUæs™ÆŽß¼6qÿõÀ”¹5ŸOš;ÛUê)Ó’˜(º?öÿ6º?ù¥¥¶e݉ˆÃr¬¥¨w$Ž4UuÖs­K`¢ûc_ü)îk2bÎÖ=¦å“’KÖ0ô¬MZÚ8ɵ©ÕÈ#x{€y9 ¨‹ˆCÑSfB}½_DB‡ êVè\íwgG²NG5ÙÓ[ _}[›ã°{öäœf®cêÉÍÜ#ÏñÇHÚ¡tœÆz®åñ5e®ƒN“4iI »¼:R—s­îoéñz-cyM(ðnØ•¨¼¯g~­|§Uq'«¬yt·=¦}¦•¤®û¦Ã$ž2i–‰È—_~éaWW}}ý… D¤iç¼{ag{0çÿO vþæ_ñº`ª¾nð—çQ‘@Óº“ÿ+"íÁMÜ‘Öj^rÉ%bPàu¯¼Ä¡ÂZR««òô®·sn×@`’Ñ’€–´¤-)hIZRÐ’´¤ %hI@K Ð’€– %-)@K ZR€–´¤-)hIZRÐ’´¤ %hI@K Ð’€– %-)@K ZR€–´¤-)hIZRÐ’´¤ %hI@K Ð’€– %-)@K ZR€–Åí¢Bá…]osÔ09-é¦î¸øâ‹Më8j˜œ–TD.\¸À!Àض¼—“Œ–´¤ %&ÑE”º’ûb²MÜQÒñƒB—n²Ó¡(i9´¤ÀÄyèÞ»K%Ô_î~£¤ã….Ýd§CQshI ò¿Ñˆšd) @K pRᤠMK €–ÓùLQñƒB“,EhII=©p•šd) @K pRᤠMK €–ÓûL‘Fü Ð$KQZR`2DÕè~Ñ4‡Þº¿öÅ~ðòÉW••eükhÛâÆIÿW·õS ~3ôÜ’'÷‰ˆRkÆ*;—ÈCÛ7î×4QjÞSïüÇ]ž2{`‹åD΃<æ…ïñ -´ý(YrÖe¼Éx'›ˆ|™€¢ %Å´iIѶt'ö¼tFÓ´}ön^X•ÙÒ)CDÄŒj$¥¥s^_êñ›f¨ùñw”Ônï}fqY™(sDÌqéG¿Ø»þöOKíöcÏ,.+3Íáß=øÜ±WŸY$ÉÀ¢e‹7†þ{£H–0Ƽã=~¡…¶Pê6«"¦j^òøã‹ûÿݯï˜]6º˜­A:U.šgeZäã]܉, €|pÃS¤%Åã«èà›»>~¤ùñ¹JuîÚ{>jÄ×÷nÕ­XZµüÁW?IœÝ×ô(Úø¿Šön[òøMÓ´ýMËôeúsÇFŽoÕ-ÓŸ;ÞûÜ2ý¹ãQcÄPÇŸ_´biÕŠ¥UËžïµïÎÚÌú§u{¿ ®Ó-ÓïÛ;hdFÞ»çųšvëö§½Ê1TT]¾æ—›½Ê1L,9lÔH,ïÝ{ߊ¥U¶acÛöæý©ëU–P­•+–Vmí5Òâ·ï®8 < #†ŠªÅOl_£ig^ÞJ̽,Z±´*Q ´_IÛÀ^åKž·~ÅiÉOÖq2dL€b,JæÜ³Žp"lëÇu{cE ®{ øYüé69´¤ÀDµ¤Qs4Ðë;¿sÿjïÒë®9ýÁñÁØúж'iÚª­ÇÞÿÉMÖ |4ëú‚EÔXÜxø«”Rªæß><öÁ‘Í 1E4­sóáë¬?ß{ÿh«¶{okvੇ÷[¿›Øì½×«TêÜ+wVo1Ÿ~㉹òÑÎ-o~>¢ìa5ú}§(U£{’2m¥-kZg·ñì{[k4íÌÎ×NŒd]ïjÔXüØ‘PWÏq+ηõŽ({üVšEUh3-ïu«”’Î#Vä¡m·ï<=ï¡­Í•}›·Èü•´ ìU~z!nƒC²ùL€",JæÜ‹³}7ÌÓ´3ÝG¿‰š#ƒÇºOË™—_·¶<úºaé¥ñ§[·ñì{¯=6W>ÃZR x¯’~lßýñº»®ªY ¯Ÿ§ig{ŽYë?ÿT”úÇÙ³ÔÈÌ9å""¦á¾~²®’ŽSüFêzCD©ÕÿúĵÖȽžVjõb¯ñ.ÿ¾Rç><65R6›9§ÜZÞqû k/g>̵·J[VjõÚ5—Y»–GNØv¶>K¨±GêHK³¨ y¬ŒdM{‘+gy甋ȧŸ'Ê‘ç#îÛC²ùL€â+ŠóÜ›á¹RD¬å“Á—ú5MÓ:žŒm_î¹,%Gkâ]Ž@Iཤ˜"-i¡¿bžzcןÎJÊ]ñ5ê9>tÛí3eèüY¹bÖ¥É;t†¡FÜÖOÒ{IÇ#~ÓLYŸñ£5‚5š©DäìÀ¡¾%ö½¸,»ï%%)3¡òZvuFY™ù?ooþÑŽO4M4M”Cœñ4‹¢Ð™Ç*¶fîß_\ÓÞ}öû¹•#Ûñ*§m3£’Ík2cQ\ž& –ߤöpv`È8:põ½›Žúwtýæ­5 ¾}þl¾ íÙ:Æ9´¤À‰…Ý®2Í/½öIë‡o¹¼,öãSõ»ÏuŸ®»y–Äß(fF%岩¿i¦¬Ïøqöì¹"çl#Ì-ÿ»Ñ¥E×®’î÷?µqþ´¼òÞm×±õΡŽÈ‡¶îè—«ï}õ¾¡û7u;ÅéÃä:=óÿÕ­iòoÏP5gÏž+êÜ-þC›X‹’hJü¹6ˆ—5}›±øXÛ×L6Çd° ]¬EÉœ{FY|Ú¿dvϽi為ËVí¼×}ò+>XuݺôÂñÄJ7î15ZRUØãÔ»ËôÏ3MëGCÍúîò«5íÜÑÆòùVЦ¼êÑíûcÇ*‘æÀ¯ïY[SýÃ[_ˆ*í¸en ÌË¿ÿä£Wʙ׺ÑZã8Ȥ$;ÿ‘ÃÍ÷͵"± ÷Æ#×f/tÑ%óibÌ,¯PJ©¹U gÊ4¾ûõÿ`û1¿çÎèrJB™ˆ|ùåUPáfIDAT—™ÿÐÕÕU__áÂiÚùÇï^Xyq”ã…"ô®·ëﺳT¢ ¾ùÖ¦î(Ýø'…ižÚ]»ùˆÜº©ãÉ*‘·ÖM«Bw²c5¦CQ2sŠGÿ…‹D¤³=hÍR{«yÉ%—ð^RL¥~»ŠÛm¹:e ÃPÑRþ´Ç´*ô&;®€gP$hI1”úí*n·åâ»çíÿ¼GDL1L“BO¿dÇqðìhI1-ñ“J”“"•d‰ %JWIA¡I–¢´¤ÀdŸTJüÝ`ïfc¢’,q´¤@©ãÆ=(4ÉR€–˜dÝïu?(4ÉR€–˜4¥þ%||‰ •d‰ÿ{hI@K Ð’`ú*àãMýø,ÆWI0Éòºð9ó›ýíý,LZKÊ7·`üpã´¤0‰þ2ïÊŸTdIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/summary_report_grouped.png0000644000175000017500000001714612032647206025703 0ustar ebourgebourg‰PNG  IHDR^R·V-IDATxÚíÝMz£8»P'wä¬)5®•ÔØYNÆöšê:Í×\„ÿBœ3èv9óJBzÞÇ€~ïŠ@ a0H˜$L& €„ €„ @ a0Ì5q¹æ?GaÑ p÷H_ÛS^!ÀA%Í0u“‰¾ô¢<»Dzžâ€Cžaªïz£z§È)VDG ,™0u3‰×ëæHõº¹@óúu+ñêËÃR–¼ôŸ"쮤/ JÉZëéË #üààgÇn'°ªÔ‹¾?þÑïG ä­«›oZrðáR§´â_4ꯃ[è4dkx†©9ó™>IYOw Á,!qÉÖ¬Rä¯Ísjñi›ÁUEÖÜÝÚú¯ÁXú>{1·‡K˜‚)ËØËzú2ƒiKÆS¥Sàz"SAõòÁsy‰r3â>L æ h­KÌögn²ŠÈDê¯ä"}ï’-u“¡eÕ1FNœ'1â¢ïàëø’«›¸ŒÝ°Á뜺³\‘ËÒÿ dkÄEßñ›}oŸ¤cü×þ)_T}ª[‰÷–áà–¸ô2‘4ÃÔ³[gèâ /.òô•¾(˜!Í)–x)I’ +o'›×ž­1»¡ †€™ÞϪé`š7i@Ü»"0H˜$L&€| ܇éûû[eûýû÷óùœž0U«PŽ@©þüù3¸LÒ¾ã9ת¾¾¾T$°’ÏÏÏ”Åðh”ûý®:€Å=ŸÏÛí–r’‹¾€“J?‘%a0H˜V•tÑ÷ÇÇÇë¿Ç#øÏͼ½½Õ¯ÿþý›g67r½M}}K¶%'M˜ê眚¹Nà0 S+1šós¹±ŸÚø$TëDØäÌ©µÙ¦ˆàˆv¾Sð ñÉ)ÎJ™Sb24yµ¦ s£OÉ5'™š—u]Cs%)Ÿê»†©~òµØñ¯›¹Úf^Õ\UkÚ©yáydÉVÊe¾ ¶ñÏW¾¿¿ÿþý|>÷Ú¾¯¯¯ûýžiÙ-‘²È{`/¿~ýz¥þüÌv<E¢ 0M´T¶$ë€ü]óßÄçóùõõ¥ª SØçççívËö2&@”…/9¸¸† @ a0ìëz’8o·›Êº¾¿¿—1à a0¬jÄ5LõëÇã‘I¯­Êgc€"¥Î0UÙÒã­äißlIkKšaª³¥êŸÍî´S½póSÁ×} $®¶^¦ždŠ|JM“-p SpÚ©™ÄšÈ‘٬播.Ï90 ³îÃIJš“:Á žÁWÛ·IuÎt1·,!ß_ÉU3OéË7Oç™^”ï¾'LµÎë™^‘4ÃÔº*hË)œô流l]“n¶ Ø"ajæLͤ$øæ|é« þÏ/ã€e½Å‹ïïïß¿?ŸÏ£Çéá»@П?³F a0ü+¹?þç÷÷·ÊVI˜~ÿþ­Œ SL—{Ìä& €„ @ a0H˜$Lguð™×GóŸÝwêvß|½nýuÓ6`Ԓ;>,‡”/j­*}%)õÕWkË–óär€B¦i"ÙÀ.™ÓK.›4KlÙs½ Fn€„é?sÕÞM)ê!³ù§î’uÐZ¬/_‰,Ü·X÷usáÁ ˜¼d|F'˜OL›ÇŠ”@$w nm¼[u,ØEÊò´Ì5Lݶù§æ¸X¿n º)k.œ²†à´Íà´– nLdÉ`™¸‘ƒó7­xü«[,‘³{Á¸"a6Çx¹v9@Ž3L­GðÞn·Ü¨“†õ>¾ýèž8O>‚9Ó´0ƒ‰ï"<〥$6××µHf0vá:!˜võÌ̯f$J< š­îFf˜‚p‰í/ú®/cªÇõî;c3ƒÉ wÏOMÎKVýùÞ´57¯ ®çp×Y»t €ÃÉè>Lu¾5jáx–6¸ÂÉIÞ‚aNËÒ‹+Û9§QÕ §K˜‚?dKÉZ‚ Çß ®0}&ojÊ–OøxJ ?²Ù¦î¸rXÏ[Ê õ|>]e”'1Éñh €„ @ a0H˜Šu=aÌ___*ž<}~~jÌ«–ït¦î÷»Dnª›§%>Rcž\b`¼ÓQH˜àØÇ‚Óº¶Óf “K Ζ1èZç¯Ç5L& €„ `O.úàGÊOÐó¿CQ a _ñå>eDÁ±¦æ?GõNó…2…œµöâòvÛEú¢H)MXÿÌMjnL|%‹ÄÉ$º?Ïζ9Š"8ºé(æ”F‘å9e†©¹VGÔþ_ìÈñ‚j–ÒÆeÕ̲­¬£·ŸV¢i§˜ÙêJ@¹.ÛÎú2Ó¾‰¨Ä%?,~@Ù=«×Á7ƒ9Y;ldÛºNýN½|=lÄãœtï®öÒ?}Õúgp3º_´{‡Œ1¥iÅßÙåp¢¯ñ'¶óÍÞ\/}ì6­xƒ¯—éÛ_úZow 94†¦÷õʺg«‡­þ9¸d÷S}ëæ­)äàŽÖÜãû~V;lß¶MÛªô¾®õþ‚¥Ñ÷E9·¥HÓj½¹q³©†›iõ¾ï›;îDÝvÌ´&ìnû6†Åf˜ê͛赖ï¬l?ÝÒ·À„!<·Ý6Î䜩/Þ¾ðƒ)BpîjZ§ºÈ:×hNÓšÖfm©5/’^b}å?-´ôxwÙË"7¶Ñt¦cî5L3w‰ÉGx&–`æÑ<ªžÐóvwÛú¾“Då•a_¼ktz‡hNû–íüZ§“ÖÈ3‚¡¥ï;Û—Ì!ŽyòM˜–Mª¦Õ·i'Ø+EhMÅ_:—;4Ϲ—½ÃöÅ»F§wΜ>½l×H›V ƒ¡¥ï;»”LyIùëÞé;ñ”p¶ë&ì}][½@äÅî¯Á¨ï×-)Wv¤ã×-¤ç[Áë”Ô[¶¥‡’¾¿?3Ú„}g½’鶺e[Npmég¥vlÆïë•õ`¥NÛÓ×ÄûÈN”²£õî­s »ì° ƒÛ٪ȖGBë»xhB§wˆ¯UÚó#Ú8êæ× ¶ôv¾Ù›ÛŒã3¿:^˜é©ÂŽ»À[ÊwW÷E-f¨Þµ v÷ëׯWËuâª1ŸöžÅ3ÃovÓKõÅÓÖ³ÆH0a¯òüüüŒ?Z$ÿöVF™ì#Ë6ÈÅw·¥ !1Éñhंw|Ù~YüÛ'¯ó•g¼†£O–…Ý-C&àÔø¾+\cؘ³Î2æ]<'î$»ÛÆÞU!€„ @°¦“^Ãô|>ã¿¡ÐEP;ãm^ ‡Âz7yÕƒSÑE vn+ ‡Ectºˆe¸† `@ê “0Å8 œ™Sr& €„ @ a8®·ÏÏO¥Ðç•,ý܇é~¿ê¯_¿^Ñžá†R"©HE*R‘ vÁH¿¾¾^ÁþïÆ•ç¹‘·HE*R‘ŠT¤"ìX®a0ä“0}||ì¸ä‚!¿ô£a½¯Þ]&›‘gQÔï”TJ‘0BwßìÛ‹SV’ |t,¾ò ÚÃGÈ-pæúWݼ¾ý1R݇ØaÙÈÄ6¿^\/¤ÕÓãñèûgaa–ÝÌzoî„…•O_˜gÛ7µ¯´yuàôÍV§ÏlÞǃlKûÂû6…̃™ò.‡w݃›Qs`Á²æ›ƒ ¤”Øö…<ÊŒÄ;¸ñÝuâh>R2ƒUY@Ýjɇ8® ¶É±ýr¤­f[ÝN,}Ïͳí¥÷3‘×ÁHSºå¾ ئÐR‚ÖÑNâÀ±o—Y&”m¼®—L¯[Vyðu÷Åö™ãØ#ªxD­ Zëï ?^b;δÚì«âÁUåvßl}gyúªò(úÂìÖQkÉlç]š[l~‹4ûüç$;x89t53ûþÚO_ßÎ’C¶4­Þ3ì²æï¤Á Z|0½nÓ¥¿ŸóˆÒÝø”è‚ËÌ í©øºÁ¥Žƒ,Æ2|*á¡õ훫6¿ÇV,Á}0ýد[Jõ‹æQß¾mof·9ØNòiðÁv•~U@b ÛÄ;jdÜI»…0gg»üuû{‘%WÚÂHÑwêtmٌÖkå)± .“u3¿)f•KmpYC†muƒK‹.EL q§ëK&"í¼oŒÈ¡é.¸ cwöeÓ­OÉåyD;˜¢¦¼¿R›è¾¹^Ï•Kü«QÝÌÙysK¶ÈOØV#§¡Ù ±M82 Ž94ÝS²ì`ú¾åî—žrñ§:k,¿Ù(Õj7­iù¾dql€‘‹Üsî¼Îpl³{öçЗêÏÉÚǦ&]TÑ3§Ïwið)ç§Òs‘]n 2vd™¶I);ã"ƒéuÕ–ZŸ­¼„N!·Î|msÖi‘†ÛÝæ±CH7üàwåV8ƒ›,ø›SMygQ—ÿ^Î2ùðwã}óòß Õ[KŽºF$¥­n_}×0MÛsû‰ôT™Tz¼7ÕEGF¥î¯&·)Ö%Ì‘êN82¬Óù;i°/>˜¾}~~Þï÷âóõõU=)0‡HWÝÙ²ŠtÕØ3ôú6>²Í‘ðs«ÊxK›°on6‚Ìì èLr¨÷ÎûœÌæí_‘¥µŒ¹¥ç– Œ¨Èæqžf_|õÅ«²ï]§·×ž•Xò­*n [ñ7ÕÂI\'÷})=Hp‡4Bžv`ëŽ7Ý73’§UåIÎhlŸÆ© >yjM/W¼÷n+I쿺í£þ ÜˆEúÙ“wC‡>r­Ž¼O^}­4«RÞ„DTw†&‡òŸYà‰ ØHw×9tÊò¦+aÂð“~è’mƒ‡àNS`&ó.“¿º¹ß ^Çy¦æñÁ¨£ÿ¾–”² ˜^:ÃøÚ¼®±Û-äüC¹ vÎÖ{ˆ¬£vÀf=šFâ=¸{jô­ŸËö ~ÊÙÒØª˜í¯OH5žà›E6iàªl°²‚?ÊS†gpMiFÁ)Ê”eœ\ÈüHèГֽ5C¾yôHÓ«ïè‘YSé#îZop«‚³¦4Îî÷=76´ {e‘î^ï…í¿ñH=KN¤"©HE*R‘ ¶7RÏ’H"aðsJîv»)€®ê”ÜÏEßÎ.‹T¤"©HE*RÁ#­^8%0@Â0àÿïÃÔºORâcwçðÀ å¹'ÞA 3þ‚Á7 ¨åò"ÝÈäP÷)íëã”mŽê=FÅÞºÑö¿Yh߯´>už!é  x÷¹ö%Ik7÷±œP>Á;ÌîØI-ÛÍ%>¼¤~­ÈH#۟تóÜøxe[§c{ôØ[/vÉ–«Ï”Xïçé~'Îûä¶Xÿµù`êæÂÍ7[¯6·´ÈÜR4ƒòʤìüëîeì=·*óç©-Õ[¶FÊÖ˜S¯u×9Ý_JÖ\Æ09¡ÌäÁ{g>äp¬2yûÇÆ¾}YEN·Eˆ4¼ ÓަΘ0¥œô·Ôz>VnÄJýr‘Çs}ó<îîsôíŸßh4Oö™xOÝ÷æÑ 3²ýÁÇÚiú›e4àx`ƒŒWÐêt©@Z/vÉ–«oì_Or(~è¼}á¼Okˆõ_+Ý…›o6—1«´àÜR¦EtÐû_Ý´&}Ðí7 ½·Ly4jkØŠ¿©Nâ:¹ïNI9M&-8¸žªôúžâyÄœv ë-Ái›üš¤ïʹ¬"OŽ,x%À¨©5µ¢„©õ,•Áê>á¹5%»ÁåP”Ñɦ¤AetO£6\ÒRÞ±S$Võ•ý(®îCsh½ñö–ØC0.aºŒ¿˜ eyÓ•$v7ƒùЩz¥ã¦†ññé$‡L‘&]ü¹õlæœ6íËne\û’îÁ~­Õ v)ë„Vk)¬œ¤Ù§W_þr½Í2) ±f·ª›÷àÎ?ªÑ·.èîË®ô5ÄO³U ë¤FŒ;ô`Ó­¾Â*zðdv,‘¿¦ÿÇ?®ÌÏàšÒ/§(»ç­ƒbw™æIniûüÁéÐ%™¾ýG4Øìã{VI{GIA«²u è!ê4¸U“é~pÇH'„ÿìà xôñˆ xC x¤?ß½ßïgÈ-<ÏH¤"©HE*RÁŽ´zø®G£ 0 ø9%w»Ý@WuJîç¢og—E*R‘ŠT¤"©`ƒ‘V/œ’ aðŸgÉ5ÿ0öQÏc¹SJ¥<…ûè%™øÌR#Móè ¸u‡ÛCDÚ×+nv†ûé„–6xË¥Ö’;>þ%Rà—ä'óœçŽÊêýÔol¦>a2ØÐvÆ„iì$PßSxš³²3Æ8Éøš>=‹õÞ’öŽø¹×ƒ>0}³3\'|ûà×}fhuºÈzâbgL˜&\Ô2z™' ¥»‰(){.¸LŽžFD¢8É1úᢵÇÇŽëtÎ÷ö=~Õ@Æ5q¹”“¾ƒŒ\Æ Á$;ýÚ‘òæ$ «¾Âª¬˜\vÁ´£˜3éÁÙ)£ïK퇭ô|ð—#²%.ý¿¥ª\B?ä.>[:z¤éÕwÜHÏ-ºŽÝø”ƒÿÈÊM>Äð5LUK ÎR¦ÌÙ—ižç–¹Ïœ]ŒéÛôHƒm>¾[•´k”i°*ãéÈ7¿æå§£¶¹ûÁë4ÚRm5‡H/œótJñÖŒôçá»÷ûý ¹…ç‰T¤"©HE*ر‘Vßõh€&€?§än·›‚èªNÉý\ôíì²HE*R‘ŠT¤"l0Òê…Sr$Lþw¦¾û¶þ¿µWäYQî´4Mʃ¸~{ŒøSZA•×–F…èÖyTeÎÕ:­‚ºåY§)[Œ%Ý^ÏYﻃ`_h­ñ넇×{ÁÒ̹¶˜àSš——$-Û ô½¬ƒŽ©ñƒ_J¼î¨ð h½ñÞ¹˜ Þ :Ã:MÙª”»Z·Jf—S†­àÂ'¼Iw¼p î”æÎû¨cÄ“<÷”½º¹ô¦¨LŽÛ g4*¯~3¬Ç9›96«´î{SO~®a:RÇtæy;–´ÞàxSXÍÆÏmkpÏÍä“Q›ÖäL«~Xëq^‘7åL'q]isVŽÉWñÏ- †|§¤ð~î¸È„ö<»±{,²£uºqëÿ ¼™ÇiF: Ób]?K Ÿð¤FÙQG_Ûà:³õFåWAÓÚg†‘¦_Ë2*ºSÃÁ¦5v3ú’-C×õ𝿵H޼깰4©Æ3´Þ™Kª œë±¹Ø!zþxDÁdË4ïé¹ö`#s…ø‚}t¥¹—ß”-•1 ¾yôÖÛ÷£¹Ì›ô™{°£t8‹ÔѨ_ã¦ür"]Sv›ù'ƒûî{ÁüNíЗû4¯x¨C8Ï5LÁH‹ ÿ A¥WÐàŒE†áO$%çhžÇ??&€ƒ¹ßï a3Ïçóv»ùQ6&€CŽâ a___2TÍ5L& €„ `O.ú¦)?÷“f$Lœ]ü8~Ò €„ þ—õý©û“æ×GúúÓ?2aåÅHŒ=¾Ø´¢®^WV*üæW,û-­5-œQÅž¾ý¯åÏÙŒ¡Ë5Lœbüf3온u“§5¾bñoi–ÛÚe˜¸ýöh2ÃÄÙ³¥zl£G¦+º³Ý×Ám莂Ýoï.ß÷Nëu_ cà .9¡pâÛ“XDéß»}–ÖüÆÖ†7;X¹£Úpâ¬Râ·TÛSÏ!C¸4&™6˜Àƒœ™a¢´ ©ÙÑ–š£Â„éŠà _Oð#Á9†ô- o‘0ûæKšKÎ)œøö¤oCú÷®}>´ÙÆCè› JoT‰…3ç[‚_ÔœîJÌ0Á!ç–ÒGÍøøØ‰‡±ÃIä#V•þ×Èà×J×™†‰,0¸ +Õûäjj~Qß M•dDÒâÄÒ[ªp¦}Qâ`† ÊÏ–6ØžlGšÉeµ`Pcçw,ÌÖÌß„é̱Û?­‚&”Râ™S'ã8-3L”)«n=Û1fθTP ÎnVÔ­é–Q!¬ôÃÌ™å [‚Af˜-M?Xï»Nh‘õ¤s‹¬jñÂY*—õ½koOúÊ#¿Xd;/Š—¡$Lœ7UZdh^ï|é¿ô§{¡Oß›éëIÙ’ÈS~•Ö·òE gfQGbYö{gnjdÃ,·ôÂõ-Ý¿¿(ø“L—1qZo/(À×××ççgü)÷û=·;}73žùI€ ƒ±m&Ã&¡À![®a¢¯lév»ÅŸŽ’¡i7æ@ÂôÈuÁ$I¾°×0H˜$L«r pRÏç3þËJ€šÛ 'u»ÝÂöIªBà Ì0o€®a0H˜$L{ú?”>£3Ø% IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/view_results_tree_regex.png0000644000175000017500000020741112032647206026026 0ustar ebourgebourg‰PNG  IHDRZƒŒ†ìšsBITÛáOàtEXtSoftwareShutterc‚Ð IDATxÚì½\W¾ÿÿÎ|¤?ìÚ^o[[0 ·PìåÞšm¶°[A,K)Ÿb¶Û›­š»[×Ë lu-».ùì·¿ŒuKý`¯B³]w?›Õ»©õFZŠEÀ­´Q‰±-WºP 1Ôíª¬ÊäÌ÷I&“df2 ¼Ÿ&3çç{&g^9ç}Α ‚ ‚ 2S¡Ð‚ ‚ (AA”ƒ‚ ‚ ÊAAAdF1‹ûÁ\œeè r·Ù”&ó G·V¬,«#É…üÏø·²Y yÛnL“É&´p4ݺsÅ–:Ê_³&w«ã&Ç@L"X_¡J1’; †EAañ%ªå)PÛb gm©€”媸(P*mVEëuÉš¦[+²²²²*ZiŸAA¦>½ƒ±ªåÉUííµ-­•Ü*šnm©ÉËU±2YÜ¦ÆÆM“XD¿3‡¹Xk耀BNd²4Ö€ïzDA ß!ËXÕò ¨:ÿþAkKEAÊrU,O÷M;ÌÅYÙ/ee›ž3­ÙÙÙ­žÞëR;ÛbWis ñ;)R†Ö ïÕììl6GÞÞ>¡.@vœ—¢êÊV®ôËH(‹0à€±7¯ • AA„_Êdq«´y0^ÌŒçiWŽÓtëÎk Þt(ªnËŠFÿÉdq ‹€¢:z/ø$åMÿBoEÁ¢écÐýu) ó¥•ÑFeu>5¥: kV쌔Hš¸,Zv®XYV'ÝàR ‚ ‚p™åB™žKjk9C±ž‘âÜt%O|ëÎ-uÅÛA;Ì%kªªö[Õ›Ò@™žuuµ-ÖMiiLR@;Ôkm© òx“標²•>’ˆä e^m¬ zۀψ3ÝZ±bKÈÆ’ÉÒ6Ýû4±,ü*^[ë?ŽÜZÄàAï‚ ‚ ˆ˜”ÉÒÒó ®®®Åº1ÌHqnz_× #ï: Úlƒñúö1ú²«×A+cû{» ¥pÛòæ-ͽý Œuôv!¹¢j0AË „ù )@ux5eî¶#›Ò6562Ñ#bF±,†ä {7:qŠVÖüŽ ‚ ‚peBà)eºw¼˜¦µ¾d›ŸÐÞ{ ßÒÜ‹” ‹ ½ÙÒÏôÛq‡}TQî¶#GŽ “ ¡¨ŽªýV‰ÙËdq«Ê6$sÜ ëÊVfgg›‘2â„e±(!QAA&–YÀ§sImm­Ñü¤rXšÛGŠ=r-yÃÞ]ê8™TR-O©jïêíïïmn‡—–žÕÑléï·4wPä¥ój6dÕ¶ƒÜY´tkw6klÂ"Šêh~óÍævw/£2=Ú›ß|³¹ƒ¢Bîóþ´ 4ÝZÁ™ÚÌ$ÀéÉ›ŸUg<ØïQT­;×TuPâûµtõösE˜x#he%ÞAA–Y¼g™ùíÍo¾ íâS=”·çÖn©ë0hW|¯är“Ë%µuï½G eù|VƒÕ¾÷†ã ÓÝhèèèê퇴8ieh÷¿æõ†t§æãl'¦7AwfÌšˆÊ YD’ ••tGAAXÍ" :Òs ¡:Þ{¯#ˆbcUÞ–ëÓF’ ÷ú̇ŸÀ¬\àîáî8È Ó÷ÖÞla:ÀÄË “¥m<º·0Ù÷jî¶FÏ4Û8õnca²÷I.4nËèÛc×âñ3‚x$¨Á¥ÝAAº@+ ‚ ‚ÌX(4‚ ‚ ÊAAAå ‚ ‚ ‚rAAA9ˆ ‚ ‚ DAAP"‚ ‚ (AAi‹Ï&uõõõhAAiŒF£”ƒL4‚ ‚ È´Äd2žœxÊO0F ¯î9€·AA$lž]÷ïùYS¨úÒõx#AAÂ`pppîܹ¼—p* ‚ ‚ ÈôGd å ‚ ‚ ÈŒåàdbÑ+ô4‚ ‚ Q.iºµ"++;;;«Øì iöLVVE+M_ßâòª)‹^±öO5RZ½B¡ô ˜(õ’.ô)Ò AA‡ØTªÃ°ßºjSZWm6˜´*œsÊn2˜Õ?±å«~©LvYu*V‰iM5FŸ '•ÎfÓ¹KÓ”ió” AA$’œœLj|=‚sq¶¿NÄl*ZiÞèÅfsRJ¤¶êÛ¹gìÇë¡T«òío³èÝÝi ­ÉÎhF­ûì&­‚sì9Pb™ê¶î>ÁdÝgÙN;O ü:ÿ|>Ò`Ñ+Šª©ên'O"A±èz“IËí,ä/¡ðyAAßÁEZmÕaØoõ¿@ÓËçËGŽ444Ù–KuÖìô ”»íÈca2!ÜcVY:ÌÅZCGr¡±¡¡ÁX˜ÜaвŠ0(rMaR¹‘«´ŒåI…¾wv“¶*­V«Õj­É©Ï×[ä9à–u}Ýg©³ì1ädˆõüYšÌ©‰ñ‚É€E_Ô¹ùmæ´5³)¸–“Jg«, »¬V›»«/äD<˜Ë» ­žtJ(xAA‚L%QnÜ–Kjûý,Ný3uœL LÏ%j[Ø.=BrÓ•± ‹|¡½÷#%›Û I^®Š€ØUÚ\BÚ›-š–ÉÒ65666nJcRæG•©6<=\v“Á¬Îô<õtzä£ÚÜd/L27YWPPÀ'- TƒæÖEÏè)æO¼ý‡*]Ø#¹á%¢®ô†*¡HÉAA‚-C­|rCÊšªýÖíÜ“´Ã\²¦ªƒòHIŠ"=Ç ½í@QíJ½½÷@œ´ø*m©AwÜ®ÑÈ¡£÷ÓN}ÝmmÕ+wx>(Èdd¤¡ÇÐdVgÚ2AÑdÑÅ÷tª3u<Ëã;h7ióN%œ,¨t¶J½B¡¤((ðz†DD*¡ÐyAA rP§ÖæUm1SX-H·î\SÕ)Œ»Ôq2šnݹbKm9ÎOHÒž»ýèFÑ^@aäšÂ$…Ѣѱ<©Ðæß»Ÿ˜ªÞe TªÌ$ÃqS’Y©¨‹šL‰I™FñœŒ•z…ÞbÓ©“ïT»I›ÏOŽ3¡Š”AADºƒÊ'7¤´·{û}é?h¬£BX¼P&‹S-O¡¨:vš¦[+²*ZiZúr6*mi§aëVC';ÊÕp9E÷8‹Þý!>vì¨f\ãS«wì·[ XV™î±U¡dÙäý˜wDÖ¢/2É…7‘e²@  ‚ ‚ Rö,f:ËêX=—¶q5UÞÑÞ‰Sï>’P±²L›m ÄÝSš†òŒ(/‡Ò¾i r±Æ¤U*K˜»¬:O¤ûÊÝSG¸ÇAõ`³¸ ²*]¦Þ{²ÒªbŠ /Õæ»ïÛ\ª†îAkx\©$¤ Ò¦Sñ'ºª¸ÀyAA °êëë5Íàà`ôÕ=ô¥ëñ†!‚ ‚„®ü }éz“É(öp“:AA ÊAAAͬ)TÖÁÁÁW÷À{† ‚ 2åà³ëž˜;w.º"‚ ‚ÌP9Ñ9ÇAAdJƒ¾ƒ‚ ‚ (AA”ƒ‚ ‚ ÊAAAdf1k†×îܹø ‚ 2“ÁÞAAA”ƒ‚ ‚ ÈLEp°˜¦KÖ:Üz‘ÜíG7¦ÉdÑY šnݹbK-äEs!AA¦Œ TW­h,AA™"­;·ÔQTÞ6oO[Ú¦MìU‡¹Xkè`Ž“ »Õq¬‚¬£øGŸs·Ù”&“&¤,IÞ°wתX+sž‚º²•ulG&í0—¬©ê (6¤:N†ýˆ‚ ‚ \x”M·¶Ô!¹éJžŒPK.4644 “; Úb³ÃOÕ1&Â=®5tдÄ0A³`.1¦@{Õ¶ƒý Üxt{.!„än;r¤±qSšLFÓ­;×TµCJ¡ñHCCÃÑ£e°mg+§ ‚ ‚ „:•„¦–ævB’—«b Vµ<™öf +õÜ"26a‘ï1´÷^ð$"Æ?‹UÚÜ€,´«bxRæcQB,€L§Þ½)M&“ÉÒ6562’o?‚ ‚ H¨ë^èm÷j,Fµ·÷^ˆX‘.ô¶Eu´+ nÉJAèYÈdiOnH©3Ô•­¬cÎp£AAA9(“¥¥çA]]]‹ucZšßÅù )í]½ýÐßÛ) ó#Y¤ù )@Úy&2‡:Ò§ÞÝ  [+V–ÕÕnÙ™Žþ‚‚ ‚ ¾ð+7nÏ%¤vK‰Ùá–`­­4-“Å©–§PTG³¥ú-Í•²\9åÉ¢Îx°ß£[+²*Buû£éÖŠb³{ˆy~B2!Œl¥éÖŠ¬¬¬ÐDA™–ÌÐdiîM(YÃŽØ’»}#@œz÷¶Þ¬2ƒ6ÛÀ™öAâÔ»$T¬,sgá)L‹ˆHïа'|ÚÆ²Þ’+Ü3‹!eCÙª8ÑDAAf ²öC}}½F£œ9õÇ=‹A™9˜L¦@±‡›Ô!‚ ‚ÌhP"‚ ‚Ìhü}M&AAdæàã;ˆŽt‚ ‚ Ó?ßÁY"×AAiú"‚ ‚ DAAP"‚ ‚ (AA”ƒ‚ ‚ ÊAAAå` éÖŠ¬¬¬¬ŠVšŽZ+\ßBÒ­ÙÙÙÙÙÙYY§È)¶$SÂtA È­ÝDWdXAA¢TÒ´Ã\œ••UlvÐï~ÎEzÆJð«FÓ­;·Ô’\h<ÒØ¸)M&‹ˆ*ò»Lñ²9LÎ]˜ˆÚEC^‚ 2ãä L—°(ª£ÙÒ`m©£(Šªk±ô[š;( %Äñ½€e²´MøzÆ¢„؈™ËÚR›²\x;ÉÝväHCCÑm¹U·¥ä c’t¹»vSÎ’‚ 2˜%1œ2=êêÚ{/ÄY[jIò£Â¡Ú릴´ ½íT^º˜š[ê(ŠÕ/7<ôAö/k!9¨£( êÊVÖ’»ýèFæUí0k L”äBãnuœ_îÉ2q…"ÒsÉšªŠB’7ìÝ¥Ž“1‰ÔB—ûQÉ͈¯¼ /ÔªFdÍÅ-KPCM;z»`Qz¬øíÌ%µµÌí –2÷I.Ü»k+4[+²Êê<¿(( H©ÄûèwÓýÈÝvdSšlB-‰ ‚ 3ɾƒó’ Ú–VÚÑÛ°(#c@mK+ÝÚR „$'Ì÷ ž\hlhhàöÍÈdinÏ%„é£b/1/f&¼±0¹Ã -6;„JÁMV("M·î\SÕ)…Æ# G–Á¶Fy 4Á°«&‘©†ê·4·3â\kKEAŠû¦‰¤LÓËçËlŸb‡aÍN+[ž²:Š%јÒï#Wù1&Â=®5útmNˆ%AdfÀÓ;xêókìñÒ7»b´CW¯ÕÒÜyZ¥ò ¶«×šÐà7HH®v•¤ÑAšvXšÛ IY®Š€ØUÚܪ-µÍǪU¼cl²"=³ƒ†qêÝ›`Üã¢þ †V5ÕòäªövªEÐPý–æö<-¯¢¨º²•u¬ ót‰¥,“Å©¦vÇgúk[Z7*•ÐÏS;iu»+Åz§+ a@;÷˜ÓµYKrŸA™fx¥¸ä *“¥¥çA]]‡¡¬ƒ@žV éyPk(늂Üôp=´.ô¶Eu´+ Í’ÞôÂeiOnH©3x¥ßÀb¨ÈÂLðBo;G(ÇŽKÄH7Ô…Þö¿®ZŽcg[+²Ê Úb`¡XÊÜQr÷%"\»pëÅk¥ ó6 bIÞï ‚ ‚L„º¿†îSSšv,YÓ«=:GIAA¦+BošfúH{Yœzw#ÚAA Ð‚ ‚ (AA”ƒ‚ ‚ ÈÌ}ݼºç‰Nž]÷>ÌQeaAð=Íš5”ƒ^ô¥ëÑH´1888wîÜÁÁÁbýÇŸBÓIä7ÿï¿Ðå`›6ÑÍÊA‰öŸÅaüP‰ù_è‚ ÈôÛ´‰å ‚`Ó‰ ‚mÊAA¦YÓ9 —"GÛ4å ‚à/iAlÓ”ƒ‚M'‚L]$N)ŠsçqÕ°M›)r¦[w®ØR yÛnT‚•=N“a_.‚DGÓ9 ›Î©·i £9gô(©E ?ýññÿùÛ½SôŽOãªMÏ6Í¢W–T!»m™ÍŠ"3¨+m:Õ´—ƒÌ·ºŽòÞBr·ݨÄA¢›1' ñnùõ²’w|¾ì¿vò—ÎÈßx¡«èÖŠÆ„?þgü[Ù¿ôiTs·5nJ‹V;8–¬1t¸KK’ ÷îZ7éÄ-7Í ãö¾¹¢°Ã"ÔªñÜ”h­ÚuoÓ<æê{ëé‚ç¨ñ7k4mùu‘™@êÏþþI¹Œ³4ÐÎ1ר´°ðg‘ïiKÛÔØ¸Ém |ó"Hô5®På qò¿w|¸e™LFŸxù;›ß~æG ÷ÿöÉùØë ¬-µ)Ë÷ÆÉ.pUÚa.Y³%«Ö­;e2oÓzýµ Ã\²¦ªÝ£‰µfE󆽻Ôq“úH|㦘0bM FÕ¬;×Tµ§0w¦Köc›&"àÊ¿õL 0ÍœüõËN SÀ7çßMÆ\2€e›-§6¡Ç`:(¡ñûã0k Ìqr¡q·:NàçZ2·YáÆbƒÆâ’»íȦ4™H¦‚rPò—š&Ì/]“ÉhåwrIuíÙî¹Nþߌì×ü_ÿÅR™ìÂukwcNÞ[òVår /ì/~²âÜ}›ö¾'ÿoÆÆZxü×Ç‘~o÷Ù.Þÿ[õ|ìZŽÕQ,^xçRÒ†·ê›>8rìK\ðù›O¯ÝuŽ9óû )çw}ÿ'oÚÇœôؼ‡¾³àìgŸ{¡¨š÷-ô˜³ï³³‹W(çÑ£c–OVœƒûþcoK}Ó‡›Ÿw½ðëÇȘ“Lv"ÿ"ÕÄ9ÌÅeu{É'Z¿¥¹=/×ÏF™žKÔ¶´úµÐtëÎ5UíRh<ÒÐÐpôhlÛÉ ÃfDÕ•ñ¶x¼íª,N­ÍŠª3ìgÊÕAQ)ËU~Z‘„äú”™¯¨¼MºGì®’’WP® ;ÅÿBýv0enlÜÄ*Qî‰o±ÆÆMJ¦«NøMPÕ(ª®låʬ¬ éy9ÌÅ+ËêH†††††ô–­4-t’·úB¤ÈƒjR‘mÓFÇ,ï×!ù*ÏU‘¦†Ûܽ·÷§÷Âÿì~a¯siIsÅw !$ÿ¥Æ¦ä¶™Ÿ¿ùô/k)6Aà\òiZ}?†Ð´Nd³&U2O^vvvvv¶øóGÓKs;!ÉËU±»J›KH{³…m ÉÕ®ŠˆMXí½Ì/e™,Ný3µ»hqÜMRlÂ"ßc&zÐLdfö†úç ¨š_e¥çd>ôÝ-5$ù§{þó{wš¹DÈc?xün&䨳÷ÃÆ³„¤|{ÙÝc.rDzì{9ߨÒët9Ill"|ú¹œ|ÿm’œ—L½o³þHŒgøfì]dÌEœ$6oWéý„öOöñ­ô$Fu¤ÿ…Ò7ãÛÚ¨–'{ZÞK~j0¬KŸ~ 6Þ2øÅjW•OnðDñ)s5é^)3,ÎdbšiÄ)þÒ›Ë[æÀZˆÞb¡èB÷H’ ±jL­_ƒv°•Úð¤[ݧmÚ¤„~‘“ÂïS¡ÊúŸ—ðjÍnáµi´+à¼H æßÜÝ¿Î}ÖË— û‘7A6¤P¬àMë8ÚÀ0¾Îáø ­ ½í@QíJƒçeñƆÛoìŽB]3Åcd&ËÁ¡h@HÞs‡Ÿ]"“ÑŽ¿ø÷늉áµïÝîqd—Ç熦ûzÚ`Qì<2æ’Ñóä :Ú»û\ä™,U•OÕÕöôžè©…¤Ÿü þrøõ?·ªàSŠZ©Js€¥ÿdñ‘ß¼ûüÊw™ÜW¼tlCšŒI–¢Ú÷h¿½Çû]v'v½ÐÛî}1¨ÝÝÄñ]âDKI˜ÏŸdoßi™,íÉ )u†º²•þcyÜW©o¤µ«±ªå)U†ý¡« %l5(Hä5Ö‚PÞ\oq¨÷hBª&KÛÔа 8ã¼íUû[W‰Oñô­T°“üïSÊ !ä¤&¢Mã6\œK‚-Øí¾ÍO"b—ø ‹¿i½^m`dלŸ¤ÇWä{Èöo0z=cj#‘)‚ÌXœ®ÐzÇi<¾ƒ´Sô¼„€ÎóŸõ¹èÛÁçÐôüù÷œÿK¯NÚÑûÜ»ðN&î’og’šÏöþþSXüCeìíý‹þòÁq äÑ´%´ÓpG¾á­|útù“ÿß¡#ºò´ºgï‡ùóïrþQ]ݳK¸ßeÎhñÔžŸÐÞÕÛiq%çzÌ%‘GÓ­-µ)Ë÷Æ ½©;( rÓÓd2¿v2N½»A ì‹¿vËÎt¯»6o$µ«2YÜ*mž¡¬®Î`Š‚E £·2YZzÔÕÕµX7¦±~‰Ö–:¢ j yÿm–œ€[Ìï=’þ&OÕdi›ŽI—öºô­T°“BïS¡Ê <¨á$Á6 `iÚwáèáÚZ7§>à÷ínÁ|›;Ÿ†Qì“ ç“`ðXüMëõj#é;(“Å©–§°ž"L“TŠô4 Í™¸LdÚÉAêíùêtç…žH^0/𒋸Hìý‹)êüñv§‹8Ní¢¨of,»ƒÐNq¥2º:Ï$Þ58ÿ5# Î599©„vºÈ˜óÄëߺàt9]ÄyׂDB˜Œ<ÉÚ_mg2sžxý»¯X®1ç‰×¿ûíï}÷«Óå9/ø1Ô¿Ð[›Žf‹¿3œ_CÄ\bUT­@¯ó.$$w{@çM·V›Ý#kó’ áŠÞ2„Ю*Ÿ,LvW\À¥”·çR»ÅíÔEÓ­;·Ôò5|yÑtkEV–Dï·‰ ãóöeˆÜ#‰½ø!UÍÿíÆ¨U·Âü„÷ï¿;ÎVªj¿Û)ßa6[!Vø$ÏûT¨²BçE^ÍáÙ-Œ¯ö?oxe9!GÿÏOjìî–ÁúÚ+V§K¼ók.ùµ]L‚ž±qÉÐÕw8]ÄQýû&ï%¡¦•§ œ¸fm‚z!N½ûHBÅÊ2m¶Á§»^ä+/“¥mÜ»¡kM•·K9B™¢&@f,îv&„ÞAšPTÝ+ÿ»ÎóstñêM«î ÁåÝBh—ç[uÇc•Ïö.õwk[D¯ IDAT~ð;€Äýñ…ÇâØLÿùÁ<8Rd¤Ò@ íG ¹–?¨ôHûá¦Þç[ÞÍÌ+ädtÇc•œ¿cí‹îd Éýù;?K (-ú1b¿•)ï`۪ĩwoëÍ*3¸[îdI¿KÀí(\”ÎÕ>) Ì –ÉÒ6–õ–¬Xáž} )ʘõÜ:<‘Ümk)ˆ·«Ì«ÚÐÑá?YÄ/…£{JÖx‹Ê7Y¢ÀÏKœð‹oŸÄÌEn±Ä{4ÁU«eëå¾)•îŽØ² ÍwÜó–,Ë®óTJ&±“ïS¡Ê !.ä¤"Ù¦¹›šwöÅþ|õ¾ÿÈÚçy~þÚ%lÁÄÚkvüôvj^:gõ#HLÚtØ:/yÔI;ÇÈèÈØ•»/myͼýuHå“Jg³é•“ßIK3¨wYÝí&m¾ÖTcÔÈýSõ†‹^Á™ˆ÷¢DA _wÕ‚pìÔо祤ÛãpÎ釘Ñ12rmøòåË_­NýiþJù±“ç&­nrM¡º­»O<*“Æ¢W(•J¥R©ÐšìÞ@v“Ö}^k2éz‹;,sÀFõ~äOÇ¢WzÐ[ÀÓOY]¢T*|’B$ÁN+A-ˆ ‚ ã!xï £׫u/;vjhõ#ÁÓ­?ùÉ‚´k£ÎÑQråïW¾¼è¸qÖÍ·Ý ÏýÖüð²Å“S7»É`NÍÑŠ²4™SµÑW•6«Š9Î×/dºí&]yR¥Í¨r+8PgÉ—7‹¾¨ss•釴èõ•Ng«,—ñô ÒôÉÿzâ玿!Ø|ŸL^a&!Áñ$ˤö<6ž"!‚ 3Wrø#‡ß™Gîã~<ñÉç7ÄÙ¯Œ\%ôððÈÐ×—.®ÏxŽŸ}wö7-¬É^›ÿ _ÂæeµÏ› 2C.7B *m¼£Àœ0÷möŒÛ×C©Þ-ÌäšBµ¢É¢S©|Ï«´¥©ænq5(´u÷ÈT:>|ãGÈwPb¿ +­è3¯¿|hwÙ¶©çC-Sr‘É–­þï?¯F%‡ ‚Dƒ|xéœc§†Øùƒ/ã'þiøèô¾ F¾qÏÜ%õ=û¾ºøå܇ïüòkÇÉŽúŒ›]ýç}rãÒÀø†^#¿DÄÃØMÚ|£E£S@_w[[õãÊþb´¯»-)“•ò…I .…ÒQél•z…BIQP ¡”ˆ¤Ï/ãþ y÷ƒO{¾˜=ô“Œç™‹ Ú}¿xt>ö¬á;UMþ½€¼=Þ4}¡©ì»(Õ/›V/q‹N²¨èy}|Ã÷}»3·¿^¸,¤" •þâ¿_)ÞÕKQ@ȽßÛ]•y×)¦£‘‚CUOâjVÞDü:&#¨qAè$¸ïàêGxxéV JbzïÌœj»4Ôÿ-yî¿Æfõ|¾Ø'e|—>ó*ãkH5mÙ·Œ+κ¾¸÷ÝíIÇ3T-ÁÀ¼G_¯|Ôoñˇ>ÐïXÂïÚ(RM|¬AfTd“»4è¼üÕÈÐ×£ÃWœ4À¬›fÝü7¼y´êäÙFzŒ8‡œ##ãÃc11sÐúÈxˆ ï L¶lÉ  º*|2ÙüÔôÅu¨¶Îá‘G'÷¹G~}.}yº±— ò ¢=.ƒöï[µˆq"t«-Š:o=íMgaºJâ¤f‘ÒôÉ}¿üo÷€oìÂB„T¦H"øh!‚Ì4¤ö>ñXRÐ ÅPþô³‹i¢]4MírºFcÈXŒË9F»\@ÀE\„&Äåù¢«­Œ‡ÈÌ)ö°xÙcÐt胷Ì+ïWÏ{ôõÝq¯¿¼ºÈà;<ïÑ×7ô}§Êè¾äÿëŠòŽÒòhÑ[ÿvQ÷ó`ñ÷vo¾O&[üL‰µx×î²…Ïëã™0½žtHævîäå —pÙSÏô½òÄÃî™Å°ø{Ï0Kçx‘ÙÀB‰  D™iÈØŒc¾¾t}`¸Ã9¤ÈA^ÆAXtåo0'×Yë;ȪÃÉÙ$ì§ÓR‚¿ý¯ÓåÅÿŠ'‚ È"Ð힊æâ¾Õdý]ã¡ß×b?""Èøç‡*÷N2Ç_ÖýÁBQ°"×aAA¦4Ñ+O~zkÂÅ„”±Û9Þ¬?#Öoûàh ‹4ÝêÉu%#“-{jÙqf)™ŒçÃX>AAPJÅ1Ü3Ûå"Îft]±EBÇ„+kì&­Ödç÷M¬BšNR2xlîwz’û½Špɳ•o53áiAf:\ÞA‰fEg±L‡­ó’G´sŒŒŽŒ]¹;ñÒ–×ÌÛŸQ_5r¼rôrÎq<È%¬hƒDÒþñ hó»¸î`éu/ûñS õ&Öæ‚ Hôs×M³D¢Qö8œsú!ftŒŒ^¾ü÷¿µú_~vú¦OŽ<÷ð²Å‚±LÚ’g€ûJkŒ¹E¯(ª¦¨je5!»m™Íœ•6 ,zESbiç&Ö}›kŒ9¿iK*”û[ôЦL›wããg™-bùV“¶›´ùåm©¥5Fœ?°·$.׃É><áSN Y†©£`𽢤šY[ûm6x€yý ¦`—'oÁ<¹{ËsßæÍIåݬyY›óÞ÷ÀùÅ{~õ0s0ÑSI®µA)®œg·Ýh”ƒõ'?YvmÔ9:J®üýÊÀ—7κù¶[á¹ßš…å ¹¼»ÒfõH )èÑÙ*Á+Úà[¾ýby"ùI=èënSgªY©cH¬±Yå…¥·øä`Ñ+Kª *mF•x`Nùý , š²oùÃÛMÚ"p‡·›LШÌ+÷¬Í×/äÃl‹^¡5±¢‘[e°›tåI^3:„lî†íôóD8™ µA¦“ä;xø#‡ÐŸ_ÈŸ|~CœýÊÈ×ׯ®\ýÛ×—¾XŸñ<?ûîìoûcÍ Ô•¬QeªÛºû$•+µT뎥ҖBýq{`K“™U#ÜcOf:›·OL®)T{÷1ftMçæ·­ž¢‰æ”ßÑ,‚‡á­£Pxûñz`ÃË5•˜yýóÌ'Œ¯‘¹Uö–Êk_®—ï ‚ ‚L3&©wPúºƒ ^øÀÔÈ7î™»¤¾gßW¿œûð_~í8ÙQÿq³«ÿ¼omþƒ‘+WÒBvtS¾0©­©@¥É¬ÎÔsI›_~Ö³;O·–¹¤„J-}ÛgU0°(Rb †á­£Pø¾î¶¤L¹Dëõu·µU?®ÜáùÌW0ß¹æÙšßæ„ö,®1›ð» ‚ ,úÒõ"ã9Ñ5XlzïÌœj»4t9{ñ3wßšp{LÜЕKpâ\#¡Á9⚓ئ£A·>;BvöØAåv ìéLMÔúª-úüúœ›Qîù¨hò\Rï²f6)òµÀŠAJ,‘0¼u Ÿ˜Ê „øÄTõ.£N$LP#óÈ ®"½7 ‚ ‚L?‚¾%£K¶|V_úůÿöu­õ?øÖ&ù‹à€wŽïuÞ@_»êйÉõ¾¥2rr°­ÜhÑèT`1–CNܣܮ{–&3+_¸Ç‚­Èìuz•ÎV©÷Q„"%Á‰åçb(”2o…ÂË3r ßÞn2õyÇ‹‘gätr-z=èÜst<óIP¨ÁÚ@ÔæB¾ƒÜ_BØ ‚ Óv›.‰Ù•z§€|þC –~|Õ5:Lîí>eû`CÞ‹÷ß»ìÌùý³ßrûc´“¾e^ïºçöîya„$UÚRÃãJ¥gîªßGP—&”Ê •¶ÅfïéLÍÑÊ޹Yè*›”žÓû6—ª=£œ~ŠPQ_ZcÔ Ì_l ±DÂðÖQ0¼\c¬Ô+”JÏÌbQûÊ5Æ“–I vYu|aØyÌ—¯»<6wƒý‚‚ ÈL&ÐWŠ)/Ê(Ú³xëÁ²øú±rõò襋#_Ù¯\¸ºzeq·ãü™ÏŽÝ8{EÉÈ(!NÒg‹9Ý8þ¥Î{×X5hÒê@Ïôëq¥Ä¦J9y ¿Õ˜Ñâks]y[Ð=‹/'ýø©ßAìD›YdZÂôJ”ƒ¯î9À¼ßÁ³)0níJriÐyù«‘¡¯G‡¯8i€Y7ͺùnxóhÕɳôq9GF†G‡ÇbbæLJ‰ä#«E¸Çn¸x|#Ú¤š<;¿XŒå“`s¡ßFã˜_ÌÝÆ¢W(”ÃXôìUÿkv“ÖWoñOŠaÉ’-z­o¢½Â½Ã o¾þ‰ð‰g‹^¡ÿ¯ ÏyÿT¼çÄ·Ã)'O,ê=ûQïÙ6ûù³:Û¿èêŽ\cÞwP¥³Ù¤6Ø×[cé¦Î†\c´Z­V«•ϸ*Í‘~A»I+©7B¥³U&•-ì›1©’-–JçÉkd•NØàrM!Ïb,O* ¬§\S(yÕÌ0%oiN½ÑÂyå'©ÕáܬÐË)mAÐì)ø:nó¬®ä>–gä€Çðöãõg©³žå/™žh¹ÿ7…STáòðd$þAˆOÝu½Ñ}Qg©¾0IXó”ê™çW®Ñ ,ÚbOžÉ¤åôœÙMZoW4Ì·¿™·óží@-ª¦ªK|úä|ú3ùú8rá/UÇO¼æ™ÚÒNƒÉ²³³³³ÃœkKEsÅÞj²þ®ñÐïk[ð#¼0ëJ|Û0¸ô6‰Y•éYX;`-l‘KâIº›~»ÉÐÉ.»í«V æ öCX˜‘ãyý0ÅÈ #‘pÊii’EŠ=é&ôS‡o!yFNªû†õu·¸Åž¥Éœš“!)ªHyÄ÷+ |T$‹æÂOÌfÄ ðoÞ¾î6¿MÇÿÆ\Þ]hµZmîDu ·1¿kJ;‹¼ÒËÌjµÚ*“ÊuL-ú¢ÎÍo3§­™MÞÐ2Pél•¤`—;eÿ‡EPÉĪ„"ŽîÈE°T!>¿uþ‚Pü!G~-èw³¢¶b'?½5áâÜÙc—/9Þ¬?óo9KDßõèÉ+ýWø²UðÒŠÎ/æîƒ\cµFA‡®\S˜¤=nú¤B£·8æe5sD|f_{σàvÕ>a@ÊÚærMa’ÂhÑèÀXžTh“ƒ^ò [ œÒ¢ïjÑG†w©P¹¦P­h²èTñ=êLc&h{ì êk2« mrŸç­¨š¢HÁ.f¿ÄÐ3š8&ñF»ä}“øÝPûtÂrÆsÙ›§ò ¦ÊT±ËÚ·u{ŽT:‰·‚éãôn†dðºðæ"Rª O…ØwY¥«lRàˆ1-È~lhh˜&rÐ1Ü7Û5Fœ7Ì9ŰdÜb"\%$2Ã1ÇG$|ãS'Û*mŽ!¿>§†»† _‘ßA¿0’Ö6Weª‹ [i8¨.ÔHïŠ Ã—Ñ×1N’»a_ó¢jŠb^± ô:Veª‹š,ÚÄzHÔC|"ŽÛvû‹8g›E¯Ðöˆu²ÕàäÝh»IWŸ£7ʯ{CÂNÌz^ %E³â•¤ÇTâžI!”Jø©ÿ¥É®Òà‰€ ONø`ñ¾Ã§¼Û¹î¥cûŸ–ËtØ:oÁ¨“vŽ‘Ñ‘±+w'þmËkæëÖ.¯Ï€÷§1ljßA¹ÆèÙ)ìÎg‹}çŒÊ5"»ªxÇ ðD.E¾0 ‚:M¸&-…ƒw¼: IÝÙÃ5ªÐ¼{I¾ƒaŒ•ªt6;È(¼Å¸*Smn2vCN†ä9ÐmöU¨ò7º¯»­mÇãÌ×¥¤šª.âq’ó½é‘_iÁ½m’{ô׺K-ù1°¾½™w7ø£¼AK%ù©àiªøFŒD „”ÈÄÊÁ}‡O;åÞ ïØ©!‰Š°Ç1àœÓ1£cdäÚðåË—¿ZúÓü•òc'ωÅò÷üõñ r(öú k…¾‰þ®Á÷,ïBv“Vá=öYÒBò%-OÖܨ}b :8³>sÜà=ü^Ò¯jAkñ¼tךLÇmc ”™·‡›q`a¤ûªtîF\:ÑER¸]N^÷>•¶´³ˆ³NŠà%°è§ÄÂr1Ró¡¸ó48³3xÞ•DøìÉÍ" ;U¦ºººšyüä “ª««9¯kŸ|¸ž‘üåÍHè)’ÖÑÙ‘>ŽíÑUV«Õº«À;¬Éý²È3rÀ£^ì&]ù„þH¶è‹ÌAƒ„óµóytŸ[饒øT™½2©ÜØr˜ØÁbF îùÕðî¥cÇN ;uŒ½Êœ¤þä' Ò®:GGÉ•¿_øò¢ãÆY7ßv+<÷[óÃË de.ï®´Y=­–ΔaÔèl•Àþ–ïG¿XœE0üÆ”ý]ƒ³¾%ÿŒÌ B_÷Yêl’çXö]m>œ õøo¼aÑ+ ‰56«{=-g#8¡ó‡g¥™ðv“ÉÌŽs<¶’ûÖæëŽ«sÃøýqÒdÞI•Œ÷•E¯(òî˜ÇS¤Ì¼q-ú¢NÐÜ)ÔG(}¼X®1ÚGdü|ãŒ\G!ce7»KA¥Õû‚•kŒ5 ÍWì`ª"ö’â;Yü, );îŽ2à¿÷ 7AîB>í¶eú$®=ƒl#¤Ê, àþ.s™—q¦žÝ_ÇÇÍ‘¯<¢ ?E¡>uQv£ýoz·‚ùBpî¸{à(¨VVã‰UIÛÀ‰ÿöTZUþ?1üö£âyt%xÃ)•ħBÐæ*m©!¿<ôK$2 p({å7e¯ü†æ£þÌ:tž~±ù雹ÇÜ¿ú3“µ|Üó»{üå7û?}Íø?[w4— ý•¦é×ëÖTfß±ðåóáÖ%[?äù(tžý¸öO}žO}ZëþäŒû) á·.Ùº•süa¸—ÄàæÊ[`¡ð¼!„l☷\¾a„,Œ½*X[bxã~¸uÉöádWö€û?ýbó‰®Ë"O22}á><‚_)•‚‚ðüã¤Á¾Ot]f^‘q'¶wðá¥sŽZ÷Ò1öãêG2þÑé…|A|ãž¹Kê{ö}uñ˹ßùå׎“õÿ7»úÏûÖæ?¹ú­•À3}Œß5X•©6ôØšÌêL[&(š,ºøžNæbx—záø–y ,Þ×Q:}ÝmmÕž¾Àï»-Ñó: ˜ç7´oµ”2{ãªt¶J]yÛxú‘éŽ\c4òOÝŒ|üdZ ¯~ä·û -hzïÌœj»4t9{ñ3wßšp{LÜЕKpâ\#¡Á9⚓ئ£A·>;BììñlNÀøkýMSe&Ž›’ÌêL¨@]ÔdJìLÊ4†Éw°8¿>§Æfäì,Z`¡ðnGi•$EŸ˜ªÞeÙñMßb|Á2Œ)©ÌÞ¸ hóˉñ”¸i#‚ ‚ ¼LøÌâÕ<ðÄcI{~õpP--ŸÕßpÛÅËWûk­¸:<$¿cQʼs|¯ÓE_»êйiäýS•‘+]Ÿ1ÇcZØ58>vì¨fNÄ'¦VïØž‹a]œÓàë°ÜÔñ™ÞÇQÚn2‰úZË3r|&äy|³üǃ{^ûkã3 ”2{ã »ŠoÏbA™z\NZ÷Ò±ÒÝKù“’`­;øü‡,ýøªkt˜:ÝÛ}ÊöÁ†¼ï¿wÙ™ó'úÿf¿åöÆh'}˼ÞuÏíÝó Iúy:«K Œ2¯±ˆk°<#ç>â‡}‰[la‡eÞ †ç:Jß·ùmñÑ ¹ÆXcÒzݱù\ø%z^ûæë.¯%–™=¯Òeêu->SI&`ÏbA™<ñX’Äï7t #`?0½,úÒõáäxäþ¸ðJ,1îÖƒ;eñõc#äêåÑKG¾²_¸puõÊânÇù3Ÿ»qö,Š’‘QBœ¤Ïsºñãq[2èªÔѶüôÔÜ|ÅnÒê`«1£eÜÔ•¿Á<œìè°Ÿïà«{\5€ ž IDATNúñSÔ˜M|O2î^mDꎄ”Îu $WAY÷Ò±'Kº'öÖ[nü_·Ü4ë7Åü}ØyeØyeÄ9ê$cN2æ"£N2æ"cNÒX_üOv@Ù¤/]ïçgE{_t^þjdèëÑá+N`ÖM³nþ‡ÞÁ„>†"|Ùõéø—“œ\®¾ŠäøsY»VÿKOF,ž•>Ü3–[õI½#áÖ?´L¯‹.”RM‰1‚ HøDÑ`qùÓÏ.~¤‰vÑ4!´Ëé!c1.çírqš—kä‹®¼sÑ*´JåYðYlnˆžùÅöãõ£—_‘ß]h³Mðîp`?^/û®þå?ê^vgã³'d³ðuŒ}â'nK\‹±RSùnP<ôá÷A$zå œ;\7™’…» Ì”ÐXS¨ÀrÑ:Áûo†ç;ØcÒ–ì8 îU‘¹{á\fÕÜݶÌfÎÇJ›N½¢)±´s‹»@±¿ØhK*äì^ó`ÒjÝããv“6¿>§Æ}¼¶làAÙ©¹!^òlç|æ æó¨¨2ÕEü›±ZôŠ’jÆt—GÈyë뱀ݤÍßq–ñæÜœTÞíÑ|Ü*}x¹e`#ö½#· `—UÛ£}ÜsÌ7˜jÑu–Övç7ñÝ ¾`>oÑ+KÜ‹ s³ö~<|l@C`5y‚ñk}EQgi ŽV °±ü¡KÚï-ž’rзš¬CôEÙµÛ~”—Ž÷ñCB¿ [@«¼ÚhÚì^#ÏÈi›Ü¸çtkùJ„ö˜‘€O¸ƒß&X=ÔX­r°è•%ÊÎÍo3Ç ƒI«ò—EŒÔÉû|·5ä)­Î[ôE›kÜÒXôz‹J§’ºO  UÕ0µßc¬ÒÙlv“§÷ÝWÅ"2ÙYúÐ7nŠºÚÔö…”D¨¨­^ãÉOoM¸˜2vÛ"Ç›õgÄ_5ÑçU3}¢·.Ò÷,ö ®dߪLu[·´ÃTîÅPÜÎ+w6¯—/L27¹w¸-((`“ÊûÄÍPB0·÷ž¢)“o×Zûñz¨ÇJÁRy«Ì¹„õ4$z»³|"J¼#êB&¶*³€°Ç<áí&Cg©>°º<¥²€ˆe¼ù©tl©7°\S¨fî„hF©üu”ŒÉÈÈl*\“h˜pQA¢¾wpÝKÇxÿŽ·ÿuÊ÷:†»ãf»Æˆó†Ù#ç¯Ø–„¥c|œ™Âœ©0Ãx«qá'pÒÎ(ä±ÿVãÂpûÇOTî^£ L¥³Ùt€Áňî1# á<ªv“6ßhÑ0$Ddz¢«ÏÑåür]’, t^¥³Uê %»y± ÂÜ·^‰ÁA|ˆHï`”ÊAÓaë¼äQ'í#£#cWîN¼´å5óögÔ×GLˆùTó;œÊjÐcs¿]I&qÝÁèܽFb0!ßÁî1f5I½Å¦SM¨ôg˜P)˜©D,ãQØv“6Ÿ©NXÛùx÷Ú #˜[_3Þ“¤`;¬ ÈÌ$"¾ƒÑ8XÜãpÎ釘Ñ12rmøòåË_­NýiþJù±“çÄb™´ž%-˜QÆS»ºÄ»ì…÷#»ß†‰%8Ôb?^ßæéb¹ã§v“VÁ¿š†÷º§Pü½%Y²¤¸Ø¿œ²r@Ó´èÝç¹ÁÌëXd¬ÊÆ›·`žÜ½åÑšL\ó²6ç휔G2Jw¯ ƹ¥v“ÁS¤ÉØcFU&3ŒrÄPél6«›]ì þL…, tžwkœp¶óiÍÒ‚Yô …ôL%qA¥íùÕü)ó$&½ƒõ'?YvmÔ9:J®üýÊÀ—7κù¶[á¹ßš^&¤s'oŠ€¯ÿ‘E¯0$ÖØ¬rðé2à\W–Tx½Ã…s÷ǸE³©)ûÖ‘?¼¯_¼É•€yåRè'p¾B„ö,ž¢»×ˆSé2õì3BÓ]#·ÇŒT=Xd0eçH‰x Æ×Á,PZ! œ÷±jA¥ûÙ u;î^;~ÕÆ#yñý‡ ˆBËPK?À¡ì•ß”½òšú3èp©?sAäÏ/°åãžßØ{à/¿ÙÿékÆÿÙº£¹d`è¯4M¿~X·¦2ÓøŽ…/‡·.Ùú!ÏG¡óìǵêó|êûÓZ÷'ß`ÜOÞc¿¤²þpënâË)^Ù )óÖQ(œ¾”½òöàé›Ot]y’C'¨Á¹…4ñ4¡ïOk×þ©7üj^ûL÷›‚ ÈÌãé›ëÏ\èúbè‹Á«C×Fišº6öÅ൮/†Úí—>é<Ýõ•¥ãË÷Ï]lü¤Ÿ}!žèºÌ¼"ߤ“Ô;(}ƒ»†N/|à jä÷Ì]R߳頋_Î}øÎ/¿vœì¨ÿǸÙÕÞ·6ÿÁÈ•+Ü)~Ý_ùåg)÷°;Ç‘Ü\RB¥–¾íÓç"X¼sCB,Á0¼u ïëÌ„°œè#7_!jö,–kŒF¾ãiƒÅdŠ×h䞑Ӛøð«y]ì3-o ‚ H$‰®ÁbÓ{gæüSÛ¥¡ËÙ‹Ÿ¹ûÖ„Ûc↮\€ç ÎלÄ6ý ºõÙÊ0ì)œQÚüúœ›g*£E¯`W¾Uï²f6)òµÀŽÔ‰{Kˆ%†·ŽBá}Ùƒ–}äæ+DÏ~$ÓÉÛcA‘Èw;%†¼ë¦àa¢k*IËgõ7ÜvñòÕþZë®ÉïX”²@ïßëtÑ×®ºbnyÿTeä2 Š€€p+2û¾Gu¶Ê¤ò|ÞY¥uÔxc .è›r[Ðéœð>Îìv“It¹Ápœè#;_!ôuÃCºï®Ï®rgí0A¢€»nê|â±$‰RŒ¢ÞÁçß8´`éÇW]£ÃôÐéÞîS¶6ä½xÿ½ËΜ?Ñÿ7û-·ß0F;é[æõ®{nïžÖHy‘OܯV¨lRzLù¼¿™µÊòõ¥5FM°ÀüÅ–K$ oÃû:³¿m ¦Br¢Ÿˆù ØGˆ ‚ÌL–.¸YJ°÷%„‘ °˜e;ô¥ëÃþÈ!Ýÿ/¼¸[î”Å׫—G/]ùÊ~uàÂÕÕ+‹»çÏ|vìÆÙ³(JFF q’>[ÌéÆÇmÆ «=,?íÝ2vª¬=5W´v¯;Ñâks]yóp2.ƒsŠ_ÝsàâpÒŸz Ælz’Adª£+ãÛÙyåà«{0/Ä“ÝCPc6éK×û½@£h°øÒ óòW#C__qÒ³nšuó?ÜðæÑª“gé1ârŽ Œ ŽŽÅÄÌ™”É5F#gé Î8™½§s×N›™XLž!ufL9>Àæ~"±îàtÚKAAÂ$Š‹ËŸ~vñ#M´‹¦ ¡]N×h ‹q9Çh— ¸ˆ‹Ð„¸\#_tµ\_á¢Ï/‡Òt¢Š(âó,úürÐúʼnкƒ‚ ‚r0j8w¸n2õG¸ÍM¡e`USh3=¹ÆhÕˆÙ\WþFà…P}í&m~yR%næ€ ‚ Ñ)ýx«É:D_”]»íGyéx«?BZwТW”T»çÇØlر‹ ‚ ^¨¨-YãÉOoM¸˜2vÛ"Ç›õg‚½ë£Íl:9¥Ei]$øz÷A6$Ö0K¥àJ)‚ 2eä c¸;f¶ËEœ7ÌéºÞà¬ŸŽ WÖØMZvå@»I«5õM¬BÂù <ö{ÝÁøÄT®ÙJ¥R¡ÐÈ9Æ ‚L{¢t°ØtØ:/yÔI;ÇÈèÈØ•»/myͼýõõQ#Çë!G/çǃ| ùäMy5è±9@[àUQßA¹ÆhÓx´žw1Eo¡\cd—JTél6ö÷8Ç‚ 2½‰ÆÞÁÇ€sN?ÄŒŽ‘‘k×/_þjuêOóWÊ<'ˤe† ¦+Ï¢WUSÕ%ÞþïGvó ‹wç·ióìûËs;ð¼#’üIv“Vá)`oI–,).ö/§„,$¤PGÁ4-z÷ynðóú6 'Œ7oÁ<¹{Ë£5™¸æemî—,Û/(ÅwP¥³1ƒÅzÐùÙûÿAN4öÖŸüdAÚµQçè(¹ò÷+_^tÜ8ëæÛn…ç~k~xÙbHæòîJ›Uå~ÅëLFÎV œE˜¿åûÑ/–'’<`éæ¾î6u¦*ð˜Õ†Ä›UîV4ùz‹O½²¤º ÒfT‰æ”ß¿Á²©)ûÖ‘?¼Ý¤-wx»ÉdJÀ¼rÿÀÚ|ýÂÀ »Ü0½BkbwpæVì&]y’×LE Î!›» o?o‡!‚ ‚ 0i½ƒ‡?rýù…<ñÉç7ÄÙ¯Œ|}mlàÊÕ¿}}é‹õÏÀñ³ïÎþæ±?ÖœÈA]É U¦º­»OR¹RKµîX*m)ÔçÛZ¸É̪î±'3gW¹¦Pmnânâ«(êÜü¶ÕS4‘Àœòû#šEð0¼u o?^lx¹F£3¯_`Þ‚ù„ñ52·ÊþÁRyíÀ¸}q?bA™”ÞÁv·køèô¾ F¾qÏÜ%õ=û¾ºøå܇ïüòkÇÉŽúŒ›]ýç}kóŒ\Ñ<ƒÀ _˜ÔÖÔ ÷]«ÏÒdVgê9‚ǤÍ/?K¹…5O·–¹¤„J-}Ûg&«``Q¤Ä Ã[G¡ð}ÝmI™R§Þöu·µU{6>(˜o‚܈óì¡Ìos¸g1‚ ‚L9(Ó{gæüSÛ¥¡ËÙ‹Ÿ¹ûÖ„Ûc↮\€ç ÎלÄ6ý ºõÙʰ³Ç*·[`Ogj¢Ö?@P5hÑç×çÔØŒœ½Œ=—Ô»¬™MŠ|-°Ã£"EK$ o…ÂÇ'¦rÂ!>1U½Ë(Þ»æ› ¿‘ù‚dSƒ!­;ˆ ‚ ˆÑ5•¤å³ún»xùj­õW‡‡äw,JY €wŽïuºèkW]17¼ª2r¶•ÝÛÌ>¹r·6òL/°4™Ù½‰¹Ç‚­ÈìsB¥³U&•çóβ, N,Ái¾)óÖQ(¼<#Øðv“Itš…<#§³HÏ÷Îѱð%(T€À`ml‰=‹A‰¦ÞÁçß8´`éÇW]£ÃôÐéÞîS¶6ä½xÿ½ËΜ?Ñÿ7û-·ß0F;é[æõ®{nïžÖHHR¥-5<®TRPiÓ©ü?€º4Ñ T–)¨´,PlïéLÍÑÊŽ}_e“Ò3`zßæRµg”“«õŠ|E}iQ,0±%Ä Ã[GÁðr±’»&‹¨}åcIË$»¬:¾0l‚¼FæË×]›{Á=‹AdüÈØL_‹¾t}`¸Ã9Br ƒ­wÊâëÇFÈÕË£—.Ž|e¿:páêê•ÅÝŽóg>;vãìY%#£„8IŸ-ætãÇãÎÐoo v“Vzf¤—{,%n”0UÊÉcø­ÆŒ_›ëÊÛ˜‡ÓOÿ±¾ƒ¯î9pq8éÇO=Pc6 =ÉSŠ º}QûTLnÁ,zeI5çÇá4æºÝq»I›_ŸS±½€"ÞTo*‘Œ®üogç-]p³”À¯î9À¼Ov@Ù¤/]ï÷&¢ÁâKƒÎË_ }=:|ÅI̺iÖÍÿpÛG«Nžm¤ÇˆsÈ9202<8:<83gRJ$×Ùf‡{ìö‹Çç1¢Í±É3¤ÎŒ)ÇØÜ/BHëоüÆÜ£|1Â0ŠñÙMZ…ÈJ“×ïg„‚wuLþÀ†ÎÍo[m6êúÜq÷Î7ÁÖ½.U¤ b1–'Uúh7Þ'‡÷ÆñÚG®1V&±n%‚DŽ(,.úÙÅ4Ñ.š&„v9]£1d,Æå£]. à".Bâr|ÑÕrßÇùåPZƒ{ßFUh•ʳ@î+­ÑÉyl®)äžš°9Å*Ür&˜î:^«VAýq»&j¶€v÷YÝÓ£ì&­Þ"6Ï)¤Iô„z—5:»£"ó°› ¥z]'GäÆñÚG•©.2˜´*Ü|A¦ŸdW¬øõžÂÊßÿðòGŽÃáD¬UF¬JØu¼¤¼¬÷Üÿ³9ÎúVDg³éÊßð‹11¾ƒ>ÃF½¢¤Úw;ö$¹o³gàÊ¢W4%–vîØq¹¯”3¡\YRÍD,à¼ßøq¿wœerÜœÄS¶¢jŠªVúŒrz“*ØÅ·D9O”“¶$°¨‚¥òïóœš]¾Ñ¢ñS}ùÌòÚ6Ü‚õu·© ¼ÛÚÇk—ëÁ‡džðØg·Mû9ë¢À™ôz‹ðVÇ[}ö¤K =w3pizæ£ðS'ø –?ð áÿ ø•G _®ôkK*”{rÄn¿VÍT‰DÐDA¾à¼¡ZIÒM4Í€bødW°ËªíÑ>î9æivDÓ ûéE¦.>Xl~×røwoþqÿ1´52LèübfKÏîvÇ-'krêó½£jæòîBæ¼­2©\ÇŒzYôE›ßfN[3›ôâ‰0»³0ç »ËÍ<Ý6•¤àÿgïݣ㸪tñ-aåáÄ L(ÅB! ÄKn÷„TÖˆ ÍM¬Œ¥áÞé!Ió»_ І™1}‹‚Ÿf±è˜ÇršN˜›&!ÆÓȈ$´HÜ6QpÙ™vÛ‰Pb”¤Q¬Š$–c+²õèÇïꪮÇ9õê–Ô’ö·¼¼ª«ÏÙgŸ}Numí³Ïù¶gäUN£¨8ô˜VI U(ªZtM÷’J'Û:Ú¦½£MwðxE¦F¤Èû9àË ÑÊVt¢m«P¬¹µ-ÙGZ!&Ù§b“C‡î»OcŸ€iï€ò)ö㹑Æõ:ÚzwTÍe#;³$8ÓÖæ'–b1âD"êOœ!¶úÛ58è'ÒÌ¡œ•?è”hÀƒ‰ìðê­ädzØÊÌ2“)à3™Lf{Wo€S®Uû:”éyö"Ф"õ»#5ûÂ'/“nžÞ÷ðãÑÜóŠRißG7ܳ¶TZ!ý­Qî Õ«™ÄÑbÁÅB£Æ©\±g)„ÎÎâLI*¹Žžifä³ »ÃŒ¹Äâòß0áÄ@GªÓÄ íÚ>L‹O/¦“]]]굯…qL,äÌ’ì5æÆyM{‹i&’Š#‡³Ë=yæÐŽhope"gxUVª!Ÿ“±§Ýòè²Á®b—zM벎(“±L0¿‹Åo{å÷o¿t Óïj˜l~>½Ñ•Ùàß}"û Ú;Çß»ñ¾ÇXüoÞ„_½Ýx³û°±p÷s±Ÿ³.³œ¡×®jÑCõEéš·ž:‰ ÎçÔÄô2'\,Æàï÷¡²jCBegqª$•÷Åaí»¦=œ †zÒ"ÇÊoŽÅå¿-µ$D”óßÝÛ‡ †úÆ$€t2ÌÁŸ¹æ±Q¥ÓŽˆ…*lΫÕhÒ'’;b¤Î.‹™C8˜çÜJš‰Ü>à¬TC>§êºLåˆrkÄŠq<¸÷ÙÉ¿½ñº5·mÚèPôûößü¶£«nýùãÇ¿wû·¾ÿËoÿóߺү¡á†Ã‡^#ù}DŸã½÷î’_„ÿòËLþèï§Œ.H¥Lé¿ïé —©_44ÜpøÐ K'Xѹ¦˜çs‰-N¸XÌa–+¿ëx1˱T!4vÇJRy_ö×¶kb: ýý~¨¼+”·úâòßÃîPL~Õy°ôõ ¾d(È ¡ž´Ð:ê &¬ºS­ÂµM*ÍKb¤jôinmKV\>«™C8Ë9è}’ÛšÈÃØ¹µR ùœæcvyž½ˆ¥ ûÅbÙ”¯÷>;ùð £5ßW¤SxóÅ7OU6[œ=}âC'vfFƬoouõžÜŸ³9“&ðIm™µß{ߦ ïÛ´á}›þág—(«®¥’ô(ßÿË_üL^5¬Ì>’åü÷=å›Þ÷Ñÿ.)qʾø™MúEÞRIúÀ?„?p¬¥c?ûË šëøÙêâï>ºáž÷G¬~iÿß+­”k™âv•îh+Ô³¸Iì lü"¼iÃû6mè¾^¯Õ>ßÛ§5 Rª<-F8?3ˆÈÑBãb¡¾»HßÓ„PØY+Iç}qØ_›®IB_2TN**g …ÔĤ…ç¿ÑËÖ¬3JBŸÂgãÅ>Í­°m[¿, ¹µ­Û6 +E'r;IlGSv­lÛ¥Ê&OM×rÜÌ.]Š }æÐÎÒ$¨Q+y;·VrÒD Ÿk·2=Ï^Ärʾàß¼¾tÏÞ½ÏNÞ¶É^îS»³_lzõù³§*ÎÙ[o†Þ9Ñûÿ Ü]˜¾]Ú¿ý=×ßò’u¡Ìî÷\ß*—¹äáÀÎÁC7”#‹ßÿà¿Ü—öG¯¾fçà¿ß û1î–"‰rJ¥}6¿ðÊãÒËW6ÀÚïÝóÞÀ7ew—P˜ã7Á5¯\ ðZîxúRånúÿ¦ŽÊñ6cõô]=¶sðP|ÞóÈq}à³TÚ·Á¿ý­Ç¥Á+•ê÷Å$õÖ¾qDóÍ 4CéZ/ÝaÒ`Ÿµß{ß_þâÀ3·2Æê$å ¨gq²W‰Y‹]÷eƒšX£Å ‹.4ä+…ãÖR‘Å Ð@®ã€÷ÅÌÇC ªYwMJA”g¢¹¡ñpËbóß°?ñûåeТFöaÚ;Ö+ïJí58¢ò0I€8åt࣑ÎrÊE»”©«–§éO!Y…¨1Z¿¤Î)¦ Ý ugBkµ1‘—±sk¥ò9¹ósDy›½ˆ% {V’/ݳWëÀçþÆxü…°äw‡Ç.ßÿÓ^ðÆóc¯m¼»üGZ¦çƒ~Åô¾‰‹Nt>úw´å3¥ôÉЬ꒒ÏH jŸs—;xýwŸùÑßO54”JÒ5_ŽÂ7‘]M~ÞkºûÇ~ÖþéÜ˦¼=jy]žßç`‡tø/¨úëôüï{:†>9ø/7¬ýÞûÖB÷{@¹n—Dbî ‡t=ê™oJôÚ+C°ç=pèGÿ–euyŽq±VCîà²c%YB@RK‡•Xb¨9+‰}tðÆëÖì}vRvå¶lu‡öüîÿ¬ƒóÓ0]ñ5azbz>Ôtoÿ»Žÿ ÕÓyo²CàÞDN¶†”Ë”JÒ5_þØ5™¿?üpôÒýO¿çÓÌÕšb'@¾í‰÷*÷Þûþ·lþè$ËQ‚yŒZ=©÷±|òäüñ’¬}¨ûDö“àß½öŸ¯ºô¥îÿ\í*ûYû§ÿï%Ô£èL3”C˜ì¹÷€·<õ9‹ˆzFe“H}ÊC ÎÝÁÛ6m(§:ÙJòðãÿÇì¯& ?ÓšÅâ™üééÆósð׳Oñ;žä6ß´èoh`^úÑÎ þ­k³ß8W½u}÷‰™\ÉÒUo]ÿÂ¥Çdøø/µ‘J‘£ÝsìgퟖµÐí†×loÿµï¹ý“‡n€Û?·¶¿õÒk>ùLCC5;HJ¥}>ýØ eýWës›Õ;ÑÐ@Ò™f(‡*˜ìy}ëdƒ8ÿû‹Xæptî ê:ÙV|ü釯.¾\š:Qš:vIþÜ´æ6®Þzã%³8u¾ôÆùÒ0ùâcÿV'ýoh¸áÄí}k3rºÞ ù~%eví÷îY[*Éi|W?Z¾ÿÞGÕ¸ÚUo]ß·6SþðÞï— irJ¥}U¶M8Äd \}OßTËU0Ùòñ÷Üó¡åªÚv_U›¨ñ&­ƒÎ]pƒ=ᦿò¶­{þÏD8ËáJ1@,YÔøÜA~û¯ºW=Qzë<¦§ó¥B¾øOO–C?¿üÜÛÿ4ç ŹŠ¿ïùf"~O¤Lp¼½û#ÿñÈ%¿ŸºUxæáMʾÅÉÒᆘºUxî{ïÛ´`ê›ß= 9Ù­yé›ßmÿty!U½/—7Ëi€µßÓ¡¹y¢¡¡nxé›ÛÿÒÏ|„´ÆýÖõ·Lœ¸þ}†k­/«­~Ü™û{hÇîe©WÓ²zæ›´¢ƒºií ·ï¼Õcƨ ì·’ÈÐn(±À¯¾óõö×ïŸ+ÂlÎç‹£§ŠŸúy9¯+Þ±æò Îça®s…Òc§ÞûäÁQù«¥@þ[Æ|§ŒpâVÐì/†%°•dá÷[à‹å5ô"èí×o|®¦ƒµ5ΘºV­àoÂ2AÍ·’Ô˜¤îÄù†7Îß8WüÓ¹ÂçJ§gŠ_Þ¸úÓ×\xÇŸ_|zºôÆùÒéó¥‰óÅ7§KM­ÁáDTyå,vó kq4—õ·žÅ.–¨îcÕÊŒ’ñ+ lWœ½ 2[ Jé…‹¼ÂPßÐÃïç÷*JBD)F«H⣓„¾Ñ-»dFÝÚÎäjžÜzx®´‚Ï>œ.îo|¶ŠàÎoó_Ûò¶}Oí,‹Åbi.ŸŸ™›ËçócÓ ‡Î46”JE(–JP*_ÂQjwîà|ƒå²,ê€Ðû‚©ŽL™D"¼X_<¡/–Ã$!Ò3ºe fdW#" $ÂŒB½c >‰{tÎugËQäy‘•‹Ù’ÑiÙÕj;“«‘VçÏ>òˆùqã;Ûî¸[{gðð1k6 IDATWÒ‰£Y7ø,”>û€àÜYlÔ0wPäý½ýÊyÈaÆp³Øµ]y»‰¼?ÝݶmŠÅõÑD˜yOcc@]̪“ϵޣyAŽ ‘^¹úú-ÊùiÆ7(ïO"Ück¯ý i]6ýÕ+fê¯ê-ŸÝÝ¥y™“„<¡m#ê™ÃjÕÊýõ[¶øb¹ É’raZ¶úwmÏDÆ"ŸQ®-uv8ÐT;Øa<7êNTècà ÀƆ–¶%é¦lÚ±s4LŒDû8Abߊ‰˜¯r€1ËÅÓ~²Ûhš‚‰˜/^ñPXŽsütVºfxš¼L¼õ[¶øÌÏ…q(é¹ÖéOÔYÛ#øD˜ÑÈ( ¶&Z~JoŽ61èÖ)þ3™,l8ùÿ¾å/q¨fÔäÜAIˆô@<›a¡Ì–fõ7Õ$c¹ò}y?'´'Â\6ÆW”¦˜6@¢¹¯Ô&ÿ7këH«ªû+ ‘N¾Ei–Ð_D¾ª„yèB´oí¾Öl†QÞu2‡3€$p1_<›(w­BA‚%©MX蟂L†‘ôF·ì’¯ý}B„-¿:wÜ4"d;8@sk[RQÁbtœtP YNBÍls0LeµÛgž¢b: j96êI›Ù‡Í^±¢‹(—¶kÚ§ÉÆhú2´ FÊEy®õƒn­3ÓÞ ™ày<7Ò8âS®¡#Ò ã´æh±ÂÑX·ší>ðÒeW¼êÃs—_}ìÑÔ!»?ë-7b9¥kÔu_ªÎ”†R°Ê0Ìšn²‘(¤†”<ªP\ý]eƒ¡á…„[SL‡6ŠXתRµªº¿L¸;Ta¥õ·rÅrœí«½òæÑ”1v­lIZVúwËí±Á®b—z­tÄCÇ 0ÛÁ ˜pb #ÕYΖ«déyè ˆ]p!Šåâ>•ãv‘ìµÉt5¥‰=²˜`®†rÞŸkg…2Z|rY1ìêêR¯}-Œû‰Àè`½âØtîÊÕ…¹bþ‚Õ3G¦²<ù1ÆX½—Uš¼6?o›³pçÁþ[-†Û5ÊÔ¦%Qn2-¾á´ü‡wÕÐüP»[­hýîW¨l ]A»€ ï/óÃ*‹¤Î„HB¤3&ÔjʘºFæþ¡5áVÏwbça™`C"H„™Úw°Ê.³ÊŠñ¼>á!w–óÒ#Û VÍPVÿ\ÓÝî¡`ƒ¡¾1 ³Að§E®ylÔ[î`]B̼ûƒ³ùR~®8;37µ¶õÌ×~˜üÎWB‹ã ¥ ƒg4×ÍÀ`–îÛ¿€as\°êÜÁæÖ¶Ñ1 X†~Smk­Ñ!™Õˆ­‰V´þ†¶»ÛÊ l¨¬ø:"ò©Žl¢’¯˜&w HVžØ„ý«¬ha×`ÂÝ¡˜ì@Ô¼ƒÕvYY1îÖ8 úµa§‹ÀN•ç§GN&X5CYåsMt{ƒ¾¾!Á— 9`!Ô“ZG}Á¾6îQ‹ÅcÇ&òkŽCÓì\qæüôÙ³gOÝÖö73{¼`UKˆèOmû{+çT>ªÛïµõ¨i(5¬üé§^k×OµF–9$!R9µX¸¢É† wÝeÔÓA$›úH•)òåûÚâ&ó [œ•Q)Si§¢˜ÒzEŸˆ hÍ«ÚÜ,Yάnº1í .ˆI‚ šnЉt´×(·f˜$¶¹µ­²¾%ò=IªzÕŠÖßÑÝA"Ö vÄïÝ ÑöÔØµaªòÄ&\7íYgvp’\!òšçEú’m­ÍóÒÁê»,¯§µÃÑU{‘ïU4müA]Åjºà¡G¶¬Juª|®iƒnÿP4·Â¶mýòôinmëß¶ ä©„@,ƒè`êÀóëþâül~v¶8õÖÔÄë']¸êâË/ƒoÝŸ¼ñc×R*Ùç}ß`™Q«I¨5¬ÕŽç†CAÖ|­þô“SãÕï½ý]•l`Za]†²iÛ² p*YßGZF?aŸA59éw?Г¦Í6‡ÚÆ™p"Îûe§­éf±«²‘’þ¦ëûL @ߨ«"mí zõb™0t–ªÖo‰†Ê«BF±.µr×ß!"+òb™µ‹ä+…ãåQt „åâ進.¦é©A«Ê}³òÄ&\êo/ÐÙ@“íà(¦ÈEü~yѼ¨› ž;ètº¶‰öuÆÔG’ 'â9u»â§Ó ' Òéߦ.È*¿Ã½~µ”ƒ‡ÈKì&q( ºíCÁ´w¬WüOíµ§_'ÄÊÆ„_ÿî¿þÝ—HHz­ä©C¯Yü3ŸûÉþ‡v¾ü㟿ôÃÄï·nÛÓ;1ù§R©ôïƒÜíñ`â—"©…}[7lÝGøH»¯~¼ã‘qåÓø#w”?é‹i?U® ¢(MïÛºAÛ„uaªžÖµ•Lì#­<±M=Ca¢bú24#›‹©ßjl®NNyºªÚ üÅ»÷ìå¬ÅLF,P'*@ J¥RéëßýqêÐkΠ¾÷¿rV~Eš_  t~²à“‡¶l<Ñ8sé5WlH=|êäëWÜøg¯¿yìÀRï¸ruÿo¾£óúÚéEÌÿÕÞ©MŒ!'ÉSã ÙÛÛØÝ¥ûÓ™ZØNjQËPrœdôÛÀS79Éšš4m‘˜„œÅË ¢ 4‡å£1èÀ“/b…. ¿>´æýÃg&ÏÞtíWÖ^vÕ;›®œœ:û_Ø],A~¦°¦u˜ßñ$·ù¦5h›ÿkë ÒRã ´=Lû•-ƒ6…­^“jY”!öÑYF¿ õë#éÁ?üv÷ËâÓ¹ÌþW<:|øèÈá£#ÃÒ‘‘×F_<ñJ®vO”·°Ëe—J²»ç>.,w°\6k¸¥Æ«ðÍ\5d í#> Àôº$D”*’ñk®•K[Ž–}y~3ŒQgg¼/F¹$N-7ÌØÜy:ßV ÝL<7Nx #B”æÅJûô¢x$Í5]ÃÚZ,FBDeô±f*"93¯u»Æn˜YŽìm"—–„ˆ1ìydœ0j¢JcfMså{«§{ÜrLIgÊ‹åÏ‘Cn-Âæjo¾û¿x걟üjœDȧnj¡–glÕÇP›ÙÞ ;xÜxn¶îdï}['o?r‡zTùÆÕk¹Žá€mE¾Qµ-­ºÎÎdªWº ­n¥Ö§Ü·?GÝ‘n:##žp®mÝzÈJn,_©½qãF“^5ôlCu#H)úèÐT¥Š¥ .YUÚl1<=qnõ¾îHò²R”çŪ/ö3ÄBs­2ô§Û‘¡èAüaqòs´dLCíúêÆºõSwx鲫N^õá¹Ë¯>öhê8Š œÄÖ­l´­Eî ¡¸Qeƒ¡áܸ±@å˃¯L‹O¦)ÓÉ®®.õÚ×ÂHC)P ^ÙHRC’¹ÑJptË®Œ]t×ÌJ¨µ€eÂÝ¡2±ªQT¥‰6§–t¦[ÅÈ4Ū2çV u˰Á®b—zíUC· ÷K/ÊÁ¨Y¨JK\¢ªN*t–/-lÒf¾¯=ƒJL'ÂJâܶPɉµíÎòévd(ú@Ð~Xl5o£XÊ‹ÅZ›Î5­.Šù Vϼ2•­…3áÕÒ,è®U³XðsY.‡?e±€ †FǤòÚÁP2-‚46*¿ÅÆsÃ’Úk)ÙÛÛßå¤$8—i\ƒV¦z“4Q6÷çA7²bÕÓ•j aíÚ…ñÜðð¶ÏšCUk7¸¶eìmBº_q Ô稕ª›0VO·ÛsùÃBE­&ÝÁyÆÃƒwþjôK÷ì}xð óZÂ`æÝëfó¥ü\qvfnjmë_ûar±l$ ¥Ôӵ׈*Y%j‘;èÙ#Ìf2™Ì®-ºc¸UЗä8 %ÓÂPÊ'¿/Êä+Š-,ö§‡¶g¶Ó0×ùLÍßE©Žl¦Œí!š(›ûPkÝhŠUVª‰†µjÊ$@™ ”Ó´Ñq¨jí×¶Œ½MÈ÷ÙHt´O$õ9ªF¥*'ŒÅÓívàÜþ°ÐP« †@wpž}Á½ÏNÊ×{Ÿt莛ȯ9M³sÅ™óÓgÏž=u[Û?vÞÌì=ð‚U-ËLaZ»ƒ$\i(¥þ( ¥†¯Y´„â;îˆÿÈýW¤h™M¸E.¹!-š˜Ç=æ"ßÙü>t²kšÛ®5¦»Ý "¿ØqAE»êæVض­_þYnnmëß¶ Ê?Ñ9Z*Ñ¡+™Äþ9i*Ü0Ôû¶¨J7o´=ód%¯Ö°] £Ñ¡«Z³Á¶+£°YØ„B¡Ä´w@êÁíü.ï}q1pô§ÛíÀ¹þa¡ÀŽ[ p†ù=hFöøæð¥{öî}vrï³{Õoåûf¤<¿î/ÎÏægg‹SoMM¼~òØ…«.¾ü2øÖýÉ?v-¥©d,ÏfØòƒÀ í‰0—ƒæ Ïô µ”JŒéäÏñܰº0ž}ò¦ùUHŒ0㹑ÆŸrÝðבNxÖíW`$Þy_ë@6Ô£N^TÔ¡)L./ ‘(——A9w‡`+ÆX8ÒÉ·˜ÿˆÕ–yDPé˜52$‹ùâÙD¹X„‚FcZèL¬+ò=£þ3ƒ>µà,6sÕØ…ƒ|…ˆ%žaI?ÿ땟eí58æhÑz„*¥ ­¨K™à˜“Æþ¾­ ]÷×m§×»k+¹Ò°V°é‘ˆ2:Ni7¸ŽLJ«Hd9¢Û„FÅ„»}þ¾ÖoÔ@%‡Ï>MI‹§ÛíÀ¹ýa¡À†[ pŠyÝYüÅ»÷|ñî=Úkí¿Ô¡×ÌbÅçÆ~²ÿ¡/ÿøç/ý0ñû­ÛöôNLþ©T*ýû w{<˜ø¥èls¨Í†GÂ6¬Ê6}1í'“à}[7lݪ¹Þçõ+G[_i ÓÊKÐlb(LÔK_†f1s1íÎ7ê^W’•ºû¶nØ`ÞYlØ_ìig1±Œ@ýY¨ÿv- •½ùKÀ /î,v¶³x~£ƒ7^·fﳓ_ºg¯úñ¶M­«èÄ~}hÍû‡ÏLž½éÚ¯¬½ìªw6]99uö¿°»X‚üLaMë0¿ãInóM5RptL¶œÉ66ÚÖ1ý¸½A6èë|ÉPB=i¡uÔLxÿJ¿XÜ™êÈ&4üÈ– ÓÊ—³¡YG¿ˆÍ­m¡í ÎI¦¶¥ÅHÅ‚&c:Ò¹RX;¸P|$DÚÑgI·+ç|7®ß²+ÁÔ³)ˆ%yßY|Û¦Ÿûßß¼ÑÖ€gþ˜ºàò“gÏ,óà¹éIæ]Wx~9ôP¾P:®ÐtÑÌÓÏÆk§]®˜Nªµ´×– Åž¾égúksÀ‡mÓÒi;”K¥]"…Ry³­sñ‹eŠÅúK` ñN!Vº;èÿºãñu×=w®pbºôúÁWŸø§û>{øÈ8tdÿñ7¤¹™âôäÜù‰ÙKÞ}ôKßzÈᣉŽj¶>‚’„=7ÿzHc£mê3škÙmY_\_I(V®=¥{Âã>õœª¾Ö¨æ„¢ÂÔòL8‡ù>í¬ÝÏè€"<¤ƒ„_­@¢ÅÌÅT}ôt¤³æ>ËÓĶi1@ Ë êùµÊG7›Ë >¶é£WzkÃaÝ­¿øACsjn¦xîì왓3§¤s¯»íæ»rÇŽúãÞ W¯jll(΋ùâx¶éàîçªî»a±’ဗ}íõbÁVẄ$D8Øšh¦jr±òä”SÍ{Šï}`çÉiߟß8h3y šz)Ž{-tù@o¿~×çÒ|êbèëÖt+mLˆÚ€‹íøøM·\·îb'…ï}`§üB<›€¤ÀG7^ u:røèȰtdäµÑO¼’«ÝÇÒZ¡XJ /XB÷üåVÅÝ’ˆAǾ Ù#ÁÝ­=Y7áv4u!"ß I7=™Vi‘W£’noB)…•Êšµû´œ ÜG‰…XY%›8îö)#&&b¾ÊpÑÈxì(ÑieèƒBcå±\¿±!‡#RÍ”® ž¤:zFH?Ú‘(¤†$£_°ÎÇ” ¹›D¦(³U‰/&Ü"ðKC)P¸Ó™0oê ÝÁ…Á¦3?Ùýø<†±@óÌYœŒåºËmÜã*œ‚=—ït¤:)ÛÁÓɶŽv†iïhK¦•Í­mɾ-µiÕàaH´ÑØ‘ïݲ«Ì£Ló–BÈ…5ï•xW±k»Ž•lÀÊëʱÀì,@‚JÚ*qè!¿!ez\94aÁqÅÚM0.æ+·Õ‹%íû[–£gÂu1"ULiLH‘÷sÀ—é’¢•# ˆó¶:Åêç¡}Zûw†³1µ~R,&§õHaóÉã¹aÃa·f—îà°œ(#ë´/ó¼§8W_£lPù»Yû‡=0áîîÕ¨ùa•〺L81Бê$’½Žr‰ñ`Â2÷ …nľ@åŠå8;!æÂ ¨…[  ½ !hSy{§†Ä¡T%4è¬âB sˆùÔ=$ÎåX<)UON‘÷÷ŒF©ûCrò#õ¸XÐÛßÏ&XëÂý kÜ–M€SÉú>’ËË9$ryIDsnæeŒ…#|‹9Ä£-#ò~Í9Ú.—3èU3õ@(4›/J\Pý;?1 D^ùc×ö g e*‹A•7¼TÄñc¿_^A+»âYï™:L8çý@#¬ß²+áH7SÈ!ÈW Ç3¬•raC/?èOvÝzí‚ ’Öh®ÌO©È„ùh¤³¼Š·~K49BUû2#[)ïrp]Œˆç)=nQx’zõ–a¹x: ,ƒzaž·U 1${•¨e±Øu_6¸xψ½wƒè㶃6OŠçY-ÿ¹ÑØ8¢5 yª0áD<ç—³º-DÝcBƒ¯÷Ç_ÿîK$¤½VòŠÔ¡×,þ ‹ÏýdÿC;_þñÏ_úaâ÷[·íé˜üS©Tú÷Aîöx0ñK‘Ô¾­¶î#|¤ÝW?Þñȸòiü‘;ÊŸôÅ´Ÿ*×Q”¦÷mÝ mº0UOëÎÚJ&ö‘VžX‚¦ž¡0Q1}š‘ÍÅÔo56W'§vÒj?~ý»?þâÝ{ö¿rÖb&#ˆÁÉoZ˜|ý»?NzmÂÔâþWÎʯHÛtbbb¢ƒÎ îž<|°eã‰Æ™K¯¹bCjìáS'_¿âÆ?{ýÍcþzÇ•«ûûð××N/b´î„OmµöZþ"$M@²··±-ºËp)¥°]Lß¶µÌâæz;Ìt¦eÐSl¾Ø1B0†ñ0¡‹Åµ‚ðëCkÞ?|fòìM×~eíeW½³éÊÉ©3°ÿ…ÝÅäg kZ‡ùOr›oªQƒ¶I²¶Þ -iBÛ3Á´_{Ò»Ea«¾ƒZe7×Ûa&2-ƒÞÊT÷£/ˆ@ D5¨¯­$Ïü1uÁå'Ïž;þXæÁsÓ“Ì»®þð:?ürè¡|¡tþ\¡é¢™§Ÿ×®Ab´–8As2'ù”NƒSfHg¹lÜë$î²pWnÝ5sY/yás½M™Èö™Î” zK›Ïó¹ƒÂKŽØ @PQGÑÁÝñøºëž;W˜.M<š{6û»/ßr÷G?ô±CGöCºäÌ•ò¥KÞ}ôKßzèoßîä×JŸLmέ&æAW ¶uDӵ4­õy§?H„í “ÕvPË¢Ì"çz;Ìt&fÐSl^Á‚Ÿ;ˆ@ Ä2DÃÄÄ„úA޵ðÑÍærƒ‡9ÏÿóVwë/~ÐМš›)ž;;{æäÌ)éÜÄkçn»ù®Ü±#‡þ¸÷ÂÕ«гÅb¾8žm:¸û¹ªûn{Ú³éøi^Ý¿TNŠ^š'Z—ÏnFos.6,ONƒÿ§æÞûÀΓӾ;?¿q )Ðf2­ÁÎTéì­r$8݈:ÐÛpÊÊd IDAT¯ßŠçدÌßO÷•.¶ãã7Ýrݺ‹¾÷ò ñ@n’Ýlx“ÖÑbñ™Óù³§f&ßœžÊ—V]´êâ·_ðèS?:0²»4WÌOæg&f¦OÏNŸžkjZ³ 1á„ú~Ô^—sàšq>Öô·LP–Ôå5åf“Í jwî ˜ˆù‚¦2òÉ¢TfÉ‹ÈþgÐ 'âzfÕõÊ_°QpØ–s•$¡otË.…Üv cZ(YÏúוn?)„wÔÑbqì‹_½vSºT(•ŠÅR!_˜m*Î5òs¥BŠP(Š¥b±P˜9ñÊ3‹ü4vBT¶"À×G8†`óp·öV­öKBßh”ç£Ëõ´‘ †zú„‹Â: ÇC»%©ïl­gýëëQÅ-̈ù@}m%yað‰Ÿúõ‘ôà~»ûeñé\fÿ«‡>|täðÑ‘aéÈÈk£/žx%W»‡Ê[\å²Ù%²¬¶”r½™pBæ< —å²Ys9w°JoPÃ:c¦®¨Ž‘ÅyÈHCjBÏ4£m[ä ´A‡z²ÁÐpjH¢{Í¿AjYuF´ ®è:‹ i®µ­ê¸sèj€­}ª’Gܾ^Lí|vÙ7d¸+rǤ!OªÈ’„ˆR×ã,­Ì'Ö¶A¢ÚdeHH”™fËPeKCåhÖÙ —„ˆ_sÆAäÉ<[V?V„=æjo¾û¿x걟üjœDȧnš¡–çmÇPÛžU¾Aw¹rZ¶ö¨líµ›Sj+wôÒÙgÕM%Ý‘ãû¶nÝçZOڹ褳•"†#ÕNNVלҾoëÆMýÐõHmˆ¨FÉåÑUux¾½7S;œ]6 Q†ÏÉè“ËT¬¬»ò6K]Z›:‚tµ ÊèµiÖÚ’GÄÁSéÊhºÞ©‚7nܨ^ßñȸ%½Ýx 5íêÆºõSwx鲫N^õá¹Ë¯>öhêó(K}`9euÔi_г8W¬l04œ/ÇA¥eÂÝ¡ 3­·¥VšL hÑQ%¨\±ÇÖZOíi@b: ²ùl$ ñE’m»å@0ì*v©×JXN(V•'©ázÈÜ«j@­LMJ‹†<Ï+¢J”2L¸ÛãI¸T/o§s9KÛª™vf±WFߨõLs®-yN:þ¡;œ*L‹O¾'¦“]]]굆TÀ›Ý*VÕ­fǦsW®.Ìó¬ž92•ØàÉ1ÿzÚxeÚa¼5ÑòÓyÜÃ…Äößšh1Ü^T>'Œ,®¤™É`Ü6!iT¦ÇíÚžáXÏzR’“˜pwÈŸ9–•ÆFåãÁ²ÎT1ôfî‚î\•ª54µ‡†j;K©eØ`¨·÷3Å®x–ñ4K)|H5{‰ÊxbÇÚºc–òúh³ÁPߘN†‚Ù øÓ"×ìf¶#ËÅ3ïþàl¾”Ÿ+ÎÎÌM­m=óµ&¿ó•Ðâx#C)èàÍu30˜Ì»Àöo`ØðU-ÎlnmK¦EŽeÝÖ²edq%ÍLã¡ –Ëf¹ò‹³ëJˆ˜N’9c4 D¢}œ 5CÊL˜5§²Îxý»ˆÂµcRý‘«Uµ:SWÕPmg)­Œ$ô%»¶g9àýåfÝÎÒù›ŒçFVtË,åùÑfƒ¾¾!Á— 9`!Ô“ZG]ÌvÂ5êq±xìØD~Íqhš+ΜŸ>{öì©ÛÚþ±óffï¬jShÍyÖ†Ä[ÛôaÕQ·¨×¶™Åú¿&ý~m޶Eò† wÝEH¶kÂdS©2‰‰ÏÕl§°NîVZ¯è­yU›…WÍM´w´¹_A¥1²xÖÁLã¶ â÷.„ˆéd›™˜‡ iêÁS¾ò-uFv²ÕF½𘺧bTõ‘é9æ?Ì Tkj®J†•(eÄDL^Ïd#ÑÑ>Aò0K‡]Z»& xmÔ‹¶&¶÷G»¹¶më—4knmëß¶ ðp3ÄJ‹¦<¿î/ÎÏægg‹SoMM¼~òØ…«.¾ü2øÖýÉ?v-¥R2–‹g3lù]Æ í‰0—ƒfÕõýGC-¥cZ«Ï «éIÚkÕ­ékÈf ÿ/òÞþ®x6ÁZÖèOXã¶lœJÖ÷‘\^"=P./ ‚r² Á¼Œ±p¤“o1/´eDÞÔ³Žµ]Iàb¾Š™z šÍ˨gqeíQ <é©khµìY̳´7Ð/_‹]÷eƒZif2—M°\¯Ž—-ëXˆ˜N†º³Œkùü}­ß h®aaÂ|4ÒY^å¤ðØƨ\;F5œ 4QU‹§õ³©Î.ë1uÕe'¼A¦2’ЧÎ&ÌwDäGÞÝ,%ó!¹´€£ÑÔ*ㄉ†*sÒžöãÒÞ±^ñKµ×UL' ³³ØâŸ¡°øÜØOö?´óåÿü¥&~¿uÛžÞ‰É?•J¥än¿]n´Þ4ªÙyUÙ?§/FܺGݧoZ³¡ÍÍFN‹Íw¶ßZmÔïÉ$–'– ©g(LTL_†fds1í6?ÅææÅêžâ*v+ ®è]xXαòöÆÅF¨ðþ3…Ú"u´³x¢ƒÎ îž<|°eã‰Æ™K¯¹bCjìáS'_¿âÆ?{ýÍcþzÇ•«ûûð××N/bú°.^L'Õô]íµ.üEÎ,Nöö6¶EwéþÎt—†ì¦µ %Eš\ž˜øLƒÃDu'ÉݦbÊßÜd›+¨g1NdÃ+ù¯Bƒ,ι•„¾Q%“vQ'j .Ï„_Zóþá3“goºö+k/»êMWNN€ý/ì.– ?SXÓ:Ìïx’Û|S´M¶õ-2‹CÛ3Á´¿3êò¨Û4dp\Ë¢ ±´òÄÄg&ª;ÉÑ6Ú{ƒ‹¼¿xEAξm\¿eW‚A5bY¡¾¶’<óÇÔ—Ÿ<{îøc™ÏMO2ïºúÃëüðË¡‡ò…Òùs…¦‹fž~6^»‰éÃZJ€tRå&Ö^SßT†Ìb–ËÆ}±Nâ. oùõº|vJ¾¿^²}Š´¦<1ñ™ZB´V1‡ÉÝÆbÃl¾Pç"ÔÉœÍd2‹ÍÇS'j l‡i e³--mˆyAEÿuÇãë®{î\avº4yðhîÙìï¾|ËÝýÐÇÙü é’w^0WÊ—.y÷Ñ/}롾}»“‡\ŸikN¼µI–ÆFÛ:"ŒéZ÷;b“Y,ŸÖéOEagiÈFµÔ²(CN覕'&>SýAg‰êN’»õí–õ¡Ø¼ Œ "Q4LLL¨ä;øèfs¹ÁÃÇœçÿy«»õ?hhNÍÍÏ=sræ”tnâµs·Ý|WîØ‘CÜ{áêU ÅÙb1_Ï6Üý\Õ}·=íÙtü4¯†$–ÊIÑKóDëò¹ÓíÏèmÎņåÉ©MÔæÞûÀΓӾ;?¿q )Ðfòò´Ø –ÎÞ~»M¦h1b™€‹íøøM·\·îb'…ï}`§üB<›€¤ÀG7Òîëh±øÌéüÙS3“oÎNOåK«.ZuñÛ/xô©Ù]š+æ'ó33Ó§g§OÏ55­Y˜pBõE´×å8<ª¶o3AYR—×”›M6'V«úÜÁRð™EÕ3W¡$DLN.Ö{‡f_NL’’Ð7ºeW&ktõVìô^fã‹@Ì;êh±8öů^»)]*”JÅb©/Ì6çš ù¹R¡E( ÅR±X(Ìœxå™Eþ•éŒAts—j ¶"À×G8†`óp·öV­Îœ×NÕ1{ æ£NØ0£øQž[I³š]FÜB®Î@"#êk+É ƒO¼øÔ¯¤ÿðÛÝ/‹Oç2û_=|ðèðá£#‡Ž KGF^}ñÄ+¹µæ9}˜å²Ù%’ɾ”R¤™p"“Éd2’qY.›5ܪ:.@àª¨Ž‚Å">A¤{!ÉÔsÉhù€mÜýbe‹wû” OoÛñE ðjûc¨ëÖOMýîÈ_;ðÉˤ›§÷=üøAtÜDÔ"Fh@(®FTÙ`h87 ¥d×rX-äŽçØP]¦þ³IÔ*W,DZÕ+Æ„»}©!q(U 겑(¤†Ü$†Ê‚Ø`W±K½VºÀršØ¯ª­öœ!14‘Z¨Ôæ@Ur£Ý­ûQ¶U¾ S¬Øéídh„ VÕ­fo{å÷o¿t Óïj˜l~>½Ñ²ø«°©~#_ß cƒ°ö@ÃPŠU¡Å«°©` Þ9o5(Y½Î+ ›;脂źº9µË­LùТ2…n×ö ÇV¯°‘޾ÎTÇ@‚¬*•HÆ+ˆt8ÞhilÔ|ð¸…JÒ'ÖDsG£ìFyï¦XÁÓ»&ã‹@ ;X‡xx×þ›ßvtÕ­ÿ"üø÷nÿÖ÷ùíþ[+§í³c0¸Nù…ÁÀ' ô‰ªôxõ7[þ ^½Ö-L׫ÖyÅ`aÏtBÁb]ÝL÷âA&Ëe³\ùýÇ‹YŽ­V1™Pã—8%’ñ*}‰öq‚Ô )_0am=JNTõÆäAm”Ý)ïÕ+vz×d|ˆ•Žz\,~E:õ7_|óÔ1õÎÙÓ'>tbgfdœR#¿ù*Ü©úkë`PŽ®í†(ÀhhÐü‹–KE•;›î§ªrßføl/|à¾=•›{¢i{,o’[Ù Q¸44@Ãÿ‚† À½ÅöT4ÔVî!Uo€†Mðêʾ2gñ‚4E£`q^ÝL÷âV&ñ{'Ü0n{J$’inm«,ÂyãÔ1õG#„iï€Ôƒ¦|AÖ±Jà„tǪњhn?Ê.•÷hŠ5½çw|ˆˆzŒ>µ;ûŦWŸ?{J½óÖ[o†Þ9Ñûÿ Ü%Õh…›ï…ûïÒx„†x[©â´=ñ)€û7¤Ëq¸û7Aô3ÇäöÀ½7ÃØ:€ÏÂæ'”{ ø<Œ•ÊÁÂh>£Ü´hå^MCiº©«ÃÚêѸLé ¦úž(l¾>ײ—}ŒÐÌUCyã9 `Höúå«b±ë¾lP[ÝL÷âL¦&vä+…ãÖ‹ïv2‘ 棑ÎòZSÇ.üC¥ÏaÂÝ>_ëÀ7œ«4Ò÷¼>Õh¶£ìFyϦX±Ó›64NûŽ@ `ÁXI,¾5ˆýÝá±Ë÷ÿôƒ¼ñüØkï.ÿ™—éùàŸ_1½oâ¢þ]Ç’MîàÍjªŸ>ïÕûa3Àà¯Â¦Í°cPYÿ¥¤ëɾcLñÆ>U‚OÈ…ƒ–¯5Ž#á&­ëdAõ£¾zEù•›kÈÅvhYI´|$ꮚ•±xùÈXdÅ[„¬,S //ÄÚ²’,DtЕyhÏïþÏê18? Ó?¦'¦§áCMçúùö¿ëøR½u0XªÕ6)`¶ZF·)¿ù ´4h¾ý*Aä÷§7ëS_…'öÀ'>ð (¥¡A©[v‰7µBE~óç•„Åu€ß<€ÈY¼¼ }£<:@h ±¨¯ÜÁ‡?ø?f çNÀ¹“0­Y,žÉŸž.¾9]üëÙ§øOÚH¹ókð›Qý­WaÓw`L ¡µÂÍ_…RIóÏ]Û÷•Ô½à½p¯ê}¢\kl£ô›NZ±@+Üü|%/ðÕ—áfÎW0w1y¿?øLªƒ_ñá04@wàøÓ_]|¹4u¢4uì’ü?¸iÍ?l\½õÆKf pê|éó¥+`òÅÇþàºi·ƒÜÿ£çm¯ j¶¯ƒÏ>¯Ùœ5¥$ÞÿøjZçÌ}õ^¸ÿU€=ºŠª„›Z±Â:Ý–û6ÃgoÆùjÆ<œ;ˆX`°\6›ÉdVØÚ(‘1heš@ ;¨¿ýWÿ{Õ¥·ŽÁ[Òô[oò3ÿôää¿<÷½Sçó¥?M•^?_8u¾(þ¾ç›†ã>; ²±wóŸëWŠõq>yßîƒàûN¥Ê§ q»Wá¿îÒo.¹kü×o>Ÿz¢\«e3¤ce7m[Q•^·åYŃÁr]HS6ʬ\¨qA\/F ¢ÔÑÎâ?Ÿß6=q¦³8Ÿ/¾z¦¸^ùJš,\~aÃù<Ì¡¡0=ú÷èÛZw'”î$xZò¶\ug±ÁÙ¢îÇ]ƒƒ¦{w‚|ï1²/ñ&¹ÓÉ‚º2úoc%ˆYW_¹çbî @ ËÍ ÀÔ’$D ÅåkŠ(µNÄ}*Ÿ¼± Ä*‹‚Úøñ#D ¢~ÝAa0óîu³ùR~®8;37µ¶õ¯ý0I)Ë´w@jHqu¤±QS? ¥ £Ýý©¬’éLu d2™L&“ÍòÀUé|u¢Gßh4ÂÚj% ‘žÑ-»äo¶CÞS”†Rpë­#@h{¦Œè¨¦ %ûÈþo¥J6nldiÏD ¢®ÝÁ±cù5Ç¡iv®8s~úìÙ³§nkûÇΛ™½^ úƒJ@KJ4Ž(Ž˜ˆU¼A‘Wâjz?fLˆ˜îç†CÝ•Ãý™p¢â̑䈼Ÿ„H ذáŽ.|IˆD×E³T †¨¦I¬4”öµ¨jPµÒ‡YNà1èøÂ*F20ÜÎCÅ6¸Žÿ6¨­B±m%–ņÀÙ2~½iôO‘÷÷ô7ö÷V¤Ä¸ @ uí¦<ÿ®«ÎÏæÏÏäϾ55ñúÉc®ºøòËྟS„L{G[2-–=¦®®®²£"¦“meoP"=/Ã:R/"ËuË÷ã¾WvBš[ÛÈ2[9‡ýÛÿÔú]²GÚL–ÀÃh%v<7 V‚Š4­ÄtR[Lð¥ÅÊ·míŒÆHæNõ%ÛZ›)®bZ­B³‰$p1_ù~w.–´wŠ‘¯>3Á4/Ëeã]Å®í™LÖSÌUæ"± îààác´†’ûŸõ‚+¥©™7ÏÏML{ãÍ3'6·ÿ+ üjõöþt`?Ñ wËþ46 rÁÐè˜${Iå`š4”uÑU- mê}6UT™pb #ÕI ×Ñä„âeÏDw[ÖAë ê%„Y±ún’µ²óÛd+å&{•[§.=Ñ•*þ¾Ö„µmu÷ÙH´ÍΤ¡âœ²œwÿÏ Œ"Q%œž;¸é£W:úäáƒ-O4Î\zÍRcŸ:ùú7þÙëo;ð‡Ô;®\ÝÿÛ‡ï輞P †zÒb¤5­<4·BßÔ’K†‚œüõxnx¸ÿ3mJñ"tË—šÅX¦Å7œ`ʾW6,û)B¤3‰0c%Ǥ DzrÜŽÓ~7žöž—3±T­ì¼AEƒŠ^¡í·®•ZE" 1̱Êë{Ê´ø g)œ&‡å²qÞï46@—{¥‰ÀsXPwÐ9„_Zóþá3“goºö+k/»êMWNN€ý/ì.– ?SXÓ:Ìïx’Û|ÙK„ #ÂÓÞ‰„Öknm mO‰Ñ1 XÙk‘ÆFÛZ#¬;“ÝD 9Feú„H3ô%CÝ:oš[Û4-Ú¨×ÜÚ–¬øoT­ônžÎÓIèïôCÅÉ¢ÈÓ»$;è½Ò8ïçÅ,ÇZ)¯·-@ÐJ¦…mY.›åÊ^¨Ühµ@>@ j‚Úç>óÇÔ—Ÿ<{îøc™ÏMO2ïºúÃëüðË¡‡ò…Òùs…¦‹fž~6NsÁúûûåXÓâëïï×äÓ1í£=š]"¯~Vý4OD^³«I­³cTf8õàƒ©a}Nè÷½€$¢•XC¾M+`#Ú½Á"ßSÞŽ, }ÉP<£AœºkXï ÚoÇVó-”­m‡u>®Z¸'i3F4W ÌD ¢zÔ8:ø¯;_wÝsç ³Ó¥ÉƒGsÏf÷å[îþè‡>vèÈþãoH—¼óB€¹R¾tÉ»~é[=ðíÛÍþIWÊÞ—öZö5‰!ôÊ»¶g” ](ÚÚ'ß/vųå¥W–ãÇ"~ÿHc#5_Ð唉Dû:c0²äÀZ Ðë·ìJXŠeÂÝ!¿ø£jL8Ï”•Ö®x&Ì@9gzqCãáKo0ÔµÏ$,‡@Ù0]ymO£¡òb1棑Îòâ¯æ>Í,ä+7ãVéÇgb±+^E°c„@T‰†‰‰ õƒœ’ÏG7{·õ?hhNÍÍÏ=sræ”tnâµs·Ý|WîØ‘CÜ{áêU ÅÙb1_Ï6ÜýÜ ±rù°AG[=ê¹5‘÷§ƒÙZnq.¶CžœrÊ š;¨À'§}w~~ã@R¨r&×­–êÄV8db¹‹íøøM·\·îb'…ï}`§üB<›€¤ÀG7^ 5^,>s:öÔÌ䛳ÓSùÀª‹V]üö }êGFv—æŠùÉüÌÄÌôéÙéÓsMMkVΰ1áDv|ÁomñPg{Š­ÎbtçÌ«)ÞùxŽW?( ¡¤Y79“B)¤ÜÕ‘ ix†DÞof0REY‘h¢Lªúý¶§"TN­wöPQA‹c_üêµ›Ò¥B©T,– ùÂlSq®©Ÿ+ P€B±P,‹…ẨWžAë#ª„œ;høgi;0C)èàÓ5³1›¡r:;—eë^IŠËØ™ëΖµy^då`'ílPÈSÎ 0 Ju dŒò‘Ö¢4nžFÚ©’édÂŒ\DX š"˵ßJòÂà/>õë#éÁ?üv÷ËâÓ¹ÌþW<:|øèÈá£#ÃÒ‘‘×F_<ñJM¿ᑦo^±(1 N9H¢#YÙGà\©pÞXFV´6ÒPjøšuP‰JBÄ_¹¾ãŽøÜE 7jÃE|eƒUabùr3UÉVÆÂ.ãLŔ։Ä9`"}ޱÞZu)$ãΈyhJ’ìˆùâ•GÏÉÉÁHt”°ãÌŠ«ÉÕão AÒ:·Q>\>ç‹‚-7X®î ±0X<Îâ N¶Lƒ£#Y¹Ì¹BäÎ1,j9lÆsáOÞÀ´w@ù­;žiQ¯þúo;Ýe¢ÿy?|¶Â|mCöC-O¤ê!ÙÊXXÏ ¤3)eôôÚe™²méÄ9B ªp;b!Z/Ì\;BÈ…­•TÇÈHYäL¸»boT®&×ÐpéÝMÃ)°vÜHÝA¢,^î`¨©qBX‘;‡þÞW®™Ÿ|¨˜Nvuu©×¾ÆÛW¦Oe5ÏÙ­<‘ª‡f+'>FFÅ42-ˆs¬œ(·ÄB´7sí¸$æñäéiÿ2é¥'ü‰Ïe¨¬HV¢ÈÞ4.#˫Ј¥‹%•;HäÎÑe³iég*×l0Ô7&¤“¡`6þ´È5Ê_zûÊôjïŒÉ'²ry"U N(|LŒ8¶!ËbÊ™Gf6!j-Z:À¡‡…@ è"V –Ξb¨Oz´e£0NdÂø@ „wàb1b C>wí€@ ºƒˆ•‹å’;ˆ@ ºƒ„K,µs@w¨)0.ˆ@ ºƒˆ•ÌD ÝAÄJÆ@w±B¹ƒ@ ;ˆXÑÀ¸ @ è"V:0w@ t+#D ÝAÄ æ"î bEã‚@ ;ˆXéÀÜA@ ÐD¬t`Œ@ t+˜;ˆ@ ºƒˆ Œ "î b¥c‘rEÞÏ‹+ÅÆÄÎ.®ªlVÝ•Ø5°ã50[ ð£éè"ó„ªc„æ×Û2{á-ã÷7º&Kw æiìT±ù‹;U$¡otË®L6˱8iõŠUhÄÅW\qúôiÀÜA°\–Å®!VÆØÑÄ.îTÏ û‚ :¢®ÑAÄRÅüçмŸ„H ~DÈ…Ê´ß‹|@A%@¼IjN]T" Iˆ”ïGÁ.¢»p/Œf1Õ2r]Iˆ0[¬"Y³p¦·s¥í¾¹º¾h ›#)ïpXÉ0·" ¥š$Düšk’´J[ºÞËÎŒVÃÙ¸{›"ïïéoìïÕ+CêqìlŸ2+cŽë{·D¾ü¿A%'Í­gõó@|œM¯(³aÃ]wiÛg?OlžÛE œ£ƒˆ% 9wPŽÎ’±\<›aË¿¸œÐž3ú7U” HB¤“oÉr,€È÷ŒnÈÈEEžYŽ%ߤ7G’ÀÅ|ñl‚-¿j ôÐjåWD)† óÑ'Hl¹‡éd¨;Ë<€¾Öl†¥E1[¶YcyŸàiú"ˆf½4g=¬´¿­´w@b€Ï4Žø”kèˆ0tÍEÞÌ}wÒ¢åÀ9woóå²qð§ƒÑ;åá)c,ŒÙ ãúÞ‰{H*Ù6çò±"?ΤŽ”ybWYÍGØåtE 0:ˆÀ¡„âê+ çÆõ¯ò¡D#åL¸;”L+ÁWвœ*‚x“ÒU¸î>‰¶yëNµòÛ´e 5$ÉïíX¢®H'CACY.[yÏëÍEfyßè êûf=6g;¬f[aZ|r%1ìêêR¯}-Œ…æze´ƒåÄŒçzÜ«›oòð”Ù“f(WÍyè¦ùqvÛqë®YL`'Š@`t±2P¹ƒã¹ááþ϶)Ÿ‹ÐTâ%¼ßhl€®íŽ¥Ýô \Ÿ‡Ä´ø WSåÊ×86L‹o8=À0áî?-r,+†‚)ˆ×ilÔ·H‘fußÜRn–ëæ¬-Cs~H­°ÁPߘN†‚Ù øÓ"×L²‰ÉÚÔ>ÚöËáÀYŒ{­æ›§NYÀ©1«|–]u“ø8»ï¸uרØÉ€"è"VR\°j_°¹µmtLVýÍ–ÆFÛZ#N놶'ˆ~Ëe³Öxˆ7Ý ×+,=v¼ùú2ŠÅØH´¤fHù‚ c‘ïLu dŒòÑŸ¶–F¿o7ˆ›³V3h­°A_ßàK†‚°êI ­£›˜¬m?÷h-:8‹q¯Õ|óÐ);Б1k÷;ਛæÇÙCÇ-ºf1=OW‚ \,F,aÔâÜAí '€˜ˆAG;ã´îh&\ä•tuB:ñ¦á:…ÅDl¸òV¨¬‰|O²Æò Ö–©XŒiï€Ôƒ¦|AÖΩÑjH‘F½o5ˆ’ ˆ›³¶Œß°ÒJs+lÛÖßÖÚ,Mÿ¶mÐÚl­¹›¹gnÑáÀYŒ{5ó¡–"¹°‘hßgb±+žåX/²wÖœÓB%W¿òãì ã&[Q»f1=OW‚І‰‰ õƒœ’ÏG7£]u.¶CžœrÊ yOñ½ì<9í»ó󒊙ɺŠu¢Qd,’páкP][B„|"Œ§ÝUg=œ„ˆú}!~ü¦[®[w±“Â÷>°S~!ÈMÀ@Rࣛ /P\,F,U gq¾HûF«^DxôÄåÔ¹š,Ñ¢õX}AÄÊ.#–0æÿÜA„‹·)ïïéol\¿eWÝÅÛ‘@`Šë£Z@w±2P£ýÅKøV7DmÊFËšu9è\ƒ '2a4Zp \,F,U¨{Š‘³@ t+ó“;(Ús•.š´…l¥†2ÆK8ÁºƒDMQ‹s½½«ùvÙ¿wçÕ•¬U¯N°jìfèˆ$Düþˆ` "þ@ Ìß™¬A,LlKýª\ž$ß¹>¶:  ÌD,mÌ[î`5‰k˜ô6¨ÛV¯N°ÚAJÁ­·BjH +'ëHB¤3Õ1)ok’„/R©;\Vª0MмŸÚÕc}¼èãM¢fÀè b©¢v¹ƒ•?Ê#Â!r òj€AÙBÛßøý ‰Ÿ„H ðûù}úp˜)ÿÅ_ùƒßoùr-ƒØòw¦ê4i‘íÇŠª¦ U&I]—õ z1Fn‘Ö;Û౺¶¶µ¶FŒƒëP1‹é±B&˜¾®Nm‚‘m¢QÆa]“‰t|á :z¡ñÜp¨[{:º•kåª0Ñ?††sãUéSµºƒˆ•‰ZåJóÅ3™L&“éÎÅ’æW^Ïè–]ò÷™`šå²ñ®b×öL&[9“,Ëug2™l–»AW½|?“ÉÄ}1Žþ~k ‰•„H”uèHuò¢3­QQ)«Ñ‰&“¦ƒ¶Ë¬.pE5Ž©Ešd§^¼Z‡!Ñ™¶z̃ëV1²„•0Á´uãУñÝÈíw#9à³åv£ZŽ5ÛºòA€ÚãÅt²­£aÚ;44Í­mÉ>§ ®´Âæ¶h³ lS©å¼éãJaÝABƒZäJC)ˆFÊ¿öl$ÚF(Sùßåh/†PœüM›V8¤†$¯º1áîPùíâDg hT­D5h2i:XtÙK‹zÉŒfk«‹å˜×­bÖÓc¹N0cMÓ4Skݬ _гa²tÅä°šNN t¤:Åž]®8â½jî`_ë€Ú!úxÓ¨0w±b„U¬ç†}ÁÊM‹ÏH ÊrÙ8ï/swUÒ…Â×¢>œ`\è6ܯ–@º‚Žt®¡h:@-Z¬F²^a2‰ƒëJˆíôX®ÌTÆUÓ’éŒ46V?©Ät2äT²'-r¬J œ «­E`ÀвÏUá²çªËŒr•*ôñ î bÅCå#©.w°¹µmtL¶œÀ=6 $¼ò³\ùGšÝ‘Vé…·µFÜéÚNH!r¢s­ì@Ó¡zT)Y¯°w™æÁu+Äzz,× f*ã¢i‘ïLu dö‘÷§«ð¡¿?ЗVõ¿4~Vw(æÔ[uU4~ß8S#}¼è€@T\,F,UÔ(wi×d|‹‰Ø°ùÕUÕÑÃZá js«&«Hä{’TÝ´iUª*¶:;oÂÖ4 –¯F²NaID/2‰ß»b«õr`Æ2ž)’LN*$¡/*ç/–³CržÈkÖ[%¡O“ÛGRÁEaŠSÚÖÚ\•>´xè#b€ÑAÄFM8‹™p"ÎûFX¿%2¯åù@ WþÐϰl$Ú÷™@ XìŠÛÄrBÑÖ>¹z±+ž-/þ0a>é,¯j5Še‰!Ri}{†s¤³E®í@ÓÁ"TâÐ8Î$'{•PK±Øu_6HQxW‹¶ÄÁu%„,aL0]MÓŽ‚i\<P©LNš78”‚(Ï'7$…Ã?ñûåõè¢~¬›ÂÄ™)“K‚w}¼é€@Ô ê9ÖÂG7£]u.¶CžœÿOͼ÷'§}w~~ã@RÀ™Œ@ –>DÞŸfñÐá…øñ›n¹nÝÅN ßûÀNù…x 7 In6¼I1:ˆXª¨Qî @Ô-ðÈqÄsKóÃYŒ@ ºƒÄÒÁ|r#î ±€1B@ ÐD¬PÔŽ³@¬@à.õi^t7¨E\P"Z6(ýÏ$D"Â8ˆ¼Ÿß"ï÷ôð—ï~¹ôwD^-¯»KªEkEt£°Tùà×S]é„kÄÒî[É1Ýqb"cM[’ñ+7éü\TcZèo슩º•Xs7E›ÝÌ×í.Œ¡œ¸$DüKš”2Lu‘÷û7l}@kI÷Föì^ Ÿ±(>šÝAbžQuî ÓÞ¡¡Z•ÆFatLý4”‚Žvù¨Ø`¹l6“Éd2Û»Š]Û3™L&“Ír7Øz›=£[vÉçÑn‡"RZ+¬…™Ê‡[o5R؆¶+§ãfãZuh÷©rB>õbåõ&ª4¤éš$D:SÊM8ÒËÃʘtýµÕ;sÝe 3Á4/:kî&¹E½GãÈ^Ú­©¡hg—¸q&ÌGGû4ôFyúiy’ñ÷µd}c½µd'Fv–ÃZÓhhtˆºj©¤¡ÔHãˆò¬†gAù£8óÅUÚQ–‹Sß{5WXLÄ ã _ÐðF˜~¢ƒ¡áܸÝ}šœ`DëT‰ñÜp¨»âE0aAœScRú%&b¾xE,Ë•¯­Å:ê&Ëeݬ§vkj(ºb.Fœ w«âÅDÌ×MuEÞß™ëÎXxkkd‘W¢§ïQ Ùöô7ö÷êccB„m¥É„-Ziª¢žjVµQKá$(¡_r<˜¢ž¶µGºªª0/‚¤¹S’Ó®‹’;¥ {G„1|¯¡;ˆ@¸@mr™ö…Îk<7ÜÕÕUö%Ät²­Zo0 Y½§Ra›W…Ë4eIÚ™¸t÷ér˜p·/ÆÕÆ!lnmKÚùŽIî—©ºC±»ézd½µ[SCQ«»q¶ìÌIBßh4ÂR=‘ Ò«ÔÎÈ’é2GÜ@GªSãá4Ëeãr°VMÆrÝJ²¢]N¹¼9¶Jª¢žJ—êàÃÍúF㺎ë„StùJèW roRÕÓЩ=Ò ™^v÷÷8åZ3i=r:@’ÀÅ|åûݹXè" Ô¼‹ä·Œ46 rÁÐè˜$¿T»’D%{uIb½óü[æ@aõƒZÖ¤ª¿¯u ©¡Ü§ÊñíÔÙJ H0áÄ@Gª“]p!V߯ 6AÝÚ´[SCÓ¹<Œ8îö¥†Ä¡54˜ì±ðkidi(ªKJê¡JȸW¶£)ï¤iÅÓ-;ƒeû´©%ÙHT³,¯n¡C%ú­¹)7ÉêÑ¥Z©<´l°«Ø¥^kÂð´9 £zmøzCwp…Úœ;(G¤¡´6Cs+¤†$Z0‰ü[©Í‡Ëd¶‡æÝS°QXûARQUÝÕ-’ïÓåèC.@Ì”l%fàÚÑ¡õ«6æ®åÂxµíÖÊPäh·g#©žT-4¡xzþöÞ?È‘ó¼ó{–bÊv9Å”m…«r б^mMEjö2i‰£œ@Í·¡p;Û–U…j9'Ñ8Bsµ{käèíJêrbóx7ËxbßµTVŸÄ`g ­'Gu‰-y‘Î%“õš¨5æ´ÈÓ?«ª“]G‹»@þèh4ºn3Ì|?5µ4ž÷í÷}º±ýÅóþx†,&˜ˆ“w[ÛÛ—ÏŽÿÃl„zB‹ðiáæå³ÙžqôÔBwÀ!8g#´B^6J”÷­ˆ <è«-ÊIG&båaêkžmƒDŒO •ºÚ¢ÌCÌR†Zj58Dµ>lç“‹Ý% DDæN3pèv”ëõ ­»Q Õu ˆ‘0¢Z¢¼2ðøðz&9bì©3hòßgFéWØ@c¤j‡wS{ÃLà¼ã9*¬#]qf!åAÑ¿¡kA&áäùäbØïXŒPOXS+WVÖFÏ]éùî‡~ñ´ÁY¨tíb³[iàAomQN:2+ëT_óð`ƒ :ÜwO ëëëÖYH­¯¯O@ Zî,]É»“«¼ Bˆâ¯[Ð`S+W„’7\Y'œ QHÑê±FùêãùIW<:ÁÔʓé_½ÅIWìGf´jvSWØ|ø´¹Ø÷Æ€óNÖQ~ööŠ[kAÅ3£;9lãf)Ó£…Ü«÷'IüzBŠèjÑí‰~n»ßýð/~XÛ2´=ÿáL`•œŸíh•‡uÊß¼íîUÇ5ûÇ»à0ÓqÁÉìAͧWÚd *ïë±#]j©Åå.ÑJ©áŽ1¢ZRX޳µWJF¬ o¡ 6·jTPxŸ>(Ë[»âB¿nÊ—µÏðÇŸø£Ò½sÑêá¥B9[$!©Ý•UnÝ}Ón¯” ™'^Vv$–½™H8ƒ|îÌÀ~I|ï猨VIʲ— "ZYkȱªõw³Û‘v{¥d¨üäîðóNØQ>5õΉwÅ}ŠPáÎr_:›ûmÚ'3¢ZÕ$Ž[µÞv¯²çg9ιñF®'bS+W„œÁXŸ+IÖVˆ„B²lYøâ‡´—ÓJ÷`©Á‡ì»)œÿpbÿo3œH=àXoóN^,ÔÂnÿ™»}û¶ûÆtS Ã/` ‘‹/X7çOúSoŒÐ}ûì‹/ýäíÔç?ý`µ¢áNà¢+l==«[ÙÍtãHfæøÑåGzà=QŒŸ}ñ%ëøÃÖψ¨ZÑ”ÂãÞ')a°Ì:ÈY ÀÛ0y Á¬‚œÅä 8Ò .˜5_hÁZÈAšÉì;@0»ÌBŒðn— +¡É-Ÿ‹Fé,¶É3õ}Æí 9À,2¹¹ƒÝìéìH™¿öò?Öþª¦ämS+7/^y§ß™xö¸ôvOM¨“q‰ûL)ØwÌ*ÚwÐÔ¤l-Sm¨ŒóVÑÕiž ÃËÆ4´n·µJ3‡ûs]ííì”øÿÐ3~¡‘¸À”‚è ˜a&1wp·µ-xÒ‰2¢G êŠ5ì †w>̯'ÖW{Çw4)09°ªáÑ·¸·tPºÂ*Z`tÅÍ!êZÄíc×¾§uöI{‡Y'í¢€.ôö7Úåës¦®°Êk½­}-‚ÿC~u¸h·xøEñØKšæœÑXò¾ ¬?¬žˆ7^„²NðTꩤû~ð­èú3È º·×q¼äÿ²Ä¹ µMÑÉô¼ö_‚ÀïQÈêÉ‘¾ªºÍvð@9êÜöpéK_¹ô¥¯t˜JÜ›óv/—¾ô÷Åßÿ§¯þàGÿ.μûõÏ|è3_ß þà©×¢¿öðÚS=G_{êCêxí)÷|ñ«ê9Ò[üë¯ ª3¬ žÖt:¯=õÔk#5Ìk㩱÷¤{è¢þ.ôT赈vY¿þZO#½­âÿ >ö´0ÂEñûóC͈RX=Q¼©¬sâÞ:‚ކözÐp)#xÉw bÝms›óàƒö}i‚/ç& <8À“±¿ªa_„1n303ÄÚÿõãÛÑpˆ?øÑ¿³‘ýORDÁ¬2¡¹ƒŒ¨V3µl_œÀܪ‘›ì•sN"ܰãƒJÝôia»µ;zUÝ_ö½ÅE~Hm ¢î+^–ùQÖcÏKªm™ý'ÝCõwˆƒšñ²ŠüˆþT=ù ‡^¿?‡?ÖVO¯F*ë8¶§½^r"ñVtgƸ7½ë6h›=tÀ§WÚ+îë FÞ„ã|k†|U÷ó6SÇC¼çÙ_Šò¥6̳Êär3¢jˆÎØIV¢ª*2´ÛÚÞ^w¿Q›VÒöàràñÑÆ©Ç©*pö^Ü:yÙ(),˹™|ù*ém ³Ú®ïMbba”–vˆR MpYãN…ŒSÄÔ¤lÑÊ5<Š?‡¦p ®?¬ž(^P6èZói!_×ež'½^Òòd¿)ãx)Öm027aØ9Ú·fpmûr›é‹‰DÌÅ*_€‡kî /ñâxÂ0'­ÿ”ç“‹ÂZÀš’°ã#0fUóÉÅæŽI<3f¼l²ý,QtCæcWÒÛs§¹˜”&sA"¶¤¿ Dؤ—µß™#ø?]ÉÖ2UÃ^­DºÂÖãù“(=JýaõDñꀲŽåÓB¾¬IóT®9yÂß”q¼ë6Söß„GþÖ ¨mn30¥a‘IU…Áb0ó_†ñöÔÏÔjS+W“óDDÌR¦™÷LØÖëMØñQÄçxU1K*ªºÓrm¤æ~·’ž–èj‘2KZs¥%a­ÛjÒ€ËÚïÌüå†ËWâÔ¬«Åíîó»;þVçxX=Q¼: lðµæÓÂví_þËÚ¶æiÂß”X^ç6ã¿‘€ ×÷[¯cÜfàˆ‚è ˜Uܸàxãż¬ìH,k°´Û+%Þ~ÈjU“8nÕ²[YkÈ{ë” å³×n¯”nË¡*"ª¬rëÖ«v{åy#í-^RXŽKÑÉ‹×ÔuzºŸVºÆ¥?J%=-ñ¸pÐy'ç¢à. …dÙ:îmÒ€ËÚïLŠÜëEx¹T眡ɓ °Q¹Þš]{FT RÖ.ô­?¤žH×w@ÙàkÍK…r¶H…*ëöC†´°—x·ÁèÿÜ„awæhßš!µMî6G”¹Û·o»o¬(KÄ¡hö¹ø‚usºáqßÜÁg_|é'o§>ÿé« wòÑFWØzúp¤R55I&E™¬gRmØo/¢Û€ bÄÁâg_|Éz þ°õ3"ªV´þ²,3 rƒÃ*g5wÿ½±ßÇ©gRm˜~/0X fœÉ­/`zà—H⸛DÔ>Y¨ÊÌAÔ3©6L¿—˜m–——onnB‚ÃÏ„æ‚Ã)§f=#ª ñ€ë™TÎKÈŽ›››ýŠ0–$ ƒÙeì5ÅÀ!Q„ãhAÈA0ÛLbî ”êôh2AWÀ«p0Šp-9fžÉÅ£+×2bŸÙ¡”J{*%!. ’"M æ‚ÙeÒs£O3sBæ3Ác0] :f•IÏì‰ùišÄqÇqŠN¦çµkùé ›_O¬¯rÛ]™šÄZÆl·6ŸYO¬KWûžcݰ¬'kŠ®pAá²°0dx…žKÚŽ¯.Û¾kÞ­‡õŸ¨ß´|ÆÀš#^šžâÞÒƒ[Ññ‡DÁ 3ñœÅ•U †t…[嚯Y¯Ù²&ñö>·sÄËF‰z6¹Õ¶œ¬ ÆÖYVZÑ>3òj±<•Œo–´ª³n¥Ø²“®°²¶¤Š éJ¾y±Ú°LtEÑùèûëVH¦&S%Cµ'!Ý×0S“²Ê‚Ó|O=]ûvưš#Ñ[\ÓIä#¶v˜Çl@p`ì;ƒBÎ |z¥Mi絯ï…onÖ3¦Éˆ9­ë2®)Ì­ûs^*”å-S´N&”\-ÒsÞí–óŠ—ceÕ ¬Ð߀ÅJ«¿a½ñÔ3ö#¸hÇÛWÑZ;Äc6 æñ7©Ú¤Ì ¾$uýqA_’ºßÿÜ'± 04I¢ƒ`¶…Å­qdü¶†‚¥$`† ÛwP)<Ž\Æ@D³M`Œp—‡Võ!:f7þ‡œÅÀ8@‚Y%Ê¢*ï1^ã5^ã5^ãõQ{ 9?Cs{%#^ã5^ã5^ãõQ{l4fßF3ÞûÖ/v7šIÝ{Ç#t‹à5^ã5^ã5^µ×ÍŸ¾‹B6šAtÌ*Ñçâ7"^ã5^ã5^#Fˆè 8œÑAßšâ°è ‡“¡s0ì;f›À}‘›ð‘DÈApØp'ÉÎÄf„€÷¡iå,ƒÅ`Va!= Á¡sÈApÔAŒ€Gä,&–’€Y%pM18d ô Ø~ÿsŸ<ÿùÄz>B‚Ù¾×û“ð€C6Æì'?ýéO­Ñ§ßûÝOÏn/¾ò/þ$–=‹ÁÌo@0)ÜgÊ»!1»q{è ˜Uï;ŒÃ¢jv³ æØC9ø®¹èÆßÚÚÞëö|bir€0wÀ^ÉÁ˜ÑÁsç?Ý»Æ\ýÎÿ½§ÑJÈA0Û F`äà^.ïiýXJf•©Ýw°ÓѾ`© IDAT¹qå‘GyäÊNçÐ_…ý쬩I¬¤™³ç¤™m8G\¾+ý/®}Ü¿Ú9ޱÖ[ªeÙÑk‡]-¦JªÈé «èö û•Ç0àXŸÅ`ƒ@IKÑyOÁˆj)UTõI¶°ç¼s§ýˆ¾È²\,ûÔÖ;wcUõÎöÏßùþYÖ[v„ö@‚£BÜœÅíö™§_~yssóå§Ï$O®^}Šp<ææN]xå•W^¹pjnnOOdjåfAâƒ>ª”½:ÍÔÊ•=8?³”¡ÚV=¨+]Ýhj’¥óø´ÐÛÌAÆ€éƒwÛÑÿˆè¢þçßýþþõ÷®<Ún·Û¯ø=ý»ßÿÁ÷ô'lwbUeýÝ%"êÜñÔ·=±ÀÜA0ÛŒ8w{øLûúõ[oü˜è½Yù‚T~ÝúðxN}^8æÚÞ¸òÈ¥„WS>óíó5žûø“×éÑg¾}þÔÜ\§sÃ}ËõÍ[yûxîkkçŽ9E6 oµ>QÕߪNçÍ««•_Oœyúå §æ:7®œ¾´Ñ>žûêÎsùÜÚˆ¨}æéW.œ"¢°…u¹ófeõ±/¿žHQ»}ü‰¯­ ÇæÂŽ{;n5>°Z_ר·jÛ©ô‘PÈÔT]”-©¨«Å” l{»ºž ¢öÉ‹UUdHWØüz"±Î­·Û+%Ã)ç7³ŽÕ“…æåË7Ûí•çK©íò–)Š ™š$“¢Š ‘©IÙZ¦ê¼–IQEYÙ‘ØüÍD¢Â6 UÕªŸO y»¸>Ð0%rpûN§Óv•œçÿ´¿ô¹Ï¬ý…õú·V¿Yú¤ýŸAçÇßøÂ§®ü¥ý_ë¾ðÿåܱþOKç7‰ýiáá?m·³ÿ|ëОX :f•±æ6¾·‘HЉûßçQ]Çsêææ¦š;þzYúBåMW]ÚH¸ÐÎNçMý¯>¦ºQÉ×Ë=×ðX•÷Ø[57wìÜÚ3gÚíëO>w£sã¹'¯·ÛgžY;wÌ)ëÚ'6.¹½è?QX—;Ï=öå[t"§¾¼¹¹ùío_¢§Ÿ»Ñ鄾žô¶áe5w‚n}ùéèÑÙÝÖ¶ÑJ K™¦y³bˆiO¨PÊS©Ñh4j¦–Ut"^6J+핵FÃp´`™y,¶rFÃ0äóia»µëD ­W´Ûº™¸é¾¦Ìc}nm±h½wô ]¼/ìØo ˜9x§ýÏkoý¿vÇóé_ý«¿ÿ™µ¿H=ñÍZýûüĉ¿\ûð¯Ìwît~þŽ~ùSWþ‚NþÞ×¾W«ÿÿxõŸÜýÿ¹~ç¡ÕW¯üÝv»ÝÎ~ñ•ï½üü¡»£´r¡¸`¼Û=±qéôéåååÓ—6ŽçÔWžŽÍÍu:oê¯Þj·Œ¿ˆî;'i·o½ª¿Ùéø?â?v¼ûÇÙÜÜ1á ¶\ã>ÓnÓõï¹BªÝ>#»/XD†´jnîÔùgM$6.¾´‘H<úL7¨ækªeߢ•;çÿý÷9Þ«SÃŽU;  ÷Ýÿ~"ºõÆ'2Ü̈9kjž®S9OüÍܪ‘;Â̈9¡R׃CafBIæ=‚Îþ€YHY¯ôzeeeÅ}Z`ˆt…•I)­´WJ ÉÃg1F7ìwt0Öà¬oœ÷®óöçwÞxí•›íö‰þgÿñ;wÛ¿vö¿=Ýnÿå+ß{ãÎ]Çø?¹ï½íwî¶ï´ï{t­ðÁv§¿Â`1aÄÝwÐ'½qå‘Keé d eþø[”H¼^–N—Ùh)•ûèÇoÜêj KÄÜŠôŒ±Ú•Gúž†¶êÑÜ© OŸ¹~i#Ñ>óô…S^ÕÛT»q*Ÿ;õ©'Nl”7.Þ°>±F¥çBŽ÷W¹ “„O ùòSº*äd"ÝSÜ^?Ë]voZI‡£˜Ÿòu]æyâÓByÇ$ªW„´‘&¶®Ëó;M!-/<‘®#ªÆ†Ç1ì·ÁÞ,¾ë w:»;·(‘¸õ¢ôÑ»ÿå¶vï¶mÿà/å[ÿäô·¬O>þÅïjn.ð8×W-݊؆XÌ'+– ‘UR¡œ-R¡ÊûJ kªÌ¯<ŠY¯L•·´TEHËÄ“¯kÉf*­úuž½^YLJƒD!`º¸s·3‚}§CÎÜÁÎ9ûQò¾ß¢ö_þWòÆïÈû_n›îPçײåof‰ˆ:ÿgñSÿß½,OmüþÉ_É퉋Á¬2ÎÜÁ¹¹S?J‰×ËßhÐÜÜ1þc'‰ õê[®†»òÈ•Žï£·ôW»A>KúÐÞx‹ˆè­«ªwD͈µªãL|úe5wÜšDØq~p¾þªÞmê‰ñÇ‚F`W~å {x÷}÷o·-=v<¨ÚHmð*æ;2K™Åà‘^Ç@T Cõ-Ô`–2ͼgVWGc#š¹ªÔzE—/¯/&ç­£ë—/Sr~@7õzÅ™ˆme˜9ØŽþçµïY=ëíÝö}\ú@"ñgßX7­#ïÜùÁýÝ/5îÜ}çÎþèü7|çî»í;ï} ÙnÓñ~#¨’Ú DÁ¬2f>îáGicãºzõSܹcÂó/ßåô%i¹LÔ»È÷˜ðüÓoç.=ñêc_†èÎó_{âGÃÌ lGo]]}ò:xâkçOÍÍq—žxõ±/?¹zÿWÿÐÖ"¯;MmŸyÚ»>:Jå§ææˆN¿ôÆêÇ?n¯ ¦O\²Ö©÷I8Ÿ»|k´Çs;(>&«šÄq«ÖÛ•µ†LdÅÏrœ»²8Ä,X•ÖvLâf)s²Ø]:â¾WƒBÎÀRf [’Å´wÆy©ÝîÜu~ ÿÚ'J_}ßåÏüÓÇþëÿÕþ/÷¿ûÓ´Ø¡6úÝ oü“O|¬eÿ×úÿæÂ¹_ëP›NùÜ^ýã/ý½ Ëx„öÄ‹’ܾ}Û}cMÌW ã&Sˆ\|Áº9½“½sŸ}ñ¥Ÿ¼úü§¬V´½HUmK”ƒašÛ6Ͼø’û?RwS]aËɪ?¸/x6™‰SÆÝ0Ϲø‚ø©ß‰^êßÜúÑO¼ïZ·~íßô=ï½÷Þ¶~FDÕŠ¦÷M»GtÌ6{³¸Ó¹ñÜstáÂ)r‡zÏ<|˜ôÖ Áˆª!ê ËVh±P•™ƒj„:RÃqý˜5â¹ÞÙË¥{]?ä ˜UÜ¸àžæ,ž›;uþá+ËË—¬·îÞÎà€àeÃáÀÞ3Ú`ñô´r ö:.ØU„§.ln^˜roX»÷]ÀmâNLùuëÿÛ™ªö@‚£BÜ}€ˆÄŠÆ%ö@‚£Å¾Å-9¸Çs§ ÈA0«ìÏÜA0%Š~ì3wöx. ä S Ђ‡k>v¿ì?ßþß«ƒÌŒVÀÜÁC¯ûáÀþ?_ŽT‘¤̼VÀH"9Ž"ãä,ä ˜y ÁQÇš;?〥$`¶ [_ŒÀ!`1tVä ˜U†î;ˆÝIJäâ ÑŸqrñ…¡#iƒ`VÁ¾ƒŽøs0ŠY”%æ‚æàæê «è¸¦ž(³§ ÁÌÿ6 ¿Ñu…íSmAÇfPêEn¤©I,ËqÇq¬¤™}¾°>‚¶€£ ä ˜U"î;X){5©•+GÉIº’må £Ñh4j¦–u¡©Il9Yµ?J×!r€Y#Ú¾ƒB!SS]¥£«Å” xÕ¡äDÎì`›®°ùõÄúj÷ˆ}Ô2óÆ×v4É)ë»ÑÀ‚îÁÞ3x™ûVWXEóŸ(¸‘Að²!óÎFÌ Û­]×%Ud\»®€Ydyyyyyr9¢Ì\XÊ4í¡©•›)í‘\2)Nä¬ÐÌ+:/¥•öÊZ£a8BÊÔ¤<•,3…¶ùU)¶rÖA£”*Ê‚0° ÷`‰ò¡B²Kÿ‰úmìX¯W“óö+!¹#… "˜=-è{9ŽÃc„Œ˜KUÝ ˆåÜx/Ýð#æ„J=HQ™[5*H¼c&:Q4¡äÔø´uV°ç /¨¶5LŠ =Q4,Úíq¥FJwcÅ0ûZpdE9f•è9‹ù´P)?õT¹"¤y¿BrÖRpÜjȤÂÝÖvj¡{2 ©‘å]o½ƒÂÁZ0[ËT½6‚+Ã¥0€Ó‚£)Bì;f•ûòR¡œ-R¡Ú£˜t%[ËT •qÞ²õ ÂóÉÅæŽI|lEX°÷ ¹Ó\LJ{í)]aóÍBUõDFç“‹¸ƒà0°¹¹9~%ˆ‚&ò¾ƒŒ¨†WH¦|HtYÊPÑYbjZä(Z`ÁžƒºZ¤Ìcë³n€.¼1_ðp¯©IlžJþÎ3bŽòN ]É÷N!³Í¹Ix¹TçÎr—‰ˆèäÅ‚@-ë¸T(Ÿå¸v{¥dÈ<#ª%…帼xM|‚À‚ރ핒aË4FT R–å‰ÞÆ„6Þ×È0™¨·‰›«Üºõ¾kÏËÕ‰ãV‰¨}²PU¡àè2wûöm÷5%™^Átâ¦h´Òò¸9‹½7ðOÞN}þÓV+îd‡û1Iݳ/¾d=ØúU+ZY ƒY%Ú¾ƒä ˜a.g1pxÀÜA0ÛŒ1w˜I~òvês_üNDã÷Þ9/îÜAhAGO~"Ñò»›Í¡6,³ÊÎŒ–àºÀ€=ã7ïûÕ.Üû‘ßúõÿòƒÇ>ò[¿ñÁ…ÿè7ïûÕ~ýWŽÝûK¿þ«÷ü‡¿ôüÒ/¾ëÝ¿IéA‚fØÜA]aûžAÇ&ú@Õ–uN¡+,Ëq\ß½6ÁGtÅN—Ò{Œe£¶ÍíÅ8a(¦&±S–+yZ=fj’¤íúë÷¶ú0.ƒ`¶#¬”½šÃÔÊ•½o”àìȈÑh¬ ~^6JBh)25)ß,\k4k…fÞQM¥"qN,q¶jtî\„„ÍÅôxÌܪQfi>à’±W$ru¢å, ™šÚ¯©Å” xó’„ëÆZòë‰õÕÞž«óƳv4É);Ù0—¹U£‚bíO͈JalÕ4Ø žH¤Ý!NðtWWXEÓ¤ è tµH™Ï~Ö“ Å[Uï)/Ó(×%¨ýÓè1S“<™[µíß|`·¯~]a•×BÎKC0eaYÀ€¥$`V‰¸¦xa)S“5“2µr³ äZ•ºó\,'«Fƒ±ŸÁYE7d^6JÄÖӞЋ©Iy* žì\s"ODT)¶ìƒ¤+¬¬- L‚‡ÝÖv*íÖÅ,¤¶ë»DãTî_郎²Á ¶ùüY Ö+‹™*ÃPf±X×eÞ)Ü­ÊãÑàË÷º„·Z<¦+ìêºÀÆ0ÏÍ <òažï«Ÿˆæ(à¼4¤¼l¦&qÜM"j¯¬!È DÁLißAFÌ¥ŠªnÅxrÉÆËžL¾Œ˜ºIƒ{žª[5*H¼c&:O¡ä>Gù´°ÝÚÝïÞÛ}ÇœBàë]D'xÍ<~ˆ®…œÈôŸoÑ=/¹1ѰËëºDìæþ{¬ø,'«F£Ñhôü¬Ð룦“ÔNFT­sU“åÈSÀaÑA0ÛD‰òi!_~ªCW…œL¤÷ÄO²Å› ûGQ›VÒ¥{cuS/†Ý:Ø »­ííu'qó@'D1ó©Õüz"ÑŸUY¯W„´ÜmU7>˜ZŒ‰_¦X×e„öï¿ÇB”sZéö˜LƒL51öä¥B9[¤B•ïÕ+ÙZ¦j¨Œ+_êA…ç“‹Í“øýS„½g4wš‹I)\oùŽö˯N˜O. kêÐø^D³(jU¯Wh}[ﶘ=Øë°Ë뺌Ðþýñ#ª†ètŒãìÁb'@8†ØS“Î^v‹,`°Ì,qödDÕ0ÎíÓ•|ÈÚQfɳâÁÔ´½ßÔƒYÊPQ¶ïLM.Rf‰ Ñ[>ŒÐ¹`N`–2ͼgxYW×7D4Ž©•+BÉÛà’à®âÝvý¬«Á½ö\¦X×e´öï«ÇxÙ¾š Éöˆ¿^¯,&çG¿‹ +,+“bß-˜8 "DÁLcÍ´b„ñáåRsFÓN^,Ô²ŽK…òYŽsÃlŒ¨–¼‘›§px ZçÖCãvA2¤Ôb­¦µWJ†¸‡‘IFT«šÄq«ÖÛ•µ†â„ ³Øjp«F¥Ç¼T(Ë[»â‘PH–­Sxzv™â]— µ?<æ ÍæbFb<~òÖOCއ¶S6 ü×ð1wûöm÷kQ Ã/` ‘‹/X7§Oÿ¹sŸ}ñ¥Ÿ¼úü§¬V´ƒ»“u%d¥ç@³ÑJ 4,'«ªÈÌÌåܵ½;ÿtyÌÔ$™”Yº„€}ãs_üÎ'?‘úÍû~õ—ñ~ùžwýÊ=ïþë·ïüÍÛwþæoïüüNû;íwî¶~§ýÎÝö;wÚ¯ÔªÖñ‡­ŸQµ¢)…Ç}OR ƒY%Ú¾ƒB%?<ƒEÿØôh¥ÍX6ßtv.3ê1FT¡û‹Á¬qßÁ}'Ê‚ß~›ÑJcà1€³ÏxsÁ´i2,k€Øœ/~?ì#é·?9ŽÓ#öƒç ù•{Þöi}ûßB‚ÃLŒ}'ÏA¯{ˆhBÑA,%³J„}u¥?e[б> eŒÍu…eSØyäúÎèµ§T”^ˆìÏ>òâÿwÿ–NüFÄJ3L”¹ƒ•²&ñîMS+Wˆ„=n—àìg­QèÏwÂËF‰üG+‰ƒp€ýs:wP(djª.ÚúºZL ¶û©©IÙË7ÔÍífoíÛ5ZWØÕu_1ÚѤU+ÓWûdaª·øì„nïÚ'/VU‘æÇÌ:VOš—/ߌ¾É6€ ‚¹ƒàHqîàÂR¦&k&/2djåfAɵ*uGÞ”“U£Á8ÂPÑ ÙŽÀyçšš”§’•ÚÕÔ4Džˆ¨RlÙIWXY[šbAî_郎²Á ¶ùüà€Û†:bq̳JԜŌ˜KUÝŠŠå<’—=ùh1'TêA³åÌ­$Þ1á#”\±Ä§…íÖî~;Àžbè#xR`¨|½‹è¯™ÇfDÁ qßA>-äËOu誓‰^.Õ9gôäÅ‚@-ë¸T(Ÿå87ÌÆˆjIa9ÎYYãN/A¾Uº{PjDQ­jÇ­ZoWÖrˆ‚Ì@p  ›;˜×s—^U#vRCô—é•?¾šÃòíÆ›Þ7^)Ÿ¤¬W“R'õ7ð` ÀaƒÅ`¶‰º¾x_©ä‡çüè›­T Ëæ›eŠwB0M :f•ÍY<€(±½~›ÑJcØ :f•©Œ ƒì#ÖÜAø€G—Šê ‹VàØƒínBä 8òDØwPWúS¶›èSVWX¶{ S“œTr¬¤™6AGtÅ)ÕsŒe£¶ÍíÅ~:Á*XÖwÐÛ¼‰+¤þ椀 Ó/U{šröõÎÔ¤î½=“ª€£ÁKßj>ýBC^ûáùâ÷?÷Åïœ/~O^ûÁÓ/4žýcãþê¿ùòŸü?/~ãÿUÿ·¿øúµ¿ŒR–’€Y%⾃•²&ñî[S+Wˆ„=nšàì¨+ÙVΰ÷b15)+QUâe£Dþ$(n)25)ß,T"cÒªªÈPp©H„s;ÔLŸ¦š›0Èr«Feüe쓪€£À{ïi~tùшÆßÝlµAtÌ0æ …LMí†6ÔbJzyNü£Fʯ'ÖW»GzÂ$ÞàÅŽ&9eÃb¼ìÙAšsÂvk7ÚcÑÙ&†•Õ¶Æ ™ v‚'d÷cˆzÃœŠ¦I–_ m@…ºÂ*¯…œˆqvÐwÛôv*,çÖ¬÷Þ±’¶3ÌWýÅãi³h7¡¹UÛN-0V¸5Ö…25ÉÓ0·žÀ/&P?‡ž‡xO”¿(U!:f›¡1Â…¥LMÖL^dÈÔÊÍ‚’kUêÎÓ¥œ¬ Æ~þdÝí\Ú#ãLMÊSÉhðd'©y"¢J±e$]aemI¶Ï_wkèÁì¶¶Si·.f!µ]ß%'jî_郎²Á ¶ùü@ôaƒ'"Þù ¨ˆæBŽ;ãì #z3;ËvĆíÉþäz½"¤å ×é‹ €€ˆ†ç,vŸƒR¡œ-R¡Ú#Çt%[ËT •qc'«4æ“‹Í“ø‘¡®°ùf¡=0Ø{Fs§<ÄlMnóøÛí•Rà(Z°擋š:4´Ñl‚„1f¯§Î W6âï3#JÇhX,×E½ }jÐÔ¤³—ÁÜžAjFT ÑiÇÙƒÅηÂ[Ï /fxý€±À`1˜m¢í;Ȉªa Ôcº–˜YÊPQu÷Ñb¬™šÄæ©dÄ$f–2T”!6¹H™%&$ØÓèÃUEN`–2ͼg´PW‡#šM°3Æíõ´9aÛ½—tÕ½²=÷˜çø [QW‹ÛñËuÑnB½^YLÎwå&+“bW~AxÙn†B²=TÝSOØ3jý€@tÌ*cç,æåRs†ØN^,öÐ/Êg9Κ0¢ZòÆ3bœBW‹Û‰ÄÍUn=V‹ÕR‹µšÖ^)ân¾ÁˆjU“8nÕz»²ÖCœdÃÛ¾ ‡ÿŒSè" ɲUƒ÷Êzï±W¼÷VtïØ=ñU”›ÐÜi.f$Æ#7ãžÂ úë ùbÆ­¹Û·o»o¬(‹Rx~Sˆ\|Áº9ÝÑaßÜÁg_|é'o§>ÿé«íàîd] Y*;Ðl´R Ëɪ*é]Üà„½ÅÔ$™”ñý;©z8ZÄ.?q™g_|Éz þ°õ3"ªV4¥ð¸ož‹Á 3­9‹+ùáé.úǦG+hƲù¦³iÜ‘U‚pÂ^ÈêD4ܤꌋÁl}}ñ~eýf¿Íh¥Æ1;ÜÀ DÁ¬ußA@‚CI´5Å€‡—ƒ›;¨+ì^ï´@1B]éÏÀtl¢ROWX¶{ S“œÌ`žlZ½6þ#v2±¾vö—ŠÒ‹qÈAöžˆs+eoJSS+Wö¾i‚³…ž®d[9gïßj¦–µ!/%!´”µ]ðZŸA`©H„@°ÇD›;(25Õ séj1%^a$9¡»n,-¿žX_í ÎéŠm&ydÕŽ&9e½‡}®»G #æ„íÖî¸j°º½sú1Ä ½aNEÓ¤ X&ÈAöž(s–2Ͳ“k«Ü,Hi¼‘IqBw+Í/¥•öÊš'y—©Iy*9iµ¶ÑS)¶rv¾¬RÊIç5ðL\{M¸zzWÍÔ²œà˜õøÁ@Ö0€à@#dÄ\ª¨êVT,çÙí–—=Ék1'TêAñ-s«F‰wÌDGô%Wÿðéáa?KOMr·]{Š¡à(]¨|½‹è¯™ÇflC f•è9‹ù´/?Õ¡«BN&Ò{$Z¶x3aÿ(jÓJ: ônk;•SÄ™š”­eªêDuS¼–Cœ°ÛÚÞ^wòÃtB3ƒì#1ò‘ðR¡œ-R¡Ú#Çt%[ËT •qÞ²õ ÂóÉÅæŽIüÈŠPWØ|³0ùÔ¹Ö ?€¿Ý^)ŽÛ;a>¹(¬©Cã{ÍÌ$,3Lä}Q5ŒzLWÂÒ3K*ªî¾1Z¬¦&±y*{‘¬¥ƒ‰ IDAT’ÕZ€ì'|_ ˜¥Œ5iÒõCàŠˆffDÁl3FÎb^.Õ9gôäÅ‚@-ë¸T(Ÿå87ÌÆˆjIa9.AD'/^ScœBW‹Û‰ÄÍUnÝzºóIS+ì— un=Z‘ÑaDµªI·j½]YkÈ!N29ÀÁaî /ü ƒ¼Ü𪱫¢¿L¯üñÕx"Š;½o¼R>IY¯,&¥(NêoàÁ ³°Ž˜%0X f•)ÎY\ÉÏùÑ?6=Z©@3–Í7 Ê P8Œ :fkî #œ¢ÄöúmF+5Ž`ƒè ˜m¦8F@°—DÌY ÈAp89и ® E/8xp Á‘gؾƒºÒŸ²-èØD±ºÂ²ÝS˜šä¤’c%7¯q¯MÐ]qJõcÙ¨ms{±ïNðty壘·›>NêäVUq*œ€ŸnäÞí¯|45IŠË9À˜ VÊÞ’©•+{ß(ÁÙ)PW²­œ³Y´‘keí§#/%!´™š”o®5ƵB3ï?®T„´,ÜâºÂJš›Â¹R£j£Á®p«\óâ5ë5[Ö$Þ²j@säoð‡Gn¾y±Ú°êÕEçeÞÙj›·7ÜæeÃ05‰ãnQ{e­7N§×ã{ ÿFê÷¿¯¯|ö{)j«‚ÝÒ#6W×íœ=†Áxnc!͇~цy€è ш”³˜s©¢jG®ržg%/{2ø2bN¨Ôõ°XÄ;f¢óȺ1 !a?]aYŽãØzz¢¹‹íj}O u‚¯wà5óøap¼Ó)ÎKÞx§`·†O¯´WÜ×5ˆBôöwëõöúÜ©ZcÁÕd¹/2ÛÑn¤0?/†TÛ-¡­ vK7àWNV-oôÜÝz½b©Á_´øž :ÀH1B>-äËOu誓‰ôžˆM¶x3aÿ(jÓJzh¬nœ}¡u…•vªS„ñ¶›qÂnk{{ÝIÜ<Ð Q̘|¼3&ÛÏËFIaY.‘ +/3?Á쑜ñØQªØªQÜÒ&ôE@Ÿ9‹ÝÇ™T(g‹T¨ö<Æt%[ËT •qÞ²õ ÂóÉÅæŽIüøn>-ä£<­{Ïhî4ƒ‡˜­©`þ»½R u vÂ|rQXS‡>ß#šñi!_×ež­G{GÄö{D¶gP³S“Î^v†8üz`œj£·ªß-Œ¨¢s#rœ=XìüØñªÁA_´pOö ƒY%ξƒŒ¨ƒju%,0³”¡¢êî£ÅY(ª+ž‘[S+W“óZ»”¡¢l ™™š\ YžÉËÎòU/Fè ¬@'0K™fÞÓÈžÇ6#^ò¬„îšõøPW‹û¾à4bûúåSá¬LŠíí>gï»¶ƒªO.vGd#ÞÛá­â^¶ïC…dgéI=ìV÷4fˆ'û ¢ƒ`†/g1/—êœ3€xòbA –ó@/Ÿå87ÌÆˆjÉÿˆuŠ´Âq«Ö›öÉ‹GŠQ-µX«ií•’!î¡vbDµªIn#WÖrˆ‚Ì«#)Ë^vÝ9>Ü›ùýçÎ|öÅ—~òvêóŸ~°ZÑîNÖÿšÐ(f£•hXNVU»¾}ÇÔ$™Ü|ìíñ£Ë>ôÀ{¢?ûâKÖñ‡­ŸQµ¢)…Ç}OR ƒYeŠsWòÃs~ôßV*ÐŒeóMgçBöFT¡˜10X f•ˆûî;QüöÛŒVj3ÀÑA0ÃDÚwƒàg}1 Á!â@çúrƒì;₺ҟ²-èØD¥ž®°l÷¦&9©äXïnt^ÿ'©¿ý¥¢ôbßàéòÞKfo7}þ„^ÈApˆ2w°Rö¦@5µreïÛ%8{ÅéJ¶•s6‹6r­¬­yÙ( ¡¥¬ý¥×ú KEbÿœ`j’§Ëéú^k2^ÆþÅ9Ž8Ãb„B!SS]I¢«Å” ôˆ't× 2å×뫽Á9]±Í$¬ÚÑ$§¬÷p¸XáÓÂvk÷œ4Ø ÝÞ9ýâ„Þ0§¢i’ë@]-¦JÝ.ór÷u·xO•vq+”hz^G7x­·Á¯Ñ~ÒÎÑEÀÑÍ€Y%bÎâ…¥LMÖL^dÈÔÊÍ‚’kUêŽ('«Fƒ±…¡•‹U6JÔ»Õ³©Iy*Y UMMÓI䉈*Å–}t…•µ¥¡[­éõÊ~çêê_郎²Á ¶ùü@ºÒÍTÛƒ·¸®°’æî]©QµÑ`HW¸U®yñšõš-koY 5 9ò7øÃ#·?ß¼XmXõꊢó=Žˆ‚Y%êšbFÌ¥Šª¹Êy$/{2ø2bNèfyíQ2[5*H¼c&:ú@èFÁ†„ýœ¹€õ´1ÉÝyíj}O u‚¯wà5óø!”žâ¼T Ú–ŸìÖðé•öŠûÚãÏ¡QˆÞþn½ÞÐ&n3LÄœÅ|ZÈ—ŸêÐU!'yÔŽ©IÙâÍ„ý£¨M+é€Ò»­íTz,çì ­+¬´3¹Äqñ¶›qÂnk{{ÝÉ';Ð QÌÂèõ!³Ú®ïícÞŠˆíçe£¤°vªß•µô r€ Rn^*”³E*T{žîº’­eª†Ê8oÙzPáùäbsÇ$~|ñ§…üe5CÎào·WJ«+‚0Ÿ\ÖÔ¡²'¢Ÿòu]æù>4wšû=h±ý‘íÎÀw pÀ`1˜Uâì;Ȉª1x VWÂÒ3K*ªî¾1Zœºâ¹5µre19?1X ý¡ &Ð ÌR¦™÷4²§Å±Íˆ— ͼw¥†eÖãC]-RfiSÚFlX·àƒè ˜UÆÎYÌË¥:ç ž¼X¨åHšòYŽsÃlŒ¨––ãDtòâ55Ö)Ò Ç­ZoÚ'/F)vÂ~ ZçÖC£}“J¢ZÕ$·‘+k 9Ä AfÕ‘”e/»ã­Îaׇ핒!N\ úÆ-1gÀÝ–+ˆˆYHm·vÇóR¸zzWÍÔ²œà˜õø¡/9^ {¹ÎÔäbÊ>E®U `êõÊbf‰a–2‹•ºÞíEpÙuêõŠö6O Ýš›ª+Ýhb#]Š·¤žLŠÇ-»­mëDažáeÃPHî›$ƒ„5g1#æ¬p®S9,ãeO_FÌyD@Oˆg«F‰wÌDçé.”Ü=ŸÂ›©•÷jCh]aY®àI¡Nðõ.¢¼f?ô0À½®ë9/ÃÔ _ae£Õ9ˆ°«Ü}ÅË–E7àWNV-©×“¦+;ÝxŒ¨Ú21Yî‹ÅÀ^m¨Á¬=g1Ÿòå§:tUÈÉDºW«IÙâÍ„ý£¨M+é€Ò»­íTzD9gjr-£¨{3],ÞvÓ!NØmmo¯;‰›:!Š™¿÷Üâgf!e§îSƒi¹Û£º.ó|xÙ°ãvVèv{åy#=’çK Ërn^æ¹½-é€ kî /ñbÐã[*”³E*T{×w(ÙZ¦j8bMWØzPáùäbsÇ$~M׫¢Ta©4<ãpïÍæbR –¦ñm·W‚Oì„ù䢰¦FiR³ÜÞk¢t€¦¢õun½Û[Òež-v¼GIϹª2@¸ Óâ¦&eÝybDÕ®r\‚ˆN^¼æ„½•òŒ©Ig/ß$¢öÊšÑàñì,³M´õÅŒ¨†:hÈVWÂÒ3KžU ¦¦Å™Òň=E¬ÑX[ jg”©~r1d9ª·ò.Fè)À,e¼³úHWç¬E4Á½Á~ÖÕâvŸ…©•+BÉÛÙ’`­™+;¼NK'wWo[S=%~Hoöž— g¦©lÝëõÊbr~ˆgt…eeRìë(C öDÁ¬2vÎb^.Õ9'twòbA°Gy©P>Ëqn˜Õ’7Þ³÷]cDµÔb­¦µWJ†Èì鹪šÄq«ÖÛ•µ†â„ ³Ü;°×]?÷Û[ ®yŸ’+Ë[¦(†•Vg×ÝnSWJaþæå´ÒuE)4ˆç ÍæbFb†Ýx²aà{ 8ænß¾í¾±¢,JáqøL!rñëætG‡}sŸ}ñ¥Ÿ¼úü§¬V´ƒ»“u…­§‡Çv|f£•hXNVU»ÜM¦&ɤàb&ù@üèò£=ðž(ÆÏ¾ø’õ@üaëgDT­hJáqß<+ ƒfZsWòÃs~ôžŽV*ÐŒeó{µžćUhAÀTƒÁb0ÛD__¼_DYðÛo3Z©qÌDÁ¬ußA@‚CIĜŀ‡–ƒ›;¨+H"r€i``ŒPWúS¶›¨ÔÓ–í;…©IÞƒý6Þ#vö¹¾JkÚ‹q€Y"`)‰\|!zùŸ¼‚ãòÞ{špÂøDÜw°RÖ$Þ]Öijå ‘°ÇMüÛMëj‘= syÙ(‘?K‡[ÊZ ÒŸÆ#°T$ fYÆÚ­ís_üÎ'?Eƒ—¾Õüèò£ð=ôÀ{¢õöG£­) ™šª‹¶:ÓÕbJº¹)LMÊ^¾™ nn7;óÛ:·îÍö¦+ìêº/ííhÒª•O¬}²0h‹?]É7 Õ\+[? OvB·wí“«ªÈ s‚cf«' ÍË—o¶£æ\0 r<ÛüFä7ïûU¸2®‚¬1#Þl#ÂQr/,ej²fò"C¦Vn”\«RwäM9Y5Œ# Ýíœw«gS“òT²Èšš¦“ÈUŠ-û é +kK!‚Ѓ2³«œ«Ãàë”U"8Á6#Ÿ&9—_þÅ_€+Á0¡äŠ%>-äë»DrÐR_2C´;é®Û1<ßÑà(]¨|½‹è¯™Ç½\^^ÞÜÜ –ƒ÷LÑvÖç‹ß®ð￸Ì3Ä€ÛÌGôœÅ|ZÈ—ŸêÐU!'é^­&e‹7EÕ¦•t@éÝÖv*=bJ S“kEÝ›„ñ¶›qÂnk{{ÝÉŸ;Ð QÌj9¸¼¼<àÓ_¹çÝSÕ+«=ÞÁáS„1ò‘ðR¡œ-R¡Ú»¾CÉÖ2UÃkýK7,æ“‹Í“øQ4]¯ŠJP…¥ÉM°‹ uÂ|rQXS‡6)¢€Ã+kA"úë·ïLs'§¼y`dEeî 1¢jˆC´U¾BBPÄ‹YÊPÖYˆajÚ®(FVEÞž®ôÎÆ›¸ÉèÀ,ešÖ¤I§• ÉýŒhàÊÁ¡ZˆþfºõÖß@^E8FÎb^.Õ9'twòbA –u\*”ÏrœfcDµ¤°ç¬,Þó®;a¿ùÖöV5‰ãV­·+k 9Ä AfކŒ¤·þvºåàßBB"ÌìY,p—^U#vRCô—é•?¾šO¥1a–ƸbK¯W“R'õ7ð`YôN˜e9¸¹¹94@øó;íiîä”7„Ýxƒ ƈ î5•ü9‚ºÂöMV*Ìl±P•ÜF&"£(Âw¦[o½9xè´ E乃ûI”Ø^¿Íh¥Æ1âÈÁ¡Šð»Ó-ïBB-h1Å1BàpÉÁÁi ƒýׂÑ÷Àdäà¦*ü&ýö|ÿ":x(9иàÄw9ÊÀ™pÀ$&#ﴧ꯾ýo}ÿNÏî¹ bͨ3XE~¬Ïb°ÁPqÃ:§Ð–å<çõÚÑ»`ï1–Ú6·âS“$Í ©ÍÔ$IÛrŠ8 ð @LÞt‰Xþ½÷Ðw7›ðct,}Ž ""¹øÂ˜5 Vʚω†M­\!ö¸[‚g°°Öè{ñ²Q"”n)S“òÍBµ!2djRVÒªªÈ„”ŠÄ¾;YʼeÚžÍ&5“Nfs«Fež˜›ÔÄØÂÆª˨`brÐ ·(…Çá0åD›;(25'¥‘®S‚°Ýš”½|3AÝÜnöоýŸu…]]w¶¡vdÕŽ&­^¾IDíöÉBÕ=<>æV ŠU#*…ZWX(O:¡Û»öÉ‹UUd†9Á1³ŽÕ“…æåË7}Ûe{s¹˜[µ›‰›dwBW‹”©2ÁcĦ&e‹Û‹…?U¾>‚ljR¶˜rNgnÕ¶S9&ä‚ZÌ7'z…àËÁèqA÷·JĹƒ K™š¬™¼È©•›%תÔySNVãèE7d;ç"¦&å©d4ì$u:YIê*Å–}t…•µ¥`¹QYåÖ­W^)9ÝÖv*í2 ©íú.Ñ8Z&Ü ¾ÞIYe!‚l3òùÁ ³”Y,Öu™çi·µ½²"TZ»D éõÊb¦Ø]áV×WJ†Ê‘ôyW”ãq—æC/¨µóŽ©Iw“ˆÚ+k˜¦Cä }tùQøì)ßݼþ{¿ûé ~å_ü‰÷m¤}1—bU]”I-¦rCŠý/3GN`-õâÊÕñŽ™+è„’«*ø´TlÞ-MMʲ­ &œsrÙõœÔ.Ô ¾ÞEt‚×Ìãÿ)-«ù¦VÓ$í˜ÄïÖ+BÎ`‚{cûNíüN^¬6}EõzEHËÃ.¨›RÅtRíybœ9ÄC¼®{ÄŸÿÕ¿'¢wÿÂd–1E‰òi!_~ªCW…œÜv25)[¼é(ª6­%üèÕ#ª¥V°ØxÛM‡8a·µ½½î$nè„(fý§¬ëR²FI…æ“TÞ2ZŽv륲ºšX,\AuÕ`Ô š`¯_ÆØw— ål‘ Õ!¦+ÙZ¦j¨Œó6x•Æ|r±¹ã,ƒØzÏhî4íìÃ~!#:ê„ù䢰¦XF4 Òƒª@‰!f)CªZVƒ$¬5Òu6+QÀŽUCt:Ìq¾œ^58肚štö²3XÜÀ`1ô€ ÀÁÈÁwÍðç­!ÎxFT càÈ ®ä+!e—2TTuGUhq¶_ÑÏf)º’¯X“܆µv)CEÙÚ9ÅÔä"e–‚ZΈÑèÃt³”iæ{¸½KD³=¸¾¾žZ`ˆˆYH­¯¯‡;€—Rª˜°c /ÛýUH¶7ÊÑë•Åäü ª+,+“bû DÁÉÁI —³˜—KuÎ=y± PË:.Êg9Î ³1¢ZòÆ¥b"­X3Õˆ(,l(ÜJ-ÖjZ{¥dìå 7FT«Ît:"ZYkÈ!N2®WÚd+@ïëpE¨°Y¶VøSuaˆº·&î433ì‚ʆo@‚Ã)iÈÜÁÀ½ë<y¹áU5bWm4D™^ùã«9|“<ß)bIc¤rz½b1sBP™ ÝÐkæ4Ÿ=!2¾ƒ}†\P#ÊÁNçÆsrÃ33©Ý>óÌ·ÏŸš›íLûPá8ÕZµ]§GÇiˆ!ßµs÷›Jž¥‘@]aóÒ(f¶X¨Ê‡}Ù,#ª*¾J°‡rÐ'­:7®œ¾´ñäêý_[;wl µ4¦ô27wêÂ+¯\€’›MÆÏ×w 9‹eÁo¿Íh¥Æ1¢ÉÁ.ÜÃgÚׯßzãÇDLjˆèÍʤòëÖ‡ÇsêóÂ1×öÆ•G.mø£€\P­Î›WW+¿ž8óôËNÙ¢³}<÷Õ?œÿæòô„Ï<ýÊ…S±úÖÂΛ•ÕǾüzÂJ]pü‰¯­»¯a´qéô†W³Vâ LNPã!9xwé›Ç›;¢+‹ßÛH$èÄýïó(­ã9ussSͽ,}¡ò¦+Â.m$Ü×:7wìÜÚ3gÚíëO>w£sã¹'¯·Ûgžñ Ýz—ÜSDׂý-ìtn<÷Ø—oщœúòæææ·¿}‰ž~®AÜùo?s¦Ýn·Ï<ýò˯¼rÁ«»émžkbÉA÷ï£ùÏüy-û뉕b±å`"±qéôéåååÓ—6ŽçÔWžŽÍÍu:oê¯Þj·Œ¿ˆî;'i·o½ª¿Ùéø?â?v¼Ý¬pyyù‘G®ÜètææNæÑDbãÒéK‰Ä£ÏtÃl¾z¬SDéÕ€:&ï¿ÿ>[ Ï‹¹¡•´Ûg¤s÷áQÞ鸵ú÷ÃÌjõï{-½Ý{ï½Ö‹ƒ/ÖVÑq9hEË677Ÿ>ÓöÄÆ~üÆ-J$^/K§———OŸ¾´‘HЭ7~ì|äŠ-ºïþ÷‡Tè ªÍºðô™6µÏ<}á”W™õÖcŸ" ¡-œ›;õ©'NxU镸•€ ÈAOÌï»íomnõÛ|ksËgæý4B\PWØ>Õtl¢ROWXÖ9…®°,çà9¯×&´T_;ûKEéÅ8À,uî wþ™3ן¼þªþæ¹s÷Ñûî?Aí[æ:÷Ý‚è–óþ­7~¡òÎ+Ö\ÃÄÆ¥+¿ìQ„?zã-:u̩ǪŽ@h ‰è˜ðü¦`Ÿ÷ô¥ëO>÷pðÔÆÝÄ39è;rµö¯Ïeþ ïÛ¡ó £Ì¬”5‰w7î3µr…HØãÎ žÂÂZ£±0/%ò'AqKYkAú³¤–ŠÄA8ÀÌuîàÜÜ©‡¥Äëåo4hnîÿ±‰Ä†zõ-Gݸbüö|ô–þêë‰!§è8SŸ~YÍ·&Új+‘xýU½[ωñ5ha§sãÊ*ö€ïûî?Þn‡©Ì•ྟ;w;ýßü³ïXŸ~óϾhÐ_ϰ¡PÈÔT7Ì¥«Å”àÑA¦&±½¡;+óÛújopNWl3oÎŒMrÊH¥1 vB·wN?†8ÁÓ]]aM“‚b™f†ÛPs?J×Õ«ŸâΞùþ+§/IËe¢Þ¥µÇ„çŸ~ã‘Keû#¿üLl\:½a½n·Ïü³ÍßÙý‡O^§O|íü©¹9îÒ¯>öå'WïÿêÚy§^wêiŸyÚ»xy(á-­çÝÐÔ¤,Û*M.g®Ãë߆=(^¨|½‹è¯™Ç™™NçÆsÏÑ… §ˆè­«êF"AgÆ>,ÀÇÝ}ÜwO ùòSº*äd"Ϧ©IÙâMwÿHZ Jø±ÛÚN¥'Ô³Š­Ñˆ·Ýtˆv[ÛÛëNžßNˆbrˆˆææNøÊòò%û±ûhp?:h)FÈK…r¶H…jÓ•l-S5TÆy¼Jc>¹ØÜ1‰ŸºŒoq¢ƒ¡N˜O. kêÐø^D3ƒ®" GŽ®)1{ÈåàÝqå`œœÅŒ¨âm–˜YÊPVÕEÙž;¸+Š‘U‘®($;"JWò¡4¹ôqq“Ñ:YÊ4­I“-Žmr€èr°}à9‹y¹TçœГ µ¬ãR¡|–ãÜ0#ª%…å¸YËAb"­pܪõ&,l "­°_‚Ö¹õväb£ÁˆjU“ÜF®¬5ä'™€`TîÞÀ`ñ°¹ƒ=‹EòrëjÄ®Bjˆþ2½òÇWsà‰‚NQDÆ ûJÊze1)EqBP™…wÀ¬ËÁ?ÿ«×€=eüè ÅØ1½ ’gi`HOWØþ±éÑJ…™-ª2ƒû Àhrð»›×á°×lnTǬ!ÎÜÁý$Jl¯ßf´Rã˜!rpÊž¬„2•qA`öå 3DÄ}€CÆC¼g`ŽVÈAp”8 ¡®ôæp‡S“²µL5^bÁÁ7ÆHU@÷Þ{¯Rx<Š¥\|a¨M³ûM°^„kA]aYE~¬Ïb°ÁPAÀöžBWX–ã8Žãœ£Á6Þ#ºbé=ƲQÛæöb?Ðí)Çq½§05‰e%Íì+áÚ{¬­³GläNê7R‹©’*2dj’·ŠÞV™š$i»Cšê~ʈj)UTc8Öwrè ˆD!JUƒ`†¿Qâ䕲÷ijjåÊÞ7Mè.65‰-'«F£Ñh4éº% xÙ( á¥LMÊ7 ×FãZ¡™wô@`©H죄µ†á ’™[5:wŽj[f¯ÖÉ7/^³Ì×(?²ð™üIM­Ü,H<‘µy· s§IÍÓs†ÌÒ<ñò P±÷S>-ô^Ájp«F™%Ä{Í 9øì‹/EùƒÁAaÍ, ™Z7£«Å” ôH¶7ªdm½¾Úgrcu^í°£INÙP㆘]e|ÙܪQA± 1¢Rðé™ÔÒ@'x"‘v?†8ÁÓ]]aM“,¾Þ]-R泟Í74Öë^ œéÊïÉIÍ­ÚvjÁ6b–ºU˜[µ›‰›ÎÑÕ¢¥Ö‚¢ƒ¦&±,Û;äÓÂvø55Éãso3úïÕÑ=1ä ýÃÏ?6øo?ÛÚéܸòÈ#C°‚åÎ^N• Cç}ñi¡ï‚ºR[&Åàt›x¯Žìð3d)É/ß{­I§óæÕÕÇʯÛB³Ý>óÌ·ÏŸš››rAöÜÇŸ¼NîCS÷ó\agßHØWçÌÓ/_857£÷nÔ}1—bU]”I-¦rCŠªëÉÌ‘غ.ó|p¬ŽwÌÜHŸPòæë»DA R£j£ÁXŠ*«,Lný‰“Ë®—à¤v¡Nðõ.¢¼f?UV¹uKôzEÈ …ž`(nNÓÉ•×>yÑY”±W'í»;æwšBZM“´c¿ëž!àÊ4 ÕÆ°#¦&e/ß´’Ú7I߯‰´<ì^蘄ü•{Þ·ÆÆs}ùÖ‰'¾¶&›ëtÞ¼ºú xy0ss§.¼òÊ…ý=—­JŸ|îá©ëaD_Ş…|ù©]r2QïJƒlñ¦£¨Ú´”ðc·µJþhrÎs™_–ôv+ÖvÓ!NØmmo¯;‰›:!Š k ¿íª[9OÎûvR« )Y£¤BóI*o™ ­îz~¬®& ׯ—cÞ.D»WG‘åååÀã›››“ƒýö¸Á§ï]'¢÷ߟ%>Ž Ï÷èœÎ+§/m¸¡©ó\ìrC‰oV¾ •_·Ï©Ï Çb5Ã[¼}<÷µµsÇææ|a9÷í?ÛüÈ÷—ÿ`#‘HÐÆ¥ÓÞpf`3|6Þx[3î#»¿ÞsqÔðÅ }^²* ìTðUxóê>óå[nO߬¬Ú½[ä­«êF"AíÙþDÝw— ål‘ U¾7†“­eª†Ê¸!zPáùäbsÇ$~”§û|rq´Rž3š;M;ûp@ *jt0Ô óÉEaM±Œh¦jh}Ý ßQ›t™çûEZü ˆ¤½|“ˆÚ+kFƒßã“Î'+½’O ùº*PFbˆYʪ†µVXk¤ëlV¢]74#ª†è\KŽ³Â„×œRÞ–ýÿíËkWƆ,ú9ª)XhÑ:^ 8 ·Ø!‚cQŒ(F›6)»ÔÍZ”‹¡t3daL‘]„FÓÄ‹¤ˆ£­Á…º±L7Ù”BÚº×]Ìh4Ҽ委ïÇ,ô¸sï3æãžÇ8­UŸ– Š¢˜¡/-H®±ƒ½=v>¬;å*¹™s[«to&Wa±‚¢(Š¢L¾|¤7§eEQž=[Òµ ú‹œ7¥Ô½RË$mÕ~›’«UEQª…×”í:o˜-þ´cŒ±X¡ZUç Ë/‡iÄ Õªœ3fü¼%o´NNì¦a7–«•|]T`d.'Ž«ÈGDtTÛir\dJеàÉ«‡)©ÉX8ótP·{öÝZ…’r½îè>«å³6Ù¶ÆDz½¶æ'>+”LS¶S]&Û·F#ŠíP?ñ¾Mn© Öë»&ê¶ÞhK#„nÞÒÑÔIZ ylf)ã¤RbÕ8ÃÕvj­2¤MS-ŸmçòZߨHyí=ˆÒSÚpØÖƒ›››jPgèÃñÍÍMû›)ˆõÕñû·-ƒE-±ÞNµL‘ÚóÒGc¸¬Uß– «"<ô ÿ>v>,¤ÕJÜ( §§§UurÒªí4 gæyµÁÄ’&†‹¥æ‚1·Ó`,<%‰((L…kìÔZžÓ#‘Ä× Múð“1Æhë¥ßì ×i0›ä‰‚£7º?SãàðÓ°³’ßÞøùL{Â]¢±!oQ|åqbd€µ ‡ºƒ.{†âêø·³Zý9il9ÑÙFÛ3&Õ†’ò*eÛ‘þ7Ÿƒ”Ç$õÜìÞrÙÛ[-O7ËóCžçŸ¢eo˜`ÕÌ]˜½Ø¦½%¤Ú¹Ò¡¤Ü¾Ѩ4fï&ˆ.bþì %Ó “¼Ãîh ÐøÙQFSk¿÷ªÁNü€fuS¸£mתOˆ_ö¡ÉÕYüϱoob`bIQ–Èàñl×_Í-òtxÐ ÝlOw³àè ¢Fãà(èQɵJ_-›º­O—èeMÃÚJ¾{ S‘b³)­oÐ~ƒ(¢«AmF±I~°—¾‡ØÁ®|‹qw×àîKvÉ»IÓæèгå@¶½y“‘=#ú¤ã‘t3‚Í Í?Z5sµC()Ë]ËÔs jù¨ôâu²esNƒ ©eévj­l,ÔÈîÂ{ÚhÁíÕ‚’e7öõ‹mº•G°\«pšMA¯»ƒÿ3çÃYV«…ÓÛ\ÑþÁ‘ó˜ÝÍŽö‰(2zÝë®Þ«G ÅEÒrUQ”î øâ²¦aa¥>z ¨c¢Š$59ŽnŒêžb5›ÄÒO=px¨;x)”²îïü0û¦û;˲Y4šÝkW. „Ô2ÙT빬ACIù¬wÞ¼wJÊØõ\nrð?æ|˜eÐCcÈ ª¢â“ª»S˜Šp\³¸®½µJ%³»So¶S³Ž{ó…–0a¥´ºÿ¢ œ†‹Œsµ’×ÞøùtX»AqÃNà•'ôøn’‹Ôb½^w ã2·éï,‡fƒ&&ÎA|]ÑAàêqöÎb¢­ÜLEÿÂ"™§‹šI<©Ž>œÉå¦+DDá´ü8pø³éü‘Ä“ÂÁ§9)5-iͼg‹O3û E)5#™”Ö\.³cý×Ä|&R‘º2‹Ïm½cñ¦Ëï±Ònd¦7We)5›ZhãÐáµî œ5Û7oô/=‘X¾ÿáV|Öùüí­ñ0¾²h%fâ+Ï–&†OZ®Ø?ÞŽùùÇåÒå—ïb >Äûß}óÅgÞcêñ—_ÿ$¢ri-¿|·§FÛ5Wµ£ªž¤]r¼k vr@ÈAðnñ?Õ­hggŒÊŠIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/url_rewrite_example_a.png0000644000175000017500000001155412032647206025441 0ustar ebourgebourg‰PNG  IHDR š5*jbKGDÿÿÿ ½§“ pHYsssŒ"¹tIMEÓ%&å8è ùIDATxœí{lG~Çgù°HZ”dKÑ‹¤%1zXŠœD‘$Vä('¾Sε)`\ ¨‰‚¦úO8I+Ä>ßÎáîZõãŠCpÆ]z±Ý'ÁN´¤…ºµÝXW=¨—%Ê”(ŠzX"·Œ´^íc¸»\r—»¿ c¹;û›!4ßýÍìΗKõôô xØB}}}™=<4ò×y32%CqA@®“m`a@N£¾6†‡&¾÷þ;x»»»»»»¤ä"ÂÚ XÈ ‡…qîÜ9üñ­½çÎûÞûï€<€œÃÆßEQTOOû#MÓÃùë¼oèíîîfï|ëD/L<€œƒ« ,ŒÖÖÖÖÖV„P0ìë È•Çã<óÌóO"„¯ý’0#çd'‰uñ[ÅŽƒÉj9°Sµ¶¶¶µQmmVˆ°Z|42½’²0MÓ¸3Š¡·;)æâ ¤1<4±»ÂÉ|Ü]áT6ÙàOxØ{Øÿ+ˆÆœÄ˜o „‚Á` @³… n+@ÐÌgð€ Óòࣟ]ð×—Õ,öXo“÷È&¸l¸ÚÀ}®¯/ ±^½Mz×KÃCr§ãüIÞCw1g±Ë±@¼ÁéI²„ñÙÅÁCŸ]@èIYòà×+å2/xˆ“7¤·03Âc*öEZb ,Œ»ã>„Ð'ÿåiï'oô!EòÀpFP²FSüP Î̉°6䂇RX ‹kx'³±ÉõRô¼Ô€ìÜÅ–{’¶w_ÍßžþI|}öë‘ÁåÕ%N.wס—[öïÛã/S½©@@em(ðÓâNßPÓÂ?TW?B„h‚šÚHÓO»Ó•_é-C­¯lfžòÒ;_ýþëËWúBM]/äTÊþ˜ÎJDA£ ®„ †úc*ì§Etc‰RÊå+ýM¡›7n"„ØòȾ?IÐ)Lý®!’ï§/s'˜_}ôœ.º^>ØØÔˆå‘A,û˜Û–:'¬à:ErœÈìÿa]°nQ?o(öÓîtåÝú?¼]íÛö@ƒIœ•ã«,·­¬ŽK¨Bzy@?¨©4ý´hkòÍÌ7‘"Âbu$î¶ŒCßa’²aäFºB弡ØO‹6ÇTÜûQ—¯ôÿññ—ÔiÜü_µRæ˜U[€Bý1•?-†0¦ÊœÁ ¿— þC:sqÎÄR‡žÑþ¹8Θêò•þŽ':Õ­‚à¶%l#(¨¥q²CïSI$4<ƒ7ÄîS±Ëˆ!æqœ ˆ¹mÙ%ù{RF[{' C4Ρá™þ ¼ÍSa˜¤Ñ!Ðy¸ žŽÙ$#Ú~-ÄÂðz=ø£à}ª_}ô›Òboÿ…ÀŸ¾Ñ¥j3µÒ…þÑ8otnë¿(-ö"„fïL ÝÚ6¬ÿBí<ܦI Ó¢±6öøËp§g" ¨€ì£ý}*Üé™ñR0¨äÇÛž5õùïF#sqgA¢þáâÖÇÝî|Õ¢†F{mdŽøÒòôØÂLhem-ݱ†G w…Zö7iÝ. 7Ðþn†M]œø8´¶’dv~q!¤a“€Ü˜y£ïÌo£Ó–XlÙa+¿—ŸxQÉ¥ˆÖ-rcæ×¿sd%žÈ³ÜBˆ¶8ݰö Š1óÆÙÓ}¥ûì‘ë¾MU „(º¨Äq«]Óv¹„Ñ´AÓô©Þî++~ö¹Î¹ý‘‹?ŸÅûöU5æûë¶ý µ”Õ~ V*^‰ è Ciƒ¦éS½g+Õ>žw8œM‰ýÖŽ.ÿÃU6[ö¾,˜f €¡æ§ßý‘ÇWq°³}>Û±#ob|ªá‹=ÙÑå'CОÊw«¦´¹’!Øn f]@Cô˜7?À@x,xòíïW×øÚ;››w¸GGÆ+<ÅÞ=•ßý >eoãØSùžX¾gƒ)&w`&½ rL ÓèQ ž‹÷¾}Æml¢9<),,«iðÔÖùívI“o±ŽÈ¶[¤ô9±óoÈ­Ð#Œ©Þ}ç¶èÞCÇš?=r»Ý“S>™×çQw‚A³^dR ù\YU™&çµqêäYK¤áÙcÍ1‹Åréüˆ§ª´¶Þïvç§ûfƒ$$WhˆÇTÒùÙ?*uìß÷­Ê«—Ç­6k,©goEe©ÓéL',ÙËž™ âÈJJ@B€¶ävÞ°Æ«[V]ûrÊf·..Ät×îÜép¹\O4©2‚.YöGþY‚Éùe@:!·óÆôèrY,–¢ê…–C•ž2·Û­u£$ÏõOnç šNÎÍ,ÚvOúªËz¸9W„`Ú äpÞxïKI*±Ë?ÿíWkÝÀ€äpÞ(m [‘ýµ7A@FÈἪ2JkƒÍb4>7KÜMÖ?äùâÓ%å®D2¹«¸ ¬²Xë¦¹Š´19‰-¬âí›W'BkôúÝõѹ0B¨ÜSrëÆX]ã-›ä 9<ßÀ„†îxýÜä°»ÜQ¶Ç]Ýp_¹§!ô/¿þ7-šä6úÊrïúÍ®.mà\±MMMÍZ(êͯ0eNüé±?2Î"YCGÚ ä¿cv>¼ät:B‹‹K×ÿûÖ\x~ue¦éÞ¿î+.Ù[ #„Žt½81Îw»*¼%m?`0ô¢ Jþ;fG‡f™í¥X|)¶¼¶v7I'iš¶P–h4ö7ï¿qêäO-ÊårŽ M jƒŸ©¼RCJyk¥¤G–h#d¡m`d½c6[e¶].ÇÆÆF"‘ (ÊBQÉ$½±¾þÓ¿øæ‘§B6›ufjÿnš =¨ßR.¢Ó¹¸{ÓúZâ‘öûñöÊòêúú†ÝfC4J$’E!ŠÚXO0…þIgÊ€l#ß­ÊÞt®Š9Z9b`‹„o²åeÅC°ÎŠ…MùõúÊrß1{õóÍ÷u¬­¯æ9ò‰$E%-‹}‡=‘H,,Ï&“´ÅBm$æŸùÕÑÄ7'±íôv+ô%73–³æJ©TJX@zÑ-ÿ³å{ §Ç6GJ3S‘¢"÷r|Åj³R[›Û ›Œ.ÄçÂóÎÂæXv®[j.e :RãÚLø¾²f)ŠÏØèEHþ;f7î&ÐV‘–GÏŸçf†wEY–—W£1o5éª\_uÒuÒ  ¯ù†Ø¥Z—;/Ý]»‹Z_£Ÿê쨮ñæç9vïjnn:úâ хŧ_hY]]ÛÛ\Í ìJŸò,NŽæ³6ô‡9Fšè(oÈewIAùž¢é±ù§_h¹yuÒéôy*½Ý›zFGG&~ñwŸT×—UúJùäf*ÎYœ6á.-ÿ¨D,?•É­PLk!´·¹*^ø§ü},ÏÏw!Da]Ð4=;37º½±±QU[úÄÓ-b»Ê`b&X‰¹N¬"BL‰Y…éèkL¥€O=äß[1ò‡Ðäøí™épS«'<¹6xó®ÝZYY­kòv>¿_ë69‰îò†‚ë\Ë£ •Þ’á¡É©ñð?üð_ÿkð†»ÀYÿ€¯q_·Jå·ÂeØ<èNÊ(«,« .9?¦€ a(m¤Z20”6@E 2ßPùÑ̹ój!/’SkñöR…ÃÚUÀìÚà€×\æÀl€6¸0ò€Ôar@Ðâoœ´Ñ’Þò÷ I„˜ü’œ üòjÁñZ)¸jmXëÜ“9@Âà?€Ä¿¿Çö!¹–q¾`Ô-/UÖ/rº¸‚Ú™ÙÉçð|CcÌ:ær1W‰ Uàbçœ+סÎo!ÿ£àÿüsåVMÆhyCÙû—e¡‰9IÊ•’_žl.gŸ(8PádBBþ ‹_ S€=h$Œ—Ç¥b¹1ñžFÓ†Z ÀùóH?Q®ëHî[°<¡…Rô ¥F±ÈRÚLž2¿€ŠÃ-£iCÏ(û³ÉzrÊó»~:Ñý0ß0 Ô–ƒw²…¤âý±ë½¬*”åd¼¡=ä;¼h{—’2 aÊÓjÛÇÉ=›©Nú˜ŠßBéATÿv@ò ÜÍìÓ„£„°b‘û¥àGYsò6'¦`a‚\Snˆ–~®º 1»6Àò¡"ro¬éSk–ܪ‹ôÀƼÚ0ØP¸O˜7o¤døÖÔç¿Ìʼnú‡‹[ot»óµn=@ÂÄ—–§ÇfB+k+héŽ5<²P¸+Ô²¿IëvÙÆTŒ‡¦®N|Z[I2;¿¸Ò°I@ö¼Á¥ïÌo£Ó–XlÙa+Z²^Cå'DTr)¢uË€ìyƒËëß9²OäY î !D[œn¸ák. op9{º¯tŸ=rÝ·© „E•8îo~ó`T@÷ iúTï÷•?û\çÜþÈÅŸo¾£ùÀa_Uc¾¿ÎÇ.¬lY^vÌœ€*À˜jš¦Oõž­ð”>sèà\xÞáp6u&B]þŽoÖq„‘N-ªÄ²hc“ÓïþÈã«8ØÙ>‰íØ‘71>Õð@ÅžìèòÛlR³+ÁÞ™ÒM è £©”ybO¾ýýê_{Çcs³óî÷èÈx…§Ø»§ò»ÔËò=K´w¢Ìx8u1š6xb{ß>c6¶?Ñž‰Ž Õ4xjëüv»j“o¾ô Ì>¦z÷Ø¢{kþô|ÈívONLùüe^ŸGú8 0*¦ÖÆ©“g-‘†g5Æ,Ë¥ó#žªÒÚz¿Û¯îL湈y¯Ž?ûñG¥Žýû¾Uyõò¸ÕfEã/õì­¨,u:#p¬<éØ;bÞ¼aW·¬ºöå”Ín]\ˆé®Ý¹Óár¹$žNo‡³“SŒý‰¸I½aÞ¼1=ºDc‹¥¨z¡åPe…§Ìív«[…Á<¢füyƒ¦“s3‹¶Ý“¾ê²‡nV]h{nQ=8iLš7Þ{ãR’JìòÏûÕãZ·Ð)&Í¥Ma+²¿ö&ŤyCŠ*ÀkrLª”€'0阊 xbyƒxb ä .à‰07¸€'À€6î!×Ë>QJ|u“ à QÐÆ&[žØ²'Ÿjg<±7ú­]þ‡«—¬sœLäø„wÕ©C`¾±I:žXö2[¾-VìÁòü÷ 2§°Kò_ˆ*„ìÑ-ohè‰EÄ÷²²×«“Ë3~Zæ,zû«ÀÄöð+åÇóè|Œ¦ }zb1ì~)å LüYDÊS¤ïy¤Äìcªì{b9.(¹'ªެajm¨å‰•8O¯±j†‚¤!£©¤£¢'–= {s)-ô2XBy‚%åÞì®,Ì« ì‰ ŒÙìÖù;±ÿ\¶'VÖ~±C| ¥Ü ìg{n·0“Žyµ‘O¬Þ®,Ì;ßÈ‚'VoÀl^&Íà‰RbÒ¼žX %&Íizb OßÍ€‚¬¹ˆIµ‘ðÄ&S‘O,€ oðO,€¼Á<±òðÄÐÆ=dybÚÚ¨@@Þ£4æç2Ø•‘U]¦«Ð! MxbÑV§Ñ¤ë°k4gßÍ40ߨD•÷Ä¢­+z[ž´ãÌ!´ýÂO(,Xž\»`4±zÉg‰hŒ–7´õÄb8C&öE]l”CüZ˜m~1N4BÏ–ÒÙƒ=‰ü³¤4ØÀP===}}}üÁ Á—[ž;ý9öÄ"„°'¶ 0¿¼¢\ʹ¹¸WÅÎmìŽÁ`Þ¼aBO, óÎ7Ìæ‰5Ûˆ(}Lš7À ¤Ä¤y<±@JþÇÓKßPIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/java_request.png0000644000175000017500000010553112032647206023553 0ustar ebourgebourg‰PNG  IHDR3[¯˜?[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxì¸E³†Erœ“䜓ˆT$ƒ ’Q‘  %) HA•$HA‚ IE%y_ho;ÿ¤Ý³»gwOyÖžžêêêofº¦ª{ªõ2¾k›&7ÉŸ ‚€ ß ›0g@·v7Ç·Ò¿ ‚€ ð/ÊRÍ$7„ ‚@¤ €Í„(¢™"åzˆ‚€  ÑLr'‚€ D¢™"ëzˆ4‚€ ¢™äA@ˆ,D3EÖõiA@D3É= ‚€ YˆfЬë!Ò‚€ ˆf’{@A ²ÍY×C¤A@Í$÷€ ‚@d! š)²®‡H#‚€ Ä#GŽiݺ5Äo½õV™2e<¶Š Ù¸qãæÎ«9¤OŸ¾D‰mÚ´É“'®”‚ ‚@ì!àU3Å×È3dÈP¬X±ï¿ÿþܹsëÖ­ûá‡&Nœ˜,Y²ø’ǽ_Ä[»ví_ýÕ¶m[wJ9+‚€ à„@¤{ó .üúë¯Ïš5«iÓ¦ŒáäÉ“‡vL¼×oÛ¶íÃ?\½zu¼K"‚€ ½n3mÙ²eÅŠÀÑ—6mÚêÕ«·jÕ*EЏà–-[–1cÆþýûk\&Ož ý!C¾ûî;ÛVšÒ©PµjÕ™3gr6yòäšfûöíh,•4iÒT©R¥C‡I“&UgéeöìÙ?ýôSÑ¢EñCŽ3æÊ•+¯¼òJöìÙ!øàƒ¾ýöÛ *(å¾}ûFŽIý°aÃR¦L©8¸0ÿòË/7mÚ”Y³fíܹ3tÍš5sæ\ß~æÌ™çž{®téÒÈ£Xɯ ‚€w·™˜úq¯åÍ›÷Þ{ïÅ5oÞ<¦{:.^¼8ýúõë÷îÝ«ä¸tégY(Bo9µò)1ÚôÊ­·Þªˆ1Mºw»í¶Û%J´`Á4Ÿ:µjÕªìß¿aÒ¥K÷â‹/B†Tÿý·"Àöâðĉêù9äïÚµk>™ÓÑСC7lØ€2®V­ ï?þ £CAR¸ù曳dÉ‚¶V¬äWAÀ/·™Z´hÑ¥KfaúÃBB-áË¢Ì>…ܹs;vlÉ’%,Qƒ1ñçŸÖ«W²S+NÙþ?~ü½÷ÞÃÞR†:F‘¡ÆŽ‹"iÙ²åã?~öìY~ÑU,G±4…‰Y¥J• D Ú·o_ÕÐ˯ sFª†Y¹råN:¹Ñæ#RAóÚk¯OIYAÀ;ÛLÌ¿tƒ7ï›o¾A1P¾xñ¢ê¸N:0._¾L…á‚eCÙ¥•jkúEÃá";xðà?ÿüÓ»wïòåË+Üt§OŸ¦|Ë-· *Ž=š*Uª«W¯¢ÀPNr U¡ˆ1ìTÓJÜ]˜Ó7¿hÁ²5ÕœA@ðÀm&ZF…[Lw‰òPå{ÕJ•*…æhذa’$×ûri¥ù ìPggĈ;wîüè£P6J»œ:uJ‘qÊHZBE©Ö~Œ§¼—]˜Ãä¾ûîCó-\¸pù?DêÖ­›Ò¸Þ»JA@'ÔL¿þúk¿~ýX¶iÞ¼9zˆUœÁƒë>ØP®\¹­[·~ñŬåàs«[·.gÝ[鿯‹7X<Ï?ÿü3Ï<³cÇÖ«7n AæÌ™Y=´mD j —š:¥Œ:´þjUªl;MàÂDÂÇêÚŒ3P½ì¤@ k7£f"A@ÀÐ›ÇæÔst³fÍräÈ¡fv½}Q”CåÄ~‚7þ¨ôÙÊi  ¨_¿>g'L˜ O®\¹ðãQ³råJöVè?>ub—„ZýBg êcËÄYmÀc‹zl;‡Œ.Ì5Y‘"EXLz衇¨ÁTõj×¾M6}hJ)‚€ ø…@âuêW«PÒgf[üW=øàƒjãæ ʉŞ={öL›6]¬3åË—OícrŸ?>‹½=öÛ"hËÄíÞÊ(zÎð©]»6õp`½ n,í°™‚Ýá¬]±ÄÅB;,°Æ6nÜȶrT”h/>{:tè›ôèßo¿ý :Œê WõÊâeêÝ–8qb'æ… zùå—Yd¢GÌÁ¯¾ú ÎlX¯Y³&Í1?ùäFT‚B¥RþA@<"°nËwµï¨èÕfÒ.2Ô`¯<ýôÓLßh ÔÖAƒÐ “&MRÝcN©Éšå%¥Z¼´r ÙêÛ#4n4(ñ§¡$°Ð@|ÕôñÇ£>Õ¾m>'*[¶,4h\s¬)ÎzDÅŠkÕª…lìà¨Q£F»víL.ÌÙûÇ¢×èÑ£Ùb •0Õ\ ‰6E#"’ª”_A@¿HÔ{Èø®mš¸´ÁBá”à Ázÿý÷õüŽYðË/¿(]…‚ ÁFt’ 7NÖÊ…çï¿ÿ~þüyìý™­"ƬÁ­‡¡†~bs9•D6Òûô8¤ÒºÇ:rbN=\¶lÙlccP¸s¶m(•‚€ $d†M˜3 [;ß; ¦L™¢`bf_«%*±9”Z¢L}Μ9½X+ÎpüY ”ãÎZ¯k¼| ëÄÜ©^1W‘&tGRA@ðŽ€oÍĦ“°ø~VŒïÈ ¥ ‚@`øÖLxðø Œ{„´Â˜Sí¼I"³ˆ!‚@‚EÀ·fŠhXmòéÙ‹aÊA@ˆ ¼îÍ‹ÑÊ(A@"ÑL‘DBA@¢™Öõ–Ñ ‚€ ùˆfŠük$ ‚€ °ð½‚¨¬ ­ ‚@hhÚ´)ñ|òö­™`/ŸŒ„@A@pA€Ð¦.g§ôÐCíÛ·ÿî»ïhóV­ZmذÁÔ…í! va^¯^½7Þxƒ¤ºÐ¼úê«_~ù¥"f7gIˆn%³åFHòR¥J‘3ž|µŠ€d¸mÚ´Á–Bo‘ÁVW"áÝwßÝ·oß®]»~õÕWªžÊ={ö¨ò³Ï>»eËʶÈÅŽ ¼ë®»ú÷ïÍøñãwïÞ †xõêUÅA~A@H°ø§™êÖ­K ÁQ£Fé¹[—8qâæÍ›÷éÓgãÆ}ô‘ªÄч‚A3•,YòàÁƒ¯½öÚ’%KŠ-ºcǦfhþúë¯=z`‡Ñ”¸ @+\¸páèÑ£Z ¸_˜C#¢~44ÿûï¿ÍO?ýÄè([9 A‡Þ±cGÄkݺ54O=õ°P$iIÅA~A@H°ø§™Ò¤IóüóÏc‹0ƒ!cž­^½zÐÛ·o×§R¦L‰s «s„9wذa:uâ,¦¿è­³gÏb‘+Vì¶Ûn;uêvÊF¥fâR¸÷Þ{såÊÅ6ùB… íÝ»Ê{î¹góæÍçΣŒ‰öÀP°’Yy¢85j´oß¾‰'ª³hGÆR¥J–ÖJ—. [ê/]º´uëV,žÔ©SW«V 5fL?obkËzþÐ͘G*?}ªT©È@¶h}9A "à÷—¶5jÔ¸ýöÛ¿þúkyCgÒ¤IlˆÀGGÙ˜76{öì('`E3¡´h¤¬QþùçŸ)OŸ>]…¬à,öÓyû?Ml[À“¶|ùr šà^ƒ&S¦LåË—_ºtiåÊ•I£ÒJfå†õ–%K”(R¡b!ضmÛ•+W”ÃCäçƒ9—•ƒµÆ–dÄLÃW^y0­ ¥F„Œ€ßš °°˜sqÓ)àð¤Íš5‹5ü‡~˜uï»õÐpÀRa*€kðý÷ß³ÒC×è Öu4¬®… ¢–0•ЈNdš^Р( š`úèØ±cA¦L™2Y³f…Ø–ø`t6hЀíˆü” 6D•‚­TR)‚@‚B Qï!ãÝCÀbÓxɨqþüy¦u°c¿ž.vÄyÇ ƒù-.M»DDWŒT vŒZõ^÷ËUºtéœ8x$³mΈðõ)Ÿ›"ÀŠbÿ;ÐR˜>8$U=Zmd»•Ò¢“ðê1Âpº ASJAèB ÏÐ÷˜ÀÙRàS›¨©>u&[D”Zâ6-K¥²\ô©#GŽŒ7N«%êu¿îsºG2Ý‘±`‘QK)qiuÙÊÁ*-Û󬕚ƒA@H8M3…2¾Þ OG{aç ]‰…LAÀ Ѥ™øŽÊßPê^ A@ˆB j4‹a|Q+É#êîaA@Q£™<6S( ž‚€ …À{Ã"J,FA Á" š)Á^z¸ Š€h¦½0"–  ÑL öÒËÀA@ˆP¢iDÐ!d³_Ðy CA@8" 6S”æ‚€ AFÀoÍDhm¢w%H…²8ÂNA Á#à‡7| DÿøãÑI„"%qÞ8Œ@ ‰ŽJºLDA@ð‰€Ó7A¾‰;N–’5ƒ•Œé¤«ðÙAø ˆ­G^Z”hø»–A@⎀WÍDN¿%K–IïùçŸW‰È¡ÇŸ’€³cÆŒ!_ù/jÕªÕ²eK• %A>½R¥J͘1ƒ$={öܽ{7e²•wëÖMå,÷Bƒ5jùȰ}‰%è—1¼ëÔ©3aÂúå°H‘"¤¸… {ŽÜ†¤N/Y²$R¡¥È’ ‚‘ÉiÍš5¤‡'7‰—⎠pA@.^×™È¤Ç S… t¢<-^¾=zµï™gž!sàœ9sȼ§Î’y}Æ äeGC``‘âõF¶=ôĪU«<Òôþ$4êÓ§½0@%5‡9|ÈÕT¾|y’ÉÒ/ Ɉº"sš‰¼‚ÔŒ=šU±¢ŠT iŽ=ªsà*1äWA Bðj3©˜u¶y‰Ð=§NzðÁI/[·nÝeË–¡ŠH¡Òâ‘soèСäÓ[±b¿Ã† C%¬^½3HCàNÿ³gÏŸT¶(L®Ã‡+s EEÚÙŒ3b¡œ`˜/_>ÔiýªW¯Î!Ú”¶¤ $ |íÚµ•H‰¥eU±Z)‚€ Ä#^m&•…hóæÍVYOœ8A% ×ùeºGg\¾|} (qÙ¡x’%K†V ã¼j&&î4,A?}úôfÍš±áØOŠC–,YPK”é%dbË!òàåÑ8dÈrœ8p@U"Œh&+\R#‚@$ àÕfBñ°Û%¶ŒgΜÙ(ºÒ %ªòäÉ“ÌûALÏŠú3ÍÛµkgì×¥lÔR8Yèš;w.ºmäÈ‘ìãpi(§A@â¯6Ú¨aƈ۷oß­[·â¾c¡hĈ,U¬X3híÚµ¬Eá²ÃÄ©Zµ*–M°ÆV©R%r¥³-péÒ¥¨=:bÃ… óB… á{ܵk `ˆÇÊþÇ~˜ý„8úh‡:lÚ´É…‰œA@ˆ/¼ÚLÈ׺uk&wö¹uïÞCfy )|bÄøyõÕWßzë-l+W®Œ-ˆã¡S¶N >|ðàÁ°¥»^½zåÎÛ©‹úõëÿý÷/Üø«Q£Æ‡~ˆlV¸pa¶EÐê?þ`;¿N¤^A HÔ{ÈxÒźH€±Ò´iSµGV¿,™–j~ýõWÔU­%“T¿ÿþ;=²hdª·=D`6é) 1žþþûo4œ‰Râæ™‘CA@B‡ÀÌ™3ÚĶ£aæ»Ü›Iqa®Wß!Y™¢ ¬•A¬±ªæF­ƒ² ¾t‘AN ‚€ €€×u¦XKA@A <ÙL˜`°–&‚€ ‚@øÖL¸à+MA@Àð­™ôÞ‡À:V‚€ ‚€_È:“_p ± ‚@ÈÍrˆ¥A@¿Íä\B,‚€ rD3…bé@AÀ/|ï€ð‹]”óÕq”J.b ‚€ ]¸GRcÍôï5­YçÁ躺"­ ñ…Àª¯¶oùD½ÿ`º—V¢™þC©Ê­)ÿ;’ ‚€¼HuÒÄ!\ Íd¼Ô ‚€ ¸" šÉ9)‚€ v’&Iº>Åf ¶ÂY˜E@l¦˜½´þŒ,ˆ¤&?¯_ ¿ûî»Ë—/—-[Ö¯V1Ll £ ÃW\† "E3‘-ðìÙ³d.Ï’%KÊ”ÿn°}ÈC‚ðÏ>û,cÆŒþj¦#FÔqöìÙqÄðÊ•+I’đܮma J&–Ü©áSO=E:æyóæ™:ò÷>'Ož´¶šœÉúÎ;ïÄ”$›û›o¾i8ïà09sæ n´æÍ›çÏŸ_3¹ýöÛ§M›Fvàgžy†ÔÛŸ8qbìØ±»w&/½ô’â¿fÍš & ")R„J®È¨Q£˜_räÈAe‰%¥ú…ùùóçùå³¼—*UjÆŒä­ïÙ³'ü)“§¸[·n*[±•Û¬Y³`ŽzkÕªb”,YÒJ£˜!*X° @Agµª×23Z‘·vít¬p9Q*©L¿F”¬—À×­[×·oß[o½•†sçÎ=tèP×®]­”š­Ur[иIÐ÷;vìà‚r³ÝsÏ=Ö†š§©`íÝ»œ:3µRHÜ)R¤Püƒ.§Il9Œ ._ ¡fòmŽñx/Y²„òùçŸgÞIœ8qêÔ©c—ç¤]»v7îׯÏ­"àÁ{õÕW6løÄO|ýõ×.•ÌS<ùL»-Z´xî¹çöíÛ§ˆmÙBúè£êÃ,€É|À|=uêT$a~a©Ìi ÌÚLý>ø`½zõêÖ­ g&ñgŸ}&MPBè’ 20‹Ñ;4¨ êiD&ž¨jÈn•'OTš> >èTÞO1³àúDë[‰Ñgôr÷Ýw·iÓF·¥ÀUÀ8cµ -«”7½c´!s±bŘÔ0€ÐÓ¼=[Ë€'TW¬XÁï°aÃÜ2'n¨¥«W¯V¯^š•+W:õ¨!2öHÙvÔÔkz°E>_¾|ƮȬp9QªKiÏth½•+Wæãz¡›1OŸ>]³fMZY)5+“ä¶ aIƒ$íO?ýT»vm%›©¡fh-X{@N[Û ŽršºÃØ@àò•ÿ&½/–­½÷î;lÇÅ)#¥-µÒ·fR™•Éomo¬±>'jÓ„éÁ³­T|¬Ó.õV¶Š8€eƒµç¢bñÁ\¹¡ c~G©0w°éƒúL™2¡–(lÛ¶_—Ù«eÒ¤Iß|ó Ú…2“ôê²r›äÍ›—?ªËJ¬$Aïþ»ÿ$¨%¾R‡x9ÄR™9s&Þ °Ÿþ¥¶ûnÚr†y®¡7â…› †ÈÔ³uÔÊ-¦éÝ‘×ܜȬp9QªK©Z ¶× ŠÛvÁ‚—k×®­R¥ /=¶”V†ªÆ4ÇúÇ-ÌËÊüùó_xá…B… 9q0ÕÛöršÄ–ØAÀd}öÕêúuj˜FG¥‰ÌDàtèÛ›§VD7oÞìÄBÕóœàãnݺ5î5Þ¾Õ¤©<ža<Ì ¶­TL¬Ó®-[E¬fX&V=ÃâdS§øÕA³fÍØ¬¡ækº†˜_Mf*¨IŸXU^ží&25«*26Jñg"Àaµ£Š¹ SÆtVbuQ@÷Ø+¨]š¶T¥šj5j„?SýatºÐ»Ÿr᦮)Í]hÜ™sVÚD鎼îÚ‰Ì —¥©_ë¡íå€ ›†_œŸ(o¶¥‘§–Ü 4œÆ'NÄ͵ÖÞ]8è†FnƲSïÉ©9]NÍY 1†€ÑG§ÊŸ|±Ò8F­4F—²oÍ„Á‹ Üq.ŒœžÛ϶Җ¹[[bc¥Óf¤±–Õ/Ř2tz«Zµ*ZÍD‰ÛuË$…[’ÕvC(m÷É'Ÿ<ðÀ,B°‰‘&ØF,›£Àp—á»SLx—§áÎ;YCÊ;7rÚkI y^ÕM2èÃJ•*a‘°EeéÒ¥¨R„gö×’h2[n´å]ëy×®]¬ß8Ñ»0 `µ‘˜²¯yc×Ndº^Ã¥k¬ u×&!U½íåà Kl0d¼š8ͨ±¥4ò4Jn >gæöàKöá·T2ª³êf³íÝ»œŠ•õ7`9­¬¤&¶¸rõë¿Ù‹V¨QS°ž¥Æ#&¾5‹Cì_€Û¶nÝÊb 9ìJà¡2öaûœØ>x¶•FVƲ-[#SÙöcÖf»Ä¦M›œZñêÍ"S[XcÂÙb%ÆêÔ©ú`ýúõìøÀÕ©´ ™¸±óX„@£³§‘½¨a† bІ†Ô‹/¾ˆ>cÑ›J[b% Ĭ5mÚ”¥2«ª†e6v(°)ƒÍ“¼w³ ¢%Q4>_À5s[nœ­_¿>zwÛXœh4 &¬£6SvAÞØµ™.'Jc¿&!J¶—CµÂ·žÚ®iKiäi”Ü4¾€æ‹@®Ú#<Âö±TGƆF†”Ï;ǵ†Ì¶wïr*JëoÀrZYIMl#påê5Û3,ãŸí)*=b’¨÷ñ>³e0‡ò&“¬Ò¼Ù1í4ˆ¹I“&¸MØÀöû￳í˜í^ìcæÍ g´ IDATìe‰’·¼Â… ãÐÃÚ€ÒZ‰¸ševµñËCkË3b\jÌÚ± •fgžóû￟Å$$¡»>[(3O±#µJ“Þ½{ßu×]Tê?ò3‘ÃkœOS¦ÕZÒM°N0wØA@/¨™5j ÒôYU` íEnLÍLgzŒØ8 Ñpº‰•X‚ÛK­ ibÛX3Æœé,ïã€Þ2Õ»ÚrC¦EõÎNs[+[—Q[‰7uíBf‚ˉÒÔµ %§ËajÅ¡OJ“äVÐx›Á¤F%˜˜²1× ÔV8¢ò)bŸ½kžÞ)U“ÀäÔÝI!† Ö8Y0žhúXcœ>s–»Æa6Э'ͤºçmï¿,ðè¹É$™íÝoûàÙVš¸éC[¶ú¬{Áú€Yé­šÉJcªaj` Zgß‚¼ñƘ&롞£­§‚^ƒ¡ÆFæ;¾XBwÞ{ï½AïÂ#ÃpŽÚ£Hš,rPÒ"ÙöìÙà žÞíÐLÊh³¥”JA Ô(Íôø£Mèè£Ùs¼h&ß{ótßh#ýuž®4”‰@¥r8¨³XVãöÒÄMÚ²ÕgÝ ÖWQwzgÙxˆrb ƒÚá¥!Ÿ(…mNa|’¼w³o^ï×÷"dÐiÂ9j…”Ü%/~ãÏFÎ áDàÊ5¯‹FHå‡f €{ 7Aá•»ñç×Õʹ_M&ÆUÈææ€›±a8Gí¯Ø‘ƒ’¿’ ½ ¿xß΀œ¢™Mš‚€ Ð¸çhœ.ŠfrGN ‚€ Ø#pÕópûö®µ¢™þƒG%·ÿïXJ‚€ ˆÍäLP«ÙT~ÂLXFà«Å B7<±™®c뾋1tè gA@+ÿ}éi='5‚€ ‚@øÍ~Ì¥GA@7D3¹¡#çA@€h¦ðc.= ‚€ ¸! šÉ 9'‚€ ~D3…séQAÀ ÑLnèÈ9A@ð# š)ü˜K‚€ nˆfrCGÎ ‚€ „ÑLáÇ\zA@pC@4“:rNA üˆf ?æ‘Ûã?ÿüsìØ1rÛÇ]Ä>úhæÌ™qçK¶oßþÝwßÙŽèÃ?œ;w®í)§Êš8±’zA Òˆ®‘vEâMž©S§~öÙg¿ýöÛµk×J—.ýöÛoÇE”Å‹£çš6mjbÒ¤I“_ý•ÊäÉ“çÎûÙgŸ-S¦Œ‰&<‡W®\I’$h÷ÿK/½tðàÁO>ù„$¹ûöí{î¹çš5kÖ²eKÆòæ›o&Nœ¸k×®o¼ñFƌǯhä9õðû=€&V†ú¤NðŸx≢E‹ZÉÂPcNº“.¢±™¢èb…PTL¥iÓ¦U­ZuáÂ…¨¨§žz*teË–í½÷ÞcÖf*Ÿ2eJè:ráܹsç'Ÿ|Ò…ÀßS¥J•ºpá¡C‡h¸sçN~÷îÝ«˜lÛ¶­\¹r”ÇŽ;hÐ U€4Q}Y ,8nÜ8øæ›o&Nœh%CM‡i¥‹0#´wÆ0Ë-Ý“'Ob*ýòË/:Ùoü)þ?þøã¨Q£öïߟ#G¦’%JPO!}úôuêÔ™0aïÝ)R„zl,­Ÿþ¹V­Z—/_v²H’&MšÿÆß¬Y³öìÙC¿t›ëÌ™3eË–mÞ¼9'u/ÕªUC{õï߫–&W®\h…3f¤I“¦gÏž»wï¦ÌºuëÆ/|¬C _FD¿­ZµÂÖ)Y²¤•Æ*Àßÿ‹rÇŽ µzÏ=÷@£ÿ0>è—³LúÈÉØÑLtqüøqÆ¥4£·~ýúYP|Ö¬Yc‚Tó÷ÞÄv,š*p 3_¾|¼Žœ>}ZUÚ64^Sìé?ÿüú6mÚpÑ»wïN1kÖ¬}ûö¥lË@LЙ†Ã7iÒ¤öíÛßvÛmJùMàˆÍ”Ào€‡ÏÔÉ¿~ýúŽ;2k«Ú¿þú«GÌG}úôI”(Ñ€˜j9ÅlËŒÂ(_¾<3ל9sý!C8Õ¢E Ï;§*mqã,Y²„ù¨P¡B¸¿pv¡èeãÆLaª ¬X˜™>}zÅŠQN46lÀsˆvÁ{íµ×`‹o ñV­ZÛ!0ý¡!R¥J…fÊ™3§- mMŒ=úÈ‘#d¥•i\èlB¿Ô3£›™Ä¡g›9sfÅ7 &«S§NY!U§¼7q‹æ£ ¼ÐØbçÝ}÷ÝT:54^ÓuëÖ‰âpôèQ8¨2•J½91±BgB1`bŠ¡ü b3É=pÞñßyçB¶lÙ‚ ôâ‹/b0éŸ={öÁ,V¬S 6ÁáÇ (=ŠŠwg–FxÍG9QƒeÀû2­4hÀ!|˜þ(XÿNœ8Ѹqã‹/2_wêÔ Ô!¿(ª¬Hyÿ( ·<1žXÆÀW†/NÏtº//4šØXpvÎC´ï¥K—œhŒ|XAA[#êã’™ÝxV•AÜ~ÿýwœŸÔð‹Zbg¼2.MôFL§œ½4ñ2ÍÿÑGÅ¡Ê&\v¶ ]®)·˜¼úê«øEO[&NЇíաC‡M›6iÙ¤ÀÍ”Ào€‡BÂUÅ6„Ö­[ó¥Ë?¬0³§€ÍxùØGŽ¡ ÷qYQC-ñŽBb¹sA½>[ɬ55kÖÄý… ÂÞ^®™ÈFŒa"óBcj¢†P¿~}tN¹¯¿þÚ‰ÆÈ­†˜€ðÈ#°ý­Ƴªœ.]:¼d”ÕFõ‘“ÁdÀÊʶÆK/cÑ̹Ðl±C7³8‡!k½Ö.×K>cÆŒA*­§m{w‚Î8T8–:¿Z6)$põ2¾k›& >0Cá·a†RK;FL°°Ø–m¬´-cܰÞÔg{Ö¥•¦V˜ø˜­Ä^h¬­Tí0›Ð» Í…ÆÈˆ°ç˜•q)›ðÂÊcÛñzáom¨¯)/.øßøÜMñá‚"üYÙZ™8Açq8Ö.¤&V6a΀nílîªX°ŒË–…0#li¼ÏÅj3‚-÷J½ñUáDé…Æ©­íL:Ø–ÆÈˆø3ÖılÀ 7M|ŽÅ©/kC§kŠÖ;'è<Ç©#©UD3Åê••q AF K—.²g!Ș ;D39#Õ‚€ ð¿T¨Pá+äH²"TÈ _A@ÀÍnÒJA Tˆf ²ÂWA 0D3†›´A@¾w@°»{ó¤™àâ…—Ï΄À'‚³Oˆ„@bYgŠùK,ì ʸÊbeZjøC 4)Έ(ª!"‘‰´õ¡A@!@ª{kÑ@÷¼õÖ[ÆcùóÏ?·Í9b¤‘² /Df—åË—oÞ¼9^’NhA€„Â$ó5æ!)‰J¦-C9…@th&rB“ÁøÈ)é {LÂPÒÌð¶¨#zõîÝ›L?¯¿þ: &NœHìê=z<öØcóæÍS­xO$ýAÆ ¡Q‰¨÷Ýw-Z¤äWˆFJ—.M&Ò*áñÔ‘æ\¥á°}RôI×»oß>uÈòcÇʶ‰n"A ¤Dfâ‘#AŽ ‹\¹r½òÊ+dGíÝ»W%ýݸqãxU$§)úöíÛ¤I“çž{Žæ* '©€ªW¯Î³ŠZâSµªZµªJ¨cêBhA€tµk×&㔃鮻î") ‡¶OŠJˆ,êÇG½Ú>&º‰"š)qâÄ;vÄè!½˜ÔOŽ9È›?þýû÷ëSdF÷ýšþ”IµY¹reò’;wmDþÖòåË“%ºxñâêõ†ÐdSs‚ àÐÛ²e ÷9Â+ͤFáô¤8Ñé1q¢—zA ¸xÝ5Ü^à†Asï½÷’w•Ä©ºùÊ•+ñ]ÁìСC¨"]¯süð©ÊêÍl“Z/ ó.©[IAˆvȰU¸pat’ʫ˻—‘Ó“â4^yLœ‘úð 5š 8HqÍß§Ÿ~ª 9pàÀ›o¾ùþûï£]ºwïî/¼‚øôXaÊ”)“Ç&B&DuêÔY¼xñÉ“'õÞ/Oʵk×#†Zy•Ç$Š®xLŠÞ<=Ù¾Û¶m»mÛ6µÙ—ù7³fÍÊJïéÓ§Õåó",X÷ÊY³f)Ç:.>Õä§Ÿ~R>Ÿ„@ˆdî¼óÎ#GŽ|ñÅZ3ù|R²gÏŽŸœ'ŸÄ… ÓcÉÙb hÒLàÎû «GêÇŒ'Šy|ÃQ³fÍ?þظÔät‘X²bgËKìÖkÙ²å Aƒå„ ¾üòK§VR/D ˜;¬ªæÌ™óÖ[oU2û|R4h0yòä§žz `æÌ™iåô˜D "g´#¨÷ñî!öˆèJ<·ˆšóûï¿c9qΟ?Ÿ6mZï׃ìH–,™÷&!¥ŒpœC:vaÜŸöã±›4iR“$‘ö˜˜Ä“Ã(B@÷©MÔLMëL¶×@©%Nù¥– çÕÒ–¡T 1‰€û“’ìW‚Q`ø”ê#M~‘GïxÕLp|ã7Úµk7jÔ(l^ÕuØ=Û·o¯R¥ 9úÈ]¦’ÏÚVª&ľã•ÿ¶Ûn#ÔÐÆ5Ÿ „"8ÁW0#(ß~ûíÕªUö;s挋tïMT|?mªò]¤ªqªwEA@FÀë:“ê€ „äbžd}8ÓT%¾5^çÙ¡óäÉCÁ¶Rè¯ÍÙ=¡÷©Sþþf̘Q5!Û[3(ël.øÛK$Ы‘mS}ÉBR±Òê#Af‘AÀðO3ÑGÉ’%Ù’`Ô($@B3‘ñ(K–,ZÛJ}Vˆ^®\9Se°½¬¾ÂÀl ¿Ä–}ð§»Ã‡«-‘NõaIºA Dxõæ±÷AEòf+ëCÊ0R2±¹™¨ÆS¦LQIšq¦Qo[©èɹÉJ‘"ׯ_O/Ds D=†”-»NØþðÙgŸÑ {=È—X¿~}ÊNõ!F˜ ‚€ R¼ÚLh#üu¼¡3’Ú\»òŽö°eŽÍ¸ÔPZ#GŽ´­T#9~ü8›žÏž=Ëú1mpÇé"@p; :7ò¼=ÿüó¬“a‰i‡6lH/ì´ `nñÞPo7IâTo"“CA@"¯Þ¼`„ç$r6q#÷¹©FA@,ž4“_ÑË}C¹ò‚îø¦O0AÆ9Áà&CÀ“fò²þc¸„8×™Â/˜ô(‚@ÜðëÍÛë®ñ¸‹%A@/ø§™¢.?Sôf’|K^n_¡˜DÀ“7O<œù™èñÁäkܯ¾úJoRŸ4iÒ˜1cÈ‚At>#t¤< ™_ù–@‰œUZdÉ’‘©ÄZ€ ÒDxDÀ«f s~&ȪU«ˆq®IÁä«OÅjÁß|K„W¯W¯ž kñ¬”A@ˆp¼zóâ%?S5tšŒï¿ÿž¦:gàûï¿ÿä“O2#]gå@=ýôÓäãÐáe5úëÖ­#V‚ŠŸ¤+#°à”o çÞã?¾k×.%sïÞ½¡ #p "’ #àU3ÅK~&R~óÍ7*ßâÅ‹–1‰D’@r¿ªùý„µÑ±cGL«Ö­[!j¿~ý8eŠOa¤‰²S¾¥9r7ï•W^!vP@¦;‘¨é»D»P£°ÖDÈèD A@¼ àU3Á+üù™9AŒ>Rb±-_¾cH‰€r¹rå"L*sïÞ½Ô“ƒ?Ì&¢("0⥗^"Ð_ñâÅuóˆ-¸ä[ÂFÌš5+æ |±™¬ÅÂ… ‡ÝøÛ¹s§SMÄŽWAÀŠ€×u&Õ2üù™0›–,Y‚ÅP¸pa•šHIÂÎtñOI¨*اOŸ¯¿þÛ‚Ð|ª» 'Y Õa„ÿºä["õÑ]ɻظqcΕá´oßÞhMÚÖDø¨E~ØLÖÁØ&I‚Œo`y&48{ÄUè *1¤Ú´isçwÂ@WZyJ ø¸YK*Å·ÞzK‘agÜ–°ÔSc ²íe‚²U«VÃ%ÐI¡Œ1–ظ¦J 'ˆ¢¤Ç-[¶PF€•+WrM ÆAôsçÎq A ]#O§2Á±“”B"’ºÖLD÷ î”S+SýøñãwïÞ=bÄ$'ÒR9+$⤙˜LI’j¸V°ˆnGî‰7R‰‘´}ûö*UªÝ®téÒÌV ßàj£D‰LÄ\WÌIã‹éCú '­—‰•v‚äÒ0uêÔÕªU+X° ÎöO&÷ž={Μ9sß¾}^äoÙ²%T¨P€³”ñËÁ“|Þ¥ù?þHâ(ÓŸÞÚ€¿†Ž|ñÅ¡TÝ¡`ˆŸ/_>/½CC¿D£gZW9D¨‰F Ê”)CBH‚å{µ 1Œ@œÖ™l“$–NË䢒‚³ºË´N‚Î[| cº¡‘V17n ^­ªtÙz™vìØJÈž=»“¨(¿ °1MãD£ëµ>@½‘Ë‘z픣ܰaCM© F$A™ñŠÃV‹E‹q ƒîÄŒ3êKÝÖK!b¼ø6Yló2@¡bÀ5“S’$#^¼—+W޼Ch&VG$«Ÿà–mA¶½Lè’çb¸`3!ƒÑ•§Ezî¹çØS ¶êJ¦NÊ\J\pºÒ½À.»o¾ùÆDƒCÓÙXÙ¤IRj={–;äñÇgg‰W0æŒ4îeÛQØ6‰L x± Cfýúõme–JA A!¸7Ï6I’ÂŽµq¦ Â~¯_¿Ÿ•¸kp@M™2E-TàêIP(‡g°¶ Û^&RâfÊ”iÞ¼yèöX£½¬Ó:Ë…YƒŸ!¶”÷+1©MZ-aϱy.pð¢W¿¸àõÕ?/è1§£É¼PB™@1^FíqB&Ä6þi¦×^{­úÿÿá²SI’¨TI’öîÝ«Àâã7Éý §’¥ çÑX¬y°R"»cCqWÙ‚¬sY™.kl`O _21SÛúÍØ;Îê‘õÑG%©.ŸX±"Â>:]—F–ôèÑ£QƤÃì¶pq6Z{äf›?>[!¬§¬5‘ ‹÷­ƒ’A –ð#?“í°­I’p±"ÍV+>:Q…n‹Ò“®¢t½‚7Ï ²õ28ö+—‰‹å|öã1­W¹¼·u¡ä{ÞbÅŠµ[ÏQ6¼ñW¤\8p û³Ã¯4(‘ëjhVö‰èµX÷ÁÊYA êPqó‚ŸŸÉ­{ôŒ v¾2¡ØÎ_¸ømùHe°‚l½LtÀû1³p®Y³¦‰q(p6²™“LĦSÖCöÐSÉö<}Zilk"¨Ÿþé /¼`+§T  Àw@$4qB° IDAT¤d¼áD€u#Ì&z4mÁ§ áì‹Ýª^tp8E’¾xDÀ“fò+zy<&Ú»œ£ý Šü‚€ ãË—/óÍ,_ªÇK‚/˜²[Ïnˆ$Ë÷¤¨%âPÜwß}]ºtñÙ–4Eìï*Uª”OÊç›p|ÍC°mÒ5Ýÿýª;¢ \ŽMÞÔ󥑿ÝëC*¤0A tø¡™‚d¤³#ùf¯^½ø„Ö¯o!C7ç¡C‡>|Hí!F9éÈÖ&ÊÈ<$f¶ú²‡ø DV%XªÚ«=|øðòåË“u›‰™ :^¶lY†àT™£©A@ð‰€ßÞ<>Tª`º×ñilsñí$¡¬ 1 ¿dJ%ù…5on¨Ž;B‰F¬%1Äp0å"²ò´vÍw!dv ýi ‰¶¶ÁÁ6M‘•³O(ƒE ?8%(žT„:>qŤSöf¡ÜÉ'BNõÁFø‚€ ~üÖL„3f ¡6 .¬Äµæ" /òè&Sý• 'ãÆ3åm‚’ÄBLÁŸ|ò ¡¦ûõë§BA [c."[žÖ®±–ŠPÙ&(:rJSdålb†C‚`$©èÝäG Æá T¿ÔB”S}Ä“.A@þi&b¯¡Zë9qâD%mN ‚°ñ‡‰ÃJ¾žL¡·æm"–(ܰZ˜ EƒFY¸p¡âlJ±cåiÛ5Ž;¢YÃOØv䔦Ȗsˆ.€[ìKbo£81Ÿ(è „oP5NõNl¥^ÈGÀ¿u&²§ +§û žSN –ññÅ1·f†ì; Gçmb1ŸhFZ{ZŸ›"¶¦Ø1ñ´íó ½Â|­‚$é `Û‘Sš"[ΚU ¤ Oû8tê#U .œÊôÊ•‹Ò©> BJ‚€ „ÿ4æj†xáOdÈf Ç6Õ ² “ìœÓ¦McÓúIë$5 ·I% ÂÐQ>+ê]vU˜xÚv¾$=Ô™mGª’éÞ”¦È–³‘[HˤQïÛ·/.S²NèŽx! öÝ‘#GJ–,I%NKõfàT¯JA¨CÀ?ož;°±l¦NÊ¡mªv–¬iVŠ ŠÖ­[gÛ“»mš"[ζR…¢žÚ÷ˆaÄŸúKÉæzÉÂxŠdiE6A@B€6“ê>Âó3)!±™Èi«ÊDç&&zuh›xÉšùÉZóþûï?ùä“õêÕÚ!–’â†ÏM§wêÚµ«Ê/eÛ…¢÷ù«_:tJ>ÉRÁÅébÏž=ª-‘ ˆA™QDâ ¯ xîܹ¶5¶’X‡f­Q}ɯ ñ‚€ßš)Âó3)I¨A¸n•Û |¨ ®5ñ’5󓵆æ^¢íG}DJß]»v)†Ä¸#>Ó§Ÿ~úÐC¡0TÖ.tï> … BÓÖvæÌ™Zÿ9*T[Ò2á¨DñX´èKl,4±µz«$Ö¡Yk| )‚€ „ÿ4SäçgR`ý…AŠ#æëåË—“0WÕÛ&^²f~²ÖМÀ€ÿ&ÜÊC¥7D1 Ð"a"É!ßÓж ¿.!6añFÅ·ÉÆÕ2#•n 2:%üip­5¶’X‡f­1v$eA@€š‰¹òwÞ!(8ù™”¬:•A]Y®×aʼnӺvíÚÆc»èQé8@„(eA…zkÚ$j½m~&#O§®Uș%K–|ûí·äÞÕ!ešX¥µÖà©ëÝ»7´(k†-xÛräÈ¡HÁ© #Ïr‹-&L˜°}ûö÷Þ{Ï–üq«–)SFŸµÖ8IbšµF³•‚ áGÀ¿‘ŸŸI#ˆf"¹{’$Iت§+‰ƒÇVì·Þz‹´Fº’‚)óÔTƒ2&gÑñé±Ò£Ú)R³‰œäyÂ8#cõN]»óR&1pW¯^­ˆáOቇK#‰Ò—*UJXkœ$1 Í:Xý¡8˯ aFÀ?›I Éù™4|˜\¸Ý¶nÝJª]i›xÉšùÉZC’'œf¤’ÂÔêÃQOÊiРAì Àd$ÿ!vŒmZŸö>ìß¿2»P„”ñ"¢„èGŸZÊR½"‹hèláC<§š)S¦¨5*ÕÐ:4kO!…@"àŸÍ¤D‰ðüL/ö¸“5CmoS•¶‰—¬™Ÿ˜ÄMù¥n»í6‚y³“U5F®ÞªU«b|¼þúë䣚>}úã?Î>ú²íB‹ä³€6êß¿?&|X*ëÔ©MÈ…È^ü{˜kèZj8‹FìÙ³'ù1qèå.k ­|¦Î²Ö§B ‚@HˆÙüLî¨Y/Y3?YkΟ?¯²=qÊ”ƒ ½…ÆÂŠR][»pIÇÍS™¥°ÏŒ:õ‰6²&Á—ˆH8-5skUëЬ5š¡A@ˆ;*n^BÏÏ䎣5ñ’IÓÐÜZ£Ô’ñî5ö¶áÖûúë¯Ù¨Õ4Ö.ÜEÒgÑ@ÖÌRF-¥))еñжÆ*‰uhÖ[9A lü÷®ê.c2?SóæÍÙª‡™‚c­råÊ¡ÆPø ‚€ ð¤™üŠ^î†ZìægÚzèÜü×W€âò4œã"„´A ¾ð¤™$?S.“^g C_Ò… aFÀ¯7ï@v‡y<Ò ‚@‚BÀ?ÍÄ·/’7(<÷ÕþøãêëÝðô(½‚€ !xòæ)YÉD$:Çñ)(ßÜT¯^=BÆcbða,! –.]Ê÷L§NbgÝ«¯¾ªb5Ïâ•W^áã*†L C6‹ó¹RŒ _†#‚€WÍd›7¨mÛ¶DÐ!Ô©Ž> œ&äz‚'ñÑ.‰-R¥J~øá3Ï<áqã8Nt|̘1 (» Ä*^½yË!X€1oÐøñãwïÞ=bĶòq¨5}‘‰À6Éd2ÝXIóçÏþùç•Zâ,I¡øÂ‰DšrݺusæÌ2dˆõÃ[M#A@¢¯6“ÎDØbáðyéSO=E¦"l&’×1uªôȨMš4iРAéÒ¥MÖ$C*3PŸ>}Ê–-{úôéè1ˆ’+ÝOÜ#ÍSÅâã«)UClYBáñB€[UÓHAXBÀ«ÍĘMyƒPB¬s¤I“F…!°¦/2XQ“Ì@VLˆr„%2ÆSdñ ª!°gÏžÝH eA@b ?4ÃvÉdM_ä&É dB‰lOì€P™ õ)B‰ë,P8EsçÎMÈ •CÓHA˜AÀ?ÍİUÞ M›6)T=ª’¾ˆ…úáÇcÇA£±šLu’!*U® Ç{Œ¸à*Yƒ¢L°¿ä¨ÅÖܼy³F@¥¦Õy˜pœSüرco¿ý¶¦‘‚ ±„€WÍd›7ˆyµ.b›¾˜4ek’!É d½“ðŽ6kÖlÞ¼yl…à,º|ذaÄ'õ†&&ú*û÷Ø(ÁŸ®”‚ 1ƒ€×¶yƒ6lÈW5äSÿàƒlÓirÜY“ Y#Å ¬qH»víPHØ‘D?~ü8ÙâGÍ>#O*ùÈ ;•¼õåÊ•3ž’² ÑŽ€ù™lóáš#ã¸Ê¡`›¾ÈH`›dH2©{È7Ü·µ”:uêh¿ÉD~A@Tܼàçg²ÍÄ>1ÚÇš¾ˆ‹a$0~+ª¯“n®k¤ p+P €@!‚@Dà|D pü2dA@HCÀÓ:“_ÑË#m„Q$àEKDÐ!àI3I~¦Ð]ÍÙ´Î¤ë¥ ‚@ à×›·xóbàŠËA@ˆ)üÓL!ÍÏDPm"šÇºq a[M±/^¼øå—_²Rseÿ^Ør8! a/]º¤{—‚ !BÀ“7OõêüL„ÓæëÒÈTDÌBÌ1;Dލ}Ä™5}ô"ÈBÍ–¨£FZ²d ™™2gÎL¬ö7Ò)02CÅgìÆNìoäÛ&•éfÍšo¾ùæí·ß®ä|â‰':uêDJ'…XÊ”)©O–,ÙÇLAUòÂÁ·Sõë×ä‘G¨|ýõ×<8yòd¾²|b5qâÄmÛ¶­_¿žÀHгü ‚€ "¼j&ÛüL!’É#Û®]»Ö«Wy|×®]äÓ#7s·SÛ(ʵvíZCóæÍÑ.(­n¿ýöÛnݺ¡T£—NV(b¦zâBÕ®]{¨W¯^dƒDÍ?ûì³5Z´hz bb¢™ˆ%Ú’¨Ð„ž ‚@(ðêÍ#*)?ÒXs2QÉúÊ•+™ï¨óî»ïž;wŽ™›æ£>R€€Ü¸;w¾ë®»zôèA\8ÓÀ צM›;ï¼&ú,­ +²féy¯'ã&>ûì3"&pÊ*•)S”•ÀÈ0ÞË@!¨RÖ¬YµfB7œOÖŠTYÿâPÍ’% –èÏ?ÿlÜ~%«w÷ß¿¦„?µ‡BWJA #à‡Í¤úÖù™\r2y—›À*› iL¬¬ð³‰œ¿xá¶aÖdÐs.R1±ÂÊ…ÀKGá¤!o=2Ÿ={–NU†{ådzÍá´cÇŽâÅ‹C‰þÆ6ÒrbHeÊ”IZ h´ v$ÆŠG¨yúê¥È>c¥”A@:^5“5?“SN&/"nÙ²…9—I“]ÈøôŒMðb±&4eÊ•H ñ¬µüǰÁú“O>Á†ÃÔp’JgŠr"°rޝLºÝ»wƒžL‚äbÐ(Ipoª™°ŸX2æpB‘c?UªT Êòå˯Y³†'”IPÂþeJº§K—.lp Y‰ ½ë¤ï.drJ8"àÕ›gÍÏÄ»¹mN&/±A€5ÀZ›ŒMX.b»“y‹Çˆ7oäÈ‘F]槯üØC‡Uó2zÎV*)Ê)•”fï`a› Òüùóói‘–‡} ,§©CvsàÜÃ;‡™˜šèrµ¡œ5<ö›<ðÀàÀç±leÔ¾S…˜â€?Öè D¾ð ,%ò9ýêNRr°mÒX#eA@B@\ó3Ùædrôá‡fË8$¨tâ k^ÏÑ:zVµ¸ÔØJ…“Ð=•” Ã0œ2ÅÍcŸßÕâ¢Ô]³cýÊ^|½hDz¸C,»xu¸ãŽ;ØÞÍ.Jš°UkkI©+Í$àŠºìîÓK€³’†‚€ Pqó”ŸI«Ó,Ë@…3pºBØN§|ÖÛJeÌeKà“m8 °]Lݱ»52¨ô¦'Ö úI_TšQ«™XpÈþ<«ØU´•&‚€ ø…€Wož_L݉٠†ÿÍFÎZ`© ³ÉZ¯j0Ø3ét6îõ¸U[·nw>ÂAŸxÒL~E/÷Ùåu‚•Û<‘%0¢àãœÀ”á ‚@l àI3I~¦0\lÓ:Sz”.A@~½y{Ý56é¥#A@Ž@ <Ó_2¶\~þùçlˆÆ°IsæÌÑ'ýxé»^µò(j<¢áQB! ž¼yJÛ\>qÔ6'“êˆgL:1–{É'\ÄRɲí;õ?šcé±Ç³ÅÊ'C¿Ô†~ë¶@˜øìÝ'_’x'f{=ŸvVEMôÞPS’þƒ°L|¦kÂV $[F ô¶uG]¯ÀZéNÝ ñˆ†»`r6üø¡™ΚË'X›ò'©LBÄAˆ±ÜK>á"ĸ¢iÚ´)zB¥òóÙ*X|†uañ#R±bEãWÃþ¢ÁgÝ|ßío«h¤7=eÑ8‘9 à·7Ï<¹|€É6o²„'™…þ0³U«V:ž»Ÿ P¤!6åOÒõ±—{I-°ß&Ó¡nݺ„#RlÁ72‡ä‰·KÒ[ô=¡ÔYÛËÁMp<ˆTħK´¢¯¹s璞˧bGë)óͯ5í–)±œ;vìÈÒU°Ù]Å›WQ-¸s`E?ÌGÆKsjL£ÖýN›6ØT¼Èó‰1q§¬Ì©!ä ö˜õîÝÛAVädÑ©­laA†ÀRŽÙ^ã!v”‹±`Y11) Áæ OÅwÖ¶üM€k¶Ö§,€ÛIs³&9C*®‚ñû±ñÑ©V|çÞ¬Y3qMU:¡aEú#GŽØÞÌZ*)Ä ~k&k.k:%lRû0ñ,é`h¨§3R4ŸISþ$¸±”{É44ÉÂŽ}0bÄ´…ZŸ³‚oâI,B’Øá¼ è8„¶—ƒëÂl…V ô8ó³IÙkÔ¨¡y25ôë×+k›ƒEkÚ-xêÄZÜp&Êq £«½{÷òi|é‚8H…æ£L° ¢W`ÀÑœ1šF­åa$ÁÊ}÷ÝG–bYÙ2'\:)3®Å‹ã#5EÂ*M'q‚%°”c¶WÇxE˜èᨂ-JDRÖê“ÇŠ¨T¸»mù7r¶>eÜNš¡5 _ysÔ‘±øÐ›¼Åòy¸j…Ø\kRÒh&lѰE@:‹‘‡zÈx3J96ðO3±ÎlÊåc›N [‡?^uÉLÁ=ê)Sþ$},å^2 ÍßC\|ÌÅx®zKÐt[ð<±B¶nÝŠñÊŠ388s]Œ¶e8“®‰ ëÐ,CÇ’ ÜS?¯ä*¨¹µ-Î"Û´[:±–âÌk/Z„0K dáÂ…„:Ü´i܈?‹Seä²ÑË]¦QûåÎAG¢ÀH¼²ÿ~Ä61‡ó‚!`»£ ±™¼ `ìB•H9f{u¼\[”€ dÔ$‰Qˆ‹hË_I«7Äú”™€uahä£ÊÖ$gxS¸ üñÀkÓ Aƒ¨Áæ>xð z‹âõ¨AƒFVNhØ"À«Úˆˆ‘äÏäMÅãÍlìNÊQ„€ëLÖ\>N锈æë¯¿æu•yqA$Ær/Åмyóªæ*°“øº Rc`yè8°ºÞ½@ "æòšÈÈŒÕK²GS½>Ô†oôF§™N¬EÆBÞ£õË ÆNff.|A¬áXcþbþåµfذaгiÔº;SÁ–94Œû ­‰R7& 25w?dÂU(6)Çl¯Ž—+b;R™E~éÒ¥$H#P/ê¸Ø"¤½å3™‡iÖV`#½±ì”ä õÉEÄs¨P"’?y«ÙÖ„ãŽÐŽF&NhØ"€"E ¬.#)Ç*þi&^Nu.Öêyæ¹óx䥘 Æ^tg ümÓn)ÞWXdÂÛÙáÇye®U«§°xÑQ/Ôd3a‹ våiæ> NÌg̘#‹õ ÌxqÑØ2tÅ–^WZÇn{u\®ˆfå46¤|÷ÝwD|Ç•±-ÍĶ`û”iJï m“œñÔóÊ2¶©æIKÌ»;ûY2ÖSvBÃÊ '!ö4[uà‰z61”ØA KËÚ·0ØÑ%*%ïqÜ‘Ü1@ÃîÉñ)·¿ñ‡_˜J’ ñêÊ݉›H/]hÉïÀ#Ç"­ªaA‹[œ5-fUr/Áœz{‰³¼óþÎú9õº­î%Æ ¶à›Æˆ•Àú {áX†aêÑ«,.—¶<ÿГ¾–}\Í¿鲦OŸŽFWꚌ´[\Ôu£d¸qó2Iqo`±kNi#¨ó²¢5å4“-sü„h&\ÊôμI.+÷ìˆ.°èaÚTÊ1ãØ®ŽÓÑlmÂYž;îp. 0ïÄ_ó±ô“b=Ew†¶¯,ìDmð´ª?¶“À :%ÄŸµ_[4œÀXÇŸÌí‡KÛçž•¡ÔĽ‡ŒÇ@vùƒ€×LŸ¼Â ŒdêÛXƒûÉXc,óÎEcm™WrUo$6¶µ%°eQ•q¶•Ù ¾‘Œë‚„VÙ§O¹_ÈÈa°šÞ½€:ÁÀâújü]èyéÆŒs!ˆË)™óúD Ý£OX4¥.ðNƶr§±[¯Ž¾"šƒmÁã@¬üm¹©Jã“âDæ‘¡¾ÐÆ'Ñ–'ïì·=E¥ N0_±Þ¦|Nl¥>Ò`ŠS³œ‹ºá”¢ñoÉEã¤6Õ¹‚t½û;Ž1’nb-ئV2¶µ%°ò‰¥+øÆÑé ÆJÊî—ü'¦&.‡lmà,µ;Ã…’SøÝ ârÖ;sÖGqôáy®ZµªîÑ',šÒT`à¶c·^§+bbèq Vþ&>ÆCã“b¬7–=2ôø aMò%€ò¦{Ñe4L°€ÑÏmÉÒ5nœ{š‰b  i¦Ã%&‡Ã¶ül19´ÀU»vm¾þÁŽTçÀ˜ÐJR޹C‡8Ž+þÍ›7?pà¯Õ£ÂfrïTÎF5ž4“_ÑË£Žø^pŽü×}73ýJÊ1Wç.ýÖõ¼'·:7ÅVÿÚá±û¨ ÿÁt«œQ4Æh—ß ¾ÔØ" .t´ 6Zä´½£¼TÚÐKCwšh¦¤‰cßIícŒvùÝok9«HP:Z-rê»(üÑLbí÷V´ËàeKxÍÔ…Ž–ÁF‹œñø¸„F3%IC O×I£|ŒÑ.x®r ô’ .t´ 6ZäŒÇû?4šI¼yñxI½u-omÞpŠzªu¡£e°Ñ"g<Þý¢™?Úï­h—?ÀË–ðš%¨ -ƒ9ãñq fJ); 6oÞœ4iÒ2eÊñ{ï½—:uê'žξÁ¤!ãäÉ“ÿù矖-[šn §z™ÇÃÈ‘ÿêÕ«ëÖ­[µjUòäÉ›7ož5kVC€ `OŸ>}áÂ…lÙ²¥J•Jq0ÞÆƉ¿‘Þ‰&.õÑr¡c 5&ƾ\Ê¡»«]: àT´ÈÀЂÕ$$šéò•kþÊwÿ}õtÜØÌ™3.\¸m»öÅ‹—pçsåÊ•$I܆гgÏL™2Ov}Û÷œ9s(?úXSwžÏ0FŹW¯+–/oÓ¦më6mmûúä“yL O>õ´é¬S½‰ÌãaäÈ¿lé²>}z5lØ(uš[.üy1`ÁÜþ÷ßOýpÊÌ™3þüóÏ›o¾ùÚµkéÓ§ÿü‹/ie¼1Œ7ŒC#½M\êãýBð0zÁÄçÓÐTÛnž;ªU-P  š"`òܳ~ûíü´é3â.Œ ‡ä ࢸù§Ü¦õ€¥¿|ÕoÍôÏ?7e̘éÑcÏÿ~~ÿ¾}cǼۦu«ñïO*Z¬˜“϶o{òäÉO>ý̉€ú LaRòÐÿ ›-ÿÀøœ?ÿÛÚ5kR¤H±hѧZ´J”Èv«È?7ÙËéTo+ ÊÈ‘ùŠåÈÚṎʈ L0£½é¦¡C‡,ZøY£Æ·hÕ:mÚt‡:p`ŸêËxco'žFz'š¸ÕÇó…àaô‰‰—§5n ]oØÍcœ®u–pQrpQœzŠúHÑL€us⛳çÊý¦›Š+qíŸF¼5tâ„÷¼9ŒS?>4âíaû÷}Ÿ#GÎ./u+YªôG3¦}ÿý^Þ|ŸlúØK=z•*]fø°!»wí09].Ší½÷Åâ…³fL4ôm‡Ï}6{æŒn½ú”(YjõÊK¾XüÆ !j€õî½ÿýñcR§NÓùÅ®E‹÷>ŠR†dAèò•üýwãMå&ݪtÙŠ ûÐ?Póûv{±óo¿þÚëå~7Ý”è×^ýûÒÕŠ•oOŸ>CªT©ŸnÝ>[öÜ%Jtó“O·îùJ¿ÖOŸ:U±:vìè‰ã'T™.®ßsþËf{àC“//º»î½wßs/ŒÀ¢1ôò´ÚÒ˜.™ÏÃ`ÝÕðÑÛõ\ü¿7‰Ó àS6#A°ät¹(N÷^®<ùùqãÆÈà Âõò† ”W­\™5[ pǶmL|¿l¹ŠßïÝ3kæL£ä˶Œ{eÙL×oˆÿwfÍ‘ »áŸ¨Y·níÙ3gî} AÁ"Å+ÝvûìdÝ™3g¡Oš,¹©žJõçt“¤H™òõ7‡§H‘òâÅ¿V.ûêà?ä½5M¬õGvÕéÎÔÃŒ´ Íý}o4¹~ÓzyZW¯\fûDÃ$ŽN××íÿ^ýëšJó±^hu¸3ôyVó÷Ii$p¼(߬µ½÷ò*ž¯-›¿­U».olY³eß¾mk“fW7»¡K·>ÿÊè¦~ƒßf%eíê•û¾ß˜`F!ƒUŽÍêÍôÛo¿²^š=G.:yâ§>š>eöŒ©’&Mvöܹ\·æç~Ò— ·ÞôÉïoZ¿öÔÉ“W¯]e!á_ˆ¡Ð§5°R“!SÊ4xäÉV4Kê™ÁQHªÉšK‚6y­W—ŸOWõ7ž—ÙËšOÀÅß{ókW¯òÒ]º|%5œô3ÿ¼pÞ²%Ÿ×¼ûÞ´é3ÂçÔÏ?Ó]ºô7;Ý);Õ{ïÔ…2rä¿þ~qÓ—Þx™u²âmw$º9‰"ÖdL¥7´¯)×™üWÿÿ€¤ÍéÞ/š?ûÍ×û4kÑ>[Ž\÷íÙµ}ó“­žMžâºÕelb,ÿ|ò8ÄlÙsnÛ¼1G®<é2\¿.ÐësæÎK½“¨^î̈ºÐ 3F¡—§Õ‰Fu—_ã]ä‘OÉÒå™1fMû ^ýÆë×,ÿóÂ…‚EKh>Æ m¼<2w"Óülë.ŠÓ½G/ÅK—‡Õ®í[î­ß˜Ù“yfç¶ÍO´ê 0ÞíPêz[ÂY’W¯ýãï?Æüûùß÷í>jH¿­›ÖW¿«î€ï¥H™>)R¥éÒëõté3Œ~{`ç¶Í&Œ~úÔ)êï®WŸ{¥_ÏΫ–}U¹ZM)ŒùéÇ3*T©ö÷_Mý64 J%Œ±¬j<þÚ^m5Ùª¥K*ß^#iòº†1r[¬\ºäæÄI|øq†?å½wòä+À*S-dNõšƒÇB„˯.’‹ñ2áÓëØ£/«‰=:¶ywØe*TiÑ¡³¢4’QI]žÒÜt¡ÉS­›<ÙêÄOG¼üR§Ö¿7j(ªŽ+5+ôâ—‹>}½W|ËM[´×õ¼C,Y8OÕ?þt;êDõrgFÔ…V€øû0j ½<­N4 ^¿ªGӯǶF²Ç[tà½gõò/¹+>3£æÝõîoø¨"€¹í `lî³l’Púle% ¡ÓEqº÷`’#÷­iÓeH’$iÑ’å¸Í )ŸRå*+þFanXÊÿÞùÖÞ]j“ ÿ&ê=d|pó>‘U¯éc]P^øãw6ï¦JÆÈüüo¿Ü’6½ú0èßÏc]qö÷ß~M™:5×ÃHpyæ¬Ù&ˆB1FŒE\UÉnØyFQê4îåh—ŸÑq•S¦ü¿öÎ §m ÃB‚ ¤A´êرâ( ÞtSuWNPuÛe ë(RÕDé X² ‘B7QJz"õ7–33q2ÉŒ§¿ýoÐdü<ó¿ï=çe<¶hl=?/žïlþQ)`÷ò÷ðèU’39öƒæ‹Ÿ.âÛÛ—Ý,ÅØØo”ºLf¢:`¼³|Œ1±éÕ*ÆF›ì 9m·Y-)qw+‹ãl”&@޼ô[é°Æ†1÷Œ–;u×\¾]?ž¿ùîæ-ôg{§!6Êz³¾»/õ\~4Ë!ù-–ÝÙë“b¹p|+çƒoÖâ{ú°óú­ÔêÆúDºUÏ<óú­—(‹½Í­øiˆ4gòdLoÆ9&ù•¹ß˜œeì7J]&3€ÒÝqMÖx1fÍŒ1±éÕ*ÆF›ì ¶íuœ=|ùZò¢°•—Ú¯£3DosO7ƒèñR™ž“ÂýÕE¢ûˆ®õÈ-}fôöýæV ºþ¥ÃºuÖ_¸Õi…ÅØKeú3½wBaè>¢ë_!d¶§ŸœÊ)è Ðõ[EÍ­³þÀ­N+D(Æ^*S~ ûˆ®å ®³RFqEgÀìõS™´;ò=ô4õ¸èú=…µ|ÃV*Ð(΢è x9x©LUX«¢ûˆ®?à5ƒ5u¥â,ŠÎ€©î¥2}ÿÖ èR1S£ûˆ®¿˜(—`–JÅYóßýûLáÔ$@$@Ð’÷™Ô—¡]¢x  tòß$X™ÐƒHý$@$P¿:+Sy"JOH€HšÀx<¾½¶ÛmV&è8R< ”„€”¥^¯EQ«Õbe*IPé à½%)K²Zº¼IÛËSã¸t¨œH€H `£Ñh0HYª×ëÜg*>§# P dË’¬–¸Ï¤âg  " (e©ßïsŸ©Hþœ‹H€H`†Àp8LoâÉjIÊR²Ï$åêß>“¼v;s? €7“_?ï~\·£èó—¯J»ÛínL&“f³émvL$@$@3dU$åGVHò€¸±ý—|ÿt¡ÍeIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/user_defined_variables.png0000644000175000017500000002717612032647206025556 0ustar ebourgebourg‰PNG  IHDRå :¢¼csRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ 6‹ýô› IDATxÚíÝÝ_ù}èñ¯æøü¦9IÁ˜ºc–l|^µ"vWYœ#à8”uÖV¶[’ãU“l7”‡ÇK¢¢^$§ËÖq!Áð¢É¶©êdµÛTö†*ŠËcZ³ÖfQé…›e!Áu°ŒïìûfÎÅèY#!0þ¼_\HÃÌo~O3óÕï7Òˆ˜›EDîÝ»GEs***R¨`rÄ+€x€x¯˜&^Ñ´™>‡Ãáè›Ñ´B–o.}/õYíåõì75‡£ï]õÝ-Í|îJ[´;ŽöÀræ~Sþ£mʾ6°æö´)›¯˜4‹ó¾™‚.«š¶|¹ÃRv¾\K‰ýx•¢Ì½Éø×ÝðÔ¼¢T·—X,tAÖ´ÏlRÕÆÞñÎêø…\ÓfúëÜ!E º;Ê. 8KÖ¼ÀßYšUÒybbâìN”¥ø´«qÈ NÏtÚRKôæÐœ*M®ÓÅëªÏîPYØA‡˜éK›¸IVÐ';bËûféÄìCl6¤°™‹¥ºsüRK¥š1P‘k/zp£(¡î††ØîÒ'>²sb8ëd˜~|/ËöäVwóf¾¦I%4:™)Š4Õ$#˜Ô}åÎg®¹-ÃÍ Ëpr*­h¹K§Å0c¼2Óçè)¹.xg†æãÓ1J¨;ã²·t¹£Á5<¿žù‹¥ätwk¥ªÊâ’R¬¹—‚DúSs¢ÌŸé¬Y M›é¯;3<ŸÜÊÕÐgúÉVÓ$"Á”€%2‘¦[2ÁÔ})!wÇåÔÈ)­¹ùt]¢±e~Ø•sf-O©ó´8fŒW4mf:(ªÚØ3::71qV-ˆ¼94¯(•-¾±±±ÑžF‘àt⃸¢„†‡çõm›¤¸¬BDæ–îè—ü{±Xª;Ç{UuÍ](J¨»;¤V¶øFG³³š§‘~wHQR‹ßÓ¨æË¹­¦QU›'j/®ˆˆHUk,¾–JUM³ÐË»y0Ø”‘Õ ï²á}¾¹J¿Å0çøÊ²*‰M¸dN”Ä.l±;3ôKµ,.¥L™¨•-—Rî,Ù€BöRµ±gâ¢3vÇk,‘5Ò×´å¥EQÕÊÖKÉ"Ø:{Û U?ßZ¥(!ßå»"r÷²/c2Èb©>›È†–eä3oåß<ãf Ûó­Maµš³ÅØë¾ßÖb)9=pI:Î Ï+J¨»>”yQT”PwC(ñ_ÔŠ²â”ËçÀé|)æîÒ¢ˆT•H ɱ—‚‚µ±·Ó–/Ž3NÿÎÒœˆ¬o_Åöã•CssSáåÓöðÔœªVµ>Ÿ¶ë´ÙE5=ŸkÕXžÍ ‡©æÖYê5[€mŽW”U‰2šŽtVWg… )!‹óâ„3ykÈÝQvi öuU­lÍú"ÏCÞš©OUè_Ö“2ÜË&Ê[ŠÅ¥»R]²ž€¥jhnn*‘©9‘ªãöâÌh£±gôlµE¯Ïàzò¹¾Í³Â¾BJ§Åù>6`{(—%}F!èîO~ß'qGgÊ,F|ýØý"úCüë0¿8²aú×dºCJbªb+ö’Q¨\égÿ+ñ¤¼ Æ~ˆe¸{8ãgWâ³0•±BÿêÐz*'ÿæŠr÷G2Û±¢,;Î(°V3Z€_[gocÐJEQÕJ}Ãà ­(Ò elÏ·V‡æCÝõ¡ÄGöÆÞñ¼S/TÆ®õôEšzÓïÃ0ÚËfÍPäIßVÓ$¡’ú¯¦¦¦`0ÿ ˆþC,!EQÕʴѕ؀Öü°«aXD­¬¬RÕy%䮓WÆž. §kožšUQ”<a¹Û.’§ÅØîñ‰ÿ"YÆw^ÔÊ–Kã9'_*[|gc³G–çÀx¾ûO7@mì;[ÜûVì%­r§o©>ûNÓI]j±TŸ˜õµTªjÐÝŸˆ6%䞮їÏ»êz¤ûRk•Ì õÄ‚žHÿ™¡¹ª–ž–* ºÓ“]w´Ò&‘H$™‘Dýž›-³‘HdvPÚ’—×@›G¼³³‰Õr‡,µÎÀdØ8)»gvð”zjÐ ‘Xú‘·ÎI<Þ1ÌIÔï.‰D"‘H¤v²-?`I WÂ^}‘Hê^R‹öñԚɵòd­¾÷Y¯x²Â£<T2¦_[§¯¥R u§ÞÈ’T\V‘¾@U{;múrUmì8]¬¯3·tGDÓf¦ƒ"RQf+«‘Å¥»b;;111qvýSNËă‹”‰òƒ™‘‡ˆs0Ï$±\IЧ_zèp¾ÍÓ»gЙw„%}tÅîI!¹—\E˽r"ä(=vb!£P†yήdvL¾ß‹+>ÝÝ2ufÈÝQvÉ•X¨-:Î Í+Š(Š¨ë Ž”PwCHEbJ6˜çÒfß ×jµ)Ê©ØM(·oÞ¸qåYÛ=r’SµëM2zkáH¹K>)ÃÍoß¼q¸v­¸)~˱kW·øJÓÆ“¬mW¥°ü¬¹òí›7äÐÚyήdL¯X,%§z—êÜC=¾*©¨Ñ´åË=CsRÕês-q×±£eU¢Î5önÎ=¼vÏì¬'êwô†g=v9X~Ä9àÛøU5zíêÃ-¥±q…‡Iê!6×–°\=\ëKÉšßÕ&ƒú½¾a¯u29r¬¼p+*öÒD ÌsF%°cÖøý‹¥ºóRkÕÜÜ\lÁ¥9©(+^ßn,–ûñ*E ù.ßÓ¬}¿mú|LôÖ‚³ÖžóR¿°ñÉ‹°÷äyérÙ7!)ãÍÓ öÝ¿X.t\8œVÊÛ7o‰MÖDo-¬±÷\+ß82q+͵«‡3ªñ!‹ ÀŽŽ¯ÄBç@ïR;¾ô6…ºCîºÅª*QæCî:yeìéBöTâ¼Ø³äèvÕ‹ª6²•Ý3rËeµu("¢ª§g›cWüø”Ç©ÁØwŒK›}µÞÔ5×tØ®è¯TõÔà¬/±þú“J¿ømžZSƒÎÀd®€åñóÑ„Ý38i{ÖvAD}ü\—3Ðf•‹³µ9+Ìxeçà tØléÕ˜?Ï• ÀN±ˆÈ½{÷ô7W¯^mnn6Ãó™yÞ!&Ïùïy»^òûý‰˜¤¨¨ˆßãfG¼ÌnŸ9³uÿþ}ÃÇIâSxùÅçöïßÏ-,À¼ñŠˆìø=¿À<¸¯¯â€´ï)çþýûilv)ÆWñ ÀÃÉ9¤i3ýuî¢?³·²õÒ€³ÄB}€íg<¾¢-:êÜAiêï–žþM3UÖ5m¦Ïáp8úÌ–1°ñJäÍ¡yEiêí¬¶XDÄb)q^<«¿‘™>G}}}}}½£o&3t˜éÓÿÕXÖ–í‡ÃÑXÖ \GD4m9Ð¯O"‰ öúúz}åÄð¢„Üu±XJO-–7Gß»ê»4ìÍxEÓf¦ƒ¢ª56ƒ –íÝ!¥±gt´§Q u·–“i)!÷tͨ¯¥RUç‡]u=Ò}©µJæ†z./Ç#†5׉ôŸš«jéi©’ »?’šø”túZªdnè͈ÅRÝ9ÞÛ¨ªªÚØ;ÞYm±hÚLÿ™¡¹ø˜ÐÄD2À{p|%M[OÍÅB[M£ªÎM…±ˆª6övÚ¤¸¬B=pº¸¸¬BDæ–îÄSÈ¿Ž*‰T”ÙÊ*Ddq)5q×éb}C Nç2Q”»#úX,Õg'&\x´â‘;Ksé Rb‘MË“ênè)ʺ·Xª;/µVªª2?ìjhè›a€½¯X,Õ5M¢(¡éHö?”U¥/¨*;°™ù9PV%ªÚ¸±9K‰óâÄDO£*"Aw?·­°gã±=ßZ©ªAwGâ6Ø™¾¾M³XJìÇ«b¡Ld:¤(UÇí%›7Û’HßwùnÁÈâRúº¶ÎÞFU•ª²¾@Àž`üû+–çÀxY{ØÕ0,""=£g-)q^ìYrtw7„DÔÆž‹Î’ÍÍP,ýaWý°è÷ÒÚr7§»[§Î »†ÔÆWÆž~»þÏc?#U­Ý§K,€=À""÷îÝÓß\½zµ¹¹ùþýû{¯œuh$;W’2ºS×á[4ÊO±ýx¥ªÎM…—ãysHŽÛ‹3†…úf Š™±Œõ–.wdä6=>3ʹQÍ ^`4ÎqfhNšzFGÇÆÆ&&Î꣑þ3CsU-=-Ut÷G’dzrO×$VËÉVÓ¨ªœÖ¯Á©Y,Õ㽪ªª=££†©)JhJºG}-U2—ˆ{ séw‡¥±gt¼û¸qfŠíÇ«D™Ž%™V·ÇÆNÆÆÆF}-•ªt÷'"Ãbæ_JºG{S£´TÙ9ÏUóˆWä8J•»ãòrʈÅtPD*Êle"²¸”ø—ª6övÚÖåJ-Umt.–â² =î1LGÓ–—EU+ËHleƒñž’Ó®& NGáJÚdPÖ†kÓh}×éâŒ(­ȨyÄ+ ¯åÕ—Z+UU™v54¤Îq(J¨»¡;¤(2·tgc©W•ØÄԌӹ³4'"eÅRØxÏLltE$–íGƒž`!±×:×Ï“ó<5`Gp¿-`î¥ÄyqÂ9Óçè)AwÍx§M”U‰:ט¸VDÖ7™)ŠT”•X,šöЩÅl<‹¥º¦IB¡Ðt¿›\%Ñ´åË=CsRÕês-q× V \?%JË“sÚgJ`|x¤QjšDQB¾Ëw“ÁDSMêÕÑÖÙÛ¨ªúµVÿNMrýuŠ}÷'>¥ò©¥” DѦ#±Yr°4‰H(jªILô66“”gýÅ¥»iQÚš97¬yÄ+À#­ú섯¥r~ØU__ßÐR{&ÎVKÊ—kºƒRÕÚ}Z¿Ö–8/ö4ªúú~uEÿ²O,©ªÖK)£HÍa:¶ç[+U5ÔÝ0]ÓÛ¨ª’;`ÑïðM„+ñï1…Üu¾Å*Q”»®¿€ï=¯?ÕS×ÐÊuãKvÎsÕ<€ûh'"÷îÝ£"€91¾ÌŽx¯¯âââ°{¥ýÿ·_û15ÌàåŸ3ŽWDÄÛõ„½Çsþ{ômз]Ô±Edÿþý÷ïß7ŽWD$ñ?`¡oƒ¾ ìRÜ¿ˆWú£Ñúf´ô%n`²¾ho,ÚÃéÿØÙ³q}œÃ‘Öo7o…voŽâªZôõÓ)±'Y,%öã2¾›Xr÷²o±õùjY 3jêï­:Ó±¹!‹ÅR}vâlžÎŸ£¬¹2ˆW¶_…«»Ì×1è»Ëöx¼ßXNöæ™>}aßLòáõ‰AM[´;O·'NÇÎ*¶—©ðr¬+.‡§ä¸½8W73?ÁFúÏè«M$O¹AwtOdž„ƒîéšØXŽkéLÄb©îïmT{Ç;3Nב~÷b륱±±K­‹)Ý>–rá‡ñ 6%bq‰ïòrJ‡³XªÏ^t–è½¶¸¬"¹nUë¥Îj‹EŠË*ænþ^wüuüC@xJÊdlÀŽ}NM™ÒýWçîá9ѽ±#rt¼eUÁéHÚ‡Ìé`S-cë¦ÞÓ%›z;mÙ‘ÑÞg¦ƒM®ÓÅú•"eÍxÊ…>²}TÁ¦žÓ«;]Ó—ïœNb©s‡EDTi¬‰-®(+N¬’úZwgin.äjIß ØÑ–žðòi{xªÂ5P¼Vσîmtwi±ªìùÏb)9=ÐÛ_WW¯(=£g«À&^ytB–ê³®éöËw]‰ˆþr‡[zÇǪ-š6Ó_7]X2ʪšz:™ýé–ˆLUÔ\Œ÷Ì õpº7¶1\ OÍU¸J,M3îxKõÙ‰‰Îå@Ç™þ™ñN›(«¢Ú̈ù Íg{þøTo1ùQ²*6ywi±À ÇRb?¾8Í´>L‹[JìÇe¸{¸"m¬|;¸t7ÖéÞØ^ÚLß™!i}ÞVxdzXJÊ*‚÷Ï ~_­ˆHd:ØT†—îf$[]Óô]¾+"w/ûRÖD¡_Ù‚Óz‰³ûøÔ™¹Xíìnp5 ‹¨•-­MAw¼2öôš‰”8/Öô9ê»QÕÆÞñN›Dúë¦kÆùTŠSl?^9”®äïáKuç¸ô×ÕÕIUë¥Þ¦3Ó¹º7½›'ØÝÒ_©jcïø@¢wå8¯Æf3{Gõ5m—–:ê껕ø:y4õ^*óÕÕu+ŠZÙriÀ–8(êÎô—¥okëì®;S?¬'k£Ö}m‘{÷îéo¾ýÚ½]/ñ»ÎØ{èÛ ocsé |†ÜºŽ-"‰¾]TTÄ|0»Ìù û÷ïëA °ÇзA߯&k.ý׿ý§¥v$^Ù¿?&ÇÞã9ÿ=ú6èÛÀ.êØK˜¦óò‹Ï¯S˘å4ŒWÂ^«7LUaoÚcÝ›£‰ž`µÙl6›Íº­]"»Ò'±%ömA߬õØ©Z˜”Ý3k§‡co‰ú]m28Ù•ý’c Qòõ«Õf³¹üÑŒø=-x{ýu {­mW”+m×0õÉQïŸa¯ÕŽw`o8ÙÃSºoÔïJíóÙ=1›Ûí›7œµvãóx®V>zÔíu¥v8‘¨ßåòß^o¯^ãpãªÍs/®û¯þFÓ4M»þ­£G¾ðúmMÓn¿þÂÑo]/5Z{—½Øyñ¾ÚE¯ëèÑ£úëÛ¯¿ðÂ_þå ñ×ñ>|ûõ²zzZϱBüðÉtý[‰åɽ\ÿV<™é¬œ}€­FËÉ3¾âô5—ŠHé¡Ãñx2àlÑ—5·8“a‘ƒåGb¯€]èH׈Ǯ÷ó¿ªðÆ_Ç?l^»*åõI¤Z§AOϵBüðÉžŠJ,OîEDœƒ‰±ðd:†+‡'Ù£³Ö5snx8gä~®Ëh³ÊÅÙZçàHù°ÕÚ¡(êãçF|vɱòà¬Çî¹å²Ú:”»Ë“ó´oΆ‡¼Õ¦(Ÿ;ç”›ô3)É©CõÔàlìF“úglˆåÔùáòc¥²ž­¸j`›YDD¿óVâÏ%§R°÷xÎ/Ö·£~—G¼9ïÜ‘+é|"êwù1¿dö¾ ì­Ž-"Þ®—îß¿/"EEEû¨ ¬’£yÃñÏšéAc¡tJüöZ½á¨ßeµ=ÚÞnm»¢\i³dÜR~ä^D–‰¿ O.ty›cO#öv-ðY첎møs÷Q¿+ÏÛíu¥1Fý.—ÿvÞ­ò Þ¤=uœ‹¶#^‘@Ûdm$‰D"³-7O&žmâm[è‰D"#] mÉnhóˆwvö?þãâÅÙÁS÷ûÍÀV²{Ÿ?©Ÿ£ÃÞ“7[b?tž ¤<Ÿ¹À§ôæéØ#åÃó›"Q¿çfËl$™£3v¯§åðy_²§‡}ç·4[òn5›çô½µš¸X`Ûâç`¢%Ÿzž 8[šKE¤´¹Å™<¡;Môëæ@þ{­Sn\xÖf³uä}°«”6ûf½âI½)+zíªÄÆ“§ñô3¶ÝÕµ0Û ê^èzÁ^ÀVYŸo;ôÁxxc.Ø|ü¾--aïpùÈl¤4ö†U°Çb–æ°×êòøšKåöÍ7®ïÐÛõ_‹ÇÞÃ3V@ßvWÇ–ôçòû¶Àì çƒìžYÆV€YdÎQ#À Rçƒöeÿ ÂÞÃ?èÛÀîêØK¸˜ñ Ø•ñJØË33±§Eý.ƒÇÌÆŸIžù\Ë {3ûôCžÉ·øBö¦?½y›¯>\æöH¼ìñÓºGN8³—¿‰D"o•§œÉr-LçÈÂðné¡ao› D"³;öC_vO¡»Þ@dC0´3ñJØkµfEÁÙ Ã^«7ÿšöTóÄBÚ¦`÷ÌÎúševôÉ….¯þ« ¥ÍޮĒçZ˜Ïáo¹QÄ’zùL¼N;i{ÃÉ{uán2 òIDATZ†gu‰ú]F—€¨ßeµê3.ú¯ñ^i[㢰¥WŸôzˆú]V«ÍfK+¥qV³Ëž¶£ë…–›¯„½m ]#‘Hd¤k¡-ñ@!£…"¶ÉÚH$‰Df[nžŒ-Ñ‘Œ£µ?MJ<ç¾ôÐဘäZ˜Ri³qÄb,ЦŸŸß:·0ü­o¹&kgg#oK9­§œÕ½â‰/Žú=7[f#‘Èì ¤]<âÍ>Õg]2ìžÙÁSkýÒÿ6^}b9¼uNÎû™oÒ²jTö´}¼°ÒaÓã•ðdÀÙÒ\*"¥Í-Îä<{¡ˆ8­c¯/?X~„<l[ÄÒ"ÃþÂ#x¤kÄc×ñ¿ªðÆ_'WH9«'ƒ½vU M»$žÆµöu¤Ûvõ‰ç<­ì† ËÎeÎã+›pìø¥ÍÊ½Š°-ìž–›ž‚"–”±Ã´×†nß¼‘xqã³úHGÀÌ‘Ûæ_} ËÎenÄ+¢ß.>Ƙî_ëLy´}ôÖ‚³Öžo9°'"–5¤t~9X~$ñ©O˜~¢Ó¯>¹ÊÎençã{­3 ,FýÃä<{¡ˆ’·…'œÖ±Ë–Ãçcgø¨ßsþp¼ÿæZ˜º?»N\õ /dFQ¿«m=#"7ΟLÜ´ríj¬÷'g† þ0`xÉØÀV;uõIÄm…—=5ÔÃæØ·Vt:8i=i» ¨ê©ÁøC Š8Gʇ­ÖEQ?7âÓ—ëwJ+"rj0™&\±]Q·ÅÙ=³âµÙl"’ì¿y–fVÚì=qõä”NlµZåH×È óädÁ©8¥ÃfU=58ÛOÛWëµÚ:”øò5†Xr\2Ö1ÉÕGß§÷ЬÇn\öì¥m‚Í’ù¼Ã>‡"ìµNÖÒ60+ž±úöÞýÂÕgovlIÞ!¿Ìnß&¥c÷ÌݶWŸGEæ|5Ì u>(s|å埣‚ÀÎÊCáþ`vÄ+€x€x¯¯¯ââ@¼@¼@¼ˆWˆWˆWñ ñ ^ ^ ^Ä+Ä+Ä+€x€x¯¯¯ââ@¼@¼@¼ˆWˆWˆWñ ñ ^ ^ ^Ä+Ä+Ä+€x€x¯¯¯âââ@¼@¼ˆWˆWˆWñ ñ ^ ^ ^Ä+;a_ö¢o¿öcꘇEDîÝ»—x¿ÿ~*˜Áýû÷E¤¨¨hŸá?̃ûWñ ñ ^ØIû¨‚½d×}ýåŸÛÕù ½{ û(4JFA¼ùÒç?·[²ú7?øÑ®Î?hèÝ[ØG¡Q Ëâ˜Åÿo ù Mai¯€3ù M¼¯àaÎ8û,ä44…¥Q@¼>!‘ÐÐ{°°} ^gΘ ^!Ÿñ gœ} ù Mai¯ÀÔ¬¨ÛPÓnÿãOýõžþÎ/þü)‹%ë¿áWŸì¸"™ÿ͵|ä_ ÷|üì["¢ªÏnVérä<üê“?QQÕÇ¿zùïž/µ¤fìIygÍJÞô†Øêô×ÛЩµ¤[³]¶ºN¶º°‰œo[A¶¡QâÄÏ8«½Þ¿óýï)ŠòÖÄõ¯ì©ì뽺*"¢­¬ªÒ®÷ÆËw{þ5-|þ+—U9uáºûI‹ETíh[¬Üy£å3ýK9uaÚý¤Å¢iÑúÓžéﻟdÆV,Ož ¿{N$O66½!¶:ýõ6´žUý´Þ"š>ÿñ¯|åÉ…¯üÓß>wÀ²±<뉌$ZÙ4GeFηºq·³Q€ côoÆ+øûíÊÒ›¯ýªõüWSÕ‘×Þ¸µ²_~½×þÄ'ž~êØŸ~ÿ׉3fîåëú3mþ»rýÕ%¨(Šò“®{½gúÁÛ½ö'jì=o_况÷¼½²ú`U}û•'>ñôSŸxú©šW®§îN_Mÿ×Ko,ývÉÿ’ý‰ûÞXZÍÎùõøë9Eiºð5«ª=XUWÔ’gÿæëVU{°ª©ñŒ%“]YM¼~ã/|âé§R’­ÿ_o~1}¹š'«úÂO<ýTïõÕŒü§îÎ ¬«êŠúdç…gå½ïüC8ÑÞxñ‰O<ýT¢26ÉX!µ•Ï}ü}£Dv¾°†!«˜±Q²ûž^Élëo_zc)ÖˆKþ—^ôÿWüpÛŠ2‚x¦‰WV´ü…xñ÷¿øŒõéO~Dä—£o/Å–‡_í )ʧz§ÿ¥»N?úWò._ןió¿²údÇTß§TUUOþåÄôèÏ¿~tU4EùúÔ'õ·¿yã‹T>Õ;ý³Þ“Jð«öFTß6±ÚÏ.}ù°ª¾?ðGµßÔ¾ö£ÎÇä?/~óÍßù埇¯N¾­ç3xîÕëÔÔüëÅ4UCk°~òSª*#?×s~õ3ùø—z¿ü˜¼õõWßÉÞ$c…ÔVöN}íèªäJÄ …-¤˜°Q²ûÞÊêÛñÇå½ñkw¬h–¦Ç)ï}ç‡úúK×FÕãO0~¸¯~ãg—¾ü˜üç&–Ä+ØÅã+¿]Y üàW/=_½¢ì?®(s“oßÖ—ÿfQTµê@±úàC‰ˆh«¹—ïÔøÊå5}ùªˆª>óÿ:«õ”¯OüRUŸyÒª>°kPÕ÷'¦—VVÓVûÐÁCúëï~æú^Þû¯¥µö’ë_¯Uõ™Ï>û»ú®%øówRv±PúaÑ_ÿÂß¿ (Š2rí±õ•þnZõŽ·yeÄîÅý+{0^Yï&ÚÌ^›Ÿ×'^‹/™Ÿ|ûö§?ó!¹}kND*Š?˜ø]]UäZ¾C÷¯lEþ5-myÖ[==5M‘¹›·WÕߑԽäx{/i…Ò Hª ×ÆYý€Å¢-ÿøëòÝ_+Š(ЍùŒÓ ]W±%ýÞã9W”þFÃ?‹¢äjŽ|+Ä[9c˜ °u36JŽÃäè±:õ'£s7o¯¾~äóÞºkžï^ýû|öhÙ­¹“ö£Gë&—Ä+0‹•Umgœ;¡K¿v}êK,±·_mþÁû㿈:‹%>9­­H¯-{'ÿš–¶<ë퉼Ÿ’Âc‡þÇFjé‰êOÉø¿ßž9wäcå*8ó¹v[nœÕr'ÔûÝùÈç¿ÿ…Û_|yÜ(Ÿ9ó°3 ™íßÿu\Qä÷Ë> ÊŠvàÀc¢¾ÿ‡žÐËGõ«š*+iù_k…x³f®³÷Y?da×è zC›µQ²ûÞª%ÞíûµñÇê.uþî§¾ëýÙø/.WŒ~ê“/e6Ü&w<ì^Ìí½xE]ßßÌ~pèOþχ4ýíªZüÇ>¢(ï_{'ºªÚl'DQ~úÎŒúïß}yRQôO9¹–¯w×&Ï¿ÿT—ý6¾—Ÿ¾3£®Ìü|RQ>|ìɨZÆj¹^§þ}ôt{¹ªŽÿÅŸDWõ%‘ïüUdeu­¤o߉íZ•¦ì:syî¬Þ^z_DÊ?ôÁœ;2WC§çíÁÊ;ÃñϪÚènýXj‹¼y%j¸IŽŠK*ã•–;‘í/l¢æc9Ñôı#¹ÚÌ’}˜|ô©&™ü—ŸêK>úT“¢¼ïûþO?\Z¼Rð±³±2‚xf±ªj…ÿ­¬FúúÍÿû¬-uáï|¬¶\Uýoá;«êGŸm/WÕ©o:~ñÔ«ŸTUQUmUÕr-_ןÉó¯ŸíÔo?ðÌàËõêÔ7ŸûfH­å›Ï”d¯–ëuÚ^>äüÆO^=.ïýðKŽÏž¬ýìÉÚ_<õÕ#š¬™ÔõoÿÜ7CªÚøµ?³­æ]n˜UU«þü7š%ÔûÌßÿ¦R%ÔûÌ…ÙÕÌ|š¤¡T”Ð_}ÚñÙ“µŸû´{¢²ýÂObu•(æÍ¿=óÙ“µÜôíÙU5£Þ²WPµ’†³í–÷~ø%‡¾Ä0‘)ì‘Ö©ó_xLωÞp?j­ÎßЦm”ìÃdõC‡ÊUUU{êcÅ«ª¶úüÙÿ™ò¶°cgceÄîe‘{÷îQ{÷_ûqóó´[rëó_~ñ¹Ý›ÿ¡i3?8õõŸKÓËWÎþ¯]2ÿH5ôVv³:À£Ð(ÙeÄîUTTÄý+{Ínew­Ë•ªWÐꪺ²›o?|¤z »¥€£fF¼²×ìöQPFq×b;óã±3"¢Éª¦ÑÐ^a·°pôxÛøIn—ŸqV8cÒQ),ùˆWø$GþACSXÄ+Øé3Î.Ÿ^eŽJaÉ'@¼²ç1šÂÒ( ^Ùÿl„üƒ†¦°4 ö~˜ZQQ¿o ÌŽx¯ìmÿ˜.ËÓn ¨IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/ftp-config/0000755000175000017500000000000012165514774022415 5ustar ebourgebourgapache-jmeter-2.8/xdocs/images/screenshots/ftp-config/ftp-request-defaults.png0000644000175000017500000005337112032647163027210 0ustar ebourgebourg‰PNG  IHDRÊO!/¢[iCCPICC ProfilexÕYgXK³îÙ¼À–œ—œsZ@rÎ9ŠÀ’sΨ(*  * I’€¨ (AE ‚ ID¢‚ "Љ;è9çûîóÝûïþ¹ý<ÓónUuuíT÷TW ìk”ˆˆ=¡a1Q¶Fº$gWv@ €Šwt„޵µ9ø_Ûö, ·§R{ºþW±ÿ™Áàãí d ³½|¢½Ca| „®wDT ȯ0}$>&ƨ>3EÁÂxzûÿÁë{Øë7F£~ËØÛê€fGC¡Dù@„é¤8oXA 1Ì'0 FgkzP|`/„e$CCÃ÷p/ŒE½þMÿ¿a ÅëŠÿ?øÏGÂëFG„Pÿø¿ìBCbáçõ»áž&,ÄrÏ7,ðµìCÑ7ƒï\ðõ+"ä·Ï`ˆÃ7ÌÁ¦íaÉ0/K«¿°¦_”¡-Œá±uDŒî†ŸäcmÿýpR€ž%Œi`ú9ßhƒ¿õ”QL÷|F Ó›¢bm`,ãûÑqv0†W´˜`ïô—̦¯þ_tÂ/ÐÐä ‚c²7ìsþàp³=à¹ÊÀ „_ ¢à> Hs ôÿꥀ Àœ8˜ ‚Á‡Â#Âá1á0&ý%§÷Ãßãüáqÿ]# xò±ÿÌùg6<çß:Œÿ¦Sà9öx{ÖE{¦þkο%öôý¶FöŠìŠì¿mB £äQJ(]”J¥ H(B)¢È(”Jæ©C°köÿÛÆ=ý¡M~q…á‰jŽ0wï¿{ýÍŽ¿¥ÿùý€À¡µÖµ¿- Æ7Þè…G$FúÄtàë+I2 ó––$ÉËÊÉï±ÿß´½wÖc?Ûþ~A,Ãÿ¢Em þ^cÿ¢¹—ÐTÝ×Ñ„ô`È ËË;6*î>ÔÞ ¨¼BÙ¢ðs–Ê@h` ¬€=pîðú €×`ˆÁQ²@.8ŠÀEPêÀ5ÐZA;èÁÏÀ˜K`¬ƒmð‚ ,D€!vˆ‚$ yˆ iB9d ¹@ž?ÅB¡cP”AÐeètê‚ú¡Qè4­@Ð7Aƒ`Bp#„22Ba†°G@ø#"Iˆ4ÄiD!¢qÑ‚èB ž!f«ˆ-$@R#Y|H)$©‡´Bº"ýQÈÃÈLd>²Ù€¼ƒ|„|ŠœE®!wP#Š„’‚ש1ÊåŠDFe£ŠPu¨T/ê)jµŽú…& ¹Ðh5´ ÚíŽGg óÑ5èfôô3ôzƒÁ°`D0*cŒ &“ŒÉÆ”b1÷1£˜Ì‹eÇJ`5°VX 6›½€½ŠíÄŽa—°_qÔ8^œ<ÎçŠ Ã¥âòqõ¸Üî-î;ž/„WÃ[á}ð‰ø|5þ~¿„ÿNÅ@%B¥AeODu”ªªêÕ4Õgjjj~jUjê@ê#Ô…Ôשû¨ç¨whˆ4â4z4n4±4§ijiîÓ¼ ùL „ ÚWB á4á2¡‡0CøJËH+MkBëC›B[LÛB;FûO'D§CçN—D—Ow“n˜nO/L¯GO¡?L_L›~’~‹‘AŽÁŠ!”!›¡ž¡Ÿa™ˆ%  ˆ>Ä4b±‡¸Àˆd`Ôcôf<ÆXÍø€q‰ Ã$ÂdÂÄ”Åtiˆi™È¬ÈìÈœÀ\Ì|y–É"ÌbÂÂ’ÃÒÄ2Áò•›U‡Õ—õ$këë6N6m6_¶L¶F¶glߨIììÁìgØ[Ù_q 8Ä9l8â9Ê8p¬q2qªszsfr6q¾äBp‰sÙr%sUq rmqópqGp_àîá^ãaáÑæ â9ÇÓÁ³ÂËÈ«ÉÈ{Ž·“÷‰™¤C !’zIë|\|Æ|±||C|ßùEøøSùù_ P üÎ t ¬ ò Z¼"øR/D *z$ôEXDØIø¸p«ð²›ˆ‰H’È‘iQ‚¨–h¤h¥è¸FŒ,,V*6"ŽW/–@H(KJ”JŒJ¢%U%Ã$+%'¥h¤t¤â¤®HÍI³H›K§J·J”q•9#óHæ—¬’lˆlµì”QÎT.UîŽÜ†¼¸¼·|±ü¸AÁP!E¡Má“¢„¢¯b™âs%F% ¥ãJÝJ?•U”£””WTUß}Õû4ø5(³š$MOÍrÍY->-ŠV¥Ö¼¶€¶vö[1 «:teu£t›u¿è©éÒ»¯Ô7ÒÏÔ2 8Ìòú^1\7R2J6ºoŒ663>cä<àÂáèÒæŠuut­qÝÚo°ÿüþ%7%· ·‰"ô»s¸‡¸ßó ó xÜôD{:yÖ{þ XQ*)[^&^%^ëÞzÞÞ«>Ú>ç|V|5|ó|ßúiøåù-ûkøŸõ_ Ð ÈX Ô , üdt1èK°UpmðnˆSHc(.Ô3ôv1,8¬7œ'ƊƦÇÎÅiÆÇ}wŒ¿™À–0˜(žx2ñm’aÒ¥dT²wr÷A¾ƒGÎÒ9Tq:ìu¸;E %-eéˆÑ‘º£TGƒ>I•MÍKÝ<ætìNwÚ‘´…t£ô+´Q“ÇÕ_<:xbè¤ÂÉ 'eúd>Î’ÍÊÏú‘íýø”Ü©ÂS»§ýNå(ç”åbrÃr'Îh©ËcÈKÊ[8kq¶åé\æ¹Íóçûóó/PÄÌš¶]¼{áGQ@ѳbÝâÆ®’“%_J}JÇÊ´Ë.r_̺ø­<°üy…QEK¥pe~¦*®êMµcõ£KäK—k8j²j~Ö†ÕÎÖÙÖõ^V¹|¹ž«>ç âJì••«nWG®é_kkj¨hdi̺®Ç^wÃóÆD“YS÷Mò͆[B·Jš›3[ –Ä–õÖ€ÖÙ6—¶ÑÛ¦·»ï¨ßi¾+}·¶¯½øó½œªŽ´ŽÝΤέû÷׺ü»º=º§zœ{Æ{mz‡˜=è{hø°ç‘ΣÎ>¾ö~µþÛÉ[”Z•›Ÿ(=iRjVnQ¹3ºo´cLk¬ë©þÓ‡ã&ãÏ,ŸN8L<Ÿt›œ}îó|ùEÈ‹O/ã^~Ÿ:2žÎ|Eÿ*†k¦òµØëÆYåÙ{súsƒóvóS Þ «‹Ñ‹?–ÒÞÞä¿å}{yY~¹}ÅpeäÝþwK««ß×2Þ3¼/ù úáÖGíƒëÎëKŸ¢>índfÿ\»©¸Ù½e½5³ºýýKæWö¯u;äGßœ¾½ýÿû£ð§ØÏ;¿Ì~Mï†îîFP¢(¿ÏH¸Gøù°Q ç.pî0ퟜâ·œ®@° Œ%@/$ÅA3p¾Œ$!‹Q¨«hmô4&kǰ%|'Õ5ê«4Í„ÚWôb8c3ÓCÖR¶mkÎ+ÜwÞ›|~_[Bhag‘JÑwâd‰ƒ’Ò@FO6]®G©¨§”¦Ü®²©*¡æªž»¯Wc[KDÛI'C·IoÚe(fdbìg’bzÞìŠù=‹!Ëi«64¶òvö EŽw^:såÞ¿ÏÍå@Œ{®G½geÚë³µ¯ Ÿª¿i€C gPPpDHRè‘°cáÇ#ND¦G¥EŒ‰Ž ŠóŒ·MÐKTHbKú”Ü{°àPØaþ#àÈÂÑþÔ¦cåigÒÓ3GŸ;œžu6ûÝiµœ¹cylg]Î]8?V€-T½àWtºøNÉLò¢H¹eE\eIUWõB ®V¢ÎòrD}Þ•¦«C×Öñ×…oh7í¿{+§ùrËÃÖù¶Ý;w•Ú-îQ:b:Óïçw]ênè¹ÓûðÁøÃW–úÞ÷/=~>ð`°éIÑÐáa÷õQæÑc=O/Œ‡=Óž N,N6<~¡øbóeã”ß4çôð«£3ò3‹¯ógÍæswçãTÁâ“¥‚7žoEß~\nZ‰|'ýîÝjåšË{ÂûŽ>N¯_ü¸¡ö™øyss~kj{þËÖÓ7­ïÑ?®ÿÜØÚÝ…ýÏ ŽA ÔŠàAÄ!f‘æÈ.øÄ?ŒöÆ 0 X?œn?DÕL]GSN¨¢½I÷„~“ÈÎhÌ”È|ƒe…M”Ý‹£’ó%7+=ïqÒ=¾OB‚VBÉÂÕ"¢ïÅé%ä$í¤"¤OÉ\“í“›•ÿªH§Ä¯¬¦bAöVQ;¦~v_¥Fƒf›V§vÎÝ8®´4^5ª4.1©2½aÖiþØbÂrÎjÕzÓØQÛ8ùDœ¥]\Éû5Ý »yh{’)²^"Þ¼>,¾?”ߎÿÇ€ÅÀçAƒÁ]!­¡õaeá9 ‘†Q„¨ñ貘Xr6îe|cBFâ$åd†äµƒÕ>™pÄá¨S*åXhZ\zJÆñãgO”¬Í¼žÕžýèÔèéW9˹ŸóÀYús|çåóu ì ý.Ä¥ç—Ô”Þ*ë¼8X>Q1W¹Rõ±z§†ªV¬Îürd}Ñ•®«ïè5®Ý(hzxóK³h‹[kN[×íÍ»¤v½{>i%÷»ººz†zGà·SÇ£}•ý9“üžèI3 mË}<®ÿŒûÙ׉§“MÏó^ļtÒ›–yÅ9C5óíõÚììܳù…‹]Ko:Þ¶/ß[éx×¹Ú³öäýÒG̺⧨öM–­cÛ?¿¦cûÞüÓéׯßþw„˜ _x÷+"Òo‘†È«(nÔi45ú$†ˆ©Æjbgpx2~›ª…úAŠ–@»A7O?ÌÐCìb|ÂôŠù#+Š]”C›Ó–Ë—;žç8ïyR5ßMþN~Á§B¯…WDÖE¿Š œ$NrWê“ôk™Ùûrò¥ 'c•Ü• U$Èt䪣j ê'÷ùhhi²k®kõkWé¤èzèiéó  ÕŸ2‰2u0S7ç¶ó–ÝVUÖi6~¶–vêö‚4‡œêÓ\œ]Å]ìt+>è®æAíñÊó%ÓË×[Ü{ɧÔ×ÅÃïµ}@b EP0ü*änè…°˜pË‘ˆŸ‘Q¹Ñv1¬1/cKâÄ“â窽“„’Þ$×ô?$rhùp}JôË£²© ©[Ç^¦u¤WÂë$ä„õIùL¦Ìí¬‰ì[§ÎœϱÉU:ÓG÷íìûsóç'óÇ Æ Ÿ]xQ4[¼R²Uº{_ÎU¡UVUZ=TÕ*Öù_.®ï¿²q¥A¹ÑúºÏ˜¦£7Oߪjîh™h]» îïò·+Þ3éðê0~@¬dC' KP74 í"xšÄ8«{€XAÒ"‘nÈ4ä5ä$ ‰’Cy N£:Qha´+ú ºƒÄhb’0­˜m¬ 6{û g€;…›Äóã#áˆDGåIu‹OíIÝFÃHN3D!ävh½h‡è4èèùé ˆ §‰8b q‹1œñ“?ÓææU––-ÖÃlTl…ì"ì·9,99q±qÝâ¶åÞä)æ5âÝ"Õðíç§çï8.h(D%ôT¸T$\T_ŒKì‹øs‰{’5RÒ2ݲcr‹òŸ!%eV²ÙÔUöíÓÐÕÔÓÕZÓnÓI×uÐÕû¥ÿҠͰÐè°q ‰£©‰™Ž¹¦ÙRÃJÇÚØÆÆÖÙÎË>Ü!Åñ¬S­ó=—I× 7ú²îö‡v<þ¤XæëìÊÓ‘¹yJçøóI…œE%reúåa•7.!ký//] kDÜ(¿¥Ñ2|ÛûîûûûM=<rúh_x¢1üaìú³ôç¡Sn3ò³ó ±KŸ–m߬u}xº>´qg³`;à«ÌÎú÷k?ý¿?p½A®0ØÃ5¤LPzÀkØûìpMÀ®œƒnBãЂ¡çö©ˆZÄœÅó M1Èrä0r% gæ¨!4>s$£o£w0j˜C˜.,kƒ-Â.áqi¸ ¼8þ(þ9•<Õ)ªUjsê8ûM¤Y X:iåiëèøéÊè¹éË„‰òÄ&FEÆÛLÚLýÌÌ ,ѬHÖ6¶>vo« 8ßqáVå~ÃSÈkC¢!=æËâ·`˜¬Š6aù$úX¬Jü˜„·¤‰YÚ\&\6Oî†ü„ÂW%6eU7rŠjµZ¿ú VM]­Úo]?½PýƒtÃ\£2ã&L§Ì6,–¢VÖ¾6'lkíúíWéÔœ=]Nº¶í_9ÀéníqÂó‘ÆÛÌ'×wÊ_2 9p ¢v#üM$_”ktqÌdC¼uÂéÄ'É4-:üäñ¨sjÙ±ÕtýŒšø“™KÙ^§æsÂÎàòjÎ9åÓ _((,Õ½È^þ©r´úNÍÕºëõWŸ5¬ß`¾©ØìÜûüÝk÷º;‡»^÷¼ð½ý˜~sHhD|Lz\aBñ¹æKÝi“ÛY×yûE•7Ä·3+çWu׿>Ä|Üú½±¸i½Õò…ùkÄNÿwÒ¸Ÿ¿ýà€÷¿%\Q:ÁØ‚8 -8¦dC· i!{þ8â&|¶ Ej"#à:Í$Š€2@¥ î¢vÐdt"ú¼ÛM1g13XIl2v®›ÄãÆñJø"ü.UÕSj]ê›4¢ðùƒ‹PLK¢½D§@×Mï@¿ÊAä'ÞgtgüÅTÁ¬ïí³¬Z¬kl¥ìVŽNx_kr#¸ûx²xÍIL¤Y8&å„ º ™kˆEÉbÊ⪒šRÒî2dGä‘ ÒŠöJñÊçUšÈcªêœûŒ5’4[´iuBuGôÕ êØóLéÍr,X,/ZKÛtÙÙ78Ò:Å8?sÝ·¿î£{ªÇ6%Òë½O„ïŽf GPmˆ|è­p•ˆ–(…è[±’qå ,‰™I?†šI±:Ò—ºïXuÚf†þñü+™ªYÙÙó§É99¹óÎöžWÊo.$_x\ìU²[VV.[ÑQe_ý¡&«Næò‹+i×$ƯÇ71ܬkVj¹Û¦yûö]ÉöŠñήÚÞÆ‡–ûSØ›†ô‡§F#ŸâÇë&t&ç_›™î™q|=7ç3?¹¨¹TúfyYdÅõ]òjîZéûÂY£×>Él 7F?—lºmqm=ß>÷ÅôË—¯—vlv~|«ýnñý3œu¨ÿœùÕ¿çÿh?…?XˆF.?Îìî~›ÀÏ3»»ß+wwVÁÉü ä~ÈŸï¿c \s/Ùû†z£*öîÿÞþ D~ŠêclI pHYs  šœ IDATxí ÜOe¶ÇOSj¦œs¢›Tä6“{>¤C1f0(M CäR(!:ï¤Äë($j’Dt‘nLc ©\Bº‘.ÊÄT£3…d’9ßfž³Û·ÿ~ÿïßë}ÿÿßÿã³=ûÙëYÏz~{ﵞg­çÝë¨Ï?ÿü_ôB@!ð=?ú¾ ÿ…€B@|‡€ ƒž! „€ø2 ?€C'B@! àg@! ~€€ ÃàЉB@È0èB@ Ãð8t"„€Ç‚â‰ÀgŸ}6cÆŒ­[·þë¿þk… n¹å–ÂÈù‡?üáå—_®X±bŸ>} ÃGm…€È Ãïÿû øÆ_¿~}´ÕöíÛ}õîô´ÓN›={¶·í~ô£û·;çœsºtéR£F Gé ^b*!†¬W¯^¨BGSâ ¾A{ì±§Ÿ~úÙgŸÝ¹sg H2œC‡a Þ{ï=p8ÿüóß}÷Ý$­bhvìØ±~ýúo¾ù&†F—„€†@¸a°kÇw\½zõR•+Wþâ‹/œÊÞ¼yóîÝ»QåçwžÑüÇü‡#þÉO~‚FÛ²e ¶„?®~çwxàN8Áx ÿþïÿ^½zufÇP®Zµêý÷ß¿ÿþû™){iŠOñV®\ùõ×__sÍ51RzÿûßÿüÏ߇~¸bÅ š\zé¥1­ìÄXÊyyy mIJž^‚„Cð6QYÜA Î0 èGŒ…Åm·Ý†~Dm…Ò°z°zÖsæÌÁ¢`êÖ­Ê­J•*·ß~;—fΜùðÃÿå/a]RµjÕPâ#^ùÆo0(o¼è}üñÇÆ ûä“O0x5*_¾|ü(>ýôS#8묳â)Ó»špé1W+! J:q†!#ckÖ¬†V{÷îMÉ¥‰a€¬T©RŽøÍ7ßD3ÉeÒ Aƒ¾}û✱«Ë—/ì±ÇP»ÕªUëÙ³ç”)S<ˆæÔSO…€5Ê«¯¾Z§N.qŠeš4i…ñãÇ371ÌŸ{î¹uëÖAåÉ'Ÿ|ýõ×cÀ˜õÏŸ?Ÿš¿þõ¯×]w«%ä1V1G,ÁM7Ý4xð`œ9a©\¹r(hc•òHì„¶Èà‚4Q½üñ°Ý¹s'<é‚ã1Ç|w›° øÙpîÁ  ž|òÉ£Ž:ª_¿~\J9RhÜ/tQãu­TB wˆ3 ÿó?ÿÃäÚ° `óî„Ð|õÕW/¼ðÂÚµk™ŸÒ„xÑר¶(ÁéÓ§3#¶e*Þ(™þO:½Ü£G+®¸‚Gô)¡ä™5kd(Êÿþïÿ¦€Ò¼õÖ[­a’c s¼@8[`B¼}àÀ^ntÇ„© Á™æ½_F¹×ªU @LãÇôŽ dIdcñvѽ{÷n¸ƒDGôÎ*Á„Œï7x5tQã 6WY@Üß1 Üÿôýu\ ,pïŒ3fÉ’%Ì‘›6mú_ÿõ_Lo£8Å?C¸õÿø”X£„ ±kÊ,Ð\l­a6ýí·ßb?° œr 5gÄnEÓ‘QÚ1†9QgÔŒ‚¨¸·aÚåÿøÇ´5çO|ï¡]` ¨Ç•´zõjl$åýû÷‡R¦Qy8Æ›†j"„@q@ nÅpÆg°•Þ¤L¨mÝN9åf¸è2v1™?Ä] ˜JãL¿ûî»ßzë-ÜëèzëÎÅ`¹äm…UÀBX ~ï¥äåæ0iݺ5†gÑ¢E¬{ø!ÒСCM5'ïÂGIð™‹<Ç÷îkh§<&OžŒ×È]ÅŽºr! ‡c¼…IÍ…€8RÄôÎÑGždxÉñÎ'lË$šù~ÿþýñ˜oذïyÇŽi[¶lYãÀ–·2 «€?Ç.9 k§Á£Óž¾]ü1Ìa‚H8‘~þóŸÏ›7ÍW±ñ\9W°—”5¬ŠT@ÆÆ\Žñ½¹ýío9r$á“nݺ,á–±cÇúÈ¢Fê# =ÍøxC{Q¥%8WR R¥JmÛ¶¥S–)¦÷™\ÛŸ>¼øâ‹üÁ„ûñ'¨ÍÛŽÊ&Nt;yœØ¶õÈ|ú„Ž ¸Kb˜;2¶Ìâåo×®5LØ­ÞÎ8s,Öíˆc ¬î¸ãä$4Ò©S'(“ôîe¸mÛ6¬êûÊ+¯$œnF†F?R/+G !t¼ÁæªB »ˆ[1ýÈñ>a˜ßyçl-ÅôîÝ{„ ¯¼ò bD,ðø3ef.á…²QgéÒ¥(M¶u™ÝĹaÆ| §8‚° Ø’ÿüÏÿä ¼1ÌQ¾ÄxmK=¶oßþ7¿ù= &äÂ… Ù/ ç(Ã@dš ?)b2Îp`kL8Æôîh\£‚ü »ØËË:æÞ{ïÅÚñ'†”#u|¬BÌx}mu*„@Ö#pÛ1È={öð ü¡™ûë6›åÖßæ]­Tò×Ån‡§´ÂÃt;f˜QÌ©gkôÐ¶Ä GÇsm諌êÝGÆ)›\±…Ìga´k×.`tF™d¤>ž¾!Ä××V§B@d+%Æ0¤¼Q†!eC! „€b|öŠ¥²B@)²gÅ@˜_ 8âV² KG Sõ+„€(Ñda(Ñ·A ! Šr%Ÿ{!I„€Å†bq$„B ø ÃP|î…$B@ dŠÅmB@âƒ@È_>/^¼¸øÈ'I„€B ãtîÜ™¿–bb ¥MTÕ ! „@‰FÀ2(Ç !Ü0РƘİËà¥ñ3¾K­¬ŸB@d!½¾ûÀsü/Ò0Ä7+š«ùC{MGêE! 0ã÷~Ê3jÈ >G!£z! „@¶!Ð#Ãm7^ãB@†Bxdšóýí?þñde CCr fÏžýþûï'§¥¹‰@\Œ$”|ôŸ$9äÔ׌1âÁ$qMQ‚Õ¦M²ZZöJ’dÆrHí™lh–íª«®úõ¯m”ds+UªYB¯½öZŸœF@^LrÝ@pÙe—ùŽÔ© Fª 4>™æÈásÅWÄ| @ì+>|xòô¢ ¼ogŸ}6)TÔ0Õ¯%8ÃÀ¾øâ 2…‘÷ñȆŒ˜­ZµòÉÀžÚK/½Ô§ÜÉÑF²6ò3“ß­uëÖ¤N󵂀œkä½ùæ››4iâò}úÈÓ)iæ½äocÄoܸñ–[n!7f8Hf5ä:%k[5¢âëcĈo¨«B@ä)\IÌÐIÂl.½pÜ}÷Ý$aîØ±ãÈ‘#ɹi—®¿þzr5?ûì³]ºtéÛ·ïöíÛI¹Ì\~ðàÁd 3²sÚ®]»>}úlÞ¼™J˜_}õÕkÖ¬ñò/L™ÔžµjÕBòwÞy'”3q8ó™n–I~zõêuÑEa6HÙæ*¬yóæ·Þz+Zûù矷z*ß~ûm+³(yíµ×(‡r`^O>NRŠ’üšiÓ¦mÚ´ èÀeqðž4¥—_~9©CwîÜÊù¡‡"Á'Óøöù¾ûîp çèÑ£]¾ëP!­/Ÿ>!}òèTD …ahÙ²%É#'Ožìt¨atôÑGwëÖ-//oíÚµ<òˆU¢ÈÐ5k¾÷Þ{xÀÑ_ÕªUÛ°aƒe?&—ý°aÃX…Ð ˜ŸŸvÞ·o¹‹:½ü1V„‰b !ƒ¤ˆ1€HÓ¦M/¸à‚%K–¸¬÷LÉgΜI,e2¦9àÐh%Faa3h‚êqW?ùäÊsçε?Èæ*«ÓMŽ&´€ß)c¥D¿3÷G£þB X²”+WÓ…0†}ã7ùš·‡&ˆÍ‘Uâ%Œ@„r€É˜1cX10 •'´†˜“3Î8#г·>®^xµa _ÞKIÊi ™„¹h„€(‰¤6 ŒŠõ ‘—Å£>jLœïæ O2x42dL؉O$¡Oƒæ§?ýi”ɸa·ÐÑ̲Y:Ìš5 Æž+ Ä L<#c2¾wï^Ü\¶ëÉùîí*æ­PÇB9PÏÂˆí¤„]`˜æSécEMðÇÒêä“Of]ðóÉæ¥ßºu+!nöÌ· Ë'¤·e'F¨>b !S¤p%hL‚™Ó†¥K—^µjNvÜÎçîhB õêÕcyÁ×[—.]ÊjcåÊ•Äl9©fQh“ÃTyà 7ìÚµkΜ9ð'€ë”Âb ,&N:é¤'Ÿ|½L˜ýë4)~G]=RõÁx„W*ÜhÞSWrpjÚѰ1)Xé®F‚œ½”î^x9G i ½bx[yÙª,„@n"¾aÈ)¼ˆëâÇÏ©!k°B@ä,ÅÚ0ð÷ ?›³÷OB@dâkH3Ämq˜!ãøŠ¡B Ä!P| Pñô¢%îvJ`! „@áøÿÝ2…ç%B@!È0dÁMÔ„€™D@†!“hŠ—B aÈ‚›¨!! 2‰@±>gr ÿäÅ6§ŒóC! „@–! C–ÝP G!PXR¾*Ê'Ü÷ìU-[¶¬·½©f¦äVIzÔn³€¡ýáLÍÞ½{{û){Þ-‚ ,À´VšzLC]B@‘+Œ)㡾õÖ[_ýu|G î¾ûnuëÖe°råJâø‹˜à7jÔˆy½uÚ§õêÕ#W%¢–.]ŠÕ¡#bÝ1Ü*W®ŒãkãÆ?¨ΫK/½”Tx™h‡¾}û®[·.†‰. ! „€!¹bàrÏž=Ñ­ìð¹é¦›8EɲŒÀ!Ç%FŒ1aÂfôœÖ¯_ïM¥S¢Ö'N;v,léîæ›o>ãŒ3¢ºhÛ¶íÖ­[ýó×´iÓÙ³g#‚U©R…ˆ4­öîÝK$œcÕ ! „€Cà¨Ï?ÿÜX©zçÎ]’¼4¬ 8<ð¹éÿö·¿a-2¸VðI²gÏz$`à«=E`¶'™„,8€ñQê[I>@t*„@"ððÃ{•|¸ƒQ£jíï‚QÄÁÊ Ö5{ s¯ÒÇV>s#ƒ. ! ²ÈCŒMCB@4_1°ÐHƒ—š! „@ cðúd²`„‚B@päà¥C u°½j„€B ËPŒ!Ën¨†#„€(,2 …EPí…€Y†€ C–ÝP G!PXd ‹ Ú ! ² às–°¸ güŒïÒHè'r !½:åÔxC[¬Þýø;"ÃzoeþФ_=¼rˆ»(ØèÈ&xmwìbòî§¼#r%É›¡N„@#P¬fÊ9|þè)ïˆ Ãÿƒ¥’B@€@¤aàsªdA G¦`B@ä |ÀŸ|_98p†c˜3gÎÂ… I¨yèСóÎ;ï®»î*Jt:uê„Yš1c†}½uõêÕ¤xðÁO?ýô¢#e_ÈI’;û®e>BN²d“:‚ صjÕJÉAB §(äkrðàAÞ¸ b‡Ic ÉVIʯ`Y_²b`¡ðÐC‘”mÑ¢EXˆ®]»= ؤ{ï½·èû-LdÉž>}z=H „+ +µÙŠ@Ú¯ ÙÀºtéKIÔQc)õ!æ—lš,[[r—ŒáÃ?œ|Ó¦M”‘|èС&¨ ^ΘÃ)S¦Àœ¬¥Íš5C¿{ì±ÆÜ 0(§—ôÈÃïÑG}ûí·É„:kÖ¬>}ú4lØÐK¦²Èe|¯ ªfçÎ)_=ôšbr2<¸fÍš> £4F¯^½ªV­j9(¯»îº“O>E[WJ¥a]¸Œ‰2iiúõ뇢£2T™x5aÇŽŸ}öÙý~ö³ŸÙ+¯¼2`Àn†¡C.åaÆa–óòòÀ(??Ÿ›Ä%nê›o¾9wî\Ac*vìØñüóÏ[bÔ$iˆ.¶&îØ²eKqØ!’¸¹J G}4öÖ®]KÎQ»„ kÖ¬áNð¸0['-(iŸ«U«¶aô34Q28Îd|ct[¶láÞ_pÁóçÏŸ6mšcî”Óq°K]ºÆ¦’†zÿþý AöiN…@Ž#à}M('yõ4hÀüŒ|‘†P—r”Æà$_½Ž¢øì³Ï\9^iÉ+Q,Ly™ŒNš4‰Ê(eâÕ„èÆ’þðâÝsÏ=£G~íµ×0ƒ7ÞxãÅ_ ˆ»wïnÓ¦MõêÕ™3ß¾}{¥J•@ z cŸ2÷øþûï_¶l7‹Â=¸ð “4´{à=2ñïß¿ÿí·ßÎT&î¶Š2š·B… èkWÜqÇ7³±|ùrŽãÇG#¿üòËØvhbd0ðô0ºV­Zñ„1žâ?úÑw†Ó ÐuZصk3ìAÙ²eÈè’K.±T£¡ôª9ˆ€ï5Iþêa¾ýö[Ÿ Á¥1A°¯4Œš;ï¼³téÒ¤ F- OÐ{)5!¾–Ë.»¬D¿û!†DÈ©9vìØ§žz §9 —Õ–“zVkeáÆêÁ°;餓,… çÏ3Ï<ÃT}åÊ•yîV’†ÆÇwlÚ´)“÷%K–¸$Øá™3g‹6g׉'žèšà/ârŠ*ÇfÐÄ{Wbd0<¬ÌEC V‡Û_®\9êÝ8êˆ<8 X«²páI‚Ì+CT+Õ œBÀ÷š0ûdø…|õ À Æˆ6^iX[¤µwùÌ3Ϥ߸­?â5!/~I÷à 0°:à™Á7²qãFS‘Ôôî÷W»-Z´À0ÐäÕW_4h|6´Ûà;²>xã7˜¼[=«Ü÷×\s û]°vóÑG¦”·m?þøcã€áÁÀ”)S&Šah=ަ֭[‡^R¥†€ï5)ЫÇL<FŸÆ0b<˜È2ëos•$W™ó™ )5a «q)$Æ@ä]Ì$7ÁX,sðzõêa<‰Ã,]º½É‚Àò ’ ¡ihXôÕ¯_Ÿ« úøØ) ¯”»„—†2|ÕªU(qœE ïtJXñ¼2(f˜VlÊr+'@ pëÛ·ïºuë ÔJÄB §Hþê·Ã‡Ì$•ˆ`D>ºëý÷ßgªÊ–w”RTèzÔ mßzë-fº°‚Je«,x÷C ö`âĉÄx{öìÉ®|ÜågŸ}6Î%‚ºÄp1±• ‚ ãø0eÑ€Qŧd»z’7ôñ±ÓvíÚF¶2Á–œÄ?;ãe" Ä&¥ÐV¾Ê”2à ³ç†õИ1c0iW|L zºwï^Ö[ ÚPôB wHþêµmÛ–¿Â{9¯Æ€Œ©=GB•4'JÓ0ô¤§Ÿ~š8+Ës–¤T&ðÉ‚w?$ç3Ã&ãJcmÁ/dlb AðÀ[™¤œvCsþ›µ •üAšùñÑD¦”ž<=…\+Dõnõ|¥¤˜|H+^N]™B oÜtžyæû1 ¾z0azZ >3HŸübz¿„lèÛŠâ(S*Gé ÅçÝOyGÂÁB3bœÝx¼ ¦÷4y9톾.Ì*PÉóá»”ò4¥ iðLÙ©„€H‰@ÂW/8UMÉÙ¢Ç)ÉbBeK©LbÿK!®¤â/´$B@Ç@øŠáðõ'Î Àr8ågo”Ù‡@Iy÷Ãc Ùw?ŠÕˆÒX+ù%ŒHøC Kb“bõîÇ܆’øtIf! „ÀaD@1†Ã®X ! J"2 %ñ®If! „ÀaD@†á0‚+ÖB@’ˆ€ CI¼k’Y!pÐvÕïÀÕæÑÃøˆ‰µÅ!½:Å%Ãðàè31O‰. !M°Q•³1ÛUåJʦۭ±! R#ÒG"ÃDQ! r l0 d[#o„ݶٳg/X° §n¡+„€È,á1†N:ñ¥Yzâ»Öµjպꪫ\R„Ìv7>tžü‹¸N0ãòË/'¡é©É5mÚ4*.\H™oäEyÙ8IDAT—S …€9‚@¸a`ð¤Ä:tè믿ŽÂåƒædÄ>ˆ‡ti$ÞIΜ˜É]wÝeô–bêÔ©¾O¥'ç&J! „€ð!iH€ƒm wÛC=ä’µ}øá‡“'OÞ¶mù;Ñé$ò„…òåËŸ{î¹óæÍCS>œä ”ɵiá y@I¢„Ç%H³fÍzôè8ÃêСCäïúè£}¹"FÅÓGŽé£ r[±bÅÌ™3ûôéÓ°aC±N…€BÀˆŒ1ž“$nsçÎÝ·o_óæÍ¡fÝ0lØ0rjçåå‘A)??NýÎ;׬YCšh4;É,ÉJ–T\O6lx饗  ·lÙÒ¯_?RrΟ?ßÜ>hg:Ó0 §Ÿ~zÔIÜJÂg~¤ž¶JpeGʱ¸”dÑŽL! „€ð!i¶nÝJhaΜ9¿üå/»téB3´ÿîÝ»Iæ\½zut:fcûöíÆî¸ãŽ7n³~\:ÌèÇO¦h.1g·†³PhÕªÕu×]Gæ#¬F…åV¥C“&MpÅð·^ìÈÞÛîÿü‘ýÕ[ï+‡rkÙ²%F‹!øˆu*„€HWY°q¹àŸ1oêž`ÍXC<üðÃHÿÉêÁá/Â6PÆ0T¨PKÞ¤¬»víâŽ)ŽÔWªT‰}DؘråÊYs;Æð÷’aB&MšD "yë}åPnôÎÏG©S! „€ð"i˜Ë7hÐàŠ+®`èc=Ö¹sgÓã:tèÝ»·—EÊ2Û„ Áùc”¸}°eÊ”±S|VVHÈ{@„ÚÄr‹á KB@ÜD Ò•dp°´lٲğq Õ«WïÄO\¼xñÒ¥KQî+W®$¤œµºuës†þƒ>X¾|9sùF±ª måÊ•q mܸ‘8DÚüCeå† }ûö]·n]hU ! „¤0 ¥J•êÕ«Z›°ÊÀ2áâ±cÇvíÚŽÛ­%Ο#F4f©1f̘úõ병ɚ´mÛ–-FD –,YBì!=þ¡½‡rÛ»w/áqŽ¡MT)„€ NjÏ={öà©·¿!(ˆüÑ*[+x²hÀÞ8ïÚü½<]9 7¾¢è9ÄTB »È7ó½ÈC .LÆc®Æ\Bû‡^eIá­O›¿—‰+g–›c«‚B [HáJÊÖak\B@!…@:+†(^%ºžUUÊOÑ–èJx! „@BÒ‰1$d]²È|%¼¤B@ Ç Ú}‰ Á¨DÈ/!…€™B@1†L!)>B@,A@†!Kn¤†!„€È2 ™BR|„€Y‚€ C–ÜH C!)²v»ªöžfê! ²!½:Å *k cÖW.bn¼. !³° “ ú1[1åJÊÙgCB GHéP‘aÈÑ'CÃB@D!Pt†„? ,ˆ’ÃWOŠ·Í›7[eúøèT!  Š@xŒ¡S§NÇsŒ¥ð,(Ç(ú… ’ÊíÒK/õПãv•¤ºæškF ñ´iÓ¨j蚨 „€D Ü0d°ƒ$¬ƒÜu×]Fii¦NJúÏ$mE#„€™E †DžS¦LÁÃC*·fÍšõèÑãØcEš]»v¡Ç7mÚD¦ .¸`ðàÁwß}7dýë_k׮ݭ[·Š+Æ Mgò¸yiFEò†‘#Gz+)“atòäÉÛ¶m#í3iàjÔ¨±bÅŠ™3göéÓ§aÆ>b ! „@$5 d÷6lØþýûûõë‡^ž?>5ýû÷çxÓM7íÞ½»cÇŽUªT!]B è±Çw=É×vóÍ7ÇKFÖÏ?þØžzê©vîÜùõ×_ûZQƒ ,)òòòxàüüü9sæìÛ·oÇŽ_}õ•X§B@!I Ú5k>ýôÓ6mÚ´jÕªeË–Ë–-{öÙg¯½öÚµk×þå/iÞ¼9©¡  Ì&Ù *FvõQ(»wïÎÕ²eËÆ6 „ Õ«Wg}0oÞ¼íÛ·#Ì%—\âÒ‚Fu¡z! „€Hˆ@RÀ¿ŽçœsG´p¥J•Ðø¨i«¯Y³¦ëïСCøvV¯^Á |â‰'ºKQb “&Mâ*K(ê?ùäŽsçÎ5ãÁZä‹/¾@~1­tI!  „@RÃÀ!øšÃ‡JŸàp™2e,¿Í;ï¼ãz]¾|ù£>ÊÎ"6 2§»UÀ3ˆºêêË•+G¹C‡½{÷v•*! „@fˆ4 ß|óÍúõë­³ã?¾nݺĜW®\‰ë†0“÷Æ3gwõçweÌqZ•.]zÕªUN8PªT©ÂË]¯^=Ö‹/fáÂå½÷Þ;묳†HCÏž=ëׯ_ø.ÄA! " ^šáÇ@ÕªU»÷Þ{‰$O˜0Ù:®´0›‚¸ÊŠz6›Ž?žÓsÏ=÷öÛoç/î¹çžªU«²I‰P›”ëN8á¶Ûn›8qâØ±c­kÂÚ{÷îÅBp,<qB@(pÎgþk|Y%°Éê¿üòK‹.@ÏRÃ6¶úš¤}ÊÞ'Œ“ýÅC>¢èE£z! r¼qÓQ1Ñ‹\1D¡ÆŸ„^²`ƒ»äbÎQôŽ2K‡4Z©‰B@$A@]œ%Ñ! r¯J6,”R~]¶ G¢ ! ŠÇŠF¬Œôâóne„§˜! ²LÆJ"1Ã.A£¨B@"F@1†"\Ý ! Š;2 ÅýI>! „@# ÃPÄ€«;! „@qG@†¡¸ß!É'„€(b²y»jC™‘î´“*#0Љ)ˆÙž£CJôD „€È-ŠÎ0Ìž={Á‚ Ñ%ÙÉA¸@ ­É?þñ‹~ôÑGö©×„ŠL! @ ܕԩS§cŽ9&&™ZØñÉU’:¤Á×–¾øÐž«¼üòËÉå0zôhˆ§M›F}TC×Ä[ Õè#<òøãcÈA¦ ’Fpê¥I^>xð 8$§÷R¦­—ÊB@"F M­—Y)q¬óánãißL:u*j=^øÜ7 Úµk×µkW¾µG¶>Êšð]qÒN`fÒh^˜¶it§&B@ "PÃðç?ÿyÊ”)xxøŒv³fÍzôèaÓ&»'z|Ó¦M| › ƒ&d8sj׮ݭ[·Š+ÆKL·3Î8ÃK3jÔ(>Ë:räHo%eýäÉ“·mÛFÆ7”o5¼Hø§?ý‰ì=ýû÷·|Ÿ¤ åg4QòǾH=cÆ †Æ)™$HBG/,8®¾újFD^ Ð®¶ ̆ àn_|ñŠ+H€Ú§O’W{‡ ²Bàˆ#tVŽ‹†d;[¶léׯÚþüùæç¡þ¦›nzõÕW[·n=`ÀRú0$=ö //oíÚµIfÜß~û-¹Þø‘1Ô!œ+;Œ¾þúkd ƒœÑûùùù(nw•Â|@t¡N:f¼—¢ä‡†¾PÙ>øàùçŸOŽR†F%úkAæ Ãé§ŸÕu’¶pûÝï~GÀc̘1X¸Q³oß¾;v|õÕW”õB@+’®Ö¬Yóé§Ÿ¶iÓ¦U«Vd÷\¶l©Ù®½öZT?¼yóæ½zõrÃBPf/T… #»ú¨”Ý»wçjÙ²ecȰ{÷nd¨^½:Š{Þ¼yÛ·ow šÛî«Ð4¢Qò›Ã CrÇwÕ`"où«Ï>ûl¬«I“&p~ñÅ£ºNÙ[E[2aùZ´ha=‚!k” £/ý„€G¤†‚’l™#ê uŒÆGßY=ž7 fñ8IV¯^Á ì2ö8‚`äI“¨g©¼êjðøSž;w®²È±zpW)œrÊ)IUM ho=å(ùË•+ÇUŽX d CûÚrÓuʶÀ…ljŒ¤wÞyçSO=5hРʕ+SÉ/Ø‘j„€G¤†Áô&s^“¥ÏÌ— ?öY6˶KË—/ÇAÏÎ"6 2gKÊAbˆ¤$3%Þ¡CòN‡c·ØDDl€ð‹/M”ü^š`Ù‰”]Ç´åÎ7²a³[«† $B¤WB ˜ cøæ›o˜zÛïí·ß®[·.Ó•+WâÇGõ3ƒnÔ¨svWOÔuŒ³Þþt€üÏ«V­ÂàF?pà@FF[¯^=Öl:Zºt)– aˆ'{9c Ú·oOÍ­·Þúúë¯ãûz饗ˆ„!prúä÷6÷•™×ã›Ú¸q#ñ‰”]Ç´¥wÀ,%¥ðPAŒð}ûö]·n¯¡N…€GHÀ—fø÷?b§¬ FŒÏÙ:AÔúõëãAz«ÇfŒ?¾sçÎ<ðÀ…^ÈÌI1agfʨETsFƉV½í¶Ûˆ ;–ݨL½?ûì3gœHlû!®KHüª«®š0aQ_œ6Qòûš{OÛ¶mË^)vj)„€ÈJd²ò¶jPB@ôaH;µB@d%2 Yy[5(! „@úÈ0¤Z ! ²†¬¼­”B }dÒÇN-…€Y‰€ CVÞV J!>øËçñ3¾Ëyi¿!½:}_ÌÅÿ…Ýu/1ÏAŽ?-1Èý%ݲ¢Ç¼$ö˜È0ØÃÔ³Û•n„ãgÌ£|ø^øwß}—t®»ŒÈ Ê'µÉêSPÎE:4ø^,).øl­}¹6¥ðö•Y†éK[Ú0=L^Ó5”›«œ|ßW.âIù¬o5Џߴ»ãKõÜ2>_Ÿ„ë%ãY ƒŸ:ŽožÞ-+è³/C’«ÞÛLJëùH3M Ú0 }I§IûIˆxj͈* >IV3þ¾9± ôêh/?ù䓤RèÔ©_ÉFzž‰Zµj‘_¡ZµjœºzX·nÝž{î9R÷Ç9kÖ¬n¸!È„$ 3fÌ ŸO¾^P0„(4æÌ™³páBòd0õ¼óλ뮻Èñ5ê“O>-óØcñ¹oèùÜ7(µk×Î2N;½À¦‡ÉK§~„|÷…´á¤Ôž6mšÕ“æ´OŸ>ÝG–üÔ ‡D{µk×îׯŸÎÑ£G“¹Ïu”œá‘¢$zBÃpï½÷>óÌ3öô’ “ä@´q¥qË‚Ï^f!rwÐØ^~ù夀ôÞ>ž|neBÃàm˜DN×»÷uHÒ°8ÐæIˆ‘?Ñ[mOÒEM.pŒ–¯XíÊ…,ð‡Ü h1ãóÊ+¯äçç“öÇNÉù3tèPÒ±ñz“ó‡´ÉVÏç©ÑŒVF \rÉ%èSNI"DjÏßÿþ÷¥J•âÔ²@™4mÚ”D›¿ýíoï¸ãc’ð˜ÆK•³‘E¡A®º‡z•:`À—j{ܸqQ£ž:u*ŠãŠ+®¸òÊ+¡²-1³øõ¯me “Ÿ”>¶@ä¹¢Ì â³Û„z2e }Ñ{³fÍ2Ã|éLqxY¨$ÙŸ[:ÇÚ„§¹%ð¨T©’&e¡ ·ŒUiðÙ£— t`KB_žä³Î: æ^dÒe5?Ø÷FSé½}Fcǔܼ £î»—!åàë@ehG¡¨õ|Í£nz”T¡ÌCÅpòæIpL‚…Ô»’xŒBŸ¤¨zú õ&ʈ§|Íš5;wùþ°aÃxuóòòP‘, xÚ6lÈ«‹ Ã0öŇQ±—ÓdEâH;wî¾}ûš7o!‘2¿—_~ÙUFB™`l ç9Žj¬·!GƒôÔ0v\¥¸êÔ©ƒö!©‘‘|”qY³y1hüìg?Cõ°œbÅ€ž íËU’4lÑtn¾\¦Lì+ á/2²La²ïëƒñÿœTI ,ke_Ÿ>}xhúØYñ\¡ˆYV³lݺµ¬sµQÆÞ èÏ?ÿ|tñüùÿ·“}„=à™\»v­[¶Ú]ã©cŽ‚£†›õ /À“T¬O?ý4·É'ô<çÜe&€áÉÄPÑ#YÇ!Æ¡ÇÿeËf¨zw.Á4ïÞ½;dŸþ¹qN8jäÁØ3d–’Ö0É1þ~qÕÇ$êÙ BÇðÁŠ)ˆqÀÿÃä/áX0·ÄÏøyo™+;‘’pO×rè}w ­|¢: >¢p —àksÓ£¤ 2Ã'zO‚‰÷4ÅŠÒàƒbí£ê¹%ØIžT{?ya&X=´iÓ†7W‹×˜h'3¬ÏD“&M áÍáè] `'-PùË_þ²K—.ì‡à½¥ÌtŒãûêðÿC™`˜Ü¹(¼åk£†üC*ÿ3t^~V0èe|Ø›Oùéþå_°UQh`bI£óôµ×^cºqã7Úl:È„Ó/¾^˜ðÄvù2†É¿ )I%Ï Oñ´C‹-̪E=6>†4|øá‡Y9‘r<*ç+ÓV®¸ª baŒ†–°T¨PwÛ±p¬8óqÞÌûï¿ùòå¿ùÍoPy¢Æ*øš3Å ½éö`¥*ÌóŸÞ“àÁ{šzÅÀcú$EÕ¿ñÆt\Û²X¦mŽ×ûñÇg+³<¯(”í­ðV¢ÎX[@l'w‰×› ü\ÔÁ] ¢˜po‚=›»rÔÑ‘ù ¼*æ×2_‹kAÔ©O6TK1´ õè §âƒÍÍwaVÖ]}ûí·)Û% ™ÂäïÅÿs¸zéN PÃ)·›‡Z瞢t0cT&yl ãyÉģÅÓB@Å1÷MóØPÃ;lز®ÂûѳgOæ(h/à't’yi¸wÌñ™ë ;˜wèÐÁËÓ•¶<¨¼öØ Σ Î=Ž,Ú82L¤Åk„б—%¸/ɨy#V®\‰¥¡/'F’BüýâjIðÙ …‚÷{À$}É’% 4àn& =‚¶½ÑnUƒš„ܼmƒ÷Ý{ÕÊÁ×!´£ÐGÔ8_ó¨›nôA©B™‡Šá“?í'ÁÇÇ{šÂ0?¸ö¼¯œõÄo3N©äR0À`U&}гÀág ‚ïÕ¾ÿ¹™—{!-VÌ:ËõÅ šÇ‹ *S<öظúB™03ݳgS”):(xð_(>ž(j\HÃâÆXG¯–„  d6Ík¹qãFwZ¥J”þJ´U2sá1åÙÅe5ÁVß<ÿÏIå TfÿþýÔ0XŽn7-*˜é9kDn·)ˆ˜ÇÆ1´nâöíÛ£Ž™×; }4¾Sf÷ÄuЭêYÈú®ºSóaâ§b{Q WŸ¼`É^ Z±NÅ~àßÃüpjNEî©{’Œ;„ùäíH.†QÆß/®†2ô={QÐñpÒO†U’±Ð„É¡G~<¡XeBn1B/_‡¨Ž‚¨¡{Í£nºÞ{d%†·UÚO‚—‰¯œÂ0õþ¿Ë¿©üÉý³/;ŵÊ4'~UÔ—_£˜/^¼téR^ &;† Ó%&¿¨9\r@É©óƒ;þl_Cw¿µ…9õ¨¼õßÿ˜Ê9ʘ‚‰õôÇpà’ XŽ¿_\õ5 }ö¢ #¨€rçç©Æ³«$cñõsšYn¾Ž¼¯ChG¡¨1 ¾æQ7Ýש; e*†kb…´ŸïijÃÀLù©'ðoÿߺV\.Àš©ÐÀ±DJ;vìˆÛ×Þ%^-‚rxöñ‡°Ÿù E\Û¶m‹ºd¯!kOš³§xõêÕ> LØÆƒ¦Ã•†NŒ‰6®Uûa¼CŠ*û˜ä  ÏŸGDÑë …q@#0!%*€$¦j•æ‘`› Ã7 hõQh`ØèE˜¿aÖ$ôˆ `ß šˆ¿–¢€[`î#.<&iø%¹$·›•Þd&켆±ÇZðl°“È3~j*£ß@À‡½(¬Vñ¨ø®FâǽCð†°3“5ÞLvÚ‰ÑݰeJk‘€ AÊLµÍØ‘Ah‰ÓŒVpf5Œ=àÆ¿d“꓌šw„È3±î”½û zËBŸ½èX4°bçd³$cñIsšYn¾Ž¼¯¯mP_…>¢Æ$øšGÝt_§î4”y’ñ¦ý$¸®ƒ…£ÜFˆà5_ û5]M¨IpWYðˆó"1MFæ­pWqà0¡óEY4`3l¢‡³˜-"Ø×$ã&ï8—ñÔƒ{Ì“CcÄL–â:°¸“õˆÂ'Ë/(@(ØE¦Ø<D+Eñ }½C‰±´è#"o>Nm›ú9Êà;Ï%¯²cá¦N®Uf ¼™i[$I…Û;@«´ˆ´#ð¼Ä döî×òÒG•Q7É›¤‡ z?ª÷øz&¡²!¿`ÛÐÇ&H–FY25 mŽÿ“(qèb"”>¦2´ |ÄQMǨӸeܑЛ•:ï¸2;–ÌróÊé+;úçòˆÒÐûæ:>¡7Ý]õ¢˜Åð5ÌìiV É;Ƹ±ÂÅ6hõmšLÎ$;(×­[Ç ”àÙ1œÜ{l˜Ô4•›X忍³ï5?,†!7Z!¤>gÇ85 ! „€Hˆ€ CB D&„€ÈdråNkœB@„È0$JdB@\A@†!Wî´Æ)„€Hˆ€ CB D&„€ÈdråNkœB@„È0$JdB@\A@†!Wî´Æ)„€Hˆ€ CB D&„€ÈdråNkœB@„È0$JdB@\Aà®ÆÉc2A#IEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/xpath_assertion.png0000644000175000017500000002257412032647206024302 0ustar ebourgebourg‰PNG  IHDR´%"2“PLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<²I2ÿW`·è]9ɇ–Ó.ó±vÑMýf5ª·ò¯5ò‹Fëág~*žEÿW'¶‚wu˳Ӻ~ršgqw5çT[TÍ\f(i:tÉÆ ®™k}.·ü¨ÏåµaEÜ*Q£è-?b`ë¢y›ú·Á²³Wÿ'ªuµ-ì±úZæ Õ= І`•êñÊ;]þöùI¿è]Dm•¤ÜÚUƒÙi/•仡 p <³ß¢ðÒÊZò·Í3Yyµ,yžIYè5¯çµ3Ö‘<^Ÿ½Ø¶1?ékIYªÓJ»’Ï}8r^Öó¨›yH¦~0›ÕP^b)¶ .ÅžÕURóØ>-Vì\þËÕ=ëòL¬+¶]E¿ºtRFÑâˆú˜*õÞòÚk+±XÖ®¶SÄ_äÒj§bàö»¼rÿ—<Ûr«þÔ6¦×ùiÛཬ­²‹¬+ë‚7]žïU=­3äÓèã…ïò(9S?‚ÎáÎ<ͼnu Œùâé"µ@y¦µú]nöéˆfŸªS Óok’g.ûþ·ü0æSèÆ•Öú/Àm0ßO«ÏòtavçÏiža¼þ†´&êw;™ŸUѳ}àçªõyvw¥¨u4ßÚõÑ/¡¾êÌ>Æ>QàÖˆ½Sì§…`?-ˆý´@ x€à=€@À{‚÷Þ ði1Û{pýÇ_¯¯ÿ×@àb5î=(ÚÒ~gèË?¾²ÈñÉo¯}œ§]qfûÄ^˜Ñ¢ÓØ!š¾õÅ9˜¼*û4OKÙåeOe]Ñ‘aJ߃åׄ^‡{…ê}6ÿ&¼ØÓˆ^|½£o7ð<æÌ…@"ýDký´³í÷µ.ñl9¤ÌHO†Åù—'ïhëóçbÄö€ÀýcOËlþå6m_;;ãµ…M[艚‚ }™á!~_)é‡t‘ò×b¡ú›ËÀgùüË÷)Rã"?Áƒû{™› Ô÷ü½Ò‡¥@aL¯`<Û¸±ŒØ‘ÚqþMü´Êo »h„—«N˜«¹ïj9ƒX)Le¼[¥Ù´:u“Ý¡= /ä¼€v)¿‰ëmoûsºÂ–û8Ÿ‹îÿþï”/{%{ØoÍ6íà§Í¼ñj••„½‹ê·ÊkT<=ÕßAÜ#FÅ cHÊø¾}Œ¯.úi‹nÒn4ÄÂè…~á˧¡—= ½‘Ñý¯>«7Õ‡@ðÓ®òÓê“<ÏÐyâÙ²I¦"u+××Uî§lPó§e¾.shECÌ/S¾ªŽõhÌ'ø%[øis›V}P²o1TnÅ¢ð®6N¯dÓÊTî£Å?ñùꎟ-.©Sìä,#eÃ/ \ï§su²Ÿ6Ľ\ôþþ¯øÎ‚Pþû›|?mÆ{0Ûž'{ OcÓ®òÓvÛïò*á;„‰ŸvkÎ{ ¿Íì­€›ý´[ó„~ùâ|gA(›ý´ÛÇsº‹¸·}¹@àþ1÷Óf¼7õœ«)†—·C:ãòúà:ðDAŽT:w ~Zà‰!­å§!žðh1÷Ó~ïÁ&tØB‡×~^»à=^‡ÝO»Þƒõˆ3ú=ɧólBøÁ!{’œ÷à¬ìRy>“ó‹þQvlåó4ö÷ƒËlÞMxJoëcÃjŒÛ›û?{å=˜ì§-š Û/{9—ص5…JO’{9[“ç|ßËirÖs’ôdyáâ‰s_á{ ²~Ú‰Ÿ–æÑ/6ž*YGÕ•¬½ Õ-9wÑ8™¿a~Å“•s¸Œg«£‹ çË 6-dÏ6íÝý´\ÖÒxÆG)x%-dMKnÙé92?ž#«ûÐ>tØû Ù“äûiË{4ž½U™¼ÊQªzªÓ¹ ~Z¼å§]å=ÐýŠº¯ðèés)iæAô¹<®´])öl%¹øƒìIòý´?­.¤êÊÎ0ÌË ï±]kÌIM_Tµ”÷ñ7´ªî„#᪂M 9„ŸvÊO˳ÖÑÛ¢ À¯òÌ­¾Ÿ;gö¬¤„óKžÖÌÞ…?¸G?mâ=(Bä)ûë/o†¿?RÎáOîß}Æy¶Ó}àSî ÷·Ÿ¶ä~Ú|?í;~ξä<>÷»d¼¯á Äë˜_ëx¼"Å4x\¸ÖO žf¼@ài`Æ{œˆà\=ð԰Ĺzà©¡Ø´ölž¦…œž|Ïø?-ðô°µ8v¹8òTTär H,&‰†—Ê4BÓ:,ŽÖ´UØyݱívƒ²­œ­‰© ¯ŠÆ3cTRV橯_‹Á÷kÚ⹯1¡cÚÑ=d{Yãótɳ3°è‰q9F©ÜΉˉçê¾puåøïKWóJ[÷—Nâ:ꪪíÕ•–ó§¡ÈëI~ªÿ#p;œý;¯{cIN2„ÐÝ,CÕÿøó_~¦¿—?ÐÏÍ«yÒ~ÿuóª0½8ŸË¿wþ»ïøñïùÙW:úùûGÑ{ãüñ»úçÀfÄ÷¬ÿ—Ÿ¥}Öÿ~?üø¬ß³^÷—ÿüwÖã~þóǾõËë¥öÜ‘Yfó4ÛOËø•XA¢:Ë )ÑEƒ˜¶Ý9ò(ÉJ+^áŸQ>]}kã”q?§9µ&Ê)o›lŸpW/Õ÷å§žQƒüÀHý´¥=×Wo¼Êøôd™ýö›aZO#ïAÔ› ËÛ¹sÑSÆõ홞ð'Äúð?7ጦó4;O¾4”u0ØêèWíô9ß¼}a\q¥ylÆL7ê™},èɉ^äWˆ¿Ê%a@àÓYÜ;¼Ôÿõ—°¤_.ùt‹îC÷aÉøbûz~9Ö›ím|ÞÆ¥ýÌö}?ئ=ìý×ßj‡ôÓúiµ¿Ù׃ÿÏ;XÿßãÐõ•x]$nõcü”ç”ê]Wûß —öÓîý~,ŸÖO»Ž÷à`çÙÏ‚_„…Êï²_²wŽó…[qUßÕUÍùZÞ/ãPÎycº®îë×=bœõ†sø[÷˜Ï'½Å¨ßõfŠÁ/¸Þ½ý¶;¸¿­ôSö‹öãêß[ž”÷àü´ýªý2p­HðD,m¸kçTB2¶]¿ÛêYõø÷0ÎEŽ_œ×}ôë*é†ìšŠìl“µÃŸ·óÂßÓ¯/}/‹ÕqÊØ*ý÷þTîx÷ìƒ÷`[¼ÛŸ¦•#AßÛfNmÙÕÔ̽•˨•s‘…gjs!Lå^>‰­ã´q9ú¾™+ƒ9¥´ñ0pJØîDOëÅú«z±_þ4ÞÝåkXÄqòŒxÁõß/ªE纛ۗ’nËÛYÅmô—cýr¼^] ùïóòýLë3ö±>[M‹sÑ[°ÔÜ_Ù9m·àÕOu¬žü=´wgœ²cï\QÇyÃíJ[,ÒÎyóúòö¥õÇc×#eEDÇêu<ïÁøiÕ—ûÿÒgËÑE ZæÚEã¬^˯„e‰h^3§‹Væ[I¾楆WÈÐ*XzwÁë³ü]q{Që¹0¿ât¦7W½Ø/ë](Y6î^oøý˯ãÌðVÑ/þÔ¶/ÝjùêõߊnÍóäLô¹Ý³óº»áü?1–•èñg©*Þ³þ‹Zó Yÿno¸¾äGýM÷÷ö̇ˆ©][woä»!Ù¤^Ûïn*÷âÌkûi\ã£VxÅÉÇ|Ñ«"+ã<ñ„)ŸnËßÇ#G.Y2w…w¬¨ê¤'Ü­mm_‰j¹èky²·,–ìÜáßøÝ1½^nÇþe?´zníZùl¼?Ñ.’=¬k|êgÖñzx¾î~Úx^ÊJíEOÇëgãxû;í³µ²ˆ×‘Æ£ýœå’ߊ5?íš3í£MËk¢«Ô®tƒ•‰ç6ÖËâBäÒIÝ!n„“¶2ŽÜ¼¿±L¸esU7èÑÔVì4Úzú­¥ÜÔf»êIçúbb§¯³i+ó—ø`>Õ·³¦Å¨ÇíégÖ>C~aýV2'ï±iIf´ðUŽíêøˆg`Ô‘tmíógw¸Ža<…Õ‹¾'ãÅ~ÚØ ùñIQmZá­e»RøÛ¡žÚž[åÁ-cºÌó/Êh רèÉß¶‚J{Í\KÙ®+²°ï°-ryAËÇô¬ýÁ>»°Œvª~OµuíÇø½%åë ×ÙçûB“íéüâ…èꚥíjùmŒÚ{Q$´i¾®~|®_®¹¯É,ÕîÍÚåN=‹¥Ö;¿¹ær~b+ØŽ-ÒuŒã±ïáaÌleÜ.ªñ:žl?í“òX3ò—E?¬IóŒ÷¶ãµVëÑÈ‹[5bDzý™ò*&ü·¥x¾F>òyúœ6Öß¼©’^â:gý6ê97èåã>‹¶ê™Åêaû’Ÿ*±ÿÔN¼UÝvËï\÷í˜N6¥ÔôÍ.VLú¡Íô³|j¹ïÛ³ÕöÆþÚ›aœc»«íœ ×µ>ÚU›¶-^œåïÓQñÓÜO;ä—êÿ¾Zñ DÞÚ·ä„wÜüƒÑ¦õä¼Ù±Æ—ëùoÖ“üz®Lúlï:³a{áË­G6rÑ“OË<ˆ=¬z”éùŒoWFäóqŸ×?íËŽ­ÆNñ\×añož‹¸ÙO«ésY£U—mH¶“ùÓüì|hW{›µ õ*§úÚß¹µ“믻¿R.íê¸:éOìhÏùh¬7Ø´fÇfÞ/ó<éÔÇà§Ý ?í¶bý½{õOYoUÞ<2î‚Æjø8þ[á'X/o×gOY癎¯ïm#dÏfnmy½ƒ{¹Èz©wû>ÉõyyÆòÞ¿öOÉO;yâT¿éãAY¯Ü×o¾þÆäqõ«Kò1íé±ýÇ5ú½ÄP.iWÕç1×s÷·sžÕ[W¾ÜÉýŒãÒ~vü>¹ÖÖ÷1¿ÜÅ?¾ OÉO‹ý´@ì§Å~Zȳæ§î‰bùóÓ‚÷Dñ‰ý´OË{ð*—äå)y&±q¿ý%?ºùÊ~ó×߀'…'«±q÷¾Ÿö>¾®¼XÏ•çk¯ûiÏlB÷%Dìv‡àëúüx¾v9 uÊ>ëÁ×9zž¯ÑOÛÂO ¾.ÈÉùi"ø5?+,ŸŸ6ÚÉðo~.÷ÇŸô~ÚåA÷]Ÿéôyf°Ç 'Ç{ Ÿ‘_g½ž›ùŸòx ã Ÿñ 4ýÀãe< ¾úå5DßKé×xëë.§®IŸûõ~ÄáúßXSÙxãõ\„l|ZתFxÆœ¦é.¯˜Óë ùõe㻇?ÂîWËý÷¿YëÅûe÷CYQ†þüEÒ»òÞÆ•¿o½¥iXLJ÷ïùiG?Û¾®>ñ Ð[RÞ‚œËGþ.c×p½÷¢')~'ªÈ8ó6Ä»Yk\ë׎GÇÑêlx›ñxi»Âa7ö[ ¢¼ ÒŸðñ8BâIXmwz}Æ7&³Á>ñz‹ÄšyŒwLõÛ1¹rÆû£< ¾¯],9džq¬òGðGH{ÆFÒõ"Dº_‘ï!»æÈ/¡yo WÛ¸²÷­´tâ¡à•Üÿgæ§Ýš¯‹'ì ÿ%¯Ø%›˜ïvÎÏ%³0qr¥¾–ÅÛh•ãk ·WâôRNÛdk'ûs ›–Vû£áº]•qu´†Ÿ,ê ÷ÇÄ ÃéÀ_6Žoϯٴz/(¯7ŽßíÓkÎm÷Jnñ†g‘¨ç¥ÞsóÓv£ŸmÊ×U¬ðuÉg×»f^Lù·ŒƒËk»máçuåhäoÂÏeÏìbc¹6C¾7‹‰Ý×Ì#ÿíE‘VZµ£Wû ƒÿA¬B«ç(•ç×¹æúF^±Ô_ªÇöb|n•ËÆ_:j§üdº¶Šnº?:+…ç!–«}ÖñÒNy~å›>ñýõ’½›î×¥rö×ïgÔ»6^Gö¾uqÍzü@µ?Ÿvïü´É¦òs›v^ºœ¯«°Ï”ØK4åß²õ§è®£÷AËë~®Zyi¥œ×&Y†qÐ*ÏéEã”_fž>ÃÆÿåîöËãÛ¯ñú ¨å”Ê×ó§×§ìv6w§í*Ö‘÷VÇ9oâ<xÈ4Ÿ¯c¸?bgª^,ÀO»ÿý´ÿ?eä~¸çý´.¯¿ý²7¾.¼>Ÿ×þ¹¼öí§ É¯ ü¬ðÙÆ?f?íì;õ«‘ú×ÂËÛèg# ðˆð¦þ¥KðnANÍO;û{öÆŸy>ç¿iÇ‹úC–Þ»ŸܵŸVlÚŠÊE}÷CxD¨6ížòüvýÇ_¯¯ß³G„S›¶ð™íüë#•Üßý_z"-`?(ðX1›§?-x 8û>2C@ '#Ø <5,ážNü´@à) lZÈé â_O KìמÂO „ŸŸÜÂO«œÎuÅX]eü§¥S~Ø!]«Þ=þ´} p7¸Î{ \‘1ÞÁ[á,ù•ñ§zDtïSžè?žz»Ä³5gÌÛZØáýȯ¯‘|*¢Zøµ+åЖh>¢ãE^cQiD‘à…WU8ü%6–îþ}œ‰‡|f2á=x_.g< ÙÖu/¿Ä58]•FÃÒ8Zukq b°‹²rÊS­:¾àråù¯R.áOAã,þTÑ…Nû@¶–¯B6O'ûiËW?¶ç’×Fã§³øW?k®Q'…¹¼‰ÌìÍ[ßkÌ)oërŒŠõ©jbä¡`Œç]ùö4C'¿S>OÏúIÛ ñ +‹¨±‘,F"OãÇ+Ùµ-­/Ûz.:¼ÆÚÊê,žaÙq¿$nÊÇŠûYt)†+²•ÄIqžNlÚo#——,¶ðP²o¼Šö-EN%åUª5–ªkKÏó”m[±]k5ãY%Ýi-ØdOæòZÇO[ËÌ#gÑQºI?9U–b ¶ÞKD×{±{+É#å®î›!rUŒ£Ec+ø{à§1übªN"ù\iD‹/c1ÇøW^â'^”·‡Ÿ¸RDÑ‹ú-9'–DŒc?#ðSyŠ6³Þ¿°Ÿ G(ׯ}–žò€3 r 1ò_ŒŸ¿¸iã~ZðÓÁO ‚Ÿ›ü´@ðÓà§à§…ퟄŸ?-ü´ÀÓóÓ®ÝO;È?¨›õÈCòů;nïþظñÜždøÉ"é¾øWœõ€<,‹³¯wÛÞb:ÓÎoKŸÙy±2ÆÍ˜ÒK¼-ä×ozòeŒ¼¼üõšÌCóÓfóô¾§6ñ5ÈR’Xœ»ó”´’ßM½øiñÂk›×’ŽÈOkgk!û¤ègt4~ZØ´mdYìÖ/{§½©Ÿ¶ìãìí•÷`šî£MÛ@à=h6í8o>KZÉ7Þƒ”~h?­¼tl@à=xX›v ïÁä¼¹þa¶ ¸ͦÍçM])ºzL»ZËôªòŒû—Ù÷ò°M›æ§ªvBŸæu¡Õråy3þbÚ´vYÜ»Ÿö,=•uë°4rø"!ÛúiÓüQÞ6áq3>82MáyÓ<åŽUÞ¸öî¼[™£Ÿ¶ƒŸ¯}ùiSºö¾%¹àµõ§Èy/<‡²i'ü´æ§ÓñÜ/jÓfó†Ñ_:e4¶µÔ¸à„QË_ÎKYqI˜bcKyWçÝ$-¿îfiøi!ûñÓqOl×Ú:i,„’¯VÂ<®›Ê?-ðü´¤ÜÚl¼5/ƒð aáÈ—ñ—4ëÑîØO+Í |¼ŸVíÕ—ØlZ‹ß1É®øzç~Zø!÷Ó*?±äñWmö+k’x…o8zO—,Ž×ÝGúi Ÿíc ¯nîìk„ÍyPþû›ÿ÷f·ûiÃ4?|ò4öÓB°Ÿ/øi±Ÿ‚ý´ØO Á~Z ü´‡ÝO{?ï…ßp¦ò ðZ»x·Óö>÷àËðyA¶‘×çovÛæÇót7»ñ»Ÿ;RØq{÷ñ€Ÿ~Zü´@ øià§ÌO;û^}Ã&ÿön‡¿Jޅ륢ã#dò¡î²ôiÄ[|ý?þô/R™¹ˆ«õ™Ç{ÀO{$¸,†ý•ÿ¬¯æ²µ(¬×¯¨e‘Ò•òºÕ2­ï·é· )ëéýyö8õÓÞÏ{p,˜ƒ_*¾ ùbƒ~èôŒýüšŒ1GëoÓoECšèîÓ³Å)ïÁdïÁß~¹ó›ïqHö[tú]Z÷oÊédï(ô&œ2É¥Úky[K^ÔÓ³öõÇ2اkªµÅµ\ku)ÖÓ¶SùqÞ«ç)4MŸšŸ–"ƒI# &作§—_«/)´äì\[ 9w$åµocëé²%™u‚•è7r^ÉU#ü½2áò@.Õs䵜¼¶ ÿ)ü´Ûì¯,út®¾´“urž^Ö]9O¯éßDÒ­ä×zr9þžrËç·sø¥·ÏqÃk§¬ŸÜ^[:—Îís?¾ÍêÙù}Gç1ËÙ+IDATþÓ'òÓÞ¿ŸöX0Û_¹,ÒN_]S9Ï…ÎÓt<ùYÄòxþ~8gŸÊ9¿×_wjhGQÙ$R½Ä©õ\=—s¤d€Gz¿ž>f?í±Û´4Ø;2ûÚdÿèû~Ê+µz¨i¥llGDìÚ•²ô bŸôžWo×ÂÖ|"›öÞƒ£Ã>~ætËÀìYå‰ê/]ÑÅQõÍrû·X]iUߘzä\¾µ“ìãi½¢ºÌê Ï*÷Óõ}zfø~ÚcÁœ¯´|§jÈìâç¤ ±C‰íÐ@Æ…Ú˜þÜfe˜_9^;ùI*­¯–/å^žÇæeäA‹³õÂØ$¸ž”;³g•c•ŸÔøéLËÃñݧg‹S~Ú¢-tµRyÿ: •üþÅïËÒÖºå7»cå…9ÕçuC¢\¿öYº0Í䯿„áïã’Šr«r§m›öH¯brýz‘¥ y?eÝ}oóyHÇ|²4öÓ±ŸÜ÷~Ú‡øi!£;#vûiØO›¥OÃO „Ÿ6Kƒ÷Þ¼@ x€ðÓðÓB ÄÆðÓ¾[κ96¹‡Ÿö5ø!Ç3zïÇÞMÈ‘J>O'\^ÈIü€ÀSÃ~@à©áÄO ž¦…œžà\=ðÔ°Ä~Mà©ád?-x ›?-?-?-~Z~Z ~Z ü´@ ü´ü´@øi@øi@øi!Ÿ•üÅ@5í@ëAÆIEND®B`‚apache-jmeter-2.8/xdocs/images/screenshots/size_assertion.png0000644000175000017500000002025612032647206024123 0ustar ebourgebourg‰PNG  IHDRÜfiνÕPLTE3f™Ìÿ3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌffÌ™fÌÌfÌÿfÿfÿ3fÿffÿ™fÿÌfÿÿ™™3™f™™™Ì™ÿ™3™33™3f™3™™3Ì™3ÿ™f™f3™ff™f™™fÌ™fÿ™™™™3™™f™™™™™Ì™™ÿ™Ì™Ì3™Ìf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™ÿf™ÿ™™ÿÌ™ÿÿÌÌ3ÌfÌ™ÌÌÌÿÌ3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3ÌffÌf™ÌfÌÌfÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3ÌÿfÌÿ™ÌÿÌÌÿÿÿÿ3ÿfÿ™ÿÌÿÿÿ3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3ÿffÿf™ÿfÌÿfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿÿÿ3ÿÿfÿÿ™ÿÿÌÿÿÿ$$$***000666<<u/;l\Å“îeÛwùD.ÅÜ÷²öR&£žªÎ]ʈd…½ÁNPözä±C™=E¿vËç•jÊ-‘E[(Zi‘#l ×4Ÿ0ÙéÌÊö<üxv¸šOØ{Zè"õí…½ÁNPõÞ.þ‚¦l,˜ìF5*©P¢s W:¯,¶÷V2ï^ýAÜë3c%Åeræ¶wöª!޾~ˆ_çÖÃÞ`pÝ< 17777777€¸Ømä}C5ÀîgúÐZâ¦iXìvê×öÜD‡6[ƒ#‚’ÄYOÜ›gf%È¡ëqB ´IaHqÍqˆ€]-n·;ºùÄ•] >ZkÕÆ>¨O„¢«%â¦svu+/Ýk­êêÞxãnl»¸½V²×ôìr¦ÌfrӇф]Šd\ÆK'"’Õ.¸W§µdJVäÚU¬YuAÁH.­ˆe¤¶Cܽ‹föúÒ¿ÓÏù˜_®z®Ô¼pð݆ÆW?âªmM,KTö仫`yvµ:I«°µâ¶Ÿú½þ4!ƈg± D6½I²)lËóÛ²Ãî^'`ÉÆ%Ý«¢nD(`‡Ämé[ žŽgÐEã<ñˆ|ÊÙ>¾L/&‘¢nʹê®î‚³È®œú»s#œC‚·®ò{] ÞÂåetGZã„2²;_ö]¹p%oÀ¶R|Ûæc//ÓÙhábýGÊíÐe®œÔ™¿îÊwãÅ“l»ç&ÉÉ^~¸o.ŠÅ?ˆN9 ¢’\Ì-븻»øjIaX’¿:+xs°¥äeœŠLoþ'¯øU (EªçêóTŒ¯ßÁSs Ù˜{“½8@£âv| ËÍznX”$ÄÜ'”@Ü@Ü”ú å:à" Øa· ,â äcîD0%Yìó,Ôä|ŒvçNÝßó™wÎfû£Øìq/tXu¯Œ×…&&ƒrŽžéÉÐÒ‹÷¢lrÑ? ß{1FÂü䄘aK–üS± VŠ’3“þÔ¦³ù°âŽÓ°<v9šøïþâ{ÛOÇîå“ËŽŽÓéêO4ÆQÝ‘—´Í '¿g_}K¶¥s·Ñ9yüu2é(â rlÐQ’-›ýœBËÊŠv¹x•ÐzrâuØ”²ç.§d9ÉšÎdXw‹â,æ[ñHs/l JÙs;ÞH1÷,Y)!ã:[)œbeTz˜'Ÿ9¢s2Íã„”°ç6Ô§¤Ëvª¼2/\q¬³…ãò·‡œÙ¹šƒsµµ~ip¶Æ¥Å£¥vXüp ì0Híž¾˜­ÆÜõý€lÄÝ 4ŧcÍŠébn n n n n nqqP*¬•N-õÑGeE óûž"ŸØž;¥ër ùÀ.÷ Q”gvx}r&Ís8™á7TN»Ó”v#’ó9Pprâk„ÛoÀnóÜ6Ås_pyø£à#žy6ª`ªÐÉùÄ&»ë×aì’˜û=þò…K{ËûZo1Ù;$ZrÙгŠYìU!J#­´`Ïn@)ð…uO(å5MôãïèóD‚õî<,)óEÓ±þìMñßRsœÕÀNòÞÂ’½ï>Kýlê’’Ã!sI)VÞ9ßQ‘-õ$eHk‚]sÇéÚø«ôwlêDLŽBB$kÚBg•¨„çs¸L‹1ªÄ %ØMâΤ˜”¿D)‰üC6¶D??à’=wõË—¿«ßPÕåP઻ä„R‘û~v’¨“¿±©¬”—X¹†ÇIÒéHÉWbú,‘TUEòbv¸sô*w ÎOI]£å°Ђ¸÷+£+ó×a/°»O(€¸€¸€¸€¸x0{`ðÄ·»AÄ ¶‹¹ímîÐLJ–€§ê“â8¡â DسAãØá(ʱ³¦)]@W¶Às‹¢mÔ6*Š;v0v¸}yF­£¶Ý Y³„<·X•éóò?Qy»»‰néÇV~½í~˜ßqoPxUÅíß©_"Éd7<|ë.ºÞ.Øyû:{_CÎ7õ±ãOÞë­~rG½º|kª›°ýäpþAM„jж<ÿž›)y´oßš­©Sî’ýQÿ:1wßÅ#´õ­,ˆQ"oõøVw§¯­¯M—kûßižÝVÃ(í÷µ­,‰ËO¼ß6<9ä~°þ¬ZÑOɼ¹cg‹×ÿ˜–ˆ§±)¸áju|-Ï-:é"þšWß쾸9åcúNM\ÐWå7þh$éâÏÐŽ…ãº=5úŒ?%•ÙLnzµ1e§¹X©±Ù ¿‰X,IV›lÝàRÆê`ïök‹ü¶‰hÆsSŸ~n ®¨ý6¡$6(íG)VöÊ+ŠýÄâWÿI®— EmŸ‰;¤°ÚvYM^Û‰…¨ÞP+(˜«ø.„2v3Ñ=ï Còh}á.(í· Î¬ ú£æX+Q®-f‚1Qâ5PjnY2ú§Ä˜°ÇYÎj^X¶íùʬÔhP¿—·*-„‹“ßÿ‘³¡Ü~:´«þC±c®“¡ˆNÙßä|Jª¨2ä¶ /[öˆz»™×¾G.“ …u¦*AÝ¢A¹¬?¹®dµm ¹GÂ<;&ö»Ì¾ãj=nZfö0Ñ…w‰.)×çªcû¦öså8äßÒ÷ÜRјþ"NKü(ÖTØë (Ë–mòQbË35?ÍØ÷ÆÃã:¯«ýÔŸîm{‰«²º…gõ¡ù3ÎêFùA€b“ÍÕÈsù¤ìŸ(™~"Ì5T·ï“”A™­ ÓÓù”|[©—æ•¶ï¿m»ªãÕÊû­ö¨m;xÛ–ßÚë¹Ï„¶¦g¸¼|da>9Aæb d÷!ç–)Å]A®Ÿ\Õ^¹û­ûêÏÖPÀ| ®ÕÏüÞöÓñŸ{y©„½u^iµÚÙ¤|Êí/´8ÕÔuªsd¬r.$"¿g_}K o»š¶ÆTÜrÒ®”ùF£Ë~f!»…øV÷EÁ¢õ‚MöšÆð3<@QëaFÙË^ôŸÄ(öÉ€>gß·åÊsý̇•ã[úâNû ÇDÿè½ÓÎo1«Ýó½@Vr•j®ÌeúòòízÚ§_’?¸­Ì`ÿb 7Ød•‘ä./‘¥‚'\i¢¯q=”Ëõ˜™²â¹L?¹ö½¾4±Am¶ŸZÍ®<È;W/ko&ÉÚ®ÿvh¥m¶_RAÛV#k›•Lý\öÎ!2WÊ«XŸRß_Qš,R„Ò>ß³'ååï€\?ù}Ky+ÌþçíZª3ˆŠu<£‘^þП³Èèëd´ð$u² çåRrû2: ì˜ÃneÁ ‚?~§ne;V3oy9¯Ì÷è®…M©ûQH¶^_Ñ s«Ò£(?:_§¼zØ:Y¼ö({ÍÙ÷;òçe®Ÿ«oé‹»ÏS8&*£zâZ^<úG.jÏm*O¹zÓpw‰%_ þ¥¬“'yŽ2tøYEË|Ù›lâsÊÖe¾xz)—é'×~_kß2Ôö×øèl`¥@¶^röxO²¶ÃGãomÐöÖì;½­ _ZR”¨ä”‚å=©tÜWøYNjûlX1¨˜ ÛO¥†OäÝèõüíÝ(³Nª*7:y?9£ëó‘Ê ˜ rßåö;²©²v\édö“«Jh=9ñzÁvÙ}Ï–Éаu?Š¬ÙšµçªtAK“täˆ|Lrõd?³=‘KK½ÆBûR^?Wß’¹ 7Ÿcãï{ÂÙ Íà‹ôqȵêí`:p-ÞÔk^ ½ßy«8¼²­ÜÉM iòŠT4v^^Õ¾Gð xúsí VÛÈ©(õt¨FÒÊŒq³…µí3‡ho†6nûa4~&ÈÕË”ÑôÛrf¸ãJÑ.ˆrûl?r&8ïå&X«ŸfãX¤¹ç@\«Ò±¶tÊûà–j¹` {Û3B{Û•w±å:¥“·â‘æÞ¢íÔÏ8Ò“?£ÛÂÊ~YSîBJW&:XÙ^því,“ß¶Ù£“­'çúþùýáæAÙ7×O!]||wAÌÝÒóÚk7^Kö¬,)ï0(îk9T\ØxO%é™ì«¢® q°÷~Ê-_í0Q(F¶|]PKqTÂÛ¿§¥'×þ´ûu©œ•ÚC)%Øçõ޳óv¹mÝfÚö.SOܬ´*h²‚šÙ~!·Ïö#ïÚA»Qqü«Ûš~Vç¤.¶éUÖ …•ºYt’tO+JÈ·![.ØQ ¤²z1ÊöŒwræ«}OÑv á¨r¾ò¯M¸g²ûQ„Ü6dÅÊVƶ+ ¥Ü~ò±®©õäx•™æßWõ9×ÏùUÇ·ô¯s;ÄF[ZßÉûVËHò‘uø¦+‹K»†Ï¿1à"—Ïÿ£âUesC÷xzÇå…oÉ9Oª¾¸@¹|Ê{:úËÐþüplRúÀNW}³ÊÙRE`P®—·ý&o»×oz@Û³ÃÓBµ,„ðWß¼’ÿþ2½ßÙWœ³ÂÑiÓ§õy&0ÐðyÞäý¬ò¿<è »of•u~wPÞSÛå ʹ}ù6¼7pÙQ]`[™¨íôKƒ³õ…Û)èçä´^ ƒÕÙý(î éY_"ꊪá—Þv*®JöXÎÎqÈ_ëì½_§Ö³ò¾÷µõ>CÅöÍõ3{VŽoI!ä¦Ñ{+)-ŸÄ¶›¹ºŸ¦½cÆ5.G>fûñÍ‚”ñ·^/ò»°õ_plºöíþú]ÜæßsWÏZ-áõÅý$˜”<°ÌTÆðßç· »›i[eBÐ;L[dõ aÿÓ Ý3¥ùíI‰ˆ{+ïÄÙÌqeGçüNµ­r` Mp`KéB Ä @é‚„ÁpH„¸6q| Ï 4ë¹s°}žÝZ7ž¹´Âqqqqqqˆˆˆˆ€Çf­Ÿ¼¦C‹‚d²•­qsur¾ eeò(ÑZ7ޝW€öÜÁ¦ºý{›k%«=ê)˜å©ö6Ì¢UT€w„âT>^On7ûgÐ¥àä„ÈóeMÈIÌ‚S“ê]DqäÉ_Ÿ™œ8–¦Ä±‰É™ IóS“Á ÛÔL)À·%JÊ,Kês)ÁÆ8EO QC㫟?1b•s Œ“Ø4¢o‘³F%Éʽ÷yÏÍL"PHìOë¯ÏŒêŽ_µY¯éå¼ý˜lÓ‡Ö¹å\v‡\ý­^¾/ç=͈=.žÅÖH¡l´(UJÊœäñ}­ó¨Û€ sˆˆˆˆˆ€ƒK¥ ³f€çÖ ´Å*Û¨Ma ˆ[sÚ¶fú½ýöQ¨a‰æÐ·¦‹Ôî]€)à¹5æ¸$ß9ó;z'\7<·Æ„Âñ¦ò=ˆ{7àóŽ!kˆ[3´ê ÇðÜ·VpˆÖ×þ’oö78 kˆ[c ttf<:O¦x²àjÉλî†pòæ7ÂøŽž[{ê&ñBô¤ qkTÞa 77€¸€¸€¸€¸€¸€¸Ä Ä @)‚ß–”È[Ï­Ui#o Ä­Umå-q»aˆ[+èÛô^>Àˆ¹µæ¸$Hz>8çå¸Û'Á(·F„´^ø_îàxˆ[ø¼}êŸzH$ÈâÖ­ºÖ>eÈÆàðÜ·6pˆÖžŽþ_G6oI5dý„ÀÕ’g Cçdƒ:‹K·v\7ò–lx¾» æÖÅyKnÄOùÂVâ~82b4#T8õîÕ7˜,*˜‰-ÖlPeºå‰ne®[Y¦,ÜÅyK ë˜x 7ÀCÜÉ\ËGeÑ}ûÖÎúj:¾qª…î‘ËgCwv~3ç-IG#žƒ#&bî‡$Iq2ïãéÜ’ĉ© È‹b3÷–”’‹/úÓ3î4¥Ý“Ü‘«åR3“ŸÎ¦ò³/t­ã »6븡å_xú“l*×ï”F¾‰¨â~øªSÓ ÕSÑ0…]UMÁÜú¸Ë«ÎüÃ[- ´Dªä^]-7ë í;,TqW×bÞ´¶iUÞÃX½õ”‰°äa©éó¶Òà Y;R@¨¢™XPûúÄ.PF™j0QäŠYdá³j¹4}ã—·…‚0¥;_ÉÝ]›µs®»!lúá·Þ¸ý§ª„¸ýgF"­-òôBÛˆžŽ¥rëY€Ò¡(—é_xå|4ë7(«är¿òµ<ø¶iˆ»›òbî‡T7‰¢ðý$Äý˜HVËhƒ,æT¤ßÊÕ|kíÈLâY²ËÛ†:>PU/—;/Ešû×¾h’§ê‡8„˜ûñ™v¿«ÛCå|Rls±W+Å’î™5JþMŒÅ#f:ËBnIÙr3GtUÌ!äŸPª¼»û¡ãÏý$©JLÃ×yÌ}–޲3ÅÊ+ó4X½FÉïÌ ØÈØÓQ^FU½÷ëÔr5C~iÀ™_®0Ê~”˜lȸQ CwÛÆŒõWÕs°ôV€\›æn¦kÔ3 ,Ñ"ÏÐuâ~Z9„ß`CÜÅñ1lqkÖsÃ% nV77ˆ¹Aä-çÖª´Å*Û¨MÄUEˆ[{ÚFÞˆ[³å-á,ùaˆ[Ž»8o IKS -0 N(5@qÞ’PÄ;pÕ»Àsk_º/í“ÿ”ùÓ™¯ÔÙô° Ä­Šó–\ѽåg`ˆ{÷³*o‰£~tùÔ qk¢¼%$˜÷UÀ,·\wC8ùFó á¼ï(µ°Ëル%% nä-¸µ,o€°ˆˆ@Ü@Ü@Ü@Ü@Ü@Üââ ÁoKJä-çÖª´‘·âÖª¶‘·âÖ,EyK¦c0 Ä­Ç]œ·¤õøtøì‚J-Pœ·äFlñ”/lUu9û<:xTߎ{îQoŸú·½b[¡êGê+1Šó–¤£ÏÁ‚çFX²ëqˆÖžŽþ_Gƒâ¸ïµ÷ŒX!kˆ[ ð¼%|+³†1#ƒUž¸Z²ó®»(oIZ Ï­u#o Ä­ey„%@Ü@Üââââââ77¥~[R o <·V¥¼%·Vµ¼%·f)Ê[ÂYòÃ,·wqÞ’–¦Z`œPj€â¼%¡ˆwàªw¿CÜÀ—Ë[¢ÌŸö}¥²†¸5AqÞ’+Ñ·þÀhÑÁs?6È8µóA·µ§c Å×1 æ-!)ºàí9Ã<… Æ åÎÃs– ²!çpÌûÆ*`–ÇâÞqŠó–pŒµ° bnM¨yK n-Ë ,ââ777777€¸€¸€¸ØF 8UE€6Å= {­Š7™ÄÜ@Ü@Ü@Ü@Üâ† Ä Ä Ä Ä Ä Ä n n n n n nqqPÚü?µæ¢~/ÐIEND®B`‚apache-jmeter-2.8/xdocs/images/logo-small.jpg0000644000175000017500000001154112032647206020561 0ustar ebourgebourgÿØÿàJFIF``ÿÛCÿÛCÿÀ0h"ÿÄ   ÿÄ3  !A1a"#‘ð$89BQR¡ÿÄÿÄ-!#1AQa‘ð"BEÿÚ ?¶§Ä—Èn¡Çð,°¼®î݇IoRÏ;Ë´]–Ã3–ç´$쵚C¹þ_;©¶²ÏØÚæ6¶ §t4²t°¬ÐÀ R¢o«¾&[G™ØSrìòr/Ð,ìz.‚ÿ£»?¼ÉXùA¶Òó`³¢áÈÊNóMžp‘:ïtÙß±[– â„^G2v’¿dM 4ºúš[LåV¦J°$ÑVÐ^WasHÓÇu•ÇÒSgZ9Q„yU5“—Ò3£•ÞxÛYÖí{d›>èêЬ(¬N:Aò“Ás½ÐÝ[äU´Ewµ»é‹M½ç,ÚKÐãâå:c4‡‘Áž®8pþ¼¥Q´óÊɬŠå»vf +Øøè Š ª·Ú°„9wì&²™u²Ûì ¬f´óÔ@@k¤Ø¢wç"\‰rìÖ*æÄ 6§ä.©³ÞTí vDnqñè};E9¦âYÀ:&‰¹+ŒŸêDÇâ‰Ëê1}hòÏ·ÛqŒÞ–S„œœqTXû|Ö‰öPÙUÞ­uyò5ÓÏùO¶ª±Ý_is4·˜i5«]“+?«ÒÄ2dáxN•0理–¢ë4óm-˜>´[£g1ÆÄ@ÕÒVŬæ~@q}šÚÿ©¾|’–WõmFÿ« ò ù®_W¤¢¼7ŸEÍ Y¤aQ›MT<—ò­$we¨ò¨ÒN,ûG„gy_ÒyîÃÀ’8Î¥A{mYÐOÛe55pY‰‚4`â"€>}D¯šç3J̤e¡è±U´zÙ0-ŒOAŒ®+qɥ߃íHÇ\­pÙ^ÀV¯e ì.§j“iÀØZÁÂÓ±äÓôøüs¯îy{eÏqE¬1œa‘£K%ƒ« NRý¹ºÒ"¢ÂÎÔÈŽzà×ù¯§a*¤šb•¥–²!Џã5Î6ö;:§µ¡–‚ÀT9ÆrY6)ÂŽ\SÀËzÚ‹&1XBDæú‘¹ÌùâsWÓ‘èaþ,7’w›.Ì<¾››SygÃ]Öªº… N~Xk:#¹õ–ú¨ø&utN†kx«ÒáÓ1÷íW¶Fu4FͲ4eÎÇI®ž$"V3Ý^ø¡WýIÔk•ÎcUˆ¿2§²ûiõºÙºxL}mŠú²Y¥(¢ýÔÁNa5†¿UZ@b•Ñíø•ÉÞ¿q¤ È`}•vË($«Ó6w®“™“ZüF;“_1$PG#îd—„@ÄÏkÒô=üâø…ã¼?•ÕèùXë6]ev+J, 6tÕQb›Ÿ}Œ×) ÐQ$q’š!PEI÷t$$ßIÈ@f(aàq$ð1dži£Ž#•Šé^汨®Tj*ª"¹Q÷TOWCë?¥ëf…ícÙ,OdŒl‘¹²5Í’7"+dc‘UÇ#š­sUZ¨äTUEO_–<²KsÃ$°«hÙ+$K+Qñ¤¬k•ѬŒT{èŸ;UßtT_K¥ÖoKÒô½.—KÒô½/K¥ÒõÂþÈ«ÿ„_M·cÞ›Êù7Oéµù¢öFs®wµÝ‰‘¸À?RNG9e ƒ8Ó@TAy%{jÆ.AHŒyËdφV±X°áçñ¾óm7íÛq6xýa;o ²ß´µØç.fÛ;˜ÖÖi¢ÅBP€ kG€Ö5mD|²Â’F’4NP0GÆyzÆ~Ò~1ܼcþÓ÷˜Žóúõ5ÛÖj[¿^«]N„¦.=cäºÞó…¦[1=Âe31Úg÷ê øÏÿS¾Õû¯üÑvçÿ\fÿŸÇôþÞšßïåÄðwNÏ™{)ªÌ@´î¨"ðXØÖ½êù*‘Œj5ë'ÖVüªžè»Ï†š žƒñìºüÃ^æˆòg»œ%ÝlÑZxôšÚ9¬B0gH9@H|_(Æ$ƒ£–_ÑU¶ñ¸)øq´HªÌ¯Dçuv«ÿc)v™Yhä|Šˆ©ôÖñ¹Ö~þÍrÈ¿âEFûÕa¿ôçöœ¥ŽÓüöZcíüýã¢%ÇŒè£?b?ÁÁé"_+'=Š?ií1?Úc­óÜ…¶2•A¡O–÷AÑ«´vO²JM•®èSì‰TwÌç«*UsÝïó?æù•\×{À˜¼>Ê¿UžÈžê¿2Oãýå]p,«íBʬá,«<!0#D*&N)B”;ä€É‚Hæh¤|sÄöIžÇ"¯˜Ç6øáö|î¯u‚è>Wõ¾ÍQ¾å}‡(v[-NÍ,zA¹+Ó9‹òL¨}†—?{oµ(&hÚ7 üޤnúÍ ´ó&0ÿˆ'š¾LrÚï¼&Ìð~k}tYw~µåoT¥Øj²Õ4"FXœ÷ÆÎdS7wñçk‚ (/ú=Îb”¹^( ­‚!Vg6?iѲ¿møê˜¼À× ¥S5ŠÍühlÈ‚-XÄZ´Š·FD½Ôlí¤}LbEoI?‘ôzü}±³^­¹ê;Ð.²ÞÌÖ•~ÖC·¬$è‹téÜD ZèRؘ]„H¶NLBí_Qžèß¾ëïìŸ2{ª§·ìŸ¿õýýý¿¯·ïéz…ž5x‹iÈíä韼u(ûÍ•|€Ò:1`Rf2∶4ü£äá­çÜÖ §µ°’EmYºË1a„{ÝU«¬ô½g#¿ß¿o×íÛøþÿ߬SBx!&) ž(æ†häŠXejI±ÊÕd‘Ë‘Y$oj«^ǵÍsUQQQU=ÞýðuãB¸ÚµlÌa)gœ¸«uˆ¹€ÜÙ_8uwZÖÏHÐI,rLñAÿ"bç>d5£¿”þ:g¼¬â;>¬Ômqùí¨Â}æí´:(`°†& ‡ PÎ4QØÕš!Ù²ŠT/êž dª…šÆQX-X@1µO:¾OðŸ›+4‰”‘À2?åë)ޝð&c]{Ëzi®òƵð*Õ®×±^Ê!Õ.-µÛ+™"\ȉŒÉ˜‰œbã=¿‡•=æO†fzOûJj‚†Óž¨§ËLÆ’ä.t×U!Ü imˆË¬ÂêD´4\\³ý0ˆˆ^Jþ'p¹À—™L_ß¡·ëS3éŽî=ް zË “”¨ 1Çš"MÐÕ“nÑ䌕ÈäI!ºü=9Y2°Ñsþ«“Ò‘^ã?/—È~hgUt šGÂm™eëÒMZ:ØR7S¥!ß–Š-…ÕF\רÂK¯ªµ­}©~Jñ6Žc\£ÓxÎ5E æRWæjØ×kÅ&h²Îå”Zþrž® 嘙fÅpÏõ»öM¹«[¤¤­w ¾]–ͳq‚mW-kiÇÚ¥5ûºéd*`o|™©ñBÖ'Þ>¿ÃŒ©Ýäüž2ËŒéø_Ù#딬*¯£S¥T1iTšNíbI}ÔvÔFˆ]{ñ ù}«Œê“|¯ÅcƳc ˆ>1“Ï€Ul3DŠØk´Ñ‹irC•ê9dW›iIÒ<øÅ÷VóûIÔ™`»~ÑäOh,§iŸ¾ÒÀLr ƒ{÷Æ\HûXÔ5èÈ;æ:-høf³Ågá|ò\yœ\žJxõ^@‡Kù[„çÚò–0Ç|hNHã«~”,U°Šêš¹b„ØGˆdÞ†ü1ܦ:[30Q• «ö‘…Ì4å°û¼´q+\<èD¶M„‚¦‡å,‰¦¼ä4*©AëúÙ¿¦l{ɲ;NZí-Ïúƒc§6WÚ Åj®åœu:Ž‚‘²ëU±F‘šÕÈ¢}†äß§üî³VåNÒ‰¹³IÚ÷Ó.×s=Mj\Äfv<žAÃ`­p–V\²D`JÖºvßõº3 „NÕ¶ bûBlélë%ÁψŽÖ <É^5{æŽAm )~µAÁ¿éU‰óbÜyQä¦Îxã躟.ÉÉSŧi·hÙg¡™'$Ù‡‰ÇCŠû¢=ä‘Çd‹šyT/•ÿr§Ä¼-Ä”ÓZiú?U–Ì}QgÏT]Ï!¶p¼p’i¬3¡D2I÷0éŸQXèÙ裄ü:ßÜ«õ-Qé³H;aúÞ“aO’Ȳ©¤£9Ý~"oœÔšVJÉŠ"6Ã9ÑDØÛik÷äׄø;âW$-‡à\ã z°¸eÖ J–ûg‹$„Í ¯Ûèd¶Ö¼GNi“ý£®Td˜²eH‘óÊ®°ýXó6À¶Ô©ˆÕ14^·$§cÍ휈–Ìví¬å,a´Á°¸üÁ5a"´ZX4:UbŒ·<}*bk±ø.äQÙCךæ]ÒͺŒ%2 füulžeNTÁ•qUPlvÈŽó9ð'àuå^Õæo1\b²•dSšGaèYóiìE?:vbÉÖy “c­Ñh즰µ¤´ªdH„¿D4DFéî-ξ~+óÿ#òv¶šÈ^‚³K¯ ´V¹ !²»>²Ô{s¶Á>A)ŠùÓ«“:}mü€K"A<öY°BÔDHÛþo—öýÓÛÛÛÙ·²zÍè1œÚ· ½Õíî›-Í–ÝDüz"úØüv7Z|Hªa°Øš”±˜Ê¤Áö¢·¹Çã6éøs+ó_•îâJε¦i¸]}7+൭_ ‹¢)׿DºþBÕ’ExcnÚj—éïQ¥Ö=Ü5=š‰þÿ¿ûÿ_K×>—ªn„ÿÙapache-jmeter-2.8/xdocs/overview.html0000644000175000017500000000170112032647214017274 0ustar ebourgebourg This is the documentation for Apache JMeter version 2.8 API. @version 2.8 apache-jmeter-2.8/xdocs/download_jmeter.cgi0000644000175000017500000000036412032647214020405 0ustar ebourgebourg#!/bin/sh # Wrapper script around mirrors.cgi script # (we must change to that directory in order for python to pick up the # python includes correctly) cd /www/www.apache.org/dyn/mirrors /www/www.apache.org/dyn/mirrors/mirrors.cgi $* apache-jmeter-2.8/xdocs/mail2.xml0000644000175000017500000001256612032647214016301 0ustar ebourgebourg Apache JMeter Project Mailing Lists

Before subscribing to any of the mailing lists, please make sure that you have read and understand the guidelines.

Please note that usage of these mailing lists is subject to the Public Forum Archive Policy.

For details of how to subscribe/unsubscribe please read Subscribing and Unsubscribing

List Name Description Subscribe Unsubscribe Archive
Apache JMeter User This is the list where users of Apache JMeter meet and discuss issues.
Developers are also expected to be lurking on this list to offer support to users of JMeter.
This list starts part-way through Nov 2011, when JMeter became an independent Apache project. For earlier postings, please see the Jakarta JMeter User list, below.
user-subscribe@jmeter.apache.org user-unsubscribe@jmeter.apache.org Archive
Jakarta JMeter User This is the old JMeter user list from when JMeter was a sub-project of Apache Jakarta. - - Archive
Apache JMeter Developer This is the list where participating developers meet and discuss issues, code changes/additions etc.
Please do not send usage questions to this list, see user list above.
This list also collects Wiki update messages.
This list starts part-way through Nov 2011, when JMeter became an independent Apache project. For earlier postings, please see below.
dev-subscribe@jmeter.apache.org dev-unsubscribe@jmeter.apache.org Archive
Apache JMeter Commits SVN commit messages are sent here.
Prior to Nov 2011, they were sent to the Jakarta Notifications list, see below.
commits-subscribe@jmeter.apache.org commits-unsubscribe@jmeter.apache.org Archive
Apache JMeter Issues Bugzilla messages are sent here.
Prior to Nov 2011, they were sent to the Jakarta Notifications list, see below.
issues-subscribe@jmeter.apache.org issues-unsubscribe@jmeter.apache.org Archive
Jakarta Developer Combined Jakarta developer list, April 2010 to November 2011 - - Archive
Jakarta JMeter Developer Historical list, up to April 2010. - - Archive
Jakarta Notifications Combined Jakarta notifications to November 2011. Includes Bugzilla, SVN and Wiki commit mails for JMeter. - - Archive

There are several 3rd party sites that archive and provide searching for our mailing lists:

apache-jmeter-2.8/xdocs/demos/0000755000175000017500000000000012165514774015663 5ustar ebourgebourgapache-jmeter-2.8/xdocs/demos/AuthManagerTestPlan.jmx0000644000175000017500000002146312032647206022246 0ustar ebourgebourg false false false 1 1 0 1211836473000 1211836473000 false continue http://localhost/secret kevin spot localhost http / http /secret/index.html GET true false false false false http /secret/index2.html GET true false false false false http /index.html GET true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true auth-manager.dat apache-jmeter-2.8/xdocs/demos/InterleaveTestPlan.jmx0000644000175000017500000002265112032647206022150 0ustar ebourgebourg = jakarta.apache.org server false false 0 false 5 0 2 false 0 continue 0 ${server} http /site/news/index.html GET true false false false false ${server} http /site/faqs.html GET true false false false false ${server} http /site/faqs.html GET true false false false false GET false true true false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/URLRewritingExample.jmx0000644000175000017500000002213012032647206022240 0ustar ebourgebourg false false 1200525828000 1 false false -1 1200525828000 continue 0 my.server.com / GET true false true false false false false SESSION_ID false true = user true username true = password true password true my.server.com 80 http /main.jsp POST true false true false false my.server.com http /something_interesting.jsp GET true false true false false my.server.com http /another.jsp POST true false true false false apache-jmeter-2.8/xdocs/demos/AssertionTestPlan.jmx0000644000175000017500000001520112032647206022012 0ustar ebourgebourg false false false 1 1 0 1211836421000 1211836421000 false continue jakarta.apache.org http / GET true false false false false </html> 2 Assertion.response_data false false saveConfig true true true true true true true false true true false false true false false false false false 0 true assertion.dat false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/OnceOnlyTestPlan.jmx0000644000175000017500000001706012032647206021576 0ustar ebourgebourg = jakarta.apache.org server = jakarta.apache.org server false false 0 false 3 0 2 false 0 continue ${server} GET true false true false false GET true false true false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/JDBC-Pre-Post-Processor.jmx0000644000175000017500000006136312032647206022530 0ustar ebourgebourg Execute a series of concurrent valuations false true CalculateFees 1 = CalculatePerformanceDetails 1 = DriverURL jdbc:jtds:sqlserver: = DatabasePort 1433 = UseMiddleTierValuationEngine 0 = MiddleTierRequestTimeout 500000 = PricePropagationMode 2 = PCOQuality 5 = ValueDate 2011-07-21 = ReportingDate 2011-07-21 12:30:08.337 = Database HSPAD_MI_440_SSD = DatabaseHost GAIA = DatabaseUser sa = DatabasePassword sa2008 = Pfo_1 1548 = Pfo_2 1611 = Pfo_3 1613 = CutOff Nr 11249, 2011-07-2 / 2011-07-21 12:30:08.337 / DailyNAV Estimate / Within Price Cut-Off false 5000 ${DriverURL}//${DatabaseHost}:${DatabasePort}/${Database} net.sourceforge.jtds.jdbc.Driver true ${DatabasePassword} 25 10000 60000 ${DatabaseUser} 4096 Connect to local HSPAD_Demo_CO and set its isolation mode to SNAPSHOT (4096) and disable auto commit. continue false 3 3 0 1316530469000 1316530469000 false WorkBench Concurrent Valuation Test Plan PCO Valuation continue false 1 1 1 1320821253000 1320821253000 false 1 0 UPDATE T_SettingGlobal SET UseMiddleTierValuationEngine=?, MiddleTierRequestTimeout=? ${UseMiddleTierValuationEngine}, ${MiddleTierRequestTimeout} BIT, INTEGER Prepared Update Statement Commit 1 0 0 Update Statement DBCC DROPCLEANBUFFERS Update Statement DBCC FREEPROCCACHE true Update Statement BEGIN TRAN COMMIT TRAN false Callable Statement PfoVal_Recalculate ?, ?, 1 ${Pfo_1}, ${PfoValInstance} INTEGER, INTEGER true groovy import groovy.sql.Sql import org.apache.jmeter.protocol.jdbc.config.DataSourceElement try { // build Pfo List println("Building Portfolio List") def pfoList = "<PfoList>" def pfoNr = 1 def pfo = vars.get("Pfo_" + pfoNr) while(pfo != null) { println("Pfo: $pfo"); pfoList = pfoList + "<Pfo ID='$pfo' EmptyValuation='true' PropagatePrice='true'/>" pfoNr++ pfo = vars.get("Pfo_" + pfoNr) } pfoList = pfoList + "</PfoList>" vars.put("PfoListXML", pfoList) } catch (Exception e) { println(e.toString()); } CreatePriceCutOff ?, ?, ?, ?, ?, ?, ?, ? ${__threadNum},${ValueDate},${PCOQuality},${ReportingDate},]NULL[,${PCO},${PfoListXML},${PricePropagationMode} VARCHAR, DATE, INTEGER,TIMESTAMP,INTEGER,OUT INTEGER,CLOB,INTEGER Callable Statement Prepared Select Statement select Nr from PfoValInstance where Pfo=? AND PriceCutOff=? ${Pfo_1},${PCO} INTEGER,INTEGER PfoValInstance DeletePriceCutOff ? ${PCO} INTEGER Callable Statement ${JMeterThread.last_sample_ok} false Commit Commit the transaction of the valuation false ${JMeterThread.last_sample_ok}==false false Rollback false false saveConfig false true false false false true false false false false false false true false false false false false 0 false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/ForEachTest2.jmx0000644000175000017500000004464012032647206020632 0ustar ebourgebourg false false 1 false continue 1076438592000 false 2 1 1076438592000 Sleep_Time 100 = Sleep_Mask 0xFF = Label Sample 1 = ResponseCode 200 = ResponseMessage = Status OK = SamplerData = ResultData a b c d = org.apache.jmeter.protocol.java.test.JavaTest (\w)\s inputVar -1 fout $1$ false returnVar inputVar true Sleep_Time 100 = Sleep_Mask 0xFF = Label For 1 ${returnVar} = ResponseCode 200 = ResponseMessage = Status OK = SamplerData ${returnVar1} = ResultData = org.apache.jmeter.protocol.java.test.JavaTest Sleep_Time 100 = Sleep_Mask 0xFF = Label Sample 2 = ResponseCode 200 = ResponseMessage = Status OK = SamplerData = ResultData a b c d = org.apache.jmeter.protocol.java.test.JavaTest (\w)\sx inputVar -1 fout $1$ false returnVar inputVar true Sleep_Time 100 = Sleep_Mask 0xFF = Label For 2 ${returnVar} = ResponseCode 200 = ResponseMessage = Status OK = SamplerData ${returnVar} = ResultData = org.apache.jmeter.protocol.java.test.JavaTest false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/InterleaveTestPlan2.jmx0000644000175000017500000003333712032647206022235 0ustar ebourgebourg = jakarta.apache.org server false false 0 false 8 0 1 false 0 continue 1 1 ${server} http /site/faqs.html GET true false false false false ${server} http /site/faqs.html GET true false false false false 1 ${server} http /site/faqs.html GET true false false false false ${server} http /site/faqs.html GET true false false false false ${server} GET true false true false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/ProxyServerTestPlan.jmx0000644000175000017500000000306612032647206022361 0ustar ebourgebourg 8080 true 0 false 0 false true true false false false apache-jmeter-2.8/xdocs/demos/forEachTestPlan.jmx0000644000175000017500000001622512032647206021421 0ustar ebourgebourg false false 1 false continue 1076438592000 false 1 1 1076438592000 localhost 80 / GET true false true false false inputVar <a href="([^"]+)" -1 fout $1$ false returnVar inputVar true localhost 80 ${returnVar} GET true false true false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true apache-jmeter-2.8/xdocs/demos/BeanShellAssertion.bsh0000644000175000017500000000410512032647206022074 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // Sample BeanShell Assertion script // Derived from http://www.mail-archive.com/jmeter-user@jakarta.apache.org/msg05597.html if (ResponseCode != null && ResponseCode.equals ("200") == false ) { // this is standard stuff Failure=true ; FailureMessage ="Response code was not a 200 response code it was " + ResponseCode + "." ; print ( "the return code is " + ResponseCode); // this goes to stdout log.warn( "the return code is " + ResponseCode); // this goes to the JMeter log file } else { try { // non standard stuff where BeanShell assertion will be really powerful . // in my example I just test the size , but you could extend it further // to actually test the content against another file. byte [] arr = (byte[]) ResponseData ; // print ( arr.length ) ; // use this to determine the size if (arr != null && arr.length != 25218) { Failure= true ; FailureMessage = "The response data size was not as expected" ; } else if ( arr == null ) { Failure= true ; FailureMessage = "The response data size was null" ; } } catch ( Throwable t ) { print ( t ) ; log.warn("Error: ",t); } }apache-jmeter-2.8/xdocs/demos/HeaderManagerTestPlan.jmx0000644000175000017500000001222012032647206022524 0ustar ebourgebourg false false false 1 1 0 1211836504000 1211836504000 false continue User-Agent Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) jakarta.apache.org http / GET true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true header-manager.dat apache-jmeter-2.8/xdocs/demos/LoopTestPlan.jmx0000644000175000017500000001611412032647206020760 0ustar ebourgebourg false false false 1 1 0 1211836533000 1211836533000 false continue jakarta.apache.org http / http / GET true false false false false true 5 http /site/news.html GET true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true loop-test.dat apache-jmeter-2.8/xdocs/demos/SimpleTestPlan.jmx0000644000175000017500000002373512032647206021307 0ustar ebourgebourg false false false 1 1 0 1211836583000 1211836583000 false continue jakarta.apache.org http / http /ant/index.html GET true false false false false http /ant/antnews.html GET true false false false false http /log4j/index.html GET true false false false false http /log4j/docs/history.html GET true false false false false false saveConfig true true true true true true true false true true false false true false false false false false 0 true simple-test.dat apache-jmeter-2.8/xdocs/demos/JMSPointToPoint.jmx0000644000175000017500000001363312032647206021357 0ustar ebourgebourg false false 1115386407000 5 false false 4 1115386407000 continue 5 = tcp://localhost:61616 brokerURL = example.MyQueue queue.MyQueue = example.Q.REQ queue.Q.REQ = example.Q.RPL queue.Q.RPL false Q.RPL 5000 Q.REQ ConnectionFactory org.activemq.jndi.ActiveMQInitialContextFactory <msg>test</msg> false false saveConfig true true true true true true true false true true false false true false false false false false 0 apache-jmeter-2.8/xdocs/velocity.properties0000644000175000017500000000163012032647214020515 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. resource.loader.1.resource.path = xdocs/stylesheets # set true to debug vsl files runtime.references.strict=trueapache-jmeter-2.8/xdocs/changes_history.xml0000644000175000017500000051464712032647214020475 0ustar ebourgebourg JMeter developers History of Previous Changes
This page details the changes made in previous versions only.

Current changes are detailed in Changes.

Changes sections are chronologically ordered from top (most recent) to bottom (least recent)

Version 2.7

New and Noteworthy

OS Process Sampler

A new System Sampler that can be used to execute commands on the local machine.

OS Process Sampler results example with DNS lookup command 'dig'

JMS Samplers improvements

Addition of a "Non Persistent Delivery" option to send "Non-Persistent" (Guaranteed to be delivered at most once. Message loss is not a concern.) JMS messages

Support sending of JMS Object Messages to enable sending Objects unmarshalled from XML by XStream

Enable setting JMS Properties through JMS Publisher sampler

Test Action sampler

Allow premature exit from a loop

Webservice Sampler improvements

Add a jmeter property soap.document_cache to control size of Document Cache

Make Maintain HTTP Session configurable

Aggregate graph: Clustered Bar char with average, median, 90% line, min and max columns

Aggregate graph changes to Clustered Bar chart, add more columns (median, 90% line, min, max) and options, fixed some bugs

New settings for aggregate graph

Improvements of HTML report design generated by JMeter Ant task in extras folder

HTML report example

HTML report example with some assertion errors

Mailer Visualizer

  • Enable authentication, and connection security with SSL or TLS
  • Improve GUI design
  • Add internationalisation (i18n) support

New Visual Indicator of number of ERROR/FATAL messages in logs

Indicator shows number of ERROR/FATAL messsages in logs, it can be clicked to toggle Log Viewer panel

Dialog box to show detail of a parameter row

Add a detail button on parameters table to show detail of a Row

Detail box example

Plugin writers

New interface org.apache.jmeter.engine.util.ConfigMergabilityIndicator has been introduced to tell whether a ConfigTestElement can be merged in Sampler (see 53042):

public boolean applies(ConfigTestElement configElement);

New interface org.apache.jmeter.protocol.http.proxy.SamplerCreator to allow plugging HTTP based samplers that differ from default HTTP Samplers through Proxy during Recording Phase (see 52674):

public String[] getManagedContentTypes();
public HTTPSamplerBase createSampler(HttpRequestHdr request, Map<String, String> pageEncodings, Map<String, String> formEncodings);
public void populateSampler(HTTPSamplerBase sampler, HttpRequestHdr request, Map<String, String> pageEncodings, Map<String, String> formEncodings) throws Exception;

Known bugs

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Incompatible changes

When doing replacement of User Defined Variables, Proxy will not substitute partial values anymore when "Regexp matching" is used. It will use Perl 5 word matching ("\b")

In User Defined Variables, Test Plan, HTTP Sampler Arguments Table, Java Request Defaults, JMS Sampler and Publisher, LDAP Request Defaults and LDAP Extended Request Defaults, rows with empty Name and Value are no more saved.

JMeter now expands the Test Plan tree to the testplan level and no further and selects the root of the tree. Furthermore default value of onload.expandtree is false.

Graph Full Results Listener has been removed.

When calling "Clear All" command, if Log Viewer is displayed its content will be cleared.

Bug fixes

HTTP Samplers and Proxy

  • 52613 - Using Raw Post Body option, text gets encoded
  • 52781 - Content-Disposition header garbled even if browser compatible headers is checked (HC4)
  • 52796 - MonitorHandler fails to clear variables when starting a new parse
  • 52871 - Multiple Certificates not working with HTTP Client 4
  • 52885 - Proxy : Recording issues with HTTPS, cookies starting with secure are partly truncated
  • 52886 - Proxy : Recording issues with HTTPS when spoofing is on, secure cookies are not always changed
  • 52897 - HTTPSampler : Using PUT method with HTTPClient4 and empty Content Encoding and sending files leads to NullPointerException
  • 53145 - HTTP Sampler - function in path evaluated too early

Other Samplers

  • 51737 - TCPSampler : Packet gets converted/corrupted
  • 52868 - BSF language list should be sorted
  • 52869 - JSR223 language list currently uses BSF list which is wrong
  • 52932 - JDBC Sampler : Sampler is not marked in error in an Exception which is not of class IOException, SQLException, IOException occurs
  • 52916 - JDBC Exception if there is an empty user defined variable
  • 52937 - Webservice Sampler : Clear Soap Documents Cache at end of Test
  • 53027 - Jmeter starts throwing exceptions while using SMTP Sample in a test plan with HTTP Cookie Mngr or HTTP Request Defaults
  • 53072 - JDBC PREPARED SELECT statements should return results in variables like non prepared SELECT

Controllers

  • 52968 - Option Start Next Loop in Thread Group does not mark parent Transaction Sampler in error when an error occurs
  • 50898 - IncludeController : NullPointerException loading script in non-GUI mode if Includers use same element name

Listeners

  • 43450 - Listeners/Savers assume SampleResult count is always 1; fixed Generate Summary Results

Assertions

  • 52848 - NullPointer in "XPath Assertion"

Functions

I18N

  • 52551 - Function Helper Dialog does not switch language correctly
  • 52552 - Help reference only works in English

General

  • 52639 - JSplitPane divider for log panel should be hidden if log is not activated
  • 52672 - Change Controller action deletes all but one child samplers
  • 52694 - Deadlock in GUI related to non AWT Threads updating GUI
  • 52678 - Proxy : When doing replacement of UserDefinedVariables, partial values should not be substituted
  • 52728 - CSV Data Set Config element cannot coexist with BSF Sampler in same Thread Plan
  • 52762 - Problem with multiples certificates: first index not used until indexes are restarted
  • 52741 - TestBeanGUI default values do not work at second time or later
  • 52783 - oro.patterncache.size property never used due to early init
  • 52789 - Proxy with Regexp Matching can fail with NullPointerException in Value Replacement if value is null
  • 52645 - Recording with Proxy leads to OutOfMemory
  • 52679 - User Parameters columns narrow
  • 52843 - Sample headerSize and bodySize not being accumulated for subsamples
  • 52967 - The function __P() couldn't use default value when running with remote server in GUI mode.
  • 50799 - Having a non-HTTP sampler in a http test plan prevents multiple header managers from working
  • 52997 - Jmeter should not exit without saving Test Plan if saving before exit fails
  • 53136 - Catching Throwable needs to be carefully handled

Improvements

HTTP Samplers

Other samplers

  • 52775 - JMS Publisher : Add Non Persistent Delivery option
  • 52810 - Enable setting JMS Properties through JMS Publisher sampler
  • 52938 - Webservice Sampler : Add a jmeter property soap.document_cache to control size of Document Cache
  • 52939 - Webservice Sampler : Make MaintainSession configurable
  • 53073 - Allow to assign the OUT result of a JDBC CALLABLE to JMeter variables
  • 53164 - New System Sampler
  • 53172 - OS Process Sampler - allow specification of Environment Variables
  • 52936 - JMS Publisher : Support sending of JMS Object Messages

Controllers

Listeners

  • 52603 - MailerVisualizer : Enable SSL , TLS and Authentication
  • 52698 - Remove Graph Full Results Listener
  • 53070 - Change Aggregate graph to Clustered Bar chart, add more columns (median, 90% line, min, max) and options, fixed some bugs
  • 53246 - Mailer Visualizer: improve GUI design and I18N

Timers, Assertions, Config, Pre- & Post-Processors

Functions

I18N

  • Mailer Visualizer has been internationalized. French translation added. (see 53246)

General

  • 45839 - Test Action : Allow premature exit from a loop
  • 52614 - MailerModel.sendMail has strange way to calculate debug setting
  • 52782 - Add a detail button on parameters table to show detail of a Row
  • 52674 - Proxy : Add a Sampler Creator to allow plugging HTTP based samplers using potentially non textual POST Body (AMF, Silverlight...) and customizing them for others
  • 52934 - GUI : Open Test plan with the tree expanded to the testplan level and no further and select the root of the tree
  • 52941 - Improvements of HTML report design generated by JMeter Ant task extra
  • 53042 - Introduce a new method in Sampler interface to allow Sampler to decide wether a config element applies to Sampler
  • 52771 - Documentation : Added RSS feed on JMeter Home page under link "Subscribe to What's New"
  • 42784 - Show the number of errors logged in the GUI
  • 53256 - Make Clear All command clean LogViewer content
  • 53261 - Make "Error/fatal" counter added in 42784 open Log Viewer panel when Warn Indicator is clicked

Non-functional changes

  • Upgraded to rhino 1.7R3 (was js-1.7R2.jar). Note: the Maven coordinates for the jar were changed from rhino:js to org.mozilla:rhino. This does not affect JMeter directly, but might cause problems if using JMeter in a Maven project with other code that depends on an earlier version of the Rhino Javascript jar.
  • 52675 - Refactor Proxy and HttpRequestHdr to allow Sampler Creation by Proxy
  • 52680 - Mention version in which function was introduced
  • 52788 - HttpRequestHdr : Optimize code to avoid useless work
  • JMeter Ant (ant-jmeter-1.1.1.jar) task was upgraded from 1.0.9 to 1.1.1
  • Updated to commons-io 2.2 (from 2.1)
  • 53129 - Upgrade XStream from 1.3.1 to 1.4.2
  • Updated to httpcomponents-client 4.1.3 (from 4.1.2)
  • Updated JMeter distributed testing guide (jmeter_distributed_testing_step_by_step.pdf). Changes source format to OpenOffice odt (from sxw)

Version 2.6

New and Noteworthy

Toolbar

A new toolbar on JMeter's main window

JMeter start test button

A new menu option and button allow to start a test ignoring the Pause Timers

JMeter GUI Look and Feel

Allow System or CrossPlatform LAF to be set from options menu

JMeter GUI - duplicate node

Add "duplicate node" in context menu

JMeter tree view - search facility

Functionality to search by keyword in Samplers Tree View

HTTP Request - raw request pane

Improve HTTP Request GUI to better show parameters without name (GWT RPC request or SOAP request for example)

HTTP Request - other changes

  • Allow multiple selection in arguments panel
  • Allow to add (paste) entries from the clipboard to an arguments list
  • Ability to move variables up or down in HTTP Request

HTTP Request - file protocol

Better support for file: protocol in HTTP sampler

Retrieve embedded resources with file: protocol

HTTP Request - Ignore embedded resources failed

Enable "ignore failed" for embedded resources

Parent success with a embedded resource failed

View Results in Table - child sample display

Add option to TableVisualiser to display child samples instead of parent

Key Store - multiple certificates

Allowing multiple certificates (JKS)

Aggregate graph improvements

Some improvements on Aggregate Graph Listener:

  • new GUI for settings
  • dynamic graph size
  • allow to change fonts for title graph and legend
  • allow to change bar color (background and text values)
  • allow to draw or not bars outlines
  • allow to select only some samplers by a regexp filter
  • allow to define Y axis maximum scale

Aggregate Graph bar

Counter - new reset option

Add an option to reset counter on each Thread Group iteration

Functions

  • Add a new function __RandomString to generate random Strings
  • Add a new function __TestPlanName returning the name of the current "Test Plan"
  • Add a new function __machineIP returning IP address
  • Add a new function __jexl2 to support Jexl2

User Defined Variable improvements

  • Add a comment field in User Defined Variables
  • Allow to add (paste) entries from the clipboard to an arguments list
  • Ability to move up or down variables in User Defined Variables

View Results Tree

In View Results Tree rather than showing just a message if the results are to big, show as much of the result as are configured

Controllers - change elements

Add ability to Change Controller elements

JDBC pre- and post-processor

Add JDBC pre- and post-processor

JDBC transaction isolation option

Allow to set the transaction isolation in the JDBC Connection Configuration

Poisson Timer

Add a Poisson based timer

GUI and OS interaction

Support for file Drag and Drop.

Confirm Remove Dialog box

Add a dialog box to confirm removing the element(s) when Remove action is called

The dialogue can be skipped by setting the JMeter property confirm.delete.skip=true

Remote batching support

Use external store to hold samples during distributed testing, Added DiskStore remote sample sender: like Hold, but saves samples to disk until end of test

JMS Subscriber sampler

With JMS Subscriber, ability to use Selectors

New Logger Panel

A new Log Viewer has been added to the GUI and can be enabled from menu Options > Log Viewer:

This Log Viewer shows the jmeter.log file, and useful (for example) to debug BeanShell/BSF scripts:

The menu item Options / Choose Language is now fully functional

The menu item Options / Choose Language now changes all the displayed text to the new language provided all messages are translated. You can help on this by translating into your language.

Legacy JMX and JTL Avalon format support restored

Support for reading/writing the original Avalon XML format of JMX (script) and JTL (sample result) files was dropped in JMeter version 2.4. JMeter can now read the Avalon format files again, however there is no support for saving files in the old format.

JMeter jars available from Maven repository

JMeter jars are now available from Maven repository.

Known bugs

The Include Controller has some problems in non-GUI mode (see Bugs 40671, 41286, 44973, 50898). In particular, it can cause a NullPointerException if there are two include controllers with the same name.

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Incompatible changes

JMeter versions since 2.1 failed to create a container sample when loading embedded resources. This has been corrected; can still revert to the 51939 behaviour by setting the following property: httpsampler.separate.container=false

Mirror server now uses default port 8081, was 8080 before 2.5.1.

TCP Sampler handles SocketTimeoutException, SocketException and InterruptedIOException differently since 2.6, when these occurs, Sampler is marked as failed.

Sample Sender implementations now resolve their configuration on Client side since 2.6. This behaviour can be changed with property sample_sender_client_configured (set it to false).

The HTTP User Parameter Modifier test element has been removed; it has been deprecated for a long time.

Bug fixes

HTTP Samplers and Proxy

  • 51932 - CacheManager does not handle cache-control header with any attributes after max-age
  • 51918 - GZIP compressed traffic produces errors, when multiple connections allowed
  • 51939 - Should generate new parent sample if necessary when retrieving embedded resources
  • 51942 - Synchronisation issue on CacheManager when Concurrent Download is used
  • 51957 - Concurrent get can hang if a task does not complete
  • 51925 - Calling Stop on Test leaks executor threads when concurrent download of resources is on
  • 51980 - HtmlParserHTMLParser double-counts images used in links
  • 52064 - OutOfMemory Risk in CacheManager
  • 51919 - Random ConcurrentModificationException or NoSuchElementException in CookieManager#removeMatchingCookies when using Concurrent Download
  • 52126 - HttpClient4 does not clear cookies between iterations
  • 52129 - Reported Body Size is wrong when using HTTP Client 4 and Keep Alive connection
  • 52137 - Problems with HTTP Cache Manager
  • 52221 - Nullpointer Exception with use Retrieve Embedded Resource without HTTP Cache Manager
  • 52310 - variable in IPSource failed HTTP request if "Concurrent Pool Size" is enabled
  • 52371 - API Incompatibility - Methods in HTTPSampler2 now require PostMethod instead of HttpMethod[Base]. Reverted to original types.
  • 49950 - Proxy : IndexOutOfBoundsException when recording with Proxy server
  • 52409 - HttpSamplerBase#errorResult modifies sampleResult passed as parameter; fix code which assumes that a new instance is created (i.e. when adding a sub-sample)
  • 52507 - Delete Http User Parameters modifier (deprecated, obsolete)

Other Samplers

  • 51996 - JMS Initial Context leak newly created Context when Multiple Thread enter InitialContextFactory#lookupContext at the same time
  • 51691 - Authorization does not work for JMS Publisher and JMS Subscriber
  • 52036 - Durable Subscription fails with ActiveMQ due to missing clientId field
  • 52044 - JMS Subscriber used with many threads leads to javax.naming.NamingException: Something already bound with ActiveMQ
  • 52072 - LengthPrefixedBinaryTcpClientImpl may end a sample prematurely
  • 52390 - AbstractJDBCTestElement:Memory leak and synchronization issue in perConnCache

Controllers

  • 51865 - Infinite loop inside thread group does not work properly if "Start next loop after a Sample error" option set
  • 51868 - A lot of exceptions in jmeter.log while using option "Start next loop" for thread
  • 51866 - Counter under loop doesn't work properly if "Start next loop on error" option set for thread group
  • 52296 - TransactionController + Children ThrouputController or InterleaveController leads to ERROR sampleEnd called twice java.lang.Throwable: Invalid call sequence when TPC does not run sample
  • 52330 - With next-Loop-On-Error after error samples are not executed in next loop

Listeners

  • 52357 - View results in Table does not allow for multiple result samples
  • 52491 - Incorrect parsing of Post data parameters in Tree Listener / Http Request view

Assertions

  • 52519 - XMLSchemaAssertion uses JMeter JVM file.encoding instead of response encoding

Functions

  • The CRLF example for the char function was wrong; CRLF=(0xD,0xA), not (0xC,0xA)

I18N

General

  • 51937 - JMeter does not handle missing TestPlan entry well
  • 51988 - CSV Data Set Configuration does not resolve default delimiter for header parsing when variables field is empty
  • 52003 - View Results Tree "Scroll automatically" does not scroll properly in case nodes are expanded
  • 27112 - User Parameters should use scrollbars
  • 52029 - Command-line shutdown only gets sent to last engine that was started
  • 52093 - Toolbar ToolTips don't switch language
  • 51733 - SyncTimer is messed up if you a interrupt a test plan
  • 52118 - New toolbar : shutdown and stop buttons not disabled when no test is running
  • 52125 - StatCalculator.addAll(StatCalculator calc) joins incorrect if there are more samples with the same response time in one of the TreeMap
  • 52339 - JMeter Statistical mode in distributed testing shows wrong response time
  • 52215 - Confusing synchronization in StatVisualizer, SummaryReport ,Summariser and issue in StatGraphVisualizer
  • 52216 - TableVisualizer : currentData field is badly synchronized
  • 52217 - ViewResultsFullVisualizer : Synchronization issues on root and treeModel
  • 43294 - XPath Extractor namespace problems
  • 52224 - TestBeanHelper does not support NOT_UNDEFINED == Boolean.FALSE
  • 52279 - Switching to another language loses icons in Tree and logs error Can't obtain GUI class from ...
  • 52280 - The menu item Options / Choose Language does not change all the displayed text to the new language
  • 52376 - StatCalculator#addValue(T val, int sampleCount) should use long, not int
  • 49374 - Encoding of embedded element URLs depend on the file.encoding property
  • 52399 - URLRewritingModifier uses default file.encoding to match text content
  • 50438 - code calculates average with integer math, expecting double value
  • 52469 - Changes in Support of SSH-Tunneling of RMI traffic for Remote Testing
  • 52466 - Upgrade Test Plan feature : NameUpdater does not upgrade properties
  • 52503 - Unify File->Close and Window close file saving behaviour
  • 52537 - Help does not scroll to correct anchor when file is first loaded

Improvements

HTTP Samplers

  • 51981 - Better support for file: protocol in HTTP sampler
  • 52033 - Allowing multiple certificates (JKS)
  • 52352 - Proxy : Support IPv6 URLs capture
  • 44301 - Enable "ignore failed" for embedded resources

Other samplers

  • 51419 - JMS Subscriber: ability to use Selectors
  • 52088 - JMS Sampler : Add a selector when REQUEST / RESPONSE is chosen
  • 52104 - TCP Sampler handles badly errors
  • 52087 - TCPClient interface does not allow for partial reads
  • 52115 - SOAP/XML-RPC should not send a POST request when file to send is not found
  • 40750 - TCPSampler : Behaviour when sockets are closed by remote host
  • 52396 - TCP Sampler in "reuse connection mode" reuses previous sampler's connection even if it's configured with other host, port, user or password
  • 52048 - BSFSampler, BSFPreProcessor and BSFPostProcessor should share the same GUI

Controllers

Listeners

  • 52022 - In View Results Tree rather than showing just a message if the results are to big, show as much of the result as are configured
  • 52201 - Add option to TableVisualiser to display child samples instead of parent
  • 52214 - Save Responses to a file - improve naming algorithm
  • 52340 - Allow remote sampling mode to be changed at run-time
  • 52452 - Improvements on Aggregate Graph Listener (GUI and settings)
  • Resurrected OldSaveService to allow reading Avalon format JTL (result) files

Timers, Assertions, Config, Pre- & Post-Processors

  • 52128 - Add JDBC pre- and post-processor
  • 52183 - SyncTimer could be improved (performance+reliability)
  • 52317 - Counter : Add option to reset counter on each Thread Group iteration
  • 37073 - Add a Poisson based timer
  • 52497 - Improve DebugSampler and DebugPostProcessor

Functions

  • 52006 - Create a function RandomString to generate random Strings
  • 52016 - It would be useful to support Jexl2
  • __char() function now supports octal values
  • New function __machineIP returning IP address
  • 51091 - New function returning the name of the current "Test Plan"

I18N

General

  • 51892 - Default mirror port should be different from default proxy port
  • 51817 - Moving variables up and down in User Defined Variables control
  • 51876 - Functionality to search in Samplers TreeView
  • 52019 - Add menu option to Start a test ignoring Pause Timers
  • 52027 - Allow System or CrossPlatform LAF to be set from options menu
  • 52037 - Remember user-set LaF over restarts.
  • 51861 - Improve HTTP Request GUI to better show parameters without name (GWT RPC requests for example) (UNDER DEVELOPMENT)
  • 52040 - Add a toolbar in JMeter main window
  • 51816 - Comment Field in User Defined Variables control.
  • 52052 - Using a delimiter to separate result-messages for JMS Subscriber
  • 52103 - Add automatic scrolling option to table visualizer
  • 52097 - Save As should point to same folder that was used to open a file if MRU list is used
  • 52085 - Allow multiple selection in arguments panel
  • 52099 - Allow to set the transaction isolation in the JDBC Connection Configuration
  • 52116 - Allow to add (paste) entries from the clipboard to an arguments list
  • 52160 - Don't display TestBeanGui items which are flagged as hidden
  • 51886 - SampleSender configuration resolved partly on client and partly on server
  • 52161 - Enable plugins to add own translation rules in addition to upgrade.properties. Loads any additional properties found in META-INF/resources/org.apache.jmeter.nameupdater.properties files
  • 42538 - Add "duplicate node" in context menu
  • 46921 - Add Ability to Change Controller elements
  • 52240 - TestBeans should support Boolean, Integer and Long
  • 52241 - GenericTestBeanCustomizer assumes that the default value is the empty string
  • 52242 - FileEditor does not allow output to be saved in a File
  • 51093 - when loading a selection previously stored by "Save Selection As", show the file name in the blue window bar
  • 50086 - Password fields not Hidden in JMS Publisher, JMS Subscriber, Mail Reader sampler, SMTP sampler and Database Configuration
  • 29352 - Use external store to hold samples during distributed testing, Added DiskStore remote sample sender: like Hold, but saves samples to disk until end of test.
  • 52333 - Reduce overhead in calculating SampleResult#nanoTimeOffset
  • 52346 - Shutdown detects if there are any non-daemon threads left which prevent JVM exit.
  • 52281 - Support for file Drag and Drop
  • 52471 - Improve Mirror Server performance by Using Pool of threads instead of launching a Thread for each request
  • Resurrected OldSaveService to allow reading Avalon format JMX files (removed in 2.4)
  • Add a dialog box to confirm removing the element(s) when Remove action is called
  • 41788 - Log viewer (console window) needed as an option
  • Add option to change the pause time (default 2000ms) in the daemon thread which checks for successful JVM exit. The thread is not now started unless the pause time is greater than 0.

Non-functional changes

  • fixes to build.xml: support scripts; localise re-usable property names
  • 51923 - Counter function bug or documentation issue ? (fixed docs)
  • Update velocity.jar to 1.7 (from 1.6.2)
  • Update js.jar to 1.7R3 (from 1.6R5)
  • Update commons-codec 1.5 => 1.6
  • Update commons-io 2.0.1 => 2.1
  • Update commons-jexl 2.0.1 => 2.1.1
  • Update jdom 1.1 => 1.1.2
  • Update junit 4.9 => 4.10
  • 51954 - Generated documents include </br> entries which cause extra blank lines
  • 52075 - JMeterProperty.clone() currently returns Object; it should return JMeterProperty
  • Updated httpcore to 4.1.4
  • 49753 - Please publish jMeter artifacts on Maven central repository

Version 2.5.1

Summary of main changes

  • HttpClient4 sampler now re-uses connections properly (previously it would use one per sample, which could quickly cause resource exhaustion).
  • Various fixes to JMS samplers
  • Functions are no longer spuriously invoked when used with a Configuration element
  • WebService sampler GUI has been re-organized for better design and more user-friendliness. Some improments on WSDL configuration assistant
  • Better handling of test shutdown. System.exit now only called if there is no other option; even this can be disabled.

Known bugs

The Include Controller has some problems in non-GUI mode. In particular, it can cause a NullPointerException if there are two include controllers with the same name.

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

The If Controller may cause an infinite loop if the condition is always false from the first iteration. A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

The menu item Options / Choose Language does not change all the displayed text to the new language. [The behaviour has improved, but language change is still not fully working] To override the default local language fully, set the JMeter property "language" before starting JMeter.

Incompatible changes

The HttpClient4 and Commons HttpClient 3.1 samplers previously used a retry count of 3. This has been changed to default to 1, to be compatible with the Java implementation. The retry count can be overridden by setting the relevant JMeter property, for example:

httpclient4.retrycount=3
httpclient3.retrycount=3

Bug fixes

HTTP Samplers and Proxy

  • Fix HttpClient 4 sampler so it reuses HttpClient instances and connections where possible.
  • Temporary fix to HC4 sampler to work round HTTPCLIENT-1120.
  • 51863 - Lots of ESTABLISHED connections with HttpClient 4 implementation (vs HttpClient 3.1 impl)
  • 51750 - Retrieve all embedded resources doesn't follow IFRAME
  • 51752 - HTTP Cache is broken when using "Retrieve all embedded resources" with concurrent pool
  • 39219 - HTTP Server: You can't stop it after File->Open
  • 51775 - Port number duplicates in Host header when capturing by HttpClient (3.1 and 4.x)
  • 50617 - Monitor Results legend show "dead" server although values from the server are retrieved

Other Samplers

  • 50424 - Web Methods drop down list box inconsistent
  • 43293 - Java Request fields not cleared when creating new sampler
  • 51830 - Webservice Soap Request triggers too many popups when Webservice WSDL URL is down
  • WebService(SOAP) request - add a connect timeout to get the wsdl used to populate Web Methods when server doesn't response
  • 51841 - JMS : If an error occurs in ReceiveSubscriber constructor or Publisher, then Connections will stay open
  • 51691 - Authorization does not work for JMS Publisher and JMS Subscriber
  • 51840 - JMS : Cache of InitialContext has some issues
  • 47888 - JUnit Sampler re-uses test object

Controllers

  • If Controller - Fixed two regressions introduced by 50032 (see 50618 too)
  • If Controller - Catches a StackOverflowError when a condition returns always false (after at least one iteration with return true) See 50618
  • 51869 - NullPointer Exception when using Include Controller

Listeners

Assertions

Functions

  • 48943 - Functions are invoked additional times when used in combination with a Config Element

I18N

  • WebService(SOAP) request - add I18N for some labels

General

  • 51831 - Cannot disable UDP server or change the maximum UDP port
  • 51821 - Add short-cut for Enabling / Disabling (sub)tree or branches in test plan.
  • 47921 - Variables not released for GC after JMeterThread exits.
  • 51839 - "... end of run" printed prematurely
  • 51847 - Some Junit tests are Locale sensitive and fail if Locale is different from US
  • 51855 - Parent samples may have slightly inaccurate elapsed times
  • 51880 - The shutdown command is not working if I invoke it before all the thread are started
  • Remote Shut host menu item was not being enabled.
  • 51888 - Occasional deadlock when stopping a testplan

Improvements

HTTP Samplers

  • 51380 - Control reuse of cached SSL Context from iteration to iteration
  • 51882 - HTTPHC3Client uses a default retry count of 3, make it configurable; default is now 1
  • Change the default HttpClient 4 sampler retry count to 1

Other samplers

  • Beanshell Sampler now supports Interruptible interface
  • 51605 - WebService(SOAP) Request - WebMethod field value changes surreptitiously for all the requests when a value is selected in a request
  • WebService(SOAP) Request - Reorganized GUI for better design and more user-friendliness

Controllers

Listeners

  • 42246 - Need for a 'auto-scroll' option in "View Results Tree" and "Assertion Results"
  • View Results Tree: Regexp Tester - little improvements on user interface

Timers, Assertions, Config, Pre- & Post-Processors

  • 51885 - Allow a JMeter Variable as input to XPathExtractor

Functions

I18N

General

  • 51822 - (part 1) save 1 invocation of GuiPackage#getCurrentGui
  • Added AsynchSampleSender which sends samples from server to client asynchronously.
  • Upgraded to htmlparser 2.1; JavaMail 1.4.4; JUnit 4.9

Non-functional changes

  • 49976 - FormCharSetFinder visibility is default instead of public.
  • 50917 - Property CookieManager.save.cookies not honored when set from test plan
  • Improve error logging when Javascript errors are detected.
  • Updated documentation footer

Version 2.5

Summary of main changes

  • The HTTP implementation can now be selected at run-time, and JMeter now also supports Apache HttpComponents HttpClient 4.x. Note that Commons HttpClient 3.1 is no longer actively developed, and support may be removed from JMeter in a future release.
  • The HTTP sampler now allows concurrent downloads of embedded resources in an HTML page
  • The HTTP Sampler can now report the size of a request before decompression.
  • The JMS and Mail samplers have been improved.
  • The new Test Fragment Test Element makes using Include Controllers easier
  • There are various improvements to the View Results Tree Listener
  • 30563 - Thread Group should have a start next loop option on Sample Error
  • There are two new Thread Group types - setUp and tearDown - which are run before and after the main Thread groups.
  • Client-Server mode now supports external stop/shutdown via UDP

    multiple JMeter server instances can be started on the same host without needing to change the port property.
  • 50516 - "Host" header in HTTP Header Manager is not included in generated HTTP request

Known bugs

The Include Controller has some problems in non-GUI mode. In particular, it can cause a NullPointerException if there are two include controllers with the same name.

Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

The menu item Options / Choose Language does not change all the displayed text to the new language. [The behaviour has improved, but language change is still not fully working] To override the default local language fully, set the JMeter property "language" before starting JMeter.

Incompatible changes

Unsupported methods are no longer converted to GET by the Commons HttpClient sampler.

Removed method public static long currentTimeInMs(). This has been replaced by the instance method public long currentTimeInMillis().

ProxyControl.getSamplerTypeName() now returns a String rather than an int. This is internal to the workings of the JMeter Proxy & its GUI, so should not affect any user code.

Bug fixes

HTTP Samplers and Proxy

  • 50178 - HeaderManager added as child of Thread Group can create concatenated HeaderManager names and OutOfMemoryException
  • 50392 - value is trimmed when sending the request in Multipart
  • 50686 - HeaderManager logging too verbose when merging instances
  • 50963 - AjpSampler throws java.lang.StringIndexOutOfBoundsException
  • 50516 - "Host" header in HTTP Header Manager is not included in generated HTTP request
  • 50544 - In Apache Common Log the HEAD requests cause problems.
  • 51268 - HTTPS request through an invalid proxy causes NullPointerException and does not show in result tree. Rather than delegating to the JMeter thread handler for "unexpected" failures, ensure all Exceptions generate a sample error.
  • 51275 - Cookie Panel clearGui() sets incorrect default policy in Java 1.6

Other Samplers

  • 50173 - JDBCSampler discards ResultSet from a PreparedStatement
  • Ensure JSR223 Sampler has access to the current SampleResult
  • 50977 - Unable to set TCP Sampler for individual samples

Controllers

  • 50032 - Last_Sample_Ok along with other controllers doesnt work correctly when the threadgroup has multiple loops
  • 50080 - Transaction controller incorrectly creates samples including timer duration
  • 50134 - TransactionController : Reports bad response time when it contains other TransactionControllers

Listeners

  • 50367 - Clear / Clear all in View results tree does not clear selected element

Assertions

  • 51488 - Assertion: Variable name scope is shared among all assertions (and 51255)

Functions

  • 50568 - Function __FileToString(): Could not read file when encoding option is blank/empty

I18N

  • 50811 - Incomplete Spanish translation

General

  • 49734 - Null pointer exception on stop Threads command (Run>Stop)
  • 49666 - CSV Header read as data after EOF
  • 45703 - Synchronizing Timer
  • 50088 - fix getAvgPageBytes in SamplingStatCalculator so it returns what it should
  • 50203 Cannot set property "jmeter.save.saveservice.default_delimiter=\t"
  • mirror-server.sh - fix classpath to use : separator (not ;)
  • 50286 - URL Re-writing Modifier: extracted jsessionid value is incorrect when is between XML tags
  • System.nanoTime() tends to drift relative to System.currentTimeMillis(). Change SampleResult to recalculate offset each time. Also enable reversion to using System.currentTimeMillis() only.
  • 50425 - Remove thread groups from Controller add menu
  • 50675 - CVS Data Set Config incompatible with Remote Start Fixed RMI startup to provide location of JMX file relative to user.dir.
  • 50221 - Renaming elements in the tree does not resize label
  • 51002 - Stop Thread if CSV file is not available. JMeter now treats IOError as EOF.
  • Define sun.net.http.allowRestrictedHeaders=true by default. This fixes 51238.
  • 51645 - CSVDataSet does not read UTF-8 files when file.encoding is UTF-8

Improvements

HTTP Samplers

  • AJP Sampler now implements Interruptible
  • Allow HTTP implementation to be selected at run-time
  • 50684 - Optionally disable Content-Type and Transfer-Encoding in Multipart POST
  • 50943 - Allowing concurrent downloads of embedded resources in html page
  • 50170 - Bytes reported by http sampler is after GUnZip

    Add optional properties to allow change the method to get response size
  • Hiding the proxy password on HTTP Sampler (just on GUI, not in JMX file)

Other samplers

  • 49622 - Allow sending messages without a subject (SMTP Sampler)
  • 49603 - Allow accepting expired certificates on Mail Reader Sampler
  • 49775 - Allow sending messages without a body
  • 49862 - Improve SMTPSampler Request output.
  • 50268 - Adds static and dynamic destinations to JMS Publisher
  • JMS Subscriber - Add dynamic destination
  • 50666 - JMSSubscriber: support for durable subscriptions
  • 50937 - TCP Sampler does not provide for / honor connect timeout
  • 50569 - Jdbc Request Sampler to optionally store result set object data
  • 51011 - Mail Reader: upon authentication failure, tell what you tried

Controllers

  • 50475 - Introduction of a Test Fragment Test Element for a better Include flow

Listeners

  • View Results Tree - Add a dialog's text box on "Sampler result tab > Parsed" to display the long value with a double click on cell
  • 37156 - Formatted view of Request in Results Tree
  • 49365 - Allow result set to be written to file in a path relative to the loaded script
  • 50579 - Error count is long, sample count is int. Changed sample count to long.
  • View Results Tree - Add new size fields: response headers and response body (in bytes) - derived from 43363

Timers, Assertions, Config, Pre- & Post-Processors

  • 48015 - Proposal new icons for pre-processor, post-processor and assertion elements
  • 50962 - SizeAssertionGui validation prevents the use of variables for the size
  • Size Assertion - Add response size scope (full, headers, body, code, message) - derived from 43363

Functions

  • 49975 - New function returning the name of the current sampler

I18N

  • Add French translation for the new labels and reduce size for some labels (by abbreviation) on HTTP Sample

General

  • 30563 - Thread Group should have a start next loop option on Sample Error
  • 50347 - Eclipse setup instructions should remind user to download dependent jars
  • 50490 - Setup and Post Thread Group enhancements for better test flow.
  • All BeansShell test elements now have the script variables "prev" and "Label" defined.
  • 50708 - Classpath jar order in NewDriver not alphabetically
  • 50659 - JMeter server does not support concurrent tests - prevent client from starting another
  • Added remote shutdown functionality
  • Client JMeter engine now supports external stop/shutdown via UDP
  • UDP shutdown can now use a range of ports, from jmeterengine.nongui.port=4445 to jmeterengine.nongui.maxport=4455, allowing multiple JMeter instances on the same host without needing to change the port property.
  • Updated to httpcore 4.1.3 and httpclient 4.1.2

Non-functional changes

  • 50008 - Allow BatchSampleSender to be subclassed
  • 50450 - use System.array copy in jacobi solver as, being native, is more performant.
  • 50487 - runSerialTest verifies objects that never need persisting
  • Use Thread.setDefaultUncaughtExceptionHandler() instead of private ThreadGroup
  • Update to Commons Net 3.0

Version 2.4

Summary of main changes

  • JMeter now requires at least Java 1.5.
  • HTTP Proxy can now record HTTPS sessions.
  • JUnit sampler now supports JUnit4 annotations.
  • Added JSR223 (javax.script) test elements.
  • MailReader Sampler can now use any protocol supported by the underlying implementation.
  • An SMTP Sampler has been added.
  • JMeter now allows users to provide their own Thread Group implementations.
  • View Results Tree now supports more display options, including search and Regex Testing.
  • StatCalculator performance is much improved; Aggregate Report etc. need far less memory.
  • JMS samplers have been extensively reworked, and should no longer lose messages. Correlation processing is improved. JMS Publisher and Subscriber now support both Topics and Queues.
  • Many other improvements have been made, please see below and in the manual.

Known bugs

The Include Controller has some problems in non-GUI mode. In particular, it can cause a NullPointerException if there are two include controllers with the same name.

Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

The menu item Options / Choose Language does not change all the displayed text to the new language. [The behaviour has improved, but language change is still not fully working] To override the default local language fully, set the JMeter property "language" before starting JMeter.

Incompatible changes

HTTP Redirect now defaults to "Follow Redirects" rather than "Redirect Automatically". This is to enable JMeter to track cookies that may be sent during redirects. This does not affect existing test plans; it only affects the default for new HTTP Samplers.

The Avalon file format for JMX and JTL files is no longer supported. Any such files will need to be converted by reading them in JMeter 2.3.4 and resaving them.

The XPath Assertion and XPath Extractor elements no longer fetch external DTDs by default; this can be changed in the GUI.

JMSConfigGui has been renamed as JMSSamplerGui. This does not affect existing test plans.

The constructor public SampleResult(SampleResult res) has been changed to become a true "copy constructor". It no longer calls addSubResult(). This may possibly affect some 3rd party add-ons.

Bug fixes

HTTP Samplers and Proxy

  • 47445 - Using Proxy with https-spoofing secure cookies need to be unsecured
  • 47442 - Missing replacement of https by http for certain conditions using https-spoofing
  • 48451 - Error in: SoapSampler.setPostHeaders(PostMethod post) in the else branch
  • 48542 - SoapSampler uses wrong response header field to decide if response is gzip encoded
  • 48568 - CookieManager broken for AjpSampler
  • 48570 - AjpSampler doesn't support query parameters (GET/POST)
  • 46901 - HTTP Sampler does not process var/func refs correctly in first file parameter
  • 43678 - Handle META tag http-equiv charset?
  • 49294 - Images not downloaded from redirected-to pages
  • 49560 - wrong "size in bytes" when following redirections

Other Samplers

  • 47420 - LDAP extended request not closing connections during add request
  • 48573 - LDAPExtSampler directory context handling
  • 47870 - JMSSubscriber fails due to NPE
  • 47899 - NullPointerExceptions in JMS ReceiveSubscriber constructor
  • 48144 - NPE in JMS OnMessageSubscriber
  • 47992 - JMS Point-to-Point Request - Response option doesn't work
  • 48579 - Single Bind does not show config information when LdapExt Sampler is accessed
  • 49111 - "Message With ID Not Found" Error on JMS P2P sampler.
  • 47949 - JMS Subscriber never receives all the messages
  • 46142 - JMS Point-to-Point correlation problems
  • 48747 - TCP Sampler swallows exceptions
  • 48709 - TCP Sampler Config setting "classname" has no effect

Controllers

  • 47385 - TransactionController should set AllThreads and GroupThreads
  • 47940 - Module controller incorrectly creates the replacement Sub Tree
  • 47592 - Run Thread groups consecutively with "Stop test" on error, JMeter will not mark to finished
  • 48786 - Run Thread groups consecutively: with "Stop test now" on error or manual stop, JMeter leaves the green box active
  • 48727 - Cannot stop test if all thread groups are disabled

Listeners

  • 48603 - Mailer Visualiser sends two emails for a single failed response
  • Correct calculation of min/max/std.dev for aggregated samples (Summary Report)
  • 48889 - Wrong response time with mode=Statistical and num_sample_threshold > 1
  • 47398 - SampleEvents are sent twice over RMI in distributed testing and non gui mode

Assertions

Functions

I18N

General

  • 47646 - NullPointerException in the "Random Variable" element
  • Disallow adding any child elements to JDBC Configuration
  • BeanInfoSupport now caches getBeanDescriptor() - should avoid an NPE on non-Sun JVMs when using CSVDataSet (and some other TestBeans)
  • 48350 - Deadlock on distributed testing with 2 clients
  • 48901 - Endless wait by adding Synchronizing Timer
  • 49149 - usermanual/index.html has typo in link to "Regular Expressions" page
  • 49394 - Classcast Exception in ActionRouter.postActionPerformed
  • 48136 - Essential files missing from source tarball.
    Source archives now contain all source files, including source files previously only provided in the binary archives.
  • 48331 - XpathExtractor does not return XML string representations for a Nodeset

Improvements

HTTP Samplers

  • 47622 - enable recording of HTTPS sessions
  • Allow Proxy Server to be specified on HTTP Sampler GUI and HTTP Config GUI
  • 47461 - Update Cache Manager to handle Expires HTTP header
  • 48153 - Support for Cache-Control and Expires headers
  • 47946 - Proxy should enable Grouping inside a Transaction Controller
  • 48300 - Allow override of IP source address for HTTP HttpClient requests
  • 49083 - collapse '/pathsegment/..' in redirect URLs

Other samplers

  • JUnit sampler now supports JUnit4 tests (using annotations)
  • 47900 - Allow JMS SubscriberSampler to be interrupted
  • Added JSR223 Sampler
  • 47556 - JMS-PointToPoint-Sampler Timeout field should use Strings
  • 47947 - Mail Reader Sampler should allow port to be overridden
  • 48155 - Multiple problems / enhancements with JMS protocol classes
  • Allow MailReader sampler to use arbitrary protocols
  • 45053 - SMTP-Sampler for JMeter
  • 49552 - Add Message Headers on SMTPSampler
  • JMS Publisher and Subscriber now support both Topics and Queues. Added read Timeout to JMS Subscriber. General clean-up of JMS code.

Controllers

  • 47909 - TransactionController should sum the latency
  • 41418 - Exclude timer duration from Transaction Controller runtime in report
  • 48749 - Allowing custom Thread Groups
  • 43389 - Allow Include files to be found relative to the current JMX file

Listeners

  • Added DataStrippingSample sender - supports "Stripped" and "StrippedBatch" modes.
  • Added Comparison Assertion Visualizer
  • 47907 - Improvements (enhancements and I18N) Comparison Assertion and Comparison Visualizer
  • 36726 - add search function to Tree View Listener
  • 47869 - Ability to cleanup fields of SampleResult
  • 47952 - Added JSR223 Listener
  • 47474 - View Results Tree support for plugin renderers
  • Allow Idle Time to be saved to sample log files
  • 48259 - Improve StatCalculator performance by using TreeMap
  • Listeners using SamplingStatCalculator have much reduced memory needs as the Sample cache has been moved to the new CachingStatCalculator class. In particular, Aggregate Report can now handle large numbers of samples.
  • Aggregate Report and Summary Report now allow column headers to be optionally excluded
  • 49506 - Add .csv File Extension in open dialog box from "read from file" functionality of listeners
  • 49545 - Formatted (parsed) view of Sample Result in Results Tree

Timers, Assertions, Config, Pre- & Post-Processors

  • 47338 - XPath Extractor forces retrieval of document DTD
  • Added Comparison Assertion
  • 47952 - Added JSR223 PreProcessor and PostProcessor
  • Added JSR223 Assertion
  • Added BSF Timer and JSR223 Timer
  • 48511 - add parent,child,all selection to regex extractor
  • Add Sampler scope selection to XPathExtractor
  • Regular Expression Extractor, Response Assertion and Size Assertion can now be applied to a JMeter variable
  • 46790 - CSV Data Set Config should be able to parse CSV headers

Functions

  • 47565 - [Function] FileToString

I18N

  • 47938 - Adding some French translations for new elements
  • 48714 - add new French messages

General

  • 47223 - Slow Aggregate Report Performance (StatCalculator)
  • 47980 - hostname resolves to 127.0.0.1 - specifiying IP not possible
  • 47943 - DisabledComponentRemover is not used in Start class
  • HeapDumper class for runtime generation of dumps
  • Basic read-only JavaMail provider implementation for reading raw mail files
  • 49540 - Sort "Add" menus alphabetically

Non-functional changes

  • Beanshell, JavaMail and JMS API (Apache Geronimo) jars are now included in the binary archive.
  • Add TestBean Table Editor support
  • Removed all external libraries from SVN; added download_jars Ant target
  • Updated various jar files:
    • BeanShell - 2.0b4 => 2.0b5
    • Commons Codec - 1.3 => 1.4
    • Commons-Collections - 3.2 => 3.2.1
    • JTidy => r938
    • JUnit - 3.8.2 => 4.8.1
    • Logkit - 1.2 => 2.0
    • Xalan Serializer = 2.7.1 (previously erroneously shown as 2.9.1)
    • Xerces xml-apis = 1.3.04 (previously erroneously shown as 2.9.1)
    • Some jar files were renamed.

Version 2.3.4

Summary of main changes

This is a minor bug-fix release, mainly to correct some bugs that were accidentally added in 2.3.3.

Known bugs

The Include Controller has some problems in non-GUI mode. In particular, it can cause a NullPointerException if there are two include controllers with the same name.

Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

The menu item Options / Choose Language does not change all the displayed text to the new language. [The behaviour has improved, but language change is still not fully working] To override the default local language fully, set the JMeter property "language" before starting JMeter.

Bug fixes

HTTP Samplers and Proxy

  • 47321 - HTTPSampler2 response timeout not honored

Other Samplers

  • 47290 - Infinite loop on connection factory lookup (JMS)
  • JDBC Sampler should not close Prepared or Callable statements as these are cached

Controllers

  • 39509 - Once-only controller running twice

Listeners

  • Change ResultCollector to only warn if the directory was not created
  • Fix some synchronisation issues in ResultCollector and SampleResult (wrong locks were being used)

I18N

  • Fixed bug introduced in 2.3.3: JMeter does not start up if there is no messages.properties file for the default Locale.

General

  • Fix problems with remote clients - bug introduced in 2.3.3
  • 47377 - Make ClassFinder more robust and close zipfile resources
  • Fix some errors in generating the documentation (latent bug revealed in 2.3.3 when Velocity was upgraded)

Improvements

Other samplers

  • 47266 - FTP Request Sampler: allow specifying an FTP port, other than the default

Version 2.3.3

Summary of main changes

The handling of test closedown is much improved. The gradual "Shutdown" command now waits until all threads have stopped, and does not report an error if threads don't stop within 5 seconds. The immediate "Stop" command can now be used if "Shutdown" takes too long. Also the immediate "Stop" command is able to interrupt samplers which support the new Interruptible interface (e.g. HTTP and SOAP, FTP). This allows immediate completion of pending responses. Non-GUI mode tests can also now be sent a "Shutdown" or "Stop" message. now supports a "Stop Now" action, as do the and Post Processor elements.

HTTP Cookie handling is improved, and HTTP POST can now use variable file names correctly. HTTP, SOAP/XML-RPC and WebService(SOAP) sampler character encodings updated to be more consistent. HTTP Samplers now support connection and response timeouts (requires JVM 1.5 for the HTTP Java sampler). Together with the closedown improvements described above, this should avoid most cases where a test run hangs. Multiple Header Manager elements are now supported for a single HTTP sampler. The Proxy Server is improved, and no longer stores "Host" headers by default.

JDBC Request can optionally save the results of Select statements to variables. JDBC Request now handles quoted strings and UTF-8, and can handle arbitrary variable types.

There are several new functions: __char() function: allows arbitrary Unicode characters to be entered in fields. __unescape() function: allows Java-escaped strings to be used. _unescapeHtml() function: decodes Html-encoded text. __escapeHtml() function: encodes text using Html-encoding. A reference to a missing function - e.g. ${__missing(a)} - is now treated the same as a missing variable. Previously the function name - and leading { - were dropped. This makes it easier to debug test plans.

Some Assertions can now be applied to sub-samples as well as (or instead of) just the parent sample. There is a new Configuration element.

JMS samplers are much improved (see details below). The now supports some additional clients and is a bit more flexible.

Client-server mode has been improved, and the server can optionally use a fixed RMI port, which should help with setting up firewalls.

Various I18N changes have been made; language change works better (though not perfect yet). There are improved French translations as well as new Polish and Brazilian Portugese translations.

The BeanShell jar is now included with the binary archive; there is no need to download it separately.

Known bugs

The Include Controller has some problems in non-GUI mode. In particular, it can cause a NullPointerException if there are two include controllers with the same name.

Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

The menu item Options / Choose Language does not change all the displayed text to the new language. [The behaviour has improved, but language change is still not fully working] To override the default local language fully, set the JMeter property "language" before starting JMeter.

Incompatible changes

When loading sample results from a file, previous results are no longer cleared. This allows one to merge multiple files. If the previous behaviour is required, use the menu item Run/Clear (Ctrl+Shift+E) or Run/Clear All (Ctrl+E) before loading the file.

The test elements "Save Results to a file" and "Generate Summary Results" are now shown as Listeners. They were previously shown as Post-Processors, even though they are implemented as Listeners.

The Cookie Manager no longer saves incoming cookies as variables by default. To save cookies as variables, define the property "CookieManager.save.cookies=true". Also, cookies names are prefixed with "COOKIE_" before they are stored (this avoids accidental corruption of local variables) To revert to the original behaviour, define the property "CookieManager.name.prefix= " (one or more spaces).

The Counter element is now shown as a Configuration element. It was previously shown as a Pre-Processor, even though it is implemented as a Config item.

The above changes only affect the icons that are displayed and the locations in the GUI pop-up menus. They do not affect test plans or test behaviour.

The PreProcessors are now invoked directly by the JMeterThread class, rather than by the TestCompiler#configureSampler() method. (JMeterThread handles the PostProcessors). This does not affect test plans or behaviour, but could perhaps affect 3rd party add-ons (very unlikely).

Moved the Scoping Rules sub-section from Section 3. "Building a Test Plan" to Section 4. "Elements of a test plan"

The While controller now trims leading and trailing spaces from the condition value before it is compared with LAST, blank or false.

The "threadName" variable in the _jexl() and __javaScript() functions was previously misspelt as "theadName".

The following deprecated methods were removed from JOrphanUtils: booleanToString(boolean) and valueOf(boolean). Java 1.4+ has these methods in the Boolean class.

The TestElement interface has some new methods:

  • void setProperty(String key, String value, String dflt)
  • void setProperty(String key, boolean value, boolean dflt)
  • void setProperty(String key, int value)
  • void setProperty(String key, int value, int dflt)
  • int getPropertyAsInt(String key, int defaultValue)
These are implemented in the AbstractTestElement class which all elements should extend so this is unlikely to cause a problem.

Bug fixes

HTTP Samplers and Proxy

  • 46332 - HTTP Cookie Manager ignores manually defined cookies (bug introduced in r707810)
  • Cookie Manager was not passing cookie policy to runtime threads so they always used compatibility mode
  • Add version attribute to JMeter Cookie class (needed for proper cookie support)
  • Cookie Manager now saves/restores cookie versions
  • Check validity of cookies before storing them.
  • HTTPSamplers can now use variables in POSTed file names
  • Fix processing of first file name in HTTP POST so functions/variables work (bug introduced with multiple file support)
  • 45831 - WS Sampler reports incorrect throughput if SOAP packet creation fails
  • HTTP, SOAP/XML-RPC and WebService(SOAP) sampler character encodings updated to be more consistent
  • 46148 - HTTP sampler fails on SSL requests when logging for jmeter.util is set to DEBUG
  • Fix Java 1.6 https error: java.net.SocketException: Unconnected sockets not implemented
  • 46838 - if there was no data, still need to set latency in HTTPSampler
  • 46993 - Saving from Header Manager generates ClassCastException
  • 46690 - handling of 302 redirects with invalid relative paths. JMeter now removes extraneous leading "../" segments (as do many browsers)
  • 44521 - empty variables for a POST in the HTTP Request don't get ignored
  • 46977 - JMeter does not handle HTTP headers not delimited by whitespace
  • Fix bug in HTTP file: handling - read bytes, not characters in the default encoding.
  • Remove Host from headers saved by the Proxy server, as that will normally be generated by the HTTP stack
  • 45199 - don't try to replace blank variables in Proxy recording
  • Change HTTPS spoofing so https: links are replaced even when URL match fails
  • 46436 - Improve error reporting in Proxy Gui
  • 46435 - More verbose error msg for error 501 (Proxy Server)

Other Samplers

  • The "prev" and "sampler" objects are now defined for BSF test elements
  • Fix NPE (in DataSourceElement) when using JDBC in client-server mode
  • 45425 - JDBC Request does not support Unicode (changed sampler to use UTF-8)
  • 46522 - Incorrect "Response data" in JDBC sample when column names are missing
  • 46821 - JDBC select request doesn't store the first column in the variables
  • 43791 - ensure QueueReceiver is closed in JMS Point to Point sampler
  • 46016 - avoid possible NPE in JMSSampler
  • 46142 - JMS Receiver now uses MessageID
  • 45458 - Point to Point JMS in combination with authentication
  • 45460 - JMS TestPlan elements depend on resource property
  • Various ReceiveSubscriber thread-safety fixes
  • JMSPublisher and Subscriber fixes: thread-safety, support dynamic locale changes, locale independence for JMX attribute values
  • FTP Sampler now logs out before disconnecting.
  • TCP sampler now calls setupTest() and teardownTest() methods
  • 45887 - TCPSampler: timeout property incorrectly set

Controllers

  • Fix NPE when using nested Transaction Controllers with parent samples
  • Fix processing of Transaction Controller parent mode so current sampler is set to actual sampler
  • 44941 - Throughput controllers should not share global counters
  • 47120 - Throughput Controller: change percent executions to total executions, the value is stored in a String and interpreted as 1 execution
  • 47150 - ThreadGroup with a loop count of zero causes infinite loop
  • 47009 - Insert parent caused child controller name to be reset
  • 47165 - Using duplicate Module Controller names in command line mode causes NPE

Listeners

  • Mailer Visualizer documentation now agrees with code i.e. failure/success counts need to be exceeded to trigger the mail.
  • Mailer Visualizer now shows the failure count
  • Mailer Visualiser - fix parsing of multiple e-mail address when using Test button
  • 45976 - incomplete result file when using remote testing with more than 1 server
  • Fix Summariser so it works in client server mode
  • 34096 - Duplicate samples not eliminated when writing to CSV files
  • Save "Include group Name in Label" setting in Aggregate and Summary reports
  • The JMeter variable "sample_variables" is sent to all server instances to ensure the data is available to the client.
  • CSVSaveService - check for EOF while reading quoted string

Assertions

  • 45749 - Response Assertion does not work with a substring that happens to be an invalid RE
  • 45904 - Allow 'Not' Response Assertion to succeed with null sample

Functions

  • Fix regex function - was failing to process $m$mid$n$ correctly
  • Protect against possible NPE in RegexFunction if called during test shutdown.
  • Avoid NPE if XPath function does not match any nodes
  • Correct the variable name "theadName" to "threadName" in the __jexl() and __javaScript() functions
  • A reference to a missing function - e.g. ${__missing(a)} - is now treated the same as a missing variable. Previously the function name - and leading { - were dropped.

I18N

  • Fixed language change handling for menus (does not yet work for TestBeans)
  • Add HeaderAsPropertyRenderer to support header resource names; use this to fix locale changes in various GUI elements
  • 46424 - corrections to French translation
  • 46844 - "Library" label in test plan are not I18N
  • 47064 - fixes for Mac LAF
  • 47127 - Unable to change language to pl_PL
  • 47137 - Labels in View Results Tree aren't I18N
  • 46423 - I18N of Proxy Recorder
  • 45928 - AJP/1.3 Sampler doesn't retrieve its label from messages.properties

General

  • Prompt to overwrite an existing file when first saving a new test plan
  • Amend TestBeans to show the correct popup menu for Listeners
  • 45185 - CSV dataset blank delimiter causes OOM
  • Fix incorrect GUI classifications: "Save Results to a file" and "Generate Summary Results" are now shown as Listeners. "Counter" is now shown as a Configuration element.
  • 41608 - misleading warning log message removed
  • 46359 - BSF JavaScript Preprocessor cannot access sampler variable on first interation (Implement temporary work-round for BSF-22)
  • 46407 - BSF elements do not load script files, attempt to interpret filename as script
  • Better handling of Exceptions during test shutdown
  • Fix potential thread safety issue in JMeterThread class
  • 46491 - Incorrect value for the last variable in "CSV Data Set Config" (error in processing quoted strings)

Improvements

HTTP Samplers

  • 45479 - Support for multiple HTTP Header Manager nodes
  • HTTP Samplers now support connection and request timeouts (requires Java 1.5 for Java Http sampler)
  • Apache SOAP 2.3.1 does not give access to HTTP response code/message, so WebService sampler now treats an empty response as an error
  • Mirror server now supports "X-Sleep" header - if this is set, the responding thread will wait for the specified number of milliseconds
  • 45694 - Support GZIP compressed logs in Access Log Sampler

Other samplers

  • JDBC Request can optionally save the results of Select statements to variables.
  • JDBC Request now handles quoted strings.
  • JDBC Request now handles arbitrary variable types.
  • LDAP result data now formatted with line breaks
  • 45200 - MailReaderSampler: store the whole MIME message in the SamplerResult
  • 45571 - JMS Sampler correlation enhancement
  • 46030 - Extend TCP Sampler to Support Length-Prefixed Binary Data
  • Add classname field to TCP Sampler GUIs

Controllers

  • Allow If Controller to use variable expressions (not just Javascript)
  • Trim spaces from While Controller condition before comparing against LAST, blank or false

Listeners

  • Save Responses to a file can save the generated filename(s) to variables.
  • Add option to skip suffix generation in Save Responses to a File
  • 43119 - Save Responses to file: optionally omit the file number
  • Add BSF Listener element
  • 47176 - Monitor Results : improve load status graphic
  • 40045 - Allow Results monitor to select a specific connector
  • Read XML JTL files more efficiently - pass samples to visualisers as they are read, rather than saving them all and then processing them

Assertions, Config, Pre- & Post-Processors

  • 45903 - allow Assertions to apply to sub-samples
  • Add Body (unescaped) source option to Regular Expression Extractor.
  • Random Variable - new configuration element to create random numeric variables

Functions

  • Add OUT and log variables to __jexl() function
  • Use Script to evaluate __jexl() function so can have multiple statements.
  • Add log variable to the __javaScript() function
  • Added __char() function: allows arbitrary Unicode characters to be entered in fields.
  • Added __unescape() function: allows Java-escaped strings to be used.
  • Added __unescapeHtml() function: decodes Html-encoded text.
  • Added __escapeHtml() function: encodes text using Html-encoding.

I18N

  • 45929 - improved French translations
  • 47132 - Brazilian Portuguese translations
  • 46900 - Polish translations
  • Added locales.add property to allow for new Locales

General

  • Allow spaces in JMeter path names (apply work-round for Java Bug 4496398)
  • Process JVM_ARGS last in script files so users can override default settings
  • 46636 - Allow server mode to optionally use a fixed rmi port
  • Make some samplers interruptible: HTTP (both), SoapSampler, FTPSampler
  • Test Action now supports "Stop Now" action, as do the Thread Group and Result Status Post Processor elements
  • The Menu items Stop and Shutdown now behave better. Shutdown will now wait until all threads exit. In GUI mode it can be cancelled and Stop run instead. Stop now reports if some threads will not exit, and exits if running in non-GUI mode
  • Add UDP server to wait for shutdown message if running in non-GUI mode; add UDP client to send the message.
  • 41209 - JLabeled* and ToolTips
  • Include BeanShell 2.0b4 jar in binary download.

Non-functional changes

  • Introduce AbstractListenerGui class to make it easier to create Listeners with no visual output
  • Assertions are run after PostProcessors; change order of pop-up menus accordingly
  • Remove unnecessary clone() methods from function classes
  • Moved PreProcessor invocation to JMeterThread class
  • Made HashTree Map field final
  • Improve performance of calling ResultCollector#isSampleWanted() for multiple samples
  • Updated to new versions of: xmlgraphics-commons (1.3.1), jdom (1.1), xstream (1.3.1), velocity (1.6.2)

Version 2.3.2

Summary of main changes

Bug fixes

Version 2.3.1 changed the way binary and text content types were determined as far as the View Results Tree Listener was concerned: originally everything except "image/" content types were considered text, but 2.3.1 introduced a check for specific content types. This has caused problems, as several popular types were omitted and these were no longer shown by default in the Response tab. Rather than try to list all the possible text types, JMeter now just checks for the following binary types:

  • image/*
  • audio/*
  • video/*
All other types are now assumed to be text.

JMeter 2.3.1 introduced a bug in the Cookie Manager - if "Clear Cookie each iteration" was selected, all threads would see the same cookies. This bug has been corrected.

Improvements

The Proxy server can now record binary requests. By default the content types application/x-amf and application/x-java-serialized-object will be treated as binary and saved in a file. To change the content types, update the property proxy.binary.types.

The CSV Dataset configuration element has new file sharing options: per thread group, per thread, per identifier. This allows for more flexible file processing, e.g. each thread can process the same data in the same order.

Switch Controller now works properly with functions and variables, and the condition can now be a name instead of a number. Simple Controller now works properly under a While Controller

CSV fields in JTL files can now contain delimiters. CSV and XML files can now contain additional variables (define the JMeter property sample_variables).

Response Assertion can now match on substrings (i.e. not regular expression). Regex extractor can operate on variables.

XPath processing is improved; Tidy errors are handled better.

Save Table Data buttons added to Summary and Aggregate reports to allow easy saving of the calculated data.

HTTP samplers can now save just the MD5 hash of responses, rather than the entire response. As a special case, if the HTTP Sampler path starts with "http://" or "https://" then this is used as the full URL, overriding the host and port fields. The HTTP Samplers can now POST multiple files. Webservice(SOAP) Sampler can now load local WSDL files using the "file:" protocol.

A simple HTTP Cache Manager has been added. This needs further development.

View Results Tree Listener now uses Tidy to display XML. This should allow more content to be displayed succesfully. It also avoids the need to download remote DTD files, which can slow the rendering considerably.

MailReader sampler now supports POP3S and IMAPS protocols. Individual mails are now added as sub-samples.

Various improvements to the BSF Sampler: now supports Jexl, and Javascript bug works properly. Added BSF PreProcessor, PostProcessor and Assertion test elements. All now have access to "props" JMeter Properties object.

Number of classes loaded in non-GUI mode is much reduced.

Known bugs

The Include Controller has some problems in non-GUI mode. In particular, it can cause a NullPointerException if there are two include controllers with the same name.

Once Only controller behaves OK under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

The menu item Options / Choose Language does not change all the displayed text to the new language. To override the default local language, set the JMeter property "language" before starting JMeter.

Incompatible changes

  • To reduce the number of classes loaded in non-GUI mode, Functions will only be found if their classname contains the string '.functions.' and does not contain the string '.gui.'. All existing JMeter functions conform to this restriction. To revert to earlier behaviour, comment or change the properties classfinder.functions.* in jmeter.properties.
  • The reference value parameter for intSum() is now optional. As a consequence, if a variable name is used, it must not be a valid integer.
  • The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special. To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)
  • Leading and trailing spaces are trimmed from variable names in function calls. For example, ${__Random(1,63, LOTTERY )} will use the variable 'LOTTERY' rather than ' LOTTERY '.
  • Synchronization has been removed from the RunningSample class (it was not fully threadsafe anyway). Developers of 3rd party add-ons that use the class may need to synchronize access.

Bug fixes

  • Check that the CSV delimiter is reasonable.
  • Fix Switch Controller to work properly with functions and variables
  • 44011 - application/soap+xml not treated as a text type
  • 43427 - Simple Controller is only partly executed in While loop
  • 33954 - Stack Overflow in If/While controllers (may have been fixed previously)
  • 44022 - Memory Leak when closing test plan
  • 44042 - Regression in Cookie Manager (Bug introduced in 2.3.1)
  • 41028 - JMeter server doesn't alert the user when the host is defined as a loopback address
  • 44142 - Function __machineName causes NPE if parameters are omitted.
  • 44144 - JMS point-to-point: request response test does not work
  • 44314 - Not possible to add more than one SyncTimer
  • Capture Tidy console error output and log it
  • Fix problems using Tidy(tolerant parser) in XPath Assertion and XPath Extractor
  • 44374 - improve timer calculation
  • Regular Expression Extractor now deletes all stale variables from previous matches.
  • 44707 - Running remote test changes internal test plan
  • 44625 - Cannot have two or more FTP samplers with different "put" and "get" actions
  • 40850 - BeanShell memory leak
  • Ensure ResponseCode and ResponseMessage are set for successful JDBC samples
  • FTPSampler now detects and reports failure to open the remote file
  • Class directories defined in search_paths and user.classpath no longer need trailing "/"
  • 44852 SOAP/ XML-RPC Request does not show Request details in View Results Tree
  • WebService(SOAP) Sampler ResponseData now includes the EOLs sent by server
  • 44910 - close previous socket (if any) in TCP Sampler
  • 44912 - Filter not working in Log Parser
  • The BeanShell and BSF component documentation made some incorrect references to the "SampleResponse" object; this has been corrected to "SampleResult"
  • BSF Sampler now works properly with Javascript
  • Test Action "Stop Test" now works
  • 42833 - Argument class uses LinkedHashMap in getArgumentsAsMap() to preserve ordering
  • 45093 - SizeAssertion did not call getBytes()
  • 45007 - Rewrite Location headers when using Proxy HTTPS spoofing
  • Use CRLF rather than LF in Proxy when returning headers to the client
  • 45007 - fix content length header if content may have been changed

Improvements

  • CSV files can now handle fields with embedded delimiters.
  • longSum() function added
  • 43382 - configure Tidy output (warnings, errors) for XPath Assertion and Post-Processor
  • 43984 - trim spaces from port field
  • Add optional comment to __log() function
  • Make Random function variable name optional
  • Reduce class loading in non-GUI mode by only looking for Functions in class names that contain '.functions.' and don't contain '.gui.'
  • 43379 - Switch Controller now supports selection by name as well as number
  • Can specify list of variable names to be written to JTL files (CSV and XML format)
  • Now checks that the remoteStart options -r and -R are only used with non_GUI -n option
  • 44184 - Allow header to be saved with Aggregate Graph data
  • Added "Save Table Data" buttons to Aggregate and Summary Reports - save table as CSV format with header
  • Allow most functions to be used on the Test Plan. Note __evalVar(), __split() and __regex() cannot be used on the Test Plan.
  • Allow Global properties to be loaded from a file, e.g. -Gglobal.properties
  • Add "Substring" option to Response Assertion
  • 44378 - Turkish localisation
  • Add optional output variable name to Jexl function
  • Add application/vnd.wap.xhtml+xml as a text type
  • Add means to override maximum display size in View Results Tree - set the property: view.results.tree.max_size
  • Use Tidy to display XML in View Results Tree Listener (avoids fetching DTDs)
  • 44487 - German translation
  • As a special case, if the HTTP Sampler path starts with "http://" or "https://" then this is used as the full URL.
  • 44575 - Result Saver can now save only successful results
  • 44650 - CSV Dataset now handles quoted column values
  • 44600 - 1-ms resolution timer when running with Java 1.5+
  • 44632 - Text input enhancement to FTP Sampler
  • 42204 - add thread group name to Aggregate and Summary reports
  • FTP Sampler sets latency = time to login
  • FTP Sampler sets a URL if it can
  • 41921 - add option for samplers to store MD5 of response; done for HTTP Samplers.
  • Regex Function can now also be applied to a variable rather than just the previous sample result.
  • Remove HTML Parameter Mask,HTTP User Parameter Modifier from menus as they are deprecated
  • 44807 - allow session ids to be terminated by backslash
  • 44784 - allow for broken server returning additional charset
  • Added TESTSTART.MS property / variable = test start time in milliseconds
  • Add POP3S and IMAPS protocols to Mail Reader Sampler.
  • Mail Reader Sampler now creates a sub-sample for each mail.
  • The supplied TCPClient implementation no longer treats tcp.eolByte=0 as special. To skip EOL checking, set tcp.eolByte=1000 (or some other value which is not a valid byte)
  • JUnit sampler GUI now also finds Test classes defined in user.classpath
  • Leading and trailing spaces are trimmed from variable names in function calls. For example, ${__Random(1,63, LOTTERY )} will use the variable 'LOTTERY' rather than ' LOTTERY '
  • Webservice(SOAP) Sampler can now load local WSDL files using the file: protocol
  • 44872 - Add "All Files" filter to Open File dialogs
  • Mirror server can now be run independently (mirror-server.cmd and mirror-server.sh)
  • 19128 - Added multiple file POST support to HTTP Samplers
  • Allow use of special name LAST to mean the last test run; applies to -t, -l, -j flags
  • 44418/42178 - CSV Dataset file handling improvements
  • Give BeanShell, Javascript and Jexl functions access to JMeter properties via the "props" object
  • Give BSF Sampler access to JMeter Properties via "props" object
  • Add Jexl as a supported BSF Sampler language
  • Give Beanshell test elements access to JMeter Properties via "props" object
  • Added BSF PreProcessor, PostProcessor and Assertion test elements
  • All BSF elements now have access to System.out via the variable "OUT"
  • Summariser updated to handle variable names
  • Synchronisation added to Summary and Aggregate Report to try to prevent occasional lost samples
  • 44808,39641 - Proxy support for binary requests
  • 28502 - HTTP Resource Cache

Non-functional changes

  • Better handling of MirrorServer startup problems and improved unit test.
  • Build process now detects missing 3rd party libraries and reports need for both binary and source archives
  • Skip BeanShell tests if jar is not present
  • Update to Xerces 2.9.1, Xalan 2.7.1, Commons IO 1.4, Commons Lang 2.4, Commons-Logging 1.1.1, XStream 1.3, XPP3 1.1.4c
  • Use properties for log/logn function descriptions
  • Check that all jmx files in the demos directory can be loaded OK
  • Update copyright to 2008; use copy tag instead of numeric character in HTML output
  • Methods called from constructors must not be overridable: make GUI init methods private
  • Make static variables final if possible
  • Split changes into current and previous

Version 2.3.1

Summary of changes

JMeter Proxy

The Proxy spoof function was broken in 2.3; it has been fixed. Spoof now supports an optional parameter to limit spoofing to particular URLs. This is useful for HTTPS pages that have insecure content - e.g. images/stylesheets may be accessed using HTTP. Spoofed responses now drop the default port (443) from https links to make them work better.

Ignored proxy samples are now visible in Listeners - the label is enclosed in [ and ] as an indication. Proxy documentation has been improved.

GUI changes

The Add menus show element types in the order in which they are processed - see Test Plan Execution Order. It is no longer possible to add test elements to inappropriate parts of the tree - e.g. samplers cannot be added directly under a test plan. This also applies to Paste and drag and drop.

The File menu now supports a "Revert" option, which reloads the current file. Also the last few file names used are remembered for easy reloading.

The Options Menu now supports Collapse All and Expand All items to collapse and expand the test tree.

Remote testing

The JMeter server now starts the RMI server directly (by default). This simplifies testing, and means that the RMI server will be stopped when the server stops.

Functions can now be used in Listener filenames (variables do not work).

Command-line option -G can now be used to define properties for remote servers. Option -X can be used to stop a remote server after a non-GUI run. Server can be set to automatically exit after a single test (set property server.exitaftertest=true).

Other enhancements

JMeter startup no longer loads as many classes; this should reduce memory requirements.

Parameter and file support added to all BeanShell elements. Javascript function now supports access to JMeter objects; Jexl function always did have access, but the documentation has now been included. New functions __eval() and __evalVar() for evaluating variables.

CSV files with the correct header column names are now automatically recognised when loaded. There is no need to configure the properties.

The hostname can now be saved in CSV and XML output files. New "Successes only" option added when saving result files. Errors / Successes only option is now supported when loading XML and CSV files.

General documentation improvements.

HTTP

PUT and DELETE should now work properly. Cookie Manager no longer clears manually entered cookies.

Now handles the META tag http-equiv charset

JDBC

JDBC Sampler now allows INOUT and OUT parameters for Called procedures. JDBC Sampler now allows per-thread connections - set Max Connections = 0 in JDBC Config.


Incompatible changes

  • JMeter server now creates the RMI registry by default. If the RMI registry has already been started externally, this will generate a warning message, but the server will continue. This should not affect JMeter testing. However, if you are also using the RMI registry for other applications there may be problems. For example, when the JMeter server shuts down it will stop the RMI registry. Also user-written command files may need to be adjusted (the ones supplied with JMeter have been updated). To revert to the earlier behaviour, define the JMeter property: server.rmi.create=false.
  • The Proxy server removes If-Modified-Since and If-None-Match headers from generated Header Managers. To revert to the previous behaviour, define the property proxy.headers.remove with no value

Bug fixes

  • 43430 - Count of active threads is incorrect for remote samples
  • Throughput Controller was not working for "all thread" counts
  • If a POST body is built from parameter values only, these are now encoded if the checkbox is set.
  • 43584 - Assertion Failure Message contains a comma that is also used as the delimiter for CSV files
  • HTTP Mirror Server now always returns the exact same content, it used to return incorrect data if UTF-8 encoding was used for HTTP POST body, for example
  • 43612 - HTTP PUT does not honor request parameters
  • 43694 - ForEach Controller (empty collection processing error)
  • 42012 - Variable Listener filenames do not get processed in remote tests. Filenames can now include function references; variable references do not work.
  • Ensure Listener nodes get own save configuration when copy-pasted
  • Correct Proxy Server include and exclude matching description - port and query are included, contrary to previously documented.
  • Aggregate Graph and Aggregate Report Column Header is KB/Sec; fixed the values to be KB rather than bytes
  • Fix SamplingStatCalculator so it no longer adds elapsed time to endTime, as this is handled by SampleResult. This corrects discrepancies between Summary Report and Aggregate Report throughput calculation.
  • Default HTTPSampleResult to ISO-8859-1 encoding
  • Fix default encoding for blank encoding
  • Fix Https spoofing (port problem) which was broken in 2.3
  • Fix HTTP (Java) sampler so http.java.sampler.retries means retries, i.e. does not include initial try
  • Fix SampleResult dataType checking to better detect TEXT documents

Improvements

  • Add run_gui Ant target, to package and then start the JMeter GUI from Ant
  • Add File->Revert to easily drop the current changes and reload the project file currently loaded
  • 31366 - Remember recently opened file(s)
  • 43351 - Add support for Parameters and script file to all BeanShell test elements
  • SaveService no longer needs to instantiate classes
  • New functions: __eval() and __evalVar()
  • Menu items now appear in execution order
  • Test Plan items can now only be dropped/pasted/merged into parts of the tree where they are allowed
  • Property Display to show the value of System and JMeter properties and allow them to be changed
  • 43451 - Allow Regex Extractor to operate on Response Code/Message
  • JDBC Sampler now allows INOUT and OUT parameters for Called procedures
  • JDBC Sampler now allows per-thread connections
  • Cookie Manager not longer clears cookies defined in the GUI
  • HTTP Parameters without names are ignored (except for POST requests with no file)
  • "Save Selection As" added to main menu; now checks only item is selected
  • Test Plan now has Paste menu item (paste was already supported via ^V)
  • If the default delimiter does not work when loading a CSV file, guess the delimiter by analysing the header line.
  • Add optional "loopback" protocol for HttpClient sampler
  • HTTP Mirror Server now supports blocking waiting for more data to appear, if content-length header is present in request
  • HTTP Mirror Server GUI now has the Start and Stop buttons in a more visible place
  • Server mode now creates the RMI registry; to disable set the JMeter property server.rmi.create=false
  • HTTP Sampler now supports using MIME Type field to specify content-type request header when body is constructed from parameter values
  • Enable exit after a single server test - define JMeter property server.exitaftertest=true
  • Added -G option to set properties in remote servers
  • Added -X option to stop remote servers after non-GUI run
  • 43485 - Ability to specify keep-alive on SOAP/XML-RPC request
  • 43678 - Handle META tag http-equiv charset
  • 42555 - [I18N] Proposed corrections for the french translation
  • 43727 - Test Action does not support variables or functions
  • The Proxy server removes If-Modified-Since and If-None-Match headers from generated Header Managers by default. To change the list of removed headers, define the property proxy.headers.remove as a comma-separated list of headers to remove
  • The javaScript function now has access to JMeter variables and context etc. See JavaScript function
  • Use drop-down list for BSF Sampler language field
  • Add hostname to items that can be saved in CSV and XML output files.
  • Errors only flag is now supported when loading XML and CSV files
  • Ensure ResultCollector uses SaveService encoding
  • Proxy now rejects attempts to use it with https
  • Proxy spoofing can now use RE matching to determine which urls to spoof (useful if images are not https)
  • Proxy spoofing now drops the default HTTPS port (443) when converting https: links to http:
  • Add Successes Only logging and display
  • The JMeter log file name is formatted as a SimpleDateFormat (applied to the current date) if it contains paired single-quotes, .e.g. 'jmeter_'yyyyMMddHHmmss'.log'
  • Added Collapse All and Expand All Option menu items
  • Allow optional definition of extra content-types that are viewable as text

Non-functional Improvements

  • Functor code tightened up; Functor can now be used with interfaces, as well as pre-defined targets and parameters.
  • Save graphics function now prompts before overwriting an existing file
  • Debug Sampler and Debug PostProcessor added.
  • Fixed up method names in Calculator and SamplingStatCalculator
  • Tidied up Listener documentation.

Version 2.3

Fixes since 2.3RC4

Bug fixes

  • Fix NPE in SampleResultConverter - XStream PrettyPrintWriter cannot handle nulls
  • If Java HTTP sampler sees null ResponseMessage, replace with HTTP header
  • 43332 - 2.3RC4 does not clear Guis based on TestBean
  • 42948 - Problems with Proxy gui table fields in Java 1.6
  • Fixup broken jmeter-server script
  • 43364 - option to revert If Controller to pre 2.3RC3 behaviour
  • 43449 - Statistical Remote mode does not handle Latency
  • 43450 (partial fix) - Allow SampleCount and ErrorCount to be saved to/restored from files

Improvements

  • Add nameSpace option to XPath extractor
  • Add NULL parameter option to JDBC sampler
  • Add documentation links for Rhino and BeanShell to functions; clarify variables and properties
  • Ensure uncaught exceptions are logged
  • Look for user.properties and system.properties in JMeter bin directory if not found locally

Fixes since 2.3RC3

  • Fixed NPE in Summariser (bug introduced in 2.3RC3)
  • Fixed setup of proxy port (bug introduced in 2.3RC3)
  • Fixed errors when running non-GUI on a headless host (bug introduced in 2.3RC3)
  • 43054 - SSLManager causes stress tests to saturate and crash (bug introduced in 2.3RC3)
  • Clarified HTTP Request Defaults usage of the port field
  • 43006 - NPE if icon.properties file not found
  • 42918 - Size Assertion now treats an empty response as having zero length
  • 43007 - Test ends before all threadgroups started
  • Fix possible NPE in HTTPSampler2 if 302 does not have Location header.
  • 42919 - Failure Message blank in CSV output [now records first non-blank message]
  • Add link to Extending JMeter PDF
  • Allow for quoted charset in Content-Type parsing
  • 39792 - ClientJMeter synchronisation needed
  • 43122 - GUI changes not always picked up when short-cut keys used (bug introduced in 2.3RC3)
  • 42947 - TestBeanGUI changes not picked up when short-cut keys used
  • Added serializer.jar (needed for update to xalan 2.7.0)
  • 38687 - Module controller does not work in non-GUI mode

Improvements since 2.3RC3

  • Add stop thread option to CSV Dataset
  • Updated commons-httpclient to 3.1
  • 28715 - allow variable cookie values (set CookieManager.allow_variable_cookies=false to disable)
  • 40873 - add JMS point-to-point non-persistent delivery option
  • 43283 - Save action adds .jmx if not present; checks for existing file on Save As
  • Control+A key does not work for Save All As; changed to Control+Shift+S
  • 40991 - Allow Assertions to check Headers

Version 2.3RC3

Known problems/restrictions:

The JMeter remote server does not support multiple concurrent tests - each remote test should be run in a separate server. Otherwise tests may fail with random Exceptions, e.g. ConcurrentModification Exception in StandardJMeterEngine. See 43168.

The default HTTP Request (not HTTPClient) sampler may not work for HTTPS connections via a proxy. This appears to be due to a Java bug, see 39337. To avoid the problem, try a more recent version of Java, or switch to the HTTPClient version of the HTTP Request sampler.

Transaction Controller parent mode does not support nested Transaction Controllers. Doing so may cause a Null Pointer Exception in TestCompiler.

Thread active counts are always zero in CSV and XML files when running remote tests.

The property file_format.testlog=2.1 is treated the same as 2.2. However JMeter does honour the 3 testplan versions.

22510 - JMeter always uses the first entry in the keystore.

Remote mode does not work if JMeter is installed in a directory where the path name contains spaces.

BeanShell test elements leak memory. This can be reduced by using a file instead of including the script in the test element.

Variables and functions do not work in Listeners in client-server (remote) mode so they cannot be used to name log files in client-server mode.

CSV Dataset variables are defined after configuration processing is completed, so they cannot be used for other configuration items such as JDBC Config. (see 40394)

Summary of changes (for more details, see below)

Some of the main enhancements are:

  • Htmlparser 2.0 now used for parsing
  • HTTP Authorisation now supports domain and realm
  • HttpClient options can be specified via httpclient.parameters file
  • HttpClient now behaves the same as Java Http for SSL certificates
  • HTTP Mirror Server to allow local testing of HTTP samplers
  • HTTP Proxy supports XML-RPC recording, and other proxy improvements
  • __V() function allows support of nested variable references
  • LDAP Ext sampler optionally parses result sets and supports secure mode
  • FTP Sampler supports Ascii/Binary mode and upload
  • Transaction Controller now optionally generates a Sample with subresults
  • HTTPS session contexts are now per-thread, rather than shared. This gives better emulation of multiple users
  • BeanShell elements now support ThreadListener and TestListener interfaces
  • Coloured icons in Tree View Listener and elsewhere to better differentiate failed samples.

The main bug fixes are:

  • HTTPS (SSL) handling now much improved
  • Various Remote mode bugs fixed
  • Control+C and Control+V now work in the test tree
  • Latency and Encoding now available in CSV log output
  • Test elements no longer default to previous contents; test elements no longer cleared when changing language.

Incompatible changes (usage):

N.B. The javax.net.ssl properties have been moved from jmeter.properties to system.properties, and will no longer work if defined in jmeter.properties.

The new arrangement is more flexible, as it allows arbitrary system properties to be defined.

SSL session contexts are now created per-thread, rather than being shared. This generates a more realistic load for HTTPS tests. The change is likely to slow down tests with many SSL threads. The original behaviour can be enabled by setting the JMeter property:

https.sessioncontext.shared=true

The LDAP Extended Sampler now uses the same panel for both Thread Bind and Single-Bind tests. This means that any tests using the Single-bind test will need to be updated to set the username and password.

41140: JMeterThread behaviour was changed so that PostProcessors are run in forward order (as they appear in the test plan) rather than reverse order as previously. The original behaviour can be restored by setting the following JMeter property:
jmeterthread.reversePostProcessors=true

The HTTP Authorisation Manager now has extra columns for domain and realm, so the temporary work-round of using '\' and '@' in the username to delimit the domain and realm has been removed.

Control-Z no longer used for Remote Start All - this now uses Control+Shift+R

HttpClient now uses pre-emptive authentication. This can be changed by setting the following:

jmeter.properties:
httpclient.parameters.file=httpclient.parameters

httpclient.parameters:
http.authentication.preemptive$Boolean=false

The port field in HTTP Request Defaults is no longer ignored for https samplers if it is set to 80.

Incompatible changes (development):

N.B.The clear() method was defined in the following interfaces: Clearable, JMeterGUIComponent and TestElement. The methods serve different purposes, so two of them were renamed: the Clearable method is now clearData() and the JMeterGUIComponent method is now clearGui(). 3rd party add-ons may need to be rebuilt.

Calulator and SamplingStatCalculator classes no longer provide any formatting of their data. Formatting should now be done using the jorphan.gui Renderer classes.

Removed deprecated method JMeterUtils.split() - use JOrphanUtils version instead.

Removed method saveUsingJPEGEncoder() from SaveGraphicsService. It was unused so far, and used the only Sun-specific class in JMeter.

New functionality/improvements:

  • Add Domain and Realm support to HTTP Authorisation Manager
  • HttpClient now behaves the same as the JDK http sampler for invalid certificates etc
  • Added httpclient.parameters.file to allow HttpClient parameters to be defined
  • 33964 - Http Requests can send a file as the entire post body if name/type are omitted
  • 41705 - add content-encoding option to HTTP samplers for POST requests
  • 40933,40945 - optional RE matching when retrieving embedded resource URLs
  • 27780 - (patch 19936) create multipart/form-data HTTP request without uploading file
  • 42098 - Use specified encoding for parameter values in HTTP GET
  • 42506 - JMeter threads now use independent SSL sessions
  • 41707 - HTTP Proxy XML-RPC support
  • 41880 - Add content-type filtering to HTTP Proxy Server
  • 41876 - Add more options to control what the HTTP Proxy generates
  • 42158 - Improve support for multipart/form-data requests in HTTP Proxy server
  • 42173 - Let HTTP Proxy handle encoding of request, and undecode parameter values
  • 42674 - default to pre-emptive HTTP authorisation if not specified
  • Support "file" protocol in HTTP Samplers
  • Http Autoredirects are now enabled by default when creating new samplers
  • 40103 - various LDAP enhancements
  • 40369 - LDAP: Stable search results in sampler
  • 40381 - LDAP: more descriptive strings
  • BeanShell Post-Processor no longer ignores samples with zero-length result data
  • Added beanshell.init.file property to run a BeanShell script at startup
  • 39864 - BeanShell init files now found from currrent or bin directory
  • BeanShell elements now support ThreadListener and TestListener interfaces
  • BSF Sampler passes additional variables to the script
  • Added timeout for WebService (SOAP) Sampler
  • 40825 - Add JDBC prepared statement support
  • Extend JDBC Sampler: Commit, Rollback, AutoCommit
  • 41457 - Add TCP Sampler option to not re-use connections
  • 41522 - Use JUnit sampler name in sample results
  • 42223 - FTP Sampler can now upload files
  • 40804 - Change Counter default to max = Long.MAX_VALUE
  • Use property jmeter.home (if present) to override user.dir when starting JMeter
  • New -j option to easily change jmeter log file
  • HTTP Mirror Server Workbench element
  • 41253 - extend XPathExtractor to work with non-NodeList XPath expressions
  • 42088 - Add XPath Assertion for booleans
  • Added __V variable function to resolve nested variable names
  • 40369 - Equals Response Assertion
  • 41704 - Allow charset encoding to be specified for CSV DataSet
  • 41259 - Comment field added to all test elements
  • Add standard deviation to Summary Report
  • 41873 - Add name to AssertionResult and display AssertionResult in ViewResultsFullVisualizer
  • 36755 - Save XML test files with UTF-8 encoding
  • Use ISO date-time format for Tree View Listener (previously the year was not shown)
  • Improve loading of CSV files: if possible, use header to determine format; guess timestamp format if not milliseconds
  • 41913 - TransactionController now creates samples as sub-samples of the transaction
  • 42582 - JSON pretty printing in Tree View Listener
  • 40099 - Enable use of object variable in ForEachController
  • 39693 - View Result Table uses icon instead of check box
  • 39717 - use icons in the results tree
  • 42247 - improve HCI
  • Allow user to cancel out of Close dialogue

Non-functional improvements:

  • Functor calls can now be unit tested
  • Replace com.sun.net classes with javax.net
  • Extract external jar definitions into build.properties file
  • Use specific jar names in build classpaths so errors are detected sooner
  • Tidied up ORO calls; now only one cache, size given by oro.patterncache.size, default 1000
  • 42326 - Order of elements in .jmx files changes

External jar updates:

  • Htmlparser 2.0-20060923
  • xstream 1.2.1/xpp3_min-1.1.3.4.O
  • Batik 1.6
  • BSF 2.4.0
  • commons-collections 3.2
  • commons-httpclient-3.1-rc1
  • commons-jexl 1.1
  • commons-lang-2.3 (added)
  • JUnit 3.8.2
  • velocity 1.5
  • commons-io 1.3.1 (added)

Bug fixes:

  • 39773 - NTLM now needs local host name - fix other call
  • 40438 - setting "httpclient.localaddress" has no effect
  • 40419 - Chinese messages translation fix
  • 39861 - fix typo
  • 40562 - redirects no longer invoke RE post processors
  • 40451 - set label if not set by sampler
  • Fix NPE in CounterConfig.java in Remote mode
  • 40791 - Calculator used by Summary Report
  • 40772 - correctly parse missing fields in CSV log files
  • 40773 - XML log file timestamp not parsed correctly
  • 41029 - JMeter -t fails to close input JMX file
  • 40954 - Statistical mode in distributed testing shows wrong results
  • Fix ClassCast Exception when using sampler that returns null, e..g TestAction
  • 41140 - Post-processors are run in reverse order
  • 41277 - add Latency and Encoding to CSV output
  • 41414 - Mac OS X may add extra item to -jar classpath
  • Fix NPE when saving thread counts in remote testing
  • 34261 - NPE in HtmlParser (allow for missing attributes)
  • 40100 - check FileServer type before calling close
  • 39887 - jmeter.util.SSLManager: Couldn't load keystore error message
  • 41543 - exception when webserver returns "500 Internal Server Error" and content-length is 0
  • 41416 - don't use chunked input for text-box input in SOAP-RPC sampler
  • 39827 - SOAP Sampler content length for files
  • Fix Class cast exception in Clear.java
  • 40383 - don't set content-type if already set
  • Mailer Visualiser test button now works if test plan has not yet been saved
  • 36959 - Shortcuts "ctrl c" and "ctrl v" don't work on the tree elements
  • 40696 - retrieve embedded resources from STYLE URL() attributes
  • 41568 - Problem when running tests remotely when using a 'Counter'
  • Fixed various classes that assumed timestamps were always end time stamps:
    • SamplingStatCalculator
    • JTLData
    • RunningSample
  • 40325 - allow specification of proxyuser and proxypassword for WebServiceSampler
  • Change HttpClient proxy definition to use NTCredentials; added http.proxyDomain property for this
  • 40371 - response assertion "pattern to test" scrollbar problem
  • 40589 - Unescape XML entities in embedded URLs
  • 41902 - NPE in HTTPSampler when responseCode = -1
  • 41903 - ViewResultsFullVisualizer : status column looks bad when you do copy and paste
  • 41837 - Parameter value corruption in proxy
  • 41905 - Can't cut/paste/select Header Manager fields in Java 1.6
  • 41928 - Make all request headers sent by HTTP Request sampler appear in sample result
  • 41944 - Subresults not handled recursively by ResultSaver
  • 42022 - HTTPSampler does not allow multiple headers of same name
  • 42019 - Content type not stored in redirected HTTP request with subresults
  • 42057 - connection can be null if method is null
  • 41518 - JMeter changes the HTTP header Content Type for POST request
  • 42156 - HTTPRequest HTTPClient incorrectly urlencodes parameter value in POST
  • 42184 - Number of bytes for subsamples not added to sample when sub samples are added
  • 42185 - If a HTTP Sampler follows a redirect, and is set up to download images, then images are downloaded multiple times
  • 39808 - Invalid redirect causes incorrect sample time
  • 42267 - Concurrent GUI update failure in Proxy Recording
  • 30120 - Name of simple controller is resetted if a new simple controller is added as child
  • 41078 - merge results in name change of test plan
  • 40077 - Creating new Elements copies values from Existing elements
  • 42325 - Implement the "clear" method for the LogicControllers
  • 25441 - TestPlan changes sometimes detected incorrectly (isDirty)
  • 39734 - Listeners shared after copy/paste operation
  • 40851 - Loop controller with 0 iterations, stops evaluating the iterations field
  • 24684 - remote startup problems if spaces in the path of the jmeter
  • Use Listener configuration when loading CSV data files
  • Function methods setParameters() need to be synchronized
  • Fix CLI long optional argument to require "=" (as for short options)
  • Fix SlowSocket to work properly with Httpclient (both http and https)
  • 41612 - Loop nested in If Controller behaves erratically
  • 42232 - changing language clears UDV contents
  • Jexl function did not allow variables

Version 2.2

Incompatible changes:

The time stamp is now set to the sampler start time (it was the end). To revert to the previous behaviour, change the property sampleresult.timestamp.start to false (or comment it)

The JMX output format has been simplified and files are not backwards compatible

The JMeter.BAT file no longer changes directory to JMeter home, but runs from the current working directory. The jmeter-n.bat and jmeter-t.bat files change to the directory containing the input file.

Listeners are now started slightly later in order to allow variable names to be used. This may cause some problems; if so define the following in jmeter.properties:
jmeterengine.startlistenerslater=false

The GUI now expands the tree by default when loading a test plan. This can be disabled by setting the JMeter property onload.expandtree=false

Known problems:

  • Post-processors run in reverse order (see 41140)
  • Module Controller does not work in non-GUI mode
  • Aggregate Report and some other listeners use increasing amounts of memory as a test progresses
  • Does not always handle non-default encoding properly
  • Spaces in the installation path cause problems for client-server mode
  • Change of Language does not propagate to all test elements
  • SamplingStatCalculator keeps a List of all samples for calculation purposes; this can cause memory exhaustion in long-running tests
  • Does not properly handle server certificates if they are expired or not installed locally

New functionality:

  • Report function
  • XPath Extractor Post-Processor. Handles single and multiple matches.
  • Simpler JMX file format (2.2)
  • BeanshellSampler code can update ResponseData directly
  • 37490 - Allow UDV as delay in Duration Assertion
  • Slow connection emulation for HttpClient
  • Enhanced JUnitSampler so that by default assert errors and exceptions are not appended to the error message. Users must explicitly check append in the sampler
  • Enhanced the documentation for webservice sampler to explain how it works with CSVDataSet
  • Enhanced the documentation for javascript function to explain escaping comma
  • Allow CSV Data Set file names to be absolute
  • Report Tree compiler errors better
  • Don't reset Regex Extractor variable if default is empty
  • includecontroller.prefix property added
  • Regular Expression Extractor sets group count
  • Can now save entire screen as an image, not just the right-hand pane
  • 38901 - Add optional SOAPAction header to SOAP Sampler
  • New BeanShell test elements: Timer, PreProcessor, PostProcessor, Listener
  • __split() function now clears next variable, so it can be used with ForEach Controller
  • 38682 - add CallableStatement functionality to JDBC Sampler
  • Make it easier to change the RMI/Server port
  • Add property jmeter.save.saveservice.xml_pi to provide optional xml processing instruction in JTL files
  • Add bytes and URL to items that can be saved in sample log files (XML and CSV)
  • The Post-Processor "Save Responses to a File" now saves the generated file name with the sample, and the file name can be included in the sample log file.
  • Change jmeter.bat DOS script so it works from any directory
  • New -N option to define nonProxyHosts from command-line
  • New -S option to define system properties from input file
  • 26136 - allow configuration of local address
  • Expand tree by default when loading a test plan - can be disabled by setting property onload.expandtree=false
  • 11843 - URL Rewriter can now cache the session id
  • Counter Pre-Processor now supports formatted numbers
  • Add support for HEAD PUT OPTIONS TRACE and DELETE methods
  • Allow default HTTP implementation to be changed
  • Optionally save active thread counts (group and all) to result files
  • Variables/functions can now be used in Listener file names
  • New __time() function; define START.MS/START.YMD/START.HMS properties and variables
  • Add Thread Name to Tree and Table Views
  • Add debug functions: What class, debug on, debug off
  • Non-caching Calculator - used by Table Visualiser to reduce memory footprint
  • Summary Report - similar to Aggregate Report, but uses less memory
  • 39580 - recycle option for CSV Dataset
  • 37652 - support for Ajp Tomcat protocol
  • 39626 - Loading SOAP/XML-RPC requests from file
  • 39652 - Allow truncation of labels on AxisGraph
  • Allow use of htmlparser 1.6
  • 39656 - always use SOAP action if it is provided
  • Automatically include properties from user.properties file
  • Add __jexl() function - evaluates Commons JEXL expressions
  • Optionally load JMeter properties from user.properties and system properties from system.properties.
  • 39707 - allow Regex match against URL
  • Add start time to Table Visualiser
  • HTTP Samplers can now extract embedded resources for any required media types

Bug fixes:

  • Fix NPE when no module selected in Module Controller
  • Fix NPE in XStream when no ResponseData present
  • Remove ?xml prefix when running with Java 1.5 and no x-jars
  • 37117 - setProperty() function should return ""; added optional return of original setting
  • Fix CSV output time format
  • 37140 - handle encoding better in RegexFunction
  • Load all cookies, not just the first; fix class cast exception
  • Fix default Cookie path name (remove page name)
  • Fixed resultcode attribute name
  • 36898 - apply encoding to RegexExtractor
  • Add properties for saving subresults, assertions, latency, samplerData, responseHeaders, requestHeaders & encoding
  • 37705 - Synch Timer now works OK after run is stopped
  • 37716 - Proxy request now handles file Post correctly
  • HttpClient Sampler now saves latency
  • Fix NPE when using JavaScript function on Test Plan
  • Fix Base Href parsing in htmlparser
  • 38256 - handle cookie with no path
  • 38391 - use long when accumulating timer delays
  • 38554 - Random function now uses long numbers
  • 35224 - allow duplicate attributes for LDAP sampler
  • 38693 - Webservice sampler can now use https protocol
  • 38646 - Regex Extractor now clears old variables on match failure
  • 38640 - fix WebService Sampler pooling
  • 38474 - HTML Link Parser doesn't follow frame links
  • 36430 - Counter now uses long rather than int to increase the range
  • 38302 - fix XPath function
  • 38748 - JDBC DataSourceElement fails with remote testing
  • 38902 - sometimes -1 seems to be returned unnecessarily for response code
  • 38840 - make XML Assertion thread-safe
  • 38681 - Include controller now works in non-GUI mode
  • Add write(OS,IS) implementation to TCPClientImpl
  • Sample Result converter saves response code as "rc". Previously it saved as "rs" but read with "rc"; it will now also read with "rc". The XSL stylesheets also now accept either "rc" or "rs"
  • Fix counter function so each counter instance is independent (previously the per-user counters were shared between instances of the function)
  • Fix TestBean Examples so that they work
  • Fix JTidy parser so it does not skip body tags with background images
  • Fix HtmlParser parser so it catches all background images
  • 39252 set SoapSampler sample result from XML data
  • 38694 - WebServiceSampler not setting data encoding correctly
  • Result Collector now closes input files read by listeners
  • 25505 - First HTTP sampling fails with "HTTPS hostname wrong: should be 'localhost'"
  • 25236 - remove double scrollbar from Assertion Result Listener
  • 38234 - Graph Listener divide by zero problem
  • 38824 - clarify behaviour of Ignore Status
  • 38250 - jmeter.properties "language" now supports country suffix, for zh_CN and zh_TW etc
  • jmeter.properties file is now closed after it has been read
  • 39533 - StatCalculator added wrong items
  • 39599 - ConcurrentModificationException
  • HTTPSampler2 now handles Auto and Follow redirects correctly
  • 29481 - fix reloading sample results so subresults not counted twice
  • 30267 - handle AutoRedirects properly
  • 39677 - allow for space in JMETER_BIN variable
  • Use Commons HttpClient cookie parsing and management. Fix various problems with cookie handling.
  • 39773 - NTCredentials needs host name

Other changes

  • Updated to HTTPClient 3.0 (from 2.0)
  • Updated to Commons Collections 3.1
  • Improved formatting of Request Data in Tree View
  • Expanded user documentation
  • Added MANIFEST, NOTICE and LICENSE to all jars
  • Extract htmlparser interface into separate jarfile to make it possible to replace the parser
  • Removed SQL Config GUI as no longer needed (or working!)
  • HTTPSampler no longer logs a warning for Page not found (404)
  • StringFromFile now callable as __StringFromFile (as well as _StringFromFile)
  • Updated to Commons Logging 1.1

Version 2.1.1

New functionality:

  • New Include Controller allows a test plan to reference an external jmx file
  • New JUnitSampler added for using JUnit Test classes
  • New Aggregate Graph listener is capable of graphing aggregate statistics
  • Can provide additional classpath entries using the property user.classpath and on the Test Plan element

Bug fixes:

  • AccessLog Sampler and JDBC test elements populated correctly from 2.0 test plans
  • BSF Sampler now populates filename and parameters from saved test plan
  • 36500 - handle missing data more gracefully in WebServiceSampler
  • 35546 - add merge to right-click menu
  • 36642 - Summariser stopped working in 2.1
  • 36618 - CSV header line did not match saved data
  • JMeter should now run under JVM 1.3 (but does not build with 1.3)

Version 2.1

New functionality:

  • New Test Script file format - smaller, more compact, more readable
  • New Sample Result file format - smaller, more compact
  • XSchema Assertion
  • XML Tree display
  • CSV DataSet Config item
  • New JDBC Connection Pool Config Element
  • Synchronisation Timer
  • setProperty function
  • Save response data on error
  • Ant JMeter XSLT now optionally shows failed responses and has internal links
  • Allow JavaScript variable name to be omitted
  • Changed following Samplers to set sample label from sampler name
  • All Test elements can be saved as a graphics image to a file
  • 35026 - add RE pattern matching to Proxy
  • 34739 - Enhance constant Throughput timer
  • 25052 - use response encoding to create comparison string in Response Assertion
  • New optional icons
  • Allow icons to be defined via property files
  • New stylesheets for 2.1 format XML test output
  • Save samplers, config element and listeners as PNG
  • Enhanced support for WSDL processing
  • New JMS sampler for topic and queue messages
  • How-to for JMS samplers
  • 35525 - Added Spanish localisation
  • 30379 - allow server.rmi.port to be overridden
  • enhanced the monitor listener to save the calculated stats
  • Functions and variables now work at top level of test plan

Bug fixes:

  • 34586 - XPath always remained as /
  • BeanShellInterpreter did not handle null objects properly
  • Fix Chinese resource bundle names
  • Save field names if required to CSV files
  • Ensure XML file is closed
  • Correct icons now displayed for TestBean components
  • Allow for missing optional jar(s) in creating menus
  • Changed Samplers to set sample label from sampler name as was the case for HTTP
  • Fix various samplers to avoid NPEs when incomplete data is provided
  • Fix Cookie Manager to use seconds; add debug
  • 35067 - set up filename when using -t option
  • Don't substitute TestElement.* properties by UDVs in Proxy
  • 35065 - don't save old extensions in File Saver
  • 25413 - don't enable Restart button unnecessarily
  • 35059 - Runtime Controller stopped working
  • Clear up any left-over connections created by LDAP Extended Sampler
  • 23248 - module controller didn't remember stuff between save and reload
  • Fix Chinese locales
  • 29920 - change default locale if necessary to ensure default properties are picked up when English is selected.
  • Bug fixes for Tomcat monitor captions
  • Fixed webservice sampler so it works with user defined variables
  • Fixed screen borders for LDAP config GUI elements
  • 31184 - make sure encoding is specified in JDBC sampler
  • TCP sampler - only share sockets with same host:port details; correct the manual
  • Extract src attribute for embed tags in JTidy and Html Parsers

Version 2.0.3

New functionality:

  • XPath Assertion and XPath Function
  • Switch Controller
  • ForEach Controller can now loop through sets of groups
  • Allow CSVRead delimiter to be changed (see jmeter.properties)
  • 33920 - allow additional property files
  • 33845 - allow direct override of Home dir

Bug fixes:

  • Regex Extractor nested constant not put in correct place 32395
  • Start time reset to now if necessary so that delay works OK.
  • Missing start/end times in scheduler are assumed to be now, not 1970
  • 28661 - 304 responses not appearing in listeners
  • DOS scripts now handle different disks better
  • 32345 - HTTP Rewriter does not work with HTTP Request default
  • Catch Runtime Exceptions so an error in one Listener does not affect others
  • 33467 - __threadNum() extracted number wrongly
  • 29186,33299 - fix CLI parsing of "-" in second argument
  • Fix CLI parse bug: -D arg1=arg2. Log more startup parameters.
  • Fix JTidy and HTMLParser parsers to handle form src= and link rel=stylesheet
  • JMeterThread now logs Errors to jmeter.log which were appearing on console
  • Ensure WhileController condition is dynamically checked
  • 32790 ensure If Controller condition is re-evaluated each time
  • 30266 - document how to display proxy recording responses
  • 33921 - merge should not change file name
  • Close file now gives chance to save changes
  • 33559 - fixes to Runtime Controller

Other changes:

  • To help with variable evaluation, JMeterThread sets "sampling started" a bit earlier (see jmeter.properties)
  • 33796 - delete cookies with null/empty values
  • Better checking of parameter count in JavaScript function
  • Thread Group now defaults to 1 loop instead of forever
  • All Beanshell access is now via a single class; only need BSH jar at run-time
  • 32464 - document Direct Draw settings in jmeter.bat
  • 33919 - increase Counter field sizes
  • 32252 - ForEach was not initialising counters

Version 2.0.2

New functionality:

  • While Controller
  • BeanShell intilisation scripts
  • Result Saver can optionally save failed results only
  • Display as HTML has option not to download frames and images etc
  • Multiple Tree elements can now be enabled/disabled/copied/pasted at once
  • __split() function added
  • 28699 allow Assertion to regard unsuccessful responses - e.g. 404 - as successful
  • 29075 Regex Extractor can now extract data out of http response header as well as the body
  • __log() functions can now write to stdout and stderr
  • URL Modifier can now optionally ignore query parameters

Bug fixes:

  • If controller now works after the first false condition 31390
  • Regex GUI was losing track of Header/Body checkbox 29853
  • Display as HTML now handles frames and relative images
  • Right-click open replaced by merge
  • Fix some drag and drop problems
  • Fixed foreach demo example so it works
  • 30741 SSL password prompt now works again
  • StringFromFile now closes files at end of test; start and end now optional as intended
  • 31342 Fixed text of SOAP Sampler headers
  • Proxy must now be stopped before it can be removed 25145
  • Link Parser now supports BASE href 25490
  • 30917 Classfinder ignores duplicate names
  • 22820 Allow Counter value to be cleared
  • 28230 Fix NPE in HTTP Sampler retrieving embedded resources
  • Improve handling of StopTest; catch and log some more errors
  • ForEach Controller no longer runs any samples if first variable is not defined
  • 28663 NPE in remote JDBC execution
  • 30110 Deadlock in stopTest processing
  • 31696 Duration not working correctly when using Scheduler
  • JMeterContext now uses ThreadLocal - should fix some potential NPE errors

Version 2.0.1

Bug fix release. TBA.

Version 2.0

  • HTML parsing improved; now has choice of 3 parsers, and most embedded elements can now be detected and downloaded.
  • Redirects can now be delegated to URLConnection by defining the JMeter property HTTPSamper.delegateRedirects=true (default is false)
  • Stop Thread and Stop Test methods added for Samplers and Assertions etc. Samplers can call setStopThread(true) or setStopTest(true) if they detect an error that needs to stop the thread of the test after the sample has been processed
  • Thread Group Gui now has an extra pane to specify what happens after a Sampler error: Continue (as now), Stop Thread or Stop Test. This needs to be extended to a lower level at some stage.
  • Added Shutdown to Run Menu. This is the same as Stop except that it lets the Threads finish normally (i.e. after the next sample has been completed)
  • Remote samples can be cached until the end of a test by defining the property hold_samples=true when running the server. More work is needed to be able to control this from the GUI
  • Proxy server has option to skip recording browser headers
  • Proxy restart works better (stop waits for daemon to finish)
  • Scheduler ignores start if it has already passed
  • Scheduler now has delay function
  • added Summariser test element (mainly for non-GUI) testing. This prints summary statistics to System.out and/or the log file every so oftem (3 minutes by default). Multiple summarisers can be used; samples are accumulated by summariser name.
  • Extra Proxy Server options: Create all samplers with keep-alive disabled Add Separator markers between sets of samples Add Response Assertion to first sampler in each set
  • Test Plan has a comment field
  • Help Page can now be pushed to background
  • Separate Function help page
  • New / amended functions
    • __property() and __P() functions
    • __log() and __logn() - for writing to the log file
    • _StringFromFile can now process a sequence of files, e.g. dir/file01.txt, dir/file02.txt etc
    • _StringFromFile() funtion can now use a variable or function for the file name
  • New / amended Assertions
    • Response Assertion now works for URLs, and it handles null data better
    • Response Assertion can now match on Response Code and Response message as well
    • HTML Assertion using JTidy to check for well-formed HTML
  • If Controller (not fully functional yet)
  • Transaction Controller (aggregates the times of its children)
  • New Samplers
    • Basic BSF Sampler (optional)
    • BeanShell Sampler (optional, needs to be downloaded from www.beanshell.org
    • Basic TCP Sampler
  • Optionally start BeanShell server (allows remote access to JMeter variables and methods)

Version 1.9.1

TBA

Version 1.9

  • Sample result log files can now be in CSV or XML format
  • New Event model for notification of iteration events during test plan run
  • New Javascript function for executing arbitrary javascript statements
  • Many GUI improvements
  • New Pre-processors and Post-processors replace Modifiers and Response-Based Modifiers.
  • Compatible with jdk1.3
  • JMeter functions are now fully recursive and universal (can use functions as parameters to functions)
  • Integrated help window now supports hypertext links
  • New Random Function
  • New XML Assertion
  • New LDAP Sampler (alpha code)
  • New Ant Task to run JMeter (in extras folder)
  • New Java Sampler test implementation (to assist developers)
  • More efficient use of memory, faster loading of .jmx files
  • New SOAP Sampler (alpha code)
  • New Median calculation in Graph Results visualizer
  • Default config element added for developer benefit
  • Various performance enhancements during test run
  • New Simple File recorder for minimal GUI overhead during test run
  • New Function: StringFromFile - grabs values from a file
  • New Function: CSVRead - grabs multiple values from a file
  • Functions now longer need to be encoded - special values should be escaped with "\" if they are literal values
  • New cut/copy/paste functionality
  • SSL testing should work with less user-fudging, and in non-gui mode
  • Mailer Model works in non-gui mode
  • New Througput Controller
  • New Module Controller
  • Tests can now be scheduled to run from a certain time till a certain time
  • Remote JMeter servers can be started from a non-gui client. Also, in gui mode, all remote servers can be started with a single click
  • ThreadGroups can now be run either serially or in parallel (default)
  • New command line options to override properties
  • New Size Assertion

Version 1.8.1

  • Bug Fix Release. Many bugs were fixed.
  • Removed redundant "Root" node from test tree.
  • Re-introduced Icons in test tree.
  • Some re-organization of code to improve build process.
  • View Results Tree has added option to view results as web document (still buggy at this point).
  • New Total line in Aggregate Listener (still buggy at this point).
  • Improvements to ability to change JMeter's Locale settings.
  • Improvements to SSL Manager.

Version 1.8

  • Improvement to Aggregate report's calculations.
  • Simplified application logging.
  • New Duration Assertion.
  • Fixed and improved Mailer Visualizer.
  • Improvements to HTTP Sampler's recovery of resources (sockets and file handles).
  • Improving JMeter's internal handling of test start/stop.
  • Fixing and adding options to behavior of Interleave and Random Controllers.
  • New Counter config element.
  • New User Parameters config element.
  • Improved performance of file opener.
  • Functions and other elements can access global variables.
  • Help system available within JMeter's GUI.
  • Test Elements can be disabled.
  • Language/Locale can be changed while running JMeter (mostly).
  • View Results Tree can be configured to record only errors.
  • Various bug fixes.

Version 1.7.3

  • New Functions that provide more ability to change requests dynamically during test runs.
  • New language translations in Japanese and German.
  • Removed annoying Log4J error messages.
  • Improved support for loading JMeter 1.7 version test plan files (.jmx files).
  • JMeter now supports proxy servers that require username/password authentication.
  • Dialog box indicating test stopping doesn't hang JMeter on problems with stopping test.
  • GUI can run multiple remote JMeter servers (fixes GUI bug that prevented this).
  • Dialog box to help created function calls in GUI.
  • New Keep-alive switch in HTTP Requests to indicate JMeter should or should not use Keep-Alive for sockets.
  • HTTP Post requests can have GET style arguments in Path field. Proxy records them correctly now.
  • New User-defined test-wide static variables.
  • View Results Tree now displays more information, including name of request (matching the name in the test tree) and full request and POST data.
  • Removed obsolete View Results Visualizer (use View Results Tree instead).
  • Performance enhancements.
  • Memory use enhancements.
  • Graph visualizer GUI improvements.
  • Updates and fixes to Mailer Visualizer.

Version 1.7.2

  • JMeter now notifies user when test has stopped running.
  • HTTP Proxy server records HTTP Requests with re-direct turned off.
  • HTTP Requests can be instructed to either follow redirects or ignore them.
  • Various GUI improvements.
  • New Random Controller.
  • New SOAP/XML-RPC Sampler.

Version 1.7.1

  • JMeter's architecture revamped for a more complete separation between GUI code and test engine code.
  • Use of Avalon code to save test plans to XML as Configuration Objects
  • All listeners can save data to file and load same data at later date.

Version 1.7Beta

  • Better XML support for special characters (Tushar Bhatia)
  • Non-GUI functioning & Non-GUI test plan execution (Tushar Bhatia)
  • Removing Swing dependence from base JMeter classes
  • Internationalization (Takashi Okamoto)
  • AllTests bug fix (neth6@atozasia.com)
  • ClassFinder bug fix (neth6@atozasia.com)
  • New Loop Controller
  • Proxy Server records HTTP samples from browser (and documented in the user manual)
  • Multipart Form support
  • HTTP Header class for Header customization
  • Extracting HTTP Header information from responses (Jamie Davidson)
  • Mailer Visualizer re-added to JMeter
  • JMeter now url encodes parameter names and values
  • listeners no longer give exceptions if their gui's haven't been initialized
  • HTTPS and Authorization working together
  • New Http sampling that automatically parses HTML response for images to download, and includes the downloading of these images in total time for request (Neth neth6@atozasia.com)
  • HTTP responses from server can be parsed for links and forms, and dynamic data can be extracted and added to test samples at run-time (documented)
  • New Ramp-up feature (Jonathan O'Keefe)
  • New visualizers (Neth)
  • New Assertions for functional testing

Version 1.6.1

  • Fixed saving and loading of test scripts (no more extra lines)
  • Can save and load special characters (such as "&" and "<").
  • Can save and load timers and listeners.
  • Minor bug fix for cookies (if you cookie value contained an "=", then it broke).
  • URL's can sample ports other than 80, and can test HTTPS, provided you have the necessary jars (JSSE)

Version 1.6 Alpha

  • New UI
  • Separation of GUI and Logic code
  • New Plug-in framework for new modules
  • Enhanced performance
  • Layering of test logic for greater flexibility
  • Added support for saving of test elements
  • Added support for distributed testing using a single client

Version 1.5.1

  • Fixed bug that caused cookies not to be read if header name case not as expected.
  • Clone entries before sending to sampler - prevents relocations from messing up information across threads
  • Minor bug fix to convenience dialog for adding paramters to test sample. Bug prevented entries in dialog from appearing in test sample.
  • Added xerces.jar to distribution
  • Added junit.jar to distribution and created a few tests.
  • Started work on new framework. New files in cvs, but do not effect program yet.
  • Fixed bug that prevent HTTPJMeterThread from delaying according to chosen timer.

Version 1.5

  • Abstracted out the concept of the Sampler, SamplerController, and TestSample. A Sampler represents code that understands a protocol (such as HTTP, or FTP, RMI, SMTP, etc..). It is the code that actually makes the connection to whatever is being tested. A SamplerController represents code that understands how to organize and run a group of test samples. It is what binds together a Sampler and its test samples and runs them. A TestSample represents code that understands how to gather information from the user about a particular test. For a website, it would represent a URL and any information to be sent with the URL.
  • The UI has been updated to make entering test samples more convenient.
  • Thread groups have been added, allowing a user to setup multiple test to run concurrently, and to allow sharing of test samples between those tests.
  • It is now possible to save and load test samples.
  • ....and many more minor changes/improvements...

Apache JMeter 1.4.1-dev

  • Cleaned up URLSampler code after tons of patches for better readability. (SM)
  • Made JMeter send a special "user-agent" identifier. (SM)
  • Fixed problems with redirection not sending cookies and authentication info and removed a warning with jikes compilation. Thanks to Wesley Tanaka for the patches (SM)
  • Fixed a bug in the URLSampler that caused to skip one URL when testing lists of URLs and a problem with Cookie handling. Thanks to Graham Johnson for the patches (SM)
  • Fixed a problem with POST actions. Thanks to Stephen Schaub for the patch (SM)

Apache JMeter 1.4 - Jul 11 1999

  • Fixed a problem with POST actions. Thanks to Brendan Burns for the patch (SM)
  • Added close button to the About box for those window managers who don't provide it. Thanks to Jan-Henrik Haukeland for pointing it out. (SM)
  • Added the simple Spline sample visualizer (JPN)

Apache JMeter 1.3 - Apr 16 1999

  • Run the Garbage Collector and run finalization before starting to sampling to ensure same state every time (SM)
  • Fixed some NullPointerExceptions here and there (SM)
  • Added HTTP authentication capabilities (RL)
  • Added windowed sample visualizer (SM)
  • Fixed stupid bug for command line arguments. Thanks to Jorge Bracer for pointing this out (SM)

Apache JMeter 1.2 - Mar 17 1999

  • Integrated cookie capabilities with JMeter (SM)
  • Added the Cookie manager and Netscape file parser (SD)
  • Fixed compilation error for JDK 1.1 (SD)

Apache JMeter 1.1 - Feb 24 1999

  • Created the opportunity to create URL aliasing from the properties file as well as the ability to associate aliases to URL sequences instead of single URLs (SM) Thanks to Simon Chatfield for the very nice suggestions and code examples.
  • Removed the TextVisualizer and replaced it with the much more useful FileVisualizer (SM)
  • Added the known bug list (SM)
  • Removed the Java Apache logo (SM)
  • Fixed a couple of typos (SM)
  • Added UNIX makefile (SD)

Apache JMeter 1.0.1 - Jan 25 1999

  • Removed pending issues doc issues (SM)
  • Fixed the unix script (SM)
  • Added the possibility of running the JAR directly using "java -jar ApacheJMeter.jar" with Java 2 (SM)
  • Some small updates: fixed Swing location after Java 2(tm) release, license update and small cleanups (SM)

Apache JMeter 1.0 - Dec 15 1998

  • Initial version. (SM)

apache-jmeter-2.8/xdocs/css/0000755000175000017500000000000012165514773015343 5ustar ebourgebourgapache-jmeter-2.8/xdocs/css/style.css0000644000175000017500000000240212032647152017202 0ustar ebourgebourg/* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /*Shows the value of the name attribute when hovered*/ /* Disabled a[name]:hover:after{ content: " #" attr(name); font-size: 90%; text-decoration: none; } */ /* * Hide class="sectionlink", except when an enclosing heading * has the :hover property. * Used to hide the ¶ marker for generating internal links */ .sectionlink { display: none; } :hover > .sectionlink { display: inline; /* Green so shows up on section headings too */ color: rgb(0,255,0); } apache-jmeter-2.8/xdocs/changes.xml0000644000175000017500000003717712032647214016712 0ustar ebourgebourg JMeter developers Changes
This page details the changes made in the current version only.

Earlier changes are detailed in the History of Previous Changes.

Version 2.8

New and Noteworthy

Core Improvements:

Thread Group: New Option Delay thread creation until needed

New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup

This new feature allows running tests with a huge number of short lived threads.

HTTP Cookie Manager (IPv6 support)

Add HTTPClient 4 cookie implementation in JMeter.
Cookie Manager has now the default HC3.1 implementation and a new choice HC4 implementation (compliant with IPv6 address)

Memory and performance improvements

Significant improvements have been done in this version on memory usage of JMeterThread

JSR223 Elements (enable using Groovy, scala... as scripting languages) have been improved to enable:

  • usage of Compilable interface when available to boost CPU usage
  • caching of Compilation when scripts are used as Files
See JMeter Performances across versions

OS Process Sampler

Allow defining files for stdout/stderr/stdin.

HTTP Request: PATCH verb

Add PATCH verb to HTTP sampler

HTTP Request: HTTPClient 4 is now the default implementation

HTTPClient 4 is now the default HTTP Request implementation (and for Proxy element when generating HTTP requests).
Previously the default was the HTTP Java implementation (i.e. the implementation provided by the JVM)

HTTP Request

Add Embedded URL Filter to HTTP Request Defaults Control (it was already present for HTTP Requests)

Miscellanous

  • CSV Dataset : Embedded new lines are now supported in quoted data
  • JMX files now contain the version of JMeter that created the file
  • JMeter Version is now available as property "jmeter.version"

Reporting Improvements:

Response Time Graph

Add a new visualizer Response Time Graph to draw a line graph showing the evolution of response time for a test

Settings for Response Time Graph

View Results in Table

Add latency to View Result in Table listener

Aggregate Graph

Small improvements: legend at left or right is now on 1 column (instead of 1 large line), ...

GUI and ergonomy Improvements:

HTTP Proxy Server simplifications

HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.

HTTP Proxy Server

Allow URL Filters to be pasted from clipboard

Find in JMeter

CTRL + F for the new Find feature

ESC key now closes popups.

User Interface in GNOME 3

Display 'Apache JMeter' title in app title bar in Gnome 3

Known bugs

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Changing language can break part of the configuration of the following elements (see 53679):

  • CSV Data Set Config (sharing mode will be lost)
  • Constant Throughput Timer (Calculate throughput based on will be lost)

Note that there is a bug in Java on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:

 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
This does not affect JMeter operation.

Incompatible changes

When using CacheManager, JMeter now caches responses for GET queries provided header Cache-Control is different from "no-cache" as described in specification. Furthermore it doesn't put anymore in Cache deprecated entries for "no-cache" responses. See 53521 and 53522

A major change has occured on JSR223 Test Elements, previously variables set up before script execution where stored in ScriptEngineManager which was created once per execution, now ScriptEngineManager is a singleton shared by all JSR223 elements and only ScriptEngine is created once per execution, variables set up before script execution are now stored in Bindings created on each execution, see 53365.

JSR223 Test Elements using Script file are now Compiled if ScriptEngine supports this feature, see 53520.

Shortcut for Function Helper Dialog is now CTRL+F1 (CMD + F1 for Mac OS), CTRL+F (CMD+F1 for Mac OS) now opens Search Dialog.

By default, the TestCompiler now stores details of which pairs it has seen in Controller instances rather than in a static Set. [53796] This gives much better memory behaviour for delayed start test plans, as memory used is proportional to the number of concurrent threads. With the static Set memory usage was proportional to the total thread count. This change is very unlikely to cause a problem. The original behaviour can be restored by setting the property TestCompiler.useStaticSet=true

HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.

Bug fixes

HTTP Samplers and Proxy

  • 53521 - Cache Manager should cache content with Cache-control=private
  • 53522 - Cache Manager should not store at all response with header "no-cache" and store other types of Cache-Control having max-age value
  • 53838 - Pressing "Stop" does not interrupt the TCP sampler
  • 53911 - JmeterKeystore does not allow for key down the list of certificate

Other Samplers

  • 53348 - JMeter JMS Point-to-Point Request-Response sampler doesn't work when Request-queue and Receive-queue are different
  • 53357 - JMS Point to Point reports too high response times in Request Response Mode
  • 53440 - SSL connection leads to ArrayStoreException on JDK 6 with some KeyManagerFactory SPI
  • 53511 - access log sampler SessionFilter throws NullPointerException - cookie manager not initialized properly
  • 53715 - JMeter does not load WSDL

Controllers

Listeners

  • 53742 - When jmeter.save.saveservice.sample_count is set to true, elapsed time read by listener is always equal to 0
  • 53774 - RequestViewRaw does not show headers unless samplerData is non-null
  • 53802 - IdleTime values are not saved to CSV log
  • 53874 - View Results Tree : If some parameter containing special characters like % is not encoded, RequestViewHTTP fails with java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern and Response is not displayed

Timers, Assertions, Config, Pre- & Post-Processors

  • 51512 - Cookies aren't inserted into HTTP request with IPv6 Host header

Functions

I18N

General

  • 53365 - JSR223TestElement should cache ScriptEngineManager
  • 53520 - JSR223 Elements : Use Compilable interface to improve performances on File scripts
  • 53501 - Synchronization timer blocks test end.
  • 53750 - TestCompiler saves unnecessary entries in pairing collection
  • 52266 - Code:Inconsistent synchronization
  • 53841 - CSVSaveService reads file using JVM default file encoding instead of using the one configured in saveservice.properties
  • 53953 New: Typo in monitor test plan documentation

Improvements

HTTP Samplers

  • 53675 - Add PATCH verb to HTTP sampler
  • 53931 - Define HTTPClient 4 for the default HTTP Request (and Proxy element to generate the HTTP requests). Before the default, it was the HTTP Java Sampler
  • 53934 - Removes HTTPS spoofing options in JMeter HTTP Proxy Server. Since JMeter 2.4, the HTTPS protocol is directly supported by the proxy

Other samplers

  • 55310 - TestAction should implement Interruptible
  • 53318 - Add Embedded URL Filter to HTTP Request Defaults Control
  • 53782 - Enhance JavaSampler handling of JavaSamplerClient cleanup to use less memory
  • 53168 - OS Process - allow specification of stdout/stderr/stdin
  • 53844 - JDBC related elements should check class of Variable Name supposed to contain JDBC Connection Configuration to avoid ClassCastException

Controllers

  • 53671 - tearDown thread group to run even if shutdown test happens

Listeners

  • 53566 - Don't log partial responses to the jmeter log
  • 53716 - Small improvements in aggregate graph: legend at left or right is now on 1 column (instead of 1 large line), no border to the reference's square color, reduce width on some fields
  • 53718 - Add a new visualizer 'Response Time Graph' to draw a line graph showing the evolution of response time for a test
  • 53738 - Keep track of number of threads started and finished
  • 53753 - Summariser: no point displaying fractional time in most cases
  • 53749 - TestListener interface could perhaps be split up. This should reduce per-thread memory requirements and processing, as only test elements that actually use testIterationStart functionality now need to be handled.
  • 53941 - Add latency to View Result table listener

Timers, Assertions, Config, Pre- & Post-Processors

  • 53755 - Adding a HttpClient 4 cookie implementation in JMeter. Cookie Manager has now the default HC3.1 implementation and a new choice HC4 implementation (compliant with IPv6 address)

Functions

  • 51527 - __time() function : add another option to __time() to provide *seconds* since epoch

I18N

General

  • 53364 - Sort list of Functions in Function Helper Dialog
  • 53418 - New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup
  • 42245 - Show clear passwords in HTTP Authorization Manager
  • 53616 - Display 'Apache JMeter' title in app title bar in Gnome 3
  • 53759 - ClientJMeterEngine perfoms unnecessary traverse using SearchByClass(TestListener)
  • 52601 - CTRL + F for the new Find feature
  • 53796 - TestCompiler uses static Set which can grow huge
  • 53673 - Add JMeter version in the jmx file
  • Add support for HeapDump to the JMeter non-GUI and GUI client
  • 53862 - Would be nice to have the JMeter Version available as a property
  • 53806 - FileServer should provide thread-safe parsing
  • 53807 - CSV Dataset does not handle embedded new lines in quoted data
  • 53879 - GUI : Allow Popups to be closed with ESC key
  • 53876 - Allow URL Filters (HTTP Proxy) to be pasted from clipboard

Non-functional changes

  • 53311 - JMeterUtils#runSafe should not throw Error when interrupted
  • Updated to commons-net-3.1 (from 3.0.1)
  • Updated to HttpComponents Core 4.2.2 (from 4.1.4) and HttpComponents Client 4.2.1 (from 4.1.3)
  • 53765 - Switch to commons-lang3-3.1
  • 53884 - wrong Maven groupId for commons-lang
apache-jmeter-2.8/xdocs/extending/0000755000175000017500000000000012165514774016541 5ustar ebourgebourgapache-jmeter-2.8/xdocs/extending/notes_on_extending.txt0000644000175000017500000001631512032647151023166 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. Making a TestBean Plugin For JMeter This component will be a CSV file reading element that will let users easily vary their input data using csv files. 1. Pick a package and make three files: - [ComponentName].java (org.apache.jmeter.config.CSVDataSet.java) - [ComponentName]BeanInfo.java (org.apache.jmeter.config.CSVDataSetBeanInfo.java) - [ComponentName]Resources.properties (org.apache.jmeter.config.CSVDataSetResources.properties) 2. CSVDataSet.java must implement the TestBean interface. In addition, it will extend ConfigTestElement, and implement LoopIterationListener. - TestBean is a marker interface, so there are no methods to implement. - Extending ConfigTestElement will make our component a Config element in a test plan. By extending different abstract classes, you can control the type of element your component will be (ie AbstractSampler, AbstractVisualizer, GenericController, etc - though you can also make different types of elements just by instantiating the right interfaces, the abstract classes can make your life easier). 3. CSVDataSetBeanInfo.java should extend org.apache.jmeter.testbeans.BeanInfoSupport - create a zero-parameter constructor in which we call super(CSVDataSet.class); - we'll come back to this. 4. CSVDataSetResources.properties - blank for now 5. Implement your special logic for you plugin class. - The CSVDataSet will read a single CSV file and will store the values it finds into JMeter's running context. The user will define the file, define the variable names for each "column". The CSVDataSet will open the file when the test starts, and close it when the test ends (thus we implement TestListener). The CSVDataSet will update the contents of the variables for every test thread, and for each iteration through its parent controller, by reading new lines in the file. When we reach the end of the file, we'll start again at the beginning. - When implementing a TestBean, pay careful attention to your properties. These properties will become the basis of a gui form by which users will configure the CSVDataSet element. - Your element will be cloned by JMeter when the test starts. Each thread will get it's own instance. However, you will have a chance to control how the cloning is done - we'll be taking advantage of this for CSVDataSet (since we don't want to open the file X number of times from X number of threads). a. Properties: filename, variableNames. With public getters and setters. - filename is self-explanatory, it will hold the name of the CSV file we'll read - variableNames is a String which will allow a user to enter the names of the variables we'll assign values to. Why a String? Why not a Collection - surely users will need to enter multiple (and unknown number) variable names? True, but if we used a List or Collection, we'd have to write a gui component to handle collections, and I just want to do this quickly. Instead, we'll let users input comma-delimited list of variable names. b. I then implemented the IterationStart method of the LoopIterationListener interface. The point of this "event" is that your component is notified of when the test has entered it's parent controller. For our purposes, every time the CSVDataSet's parent controller is entered, we will read a new line of the data file and set the variables. Thus, for a regular controller, each loop through the test will result in a new set of values being read. For a loop controller, each iteration will do likewise. Every test thread will get different values as well. 6. Setting up your gui elements in CSVDataSetBeanInfo: - You can create groupings for your component's properties. Each grouping you create needs a label and a list of property names to include in that grouping. Ie: createPropertyGroup("csv_data",new String[]{"filename","variableNames"}); Creates a grouping called "csv_data" that will include gui input elements for the "filename" and "variableNames" properties of CSVDataSet. Then, we need to define what kind of properties we want these to be: p = property("filename"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setValue(NOT_EXPRESSION,Boolean.TRUE); p = property("variableNames"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setValue(NOT_EXPRESSION,Boolean.TRUE); This essentially creates two properties whose value is not allowed to be null, and whose default values are "". There are several such attributes that can be set for each property. Here is a rundown: NOT_UNDEFINED : The property will not be left null. DEFAULT : A default values must be given if NOT_UNDEFINED is true. NOT_EXPRESSION : The value will not be parsed for functions if this is true. NOT_OTHER : This is not a free form entry field - a list of values has to be provided. TAGS : with a String[] as the value, this sets up a predefined list of acceptable values, and JMeter will create a dropdown select. Additionally, a custom property editor can be specified for a property: p.setPropertyEditorClass(FileEditor.class); This will create a text input plus browse button that opens a dialog for finding a file. Usually, complex property settings are not needed, as now. For a more complex example, look at org.apache.jmeter.protocol.http.sampler.AccessLogSamplerBeanInfo 7. Defining your resource strings. In CSVDataSetResources.properties we have to define all our string resources. To provide translations, one would create additional files such as CSVDataSetResources_ja.properties, and CSVDataSetResources_de.properties. For our component, we must define the following resources: displayName - This will provide a name for the element that will appear in menus. csv_data.displayName - we create a property grouping called "csv_data", so we have to provide a label for the grouping filename.displayName - a label for the filename input element. filename.shortDescription - a tool-tip-like help text blurb. variableNames.displayName - a label for the variable name input element. variableNames.shortDescription - tool tip for the variableNames input element. 8. Debug your component.apache-jmeter-2.8/xdocs/extending/jmeter_tutorial_mike.sxw0000644000175000017500000016275412032647151023526 0ustar ebourgebourgPKj“K2á¥19mimetypeapplication/vnd.sun.xml.writerPKj“K2þ¸†ûŠûŠ-Pictures/1000000000000216000002F08371F788.png‰PNG  IHDRðD8«sRGB®ÎégAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<ŠyIDATx^í½¬.ÉYçwŒV›« H+­„ÌËØl~ÈZ¡Y ÉV¤QØ‘F­"EÞü1‰ÆVß¹f,ÐübŒí•Ù€åøîaÃÄ^V•°ÉØ;¾ƒÍLlîå—<Ì0°ø“0±Œ°lÆ A'Õ]ÕÕUÕÕÝõ­îꮪþ¾:º÷œ÷­ŸÏÛõ|ú©zßçû²ËËËßÿ½Oœœüÿð;Ä¿|д-@ Сyöw?)~⃠hÖÚ-Ð9ðŠ˜¶À‰‰ñ;´-pp xr'´€Ï.BäMhZà°CÈÁÉÊé{-@„—´-`Y`!‡Å*'>f"„ˆ^‘ B" Ç»Z V 0 ©õM1/"„¡hF!¼"-°Bž¼ÿµ¯¹ÿ)ó~ø èiZ`? ÈÏø›7¡Ãgô«¡QˆXæ''¯}ðƒª"Wý~ïoŠð"°Í9„´W‰ñ¸ç±¡™ˆC^:W‹eb“ü_~/D|žÓyòÙfáßó†×|Ç#O¶7°[!D /“rÂq" "„À Ê´€y38áþ„ÜÿÔù='÷¾ÏDÈSê<-]išÎßpþÁG^#騣ÆÔqhΰúkntß™X !}hÒ%úîà Y$xúgôÅtÿ#÷Š«¦©Ø_j³”š»°2±&‡A dnéøCCÈï~ò±{[$ £I—Æ ´Ë_ü©i–üûÞÐúðÆùštæ¦>Èðând‰7^ÝD4 —ˆº Œ› ï%ÒŸQÐc÷úöLj Z€XÕI¢}9v+i>¯ï,Å/!›äÆô½i6â¦sžfB&ŽÊ›‹àžÇä%bÞƒègüX÷) Šd8’³86Z  ¤9 QŸ£w“ox°ó2Ôð¢ÅA·Ê÷~‰2ÿI-‚„¥’[ Õ'²úÞ.dûV²Ù¥0ŸqÑ~?£Hs8Bš̱,u÷¡.£¤2®©¼A}Pœ°…¦óMâ¬i--€ž…¨±‰£Ž–(âhD>^{ï=Öþ„wGKoT0")3"‰@ˆyHn§7ÇeÆ¥c§»w(϶€QåõGËË4â–Ë›}Ñ©-Š®VZ`þC½´-@ ÌDHjH×Ôþ\r°ÅSÓ[˹Ðq˜@õ—hÇDHò“̸eÌZ´À^ äÅ¥Â-@„!´-”fñ%>hˆºZ€ B‡H !t´-‰[gÿèæ¿¼ãSïûößxï?üƒ?øƒ¿ø‹¿ˆôC¬V¬\„ð°ˆ ho¦^ÇË ~˜bÚŸøŸþóO|â¤H±,ˆ¸‹JÌÓ´ÀÁ-0vœnú˜Žg——úçòãÿüï?õŽoyòÑW}ä‘W>ñð+>ôÀËEhòÅ/~QU|áú]w]!ÒS±Z¦€"/¯ˆÇ*ΚE|•ò«ô?×ýï¬X`c @ŸìÅ AˆØ¿º|é§.¿ò/¬{b¿ø£ßðÎw¾óùçŸE¡’)€aÁÙøêϹ»ß~ÿ·èŸ?þã?þêW¿:;ZÁÿðÛÞTñ ã¬X`c „ö(àˆqþqù…·_þÙÃϼçÕÎÏÓ?ñŸ~ì]ßöÑ·ó‡þ&‹ˆ‹4>‰À„3œNƒ¿<¿üËw[?v9Qæg~äï9¡Étòõÿô—?û¹_þ®o-x§‹QH†Jñù«Ë[olNDBÄ¡ˆïç‹ûïÄ«ýÀß~Ó›Þänd5 ¹vÈBÔ1;7»ÊG?J!®U†4F8ïó B¾ðèç~õ¿FÎ3¿ô®fƒKPF!c¨@^>¼¤Þg‹¨"êò,d•«qÝFR Dx„´YgÍ¡ˆïçÏžø'âÕó7ý-"¤4.ã…’y0a®=h¨0BžTÐâ/~@õø×/¹ËþÅGÅ3ÿËßø®w½K¿´nçåcâg²®÷_¥5/BÄ¥8< ? Ÿß¹x÷?hòÙñþüû_øÇâÕŸþ¾¯"D!æY£ÀmçTFÈ*×t† ù›ß¿&òÒ—Ìã÷߸ç¯ÿŸ÷ý«ùÆ·¾õ­fòõ~ºù³Ý°ú®|¾{éó?óOûè¤-Ó<ã-ð3¿&*}úmßúŽŸùœªýÙ¼Ã)ir¢ï±Ù(ûôÓm­§TÕŸ~°Ù7k€¡kGb7î¾Ún¸uð¶Ý…dxm¢užŠ„#D|ÿC D|ìªAȳ÷y>ýøkÅ«go|™qÒõ,ÏD¸‘• âÆ#ºµŽ ¶¯(祗–üE<#ŸwþðøÜßù©ÇÿãËËŸ»|é½ÞŸå¿ýíý÷?÷Ïþ#!2 Þà7^þ×Þ¯žo¼¹ „åšû÷W/yYÒ 5Œ–[Btˆj~i`öþ§»u›ý/ÃW[Þèa˜}1 É!ÎEnR$!âsºúûƒâûÿö‡ÿîÏ¿í]|þJœŸ‹ó±%âÁïú®ïzðÁãÜkåo!®U†„F!¿óþÿäùÞÙ„ _xÔóóâ£_|ê;i¾ç{¾ÇÜÈrÎBŒ»û6.Q¡@ÏOã¼ÝDˆ[ÒqDŒÒ#¤­îr¢A¤-›Xe,úmãÇþŒBV¹×mÄŒB~È?5EÂ"™ˆt&‚ b“jú!ʈ’ù»BŽ0Î0BêŽB†Kwì8ý×úï}éÿ¸¿AÈŸþ¨ççö~æûNñ‰,7n8g!NLÐÇ%­k~›ØÝjÈ– MÐàÐÙ²½¼]Ò b¤Óï\¿!ƒO‚ Ñ“vF!ëzÿUZKqœ.Ü ˆˆE~gîÁô‹q®¹”Z0BV¹¦3lB~ãü›~<ÿc?gÿ™ÜÅú½ßû=ó,Ä˃æ$ÃpñoûµË>thaàÞ¼eŒ1ô%!„4[UîÆTßøàÕ‰“vF!^Û‰RŠã8“ZFHÅQÈØWC†NA|gPàaöGîb‰Âþ(ä[ß$P!ŸýµO[QBëµEÆ è€@ð”Äb§«£~Ñ…n|z?g!bÃ’Ô‡¼q!™¯–m†'™ˆo{<ˆ câ! 8_-Tg!ê{»¯vÇæÉ{d²ÍõB„ÜË'>ŒZ£sM†ÌQPD„b“jâ1Lpò²ÿà“"¼Ø ü~ÆÂb_ß4›õȳȹoSX d"ù‚óR`šEé•(9•Ô;Ñ8Œm.úZ{aެZßÙœç%¨=B’½K~˜³¦äTõA ¹C÷.§‚*¦su+…ÈÙ¥³[޶€ÞË-Ìþ‚´’SÃLY̵ºï_©A"ij*·§]´k`EZ`Ö³Ìp¸‚u$§†^lø}uY†YÉã¯Þ ŒÙë•hZ 7 @ AHZÉ)F!«{úd ÂÙþ½¾ÍCÈÛ·oÿÕ_ýUn‡ã©É?ÄÄC²¦ä”g8QH“ŽÑN«•̲á8 À©iií2—á!ä'?ùIRd—÷â8B AÈš’S£úS7²â|úZ0Bê‹ †~šãÄÇ%‡-BŠÐD¼õnõÛçwß}~û8n3]É?£5%§ÆbbƒIƒ¸`„¬tU×Ó ”%ðòÝï~÷g>ó™y„*õ\GigQ$$ YSrЉsÞyÔ‚Ý¡›Ë¢ÖŠB CH‹X~…ÀHëf«mâG`²šä”±Se©©7‚"½ºÒZÏÃir¦`„T»Îb'!:„±È!§§wËÓÅvKKB¥ý÷üT:ž^Ä΄õêµD‘(dÉ©öúò½ëÚµ»6œãôæ4Äx•Î;? À©5˜ˆ˜¤A}+'_ÕÿB‡W¯^u"ÉѲ£ùU#ääD‘ãâ´+R¯;äÌ@ @üŒB(9•Ÿ3ßgD0BÀ«·þâPB¾å-oÝÈjrzaD!jÏ‹›]õ_q13„(…Prj‡_¯0B…8+BtI„Ä8KÖXâG`"\%§òóç;ŒFWè„@‡‘AˆyÂ(„Wæ„ Š„D!;ø*v™¥`„0 "dì«!Ã% BúÎBº3y&Â,r#À?£,µµ`„\±,2jñ9Ý<òÊ'~Ňxù/þè7üÛþ»?ÿ¶¿#Ô?ðÖ¯üê•Ç~àoŸ¿éoýô÷}ÝÙ_öÝßýÝ?öc?FSÒ«X¢£­ÝpÉýÁa2±¤g#™ˆt&‚ b“jú!ʈ’«¸6rp @ü€¢JN•ìü×;Œƒ¯ÆåÓ±Èss¦_\nj¶ -Q$0 ¡äÔ:>¸ðV`„ÌÞh­Û#T¤Ï¢2´ÄÀ($0Û›øúÈ¿øÅÂ$‡?e"Ä³ä ¢]†‹CÊÐEB¢Àloï|ç;ŸþyËu_8o>r톭%Õ%S4r¼7‰NøÈØ0B2\-@ LXâG`e{±ˆô-7ÔãÆ5›!Š }j¬—Dš¬¾xÆ~ôÀCƒRÐz}C¥VQgˆ"!Q”íMÄ"A6tÈÐèP{]äH Rß­ýЭd8ÇÀÓK¿VÕ1'gmX¢HHe{{Ó›Þ¤â?Ùìш I‚$oÀáÂÜŧ—~­*9b‘ÄW?tr5™.;c“8E=(¸Ë¢SˆQ”íM!ÄÐÿp¼b³ƒuÃ%H[†›Zy䥗`„dx‡>¶êj*tzéjUÉäð]>ø–&6CAÌLñm>j±D‘(ÊöÖ!Ä{œÞ‘”Iבõns'ŽZÖTaó€N/]­*•KËrŸþâ´9BÈÂ.ŒáBüŒB loê,¤ÿPVêšÎêw¬Œô6B†Ù;ÑcQˆg î¾8úTz1‹ç¡ÓK_~F:dht¨½.r$Ä1U¢HHBÉ©cƒ£Ÿ=Œ¢N=ƒ…N/§„F,“HvˆhƆ$ ARËåñ#0 ¡ä"-#d¯;ôˆå\ÓP¡ÓK!Í•ÿt¼ÙÁºp Ò¾“!]¦U Š„D!ÂwPrЉAH¦K¤öaA§—„xÓ;RèxÃŒF( [Ññ#0 ¡÷¤…Œ:‰ ÃèôÒ= i'j|^×þpV¿ceágz+bÈå%D‘À(„>”`RŒ› VU1oU~…øÁ(„`€,À³Œ>‘5á|¨U•Ÿg.iDE£JNAÞ¶ÊÂ0BJZ7u•ZUu½ŸÛÍâGxBÉ©*‘€N FH†çckñCÝα§’-Q$$ LÚ6*9ů£®:×òDHY%»/Ž}g @üŒB“¶y$§¤+$BrE:.!;¯vO и Š„D!PÒ6-9Õ»'"uÕ¹–‡r„Ý¡lçHÉ)Üy²ö‰ÞÀ(JÚÖIN)ÙB•!K¦¿êbé„Y½4®Lo•ÏÕ“v\0B¸"÷²%§ö²|ý®…@IÛº4‹ (z[õLƒŠæµî½ßÕÕ nž”‚’íúpg>T1¼±Çp.§—I$§:¡‘&á ¿µ^ O ~F!PÒ6ä”Dˆ¹%ÙánpQv*Opô£‚Rà ÊtÈc„ó>xz9*9¹~«p—_K> µ“©á8,ˆ"!g!PÒ¶‘®Š É$0B2¿µ7ÝCæC…^%§°èÁäD“ôÄÈ·H„ ˆQ”´m¨ZØ„ÍYH¿µ5¶‘uM †ðü=SŠÀ)pe:d!Ðé¥OrʳíSa©DXöæ_ç†XîI“íW#d¦‘Lm~ØaA ‰B ¤m½äTwR~×µkÍF–÷8ÝPœºv£?Z§øTž ’ù­}qQH¯gÞþ¦ïù)èôÒ“fÑT(ÔQ…Þ›êžQj·N"Acmdú†cÖ[ç7qˆQ%§òtèÛ FH~ ¤ÔAQtz9LöÞodY {¥°Ô@aj!!”ú¶Ô9nˆ"!Q%§¶wÖyö#„QÈ„Œ!:½œAȘú”–* AÈl#uºâ"gñ#0 SyúôG#¤È5”å !„@§—~„¨Ýª&æ°ôoŸŸ¶;Uý'vÍ#tóð£? h$K›vPEB¢ý»ËÖ0B í‚N&¶*ô½èôÒ+9%·«šàÁU–ê¾÷!_mVaÏYˆ­`Õð4rXÛÄ!~„G!Ù:5lK ÀÉmyd<”œ:ÈhšE…lé‚Kï F£µÎB gAÉ)È\,lZâ…Prªt,?Œ.ν,@É©½,_A¿E£JN-÷¿´#„QÈ.QH^ŒSØË?£À¤m£’SøNN¡µâY×Ûc2Ú¹D5ºGV,ÑEB¢À¤m£’Sþ—©LŠ‚Œ×ÇL Ù?£(i›GrŠ)Šƒ…}ÛËŠ)¼X U©U•Âøµ Q$$ ’¶ù$§dÊ«&–J~¥2/Sm­ë¢„±Å§¨F•†`„´l8TijUüJ€ø…@IÛ É©NšPïV© ½Æî•õR'8e:KÁ%g¨Z£ÕŽ,xÛ;\´¬˜Â‘ÍZ5ðØ3‰VUŠ ³Í( @ ‰B ¤m½^ˆ•U´0O÷‰xM„˜éy ¾:Q¼VAÜч¼k!Q0+ífÀcÏQ­*1ðþ‹çmjK2¤ûÃøÆ»?{Ön`ÇI´Ó¡¤mÉ)'ª˜EH'0ÒÔ³ÎÛ©Fµ3Â`„ÌÞöŽ-YVLáÌf­ {µªZ4ô)µÚlðCÔ¯²a3C•0>ÅdÙf´VB ¤m†äÔpcJnK‰»ˆC«§;²¸æë­h.Õ¨v¦G܇z£/bVÜÅб§O«ÊT˜â#íˆ|È.“d§“€øx%më%§|›Qú@CïJÉÈ¢—¥j]•Ÿêž§Uá÷B|koöÖ~õH+Ú:ÊTzýëç¡cO7?££z«GÙ!C£CíuY€£çÄŠë[¢HÈY%§²ðß ÞÈZÿêf‹)-{ºYâG•Ò%;ÄË64âU)gƶC-ñ#0 ¡äTÞ;‹!ÀÙþý=†:¼tì919¬¾/Nï>¿p Ò–à¦þ&¥¯Q$$ Þ‹’SY¸ð½#$ýÕÎÖ´tì9Ôªò§w¤Ðçìf42¸¬9)¶YâG`²·ãbÿ¹XFÈb‚íçy¨0tìéÕª²„ÒÍgõŸÔrE¬ ²ð€(…äâÃ8Ž]-#dƒË]¬hjU­hÌB›‚øÁ(dW‡\^ç0B¶¿C?Bé|µªÒÙ¶ –!Š„G!”œ*Ïå¯=b!-UZ€ZU¿ ~„G!”œZÛÙŒ#ÄÛÏñà>ŽÓOmˆ"!QH`î5KrjäÛæE:Nº³âY¼DHjÆö·´ÄÀ($0÷š%9%bþKG\¾`„lyé³/Z€XÅEB¢(÷š’œbR>0†3€²ýz}=Rj·ÈF-ñ#0 r¯)É)7 ’R2ù»™Ò½F/[õœ`„^µ,6f @ñÚØÞEB¢(÷šJ³è Ä‘+¬ÚÏV<9!õÅÃõ ÍQ{ [<„ô @…ñ{X2¼îöî=&¶ÄÀ(ʽfé… ÏBtv÷Šm½Sƒ’øj/¯ù1ÞxŸ<„ô @…`@–!BÊ»ŽÒŽ¢HHå^#Bê%“½ûV.…è6Ķ®þÝÛté @… DvO„¤uÈ…µñ#0 r¯M#„AHÑ€a²Ô˜¨˜Eté @5`8=*‚Í£•z2QaÆúy&¯ZúöVR¢HHå^9 é„Ôyš^2C`„@wèæú«µ¢œW·ÔÿúVN¾ªÿ…!}PJC°Aƒ³aåAH#ß¡ò"†G0•øLN£·ÄÀ(„’S%»ý5Ç#„KÓ±…@‡SPROp: ¾Ê7切(…PrjM7\r[0Bj &¢&!Ð!$rT‡¿ò¼!~F!ÂéQrªdÏ¿ÚØa„¬|u—ßô‰,èr!JÔÜÐ6·¶¶TüÑkªWË·6ggˆ"!QÈjˆ n!ŒB†Yáß !}g!Ý™‹:iÔÕñº8h×§#z KŠ™‹Ãwùjœûa­Â-ñ#< )ÜõqøëXFHá«içáSjç7à¨ÝCa²Žs=F+0B…Lx¡YãPê¨>|ÏyCü€¢JNS³„²çR¨¢o @Uñ66 ˆ"Q%§Èa!³7Úckë ó+î1,ñ#0 ÌöfINÑãÖh"ÄãE¶§Ý1\g¹› Š„D!ÙÞ,É©(ç#d·EÀŽiZ Ê?£(Û›’œ¢»­Ñ0B¶¿C¯¯GJNEyBVŠ·D‘(Êö¦$§^z©É¨¨U¦Ú¬ïׯ‰¿¯Ýh|ëæ×ö!ÿæ£ À‰¿ŠY³µ%§x!llˆQ”í­O³ØÑáÆµk7Zžt´`ºÞ"xá$Œúb‚ázN7ÇÀCH¿äÔÆŽ‡ÝUdˆ"!Q”íM%{Wq†A £×”U/Õ—tÜ0B*ZV;L%ðÒ/9%ÇÛ}á¼ øE^+o÷‡‘ãßIßámάKˆQ”í­Cˆt²rêBˆò¹#$Ýúغ«©GèÒ•œjõAtúö–&6C©±T‘Ì<‡³½ Š„D!P¶7-9uíú ­ÏléqÃ@H{JÂ##dû«¿¦¡CHWrÊ#FØØ¦C.NÛ˜CÄ)J%¤&Óq.Ñ€ø…@ÙÞÔYˆq`Þ„ÎæUÔN–”„!5ʼnâGfJ¯IñÙXa„l|éWÖt9@ˆ÷8½#…)“®©AÉôÊ. ¨é@üŒB’y$6\˜`„ÌÞh':`ˆX;:„tÏBZŸ×µ?œÕïX™Eø™Þˆ §Â*E£Â\‡›Æ0B*\^N‰’S›]) @ü`’ÆÓVÛ*Œ oí Š{(9E¿¾‹ Š„G!”œª– Áƒ²Ë¨©SJNÕôn1ˆáQ%§‚ÝlÍa„0 Yò‰¬"<YŸ Š„D!ÙÞ(9U3=Ú¹!w±=&ëóYœQ>€ø…f{s%§ tŠPáê]u®„’ÏÂàHhZ ÐEB¢(Û[/9Q*œ«‡­~\0B¶¿C¯¯GJN:>[Å?£(Û['9e)NÙúS*ùb/H5|¹zg\æa„¬rM¹JNùÝßkîEB¢(Û[—fQ¥èm³õŠ”ï¶pˆ‘«·¤E…”!õÅÃU ÍQ{ [<„œ—œâ×Î÷rÆö ñ#0 ²½õz!š F^ÞNë¶ÓÑ~“©!® ´Cã÷ùÀCÈ)É)9"$í»Z[ëEB¢(Û›!ZoÊr”Hˆ*Ý¡› ±ÖŠB CÈ¡äToO"¤6'Ÿp>?£(Û›…µÕ ÂÒ˜záº%H%v»(CU%B^ée6 !:„HNÙ²dú«>!–έØKãÊðꈒé²Ê¼ÀV5D‘(ÊöÖŸ…t²·JrJ]š''Íß2þh:>‘OùÕÜëÆÈ³Ï …&YX¯ù‹¾•“¯ê¡CÈAšÅ† ½Æ­z¦AEóZ÷¿Þïêj´*¹|Ñ?£JN!s„rÄ%89g( !§$§$BÌí,Éwƒ‹²S¼` @ ‰B(9â^PFt‡Î³ÇA‡k DöO$?£á)9uBÌÎFȡעoòPBN¨6!Gs¶Ñommd¶'&ü×Á¯[ˆ"!QȬgaƒXF£ÇAß !=’SÝIùݧ§ÍF–Dƒ:‡éŽ: ũӋþh§é‡¥Äð(ä .’Óœ¶ŒÃ®ÃU&NÉ©UÌÈFP @aBl„[F£‰Õ;kJN¡¾å—[â…Pr*ÜÕÖZFÈò úà-PrêàÀ.Ó‡(…PrªV*@ó‚2{£=¶BŽPqïÀNii @üŒB³½’SLgyîl !žÕWíè=i @ ‰B³½¹’SŽɆ Ð@`„„\¯,C ÐùXâG`e{ë%§ˆÈ=—PFHAwèõ •ZUùøå²FQ$$ ²½u’SMÊ+•ðªI¡Øþjf}—¯õÏè4Œ}ú,ñ”-\U‚—­zŒ0BÊZ95–ZU5½›[ÎâG`e{³$§šü¼zÓÊÈ׫žëŸéõÚ {‡ÊTU;èü'#¤¾[ûábÎpާ—ÔªÚÒ5ÔD‘(ÊöÖ'{ïbŒ>Ñix%BÌI ÷Œd L•¿—­z„0B Z65 5ðô’ZU5½ékÍâG`e{3"sº/@ˆôÇI.\‚’áú>F ^R«j-ç[M;EB¢(Û›)™.þ•Ñ¿´'jˆ<ÛÈr•©rñ¥ŒjUYN/A­ª6{V“%^$Þjòmµ)ãå/­‘i¸(cUÖÅñ#0 ²½ug!ÆÉ‡þµ;)¿ëÚµf#Ë{œn¹_»áQ¦:¨óÎcÚ0B…L¸…Æqô©ôbÏC§—aZUFZF)=Òæþm“ÿv¿x“¢V”±*‚%!á?wÞygHBÉ©<øþ£€RÄš©oÐéeЈ¥³hhUiѪ1U+ª”vyÉ($ä!àˆJNíï¼óŒ…7Ú!×±S†= ƒ@§—Aq’¿;äûW^aDõöPÆ*âZÞ§ŠÞÈšEÂ"Ü%§òðá;FÈ>‹àð½B§—V•2íB†ªV·Ï)cUÖõ˜!;».vŸ‡`„0&Hw2Ñ2tz jUµg£§Sƪ,‚ôÂéëF!?>ù8;;ËÃÅqi-#¤°ÕSËp©UUË;¹Ã<E!‚ /¾øÜØ@Èë^÷º´Þ‹­g`!ŒBv‰B¨Uµƒë­¥Ët™°@ˆx•ÉÀɧŒZ–Uyó VUyïY#Þ !‚ò‘Ö‡±õ]-#„QÈ.QH¾ˆ£(ÒI2q råÊ•›7o!d±mzÙÕ¡oß9âq a²H—ÆAokÔ999»¼u‡ø×ù ÝËJêÜuãI{ÙÞyçÑ#Œm/~öF ÐK-°B†üÏ!y8ù´£€RÐz}C¥äÔRozÈú©â5ªø¤ÖB !©ëm¦wK€ÊЦ’™œ*3¼H­¥-ôÉÕnÊ-™†ëz“)¸yhA«´.¶öÖa„r f1iJNeñ68ˆMròÐIãLÄCþ?‡”‘>W¦ôu¦<vÕŒŽÊiËÄÃÜÈÒäès×îãÏFH}·öCŸáW“œJáõ×S4Î6[`„4ühÑÑüßþ;ƒçXÂöòFáè‚ØZtLð*éê€ÄQ¸Jì^Ð<ŒÅ×3ˆ±Àj’SG“`˜M+fЬ“Ê D ½BÄoÄ D ª›¡ƒ I̧$C„Üè$ÙàƒIF3!Þ¡­¼š†ºšäT:„¤r€lw©R#dì êž³~'Ê·‘e AÑä…ë–ÀÔ ÷O%1"7¾lÝÜžGº+GU×Ù:KædënFÈÒË™õ£,°žä”ÌЫUAd ,%"7šŽªTgœ %‘ö1¢2²l…”Œ²+E[ )B'&bÌÖ÷BLp˜BRÝqº>aï¨)ûOsϪ;´ÐG1½ª•åÔíäÓÎFHM·ö¹…/)%§l)1s¥eì^õ¿ À ©º§Ä‹¶••¾eªú XfþD'—{¸*R}™V0¤/ÓýiiR-÷¢‡nFÈnëàðSrêð—@¤6AÈ2É©NbªqÆcbSMb]CXJnmµ´PúƒJ1¤/£’:šeTë­ÓçæØìƒÂ`by0![–{ »ÈZr*Ò³±ÚFØ!K%§49‚È$ì>u©a¶öÙg_œ2Vþ7ªß.ÅŒ®út3cïó‹$§¢µ¤ð.aŠ ¤¹%Ò·’S*(½#ˆòl¶º”©V«£GˆÐÆ!” YJ «>ŒF!+F!º)qc¤÷Zx É©#xÓCÎ15BVœê6–®]S1ˆØerĦZu)ƒ!c16»ú¬CõUêñƒrÈ5˜dÒ&*f²HrªOº.²YIÍ(•3KæR4huIÝœZf!UÆQ¥Jb#6º†’"dÉ©æÔ»=œ°ÕSo[ôgð'ŽLa¶á;NoöÆäÃ9?žÓ_wÆ0B…¬…X³m,âžzæ=¯¾|ö¾öDälìçkϼ^¼ôøÕ+W¯^µ©"3»kÅB3 »¬ rX™û¼¼C*­,eeõ]Ãé±5-!³M¥¢>·µ®?dk°`„Ì^1,h( Y*9e¦a7¥¥dDáÄ^Ù(W´J&¾"<ßí=‹¥CH€âÔ­ub!< ‡Ý}Š 0B…¬…ÈÖf7²Vœò’C‰¦ûWâסHÔ葵HrÊ uXb«§wj"6TL}9±Ûç§mÓ áÎN—v³@"„äæË8ž],#„QÈŠQHø÷BINM#¤×Ž:QâQb†F~v%ë­’›[Ô!Ü a'B%§vqÙ¹u #$ì¢e©•-°›äE¢V~'wh.B(9•›Cß~<0B…¬…˜íÌZucÉ)ŠDíàé“u™!C¦äÔöÞ|—a„$»ÎÙðŒ(9ÅK$Î{!„Ç黸ô;…2{¿¶jFù6²zÝ‘ ½é!»‚7²Ž°ä2œã ’SbV}ž+¤½ÿºxÊÕž²£KcÊxé¼MûÞg~ÊUehÐ# ))B"%§¬ý¨öÀÜ Ù(³ÀP3ÊxF¦€7Oß騷›4ŒF!Îg¡q¼bSÍÁC­ 9edÛmœ|‘îÿá”dj,!FÙ‹ÓVöP%Šï4CTŠø¡\Õ‘¼u–sMŠÙûõB"öšLáôí<${š±ŒÙ+†RX`MÉ)ŽtpN8´´”V©ê… ©á1ÉØ3)ÌÁ6 ¤CH¼ä†ù’ FÈÂmäÊWeÙ£0Äš’Sciâ [&ÄsœÞiLc(Wñ–³ÊªH„JNåë×7ŒU¯m6j$§f7²†ÚSöF–¥1uÑmdiµ>XqäªBçÈr‰,!º)v•¯`„0&Hw2Ñò ’S*ø°N¾Ítqö¡ÏÖ•ö”jôï "&¶­†rU‰\#› ³’¯.d0BÂ.Z–ZÙ»IN-™媖Xo½º)2&¸9ö|ù®’3ð[F£]¢%§–¸/ÊU-±^Šº‰òtØCx ùÒ×j!).q¶bJN…X‰e†H‡“&3ÖÌR+<ä¼`„0 Ù% ¡g¤¢-°%BÄ EÌaþÛ#$üƒ¼!9KÂ[«Û…ï=;"ij0 Âd´[aÅãX BODÔFVˆÓ—eVDHH§{{á¢û‡rœ…Ç™ÒuX BBì³sB„$Œ‚îÐë*%§B|Ë8Ø!âÔ¼=8o\Šù°¢e¦Út»NRwèç‡é°´ClÊØ­™bTãêT‰=êᚇÂõ¹—(9µ—åKïw„´ððPÄBH'3Õ ÁÙ°2·°BŒ¤¼Þ­-§5Ó{ka*F!‰¡#¤¾[û¡ƒÈpŽ‹$§2wL)Ÿø Ú!"þhùÑ<KÚ?Õÿ‘%´OG!ÃWMoè¼*³»{“ø:ú"‰]êÑš‡’øjgó~ ,’œÊܨDHâ7h„È`‰/Š´ÿ[{YÛ!D…6­7·Âˆ”Xƒ’áúجi¨‹$§{¨¥Í!K-8S„HŠÌ…4' *Zaƒ!emmõYÊý÷tÐUŒ(D=ç<#«]¤t¤ÇmFHâ«Íû-°Žä”h»ó×–~”|^¥yo“$¶ÅZ-)™þô´}¹ý£W—òJTY T&†]ËÄÀDHâ«~3„xçaŸ…tZ]d wžš£ñáqºÌò~r¢^5‘à;iïŠå)?•˜n0BjºµÏ-|‘¶õþ»†äT;Ý^*J 6úQM~ÅNÇp¨%¥“À7©KZ§oft—FÔU fºg´âˆ,3D…)l•عùD üR¿žØ‡ïÜ<Œ#/Å羂ä”åÇ;ÙýdwwØþo«Qi×ïýEWôÃ…˜é$1 I|a¥@ˆu½ü±³Ÿc÷É,#„QÈÄz6άYArÊ ØúQæ Æ\¿”é#ŸD•ÙѰÓ˜íhÑ‘YC°nIæ‘Øpa€‚_À¬±‚–JNuÛKÊß>·ô£n‚çCÒŒE!t³ ºƒA׺Œ§Ö ¦b®ˆÂ¼rQÃ…}£ÍŠK|Û"É)ã°\iIõâRÔ­q2în.odù%ªl醻®G„­–X‡u'-!?>ù8;;+Êr°‘€ÂÕº‹Š”œÚÅRìt`tyñÅçÆ~B„¸z¤[bµr,#„ÁÄ.g!INчçft™˜©@ˆx•)‡‘#…’Ûò8Îx(9uœ÷zÝ™î…ÁùˆtN¬V‚`„0 Ù% Y×§°µCY )B&D®\¹róæÍ!áCôB÷Þx ~¹ 1!g²=&åÑ8Ù-!''g—·îÿ:?!Ö^Vˆ—7óõš~t¶îl‚¼rQC…²ñÕÏîhZ`¡6@È♄HïÉ(¤ŠÀÙþ½¾©µÐ'²:dÔñF|Rˇõ$§ÌÌî]r­ë*¥–ÌüÎÇ€]»,<´•£xUllMr"tBä¼äÿ~„¬,9¥HqãZ+=rÒ‘Cd[d‚÷-ðÑô#¤¾˜`¸ž¡9N$›ç‡ø¼£þ¹ß<ß|òÑW}ä‘W>ñð+>ôÀËÅ·@Ä{³±£awµZ`„4ühÑÑüßþ;…¨dï*ûÉ©—dZÞ.Þ˜Ö§ÚÊŸ°!µ.³èyñÆûüÊQÌZý^VZq„ËõQˆøí¡“ô‘îº ²¾`„@wèæ’¬µ"„-”£ˆJI=­Ôû‚úÄqz/Õ…’S×zýª»®ß¸ÞÈŒÆïä^Ð-Œèë¸ÖŠB)G ºBQZÁC¾$3§wÒQB&JËF™U‡i±˜(·Ö«³WR„NLý¨EÊQCa(!òdgÍÕ)Ùµ”9½^ÊTªÚ‰{rI2kZ~;}'ß¾Q·0Bf¯˜£€¢¥ÊQŽ0TkkwôÄ0±®|Kœ\¼*an'Vx´·íHóM‡["d#_¾S70B…8ÎBÈjÊQNT1‹¡Ð“jÁ–/<’c=Î\!D§Àšýe'çÆn·°Œã,¼À™BY¤ÕÆ ƒ¨AnKjæ -ÚR^åAãÐÄV œ.‹•gDÙÂ?±ì-#„QÈ0 ûjÈÐÙ,TŽònFé ÍYh‰'9 Wj¨:Užo䈃,!ÓzSòÕ콸‚`„]³,4b*GñÒØÞ‰2=‘§Ÿ~šYÁCgߌF!+gÖ8TŽÚÞ²Ç-òå/Y\ü+"~!E²GÀÒÂá‚\h*G-4 «£HŠÍ Iý¯ùáÁ¥^Šõ3¶ŒÙí±ëûѵÍò´ÀH‡ÁŒó›_’ä8yè!ñsÇ÷6²ž?9Q0\Ò#"Ùû„“ ï7cOíЈÏ.ˆv8 vQºÒ!Dð£Ñ›jù!þ½Cüœ‰¯ÙÊ/ÛžIºˆp@H´ä²d`„”¾œ8~ZàhH„͆"þü¸%"ñŠKZŠ`Krµ$’XRw'¿\P·0B ºC¯o¨Ôª:š÷_e¾‰"Ʀ)"ö¯DüÑòc: YQrªÉÑ«RmÉM¦EÕ¾Ò‘¹à‰”D‚²Ê5ÍF",@­ª£±Š°@:„Øgm’÷vkô,dEÉ)áû|¿-JT²_™¾}FjO!Y!¤¾[û¡—ÉpŽ?¨UE(ÀH‡I‹éýYÒû/’œjüb«UhpIF%ºÙ±“•”.õhm3 ä.VЪÒ_OkÎÎíÛçB1R12ü.otŠNÓ!DðãŽï=ûéND|Çé+!Df|ï·³ˆÍ #$Ã;ô±UWÓPjUµhèÓk]œzóɶDúæðMáÎ÷h3B¢£$§_)";:©t'øÐá7²RrFÈK€}^.Óªò öÏ^œ¶1‡ÌØÈGmH‡8 Y[rJ)§7±ˆ±-Ƭ”ÌpÚ†RÓ­}ná‹W¥J R<¿H«Jçîu&Ü!C£Cíu‘#uA$B°(dC¿Æ®6³ŒºW1³YªUå?ÙÐú…64¨!RÌu4Ðt™=KãëÓ7ójìhC Àa2±jÓg‘V•©&b¾ÙÁº8¿ÛvpS+È;Q(B¥çé?7thìjk À)bÍÔ7ÈeZURgÄ9NoÔêQHñŸžÔg×CÌ(B¶vTì/W ÀIw£ÛÉD„wIgœ¥ZU¶tºE“þW]=¬’¡!dZuêìì,W§Çq­i!®# ‰ZUGx—Í1B^|ñ¹±¡©¾¦¯b[YZFHºmF!„ZU‰ÜëšM‡ ë „ˆWI‘,Ýþšƒ‚r„%—ç©U•çû’ÿ¨öBˆà‡|¬é±ØVf€Â(d—Odåï§8Âl-!'"W®\¹yó&€t_#Oײéзé…AW¡…ZŒåiÓ©Ò¨NݺCüëü„`{Yé²"&uîÃÄ*™yù¤Ã£.NZ€(Ë dÈñL$BR8<"$…UÛ6a„0&Øq#‹’SeùîLF›!ÞiŠOjy"“³7•]WŠ{ÈǵëB3ª“÷hœ¾Ö§j•£ºÔî}mOk¦§´l¶`*—#²šœƒjÁ¨!Æ{×õëÝ|Tþ®d¾;“†a„d²*8 JNðM_eÊ› ¤Q›’£•ÿû"붨Œ½ÊšYZ?J¼¦³(vÕo\“ zÖœs ý²O¸PÖ6úoÚôüÙ¡NŽÁ!”&›N2¯ uéƒ3qôé†#„QÈZQˆ°äØcØ%§üfü}§•Ò|û>°Ê*Î;F6@HÃÍÿí¿„ô÷ë*ê°$§4W<'"Ò˨ÂÀ†•VÅöïÎΕy\ae ¶ÛT!‘—LFJy'ß°÷,$éÖY: à-ÃÉcQÔ0Š1{Ÿ_,9Õ}ó\ä[”¿y±;¦0épÛ>¦U«Ü–ÍïÆ«5:/{4¼NEªRæç°BD_}"~{èĽ}eÅ"ßr¢¾°yKß9ýiíEˆÙXF@â–iåÙõÜfy"dl 1 Y1 ÑM —©÷Zx¡ä”j¼÷¡§§7mŸnžõ—;»8‡ÛÔ2ºðšl¬e¨ÇÂN®û*U$‰vºðúâã¼ÂNâß±/¨ÎB†›A“YæqI{Fr­•µí¶¥†­i5uunÒ&ƒÈFÑÄió†Ý…Æ` ú™žGzDH] '÷Ù˜¨˜EÈ2É©ÎÆm¸ÈÏ+©Ñ¤ä=ïþè#ù¢ý·ójÛÚ¹‘§Q[\öÓ‹ ö%›ð¢ÜžúwËvñFl¢(gÕÔ…G#)Sï· Œt•ÁÆÇ”ûµ4=¾¤QˆàÄÄC Ìú^ˆ¹—eœøÓû}*É‚þx¼Wºî)ùvºÔA½ÑDsTß´â´iÿií¼êVm§] ýÈÌgzýv|k¨¬ðF£u£k;·E¼ÂS‹$§×®|h›ÎÝÚÛ1¼›~V¹îÁ«­ÇõÉSu•5CÌ’æ“ÞÐg,JÐâ&]Ÿ6¯ÿ„Þ¢3súÒ2ƒF*SýMŠYº_-tŽÃ]¯í=ëa6£–˜FÈìÀ¢E’S~„ÈDï­ëí}¨I´.ZpY¦sßÃÙö °!L­÷TõοëA5#±õ°Tà0©³èEˆݨé8-¾‹%K‡["d‰ƒÎ¿.ŒF!ëF!²µÙ¬e’SÝ­˜Cn&œðÞþ{»µ9çܸ}³å‰ÆHÌèCykxHÚ'/ºyøßš1„Œ*9Ú6(ÓcL„kö—üý Gm!å/¨\f}"k¡ä”š³Œ †¨è÷vûA3íMºu·ïßqê+4{4úä6XSÝèBÑäöù©ñ1€†- ús—‰°Æ"¨g:VË¢ÑZ‰ítX±& Àa²bþ½e’SúH¹u·£±u©º›tYYæžÒtÔbR«sôú–M›ÚÍöCWŸðêÇíøfü“ÉÞ(D…8Ý|ú-²n²µðCÌ#B(9U ¢ç#¤¢•UÒT(9UÒ»•ÙXÓ!„’SÑž·šŠ0B…¬…@~†’Saæ²?Â[aDf»T:„LŒ†’SÕ@bz"0Bb.aÖYÔœZÊGlc/„PrêÂ(d—(䈞s^ÉIR†ääËùuÄ\Dˆg™nÉ•|›¡<H$§Ÿxœ/–CV+ #„k” ʲÀÉ]r r–ŒBsÁÙþ½¾©U– .}´©âµÏÎ’S-Zõ§6·UŸíj˜^«Ë£âäïjZPšWRH¤kËÓârk+ #¤ôå´ûø©µû[p´l‚Ì$§ZŸßeê§R/yuZ_™×½y¥ûEefœºª³óR_L0t(зSŽò¦ 9š;ä|q l€‡r–œ²îã’Ã<ícr ÞÖfm½`„àpå5 <%‹”£Ìüþä"•›šÓ‹³Àk(Ò>šx$+É©áÙÆP{ BÈî)„sŒèݼâk­!d‘r£8zøZ©’£äÔ@”ÐÒÅ5^íhÒ #j5*¥.å†#>©«œ|úÆcrøõèBÈ"å(7 I£dЧy}X¾kG¶@R„d*9åD©+­-ÕëDuO©gÆ6²¬ÃyuJ²±×Ϊ;!µÑ“4ÈÊQB:r˜ Ñì(9÷1 $EÈ¬Ù Ö ÉÊUç:!³WÌÑ @QÈ"娱³;½úÑìÏùÎZ B§n!¹:ÿuÆ#„Qˆ³b!„,RŽ"Bf% ø,!³JSÌ‘µŽ“λ!\¤K²H9j! BxMN[ BòölÝF€Â(dˆ”£Ü³S.‰^”µ@:„L|)J¼´‘c7»ZFWê P9j‰õX7ÎI26$I—];ßÂ0B…L,ãYãP9*Î ²Ö ¤FˆüRáÓO?mþ+×)²…ßµ!K.eÖ r/ƒ-!íWÑO$?̇ù1÷]];Ok!³7ÚmÜÊ)¨Ç¸ ²-Ô Dg7q&"Ð"Xbù°þK}MÃÌ循щÏâ%´’z46¾±Ò!D’cˆÈ4Yr_ËFH—GdG?¾c׫úîLƒ²ñÕÏîhZ`¡R#DSDs!M¢‘NÀc¯d…DȪðRÐz}C¥VÕBgzÌêI"Cù34¯…è=¬ö ¤tÉ3Õ̱$£4‡Whh(Ϩõ=¤6TC*·ú^ôZÕwgÒŒc.ÂfM­ªÞ…Ç!æ)º»—Õɇ¸YfîB©ãÔûyÓ%Z”h  2íÞ¸ÖüÒscHÕ¢äNÛ…SQȪðRß­ýÐ)d8ÇŽg——úçR|×ý©w|Ë“¾ê#¼ò‰‡_ñ¡^.¾w".ÝǜΩ"?ŽeQ$!:è\¼Žúì¹F`Ñ‹±Çkþ€B6Õ½&J ®ŠŽ®1!é.t¶7iãÑ£J_FHÞ‹…££h׉¢ùÑpBÄ‚·B2RqIK !:+Éê7¤Á2Ñ>7iãÑ£J_FHôý2+.ߣäùaD#ÑûW"þhù1… ’S}Ž,™Ë#$Õ%ßm3¹_o“'š~ÜLéèäãr·5©,·;è·ÉÒ(ò;Êôñª¡&<íâ#®iV‰°%§"ŒÆ*ÂébŸy¨ŒïSg!–[Ÿœ2”¤¬*†”©$%œ¾,æAˆ‘uQ½:hÜÈØ(%­¬‡zµkºù³¹†‹ÌL„"$°Øpé²¢ca±ÇÐz”œ" ¢-!’ÓÿºYޝoõ tlÐKâªèA¹uY '™âw !C¨ô!ˆl½ÕQ¿ø÷}üýšl#BÄEí⣯ìƒW3¸÷ù$§fÍͤ&³&*³@:„~Üñ½gc?݉ÈI+_0‚UrìŽÞ’rÊ@ñKŽƒÄÛ/Ò¾[< ñx…hšBÍÂÍr÷ð6²Pr*Èõ!Af*¯¼A |Üyçò µôxF#6°"Bl|Án´ÍKž‡g!âGgA<# åü»HrÊ”#Ô¡†Ò¡2BF!‘.º€jz/K†Óÿ†#ŽBò¹yæHV²Œ–K!C„¢¥’S©”ˆŒ;ú˜ƒ)äÊA‡9Ë ‡(á™ÝÅ’7I+9+6“£`„0˜˜XÀq „,’œcC«NH„ ¹ÄòEBâDÏÓæèù8¦•,#¤Äõ“瘡Od-“œjX1Ð ”ª·† á˜Äzžæã¨‚-ñCo¢N§¯äØLñ€Ýhó,d:d ÿ^ÈRÉ)WMÊ€Šó«—;)ÌÜEB¢áù¦E§ÎÎΊ÷Žœ@€`„d¾Tj%§j}g7˜Äð(D äÅŸûyÝë^à‚X¤l Àa²ÖY¢QrjW[qE£ ‹ „ˆWI‘²ù0z!/³Ì§FÉ©Ìß l‡ñŠB¦"ø!ŽˆEJµŒF!)¢l½V‡ Š@QÈĉȕ+WnÞ¼I„” ‡°q!Q&ëppœER @ü@£FuêÖâ_çG ÄÚËê¿®²¤÷©ªÌ¯|w¾ëú6­¢õ誴méúÞ|YÚ†ôk|­½ÿŽz˜=x)!I¯u6N Ð),QB†ðϸ¾ÖÊ"T7 "¨D# FÚõaÖÅæ™aõΙûËë ÁžŠ]ú,ÙBŸ3ëàx™>Œ‚îÐë*%§R¸×êÛ„ø…x (>©5‡ë/hååô %Ó{ Ÿ°(¿{[Ð5e¬¾_òÞzð20Bª_oÙN’SÙ¾5ù ¢…´Ó?‚SÒòÿ „´Y MÉ?¥kè$éuÒým&í…âô;–[þàp›>Œúní‡ë?Ã9Rr*7í!~ÄE! ?Zt4ÿ·ÿ"Ä£6(<—£Ü1zÔÑ1dú,ÄÝ@34¯Ü<íݱ c’0~ˆR0B²]'uŒ’Su¿¿©gQ$* ¹ì£ñÛC'¡i7“tªvÃqù´oÕI…uÈÞxû„Xýö[bÆîV°=vA!Þ¡-¿š†JÉ©ÔN¶âö!~DD!c_PŸ? Qηl`Ò)—›T°Ñ ýF—W·|æ8½BšG/Fh§s_ "ŒŠWZÎS[OrªM·Øäî==mr½7î)õ'%§r¾âÆQŠB'&b´ý÷Bœך›E* èKŸØ­[»LmMëÓ¿êÃÝgÍ?Ûß=ýªØcZ ñ«* #¤¦[ûܯؔ¼+\,9¥2õöBS:Ë»N³H½8÷œ}-ˆh2;{~µ°nžÀ™½bX …–JNéÈB2Ä¢E—ïIñÎåÑ&D‘ð(äVÀƒ!B¬EÀ(dÂ'DgÖϬ&9E„ÌÚºº?£kö—º}èÁgÇ(¤ ‡±–äÔP1½¢äT×BÌ(!ŠF!wœ¾´ŒèmVŒYú]õ$§œ³óî4½í¨UÂ5¤p—Œ˜u³±Äð(„>”ˆAH6ëâXYYrŠÇǺ|.!Š„D!c‚›cÏÓÛÖjF!_²}À4ëÐV–œ"Bf-^QˆQˆX#O‡=DIÚÖê@9/!­¬Â¦BÉ©ÂÞ°œ† Q$0 i¾†>÷C„Ô!Ûß¡¡Çœ¼ ÇR› ~@QÈ¢ºˆ9Ì{„D|ë;¢JÝ;¿Ù!eldÕæÕ8Ÿm-Q$< <QY<¬X,?ÿ[Áˆ`„l{å³7Z€XjˆP2²-¢"d?Á9¶Rê9R9*Äõ°ÌŠ€(…˜#§æíÁ¹R Ñ/ù¢dADá6G¯Té©¡6¯~U%·2iÉgú'˜£}{”ÀYñ²>fSTŽ:æû¾ã¬!~DG!-<< ÄNµkæÈmÈbCÄxÕJ¦+=¥+z¸½ÿdüj¡oeCQÈÄvð°m*GíèIÜ5D‘ˆ(DÄ-?š‡`Iû§z¸™Òö°u;d€¡# ža>_ndíÇ2F!KËo¼Ïo¡µtB¬_› ~,‰BÄÇ|ÛdY{Y+#Ä F49ˆ‚Ý¡Û[¥Å-ÍÌ{„²…rTœ•Y«j @‰ˆB¤ñä†cÈù,g˜ZèrGË`ƒ BœgúÓ÷e?§z¬ž…,õB*G5‰åC$oo¿a~ÞdµjÓ^©WÍ‹òo>hiˆÑQȘµ=ÇéÆNTsœ®®éæp]iNìYuÂê¢tsÐÞáGÐó8}{|ÁÉ<&Ø>î‘éWAw#&Ÿwþ]¤edÒ½8m5?zZ0Ë.y1eˆ"QÈÄ) ó’ú^ˆ×½qj{¯¿j0B¸R‡qº×&^Ö.RŽRqFc˜y®˜óŠ×å¸ ~F!Î=Ó쟣^‹YÕ¡oߌF!K²H9Ju,3²ÛʃD2iˆ"!QÈö®Š=æi!\ªK²H9êöùéùí¶÷–Í?òïöðÚô[âG`’§;㨶·ŒF!C„Œm ô2å(¨ÓtÉ‘!"êÁãtÂıD‘À(äÇ'gggÛ»3ö¸½`„pq.±ÀÊÊQK†Âº‡±Äð(DäÅŸûšêÛ{4ö¸±`„0 ™ð<³ÆYY9ê0N]hˆ"áQÈĨBÄ«¤ÈÆ}ûî`„,¼”YÊQ¼6¶Ä( ™Fˆà‡|lïרãf€2{£=vU¡âÆ®ÝÑ€(E!"W®\¹yó&²™7ߥ#"ij ¢] a±#[â…„œœœ]ÞºCüëü„X{YËêóÝ—ÒûðíÕÍtŠò»ç7š¯²÷_A7sduŸ%i^VlrÂó‘Ä0B޼9wZ P @A£!<ä33ÍIxedz¿qíÚá·•|HUÀÌïÛÔ³òû&q›l´·Œ‚îÐë*µª õàûâGDâø¤‚ß—Ôý¹þ‚+¢ÿîü¿ñ¾!ã`„컎Ü;µªŽüî/œ;D4 iÇvòP—£Wþ!Ä–¡RÐÙ±GÇ ãÏfKçêVÜÐ¥­+!õÝÚç6sœÈR7µªúÐ#W‡ø…4ühÑÑüßþ #d˜ew, Ñ;`Ny”¬m!#äÈKqݹCYâ+Ôªb^¯u¯§ÉÖ ŠDE!—}"~{èCH£a;`ÈBÚc”Vw½UOïm|¬ )#d›;ts9ÔÚ£9/qó¤§ìo…ZUDÈVø…Œ}A9 ‘Ÿ¢êe£ÆÓ53Ú Cîn™[XÆ~׆Žô¸]ÁÙ겯¿! µª\Aª>¡V›O«ñæ§§mŽ-¥C"•HŒçÛ—Ú7ÅSW*_ÉêN™6W¯Ž¥Ë¸êYFò¯úßúígQŠB'&b¦ý÷B¬#Š6V°?Ôë¼îÿP¯v¨ÐŬ׾ÌõnH4!µÆÛÇ=Ò’ÝÇÙÕÿúP¾ªÿ]¤UåæñmÒ5J_¯ü6ÿµ¾¾y¥ûE #Ê?ÅCUòÖíÈ!^lŠ‹ÿlQSK•Q\iÚv¤´¶÷¯µ÷ñBfǯnèÏwè FÈìÀ¢EZUܾ:ůtߺ€ó‹U±õýf†y§®„IÆi“¾ñN%Ðp,†[¢Hxr+àA„ìà×7ìF£‰õ BÈ"­ªíbf¡×h‘†âJ” ÁÉVâGx¢S`Íþ²¡CcW[[FHØEËRó€>‘µH«*d#K:ý‰(¤ß¤l‚™1ÚȲõ¯L†™]ÈRŽ”V3>V¶D‘À(dk_Åþ²´ŒèFÛ\¬èxè{!Ë´ª‚T¾#q?Bú)ãxÃ<;ÅCWSnm¹˜iŒ!㎻ûÃx}ð²²=xs?£JNeéÒ·Œƒ¯Æ½¦¿V?w»×û½v¿E£JNmí­³ìFƒ‰‰ÕÎ8ûhU!k»ò]ÚƒøE!Ó¡äT–ýAÁÙe °SajUñ2ˆ¶D‘ð(d!”œZßaç×"Œt7Úc—ãzŒv ¬H ÌZâ…Pr*?¯¾éˆˆÏ,Z³îƒhaˆ"P‚INy£ì¯“{¿_Þ¤2¹vÍù6{“XK?¼UTšJO!\´-P– ~DD!ˆä”à€#Õ¦#éÓ–4XðèJWˆJT¥w ìFHAwèõ •’Seùî|F QB¼ÓÍÔ댲Óíšyv‡Z¹ªl˜D|z ÀÉgUm$”œ:Ú;¾Ö|!~DD!í8É)K0ÊÃC…p !Ué({€Rß­ýp¡n3Gè«…”œZËŸ³ˆ"QH#.9%Á`þkyâ0„„HTÑÁ§·Œc®À³†œT(9•¦lÓgˆ±Q&9eF Ħ‚6²Â$ªÒ;Pö#d›;ts!ÔÚ#”f±BÉ)ºû -QB¢$§:Á(ùq,§Ë"!^ö•w!$½ä”ÌTÕ)PQª¢«â…`’SÁ(õI+óÓ¹½;u"T¢ŠêMO&!µÆÛÇ=Ò’ÙHNéܺÁ¨Šœéa§QŠBfMJ½ôn|Ï`„Ì^1,h( ÙHrJ ½OâkIÙNŠÅ2´Ä( PœºE„ìéàÓ÷ #„QÈ„€Œ!d#É)‰G0*C§È!€(…Ì*M1GVz¾0BÀK—ÅG-}"k#É©f°½::ß¼:,ñ#< Ùß{qXFt£½ýCA=Bß ÙHrJšÏÜËbDRF ŠF!”œÊÀï?!U,¨ò&±äTyvâˆ=€ø…PrjÿÁ`„0 Yë, ˜ö‘œ¢C®ÅE£ óPr*÷¾Å`„Ô²¦Ê›%§Ê{Ïò1Ä( ™FÓ·pá{÷#„QHŠ($WÃQTkˆ"PBÉ©½}øÎý!¯Q&«õyœØz€øF!¨äT÷]ZC5Äúz­þþz“÷¤O|Òþå~ƒ]>)Ħº‡± ›ú#;»Û»‡²Þ…Í–hZ`# @A£DrêºÊ9¢³µû„?TΓF§ÐÕ§ÒéPp4u2wõ9€kô×Î FHAwèõ •’Syܺºø…x­5*9¥¼`—Ñ}!òé>¯W8¤}òF[R´Ú´xÝH#Ÿ¡»­qH0BêZ\%͆’S%½[™¢…´s$§Gªáàl:9¢„f1K ¤%âŠñ»Ö 17džÊ"5ºò½æ#¤¾[ûábÏpŽ”œÊÌ'—4ˆqQH¨ä”öìæ‘Ç”xTÇ7X1ÒðH‰ŒÊXíå`ëïFHIK§¢±® 9Õ$.é"§»• «ûÃø^:¿–^Ñås Q$* A$§LÙÚt7ŠßÈjö°œ“•±ó•úýù3„’áúØR¯i¨ %§Z4´Z íãâÔfˆ"ˆ€ŒG[„*,ñ#" ‰‘œj‡ö£Two £Ë8Ä*ÖUÖe²9D`„T±¦Ê›Ä2É)öÝþÙ‹Ó†RHy∧,QŠB¢%§Ô‡vÅi¸ó¡^}>Þ¼·‡æ}1ßÇ´daïYˆ¡‰¸¹ƒ­¿C!5ÝÚç¾HÛzÿ}æ=¯¾|ö¾öDälìçkϼ^¼ôøÕ+W¯^µ¦ÖÄ ¾˜¢C†F‡ÚëbüQ ~ QȬ©¨R7F`„Ì^1,ÂkJNõã“성¡!IB¤x#wj¢HxBÉ©ºñ2;!ŒB&œ@:ã,’œjv¨ü§ãÍÖ…Ku\B†ìäîWïâGxBÉ©[}!«_ßl0ÄË$§¤ˆsœÞ‘B¿`F#Ô. yWÊ)Q$0 ©Þ9r‚!€’îF;·“‰ÿÎ8K%§Mt“&=Z(5ñžPâGx2ô/_ø?ÿàóúÜ‹òìýÎGþüÿúÜW¾ò•Ä2E[FH+¦Æ!RrªÆwu»9A B¾öµ¯}ü_ý“g/þëŸ|ó·ÿë·ÿ—â—÷>ð?нú–Ÿyäxî¹ç¾ô¥/í9øY ÀIw£Í(d£Prj;w[]O? (äSŸúÓú¡_?!û_ê'~ø¾ÿîÓ¿ð“÷ýʇŸùÀ>ð'ò'³>ˆжŒêÖW1¢äT1oU~…(…üÐ=ý¿ÿúç~üûÿ«Ïåÿÿþù_}EüûÒ_ÿ¿â_aƒ·¾õ­Ï?ÿ|Ñþ‘ƒŸµŒF!»|"+?§ÄcˆP"òË¿õ»‚òG äË_{I äÿû›¿‘{Y³>È*(7I¢f±¹ÕYšñ8‚‚0YŒã@wµD( ùÕßyn„h$²!°XN>í¬`„ìºØ9-@ À€øF!¿ýû!<ø üùå|Ó($ ÅÒ:Û:[‡RÐz}C¥äì>Y¡µD( ¹ø­!AYVúDCrJ%¿j3_™á…z^ ÛÊœîm^w)-Õfè•™E«+ÚKU)·=Ѭ)XBes0B¸$÷²%§ö²|éýBü@£_ùÝß3£ˆH‹ ÏB:nH‰A‘¨·¢ÏØøqÈWçq·Ó÷z7²tcF«6B†ÍöÏørãõx5`„Ôwk?tÛÌQô2ö)kÉ)~•={È@¢_ù­gC£á^;ç~ãZsXiz;!BsßI²Ã«"t“À;\ê<ú0 ü°YnvEñFHö‹¥˜ŽÊûü ’Sé C„¤³í-Cü@£‹ßüƒð(¤uùÂË+‚xnüC|½IÛï·„Æ FxS-Q–ÖOŒòª‡ª#d›;tsáÔÚ£9/q+¦§ìïBÉ©5ÑxDHZû®Ð:D( ùÕß~ˆB$C®ÉDF%ú£}B!ÙÈ2P"$²ñš¡gÌ`£(ôÁYárf­ „,“œ23dÉ”½M>w•¼·ÉŒÕüêŠÞ6`8=é›<ŒêÅ&·–ñ¼J ¯Ò7a´-w*¨£»ßeñB>v«ÙÈ’G Aß ±5ŒñæL¼W'ìO¹»3rãÜ»;Nï(ÔV54‚ u$ßh&*Šu»iŠ´åÛªµ(Œ}WBM½CQÈRÉ)‹T*O¯ŒúðÀIÔkÂFÒ`èë´TŠ# f7¢jWeqÁBü€¢ÏþóúæùûßÿÀ#¼ù-oùþïÿþüÁöOüÄOüìÏþì'>ñ Q`K×Aþ“ÂöŽÚ–Ã.º/!ŒB&¼d!‹$§ÆÎ*Zïlg5³sPá°ÄjÍFȘ®•Ü ËÂtE£‘Îý…^ø¥_ú¥ŸÿùŸÿð‡?,˜qóæÍgŸ}öÿð?÷¹Ï}á _`¾÷¢ñ2x!]‚ ¦ }"k™ä”Üoræ ÷:AC j§*$ Ñ[[j#Ëîåöùi½tPJ`D6`ˆPâbX¦n Àn´ÍË›Å}/d©ä”«&e@¥ûUî:5q‰8D—Sæþ•ôûU-˜<Çé2ºÑMò4=ÀÓ§,Q$< ©Û9rv!€’ò:gÛ£ÈHrŠá-í:…øÁ($Äo²Œ¶Œk…@!ZF’SDHiã…(Â(„„·Œ—O%C¦äT%oäæÓ€øÁ($Ü{²¤°ŒF!)¢Í½ ;<– Š0 !Â-@„x\IA˜<–#äl£,ñƒQH¸÷dɘ($êf%Z€ØÓE… á`RRBÉ©=Ýp±}Cü`î=Y’QHI^’S%½[™¢£²!ÜŒBv‹B ¯® 9Õ}Ï™F2sïɇñƒQH¸÷dIF!ÉWoÄÇ·ÒHNu‰Lâf<ü¦z\;¬µ“ Š0 !Â-À(dÏ(D÷\rÊÈ»ãÄøu«åRâ£pïÉ’ŒBö\äP¦Þe’S}®*KýÉÈÈ{Þ%Èê¶¹ú*ZoªOŸ%ÌÖ'ÝêÓd9 ¨ö´öÁû†(Â(„l·££M$§ìLˆ:%{/ ÕeØUÛ]ƒ˜ÅÝÈê³4ª¢-.~ze*ýÏ_öDÄF!áÞ“%…ì¹°¡(d‘ä” œ´»úIs“Ê#*ÕšhB2D2dØõ¦ö¼¸Ü¾!Š0 !Â-À(dç(Dv?{²Hrj„È™Q¸p’@ü`î=Y’QÈžË{CÉ)GÒþ5uAzÒø6²ä6•Š6|Yƒý1êMíyyÙ}CaB6„[€QÈžQÈØWC†cZArªsñú”Û•–r‚•î”FGFªŠ,© تS6f”†•Ò.ÌÇ£k$?…„{O–dRŒ+ÉHrª›q ½ Š0 !Â-À(d·(Äìx67pF’SôÌ¥Yâ£pïÉ’ŒBJr”œ*éÝÊl¬E… á`’E’™Ãápª²ÄF!áÞ“%c¢Ù-—±ÅÇŠn)Ú8U¹:N&™ Š0 !Â-G!É.r6L ÐI,ñƒQH¸÷dIF!þ¤®HÉ©$.öBaB6„[€QH1þƒ’SżU™ â£pïÉ’ŒBöŒB¶“œŠKÕW+3ïÉáH @aB6„[€QÈnNJpró_ÞqùÒO]~å_X?öØñG¿áÝï~÷g>ówJ^Ìb¶Àn–cǘ ~0 ÷ž,É(dç(Dw?›fñSïûöË/¼ýòÏ~æ=¯v~DƽëÛ>úöoþðÃßôÄï?â«ìÖĈÌåVX¢£²!ÜŒBvóP²÷E’S-Bl=(Cêôôî&õU“ÎJ«K5y¯úÄïêÕ¶@c®¾òI›x«o_ÕSÙ³tzyóo»ðnÖ?RÇ?…„{O–d²²…äÔPJr wñíoM&ÅîÁ·©Û%hìóóvvÏj˜íI~/NÅk²Dû*\Éï;Wˆ"ŒBȆp 0 ÙmiCQÈ"É)”O„Ê«+em‚)QC3 iøâ–Ñኰ´°´Å©v³ý±:†øÁ($Ü{²$£ý£9‚Ù³E’Së"äˆKÆTµÒÔð†§ô{ð ¢£²!ÜŒBöXÐmŸÐ'²>þÏÿþå­7^¼û\^ž]~öG¼?ÿþþ±xõ§¿ïëÞò–·X³Cˆ¥"5¢nkÖÕ¢è¦ôÈ@´ÊVšl~!›_q?…„{O–d²s²‘ä”!^)S_Ý8º°Õ§TˆÑ+Py6²Z}*©4e¾v½6÷¦Gí¢£²!ÜŒBÊp*»IN1h(ã™%ÄF!áÞ“%…ì…˜}Ï&×ÚMrŠ)!bE… á`RŒ‡ äT1oUf…øÁ($Ü{²$£\¢Ì|‡S› Š0 !Â-G!³[.c‹'ÜR´qjsuœO @ü`î=Y2& Ip…³IZ€Hkˆ"ŒBȆp 0 ñ,Ýè˜ uEJN¥u´•¶ñƒQH¸÷dIF!%ù JN•ône6Vˆ"ŒBȆp 0 Ù- ÙNr*Úñ½Ñ¦Ë©"ÄF!áÞ“%…ì¹Ð¡'‹$§Ä,ã`WkO£²o¿ Š0 !Â-À(dÏ(D÷=›fq‘äT´_%B¢M—SEˆŒB½'K2 Ùs¡CÉÞIN5©»”U}ƪVÆÃ€j~·Õ¥úWe¢öÆ\FÊ+Goª/³§YÙ·ÏE… á`²s²…äT¿‘ÕçÍUÒP®Z”­.e¾Úi…ôöêM ËСg`ˆŒB½'K2 Ùs}CQÈ"É)'e¯#5T—Ò Sl•Ã|ƒLï}ù=M˾] @aB6„[€QÈÎQˆì~ö,d‘äÔŠiâC-„)V?…„{O–d²§€>‘µHrjz#kgˆòu©^ù|RoŠQÈž—ÔxßE… á`²g²‘äTó4¼?N¿-m`jC9‚†F òlÞ¯7ÅOpe ˆŒB½'K2 ÉrÅûµTr*ä ›(ær€ Q„QÙnF!»E!fdzɵHN™ét=Dì™Ë¨ñƒQH¸÷dIF!e¸9JJN•ône6Vˆ"ŒBȆp 0 É" ÉÌáp8UYâ£pïÉ’1QÈì–ËØâcÅ ·mœª\'“ÌE… ဣd9¦h$€øÁ($Ü{²$£ÿŠŽ RW¤äT{€F!Š0 !Â-À(¤ÿAÉ©bÞªÌ ñƒQH¸÷dIF!{F!HNeæ 9œh @aB6„[€QHôª\ZJp²Tr*z°úË"üÖH´ ÷®ñƒQH¸÷dIF!;G!ºûÙ4‹ûHN™æ!Bö&Á’þ!Š0 !Â-À(dÉÂ\TJö¾HrÊÐ’:½P™°¤~”‘ËQ êô£9úüYM–ŠݪE&aå$€øÁ($Ü{²$£ý£-$§t†ö&×I›hW¥ÌšT r’õöQÈd­$>.µDF!dC¸…,]œÑõ¡(d‘äÔð¢@5VWN[jr+ú"ؤ"ÄF!áÞ“%…ì…ÈÌž…,’œ"B6ñÔ9wQ„QÙnF!»-|èY‹$§F# ß–”£@eÖ•""Í.˜ú­`×µv3';µÄF!áÞ“%…ì…l$95±å;g%j“ÊÞìê³ÆOÔ¢'ÏÒE… á`’åŠ j©äT³ä(“Xâ£pïÉ’ŒBöŒB̾g“k-œJâ•ØhY€(Â(„l·£b\%§Šy«2(ÄF!áÞ“%…ä…dæs8œÚ,Q„QÙn8 ™Ýr[|¬8á–¢S›«ã|Xâ£pïÉ’1QH‚+œMÒ´@Z @aB6„[€QˆgéFÇ©+Rr*­£­´uˆŒB½'K2 )ÉgPrª¤w+³±BaB6„[€QÈnQHµ’SL™U2?…„{O–d²çZ‡œl-9µKêîù†ÔÜ7£ºûD`²g¢ûžM³¸µäÔ ,©[³ßmn?…$rµµ6 #d·uP]ÇP²÷µ$§«š\‰­—?ée¾D'ç•ñ·G`ªy#dº,C–ÊøK6~»º÷«è AáYH­î>ż`„¤þÐÑp¡ÖÚ£œ×¦’SÊù+éB%\8̼+¡¢00ÈË«DBôÅĽ¹Ãâ£~¶â6a„ä¾\Ê…¬#9¥ˆ»Ï/Œ@a(5!µÆæêßfŽBÖ‘œ"Bòuò GñƒQÈêN¶îa„$¼ÒÖ4ô‰¬u$§äF–#y;¶‘5&0Ŭ/Tˆ"ŒBêvúëÎFÈ6wèÛÇÛ÷}/ä©w|Ëå­7~ôíß|yyvùì}ÞŸO?þZñêÙ_võêUËËõ§åÆù¹yâí§÷'æþãt£Au8ÏãôŒ¹ñƒQȺ¶úÖ`„d¼RjÚ"É)~DªæK#hnE…Tï÷Wœ ŒF!K6Ú8³n`‘ä2kߪ @ü`²¢{=BS0Bª^kYOŽ’SY¿=y¢£#¸þµæ#$úF›óv2]µ€øÁ(d-ßzvˆãØžvÕz/N, @arï¿Ê4a„ä±"8 Z€µÄF!«8Öã4#dû;ôúz¤rT¨óc¹•,Q„QÈq°|¦0BVº¤Û •£ŽûÞï4sˆŒB–{ÕCµ#¤¾˜`¸®¡9BßìøqÖ|CPý\Šož‹o>ùè«>òÈ+Ÿxøzàåâ[ â*ÜÉá°Û -Q„QÈ¡°p²0B*\^˦å)Yª}Ã*¼Ì¬³ ~0 YèRVFt‡n®«Z+BYªQ*œ³ äØ[¢££a`É|a„,¾˜kkBÈ"å¨Q%(•îªÏ\eg¶¢þSm×8ˆŒB–øÓÖ…Rk00m§%†h)Au’QòÉ ꙋÓN‹ô½m­Å!Š0 9 ¢§ #¤Ö5=/( Y¤e"ÄJ¾+óïJ1ÚŽ+o¢'ÇŠ5Xâ£hgzÌŠ0B…8NBÈ"å(!þà ÏBjðÿëÌ¢£c nÖ0BÖ¹¢+jBÈ"å(‰”²åíóÓóÛíï:Œ­­ŠìÍ©À€øÁ($Γ¶ŒF!Ã(dì«!õ¾H9ªmNFöy¹ü[¾Ò½ê†Ý+Teˆ"ŒB˃ˆ‰Ã©jam>™EÊQ›–ÖaˆŒB"Üè‘«Àa2áVf³H9ªÆYìaˆ"ŒBŽŒtî0Bö¸þ«ê“ÊQU½%Lâ£Ô‡¼<ŒÙí±5u„Š%øŽñˆ€(Â(äàT€¦O„xJA´;¢;äœA @ü`9P†^½,N Ðû[¢£‚!Ü0B ºC¯o¨ÔªÚß8ˆŒB½'K À)pU2djUUòFî1 ˆ"ŒBȆp À©ïÖ~¸¢3œ#µªöp¼•ô ñƒQH¸÷dIF!Åøˆ¥ZUb¢ý·×ÛdŒV-3'Šû÷blÄŽ[¢£²!ÜŒBÊøDÖB­ª6±oŸÄ·Ío0Dý* £s7ª„ñtËXâ£pïÉ’ŒBŠñ‹µª?=¿Ý㥇)ìÕ@¸‘µÛ°YÇ?…„{O–d²sþ½e’SýyÃgóÊšâqúfn}㎠Š0 !Â-À(dãµÙ%§" Çj`vF!áÞ“%…ì…@Î’S¹Xر£ºûD`RŒ·¡äT1oUf…øÁ($‘«­µY!Ùf±.Û‚†š™Ïápj³Dž…ÔêîSÌ‹ñ8‹íÙS›Çâ|r²ÄF!)ülÅmÂÉiip,´-dˆ"ŒB*öø«O FÈöwèõõHå¨ ·ÇB+Yâ£ÕlÝ ÂYéª>n3TŽ:î{¿ßÌ!Š0 ©Ûé¯;;!õÅ ÏásQŽb¶«ýtæ=Cü`²®‡­¾5!™¯–í‡å)I¨E„lÿÞ—Ó#DF!Õûý'#„Qˆã7 „$TŽ"BÊqèâ£Ýëš‚²ñÕŸwB–)G5©®T‚Ä&±Uû«‘áJ½Ö?£S^Y¢R–üTþöå×°DF!GpýkÍF£o²…r”èXåÕÕGà õ\ÿL—ƒ×ÎÅküÕÈO­ážØFæ€øÁ(d-ßzv`„d¾Z¶…,SŽj&'cˆ>ÑiÛ%B-Áwƒ«S ÙÞRìq? @arï¿Ê4a„0 Yr²‚rT‹€‘Ã'Hösç›÷ ñƒQÈ*Žõ8ÀÙüúϽC( Y¤¥\¿Ø}Ñ¿´ÑIóÜüF–%?Õ4ÂGý€(Â(ä8X>S!ŒB†QÈ–ÊQêøB“¢;)¿ûôTiÓ-Q)[~ª~çÉ^Bü`²Ü«ª!\‘K,@å¨%ÖcÝh @ar(,œ,ŒF!ÑËXT¤rÔë±nœ ~0 YèRVFHÜEÌZÚTŽâŰ½ Š0 9–ÌF£í×?{¤–Xâ£%þô€u‰ÏÚŒÆdô:ß¾Ç衲b‰€(Â(ä€$ˆž2Œ×ÇL Ù?…D;ÓcV„}¿|„ŠÑ~*Ð8ÔªŠ¶ðÁ+BarLÄÍFÈÁ—âŽÓ§VÕŽÆ/ºkˆŒBâ<éakÁ ¼_.¹#TŒv4³Æéøqvy©.ÅwÝŸzÇ·<ùè«>òÈ+Ÿxøzàåâ{'âRŽ+Öjˆ"ŒB˃ˆ‰Ã©ue>¯´ªú¯¥·Ù}­ô‹ÝÆ÷ØuþÆÌ-ÃáÍZâ£7zä*0Bfï—Ç.è#Tœ]ÌÑÆY¨UÕ¢¡OíÞ¦y7Ò'Š×à`&øè73ÇŠE… èÜa„ä¸>0¦eZU~EÃþÙ‹Ó"N¡‚H…ÄF!¨=xy!G&¢çí~dÿ>óžW_>{_{"b‡X¿í™×‹W¿zåêÕ«ÖHlÑ©þ¥j¯‹‰~#s­Q„QÈÁ©MFH®k¤òq-Òª•U—ì/ÛР˜H]WÄF!ea!ÑwèG¨íyf³L«ª—qFØì`]¸iËpS+úÍ̱"DF!C¸`„ä¸>0¦…ZU¾ãôަúºŽFF—غº)Bü`î=YRXFÈìýrô‡Ž*¨í|f­*¾ÿqyë}û77g!ÏÞçýùô㯯ž½ñeîYH;,ãóºö‡³ú#t³?ÓýfæX¢£²!Ü0Br\µªð&§š"ÄF!áÞ“%…øílL°úZŸí‘ZU«ÛüP BaB6„[€QH1ž„ZUżU™ â£pïÉ’ŒBЉB2sJNa€(Â(„l·…Ìn¹Tp*=Çh¿²}ÑCeÅâ,ñƒQH¸÷dɘ(¤¸õÃÓ´DF!dC¸…xÜËö1A`”œ" ",ñƒQH¸÷dIF!ëq·*”œÚÍôåw Q„QÙnF!»E!b¡Ž=†cZMrŠ_;/Ÿè ~0 ÷ž,É(]Œk–Û¼ò>¿‚ä”;²æ{XL[E… á`²g¢û>9iÞùð"d¡äT?I"¤·¿Ú@!~0 ÷ž,É(dµUщŠY„,“œ²3dÉôW}B¬öï-§§BÛ°I ¥^SIû’ƒ'˜I+âߣ DF!dC¸…ì…4>Ûxè{@G~j‘äT“¹½K¦ØkÜvYyå3 ':éBýKóD_W)WVTÇÝpŸ?…„{O–d¯Æ+@QÈj’S=0Lrµ‡ŽNÌ_Ì/*R­xlÔDF!dC¸…ì…Èîg7²IN91‡³ D™ ÙÈû/ïâ£pïÉ’ŒB–/Ïø Od-“œêU »ý*ckKÎ` !¾¬Óö0…ŸîŠï7¯ Q„QÙnF!{F!áß Y*9%c†““æÈÜ=NÏq‰—%jÓKŸtmµõ6w†ì¶ÄF!áÞ“%…À«q¯ ”œÚËòuô Q„QÙnF!»E!fdz9²(9U‡+ße?…„{O–d²ËŠŽì”’S‘†cµËKˆ"ŒBȆp 0 É" ¡—£ÒYâ£pïÉ’1QÈì–ËØJ8BÅh/mœèYñP€(Â(„l·…jáq²´@€øÁ($Ü{²$£¿Ø>&ì‘’S8ô]¦Q„QÙnF!»¬è˜N)9c5ÖÏÒ…„{O–d²g²äT —Êò)¬ºj›ŒBèîY€QȪ+i Jp²šäÔÄ£I S7òÛêȰYYˆŒB¹ÚZ›…¸k?\G¨9(Sïj’SéMž…·µDž…ÔêîSÌ FȶW~ͽAYOrJF Mž+3¨Ì‹¶•Gêü\åÙ2¤GtÂxe«HfJÖü®æ87ˆŒBRøÙŠÛ„r„`"zŽÿ½l%9e L‰Ž{©nû©ßÈ€ RuO©´¿+C‰DU+ ™‰…×°DF!{üÕ§#dë™m4€¢¥’S©,ýÚþüÂÌÑ딟V1ÏBBJòýßÖ?…¬îdënFHôú*BžBÈj’SæÛ¬í~„Œ RÉðÅ­šFH/VB…èY³0DF!u;ýug#dÍëúØmAŸÈZ,9¥w¦´Ñån•áà{QôqA*£b˜âE‹Ó?µµùeñƒQȺ¶úÖ`„!˜ˆž#ä ï…,•œêÇeÜa@ÂùU¾î”nO©#yCÆj,:1J¶¥)S]&ë†(Â(¤z¿¿âa„¬sE³Ð•HNçô X<Þ?…¬è^ÐŒè;ô#TŒ^峯)ZrªWÊn§E›Œ @ar׿Öa„ ×-Ë®iJN­iÍ#µñƒQÈZ¾õ íÀ™½_[›G¨x$¿Ä¹–dˆ"ŒBâýW™&âqÑ´‹v*Û÷=TV,Î?…¬âXÓŒâÖL ÐE…Ëg #$ú~ù£]U q(9má#W„øÁ(d¹W=T 0B޼÷;%§öµѽCar(,œ,ŒÀûåáz;BEÈË@_-ìøqvy©.ÅWÖÅWŸ|ôUyä•O<üŠ=ðrñõqA@Ã`áê-ñƒQÈB—z´ê0Bª_o›MJp²Hr*ZKj3[°£Ä€(Â(ähX2_!G&¢çù(Íâ’SÐèY¸ @ü`²ÄŸ°.ŒrNî#…²HrªÏ^uzzw“§êôBåÀ’iß„X†vˆ)'e2¤ªd¦½ÊýZ»„(Â(ä€$ˆž2Œè;ô#T„<‰4È’S½Tëìµb¡™†]]å°ÈIu/(àÈŒ¼½U§OÍŸ…·²ÄF!ÑÎô˜a„luÙ×ß…,•œ2Ó°›ÒR2€˜ÍËkaL ¢ö> °DF!Ç„Aܬa„!˜ˆž#äK „¬ 9å%‡Š'líÛ¡HÔèÑ*ž¦Cïø^…!~0 ‰p£G®#d¯epð~w“œ¢HTWDF!GF:w!G&¢çímf{ÜXrŠ"QÑoe†!~0 A}èÁËÃÉp…dH”œ:ÈbšE…œ Ðôa„ÌÞ/-€#TL±øÙ&-°Ð?…@”…‰ÏòŒ¦]ôRß¾Ç衲b‰€(Â(„`·Œ×ÇL Ù?…„{O–€}¿|„ŠÑ~*Ð8”œŠ¶ðÁ+BaB6„[FÈÁ—âŽÓ§äÔŽÆ/ºkˆŒB½'K2 ñ{†À˜`¡[¾Z¸Hr*úûãÑš†Õ×¶DF!dC¸…¬½XƒÛƒœì#9å|­ÝœéüFï^â£pïÉ’ŒBvŽBt÷"SˆþÝ‹–E’SÑî>ºâî^“°-Q„QÙnF!»9(Sï ’Sb¢}ž+¤½ÿºxÊÕž²£þU:¾-pÞ¥ØRºÙ´v³0;–€øÁ($Ü{²$£ý£í$§ÚÔ‰½Laó›¡åXB¦Æ2âhLõ2V½òT›q(WEO¾¿ Š0 !Â-À(d·å E!kJN©p¤U¿u4k½ÚSª˜- 2<&{f7³ceˆŒB½'K2 Ù? ‘#˜= YSrj !ZH3 'þèIÓd C¹*zò ,Q„QÙnF!»­oèY+HNÍnd µ§lXSmcÆ1}°bk îf`vÌ($ܲd¤`„Dgâ!§}/dÉ)|È×î8ÝØ¹Òzè½ö”jôï "&¶­†rU]X8…D:HV›³Œ—7›œ·Àn’SóC/A¹ª%Ö[¯.Äž…ÌùL¾nYFÈ‚‰è9F¯úÙ7–œŠžˆ¨H¹ª%ÖKT¢ÏBH‰p ÀIt‰³ÙY PrjÖD,àµÄF!áÞ“%ù‰,¿Ï™ èªh²,Q„QÙn8 ‰v¯G¨íV¢Ý#+Ç?…„{O–Œ‰B޳ð8SZ  @aB6„[€QˆÇKlöHÉ©j|ú–øÁ($Ü{²$£-òÒ¾(9µÔ‚®Q„QÙnF!»E!ÐW INA®30Á{`1¨kNcˆŒB½'K2 I³dÃZ…œ,’œŽgl,uf7–аDF!dC¸…ì…è¾gÓ,.’œ‚üx ‹A]G¸FV °ÄF!áÞ“%…¬¿dE dï‹$§L­)•ßJÉ”Ü}.Ò%ê„Ym–]™?QÌÚR˜j¬`=Ñ"d\lÊÈ´¨»4:è!™­ß0DF!dC¸…ì…l$9ÕëBµ ÍBg²2e¦š4%F*F™”×l¤uÿª„Jð>¨2lÄìÚiðð^> ~0 ÷ž,É($ݲoŠBIN©´UZìÖFHçèt ^ n:¯Í9˱*Fà>=pO/[ÃjÞ`,oˆ"ŒBȆp 0 Ù9 ‘ÝÏž…,’œRS4\¶}’Ñ£‹!†YÜ- Ù’SB†ˆÎ3NÔT'HâÁXâ£pïÉ’ŒB×`’bÐ'²JNYjQ·¢ém¸ ¼}¯¥w²T¨á‘œ2bª¦Ð2bŸ.d‘ ß>wG•ÄÌl´±DF!dC¸…ì…Œ}5d8¦E’SFþuÈ›¾ PÌm¨¦œOrÊBˆyàÞ5í6ÒÇÆa¼Ý} @ü`î=Y’QH’›¢Ñ´’S¦àyŠÑ³Í½-Q„QÙnF!»E!fdz9²’JNQ]poŸ¶ˆŒB½'K2 I»t×m’SëÚóP­AaB6„[€QHQÈ¡Ü'»± ~0 ÷ž,…Ìn¹Œ-#TŒv ÑÆ‰î‘eˆ"ŒBȆp ÀQÈ¡'K T`ˆŒB½'K2 ñû‡íc‚À)9UCße E… á`²ËŠŽé”’S1Vcð{…ŒB½'K2 Ù3 ÉTrj{Ÿ7~û¡Û#£ºûD`²›W€œ¬,9µÛ¤}!‰ßˆŒB¹ÚZ›…¸k?\G¨¹(SïÊ’SÐ@S&B[X $üçÎ;ïäYH­î>ż`„$¾ÚÔ<„E’S¦î~wåžœ¿{E©Ó‹æ÷ÓS‘ˆ±QådòD#V›mk¨C5ݵLŽE„$¾êeò×$’ÂÏVÜ&Œ#Ñs Y¥ºŒìe#É)^±×öÐzQR d(0Õ=Õ€¢­ß$Zì~q²¸k¹*G‡Ê‡ÞJ–Èd<, 7²fc"¤b_Ÿhj0B€+—E'-E!‹$§<~ÜVéjCy]¿™Ä×Çmá2¬5ÖŽ&§S‹×L !‰¼'›å'²üëuË(DŽ ­äÔh(àÓ’ AˆŽNtù„L×Jà@Ù$B_ŸÎŒBvó0Ð'²JNiÙsåÀ]¹§†%–6T B ½‘Ñ(ÄÙ3ZÖƒ¹{(n¸ÛÛRaÇDH:Ê–a„Dß¡¡"ä~ ï…,“œêϽ›sñ¡~” #Æ6—¼ûWúp¤­¥š<<ïºîµ«<µ ²p˜L„8goòO}F³"µŒ°‹–¥V¶@ZÉ©•Ëæò²€…81ÏØ‰Ô²<Œ#ÑsLç9’JN¥6[ÎÁÃ,Mç3ZD‘€ZFHKâ˜c äÔ1ß÷å³öž…˜ûWÜÈBý&Ëk À‰¾C?BÅå«-Ы[€Çéôøé,@„xl4íV_ülXn"$eË0B–_Ðl ¶´BGŸÎ0B¢ïÐë«H¨-ý ûж’βe!Ñ×qe)UÙZñtB&¾„ä¼Ä4‹¤d!õÒw@_ôëøqvy©.ÅÈÅŸ|ôUyä•O<üŠ=ðrñeñfTì›8µ", ¨=˜ìò¡/l!$üV…%iZ b 4:_9œÍòËÇ´@"î§8HZ€ØÆ¦CܦGöR¢z„¡œ5-@ д@´ˆ@4ÚʬH д@•àYHÅÚœ-@ Ði-`!¤JHrR´-@ Љ,@„p#‹ hZ ÒDH¤á!ÍÒ´-PVEÈ“÷¿ö5÷?õ»©òyÍÉÉ½ï µòô¨Îï‘Ú o8O=ìÒÚo,ó_ÿؽêU]c Í3=>øÈ½÷?åØS½jt‘ƒ8Z€ÈÌYÒOÉ(dÄÏö·®mÆ Ýó±ËÔ<Úºr›Hú£¾°¾ñïo«ßpÞnOµýô÷ÈÎ]°ö•äŸÝ“Vu]ÒÝ™1£«fÜ+:ï&¢ÆÒ Õ3xEÐA_Ú†wZ3»†ÃÆ›g&Â#ùŽ˜ïËð=2žq!ꋽÌ2ÂPÝ>¡˜]Œ–z—ºá™ÙÊä°i",0ŽÞ§ô®Öö&Íóò.ØØ\Rޝ¿ÏUí =ÚàW÷hÝkÑ«÷h·xÏc$óšêƒ'û7ÆêQÇ1Ã¡Ž»cg¨¦ëoˆe£W¹fgâ¾ÆG"A+›5I y¯ý8`ƶû¼Û•NЏ 9HZ€ØÒcñØOº[I³–wsÚ·ö¼wQ:2ZžÐ'!ê¿«®îñ}”‰îô1p;Tsì$_¾ú°ÉØsÓÕPI½ÍSÝøûZv#Å„t‘Ÿ3*çåqZ€±€!c‡Ìö­.ŠÇM!DºNÛ;·Eˆ•åÁ;¼æþÇä!¼c…1„ÌÕµf7TkR­Ï-)Ï åîü16}ÎÑsÈm$x#ËoºŠŒBè;hZ`ÜÞOdÙ»ðúר´Ñ.ÞÝÈêY„Ûod9'Þ¾¬î(â êÃ`ƒýÿYH·¥ÖyC«ºpâí¨„Ûu·õ½iÑeΟéâƒ'ï÷öÕØGÕ D·¹7ÜÈ|À·‘õÔƒ÷t±uß4¨¦fm¬…§bÎó,dË=öE g!æg=åɶùñY÷SOý&Œs Ý¡«3vç8}xÀ®œðòm§÷ëÎr½{8Æ¡wC ûðÆÞ³ô#Ä<ßö Õþœë ¯~ËKÝÈËI5óº÷p›WöqºÙÝà8½û ‹hªÿ V÷c[LoÙé±ù·õHwÙ8Âá'²ø!Z€˜²Àª_-ô;k·`øÕŒ¸µ+•Ñøwpí÷.ß™r§‚ ¢,!ò.xõïîßN²K¤³« !üvú–Wû¢Ê´@R„0¤hZ€¨ÙDHÍïnd,UæÝ'K ÐÛ[€Úé%ÊsÌ´-@ da ß2 ¡hZ€ˆ´i¸íFöH д@n8I««ËÖiZ€ êµÀÿyÜ„+¬-¨IEND®B`‚PKj“K2tW ·· layout-cachep³P P $P 5F ŒF ,P <P fP ’0P ¶WP æbP P BP jP ¤P ÁP âP  PKj“K2 content.xmlí}írÛÈ•èÿûXmmJJ(ФDQòÄNɶ<Ö\¨,y&S©Tª 4IŒ@€@ÉÊÖVåöïîŸûhy’{>º ’ J²ì&F÷éÓ§ÏwŸþ㟾Œ=ëV†‘øÏwÚÍÖŽ%};p\ø|çóõ›ý“?½ø?ü·×_]ÿzynƒkËgN`OÇÒ÷íÀá_ëòóËw¯¬ýƒƒé¤fÍ ¼¾~mñï×ê+ Æ988ÿ°cípM'vv^üqQç£=ã·ÏwFqãzºsMOüVå Ó+´F —¨LÏîXFHpÖ'èÉ_4«™f93šÅxÈÝmoª{mÙÈÑE«F>Èa/ꑘÆ{ìÚûÔ…á;ô¿3˽µÍP Bcú«Iì1Œ]@?¸sdÍÇ®ov,jüLxîáX„C×¾Ô˜«hžå‚Ê€7û‹!á÷û  Cˆ_…ÒÛŸyÝé÷~¿6h/´“õA;Ë_¹}[z^d@‰á°ž×j¶O: <ï!ð—}Obz×jõðžëXÿÞ¢ÿ¤[†îpMýÀ—éÇq0)ö}?ˆH—´]{ªFF…°užæBÍ>¬~QâEšn—s¤9¡†bbx<@ë‡~ìóWo¥@D,@±ý;ÉsÍÏÉÈ ~±/"Wø‹_ÛÁxâÉ/ºôŠêí¾âå6”(%¿M£ØÜïG€x8ÕCx‘\sÔPדÕœûÅÌ–&•+t+ÅPñ‰>øD#÷ð°ÝB“eåä±±ž:R3ô­ÁË¢¯œ´Ž¾nÒ"¾Jq³ß—`¨J„¸Îü»›Ìÿ;["«“ƒý86|Læè~ƒÈÉ >Nk9ñýF &¬yÀÑ€±¢Õú|§™š\jˆƒy0 bàøk`²Å´·Ét®bá;"tÖ çâ<DKy}ƒÂ:ÏXQK™ƒ¤Þ.úx1WãÏÍ{ÕAqÔ>êšÝÙ™d°”ÿ:…j°†¢ÓzL)L 󋽯7Ræ–M±,ëoo¤Vˆ4sv£lƒwí¯c=6ÒµVÏ>O$â,ÙÅ¡ícž¨ÇÚèHK­#˨W®ïÀDg†GoÐ~æõººU{#åjɯƒÇmÏo#å©Âù}+t²‘ ¶z+Ö(6(.§.DñQbƒâÒsÛ[ÁŒçúr¤L–v·õëÌüÔÔ‡˜yk­™w¶¯·ÎEÿžÊÔËé³ 9JwG)ë–4Ý\X¿Ú-§?¹™“=$ì›aL}#eAø|çßå1þŸ7Õƒ½tPÆuÔ©\Á}äíÿ8ܺÝnw×ÔAïåc¿Õ$[Ú¦ÚÙ©Üá;¿:'‡_ßþ9é¶¿žýSÎxX¸zOON¯AÚ•Ûó¤Ý:é}}¤}xúõˆ†Ãr6ÒBÒ>©ÆA¨‘¢³;ò7ÇÊÅÆ¶z±3 ¯E ‚:0±´‹‡õkn#pQõ"åæKUÎέ÷Óƒ,Ò–O§õú=Ìú•3ú®_»U/àÃ,àc‡í*Y$BÁ¼r‡Âü¯z9ÁuX·ñÂcA6rm¨Ô¼ÜÜÄ¢(>Z†âÜ— ŠÖJC9¬Šƒ>ktQзUÓ¹8ìsæ} رE†e¬bˆL²‹Úêj;ÔÁ·ZÍЊ#hδ^AÅÇš35‹Û‡½ìõzÎÄ)Œ“í‘æ0g.Åõ&tZš çð2Ïב—iÀóÚmaÐág'éåÚÑö£n²pŠ·øËÞþ$ˆp”`Œf;³oCé©JÕ›Qºÿ€9e¾Du0§úxFÞŽÝ0D5š4Dªí¹“ç;¡´ã]Ò€¬¹ÿÝÛ±œPÜ=ó¦c×>ê;¨?Ñ3Æ E§…ÒIý†Rú©ß}ošþ~(Æc|ßt:>¨\€ˆ®¹VZ½LÊ´Ú÷ð›qàH2HX·.¼ÂW0ñ¹5Žà! ¿ä¢nt:öu¹?ølJZäNêÙP˜¬Á"†n‹”9“nˆMxòVzŠèúSÏ“±Å/ñ9á“~¦©ò%7»º³1äëOÇûÑt0p¿à5áüw¨îÿ×?ÿ_SÃ1#¢ܹN&O{O Gƒ‰®9²ÿd0Ñ}LôNzGO ǃ‰Ó>ñd0Ñ{ L´›í“v÷‰aâäq0qÛã‰aâôq0Ñ5g‹Ÿ &Ú­ÇAE¯×y –™z]DñìÔŠg­xÖŠg­xÖŠg­xÖŠg­xÖŠg­x>„âyX+žµâY+žµâY+žµâY+žµâY+žµâùŠçQ­xÖŠg­xÖŠg­xÖŠg­xÖŠg­xÖŠçC(žÝ…Š'Ì¿/ÕŠçj†×Þ.Ç_òp€ÉÜx&j#Ís1à5¦“§\nc:%´Ë g›§@>Äl×Ð +œmž’ø³]CK¬p¶yŠàCÌv M°ÂÙæ){1Û5´½ g›§Ðm¶kitÎ6Oi{ˆÙ®¡µU8Û<Åì!f»†fVáls•¯‡˜îÚ×ê鮩`?¦‚¥{a¼+èTî­µÖUk]µÖUk]µÖUk]µÖUk]_½ÖÕ{bZWîÕ0µÖUk]µÖUk]µÖUk]µÖUk]_½ÖuRg±ÕYlu[ÅVg±m„‰:‹­Îb«³Øa¢Îb«³Ø(ž§u[íÙ«={µg¯öìÕž½Ú³W{öjÏ^µž=˜tíÚ«]{µk¯víÕ®½ÚµW»öj×^íÚ«]{àÚk/¾…¤öíÕ¾½Ú·Wûöjß^íÛ{¸ÙÖ¾½Ú·÷mùöïºÿþ~|{‹§:¯|?5KµRß^qL€bvøÄ0Q©o¯8&º'§'O •úöŠc¢wrüÔlöJ}{Å1qzÒyj~œJ}{E1Š`ï´ýÄ0Q©o¯8&{ݧæï­Ô·WÝshW*õíGEïøäCëjž‹ïÛÈ÷íÍ#g¯ðÜNíÌ{ÈÙÖμڙW;ójg^íÌË×Ójg^íÌÛ†3¯¾I¢NÔ«õêD½:Qï 8óêD½:Q¯NÔ«õ¾‹D½u¯’(ãÌ;|μíÀ_{ïjï]í½«½wµ÷®öÞÕÞ»G˜î£zïßQ{ïÁ*¯½wµ÷®öÞÕÞ»Ú{W{ïjï]í½û†½wëÞ˜QÆûUßAV;ójg^%³­yµ3¯væÕμڙWVߪޙ·ø:ŒêUªú‚±Z¥ªUªZ¥ªUªZ¥ªUªZ¥úFUªu/z(¨R‰Õžêøf߬ã›u|³ŽoÖñÍ:¾YÇ7ëøæöã›ÅX”ÔsœqOát£õµ3®vÆÕθÚW;ãjg\íŒûÆqÅ73Ô‡ÁH¯yµ3¯væÕμڙW;ójg^íÌû†y‹o¬¨>³î¸væ=älkg^íÌ«yµ3¯væ•ÔÓjg^íÌ[C¥Z|CíÌ{#½væÕμڙW;ójg^íÌ«yµ3ïvæ=Þõõ³yZF§õÔ.S|”ëgÛÍÖQë©qG¹~øèqë©irýl§Ù:i=5Ùú(×ÏvšÇ­ÖS»’øQ®Ÿ=l¶;OÎ.{”ëg›ÇGOrýìQ³}üÔ„èãÜ>{Ô<~0»l]ÅsKV<ìaâü€qiPŸL0¸ò™¹PÊyö³­O.Ô'ê“ U8óòš…“Z¥ªUªZ¥ªUªZ¥ªUªZ¥ªUª¯U¥:J[>Ó8È\›_D/þ¨^ôç^á)’ŸJ s¤íEyFÇ&ž¸ß¦±çúr_¡PcqwáyÓ(aÈÀGÈKuv-úž,ß üYº“ס¸ŠHck4xæŽÅPZôgš !h›ô”ÿŠÉȵµ²'`•ƒp?¾ŸÀ» ô}ŽOÔRs¢ÑíðÙ¤¡ã¶N`ÇG÷˜µ{zÔî%-u›ÝîéIòx$Ýᨵ×<éœ*Õ€ ûǾë;ò Íý àâæÙ(”ƒç;ÿ~éÚñ4”ÑA»•úO§}Ìÿ¾iöÚoz''Í àH}Ëó‰ÜñQ=‹FÁÝó sqô#]‹Zþ»@8f¥&óóö×ÛàΊë—Ð¥%¬‰7º¾ÛÊú齌e¨–g²¤—ÎÒ1ê·Åß®xûâl G¿wo¤u·2lX—¸˜Ö;×/ôí 0>É[7Žda}€HtZ­n1È^“û7u||$KÃt´ìí[)”>mÓ(FF¸ öíÀ¥Ïs%íX›´ {bø)ç;q8•ó,Õ Ö+î)2U>gÇØ‚ihKþx†7¶M¹ubû±÷±„­[y:=˜¥¦¶ób…Ò¼þÿ ïgF4G¼`ÚÙIpwöHL€òÃ=ÈirŸ‹>HÙ`¢ôfD5ZUð`öÐ5¼š;y¤˜½5+&^=yÎwž<ÿ„AÏáwž<‡†AÏÑwž<ˆAO÷»GOžËÄ çø»GOžÅ §÷Ý£'Ï)cÐsòÝ£'Ï‹cÐsúÝ£'×í“è…­oA š±fŸ$åJ©àËíŒEÅßPË×(̱oŠ[“ófÁ« „êK¹6`5œ’ÇûT~ ZŠƒ‡l8èý h‹ ëg7š ÏýÇ|WEŒH芼>ïÜ&8ßÇI±>.`mKv¡gôj Ÿ-‚*Ú°¯÷↑s-£ø¥¾uÉþ˜7èçá½Ý*Öõ˩둜¿|í£|a:ΧûÅ^à ?-á YjÒ_ÏÕ] ÏU¯ˆÛ “ à[}ƒ–ywÊÒQ.A¸~ô­q›+ÁŠ>ì2Ûè_iXÓH†‘5·Ò²dCÀu5Á߉IýY2at[N`Oǰ2ä.¶ÜÈ>[ÖAÆ-|ÇòƒØº•á=ö;˜zMë‡ç–ÚbÄæXÜHË- ãC‡ˆMÓ}Ô°.à—í:B óì’&!'ûýû}ü׊§qºFøe$}øÁ ðˆC¹7²a$Ìα¢` ã:0¬%úõÝH@ðV÷dE£`ê9€˜@³ÚOV¡ý%E¬;i9.à×õ¨ôˆ0]F±cyèJƒ×‘¸§ió.U$çF>·‹-_Ú2ŠDèz÷ˆÂû†Èc¢ÄâÚÞ¹ñÈŠàqsº—–Vè7q+,ù°ì¢¼i] 7Œ`)¾Àf#oیʷîaz¦±ë¹ñ=:~¥õöúúÒ6ÂdyÁ0"˜)K+D{b¦ðç÷ï,ºIÄØ«™R(…³Ñ³mÀ` Òˆ;ÆN…‡sã/Ô 44Mëý½š v5¿O©ÄûìµßºÐ{$pBa§ oï‚#à@XÍç×8‰ß@t2QK©(äN5†iAä?€!ˆh'à8¥ m¤©8<Þ%ð"dÌâ×8“ôYÑÔ¾¡mì >µÆS{Ô´> ü˜w/tpc!…š%M}'ðœÀóp±qay@…f$„¢aÑs;˜âJÆ@ë•ýj2ˆôFT ¡6,7’¹Á2æXÉ:àò +¾ƒ‘¤¼!J¶G-ÕÖ=”0wLã>f-Ñ« î¼³'غ ÄÄrB÷–W?šöÇnó<ûf¥èçŠLÄÑ 4@2 ‚ñ‰•õ%ásLßSgÊ®ÐíO±Ë‰ˆaHbF?‰ÆÂúéêúu ²ÜHC’™ˆ(Ê è ć ,ù(ðèþж4ö ߦ‚ Û—:I6¢¦ï†uÍÃtAønð¤ÐHFÜôCT(€€q¢#XèÈŒcÁ®Öœ½[°€í:@J¸[ #ÔH·,r”(@ §ËÊT¢ì8—hK|ôIòš„îX€4Â#>æÈÈú‰šÃ¼%#Öî“}Á»‚Hv¯¤mýûDÏÕBv …ì°<‰\Ð…š– ‚¼¸êÑü¥ÚäÀ¥Ÿ}I{a"}íþGÙ‡¢ X@@M&2Ào“p›¨X¹Äq=éÓʺ¡’ϨZs^òÉÄsmö)P.x™QªíÂê¯ B"ÌÝ1Y”¹$:\ņ¢uØÀÒàL1ŽDæÝ BŽç¤bJ ÓFM(BL°Œ«Vù—‘ë)w£” àÁHæ@³€!g:D–/(’dÄ7ÁŸP;ãkL’á €›¤‘Ñ.ÜȤP:«(¸Ùú¶™l&ŸA1ìOéÐ""ÿg‰aPÕÆX­qÀƆÍ"D-½ã²b6•‰Tëff¸·€Všqƒµ‡Ë4aޤ7i0Ä"FSäëyÈþh‡'+°0W(ÌE¸"jœÒF‹YŽ…˜ÐÈ[’á•â Š Qé ‡ÂÃÒ±ú÷,fl”òHƒ©OŒI°frXƒÿwPy‰Þ™‰¾kÙÀÞûh8Žq:šÄ(±`åtç´,¸¼@£,ÐÕgH¸¡Ã™Íú‹äåƒu²1¤ëÈX¸‰Ñ~Ö^³Ðê-šh×,uÆ)íæ·qv;FHO–´=wÉó0vmO2¤Þ%† TÀQIµ åä0 ÆÒR‚ÖéS¤ž ´o¨ÑP3 ¼žƒßXïó\*a(«àÊŽ93äD<Éü}Ì šïá]örG`ãeÃÁfèÃRþëŸÿMúˆ ! Óì Vi›ÑØ'™Þ(§šh`#^|ÌÊ“Rí€Nµ¢¯s¦°¯Y?éAÎ$‹Î¼³ÖÌAA¶ÑÔ"È AË“ ÷$d,™ÁZÀÃP0 ¨+†7—cÑãjGòÜþü*£áå¢þˆ •¬òO3„WzäôÂÌn£PÈŽ¬X†`}#a™UÁ…vÐê“ÅG$oÂMÙÆO€+ûqU@QˆPLAÑfQ/¼¥ª±¾ÿóØK!:CÓMMéCô> Ñ,Í£ò 47Û¹¹À-÷ªµ»`ÔEY· ¬Ê­j5ÈUôeâ ŸT'µšÈk´özZ¨Mò^úÁ]TÚaƒJ ûû Œýó“€¶8iêÕQù²Å•…ºi"Éz/èƒ^€éƒVjÜBjgwåô¯B{]Þ¸<Þyah;Ên ?ð÷õ&Ø& ´ƒžn¥Z“êÖ8ÎqE`aB\ ø[Ævs­¬ #° „Îð ҫΪˆíMICk…[€Ž Ã@_ ù„ú¨œÛ±e{fTlò ¸Œ=õýŽSšSf6¥Ó£’ƒA5®~õAÝ¡ÂQLZ³d "¥G[ÉcRÆ–^Òª†Åc|~!‹5+òÅ$±‰ù^^Ò˪ºÄó’ä±q§Á®d;¸Õp™Æ°p¿ácÄ}•RÑ„â¸Tèªñuƒ¹ª Ð"êY·Kõ+b¤ÙœvÜéÕqÊ8Q›*šN&héWÈñW³¼_Àx!mô4<ž L&”ÅÀÊáM±ßK5ĺ<øh-܃ýOÔÊîŠÚ „cü²Ø½¿2¬†*z¸O Œ{'ûUKñ…UãR£ŠwŽíôí•c;"}I=qåÆo+ƒÃwÜÕ8€FU è9bõb¿{}vYõj…ë­˜Ub ­ŸdüSZ¿Ö2 ¿òÐ׉®O#C(ì¤_Ð(éA#œF‹{ EÆSò-÷Ñ 5~2vIXKG¤KÎtV/¸óÓ³½€)ÊpL*Áµ§^ŒnIåN馨 Œ¾èÃx»ìcŠö₦}ïä2]S~¬åxdËÚúqÊÛ“+Î=r S‚ ê¨\ítJË”3Ü¿WF{Bï HD‘iƒfBŸCN0FdÝSk<†±©;Á>PéNÜ#qÎö†8Ä °­È²/É î(êGä9õ•ŸÇ3|Õ‹ôoÝ0ðqš)_2¹<#ÉáG‚•åö¥ö 0œìÅ'?~¾ÀH2)‘{2šÆ`êq[(|Ô^MlŸî¼ÀÑÈÈ€y¨9 ¬qèÚHòzÇ8lã*Zzñ³Ì$a 0¸”‰+†xסй¥Òöª`”cÀ¸qS4Ø ñŠôê„Øx‰EŸ†`îµêŸæóðpǪ%ƒ6Ä0âëL#Ȱ_(š «ŸvÈ*F“AÂnBz†#EÜ’xQ0Žö ­Õ /.¬Õ™5„Ý$ÕÈ `‰™ ŽMU†.%ždì@ãxV’N Q½_1‡M^äÈZêÃ3mB¯ÿ)p;Üè»8 ¼À½ ¢´dŒé›|Ê_§’öÖûðÚlêƒÝÍÒ•±%)’Cn1ã>)Ô˜•»í2Œ·1¹R¼f$ǼÅA$Å G,J¨¡œ%~öm°ù•Ô%x "»cø÷jÿDÖO@Ò£Œ"úVõ£uC×Wê~¯÷ªâ*Ÿû¾NõšyÉ(n¬é$-™IüSWi¥—Áºu…%”s—‚̃ÈtËH²Q>xñN‚G»†Ø!cм¼´’$AN.°ç)›±`Õ×,6ð®øÕm…+ÊhѾWÄCO½-PÉsTª ©”Lâ]Æ`åE%À±q¥lƒc2~IcìbÂús/Ã+´èR1«ÍÓ6R +«íj‚}ê´ g(L†…„L¤´tžG蓸‘×ø ï 3LÍèsÄj¬R3b“‹NÊa²€zϱÜNV˜r9\L}|ÁdçØ…uÐ;,²AÔKJ¶¤TƦêŸUëwÜxÛoQòbžo¢.˜æ»{Šý>+Ë®6n´±}˜:®®Ž¬ZHø·È'o×Qó_"ØrG5ÞÚ„Ë$É’ÿܰ/45a[ñ*îḃ·•z°·÷C¹Žóök™.K|Š4Þ‡ÿ>GjoÚ$Á4ÓÝRpAÇMØo»³[·²N¯H¨¢Wìzn¤ºùáã§ë·¥»E@/Æ S(X³ã¼:ÿp}þiãòHÿ¿ŠõUX#VƒhÐLõÁ7৪¤Åš" ¥¯bÓ¾çÚÌ+l²–§¡ÜM+#ÒÛ’^ü3BÒMW b5šbòj¤\$¢¡; &S:IöR›IóQ»¡NŽÌ(âJ;«$ ŽSýL룀 À4_ÐØRƵ°4zaj:ç,ʶ"¼6–KÝõHgé6¾ I’nþÖœ£ ¯ØN_ÐÝ4’oéxjÔ„5º‚Aï.ôÚƒñ’m¤û³èexRø»ŸäP~9ÿBŽŽ l~¾:{~öúüÓUA~¹Š—sŸá߆»}ãJÏA0®áÍ®bdR³|:ÿñüÏåÆÖgz7þúüý廳ëór8r À2Ü€×çoÎ>¿».7þ¿pi¾M`xvýêíß>|~_– ÅfTðæÃÙû’«°JÇkINhín$9ÁÈv÷)Ö—eƒKÊ*rRðIa!…q”9ÑŽ-¨!Ò^ÍX[e^0$Ë*DÏHddÛ~Ó¡–E³ŽÈM:àîÕR<³=Æ3/¶ Ìñ!Þ¦©^܆=ŠèÅKU6 ®¥»«WPÄö ‰Øì¢ÚÞ :–ÈS4#Q– É4ól¡lk¤µ!¹WßhO}yþ©1ÇŸ‡Š;–ÀìJŠràq7 ò,E;¯çM í¬,i`ÓÎ hOn:ó­n ú?±ÌÙÍÈžòØþØMi8÷­ô—ݬ"Sñ(¯™ùýŒÕüw3 K5ÄXÈÊ…oהʽµ¤òÉR9ãM'§Kšg-•3ÙH l ÊLÖÛÒ¤[Ì9íú†G’#rø²´^é~]Æå³Þf!é t’´Zú¡˜…ø^‘Ò9]ÉKiç´«Êù6‡UIó×sZÃìë‚þ·Cͯ™­T¿*÷ÅDC2Ù/nd2éTØ#”SÌ Hï*¦¶‚>&¼s¶Ï#tèÍOw8f‰Ä-lÐç¶ÇrL)qi͘å¡¿v¦ëÕ:ðÊž;ÇýŠdR«xò"®¿:¢8iŴá§J‰*Îñ ×·®0HÇù|ˆG'0u<ô×wAˆç;é42í*áÀy9 ÈéN*8ˆ(~o&¶ƒžˆ1ÌIÖôÞeó‚) NÀz5–²HÍR-ÙÜEœ³¥Ýv*ïL©†Ìç6†âYiSG Fë«FUoôaq˜ÑÆÇîÄ}¹k'I¨Ÿ³ 8Uªd«,8m,&[àIÜQp'sJÙ¬•Ù˜[N«@*ãêdÙ39–êù“ÎðT­!1gA_Éá<äªÒp›Ö¯jõè<¬gÛ¥ªa T±8å߬úg>Ì)î–ªCF‡ a}°H%Þ*<[p±¢N_yR„XXðA}`‡+îaè䥼êüRëú¼bæÈFCq9*È‘•$ü@:±x e*g„GI`¥X åugr¥ñ¸&ñÌl*5ŸÁ'úS^]Í¢µc:ÂãÂJA³èd½Qé¼›½Â'­8cñ~"D¼B… ‘†-uÎÇTmžÈ0¤£DÃJHafH8c* O«ê|:qtçiŒ°nkc¾€/4±+ž± Ô,Ï(LXlEM±—d‚y òÕ[ôÂW;QPÖ4;,î)RS—ñ9*X^ƒÂv‹ù(t® ÕtÖ̵ù€ËBL(Ç`ór²îZÛ°tFeˆkᤪ7À@KdYÝq @MoÏ¥kâE)¿ÿ}‘îáûÎÜ÷hÔÿâb2€TŸt)0ôx˜ßc‘">øùQîç‹sÎVõ×Íí¯ˆ¿>žûó0Õ¢Y:Á ûïlw’ ÇÁõþìâƒuyöáü]ÁžNs{bða÷„Xí=YçãI|¯òÛÚ­†…ÿíâ?…gW¨615œ'ã^ Ï&ß¡+>z§hÃy’í1v¯dŒ Õäæ ÁM—E…À| *%÷«%¾¸ì2áVŠé~žäqøŸ(ÕŒ{ä?yYøy¢kÏï 0‰òó˜¿ÿhîî5¬M³ÞhÔù½´|Ô ä|õñsÁ¼>¸è&kÏï2Eg*åyŒÇ9Y¬êbI3æëòæ7Ÿ!ó¼<Ë™iOg$ÎÞZ>X‚ørëÚÉA…ü«ÝPIdv"ñQ,W;üÀ>—ähËh•™éX¯åDóR5é4¨Ò”ç”Ê»ÎtÍDÐmÐ¥,R'®õa áƒ}6­ÿ+åÄ£³Šk,jI€Rµ+¬ó\YÉŒk:? ¸SG|´žA䝯 Tô[ýMM©}C©­Êôž†duü,ºí;jZçXÅ+ó0}Èhâ~‘^”•œ»)§ @A~j?0ƒF7î„ JGÖ)íºv»‰…×¥| ý yýf¸Uµ4¶Å\tTF,Û‹·"[BY+|ŠÛ!/†BܼKå·k©n+Öíðx‘ê¦5WÆo6ψ‹ìÌã<Ýî°¨êsœ§ÇeÙuVcÇyúÝŒHä=ÿóFpíFÃKt}«÷Gìòë$Ç+ÕGóÝÇ_Î?¿n€ „Mª®˜¾W¿ÞàÏ‚²õ8OaÌrô³p—½"öÍ0 ¦¾³ËéÇÅRgpˆ|Á§Â„ÉHE»›sJ„³˜ËË7RzY¦b‚9"”¼'™­ý,>— åŠ0š¿ÏóÃAçrÚ6d¹†‡¾—Ž…·ÿÆvOη*mv=¶–yÆî+áÙ˜„»¿ûû4ˆHÏO bÞ¸¼‚<î^v ªòýW°‰fÙÌìo6[7…´p¬½˜ÂÞyÔþs&2'?Óqc¦‹Œ> ªÅ[¹06­»n•‘c½5¶ÆJ“WìóEq&´ÄÀl†r"\ ½uÞ”¬PJ¿#7Ð!nÆ# žR½Üˆò±Pã?Rb¶eòh—E” ŠoÕ=c®ïÀ.F/W(†º&/ÆÙCåY:VtÏïØá«Jøj­W‰rjÞÃë`†äáK¶õB5¢i%ÏÑev¦  õiG™‚|ô厱2°Hå:¦Ô\*cÛ×øDî*m¤ë=šmª\lm¦Ùøß§£5¿}"˜‡xKJ)ÁBWÞjSE$gÅS«lrngJ)éÛ¹è¨ØT%Q§C†2'RQä…)ØÕÇ\  “'6tø2¨… 5­÷\Þi®ºSæáMF0_ªJ·Ev¹²qH÷ìR±KËÈMŽs*Ÿ±¶lcZÒ£‘3i˜Ã(@Êh]lyUÐÑÚÂ`‹{ˆ )¿Ÿ©ªNÖ$yŠtP•ü¸ é$Ž‹®6dŒ7‡.YÌ&@ÓQÜÔ½ü|R„ œ´®åMLWa`»iì ºr„ÕFt—`íV¦Ì"8¸µÑ8fR›Š¾q£à—|Á‚On*åø‰Ò¯¶ÇOI0‚Îe `Æžyº»±É4ûÛ®Óô¿–ßy¶·JÙudâié¼¾9bsɘ_€&“r®zÊq­1´–‘JŸVùI>ָ£(˜Œ "y¨›ÌÔ…té!Ë>©do¸¾ÜŒïÆn°<“¹f…Î)ø÷TMÌß<äµÖ†¼´Ò’‡~^¶B™ñfî€K]ÉwêRH+ž%ÞC& ým|“M+§¾¸RA…eóíà*?²¸Ã'x–HòѾQ.R™Ðnœ´ÒõB“)d ’V´÷Õ^7ÝZyë²jn*ôR²x‘ÿ©ŒÌÉïºp—ò‘Y-^§x'hw³ÞÀÄ<èz¤¥žIuO’q-ÎØql* €íŒ².IÎYV©”9ùŒÀr€ÒÛË ¬ß¦s©m2‹t|õ¼Bm^¬¯,Üzn”Ú{ÄÍ3‹G©÷”'¼»y _£ {Û7X©ïÇŽb“ ‘I€ ‹IµüHš®‰Ûàù8Ö4Ü8¹ ”×ÅiÌÚ ¬±¬àt#UÑV—&-ø¢l‹RC<¬7*âY_Zùå¿<ì-<éöŠ)UCo(%ݤ‹êø"ýÎF)Ôw9+^þSê’‹{ã ×w´¢épˆf”>3‰ 7€©ÀOu ïô}Þ©²´íÜB¥"QÝj%¡Ì}lF Õ·½âíÅx)p’>ݰÊ}Ø5àÕQÎ(šŽM| Ó)Pîáß÷Ö@Œ]Ïar ”»8»¼ ¯ßÿüÊÚ}OZîÏ. ()_¾§n\Æ«´± lêþ¶âFó֋Â3´@¹éªè-‘&ó±èü¨8Ãó˜¦d9«/’1­}ÉP{Åþ“yé„× *PS19¾A‚¯ˆVÇ~·Ié±kKuôƒˆÁ[˜H'b@'bãä ó”ÎÙ–)ÿv”²Ê“ |ðÎUÚOº¦U¬¾:DwúFé¦;Uº¿#™ÎtX ÊDhµ}^GôL $Ö,ñ<×­é±hšËFÍ€5,Åì.e]ÄÈaë$û¨OM;wÇ›"ð¤$g&Hz*/cܰÊaò ÄzQNð=‰Ù%°Cl¬íha‹î¬ò„­ŸÒñe7w‹á• SSªfrÚ OÁ›yuðØéR#'ø謤†PtU¾H»ßµ;2“ E6Íüô‡„ ¤«Cü³°é®2ÉéßJ›RaÀ¿O,J ÃL°1˜ ÓP]¨„%J´—Cu˜-Æ.ú|(À¦oH¶<%]'ÇþŠLP4Vþxr´>#&¯]q[Œÿ{îUo¡>ÉÞdq'.Ä´—âÎÚCÄüq×ç(ž¹œ]ç¹ñ¤Í K i‚©‚ŸÐKR»|™ÆÚ°Öäð%Š-å}‹LäƒîÀu“ø{!–´ 7'˜¢›uD{TƒøÁÞL0¿Y,÷fyãE0¨ó,tvJGp3Cóq×ÅÏ[?X÷œqýáÅ|ó9ý¶ñô)öù÷6â þÚÛU¨Û·ô_¿·ZÍNþ)š#¿h !¦`PÚíîL.~Ù~Ǧßý¢Ž”ü½Ý º‚?*†¹²ã¦ xUÅ[þ§IGi>vw¦­?¨H÷¨ôêF«Ì\ KëßVŒµKÌÖø3¯,ß 53 +ZH=© ò_·y«‘3‡²g4ò+êƒXJi€§–NH+3#dA¨ê±>Þ€Jñ8µÊ$â•LÙ^ ñ\•{HÕ›éKô\áŸåFZ#MoQ/˜æÆ&ú¿=µT’ß ?ÐÿXIþ4fbbþÛx|·`þÛ"v€£KÙl_„xÌ/ŒËtÊUk-èô·ç è—2Äõ½ ÐEÐjžJH™Û¨Ò¬Bÿêwñ˜qn+ý[,‘ÊtÉØRË5Oý{‘ó‚{s*óZ§­ÿ°&¨¾”ÝdÈÒZmz?T< O:±f–~ZnûÍa&³1^TKV³Û­¼óÃ.v¼¹>šêWÙîlšÃBòDêÖa«Ñ©rÁüjïḰNV‰qË3FCæè‰¦""†Ô»Û%u2¶Hé<-ûaõDÙ#Êâ&RµDYbÜrDÙ)éóÚôۢѭ£ÖRc^ã‘e•¯ÖPy=¾Cw:ê<\$7ã„z÷Öß§®ªÇ˯LŒªÏµâ¬‰á¬¼„V®°Á™K®#ª„“0 3*1jâM‡®q)ð½{]e™RkéNÆ™JËÉ¡éÔøª3fÉ»±JöÇÅT_¡‡“ø8‰Ý1ôsÀ —Ž­®ÜY TÀý_LÊxø×æoâVX»óµÚ¹úXHò5Ô•Œ©åÞ’Y”7–R,Næ‹m¥ŒF铃E Ëûp9˽ Ô^aZ>\‹@’ÈüÁ‹™¥Ÿ9¾KÌÁpöT¦¶ù¸¶.¼ß`áüKòÝ›l†\€A{yEÈOݳÂׯ$¾ ‚ÉEŒAÅœ©™a«·ÚÑ:˜ì¶iÁÊÈX„72Lg¨Óq'}†ÚÌ‘étV{%uñ˜sB<%§Ïâ‹W†_c£%“PmÊæ¬¤Öúå}ò·4#%5&³%áulÊJä4m–5÷ÊÖÃÝgÁ!0Í0 1w]ié øœ+6¬ù’ø ëG\q×NR–Œm°*á¨?h`ÌÕH)ÐéJ™TŸ!éß§.(ÉÞN”ÜóÀ:ïìäi(…&è¹uÕG¸·ú³â<¢¸¼ë®EÙí\‘åàJ唋nAêc±ý¦þî ‹$¤#zUJɵnÀívR5ê|‚}  °Ê˜©Ëç«Úw*2=wSl“Ö;m;–ØÂÔdËÃ:cÉW–PRœ=á¬u‡a÷0—preì¾ÕsCÚºÜU&.ŠOm­kŽºG©©]ÁCÛ[ß§•ðFn£ì=¢Ýd¢«f²Öý=]•‘š¬³]J@ú¨1TPÐÒ{°©UY! Wc©ÛÖ~zŸ¶À‚õÕé„ s‡:šN:r€8}B#ýìmWªù *cj'ûŒÀ žŽU]Ç™îggf,š9 ŸÉÇiÚ¾rã™&縦òDé@ùªu½ ¤Š¯JPÈè*jšj†\°PÒƪ³!hfò®ÖrŒeìÆd6S‰Þ”ôé¥mL´{¹r±›à!ð/8Ý;²I푪†èhðxYRŒ‰0f‰!ô±Ê]JÇõnrŸI&7umP–u4ì{ºåz0õè™Ï x[%̂ޠzÝ¢ÃÛ%—S+sÎ ’äSr¸©’Ü%§ÎR_½åýXKRŠζ)·XëdºŒFXEªæ„ËÕ±éÔ¦»+k±çn^ñ…¬š¾‚ÙuÖº¨ òëÒPÍ3¢f|Õ0Û­À4ÊAŸ:n2¤œ¬Hßÿƒo„‰•êKg-D$—ž,“Þ`ŸÎ^ú˜rŸØbtqélÙÃÚS›)¬ÊÐ2˜eËHÕiRÊB&ðÊ4K¨*%–ÞQIqÌíç˜c X¨xÖS‰¡8Ȱ²{3ÜŸ²éÄ€•$4¥^_?`'™fú´2ƒe.fÝEJ˜úxüÙW ÿ{Y1•êõ:œJu¾`€ì•/C³Pdà9ˆ’„½:Iò¿º nŠMŠo`:¤ïxi/°^l´˜ ‡Xid/»—¹VWýLa4ñ9²‡/ûŽôܱK>(ŽK’ë†éê ®ÂJŒ)¼ DÊ>ßÍ\f¶ _‚²‚,æ8 z*Ê[.Jýt‰"[㋸"a©Žý)šÎuVäúWP“ ˜$ ËÉú]`Èò1gIsívåÂÇY9ƒ™µDÙÄܵ4™S"R CŸdò4ÄBw@s2©¬œ•¤ »£ÂZ™DÉEàfû™=Ra³JþšSÜ#—ת&ÕK0œWõt¯Ä#_“‚—.²N @÷˜fõr5îrYôjì-t•æöWŒU·úË|‘iY/Èqáûq;k¹ÏŽç·¯°ÒDïÄ¥RIvtû7äv*‚ê;‘úò—¿þ'?ÓªžjÁÿd”,~ô_KýPkq‹ãå7þmÊLV“ÕZn¼cã!–RôŽâCñVzSaV½}ÿ°Òc¸¾›1ý´-.AÚB…M›rf„:i|FÇT.ºŸýÆeË;méJ¥Ô‘ íû›îê*—2w=ºEûZnæö] jßÒÈ2&ë¹á£»y‹k6Pшóq/?-g² ¦kqÖч×ûüáõù›‹ç¯ñʳÀ9×¼þôù¼PÒCÂ`gŸß]7Ý®qʆó;ÿóå§ó««‹Û›ßübælÈmβ^Å%Cž, Ç ÒÙ6` ½–J·‘ÞïæRÙ4[I…ø.ȰRª®Å7©â¦ä‡`>Ü—tØÍinª«ák¥<”ìg¹º óFh ŒÙT·ŸNHÉ([8SƉKWSqÚƒ§Žê t¤;Á_äfí¼eîãܽ$â·03*Còy=/žQÆšQUM‰0˜±'1¡·H UpÔvÈ$3ûgÖÙì2RšÀÄÕEÝ•ZÔá´PÊ\Q¼%[)“WÆøbzL# Lgô!…è{Ø#>[Ã5B«ïãõÛóOs!ª\”íð23 ìSP zܹ€öÀ•žCW®‹”çˆP¯Îôö¥¹R¾Ð<:«çq}öãU±)œÒ~áDN­k£Ámb[ Æ4Ub;UP&%ii‰+LØX…œa<7æÚ¯O±bv`Gà.FO­´ ¦ì.ØÌ«t ]§C™g*‡ ¢›±fKx7m)¾eÒÙᢛaO½£å"a÷Ú@W,ÚUžüÓ6Ú9MüFow߀–È¿çþÛ`ÇG‹¿–»Jf)*3gâM#«w ß@2Åò`”4¢ f… ™ù¸¾ªŽ?1üŒ‰7H0|‰Ú—„^"vïD*ã‰K—¢ÃO ·¸›q) >د{Qµ?¦¤ç|Z và5Gq ëÅ)AÍ3ƒßC•#¤]GÕáz•áºVžDŒ™×ÈO”(L.`ˆˆEÙ$»©wÒ„ ”-‰¹*”™ÀqsËB6KX±`'Â<¡‚ x°’+Biê1,B' “fåõ·ßD 2f‰yÍœôM 9~fãI#K™v:U @­-3³œ„¹kÓ[ʦz'«E‘ºwÍŒ¸ß·’©q/84§]óéàb2¡Zü¾/¦…ê:QûEš‹Å¤'Í?Ìþ.âe¡¼ÇQ&seϦž¬î«¢)i[~É”f!H¢¨iPU86E£ Œ_ËÈÝIª–H'ÙÝÉ>)I‡´úÞ4ìWN6â]I™ ßv0•mºèì k@pÎX•ÿé(Ç©»¦ˆX+߬wŠ"¢?ÎD6 ­UÚüåÔõ諲Eð¬>$öéšk þ$nDK¡º¦ !Ó9ûpÍù)㉎þõ Ž ¦ Ž4õghRh›;ÑM¤$)ß@ߤÀ ¸D5Î9ZÄa=.»=õ³¨–F*>*4$H‘ -EhŽ“õÙw¿àÙ/m! Ä4J#ÚÆjÕš¸©Ö£²…øÐÍšgµ¡u´ÁèˆT‚Ô‰>ƺT‘Ò$Ø£^ìUý™Ëqõ±TH(™ÎŒµ^ïûxSTvΚ “1î98FùƒX€Rú¶[¨TvƒŒœÑÌ»JÇÄ“ùÁT5+ñø¾Úû`nØäUãŒâ±G^‹0;Pêy%£,Æå®XÔ¢R R²ûÒ1©Eµc:}{ŘآÚ1ƒp‚uZæ†Õ/€ëRTuÄaÍî=G¬X:jQ锯O΋EÃ’R­ÚT:p8v—ÏT:"&•äìq~\¢'°£}1QÓÑ^u¤ z|¹V?J"éz{,<ðUA‘÷B¿ÌL”2‘⑺ÑBù›•¹ªD±j¿¾ØSƒîÓò4±®ð[%Ëßšàæ;ë+R(KÏwŠbA5ù{-ùo¥ƒãßx¾›že´s~“ùtŸsï¶nžÍŒµòƒ—³pæÇ>z©²/àÉL×…˜I‘“vz=ßa·ÈÎt´ðÔ!¡7­pÏŒ»$/K@âÌÙBùÐÌaê`+Híl8 #A)‰8¯ »%@z¥ %Ð’‘· áû±ªØÔS@hFN(ùõ R˪'€É¤¤²z L#tÓ¤p;J¼yQ¼6k(%Ð ®-Ÿõç>ù¥AÝWGž^üPK›ÝiDæ¢PKj“K2 styles.xmlíZÝ“Û4ç¯0fàͱ}_½”¦ \)0smî:Š-'[òHö%׿ž•dù#–íK|èÃu¢ýö·«Ý•äWßí³ÔyÀ\FWn¸\ӈńnVîÇû·ÞµûÝë/^}ùæÃÍý¿þè°$!~³¨Ì0-%ô¯A~E5¬´ÌÖ˜¯¨ƒ‹xØØ”kê%G[ÄÇñS "çñ"ç±ac·^ûþ¼»màãÙ¨rÉPÛq’¯\³¸&ö;»¥ŽÚ„AÄÆ8JÅëW ÀfÄÑ¿)Ê fî Äï³5K]'aš)AI»´–‰œÀ°Æ½'4ÕŸã{NPöõ«ñ)áVr‚¹óïú¾A9ß¶XôÀ”ÎwŒ2‘#¹956¤ ÷hË2d±J¦ÄoË=qädCFÕ •Im䤈 ²ÇññëOSZÒšæm0ÅœD+7c1æôä¹oˈÄȹCT8)¬¦ÏÎÿë>;Í9óÀŸí-çSPB-•úÛÍÁ”>}Å÷ò˜èÜ€&X“xεÃ0G¶ÅËP¨.Õ1MÔ½›¢¨ÈÜ3ÇZ2£LÛ¡˜²æä33‡œ–$äºt³š’ èÀÔæBéÏR$y„=B7 }ÇxÜõÍó{íå²~ÆæpÌSÝ®©é‹Æ»¦ƒŒÔ•¡$YAì»z$Ù'èÅÇgòâ[ÿ9ÑgË"#ç‹_hŒ÷Ï>Dé;%ç~¶-RÁ:'·ˆNÙÚì‡'…å$ÅuV ¬äêø"~5«ˆH¤>i5m¯åäáÝë?sÞ3N=©sîýÑÎ\„Ëþq±çÑã±ê]Àƒ˜ …zÿº\\ݳiñ˜ƒ}j1õ¥Ä®¼zÙ"€xÑ‚¸5Ïð=ß„Þ+×ÉvX?›õ’×ÔýÆešâbTz:™ØõôvZŽÆžûÚ[Ë*^ïŒ15“Tq\)8„aìù@m#!À¸§½ßÞ›—û&üà×£%™¸^,ḶM#`!µšª×®oîä"Áó5nUŠÄÇ^mƒèßJOKVò:›h’y©ð`@ô°¼Gà8m!äU5×°5ï"ZC·¿kQ‡Ô9ŠõÇ`úe ˜5´ƒ*Ë-‚ ¸–ÃŽ`)‰¯õïé1ò“ ‡"LÚNk_* õLˆûè(‹XYè§*ËXŠpZ½Eèb# ÞµbÎKÔ§+Wê’ôÙ,éóYÒ³¤/gI_Í’~1Kúz–ôr–t ‰ûƒ˜0VPV`!CB6%W=¦íÕï¹(-åËD5بiJ¾z•hËPS=©Ï|ºU›‡iü´•ûJŒic3UWÙDÇ’D}<Ónœ†‘¨ô4ËêTÑ@–ãLµL—í·y¥­y—— è$‘g¦Ü`/CòM'ŸæY8Ðø)‰‰åçO׋¦éSãÛª5ÛŒVmä6X;ªÉ8ÍHÑ«§ƒ¥´GÐu;\œ u£ Édñþ³oÝ·èX|öµeº4__T,›V´‚F–´Ì3›·Æ†QlçËk+JÀ)C\(–7+Úï:ô8T㜳æZ¾z5îWÕvw[UÝ«~ÛÌÖ ß‹&îúV4ãAøUƒRS'üOÒ­©¼&@[á~ Ý·¶ùúoPKbìíÜ[*PKj“K2PµwCŽŽmeta.xml OpenOffice.org 1.1.0 (Win32)peter lin2004-09-14T07:15:40peter lin2005-02-11T13:27:21en-US188PT10H43M27SPKj“K2 settings.xmlíYÝw¢8ß¿ÂåµG´ÛÓ:'vìhÕ¢öãÌK„[¥…„ ¡è¿´ÝQØí¢œ3Ã|äæw“›ßýH¼üºòÜʰÀ¡äJRju©Ä¢¶CWÒtÒ­¶¤¯í?.ÿÔ‡ÚäqdTèó³cÁ…M­Ð«p.dƒÊhÚé÷´ŠT•å¡d˜ÈÕ([Ȳ>Ñ+黾éVŠdÙ¸•*R X³¹-µ/sÑÅ(Ip‘6_IKÎý Y¦BýУÖëu9}—6V®C^ßå£(ªEDV9??—“Ö­¨Eɳ³ølENE¤­ ~²ÚûØ·Cn_¦âàªÃÁ‹çSÙ|&Ø3ys zŸ¥”Õçgù™G ð„úÒ¶…¯}Ñâ.µ[-Um\Êû(ŸGîÃ3Ï‚®{ïØ|™…«6­³Ã°¿³XfZi6_Š›KÝ-(Ú“; 攺€‰Ôæ,„â:¾¶Ý/:ŒF Bž¢gìhêRÊË×Ô# 8 ¨ G¯zد:ĆØûëŸí4I@Øús,êÙ;C 8‹ÍÓŽýS-ÎÎþÓ3óš7Ξ- ’åçRkú2ÌE’þ?9Ùö3<Á‚¦­râäH~q»Ñçø}QÛL}ó¬H¼¥F1h‘™ 0z>ƒ ®‚ŽNëÄ>¦°½ 7tž›|°Pj.> žïŠç²–y„}`±"x¸ ¡EP6ñQQe ¢—a¬dq~áRJ¡?q¹ÀcÂrrš.yI£×¨kÔ-Ë8À2Ùƒ8kv‚ÙZj‹Ñ‰¬¬¬ÁäuÝ1Ô¡Ö\‰{ô`ܹ–Ê¿?=Œ›ƒ—΋¥NѯpÙªZÎÛ\þKô! Þö½‹ºOñ$^çc„ÊÝpHCëA7NNsuû²fs5讌§‡[fz³úPïE[7…0 k¡îXŸœ ŽèÆú_š×ê=!ÔA¨…úÈÐb½ÛûäzV·¯gëb³5>ñO2—Nò>62ä“fÜžÎz±¼Ž´¤?ÂèZßgõm~àg «¡õ÷õûú.-&±öxm޵L>ïµ_]N!”'µa~}T°tA¾ï®§0s|ülÐuÀµËÌf&~ƒYz¸5$šKƒ2 £XɵKçØÝ Æk¥K/øŒ ÀÁd‹‡Éª—Q…¹Î‚ˆÆäÔÑÀ)I2&Ì“+Îþñݤ!³öHœžaÈŸ®/n÷wyÛs?”sµ¦œµjJM©ÿÐ!x½ÞRëÖAe¯ò•~vàÉ1@Iei/èã9¼S´œÒ}w·‰¸ÉEÁZÚn„ÑÀûú²ð¯ö—ŽUÂj ×¥Q¢Cl 5L,pË÷/±Éõ0±36¸‡œm\®GlðAüˆð‡×4Ü]”­ÿ‰ùa´]@[¯ FC’{àpÀ+Ój‡y¶Îp”Ú”³£ê¸Â]±k+’urϦä½?‚伿µÚPK§`£A¹PKj“K2META-INF/manifest.xml­“ßkÂ0Çß÷Wdyo®u0‹X…ùÛôAö˜µ×H“’^ýïUAA æ%¹p÷ù~sáÆÓC©Ù]­¬Ix$BÎФ6S¦Høv³ b><Ÿç«Ùæ{½`¥4*ÇšFÝ­·oï3Æ€U…f•ç*Ea]0ßÌÙg—çÙ‹/Îxw%2ʸ‡_3½)SŸÂ„€õ|{æÂ0‚.Ƀؙ”+rí…cÌ” ¨­0Ც´J%ùWÃÞd¢nŒð¢â×)BÇÏEy£uPIÚ%8ôÒP¥,*SÜÆ­UJâðb ¢×ÿ}Æ/Ãh9ŒcqDô“¾£Ø“æ›ÕõêGéÚÛx-[ÛPÊt‡=¾ÿ·Á©5ä‹ôPnM­ÆúáØI>Þ+ù™<¹ÃÕÔLþPKÉ4w6ÍPKj“K2á¥19mimetypePKj“K2þ¸†ûŠûŠ-DPictures/1000000000000216000002F08371F788.pngPKj“K2tW ·· Š‹layout-cachePKj“K2›ÝiDæ¢ kŒcontent.xmlPKj“K2bìíÜ[* ³Ðstyles.xmlPKj“K2PµwCŽŽÇØmeta.xmlPKj“K2§`£A¹ {Ýsettings.xmlPKj“K2É4w6ÍnâMETA-INF/manifest.xmlPKïçãapache-jmeter-2.8/xdocs/extending/JMeter Extension Scenario.xml0000644000175000017500000002524512032647151024127 0ustar ebourgebourg Extending JMeter

The purpose of this tutorial is to describe the general steps involved in a JMeter extension scenerio. The JMeter documentation describes what must be done on a microscopic level but does not provide an overall idea of the process. That is the intent of this brief article. The JMeter extension documentation should be consulted for details.

The high level procedure followed these steps.

  1. Planning
  2. Code the configuration object
  3. Code the configuration GUI object
  4. Code the controller object
  5. Code the controller GUI object
  6. Code the Sampler object
  7. Install your extension
  8. Tips

Planning

I've found planning a JMeter extension to involve three aspects:
  1. What you want the sampler to do
  2. What information is needed for the sampler to work
  3. How the information is to be acquired from the user

You'll notice that the coding steps are somewhat backwards from the planning steps (the sampler is coded last). The coding order was determined by which classes could be tested earliest. The config/gui can be tested in isolation. The controller can be tested with the config element. Neither of these requires a Sampler to be present initially.

Configuration Object

The role of the configuration object is to supply parameters to the Sampler that can vary from sample to sample. In the case of the UrlConfig object, this would be information such as the host name, port, GET or PUT and various parameters.

The configuration object usually inherits from org.apache.jmeter.config.AbstractConfigElement. It implements many of the methods of org.apache.jmeter.gui.JMeterComponentModel that are needed to effectively interact with JMeter.

  1. Constructor - In the constructor you should at least define the name of your configuration element. This is best delegated to the base class's setName method.
  2. Property Name Strings - You should define a static final string for each property you wish to define. These strings will serve as keys into a hash table maintained by AbstractConfigElement. For example:
     public static final HOST_NAME = "hostname";
    would define a property in the hash table for storing a host name.
  3. Getters/Setters - For each property name you define in the previous step, define the appropriate accessor methods. The implementation of these accessors should usually delegate to AbstractConfigElement. For example:
       public void setHostname(String hostname)
    	{ setProperty(HOST_NAME, hostname); }
    
    	public String getHostname()
    	{ return (String)getProperty(HOST_NAME); }
    	
    Some accessor implementations may be more complex. See the UrlConfig object for a more involved example.
  4. String getClassLabel() - This is the label that will display in the drop-down menu for adding your configuration element.
  5. clone() - Your configuration element is expected to be cloneable.
  6. addConfigElement(ConfigElement) - A typical implementation of this method looks like
       public void addConfigElement(ConfigElement config) {
    		if (config instanceof MyConfig)
    			updatePropertyIfAbsent((MyConfig)config);
    	}
    where updatePropertyIfAbsent is handled by the super class.
  7. getGuiClass - return the name of the this class's corresponding GUI class.

Configuration GUI

Each configuration element you define can have a companion GUI class. It helps to have a little knowledge of Swing for this. Extend Swing's JPanel class and implement JMeter's org.apache.jmeter.gui.ModelSupported interface. Remember that you can review the UrlConfigGui example for hints if you get stuck.

  1. Data Members - You should possess at least two data members: a reference to your partner configuration element and a reference to a org.apache.jmeter.gui.NamePanel. You will likely have several others depending on how sophisticated your GUI is.
  2. Add Panels - The layout manager used for many of the panels used in JMeter is org.apache.jmeter.gui.VerticalLayout. As the name implies, it supports arranging other panels in a vertical fashion. You can define each of your panels in a get method and add them to the configuration GUI in a method called init. Once again, refer to UrlConfigGui for an example.
  3. Implement Listeners - Implement listeners for your GUI components. The UrlConfigGui serves as a satisfactory example.
  4. setModel - Use this method to have the model data member set on your GUI instance. Run init from inside this method also.
  5. updateGui - Use this method to set the GUI fields from the model.

Generative Controller

A generative controller is a controller that generates an Entry object for use by a Sampler.
  1. createEntry - This method is the raison d'etre of the org.apache.jmeter.control.SamplerController interface. The general idea is to construct an Entry object and populate it with config objects.
  2. clone - After you perform you cloning duties, be sure to pass the cloned instance to the standardCloneProc method so that base class cloning activities can complete.
  3. getClassLabel - This is the label displayed by the drop-down menu for the controller.
  4. getGuiClass - This should return a Class object for the associated GUI class.

Generative Controller GUI

A generative controller GUI class should extend JPanel and implement ModelSupported. If your controller GUI doesn't involve anything beyond the configuration GUI, you might be able to get away with inheriting from the configuration gui class you created a couple steps ago. If you do this, you need to at least override the setModel method to make sure that the correct model is set on the class. You'll be passed a controller object but you'll want to extract the config element from the controller to be used as the model for your base class (the config gui).

Sampler

The sampler is responsible for actually performing the work using the information provided in the configuration element. The method of importance is
public SampleResult sample(Entry e)
It is here that you extract configuration elements from the entry object you are passed. Then use these configuration elements to perform the task you extension is suppose to do.

Installation

Follow these steps to install your extension.
  1. Package the class files into a JAR file.
  2. Place the JAR file into the ext subdirectory of the JMeter root install directroy.
  3. Edit the bin/jmeter.properties file of the JMeter installation. Find the search_paths entry and add your JAR to the list. It should look like
    search_paths=ApacheJMeter.jar;classes;../ext/YourJar.jar
  4. Run JMeter and watch the magic.

Tips

  1. You might consider using log4j as your logging utility since that's what JMeter uses. It's helpful for figuring out what's going on. Not all JMeter classes have been fully outfitted with logging statements. If things get nasty, you might have to add your own to JMeter and recompile it to see what is happening.

    If you do decide to use log4j and you set the priority (or level, as it will soon be called) to debug, you will probably see way more than you need to know. You can filter the JMeter stuff by making the following modifications to log4j.conf in the JMeter's bin directory. The bold text is added/modified

    	# Set the appenders for the categories
    	log4j.rootCategory=info,Root_Appender
    	log4j.category.com.myfirm.jmeter=debug,
    	log4j.category.org.apache.jmeter.control=debug
    	log4j.category.org.apache.jmeter.gui.tree.NonGuiTree=INFO,File_Appender
    	
    Note that the root (default) debugging has been set to info. This eliminates most log4j output from JMeter. The new line specifies the name of the package containing JMeter extensions. (com.yourfirm.jmeter) in this example. Note that it is not necessary to specify a particular class name. Also, note that no appenders are specified - just the trailing comma. If you specify Root_Appender here you'll see your message appear twice (because you specified the same appender twice). All you really want to do is override the priority.

  2. Implement clone carefully. This is an often overlooked method for a lot of folks. JMeter makes heavy use of cloning. Check out some of the JMeter coniguration elements and controllers to see how they do it. Notice that in most cases, a special method is usually invoked to perform base class cloning activities. For configuration elements, this is configureClone. For controllers, it is standardCloneProc.

apache-jmeter-2.8/xdocs/extending/jmeter_tutorial_mike.pdf0000644000175000017500000071165612032647151023457 0ustar ebourgebourg%PDF-1.4 %äöÜß 1 0 obj << /Length 2 0 R /Filter /FlateDecode >> stream xœ…TËj1 ¼ò>ºµeÙ^C)4¯{!Ðèz(¤ÿ¨7¶lWò¦¬Œ¥ä‹Òê^OFyéâòýyW¯wê{»¹¤—ßÏçv³;o7fž'§‚¶é{~S'£ ¦ çõˆó“:%Œž0§LˆGÊјÎ ¡ aò :G1+sÌÎjtµU±“m ¡$ì‘>Òu”•Ó¹Õ†Ûµ½ÉÁù?`ÐŒè÷´pPÚ…q$¥5ÑGÆ4:®!ýH45\41$.7óá3;Éx(tLÏÑQºÊäöÍ©À¾9…Ð1苜Z˜]"eÒÈ\§”Ñyf LÎÿé³o‘ÂÂ.t3‡™0Ž"'!J¸ø•#ö6I\<ƒ²¦žä$W‘(Šì :W±DÈŸë6䱄ñBªªŒ:#ÕrËF2ñÄö> stream xœíZÛj1 }_Øðs¡ÓñÝ¡l“÷ÀB èC!ùÿ‡zvGòŒeOfYºsYÈ+É–d|ÎØzc5û\Wœ.üÛ´ÿß²ïŸØßýîÍÿÚþ½ÿÞû]sÒ¼jØñûò"7ìø‹=hõ•ÿìw¼®ÄÙŸÿýÁðóhSI†c5eOópÕAO£ž z¢îôü4¨ù‚š¼çÑœG7§Ö=E%;s^é|>÷¢„A«À©ëijˆ¼ç3X« Ù7DZnIÏ>寴 ¼V~~Ýpor*ƒd\œÊ ºä:﨔@·i8× Ñœe‰FöR7Hœ¬Lì¥ÍÄ …s[1œÉjðëÈL’xQ‘• 3E~!Ùnd½PPS¡•tÖJ=ÂjpäÑEÓk $Ñ1$9™ Õª¦j,ºm›,ãÔ3zøÿ×°æûŒºdá~£^c®ö9Ú5Wž?¥Žv9 ÷­ú…†Úö9Ì_ §8e#_à, SŒØòl©Ž6à‡J2h²˜ äÁ^ˆ)ˆGð#Ÿe”¿>s›©Å‚vðÖäíedý­?‚’‘Ñì+Êr©§0£"3…àÝš€0ª­ÁƸÞUº–‚.r$(ä¾€‚0Ð›Õø¦¹kïzh"´q.÷¸j;‹‡%ä~Q,¡þÛˆâ^wÐ6¢XBýgˆbüb‚€¥tSȆî^/útƒ~yO¸7Ý{ƒßø^äî)½PÑLSèEÚ\L0lû²’ ~)̲ÈE.òŠäÅ}›¹È×Èãt#Ó‡l¯ïK~Ö’ðÆÞ/è½Á׉®yÁŽÄÅHÏÃE·=¡1!{ßwäžFd;aª> stream xœÕ]MÜÈ ½ðès€LZRé Xðxgî ÈÈC€ÝÿH{ŠÔð‘O,µ¼›À€²ºJE²ÉGVù×ËõòçëSw™ºþö÷¼¾ýýÛ?.ûÓå?Ÿ?ýzû×·?¿ýëó§çoŸ?­ßßœæ§õòíï—¿¼v—®Üž|ûçå§²üõòíߟ?u×§rûÅퟚ^ïÖÛ+÷'óüþRÿ4½?ê¯÷GEžÌåþd„a–ø7uàNfŸûû£úÊ´Öv"ýâ±N5‡SMÝýÉòÔÇŸs­ï¬õW_ë;ò}£•Î4ÓÕþjz10½Hlª ë¬ pfgu”ò¥¾S—U~)OFb‹êتo´òª“¿Ü,ê—ÀÈÆu¹ÍF&òèïV»Éw±½?SÕú¢XÄæE5®íˆEÊ«º6¯ ueÅ™x;ÞÖôèĪÝAÞÜš—¾9é#nF9™ù„yB{C;&¹g1smJ"ßkDiÊÊd&¸ÖRæ qG½R« !‚°¸™UÜ¡ [n°/g›}ÇÑ´èSþÊjk5ÿ; ýJ:"Ix›u+÷7]’ˆØæ;ÊNö2“ `¦‚þbý(9GæFXV5WûÌpRd儳–U FÎð=¨?áÉž—½¹€&0’•8ï2|!rk™Œx '3!Ö³mŽ×Cɯ ìï·wìwVFØkáNŒk°±—Kðtâ›ÐŸÚ Ìã~ΉBG’ÿÅUš”g„vÊ0,ñ^Êð°-ºq0 9ÓÅ_¶äÈ”ì’LÔ.I%@Þùq©Bm…Eˆ‹EbwwÙ<cÃêV2­Õ¯S"ŽoÇb×},Öqö5à Z ­*eò)ÇúQ „SÂh±˜¯ñj¸¤:•è(¼¿¾Uo?â=‹<ð‹°Òe÷(e/NBfV&Þ¥¡:M°Òæ')¥ª×€^Ø ñ>òdú›8]ìÅ@^¾F1ç 1kÅ{ò5M\Ê"ædXÝ£%-àeõ&x"ü¬pÎ$ö„ŽÅåOÐcް.ŒFIÅ.¬-É“Ù>9ÈŽ¡ÿÙç ÁÚvÙ ÓcÝÐ÷Y+`ø:,Ëmƒ¯—8qSb•ÍwâîÕ‰–ƒ:¸—)‹Ý.öÅ_Aä¯vM)ŽŒ(Ô½õâ> Y·Ä)ñª,7¡‘ÂÞÀËJ‘Á¬”ä ËŠão†ÚZeûcRÍD&ªÓ н–˜BKÌN -Nó»+-¬•ãcI¿ ô%5Å:Õ 6ùSó"Rž–Û,øXGfŒ2¬z©ò ¨ñ—±”3L0‰Øâ|ÉAƒ˨º ©à+©‹˜Ì8žÀœãNDBkß™j×1<…îÆ,ŸÎ”Zf’Ú[CÓYÁÖå:‚[úmÆ%‘wµÕ]š¸8Ìþ{;rœ[xÒÀÚöàÆ™ú–Ãp¢}7õ EìR\›¤ˆ‘à4†²ÂY‘8*ËØ øãÐGéªD¶÷â¬z 9cñXŒVõ ¾¸†½@í ½ æ¥r³/‘%y•ËűHE3XGŽY…T-(ìDôºócBüàŽ“+†ÕzÜ5ûˆø2rƒNÛ» r(¼7¢´Ì£th·NgÖ‹]A&Žrz/ŽÉ“TCÎñ©ÉûOÇœ»Gþ(Ö úXûëÀûÀlŽÀ: cíÅ9=Ò O·°ž‹scSV‹Áš5Vp£ ^V½u¼Ô§ ?&qzY½jãÿÙ¸vM|¾.•“ómÈȶžã‘Ïå™Sz!£rÌ›#6˜Ï“ù‰6¡<Ó/8\W8É2Âísõª°3:žÅ&,Þ1~úÙîu†Õ?döh¦jH°ÌWÆÂþ?f™ÐGëð!‹F¥Üt®™œ=Úõ½ì$6‰3µ—ïÇN©‘jrXÉ#™~S¥¸)ºÏø^ìºkñ½¬‹Ó^tƒ:×,Xë ™ˆ 9ĸ«>¥-âqãIÅ;¬þ3Œï׫AøÆ’Ó $ibÕ‰§'çèCæy+²³1'D'uºdNÿaműø ×AX'd?D URkmÓ(žÞ?÷ŽbO†QÖóHtwN§éÇ;9â~?ì˜$wçÜL@N×dViOhî÷=æ¢Å¦.ÿ¦þü¸×)Þ—âóüvß”Aè?¤Æô{vö‘îÌÌùÞC§£úá ò¥³òpoidz¿H¼‘”Ãȉ$’ƒï3¥7ŸAÆ™˜÷ǘÉÀÉ)0‡ÏÁêK̸:þ4sóVÎÈ-)¸“Èù¬4o"ý‰ó §ÝqÊYáÔ w„W:RËËd(q®Óy€è™9ŇX`Nž9µ[Ò·9;²]$âÀXaN n×Aº"n¦·—ĆaÜÁ8ĸw{0&Ig"ÜÌÉ r/ÅxºL­íXÆÓÊšz°0¬ÆdzŒÂØ ãv’k‡q;ñ5xNã`ÂFg¸‰Lõ6ÓygF™ó)™Î›¦.À_è )9µ›ù>̆V™D7bM$ ñsˆŒñÄ][™ y?Ìϫ{r†C#šÀ}“àšºµƒžùLßÊi•á&,ÚE\ÕVKÇ9cAH”#‡¤…1m|æ'u‡ØAæNŒ`ñî rnþ «@–­™DqÎÁ^—ÄÎQ„GÛhÔëÕ‹Ïß:Qcgµ{õ ÙóM:{=ñ1²ìæ!F)#erjÈ=c—pà B‰Lð´®SõîwR©´2µ vú=þU¦c³›»¦}Ä'¬u>rK`ܹÒX[$·[’3ÙÏ÷9;+¾‰¼Vœµ à]:7î>r/ÙI½HìtP¬¿"«¤Æ›©Ã[RÄÙcôd!''\mÓiÚChÔv2µŽñú:™š¹93®;°ÛÚ÷OY³µÊX[xjøÇûº:Ó‰ßÇúïïÉÜBvÀþÍUm<ú¡6ä—ñsÖéàô²4ÅИágî’@„ ;{¶Ò‰»¼{Id]à¥R7s »Aú2ƒ;.i¯)ɤð|eæ^ }Šô1ïG;Ûn’ ·ÖbÇÇäëÅ‹¤šú"ôP˜ù‘ÿåw÷P_‡ºâÙ¹-ôZqÝÜ è³b á¢q÷;ôÚ Þ#„Þ€ta×>ÖåzœÓIŒŒTXóòl=qC[ö5ÊÌ]K~ O`A¦…¨óÀÿ"ñ¾;¹üù™]endstream endobj 6 0 obj 3154 endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode >> stream xœÍ\ÛŠ$7}˜¨gÃÔVfê’ fa.Ýï þïöaaüÿ[5Õ EÆ9 )«Ûf1œVé—'B¡þqºœ>]ÎÓ)Móõßy»ýûÏ~ûåôß~\ÿïíŸ?ÿøøáËËÇÛmd¾,çxzùýôçé4…ë——Ÿ~ Û?O/ÿùø!œçû„׿¦§ûÇíúßå[÷oñ¼Ôy¾Lj`z.?Ö3†úQ~_¿©aËýÓzda=Ÿl;v~=Êt¹î»|œ/å×ILu{¾xÖ›”uêŒéÛë2»)ë:u—¡Œ¼iÌ?Ï—*Œ:°M ¤Ç‰ ‘x(W<ÎzÎu`*ß&\z%zºZÙ÷†á¥¸\ÅW ïr7»×Eóõÿ\vŠJ7ÕïÖ«_ÊA—›äw›OõKªÝüÕ7eß÷sležØüU¾ØµÊéëZEl-ù2½Î³,f7ö"ëd8·Hb6ëÄ*ã¯e9÷bç!k½îf&ºÚÚ¿ °ÃXö³šÕã9ƒüœ“Êê ~5Á˜hæÉކÃ粟bqÅ[׺rÄ#Š]ì^n'Üc÷c2D¿©;’³®ðÅ`%ù bH´cˆµØÓƒ>‚rÞ¬vˆtžA§N+_<¼BÔ 9„WâK¹DÄ"GÎ lídXw(¾­ 1j’SÈÑãÐ치%8~ L¤ÎÓ¶1‹Ži¶ÖƒþŸ¬FqÇø%^¬L‰,ç*~;üê!VFpñ쀬>·~¥0¢Í6ÁrAW°c/ª?æÙÞp?sûTyã§ Ã;ÆkF‹o"z®¨ñ­ïd-ˆpb‡¡~“‹,{q©dlù¼X…ƒ÷Soåâ÷Šu‹œ"¬ôî¾èh;ÃÌ~èuÄE·VšÁBÚ<©d #l ½ÕÊYc2ÖzŒägx*Ù³° ‡Ë7¤îâ_‘Ö1öŒÞQO^Ë*ŽÝ¢”‘èõ'¬­ÑÊœà±¬ÊÆwahƒ¸côa“@ʱôq»U~^zl¾©S¯:B¸ÃÅ΃_ˆ×Z‰!Ò7ðvñª…!“¨,ªÊ¤f¬àÁ¼!X{XÙÆÇð´JÃV†TœnVkXŒRÕœì1l`?Œ|KXÌ;cAF=@Šgò* bMm® ó®FžÌ§ç¶ ›D;63øìRÊn F£ ´‰•¤ñºVõ výàÖº8žã½þ®ûˆ—7k²¬föÿYO|k…,‚X ÌÎ}ÖhUÛœˆTµ¥bípe‘©#1§®ŒïDøÇîZ,A¯‘,+K{„g¶­»Ÿ‰«²!+ÁÊ×È­€ÌìÜ£HŒHVŸ„=#VŽäo¦*bóð™\´Zn;Ý£UÌÄC ›ÛÌ%ÛÌË‹`²2"ÕßûC¼Ev+¿úž'lȉ5ͺ¸š'Y«ðîOÛq¸b§¬Ž‘¿ ýãÌÈAÀ‡3HžØ­“;2?jG –£ÄðþkÓN®8ˆ·8«•Fm†p͹¯ÅØúE~°B{(Wü˸ ú¹1r*2Ï¡Œíw›’ÁÂ6óÅjÜH@Ð<í±*ÜØ™`Gˆìðîh¤vò¶[×÷»+HO,@0Ź•î2œ×»íÂÈät±`\C+öúÞöE湿ç! Äs±š8åÑÛÚUÚ¡û¯‘»›>——ý!3yñéÖQÜŹãló¿‘êÜPüÆ=[¬ }ìÛM'ý ÞÈ]ú²™¶ßkv:ذÂãìl×ëY;T39Ô±ƒy:f¢oêØ9”a xãà“X!²QdµÍÕY׊sƒ5ÙÕ½[®6¢W¤q"FID5çÞoHJB£CM! äq#7öÞnn\´Õ>¥¹µöfuªf‡îs1£EKvn)Ð’O»·µ„ÉãŽîB§r4‘Fð=ߤðâ²ûºÃ¶-µïLXßà\È[÷ñ5ª¶åN˜ùZ<8±gÇí>/bqÍü_UA¿öÏ%1¬££Œ‘“·­ôU½{žíát{ðš]T$iâE•¨ƒ27ÆzfDÍÌOÅK‰…h§OYîÚÒ¬[…‡¸»[õÀj…“ù!r;wØÃøÆú V±b8‚h6"UnõjIÀc·D.ìU\Ò{\ˆA°k4ý:¥G™Gõ²à“ʬÄÍgÔ(Z¶™I<áuq‚:£Ž€D8±cdº b¥H½Eé…*pÇ ‹xžÈ@f1°=®D<ìÔ;Bã™íî¦æ ófÏd‡TÜѳFb¶?£4±x²Ç…è%1)*™# Êȸ}rjÅ7ꌉyņ‰!Ô 0Ÿ:1ƒä‘·WÓ¶b_¾bVÄy²¯v¦$Í8ë–#9ÙÆd¯Y.ÓÒ±a k•TØöÖ™ï3À.CSv+ÇДyDDµÇ.>ìwF!ÈìRÀÔ'ºÏ¾¸µùcÇ¿°Oðä¨U¸ xø@ó{߇ ËñãÜJÃâœ.ePëèšåç>¨ÑXìEÃU”ÓS÷(á d#öHi€Âßg˜™­ÌztåÉÕŒNeA¶¡c= Dw—²f7@äÚù¹@E½—âä'Ä%3'1ö®(‡fÁa×¢ïYÜ®¿ §¹•”Ô\ú^ÓY¸Â,KÔ:´sÌ9³Ò<ûÍèzDÖ¥`4}FËÙÿ‘ÂóÝ´ªçµŒ«öÕ÷æH³Fßi¦=7Hhd™êEf×BS¾©&j+12b;zV˜NǺU¥ÈOêØv„aŠ^ùÊ#ø¥ÿ~‰ËŽ{JØŒúšÆ÷g†.Wwsl-Å'\š£,It} #u’–ºA/n÷Ñ:è©ú·ëñÙ«f„.ʽC:É0âfâ%35ð3ÑÝǷ®vê»YÑpЭêÞ@JEü,œÈ¹ )´vSuéAÒ1"Ãnî+gÖöÏf$d+Ʋì®S–Õ'&êï"¤t¡5õ@ÉÑ“á™ü9³îýt±èUs§Ìr|£™XbâIšX3±Fyq NÈ+ù„±Ð½_h TZ½,ðÁXµBñô²ýi ð-·dføtµÅ¥hºÓb€TQI+ñ±t—ÖiFm·£¥ oG®†7û· ã«Pj%éÃÃ.­PUÓ¼íè‹jßÛ«î ¸9÷º&ÛÞß–n oU¥Í1Ïå ¾e·‹ê vú`‡&tÙn8Ò&»‘;|AôvOi•ŽŒ)¯U¡;BuDbï¾y‹ý úû _&»Ü!ŽÁs‘שò«Õh=Ãn°³úK`8·Ù›•«»~?ý7³êendstream endobj 8 0 obj 2791 endobj 9 0 obj << /Length 10 0 R /Filter /FlateDecode >> stream xœÕZÛjÜ0}_ØÐs¡Ž%˲ ¡4Yèc`¡ÐÒ’üÿCíØÒlçhfeg …ÕJò\Μ¹8O¦6ïëÊš`ÝøÙ Óçó7óùùµß=¿NÏ?ö»Ûã~7L;oªÎ¿š«ƒ5¶6Çïæ:Ü|0ÇŸû]3n¹vþÞVC\¹+=Û–ûª+~¹u|;“VÜ_I²Œ².+Ëž¡Jòµ\>zÖÀöpùîGCݱg…ʃ½‚ìsQæ“{š¸ÒŠfžÕó{’·”{ÜòtGt iÒ¢gO÷tØO‘¦ÉÎË=x É×1ë´„nÐ<#M{ °ç#ø¦Í |CÏBô¤8vñf©¨i ˆ3+=èÞ€o’Ì]Œ¥ JèoâÓæ^é3rZ´°µ° âeÑEHU°a¹„ 2æ’G»ÿ‹è4[O0ù›h½ŽOê׸h2%,1ÅxPTÖ'!88ýœ˜HHLø@JDp¶DGèd´¸"Ò\PRÙØ‹:dhNi¡„SA¡¾´@šíàæ¤…H³Za{?z{}!qrŽJ‰ä,›dBòm¸EäⓃ,Èe R8’(ɇåZñ‚Éax+D”D”)‹EöÑîÁ„F|$ûb]BSÊNVE;#.¡Ì£âÞ‰ò`ÂϰoG°!À"êÀ­LEyIÉ„åÙyÞ8±²žôf& “60 #&A,ôr¶ê rsXRhj­LIÎ#U+’HfÄT/{õÂHe¹;5ÍñÙ—±{YN»Lë bÓOµÆlÒ9Â&+b3µØCn¿ òÙÊ %­²rOAt$Dvô`…–ák%*xMëè”\Óà}K ·µUÆš…×ÁZ«üïQ5jÝ„þ QKç^µ°aÂ\BX+žÇíÛ•ýûÚPÓ´ahA^QegÅEµãª Ja0%j•Œ¸*j±DZ4—kP¨ j3VßÒ·Ëùñb¹e[÷¶DèZÑWÒ¸Kå¼zºqçѹÄy™A'£ËôÞéÄ­Â1«¸ 9[UÅÒÝ%:🇘çÕïÊLV2SX5)Ú”ù3“ ^Vf“è yê™±á+cRÖ¸Z™Ë(vþKIO{/[°Ž—uÀ— Ê‚3¼Æ>ý°ëɇŽ÷ˆ³d̉¹`ç«'yÅ6Z #_i(ØU*[ÔŠG{n€1 Wþò  ‹sÜj/nÞÃYªÂž¥.|0Oc‰?‘ k§Æ¤ñ“ Þ»ñóäÿ æå ¬óOt¤5_÷;c®>=Zkî~›—KÿW±ºdendstream endobj 10 0 obj 1053 endobj 11 0 obj << /Type /XObject /Subtype /Image /Width 534 /Height 752 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /DCTDecode /Length 73192 >> stream ÿØÿàJFIFÿÛC   %# , #&')*)-0-(0%()(ÿÛC   (((((((((((((((((((((((((((((((((((((((((((((((((((ÿÀð"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ö›–f×5ÒÜìŒÅ±#º–%šmÇË’v/_JMÃûןø1ºÿã´\Ès\ÿzý â¼ÿÄZ–¥ã;¸¬â{ˆ!³·m‡]ºÓÕ <¹!aV NÑÉÇAYÝÞÅ[Kž¸zóÿ7_üvÃûןø1ºÿãµåÞ(ñ£>‹¨‰¾ÂÚußÛ¬c‚$c<- Ió»–ÁË9]£דÜ×|C¨Ç%žµ3X½•Ýè‚Å„ÄÁêKÊ_í$€œnœr]Úã·CÔwï^àÆëÿŽÑ¸zóÿ7_üv¼öË]ñt²YÛ]ØÙÚ=åÀŽ©à]…|©â8îdÉ’ëÝ3Zš·ª\ø–âËSÐBÞs[D–ìLˆŽH'ÈÙÉÊާ±—­ì--s®Ü?½yÿƒ¯þ;FáýëÏüÝñÚe7c°ýÃûןø1ºÿã´nÞ¼ÿÁ×ÿ¦QEØX~áýëÏüÝñÚ7ï^àÆëÿŽÓ(¢ì,?pþõçþ n¿øí‡÷¯?ðcuÿÇi”Qv¸zóÿ7_üvÃûןø1ºÿã´Ê(» Ü?½yÿƒ¯þ;FáýëÏüÝñÚe]…‡îÞ¼ÿÁ×ÿ£pþõçþ n¿øí2Š.ÂÃ÷ï^àÆëÿŽÑ¸zóÿ7_üv™Eaaû‡÷¯?ðcuÿÇhÜ?½yÿƒ¯þ;L¢‹°°ýÃûןø1ºÿã´nÞ¼ÿÁ×ÿ¦QEØX~áýëÏüÝñÚ7ï^àÆëÿŽÓ(¢ì,?pþõçþ n¿øí‡÷¯?ðcuÿÇi”Qv¸zóÿ7_üvÃûןø1ºÿã´Ê(» Ü?½yÿƒ¯þ;FáýëÏüÝñÚe]…‡îÞ¼ÿÁ×ÿ£pþõçþ n¿øí2Š.ÂÃ÷ï^àÆëÿŽÑ¸zóÿ7_üv™Eaaû‡÷¯?ðcuÿÇhÜ?½yÿƒ¯þ;L¢‹°°ýÃûןø1ºÿã´nÞ¼ÿÁ×ÿ¦W+ñ.ÚÞïÂòC.™©]4©ö(ì2³EsŸÝȲãí<™€3œçiwac­Ü?½yÿƒ¯þ;M‚æhµ"°ÏtŠläbîi"X@?;¶ ÃŒu5ç_ ´íNÇ\Ôÿá1‚{¯¼I\.ûi­¿†8X"¬[[;£ ??ÌÛßÇÿ!Sÿ^2ÿèè(»ƒ¿Ö0ÿÁ”üfµh£™…‘•ý‹7ý >0ÿÁ”üfìY¿èiñ‡þ £ÿã5«EÌ,Œ¯ìY¿èiñ‡þ £ÿã4bÍÿCOŒ?ðeÿ­Z(æadebÍÿCOŒ?ðeÿ£ûoú|aÿƒ(ÿøÍjÑG3 #+ûoú|aÿƒ(ÿøÍسÐÓãüGÿÆkVŠ9˜Y_سÐÓãüGÿÆhþÅ›þ†ŸàÊ?þ3Z´QÌÂÈÊþÅ›þ†ŸàÊ?þ3EjÑG3 !ºÌºÆ¶÷3E ·¤p ×Vn¬8AJ‰á„ÔdÔtU¿“—¹!+q·–êx$ué^¯£¶ý&É÷oÝÛ·gåçsgë¹¾§­[£”.xΛmá=-÷ihVm»~mÒÎìž1Ά} õ©¬¿á±½¸¼²þƶ»¹$Ï<>R<§9Ë0å¹çšõX›:µÊnÎ ˆíÝÓ-'8ÝÇN»FqÕ±…·G(\òßí3þ‚6÷ýÆí3þ‚6÷ýƽTm–Èwmýü#;¶õ‘F3¹zôÆyé†û¦Ý.Qó[ý±¦ÐFÏþÿ¯øÑý±¦ÐFÏþÿ¯ø×©UM-·Û9Ý»÷ó îÝÒFÎæéÓã¦98þØÓ?è#gÿ×ühþØÓ?è#gÿ×ükÔ«¶Öno~Ém¢êmk$“ç€oµ•±çÐw\óÁ‚r‡1ÇÿliŸô³ÿ¿ëþ4liŸô³ÿ¿ëþ5è'U¼:uxcfˆÚ}­#s´‘³p®çX¿Úóïg³»º»‘$Û"70>ò†Ž2TŽÜ·¡ÏQÍ[J„”&õešº9í3þ‚6÷ýÆí3þ‚6÷ýƺË•Õ-ìõmVàªE>Ù<³!ÎïD œqÁó×ÇŸx£Eø›ª[h:ýÅ¥¬PLÐ%Ò¨ DG„26NQЫò—ù »¼8hÇíI‘Qº_=gûcLÿ Ÿýÿ_ñ£ûcLÿ Ÿýÿ_ñ¯š4¯xúêÊúêßÅzˆL†9äÜ1,¾d€2ã•9ê ™Ï˜û¨EñCÇy{|Qª›qºrÙÛåã9ëþ©sž¹|çÌ}ÝßÙ•{¯½ÿ‘‡Öcæ}Mý±¦ÐFÏþÿ¯øÑý±¦ÐFÏþÿ¯ø×ÌzĈ3Û\OkâMVH¬#Iff¹ÎÕ );Í–HÁëÏœï“uX¾(xâ//oŠ5S³n7N[;|¼g=Õ.s×/œù¹ÿfVî¾÷þAõ˜yŸSliŸô³ÿ¿ëþ4liŸô³ÿ¿ëþ5òò|IñÔÖój%7@nöSÊûÊIl~í9a†Ìwɘ¢ø¡ãˆ¼½¾(ÕN͸Ý9líòñœõÿT¹Ï\¾sæ>ãû.·u÷¿ò¬ÃÌú›ûcLÿ Ÿýÿ_ñ£ûcLÿ Ÿýÿ_ñ¯˜íþ üAcjx“Uk;ib¤kØr  œ¶E¿<üùÿXûªÅñCÇy{|Qª›qºrÙÛåã9ëþ©sž¹|çÌ}ÇöenëïäY‡™õ7öÆ™ÿA?ûþ¿ãGöÆ™ÿA?ûþ¿ã^CûursÁÏ0s~]]ŠB²xÎ%PÛ ¿ØGÊ œcÌß·9ã¯^:Õï‡ßò>xÃþ¸Øè3UÿHuâöx¢Ž4·Ʊ•uòPÁѳÄzczñcq¿UäVßô·ù›R¥í}ŒÿøBüQÿC…·þ ÿŽÒÿÂâú-¿ðP¿üv«x¾ Y6³¤Í"ÞÙ¦õUŠÑÁ–5*â8×pÃw<•Æ««èšÞ¿ylÖ2i²kZKlð¹Ì°Û¦ä8 ·p;v6BžGm0˜¸b“q[Àÿ2jRtí©wþ¿Ðámÿ‚…ÿã´Ââú-¿ðP¿üv³ü9âÏÜé–WÇû1tØ®ll¤£šIäÅ,%i ´Çï,$kÔ«¹Æß×£ýLnyïü!~(ÿ¡ÂÛÿ ÿÇhÿ„/Åô8[à¡øíz6AsÏá ñGýßø(_þ;Gü!~(ÿ¡ÂÛÿ ÿÇkШ¢È.yïü!~(ÿ¡ÂÛÿ ÿÇhÿ„/Åô8[à¡øízYÏ=ÿ„/Åô8[à¡øíð…ø£þ‡ oü/ÿ¯B¢‹ ¹ç¿ð…ø£þ‡ oü/ÿ£þ¿Ðámÿ‚…ÿãµèTQd<÷þ¿Ðámÿ‚…ÿã´Ââú-¿ðP¿üv½ Š,‚çžÿÂâú-¿ðP¿üvøBüQÿC…·þ ÿŽ×¡QE\óßøBüQÿC…·þ ÿŽÑÿ_Š?èp¶ÿÁBÿñÚô*(² ž{ÿ_Š?èp¶ÿÁBÿñÚ+Ш¢È.bxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]= `eM·é6O»~èîÝ»?(ç;›?]Íõ=jÝTÑÕ—I²YVq2³3“´rÅ•I>¹P}@éVéR&έr›³ˆ";wtËIÎ7qӮќulamÕH•¿µ®X´»  6ÀwI’Üg‘œ1<.@À-n€*j²Ùí¿¿„gvÞ²(Æw/^˜Ï=0ßtÛªš¢³[ F•OŸ ÌlÀàH¹)8Ç^0FrTd‹tUM-·Û9Ý»÷ó îÝÒFÎæéÓã¦î‹uSKV[gÒ±óæ9‘˜œ•鯯 n¼÷LÒÝô¶»ÓvP…بÀÛw¿Ð:v«k¨M4VþzË «:Mo$$È£ ínž•Èx£ÁÞ×õÙ¯/´+=Nú"«$··R(R<·TP a‘€¿;õó$l/±Ë ®ô¿^äUæÄ3¯> xxY‰5+»]Vñb’"-þÙ7Êg·xð÷y,˲G¾LŒ†æŽŸâÇF¾²¹ñJê±ÜÃtnZåõ’{†Ýå²E^#$¸g žpΞøig R_xXÙˆÙÄ ctœ¡Äœä†Üù'Ì}ÚW ¾iZl—÷^´KKXÄÏ#d ŒäŒ’ÜD¹ëœ¾sæ>ïRž6“V‚¿Ïþõò9åFw×ò>po=ï‰ühÍâk»+]B6ŠÂà4ÊŠ‹p®¨d<À>\eÎq’joø«CºðÜp]ÚëbÒú'³‚â[ùìâ7V¼Œ¡X™Xv®GÀÇÑ£á?ëgµGÐ,Ý•aY%rd*°o˜âHç#ÌÎw¾é¢ø=༽¾´;6ãsÈÙÛåã9nÕ.s×/œùºÖ. ÉEén½¾Dû6ÛwÞÿއÏ6þ'»Ð|k,ï>‰yr³2ÝoÝÂÒÚ01,ë )œ›¬ÇñG—R»™õ~Ô'¿Nº¸ŽåÖxZ  ²Æ…RU9ˆ# kßbø=༽¾´;6ãsÈÙÛåã9nÕ.s×/œù¸‹à÷€bòöøjÐìÛÏ#go—Œå¹ÿT¹Ï\¾sæ>ãëpz¸÷ëßúüÁRiY3ç;Z‹ÝWûKX´[y5++É ±[³ohË* ÜÎß!o7È9n”ýâ [=M­uÝ:[ãhÑY]içPk€Lð¶Ö’ë%~Tb¶ÝÜŒýÁïÅåíðÕ¡Ù·žFÎß/Ësþ©sž¹|çÌ}Ä_¼—·ÃV‡fÜny;|¼g-Ïú¥ÎzåóŸ1÷Z§tù+v§%Ôù«öbC/Åë(\¤±b›¶ü„g;o\g)׎v?ÚUÈx{ᯄ<;©Ûê:6…mm}n¥"˜3³ (¨OÌO%P õùœõw-××5z¾Únv±p*°QE‰aEPEPEPEPEPEP\ÿ‹®íí-ƒ]ÜE²2©•‚w¡ÀÏ| è+Åz>™« _í]:ÎôE¿gÚ`Y6d ãpã sÈéÛ•=¥x@Ó|bÞ'‹Æ:¬º´ŽLï-í¹YÔã1ºˆÀÙ€QŒ`mÆ7¼34W™¤êßñ+Ӭ쌶3yŸgb߉ Ævœݸç§ÝY(ƒá÷üž0ÿ®6ú Õ%ÿ„4ù59a¶ñ-탻nP\ªí;GEëÐÀÕÃïù¹®=Å’ÝhË«ÃfgkÂ%„Ë ¡"ØAMî3ó®7ï¶ ­‰ªQJݾK§©5£-w;xt­:ØZGt“ËHT.ä ±Œev®m£]®Uñ«ÿfè´¶­m Öèæ\ÄX§(r?}Éààq‚r0¬|O­_xoBKHµ·ŸK‚÷Q–ù–y$!Ø,aõ"E Y×9n9ïI·o;~60Ù\õš(¢¤aEPEPEPEPEPEPEPEP'‡älñûÿèÉë§®cÿò6xƒýÈôdõÓÒ[*hë³I²M»6ÀƒnݸùGÚ¸úm_ éVꎂÐôà\ hþdTP~QÈJì¤CнL ‘.5k—ÛŒÁÝ·®N3·ž½7g¢ç-n¨ÂöåÙܤýš”*d|ÒòH;ˆö#’ؽ@5EßlƒnïßÂq·wIç[§\㎹_¼-ÕdiYWý&YQ‡úäãæ dô¨<¨'¯PU4µÙlãnßßÌq·oYçW¯\ãž¹o¼mÕi&[ý&~UQGúçãå$dt'©<°"€/UIW:µ³íÎ ”nÛÓ-ÛÇN›†qѱ•·TfûrÐîP~Í7ÊU2~h¹À{ƒ‘’\€^®CÄQÌuËŸ/PÖ´±%µ¾Û6È\ÚÓîCºTO@zsŒç¯ªšÃ*é7­"ÄÈ rÂUVB6ž3(#×,©hžðí½Ä·÷Ÿñ1Ö&Ûk m¼´H%•·\m0¢¾bµEÎyÎ6£ueeâýF-jXÝ2-æÍ¤•€)€õ·$æ½³µmKÕÙS°¶º)÷L¨ÉÂýj V³¹­¾Í¶ÕîqZ·„Yc]º&HÁ%aàoü1š­£ý«RýŸîV1=Å̺}ÒF"S$óH(’q€µu¾ðܳÞ!Ñ4Ò!” ȹÁ<üÝœcŒaŽóm*Ê8¡ˆ$kû¸`ˆXöU;è$5†ðŽSœù´þºšN²”WâxÖ«¾bÔ²x°i䛯µ‹?Ùnw•Y‡˜wÙö‚6ïû£5èÞÓ®4¯jöÂmRm9­í¦¯n%¸q2‰6<„ã…*¤ÆÍj~Ê z‘þÍv“ínŠ®;áƒ'Û9qÈ­ K»{ØÖw\Bx‡SøŠô#VøYÎàÒÔšŠ(ªQEQEQEQEQEQEQEQEQEVv¯Ç”zuçò= õ3Æ7.gjüyG§^#×ðÏQÓTKERÊ[öåºÇðŽŽúÜš¬\=Ô’‰Ùòf€È( ¿—¸;r0ZÅÖõMcÃhºåÔwt#7´ªîÊ]+ `‚ÝÉϵ\¸ÔÖu £sØg›wâÍR?´ÚÚXÁwªÚÜ]¬–Èy‘Å™^¸fó-×'#,p:V‡µ‹½Z+¿·jzeì±lÝ­œ¶s[’ )42»:œA;I¦0OròòäbüúÜê(¢Š@QEQEQEQEQEQEQEQEbxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]=%°2¦ŽÛô›'Ý¿twnÝŸ”sÍŸ®æúžµnªhþgöM—Ÿþ»ÈMÿïmûÿ?_ï|Þ¼Õº`T‰³«\¦ìâŽÝÝ2ÒsÜtë´g[[uR/3ûZç?ê|ˆ¶ýÿ½ºLõù:méó{µn€*j²Ùí¿¿„gvÞ²(Æw/^˜Ï=0ßtÛªš§™ödò~÷Ÿ~ÿÝówÜç¦Ùþ÷Ëš·@TÒÛ}³Û¿0ÎíÝ$aŒîn1ž:a~è·U4¿3ìÏç}ï>l}ÿ»æ6ß¿ÏL³ýß—nªJØÕ­“v3§nî¸hùÆîzõÚqž«œ5º©/™ý­mõ>D»¾ÿÞÝ:|7uù¿»Æê·U5†Ù¤Þ¾í›`s»vÜ|§œî\}w/Ôu«uSXó?²o|õÞCìûÿ{iÇÜùúÿwæôæ€-ÑEï/D3Ä'•Ô¹û‘ Iòñ»Œ/,%ùÿO}c¦ÙÜ=Ì£•Îc„©ÝöwäeqƒÁQؖ鬼ϴêgÝóÇ—÷þï–ŸÞã®~ïËÿÝQëÖ¶7ºTðjˆÑÀ 9É9ãçvqŒsœb°ÅRöÔe ÚèÒ”¹&¥k˜ „NèõH88¿œìõ‹á–Ûâ ͉t²¸Ó仑F}Ó –MùbNHëëE¯ÃßÞÊÑGox&Q¸Ç4“FøõÚØ8ëÏN t~ðn‰á«‰®4‹Só.Çvrä®sŒžÙ¯;€©J¤j9¦•öFÕ*ÅÅÆÎþg®7„‹uÕøý™ç†û,j˜ÇÙü¥É¶Þ~ÿ™ænòðù Ÿà¨õ+MÚ®·¢\ÜÏa§iéu«­ÜJå­Òâ"¨ãÄ$k¶ÀÉã"½^Šõí¥¿¯øsšúßúþ­sÎþ¾²ê¶º·‡^Þƒ~£áòÖéÎþ5$$«ÆF÷$2ÝôJ(ªnä¥`¢Š) (¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+;WãÊ=:óù¿†zŽ™ã—F³µ~<£Ó¯?‘ëøg¨éž1¹SgtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«­ÓÛ†1ùcîû}ÞÛw“©ñªÄ: ÏÇý¶·? t1Æ6¬”dü>ÿ‘óÆõÆÃÿAš“ûźcËm£®—-žðÈó»‡ "¨ÈtAøçéKðûþGÏ×ýjÖ´º›R²K›Hõ»dVy¡¸Qr ·ËyH‡n‡ïnɯ?õwÈ«Fý·ò¾ß#z.jîÇ1«øsƺå«ÙjØðÚÌHñ³–UÞŽH¿È?3]~§áQs©ÜßiúΫ¤Kvª.ÖÅ¢ÛpTm D‘¾ÖÛòîM¤€2NÑŠwþ!ÕtWŽãWµOì°?0D¢Ë*†Lû†[ž=êOxÎÓL¿‡M³2O¨›»X& i4‘B²È ‡•Wb>ÆÈ Àò§#;`£B+–‚¶¤VszÍšøjÎMWQÔRk¸//mͤŠ]¦ 3󧣜®O9òÓÒŸ è?Ùw7Ww•ö©}p©ÜÞ•„i¸ªh¸ÜôÏÌyéŠv¾9ðõÔWrÅ|þU´~iw¶•TÝ´4$¨ólcÝ’ÊÞXüm¢½Íµ¾íE'œ¨É¥Ý#G¹Ê)”4cÊ À€_h88Î+µvF/Mÿ¯ëC¤¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ÿò6xƒýÈôdõÓ×1áßùŽ‘L‹$Oyh®Ž2ˆÁw³Q]ÛAynð]Áð>7G*VÁÈÈÑ`™%‡HÓ£•2:[ *G ƒŽ ;ÄE¾¹¦Iet]U¹WC†C‚2Бô$VªR­JTâõf”¤¡5)l`Þév·xKÛÛ‹„íóá¶“o®7DqÐ~U›àÉÎãÒY$Óå³’ø,›~IÁB*€ªzà Ò£ºø²hOkŧ ?iQÎÖnø'…=2{㑵á?[xwRšü_ß_]IêMÛvâÕ¹¯7ÄѪ§9.U}ü27©Zœ â¯‘Íø·Ä:îƒâ\Y\[]ZÅi§Ç ƒÄK,“Í$AÃ4ȃ’ÝØUܸÝQ_x·ÆöTRêz]®šb3Ésu5˜¸ÄH£h.ÕIvRÊÒíÙ’ 7ËÝj6ž¿ÔöjVúMΣ䵶ۄåòœe£ç¤u^† OxQ ·…<1¡¬6ò¡A§Ä)2ê6ðÇjò9ùG¥{’~×õùÏÍVþ¿3ÏÔú.—%ü—Òi¶M{.À÷ aÜ™ldí èzTW^Ñ.ín-®´}:{{œyÑIjŒ’á‹ÀŒ™™¹îIêj–‘·õ¢Küþò}¯ëô8âÏ[Þi+¬éöšM»y)vò[›’Ò¼íCäÎÆßrÊÌ$L¶ÒàŽ}.±-ü#á»k‹+‹hñOb»mdK(•­ÆIÄd.Te˜ñŽIõ­º¡ER¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬í_(ôëÏäzþê:gŒn]ÎÕøòN¼þG¯áž£¦xÆåLÓÛ†1ùcîû}ÞÛw“©ñªÄ: ÏÇý¶·? t1Æ6®·Ol~Çå»í÷{mýÞN§Æ«éþƒ?öÚÜtü1ÐtÇÚ²Q“ðûþGÏ×ýj‚ñ.‚%±´Ð%¾‰\¸ŽáU\DGÜÏãŽÙ©þÈùãúãaÿ Í[‰ªMsj—V×7fwEA¡–$Š!`pFNìó»nZóñðÃÏ‘W¿•¾W7 æ¯Èq^"_ø‹O—N Él— #2½ÒŸ¼FÜ@‰Æº­S·š­ËÁ«C—u{o¨OlÖeå2Ååð²ï#—‚„ƒ“œqVdñT¶wP®©§Éohü=Ò¬Û"9oó"L[ûÖÄúæ“o«Ã¥\j–1j“®ø¬ÞáižU ÜG ìkl“T®¤V”߯¬q±|=»0Û¥Ö·¯¦Û-¶“"Ùl0–9¦ùÈ”æÀŒ€NE«¿k†·a©jƘ·0ybIìtÙ-§tI ùk(¸'Ël€Ñ¸‘N3€q­cÅú—¡É«M©ÚIh¶ït†)ã&hÔ€Je€nYFsŒ°éðø»ÃsÂóCâ !âHMÃºÞÆBÆ1—'w 7/=9µÝw{ö1™·EbIâï ǧ[êxƒH[ —1Ár×±ˆ¥qÕU·a€knQ@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£¶ý&É÷oÝÛ·gåçsgë¹¾§­[ªš;3i6M"Ê®`BÂUepvŽ31×,O©=jÝ0*DÙÕ®SvqGnî™i9Æî:uÚ3Ž­Œ-º©7öµÊ•—`‚" VØNé2ÝŒð3…•É9mÐMQ¶[!Ý·÷ðŒîÛÖEÎåëÓç¦î›uSTf[d(²±óáXœ'†ëÎÎC ƒn€ ©¥¶ûg;·~þaÛºHÃÜÝ:c|Ã+#`òÄã9ÁÀQ€-ÕI[µ²nÆ`”íÝ× 8ÝÏ^»N3Õs†·U%fþÖ¶P²ì0JI ÛÝ;±žN2¤ðØ#0º©¬6Í&õ÷lÛÛ¶ãå<çrãë¹~£­[ªšÃ2é7­ÊÎ r¢%frvž+)'Ó ¡hÝQ@Q@55M¼Å,¾[³2F@,<·ÀåÔrp9Èɼ£ÝÌ»±§Ý63Œ467ã~ûW¯÷×8ù¶Û¢€8MYõ} biíã€*$‹, !‘Ê+—ÈuÁËg=r3œž(xŠæûÂð ^QçŽÙwIh|æY”ÉL“>Ý@« ÖàžTѼA¥‹6ä‰íC²ü¡q¸õáT~¹ªWŸ5ýI>Ϫx&³|,¨–Š¥”2¶íÊ-|õ2 mëvwÊ­'vŸÊÇ[ã+ûÈ‘§é·"ÎãT¼û'Úö+˜Fò1Pß)r#!rrU€ÁÉÕou/IõbïVÓäûB»\Á Ȭ!ó&$AÖ)p3ær@5ÕkzEŽ·`ÖZœt•Æ‘‘Ôå]He`@!”‚CYñxGF]-´ùm纶k˜îÛí—s\»K+#$fc‚‹ÆqŒc5ô6ÒÇTr°ÞxŠÃY±>&Õu;;Rö°E$vòYÝHêÒb¥Ì…Ô6R06rI úEaOáM&}kûRXîÉ‘f1ý¶qH sÿ(°Ú¸%s•¨·iÞ袊) (¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+;WãÊ=:óù¿†zŽ™ã—F³µ~<£Ó¯?‘ëøg¨éž1¹SgtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«­ÓÛ†1ùcîû}ÞÛw“©ñªÄ: ÏÇý¶·? t1Æ6¬”dü>ÿ‘óÆõÆÃÿAš©Xk÷Žm>çJÕe™eà¶.„ÑryåIúcéW~Èùãúãaÿ Í[ókÅaŽåotäÆ&ŽÒc²FCÓç/€Hÿgã8ù«ÎÌ)aê({y5Úß+›Ð”ÕÔUÏ?ñwˆnüI¤Ï¦ÚhšÈšáV$2[mP|ØÛ$ç…oÒºÏÝ¿®u#oí…Õ䤾µwj`xÕ£ h¦ÁXÛèxÖô1ÓdÔ-ìæÌ2OŒf†EÈÇÆí‚sÆqš–ãÅv0\ÜÀðÞ‚ò;+T»˜€;³€?|œ €q[eøzTSTÒôò&¼¤ô’±Ë[øUKo¡—OC¯Z˹Ý–Êf-µ#ùFèŽòÌ~S¿sóáo/‡µã¢ëí±²ÕõK¸®µ»p¥8‘£óü êHGÂew9®êŠîÿ†1½Ýþg‘/€%kí¡Øë·wêgg¦¬Ëiij&9‰“&Ä" °¹ç­wõƒâ=+¸µ ™/æ³ò.!B`–5Þq'™á~vŒ`ô4SÃúÁ’êåžëUº´6ÑM»ÓÚ–œ6c#€DC—ž1Ã5®î“Q×o­ÎÚîHd+¾R©*G»«rYóœ|ú7L6wwRÞÝ^O2$e§ª…ˆ"¨êíÖ¹Ÿhzòë’j>62}¡ È—LË´â1Æ=£_ÌúŒyù*µi%E]ß½´×Ðß(ÆOŸ°\Câ}ü1aÔ"Mr&@ ”æßyãïçÜÔ·¾)–óáe÷ˆôíÖ× c4Éò‡)"‚*{sXri¿gî´/•ÕÿÖIÕH#ùWC øHÁðá|1©\6e·–¥·À#Ì,I]ÀŽ7qzT`V)9{ueÓ[þ¬º®žœ®ã´Ï[]ki7zn¥§êO" ‚éb'kG#¬™Ga´ˆdw9°õˆ0¦¹o²imôËydûb½°,Q#¼ ‚‰ù­²PxØÍà8þ×&»¬>´²$‰ªŸ³‰Ð"º*y[q,œÉùÉÎ@"¼ ´P¬·:ÈpâO6UÌ›ÅÆì•Psþ•'#ÐçÔvèr¯2ç…%Õá¼Ó¯´Ëh-md†ÚôC¿.fÜù‰ßƒµF ÈÛÐwëkÞ5åÝäÚ®¥ª]ÜÅ/5é‹;c.T"¾{sõ­êº _¨QE†QEQEQEQEQEQEQEQE«ñåyü_Ã=GLñË£YÚ¿QéןÈõü3ÔtÏÜ©‚3º{cðÆ?,}ßo»Ûoîòu>5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕÖéíÃü±÷}¾ïm¿»ÉÔøÕb?ÐgãþÛ[ŽŸ†:˜ãVJ2~Èùãúãaÿ ÍU4OéÞ¶šÇSº6×i"‡‰‘‰Š5ì=TÃÓoá÷üž0ÿ®6ú ÕÔItf‹í‘éÖ÷¬¡Ô‡Ì6àñÎ7g³òן£J§#©>WÓçcj3qM%tyÇŽüq§kº Ο§]É=ÌÈ©i™gó¢ tô  —žÕîüA¨Þ MBÆK¥—ÉŽhƒO{Tuˆ%áˆ/=F} GIkè-¼¦‚æPLK=›Â_ÎÒÊ2FGJÙ­°8háï(˘š³rÒÖ9O‡z<šE†¢?³†“gsxÓÚiƒgú$eJâ2PeÕß Hùýs]]Wsw1 (¢Q@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£¶ý&É÷oÝÛ·gåçsgë¹¾§­[ªš;oÒlŸvýÐ!Ý»v~QÎw6~»›êzÕº`T‰³«\¦ìâŽÝÝ2ÒsÜtë´g[[uR&έr›³ˆ";wtËIÎ7qӮќulamÐMQ¶[!Ý·÷ðŒîÛÖEÎåëÓç¦î›uSTm–Èwmýü#;¶õ‘F3¹zôÆyé†û¦ÝSKmöÎwnýüÃ;·t‘†3¹ºtÆxé…û¢ÝTÒÛ}³Û¿0ÎíÝ$aŒîn1ž:a~è·U%ljÖÉ»‚S·w\4|ãw=zí8ÏUÎÝT•±«[&ìf NÝÝpÑóÜõë´ã=W8` uSXmšMëîÙ¶;·mÇÊyÎåÇ×rýGZ·U5†Ù¤Þ¾í›`s»vÜ|§œî\}w/Ôu õ;ݾöÕvgveQŒoÎyíåÉÿ|7¡®~ïRKíVîÚ1stÐHcHí.| ª,C¨$3í ž00ÌOW\‰mõ½7Ä“êN–ú”W(F#•PÆqç=ÕãÞÜùùŠ«*IQWwÖݵÿ€o‡åæ|Ï¡n}CĶvãìö¿jÚênRf€Á‘gÆpz„ëØVÅ·‰´ùü$Þ".ɧ¥»Ü9#Bgpú‚¤W.©ãØ?០èç7‰ÎÖ=«¢ðw†ž?†°hä{Zky¢¸D~THÎH êuõ¬ð2ÄÉËÚ¦•º÷.ª¦­ªùþ%׬¬RÖ<;ki¦…Iw&¥æMP|Ôò‚«fbÜeÏB`Õüs=¾²š^Ÿc`÷3ÝÉko%þ£öXfhÖ2ÊFçÌÝ&Õ@§;äcBÃAÖd´¸ÓüG­Zjš\–¯k妟äK `t¯æ2³mÏÝT±8èG𞫆,ô{=cO™<™#Ô©¥ýª;×îw(²&ÒX·+†Æ8ê?/ëúýNXùÿ_×èuÖ’K-¤2\CäLè¬ñn å±®GŒÔµKCÓ£Ò4[ 6$’+8Ý^C–`ŠïÅ]§+]ØKmBŠ(¤0¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬í_(ôëÏäzþê:gŒn]ÎÕøòN¼þG¯áž£¦xÆåLÓÛ†1ùcîû}ÞÛw“©ñªÄ: ÏÇý¶·? t1Æ6®·Ol~Çå»í÷{mýÞN§Æ«éþƒ?öÚÜtü1ÐtÇÚ²Q“ðûþGÏ×ýj‹Ãúž‹žSY:s\ÆÉ[½…Уù~n@ »\÷ÍKðûþGÏ×ýj×ÔôßÝK%ýîƒÄ'æ{Ól¥½Œî+þÖÜcžœ×ŸÃ*üÏ•«þ67¡S’ê×¹Çx÷WÐ?°n[Gm&+åEhžØD$çE¥yÎ7tíšÆã\ÿ„›[þË\LðH û8»·ŽÐ c‚˜ oq¹ÎGÝ‘[ûÀ`vÚnàÙ®Óû:ÛF’å>u”fïÍuU® õtýþkÿ]Ù5ªóik}gŸâ;]NO˦¬(ÖOi5ìÀÜËç¼$œs‡ËpEzWwKQ@Q@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£®Í&É6ìÛ »vãåcjãéµ~ƒ¥[ªš:ìÒl“nͰ Û·n>QÆ6®>›Wè:Uº`T‰q«\¾Üf†í½pÒq¼õé¸ã=9kuR%Æ­rûq˜"¶õÃIÆvóצãŒô\å­ÐMQwÛ Û»÷ðœmÝÒE9ÆÖé×8ã®Wï uST]öÈ6îýü'wt‘NqµºuÎ8ë•ûÂÝSK]–Î6íýüÇvõ‘ŽqµzõÎ9ë–ûÆÝTÒ×e³»1ÆÝ½dcœm^½sŽzå¾ñ·U%\êÖÏ·8‚Q»oL´|go:nÇFÆVÝT•s«[>Üâ Fí½2Ññ¼té¸gP u‡«ÜÞÝ]ÞiVVv²§ÙU¤’{œHd\òœ¸zñÏC[•Éø«AR¼¸ŸPÑ4kO0D|@Øñ™NåO*LœJ@Ç=GzÙÓ/îçÔn¬ïí`‚XbŠ`aœÊ9qÝyg×­PÔuFmBâÜ\ÝÀ`p-!»üŠÅˆ(ÇxŽäîE xn9'I4}ÇOò#† +0$Á˜¹Ûå ]ÞsÎ[=kŸ×î%ð׊n®—L¼šÚé]ÐÙA¼naìÐ’ŽO®G¾<üÆU£I:)Þý7¶¦øu'ÍØØ—ÄڜɤË{µ‚“ »‚ØÈF‡h89Æÿl×K¦êÚ– õœ«%´«½\tÇËšóIüs+„ØZñDcþ‡Ø0'¿ ­o ø~êóààÐîÔÙÝ]ÙÜBD«Ÿ/ÌgÆážxa‘YàqŠ®^Ö-$º¢êÓ‚µŸÜîiXü@ðíåÖªbÖt“¥éÑ@òê+BFuØÍªFÁÔó¸që¯uâmÒ=>K­oL‚=Gbi.ãQsœcË$üùܽ3Ôz×/††´kŠøsáÝ[@[ˆõiod°Å¥œov!TÜNÙd$ Kq3…þÚÐüƒ¨QE€(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+;WãÊ=:óù¿†zŽ™ã—F³µ~<£Ó¯?‘ëøg¨éž1¹SgtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«­ÓÛ†1ùcîû}ÞÛw“©ñªÄ: ÏÇý¶·? t1Æ6¬”dü>ÿ‘óÆõÆÃÿAš­øZH.´˜Þñî EåÅ—q$ATCtFòÄç¯?J©ðûþGÏ×ýj±«øOÂwš„×\«<˜yʰïÎÌ>@sÇ^¼u¯?…xŽF¤•¯¿¿ÈÞ…EÓO^ňR[ÙhòjV-p5 4Á,—RÈc&X”à3Èb­føïS½Ð|]¯ÝØk oy.ŸeåZÌbHŒ^t‹, ˜ñ’å°ÁweÕ—ºh~øZ9£—ìR9F ÌÌ Œ‚y®ÖµÁaªPOžWm“V¤gk/êç‡]øÇY¶Ñlå¸ñ–‘4F[²iZ…¥ÍÕÎÑÄF’ᕃ;nDnT¦ 9 Üx•<_âø¥Õç–á¯oìù„JR6‚,H |S$‘òã¨&»š+½;^Ÿä`õV (¢Q@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl £ ¬i¡éËQÛF!ÈhÆ>fãþßSÖ¯UM·é6O»~èîÝ»?(ç;›?]Íõ=jÝ0(±rí€_4ÛBƒÎKŒüÝ9?Â;òÝõT‰³«\¦ìâŽÝÝ2ÒsÜtë´g[[tGYXÞÒ1(R¿i€Ç"d#ø—œãõìßtÞªš£l¶C»oïáÝ·¬Š1Ëצ3ÏL7Ý6èª:2Æ–’‚…ûLäí939?ÄÜç9ç¯eû¢õTÒÛ}³Û¿0ÎíÝ$aŒîn1ž:a~è·TfXιhÄ/š-¦ Iç¢Î>nœá=¹^zªJØÕ­“v3§nî¸hùÆîzõÚqž«œ0º©¬6Í&õ÷lÛÛ¶ãå<çrãë¹~£­[ªšÃlÒo_vͰ9Ý»n>SÎw.>»—ê:к(¢€*Y6ë@nݶp1»;v‡Üq×8ÂõÎ9ÜÍÕo ¤pªmÏ'•?*§k1'¹áOÎFr#‚¸¼½/$¤Å8$ìù"lŽ pBðOb_›ø‰f-|>—ý¥Ömû¦’L)…“$sÈN}Ø÷byñsœ(ÊPÝ#J1RšR-Åm&&¹°¿ŒŒïµž(JŸB²K‚=Ãzð8'Oþ"°×ãœÙ9@å$‰Ê–S’3ò’8à‚A®B_‰º »Ô² ðDrr?*­àmf|FšòÆI&·JxÊ0Pæä²Ž@çiÍy¸,mZ•#NIÛ]ѽZIAËo™èZƧ•m÷ #$—Ûî’EE<‘ÆXgÚ¯W–x—Â×—¾.¸º>[ë·Ô¬îm5§xìvñ˜·Ä»ÛÌB ÈÛQv¶üç$Šçt‡7ÑÃäê^®÷%²ßÉ;iÂÒô%ÌO$…¡ <§ Ćì3ËûqÖ×ïþG#Óúþ¿®ÇºÑ^3'Ãëë;2ºnGK„º·Žtíp-ôrEnNìm0ESò¨m‡h&©ê¾Ôg²SkáG[sss&Ÿ£Ì¶rÚX«¬Kûè¼Õ –YdW·“ro=rT‹_ëÏúþ­woëä{•Ø `2ÈÍ:‘+`¢Š(QEQEQEQEQEQEVv¯Ç”zuçò= õ3Æ7.dkíå„“ŠFÌâ9ß¡žÀŠ=±øc–>ï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcj¨¿#‚1Œc'?Úö®GLÔ.nþ%x‚ÞY_ìÖú\>L;‰Hó$y y8>ÀtQ¯ðûþGÏ×ýj¿áÉ£¢¢Ü^ÏQÆ–â8Ö2®¾J¸:6s¸LcZ¿ä|ñ‡ýq°ÿÐfª·^7ww2imâx-|ç@–’B±nC°íÁÇÉìyù†®#‘ÓiZûü¼™½…Ôº‹âø-ü9dÚΓ4‹{f›ÕV(cGXÔ«ˆã]à ÜðzV¶³â}FÃÆÐh(¶e/U&·œ£%c$r ÜÈûËÆÃä,îçàðu椚~¯ªxŽ7p¬-¯e]“®KmÊ’3û²väRG¤Ë¥iÒ¼¯-…£¼²¤ò3B¤¼‰Žxå—jàõéZ`põ¨Åª²½ûHšÕ#?„ò‰|O­ GF×..4V—QÒɳ…"uKA=ͪ)™Ì‡Í ¼tXòTŽ3‘ÐÙx—Ä7ú£èϤCªÛÜN’êg#[̱¤-ˆáóƒýúƒ™<¶ëž:¨|/ @׆JŒÞ%-#x¾æÝœç8æ›7…<;6‘•6¤É¥ÀæH¬ÞÎ3 ls–TÆÐ~cÈÏ­z-ýoÃñê`÷¿õ·õèbxgÄÍ׊®4ýkìpDÂvµŠ+WÌ©Š‚U¸QÆ6®>›Wè:Uº`T‰[ûZå‹K°Á³lt™ mÆyÃÂä Öê¤KZåöã0D7m놓Œíç¯MÇè¹Ë[  š¢³[ F•OŸ ÌlÀàH¹)8Ç^0FrTd‹uST]öÈ6îýü'wt‘NqµºuÎ8ë•ûÂÝSKV[gÒ±óæ9‘˜œ•鯯 nªik²ÙÆÝ¿¿˜ãnÞ²1Î6¯^¹Ç=rßx€[ª’«k[0iv%m„î¸Ï`yl’VÝT•s«[>Üâ Fí½2Ññ¼té¸gP uSXVm&õciUÌÄÌ®ÓÊ•V úaIô¥[ªšÂïÒoSnýÐ8Û·v~SÆ6¶~›[èzPº(¢€*Y+ @³JCN ‡f -8\¨g= çœäÔ®–Ú’LÞ\q±ÀfÁ<žÃ“ì8à ·v¼½t–Xž ŠŸ$\’cð¥r pO €œø‚³ØèÖ÷úåÄR6Y‚. Ô6UFáǼ„t|]YR£)Çt(ÁNj/©¨/!‚M—úR¨#+%œ/t¿Cµ)úŒÄó ÷O¿ŠY4˜G1Èf6FYHb+—UðŠ;)]€q°óT|}eqñtÒÔZ)ÚHív„Þ.HRBñ½=y¸,ÎUêF“W½õØÞ®–{QÜÏ ­¼“ÝK0F¥ÞI*¢Ž¤“À庬ZóüOw¸Õu;+Tºƒìqæ_\A-¾ÄÞ¬ñJ-×-æ‚fŒ²äpóéúÖ¥ ø£O½ÄÚI§\]çI$‹q%g9ÎÎÀ¢O˜Æ@ûÞh¯ij¯ý_ðNkkoOÄöj+Å"‡XDöú§ˆ¬´ô’ìè§Ó5K2ßbîYÊ#V/æ‚n#.¹Äï¦ëúv‰¤Ë ÏŠ%{Í*'Õ‰žy¥VÛùžZ’|¹|¶ŸˆÂ±ÁÀ,¦•ÿ¯_ò×±'«ZêÖW÷6P]F×vîRHIÃà  $d|Àu«Õá¶š~¬uKˆô4ñU¦‘u~­æL×BfŒÉ` 3K™>è˜e¹ pÆ–§my¦j76z¬¾->·žãÈ’Ò{é§Þb£Ý$Y£Ü`–*Á袗ÙRò¿ÝoóЮǰQX~š[ø~k™$–y4øä•‹;1I,O$ŸS[•R,šì(¾d˜QE# (¢€ (¢€ (¢€ (¢€ (¢€ Æñ'úƒÿ\›ÿC޶kÄŸêýroý:RØhå+“Ð?䍸£þÁpèÄ®²¹=þJŠ?ìþŒJ„S:/‡ßò>xÃþ¸Øè3V‹-õ›™Ñt¯jMsö`Œ! » óõ5¤dãgþOðz ZþöÇ ØÝ¿´û­Wž#x[ÊO·X›i-%Q°SÁf9)?C‚»Š°VÜ£ÞüGªJ{¤€ÜLÏ0ÿ`ydpˆ `í˜dààdàô¯7Ñt).u¨<ˆ-£¼ŒÂî×zΣq2Û­Ì2¿—Êã–…#ã&½Pðî—¨I%ݯ™%ô1ÛÎÂGRÉ3&0FÒ¬ìC.89àbêÔö²sµ¯ÚËòVü‚iZ[œeçŠuVÕ¤Ôí¬¾Ýö{5ƒNŽöâxÝ™î3åì·iÊ®HX ÉÀÍ:ÏâD÷rèàhÉm æÕ’[ë™-—Íóš&†ñ$ ¡o-ÌNF0¹ÈxChö²êM.P‹†Õ.ÀÛ¿n&ó<Áþ±Ç ѱ҈| áød·h­nU!9ýº)ϘÒfH÷ìïv9pyú ³Ó~!ꚌÐZÛè6I¨\L±%¤ú“Å5¾c–Oô˜Ú ñEÀ á·eY€ÍE¨|Q’ÎÊ)¿²#–XZdÔm¢šy¤µò¥hÙ‡—nÊP”r­#D;`ãbçáÆ$–g›Sm¦³i]4Ì¢9cY¼Ýñ¨ó Ú§F9«—>ðíÌ –w Ãäiy$Ä{ƒ‚Il^ª‘6uk”ÝœAÛ»¦ZNq»ŽvŒã«c n€(ë HòÊ¿é0rÊŒ?×'1' =AåA8zªj²Ùí¿¿„gvÞ²(Æw/^˜Ï=0ßtÛ ¨èÀ I0Êßé3òªŠ?×?)##¡=Iå€9zªim¾ÙÎíß¿˜gvî’0Æw7N˜Ï0¿t[ª3ý¹hw(?f›å*™?4\‚Nà=€ÁÈÉ.oUI[µ²nÆ`”íÝ× 8ÝÏ^»N3Õs†·Tuà‡¨‚Ê€ÛIó:£òžHrf zœUꩬ6Í&õ÷lÛÛ¶ãå<çrãë¹~£­[¨®î`³·yî犤•ªäàdž:‘RÖ7‹¥Ž %™Ö8’òÑÜà(’Iì(3[ÒþñVÓî.WÊDš _÷q¨kÇ ŒœØÀéêÆØÙxÃþ¸Øè3VW‰uOZL–þÕô}>9n]GwÏs5ôË@±¹lª>GËŽ8V­_‡ßò>xÃþ¸Øè3Vµ3Nê?µjv†;‡VKKí+˥̳FågÊÊ_=°Tp­#'4“õØJ×÷¶9­"ûÅZt«¿øƒIÔ¢@­nÚ,’"oKÛH˜ ®AŽíöžC$¹Vû®·©Ã£é²Þ\$²*‰C/+³DPHf 9äÍyN‰¢Íw¬G{g­}8¸ŒË,×ZaŠ0×VóK# eVg?f^NOéZLJ¡ÕZôÏ{~‚â8U9@[w‰ÙÒXÁÜA$äŠÀæêÍT›”U—oêß‘M/{r‘ñ|pEuý¥¤jš}Ì¿j[i¼—’eÞSjyr2–Ý´c#ýbúœP>¶º¸¹ŽÎÎõ`¶¿[ /Y"’4L‘¼eVPèß?ÔqóÃë7†#¸þÌmOQ¿Ôn,&3,óùHÒòG¢©PÊŒ”\“Îs®>Ø^kmªj7ú…åÀeò„ÂÜ ™fòƒ,aÙ7(vl ã棪þ¿¯éù§õýyþeoøY`Bï¢kiot‹%œ¦8H»F–8•‘D›×&T?:©ÁϵXoŴí˪#ʲéȰ¢XÕ›ÍòÊâHñ‡$î ƒŒ_xR]V'Öï]t½=-:Ö;´¸1ªÍŠ7}š& <”\1~ðÆOE©ø*Úîúâú×TÕ4Ûéäw{‹Gv׎4hðèË´ùHrFàGgtûÿà_õü5]¯ë¡RO‰:i÷ú†ðéVkëæòã†G‘chÑK¸9a2ò@UÁÜËŠÖð_ŠôïérÞémòÅ1‚Tób—c€7ÄSò±ëƒ‚Gà­. ïJ´k›ki¤ŠhÌRöïF±˜Î?‡ÊCónÉÎr+cF±¸°´0Ýê—šœ…‹y×k ¸ÝÄQ¢ãðÏ=ié¯õýuü ÖȽERQEQEQEQEQEQE‰áßùÌþwÞóæÇßû¾cmûüôÇû?ÝùqVꦖ»-œmÛûùŽ6íë#ãjõëœs×-÷ˆº©/™ý­mõ>D»¾ÿÞÝ:|7uù¿»Æê·U%\êÖÏ·8‚Q»oL´|go:nÇFÆTÝTÖ<Ïì›ß#ýwû>ÿÞÚq÷>~¿Ýù½9«uSX]úMêmߺvîÏÊxÆÖÏÓk}J·EP{RL÷™V\J0K9 ò'#pØ\Œ‚s’ÀA¯ZØÞéSÁª {G0ç$çŒcÙÆ1ÎqŠlt¼½0ÁGœgb‡îD21ÍÆîrܨ„Ãñýõ•ËÃoG+¶Vf|7ÙÜãFFwŽ£€?¼BቫìiJv½‘¥(sÍE¿|{+E½à™FãÒMã×k`ã¯=85ÑøgÁº'†®&¸Ò-LSÌ»ÙË’¹Î2{f¨Þév·xKÛÛ‹„íóá¶“o®7DqÐ~U›àÉÎãÒY$Óå³’ø,›~IÁB*€ªzà Ò¼ü>•ZŠšŠæwÛþÚ¥)(¹_CÐh¯.mcUµñf¿¦h“é–—ÝÏxׄO*mŠÚÔlTWC’d¶ï”)àç‹ÚGŒµ_O¹×<ë'E±µŠ{«iì丹;íÖbÀ¬‹µG˜¶ÓÓSŒÛi©6 ³Õå‡Pº6ÁÛK»Œ®#g Å–S€28Á'8SY1|/³MGR‘“CkkÓpÍ7öBB30mÛnƒôÎ2„íùI=knM_¹L–û[Ó¤¿ÓîÄñK˜é¡£et3IH`ÊÇÊG/?/ëúüAùyÿÀ:º(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€1<;ÿ#gˆ?܇ÿFO]=sÿ‘³ÄîCÿ£'®ž’ØGA èzq ¨ ´*20(àH÷P Å^ªš;oÒlŸvýÐ!Ý»v~QÎw6~»›êzÕº`Q„í˱µAû4?0dÉù¥à€7îNN!³zªDÙÕ®SvqGnî™i9Æî:uÚ3Ž­Œ-º£¬-#Ê«¤ÁÃ2(ÿ\œüÀŒŽ u'… àÕꩪ6Ëd;¶þþÛzÈ£ܽzc<ôÃ}Ón€ ££m$ªÿ¤Ï²0ÿ\üü  ž¤u†$äÕê©¥¶ûg;·~þaÛºHÃÜÝ:cWü¦x<{{¡$Ö‘g§ÛÅ<¶²ÜKz$‰Ú9wåõc‚#kš›ß^‚:_ÃÖŽ‘&ŸäCo[Dxí¡sGEY“iÚ>R¤p8àT ð®Ÿá !´ý,~íåiäsQos‘""ð¨g©$òWÄKR¹ŽÂ Õe"Ž9g¸·„£E,ËMmã÷,##A<§cãé'Ñõ˹ô¡úM™¸–¹Ü®ë$ñ²+l.`8ld†(Æ(³Wþ¼Å½¿¯#º¢¼£Æ_çQ­év¶Û!6×1Ûjvr\³G9Ræˆ0Úà„•ØÁqêÉ÷éE´¸ï­…¢Š)QEQEQEQEQEV7‰?Ôúäßúu³XÞ$ÿPë“èqÒ–ÃG)\žÿ%GÅö ƒÿF%u•ÉèòT|Qÿ`¸?ôbT"™Ñ|>ÿ‘óÆõÆÃÿAš¸ E>'}™u&M8èmL—Wú¬Ñ1%T6ïß(9 p;WðûþGÏ×ýjç_Å÷^µÐî4Áwn¨ñχî$E•r’¤ Ê„uVF ë¬g(&â“vë± ]œÏ‹â&—àÍC^]F3¦GlÓÅymrä”"O.E?i‘NÑÎ0ÀùŽ3„ þÓeâÝ.]zûGº¼²´Ô`¸òa·’é· å$…Õâ8ÏÝ'>žA®êñ|Ö|#¡øsƲÞ]Å3«M¡Ü¤fi$20PwlMÄ…\œq’NX÷ú„õ{ícQ…¢Ó"Òo5K}LÞ-Û•1,XO+Ë É‹¼Î©sÊNò]?Uú\,¬u·Úå­´-Ä} +B©lNüõþ•qüA£G«Ã¥I«é˪L¡ã³k”:àœªgqäÕÍëW‰®5[MF;Mîâ8/,Ùe¹–X¥• l?tå›b Ã哃ŠÃÀìZE·ÛVîÃM’ÄÁ<š•Ä;#ƒËÜŸeEòœ’®Á݉ù€ã…mëWù+??QËKÛúÿ‡þ´;¯ x›Jñ=¬óè÷Ü,<ªJŽÈÊÅy N3ŒŒõÙ¬/é×úU­í¥òÚ˜¾Ù<ÖòÃ#t’V“çR£i±Á`qž3ŠÝ¤XQEQEQEQEQEQEQE‰áßùþ°ê&¹ ‡Êso¼Žq÷óîk[IñU•ׂG‰nɶ²H$žrFí‚=Áúuû§ëSOGœ7ÓR9ÓjQ9¹`H¸S(;J¶q´·Ìœ˜ §‚¡JjP‚Oþÿ!J´æ¬ÝÑ¿}àÝûVmFæÖf¸ic•næH^TÛ¶Fˆ8œmQ¸®pÎ8ªÉà-£Aö{×ù‘’i5+—ž™ÛåLd2FfF ùª~#ø‹§øn :]sO»±KÒØÜÙÆñ€Àd£Nø!±vÁ€x­/øºÛ_Õïìì,oLsKn÷­åL±°W æDnr¢är20OJ]¿«_©b/ é1Ù]Ú´7Gwn-'k‹¹¦’Hr»¹oùhüç<õàa×¾ѯ|ÿµÙ DÒ´ò#á¡òXõÿž.:wëÍmQFá±Îé~ Ñ4Ëä½·‚êKÄea=Õô÷eUÔe¤v' +Œ_aˆ/¼áËâþ}”ád²¬W“ijvr$Tp$¤rgnãŒWSE–¸ð‡n.&–{K‰<Æ•¼¦¾œÄ†Ee¤{ö&àí g9ë]H(¢ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ Æñ'úƒÿ\›ÿC޶kÄŸêýroý:RØhå+“Ð?䍸£þÁpèÄ®²¹=þJŠ?ìþŒJ„S:/‡ßò>xÃþ¸Øè3Vo‰|kᯠÈßð“ßkIq3Ü̾EÜJ-ËÄT8ä|¿(9è4¾Èùãúãaÿ ÍU5 NÞõŽ™gªK¼Y^[›Hȯ®àK26Xr¼r3‘¹N‘iYÉ]zÛñ³ü„’nÍØÀðÏÅ]3XñµŸ„$Ô/l8Íâj¿îÃNî]ÛŽíÓÆx a\’¥}NÔ¡¿¹Ô!…dW±ŸìòÛò9é‡qÎkÈ¡‡\—_±»Ö#ÔM´2ˆã›PžÑ¤ýö¡`ëLå¿ÕJÄáTg B¨ÖÕ|)w{âëù¢ðûG{&«ݾ¼ïØ­Ö8„‘‚Í‚H›Bm;²N*êr{F©ü=/ê¼—ŸB"ÛÞúõ=:òå- 2ʲ2ä.#œäœnA±áÿ¾¨èÚ˜Òà‡T]JöKÛ¤e2y å¾rÉ–ˆ…ìpp0p–ªã–›ER¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ÿò6xƒýÈôdõÓ×1áßùÿ‘óÆõÆÃÿAš¡M#ÃØÅ{«O š”ÖðÝÜÇk,¥¥V|ì3¶vH{œ+À$MðûþGÏ×ýjÈÖ´˜¤Ð,­í,nã{Û+K—º³k•d•b(]B[KâŸ#É\d|ªGEFnÒ9ëÊQ‹pµüö¯<7¤ëÚtšnm«ØNÖ¸¿†ÚÅM¤“\4¶É%HØH9äe>¡i}ow5ÜVòo’Ö_&a´¯µ[õùYOµäQh–Zw…´ø¢Óf·m;QÒmà’âK—bT‰åoßC ïË8P@  ]Ô-oGŒu_ìÅñZ¼š¼ÂU.RÅ­|¨D¥›ùD€n%·ŒqEeÔq…íÿ~Œ¸7(Ýž©us¤^mÔÑÃເ‰ÀRHw&ª kO:]ž¢.?ЮÌ" 67Ïæ#ã,:Ž3Î+Ì£¯_[øvÚÞ$ö¶Ã¨™m®#V˜\[Ë0O”K–”©nHÍPÓì/Œ:-¶§iâC¨[Í¥XQ.VÎ+t …Ä[ƒ‰r$ËŒ©Š»ù¥ò½¿àú è¾G·Q\ou«ëŸ Ûjöú¼sÜF!–6HžÜ’3‚ve°Ü–*~HtmBûPŽH®üYŸ5ç«%ÝÔL-~®»!”ùÀeømÙ\òA‹èßoëúù•kY£i}ow5ÜVòo’Ö_&a´¯µ[õùYOµf¸¯…‘j)¥_K¬ÅsäóC#›ˆÊ3·Ù p@þ Àû‚;WkU%m= NáERQEQEQEQEQEQE‰áßùÍìTêswÞ"M^yín-¤²¿‡,`0ßâ¢EܪJ’;€AàŠóðx|$j)Ó¿6»›Õ•^K5¡NûÃÚÄ:½ýç‡5»kõ¯s Õ‰¹EPždDH› UPCPp9̯ávOêºÅ– Ö÷7–‚‡’¬ ›4ÜýâËiãûš<]âè<.ñí7PšÞH¥\[ùE7GÈcÃHqT8ùvôÉØÿ‘óÆõÆÃÿAš³¢ðÍ„HTøŠM6$’X¡·Ÿ^ÔU–8äh×þ^Ç'`Õ£ðûþGÏ×ýjä|w….õ‡Åé&S0ŒÅ}ª½™û#ê7vUWO0- p äd€­¤yU¹¯o-ÈJ<ÎÈÒŠ/Ùø§LÓu=NëUód†{vƒYÔ.#I’U(d§‘ ‰\±áš>$¯¯WÍ^ ±ðÍŸŒ-φ­t‹iˆÙ8ÓuS|’F5-8ÄÄ—b¿yÔgim…Š®v/ êÞ%×SâTšrk=…´70GŸ{|=ä,ŠY’&·g‘‰gU)2Ê×R0G;®ÿðÍ‘ÍcÔ%¸†!ŽYcI&b‘«0ØHQÜàÇ`jJð^û~‹ixþ%RÕ”\Ku¥:[2éÒ}Žã1˜‚o®%-µyücªn•ôïYÜê)q¨Eu§L˜´ø"ùsÈ#O5²B bAÓ$T= ¶§´Q^7µ¶Óí#¶ñ4Z´ó$šÅõõœ04ˆ‘Ž+”¶’CºBG‡inÒªø¢X|&Ûu A«Åii=íÕ¢™a·ŠfÚ׳ ¬ ,Œ3‘…†:¶´¸‘Ù­Ä-q%ºËž5Wxà ʭœ:€vœ}¥I^+¨xŽ+ ­J}+Å¢ü]EezÜ—¶P‡}Ó$‰W Tb"I wÈn›ã}^k_x‚Òí„ÚY=»ÏrâêHÌ‘¡–"‘Œ´NO–AùWõúƒÐöÊ+ÂôÏ^JÖ‘ê^8ŠÞ ncK½J ,^Ò-ÐÎû!”Æ ¤yI“zãpwë>=×-t»g‹ZŽ;›h渎K©íí×V€LëÇí)hã ÞY‰pêA†×mlKžå-Ä0É rËI3Y€.ÀBŽçž;RWŒËÓüFžÊ]Û^É®E¸KrðÆÚyĨ­NpP3n_—¡lšôÝÝÞøyP¸771\\[´ìŠ­ ŽgŒ3rBŒàœà”–ÉƒÞÆõQ@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£®Í&É6ìÛ »vãåcjãéµ~ƒ¥[ª: Æšœ°…-´a€6Œcæn?àMõ=jõ0*D¸Õ®_n3CvÞ¸i8ÎÞzôÜqž‹œµº£ Æ5˶|Ómb8 .3ótäÿïËt[ÔST]öÈ6îýü'wt‘NqµºuÎ8ë•ûÂÝQÖV7´ŒJ¯Ú`#qÀÈ™þ%ç8Ç={7Ý7¨ªšZì¶q·oïæ8Û·¬Œs«×®qÏ\·Þ6ꎌ±¥¤‚ ¡~Ó9;NFLÎOñ79ÎyëÙ~è½U%\êÖÏ·8‚Q»oL´|go:nÇFÆVÝQ™c:壾h¶˜)'œ‹8ùºp?„öåz0ꩬ.ý&õ6ïÝ»wg墀7+;_µžóNÚŒé<(•Ê«yr£HŒ…#¡£MÔÍåÝŬ¶WVs‰!YÌgr¹`(Ì:£uªzž±äÜL‹yge"gºBÛܨlp0GrO< dã^¼(GšoB¡7ds7€m´{û»'ú›%åäËm q´$ÅX|€ÛIÆöfïZ~=Òh"].Â#-¹c¶€}†´|z ô'ެm ~‹Ãw¶¹‚UäãpPûÈï÷sŽÕ½©k6–¹ÖX´öP@×$Æ.€gåäǽD,\%M=¤TèÉJÇ/{lÐõâ¹ãý ôüé|=Þ­ãÉõ7Ó¯­-£Ó^ܵÔ^^çk‚àyùMwzvµmª]ØCÂËmJæXŒ`‡i`±78ÁH5§\Ø|ª–¢©î»Ûü‡,Cœyl‘ÂøûÃÚ犬âL¶ÓáŽf‚á®die‘àx‚´~X ÈNàì~QÇm œW¯QNÿ×õè„´VF‹4‹[Â×ZF2Z˜ÖÙ¤yq›FݳvÎ3Årúg€ïôÿAvú˜ÔôÕ½MAšõcYÖam$ µb‰òpp žÙôJ(NÎám,q7†uM'WÒî¡û°Ä×ñÜ!•Ьw"edÂÌ€Tíýî9ß»Òç—ÅVzœrF°Ãc=±;·»ÄÊ@Æ0<³ž}+bŠ_ðøv‡Þ!¸™îuT³¿¸Â'óõûÓö‰DðÊ%R}—ý[±)펚?üAg­Á¯Þ]ØÞjЬj"•ÿvàÉ9“%"UóL6ʱ«¶}BŠi´¬¿¯ëþ=oæq:æ·gâQÐtè5ˆ¯/­å‚)/4[ÛxUŠžZG„*rkÄß5=[SÕn¢¹µDžO:ó剋+Y²«:É“jÃr’WrJõ )-Öã¹ä×Ö…´rév:~¨í8’íüCwzè$X”±3ÂË:•Œ‰µJ°xÃþ¸Øè3TðéõÔ—siZ†¡›]Üloâ@œá° ³7dòOÖ ø}ÿ#çŒ?ë‡þƒ5sÞ.ðÄ>"¼iu¤Ûp-i“ÇHæÔ'ß+îF8M€åpH$)b4.œÎÈJ.NÈÝxÞß_°Ò¼S¯jqÉ,°ÏoÞ[Éò$›ÑîQ¾ô}¸è2 (oF¯œü7á‹m Æ6REÿ •óG­N“òõ-;kÄÊ `¬˜b27) Ì 3zeÏŠ|K/¯,4í:NŸsµÓˆ¶ÚMíp¬¸¢Ý·†ù¾[«Ân•ÒëЈ¾hó#Ð*¶Ÿco§[˜,ãòâ2<¥wó;—cÏ«1?yGŠ5fã@ѼAwq§=¼Þ}Õ­­´RÄð¡Ü0W˜K– `¢3qZW>0ñ5­¼Â-ê »»Û+{%G†EhDå¦i |mP7gw-4UN¢¼•üqâ·š &ÆÒÞï\g˜Ì«¦ù&BLf®Ð1ÌÙó#™Ô€$Ž¿Zñ ý¯‡­¬­õùÉ'²žA'ÙŒòªÛH~8%Mì#«¢¼é|Oâ·ñdÚ}¶— å†<6×óÅ h´hï(-s¾0ä'•&Bý쟗./ˆ:ðº’7µ¶6÷ÑG.•u=¨·Bq+#¨¸‘Ùq2·Ì±Œ`gåI^Éuþ¿€ôÜõ «{«‹Iç|¶’amÄlbŒ„ñ×åfúÕšñ¡â/èz‡‰’ òâ noî¤6²F’ù0Ú-JÅ Ab[g¥ij3ñdzö%…殳ΠÖöêQ£DÀKs?¿‘!û™Ûó|¢Õ&º«‡_Àõ:*®•5ÍÆ™i5ý¯Ù/$‰k}áü§ n]à àädUªmYØ¡ER¢Š(¢Š(¢Š(¢Š(ÿò6xƒýÈôdõÓ×1áßùíû C»vìü£œîlýw7Ôõ«uSGV]&ÉdiYÄÊÌÎNÑËU$úåAõ¥[¦H›:µÊnÎ ˆíÝÓ-'8ÝÇN»FqÕ±…·U"VþÖ¹bÒì0D,ÛÝ&HqžFpÄ𹵺©ª6Ëd;¶þþÛzÈ£ܽzc<ôÃ}ÓnªjŠÍlU>|'1³"äp¤ãxÁÉQ’-ÐU4¶ßlçvïßÌ3»wIc;›§LgŽ˜_º-ÕM-Ymœ;JÇϘæFbpdlTc§,0Hº©+cV¶MØÌ»ºá£ç¹ë×iÆz®pÖꤪßÚÖÌ]‚ A›a;£Á#n3ÁÆX[ä•·\‡Štñ6£w5í¦ªöÚó´ýHÙhÌÅ·ºÍmÄ€ã%{ž@®¾«êM"i×M a*Äå pq•¹ÿ€·Ðô {Ãú9Žêå^×Uµ´ÑC»Ôiœ†œ¶d»£›Ž1£þ±¬Zø_Æ7³j3Ioêï¾÷ݸC=Ñøì+Òi’øócGÇMÊ+—…X˜(·k;èkJ§³mÚ÷<Òãân†ÊŠ51 ")8Á?Ã隆4ûÍCàSXÁ µåÍ•ÊE…‹;í61GZîímaiïÛÆUe3ÀñòŽ2Ovç<ÿ Í}t¶PÆI#yqG ¶ äöO°à€qÃa#ƒæ©)·êTêóÚ1V"Ñ4I­âÖµ7N–ã>J]Ý$-.0ÐÄg¨éê*ÐÔlŒq¸¼¶)$ 7š¸g\î@sË ­‘Ôm>•§™%ª+7D×´}z)dÐõ]?RŽ&Ù#YܤÁЕ'´¨¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¬o¨?õÉ¿ô8ëf±¼Iþ ÿ×&ÿÐã¥-†ŽR¹=þJŠ?ìþŒJë+“Ð?䍸£þÁpèĨE3¢ø}ÿ#çŒ?ë‡þƒ5ek¾]G_º‚kSš9dòî‹k<ªŒâRŠÒÜ+2©¹Q eÇ­jü>ÿ‘óÆõÆÃÿAš¸ëé‹-¾#i÷¦Zë?ÙrÜ¥îæk@Š’Fa µþmò¡W,UÃ!rŽRåHÖ…ZM/éô_3ªðÿ† ‹[Kh Ð´‹…kyßìš<ñ¬¢a–)˜ ˜s´ò@È C½ðö‹}ªA©ßiuÎ¥o&îkdycÁÈÚäd`’F y¯Žà´Õõ¨µ··[±± 6úM65 Ü#0‚äeäRX’8 [9§xúóăÇE¬5‹i¾JG«Mm¸ÍpÊÛâTÙ m»HrB¨Ü,Vªæk×þŒ¡(&¤¬í·åøkùêzxOñÜÜÜG i+qrÌÓʶq†”° –8ËÏ÷­WÒ|áÝ1¯d‡H±’âøÍö«‰-£2β¹wG` ²sŒðsŠ«¦øÅ|‹µÖôû‹[ëKÃeŸ•r¶RµI^O³™ [‰•N²¸e<•ú‚}ÅúR¶€÷2í<9¡ÙÛµ½¦¦Á#DcŠÕJ0PË€1‚AöAKªxwDÕ xuMN½…å²\Ú¤ŠÒÚ†æÚÏ\qZ”PvÐCkoÑG (HãBª(Àv©(¢€ (¢€ (¢€ (¢€ (¢€ (¢€1<;ÿ#gˆ?܇ÿFO]=sÿ‘³ÄîCÿ£'®ž’ØSG]šM’mÙ¶víÇÊ8ÆÕÇÓjýJ·Tt‡§Êà[Gó"¢ƒòŽ@BTe$zUê`T‰q«\¾Üf†í½pÒq¼õé¸ã=9kuF?·.Îå'ìÐü¡S#æ—’AÜG±8$–Åꩪ.ûdw~þ»ºH§8ÚÝ:çuÊýán¨ë HòÊ¿é0rÊŒ?×'1' =AåA8z€ ©¥®Ëgvþþc»zÈÇ8Ú½zçõË}ãn¨èÀ I0Êßé3òªŠ?×?)##¡=Iå€9zªJ¹Õ­Ÿnq£vÞ™høÎÞ:tÜ3ŽŒ­º£0Û–‡rƒöi¾R©“óEÈ$îØ ŒBäõTÖ~“z›wîÆÝ»³òž1µ³ôÚßCÒ­Õx¡ê ² 6Ò|ΨÀ|§’…#Ùˆ§zŠ*+»˜,íÞ{¹â‚Æé%pª¹8'ޤP8-ݯ/]%–ç‚B"'É$˜Á<)\‚ÜÈ ç> ¬ö:5½Á¾¹q–`‹‚`u •Qƒ¸qï!ÝWLÖô†¿¼DÕ´ç{‹•ò‘&ˆýÜjÚıÈ#'¶0:z±¶6OäBxåý؃hc)?Âã±ëÀ’@Öšj­)A»]niJ\“RµÎ.]WÂ(ì¥tÆvÃÍQðMõ•ÇÄiÓH{Qht§i#µÚx¹!I Ævôö5¬tŸÁ RÑ,4×a¹>Ö‘*¸ï† TŸläqÇ"ºiÚ¤Mqáû{Ž^ –»HlQ^nÉUTö¼Öéý3zµo[_Ìæî-Äþ%}gHÔ¯¦Ñ5¼öšt—k4+§Æ4;6¿˜q&ù™ïb†§ É>³¯Øê³h oq~‚Ú0YÚâ/)¢‹ÖA‹†Àÿž©×5é´W³þV9o­Î7Àw—7:‚Ëö«>áŽÚúûK{ ©HÞY$VTÞ*C*"üä`I쨢›w%+QHaEPEPEPEPEPEPEPXÞ$ÿPë“èqÖÍcx“ýAÿ®Mÿ¡ÇJ[ ¥rzü•Ø.ý•ÖW' ÉQñGý‚àÿщPŠgEðûþGÏ×ýj[Éuéõ[CÃþ!Ú}Î$Š)¼1sr@1Ƥ‰®AÙ‘€=úÒ|>ÿ‘óÆõÆÃÿAš¡›Xñ.áhä·²º61ZY[N„O9¡mΠ†%¼Á²yd*eƒ“ô©ºš#µ=œ\¬ß¦æe§ƒuSÄ—w~!±ûUÍ厣|ŸØW²Ü IÇ·Ìœ….ÒUOÞçœW¡êþÒõ´›Øe/r!ÌþwÞóæÇßû¾cmûüôÇû?Ýùq@꤭ZÙ7c0Jvî놜nç¯]§ê¹Ã[ª’ùŸÚÖØÿSäK»ïýíÑã§ÉÓw_›û¼n  uSXmšMëîÙ¶;·mÇÊyÎåÇ×rýGZ·U53û&÷Èÿ]ä>Ï¿÷¶œ}ÏŸ¯÷~oNhÝcxºXàÑÒYc‰/-ÝÎq$žÂ¶h (Ò/µfÔutÖ¼M¡ê6÷½“YÁh›]€6€´`ÜI²0VPcÆK|€Ø®›ÇSßXé¶wshås˜á*w}ùcÆCœ`ðTv%º›RL÷™V\J0K9 ò'#pØ\Œ‚s’ÀA¯ZØÞéSÁª {G0ç$çŒcÙÆ1ÎqŠÃKÛQ”/k£JRäš•®b46; {Õ àâþqÿ³Ö/„f[oˆ766%ÒÊãO’îDi÷L.Y7å‰9#¯­¿|{+E½à™FãÒMã×k`ã¯=85ÑøgÁº'†®&¸Ò-LSÌ»ÙË’¹Î2{f¼ì¥*‘¨æšWÙT«;ùœV«âmu~'¾š5½M´Šê¡°½¾HòD,é[³Êijª”™Wr€W†Ý—¨kz¦·áŸi÷ZÄÏ eËé÷CíZÇ7l#åÀ;·ô’<{Uì-¿¯ëúín{ëOëúüLïÍ Æ‡e-®©ý­ Æ _n¼ñýìÆüZ4QMêÈJÊÁERQEQEQEQEQEQEQEW/㵘mQu]KNT߸Ù:'™œpÅ”ð1œd{ð7/QYÚ¿QéןÈõü3ÔtÏÜ©‚<ìø¯üU%zÜÅÇ_XÇôû§8ù¶3Lð¼ñÕÌw÷÷·–²=ã£0 4;qµTÿŽÝŽTvÝ=±øc–>ï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcjÉFOÃïùÐá—#æU=PcÐTEæ}ÐS,å€<Øa¬üC·³(,൑'[SÅåßÙ a1WØÆãáþŸs;‹CS—Oi'•tó"ci‘ÖB¤ “Ÿ1Ï.pOËÅM?„.®t©,.¼W®Ïœ–;6%6²´l¦ßk«çz±àr9Í?xÇTÒ5mJÚ-Úî U´12_•–c<¾Z®Ã‚®~ñÎÔí–çǽÔvºM—Ûn.£·k eòÖV”JHs´˜Õ,pǶÜàºü³üKðxJÞÛL}:ÏPÔí¬Íœ6+S€#Ž2ßs+ò³ÚÌ0pnÒª‹à *;k‹Xf¼ŠÎK{‹X­Ñ%´S,‘¹Ê‚Hˆ` ý}J{W:ͽ•Ò¹]–×&â6\1D=ÈÁQÈî0jý;»Ü],bYxjÎÏÄ7ÌRÜ©¼ÍÊÌ»õ…N3ÒïÜûcnŠ)tK°Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£®Í&É6ìÛ »vãåcjãéµ~ƒ¥[ª: CÓˆU@m£ùQ‘€ùG  Gº€=*õ0*D¸Õ®_n3CvÞ¸i8ÎÞzôÜqž‹œµº£ Û—cjƒöh~`É“óKÁnÜœœCfõTÕ}² »¿ ÆÝÝ$SœmnsŽ:å~ð·Tu’¤yUoô˜8fE듟˜‘Ô¤ð¤½@TÒ×e³»1ÆÝ½dcœm^½sŽzå¾ñ·Ttb ¤˜U_ô™øVF럟”“ÔŽ ðÄœš½U%\êÖÏ·8‚Q»oL´|go:nÇFÆVÝQ˜íËAµIû4ß1dÈù¢à7îA%pzªk ¿I½M»÷@ãnÝÙùOÚÙúmo¡éVꎼ@ÐõU\ i>WdP~SÁ. îÀQнEZòþÎÇgÛníí÷ço› MØëŒŸqIµv4›ÑGÌ7W-04sJ±“iÆØ× NNõ$üª3ƒò`xÎþúÆÊÆåá·£•Û+3>ìîq£#;ÇQÀÞ!zÅ`Ê AèEgøƒH·×4É,®‹ª·*èpÈpFAú>„ŠÇJU©Jœ^¬ºRPš”¶0ot»[¼%ííÅÆÂvùðÛI·×¢8è?*ÍðdçNñƉi,’iòÙÉ|M¿$‚à¡ @U=péJÿ ÙÉ-âx“É>xÿ Õ🂭¼;©M~/ﯮ¤‡Èu&퉻qêÜ×›ƒÀâhÕSœ—*¾‹þÔ­NPqW¿ÈÉÖ¼]«YëwÏoýšt»FÛL’Ñ£vº•¦XÈ8p¨š§iFÈF;†xçµx¥ü%#Ý]épÉ©øz}V lí嬙D†&S»"S†0W¡¯PºÐt›½R=RãL²“TŠ3w­n†xÔ‚YÜÌÜÜúÕ ø;@ðÖ–lt*Æä…a¸u¶^è(#2•Q¼œœçÔú׳¿ÖŸç¯á±Ë}Sþ¿®†¾˜·KaÔ'‚{°ƒÌ–ŒHÇÔ)f ÀYªú}•®e žŸm­¤+¶8 ŒFˆ=G}*Å7¹)YX(¢ŠC (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ÎÕøòN¼þG¯áž£¦xÆåѬí_(ôëÏäzþê:gŒnTÁÝ=±øc–>ï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcjëtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«%?¿ä|ñ‡ýq°ÿÐf¬n;¹u'ò„Ñ {³*¬þº¼Û,wSK±Ê’ÆÄ¸ã9ÄV¿Ãïùà꾇w’x±þ"i~ Ô5åÔc:dvÍ$·Ót[eñŽdÑÙ>É!ÑäÁQ ÄD‹öŸ˜àäÁxé›ÄÚ¾¼±Æš×Öq´·«u–$Q’̙ʀäúÓü1¯iÞ&Ñ-u]æ;‹IÐ0(êå(ÛI†pFx4£µ–ÚÀ¾§??„µkÝj[íCY±x¥E¢ƒOxÎûy|̆37 KŒc€W“´îmÇ€ÂëWú®›©5­Ì’Åqh­xí¥Q.ü¨#z?œä®AËqŽÚŠ?¯ëîðG†ÿá±½‰šÄÉwt×N¶dIU\,{ßw$î9$šè¨¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€1<;ÿ#gˆ?܇ÿFO]=sÿ‘³ÄîCÿ£'®ž’ØSGmúM“îߺ;·nÏÊ9ÎæÏ×s}OZ·U4vfÒlšE•\À…„ªÊàí0fb®XŸRzÕº`T‰³«\¦ìâŽÝÝ2ÒsÜtë´g[[uR&oík•+.ÁD­°Òd»àg +’rÛ  š£l¶C»oïáÝ·¬Š1Ëצ3ÏL7Ý6ꦨ̶ÈQecçÂ1±82.O 1לœ†ÝSKmöÎwnýüÃ;·t‘†3¹ºtÆxé…û¢ÝTÒÙšÙˬª|ù†$VFÁ副:s‚1€£[ª’¶5kdÝŒÁ)Û»®>q»ž½vœgªç nªJÍý­l¡eØ`”’¶º<wc<œeIá°F` uÈxŠI†¹såéúÖ¨#¶·Ûm¦Þ‹r›š}ÎwM‘ò(êON1œuõ“¬é6×h½-uЃfø&rq\¤L¥ðY¸œàPO‡n."¿¼ÿ‰v±ëXdûåÚO,Mºàgq™ÔnòÐ ®z®qÎ#]BêOjv°²ÚÈŸ2dóÄH€P‡ÈXsÆO'¥ZéóM-¿žÒ̪®ó\I1!r@˱À›§­s¾%ð®¡{ªµþ‰ª®Ÿ,«¶`ð‰C}Ñ‘žœ"~^ç<… µ©¨ÒÝ;ïnæÔ%·ÏØ©w£ÜÇ‹-cìmæ&Ón“R\tC9LsÓn1ZZ‰§¿ø|¾ 62Ü\-¼²¹åhË ¨;–+À÷®tx?År»â¸ÁŠE<éà à ÏQÓ‘‘œŽÄWWáÿ [éž ‹Ã×=͸…â•÷Ù÷’X‚¤ûÇGjÏCMËÚÙi¥‹«8;[SžÐ<{¨j÷ö¶qi:cJþkÜ4:£:Û$fáÕ¡YQçå2)pH#£ð¦¯©kv¢þçNµ´Ó.#Y¬Ý/Y¤FäËUC·ß®3Å?Fð¶“£Ý «(g7{] ÅÅÔ·°}™ ò33«@2Nà`Tš‡tí IÛLq¤Ýa{É¥†>IÄq»”ŒsÑ«ÔÓúþ¿¯3”×¢Š) (¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+;WãÊ=:óù¿†zŽ™ã—F³µ~<£Ó¯?‘ëøg¨éž1¹SgtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«­ÓÛ†1ùcîû}ÞÛw“©ñªÄ: ÏÇý¶·? t1Æ6¬”dü>ÿ‘óÆõÆÃÿAš¹×ñE½×€ít;ư]ÛªqáÝjÇÄ÷:î•™y,—•¶»¹xG$P.íëáÃ@F6UºŽ•Æxgâ®™¬xÆÚÏÂj¶ fñ5 _÷a§Hw.íÇvéã<0®ÉR¾ºu{1£"¼’ =Š\,p»²°E|–;YN¸ëU*N‹å’åiuí “¹Áø[A×.æÓßPÓì4ëM7U¾¿ŠEÞyÞtÄ¡P‰Kn Ùxç‰5¿ ø“Wkô¹‡C?ÛU½…ýÊ\H­nêd.ÑFc;Çï2¡y×Cÿ Æ„l,.ãšúU¾C-¼0é×2Nñƒƒ'’±™dœ¨_™yäe!ñΉ=בluK†Ê$MÜ‘)uW¤XŠ/ÊêNHÆyÅï¯õ½ÿ3ÛÂëøÂÛRÔ.RX-îgNÚ׉ã‘®Ñ eC $[“’sÕx.ÆÿKðÆŸ§j«j.,á[pÖÒ³¬ŠŠ?̪T2WœtÉëM¶ñv…s¤Ùê‘j1‹ ½þTάƒäFvݸ ˜Tbwc¥S>=Є+!:¨g‘bHNyç9efbò·²áî)æ–ÚºMSJÔ!Ôì’êÙ.’'$¹¶’ÞN9IX~#š·@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£®Í&É6ìÛ »vãåcjãéµ~ƒ¥[ª: FúœÐ•15´e 6Œcå^?à+ô*õ0*D¸Õ®_n3CvÞ¸i8ÎÞzôÜqž‹œµº£ Fu˵|Ñm `8-.3òôàÿïÂõkÔST]öÈ6îýü'wt‘NqµºuÎ8ë•ûÂÝQÖZ4´ŒÊT/Ú`pÈÉ™þç8Ç{¯Þ¨ªšZì¶q·oïæ8Û·¬Œs«×®qÏ\·Þ6ꎌѽ¤†"¥~Ó8;FDÎð¯9Îxëݾñ½U%\êÖÏ·8‚Q»oL´|go:nÇFÆVÝQ™£墒¾i¶˜¨#œ‹8ùzr?ˆvẨꩬ.ý&õ6ïÝ»wgå¹Àü+­ß6»q¡ëE=È…®áš#ŸÝ Jmo•Fà{€‰-Äva„2s2J¹àŸëÖ¾&›Wñ X†miZ–9Ý)’O¹Åy¸*xÈTЍ­ zßõ}MêÊ“ƒ³»ù›Ÿ‹íì/o£:v¡=–ž…¯¯áù6Ä&ò¤3m*pˆßx¹1þ"A y¼?®Gª3ª®œËnfehä‘dÈ” R"rÀ‚¤8­-KÂ_ß_Êu-F -E ßiñ¼›’SË,IC"¶Ð£(ë÷AëœÁ§xÖÚþ+ûÍOSÔµÜuvÑo(±IÆvF£hÈzd–É'¥{:ò¾ç.—þ¿¯R•¿Ä›+¯³¥ž‹­Ïqtc6°¢Wž9#’DnR"¾T‚9"øYzi·3G¦jïº4š‰Æ?³Ueh˜Í™pÑÉÄ{Ξ„Ëÿ‡Ä]hrhº½íƒX¬0<èbiDQC4i´ÿ‘óÆõÆÃÿAšªj:½ë2ÏT–1x²¼¶76‘‡_\;Á –dl2°åxäg#r›¿ä|ñ‡ýq°ÿÐf¬Ía<iqusâ]BÂÆæY®&`ú]»,\4AËI?6ÐI9ËQO—™rØœeteC¹.¿cw¬G¨›heÇ6¡=£IûíBÁÖ0 ™Ëª•‰Â¨Î*…QÛZɪéºÏ‰"ÿ„wRº·¼¸70]A-·–À[Æ¡pó+†,…y\r2@äqZˆ¼¾1±³ÐcÓ5ØßËs=¾Ÿ=›V5“rªà’ŒóÙ†õÓªiãí¹¾µbÇÚ¿|¿èÿ.ïÞsòñÏ8㚺ŠNOŸvµù‘¢’]Ãúö—}'‡/®‹é6ú}ŤWþ}´ù†éDlŽœ‡Ü0¹°Úéz€ñ.¥}}á¯ù×—1O–zÊ%¬cȉH’!rö²°?»lÜb»Ëè¶Ú¼ZUƱ§EªLŽÎK”Yœ˜BwàöíYÃÇÞ34CÅžóW;“ûFŒuÈÝÛò¥'ÌÛ}oùiøÀ8Öðn©kaáÔLŽöÔZ©Ø5ÂÇûå²xx=ýÁƒÆÕ= "í]º’ɤÒ-MÑ—³ø­¡¥^uͱTI«[É»O¶½ÃGtñÝ}Ak€Àþ$tàs™ü3â›ÝJãJÕíÒßQt ²C¼¦ìm§#dýk™—Xñ{;ðÀävœ~•7¬5Ù¼c6¯¬égN‰,ÕU¦fœÉž:? ópOªF3‹QÖ÷7ª¡ÈÝÕΫPñV‘§êRØÝO:Ë ~lò%¬¯ ºí-™fU1ÇòŒáØqƒÜUøáÇ·Y~Óx¬ÒˆÓ®Vwr…×l&=ì «Bàí8$ŠVðíåγ ¾«>²§í–íf^pæ!h¥ó¯ ‡ È>¸éž ½_ÛkºÖ¯æ¥ -od`¢H¦E]¦GÃfwbÙÁà+ÚŽÚÿ_×õØä~_×õýw6­|S¤Ýk'L‚yÍÎç\Úʰ»®w"LWËg\6UX‘µ²>Sºá4‡Ðh¾,›V‚-H业äJú:ý½RÅ€º €X”Îß”“Ö»º: {¾ÁEPEPEPEPEPEPEPEPYÚ¿QéןÈõü3ÔtÏܺ5«ñåyü_Ã=GLñʘ#;§¶? còÇÝöû½¶þï'SãUˆtÿAŸûmn:~è:cŒm]nžØü1ËwÛîöÛû¼OV!Óý~?íµ¸éøc éŽ1µd£'á÷üž0ÿ®6ú Õ‰â[k‹ôû~ŠoÊÝó$ðôº’yþäÏ:Äë²í÷<2vþÈùãúãaÿ ÍPO£XÏsuqs«Xií5ÕÃf¾ºŒ&u-p£’¤ðëT›KGo@O•Üã4]8Câk[ˆt8¬c„oso M¦#«êZ{D¯¾4¾Y° ± ,Ç.Ý'‹t=HZø×RÓ,neºžW·h3ºî¶‰AAüE1ž€rimßúŠ´Ý:úí5ã–Þ[Kë¹U%»ÐÊêT?–2HÃ:pA%}^®U%9º’woþoKzʹO+¿ŠHü5â K£jëz…ÍÄJ–RI ­#–†s><´òÆÎƒ/•€Ëž¨¤¶ž%ñäð\µ¿öe°/'˜Êg,(%˜dp<Ž9®ªŠ†¯_ë±KGýw¹å^»þÆ:&©ªiZÃ[¶‡oa‰¥Ï$¶²ÆÍçFÑ,fUòÛvŸ/¯ÝË´Í·Šµ7>+Ò­îoa– > µ«¡‚7ÉögÙÈ*Ø‘vííÖ½NŠ·+Ë›úÕÜ›ioëE`¢Š*FQEQEQEQEQEQEQEbxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]=%°2¦Ž»4›$Û³l6íÛ”q«¦Õú•nªhë³I²M»6ÀƒnݸùGÚ¸úm_ éVéR%Æ­rûq˜"¶õÃIÆvóצãŒô\å­ÕH—µËíÆ`ˆnÛ× 'ÛÏ^›Ž3Ñs–·@5EßlƒnïßÂq·wIç[§\㎹_¼-ÕMQwÛ Û»÷ðœmÝÒE9ÆÖé×8ã®Wï tUM-v[8Û·÷ómÛÖF9ÆÕë×8ç®[ïuSK]–Î6íýüÇvõ‘ŽqµzõÎ9ë–ûÄÝT•s«[>Üâ Fí½2Ññ¼té¸g[uRUέlûsˆ%¶ôËGÆvñÓ¦áœtle@-ÕMawé7©·~èmÛ»?)ã[?M­ô=*ÝTÖ~“z›wîÆÝ»³òž1µ³ôÚßCÒ€-ÑERÉvÜênÝÓƒ¸Ýû´ÎÑž˜Î[¦3ÆÕƒ^¿û ~ðB&Æf8ýØÎ[ž3„#žrAÆ Ág·—²Mm¸œwˆgîDr QžQNrÜ¨ç€«Ïø÷HQ ‰t»Œ¶åŽØ"öLxÑñèƒÐ çŹª2tþ+hiEEÍ)lL5‹ëi3]ÞÄG"òÎh™O³G{zœà]ð爓Wž{[‹i,¯áË$ 7Ǹ¨‘w*’¤Žàx"¸é|xûÛf‡¯Ïèg§çKà9îõoO©¾}imšö客ò÷;\sÏÊkÍÁb1R©Tƒå×V¿à#z´à äš¿“:½WÅ?dÔ§²°Ñum^[UVºk‹m¾á•É"nb9Ú›ˆÈ—-¼ñž™e`×wIuQÏq£ËËE䣻»~îÔÈÆIܼsUgÓ|E¤ëzµÏ‡`Ò/-uIáÖúâKw·˜F±’6Fþb•D8% òAY7…®×ĚΧnÖÃsjßg¶¹V)ö—EI ƒû…a„qÏÍ&zŠöz[ÿ—C—Kÿ_Õÿ¯]Ïëê«7Út]OJh²­ï’|Ål੊G¹‚8ÈäVµr^Ðo´yõ .ml´»I–4ƒKÓï$¸¶ƒníΛãŒG»pü™ä±®¶©ù¯Ô(¢ŠC (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ÎÕøòN¼þG¯áž£¦xÆåѬí_(ôëÏäzþê:gŒnTÁÝ=±øc–>ï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcjëtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«%?¿ä|ñ‡ýq°ÿÐf®GÇpxRïQX|Q.’e3ÌWÚ«ÙŸ²>£pgeUtóòЀǮFH ÝwÃïù3Å}EBѯ+_—Ü7­üÿ¯óûÏ¿ÒôýK[³·ðKZÇ¡ý­&Óä´ÿD¿K{¦f‹oË´‡vÎ3¸}íÕ•â[3ÿ $3øÂ] Âæú[[›µÖ£[«;v0Þ…ˆ‚è­´Pw °Ýßô-_×õÐw0<št~´]}âÌĺ, £Ç;]Àç¯ÌyÍoÑE6îîJV (¢ÂŠ( Š( Š( Š( Š( Š(  OÿÈÙâ÷!ÿÑ“×O\LJälñûÿèÉ매¶QÐV4Ðôå„(‰m£ä´c3qÿo©ëWª¦ŽÛô›'Ý¿twnÝŸ”sÍŸ®æúžµn˜aXƹvÀ/šm¡ Aç¥Æ~nœŸáùn‹zªDÙÕ®SvqGnî™i9Æî:uÚ3Ž­Œ-º£¬¬oi”)_´ÀFã‘2üKÎqŽzöoºoUMQ¶[!Ý·÷ðŒîÛÖEÎåëÓç¦î›tUcKIABý¦rvœŒ™œŸânsœóײýÑzªim¾ÙÎíß¿˜gvî’0Æw7N˜Ï0¿t[ª3,g\´bÍÓ$ó‚Ñg7NðžÜ¯F½U%ljÖÉ»‚S·w\4|ãw=zí8ÏUÎÝQ×–7Ðõ˜)‰­¤à´ç?2ñÿ_¨ëWª¦°Û4›×ݳlwnÛ”óË®åúŽ´nªj·Ë§Y›‡ŠY¾xãXâÛ¹™Ü"¸Õ‡R*Ýfx’çÓµ…§•.mæòШ,dvÁbp§©—g­¤—Ŵˤó/bŠvY o&WH‘Dfb3À+)ÇsµªÞHáTÚ%žO*6~UNÖbOsž;œ Œäyîƒáa§jš¬¶ºô’^jV³?Û5C:[¢}˜°p×/½ñàåwíp£å¶¾"Y‹_¥Ä?iu›~餓 adÉœòŸv=Øž|\ç 2”7HÒŒT¦”‹CÅq[I‰®l/ã#;ígŠ§Ð¬’àpÞ¼ Óð5øç6ND9I"r¥”äŒü¤‚8 k—ân‚®Áu,¨<œÊ«xY‡Ä¦¼±’I­ãÒž'rŒ9¹,£9Ús^n V¥HÓ’v×toV’PrÛæz…å:¯ƒïn>'¾±yi¬ÜGö¨&´¼²þÏ)o¢Ú`.w+–X˜«+žì©/„õ»k-]#ÐcšÒî"¶’}šc¦Û´ÀÍl©#yeÙO˜¹- #¨›½¥ª¿õý]“å¶¿qìtWƒÙü7Ô¥Ó/à›F˜A½éÒâ¹{Hä‚Y³FUmöÅïIH(Ó“œœ›Z…í´ÿ5…ǃ¶´ÉRòkM:³‘JÙƒ&ÉdU_Þ :|ÙbqÎh¶Þjÿð{©Ãs¨Á ȯcqöi €o-+ÏL8ëŽsW«Án>ëÿ`²·Ö­ïµkXX¬ÑY›)ÞY>Íl‹6ÛÐc` R®ã¶A»#†jèô _Yx÷O¿]öT#Yu-`ÚÍ*"ÛÀŠXœJ¬XèÊñ“¹”®rj˸t¹êôQEHQ@Q@Q@Q@Q@Q@gjüyG§^#×ðÏQÓ5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕ’ŒŸ‡ßò>xÃþ¸Øè3U­Bk¨5=y¬šuÞB …K}}"—ŽŸÂ>½_‡ßò>xÃþ¸Øè3WG«xyîïæÊù¬¤yY%%Õv†Á vñÀ­ ì™W"3I?ˆ<5,ÊRF²»,`sºï*ŸÍGÒ«ê> Ô-5ù4•ŠÙ§šxДl5±Í‘»—_*@ÀËÇ‘×::V‚lïVòëQ¼¿¸DhÑ®ac83´~BµšÚºŽé ˆÜÆJPoUb (=@%W#¾¥HúC‰üKâ &ÂûUÑÄ5ÕÕʹȱ ‡íQb<­Ä&A?1H±·•çFßÇšÚÚYMp4™¿¶,’îÈÁ„²ß4Q;>`rœ¨&6Èî­ü-áûkéïm´-*ÉßÌ–xìãY$mÁ÷3’wÙ=À=iðxsCƒûGÈÑ´Øÿ´söÝ–¨>ÕœçÍÀùþó}ìõ>µIéoëoë_/67«þ¿¯‘Áø–ûÄ–ó\ÙZÂ=B9ô¿ô¨­gH˜Kté·É7… ƒÛoAgâ=I¼Uýp¶Ÿj‚GžâU‰•ZÏËRŽ ±ÚÆGÙÉ#÷oÇlÛø[ÃöÚtú}¶…¥Ca:„–Ú;8Ö)pÊÉ'¹5=žki¨Ý^ÄÌžíölŽ8óµ@àe˜þ>€¶þ¼—ù|îÅý_×c‡ÔõÉÓǺΞdÕె ÉÁšR.äÜY|Ì„À‡ÞÎxÁ¤Þ9ñ ϧ"Ú]"Éî.Ìö²Ê.Ùfš/Ü"ìCä1—ûàvÉô+h·-eq¤iÒÙ4qÂÖïlD9E*F6©' íX~(øy¢ø´Ä¼"²ÓÐE¤V–¥>Ug‰ž1€îÙ8`óMZÿ0×õýXëÔåAõ´QHQEQEQEQEQEQE‰áßùÕ®.™– Ê¿"3’Y‚¨  ’I p;ÕŠÉñHoì•dŽY<»«ib¶¬ñ³ª 8žj†ß_¶ ·¢K:$&[ÑFàª&% —'©=zó¥©]-´( $™¼¸ãc€Í‚y=†'Øp À>k¡é7¶:ž±,ºÆ¿ª GU´¸Ž+7ËR©öEide¶k%Ç ³`RFìšè> ¬ö:5½Á¾¹q–`‹‚`u •Qƒ¸qï!ÝŸVT¨ÊqÝ#J0Sš‹êj È`“eþ”ªÊÉg Ý/Ðí@Ê~£±<ãCF½Óïâ–M0¦Ìr‘ÁVRØŠãåÕ|"ŽÊW@ gl<ÕßY\|F4‡µ‡Jv’;]¡7‹’¼goOc^n 3•z‘¤Õï}v7«‡åƒžÇwu®Ø[kvúK¼ï:y‚8m¤”"d€Ò2©XÁ €\€H g´ë˼W¢\[ø×Tñ ¤Zá’Ó›K‹’’F³Éç(…l˜’XüÄ–æ+[}KÅ)¿{‡ñ=¦†âæHIua¸ˆí}6ºóæ¼dïÈê+Ùé÷þ×àrµ¯–‡«Ä9$Õ{KëKÂ¥Ô“L<©|­Ç𜇼ÏËw{qo‹á'þ֚εò~Ù¶Ö¶]þi‡,ža—>n|¸ÇË\öm¨Ùhúm«Ãã4( ±Q‰>Ûö„p—AüµÚ$çÉþcäÍU¬Úôþ¾]EÒÿ×õØ÷Z+Æ-tÏÞhš½ÕÕljR{=5eÒ£[‹ˆÝ˜Kpbód—ËWÝ“Ã5½à“©ê‚èëwQ7Úî.…ݼ1~ôâɘ Ùaa‘÷—'q-­¿¯ëúÜ×=&Š(¤EPEPEPEPEPEPYÚ¿QéןÈõü3ÔtÏܺ5«ñåyü_Ã=GLñʘ#;§¶? còÇÝöû½¶þï'SãUˆtÿAŸûmn:~è:cŒm]nžØü1ËwÛîöÛû¼OV!Óý~?íµ¸éøc éŽ1µd£'á÷üž0ÿ®6ú ÕèUç¿¿ä|ñ‡ýq°ÿÐf¯Bª[Š(¦EPEPEPEPEPEPEPEPEPEP'‡älñûÿèÉë§®cÿò6xƒýÈôdõÓÒ[(è N•À¶æEE倄¨ÊHô8«ÕSGmúM“îߺ;·nÏÊ9ÎæÏ×s}OZ·L 0ý¹vw)?f‡å ™4¼’â=ˆÀÁÁ$¶/UH›:µÊnÎ ˆíÝÓ-'8ÝÇN»FqÕ±…·@u ¤ye_ô˜9eF듘“Рò œ ½U5FÙl‡vßßÂ3»oYc;—¯Lgž˜oºmÐTt`¤˜eoô™ùUE럔‘‘О¤òÀнU4¶ßlçvïßÌ3»wIc;›§LgŽ˜_º-Õ€þÜ´;”³Mò•LŸš.A'pÀ`äd‚7ª¤­ZÙ7c0Jvî놜nç¯]§ê¹Ã[ª:ðCÔAe@m¤ùQ€ùO$9 G³=N*õTÖf“zû¶mÎíÛqòžs¹qõÜ¿QÖ€-ÔWw0YÛ¼÷sÅ ÒJáUrp2OH©kÅÒÇŽ’ÌëIyhÎîp ˆÉ$öÍ?^Ñ伸Ž-KL2M:ˆÄsGºRQ<1,r6òà `t5cllž+È„ñËû±ÐÆR„Çc×€$€ ¯4Ò/µfÔutÖ¼M¡ê6÷½“YÁh›]€6€´`ÜI²0VPcÆK|€Ø®›ÇSßXé¶wshås˜á*w}ùcÆCœ`ðTv%°ÅUthÊ¢èiJÒj=È“àØ$êZ%†šì7'ÚÒ%WðÁŠ“íœŽ8äWCáí;C´‰®Í*JâITGçcdåNO²¥ýZþcJîǸÑ^=iâ__ø;V×¥ñ®šÊm"‰nV8- ób¶wc)‰Ê¶dp¬À¨,7+qŒ‹kó8Yø’ËOµh ¶÷Zõå­ŸÛßÏ‘J–Ž b™B¬ê^2Cç?0Û\®öþ»‰kcÞ(®_ÀSj7Ö7—ú¦¥%Ñ’îâ¡ò£HáHç‘nÕ Id±=ç=EHQ@Q@Q@Q@Q@Q@gjüyG§^#×ðÏQÓ5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕ’ŒŸ‡ßò>xÃþ¸Øè3W¡Wžü>ÿ‘óÆõÆÃÿAš½ ©lK (¢˜Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£ùŸÙ6^úï!7ýÿ½´gïüý½ózóVꦎ»4›$Û³l6íÛ”q«¦Õú•n˜"ó?µ®sþ§È‹oßûÛ¤Ï_“¦ÞŸ7÷¸ÛVê¤KZåöã0D7m놓Œíç¯MÇè¹Ë[  š§™ödò~÷Ÿ~ÿÝówÜç¦Ùþ÷Ëš·U5EßlƒnïßÂq·wIç[§\㎹_¼-ÐU4¿3ìÏç}ï>l}ÿ»æ6ß¿ÏL³ýß—nªik²ÙÆÝ¿¿˜ãnÞ²1Î6¯^¹Ç=rßx€[ª’ùŸÚÖØÿSäK»ïýíÑã§ÉÓw_›û¼n«uRUέlûsˆ%¶ôËGÆvñÓ¦áœtle@-ÕMcÌþɽò?×y³ïýí§sçëýߛӚ·U5…ߤަÝû q·nìü§Œmlý6·Ðô  tQXÞ.Š9ôtŠdY"{ËEtqÀÜF#¸  RL÷™V\J0K9 ò'#pØ\Œ‚s’ÀA¯ZØÞéSÁª {G0ç$çŒcÙÆ1ÎqŠó}"ÇV]GW}kÃ:oo«Ù-œö¹ÔhJÆM¼{ã%¥&Lä1dÁ šê¼g}cecrðÛÆÑÊí•™Ÿ öw8ÆÑ‘ã¨àï¸bjûR¯diJóQFE¯ÃßÞÊÑGox&Q¸Ç4“FøõÚØ8ëÏN t~ðn‰á«‰®4‹Só.Çvrä®sŒžÙª7º]­Þööâãa;|øm¤ÛëÑt•fø2s§xÆãD´–I4ùlä¾ &ß’ApP…  *ž¸ô¯?¥V¢¦¢¹öÿ†6©JJ.WÐô+Ï5½Z²ñµÆ‘g>š’ß=¬V³ÜÇ+G²\;ÍG>Io—Ã9Ú3™oã¯ÝišÍä1éºFžóJÚfY.bÊãde VÜpHçïW¯Òç5µ±éº…¶¡ q^GæF’Ç:Äaу©ãÑ€5f¼—XÔüM7Žt}{ïà. ¼ŽÒUŠ5–ÞíJ5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕ’ŒŸ‡ßò>xÃþ¸Øè3W¡Wžü>ÿ‘óÆõÆÃÿAš½ ©lK (¢˜Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl £ t=8…TÚ?•”p ¤{¨Ðb¯UM·é6O»~èîÝ»?(ç;›?]Íõ=jÝ0(ÂGöåØÚ ýš˜2düÒð@€÷''Ù½U"lê×)»8‚#·wL´œãw:íÇVÆÝQÖH‘åU¿Ò`á™®N~`FGP:“ÂpjõTÕe²ÛÎí½dQŒî^½1žza¾é·@Qш6’aUÒgáY®~~POR:ƒÃrjõTÒÛ}³Û¿0ÎíÝ$aŒîn1ž:a~è·Tf#ûrÐmR~Í7ÌY2>h¸Ä{ƒI\^ª’¶5kdÝŒÁ)Û»®>q»ž½vœgªç n¨ëÄ Q%UÀ¶“åvEå<à¨ìõ«ÕSXmšMëîÙ¶;·mÇÊyÎåÇ×rýGZ·Q]ÛAynð]Áð>7G*VÁÈÈ­Í6óN¸ºœK>£n'UÙæG Ñ63Дœ3ØôÉÇSU|#©]ÛxžãAº»kèÚÙÃŒ Œf<³1#¸$çµyø¤õ«uSG]šM’mÙ¶víÇÊ8ÆÕÇÓjýJ·L ‘3k\©Yv" •m„î“ ØÏ8Py\“ÝT‰q«\¾Üf†í½pÒq¼õé¸ã=9ktSTf[d(²±óáXœ'†ëÎÎC ƒnªj‹¾ÙÝß¿„ãnî’)Î6·N¹Çr¿x[ ªilÍlåÖU>|Ã+#`òÄã9ÁÀQ€-ÕM-v[8Û·÷ómÛÖF9ÆÕë×8ç®[ï uRVoíke .ä­°Ñà»äã*O ‚0C[ª’®ukgÛœA(Ý·¦Z>3·Ž7 ã£c*nªk ˤ޴k+8ʈ•™ÉÚxP¬¤ŸL0>„u«uSX]úMêmߺvîÏÊxÆÖÏÓk}J·Uõ (5 V·ºVh‹+|ŽÈAV ¤2AÁíV+3Ä“O˜ ¬Í¯so˜IPó"63†=A  Öú ›\He’þQ èñ¬·w%AP®¹å_ Î@Çn Ô¾*ÑF»¤½ ˜Á.KG ÚÅJœŽã Gãë\>ƒâ‘¨êš¬VZôrYêV°¿Û4³\#ý˜1rÖɱñ6Ð…·í@Ãå"ºŸk0ÃgjZ;ƒ’5@è!gÚwÔíàžpÊz0beR”ª+«RRsJ;˜xCÅÎÅŠàœœX­hø;Á÷Ú>¹6©«jÃP¸kckXDaÉæNâjO°jÉ¿OK=8ã ¶—[ýʵ».}À×8w…u»æ×n4=bH§¹µÜ3Dsû¡)M­ò¨Üp"¼üL#¨½œR–¿×ÜmWÚ8»ÊèÚmLkÃtm¿~n Ùo1¿Ö˜¼’ØÎ>çé߯5›|= å­ÌV2#Û¬j‘­ÔÂ&òÓb3Ç»cº®v†< WÔ|uka©][Í¥j¦ÒÖî;AR/")dPdÞA2 ÈB<àsPGñ)ôÛ«Ok·_D×6öÉW·UFi¾iBªåÕpÄ1=Žk×Ý_úþ­øyÖw±¶ÞÑ™4Ôk<®Cj<×ýÚ£Æê:ó†Š3Î~ï¹Í ÏøzëÍ2ZÝÆdšIóýÄ%Oõ H6+žY Ç’ æ²Û⦭w³L¼»Ñ~Ãguiul±“;Ü3* S l±Ú«ò€âÄ ½Ž¢™V ]WŸXɺR}œOÀ¥™ØÊ"Û‰# ‰|ÁŽønû?ë¿ü“ê¿­?Èè´½*ÇJY×N·Kt™Ãº¦vä" ÀèTQÅ]¯<ñ/Ä‹HÕE•ž£g †ê;=Bhâ0Ës 1xÔo,Jì~Y‚xÏ¡!Ê‚zâ‡}Ŷ‚ÑE†QEQEQEQEQEQE«ñåyü_Ã=GLñË£YÚ¿QéןÈõü3ÔtÏÜ©‚3º{cðÆ?,}ßo»Ûoîòu>5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕÖéíÃü±÷}¾ïm¿»ÉÔøÕb?ÐgãþÛ[ŽŸ†:˜ãVJ2~Èùãúãaÿ Í^…^{ðûþGÏ×ýjô*¥±,(¢Š`QEQEQEQEQEQEQEQEQEQEbxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]=%°2Ž‚Ñ¾‡§4%LMmBƒ£ùWø ýJ½U4vߤÙ>íû C»vìü£œîlýw7Ôõ«tÀ£ Fu˵|Ñm `8-.3òôàÿïÂõkÕR&έr›³ˆ";wtËIÎ7qӮќulamÐe£KHÌ¥Bý¦7 Œ™ánsŒq׺ýázªj²Ùí¿¿„gvÞ²(Æw/^˜Ï=0ßtÛ ¨èÍÚHb*Wí3ƒ´`dLàÿ óœç޽ÛïÕSKmöÎwnýüÃ;·t‘†3¹ºtÆxé…û ÝQ™£墒¾i¶˜¨#œ‹8ùzr?ˆvậê©+cV¶MØÌ»ºá£ç¹ë×iÆz®pÀꎼѦ‡¨´ÅDKm!rã §9ù[ø }J½\ŸŠµèôÛˈ5 oHÑtñCÏÔ Mï!”mWócÁÄDŒsÔö ²ªj¶+¨Ù›w–X~xäY"Û¹Y:‘¸ÕGPk@ñ$7’Nòk=öŸäG4¶d,O“0q»ÌpÛ|–'Œ6zTwz’_j·vÑ‹›¦‚CGisåP¹bA!Ÿiñ€>byñ8ˆáâ¥.®ÅÓ¦æì‹«á±æ³¾§xâKˆî¦_*Ý<é#)´¹X' Îs… ¥ñž6µ¢´’"\¡/ÿºIFBàÇñÇÒ²gÔÏkö­®¡Vå!V`X |g¨N½…nézí®¥á´ÖmDlÑ4»Bß.w.Ñ’NAö¨U©bc(KkkèZŒéµ(³Œ–Çâ»0‡B9Ç™%\ðO‡uë_M«ø…¬C 6´-Kî”ÈI'Üâ¬é?´KÍM¾¹Ö¯wNñ –êßÅ#y`$y݉j0V àI­|AÒ,4ýfkQwy6›²²%¤â9Ld+ªKå”b€ÛKmç= ²ê'ÏÙ¯7þa*óœy[Єø"KÍoV¹Õ5[¶Ó.¯ã¼M6/+Ér‘Ĥ&?3pxÃ`>ß•r"®^x.Þ];I¶²Õ5M6m6ÔÙEujñù­ U Œv!ÎÐAÎz-:ò=BƨtŽUÜ«5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕÖéíÃü±÷}¾ïm¿»ÉÔøÕb?ÐgãþÛ[ŽŸ†:˜ãVJ2~Èùãúãaÿ Í^…^{ðûþGÏ×ýjô*¥±,(¢Š`QEQEQEQEQEQEQEQEQEQEbxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]=%°2¦ŽÛô›'Ý¿twnÝŸ”sÍŸ®æúžµnªhë³I²M»6ÀƒnݸùGÚ¸úm_ éVéR&έr›³ˆ";wtËIÎ7qӮќulamÕH—µËíÆ`ˆnÛ× 'ÛÏ^›Ž3Ñs–·@5FÙl‡vßßÂ3»oYc;—¯Lgž˜oºmÕMQwÛ Û»÷ðœmÝÒE9ÆÖé×8ã®Wï tUM-·Û9Ý»÷ó îÝÒFÎæéÓã¦î‹uSK]–Î6íýüÇvõ‘ŽqµzõÎ9ë–ûÄÝT•±«[&ìf NÝÝpÑóÜõë´ã=W8kuRUέlûsˆ%¶ôËGÆvñÓ¦áœtle@-Ö6£e¨G¨ÜêeÌžÙ"h$¶2(da´ùˆ>añÀäVÍTÖ~“z›wîÆÝ»³òž1µ³ôÚßCÒ€+é–pj7W—÷PO,ÑEÀb ¹îí’|ÃéÒ¹OÛëzo‰'Ô4-õ(®PŒG*¡Œâ!Îzÿªÿǽ¹ï¨®|Nž&<•6ÜÒISw‰å²êž0}ƒþ)ð®Žsxœí`qÓÚº¿‡zEÖ“à];MÔ”Gr‰'˜ªs´³³c?F­Ë%Ûs¨»wNvãwîÐg;Fzc9n˜ÏV zÿì0AûÁšC˜ã÷`#9nxÎŽxÉ8SÂÐÁFUÝKu'U¨ž~ÿ ™ÛO’îjsZÚGaW@KäÄO–TGÃÄ­Á ¸çHü>ž[x˪Áom©ÛÜCäØYµ¸-)Ï›2ù²¨oŒGRFÕÅõ´™.ïb#‘yg4L§Ù£€‚=Š‚=Np.øsÄI«Ï=­Å´–WðåŒãÜTH»•IRGp<[ÒÅÓªÒOW}÷ó&Tç{ÐÖÓ£ºŠÆÔ'†âíWK&$cê³ÛX®sUñOÙ5)ì¬4][W–ÕU®šÅ"Ûo¸eA2H›˜Žv¦â2åËonœá=¹^Œzªk ¿I½M»÷@ãnÝÙùOÚÙúmo¡éVꎼ±¾‡¨¬ÁLMm pç§9ù—øýGZ½ESU¾]:ÌÜÿ‘óÆõÆÃÿAš½ ¼÷á÷üž0ÿ®6ú ÕèUKbXQEÀ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÄðïüž ÿrý=tõÌxwþFϹþŒžºzK`eM·é6O»~èîÝ»?(ç;›?]Íõ=jÝTÑÕ—I²YVq2³3“´rÅ•I>¹P}@éVéR&έr›³ˆ";wtËIÎ7qӮќulamÕH•¿µ®X´»  6ÀwI’Üg‘œ1<.@À-n€*j²Ùí¿¿„gvÞ²(Æw/^˜Ï=0ßtÛªš¢³[ F•OŸ ÌlÀàH¹)8Ç^0FrTd‹tUM-·Û9Ý»÷ó îÝÒFÎæéÓã¦î‹uSKV[gÒ±óæ9‘˜œ•鯯 nªJØÕ­“v3§nî¸hùÆîzõÚqž«œ5º©*·öµ³—`‚P@fØNèðHÛŒðq––À9%@-ÕMa¶i7¯»fØîÝ·)ç;—]ËõjÝckú¼pÝéá¯>ØöijA3 ¹U·¢6Õ88$c84³Yž$†yôÀ-aiåK›y¼´* ™°Xœ)êEK§j¶º„ÓEo笰ª³¤ÖòB@l€pê2ÖééQÝj2‹‰a²† ZS4Æ0€À +ÁôŒÎ3«V£ÍQÙ¹hŽEð‹ézŽ£=ˆYµ FÚã7Ú™ž8cClp{—Þ߸$>ÝÀ0AòZÿ,ů‡Òâ´ºÀÍ¿tÒI…0²d‚Ny Ï»ìNÓx–ÊDš„w–@0G3ZÉå¡'2)Œ‘Îqï[?,‰Ù‘‡ÔYÕŒ14åM=û*RR±çRüMÐUØ.¥•‚#“‘ùUok0øƒâ4×–2I5¼zSÄîQ‚‡7%”r;NkÒ~Çkÿ>Ðÿß±Pé77–Í>›°Åæï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcjëtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«%?¿ä|ñ‡ýq°ÿÐf¯B¯=ø}ÿ#çŒ?ë‡þƒ5zRØ–QE0 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€1<;ÿ#gˆ?܇ÿFO]=sÿ‘³ÄîCÿ£'®ž’ØSG]šM’mÙ¶víÇÊ8ÆÕÇÓjýJ·Tt‡§Êà[Gó"¢ƒòŽ@BTe$zUê`T‰q«\¾Üf†í½pÒq¼õé¸ã=9kuF?·.Îå'ìÐü¡S#æ—’AÜG±8$–Åꩪ.ûdw~þ»ºH§8ÚÝ:çuÊýán¨ë HòÊ¿é0rÊŒ?×'1' =AåA8z€ ©¥®Ëgvþþc»zÈÇ8Ú½zçõË}ãn¨èÀ I0Êßé3òªŠ?×?)##¡=Iå€9zªJ¹Õ­Ÿnq£vÞ™høÎÞ:tÜ3ŽŒ­º£0Û–‡rƒöi¾R©“óEÈ$îØ ŒBäõr"Žc®\ùz†µ¥‰-­öÜé¶Bà¾ÖŸrÐÊ |êzÓœg=}ÉøvÞâ[ûÏø˜ëmµ†?¶ÞZ$ÊÛ®6˜QNß1Úƒ¢ç<çQº²²ñ~£µ,n™ófÒJÀ€@zƒŒá[’s^‹YÚ¶‡¥êì©Ø[]û¦T ŠäÆá~µ+YÜÖ_fÛj÷8‹­[Â,±®Ý$`’°ð7ŒþÍ^øq0¹øOg%ì—o·œ3[™ Û¸_—óîÚ6óÓâ´m|!á¹g¼C¢i¤C(@+6#s‚yù»…8ÇÃæ6ÚU”qCH×÷pÁ±ìª:v'ÐI k . áy¥9ÞëúêiR²©eo™ä¶ßð:ñIñ0Tº…nÚÀ\ok)ü’<Œ·›æm󼯟våžÚ͆×X³ÒŒ6ðx²ÞaÍ¡¤jÙö“y1ÍÑRr ˜ 7¡RÇ®êö¯ÙA R?Ù®Ãr}­ÑUÇ|0b¤ûg#Ž9¡iwo{šÎâ+ˆOâpê^„+BnñÖß×™„¢Öëúþ´ôÐò`\ɶ·w~-³ñ ¸e3ZÚê‹mç.ß*8Yc9‹h&2%sœƒ]ÏÃÆ¸ Ú5åµí¬…äÄw—3\HÌm¤¼Ê²àŒ$PÀ`™®ŽŠ¥¢·õýÁ%ëý_Õ‚Š( Š( Š( Š( Š( Š( Š( Š( Š( ³µ~<£Ó¯?‘ëøg¨éž1¹tk;WãÊ=:óù¿†zŽ™ã•0FwOl~Çå»í÷{mýÞN§Æ«éþƒ?öÚÜtü1ÐtÇÚºÝ=±øc–>ï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcjÉFOÃïùoïq¶­ÐMQ¶[!Ý·÷ðŒîÛÖEÎåëÓç¦î›uSTó>ÌžOÞóáÏßû¾bîûœôÏû?ÞùsV誚[o¶s»wïæÝ»¤Œ1ÍÓ¦3ÇL/Ýꦗæ}™üï½çÍ¿÷|ÆÛ÷ùéö»òâ€-ÕI[µ²nÆ`”íÝ× 8ÝÏ^»N3Õs†·U%ó?µ­±þ§È—wßûÛ£ÇO“¦î¿7÷xÝ@袊(¢ŠÎ€Î÷—¢â“€Êê\ýÈŽ$ùxÝÆ–’üÿާ¾±ÓlîæÑÊç1ÂTîû;ò2ÇŒ‡8Áà¨ìKtÖ^gÚu3îùãËûÿwËOïq×?wåÿn¨õë[Ý*x5DhàäœñŒs»8Æ9Î1Xb©{j2…ítiJ\“RµÌF†Â'tz¤_Î?özÅðŒËmñæÆÄºY\iò]È#>é…Ë&ü±'$uõ¢×áïƒoeh£·¼(ÜcšI£|zílu秺? ø7DðÕÄ×E©Šy—c»9rW9ÆOl׃ÀT¥R5ÓJû#j•bâãg3×ÂźêüFþÌóÃGý–5LcìþRäÛo?Ìó7yx|„ÏðTz•¦íW[Ñ.ng°Ó´ôºÕÖî%rÖéqTqâ5Û`d€ñ‘^¯EzöÒß×ü9Í}oýV¹ç _HYu[] Ûïo Á¿Qðù ktç ’Uã#{’ n€z%U7rR°QE†QEQEQEQEQEQEQE«ñåyü_Ã=GLñË£YÚ¿QéןÈõü3ÔtÏÜ©‚3º{cðÆ?,}ßo»Ûoîòu>5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕÖéíÃü±÷}¾ïm¿»ÉÔøÕb?ÐgãþÛ[ŽŸ†:˜ãVJ2~Èùãúãaÿ Í^…^{ðûþGÏ×ýjô*¥±,(¢Š`QEQEQEQEQEQEQEQEQEQEbxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]=%°2¦Ž»4›$Û³l6íÛ”q«¦Õú•n¨è$N!U¶åFFå€)êô«ÔÀ©ãV¹}¸Ì Ûzá¤ã;yëÓqÆz.rÖêŒ$n]ªÙ¡ùƒ&OÍ/¸rprp ›ÔST]öÈ6îýü'wt‘NqµºuÎ8ë•ûÂÝQÖH‘åU¿Ò`á™®N~`FGP:“ÂpjõSK]–Î6íýüÇvõ‘ŽqµzõÎ9ë–ûÆÝQш6’aUÒgáY®~~POR:ƒÃrhõT•s«[>Üâ Fí½2Ññ¼té¸g[uFb?·-Õ'ìÓ|Å“#æ‹€ÜG¸8•Àê(¢€ ÆñtQÏ£¤S"ÉÞZ+£Œ†â0AÅlÔWvÐ^[¼pE<ÑÊ•°r2@ -Ò,ueÔuwÖ¼3¡éÖöú½’ÙÏhûA6„¬dÛǾ2ZRdÎCL¹®«Æw÷Ö6V7/ ¼m®ÙY™ðßgsŒmÞ:Žþñ £§èz"^\<]‚Ëo:íao1°Da·hÈ럛æÉÏMµgÄš]¦­¤Om!Š y¡¶˜ø9löàœû\øªN­B.Í£JRQšoc÷Kµ»Â^ÞÜ\l'oŸ ´›}qº#Žƒò¬ßNtïÜh–’É&Ÿ-œ—ÁdÛòH. ¡TS×`• ·-õòZøÇX¸áš+µlr+sÂ~ ¶ðî¥5ø¿¾¾º’ =Ô›¶&íÄ«s^n ˆ¥V3”—*¾ßðÈÞ­X88«ßÌç5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕ’ŒŸ‡ßò>xÃþ¸Øè3W¡Wžü>ÿ‘óÆõÆÃÿAš½ ©lK (¢˜Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@žÿ‘³ÄîCÿ£'®ž¹ÿÈÙâ÷!ÿÑ“×OIl ©£¶ý&É÷oÝÛ·gåçsgë¹¾§­[ªš;3i6M"Ê®`BÂUepvŽ31×,O©=jÝ0*DÙÕ®SvqGnî™i9Æî:uÚ3Ž­Œ-º©7öµÊ•—`‚" VØNé2ÝŒð3…•É9mÐMQ¶[!Ý·÷ðŒîÛÖEÎåëÓç¦î›uSTf[d(²±óáXœ'†ëÎÎC ƒn€ ©¥¶ûg;·~þaÛºHÃÜÝ:c|Ã+#`òÄã9ÁÀQ€-ÕI[µ²nÆ`”íÝ× 8ÝÏ^»N3Õs†·U%fþÖ¶P²ì0JI ÛÝ;±žN2¤ðØ#0º(¢€ ÉñIoì•T’XüË«hÙ¢‘‘¶´ñ«ÊAŽzÖªú…”…«[Ý+4E•¾Gd «RH ‚àö 3ÐõkÛíOXŠ]_ÒÆªÚ[Ç-Î¥æ(Wû#4R*ÜɹϜç…Ù°¨'vEu^-Õ¦´´±™ì§Vbì²2m%ag v±çwCƒƒ?Ý&õ¾ƒf×d¿”C:*œªQ”!»F”¥Í9ldÞi×S‰gÔmÄê»<Èáš&Æz“‚F{™8êj¯„u+»oÜh7Wm}[=ôS8`Ñ1ŒÇ–f$wœöª2xCÅÎÅŠàœœX­hø;Á÷Ú>¹6©«jÃP¸kckXDaÉæNâkÍÁá±Tê§;(ëÕ›Ô© 'wèC{ãÙâñ£h¶šíݬ7ZÜ]G ËlwUmÃl Å»‹J„aŽÓ»?TñÞ«uáÿ.—§Ck«è–Ò‹Ã%ÎVÞqÊ>YóOÞd€9PFKmëçð¾—6¹ý®ò ædi µôðG1Q…2FŽC€YO€ Š?h1Ã,BÃ)5¬–sšFó¢v,ÂB[çbÌÇsevÁùŽ}¥¶¿×õýmgÍ¥þïø?×äs'⣈—7†æ”Á,v÷“Z ©Ò9U²Ž-¼²Šw3¼d|ß/qÄ=KìVSÞxv(›S´ŠçNŠ=Cy‘žH£ )1Í2©~8È z<¢ÁyÔRŽu—Uº}£ ff%8ÀÌ›ŽbëÂZ%ÕµœöDÁmkö8@šEhâÊ0 Á²ІÎàTA¦­×úßþ?×õý}Çmã=oK×µ85q{%ï”–PjàwØ£PâVÀóËprÜ1 Ôñ¶³5ìšM¾ƒbÚô7Ú"}M–Ù#bmë/’]‰óãycÙ#;6žðõ¬«,vr¼Ë(›Íšîi]œ4M¹™Ü–9†#É?wÜæ‡Œ¼ 5¯Þé70é·¯3Í-ÑûI‘‹"! ÐÜBÊ2¹*v‚W#4¾Ê]mþVýF·Ôé<;©c@Óu3’o-£¸ò·nÙ½Cc8ÆzàV…SÑtø´ÇN·ghm Ktg9bª¡A>üUÊ©[™òìLoe}Š(©QEQEQEQEQEVv¯Ç”zuçò= õ3Æ7.gjüyG§^#×ðÏQÓQÆ6®>›Wè:Uº£ ´o¡éÍ S[FP À#hÆ>Uãþ¿AÒ¯S¤KZåöã0D7m놓Œíç¯MÇè¹Ë[ª0´g\»PWÍЖs‚Òã?/Nñü/V½@5EßlƒnïßÂq·wIç[§\㎹_¼-Õe£KHÌ¥Bý¦7 Œ™ánsŒq׺ýáz€ ©¥®Ëgvþþc»zÈÇ8Ú½zçõË}ãn¨èÍÚHb*Wí3ƒ´`dLàÿ óœç޽Ûï ÕRUέlûsˆ%¶ôËGÆvñÓ¦áœtlemÕš1®Z)+æ›iŠ‚9Àh³—§#ø‡nª€^¢Š(¬ÏM<`6³4½Í¼>b%CÌˆØ Îõ´ê¦«bº™·ye‡çŽE’-»•‘éTu€<ïAñHÔuMV+ ­z9,õ+X_íšY.þ̹kdØø›hBÛö aò‘]OŠ5˜a³µ-Á‚Iš t³í;€êvðO8e=[hK«­ú¥Ä€^E<ʂܤE‰”˶%!°ˆ:çj¯8àOã=mkEh-$D¹B^=ÿt’Œ„Áã¥sâã9Ñ”iïm (¸©§-ŒÏ°jÉ¿OK=8ã ¶—[ýʵ».}À×8w…u»æ×n4=bH§¹µÜ3Dsû¡)M­ò¨Üp"±%±ø€îÌ!ІNqæIW<áÝz×ÄÓjþ!kÂÍ­#KRÇ;¥2I÷8¯7O ‘U¡¯[þ¯©½YRpvw2]_â ¦¨êV×VZØ´iF´·LA i ;±i2ØóùFãÈ HÉM[âNŸ¥hÒêúuí¸†ìÙÍÅÅ»ÆûŽeQ²¤‰ç h_øM½¼Õnežð>¥ ÐÌ× ²¤JÛ~^ Lg=O^1ÿ­nuiu;]OR°½•äg–ßÉ$£¤HÑþò6‘ Œ6sóv¯gì®öüÈåÒä?ð°¬$š²Óµ;Í>I-¢}B%‰`…çQ[|Šç‰ªÀnõ ko>¸‚úh¤vKh–dÛqlÆd2,`áf>WÍ"¯òñ»œa°Çø}¨Ûk6šEÛ[øj)m&¹G»Gk‡Pb6Ù DQ©+2Ž7m' ôv^šÇOk /kðÙ*ªZÄ ³}‘UPŒÐ–`Û‰ åIÎO5Z_×}¼·ìü¿¯óü ýùõ->;™lnì$bÁ­î‚yˆA#ŒÊAÆA AUÚÉð®iá /OÜ`‰òʉ–f,Çj*¢ä“¨°­jú QHaEPEPEPEPEPEPYÚ¿QéןÈõü3ÔtÏܺ5«ñåyü_Ã=GLñʘ#;§¶? còÇÝöû½¶þï'SãUˆtÿAŸûmn:~è:cŒm]nžØü1ËwÛîöÛû¼OV!Óý~?íµ¸éøc éŽ1µd£'á÷üž0ÿ®6ú ÕèUç¿¿ä|ñ‡ýq°ÿÐf¯Bª[Š(¦EPEPEPEPEPEPEPEPEPEP'‡älñûÿèÉë§®cÿò6xƒýÈôdõÓÒ[*hí¿I²}Û÷@‡víÙùG9ÜÙúîo©ëVꦎÛô›'Ý¿twnÝŸ”sÍŸ®æúžµn˜"lê×)»8‚#·wL´œãw:íÇVÆÝT‰³«\¦ìâŽÝÝ2ÒsÜtë´g[[tSTm–Èwmýü#;¶õ‘F3¹zôÆyé†û¦ÝTÕe²ÛÎí½dQŒî^½1žza¾é·@TÒÛ}³Û¿0ÎíÝ$aŒîn1ž:a~è·U4¶ßlçvïßÌ3»wIc;›§LgŽ˜_º-ÕI[µ²nÆ`”íÝ× 8ÝÏ^»N3Õs†·U%ljÖÉ»‚S·w\4|ãw=zí8ÏUÎÝQ@gk÷SÙéÂKCç‚2¡e_2TBH€Äõ£Tu«)5 "–D±LŽé¼Šã+‘vã¨ë@6‡ã«]WR¿ƒHñ‡©Ëm{3CÜeGòË.8.vãz°Æy=>¿®ÙÃol"½ˆÅ;‘!†P_Ë \sЧ#œ8Æ «AáûãuzÒ\YÄ·7ð^ܲZ87„Rg`£l(Ý'äÍãÍ6ïRЊiè$¸‰‹¬dã~ctÀ>¿> wÍsâÔÝ{?ŠÚQåç\ÛDšµ¼›´ûkØÐŒ4wOÐ'Ô¸ âGN9ŸÃ>!¹½Ô®4­^Ý-õѧ@˜Û$;ÊnÀfÚr0FOÖ¹™u³±OÜN@7iÇéSxÃ]›Æ3júΖtè’Á­UZa!viÌ™ã ãð¯7ñJ¤c8µoszªÝ\Ö—Ç:mî­´ìŸg¼k{xí-f¸•ãX"‘œ¤a› då°esÉçSþ½%µì­å¹º™ãYwÚYÍq«.åÝ,hQI^@b c¨Î.£àÝCûfóVÑu¨lïîd—?h²óãI(Wh‘à`V ¸H*zÔ6¾½Òôû'@ÖÒËF¹¶X$Gµg¹GXñ̲¦Ó„C‚§pFxö¾Êïe÷õþ¿áÎ]/ý_Öýjÿ¬áKitðáYî=FÒâÑãAo,ªÛ^0à7`pÀGøçF/mo;¼©:ÂÏ%´é 5bp“ye•œœ ^H䢸D«Ø[Ý&ÈÜ&ÆKÒ¬ ù3Å»gšÄ·ïòIcžüi¿Ã«™uk›§Õí ·–ån½•“@²°%ß:‰LrK„ æ„VÁç< n×VØÙ¶ø…á››in#¿•`Håd’ÎxÄÑ’‹ órÌ«„ÜrÀc$ ØÐ5ÛzÞy´ãsˆ%0Ê—6²ÛH´6 JªÃ†SÓ½r:÷‚§MIûÌóÞè¶ ol°B›¥•$‚D}¯".3Ê ~`@5«ðæÏZ‚ÇS¼ñ$Qè^µÁ‰bXÊ(Ž8ÆUe•A>^x‘¸#¡ÈË_뮟€ôþº™ÖQE# (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ÎÕøòN¼þG¯áž£¦xÆåѬí_(ôëÏäzþê:gŒnTÁÝ=±øc–>ï·Ýí·÷y:Ÿ¬C§ú üÛkqÓðÇAÓcjëtöÇáŒ~Xû¾ßw¶ßÝäê|j±Ÿè3ñÿm­ÇOÃLq«%?¿ä|ñ‡ýq°ÿÐf¯B¯=ø}ÿ#çŒ?ë‡þƒ5zRØ–QE0 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€1<;ÿ#gˆ?܇ÿFO]=sÿ‘³ÄîCÿ£'®ž’ØSG]šM’mÙ¶víÇÊ8ÆÕÇÓjýJ·U4uÙ¤Ù&Ý›`A·nÜ|£Œm\}6¯Ðt«tÀ©ãV¹}¸Ì Ûzá¤ã;yëÓqÆz.rÖê¤KZåöã0D7m놓Œíç¯MÇè¹Ë[  š¢ï¶A·wïá8Û»¤Šs­Ó®qÇ\¯Þꦨ»ímÝûøN6îé"œãktëœq×+÷…º*¦–»-œmÛûùŽ6íë#ãjõëœs×-÷º©¥®Ëgvþþc»zÈÇ8Ú½zçõË}ânªJ¹Õ­Ÿnq£vÞ™høÎÞ:tÜ3ŽŒ­º©*çV¶}¹ÄÛze£ã;xéÓpÎ:62 袊*޵{&Ÿaçà Í)–(Qöd‘Pe°pìô=*õgkö³ÞiÂ;A'‚e¹Uo.Tr ‘¤t4‰k­ÝEy¨ÿ¡Ø7•¨Áix"ºmÑI"@wü’FÙ,zã<`mk×ÿa‚ÞDÒÌÇ»ËsÆp„sÀÎH8Áâ´?ÚéZ•üúG‡4=2[›Ø&šhÓ'Æ(±n™Œù!±»ÙŽsÀÖñî£Aévm˰Dì0˜ð0=£ãÑ Ï‹sTdéüVÐÒŠ‹šRؘkÖÒf»½ˆŽEåœÑ2ŸfŽö*õ9À»áÏ&¯<ö·ÒY_Ö0HoqQ"îU%IÀ ðEqÒøñ÷¶Í^+ž?ÐÏOΗÀsÝêÞ<ŸS}:úÒÚ=5íË]Eåîv¸.矔כ‚Äb¥R0©Ë®­ÀFõiÁAÉ5&w¾$Ñ,u°»Õôèu‰§6r‹7–bÛ Î0 ÏN VЕŠþÕ¿á:ŸPµvšTóy÷ ·O+\·‘å.`xÊÆãþzG"– Û&o ê’Xx?K½Ž4šÙNŸ{-¡ia–É1ÞYWav†1·æÀwžX{KÏËõÿò×ÈäzluZŒôymmdÔ¯ôý6k»©í­¡¸»EiÌs4&q¸œ€ÞšMsƺ.™$¶ñê:uÅõ¼ðEsj·ˆ$·Y$D.ëÉP»Áä¨ÍqW¿ õ¿žw†ßQ·¼YbžßûróNUCs4«Ÿ%H”ŸYF8$1«-à=bmVE)¦ÛhÂø]‹_µ=ÊÊÆî9š@²Eº*‡(²4eŽp§æ-jׯêK´ž/ðÔzLZ¬ž!Ñ×K–Cw{…Üg*vÒxb³.>÷S·pJq]]yf¥àÏ:ˆìcÒ’hf½ÚˆÔ%ŽDŠæ_0‡€ÀñH1ò˜ß í OOQJƪÄ€ KkƒßAÔQEQEQEQEQEQE«ñåyü_Ã=GLñË£YÚ¿QéןÈõü3ÔtÏÜ©‚3º{cðÆ?,}ßo»Ûoîòu>5X‡Oôøÿ¶Öã§áŽƒ¦8ÆÕÖéíÃü±÷}¾ïm¿»ÉÔøÕb?ÐgãþÛ[ŽŸ†:˜ãVJ2~Èùãúãaÿ Í^…^{ðûþGÏ×ýjô*¥±,(¢Š`QEQEQEQEQEQEQEQEQEQEbxwþFϹþŒžºzæ<;ÿ#gˆ?܇ÿFO]=%°2Ž‚±¦‡§,!DKm@‡ £ù›ø}OZ½U4vߤÙ>íû C»vìü£œîlýw7Ôõ«tÀ£ Æ5˶|Ómb8 .3ótäÿïËt[ÕR&έr›³ˆ";wtËIÎ7qӮќulamÐec{HÄ¡Jý¦7 ‰â^sŒs׳}Ózªj²Ùí¿¿„gvÞ²(Æw/^˜Ï=0ßtÛ ¨èËZH" í3“´ädÌäÿsœçž½—î‹ÕSKmöÎwnýüÃ;·t‘†3¹ºtÆxé…û ÝQ™c:壾h¶˜)'œ‹8ùºp?„öåz5ê©+cV¶MØÌ»ºá£ç¹ë×iÆz®pÀ袊*¦«|ºu™¸x¥›çŽ5Ž-»™Â(ˆXu"­Ög‰!ž}0 XZyRæÞo- ‚Á&Gl g z‘@ÖÚùK«¡.Ÿxí‘[È|Ø_ìî몸1ïFÀ‡’uõ[Ãi*›D³ÉåFÏÊ©ÚÌIîxSÇs‘œŽEð‹ézŽ£=ˆYµ FÚã7Ú™ž8cClp{—Þ߸$>ÝÀ0AòZÿ,ů‡Òâ´ºÀÍ¿tÒI…0²d‚Ny Ï»ìO>.s…J¤iF*SJE¡â¸­¤Ä×6ñ‘ö³Å SèVIpG¸o^éøwÄVüs›'"H¤‘9RÊrF~RAH5ÈKñ7AW`º–TŽNGåU¼ ¬ÃâˆÓ^XÉ$ÖñéO¹F Ü–QÈí9¯7«R¤iÉ;kº7«I(9mó=BŠócLÖΩ©Y[è³Ïmy¬Új+|—¬IyÕq&ñå1ÀR1ŽsÅqQøW:;ÛG ][éâ⹄¦žoïÀYCy¤³Û\myƒJ±± IËcí-Uÿ®Ÿ×Èå±ï”WŽÛ|>‘´=eF“x÷Fšwö“ÛyðÈZçr/’|¨ð²*‚˜H\ðEY›À·šV¡u{á­Æ+”¼¸6Á¶ˆü‡²ÆÂ»‡îÚã’œeŽãýêmY±-OY¢¼CÂßîF¯WÚ éáãsòÚ_Ga–\#–†ÓKD0CÆsŽ. kúV¯é–>–âJÊK;_"âŽÕV{’Šáœ¾\±íÁ Š,$ÏVÖõ(t}÷RºY HZgXÀ,UFN2@ÏãWAÈÖ¼3_ð_ˆoõýRú H¯nò f…,!‚â†Eˆ_ô‡bD[¼Ö 0=É×tL:ØZ(¢ÂŠ( Š( Š( Š( Š( ³5™ Tœã'ÇÓ¾;þXܺu‘â (÷ÆìŽ"l2œóÇIì4PÃÆ%¶0Àz}=½;tÇîñï®`—ZXbš7‘,%vE`J©š¤ŽÀí p>écjðZWÅÑ©xż1“∵h܉ÒTŒ, 1™„¤lÁ0Îr6ç#7tI_Šž)yΗYŽIýâTŒè>Èùãúãaÿ Í^…^{ðûþGÏ×ýjô*¥±,(¢Š`QEQEQEQEQEQEQEQEQEQEsf§a§x³\þнµµóž|ª›±$ùÆO=Gç[¿ð“h?ôÓ?ð.?ñ®?R¾Ô×Äö¶iobC¹·w¸)Ÿi׿è+ýù“ÿŽÔóXv:}Äš"é6K&¹`Î @Æ[Åg'hå‹m$úåAõ¥\ÿ„›Aÿ Þ™ÿqÿqŸi׿è+ýù“ÿŽÔqjÌ­*Å­[»DÛ$ ’€p{ÁÁâŽ`±ÕÅâMûZ厹a°ÁÞ.ÀwI’Lò3†'…È®ÂM ÿÐoLÿÀ¸ÿƸϴëßô‹þüÉÿÇhûN½ÿAX¿ïÌŸüvŽ`±Óêž$ÑÙk– |øNc¼Pp$\Ž2q޼`Œä¨É?á&Ðè7¦à\ã\gÚuïú Åÿ~dÿãµ ºž­Ä0K®Z¤ónò£dpÒ`dínN\QÌ;ŸøI´ú éŸøøÕ=/Äš"Û8}rÁŸ1Ì—ŠN Î1ÓŒŒ'˜ûN½ÿAX¿ïÌŸüv£:†²'Xµn&e.±˜ßqP@$78ûŠ9‚Çoÿ 6ƒÿA½3ÿãÿÀ“â†[Q‚a«°‰"‘DsI(A+³’6žr1“ÁÏ:޳¨é–u©x‚ÊÎÕ 5´h2p2ÆP:Õ„¼×ÓW…•†A9zÿ­£˜,vž6¢àk6YO3uŒgîýìûc=±YÒøßN·Ä·7:wÙ‰ùË,¨BÈ>ûKcÜdÖÚuïú Åÿ~dÿã´}§^ÿ ¬_÷æOþ;YÏ™µÊìR²Ý=¼7zÎ!Õí”®3çü7ŸÂ®ÂM ÿÐoLÿÀ¸ÿƸϴëßô‹þüÉÿÇhûN½ÿAX¿ïÌŸüv­KMD×c³ÿ„›Aÿ Þ™ÿqÿ#x“@e!µ­,ƒÔ¨ÿƸߴëßô‹þüÉÿÇhûN½ÿAX¿ïÌŸüvŸ0¬uÛ>ÿ –‹ÿâÿ’-ÑgÊÕ´„Ï]·1ŒþµÈ}§^ÿ ¬_÷æOþ;GÚuïú Åÿ~dÿã´sŽÏþmþƒzgþÇþ4ÂM ÿÐoLÿÀ¸ÿƸϴëßô‹þüÉÿÇhûN½ÿAX¿ïÌŸüvŽ`±ÙÿÂM ÿÐoLÿÀ¸ÿÆøI´ú éŸøø× Úž¬—qÚ¶¹j·2#H”p죾nH>â¦ûN½ÿAX¿ïÌŸüvŽ`±ÙÿÂM ÿÐoLÿÀ¸ÿÆøI´ú éŸøø×ö{þ‚±ß™?øíi׿è+ýù“ÿŽÑÌ;?øI´ú éŸøøÑÿ 6ƒÿA½3ÿãÿã>Ó¯ÐV/ûó'ÿ£í:÷ýbÿ¿2ñÚ9‚Çgÿ 6ƒÿA½3ÿãÿ?á&Ðè7¦à\ã\gÚuïú Åÿ~dÿã´}§^ÿ ¬_÷æOþ;G0Xìÿá&Ðè7¦à\ãGü$ÚýôÏü ükŒûN½ÿAX¿ïÌŸüv´ëßô‹þüÉÿÇhæ Ÿü$ÚýôÏü ühÿ„›Aÿ Þ™ÿqÿqŸi׿è+ýù“ÿŽÑö{þ‚±ß™?øíÁc³ÿ„›Aÿ Þ™ÿqÿð“h?ôÓ?ð.?ñ®3í:÷ýbÿ¿2ñÚ>Ó¯ÐV/ûó'ÿ£˜,vð“h?ôÓ?ð.?ñ£þmþƒzgþÇþ5Æ}§^ÿ ¬_÷æOþ;GÚuïú Åÿ~dÿã´sŽÏþmþƒzgþÇþ4ÂM ÿÐoLÿÀ¸ÿƸϴëßô‹þüÉÿÇhûN½ÿAX¿ïÌŸüvŽ`±ÙÿÂM ÿÐoLÿÀ¸ÿƹ_xçBÓmàÅ×Ûšet `<ò¸d9m¼(ã¿^Ý+}§^ÿ ¬_÷æOþ;GÚuïú Åÿ~dÿã´¹“ ZüAÐVáîÃRº,o ±;™T’ªORf vÜ}hð.¥±ãßßÛGpK¦Ä«çDPåe@x?çší>Ó¯ÐV/ûó'ÿ¦É6·*“SÐõVÈ?ù•Ðõ#ð!xÛÅ“L|¸¤ŽÉß…fU êFåÏÔz×yöËoùø‡þûÃÇ6·StUÀùö{þ‚±ß™?øí>`±Û}²Ûþ~!ÿ¾Ål¶ÿŸˆï±\OÚuïú Åÿ~dÿã´}§^ÿ ¬_÷æOþ;G0Xí¾Ùmÿ?ÿßb¶[ÏÄ?÷Ø®'í:÷ýbÿ¿2ñÚ>Ó¯ÐV/ûó'ÿ£˜,vßl¶ÿŸˆï±GÛ-¿çâûìWö{þ‚±ß™?øíi׿è+ýù“ÿŽÑÌ;o¶[ÏÄ?÷Ø£í–ßóñýö+‰ûN½ÿAX¿ïÌŸüv´ëßô‹þüÉÿÇhæ ·Û-¿çâûìQöËoùø‡þûÄý§^ÿ ¬_÷æOþ;GÚuïú Åÿ~dÿã´sŽÛí–ßóñýö(ûe·üüCÿ}Šâ~Ó¯ÐV/ûó'ÿ£í:÷ýbÿ¿2ñÚ9‚ÇmöËoùø‡þû}²Ûþ~!ÿ¾Åq?i׿è+ýù“ÿŽÑö{þ‚±ß™?øíÁc¶ûe·üüCÿ}Š>Ùmÿ?ÿßb¸Ÿ´ëßô‹þüÉÿÇhûN½ÿAX¿ïÌŸüvŽ`±Û}²Ûþ~!ÿ¾Ål¶ÿŸˆï±\OÚuïú Åÿ~dÿã´}§^ÿ ¬_÷æOþ;G0Xí¾Ùmÿ?ÿßb¶[ÏÄ?÷Ø®'í:÷ýbÿ¿2ñÚ>Ó¯ÐV/ûó'ÿ£˜,vßl¶ÿŸˆï±Eq?i׿è+ýù“ÿŽÑG0XÁø‡u¢ÙÝë“xš8&ÓTAº)‚”‘üÙv) …å±÷ˆQÔkϵhtд›¡¨xZìÛ¥ãÛi³Ä·–ó3º·‘nCp¨0 ù¾ïjõÉõ µ«û·Ö-¿zBGFVsœïwúv÷§ÿjè?ô‹óÿ‹¤´wÎKƺ´š{éÑM¬Â=c$»]lŒþõBì‡tŠÈ2 œcslàŒåômnýµ)j¢Û[º¿µ3èj",Ë$ \« Ø 6AläkÕµtú ÅùÇÿÅÔwþž !}aBH¥ ŽEFŒpË û‚¡i­¿«Ü]<š][²–8u3OŽ33G>¡q šÞH.eV >ÎÊø …„f6ùÉÏÌÖ×5ÔôÛÏâ"ÔÒ ¥þÆ„Aº8Ó;\)C+nP9ÁßÀc½ÓfðΙe¥–§pGœêÄ’rIc!$’I$’I$šµý« ÿÐ^/Î?þ.‡þcO[ž{¢x†Y|ckc‰†«høX£¶{i '“¸¼è]rLJŒ”<©oŽžú®ªÚÙ·6ñ1Yn¶ùKn×$¹;¸Á`sŸîŒô¯DþÕÐè/çÿU%—Ãê0_>©Ú¡F$WUù[R˜aÀ89ÁäsGTû ¥7¸»¶Ó¯$›ÂéÐh|´ÃZGp-®K´dF"Ücã;çpª–¾ ¿šþÞæ=Nk˜¡†â+O6óˆ"Ýl^HZ%Ê ç–U* ,‡nÓëßÚºýâüãÿâèþÕÐè/çÿBÑÜoS’ñµ¬—÷~kMRêØ ©%¶6ãöiHoíŒ1ï‚9ÍO[׬ôÉ.¿¿ö±¹šúòXlãI6G¶%sˆ˶ÖŽŠõí]þ‚ñ~qÿñtjè?ô‹óÿ‹£úþ¿®}4¶ñ&»7Šm-®5 Øn¶Qno•ñ4.ñ#@^\³8VYe@#ƒOk×zw‹,­cÕ„ºC¶ÊÝ¡3ÈÍ!š9W/ÑŒÄÁ—’U‡NßûWAÿ ¼_œü]#jz)VÕâ Œcÿâè•ÚÐå6^/»þˆæUfÓƒÞ¼Ml‹¦Ü3D¨K„"5%äÝæ ! pAŸJñMåŬpë>&ƒO²[™£þ׆kyR&Hį Är$s‘ÎÎ:}&ÊïÃv6pZZê‘%¼±Æ»íP0L™è*í]þ‚ñ~qÿñtÞú/êâ<ïÃÞ Õ¯<]-½Îµ¥¬+4ñ› .ÓÏòÔ6É|÷yŒ¤1 @M­ÝÏá¹Õõïôém®/$‹ÉIŽ]“øTƒÈèsÅmÿjè?ô‹óÿ‹£ûWAÿ ¼_œü]'ª°ï­Ïx4ˆ¬ç¸Aá‹í;¹;g[X]HÑG†·UY‘6²íÉfr Ÿ”uWwoÿv¡#›û{[u8åÜJÀò(”»ÈØ’îï€rk¸þÕÐè/çÿGö®ƒÿAx¿8ÿøº:[Óðþ¿@¾©œN‰øE|Qÿ—•ö/2o쿱ãËÏ’™ò±òãÍߌqœû×®Ïᆷ’ÓGµðìVì¶Ïs|ò Yqqe½‹ ÎI?;î;[8æ½›ûWAÿ ¼_œü]Úºýâüãÿâè꟧à>ÿÄó];X´»VÓÚÆU^ŒZO§Ä!µ”2ªÉä fB™AÃ6YXûO¬ùåðÄ÷öדj‘½Å°a2.ÔÜ0Nß3±Æq àœÛþÕÐè/çÿGK[%ú ­ÿ­ÛýIh¨¿µtú ÅùÇÿÅÑý« ÿÐ^/Î?þ.•‡rZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtjè?ô‹óÿ‹¢ÁrZ*/í]þ‚ñ~qÿñtQ`¹ÿÙ endstream 12 0 obj << /Length 13 0 R /Filter /FlateDecode >> stream xœíËŽ7 E÷ü½I=¤zA{<Þ ?E€äÿéI[Û:Í«ªéiÛq`À‹ÕCyI^’ê¿Ýáûî®?Lýpü^Ÿþÿû×ÃÏßþ|ýê¯ã_ŸþýýûëWo_¿ZŸFÎÝr79üð>ÖÃão‡»þ§Ãã¯_=Ç|¨oë»p¼ÃÜ×úîßçåtc¼›OŸqüóS8]œîÆC¾ö>]ÌÀ1Ý=åóÇkS6t§KãñÞtmN×ÂÝJË‹ã’^¼˜¿;]\ͧûtóì¿zš`à´¦‹=<±7cšóRÏù.îyu^ÚPž8¤·ôâ‰f¯à‰f2#ìôˇÓÚ¬×2ð!ÝlözéËòL}%8l-»S‰ðâ`ç¡,--XÞ¤©”å缜½:–«¿;ú‹“7PlßLÛ"†sö^Ξ˜w€6 Q¶•Zm—Ä…$1ÜB­Zù²8´Éâ|‡€7úª_6ˬã{˜LZо3Dñ¶xé/äGtÌB&%º`Gþ5?ÓŽ_vnFBŸVÁ¼`6ˆC+PäsZŠj Nš‹0°¼z¸áDÅèÉɽøâ^¾ÇÌz¡oìjÙɾÞ>†—è,Òdœô,ÞÓ3”é.w×ðrAÈFøF /FÛHÙü'úž…ùÆÄ6À« }­as¥±ØÚt¼"hÌH[8´)‚ÕA¨99=ÌÚº›÷ðê{3T­¡l€èà«–…#B#'ÚZÇ@BAFž6¬ød|b°¦„Ò®V•éZé õÔ,àœ”Üî]ÞPa³íZùp¤t£±<"¦¨!âlyðÕf¶ƒ5}`Ùr˜ˆ¶†t±÷•ãeRft""¬¡a¸+ÂèÏkmËKÈ$´ÖmZöŒWô…ÞQ[¿kGÎõÀ– •Ð/Ç;v˜Àr_1i»}©`É%Îc)×\]°5Í®¶6÷ƒñæ6ûDŽPí ’zTÝ­O*RH ¹\êªk&/öÍÍdìòL°×˜d =8ðÎÒ#ÒK¢vf3q5+ÎŒº™D(Km‡” ²[HWRE\Ý8ök,ˆÁ¼³‡’㺤¯M(iî+(‰ÂÑúµÍ;äYŽÈéô=¬„_.Lýž'É]AïÕ$Z\wet3á#i£jx"æÄÇòÆ&/tùHœŒ@Þv1{éÐ{œ×Óè­Uî+.Ûv#£¬º_À¶‘¹¯ŸøÌ¨º5í玱.ü%K_€×o-8¶Yo°Gu|tNˆ;Eî-Nݼ­–) WhEµ>ËâæªKØeQÏø¥•´`¾sVÔ{æã&…aLšàp\«Š°8'Tû?`úBi™çÏŠ È}OÆdîb\-’âgAoqerÕgle=s¬âÄØ­ðDŸŠ©nµt;à1lf½Ð:6÷S¹í Âcý·É­4(WYŒ=_@žÙZt_¾¡2 Â)6Ö¯}ÉÜŽÊk9˜ÄS؊醚¦±ëª{a\À”‡î®4˜7‹aév%ÓÍ}"™N´T—Ì„(Å.5Ædʵ©,-  =·«Æl7òîÛ²ÏìL¸……»è·ë°ù€+Ñ#Ø,´íÌ'’צ¥Ñ…­_íjüÔíJT›ûZÕt p"³jWŠm›YŽë`¸µçÈ*¿á—è9u›Á;±Æ3'FÜ «êŸÌS×F_(ìaÁ±4RT˜çÊ5îCzž:Ž„ 5ΙT›ÒÜãÓàÕ.„þnÏ©Œæ>7]GN*—ŠýÙÑû…Á@#Ùyèh6Ñ÷¿pÎui(WGõrÉ„€=e•~ã k³»°‡Fºq¸uË.z«‚ £®·ê‚ÊÐïª0÷¹ BÉYjÚ)q«é—ô-ˆÛzNeò¥Ü‡”EÀ• ¥æ;>«gU ·uÞ’—œ<› bîP¾Ç‡*§ŒëBEys(#¨?/”Á>öÄV}asÿHkBªlªê¾<¹PÚõ» Ì}.”’}ðÛkB^é´”f(}Žö,(möÎÐÀß&Hûfü3¯˜j¸<•ë—á4z£Ê™ûŠÊGM'‡"hgfDpëè³Õ|½þËׯtá¾X°|-»g6OoÕN×JJD±_8mÚOC:g4”ûDÙ5[!ÝmÓu÷­ñ„–ÿÙ’ÝöøÚlɲž»¬1•!#&ùgBAAˆ aØul“¹¯Ôæ]â+jYF±¹Gá8FŽê¼c?›3¨ê'‡¾òü©`3c€9‡Ñs\s×Ôv}‡bTR+jýÛHzöÝX•‚<ïFš[_K¯–8ªÆS=õ«!hÆÒo„ÿ–Ü-ìÚpÁÓ ­ÈÜä¯߈ƒQ7|C.«Ö¦ËGü©ÈåQÝÅ5£’c¢ãCˆ~i—€Fæ‰Ø×„FºšÃ(þŒj‚r´}Çì#›ëw±í)Œ÷’SATöŠ2e⡳T⪳v¾ÚJ\óSî‚G⺼ºYÏ’-c]Õ矹&~ªí6öØ\£oâ Ÿ{ûŸ|¸†y”•B:xñÖsŽMþOqˆŸâóÙÊ L-}²?!¿Ú0‡â7ô>[_ @„{Â%÷;*É9ñº9O¨\v¤‹Z¤Øè‘ðéÏ{NLò}ÇSûU»°6ͽîý]‘‡nÒnžendstream endobj 13 0 obj 3073 endobj 14 0 obj << /Length 15 0 R /Filter /FlateDecode >> stream xœÍ]ÛŠ$¹}˜¨gÃöV*%e&,†Ùžî÷…ÿ€í?vÿÿÁUžR(¤s"¤ê.ãf a²•ºÄõÄEٜΧŸÎOË)/áòs;®?ÿüÇéo9ýûë—?.¿½þûó÷¯_~}ûú帎ÜÎûS8½ýýôóërZΧ·ž~Éù¯§·}ý²>åÓ]~ýË–~<Ì—‡åY~)ÏB˜×ÓÓ!·XfÜÔÀ£<\ꌯeƤ¾Ô‡òl©«ÔÏeÆpÂUVuµyv¸]þ/ÙÌ({ŒjéÍ¢¨_&K+:îìÔ OMgÌß<<(#£cœ%ÏNfÔB â`·e‚šq» Jfä^aXjd§p¢mä¼;;;¯È’‡"#YÉ6?oôHPn´$Ög‡SOüØð†U®“'%3šø“⪉½X oú¼Óf ×Äcr$´Þ™ N»Ò•˜ÄÀLâ>Ъ€ZU}ÜÈDõczø ­ŠRš1aí°ƒìï[Ù óàu¾Höž+£\ÕcÔ–Ä:¡ƒBz.«Žžù‹À$qpåÆ}èJ‰y¨\j%¸ã@Ë”äD‡Ûç–ØÍê‘â`>å‘Ñn>7ø’HI©µµB×µû§v,jÙ>ÈŒÕàd;ºnåðÉ£÷=Á4qÄ9 ÄKãtQS×Måý2wç¦"›Œ!±;3; vãø˜§gv‰9î¦çÑL<½Ö W¾( §± ’4DéÝÊ6Ü£òì$H:@p÷â Nú^|ñSý—šQV¡t D¸©V!Á…僸ùL ”yažÓs÷¡®á&4èy‡:«´ ›z4æL‰àÙ‡épŽÅ‘ÔÌê¥U0ˆ²¸û’S ” ›*ú¸û*$«¯Ü< (̃Gbªª4ŸÁ\KbB;@CÌés/ÄP*³µ,~.NÖu8K¸¯âpâõ͋ˉߊÔŽóæ/o$x‚È FˆƒM¬¨©oÄZñ{C‚£¾Œªƒ7=Ûüa)–Er’mßN˜µ5©` ¸JÀβ!»6ä…üÁé•‹XÌbŒ‰};Ër&ö¯%wYΜ(›Á®44Ì =ùM{þ1úç×TSÚtkÌÛ5°;wú²•'/²QÔúFk7™¥n­³ˆs,Oªº®0æè×¾ÚƒƒDs?Õ@çnžzªŠÁVsž¢í±žâ{áFzåî\ê@ÓjÓX]N*ØHž¼VÔïg/3Ÿ[nUÓ»-úýõÔÊ•ÃÀ« êió¡¾%kïÖÚõI•ÜïOäËãyOc%_Ý9e›â&çVà÷ÚíDv’¯ã´ÑNð~ïg1yD´pYd¥óWƒnuÄaïW(§0 ÉE‘çܽ¥äÃÜq”yˆ6…~?:;g¾–¤Ú:”¼èÞ[U¤ £ÛªN¥䘜S¾Ò²õú $¿‹EÄ>=*u>–rW®ZÙ|zë µ©í\aa>mq €U¤2`›l¬²½Ç‘ˆ†äP™!q– ñjwVƾQî”Ñp¯,…ëúe’GaY|ÊgEÁiƒ”Ï(<@hÛÔV‚lâÂf K*Äã3•CaŸ¤J$<8†¼‹šBs±J¼¾"ó!>M(¤²X° bß&[ì‰? &ƒ(| j4D^žˆÒÛùž ¡%{2½§Ý ,cDŠ{ÍŒ;‘@?×A ñFŒUÐ ÄË0ÄÈ×i¥¥´íˆÓ²1$ï(ÎYk‚Š”…6á‡X×'•G’_ mØŒà ©Lw ¤d (R©U¶­e7Çef€¢µ$w4íh³yOcp…á ÁC·?úèµÃ×½§¸¸<è8±¼sÐg°ù®néŸÔ™‘Ûï ³£-’éöVádT@ÈÜ͹ç¿ëw8'ÌléAîç@=¨Á²²6G/Hž‘¶¤ `ZF× ¬kIÁ¦¾5egýG¼GŠvŒ‚—,ltà‰8ÖÜF’Õº=°¾L ZzÆ™du<¤:*”ÒzQS·U5ŠÓWŽÃG+~\¤N¦Ì8!#ÊkWB0‘ ^5‚ô|ÓH@û‘"a‹dšìÝÜaX;à gJGÚõa¤E¦$ÈléÆyØ^ãZ™–eäÖ&× ¡ä|ƒz0#ÞT4éRy–Ü$°ÂÄù‰åd\Ew4þƆš4ªyrxÏšã„Ñx_•ˆö¨í «”1Ôî² –XÚ&’…™ŒÕvšq˜jÔíþž‘XIQ0ûFSF,ff©‰ÀG1³ÆMäp~:fÖ"k,ãfÓŠuÝܾ\ÄïÍÈe¾¯öÔ×q²Ìš”¦5æÁU›>$©Ú`ø‰U+ !”ù`ÍÆ  €s$Œ|î9×d˜,|0×we‡}ýCÉúÖ@œ€õÜÒ«%* ‰}hˆªÝÓ8,ǵíšG„µµ?²síŠú1}ÈŒ!)ꩯLU’E 9óÎyÀNÜ£‹RQišá‰)[¨eÿ¿Þõ ùÊÇÎ7ˆUòÊô:n çeû"#å°Ñ0**lé,«S‹.®¡p I1ÎÀty‡2•³u‰‘ÜIžä'ÌMzšS~¥÷ç”(,ΰAK($?:*Ð0üi¨MŽ+Õ4ªÀ(%³DA}wT­ Ð^7ÊÌèÉ’ H³%º¿ÁAÞ‘Ÿ'wrÖÀé% "+^51Š*–L9ÚèÖ~9uQ¢+<÷‘J&ËŸPb£}mCV¼Ý¤°(D¢µ†Ä^ó¸‘ÞŠ¥«& i1ær»¯¦P5‹:SaõüÕÞa¼§C©¼CÊB¨ËØÅÝ41ŒÕµC0›Ù1ÆÐ Æe€¿¦ð¢ADó6µª§wºÜœ¢ŸÝaõâù¾””˜ÌÝ„½ç§‡X{ ÎŶN¤èô#¢”Ú%Z›½ç×·(§è2 ^÷­ÐbXèÑWüÆÒÞ[ ’˜v,êÂnÞ³@楼e~±…vTäz‚èóLgY W/çi÷ŠnÀkÔÙÍÄÜÎ,ÚëØ^33å–ž±X‰žËâœ@Þ(û]–dà)r¿*ú9OOîÉÖx–ç Ò[§)féß©OäÚº¥‘ý¼SÊ™0cŸ©æø0åt2;ÑòÄi”¸«[_d/ÂZ öŒ™A? ?±[r.Ò[¹¹î~¿~[µuÛ Í`Õ°õ’ÜǸÛò²Bæ™™’ºçëÍõç¦ßgÜ•ÙQ¨•œ ¶E¶»šHˆ­ù6š’ýÜÓœ:Эc÷ÖwMõó ÞØ)Ô¿±úØï _¡PÆrç$ɹ ™¡u ÅqjTÄ_a.̕𠯎²/ØœPž½Àz†Â!•ŽÐÏ#Ík/K–´Mï ÿyð3XÉ”îóVú°>µt'ÚÈ Ò=µ«tÆAxaó·×ýi> ¿ @vE¶~ÇÈ÷ù‹pù¹~2 K&бüC2€­©a#:Ê(=RÃJßçÖÀ\©Âçï ½9ß3 B'T¾õ1ÒÀ‰ìiH©ô›|•ˆõ0äùÞý¡" Ë™‹w´O=ª4¡ƒ:ÐŽaYòx¡‘|/«ø ˃vQvf•ƒ! £Re-FEz­“Ta½HGGÔ~ƒ— ?IyG‰C$\®I‚Á >zbV@§r3Û]®s Û´«t&ZlÛmI½îï Vôa8v›´~NaÔÈÇÚÉ)Ÿi{ì¯eééOöö¡õŽCq8lq~têƒ÷îÌJöøò ›á ÿÀA㊾͋‡ÝÇU²ÅÐFÀ”†I\‰$޾‚tw] Ó×øÊÏþíðB¢Y5M˜OóòµØõˆÕ.;· ¡ ^ÃN5¨ØÁq¯ª¾Ûë‰ë“}¨ì|sÄû>Œd“¡›ì×¹†—.½\ÈwwxLån±?y‰Õ§Š‹1¼t¹›2`W@Ù~0û¾‚¤HþûèùçéÇ ç‚*ðóžë|ý¾g¿°ÎøûIv‡øƒ«µòÄ»~l×6"ê]î%â¾kŒ}¥Òë–¨¼ìc&vñ«™ãëÏs½ú}}ÓóËñêb¨s;q/ÇO ºÑÞBã®ø±1ÚLFaIé<‚bÁߣŸäó¡û2ùáësï?ÑRï“Ó®¼Y—~ä–…žQítè "ã‘> ²u„k-ˆìr‡ÈU)B n¥¹!’º! »÷Èt™Í÷My);d¢¡¶ú*Ãd`Lÿ„Ë@á?Ô3ÕË20ÝŒ¤ºÇ,HìÛă0vVbÜ;x#a,&§Ä… Z‡ÌsýPÞJR¿ú!Çë9÷g&>­]/&FõîÊx¸¿%ç sì€pîCîÓÔŽ‘*Bx¿ËÐ!dÞ³*½ªGë{™Ežý fúÊ–5À½É´ö¬ôLÝSpÃÌùî~ªBØVæ¬hâ772€™Ç nÛŒ]Œn-+ƒ^‘Ž}sìa1¦ÓÍeEäv7Pî߀ΨGõr9­›-!wõ+>¼ãJ" ý!‹¿ðZ/æ´oô]0»X;§v¿;ÜÈ´?Vãõ¥;· ±"%6 Ðf•'vœGâÎÜRýFèäI/ûòñ»z–Nñ½ãñw1(X{´àof:óŽXÜÂzZÂÝÂ*J®ÑŒïc–óµ·NV{—É­# XÝX µ^öMõAB÷îi’±XGM×ÒK=ª”…36:‘†¿ƒ6•àî±[„•DÌLBô˜ *º© í3ÝŒð0SØaPð+ÌWùZO[i…ŒÞHN—«ÊÃ<öÇõÐâGœ®eøš1Ñe“BƒIµ*:`Y0ôŽx*«aúç»=¾I…žïY£.É>Âr»U¬åà'õLþºùÌ{¾ôüðsy·ìÛ_NææÅèc ò¯ë™™éÏ÷jèW±¯?I9öúw}ÂQâ1<ãc 2ó…¼Ë‡Ò.òö TÆ ÝOT[C;óÍ’ÿvúBƒ_endstream endobj 15 0 obj 3899 endobj 16 0 obj << /Length 17 0 R /Filter /FlateDecode >> stream xœí]ÁŠä8½ô?äy kÓ–lÙ0,LWwßövga 3ÿØteJ Ç{’³’šê¥è!mY …B¡¡'Õ§óéãùi8ÍÃxù7­Û¿þëôŸOÿýðÓùi=ë|Òÿÿóß~Zϧ˜–§õÃxº|ôÅ4?-ôEXŸ}1¹{êÅ9>Ñ~Œ Ê4Œ—ßËyëßySô° .ßÍaëâõþ.N[/ù»á¼õçå]ˆAÅ»4m‚ë?.ƒ½ý· ß§o—¢ÃréGºT4¾ýóô·¯Ói8Ÿ¾ý~úeþú÷Ó·ÿ|øi«ç¼½ûež¯OBy2žó“áö$ÅüdÌ_-¹ž%?™®OæK›V=sÈ_•'(Ïçë“¥ÔœnõÌ꛹Öòj™Ô7_ò7#ô)dyoe6°z€O¦˜k ›ºmùɤ¾ªõ¤¢¿ÑÔ_R=¯õÎ0 ä ¶|éú$UùÖ등>yÎO’zR[¯5£-•¯†ü¤ôâf¥¨›CV[,¥)¶4Ú–m[ŽÚd•¿ZíÑ‚2s±¸Å–Çæ‹î…­ŸäØiü5Ï’ÒÓ2cmmä¶FÐ*ë{žÙÞ¿\|Úo–››× \h¾® ÓíYþè#{X>êǵƄ5ÊVHc)˜Í¦üZ°zºü¤èD6, útS'ôyWðVcÍJW˜?-”H} ÁYjpg4ùÓ¹>ûÈ)ÏŠ™XGjÓ²•Úô"lÚ¼2=—Z°L¬èw†+û+Ö˜„«uÍ«{Ôê®Ê–Vá½=åì&<˜œ+CíSéJl ©Qšo_‰‘Fl1°ácIW:,Ë`$“^¨FªÁUÍ¸Š…_yÃñ­/À>mËãÞóX¼5 ç U³ªbÈ ¦®/«Õ (£|`5ÍÍpN©×\?¢‡@|…ëk1ÁY)ñ.¼µ´Vm-ÕìZÚbëdYKM,´€&¼ XRT…2vÅ~µ¸ÈñÀhzõHçgÔü t Ú &µ±#é)bR§_&#óÖz7q£mûv¦²"é˜MX±Ó´¢ Œ ËH{¤à«1°Œo0Ь,_8ªã‹ë‘ëÏvâ»öi¹®)³õ*Iï+ôàÀº×B‘¬÷e}}x%C ÀÆ“©b¤ ²›È Ø ]{\}ÃÔ€€Â}"0o`ˆU˜#AµàD´(æ¹rÄÄ 8LDAB‚fEÓŒóΟaj}"&cÝs!¥lÅ2F6Î2ûâËÎùiÛ–&F bu bÐ^KïíÊÈ‚¤!OLÝB9·ebôG…3ë±H!~–H{¼¢Ð éæ>ÿÅ‚›]„Q±X-8«Ô^ˆX¢TNMР³a²1fåDPŽ“DÆÅóaÙ'ê[œúvê¦ݧžå,ž/ Ý/gI”Qrò|"àa*Ìü!"Áš‹;´3šÂž Œ WÔvTçÜç"ñ[bК/×H‡á5›Tä'Ý OïˆÅŽëáRÜÙmil\z•ÎÐÒj·„âÊLfˆí`Äõu¯-’÷9BSÒ…‚sº=é¹öllïtdêíq)^ÛžC=‘R|†QÀhwªœhþÐ~²ôì‹×Ì@àIkÂwÒãÖ当– 0ô­Ù,1¾`}»µ&ÇZüC+›¼‹Ü`}tƒ™¡¼YD~ÃrK PF«Çy%ô ë5‹9<pYObèxWå)â¬`²$6ehAÖH$Èð · «˜o{4å̬0±~fÙø¥×< £0¯FHÛ0¯]¢Ï­Qì±ø5’†î»Ð­…²ÅBÒ"·!µPXg| º"cW9ù¡ã†Ãi>o•ïÝp@dÐØ ¸î±’ª¦²¬—å’|ÕtmHæ-fA-ciÐXÌ"H3ìKÈÍÕý7ö¢þ¨°ÁîcPõ–þ”Ô žxpAu–+Œ›™FbG <Pw•¡`„zð Býí ðXp„Ðõ£©06dóˆNht€Ha§ì퀃Áo! Ó߯"tAFéBëϺ¿v¸»iÙ–å9WtØVma‹“Xmýë„ •ø²D™6Σe.é“ìÇ]¸¡PDvBã„…°&Ý@]Ÿ±® }êh0€‰0&UíÖvˆ¢¿Ã3.ë~L‹yqYÄhDÖH££‘a¾Çoc €¨ö»2¹BfK梬¯ ½.õ1Ÿd€’NÀ×@ï¤ ±e@56¬ y±3:2Ô,öcDªo›ÅGáÕq¯¾ªyr€©Z~lÏôs:.‰³úbÏZ’ÎjªÓÍÒ%S©d??$œ€‚ ó ­x$£a{™@øwœÃÚó—ðitØQ…øÑµ~“ª4AªÇˆ³ÞËÔ"W¡pZQSÚrxÕçjHëz¾¸âW°˜ÛÖZ«dØb1ˆ³æ kòš&rn¿§¨Þ¯ûßI¿æõÕ®Lk‰tŒkÄi%âYÔoP„öªª€â‹¶'»;3åKïW•ýŽ¢€ F97lžøª­ØÎ…Ÿ˜1A©)°Ïº ô„¯ÊoÞßeŸfû]ð“º-A#nǰoægóï\¾øÝˆQíƒ"õ´59ïˆßß\Ñ´­(=EµBFëÑSÔ2èo&Íßœ7ŽÈc×+7sËLŸÛ‚Ži€ëB ‡î`cUÅ|CÍ,r”¢Œ9Š¢gÞG¤K˜w…"UÅ=i´óiÀJpFº}Ý^òõÑÊ)hg¬D]ŸÎY4§´Å[ìuøÖ… ÈÒévàí«¯ÂiœBžÔ¯=ÿȪ"¬œ)O’ž³£oÑu´Ã\s. Ö¼ä…áUxϺ––3XV©BÈ–;Ô†a@ {o“•ÜcÝ8ó³&jA×~â]^ŽìB¼¦Ä!‰Ù“ðÆ]ŽôsY+ Y$-Hi_Öíͦž Úí+hØå—6ŸôM/î7ÏRã¥)xFÛ½Ôs†'°Ž]ü[‡Ag2ñ|צ¼sTOº‰o¾u:ò¨ÃóȬ7ÉŠî€ýµAâÐm[=´L¸õÉYP;€üv ɽ—òû¾ù‘ÚêÁ rm½¼ª£ö²u Î;W'Sì¸áîz'Ò¡jáÕÙ-Ú%¦à<šVj1 ë?RßBºÑúûÞÙºöm?Ò»ª\Þž è\@C©ö²öDA9SA9©EÇóÏK:žœ¤*ÉÙ¾Ú41åSÆòƒNâeã‚X~×»KBì¼\©uÛfxôŒlcîÕÛò0¯w8.2aPe<u{»Al’'·?­]ó#u°ÿý#uððÔÁË_îš3äëåq^ÿ¨×ò0¦ŽÕLœi300Q ð­éÖ°w¦¡_Æ3 §¡xãJšcsA7G0TDèFèH÷¸ûn”Šlv‰ŽS§x&Û¡Xkê"Ìš;¤=2N¹r£‡1´¶·Œ[½h›ö»z"|âˆШñ®{ƒÈ郮¶™Afj2†! OG/-f_òßkºŒ^(õ{\Z›Û®Æâlùì–ÏŸ”„šN›…F%oŒ~y­qÝþ+iÁ›‡_ç‡ÓbOZ»Û¿wÍ¡ž)‹Ifwº¤ÑmÖŸ,51þ Nÿ®#CÄGüpÝß©ë~ùCÅ?<÷ÿµçþíô?é¦=eendstream endobj 17 0 obj 3649 endobj 18 0 obj << /Length 19 0 R /Filter /FlateDecode >> stream xœí\˪$7Ý7ô?ÔÚ0éÔ;ƒ»ïí½¡a~`lƒûÿ“YuS¯sô¨¬¼åêžÂЦ®”RH:ñP„þ:§ƒ8Y!—ݼþû÷¯§ÿüpúóã‡q˜G1ÛSþÿ¿ÿøAHy²óò—“×ä|ùò·ÞÚŒ}kQzé·H±ü•·™É²ÔfÄ JmJ Ó[›pƒñmb>ÏeÎtÊå_!—¶ªiZ>xk…o•å6e‡­5¡èÜ*§ Mk«‘ƒÎZ­=¯†,õ(ÆV%–ክ¢Ü¶p¯²Váæ¡¼ZaÅ`Ë­ZŸ9Wh•vÙvlýk‘¿õ¿U¢>}½ðÒ‰•Ï_ÿ{úñ‹=‰ñôõ·Ó¿åøÓéë?Ø‹´.ÑŸð/Ðéuû2¶t:'a$kòé¬ëèä&è¤-Œ4÷L÷ùò—U”C7 ›ð c9cì#½o}8’ÄNåõÅÜ{Ý·çH¸aa,þP¢Èt8nCk¼#« Ô$ª¸™¥Ã1¹áÕ"nÙYôÜ/$Êôw´CÏx»ËÆÓömÖƒ0æë¿Ì ²ßŠàÛ¿díÙx‘ÒçkWo7ÙŠä\ÿ­>Õµ*Ug•p7ÐdÓÁ$§ü¥h"P`ñ°ôL·am š3Lˆxh@¬­9Â}ˆÁ0zêIB§®Õ½Ü«ôJ¨/=r@¦ƒ‘ƒÖV´¢AÞ 'z婼™5°5O¨¨ÕuŠõKÖÌÚ?g¿ÅuãÍZ,ïý ™LG ‹@³ÅNˆº=XBŽdÙèM¡¹Ç,|½O£÷]^©/ŸHSØBb›ýΑ6ïŸ!sŽÄG ïh{Gä%Ó{·Ï”Eø"‘4? <¿ÀH² yÉ¿1tñÄð'†ß ÃÍ4ò‰á9†gÖrÓÎæ×ùfóëÜzoXë`¼qk@ÿnϦë‹£uðmÑM%ðø´®ŸÈüÍ ³Ñx½óÌÍrn]çÈžÑH|\Ã(;LwBÞUnÈtî¥úÙ¼oÄ´ÅCÌöòüžJ4Œë'm;r ¸=-SÀÙ_~Cødý!éèGtÕÐîkø6?àz¸bÏÍz­7ì: ð"ö0Ä:Á@'".õÆ“IX–DË1èL<6@qPÃéPåcdºO%öD¦5‘Üñ²ƒx¿¹ºîòáqÖWïT^]|‰¸àX–––2=XH6R ÐÀ”*:Ïñßð iQ¯žº‰™¯ p ED2uøX£9h<¶ îMq»åk¤qB‰…rÓ¡j`­šOí-b¨‘lφeu=0Ž›iòXÏ Ð€&ÖþVR²…H²‰'#á å³Q×G´Ù·<éÖlS£ÇÒÙ Ó¥xŽ:à Õ}bl‚ÀfIØWœÏ½A6$ù\è ’tŸ®›2H°"÷w$‡ÊécéNõ„þ4ì‹÷dö‘N‘ù (ÆØ®ønÃÑRB¥bD­†Â|OGkn(ÈUªë-æˆ}¢šYѤO—ò©¢c¸m+áédD …9×—Bu¿w;¨%* _Z#Fà½\- â¥n7®ÎuÎP¯Ã‹Ä„œÖÔ¤4îvëF»ì?™dnÙô`0Kb£¹dº¨ŸDÏçJŸ *žág`¸`TŽ©úÇBÃ$èuKhør´ÔŒ¼®qwùÐÝ­DÑé»Å8§ÚõižÓ½:Ö<:µ®•/blji›©SÞú]`2QžJ_Ô»ìâR2>/H€Ä‚ƒ¬Ïèò«ý,ÙÁ¾6Và‚ðÍÕ5ÀïÏõ!¹"OŽØ¹‡Åvî`1aµž”š/BMóXÂÑïÁ‡¾J+P¡Dí•KÄR¤AªHêY•­ô*t†˜™DV¨{¶¡t’zfÅøg"Ý/!—(ºžZ@Ý•È&]–àr_ÅÒEt+‚w¥bn qktHë«ì1fÙééÉôÊh  ÒX Xâ}JKÖòPTZd¢ïGiÕ!÷|óð„Ü}«_U”Ä/ÓˆËd×*aqƒø·Ù¥1„hÉSyç‘Ñ—‰GŠg(´‘ûJ²Jô Öw”¢ÐøDÐÜ̶<õ}5í»3¤£ ªºßS ÌËpsŠ2­7E¹†|Æ|ü@AŽß¥/§(èA )/¶sƒ¦½z²B„˜û²[Oz$Ø}'Òêà º—®$¤3ºR÷`6ÉÛ ÁÜž ò8}+=áž«?–úƒïr^õ*ß@Sï£ÚµÍ{ÕË|uº>3ºXªÈq‹^õzÈp} êð½),B;¼©zЛ¨ñ*Â…rƇl:žSBlq­÷º3‹VÒѾçç¢õ>PÖlŸ¹ü(Éi4½_$÷ª]z±ë¦ðš|¿~CÿŠ\ò\“LQ*¼™l*ëßÖ Õ`-hM®> stream xœí]M‹ÜH½üê<àZI))%ìvõ}À°`wö°0óÿ[Õ]ŠÅ{©ò¶†%¥ò#>_DFfÿqêNŸºsšûáúo]oÿþù¯Ó?~9ý÷ã‡î¼vý:Ÿüÿÿü÷Ç}WÏõ4¯×g§±ÏåÔ÷××oÿEÞÖr··õ<¹·Ó¿+ËõQøvè¯Ó ßvåÌzþãºÖÛ·ÙùöÚz¹® \Wðퟧ¿=ϧ¾;}ûýôkíþ~úöŸ®+¾½ùµNûßóà~?¹ß«û]ö¿×ÿ4ºön¼ê¾¯®ýèçççãßm¼¿¼þž®”q#^éÎ×à×X=ü}¾&ßþg¡‘Òd£R4â°¸ßw©¸\eï·Pë|U™½8*©_TÕQž@£hÀÒÖ/Gf:yµñ"ñ^¿£iNæÔ’ÌÚ´%—,ÿÞËŦF’œ.€.yÙt-ÖÎïœc¤­ß=Ã`~åkþÞ묧æßÿ,_Èp9¨š9 ­è N3vFJU©1ôÖp´=öÊ)m8‹rÍdà†T[—6|ÒÕeêdAîC¦c>àÓÊì<šŠÏ㫸ûÑÅŸ«g°Â8)Š}>â˜q3âX˜Äï' 2›8ZšÉl â¡×èÙê£=Æ“ª@}2?Œ³ŠçŒrÏKÐÏÇú2Žô YnŒ³$)—Ep€Æ­;êyY é²3uŽÛ‹ÿjûæŽ3ªŽ+tª!ÈHbÝAîãØÑÚG× ¬rkQý7!)$JhÕ7È8R"‹ÎãNAFl~\,¨ºá³3¦g‘‚x†s’y‘•ŠåX!ßó ÷E.þ •$áÂå€_è—-;¯¹,ÑU’ŸŸ†kkq r  ÖdŒTÎ §ê43×m3«¬¥pŠc¨”«9&Íæ|B.˜¡+áŒÙK#ø·F œ"8dg#}•-¤Wª%6% UäŠ5’¹@ŽîÄøôe‡&¡LŠåvf½¶Çëg’Ѷâ0m᜔/L­l¨`“KNDváå ºÆ”À.fÀ&ŽUkþ ˆ 4zÜÀÌNrŠ3Ò •ÐP—B‚&°&|36èP„²äÂ@~k‚rR‹ÔŒ„ÔvGt@aàfiMx’›b›ŒÌ·éž¤n¯ë_[Û€R•Yò< 4f1pïVi#0„ý&PñȶBúêæ3»‘nŒ˜RøkR´óöUœ¢“Þ¨BYÆ¡P"ÉP$P‚}Ï£M-²Îâ©Lç #…›, g*P=Ø’fò7Ær°t¶†åK¶Zw¿‘Mdɵ )P¼8 ä­®àúûŽ01{²‹G„Gâ¿„€¨Œ-ù6˜%J2Iáž©Wé4æ8°ßâXïÅ>Â…Ì©ŒK9û,›¦@iTÁÊHy0 5cl£° ÷dö#–WiðiäÑžA"Fåaö`à w@—n/ÑD²Ý3MHšF^iý™Ò-Äc4Jˆ84*¬,CI×ÂÕp…àá°8o_—vIM¥F¥Zv|&¬­mSÑ&\…«9CÍäš ÷Q06,Æ}7Ãá£!õÂ$l<çQãÑ0¡áÁÖ cv9w÷l×}õŠ»©ù ]ʹ\¢%´….$’72(iŸL( 6©ŠZ¬ yRñÍ“”+¤á| XçÛT¿»G°3ä¡5ønÌc¾wÃ(ê?±JwTFçÑu,ë5ßÙŒgyp˜õKŒ«â$ Ó×uŠÝ‰w]*ôýš‡¡1è=ð·ÏÏúÙ¹jø(!ýŒ°Rã Û(ô-vçH=¦ŽW º€šÕWùš'Eþʇ°4 q“DT„=’ZHM±ðÉ'kd"×PÕ ßH°pµ‡ž‘O~¿Sùrd7f,ýUS÷–vº¶fá§­‹¬Ç›$¡¦í¼áp";I 3Úc\•èÙg¯¶ÀÝÉ$©‚Ú‰5± µXq|ÄÒ£¤¢Ne¦u 8›xϵmqȺå îÇգĎâè¾b»dë ëR£ªLLñ8À“5¤/ñ¥è9‹Wm²]w¥ö‹õèOýË)c?zÌ_欴èÁ#¯$#¸°UÛlƒu ?#ØáP‰v½Ù™¬Ár¸¨e¾SÒ£S5üäªýz+SAšU‹Ô—i8÷ÂWk>>û9ϳŸQ– E¯ –0ÃP{¤~Täü«gª–VŽðÕèDáôøŠZ1¨ÄIêïÕ·V˜!j8F ’òcÊϾR÷ƒgDá´DìïWšÑÅßEÕYîz­ 5G`ô+B¯ÞsTW5Å3–ž}TÅæ#£W+™!b~Œ™Âm 1}¨m2ãäœTð¨EÀ±¥È1„Geò[t5B0˜pXV•J»i×óTO$åˆåA¯}ÙæƒHQ"Ú"élQ'/0ÃXNÑmÔH-z¶“!bÑEa,™ó èDrî,¡®ùå#u£Iã"ÊšÁ6Æ(e$3ùµY{~r&ÛžgwV[of—r"®Œ˜GvfœP¯ÆxÀ8ÒXÌÅ»ËvŒ\ØÐ"3YÊDæýíÌíØoRmPÇ@HCiÈœ ®Ïú¡çPÂûÄw ºK˜ã2s‚ÓæÆña>§Æq”+FÕ8„VÇŒ#éRŠé«E·¹¿aŠ­=¢EaÛŸ‘é»s^Ôkç‡0 ‹Ì•{´biƒ)òŒH»}cÉÒ »(“+ð…Ÿ_dЕø6rI!dR»lH3³3 £žˆ\¬¤q(=åË–Ròùm©›?oPÐÖ,…†8£‰LqÞ̉-‹$Ž®ÚÉ4õÅÿa`ê›Y¦c/;v/.W»Íª½½QOH1¼lzÏ@ÈíXœ—¢_z  ÿì9…<}H£wÂçãIÓ™õøLz¤A ÃÆÏlÕ"Ý¥¡/7ÊÑïº a.ÓŒfôvV|wˆ‚^Kß@d•£FŠé¶þrZƳ/* Pµ¼]»Ct6RnÙC ‰s";]}çfùÑ4“ñ®1îo§ÿ?kGendstream endobj 21 0 obj 3905 endobj 22 0 obj << /Length 23 0 R /Filter /FlateDecode >> stream xœÝœÛj9†ï ~‡¹ìl«¥–º!,ÄÞñ}À°/°Ø‹…äý/¶ÇãVÕXßTiœ“ „t«%U©ê¯£æÓnØý2ìÃ.‡qý»,Ç¿?ÿµûãÝî¿Û›a¿ aÉ»—ÿ~þçöfvqÈû¸KqÜ…e_ŽŸýýîéÅ8ç}Æ9ï|‘Ê~ÄcÙOøb(û™^„y^i yÞ'|‘æõÿôbÄ͆aaºçÈþ´²øøçÈ´»ÇÛ›0¤õë2Ì+Áî~}넻ǿwïãøÛîñßÛ›iåéPÖ×ïÇÃéáaýô#ÌŽDÑli9}×7u¶’¶‡ÇÓ<=ËÓé™Z4ÿ~z´ÔAéþyÐz2l[¢+q#a¡Eçfѳù ‹˜KåTªÇa[%ÊÀ%Ÿ¦ýcrÞ×g•M³zXŸ=lûŽíÓúÿ:0mpqÝOË =°œja8íQñQ³¢ý¸¨¥gÙO#7š=4£°L‹˜âY#vg'£vJO¶‰Ù„4+yD>¶ò-kÌoƒ‹Ïj9*ùÖ¢ÜЬå[ž©=ŽuF‡9‚/¨Ö{¬øÒiPóÝsê´‡‹Îí¢“Æœ°ºÝûDa¾±?Æÿ2 ]N¨ô8£â_î0y5˜Ó ã!@ #—Î_«ué”ôÒÏËxó©i¥|&¬öeû¸ô²_Ëe¥y´ %³’g \è$¥,„Uëž=È-Ͳk½GÇ7yòtòêvÍ/=².O‡fKÕ.ÎDD°ùW0D3È Tì¨~-q¬þE€²Ùž–ÓpÍöôj¶Ãl)nl×xߘL’„’zbBŒ„ãÛÂûvé ¤-OÏpôÕ_P6Ê4ÕUIÁÑÝ-@â© ÌöŒ"Sn ƒID¿¢|:`jhEþ 2>ˆÍl­@hÕR»ÏŒ§U-pQÍHv¯d"±sàh™ŸÝ4Š€ÐÙUì!'(ÃɰkÚ† ûŒ~öÅ-S€C1CënB&JxªõR$iKxë×]ˆ©”V“™ïÛ謔g³5kbT„`…!„Û·žD¬q*‰}ãHÇg{HÚþx žÚÄBnÁ)>[6dZ†DÌ -»wDU¯÷¼Tæ© ¤²¬&C t«XyÀö[YÿëmÒ=%)"‰Ñ’d['á™9#³¹OÈ™o€jšëf²ÍîWdUB/ äI‹ÈI™€–³0cFbGJkPíùÒàv¢i`Z¤Í¥ƒ,d×û3 éL{T|ÄãTo§›vE¢ª3RV37€ÂQŽëøÓŒ{T(Ón#E/Ò6 ¢ãr2ÙLßAÊ’Òw¦e*ú‡¶©Ym•,í†Ï’~”¶ÒŽ5Á§IYüÐAYV¦=Q–vËaC0?;ÆÅ£þN8‚gó,¿Pýè,i´dß»)›‹Aú<€Ýé(ŒÂ)+á±ãßr"…R3ÄQƒh!:™–‡b[—šB¼¶v4¨Nêúh#´W}µY„&ª6köÛ§l×IÉþyqî‘"ûnï»æ,cs€çöB²â;8i [Yî*G}zá{ö+ÂoFÓÛ÷Ü:,ÞõR_›F…’’ÅF•“$”°Õ¼®“ù®JLû t½$8ôH‚Ñât!òèçeœèˆ½9*Å^ÛÓâú°:Álû°Ð¦2ÿ¶ÙøMÖx•}*—wxꦫëý!óܯó˜¢6â`Sç§ñ4úZ—ïÞ,ú÷»ëRÄü¾¥xyïtUè€Îx+¶TsJÑ G…@´P䂇ŒþÍ<³‡t¶S£t´ê­“¡ÀbáÕ±©=q\7ö í‘ïÞ¬ö|'‹iw·9Ÿ A‹ÓDˆÍ7v—“c¶ýXâ——9ÑdåD ¥0Ѭ ›]Š'”êÎc=ƒÒz7Sû§Ž¨ #ÍB³tR]ze¡Û¦JõÁË®QZÕ¥"oGC5{[^§Fï“gœÀųšªÔب³1©@À6®ö¹àtW…À¸º3¾"Se¸ióu½†ß¯d®½dýõé¯m\9Ûä!FY1Žù[.rsêÜŠm­Á{¾L²Œ ô¯²¼áͦU*±­Õae îª8ý (ÉCÑ\hF³mݹÁ tñ†ê>8£JæÈ1åVBÌ[DºðËšf¥ß½–“¯îÄa3]P@Oª÷®Ø8‹('S¿1“æ/0Û 4fJªh“( á jª PNO…ÙåGÅ›ã¼B‰mC¨!×S+„I0±â/tvbÓCg˜y« *¤º'Eb0݃€&Òâz”§°nV˜f`:NsnuëXÝ”Xž¡ä¢œâË"S@¤ùHLNã!+µ£ì%vFØŒ°Š‹ÒGoJ?\;£È ¯+t7˜©.UÀ`Ÿsã$[!µ·ŽƒðÞÄA}‚„·ñ¬É‡mM:šÆ%55®HM`߀ˆtXþg¯9¶s2´ñ>¿Žú-Žf)½;¬S3ê›]UaëvôÀêé´Q)H%]¼œöf顃Ži:†Û^?€Ì#`Ÿ%:žäÀW¡¶¢7‘5¼îiô…ª=vú_­äN€a²øß*>_:ä#NMb;R)ø;ÉÇ]Ç–ÃÔ\Ì‹ùÇ©¦=£S%í^Ú ÉûÓ~^è?lÐHw¢1[@¥ µ4^„Å®åšBPŠ~1t£GIòo_ë×ìÙšúÜ4ÑÖÖGÐ@n@·:”5gÁ§¤›g3í±í/ÁßÐÈ©9 ‘ýÜÀÍÙýÏØ¡ÐÇ_z¡ÎmP¡ä&+É©ø©``³ùÚVnÏŠ7czެç3¥­wšE80šÛ×'±d•±QÄ7Qì”:*waÊMp—Ÿ]*)¨Ð€Ôb ¤)ž…Z²pRCØ»oÞæ× Skݶ•Ô‹Sâ‹›¬;É5ªÂо¶ïUùÉ,ÈA¨Z6+W4Wš¤ZËá½Kd m]xUH)^IÈÀ8È©‹ÌÜ·VdFf„$Š^°Uù©ýØQùHI$Má—›¿˜›‹Gæªæd¡\LäœOVÎÑ7˜ýIm«²m^ÓµÜñ¾CõŒ¤žÔeŽ%zêfÁUõ~ÜGeÄí ªº˜f'o±0埅XJ›ÃC>OšÜýE¬ÖBendstream endobj 23 0 obj 2540 endobj 24 0 obj << /Length 25 0 R /Filter /FlateDecode >> stream xœíËj$dž÷ó½6¨Ý••—*0K–ö†óÇ6xqÀ~ÿÅé¶TQÊOÙÝ%iÂ0fº«³òñÇ·œ¿w‡ÝÍa?ìòŽ–ùôç?¿ïþóÃî_¿öóa˜óîùÿÿùóë—ù°+‡Ã~ÜÅ1ì†y_N?ûㇿÈÓaŸñ‹|¿ˆÃ>àaØ'üâ0ì'ú"M§5Ð9ì#~ÃñïðÅxȼÀ0e^`È™bá†PxáPxÃ4ñ‡<ñ‡8Áÿ>žýé¿ÓiÞ~;=x’€Ãtœç·ÿî~|vÃa÷íÝOãðóîÛ__¿¤ãÒþ–ã×?ãã‡ù8Éå³pxül<qÓ~8ƒ#=zG¤qDõê‡ÇÏâñï7Ï?,Ç¿›¯NuÕ¹>˜Ó²=Y,qùu¶G,iQæXËg³½jyK‘óÔŽ˜“ÌÛ1—åÁ¨æ–=S’PÈÄãîùtŠ‘N¦<½zRK™­5OíšOºdŠ„µ9iµ‹u}"ß9.?NêÁ$Ñn˜²»e>Þs+;ùAæ}Ó~˜‘XŽfh†$´êÅi5¥[v±È«'ÙÙö¤å±ªjƒ#²w’ø´5es˜H¨€w"`cÏÖø/®:Й(}zÇýÑüö‚iÈG»“ºLC]ÅÇ2 ñ—§Å(A'@«kŽ$oƒƒ+w31m­]棔[ÍO^œÈÐ òÝÓˆ€|²¼ÉÞìñ×E''¯M@[¬‡7ÞÙ§œ®9e9ãI°ÆS­Tûim³'þ1´<¦ Ì¢ˆÇù¶-ÞµÂÅð8ƒp=€p /"Û¦…«n¬˜˜0Ëg7í‡rÊãmîiõÔ…{uÊ ÷4Ò\ÃùZƒ·& 6çÛîD¶Zv¿|r‘‹íkE¸ôƒ 3qp9Á‹+Vƒ§PìÕÆŠpƒóâs ‚쟜ÑD;¨Î6jÅÊÞuê¬Új›‘òªj‡rY¸G¨7ö¢Í/õ¢žÞ˜§ýj†q\Ð_oLQ^ï—µT ý±ØṪ§^Ý®q~|Ú×ü ®ŸàúÁU.Î 3rÊÙ¯MËU€Nݘáì]ûÜ烵àø(`MUkqjNÇý¬eÅIT5Ö8¤,%%¬•xÕ(ƒ~õ¥¤7ÌÇ_ôàréìp ;÷ VµæcüuAå8,’¤GQg{(ú,ˆ =~•ŸÜõÙsð(d›+ßpŽP Ô³1çÓO h7žüó¾(">:‚­ã’¡yKwÓ|èÒܹS4¿3Íí?¦…•-Ed.æH¨ÞÊ~Vã;‘2¶ò» —ç[ù°‘7²&¹]ïJÚêng@›,kv‚ݾ%½úÝ|ËTq€sv6ljª98eS–küËQ-FÜF%;HYª‡XHÈ^‰²¤r*Gx†U°J9>±ê5°J›Ðjµ<Îp¬p½nÓLàmØØ»!¸øž¼›îHÙQ'>Je(5wŠe¨ª冊˜ôª¤øÅ6ë"rHog˜ß59·Ò)VawÄýër¨9±©®HÊšUPóÐBÈˈ–™‰óÐTþh/Mp 3”ÖÎpô4å¢x„mB¡¢°/8.€{I¤­ÎÙ‹9Ý s2y«³5¶&ÑbÚ>lX ­"r­#àOˆël\Cù;Êá·åæ|IôNZÙ宓~N€l{#"dØ"1^%ß¶ø`‚”\öØ3º46÷ˆ¢f€³hTå»À ñ[¡M{¬n}7Œ0Í@šB(G°½ ^‹Æ–Îsš™{9L—âíb2‰…y[í4É ª¤ á›)sM=ú[F’†îW—v{˜²ÆöÕŒï¤Qõ³©ÝpŠ‘êù´wrpmµÃVÖØè¼ë÷n£T«)wÔÙPÌNpĂ֕êý_b ö† jHe¹ÒzP@›lÊ!˜ î…ž=†&é¾}8§Ó«Á¯~VLt(­âÍ8§é!xnzÜݓ®^7Úš"Ÿ$¯V£ÔÊM}Éé¶>h°[Iid‹-ñSØb„y†À8!AóãTºQTæSÛ"5|,ÀÆX€ùLLbJK1O$Zf>ººgVÄbHÇi5gß<<‹Œ¿`˜©¨Ñ Ûè€â꤇­H ¥&rgÜV<•Ða͆ÐT}9áB²=“-¯Nl¶e" Ùæ;Ø ¥áí^{%>È ¶èòtpSÖÜvÐ3„ž69»S2Œè°NŠóz²oÑ©÷•ä²ò‘;Ð=¹þc¶ ŸY®Ý›Œé[ãõµRq¦zM+"N!†™¡ëì°f§«3–±Z ª€:)Ð>u|TÈM>©“¾tr»vt$†y+0~fHÍ9—e<ËPóó²!®CmóŒØÉnªÑB¡ ÇíTI­ÌËI]À¼¼ȹ̫=³è¦rÎÉ£ø9 ¡°¯šŠ¡b1Ø”O.áÒ©ìä?*zxŽÿùìUë:YZd›Y>$že›dô—•ƒúÁ9âÛ-iK‹6Oã¹Uô€6ñ|4NöOJÀ¾´¶ÔÞM¯­S=‚Ut|[Õ÷X+@E`Á*f¤5#ÍQF\šÈMƒUƦҕƒu5X'”ZfgGfdeón†\öèÃ:ÜK–(Ækd–›®xQ— Ú¤¯¹7£Å-os„SîO÷Õ SB®°ñâîçê¼¶XŒãSˆ9Õ¯‘‰Á F¸ŒH}¹—>‰ªFÄœR·ÃYCA^¯ â|Ç~$ªÀžj†m§ƒÕM^¸‚ÀÎÌLà>âˆT ?¶#rÔ«øÜ¨&µõ¬L’ƦÚYŠÝ¨ ÍŽ¤>k¯Ï>øoóaË!E-ëv"%º«vW]opëcù<ëÄ߼lj»"=6üR<ù÷G‰Yu:ù¸¶ÙÖqˆMñ¼”ö{¿Wµi[Õ©,êZ‚ ‚Ý3æE€ž·§ïiESTœsJJ‘LzD¥XÕè•%\t}™OÁ ÝJ\ToŽÍF@ÚFíO[ßaéY˜c{o`e¼¦žu´ý„Ûë½Æ7™ÞUÝ€ÌX'{ ÛÜýñJJk½@Å7zëÓëÅZ) ¹sA¤ãÛdpûðòÀ6³§Ï-¤ôø´xbµŸÿßr*Ÿs3 b’¨«Çó7‡ª›ÚÉx #H„Èò*ZT0/ÊÑY´ý*€Çƒ“µ¶kb(ÁîF4ÌQf8/ Œ©G£uzå1ÈkˆNvK¢}¬%‰& Ž©½ëÈv¡‡pŠÀÑ¥“ÎÜwÙN,¤pméÝNjØëUlÿsêö¾ƒ’‹!Ô ê"[yÍSå‡3=¨®2„ÛxÔŽÕÇèjDlEÅ踅R¦bÛ¾®ªbÂRj‰œnFq3¼|½qõ÷£€„È¢Wg矬ÊEØA½5(®´ 3ÖÜšºs@m×!hFÝô¾á0¤ö¶4²aŸüì]ø™“þÆNF’aò§°Í îº4b‘ë«ÛÎÌÓ?ýóL,érÓO±|±|e·¡ÎZó³˜a¢íö ×ÉNPEÝEŸIËé­– ab»Ý+ûmú,ب¢Õöà?J£cÝB}©ëË.ævÕ]*^rSY0R™óGPr»\Üiè0K~#İ_H÷ÐMÐXˆ44º†ØÞÞÞ¸: 9¶™"B÷¨`—(¥Ü^§4¿‰(õ\4 ¥ÉþÈE¬Pù¿j’Á<l—Wp»×ÕqÄ« =•ØþbØó-)Ü@s£Û¿§KžZpÆ[‘¼Ú G9wÆQ-Xw–ŠÚÂ#ÞÙPö ¥j:dÔ2ž¯+(ýneX]ñ°‰2ºÎ•ÂÞ=A/ß¿ï¡ç+\g·SG®SôÊÕúà„sa”kqÌÓì!wŒ‹Yü`—¹4Ïþ‚¼¾¨¶./³i1pµf-kÃ`½Ñhï¨/kÃ^(»©€ÂéÝ~肨3ÉræªÏ® Â5_UA…—PGK¶© ê§á½iTAåu X­^?´Š™]á^“­ÕN–Y‘ØuµÒo»ÿü‡Éáendstream endobj 25 0 obj 3222 endobj 26 0 obj << /Length 27 0 R /Filter /FlateDecode >> stream xœÝœÛjG†ï ~‡¹6d3}žˆlï½AHÈEÀ~ÿ‹ìf5Ó5ÛŸªz¥]Y „ÌÌö¡ºþ¿Ž­oÃ8ü4îÜ?ü»ÌÇÿsøýÃðÏûwãnÝœ‡óÿ~ÿëý»yò4îòƒܼ+ÇŸ}ýpz‘_â‹èv_x·Købt»‰^¤é¸Tz‘ý.Ò‹è#ÏÇÈs„)ñ!'ž#Ätøxácá{_xU~,¼*7M¼*—'^•‹¯Êy<&7λ@/¦üÛA‡ŽÿµâîþøÝQŸ‹LÃýÃÏ{wo¸ÿ:üâÇ_‡û¿ß¿ ‡ÁÿSºÃkñÐô¬ùðóaŠ/í¬n 8iyøY–“–´<Œë¤Ù/ÏRý0\Vâê‡óÃ3ñY¨“¨›ˆñôðxæÊxåa¼t€Ñú,.ãMâÇEG1ñ:žÜ±Ü]+…"FÓ´#Š­äýòë\?ü\åZ÷\N'!C¹î:¢ƒ]t*S»™”É:ñáÜŸ”-(„8V…ðºÀËo˯ňË,t€Uý'ígUýO ;Àôâ ƒIË]Çbã|šäê‹åqD®Öö]ÆmäO§ŸÍ]ÜWl¬Ï"àeÑ ƒEí¢¾ÛðiÁ¬ï¶5è—¼8b:­˜Ñ¥N½G€@p4MÅsÝŠœ¸,i…3Ñ] üLŸU²‹¡r¹ÊaËVü†HVš€#1Žë[¡µ hÕdTÆz¿¬°N\íWîcY\áv ÒxB‘ij´H”AÇnY¸jZܱ:tI*<&˜•ü}+CæHÒ -ýˆ¥¤€j"¨¡e#KýñK¸ä¨ ÒþPì™ÉŽA´èŽ`<)ùe2 *ÛÓðo*ÕÜñPFGa/Ìç¶^dq×o _œsõà™·ñL-þjf‡õ!yˆÃpˆàp#0XÆŠZemã›ÄTOu9”ÐzpoA ÉÃ$ðήIÒÖµÌhø`‡ª.`lO©Ojv@6m4a¿•émwÅ~3ê`Ót»Í(w+&–ͼÊùRÆßH!´¥mÔ M8›Ò׸¼wå„×t”ú^©'á6­£ÿ#¸Øé¢Ö]3ë‹Ó+ˆ˜·6j’Ý5ò:øÌÕ^ 9õÚ«añØå»6jøW¹YÔÝû!ÍŸoWø*z?0‰I½FFûâÞ‰øQ½^ §µ$^z«HèáÇ*~•CŒð7§ê‡ó":=ݱ«¢™# c;Ìm(ÕÁ‰vLÝ)`¡¹YÂÓVÈæ£GitÐP?‚…'ìE“<(Xo^Œ5G¹³õM¥#ôslkyd0±~L¶zC ô!³•»)ß“'gpß܇}oäDYÄ8Ó‰®êiµÈ‘x°ž·r'ª®ðc;žÚ˰ѹRìïf Œ6¤o½»¾²©ü’7Rß»£GΤmÑÞ0Á¥¡иUa}†)ËÌtê*—v[8£%0‚hdy²žŒ¹OéôõK6ŽÓ¤¯ë’½LŸŸ’GÌ'µbb›‰E¶tÉëïäA çNñVª¿aõæbE–šèë4Î÷kÌÉ ¨)'ƒ P£Ô›kd6±Uz²â>¤Ý1Õh&íÉ‘{—þwæp{r$ö°JKYRu†@‹‰=Øä fÒo@ô <Öõ:¬ C¦­‘*ÅRNÞ¨€uu‡Jyè Ùœ ª,™¶kQT{„nêÍ£¶Ý›B5­'×¶š•΋ ›j0Å”¹Z{  l¹¿é* ëßßÐýfÊ¢R²ËÆÔx¬Ùu+wµžŠüиêKw%·×¯”°®ÂW—EO’ê•!hë†ìI0)7e†î[—àÑ--]0sC‹æÉî?qFØLOÆ…ÜÜp}‹ÜÛX > stream xœíœÛŠÉ†ïz‡º^p»+U°,¬fgîüö|aØ}ÿ wk¦2£:>GdF^H¨:+‘qÊ?þ¬ß§ãô—ãažÊN×õü÷ÿ˜þöÃôïÏŸŽ‡õ8¯eºü÷~þ´§z<â”b˜æõPϯýöÃ×òrî†~(áð‡Nÿ§Žñ}Œ¸ž^í?¤% ½‘J<¬øCJ‡€?„tÈôCX Já1BªÝ½ƒ9’ ’ú&ÖGθÏ0€p(*õaVèíVç„“š1ÏŽ•Í—ûÜ51“ywnÙGåTêŽì£€Iaî!·¯åЬ·O6ä˜Ôò‚ zÜ9 mö˜FÕ,Âæ}#§›ah™zj9$So(\KyµÉžvúbz£YÅc0>n8<´çÊfrÞÛK»11 H„ÓÀT¸÷ØR{`šê‹Äºnq­’h(ÉÔã¾,“A,Ê ’šÅ§Í!ZÐçuNß25ì.%Òþxª(„q—ú“(…ev­?r ˜0:!¿, C²X÷€TÛÁª§Ùš_mÞÃIð%.b{`ʳA0Ï /2U6Ã3œ¸bMÓóbІÑÝÛ˜!â z\ÉF œm_Jó¶NR~˜C ›ïSÇ®bÑ«-1Š:i!Ózƒê vTËè2*l—5È<Ϫv ô‰­D7«-)zr”œî‚bŠiO¯\LŽRöï!(ŽT„SUE¸ þ;[ð +•Ž1cØ¡1²WGȬ¡  Àp9ir¶C'Ç…f×—Ñ "«HìL߱ˀG,1‡·ÖR1ëÿÓPÌŽfŸ0 ­Ž*!§òœ¦êNmF¦  #ù:‰AÁ¾‘°§À|k\/Áô¤Â—fK0Ìf”tw59|à;#ÒwÓ8µn€íõ‡–â»6r]Žät„€6Il3“ îÍœJä õ\¯GQò s2 (QÛµŒ‡í¸ìùGQt¸Ü3àÔ¨ðv,ƒ"&„±žŒ2‚¾ÍFò -Å(Úx¸9ßžm9D úr`ª#é–xˆ*Ún¨@Iá˜lCç$Ñ5«dÚCôO‰$F‘äúC›K#Ä¢üKŸ94F’ëÓrÄ)ih(U„º¼ÌÆâÐ}D2p×Éñ;Ò„•jÆx‡À2tÒ /¦½®$ñP;Bó49Â9ªRëwÎËrIÊt‚è ¤GÊÀ¡¯çêSÍ"ÙNƒ):&[5NÌñz¶>:¶A¶¾x¢ÔÎJŠ£9äÖÆS÷5ŸÂ·J\‚'g!Ã!³^à„°v‹¨¦ç(…]ú )9€ÅxgO“¡‹<bƒzBìèìôÇ]Ù?+ìL Žãcîj£sò”zœUf¸‰QqøÚ¤aãQ‰£&äòœð@¤y9´y9±­ ʉ„˜j9Ji*—¯fÖ8±ñbÖ6@€–K‡dÂ)}r>ÌÌÿz+Ñ܉ ?ÎØº-È|ý@šã%SŠÄ¼íJò’3¸7b_5KŽ`Æ®®Q3C]÷u‰qX“ª?¦üdÜÿ¥A%«TO(JËÆy¯A `ûò Y=$ã¬u”¸¾3í™hØ‚±#æBuCÛňößg¾D×F¦Õ“öyK Šò‘WªV`Á˜b´ #Sñø¦‘Ô¤Xo$0è12äü6ÈÃ'ûx¾ã[þ\pN‰ ¡’3ñn,¶kÓ9 R~$ ^}§œp‘?×ò¥ä…¼@2¹ˆè ŒY22‰/m]ÚÝe{ß°ûŒYUý?Þ™À #€ó‡Yöo}ÀÕ<NÌse×pïß(¶}C½PÆ3jQ’0µüb¼Éоï3Ñf«Ô8G­7Ôš}÷¨«TˆÂšœ8û(N‘-y¶7ðá5ª¬ËîD5<™ +ÍÄÎÀ¥hàk×Ï_t/Ùax|~ßéùøí‹AÈÙÁL†ü †Bó[X}[´N¸€E³`¯BˆW¦)¡°'©7\—öoD#3ØÕ¢ùöÚfXÀzŒÆÜ>”mGÂoD¥8Ûj2Þ Öæ 8•¨5nª½Âb°* Ì3'¼l#ÐHÁÊU|ZÀ³f‡ü§¨#°­ƒñ>íjs±áçþ ""õQ›Êœ§d¡‡}2«n¸;JAx}—ð°ç¥†ï«Aà\%nÎËÉ’>"ŒW7ã)Ú7¸–gç̚܂Ùc½—raɯõxÝô¦O_×oþÑç_Fa+®Í–%¯Î>Ìx–‹b-0ÃÃüÄÆ3§Æù òÀÃèS×@¼ÏŒ]_Á» ä?ëÝ¿8VÞ·pá8î}\#®Ú¸ïŽ_5¡j‰wZ¦¤‹šV]7ÛŽvü,2cÛ Döh*Ö/†O¢w|¯ÇL™˜àªioÐóýº–'ŽabŒ By2f¥¼œE½[kä·ÆºÖ˜·~½/S¾ „šX4cAìÄV/dóA[îídZ¤ÜÌ 1ï䯇w,Œ¾ÙeSeŽZÿ—Gá-ñ#à‚Ô.ºú„,øÓH=zžÏ_Œ}EtÜzo­ß¾Œ cþ¹ªØD¥BÿÐõѨßÊá‚ÀQ:·Œ :÷øÁùd §DaÇÚ}†øÏ§Ñr 6Œ>vWPßµõ×é?d¬rïendstream endobj 29 0 obj 2776 endobj 30 0 obj << /Length 31 0 R /Filter /FlateDecode >> stream xœíœÛjG†ï ~‡¹6h3‡îžiH–ï ‚¼@â@.öû_dVÚé®U}ªê=HX 2ìöö¡ú¯¿Ž3ß»¾»éwC—†qý;çýßu|êþýø¡ßå~È©{þÿ¿?~È}7÷ýnêÂ4vCÞÍûŸ}ûôøEZú]Â/Ò:~†Ýˆ_ŒÃ.Òa™x&^#„Àk i|á‹0òâÃ8îü¢ŸVÂënƒúüû*ýý¿½;úL ¼_—øªW]÷Œ‹Î·æÏ7›–e•Ðkl–âŒÓeÇcÛ\©Î•–§Óz›å³¼ êÀyzú0®·]6r(æ›õ|óøôY‡HÃa`Öo?´¿I-;®jQÂþÒÞ_܆åîùV¢œ¯nZ,¼€Ç"­XN-HK˪rïipŒôùégY(}¤…ú™}Eú&% 7ú·z…ER.+Ap£Q 4!ƒ˜›PòÓèwŽ8FÞ@—»€âû:*1I"¹¯´Qf,T·Ð½-poáÄ{óú“76j´èüÙßl\íõñ¯B®Ó&òh«Š¼ÙòY®DmB¬êh$r‰E$VˆYLX°Þ—Iá'ánMeq±50ü¾í'¨S/G{,×{<6çÀõ¶²}33²'`y[õf" ¼«"«36>{¼#…ÛŠè,]öH3‚›PÅ-aróü¢˜rÆŠ¤Xý§¨@6AbÚ:4Ÿ’öOêÒQku´çËSÕ&»;Ê‘š–WR¤iyÅQr¹Ò@y/åòGØcÖ7-GU d2!î7]œg¡Ó¸Ç@j6ñD› §_ƒ ~ɶ¶ª:dr_Qæ›7˜ÌZܦU›÷Ñú3Ï“$Æå¾žÌ¤Ù±ðˆc×ÚÃ+²½W²”#‘"w£¥L4,¨3¿`Z —¼d¤êÝ·¥·Á ,;¦+Û& $‘3i@HZ3ÝÚJkè:eû0N3™*GbÔv7PÜ‚XD“_ã,4‹X dÈÇ)$G¹Ç y’=ZšÂÎû*²Fšõ\'q[öŒ‘NI4W—ÀŒó5d…péb3È‘À¥É1q|U©™×ö8<.;õ®M#÷™ågF ÒVƒ¾x´°•Ú<éC ‡²ªËdg •tdUâÑœš w )!¡m¦h¾¶K–·m ø>]«Ys“3] Ð=ðHÉÛ“q«é‘†Vͤ¹ù5©‚Æ3®LXÕÀVŸy÷³‡·ÜJÒÚwäÕ û|z¥ÊÐ n˜ˆ5L'—ý… L­JµœÏŠÍé¥ãJG9ŠÃ› Lû3í ˜ é{ Š:ªJ$ÐO)çÜz #}Ä öw Ã6Ž{)Ë:î‘ò «g"œ‚œ—€ËX‘(4ò)©ã¤Æjæ°‚%~<Óm!´†ŠH‚ž{n$å}ÔÏ´4e6 ? …‹½–ãÑŽ@ƒ.NÜIõ™Mš–ÜQ.c}Òº‰.ÐÉñëS¾k*”‘“>Ÿ]SÒÐ…yP•D§†DP˜I=2ªÞÞlë:]M‚qG‡½ÖÐ5ü!9+-"×­ ”7¨zB) ÔeÇ&’çÔÒ|ǧá'ֵ°Oÿ.bI™ž­‘¸QbsŸµLl²{SšK¿^åE½ ó×/ ëüMâ—ð5°8}:iS\êÌÈa;DãL²f1Í@„SÏ­ª{<ê )i9Çk¶’œÅ‡¸k9ôLH•­—ÕÆ~—R5=£Ì,=ìºÇÜ`\⤛0é®ÛúRÝG“så3ÉûO4‰ìGƒió,ªKû_?vää?À äl-”ÿÉ;Ýä´H¹†ƒô3Ô{¢e¤|Òþw¦a:Ø1EUŒ î ¼À fJµâÅæŽjPCï¤%’±;óeÐU¬ÿE­ ˜˜¤Œ¨q|‹¾üPâc],œ8ßï=··²iÇ­Vý€üq§;×D¡æ¬‰cÑzŒàšº$‹¯Óþí÷ˆœÞ¹8Úz‚O»Ý¤»Ñ$Eâ9~˜±¹rºÊS-Âì(©öÎq°±}MÞÀé¾FH O!ŒcVš£c†™ÁÒêg+žÞáÄ™Ø>ôOÈò2º&%ï!Dpªôˆ}” ô\™-«n ’ks 2Ö… VǺÔ‰„½ n7ðBô0l–Ñ›‘8NwÇœÑèãD:/óGà˜V?NîÑ µ µy4Ë*­OqíQôØ6âúZ´·9Cf Š ù*%]PC¿ÃÔaÌKýÚÝ4:QåF¶íÞˆEb¦ñé³jTd]¡B—hT¶Õ ‡ëÃxÚî‡öü>Ð3u„»ÇÔA7¦íÞÛk®Uz©KtÀÈk9=æj&(»/ëÛR¤ö]óîéþ•T<¸\21S¹Z€¦ºË¸)Ä.ÎHÉÐÆŽ™Ëž^¦]+liôx¹9R‚¥‚&à€)IÓŸ•)¡†¬â0F¿IÏ:¾zÉ//‘X rŽÑç)²Ç7ûÐ 0¸vªi#°@´0U 0‰Ò˜4r^+À0!{ýzš†wé S¯Úx_ý]:´èÏõŒvP ¤ÔL骰 Ë\ä@`~„Ƴ#äQ‚(ãÛÂ&{Vû Ec'¥ÓÏp›šŸ²ó:„è•yô «–N Ãsv}QKþ¯ ïPA|'¾í,ªéÙó_»ÿÝ3jâendstream endobj 31 0 obj 2480 endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream xœÕœÛŽÛ6†ïät ®$R¢²›Ýûú=½(¼ÿEí¬IŽv>ÏP¶Ó ´¨VÉáÌ?§ŸüÚõÝûþ0tó0ÿÖÓ¿¿ýÖýò®ûëí›þ°öÃ:w¯ÿûí·oÖ¾‡éøv c7¬‡túÙïï¾ÿaX§CÄ?¤éøÿô‡iÆÇa>õ‡¯ÇIŸþ9MãáËéÅÓ–å0u_~í~zº¡ï¾üÞ}˜âÏÝ—?ß¾™³ù¾ÊãŸ?ÌK~8uåÙ”ŸÍõűyc}qÍÏñÅO/Wñbêièç:Lyq|y -/¦˜‡YêÐÃùÇâ{Oð½óO'9ú”ÐéYË¥Lù׫úb8î€-Ågâ|þu: ‚$û^‰¶ÓË[ì¥ÔÎ4Ãû<9Â)“aGxqdXvYªÃ|y—O?®/†üpiUY½”QÎ1…¬L枬¡*SùiX*lÂFë,C)¦òbL/Ï©²u>Ñ6ÓqÉë‹S–ÃF·aŽh-uÕ !ÊxÐû2 ‹×:ïº3q|ʆEß›ç<ø õ‘À)ªU?Qöó%à—ã ¶À‹ÑO–'¡×&ö!HÖMÊ>‚U$a*¶ÎÑÔ G9ÅÄM¯ªTç(1¶¼8w3ÙÊ® <öÕ¹, Á„Îv?æO¤ê mrûÆG½Ï¨¿) v¿»–æd"‹œõþ +“Üeöq¡JLo„ ,µ+ãFk‚6âÊœÀy•]´B½ÁH¦¨¦Xñm^dT¾`$š•4Q|ñ©þ€¤Âxõ2¤Xó=M,_¤ gutQHB[Ký^ ’#(ÅP¾Þ«$7g¸?ŒòÂåº#õîL”Pò¤÷…]áÅÓôpq}y[x8ŽžŸëähG0h¡0fÚø4Äyq$lù‡4dB5LJU"(¯_Ô´}ÑH©¶±ÂPMˆx5h@P‘„_b/B‘Ú è‚[(Âe°4!ž;…ïSK„tSð^ Á ÞE¼ ô©1x'ŒÆ}Áà]Xõ ÂÁ¶ü³ìt'8rÄL¤Dæ^¨A%žAàhÕ3Πï…ŒL÷1 áØØà ¦5Gpò_ß“>ÀädæœiÙ@ØY7‡Q˜Tµ:0bY7/ÖlÃQXÙ~Ð2³÷ʨ‘ƒI\ÊJP§#IŒv7y%¡ö²ÌWŠV!,_ºª³alðfc<~fëÍÕ÷¨aöKÒU…|”$Õò'@¶—UˆßÚ±æbJ¢-Ñ©æfÍ Xº£xxª³ù´¡¬:ª£^õìÕ0y¢}.Éþ¢HÏ ä¤Úºd*Ôœ}‰˜°—ìÓs+«V '¡n`̮ˆ‡tÑj>$–‚ÎUïÉÆÑï:Ð*˜Ð­ h¨Ðí´ÐLˆu C:Âb´gübÑ'µÃŒ µ[Á qÆ¡!{Ü8 Þ[Kÿš£ÀÐ`´(¶«€,݉¾¨m~U¨ûPçcã±Ru^¶1ëš‘EàØ §ÔZ©]Ë»PP  †ŽÒ´šúðf…ÈknÅ¡Øè¡V3QdÌ£,ÌV×8‚¹?Ëãä)ÈO8ä è›®ðÎï1+¿×µÑËɤš# ›o÷j1ès¦ïo$š”^{aÍ^õ·üP\¦C­dž=Ñ^ÎSc2ÞÌxÂd|’ÕçÖdœX0U…°c}S ï¡<&LK}hcŠ©½s£örB6ØBÙÐgñ˜½‹ pÊ‹80´QÀfôýÛpkÓA ÌùÍfTšf³o®Áyfÿ¨Âu6õŠÉe!'Á(3ùåN(lwÚs4ÃRjHMâ|Š(¶.!wlÓ¦1S¸ƒ¶¤Hò”²íd´mÖesÚV-ùïnâ´I‹mh!Æ~DõÜDœÎ’¶Ú;‚¶•F ×ô+/NÚ´7M¿°EÒLP¼‰ò赩þnößÎA¬S®ÞNÃnîÍà•R÷Â`j]ÙgÆ4;ò±(¯!k4x±¸!ï´ñÜvƒîHàá's_‚šáĉ=˜îß”Á#œÁ0)K³×æ±›2W„ƒ^ ž*m/OŠ“cfPQ×|7®nCg0ôƒ:ÎÍ'EÍ’9tyñ ªuzgY^ªcžµ=x5J¦n€4áÐî)l¾’À©Ã4è&b‡ÉJkdx7›nìeÃ[Žâ²Ý©ĵN‘hÈ#Ȳ& ˆzX;mÂÔNßÉáÍïS—„üäqžòb¨¢2¿XÏï‰/Êàɂ$ÛxÌ|X íðÞ wÁ` FÔ‰’¨VÙzÈ<û$$¸ú^c\Æ—·%ŸÏœT¦at£j¦ŽVBB‚× Æz;Ý@b²^Ðs8U›Ê\qÎaA Z°XÎ*âfÅþ“*ÞMD·‘¤VlM8ÜÆ¹õ‹f†*Ë÷÷?™½ûÒœfáD2+ª™6_šãÝDZÿÒïΛb0Ú‚ë"Š˜ÊèTÛ°Ž_6 y4RkDIц:ãÊŽ`l]™Óšxq¯Õ¿ÒÌqÓÍ£:ŒÜÀ5_IÅ©…„·> ’¶(€÷¶‹¸î)TIç/÷Ç]ÄåÞ ƒ…ë®=çàŸ“x;,Ѥ|?€j#”_‘â5g2^µÆ¨óÍ„ôΕ˜v#N™74zÙ›}4ÊÛ•ý±›w•*Th}tG(œ_léqŒãkŠ:NÓMÒŽüð˜C`H,<#o`$ Y‡?´ú°;,v#ß³‚—“ÁµòT)`'ÂãÀ±0L†£ÉAš<õ ä®ÐY^q;hEЄÚÛ¨ä{é(«stŽý6^ƒS+ÞE|t,¹ù&Œ—&[sdŠfƒ­}q›w}-•€i)ME“>¨C8?á`ÐôàOvX‚¢‡ßg²ü¢³W-˜qíeåV^z“¤UB.#´H~Š[ü”<,ùŸÕ)¿Õò±S¿Ù]>æÊõBxïÝÜÖü‹¾ˆ¥4)LŒŠˆøÃq…M ×G}TýÆÿܽýpÚèÇœÿºõŠÉÆt9¹·óÜRvXC¶ë¡§ö3öB†M}¡Û »Šrð"*6ZM‚,ÞáØØäâë îÓg>2dN€íty‘yG…Yë62¼Ä‹º —Œ¹_d[X0‡^þ«äõs÷7Þªœendstream endobj 33 0 obj 2996 endobj 34 0 obj << /Length 35 0 R /Filter /FlateDecode >> stream xœíÛŠÜF†ï ~]<‘Ô­n5„€»÷†…¼@â@.öû_Dã]©k¶¾­jíÌÙ`žÑ¨»«ëø×Áߺ¾{߆. ãòg.Ç?¿ÿÙýþ®ûçí›þPú¡¤îñÿ¿ÿõöMé»Ü÷‡ÐÅ0vC9äãϾ¾ûñEšûCÂ/Òò ü"‡¿‡ÃD_L}àÅãxñ˜/cäÅãyñØÇÃL_„yZH_¤éñ‹8-‡/†¾ðççû¶\äñ¿ãÕ|¼;>w¼Î~^v÷G÷Ëí°¼¯»ûÚý:ö¿uw¿}s¤Þ›_¾Ž}¦¼Y–ø¢Wú€‹æ‡Ÿ¥…Û»òxÿa‹¦².:ˆÓý‡Ór}ÛƒÃÃÅcqým®MëÂ36tz\L·ë¯ƒÞ¡xìaá¼üݤ^u‘Ç;*Ëñ|9Æ‹žîŸW%SRÏuãëgSX·#µÛÚH°’§¯'Ô#ÉSôÒéfý±¼™¼~8ÂA%¡ê¾cXI6Ñ©µ"OnfcŠª¶òT¯tÇ öè™§[ Nµ‹Aé¢(/„ /°.ÁJDRÕDaBC‹º‰åþéW®nàõŠ"ž`r| ì®ÊN<é˜F{ÜÞwÞÛX–Ÿ\Û¦Á¢ù³¿ÙiqˆOoV©$DÉ* \•Yßuò ØLL±½±ÙùmÓBNd]zjS'ºÎFT²I[ МõN6#0Ø|V¶eÒœDé_÷pb2+R,I*Mí^bãaêÒ’Å’~# ÿÆ9Ýc:Lž´B0Sðèpv€;žà uÓܳ³ÃvÇNÈ}fÛBRÕh!åQnô™‘Š‘,Õ+8Gç^ö ãÖ™B਑^ÆË7Ä9yýµ–•Èl –. ÁØËuÓÛV>U*4‘„Ô´ŒùˆÎÚFGY•ÏSÿâ:6ùlD’çù]^5ļ=a+¦©ú$µ{D{K¡ú‚àÂX7*m€ªä¥ÕTW(ŒJ½y%•éÌdì14¤ðu&&»©·•ö†‡‘B”fbÈzj¤ch¥£V9OБވȠ[Èç• µÑ3˜Ã@ $£_Ó‹Æ=V¥êÂ3ür:µ­¬o¦U´0JœW½ã9b Ï #¤‡*° e¾Nö×b\¦c†çîyA1Ô„zвVˆ^½ôâh&´ôý°6&‡w 7 8ɦ´6-´,{°‡ô]m¶²`°åT¹mSâeHd[‘Fú ¦…”Îà~åE·Ìœ ^ñY‚ s5R¦tÃõó~´(r*"‘L²UH¿àT”"ǧ¥?ØW»"ŽŠ±åh¾IhÛÔú5Ú °GtJ'ÐFà/$[iúTaJyÐèè ·ÐÃÒäjàr|\\BZûú`CÆ0–áúCZ´%cóðÈÒ1Ð ÕÄM&”¬ÄS8ÎÞþ”ÀY"ýç5„´ŒYŸùÙÙ8÷O¿r–†cTƼŪ‰QÄ!ë!jêÖËØéå ~"½L`|$†ù™^Öb'’&»ÖËÊ6»6—&´Ýä[“ÿ/«4L&³Sà…R'ؤlÂøB©Ôë*8ÛÏRïHK(FYÙæDù¥\ye#Ʉ֥ ‰”,³¥@8Pºµš åƒ-þápŒ[_?ËÀ1Z<ÎPç,^ÛáÇc*D³‰íö°hˆ"›í¢®ÑVˆì¦AaB…æœú[3ž’—×¢vC*õõÚØh‘!:FKML˜‚g_<ĤE›6;DM˜y§¨¾9ƒdeÍØh*,œ$Ã< )RÙÒ¦3œòp«‘Ôyr/K.rºuY0ã|M‰RÛI&‡%±6+œðªJÈÑÆzäDÀäo WßwRL—OZQ:…Y6ê7VmÿõJôŒYB>X Ëƒ ’Ìc>ÄËóÂf39ƒ•€äò’¶q+Eí…)¦P¥"ò¤¶¤`FãÖ×ëc‰ r”ÕM>$þ²ˆ—1¦G°]`\ä0“ªöKS3/ z£uHöÒýXVhçE¥n7c9ÄÑÆ~ ±\MDÙzdÛ6Õ‘I§ø£&N-የ‰7#çe2¡…3™OÖúd)X2ÞÐ,&%ÐD”ÚÒõºOtìjN µòv!£´1º#ßP5l• ™–&ΑJ*¦øúšqyP&U‚lŸ ²5¸3Í@Ž*õ…Ô*¦™¡Tê‰ÞHˆHÙ8Ev¨´1\Ø[@Õ;ÏñçlÍ V²¸Å,€à+ÊMKcfj°“lXõe–ó£8“K.¬=´Å¦#º»”rª9¯D&h‚·Âø˜¼ÕgF¨5‚÷’gR8ÍÝÉà8µG@–Áw%+‹EÈhúCX‡RmwxPh2iþ°¿úŽ_A¡´—ôÛãõ_<ˆÅÀ½¡¨iœ¦û§ŸÕö;ÁÙÚ‹n'à:»ƒÝ+‘Ý® ¾9>é£\Bpks›£#lžF°»è lwÖ'" hyÐ4E­”O¬¾”‰VeçíjÓê8YY»W ¢¢ç…ÛH°¥“[ Ø’"™-ñ _DD¨?ßÖÍ8W®mög!¸*$Юpô˜¤Ù~-!ºVÎa‰Ë·ì5gôÏ.¬äá—OV8©õÑë9±ƒ o˜… ÇHÖÁ¤Ö`ŒÔ{ÁŠ<¤×óQÄN¨ñ ëµgðDû£_•D¹ ¡N#±`Ñ\l JP××îä\ñ€Á°‘àò ì ¼UGÅkðFÞÙ*ûÔÀdÜxb"±Þ䨦þÃV+)§vÙá¶A‹ÁFs€Þ´×=è¥Ùîs(/žÇF™ DÜ:´ÆaÒ8f{ \`C¿mÕ €q‘ƒ×Ú%>á(MN¹ÛÏÞÜlVbˆ:ñÕqv•™0ÇÖ_O/Ylíj:”QeáX œhGÊ жäv¿,ÆÒäo Ý´úDtJ¹;Iò‡l¤ÄŠÅ=Ò7¨V 9ÜÃJ6–"8@j (Òv°*Ú,yã”H§·« áH7‡`Ó¬>- ' ý?êù·‹©U–É´X6é8;¶Å"à¡ÁDom µ¤„r{½Y§ä!ÖûÑo𦅮Ð|/4/ÄšÛxž‚Ê<;„7jȘ<ðDðD)j{À Z¸ ÓÛÝ×Ü\Sá h””wHãÀNäô\}& ë¾¢¯¯VZÀl,{ëµü6K³F€rBÄqûŸÝ{³дR~A$›ly ¢"¦È·Æ2[yÒ´,DMš†‰b¶‹Ö¸ 9ém«,ÅiÊñì¤%–8S:> stream xœíÝŠ[9Çïy_¤÷èûÒéôý@`_`wöbaæý/ÖN¯TåÖoJ²ÛqÖHȱ|¤*UýëSòï»e÷ayp»ìüþï²þþ㟻¿ÿ´ûÏûwËö¸-ï^ÿûǿ޿ۖ]Y–‡°‹ÁïÜöP_ûí§¯äuyÈøAÞ¿?ˆîÁãÞ=$ü`q+}Ö ôAö?ˆ~ÿúÀ#yi Lw\Ós`ºcŒLwô‘éŽKdºÃš˜îÓbbºƒG*Â’™n¿f¦ÛçÌtûX˜nï Óí—Ât»ueº]^™nW¦Ûy\¬[6¦{Ý€ìß÷*uøsP’Ç/‡qÅZÖ=½_þ±ûÛ³Û¿o÷å·ÝÏ~ùe÷åßïß„é«î?VýŽžMÄ7†¹7~Þ/úמç2’QÊË×VySÞúµåøò,ï·· ,±\eàúò¬ìykžêÀÍfK.ujÅ–œ^¦ý·ûåD˜þ÷íÃ÷:õFEaÿÆ¢®u`–Ya ßd=êGs—¾J[Þ«Dº}i#2„Éê]ù¹>>•$Ïd ïæO°ºÜ¾]l2d/…^­2ЉBké¨bt€~sOªN †‰´%’_EÊ3¬P³¶ç¬~cc­ë˜“IÌ °&Á®€~)ŠcCbM+;`Ú<·#G [Î*q‘QJiÉ âž«â¥yø¹guXê@ÅÃ)üˆÛËèÇ"ã¹n‡~×s7Ðö\f°j`ñ2M{:½&˜  I2kÿ>½¾6­Va4“!Ùõ„4#I ö E¿"躲¦ÌeÝûUÒw×Ñljƒßö »}m2Dž5Ê>÷œ¯ MÚá±- !­ðý³á Fíµe«ßV`÷o@®G[WgI#äŸ&ѹëz†{,T+v?ŠŸòö6V­±ÌØ‚åàøÞ†ôŸ05½¦þ3}ÚŠÄô½¤+ß´ zˆ “/‹À´‡5gÐfŠr +§H9öƒÀ¡ÃG_Mmyjä;'z_éV8`µ¸_3ɾóÚ³-4!›”é0@ÉôGñ+lDj©V_R†ùnOB³ÏÛ@¼ÔZl×`“µô’”H¼Ô ' ,mËÈz ëÙ"éz©ðÊ–Vßò8ÒUrßÄÚǪÝTJC'x¿ÊG_5ØÚ*§É‰µ¶ÚS+ÿ·©¼Ï VA!‚éOÇš‘E$¹E’[¯†”P‘2¥påP ¸«\¯rÀ˜Ò Ê^"NÍŒŸêÛ0TRoû Óö Êúz˜ÎÄAä¡l†rj•€Ñ ôR)µ §*zxPáB g'ÁQ…7Ðõ8˜ÚÁ›‡hÛÑ)N‡RÞ]…{ÆÜíæ·²›*»LsÈ@'Œmϳ•çGyØ+I>WK©0©%!±”Ò§´vz¦ö, JMFɃJ³ŽL! À½,²Bµ}úT–h Yx=õ§^­°*DÍäÓepÓ¹¡+‚È(Ocòãæ~„2=‘q÷„þšžP,‡®¼Ûi"ãm•ch®Ðv½Û7·Úê€-:yd0ÌløäIåÓMFkië¢~­ÆÕoñGNX˜¬ä_F߸d÷ÌÏ÷Ìü§9í]Ê_}Wã Ÿ‰'†ˆ"“fR2Xh Q »‰æÍ†™3Ø…Sj§Ü¾»‰»³m1ø¡ËÉø+ZÎÖ¬1jNþö–Óù›éà°$ ȸ[Ϋ[NÝ_²ôRÊÅ•&ÎÛ,1}ëÙwu° æn6:NÛ¥¾ ùHÄfìRØn¥‚k`ñ&›tF먥Q¥7^ù¸ÅWÅð¯¿<î'[h}nÄÁÄUî™9ZNéHZ¹–?‡Ý *FV-²#*Ä pÈk³›òT} Jô Õ雹‡qö¼£BµkÙÂîÕ´z‚¼±ÆeR$Dhó@ÈIh'–¤S=¤PÂÍô©X(Gd\þ¼ƒ•½õêwà]£nl”|6!pH€û3¡Ç•åjÒy¤޵@5 \äEâ×­ãfzÊØØ!Ýç´ÇƒxM8¨7O¥þOÞ“ÉSSãÁ^)5N›7_¦qE½é<â•«ß1ÇÄ·n¦‰ÇÂ7"ãmøfžBµS^Ú%p~¤Ú>H\> ‘U]×&©.ÆÔþ£Ž‘Ëþºc;¨¤!» ­ñòGÞ|/dl¤¨»á¦?YÛ6upâd¡5‘*„›é¤²ŠÈx[Ä y KŒñ,é7B: 3™t™EÝßÑq&p Wk ø'®Y˜•6×­0ŒBxŸe9ú‡ƒÔ A?÷j(Öš°š¡[J·Ôl@é‡ê0 ‹.í Ϧ¯,kù„Ñ Yâ¢$^O|T<›9¤ê·x3TWmÀEƼÍen’EÚ¤÷­Õ˜G±9¨Ý¼n—øÎÉœ‘>ad©¼0;±Øˆ¥*•7 k¤¢¡Î Cb±Rm*O‰7Ó³u]åÆÄyx!޲ÓO ˜Ø½g•­†!àAÙ Ò΃ˆ¡¥~ÇŽçoäúfÞ5¹Ë ¼oɸTH!@Z„ ¦s€žºÝåªÈ ‚1¹z9ÀAñ3Ü)ûnÀlí¨k:Nµú3¥IŸÒËè;p½.`ÌÿpÍ^¥$阌¶Û¤ £aÊ^ãlMïäÈ’ƒ7L‚u]v¨pJ6 "”Üx7{`M‚­†«­†çÞbz¸iú®4Òôl‘½Å;QûjÐäÅ‚ÚW»ÀwÛöW½Qr`ºEšrT‘˜š‰(ÁÈ™H:\6{Gâäýª·úâÔXwepB®²ì߇¡P´ß'îeÍÝ•o„¶X„1‚éšÎÀ᢫BG··«„³9u»„`rûȬLãäæi@ËÀþ̶nh;c(ûD§$ ‘BHåc803ƒkísž¹NJ¹”o¦·éºÐŒÑN!È~´¡K[;ÂÖAégò†RÛ \aâó]@¾ S«Ýˆ*SGWz¥ŽŠ4ØRHÅ.¼‘˜® Ïmš(d÷$&)©>÷âòÍ4þ\W‰1ok%ê~gKž ” ûX¿Õ=»ö Ázò1ŽÙã5op}ñ0…Tº >qüÀ¹r3Rו}`Œ j Tõ¶Ú¨ŠÇ¬ú¦7<›~qÔ” ÔܸêÐ8_Ð…b¼YÆ8"? 1-]™²}Û§þü»3ÚÍz$ vNt01w·+³L Öýh 6æšÇ{#I å10{Zc+÷+)àË¥€ò¶‰VEºTä}åh¡Z¼9›úŸ…IüU'ë·çŽ(~¥¿îþ ªÀeQendstream endobj 37 0 obj 2769 endobj 38 0 obj << /Length 39 0 R /Filter /FlateDecode >> stream xœíÛŠ·†ï ~‡¾¤S¥c 6Œg|0är€}±Áyÿ‹Ýíé*­j}³¤>¸ÒaDÀÁUjIëôkTþºv?ûqFsø3¦ãŸÿ±ûí‡Ýÿ>~öiSØÿÿï¿>~HÃ.ÃÞîœ5»1íãñgþðíE˜†}Àá0¾pãÞà 3î=¾ÆýD/üt¤^³wøÂ™Ãßé…Aòü`™n7Y¦ÛËt;ç˜ngÓíÇtÛÉ3Ý6x¦Û:Ït[ƒTØ!0Ýf L· é6.2ÝÆD¦Û ‘駉éÃÄtnbºGƒ›‡ÄtO Èþz0©ãG#yúrw4¬a:Ðûå÷ÝOŸÇÃ|»/îþc†Ÿw_þûñÃQ™¾Ùàáµxhvô¬q Îho™ÒŒ°ôË ¿–œ9²›Â<—Ïs…ϯÃááü,š×gGÅ×ɘægA̘N—aá%¯± ‹îõ¡Û-ÁλÉ;Ì»£Ÿ:XÚÑÒã2Ð>Ï)ö´Ÿ¼Cû4ÿÔë‚“»fgæ] Ëm—»Æ¥óŒöÓë³INÃÌJòÂ~Þö<ê03Š¢²^!>ÒŸÐħy  &?ŒyàI;å|Oª9}šp@Cÿnæþļ]%1³?g¡çÙN£0äv çgQ \ŒbSŽmý4#ßç‹„ÂŒíjYšJ„ä_çÃðšgôÖL@ˆ@׳C¤¥§réyߪ‹©ÛØF6Ìv/³99Rta:§Ã2­€ÞÀÀùÇb>3rfŒ_¡oþyX± <,=)æiÆq¨áÅì ħt^/P&:³ÑoÁFlŒ%­@4“` y‚y3ÒÁû¥TÄfÄHø-)™·tÌÍ;¬ ú¥$%#'è˜ôbl‹;àÒëèU@0;¸|j~ØŠ~˜R‘²j /·ù\.ƒž8ä5À½Î¸²D[ºD$$]”¹’5Òœô Ê)ŸÊ¥%yylJ ´tÐ!r a³3ÒHáeãæ I9)¸C!Ë*!û òI9g†Y¢¹Dû5§’‹K,#å2ûīӒæÈ¬xšJkÉÏù4t@ÜÕ7Á!¦í¯”›I¨q0ŸÞ€IB÷§¬æj=c’ª½ñØUÑõwýfóÑ&Îd}hå•sz¼¼žANnÅxæbìi‘ßYN2é6§’ê–r¥÷ÇN¡®ìKÌ[æãE⃠èŠÒÝ ñ\­ë@ÏO’¢Ë_`ƶÄnÞÛáºöoõÀìøÜ ¤ñؚ؅´€Ù(JÝì¨Y di8i¬·RØŠN5Za¥­\+Å•’LsËÎJuWU…§Œ¬ª*d™õ˜N-›þVFNÆBÒ£L²ùªú«¤H…÷%ÐïÒØû´¶BböÝQ˪[ÏÒ5>~«ë#ƒ%îUûe©¸*†Q¥Poƒ€JbÀ¥ _C{ó\ŠjµÌ?& ¥¹ö‚ÌNÀl¡²M˜ÇÞ×¶&³³Øe?ûÉÈŒ¬BëÉV*W ¥qv†JÔc‘Sèê0ê”ÃæŽ¼0µX[XX¡ð`iaÊØ:¡Ö[±»»Öè Ìì"+óæut·² ¬ ˜­ZYå@—Îç2piêÈÃæJÊ2È}"ûRûy*íXòøTgÌÁ zÿBpÏ@±ÝçËÀ²´&í½<ÁŪ4šKáû;²‰*3þ)Vc¬£·zÜänTúÊdê÷2wÚÞÁ´³ß+®+…£_Ä¢G^kc‡H®Rÿ2‰ùÇM±á\ɽÂj»àX"~€ø¬*—‡îþŒ¦wRm†GÀìþœ/¼ß&üÁ†pºW(Qé øZÓ³©w41:²€øÞ7²È|¡ØmG§Õ C.oÇ–ì–‰õ놫ú—Þúª^¢qŸg@ÔRÃÂúF3~PMä]—€d÷RH%Rí›k’Ý—×H.”B–3–ÚM «)䊟ܜ@VýÐÒ XQÀ«R•o¹ØÖðO¸å‡.Årá–CÊû×Ñýº 1j¹‘˜Ýr×Xß;F71û_Ô* »ézµÏ÷aO‰ò9§u¹‚>‰µÀ|ã¿|pKµµþ]õåè¦OîPûIæ¡ä™CO(í'Ò+J™|ÿö3úÞ ºÔ³{û À×;o?H¥ÇtË@ŒE \tš@`H¼ |æ‡ÂÉ,+ýP¹ôŽb # cqâ68ÍÇ ®Cäã£æuJáõ“K‘Yí1! ¨}ÆDu++ˆr×[Êc ½ýö¡‰ÑÄ׫Ŀïz{ÊÙ*Wµ§Øs™¨Õ¢ LJ޻úÐÄèÀâ{ßÕ¢ZÚsÞiZ°¢ Y.«C6ôŽÛ‡&FGßûF–^‡>b¯Cƒv÷:ôo«CS}Ç:ô8Æ}ïξ1jݘÝR‡Nñ·Ê¾ÅQ“ˆ/gìüu÷òÓÝÂendstream endobj 39 0 obj 2535 endobj 40 0 obj << /Length 41 0 R /Filter /FlateDecode >> stream xœí]ÛŠ$7}7Ì?Ô³ÁµyQJ™°,LÏt¿övm؇ûÿ¶ª»¥éE¨ªzü° †6“)).Š8q‘úÓtúe:ϧ8/—Ÿé¸þüóß§þ|úï§Ÿ¦ó1ÍG<µÿÿó÷O?Ó)MÓy=…u9ÍÇ9]?ûíç×_Ä}:GøÅ—¹®ÿ]¿~úv}ñ:ã´Ÿ—Ó·þö2Ÿæéôí·Óß—é§oÿùôÓzýuq—_«‡Ë‰=|‘ޏ޸|Yô¯HÇ5«)‰{Y@’EGàyºü•¹ ¥¦:"Üù Vhhz€õ ¶Án•®/Ð}˜©O9òKæ.ºÿ5Û ½•ž¬æ |¥Á¾ËÁ¹/õþì°ƒ–†[j”­ùø©}bWObÃáv‡@4¿ÿ;»yCè›»:“×¶ÀC{iz…8åÎÒâ´mиÍž±0–$Ýxâ„b»H^ôJ6)¬æé4òˆ"‘ÜWE –ƒ½NßtõéJ" &+œÔ‚™zÒ!g)4¸!§Õ?×!dY¶ŽjQUËŠ=ˆ+•–ÍB³rÈ#ñÜL¦¦Í_·¥žB¸æ{k&hi¶þ²X'°¹Uͺg ë‰Ö%ÏÕµž­e¼ÃrîùþxªÄÓ©]/Á„å+Ã3æwBÁ±™—ÛÚJr‹­$É\žÚÐŽÞ½"¾´Qt-€ŽÜ„6Õ÷ý–Ð…Ø5´Õ8µfCç ä¸ ‘*ð§òi½‘ 7BŸ‡_zR^ ™ö9ªnô‚ø-E?¬Ém"*ãlÀQ´e¸6 ;s41‰ÌoäÝ3'  G½'ÚB<ÉvÑMˆlÙrNªx ͬ×`Í‹•`·¢DÜfý¡ð_ã‰×a H:’Y‹˜¢…VPÀ>Í*ß"©tÖSCaŒÊ)é­…T™êêÃJ¦.M•¬_ÅÎøVÀƒ [ŠUNˆŸ8%MÁå"à‘£"/ò)‘3ë=sÔKdï•ôT¦ ^è~,òF D€%QgÓ\0 -"cv²ÓKÁ^¤!yklÔ¶©TÙC%½"xj#•â!=A!¬çaPuÎlн]ÂUͲ521këÿKÌœé§ôö¶ÎSŠ YdD F~«¼£#Òšk£ ]nïa¹nl¢p"ÿ6§Tú/ûY¼eoq‰: ³–z‘]C£‘a4"‡>ƽ-ÖâÞ‘˜BØ¥ºhÍÚJÅIÔ,Ûu{*•L¢’i‰ëò×ø¿¦éòó9nñ9…´:ƒ®¡TÐ_Á ÐI4 òÞ$Òf¹¹ð´øµ,õå.äF.¼:/ ­+䑿éjÝÙP¹¬IŠ¡Ÿ°¯=Í5’,° Zf_avœ«ˆ FºÉ¡gz ’LfG:íS6&YP!«Å±npn”„0è˜é± +-e:×϶².×ݽn! §ãUW';0œÃ|™B}'Jþ$6PªÎk6Órê ]IiƒÈ3moÂú~§Ó£øE%¥KÉ7±€^G"o_ ~‘J1ç³ÛtK@@š4Í4þªœ2‰ lÔ–» 1fMfBBxZ_ëóJeý6uV›ÆÄÇãóävPDÊJY`ªÀ•¥®b2Øeš5‰(clRyQòÉJ|9¥¬O'ÄÌ1ÁH䯖³LMÏO9#RvÙÓfÅ4¶©tÙ/à ۺ®ñ>ë*ßQë:¡iÃÚºH£:8˨PÃ;˜õ–Þ mDka}ý($›NEù¢Ô°ùª‰ŒüDÎä”Ç–*äreÇ…ÃõI(]«ß±•c¾#jåÐÖÜNˆ)kv‚Þ&ay?mÍM_¥±íPí{ãt!;Z¢µ‰Xs;cÑ¿øh¥¾efÞ ½)ÍÑ(Ó™ètºžXsÓØ‰]ÐùVeΙ5_ .n`".¤ £rk25»ßƒ\C°¨5ÊV§5õ@¦& ×&Þ¸t¬*æÓD/xhj8W±„>%dÌÝLsŽ\[¦¹Y§Ä+}"ìÁÈv1vÕéePÍCŽŽæL*Ø$E[¬¢æ «}Ó“‹¤»ÈA έ ŒâP(>Ån§ cu k¬êdÿ˜9}ž$}! F¤\ú7œ-PÕCÛýcóP7"“ñðà)íqàâs:wRÙ¤ìvË£V›W?®l?-ët†“ èµU eF²vš¤²òÆÔ`Ç2–Ù¶&’qC±mØG1Òil ¸„‚§Gr£Vvä4V·£;ÛN.'éò_€Â—ޓج]$ c£»6¯Ý´9µˆÚÚM›Ä†B<ýŠ½Î­öbŸüè‰ ÒÕâtI¼6/óšïA)¹*'û½—)ÔwäË=gµŒ½#ëÈ®ô¶Ý¨È'Ò³_ÌÕ{w=•ÝäÝÓÁj—UûDß TG ÛÅØ¾‘øÚJ)ýIWšµ¥èB½hÇ½Š åVmïmÅæÃW)Š-ÜÌG‹ØÞ=Ô¬ ªN&˜Ss|ñŒ\¤7ËÙêÊ®æ!È™äÚª°‡$¨Œ¦ÎNÙ2¦ÓÚ†7’[Býì@S´Ï}:á•>¹2¦××9°j.;:è=–r-ûÄßùc–ÛfêJ“àªæÀ.­§”òñPq±—ñºßúÒ°[Óêìú`g…fPÉ”áÀñøæwrE%üŠSýù±F}ä ó=ç÷*'ݘÛmäk½gî˜p}0à‘üFaT_õ[rÆ[¿Ùçäö¸íž»Mðv¼ ¢·ÉGÝv"]=¸Â¾¾ Lòmø*¦õôc#t³µ#§×„‡RôÆCW t$5:ÂÎ`úØ"-ý÷Ï:|ÿx~töóΙ[1ëiÿ²´#(+äDú¯ãx<ÞÛ2,˜Þ —?‘lµ@fú"ëw£çéñŸôðÇX[—ÝuC“²ÖåØU÷­kŽÕ뺗é팃$ôR§œº|E‰> stream xœÍ]ÛŠ9}7øêyaz«2•©J|i¿övw`fþÿa»Ú­PHçD(2«zf0œÎRJ¡Pĉ«~;O?Ÿ.§õ2½ü·Ûß¿ÿûôÏ¿þ÷ñÃo/ÿ{ûóû¯?|þþñÃv{3_ÎOËéû¿Nÿ¶œ.çÓ÷ÿœ~žçœ¾ÿ÷ã‡å)¿¼þò?OÛ'Ï/?ûGºœÓÓD‡šÎƒæ§™þ0½Ía}º¾Ía‘'©<ãR&ÅU€döá…ìsfŸV#Š(×*©«4Ñ.®/.J$W 2RŸ0õQÿ…sÀ9I°¿Ö)œnÇ|Í·y¾žÃtÚ^áùâÿnÞ^~¡~Wϯl—ˆ7áE[è3Ú î7«I"Ìd”d ÛOýüP˜5⦣v™ñôµÈgÅ?Öšd\{ÝZt+ŠãµûNªiûTyV”Îsÿ¤FT3¬R~…êbî9 Ž“€æ='-„DunE2¤nXà¯r.ªR~u…9ËÈ+¬bî~Ua—÷­ž·ü0÷+Õù8«`éžÔq<øq1÷‹p·Ásõ”Oמ3 (­€Ä¥èÆô *KgøÖtÇqz 8Þ€î6P%T†'ÅL¨g`þßK.øŸø®¿ñ­™“(Ѫ§\Ö¬ÕžB)*aA„ ëkŠªDn*- *UÕ§9ý'D'y€ô.—gŸ‰Îmࢠ.fÕQèàcª"VÔh"–T2XáÕŠ]§©ãƒ9š„ÌX+dÄâÏÃKÀ(Ï”+/*SÖÛæFpÀ‹û°bm…cȈ úMUð¹ÐTËr êbòÑH`àbúáL>»Ö‡@hb —AÌ-nç± Y®ùÇÛZŠ(NÛ'EØh!9Â~Èì8Ñ"Y»¡‘ÆT6ײñØkÏÈŠ…¹Uúèm®p¸‚p >”4â²L<ÿ9ÂÎÄNj"BöŠÄÖ«æœË€ãÜâ%R¯)Å Ú~("äÆ Ñô ©ÕŽúPðÍ<ñ\͈EFTŸÎ°”J­+ˆ°#2Ä™Af3fX îWR\ºÄÇ”nâcÝ^X¼uvKÔMx}}át6Ô’Ô>6ÐŽXVOh³‹cŸ{¿ -‰ª}#E &½3ÔãÇÜdÊ@õ½7âø 9|2ßìÃV…4QhœÅ'ÊÞënŒÓÙøƒ`<׸qD'–+OKœÌŽKMˆª0ò‚1KÀÍÕUÚÓ’Wº/ †±ḭ̈ǽ¶bú2_Ó?*• cf öÛŽG{¶Þ£Ñ:¦n5©= Ez|éX‘Âçž-uŸµG,h“ÃØÚ#¶IbÕ8Û½ ެêí-_|^nþ§V|R‘²Þ@²S`}õñc“±[3OWcwÛ@jDŠ÷˜RRa$²˜‰šA˜Só1{€êÞ €…÷84ÊÖ²¯ÜŒ§‘ÐîÈà!ãq¸Esý0åDePHzMè»]!iž©·ù,;H2ØäaˆYtº>Ñ*ž‚ÖÍ‹* ã˜ŽÚ*Æ}™<"àéã¾pME%[«»á R‘F†-ÐX@y$»Žx ~Í=Á „öñôõæ¤i´ÞpHŒ@…”Fz†æu5n ÀÞ^ï Æ8à’éU2»q­óåI²–~Q¢üƒ\ Ï—G«hžX03zA k&¤IM±`¹…Ô¢DÏà0´R1d8É‚f¹™glëtþ& ¥I‹cÌ \Å_¢kž¹EÔ†C^‰ìKfGíòv™IÂ,ƒô ZVŽÄã2âÈlb)SÌ€§Þúé_œ¿…‡šðhæ´#îÃ(áDÕ“‹ øvªŸcý¦¹Ö>Ù~yÛ»T8™+½·úA&ͱ0€QãŽoÿ8Ùé[Å:Ù$Î8*À¾/Û&Ä"¼!`XÕvô_Ç<,g—MØÊ²Ëâcý˜èÂHíŸPL „1ç+1óĉ9˜†¼KGqËÔSŒÀö>›,’aƒO6Ø-|'÷OÂ0囓Ά.³-®5$y:qէ܈̋è+Ssn=„ÓkFi:¥Ñ{ñAÎJ…¯tÅvÐöbqmÍi©tÄg†*ƒiJ<š ~j,Mò\HÝO<Á†ÀYሙòQ† Û›£­c1Šo•“üðl'-3|X Iç=ˆ— ¬<ÀÆ£‹æE¹ÁR;8Œ ß O£yÁŒ5_°Ïo¯ëpç{vŠù˽·Ú,m†æ$Á¼7uhH¸3)Þ6 šÊWK›š~pLžù3RÉœBë(˜à'±i—I€éí€ËýÚ!E ÁCiÔ˜ œ[öïrv˜fã[‰³®ÓCsÃz˜õPÀºÈÑ6DË™e׺T§²§Ç ÛŽìÝ[>+ЫæÊÛÎ_â^&hùòø$‹¿@é÷ìØMâƬi†‡ª‹s5µÛ!ìðŤv·.nÞ¨w@iª‹cC-[ÅoýIÈpæûóœ<1‰JN ªÚ˱µ²FµÇÞRï„·Õ»Û1)ÒË!V¯!uR¿£HRõŒ-5k™äºÊnÙYÉ$ÕÂÑŽ—ôȹ¼³lG8»89+°7Üg\{P‹p†®’yÞr¼ê£$T>’‹Ý©X8ÝÉæwÎÉcRw|aœ3Ö;ç:mßfT\sê#jJP»3ÝTû½u”Z¼ÆgàMæý¨˜sÅkõªW­S|:Œ’¢ÎMæäüíƒë»”¦(S<¾÷ØÀ?}§G0ÚIêåû2ÞኖÑ.ÊŽ¦7‚£0 …éKô%¡DToÝñ Õ $Ô(ª{e€*yº£¥ãùj/0méfXéE.žÃ¸bêˆì>â²iú¨ž¤$Žî\ïg»e=×]¯U¬¤DFÞ“$ˆ—(bƒÇݦ3>÷3ž¿õ{sÐeÒÂIèD·LŸœëdÕ »Ç¦g½{Á˜9ù˜4‹î;Ça«rà{Z¬ÝÎø"v^ÛëŒ5¢°Yù ªKï·hš¼;Vh€}¼¿-ë3Eqá]Î%ç…ºßõnP-}à%ÎìÆE¯ÅÖ3¤!qX+%åš&@VÌ|?äBϦ:ÉsUK°›ûË0'4<о-S†`æÑç*füéÕ;r  ïq /¸ª±&Ö¼R{Ô@òàuç*}É®‡ƒiüÞëôª–âõyÅÓì èˆՇ ë÷܉x(‰þmÀ5v§R¢ÀS'Dîä¼C¯R…4þ±@û±ºøCµ^X}¬ Ýl q|›NXÙ,ñ2˜+ŽŠôàÅìÄGá((æL©Ê¬¤¯ˆ}SÀAÛ,Ò[òK‰j¶–røíh}Ãàð ,Ý®«¼U'Ý£oå}k 9}ÏPW ê£¸Ÿý9òn±8Øë/ðé"ð‡ßªÒ§€ºIÏ—Dî”Lý”BIÏl(”ªwÖ‚åTp¢D€sÐ@èÑ.Â(ãÙ9k´O×!JíéÒ%wÃÈì. lØ€gÉN£ÝcW+´ Àƃ/Ûõ±¡ÎlæÉê=>¤U1±m#’2"ÏvYÖ‡"ÔÄwƒ¾’Àý5•—Ž$N÷^¤ú>Z»5ÚHŒÙŽgOâ‚p–Ë }9ã=ጤèõ´c.Ë'¤™gûë<™ù7° ´‹×÷0ß<µIÎl1èUñ.æ;äá%}úXÇÌ5Ò­:j® H3ÑTD~¥ÉNÒÒ¨ÙH8$wWâ`<·ÉLA7¿.Äò|×FmñšÑpkH<ä–T´ÝïºH†å¹†Ë ¸³ ÓÑêæ7“³8êHü£Z©»+f™ùÊV9Æét,¢þQ_ñ\ðvÇ¿z‡ÒÉ-9,UÂqÐC¶‘ëSì{µYùêž²\Ü ôë4m'¬8Ûs0½Ó¦ßc7 z )ÂÃ&qˆú°Lû˜Tvæy¼&‚¢W˜ ö†Âo9¶€U©3ZÆ;Þǯ½¶{ÄîóܰmaÄÿiüˆ½Þû"/^‹^:]ëg¬aätÅò†—Fh6§ôZsÍàüp»¹Aµ…Ûn® óˆÝXIgžÑò «M¨Ñr$Hët÷ŽW›0è9êVtOéê{%ó5Ÿ´ª7‘]®e >{éøŠÇ5ïYz3 繜¼f\O©2‚Ø|pq»ø Æ£UDn—«CU©ûÑù»Þø"L;(¤f§eÄòªV2ÖWÞw©Ç¾ë'¼îë9lÀ!;±KéßuË +ç‰<¼×=ƒ}G†Ý>  ilŠ_¤VÞuïážbŠI…CÐ÷Á4ž$~Ûc9|{¯!„!I¤WŸŽàšwܱ¨Ë»~É óš=¼°KVÚÏθ{‚Ÿ: †í ¡u½ûï˜d2Œ†_Nÿ)ûendstream endobj 43 0 obj 4979 endobj 44 0 obj << /Length 45 0 R /Filter /FlateDecode >> stream xœÅ\ݪ$7¾˜wèëÀô–ÿ« ,äôé¾ ä² ìÅBòþkWµmÙú,×ùÂÀÌ9.—,É’,}VÍ_—åòm¹ª‹W:þ¶ô÷ßÿ¹üöÓå_¿,×mQ›¿ôÿþýç×/Ûrq~³­Ñ¥®!½öÇOǧ®öxàÛæ9®Ž [½Æi€¿kô†Ùlü¬`šßð‘òÀ«ë XWI5ô–ÅëD]ARzóUîæAØ*ªû¹tTm~ "§[œê#ÏËu§åºgÖDÎŽ§F³7#13|BäŒ?ü+Bú“¶öå{œlÖ8/DRîòý÷Ë¿.òxùþÇåç`ÿ}ùþ߯_LœŸüìÝñ»‹ûpŒ“GlÉïĽä•ç„c$©èIy;FôÕç‘ÛhÄ”ÕeGÜ žu)s6¶zèä²WÃV×LвúýñE γW½Áœ{/E•kí´ºŽµ“%Ó°½þ/¦-ŸçkûnmÅ$*:·l_¸Ô|7Žu/'—X`Þ»ü{±Z5–ò„ýÉmϾÏmÝúŽ¿ÓMáfì‹§¬¯ìŒÛÀ£å&,smy払î:Ø…j¡†I¹ö¼ ¸‡ûn§<ØÍ²/·ôXª²ãÜÖÝXòõ¹Çˆüë(HûÍt!šší~º·:Š<=Ç<‰qubÐ׉*+Ð3uZY8Ô‰âóØ=‚©­åUÈ©ð/ã*ÅZúÆE¡«Ô‰¶*‚óíd©Õ‰_ª[}C{À¥žP¬Î Šk•ú^5! C°2Ñ/°uiŸ­> ¥ ºJµž­D~ia’l°ȲT ý«vb`,›ý ¥ ÌS—ÊæåÉDh‡MöYvc^·“{œ-‡…Ù€r¶ E‹¤&Ñ Œy` uP³}ö(0iZM¯ø.[ìËX5D}&Ç_å„l°ÈZÚ1§·³]©Ö4‰8‚Ëadt éħÉýÛ#‰Ÿˆ ˜L‰‚k¯½q•|gT:î¸vy=® ÔÆ9v¦:îÞd쩆ßÇYÃMöÊ΋g*2Ü{ÊRæSP×ë‚௯$3œøWoG†Åæ]lÞç_A@ª'Œ‘žÌ`µfé& j ~@9€GI÷ʳ~zÍs ÔŠé ÊÍ ê‡°A‘zÊi²É<6™òh«ñ›- +‚©”¼e‚ªÐ| ì Iÿˉ8¤&F-þ€NQÍ€°´E9Á2º‰¨Ì§7Nf>-ð8-)( Ìð.Jߨ"1y™ÇÀ÷Z6ZVÞ¶ /@‹äu5)À 8ƒ2Òɲ¤ó£=Y,?üXr<©&v ùäX;íõYLx5-vx½i‚öΫ`½sKüùï‚6l6ì¿»°èUë8ÓïÞÖúæïqnЋ3ñ¼¶qöG‚{q¯á%¾áãï·Hýî•õ.½¡uðñý4SyžÚçÓ`â³×¨žÍ¼œ‘E­¬8ú¨Hé4Õ-*oßéz-Aeä½ºí¦æ3 ¡@èÃû ÷fø9óNA33dõÁ§ñ“c©Þ&ã¾Å- azL×Ü—I Ñ t/ï\xž5 š¤‘à8P|ëˆ ¼\`•²[‘I7$H5™i¤htßBíeËÖ Á“Ù/ß~¥Pisþ$çÀÛà$·òÒÜü‹Í¼çG'$¸Í(øèÌG$ ¤à¼†`§b +RKˆ÷K•òS$0TŠÉÊÜ7I‰ˆ®:-ZΩˆ¼³j6?v5ìøÑöà`Ô™v)ÞÔÄáêÚl“FT4¹˜7•ôÀiì Þ€Ž¦ý MTà½SµeGrk¦ÞòÂZ†lélÒôɘ ÓðNíÁ<îaïŒá½PŽÎÚ Óå*ál¡‰l §ÑK’c¤¹¨8FÈýÈó­z92°Îæ^¤›c†+½$÷„=H8†>ùˆ+¾Qô¾ök6æßºœ Bc¹9úü›™\<ßoÂ}c+r(õŽ•5³š4?à«#Zþ±¬ât5OOZÔò±"…"b–òÃÆ#)Mç™h˜¢œI‡«Ì!À©Î%,¡[GPs ÌC9½ö.›Æ3I-+IÏwpC€6x­] + (W¨ -Äê™U­“íš`Ñbq7½ßÝ¿°ëµo¥ü0âøÀ`‰üŒ‰‹ æl¯.V¥ á;E…¢óª—Ð!B;ÄQb³ÃVfÿÄ¡YF/íŸ)«€FdõLdÐ:ºYZíÝ>œuçâOÖ:ëírÖê›^l*þIB(×÷8SÇ]Oÿœe}ª÷#¢pQöUdïævöµ>­soò)ö~F9 YçÖ¹Õ-NÇ3Qï{×·ë܆›§!Yº„TždÚ|ØLz ÿˆ½+ûq3â4>ßÞõ¶ö÷›4þ {×Þæ¨|õ¨ÀSÅ:i¤?›úC´õ † %ˆ tÈw¨«œÀnKÔô8. ¯ÕÏõô5@—kÁ¾ØY7p¹-]–Ñ,–±Â~¹·£ÂròåƒpüH¡¤nhÑ…Þûï´q½uöVÛcµÃ“œÿdÚî&~o9xÒÂ¥ êd°ô> ]‹ ÛX˜‹oˆ¢Øç®¹‹ÂpÎV4ÉÌ¿hœÞ¡~ X§Ã¾—$g.ðöÒ‡„TúL«®yívÿäW&·dLiX% Z¯¬ú,P|=LÝ9[³–´3]«A‚Zø`ÐaD…ï‹ûžZÔ÷Y$§WŠÜß¹‘w«ð+Zjç¨ÐÉzÍÀëχMÇ_þ‚ Ö£ùã´1þ&Ûu».\!ð.nÖ³].SçœÔn9ÃïV½Ô¯ÌuÅ@Þ—b‡zùP¤*ŸôßòKÊÒ•…påÂ8ÖÕ]5‡ØÈ’>£³ø…»t sþÿƒ½R L;ù1í¢—Sâàä'ç4„(W¢Œ3©*îe[EQ~HûeÛâs—R¢ °h×|lÂòk<‚6šÓýŠ–¥Òƒ¶&’çœmk¢[jÙßp4½… ÷,)‡ÝÉ´3Íj³2 &;Øó?ˆ ñïFxÒð#™¢6)o"+Wæ½DB«w^[BØaä›^ü=>‰ëxfß¿çoQC·YÃå!•WY3EªJšH²$'T°~“TVEîlâÓ«Äcâ6d(˜øô5ĉTQÚ¸ÿ>Áæñ·ÍûHe¨s™OŸ“7ÿ|ë–(í4§t6‡¶¦¾ÆíÚèu wwOËÛ}[¥þzù?ÿ´–Aendstream endobj 45 0 obj 2946 endobj 46 0 obj << /Length 47 0 R /Filter /FlateDecode >> stream xœÍËŽä6îÞ@ÿC¤ÖzQ6˜®®º0@~`7ö°@òÿ‡P¶EÑ"%¹jf±‹FWWË2I‘ŸÒŸ—éòót50?ã’>ÿú×å·Ÿ.ÿy›®Ëd¸ÔÿúãýÍ€¹.ˆpµ~zwÓ»¿ÿôþ¶L NðÎ^ \=0ÍW·=@€ìAXŒþFˆá âÁFX?Ó"8¼ý©ó8¾=u¶~jgOïú—p| 3"Û!Ã5TOƒ)xåS³4±š9óL} ²‘àÒjÿDI¥ŸÄûoyv\—üퟗ<â¿ü~ù%xo| ÎNvúõòíßïowœþU°x”ƒ0ïÒ›Ç÷ÅN!Â=ÌvB]™‚‹>ZXà1|„Ï4gšÿ˜÷7¸Å€ÿÝöñeá à»é[ˆSz¯K¥‡L¤5©ŒâàñV:ð;B»%,1}{$èà aL°ø|§n£-:Dq[çÝÁŸ¡$Î(™%þ‹ÿLkÂ_‹°‘Oˆ%Át+…&=Ù¸‰gˆñ3Â}ãF¢ çzDqïR°¬;?÷Öºu¨|à=n¨FÀ]³¼¨-Ú‹~ YSzöKfd@ÍjŽ,Ûˆ¥·â>'q¹žóÈ#ã²yä. =&ÜŒ}Ép2v»Ïñ'³ÈÈF¼%ç¸<'ÄG2=‘æ8Á [¯=ÿÿ¹ýo¦&ê8Õ̉6Ï™`ó;„&TÏ ÂÒ$533ÙÅ&[Š’ÌMè°¥¬ÚÖ o Å µaôÜkÈ +ÞÊü" ¹¸­T 'Š‚P’š‚?rN%ÑÌw ^(ë1RëÍm('¶K­Eß„øKÛMl÷å„-6)ðyÕ¯ Ââ¾Çœ/)DP` g½ož6L»ÏAï„~wñÉg&OþˆÖ;ô=è·ÑÏV¿øs{G.–9‹û8± kWý4O0úq ÷ä”Í(6ÚxFgKaDM Þf–‰ö‘Û‚êUgf‚ómÉP&›P&râÊĸ &6KˆÀPs'W9>ñÀƒ<‘™¨‚švCMvŠ-¦lô²Útl·•½5 G—9„Dà`“H& ¨ó|*cTVgWQàM-­Ö(hc-wåŠ„ã¥Æ’¼¨P.°Ù*bcC™øëeZ©è´•ò@Qöm•÷xèø¾;D“5Õ\§³èâiÕâ‹™fSªHÙ ÖüÐÖ<$­.‘0S§ÀS³ ÖŸè5=¤=áˆs_a‹.•iY™ê m‚´ZþzžU¶{ìm÷C-Lpwm¢bÒ»v°ï›l’âÑ7Š I89j¯#©œŸ:%Æk»Øòêdü+S"Â-ãq‘´•‘µ•8Žè¹µin§h­dk.™ÈTÙ¤¯ŽDçüÎܤåÿB/2—\’‰¬ÌeÆ&ÓzÚ4'VkÈì*ƒ;™]D±òZ£ƒ"YRhæÈdÏ¥ÖK(ŒNPSÌ«|KSh ·ZÂ=§¾÷–,¯<ê‘âú¥hë¹ñ vÔ£-ÑŽüÎeh?C-ã¢ï„«–WßüN1WT‹ùe[GQ‡Ô€èšeÀƒn¬•xšEGÌæô=;S4%TÖb0Â;1°h+Uß‘û¬^uoûÈc£˜ŸYv•ÁcBje;HÚøXÏ){Jîh‚Ã#E…5«Hs GÚõ‚Þú"¬¸ð‘ÂI_ÐôUssÙV¼U[)PüoîøÂ9‡(Åd…7´çd9׋‘ ÖådZ…”ž9r°H¡Ö m "fP¬Ÿ”D†SJÿ‹à #®Â¥•¿E¬‘1ÝZ>™ÐžÉoŠ:Q¥ð"žÆÅ…WyÞ«[¯ZÒBsDÌà—–G–ßÚköJl>ö lŠ1T 4'§rÞ3A‚è;¹X3Ë.}‹<¥xMå}Ž`¤ŽÎm>Ë Jt z±®©ô6öboÊkdlD 4)–ÌWöa¤í”1²ÜŸu×…ájî‰Nÿ‚¬N;ªïµÆÚ¶ê¾³5ûŸm^¯ ¨D²„}ØÛy²'k•WQìW¦'PŒL–1ënÓÂe~Y%*pML2[)p2ä`+ÜÂÆ)9£Œé›z«éN9ô´TÆLíìZFí.jÏ[Ê»ÓΖ+w5deÇ’½Öª“É͵<M£×=WîÆÂÁv•¨—çJ‹;®HÙô€£S%,ׂüC…©z6n¢e[T؇­n •²´5{μsÕHÍ›ŸnñTI먥î&s «ƒ'yq1 *» oòuû §›8‡ä¯Ëœ¼;¹.²sa?m#JƒÆÏÑaP¸KÔªÚª‰;¥2Šv;eÍqßß%<'yXJ Ï÷f´¦ jú¬ÖzfZU(j¥µ”BìÈ4õÛ»^ÙV|ÿuÚ»ö@#ðzÛêà‹„t[Sˆ¾æh½LnœîÃE_Xo¡ÏnÐÖ¬ä^Y7³"÷ÝœöÑÍõz/äUe´EΉ®—*ÌÏE½yÄ3E%îµW'û!89rz"î}![{-ê-<"Â.µ:ßä¹Åa¤,º"ÍèºU'‘50#7aˆ|ð¹î‡ŒëÞK¯V´•¸-:Sÿ9šÐÕ zË ž¾R]ø/èk';U×:§c}1³“½qm¡oÂ'—–rk”)q;þ¡å?$S9}zì»ú]J„mdì2òR&©!.Ðè¸÷è/×)ºÏÖ#ŒÖüûáXÝ¡ïÜ §¼T•Ƨ¼è9Åèðš–Sð³Sâ¨#§TâT‘Ÿ=„Tä<HEÅxM·›dò˜[ ø´£\NÛRLs”ZŠ©Âë"fœŽ6n8ÍúÉæñ›ÁæLùVÓz&ÙÅi=‹¼ø;øTz¬5éþVŨø´S(7’èÆNÜÎJ§“ÐåÎÎŽ ¿Áz&šî8!‹·»;øîéÎÑúĬßv˜} ]ÚÝÎÁ‘>„0¥óÚø±¥»Mø¹áHïÀk$þ™%7‰¹áëJ÷‘Œ½¿ÂÑ8qØG~⊃vç)VçÏq4®#!NÛý±ôVº…üLÜܲIÝä6EdTX±F»Þçóï$¿ýt>iã«òc°ò[u½¹òõÿ#ëjbºÅ—nÛ…U~e/ŒµÔºµÐ^%JoNtDïÓý:·ê×²Þæ[à},v‰‹\oÒü¹ÙÏ/âxº?»®àšÒ Åõfß¼®Ò¦[ƒH=³>k)¦{‡ë­Éý&b–ZÚÕ¯È3­¯`yNž5-K·J½WrÙuÞŠ;¤•e<Á­É×6«Ç­ïÒ g=ÇWÙ±¬Ó®CκNðÊÌâþh½žâ›‰&—xžð²kSݸ˜I)Mõ™[Ðr¦©®ê5Õ)!ãi&í5¡Ä±ßïmË#AíÖwçpp3ñl7®ä–ŒŠƒ»•Š|½ü Lœ endstream endobj 47 0 obj 2651 endobj 48 0 obj << /Length 49 0 R /Filter /FlateDecode >> stream xœíËŠäÆ†÷óµ6œ¶n© ƒ=Ó½7 œð¼8àyÿÅ©r•”¡ŠOQ’º§jhf¡VI™qùãÏÈÈÐ?‡âðŸâ©<´euü¿NÿýãðßÿûøáŸã_Oÿ¾þõñï_>~NwvEý”_~?üøRÊæxåËŸ‡Ÿšêç׿·< çoø©Kç‹ýSw¯µÃùÚé‡Óí§ñbol.O· pÛóøâJÜØ/–Åñêx±*Æ_·ùÎæ—óÅîxqºöùòëRÞÙN“)§;»ËÝ–ßÜ]„ó|”áo bmSsÝ(Öâ,Ô‹XZ-‚ZŒ¢ýõ2Š£˜Õ8Ú£²®%PÏdõ2ÞX«yÕ³'öúÆé-BéÕ8š^\kÑ'ù¼r¼&E*æ§oìô«){œJ9N¥·…ÓãÒæÜ‚_ôí/YWJ/I¼º­ÇkÒy¦gËìj˜uõ)<(p1ÆÏ£¹ööópÀØO×â“‘½F‡VŽQÎP¿¥Ó7¶hfB…M9zxžuó<^“IÍxÑy"i&ëg]ƒ®ÛGÍ ž=JHPˆ*ž!¡uÆHÎ5íìÕ£ÈlM·ijšŠ3‘ISµ=©©޹¢i`*yØÚŒ{²›¼¥‚çÉWY\ ÃÎÇ é³¢H'’O@\†PêIØüàÉ®eœ0‘O¤dAêX‘Ý$€³}b3Ø_&ü'1uÁ!¦®aKÛ~ÖÂafÔj Ë#¬èÕ„85!N«Ü`1.³å¤@ì)“X‘žc’ËŒ"BÒ“)Ñú|´!Žò‰¬‹Âo¹¨âäÊy„*©9Â%¢—ù|afÎr!¨óx-)ʸë„)`OD۪˜+XµİgSUé¡I[«Ãº…^&²Úدf²J+B‘V„¹ kÑI™ùdDX"‹·gmYwíŒxKx}5º4ýÙ¥—(©ÁÅ1±”À­ˆwÃj¨ëµò2Þ£T¶?£ ?®É7Zä@Ú‚cÊP8U¤#ÎÂH"/ìáX`gE¤4œ€æ*"áM%¥/è¸F?gÑJÌB— J¨²‰š¦âåÔ ®¼@ÄT&*´£AìC–ç0[\ÚÙÂ5$±¼KõFCkư£å8^VÀkeúÓ_fʈ¦$­„wÇŽr '-E·s"£ût2,r")f4GN­éqL!ÕqíaBL'ÛêäàˆØx!¾!¥‡3€|Y·Óš–<öæ, ‚iè žéFÈ‚ç5 ½K8D´aÒ‹C•ò¬kÐpi “aÞ›V Çô²ú”ý¼ò²é•‰ô¹’½ÔÀ奛FÏÅE˜½°k›ñÅÜ­S™ó»Z?ñMÜÎ-À¦”?BÊù`ì&ŸÀ„$Re`öVìãì»jEìh+|-¼Ä0œäLÝhMÛSÁ}—²”w‰+’|÷ŽŽq²7rg+YÒŽ a¹ŠZG8é†;íƒR{».³er®/HZ+@­ÜjmÒ¨TBºã#d«zppXÖ¹;÷øD+&mØæšoœË7âî«ÞcGäcÊÙÿõÚb¾bAd3œò%ß1H:¬ªPƒ%º·²…} Ì ÈÅBŸ½MÁ}¢7âs©}Œñ™RZÎÞÄ |vž¸—Ù³6´Û7Ïø‰dÐ(<<¥<‹œÍPB—|W.?§àà®Id)8ÜSh0ÁlYÎíÁ2t1G5ƒCwªª}Àà@[˜»)FÞlrM–Î&‰kâR8‡¼%ºÚÇl&õ…ì'RÚs`fdJ»ÏÚ,üË~æizw#³KÅœxíºdgŒfíͬ`eˆŠg÷lçÞ™w7A%²$£¥Ñ›# |8 m䢱01>uêØÂãb‘jª.ÜžÁ†ôL8Qá­K7Tº[&2³É_ïØËƳ|áüõ{AÇ5†í²±IAt0CUl¿IÍÌÓ£U_<ä‰ÊøÇ#¨°õ% 7ßòVz¢Ý&ÑÁ«]£Þ{~ÜCØóÃëð»r+®j }èIùä>%øÚ‡¨ùÿ¬eE›v}³VV42¯^î Ä¼Ê;/fãÀ¦æë[6¹œ¥¶ÄÇ+ZQE[† ³)õ1«oe˜[ØN|c¥ ¢‘ÕŠ?Â@_!i%zXnM÷ÖŒñE«Î°µˆ´|­ªRŠªÌƦG"õŸÙ¹ºeïߌòN‡9’´‰pc],Ýh.¬œ¼b¯GșʩÉðÞÅJ7ìÁë9×ÔßµE›@®ê´Aõøê1iëHÑüòÐë6F½¯Æ÷wáÓ@Ü#Kö·;•…$Ü€ôµ6 3b¥þTÀ=D o+yeÂA.ƒ~ñ>µÎ Û¾Ðç½]L¹—Ù·Ã×^µthû6|½MÛ¾oX“ˆðå^ßÿPï­}“75¬·@­l+U«ÛLqΜ0†‡;»Ð (»£®ghs{øÐ&5•Á0Œù5øÜ|YiE4a¸7Ýš) Ç*o1fëSô-¤ã,»ò8β*T– ©Gëô˜š=9à­=‡…1×ýÉhÌÎ>¸S'‹ç-ìôÎ!üØœÝ))üY‚•ñT3 ™2¸ps¹2û •#‹µ]_鸟,¹¯Õ•ÇMW$’izuë«Yü+[ͳñ,Rq:r­d(-ÿzîÍ+Í=åYÔJzæä)¿=)ùÔêÉ“ÞÓò“û%k‰È¹³ž,ƒÆ ‹j–u¡,|D5†.Íbdz­ ÅÑ4†ãÜšú Õ_ÿ8üùÃÉ~ÚC?fÓi#òò‡ã–®—õé›\WJUe?èêþßÿ­ª±1endstream endobj 49 0 obj 2997 endobj 50 0 obj << /Length 51 0 R /Filter /FlateDecode >> stream xœVÉjã@½üuXéMÕjYì{ÀÈspþÿ0¥´º»ÜU’ƒAØOµ¾Ú|3X@ëèÓüüþ€·;ø·ß]èíüùþÚïžÎûvðÍ88¿ÃýÉ‚5pþ„‡àÿÀùï~—íÑë> endobj 54 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 3 0 R >> endobj 55 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 5 0 R >> endobj 56 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 7 0 R >> endobj 57 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 9 0 R >> endobj 58 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 12 0 R >> endobj 59 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 14 0 R >> endobj 60 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 16 0 R >> endobj 61 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 18 0 R >> endobj 62 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 20 0 R >> endobj 63 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 22 0 R >> endobj 64 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 24 0 R >> endobj 65 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 26 0 R >> endobj 66 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 28 0 R >> endobj 67 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 30 0 R >> endobj 68 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 32 0 R >> endobj 69 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 34 0 R >> endobj 70 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 36 0 R >> endobj 71 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 38 0 R >> endobj 72 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 40 0 R >> endobj 73 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 42 0 R >> endobj 74 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 44 0 R >> endobj 75 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 46 0 R >> endobj 76 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 48 0 R >> endobj 77 0 obj << /Type /Page /Parent 52 0 R /MediaBox [ 0 0 612 792 ] /Contents 50 0 R >> endobj 78 0 obj << /Length 79 0 R /Filter /FlateDecode /Length1 1392 >> stream xœå“ÍkAÆŸ™IãW±DSA²ÕªM‰!MÌz)¤ÇVSSZð¨l6k[ÙMB>jƒ¢D|Wë³SŽUüü`y ãÔæ[·u‘ºwÊ«Ïp%D}ºÓ-ÛÖ0úˆò&›=k¶Ò…a_³&Œ’å9_N&.Q?ç}£R®Õ£¸Ø:Æü¼o„—?:‰a_KüçC"Ëmx¢ vpŽôD¤#û³âÜê«•eüXÌÊûܵ^,ˆ˜Xb¯qtßÁ#f:µ«;~hæófæø±…œ›͘9–j­bQö‹>ÖážL”ñŸïý.{/ææbµ;oOw ~‡RŸüð³ù7¹5;\ ÙO7ì/ÖšÃuêVkþ×⯯Pâ²¢ˆ^÷+`'I&˜¥°MבXëÿÐ:u@ùÁß•‚\4P*Xµcšã§4‡ÈUÍãªæ0ã××ýíÅ=Í‚;÷B³äN¿Ö¬§9Dþ ¹ƒ™%ÍaÆ?R‹Ð–ÀçWÍô)âšéS i¦OqB3}Š‚fú3šéS\à.ÙˆñÏH!É+Mš@%¾G1Í\eÔÐä]‡o#ÌÛH c%®h2SàLãŒL²‚ ‹kÛÍh`5³]¦ÏŽ©d2mL4JÆè´]-ךµºãÕŒ‘’ÈWœÒDÓ+”Ýqg²áZÕÀ $Ì ñ¯ïúYDë<ÏQ›ñ ë ·X endstream endobj 79 0 obj 611 endobj 80 0 obj << /Type /FontDescriptor /FontName /EAAAAA+OpenSymbol /Flags 4 /FontBBox [ -179 -313 1082 917 ] /ItalicAngle 0 /Ascent 917 /Descent -313 /CapHeight 917 /StemV 80 /FontFile2 78 0 R >> endobj 81 0 obj << /Length 237 /Filter /FlateDecode >> stream xœ]ÍjÄ …÷‚ïp—ÓÅ`b·A(3 d1ÓÒ´`ô&cyûúÓJ7Ê9žïr¼ìÔŸ{k"°·àÔ€&cuÀÕmA!Œ8KIËAï²\j‘ž–øa_#.½t%ì=Öv8¼h7âS1_ƒÆ`ì ‡ÏÓP­aóþ´J„Sžy•þ&Vðc¯SÂÄý˜À?‘Ý#ðj´µ›rW/ig¤¤kÝå"(A«ÿ¿ò “ú’!‡Ûæ ç" ^Dû\Ù{()?”T[©_YPé•‹%zç ÷{ü9Xqñendstream endobj 82 0 obj << /Type /Font /Subtype /TrueType /BaseFont /EAAAAA+OpenSymbol /FirstChar 0 /LastChar 2 /Widths [ 500 356 556 ] /FontDescriptor 80 0 R /ToUnicode 81 0 R >> endobj 83 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 84 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Times-Roman /Encoding /WinAnsiEncoding >> endobj 85 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding >> endobj 86 0 obj << /Length 87 0 R /Filter /FlateDecode /Length1 5284 /Length2 35586 /Length3 0 >> stream xœ´¸e\ÕÍö>ŒH‡€ÒéîîîiØtw‹J—ÒÝÝÝÒÝÒ (%Ýñìí9¿zß/Ÿÿ ùx­™ïZ×ʙ٤D Ê´‚F6@1kGZF:.€Œ“«™¬µ ­¥€‘Ž‘”Tبïhfc-¢ïä€6älœŒL&FR€°­›½™‰©ã“ÿQRþ^¸„ÌL€–6.2€„¥Ð imHúãàhïdVì0ü×U•Ô¨©éþ°ðÿ§^Ff†Ž ‰™5=8’ÖÆ6F†ÿÈœlÿoÍhïR øOP( ÙX[ºŒ€Æôr6Žf†@Åÿž{bäÿqäÿ¶,ædi)§or\)àJ°€Kåûô­Ì,ÝþÚù÷&5à¬þ›IG}K3CAkK €Žá?B313W ‘‚™£¡)äð?bUk# ½¥™5PÁÆÁ 쀖ƒã¯%S3C k ƒ€ƒù÷ÐÚèoΠìÿfLÿgü^TÐ7³vTq³±ù/yY£ÿð§BB6®-##€‘TDŒL^ÿbã·ÆG,«ïhoæ й =ØÙÿþ{D:©µ6´12³60±²ôííõÝ L¬¬F€ÈkWÐ%z:kGÐ7['G/€±=\Ôl¬zA°ì?ˆ @/ôˆØôˆ@/òˆ8ô¢ÿCì z±GÄ DLz‰GÄ  —|D,z©Gâ"ýˆ@\dˆ‹ì#q‘{D .òÿC . ÄEñ¸(="åGâ¢òˆ@\TˆËÛGâ¢öˆ@\Ôˆ‹Æÿ'ˆ‹æÿ#'h«àcÔY@Ëò˜‰dFÞÁRßÁôÉ7 ™ ‘Ðè`æðD â.¨oèä|"y'hb¯ïüTòJÐÐÌÞÐÉÊØT àÄ;šY=Ý rLÐ\N"?†@#3KKýG¢ GDMŸ@tDÿÁ’ T¸ô¢²ìO–L æ¢ÿÂ’‰ÄHò_ô‚ÈKþ­ä©äßzAÁ“üW½ ·äþôž Ô©ôòÿ´jbzù¿l1‚÷—-ÐB/ÿo¶A±‘ÿ+ÒÌ *êÛƒFÔÿö1”ªþ‹}ÐVÕ¿íƒÂ¢ú·}KªÿfŸ 䀯_ ˜@dULmìÍ3²‚+÷æÁ%ñ˜xp<"І À‰5zAfŸx N±ñ Ê“2'ïIуókö‚Òhþ‚8Y< R–O ˆ•Õ#§ê‰—àlÚ< V¶O ˆ•Ýbeÿ‚X=iAp·:> VNO ˆ•óbåòÁ¹~ÒŒà¹= VîÉbmÖJШ§·y’L)›?Ç8¾@{+}k#Ë'ÕÄÚ«ÿÏ"c¹¦ÿw€¼×ÿ«È˜@¦õÿµÈÀuòWC1|Öÿcœ01ƒ5üÇ8aYþ“3Èà_¤˜A¡þEŠDøo¤˜AÌþE/ˆ«ÙßzAŽ™ý­+³ÓËòÂú/gYÀIù§-6Ùbù`ó—-6ÿj ›¿¦+h³Ã_Óƒ¤ÔéŸöYAµãô·}PXœþ²Ï rÉéß쳂pû[H)ðéørücœ€/ ônÿà6mcý¨ LÏÑå±!Á4MíOv€ç†Óc‚ ›=áþ;f”Á–€ÎÀG2à†ùÏóP X›=!î!w ý“ÑÀ²ãàøûÒøXÀà21²Àbh´~2 ÀUnli*ý'= >2þ0ŽÐ–Œà;(8N¶@{3›'À×P”þeó¿áúǸ‹'2+H‹¡å“¢aüÝa––f¶äˆ¼ÏÊê±AÁGƒÐÊ쯯Á¥içdã´?ñÊßbÐä±ÿ#êŒ,ìK~îëÿ[1ÐwxLÌoŠ®†–úOf:ãÿÉŒl\ 3fçtø}ó¼Á0>JÿØÎ¾Ç™8FÐÊÆñ/¦à;ìÿÖþ¤ ®/ð’¨0þv-ðõØÁØño1¸M@ï”?.†àVZý!÷¥­¾=ÐúOËŒÿ•þÉ{}C àŸþo–ÿ•ÿùxê[ŠÊt¨§žÐ™±v²2?ÓMž†ܺ £ãÉlg[K§§—-ÐÇVN–Žf¶–ç18wFfÎfOfðï´sÒrñ&G{}# •¾ý“ë øÍ ?ø$µ}’>0kC'{PZ Ÿœüà£þÑñ?ÜÒ¿×þª9¦ÿ&ì¯6é¿ÅW6È„½‘1¨Ÿÿ˜€ŒàGhÁJßÁÐÉòðã 'ÐO‚ÅÈñŸanªoùäb~„ ÐØ;>Í>ø)ô{TýwåQø8UÕ_#ô?BСâôG¹ß8 âüë•~œþó‘~ þyt_S½À#ýßHàƒç¯süDüûòÂ~ ?þrò3ðÝhb.mà#ðœs°eå‰ð Õà/!ø 4pG•à}–à.þ'`;Ôÿ#Îàç¶¥‰™¡¾%èÁÿè8¸I Íþ{ŸyR&,à€>=ÎØÀucc´~*?À¿¡8ÚØ?áùûBÖûw¨Áôÿù‹…ªµhKŠ€Ž~vNPDÁÒÿ4‚ãïŸÚ@sîÿ°±¨÷@W !òÏ0øÙwY4G8W‹f‰o:µ´X÷Í3Y£z­Tšt£©/f–|Œ¥ƒÌ’«í—Ó­®HÏ»Ž¡~õpV+ܧêÂy ¦^~§¾A&·d,H+OÔ#Õý¦ùÖSòªóä»57 j’'ézb*5¨°1Ÿi†."SI1ÛôƒµHõª£K ¯eŠ5•Ö=²†N¿7:|Ðȇ¹ÙK¥‡äE÷ׯ5BÍ^á@h ªCgX}~É4Çó1s‘ãÜîe»J¾YÒ<î°ÔÌ™\2yŠ•´yâš®`é;ÞG<²b³2HnAAfú `ë2¤l‹åB¸Ü™Òñ»Òÿ˜ûAï÷¨H£F l ùxpoMCðQѱ'Ë#ml›NùO+Ì뙂µE“½¬fîwp§¡’åNh#:á Э#i%Ãe9Æí‡ò}{šE^Lôz¾V“¹!-木ø› ð¡Ê8ð^tZ#»õà eñ%W(ÛÛdFí⪅²ŽÛÏçœó­T |ŸµÈw?Î­èØŠHÆj%L˜Ï0Ýåãz'û4‹Éh»!æb¬ác#®Hcãg Tb×ÿ.=Û¿_ýÜ¿‡>/?"Im3ûpþ¤:{çc›]c¢Zoú™rKgŽ÷n€£óõ`“þ7Ç<«˜ÅÍé.›XÿBEç™Z=”kö5?„@‚Cµ\:†ÈybTO3|¦“œr:-fïYUhjg³ÜDLÚMÝ´/(õ_;Z늵‡ŒV¢â8¬ä¤ö ) FOúG‡‚^¼åwGCû2ÜÝ4•æ=gm¨¡tÏ5ÉÎ;‡Dä{¦¤ UÌÞ'9Ó}¬sØÝkÐ¥ù‰˜ëWÒì¹»K ¡…X ê¦úÍ’Ãi.”mL·û}Ú:»bS ¢+pÙëgØr¯ïs´Ÿ³wRïáN?ׯÀ†D½è´a3;ýþ\tA樗³98²‘rTï°3_ËÔ±­©¹~ú[lŽA´ÇøžÔçäJ¬y“ÚVfxC%zn=\PÚ[ÿÌg¼fç“gÅ7ÐÏWh£†\ÞL^ÌJŸ ¶aÌÏ îVLú™ýÚ\n±:¦ç¡êWËD$HÇIîçY½¢{Å׿¥ë>›ÜêŒy,7Q¦‚’q§=䎪¶wQNå+™ ?¢I(K^Y‰,uÞ‡1º÷µ}™4Œ —̶¥ÑÊÝ@ª^ü3¬ùÅÒ ÕFE3dvç“QtóšlDO¯Ém“Ð훇ÏûFÞSäXçÛd-|ãƒJÇ(ß~®Ê“Ùñ½6pIr!ò.ÕÃQzù½_¼MO`ƒ§I[W·ê^4¯¶eSÈBÐÞn6*{õ"¬6M·C¹oEjïêÍôò7ÖDFJWV Lا©n“Ãml Ïêœ%±À¾TG€Ä šò@À±ÐYé-fÏßLëÌi·QÌ©76\SäL7ìž‚ë6ˆÁa±}n'–(Y pmë8P…ªÒœðŒälQÚÊ`á!:m–·W]#„…ÝÔ„ßc¨žÁ¦tJ Ù®µ’S3:ÓóD¶øqWæ«U{äsÕ—çÑÔ#tßø?Ï™j€IðR<(h{½©Íö•s¾ÖuæR?‰ý"ë窒LØ A_ˆF}Só%©£Ð÷‰‘¶  g–ç?²×qá}ô>f8DNñœ¥Ô<ü*ÂÔ6TÒLÚÒ(|Ó{­3$;†ñÎØŸíú‚¸ú;Êz‹eú×Gîƒ-r¹šÔGþ9ì“ûˇñ϶eÕý"âNÃóò ›Î ´Ë |ùt%“QÅ»¾ì_¹ÈCæŒþ$knÜÄöåŸRÓõg©ôV¶)M…‡“åw¸¡lØ,† ³Mð/€©>@}Fï˜þõÊÁl^´=åôùÝÆ¯ç Á—nܳÈ:Ò·!g™Iœ½ ;Á¹R‘šì›A½·ÁŒg¯9̉{ø½x,j_¤1Ó 2¨5ÓP §‘Ÿ?ÿ0Œ¤ï2áÇÁþ>2J䳓o…tN#œ ïGÌ­Íñð8iÎn~ Ïâ j‰‰.ÙáÀñw²\e"ÕQ’u‡«¯ É^B)p@FG9ø“Xw‰ÈÀÅhàd=Ã~kž”"¦Núªö#ô' }Ü Ðã´~Ñwî‡[ïÉÖmÝâýÜü+rÐü}¸±X1pQEô-Rw7‚"öÕ±Ä5FU}_~8fÈJà8Ò>†{ø¯ðƒ’#vjçS-S«em§YÎØ/«c߈ìû^X\A(-û:3GÐÛû"h;êdo;>“üVÃ÷Í>%¯°}òZ(¬õXéêõâ=W'MéÎúÑå÷°13ó$Ø‘k!œª×Q‹Ýª¦üƒzË,¿áüвz[“ûâz¾;¸_‰„Ƽ1.ľÃç¡×©NÒ o MлhXmÚfɧÛ*GxÔ—ÆM›)f2ï©¡ô˜pJÊ$7 Ks0eì`‡ïëN’Ýtâ¯ütY[²%è]«‚ –s2 ÙLp·çͧ^eæüü€6‰SvJ.Ó«#‡¹]ä—åfÏ'0¢ÑûÑ!µç;…ì݇áQæW}¼¶Av­Œ0ñ?”㸬È5?½uIÝ#«¹%ÚüP”ŒÌ~MïMeXMa[Ń4‚»ãºvÑp‘aµx{¢ (O`‚Ï¿ÔÄSÅ$•¯åƒL¿GH ³™±u¶àÍm¯ˆ§‡Â–Iô…F@s‚æÊR ý0é§o/j)”ýÏsPÜn^z '¯I‘Ü^#-ÞdB~Ûÿõ¼]dß‘±Îø}`{Ùü:vz¨ØÂì—×XEb>7/ÄC‚륓a¡ÁíÖ,Õt!iŽïCš ·Ì5¥û»¢0X-Ïé‡é•¦²®†µÄ©òSZÙ á–N¯'Iª-vÜhîäÐÙ‡‘¦{¥œ‡µ«÷UE)g³jÜk#‰“tÏܺºÑ†â¥”ß_¼i íÅ+R¨ä-ìz? ’Ö"¶âhsÙ¾Š]€è¹ðöð?j&1ŒBe8ªÍç7Gæïü¨ómv„mDUŸ–sHª¤»¤X£Z\XYª&ؤ-6¦wLXp‚^³° ÎòÄV;êK-Å!r¶Æ‚&°·»"Š€ì‡pý­­|„6öó–â;•³üV*Ë ?2Ì+>è^ìà®õ«b~p³]*oÙùd‘Šà¦¥ö ( ãàÑrŽDg—ò¬ÌlðÛ=áÙåA©!Rî“F%ŒãévRC»MïgÝHw£§„ÍHuÅ^ì>ãfMøTziè™5?]`Xê,I#ÔC_ PFùþ;?e(”N:âs…ÛÙXÑøÛÎíd¼¼çw$SÔî”Â\+ôËS|‡¨áÞ}.áè]mÍ0µ¦žpí¥]âvÎ}‘’Ö¾wº‰Þ²/ Þéé!­ÕáóàAôx$1ó¢ž0Žöp\¾x>¬Ñ½¨nÐŒ][”/¬Á–µ.`þCb'ÚÎÈ>lV;º)ÝÌQ ð«}§Ã¹Ú¥A¾ø.ÅXX1Pìþ:·NOþsòŒ¨Ðg=IÔ°.‡xaÛ¼™‚õ˜’BÓZ-a Œ] û‚Ó©TÖw oø•¤ÈRöÇêkMßôý”bÄ“‚ÖÍ9¤¤™Ð-5Mþõ†Ìˆ[Áo›^o5“éQ vØÕnt¬1D~@(Ïìà=pU}rÓ~-’¯·]PX‰ÖS PêjÃô;ûŒL½ú°ôšå3ýbF*ãH—ŒFkždÜwÛ”icÊWzܳƒÔFÆë‡Œ ÖŸÑ>ðÙag2Mgí÷™¼¢¸I xæx:ÞªˆÁøp¸ÎäšBùK„TIŸ10º‰fl벊9%0˜Fß~; EÓÓêªoÞS‰hˆ›@·"Ï›ßfœÆ‹X(;@_á*q"o†Mgþ21ž‹°3z÷–QÍ/OMšƒïÙÞ¾?ûmµ³VÄ8Q}ŘkíÜ^¥ŸÍ7áJÅg"²˜/ ÕÃ}rQ§µ²ê,´’-âªÛÜv_Šh¼ã¾=êFsVáû„ŸV¨ ÏÅàR3ÙFãöá“Ķ+k[ÏóStñ²ñ·>ÜV2ƒüx„8Ôtí£®6ûºP±5ù‡ƒ¯í<Ö>!EØýrƒIíh¨à7»R:pÅý@žw¬«µyûnE4@8jÒ»†.s‘ ÝƒžÛ±n{† 5ʈszöÌn·J©Ó ·cáG¦"†±QuäÍ»Œou>ø•FÎ_n‡Š|«@½Ëtå2¸)1)R䦤ľxoˆtq֑㪣µ¥‡¡Ã4ô&&¼ß@imCb×EÕÔÒçŸèp·¹˜ŒlCôF\ìE°ö9kÄ”G3'gR²0NU8;oTÓe¿ëïäÈNJW¢Ë;Ú•UæÎüéŒ×<Û öm< ÿzm8­´V~(Ùå+ºêsù–/Þö•Ç‚ªXïöFF#¶± S%ê‘û'^÷Oª¡Ñño'稸Æ`4úùbœ^k+ëeŒçÀÝ\Zµ¾ï…HÅU!R¸<Üa5*XH×-ÞÆì”´’%>!›2”&ÉÆ9ý„!ôa¥u¤ “/@$© ¡ätáU¦†ª„’§vCáq*Ž@ùRFLtþÅásžw¡_ÔÒPsÑ,¾'2SuØ’M`‘~!n“`i>h)ÑAgokXCž † |F,à+q}$Ј–B]¼s÷ñ§K¡`užÙ7L9Ï‚/ðÞêh, T2ß‹w¤ P}1S2ûZG=`åó³^æ»Ïû>!OoCsCÃÎPR˜sõ˜8"¢v»ûÇýÄ)ßyk¼ý˰nŠ¡Ž1âRwÄž«öè-¡Ã$×¹ø¾k}ü.Š™Ë`,ÑPžˆNü÷¸[JsøMïq5‹5Ëø«0‡î¼Xˆ¥=OÞ\Q Og¿š13øÞˆBƒoQÂ6¬§£Ð*‘_ä²»¥-¿·M 7Â…„ƒYX  Õ:=t‹W–Á»•dE‚׉Ϡ# 0תœ<©ÝZ¹‹47òÊ[ß (Yê¿—‚Àžq;7¸&›)pÚdhyc*-ôËiX£Ä¾ã§Ã§é%l“N÷K?M)ŠqÒ¥7¥ˆäj®¸>^BZöv%1 ‘?i³ÇdSíp/?Fv[³nßa´Sß¼'‘>ÑRO. òñÚ¢«vƸ*.·40ç…õ‘EÐDhêÆ,óQ÷Hˆ]=ðfQß§é­ g·Ô3½ßR%ŽV zþqït¥2Ä[o?Ž+¡­”§7rw~ûŒÇוk¯õªØ_ÿž+€üžóƒ?zYÞÊ}Ç*!"ï;zKƒâS{ÇÙ3ªœè¬ôØÌvýÛŠ‡/¯fwÌE™ë.÷¯U× ‚¾¡o?ìæ‹RÜß³šKÀ#hsž¨ßB THX´`¶Ì¿…ݧY·›™'Nã'¾`†jOedZ?9®[cb1í1©\Ý$Û *.ÃèèÇËmjÂ[eu鄵iC$ã1k.#ÈÛÉ„÷ UùKðÒ™Ôo‹™‡®üDà "¡M©G— Ÿ|5¤Ÿ°lòŠoê R¹çׯû¡TJ…£«–¯¬‘Mì¿î~аÈGRSݹgë‰,_˱ÈXØïÚ¤ýPø¡ü-þ]n¦i_º*ÆšÑ~gÜÇñ ^\¯Ö–!~ãÂíÎH¬r½Ò>¨fÚl½£æâ:^^m\âY÷F4ñfy©þÞB”/É©wBiK7Ëί7œú8Û‰EhѨ"ùqüWòûX#üÖ¤~è5mœÓ•?x RÛYw¤;0=Ev"Ë>‹6¹xt[—µxÖÈC–½1ÜÃ=NöS  üJF•.kãul­Û½‘¬T“?"Tû¢ø†õxñsòô½V{°»^cyü £â’üŽyu„TÔ)-"VqzaTÚ— ”´K–`\ÿwÔ°»x¥‚®ù~íx…쨵+Ÿ ‹õÍØä¬›œT¡Í([KBF>•ÕOÈ2+¢‹¶(V'"õÀ•‡ß¼Šãñø9øUìSØ÷–FxᤠK,ý­…¯H}I, ¨¡I¨¸»k!J7ø3ŒÅC˜Â0£_¢•úM„aË‚«oúÐÎff)\ñ …+É“SPc§ÃZÆ«v7R}EJÊÌ'"Û;n2ãÒKçì§1¸Å–Z:áÝ?{ãû¾}ÿþäK:–µßX¢æÞ¶¦Sô5¿§ „é-c¹jˆ‚JÄ(›+¤¢ýœ¿… :²rup¥h,$vûÁPöúáD€»¶¤4Ú!ÀIv•Ùc·np(tj¬E“~¯—·¥&ËTÒ-*•f¶iYÞ<"€æµKëNˆ±?«œ2DŒKG‘S#ÓüVî<>1I´PøªE¹´?ùᲦo⹑û¬=µÿÚ&zÀIÞÈ›>Š9iß9嬒€µ KêýžðT¾ }9tŸ $²¹q¿O(ßÛ+·î¸r™¿_¾Í–: (£vÞÙ&]ѳòlÛwOP+‹v½LCõ÷1ôñNí~³+ }–fßÏøŒî'’»ÈË1l¦ÂòËò|eªFBëü]ß~BÌî_ã\Éô:¥·åðlËñ>’7˜ªÍÚ8/9c‰–œtLEïs’ 4È$9¸—ކ%ªxšÃž=¼rUè¬òoás^é~YxŸÇ”Xƒy™Örk~Rx4ܽÏoxê6\ÈMžå«D«ö’Ì€/ÐåíÎ…rÒÄ}ßLÌÛ¬_«d2tH"«À_/àõ/-&·ﲄ®©/gc(†T$ç²›2l^õ­ºdj Ù-çG´ y´²Z¸ÂÊìªô¯YMŒH( ‹4"œIãùž joûó6mxfÁNתХ:ò‡_kŠÉ‹=L¢øàCîÖÐX"¤;¡ÌÑKöMêÔt‘T.{aåûß– '¾XÚѰ/ªsý,më_‹âŽ^ºb…UÌ";˜çÏR´C4”+«k£¨ˆÙ [ ëxFLB Íú¹ä§Ç¦-Ïv¡”ÇÄYšL‘uI¹f‰YWfÌdÒeÝ0¢YÎà`ëv¿ J³ÌeÎÁ¤›0ÜÛ,Y¡B³“‡ïŸ˜õ“N%nàç·È—1øwå‰_îÙâQ%`Ì Aû¹¯+Âë†ûY=ë:8(=Î;np<êð.átvt#çcË+»šÚa¥uFêÄù8/ºaé¿^´zµ†ó…¹0ëêžB+°×t,û,+Ž{Ô›ËÊ5`•”½†xòŽbòöÞ:v«7›¥'@ä(‘ ñv»M`<êEu•.×'†Üµ¸¡²‡¬¾–®Rƒ ¦Hu“ð.I è0|)uÍÓ—Óˆ)!F¹¤‰â×\…Ç(-Uå€ ³`*Ó™¾„˦¯^N?#±?ó.“³ §…ÔÔRŸ£–F»¿0˜ò™Ç±U±÷ÈhŸÜzŽºÆp,u¨˜å;=º"»ƒßÇä¢ÊŽ‘NvXë| ÄÇhˆ#ªG¦-5ûy›Z09QŸK¾tÂN×™z/ŠO1†x8ÅlŸÚÅu_  ²ŽìܱxþÎP3à ²ÎYsgÉК “ô:5jÛ+FN§ÑœÊiŠ1 Uƒ­j#¶jëÃI”q Pßi4ËN6ÖÝÓ*ƒ–qݦ&v $ÝÊ¿K¢ý WXÒTEÊù«©‹Úef×6Þ£òNܤ€k¡ayÔ·Ì=bëÙo±æX©3>ë¥^[Ýk"зʻ¥éŽë…¤Þ[ÜL\\÷'ÚIL>Sy£;gôJ=X_}é2O|ã‚ gR¸ºìÌ_Û˘Å9.õ9DKå%#ÊG‡Óþ(Dšw›ós(‚ˆÁ®r·”L6}Ô–ºìõ9W}áê.eþwÒö#öm~CêFk…*o”n ~彋üñÖ§ˆu…HÎùUŒ£tŸÜó™ãïÈãwHðè[úIùõo»’¡xäùO•QDGž;Ñe8]¹Ÿv†Fåoâ Ôyfm˜E€NäL«È¼ Ì§§ùÍò¼H«¶'ÑùuÝ«ø¶µv]4’ 6»¨#rBáT©èS@Õ8B(ªù´¸rÉóé÷K+ŠÕnÕ5û…&ŽKîj¹)KöklÁ ZÌcmž.ޏKŸ©¤ZÝÄ—ÂôŠvN'G4z"ßP£wh®ŽîûH–Zž3.Úîº78XݬÍtŠ„(‰–ˆ¥T#×§yÃ1¾¬–ó$/þ*ˆþj&EQo•Ç»qßê«gÕ×ÒqZ0ÑS2ìjϳ© ô¯œFóD“íZÅEîjÿN±ò8?\p <³[Äôˆ¬¬êÝæ4ÆÎCͦû€l塯{T¬ž_bÉ‹_T6ߪUà>ɪ‰³DŠ8bÒ6º´q”éÀ÷×u¼#°ñhç_67‹€¸Zÿª·¿8eÉ(¾-Þ3a œ ™×N|ˆ‘iדÊÌQwçWÇͨOس׎à‰x§ä¶kÍ …r^ë8.ÒÖ Å©Mž ?mmÅÓįٲvhö HkÛœü¡e×À¥À„ªWV]t}OÚ•ìÈ’×cOg@Q˜u1¹þòÛ*­òpVÜ9®Ìµº ÿYNiàêNËa!R>Â,Îl¼É€Ø½¯}¡Œ úaßêï, ^;àGÜY ÄñÓT‰w£A‹d)Ý´Q ŸŠkv帑¨ š[GøöéWïBžOw3ó”ÚúÎðºÛv)¬G¾¾ÿÎÀ•v${Vc–i×£ÐÐ÷ÇDí‘ÎGÊïQf|Ç që%9Xèm ¶cóÊ>ïFþ€Ð{£ö•“QôìjÞã&a K»œ “Ÿd¶6 xÙÃÇ$h¹ý¯ó~ èå ×3Þ|ùJâg'D0˜šoÍö ϳ§%¶¬å4J¥H1æÛæ¢ÏWXm¬ŒE °G²Ž*•lþS[èâ {wy’(] ‘èZV°•wõùë’¹©Ò ß[TáËþ¢ÃÄ^±Ÿl5o”h_kJÙºCÏœ´~ÌLÀžl#¨M½pq&¶®wöã™ïN˜#@ø¶vŠ+i‡‘6÷á™vŸ½Ï UqùØ”P{ •Ù«(w¯#—t)רJ:« íRì¶HÝ^ô h†iÃÔZf %‡d”»oL‰MI<w”ÊãâÜ·±)w½Þ­F|Ù¨’Ά¤d:4ÆÅlk®®û“…ù^L¿'x^U×̘gÈÞ°„aþêõ0†Ô`]§Íôáä’—š©œ”¨?îAÍ—Xï)Í!˜ÉwØA/ó“.ñN…‘Ûc«è)eBf ô©9²ö’÷Ë KsÔŒÝÏUcj½Ó %>½󅦑.Ly"Ów÷êOEæÅJLæ«.srÑ‹Òhñ\h2M‹šz¼Ü|W§ªVæÌUÕ39‡›ª›žlO£>¢Yç›Ä雲蛙Rªx„‘Uñ‚Ðí]ÆU‹;E‰‚®f×,òî=eV’NÔd°õJzÂopýçÞ÷Êu^ѵ·—ËôðÇ)Šps&™2c;Óæ8RÞ½¤}i#& ›†ßeóÞøyâjÃMGU@o—‹ºeû†&IJU€¦¯1ÎÕ¾€iú26…­ ¶aeã»LƒzìVm]êSßuXÉPžCíçõa(½Øóû-›•žE79´˜¹/êŒKËx1O¾¦ía¡¾ùäAé5 %Ê›D¸ÕÔ}÷Õi<þ¨¾ÖRþx0¹5”¿GÁGÍio©åVh_­}wµñ¢kzäýƒs _‹Ë*Ö¨v×U†à¼#JN9뢥¯YJ2©h[»ªâ»9ªÆ ê®=Hæfl°br"ÐhÜØmDW°|èÆJ¹éÉÛŠoc“Êÿ„B½Èã!ýŽ×¨Iù«§ 9RT±‚¨ÚJ­dŠ•‡ßþ¼]ò”:*Ô×/!¬Ÿ¿YÝèJ¿(« L‚ê~W’_:*ÜñÜÆ*=A$ïÃÂËLFQ»´ôÊž"kÔѲ¾ÆMãλX5÷uQXUµPä„”q>9'|D4,NVq¦Ìi?Œ„âՇ܊‘}HÀD6ò¦/¼Ž?Š:#ŒÉ£Z3xkØfÆ«‹Ì'æ¿yÎ}œ˜œ××< .´6É6$_Œ/ÿ‰_ÿì­±k¶øhWNý°`i&›u˜Îô˜¸¬9m2nµÌÙÈÊU®k’c>;É ¶n©”zóDICôkA£»Ù4|¨ÊQ†)¾ôád?ù.&u!?Џ¾ýÔ—=c\FüÅñ¢Ëϼ ³aÂäýrcÑ7ñƒËéšY ŽÌókž¶W–'YÙ¦'Süã=+ J0'Q/O”¢‰òñ‘ÈîsêÑ ã¾¯nâ àcT~ZIã{…ð­“ŒÞa ïkô/`ü»ÌEüÄoh<¶Ø&Ù[þ=ü]Ü{,úMö#[ýºQøt’%´ú/¾4%Å«uº;SÏqtÛ_Õ1pmvÑ"1~Ô S ­"—cóˆ²w̹¸í?ÿ9iñÉUF+ðópVÅJª ‰e=ÃÄGögìÅø©rc¬¯›8—f]ï;7êT`F²Z±Hå†ÌO£hçk† ð5í‡H2O)ƒY2Vܬ˜–©Þ¿4ÕbN  4¯F×[díîcô:è? ë~ñJX‘žáOWúæÚúŠŠªq¸LÊCøØÑE~:E€¹±ë¨ßCP̼¹ˆë˜¶óAS56sßá‡ìÙ¾rdqͽùXgÅ”½äüôlïà Â,µŠpè®ÔÃöQ-F¨+º´­C}F¡Ô™­gIjêV¨h'5!5M€1 &o¥±­Ïø%¡RcV[s#Wî±TÇ!·íÌ…“tW3íf—gXv¿lÞeVpæ `œ„’°Ê(e·:Gܦ›ííÝÆQø ÊfAÇÏsqô/e›Ô‰v,f­×ýçÄ?ŽõÎ@ª’ëæ6Oà,žbäFÑ]‹Ó*NËàTîYuµ¾œå4O,õ±¶~.zsS ú!¼*C÷ù;] ë\Óê¬ï®´,áñú¤7¯3GŽ“âT,a꣼¥—cCQdV/ jýy|j‚v=«Õ@£3vØ12ëI±öï}ã’õôõn—hh…ëiÛr¡eÞœ6„ƒmšHy{Èôû&^Ë,‰ö‘¼d‘5Àé:%fyIv8×’dbÿSoúéÐõ«õ6׺qœ­ò¹®p½g±C:ƪ|Ûɬ±,1¦”,F·l¸‡h—è!â-UqÙ—éªt‚6Ïï8MVKÌ#ÃÚ$¨àù¼ÔÝ俤äxnñÓmô‹ŽVRzgo0žâZ|6ñåÖïcÓE¹cp—}…ß5»3±Ï™Üß‘õ€=LQ%ø{Ác& UÈû»4ÎýQV’ƒá$¾Åȧ ã×Ã<ÕÊ_{Ð uëÁ-ˆû)ÌØ©ÇI§v­µ«lmUê>‘¤»9§µzÈ2h”àúiìË›;Dz_V¾jȗщB°Ú1²v}Ã:´h4åà "ûˆçÝüj€ª,i»%…·¬Ï©›úa­žà½ 6ÇÙ»Ÿ@vôzåûʤ ¦EÇƵu›m…D› lWjØ »ÒµE¼¶¾”1ò¶/ç)ÖJŒð¤*rº&àgÕ\Õª>Ý'v2&Fù¼c–ȃh:œÏ¦õ´’D×[Ècp¬?3ýº­ØVÉHÒK>;7Òuóì‡àþAòÛÆ6äqïOÃWÐãõÆG<ÜaX<ÆÎ¾o0ö±2¤‘«ÞÑ^a¡Ä¥øÄ ‹6êÞ܋>›z?òFð ‚„™ðˆÖŽ÷vËçÈäGi©’³ÞêEDpqUÀÄR¹7®ô=Y7MãàÇ— ‰è¾Ö…¹‡WÁ¡…käØ(Ôø¯²¸‹F˜4ø§4 Š»î½‹]Dõgy }2œ[H‡JãàÇ–8d?$EÑI„]!'tÁýµC¿dM–ç%8Ð6x€OQWD>ÉkíŽ'W×òý>²ø&Zˆ·µ=‹¸cy¡h£KFN¯Ç›±,‹ŠŽC>#TOÓ«M¦‡…Ú+á³ôXß«üü+‘µ Gkׂ7­°#áö¥z“¢éHS«+Z>Ù²¹¯ÉñZ$Y£<º\J% V7QT›ß ¤ÙùêöÄ£]¡FS4ùá=¿¡ç`A‡›08[ê5RÌk‡Í#­…_dc²Ýù±­}þÛ帲]u#¦Îþ}ê ¾gzÛWLÝFO¹ÍFÕb¡Ú¦(”û%„ô,ù© ÅFlŒ–oƒ3Zýä7ƒü$ŽA×ܵ,Ž-‘wQ¥¬yêLEÈdÁÜoû:P(Yð¶²Ãô´³E#FšÚ7DFÆ(n>²°–,p3\ÒUf=Æ0Iž)[R}ÓB÷&„]z’„Ê‘ŸM²q'0#*‘9ÒTIŸóÉ×a—?ë.þÒßì·Úù)Þ·p8óöžÝ·ŠÔ=eÐÐ…;$Ö†66Ù==Úu1;·êbn^{O nd¯„K¡­ÍÄU­æ•´×÷^ê·C©üpˈ‰Û–Sã6¾nIb?2µc /fÆR.Ö e°fæU+¬I%Î¥iÇEeßSÍÚ}a ®ޛŷ½oŸ¦Ì÷òu=mJMÀá°Êƒò}niÕ¹ü~óeW}’-Á©@‚Û@„œ^Uñô Œb é7-n1ò¢ß,ödNL ÐUÞsJ¯|f!ƒ¤ V«m²B¯]¾ýN¿rqO(²ÁØ1@ç*{ðbQ¶1ðœ­\¨c:vYÕòëkªu1"êÁæDdF±@Åu§8°)*•ÌЉ´Už6´IàÌÊœÍ|_7ž‡QáèK­9xpy ÊY¤{wy=Ž|ó–(…W3zz!˜õÀ ^.+ kûŠº ½-:Œå}‘r³­ Ï÷™ >ࣂC}6QÈR̨šñùžbw+ƒ²á‘==aÓðcÅŒÙ;©”¬gá󹬀¶ôÍ$Z-ú´Cö—¿Do¥úy—[R …åÚçÌ8HùlÜ"®_àõwà‡' 0¥BoœÄvkRŠÔ6êEsäßS¾aÜ}ùÎc{kûÆ™°º"þrR¬d£¶÷-RßÔ;6±Ì“Š Ã˜û&è¨ãÒÁ:(ÛêÐËh+tì,tm&ÞDWŠ_A^Çð{ Ê»ðè/Ýab(ðiÄ$¦}BCý$üDGé£×T†×t´³˜í0ùô*ßä,¸p$¨ÔÔ škÓ ¤!Û™Ðòm,8¨|’êÈ2©6ñä Pk —çuM¿4á)Ñ"ÔGa ŸÞ:ûœBoôÞ¯ªºäo·Q3`¾ÎsºG®Å žçÁ©ç:ÿ©¦ßªö ÊXèŽG|€`éFȬð&/ܯßÿ¤.\ŒûÙƒ=Té×Ô¼ÓëéQØ!ƒ7x‹N)ò³¹–Ë‘dv3çÇ/é9¿ñÈ\ðóa¶C°} 4\y¨ó޷ʨ¤)»Œ.Ìc© ¼8—Þ ñ´Žq{T¼Ê1ê0e¾F˜äÜðí$ ËÜMõd†pùËG ËIÓæÇÞª9ˆÜü¢Z-•­æA:¢Y *„˜‰ÔùêÇ~Faz›š“rfÓì~g.[A=î--®jUàÕ…ÛçΑ±39Y"Fƒë|É0» C4"¿-P,ZÜRÇ$I¨ˆ:ã yÄŽ ÒüÖi7­.D±3²mûµ;LÁ5䃯æVJ^„¥¶ˆ°õD¸÷›)#dul‰¾P¼ Ç\;µÛþ!/a'Ì,Y·«ÎLûsÐŽì‹…ÍÜ(@|2Áj9©½òø®“Ç¡Å`œY÷Öè$Lh}ó QˆK0ŽJîSM÷˜ì†Ü$\æìå'»lÄ É/³í­xmâ2‚64é†ÜBÓéì?<ÊßJð¾¤üøŽL³Ž¸Rv%\з}²õ¡þÓO¹= :—V’äÜÔ—¥?WYÍf~¦Þ—P-D°Ö’G•MÔ UŽÒ¢‰4¾¯}uˆdÕà`yÝÔ•x¢q÷öêçGå[µõᨦ…»Œ‡ÖDæMò*fî®@‘†‹<5Î0t}æjLõ–×*Žcq+ c} kø~JÔ—ãˆÊXCRÒö†6»S"‡3¯âž'6W%wÍ›E ˆ•ÐݘàA÷X Ù|×ûq=\|Q¢Ÿ(RQ€… g10­áq©ôZñÏic¦ÿ‘`4‰økñ™÷CêxëWV<”¦òm’ ^lMš0 <4Î(›èœ‘vF‡ïÂZŽùÎNÊC|4sbûäž®Ý*ïHÚöþEÍQÓî}‡Æ×,ñ)6”/{.é–°g6ëd²tìúº½ÒZ¯cHx˜†ns#õ„~}HV› ø´sIúÍ#Úi*ÿºCjèE—ÌT¿Æ{?òýí<ÑO>ô)&Á á~(Ú.Ó¨AîäwÿÆÁðÙäìEvžô‡ ½þv‰èXþãФ«‘V·­-.Z~ uÙ­²¯6ß1Âð©&7Ž/Þ<ë`7¡¦Ê\5bV ÂhãCãG¼jîQó*ñãüO†m¯©¯¹îÎZ$Ûä2¢Ì°óE~"½hÄäGÊ¡Þ8MìmÚB™e 8ã/ÙëT£¬,¿E3VæÆ &Œ¸ê.Sö¥EŸ´eÅ,ÊlàC0-‹ÖÞòb¬Ñ‰K•YMñ¾½‹J À©fš*êUZà†âûKRîh“¸Ò)/’b~yˆhœ¼;=ÃG“Œ&ÇùÀ~¸X½ÿìBN\¾ [êÞPètJÃ}°dPW`³ÞJ¶ä®Á=ù™KðóЄ1Ï b±Gù¶b˜(ɽ‹(<¾±Ã†UoÏ^ÿ‚íÙÞìåŸLÝòo«gf|K ƒ|mµ³h±ÊŸ4~{.JÚúžð5>VÏǯeˆê„ˆñãT¡¾¼¹£µº_^çmÍ1J#ðßStù¨¨0mCJÂ2æáU‘¼òÅâÜëúø¥ÃNáÏgÚam=»n,+l µ­¶ZØÇ9v ›Thüh;æ°#¬aˆôr]×¢“]‚£DSÀ‘(›BTæíB¯¦E)óAÕgÞ¯¬l˜¨Ðô > ÀfMn†àªá“ú}í-$[Î šóèl+“ Þ+åÙp;*xmôÿ\¼/H§õšTÿn1ùÀPAfÚLuÅ“‹“$u³çCp›º&u·Ñ“älïà0…¤cü2>–QRcQ|Æ~ß‚?ÎÛ„ñ÷“?ã*ÚçWWxç˜Þ«mÖù¥ëÚSCuþÑò>Sߌuþï%77(8ÝLj¨ƒùø¬¶Î|-ªo^“SÒ›¦jÅ@ÖE7®­éUQHå™0ºÐ [¾óëŒî.çý˜¯”E”Ë-CçT¾Ä)(ÆF^£Ç§îüú àsz–8Gž¦É÷åBL oH£<­óUíÎúŠš‚Æn¸Ê•užégûáÇ“ VFæ'ýŵ´cgi cûíQsâ—9SðoÛÍÄ>ëµËñ*¹—‹ÿøžIœßM QŠ Û™]œS”™ ~2H‹W˜¤ #üŒìÃX@B4äæx£%°“ì^Ï|¾?ö¤ÛBÇ¥z=~ oGÞ‚+·UIšã¦›‹ŠŸü ÎOB¿ê×\÷ ÎIJN²ˆ ÂŒTç¯mÊÓ¤q‘Ì`ü\¼ÐÚzý¥&RW:‘,¾öiØÙ—Šž•ï@×X2™‘•·Ñ)¥žºÚü0¯-7=ºZÆò‚c¨˜O8÷ýU">ßGð &.6Ôô· ,m¯oEV$Jclm!SŠò©”p¼Ž'¸3Žqc›é=“i6„©§}UŸ‡¹Ðä"¦Û­ssÂÁ9}â!^Ë2-‘t¨0| €ÓcÚ³¿º+¯kú’ßY<V;JüKÅø<ý¬ÄñÆ „ÂUGÅ͉è6Tˇ–yLˆ½‡k~«Ü‹îQVÈ›ÊEö¢¨;ƒO-½Ÿ{ýu^ }†‰7¡Ƨü¼'©øÄó¢üKÆóËFB(Àƒ?ά߫—ª>>§PúP$¶tö<üX;©Ys9KiX­‰LÑ|M«‚ÌÌñT42pÎâá3"Ó€ƒ!üË)?È鼸SsŠ­pV>L³Ÿ™5¯Y Ï?_¨Vi%rÒuóa’¥ìèk˜a3°¡t]m8i7˜˜PÚáæ- Î}$î fM±aö2Gì.ŽY@ø.˜IBNhåV¡ #õ,uu½jÖ)ÛvŽŸ=½rÈž‰T2Ã.Þ°‰6’P}ÍWüê·9\ìEMRfÑ@×î ÑQùË.Oü•ÊzÈi´°MÎéÕ ,6ãC±¢­xo[}Ñä,LnkÛøo-„¯ØÀ&‰³U Äãd5²œ¸#ÒUâî›Å8P-ì¤4 ›÷ XéÇuØm»k®=>¡¼ù jÊËÔÒé`r>£7j²°w h_ušVé°¨K½»Ù ÐûK†'-ægòØd^â”ü2Ž70!ºcÁ<âÖ‰Õ…Xa¥uin×ý`N`'5Þ÷ I@é3ÞŠ˜Ý”„W¢O½ÿ]!Ñiý™¶öö¢‚OS¡=[¼¹±6¸ô/«,ª9ª”S'Ÿ".ĬÊð÷õ‡6ÔW¼Ý‘ZÏ}›JÓÙ“%lLžA̤;qâj«2F9üÍ>+X Ç·ò¦•Ð)/:*‰cì‹Üm%k o¶Ô†‚ÌžÑi³X°cØ×&\µœ=ɳó?ÿsÃòPó̤ ³©¶˜òaé÷)Ÿ$Ñܪ÷½œ&ox¯Ð>#Ó©ç|btG»w+L€Á''©ÈcËŠ}\TÀW¾>ßyeœªw"œCŠ=6o\©øW­ù“wÛŒ§Î6ZU;EAv=šaFzþÃPë¦Èú­©½ñ·È rçrY7fiÇA,ÞUõï~JŠ•¡jëôtUúŒ­¶Ì¯ð… Jù­2‡»Ön(xŧþ4³?ïJ3Q0pûšò½&à9V=ó¿Õ—¸r5EÅ%pècÚCƒvm{ ÆìuglwQdpùØ9ÀùµÝòÌh±Óñe!Sî•Û$ocØT¶µú&Y7³s …®,BT"‡Á~îÇ$o˜¿dºøe‰V"*ž\ö`Z:“åÀÉCæy2YŒ¹IcĚ䋤—Ù›0MSô `]ÜÙfƒx%°pjöchÕi²ºŸÔjYpà©¿ØùädZAî˜9Z(¤Ê ¬ø VµöZNÀ´ìKÌ«öÕíÚÝ% pM põÕLƒ¤éqy.·¨$uñ•ƒj‘„ê±0 ¨’B2É\ŒTXRÊÍÃDá‚ùŒ:1ëiy¸Ø/Ú$tçk<‰Öîž¹«#ÜäW«±‚œQOZû´45û+Nƒæû ÷Ÿ$é5‘ÿY¯ÇYä‘©µi¡±î=aÊ…ƒW¾rHOEÆ Ž·º{£Œ{h?¿6ëÓ™‡ÅD|OPt‰=“LY V×*äð£cº êÃÄ«nìñ[­˜  ÛOƒböOá¸NY mAÒ÷µH6¢³ííZ‹¼ÙU êÑoCþÆSñ1ËJÕF¦· cS°úäÃÀȯéåA)BZ»÷ ¬õõ9òœòaò}²òé–±pëÑ9×Ù½mÃîÒný_ÔôoY =!Tó$¥Äú1´Ús@0"‡È£òAÆ2O.ô§º&óC老ØÃÖÏ=¼Òr ÀRT Êßûò4"°Q]•J¢Nj«;PEç4@¬Ö¢•{ŃP £ÇÈ]£…Ä˜ÕØGF•cÔn—ìéøµ$Koœƒ¶áÚýž·û¥ª££«Ëô´ý\µRN P®ÅÒ€ho¿A1|.²ß B{O¶*j²hû ƒP¾˜o€\È“æÃð²“aR±çá‘< Ÿ‚4]hs©/ßœñkrú¹–2·ƒÝ>å1|0Ó6<VŸíÆxö¢4;1RÄ03!ö⌠xwÇQO0¡_-<±yM¥ºŸ <° <öú s‰Û'€lWIRAÕÉxj|çnWšX’\ÁŸyÁv‡†t²Í½w¯N R!åˆûÚè«ZÞ ãrBÅ]nË•tÈ*`D»øÆI£œUÕg3‘œOÝË[óõ†æÀÚÝâ…$‘‡ÍQü~=ع¬m®‹ÈYÄm‡À„â­®÷£a¤}¢ÜdÚä[–«rt¿è츥$üë¢Õ¢Šùm(§Ô Oœ*z˜ þ‹S-cÙé9ñ$¨2*¹'’¬%²ÆÕ–OTûÀè‚›K½ë·‰\ÌMäY+¾ì¾üƒâÆeI—©é”{}8îLÅQgåTÚ ~°üK€Ø"Ã!×WM¡(””'PÞ3%·È~$ÃN·™ s¬ƒaÉÔšµd`e§ÕPãce3zæZÇ ©-l›—±#òȈoUîœCOwh¾[›Ñ=‡ò>9tÂÍø¦ ‘–üªçŸïÊU)®˜Š+±gý„ï²-Å8­ìü˾ŽX¾ÐX†xÎû?[Ë‚åQž#íg -kÞãmîç×™¿â^‰[†ȤдS¯¨bÝó²¯ãÉ€ruº ¤•7opÜNê~Ê8¸äNöºÖOl?§i!&ß+°Š£ŒKÝl9°´b¤³w)ÌY¸QÕÆ0—IñÉ?‹.òò˵‰"ðP¨ .ð÷ Ó2µõÐ ~³w˜(ùG`üeàñT|ÎÅ›u7ø§?ÿ˜`T|Ü”C/ó §¶f^éò ŠVÃÓæ"\<ù]$žAyy·¼iÒ~2!.$Lž‘„ÏVͨñêiL’üE™t&ñ’î7˲J¨]’â“ÿß™ÏÕæ}…«^žWR5oL˜«†Jõ‰8žk…Ä9g (`˜…›^­Ö1Y?ÆQ%îŸDJÝ–zÌ·;\N< UxÅRÙà]Ó¡ƒ•|±G±˜Z«²¥¢Ù{ÓÐPì')ä²à_RÀn&oU.ËÄG+פ1Ãá ‰ûµaÔ$‡Rp$Ðùª«LÄ#=¤«¨ƒ¥•ÍDQEµô‹!µF¼ÖÀÖ·W½§¯½ÞÜù#fq]=ãÓ7Yî˜(hCtâ nì§VÞ)j ØÄ521û׬à.ÂZ[zµÆû• =yªÍ‘°õŒÓãÇ#½@«Ô¹EœJ­¢Ã[ «GÖ¸¤ÎjN6q„ L~ž”ŠÉÁÿzâm WW'ÂüŠ.Â:w6f]Ä®+¶[GV@¾q¬mfº qŽx@eNq[ꌂwÁ¼"¢ƒîvE„Úšïe˱å,Ä67)LDñ—zØõøòÐ`Þ´ú2ÙÙüS@…"÷F@ÓDK«³’ hÁ‡=n >H=gÏpWUÿJNµEWª§‘ãh&q$üÔ1 ×c¨IÕ6@Åå¯ajzlð컡A®Ò_öH‚–bmR¾˜ª›)ï.#‚­Ï—в!n×@Œ5›ž„8›TT­ŽäÆ,Y.%ßëåF°., YŸú)B‡ —û 5@¿w†çÔZ‹^êÖÑÁîÒcPÊŠ@ßoboe–Ìw9TG/]L¼1 Ì8C«ÒpºŽËÐ@QLqþµWÄ4Ï7sú—PõÂu{Ñ}îH±C{Y¼0æR,0E”=EênQ¤ëøüÅW&‰Åb¿‡x †ÒúÈf£ü"ùAÚÒ‚ Éu±Ë±º6ƒžï‚Ü÷6Ž8*Nú Ýçg™IAé¥×ÌDW ®<ç§…ÖZâxK›ª]ñ×íÈpëV y$gÇ,‡F³¿1êø¼÷¿öÜ:q¾2Ó‘d‘`¾sŠsŸÀ{éJA»AËàJ_yL7âõÂXÊ‘&×;DqABQ(>É6ëãøÂŽÃk ãÔow–5é]^\NÆ€ØUÝ»Œÿ0½Éq‘œ~j“J6Ø…aNl™›¾ÐQ·g[bdâ~Ä ÍåK ˜bP¢q¿òB¶ušÓau° Cø¦ë®Õ§ ´ú—TP {–o•òºD0qá{i–õ1™‡ø4ì†{4ý(ÏuÊ€ðMÜOQn©’Ib4ÕÉzd µ ¥ç‹ñá+·OtýóAZò2¤ü=öh?Vc±r`…±ãÖpÍR~S»,´@¤E+îKçÆ+ pt¥0;SO;ºï–È£¼Ì0°‚µUµ¨/ÅàÆîfógÙ¯ØSÔ…ƒ›áþá;²2ÕP@ö3#ÆÒ(á’¶Ý¿À¥LÞêQ3'Šæfij»ì;ŸCZ—R˜KCÜMÆÅ®ÒZ=.s± º {ÏÑgÔì“}êöÙ’Ù$üµ:píçT”üÂz4ï‹csW¿æÄ—1u“´¬=;o®zç×ãòÀÏMsLÔ=¤$Ú~|F¡çlœÀ17—¢Æ Û>¡>’KÇ)ÃS84 ëââÊõ¯¼ÆÖðÑ/û) F}&*b ¯õ ðWÔÌg±CìÔò°Ö  i· Ÿ-䘃#(6üu@•øm=6DZçÄ™^ð7†´Æ$,dé`MT¼%/x-O[ùפ“â&Z¬ PÞ0ºnœ”P•Úð Ú÷½g£w¾á bñŸœÃ°v:›bëô?«B^}z×â›@ü£F eI´>÷º­5úf9(>‚UP$_x%p9¨ÖY4Ë÷m‡ÂmmŸ±A.¡ŒÌN0`îóUWç?ð¹X3Ή˜‘Ì`>S2àÏÇTý²%kÉFî%f¡U u}2É•±µJ$6®˜âºœ+zÏ´‘™pP^t‚e?O÷€¬é0Œ›ê`È‘Åÿ^ŒE0XF6ÀšøÖ¯dPön&&s1A%ýY(+© ì§0ZŠÏ¶üÂT¾XßlÑ›˜H=wŠ=é3ùM¶ ³Øšt“ŸÌùF@2ìG@*±ÀÛfáôŠ­æ£ÚmwÖMu¸L\õVª«üÂÛ‡&.TTÆHñ“5‘ÝL)„Ó4»(”åÔM#Bç¤,/ðJ—f­E¡°I èAÐÜ×À$(€oo‹|i¹'C‰/Æ“®J~äçoG}¹Rb»Éx}3 :JŠ…êûžqwìNòßtõCë}—µëe4׿Ñe`„w}–؇A`K&—gé0Ad\C[¸~ ló¾/‚D¢@æÂNðõú—57ÀóˆU*…;(]ýä5/ZÏGK†I/)wýÛCùÀ\‡¬øÙùµl6þ¢çØÙ\,U:hcÇ4]nüÁÑurª®´°¾\å½Bs ÿCàñý' þì‹+Ü:ñkCûß­¶hZh‘´—A.Ü5Œí•‰ƒj±s½ é„ÌóYuœ¼®8%¾JB‹ï؇ƒu€KÞÏg[ÛtÚ>¯ïZ¼‹®ýÊoþ¡À<-Ù½gî²óD£th…ŒßÑ«šPçô¾€l\[®?¸§óÔõJ){ÆÃ… ‰Z‚Ú¯?áy:$ù[ÐïýÍY)‹§½ÔŠqŒf\v^E€÷q;0/õòu†?ŸÄŒ¼”0eV¶ÚñmTùΩÄZ(¬lâÏ•KwÑËgèù=“;Ði:Æ‚ºÕÄ'B_‡‘·y®Æ ª™sLvˆñ±ê³ñ÷±HƒÄŽº‘¦L~Ü… m}o@\HZw7}äZà[k²üB„ž¬ööùÀê“Ð ‰Úyå@¢¹½R=Aatƒ’;„wýlQ`µµix|ð³9wö´w†¸Ô“¬Ïó O9Q ›ýáˆûÚè«ZÞ,bŽn|ΞÃRËc–MÉ ¯Ü7X?/c°z‹•JQ$û›ê§â-îN¦ðÆ\W†J:çN| 2‹„_Sª¹CŽ[Vª0nöz¬Û/tw=OÀþ’jÑü >¼›¨)ì-e–êeô³äµ¾ïtÃÎ<Ô^¬c× ./¹î®Mõ³ xªóެs]õ7ÕX¯ÖÏc':èDaD‚ºÄ£L컇?ˆŒ5²–Rçc0v¸ÃÏGð´Üç´û†Ð¹h¬N˜ˆ.«Hôq—šÔ*œFdŽçðòpÂá%É,Ðúù­Ï Zë¦Ì·ÎuÖ¶¾`ƒ”’Ñ‹¢¢%^]=•³*°õÔª)‘íÈðcù;ˆPLU–Í'3s`ëF¼_¬#®(7ÏYéºL+ƒA,ãùË^/ÇÛ `rvÙ;78ÅIa›ÀØ5Õ Jp;tÛaR\?ÁÜÊØõå'ˆ—ÞúÔãPÐÉÓØ0ÕDzŽR­-®ÿÒ'žàÉ_L8ï¦î—'ÿbøM+å¸ °±Mó(1.îðwXMÒðÀk`G“Mt_3–ª~Ø Ó±ãÑú'ÖŒhñ1}0ûÆÙÕóìWŒ”š †mCNLb}À‚À6¾ÃùÚÒ¢kø–‡Õ7µŠÏ3$§u*ÒölŸB¥íà1AöcŽw²\ h•Îø®\à¨Ø`Rlj­ <©Î«§!Æ“Õ$k„›õCÜ ŸW§;/ a³×qÿ½¾+[süâ¸êÅ”c¡™”Û!цüL1zþŸéý¡k››/”áè©Û#-ø²<7SOaÌÂ'‰Ó qE¶úì=¯)´ÿçI ‘º…žåÊéš@KéI1âuÈ…@ŒÜÄjØS ëoÃÛÇ’–Åý¸™¹8RzlØ„+ çã½Ëu”\K.G;ÄÞ,›]¿BCÓ^p°:&ÜÐïU(.y“$Aè¶ëÅê‰#“H¯:–ãæuœ,ó#2¾Mt´Fµ>Åy¨ÍI-”»ä‰½¤} ƒª¤Æ½PÑF¬y™yåqov•‘œjÄÁ¦:õÏàÃNŒ¥¾pN·HvÝ>‹Ê,ÁMÿ,m?¥¦ed$x›'^oÜ.“ë«?éD³Šð/=7ÑÉ[¤°¨m'\ÓÏó,P3Q™°—?=^TÃÒ`Âÿ>M-ZrŒ¨ßr€@¯OŸ²åÄó-«%Œ=ßA´40L™Ò\ÑdÕe懶ûª@n×x“— ·%²›Dë²â*ðŠPÿ êhùÔì, ® íÛœt¤õ3&Ü\¸'P!ÎoZ›X¤Õ2¨aÍùÉÓ%ÓZ”:¯f£HwßWûkj«>ù<ŒKƒ”ü Qs*ôoì4—ÒØKöJü;Å+B1Õ¹£MEý¼%PRÆìÆ4’–+h_î;»l-× „×Ê5×EF~sÈå¶¢ÝfÃpÔRV(M^ „ÉÄÜwÐüNÿs)>ËÓ§CyÝœOê®_øJÎd3VuTölsa¢­†¾ž˜¥%6ÿ¥¢Ô¯‰fcæ¹0¦n-ÿòÅ}Mz\ŸióOoƒué€0`Î LE¯duå9 •{óe–Ü-ôv÷KQI½‡¯àxkÒºÌvž(¦âè»?(I’­ÀX¯Ì”îEM®˜mžÎªîI{„ßI/Œ]àÞ­ôؘºêêɈFØRÄ“‡–ކÖ^Î$Öª;`¦Lød„Þõ@Õûú†¿õÚG>Ž%4ZÉ¡$$¶!Îí‹°Ço¥çËâdnÒ+‚Û­‚¨Ve[Èýóö)÷–‡÷+Úûö­Ðš!Àu™¡wôa@ÖMöÍ ?ð‡“‡ÔÖ²€i…­Ì4K¹vTzà÷Eûô¸f>äó‘–K!ùª„Bßx±¾ò1fQ ¼ä@Z Úõ®°œJÛàQi¥-ƒ›§¸ÌwzOhV†óDqn*”‚ûÇ•–këVKØüVõˆ­BÌ&0¬ÛWÍ/:F¬ éZT‘D€×S8¥z‹ø¾3~¶á$°²ÃL³›©=¿ Xöfž×+’Oúþ@·±åk8€±}¬ fH冊–Qf§˜¹Éµügæ ñ a‘ü±VAÜÌu Vç¨|•÷ÁË3ê¬r1º§¹'G=@»˜>0Eg0Ze2B>t¾TM9¿é. â;é̽ÑNtíÃÁ›(è)œd惑ñ:–ËAŠE ©À˜+;<¬ƒáŠl«À_5+·•xØ)ÛGue—ÿtó5{qšÀãh¡LÉneá¯g—ÚjäÊRá±X°ˆ€‚· ¦·¼_·­’bΦýa¡×7‡5é#¦¤]i€!jMs¯9{mú(õ#Uûñkˬ§-¯äÎÒGø¨ ¶kÓ;¾Ó‚0ZÛ*ˆ½_›C[G*ÖVHEêœØ„sˆԘςlTd¼Ž‡¸hÉ‚äw‘l¸~¬fŸ½,®ý‘pAGœ˜Ï)‡¤Z"í™°Hëv«7àiÕm§W©¤á~«7ÿêví^X?IÇì‡.€Ýº|õЏA{¼ÏŠûa$€r ’w<¯©v¥?•Msíðº´=“mض²ÊÌéúÍ 5僦ä­ü¸{Èš—k2;š58ãHÈ×¥‘ƒ.›­£Ow²üŒ÷ƒ>Ï>$þ¬|{áâ6©LœDÎÇ¡}M3¾êá§lµÔðÝ“ã2Ô“ÆÖìàü˽'TAÖù¤$C5Z6š I\Ûtå®yÙߦqUCÓünOfåUt(Æ|I©õúƒªÜö´ðïšxñøñ¬Äxе¶oÖ"ůÄÇ•W™ÇAªöšSBI5Àîê팴Q=Œù­;RÏ”‰Y¯&–Ì@ñˆާzîßgÍ;«KñÛ.W}P¡õ”IBÊ\·R@)¢Œô‰òoY¸Püx¦G(w@ï'U©q–ä¥0cÄ+ÃWPa²Ì™MAï¡1ü²f©­ÛØTò¹˜Fì:û¾ª˜³&q°ˆVØO»{Ï[‚ÒE÷ÝdYËC{Aƒ¬¥U´²t¦>h؇9%f & Lx„Ns[rï2-dlLõêIʪ?ö«ÂmíÄñ¸[4¦ëÑ\m|zš"öð;]íñgÇ8ÇX ,kîDÐ52­'pˆ„æóëÐ@©Õžýë¿ Ô fÜ0HÏHƒ¥œ6")ê°x—~b¹¯Ùã)´‚,ÏÁܼ}åï+{ªq&‰FåÑôÎt!Û€èÃÌʾÈßÖ9.•u`|‰\Ùúxé+cMbóû]§[¦YX÷ ¨ÀjX9ض=sQ¾H $³á¾‡€Ô†Ó®.Q¥ 96ã–­"ÐaÞ_Q@»=$Yž’89y9«Ãƒ;‹y\+ŒùÞ©óÛq7~£MÿJpbé©à¨ª´î<éJFHŽ·"¬²+2Ñc:›kÿæVÇ[Ç©Þðà,ÜVÚê•—é6bq}V$—.ÕèÉÍ÷õK0y()©m,ɱ4…Ç¢õ8>À3ôuoâ ŽÀ±°d?†DÁØq¯ât—Çž9R‹k/tKœŸ˜‹çÐaõ¥õlrëû”¥ÿ锢ÅлÖ÷Ÿ+¿É¸Ö´ªôáÓúmãìIàòN©I n?àµoÈ´ÖꉚœÞ$i:m~L!MGèÀÕ³±3ô°÷{Ã1GD†øä¦ž—TЀ+ûï¨VU •ü,©õÖÓÑ8¨’ÆmT7ÒMŸ¯_Tñiåç‹ñòÂâ²âµÖàò'B .i ;×dÞšphS‚ ó2ŸÂlg7ËvMe§nDˆ'“ŠÞß’öˆöWâ¨åØh!—¶[füIçÍ\já·Žð.е ï[úÁò¸)/»ahÌ‚‡¢S¬ïjÈ#7/AÌvf7zÛýg|F×Ì«øpÜ]Åfà¥uÓŠ*†˜R释•Óºlçú&pH e#º¢«­jœ-Câ½!òîr"Ò¼9NôÊŸæ“¥§|ì.¦Eíº;ñ¬Ã`²SÉp÷»†(¨V<ÞàˆÛº$ŸòµPO€4iéõ«Âög&çÐNØæ4ÎÆÿ_¶žÌ¬ ˜meõìÖºòê*¹7mÇ$þ®3Ww%µF/<”ª~”Ðü °hOˆM~Æí‹ý ¹[Õƒ ´¬¿á9« (Š1‹Y©£çš]Šíc,~R!n£1ôH›+ \xpc“p•uÊIY‚Ø‚9dúÄÿ†5^ ?S³?5Ô¥^¬§É˜ j¥½IØpCÄhk"M5È­ÑÔ‹´^çRždÛ5´¢|}þ™Nß´hãsËmLݼs÷Ë0méÆEã,uŸ œó›¸Ýv+j”zÂbB³Õ—rÚO”.±œˆ<Àtž–ˉ¡æê̳U”ýŽ'/·R›Ÿû OÄxžá‚Ñ«0:ˆnªÊÀ‰™±“g€¥b/TCå²=`?!\“UÞîB¥Ý)Å˯¡ýR¹øáü]í}é4¤FaT“9µ•þðcºDÌ çBŽ£'’Fõ¹ÿ¯±'¹´k^3$WF­=j©JuåjɃ¦ÓÞDÕ³ta§nö¨bEoüÑR¨ Àqþ²ðd] ϬžÚÔ.ßN2¥}k©&ô~4§Ý'”[J²ðêS*¨†ì˜–NÀÌKà•­Ï R);{de‘šƒ=RòNòÙ¾éc÷£3 Î)ÕDqRmE’Ë °ÞØ4®Ü® bœ[äá37º‡éÖMtL¥ÎpžR{»|5£DMd;Íí/lôÎz½uG{´öDYˆht<ˆrÝ#ë•-]­°¦å.¯¨]㕾%²D¬úË$ßRÿ%Uk#нÞQ„0¨.FîV‡ É`à IÏ××Qiv%³'È-K:Э\¹ î*/ó`‰gXÄ_ç}gïû%]ûB Ã5Ñÿòý¡Þ¾Ã–(õ6Ù«ªbÐDù0p7ƒ'=Ú™¾‚ ÿ Œà§¨Go¤"BŠj!8œÏÜ_ÃN´ê]œ]©ª@3âÏfi´8Jôq0û˜8 Šƒf€g¸œ%ÌžsÆ´Ã2á× ¥šƒë~DÐ}ýìB‹†´±Õw-¼g<åøˆXän­:g[µºÏaàÑMZÀ§ÔºŸÕÃã}h#¥ó›±Kã…—åÉ<¸6‚^Ñ£µ¸AÊóa0"4¢ÃVÜq¼ö؃*t®`€hc¼2qd s¡ ͯe+Pql 潺 ªŠm¯ª£'Æœ)2%õ A…–èMþ’T(‡¼…ö€…ðÁþžó>©hÛúòn:ÄÃ~YFìP YAø3çeܼÐmJ ²Vò&°È©Å[n°‡É6÷#²£Ò¢béÆù]EJ¹(¿WµxŒÒÀûªòt¿Z‹©ÊìµÅ#hݾÄ/œ>o¡jÙmL´|#Y0›£´X½ýO´ßkI]Îj x 2‹ú™_†›^Ù+õQm؆L_6&Ìh$­Ùâ»õ(‰•Ûœˆ’ŽBÂTHVÄŸê &ãHP„:oV(P‘ƒûOxÃàÿßaé˜M#ÛÅgtBU•@§˜è ãñ¼Á’En›Sròîþ27_C«5%lw]ÀcÜ}ÔÌYÎΞ;®½GLǪ3úë) ¤Mx¥;u–JCó Àã0ÓãeùG¦”4Ætê ô2 `?)(b¬$¤ˆªú°9,G „ɽ‚£¥£· =è_0•¦«*“€¯R{q´$Òž‘; 4º¡?e¨ƒÎ×Dég¸ï&Z«Op—¨éLXh¯5ÁAî¼&ÒGT¾Âÿs Ú+êÓÞB’é:5žpìYNlÑüy^è/ìê·Òem–EóoÉü|‹5°¿BOüÔfeÊÐ%ö؃¯)t0¸t]ƒrúéf@A)ȽÕó½‚v•Ä‘Çæ×±Xg«L]ôˆË–(ÆÈÁ)37;Õokl_u#‹'«»sVZhkúÓY;õ;§È'.Y}º oÑeBE–‰î¿Gdš>sgB?݈ýüç„& ÓðÙ”/f›„åAŒ€XY‰äµA^íØ–«¸®a½Õæ Ï?S`ç)D0Íëß´ 8-(ɃG‚¶sþœ›z®Ü8ã¶ÝÀA@ dà¬NæŠ|ÙjQ¡·Æ\¢‰Qã‹X·tΘ{¾Â³ÆòV÷ècSÌFدÚ|ì-ºŠ08°¼ Ç3Çm _‹ºôMl9{¨f6MøêØâàçSu%ŠdQ…‘ ,Yüª|ƒ£hšy~¹"þáv=IjqnÀxd-ÿâX9€WB ð›@ræ]ï)Ì… VÈ+‹ެ6= ‰Ëß¡´óÓVî徤kBn=ˆþ½Ž#YÂþÜÇ£úÃë§P¿`qÚ÷2x„ÓÇFzšñ®ö`]ÞN+/:üdäßâF'³V÷Á~ ãÒlVëÚÚ›ø±ç”Y¹X“Þ89t§‹ï‰QÛT¦™dRV“cÅzÞ†Àâʉ»Xõ}pø®ÙÉ^2oˆS>i Yí0è“CoaZ»q0cKÚùEhâáve²š%ó_úqK`¥m.XmJM¼ÿD +G±yÍEnð™£JV¯ž\ûÉÅ•@r†²á„ùòY%É'Jn¼¦¿8îê–âvZñéõèM˜ˆøî5œCÍÚ#Á0¢Ñ§S¢Ñâ^txÓö¿æ'õ=±-‰ÐÚ1çŸÍãü„Ímk^¯ž#ù ÆÉ´5b?Óuù&ÈÐb2KŒvR™öðˆ—ï’ñ)ͽÃm7UÓë])Sá‚[íVZzsÎ"!LÇÖ ÎÌÛfáÆ®š· wöÚ¼À‘õYß ¨w&´J°cüÖ –C4©~*fͧÁE‰úÞÅÜü˜ÏkÙ-w+ÄYd$~>9Їµ/¶pwª—íÚOa=Ô=>·Öö†…(÷Lz"¶3ä5Í7éàïÒŠš(Q‹ƒ”3øsŽ ðÇé\Lˆ°™ƒOæßLÙ©×TsA¦ØÏ!ô›ŸŽz`&D³–§' ˜Ÿ[©ãâ%¾Y-Ø®ÊyÃË &E†T8|w«ƒÐŠ< A²”SŠÅ|1nð ŠU¶Ë…ÜŠÜ^-oßA™k=­»`|ót4^BÐÜŠåh²ÚÆœóG±Œ\‘Í4컿=±µæËÁzÉòw3}‘ˆ]ý£.ç§6z:8.ЉJšÕPÞ5˜ÿò¾ûÀ[·©¸ÜJ¥ªþÌ¿qoQŒÆáçeˆÌw5œ¢(YbyùPUû&±7~ÕuÓÁúeÜ€Wàq¥m+£½w™‹C“Á‚WÅ&ÿ/–%Ì×ß £Õ0³W çWwÞ¢P¥¤• wVF܉&§]dT‹žœ¬3P*{àK£AÕóœÊø‰ªMk ½¹?³×ÌÊS`séÜ]Eçr£÷´÷ÄèÃ÷çÞQw ,ˆÄsëO/¤ öOMºke%ò®®§Š ¶[Ä#zî8Í$¶é”9ïKø¡¢Q@»§áíú7w±:k&Kƒ;ËÑNk?qú‚,Ðá±tµi«ÛlmÊÿ ŒŽ@–# Q:ÉšþÚh\®þ«@H§§Þyï¥ùÛãXz+„4ºÿ+ŸÅtý§z²†ûâçA;JΡ FÍNľÞ|hÍ QB©œƒha¥¶ þ`çä¹–l«â±qˆ¸üCý̸‚Ü'’™Jáx¶Ÿ#üE2¿õiæŠS¸_¸ÜUÙÇݤb[²ŒÍjt'?RÌ–-÷ÔbÅ}ø8¨®pŸcºãU2`|ݺ|¬Föxœå ØDãÊ0 ¸ÝÞE¡é•kJz™Ó{\÷¡ û¤ÏÝì´QíóÞe¨ü€iÔÑöXêmiiØfÄX!Ÿ¶·š¶˜/u¬ó1 øOÁÇðõBûa÷…‡·e´Ìö?î9|l9.3å ‚8\yw9V¬ËYp¨u†8þ€i@@ê ›-Zû; Ù³:QîÏ=eðÚ, cº**éGaÿµÑÓo.!òŸ1Ò…$CøÆ1eEÉÔöDfÍ|³ÐÜ#µÂ‚ÿ^/‘¶;t†ƒ€ŒóÐt4ßUzÕ0Ýþ¬óÎÞ4ÇÄ«£'ŽR—ÇáÛ˨úB‘Ô?ðã[ ¢¬—ñ “«Ÿ%»iVçNÎ@ ટà äG®EÿB“YÄa|É´o¿/rÉÛÉG”½•„â?u|IB^ve¡©|Ë'ŠñnIiȤç8ç [s%7ôwé¸ 8`¶ÿÓZc ¶¼„䣌vÉîþ._ÿ0ñ­¹Xb–ÔBþ;5&x _p÷>3£Çi÷C4ºe`í3ÜJç@`·6Ä›Ø:ƒ|Í~÷D쉥‚€&˜-žVƒJ6c F)9æUzZ£ GÄê°7X›Áq Ÿ*Ã¥ °©R%}#˜c=™³Ô¤ÊÐdä>P­«¡Š€0`ÂñyeÅê= š|–'J¡‘_©é“Xv6&¬~ß®„°&Ì¿@)o§c–ŒWõÀâ·Y©3¤j’"3à­ÂHßêÓ[‹n£0¹{ûJj¦Ü'ßP‚¯ÁÁzmírö Må*:±74åZ‡YFöÓg½ñ¹§X±Á´Ð RèÄ:{Œ ÷%ø/ÔÜŽù»n‡×h/yÚ¬jÉY@¿ï^3H‡ÆÏí2CÅ¿’ªö×o`Ž0Ïpþžž5%_šÜajÇÔ‰+‘ˆÆ€‰)4DHí-ŒV Sç¼¢}pÜ8¸½ëÍq ÔÁ¶æ9Ÿ¬[å’ÿ›^I`ýï_–W…T ôt> qjh',²1(0çW$˜T»?'-Ø×úf˜_œ8 Oᦚ À>*è³Ç¢Ã—¿‘Ýn+ 7˜ÃSWøn’êÍ»¡«§Ö­1®g;×Ñ Êó2LŦh™í;ȇFò™^Òõ±´œsÃFÆ27úWJ ÙÄ'‰t%¸>6X›¸‘|‡ü)¥é~?«M¥ì ÃàÍch;XÚ\A*rÁ»‚€©#jºÉ仓µ^0å7W±âV|šÈýá–«Š¨n¢{Rù¯/…[¿"({Ø AÜ뉳õÚèñt  4_SüÈǺ|}hZÛ¯Û 0Î|°ãº+œ¤òÏL[µy49åq7.c¶!´Yó‚*§BÛ¦ŒÚΓÚS fÀ4SDòÜ®iàçt¥à›)Fh˜ían®4XGˆˆÞ®á+l+(¨§É­fXн¢ ß°´Ø1¬aÍ!j`Þ)Lt÷ãD‡H{´bˆ†IÚeõHÆíæqÿ)gþP3ë^66ꉘ8Lÿþ æ®]ôäšÌUtÇ2#ÊYÚ»÷47Õ^#S¯Ÿ{ã7qw_gÿ\SÅÔ\@æR÷ ËÝÀTË8g¯ §°úËg“:@MVÅ5 'ˆ&ÜiVá £J~+šÿ+F«>dû8wn,EkY9Ž[ïÇÎü5ªaä—ÌêÞb6 éMscjl¤øñD˦iäpsaàš»£q¥ûÝ1𾫇¥Ã¯˜‰ªpµ>$ít‘®lŸÙÏ3Óý‘ý?q@r,¢±=£êüI¢PkX³²˜J3ÊÝýÑ b‹êTǘªN „ûF9IHúל{åæˆñ‚¹ùs ¦ÈÏ6/‘_iÌtíKCn]ã’M}±kG(¼9èùà„e¿°®Ü×@MH­éêçOlŸ­åSVß‹/ah¨dêF5Áž¶}os#¼©ƒÿè´Áù"oŽÚ rœ×"Å9Wù;(‘Q Ë×/Gerø¶f¯ö æSôÈ¿ûZvDz¥gl‚|j¸®cB>?Èðçß_‚8î6§¸Ûû¸ýÕ‡ÕÉ;iÆä¸mOä(†ðº¨ 5 È5'FäÜú·zЍ9å¶SQ':iæùµÛ9 ^:bÂÄôƒ³Ø»,L|râì¶à$¢uÛØ/ZšÎÞÿKœQu½ãÜ2Sn^2XgeKl½mIò§¡ôT œÝUß7+M&ïF¾¨X«9$o8Bt1ÕþùáCdó nÙõŸ % œmEý+li7^ž ‰¤GŠ^ÄXá2üC>Š“ÓI}®ž ª|¨•¸¯g‘<ðÑ3Ûˆ=8Šé£_õx ¶Õ\Ù¹vF‰Á…éEZµ¹i}º‹‘2Å<êOÎ@ü+ÔÙÞ1¦¥öÇöv=À=èÑYÊp‹ŒöÑë²+¦–lõ#Wœõþ2JÁÇÁ*P¨îq¥[:`x¬à.‡zø†ÊùûQòãô«–UEMILW¯üNcÀÑÿæÄ¼ïgjB„­¸ŽVŸ}6&šj ¦xÊ¥Á±¤½Ó€ ú>6$£iƒ¾ˆB5©–ödN¯Jòž_òä¾$‹{éû¶K-íwÕÏøØZ3*3ï;ÉN0½xªÎ+@ÉàNˆÙïâ~”2Ôa¶OÕô^´ –?Ú Ëtkjý0LpÄÝä@ÐLmäøvº YWUÛ]½ñ¯»—D§…òñ4÷r—Ökí/µ<εj{ztß8»¬ µV¼žùôþBú‰e öE?ѶôrBòùü!‹¤i UÍ#úÇâ¸nî©„àߊ¾e¤3y´LŠÔè^ŠX$‹ƒÿ‘¿¸œdÊâª.ë•g{^7rhóõãÇ&k›mÓÆèð4Q¿HfÇg÷™ás€Íå;Kb°Ð§v:u@eâÎ.æÚvÿP8ÆPó¼MÙŒýŒ õ&¬§Bô·›SpÕ.¾X° ºµ+é!Á1¦q­…»Íæ—Ë}—†ë,ÛD%è'Ã)˜†ºcTÅ&Ø›kF)Ï}¼8®õÓëXé*{¼÷–w‹³¬üeN<Ö› ^¸²L2yÔlÌ >묇þË«""3æ.v.œ€Á pQ~$Ua0(]áØú ¹åü‰ªQ—Îå ˜ëw‹c¿z—¿$?ÈÖ•,x/u;ç{Wd†Ô‘4MMÅ/–Uìm†Å‘„‹«P|c§”*ˆÅ0Ž|š¢ëA¿Þ»ñ¸©¹ë¸`†âàû‰z£ë•Ga[ß$|yn½NŽA‰MŸbäÈUDþù{í!+)ÿyZ—š¿E<ƒÀ £›éZþüî#µ…qy_X‘,s–­Ž7>]¬v¯zTÍ-‚í^JÑQ-Ç]qÜÒ$Cç qâzR2š¡ŽäWÞÒj…sí ¼öA}™2iåbAä^¦ç,c%-»·­Ê½!’Ókl+J]ŽnØò›jɸ Gz×|àQº¾ŽDÕ³Ó8žNКs'v>PBlì¥BM$:¨¼~{U)CAH²”ÂDЩ&¶x!üjHïèA0½M»Òψµï” ï<ÝJî:Á1”{– qisæ;¹(—~êԀ鿰o{Mâ‚ì÷7xüoí`/üæˆúm%âtÕQ›ðqeý± ³-7HÃ<û`˜Ñ'H‡µT¥–ú›<>c§Ä&w’ ¿>ú+0DÙ²øzž¡ëAˆ¤)j~Ê«÷ðEN>~¹†P»Ò°"e´9û ÇKÙ0ÚpìlDSQ½™vfÚ V¡†…’7ù¼ÎONYKȨn"îZXdzIÝÏu;=¸AÝ(ˆbZN(ÎTωgÉM8P€ÂlÉ  ÉÆºúì×N%Iwœ¶ûˆëh¦÷ ö¢ÎÏü\ÏHÊ)…¿±Î>¢Ï\;a(i6I«à ƒ}ô6°µNá2¨ðЫ´Á_æíEW[sª?dfµ!G Í\s­½¤n†ÖìVgÒ®ë_y8ô áT"äu±€Q#u®cì{°ˆ0CQ9( #˲fX¦°R‹¾ 5:’Nv+ØÝ:ÙØºÚ£ß<.Õª!czëÐI9 ôEŸ­U?»;€^±ï3/±O gùÏ÷ƒ 3ƒÞL绌ºb‘€¯ób(Ó™{ü—àQò9‘¶õ¬ Zù)~óÎó‰Mái6SÃ;%ƒì_®Ð¿”Q p•”ÓNUõ) J6c>©5Öz50æ÷_ÌþÃa¨)×ÉÚ#&Èï$tï ¸É­a?³!Üǹï‡íŠò×iÀìiP¦?²'>N¹“¨ÏÓx|†ªõLèmÔJše#·ï‹ß÷9Bßõ*à7ÕÙúÕâÖsô4i!¶BêÝ”Qdø¸l$×¥ïˆE ™ª-lcF^êQ³Qöh°ùÓÚd‰ÃLž“‚Õ’•hró£ ¬Û{Jɾ2™5Dbà`b•׌èÄź(LjîýÏø¡LD[¦ßÉTœªÔÏVÿ´ÿÔgÆ §ô7ìΠýG×E‰.ÌzÂýT"ËFMB—™ÃßRâlÏc° ×:õ7q/UôÈ©ëX7ÆÍ–î"Žn3&¨©HKŸ¾ô-ýX…EŸâP»<ÿ{hžæ^úùœµmðÞ'…í¤Ç¹çªl­yœ„QÇ,ƒ‡î[¹3…«åOÓsª¦Tß{VFB{°SÚ†¸§xôú°R’‹nÙö=ÿÀû­´º(KùãÐôS7îNR€DèÒÙ°;ð(Éêþ-5,ñ±ËF¤UÃ&N•þçŒ5ºË*AÕôx¥UÆç·ä USdãi zv2·L¬ÅM—f-«.uIwz}pñÒ ]±žwÿi®îÜÁ x=2xÓº+¹<ÿ2™¤GQSݬnÌÕ;s•ï½#^Nc[Ù%´n^žÝN8ñ %%¸OPDPR4 ´@÷«o¼„Aw›rK79˼SNŠÒêÓVúãñE]Moš §:yüªDŸz¬Ò^%¾šš·‰Ò±0`\±œÒóÙq0³‹kI=õs%¸…F~¯V¡°UBÍ•g°àN)èéážÓêìo²pú?G{eK`ý ZÎm‚"#=/ÖÐí»Ø._"¡„w5—ù™Óa›A½íÆ.‡ûïÎÏ1<)Mk'ƒ|`ý„SÉ1Îû €E™Fl 3 4Pósï$¨.Üí{ ÖXûŒt"ÀxÿàŒ¬¥|yWY²ø¡ÐBú;Ú”Nde™s@7¹¥@¢ «Ã°ö£FåÕ0ZÇpf›óOØ‚8ï_¨ @<Ú” áÊRè n8~ï<}IAÖ4ó»ë;«ïÔ(Óý±Puá¦bo0=N=ÕX¹0œö™­Ûbœ‰N°~ݰvûÄ.ËÀ{Œ$e; 1û®VÖb´ŽÌ=á\øÐs€ªú0Û)ÎÓÕì/Œ!÷J3~vÀ—¯HF8iЧ ôj_éƒY#n}ëò1‘kp¯ÄN !]L ~¤:ÊcøjdXЪ6EÄãødó:Ì Q‡Úc-ËêÏ)ll…¤+£XïÙø±˜“µ•%±Úìx qÊoÒ|¢,#s3‚æÔf‰š¶sÈ}|cÃO«Á›KÒ\¯‘ ¢¢•}ɉÊ+û'cl€ò VÏÜ,¸hͦ4*¬S‹¡w²(³sm`P)†ŠéðÓìy endstream endobj 87 0 obj 37859 endobj 88 0 obj << /Type /FontDescriptor /FontName /LuxiMono-Bold /Flags 5 /FontBBox [ 0 -211 713 1012 ] /ItalicAngle 0 /Ascent 1012 /Descent -211 /CapHeight 1012 /StemV 80 /FontFile 86 0 R >> endobj 89 0 obj << /Length 1126 /Filter /FlateDecode >> stream xœe×Ën*G…á9ïÐÓÁ‘iêÖ-!Ku•<ÈEqòÚR ãß>°~|ùL@‹®*öWµi5wù¡<ìwçîîÓaó8»çÝ~{šÞï§ÍÔ=M/»ý|Ö/»ínsþŒzÛ¼®óÙÝeþãÇÛyz}Ø?ºÕj>뺻?/ÞΧî[Üž¦_ôáï§ítÚí_ºoçG>z|?ÿ^§ý¹[Ìg÷÷Ývz¾®ùëúøÛúuêî4ýûÃö2bwþø~™ø¿!}§nÉ=µmÛéí¸ÞL§õþešÏV‹Å}·jí~>›öÛ¯WûÅ‚iOϛ֧Ëðåuøbqy»†žÐ+, KC0 –`Á)x‚W„ 0…‘0*DBTH„¤ Y¡ŠB%T…F¸šW‘Çà1ò8®ÏÐzìÿñ„¾y?.çúw ‡òëãøn?ýøq<5ïöò61Àendstream endobj 90 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono-Bold /ToUnicode 89 0 R /FirstChar 0 /LastChar 255 /Widths [ 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 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 653 600 653 600 600 653 600 653 600 600 600 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 88 0 R >> endobj 91 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj 92 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 93 0 obj << /Length 94 0 R /Filter /FlateDecode /Length1 5273 /Length2 35290 /Length3 0 >> stream xœ´¸eX•ÝÖJww—t·”tw‡H³€Ew—Ò!ÝHJ·Hw©„tH·t HœµÜûÛ ï{þóC/î1ç3Æ=rιh(U5XÄÌLÒö®,¬ìŠnž@%{ VN$ g€‰+ÐÁ^ÒÄ @Z Pvp§àà¤àdgç@¢¡ppôrZZ¹>ù‹ÞŒá÷2…©…8Ð`ëàAAK!ë`kp¡³7cýçâêìfVìBaö¯j©ë01±þaáÿK½ Ìf®¦K =Ø9{ ×ìÿ‘›»9þßš;ÀÙ¤‚ P<Ììm½(ÌHlÊ®@3ýÿ/$ÿ6öÄÈÿÏaÿÛ²´›­­²‰ÈQpyPü®u€¥›­‰ó?¶šØm½þÚü÷&À ÿ¿ès5±š‰Ù[Ú(ØYÙÿ#ºH=æª@W3+ €ÿˆµìÍζ@{€ªƒ ì ß_KšV@3{€‹ ×ï%€½ùß´Að›4Ûÿà·\Õhïªéå"ò_êJæÿà¯ÄÅ<)|Ø)X898(xÙÙ)øù¹üþEûo%XÉÄÕèI¡rz°›ÿý÷ˆ þR#eoæ`´·¤àäá¥0qv6ñ¢@béääá¡ðá ‚üõ¤x‚âÃÆjïà ú†ÂÑÍÕÂÂÁ™ \Ѽ<lb`Ù/›ø#zNÁ&ñˆø(Ø$?›ÔÿÐsv 6éGÄAÁ&óˆ8)Ød›Ü#â¦`“D . ÄEñ¸(="åGâ¢ò?Äâ¢úˆ@\Ôˆ‹ú#qÑxD .šÄEë¸h?"Gâ¢ûˆ@\ôþ‡øA\^þqðƒ¶Š=Fƒ´¬òˆ99@fT\lM\¬ž|’‰™Î Ë1ˆ»˜‰™›+à‰ ä˜¥³‰ûSÈ+13 ³™›…-¨À‰wÚš?Ý rLÌ\N"?fs ­­É#Qv#R®VO :Rÿ`É *\6©?Y‚Æ Hö'KNvs©aÉÉb$÷/zAäåþÖ òTîo½ àÉý«^[ÊzÏÉR òO[ fSùË8qÙl*ÿf‹•¿"Í  †™‰3h8ýo'H©Ö¿ØmÕúÛ>(,ZÛ¹¤õoö9Aèý¥€DVÓÊÁùÑ<¸rÿa\‰°é#}aö¨œXó'dö‰Çà[<  <)3pòž=8¿À'”Fë'ÄÉæ ‘²}A¬ì!8UO¼gÓá ±r|A¬œž@+ç'ÄêI ‚»Õõ ±r{A¬ÜŸ@+GÎõ“f§Èë ±ò~Lh³É“P‚F=›Ã“drƒL9ü9689Áñ8ۙ؛›Ú>©&NÐ^“'È5“¿kä½É_EÆ 2mò¯E®“¿Šä³Éã„“ ä¨Ù?Æ È:àŸ¤¸@>þ"Å à/R\ ¢€#Å"ü½ ®À¿õ‚þ­+à¿éåyaÿ—³Üà¤üÓ7ȇ¿lqƒ|pøË7ȇµŠÃ_Óƒ´Ùå¯éÁRêöOû< ÚqûÛ>(,nÙç¹äöoöy@xý­¤ðtüƒ ¹þ1NÀ6¯ð›v°T¦çêñØ`®V΀';ÀsÃÁí± Á„,€O¸ÿŽð‘2ز ÀðHÜ0ÿ¹_þO*{à"àò8? ¼ ;.®¿¯‹ .sPñ> ¼ †fû'£\å¶ ÒÒÓà#Óíà=aɾs€‚ãâæp:<±¾î€¢ô/ üÿ ×?–Àåø[ô8‘y@ZÌlŸ Çï³µ:þ‘#nð>;»Ç .;à__ƒKÓÉÍÁ` °xâ=8”¿Å ÉãüGÔ9¸Ÿ?.ýù¸¯ÿoÅÔÄå11¿)zšÙš<™é¼ÿ'3wðx$Θ“Àå÷ÿñÃñ(ýc;øgéE;׿˜‚ï°ÿ[û“*¸¾ÀK. ÂøÛAðÄùßÚŸ]ÿsFƒÃgååhõ´À×c ׿Åà6½Pþ¸‚[`÷‡ Ü—Ž&Îû?-süWú'Wp\LMÌlú¾YþWþçàqhb**Сò$`Çf<’ÍM,A'ÐÏÿÉ@9~dJ¼ ¸Ï€.g:8Œ¿«áwŸ÷c•<¦|N=¡ 2cïfg ~£[> -¸uAGÇ“ÙÎŽ¶nO/[ íÜl]޶ç1'8wæ@wà“ü»ÜLž\<ÀƒÉÕÙÄ`gâüäz~s€Â>IŸ¤ÌÚÌÍ”³''?ø¨tüFà·ôﵿjŽó¿ û« ÁGúoñß• 2áàlnêç?& ø‘Z°3q1s³ýcüøÇ ôÅ“`qðýg˜[™Ø>¹ØŸC !(4ήO³~ ýUÿ]yÔ>ŽAUõ×ýt¨¸ýQnà7Ž)¨8ÿz%§ÿ|$Ÿ‚]à×Ô_/$ðHÿ·øàùëÜ?ÿ¾¼p€_¿œ<Æ |wXÁ¥ xäžs.Ž ¬bU­Ù¿YË&`0Ù”rS fÕ–E 7ëµ<¯…Žd_i0RT¶<П>ļ¹#‡ W¿„Àã‘v«$L@'¬¯gß°ÓLHVÚçI“b!O§ŸxdNGÛËvžÞc™ˆŒ½÷õ•hË”bý,Šjû‰dœ/¢… 42RAdYùññ¨9§ÒùDÝ_béòcååï‘àÄíõÍSœN’$­Ã#a`)b%î;0¶•zÑÞ¿!Œ1Þméi`w!:Š´eÄzMsG·dFo|¦[U4ÒÕEyrÈ´õëyß» vbå_©fíKo6ôZíY*¡ä#pâìÈ”Bþ´±"T<×ÃÎ$\ÑyÓ~nŠÐDfm»S驸í,ý³Õ*¯ þR¼\ Þ5†‡eGËH¾ÎϪ¼€òÍØî- U¬ÏG–±×ß*g»õ±í |íšVIžY7}îö殌©MÅÆ-M¬ òxûJµMb±I€åÔDÊF!QCtÄ Ùpé}Ÿ!µRìØx<Ïíµ-a‡…M”áçœÙ¡-òoWDòÜ@¨ML6ÄуúÙˆB­ÕW°'ÙÌÅ-T‰sðéñofSÐfp…²hÙL¡PÏ%¯ì7_7³aêdZ‘Ò4ÝÄÓèÂ"á:Ç`rÇlî©<‡—ë÷ž. Eã èø%uTÌ3’¾Âëoý,#äÎx—•Ù/Â$}¹þ3—÷Þ‡4Fh^³ê¥«y·æQ'LD1ŠÎ4äÏÁGjÖÊ/WU*ÎÖ7”+¤M¸ŸÁeQw¬¬E/ØqŽAàóUj(t·S#7tTà„eb³ ”LãíZHµÓåõQbrŒx+8ã6|'¹¦‡Çnnçöcr|ée{3 õ4S­6²høRO…| ˜à¹IYûÊÏ#Ú@ž^~a¡“DJ:Ùáì°zQ¶2ц—‘ðÊgʦóožé û,¡9 SÖéû·Ššçß“Z”¨'«pÜ!ÞÜ@}[+PcÌ¡窅þå$@âw`†Š^YgÎ0 U¢?{Ir¤,"ÕP5d!ݺFäjVq5ë8Êë;(rÜd9ÂÑw’•Í» ç]—hý~q×ûí¨SGM LGî¼ÿMƒ.χO•ß,N% ¡Ë¾tP@¢¦ól†WâŠÕ<€óµ¾3!D~€þø€ Î O;šÉä ³û[òëTÉgH‚/fô~¹¿’‡ˆ4(,Kë ú ƒëãž H÷’÷¾Ây‡Ù¹Ïú:﮼«»“ŽðíN¯ß÷Yåˆü„pwQñ£Aêlôo°¡-…ëSüŠBl'“oŠÜp ¬•Õ‰ ‰½Þ2­>Hø§Š8°FrÙÿp0œ¶±w´$2;ok¶Ý й+_ç 8{Yº¤È­þ†ºð•L÷ÈKåu–U’ü_7Óô%¸÷RLÈ¢?]+ÈS7”Þ)ågëZû)D”fø½¡ùR1Р쵑֯Ñ k*:æB天˸76»,šÀà®Î‘lgþõsεã¦-†jAs´sTšBx*ËŸÆ^ƒôõ[õvaØ,)^ GlãòhV‘6pÏ÷““Ò2Ø1]·å¤Úeh….ë ]¤ÉpS5I&ã„W%Ž‚1Cbt’ì>™™c(ñæäY§elh]Q&0ít]¦ŽðdìG?cuìY @­’ *ÎÃ8ÕU·hª‚Qrlà5ƒÁŒ‹Þ!¶Š¾­J ZÉ9Nñ1Í'Mµ%²;/ÚÉ›ynkkŒ˜Íq\YhÛËÊ~·L}_ò*$ ö›èù½œ{$ø>dªUÝÔœJþ‚8«mxø;'"K‚‹¡úûæ¤f*/ªa)¤u`^\Êuø+ÖT#?fid–ÅC^k}Ó/pƒá“5Fn­F_É+êkŠdBLžø^ɯ°€\Ôˆ7.0æ¤ [á èšuï¢V2@¶UÄ~_ê?Þ¼0é‘íûÉâèÕô7o/K‚—„û²H[¿ÆáΔž©$D¨4\’>«QÛÉ0Õî—ãç ÷§…Þ]+\5Á›••G}^6çRfž,힎©¡`1õY¿/?Zœw‰óLD›R¢J~»4žs'-—\(d rbÛúò]]5¦ˆÎE}ê˜}d¯ÛôÃÌÂ$ž*—¦â€fƒùÏZ@m+ SÁÜ@qq¾ƒ¹Íð~ä‡nÑ‚«Â;=\9ºkwúi,Ê"»‹;3ry÷‚ƒ±/ÇBŒ{kuæ Ñ~¢á?Jý®‡•à8×ChÆ6s Âš%ìöêÆTÇqj‰fÅ—è·&íèḎ1¥«†òß WRÖ^êi»öãÇ¡µ¨KÌÈ9¸¬È @K¸Úû¤{×Ô¥(¾Ñ|žÒR7–0ßzÄßí»Sæ5ä4rÔhM}ðY[žcB][¸`÷‚=}þ3+íé ã±1ð™ì3eð­pó0iŠb䬮ÝRŒ)¹˜yd­Ò­`ùŒJ™×a6i;{sž–¡žè;Ï„Z/tc3"î…­aîm؆‘¦òë#oSßfƒ†´61)8Îléã¦àX4^-FžÊ4ñ™J¥"{·áq¡ íÉ>L÷wJú»ŠŒ) õöºR*˯üÛÞ›±.òˆ<üTWK ·N¿Ä1Ä`ð=L›û%TsËZ«ã^CVò>]Br*V‚`VL’ÿKø¦ÕôŽ€Î{ Kç ÇbýŽ1,Æjá‘Ñst¡Gr|HØÝ¯?õ îN7Ô³Gø&9öº·qvTzC˜çñÂêÝ:Õ„Ô/Ÿ/ß-ŒnßÉOî›E'e%r*C˜öÇt…PÈÌ¿Å*Z%7 ò»]5qG^Ðh­AQ$Æ%9y ’eÿ)«‰Ém`Cl<¬Yg*¬ÕzšÔ›5%½t< EØipâ7sÃ;*Ë„Ym7^4¨Ò52Èn²·VëŠA~žPšø‘„Û¥/³‰“õù>ÆbϾÿ=vÔxå³Ô=¢O®9So0W#jœÞË›~øÁ(ͬ€ô-EãgÏÄ·¡‘Ø–¤böÄÛh!ë©bB4/)§¶¹-ú52†µ×Ò^¯°IpOÞžl-JD÷+Èÿ²qA`Ÿå1gÃÑÞ¶å¢ Av}ÅWVq¾-¾_Çð"Ê|Eì Ï ýB‹™ëÅiÎEé‘)Ž´ÈW+*ÍæÊàÎRå/§œåòJ}fƒ„ɶÏÓDè4á]BFBú8“j/oº¼µüò¤ SÚ£u3/óæ¶­ KìHeå•`w·:ciðYÕÈ-VḶ́BŽÑ)³j¹{¸ºÜÊŠ’+²¬”µUãó“?²°džÂ‡jš ¿Šûœàâ¾ïÑŸÌeH>Zœã„Ç÷hÀò,ú"Ø~E,¶ªex>¶¸I¶ÊJºUtù+›¼¿f®•I%2Î;p¡ÆZΆÉG¢ãUSÙ=Ž¡¡\U&Wª±Á±nv·DžßD¤ôÔ3QÖs_8É(]©TêBK“øJÑÉ¡(KójT þ%3$]6L[7YPafÇ@·ú3Á»W(ɹ0 KÛÁ¼{¯ÏoÙÞ4"þàjAÓçRß`xŽ¿¼¶Ä‹ö3PÛæeUù «]übw³" ÊÎÔ‹êÙ…°ÓÔUÏ»rx§´ü£–ˆßBž`‘}à ð;JäHÈ|­ç_dLÃ4ÖÓólÞpÞ³ôÇ0gE£îÐ ã»ØÇKß®Wž–ì%µ†™9±cç´…±¬…ç¸ÍÁÇÖsÅ_°©°âöûæ¢ðœ´ó£ÂM4^­…;š}7 n+@Ô– øq錎XŒÎì£ØÂÍ, <„¥fé8o´äÄ£°±ùÕw×óóÞ¹J cE'>]"!s7è5¬âlNMRv}%-¿²,²ûÁ9'Ò:·>aRÿ¤- -+ü.Ñ…ò匇Îé61ôúUöÚÏ)\F™šý—ž¹ƒXµÜÖµ{MPâ‰û³L8Ñøß>L£2MíÇKúÞ`%zýúE—ÞÖÁVúÖ¸PaËp£îË–“¤wôònÁëï ©åäû­kìÙÖêß~ad˵±¾óì7ùÀÒõ9—O]×1M›[“£ØÉ£å yt·‹µ‡ò×ȯx 39j»¡Í¸É(»Îi†tS² ”•Öó;ÅiX”±*é±»9 "Ý÷§Ïì¼Wi=žI¾Ì7ñÒÀãº2›æNdˆ{ßø:ÂÇôÓ'OÁ”íÁ‹@ªÿaÔÛågÕY1Áí…ŸLDPp”×YuŸWçA¨Õ["ÝÌÞ:‡KLYãÓi?_#º@k7lšr9å®îèÄ™NVõ `^°”¼/š¯(QþÑ–3IMYh gp}tê©B.:^%ùÕ* ûdëÎêóvjª§Qþ-G€(£EÊå&ÛQŠI2ƒÅ؆¢“nk†‰€2¬’y“kÊto³¡ÜÝìk7}ÜÌ;Ôp;RûlðCß¼£”Ô?NÒdî+µ¿ö(ê)±YË©Cô ÆqVϤ¼©ª«õò¬Uåy!‡2Ôl!f¯ÎJ®_õ6¿2¯P [s¦Q>½î+¢Va%“4c«%:§ï!þ]»"¸=_–“! [Áçøt "—ÝVGR'=¼)º«’¡Ï$=jð¿ùòÙ~ÕÄÖ”¯¸çÞ¢„:U†/Õq+7CXç7ÊáH±öE))1d/üòi),6êõ§ëš¼Öëð•m}6dÂ=1©¡QD|µ(´}R¡Q¿ê}3ÍFýLÍ$üäAš¹YLtüæCì^øŽ#shb2+E?±òøQ%i€{zµ KÇ»/ø /`OÎ3õív¿–2a^ÈÀ>ï„Öè& û£3xfÙ9žÛ5¡ÑA³¸Ðå&i_ƒðAFÎÞøØøº°4ZcF¶,ßb}ÄëïJ»r´¦×$ïÔqÖºik£ß˜_ÛãÉËÕÊê)j\™rHW^B†­ÙôŒq›_hUºÂú®ÚžVÊ…L‰íøM“äýÈs—ý-IKñeW F¾ú@Ô:¾Þƒàm-¸/1ÆÄÜú—ÈêS0ÊSuÜŽŒÚXZP) 2ѨÏå?æ–o+Ï“JsøÖ¶ÉFš’w?ÿ²]+ …lÞü)Ãø>ÅÄx³%ΜÙÜ}±¶h‰ž(ͳìef.ÁÙµ§Üœ¤ùKõ*ýW†U±cª˜šŸw: Ѻ,øö¥‹•þ\!%\nƒu~˜ïä« ´ n a`æ žž?²´˜kKd””; GÞÝâÁÞÂÐ^ik¹b$/gZi yUG=djÔê’8¬÷õ N)j:aÕ|µÅq‡Ã˜Éh’t©Ü„µŸHQpz0¸³*%V\)ê~?[Ët}6À²D +~ÌWÇ7FWa$zB PPØyŸ\ç;Ų7à¢X_÷vrfÞën_«Òß´rTXy,Ï<ñó*¥½æ&Ó›øÀlÅ9YêÈwº‰|Ï­VXQvèêÄUD ÃqçÙV¤ýBŠ–? AõÕå‚!6Ä \S±q¤j|†WË]vÌ›oÆ;ü¢…ZÂÃtuô?‚i …»móIC'Cçö#¿)'†Eé¸÷-áõº›Ãß°¦4Þ`[0nm ~ˆƒÑ¥C_¤¶Û>Q6ÊÞ.ñ’šÓK°2kH•–¢¹dFî}ÐÀ3Ϫ×éeº!Êû_u|P—Õ@¥â°,[­ñ~æ*SF7 ;°ÉF&î¥ÊÜ×P=)ÖÊ߂ޔ¿o5MDecÒ|6{kYÍç#‰Ó KܨO]ßedH ¦;jÓ1çý,­Ë³;BPËõÐE~Ëó!Èò»ì4.Ö0,=u-ã;v˜I(V¼{ÐjBo$†ùlJÌB·ƒQCÏ%cc]êDÄyšÝ 4.5úäD­­ t¬LiUBü|õÍ3ÅW쑆–ÕþÊV¡»ˆ÷Ñm¿X¾£¾¨9O ¢-DZrM =«1|ÓG!¥ ³"¯›ÍÝÐH ý%ýæÚ0Ê“*[q7¾£5Ó°Çê7¡×5ʦÑöÌóæŠ–£u?œßh¯—pDzAëÞdÎêÈTßgi?ºK¿8[ôìé~EÁ0ÄžG©t‡œêÌB7| ×£>nÇ•VŠ 6Þ]žÕDK<ŸÌL“JK^³?CáýÈ[£Å¹tŸ½Šë%7C¨;åÑÕ'öc¾I[‰ñeL­8¤"À]j) Û*¿ègw5æ>¿Œâ¯Ùªë:~Š”$ÁktãÔÑ×™§t¬òŠ4ª' ¤©¹)¿¢ˆñx»wQbâ„ZMàììT’Ǥ˜åOùÔ¸¹ÍWG6Dâ8¹¡J>üÌÉV´Sœ¼8ÿDc“ÂÿÌÝn±†š,YDÊÔ¥ØÊ8R¬ÆX†ëÖÈ1ÒÊtȻϙ.í€j“XòÕBVdºåÄùMבª5;·‡Ú§/kr²Á€Ì¦¦mLÚ)t6lݾ~Ê%z¤x|E„‰oÙÕ,êG&Ùù­EìòQæã-î^¹«ÂX­´†4¤Å«Ð?w¨yo´.FJS)êqç+“S¥b¸juXå%Äòjm¿¾*¿õÝ…˜Ïdø|àÜ“þbuÒKçWÇŽ÷KMM -Œ©â ÷ì#LÂLë×[J¾ÁUöâ=ú ÐºÊ ÕŸ€¸°Ÿ3€œ¤õ‚Yg'ÙHªÙ Z­¨ÄC¼å oƒ^5Î#†a‡½3éÖ#]ë†s.¡E³ýYAièL–žš{Ã5דaT¶’zŽ]àΙË0—mG& Ÿîâmˆj0’âîj.[¿ØJú‰Âí!ÈQ©‡<…°ºç#Ïɽw#Õ°<øÜNîB þ{§#›NãÛâM¼Æqiœ±X®õñ´ä%˜±°¯å÷ã5{£XíÍ’ûÖqamT/nެí«(½/¹‘b®‰ƒfâ¡Wk¬ìâtüXq±ùòÞÎ^NPîÁÏEãHáú_—8†ÄV±_ &9Œ:Ýäì0ìfÅJÃáõJSá~ml›/u=ʧر¦âä¥ òÖØÄ\ˆòëeÿ²ÆôíZ8£ÛK'½×IîõèÊžIVzðê§÷©úf±ý¡·oùF½Pãç<ÄŠåñKF§í7Äx{¿‚#ÝCËSm3qhàáb•Ò5Ö°/ ÐKfÚñlŸAÊX¶OÒÄŽSê(NÉÚTÍçJ?Ÿ=n+úåÜœë@‰o?·#vt…Ù<úíUÀ¹Œ}í¢/ix{fÆZ£ˆ‘ÿá—–!Øä#´æñË‚g碴KÝ"Ž­z ˆÁ>·Àî2ÒŸ7?‰Ác¾²šG0½J ½lk-ºå_ºlîÈu{)è¹íZÄAÎ>;™²ÇÙÑù¶h«·gøÑº¦êM'êÎ]äkr+ÈtNý1„:Ýᱯ­€”l¦XæƒbÜÃþ#¤&ßSUÊcõÌõy&Xº˜„ø±UóùN­qË;nèg×íJìh„,ƒ¥Òûâ쥟¡2ÓäóP ¶ò²78EÖÒµ½G}!õfÑŸ!i`ssì SÝ„ÄB¿ÚŸ@ó" b4Wí›Ë̾A eºzdás¦T7 Hj7TõÍ™Õ|r2ÑY5LOÇJ*ÂM%·üÔ”.³eìn;_7þË@ó+_ÍžéyõzŠîÈ>%?‰1ë",¹eÎÀqÜ”K?ÄFìl8Ò2ÊwØg¢›ù£‹…ÅäFƒþÖ+ËÏ…Ðø¾¥Jº¢™­ú«Ûp:Å(¬ZÆê“U³ñ”Oà$³øAbòÆ‹Ÿœ|}ÕÈBùÞ5G(ÐUËÞað­ÑUio’ËîxT‡á¡áu°jäEƒ­ SÖE÷ì þXNˆì¸hÒÇø°(þýe[B“å;í_°†3ý#ÂVpÐ’H V½:C†ÜìŸ,Ÿw5×,×~oÃù0­WqÉ%!ëu4áw×Ežð2—ŽÀí¹7?·ƒ,¢‹ÛÄ·\Þ…Ýþ•ófþéâAu±¡>¬úKeÔíö¾mE™ªnÆß^`«Á‰º2×ä,H‘0r¼iÕ!)V–G¿JíAÓîÆa=’C7 »LtŒØ¦!úHÞWhTÓa—bäI]N9ò•8"Þ­%öêhpž{Ðe³§b´®*ÿ`O^¡ÂmÔlVåÊáh¸üç§0ÿW¬J릥óŸšiNâÊãú‘¤@¸Ñ×4©fòŠÇÐùœy#zÓ“³¤·˜Ñ«¾¤}©Â›¾2{yï©¡d`ÀÇÖÂ4ªË?Ó&÷¦ü3å+ü·þzõ|ýêyØè†^“’Ä¿ú…>TfY²ßVž0¿»=#E£º…Ö š{újqxù§kü3LƒÐl»XÖûACâ­~' 5úç䉀{MnÁ®$¹XáƒÖ-ýxát©k­xj²|š´†Ó¯)ñ9udÙb°'òÔ»ù#‡,\¢Ø[<7.ŒÎ¹2¿W}èõVj‡øŠÄ#[óyÄâ&]™õ|Y(Ùv-M·Ýww}²Å‚ÏH¹Û+MŒ*˜†Þ¾j¼ýWNÏ][_8Y°3¬T°@YÊ—Ò–ÙÁD3šëX~¹ cû…nÚ ÅXï¥Ñc?쀩 ·ä55ºàû‘~-S°ÏuˆÛ<,œ …|JP擉à°Ãì—æ/7¸ƒÚ“óCïä9%Ÿ ÑòÍ 3g5Ñ¿sú¹ôÐïûêlarA/eŽÇZ4´a†,_ÈsÏ[áS0ÎæŽìÐgÕ£ÛýF#öi+ V˜Z !Ú¹ˆ-ͱ¨±úB§~jM¦—§cžbq2xï#ä¾»Ë9ª4Là*­m8ºÌŠ~›þAŠWv¸øâ p†\ùáÉ×<¶ãùÁLO==ÚÉÖäÙT{ÚSï5 Ý‘øU;=-†f? `Ôn7,ñ@X^™õ“|'ÌÃè¼ö¦¤2oMÛißt¸Ûedr¹ß•ÝM$ÜŽ6P6à ÎUÄ×ÉÇ9Tc‚k’×7‘{]ÍÏ“Éï+¯½¾:Π'ÿÊE1¼pŒÿ$ûÇiÕ{ã 49ŽŠã¦äIßzÅŒà”™Êû e1ÒƒC½³YÔƒ ß}S耳Ú%)’TU^ùŒ‡ÛWÊKF ç°(ŠWß²Vø¾7}t§lOKÉ ƒ´bÞ.j¾.E¤0'#¼N%$ªàþ¤hž2mÐFnú–rïݾË4Ë/4:ÛUÙ•Š—ïw–6ÒÊò®fã7÷"ó;n4ç;ñ6øo¹/1æS!ïR¼1±í†¡¹Y¿ZlE¦ s+n»Öx;“×ùSnsèb†¨9}Cl–‹s¸j_Yç–èÖK¹Î’Ý»Á ¥Ñ©™kPTq}l§wPlý6ݘIñ„›kxr쵑£^;0Š\ieŒÁ»^HÙØ®Ð4ã“ιŒA”å,¤˜“tu×À÷+ ©Õî¯/%„K­dR×fì¯[¿¦D™»œ²Ûâ51j²Ùš—“b%Kþà@z‡&e1B+»þžx¼¡çG׾ΦQW¹†J}3¾ù¬¤îU|0(õÓ¾ƒü»¿ddfV Œãhõ¢îø‡oÍTJÑò\…}f7öß#üT|L;Üø€Šmâþ[(#ìÕª§áPÆ??}b]Çè[C#…â@æm´2O ðé¿[ŠÄÿTL!º]ôÕBí ÜÊØ©-ç vöžV³0ÜIPtÞ̓Ú}5øw?+Fžá×ÛýóúN•˜R9Mu_Ä×J¡;és1"ûNvÿ²ˆK ;ìÂ%öÚ'¸ñŠçn×€ ò1ßh¹´¡ÈËÏ\k#!"ñb†D¯7ä«Sp“ °ó…¯Vö½Ó}|1ÚQoñX‡¿õL¯"§š²#œ}³g?zG/q4P‡§©®æè’ÿ¨rü`BÿÝ“|aú@(-p#ƒ·®÷5kö–€c8>3ÀÊç“à‡íxKç\ë9gW§Øý©uæN•bxƒÎ7¾Y|.’Û̵hϹh, ]Þ±ex7„"â¼çŸ~6Ô=xÃF½Íï8DczV™öë—³cÅTG¤dÎW¥Â϶7¥"Ž·-ÅÇõð–r/Ùõr¢” sµ3Ƴ‚„ÖÏM#0Õâ¾ÜdnÞ«5´~½²›d~w«Fm‡R“`ANåB$è”õ6äñ¸å{[~¢,²(¼×Ñ#¨Ô?)…pPà/í¥õgºšž‡rI+‰û„0Ü­ê<MDïÌLBVû¢ägoæÉ ȆÝwˆipO3fYÖ±C?b>?‡ù¼™¨Øêzo¥ˆ} pÌ"‘ùb ˆ‘š0 ¶­,X„œdlPøªé@yÅ8_VϵE•²ËPÏÌ„Û>ˆÿm°Ñ\é§{Q¡D­nb9™&Oˆ`”o:)ïÖ–/… {ç$ |kŽV¨öØïH’ºí0yjthr¶ØÏ÷üUÛ(SrÄ£J’ëùfc šo¿u/ªËz;4Ùª, N¦g|ɰÓ?OÑi÷wf4iÂ[ý*ô^‚(KÐ&²C…;ÂqEx$(™ÜÝm8ŒòXç¼åf{gv«€<ÞÂÏs¶3Ÿ‰}ʶR%rkIKJ‡,f”;å ”âùFû{;žŸ^  b÷¥e­Ä ½/î’+µÙ*ãX?s/UjîRèÇšZzM9ÁÔš[ÒæÁ§Lù’óh8oMÞ¢óËNþ¹m×$ºZ–iñÇ÷âz©êס®Þ€ç EÛ93cé,ƒJobãïŽÚ†ØÇøfV èÍI8s~.Aø ^³¬fMù)шÞüþN‘̯ÜÚ’·EÕnI!ÄXù]«zS_Ew?r–ˆ"Ý¨Žž­ÜòÓfU—ø”ˆGƒ+tÉØ«Ê-öbUv¿—犊°‰7·ô¯#ÏhÜ.†óÂ}ÎÛ›ÓBü#{ÕáÞ¬©/PÑ u•/ÅZÇ4;ueó ãvm£žbçäâÚÏÄx$h‚«öŠvc­î•npï'š‘]˜ˆ›»{} KŒY…gçãF¾öîÄ„—ÅðÈ`¥’TšFÏ]|4}¨1'XîÚpoÕÌD\<*MQ×äÐoUuη$a£ý0¹äj[Ý“¦ã'+sB_V> ×8Áä>+¤¬\,1M\?{Éž©ÿ‰¥-øøbžÃõóã|KvÜå»Dñ¹³‹ÍWp©Lž ±uç$ÝmŸÌ}™¨A8Ê¿h.î©É«ÈB(e†4Všõg©Ñ^%‡ÁèKÒ.DJÍžCþÞ’;#Íéû¡C0$¾wªa¤z#ðTÔ Õ“ØO]G͉Uü×Ö²ÃꊞPæývz;½Ÿ5aw_|e’M‡ ä³Z9Ñ„ïxï¢}à¢.뜆‡ÄóJ‹¾Ã2/2q¾ãa¼v§CT+õ™¶p's¡#òØ(êNÃ#?[c`óØ™ ¼Ès%¹ÙÊøò’¥Ù÷”ïxålµÜÑ[U´ü¤ÊÀkÜ*nœ®²zÍ€ÖðJßV÷ª/ƒ¼Ð–7óÅJÜ„úrÚmm¾^›†×Ïä4f^óH×ñÖ_Žã_ÂÌ•-]j\BÜ}5Ì>¤¬é-Ò|[êj§CËdŠ“x&‘Ëfš¿c™¿¤*˸¤-en×C)t`Ù£“êl©a+濽¿ô"9ÆÐ>¢• .ÀÄhQœúSAÑ阙W*yû÷C› ·¡‚~ªÝÌ—‚6‚‘ˆp«iÜÛõî1â Ci/®_ÐevƘ*¹o¤\ Ef S,§T˜–Í)†N]"ÀÌñþ|kýµoÎyšÌ½w‰gžÎéÕ»(E¿[’í`ÚkÝ~•¼ /’¾#¶}4ß tç.£ŽU·ž÷H¢[‘Ê}žK‚jцïòvỈ¾ ù™3°²Ç_,W÷îªÙÂë(™u³¾ÒîŒ}0½ötÙò·šEË^7~V‚žii³ŒŒh" „nó©®óÓ9˜9Æi—ÁIJÀèì0÷VÔIÂZJ¦oîäõHåVÄYù}3”Éáƒ*âÚÇ$M«–ü/Quˆ R Þ°ÚŽiøZÞ|aÕ&í¤Å;E@tßOéÆ4 ^åv™ij|¶Q?q5oWaNu c¡}™5…³A.t.ŠxÑHF®>öÎdÚ;Ùø½Þ—ˆ«¼¨pÌm¬€…¶ÁÖwÅ=±«_u¿âÅc%«¹A)iÞ&H8mÁöúþ‰××e ÍO„#8vxøÉâìþ²Wø~m9Á¥MˆÅ½ ë`ò+Þ“´’ÍvÅSòãzÕ…374;ßÛ“‚½ì.o¤ñ1Š#¶‘£›¬ƒmá„NŠuð5øfï?q­xŠÄÇ:÷!ô1ÌØ¶ª Mìe…îчʞ†øiÚÇS5TWóoĵ§@”ïãÍõ*½`‘zJúiØìSâRѸïÒLJڞ¿xåV6¯æ¡ùÃN&’ÅŠ¿ï½Yså0á!‚¹ëÜ;Óë@“Õ­;R¬‡7 ÆÓÓC ˆy4ðÊö1ïhŒÅ×wb‡oÈw!d’S6* U€×ÄÑÜErÆP¾‹«š»Kßùç.KãºñY¬\y—œ¢Ü¾¿»ÍuoWBäɵ:C 'nœŒ‰œ`Á·Gm/¤ì¨/äݹç5ËžØCù1&¶d®…âÞî/V–$ÒãŒÔ{¦Æ´W¸6ÕÏÁ¹Z=e½ø–~ØÄÿ ÎNÙêÓCAÓbü V÷W±lc´õ-GT4ÂÓüü×ð^.šŒ—l=cãªÝòL}Ýë• þ7!ÑZ1~¯ Ü#ÒŸ Ô‹òèÈùs%? m‡˜sõn·ÒÈWꃸlu¤¨•=GtQ´ïI⧉œ;à'_àÖX—`öqæË[ ÎÞÁõ7X>ðÚ+MÄýW-°(f0Á åÔç­A^Ÿßââ^@· Mj t´z#nP¼u7æ–i…‹€´ý(pÆÇ£/©©¯”sÊ-*ÍÜ˼M³)DÇÉÀÉÅAÌ- .Ÿ¡|¸¡Î(ÉEùfŠ>Áùܲí|ÿ¶ŽoçÓmýRÒW¨áÏWµ‚…I¯ÛœxéÚFÂzZ“•i£#û÷ÞOXâgþ¢óðïıÍ[èF)™'n~FÏ=A…l°)E‰XIþêí©vG¹u’\¯v±ÊX0ʧ•ˆ{øŽ`¥µrNÔò[–Î1¡áÍ‹šôgŒö¾”þ‘…)µ4¹‘¥Ž=†CI2ì©¢„‰‡d½îo¸>GÅR‰bH«¢ŠÄŠhC÷ü=Z4Ïeœã–ôDÍ4™Ïc£Pßi†C/‹IŽÌ5ìðQŇ¹½\ †ÿN9ƒAãüã³×2\ÆtA¿RˆS$¯n³Öv,?ñ0Äú&~ÿK$ÆÌ.¾:Óy•z™­W6ÿà¨Ô<}aêRbõ9‰AïÝM4UƒR––OdðÕ Ò|Û§çÜ&ìÅÈ)_¥Œ 4?'ŬtåÑ«®,¿0„å7K–™,}ÐÃ8a;M9Zª•,Ôz®&¦×Aå‘fk©”Aõ!q¼P½*DûüíGž½º£3úK·‘î O½MÑD*×éVj“}¾eÝi|á_êhE+@˜pÕW÷§–¦4y ¬/%½‹•°!::Î¥K%ÕUÎM‰0* ze¨Ð‰½J é ç{¶ í¦¾îxË u~R}äߊY‚“b}NÈɃåípqå$OÁ©Ê…¡ÙœõSú$%ëñÞzÎY¢£†§jƒ;Š­Û>À—WËËᲘªÍûmZ€ÁqÃ@`ëk(VûÊ8é¨>!¼ Ù°rMÆÖ=é·ŽiH(¾NΰÃ{ë±ÜXíÔÂW;¦PjÖ-ÅD|Ïñ¢;ÏŒ |ŒZÂîbMGqŽÝÒ°VÖÂ8¸?Îáð†*l[Ò¹ŠÈŸ›!-‰©zïÝ~WX&F µ©°ÅÔ\UKÜÖn²cÎI5Ñܶ<_t)›óãèì3ÉxUn›ã˜ñãeÎZ‰‚cçÇ•…K‘àŒZ=«c{ 5áEÛ+4Œ¹hîèËËÛ%# h$Ø*G#åŸlˆÂþRHy­ý|æfw ¤_ÚØt ¶*Í; #àºÍLίibš™ur®¹6ð9=Ã8·e®ÛT ù¦»g©¡âµãB hœæúM38(¨Á˜â'†¾Ñ=]¤ÅLÁ˜[Cã1‹Ïû½ù’œ?ô4ôHKùoÓ{ÌÇn%¿¥µ’B\`ÊoÇçQ äßœÆöØO°a0ð4Òw”N‘-G<Ϥ"äp¾ =µŸñ?à5`~™¬Bqo†ùlQ¸€¤ðÈ[ß&7ùWûÇÄ잦dçýÀDÄ’Êä¢(ädäámŽ‚œe£ˆ#ü9á@8)…#߯Ï<=dƵU×€üŸŠyäs>¦N3Œ’VL’UÇÉ~)L(Ƙ]Г͔«ØË´•%¹TY9Þ¼"ujøÕßi<5¦[Ç‹·°ÛÁGPv¯€cz‹ÕPÅ=§(suç̉Äü«¶¡ÖiÚ ám“Û4ô¶uuÄ‹ûÔ$Â=öÈóá‘Ô$Dj~B±ÊÝ&ƒQüƒžµ›+w7 UoÞ\Lô°L7 ¾K]ôœáâèn˜)Eò”„“þ†™ÅX}§XKè„д\¦q­L–óû¶JIwTÚo«UßKÃX/¾.¿ŠÊ„VÓê ©ÙÔ=òYåÕr°U0&tO"î¾…"IÒ@•3U *oùÊÃójBVÛˆí.…v´Úõ¤\—Iâ¬q#K£?iÞÚ5+PÏ^i³¼m·®YÎY®há†,6‹¨1$Ms…èl )hÓÝjú:o€dÛUa_$oÝÕQR;þWè91zô ’Ñ9+ê× ˜•W>ç?„ÞLZ²H&8¯–™xuûJPF¼tXb¬…lsï¤oädj—ÿ@ð¿§sÔîýB´¢¡¢Má(Ö4W€‹\¯]ôeÁéf’=Í×ã šCÃgkñž=k}™fdàcàÕè\ÖªV$ ºËT…ˆŽ?t6ägŒ§Oh !@iJöàCHïLoþú sI‚R{/Qëbv豤ƒí@äm×uåéü:XßNK÷çi.a¾õ½ÖdâŽNÅÆõ:úýË/·ùô²¤|õ)ùSf7‡Z©ÿ¯TJP±Bð깡[Zñ„äö¾íÂEEYC£ß1-$žÞ1,ì!`¼z>žiþ~y[±ÓÒs?wµÒe»éFAÂ{‡›‰çn §ÛUÃsc~ œ5ƒ$É R/n&²c× " çˆÞ¥IÞj™;Ø\N£ç+Fç©À‘9™*´tÏ72¸í©Ã1gäÝ;5¿™‰7Gí• IAAÓ#Ip¹ØÚ¡Ÿmµ*#ÁU©ˆûÁˆÅ çT’À9¦çÈU4sx‰5Ps2ÝNRÉnp@ÅÜ7!M´½î&Ëñââçö k}ž†ÇVB¶>\K”ÜÎÏ’ *Ô+;?yŸX¤È]¶G»¤­“"—ù9V_8§þ[\£Äy㕈VW­8I¡4ð5ý*&:h*ϺÛÄÏ>d¡dÅï{_¨Å±Éžu¸:ø‘²Û‹uéBGpé犗PyA—˜ÔÊRÞ±Œ äIJMOµh2à!4+÷iC~²fêºÃ“2ÃuÍ€M¾« ›Z)G^mŒyæÖa›å ¹ñ¬Ýihó˜DìPUZ]è4S‚ &“¶¦~ êóÝИXzÈУú¯U/"O Å{–~™ˆ„\aªh¯t£Ý[  ×ê{´Õ˜'y×9{VníÚ“ÔãþXëƒQ·ñ[Kú95º¥K°ÿÑÓ"èÀ ³æB¦F(Å\Ó¤¹ª$ >Äõ—šìÊ! ë«A2ðØ`¡Î½îøqaÞI§$ pögÊ^x4`pbŒD€ùúKP&ü·ÄŠš¯<š)³œÖwŒá°´±âîuvÝPà‚èKê“þø„Z;@,)ÓsÏ^3‰ˆë’¥4\Öá kaü¿Qè¡¶L@¾úÕÇ,]¤ÒÄóж­.ñbmYÝèîfü~eøÛÚX¶ÙRGwùñezäÊóX®«ßrg§$­b´ÐÄc´B!¾Ú Ê“L]ûw´¦¡ø¥m‘±Ù'"²e胬EÁÎÅávó1;cóçÖ)†räf1ÿc‘k­=ÁRS‡˜ ÛP£Ѩœ=­&š‹^n.ÆzV, X ZDq°ƒùÛÒ3×ÛÜ ÛŒFOZy„£ëPL÷5øèÁnoƒÎe· ¿±T«ŠÔ©@{»>zhêÇzî–˜åå Þæî ©„Hô—®@ ‰™ðŠurÉ |Ø<±úÛÕb cb¡>;/Ø-g€BGБ ø4òøCë¼ÀE¾Ÿ!ÔX×÷5ö¥À¸n;œŸ¢_SÇ΋Ñ4’Žˆî Êpô›‰BÍ3û›ÕUöùù´yÿ{ôì%Ææv$Já Ñ6v Ÿ®Ì?¶+ˉ«sˆy2Ãx'ôLU^‰ÿÝmýßåÞW…ÁnÛ±=*Çj)G–í4jk?Ô4ýá2›7¤îú¸ZHŸ²S«Tö'ÔQ@Ç·/´CÄ{3ó9€Ä99hc’Ó±º€>5ðzU8Æk{,ñXʲíª% Wȉë´~–0…ìÚÝ\¿tú£Óu…0«»\*P½Ê'h—!5¾(ÝðçîÊ£évÝ¡9ç«ù#Ç,Û#4®ÉQ“Jù*YOŸëëªtÕ%ݦmµ[ÅýCE H›H ˜h±}72qŸPУú÷éMûü´=©XQ@f0;º XW!ÈažÝ(„(ÜÌRRß)ʽ¡‰¹ªVF?¾´o Ž_þìÌÈ«1®·¬ ųv‘ÙWøzÑ­å><èÎzÙ<€˜%¼ñØÇ6ë«ýRfï1E'¨'ÐŒ˜wIï߸Õ•а¤Ó+{¾(ë-ôÆLMòÆp;Ø4oÅššëv³Æ»í ô” È`÷ÃDÊ × " Ì…r°pE0ªïR+F”TaÚÁ¡µíJ5YM9¬*z}Û¦Æ(ïuç¤âT‰oZô/¯ ¥ìaƒbˆ!]Œ‹Ý†lúãf9º!ug¾ÙôTÿY¸Qþ:Ü*0Ck1„ˆNdfûÃòLZ»2b Ly: »QĦ„)¦V1bE}úEöQiŸ/!™F€Òካ¦[ƒÖ¤öÊÞ4”#¤ÓØ4#ëY>f8rè –ÓâeŽ0båï[š£Ä½D/W¿°ô†ŽÉÓsµ¸Ç/ŠN) Ѳê§ìHâ{Ë, ó©õ©`h™×=Þ2•¼;4- 7TQæS¬v –÷1‡Œ % ^=E ΆÅd1“0Ÿd‰>Åå†v˜ Ïû3r­ÍekB­¢2½«”Ë…·8³ÇЉ)ޱmÀŽ4"QnQ¸q$=4Š Wjõ©§®ËŒM¶yxyîçoÁþûæü÷é¥%Ð/N0g+â‚Ý-)&_+ƒ9S>ý•uâÿW±-´±m5¥O&šã9bƒ(0è‡ ¿«;ïôIÓ`!ˆPËÏ'r÷€0oÖ™,ÿBœÝ¡6½÷Χ®Þá@ï Ùöè'ýù çs¡G¤­ , ŽxŸC‡ÝiÏMÛzP„£|<öºí½Ã}È*¿¾DæÔY`…ŒF¥°a§ÿž•ÄÍÅ•t³o{A CÈd>¥`-Œ¬“•Ÿ=¶žx,q ÚxÜsú_=k°Ðà\Ô߬x`MÉ¡G€W|^Ø A+ÿ‚Ê‚Ä~I áàŠªÊCn¶ O5Û…Õr°F¤þ©=íá ðþß+ðÄ×¼:›•‚ì•\Åz“wÐ÷V/y‘÷þµB€mú¹ù0KFÉÐL44®¶¬+öï=ʰ .ýPˆK‹âÜ|ù…%ŒT‰£{Ýš·'äC #aÖÏ ´\€¦ ðïÆwñ¾fËLØhø‹ómšíB¤/ ‹iCè´/ì­²Hˉ´ Ób‰áõf¤Í-î|޹ö.Š.³ög€Æ FP·Õ™ÐO8h•cqÕ‡æ€cØjg<¼žÖ0¨_'ˆ>,Þä“ЫýPUñb  Ë;)Ó!œ¸ª?nAá‰Âžp3$“zèªNœÌ“°ææèê=¯re“xé]Ưç-ãH»˜’ÛLá¿‹NÖ@©ÏžÐžJ:ÖY¯6jŽ+¸'…Ť“6Ï룔½©0o“¾Béw[rt4ÔVVÆq`Ó!„Q@­“Å@·ë”I;Â\'¾ÅóºEŸ›Wë¹7š´*ó&óL޶éaâ21¹nM}>wãÀ‹â ]Ö$¸MxvàšXç^:Ô éq ‡¸x9Ú3§N8Äq ‚†ïí:“¢ó’h‹µrRÞ÷äæÅPGk£þµínæCO¹ï-lÅ.Ƥƒ•n*0ĵe -…îÁ‰Ÿ\Ý’’kÁB÷±¡œD‡´A”¯—ƒ^‚^DZoÈ'§\)8Ç R\nÝŠ1ûqI¬é/X ¾ªÞM€%º{RŒˆ¶Õû8­bg2«ÌäiqgŽ£I*‹Pe5Wc¸c±úVm8·¢Ûñ­ˆQݼƒ(¹²ã°ªkºÒ]!sìÏ­ Ë9T¶ J “ð' ##È¢Au¿ë Ã?”u@„b_0ÊJ)ìª1'©|õ™\_ ¯~­?ÕåÛ½ó¢—gc;ø–þÄ:DWWy ÿZÿbK—Aó§,‡/ñ)iS¸’ÎqYdëëû÷»@´½ä¾fòUÔ_°&Õ»Ä{éÌŸëŸXÀ/^ÏÑl@*Uáo1¯(Ëb¨‚T·¸}‘’7¤ Ì“¿Y+Ù"9ázLâý¬ŸE ÿ xL3À¡ßö^/½oÍ”ÄÄIØ —qgO’i7ë„5fÖçÝ ñåÑô¿__¶àqñc‰ê¼Ò øU2'uöï] Ë5% 5_¸§[-ÜBj==ßIå”ö/@î„`{!Þó<¶Q˜hvÏÿ{›ûऊ¦X=Azä˜]£â•vžh3ÀsBz±*·öŽ+hœbÊÂ~I«ÈT¯´{eÃG^‚‡àQÈ%sieƒ<—ÅH¤ÚJ\Û— &åYMŠfJ½^_ýØÔ²äl±JF½Cܦ¹4ÀÀË5š/†CÀ`)ÇÛ<.îzSÞíãH‚ƒ„Œa.£TmQêûÍêí\‹õ¥?‡eˆ‚Â35Vq¬©qTo:õÕ#ÖË‹Òå.ÍáÈj2 V\|¡âÇÚ¦Mz™F¼<ËÔÜ™íLÄŸÏzÌë8% §ûfâ Ü|Õ¶ß…¦ùeZ jø§}$~XŒãÑ e²$ Å’a~„Kx1Cš†JƒñP¹ÌÌwüè×gbùþ6Øb.'(|âœj̇ºÄ02)ZÚ´9X:~.*%®¹bâÞ󓋤£lÆ”#2àUlHäÊo-‹wŠ¢!ÇÂÆå½ï¨)¸/òomè«$ÃÖ¬ð¬‡ý]½õoÚC[DµµÀøFU“ÞB¬Ê¥C”¹TƒÕj˜”&À¬mŸ2"õQlÐ~Šb!u•-ÛaÀ-¥ÌS4„·Q´Hè(³òõ·€8N‡šJ °F<úËnqæIѬS@¯¬v«¹õ‹Íì¦iC—°ÿ¿&ç/œQ#}ßQq¼rÒ©'•ú”ûÏÉ£ ´—)Ý6³N§B˜Lî{Gþ…®Œ·ð—a‘Æ¡yÇ“ËXT¬çVQïþòïŠ&’̨G5–Vfª¶~fúù‹ÂÉÖ»,¬¢V—Ü7C» &í ¿:•èÔ?=îCâ#½?!­uBfnLÑ›íšc´ÌÞ“Mê÷Awyt‹e¬×‰ šð RamBV œ¦ÉÂþ_u„ªsù¶kI•G’AÑ ©¨Ô‡RZ“²pÝÒœ¸ŸHÊ7”þ¦ù’¶Ðcî)N¦Pn¬Pä—Ôš.Äypöœ<Ù8q‹$Û{dùáÛÖÂhHȈÛHžT”¢r¢gÞªëTgÙ¾6ܬWÁêdµ˜ÖÀÍçv± 쟶½í+:œ]¼Æ‰JL'ˆ¶be®)ÕþÊ8”å+ÓiÈ•GÂûë¢~eÛîy‹†AªLj½ŸÚ/ùc£Bæ•Tr¯ñw)ûl̃’ÛßÐpM xø9¡(@Û9NŒR·Õ%ñÏjžÅXT‰´ÆËRœÆÉ­ž…letåv^ð@ ¼t9̉“cÈ—ûU+T JÄ9Æ3× kú_,ì·Ó™rìÏ Ò6o3ˆog[ìže—„y ØG‚¼aJ ´PùógÊŒì2Àñg[”B9|vwI èr£ç˜wˆBç,™• Ùî~w¨´àµ,½ 0])úB#-%ÎŒõ•¯ÞŠÒ8ylªºzs.ÞÜ=–ç?²ôŠƒŠàÑ۫ШáÇ“í)È!·K`{¿zõQd4'÷žJ]T0­#v)Ür+•ßy—Õl £Raù˜•ä‘T㑇(%= ü5É"Ǽ}cG­yëWÑo|Ø ðVˆÅ¼=Î(3CZ–°rL ì7ÿ`I7ñíÞÚ0[²'`h°6Uǫ̔cg+ïSQ zpÊ›ÎkìO©ÚËâ)­Ýa–gŠ´“DSÔ3¾ƒÿKxvUJã!0uô#”šÉ›Ìª ^EâÆD>ì=¼Ê^¼˜üÉ`MಭMcø$:ß ÆiC69Ș¶+ï˜Öq&$¹×™.9ÐnÙ8æàmÐi«.I³œuV©§O¹Í@½“•q—:÷R)×BvC‚¥Gƒqž · :¯œ´>“Ç ÎO/%RI’­ðJ…~¡h— _{®–ñ˜!6Ò½í&±?å…Ø‹œý€¾ÃÄuº—m2~¢ÉE49ʧpt¥7œ´‰!²*õéoª”ü᣼^éX¢€‰Þ[x©Úy÷š)+a5 ¾hL뵞}±Æ5z_ñIwîï|Têöý±DMÍw V;;êÞ&)R¶Õ’`ÙùÅäÐÀ ?¬2âf°)z’Ìs0ò¶8Kѵ)`Å®Jù–Í‚øê‘ל/z%ãÒ…Iï ¯ÏŸ%«tNçkbüÌù¢ÜžÀD­k*?}·â*Ý1Ú)í>¶\†UFûà©­ö¯6VëžíxÖËϼeì2Ö@\bÅ»6ú0ú Ç㊣© ¦æ6‚DÎN:… Õ×yÛ„«-,É®~·é€>fPã â¼}Ö¡#æ@æÇÉPõ±ïÁÿÑ›ià]q(^ˆÇ€i. ŸøiQ¡42k2–(~¾BÉÔ]‡Ù“ €s-ã—7Gª›]œòNu1æH •øz`Uù¿ŒÜcªz0O‘¹‘žeŽ>5ϭͬøZ£,/©›¦¤ÚÂq4,)iǦZ T=˜/·«cîžkÈœ7‚¯˜úäóÛ"Bz Äâ£û¾nkˆs¼DŽyÃŽNΜºô“¾ƒÎ¿ÕìÝ9¶Øzø}+#УžRžo¤‡y™yÉÊzŽ}'Ò°o^ún{j*›¯ðsƒ·>^o²¿Ia³\Á¤ÌèrF\˜Àçïuf#*nQž]­uí½¾ÃfÇ×ÄsêCîÒoÒQH.;æ˜_ö+ÆÂ®Ïê8ž4±:ðNï@¾FLV©¾{õÜ$³Wûᄌbÿ •ÕÌY|IþQi€c¤m+¸ÏÏš`RîÒÄSŽÉJªLBóÏá&kß«x‡Ixö—dg«2-P+£Åwå2Óˆ†C!ô}GP¥P°›9õ_v½ÃS† ¾­» ¨‰†Øü ~kVJè¬Æ8»ùe¾ùgÌ6G·¾Ðl(ë6õˆµÄ®]Íy¦ŠäŠ68\Õ9°h%QÑ×ɳ]¡™AD?8Fö¤éWœ¸³ËG¤2`Ê(ñº2¨ÆB]«w#„4!ÀRJ¡T-{#Ól×®óÆ]Z´#´.ƒJÊ!º’µÌ~;d½²<‡÷/ذл¸JÚå<‚ÃXcÿ7/àÑÁC? ÜS°Ä/_º­¾ËØ»Z°Í‘·@ξ{⴮˞]W,R½<¢R´-ű†@ë!íÊ Ü¥xûc§hµ²[ççžj4ÚÇ}{´Á‹–Ò®ãú™#YåÛ®lÍÏ>ç*€ÂØ4º ³ágm«Þĺp}¢6ÃÄéùqj»,q¥zl{6nðãÖš!ýhœãÑ7Õ´n'ªÞb±rk…/Úš›ÐûºoD“ ÅW]¡Žz’U/Šç‹;œ— =çu¹ôëø@Ý¡÷ . å”j„Ùt6 õ-^¸É#ér>ñ쓼†ò}ÄÒl‰nÈ‹7jÀt ÿ®LÛ§.[xºC£úOF¨‹›&O˹¨ Cÿû¥)¡4ö*1˜%Ç”š |ÿ<%\h½¸Ð¬}uœçM²Ú®‘S©ïNH’œÜ¦…–\õøÞŽu&û_Œy5Òr‡È¥‡FÝOHéS‰óѲ³H¥k*Zál ðU[@³³w£âøw‡)Dêü3JÀ$Á¾ ÈèᥳãÌîÓ€Õ '®–uºá¦§ò" „IbƒíQ/(°ÌŠ4òšà-)Ô¢8\˜æ]P}ËÛüÝm£ÌÞ‹ü¾+³uÆ/Z:Ú6¥¾ /7*ˆÈC%&Èý¿Â¨Íc_0Uû3Z¡1„%ÔL|) &ÛR%ŠDg®gú*7#,§ô={Ó°‹;“ªôE9ªîÌo5P|ݵé-’¸zrÌœ¢ÆÄTÓ豬ÌÊ_¸ Q‡H‰w{d(ÝlÊ(µP×H‹)ní\Pòýt%\{*wÛM†õ@vNœQîøü9e;*àQqî&¢‚BP-¨WëÙqƒ†iÙìø°rËÐ¥¾b<ÂkHbë"ëY®öUíOR½TA°O‘~À#…ÙK÷„ö„Ý‘i'Gq”:rèºäOx+z´9âG¢v_ùîD¯fƒNæá"±YúrG¯AæåöB)H ùÖ¸¾fô-Q"4×'_tšÆ:“­åéÅã,±ë¡ªN¨@óž ûߨÄ`x ü­ ü2`oú{ò?Û›øühÕþ,k&ub·wóá£xv£Ÿ$XeHõúꯥt ÐÌ(¥zì9Àz÷€ÉÕ=Éqä·—9òû™Zž^ïiWº7Ú*Zã´fí¥{X<ñ©÷¡žÁ1Ž|¶;Ì:·°«{+p^…vjaU ¸´u*ß­Û$ .ý×7v ØÂ¶Lh݄Ȧ­¶§-ºªÎX|n»†F4*êÉKÏÉÔwv8GÚ»J@a)+€¤QÕ°í)$,„+r½Š’’ø7iø¶‚dˆÛ´É_VÇèÄ[¹µ¹kÓœC+ز>ö‰ƒ Çà +$¦G† u§ÎzlX3j"†2ÃKâLF‹ ;¯¡~Ghìm0£Ÿh†‰Îø C(¸!Ìr_ƒ]2µ`¼Ôºá¿ÏÉÌd_$Íq͵]ëõy¦²¥ y ˜8V–“xAàÖ̾Ð8§c\ÏçÚ„Ý© ¿:0ùyãP`¡ÂJµËfVÛêtÀNÊ7¸É@D&Æ öp±APÇõ–ÿ®›ЖQ£WÝÇruŸ{‘_t•m|›3ßÅ’!ì|¡y•-Тþ¡ Ö]þ˜YQ0G ¨iÆDMÆtn¾Ùþ7àF©Ã Rcð­°'¢ãýüà#9v æf²›­‰]ÅŒê¯wÉ· NH¨àý×礪‰ AKõ=½D$÷>üŽ$ø'îi ,E[¥h&½Ñv®–ÎË\é$ª R#§#úúÊñŒ‡›uá3Mßà»Cósn¤ …è0àà4ãìÝë*»ki#TU÷PЮ)¸((Ûu\Óâ‹›L4vïg-Ÿí¶\YúÑHi;/šjåXeXT êßï1}¶#ªxÄ#Ç*_§ÏeƒµeÖJìжwzû^T·rH8ú'»ÊìÇþúH,á"Ö|Zz‰RJ•´1Åa€æzrޏ~81Ü\Ѻ4ÌÓ÷Ƶq0ñsáçAgP\•àb¯ÚâT‡Ó~ËrÔŽ¡W¾ˆSó PÚãyFœVõ)†|±ÛHYFôd-ê(¯²380•Ég/`IœÏ¥ºsˆa­óˆLw8ä-¤ŒÛ‹“ÖŒ”MœÍúùóên¯Ä» FÖ –éã,ÁÚØ¾eÌ¢Mž'^ºt0À€ë/—ëœí¡sý]ÍÇ©µ_ rÏÖ€‘¿ 6òËkGb´·¡04#“¼DÅã3½ÆŸÁ%y?qäšp Ï²“S„mHšË8PpöwñüÑŠÞ¦‹drٻĵ 4’”½šŽUÅ<2iÃ?N ³ ±ÜÙ\ÿsmì2‡¼:ÖGÕ¹„Ûñ_ÏØÕ-þAn“0è§Ë8y“é,@Ï4\å´ªb7åÁeäD‡¹™Éɺނ~™3Š“Y`´>]H’¬:U9ƒç8}¦ 0ŒÛG#DÂÍ&/OQ4ÝJVƒÙ©±]‚̚˕¿‚ €y+é‰øÊ¢Æ¢½¡{Õ½ÒÎt0ÓÉÕ ÒWÀJ'ä^°¢;ÁBøéOÅê…v¾Ko( ¾5Ë’ÕŽ(>§xɵ1¦AùiËÉvù—ƒ”†„|sÏÇAhküc& ê7X¾š­ñÃÏV¿½óŠ$;ßsH«P5§Ò ©$M’*¦kšZä€ßùÇNÍey§ÚÀ¶¾îs@kMçßyznÆ“òú¼ÇËá$Á~ ãú òcíâ>xŸþ}^PJ. ½?2€%AʆÓÜÿ«ûkÍxÓîVÙºMœyr~ÓÎýœ•û½Í‘ä`òI¹U¬æÙ Òņ!”Xè¼,|Ì¿DØg}Ð Õ9xÄ`d:#äÀR  M0‹¬¸Hþ¢ ]:èÒ»Öª7àQ BÏ´×ÜidßÛ&b.?šv>²[wk´ºÖ J&YzÕ¢²^Tî`¶ý#‰¢a’¾Sœ0È6@+§RR)ã[˜~Ä}tðAR$Æf„|Ag5ª”¢6QÞ¡SúšûGë¶{fÝü ß¹@QYº7®½ ¬mâ6x{È`éicƒqË@esò.²i_W€©ïiFÄ»³†^£%Ïzs–jÌŸÐqƒwï–Dx@3¢µä9gdd›"8FÇ-H[ÎÆÆ'¢NV‘•(žÝH5‚†¹øŸûú™I­QHb"Ù¹ ƒnŸ:0߇ȶ`_Ú„u<­í ÍO^F*v€|Ù>u—X<'4iäQÜ î-DÜ9 …i>>K­ß(bZ”ÆKG;#2£œ}fz†¨Ç˜@¥¼Ë&éà ¯‘šãÛéÍ$„:\1ÕÅóDÌé·Œ™ß`'õceƒÔª&'2JÃ_Æ É]ЉÒÕÓ¿…é™^Øõn:ÍvŒbn¤Ö)Â%ÛveÊg‹Îé&*÷sìÔ(ÌÄü•:Ëê‹‚f(Cï)K졊›Ÿ}¦î^iáö8‘¶df¤]¼î*Ζb1F úËö_ŒÀæÜ™ ßýiXéÍÃâ@j¿&VmfÅ?ëæv¦æ|°I E/6ýÛßr s´™²¢EYD~kdÓѹÝu~µ‡Ü£°›½Ö'3AóÀPÕŠßèÞl–}Ò‘¯uFË*)¶©(lN$}ÈISñfùn{HöÊškòeióbÈ7’)ˆlš·Ì'•éá­K‘ K[P™ ¦ÍK“µÔž) $ȱw7|e×n€ËC·Ñ®Ä¼"ý ¬Þ‡=xŽvyºŒÒH  åG4û±Ê·0]¦üå„xþ!3Òw5}‰CnÌbaðv °GE8ñûDD¬fˆÕ™ÁFb]–ËiÞNòéoæaÝç_¨tûL…õ3ÇÃD«þïyÁ:|Ãt+ƒ&)ñÉ4Ù‡ÌĘwÞéãÚࢷר“¾ûf jaQf9Rn¯WH´xv€õ°âÀ»ÛÅ@³!ÛŽó øv'‡£U oä¡ôÄH¸˜œŽÐdlO9÷* ¢ð3¢z0Ÿ'yc=iäqmîéIWs+¦°Ûó«žÆƒŽ•ÂÌ´óÂÞh:ÓOøÙŒç Âͼ#ÿähëóâŒQÒnÿt€~N§Km15ƒ’P WÓQŒf>\"Ô1 ú<âÓ¾”1\<&>1’â ®thèsL9V[‘z€&7¸á| 0™àœåþLIèù†íÃö+’ZøªàÞç;ETá”Ô¨®T TÊÜŽŽÀÛOL½Õ—Þ BøÁý†zYx”ËܬË[ 'z¸õ-_°ï\ºoþ±[µî˜\[µ¶úÖ³Ú…ê`~× ôj—aWÏÕ×u³{3f²ÕvçÄ»[ã| µ¤ˆÚ935ÂõìQpÓeØìZ?t$”=2Õ“côá’’ÌØ¯ô¤ŠÊ>êê/€¹|r/VƒËÓ½Ú«â¿Óe­ÔhÌ÷só LÕ¿x'lË"a3T9‚ 35àIb[Ö-dÁ¥H,¤„‘5=ÿM#­:´_TMíÙU·kâš<[¢†þö¹þÀÑþL¯Ê8¼lœ=lëžÏ~£K%VÙôfóÞŽ˜DXŽäâ¾)«+§Í½3ä€pâÊfV1×K;¹<ˆ±’ŸAiç;­ªÃf¥X>Üàš;6 d…Ðëo•+Äu©’zå*Gù0d®ù&ß¾±¸)XCÃE&Ïu=)iùAÔ»þ­dE,ufY~'JmeuÉUv(3ï˵œÉ­;éãÿibµ­sãWÂ;•é]fñ‡Bn>Åìe™3- 6P[ÕUà…RƼ¾Yøçõ ™ÝŽbÍEß$ý™ó\눈îv• ¹|2]Èý¦µœ¥æB¾Íð»ÁØý«™_ B¬K!Ah=Ëè°å}˜6êœPvÔáû}'Œ‹¾Í`lìF”äÇ%ŒK|Õ H´)°ß¨\î¡§‰êçDØ’Ó/- M˜]Õ!î‡û·U½Œˆ_Ö«[Þq-n¾l‡ãÏ•v<—Ãâ‹FÜä¼ÙBʲYö6W+SW®o=Z¼JòV‚ôª„™b:¹Ÿa<:ŠÑQR‹7É«qØ„ïvòB°s;ØÐS3ŠþìÛÀO\ãù¸x‚ÂA½"a-‹ÈÊÝ: ]éùQ´©½L1Énì|×xqË¢`m®°\• €BHRxânF —[éf†X?¨Y•Ö¶fa (]xó"`M,öÏ£ù/é¹úµþ„†q9VÁ¤ßjx™‘¤%¹ra¾@úä¯RM _ åb4rIoˆj“Y<Øzê&œe+‚a¾Ÿ,}öâÙ#÷ºë‰¼Ú?Ÿl!ë ÐðÏ(õ²I€Ù•±J§ÜƨÅö ó‡›L•3Ä-l>²4ê*Å'ÅQИµ_à•d[Öêt‡65þÎ@h•¶Dñ€´Q_½ª¯üFžÞ³Ò%}=ùð͇4}˜”· «]-/Ú’oNfš[,f¢,÷‡]é™$Ž_÷r±ô˜šU¼0K }¬½›#2•Û×íufêÙÁ8ü¨ó‹àg°$út§@JŽìK7¿,§gƒØ·ÔÑî)ÍIOÊF?-•ÎÄÆÕ+%Vâ æGËžÛL aÍ@ÿNÿ5Ç÷×ãze¹25‹jtŸ Ù°uL4áÕ™ ö'¶±º«¨8Vq Ôì¢ÆDÊî!ÜXûl´¢”²Â±„„™:B‚ø‘M)±X34ƒ¢Ã°Ì\5É´Oæ)ö¥¤´"pãZ9CC‡èú+¶VÝ<¯Î9Í.Á¸Æ”ÿŠ ƒA+YàdÎc%}GÁæÐ¡L.ÿ#Ì;FIÎµË wÀv¶‚‚*îó:ÃråÃÇñ0Ôì¦W=Ï®€â¯¿Íu¹wg3f"·mM-Û¤Ô焊%(Ê )2Ìÿ|DÌ„9yD¶‹{jÄå$~赪y±#À‡ÄÿÑ=ñj2ÁLÝÃßÕÇpzð­ý l_¶ýûæ¢[ÚïÚÆÆ-FúÖ|ë¹b%?B.ãPû.]…1 uJVÌÄÔú>ã0öWxÙÿnßEa—³iv§ªe‡3’ÛŸêeÖËÑ’×|³×ºWÏíâÞp=r,!úÓ<>ÆÛ ŠÍ/[ÞÆfJà„ã|Û*9Mj¤µªµ„Åi†¦§ í’S[¸ÍënvšñÄô¶h|0š¾l¤Pgï½›¶‹‚¸„¨*“€\™yåìBY‚ž³¦ WŒ‹tl!çŠÿÁ¼ï¦Wº~jR2öD,y|Ä`ëà†äµ¾Íq¤³é_ >)Ù’^H’6›O‡-M©H„¬ÝïK„»÷ʲèlÙyI1ÿÍýYäS/K¦ C·Èx¡©^Tœïà)_͹BáÝ{Ån½7Ò\­ D6c<ªÊ"lÄa">Ø.kÄ휞F5Ϫ×-{)Oj?-ÄbÛÑ×£oÝO3ÅÎŒ”~XÈŠâ:Y蹎j¾—³¢@W•K4à+ ¼ªŽS¢£½€¯Y7^XWG–Çn´ø ueчfÉWºéwü«°Zy‹Ü}÷d§Jƒ/§êX=,€ñw¥cSë6Þ{«³jrÐÉéGøR(•³qi2‘’1HO¿mæ?K.—íäK€0ŒµpÔŸæ uDÏ‹ipùætµ$hWU¿&oošwí5¨²·‹ë0ç\¥_Õ0NÏE–£7õxNØcö„BwÝ£—‡s5\h )ÝüLÇ¿&mR?*q`‚ŽèN;NÁ8†ä:9›µ¦û¾D'^Ç­B°Õ÷ôO±øHïôù;{Cë:lp!;èé Rî0p ÕóXšT‡Ü3–r)°£g®pA‡9ÒV²N»ÂÖ‡h„ý†qc‹éEb/t®/lW¦4„Ëh ó ÑÅ2•#ÖyilJ{Œï—ýȺ\ 1·ñžÈÚaåÐ`¡L¹Ø™³c­ˆù)yæ¿Qµ1\´-ÝlìUZÅN ¹~˜–8£x—ªvaC&Ù w¶Õï݃@“妅ÈËPÙvïTMŒqÓà7ážBʇ‹Â}w@jÛÄÎjš¬ÖÁy"¦ʉL ƒê«€1ËÜ<¸†¡ù†{üs®óRl ¼/wû5¥/‚‹z\UÞê%"¥·D‡‚ý´5/¨™•¹?nÃøE’ÂÔ¶Óæ© à‚äM'ZlEýa£(a–æÛË,ÞWõ–:öûš=ß½¢íù³ ß§ì;8Ø+¥"žŸ#×€.éUàß¿nbL épzÔÉ$à€öRCÁ°Õ4’±Ôèt¼ù(bøZG Ã/Éÿ8X`®l•Hظ;7¨d5®üb0pdR™9‚­ï$‚6õÔZO\ Èygx¸Ã¬ÔÐi˜DY`‰ÇX}8, i¡Ú7°ç\Üp`¥—•Q¥““/È¡7Ê2•+Ö{nðASè«-ó쫺” 4ödtZyï­O°Ã÷U‹„ÉŽ­ @‚¢qE9ÌU‡P-°_ÎÊxc A3Í‚y2¨M!Ì•;™œŒ…"KƒóìO Ø í£Y‡!`h:e‹e0›¹*‡sn^w¥ŒC¦X©7?’E–SÄw){ò°Š€‡°Ðé½­0‡‚××=šQÇrå)3P‰!áánHÀ?Ú°ñÃ;Ù@ßQœwq-;iþG)gp‘Kæ«ÍE•n,Ý¡žl6¨ݬIbÞp Žqþh¢åDTÅÉ&sH*ýÚŸ%Ó›¤fzÈŽ&ž YsêÐñûi*ålЄ-:Úž5ÈÜS&i¬ŽüŠG ?fm"Ñ´ú¯W‘%Õ€cÑÞb™»œß“”‚‹º|s¼øc¸¸;BÉJðoks!'V£¶úÏùô®ïpJ^nf L>®0Bå†5Ûâ² o¿ÿOè4Ý><¢M˜p讇2·®c.œŒ¯ÉÈÌŸÒ¨ÐB6TÿÎ¥?^ ­fi-φL6»‹“-†š´g_°Wf£žBný÷”û¥Ë]€5k.:nÇ*`©º+ôUʈhãXjìßkò”(LÝìÄ­ÕoÝÔɃ$Ö¢;Èüa„,ŒÛEîy–! çÝUì<¹Š‰º»Ëïû3-Ò SâôÛÛÑG¨ 6J¤´íîoy+°”ýÍ^/ß³ÊÇՒǰL’)¶ÅâÞ[ˆúßüi³V9Ixú6»Ô¸¯ÍaîÇ€)↵_ÚÔÄDrV_T¼vþ”PþA»Ô|½è5؈¯œ¨*êñRÐì6m¾rƒ)‡ôáš&*§s¤µâø>QJúÉí‰<ãlŒó¤-y³Ýg~Iä @í‹I¤ž‘5ý:•ËGÊ~Þ ~Uƒ¹-}˺…ªbÇ |ypoiÃt쌜ö…ÿ¬xj¾«LeU¿k]‹ |sèþEÛªP†eí¯ÄÄœ:1VÒU©…rrÑgÞ™Õiô2Ÿ3eFØÊ¥dÄð›û$ש.`+R /¯€®#¦äÿ$ëë+åô:é•F÷9,´l~g„ùsýdÈù¨û¬$ݬ—ü;®R…­¨âeí÷”Dsÿè.&W›ªè*ì–ökûýB±ñ„OoF„6ñã±5 –ãí;¦î¥KF@ù]©g‹wdé´â?Ù)PZÄ«Äp¢‡‘;A¢D‚C².Lžð`mµ,´ä+%Ž&㘑Šÿg-Û7£Ùåjª¯òƒÍ O`p I{óª¯ÕÑ›Åq)u•R¼ëf`%©Xãȇòb‹±Ê™¥6OERJ09Љ2E1ÿtMŽD/·ò¿ °/8½à¢Þ dPÝ[Á´3[UÚ8’|ÖÀÿd‚ÊkW¬P’<848SÑûO¸¥ ŠÞ9`3…'YÍ*û.²,ðHªÙõ]yÈö@ü©5z /éæÙx75kKÒ†´þ™>®‰Á–ÐŒDZ 6ÙªZ¾00õAsã:Ý£ëú-­ÇfWÀîz® åüÎN(s)¤‘ øßuÂÄŽÇ€£d ƒmi g…°ú¯7qì‹d mÄ9ƒÏƒÀ˜Q?#œ”Ý¢¾F—8e™ÓÇriý(¨³,ñ•HªÌq³ù‚„–(T1TÒŽ8³zé43‚Oö¨V(ò=ådìR¯I]¶_á`‡Ñóú 61›Q{Qg—Uìžpj¾¸àd6ûüáæg( ãéÅìbA†€^C™Áõ_#þÿdÅ[‰æ­#Ò`U9:áU­‹T[M ê.¨'^O{Ïûß©øÔRo¹í‡Ñ·Cp÷G°°ä· ÊÍ:"§ˆìlº­zrž^Bí›Qf­¢©NíâbwQ3lóù?ò Õ+ãõnìgå·2™Kg6˜J&¦K• \°Xýû¬WXéð%*1÷.ÌßSàv-®„ð$Ýoíq“ù• úàVÊg‘Hgj¨lrø]„=Þ(ýÁlÝØP£7äUÜ¿¯`_½©¾~;ñè€Î2)RÇÜ+6@EM 6ÀVHÛí²î»õ…Óq粩ó±±SåcP%øYôk£Íïè È ¼7C„yÞÕÒd@\û¬zB“`JÓ”Xj»1/7Qû(±\{ÿÖ·é+«®0 ?½.d¯ òË §¶'xÈnŽZ5k`íÑšþp\èç:XfWç5~KÆahLù°°}‡Ÿë/IUܸf3îrù¼wï}hŽõÚ[ŽVFûz[Wóp7÷aúóÛôPO ?V•PWŽê“…zÏ&ÅŠ·\¯Žö¾}âl—NT¨žº-´ÇPnýn™·v§†:•;Ê7v‹¹Õje pЀ]!…cºžÑΜ¤mý¡ˆÄõÇ4­u?¼ÖÙfE™¼âŒfdÇ&¾Ëux?í·)î}ÚtÇNb½™S’T4·•›ðˆ’>!æYvX‹£àk0ÜLb¤ádöÖ8Ì쑉§»3èµ™Ì*¶GmE«UÊI|&B¶ó2oÈF­ëš÷Ù†kYˆ­«î™Fr[RɧòƒCþ‘>© šÜ¨/øîz/>ChKB ]UF<Üà™Ø°ìË$´ tÝ“ÅäŸ;´H@¡J)‘éTF,ðKðçÛ©;ô­EXO°*þð…¯ÂH&;×a3wjwCÍ èÏšoÍp'{ÿ‰­Jx@\M<|ggí…ñ …‘‡íÅð&Ïé;÷ßMÀ³-F`µ™Z*y¨þÿ“8œË“Ð <îÍ;c¥mžl^0ÓmÙŽlÒ£ö‰@ª ~DBü¡ì Pü).5Ó¡ËŠ´ªø[a—º• õÑË”q,zWP^‹ Øeg+ ‹î¾  œ¦{÷vnàêYAÖ‚:¼Çw,ž5ÈEÚvàðnuŽÜж[¨ª±CÃ9ÙèC$á!HÂÍ”æ_«“Ûó~ð/Õ*}ýÇ‚é»Ý×iU¿„zuØS=í¬zmlÍõ™¦O8Ì\"¥'– ŒycÿX0#kÇÐ¡Š™9±YµjÓMz‹ì·íÛÆëTjáª=ˆËvÙ¸àiñ‚²€FT€.ŽÝšžÒE™ÅÂÐM‡@“(*À‡”WQ Á¨ì³Îr´ }}5ð÷K‹æî›÷àv0*ú\ »€•Ó/FžW^j¬J¹¦¿‚ÿ¨lÆ :4Ñêu=Þ#!Ù¤‰w¹RéÙÚãMiDËž®Rˆ†®SÉ£ç!1– ÝšÛ£zäÆ:#üuwê°Y‡Ó¼ eKÙÏÕæôJíÉg¨Åî‡Þ–)½Ýh™mqýA|·„ãíæH߉ïq¿“â®qNB'’×+_£¶]Ûdˆ˜YKD£?Rgmýéx½ˆ9 ÐÀåU wÍ:ʼòÿ[bÅ›+o•¸¢ØóÞ+ï“éË ¾dÅàà3EŸEBÃ=Ì6¡ûüOâzHög‰,|$S&2+` l25‡ç za2¾ð)ƒ_çÎ]Ý]¢oÅÆxoí„%ê20Ña§‹åS†öÑé-ºZ ‹[[¼JØu´;†Dš¶u½²iÒT/yHUmÑ2á‹e}3¹ƒßaZ¬û„4Sâ‘Ê­ž,ÏÇIŸnWÉ4Å© 7èfè;'…îoöÔß¼‹èÜ8>Ôug« §FiâÅ?ï ¶œÐÜÕ¨ å/ êf¿7³ÜdaÍx)W£¡@ˆ§äh¬`:»»N˜b¢)®>K ílåb÷¾„˜¡|½XéTó®‚sDvÅgÚ\(Q#Ç‘FUÕ; °”Xj ÁöGpÅ].³2Ÿûgã]PS6)ÛØ‰†DN¤p {ljîÀãK\Õ\d =táîÅõ¡ææw¾- †”9LcsNoôü5Iu«üV Hz÷¬™aÙæ 0ZXzzœíÏÇE:) (á¯AA•qToËTB¢tEžžNVÐ-mcmë&:…8Æ?öôð~ºàãâéLJVªßµKºTÚL%¥\ %ÆËdƒ¼;U¯WŒ´½ÈÛXÿTcÑüÌc@¤ÃÏJóÒÆ§í8¶3:u^¡ õOxÓù¯ö@âÛ³c!݃<¤Æ%c!ÝnƒCÌS%3v]êVzŠËŠ~T®tÇÚ–êKæ©á;°@“º€Ü˜½^!O4­ÉE-J•åPýN—Ò¦OÿÃf‰nƒ%¦¨ÐKÍ‹ºOdiÓ¾£—ã\‘¬u²-Ü[›Ð¿ØÂYàF^‡KüBìn×ýðCFŸ¶œ›êtywŠ™ds‰b•‡BO&gãxŽ”X•ÏÊžÛç'JJ¼Dñnâ§…™Ís´%º…s'=ª}j*¡”tª)ÁƽeeHgP§oÌÕcKu™6/Ü›J%+Õf|B`ño¨VªO6?Æ)tݵ˜}'½Y¸ íBýÒ…%X?(þ¢fPîêß Õ h…×Üpmê„`ÐM9éàù*j•>í†ßë ³ÛßòRвÜ~»½u_£’ Y†ª×@NÙg¯ Æ:Þ5íð*JÐéÆ<`&y¶¯Ñ| 1™¸B|a–I"µ õáú%-úI»CÓIRth©¨ós-ÛJ­ž0(¸íF#ØÑ2 ø¡à²œÚ´¥Yïê°Ò4¡§Ø¼q²]\Þ{ʲ®~q£(òÎ>ÉÒ>7 ^•„ŠòÑ­Ž­Ïî~’Ÿfnö<ÉÉ  ,*ÝÓ!l;§ŸF—8Ѳ¶4ŸrÎóÊÉô´YgqÖì9æ˜CŸ€¥z—ª u·Ú« †JXà K(ðT‘ ¹;7¯çj~§w»ëÙ¤X‰ûRÆüÿ˜VyÉ`zágêÔ'‘½BÛθ5d£€" ëô£ ¥w0r27í¸;E{æËg;[¤¼ |b“ëè94C·Pvk‡SII{È&PH§HÖK€ùœÇáì6!}Ê' ¿Ü‚ø^uàüó#^Ï&jxèY¬@ ]í8^~0I-ò-}[05Ò-ÿ•çé kó W³÷Tó¨yÒ]þ9 î„Z;xBxy…µÖ 66® j‘qº4†c6äG݈¶‰*ºlqV÷Ôôæ¿>¢ó%™l·^ýw±ï}š@p_⫌2ëYžt ˆ³¤laTã÷’Jïã ¡dÂvØÏ‡{âñû¦Ò¥-5Õº5nŠš½‡ Á§“`BûŠî¡Ð-{× Í Ba±…ìÈöÚ <#% kLÙŸ[ Žà€›² ‰Òè¶únöä‰ Äéø%/nâX0Õ¿6[XàÖ‚´û#mûão2ÌWKuœ™>tƒ%¬WÄ–Øñ1ö¦$l1õHÈYÜ4Êëfø­JcUÇÐJæ‡gFHš”ÇPGÑ£?ßÚµ‹çÑê‰Gs(b‰­­5¾²ñ{.çzýŸ±âxÉŸ…ÆïÁɗߥfü28ÿ‰»„ ¶¹a ˜<$BN©Z")ÌÐж-êãw걇 XF `¶ ™BÝD0è²ý_7Ï^Äá±ãä‚#¹rM|…a©ú\Þ»Ô½†fGe?Mæ×”ýÄ]ˆÂw2G¥Ö9|ä%å–ÇAúï«]¨nT56Vqâ½)¦(º¨ V¯·%º„å¬ÀÆXQbÿè\¬®®:" —5äpÌ—°K  ©iä”ë­þ@hN €Ñ&|.'ôkª´„ 2°Ïг—s"ª)޵¡ܲñT)Oܾ‘Ý? ‡ƒC–²Ô2¤qa^Êw‰¦°´–0œ„$È5xDóJΣqøŽ‰ª®»~÷(×T%Îì±@ƒ4ÒƒjŸbѳJÉü%¤?,ið2¾‡V>©Þ¿ˆÇeYGð½rR€4šò†La8Ó·‹&x]Í>Ä})zLk¬@ÅãÆFR}è¯ÎœÇ¯q_bª7ç–^ô‚vªŒz¹×ÖB?9ËÙþíþ™­)Ç=o=ÍKÛÕon`ˆFã,òmä{Å=5!ŸˆA¯UTu} ËDú~Í[Ý &= }™uáÄÎôØÉ±—ìYwêýž@[BE@Qaî¥MF2Öìb âŒqSÀ0~9SÞêåզŊ¶›ÂR‹»(~ôS¦…£)†}*}/éá_úïæAêQ é/îAÿN‹ýW‡]Ôø' €ÍÎ¥(Pdìy4-Á’²¹:nuÛ4·¦bÉ^¾ÚøbrjÏe9:q™€ƒšœÇòQæ´n'l°|»~¤ÂQ°g,ý\Ò‡yØû̳‘é¹ø½2üæW3OË"f8Mݰ”Û†è~Çxš2‡ÁH'£‰&®PöÚ÷ ->¹8ØqHd.°i?uƒðØØâ¶ú·Ü›Ë ®¨À„ÁKƒ[¹(û·ÞšP-‰ {†s¾Üò $½™WwWJ4•»U„èýÞo”ò?¹Qçn8FQ\ùTCRÊ`ÀŽ4\èæŸA…RB§1_ñ­ì¢¢;rº÷Ø•ª§ÕÄš×ïÏŠ.ÿÌ­ûÁ‰]°ÃáÇÚÎ{Éwä›Á Äg>õ]û0Ýü¿Y*úB¨‡2/%ÁZ‚õÓ3hæ½ GÖmfðþ­®v¾jCmq[æ*e7¾ŽNYM™a ¾bjšüâçke)]È{jP£êl C%€­’fýè%İùÞc[eC]Ç·’ ;¼Ô i×åYµ¯˜Ð!iÔò¼ ÀŒùOÜbч|‚=ˆeië]¥¹>Åð(;ŠÜqšH1Á9IßXZ³º½Í˜¦;=ò¼UíÑŽ!•̬Tœ›Ló¹V«¿µipëhž«‡oµ‘›?!AŒ»ìŸû.rh)v¹“64)² ]L|fѳÞVÿ£¡|–¼ïolÕRþMâË&ç™ÇháßGeIhö§©Bã£-«gïmg“Ãoæ‡o¬´ Õ¥¦@Ϲ§=%ü'ö·ÿme‡»mé0³+wÄŒ(ÕO9gÀéÃaŸ ‡,*aßÊ3¿êJ¨}5Š5Y¦ôçÇ@J•Ó:²n•µ¿È]m‹ýÞ—ܪßgᣠâmPJ»­1j ¹üV¡ g!懤bqÃ0DÖ| R×#l{ ÚFuyÆ* »²]ý¡së¸-F£Y(¬£äÌ”Ìr=OÄ™vóžæb%XMÃS~¤Šðb•üл]AñæpíGÜÅžgße‰BƒSSx?W¿3’-ޏ†¯Fïf‚Os^šP±SU6®–ÿ4ò˜È7Ú¥Kx¸6ˆ¿Õfuïñ>¨í£vö6{€‰Ü¹ÂTdÄ~Ö‹ª 9ßÌýª `g*4ž.Gh³†¸´ÈùYÔ_¨ƒ½N¤œ¹ñRüsŸÚ™³ˆψhd’zéðG…ZäÍÝkÅÄs;HÆaNžŸ~¾@K¢n5,¿á¥3éçLxî©û‹P;!T&L!£›2=‹OøšŽIÞ,(Ð]ýÊ.ôKéµf?34Ô|ˆv­•@í}¯Ïð!mjP÷ÙÀ‘­o²|íîp=l=Fu¡ëÝÇõÔßÇòÚÜ¢¡rëš!ë3õÈ2\øØ# ¦kl{Å8jÚÄ â Þ;_/øI7›¼G§‹k 3¿@Q*Bã S#Ð{ …’zÈ)îø—†rNÄ0¸òòh1¼r8®†“läoç²Bj ÓpF •…¢Öq Pç„—Â~_ä;zƒgÅò‚ذ¼X +ë>z–Ìoȳڇ áÂjð·Ø ƒÂ"õ,;’ŸsŒ¾¬±YH(ž´>3K[öý|΂þíž5QØOfÉùÁ£ºÅ4לÞÙµ¢^zFP´óÜR‹aŸ°Ê=Ç ˜µÊÃYÄi䈹%hU®P„Äï…rêHߪÎ5®¹Îü‘óŠ&¢]ùøYgOk ù³©·âÝ/뀨™ý'1Tª^ÈÖzUÅšœ ò™ ²!bžEãqú£­éy„Go>?.—&¼ÓrvéB[‰23…"Øí-u;3E ÝŠ×5¾ã¬ŒNM¦Qt‹#3¹r¶©Ü>=i]l—Pg"ŽÖ¤r‡)ЫU áTöh¢ÞŒæÍ[û²Šãù5‹öæm{Ð@Y¦ãC ,2Úñ-U¨5n%¹¸¦›‚‹9Ÿ–‚K–X\íJŸ­ƒ× âÏ|›œóN?UB?GŠ+âLlüý€è‰Œ&þeß l+áÆC›¯¿€FG*ŸSË£€Øà:âpôV²ö9‡ñŠí˜#ÛÝ9ø¡uw adØ9½Íz§2æ3yô¥Ä^!z_7¯ãõôc»gõq’÷ú°lÙk*ÜÄÙÿª¡j\ÌÍî„SWžâ?—>kdL<I8×>h¼QÁAp_Ãa£þ­=†š¿¨3®Ÿµeš÷ÓTÙ1)ÞÝ"zJßÛ¼v…½4'¢‹œ•s–¿nSW“¢nSQ] ZŸ´Nò`9ƒÃôÓJ‡á¦1|&+JuÀr9¸öukZëãe“‹~UÏYÃ]ÄŽoDM}´YPe!"vt3œÉÑ̀üG+mð¤_a¨”-n“y¹_(¬;¡9‡æ…äà ¸öºebïÉÑ¿ön­r¯àHÚ• =Ki,­ÆÚxb!ÍVUÿv‹QþÊ(“•pbéR 4ªý (ñ­¼ ±!ð­¦5Яý/e§iÛ/iº1 º÷ªùÃÅÜúÚ5qjŸS¥ê::!ÑAcH§–<‹ÁÚq .¸|(cnüê®»R‰V7h™!üæw}‡LÏñ§#‘ò\Ù"ÚZ{5 ä ä òRVu–ßB-çv©ÝöGDøO$˜[sô>C!{ðÞùÎR,æ«s‘’½¸ú×™Ä?ªCk|Érh§=X;Åy¹^V²úî0:V\¯[èýÀ4£fµIû~{àpÀ°Zias=O›xýAA.ÉŸ[~„¼Zuåýüè^-ÏMKþœégÀ‘9/¦ô7s›j¼ƒî»=øì+p¿ü2Ï£¯•"áÀ_: “ç%ÔÕï"÷”"Å*층µ!’NCÿTºšOàKÎͬßdÐ sbr“’WI.¨>@Q«®O±ÛìTo´³(Ÿ°•è2™µ|¶'kxôe€Q¸÷ÈG›—àã§AÎs#D@ÀÆ/Ãsm¥˜åP¬8mÆà“/F£ŠˆÃ­†/ÁMš‰WL˜K'¶˜\–—)‰Š‘—Rœ(—ÏŠø!¼ðUÂïÁ”ŠðVš«ÍYñ]d†qç&óô#ëÀæ¼ ÷¹w°@ —jæE¥s„ß-r KÉ 2ýs4òÈRƒ…ƒF]²|ƒO?±#z}¬^6¿Ç…uŸ)õ·Ë ¥À*ýt`ñN§<‹18$²;CãX;ÁÕZéç Ág§Òò 5ýró;i_%¶ðùVwcŠ endstream endobj 94 0 obj 37547 endobj 95 0 obj << /Type /FontDescriptor /FontName /LuxiMono /Flags 5 /FontBBox [ 0 -211 599 993 ] /ItalicAngle 0 /Ascent 993 /Descent -211 /CapHeight 993 /StemV 80 /FontFile 93 0 R >> endobj 96 0 obj << /Length 1126 /Filter /FlateDecode >> stream xœe×Ën*G…á9ïÐÓÁ‘iêÖ-!Ku•<ÈEqòÚR ãß>°~|ùL@‹®*öWµi5wù¡<ìwçîîÓaó8»çÝ~{šÞï§ÍÔ=M/»ý|Ö/»ínsþŒzÛ¼®óÙÝeþãÇÛyz}Ø?ºÕj>뺻?/ÞΧî[Üž¦_ôáï§ítÚí_ºoçG>z|?ÿ^§ý¹[Ìg÷÷Ývz¾®ùëúøÛúuêî4ýûÃö2bwþø~™ø¿!}§nÉ=µmÛéí¸ÞL§õþešÏV‹Å}·jí~>›öÛ¯WûÅ‚iOϛ֧Ëðåuøbqy»†žÐ+, KC0 –`Á)x‚W„ 0…‘0*DBTH„¤ Y¡ŠB%T…F¸šW‘Çà1ò8®ÏÐzìÿñ„¾y?.çúw ‡òëãøn?ýøq<5ïöò61Àendstream endobj 97 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono /ToUnicode 96 0 R /FirstChar 0 /LastChar 255 /Widths [ 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 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 95 0 R >> endobj 98 0 obj << /F1 85 0 R /F2 91 0 R /F3 84 0 R /F4 82 0 R /F5 92 0 R /F6 83 0 R /F7 90 0 R /F8 97 0 R >> endobj 99 0 obj << /Im11 11 0 R >> endobj 100 0 obj << /Font 98 0 R /XObject 99 0 R /ProcSet [ /PDF /ImageC /ImageI ] >> endobj 52 0 obj << /Type /Pages /Resources 100 0 R /MediaBox [ 0 0 595 842 ] /Kids [ 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R 60 0 R 61 0 R 62 0 R 63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R ] /Count 25 >> endobj 101 0 obj << /Type /Catalog /Pages 52 0 R >> endobj 102 0 obj << /Author /Producer /CreationDate (D:20050126200816-05'00') >> endobj xref 0 103 0000000000 65535 f 0000000017 00000 n 0000000606 00000 n 0000000632 00000 n 0000001644 00000 n 0000001670 00000 n 0000004909 00000 n 0000004936 00000 n 0000007812 00000 n 0000007839 00000 n 0000008978 00000 n 0000009006 00000 n 0000082397 00000 n 0000085557 00000 n 0000085585 00000 n 0000089571 00000 n 0000089599 00000 n 0000093335 00000 n 0000093363 00000 n 0000096196 00000 n 0000096224 00000 n 0000100216 00000 n 0000100244 00000 n 0000102871 00000 n 0000102899 00000 n 0000106208 00000 n 0000106236 00000 n 0000108647 00000 n 0000108675 00000 n 0000111538 00000 n 0000111566 00000 n 0000114133 00000 n 0000114161 00000 n 0000117244 00000 n 0000117272 00000 n 0000120316 00000 n 0000120344 00000 n 0000123200 00000 n 0000123228 00000 n 0000125850 00000 n 0000125878 00000 n 0000130254 00000 n 0000130282 00000 n 0000135348 00000 n 0000135376 00000 n 0000138409 00000 n 0000138437 00000 n 0000141175 00000 n 0000141203 00000 n 0000144287 00000 n 0000144315 00000 n 0000144941 00000 n 0000231374 00000 n 0000144968 00000 n 0000145077 00000 n 0000145186 00000 n 0000145295 00000 n 0000145404 00000 n 0000145513 00000 n 0000145623 00000 n 0000145733 00000 n 0000145843 00000 n 0000145953 00000 n 0000146063 00000 n 0000146173 00000 n 0000146283 00000 n 0000146393 00000 n 0000146503 00000 n 0000146613 00000 n 0000146723 00000 n 0000146833 00000 n 0000146943 00000 n 0000147053 00000 n 0000147163 00000 n 0000147273 00000 n 0000147383 00000 n 0000147493 00000 n 0000147603 00000 n 0000147713 00000 n 0000148431 00000 n 0000148456 00000 n 0000148697 00000 n 0000149017 00000 n 0000149223 00000 n 0000149337 00000 n 0000149455 00000 n 0000149583 00000 n 0000187583 00000 n 0000187610 00000 n 0000187845 00000 n 0000189055 00000 n 0000190375 00000 n 0000190496 00000 n 0000190612 00000 n 0000228300 00000 n 0000228327 00000 n 0000228554 00000 n 0000229764 00000 n 0000231079 00000 n 0000231226 00000 n 0000231270 00000 n 0000231971 00000 n 0000232033 00000 n trailer << /Size 103 /Root 101 0 R /Info 102 0 R >> startxref 232252 %%EOF apache-jmeter-2.8/xdocs/extending/index.xml0000644000175000017500000005426312032647151020371 0ustar ebourgebourg Extending JMeter

Extending JMeter

:

There are several ways to extend JMeter and add functionality. JMeter is designed to make this task easier.


Creating your own Timer

The timer interface:


	  public long delay();

Not too complicated. Your delay method must, each time it is called, return a long representing the number of milliseconds to delay. The constant timer returns the same number every time it's called. A random timer returns a different number each time.


Creating your own SampleListener

The SampleListener interface:


	  public void sampleOccurred(SampleEvent e);

	  public void sampleStarted(SampleEvent e);

	  public void sampleStopped(SampleEvent e);

sampleOccurred is the method called when a sample is completed, and the data has been collected. The SampleEvent object should contain all the information gathered from the sample. If your sample listener is primarily concerned with collecting the data from a test run, you can implement this method - the other two are for other purposes and can be ignored (though the methods have to be there for your class to compile).

sampleStarted and sampleStopped are used to indicate the state of the sampling thread. This is useful for visualizers that show the user the state of all running threads (ie, they are running and waiting for response, or they're stopped and waiting to begin again).


Creating your own Config Element

The ConfigElement interface:


	  public void addConfigElement(ConfigElement config);

	  public boolean expectsModification();

	  public Object clone();

The ConfigElement interface is sparse. All ConfigElements are expected to implement a public clone() method. The reason for this is that config elements will be cloned for each different sampling thread, and most will be cloned for each sample.

If your config element expects to be modified in the process of a test run, and you want those modifications to carry over from sample to sample (as in a cookie manager - you want to save all cookies that gets set throughout the test), then return true for the expectsModification() method. Your config element will not be cloned for each sample. If your config elements are more static in nature, return false. If in doubt, return false.

addConfigElement() is required so that config elements can be layered. For instance, let's say a user creates a URL entry that contains default values - they might use this to specify a server. Then, all their test samples configure individual test cases, but leave out the server field. This information is combined via the addConfigElement() method. Your custom config elements should do the right thing when this method is called. Normally, this involves ignoring such calls unless the passed in ConfigElement is of the same type as yours, and then only merging in values that are not already set in the object receiving the call (ie you probably don't want to overwrite any values).

You may have noticed there's no specification on how to get the config information out of a ConfigElement. This raises the question, who is going to use it? At the end of the line, there will be a Sampler that will need the information held in your config element. The sampler that uses your config element needs to know more about the class than the rest of JMeter - that information is not part of this interface.

If at all possible, extend AbstractConfigElement when creating your own. By doing so, and by following some simple rules, you will get cloning and saving to XML of your config element for free (as in, you don't have to do anything!). AbstractConfigElement stores all its values in a Map, and provides getProperty and putProperty methods. Your config element can provide getXXX() and setXXX() methods, but these should delegate to getProperty() and setProperty(), probably using static Strings as keys in the Map.
You can store any type of object, provided the objects are clonable and Saveable (Strings, Integer, Long, Double, Float are all good in this regard).

One caveat - if your config element has been restored from file, all the values held in the Map will be String objects (except for elements that implement Saveable on their own), and you may have to do casting and parsing. Example: an Integer will have to be converted from a String to an int, so your getXXX() method should check for this possibility to avoid exceptions.


Creating your own logic SamplerController

The SamplerController interface looks as follows:


	  Entry nextEntry();

	  Collection getListeners();

	  void addSamplerController(SamplerController controller);

	  void addConfigElement(ConfigElement config);

	  Object clone();

Again, clone() is a method that must be implemented to all SamplerControllers to avoid contamination between sampling threads.

The nextEntry() method is the essential job of a SamplerController - to deliver Entry objects to be sampled. An Entry object encapsulates all the information needed by a Sampler to do its job. The nextEntry() method should work like an iterator and continuously return new Entry objects.

There are two boundary conditions that need to be handled. If the Controller has no more Entries to give, for the rest of the test, it should return null. Therefore, if your Controller has sub-controllers it is receiving Entries from, it should remove them from its list of controllers to get Entries from. The other condition is when your controller reaches the end of its list of Entries, and it needs to start over from the beginning. The parent Controller needs to know this so that it can move on to its next controller in its list. Therefore, at the end of each iteration, your SamplerController needs to return a CycleEntry object instead of a normal Entry. Conversely, this means that if your Controller receives a CycleEntry object, it should move on to the next Controller in its list.

A logic controller does not generate Entries on its own, but simply regulates the flow of Entries from its sub-controllers. A logic controller might provide looping logic, or it might modify the Entries that pass through it, or whatever. GenericController provides an implementation that does absolutely nothing but pass Entries on from its sub-controllers. This class is useful both for reference purposes and to extend, since it provides a lot of methods you're likely to find useful

getListeners() is an odd member of this Class. It's there to serve those who want their controller to receive sample data. This would be useful for a controller that modified Entry objects based on previous sample results (like an HTML spider that dynamically reacted to previously sampled webpages for links and forms). The responsibility of the controller implementer is to collect all potential listeners from the sub-controller list, and add themselves if desired. Most SamplerControllers that extend GenericController don't have to do anything.

addSamplerController(SamplerController controller) is the method used to add sub controllers to your SamplerController.

addConfigElement(ConfigElement config) Your SamplerController should also be capable of holding configuration elements and adding them to Entries as they pass through your controller. Again, see GenericController for reference. Essentially, all Entry objects that get returned by nextEntry() are handed all the ConfigElements of the controller.


Creating your own test sample SamplerController

A SamplerController that generates Entry objects is just like a logic controller except that it creates its own Entry objects instead of gathering them from sub-controllers (although, to be fully correct, your test sample SamplerController should handle both possibilities). Your test sample SamplerController can also benefit from extending GenericController. By doing so, most of your cloning and saving needs are handled (but probably not entirely). See HttpTestSample as reference.


Creating your own Sampler

The Sampler interface:


	  public SampleResult sample(Entry e)

Your Sampler has two responsibilities. Of lesser importance, it should do whatever it is you want to do, given an Entry object that hopefully contains information about what is to be sampled. Of greater importance, your sampler should return a SampleResult object that holds information about the sampling. Information such as how long the sample took, the text response from the sample (if appropriate), and a string that describes the location of what was sampled. The SampleResult interface is essentially a Map with public static Strings as keys.


Making your custom elements play nice as a JMeter UI component

In order to take part in the JMeter UI, your component needs to implement the JMeterComponentModel interface:


	  Class getGuiClass();

	  public String getName();

	  public void setName(String name);

	  public Collection getAddList();

	  public String getClassLabel();

	  public void uncompile();

Most of this stuff is easy, boring, and tedious. getName(), setName() is a simple String property that is the name of the object. getClassLabel() should return a String that describes the class. This string will be displayed to the user and so should be short but meaningful. getGuiClass() should return a Class object for the class that will be used as a GUI component. This class should be a subclass of java.awt.Container, and preferably a subclass of javax.swing.JComponent.

getAddList() should return a list of either Strings or JMenus. These Strings represent the Classes that can be added to your SamplerController. Each String should correspond to the target class's getClassLabel() String. MenuFactory is a class that will return some preset menu lists (such as all available SamplerControllers, all available ConfigElements, etc).

uncompile() is a cleanup method used between sampling runs. When the user hits "Start", JMeter "compiles" the objects in the tree. Child nodes are added to their parent objects recursively until there is one TestPlan object, which is then submitted for testing. Afterward, these elements have to un-added from their parent objects, or uncompiled. To uncompile your class, simply clear all your data structures that are holding sub-elements. For your SamplerController, this will be the list of sub-controllers and the list of ConfigElements.

That's it, except for your GUI class. If your SamplerController has no configuration needs, just return org.apache.jmeter.gui.NamePanel, and the user will at least be able to change the name of your component. Otherwise, create a gui class that implements the ModelSupported interface:


	  void setModel(Object model);

	  public void updateGui();

setModel() is used to hand your JMeterModelComponent class to the GUI class when it is instantiated. It is your responsibility for providing the means by which the Gui class updates the values in the model class. For updating in the other direction, there is updateGui(), which the model class can call if necessary. Note, normally, this call is made for you automatically whenever the Gui is brought to the screen. If you are creating a Visualizer, then you may need to use updateGui(). For reference, refer to UrlConfigGui (in org.apache.jmeter.protocol.http.config.gui).

If you have done all this correctly, there's just one more step. If you compile your classes into the ApacheJMeter.jar file, then you're done. Your classes will be automatically found and used. Otherwise, you will need to modify jmeter.properties. The search_paths property should be modified to include the path where your classes are. This does not obviate the need for your classes to be in the JVM's CLASSPATH - it is an additional requirement. Otherwise, your classes will not be detected, and the Gui will not make them available to the user.


Making your custom elements saveable and loadable from within JMeter

The Saveable interface has just one method:


	  public Class getTagHandlerClass()

This method simply returns the Class object that represents the Class that handles the saving and loading of your component.

To write this SaveHandler, make a class that extends TagHandler (from org.apache.jmeter.save.xml). Note, if your component extends AbstractConfigElement, it is already fully Saveable - provided you only have information stored in the Map from AbstractConfigElement.

To write your own TagHandler, you will have to implement the following methods:


	  public abstract void setAtts(Attributes atts) throws Exception

	  public String getPrimaryTagName()

	  public void save(Saveable objectToSave,Writer out) throws IOException

getPrimaryTagName() should return the String that is the XML tagname that your class handles. When you save your object, it should all be contained within an XML tag of the same name. This will ensure that when JMeter's parser hits that tag, your class will be called upon to handle the data.

setAtts(Attributes atts) is called when the parser first hits your tag. If this primary tag has any attributes, this method represents your chance to save the information.

save(Saveable objectToSave,Writer out) - when the user selects "Save", JMeter will call this method and hand the Saveable object to be saved (it will be the object that specified your TagHandler as the class responsible for saving it). This method should use the given Writer object to print all the XML necessary to save the current state of the objectToSave.

There's more you have to do to handle creating a new Object when JMeter parses an XML file. However, there's no standard interface you need to implement, but rather, JMeter uses reflection to generate method calls into your class. When JMeter hits a tag that corresponds to your PrimaryTagName, an instance of your TagHandler will be created, and its setAtts() method will get called. Thereafter, methods are called depending on subsequent tags and character data. For every tag, JMeter calls <tag-name>TagStart(Attributes atts), and for every end tag, JMeter calls <tag-name>TagEnd().

Additionally, JMeter will call a method that corresponds to all tags that are current. So, for instance, if JMeter runs into a tag name "foo", then foo(Attributes atts) will be called. If JMeter then parses character data, then foo(String data) will be called. If JMeter parses a tag within foo, called "nestedFoo", then JMeter will call foo_nestedFoo(Attributes atts) and foo_nestedFoo(String data). And so on.

An annotated example:


public class AbstractConfigElementHandler extends TagHandler

{

	private AbstractConfigElement config;

	private String currentProperty;



	public AbstractConfigElementHandler()

	{

	}



	/**

	 * Returns the AbstractConfigElement object parsed from the XML.  This method

	 * is required to fulfill the SaveHandler interface.  It is used by the XML

	 * routines to gather all the saved objects.

	 */

	public Object getModel()

	{

		return config;

	}



	/**

	 * This is called when a tag is first encountered for this handler class to handle.

	 * The attributes of the tag are passed, and the SaveHandler object is expected

	 * to instantiate a new object.

	 */

	public void setAtts(Attributes atts) throws Exception

	{

		String className = atts.getValue("type");

		config = (AbstractConfigElement)Class.forName(className).newInstance();

	}



	/**

	 * Called by reflection when a <property> tag is encountered.  Again, the

	 * attributes are passed.

	 */

	public void property(Attributes atts)

	{

		currentProperty = atts.getValue("name");

	}



	/**

	 * Called by reflection when text between the begin and end <property>

	 * tag is encountered.

	 */

	public void property(String data)

	{



		if(data != null && data.trim().length() > 0)

		{

			config.putProperty(currentProperty,data);

			currentProperty = null;

		}

	}



	/**

	 * Called by reflection when the <property> tag is ended.

	 */

	public void propertyTagEnd()

	{

		// Here's a tricky bit.  See below for explanation.

		List children = xmlParent.takeChildObjects(this);

		if(children.size() == 1)

		{

			config.putProperty(currentProperty,((TagHandler)children.get(0)).getModel());

		}

	}





	  /**

	* Gets the tag name that will trigger the use of this object's TagHandler.

	*/

	public String getPrimaryTagName()

	{

		return "ConfigElement";

	}



  /**

	* Tells the object to save itself to the given output stream.

	*/

	public void save(Saveable obj,Writer out) throws IOException

	{

		AbstractConfigElement saved = (AbstractConfigElement)obj;

		out.write("<ConfigElement type=\"");

		out.write(saved.getClass().getName());

		out.write("\">\n");

		Iterator iter = saved.getPropertyNames().iterator();

		while (iter.hasNext())

		{

			String key = (String)iter.next();

			Object value = saved.getProperty(key);

			writeProperty(out,key,value);

		}

		out.write(</ConfigElement>");

	}



	/**

	 * Routine to write each property to xml.

	 */

	private void writeProperty(Writer out,String key,Object value) throws IOException

	{

		out.write("<property name=\"");

		out.write(key);

		out.write("\">\n");

		JMeterHandler.writeObject(value,out);

		out.write("\n</property>\n");

	}

In the propertyTagEnd() method, takeChildObjects() is called on the xmlParent instance variable. xmlParent is inherited from TagHandler - the DocumentHandler object that is running the show. xmlParent takes an XML file that represents a portion of the test configuration tree, and recreates a tree-like data structure. When it is done, it will convert its tree-like data structure into the test configuration tree structure.

However, sometimes, a tree element has sub objects that you do not want represented in the tree - rather, they are part of your object. But, they may be complicated enough to warrant their own SaveHandler class, and thus, the xmlParent picks them up as part of its tree. When the tag is done, and you know that there are child objects you want to grab, you can call the takeChildObjects() method and get a List object containing them all. This will remove them from the tree, and you can add them to your object that you're creating.

UrlConfig is good example. It extends AbstractConfigElement, so it uses exactly the code above to save and reload itself from XML. However, one of the pieces of data that UrlConfig stores is an Arguments object. Arguments is too complicated to save to file as a simple string, so it has its own Handler object (ArgumentsHandler). In the above code, when the call to JMeterHandler.writeObject(value,out) is made, the writeObject method detects whether the object implements Saveable, and if so, calls the object's SaveHandler class to deal with it. This means, however, that when reading that XML file, the Argument object will show up as a separate entity in the data tree, whereas it originally was just part of the data of the UrlConfig object. In order to preserve that relationship, it's necessary for the AbstractConfigElementHandler to check after each property tag is done for child objects in the tree, and take them for its own use.

Study the other SaveHandler objects and the TagHandler class to learn more about how saving is accomplished. Once you understand the design, writing your own SaveHandler is very easy.

apache-jmeter-2.8/xdocs/extending/jmeter_tutorial.pdf0000644000175000017500000077556612032647151022464 0ustar ebourgebourg%PDF-1.4 %äöÜß 1 0 obj << /Length 2 0 R /Filter /FlateDecode >> stream xœ}TËjÃ@ ¼ò{.Ô•´o…8‰ïC è¡üÿ¡Úz¥M¼4"¤œ‹ó š€ÄϘËóúaÞžÌÏvsálù\¿¶›qÞn0§‚hæwó2¡AgæO³|5ó7ça †sr´„Ò$b+ÈXì ½¢–ˆ“ß"$ð—¸õ7 WнDxj’àØM8À±Â¨O,Á¤0•å€ . ºMÜsÁº¤8d‰rSõy ’ ¹Ö¸ÇÔé'öèÜÛF)²mÎÛÁªqðgZi¥¬‹\qO TWÞU™Rùñ1—l;—ÖŒÔ~õ0a€ÌkŽÂ„Bw-A`bpÄR°× ¡VЩo>GÁäfòØÜÿO”M,Çô¢Ýš3óLè¹iU@©%'eÛü£ìE]¨÷Ù´áQnî5•••Å£ÞÑzd©½¬rä«–-³©?2òz‚‘BÛaók-Ê5vBý“@ßltrº¹™4®ÎrßéŠë7Ïw²Îæ·s nendstream endobj 2 0 obj 397 endobj 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xœåWM‹1 ½ò|^èÔ’¿aYH²“ûB  ÐCa÷ÿªÉXòtì$.”vI˜ƒ,Ù²Þ³üüª´ú Pþ!Mÿ·/êÓƒú±Ý¼Òèô½}Ûnö§í&=m¢:}V À«ÓWõˆQïžÔéûvqðAÃú “¶óÐ8›Ò²ôlqƒaŸfËÓ¹¼ îâDú¨ÙÍQ®Ù˜fÓ”7»UndËH©kÚ¨÷âïcÚ‚&ô`ªa¹ùrÄÔ˜ÁžÏìºIšb1|ÖeòPùì€û,Œ7(ÁLu¨¶s„hÏÓC“íCI\œ0]>3né ’Õ¥5ò} -`Ï,¡Î:hb/OŽÒI ·“€ŸîƒÖÿâtӧɃ.Ñáô7n8ÒAzCï™$!”«Þs[ZÊ«8w"f˥˅´R¸ˆ{ k!ÐKt@VuEAŠ˜…,í@š¿“ó9[8L#ú!.# u>× U!ÒT8|ÿÈt;ÉSK u HÊ#ëU”ôÌDE4«¬ Y+•èÈëÃ8 Ò[Ú%zêsͲ¾S:Þ ×ôèjm-ö> stream xœÕ]ÛªìÆ}?pþaž ÞQwë &0šÙón8HbÈCÀþÿ‡H3ÓU%­¥ÚµçœƒÁÚšVwWÕªU—nÿ~jN?7oéÔ§¼ü{˜ÖÿñÓß~:ýûë—ß—¿®ÿüñÛ×/ó·¯_¦û›cz˧o?ýå–N©=}ûçé—&ýõôí__¿¤fùS³þñ—&?o}}Rž/%}©mºúÚ?ìä­Ç“ª†ÇƒN¿5î~Ò5ÓóGY¿´÷\Ÿ,SëÃÖqi®2–üö½›ÛãqNoéà©yþ·Ž†û$«9Ú€ôÜîámªO²L\V7­‹®ƒ½/âûõH¢¥,¿ÚJ4OÍmùýP§WThù ºæ¡ Ò.~lòk{‚ò¥ÈÈ@^jÓy]õó‹ÊP¶!•·r4 ´HÔݽ&W{(§ÔlìaÐ)䪵£êŒhÿ2­*ɦ¯s•'¥j³Ñˆ©9‹Äù†¬²k2¾ˆV–g™ŒÌp–Ï4Dÿ5äFÌ‹Iüô­¹ÈˆÌG”·ª.äRGS­¯6m¾zÞkŽj×ä­~^ÖߦTí(OdHU÷çKìDÁt©© ÈÓSéêP© UÚöL¡O}}&ºlÇ®_Ï¢„©À8CÝŸ8ê6ý§DÖLäVQJ˜Ç\MÍ*Z+_5føå¸Àöˆ¹ÖX$‚¿î6í²š‚ÅHö·éRn»iæ0]!ö<Ö ªˆ"¨Ÿ²ÎþXðeÑY]稻Y¨F îªËÕÁбöB´¹.«îšYè Þ©–)F—¦e®g·b¿{a1Ù`žCZÙÁU¡OÚ(Ôë²(q•l¯†8‹f7vÚ×:æ câwQ€z€YD¤Ë~î}®Hÿ†3uÅúÎ;ÈgÕÁ#«1¸óG˜ Å|Ä‹z“.uÖ£ F%<3WÌüx &‘ˆ"(76€rËG«²Y»×ô^'"WðEž\«˜%†êíùòfKS1ŒÉ8Ì…ÌÐ ô¢ìE™ž(8©6M0ŸÁ<ãt`x6Ѽìh wŒéú´Òõ;ŒÌ^A-.úææ»°þȲ®p³ÁwAÝ`—|±·Pä…°ñ=,w†ã) -1ÊÎàf±keÓæ×àþª9uV‚7ouÿÙ¨´Î!ÅD‹%êþ øø/£îQ5>®ú Áj"úGv7“ý,|KÇK!†ÜO·ýÛ~Î5(îI(í­NƒÎÔn|PŒ¦¹BïÑW6;½g:*¿bϱøˆ‚„0gTÙüNÞ‰P"Ýj Šh¨%k€œÎ©BbQ­¾îJQŒi…ɶð",•1úÁQ‰^B( Hȼw™xiq§TïnзúøZ`Ž„Íá¯ö ¡G’£u¼? YÉÑ4^ºðÒ€”ÎUI•PB cAÝ`te:X4²5FÇá ”kŠ˜¹#÷áÂléf— ¾;î:bilޏib6„É+«ÈºÙ’º À)BÒ™ðø’0Þt¢KgôsOš1Ø Eb…½3q·C. JÑXòZ_s“G3ñÝJë§Ã­ÈmõÒ2Bë Ð Ê“U…5¨Ú°ÿ0`.$Û00^Mø‚îá¶òI3iÉ{Ê6…ÙGzF¨Ê1,ÿ¸DkUÃxž+𬒬¶ðp_òŠ­€/$2—8YÂZtsŒN³Ïz’‘™æ@ˆ„~´8:cæ°ö ³¬6wÕšr2–{Q:´C%‹ W‡Ú}àP•‘% 2¦.î«f%Mþ‚ÄÂH]u‰änP¨û„SQa`q!äÖLËåž²¬ºcsþy¬&‚(uD=Ì€ Šº “S ÑMÌrMøÙ˜Ö¸Vj²¹–Uk-EuQá”$ìS®:Òúiñ.ÜÓ“[\ ¹8Ðe¶² ³•ezVwh <ÞI¬[¿ˆ) œ˜Là8µvL=¼ ÁxÍÆ‚z?Ë32Å<"ã‚0½{íñù¢ •ª¸Ö¾Ö©¤,é8·ºAœ'ì·íªÀU¥?“…&ÙÚ ¬‚‚Ýnt"üàÂD(‚V¾fb~VgˆýšF"–ÿ—1HX¼âe/¼h’%€kM®Í&ŠkhæCÍXn\ëÞų5 ••r\åa@s~´,ïÖo4ªìLµ-õuƒ)²Ù„avȇH³Ÿ™q”Ò  ±)–QQ9aíù¼ßðc¹ß4U$1¥¨ äsºO[Ñ^Uwc»6Q­´«™“†È~GÐ ŸPü™YËÒÃ"T¿LðBBðEÙo2Ƥ«ÒØÞÛ¹v;®†°µÛLÈ|TQMû‚‹¤LÉÒYGÌKý©±Op”¬¡XJóCö™44âä0£ˆDußTËœ¥¼#•AUšÉ4ùÙðØ!Ÿ´õs#²É«Ç° Ѿ–v>(»ƒFºzkWÀH ¤ J/㺽 xåp£ÂšœŒ0tuÇÊ¢©sÅJù¨Šä{¦iòâïbʶߴÅL ({\ÉpÑ­ŸÝ6 šH²Ç dÑ Bah¢u2˜gx×& ¯âÂûJ û­NÍ Ÿû",ã ÀÊ÷%v¾¯Rk;†ÁÙþÛH0áÐ 0±-ÆNuä@˜÷ å-T’rG D:ۂ톨òþäIˆ÷´kâxÇ{®I¾X aó3g½g IJ-ÔŒ+ÖÀ4?b © ÷Í,Õ]BB@2Îß“ˆh᧤Á`UŠ…®¬AÌZâRß›~¼èÏkŸqFØÌøIöA“9IcÆÞIË[! ‚TBýs‘¼mB!¢þAZ”¯Uí,<›Þ¥4Þß뎛ó¤\ƒ…’H+{&C‡Ž ‘>0¥_µ£g 37àÊr¨­IUš;wÞoª6‘# ¤½±½æ”è«ÝñížÉ¥Î4Êà`ž~¤ó—ÞcT1߃Ãçæ¢ÊŠ­÷3$õq¶Tÿš†ý6Ä:¿Cô ›ßH"òEñ½Ã6i„-–™Š?ëùnÐC`É‘¥{-x(Ͷ‡nÒE›vÐl–^ôâîõ¦Ÿ½ãYEŽH÷²ã­šé½[n!éÑì2q…š*èMr~¯`¬,⟹ÐÛæ¬™îËm÷¥ƒ«>µ‰Ó÷x6d Í/&j[® =ܓ㴺}î¸?@=ª ¿‹”‰#7(¿tƒl¸yá3ât“+ö2æCf‡h¡É\‹lÑ¢v¨Ë^xÅNŒÍ¦cÛ»,§]œÕ»èÃðö1®³SrÀÎôšãCeifšªooõð,\Ï ?½©“*ǽëúbp½ü^\Äéàì9Õîy @+¾²àS‘ëÿ­ ÂêbýºóÒãÍv^¤¹éåQKªÃYÖ‘Þ ¸'×R·œ‡ÜTÅMnÏ›™××à¥úöÚ9‚ÂŒv”eýbWÒdÍ+ÚMà Ø\u1Pö˺O^;Hn[”4‡ªI\Ñ,?%.áɾyO.2¨¹*3à> stream xœ¥XÛŠÜ0 }˜ðs¡YÉŽ–B23 }\Xèô…m™ýÿ‡:“ÈòDJ6´†®âèzt$çjÀ|„M@›»4þ¾}7_>˜ßÇÃ5?ÿ½ý<†—ã!ÝNFlZóòÍ<<µóÿ~˜GÀOæå×ñ€ÐØ|>?| Zð¦GGt!å‡]þÐOG4‰ŽÌoµô÷'’aÇFÎp>k™5¸Ôtô(N¢Köûy-ŸBqá ¶èg;®)æ»Iäóñ{õ– –3EÀÍ‘ecÅãÓ$«¢p0›Œœ£`‘d‘d=ØÙ5¬’#$q0;²ê<:’”^–.àbË9ÄRd±ß‘CÁHX}m®³ã@-ÊN+ެP†°ƒ'‘I›ÁKIÈ›e•ôöh©^qýU/' ‰Î”ðm3þÏ· .\•X L‚êµÄ«cÜE‘~ipÙF•$Q·ÕcƆÛáÉ2ªªû¥sˆ"„¢¬$0PP±&—Aª6ŽyBOeTÔ-ÚUy#•.ûi%µ (ÉÚ@Q’ñÍ„ ŸÀ •èH [¢*SÔÕ±ŽLVt! ˜×Ò:ž23Ð9 Uš…QG L¬î ¢Ñ œH‚z¢÷jäˆ,&ñ^¿Ô ìof•ËsäÔ2ŽqQ|=/§ƒPø¯4¯ì*YÊ,SúE*“6•.ØàVDÜCéÀ°˜}½Rg11UÅ”7óúŠÒ0ÈjH’ I»¶• ã•Z(hRb’wtª’¥B¾w<¨`ÇDï5XÞf™ÇnÓÙD{$/_bà» ‡²Ù–l*sp—É2Ü-|UÈˤ¸o¬$V Mä¢{\ ä2óuVj4˜' ¾[„ä®6¶ÈöÂ^²Õò·I<-IZöæT^-|>;-™›‡ A°Rµ?S¶¤×=Sz$ÇÄëñútVÐÛѹ˲{Ê•¹ÐHØ“àå—.2”\Ë­KÎipÁÃw“ã•§{K½®bd]+xï¾db^! 87Ú>°&…šìîÃ(¸ï.û2ã³S®V{†¥²±ªíœë­ ˆ]£_¿x• –·B¾-ɦ©æ‚Îñ®¨Ü;BÑjx.A[íjº#ñù2ì¥ie‰’×Åô>h|ò4V~LðšS+׳[à*–\ê‹Dî#Bóž¢ãœÃJî2˜·¾«§ »J^eD8õü­Héª>7…ÀŸ‚Ø*Å?^ô°¨]æª/Ksò‚2 9y<ÇÊ›eŽÕ«'xµZäíŒÐgs5ˆÁäxZÓäs>Œ·˜êãá$q<=šÏ{óõõx0æáók2ç?æ¦í/Á¢8endstream endobj 8 0 obj 1034 endobj 9 0 obj << /Type /XObject /Subtype /Image /Width 534 /Height 752 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /DCTDecode /Length 54058 >> stream ÿØÿàJFIFÿÛC    ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀð"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ìd$ß]å啬®ƒ’ù?)‚“#Öoü —ÿŠ¢Oøþ½úÇüä¬èn®u™Ri!Œíû|¶áI/ÙÏNþ•#7²=fÿÀ™øª2=fÿÀ™øªæµ-Féì®ùÞo>TïB¾bÙÁû§Œ dri/u •hoœÀa†iö@ªC’ˆã–Î9ÇM¼g­c¦Èõ›ÿeÿâ¨Èõ›ÿeÿâ«ýeš¥‚ši¤²F1ŒÇåY8Ú;Œæ¬Ù_]Ë©ÉЉï1 Œå•X ÁÃ>ãNôj®G¬ßø/ÿFG¬ßø/ÿIEr=fÿÀ™øª2=fÿÀ™øªJ(¸ ‘ë7þËÿÅQ‘ë7þËÿÅRQEÀ\Y¿ð&_þ*ŒY¿ð&_þ*’Š.äzÍÿ2ÿñTdzÍÿ2ÿñT”Qp#Öoü —ÿŠ£#Öoü —ÿФ¢‹€¹³àL¿üU³àL¿üU%\Èõ›ÿeÿâ¨Èõ›ÿeÿâ©(¢à.G¬ßø/ÿFG¬ßø/ÿIEr=fÿÀ™øª2=fÿÀ™øªJ(¸ ‘ë7þËÿÅQ‘ë7þËÿÅRQEÀ\Y¿ð&_þ*ŒY¿ð&_þ*’Š.äzÍÿ2ÿñTdzÍÿ2ÿñT”Qp#Öoü —ÿŠ£#Öoü —ÿФ¢‹€¹³àL¿üU³àL¿üU%\Èõ›ÿeÿâ¨Èõ›ÿeÿâ©(¢à.G¬ßø/ÿFG¬ßø/ÿIEr=fÿÀ™øª2=fÿÀ™øªJËñqË¥²=¬÷2—BÁë'ð°oàÇ÷ß¡.®G¬ßø/ÿH’ºÜ’J…‰gnw'÷‰õ?sþ·º‚úçûb9%ÔÊô°7DñöT ˜=W“Ï=·Wþ>¿íƒÿèqÐ%ûEæ«~¯©_ͬ0lõû¢¦ûÿÐ_XÿÀ•ÿâ*;ù j¿Kå%cj*ðG¬ÜÆ GcÊxò×k~óì}¨ë`7~ÄÿôÖ?ð%øŠ>ÄÿôÖ?ð%øŠç¯5›´»¸û=Ú…T»£Ùkÿ?0ÿßÁ]5gÇ{,þUÄV7F6#æApAûþÝÆyíÎKÌŸ¶ZÿÏÌ?÷ðQöË_ùù‡þþ Þ7jtï¶¢’¦4)àãÅSûd™- ÒÌÊØe0’žàRGæ­e:‘ƒI”¢Þ¨Íûe¯üüÃÿlµÿŸ˜ïà­TÕqtÜ[¼BB$Ãm,z/Ì£ž+ñ¶µ«Yxšæ+ FHb‰Ê,Àrv…Žz08'Œ[JIUøY2÷w:Ÿ¶ZÿÏÌ?÷ðQöË_ùù‡þþ ó›]{ÄRÁ<±ê÷mQ]·HI#r(úò¯_›ûÇ0/Š5åÛZïåÆ3!=6õÏ_¸>¹oï6z>«?"=ª=7í–¿óóýü}²×þ~aÿ¿‚¼Þxã’HµK¶[uWreè2€g=y õËgï6b_kË·µßËŒfBzmëž¿p}rßÞlŸUŸ{TzoÛ-çæûø(ûe¯üüÃÿy¨ñ/ˆ8ä½ÁÀlŸ—oQ×øG^¿7\¶X¾(×—n5k¿—Ì„ôÛ×=~àú忼Ù>«? ö¨ôß¶ZÿÏÌ?÷ðQöË_ùù‡þþ óxüAâ1lnWT»1Dê…Œ¹ç€Aëþ¯ÿBÏÞ9‰|Q¯.Üj×.1™ é·®zýÁõËy²}V~AíQé¿lµÿŸ˜ïà£í–¿óóýüÊxZÕ¯¼M½ÕýÔðˆß(ÎX(<îŽI眒Ôk)Sqve)]\æ~Ùkÿ?0ÿßÁGÛ-çæûø+¦¢¦Ã¹Ìý²×þ~aÿ¿‚¶ZÿÏÌ?÷ðWME œÏÛ-çæûø(ûe¯üüÃÿtÔQ`¹Ìý²×þ~aÿ¿‚¶ZÿÏÌ?÷ðWME œÏÛ-çæûø(ûe¯üüÃÿtÔQ`¹Ìý²×þ~aÿ¿‚¶ZÿÏÌ?÷ðWME œÏÛ-çæûø(ûe¯üüÃÿtÔQ`¹Ìý²×þ~aÿ¿‚¶ZÿÏÌ?÷ðWMUo\  áIÆH֋Ì?¶ZÿÏÌ?÷ðRÃ4RÝ*T|@ÙÚÀãçJ¸/É‘£ ¥Ô+æ6@9ÁÆ{àþF² ºšßÇ$ŒcŽÑ6!bBå—8Ï­ kkww¬êqÚ]¥¶Å¡ó áñŽF;Ôͧê Ä6¸€‚ß`;sÓ·c¯zÔúü‡µo÷ þOSéìnl”I<ˆª«Õ Aó}k õ½•¼Ë„9®Aý‹«Ðj/üüUغ·ý¢ÿÀ1ÿÅTz¬qi°ëGa4+¢†”B¨ÏZkÝÞÙ^ßM­Úþ8š"æ1dr g8Áèyt«F­ì)EÄ›ûVÿ Ô_ø?øª?±uoú Eÿ€cÿЍ4ý[R’ÚôQn²Á !Wgmêœï-Æ ÷8ük¦­¬EÌì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿâ¨þÅÕ¿è5þþ*·è  ì][þƒQàÿ⨭ú(•‡ü…¯ÿÝOý ëJ³l?ä-þêèOZT©Ýi Îsœç9ã×'?™úš–¢µZB±"5ÉrI…§Ò|¥A2G!Pr eºº9ÎO÷›6%ð·†--šâ]6+¼±,Ü ¼õçî®[ûÍž¨×ƒZàúžzuÖ›SÖ Õf†+•+o&\¢@ÀaFFWwnç=M?YÕl%ÓRæŠôCp¦‘î¼°¬òÄ`ýÜ„À¯Aÿ„OÃQ4JtëpX€œåˆ qÉç„ÿgï6^¾ðêíÆ—ËŒd±é·®O?p}rßÞl×µar³MRk 7‘žÆYC›XÔ¿Ê…â?.âHRœçžjEñ “ÜÊíržh’u¶–E•V$,…S  €ÃåéžF ®é|áÕÛ.—ÉcÓo\ž~àú忼ÙÁþ]¸ÒáùqŒ–=6õÉçî®[ûÍ•ícØ9YçÐë°ù×_i½ˆF×0ÌñÀ&òîT‡\7$ž3¿‘ɧ_x€ˆnLZ…³La)¶æàÈ3"—$p 8ú×~¾ðêíÆ—ËŒd±é·®O?p}rßÞl‹àÿ®Üipü¸ÆK›zäó÷×-ýæÉícØ9Yç_FïÀÅwb9vç)ç;N:õÊõëÎÓì5“aá­NºŽæÏOŽ)£#ä’2¡OSׯ»xçZ³©>y\¨« ¢Š*QEQEQEQEQEQECU–(bYRf'+Wꎧgkv#û]´3ìÎß20ØÏ\g§OóÔ *ÛCÓ­µƒª®·t×Lrå猉÷HÛÓÇl c¯iÎ’x›RhÙYMª`©Èû¶¥wÓ,ÿïÂÿ‡×ÿ­–?±ÚÚ]ÿ¢ÛCøw—\áÓ®1ïþxc4/ùjßîAüž>‘l×L‘j“ÀXçÉI@LJÓÝ þCÚ·û'«m%å€C$kXm9 •ÔJNt¦Õ¾ÊÊvy¾w˜$ò¤Ý€ÿ0òñÛ=+¡Óm¥´Ô®âtöæ8ÝLò4Ÿ9-»‰ÇEàp=jÉÔ FÛr~ÌHÈóY@o¡Šž)b™Ã"H‡£#+¡N2ØÍÅ¡ôQE0 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ¯uüëþÏÿ\Xª÷_À~¿çüÿõÀ~žØÿ?ÓÛ§l|µn?ãéGý0ý?óþp-töÇùþžÝ;cå«qÿJ?éƒÿèqÿŸó€†Uпä=«¹òz{è÷èì¶zŠÅ 9UhƒÀ~€S4/ùjßîAüž§·òÜHÂdÀÝ39WÜ@9)õþ˜Åsו5e5ráÍ«L©6ƒ¨Ü¯—uª+ÄØ«ŒƒŒþµN‘d×­xÑÈÒ³‡*fr…€6ÌíÎçªåÕîšÌÒ¬–è?x…Ã1#½3RÉq©]^\ŧ½¬1Ú°F3ÄÎdr¡°0Ë´G?7SÇÝM§ìЧÍÔtz™+,¸y °£*8qJ4-5dÖ=›TLár˜ÚJ猒3ÅW—V»_2(­Ò[¨d”4KŸ™U7.=ÎèÇâj}òkµ—Ϻµ“nV(^ŒœðèÌHìFqŸJÙÍ:(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@ZÖœç1©Îsž=rsùŸ©©j+]ßd‡ÌûþZîûÝqþ×?Ÿ>µ-D§ý.Až‘¡Æ}Û¶ úžÒÔK»írgîyi½×-ŸoNœúö©h+“ˆÎ?xƒ®?ˆ{óØô2ÔW;¼¡³¯˜ŸÞé¸g§=?^3RÐQ[ÄNsûÇsüGÜÿžÃ –¢¶Ýåý|Çþ÷MÇyéøzqŠ–¢cþ—ÏXÜã>ëÛ?ÐýGyj&Ýö¸ñ÷<·ÏÞë•Ç·¯^};еÑÛi1Î1çã×#˜úŠ–¢ºÝöI¼¿¿å¶ß½×ìóùsé@ÑE]<Æšm’(@#we?ÞãŒöAÇ÷¨kOq´24±’¬~êÏ–ÜòO|þcÓ(wy³îéæ ¿{¦Õõã®zqøæ›{¼Ö¯Òæ#Ô,{ÖucÏ í$ÊE-БºaØââOþ*ªin"ñ–ðnÉnÒ²–-—Ï'®)"ðö‰3XæÞJ»:œzàö­;F°Ó$y-!Úî6–,Iǧ5ÏF„£%.m ”Õ¬d^û^ôxìÛÁ_²ý«òöõYþ-Û³·Ÿ»íM¸‹7w–JöööË-Ø™Cf1"÷ e?ð]EØg}n`x]¬Ã]EaœQn¹Óð"”óÕFB°ïËpG=†ýSbAER¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ª÷_À~¿çüÿõÅŠ¯uüëþÏÿ\Wéíóý=ºvÇËVãþ>”ÓÿÐãÿ?ç×OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8e] þCÚ·û'¤û³jZ+1jðç*Ò1 Ðqô¥Ð¿ä=«¹òzµ¯s–%¸iHºH6«6–ŽGoÇ<×=g¢š¹pæÖÆmÖ®ßD`¸ûFà+,Hãò­k(Ku%ŽõÝ£L˜@S``¹N8ÈÁéè*õ Ë&Yo"fëj©^@Û<šv£¬Ãmp–°–{ƒ4Q¸»"`>fjœ€O§­]Mi)¹n˦B×W*ó$³Â", gæ_FéÏû#Ò–ÊÃì²Ë4—SÝM U2L£8EQŒ“Û<Ô1ëšl©+¥Ãm‰w–18¹ÆS#çãåÏQê)W[±i#7!䯭eR¹8²¿('¡lf¶ Ñ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(•‡ü…¯ÿÝOý ëJ³l?ä-þêèOZT¨ÛiÆ1ŒcãÓú –¡²æÆÜ€î×€AQÇåÅM@(ÿKã¬h3vïê~ƒ¼µ Çô£ýZs‘ž­Û¯çǧzš€"¹ˆ g÷ˆzgø‡±ÿ=ÇQ-CwÄ+À?¼©øÇ¯ÿ¯ÓœTÔTVÃŒ~ñÏLöç¹êe¨m9…¸÷’t ÿôÿõú󚚢aþ—ÇHÜgëßÔ}ijÿè†ú·ç#=W·_Ë^Ô5Et7ZL1œÆÃÎxôÁÏä~†¥¨ox±¸$û¶àãÔñùñ@U=QUìÂ:†Vš Ay‹W)²ÅјædCÕXd€0ͬé±î42Ô,±m’ÞbíŸ1xÁp1žsVuyî †Y#R®OO>[{3ŸÈzñq4ëut²¶VSDJ?•-õœwÖͤ€z2õÚ³«88¢ Òwe­a—yä“oMécóJ¯¤?Ùµ‰,"vhœÇÊÞa^0Ú›'‡ðèV¿&FÀýèàŸÇ§j¹¥è‘i×/qö‰ç•“fé[8\çñ®j4*ÂiÉ«)ÅÆÈÏÕ5BÃT¿–#–$†ÝRNC;²†Ép:õ霑֙6­¯Aj¯si±Mí,¯™„p|¨åf’A ¶1’0xÛ¸‹L¸ºÛs¤· x‘UŸiê¼óƒéLŽ4UˆH˜º(·L+dŽ8<}…v¦ŒÙ¨ FîJ}l`}B‚< øVòò§çS¸d`gŸ^*ÙßÝéò46Vдò¶E‰0‹µçû¨Òîp»Æ3ÇLWbÖV;\5¬fÛºCÜvœ®O^OJlšuŒ±I¶VÏ¿}%!ù'‘Žy$ýM,#û[XŽkQ{o ¤gbÌZ?3,ÎT‘Ï—î^pHÇ=RM#KŽHdM³G€b&XÆIùN8äžžµv˜QHŠ( Š( Š( Š( Š( Š( «ÝúÿŸóÿ×*½×ð¯ùÿ?ýp_§¶?ÏôöéÛ-[øúQÿLÿCüÿœ ]=±þ§·NØùjÜÇÒú`ÿúçüà!•t/ùjßîAüž˜‡T°ÝZsN¡¸‘d´Ÿ‡ëOпä=«¹òzº.žX„±K6öPÛè¹ÚHRz{ûãµsâ7e2àä¯cük»[-¢»ÚPBüÊsúV¥Î<×R2^"[KÔ9grjÛßYÇv–’]À—2 ¤- ÃÔ/SÐþUTaN+ÜÜžæBøzmˆ²ß«›X„vl ÁŒVþoœü‹ÓoCëIJè÷·°]\^Û #Û¹àµh¤ 1;Cy‡åÖůêˆFÒ®ÉïQÔ¯<ò@üE*júc¡tÔlÙU „‰Ô€£'žœŽ}Åor ´U&ÕôŶŽåµ+1­µ%3®×>€çÕÚ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š¥aÿ!kÿ÷SÿBzÒ¬Ûù _ÿºŸúÖ•EjwZBsœÆ§9ÎxõÉÏæ~¦¥¨­I6– rGòIÏÔš–€"Sþ— ÏHÐã>íÛ?Ð}Oij%'ír 6<´Á ã«tçü=:ñ‰h+“ˆÎ?xƒ®?ˆ{óØô2ÔW$ˆ†ÐÄù‰÷A'ïB8õöõéRÐQ[ÄNsûÇsüGÜÿžÃ –¢¶$Äw̼?xú“ǧ·§J–¢cþ—ÏXÜã>ëÛ?ÐýGyj&'íqŒ6<·Éãªõçü=zs j+£¶Òcœb69Î1Ç®F?1õ-EtH´˜¨bDm€€’xí‚~„P´QEQEE>ðcdF}¬IU=~Sî\uÏõ•Æqm)Æz篿°ÿ¾‡¾%¢€1,ÞKˆHÕƒÆX±ÀbÙ 9ÉúçœÔòÏ¥§ÛRìȱ ´_9 (þ'8ëÚ¤“D¿Gae¨¬P“•Fˆ1×èA/‡µ•òîµPñ6ªÂ# ã?€¯:+E£¡Î®­<ñý–ÚÚ_&K¹¼¯7h%Öb@lœ|Ø;PûñSwS,„E3T*¾fÐFB‘23ÅmÑ[‘ærƒÃú’+4"ÝÈÞË#D¬¨%Ñ„ í9 =1ŽÝR‚r@ô¥¢ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Z¶Œc¨Æ1Ž=01ù ©j"­cnP‚¦5#1 þCè*j‰Gú\‡cAœ{·|Sôå¨P¯Û¥Â4'×lvú÷?AÞjŠäf 1ŸÞ!éŸâÇü÷Dµ ÙQ —#dcŸ]ãÿXê& ¢¶ˆŒc÷Žzcø°ÿ=ÏS-ChTÂÅÇ™ ã×yÏaßÿÖz ª&éqœtÆqî½ñýGÐö–¡r¿nˆ7Ü\esÛéÜ}` « Ä:±‚úiàÅ ¨q 1HÇcm <õ»Toì–UžVœ¢¼;$FÙåºÜ6å<|Ç>Ôáid--ܱÕÔMnQÁËç+°÷;§QQË(¹¾šS21 '  .q{·\sëÒ¯ÛÚù3I+O,ÎêªKí8û xÖn£c¨ æ¹Ó¼†ó %$cîôÇû£õ®|Lg(Z”ÚOQdMJ(À·¸Dà ªòïQÏOõy#ñÍ:mQæð¬ú¾c@î¼gk.GãȪMmâ3’ÂÞnÇ5~ËIòü84«™Í#¼|¸’qœúÔÐUS|ãŸ.–Û[Š[ų–ÖæÞᘒ„èU˜6UˆÁØÃ×#¥R¸ñ èö»Gm·œ \«6yç˜ó€úçÑÐP·œÚ…ã^V[£åïP¸Ù³fþÿJbøfÇI-Ä¡ƒÞãæÏ™ž€ÏVéí]FH—LÔ.o5;¤šÚ{XãŠ&H¦Ù»æ/“ò“ׂ{t­Z£a¦ýŠif{Ë›©eUFyög œ`*üF¯S`QE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ¯uüëþÏÿ\Xª÷_À~¿çüÿõÀ~žØÿ?ÓÛ§l|µn?ãéGý0ý?óþp-töÇùþžÝ;cå«qÿJ?éƒÿèqÿŸó€†Uпä=«¹òzŠÏX¶Ó£{{™¼¹U†å*{"æ K¡È{Vÿräõ¤Òï_=m£’220räz…Çéœþž€ÓµM&òmBâad×´Áö+ .¹€‘É¢7_OzßK‹3:E°Ç#ä ’MØëŒš¹WBš§ªwå}-c/A³k;{öo²C,Åá¶ùr¸RTd‚p9­J(­ˆ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@ZÖœç1©Îsž=rsùŸ©©j+SºÒœæ59ÎsÇ®N3õ5-D§ý.Až‘¡Æ}Û¶ úžÒÔJÒäégÝ»gú©í-Erq9ÇïuÇñqþ{†ZŠäâ sÞ ëâãüö= ´TVÇ1œþñÇ\ÿ÷?ç°è%¨­Žb'9ý㎹þ#îÏaÐKQ1ÿKŒg¬nqŸuíŸè~£¼µô¸ÆzÆç÷^Ùþ‡ê;€KQ]¶“ã±ÎqŽ=r1ù¨©j+£¶Òcœb69Î1Ç®F?1õ›uÎéâÎrãŒg?ú ~GÒ¨Kr³ÝËù’˜Øª¬2ìà’NG98ëøu­JÂÔ#¿¶ÔžæÒÐܬ«ü.©ÂŽÿîþµÏ‰Sp÷ )Úú“=Æ© cˇÍÁ #=ØI×ßm[S¶}$ê{ˆ·XÚF'¨9þF±ZëZlÄšNõËØæ´45—ÃI§_. Æë"©èžÿMUß™\ºu=Fvº¼ÓbŠÜÙ[ΪX¹v€ž ÏzeÖ¹$w‹ioonÒ<Ím=Ï”ŽT.@!XîË`.9Ú}*ÄÍ–Ú•ô7VÍ‹jÛìfŒ³n œg QÍBt›ÄÓ"²†öÝÆÆ[µZy«9c’ÅC.9Ï#ž•ÔÌ‘­;D"ynTLçiî3ÞPÙÛ­”¨ÌË k-Ô€1ÍMMî(¢Š@QEQEQEQEQEQEQEQE^ëø×üÿŸþ¸±Uî¿€ýÏùÿë€ ý=±þ§·NØùjÜÇÒú`ÿúçüàZéíóý=ºvÇËVãþ>”ÓÿÐãÿ?ç «¡È{VÿräôÛ›·ÛzmŒŠBâ]¤¨ ¼sÓœþ9§h_òտ܃ù=[¸¶Ó¥f¸›NYòf(¤ë×8÷Ç¿NkŸINÞõ‹„­} nóNû†ÌÚ,à†-¡³½zcœõ¦ëoþÓ¼û+j29„~Xš5„y\mÆc“,}˜^Û6öz#Ì>Í“H¼€›Iõ©UB—³O[„å~† Э¾¥ W-©µ¸E04O;ƒ!c»Ì)Ï÷q»åÆqÞ·¨¢·3 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Z¶Œc¨Æ1Ž=01ù ©j+Q¶ÒŒb5Æ1Ǧ?!ô-D£ý.Cޱ Î=Û¾?©úòÔJ?Òä8ë ãÝ»ãúŸ ï-Er3ÏïôÏñcþ{Ž¢ZŠäf 1ŸÞ!éŸâÇü÷D´TVÃŒ~ñÏLöç¹êe¨­†"#ý㞘þ#ì?ÏsÔ€KQ0ÿKŒã¤n3uïê>‡´µô¸Î:Fã8÷^øþ£è{KT®¤žY¦³†œy@³<›~öáÓk÷{ÕÚËÔìæi$¸°³½ƒËOÝÜ ÛYwòcdá¾´nÞâg¸– áŽ6DW$.bøݨ..‰¸’1,ÑùghXP;7’x%¥¿µE¹ÿPZe^ŸwžzŽžµŒÚ^«%â_¼:zÍ ˆÇn&b‡h‘Oͳ#ýfGÊzcÞ¤°Òõ:E’$´œÌ„N¯+ ‹23á>S¸|ä`íû£×ަdkÚßYÞ4‹iwíÛ Š@Å¡ÇN†¬V>§^X àE!8aŽc0@3œ;(lsÂ’ØìqÅlPEPEPEPEPEPEPEPEPEPUî¿€ýÏùÿë‹^ëø×üÿŸþ¸¯ÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþήžØÿ?ÓÛ§l|µn?ãéGý0ý?óþpʺü‡µo÷ þORé­¶ŠÓ4™]ª»deÀا±µ…ÿ!í[ýÈ?“Ô—ZN5ÃÉ4r͆e.?QÇ_Ö¹±K4íbá+]kÍmu“ÏwFí+¶ßAê} VÖ®§°Õ醴½1ÊÖÐl‰ÊÛ½ƒ¾vòƒœòrAV’xcIWWò°r79"¶jèÒ”æw¤žÇ.³{”/&·hëºL5¥Ä2K.áAhÕ‚NT8Æ =v´bXÕ‘¯$i ÁþÎáÕ(˜` ŽÝqÇ®knŠè (¢Š@QEQEQEQEQEQEQEQER°ÿµÿû©ÿ¡=iVm‡ü…¯ÿÝOý ëJ€!² ¶6á #P1ÓúŸæ~¦¦¨­NëHNs˜Ôç9Ϲ9üÏÔÔ´ ût¤¸Æ€úã-Žÿ^Ãê{MQ)ÿKg¤hqŸvíŸè>§´´ ØS ‡dgŸ]ãÇÿQèf¨®N"8ýâ¸þ!î?ÏcÐË@ChBÁÇ™!ã×yÏsßÿÔ: ª+c˜‰Îx㮈ûŸóØtÔ.íÑá댮{ý;¨ï5DÇý.1ž±¹Æ}×¶¡úŽàÔWGm¤Ç8Älsœc\Œ~cê*ZŠèí´˜çŽsŒqë‘Ì}EKEPPœË8Îq s•}Î?O§r—3y*qºFÚ¤ôäþÿõºÓQI¦%›) Ç zöôO’sõèDZx‘<Ö“».Í€P¯B~Ÿ™=ÍgU¸Á¸îTrI’k$móËo:‘÷¢tB>¡›õÍY°ÔmïÕÌ óFpÊHÈü‰{ŠÉoéáŽ.²3ÇÊßáQèש¨xç™ã[FVm¤|Â@çÚ¹¨Vœ¤¢Í%•Íû»”´d1 "F6ú³©©«™Ô4©¦Õä—û0O+\Ã,7¥ù1©\¨ÉÜ9 pzçŠÏ±ðå¦ˋKÃ+4BáœÛySâE,ÙL;œrüàžæ»V¦,í¨®A¼=<0âÚÅB‘ –5/Y#Îzya€€8¡¹Ñ.d€yZ;üÙÞÍÄ- ¸`ƒçMÃ!˜Û+“×$P€íh¤\…ÆqÎ)h¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ª÷_À~¿çüÿõÅŠ©|v€ØÎÕ$rGuô¡OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8 .éñþÓ°ü«&ÚâY|K¹òã´M‰“…Ë.qùÈzTŒ·¡È{Vÿräõ>žÆæÉD“ÈŠª±íP¤±O9֠пä=«¹òzŠ]7ΖFµ:¢E½†"d vœdç·é\øŠR©g±p’W¸º¬qi°ëGa4+¢†”B¨ÏZµwª][ëi§ …xäÚ~@3¹Xg–;NÞŸÅýÞh&×"ÚòïRR@"9ÜbAœã ‘ü9Ç^ ìk¢kKgff·‰‹º»€îeÆÒ}ÆlUP§8'ÌÂrOc—mRø\Ú_É%‘k›Sä F$‘½·|ØÈè8íž/éjSÝ9$´K¨ä‘Zá¡c…p©¼þðgæ8Ú}xÔM/NC1K U3†âfzîãœ÷Í#é:cÚ%£éÖmܘT¢ŸP¸Àê:è3)iÚ…ôº¬–×¾LjD†$X›çU`7 9î¤+CÔìÕk}>ÆÒi&µ³·†Y~ûÇ«?ÔÍY Š( Š( Š( Š( Š( Š( Š( Š(  Vò¿ÿu?ô'­*Ͱÿµÿû©ÿ¡=iPV ‹HC$F¹.I'ŽùçêKQZ¶Œc¨Æ1Ž=01ù ©h%ír¶<´À$ã«tãü}:q™j%éruqîÝñýOÐw–€"¹Ä6–ÌOºH?xzǯ·§Z–¢¹ˆ g÷ˆzgø‡±ÿ=ÇQ-°"#¸±>cýâIûÇÔ==½zÔµ°ÄDc¼sÓÄ}‡ùîz j&íqœ¶<·Èãªõãü}zó‰j&éqœtÆqî½ñýGÐö–¢ºÚL°&6ÁBAvÀ'?@jZŠèn´˜c9†1œñ郟Èý KEPP‚%Ÿ%ˆ2 dœ•zqÓéžsôÄ¢4¨fsµTð Æy>˜˜‘±šfÈ<ÀH >nÕ}±Ôõ<ô?]Ae¾|­±ŽIÚ1û²È¿êßLgVNrEAsI"È™±qfFCB†Qô8\ƒøU‹Ií§Fkb¸V*ÃnÒìAäVC]èÊH"Ãd¨tyà“Än¶mˆÚË1»Ì gñúW5 Sœ”Y¤©Ù\é)²H‘FÒJꈣ,Ìpõ&¹›”ÔŤ»º†!,~J¥¬òFÑàdGòÆNá—\޹Æ1Ûß\ØjVÓ.¡$Mm'ØC4ŠÌ™<9Îwç ÎÜwÝ]½ ¬uôW©zuehîõ ŸfWµº“tx Ûö‚NàL‹¸uÎ1‡›mFÚÊÕÒ]QÌ֊ן¼‘ÜñîÚÝm¥øP ú@Ž¢;»yg’•L±’:'ë÷—Ÿzš¸¨­ï>Õ"ØV+InÜæPåw@ %þn›úòjÍÌsZÜI ÓêÇLŽI64/;¾í‘•Ë&\¯2sœgƒÐQÒáÔë(ªZ+¼š%„’33µ¼e™‰$’£’M]¦Õ„ÕŠ(¤0¢Š(¢Š(¢Š(¢Š(¢Š(ªz‡Üÿ€ý jåSÔ>çüÿèKI™YV?ò4j_õêŸú­Zʱÿ‘£Rÿ¯TÿÐ…$3CBÿö­þäÉê–©ì²k«\X©—ÉýÔFOšK‡ÌãÉÏ_\UÝ þCÚ·û'ª—P¼·R·’_kº‡Šêî,ìpDk‚AcëõªM­P+_SÊ ›[‚[½Z}Ií_>)¡e¸€tÉêê2AÁÈÍýרíL¢?1Ë*"g™ˆØdŽk³±ioSËŽ%™J13^ÜÈâ1";mYr‹Èö®†}:Òá§i¢ÜÓ¢Ç!ÜFB’W<I9ÕN\ÎâZ-LyuKÛ;»¦¹Š;Ë„Gn³ÈêI2gnØËž· Í,^$’W´ÅŠÄ“à3Ï+F7o(Q L3 ´í$cޏ¾t;¸"ä·¼7r™7c»pûÍß½ ¡iÈÑ•ŠPž|›æ-ó.ì7$žA©>ßÄWw.‘G§À'‘¬/tUãʳ~ñJnC…ô ç‚E6´0¬ŸbVd..cG‘Ú-®T‘¶20ppX¦qõŹ<9dÍ–÷("}ÄýªRäe våvp*i4 2DThdaUžE2OφùÎI9lœ’iƒ3%Ô5c«ùqÅÆ—Æ8‡Ú nAl7ÉÓœçæ9íÆksM»kÛ5™â>æG@Û€eb§##ÐSF™f/¾Ú#a>íÙ6ÝÛvçnvçoÅO[Æc…v©fldžX’RitZ(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Ùqcn÷kÈÇ ãò⦨­NëHNs˜Ôç9Ϲ9üÏÔÔ´ Çô§#ýZqž­ß¯çǧzš¢Sþ— ÏHÐã>íÛ?Ð}Oih¾a^@ýä}@?Æ=ý~œâ¦¨®N"8ýâ¸þ!î?ÏcÐË@CiÄ-È?¼“ øÏ§ÿ¯×œÔÕ±ÌDç?¼q×?Ä}Ïùì: jÿèŽGú·ã=W¿_Ë^Õ5DÇý.1ž±¹Æ}×¶¡úŽàÔ7¼ØÜ@ýÛr@ qèxüø©ª+£¶Òcœb69Î1Ç®F?1õ-6Yc†3$Ò,h:³øÓªž¨Ê–aÝ‚ªÍ$œ<Å Û_Y™æ ylÆIÀ2~UŽO#¿=ºb¬Ýy^IYH¯òìÆwJç-g¼77k{ªØÜ¤—˜R‚Gî¹_Þ6ÕÈo—Î[88­iî ¶†F–2UÝB9òÛžIïŸÌzsYòAȨG™Øa´Ñ¶ÜØ[Û2<Р7ЂE_°¶°‰ š|p~ EŒÄUb–èHÝ0ìqq'ÿU4·x‚Kx7d·iYKˉ ç“×ÏGÏ%\¡es~Šäµ ëø¯õ!it-Ä ,ØXPï*à6FHùŽ{ã¸À¦ê­õ°’Ìêf9’v q4‘BFØIl¿($¾½.eÔëè®:=væg·’mL[\<–Â;#z8BÍóÇ–a•#}A¨mu­RK;‰eÖtȤ1©xäº]ÖÌ]A| cêGÏ¿o^rì S·ª÷–Wê«}gor¨r¢h•ŸlН ÝÍ&)ÚY¥ÜX % ¹€bÌ)ãƒZ˜J(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ §¨}ÏøÿЖ®U=CîÀþ„´˜••cÿ#F¥ÿ^©ÿ¡ Õ¬«ù5/úõOýRC44/ùjßîAüžªêZÄ.±éw–vêÒ2qŸšGÂã IáNzc¯@jÖ…ÿ!í[ýÈ?“Õ+ÇoµJ¾uÔ[d`DSÚmlJέ‰ ‚ÞÝRvÕµõ3­gÕîu«Yµ-JÒåW3dÌá4Hw~Y[¡óЊí¯.’ÎÙ§3@ ƒ,ÌNrHËÙÙ<׋<)w;ù‹½ž[]ª ±»±€I>Xëšè®´äº3y“Ί€~#e$‡QŽ$zçªræwJÄ­µ!:ÂÆ’ý¦ÊêÞHâóDO°³Œã µˆ'8ïüB¡þߊY$Xa˜$W˜ª2nÞªW÷)縣=í-dû1ººžâKw.öýðÛT ô¨ªòx~Þkãwqqq4€›Â|Š>ÐB‚W pÄûTŒþHFÆk áªÚŸ¾•AvG.§æŠy×ÓN½k•fl¢=èI;¶ã ½ž~µRÃ@ºjogaml¡m¢Y„›@u`3å©äQÉcïë~ãEŠi上îêÚy‰’"¹Ã*©\2‘‘OLäphþ¿Ëþu"oY yî¶MöXBæsµQ‹*,:ïœÎH«ZF«m«Ú´ö§„rŒ7£í8ª§‚:L]Ñ,e´ˆËnÈêQ°c*)Sí°sïVí ’Þ"’ÝÍtÙÎùBôùGéO@'¢Š)QEQEQEQEQEQEJÃþB×ÿî§þ„õ¥Y¶ò¿ÿu?ô'­*Š×wÙ!ó>ÿ–»¾÷\µÏçÏ­KQZ¶Œc¨Æ1Ž=01ù ©h%Ýö¹3÷<´ÇÞë–Ï·§N}{Tµô¹:ƃ8÷nøþ§è;Ë@\îò†Î¾b{¦ážœôü=xÍKQ\ŒÄ3ûÄ=3üCØÿžã¨–€ ŠÛw”wõóûÝ7uç§áéÆ*ZŠØb"1Þ9éâ>Ãü÷=Hµnû\xûž[çïuÊãÛׯ>êZ‰‡ú\g#qœ{¯|Qô=€%¨®·}’o/ïùm·ïuÇû<þ\úTµÐÝi0Æs c9ãÓ?‘ú–Š( ãûòðGÏÜ“Ÿ”tÏOÃÇ4ËØ­æµxî—1£ùcÞ‘<Åšm‘©@I'oeÝçŒ÷=Ï÷ijóÜA 2²F¥\žž|¶ög?õã:²äƒ‘QWv*Eáíf(±Í¼ •vu8õÁíZ:va¦HòZCµÜm,X“Nj ­a—yä“oMécóJ¯¤?Ùµ‰,"vhœÇÊÞa^0Ú¹èâ!)(ÛRåkÜÞ¢¹£yw­}ic%¬RI4“.¸ÂE_ïuÏt55®³syo&¡¾ K;x•åŽHZIcC ˜ `çðìés#R]:ÚkÄ»—Îi‚ªg,ÐùyÛŸ|uæ­×{«ê/ò_À#žÔ™Såò‰ ¸ÈI\»×p<ôz}gPK£ÂÃ4ÀCGË •Wp•_ku9RŽàަÀuW05½V+{Y'û5ôñmÔBÌè¿1ÜwÞgøzc¾kcI¸»›íq^¼2Io?—¾Ìa†Õn…›ûÞ´ìú(¢Q@Q@Q@Q@Q@Q@SÔ>çüÿèKW*ž¡÷?àÿBZL Êʱÿ‘£Rÿ¯TÿÐ…jÖUü—ýz§þ„)!šü‡µo÷ þOPÞê:­¡1éšu½ÒïrL’*aÚfU\³¸8Æyw©´/ùjßîAüžª^,Ïrv‡O.mÀI¥Ë6evWVV^ÍüûU'mmpV¾¥(5 nã_¶’þÎÈ‘$âxãe$Œy‡#Ôë]…åÜVæ{—)`¹ XäœÏR+“µ±h¯b‘VBLŠqé²Â£2ÂÄ’ÌÀ±À·µ‹KëˆÛ쳡ÌãxÁ•“,Ç[Œq‘÷xëU&œ½ÕdJ½µ»§M$qG,¦Wb¢3ÁÎå+•Æå<ÁÏJüA§ýžya‘ßÊMüà VÆàBËž¬ E–Žðjqr²Ï2¸—d{ç`8 îs“ôª:-äVMÈoX[5°DXü¤le¤%¾lm^T¡Í$3\jö&á 32•Ý—hØG•ûÀ9I9ä`ú¬úý¨{Q7l—˜÷I””¶@)’8ôê{ª¾€\Ü1[æB_ìcí ¿9Ä»½IþœUưÔe[fžþݧ¶›ÌG[RªFÒ¤ÞyÁ<‚>”´QEQEQEQEQEQEQEQER°ÿµÿû©ÿ¡=iVm‡ü…¯ÿÝOý ëJ€!²æÆÜ€î×€AQÇåÅMQZÖœç1©Îsž=rsùŸ©©hÿéFú´ç#=[·_ÏNõ5D§ý.Až‘¡Æ}Û¶ úžÒÐ7|B¼ûÈú?Œzÿúý9ÅMQ\œDqûÄqüCܞǡ–€ †Ó˜[€?y'BñŸOÿ_¯9©ª+c˜‰Îx㮈ûŸóØtÔ/ÿÑ õoÎFz¯n¿—½ªj‰ú\c=csŒû¯lÿCõÀ%¨ox±¸$û¶àãÔñùñSTWGm¤Ç8Älsœc\Œ~cê(Z(¢€!ƒýuÏ~ðt çä^¸éøóøb™¨ZÃwhñNÛÞ6ñ×?LÓÕ¤IdýÔŒÁ€0£»}OtÈŽèe[x–êæE·M0 ¦*«I$i‚ŒÁ²ñ«)öÍX‡_g³½™í=œ&GA.A`ΤŽ™N¸ïÐSÔ º+—Õ¼C ûe¤Qa R¬WP´‡¨IØ‚8rA:ã§ Š( Š( Š( Š( Š( Š( ©êsþô%«•OPûŸðÿ¡-&eeXÿÈÑ©תèBµk*ÇþFKþ½SÿBÍ þCÚ·û'¬)×Å~Pº´ko±R²Ü]ºž@Î~pÍšÝпä=«¹òzÏ:¤rè1iòiÚÒKR².#(e9 ŒýpAŠRqWJþ¢3µCâ[]ãPJm–#"M­ÊÛX~õÿ–g¡3sÀ-ØC«Ú=üöRÏWɱ#iFùÐÙ ×¹ü«“½¸|y£XéšÓÍ2»ö….͸€9Ú2N>䜚޸Òo'¼¸B–Ëk5Üw>p™ÀœmÛŽ©Œîèh»{©5õ¼Q#‰#0€H£p$ ŒžG#§¯ªM¯Ú-µ‹<-Íàˆ­±˜Ã2SŒžÝª€Ñu9Î9¾Æ‰gD¬’3¼m¸‚£!㟭-¶‹¨ÛE²‹6ˆÉo,’—`àÆo#äàäuÆ;ÓVü@Ö½Õml/"†òh`ŽHÙüÙeF9õÝúTͨX­ÚZ5帹q•„Ê»Øz…ÎMg]Zj²]Er°ØK"Ç4$<¬€+0*GÊÙ;TdqÍR]PIm"óİZ´\u"aSnG”ÒN ÜI<ãµ%æ ÛÓu;=N'’ÎdFí…`JHçã8Èö«•GK·¸´Šhgó¤xÙ’ÊÌ[GgM^ Š( Š( Š( Š( Š( Š( Š(  Vò¿ÿu?ô'­*Ͱÿµÿû©ÿ¡=iPV¤›HKƹ#Žù$çêMKQZ¶Œc¨Æ1Ž=01ù ©h%'ír 6<´Á ã«tçü=:ñ‰j%éruqîÝñýOÐw–€"¹$D6†'ÌOº ?xzǯ·¯J–¢¹ˆ g÷ˆzgø‡±ÿ=ÇQ-±&#¸0>cýàAûÇÔž==½:Tµ°ÄDc¼sÓÄ}‡ùîz j&'íqŒ6<·Éãªõçü=zs™j&éqœtÆqî½ñýGÐö–¢º$ZLT1"6À@Iÿ6ÛÜ»e,Sa=»Å\¢€3í´k iÖx㕦R’Y䑸 ,dz7çL›@Ó'Ýæ@à0`á'‘C‚KÀ0ÝË3œgŠÓ¢€3@Ó$‘ÞHdmÅŽÓ<›`Cm]Ø\î=ëZtQ@Q@Q@Q@Q@Q@Q@SÔ>çüÿèKW*ž¡÷?àÿBZL Êʱÿ‘£Rÿ¯TÿÐ…jÖUü—ýz§þ„)!šü‡µo÷ þOUõkKÒØÿjOz²;HãË™€Ú$+€7no¡«ü‡µo÷ þOQO-ÔsŸ³CtËçf‚XW;'”`î§Óõ•–à•ÙGNñ]¥æ³:C\MUó…ß”TÈÎNrëߨޮ ”žK„@ÀÁ'–Ùîv†ãða\ª%ûêÍx·4}ª÷ ožâÜ…ù³÷ç à0›­&iõyÝ4Ò³5ÜrÇ~Ja# ”|ÛÆpÃÇ5Råæ÷v%mvt²È±&ö F@ùT±çéüê·öŒ?`·¼Û'—pc 027y÷®ìœé§ÄÚ|‘}Ž‰Ù¥Œ‡"H‰+†'ByÁö¨àÑ®Q­„úP–áÙ’è´gÉDNáÈc…9ëšI~c; ‚Òå.á2Æ(wO›®UŠŸÔV½ew©,t³,±™UcvŠX‡Ì³†*y ¡Ü¹=z,tf¶¹´ºû"%Ⱥ™§”XÆÛÈõ#%xý):(¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Ùkr„1©éŒ}òASTV§u¤'9Ìjsœç\œþgêjZ… ýºPÜ#B}q–Ço¯sô樔ÿ¥È3Ò48Ï»vÏôSÚZ†ì¨…K‘21Ï®ñŽÇ¿ÿ¬uTW'œ~ñ\÷ç±èe ¡´*ab„cÌqë¼ç°ïÿë=LÕ±ÌDç?¼q×?Ä}Ïùì: j+öè#qÈõÆW=¾ÇÐöš¢cþ—ÏXÜã>ëÛ?ÐýGp jݹ%ÔwR@ÞX ‚H\‘’ÊqÔóW*+£¶Òcœb69Î1Ç®F?1õË{_&i%iå™ÝUI}£gtïÍÔlu|×:wÞbᄤŒ}Þ˜ÿt~µµED鯢´‘Q“ŽÇ5äx…É 4òQ†@v8#ôüëKMÒÄ>M2ð‰’M¤Œî$œwïVÒhÖi•åPL€_ÙG©îG§QÇ90__À‘Ƕt+#Å'h]Ücþøpk5N¹$>iMØgöA’ØÛ^j7wp³)d˜E†Qü'j ©ã>¸ÇBAŠm ­¢€ÝݪÅÃÊKFØùTð00zñÔó—n¼³oêåee”}Fd~tý;P–k—´¼ŒGpªd]¸Ã&ìg‚psÛ5P®¤íÔNCu +é¥Ý\ÁçB!™bÙ‰g’¤¼zO¶Ò#ƒSmAî'žby?v…·m(b3Óq8¦Í¨^=Üði¶Q\ bÍ-Ç—óÕ¶NëÈç®#Ÿ\BìÖÌÏ’¬‘«e‚¢–ÈõÈÛÇûBµ&Ý z*Ž“{q}oçMªÆÀ¤¶¹ó‘Ç9çjò1î=êõQEQEQEQEQEQEQEQEOPûŸðÿ¡-\ªz‡Üÿ€ý i03+*ÇþFKþ½SÿB«YV?ò4j_õêŸú¤†hh_òտ܃ù=1m4§g»‘áãIeU¶‰Ü—ç 9à'±§è_òտ܃ù=T»´F°†8`™LðE#K ”p¤d×%x$òF=­ “Ñ‘6ÒÐm.ÒþÝ­¬£»‚CïÒ(…žBŠxÚß|`ü§ò"ºX§Šg•#l´/±Æãò"¹E±‚ßKÕã6×6‘ÆÒ4¬Në¤f?:/$òq׎€ šx§þغû(Ôí¯#d J°¶ rOú³Àn¼ç¢i)Y.êçO,±Â›åuEÈcŽOT_m·û,W^gîfÙ±¶žw޼äW6n5 ãÓâŽ=DÃü÷=Hµô¸ÆzÆç÷^Ùþ‡ê;ËQ0ÿKŒã¤n3uïê>‡°µÑÛi1Î1çã×#˜úŠ–¢º­&ÎcaŒgÅSŸËÿ­6Ÿ¨‹·xd‰ 9ØÀüËœnãð®z4è©'Ë“•µØŠm>õ/'ŸN¿Ž¹ÃJ’Û™pÀcrá—uÈàq×.m,Bêö““C±>@B?Bþù ƒìûѪjñéeLö·#0’=„eT¶ÞXáOl{Ò&·i$Ö1(“}ê–Qò ;¹ã¡ù» …Ótémn®®îe‚K‹¡Ì”íÎ ˜–ç®z;Vfͯé1Y}°jÒ[‰V$s!Ub@äçÉö©Æ©§ž¨Z™cO1ÓÎ]ʸÎâ3ÀÁûк*(®mæ·7ÏŒüèÁ—Ž#Ó©ÚëvrßI2ÚÄX©ûK*G¯8è3ô  *‡öÎöÛkQw =ÜfHH‘HpsÎsÆ= G.¯,zˆ²Eó³ÊêÐíeÜÉœr;gÚ€4èªi«i’,í£hÂÛýqY”ù_ïsÇCÖ£ƒX³žy\@mÕ#dœL 9veWy&€4(ªºüf›q}rÀE<Ÿ@3ÜžÖ³´ïGvGöDA’<Ðݬ±(MŸÅýþsŒcÓšÛ¢©6±¥­´w-©Yˆ%m±Êg]®}Î «´QEQEQEU=CîÀþ„µr©êsþô%¤À̬«ù5/úõOýV­eXÿÈÑ©תèB’¡¡È{Vÿräõ]tËtR?´šÙC2¤o¨\‚X¨ÿ–ÃûµcBÿö­þäÉë+ZGšä&¨Ö›·…)=Ù‡÷FâMäÃv6ƒƒéžHÁ¥n •Ý‹ šl:­µ­ÕÔ·[Ù$Œ¥íÄŠ®mÜ¥Øg^åxî:Êó­" *b?ìÈ­#~’ k³8e6ÛO$ã«ÙÆp3½u©ê âV¶[Û;xÒTT·šáci€I c%ŽKC‘‚89©$¥dîJwW:V‘‘]ÕY΂ÇÀõàuq×ÿh²ŠfÕæèy-£ˆ¶o&L®Ý»¸<|Äô©Ž±w–kmfnK…–ÙÕ [¢ïÚìo™$sÒ¤gcEq­ß›x–=U##«^O<(…€L*ʱ²09cÊ«qÛÛQ“I8¹‡íI /<± É9Á‘I Ä}9  "0ê]@%sÈ¡Çà*uq³ê)·Z뚢޴ð¢/2“¹ÂŒ}ÒsïIo®^¼–>~¢€¾Ê€ÆÒJ|ÖRÅYAdÂõLÉÛŽ€ÄÛ듹‰nuôUY®Q hS(çÅF9 ò¸Èõ9Í%Þ½¬e/•d‰^EidŽ1wvU|¶.J®NÒƒAç‡`z«HˆÈ®ê¬ç ÁcŒàzð :¸ößÄoj’Å3_—팲)·ûÊ çÛ'#Zè´i¦›NV¸Ë"I$eȶ×eÆp;Rép/QEQEQEQEQEJÃþB×ÿî§þ„õ¥Y¶ò¿ÿu?ô'­*ŠÔm´„cF1ŒqéÈ}KPÙ[p€¨éŒ}Oó?SSPJ?Òä8ë ãÝ»ãúŸ ï-B~Ý)n1 >¸Ëc¿×°úžÓPW#1ŒþñLÿö?ç¸ê%¨n˜T8ó#<úïî;ÿúC5°ÄDc¼sÓÄ}‡ùîz™j@¢<É»Î{žÿþ¡ÐMQ0ÿKŒã¤n3uïê>‡´µ …ûtD¸Fàzã+žÿNÇê;€MQ] Ö“ g1°Æ3ž=0sù¡©j•ìÛüë$µ–bÑ|ÛvàÈË)ìzPÚ¯}“[m‡iq"8 pÖ ŒàúQouçM$M°º*±´äãî“ýÓQ\^l‘ÔM +-*ç$€xäv?ÏÓ˜œãy &ö3m4¬î%–ÓL°¶i¦ŽFxØeJeWŽÌã=I5g[³À=­ºîŒžFpP¯øïà=¨mvÞ$Ìê88-¨ã®2íØü3W®/!ƒO’ô’ðÇ“äÁ$ž*_%X¸Ü¥Í™†Úón;l/ñž?sF‰$×zóݵ´ñF¶Æ2eM¹c&î? Û‚ö+‹©mÑd«1d+Á,8Ï?ÂLf¬Ötð°§.dØ:—V±‰®iÚ†¨Æ[hàEr’X³³FWváGÌyÉéÓž"Ô<3ë0µÆnd‘å.IÛº7\(ôÜ属¬ÞµÐQ]$\ç!ÑoÒR †;²ðº—Ô&¸yo»ºå^™ëU¤ðÕÔ‚ê9"…ĦgŽV¿›ÒãÉÆÏâ#=úãçüöµ°"#¸±>cýâIûÇÔ==½zеô¸ÆzÆç÷^Ùþ‡ê;ËQ0?kŒå±å¾@'W¯ÏãëלKY:•¸{™dš¦ƒÊC¾ÞçÉ*T¾rC©ÆéùVµGpYmå(H`„ŒuÎ>‡ù¡  6ee4WqD#TS5Áw'/œ¶òOßî~P»¼‡KÖ&{‡hÒ@JËg;;þŽØúWEMdGûê­õ¬ªÒöŠ×±Q—)ÎÉâk}¤ýåÏÈÝ23Ú—N·žãÀ¦Þ4&i`"ž Élu­ÈâBò†p •í´tàwϯװtÒˆ@PYŽÔ^€œg¯a€j)ÑT¯&îS—6‰„ÚÓ½ÒI¥f™H¶ºßÍæÈÁùmÀ€Êr žÕÚæª ÆFÅÄ 22Ò¡ÀÈ?…Kmu Ò3@û‚±VTŽÄEmÆKFC‹[“QU®õ /om­ÚO¸³J¨[é“ÏZ—íVó£Ã1E;‡,3=ø<{¡QUìïì¯ÕšÆòÞåPáŒ2«…>‡¬PEPEPEPEPEPEPEPEPTõ¹ÿ?úÕʧ¨}ÏøÿЖ“2²¬ähÔ¿ëÕ?ô!Zµ•cÿ#F¥ÿ^©ÿ¡ Hf†…ÿ!í[ýÈ?“Õ[Ý8\jÆöö7N®Û Ö1;Hlò@2ØË{Õ­ þCÚ·û'¬-BýcÕ£ñ5¼±h¯~Êò¬ù&eØΤ18lã»"éÓçfŽ™Þˆ’;G7o*Á#i0p¡ÑÏ]™Ç¶qÅoͧXÏt—SÙ[Iq6Jñ)uÇ#ŒŠçu¤†îõoÌb]·¶e­”aE'dXóéš]nmOût˜0Û›mŠ·KÈAÜ¡pÙÆ9'drqM;ÓW¹¾ºN˜²I"éÖ‚II20räç98ç©üÍGk¢i¶¦fK8IËù²4JZ@ä’¤ã‘ÏCè*+}dyr‹Ûi"š¼—[t{…h`r«œa‡$ ¯.·}Œw¿ÙÑ}žr<§7 ò¡ï—ƒsóžHÓ t}-­Ñ´Û3l­½a0.ÀÞ»qŒÔËgj¸ÛmÀUŒpåGàzzU5–—btódh¼°“WG, 6¿N»}ê]_TTqO4%íÙ¶;«|ÊÇîŒcOϲ@óiÖ3Ý%ÔöVÒ\G’¼J]qÈÁ#"˜šN™”G§Z ˜ Xo¨Ãü÷=Lµ §· þòN€ã>Ÿþ¿^s@TL?Òã8éŒãÝ{ãú¡í-BÿñýÈÿVü`gª÷ëùqëÚ€&¨®†ëI†3˜ØcϘ9üÐÔµ ï67?vÜz?>(j(¦Ë,pÆdšEVc€?…#c4Ìy€|Ü/ªûc©êyè~º$‚Ê9|ù[c“´c÷dÕ¾˜µm}fg˜-å³$tÉùTv9<Žüö銳uåy%fA"¿Ë³Ü}+:±RƒL¨;I3®ôe$aDzT:<ðIâ7[6ˆDm e‹Ýæ3Žøý*Ñ´Ñ¶ÜØ[Û2<Р7ЂE_°¶°‰ š|p~ EŒÄW5³Ræ¹rž–±šfM?TÔMå•Ìßj*c’+f˜:aÚÜß{æÎzâ ›{Ëë{‹yÞÅc’uò×–2&Ò«êÃø®’Ší3¹‘¡Ë<²Üód9çµky[®U œq‚qÔZôQCQEQEQEQEQEQEQEQEU=CîÀþ„µr©êsþô%¤À̬«ù5/úõOýV­eXÿÈÑ©תèB’¡¡È{VÿräôJú„—r\éúŽ pÈ¥Ë.>U{pàíϽü‡µo÷ þOL{ÍRßKVŽ |”††Ý<Ç*PäÎNí §œœü·ólDåÊ®W‹F¹ºÔ¤š]J6Y ¸~Á$M'”À®7IÓ½oÝi¶—~gŸæP™$d?!%pT‚0Ié\ğړŧê7ðÍo0{`q3Ç·7;@(i&6;QŒã¾Þ³ªêPk~U¼WbÞ|¡ Yw¹6ã» ÀÆ9ÎxÁªù¬ÝÆž—: KH,áò­Õ‚’X–rìÄ÷,Ä’~¦©ÿ`Øm*¿jEݸ*^L¡?tùG'K·bbf»‘l]eòZ;§D`øA‚zÕ+_iמÙ’YLQù¡cxݰUbF2è â f¬v‘ˉ «ÁŽ2 ùTãÓ¯^¾¦˜t›Šn¤`ŒÄ®dÎã‚ps“ôɨ?¶â!³µ¸»ó y^NÌH«Œ¸,ÀmÉ$ŒöÈæ¡±ÖA²»’èJÏkæHøUû¾c€Pÿ¯@¶ƒ§9>ds8+´«ÜÈË÷vç±»nëïZU…w¯ˆî¡añÙ$²‰®YWc„G,Îî õÀÎ:ú¶iÓǘ‘ÞS*D±$°±f`JüÁÊ í<ŽœŒ€tUY¯|8ÞµµÁ´AG˜£¿ê;éÆk>oZF¾b[ÝO WM«+F»C8ù²@Ý铃€xÈÕ‘iª5æ®,r«¢X¥UÜðr ìý~y­z:\Š( Š( Š( Š( Š(  Vò¿ÿu?ô'­*Ͱÿµÿû©ÿ¡=iPV§u¤'9Ìjsœç\œþgêjZŠ×wÙ!ó>ÿ–»¾÷\µÏçÏ­K@)ÿKg¤hqŸvíŸè>§´µîû\™ûžZcïuËgÛÓ§>½ªZŠäâ sÞ ëâãüö= µÎï(lëæ'÷ºnéÏOÃ׌ԴTVÇ1œþñÇ\ÿ÷?ç°è%¨­·yG_1ÿ½ÓqÇ^z~œb€%¨˜ÿ¥Æ3Ö78ϺöÏô?QÞZ‰·}®<}Ï-ó÷ºåqíëןNô-EtvÚLsŒFÇ9Æ8õÈÇæ>¢¥¨®·}’o/ïùm·ïuÇû<þ\úPµOTeK0îÁUfˆ’NbÕÊ(—µžðÜÝ­î«cr’^BaHF ºåxÛW!¾\g9làâ´u§¸‚ÚXÉV?uçËny'¾1éΜ~^ùû’sòŽ™éøqøæ™{¼Ö¯Òæ#Ô,{ÖucÏ í$ÊE-БºaØââOþ*ªin"ñ–ðnÉnÒ²–-—Ï'®)"ðö‰3XæÞJ»:œzàö­;F°Ó$y-!Úî6–,Iǧ5ÏF„£%.m ”Õ¬c\êz€ñAµÖvÑ$±ªA=£L„ ¦2Xä°\ ŒÁÍiïnï´ÍRÚ[×)¬m""æí2s'Ý퀿/\îèËŽÆŠìègr½ƒ¤–0¼WkB¹åO™ï•~B¬QE ¢Š(QEQEQEQEQEQEQEVn³doR%w6ásŸ%”né× úž£J«ÝúÿŸóÿ×Aÿ¨¶¤?í¢ÿñ?ç¹Ãm´¸ôýBYVââi&·!ŒÌ ù]1ÐSù~g§¶?ÏôöéÛ-[øúQÿLÿCüÿœ2®…ÿ!í[ýÈ?“ÖtÓÃ*@—zuÊË+ Ö-ÊŒ¾äõÍhè_òտ܃ù=C{¨ê¶„ǦiÖ÷K½É2H©‡i™UrÌ:àãäÞª7¾‚jåx§„Aa¦Üü×VÒI!6QRUrO”Ù<ØÖíî•ÛÊþ|ÐÉ'•óÇ·*cbÊFAO|×1¡­ÜköÒ_ÙÃ`ày$‚\Ol¤‚q0äzÝkvÿY»³»¸‰l#™"l+pC¹‘¶·nCßÓׇ4Ô¬÷¶†…•’YÅ"ù’Lò¹ye“¤l“€@tª°èægµMJûìÅ6$Y÷kžŠÛwtã$“Žùæ«ÝøŠ8Jù1ÄË ˆÇ$ÓyQüûþñÁÛ÷1Ðò@§Ï¨ëËmöe–ë‡(7^°ÃIéã Ç~G¤ ‡J‚ÎîæÓËfò¼­Ÿ»VÆPR6ägqÛŠŠOÀé"-íäk2²Ì§ïAfnr¼`»tǾjs«lÕ…ƒÀcÉ>G™Û:wœþ”øµ/2 6O'nǾæP¿§=1Ú€ ÛK#y·OnZGå”"—  Üî'¯±N}"Y-Þ]^þEn2Ë ùpAR<¼sÎAéQ_ë7vww-„s$B-…nw26Ð6íÀè{úzðé5Å2¬VyòJ±˜}¡‹ï?7h 'Ÿ¦hèé¤Å©¶†æê8L)Uq…UÏÝã‚AÁ#°Æ*! Y¬RB2BÑÉF¤m‰_…ã•È댞Øõ›ÝI7¶ñà lb9|Å#Ôý*Å>·”:dê/z­!‘÷d1È@{°?Z»E€(¢Š(¢Š(¢Š(¢Š(¢Š¥aÿ!kÿ÷SÿBzÒ¬Ûù _ÿºŸúÖ•Ej6ÚB1ŒF£Æ8ôÀÇä>‚¥¨l¹±· ûµà@ãÔqùqSPJ?Òä8ë ãÝ»ãúŸ ï-BŸñý(ÀÿVœäg«vëùñéÞ¦ ®Fbýâ™þ!ìÏqÔKPÝñ ðï#ê@þ1ëÿëôç5°ÄDc¼sÓÄ}‡ùîz™jNanýä?Æ}?ý~¼æ€&¨˜¥ÆqÒ7Ǻ÷ÇõCÚZ…ÿãú!þ­ùÈÏUí×òã×µMQ] Ö“ g1°Æ3ž=0sù¡©jÞ,n þí¸$xõ<~|PÔQQË<0cΚ8÷tÞÀgó¤Ú[€ÕYRY $e]Ã[¢ŽËèRzy↯=ÄÃ+$jUÉáÉçËoaÆsù^5AdН}gõ³A) Œ½Aö¨«88¢ Òwe­a—yä“oMécóJ¯¤?Ùµ‰,"vhœÇÊÞa^0Ú”øl““«_äÿÓJ³¥è‘i×/qö‰ç•“fé[8\çñ®j4*ÂiÉ«)ÅÆÈ«w«ÞC}1ìÆÚÞæ;fˆ©2¹p¿09Àxã!O#µ ½[V:C4³Z£]i¯u逨\‚wóÜ0Gzée°³–énäµ®QJ¬æ0]G<ÆGSùÔv§i–¦ÞÒÎV@’0‰A”Ÿn=3]«oëúó3ê[·‹t$’ãædBªO°$ãó5%2!¶…!·‰"‰Bª`:Sè%Q@Š( Š( Š( Š( Š( Š( Š( «ÝúÿŸóÿ×*½×ð¯ùÿ?ýp_§¶?ÏôöéÛ-[øúQÿLÿCüÿœ ]=±þ§·NØùjÜÇÒú`ÿúçüà!•t/ùjßîAüžª^,Ïrv‡O.mÀI¥Ë6evWVV^ÍüûU½ þCÚ·û'¬)×Å~Pº´ko±R²Ü]ºž@Î~pÍš¨Æû°»Nè³kbÑ^Å"¬„™ãÓe…Fe…‰%™€b€nÜi7êRÜ5ÜB0‘€î[î6ìäöôôç•Õ‰mtk@])¶XŒ‰4r·*wmaûÖþYž„|ÍÏ·`ukHMɽšXàœBiB†;u8õéíCßrR²²+"â Ë«>ò8¾ÐW1˘€ Û†)ä¶zõÏPqRZi kŒK"i+Ë„j’Á 3ò¿ÎÅZ‡RÓî.>Ïõ´³€O–’«6|š†MZÒ M¬®¦†Ú†3$¡L…‹  §åýi ©/‡c’cuö©ÅÙ¹óÃù°vÇ—»oÜùs×½6-#TŽÚÎ!©Y–²#Éo±¶0¡Ü<ÞNlt­#©Ø åƒí¶ÆxT¼‘ WzÔ‘œŠ]:þÛS²ŽîÎU’)<08>‡ò;ŠÚ(>“y5ëOq{WeRØ©Ìm»©sÁ%¸Çœ¤š/g»¶º1HÎ’B nX˜oÏVÞÙu<ôÆÕŸ£é¿ÙL„ÀZiL¬ ‡Ê@H…ÉÇLõêMhQEQEQEQEQEQEQER°ÿµÿû©ÿ¡=iVm‡ü…¯ÿÝOý ëJ€"µ;­!9ÎcSœç§´µ“ö¹Z`qÕºsŒþxÄ´ÉÄ@ç¼A×Ä=Çùìzj+’DChb|Äû “÷‡¡zûzô©h¨­Žb'9ý㎹þ#îÏaÐKQ[b;ƒæ?Þ¼}IãÓÛÓ¥KQ1ÿKŒg¬nqŸuíŸè~£¼µö¸Æ[ä€qÕzóŒþ½9ȵ“~Ïöé6Û^ÝŠ#–V@’1Á[)éÐõ¬;Åv—šÌpé q4WÎ~P]S#99˯|`b:³wˆ Ì-Ž$ ŒÄÀdðGLÐâàìÕƒsM°¿•àk‹k{x­nçHÆGf.*T`ùÎN@¼:óKÔîÌë"Xÿ¦ÚGÄ¢F27n(»Náóq–*ÿöæŸöx&WÅ—ÚF‘”À»‚ôäŒr=E ®ØI/—ºü ²YÌÊ2`¸ÔñÞ˜#Ò5Ö#º¸•]#–Fn¤bÈÊÁ@‹Œ“޵©¤Aqk¦[Û]„ 1±`À Èϧ8õ4‘êú|–Ý­ÊùnØìNr8ÀS×*íí< cö°K ö9·± ‘…Û’0§œcŠ[©ECmp—P £YU[ –&¿ï–ʦ Š( Š( Š( Š( Š( Š( Š(  Vò¿ÿu?ô'­*Ͱÿµÿû©ÿ¡=iPV£m¤#Äj1ŒcL ~Cè*Z†È«XÛ” ©HÇLcè?ú š€"Qþ—!ÇXÐgíßÔýyj+öé@#p õÆ[¾½ÏÐwš€"¹ˆ g÷ˆzgø‡±ÿ=ÇQ-CvTB¥ÈÇ™ç×xÇcßÿÖ:‰¨¨­†"#ý㞘þ#ì?ÏsÔËPÚ0±B1æH8õÞsØwÿõž¤j‰‡ú\g#qœ{¯|Qô=¥¨\¯Û¢Æ7#×\öúwCØjŠèn´˜c9†1œñ郟Èý KPÞ•[‚ä±9éŒ}ò?C@UmAäKPbÆÍ$i¸H ê\ކ¬ÔW0 ˜|²ìŸ2°eÆAÔÔP–«ö‹«¤·šýZ¨‘¼ëO-d åd±1®ÎpéZZ•ê$1ed(Ìw©†å[íÇÔv4±Ø–]×r0ó•Ü(çe Al 9áG^€Tš½œ—¶F8X,ŠI]ÝsøYÕRpj;• )+•¼‹”mÖë ¹Æ†\õ23ïK¦_\é,/d!•Oðî+ƒÀçðªMˆÉ$%€ÏûMShúv¡¦÷º€$Ä«OWÝ“šæ¡êK™hi'y–î5xíç~Íq$6Ë™î.Ⱦ]Ø °bqºQU›ÄQ©¾|·%€ÄG¼‚¬Á¾þÜa©ÎEY¸ÑãžyÜÝ\$7#Û¡]’ü»rI]ÀãtŽ‚£ƒC†)Öâk»«›…`|ÙJd€¬¡~U{™Éä×oC"ñ,ùk ëÉ.ÓaP•˜0˺xéGü$¶¾_˜¶·l±‚×'j³ÅNü·8*ßww>™Iü>D¶Mey=¹· Ø[b#¨Æå#'9LSÛÃv¥6-ÍÒ,‹¶ä+/úH,XïÊñ’Í÷výâ:cKˆˆíSsÍou°2¯ÚWa1îÜ [¢’0qPÚø²Æó䵂y¦.EÈNU˜ÊåGÝn¤tæ®É¢ZKj–Ò%’WÆìgÌ dvùÎ1íNƒKhä…î5 »£ïÎŒ|¥…xnþ”€£'ˆöM Ÿb¸û!·šY˜…Ý€`FîqÎqžØïZzmðÔ-DâÞhãh¡Ü0(Ì9ìj³è‘|† »«wO4o—$HÛˆåOC‚1ÏZŸLÓbÓRa+Ï!–YQK±d„U½9ïB]¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ª÷_À~¿çüÿõÅŠ¯uüëþÏÿ\Wéíóý=ºvÇËVãþ>”ÓÿÐãÿ?ç×OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8e] þCÚ·û'¨§–ê9ÏÙ¡ºeóƒ³A,+“ÈJ0wS‚éúŒƒ.…ÿ!í[ýÈ?“ÕkµÑb’Yu+ˆ ‘ÞG!­c?(®IØ{ã’zŸz-};;•‘/ßP†kŸ1£íW¸xK|÷ä/ÈퟸÇ8g€6bk»kÝE?³.eŽy ‰*<[OîÔc—9R:V5ž£¡flÖý[i2Go´'xPÙ'nùÏ=_Ú­‡›ˆ¿qþ·ç»ã?7§óU$îî%¢ÐÂÓ£Ôtô¶´ÉåÝg¼¬‘ù‘2Ï.©ÏcžŽÖäjwézžùåWV†ô—äQó/šÁ?)ϽmɨØÇx¶r^Û%ËýØZUßEÎj¿öþ‹¼§öÆŸ¸g#í)‘޽é=u è×qA§ªÚ,Ñy?éVæ@¿8…“ƒÓæÈûêi“Yj´%¬µF³†`RÜÝ >G‰€•É^®O^Ø­÷Õ´Èííõ5¶íIŒê làô?•!Öt•`mNÈLøÛ¸MÇ=03žr1õ¦õ`I§¶Q©‚æ gä¹—ÌsÝ·63V¨¢Q@Q@Q@Q@Q@Q@Q@¬?ä-þêèOZU›aÿ!kÿ÷SÿBzÒ ­NëHNs˜Ôç9Ϲ9üÏÔÔµ©Ýi Îsœç9ã×'?™úš–€"Sþ— ÏHÐã>íÛ?Ð}Oij%?ér ô3îݳýÔö–€"¹8ˆã÷ˆ:ãø‡¸ÿ=C-Erq9ÇïuÇñqþ{†Z*+c˜‰Îx㮈ûŸóØtÔVÇ1œþñÇ\ÿ÷?ç°è%¨˜ÿ¥Æ3Ö78ϺöÏô?QÞZ‰ú\c=csŒû¯lÿCõÀ%¨®ŽÛIŽqˆØç8ǹüÇÔTµÑÛi1Î1çã×#˜úŠ–«ßK$6Û¡ÚȈ ¹‚çµb¡¼® òÑÂ0tpÅw «é‘é@–Zì7W3Çg©ØÜ´SÆŽ‘Œ—VòÁdćåÀÎ1¸Ò¾¿#lèVF;Š6Nл¸Çüð>àÔi§Üf-,*%¸I¥+ FP˜#ç8átíÓ¹~·m5͉ãtˆKÎ7|¤_Ò³«ÍÈùw*æW"ÝyfÞ)ÔÊÊË(úŒÈüéúv¡,×/iyŽáTÈ»q†MØÏàç¶k9¯5’ÄLÿ=–Ÿ£A¨>°÷·¶ŸgQnb¸bľîÕÍAÕæI§cIrØÓŸU²·¹kydpÈ»¤a²F1ŸÀÚ¼ òE@ØÚ¼ÌYv-RÎ[ϲ$ŽdÉPLN˜uPäm$`äž¡«•‰eáøìµg¼4öV‘ä ÖCí¶Ihn™'øzqï[tt¡EPEPEPEPEPEPEPEPUî¿€ýÏùÿë‹^ëø×üÿŸþ¸¯ÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþήžØÿ?ÓÛ§l|µn?ãéGý0ý?óþpʺü‡µo÷ þOTõíä¸_´Xý£ƒ¹´ç¹òyŠV HÇÿ[‚.h_òտ܃ù=1ì­ÞYd’òÞܼ²<ªxvÀH=?@NÎæ=¶ÍN)Á`U;L±éÏj¬ ͹@w(ðøà¤äRÆèE¬Ý[[ÊòÈíW™£1 ÈõÃsÿ}ô!Ómõ[{iæ[ƒ!V¡žV Á¸Ü 0Æí¼žì¼rHêi¹9K™îJVV9‰Ñ—L¿ÒÞÆáï.e‘£q29fÊ9“FÑ·©mã¶tÈxu-BwŽCÙb• n ÉžGÖµ(¤õVËérýìwwVw†3aËi#‚¥¨­FÛHF1ˆÔcǘü‡ÐT´ô¹:ƃ8÷nøþ§è;ËQ(ÿKã¬h3vïê~ƒ¼´ÈÌ@c?¼CÓ?Ä=ùî:‰j+‘˜€Æx‡¦ˆ{óÜuÐQ[ DF1ûÇ=1üGØžç©–¢¶ˆŒc÷Žzcø°ÿ=ÏR-DÃý.3Ž‘¸Î=×¾?¨úÒÔL?Òã8éŒãÝ{ãú¡ì-Et7ZL1œÆÃÎxôÁÏä~†¥¨®†ëI†3˜ØcϘ9üÐдQEEijœc2ÓùWØgõúö ½ŸÈ>`ÛiÓÿ×Ò„†6šfx”‘ ”öSè;ëÐsÆnÌ ö¶ëº2xEÁB¼ã¿€ö¬ê¹(>]Ê…œ•Ç}²â&ùÓ©‰¡u ûN/þ´Ú~¢.Ýá’&‚tçcó.q¸d²[^mÇm…þ3ÇîhÑ$šï^{¶¶ž(ÖØÆL©·,dÝÇá\Ô*UrQ’vó4”ckš—:¯“rð[ØÝÝ´@L1yîa“Žp¹?˜ÊK­ZÃnf”Jª²HŽ6ä¦Àʼn˜\þ"¢{mNÒúê]:;9¢»a# ähÌn)<+n(ãŽüóÂ>•0Ô®î£0:Kòã<ÖX·û$"tõjí2ê]±¼’ì?›cshW ö|À÷Y‡njÕeh¶o;K ±8Q­¼Í$qã9+•P¹Èà8ÏRkV› (¢Q@Q@Q@Q@Q@Q@Q@Wºþõÿ?çÿ®,U{¯à?_óþúà¿OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8º{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀC*è_òտ܃ù=ekQèó\„ÕÓvð¥'»0þèÜI¼€nÆÐp}3É:ºü‡µo÷ þOIy$v—j˜grå!•BÇ8åsÕ‡©ù‡­qÕÜæ´ˆ4¨uˆÿ³"´úH-®Ìá”\Ûm<“ެ;gÀέÜ(šÅÝì¶v±Åô{õ þöÛºNîŒf´,¶ßΑÉ}¨°VIU%1í}¥Xt_÷OÐZè*ÜÜåÎÅk+^•.•my=ä·Zž9®Ë/Ú¸g?~z³Ò«—û<[ë6m ä\È.Ìe¼Õôb6òq]å(.{[k›ØbÑ Keç+Û´_ê„â9I)Ž1ÂgoÏ|Õ]Bø™$šÃØA%ÃÅ$ÂõD°ÆJM…#rƒ€Îzó]õCE[eÒârXÉÎÉDNyÀãóëW袀 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Ù[p€¨éŒ}Oó?SSTV§u¤'9Ìjsœç\œþgêjZ…ýºRÜc@}q–ǯaõ=¦¨”ÿ¥È3Ò48Ï»vÏôSÚZ†ì)…C23Ï®ñŽã¿ÿ¨ô3TW'œ~ñ\÷ç±èe ¡´ !`€cÌñë¼ç¹ïÿêÕ±ÌDç?¼q×?Ä}Ïùì: j öè‰pÀõÆW=þÔwš¢cþ—ÏXÜã>ëÛ?ÐýGp jЭcp¦6=1¨þcê*jŠèí´˜çŽsŒqë‘Ì}EKQ\Î-¡ó 3üÊ¡W$RSRÕmA${P"ŒÈË$o´ êO\‚€+Ez±Í96²®éÑ$!£;‚NpTôèGÍË™¼•@¸Ý#mRz‚rúÝkËJû=ÕÓÛÃ~Í5ÔNÞuߘ±…ò²' œã8 t«šô"-a sí\Ô+NRQf’‚JçKEr÷:<òx ÞÍ ä‹æÆðÍÙöÆ T—`!NoRj¤ßÅ Ú®ž¯ÈE¼-å¹¶Œ¿Ï v’GÌ:®FÓÂŒöô2:ê+ˆ‹ÃwMmæ´,t©á× ¸38UP÷7†'uQÜ+«n?yH*NHÇw`:Š(¢Q@Q@Q@Q@Q@Q@Wºþõÿ?çÿ®,U{¯à?_óþúà¿OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8º{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀC*è_òտ܃ù=K;Ê—7Æá¼ôû€“,z#/Ƣпä=«¹òzкӚYŒ°\˜;¾X 7gU'¡,nö“PÓÁ `› çÕ=@? ¨î5 ˜µ³ w‘ '˜ðK瞣k{rµbÚÀÃ8š[™®$ UL‡ 8Îà*ÑŠ3*ÊcS"‚¡ñÈôà~T†r‰ªjš…¤ÝYí%– #u0|ÔÂäHŸ=v¯NœàX^¿Bò}‘þÛËE`°eÕpçwÌ>qÈÛ÷HúmG¥éÑNóǧڤÒÏ"¡˜ç9'<ŒýiɦØGö–6ËöŸõø‰G›×ïqóu=}hPŸTä€Þ[¬êö¿½HP†•†6yžÃ<óÈôÅøu£ªÿgH"ócbò8B‡hÞ cŽºÕn=/NŠÝí£ÓíR ×aP¬3œŒIüêH¬áŠæIÔÒ"Ç·øUW8všÅ¸¾‘uÂ4ùm÷^$ Ò|è%là»!p9j®êSZÜIoöHÚÊ’o2&a1ëòÃjŸ,œåºûs¼úuŒ$²¶xJªÚ%*U~èÆ1ØvªZ—‡¬ul³(Xm×jBÅ´/P²ôå"Ž ÍaÈ–Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(•‡ü…¯ÿÝOý ëJ³l?ä-þêèOZT¨"Òʼn®K’Iã¾@9úRÔV£m¤#Äj1ŒcL ~Cè*Z‰Aû\‡--0 8êÝ8ÆNœfZ‰Gú\‡cAœ{·|Sôå ®A1 ¥óî’Þ€ñëíéÖ¥¨®Fbýâ™þ!ìÏqÔK@Elˆî,O˜ÿx’~ñõOo^µ-El1ÇïôÇñaþ{ž¤Z‰û\g--ò8ê½xÆ^¼âZ‰‡ú\g#qœ{¯|Qô=€%¨®6“, °PG° ÏЖ¢º­&ÎcaŒgPÿ+òž‡èpy®rÀM<‘¦­ý©ö§…[<å‹1»vÌ(mÛ³»žžÕBÆ+˜líâ)¬%”iܪùþ` I¸/ñcvÌìíŒqNÀvÔW!¶§5ÔÒÉ©«ÃlÑD’)'|›w÷›n̆ϸÍ]ÑþÕý½sæ›ÙTù„É(–4O˜m@ò7‡B2:Žä¶ tTQE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ¯uüëþÏÿ\Xª÷_À~¿çüÿõÀ~žØÿ?ÓÛ§l|µn?ãéGý0ý?óþp-töÇùþžÝ;cå«qÿJ?éƒÿèqÿŸó€†Uпä=«¹òz߬ þCÚ·û'­úhAEPEPEPEPEPEPEPEPEPEPEP+ù _ÿºŸúÖ•fØÈZÿýÔÿО´¨.,mÀ þíyxô~\TÕ©Ýi Îsœç9ã×'?™úš–€!Oøþ”ä«N03Õ»õüøôïSTJÒäégÝ»gú©í-CwÌ+ȼ¨øÇ¯ÿ¯ÓœTÕÉÄ@ç¼A×Ä=Çùìzh¨m8…¹÷’tôÿõú󚚢¶9ˆœç÷Ž:çø¹ÿ=‡@-BÿñýÈÿVü`gª÷ëùqëÚ¦¨˜ÿ¥Æ3Ö78ϺöÏô?QÜZ†÷›€H»nH=Ÿ5EtvÚLsŒFÇ9Æ8õÈÇæ>¢€%¦Ë,pÆdšEVc€?uSÕRÌ;°UY¢$“€˜´_Ù4Ò*ÝZîyЮ¹~ìNOnÝ?bëÊòJÌ‚E—f3¸úW9k=á¹»[ÝVÆå$¼„ÂŒ?uÊþñ¶®C|¸ÎrÙÁÅhëOq´24±’¬~êÏ–ÜòO|þcÓœêÏ’EB<Îà ¦ˆ¶æÂÞØ‘‘æ…¾„*ý…µ„HdÓã€+ðZ,`þ"«·BFé‡c‹‰?øª©¥¸‹Ä[Á¸C%»JÊX¶\HW<ž¸®z8žy(²å +›©"9pެPí`vœgÓ‚?:usL×Pj·0Þ:Gý£mE*á–%9$nÏ<`Ƴ"»½µ†ê+MbMöâîy"hâb¬²ªFÐ@ “êsÁWbÖß×K™±‘‚"ê$`X.y u8üGçN®*úþî×Qo;QØ`cÚ¤TQžÜœñ·€äg”·:ÕÚÀÑA«†C3}šúIa‰'P«•Ýå°fÜĪ3´óÇ'KÚQ\”Zž£>u¨¾§±R(*E䘖*Ä™€' gj£ëš‹›q§ ¼F=ñË4Pý¡·° •ÕÀ~á^{Œ;k`és¸¢³tG¹ž ®.®š]ÓHŠ›T*‘€ÆOu=»V• (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ¯uüëþÏÿ\Xª÷_À~¿çüÿõÀ~žØÿ?ÓÛ§l|µn?ãéGý0ý?óþp-töÇùþžÝ;cå«qÿJ?éƒÿèqÿŸó€†Uпä=«¹òz߬ þCÚ·û'­úhAEPEPEPEPEPEPEPEPEPEPEP+ù _ÿºŸúÖ•fØÈZÿýÔÿО´¨+]ßd‡ÌûþZîûÝqþ×?Ÿ>µ-Ej6ÚB1ŒF£Æ8ôÀÇä>‚¥ —wÚäÏÜòÓ{®[>Þ9õíRÔJ?Òä8ë ãÝ»ãúŸ ï-Es»Ê:ù‰ýzsÓðõã5-Er3ÏïôÏñcþ{Ž¢Z*+mÞQß×ÌïtÜqמŸ‡§©j+aˆˆÆ?xç¦?ˆûóÜõ ÔM»íqãîyoŸ½×+o^¼úw©j&éqœtÆqî½ñýGÐö–¢ºÝöI¼¿¿å¶ß½×ìóùséRÔWCu¤ÃÌl1ŒçLþGèhZ(ªz¢«Ù„u ­4@‚2ó€,G÷åàŸ¹'?(鞟‡Ži—±[ÍjñÝ.b=GòǽsÖ°^ ›¶½Ò¬m’;ÈD/ É÷\/î×rä·Íœç+Œ Öž¯=ÄÃ+$jUÉáÉçËoaÆsù^3«.H9wb¤^Ñ&b‹ÛÀÉWgS\Õ£§hÖd%¤;]ÆÒʼn8ôæ šÖp'žI6ôÞ‘¶?4ªúCý›X’Â'f iÀl|­æã=«žŽ"’µ.Qv½Íê+òþúnK8d¶V¢X¤‘\¬`‰ ÊïÃãzóœUhõÝN[kÉÑmYÛ³¾Qšá¤^>n”¿õØdt“ÁÂ*L»•]\ ‘ÊAüÀ©+–º¹Õ_\´°y,ÚxäYc™a`Š9FwHÛýáœö¦Ýx‡RŠÔK QJöÁØX>\+²‚¤]¹ØÜä0®ŠÃ³Ôµn­šo²ýšââh6»7á‹ÁÎΘïÖ·(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ª÷_À~¿çüÿõÅŠ¯uüëþÏÿ\Wéíóý=ºvÇËVãþ>”ÓÿÐãÿ?ç×OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8e] þCÚ·û'­úÀпä=«¹òzߦ„QEQEQEQEQEQEQEQEQEQEQER°ÿµÿû©ÿ¡=iVm‡ü…¯ÿÝOý ëJ€!²æÆÜ€î×€AQÇåÅMQZÖœç1©Îsž=rsùŸ©©hÿéFú´ç#=[·_ÏNõ5D§ý.Až‘¡Æ}Û¶ úžÒÐ7|B¼ûÈú?Œzÿúý9ÅMQ\œDqûÄqüCܞǡ–€ †Ó˜[€?y'BñŸOÿ_¯9©ª+c˜‰Îx㮈ûŸóØtÔ/ÿÑ õoÎFz¯n¿—½ªj‰ú\c=csŒû¯lÿCõÀ%¨ox±¸$û¶àãÔñùñSTWGm¤Ç8Älsœc\Œ~cê(Zl±G4f9£YõVð§U]K?d3.ébRUŠœG= 2 4Œ–ŽA‚#O”à1ÈõçŸÃ&¡k Ý£Å;lLgx8ÛÇ\ý3X6wsÏuv¯ej-®áZKÃÊ%X $ï'ŒcœÖ¦©vñE † ,CÁÂÁ=ÿUúg:²Qƒl¨¦Ý‘F= ;€Z-nòNy)0<þwKÑ"Ó®^ãíÏ+&ÍÒ¶p¹ÎãI-¼²¸w¹xܨèqé•qš‹J¹š=NM>YŒêb3+œå~r»y$‘õ5ÏF¥7$”R"ä·-ÿdÚÈ÷Mx>Ø.JîK…VPªIU €0 =r}êIôÛI¬f³¤QK|¥ B`€NgÜëw‘ßÉmo§G"¬Æv¹Û¹ÄbNFÓŒŒòsŽ;†'ˆÞEK”±È´Q¼6^@¤€@Þ œŽüsØeÔÔµÓl,ÑRÒÊÚVÞQ*€ØÆxqÆi³iZlî¯>Ÿi#&v³Â¤®NN2;’sõ¬¤×®¤[C=·[µŠHŒs‡m¥ÑH`SÈÏ ÓlõY¢›yîçeÿI*¾\o·“åõä0sÔ‘G˜yëoìÛ cc\(ùXç$z“ùš’²ôYõfy!¶ h¡vÈÒ|ÌYÇËŽ8nyíß¶¥ QEQEQEQEQEQEQEU{¯à?_óþúâÅWºþõÿ?çÿ®+ôöÇùþžÝ;cå«qÿJ?éƒÿèqÿŸók§¶?ÏôöéÛ-[øúQÿLÿCüÿœ2®…ÿ!í[ýÈ?“Öý`h_òտ܃ù=oÓB (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Z’m!,ä8 Ž;䓟©5-Ej6ÚB1ŒF£Æ8ôÀÇä>‚¥ ”ŸµÈ0ØòÓƒŽ­ÓœgðôëÆ%¨”¥ÈqÖ4Ç»wÇõ?AÞZŠä‘ÚŸ1>è$ýáèG¾Þ½*ZŠäf 1ŸÞ!éŸâÇü÷D´TVĘŽàÀù÷ïRxôöôéRÔVÃŒ~ñÏLöç¹ê@%¨˜ŸµÆ0Øòß$Ž«×œgðõéÎe¨˜¥ÆqÒ7Ǻ÷ÇõCØZŠè‘i1PĈÛ$ñÛý©j+¡ºÒaŒæ6ÆsǦ#ô4-G<1ÜDb”¤ƒÃ9#‘ÏQRUmAäKPbÆÍ$i¸H ê\ކ€#K ¹§p’¡¦”€FêØnyÏNݩڕ¿´0ï(ÝU±œü‰¬k-WíWIo5ú´7Q#yÖžZÈÊÉbc\>1œàÒ´µ+ÔHbÊÈQ˜ïS ʶ9Û¨ìk:­(7-ŠÛТÚ>²Ä“«Ç“ÿLXÒt{‹;ç»»¼ûD†/)p@·Öä\£n·XmÎ0D2à¨1‘Ÿz]2úàßIaxË$ ¨ê‡q\?…sÑ•%ʬ˗5·Ð¸l-LÆSÎd2çqûÅ6g¯÷xªë¡i©4r¥»)Œ( %}§hÂ’¹Ã: àsÀ¨î5Ømîdí.ŒQL°ÉpùjìÅ»ø€Èù¦/ˆí š-6þF ‘Ä4`_–˜ ’z ì2.*È­¸0ql¡"ùÛå©ùåW¯¥A.¦Ë»tR©ggÊ\H„ûÀa†ê@àžHªÇÄ ]˶Öilüˆe†X‚æBBŒÏ'p1ÎHÔË®£Vr]‡d{Qåù‰´I%öã ½ø‡¾4-­`µ-â‡!ˆ2QÇnzTÕ¨x„-¥×‘Ì,U†áÕ64ˆ *9'# Ô`í8&·ÇA@Q@Q@Q@Q@Q@Q@Q@Wºþõÿ?çÿ®,U{¯à?_óþúà¿OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8º{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀC*è_òտ܃ù=oÖ…ÿ!í[ýÈ?“Öý4 ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(•‡ü…¯ÿÝOý ëJ³l?ä-þêèOZT ‘V±·(AS‘Ž˜ÇÐ!ô5EjwZBsœÆ§9ÎxõÉÏæ~¦¥ P¯Û¥Â4'×lvú÷?AÞj‰Oú\ƒ=#CŒû·lÿAõ=¥ nʈT¹ó#úïì{ÿúÇQ5Erq9ÇïuÇñqþ{†Z*B¦(F<É»Î{ÿþ³ÔÍQ[ÄNsûÇsüGÜÿžÃ –¡r¿nˆ7Ü\esÛéÜ}iª&?éqŒõÎ3î½³ýÔw–¡½*¶7È #bsÓúä~†¦¬½Ným¦’;‹û;(<´ýåÁÛ¹›·®ë@•Ìæ,»'̬qAuuJÇRŽfvkÛ9àòÕãš…n_#;ˆ8Ø#éM–åg»–%ó%1±UXeÙÀ$œŽrq×ðëYÔ¨©«²£ba¦åšêf "Êãdc{.0I ûª>€Rêör^Ùá`²)%wt<ÏàMU{RÇ—›‚*F{°“¯¾Ú»mΚ/¢ c([IZ·ñô£þ˜?þ‡ùÿ8º{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀC*è_òտ܃ù=oÖ…ÿ!í[ýÈ?“Öý4 ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(•‡ü…¯ÿÝOý ëJ³l?ä-þêèOZT¨ÛiÆ1ŒcãÓú –¡² ¶6á #P1ÓúŸæ~¦¦ ”¥ÈqÖ4Ç»wÇõ?AÞZ…ýºRÜc@}q–ǯaõ=¦ ®Fbýâ™þ!ìÏqÔKPÝ…0¨p1æFyõÞ1Üwÿõ†j*+aˆˆÆ?xç¦?ˆûóÜõ2Ô6D, y’=wœ÷=ÿýC š¢aþ—ÇHÜgëßÔ}ij öè‰pÀõÆW=þÔwš¢º­&ÎcaŒgƒ¸½<`QÖìÀ°kn»£'„Qœ+Çþ;øj’+ÕŽiɵ•wN‰! ØÌØrs‚§§B8în\ÍäªÆéj“ГøÿÖëYÕQpj[Óº0[^mÇm…þ3ÇîhÑ$šï^{¶¶ž(ÖØÆL©·,dÝÇáZÚÉ|òÛΤ}è¨fýsVl5{õs|Ñœ2’2?"A⹨R¤¤¥©¤œ­kÛS´¾º—NŽÎh®ØHÂy3… O Û 8ã¿<ð¥L5+»¨Ì’Ä|¸ä5€V-þÉ=Zµè®Ó+E°¸³yÚX`µ‰Âˆímæi#É\ª…ÎGÆz“Z´Q@Q@Q@Q@Q@Q@Q@Q@Q@Wºþõÿ?çÿ®,U{¯à?_óþúà¿OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8º{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀC*è_òտ܃ù=oÖ…ÿ!í[ýÈ?“Öý4 ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(•‡ü…¯ÿÝOý ëJ³l?ä-þêèOZT©Ýi Îsœç9ã×'?™úš–¢µZB±"5ÉrIa sí]“üòOûäS-d‚hÌ–ÛJîe$.9RAýA¬©á¹$¥ÌÙNi«$rúÎwu©ÞËm§™hÙ|ùŒgÊÚn:äžU^¤c½ùô¸`Ô ?Ø©yj¨¢‹-Ÿq,ør99#'å­ú+§±›Ô(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*½×ð¯ùÿ?ýqb«ÝúÿŸóÿ×ú{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀµÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþÎWBÿö­þäÉë~°4/ùjßîAüž·é¡Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@¬?ä-þêèOZU›aÿ!kÿ÷SÿBzÒ ­FÛHF1ˆÔcǘü‡ÐTµ —6àv¼€=;ÔÔÈÌ@c?¼CÓ?Ä=ùî:‰j¾a^@ýä}@?Æ=ý~œâ¦ ¢¶ˆŒc÷Žzcø°ÿ=ÏS-CiÄ-È?¼“ øÏ§ÿ¯×œÐÕô¸Î:Fã8÷^øþ£è{KP¿üDr?Õ¿ê½úþ\zö  «&ý_íÒm¹½µ x–Ú!82eNQ‡pzg¥kQ@vÈ÷ÿ¤Þ>"Eóæ„#9̶ÆáÐvÏ9§<°C«Ü%ëÆÈràM·„ÇŽ9è}ë ª÷V6—…MÕ¼r•é½sŠÆµ/k^ÅÂ\¬Æ’ïF!F,9e¦Fjmüß ÂÓ´¥Ln vý¹o»·œã¦9ô«èú[¼ªl-ŽÇÚ0ƒ”y>¾ßNæñ1Z¨‰…*"¾Â¢•evåqÊ|Ú$r±ÿi}©ý§…•Æ3qƒclÆÎwnÆý¼çýœUtŠö]‘Ç«Fû\Ø*ù¸óLÎ{mŸë8Æ}ë­:„ÛnOÙ‰k( ô ‘SÅ,S xdIôd`EtFiìCLåîüÖŽôM6­ ù‚ñEq$B=ãUSòà§xäõ­½Êt˜ŒÑMe°³Jò67rà7Oï ŠÐ¢šØAEPEPEPEPEPEPEPEPEPUî¿€ýÏùÿë‹^ëø×üÿŸþ¸¯ÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþήžØÿ?ÓÛ§l|µn?ãéGý0ý?óþpʺü‡µo÷ þO[õ¡È{Vÿräõ¿M(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š¥aÿ!kÿ÷SÿBzÒ¬Ûù _ÿºŸúÖ•EjwZBsœÆ§9ÎxõÉÏæ~¦¥¨­w}’3ïùk»ïuÇû\þ|úÔ´Ÿô¹zF‡÷nÙþƒê{KQ.ïµÉŸ¹å¦>÷\¶}½:sëÚ¥ ®N"8ýâ¸þ!î?ÏcÐËQ\îò†Î¾b{¦ážœôü=xÍK@Els9ÏïuÏñsþ{‚ZŠÛw”wõóûÝ7uç§áéÆ(Z‰ú\c=csŒû¯lÿCõ娛wÚãÇÜòß?{®WÞ½yôï@ÑEQE]<Æšm’(@#we?ÞãŒöAÇ÷¨kOq´24±’¬~êÏ–ÜòO|þcÓ(wy³îéæ ¿{¦Õõã®zqøæ›{¼Ö¯Òæ#Ô,{ÖucÏ í$ÊE-БºaØââOþ*ªin"ñ–ðnÉnÒ²–-—Ï'®)"ðö‰3XæÞJ»:œzàö­;F°Ó$y-!Úî6–,Iǧ5ÏF„£%.m ”Õ¬d^û^ôxìÛÁ_²ý«òöõYþ-Û³·Ÿ»íM¸‹7w–JöööË-Ø™Cf1"÷ e?ð]EØg}n`x]¬Ã]EaœQn¹Óð"”óÕFB°ïËpG=†ýSbAER¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ª÷_À~¿çüÿõÅŠ¯uüëþÏÿ\Wéíóý=ºvÇËVãþ>”ÓÿÐãÿ?ç×OlŸéíÓ¶>Z·ñô£þ˜?þ‡ùÿ8e] þCÚ·û'­úÀпä=«¹òzߦ„QEQEQEQEQEQEQEQEQEQEQER°ÿµÿû©ÿ¡=iVm‡ü…¯ÿÝOý ëJ€"µm!Æ#QŒcz`còARÔ6\ØÛýÚð qê8ü¸©¨%éruqîÝñýOÐw–¡Oøþ”`«Nr3Õ»uüøôïSPW#1ŒþñLÿö?ç¸ê%¨nø…x÷‘õ õÿõúsŠš€ ŠØb"1Þ9éâ>Ãü÷=Lµ §0·~òN„ã>Ÿþ¿^s@TL?Òã8éŒãÝ{ãú¡í-BÿñýÀÿVüägªöëùqëÚ€&¢Š(ªz¢«Ù„u ­4@‚2ó®SeŠ9£1Íȇª°È?…s6°^ ›¶½Ò¬m’;ÈD/ É÷\/î×rä·Íœç+Œ Öž¯=ÄÃ+$jUÉáÉçËoaÆsù^,Acb&‘’ÒÑÈ0DiòœÆ9¼óøb¤Ô-a»´x§m‰Œïx럦k:±rƒŠ* )&ÊSZÃ.óÉ&Þ›Ò6Çæ•_H³kXDìÐ4 8 •¼Â¼`µ2= ;€Z-nòNy)0<þwKÑ"Ó®^ãíÏ+&ÍÒ¶p¹Îã\ÔhÔŒ”›Vò4”£kú½ÝÜ÷¢Kxímo­â1”-$ŒY!·¿xqƒÐþZëšåŪ]c‚äÇäÈê»S{ªãå•‹ðÄç Ó§ °G#ެíÖVVR `‚å‡ÐžO­Bt}(Å GM³1Û’aCâ2NIQŽ9ô¡qNår3Å-PEPEPEPEPEPEPEPUî¿€ýÏùÿë‹^ëø×üÿŸþ¸¯ÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþήžØÿ?ÓÛ§l|µn?ãéGý0ý?óþpʺü‡µo÷ þO[õ¡È{Vÿräõ¿M(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š¥aÿ!kÿ÷SÿBzÒ¬Ûù _ÿºŸúÖ•EjwZBsœÆ§9ÎxõÉÏæ~¦¥¨­I6– rGòIÏÔš–€"Sþ— ÏHÐã>íÛ?Ð}Oij%'ír 6<´Á ã«tçü=:ñ‰h+“ˆÎ?xƒ®?ˆ{óØô2ÔW$ˆ†ÐÄù‰÷A'ïB8õöõéRÐQ[ÄNsûÇsüGÜÿžÃ –¢¶$Äw̼?xú“ǧ·§J–¢cþ—ÏXÜã>ëÛ?ÐýGyj&'íqŒ6<·Éãªõçü=zs h¢Š*®¥Ÿ²—t±)*ÅN Š#ž†­TsÃÄF)A*H<1Sr9õÎYÝÏ=ÕÚ½•ý¨¶»†5i.w (•`$l“¼ž1ŽsZš¥ÛÅ2$P± WH÷ýWé™’Â#niÜ$€¨i¥ ‚:¶žsÓ·jv¥d/í ;Ê7Ulg"k:±rƒQܨ4¤›*Ëo,®îcÞ7*:ze\f¢Ò®fS“O–c:˜ŒÊç9_œ®ÞI$}MBÚ>²Ä“«Ç“ÿLXÒt{‹;ç»»¼ûD†/)p@·Ö¹¨Ò«§-‹”£Ëa“kÒ&´laÓæ–$‘b’UIN€9B˜†ràõã¦`¹×nåÓõ!kl‘]XÄÞvér#“ª…ù~`WæÎP=q¬ú]£ß}³$Ä‚Æ)äEr:U`­ÇƒÇÅÑ´õFAoñ4/—c½X’wdüÇ$œœžO<šíèfgÂCrš€´}1ÛËeŽg‡Íp¬@<0‹iQ¸d–S׎™ÄW^L2M¦¢›¨VKe[Å‹2®åyqÈÝÆ~•}4KæY\«€2EÜ£~:o¾sŽ2ÙãŸ&‘a,Âðe"‹É@UÊž9È*¤£h‡µksÍ¿™3OµaKÑ®|•f@ŒžÝø=jêëw¯3YǧÀo£góÝU rfNw¯}‘hZlL`rá·îy˜¶Tä’I<¢õôúÔ¶†/~{IRÚfrï/ïw¨S‚’! 8ÉŠ:SFÂçíš}½ÖÍžtK&ÜçnFqžõ=Cin––pÚÆX¤1¬j[©cšš›µôÛP¢Š) (¢Š(¢Š(¢Š(¢Š(¢Š*½×ð¯ùÿ?ýqb«ÝúÿŸóÿ×ú{cüÿOn±òÕ¸ÿ¥ôÁÿô8ÿÏùÀµÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþÎWBÿö­þäÉë~°4/ùjßîAüž·é¡Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@¬?ä-þêèOZU›aÿ!kÿ÷SÿBzÒ ­FÛHF1ˆÔcǘü‡ÐTµ ‘V±·(AS‘Ž˜ÇÐ!ô5D£ý.Cޱ Î=Û¾?©úòÔ(WíÒ€Fá댶;}{Ÿ ï5Er3ÏïôÏñcþ{Ž¢Z†ì¨…K‘21Ï®ñŽÇ¿ÿ¬uPQ[ DF1ûÇ=1üGØžç©–¡´*ab„cÌqë¼ç°ïÿë=HÕô¸Î:Fã8÷^øþ£è{KP¹_·D ŒnG®2¹íôî>‡°ÔQE[PyÔ¤1³In:ƒ×#¡«5Ìæ,»'̬qAuueªý¢êé-æ¿V†ê$o:ÓËYyY,Lkƒ‡Æ3œzV–¥z‰ YY 3êca¹BÇ {qõ,v¥—uÜŒ<åw #ùÙB[xQ× &¯g%푎 "’WwCÁþÖuTœŽåBÊJåo"åuºÃnq‚!—ýAŒŒûÒé—×úK ÆY$eGSü;Šàð9ü*“Aâ2I `3þÓTÚ>¨E©½î `É1*Å“Õ÷d湨Fº’æZIÆÞc®¼C ÍÄRÁq7’X±Š1ò"ª'-Î7Žƒ>ƒŽK¯ÛZYµÌöÓDzc ¤’CVÆáË8 ƒÁ'Ú§›Cµžk©^Iƒ]#£àŒÁÇìÖ›>‡ —muÕͼÎÌY£Ør(+ó)Àù§>õÛÐÇ¨ßøHmÙÐÁmu5»4j× "0T°cÃ)8ªqøÓH’9ÝYŠÄ¡×Dw‚ÁAáþNY~þÜgž‡|=säÚLcÓ‘¢yCLÈc§—œª2øìt!Ñž so­~€%Qò@ € Lž>bÜSÐ Ö“µÍºÊÖòÛ±$åÆáƒŽÄÈššªé–é–)ioˆIÉ 2I$œ(rzZ¤EPEPEPEPEPEPEPUî¿€ýÏùÿë‹^ëø×üÿŸþ¸¯ÓÛçú{tí–­Çü}(ÿ¦ÿ¡ÇþήžØÿ?ÓÛ§l|µn?ãéGý0ý?óþpʺü‡µo÷ þO[õ¡È{Vÿräõ¿M(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š¥aÿ!kÿ÷SÿBzÒ¬Ûù _ÿºŸúÖ•EjwZBsœÆ§9ÎxõÉÏæ~¦¥¨­NëHNs˜Ôç9Ϲ9üÏÔÔ´Ÿô¹zF‡÷nÙþƒê{KQ)ÿKg¤hqŸvíŸè>§´´ÉÄ@ç¼A×Ä=Çùìzj+“ˆÎ?xƒ®?ˆ{óØô2ÐQ[ÄNsûÇsüGÜÿžÃ –¢¶9ˆœç÷Ž:çø¹ÿ=‡@-DÇý.1ž±¹Æ}×¶¡úŽòÔLÒãëœgÝ{gú¨î-Q@W¾–Hm·C´9‘sÎ2=jÅCy\A壄`èáŠîV Ó#Ò€1,µØn®gŽÏS±¹h§#.­å‚ɉÊ7œcp5¥}GÙЬŒwl¡wqøà}Á¨ÓO¸2ÌZXTKp“JV Œ¡0GÎqÂ(éÛ§rýnÚk›-Æé– œnùHþ¿¥gW›‘òîT-Ì®Eºò6ͼS¨#••–QõùÓôíBY®^Òò1©‘vã ›±ž ÁÏlÖs^k%‰4˜'þ{-?FƒP}aïom>΢ÜÄpʼn}Ý«šƒ«Ì“NÆ’å±iµÈ-¦ºKÖ#ËœÇÅÈ졉* œ Üœ`qVµlÍÊÁË+²†Ì0¼ŠeFG8'¸õNãF¹ûl×–WÉ ò³g̃Ì]¬¨Æàs”÷<dzö¶òYØ_ˆm%ˆ#ˆ´ªBÜ®c…SÐô?‡oCn¼C ,oo°™na’P#fw`íëƒÞ¬>»d%1G!gWY¢‘PáN×ÚCN0^¸¬¥ð€ .'´€È¸+kgå'ÜuÎ7ŸŸ9'·ådørV»’SyhÒ‰<¸`(ùòã~Öo—€×=(`[Ä:T‘4«pá1 f…Ô:’)‘óò@ùsɽ[±¿·¿ÞØÉˆßc‰"xÙNÁVô"²¯tI…¯“,’Mcn±Ä.ÊÈÀᘠe9ŽQV´o’ ™µ$Tžâs&Сp6ªŒ€ÎÝìÇú ”QE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ¯uüëþÏÿ\Xª÷_À~¿çüÿõÀ~žØÿ?ÓÛ§l|µn?ãéGý0ý?óþp-töÇùþžÝ;cå«qÿJ?éƒÿèqÿŸó€†Uпä=«¹òz߬ þCÚ·û'­úhAEPEPEPEPEPEPEPEPEPEPEP+ù _ÿºŸúÖ•fØÈZÿýÔÿО´¨+Q¶ÒŒb5Æ1Ǧ?!ô-Ej6ÚB1ŒF£Æ8ôÀÇä>‚¥ ”¥ÈqÖ4Ç»wÇõ?AÞZ‰Gú\‡cAœ{·|Sôå ®Fbýâ™þ!ìÏqÔKQ\ŒÄ3ûÄ=3üCØÿžã¨–€ ŠØb"1Þ9éâ>Ãü÷=Lµ°ÄDc¼sÓÄ}‡ùîz j&éqœtÆqî½ñýGÐö–¢aþ—ÇHÜgëßÔ}` h¢Š*ÉÚÞ1;D [hË0^¸>µ5W¾ŠI­¶Ã´¸‘8kÆp}(œw³$×¹€ì¹H¦Û)Ê3Çð ðÊz÷ÆxÀ¹{?‘|Á¶ÒÿÝ'?§ÿ¯¥cYhPÚÜÏ%ž™clÒÏ»ÆpQWË%S”ìÆâjÞ·f€{[uÝ<"Œà¡^?ñßÀ{Vu\”.åBÎJã¾Ùq|‚iÔŽDк}Ч?—ÿZm?QnðÉA:s±ù—8Ü2ÇáY-¯6ã¶Âÿã÷4h’Mw¯=Û[Oklc&TÛ–2nãð®j*¹(É;yšJ1µÍ©µ+. ¼×¶é8BþSJ¡ö’qœãÔv:Æd.íîà1ù~k~ñs÷݃Æ9ÏÒ©2óûuîbòb¶‘÷ÈD¥Ì§ËÚ3.ï+ È=ª¾•vÐi6“ª‡ˆy´$²<rH,QF9êzõ®ÔbÍH5›'Š&¹¸·¶y¥x¢I&Pd*å~\ã9ÀéëIy­ØÛ3F·VÒMˆ²Ä&Pц`»˜ug<Ö<Þ¹3¼…#¹Iƒ¤‘ý¾k`‘Ü}ÀCðýãy©ƒz÷l1m˜œKåy­(sæ«–Ã&P¼¨b¤öh]›-¬ikh·m©Y‹gm«1v3zÎ3ÅJ×öIw£Þ[­ÌƒrBePì=Bç'¡ü«ÿ@º—Q’ò’n‘Ï”.å¶Ê²F3¾1œæ>˜ çÚ›‡e‚ý[£ÛŠM¿Ú3¯’QUq° ²c` ¶ ïBiAâh ÇQµ­ï'AóF:÷ÆGµjW3q¢êŒ6À¶ŠèóùWá••$}Ç(Q•½ œŽ*‚r@ì1G@bÑEQEQEQEQEQEU{¯à?_óþúâÅWºþõÿ?çÿ®+ôöÇùþžÝ;cå«qÿJ?éƒÿèqÿŸók§¶?ÏôöéÛ-[øúQÿLÿCüÿœ2®…ÿ!í[ýÈ?“Öý`h_òտ܃ù=oÓB (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€)XÈZÿýÔÿО´«6ÃþB×ÿî§þ„õ¥@Ù[p€¨éŒ}Oó?SSTV§u¤'9Ìjsœç\œþgêjZ…ýºRÜc@}q–ǯaõ=¦¨”ÿ¥È3Ò48Ï»vÏôSÚZ†ì)…C23Ï®ñŽã¿ÿ¨ô3TW'œ~ñ\÷ç±èe ¡´ !`€cÌñë¼ç¹ïÿêÕ±ÌDç?¼q×?Ä}Ïùì: j öè‰pÀõÆW=þÔwš¢cþ—ÏXÜã>ëÛ?ÐýGp h¢Š*+™Å´>aF™T*ã$’ê@êjZ­¨$jQ™dö‚!]IëÐPxõ ²Ë¾Ú`<åŽô>[0PÎ:ƒÀqÜÛ¹›ÉT Ò6Õ' 8''ðÿ­Ö°¬ô†µ¹¸’5n.b“÷÷EÕ|¼äqýÙ;±œto^„E§‰Ía;²ìØ ô'éù“ÜÖu[ŒŽåA'$™'ö²Fß<¶ó©z'D#ê¿\Õ› FÞý\Àß4g ¤ŒÈG¸¬–ñ>žâë#<|­þzš‡ˆÞxž5´efÚ@Ì$}«š…iÊJ,ÒPI\éh®zîÚüÝ\A‹É×°Ü Äˆ*ùy'v~SÐcßµc¯‡ïM›Dºt±À$¥B¶æâàùÝ’b“‚ž9É×oC¹¢¹(ü<ÆÆð}Žc!²ò­¾ÒÑyˆÄÉ6«Ã1Ž*FЦ´¸–}6Æ‘fÅœmòÌ8ÛŒýÓ'$zóïC©¢¸Í7ò‹´Iô÷[*»Å:ۨϗ"’R/—)êO~œKý›¨ÚYßZÁ§<‰uC—$abä*X`muÆ3éÅ;Ô^\¥œ×R†) `½HµL9®*ûEÔ®5 ›ˆìYfLŽè¶éˆQ‚`Þ1û¹ÜqžÝ1ÚŽ‚—@ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ­vÊ¥2@ëÔý?ÏùȳU/™•r¤‚òûKC"vuüÿÏ·ÿ[-I¤¯B+©e·bT@/?NÞØVÞ/:ÁÒ–ÏT[¥8pá@ŒxÝ9÷ÈÆr*k6fñV¦X’M¬|“þÒÔŒ¿¡È{Vÿräõ¿Xü‡µo÷ þO[õHAEPEPEPEPEPEPEPEPEPEPEPm½Í½¶­{ö‰â‹r¦7¸\üÏëW´ôÿùÿµÿ¿Ëþ5“q=ÐÔ'Š –5_˜ä’KÄzS|ÝCþþøoþ*•ÇcJ×R°†¿€‘ä¼À“Ç|àçêMý§§ÿÏý¯ýþ_ñ¬7PÿŸÅÿ¾ÿЦ­Åë– }8`Ž\›ÜQp±¨º•‡Úä?oƒZ`†:·NÙü}:q™¿´ôÿùÿµÿ¿Ëþ5æêóø¿÷ÃñTyº‡üþ/ýðßüU W:•ˆm¿€1>ìÀ¼=3ǯ·§Z›ûOOÿŸû_ûü¿ãXþn¡ÿ?‹ÿ|7ÿLk«Ä‘#kø•ß;©±×w4\,mÿiéÿóÿkÿ—üjmJÀDw_ÀO˜ÿz`OÞ>¸ãÓÛ×­fùº‡üþ/ýðßüU4Ü^‰fú=äkdÔãw¸¢áckûOOÿŸû_ûü¿ãTÄQ¸G‡j£6¾ $c¼ô<çÇŠW·6°™®u(aŒuyP?õ šý€+x„AÜÿãÔ\,j[M1yŸn·Û·v7Œãé×>Õk–ÑüòKmåçø'ãê "­Qóuùü_ûá¿øª<ÝCþþøoþ*¥ÝìÁPëz\䄽ˆcûçgóÅMý§§ÿÏý¯ýþ_ñ¬7PÿŸÅÿ¾ÿŠ£ÍÔ?çñï†ÿâ©§Ü,liéÿóÿkÿ—üi¥§ƒ}jGýu_ñ¬7PÿŸÅÿ¾ÿŠ£ÍÔ?çñï†ÿâ©Ü,j}·IÿŸ«/ûø”åÔ4Äû—–‹ô•Gõ¬Ÿ7PÿŸÅÿ¾ÿŠ£ÍÔ?çñï†ÿ⨸XØþÓÓÿçþ×þÿ/øÑý§§ÿÏý¯ýþ_ñ¬7PÿŸÅÿ¾ÿŠ£ÍÔ?çñï†ÿ⨸XØþÓÓÿçþ×þÿ/øÑý§§ÿÏý¯ýþ_ñ¬Cux%XüBF• œ:œn÷ÿ7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãGöžŸÿ?ö¿÷ùƱüÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢áccûOOÿŸû_ûü¿ãYzÞ»§ÛF˜›Ï.Þc•<ã¥Gæêóø¿÷ÃñTyº‡üþ/ýðßüU ãÄx‘¤÷!Ø-ä3ŸlŸÌѢܥ潨\D²*5ª½JžVÇ›¨Ïâÿß ÿÅR3ß°Ã]!±¿øª@&‹òkz£¿Ê¬°€Ç€H ‘úζüè¿ç¢ßB±UïÔanØFßüU/›¨Ïâÿß ÿÅS¸XÙó¢ÿž‰ÿ} <è¿ç¢ßB±¼ÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢ácg΋þz'ýô(ó¢ÿž‰ÿ} Æóuùü_ûá¿øª<ÝCþþøoþ*‹…Ÿ:/ùèŸ÷У΋þz'ýô+ÍÔ?çñï†ÿâ¨óuùü_ûá¿øª.6|è¿ç¢ßB:/ùèŸ÷Ьo7PÿŸÅÿ¾ÿŠ£ÍÔ?çñï†ÿ⨸XÙó¢ÿž‰ÿ} <è¿ç¢ßB±¼ÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢ácg΋þz'ýô(ó¢ÿž‰ÿ} Æóuùü_ûá¿øª<ÝCþþøoþ*‹…Ÿ:/ùèŸ÷У΋þz'ýô+ÍÔ?çñï†ÿâ¨óuùü_ûá¿øª.6|è¿ç¢ßB:/ùèŸ÷Ьo7PÿŸÅÿ¾ÿŠ£ÍÔ?çñï†ÿ⨸XÙó¢ÿž‰ÿ} <è¿ç¢ßB±¼ÝCþþøoþ*7PÿŸÅÿ¾ÿŠ¢ácg΋þz'ýô(ó¢ÿž‰ÿ} Æóuùü_ûá¿øª<ÝCþþøoþ*‹…Ÿ:/ùèŸ÷Т±¼ÝCþþøoþ*Š.(ëÒØÃ-ëêjneïlx뎼zÖ ÒiâÂÖ_´ésÖc³ š7,Àì‘ÈÀQ€zôí][ÜXÙækØþ~R¤`sœûÒý«OÿŸÕÿÇøªC¹•¬]µ»[£ÞÿgÂÑ»p¿|c –w'ÉÇ›i}pnXý¬E{-Ä^eˆ ’y Ã'9Ç×Oö­?þWÿÿ⩲\iÒFÈ× ¬þ6EG,Ú…ü %õ­º©r¯q"B&o5ÁÏîÈnƒ!vž}øµ{pn¬õ8äÔ™nV9GØ“ËʨèpT±ÈÁÎqóVí»éVÐ,0ݪ¢ôû’KdŸsR}«OÿŸÕÿÇøª`ÙêúÄp.¨.âlXš&$lÉ.‚9èË‘ØÝ5Ÿ³5Ýѽ1ùiö`D¸Ø#2sœñ‚G?A[ÿjÓÿçõñßþ*¢gÒšá. Úù¨ † ¨?7?„sÒM¼Ìú;ÛGeÉÂæG!b¸è8\í÷÷¨¢Ô.xå[§‘Q$YnvþZf=Ì…VÔ€GpqƒÕý«OÿŸÕÿÇøª>Õ§ÿÏêÿã¿üU@ËÖ"k‰´Óܱ+0xÂþí°yR?ýJϸ¾Ô!°ÓÙõí1ù<Ψl.äàŒœuãÒ}«OÿŸÕÿÇøª>Õ§ÿÏêÿã¿üU9Øõ-AõX¢’úÆ1˜ÀŒÎL¥A,€¡-’[0:æÎ«5¾­ Kx& Œ¡‘‰c’U†JàuS‘è{lý«OÿŸÕÿÇøª ÖœAñpÝÿâ¨b9xu‰¾Ê’¦§ö°öÁ§(bÚBT °\(峸ºOj}¶«4‘*^j±ÛÂ%uûbÕ§ÿÏêÿã¿üUjÓÿçõñßþ*œ‘ŽÍayÒç³Y˜,lÞ]¼¬Qpc7Ì0FrIät­Ifo춸f3Ç t­“ˆËÛ‰ëÀ|ý lý«OÿŸÕÿÇøª>Õ§ÿÏêÿã¿üUcYãû+SþÈÛäî²y8Û÷vvûûºqšÉ½“J1´6péÉ™gf Gï"dã×ø›<œ×_ö­?þWÿÿâ¨ûVŸÿ?«ÿŽÿñTuÎÙ,Ik·00]A|—·]‘8 Ø8,'k¥ªîÚT—Î÷jdˆ„°ÀÏSØÏ¿^¾µ/Ú´ÿùý_üwÿŠ ÑLûVŸÿ?«ÿŽÿñT}«OÿŸÕÿÇøªCE3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQö­?þWÿÿâ¨ôS>Õ§ÿÏêÿã¿üUjÓÿçõñßþ*€E3íZüþ¯þ;ÿÅQ@ÿÙ endstream 10 0 obj << /Length 11 0 R /Filter /FlateDecode >> stream xœÕ]˪äÈÝ7ô?ÔÚàke¦ž0êqk?Ðà°=à…aæÿ–T•¡_‚.•½Œzª3œèR~Ò›WÎ;$»Ka@‡˜_œöOq]×vò•1ÿC?ïòš÷’²Ùˆýd¥¤ïAòbÇ@hÚ>ô¹¾Õ³ãÖû|f×)œçûúÎêòáëó+…±vZŒzdäUÂ_ŒÇòÆçóØä๑9/ÅÞ¦LÃY¡Ý~(tÀU«¬ãÂeRÆ7U@/ró ©3y ͼë+Ša˜ß_¨Š÷fÈ? ©1ofÌü ÏnpˆáÉò7¹æ8¤”zWIö}>ÅkjR×éé“pŸ9×eÙqÖf¿ó1\8¥s€{|r[KŒÉþ-.ó÷U§e¶ó ÌÖ‰††Ã $®ûù‚æÍ•—E½”JˆË yÖ/äÎG‰F™—’z_5˜0ë²è¦îµ ÚìU®Ità-³hkwv­`ÒnѤ˜T× “6C\ldŸï+Zj5F5J"yKÊ<Å,¯jòüêü Ö¡AU{“óÜܤ{>?´D¦x0«êHÞÒ -èÔ÷ðçßqž¨ì_êèKö¼#"k@×AoræiÙä‰PÞ+ÄÞÑaz»³©¸9j´Œþj´ˆþÏþ‘øÛõ5D›ÓµÌÚÖºÛ)³$ºîE®IáÉÿÂ=³Çe¤Öñ½…w¨&W_h®;¦¹½½8Ž(qÛ—jËs5Äý¯(xbÖ½ývåÆ!lâ£eLOðŒJ]ö-]gPU1šûÒС[†G¢œé7a{]§¶é:ßìŰsøùžÈPœÕ\ÚÔô= ¡uã1ЫҀóyF_‰IyŠ•¬#‚©Ñü¦¨y±¸¢qw)²#‰ˆS>”«ü’æqmüC£ô(sÇ–ú¢ìŒ×<+ö¤{C¥ùN1%M^Ž4yæJ™ÝþiÇš0§ë›B­ÖöWE"‹’Rž6ןRûyR'’Øyä¡ÔŠD~¤¦åÄ‹»éaµÍù[4¤Hš8ŠäîäuÄR0Aæjü:ËW~KoE‡|šX/’‹8¢‘Hw8G ù߈ ï)„÷‹ö·îæ™Á ‘£¸:Rn\¢L¯Ì"z LaiF2ï‚–E6‘ºTµJWè*¡d‹’‹[8)ïà¤ô™ãÜïŠýÛ‘hÒ¬Óxr7×£8«øìÁMÄ„¶ ÆxÜ” zšèó#ð*°LsAK˜°ªÉ”¡èu#gú@áÖ\YÊE²¼ÛÇÉ[l€W•)ý‚Û ’2¢Ð/k²r;x5‘‰&뉛(KóëÓóû[½â=•îÙûšn½"ËQ¥è`=à@SLÄñ¾fÙF¡’z}aªÒa‰ÍHº®«t´ãŽ ÄËOÕ™ff™Žæ ’A%[ÜñÿYM˜Vq@Ê×¢°š%[=¼(#Ë›0>`Ñ@d±IsÎ1°ƒÛC”$•h– 'À›üubÒ’†E§q M$»ìákö‰àݘ]SÌÄLãy1 #Ìe “³f35«êálA9 œºnSj'J2;¿’¾Á$A-ö‹Wë%ÍÏò6Z’ ²6¤¦j‹C~^–˧'k€z“ì, ·‹g°¦¹3Gg¾&±¦eOú&àn'štóEfß­r¡6ÈBÝÚƒx8žØ² Vó5yš5£÷xª²$ó[g'Ó C…ƒÛNáí Õ¬³±÷}æqùmyÄä0·~db¸I2ÔA43ÚŸ€E1hN+q7»MÍ©ä`?÷µèÝ»(5“Ã"¥ä.ä­(š¢1Qåîhï¿â¯V°×ØòªÌ:UÜ1¤’²ÀHXèƒåG”¾>Ÿ†Ý£“Xà>nS·vrø4ãQúÜÃ3ŽWÌ(Á¥æ :{TN@OìWHGV56·1?~Wû!\.&ç÷縄ÄNTE$™¬}¶ˆâÑ8ÉóÞ‹þ0 à±"€Ñô”ÈQ§l”¬µ2ïžx®wø äBì4C»{B’,ªÀ÷¶ýx:iÖÙîÎäÅÅ ÌÌór •á;<#¾ ÐzÀ:é-õà ^4pÀfêP%’e0VK©‰Æ²ˆ4 UúÝ(»½ÂnH)wÖgÙävºx÷ðšÜiÛ4ÕØçç+-4&ï9Ó! ¨Yg³R£QWš#yµ3úKë|T:@C“ä ®‚4YeïÃÜ,åG'˦¾ý&W92öf‰RY ´þXc;Ò0*Ñ›u~Š Ã·°ÉñO/sQ•xøÌ=Rlá… úØ€éµÏȘ#2¿Ì‹D÷ázŸáˆ ‹\Ã1ýRÅ:À1ºn3;¢ÀPºÎæÇÏKIÇ´€E%ƒ””bi±ÿÑü"~y-44ù}Daþwé°g9Å L›ÇUüÓ ‡ê+fi&E¼cEtñ?+nÒÓ~¬X£`>ëe¡‰AŽ™ŒeÿiÈê¤È&˜z¼¦ë3¸èè sÆ*x$ŽñÝéz<ËÞ4eSšý’¹'Xä3½âLœš1k¿p~‰oiZd C ßåt\ÐD5©Ùÿ0¶ÎÔÌ®!‘yMð‚ oÉ­HÂ)c'Œ¬¦æ*ü A3ÝЀÄ^cïØt¦çÕ̯@Ünâ'-äÎÈ…ÝI‰“U¢n…†öÜ\ìkíu±5QŸ"äXS)i¤V|ƒ~ îB̰A–_å#Ó.»ÎßÄKB¨uÖœ^/¹ÍIh¹¬ 7»Û#x¸wEëù ì2…¼›ýÙ¤Õ°m@!·Æ€¤UYœM@Dð¤ æO@›#q´ò¶/u¹@„5š*8ã&_¢SS+ŽO¼RL!&«b$Lì(–íáàŽ¥b.!;k¿Åñ /µèVÀÒˆö†8´¬ÉµÂÿ!&jX3xD?\Ô L˜Cã5øà$Ð9Ô±Ä2• ¤q8Ã;Æ•ÿÏAå>ÁuC êH n 08JÃꊩ Ì ì‹Õ³—¬¦ÿô`¦xYÒ<ÊLJjÀm±9†M{AJ p…dTáÒ´#ÖÛL¿ ]:@44¦cÃz ¯¶ËÏ“ø›ÆÃ¥d»Ê®ƒÆI¢ÙÁ~àÉFWd.p«ˆ_6ª";7~H+”ÀT…ô³xçv„h)Í{Pkކ¼t ‘…¸Èħ ºÁˆÕ5"îܵdXažW𑬀TÀTë­Avº¿è•}äŽN¥%«Ò”Óæv;Çk}Sµ¹?ó(¼c„v`9/)eÜ¥¨4g>q@x·÷drOÎHúš¦îµ»%hÒRŽpgÕÂ—ÌØ$¹«ýZpô9kÄó:X¹ØÄœÕmO¡}hßÛ" ËO‘wû‹¡É.a4I¿gà_ö͘Ê"N®]VKŸpX~°áy™­qÐæ]h}J Pòå}sY>8|i©ÎÃØb3'ÂoÅõ5nkÌ•SuƒÄüºî¡2÷[ã]µúÃ-šO#©ÕÀþ1_rR!±\t›Àªæ.×cw±xUóJw Œ7ŒËê&Î è¬Ë£¶ñüºŽ(p'™'þû&C“ ¼IÊ–a ë·‘.^ Ò|XÅ`Ÿ<»"psreè–œKJ•ÃÆÈ”Z2â°Bõ#âvÛ“étPÉV˜£'ʼëL˜~)Çg;’](ÞqœÖZ'Å̦-!Ž¿&%ù‘ºP;-Þ8(5Œ"xÿºúùiZã¿rh÷ÎÏèä…˜Gñòçfš¶v ÐÃÜ=_Ül Z†uºR¦’‰¬É¬Éª6ÌJrb#wN–uj–_©hçSßjâëÐÄ}SœÞñÆN6/й˜” Â­õ7%œȧè+µÞÄ}!Äk¡ ê‚ÇüsIåO¤ÁÎT ñ€i Š­ÞWªìçÀH¿äþÔ„€¹Ç“À.š×Gqà&^h 0LìÐüx̰ÝÌE)Y骨0¾•?‘@t–›SjK2ù²ÒógÕ­˜@%»}'i3ËNНª•—‰–¾ŽéIÕ;`é@ŽŒ—•o¦À¥"X™K6ÖÎïUà½[RaŒK§©OÒPQ²Æ ‰? Õa“,£ 㞎έÍë¨W"+%ù _VÅSÇ2œNä䪟fõóè«Q÷>cAD€zÞöSÔÂÒa€¦AÊdœÁ%=>œÎº zyÌ ±àc l%àcÐ=‡±Y|½_~ÊOll•?0p“üüY@‹ÄÊójj ÙïèárÕÑõíñZ–0ßè2ßžŸ$a“ÚûªVl[¬=Ö[f²E(VuãÕcbAP}®Sy:cêaÞÀžÇ"ž™¶RE#4DðÌ,ì ¶¨ôà JWb­iêd!ýº«þŒ¡íW¨I;ˆšÝL«PÎrÀ¢Ž_÷õãÔ)jM(›‘8Ì£Ú&.’-cMøºÎŒÚ×w¬­È@òWnÆ™€_Î":äC:û©¦ŽÆ†gP+#ùÀþ<7ggú3É)“ƒì·IjŠÞ•C2>ÖPc‡“ÎÚM'׿/YêuàÊŸúÅÂê/ýH¦Ï@îÊB%u”€ÒU¹p"ÊÇ‘²uv dfw¦—›ñ­Ê¶Vé3Z%§y!XÊTñ•gN—"'ðëé?vœ‘Rendstream endobj 11 0 obj 4697 endobj 12 0 obj << /Length 13 0 R /Filter /FlateDecode >> stream xœí]Ûª,7}œèçÀìñ¥®ú²÷{àÀüÀLó0üÿÃTU·-·Öò¥zw’Næ°áª«Ê–eI––d×/sø›y³‡Áºåßq^ÿýõ߇~øï—ïÌÛlì<ôÿ¿þüå»Ù|߽͇냵oãúÚOß_otÝ›¿Þ0oCzÃû·‰ÞpþÍÑ ]c¸Ñ§7ÌJ*yÃÍv¹f7&þü¸6ÌnôsžºÑÍo£Éù‰ Ϻåz´ëcðÎ`W^±;½Y‡Îî¸yârÇÙë|Å;fZCîLãJ3¹1ë(¯½ÄÁü²ÈÅú·Îôéë:¸U:ìúê×þþá—§_:üà.ÿ8|ýϗ ³ÞûÁxgÍÇõWë—¶o?ß\g-Â/}–.ë×Ô#­îöL'„"Yc ~ãohˆòáÅ)ßÔ¬ _G2Öb‡^®¿¤œ"/’Ç.æxým,ÑšPÖEÊ€ñïæ|ëÒe±±9O4eNfZDàtkN8k¡÷¼üù8Ü„Dƃ$^P``FG­×¿øÛèß%ü1£—Ãö聯CÐËîFyèkp÷×£W׺ÏÇyt‹•z_má¢Z0êþZè3TÞ®»QÝï¡…¹Ÿã¼ðÿÕø)ˆ-@Ÿê:Ë-iAõ¸¯?Ôõ»n!Ëñ=üæ×ã6JoŽázÈðRZP¼z ïúÕ4ýù¹×@ƒná\¹Ýo¶{øßo¯'½½©q¯F¶ ¹ó‘³>íöJÓ|xÊŒùqYº_Æ€ß}æv©­ µÍ3¤çGZxd†Ü°øa/7C´0WhÐc‡l–nñØjÓŠü´Ãâ…¾?»?µX÷gžaúÙïO¢ÜÎÌ1è%¸M_Ý-AÍ^Ý7;ã½ÄM‘ æ´Üš$*¾E1ŸJ›[C˜@tulqMèki3>ãàØª¹ïÅ\B€’ôƒ˜B zVí@O ×:ó± ö6A.arŒÂŠ0Á‡é–X1D]VèsŽÄ¬ÞƨhŠãì)tÜÃØBûv4}d¦•!{;«pØhè²°(?Lv:¤5¶Eô¹>8:¿ü›:׉À¹0Ãi—аÄÇá(M~­±ÒG§§Ó¼‡!ÎÒØžrºù@kQ'êŒÁ¹q‹ZÜÈ·^f"tEÄ'.‹4Ú(¥ +Ÿˆf‘APQ¯L‹M©”b-‹Mù±%?FhÅ$Çfn‚LM M±*øåd&-yŠ›‚ž’±(“³Á°?D‰À[o£ø….a‚ŽLñ14»6Œ:~„O{ÎË0½=Z"S[¤À·©À6k¢H™‚µ\¦¡‰_ ,‹õ&¨1.‰Q5%˜1O…U ì YË :ªa}ƒemÝÅ2¹ð¦6í›ÅŽj4eécVR(L[¥FàœL£°.hvI q¤Væ›xHä±w”f³…ò3-Ú:«ùa˜¿/ ;£ÓN¦­³ŽWG\„ o |8ê÷Ü9¼hô£þ…9K,Ï0Âg \TÅ ꯜYb”QUÙäP‹hÂ<Œd’…†Éýó§ ×Â4 3BäHûÓ„Ñz¦ýÙ^üe³8/-Q7ÀD¢Âüwƒ¾cIõƒÑd‡CD× !É:oÅŠ¦!L1'\f¾ñêGÏø3!=Z̹I`6FŸB)WU\þd)ß‘®m\–¿#'”tÔ2† ‰ó€Á5öÖY§Ýî)p²FG'w"‰å˜Í»ÀpPfQu—3½…ˆŒ 9aù~ù›C ¹~&‘·è¬[snIjö®Vg-x0ÌGñMkº¥£äÕh°d鋞Dhv¨Dh‹_a˜\ßýZÛ’ô±6÷K#cqyšõíÈl¯Û ˆ]îÎ@"˜”z€6ܤÛpåEhTè-Ârþ,c¥©-‘Ïšr€FŠ1*DÜ †‡9t«ÎE#2ß{êÁ×JB4‹Ä}%„*`m0ÀIô +´š™,A¤B…ÄŽlitðÔqS»Ð¢K«-F`( €E+6;$0®Ìbâ½ CÉ{ÚÚ®“•ø:ú°X´â äHÀÉû4ˆÊǪ«ÕÆžSÇRMR!B6£NLAS_ÍÛècù$šb¶ööXêMƒã4^D@;Êeó`b¨C”>¨u¤s™'âŒE0ÁÝô9—— ‚Å ©zsÛÝECõ¹Dݪ)z6û ±‰ Á.¹øCišûjNãTÐW+cîMÖ‘@\Ð&UÐÏCO ºô5óC`0Yc¶dAþ 5ÏŽÐ×]W¸°ÉjôXLx0ÁpZ2)t™¸‘\Ȥ4T«¹“–ŒÕ+°4(„// zêC^½DYš X¦ X©(iöj×ã$eÇJpk­hÑÔóÕQ[&.è”MA-ôÒ—•!¦l[²ÑN°!·’Ö8Þ£X”#R¾Á"·Õÿõ6²Í›ôÖŒ|#1/~쨉åýVƉÙn<xºƒn uºâBx>ÁÇM6Ï ›ÅÂJ¢çÄÒ°¥R¹Áz†Sž1#/pÞåW#YÚ*4d1JìJ:Ç\÷00%fXS4.èLа“E©@-a(Ö‘”!øÊRY°+Ñ1M·†7ˆ;©_|©¥¦dÌ#•ˈà€6 OÅ”•k µcÅ$ñ±’äáÉ‘È3X‹Ðßt ë#Nh€Ñ%Ï ÄòD 'ÓEܰË?äX–bó½*)æ›Jº6´ï×nïÖÍø¤©|]SÁȹjšÙ¬K…tÓÌÕíŸz“¦™C9¿ IomH3Ç„oxGoë°@ÇI·©éÌf´bº;C»ÞNÒ’ªÔuf²Ü4ÝO–Ȇ·hZ ŽY•. —ÁÂfЦ( «•"‰âP¤{9‚>Œw©)'á{´OÊ ·”Ä1MBsHpQl©) Ü#yPâs4¹Šwøi’ÁûÌj^_R>³4´HRty¶ G‹.«Ì«‘p5÷Æôÿ1sOš"à°½ÑàÙw'“eXÙ[r®…/ûÍÛ³&>[H‘à»l·=ž ¥Z*³<Ä듺Öûb«û áÔƒêÎq½×hÒg๪½(VïÜ=»D‡(ΦgÃG›­!ÆE£É]_X”FK /RŠRÈnøC0†f¯ŠHö8)\ãjS̤Å67î„MmØ5¶#b%˜`…®às*WÚSÛ¯žµ%pYÁ+²õ4g úÂg†€Ñöw6²³1jvNwDÓr7ëÉÍ'ÿ™î²‘ç¥Û¯Åhº”LHË›®àyœé ®‡Ý|VÍ•5U¬³€©¶¸W‘$ÜjõÒíÂCiú["'kÞWôGÃì$Béî«“}"¾ª¸•ó¾_“§÷>>Ù `í¡é³”ðì«J0ïtºE}6Š>{¢+·Ïk0çsfa‘ЏÕ/ùnØGSÖz]žDÒÑxj Ðoúè´G üìuÖÂLBwh:n@)­œ§¦Ï'©KI6Ò-À <š=9è ts7p|Éž ÓÌ—¬¾ç´'wí[„×i»õš¢ d>Šüûwã¾y¡iE}!¬ßù>OpÛñÞ]be{9^L°®tš޲{1:o @­ ‡¶z=ÿäûþR¾ßLŸˆž¶ôú<­Üλ¼Õ­¨9ᬢ0ÙóCó{ µÚŸù$¦IÏDe%hQQ7w°kó%EŸº[tµ`á¦N=­•Å7Úö¬èýµA[¸Ž-4 ßäá¸Ã×>Bè_Bøª§Õ‚Ÿ®G-TNëÌ c¶…faÌ:/MÂ8z8+ò5…‘ LÝ+JÕ#TAœsËW¾…VÏ:ë‹gÃÎð<.­a§VÒØB§Ô¶S-öŠF´çÝ3–éÁXðÅ…“úiáü¼ÃS¡µèháÌØŸ÷wŠÀ2 øDshùçRZå{w: Vœ%J«%HÌ(qï~ “u4^ts/½„—M›DÙ«¿×É3IßyÜ]ûZ®ñÄ—jD—CÚKe…»ÑöÊi7¹o1ÇQ9+ËQ˵¥é3v!)KÄ3Ö58Wñû°ÍºU®}mø]ó=[Nìq÷6=X;ÏšŠ4ï+Ö®—½ ’¢+žlƒ;KHM%Í­†ÇÚ‹~§Íº²Ð/Hqef p[Áêß„É~ ¥¦yyøYg÷´o„šY)ÌÝ=CwÖSm¯\îN0(´U§²ý3ºc²…øƒmW'»ÂئØûãxGR2!›,÷ž»”´Z©P™J4bŸ•tÕ\€}ÉÞݸ[¸°ÍùbOµ[W»d†ë.mßä5¾Ÿ8ÉJ¥˜Û=(X#•Ù× ä-ÎIƒc´ðfîQûKo7žÓ¦êålàìØ«M©˜I¡îE‰k;%ˆî8úÎ[-FTžô«*Ï'Ž'ÚwªÀÞÓIà=º[¿—î8¾õc´M€ù` q§ðÍFÛ%ß%TçùKNµ&fýøgW¯ˆùæ™óÌIŸÏöÌ·/Îêlt¥²çú1Zÿ´Âž\7Ý@»yÔÅ-îIktr“©|ØÍMèxØÑ-‰zNA™mv;÷´ÔivI70›µCi[8RƒZ$DÓ¡%fôu:²ŸDÍŒê'OsŸÕ*ò£-7ÐÓx¨±´¹ÿ“‚A³‹<®”$Œ³n£þ!ÕúîR²pæòÑJ&Ñ¢dcþñ°VCCé^Ùj'0ç&*[Q¡×9}««yƒŒÐ¶§É´øõ˜î¯¡Ý¹Q Ú­¨î*ë¹ m4>W>výÖ»}Zu@É4“nv›æ† åÚéJP÷®Û@¿¬z~zƒi®ª+´AdV¿“1³É†r¬v¨ùsÀ*|«üÈTß7þ7â†%þè¹Õú…Kh=}žû ð.w Áðn[¿ÞÿgÃkÌÓŠ J†—tS‹ r’•(#”“vµh¥ÅÍ¥œ³ Ýà×}sKm3À3ýÙ’Ë~‚9§[?«µ}sR;_ÛàTÁÇ#:,%ûfC©ý›9–GÕ?{§ÂjñÆ`ÊßÀà‘^jECzïÑ£ú–£ªé°ü=c# ÎnàÊØÈ]v¦VTŽfÃF²êX° h÷‡Œ`žê©ÍËÙHíx–‚Šœ,8Í\—mä‡ÿðhendstream endobj 13 0 obj 4468 endobj 14 0 obj << /Length 15 0 R /Filter /FlateDecode >> stream xœí]ÛŽ#·}_`ÿAÏ¢ðÖd7`˜‘fÞ ,H ìÿ»Õ$KuŠiG»³ëa'R«Éb±êÔ…Åš?êð7uÔ¯MüoXÖÿþùïÃ?9üïó'u\”^üÿïŸÿùüIsj9ºƒSê ÕѯïýþË剟ç£Ýž}1?ñáhä'ÎÇ/Ä'vŠÃÃ|ùýð«™ÿqøòßÏŸ¢F¬O~Ìõg?±Ï¡ò<®îòM`#:6ŒÀiÐì³íà_Ù/؈慭FàT»3{C±ç'AWæ¨Ì`>BþfÿlŸ/Ÿ_â~þ&lñc«³-f¤Ž~®Mã¼8wÉñò®NQ×ö]Yò§ÊN'z>†.lÌDw#KG‘HÛ^[€1P¢àŠ:æ[×’('ü]:O¹d'Ý!c¾T‡?0† õLÚ¹þ¤= <¶0†“çõL:ÈZ`¯ÇjâÔ/«ýRR×RßÞæ øà˜s å0‰@:œ~^òÃSšÆŸÛ»Ä…Úƒ"x Çö%pé;Ãö¾¢ÄàÛ_®á„?¨ãà{3øõ½ôžù]”Ñà@ä'F‡•©æ%W}Ø;|Z?­¡ùã¡Y˜v±ãÓ:ô¿4ì+‡ûŠü€ÕkÊ?|ÚǪ›ãÀ*$À3êú´šx:¡š àŸoòiíš¹|,pNk"@š(œ›/.[¦Öøc¸¼gÓ{Îê¥=¥rG#¾ªÎÊi­÷íÒ+M—E¨ v)Ð.•´fJßµ ßšQÛ¿³ÕÛkRÊê9àpMáR|}ÛÞª€†@Í3¹âI>&«×öûyNEî–$Ô ÀÚE®??1¹Ô1ÄžÇPƬ¶–:à#>ÕÖRç·kt-Õ}¯àQEœÔ‹²Ê§–¨§øÿwR횊ޕ,~­÷5ê¬Yò7Aù¤ŸKþ~eõ¾)ᘈWüêubôÄÆ©I«HˆMPaU¦7Ñ¢uÞ…HŒUOû×¶P½¿l"·öož…¾¼×›(×®îü]K&Sìì´e'¬Ñit ïå‘Ήüò^Züœ¿ÓfEÝø¯A^eå,ŒRs^«¾þzÁ¯…]7ëT'5›Ý,š"$+%‰?3p±ep¦Y/¸3‘áO‘°,Ë:?:ÉØy²l³"?œÿ) gõœÈ7 /S^¤°)žÈd¢q•_œØ§=¹bˆâž~ì ïÚ»ÒÖ)å8@赎TŸ ‚Œ§elGa™Üdü ©d®:œqEìaZLòœóªì ÖJ¯œ‡ ÷ì¾$m쪻„€âËpšÛ´Ší 6÷¥é3óãë¦le"XWÔÁ“?•óŽšôeù>ü‡S ¬^ãûÄ5‚ϧ:œÁ®³ Á¼õ@“€ôÝÍɺN r²zVc¢4Eçæ£IR¬šø17?½©­²zî:0ˆ'Fœà ;þî §º+ÚýÃ[.˜œf4QKû ¾jÁóê)h_>øsÑ/³½Ï€¨ðøú1[™èg2 MØs ÷-?@o£ñ]Öþp{]…É ( !Í`idþ|wadþ|wY$øí7Wï4€·&žÜ_¹ÓVÇÙceV o¿]]˜°8åè*MTÍaT,  1w ùx´à¡æ¶ÖÔí.wùšÍwÃ*¯j~£ «\Íê\è«UPO -‹~zxUÍE…‰†R)nrÇù(üÚÏ5B/W'B*I«º©­­zò9î²ì¹³a5Gªn¶n¤ãªáàûP̀߯óµUŒÙ'çÞ,yùXí9߬qoÜYxÝÐÙNâsø÷ßOƒƒÓð~ ×±ÎÙ·ñ ­…“†÷©s¡?¤ÎÝ:s›òöVî 5¦~tóÓhŒ±˜4~—#ú.5¦wåá½%ãÒØKp€Æ€ŽÒT¿è2JSU¾«)žN–kvl‹jZ9,½ƒÇ¯¿£qÑJmÞìèñ±Z)úµ’ŸÎŒ6¢ ;ß± [h…¸ç×9ïéëõp{z²ôÆU½+Û:^YÓMÏ?&C©¾Iñ NÓ¹gu¡Î.F.hÙ°¤M©ž©á3â«ßé‚!å»^Ðú¡‹‰¹“€™ú £Š#Ñâǽ…teLL;–Ò5/ –’ËbrëYW´®P¹Ëý…\^[ªSµ-…ÊÚ-Á (Sª6&78„[y—ÓºÖJëT"ܾ’³^‘ ™R©ý4‚~†²]eÊu–D_.Ê&…Úûî‘:dC®…dúr%uþŒøf·ô"Oå’L¹”•kÁ'à&^®’.eåËJ3°;}b„ÁòÌsÚßæ8NÚ4?[¯?å5½ÉEô¤^Ê>o—kül¦ˆ—ëps¬Æëk¸©§Ë=Ä|Q+\Ýl4¥Üé"³‹wº:¾òHv½Ð_ð–-ÞˆmÄä±Þ†aüˆEØý2˜«Åt»`˸Õ.$<ÒZ€”h÷)ŠJ[_,\tÃAµD]rÕJk,ÞFûæ·(~Ð2éŠÃ–i¼Û]«óán…ã|ºÙU«Ó4|wcP/‚¹9W_ïY]™¨Wp¡P™w_0MBÿš5·g$‡ «#t o¬"øú"ÿá½>]©îý÷äk÷„§—uÚ´Ü,æÍj‘ªå¡w ¯f¬g~ßcò]Ò:ëwb‘VÐÞI`H­L¸ê™üö`lŸƒ~øUÎÍ;’&Ik ~Úòk)Ë ÁL29CC²×é6?IœrCÒ‹$ç,<ŒŸsx{ôù-)L: H-m0m2 Ýl‰#£ ši3)aC²Z°áÞ¿¦À_Å3F)ö[ÄÜþÉ~J‡ÏÈv¡-ßÖµ÷A"Ñ•™KØLBÊoÊã5ºWTΖŒiêi´­2òè¹ÙRZZ ÿój±cÓIY..B($fbF Wϳ‘97V˜«Ýž°Xû\ÙÌ/’- BŽG†­m÷g¸€ÉÈá0É”ý ÙôFž83 òÄ} ,ydz¾uwG.€må".ÉФédw^Œ!™à<÷sܰµ¥KÈo`Þ§Ño±Âáò´!M´<¬1'ÿÅö*©5Øþ¾°=÷¬yNÒg¦Éš¶Ó·\Aœ:¥´–öGÞw‰l4=ÌI½qÈHO)aF+Âöë§Ìö¥“N1"¢¾épÉâb°=Ú„mºÐR¥åÓµ^º¥¡"#[„¶V x¦õÖª·ËÌËË^¹º9ÑS€³ÂÃù`IÀG_šá‘s¹3U„[l€T8Lˆ£½ƒŠ_ãMy‘Ð/žm”΋‚ÞfáÉ ivNnÖ§3²“% 6tžãUvŒ:'‚k«q"úZ þà|F8²*Ç•E ·-“På#è¡ÜDæh±­M Ñü"É.W'"3¦Þ#IðªÙà‹˜©¥¿Ã Û²‡Â=`r±%öæÄÝ~Ú4¦¯®Ð«Ýñ‚U[Ç«k¬޵³ôÁ#H4¯¸áà²Ï(ê;äïJ–²×b‰è}L……‰Ÿ+0‚c¤2RÓÌ4DúEB™¸øêXoY$¿®Aå4› ,†`:2„xqbJé í.B¯Äê… væeLP€*ý"µ{ŵH:Î]mÁþB}dÁÿçdGÃ…Íö{GÂÎüeD A?‰xÔ_¹¯«wS?’€šP›!,öIòxFx))ÂU$¡ZâÙnJ¸©^,iÜ/a'ÜYòí$X¹òqò^Á-*4ö_l´&z™óD/s±äe†Hrøõ=ž³î·Ò;žØ†”Í@ xœÃ#r½íY¶Û@ó†ÔhD0=w·$¤KÒid#õhR÷O)±&t/H,‘`#BFÀš(/­“gÁIFK‘¹žË75¡ªT"j#˜0(#ŒQŸÉ“BÜožjÂT혌dàûJ-ex1"yÙ­ZÄÛr˜ê™¤…Ñv”ljÝ$4lßH¨.Å…iNÓ®VN;Bÿ/Ö ˜ÈDçf4ÓD$啤¦ô¨€B4—([Z‹Š8·Ò°´TšìÚñ? o ºëP”Ô ªxà1 ‘ãIÁ-–©`4dFÕn¢Z9ö*é­(vR]ö&žZ>gñM.½ sënÝrR|qµnÉÌßÕz ±É›»Xß%fþ¾EñjЧžoáP„ÔP«§kVˆ!ÌÈŸj´±ý”"£p¦#Òx«7@€ò”ý°«’ï™l?ž’‘#6+”¢fól&J,òƒ{OèÁ Ær3hB0„çW/Iç'ÃÂ5 .‚R¡`Ž­CŠ¢ó*v‡hT6EYÝ)Wn\ÙÒå^O9ÀÏ*&‰àLv:–8dNæÑÃŒÌòL·cã±Ï:%š˜‘ÑŒœ 5‰4ëh‰4èí4É[Ã0­s±5‘^)õ+Fâ$fk¢Ãr}Á’ Fß±š¹)³Ø:òA0õ©ŒÀ$ûœ^m„þVt “ޱùHN0h!³ e‘ÐÏhä¨ê>oiÓ@!‹g÷aWÌ2À7Bàº$Ï{!Ñ*Ûæ¨æ?­Ô(\‘²q’¨–?²#Æo‡ÿ²m¦endstream endobj 15 0 obj 3971 endobj 16 0 obj << /Length 17 0 R /Filter /FlateDecode >> stream xœí]˪#ÉÝ7Ì?h=àëÊG½`0HjÝý@ƒÀƒ†™ÿ_8KRF„êœÌéö<<˜HUVeÆ;NDæýù0þ2¼…Ãbùw^·ùçáïßþóݧámÂ:öÿÿå_ß}Z‡CšâÛ|È)B¸MûéûÛcx›èyìp\ßFú|Xä;<Ìo™=שñÃ2¾%úÜå;<¥·HŸ£ü`‡óö{> ÂJ‡‡ß^hþFŸe[+y¾lj¡Ï—mñÆ+CÙØ¼ûÂÏEh¶ÿ618}ÙÛDç:ñË?}O‡0¾ütøa8 ãß_þýݧ0>ÛÏ? ñ64–÷ÞG–ÛHÔ‘é6’ oî#c¸Ï›ËncudãÈý©¹¾{„7ÉÈù6’ åî#—úIuD¾5Ãßa¾~ª{ÓUŸ+QÌÎ<Iˆ—ŠPï·“a©³N= Õ§:˜C¸æù†i8‡õþà¤ëƒäá62éF؃PH;œ`ïǺû«ÕÃ\…UB*ïXðùµ²~÷’º‚ Ö4ä±î×ÈÈÙˆ²¾¬òcÑÛ^ÆúdÌúêN ÍV™ëj¡cHðÔç*׳²s)ìü\çÊî.ȧº}ªÎ3Âüº²:/†¶Ê»"‹„—©\Š™ù±ey†agwŠ›9íI¦Ë=É@šPøTeÎHöÌ$tÎ)ˆHÈnG‰êƒËWhp,Cµ¯mÕRˆb1dr.ë\6Newš'KKw±ºbDê3iu3[Ÿê”êuãj8JlP8ó¦±E3R}y2ô>ÃÞ<âs•lc[@ÛÉ›ˆ¤S‹‘‰D´Á¼áèƒeêZç.ƒ`ýGõƒ¸åÏÞ9´ [Q DMu7AÇpVAìx^Ü]±;h¯Ð:ëp?ã× Ì´¬Ø(äMÇâ#îï£5âQ»™¶ïú™ñ°Þ¾ºÓÂËÇÍ<µ,Žº{Ä]’wNu©óŒÃdJ”–*wVºƒýgs€ˆ£«1òªdÇÂÕ‘ªAfC.J$³èz}ÿj≆rS¬tÍ\X}³„µ¾Ý¨è>zÁp$…\gÉ›Äõ jÏM˜Ä¢[Œ‹iHÌu%”™ºT²Ÿ:7Ž…á/èœÎûsë\Cž³IìL„…)I ^ ºJh0ßÂ}Ö "vÖM¼‹Cë'»Áô†é4ߨ¢i¾Ê2@âÕÑFm‡p.éjH„«sÈ~J; ¾Åd÷ν ÎQ<ŸQ{ ¬pâùó&¦‘mÖ×…¥2f2Œ)"Ÿ„F’¬£Þ‘pVǬ†#@ÿ–¯l¶$Á]_?Ú3ñS{CžÈ #kä.šÜÑ•’ V„ï&ùn™›kÜjXQÜï¶ÐV™yVV‰„ƒÒ,¶Ò;yÜIá4„b—¯wB¦sT¨Ãð•(Vn<£Ñþv&æcž´rS”çärkÍMà§!„Õœ¢•éå>ûÈí©Üô©Bw  æö¼û3·†ËÕìUæL†ðê. ǽ‘ïËɼ—`=á×…ÿÝ%üljÙa 'êòmH0WÜF£ ¢š!ì½3h¾z™ÅÌ ÄÇ$={c²^NbXPƒ²\µôZñiO…¯À²’µ“Dt²uõÀj‰ËbÔÛ*Ðûtz0üTÃߥ«H¢¢¢#NŽ @|2GFßH›+ä}*|1ŠNß»AiIm¿BñWÿ!¯1(ÅU¯Êê/ئ>íÑáe)<ýòçO‰þ7`% Âò½D´¯]L®ö¶‡W*ØÌ‰¡Ÿø«koÊ=4„#b†EݵqÜ ‚&—õmι˜Ï¯D‚›:¤Ã8Ϩ Â_óŽ×äš½*Å «{ŒD€a/Š&ÚÉŠ)Wõ£…;¦-ìÙ‡ ¯ˆ¼ªsö9ÄuÛ¬fzÉ(¢TW@ \mŠêXŒ.¡G0Ô†h%¢ÜxÕslCÉNÔ!Û¢:ÆRTÛU¹Ãú €uB">Ø€þzˆEDÇ.ÿ]„-š%¾Är†â»˜S]„­Î =™K"‰r˜ÈØp€ÁÒ‚˜®ÙD¶Lm¹ëàÂŽ=jƒøøý¢ú:;Ž ³$áÛŽ„¤\›q=z5£ XÌŸ L1fy¥w“q .cF^ÕWàýMPÙæoÀxtßiéKžÄéó‡¼*Í{×åj :f#E/{*´ßÝÍ ßÆÝº9, щ1 S}ð¡Màw€ hÍcÏ@êä ׉}T…sh”P7ÓK`{ÒÞ!ëm[Yâ¢Ñ#Š¥GÀ!Êß­aÌ-£ÇPÀÛáLš/’ÙŽ1º•™©Í‚BßAK?+¬´Ó”‡ÙÑo‹=,ÖU[È£¤ú'NSkË&€×F1ä ÁSᇡØÌÅΦR1õŒèÖð´œï•Ä1÷À"ÓåSÃÖ„™¾fY†ªµI5 B4Ë’ àå•'…TrYMÒW{ïiZfÿ€ê°ke ‰Ä§,rCÄŒ- 4ÏU!myÇú=Ký}¬¶ÀçÝRWŽijÐëÒl¤510vÃX‡÷~€ˆÿ;+²÷ôø"OÝ(Ïm¿<݆`æ™Î¤½CCißpFñäÝò ˆmÆiMÈ¢¨i4°´dXs×1£;CóÖn›s+sÔ¾tM <[±Õ¤¤é$a À’ü™ÉEPYdN¢MÇö(FàëdrVVð6íŠà²Iõ}',æhuI!ÿ^`LÛËIEbÑØ«õ" X}–O°ã@ˤ¤4yë*˜q‡hÿÑÚ/±Û\| 2í¦ö \š}í$~fƒ° °ª¸x웘›eÇšp=g™tž= " 6ØzÞªánú×|ö±/ûÔ­˜â^¾\ïbäü )2Ä`ï¤Ð¥ëHiái„@=ÃL´3ß±> ÷“‘qJl÷á •íÍÑtAû…’æî¶tÎÌgƯŠ%ž•ðŽ >§øš‹ÖyßL¼÷`×Öomª>m ƒ¡¬$mO²„lií<É"¦Èª¦CØQÙ±‰Ð=¼ŒCµ¦ÏñRçýF éKØöNÇ…±„å9 éQ;­X¼RtðsªÀ2¡¤%ÖÉ( ôøX㨅“ú""â;Ú–å«S^Á­EÓCÑÖÃílšþv]~`Ñ>ÛÍ ¡$é¬q¬ª¡ÙÄ‚P !7W/áµ}BÝ,Ú—]éºa{©KÞ¯¨6i YH à%8O{Ï:YGùú%;𜴶¥š7XÈvÆÁË.""/*Eæ°U ž¥ÆŠ2Z—µU†«4Y%˜d†h@Å+öéјü‡€¬1mÿt'ž‹N§+º'ŠÍ‘i+ +25 xí9¥zd"õH£d†= £ñÐS{J)¡pU—WšüXÌ‚òLÊ͵qJSw¶sZD t÷õԞ雪ըЃԿé)(Ò\á@ÉÓ”;:²:¯T8r–}× Ô¡î2Æ„ËÀÂ…sC"Ë(òØ´ŠCsæj&\i÷[ííK¨×i…ÐCÜÙS<Ï"ùŒ˜ðGˆèJ‘\é±õ.ƒ4øÑcÒÃžŠ¾ÎG(5°û>ŽcÁiX±±azý›úÓæ£H|Í‹–#ÈjÁÜGÌÍ;ñº' RÁ©‘…‰QHë|œ4ßï=ªxE‚§¶xßð :ÅÇj‰<µG¤MÓdÄu¾’Üo¿ºÍ[fœç)Õ\rSH¡Xª±¶¿¤ Ô†Ô$Q(â“z| ;ip^ŠÚt¹FŸk'Õä¶ßçT»>GÓÖÑlÖðíøk”݈w`ÁÖ˜ãèËÈÂÅ!Äf8Ý|É,z-Û“Û5M¶Gau÷Íež^¹^'}§*\íÖ×túV˜›úÐÎ?z­kW ¦‘Ü• 9~5Tfà™»lý48ܰ=¥%Ïz£tçXL1?’w˜î™æÖlUƒ$Në‚„z=T®^ð\D#KÀø ‘o1cb”ÏO˜±1“Û™§ü# "ø rø”¦¾ž »<'7=Ñ4%¿´‰¼¿ÿÆcoã ƒû( žâ—YwÃ3ètþìøJÄzºûRËëåKØËûõSmÜÓ` éwg¸+é´b­íäæ ¼ŒîÚû»yo­²‘¬(úîudn“œkå×…»H‘¦$ò—Øõ›•´=’ùêË{ù~=ÊÕ¶“Ït¸ý÷*XÔ‹¶[ÈfÒ:®y  8½¡†ðe¾°^SÒZØæžñ<ž«Yt¯ÀD2˜Sé4¢Šïh ôðíWáŽî:}e„\´µ_'jC1kÄ^`ª‡,‰KU&c%ªHçž¼îÅ£Žé¸oÜMì¹åÆgöèb˜÷T-~m+1© 4}ÂäŽL°-r6Þ´þ}6÷7»²Nv<ŸKÙ´5 çV> stream xœí\ÉŠ$ɽô?äy@%ßbƒAë} @? @ÁÌÿ‘™nfï¹—gTVkMC7é›™=Ûý÷ÛýŽù]ïÃü÷0-ÿñÏÝßÞýçÛOîmr~êwëÿø×·Ÿ&·ëûô6ìR ;ïo?ûíçÛ‹.^¤ðÖÓÑË û8¸·Ž~ï&yawÓø–Ø÷Ý8^ ý[¤/ÂòöÂ;ö8M®'ÍÓNôëyZö}ß½ôû.ñqù Å¡°ãØ÷òÂ>î:~1%ya‡‘n, #ù¶ïù1„yRþ"öb|c3„À9.ÌÿÈ÷ÎqFôãTx?báÅ,R¾p^^˜Ç“ã 7LòsgÝáþ"Δº¿˜Ü¿ÁãÃû¨ÝÌ£÷'Ñðl‚'ƒ‹·g‹<ß×xk!ôý«.ÿNž\`¤~žñ”ÇŠ²XønÌkÕ¯ò†ÖÕç•]ë¾4'âä[òz¬®/ŸÏÑO2ƒîTèõ§{¡ŒÓ‡Ìó*Æüäë ð+sANƒòÈš•\ôîölP²ì×Ûd‡Ã†y‚Þð”'Œ†ëÜQFìÉ^ åó¢½|*cž‚Š…r4 "~¿fPeÙ©H‡¤ê`‰Â8IOù˜©‡ÜWö 2ó"W¸€nuàç}~-’sk8r™û¥È}#•¹Zظ:º|°røœ°Œ3ãƒÌ˜EË€.Ë­¶Âà/ÈðQIý†G*´â6ÈÂ@ ÎLœñƒaƒÌàçµÀ£ˆ°5x”ö°Ó8ƒYCyŠxzŽ)ž=R¤, ŠiÚ[A¸úe0ôáÚ|’I9s¿aµµŒÆä™¨FëÌçKÔ0JøGùu_ÃdŸyÜŒûâg–F.œaò;£,åÅ …8‡•háoDÏw«³­aT?›±ÅU‰Ñ²$PT¤kp;eA¬BˆÊW塊ájÍ–d%~˜õQj—yŒ±ÞÖ#Ìê^L0E<SCO"¦nŸŸRyîËd&ëÀáá`é«&¥`G¬ˆ+:ºÑŸ'„”e æÂ…2±Œ¾ Í LjPÛÕ¡e ¨Âš`Äž;9bÃXˆF5=¿az:ŸÆ¨Ì35ÈòÕÍ|”æ¬0ª1žM\,B¡‰kàÐù’ѽ‰ðbç ‘ŸäÔTĨoØx†Ùªe]6Ð*Ì¿ŠT®ö̺Ÿ²ò†“ˆ‚-äȑq¿Þ`<4ðZ·DjV¼†þ]#¯¥®aÆkHäqÆ„;nœqùCd? ž™hB_T œØD¡Ôˆ¦+M‡,A¸uVf˜ tEŸÖXz³º…˜×¦?-3”>ICÁãE]uèÿ7Áf'XéÚ´’QÊ ,h»—÷y¸ŸSÃxÉB""¤ÎÔ¿=› ÌÎ~À(S¢£8”· QU¨ê²èï4ì3)ϰ]N RÕÉ9ÖÂdŒHÄ @³“˜ Y«rv?ÊYöñ ¿óa™–þ?dÁúÏ7^ÊœðÈO˜œ^j\‚ºBAÌÌÁáMg>G!¯l·É6•W×[÷ñ”YVã±ÄAu£±#b…mýèÀõbFWƒòaìçKtO~WÁ,ÂíDÑ€ŸÔ3~ɽ­ôLÿCÏ”—=nµ>ñ\Ñ–ææîÐ7öšäZvüAØ×¨þ°œÁ w-]Å„ô1JDTÔÖS¸dÆ\"ñ7ÊWB*èÀmâÊn\,šW¶ä­>Ç•,‘ô1½Ë‰#ÃaáyÔ@âAŒšìyqˆµé¼‡ÏsE­žê©aÆn©0XÙE'Øä¨™Z®f‰å©Â’¯ÎíìB…´šaÌÃsë±f^;FP=pc×u=,Ðiã¶ÖÒf¼Ç¢¾…ÌÙÈÌ6’ZiVl<ÉàÖt1Ê iB1¤%ªáöPµ`ƒIuUбãT?ÀZdœ©¼^æp4yâdë7hµú~ x¤ÑªfÄ|Cî¥KKÉÑ#N0ù_Bð2Aªa4BÄGÁ輜ƒfÛÅÝφ& @‹ ÁË™-†\òH†”8á§óeÓká'5,ω{¬ˆkAbU·„ý»°¤ïWld KÇêhK]n†œ ® ÇÒz`hˆ¹÷™á˜Ïg¨i¢Ž€K[ ÁËê¡iü ½L/ ÍZ!6ß@3Dqgª#ÄïàÊc¡Î¬XÏ9Þ¦"uV,Ïâ™ )¤nà &Â^F²mð'¼`˜ÑXH¼Áp©–øÊš3 ¥I¢óÀW@O²û:jS˜4·‡ ËŒ¨z+’ Øžƒ$ŽhÖG$©DdcD…óÂy™a$°®4Ï|à™Ì–|Á.ÜÇ5Ï'Y÷ø4êhl1RY+‘kIÄ «^>Õ Ò"˜õ4$Έ×ZŸ9Öi$=ˆ eÍ¢|¨cí§\¥Œi>u&<\NQ1“Ž}syI´{@ÅyŽÝ*í8R‰âŽ-y‰8LÈÚ_Út{R<òõM&ý a­ç ÂzCMŠø…j—„>YvZ?·TÅn@}}ŸÀ¬Ô§P5ö¤‚„±î z,¦ 꼟üèr… ½¢%3„‘§^¥¾Ö³…£æÑOËÄú$yO&R¶©âž³½ Å$x#ƒªÄ4F²žoÖòNºýH°§rWDmeÌÂ’8ªmµeŽœæ“ ë¼´E a[Ydòº¶’¹Ä¼‚–šÂØYÒ{ 7VBfÜ“B±©mÓ]5Þ°M$cÓîä2Ô…[ÅQÂ+&"ÑÛˆ„Éy“ûdPdG%Ÿ:ê5Wƒr„)4þÈÖPl’\mÚ÷W7=œYkÅ )¥"t½¨I´¥wçóì ¹4ò¢!éÀò€/¤è¦Jâ͘›jòZŒÝÊ…MuŽL+¢"ÃSØè«-è\ÎØæt†ñÙò:“áZ<ÑÐOß£ŠˆMýzÀ(ñ^|R…]½jÒ™»óŒ×DÍÜÆìD²ëø„~ÞjÛŽiIÞbõê±_×—GËQ}Ê£(]ÅôT•M:¨ûø&ÁIEˆ=¯õ|•¤,Ö!p“nP4·ÒÁ”¬é¾IÛ7Òሸ¦KÁm<| ¼·Vé ÿr!UÃë¯fTkÁ£TÂèÍJAƵD·åÇk{ÖÍäÖ<ÖÀCv³to­¼a˜t\Úâ|‡ž¬DÚ&dšì©?Ô“H”΢[±ùÒÜ×¢eøPÑNK¼ÙuN]ü<òf]µq¢l}>sOæSEb40ÒØæç#°ÿÿæÖ5¤Úëj{ÍÀÒ"¾‚bƒÝ4”ŠÍ\3šÒáŠÅØVf²Æb ›`¸’¤¤5zõlÕÖ":zU£èµfˆ·â)QMq‡ÙÍ`krÔ[¼@’A·"Æ ×w#`WsÈúÏUa[v1ži4[ÿö…%¶xͶ’Z“2’òœÆoÃÐ „_žˆA³ˆ+ ¶µg’{vmeypDÄ+·á 3Ïï%t¥ÝWsµì/ñFO‰¨ Ö³w§#¬)Îâ³·1—0‘WÂ-€ÙJ`-H{Èÿ(‡Y/êÏSCBìU‰­\mÁnܼu.. Œ:Hé~mñ‰¿Æ-Þ¿{ñ‰´Ø‰"œi—Â^ÒŠ8oja• ßábƒmÀEŒµÕo_UµŠ&é5´G(ÔHØÉÈ w@X¡ŒIOþÆ\·ø =ÁU¸ÒŸf SF“&n4Îæ ©ª÷<†n}\øhžÐ:K§cf,H«”ä“_<çû˜Œ½›Žñµ[噈æ0#¿Yõ4ãDK$iÄ|컉ƒØhÍTÓ¦Ø@Œ^*™æÒ„Gûu÷_5â¹¾endstream endobj 19 0 obj 3756 endobj 20 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream xœí\ËŽë¸ÝpÿÁëÒ!EJ”€A»ÝÞpü@2d`æÿ¡l³ª¤sHÓî¾HÁz0²ÄG½ëT‘Üá/îÍ&?ä¿iYÿþùÏÃß>üûÛOîmq~™ûÿþùû·ŸwHn~[1 ïoŸýöóõ‡iIòƒ}<¸·‘¾ïùÁ<—ù-²÷Ç9U~Öÿg?xÇÇ…,3Ήo+¦‰m+NãÛÌÞËÂ÷æ¹òCªllÈ£k¼ã?ø<9]•ϓϸ Ÿ§NðþY>Ö+ÇOß×W)¹¾ñý‡¿^Â!öûo‡_âü·Ã÷}ûi|Ëb²þö‹ ·'Cžmÿ$ɓۿÛóë°õWóV'yQ˼ãý‰÷°’ÞYÊP“N™Ê—vGw¾=Lºa?œ›Ã1œnO™6¦Û“L·_k¤tnOÈåUBÆóãù¦´ÊövÆaéÚc‚u½ßŸÈâý«ù-èºfi,ORu?1ÀW¡°ÚŒ~gbÐ'©ŒµšŽÊ:/u‘Ñ'e•Vö%²H²ÝüTwÒ•¾º{emp·G1³é©Y@Æ)Ø(!á‘éÁâ>˜šž ãÊ×>uë O–²Ë (œ2¯² Õ7˜²wS¿Lé݆…àvÁ„Sþ½˜ñ\”KÕÍ£¸‹’)#•Ý$L‰Âd/ûuR0“DÞU°ìf9o|Þˆ0 e%nÇ­sù*)¿’›üÒa¹¦éÓ–KÙ²Ò8%»ˆ"éBJK hb-7RcÌh)š#eßÔ±M‘˜¡, ݪë´cÑãwÛ5nRž =ÌÐ[㉽¨ï¾îT4€h)¡þRÔ:6>«,¯Išscâ…0hÙ@ãP« qEÓF÷ƒR§×.ú¬¢Ôù†ƒOºÜY6_Ym(Î×UÉ–·?g"œ…²¯ ÕE'®óÍ7JF˜MX 'õ¾@Ý‹9®yÉÎbºâ Q”¸È€LœBÚH¼›’VF‹*-'0cñ Vu’ñfà‹ÛSÚvèAfçygئG7ô…9†;™ÈAÖõ´¥ÁdÙvTŠ¡>Ç"È“¸†Ž"|êE†Ö¼c›Ù²þìâJgÎÎ…ŠÁDaÃ^öˆ. 5&ãÚä1wyU–Š´çtv(Wde„PMe­ì‚ ƒåI̶¤,×pkîPíAµo´. ö†,hb•¢ÆÖw0£Ëì ëû»µ™,ßÊGs4ï|e¸,R”S0ÕDrÏjŒ0&*”>ÀHÎ$…@£#,ßULŒ¿âäðý'qGIET>EѶYŒl }jÀ” ERt£ÉøkvûuŒ'ÃűcÎ=¹ŒU[ž_YN§axF  û”ƒå‹LÊï@âê’·¢*‰eŒ6|¥!Ÿž‹\ØP~àÓO` ûý=)ññEôë±v¡iÐ'¨Ü8¯Àí—I2®¬§ ÞpÑ©!ÊÄø‹ùØ`h?ˆ«"‚ ,ÛC3#“·©àyư¨+¹™áfç2µ.Ø»+žS‚G£j]™cž~c»èÑļ `úsÙÉÿflBr ?G }^Å&IÞ=ÚjtDÞB¨—Ú0'H0dÞAŒT—êâï—ìÚ¯Êy¤|l®K ËEÞ±D™Ç¢HÖ£‰·Á•¶mÖÍôŒ˜ð`"â&µX€'º°àa±9S(~Å$šåE 8Ñb HÂÝb:ü þG†Šh¥ÐG­º4cL­Œ«×:²Èü=Œ«xº>*³¿"9bççÆzòòC‰X½ kG"C=‡¤hJ£`x›œN6¢XTgö|µñ…­ƒMf÷æ{ÖÁ8}Ö¤-/üw_jÓÅPv¤jc3Õ·ZîG–ž¼çÅC²ô¦Ž-–u˜ÈÄÅÑ8€4yO1‘”f^f³Ÿ:̨¦ßàü r¾ÇšŒ _ª;Â]çÔ`¦æ­*¡ ÿRS QøŠÈl˜áá©)H‡ rfá'Ì™U”uD5 óŽÈ¥FHà¤P#ñ¹¸k)gÑâ¦ú;qNÆ®`YéÜQP ÓŒ`l’* 6±£T4ž•ŠÕ²áÑ>ï—þ”¥ ,̓ÜéöÝ2õ÷ß½ž‰‘á~0˜TègèÌ*®ÁœÑ2DrÕ9Mö íé) hæÇ2¢/kÝ€€4«[£^uAOã’ù:1!Ãõ@O£Ãƨ=Ñiz2ÝlвŠ >¼ÆÉ1iÛ@r%ô˜SƒÑeN‰ù…ñ“vu`7ñú÷‡ó€NIâ£ê€%Oãî””®ƒ0®rÿP³Ópê¢TÚ÷Sü:á$X©¯¡È°tR+Fó3b4A}åu{‚ƒõÀ1GçÐñ"›gï$.v­¤ŠÄÀÖÓ é\ëu¼hIíJîfOX½.B§hà6,†™PêZ&6e¾†½c9vÖ5€WLoÓý#Êœ½ÖºÎÛÖâ©7ÏÜD ¦B™X¿¡pé&™@t'©ùmŠé$“¸zÓ 6 ;R´B‚¾Â±‹¬riD+Vá^Ó5Ýg8x¾v£hwžæÌÛP+–¾@1F€í{)”øM—É{,J 5[Ѹ;§MûH¾K,ëÂÌ€%T ÿ̼[u¼«õº*ÒÞыЇBt“à©ÙbkËÀ¨xQP Ì ¬ä2Ø/r0Õzm"­«ÆPOv±¶õ(À*f9ŒŸ·7òi§I¦›fyRežëGM3í( \Á­€:Ó¼«úÁD7=v(øPÁ™³LÜ\£SÎb¸ÀhÛ–êØk¹§þ*=âjJÎ*ZÝÖ‡´‘Æý—Úø²é,–úT;ˆIâ!ù À ¢Ì0 ëokˆc£Í±ïM€Iå/3ÞP-ÁŒô€WñôÜy3¤FM‡@áq‘>§—§ ’Ö×£ó½½@- ]Dp_ >î¿ ˜YŠHl¨ÅЖWBhí²u ìcÕêÖaSX€íƒ)LH¸WÜĆü´ Á<™m…}–„Ö`§苟ü!,¯7ä¬ 8âô6îUNySö†Ò=9C2LNóyL ðñð ­½©PH vUu$£aLÐÃò©^”J¨„¤­Š"3Ú¨YØÿ ÝÂD¤ÂAà}ÔW›#.zÓÙý¢hœ³é Ø‘%Ûz3K²»d«–!D)‚´ºÈ™ý’Jy£Ó°Y”ì‘ÙwP‰ ñ ¶åc¢«¡„â›Rãu˨µùã®öM?ÿ™Üš;´7’vfß½ò‰ÖÈ•÷}.Ó¥5hak}xbðz®M ÖD5/D¿Ð^6ky¯´ø(ˆ-s–_%_•¶v´¦ž§kt¤éMaV«mˆ©#=ÈA-oí´bO©92‰ö @=åE£?ĺæÓ ¤I@e¸Å¤Ž%ɘ÷<¬°¾Ø~¹fû‚-ÌâK ß´'aD{r$l§M;ÔªõUî{Ð"Ö÷UG‰±÷š¡èØÐ`;åªçÒ1BdÑ9òÓEÎÓjP…K˘?>%Úsjr&4ï;°OÏ™)ÓÔÞË '•Y…$ÌO÷va ç>Ž'É3&áýÃ’J?F<ä$öšI»Ì²!§âï¾té,«-ôcÙHD¯Üœqš¡$Þ9cì*í}þd0þ ñX÷m~¶ p<7´ %†Æ^6n±ün(REúÄQT{ÿ©3* ZŽi'¬œ×Š&‘¶i]¥Š´V„$ضQcoƒiÇ&$È?zmî¬kâ¨"Zð{§åÐJºY‹îë½p ­íjaÛ ;9\w4ânrŸªÀ7Í̘°ˆu vî[ Iˆ³@Çs]ÝÓœGóššñNÚ÷kp\&1Öý]qb{X˜9Ö†N›À´çä~OXŒWû°*ÅZÆ={uøjš»ïuaÀy±.H&R¤i¥‰c‹¼“N+ņ"ÒëYPÄø%%î¡ëL¹‚[Á0$6’VÛÅ —h§+1œ¨ÿ$ù¯àkçû=3-'©T‰š&)N=&‰äïìZ ¦»,fA½£L4ÆÀ¶3Pð¢‡ù¯G7ý÷Maw:k¸h„‘ jq29Æ3'ê‡!B¯á—–½À°âá¸N:¬û^÷邆”aj€ìtÁ@ ½² ;Å<ªy}“æ’•ŽàÁ}a2öƒ[Õ Ü0bñ¢7_rU–àöè0/¸-Êñ™¥ÞXŠìúúbs}—Ÿ`#îÿŒl2²´ìjdÞÅ·´¡{J›~LxORoió–”Ý_lÖLÌ8ö8;¹uÅ!c*%#a•ò™'o/Cz¦µíñ`D6ŠÑÅæwÏ!¶~á„hÆð,!–Ì­ã×1Ù…qÎÆæùí>Üi„Êí ŒéßÕž±Ìä z|ÞcëTS!âm6åµdMBuX”17‘ÈrÉ¥jÀ4vT" reâò¾^‹^øñ±@µÐÈý)¬§ÐHr]Xßk˜¥Š2›&~“ô<üê\AÉZ}û@QƒH3£…70qOôtHÐEÏO›6Úh‰˜'”ÀüÀ.b#Ý,‹¹R±ÝhLS}¤YçÍ€$Ä›˜ˆ9J(UQOÀ*“cŸ T­gÑc× ³¿¶O|x¾­&ÐêÍqøûʼl«ˆªe𯺲z÷ÀÅcÓÍËwÑÌœ.â‡ã> ›Ûy®ÞHMÍmà@úI£*=uÌ):9rGúãÛ¥™+nÄâ˜Ë2:rï%•v9­“}¨ 2±Ë}5ƒ^öXÊh³íf“*Ú®höëá?£‚üãendstream endobj 21 0 obj 3664 endobj 22 0 obj << /Length 23 0 R /Filter /FlateDecode >> stream xœÕ]ÙŠ+É}¿pÿAÏnçR+ mý>pÁ?`Á†™ÿp–¤ŒÕ9• ©û¶1Æ3L©*—ÈXN,ýÇ.ìþÞânˆ©üsœ—þùÏÝßÙýçû·ð6‡8»õ¿ÿü×÷osØõ]zëv]N»¯ŸýþËõ‡ß2ý!ùÁ>ó[bïwó$?ØÇ}G–ÕÌt²š™¼_Ö2Ñ÷Ëjè¹Ëo=ý!o"§øF–šcàôIóÌ蓦‰Ó'ãÆÃPþ›ýÐ÷òƒyóÆÖbJòƒ}#ßq íxšù†Ç‰<ÿ£0åò¿…Í?–÷Ö¼¼ñ㻿¾ç2ËîÇï»_»ø·Ýÿ6¼Þ\~û5œÂñúl!ÌíÙ{Ø_Ÿ]†¸>Œéú(ék§ú¤¾“ÃõI_ßoÿý&O†ë“\vq{r ¹.`º=K±~i &ÃËn†ºòI‹©.½+„¾=›ê“±~™c®_ÊÒz˜1‡TŸÆ,S„iùWŒÛë,öµ\¾ïÙãSý^žu1Êì³l0Œ¡+ÿO—uLa¾mÎŒu‚Ã;êø1‰ÃD gǰ‡ÛǃÒP^­Oârêdkòâ¼}”z uÉòäTi<ÊÃ[›ë-ªcö &®ò`¨ŽKy¯oÅôàpãqMe< 9³IŸÉ¤²×ÃJºúÂçÊ9ç"÷¿m©‚VŠ@¿3kMYÄÎìêÎ…UêiY#‡ñ° n‹¿’Íýìañ:I¥¨ÁÂï'PYÇm¦p\˜O„E$¿>Ë8Ö'ÛKU}!‹GÝðŽÚ¨*;=ÔêÒÇmv8Ö±ì9ì#rÿçh`ÂÞðÕš¾(¯ë7r%‘Ñ%D…¢vë‘LrlV¯µ5ìÑðð _ï¯%f²¶b´MåÓ#›u‚¯ûÂ5"©ÓéÑÝÁ„N,XŽNyz "J Þ×}´ÔÉ0ͨNˆÁ™Mt0[ÁJD‘î=¶)â&Ï wp hEf¶¡"½•²³RvÍø(< èT…)&©¢kÎl¬Â:™ÅWž0+8„#p­Ay/sMQ—#x:-F–vÇ*7sûilÙ rZ.½‚Šö)¼SìûŒø¨šoOÝBL”p™¢Š‹A–Å$§å'C·l7©ÊÒ±¬xb̪ÂaH´©Æå|îUÀýÙFFPY^'\¦(V™Q¥R5¨ÁE\2+oóv*nŸËrô`ŒÖ@l\ ’ su®ˆÏ4×jÛ¸Þž Ø &Æ*¶E¼)¡,â¬BÙ<ÕÍZÆAMáã¹z‘‘ù‚Ä 0~ƒDŸjª¨6Ù8Ï•»]ì®–l,ÄYtÑÍk)¶.,öFc£o3‹Þ­D][ìÉâ‚Q¸æ)óÚ»¼´Þ¦LÊbSÜâC7·—øÍ½Ô2eUœhƒ¶RfÛ…ªte_¯]Ñà”n¦<6 ñ²0šÂ=Á*Ìù(ê§ °jérÄqBgfâG(3 ÆCãp‚8”YCŠg|ˆâÊÖÑŒŸ¤§-+íêÙ"…Ýj™à²¢-  òƒ*]NK\CÄ”1]ƒ‚gx|÷æÀ,Øiµ³(ºØÈþO r¨õÅ#Пø:õIÜÞT6Á´ÜÂPqY™:S-eÓÏ3(tpÚ0T> ^ÈŽUa ¨jZ– xM£"X_‘ÆÖ„æÁMrpdÜ!ê¶ž™†Q0zÊâ•t`_âñˆÛÖ¶ƒÖa µë¬Öþ¨~™ZeÞ†²´3cú‘x ñ ®Y±¦Å>›0hê[n‹¬Æ†Ç‹hVí2¿Lf¦ºÂ†Þ&¬ŒÊ½GJ¸1—³ÊR3¨>)¯ßërDÄ—`öãöa#µé¯6•Ú4•÷ï•.)!=##DåMTxìLH8’hµ½-]ô”‚ÔL ‘,àÇX“¾øÛš5PÑŠDÞ.†\vjÞ&a;sPuˆþ;2S‘óúÚLèöáB;Ô¹{fFF"Ý,Ìw¡šxáͰ/sE‘˜$ô£ý4)ñN׊º:5FtFÓ¥gH·æÁTcáõ-Ԙ㘢4Àè{`)â“ æ‰?¯GÐR±§½–GØ Æ²öQÁÄvd/f6DÏ>×E+A]‚Öä#»!‘q” Ü1ua\³Ž”1Ñ^#Ë%™ç1kaÃ,D -Ñ7¡“x¨A­9‡A¨1wâ=>DöiÕ‹¥Å¯e1®÷ò¾:¼zìõÏLeù°`˜.ŦåãØ­’' Ìþt„o;/ÄêFp·¯”Î_XErvèÅaYþJ/¢–'ÁWâ³WÉà•ÜJ_4"bÍЗM#;™Êaf–%FÚIˆá *¯Û>fp  1Æ5Ém*¹ƒ3ý0Èq$³]OüÈQ¤Aò!÷y)“Í"øŒçsº2‚ÀФ’GŒ±#ÔßwK¢ý^öË$ä˜DÒcˆÃÖ#1Àóc0Qp¥DeàTö¬V¦É>[fHv†3Ĭ5Õª1Ɔ6ÛTæä o+Þ\+væ÷ÉÐ[V‘Å/ɈL!Åa²¼þÞzgÎ?A¢$†v•ƒÛêB+œGu~6åâRÆúyrA†ë<•´džYÆ] Ô¼¹µ¼K®’NãQ¹§pÌûJÏX×ÒŽ]ê~þÎØ4›ieeüØ È?pïòþ^Iç`‚Šùà¢NXêº?ýÈpÝéñ2ºq1Ý÷ߥÎX¦±uJ'ƒÞÑP¼%`³Z T@œ¸µÁð9 ÀˆW©Ó³^Q®ùr}çqUì+ö@žFÃPñæž8†KñIo3dãÆ[£ÓäÊíe’¡*›a(½^dž¾t»H±ó3yâ ‚²;ržðå5BOK…¢¹4%/b.Ÿèu›k ˆóõñ¤²aK³ñDp=ã_rÿêñ¥¥§®‚4µË8aqíPi^ µÈ>Ý)g­ sˆ_ö¬Lѯ¡&Ù­ žºäêzJžö+Y„©Ä¸xJf—b$-ˆµyÓ0\ªRÎV}äМ“$iŸ¥â¶cN K‰ ´´*µ!”‰?gÙNŽV k›e°XôÛ6\fGpý©]«±MSŸ*fF@.y0÷uxSZ Ù*¦§:iÀBšåjä¡Ñ$'ˆpr×Cfö‘ ÷“³3$jÑkI^ÃfcÆM=Ÿëª{Åg7¦ÁÈFp)1¥On`UoRQÒ’Þ1uybüÉ=!"‡ êA#7E%9by~*—á<1„œžM™¼äíÑi6¯šÛÇ@*y°nç#èüÁ… Çx|Ï|¹=õó‹L£È”˜·ßvΗÈDdâ—¤AŸñ%“4(ð*êZV›†)¡ž‰)fi”—ÕÝtÅšKr›³¤EŽJ¸!z)óÕIº;|I^‘Ns\Û:­ÆZA-—Û`æA·ñé%bØ8Ä*í7Ñc˜Ò¾â,Ø4ƒ•ÆùÉ$ë³ËK‹À²i¸‹êâ(úÍÎí%Hfr+`ÞØëµØaHœ„‡ÅGÑ8 úÀ>£“†é'üÊdO 4õ#d»?€£Øp®edÌáø“î,2‚š›TŽÛqN3Ne¼\„&¾ÙMaÚ]ÙQ@Q ÉA£)%pÔªE범ݽ³6žµyŠŒ7®ƒzcJŸzùM7íqV ).Ñ šy2q¼OE2e$4ém%Cƒô¦\'c—×H½):›¦haûª_:›2ÅW¦·G;dþj¿3ãòbߦ¦"Iæ–WžR ¡@¢\ްW0›æ¯hgp%ž…â¶åÇ¥ÇZ…RÍËø¯µ:#læ“Eùx¥¦Ë„cÞ€±–¸XH£¾ÁöæjñƒÜM V‘!~iTQm'TYw'd‚ŠBZz.v¦ÎD”‚ÞQX¬Ð‘í`»úË×è=K¦ú Åx.Â#ÛqpØE/f‘¬ýÌ ÷4 @íùZP´2M§e‰˜S±Â1´ ”Uüºê©Ó!åf³MÌôø¶År8w™Àír3R8ήÙɼ"˜¤ö1ŠU°·«„ÙïrŸž±1«×N"žËËÿ¼ûk¬œíhèñ=W%©b1×|‰4¥g%¿+F î76¢.c§$À5»òævç³^©$jª›ŽQgjŒYñ% ‚ùi_Ã6Å xc =iøŽhí&®W‚á ¯ÍžŸÆ¨½“z¯­ -8´Î„¯ÍçG ¯í8\®ØÀ¯»¢Y+èñ$PؾFé õ‰E‹ki!š “"?Û­‡ ]q(–MÿËôÏ~Ôý&Žr…Ì„…ƻۻý Œ£­«MÒu}žï­ÀÕ¸úŠEBÍ7rÍò±**LŠUs´{  ¬Ïéáõ?¦´=±A4xˆ¤Å)‘{4Žª‚4’D-¿ï º¸zJ[èB,0¾Ü9Ø/Ýe·C#6)ÛÏ—Ö.·­çÉf$¶ê¥b&åçdMØ™y>I¤a¼“-{Q¸¶u3¦§Ó Œ‰4±Žšq¸k墂 H—!l”Kêð‰Ô9ÀéPKÊžH_=>Eø¶Woå‰E,(Ú'¬©&ÆÔSüNqÏ)¬r«v7üå ýk 1ݱ|Þz¸»”ܵ…æ°—.ÞøûñÝëÅÿ‘©Ý¹æ‚Y3’Ù(«ó¬:=T=c- m0+Éi̘4û¬0j Ò`ÎÙ5ßk9LÏÎñO®ð¸)ukDÂI_÷jØïþ^…ËöfevD,oòÔ¤Åëd‹©l…`4vAêü>Í Oìvš«2ñfi*˜k>¦l{`Uˆ¯×;;YEj¸ãÝ­´t ýýZÉA{“¶Z^Ðt ‰+:k_â'rxX‡þbçVÖUë7µ°ê%E §¶$ Î3IøÒô7G)bz†w®#(×U}ûµÊOhH̪¬Iû²ÌH¢Yìbµ–LXá"5kÒ³ü n”þý(ÐVXNã¨â¹Çrã×ë ØpÿGWˆ_O¿â1Ò4é*2f˜à©þ)žÞ龺ÁÇ¢ã«#΄8«³jÃ÷kXX¹ý%yCÙùúêT)5`9¹ËAŠéÁ ÕØS°)ˆéS ¥Ùpžº³X–ýÜ2^*ƒbÓ¸£€6 £úvµŒÔ¦ÞôX¡½Aƒ™p‚¶oX"™Ë][O©Y _Rß̦qÅ„1¯L®\^šìØ``‹4ÅdA`'dµÀXeζؼFÒúÃ/ë¡ô;F|š~E]çÜ ¨ar©»ØÁ“24 ;G8“î„u0íô%å²d–aûy#Ž Ì•ÀhñBZ½èèqÃ2y$G<¹m øBþ¬. -}c ›Jôv¿íþ ¢‹Ðendstream endobj 23 0 obj 4384 endobj 24 0 obj << /Length 25 0 R /Filter /FlateDecode >> stream xœí]ÛŠ#9}oèðóÀÖêšì*û} a`wöaaæÿVé²"TyŽÔªªtµ]Ó4tÓJe*¤8qUHþcgv3v7X—þçåï?ÿ½ûç/»ÿ}ýbfcça·þ÷Ïÿ|ý2›Ýh¦‡y¼ÛYûüÚᅵ ó(Êæix˜hÿ1ʃ²y#í}åAp}à­<(›yˆ´¿™åAÑçé!°þq+ÆáÁÓC”es Žö^”Í~áëïlå5¬9Ì„ca9‡Cšë?DÎá¦Å„ +S“<(›åÖ0ûyæöÓTy0VXé‡A”Í1rû‡½÷œÃÞ¹Ê[a¥7FÍn¢·DmŒ÷ûçÖYIy2î¹mL¸¹´M™˜xýÜf§ç– ½Â!÷™sËcn‰¹é‚©ã—6/Y”¶àØ߶^:ë뙌h2SµÅBl®õ3GÙ„Ÿg޵»¶ïmE¨yÊsùcnÍ‚…™n:ü:úÌÑI¸®ˆtdP3ùƒ ‘'–_]ÄóÒq6H ~ÏY3c·4û¤Y¡{†™Œkô²1à­y"„õç}†õ$ó°óš‰þ´þœ;+ÖÊgÀŽB]^;](lÉ’Ô‚ëLÎíÀ©Á5Ç…4¢C,pS! Ë?f}—–Z4ƒ FÆK¿/>¦¨·.7zrÈô—ý`Ч<ïQg™°æ§<¸uj{X"ÐoIwõ€a\¼Æ‚¡§Öû…gU{ÌK.?g%P°µåè÷Ž™£@¢X À¡uLf÷ªÑþˆß;ÂÜa¨È¬Ïâ0zè€oSÞ¨wÎîë AÐó—Ð=ÇõéÍ=€þ`*$.Ó ñ•Ðó¡*ä˜W|¨¢™Êü¥Lu)zà-¹£Q¡Ð*=vf›g]8)fm8tŽ>N€ÑX;Š›¥¶I)Ìl÷§^NΦ—£¾PvÌ_øù§˜Q£‚NùõA§s u˜™õÇN¼Ÿƒê-ðÞ àØ0ᩃ<¿di®O¦O{&äLb:#¥zwD£¡:„®kõc(†¡J0S— ªûW¨ËsŽåúü!Ãx VÉ’Zˆ¶jèAUáI1‘ ¥Ì3óÊMYЧúZ$,+M‹Ö¹É»$&¯Ï2Ìë ‘2 /ø$zí=¾ëú[Ù—U#ðjWVH}éÊŠZßgÚŠ®?Ã2NŠçœ¬½>êÉ0w£x‚ÉŠGû¨èåõAqIÞV‡Þ‰Óâ&]l˜¿ªÞÑd³t<æQÇ"pjIb¼ND#¥˜ˆR-Q¦ TÊqFŸÌü]©P:QCëÌ{µç-›ë£– Ó§7Hx…Jr4’ië„GÝ×8oS^xm×_¤^ ÃpMоíÓ¨J^Áþ˜š3g5Ïdö9j³¦e$A½™¾8äžÎ×i$KšUA99g|Îi'ú;<(†8æcZ‡Ú²Òȶ׸}qXv‹¯d2L§”¸¥p:0!noaÈ^á!&—¼³0"*1¢Ì3]S‘7 )Fü–'ŽÉ8Xy³.Iĵk$Æ••Ö#&;¢¥D1yžôý¦N–4¡¾8€zÊ–§pOdñëXâ:$༛~} ÃôI€5Ûå2óggÓ—óF]â³ÆaI1Lú:ñ‹S¢Š=èò2 ¢r ¡=šô¥u¢Ð‹ Jb•¹ÎQ¦ä‰»á“S–›}©r¦.µàI?§‰Ö°Të\­d˜NDZ‰úî1çNKo"ňæ1{àÍ58׳\ Ø0&ªäÜ&§"kDWb?ÍR©Ìú´~“;Ò‚Þ1l'!bª‹/ŠQkWrËÐò=,'(Xë—)e¦^ Ò“Ï"dê*üD Žßûƒ¬¤r#ùýú:ºÓšôÍúŠ\âyoe n³ËÃèI†9I©¬aá0#3IÖ€¸Äøä7í ¢‰Šc>›ûÎüÙFVÍ8ÕëÔÁ»3jnˆw„';â✒u;^Lè…§¾XV`D¬9VI¦:©ð²C±É*™‚F̯Û 8!×’"öZ¸Œ/\Šƒ¼\Ô„¼#y•/ÔÒ`/Óq÷0€[ýaÑ®,ƒÙª,r#ŒzÚMÑÛS¶~-ž ~ówá·˜œËûE²Jl~¢NÒ­`÷`°Æ˜L %ƒésYB^¤BI©(¢!R)‘iÑ_àÕ§0ÞR© ¡†ç$ZÙ[\Ë«¡¥á¡Ô½°Š²èäÒpK…#HM^‘±wm/v¨àZ.ƒ®Êf’ÜŸN´¤úXÜHF"§ÆO‘È&h"#áØKùtε8= <0?ÿÎ,‰.©WÝ:²W"µâ˜¢ÈвÁI8/þ}—´ÄÛ* £ôÀ¶¬=:Ôa˜s©Ê‡TçÃ!}á@Eì8–VT·æu€Cà1Ý£ÌÅ]+©#*.3•˜ê•Ó cž“–VÑ9µÕDÝ4çN¥á_ÓêØý)×9Ä© ÿ!Þþ=h®Œ?å³VÆ´4ÑÈø,vd&‘ltZfS8[à¸xh®rŸ­jŒö ½Òëð[ðm„#BÏs*Cr ,ÜT"Í#@eÙæ›ŠÔsavùÞh”Ô„fΨÄ|Éù®zØÑ³9œ¿-¦z² ­ 0”ªXH‘!†€«L?­›Ì±–i –ÀïÕ&b½CÝÐtê$¨‰¢Y²Sçs4­áÆ)§a‹m$•m2´uY,ÉñŠÚµðm–acûš‘ÐÐáHv*(»U‰èF²ÀèéÙb/šþ?/œ²‰ppªc ÅÜë¹ÍbH$ÑÞx{|Auf¡#Šª”ìs°"mŽc‘S,ýZ2æÇsFñI–osjBÑÇ;…"!üE‰Ô€û"ÔÕZF^T‹…÷Oz2I1œÑÔ\]·U•èG¯.#ü‰Õþwå#XÍÝÓÇ}g*+Y‚å’iÓÞŸæÖXÔݵÍËs5!áÑ»¾¶2»œ ]ZRÈV½”®ÉTó…•›Ê!¼çr 7Ûûœ0%¼3…MTˆ×ô;×âÉë:‡Þ"põ‹[}ðk /¥â9g˜> ô©mÑÊŒ<6ÃS.Z_÷3ô­§±r“ù¸ZÐMQÆïÝ(ñ…38ÀÒ^'¾aV••o‚ …“Ä~¯±Rá1vY_Fír‰c¢…-É[?Ú·ùæ†ùNÁGg7>-7ð\FeDÂâ×^XV?·Ù…eßI õñ7~X™Á¦Ü²ém^¨œßx "|GôŽî­OŽÔ÷ Âò‹x˽‚…hß®Tûèö]}'4ªŠX­TZþ(—P’”lž‚K4º¯uèÂ}ø°½èMqdß3îZ*ÿN{ÛwKR¯@œ‘#Á¢¬°PŽ‘6pŽÍ»¥²÷þ«F7E>!üóÚó=¼y°Zä!ÅoºyÖ¹p§ „_*Có(Ež±û°ê äÉÝ#»æ“Û=á ¹Dï:±¶¬*öaŸs1EÑj\\›ßpå5§õáײЄˆýÀòÓM!ÂïÍ ön ‡ÇeÓWåÛ•÷X‘ º`¥háű¨ÊN®teÁª‚I¡q±Brö¢8TÔ8mRÏZÙÔ.ò#xï9OD§ŸWºµ¯ ?uù´¨´#팻A„o™€f3ÜÞ`¶n‘­H<ï¹î»~%-»w„(ë·Ë$çWµúCpÂføÚ ‹ûåÌË *ÞœÆÃ‹‰6pØ—8b¡ïò¨8E~¥Ï›·“ùìè$3ü‰Î‹þß‘Äs5Ë-ðn±¬vS„‘^aÇÌÛbëªë@KX¼C6œò—dç–\J"? Y¹pÊPh FývÌeo"8¦¢OÒ­4Ì]@ŒÓg"™áý‘ýî»òU_×åÌZnʼIÏ çêÐ`ÏEYÐàîò°¸L-’hgstSžn„7E=ÿëÂ-fÖ|dqµæ#ùï„kÜ—KkE,•]oô—ÃÖì2Â{j@¬ît„ð«dÓÈéF­×,r] B˜¢iχ*õH>Þ™ØØðsqEKåÆzšÔ¨ÒºÆ®;Ç OGÖκ;­*¥„ÿU²våEiÍ ž“W;U”^ý3Õ—u³gÙ¸5„nêÄ‘~ά[žì(Þg×D¯ûtFæ³×³þL†\ú|Hª.~{)³ûäà$¼ßèÓ(ìòÍ•FqoO£L·X±¾% Éï†?“(÷“DqoJ¢ü¶û?ö'ãendstream endobj 25 0 obj 3774 endobj 26 0 obj << /Length 27 0 R /Filter /FlateDecode >> stream xœí]ɪ,ÇÝ ô½ø:‡AzÜ øl¼0Hÿ¿pfugFTSQÙ÷½'ka„%\·†b¯ÝÓ ÁqûØ}:ðîf>øœ°sÔtíY„˜g£i™Ã0Íßd{CK’ÈGš†6fA}gp{ƒp~çuMÃè³ü¯ŸógXð¼Ò«õÙÞ¼qÇëƒ}¹2–+C¹2¸s™óôºæƒ»¿îƒ–{ÜÜñk²ž±~ïy%Ê•ž žˆïXÍÆçuíV`ÊC]x}týv›}j™Ò$o›ÙªÆòJsVçíg½/+´z™»>/޲´sŸ¾ñ±˜¯«4*Áð÷:ä(oŒi~gw+ÃôC}‡íú×2têñíîܳGÙ 5šK¹«ÌÂâü°r\èÊÁ£}Y8õ¨^¹I¾1”kõá)¯'‘D"Qg X´ò*=:PGT«©lQ'r?9·‡uñ_dn\áµqƒŒâz¨þçëÖu`Ývì»Ø¢R ¼d¤øžGÃ{p1ïi—QÄ'ø 4Z©«HLRSt„ukÐx¡Èô0Hô¶ÞRrúÔÄj$ÙˆöÝS²}h¼qÜ#,æM„¿ÛßšX,ÒçŒj+Ô“¸*]¹2ì=!â"FvòV”X‰ÓÕÏ5tsòp—=QŠ%5Lv Þ*]ù‰×j̲çíþËsƒÚ朢ëª<²R—ª×ŽÇ´·1°x,h ¡Wï`‰oâ7ö·ËeEËÈ˼£#–yh°Œ1¦ñ¬-#³›u8°¸,/ߟ²e©"•óaûF¼ ¨.±¦÷©²r)Þ>í¾aŸaUë¼­ )ï§lr>¤â^L¢2ž ^Ý8—×ɤ[²¨Ý=jwXHvRtMIl ®¨y/•Àc¢p&{LýŠk•Œý´¿¢bjË5õhQ(ñIWnòæÅĨ‰¦8½Ê¼Š…{LÖÍu`MjŽ`Æûú“"P´Tx:µëS—«UUcõeÃÔÒY.g€]À|I‡ Ãðû¦¡  ÝEbñéu¢¦uj´ú$3 ò§–q vl?š±¶om(×PŸšáÍVlQ&¨s2eQXeô#HÀwµ‘à;æã)‡WÈ¥¶`†Åd!ß #»0¤ahÀg—ŽÄtðÁd\ïe ’<•'²J k{ŒKÄC+¬ä’¬G±¯V®€€ISâ:2,Wã#”šž¤Ç1"Éôáʃ„ÂÄ…É’Ý ’T—(¼s$bÑ`<—mŒg«_ö-LÓ«·.ý¥(¶ºv&¸‹‹°æÙ±Ì³;ùî9Ï{Jd^KT Þù¾¸á€XAõ ¡"]ÔDåv)P.kTŒêó*û*—Q"¹à|JÅÊ¢ÓÞ¤„Ò–N¤¥®erŒ ‚½1 š*pAy»òsEû’ó9\™Á¼DD®åɱê0±´D Êû•õ¿¯"mË–àÄ<øÍ qyæ=nö\i1LÛ… ß'1.‰ÁL̽Ûß 2J'ÙÚ°¿èWÙk¯Üz_°³¬ƒèoK5àl¥oÿ-yØÖÕÜV¡â´Â ꢱý®óNÏ×Ld&®!8yå̳LâpG÷AÛd»º4è)ƒ"MQG^fn¸g ¯ ûÙâʦíêò¦n¼³B¬2ãì/ú8„Žj ¹$ Æå+š’ýj÷GH±E&¾‰š‹æñak ëq©R¦¯8”À{yóËäÃ`¡ KµnSþ‹[=”¾ ó¶Àßc Zqª~!nŒŽLYAQMܳ|ÒgШ}IOcÕŒ"÷âËÖw~{…¨ó¸RžŠÛ¾|ºî—ÙHÊÓ€¤ '=ôtÌòGŒàsLu›ZÞ6~rúõ†Y¢'ÙðŠŠí[ç<ôGEKÄm¦Ï2^Q°Š•nÛâ×[°&’]1—j)ç¶ó¤cXÐ#’M³<‰|5úÂ窑}Î,ÖVRvNÁhª*cäùÉ~9„ƒ½“8ø]-]*?.& ù²oÉ|"j.–Â-4ã×8í¿€+?z”s„·4¾àN»9ZÕ(cX$žØ*c¬ŠbÌ‹± ƒ„èz0€Åz«%Ý……¢Sh”4êÉX=¤3ScND"Ðêº|{ÄÖ[XèkÝðƱ· 4Írsá[+GP ,\²CñœÆ)luë»eS°/b`Ú876.‡üÕ›Ž,ù¬ZNŒX4ÙÛ¥=fª«±õDN!@Ì€ŸËK‘D6ýïœþr1_Âê•27VµÈîE±ûKUìY¼À= ‘p7lÉñ~ðœwÂÃqáÍAr!4+»™Ü²°PïcuÛfÈ?!#ÃÖ«˜zõMUÔÔ°™# òHSDßÇК÷5ÚÙkNÓ^÷/ÊSšŸ‚oë­ï|šY}ªntaCÉF +d!¨šr¬À…3¼qI{Á(ëŠÔJN ŠBÚ—!ÔX‚ÜN£g°Á{tQŒ%I ˆMúÉ¢S|y¨»¨jÎ/ø#[—š¦W‰ Ù•äq–µ‚„{'¹hyapA¼vÃU•DÝÖkÕÓž«þºÕ¢mS_ÂÚeµú„¸ÊsV-ć„º¿ mÕ1¥ìÈóV  Aqv¹ÉkAcuò¢V+Œ–h,3Ú`T€³Â{•Å™ª €+’2¾ßT•Ž3¿·U)8v*o³@@l9Ã'Ñ‘Ši5ŠӤˡÖ|ÞÓ倵¢?›.×ðZAï’ºcq[Ôj B¯"ƒ«ð¢Í2‰ì«Q×Â0Áx”\ÌwI$öú-üûËñ]-ÇUIŸff0ˆ Ó‘m(C6½È¦ÂLpLÑ4 xo‰¦A‡¿X¥%ó‰ãQñqdϖ܇=zØŒ5ò/‚ñb€{”ì)Ñ*QÁ—±[”AÓ(öã­\9o~œV„lÄ>tÕDõt5Ǹ¼¤©A&¯XF®óÀJ¸;Ë,2òÊ 1vz¡ÇíB'›1*ëÃB;‰”3˜êÏÛ!g â\ñ!‹R,¡E1z6¥V‘òÓÖ´U'ܶdüEñÈ_:Ò¤´ q¡‡„’T#ˆ}æWðOé©þ^x¥^:“ŠœÝ"϶˜ËKBU2hèf×Y«¶UKžå®gu+ÌÕËh=D/„ z&Ð:†Î)Aï þ\„äÇÚ'ZèÌvWcaÙ‡LÇŽýð±EY¼ý\œÓ²ªçtEzeÀ‚V%ERw 5…ccÿl›)‹ Úz2îUl](l: âGqkuV©,v­;IÒ›<²¦¦¿6Ê·ùœ ‘´w F†µµq«‘ÂC˜—;Õ¤–5º)[2XÆw´ƒ¹jÇ~Ìжõ­«LŽ÷ô­# ‹r[º*ÔÆkm"$ žã‚6ÎRÑTo«¢`ÿ¡ÐfþõGg–EMP½Éµd¦oÞ^¾¨¥y¡1OÉîUŠ•³lMòÛw,¦`Ûo"!EüMN‘øtÒ±´Ùô¬ÔÀÝÖ–˜ÝàZ[„whúà>JéªGª6ƒa…˨ÅG‰Ä+“9–ç°»EMÜRé¯ååˆ=s²MýTT̲Ä7°œ¯ÜY {n-éMÙ3Ý[›‰³¯Çuzž.ß«)›•G‹EÜ©o£´ðœë¢* X©“Ú…«ÇýžcÀæ§UÜþ;:è£hê+óJ¡ã¨lMìA˃Á–ÑÒ…*Ö@?èyYŒ¾l»ëÖVÛiÝjµ±²ÕQ~[‹}ª20 ^Š¡!žeÁüuÅòsf d'HS¨¢S ìföLYÓËøTóŠ PhÒyHÊãkÖÕVÁ Sôí÷}|rá=:”USF1V8G'mçÝà®Kç”É!!m› 4ÖÄRÄRÏûw¡™»$u²Ï‚zisÒJÐff5Ùá@ŒA:Hü[ÞèWQD¥S lÍd\Q[²!Ì€ÿ»¥¥³ø—0JoÂqÔ! Ùq aäÊ|~“ÓÙ&¨úfBˆSµuÚìĸ`»^UJZCxBÌÒÙ±“@Œc<zrÐôÂÈi¼Ò‚Ä6¶ 1MáŒ"Ts¤ðÒ¼Õñ;4 6d21"¬OlüRVßo0ˆ[£Òê©8bH Ä-"0äB½Ãpw 5Y´*L—£•ïÔÖJ) ³VM6†bóž%݆uQm ´Üü¨>‰ý*Á"ø$v¯al;ÄK o1 #´u¡©zÇm¨Þ±ÇþÕ»íÚ ½h0wƒÐG`ƒÐG¼ÅQ̯•½ŒIæ PÏŽ×Ú¶“±Ä­&žŒš9–t_;VŸ#LOEsW;¦¡•£Ã=FTŒ²+}Ë‘ â[g e2*ÖE`Hµ‹4PÒ´b´ÔUµIN~´Cr*ÊâÅÄyô§ªÛUCŒG>qÁšC? ðÖ¬žû#Oš‰n»4ŽDªÆm«¬_žšq ¼Z±´ø¾f¥ €mÀlœr„‡=Úð°Ou*“dŸœyCúÿgRw¿Tëèì‡ÛN`!ɳQ.8;Ûd‹¡SÀIü™üß3¡Ž9½èš¹CÝØb º®@âïyN tÌBG<òµ‘{¡ÑSTDÃ{äóy[[.è™[ªº¨S}v&ÇÖ6…|iÛyÛB>òhKÈGûs†|D€¾Ž… Òg†ùYNNÕ½ÛÁSD30¤}ä|1ú›¤ýa_øéCäLç¥ÕM *–Ä÷ÒpJ„G ̇6b!{´ANÙcÌW­;:U®.E‹µxþQI^û.õ!‘‚*vÁ)x\JpÿÚZX£¸=I:¼‚Æe#"³‘Ïb”xâUò>í»’¹ASÉÎÓÇOÕáZú¶¼Y®‘øa@Á;ÉìBc–C+Mz4 V ¢̃Hp€ÖóÍ’qîó¶XaAü’kŠo•Šœu¤‰ 꺠H}kdŸ×‘ù$¤<®N4¹D_q•Lcs£¦LyT<â Í•xÜrË¡íö2€ÂË®iÒôs2:&ãþb_WL³Ï>ùô¥²}g°u›ð¸W?Ö`1)À3 ƒïyâÈP“uÌš·@Ò¤d¼™(pP¨k¼Ÿg“b9£Ž¤~€ š_ÁåÓO¡\+ñÙw24µ~äuÙÊÃR鵹Э íÒGüÞØ&ú‡c0û¹UC‚­É©˜è!”Õô; )Fdfœð1®ë(ÂVÇ®ÃÃ4)¤á1æÀÞ¨9SãÖ¹Ð=êñ.+§Ý‹š¶9í²Èï%øÕc™+ÿuçcáì<Ü$ζløT‘zd§}~·q‚‘v5ÅiFʹ×Õ§ž3úä{±c¡ÚNI QiY÷òÈÕp‘ÚzX£\ô†±1¦á@ãêÐÀV™ê¤NlUù0+<Ô> stream xœÍ]ÉŠ$9½Ô?Ĺar´¹ÜÍ@¬÷†‚ùY`ÝÿÉ#$³ð÷\¡È즇„ªJ_ä&“-Ï©~=˜Ã_̇=DëòŸs*þöÏÃß:ü÷û7ó‘ŒMñ°ýû·ÿ–Ì!˜å#‚wkï¯ýë§õ†Oþc¹ß˜žoÌó‡»ßˆQÝpËòáÙPn¶¡¾‘ôhßHÏ#Mîñ‰Íõàòïäº÷ìªóÏn®[Ï¿jýªÍó •‹¾á’cóœRæ@ÈïøX–Åš<ìÓÝTÞ{ÜL2äýæò¼ùk^åòSÖíô#?œ?îóÊêÿ8üõæó‡?þuøÙ^ýéo‡ÿùþ횟û…¼ê˄ثÁÜ_, kʽŸÍdn÷këã‹ñ~Ég W¼™ï×–vͺzmþ˜ës¡^³¡^r÷ ÓÇT¯,÷+.s£oÏ×L½t©Ùö½zÅÁ+]E ù§úp’¯N•6=÷yK®õõJT_©Üh´<&ÔGm°Óã±óáGcãl¢âÉ"$'xy–IÈlxŒ½Øž{š¿9›%ßz|ÜY¤ó£ÆüòÙ¦<€w1ujòGàåã!!”“•ªP*f 'ëÕƒ—*E7ÒÔØèìVæÙâez/ ‹•ƒ}-5f££fÚ²¨Ò?7a ²æ—:¡ÆgšVõ”Uv»Jóc‰§&%m¥FèG%3@ýLVü è«â)æO@þ­^ƒV©Rö 'ÊÄT]Rbq¬ôkN£¬øÊëE[ÖS@³©>§5``QŠê19±÷ jüšp´ÇbOV qáIû®˜]²ð㦩l­¶”è ãªæêDz†ð2¾Zwµ"(>ÍÓéñ®eD;(y\ÒÖ‡/›¥ëˆ¬Rq§|Û¾‡¥­ÃbSŸöÄX0ÝÆD†{ÕE@ 6&K–™tH( =í™ó–¾ú: Hæb¿Õ28s4áq9moßiÆJ!Ó4[Í9€Ó@Ïv…+¹c¡¶8õ»Á¶± IñÌl¥±i¤¢}a“ÐØ! &r[ô¶§EÛQ€Ò¹ØÕjœ˜8ªÍ$-2ÄBqB›ºLÓF’Úl_(Ôó”ãTغjÅtHw}²ý÷fS´IÞ32ï+€ß_œú–£‚òJV<~Ð0+V– )iW€~{&Ï΃o­Ò¨d§ydÎâXךü}›$ð±ˆr³ÄÊÓò{Å:ONwß;³fÔ ¯œ– 7é5Ÿ¬xI·/0h´s¯ÞÏ6¹ëÖw Þ¤}¯Y¹²WÛICdj¦Fˆ¸VvÒQâgÄÝq³P}ûJãöCÞû¨´Oz§Ê…ËgWŸò‰÷ô2ms+Z»OXrw­B–ÄmLÌ ³¨DNPuplˆsÑ9ýn†Äï(«±ìŽ„ ”x;¯Ê­­J’ÅjúK\¨µh‰ ËjÆÝÅãyPCj ©E"±/Í@K›eó}÷ø-5^n'Û×oï2ý®~«|CÇ ;kc½&·XÚ}M'Ó©˜LÖ ð¾¹T¼©ˆw£qÁ™»*í;3ï- $&K’aùƪ`‚Lª˜$³ƒÏ²zVÇi”nq†Ñ’q a´¿è0©Okzàv£FŒ,-LÎÏ JÓ¥C¼5Ï Ár,ûà/H¦À¡‹DO*u {erß8 ¶€|p¾Ô`ª*¨óo§Æ`YÑ(ÏÄ´"ÔIÊZ˜ô$z«ÔEƒ`nYÛR«,¦P–àckÊÂ’–fNÓÙZPÑ 5À¹ª•¨^dQºÔhÑ\ý˜Íˆ5çÅa÷Bì[ÉŒN<7Ëü4Ï.÷n˜Ü—q\È+Ë\GôÆ–?7>’˜ø(E„€¶1q_AzA‡ÂH·æ_<‘ñmüÐNfÕ%©h´÷îU!RÏŠ*TSÀÁ$®¤‚x2 |%ˆåh[M“ü‚¨YHç·àc ­ j¬Hñš›=¯?w(Áeᢰ¢I¸¡Tã÷Pœ¶~§Z6×÷]©.eª’ÁC8j³„Ùëjkcº ºÖbJ ¬Å>?ö 5uM ´NéÁ¹”&POI™ð‚àõ‚ ì£_9ËZõÓ*„âÂw@£YKz ¤á²TåvºU‘ ï­¬ÔÒ¶"Ëü„-ª$"¥3±„3© ŠÙ—Òú£?2½E%X„AI×Jl¬¹ž ú<àf‚Ér`æimoz¥Í­òÓt2´Q<ƒ,6A¸È}V, ]qcªM¾W¸ZK¶wQn³zHe'H¡%öT¹¡Â¬!³Üu·´–±]5t“ç¡rè#fQýP9”¾zÜMù0_XJØâNY˜Ø €,׎¿ÅN/¯{rꃭm£¸‡÷-dr³Lq›&$½ÀÄ$?BBÚùUÍó®°!@/s5|óø }fk›3RY*BÛžÀHŽ®S²r’dÏïK ú^~«4Í’$0¤Y¦¼¤hÐ*scI§­¶rfø #ý@ª£”æ{8šú ]r€Øx¡ýõ¾An«G:ÑiP8«ô•J’^_—Ó“rš2Û¼2Ð^…WûeûT~y¤3Ú=I®2âã’ 6l,“GÜû??TOÊPœXåëSß}g¸¯4cñ­׿h Ƥ?άEÿ ª7b;©zÚúº×ë3ì‚H×í&•¾L°ER)žŸZE¤¾²}™÷2![Äî(zhÓ­#÷ #‚¨Ã`’E :ü k[ÒE5GJûÚSÏëÔ4?©ëë°Ûbj¦r¬3û†>‘î,û¥·tûØÅ½ ¿‹êJ#™«2;êÑ#Iôªh“óŽ‘iïÆ8»»™†*5Á…õÊ~óô§;Y‡ÔÀµçÙPÀ-Öi Ÿˆ¾¿² dÓ3™û¦A ¢×ŒèäÃ:i?f¼µÆbÉ å·³=¢¯Ï<2ÃÈ#ùh†URU:•ÝVÀ|ÕÄÊâP¶ïG•ªÆ®1DþØå¤‹–j—Ìj#éJOM¡õÊIÓýü¦ýËcY³/¨eo“Lì­ÑÅb³ÿÜÈPeDUšÜ`q£•ÚVhÕfc!~¿À¢FÆÕŠê½˜ÿ·[´;¤›s¬Çº¿´è·dó¼æs«¹c»1¨é›DÒKxc. 3hÌÏš»"JD_&üËDÂâ±Èë¥ÕdçåTöw‡aËFˆ¯Š÷mêäUFkÀòÀ¯3”7^ª|Ô[,QáºÂ;RZõ²|ýªa0ÄË®‹‰Ý’«÷sk–”<n3ð­_µSÔ&Û¥ÛàÝ^ÄÅ™Šd—Æýº‘²²(´¸Ãº®SúJ‡ðþÆ%ÿôÖà1=ÇÍ:òsbŽÜÓþV‰ÊRØ<½îE‘f}p¯éyL%í&ßÒ'Lºƒ¾Ô~C˜»îcWUÿþ¾M´ u]tó1éÛ#`daI—$ÙOAì !š€A`äÐf$á½ÅV™Ê“‚£^R­”,ŸN3=´`oN†ÆÇ¶0ÒÚÉ~Ùò#)ÒÎ`–ª«!…€’ ‘DÙíÊ–±LÄ»>Æ&æì:¡x+´”Wå0 Á9L²%de!著f$héYÂQ…#§DÁxD no×÷ ·â5ŸbmZš‡«dtQ"{³´"Lùý,8y]ý)Á”väl¿ÖßÏùÊeoÖX›Õ§Jvw äð‹IdGMkóíl†úŠÏabÏšïï×üË^×¢~rOpîÅ6`ž&¢áe¾æX?—ú‰DôÎGÚ HºGS‡Ô|}Å ²p…4 à>UÒ¤ÈNÙZTZùEº?H1Úu‚ë³ÔGž’ÏU„ÅïÕW;m9é%X×Oõ¬¸á&MK/Ï9ÒZÔttÿŠ™E »UÙFœ úì>Êú”ÒØ‘#2ööI7£†é¦½\y¸=Uô;ÝXÞå覾ö%§s‹´[sL[J?u €—~îŒ÷réeyD"u¦L°¡þl¶pôvµvcJËýîƒ+v æœÆìÉb>ÛR‰I°F#ùoOÊMè*ðn7Öv kIÖ7y`(8x~Ñšp–-˜lÇ;JCg7Ùç÷Z°Ò6kðA@3à\&r® _f¦VÄjæÄ áÕòªKÅO¾ÿr´7ûšAo˜?Ùè‚Ùw>ãý Ãì/ñø”¸¶¡EþúÓÏkRq “\ 24p9äÈ„ó¿/YÍnÉ‘HÊÿ:º“;»ríäŽ9$‰å\ ³N"¿ÜäwË«šÜip*Sø˜¿:cg*+ù9ÐNÞæ)eò3ÇGy¦šù<¡8Æ žŸ|6æîæNv¶sæûœã]ÿežû© øç§‚ct%½‡u3}•hãO‘y ™÷§‚cü2oâוÇø3dÞÎS­Ù- C¼5—P’|vZÀ7¬ýT—{#bõ†^uêSoz'Ó@Ì8ÐB®´Ì¢ŠFU5DÕ°†ðÑËpB|û>†! ¤s à*x†=Jpb¬¾°’讬# ÂÎ8Gcº­ä$çÃ^½Ó8Ë64`¤C2 ¢IçFâqÉ{'@5â¹ #¼A]$݇$&''w »¨³œhÃŒçL ‡t8ñsµr”Fjßz×”ïLwݶ#'“vŽàøtWëóáÖö7ÉÉÌ›P[I µ•©cýª¯ §jУœIðÆN†òi%ûäO úi¦Úb¤Œv÷œ¦æðø–-}ŸUS$±ôsn–m õ÷Ö³ü´}U3Wí8]ž+ã;†΋Ñ7Q߈ÃMŠaÉïû¯ç¥Û±] O²zA±|.Īê1J zzúÃÄšóÀfŽÓ2ÂëÇP¯ÐäúßlÌu£æ\ñäy-™Ý²½:—’ÙZ*;ç¿­é÷U9?gúÕˆB•/8ñ¥äM&d*{þ‰¶ÜÉ”;Sž\ƒùKù}¥àš‰¾ÖõíϪ¦+êœó˜rœTû‹y˜W¶18oËŒ¼)Ç9¬4ÚBßJ©iü–»åÝÔŒ’]Š€•$Eþm±—|g7:êS‹<&¥|¸T4 CìZöeÀå¨!kZþû˜‚ý»2°¼aÒþâg±åø°Ò!œï]ò½Ì²Lr&!?™5Ж&¬l^êy]fÍ3yч;úlûåð?¬T*endstream endobj 29 0 obj 4254 endobj 30 0 obj << /Length 31 0 R /Filter /FlateDecode >> stream xœÕ]ÛŠä8}oèÈç­ÕÅ–,òú>а?°; û°0óÿ’-)ì–•™Õ=3Tgɶ,ÅõÄEÙ¿ÔéoêCŸœ6ôÛ‡øû÷ŸþùÓé_¿¨ tp§í¿¿ÿçëíôG8y¥>Ìɺ8…S|öןòU7ºa¹:Øz5¨“ ™“è6¬Æ1]Ža¤ù„ñÉ}ØíøhÎaôñ·54ÎW6_´ž†÷.ödÜÞê¢öf÷¢ò{—ìÄžcoü"I/ß Y‰ãéÛ¿NøS8}ûõô³ºª›º«Gü­/Úè .êòÓ·ÿ~ýr§Á¹ŒÑD6×´ÌE/I?Öjg&;èI=èïù÷ &E×”¦Ï75¨QéÓ¤M×é¯A9?kG˽ÑS£¾Ózœ—§îq¦4Ǥoí:K´ñÊ|øÍ Ít§=qMvP:þ«âŒÎ¨¸"h “VzÒ†þ6fl¾iHâBØÐõ®G}ÕçCjê05Ù [jÖŸHWéI+_hâ#Íh­ƒúLüsyG´·H_Ú/½"íXÛy|æQr¤gã§« ñ¹Š:oi­«U&z‰V·¸ŽøyË«´*K?#ÝMŸ¢-«ËÜ UÚ´§A›ž•ŒÓ–^ÖÛ)íi$Š8¢þD«¸Óœ6I›ŽWª™ÈcÚµ¡Õ‘ÜÍÔˆk¢{Iúx’a†=ñŸÚL7–Ô–”$“Ó’jÏô´Fƒ%=h•pd T¼ö³^¦Š¦oo„Ô~ZÆÊÈüw´ØËȨ–h]Ï0¹Éœ‹¶w›òHÈÏÝóôy™Dóe®¸©<–ïšòÈe³ÌÉÍ2»¶õAbþ28ÔµZ­á ƒø£°#­ï‡™Èø“µiØ— vß®9õtûèšÓ!›Ó"*!Ë©Y.êšÕ¤!°z¹Ç×§`žlI¥‘:3a 'IôÑŒøJ¢!¤JLêŒÆ2S[ ž×]tÛ 3ñóƒkC£¥óþ}½ë‘©Mgßr‘Ⱥ¼ÑbŠ©/ŽêZ&“,Ssú‡@îâUë£#lÜprƒ”¹Ê•)b§bð·aÉ%ä6‹Ã]qä´ð×W7 x}ÐÑèí¦l>oHrÉ•Ütß o²çä$G]4F°÷M°áëê²h—'…zz¬Ë8‚u±lÀÆÁ’t£sˆUPÄ¿IëŒd8Iбr[T} Â"HÞûpª<Ø§Ž Ù·I²e‚˜l×iôJG˜ÙpÕjÒœU‹r6-.®ÙHñ’t‹ƒ÷ýWTtNkK(›)0µxN+Ë~sƒÖ'Smo¯™ºLðñaF-ËxÕ×*ÏV\F†í®ªÔÁtúØ,:MÑŸÙÂ’ò(÷Gg FI±Hpîyƒ–™AÁz ¤sðÈ%ر‘ÑpÒo‹¡÷÷eí’·p?"¯ƒ1Å1—UØ—aDöÅ)¾£­VýgÑ“¥ ¸›L‚±.\²'ÄÛPƒåHj¨öÔh»m÷–WaØv/t1OÅ,ëÕ„ÆŠÝ.ÍbC=J"yåŒÂ•‰H1à„ÉT÷ßÿÖ¢–}øŸßa"¢^¿c˜ìAÎNEõ—µ»¯h‚#±d÷ç쯰º¼«ÍcŽG ×銹¼¢8LÉJÒ_ óœ7X ¸Û+éS ÿ³dq°l=È ù ·#Ö9e†%`[Aƒ|~®jŒÁxaøµXu%„B~Ÿg—b®ºàÇ!µÂœfÚÆIvò–ßËÌ¡"] ì•Å…y1Zm,ÅJQ½Ó ‚·£T ¸QBÏÙ¤iü®’]¥jÛ…$ϳuåŽ*ˆk®ŠªWž£¥©,npLhÁY³rbC‡Ê1O¶ÊÓÊ{‚@©jÆ 2ļ&¤ø"¯«ÀÖðRJanS&K³œ¨Í·¼Xn_‰ ÷Êiî—ÉAùÌÒ*¦˜ª(²—¼eœÑâ,BmÇ/f”eRIág~”9'ÒÃ<¸cˆ!Ô5k© `•Œ…jç[=Sjë}ýV%ÿ}4Øþí6dÙÕë|§Ê¥±Èn1!hÞÎÙep¨'¹Œã$y#ýéË+˜Á’KÏDÔm4”ô¢‹C a“)†µÏ#èªi,àc®cq@U™¬ m¥N§ºår#+¬½Zš’™6»[,£e>Õ±ä£^!¦°õ„[ Dî´»üÆ 8w†]w[.y’š—,¹„G†’Üe„9~Ä»´LB6¹¦;¸#戢÷ 8,¹,+òÅàÝ7hóõ5¿žA#$skN†[0aRb|G?êkS”‚Á…\MÊMú– R^?ŒŠY;£è9Ù!;6W­LÙóªm¥6¬[Bæ‚~?X Ki¹øúen%HW‡Ô17š¸Õœšf ©-!6+Lzè À Gd~ ùÙƒž…eµ¦±RC»½åÎDCû Eƒçs¯é©S›¶`Ì4­¥Hºs‰Í(s;K|Jë{j_IM%ɳ<ˆ1ŸçÒêžšF±}G)…™ƒÊؼôDVν?©Hd÷=v­¤Ž$`x^81~YzÇ2¬Ê™Ì 3Ðä˜fšiþ/êìknnå6~™tÇ–ž@\q©E랤{‘ì.‘3êh›´œ1¶˜D¥ˆÑ¡Exúû^sx»½h n7U¯iSö¬bçT ñ»žì%n.múžºŸhs6m2õ&]ÍØµ=6ÉBÅ Ð.mtámóŽ.T;öê£*Y˜‰5]mxK-Ü}Ž·6ÄæÈîÍ¿ÇçQ¯ß¸!ÃÂåø)rù˜FÏd˜;õµ÷B¤¢u:s§æCWQzTÌ!ÞÑ—>¾w¶ðRPJ€€é–Ü@Kì¶k ûLM;d’ 'zIrTùªÒ¤Ä3c]Ú`*Ðêð˜‰b,—Ûn'òÌȹlİÁLá÷ÚÂ;oK¹µ6™,±×ZO Ö É*ĽR­%Âù 6Ví|úB›jtæÉ¹¦f6:&.É©ßã[ÉO.×­g!J /Ë‚°ÂÛî÷H‰†ÜûhrgÎF¨'íäYb  « äV„«¦D„<©ey,–’@ÛÀ¤6籸êBw”`ÂÍñXK›D1‡1Õœ>K)HëÇ8£Á„lVŒQ‹ä² |˜ë„Q°—i§ÖŽ¡ykJÊkÂÊK‚çAÉÍà rµXvy(rìÌd¾°A—€t¿”.ådsøÙdŒdÉëd5ÄVð¡Ï ¹q«¥üÆ]1|(!f)­™ò•–f–ÎÄB8Zª]Éh$Sq–h_—ÑF’Xhuêb™BáòBÁöåÞÈmHmµ©ƒ·°f¶š§Š¾{u°¢‹Å+T´k>Z7+çά^,Š-ñ‚Dn©‚í÷Ñ©šÜdj¾Üʺ"bØY2R xî0U“͹˜*¹Iñ&ôë7|T£Ö"ö¬H®˜„ øbxÎÒž[Jô<Í-;¦Q&%­-ýÕˆÌ3…Ò-M3˜³™8 «t­°A­±ê‡H‰E\š)¸¸Œ «†bVÓ’¼DGöL÷´…Ÿ"4‚ÆôSn 0(4-²:u“p×Xø+HRê§j5{€“ÐØ-‰/ñ²S$/—xóXÓ8y#'bˆùiXFG8iF•jUèvFŸ)7-vF~"dÛ×Y³C•’-zzÑJ'cÄã\Bçx ÜX,cšüï°cö ®B:Œ Hâ…ðNêC—ÔRÔp?.«G7tñ¼É'è†ÊLe1LôÔA¢X2L¸S¯­EQv¡è(…A®²f‹ZÆ/éÃcÞô2“˜½Fmñf§¨¶ÂûFn©l5=ÈS‡±Ar÷ùДÜI8ø4¸ ©e"ŠU’åÙ0®´‡IÙ?MI%â¡á8pÑŽf˜üZ~ê=î^:SÁO²J‡ Ø[0Ä}á¿7š!A£¤Ú`p¿‡½)§Þâј—äKM‚O9M<òªD8"#õëæd(×¥cÞµ–Æ ÷F¼Šð ÷„óµ|:‹æL°‹ á|r×ñ<ÀÑ#íG ŸµU½ò÷AËU`þ§¼ƒÃƒªOk)ûØ?£U±†ê@ ÞÖ¶Z]Žô//bFÑ¥7Ý„|¦²&v>ÖSÔØvÀàR‰ V]$`|‚‘#¾ìO³óûì¤êç„ÂdàMç4~%¾„ïNÓVÏEäG…Ê;¾ qʘä3ÈSà!k¾ú$ß„§Ù´•úa/+Åi~7ئÛ*Â~Î7‰‡á$Dˆ_ø³Q«â%_ú6¨OŒ°_R¹A}¿ÔÈ6¾Á¨§UPêöx©Vó` "†é’x÷ E{„ݰð­eÇ€L ¦J„&!íÔÑÒå7ŒÏš_c,Ø%ݦ|Iíù$ÑV ô¢Ÿ-uÿz…N—„ư§3½Ö@x¤þ ᄼÀ!rè*’¼…íº;Ð?3 2ù<Òk˜ÚÏËBhÿ¾^ÆË>Øa\568î|¥oA„ü+ÑþÒˆ°€1^kÒµàûÄ®6¬”tÕW}y º£E‰X ÓSŠ?ºî؃ ;c¯cTøZMR+‡àž×ÇòÝVä oÅjß¿í~1Ê»¹–%9wdIúÜaV€•¯.yˆ} ǾV¬çÀîíä5jÁ“5⎗¯Oàßp…o‡cO'䷊׃¼Ž1ŒŸ ‡ó% 3O¬œ^ÝÇ;´÷8Þs›+ý¼ú‚Äù*j µÙÜì÷˯Mx†Nó¯–a‰œkþ^x%»ó4–újAÍaãÄX#Zý܆cp²¾4¼À~ñ»P׌üåôĪñendstream endobj 31 0 obj 4234 endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream xœµXM‹1 ½òæ¼ÐÔ²ü K!“4÷…@ÿ@» =vÿÿ¡vf$;#3m)…@5¶%½÷$Ëû>¨á“:Àà@§_óïÇáÛÓðk¿{O_ó¿·ýn¼îw1¯ôé÷ú}ø|ÁÔp}ž•ý2\îw·*~V£:Áy6ãÁ’ù8™,[@O}Ї!YÂlA½Æ,F®ÌCc’¡´ ˆ€×”ª“vœ¶bä”cd³¸üë9£s—uª¯ÓÊ]šZzdRª8‚èЧEe¢[‰£bÙÔ<6u³µ‘äÂjšEIbc8kæ^ñ‚¥Ž¦ÁrfGK^e5—5{ÞMI Vû—Jâ+¢*‡F‰‹þ´dÃoa¿lƒ}9'ùÖœJ7æ…§»™ÐugÂåe±¡­-—}AÜI›ùÁ%?6?®?ô&­„Çäóm™Q—±VøÄ…ç¹q×cxãžmNb÷¬i¨žµ¹s÷åð}5 ®=?/ùºÍ4âûþ×y,iÍ]ðÞꃔœS4_`MoÊ2w+™¸s\ÜF58téLƒ)¿é!¯O9—º±:LFÌoÛùKÞqû°Ø‘í 9“¬·äd4&Á³<©åÂ6޲Z¯ïhûÈ[V½ON^†ß î³Ôendstream endobj 33 0 obj 901 endobj 35 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 1 0 R >> endobj 36 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 3 0 R >> endobj 37 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 5 0 R >> endobj 38 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 7 0 R >> endobj 39 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 10 0 R >> endobj 40 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 12 0 R >> endobj 41 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 14 0 R >> endobj 42 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 16 0 R >> endobj 43 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 18 0 R >> endobj 44 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 20 0 R >> endobj 45 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 22 0 R >> endobj 46 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 24 0 R >> endobj 47 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 26 0 R >> endobj 48 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 28 0 R >> endobj 49 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 30 0 R >> endobj 50 0 obj << /Type /Page /Parent 34 0 R /MediaBox [ 0 0 612 792 ] /Contents 32 0 R >> endobj 51 0 obj << /Length 52 0 R /Filter /FlateDecode /Length1 49696 >> stream xœÔ¼y|TÕù?~ιû;sï}K2“ÉLB& ˆæ*›ˆl²HÑ û&„Mq Um]P[p©bÕ `@ýH)µnZ·ªUhEEk”¥TÌüžsîLûù|}½¾}g¹÷9çîÏy–÷óœsîÒÅËf µ"YÓL]ôÚ÷{ !ôBØ=mùÒØýYú!Ї{Í\4kvõu—!$P¾fÖü3ïûô' äjEèzuöŒ©Ó{ÍMë­Yçè;*žÎþD‚ò>(—Í^°ôºGÏ_ å£pΫç/œ6õŽ/z¡µP‡ÚL½nÑ\õ]¡;¡ˆb×L]0cÖ?¼c C(}hÑÂ%K@•9„^`Û-ž±h÷Î=eØ®B=Âð¥ H‘– Ç ¢$+ªCsºtÃt{¼>  G¢EÅ%±xi¢,™*¯èQ™®êy^u¯Þ}jjëúöë_?``Ãù4Z^4hð¡Ã.~ɈKGŽ=fìeãÆO˜xù$ôÿÊGØBð O£ŸBA„r_Àÿ(]gçäŽÒítM¾‚;ò„6£çñôØ+Š2h6zíÆux‰ Sr#sû‘®qœuÚ†v·½Œ>Äšp,÷dî ¡*4ž§ýïá²]+³”ÑÀ¥¨¶,Dÿ…~âþ Y(hBÁ®Ï½ƒ¼¨7šwû4ù9þ¹¾·p¯òCs!ðå^Êmô;ôWÆÕx4žHz…äÜb$Ã{Ãw:šü~Îþ NãD#¸'øgùSbQöpÎ-’B Ÿ£ß`'ÌàsÀç>ÂÂFa³ð¬°W8&jÒOd$¿uú‰®Ê®O²(»&û@v[¶=÷Wäƒ6 JPÜýTøÎ…ö~$n zkÀ»0®ÄàK3WṸ_œ¼ ?ŒÉîý×ø%àÒûø[¸g'‰²{>Ô‘‹Èhø^If²žÜGÚÉ{ä$'qNç|\%7ŒËp3¸¥Ü î®{‹û˜ûw‚; ߯ò%|)ŸâÓü0þ*~ÿ þ þ aŠð¦ð™¨Š ÄUb‡øßR_éiŒ4VÊH÷H;¥wäfÎߢ¶A,|ðan%7„Ûî&5|ˆüüäù*4I@RÉf¼†Ü„ÛI™p8 Ä£Ð1>¼~•l$'È@n$Ç¡¹¤·}6ÑËÿ V üoQ'ÿ<ÛàÌ׉¾™|+jhF¤®ù;®ŸæÞDr‡°Ä?†>âUÀäin HÁËüÂ$çE¿æZðMhû”¼äxþØ…ñ¸þžË!ŽŒ)êÇ}ŠnEóÈŸQ'èñô žÎÏBw£|#ú=ZÑC¸F¬}øu2‡_K<¸þxºz\†9Á‹nÃîañ[òZ†ð*ú„{îþù57’?&\†gƒÜ„V¡–ÜJ´B˜Äÿ ÏBžˆ’üa°n7r}ø8¬o«2lÚNÐîÝ`.äFBM$çR‹ `!†ïC`'x 9 ã—ƒûjÇ“4Kpa°:ñof/C“sO¡ ¹YèšÜ}¨'؃չጛÑgè´ßž½-BÅ 9ŸàK…¡ä€04ד¬%qäsÛ¸ÄAô|†¢ „ÑZþ}45æÖåÞé® »].AGà)¿+\ÌíA5ÙQdkn(·ž÷›{:W‚U4;7F/¡_Jš*¥­AÆ_h5^p~ÃÀõýûÕÕÖôéÝ«ú¼žUéÊå©dY¢4+).ŠF¡`Àïózܦ¡»œšCUdIxŽ`T5$1´9Ö–jnãS‰‹/îIˉ©P1õ¬Šæ¶T =wŸ¶X3Û-vîžì9óG{ZöžV÷žØˆ5 †žU±!‰XÛþÁ‰XžÈ¬%©D)š†×à¾oâ¡Ï¶gw¾r »{ók¸èýpdÅ—÷þ!û>y/À?ß›ýå_e7íx Oþ¯ì¿²p-ŽlÇŽŸf?ƒ[Z Mó9Äq7Y=d³Ña|Ê}á9Æðˆ<<¢ÕàpÖ®0ðCÆÁàá`.ÈÇd¯ËëwG ‹~§êti®² EY´2ÁQAi‡×å‚eGîkˤÜrð”UŽR¶ð vn8¼†!Òò–ƒ2Ρê:+Ÿ°Ü”O«¦omÎá祲µ}kÛ‚Ç‚dQpS°-¸'È9Rãó'1‚£ÚM“Lâ$k*JXzˆ]©ôêˆgí@·™ôjˆ°áéõ½„®yŒšÓ:ˆƒ¨ '2-éîÈâñjΩ…OgƒAåµ±±Ó¬ÇîúÞ½­°ü¢©¨²*©œh¤LÑÁºêŽ`”ÆétåJÚÊéLKYãë[ÓÇïØe&ÌÚ´®è3W?¾ìãæÇÆj{弋—<ͧÜ2dÑÈ>7u-!«®Ypá}ou½„ìVSЊ üû]È™—A¹ ŒJGîÏÖHhÄ$„?¢ü5ðYLxW8#9–P‚‘˜Âq‰â¨è‹_ Má¡LâõÉMI’ ®äz›<å¨ÔuXÒVuP¾š^ÊW(µ”·&¡¼55Úª¦H¹kÒÆ  â{v?fÎXZ0¹>‚#ìt‘îÓEØé üeÒÓEXSETz:¨ÍÚBÑ艡|š8BÏçG¤&‘Ä^6!R‚ùrˆSÄÀ Bˆ &^ N·ÓÓ#*“^&*““‡PY²_·=>lL0u¼»¥3-‹Á81Ϊéiú¥+ð©ûG]uõ¤Ý[vv•“ŸÏ¿jÀýOv=H¶]wݘ‡ïíú€ZÊÁ¹£|9È‹…ð¼¾ }Rµo”Ðic.¡TˆmpKjH&^,O›äYâY®5¸øë‚CŒîþ!Á)Âå2#ãÎø/ .(ÓîþéÁk±OçÜxa¼z…6Ÿ›!ÌPçkj ÊK&›·,bÑV‰0³A­(UH ‚̼ùÚcÛz¬`[µÓvÊÛ_Fì±2Ëe‚c7OX¨ÌpȾŽÜ‘¼Ýɱ.£TQ”.ËÝ'½'Â|o÷€Pïè…î‘á £cÝSB—E§º„§F¯¯ó '‚¸GÝŒñ7ûù9T_ol2ˆað‘¨*¡ÝäWçö0–aÆPÊc|¿'Ê;–³#÷†œ6t)ñ]'Ý_)¯¬msbg¸JÛ“©Zº¶.¤‚[‚Kü5F™d•UÖ–HÒhíÓ‹ CQ¦)L€¥(Ó?Ó‘P1ØQó”Iƒ­"›>Á] ¼G;ÝõÕ™†®–Ö"Ô4åMnYŒLPMrx¥¸ŸJ,ާÊi qWî®úf×—Ùo±÷/ïb>}TÝvû´u]’±Zÿ‰wÜø žx¢—`k¸"ûIö#¶e÷l|ÿªA³Ÿy+Ë}G*… (€þ¼ ©ðä‰T­ÂžˆÖFXsª˜C~CIëªèrÝ(E¥ØéNj8'ÉC”!ÍÒ"©UZ/ñ´~“Ô&í‘J"ƒhy¬v¼™”ŽÜwíT’%Û å‰êŒd`;˳êNŠÅ:Íú3hÌ%º¤¤KÔ"Ø)ë§  Ö`L†ÁÎq²í7ïYþëíËæ¹«AØÝõÝ}™'íºŠ<¶ú†qwßÔõ"X¡KÀ EÁ U ~¤§U¥8•Ê3\ÙÃYYYïìëëP9¼2ãÌTÎuΩlîµÖ¹ªÇÃþGÂÏ8}TÂè“–SŸ¢ÔS¡_Uì ½X±/t âO¾+äÁ~\L ­I9àf XÐ貎¶ùJ•J‚éªÊÚz¾¾j8qÕD¹)=Sž“^®­Ö^×~pþ6ûÕº0oT—ÕúĽÁ«z,ìAzD«]®{\]9—°ÑµÅõ­‹siTY\Ô:ÑÆqÑ ûhÛ»4ÊzCt.W” t_í ÞïF%æ¬}†”«}@K{L5¦"‘¹Ùd¼ d‹¬Œ¡@ïíBzÆ@2XZ]öŠx@$%b£HD}RQ£÷#2[*2TH—â‘©—hЋ‹½ûwËZ¦¥óxgš!ÿs_CWú³Ï¨ 8’»z,iuaÿ(PË æ5PO=]šÙVX¡–$5¯©ºÚ¾}û±o]-3¬Rù$ ø¼þ@"ʼn’‹ø\€¸†é»ænyiØ’‹ëæ}8 × YsËŠ¢¶à5ïXó«1†(})¸zßÂ)}Ì™ýxªèÖ CŸ½}ÔÊQ^—3\–T¯éy~SK°åÎÖÔKÎ»îØ©ÛÏï?®ˆ#«/n¾bôùׂ–ŽÉå:A¢ÃxòVBÃ{«Öu‹Žu¶Ð´p5ïŽ:¤ x7ìòI23¬Œ•ÃUyèÆx°ÿW02öeúÐï^k˜¢á’è Ï À8ϸ@³§9ðy„{Øù¤ñdX“!u.™ÃÍ–i‹œ­Î§´ÊNu‡¦ùµUÚ§„s•^¥/ÔoÑ9ƒZ+z!zSÍp[ùFÇ‚tÝÎÜcn½ÌÅЉ«4B=#]‚Á¿`lÑÖÆ•|1mm¦»ááQ_Ù S—Kòî•!S@©w¤¶€q ‰mñÈ,Î'AvQ4п©sññtçböì f}µ‘t„Š@ D}MçZëf8_²ñ=kd®akÑ·¿þ0û¯Å_Þñü_J¶„n™¼æWOÞ6÷n|{à…¸«Ïa²rËc‘yóûö{{B=E#´ÙVh³^\Àº/õ–P.Q—M,Qz£r·r[ÙSžg«örN%z¨z/ DÈBŒ>X N‘§(SÔ)Ž)Úç\y®2W똫Íu¶§ÚËõòTYyY¾e“Õ&ÇôÔôŠ¥‰¥e­e?UÕî«x°êþ^OªÏhO”?Y±=õ»”¿¢u–ˆD(+lÊÇÒ‘(e¢¨#÷‰å.®Ÿ,—'5•ÇR>Þq^Q˜6yi¨ŠÊWI¨14:tUhKè@HÔC%¡…¡C!¾$tOˆ„^ÛãˆÈ™å¥»ØÂÄÀ1AØÀ„"µí^­Ø\f-ÆçM)š_DŠ¢>‰·M™Äç PÂòP«ÄGÏs”„q¸,dy‚µ}èáÕÔ–„‚ö’ªAÈOÕ £G†bô¨³%!†ÎB`ζIe•pèŽhýÁJ\I¯B¨¤ž†ô ¾ÚIª ³KÅ+6÷ÙÓ‡4öiíCúP”Y†‚vl˼cÌæ2™Àz”°Bô&be:ÓLÝž£»éÔÉÆè5u½ Î,½^zaBꇒ™–‘yƒ× V‹GåMa:ݘòŒûerëÆÎf !ZN1ºØÊ¶‡ysÙ*ïYœ¼U)ÓpƒK±R*¤zÂ¢Ø Å¸+A¥ §&÷P#¸¢\QÅ4A%Fõái£Áh°˜^¾2½råJtÀ™Å-O?¿p•§ÊÏ#`uûõµS.Õ €Å ;´n®8¯Å`¡k=P…’RëQz1¦NÄI“‡W_F/H[Õ×ÑïÔÑ»ê×èSõ:®VÁã¨AäW+PJí§ŽF–ª–Û_+€¨ÔnÙ³+ð<ôÑ‘JEJ§Í¨"f‹)/h›eu+¬–‚æ @óã4ðþûÓûÓ¨º±‘5eÄê§J²œTT¯¢¨ˆ#1/`AU‘ªÈ2(ž(© ‡°P­a­T¶, ,Q:pd‡%´ DÊRbÄÂ¥Ž¯þD¥©3êÊteÂÁÎ#;YP5»ø®ÎK¯¾ißêó‚tÕ8'sÏ|P¦)Žk<þ@ß~žŒÿ_G’»|½+{ ŸêºmÖÂñËÉj3ZÃÇϸQ1¾Úº[3zç# ¾1Ö#%±Z¢¨¯OÑEE‹bëcò€À€È%K"MòÚ”À”È\yž6ÇX˜Ù{ÛûqðãðÛÅG¼GŠÇr1‚ïå«ãCùKŒÉÆgŽ¿e ‡éâüQ–(óG]ä •T±¡Zj³Úªò1;ÇXÂR¥`ÀAES æË'™ÿViâê¥j'qÔJPÕT—bO ©q'Úƒñz¼ ·ác˜/Áx4æ0µ¹,SY¦³L5fÓî Té®Lç1 1 *Ö/ˆÏä|òÖz¤ÑÖ³ëLÅTë;M–ìu†½P‹§pöû¼„êv¹É•Ÿ\ýä€ûf¯98wÙ¡&ßsžùÔòëž}zé’­Ù9ÂËkÇŽ]—{è‰ì©;/ÐuŠ{rÿ¾7ß}ó÷©Ý¿ý˜¯ût§À@QW¿þµl][g¯{õ¶× tm%ÁJëB‰°Q8$ð£aqLàJ„E ”9Ljz ;­@ÏÄÒ ¾šºÚïðOþÇ<æÉ|/ÀÙÝ@Ìû!9ŸÊ´]9†»P·D£øs} C3iÛ ²nºÅv5ÍÜÚ.ì>9”ÊïPð=‡àÙMT„'XOª„w&µÎÁN¡Î[½œŒW/óŽ‹Î"Ó…Ê4ostOÉ;»žCŸy>ó~ø{è³¢Ã%¹II:Üào/*Y_"GÊœçù:ç2Ä9Ô;î2°s9 E ö1‘ê¬Á(iêIÃ8hbôÌf³ÕäK˜<—0y6ݬo‡¥XÿŽÈúv˜lCíw¶‡3]¬W‡Šx¡?Ǻˆ%V—ºË^‘H‡¤œÄ²”Åge)‹íÐ…QÌxI,_@³”cÎÎR¶ŒììTZd®¾y)šÇ#cæe–æØó>¨.@÷ñYËõŸ±ï–w—Í}çÖæª·wÅž[¶ü—›o¸î±U¿Xwꉘ[;öBâ:9”¸ßzã7¯~øÖ>*¯ýr_pSY›=c3È,q)Y&®q®1E…Å íªn8l9øb]W¡Ê)G![ÂÖÕI¥‰õvò;´Æb ŽL̃cË3ÆÓìá=8…l¤Ï¤ô«‚èýÅR™4ŽpïlÊ‹uà¶¢éÛÎt#eEÕ2çk×[¤EӆϭØÛô›Ÿüf?ÞÜ|ã %7sßu¼1÷úœ!$êðœ9b{Þ]H¦¹>z²ËiB\È2Õ&SØo¬ JinºYÐ5NA˜ÈŠÃ…d…¨‘=»‘ð“;كȜìNÒ°~¨Ð¼À~¶ Ú³Ç8xpÒiÐ&ê%"y—XBSÝâ‘-9¶äÙR`K™Jf‚R„‰Dz¶„E1 ³Œª–Ïã~_èýÞ*¡TJÀZLu×êl!hàÁâË2&g[p[ÎÕÉDðB™h9‘vV~á´Óg9^ RLó öÃdì§±[F¬[Ñe/‰Èürm•ö°R® ×¹|ÒYåšÄ]Á/w^çZí”Dë}]£Én°dÉ#¹Ô‡Èîéy3÷´$º‰îrõˆWˆ JÕK”µËôËh Kd:.¨ËeÐvjv·º‰{7ÙŒœ¸÷6!&wàÞ`ß5fi·8°c7<¤ ;` éÀKÑ1Šé‹ lt‰/Ä„f0¾œÐA6o7‚D†(&Ï4»@Ã!£èpwáHU2`Pø†ÎÎsÈîˆ6ǸmÅc'Ozi¹S ƒï!’{¯ÿþMxD›Û*X:Å™û~«K¥µƒ¦°â;;ãõ®ªx½³È~õ®>ý¹£'Ôö¬·YÞ´˜ÚðnMM5fSÌãfÂÄ l>„Ëð½ü¡:|^ÌNÜ’$ì>õݽy„;}r(ÿæ©:þð):dc2·—ƒ¦(eùÀaႸ•1ðßÏ[žf½‚T± y8­9o/8ÒýÏf¿³xÀ!´ o£vZÅ^ë¡êP¯ZzD{ÔùŒS;+œm¡=!>D½YE¸¤¶HvršU±¤½ž\¸Ñ‹½9Å’<ºû°í{ç]`:ZR»áŲ–“z;/SÀ ¦}¥ÌÿU1d&Ùo>ÏþU¡Gïs†Z¨Ç| ùÁÐKx7Š£XEÁtúŒ¤½Jéã8´n'´n†… à;ëM;˜ð`8%Q‰h(î2E=‚i±r%NCë,®¡ý"uµýÎôúù|´dÛÆžð­Ë/éßç²Áp¯k™W;ôr÷ÏÕ¡ÍW¯;=xÏŽå¾è!Œÿ•ŠT¯Î9¸hHw‹Ñc¹õ˜ÃÒb:ËËËÓáÃÁý ¡tź"Y "²]b† ¢õÞ‰ú•³œ–NôXE¯Zƒ.$MqûAw¹£\+wöÕú:ë\LG…»Âs±¿ÉÝäiòÍqÏñÌñ­—;W˜×{¯÷Ýî\k®s¯óÜá}HÝìxÉxÑÜíýJýÂûOg—ñƒ7-vçœßãˆFx}°~›Îé¡îÛ·»JÝõ&Wçu]3L·°|Èëñ$ݪ º¦›ZÒ¡B3ªÚ9àé PÔˆ’êè+Qí ;tà…åí ã-G£Ûr“«Ü¯€-èÀíÔq)Qé&Æ-+¦õÒFkÜ-§ öØ^­oHc{$vãÌ`˜×Õr<Ó!Õô qüHÈ8˜24:ªßiÇTÝ囌}°¦]@ x’Õ.£¡AÞ7¢ÍÚí~4ÿ(räŽbÐol÷æ>½VKA·Á=îðÕ›¥>¦×M4‚µNƒ^{Êí„8|Ï¢D}à-ÞU Ì”àÈ.Øûqº´$ýi{vþ…e½nœX›õŒQQ™§ñ]–­¼q9™wêµ-5£¾q7,V£ý€Y“VÐÔDƒØ‚øM°}Ïr'2LëíÄîýû÷Óc_ÅJ†wßÚ ’ ƒµýÏ·ámM­½îÙË^Wô°× ön/*¶×Á° ƒ+FmLX/l8.°÷´ µ!¾šå»ÔÜ1¨\8¶;ËJ `Þç~]ð¹öX5:6ʲ¿0߉çßk:j3Àõm­Wi‚§;h³!.¶¯ìeÀÓü÷=<£ƒLµ"¢æÄ‰âd…ÓÿNˆàÒè-ˆv"—Ø‘KXކD,Y9»V%n1æ‰×‚o>¶Ý]N;€µÃÚ-°Š8«°nƒ‘ç^ì§ ã…¤ØS¤^Ë-S?ä>¥§DœSRR®û+ÎÑÎ&¾Iœ$5)7ñ+„ Ê«âŸø÷Ä#â—Ò¿ÄdŸ[U¡<EIQd(@4œ”D¯$‰Ï'ܨª*P8€Ø 3Ùá@*ßuˆÒyÖW*ÓR<Æú { ßz'v:’"m¼¾<¥¸¯÷¿?²ã7k÷YC'Bšó¯ña3Ïi ˜ eúËÐkgwÌ €8ÀÂnþl5“ ¹AnàØ2ocœ#\¢ÜÆ%è4kéx³¼¦YªRUT¯ÈEE Ð`Ÿl+ª‡Õ;Ûblµ5n»Ò&æG[Ã0Ýs{¶Åë¡÷lóÓÕ'ÛŒzÑ^±’ÆV[?LA½”ûcË^?\Íëm` 8êĶ =øë­{w:R&“§ZXD…k0¸lÉ\ÓŽõev.~å“ìc·»O¿„۲˻¦“’ë³WPÝ^àæ‹ ˜ÖMãzØ‘b>V§]s²œèQð‚4ĉiö†=í.;YºÇª¦”i±²jri`Y°¨«Huj"mEÍÄ„WySÍ€³‡˜€÷ï7ÞÛo¼Ãàm#MȰŽ?›˜á@¿îÅ•|•\b^aÞmrfŒå{:r‡ ØÃ…!+Ç,¥$^kD‹lݰ^()«åEMñˆ%äxÄ‹Àâ²Û@Î+E刣ÈU†’R¥œvÕ¢:i€<Ð5˜&ZÒHy„c>̼Ä}…~™{ž4]žå^!^/-•w‰»õîЧ” ‡Y*œå® ½Ü]ííú¹¯•WÉqjOãÍd³ã)mÚ)îv½:õr”?ªá>.žT¢‘ޱƖ†hw³®¶,¸»ˆêÒy72e ”NOºh:Ä%qN¬%½gõ£Jáªd9'özDÕa¦Ô´9ž¿LbÎ7o4ךª©òÚisØ s†Õ¶Ç¬@ž>NËÆúµ{à±¼@fQ’Â7€AªašàÿGl;Ö‘nÍTuWì·¦$Ç$ð¸iA‹ ¹ “N—µ ArZ•½p8º3kˆ`ÉÍËà]Nv{n§¦É²$ÑT›[´ŽTï É›´[“svà§-56ZÅ Õ[T<ÈKmâ…æ-&1iÉa¸™å=ÀÂã§wàž3Y¼y<“ veZàG“r™àçÝV¡¹Ýö`Cš¥3Ùrõȳñ÷¹+JpÍû$pÏôOiúÑV2nR»3¦ÅÈK¹ÃÃß•;ØŽzé17È(ølûÓ4¢­v‹"n•zaV_Ãð»œ;¼UŠÙµî<âßEO´SÑsƒí?¸MêEϸ õ'»í+uŸ¼û¸;ÎÌÞ®Æøê6bpA$à®GUð§¦ËCÍIÓ™l ‹ÀX4@ *x/$¸rȾ¸û™F¾æ™]ëÎß¹%Ûþâ3=ÞçS]1ß ×t=ôæ~2óÔ‡äÆ§€¥¹w¹dxù*€ðdGFâ‘ÐÈ DÂÂ"Ø!Ä/º‹6Ó‘Œñ9ª µàŒ§.î»ôÀ;vÐüЪÜQ¾„Æà¨·Z`AÓË„:aˆ 4–´•’’ÒhMô¢(Íúˆ<4t©ÿÒpFÎ8'éÿ•á¹ò|çlýÿ5á=%h> ýÍóuàëЧ,oŠ Õzµ·—Ш[Â¥úa¦ðaÑ?ù“†fø\¼HP„&:U_Ôå–t`Ãa9š­ÞN9Ø8G0ÔŸ(d3޲vrÓAíËjÐÔQ5À½›5ù4›=¢º†Kò?g<³…1s…Ô§vVêÓ}Nêóû§>ƒ,õéµSŸÅÃÎívvê3þqò“æ>Ïd’Xö3ž°ÇþŸ¥åœ7p&“„{>ݾxëÕ[Z¬ìw/¿4ÔN¸wùs¿\¶ü9aw×?ï}ÏK²ßfßû9~à• wîóà«û© $-‡Ö â¬T”2{¸SÁzÔ׬w÷ GÃÌáîaÁIèrs’ûò ñüNò²ÆÀáPÚW+Ôjƒ…ÁÚßxa¼v…oº0]›ç[*,Õnðé‚f,Ü2’u"@)?2~«˜ã™‘“eA§8]?x!D 䃾Ž\X»`Œ®5·I×ÖdŸ¬Ä¨=‹Ùö,(Èr±/èõù‚nMQŠ}n Ý&HFÌ0!²4ÝŠ&}‚n"pK4t]±;HÐí6M$‡°q¡‚Ç¢Ò`郿…™Ò¢ôM¥ûil,ÝK WÇ0MÄòÑÆ‰B´q¢mœ,ä4OršÇò9ÍLzà”³"6чÎŒèdS~èß]_Ý`t5Ðá3tÌRlxjg]¢D—.’Àñ>ýúR…M%â°­ßĦ ©Ío.™9ëö{.oýͺìOñù+û_2bèO~‘ý/¸25hò€ñ÷¯Ë>/ìnÚ5ãʧjÊ_jµµ¹7w™éŸ9røÂ§6IZÿyC/[Ñ›Ú싲c¹¯ø P1´ÊB«Ùá¼Uޤ÷Rǯ¨…Šª)oU¢ÞÑ×{‰c¨w¢4É1ÛqRý§Ïu^¢ªü‚Äå—–¯¯ÚT%õ÷íÑX5Ô14>¤Çøøøs¤iñi=š«Z«>,?ÿ&ñm¹ð‹¾²µ½"ê‘Ø8'#†z±QN­h:ˆ$ÔAn²úѨ®)jªßW“¬Q“ÁàÁ6V 9Ðà«à’ U̦X’?Ðä°$À϶ѱ÷v7¶;ßm'?Ôà^Âú³—ê8‰JKÊ^Ñè‡ôœÎ—èúhÓÙxd=̆””²!%t"Ia Ëôë¡tÕÒxíÙs(h²ÿx§ñ£|ב´—ÿ|„®ò¡Ztt‹÷Ë!À'vÖ?PWHzŸ=˜~æGŸAKoZtáåm»æw½týS3>Úô__mxê¦7?ýu›'…Ç&ûLŸÜ¯íNÜðñC¯{¨õôÜï\÷,WùÇ=¯¼õÛW í{<;`ñ¼½k ÀSÈ׫! $äy Qá¼o ‰ŽÌpˆRÔÔ×{±lŸ¦9“ªºÞKŽÑŽ¦È­~lj”2gÎÎÁÆ:Š™weS2󫌇ŽÇûüg °Àê›g‚GvÚ #w}÷¸ ³¦f5„ö¸WÙÐS²¡F°â’ìÎ|:Ù„ŽÙÀýëhÿ¬\Õž]Ú·¤_ßöš ÎùÇ?þpÃ×ðûø)§6í9ÆZ:BÜC¬eà¿äso>;Dž("€Éó9·ê4óL&K³½ »±^b±¢5&T?Y€@ÞàzXß#ì÷HoêŠnùëÜGñ9ÃFàX‰ïvÈÕîËù&©É1Éõ ~H}ÈñéÐ^s¼ázËø{Wù£ó#ã3Õ]/r›zÐ i|碔."âDªJD–Ÿ§¬@Ìv”3E‘“dEÁ¢±=Ç9tÝp9X׆#…8œf¨¢NtÕx½ª#‰/B Gœ¯BÄŸÔ í5NUŽ#"´©¦!u´»‡;oÖJU}ª¨Ül©8ò‚%Ž[ENì ƒ,WŒ»™”Ž^7odC 3Çíîõp°ÓøÌ8ÞùyæïGÃüLÞµeòÉ´z]_-3Of/a%±üZC·»‚EõÊoGQ½V¨çàOËÀ4ÊU}õ¸4^¯XÑú‚\5± i,‡È»&@ý[?ƒsåXÇ·e7üõ‰ó¢UÉíïgïÅw~üá€ì—¤gÖ뢚SY­ëø’¦lž«ø°Ý ;ºÃr ¤˜çb/P:È’í1ó¿ Æ0©æ0ôÌ\ ‹Ê™[‘ó>廂+ù[Á¹œ.ø”B§-œQÞ¹ál¯p‚Z“Ìç7ÔX˜> )/ç“òÿ*<æ÷–ßvZ̉cÎ1NBò´#&ÓrÖØ,6 Þ.R¯É„½>SÍÝÞ‡–Oî%'÷îíÁ>E&ŸJ¶wÿö h³.à‚Ñ6«j†9ÏKF#¼WWxy‡VLcØ@b $»S2ò‘ï‹;nEèíÊáXÃ/tþÿb„üój…ÁþÿBgC…'õògçp‡ÁË(ŠûZw;HšT’d…&6úC#Bë‹7 µžÚHcñ`ÏàÈ8ϸÈ4Ï´Hsqkñ;â»îÏÅ/µ¯‚FRª¥}õ¤NN†j“ÉòöQðSÿ—¡Ï#§‰Žy§7uH.ÑåÈpÕ ÚG¯cC·ôf½Uç‹™û.fî[gî[ïvß:sߺ??†3kóR÷Sç¡F²Ý™^jþ{}ë£gž[bž[òÛ©L{QQñ¹>ûèŸï¢3_~<œ¢]3?¶¹oÞIŸÓ3_Uùà„—³ß.|ûæßµ<Þîº%OmY¾ì‰ì"…ÏÃÒ¦ì­OÝ}r÷üþý¿ýý;ïýžj¨:dÓCvX=RnÂ~éáîáéûqýåþJçW»ŸGu{bîx­›.\ ’4‰ì̯•üZ¦ª:žîÅÑŵøZIñ=¤ G¥+åîË8è/–ÇóyŠc²k¼{žÁÏ•ç9æ¸f¸—ñ×Ë+×;¯u_ëYů•Öª÷óò îWù×å÷ù?˸ÞsÁ•º>wW‰lr£f’ †Ÿ.Á½›,òý~;%Îx/Ÿ×ªfÁ{QÊ`ÞKV ùwï•mßÅ<—axtêº Ãiº=žnïåQX4ˆGQ=žX·ïrÆÎv\Ä×\íÃ>@-1Íbý?W½S׫{TXÇŽ«ÈFBP–*¶[Æã€Á°“¥ÆPÈëÛoÞÌ„…Æq™àg¡ÎLgÊýØ›¶1gÆÜ™Ý=töÊölûšX ÇÖóînu–ùqP÷?ªw#õnêÞ"õ{E“¼;#õri¤ž¯Ü­g3îJ¢õðyü. ÁãöΗ 8(æ2Ï$Uê®whEñó1*Š78TJJižÔyPG)Túœ>‹nÂt¼?u¦v/4Kh³0Q!ý²ÚX—è=—¿ÝÕEÒDz÷”Ä{û²ëÉiò_Ù5ËÇ\ŽoïyúâèY7¦8‹©.Ðø°’õJ/°4LÀO Hf.•5ÿÀêÀ¦³}L~.Ùñs¼(›¿S_¿šgRkkë.Äå¿ ™µrL£*i]´á)î’­¡¬‡dçÐzÙêc“}ê%Q¢µ3d›¤µ FZŽD½äòÂßCËÇwz€,²É" }”ü~«¯þ\cý MÐ2˜úvl>ú{Žìþý鬰ûÔJþ–“CùÖS­Tf™9ÊÎý–OŠifq•-ŠÌìÿã|Ùé_péÓïr· »ŸÏ6>—u>O=óc mÏÓ¬*ŧ­¸ÛáÂî¾ÑÉ%3å%¼Âºe¶”Œü„“=ì®G­@8 ˜‹¿mw‡kÝ´»±´¼Ö¤å¢òZ#¿ÖókØþçíE){;ìoä×t»5ˆ¤ë’è%±qŽ)ÑÑÅÊu®úíêýAç3z‡~ÔõDš3u¯iꦮ)ýªè6 §&°=áPq€¶› x)CZAˆ¥\rqÊõ¨X˜"øÏ g)Ÿ¬—EÌÄÊ•µ–qe¥Áÿ}‰ÿ«f$n>;«Ê00CG‚gú!Y+¦a[C}5ëuÔ¯v— L±§Ážõ¡âša=²¥×ëÆÓ=À¶‘ù4þ'V8To‚¦¸©Am”zá_ÿnÑo:+ýŠ'ÁGè%èc(#þY»ï­ëßx{dÅ„KsÇ÷N¸æòžñÅÝþÀ¨ŸÈöv~mÅ£ï%ËF-˶àÞ·­ëﺖq5ýV ›½ŠÆþ] kM,~qáY;±K7ب¸ïÚó„=ö‹j§ÕtfÄ™=5³ÚèeÌ’g+ÍÆn½ñºðª¸Ç8f8d¡ O$cŒÙŽ6ãÚ?œÿp)¼Æ;yçP!øä5§K%IZ5 L=m Ýîµ—40ŸRZçcýè1^óÂQJ± ÈÅ,°\d)HÖ¾´@nÈnì@;,·C3$î²1üþÏ­·#/Ë1FÛ#Ò¸õÖhÙÐ’[¤V‰H?Õß{ŸÍ»h Á~“²(ØØîl<Ò@çc°]iÚ÷ nœ®q!) ÛµoßjÁ^ƒœêÕÎëœ,íÎC(÷=ëÜÁ‹ £Ä˜vÈÄ9Oœ£þ‘#5$“>~¶ë‘Ç>Àÿ½ahi´†BÀ/e“Éø]×Þu'µlSr_ðÞF½ˆÏ*ŸÆMã—pKy>Y^ÇÕGqÃ¥K‹†” .Z>Žk’¦]^q‡Ç•  ™Ÿ”jÉ‘*å"Á”ÆÞÙ&’"U ÊéøŠ¡”ªp¦ÊHWžì«×&'‡TOŽMLLHÎwÌuÎsÍôÎRÌx½~“±¬lIr·Öq‡s­~—q{Ù­ÉûœèøŠó`°g<厤ÂJªN!Ô#ìæûôN¡`=WDîˆHÒïìY\žÄIÁ/P9´%°¸§R\ìçØÄÃ4Ad÷{fòƒ‰õÕö7bõL–¹œ!-*Ž@l!ºˆ“e¥P"Ò3lQ1»b¹N?êÉ&Ê1Ïlàƒ›ñ"¼‹¸·Yžžô’ôÒpÇ—()Ô÷ ƒÊhˆÒƒÞš“×#Üž §ÜÔåÓMî‚9rw º{<µZ¡ÞÓlבy$MǾv²1ÿ`¿fÃèʰ ev/6ÅÈ&6¿ò, –iñô+&5¶] SSlÂí&~ñfN h)KMyÁyÕk7-üÕ¸1Sfç3ëæï~öÄ«„ÝúóÏ´=Vß0©õúU§~þûì?6à÷kîºü¢%ƒ‡ÌJ¦¦û=1cáo¦Ïyk¥ëλW^1º¦f^ÅÀË—X²ôK*©@RãÂS¨O,ŒQ Ó¬×+êR‹}¾¨»ƒ¼h9tž/Ž:]IAÊGj»ƒ…áÅA:Ä zuaji×>c_šNùèá¶S®l9"¼¢hmÑž§=¿ÕÞÓ>ŠÈŠ'èª sJ/¡—ƒv±z± êƒPá —îuy¼.ÝÙAž´<ôF,×&q¹t û¦^Ðyü6}3XZ1z{æUÆBããƒ7Z¥%A+ž¨íÄ(h Üìñèm×ÇÜ/á:¤ãû‘÷ßæÚwãþ´_ÅrÀþ1Dß+¶¾¤ß·õNû +ÐÄÇé”Z:iéx¦åSÁô5&üNãÈjÙö.ˆuⱎb6Ó¤©{ŠŸ=Úp‚³ß¸B3›© /û6ÌÿIûóë._WñÌÝ䃮Fßvï,/½ëøk]¸ÕX{ç¾ÇÞ6ºÑOþû¹ìò)Ùüý½ÛÓ–«@ˆ{‡O/Øb9¯ËÄû¸4’üƒ¥/(fqå^ë z ¥Ú¨Çõêp<” •‡+£)x</OVÆóñ42Mž«Ü€—Ê7(wâÛå;”ðq É)ÜCN+õò/å÷±Dst/¾ZRå¦áË;Vb2@Q‰¬ªIL¼L™*¤%QT§:Å:–ÂFQ¤]*Dkz;@=A|‘\’è+[Ø8üRç&/—åjvµºŽ¹6׿Œnr-EêÍoAx4ZˆrˆC,©…Bº±4N“•4—ÔE‰#i6 Ô袓>ŒÏ|Æ:lò#~ ×¾üÐî– ÊÇm;ÀªÉtP½Í=™òJ{_ \¤¬d;â–&œaÀ@†pN§LÈ¯Ž¾ìœOÅl Ô³éqª¿žxáöŸIgÖÔa1AÓ~Xê[÷U'—LÊŽæ¦wýfኹøï÷q²xßµ]WÞ IÏ;ßàBËp¨ØÒAMHX`öèì<Ï/ÁoÜ{/½ÏÍp­ÛiÜ…î²Ò Íß#án@`þщ9 ;þÿ£4\ö߀¼:pÊ¿A†ät'á2?Fñ›¹OFÚºÆP?àù®™ çã¸ÉÀ]}ç‹5echKˆ|+}ë!‡¤Cr@:à!¯H¯xÈi‹‡l”6zÈ=Ò=r³t³‡œ’OyÉ|y¾—L–'{‰&k^âõÈR@ÓˆÓpq?—“`­Á‰œ˜N0­ö,”n‘î‘8 {ú{\N­ ´׺–a©¿Ü ØÀq÷ÇBA:”›:Ö«bt Ô`S¨‘†ÁТ†=ù” õ†2^§ïyA‹[ZZpKþƒ3Ø— CšûDQŠŸEcïob•WTõ«åðÏ ¿ï¿\Õ0¦ÇÐÀ—Ÿ¡€Sø/É(áuÆ©¬QŒSÇäc^‚eì%‡¥ÃrP:è!{¤=Ò&µyÈãÒãrŸtŸ‡üDú‰‡,’yÈ y†—Œ“Çå9¥kyŸõPÞhN`™ ˜…åg%ZÑ  jÀu4àW¹3p¦9)»œËá°¬Ñ^û¹ÁüÀ÷:µ¬±êˆÁh6E—NÐ-¬ÏeV7ŸZZ€ovÿØf6ƒ·æ,úòß”¤¯¨ê[Çý¹@ð߃Ží1ÌÕ¸3²³ÖÂdСϬêX $Û=ߦQ¬#9Š)Ø×¢0- ¯¯%Ý¢°nmàÃ%EÆíþ{´Tüo‰›ÎœéÎf=q}¹ˆ=¹–—y1 ‰èP5Õ©r¢Ïïõ{üœáqìvÁ"(GãØ¯šqÄþJø¬Äv¢"úRHI$ã´[´;ÛxvòÍMK—ŒºþÞý·g·âú{Ù{ÈÈçz>û–°ÛWtéÕÙûžÎfŸ™Úçù¾½‡|ùÔçÿª,†§ž™ûBXÚY„ÞÞ1Ì-¢ÖÙž¾Ä:e®¢T õqNC‹ÐÒ¢Vt[Ñzô°ð,÷Kç.®Ýù{çAt¤èE¦Ë]dq•b…Y• sNô^-Ì+ºÁ}§ûanƒëáèfü$Ùl¾ëò / ^#ÌS3»­¢ž¡Ìžõ†Ž0ñk\¤Bû”~ JQÑ —@sÊXfÆJÞ¢É^¢yâ @d}ŽÀ± í<ÞÑwY±÷gÖÕºËjúðyìG|^7E |ûÞó³¿ý¬3ûþ#[ð ½ÁU_©ÙûÓg>²àóUOüÞßžú ¾æOŸá [¿ÙsÓ}g¿½÷Åì—kÙûçvç’Øc…#Þˆ4—ã+evsee(î$*f3Ȭ¶„Å@±‹‹‹ Æ©òdYŒãÀ^—7ŽÐ·âP©c±&•: >dRGºûXÈâÖr\^”Š©XeƒÕP*˜)#FæƒtÛ–Ñ9¨H“[Ýï_(¼‡p0ŸˆDÃÑP”µ”‘ô¥JRr’O%’AgQùuOvözb”J…dG ™^ÅJ<ŽÊ8X |Jн„¡ð©d¯3ÄuIóÞð>Ð×+I€½Ý<íÔ7¹KÉ‚{²7ý9»±};óÑFŒïKm‰_½sáí{¯÷_ɽ7»€4>‡»/^² _ùç÷ð’öY?뵨uäØÛF¯Ù¸/û}ëÔ~Ø„öx ÚƒöæyÑ–šÒ'ñ“ä×ež½¤ÊïñÕÖòå¡ü%òrý)á¨.iˆ·|±]T¼)RÈF’îl$1òÌ?l±q $ó㘌ŸÐ·Áµú9¿“5D!ù©2롬‡Z°j·§Uùü3Ûˆ¨ÝFDÍøh2ò¬lÚ˜ù‰ö›aY_W¸ZcæßËzîî5ùæ½Ó³§ÞùCö䢽Þ¿é½ÂîÓ[?Ξ~ânìü’}zÛ+;®Þ˰ º1;–4ƒÌè|K-×12Ü’l¸f;Úè’am™ÒFוˆ38Oî9óçë˜Íï:èÜF7ôVpŠ˜ÔÅÕ@kB{ºÿ#'¿´rEùù ˆìØ—ð÷Øõ͇]§6­}àÅ—³%ÙØ9ןai¤Â Šj`äVè¨9ðà5íh#w¥‹;̿ʞIè²ßèLj¯-]Ué»KJ \yοGÊ®ݧ'LúæTy }±’AºV‚¸–ž_~ýÊ—&<‹㿾´ëµ“ÿtªëÃo²ßeeð-»€U«÷Ó·uô‡¨G@¢¤±ç°È«¤¡š¾’>Ïcrþ]ök%ÔÛsÂè”0øïÚ¿?×´ÿé§÷ï‡sO §ŠQ)ºÍª^¾3Bn ß!W‡gDÈþ3.ö÷.{±ÿ“×.y8¸+ô¯7ßÇhò­“ú†IÇ~<§Ì=wä€é_^=`ÎÆõüû?üê©æÇ—Žº¤y~öÁýtTä!p×§„=HE[¬g9ÍÚyü-ä²AæŸã±‚DpŠ€5‚ßPísR¢|ÿùáÂ|ÒükBQ”ùbWÞ5³ßqƒ˜AÌ¿ '¬ –S·§Ó¸è¹,!ÇnÜ€oG6ÈnIŸó® û­Ó4“YoO˜`®ê(J!§Ú/|ûÿkïÛ¢:ÎÅgæœ}ï²`Y^»D"ÊC”EEcbX×eU`qw‘`M‚IÔhµíMšæ¥IÛ[óÐ ¨!š^m“ÆÆ\oz›Ü¤IšæQ›Þ¤×ÄöçM›^…û}sÎ.øHo{¿?~¸03ß™ùæõÍ7ß<ÎÌwš¾óQQDüÆìÍ®ƒ N·`ª‚ÖÔ@ÝœôTT£ƒÕbrÄÇ«åíg«•Ÿytø†ÖäLP9¹Ö\Dp:1Ô™!N¾zwâ.€‘é“’$—ÅʘäB1þÆ´Ï"Ô­“Ï5켄 µ”C8˜¡Ñf“÷»=:³•EóùÀc°Å³¥Îôô‡ iytWtšp*^+7¼¥‹ùan<3ÏŒ™ª™êãªêãšSÚWÒ4 ÍÀ¦ë­q›l›âwØ^°ý6å·©çSŒ' ÏųTKš%Ýâ´¨ÿiì<,??€•Üy¢ƒÖJqê-ZµútZJBZZŠ6-ÖWÚ”4Áä´Œ°ï7PǬáä0SfÔ‡“^jãV=ζ‰Xh¹Çh=RÍZXÝÎDvŒM".º[ÙNà[ ¸ “'a¸—`•OÆË›Ôqʶ%Ìãù6Zø;ÔÜœ˜á.›¡Ì¬býoÁZ[#j.–±¤ìï=ôùþï~ãŽGèóñþ×׿¸á‡?yb¥óÀš*ßÉÛ^úmÛúo?²3þµ·?=°ü©¾·wªrSe>ŒNFºî¨VW)ˆ3aú»ay3áwž8Äd°´Pyó°ƒï,üÒ31,›[ÌÓNÖʼn´CÝaøµZÄWÀj­F§VëÔ‚NoÄy®¤7$èõµ Ö \Q úÂL–Œª5¡†–ìÑéõ:æÿÚ¸æð茺%ýÞJ G<&ƒÁ(aItU|ÿ{ÄÓår)×É{£Qé‡)Sdæ8jŠSÞ !¿M»° ïósçcùº¨å¿-MmÛ óùuAßLæq ÙVÝ`RcÝ`nk:£xlì¬Í/ð¶j–Ïp}»ºÌä -ï%ßÀ_†uüõ«•ͼôêЌŵsVÓ´.=Ǻ„úÑù›7‡÷Ðg/_úvô¼¶’žÎVº— 5´ðÕuL=MÑD½4Šâ•IE*:™ä Ùú"c±qq‡v‡nñ¤ñ¼Ñ C Zå°÷s:j4-?À­¼ÑŸ¤×é$­*A«UJ%¦‚¦Ré «O$=ÑêüZêgZ~Ý/·b±–h÷há™R‰yr+ZÝ­¼¤§«¤Z¬bŪ5ª=ª“ªó*•j„Ý=lÀÁûÛPî¡qXäÝŠ”äsyÇBÙÒÇ®!oÜ'à ib†™Ê†t6ŠŽ6u(÷3-ÐfŒŸ™næç6WÉ_¢„g5—~ö zk¡+³€Þûò¥Ÿ¨Žý×[=·Ü"æ¡Î J–},ÚA†æÓf…æ†d_¸9ÒŸ>çãM-š—¥7™f§^Ÿ—èLyiª<:¶ü@8zñÆŒ>ÂäþKëñ<‚ýÌ%d›çF5èSiª^ÔëŒø]DÚ@™¿ç¤!¢ M²™4µ ¿ðÄ?ðd2€ºZªW« „X¤špB­"†¨Gèý“êÄc/%ÉÉ=÷Ê‹“ú ¸+VuiUUEÞɈ¨ø*FÑr l–Smµ7¿4øª%Y¬Ìí)Ü{C<ý¦Ð¾µðöM³‚·T6ÜX¾1R²E<°«<ïÈ<ßý¥SvMŽ›~÷Ò†»ï»qéîÂd” °ZØ õ›L¾á©_`¦¹6³µ”¡¥qâJ³m`Ùsì$oòd£+[Š7e­&£Ñ%LµY³UÉ•©Ùn¡RuprN¥ûàäÉ-d70e ¿§CÞÆÂ½+ܾâ»YªdUs|†|NÖ,oFÇÏf6˜—͘­’ ‹œ`gAhè•SȘÛSQïÉ­›zC¹{Y¹«cžÁvóªnŸ¨­iq•¯âiJf’·žµ²†tÑô¦¶Yý£uwŒþ¥v}¤ ðGo½˜=oÆ£–¤öÇhÇÎÅ w¸êÇ~'&‚\ÄÛ Šdt™©‹¶P¦æ:=&j2ÁD/U•éL0é”d[¸ÒGäg‹3ÉÂÏûs¹˜Ä‡é$EË™7ÎX~­ê*ÔÑŠb°`}2§ñ$ÎKž'­°5Ië…VM«v­UŠh{Ó¶j·¥½©}ÃnÕðK«9Ñ»ªY\("”!)zú?8œ#eI`ÅR.61(g*}½'ô uÑ2Ãj¯Üc#G²Ã.a%hž µ8ÏõPXöLÑ£(tÒ ½:©%)˜t{’˜Ä+&ññI#lÒpþ©{ä=¸UçbrQ‘Š\B•÷Eò»Až¨†k3Ç–DhS”ó[¹ª~;M˜ðBIø¯aÇ”…ë—Õ,]Ëj^h?|©ïçw}8zöÑÿ~à½Ke »…¾ÿÄ76=%6Æ­+®/žýÙ¯|kFÿô‹çn£ut3}òÇûrñ½UO5<öà³ÏB«r­ˆ|mG¶zŠÂ†; ß6|ÏpÞ]¢¢¸ùúez¿þˆþ#½Æ ÓàšSS¥V«âDÃÓzܳÍRU‰|º&+jM•¨/7TªŠÄj‘ái°ÇÍÑ%©²OËU[.]ºl+›È³$´!ºP©T<£(UŒ®Z£ª¡ù¼ ÑíªéñĽd¢"ü3­¨i“õbFEц ÚÀ§çK1kúߓàÜ&Tƒ¤·S‘&Ç)ƒ×3ZUwóp%fQÎù¢ oùmß~“RMµ&k†ÍVæŽÜ;z®n†ùyáŽÿ³CüË{ïµþ×È»è§ôÔ#øí¡Fè?ÉÐ’H)fDîA‡$ÕYÈ—ÇÃÚ¨°Ð–áT«r6“SgŒ*,8Ê÷ˆóÍò7'˜|²–ßwÁƒ…üì­CˆnPQ,!Öù„I‰üjG"O1‘w¾ÄqýGQëLlƒîn( žsʇJ”‚¨å‚œåW/ÍÑQJÉý¼¬“‰ž˜-ÆLä‹ÉD^Óñú˶ Z¤ j¸êÀévšg_h_èþØøI±JWLo%·ÒÍbD»Á2öš6%ÝCvÒ{ÅmÚ-†»ŒÛL÷%ý³õåx[&ÞßM“RБ¤"t $7v~gžd$N1B1öÒ ”ŸÐQÝk÷XòÃf=ßL‰ÙbfæúÍ£%Žð ^`íC“‰ÑE¼”èId‰{¦žŠÍ@r]_ŸSê¶ŠWNQN½FŒZJɆæfÊÈK¹è\‡€ÏÄ;DÂÄŽO×õt~|âä§ë»¶ß7úÅÛo~ñ͵ÛÖwlÝÑÖ~wåÂ=[ö¸ãö ©y®Û÷ÎûûÚ¾“7奻_ƒ üÉÝ?¦MwÝÙâÛ~×űú= ÿ8pÇSûQ¦/Uxï’TÚÛàr ª6‡¼w¨ÆWþ²Ædnoäb‹:¬¼I­|—Ãê°NÉ7ä:q÷«!Nˆ‹K ‹)åe“Ū^Jñ-}&. ‘*/å¯*á"°D¹!ŸìgÁ1ཟÆv&büÜg2Ÿ„[9E®—çuEVE3ò”V¦Üd÷d}Ý~sV›ÐiïJiÏÚ”r«óÞ”{œÙŸLy!åSûÇÒRü,ûcöv¡2¯UÍrðÌBÞ°ÈÔR®³!®(¤a–ôõÅò€r á:F+@‚–{¬—IØ3G™Ã8ÈXc¼dõX™uOþ©‰óid¥sÏD ®¹»Y™Bã6YŽZ¾‹F€™`*Å'ÒÒqEÞ=웽·.žAgï:z‘j^Þ}î›þðÄ3ï°W¹eèÉÍ·>N-›ºoºý—=FDzõTûË÷©å¡Ñߌþqôw£ÃO¥}é‘{aÀž ÑÇÅJQÍw#xrTj*jt$[ ÙÓd‹¢:Äî^ö,O¨HŠŽ&kqp‘å¬üyÕþR®Š ~~R *–1_‹+/– ?C#¬ÞéáZGñŽúReÞ¡OqŠª§É”¤‹GÔñ¯pIi%üæ8±Ëo”/S÷vFù@NT½Ûe)ÉÊuòÄŸÉ!!Iy/OÙ×ãï£&j“Ó<¬–’-ix€I†V±ƒ±1ˬÕÛÙ݆»Í¯Ä©tƒƒÕÆß”xcòÜÔ¦ø•‰+“—¤®×¬7øâ;×'¯Iíg}ê†Mæíê5X^q¼ÃÞT¿ixל+nXÇù µôZtL·Çe “CÉk4gŒ¡dvšøM7RÝiV²på…v["gžw¼…oä[ø”déú×÷mŠÌY÷úãoôóù'7o~òÉÛ6ߏнCæ¬gZ†GÇÞ}ñÀƒÏÑGG¿óùyÚA×}؆ãs̘C|ƼO2|6 så¼ÙÅ¥ñ0̘µHå ’r“H¥&);×mŠÏ¤8ÓA[JeZvNB¥-[S™{Š•êƒÐÕ(£)ßǧUã3ç³WÍœ­Ñ™sbc¸‰¬ÎʚΥ*î«¡Îq»¹W’“Ùìvºb⬳¬Y^­ÒLœ8³Öï±Å;F‡¦/õϲ­»ó/sƒ[³Ë޼õ¢{îôG-öŽÇFܱX>%¯Z‚'žé¨Ç)d–Uhu•9úéêúú›…mÂ[‚f£þmám½€ÊŠ<üup®ê^q§ê)ñS­J/Òéâ›"Ã;#]ôšê¶6VØ&Þ$AU¶ §s÷ä°ÍŽþ¿öÌJ†<³³giuÉɳPß^§Õ«Q”d-C:­V’5éõDÅDÊ4-Ñêf V¶•s±ŠîS ªNª>P‰ªµèg(ÖPI3 Ôš¶Íc4Hïí?ŽÑÞÍ}Ùt ?p_4€v¬ª’¿]Z·…â¢j†p«ÑZª´U´nÐÑX7˜Ê7~ı_–7GÇ‹cç‡V¤×yOjÔ±¯µÄYJué-&K©¢§y\S"®‰­|oJr…ˆ&3µB…åíÚåË£[…63¡Bô$T ™d;Ì$|¹ZÅU…Éj„2(ük¬ü„ý’j.}—Ý1F.}q^uìR{ëÒÁ‹²?¡ë®†Y¿[a ½¸™õgE/íŸ=™î¼RƒZ¯Q‘•Jmø &¸D£­Ò›eíɨŒÖd.Õýš b£øŽƒ&•Ã%üÍž™âÊcùééKØe&jRÏÏ—UNãöž’3ïMåÊ“ΟýD¶±‡È9 ŽB)Ë=.Ò­c_j…n•F­ë†uÿ—*Ú]Í`H6Ê#À…Uõª@úŸ…f-º€0œZœrß*ÙattÝýÝ=ºáýÖ~t÷vC>=ä#q¦ø"Q“ãna@Å•ZÐ2Õq¶<¶bˆyÔÇèbÂ`E’Hž¦OK"KÑŠUüµM¯FyU…3z’\”R~Žeõ¡ìL§‰”&ö¯^Û²Ÿ>4<úÒè‡ñŒÔ‡£qçèïaÔKñi5ž‘"ÉâÜš ›|>Ê%>9¸ãüähߨiõ^å¤Q*É!Өƣߓ¼'…uhSRSGØC³#9ÁáHv¤&š“S¦æÛ^`{‰Žú‰‘íõ„”ädXZ;Ù¹èïÿB¶w(Ûö{ˆäSB¦²‡†3Ÿ™®ÆçDx6C’:^ãÒè[· ò{7œIœ‹Ý}:wi\qþv¾Õ:µØ1·ß³„NËsæ»È4iª‹¸*š‰™]$ILtQ« x-@“Ós]´$¬)9….RœV5º¨]–Å`s‘ X±/ Än#áïȩ̀*Ñy Ls<›öa}=°óÈsÛ¶¢s›WÌ™FÈüÖÅéoûl‡€Jô¬m^!®xôW?=qì•—éO#ߎ<´+ü—°Z÷åŸè®ÇÞÅ€Sô¥ÈÃ÷F0zÛ 4ðnÞÛtäVYt 1¢Â—›m•Z¯««Ô•”ŧKW§Jã¡neD­7¼*è*Uåb)<ü žyU¯7lÉÀÕoôL×9ËYHâ¬å3XNÖ[.}\׸|X% w«ãñÓvºß•½_ú½×h§ £µ£Ç/þiôP»Ÿ@–ýZ•<å"SÈ :Ëó³M‰!{(iSᦢmö,zhHÿží(ºs»3í® vØN×$y3˜=Ñc_G„§œïØY8-œÎzSB©¬—|ÃÎv&ݙʞLúMWÕ Ååµò?¢¸üËG9¸ +_Œ©hl³F_ºá(UG?Œs¦ù›>¼ký³}s^{ô£¿§š‚äãÅKüý]£ÎÞÚ– ½YY´~ôè·ÚvÝñµ|¾7÷îwC»æÜõâÈ–ý‡ÑCË#¹'7oûúîùÂÖڎ꺖Õó2ë&_šN¿{óý ›Oú¯”yl·ÈDFŠ¡Ìƒ‘džÊCQæ©d™§~Z„*5IÑJ*ªRdÞÇ«@âUÕŸC¡w ™Gétüg^œ.Ћc«l˨w˜VÓªáÑ6”ð÷Œ˜ƒß@™ïÉ…|Ê,*u>ÑØ@BjÔEU6%jù¸NÇ–¢ìyFûh‡r‚£VþmôðY^ªöX¾…k x»ÉZ¥Ô‹xHç/”fJ¬ì!àÚv//µÜ27•C;Ìå%‰p*G邲H€åUxP椧}+ç,äµnž×D~ñ)iyyÙ0fOËÝùwñeêK¼Ô^žŸOi 9KVÚÃËë(Çëµ@áò¥ýœ6aÎyrí¢-äUÊßËs“xKmy¤ >÷ñ´;&pâyZrÞQ™Ú…">…SÃWáE M?§J\9mŸâÓË)5ÎÓAÞcCœ¢<>–Û³K‰ÍÁÇãoTr (5•û¦0N…6Þ‡;ßqºê•š8~/oÕ0çÒN^ºkóDT¦†cuÁ°.žÞx(Ö+¥õ*ô÷qi')½4J³Vžw;÷•ãc (mØÁû]Â#A°±GoT¨-§0.å½¼­dî8 }Jý¼Õ:9Nï{27vó˜rM&rw ÆYØóoQZ¦‹—ys£Ò·d¹Ó+GçÞÈ#QøŠúù”<Öòz9¥[/ãM?ÙþQÊ"oûb5lã¼-q¸…Ó6Ìù.“'r«cÙåþQ¤†Ü›Â —KO9´‹·ˆ—lâñåRcº>:Îirî­œZ=¼—ôÇjÍ»›ËL ÷rJ„”<°ÉTŒðøÑGSïá<ÔÅåf´l…|Ì‹@X%Œ¥E.þr¬‰¶K§.Àèà}© .€ºy ùùS˜´p[¼0†ùÿ6‡>Î12®B.‹@Ò7Áx?Ì\à<„ÀG€ù`ßÄýkÁ§läÍ0ÔÂ_=÷m"&<Á¦‰sSø¼&Åüå~"S´G¡ù8þm£ØxËD%r´×òÐ~Àïåé‹É6™ŸÇÇ£‰ÒR–ãrTî¿Ef†•>ÝÎSñÇd"öÖf%7ìÝYº66ÉyFþ e¢²³/&üJóÇx:ÄåGDéÏm ?^‹^Ñ^ˆóOHe¼__«2"®å’Q.õZ¥eº•”¯ÕB9¼V—SJ–ÈWsÅÕ9GeJ1/Ÿƒz!×N…ÚaE†|UÞHý¥à3.gû¯j ¿2˘8ç’¥·——¨‡S6 Ìtþ–6—^ìž Û¢ù¢$iå”LEBæÈSbØ¡ |;>vÿuJaéºxúQ¾ ^–^oÿõ¼5'ÎC£òq3¸ò µ—SÓïˆÕG.×DîîR$ªL¹Wõ(ü1.y/ç¡¿V£qþXÈë~uËEç^8æø•š\y¾çã­Ú}E„® ÷xÊa>[ÅI«2mäs£>2qvõ?·~4½2ÿ (kkÍâ®nG™Zã3VOóê~m1ï´nû»J;Nå«s¸|¼¿¼D~e±'š®Ojˆ¼È…9|))ƒµ–öTx*€b)˜b‚»KI‚Y ¡S!¤TËÈ40k™k4˜úß7ÖýïGÆhXÑÔ‹‡Mý=þ6¯Ï/=)5uø¥ú`w0^ÒÜ`¨'òFÁn©§ÓW(ÍóF¼ÿR&&5;{Ñ',-ì†xS+*Š À*)”j:;¥%öŽHXZâûCý­5¡€·s‰¿½·ÓŠ&[É=%Å·r™?Æ J +Ê¥Üú€/ Û"ykb ÷¨oâÎ~©)ämõwyCë¥`Û_-µò·ÂÈß*º¥ .m”{#’[jª—ÚÚ %ow«äï ûû:­0–Ô7ØòötôOôòKóBÞ¾@w;Æ i ¤%Áµô¢€¯#Øé OÁÔC_À+5z{»[¡@¦ò’¹Á Ëê—Â^  )Ð&µúÃöî)’L`yØ ù¥ŽÞ.o7_òuxC^T¾0ÔÃÛ-AX?Ö?$ï ú}þp8Ùa…¼~¯¯C (Iaå{»ýR_ ÒÁÉÐ ¶bl„¡Ø(ˆˆŽúEúüÝ‘€°}ô†ú %NéàFÈ m ù½‘.¾^hï0f†­çñ"´õvvÈË Ùw!“@wko8«Žôwú'R95Œ¹øC]nŽ ®‡d½P~_/d$7`kÀÛÄð¾ ¹Ôáï슥öÀF?Gà,ï•:R—h×𺷧Çdìöù!™Ü$–ä¿*Óåïì— naàNL£+ÐÉÉQ:QXÉÏ1Öú¥Þ0°§¦C/¶×‡ô—Ú‚PeH*‰ Ÿ@ÕC~h÷°4SHÆÙ»¼íÞMnHÚñM‘‰Ñ[ážNo?f±»ý}áo PZ¡ˆ‘@FôžP°+ÈS+ìˆDz*‹Šúúú »†-ô»Š:"]E]‘no—¿¨+ÜâÅŠ¢çß¡Ïß ¾~eQCÓÂù çÖ4-lX$5Ì—nZ8·vQc­T³`Imm}í¢&“Þ¤oê²F©†$Æ6‚B "œ¢×èb¼2ÈÈXçµýR°cúۀμÉl ÌÁyÚº_7 {ÛC~?rb¡Ô Ñ:¼ÀÁµØ fä²Â wö!;ù¡áüHéßvn:Ž— ›0Øîç(¼‰cñ i€{×öF i(fzÔ„ å„£…FŽ‘"¹MÚèíìõ®ó†C&Æ.”–vsžíÖê¤H.`o¯îñû t®®¹TìæÜ†q½­­ä àÊ—ÈSÐ;ÄiË{÷…ê t°B Çë †Ö‡e&åüÈ=ƒ} P{×v˜¤%“» ÊMÕÓ/ÉÌ«PèòŒ8=¶W¥×†^˜grÏçu+5)åæÈáŽ`og+ô¡Ÿ,®®ª>âAKúA´Ž‹¸X¡X\°ú"ãmŒó*¥n»v²¼È±J¿W‚|¼‘JDXÚXƒ@nyiYžT6µ¼ ¸´¸X§[ZžÅS§––‚]6­L*›1½bz…Iÿ½î¯vF|*RŠÇû!,Uƒ|‘‡“r\¢õS üë`ð Ÿ6DÃù4‰8ik ?N€y^8&¹¾¥}Kÿú–þõ-ýë[ú×·ô¯oé_ßÒ¿¾¥}Kÿú–þõ-ýë[úÿné_¶ò‡½ÿZa^ÇÙžßøŠ4;9‡OxâT±N\ λâ²PU*‹xŸAÙ#×¾ƒÒÇÂûÎ$C|ÌÃ2}u ׆•s½d,ï^ý;Ôd®É’Èç`ÆÀÄv˜0-`vƒÙ FMÌŠOÌí`N€9ÏCcçävn8ÎZ²·æFöyÌ 0ûþ>d’ÛÙ„ ØÕ`ö‚9æ50ŸƒQ³àï}øû5û51³÷H˜j0-`ö‚9æs0öØö+<Ìm„«Á0ö+°-ì]¨Ö»`›Ù;½ÃÞ¢½>TVQò<ò‹À•­I© `³—Œ°_ }™ça¿–ò]ûjŠÙd ªQyƒH`ƒY¦Œ 7z“ €Ùf˜A0jˆó&ÄyâœóÏ`Þ$Å`<`ƒÑ²ŸA6#ìµ!÷Wý ;E’€¨gØÏ¸ûÏìeî¾Ê~ÊÝWÀu‚{š½<ät‘„ˆc×n„«Ø‡'Ù\c5VvÈã»L5˜0-`vƒQ³,s¨ÕeƒDŽ“ÓZ˜Cäîþ#yBK<ë\÷\à1 -wå,€ÀÚ+íu3ûïÂ#Zî]ß-÷]÷„–{Ó€Ðrwn-wë:€Ðr¯h-wC@`°Çž›”ã*kXO¥3ë*õ•ú€J}Dd}øG¾±lMžìÂûwùy“]ÇèÀ t` x‚øéÀmt` ¨¢«é@>H£N:à¡Çi9b€z_öXáqÐÓtàÓ7Ȧ“è€DË<#,chá4îÔrg¸û¸³f—˜¡Œ@Ñ `ë èö'À~ Ìò’”)#';ÑÍž\-?V–kn`/BÄ¡^$^6zÁ£êf°«Á´€9 æs0c ¯½Ï2¡à»¹m»L5˜0·ƒùŒšçs0Œ•">Ë V¤ºŸØ‹ð— ,ÓnI³ä[nv§Q³“68Çœ¬ŒØñª‚ͪµŽPÓÑ?™þü'ÑÕèØ.¶›¤CCìQÜÝC_¦»FèƒCî㮚DúâëhqÓlpËI˜?O'iZtKI{Ü’¡´eÍ<äžâ:Fã0ÖQ×—ig]Ÿ¤0ÿ=í¸ë-iD¤C®Ÿ§ºÞHÛáz¥hD >/¸G(8Ç$Žú|Z¹ëÀiŽºr݆ÎQ×­i \ëÓx€_X†'ٵĽÂu¤7/m­Ë†4ºªÓV»ªd¬é稫Š/ƒ“¡°yi<Ó,'OpiÙíðLÑ< Y®iÐÌДh¦h24.Mº&U“ µi-Ú8­Q«×jµj­¨eZ¢MÀ‹àùxÓ"AmAG-¢-rØÂÐfòõ$FµŒÜHã…:V×8‡Ö žô‘ºµÒàY#Tÿµƒª¬9tÐVGêšæ –ç×hÆ– –å× j}ù!Jw5ƒï »{„’¦å#t ½¶¦ÚæâC¨uë}©èæn½¯¹™8ì«Õ¶ÙÖŠùó®a­Qì ×£—ÁéƒÔ5.|*½y°±ôæºÁo7J+—?OÿHÏ×Î{žþæåÏ ³ék— ¿0{^ssÝ]ÆñˆDÿxÀ1àxZ'‘HZ§Œ÷Œ— ño:€§Ó‘lŽ—­Óq<‘"Þ¡ð¤Úy‡&Mâ8I0å8á$i"ÎélÀÉÎæ8öršãœ¶ ÎàlŽ’–(Î4ŽBSHGI£)eÙ8J‘‚²#†²ƒç$Ðqœ4ÇôAÇôàäÿ­?ÿœü|:<³Ù·²ÖŸU»&«ÖfÍà=;ƒk%鯤AÁ½f­¯]¯°9Ë?oЗ5O:4så5‚Wbð̬y‡ÈÊÚ¦å‡Vzüó†fzfÖfyç5/X\ZvY^;by•.¾Fb‹1±RÌkAÙ5‚Ë0xæU†y•a^ < x^„óøâ凴dNóÜ•²;Ì zà×5©Ísì–žÙœygf8nK=’ýÄß> endobj 54 0 obj << /Length 607 /Filter /FlateDecode >> stream xœ]ÔÏnÚ@ð;’ßaé!Â;3‹‰„‰Cÿ¨¤`ì…Z*Æ2æÀÛ×|ß&ªzIô1»ëù­®w›]Û nú£¿Tû8¸cÓÖ}¼^n}Ý!žš6›xquS ÿªsÙe“鸿ñ¼k·Xdç¦?Çס¿»§U}9Ä/øñ{_ǾiOîé×zÏŸö·®ûϱ\žM–KWÇãã̯e÷­ç®Ã±ú]öÕ~\çöX¿Èaö† ’#+„ÀÀ=3„B VœCxaeްbð¯ аæ† +/olg°å2<Çç 3z tí“{<=3´ãé±=œ§G „äáÑɃv<=‚QyzŒ•äyEHžFð9ôÌ07OOÀ2¡ÇPzf¬$ºz LTè ÀIò°BOÀ@„žƒz—Ñc•$pBaÖBO`oôO£'àÍ =Š=šÞºVzߎ><’{ìQz ³Vcíh`ÀÜ”ƒTé1@aTJO`ô¤Jàe)=ÊÞèQöF§É¶Ñp€Ñеñý(Ú1zßà9Æ÷Sà 1z”У¬Ð£ð= ‚Ñ£ì€Åt,yð¶ž‚zŒGÓ#ðz•@b𞀄t`¢!y0@€’ßN 'ðèô½mx5}\A[ ëçXÝú~¼þpÿâÚ{\xM?ïèîÒa_úóÿ@uendstream endobj 55 0 obj << /Type /Font /Subtype /TrueType /BaseFont /DAAAAA+ArialMT /FirstChar 0 /LastChar 88 /Widths [ 750 777 556 277 833 556 333 556 277 556 556 500 500 222 277 556 500 556 222 556 500 833 190 277 500 277 277 500 722 333 556 943 666 556 222 500 610 722 666 556 666 556 722 666 722 666 666 556 500 277 556 610 333 333 722 722 777 722 333 333 277 556 556 556 666 666 556 556 389 333 556 277 556 556 556 583 556 333 666 354 583 583 556 889 277 666 583 277 277 ] /FontDescriptor 53 0 R /ToUnicode 54 0 R >> endobj 56 0 obj << /Length 57 0 R /Filter /FlateDecode /Length1 34200 >> stream xœì½{|TÕµ8¾÷>¯9óžÉ¼“0g2Éä1y‘L4'<"4’ $ y‡‡­Ÿ øÀúVZR[Ñ¢-C‚˜ T´ÖG{{¥õ…¶^¹-µr¥½_dò[{ÏɵýöÞïïßç÷q†}öÚû¬µk¯µöZûœ =]½QdD}ˆCjӆƎ/Þ‰ÿ !ôoa{ÓÆåowþ(àI3Öv¬ÛpÓ¡¿îAHNAHxsÝú-kðÌ„ù„J"-ÑÆæG¯ØmEhn´1­*¾¿N‚r”Ó[6ôl¶z>„ò PŽ­ooj<º*¡y(¯Úи¹ãuëŸE(ÒÖ¸!úÝ”O; C¨à’Žöîž7QÎ(B½:z¿£+ÚaY’µÊПµê0|éÇ HË„ãQÒÉzƒÑd¶Xmö$‡Óåöx}É)©SüJ -˜žÊÌÊÎ £ÿ_~„Ã(…¥GP B°n£'ÇR¼uô$½Gsò!0+5‘´Ïz½‰³°‚ñÈ>Ã^<-@<ú¤e?Aw#ªA÷`;JG.´-À<à„Ñ-øÁÑ£  Ð÷ÐC£OâëF÷ÁýÛÑ è3Áð•¢Å€¿EÑÜ{¨nô¤CÛÍD˰ 5¢7àûwÃè.ôsüÝÑÏ WºÚ›…*PÅè³£çPº…ß%—Ÿ@w §°8Ú4ÚŠ¦ 4´ƒ„Gß}…PúzÆÆGùù(€®D7¢û°—{ »ÑQI=7GxzZ€V¢6´ í@ûЯ°W Ç…3£ß=…D”„²`L­è\‚‘‡yãè…£o£KÑ0z æK¿GùKùG„Kãå£ß}9Ñ“XŸÆÏ EÂm#׎þpôg ‘!48²úYƒ®GÏ¢—Ñ_ÑßÈÖÑ­h>Z=ÿ§b‡€ão/¹†\ýŠòa¶õ0Ú^´Å`E£§ÐàÍïÑ ôvàd¼¯Áwà¿#i&¯pr¹×xÌÿøDÀ£ô0:úüô  ýB\¯Àíø^ü}|‚ÄÈGäS^Ç_ÏÉ¡ø‰ø—£‹GÿŽ<ȇ.FW¡­ÀÛ¡Atý;zý ý7:‹­x:nÁ?Ä1|Dd’F–ry˜ü”[ÌÝÁ=Ë—ð³ù+ùßðo 7 ;¥F)~noüÎøOã¿}rô· ;fh?„*£×‚T<ŒžA¯Bëo¡wЩü@û3ñ*|9ôÒ·ã»ðOñ/ñoñ‡0Kľid&™ ½¶“.àÓuäNrôþ |‘·É;ä/äïœÀ¥qÓ¸Nî‡\ŒâŽqæ­|ˆÏç§òKøUü(¬L‘p‘°\xTxLxN8#ΛÅñ}é:éÝ¿äŒüGÅ[â±ø È®$é*àÄÐC ÷a ~ýwñ ô ¬‚p&Œ» Wâ*¼_‚/ÃQ|Þ†¿‡ïÃâ‡ðÏ`0"ÁØÃ¤‚,'$Jn ÛÈ­ä |“—Éä89 #wsA.ÌMåp«¸K¹6˜Cw wpön÷ ÷*wŠ{Ÿ; «ææ§ð½üUüýü#üAþ·ÂÅÂø>$<#~+œΉDô‰)bx…ø¨øGI”¦IÕÒÍÒkÒë:p Α+“­ñ‚N!ûˆƒßŠOCE*æ‘f†uXZñߨœ‹Ãº˜é}›“xù$J)ª<ØhÒƒŸB%ø—h«H8°Äü 4€ÿ@Nð¿  ×qöòpm¯H=Öhyš<…g£ƒdYIvs¿‡Eï¼oFwá+q7z ŸÆ3ðÕ¸oE¯·߀f>Dx,ãø ‚ kùftù?·‚¸ ý}ÿoâ¿ öiÝ+ú8zÿ}…ÑÀºq`ÁÊÜò~#¢V¯ôl+è£,Èzñtî(R©x!:ƒ>G‡A¢fƒ%=oåÀÿi´t44 ´ = zׂ.y¤ä”ié2Ðt=Ø’"Ðêj´ 5£«ÁêÝ1Ý=zýè–Ñvôk ýçâ/p?hÄPÌB/Á÷vôÞ zxÑÿnˆ7££èCìÁ¸ôá´°QØ%ì ?~#Nn߀‰þ#H³fЄ~‹>DŸb¬å¢Œw:Œ½­'uÜ4ûPèlØñÙÚLº¡•ë€{»AŸ€nœ;qú9:Ž vÃŒš ´S|^ Ø{a¯ÇƒPÓ V;ýæmÆÓIô§BK÷€Õ: cúú3p{”+ìÂ\¼Úú]‚š¡‡i¨@•£‡ÀR-Fs¹~§c+šÓð®4ÔŒRQ™ð'LPn|ñètÒÊ=fêûa÷JFàN…æ1‚œx *‰/ƒ1¼ŠZQ£–_xÁ¬™3ʦ—–DŠ‹¦äçå†s²³2CéÁ´€âŸ’š’ìózÜ.§#Én³ZÌ&£A/ë$Qà9‚Qî¼`eƒ 5ÄøPpþüuxôòÍSvÔÔ±òä`]ãÜ”´cÙ–A¯ªxÏ¿“—{ÀjK0ö€Ù¢FÓd :~A BUËÆ9‹éˆ‚ @ bJ“#© œ¦ÓKt:ÚÑ4ÐàS‡*Ö +Ò“ç4ì°Î õ”>&dXƒÊŽ¿#€àéίiÔjÄ ëß©œŒ‹Üƒcáp,'‡Šˆ4ÖÆx!+—äån"Ó‚V2`ªÞ6ÖÍ(ötw©h b}Kke­I@jA¸.Fè£cwœ+è¾±;ãä Aäƒ,pÆt¡ñ«+i^ËŒvý“ÛÑÄýªåÁª¥«j•y;4ÞVÕœWJÜŸ>~OƒbIsj¹d¢A$™cwA(/G¦…ZcŒÏ€"êæBÉ*°R³6ÌO\ëôÀ?¤’t“ˆ†FÏP*–Mi£ŒÍŸ_žy^ù¼Ñwp0^>DªjVíØ¡?ï^% ;*ƒJ历C£}k‚Š5¸c˜@tìVò°ŠP»Ë³ VnˆÕéÆê0j"‰:+«ƒO¸)tñøÂ®/¡Ù Ž‹Ò)W“ÀÇ9¤—ø8F^(Ä ÷4!œ]ò„­ggÌZlýdÖ¢‘Y¨`ë9¸L- ض ¸`p Î)ÜÑsª€¾D ”F¤÷@_9gÐÔ ™ô‘õ¼}?‡9‰‚\t:Ò :E|EÂ0”jšjª65˜¸SŸ‰(¦BS¿é¨‰7ƒ.B!l´AãÔ^OFTO‡´ÈZßÙu¶^Ý,ë,v±—Ôƒø #nôè@j7™e’ÊÂápL¬¦Rl ŒïÁYd.ΊyZ8<ò ©ø¢’\;²\ðe£ïóð"ø÷ªóßǧtŸ&}êä_$ï Äî¼2©³®LZéªóÜKîïÓÝk’_'¿þ ¿n<%œß7YÑýšü›ø Ý F¡Ww³xƒŽ³ ‘ž½Á ™êà%G™äkHîH&Éæòúj+ØL^lí<»è4*?]~zj!ê¬ÇõsjU¹ÕºÖ¾ÖÕêáq}‚ʤˆ}Zqr:P0-=”ápM+‰„‚iâ²#»ÿŠ#ñ—?ú^üÓX¹§­íî»ÛÚî!i·`qGüÅÿÿÅ £þàÑGûw?ú(]C<Üéà±I¦:°‰D/ r2r‘)¼MðIyŠÞf4ÚÃ\X ʸ2q>7_¼»O”ÍÀjusîE=2ð¼ÀË=oLF>Þ%8d¯Þi4QŸ)äÉYúLãTT*\(W¢‹ÈEÂ|i¼ mæ7 ›åÍúMÆmh;¿MØ.o×o3¾…Þâ_^—ßÒ¿nü}ÈŸNÊêO?GŸóg…Ϥ³òçú³Æ;d*3¨FZsfÀHkh¥Z:qÀP†ÂÚ§×£ú$%Ñ8Àq¸.öŸÄ–¿ÆÎøcñ¿=yÌ'C4}ù6yldH™ô}r‡ð}Щߨ٠RpPŸm™a^h®³H^'òp.'rÛ“Øm'ìádI/=C«äîwÇÜ\dGÝœ{óNìEDNjÛzT³Ñ è *À«Á' 5ËÃ…ÜöÎrÇÇ~×àèsìrsœqÈau(ŽBïðú6÷',LgWU¬tyUl&l!ÃÈ1ztzݬEÔþñ±~â=‰< ‘Ô&êI`µ­ØŸ©…¸;ƒ6‡ ô¯Ô-ÓB¡ÌP‰-XR\’a#W5d¦d.ô¬ùîÅW•äk¯Å>>t"^s]8%ùíœâ¥ó¦Þ_9ñêã7$ˆ¿v‚%5âQ•)šb(6ðHÄÕÇä·oÐÇäw<ð–€ÈŸRe_jDï…‹q¬„h ”ã„ZçJð \$YÖ‹FrÊÙ(C–>П2~ Jô©QxQxYÿ¢ñmôhÛ mïÉòcü„ÇôŸâ…§ôO_âå|>M(Ð+Æù;…õwu_U³¦<²™*\ v÷ ÎDkw«N Í´4¦RDFºóTêkZU¨iU‘zÕ*Ä¢`äÀéac)2èGDIRt²C§“yƒÑXÄñŽãÿ™’„ê¨òè°nªzES²N¦]8€©vaŒ£ñ‡pÁ;Øî(þOœß!þ‡ø;Âás6îãs°'QÉÏÿr$hlù¥°oYÑ£jÖ½–Íx¹°Vè¸{­¹ÅÜaçõ²Åè7’Û£FRn\b$Æ!²IÍ–$à)GD}’­r¡Ü!ó²o«}¬¶oµï·³óv+ Qæd«Búp?厭|§$,T'ìϧ­Ô¨ï<[ï]DXS~4«¬ˆNÕw¢ª˜t¬t쀾h:ld؉Ó`'sKtïm¸?~ s®œÛPwÉEÌ\VÀ‡î½rnÉßó+öÅÿ {ó°a=ZB}›MÃH+·éËU¹Z&}rL>*“?–¿Ü o•û¡BàD ΂°ŠŽAÄÌ¡zp‘DA”x=‘B˜gBHð^]ù,6™°ædÐïH}ç$wÖw…“À{ÀîÄ^¬—?„ùø¹/ò¡/߆V€÷ «à@)øGÃÈ:ú™Zi(»_~ÀtõQáýSòS¦!ŸNçÀóÉEb¥~É”GM‡ÄC¾õ/ßÐ7~&}j2¥XRœjrjÄ©šm‹óç+NÎIµÌ2¥œåf7ääVÕh1Û«Í °•xìnò&Gp±QœT%Âò´ìDÎKäž–«³%ÒOc+ {µÝN *o°{¨AM7H(€ œ%flöLY=¥}Êž)üK@§š,7µ5᱄©ËR¶~ÑéO¨×»‹êð¨YŽr:Å—d+\Rlålï(a¾šv:@b9àÑ|` õM)‚ö2:è7Íbƒ²þBV¬”3µ©;í«gÝ›Uà’™vj¦Ý›U`S­º‚Y#ápW8 ªZLe²Õ‡± ŠA¬¶CŨ)Ÿ–q”D7ù{¦}°?þ—[±ãÕÓØ.ލÜu³Wer›W^6kÆË øáw¼ƒu81~äêóñú«¶Î™Ó ž8Z²²DE¸Sm‘|º!Õå[˜!¾ Ÿ‰¼e%©éESm¹¦t5œIWÓ²àâM´§ŸK'é•©tq aq/HÅ(ÕšKý<•OMÍÅÅH…Z òÃÐV(ƒ”AÕã‹`ÕŸà%£IŸK—îåjËÂrÀÈ¥r¡: S¦†tÙr–©ÎoÜc$~دŒØ¨š]£oIG@¢n+ÃUœXíÆïºñ÷jw;ìÛÞbMfÀ&€¸tž®§’N”NR; ‹J‹þ¤>|’:÷áÄF3PŠ;ëN' Ã(Ü8КôætR®« XÎ ZšPS078“Z—ËÉ9\îlÌ™"Ý¡K"Ó¦•N+MxËX%ÑIÝg¨šV‚££áß½òôP—œÿÐ`•¸ù?®ÿñ‘•~ï—W·WÕà˧}˜^Z;÷âyÅVùcþwÕÝüd|è–/N)õê*+¶¯ºµ*%CIY:ofüwö"O欙+‹B¥éQ`ùÎøzþ^fŸSÐjþô¤ùIÄáÊLeI‘ä¹ÜÓ‚¤¹ÉŸ'Ë+Å•ú:ûJ×JO]ÊYéód˜+‰:=ªË`°ZÌî€Î×1O±e›Í–ÕŠ™mî@}Г7µ<ÁéÎE§gU¶ž +fÑÀ¢|V cˆ,LkŵúVˆ-ÖzZSD\$%,2²Y!¶eBà7)ºØ‰ÅâŸ]1ŒIüÜpííKÀþ¹n[»æº›šÖmçC»«›ãÿ‰Ÿ¿U¹bänxð±ï>òЈ »½| ŸÙÔj ÕébÂQá˜ð± ø…a«Ð6ªžp!ŒÆì3òò_³ÏšE.NXcáð•Ð×­ uË!žq¡ÝªûÛ:Û='‹^q™e«"U¶SD²P>Úxƒ é8IŽÓ‰( Í.UIìwáQvù<´wWZzd—§ßC:5’Øfdg23 «*Ã~K&ÍÌú<º§äñŠ9Ù†p˜/{½>ßíSñTæ!UŠÓvoaí,-8þ„…Ç Wãä˜0|Ò•pŸÆlbƒcÈÆÛ0u2uÐh’tÖY“¢kS«¥ÕÑš±.{m¸µ€é€[p¹ÇlB ¬’¶=¸K`©Ì$¨€Iš¤[p….5ke[iF’隣o\½ãg~Ù‡¥ ;žº=þ·?ž»¾aÝmÛ[¢×WfNwN ¸¦/ðñ'n°ï§wŸ»èéÃW̾ÍL®ÿÉ÷øƒ‡û¿̺!¾ÖÖ…ö¨)É´J×¢ã‡xÑE¬sus-X‘r0Õ&n4Àƒ#8äBLz…Fþ‰ôÍÀî“É8.ÄF|Öý|!wér<ùìE“âNêÂEBÌysÚ˜7W\4…8ùºø©ô¥e zÂÔŸÛùjýKüdÊãÑéÕ7 Äý`*Îi¹á;ôôÁ¢ügáU˜éZ4Ç9¼bUlu|ŸGÐñÏxˆÓe#»ËfN² «9 #+qÈ:‹¯6Œˆò@/b›%¡°´8Š힦A«õrq¹n‰®ZÇ鲬¶Õ6b£Á¡Éœ"ŽÕ¨ßuÔE\ÔoAqyÝ›‡Ik¡ w&â¿sõzî,¸‚Ô,‡KY‘ÿÑ&©˜î)cN¬ÓY !aÀôì.»¿wswhÎ…”üîwñS»ùPõM7,OÞZ¶´êsOr èüƒ£§¸ß€e´£Ujz«î©‘×Ê­¦Vk«í*ëÍVI?ßp­%O’1¨¼]Á„ Ù;¸Ð†ýz¬÷&he‹N/²vR IØÇ‘ON&l ¹•˜¹ÉÌ`’=­„ìÅ™JøÃo}ˆ±[P ×4-ƒ˜¢áК¾ÿû/Ê5‘% 9½4*%Õ`àBºãi”4Ú§Ê)3"zeÆLzðrbPËÕ§äC-\DY§ÿ“ü‘žçe½>‰¤ðVÙ¯’\^P}iá£òúMd3ÿcyŸþ ù°þ¬ü…Þµ‡ß%ïÑ¿ ¿¬“ç߀˜ôyŸOþPoÚ$oÖ_OnᯗoÑï"R­!J®à×É-úd /Í%Uü\¹J‰î¹V/yôæ™ÁGä™úr³Ä#/Bì$>Þ-K S¡ú ÏéeÁ(IE¢ÙXñ“•# ,«V'"×>Õl0Etª9“µ™‰`ÖJƒŽÃÂXIÏâXP‰‰8¶œ¶¾všV$ÎTó …×ɲžƒ^_Ä 4Ã!,eA©¤óƒ»=„MƒôÛa2n•ƒ—ÖÓXþ¨ê^^Š$UÚ »Í‘­° G ŠÁ1]µƒ¯"R Wf¤Í˜è *(38VÖYÿeåóZG:G:gùGÈÒ§£R¡Üxº‚D¹µB‹nþ}βPÄD'c`µÌƒ¶`I„$QæyE‚ êôª/õB=íÂ@ÏL2lj¼<„ŸVÍ¢DžÇHgt»}hˆ4ª?f¯”ôa‘tUö˸P|˜¤#0dEÀ‚×0vF°hÄ{¶¾¼[ÏÈØãë"„2zÌ:Ÿ¿x«Ûž^;I‘#²)‚4ž NžÂ΢¸Ñø€Ž×§ÎùéôS†'!k_Hâ8á™øÏûFm‰¿@fⲜ_½€Åaveäµ5ߣ» pÞ…Ô°ûqu¬³ñlÛàϱ, .!ÔÚZlÆ$Éa³'q‚™·”ÊI Ç§Þ…AÒÉl£‘ñ¨Œå´Ñ GÈåßaœøŒ;ÿ±›4îÕQ®†ÚÍzݘ·jKl-¶ó6üØö#»—¤ÆO)K/¨l+ŽŸ¼·g~ÇöÛGî SYU2÷æ›F>‚IÃü Á3´Â®šCžSŠ61¨ËtÛÜÁûì÷9îͼ;G–•bÊ4l~1ð^ð3ÓÙ41Û´Â5Ým¸×þHÚ°QªªésCëÒšCÛìÛ7¥]Ÿ.—†æ‰•†…¦%–ÊÀì4)-=3Tj, ”¤•KÒ%Q/Øä€Ç”iLKK Jéijn·q³c‹scvoÎvç 98ïÎ9˜v0hê÷»oñÜŸó“œX®è¸Ô@0âRSü¿ ¿ [[±.Pq{ÉP=©‘ _.3 àEWçâÂ\\‹s§ ­ØZŒÌÿ²Èå,”„FÅËÞíµ41f4ñ¼i(*¦¾è ;¯k‡¬œ–¡¹šêK‰ Ð\Wc¾ø æ¶B©ó 3ɘ«‹À‚¯æÏð„NÁ¥BÓ®b· íºUhÔ­–”FÜ4Æv«Ùpv-n? gy÷ Ÿ oñájߨh“ï¤+ûœ Óâ'aÍRÒó Ê í=á9t§>ñü*}ôeU6ØË-Yp>|tÈTftË(8`,}8v |פ vê .(D¶ tàƒ@´ëGNøìôÍ ºébŸ½­iCi†Ã¹ þø¥×¼ýÞÛ¯eÅ?µ­®m/TRBøÙºÚO>~k„—­ÈJ)Pœ[Õ…+ïßñôm;§^8Ûï Nq¦¬]XuÓ÷~-º¬ÈjöÌï¿©yzgÐd+gG¿W{ó"l¡Ib¦¼VܯFÿ’ükýÛzýr®#&É#WŠ—è6ŠÂ!ù]þ4Žÿ»(,–ëÖŠWó·ðò»…Ĥtz?oÃ|XÈs¤]©Š¯ô©Ëzð)½ VÛ ð"}Ôi0è$=§×ø!²Aõ º2¿„¥¨‰B¸a? Øk,ÿŽvð@mŒ×z¶Ó±ÝõÆÝY¶ûé®¶>¯›5Gp£/ ÈÍ$Ó-uÁÚ'v:ø'ÙnÆ^¼¯ŠßoŒÿ6þ÷ëÁÖžÅãß¹¿ssüqèzáèŸù¿w›‹© Û†Re½ËKI’ÓävzÂQ!šÕ#n6õd½e|#h¬Ó¯0¯H« ¶×Ú×Z³ÖånJ½)õž€Ñd*ãÐ\‚Š,M[|6í٠ߙּ6íÚà¦ýgP ësLéiéÁ2S$X¥‡°.mNð S4¸ÅtUÚͦi{õ˜MKFšÄ41èÕ{M.°YA½‰Çî•Õ«DÚ=¸Ý³ÇC<‡I%ò}eþdœœçàÐ|¦_ |J$¡] xîÇ1|ëðñª¯Ì Ö /Gö|<êÆn5ÉqWI™!_¾?³ß³kþØFñäÍûÝòÄ¢T-¯=€Ôéu`êÁ…<Üu•0e:™È»Â'©þ0mb “üHN½øqLËÿ4DõädPzyÀNKÇT‹½Ì¤ØËô,YhÝûªÙu¦2½‡¦¤²ðäOf3ô3LÔŠWé˜æ¤U÷ê’¦Gõô¡Z}'ÖôF€™ìËb…?O]Tù ‚bÅ·gÛíw\pqdø¿¶mýø'ØÝRüxÒÕW_»  w:޽Ò{Ë(z&þaü üNÊÛ·,,H¶çÏ\¹åg¿Xû·_™:›JÒÊ"k7ÙyͮĘîhÐÅU|p²ê²|‰^DzÑÑ (æñAÈÙ1·â›y€Ç"8¯:½Ñ»1±s>Ù§OCy† F°¯gTWªÑ#Áà@^CÊ1DÐ Ã6$k^Š›Œ¬-ƒìŽ€¿$c‘>¥Þo™öüFµž7€FŸw,—™(…'%+b0ùM…&ÕÄ›ÀͲêËõK@y‡H¡jàI™/ç—ð8¾…Àö©c LÌk|¾ßöRq {®‡À´Þ›xJËÌm°²÷0 ™×p==ÝMøHà¹é¡_(î“ñœùÒ ·h¶þ âÀ½‘?>1Ï•—G¦ÐsŒzãÃøaLß-BÖD½4„§¨Éân<üö.’Òé*cl˺šûwrÆÂ;‚meÈVV6µ0)Ë/J™Ó¦•oÁÞœÞU¥+æ“íØûòU·v(=)kVÐsœ»a ?{jAÉh“š! ÃŽaw‘€× oÄnË0™Í(ÙšA0± +s?}‹‚>®6€ƒLnQ]þÔÂÔ†ÔŽÔ¾T!ÕjI¼CAØ)S—O~ƒ¢“íóŒY#³˜O:Kf°jŠ›I«(‰Á —°ã(*ÚÁ»ñï±yÙ5ûÖÜ»øŠ—Ÿ}hÿÆ9—Ï/é»ïìß6Ôjs޼É?oÈ_SQÝbÒÿ¾óyXøÐª¯ZÂ0nžËŽ|á&Oœ:<1¾ÅÖ8µÇ%(ÙÛÎïã,rBøÙ— >¥¼¢ï›< ¼r¢úL½®Ì²Àr‰t…á ã>ùsðù¸¬u¢Þ­sé§™+Í•Ig•m³Ãâ°N3O³\dé5o±¾ª7l–7{7¦n—·{oJe—C6ZÌËͽæÌw™dÌŠÉè0™Œ£Óäve$Y¸ÁÑï Rt)`QœHg¦ÁC&2YMÄôZrf¿ŠÇD^ÜÖÄJ°0H‚çä§Mmš˜1{XF­ÞØ6ÄV…3$&nË×›aObe/ÓN\(cŠØZI.—;)Àå“`Ðf›X±à=¤ý/¯÷=÷lÃÕW ÆðFWÍåkgýþõ+f-™Ÿ~üã%¿ºîá7S¦ßôXü¸ü±ºÀÈnnqzíì…—*ÿAŽ"­Tå+ÉwÈNÂ~g®†xgˆ\þ¤N02Êè)\ Ó¤^5 ˆ÷ó ãyÞ«?ŒÁýhlžô½"&s0Q6‡@À&J%ÓÒK‹¹PüÔ¿mäð$Ü5o4ýå›ÐØi1h ‡ÒU'DÁzš¤qü¸ÆP}K¼Ös'ý©Bü¥¾d$2"ãWÍà+輜[ÇÛuí ¢A»y+4¬f^KDÌ\‘¤sH’ŽÓ"q2Äã‹s<¨yQóEâ+lî;U¯j¨64¸CŸôŽˆb(4@/kÒ\5/_‘‹Î{›I?ém¦0=\«{¡ JŒ?lÍQbÝáâ„+rB•Í™’8ƒ8ú¤LO%XÀ˜p'ç0¬¾C†]Ÿ¡„Mì_~D·.çâŠ8•ã+¹u»týºÝIN|ž{E÷¶ŽS¸]„›©[¢û·G×Ïíןgt†D ^\!j1 ÄO¨¦‚¢QèEr”@ͽªÈ¸0ìÊ) ”à¢#’ä!œ[Ê%™ÒLR,-&ªtY)É’,-"ó¤¤Ç¤_“·Èûä”ô91d’,i¡´YÚ.=ND léßÑØQCb' Ô&`Û}X!µ8)þæÈð¹ò¸W¿¨äž>7—®þ5‰÷AŒ—‰g£lV=@‚(¢Ëá"ºˆ'œKæéæyæ0ûìårCv_öžì‹H{OˆOcÙDzOd›QvAv5Üx&ûÝl1›zÿåPîc7)ÀK¾T{«K °sG^²Úl™É))¡L=F¢Å²ÛÔU% 6Ünö!R©Z|ɡԨkOÁ )8êf„B™ôáÍB™ZÜFsuŒ;P3Õ H³ ¥gF2ÕD 2_É|7“³dú3û29”©dfŽfò™Þ¬?Í{À¦±O;Ã= háÙÎú𬉠›ûœ.?Må.a_pW˜hâp;Èu¹Ù4#hÐ9tOÄß×`nçѵ÷V>tYïCY…§f.Ù’?5¥|ZEK^üºã'5+VÔ¬¾lî}#udõògÍßyOœÊWåVÞpÿÈ9° Û .¿‹í€)èûôùðgêTCYiòEÉÄNŸ†%ž…}*‰%üLÓ̤’äy|•©*i^ò]Òý²Þh†-M~B–d0X~ì ™5›p! }¼`Ä_}>6kÑé‘YþÚÓ1öh`N­j OÇÏÆú\€yÿÀ»öpÌ™äpO<؆½× < _z@µGl©¿þ†uÑ›„Ã#gŠ?ûÒºÝ$çá%{;ôÃïSy-†ÝÒÖ6—««Ÿðò 'ÿŠÑsÌsÌ{̧›“<'eNêJïƒüÝž}üÞèSP–Xê›ÏÏñÌñÎñéÒ=éÞtç ñ+ùížÝÉ»Sv§îKÙ—ª³Óg¿JêÔÔ©7¤îJ}#UÇ »ÎH*±-©V0¨„Z(•Z(<»+–ꇃ]+Õ ßX`$Fê{“ù¸Ë…—Ðç ~Ëqë&âòês‰3ô¹ÌÙÎYTØÀmwž„ _êb[q8ᦎ°•Ñ1 XX¦š­e¼ÎZ&èlÛÊÎw¿ r²7™$'aúúÆ•½¬žbUKk@\r¥@J=¡†Õ׃m˜fglØjHÓÒAxé6 û±ÄÏeZû?úyxF´®¶Eß‹u/¼õÙE‹Šãg/ra!þå]XþýòKV\½â;)ïÿêß5 ®©ø¤:DýŽ•£§x3¬}SïNµj³~»þ¼O¢^Ç“òK²n¥­ÎUç[é_gkqµøÖùue¤Lœ&O3- Äyr¥éù×äeñyùyÓ[ä÷âkòk&›Õ£@”E‘öìÕ™ü– ±P~[ö"!õøˆ¦|iŽão`ŒÕŒÓìÑp'M‰³±z\äv٬ລ!›µtš¦/Ú¬,@)f³†B¤èõÍ·ïÚôúñ/àZ\íJ,)NdÂÑûÆWÇÝÁì^üƒC÷|PQ³!ŸgÕŠšõÔ{¶–ýRàA‰°$ÕªfëÌŠ±Ô>ϾÀ{¿éæ{ío›e»-ɰí7ÚÁÀ&½Ñh²ÛÀìõ«.³Éa6›ìz‡ÂŽe¸jˆékz+Ÿ°‚Ó@h@ñ$Ìšß›l2‘UªÉ¯/Ð=å„~¯ƒ…W„¾´§:8Ç~LuØl~k•XË­K¬œ•¢Zi_I‹™·XOHǹ± Q¨ÏNZ@µ›6á§Ñ·€ö ý ð ½Ãø"ÍI¡§_'³  öÑÊä*ÂLœé¥¾DàNòÈF³sR,¡_fìQRâõ\º"é—bqã¢Ú«¶4ni8¹‹œù¯ÜË×<…ùÖÛã¿ExKêêöÛwmÛve€|ÿüó‚ø™·ž¸í¹·ã£§„Ë…W‘½¡.¾I¾Ùq³kºO|Q~{ÍðwNγŒY¦lG¶«Wè•otR’äv'¹ÝÙ$À·ãU¸ ß½çòXe× Æ¿ˆøÑ=ÔªšãKùe'áÈA{–€“¨ã1Z":—É‘èE¤Áu„ ˜bcpx“Á,Z Jù$[8L#6X±uï‡ÀÖb*0g!ÅYèlprô8›;†"ì”Ûž2%ℸ–/ãT7²•½M˜©Ê„•@hÉŽËš2-¢‚8ž×Þ@ /ñ•Ʒ‰Çápg×"ë''AÕë Ñ-Ķ ¹coJfö[‹që«bÖåU±KWÕðVtxô ÄÐgpVÌž0,У“­<Éšä…‹ÝS.@Ä?š@9ÑV]âå^ÉÌÓ23™1ãpü3Œß<'cÎ%[«—.öÎ.Ys¹‚g3ùÛ92\¿æ‚4ÛLÝu”û+`?/Ì‹þS]Zk©³×¹Z,­öV×Õž-Þ{ɽƬ/xÞ´¾áù@ü@÷AÒÎÏĤéIÓ í ]•ž:c«Qša/u•z¸MÂ&Ë6á&ËÍÞGí¸†í‡\ìóAOr„æOØs±‰½Ü=%Âr‹-b:ŒyˆzT»Í€T@E*à¡â]ãð <ÜRܦµ8€ L0%^uK–Žó^ǧ"þät˜ qýÉpB†!OÎà'$„–½C4­”¾LFM0‚‡Ÿÿ‹¹iIëÕ[¯¬^ëÄŽð'¿ù þì:ýÜ{䣢å5wì;²ûÒö‚Ÿ?‡C˜ÇÎx„ò.üaöt¬K È…|¡P-wÈ}ò.Y±@2xŽHH'S9ÛJcœ§êE +¢?^ Eg®&¤ì"<ñêF×ÎÙ–Ö *}±böf3ˆÙIí4€½6U†«$à Øð»ñEü­ñÅüsŸ}öå…0ª[`hÙû;íìýÁ¢{(Ißö`'Ëîè=}‰ī<ÂïèþÁ!ˆ¾ÞÂÅè˜G©¢òOßÇäQ?uϘÛ:ùÍž„K=®[p{·‡ ¬FÍSÜ¥æÙëĺñw¥îgð3Yî˜Ò7…Ìà"ÆΈw!7׸Ð9×{¿,;˜ƒhð±÷Å ’ÙÓÒ»³Í¦{uÊbA¾Û©·ÐySÇß8I¼oB}ÄÄû §Çß{`“ß $^éå·¹é‹S“œC¾1þeÅUOÆ¿Œ?7pöŽØ æ^Õ¸ý†uÍÛv_Z‡3±›±÷.b=×±ïⶇüä÷·éyǘoø¹è¸Z¾)·˜7çü™?ËórÀ)‹Y¹ —Ýï\â$…ÎýNât:‚iö$âÈÀˆ$gvˆ}"«²2÷Ӈ‰s##=7 æ«ùÕù ùù}ù»òûóuJ~a>Éw¤)HI*L"I4lÍ;ÿ©>q†”8³a¢c£G̾8GûRËœ‰á@Ö7ñ#œI1Fâ馅½¬Lg?(H Ð'{ì@#q%@Gnh'œ- BÁ{ÈŸ=¶mUûê›vÕÿpãÂø{qÎzî§9_Rµ0÷·û°½?<{¹ºåWÂáÔËî_½îñpæÓ[›tšt„!þSA¾ä¢¹+dad8¾Y6Ö/ž}Yb¿—#^'yõßW[fý]çÕ±_?ô§Y1Å—J;a/¦¿—Ác?½FHº0¾Í™ø1öW~œœ+B•ð"º‡ÿZ&–!™”AWû_ºI\*Úå;ùnTiàìdå?¡[!Õ@ºp=p/(îCw@;ê¾åBH7 +ÑBÈ @Ó ðÝpïû¬¯nômàû¤Tt ÔoƒºbH+!] õ›!­€{¹€{ íÒ˜§¡~ì!Uðý=wŽoãŸ~)þÄç}Ò'º?Ê—ÈoêC†j£Éx«¹Ðü‚嬵ßzܦÚÚ슽ÑÞ—´ÕQçxӹϕëzÏ}§Âó®7ÇÛæý³ï;¹ñpŒ7YQZñúbk;ÔÑ7VóW!¤Ý³+Çèô¬Ä1*Öi0‡j±UƒyäÀ-, þ®‹ß¥Áz?®Á:",£ä ÖóÏqŠÐélDkus5Ø$ÔíÓ`3ºÌrùøºoµÖ`Xvk™Ä[/Ô`åZgk0ìRÖ6 ѺYƒE€oÐ` ­±îÒ`J²þMƒe4Ï&h°ž4Új°MMzlü/Å'ýAƒMÜ*‡EƒÍ(ßÝ #Á<åºÙ}¯óÈç~˜ÁÔëÝÏh0\î—,B½è~Wƒydw¿Ç`‰®‹ûS †µp2XõFO’óÈãñ3X¦ëë)Õ`X_o‰C;Þr †õõ^¤ÁЦwÃúz5Ö×ûk †õõþIƒa}}h0¬¯ï7 ë›|‰Ãú*^ †õU¾£Á°¾Êj0¬oæÝ ÖS^eþUƒW™‰9è‹YY^ æÑ”¬0ƒt.Y 4ÆŸµ”Áf*ùYQ æQJV/ƒ­¬;4˜¶ó#'Qžg=«ÁÀó¬ì ãÉzKƒa@sY}ãÿeKã#SÐr¸³õŽãtCÝÈýMEeð-DyTÄj+€b=äË€fŒ¡‡Q-ƒöº!u¡pm¬.¸ß˜³YÍ_çŒI8Ê8Ö ´’µÒ=>jÚ+…‚² V[Ü醴ÚÊþÆVþQ¸y“ÆU3©þgŒ³”oÍÐÆȻЕPG{ûßó\Ú(p«ÆÔÃÆFy¤@™âôh­®€õPP5£WPˆõ·®K ïµŒ÷€Oé¢Ð*åö&FI[Ëÿ†1%Ö¹ú¥cêÜ-ÿ+Êä‹âmb£Z7Þo«&½yl•ÛÑmÔ‹ÙÆÅFMîøØ»ØV&©ËáÚËFX‘„TM‡™ÃFÒø<Æ·.‹Xš,&$ª•ñ¾™I•¹6Ö×äuoÒÚjdc£”X‹tÜ-ÐÿÖb‚û u#ë¯I[Ä:ênm=Ùt[Æ×¿U“öm£Œ7ÝL³[¡Fmü½¬7…õ0yTc+OyCË›XÛ-“¤â¶³¶}Õ'¸Ý£q¤I“Ôî¯áõ@›QÆ•VÈm7i5½ŒÓT¢&dºinãèzFOGJ×sƒF5ÖC£ß¨õÚªÍ4¡´… .¬LÚZ¢v‚¯­wÛµ™´2ü^VšXÕn&¥ëÙè¾Y&Ælk÷ø\è½ ¬½‰6¨½¸Rm£Æÿ&fõMKÇxÖÌú^ÇjôTÃZµ5lazסÉH;\©FoÔ¸haÂÚ7²µJH‡ÂxؤͿ•­Úz†ÓÁt/!mŒ21“ÉÒÝ:.YTó7k+³†ÊæFM·vgýø86°Ò„ôö|eGêþÊüš´>Ö°z§›Ï“Í(ê„ú1ÎRÙnŸáZ&Û “ÍŒ·ÝLîzÆíIbÕéØúÞ£Y„6ukR6a=w7°iDW1úĨi»Mì%zofÜê`Z²e|c}·1›Iï72Nti}PJp±‡Ñx¬õ&C˜Ý[>ÛûzàÞ ØS  ]úÍgX“-l>³N£…éÒz€6ÔÆV(ÊJÝh5“ÄŠçcþ¿ÛÃ&&1 Üè¤^ƒ¥¯}¿Ò< /ZºTÂõbV?j–Ã•ÊæE°̃ï"V[ƒLMÑTä©ûdM¯OèI‚£Ï'dô_ÛÅ&VfÌ"­óvw à÷Ž÷Ù4nÛò<±M¶– Ë1aGúÛªÙÌnM§×±V¢ã6‘jkÖÕîš-]3¾%úìù'œ³›Æ­STÓ¸è¸Lw1ûÑ£éóZM¿‰_cZH9ÔÊ„½¿fm¤¸†YÆÄ¨×h+Ó¦µüM+”Éfu>§ùëRñõžÇlµbÌm„^×kÜîÖlÈ?ê›rÔLØÙ-_[‹¨æeLö¹Ö»‘¨ƒq¶Uótþ•5W4Yl›dÛÆú¥–¤™qºuÒ.Ò5ÉWÎÇîš$·{÷?çÝÖþ˜\µŸ×Þ&¶þW²Õœì‡ŽÙÇ ÌvÀMx¨½Œã´ý–ñù$Æ5Yº7h5Áÿ„Vuhò1ayÏ—¡6£ ùXÀæþõ•ó½èžÕ<´Älþ^[Õ¶¯¬A×Wø=Ñr7óV{™×ŸØ‡62ßhšì]ýŸW¬½.ÍÿkÕbžoòâ¾¾Ž nMx¬M¬Í¯ëñØŠ5~…×kÿG£àò×{8¿?DQÍ‹í½g¬ŸT D$>|•Bü¥Àu*”ò ¾Š@*DôtdªÒ0 áîT¸ÑàRT ‰RMC% ÐD[ÿŸíuÿûqì^ÁW¸7¾Öl鈮mlŠ*?QjZ¢Ê¢ö¶ö¨Ræ´wu´w5ö´¶·)ë›ò•¹=ÿ¤Ú˜²¼}}/­éV´ÝÔ²²Â<¸å+ë×+ËZ×µôt+Ë¢ÝÑ®ÑæŠ®ÖÆõ³Û×7µ9ƒÕ(´jÆÊhW7mº(¿¬PÉZÔÚÔÕÞݾ¶'{e2«ÍcmÕ0øQ¥¦«±9º¡±ëJ¥}í?¹Ò]×ÚÝíŠ6+­mJ ®X®T7ö(!¥f‘²díÚ|¥±­Y‰®ïŽnj´üñ–`Îíëº;Z¶L®Š*s»7µ¶­£´­ÀÞ6øö±Á· ¾}lðícƒo|ûØàÛÇß>6øö±Á· ¾}lðÿáÇãç­è,$î\ yBZÛYMïy¸_¿{³ÝçaÕU¢ |%: ø@Ýù§çߣó¯Ú¿±Å‰»+4'Q3Ÿ•6²óŽóZÛ}{Yì×δr2ö7ÝŸÌ©öÈÃvÞÏ_ÈÏäçðÓøé¼Ê_ÀWñe“±¿ñ~Í7žèLÔV~m>‰š*ZÂSgò½‰Ú*Í7½ò+#žTmè\¤dÒýñº‹Y¼Öú™™¨ýWåê_äÝ¿ÜÞ?“;í}z4š‰ÞDßðù9ªá@Lÿ“†£Ü}ƒVG‘:ÄÝ?hI*R+¬ÜݨA1n: ‰ vî´ôª¼©EÃÔ›‹¬€¿)ú q¨®˜•UHç`’‹6ý€ÅÆè¾3PIƒVOQu…ƒÛŒ0åÚPù¹k Ÿy䩯ášÁ’ÐqªƒkQôWèåœÌ”Ÿ«à\¨ò¹œ%3´Þs¢ŸÞ¬œ¢ =7‡ó0 g{åçtœ4PäWžâè©£rÛeßö«³èw#'!`õ–Ûo9ÂéQ$:“šAÙT´«ÂÈÕÀ4k€-~Ž¾Ì¿‡]U®m‚þæq)È÷®äR‘òJnÊ€Óô)îN†ö=Ú ôwီ˜fƒ&sÑÑ ™£¿ˆq·Çoc½í M/B!. B"ÀÔ­Ñß|Y¹í€eÚK³–fŒbaåo†;7Nwêà6¡]öÌC“Îàà0Ò³Š†9/çNXŸÞa¨õ Êf:2Ï€=‰¡yæ¢ò#\7Z‰Àà{Ýž¢ö§¸6•ÜAO2%èÀ:wb-€ÐE×à—ÂMaœHeˆUø¡Œ‘…ó#L~EŽQîWÉët}éwÉò_kùo´üßùèQrlzQ‡Èïh~¢"…¼GÿÈ0y툧È/`+ò“·Éy‹ £rÈC¹òaÈ‹!?<xÉ?D†!ƒ±?8`rÑÉ’_ „ 4ÀŸ¡îd °»Š*2ÈsäY”M¼ y:äÏ’£( òg ÷@~”ô — ‚” ™ÔòçÉÓT¦É“äì©~28`¦Cˆ H4Û? Òìg(Qª.ð?M~FC>@ýé@ȵ†Òý–§ =L&=©~{…žü×âO©§9²“‡Ji#»žVüÃdÙ¥zJÕ 5OÝËfæîå” %O)Uö*Vr€y °d'\aÿ& =TH»ÈÍ|i¬bæDçEP\ûÔ×!¸ZÇïžaP9¹-D k m…ÔéZÄÃõ*Hßô]HW³šH½6ù芠èŠFÑ@ÑŒ¢ƒõÞ ‰R4EP4E£hŠ hŠFAÇÛ Œ¢(ª¢(ªE5PTE5PT3Šj ¨ŠjF¡… *P¨ŒB (T P… *P¨Œ¢( ¢( E!PE!P2ŠB (ŠBF¡… P(ŒB ( P… P(ŒÂ V °…•QX V °2 +[Ÿ^H”âPœŠ@q‚QœŠ@q(N0Š@q(NM¸c¿’c@r HŽ1’c@r HŽÉ1Fr HŽÉ1mê=ŒÄæH[!õA¢´Gö(ÐÚ£Œö(¯^H”61 ˆEŒQÄ€"1 ˆ1ŠPÄ€"Æ(ú¢(ú¢ŸQôE?PôE?£èg‚Û ‰RüÏ…ò¼4äZ\«ƒÍ•ôál–oE±ütœåW£,ÿ.ÚËòï ëX~*eù&b9´Çòä×á©¥Â&` ¤ÕÚ!í´Ò3$½é]H£¤DMã-Òi´_zFöK'$b—ˆ{Äýâ3¢°_ QøZŒ¨‘Åhmºx©e€Ø–´‹ ­ Lš´ Înü u!Œ×61JbbÒ?Lß»þH¯½¾ëûîîkî^syË{£1óå±Éf²y6“ 8A¸)›!I¬;;Lô±5õ¦%L'Öº¶ñ‡ëyËew3&ëâd6riFl ¬!—\riºÆ¹¬ Úý­î‘Fá2KE°áaMrzÇG7hÐï©2«­vˆ°$%ê°}¹Ç "¤ªügbêã5T™u¤ÚJX®¡#P—åÞ6— ÁN˜¬Ï¤Á½¦ÂôQöž¹X8\!ÖÄ„Þ=^áúÝ“¸™ÅË*¾ï»øð)xÉ}v1è³kŒKÏÕÐt@w¹Ñår\ ÖÛ×'€>Bð[TÀ¸´z¼®¼ìy]/®Ö[p‚?A?NœF î/‹Óø\AÿÅ‹W©ÿeT•Z§¡ CQ*©ÔË*4æÊ\·%Pƒ6æÝ{]€òtGiÔXäˆGÝÍB@ÓsH.ø^¢“:'°A©C]í…ü_êmÂHú³°îzV—Oïm6$Õ»$휂Ôß ò×C8èó!œð”‹‰; endstream endobj 57 0 obj 19253 endobj 58 0 obj << /Type /FontDescriptor /FontName /BAAAAA+Arial-BoldMT /Flags 4 /FontBBox [ -627 -376 2033 1011 ] /ItalicAngle 0 /Ascent 905 /Descent 211 /CapHeight 1010 /StemV 80 /FontFile2 56 0 R >> endobj 59 0 obj << /Length 418 /Filter /FlateDecode >> stream xœ]“Ënƒ0E÷Hüƒ—í¢©!å)eчšöLR¤Æ ‡,ò÷…{iUu“èxfì9x­vëkz½ú¶ÚK¯Ž«½\Ú«¯DäÔ¸0ÐFÕMÕÿ þªsÙ…A4Ôïo—^Î;wlÕ|JEoCÂ¥÷7u·¨ÛƒÜcñÅ×âwRw«=—ö×®û’³¸^ÅaPª–ã¸çSÙ=—gQÊvõÑô·‡¡ðOÊû­e¸ Ù[ÕÖréÊJ|éNó8.Ô|»-Â@\ý?jVŽÕgéÇl=dDZ#@¶$€<X€‰)#R¦åŒÀŒ»= )`AЀ%k¸õŠ‘`Ík6Œðœ-a3‚Ž `òYèc×úXªé“A[O> €>Ù@Ÿ”úä<‡>jú¤PÐô±ŒÐ'ÅÑôIØ} ècfòA׆>60ôIôIp¨¡O‚Oeècѵ¡OŽ[0ôÉ¡OŠk4ô±L›î‡‘ÉÇp¢~&g.¼‡ßÑ­®ÞS‹gƒiç´qòû´º¶CÝôó ÿoÔ endstream endobj 60 0 obj << /Type /Font /Subtype /TrueType /BaseFont /BAAAAA+Arial-BoldMT /FirstChar 0 /LastChar 43 /Widths [ 750 722 610 777 277 333 943 389 277 556 556 610 277 610 610 610 333 556 833 722 610 556 556 666 556 277 666 610 722 556 277 722 889 610 556 556 556 722 556 556 610 277 610 722 ] /FontDescriptor 58 0 R /ToUnicode 59 0 R >> endobj 61 0 obj << /Length 62 0 R /Filter /FlateDecode /Length1 32648 >> stream xœí½y|TE¶8^ËÝzI÷íÎÒÝÙú†,ÒÙHHBI³„-B"„%™¤ Íž°©#¸‚¸Y.³À{㊣4‰`@‡ÜÆwŸâ *:fäÍ ¾Qèþª{‚¢o¾ßïûë÷±;uëܪSU§N:KÝîN_Ïê²¢ˆ¢@S{°ëW?¼õ?B/"„Mkú´=+Ïlø8BÒÏš»Vµïοû„”k¿\Õ¶¾9þ®Ì=ÙÖ!Tx{K(¸ò7#„*裴 ~¹U†û)pŸÑÒÞ·î9‡åv¸o„û-mMÁ-®î?û9íÁu]¿ˆi‡¶‰p¯uÛCï]é‚ûZ„ŠÞìêìí{ {#õ²ú®žP×ßþó¶-p_ƒµÊ0¼ÙË  Äî DIVLf‹5ÆfWÎØ¸ø—Û“˜”œ’êÕÒÆ¡ÿ¿Äý(‰§P’…’о?’"WEßgu‘¶èûäC`V²žŒ×ÕèUìÃnôv¢]8=G¯ãt-z ¯D È…Î’ ¤aIÈjÑNô<–QŒ~„BKÑ'F?DÇq.Z‚^Ä6°ÅèçhŽ>‚þŠIô8ô0Õ ~'®_Ç7 Srs´Å@ËQšŠ~†þˆ¯5퉾‚ÊÐÓÂeÑÿBwc7ÉA6Ô…>@§€¾<2‰ÔGÛQm@¿Á!þ8š‹:ÐYzKô—@‰ŒÁ¸ è:tŒ:$»Ä•(U 9hªGíèô(iOä”…Ú€öÃè$~¿EOÒ Šð}áv13RcŽCÅh̬­@½èvt7ú5œ/Ä÷ˆE箞hÐÃÀÙˆn@·¢A¨µaŽÇKðÏÉuä(ù›ð°øzô(`MDk€¦ÑoÐïÐ_Ñß±„óq!¾ïà ˜¬'_P-Š¢O¡l4-DËÑZt=êG÷ ôpó7d>A×Ò°ðWáËÈ!÷+€¦kÐ z½ëæÄÉ$‹|BÓèÍô—ôEúÌ$V¸pÃ, ÆËà½æß ë¼ Ý‰þ=‚ö¢ý@Ï1ôôz¨ž„¯Â×â_à'ñüI#ãÈÒIþ„É~ògš@/§µ´›n£÷Ògé‡0]¨~.ìÞ”ò¤“r0rä/ÑÑeÑë£?Š>}&úÇèß Åé(µ¯»a^€“¡_Ãûz ½ÞDo£÷Aê¶â$\‚çáEx1nÃ=øN¼ÿ߇OÌÄAâI5©!«È-ä9JËé%tHÈŠ„Já á*¡O¸E,‚÷|ñvñ!q§øˆxJ<+9¥ R^<—sîHKdMä?£æ¨-š-Œ¶F?C"J…Õ ¢UÀ“ŸOîéø:ˆFüúP÷6úOôz(ü:‹ãpvÃ; ç‚l-ÀWâuøzXÅ»ñOñ/ñ^<„ŸÂ¿Å/ácøøeü:~ÿŒÿ†OJ<ÄKÒ‰Ÿ4²Þ·“{Ƚäy“£äy•œ$ÃT¥ãhï)tN·ÐGè1!^p·«…ÕÂÕÀñ„ƒÂo„?‘¨Š±b†˜+V‰·‰ÅÃ|Î6É-eIÒÒMÒýÒ,È r©|ƒ|«üSùßå?)qJº²Cyf‘=8q¬þÀËð³h½ ×áM¸Çà-¸Å?úw¡›Ì~F¶’òÔʅ0ËéÃèNЉ]è§?Ä?A{0F— ›ðT´ÿVúYÜÒ•‹î¥h„Ì ð}x:C‚Nz¸5OÀ³ÑC4(þÝ#.^‰.öD5(¹š3c'ôsÄ·ÓFa|tiäs¼‰ºÉoh¹ÿ]’ÖÈc¸O$ïÓ ¸—ôá/ñ Î zžÌ'Óp"¹dÿ3ô ÈÐYô_h@ø1½#ú}$r9y eˆËÑË Ñ$t9Ùÿþúô×  èÜG…R´‡v S´‘ ‘søsò9úz ´ð.âÃo‘–„ãøýNN¥Í Óº´ò ú74-úòâ¾èÑèœûe?è¥ÿK:Ñ@_ü4Êu Ç‚ ÍmÈŠ×ðÁ{dÿï \°<"èÐا÷‚¾ÜúâÐ'¡þmtöî=è-‚Qô3 üzæ÷VÐ>T6Ã{éDôŒlÇ­£ßʱÒTáô´x@ž˜^¨˜zé”K&—O*+-™X\4¡° ?/ן3>Û—•™‘>.Mó¦¦$'%zÜ®„ø¸X§CµÛb¬³I‘%Q 0pneú¬F-œÕ²ÒçÌÉc÷éA(Ž)h kP4ëBœ°ÖÈÑ´ 1€ÙüÌ€ŽÅĪ6MÉËÕ*ÓµðK3Óµ!|Åå˾cfzæð| Yü&nÒÒ …Vén™©…q£Vžµ¦eKeãLèo·Å<#}FÈœ—‹v›-Z »Ò»vc×TÌ⪜¼› %¨ '¦Ï¬ {Òg2Â4³2¸2\sù²Ê™Iiiuy¹a<£)}E¥OÛýÍàÄ¥a™£µ²é Û´Ý¹·Ü>¤¢~ëÊô•ÁåËÂ4XÇÆpøaÜ™a×Õ'Üço¡sçŒe›ÆÖ&Ñ-•îVÝnÙ²I ¼|ÙØÚ4v­«ƒ> -ɜոe };㢻aä³©è“ ¥W²’Æ+µ°)}zzË–+aA·„ÑÂõi‰‰}à7$Vj[j—¥§…+’Òë‚3“wÇ¡- ×zšçš¼ÜݪCçæn›Ý¬1cÐh‡8:ƒª޲3ŠÒç‚„µ& (Y–™Ä.¡IhKÓ$@ƒW†Vá•° ­aÓŒÆ-êdVÎÚ‡ÅL5]Ûò‚eOþäÂ’ Q"eªŸ!2á0¨Ã~8'‡É…<hœÊïKòr× ‘%é]ª°Õ,ƒfu“ €çiilUo  pÞxù2ý^C+’P À_&¬æàHMübV³q¤f´yc:ˆïãÜ¿Ž+Y£v5!¶²er'|KuH¯¯Z”^uùË´Ê-o«j/¸Óë'ÖÖ+€áa!857$náËXü‰™³Ò+[çÀñ3–Ñ$R§C$‰ò®@l—öÌn–YY_B¦ÄÅ~e˜‚Øò¬Í «sôk9-íÛ ÉʘFCÑS¬ÏÎ73¦žì¿ðþ’ î/ Îº…½B©ª½bËóu³@GmÙ2+]›µ¥qKp(ºqEº¦¦oÙÞàŒ-]•#«?Ý[RxÖíu0‰<$› é»ÓñæËwðæEW,Û§Bµ¹vÙx›3§×í΀ºeû4¶x)-ew»CUvÅQxUÒ¾By­À ø}ÓF¼L)èiˆèe*/ƒWB„I ø+à0€}™ò8ÁOHòù,àF¢ðEfYx#"‰O6xÇíWÏL97ezzÊüsS ¤<7E= — …iŽ4G&\0ÐY<Ñ—H²¾Â(A”ãÏ. LÕrð?„ôîÈ9˜#¬´Þ%=ˆŽåKc—z-§r¿Åg-Ì¡±ÙÞTKœÏ¢¸S½^/Âq`øãb‡È‘€Ëw4gkÙïf“‚ìêìpöÁl!Û›’ u0 ¢yRž)©îlMÁJ§B”2²9ÙT›f+´5Ú¶ÛØdÛ÷»rpNê~ò#ä%ÇAp¿I! @\DÑ”ñȵŸì$K‘Û³¯ï>wB­?Sß3|º¾{دêL`ÉQ^ß]Ð À&1ßÿõv8Ë$YœüÁõðBõ¸»§¹RI|œ$'€=•„tZ\T –7Ë—•žNÓt8=m!.ÆŸýrZÛ¶›ïìÞ°-òßïýà§›g.I»îãßãô'~PÕv]änq¿Ù~Ŷï]=˜ïݾò¦ázeîÊòIs¬ÒY_AÛ”¹ °ÆhyôCa¦Pþþü` }]ö-‰7$Ýœ¼%[t TÒP1µ8g%ÎLšëÛœx«o_âs‰o%¾å;“eIðà‚âWéÉ‚“…Ç‹Ïú?+ø¬PÉðLvÖ9[-žk<ûЉo’WܯzN&~ìûk¶m™OÈH¦©6ÙQZ4g á„@brar ¹+ùXòñd19Íf7Ó¼Ø.«dbiYiq†:V›Àä§ 9Yøéï^:ä(ÎqG>r÷-ºéWOÿã¥Jç¼¹óë0Nô¿>½`Î%ÓzËÈ?Ýwî¸maÛ¿¾læ¢ÉSgU=ºùî½±÷”Œü©‘§d)±(ãҢʊ¦V`JÈÏ• ?¹x`J˜€Ïn .™CÑÿ0•§C¸ÝR®ækù…ùüš|ÑlSÆ—Zf[צ¿óJæÉEN3Òc332g™+Óe‰˜åS-â¸ÒÌÊq³3ùõè{¶Úøš„…®¥µY ¹5ùký·øïµíŒßáß‘Î!þ…„ƒþC¹ÿLLÒýO-m\zFfVL\°ËëÆv·×Ýàît n&NgrNœ¬b\¦|>ˆÑwg¾w¦Š3 f¢GjÐ.t} *nˆŒ X«UlW©DS±:„ïÌ›¾ÄÍUD“‹au`7( &°Üû Ë»Àä<Ï¥ç ¾, ÖW$h·DfÔ.{\€Ø– ú:Þ:—Ìä=9 “™Ð'F›Àxå a.b¸¾u×ã^›™òÁDÆ—åË𕕦%¸D¦nÆ1ÙJ`o4¯<œÙѰâ’ññ ÁÈÙ©Áï߈ÉK/'G>/\qEu¶gó˳WF>üàK<>wÙÜÜTŠ+A[R´àºë¾·aÛÆüÉ)¾)¾ìD5ûÒK­¾ë‡A÷€æ'¿ÍöË-šií7í032IµSb'vJAaÕćä]¦#Âaé°üš4 q÷I!&]H L¥R©¼D\*m4m“¶É÷K÷Ë'i ¨sŠL4LÂô 9H‘côSò)Uˆ(I˜‚@DÄ`hIÒdÇJú馔2λ<éÍ Ø°ƒ´’ÍfˆÜ5 -„%¾+`—A ô˸¨¿S‘AXöí~ɰþçNèúŸ½Õ3þŸ-G¹¬N™ÂÛö¸›mün [?¦ÉðMØ[y/{߉¼'îœíÿòMvzz ì·›`¿%¡½III8ÇZGêèU_C®¡W‹])›“v¡‡ÉNú«Ä‡“ðò„#œë7O"sÅdsÚ¹€Z<>Áâµãvlg÷NŸEF¸wbbÇ^L¢Àm5ÞŠ·ãXÂö™ºm¤¶Ä”„ à†¬É§dA~?y¼.Ûà à2l]OO“ëõ=páÂÇe‹`Õ˜²rfsQc’f(*:»*#xáoýxÜ£O·E>5×ÍYÔ?yeåFÜŸ·ÿ™¿ÿéQ!¼' ïÊo(ï:Þð‡¤Cêñ«‚ð„rÀq„û”ûM¸ïó„ñ“²´Ñ±1éÇÂ6e›i‡ -s¯3­wo”6ÊUiœ§R˜mZF—™êâ¥qJ–IS3yñYn)“dRMÐÄ4) (±XwBõÐ$+‚É¢`Á¡ ê›ÙæPcé™/Z´ø²á(pÆv©øè _¬Åñb˜)#2;#½(ƒäFeá}’,yRÀ²™,øÅíЮØÃì\¼%£?!œp0¢5Aàt‚˜°Ÿ\†q<u&éÃ'N÷œPO\­þ7¬º»àôéî¨b˜Ù7°yS6Ùòý H=r01(÷³‹^›lPºÉ¦2¼ãÅ,`w7l°‚±eÅe™´XN§ºx”ɺ•+‹½7÷öt á­ֆȧÂ*¸T¤ƒÔa,9S|±²éE…ÔÌì‰,Ä{R'Ö(¸‚/EU4å˜rJ¦•Š’ÏjQ®5½˜â¾ÃMRÜØ=S×<4aã8-ãFè2C÷ÍOÙûûi#f§›9SÃ=ݧG})I÷¥$×’ _J2b–€êq`w¨fŽ”'…9R)Ì‘JaŽT s¤R£È,’ë)åÖ3F \ªz®±øÐ*¸½ærÁ\®è¿3éw&ýÎÆïvÛt¯žõŒY˜fè:‘¹ôÈpÈâã2 ·^–Ÿ+Äë—nW}ù³W#§×ß‹~ûAä |e]ݼßaºò†ŸøúSl÷Íü×-ËcÍkÖÜr#Hе AL ZQ"z,0q®çXò—ž& /xžO$ã‰OÉvú<³s=5ÉÍÂ:ÏfÏ©d‹Ê¸¡2F¨> >ŽÎW– ¡Ðå3Yb2¤@NáD)0»D T–ì’ŽJ¤AÚ*í’¢’À”ž&ÕH§$QÂU-'Çe¨ìJƒh¢÷“ÆÏçËX?¬vŸáKá‡u„0‰%cKŪ(­ÅÃu\VžxÞg(+½ÏÇö¿b%²7ò×m'{hÑÚï×÷×\ûý55=xöá†È¹·"‘ÈæuoãªækzßZÞsKh+ ß6áøGÐÁÀ/Á]?ŽËQ|J–ŽÉ¯›Ž£¨p ½N^£¯‹ÂazX8"”…°¼Ït!Â.ô(~ÄFÂ:ÓÕÖÛ­…Ì„RSIü,"d‘,Q3ÍWÑ+­Ò µ2žd¨¬‚ª{,nˆÅÑXˤ*ÖgÃnB]„R·" ‚É¡"ëoŠƒ,ñUÂQ0â>$3–{˜SW³IPÁ´ï‚ã8leØ?èE¼ŸÌE„ŒÛC ò‹Ò~2‰àÛAPÑ Û…~¨‚&|*PáÀl ùÝÈá„&§O¨çNÀË_†ÊåR{©³,©t|¥e¶}¶svÒìÔ%–¥ö¥I›ÈÍ–[µy£‡¬Øp>ÿ@ÒNíAÿ®¼=–Á˜½ö½I{SÃyGÐsÖÃêsñÏ&?›ò\ÚáœÃ~O}#öÍø×’ßÔÞJ{-ç$úPý(þÃä¿j¥}˜óOôßÖi·à£y¤3ƒ»?>'Ûìª ®«Ã'§ßxšƒcÀGuÄÅAIRr²–’—’’Šsr4?Šóû‘êp$§¤äøÍ®³9=‡GqŽÔäWÕ€ya#ê GÁÿ"O,É R¢)äh Ny’<ü“99<2Äúq£WûûýÄg®Ã•âòóã†çÝÌsàâpâÜ &#'ÏìÍ£…)ê0÷`™+ŽŠ¾DÀL Ç^”Ccœ¿Ÿû6öèɵ’JnèLË)´b~Ɔˆ$rOôCi.Xù4\»i ±åiLþºcË=4ÛRNçÒe–M©w¥Þ—ºÃk:@S‰L ²“¨î#»™¬j¹Ä“Ÿ:Þ;YšdŸ¤–{kðrûru;Þžú ïví>ô yDx•¼êý§:âš×;Žà8Ð5^ˆÉÚ.ØE왃³ƒäHÎä!05&ÑÔàÄðçÜEñ¬ÄFɸlLTÀŸˆGÕ× íè]Eòx_Ð=íŒ=5h+&˜á¤8³ŒXQº?Ý“0Õ˜M™T1 ‘{÷Ž#.2Î\¾<†FM¸ÌŸÕsq9Wš?81bÁαSêsìtºlÿv8]>ÿŒX3ÌNÁseQŽ®ù²à©¢â"Á8Ð!úNYY½‰ôßÔÙµ+rê‡Ï.nÆë"\\ù0óþüèô–‡þ#øâ¼¼Èj?w[UË5áŠW}‚…Oþ¬]{ÝÝ‘gžÚ·»,‹{EÏâB'¹”©6ˆïEd_;ˆ<‚Èò´É«`^ NÏFà iIZ¼ ôâ/¿ÌtÒ„Ä_Í”qbàû]&l§vÁ&Ú¤7ä“DzƒމtP~Ž‘é/É/åÇ Ý.lDôVr›|7¡kÑMèfLÒ*´ ÓÙx©h­f#*z+eKlXvUÜÇÏmg–P=õŒŸ@ìÇÏ4©KÚ!Q$”Žƒƒ,HCdÕãš ›`ÓׯaaŸJq!ÝAÁ]é¢Ç)¥ŠéŒeÀÇ1…åŸõ¸b®[öa7[Z¿úA}7.ïf±ì ÜiPõü¹ÃùgQ†¸àØw§€–¥ÉiäåÈËE 7G– ¿ûì3à`-pðwÀA :ð/5m§`š-B©)@t© (X3k–2$ˆŠ üV“ñ(N;ì²R T+aå ˜4ŒGpfÌ#{-ü œ¼ŸLgÛ@i‰Ä@ ™¾'`n43{èFAÄckxd*) 5DØÍc„§ ÎD2@MÎüêC9+å¸sw›áÖ‚fdç’õ=óOœ®?qz,3øƒ¹‚óåä‘§qŘŸÂòT‹‹„Šâ³ŸÎ"ŸŸ3-§‹'Šû?‹ ~éù ñ݌ȿóSìk±HÔÄ~q‡xL<.žå°ˆÙÂ.QR .¥Å]âat¦¯ã×èIü9G„j:¿û¤•‚Uº0ŒŽ#Ò0ì}t§“Áç–{†ýú©ò˜uÄþöäïbœù½¸ÿ‹YÐr B“`‹=øªÀãfƒ‡[± NEÒ’jê!ø1õmù#ù#U8‰NÚ?Véóêá„Ãî·Táqë1GäÃáøe¯ùqXn×,éó1B¦«Ì\S'd¢ sV }Ýüšå ÝiÇ¿’6=l£ëåkìëUðgÇ,5Sâr»1x£V»ÉlQâ±[±X4«= °Û­yPœÇƒ,V«ÛcvæˆÌDÚ­È£ZZùs¾Ù%ýVü©5j%šõ¨•Ø­Ö +Õ¬¬Ä:DŠV÷ÂjöÜ™huy¸IœïÖ-¢~”Óãסqpöu#È=%Û³7åÂIÝâÆOávÎ>}2³nõÀžÚmX¼Q{÷USgX·‰XMnÞ½âÆ»Ò~yïºäi“+îÍÕ²¿ÇŒÙ–eUÛ®ô³s’ïmJ,«¸réÔ‘Ë` Ÿ‰~ ~Ö+ büjT¶€]].—ßä7ûãæˆÕöÙqóÜuä z…u›)#­ÚÞ`'vfPœ`PÌZ€*`kPÄŠž‚µ”@JMJcŠ’käF™²ã~"ƒ9L./2Ž~ÕîúžÓŒÓõúaŹÓõ#GýÀ QBérð“þ¯áj\XùÙ§‘DþðnùÓßpVbä]÷­=?xㆇ¯[ý[¢æùÏÄ¿ÀÛߎ¾¼±÷îÈÓÿ>x7påBÊm, ƒ¬$Ü3Åd1Y©óUùM3é•_–IX`+A%´ÂVIç)Õ¶%´Aläï+ ¶Ô.¶Kíòjzº‰Þ¦ü\܃žEïÓãÂi” ,„&Y_FÇ ’02AD¡GcJÅj±˜LŠ"I"Ãö K—…@öø ù6¦¾¯Ä·PvWlTôJWxå­2ñBä>„ÛVÅK·2¥Þ@!bÃíÊ_@~𸠚í–}4TyAýð0˜aæÑWÿ7õ4üf’§¨Æ[‡6šeW¹î!…昉 žÇMNú @ΙxL^ÀŸãâ,GX˜ƒŒ0_.¦\ÍNíµ–[ܾ29w–Ãf<™È*œåŠê,§¬ÄÁêG²€M-W4Hn;¤„7¿Ðy" ö+–ⳑ£iç>ŽšÿPPSº6»«ô¦ÔMÙâäüÙI³Rçä.s‹>vþ¤ØIžr¿˜;¾ˆ¸aM=XDV·5ÏM=–Ĥ$ÍâØÑ“doKôH…9ñòxŸÍ¬" HB,ƒ=E3¨.rMoKµWˆ9ivKI¶Ç¢&>IÆÁæõ€¯%MC–K¿…Ú-šå …RK,5–––SÙ2„H*Åèά äPšã”Cp¼_bqYJÌ·ŽznÃg†ÕsÌœP —­âœñɦâôºXèŽ=ܪmÊy£Ï„€™}—§?†·q<íäî:øm6ý1Ö?B0¢Èfà‚Ô“¿W6>Qõ˜ÿmûÏŽl>³ñÊð„l3”7µæê‚ï}€·/¬º£êêšù×çh“ró Ò2’§ún,ºöí?=‰'íè =uö¶Wö¶ÍÕîŒ%îõz^^ѽåê +`gŸ„ÝW;[BÏŠ+”:t¾BhPV¡C÷à{ÄŠ™W+ï`IÒ8QˆEÂ3/`s °á2ÀÇ–DÂ|æ‘ÁÖ ØU±,2e†ù HÅ'ÉoÁ•&¤nO¾Év&V#ì$¨Âq Oá7‘Œná›Ñ÷a½{˜îad<P‡ÇÈô Èäë{NßqizM'D~ù'ÎÛO°¤ûa1ÌxXé,! ™pì‰}l³TǤ‹¤Kê’…á˜d‘Ë@ýWÓj¡Z®VªM ¤F®±´f¹TÏ ÜI¶ÈwË‘‡äè9@ÃòÓ‹èzH:(¿`:&“ÿ†Òag0AtCØá"ìúc{\åÄ®gôØ®rÉ'J ?iL€j9ÛU.ûL؇̦½J…B”'I%áç×dˆ¬ ÄHÅb¢Exq+ÝÎy9{’kl A Î‚_¬€)zÌòÆtÏ? Ö|0pÇt?+œâ ÖÙÏsøÂ®m/ý±­7ò~wýÂÙ7-íY¶pÓhØñ°óÁÄ=æ½Ö½öÃè0>Bž3ŽyÎñœó5ôºõµ˜·Ô7o9?V?v‰QÕn³9,Ö³›"sLŒfsÄAEHÓƒ0°©q9²c³advØ ‹YØoÚí¨íSµÛ l¶¨MÐl?W‡{ha5ÆøÎ$› s7ûù±ÞcϨïÈìíù%¸¨ï(ÛT=x`Oÿzx@E/vè!Éx5ð¾{;‚5^¿-ù†È{7ÇO/Ÿ3}Ižg¼¸ÿÜ™Ëfüd]à–s?&ëW¥”Ц7–b«°VáAXý"¯É8é(E¥ôR! .¡‹„±SèºÄ© #x\j‘BX¡ŠìÔ Ž)ºFa»pTxW„ÄðMÈS@=5b*ëh8%]øGNÕŸ©Ÿ?ú—s#,¨i9L1/J>.Uw ‹"gCœô “Žíã&sÆì‰ÌdVô|Ê¥z^LÈG”×Лøuò}CxM|EzC~CyÕr,æ$þ¾/AL¨|.~.ýS9cúÜŠëׂHÔ,¸Æ‚-c‚ ˜p‘ó#3Wx0Ð\ƒÌOºO|/𘣣\,‰çrç‘g‹ÏM¾íøì\?¬õúè‡b_ëdôrà®Ì¤j:ÃZ ü¼äuÉò%æÉîÉIËâkR7¦>€v&F¢“¶ÏÑ?è?ͶsvüZgWªOµTØÛb-$V$® v¼Žc›c}¢%Ñg‘mvˆîÑBÜÏ>–Ñ…7²CÄ0&2N€ûBXy§ªºãrJ”÷S°k¼qâ4ì,gZ°À8wºÐqŽñEôø¢»ž‡xeÆ'’Qq‘+öO„¾È)÷‚»î kï^Õ‹½gËzklºüÚ˯ûÞªiï½Å?ÛI2¿<Ó³ñª·C½wFNò/­V}’ain°OùLñ(üë~¿¼ü@éÈ÷ Á¼\¹Mü#, ÉøŽ9ÓÃHžY€fŒ~]2 ¼ú±¯q ‰‡ÑB¡-‡”GÊ9| äˆìD÷B0]ø ꇲµ_ e_"íD‹ä4W*G{„ÞèY¨;#.AµÐ®à%Ðç3òèÀ`›ÑIÆþýŒÕAZx³¡ŸùP·îkÐzNO1ú;qÒBú¼P+ÔŠ!ñ´tX>©tšªLÏY<Ö1³bšl‚íǶwí¿Q/sT:˱‹â„¸Ãñ¾ø_$<áºÄõ¨{Ÿ:*^°߸-‹ô޵Ê xE ûƤ^áWÊùeæw”·JÀŠSÔŒS X@ãðM,"7~À€%”mÀ2:„ÿlÀ Ê"#8&´…¼hÀfáºÄ€-h…â6`+jVFh‹‘Wް -·ÿdte7ØO0,ŸÚiÀYÔ>¦¨XÝ`ÀÔ ¾ú[–S=jÀ2Z¡¾gÀ ŠuÌ0`ªt,1`3 :~jÀ4!öìè¯Çåp ½"®Ñ€m(ßÅ<ðÁ€¶T×IPŽ[â0S(Ñ]hÀÊrÏã°åqî.澉Ã2[÷} káÖûWx?o0ëç ‡Ml}=É ë vC‡¡ŸÄ †õMœlÀÐgâ†õM|Æ€a}ß4`XßĈÃú&àÀú&4`Xßä†õ;ªÃ°¾iÛ Ö7í¬Ãúf‡9lf¼o5`àÕø[ ÞTïB”g@E¼t´hƒ|!´Y4ôñV ¡¿^H=h \WVÔs:c%ï¹—´Bÿ_¥zò˜Ú7´™ÌûîqFfÄ(bj(zd8=PÓ ©Úÿú\ò =žo™7ÚòBúkÇà<Æ×ƒq{%ôÇ~¤]eŒŽÿû•Ò 4ÂY&ÛM£3læ²­qXÇyÛËå®oTŸè«Îh×÷{Ÿ¡5ôÝÔkHÙyí©×¶ó ¢«y{jÖo¯=/iúè+9·ºø.Y?:‹‘±;¸ÎdõAΉc ¶‡t.öñö#ôÞÅe¨ëÍÚò¹Å샺É`‰  _öÎçXc5l>×Ní€ÑÂ÷R@íuð ñ»^ÔÀe@_ñüQÌÿÝÖr‰ÑqCcFYš¾lâ,H3@ò\ ¥ÌÌ‚ëe¼¼JÁ•É&ûõ¨JxÏ祵(b0–j¹4õ^DÖ´Ñr}Ÿèí2x~^Fÿ5+v~eF4òÈ:¯àµëõè˜M£ºM—çóöh¬¶Ô5Çy=ªïßVCgö{zï%4ªÙn­3Fc»{¡KWŒZ#}̾oá̈î\;ªBÆŽ Êt×}Æ~n6äñbüÙ…Œc¡1½œßÅ_o¥a™®àšQ§z…±2FÏ[!ŸÕ…œÒ5ò×¥âë#è6¦Å‚܃ ¨m·{ òMc3î/†’ózvý×Ö"dxc}.]{9E]œ³­†§ó¯¬¹fÈbÇÝ62.Ó$+9§[ÇX‘ž1vî(vϹ=o»¿SŒºvÞÿˆ\u^ÐßZ¾þWñÕ뇎èÇ󘀫{¨«9ÇYÿ-£óÑé+Ýí†FÕù¯ïª.C>ÎkÞ eèÛft^>æò¹}åF|/fsB†‡¦ÏF÷÷šøªv|e z¾Âïó=÷rouµ;0Öpßh-ë]ýÏ«?Ò_áÿµ‘Òż¸¯¯£Î­ókïóëûxdÅ‚_áuóÿµç¹üõ.´÷R2¼Ø>°=#=°ødÒ#lðá'¢2ˆÌ4¸²_'̃Xk"¤BÄÎT£*“ý.ਙhÀe¨kUŠJ `‰õþfëþï-ãH]ÁW¸7jk×w…šƒM!ía­¶%¤Íïìèìƒ"mFgOWgO°¯µ³CëjkÊ×fû‚ÿRëL[ÔÙ¶š•ôjs; Ý„òòÂ<¸åkÓÚÚ´…­«Zúzµ…¡ÞPÏšÐÊi=­Á¶ém+µ¹}Á¶Ö¦‘®'ó mLÍä5¡ž^6PQ~y¡–=¿µ©§³·³¹oü×0—ŒAä•y¬Òè¿–—<¤ÕöW†Úƒ=WiÍß:)­'´ªµ·/ÔZ©µvh}€ºx‘VìÓ²´ÚùZuss¾ìX©…ÚzCk[-´'`G窞`WËú±E!mfOpmkÇ*Ö¶8Ÿ§-ì\]/hmjél öæ²Þ{Z›ZƒÚ¢àꎕ0à⤢}¡vF[Ïz­7 ¶6k+C½­«:r5M€l…ÊöΞֲº=ØäkM-Áž`LnZ›zaÁ êÖ³ù·ÂŠtÁCM¡ÞÞNŽM(ý¯njÑZ®ØäWw„´µ­}-œ í+YkÙ}@H0µw¤¬om¨£¯5ØM¬îYŸ¯qNwÂJAúzBÁ¾v¨b šVƒ8ô²ÁØ¢†z8 Í«ÛÚä´Âðí0HkÇÊÕ½}|ª½}ëÛBc9Á¹—êioíà=WA·A ¿i5 ¤/àÊÖàªNV¿¶x®µ„Úº€#ÚªÖ5!ŽÀwDPkvhí!à]Gk »ºBÀÆŽ¦ ¢³»•1K ­ƒÉ´‡ÚÖkLJAvÚXí­mœ½}Æë5Æk‚+BÚê^)ÎÍP÷jFìê&Æ­¹¦ =¤úú˜œÀÔ{B°î} °L½À2.žpÛ\¼ºµºõ5åêLƒæ+[{»Ú‚ëÙ¬uGhmoW° H”•@b_k/똡wõt¶wòÞò[úúº&¬]»6¿ÝØü¦Îö‚–¾ö¶‚ö>öcÂí½ A6ñ|Vø/6XjƒÒo² ºv3¦Õέ^ UÏÒ.›;£rÁ¢JmÚì…••ó+ÔÆ˜c̵-ÀÖ®1³5Ba}œ£Ùb|2LÙœW¬×Öw®f-›˜´Ÿù>ÒÅ„ƒË(¬/l¿@®ê …˜$ækuЬ%bй‚m#hÙw1L:×2q ÁÂ…§{BM}°ÎÍÀÇót±%ì\â(|‰GÛÁÒ€ô®XÝ]™°£ÆLÈ×;Bò(+F3iÓÖÛVW€„{ABƶÎ×wp™]?2 ˜“¡¹@¼ƒZoW¨©”Î×g®;¸´±¶Á•+[™L€Töp…ËŠ{8oùîþ Qm­í­lB0Ç[ÛÙsU¯.¤\yaçZP¨«W´µö¶°q /Ýí ¨@?,U×zM^ƒCÄù1·ùüä˜öê^êåÀÞk õt3è1èæÈ½-«Á:ô„Ö´†ÖêêêkÓgx°’!Ð+Ï«¸Ñ9Y\±6õ_c6± AuóÅ»å$60ö½ÑŒì›Ì/šF {ÒIJñZÙ„Iy… M¦ÅUPX8aÂĉp-+.ÓÊJKÊKÊcÌß°ë¾u3²»ƒ<¾!’ þSŸáu­6N”Yl2öDæÛ1ûÐj^ÅGPs¯¹ ­oÆj6¼¯«Æô:¶åÅêgg-ø]ouQ º™>MÑpÝ4ºƒ>IEé>¸Óö[°¾{6òݳ‘ïž|÷lä»g#ß=ùîÙÈwÏF¾{6òݳ‘ïž|÷lä»g#ß=ùîÙÈÿž|´"=FŸñ?ž‘\ó2ÈuiîäLfÆž\°Ò±½ý+ø³¹æÑ£û‘Vßc{úf¬Yè#¸» þ>Ò÷-¾Jú¾rŽòMX#=øvh$ö¡ñbt|3öC¿Ÿç³Œcû¸8Æ^»†Ÿ}ۉзáÕ^ÅjÓêÚúü‰Óz¾gÇöõ¯à•ˆNƒÿï’Öù²ó5LÁ+L.f¥Â$! \*T åH¡$ Lƒ²¢±}ý صÆIÜ{èÛÎë¾kÖÿÀç‹ÕW±:<é\8*‡W]Ðî›pªŒ8á*Îðÿpë뎯pñÛð:¸ hEëö;Пi:ìð±í¿ ç2{·"=Ö¸škÊàWvëÅ0þ·tÇÿ’ý¯ÑóÿªwøwE¢§!ùÐkè"¯Ýµ!:° ¸ˆåS‹ùmå\ý¶†ß\¡g¡â¬2)‰W:ãôÜSdŸOç£ >…DQ\«!m……$ »QOèeƒxœ·ñiZ÷UìÇ,èÜÁ3Š6 sÑvHïB¢¼´5w°¤DÏ &è¹Ï§çã2a`+ W@Úé¨Ñ\äÍM±EÓÒè<¨šãl…ëHG!½ éSH"Ð5@ª†Ôiûh黼U€Î?™7Ϙð¼A‹ZT3M¥s ã9Ѐ}3€]14™ÝÎáÍæ šÔ"ç¾èAòö@`Z‘”OáÀ;ƒS¦ýiš‡¼ ÉÛ(©R#¤cŽC:IF®ýv@ CBYÿ´qäö3Õä\p¸Ã…Ö8¬8÷# i ´¹zºr_ ³á¸t\&¤2Ù%í’Évi»Lª¥j™Ø%»QfŸVO§ƒ¦ƒ¦Ã,§ó¥œŸŽ í‚tR’„ H)Ú‰ ;\½XI¤jH[!m‡t’‚vÁs¼œ£u’„TRw%¼¯À)ưop±2Ìk+ U³2:ÞÓétRïRx—àò‹i9»_žžŽ0€}»º=q Ï?J,aø{°‚k|‘7y¾žäL,æY±žéÙ=+Ô³=Ëѳñz–­gizæÒ³=‹×³8=‹Õ3§žÅè™UÏ,,Ì1ˆñéÄøtb|:1>ŸNŒO'ƧãÓ‰ñéÄøtb|:1>ŸNŒO'ƧãÓ‰ñéÄøtb|:1>ƒCi,‡UÈ(ñÁðìy={NÏŽ,·gLñ~Äîñ÷^ȯ…´R#¤|H9|Ò­¸s†ô2¤µ: -…t¤.…T© #çq| 'ûªi?¦#&°\.PÀN‡x’$°oÖ‘[Zc¡ÿ=Ù«`øq”-`äѸçaÔÊóGgB¾ò%ÿÇ@Î/ Ùv>È~Yh ;²•ÙdMÙ…²§1>ø~áfÂK‘Oa.A9ø^ÈäÜ Õµz¶h gd^½‡Ôì{§Yp j%nòñ܃rÈ#Þ/|CðþÓ7DÙëý<§Úûq΂÷z?ÊYï}%{ˆà€Ýû§ü—¼/§½äýmv÷™VÀ X¼[_òþÐwgðîÍnCñ=9“¼?Ìaȇb¸_ M×ä<âí‚®`¸N/ÇîHÂ÷Bm»ïÇÞPÎõÞFÜïõ6ääx—æáÌïB/ƒ»%{½U0ø\càÙ9~ïL|£sÀ;-›÷€p É{iÚ ï%@CYþ“Þ’œK¼òOxÓs*½ãZ¡£'¼‹cL1¦²þ!œ(•ûÿSîï‘ûËýåþ¹ß/÷gÉý™rªÜŸ"Ç)NEUlŠU1+Š")‚B¤Ä±ßµÉe_׌“T–I» V‰þ«Ìü»+ÍCÎp,­"U‹¦‡'ù«†äèÂp™¿*¬Ô|oÙnŒï¬c¥áƒM¨j…>³(}›/¿",¦OÇagªªî“ÍCÕ.)g nNbÿqÂØsóIF^W7cÙ~ÐÑ ÷Ö¡„5î çTGù¬™¹4×1¿jåû«jÖïñxhPö–Êp»nûÙm?»u§„·U-ZÞ™R.b@4¥®*|ë"mù²}ÄM*gî#.–Õ-Û' wåBV. ά««‚%æx`ÝÜ€‡2Xx6i i6…ã‘Gt=lIÃ_áö«SpûÑ´ ××qèSIÖ°h2$ÖÃ%iîë’ö ?Ä{°BqŒQ•7-o«™gU6ö?*÷u—¤%íÇU*;`Ü‹M¡··Ïß;¶à¢XÿÚ ¹+[gên#A÷«yêëíc¯ÞÊ™ðׇªÂ9‹ªÂ“Øo»Ëre8Ð8³ÊòGÊ(åe»M&ȃ3ëz—¿ouŸŸÿpp`B¼†¸ ðà,ÀS€›ëÓ»£‹½cš™ûs;¸?·ÃÛÁ|ãxp)`Ð`Íà&À:À¿€Y€ƒÈIÚÇ/iÅ0‰6æU‡ü0cVÑ™^µÚ{GŠG¸…þ?ø: endstream endobj 62 0 obj 17910 endobj 63 0 obj << /Type /FontDescriptor /FontName /EAAAAA+Arial-BoldItalicMT /Flags 68 /FontBBox [ -559 -376 1156 1001 ] /ItalicAngle -30 /Ascent 905 /Descent 211 /CapHeight 1000 /StemV 80 /FontFile2 61 0 R >> endobj 64 0 obj << /Length 383 /Filter /FlateDecode >> stream xœ]’ËnÂ0E÷‘ò^ÒJlŠÄSbчJû!h¤âD&,øû&÷šªêtì™ñœÌDëýfoëNEo®)Ò©Sm+'׿æJQG9×6 ´QU]vÄ_y)Ú0ˆúüÃýÚÉeoOZ,Â@©è½¸vî®F˪9Ê_]%®¶g5ú\xt¸µí·\Äv*ƒ¢îîã>ñOÈǽex Ù[ÙTrm‹R\aÏ‹8ÎÕb·ËÃ@lõÿv’0ëx*¿ 7Dë>:Ž“`S ˜² áÍx3˜1'Ì,='¤€% V„`M˜6ìm Ø6€Ã:æM|L¬Ñ›¦OŠv4}<ª½Ïà}¶ú$,@Ÿ”¥é3%Ð'E£š>ÕôÉðA´÷™¼õ>ø¢Úû¬0ôIQÀøùàãç“p¸!sÆjþnQys®_ l0gX™ÚÊï–·M‹<ÿó9ž¾£endstream endobj 65 0 obj << /Type /Font /Subtype /TrueType /BaseFont /EAAAAA+Arial-BoldItalicMT /FirstChar 0 /LastChar 34 /Widths [ 750 722 556 556 277 556 277 333 389 610 556 610 333 556 833 889 777 556 610 666 277 610 722 943 610 666 500 610 610 610 277 556 666 610 610 ] /FontDescriptor 63 0 R /ToUnicode 64 0 R >> endobj 66 0 obj << /Length 67 0 R /Filter /FlateDecode /Length1 39968 >> stream xœÜ½y`U¶?~ï­ê½;]U]]ÝÕkõžNwÒY: $$D!J$€ " Ä}QTPtF\y£Œ£¨„M¨ ƒ+:àˆë8Ƈè8Fч>g$Ýßs«;!Ñï¼ïï¿_’¾kUWÕ½gùœsÏ­\vÉås-E Rg/œ¹øÕOÞy !ô&BX˜}ÅeJtîƒû |!ÃMs_¸ðÞZç8„L ¤ûàÂWÏþä‹P¶7!4}ļ93/xìúév„.^ ßQ7îï}Bõn¨Gç-¼ìª:gÐõ¡~Ý‚E³g>ô[ïu-˜Fë g^µ8eÃ@ýÔ•_Ì\8'¶Ú:êÇàô)‹]zÙdÏ!tç´ñ%so^ó8õ™7A†_úc…¢žÖ Ãêô£Él±ÚJì/8D§är˯Ï*¡p$‹'J“e©tyE¦²ªº&[[Wß0dhcúÿÃû|îB^ÈÌ,@(°øù$wC¡?כϓ÷áàÉÅOág2üÞ£¥“ñøBŽ.@ÐBt'ú ´Õà?¢Ç‘ŠìÐ~10ôÓPZƒ®Dï¢)ùo 5„A_£4‚æåsˆGKP_Á8«½ƒæ Õ¤‰I±‡y+ÕÌ|*‡o™Œ~\h|cYÞ õ-ÄOšà¬Éh/3ØÎWæ¿Å»Ù×ó³Ðoqy}(¶‡Y”ûe~eþþü¨cü½ÈWåÂYSPº]w°=„ÞÂmdÙ•_÷4 îa zíÅ)±H@gÁÑ¿B÷¢íè´}€>ÅÛq)^ŠßÁt¨wOnOþôü¬ü"4 ‰&¢¥ÐëÇ1<œœËœË<żßû_¹Cù|÷dtº ]‹V¡Õhz}ˆþŒb&“Éæ)äEÃйhŒæ¸§ÇÑëè 6â,ŠU| ~’\Á2½{€/Yä„£þè~Óõh#Úƒö£·á;¿1e°ŒSx žŽ¯Ç7ã;ðÝx=~?ÿNtä†and_aÿž{/oÎß—®ëE>¤ $ÌL:æó-ô<_Nãü'’"i³ÖÞ\®&Z~Iþåüû(‚pì04žy<š w}5ú%Ú‰^sßBDGÐÿÀ(1ØŒ GðYøl|9ÜÅSøkÜK$˜¿²€l&˜ó;•}ºwkΙۜû:—ÏoÈwåÿS›ß:¸N+Ì@;ZŒ.Õfl\çetý }×Ðã Üë<ž÷^øþƒø8“‘Ü@ž$yf³šy•Ù{sgææîÍmÉgó㶤C2ÊÂïP ¦)¨ ¾û&ÍGÐ03[€zÞC_a7àJ|:>OÃx^„ãN|-¾Fõq¼ïÄïá?ã¯KôÄ ã”"³ÉMd ÙJö÷Èa1g3Ó˜NæZf ³•ÙÏ|Îrlš­ddzìÕì5:¤cô’ñÍã®ã {gõÞ×û‡\EndîâÜÊÜ‹¹÷rŸä-ù]ùO‘UÂ=¶¡ ᯇç¿Ýúxîñ¯è3ôw˜óoa,l¸ã 6o­pßãáΧâ6<~çáù0þKñ¼?‡wãñëx/þþM0Ü}ü6L!sáî#Hù~¿#ÿ`âLš©fj˜f¦žfs+<Ïo˜™OYÂ:Ù*ölv ûªŽÑ] ûµî~ÝÝkº/ôœþ¼¢Œ˜¹…Ébzž‚þß„À¹?ÂÜDÉ\Ä262 m0ëû±@*ð @§ ÑJ¼¥q/ÞÞ$w¢:<‡yá¸Ü[Jðñ¼‰ƒ6áÙ×Ù× ßô"Œf%H(äS€3CL¨¦éHè¿$àˆ'ßáëÈt¾—ù^O†£ hs)ûŽÎÔÀˆíiÒªbDº&ŸÍÂŒ†š/DH?=¨»‰–™w˜cù¶|(7CW’û]£3¤ÛJà¥1è#,áóñ$6OƱùü9hÙÈ~œwa+¡·óÀa¹m¸ Gó îÌ[ð$ ðóõ÷®eW²7³—³€ò?‚Լ݅îC/6yôVÆñ Íé {.Q‰ªQ-<]3Rét蛈ÎyÚRr.úêÉû zm 5Æã|8o.ší—‚†ºÝü¿ Ý2à×èwèmòy˜ ‘[ÉËä rú}ļʨøt€]Î.Ag£(š„påz˜¥ œw[þ¸ZyAúgKîóÏ¿—ÿ}ï>ø¾ßÁ½ß¥þ®oEH>YmiÖÔ8tHC}m¶¦ºª2SQžN•%KñX4)Á€ßçõÈn—äÏÙKlV‹Ùd4èu,C0JŠŒîPºâ]l<2fL9­GfBÃÌ ] 4|L—Ò¡¦ >R…#çžt¤Z8Rí?sJj*O+£"J×[##J7>wÒ4(ß>2Ò¦tõhåñZyµV¶A9‚”Qîy#•.Ü¡Œê}ż£:FÂ×m²˜[#­sÌåi´Él¢J]®ÈâMØÕŒµqº‰ £ nªË9ªKŽŒ¤wÐÅÄFͼ kâ¤i£FzC¡¶òtn™Õ…"#ºì)íÔª]¦KßÚeÐ.£\DŸ­T6¥w¯¸­›C³:RÖ "Ìœ>­‹™ÙF¯Á§àº#»\×vŸ¨Â— ­Ó– ìõ2+F¹/RhuÅŠeJ׺IÓö†hÚÖßç’ØèŽ£áÒ·Á Ž;[«‘›Û¦uá›á’ }úT…ç›E[:æ+]¦ÈˆÈ¼ó;`j<+ºÐYW‡6{<êöü!䥬˜<-êjñFÚfŽômÑŠ³®Þ"«Š<¸§<½‰ã »©Ä^,Xm súû´’v8-;«d1½£Èé@]ÊlîdZž©&sЊ٠pü´a8«ë˜‘‹ºL­+¸¡´žß¥‹qeÅw( Òóåà–™Å}ŒûÑ"¥“~Rƒþ¾rW*ÕUVFIÄÐ s ÷جÕkËÓWt“‹"‹92>4ÆvfÛÐ (D'xe·ŠfA¥ké¤i…º‚fy7#5“jë"´gw_s íYÚ×ÓzG(y«fP8»Œñþ?;'9FÍÚ…¥ŸéžSèwvdܤs§)£VtÇvÜäAµBC_±ÔåhÆxI±D¼ŒÖ D9½ÿ`Z™fíbcð§×ˆú‚nƒ¨RkÁÊè.®cL!m3‡BÿæIÝù£ô,-;qZñ6»†¦×ÕÝžu7ÌÆÉ¸Éç®XaÔ7$Њ£#Êè+fvç—Ί(\dÅvñ‹GuôÍhw~ÇJo×èÛÚà!æá¡@­ØÁ·NÚ¤â[Ï>wÚvÌÀ['OÛ ¦µcDÛ¦(ôMÛ®€ÌÕZI+­)´†Æa ôÍ€i—w»ŠÐR­—Õ´úìnŒ´6c_F³»I¡ÓÚà§ Åð úÕ€FoÒº±u+´êXZ`Y¯ƒÂ3 C<&m{#Ù8áZwêLîXÓøÞ¦3¹ï›Æs½M¨¥©·‰~ª*C|ˆA‚øW˜ÝÇUú)ìn>huþ {³•˜¥NzÂðhð‰ &nˆÙËWz®ð.oöÜ%ÞãÙ`X'>êy:³Íð\É&q«g{`oɱ*§”{fîãïök+VTÜ_ñDɆЗ«Þ­ú´ÊXî&O«žX&‹…CáRÁïp%ëB¨.‰™«)]שçâ[K‘¹&ÄXL!”æÒ‹ÓL:Ùhµ–Šp!¿vØ¢„T›ÔbáL¨%4!4#ôphchWè`Èò4¸VU†ô´‘þaý.ýA=«—ëËvº»qúf:2í85¾÷ŒM{'NÑaB-=-==ÂLO¦J-MÇzxaˆà‚!" ᇠ®wô»1÷ݱ=U•h\—|ö¸®(é.dÈÿ€²ù£¨>rþØÁXalÐ~ÚP{'jCE8t' À!ŽünÚÓÙŽÛCµúH8^›­«©–\µÙx$l(4Ô×ÕÓ6'OQaâZŸS”jªëê™iÏîÿ͇Þzë„¥KgmRLœË\2û‰o^ôx‚/7þêôg/<óÊKîœ}õ}k]óŒ»uÔÜ!f·À›íž²g÷p97þ-ÏMh<ëŒySg „qyî8YXÌ‹&ªI1yd"{X«Äaô.‰Óéºñf³³Ù±®$jBÇÿè°ÝÝX¦ãú}ûøÞc‡›¸ ¶–&8môª*q; é2¡6K…‡vI‚D–4=‘°–²áçŸÿ ƒ,”Xc¿Wñ7—æò¹§ÂV™7[_Çc]Ǽa5ónK8÷LøePê8 Ô2tt[Èl±·8»óß«i(¼êü8öaâPðPèï±/†¨3!TÆÇÆ'¦(í±sóíóå‹bËe«ÔÿV½Ô!¶9Îq^››øÞ£Ó{dÎéIrI!æYÁÝÏýÚ}g½s=‰ ¼]½`êKdŸËnC oA·ò¡¤Á²…Õû~ë E,%ƶuA¼:¸;H‚ž´Š«vS˺8¶ÇƒñÕ }äÔž;N!Pßø ǃA롤×s˜ºƒÃ4‡ñãi(®³½¡ѤR¸@0N§ži‚’Fehí"jT›E5ÕÌËnÁáÆ.ï"úwï|é½'fí=ËÉñ®9¼¶7÷#¶ì}‘±ù(Õ¼ô¸¼§-ýâ73Qtñ©cæÕ½˜ººÀ†Eì¹Ì•(…ªx] N›&˜ç W Ë…_ët|c[‚¯E‚Áp$ìó:w§,TÕ$ºÝN1ìMÅèJÏŒ––ƢᔥDÔ¨Î`Ø+–pæh¬¥ôæ.ÄœÞp£Ïç5Û G Äà)G¢µG&F–FVGÖEŽFô9Ý{‡&æÚ rîH;PÝx®‡£œL%Œ%?^ãâ!ƒø§+›ô¤uò´íçwoñF³¸;h3ïÉ¢TªMãz¾ÈõÛb‰$ø4ï#ÞYWWdÕ¾1ð¡BC¨Àá5|‘Õ yô‘Qãn”æG$+×ß¿ _F' waÀ#÷ÞOSfÖ»§Ìñ8dƒ#â™¶!—¥üê`ŸsC Xo)Ðè_F Ú¯^d–Ö:I5AÎ"³É+äÇòGÂGòÇÞÿrü§d“}e¾,iŒõžœî=7¸È» xƒ÷6ïZßÚÀ³:ûåÒßfðºïõ€Þø2ïQ¼?ä2°!Þbìi\‡ðb „nü©ê +¸qˆ‰»Ä}âA‘åPÙ“{|O%ëžÃšd…Ñ… áz´´Gp³$êlõŠÁéÎÙ/01ü…¤AäÜOÏÈP[¶üøï¥O?ÿÃ%œ›«üîÆr±ýµ?bóTùÝ5kxðƒ¼Ú\c—yž«žŠ½¯?‹õ¹ÿ¾qåÓOÞNéù.½Fö.”F¯«Ñ½ØæõxÉ£æmæ—ÌuW”ÜRrOÉïJ^±¼gÑ»ŒØ@é™Å—¨N#ËŒả&'Oý½¢N¶&»ñ#*hŒF #½5$[Ä[A?®Šé´Ñ¤ÄC¯ çS|‹}»|:_7ùtKyÙSîŒÑa™&î˜6P0DM\oOñ©ðìódÊq€çäŠï¯î§Á"úiOµŒa;dªÚ£ªEh‰ª&;$ +RÀ×EdôïɪÍP'•Åø§8¼Ðl€ßH,T]WG5{waEq/M;;iŠ?êϧU›8ôœÜ?°µý‘qOÜ”{Ê]FÙæÀÅ|ár8\o.ŸtS¬Áã˜|öUͳ¢ã~'Ðop¿¹ðµAXItIÌëøuË»äϺ¿Þµè/6\Ä“9d{‘ñ"ó|Û~Žc®Ëè 1ö À•ÁBÝ åìr‹–—¸´\µ9k»æP%êØÙM–©nЦWá˜E¨öééêuúnüÉ7б6æ0Ö ›zzÛ;S4G--Tk,o)²üN$å!1l+'–ˆ®ùO }²Åà ýˆ HuÒɲH"çmiÂSåî°Z,"$F3$š@û—ª_°´D˜W M$‘w5‹4qˆv‘±G `6[98ÂØƒM82}ÐOÑ 9“=¡UÙ¦\ÏK{r_aaÏKØ1å¯ëÖý•~ðÆÝ¹£˜ßµó¹£/>ôŸ|àÐA˜›òÜ ìT˜›ªÂåjK•Ù>$ŸÚòIx i·]€aNôÛ.Ã×–]Raùƒ~·ùCǦVÑj6ÊLš¹Öp³–y’ÑK>M±Ê¿,ûüaÉi×êÂk%‚`/ ;cAZÎÂá` ödÆÞèô5J’³$²˜“!¼†5 `cLÙØè©I£%`÷OðÏð/ò³~¹úü„²M?ßô4µî)È%Žâ!ÿ. ó¥ÖÊ0ëå0ë)«MÁtÖ«òÙ”ˆôϹ6ãØ´(0LD¢ûžÌ]xÀÔà²qO^~ÝŸ.Íõ>ÿ×ÛÞÔØkÑ öb|çÞµ¬ýÍfÖÚó¦_¶ï’m¹ü³9½¦L¯ØF*Ìrݹoÿê;÷ï½pÌݽÌ,TŸS[ÜÈ-¸Ã)[ÈU‹kù 6Õõ£ãa‹É1Î16<Ïã¯r\¾Õqkx;ÿ¼cGø•ðûẮY-ðÕ3Gg&`³ex›ãÃf^ð†K8°6€Ùò†#©*8dkEe®èÆ.ÕR]QQUNU;L„ž[¢Ó­Õ„aØ„‘G¤M¼«Ò…]‡Ë%:ÂGuY”¶.L$2‘D" —EÂŽêj%#‘0/ ÄE$8®†ÇÈÐ &d7z½b£ÇÃ5šI£Ù¤6–U5¦Re%(01@Ž˜€';Q¶&§St‹u‡tGuz\S¶‡Ùiär¸½pWg?ðjê¡ Œþµñë2cEJw=·gY…;™û å› Í€jûIõŸêî«r'm0rMF0pšB¸@+@5Š`ܧµ}¦®Y»FxlNéˆF@x*>K#¢OƒN¬èýò—uù4±m`lnÁæ4i rÙDs·Ã&~|¹¶(Ê ífö)Ô„ãjÃmÊ} Ép-ÜŽ9Ý::zŽ¥ÝzNôw–ßEŸÓﰚ؈+·&"ñh]T_‡†¬F€YýuµªkìÕ¸º®¢º:Sá¯5ƒ ®Ü.w3ÂåueA?Ç„¼MñºL¼nnm-ëÅJo7¾HUDÑAÊb¬)0·¢¢<ØÄÓœˆÛA#1ÊÖ-:Á÷𢹠¸>(ÒBY>sXc}Í")ØsÔ0£d8i/H€B…Û3Hè7#.ÿ%Ò Hç¿@Iø”æ¿Ø•ÂRD$÷ñ­TÚÚ¬@ÍÃlU‚Õz¨²ßðÅ©Óf”Ítìš±ì­;&,ÿê¶½·¤ªAyÖ¿}íe;'Õaô×3nšš;¨ÍßݘS¼9womÝÄÕ›—ß·ëV,ªížÀ AÙ埲`ÎíW¬}û{¥×ÃdR &fô<˜Ñ6 °ƒ¬fv›DJ%ì1ÚMšX¶fŒV«É¶ÜZÝ{¦Ëëu»ÂDˆÖËQGG+ÑhH '°d•P#J˜]îÆ` `7š9»^ 1ÀÞÈ%u“GTS’ãã>6tã¿o)=mf¿ª¥€åX“fkkÖ¿3XN·ÿßÕŒUjê(ývàLNp°z]ÌÁòA$èÅÒ¤Ps\—£8±Ï#'Ì«â\ÈRÄîšC#1njX´þDµÏŸqË“¯]«ž­1ØËóÎ|kƒ;¿>¦×>Ð:írÐxëö³æ?W(ÿ–r¸hÏg6ý‰¤µŒ#ÔGa$½^ǹ$‡³Ù¡o2Q/B(dÙ÷ƬëóR£^ ªÑkn ~Ÿ"+ý¸™8EÁU0éq'íÿÒOñí¥˜à³"7o¶¾‘ë~t}®ûu«™—-a<6‡6“ǘÙ?!#âQǦ]7¹Ül25™ß7í " yAµ*ü.~ÿš×ñ;°„ya‹¿ìÑm•ÆEÀ°Ï‘µH@ßà‰H3Žõp½ß·÷PÇAþcTô…˜‚OàD®5Z¯È²¢ÇjE·GѱÊyâÁ`)äp/ûò™ –‘øõV±Å7œg 6tÑÈ'•'ëÿ£áMÇë#þÓñžô^óŸGüÝq8ûùˆãŽcÙF‡^Ò5›FNÉÙì±2|Ov§Ý2ÕqnÃE ó¯i¸¡qyÃòÆõâfÑ|Gã¶ ™dL%#ñ*uXSÖã¶—œÖ!([]a+êì%VÆŒ^n6,ćZÍݸv+£húñת/^ ¡FÔ!¡ ETC®šiL:C*E®`TµmQ'åQ­F7‡,ç/-° ÀÑ–¬Íþ1œ‚¡;\ðWõö ªºÚ!éå‡dŠn?¾èú+Ê=êžh¨!(¾˜#æjvQ£wH×+# *µ¸ƒ$ò°¡þ¦ öz›‚uA$烸Šòg!Á´©±RŸ7ak£˜5ûžË†\ÀR#ó_nnëÚn KM¾†Btmg;@ãí¨p¯É&µ4Š4PìæœPƒd$…½#Eº#E0q|ô{`dèAÏR°/ÒdìÄ$fE_£K¢¿E vdÑ|„> ¿j³‰x4^ðå1×Q£Ñ­yšÎZvû™£+oÙ8ræŒ?¾úê£ÓFÕ¢ »"k=ºnÒY¹Wo=ãÀš§™”ßã ®x$¹)Ñ0$UÛTê³;Ü‘ëÆ\üØœ°Xâ <ðÈΊ`eË5#ÏÌd”켦K¨nm¤qG ‰#x†Zµožt0ŠY±(VŦ”(v…Šqƒ0Ô1—\È_$^Ù=áÔ .`3§ Ù8[ÆÆØÎì‡hGȼ N/:³"ÈÄhxL¯ŸNôz†„M{´©ÅmwÝÄ}fÑË%:x‚±"ð¢ŸBŠ4°Ct˜‚.ŸÏ À @CAW¤QìÆóU‹ƒ4fø~#ÏãÏGlRmª€+…EÂ:a¿À Ïã 9bÿ±öÎ#ÇÚ{8õO@®¦Lf™®"µìz mAæþWê”Bí¡dטª9¹…tÝ‘{ìM·6Òt%ÎÆpÅmZCSP–ƒS1i „úid{_™ÎäøÞ}:O.‚`:¶ÎÃ6“A™*Ì^ƒýäÇGè×±íðu½û(ÄÒ`A7€NÞ@ãÏPúë3§—Í+#Æ€F:¬Ë ´± ’9o¦¨’ÍR¸ÔÔfö–ÒU‚\UÂ!1€¬Ñ€à¾\A“²”FfaìIÇBK9ÌuãÛ¶¤Ê–ö)á΢ï–:pš¨€þî9 Ç~ÆVj§ã:®K*rþ–£`¤ºó„Å´•PÄÄŽü(žÿlKÄ•OXÇ}*4¢­Pnµ«OÃ:Ú­¤°p×_/yûê«ß¾ôã_kõÅÜóë>øõ=°Ÿý¸*ÕÇ^»úЕW¼æ5ü‘¦i_[÷ñÇëþË_Æ©Üò6®@&T£º_BB‡ÐQÄ¢gXüßäEô'»!h †çð½ÈŒbA1î=\˜¿vÂE§?¦FòûÞ¸apEïÕÙ¬ù•S[¹/SëßÕ¿k${ô{Œäãfýf#ÓiXj ³ /ð2÷{×ëɵÁ-x+a|ÁùA‚0KHÀ(æÕî :‰s´ìtºå°Ìhø+=½2ÎT†“¼¥@%¸d´¹¤Äbó…µ(Ÿ‰M/.H5TÓF[íèªÚÚêªpucƒïÀ‡Ôáð‡XC²´8Ûl2+žƒ2–)F9RªVW®«$•ò€hýv4Í´¥7*÷[z¢þIšøÉÚÉ]?ë %%z}:£Á¨7½OçMdôS„SešÆñö™åANýÏM^±àÂî¤.ÄÎööö‚ NÅ~?¡õa·lÁ­ýSfùÔiw´uLh8Oq¥”6ú¦…g_Ó9C3œ¾¢é ­™µ¤md2°òôÞ¯ûü\„i»¶õæÞoúëÛû¤CC>ÏÞ r¾”I«ëK¥„ëæ i½«›l—¶ºŒˆpd‰´JÚ(½ ”r’qé"ûcdN7ëv–’$[êL¸ØçvŒs*;Uœæœ&O+‹/fç9/t](_Xz-{•ó^é׮ߑ ìïë\ÛÈN¶ÛÙåzV~¶ôuéUן¥®¿I‡])‹ä•R$%¥\Ëäe¥OJ;¥Wt¯ˆKŸãÏ]?¥\¼Í¡‘ÇeDŽsˆa›è %hSzq£¨U£ÌQZZÝeG—F Hý™kK£ÑDi8TЬzzBr†i‰i•‰±›‚¦ &ækÞhÚe:H°É´Vg2éua«ŽU<šÎòû3²ßï‘Ê쾇H.¥;?V­v²Œ"êXVqŠ"(øRPIn´•L0a°âvAFŸ`FqJp„Dv½»ðe kÁð;ñ!5¢É3“Ys¢1äiT6}£5¤(6›U¿ÈÝ1ˆF5ŽÖÈje­¬–¦²²K@â@"{ ±óY¹Qí(Å¥;ñc µ]x¥ê’¦µjH–Ðã=ލŸ%Ýø1Õ¦S:œØù‘]#6êÞm®¬¥Ù–†!Y­š*Tá2Zß åp¾–×Ñ\$WV§:k—èVéÒMÐÝóø” O¿ooïGC=‡eîp»‡ë¥•^÷™ëm÷¸{ ÇŽÐNä.p4ÅšÛ¬‰Ã´ÐÛCõ¯‘º;t û EÿhäTêç< `¿ÎÎSÛNmÔtó {[©Q6²Ü ˆˆ/ &Á òyD"GÃqRsë¼íÝóžNRÆüŒ&ß³å‚îUó^OðeâRL|½‡ñý=—ˆ½_’ûêðí ƒEö)4ýY-Vs†wBM{Í•Ò-Ò2ÏrïmCÖŽ0Ÿ®ŒNî þ6øøðßx×uÄõËàíοÙá®A¤¶¥Ôä°F°t"Âõ%`0ÙÂ*«ojÊò±VËJ¶be" µ2,IC¦’¸±£>FM¦€S«â‘¸:|QrIrUòá䯤,wà`ŸÃ Ðÿᘩ~ìO­‚â<áÿ ð_DÿU•·Óa­ÍžâpŠ2&ºŠ0¹$k˜º¸äͬ)@Á…uüjå£gtÌÝ0|jÛ‘?üù—ßíÙùÐCÏŽUyïÛÓ§¿óTÛ¬¹Þ xÜÞÉ·¬šY}VM÷ù+Î_½wy%íú<]ÓóЂœžÈ˜17ÿêºNð<èWIÇ#ùе,,W;ž%Ï–/“%6nš"Jo5MÓ,‘|ò=NgØÇ¼ ,x÷3>½ÍjFx'žç%,«SœD,ÊþIK(ºÞ‚žkùÔÔ&tR®¡g¤ÖqÒ’I¨QtõuKðXmÔ­¡Æ±ßQ Ôñ~˜›T°ý‹zŒ úd×çn`oä@58 V‹äãÐ;±/C‡c?†ŽEõ'–ÏÎÌ®¹Æv]²³æ¶äÒš“wÖlH®«Ù(!F*3giѤÓMa‚©*·Â¹žçJkªBŠ9Bkâc#Ñc=.õ+X1›9Ó:S•ÁL3LMûL:“§¶"TX˜îа»"û"‡"G#lDΖÍ´$ª¡Eê*À”×£9×ÿ+ïzûINôÈ›?†<ùc›ËŒÕÝù6Œ¨jic%Í’ÖÚX.eºó_4 ø)D™àÚ>fçEC éSè.ºFXKQ$©Í 5Õ¡#sãËš4ê^<}¼¦º¿{eBZöîS?þøÔ»ËöÞ~ûoÜ~û^òš&ŽoŸ<"}~©æ);ãô²áÇ·c¼mF¹qw¿ùÖš»ßz‹F±åzñ4@é<­ÆyKÉ·U[ˆQ÷-ÆÕF‹™3 GMœ¹Ò<Ñ̘eaÎã'è «é‚rô‘>šš\X8TXgcïúç.Êjº/4!5ðšUåä;à,‚ÉÅ-p\ßµ÷]ûä+ëú×ùú\˜Ù«­’;Dóºá”Lÿ)¹N\y=\¹ Ý»í]áÝ01€Ä{6P+…}ál€J? ‘p´‚8Æ®KŸ§¶Dq´›¸·!Åxžj‡’BŠ%TX°º(Ø”<™Šh(¤@ÎCwoËxªIÞ§‘&0VY´W©Ö‰º¥º_Zo¬ZgÝlÝšz)u eví&ëk6e+P®ê&ì3…+`*»±ªz0X{ÑÒ0е'C~„E®(wëMFs˜‚sJcųO3çîQm§ê\ìÜïdríåÛñ›ý#Ø®-ÌÑœ„MÔ· JŽØ`ÑÖ>0èú|YÊë+ó¥ƒ(åM€÷7 þÔRqM1ªoÐ):‹Ç’ Ö¤½Ú’ÖÞghúÌ“w\¹¬ÆéŽßÌûÅ•x¹¨m½§ FÎKæ? %Ap1®£–ôié0¶"Œ­µ«ÙYÎK¿t‚ ³N£c £7ŽœàvÞÃóa7‚CXá9n·‹c8Y(ñé¨üŒ¤ÿI)ç`ÿ-•ñ}f(½{¶¹ï^p¯»@¾&ej“½ÞÞP2Ä>ÔÞdfWí­öQ&!n­³nõnN³ \‡Éß,Ã,ße†Ë|º:Cµo”a”oŠAWi¬¦ÁñƒCñÐÑÍC‡k×ÖPŠ€' û…CÂQE'¨#Œ´¬Ê¡0&áÑŵպÊBc WCjFgjj*3áºÑ*mœs°·ŽnimU[Âå} ^Q^ê÷鱡¬^mD£õe!Æ2™pR,æ4ÛJ—¤k+¥¥‘ŽÇý%§õøÒ8‰oF¥¥™0¢æ]Íûš™fù4.R],𖩦þ¬ÏÄl*®Âõ»/‡ ËÆ<©ÖÞùSF§€µ¤'ŸEëS)MºÁ´gu–X’M±N/›]A\ª+ b·Õ£¹BqŠk¢þO°GÛÛ˜¤ÃÍÈœÿ ±ð1ä?‚k}Fî;}z wj~O½O³¾»Ó;Ù ¹v¸ÝáÔ`WÁ‚=aÀžd¹ê† '1åç/>+ÔpéÐóêNÓ,ÖûϬ©˜;|´VœPUžÖª5B“ÓŠ6í”KG=ªñŒs{·Qj&¿Q'šÓûŽV¾³uª?yA¡2À¼%¨póTàH*ÅÑMÛÑÒo:ú$Zwȧ,K€Ë[”¸µÝÒgo‹‡LJSÇUãCˆ1˜,þ]POôž²Èdd›†ÚÅEâA‘åäÀ…þî[ê ¶èG>ì>\\çû÷VøÕÉóM¸ÒR=­ôœÒ J¯>‹·[ž <“Ø£Ûk<À~l<¬ûÂÈKl®Ö ³´â –Óçà)ºvC»åÙG^%Ø‚õ^/–¼¬…ׂ–J’BI /ø-±­—Àd–&Ó¥¥©´?ffµC 5ŒÁÀ2~3]ȇº+¥-âû=Ñ­‡C5þP(à÷G½ 8àóŠ>Ÿ{‘#Åñh”t“kžñŠq¯‡ø ¨š±ÅlÆF¿/$V½¥ÕX­==!=#½(½*}0­O{*¼ôp‡0ñȱÊqÔÁÚØ!—½¸Ÿ:A¤ƒý£…}UpGú$ÊÀ}M÷-«HiQTØ(–¶`‘÷AÂy[è’F›æpþ÷D~ÆÙUU l{g(‚ÊÏTƒù“œÏ,YÐ{ÏýT¯äöjn'm¦?& ´PJ\§q)ë:>lpTÕŸ1/÷»‘5”v¼ˆÒÞUea|Møðaæ‰0ö¥cåYwwþ€Z’ M\š¢<ëGs‰B¹ôV¢:».0^à:;¶p]ê<•"<Õ_ÀuE0çé‡wvO`Ýsä0pvâ½ÅE¿¢+d§Â:È{´™*B»~¿nï¼Çû0]ôuñ‚Õ4P×|®>ÌÖð€ñ“M–'fOk­ñº\Þ숫Ζe«¹㥛ñ¼†±,c² ‚»fä¹{5Œç5Œ—»0žC°š¾ [ÎÛ 7äËÄÌB6@"ÓT~wÉþ’¸C%㎖üƒ3¸Ýø‰-•t °G57#ûs/Jl7–T›%[ò'»„¥d¤_¸`XP yvŒ®‡ÅÂZî á΄°¾øtdr¬aÂÄzH&MÇÆÜ§N™w+zfÖÄúÆ3é§÷Í\eX8­jgÎÁ+Ø‹+Ü«Õo6Dq7ùAõ:£v‹ìñ³ v!#´|}Å­ B›¸ï›Pf|ï÷§¬d0ƒ×5ªŽ/ÐÓÝ4P&Ïö9Xrïô“)Æoå?a0úîÇ2`³ÑÂ~`‘KŠC—Öⶪ*cƒžžL‰6LœTO“o&4 =“~€â9o/€|Ká6Õg@w%:Ã=6Õá¿‹Ûïÿ‡û)óïÑïýΉ¬Ž«qrœèô[R¸Œ6ùP|qœ 8ïˆï³ñx2—¥üá²0ô÷"¦k‹ ý’Ä``ˆßBpH¦§ûý5n¿_vûCn—“`€;b„E—[t¹Ü.©,–ã!1neâ–p(dµZÂF «ã•î‰î.÷Q7 ‚¬$*‰gœ3œ»œŒê[ò.ìÚ‰$²KzÔ8F[:;Ò®­œµ÷´kÀ~ ïg—ÏNqÕâ§û—>ºÎâêYa™&¤Å¶éûWÐNn%ë/ϵ w‰6›èÂCÜ[‰Ãõø=¾q[„Š7r•m69­V§©—˜/Ö)Ý"@ˆ} èDÆÇÕüëö—e"‘ޏÿÁýC8&“õ¯Jr ïIï»ÿÆýM0€)8%É;*üÓþ½ƒyÐtõQò¸îqÓ£Ö7ôo¿$·én7.µ.w,wÞMî×ëõõÆS“u(W#ÔHCÝÆ2’²f¸˜“2îFbxξ‹Û,lvlvvI»Ü;dãSö§¹õÂo8•6ºŸS“¤v÷ÃÜ=Ž5Òîµ²q”c”s”4Ö}†|®ý\î,Á˜tµ×9êCÜgÚÇr££Eo6zõ^cÒžp$œ½SƬÑa·±ÈàŠ±&>ffJb4îCA•hÒ¡+ŘAÞâi½¦È½íZÌLÁvQQÑ©ýPG+uòÑõõm’ÙÇ·Ýùï·@ÎuçØ"¸[@¼ÿ –ˆÞÉ-ù[Ü41¦‹ëÐõÍuÝù÷úëÖ_¢¹©˜;hnãéf•CÅü˜ZbåZœŠMhv äóù‡Üb+æ„æœ³ÅZÌÝtÛŠw4ãH¬aZJòƒN,î‹„†Ïó`¸TK‚! *‰~ª©³çÖ¯—ïÍíŵ{—µ|ÊWÏoúÖ?ÿýûÜ_×á6\‚íxÚºÜ'¿…Gç^ÿø‹ÜûxÕ”«@n4iQßw¨e`@Örœßöë"¿ ÉZŒýF‡,Õ ‚_Ž`ä“Ñ(wãEÏp€¯€¢ªp¾Œ¯Ã·ÏÇÚ}-¾ ¾¾Å¾U¾¾ƒ>£ïo±—i ¯³àÉ(Äêô6a®Q+³hl®ÁTžBE¥v¢@V¤ÕÿCÓr¿§ €yJ m>.€¹¿P,¯Ì-×ò<÷ÙÀS×ÁsWâðNäËÿ€‚ù69]¨õm„¯ôÖñ}üùNÿ÷‡àŠÉBX=öZ‚7{ï×ëébå£`B:9'qÖh‹•~¡¬²Ëqy•—W"oÖ@¢-i²ÙÌ&?ŸŒÐúiñš0õ9û“•ñ²²H<™tÇs\à‰(? `¼æ†ØÑD]¶žjÙ0©£r‘¶”¤3ÉUp_»ïGQ_{q“à@À÷¿GoíE‘GÁzC. x_,Xý ¼VØŸPW{Žcz¿|lñÓ×€9Ub PÛý/Ütöò µØ°BÛÜ;bÓÑY¯^E^€³™é´õŽXùÒÍÖZúb ½fÊØÝª†î0/·Ü*€àos® ®RV„nO¬H®*³ZJqBIúBÀŽªimb[ˆ´]~mð=Iäñø‘ßUØ™P«Kw&ðö`@’ü—10™HÀH¢q;À»b'vOE:À LArùN<´•{`tu!f@‹®¦1–EhýsÑÔ`Wg•2³³Än³[í;«Ç±ÒX2ÆêdêC±2s´+ÎHŽÙS8,ÁxIiÁFeeté—Î ÌMlÀ k¾> ûõó‹¶[FõÐÅök¶-Þ3cÅ„¤ÿ’›gß”kÒæWÍßÞ.GGDo›”Û7¹€§§5̘?þ¢ËnüöÜ”ƒV¼xþ½gk›˜>8gÌGæ£ ªgFp‘~‰žá-%)µTp0&ͪ·Zh®¦éŽƒsñ›DXK`*e+ìUÁ*R•ª­õW$ÊQWFÊqøËƒÝxÚä!8n‰DãžZ”±xˆÅŽÛ}øk_ÞG|Ù82ቦu¦ý¦C¦£Àµñx*çÊI9…R,E8`:Ë‘¾ŽR@W7vQŸÓ‹zí‹Kú\{'ÀÌNj6Ã4iÁ—Ú"•CT"µhê/ ”T©Ô“%阖øSv’¥VmèÄ1Å<…ÜB‡ýøÌÖí¥Cü—» rÌMjsAm·Nnë ˧ûVnÜÀ¥y˜¥‡a–.ƒYÊ¢oÔó;tD{ŠŠö7Pû½5åöÊ`%©Le³þróuTÎ ²3Åó~9žFI.I’©XÌŸGârÅ¢q„d˜“ +ÅéŽÞ‰i&MÇ;‚Tsá8ò*^2ѻλß{È{Ô«óžÅ+àÓ¥Üjî(Çrrí÷Û)VR€‹`ð¹â|ô‚o zb.N}4pÚÿÅ$ü¤‡¶þççà“÷ôØ-æA:ð½×ž„A¶§Íü¯§æàS„˜¿ÁÑûjy†­ÐEh@›¨83¾L YWc­+-¾–À™ºV«*ªÎq¾ þ gß~ªºâ~*9¨Õ}uÈç "¿ü¯÷W%œuÅýUÁ¸¬í°"q£=nu œÀOà0'+·äøíõÿ_û…íS§z‡DrgaP{ \S!wäÿ@}ÂzgÐT Ý67J j‰GœOKÚþM…LíííçÒr# åIOüYçÚñ#'¼ߺ¶.áEUªÉ¾Y²7#½°KHF,–¶Y,²ì;ál/0¨æN„Ñärwü”þD2`ÉaÕ¯ü༅ìg¨_¢–¯õü¨;ñúËõ«ñÝd~”tá-ļ^ÿ;ÃVÝ6Ã+† =‘w"áÅ HÄénÐO˜?9ž3"áAYMלKa® o9)>R›)Á7`ê a“¥¥<Ï5 ÖÀ™&E>èÆnþnÑÂßwUî»nRrò&ÅB ¼¶9BÃü¿·üÿ[<çñê ú˜W'±Çà+âö\ ýÛ,ôùcÛkP,¬/·B<ùâôS@ÊI1§„¿Ÿ5qÍy³–O?ŸîvÉ}­‘ä//Ÿ><³` …§¡ö³Þ§ž6jÕ„Þÿ9ÿ~Þ5åÊ•½_žƒÑ$È6‘K&=ªÕE•K&ÞHéï0weÆŸºU†=®­x3t+ \ãŒm= R½”|SÜüévº‰äÒéYÌK=¢>®X‰)JœÉ¤N×&m›$u•{Õ³yyùùo•nqíÖí?—L\ß!t8Ø}sçR%Õź‰×ƒþ@iÒUGê¤*×h2ZîjÃçIÓ\·º~ïz¼&}äm⹉`kÖjþbÌü£`”(ÑÅQ‚¢4D~wtT]­EÉû‹Qòpˆ‰ÆÇ»ÿµ)oÒ™Vk¡ñþbhü£ª²ûkµèx¿"»‘Ÿû§ší‹ŽôGÇDÇDÇŠÑñq`²+Ô€;Ž0fœq†5&â!ýSGܦ۬¿€ÓÊh©p»Z½OÆAËjY­¬fë²òÒ "Ѭ¬ÆY9®ÚKƒ¥3J—”®*}¸t_é×¥ÆÒäj-H>­º$8MR3ðS%ÕSk—¾–ˆÔ§m%j¼¬«7ëçóp91pi—«Î ˆw‹XŒst ÿÝ*Ý>«{z“hžÜùÞÙÓÞyì+™;LCÞ{;©ðÖ‚Þ;û‚Þ;ÛiD¼›ûêÄ^³¢ýÜü¿y?eŸÙÉ0ðÔ†¾h÷80n0î³d)ñ¸<’§hVŒëòô³4ɹ™]Ýù£›$®ÏìÐÞ)ÔÞŠPäwRìÀÀø¾6æý_}õ·_]§éÜ@9yÏ¢ÿºño _.ø¡iCi9þ"ÛÜÇZÇÃLæøÛÌÀOôýdÓâè[õº˜%ŽkÄåä6f•c…øƒd4‹hq2÷‘ O>ã>?•ô,7—{†{Fd«q%Bq£"}v»ýAƒ]°XX%H„kr»èF~ÕÆ· ÕʵBx)\ÏSjŸ[0 ´Ã@;–°AN<¸¿‹úBÇhtGaçkg±RpúÃPÓøãásÑíCÊëì`Úõã*Çœ^‚$"”£bHפm1*¼Š¨à K¡)Cã൘‚Ážfãá‡f<»@{EÙøßŒ=ëôúórÏÒá%s‹Î~ÏÚCSg\ÿ¹oO;­4pÇ$rdÀ(»Aží†Qn uè'þ#2mØö£wð¾·ýߣïñ÷~s %ü‰@¼á4ßTßïÛÐ|ÀÿþÜo›ÀVÍpwÖçó6Ô>^R‘IÔÅ3‹ÅÊ:âVc<ÑÐàüõu„Šöá`bFbQbcbWB—PÉlBjí‰U‰ý‰C‰£ÐÖMþª:ýA<“Ux&³>Kë¡¢J…aE60Á±ÏqÐñµƒuÈC^*úÃÇS·«GæzÜ|úmï„j;H 7wÄC-A­•:g ¯' ò¦ªN´JOßÚ{ߪ»}WHÊýÓ+LÿOaEô4!—h¯™‰àÈO‡õc¸S!uäžç´µ¨ÜZHQ-Mÿˆ›ñ?R¢ÍŽ.„ јÖû<ƒ<ÙWÙ›&4q1 jå% +Î`ŸB è zU¹ˆ3¨M@ŒNrJç¸æˆHU,/•»·ºÌõ¾ºÊ±Òغó\çÕÎwÍ«½Ù·6c®©²+Þ°önBÉU_­DtçŒ`‰lM ±zËJ6KÕ3,Ii[fBñ¸g¨7NS2U-Ul•tï)‡J¸¦¦>³Æ‘?´ÅÍŠZt ŸuPóòbœ5¸W<L'c;òߢlþûïÒ#ਉţ~Ø“³J?'RsŸx-Ká”­þ§òÏ §}ÏIi¨ÈFeßÌ\7~x¦&ÒÖÆÜoð¹‚kÿ‰Ó…·DîÜW¹¶~ýRà¨9ÀQóÁún%w©÷ù @„~*O¼ômtÁp^(, -Št´þÿû£ðÇЛ‘7«_ʾÔj7¸7Ìü+ç’æPR %ÍѤM¤7Ú¹F³£Qh 5*žªÆêÆhc¤±lDckcmc¶±Qís&%**-mºl7®Øª´Þ×ÂQröR§R($Y­:$aêXºÏ®[¤#Ôý["÷%í¸Ð}‰6»?S|ášÎ/4›=æ2}£þÈl( x=ÉaêZ’¹Áþ¥vêH¢ Us&Q¸Þãæ÷y—й¹Oò-i‰nYEŸ»è“ÜEOÝEßo"4ÿ„¾òÿÜìmj>Åá¤F¸:ê¢J÷»¨Ìp ~¡õS…ûÏêw2(zï¶Ù³5ÝùÏ7C^°Ò TZô?}¢š@\ò‹ÐG}¢Ž…o–\ͼ™š[‡„L“Özß‚iÒZïå I«(Û[0MBf¿ÒœµCR-ÊÞf޾ ¥š¾þr¡˜·vç÷láDfµGµA!ÒIˆ&?FE£¨p!JïçZ…€¾Ÿ~åY‡oŒ‹vàŽo)¬ÌmÏíÔ¿r_™aoúÎh2jÿ7周¤™'þ‹ }‡Ž‡‚©øÿ­´óèÿÌð¯V0üƒÙ·Ð…h5.Gàw)º mAw¢rt”Ï#íØŒöÑ·´ p -lƒÐvô<ºž ÃMøô>Ú‰œpt¾7 9ø-Ä¡yèÿ´w½1qe×ý¾yà06Æ^l¯™;à5`þ ÆÆØ^¼00ÀbÖàðÇ »hÍcæÓ™7yï ¬&Þ$Z©­—x“j#¥¶âÍ—(Y­ã[ð6µû¥M¤VÛ/ÝJ­*'Jò¡êWªÔ¨‰÷wϻà oœ´ú?Ÿ{Ï;÷ÜsÏ¿{Þ›§Þ56ʾÍ&ØMöKö*úÝucãüV©dWØ=\{Q+Ø)å¤²ä ©^õ …%…ÿ¼cÕýÐóã¢?+úYqÛÎ¥³ä^\bJ¿¼klרn¾{©\/ÿnùÏ÷,VÔV|qïì»ÿÜG•oVþõþ¢ý‡üÛçoÀßíUÿí{ÿ¹ÿNõ?Öœ=üÃÿ>¢©«ý׺wëÿóè£߸Ðì'Oœeý¸_ ×Ç@ó€xj§Þ,^¿”­O/§¡ñß:/ª!î£3•f•*WÙkJµÄ PLþXââoV}Câ;ØóÊw³ï*#q;âŠI¼ˆ=ïÊò»ª\?øN+ø;‰—°ÙÂS÷î¸[øm‰—²©’‘õ_)ùĶÓÛ$qs{OI\eMÞN‰€'&ñBVâMK|+õ~Uân6êýºÄ=l÷/ϯ$^¬”•J|';YV±þ¶µãeç$îU_+û¢ÄKYsù?A¥@x½dO!á…""{v¾ƒè~ÂÝDo"ÜCøY‹DŒöœ—8bT1(qĨB“8bTaH1ªø‰Ä£Š‡GŒ*~%qÄhï‰#F{×$ŽíÍò#F{#qĨr¿Ä£Ê·%ŽUþ»Ä#ßM‹…]>gîNa w^"èü9ÂK ¯!\ü´R |ðrîØ^A<Äï%9¯¾èo¾Ÿæ¦ ?H<Žn‡ˆç=Â}„‡ðÃÄ‹ð£„Lxáä7éÏ)vg­Ÿ ¼Ä¡?"ܱå7lŒ-²$vü,ÓX=gߌ¡Zü<3X`K.Îzpf­z”88(1Ìo"ºö¿”X׌£j ¥Öy,ÐÐ;ëc§q´ Ú9Ø ¢1#†~sæ ƒM³F Ϙlm„tHá,J4ΆЧ‰kôô27i~æ)³ÎLò³–´B¡gu…¾&F,À,¤Õ?EÎŧHÙÈíð^€oÄÛý6Œù«É﫜ÇÉŠ7Aëþáá  ¿D¡›M:rœ ž0QDܳçB£(ŽV¬Ø¼¢cRÅŠIh¶È^ÆyštÒÁg㈑üIMÈÕ5Š«È¶¬Ô4­hKŸæòz–ì™Ó M¥½ùþOKi&ñGH§4Y#Þ˜'r*BÜÑú€;99·¾Vþ "ouÒ;,½ |èd_Ö#œ¤fueí,ð/H “dM¾áϬý‚øºG òH6iàÙ¼ç¤o„Ö=“§Ål^ü ÚQ:Ö³¥fãÄ!ý ´"—œ]aÓZ[{Ü ¯$©ÍùÄ$ÉåˆEºÛ¤Kv— ™§Y}mòÝ<Îrž‰€+ŒYqŒ%HF6O›ÉZ±òT䉣9ÏG޶Ídk‚?©´6x4’*Î,vIfp6;dgóúœÿÛµÒ”)¯ž·ÊÆ@® [ƒ„ƒ*¾݇ö¢‹7YŽ¢¹ÔêÕKïyÔ1æeÅb×G)»íM?KwêB’ªTRîçÅõºñl»7½¨¬¹)Ê¢ìZ$¯f×/äÕ’Íuò(«“Wqâw4»=F9¡ÓÕ@'ÚIÑ×3Cäð¤\mã Äg@l•ÊæöÓ=“­ÕN=ÒiD¥f&ec”èaªP‹”ï&Eq+Ò.ƒ*FNJZÊÜj½ˆ¬·"ghO9ZÏÈÈ$¤ä­"TKVmô”Sw6gÅæ•£ë•uö^ŠökLzÛ"iöS×n¦ú‘ ~‹$-nŠ…§W§Òh¤Q’<¥j~¦˜s™‹ ª œåÖWÃyÚ©N=1óî׹ͼ¼uì³§§„vqYs53'/[߬ U+W!sœ†¼êˆ:Cr-ZݱÇÑ+?»Å^dƒãgW%e~d³ôÉú,‹rù1@¶oŽœð°ÿyÐu’µ&w1©nçÇÀ|Âß9ÉÂ>ƒ®y­X º›Î«Ïý¬«…uþ}>6¯óóF°Aâ=†™4LÍŽ žŒ…›yH³µßÁÂø¨K ŠÅ˜wìôé–&4'šy0ã#ѹyÛâ#º¥› z¤ÇH™QÝäCzzDŸKÅ43+üLÞЙÝ´Ä"­Í§[xÝùhØ4,cÖ®Ï㹘Ç"É ^=?&Ï>àc¦Ñãšù&7f?ÓnêsQËÖM=£ ÖM[½‘JØe5¯O„ÅÆœ©%ç_6ÒšჺmÇt3¤[ѹ¦k׸`M›QääëYÃäÝçyVÿ4ØLGL-à3‹<1£Z‚÷™ð䜘åLà£zLC…0‡û„"œ…ôhX‹ñÙè°`2j‡çy„Öoäq¡¨‘Ð…i]øžk‰·bÚ ‰˜%ûŒDXOÚ6nA‚mp=ŽPØz¾âFÊN¦lÒÄÔá,Ûjä¶6#BÆÓ|*äÚzx>AÊDŒp*®'lòió¼m'Ïétº9.]×6ây; Ämñbû@ܺvÜ‘ÐÓÍbäg¥õ¨:Mèè Ž ñá>þÊ@OïÐh/öôöžïó{‹Ç棙FÁ8r!iIÄyQäÆá%ó¢ÈÜ”¥‹-)13l,P–¤øHȯâ–¢ñX4¬'À®Í™º.œÑÌ'1m^[й1#RJx{ƒ2"«‘G:×£fòHÔDÀc‹|Ö4â9½Û˜Ó‰% Îܼò֌Τlˆ†š"ôyÕZY¥;ë®XŸɺ ÅRÚL j[–nçÏnæã‰˜nYdDR¢æ9|ë6B-,`ka;ca˜&µžÝZ,©¼>!ŒŠ1£g‰ÚcŸ ã£AÞÄëNh¯çíÇN5µœhi)*±åر'жoçí'ÛN·ö?e×}æfg©íC|P2è#†¸%/.;„ËÏ¿ÑE+;6Jañ…O¨¡.«?RïÖÔ{ê‡ÛÓ¶¦m?LcÛÓ¶¦m?LÛ~˜¶ý0mûaÚöôí‡iÛÓþ_>LÛð©'‡kÄ¿ÕØÏž˜£oø<äÜcn-3Fžw^PUp¬`° ¿à,ÚÓV5øiR†hψÚãX?¯d”兀öE\¦¼KÖ>CÂÖøú÷‰ØokPÈ·øw=~ >X?ÞµŠî uwJ·¾%ú^êWŠŽwê–Ü|(`—Ð^‘•ùÐvõ¿¯~Ì2€€Ê=Pîr”{ tª«LQ¨~´r؇¥ïÞÙ¸õQð€z‡=¸Ô¯«W™²ßý%Ù_Cý»²_R¯®¼è+ Ñ—³¡} pÁ¶+ýík„´wr=K¹~_p¿zZÝ€V7 Õ hõ­©×A¿úuЯýºøù Dùë¥(‰ÜX)Û')@‚Åê¤zË|ê„ì_U/®´úî§Õqˆ¾Míûê˜øËhÔ^¢v˜Ú+4z…pƒpƒðNÂ;%.Ú@^룶L´êˆ:ŠÍíS?§ž£þ‚ÚË^@?ŒsѩԟWû©ôJôƒà+GNí£óœ‡Ð¿ŒsÑ÷«}+!_K0‰óKsa=AA‡t ÁI‚r ð>à!Q.¡½ø §¢†pôàªAÌ肌.Œt1UíÂщã%õ%ŒœïY´]jÙØ®¬Ô_u@rÂÓðt0·Ú–«m¬Ð¸˜BN#æ5B¯F¬Ð¨6±Ãåw½Ã*ÐsÙû\WYú*×Õ•*_W°Èu—]L’€·\wW ËË‚à¼À0àà à&à6ÀÃ:‘®®NW§:ìV Ýõw::Z©?~ÒéŸ?äô%ZË‚¦Z7Õ³›*×Cåz˜š=ó\HZvð à!@8¼Ψ…3ja`-æ××â{x P‘Dµ¿‘§fû<)‚ZJÎê0§¼u >D«Ð 1~p p_ŽUS2WSrVCV5´  í$¬ ­O­^¡·¸_]QΔÛá÷a]Kðæü¶$2Ä%6q#’ãà6 P]ÃQ£GŽj~"¨V!zï⸆ãk8–p¼ƒã*¢Qq»á~ƒëR›Ñv¥íZÛͶÛm÷ÛÜ»4Ó®é®b¶oJbùnÏà.W›b^å×ÔÞ¢Ö¤¶‹ÚçºLy1åýñ”÷[SÞ÷¦¼SÞ¡)oß”70å]UfºžkðþKƒ÷ÝïÅïÉo[ƒ÷xƒ·¾ÁÜ­L*¯âšùWÔvSÛJm5µ‡”WW¼¬è/•י߃ŒWjïú¿ìû¥µ@Yñ}Õ¿êA÷çìu§{Q?òµøç|åˆÓöÿ¨ظò!s+ ]/¹»Ü§ÝÍî&w»Ö]ãö¹+<åž]žRO‰§Øãñìðx\æ¿#èjß嬨±Kt; D[@ø.—h]ôUOæR<.vŽeö¨ƒ®ÁÑne0ó Ìgxæ¿FkV•âϽ–)¬éV2åƒlp¬»2ÓÞ0¸ê~<’9Õ0˜)ºðúIJ¢|mgן¬*llbUy,HoÌ”÷ˆ_k+o/”ý䤘3±\ ,-M²} •å/í>ÝÚ¢™–mÞ7³+ó¿¦-49”ùæàèDæƒC“™V<>49Ïò©‰5×)×ÉÞК«]t“kÅo¹NõŽzñ[¡Éã ‡Ö˜_tÄǸàcü ¾*W»à{At_ñUmà[>ëï -ûýYž³Äsv#ÏÜFž9♓<ªÃãÏãqÿ”ù‰Çïþé&žªgàyaKžTcQ›¯Þ¡­ZÖ¤íüÀÁJ1!ÍMNø:–‚dÅÚð»ëÉ"3˜g¥úõ™6–‚AˆaBI)…±ÿ,áÍ· endstream endobj 67 0 obj 22667 endobj 68 0 obj << /Type /FontDescriptor /FontName /IAAAAA+CourierNewPSMT /Flags 5 /FontBBox [ -21 -679 637 1021 ] /ItalicAngle 0 /Ascent 832 /Descent 300 /CapHeight 1020 /StemV 80 /FontFile2 66 0 R >> endobj 69 0 obj << /Length 491 /Filter /FlateDecode >> stream xœ]”ËŽ£0E÷Hüƒ—=‹~“–"¤tÒ‘²˜‡&=@ÀÉ M9d‘¿¸×ÝÍ&èPUv;E±=ì}7‰âGšc˜Ä¹ëÛnÃ=6AœÂ¥ëóLiÑvÍôx4×z̳b®?>nS¸úó Öë<¢ø9'ܦøO›v8…/xù=¶!výE<ýÚùêxÇ?áúIÈ<«*цó²æ×züV_ƒ(Pþ|hçŒnz<Ï…ÿ¤¼?Æ 4_(öÖ m¸ubÝ_Bž­¥¬Äz¿¯ò,ôíÿQ/Yu:7¿ë¸d«9[J¯ª4@¿ #`¥8FÀ3b%ÀIÀŠi{À ÓÙ¸Ï+À–€-#\zÇvV€7;Ø3 ½)Iðú8lªèãÑ›¢Þèãßô)Ñ¢F£*ùpŸäƒ®}žÒdzúxÔhúx˜júX4ªéS2>KkúFè£YC‡M5},NGÓÇát4}^ÓÇ2’î‡úX®F‹Ñô±ìš>`ècñ3ÉÚ†>l’ÏÅGK…[0Éo’kècq†>–5ôÑŒÐÇãÜLºŸÇåc,–ÉÁ°ÎesqI|0ŠËv}øünŒÃˆºôóùñý-endstream endobj 70 0 obj << /Type /Font /Subtype /TrueType /BaseFont /IAAAAA+CourierNewPSMT /FirstChar 0 /LastChar 60 /Widths [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 68 0 R /ToUnicode 69 0 R >> endobj 71 0 obj << /Length 72 0 R /Filter /FlateDecode /Length1 39428 >> stream xœì½y\T×Ù8~ν³3Ìܘ…™¹³³‚sQÁ(Ä-bC•ˆ jLšJšÅÄ´Õ6‹YÚj—lMÚ &MÒØ&oÚ,¾ÉÛ¤Ñt‰¶µYÞ”j[cÞ42ó{ιwX\Ú~ßßï÷Çï÷ xÎyÎ~Îsžç9Ïsι88°¹ iÑb‘°fcGß=õø/B¯!„k¶ òª/ùÀ'RþymߺY3†b©!_ùغžmk_{è·®E¨éë»::ßûV£¡«¯†6*ÖCÂã?T@ü.ˆ{×o¼Ö"û ñQˆ·ô$×tüøZÃr„ÚT$¾±ãÚ¾Ÿš|Jˆ¯€8ßÛ±±k{Ãí‡ö‹]}ÉMƒG‘?…Эß"ù}]}¹û®? ñgÊ™ i~É@‰3¬L®PªÔš,m¶NÏŒ9¦Ü¼|³Åj+°;œ¼Ëíñúüèÿ¿?²÷Á}Ù t°«‘¡ô Éý!õešŸ›Gˆ9…JNüY‹ŽâBˆ“ß{ÐÁo·íÀ·b M½= þuèftà]¶Eñ ô8*†ôwP-G{à÷SˆÑK4ýW4½‰–ÒòE¶â/â;ãD :*ó¡7qZö6²¢-x;þ;» Úß-¤˜çÓh1º}KJÿù‘€6¢/¡o oc=v§{Óï ʃ¾Ò¦: w?Å?b[d7¤÷BÍ%¨}=‰#²vÙËãLÝ”N¦ ´r;zgaÒW¡T‰èjôª8{ÌËŠÇөߥ÷CûAT-m‡^¿~†Þ@Åsð›2¿¥pÚ™~5ýk¤D³ îݘ…_»ñ\ü“ϾÎþÉ‘̓ÚW£.´%Ñz~‡QžÆq\Žç0s˜6æ6ænæöNÙ ²/ÃÊlGÏQËp x^‚ÿĿlmcoFP æ[Ш æ» VêtÔï qŒakq߀ÀûðQü{æEv©l¾ì£ôÚô͈L×ør¡BT -,…õý1:€AíßC{NÀü¾Â\Álaãl ûöKìnöAö-ÙU²§â©¿¤oI7ýlúíôoÒcО¹Q-L/E+Ðõ°rß@߃VŠŽ¡¿až{ñWð]ø{øGøÇøYü6N1ÙÌcl{'{P†e‚ìnÙK)Cêû©ÑÔétCº5}æ·Ý„njû>z(îIh힇¯ÀW╸Z¼ߎÆ/à?32æjæ)ÖÏö³×±×³w³Ë|²ëd¿’oIµ¥îLJÇÒ›`Ä·¥ÿƪG45ÁH¿ˆº2úÐt-ŒùK€ó¯ÀÈo¡¿_ƒüú|=x9‰þŒ>ÆjœuØŽcð[‰gÁ¬VàAüU|þþ~Â`I©`1ë`=¿Ë¼È¼Éüž]Ê>Î>˾ɾ)Ë“-”-*|Xöc9’µª×>{çüã÷ŽßŸbRÅ©¶´2mK¤ç¥ŸH¿~'ýà\…€.O} íª…•z(ð Xë?¡÷†ä@oìÅ~¼_oLß ¸þþ>ü> ”ó…ßgá÷þü`ÿ>‰ÿ„?Ã@¼ŒŸ‰Âˆ¯fÖ2×30Ï1/0)6‹µ±Àg Û8½ÝÁ>sø%ûWö™N–#óËfʺdß”=&û©ìÙgòyò…ò­ ƒâ«Š]’ä8:Uá&í3¸ø_ Šy‰ Gýá÷vü úžþ„ÇÊo‡ßÑÀGW1õø= ¤ïáø›ø» ËtAÙ#hú.û8~›¹ }¸?‚>3ëq߯€4üsý(ã(ðË_™y…•6££ìQ܇þÿ  †¹´3¹hþ%ªÄ·á9¨‡)F4ˆ…Á\aù@Þ®#²Wv7óßÌÝø4šÇì¥cþ*î@ûp1ÐÛQüôsBV!{¨t.p©J/fxÐæ·z˜y hw?ðÙ"àŠ=À½û€Oê`ÔEhÕã+ÆŸ`52àÛÚ¿œy;Œç1ôgSÐ×Üôaê>`b@çw£{ax‡ý0ýuô¼øøI¬AßB¿GW°ge¹°cœ‘Ùå i&µO_‰^‰Å±ï¢ùè7øóѯqz Ý“Ž5M·Â8oFëÑ2yÜÒ¸ƒéA?UîS¼«¨Q”(°ü:y§|±|¼^>C^"/–»ä¹^®‘–ýNö†ì'²Ⱦ¼‘åÊ´ì» ?÷³÷±w°Iv!›`#@“vVÆ|Êü…ùù-sœ9Â<ÊlÇÃ0Êߤ‘¾/Ý’®MÏHç¤R©S/¤~œz uwêë©¡T_ª}üÅó¿;ÿæùýçÄçÆƒüú)~%õì›Ó+ÓW¤Ï¿™Òw¦kSÇð.˜£½rõNX—nW€„˜ù˜C)ô1 ½ ù‡Ð#@c[Q;Z®XŠša½ýÀ™7IÔØ²öaˆ±°VFØ€ñ+`M®F HéBØi_D§¿Ë.ƒ6öSfy˜yó©ï£B2½°?-@ijÐÃï“èÉñû¡·GC¯‡¢ßf?\µ|ÙÒ%‹¯li^ÔÔ˜˜U[3³ºªrFy¼¬´$„CÁ@qQ¡ßçõ¸]¼Óa/°Y-æü¼\SŽÑÀéuÙÚ,Z¥TÈe,ƒQ¨Á3·ö·ËüžùóÃ$î逄Ž) íÃ<$Í^f˜o§Åøé%(¹ö‚’‚XR˜(‰9¾Õ„C|ƒ‡>:ÇÃâ•W®øks<­üð…RXæ§‘lˆ¸\Pƒo0¯ŸÃãv¾axî–õ;Úç@{û³4õžú.M8„ök²Ìh8ßÓ·çÏÂ`òª÷3H• £¶zæ4 [˜ôÏ# -d ò3ðp08ºPÖÃBÂgÑxy8´e”9êéãx}¨eTk­ŽÎ].²ªwŒ h5D†‡®\!Æy´Ú6‚„h°u˜i'9G29¹ËHÎP&g¢z»È÷Ij¸ä«üÿô\^NÃúêaœ÷O²»ÄüK< ®\¹‚oØÙ.ávÁÒi11¿r"O‚†sêW°6F‚Ks¯ž(L"+´Ã2üSPJîUª€i æçsíóE¿Uãrý›•FÓgH-LV“†9\œŸ9->mxÚ, Xæg,]¹s§fúЇµ¾aµ¨b8Û7¬£pŽo$O·,ÈëÚ} @ô>ñ0·lÅ[6W+¿‚^ÉRc>=S3Üì>œåz%¾œ¶¥§~6m4×7œï3c®æ|MUmÔ|ò )¦ñ‘îõÔWù†9ß°Ây¾‹ŒÀ@û6NøÄC€ €«ù×cÐÓù¾a‹ÏŒ¸Õy$…ʇa,"¿eE»­£•pù'÷-[1¬ èu1*áKG»àè?±Ù¥À·ÃÍAø\Úz£È™.±Ú”hõc®qf8äQˆ÷{ढäÛ };+mWëh:ÝN¤*EÓîãIöÎv=ÃK$×ÏÛ@´û[¡ eçÂV²sç\?wgûÎŽÑôÐjÏyvbóؼ} í&M¾Ã6<÷«­@—ëq5 ÍÞïÁ·]¹_À·-Y¹â‡ÛÒ# «×·ÏnÝï…¼‡x„šÊL¤’Obh$Œ0*še;$ 4Dse4Æ×ŒbDÓT™4ŒÖŒ2bGÓà' ahÐýhJ4Sp(”g M.;Ã"B~†e«Z);ƒ‘Eµàzspw¶fáxÍ"î\ÍBn¼%jÆkˆ+‰¹ .ƒ<Œdè<Ï9/ÈÑgˆ—®÷¤OÈj؇A¿ü©P®6*Ê-Ƽòµ±[c÷Ä~y2òBämõ[š·KÞS¿_rV{.jÐ`¥\©VVÅ*¢óŠçFUÞÑô¡/KŸ@x¤Ç*Ï 4«x.RD‘Ç[T·£dOɧ(ÿÇ£1ʳX­:ªåg™´v³Ób«oɺ#öˬßDuïUý¾úÓ(Ëçã˜7Ÿ-‹h5HTz]yZKŒ‰ð±ÒxŒxÚÑôɑҸF !~d¤º\#4·¢JÌ…ähYBâ4¤ùMÍb>„´ök¹†kâ˜'¸' ŒSéµ ²­-Ÿ<§¬Ó2÷30ßBÔ˜>‚²ÀiÁeCÚ<Ù¤"X,&d;šP÷3©G£6[e4ðáhÜ ÔÍÏå‹tV2’Àz4tøixÐd‰ãb]Ö(¶ .K¦,VX-¤âU1U‹ª]Õ§RìVa•5¢Ì`e® näâ]1W‹«xAá²F1Þÿ%JÂmD|Á>¶ˆ{o  ÄW"±plŒ’jPô4«H¸_ÁÔ/]qa`Û¬œ8 ¶­6.Ý&õÃrŒÎ#׳â † —« ¢à75 9›8Á¢OˆÇ &-@àQ:‚8—PÁ![¡4¸JiÌ$TfðˆSsãÝu_jƒþ¥®àcCØÛ”H4ßMü뚈Ï~u¨mVSiùC(]-py`z¿­a³µ`Ëf!ŒG™•‚M“eÒh²4 3ªh ×ÉÖ\Õë¦QüÒþûÌAî= OÂ|é¤wèF‚;t7¼ˆ ee¥`Fã~ŒTŒ€lÁ3Ä É²Ç““Õ¨53wZrlÞ@ìÜ?®-çrkü¶¸|3ý6Ä å°_4¡GègŸfFokÞÑýÚø«Ü·Í¿²üÚv¼à}Ý'̧Šì—,/ÙãXΩÜ÷,Ùd¿6¿]ð!ó¾â=ÍGºÊNó5ÊV?”õÃìGôÊnf­¢K³Aw±3Oari•V—,‹#+®AˆC<: ºÁ3ÌÇ <ò™eO;ûT¬ê¤ØaG#Ž.ºaÍ’¾‘Íí? ÿ.èD˜}Íf;„¼züâ1ûc¡gì‡Ï„ŽÚ_ ©ŒJ" ¬* W®'nL:“‘íÎí‘]Î]‘½Î½‘ÎM‰êD剓 ¥Õºx%)€QÅË+fTVUÏœYó³wRª‚$ř㽮N75å3€3‚ãHY½ÓRŸèuœŒ–Òß=û@r&žyˆI¡zP­tó8 ¶µA ϧüD÷ ƒ?g§¡ ú‰Ü÷ ’8 ¶ÖŒC•šs¤B©@Ñ•5òHÁþ ø½°ÂiãüQï—ÃCš¬x ÌDÁ €C°mB©7¤B“7ÂÏOÓ«Ô„[5Ìä9èT}jò´4“ju4ZÌèVoÐe·~l¹Ö®4+J]^Z¥+$Ò×ã¾…gÏñ<’— ó˜·VØ®³Z-äÿÈLô&‹q<ã^çNp§¹4§ÜËaØÀ׈Ûs¿¨:Õ¼GÔ'îØým`j ˆ6jîÏ”jD| L5.n¥ôÇMÒŸ£,^pxŠýnÀQèÄeðŠœA'Ž»J‰d ”w#U¶¸X‰ô„R¬ÄõâqFÑ¢ªX(b+û"¶ G*€|›UÌ'$:Œ‰Œ²œZŸ?B¼°Ññ2,‡‰Úà3”]Z+£”Š$ýÇ3†Ùeðúë‰6–ÍLhôx|fþýWþ=ñͧ›ïgLs¾¶ê¾•µOÜø•÷§†©–ŽT±ß!ÐÜ’X꣯ÞÜÁ_ÞÒº©¹qñ÷ƒ&Qšú½@må8W°)yŠ=vö„ú„“!š9“yE—˜96Aþ¢â@0‰DŸ›JPdKÉœ­«Ue‰ê9ÙA¦¶…¤Í"‘è vÇ(~T0àm ‡—+@­â8½&?l*µ`/W4AéS?¡>©fõj¬¶Îp "é]$2ÅÎ(ŽZ*š×I*=F¨¡Äânáø¤¸û’.Ë4EÜ&*âVªmB¾@(ˆ»?ˆŠüÉä“ÂbOåŽæƒ×,%‚€Joô‹ó6,nÎ/I4}Ø”ˆ™›EÑ‹õ¯üfê¦ ú¦zgÑŒÖÔMzG5I©tê%ÁÀ Ù O]+eG^ü€ 5Žšž¶ýÜ&Ë&Ö|c#ÞÉô˜~®8¦8n:ny_ñéËß™7ž7ýóS¾B1OÁ»MÝæk¬×8×zîbö:w{wþÀóK–])g³r¼¬"¢4P'¡ µ¸ãCª7T̰}FqÞSF+åTçÖÛù8çÀ‚cÈÁìr`X2³PŽ£'åN„õ¨½ŽØ4Ðèq 5— w$À3%\®<¥ÌÅe9ȡښ‚ë€gn‚† ü$„þ=ÞøÉ,œeõ{·‚ðhL9‚§Ü™Ó—ÃäÙúxŽÅ×(m¨ ÏqA6´…g©†û¡¡*l뀴1ÍÑ!X\ 2‡¦"1„AÓÐc¤áH‘IÚRÿBÌq É(ö)&ý– 6ä'œ!ðÀøkBq§iÃÁ6ì sIý¥‰ê?±äs ý”ndÝçŸæ¿ÇÀs‹ŕޢÔ+»Î¥ÞÁ‰7nø¯²ùQþÑ{»×ßÃ_lY]bªøêqޫDZ~EYÓÆ+:·¬¸êª€Ó»€"Ëþ…Ðã#•kN_rù}>»Bý±ÜeÈê³`‹Å..Æ}Ú“ZFK0ªËµÖˆÏ‹¨<öÛ¹ÈÄ›b¦S»©Ï4l:b:i:cÒpH†Lr“%|c\Ž22ºF”Ò‹¸¿ÛÇ -DÁÎ… |5‚›ŠaΘÃÈXØš°19r;"b¶{rª0Cþò ù'näæJÆ*·z¾}K™½h&_’:±æùç©EÚD¹…ŠCæùT×ì\W½µ&Xd6?x-~d"y‡¨ŠÓg€ô~"{ðk‡p0ÈZTZš‘`a}(`)GÕ™ ™,L…¹*0Û¼0°ØÜXkîœ(ROì¢zî"É&¾¬*,**®ã¦í°’NŒr$=YGuiÅ¥wÜÉëÉLj¾£Qàƒ#è½|ò"3“¯q4šQ ÀW—F™ßù³Éb1›q Ø² Èc~u9‚õM Öêr‹;`Žç»ã.W>S€ˆVY£48A› !h†–Qf¹À·õ ±EÂÌšx‘5„x ¢>b¢>bRÈ ¸JÊâNØÍNÈ1Çw‘­<(lÉx’^¢•c‚/E2ÂÈ„;EÎCúá91V툃;nxÑÅ\}(õà©£¾öÚƒGOá/ýÃî]øÃ®Ý`¾˜:º{Ï38€ÏîIÝúË3Ÿ;|øã³@L‹ƒ®òà™‚Kð V!_0 aÊ ^Ö¤¢™¡Ð `?)ÁN¼ADu<Ò<ág—Î Î"ò ÑN‘æ¢Ó?íż3ÙÇÅ'ƒG“Œ„ÑdÓ1ºmV†¾EÐêâ„äŸKÉòg+ û $Û©àlx†YŽâ€ÐM4B<„Y÷áÝø~Ë©É%¾rÀ÷òCæ !ñ~rpM̻굕˜e *ɪá^¬ö‰çså¹AÊ™WvRJ¥Dzû»„&e~â³§Ï¿›QX÷Ï(íîÆ©~ü †˜~bü>¹?µ¨Ó+d+ÃXÆ(˪—Yt£¸dÿ ¡"G>5 a”0i¢¤•}ç³ûIK²µ‰Yã÷UÝgN÷ò€êÃÚGñ|¢ÄØ¢êÊ=Cºò|GtÄ2'Q rÅ G LÄ"ñèʽP¼œ\!8?¸è{RœÔÈKTu6Xe“$-é¡©§ Ó¨Ã&Q 9( «f×M>v}ž9>EçS¢q …#Q˜K†0ô@4 %$uU£Î¤‡!Ý·@° BTCz*‚Eb·Ù¹À”£æã™Ö¸@¼¸ØÀÊÔn—H: K>­ÏãOJÌT¨4HS3j!'7®þ$FÄ$‹°_ž#F8á} ‰T`ÿôZyF¥T)TŒÂÉ;xFa“[¼Èκ¼Øª*ð"žO4fbFO»L`0ˆ0å’Vê˘¹T̨(Ÿ.%e3S§¬zø–¦ºY³©Ûì}=ó¿\d™”“ìéñg~’:Wÿ•¯maªÃ‘JLäø£WmN]ñLæª q –,hªH¶è¦Ðïë!×ËÚ—ýìr×U…·e³ Hz›f>¸#°û¼ Ø)ŽAÓ$‰( ýÃVt³(]©ÒO”CŸÔ~r‘DĬÄl…³H›­Óê²tLá÷ú…Ñc0X…ËÍ»E‘ÚÀÎ\OûtÅì68ˆQÚfüdæ;r$LOE“ÓárrWã÷x¾E”ü£Îç«C«b+v%:÷¦:Ã8û××ͺr±¯úeݘo¸©*xÏ]VååíŽ(ðc5öD¾ÞßÑÑ8°Œp¦0Ü®`žrô~§ÿDkD“À§ÊH;‘Ó“rØûÜT1LÔà’Ò²òŠ 4冈h»ÈhD Ú,ÙäË©ÉukB“¬.yÊ >É‚éû2•¼Ž&cEÈoDàô>§/ákö­òíõð)I”€2ß(óeÁ1Êò„¬L–J_à,ˆ°é\0 ì>NÍ«ûÔ¬z÷ šˆ`)„Á "ñ£‰ÎÏWÄ*„Š–Šö ¹±bçÄ^Ÿ!ªÁ˜rbÆ}Ff—ñy#ÓlÄFËŒÅ"Á ˆçDMáȉš`© ‡hC ñ+†òuà*T1”9Ikm#„ä‚`lžjë§ÕAU&‡˜ÿ>²aÀ>DCÎFÃ.W<£ª#Ø91 w”T7E”C‚ Ì)© åÄ¢¤h)ZAŠV¢¤X”—ŠŠAI Ñ3n;©á"žJº ”I¡R R('{¡Ü`’ÒNâ9ˆg'ݹˆ§’®GeR¨”B…Ҍ䕔vÏA¼K^zAå’Ô~Ã…ç!Û¢ËP&ÞpJw›…þr|“Eö¨ó3ÉO7Lö^²s¥ÜOêUá*ޝ¨ú©7“tO}QÜ;©”Jý6º¦ ©ã-Ä*ÿs}~´$ÿJà©Nà©à©2üȯÓË ‹0°3yi9•èn+-+CÏOc$=áî_ž¸]’Ä>¯×“©t4¹Bf£7Tfô„Ê`k¯BI$Ó#òuR™.D”ü !ˆQ¦õ)o Ð(^gY´¬½ìH™¬L°q‰²Ã¸¹ #ËjµXËÝ0ÙÄ d> Í‹sÔ>öÑPȲ9ãˆ*ý–øaüþ#’¤¬x¸ÂÑ›ÏQ÷Á.¯¶ ,f"0Öµ¢=";x$vÃ\î)X$õCÈ+–ôJ%½RIï´’´Þv 럒DI¿þ%¥º)„ô„VÆ? I<Šù4õÖ¤&ÑÏ õ¤Ž‰DÔ”iè !Ð}ªƒÔ‹à#Zªb’”êŒÓ–Ù"i5>I'V‹6#Ø‹ÊÌ'<ÿûu.¦1 ¬Æa•Frñ /Ø“–¸™èÇ“ÊïA´ ^†^A©‰¾kuÝó²ÜÔ £»iMâÔeµÛiVsôõÉ›å×)Ìl ¸ž¦ÙJ:D„ž†ÿ0y0YŒBÌaC;pFp]ðËÁ]Á—ƒ O?bx%ôzãÞ6··¾øÄ¢¹Ê²Žé6¬µlÂ×¶„v¾b¹9xKè¾À=¡l¹!Û¢ÈC•†×1õÙuÜ|Ãrf…!;`†ö ¤Ð[ßt¶‚8çÏ@s^' Œ€X' Õ HuRÀ´:‰Sc;ärê°#b&2T‰çJ®¦FYS#C< dsÒ¹pœ=Ÿ¶6r–Ä.å4ÂÏǺÇÒñp†!²¶#¥+-¥Â¤Åì+ðì[©rý ¾w~~dMM4•ÞúàC¸é‘'"ÕLæ@ÂÀ¹*¤“â&|Oê¢Î!'øÀ!.tdŠZã‚N1©^@T—´­uŠÌ^rF3­|vFùS³žÅÑ4y½N*‚™NG#(p¶8QàˆÆS  µ ©w«•j«GTÅì9ÈÈycÌ([Œ}Æ!ãn£:Ft2÷þ§Åí¥M|ø^¨W O‰"ŸËë’Ø1àÃTM('¨Ýº•âûٌܡvtªÿBÑV/àõ9Àk-{Thè}‘—#ì'躹OU¼]û>úP÷'îÇŸÂF•{Â÷EßÆÇ¹wìï8Ž;•"·évp;·GïÓíá”-º«ô«ÂíºuúdX»èá Ý×qà£ê¨&šÕF³yoäsxŸËçµé–rËÂmÑktk¹µák¢£ºCÑð+öW?¾Xû;üŽý×Îwkÿvò…|_Ìø ŠÆ¢%ÑÒhY4-ׯ cE±âX Œ…±DI¢4Q–ˆ'ʵ uB“ÈJhÙ1CÌˉ™b¹±¼fu³¦9«YÛœ- EB1ÀÁÙ¡ÿdDÆÉ¢‡Óç‘.}^p„e(Œ¹Z=WëÔ9œ:{4Æö(#z6DÏU|òÌw©:ýT±”ù<Õî¸àÍ—^:©NFEc G¦ëFt³ó1â ‡šÚZtÉìI“rêÑíIAkÂYÉMÖäc‡ Îz}˜<¸++r_%d9ÃNŽ_Õ×QaŠÃ&ŒÃÑZŽ#ï-!™#Én{Ôd·Gáp4Zš÷Ç+*|  åçå©ÀÎ×ýŸº‹‚/ Zæ&ÁÈánÁíx¿Oâ3X…ŸÃ£ ‰7#…‰p3%£øÜSar¶å<ÌÜ„8|d¯=fÝÎÚ?™usT;#^ÎÇ‚VËøx›ù¬¬IÖ’c|r{VÔÛˆ(¤€0‹ÙœÑÔõð#Ý»êɽkdÚ½k%ü ÊJjñèÉN‘ä/„‚ze8¡?It`MèêåФ',‚ÌÜCµÚp9©Á0i"݈§ssUQpy¶ÃUA‰w÷sSÞ„¶b*­‰¼Æ8oÊMÞŒBåÔhÆ¢Ÿ/ÞM(ógз•R‚BÉŒáåµµ‰¦÷ÕÕÿùFUu¢é½¦Ä¬¼4õlÍÌDÓsM SvøùgÂÙ¦D™ÚjæšÔ°å‰ØV1©SO™ñ^|S¢Ç]`0ÿéOfCLüJ’ :üu ¾È‚8"äßãÐÇÈœ2?S<õR¿Nwçdäºh:ÈÿÝ~—£‘/àƒÈr{`Ç'¯ aƒ R5‡@-,$‡×v¾ V ´´ô ì.ØW Þ]p¤€)°†ƒT–{¤+~káÚ9ñ!ð>N³›;½Á±<¹$â¹’\ïÏösÒMÿXâÔ8¹¸“zœ¼È£/&Å{}k±Ãî´óvVQl-ôbŸ ¼"[À‹ývïÄQØä.÷Ÿ©¢Jã),+Vö{<ø ÕDSs&u|ü¿;¿±çK?ûÉ­ßÞ¾åÏxß›¨§üþÊ–šÍ3n[6¿G:éúX©0ªdÂj¿£Â1×±Üñ~É'%Š%sK––,/]S*ÏwÏÍ ]º)tKøžŠ‡*ñ¿à5º .¤,õƒ¡ªð\OSx¹çª`—g“çÁÐÁÐÏCúí¡¯‡˜ˆŠ(îŒøQ›×ãqN;1»Ìûjmêþí÷ZG£3¾É‰—:±“pšÛ‡pô@Y5 ¿u0ZQÌ„ú%qçõá…Ÿ ³a¡¾<ÌÏ+‡ÅV ‡¢âéE(!r)Q™g„,•”ŒÁ ±I=Rû~‹¼H§q臄‚ òô¼èa=G[‚íÁ¡ „Œ'—”ÿ'$hÊÞ‘yÁ'Õ•ôÑ1¡Í%wQAò0K|Z.«°:JËJÊE…5îÅ1xå¶^\fz˜fäQ %¾ñ€ø0ôŸCJrœy<ÀŠ„”ïoª^žBo¼sº¯¿®)²h‘%<«ió§?xu_ëÜ/Ö}iëGøõTêÚkgšm²ÜJ34a#ž™j³‰^u¹-RnðŽâZ//t±‰psxU8Þ>VDÃ8ü3?#hZ4íV3ŠÙV…HY¡pŽÚéz¨:&˜KÉC¸Ò¢|K|o).x òÒh)S:ÊÜ(hŠõœàÀ¬\zM×.ô CÂnA&Xçë‰BU€Ú$~jïÖaØöo|Š<=e9yT€X!˜9ï`N;Î8Ç,%Rį+XÅ'ó;„câŽ\s¶­H°Œ¼O¾v 7HýAHëG‰±S‰±6òé@†‰O2/”aCƒ¹Ïý}S?˜ü:€|a¤O.x¬,ÝæçÉ&>1À3m.s´ª*ê-±êìw­¸}EeEmÑ<Þyî?šwÌ(*"ŠüyyûàÉËËÜxæ£}¾þÛeßóÆDãΦ„¿•s Ba•¿>Oou®Ø×vçï<ÞÂDãýM‰|ÃÚ<|]¥žI7«é;ïýµÅĆ ƒü| ägóg‘ù9ªg^´³‘(Ù8ƒÁXç`™"ÛŠéѤ%ã—Ž¨ÉQ5®\TÒ!©¬ÊžüC(™k"Å›¡XIIéa±¡ ébñò ură6ª@YÑeS=sVB¨CuÖiWM™]j$:i4âH²¦ÚPÇ/’ÈäöR‰GÉ´Q½:kòëæ©-/ +ÊÉÛíL uŽF£;„Œ®hN¼ TŽXNÀn–¢Ê½Ä²ŸWŽƒqK<03ÕUUÄ®÷¸ÝÕÑ‹þÂ"‰ÒæÒU¥òRÁ I”Zëy— c†dgpÌ€ –Ù‹áhâÑUæ(‰‘)wÿ§¢ÁBîD_ŸI{.jŸ;ýSn’í–²ÝS²3ê˜sç̃©Î8KdÔZ‰akè{h”„óÄ“Ï/åJaQ¦œäÏF¼Y$_n4Û@I$—‚xrúWÊ/”Â"ñ•šÚ¯€x6â]ê \TQ]™-CzM–o˜¢‹’{;×Äq™öú ¶v^ª‰nŸ5%JÌ‹*f$šþ‹Dy|&CdF}„öÝ\ð¹Ô1qó¨tr˜uË+’ý›z ‡$c8P)?ÿ®t*Þ×Á.ò3ØEjðJÁ¾2{mä•ìW|¯ù©ŽéŽOFÔJÒçW¼‘åÝÅêS'{nö ýªGT³ú•j­YûN. ûà@–NÚ„@’!G¯9;˜zº ÐëXµh…‘7æSÞÊD°ÙÁÃF›F²ñŠP EÉ"8©•਎GkA<mŽ®Š&£§£é¨"õ„Œ°M<é)Ô³6Ø6@caB…2µÑ‘owä›ÍQr𕵠#¦µƒ„'b_oŒ#묢Ÿ€°ÏBÅÔ׈ÉN †Í烵½7S”¾d ö,§¦ä«"Ñ«¢ôȼfœ¾‚ VQ:‘ÞF?3yND7!×%…·R¡È¿6)Ÿ~“»áŽú¿}k÷¶µ7<‚]K÷Ì). WV…½V“Í`»}Ùu+…žçßøÚ ¥ ÜӔ⭩±3¢ÞÞc·Üuô»¿v»}³šniJäé×íáRßhÏ]>V~§DÞ @ìô Ù‡r¿î¢š,•NžËžÕa.Ë™ë也Íò|à7þß>ò8oçÏ{õ¼ ÉŠįê²â<¹£1³š°GŽÛ&e{ThRi½èµšøk™µ7;5·ªòrÈíÊQª4E®ì,Øÿœjò¾M’¸3GÀ€f°5ä#o•­N®™[Å%Á6!«ž§/—wI }Ó–ùŒ‹¬ü3Tqžxx¬!pÞ…ÍžBÑcô9Q¡<¯ÁíÄ~}QæÉqæ½qq KÈ*òÈŠµNÎÒL{oÌñ.S.ŸëöÈ]&ÈÍ͛ȥGŽäùð„né)'D’y_˜!‚œ©O}j=B¢éÌÜû¿Ÿzýªåþôå°g䯡‘}ßüÆ÷ä†Ïž%œ]ZÀY?ûKJÒäêùüýÛ‡‡¿ÔÿoÀjÁþ¼V›EèúJö@Vö,†,\.-jL˜“™ü»cÏ_x~HžaLþÕ©–ˆlâosL¹‡ˆ2 ¦™a™ÃÌUˆ%<èª,†îÙ`Ð>©&Ä0Wàket‘ssÉ Ævk²ØWþ £üsãg¥ŠDp¬MÜ(ÚÈZäzÊ/« 3Ãg1wŽÞTÌ#þ¹ å†wÞI]?^wÁÇoݸ¹pcF_².qUHæxi ]dƒ©É‹>µJ#>Í´8òØŽ~ÛGìév°¢eœÅ’™àÄ[æÄ?¿~aŽ^b6â¢S³a+ ƒZÓïÒ·àÅh(Îå9ŽE°¼"¯ÂS‘$‚‰Pmx£îK:µœÏå÷¨^P¼Ì¿¥8¥8W¡ºÄ×—&G£!'˜áFøÖb\˜×éY`d4j:èêCFãZÂÍ! ›„piÜÔeä\e±f(Žã.YV6D<éZåÆn*3nkUþŽýÄîèN%¯Œ‘·t•‰ƒ^ŽMhÀ¼ýÀ½ä \Ï á•€Nr”$ˆ­cAr)90Ö? ¾ä9~ i¤£&t騑”Í´»ƒ*òÍ Hú9'ù¢“~iŒûÛ\å¢2÷–•æ—‹_™ˆ‹Q!}˜Y+vâC_ò$‡u.<|Ńÿ‰•´]לüÂ7*ÅU&oÕßžS|ïýúVVÚJ¯jz¦1V\üÄ57þÎT©öfÏŒXýù\®åÁ]©•”<“æÚÂ"»ÑU] 4L-•=Â~…YF¸y¶¾mÒߪ—é Æñ–Û·8nÕßâ¸Û.בÄ{ÀÓ!†î¯O§þ{úCèIýKz…ÌarìÐÝ£û¹CÅ]1wý.Çí¯¢—ìï94ƽóú}~±¾Gÿú‘þ4:­W{ôåúíh»þ›úß"rŠ|DØšUâüöÝ\ýUú•ÜUŽ ¨[·ÎqºN÷(zTÿúoý§È`ãrìÖUêçêç8Ž£_9ÔF^Íkø,^ËgGÑœ¨)š«Ž†„1‘“0%r›sšMªfC³±9w•a•qUÎ*Óª\•^¯½"æÄ—~xòDú‚-F‹'¥§Þ®Í0âA4Ø Óù¢7KO‰Z‹Ø;yÈ|Á½Ê„u±“ªhʵ°ÃÎéuX©ôsáð(ó[v“Ãa×éõ$fGØ„ôLJ,‡T~ñ(Yá÷é‡ñ£ÈÁÜ+pv.õ´ø{Ç>=Ö§tä늬>;æìÛí'í¬}”Ùsp;ŒÌ€gñ(‚ø˜h¡öµõ[ζ™ÇÚNqg© ¥ê;ùZT Êoà襙ø!~¾tmTrªUøy%å);¨yùNò¶þ-)¤_iÙ!|Bέ¯Ò‘[½dá¶öƒŒîo • ~tP 5érú!âÑdrÂt Ôi=õ(»ZHøîAhR/dUMQ¬É 5Á°F>éˆWâÀœ÷”¨òÂ+;|6õíÒx¢é`¿9;3˜ð§‰ŠòT`¡9&>H4½¦dF•Eâ“ÉT1–´êâ*ÙùÕ¢ê¦wJä¯Tþ øÐ? —Ã=ñÝ÷ „‚OîP¥‹æ« ̲Ì4䣋›‹x½qlz•‹îâžt4Â(Èæ’eàLä6pn1n„mÛcÈAF›ÕªV«åI0G5€ƒB w†c¸QF)hxÃŽ3FlÜܤˆ°*çtŽoAX;s ( ÃHíî;àÙJ•…„Öñ6«öã¶1«…‚⣑¢& JEJM™7à(£h‘ûWbâŒIH) ä«?!?,%À™Écuâe¾ïòìˆ~Dÿ‚TDmÀ°šŠh8ñ!nóå¸ §<•õx°'sÅëï <Ìúß-Î/uÚBèÁzôíÔ£vª_ç4&bæ%Ÿâ—tÎjqïcž ¤Ê¡¶{=}‚eÑi°"\°hϳYÀÒè-…E{ËqD´§޵!ò2Üg’6ò=9»xþüÅÄ­«^´¨±Îî»ô‘2¼Pp)mù¶BÛ ›ì>?fôœ± Kêréƒ&zw,›r·0ýVN#¸dQ¹&ONJËž®î‰Ù—8x®s4z…†yq¯°p xåÕàÁFãí*rÙ‘±3\†:ágŽ™s‹¹ÝŠÿ[Ð’?»À¸¬åAl zoår¯Õ¦¨ž”äörOpÏs2ĵ@ð:Q˜âSþ2CpáÙS`‡‰m O¢ú=!Ä~ñÛ°ÍÆ2D‚8¢ÿƒ,Cä‘Úe>Ù“ŽÜ$ÓŒ¨Þ_¯tMûc «‰¿úåç—HTçø·¯^»×Hß°è¦+–‹nÝï¬ Eg*-µáE’¦i…•}V¶ýY°œPcò¹^¡‚¥_ê‰j7¬–©_׉{U4+¹ÈŒß>“/õ¦îd¢çv¹øiéUf îI1R‰x²‘èñÇvòç2ŠŠ Nc1“õàTÍj,}œ§¶V#ý0/*ÁÎ\b©šþaY‡þ©_åKL>çÄWˆø½àc»üË|„—ŸY|§pSý5m\dŽÍjúo`CËBoôê9Ý­™ïðJÌ‹¨V%7¤ø}óØ’Ú>ñÚ‹ÃxS3,_‘š’–Ñ•Óý{dÿîJäŒZ­Ñ²U/©ÞWýC-s2œÖéåüQ†×F½¼ŸZÀŠó|Ú›í%6/ýŠ[ €—ØÃ4F¾Úµ 2bkü*4ùœ§™ ¿Gc6Ÿ]¤‚í[F,`™R°&ËITdRrT?”-JŰŸTb%íÛ I(­!äÓ‘Å1å£<>/–—ùª^¹7çeŠåY‚Ò×¹Aéó\ª\÷·‰Ÿ«P˸4àÊ ã8›ÇøBãØZà]rµKîtâb5x¼Ìã€jŠy,YÀþÂ,­_ öqa–σ´ÙÓíc—a½ ØÇréF¹È>–>¢Eäæäz.`X<Å>Æ hþ.J½÷þâ{ç™ü²–]&Èßü.PG¼¤$õë7~žú8P\:i2MZȈîíÌ{k‡ŸøZõ*}ÍÇ*µŠþaËï/KÖeþ"¬ø}†ü!(«–þv7­§xtü¾©8ö‚?keGÑ:´õ ô(Zž~7}•¡Ùè.òWJÁV[œ~å!;Pb'z$ýK4b×A|; £:4 ¶âQ+ BC¯ÃÞ`Mm–âÿaΰ°ÿíTÜ£<ªúžú1 9dëÌú½ö€öDögºÇ¹å†köœ›Væ=ßg~ÑÊÙÞ/øÐ~ÒÑëxÓyÄu³{—û çûÞn_?q!šO^, EÑ „”»sæ"–¦®’]‡È_ÿ"?)ê³t¦y4ÆÒZ*PfE˜E¸@‚eˆÇC,Gf¼O‚ÈG%X‰ÂïJ° ù™›%X ˜J°†q0/Ipê‘’`-Z+o‘àlÅ“òƒ¬CWk¯™X‹íÚ—$£¬ì f,»E‚YTš½T‚aïɾU‚å@¾÷H°ådO‚•hIöS¬B9:•«‘Ng“` ÖëŠ%8 Uè+'þâ{™¾W‚³Ù•úïJ°EŒŸÁH°Œ`]—S,Á2äÏ™Aa9¤krÚ$X†Ü9ë(¬€tEÎí,CŽœ]V’uÉù‘ÃZä-Á2p(¬%sqÍ”`¿«žÂ:Bù®5,CE®MæH;®$˜´#â3‡àÜuL‚ç®ßQØDÆãúL‚akiyï &é­¦ëâÝ.ÁЯwZж¡>Ô…Ö¢´B$(©ë)¼%Q/¸A©êé_ªï£~¤wÓ<¤ô@ý@shzÇÿÍ–¢#ãÑÈéA›'Êl‚´FÅþJPüÆ@–‹P)M­ƒ=.†:ë` ƒ´Öbho¸´üN:†Íë¦i÷(®}Z%=öÁȶÁ9’1“Ö@¹Aøí¡íÏ¡-‘•î•zï ëM¨0ÓêVÚã „çIz_KçE(j6Œ$$Íwêšl•Z å;阶ÒÙ¬†¶ ­uÒÒ4m.À"­®›èkj„ž»è¸×HX 8©2ƒž¶š;)ÑA©y-À×J3죳Y¸áézfæOf°q£IŠ‘Ìjl8Ã<o'í»àÕSF±vÊú%)§uAƒÒÈ–Ñrt|Ið -m¦m Ò¾.ñ$ÅJõ'q2@[NRÙDÇ>HÇ"¶'b?)Ñif¼ƒwë!6‰™N(µjm„¼^ÚF†N#t¶¤çj*QhüF¦àHm„Îu#” å7B«Qð¡Lm•Ä6¡Ug¨£—Î32QçÿÙ¾¶RJËvMéejiZkj­£p3¤òàÏÿ šÞ)KÀ'´Dþ§‘ø]HS—¢l¤¡Žp}7¥îÁ‹v‚Lº(ú¨äê“øyÛ„Üø÷¸wrõº%Y¼™RQ†‡¶Q¬fú$3Þ2E–l¦uE:ÊŒG¤«´¼8Âí=”&ºè.ÑEÓÖÑVº&(ƒÐp«ÔÛzÈßBË%a)•¡íËc&#¿EyÔEy [Ù¥Ænš¾†J¨m”Þè*^ _Ii^I*1&[Ù*µy©þ:%yKèp5å)qÔ«¥•é•Z¾Ô ÒYMÇ”(w.¦Š‹{[(ïm¦üÚ#a{mmð²}G¨üè¥å7Ñ–¶]´â:MßIDIÓAGÔG1ÛM¥áškÍy‰{©Tè…Ød¿d7줘å…(O¦è ¡‰ÒSèVœßà¿ÄÝFINÊÌÉö2òmÓ4©5)!'K&¥]‡ÈÐÕ´ÝM´wq>⸦R7Ùá 5ˆø¹ªO¢ •^HCÿlF“ôÑHç~ñÊ “öû!½‹¶™Íä>2@åöÔ5¸ß“-“ù%é^Ð)í[¨ÜÝ:Eü;«ŸiOäI«[¤Õ˜ä±L{¯£ˆ-qƒT ^’3+Öq®×þvË÷°FÒ1VK±©#Êè=ƒ°÷dZXòŸèaDôÏJG3@çäÁ/XôÈ8¸"–â2ЩĒ1È-œ¸Ï@eàH­ TÚ'q¤õÿ³½î¿3fò¢`ob?\º­¯kmÇš.þQ~éú.~a²79I|}r /9Ð1ØìåûzÖDø9ƒÿ¢P”4Æ/Iöl&)›øÆ^¨WRU ƒWáëzzøÅÝëÖnâwmêØÒÕYŸÜ<ÐÝ5À/êÚ:;ÙÓ™i¹zJ:O2ª·t l"Ý”Fªb|ÑÂî5ÉMɵƒÅ\>¥œ”Y-K´ù¥RÒù¥];6ðɵÿtRü@׺îMƒ]]|w/¿¦k`°ƒ„ÉͽƒÐÔ¦ÈDE˜}rÝ@Gßúmó“[;:ù]ƒƒ=]sº6u¯ë…ê›øžÝ:Ð òïk“|ãì…!>3“­Pl ‹ïèØÚË¯ÞÆ×utwôòs«ëH-±¿¤«§k a ¨$áù:Òz÷šŽ~m÷µÐa_÷àšõ|'í?Äo$Möv‘ilí"ëÀwôvò›z:VÓ&ÖÒù%{×tõ BcË6A ƒI¾kãæžŽÁ®©OnìÛ×NN®£wß¿¹kí†òÈ@¯4ƒiÜ´ð¦õÉÍ=À[ºA ¸xú¤¬dW7È?qÅH¹‰9° ƒÁŽ5ƒ“kL&Ö!zí¥›¥Cž¨°$Æê®LCDö V“Ë–Ôña¾¨2>£˜ŸQRŽÅc1µzÙHŒ•”ÄãàÏ(›ÁϨ(¯*¯ÊÖ\†ëþ)3’XTåCzÄ"nÕdýܱÍôRƒh3ΆÍêÃË–Ÿ,±]þ@Š—rç"ñÐãr¥¤|ö6ö9öEöyð÷_®ì´2Ÿ~~øù!à燀Ÿ~~øù!à燀Ÿ~~øù!à燀ÿŸ:œ°½ºÿ- M,u„"å&iÊæËÖ»¸ä<*M6]¶F&.Xw=ÀÛç î‡vyëmz¹L}Q–‰ñ¯zš,¹œB—+/æÎ§Rn µ-/_vz©iG'²Gäêm—­y©²S±ùùL+%sÊfÉfÊêe²J™ «•-U]®æ%Ë.ý—Vød‰¹ÿbî‚\å/Wn²ÄI·ÝðOf;¥ 6 ?° æË”È¿ò;©µqyzÍ”øßðÅÿbþWýü»<4ñ6¥<è(ºÄÏatUúûñêšÒ7êLìÇ£ÝÔ׃—× n¸'À)ÀžQkKA½³#UÕ¥u¡T–‚p „?påâRgàšÁ‘Ì7Àɡݳ¨Ünp¤ª z; =œE{Á&)ÐÄßF*ªi/Y´´´nÐ[´õ¿¡7¥ð ~O o•Â[¤°W ×Kár)\"…³¤°V k¤°T K¤Ð'…n)ä¥ÐIÿŽ,)Û “ý+ ®ýõbÉSÁð§¦ì·Ü0¸#àÞ§†ÎÐlìÚÂPþ(ÿmáƒi)»Áí7 î¸7ØFÔF¾N`oF1p$l'ƒZ÷C­û¡ÖýPë~HAàsàxp1p¸p È99ǃN²o¢3àH{ÒÞ„ÒoBé7¡ô›°xSc,û³ øÅÉþ€iétF#°à#°à#0ö“ì[ÐÖ[´­· ­· ö[Pû-¨ýmk2Ʋ+GØNç(û³‘züô€«Ó©¯+aë¡ùz ™z˜P=yÇÎ$ÿ$8hg6äΆFfC‰Ù0åÙHÎÎcƒÈ5k˜å°é:Ù™'a5¢a•V²Á‘rèÇÍÆ •Pa ®g !V±BóBÌ 1/ 3¾jBX¡D Äaù‘ ¥X~Äå“€Hiés¬‹Y†fÒ"® óJÛë²ØgŒ¾µ¡càÈ´””Òj¶‘¹ó$àÊ%¥u6Ÿé¡}å2É9Y„ÅæH¡sÄ1Ûy×1+`Б°­Ti¿Z@ÖY èÑB·Z -P„èH t¤djŽ´tF£0ʼ<â-Û{˜ù:ÍüBXÆð.¼W~ZÎì•–1{ÙÓ,³—9Í0Ï+žW2NEB±J‘TìRÈÊ„r•2©Ü¥”'˜ÛÌ4³2ÞÁ»ùB>ÄÏ“sÎŹ¹B.ÄÍS¬ªëf6À"®b~‹0ó[&©B0­!æ7Æ3ï€_Ç vðû(4þn í˜BGhiRgˆÆ¹‰z¤äàN2äÙ-—©Ë¼ÃôÐÞxæ8ôrJG,sœy„¦rÌ1È!|@ü8\ 8sŒ¹Ÿ–y„y‚;ŽeÞf6c9™_ÄõκqæWÌr ~_…ßWà÷eøý TOÝ+tV/ÃØ_Fip,J@z;¸>p»Á'ì¼sÛǼFþxø¸vp¤ü+h¸çÁ±÷ p¯@*ikømg¾„®cöCOÛ™kÁmw¸ë¶3ƒà6ƒÛn+Mé×nÜ&šÒn#¸^pIš²\7¸kÀm€”$ôÑEûHBIè# }$iIè# }$¡$í# }$¡$ô‘¤}$¡$ô‘„>’´$ô‘„>’ÐG’öÑôµv6±mQŸÙ„®ÓvišTiBÔ¬7&T'L |´›¤v»–b¤5qJì$Mœ'- l[§á£Èí¥ˆæ@¯MU­*Uk!§P‰wŽ\N\àµá?Ïniiz`ãÿ›ñ›—ÿoVÞ'Ù{Áàˆo@oBoAg(¿†V¡×)s: ‚ò”Y†^…^ƒ\ʃŽC¯@Êß&þ6ümøÛäoÃ߆¿ ›ümøÛð·áo“¿ þ6ümÍ-ÕÛCØØØ‚€@@ A' à/à/à/È_’¿„¿„¿„¿$   Iþþþþ’ü%ü%ü%ü%ùKøKøKøKò?«-áBº]ÇÅuV›‡ ´Hë3Pš…æ(3 MAG¡iÊŒCi(MP&AG —é¥_b¯€“#Ž Ž Ž ŽK—8.8.8.8.q\p\p\p\â¸à¸à¸à¸Ä™gF»Ê&ÀRÍ2-@9h‘Ög ,4 ÍQfš‚ŽBÓ”‡ÒPš L Ú@<)’’Ò‘"9 9 9 9Dr@r@r@rˆä€ä€ä€äÉÉÁ9à8Ä cƒ¡a6-@9h‘Öf ,4 ÍQfš‚ŽBÓ”‡ÒPš L ƒŽ@/Óu·ÄöC€!À`b0 A †C€!ˆ!À`01 † †ãbH0$ I †C‚!‰!Á`H0$1$ †$†C‚!ÁŠ¡½Í/kgøè’;è–ÛèšKè5ôÈEôÊzfG‡ £SÐ1}è‹^ôGú¤ýÒ…®èDwXè?º¥C[‚ç"ŽƱÓaìx;ïÃþz±Ïì·ûîÂî:±K »õk©p[Ç…?Ì÷ SÐIèiè)¨ÂŸ?‡wFw 5( @}P7ÔuB~¨b--x›ß´ÓÚ­ jxÀ ~‹âÇ?¢ø:Å)Æ)ÚáÝIãVÒx?i¸Ic&id’Æá¤a'¯ù_¬€ŠŸÃ{ Ƨã‚1U0F F¤` Œƒãù‚!0÷ó_ø ?£xâ'*²;ÿ¤ø#ÅiŠý;ø@Ù` þ{ÙÄyÿV¶ ¿–­9 WËÖ³æ7ü2³ê93ùekÙÏËÖ(†¥²õ†Å²õ4†HÙÆ0ô¥ÕgÞ¶*õ<¼ÃüÉ:e~o˜žuм¤reó"-m3OYA3gí3ªéñê0¬†¯ÌAëšÙ[ÍôT3GššŠ¾Þ¯¿Ó‹Y½Ø§ƒzqŸ^Ü«ŸÔ‹¦^Ü£ïò5ù}û¶û¶ú|¾-¾zŸæc¾]ê‹=êÛ_»¶4ªaK½Šõ4oÔTÔèËaLã>°ìMmoKÚ ^s]BK¤"<á};Ïs~ïT Â·¾4á=ˆp¯)Ác‘`¾5áµ¥^ꥉtEôÎE~^Û(=ý6šñöÒ´ÂæÏÔæaÌíÚüæñÚõï…`¢¢oŒz‚ ¯!9™.qþQÏ<í]¸Œ¥+|C¥Î·{MÃêæ—Ü<ÿa»7Θɰ–ÕPk¨éÐ΃‡£›„l-Þ÷f­ÿL;ùfx»y]7cº¹_7ºÊ'RH¯ëŘ^Ä QM¶îñ.$RiocN¬6IàUKù§ÒëZHŒE×µCjȤ×ÛÖ´PLݘ8Ô¶†“¼W‡æ ¡½ªÕ±.UǺþUשRuÝj¨ÖuR]çu¥¸‹–,ënMœjâÖ¬=X³F5kµšºju_MófQÕ|࡚ÎG¨éÞ´æ¿~R.˜‹üçÒý_g£\–úWc¹@,ˆå ¬÷Áê±Vïܜ߿Îú¹TK~¯novnþ˜gs.¹¨×ˆúK£«¯{«jy4-±ÕØXº´ÎEË£áÑX`6š¹á,…–À½wW -mb¶¤ÌBŠå,o²¼¬–ÅZV¬eÅr±bÇU÷%Ó%‹d†§ªã mÛV\õÙv+ii> endobj 74 0 obj << /Length 399 /Filter /FlateDecode >> stream xœ]“Mo‚@†ï$ü‡=Úƒ]ÔÄX?ýHmÂhIêBV<øï éòìÌ,óìÑj·Þ¹ªUÑ»¯‹½´êX¹ÒË¥¾úBÔAN• mTYíñ*ÎyQW¿¿]Z9ïܱV‹E(}t —ÖßÔhYÖyÂâ›/ÅWî¤F_«=—öצù‘³¸VÅaeª”c¿çKÞ¼ægQÊÇ»²Ë¨ÚÛ¸+ü“òykD.höVÔ¥\š¼Ÿ»“„Á"Ž3µØn³0WþNf¬:‹ïÜ÷ٺˎãé$ëÁ `H±³$ŒRÂ0å1`ÆÈ0'$€%Ó,à™[³f°¬Yø aÍ–€ˆŽ ØZÓÇ"MÓÇ2B›ècçúX  ]è“ÌôIШ¦O‚£ÒôIpTš>–5ƒÏ@Ÿ”½Ñ'eôIñQCŸí˜á~f†û‚¡ÁQú¤Œ ÷ƒÌp?†q¿ø~60ÎÉ+®ÞwC‡©Ç°õcV9yüMÝ nxüÈ¡È.endstream endobj 75 0 obj << /Type /Font /Subtype /TrueType /BaseFont /HAAAAA+CourierNewPS-BoldMT /FirstChar 0 /LastChar 38 /Widths [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 73 0 R /ToUnicode 74 0 R >> endobj 76 0 obj << /Length 77 0 R /Filter /FlateDecode /Length1 1392 >> stream xœå“ÍkAÆŸ™IãW±DSA²ÕªM‰!MÌz)¤ÇVSSZð¨l6k[ÙMB>jƒ¢D|Wë³SŽUüü`y ãÔæ[·u‘ºwÊ«Ïp%D}ºÓ-ÛÖ0úˆò&›=k¶Ò…a_³&Œ’å9_N&.Q?ç}£R®Õ£¸Ø:Æü¼o„—?:‰a_KüçC"Ëmx¢ vpŽôD¤#û³âÜê«•eüXÌÊûܵ^,ˆ˜Xb¯qtßÁ#f:µ«;~hæófæø±…œ›͘9–j­bQö‹>ÖážL”ñŸïý.{/ææbµ;oOw ~‡RŸüð³ù7¹5;\ ÙO7ì/ÖšÃuêVkþ×⯯Pâ²¢ˆ^÷+`'I&˜¥°MבXëÿÐ:u@ùÁß•‚\4P*Xµcšã§4‡ÈUÍãªæ0ã××ýíÅ=Í‚;÷B³äN¿Ö¬§9Dþ ¹ƒ™%ÍaÆ?R‹Ð–ÀçWÍô)âšéS i¦OqB3}Š‚fú3šéS\à.ÙˆñÏH!É+Mš@%¾G1Í\eÔÐä]‡o#ÌÛH c%®h2SàLãŒL²‚ ‹kÛÍh`5³]¦ÏŽ©d2mL4JÆè´]-ךµºãÕŒ‘’ÈWœÒDÓ+”Ýqg²áZÕÀ $Ì ñ¯ïúYDë<ÏQ›ñ ë ·X endstream endobj 77 0 obj 611 endobj 78 0 obj << /Type /FontDescriptor /FontName /FAAAAA+OpenSymbol /Flags 4 /FontBBox [ -179 -313 1083 918 ] /ItalicAngle 0 /Ascent 917 /Descent 313 /CapHeight 917 /StemV 80 /FontFile2 76 0 R >> endobj 79 0 obj << /Length 237 /Filter /FlateDecode >> stream xœ]ÍjÄ …÷‚ïp—ÓÅ`b·A(3 d1ÓÒ´`ô&cyûúÓJ7Ê9žïr¼ìÔŸ{k"°·àÔ€&cuÀÕmA!Œ8KIËAï²\j‘ž–øa_#.½t%ì=Öv8¼h7âS1_ƒÆ`ì ‡ÏÓP­aóþ´J„Sžy•þ&Vðc¯SÂÄý˜À?‘Ý#ðj´µ›rW/ig¤¤kÝå"(A«ÿ¿ò “ú’!‡Ûæ ç" ^Dû\Ù{()?”T[©_YPé•‹%zç ÷{ü9Xqñendstream endobj 80 0 obj << /Type /Font /Subtype /TrueType /BaseFont /FAAAAA+OpenSymbol /FirstChar 0 /LastChar 2 /Widths [ 500 356 556 ] /FontDescriptor 78 0 R /ToUnicode 79 0 R >> endobj 81 0 obj << /Length 82 0 R /Filter /FlateDecode /Length1 44108 >> stream xœÜ¼y|ŵ/^Õûì={Ï¢™Í®‘4#ÍŒ¤‘…Õ¶¼ËÆo’Í`yl0±$ÀØf±Âf,V€Û¹ aK‚¼"C ×!!ààÜ.pCprÍ– Ä/1Ü$XšwªfdÌ}¿÷>÷ïß´º¶®î®ª>uÎ÷œ:¥ën¸Ñ b‘¶îÚ5}¿:òëŸ#„^EÛÖm¹^}ì77Ø } !ñ¥+û®ºözõ[ËÒ=ŽÐpÕ¦mWþsåv!Ëoºì¯®X³~báN B›NÂ3š6@Á5“ÛD„®• Ùpíõ[c†Ûï…|-äÞ´yÝšW?š{òä—^»fkß~y5ЗüW¿´æÚ+N¾j†|BõÿÑ·ùºë×£H ¡o)äzßÀ}?ÒÌ@¾Ú`‡2 ù!)<Ãr¼ J:½Áh2[d«ÍîpºÜŠÇëóW‚j¨:‰Æâèÿ·?þ>8¢ œ~öAäC¨ô{8OÃùáä‚Ò9þž¼ºtŠ%£÷ƒÊ‰P=„ö¡:ƒЋh -@ßC3PzÍE¯¡§‘mï …Ñ,ô8Šâ bÐäÆ<ÚƒÞB—¡ô:…¨ýÛà9³Qr¡Bé#;ÑÝ¥cPK:Ðѳx^‚ÒžÇÔâ¼ywi ¹Q¢t¢ô&ä¾…ÞÑÒ4Rï#+Š£è«È†®F¿(ƒ–FÐZô¾„B¨ÝÃ帡Ò5h:‚~ƒ;!µmãßÔA›à®ï`7+½[úý˜Ãè xÒmènhñA4ÆÔ³ü~¤¢º]ŒÖÀÕ›Ð[ØŽX­/Í,íÒÇÐ_™ó+B;Rh>Z¾‚¾ £ñ:>ÁœÇßÂOÁñ+ügþMh['ºm‡¹õ-½ÇÐ÷Ñ1Ü€7ã†Ñr£$Z×v£Gáý‡ÐI܉{ðþ û(Ÿ™l/9JÎÒ¥ªAÝÐÂ}è'ð޳8uà l5{=à®ç'¾ =\¾‰N¢_A;~ãþ ú;®ã÷Ì­ÌŽÒŠÒã¥÷ - ¢t Z‰6£-èFô/ðU_DÇÑÿŸ1:¨ù÷S~;¦t?Œm Í„¶/†ÚKàÙ÷ÀW:ˆFáxziÅ*ô¢_Œ/ÅWáÝø!<ŠßÂo1bú™?²#ì+ìo¹&ž/µÂ“\(ï £h|[a´ï‡þ>Ž~Š^ÆNÃuУ7àþO™iÌ,8¾Ã¼Æü޽“ÝÍãïš<5ù§ÉÏJCH*› ãpzFá/ØmHâ«ñuø?¡åÃÌaÖÌÊl˜Í³3Ø¥l{7û ûsö—Ü÷÷6?Ÿ_Ã?%®™üÒä¯J¥;á´+ŽjQ5ý\ Ôt ´¯Žt3ú2B÷½Üö£§ ß/ —ÑoÐ;ècø‡ Íáí×Õ݉ïƒcþ>þ þ)~ÿJ¦ŽÓÄ´3Ìæ*æN8dN2o0²~v»ƒ„c/{”}‹CÇ•øF8æñ÷𠯈 qž¸VzõÜøDÍDÏÄï&ѤwrÕäC“?™ü ´¼´ ÚEu¨ZºZ¹hðQ8žJ<Š^Þýï´­Å æâj¨…¯ÖŽçâùp,—À± Žx%kðZ¼Žx߆oÇwà¯à¯ÑãзGñø(Ïàgáø ~¿ÿˆÿÊ3,Ps”‰3i¦=í`æ2‹™KḊ٠G3Àl/ôsˆ9ƼÁÚÙ([Ç®aûÙ=ìÙÙ×Ùp WË¥¹6n9ww;÷÷+îMî3>ÈÏæ7ð{ùŸ– W ßž>Ή‚Ø%®o_KR¸ÕÏ ßG¾ÀòÒÂkø:ÞÁmeÞ…y¡°}üN¼ FL`–²›ØûØã¯ÄgX¿‡Øì5¥ï°s˜¿³›ñræ\ÍùVöJt/*᧘ß3g™8'^Ê|„ÜWñ3Ìf¶ƒ(_ý5çänç?DˆùwÔÊ܂ǘŸ²·³·—žG­ü^ü.¿—ùR¹SŒ½ ³z'óu¸é—ÌFæÔÍåøÏÐF÷'ø­0ÞÓ™»q û:·½Ç†™¿á3ø!à'ð.Â\ÎðSÀq'pã~Ô‡¿†4ü~"Œgà #|­Æ„›Aô`CøuVzHqŒqâ.æ ³Œý‘p’Íc \âßÐvÌâ ÐÎÔo} fÀƒLxÚlà&¿ÆHA_~vòG„cóoò÷}›­E—¢ *2¯ V˜ïÁÑîBèY Á»Q†ùº¹4ˆ×ß_ü“A£øj”Æà–nhÛ.¦xájxëßÿÿ¸~'þ3º«0³ÆP‚#Wîåfgêþ{ëQrßD÷ Gø_£ÅاNî*ÿ-ºdÎÂû½¨ Ú·}›«…V«À™ûáŽoNÎCw¡W0ƒn6O‡yÞÅÍÎûPéjèáFQ A&¾Œ6–¾Ž:àÛ]Zº½tZ]úvé2tZRzøï–ÒAÔ„vò=Ìr>Åå€Ç¾Œƒ<ú|ðíyèmàGQ¬ ?ÂñChÑtþ94Äý;ðÎöÒ½¥ß 'ŒG5ŒÐZ¢§ÑµèÏ0nóØ1”¼˜9PšÃö„z]Rz¬Äz´¡´ 8ïУ"¼gøGv‘6sÙR­}úEmÓZ -ÍMù\¶±!“®¯«MÕ$ñX4®©Á@•ßçõ(n—Ãn³Ê³ÉhÐë$Qà9–Á¨vvxN¯:ëábáyóêH>¼ Ö\PÐ;¢BÑœ/ÖQ{i5õ‹55¨yå«©•kjçkbYmCmuµêì°:rbVXÅ+/é†ôWf…{Ô‘qš^DÓÃ4m‚t(7¨³• ³ÔܫΙ³eÃÐìÞYð¸}G¸ã }]-: 7@Ò©w¸ïvOÇ4Á¸g·`d‚Fxófx³H FØèì5ëGº.éž=Ë õÔÕŽàŽuáµ#(ï=£Z ™‘ÁKºËy­õDZ:Õ3Âô’+cSWœËÈ•Á©+çoï ¦:‰sDŠÿ³È.ûì ­#Øõÿ¸|Eùzç’pç%+»ÕÙC½•±í\ú…\ùzËùk•._€á¢0RóÃ@z—®ì&ðÇGç„goìS Ú8bïèf}LO9ÅøXú( ßËÎ?™dºäY\T ô¿~T”€€i VçŒÈ½óÊa>úÞ4Z:Cî¢Ñç·Uú4Òšúb~Úò_hžqˆ…s1¦séÊ¡!ý®Íf544'¬ÎêZ3Z\VåðÐ1¶›íê›Ý;õùGKÏÞã™sotbnÒfÐÌa|÷%4|÷’•ÝÇ@×Uï^Ú}ÁLGïÌž¸Ö}LþLKRJ IF%o0+2­ï;¦!4H¯r´€æ×bDˤ©2ŒÖ2å2yªŒ2®\¦Ñ2ò#œ¢ci÷…4@'VO‘ì ¡,ÐîE´èƒŸc~ ØWd^8ˆxn”ùñaéE’8‚‘Gøà:ƒXœD:| ¾))ùÓ¶‰¶‹å³m‹&ÚP;¤ås4dBÖ5 ©~NeÇÎi<ú ϼ«dôû qQ´0·h™•he`º;°+»Çû­ø÷½ßäýcüƒ´±moË>ܸ'ûhäÉì›Þ7ão&ô\ë(óÁ!ËUM­£¥±CþꉵÿtºsY-T 'kÔ |U¹Y‘YÑ]Þ·ð‘·³ïEE.‚£¦F™u >¯#àŠ¸ÎL}ãìÈ‚Ü ÜíYˆ±ÊHn]†WFz[ûZ[÷·JÞŒ·± ±²èž4'0lÀXœ½;òpä­¬¨¶j­]­ë˜ul/ß+ôн™-ÂuÞë|}ë#×Å·'îîòÝØlýEúíôŸ"ÿŒxz$KЧ UËAŸ+ÎF Ð$Ÿ FØêdKm–­¯Näó:W2áv»˜ú„$é¤áŽA?¶æi4“Dƒ‡ÚgäHöPÇk(_¸ÚõŒŸñ/ãRÁ–ÚrAž·iÜ~ŽAœâXŽêMÖâ°ÊanÿJ‹Ö v;³¬Öh±Ðd‚°`‚Ef–YT’µì-´þÿ té5€h”Tê⳩TÛ¢ñT*5QìOû;º¡¶î#Æ{Rr[[›|¶8@ª¤R@"ò89­¶BzÜæ.XÉYÀ$J¥2Û´é\8¡°èõy|Œ Ä"Q&š%”X§Å†,bY6‡²lÜ—Ìâ _ŸEѪê, 4²ù, X¹-Õ/éʯæËðÃÅ~<00€úQªr c»Ü.§C¡|¶€“5…ÃùP£ÛEÊ£.W¶± ðT,\-ZI’DöàWæ¬|÷½‰Á첨»*¾(Ë,øîº‡öÞdDÆÒØQ]Á˜0Œ¤ïÞÖ¼lì22½FV¥Ñ#glSFKojICa±²ZÙ¬°ie‡Â(·eLzœiÓÚèv_Ý`S—‡qeçhVÎP?V‡ëz£(k2s9øsð„eÙçðU(‚¢ä抣ƒÑá(§EÏD™Á(ŽÊ¤Rô9¦±¦w°àÅWi_ºÐ jæ‚ jí ,Ÿq—ˆÅŽé_RRÀx‹ý©EãgÇSòLÀTÛDªM.Ÿ'Ÿ8]”ÇûÛÇȵHT*}@ 4u5bTì!Ó‘|.:çæ§ùü½¹¥©…t’^b„PµZÍyCAEÖ*»Ùì– É«ÃÓø‚µH9çs›_öcs5­B›ŸL3hÌ4à/USC&"=µ÷ bG÷Áv.öàb 8Ü=Š îµôY†-¬e7iž¸×S”°T»/Ž{ã}ñÁ8«Æ3q&þ,VQ#VtN1“EãgÛd`d~–B0? i˜œK’ãðMNŸ%2|œ0˜ÓD»Ë⻣[ÓGÂáˆÉà0™ ;Íõ)ó-òñÉŸ/`xT9M“e":\¯êL9”ꡜǟHU&\Ðòc!)ù‘*üHLð~Œ¨Ð.‹rx—î3ñSùSëg Èê'ìDóìÃû˜}ì>Ãæaç°wØ7ìßSýõð¾:c±§˜Æ¬ªÒátäžÚG"ÔòÅèœfM¨ž‚.á)`M_`àô¥/x‰Œðè õPTKOrÀÖnVI,è ¯@#O!Bø”½.G ]>KkAâ´–Bª“Zxã©¥¨£ì4÷âÐæÐ˜Õ›¯ö XÐH-¾Ã3äBµ`Géö7µœ(ÊïÇqºÐP>þR*%§Ž7dðy–gRmDP‡hHžs¸³³’˜1£œÐ<ÍÍÂ2MÀHØ/0䥠†ªE;éÞ§šŸÜ©ÓÁ´fHÊÄX, $=;CÑ$>=L.’gÈ5E‰„­ehuÎ2ƒ„¶¿s¢ýDY “f¨ò Gpo¤/2Ù9áÕHW„ÑH!jBccŽÆ-­å¸.SŽÃQkõoNIì ªMÉ€mA8÷ÌP¡YFÑ> ]) Tmí6ý°ë ,¡ëŽr¡­¦fÚdhB]^ðG"Þ¶exÍ×jU%Ò2§tš]’7„?9(qx u3^ÁHˆJ z‘@‘³àŠZtbo¨/Ä„ «G9…ª'¶;˜eøÅQ‚ëXÆzSÅöãeò:å;` “º®¦.‡Â œÜ¦<ã·/å–ðK„¥b·¯Û/^ÅoáÑ`è°ï§êIõz×5ã¹x¹²Ì¿:Ü«ôú·(þ!Û}öaë°ò=ü]æéð!üü3ñgž¤Óþ?ªg±"0 l+l÷ïQÃg¢UÅ?*B*œA€Y¨ 1’‘C¸74bPH©¡®é×phh$4:::2…®¬zÄáÏ\QÝ{ó £@"­ÅV€NB¯x±q·‘1¦e”AêE}h 1t éHƒž¼Î{»—éòâ}^ ÒΨÙÎi" ª4:ª;Ž1_ET ô/©Ñ?Ñ_<Ý?@ÄN*Õ>>ÞOeÔi[e>ê—T­«º®Š}  Pl ƒ––Ü‚û‰f7@¹=ÀJ$+„ŸvÌËr²• ž; *Ú PW?5°šÉçP¶qŠoÆâeŒè(#BvAôÍÛ¿ù!Ƈwþ°¡vZÀj‡§¯¿è’oïZ{qs_vä_±ðî›Ø¼{Q,sn ¬ýöw?ë¨'krŽÒÿbÚ¸Ÿ ž¨PV´J³ÝTi„º F…PŒÑiǼ&ífBUöÑÒß)s³¾GhÏNä¥H»Aªµ¸ ¼û‡†ö'O¤Ç—ùXê1ù¥ô1›Çm$ ÆECçiŸ)ïñN%<Ð$ÕgÀ‹;7:ð|¦¯Ó@<û >ÌS>ÆK„]ñ”ñvÂÇI)i)åcø'åcv{•¿ÂÇ@L<¶}âd±8&Ã-NÍxø(¾cÈ ˜a,¬Æ«¦½juçç ®Qχq_Þå‚[lZm\múDáÅ©ÄÖåT<^“ÀáÛYg¦ÒZ6Ã0X0æI£]¯9ßuþÅÉ:¯pø^E†Qü±V«±±>]5RÅT!Œ9Ž8ºìxÐŽ‘]¶ØÇì'í§ì‚½×ÿÔ® ó"¶.rÏÇåq Kе&NÛ†<—Nc«»€à´U"``ýE H" ³Î°ÕAEo–P\,–·†ó 45ão¼‘M„¦[ãáÁYõÝ5_m¾®Îä~2ùë9?왞L¬]—]½ŽÙrmœ»‚h &´ÏÏJà#ªJÔPmAº­qŽN\ b+•¸Vš· F#„ABO$$Ò†\†ÄŸ5+!¬ ƒ` ”žÓ ´"–YÅåyŽýRP ¬yq|s|Gœ'DÅÈŠ@ ‘`4&ƈ2Y¡Bú¡Çˆ4•ËÀüÎÓb˜<.÷nÖíÐ1:x€"@K) Y9B?¤ÿ0^´RŒ\(  DÛ@?…kΦ)nC9hÜVl@D´MI¶…×mkž—‹„W8mκŒÝ4súdjNµGÏ›ÂÞ`\ìÓ¿üeGm¼i¶#yùäü…q_$qÉak^·ÿ"?q@/ ȸ öAe2zqÅ5ò±A9 4€ j‚dÕó_] rÈŸÖì„6T/­èµùI=Û{²•?Mœ¥ Ìy(ÅMèD‰ Õ¬Uµfƒ(©ƒ ’¥ßICÓ.\Á_)½“ºZVˆšÔ+õI¬¤7¨Å‰ºá©åG°DHë …`J@Xõr$祄äÕ“2¯M’b*åTª@ T5­ý+åU¶)ÌE”WÙlñX…¬$„@&à‹c„qµÓ¢äT‚\Ç{Aš«q¢cĹœ¡9تΠÎSy¯d_ ”-Dãa)Žgˆi–jˆVI£x¶f×£hÔ:Ò³Þ 7B*±™ÑÆ܇÷á×0‡G™çµ¨ÍãØl]öa;3Áˆ%LJ­°)`R±w|‘AvÜjÊþJbô)œ§GP¿dŸßbõ[¼~$[}r•¥°ÜÈÒ"e\eÈ›ç§øP§˜U¸äâyv%ä ÆÍ“®ÛróìEýµþæyxFO{êÚÎÂJöÁ‰ßì›ë·†û_œÙsï Þ3£Ñ‡£ v5-dÄ‹›™(à„…@£KØä@Uì-S\Mr9œÈHLÑÈL#3bfgFC Ãfà>$§À⃑„fµZ!… ¾¨UD¢,2"¹Lî)jƒz"Gt ’‚Ä/ž!4Í5 p{fû8%b±¬¼“KŸ#®L–UÎA´`«RÔÖQ~£D^¢EuÉ¢*ŽˆÀQzÅAq¿È‰÷sÿÂäXò*ºF,61BtG0ý$Iè-#é-Df)2›ƒ2IžWÖ¨ -/S´­ÐRJ‹Ûj¥èéE½Ž7XÞ£ú n8]š¿¤¦ÿŽ9)H 'ÉJ$r´xIM}Î'xtÝöË]«Ý+•U^³:AÔIFÞ9_ØÅÜ+ì4ÉwV}‡yJ9byËò¶|–ùk·õŠ0=¡w»t?n9#‚Mw0¬îY@›Bé”¶ I7‡™«[\Ê,Õ­e˜]ö]ž=öï꾫•ŽèFô?c>`NÏêÒI#ñ¤Èô“˜ŒÝ0 ÚpÇ[8ʸœ¤©v[Á¶Ú¹Ã¹„9çtú~MV1J'˜re œ#øtž­@Æø2&_D|Ur%|‹ ovípív±®³Ç „3Ò°Äd¤ÝÒ»+KeF3"’éI³“C»]±µš-cÖÌ]f™e³jfϘ±™´Dciît”m(©þEýtÒÁ´“Ç‹ý)™ØBR©`#IJ²Ù‰‹=)"Îaž‚ÄÂEÔÒBBG÷aa†éDÄ>z ‰ð6C¸`Ôê &8 '=˜(ˆåˆhŸ}圯|­’Ó—súrNGsšYWpÊž‚GµL*µ.àÔL ===v¡l"pW±Èªh(FÕ-ám¼~ýΕwÖ¿øÆ£ú_G~ib'~œ—=ëš–ÜÎL{õúë×muìú=Æoý ‹¯<ÙÚiѾ C9æ÷1À,TÅ+óÛï0 Dh©’e¤sÛ(æÑˤB.’„f'…­Æ¹£’AŽ"‘0ãŠzU!ŸOP¹NêyÉÍ>*8`£L¦–Q&#GWOH’ãFcy¢Æ/‘LŸ¾„̬ٶA'~ÌuÔõSü²îxÕ[:ÁöÏÓÍv­pÞ‰ïÕí²¼åƒZcž£l_¿ä|ÙËhA<_šj.À¥l†öÅÖ8|’„]\/×Ç s#œÀ} ê‘¡]3î•êa-Óc‹Æ®XÔ‹º~wDü˜R(Ywêý«ŸZHbg ĦK» {e ±e+ÖÒ²Ò”çÌ:ñ÷üÑéK&ÞI&fzì>Ò¿±»5pgƒ±zÍÿ1»pâ{ƒÕµ‘HbÖZfå¼¶]?¾aV]K ºÖno¸ê™ó Ö”~ÏZù…(Œ>ҦͶáÕöÕf½»Ï}§ñ)ËX”·)8Õ¢ŒW’‚>&T]ôáPØ¥øe—‡ÁLÆ¡9˜.P¼GYýO¤«ò¬Mt3ÿ”GZˆPª¿Z§Ë€Û-퓞–ø@¤•43¤ºD¨ÚA¨_r‘º’7ú.|ØS‘è(Óp(tê_ÈŠþé¢ü)Œˆ.€Žd ØȰö6kY‡™‹^ŸÞè5ú§aƒÞgðL›‹TÏ-öÛó!'µœXé|¦Kn <¨8¡ö:ãW™Ù KbJÇw¯¿|“'T«fãîˆ/mÒ«© FÔí÷üø+ŶO°fUÓÌ¥ìÞ«B›BÆ´!á¯0¦ü²ö¡EÁf$¹ÍS&d —má‹Ò=Êf¼A¹6½Mù:~8ýŠò¶ò!þ“b2)Xï2s2l“Ò”™«°®L\‰eXAá3n7›BIÈMC­î‚’÷ä3í‹7 íh‹²Ís}fíRîÌìA_Ï<¾—Ùß8Òøªûee¬ñ·î·”“ãî?*ôœjüýÓý_™è<<ß='½÷¸—§¯voõ¼¤ü4ó†òFæ=彌¹ì¢}ÞPu}ЗU3AŸ —}BBA_<v+J5¤xö(Ê(ó²6=“vdw&­¤qÚîöz±BJ™óðRì‡ÀÂß}iÙalÇå@.(е È¶’”‚0ÚwÁqpÙÒCÎ?ÅÐ…3³yʬ›a|ž–¾p³s&Îú¢]™ÉDfyÄå0w.Áƒøc|¦WD\þhWzb,³"ìšø„»áÜ–[‚5ÑhN`·¬LTÅ£ŸýG³ç†Î_úìB[_-ƛыȀRši‚ÕtZk^§µçWëð>ÝÓ:Fw§ñêíÄD؈°ÝèÖiŒÒÚŒúú3^¤a}Z#Ï]Rú]Îo@xá1¤/:h,èl3fèfëç:«¹×t8™lIj¹ÞÜk¹S¹ÿÒ‹(‡gèv„·×?9y¶þåúwÃïFÿ£þÕEó¥ä(¾лŒF™Ó‡Nfpf”ÍayÙ…]£xß‘*-•ÎUâŽC²)™xo¥JÇü§fèRUfXݯ2ê(›=4bÄÆQ< åÄ¡a¸nSåGV‹;ˆÒļ§éµÞŸË19[ÓŸÑì/Ø»'û,à+¼zÑi¹Øÿi˜ÅYœ–MÔ(|‹D3©`út ¦·pB5Py$ qØ#¦W×â4W·, âk±^W/dÖâ ©j-Ðõ% ?êÏJiqõ§Rö)Þ-—Q_̯°ÊmˆWÏt¦¼æ¿¡õÀßY1óÙ[ûîŸüÓ®uéÇkÝêŽÖ\ùõ°7˜zèbuñ¾y_î}d·`××®^¼òÁ½ Goùòã³âUµß.önZÜÙR•˜Ð_~Çâ«v||]_é÷â-À‘ l Œ4ŽêpK2æ°’¥(‹­ÀÄ¿.ãã 6Æh!ÝN–×Û剓ðÃiª²é“h”ô:Q¯ÏÑfVìceñ¤ËùˆÏÄÀîµ!Ѥ˧èz¸nÝc:!&¤¤ZC˜°'¼I_M"ÞÐ$¼¹Ì\a–Øi˜ç[*t‹ÝR¾ÛØííÎ,mØ(¬76x7ø®Éná¶[Ä-ú­†›Œ7y·únñoUoHßÉÝ+ ùïNßÙÕp¿¸Çð€ýe÷¾_K?˜y\zR÷¤áIïã¾'üOV=–>$’žÑzg~–ù‡ôùª¨ 6¤¯ÈlhØ¥ãZ|››ƒ_ªã®¯6èØNÝÂà¼Dgšëñ­H_’a»Ä.i¥åD¤g ¿+]ãOÄ‚A7¥j#Û´V_Fçç ÖòÈúl’hÀ©·1„_µAëú)ùUV¥ ŸV«óû%Nï÷ûª ؇ì^‡ÏžH'} ›žÄ|ñBC‹¯0Zê;ä3èÕÑÒfÍ‘‘DÕh0Tû ¶Ïë÷tz=áŸNŸ üé*Iª&Ü8“nD‘\ñg Û`·Å‰BÁ†ƒ^/I¢nÚ^áÑøfµ|CÙ‰:åÅê2¹LÃ`Ãp»¸auCoCÍœj8Ó 5|(} »Ôà;â5<˨ȋÿ©ˆ“ÒI#k|¬uÚ(sõ¡Ð5CÀaÂöȧyâìYP5S©‰÷Q{…qW8øN¾>µÓ|Ëqˆ• R%AÖéS)ÉãXû‡¢ln“àå¶ÊôË?T¤ê#¦ë-š#‘p™Ú$P3ÐdÊË÷=ÄÝÇY-€*Ãþbeï,¯Xc{œÌUŠ>/ÄdÍš”ˆ·äg©É»“¯LžˆL^[gtÌž†?Uò-µØðû„êôšì=ÉÈ‘–\æ0S[åŠ]Ä/ŒÆrá;>{Ž]wî[Ü•·ºcÑh4S¾uBdv¬jŒÙM6I€¢dvÇDùÓÍwB2Gɬ6‚þð_ «f™_WôwžÚK3t¦†fÉâ lUOráªHR¢z„Dííµ·K®¹Íå%\FÇ\SèÍ5å¨ç"ø©îBUôæ*ú *úˆª$]JR³|²¼ÈBgèS’Sv|HüSÓ“;’ÈÏD2„é4brmh4ýTÎj8£äJÄi½µ Õ¢ÓiP_>þX~'5þØð+ij=$S±ç¾ºtyÚE”“ ]Qj iÚ€†òó-‰ê8Õn$ªÑH.†¹h‘‹Úf]®|UÑšU´ Š^¬¢%¥É©urHüõR#™Ìç.XV»`©œpÚñó«D€ø@–k5y)OLµ™|W¾7ß—Îóu ‚Óô äFòÂHþdžÉã^(˳U’+°Œ²ÍZL" ª¥dÀ¼ \• „GY³Vnˆ×ÌÈfùQ¸1K{ ‡-³Þ튈ѰEê\þšÄIÄ’ëKf«"5ÁdW²7Ù—ä“ÃÉ‘$‹’r’IRÒÕKöæ¾·ƒ TeÍi¢OÍñq̸̧SZâa.êaÝ~̬õ-ˆ¸à•Ý`‹ýdu”hܸŒÉ爱‡.:w× ?_‡ÈâÎoßß¹Iu™ 3'§Ùµ¬ž›±èÆ-sCçä4ÇœKÐë[°#ÅŒ¿Ø¹¼íæÉm+‚$Yãoé¿m²ªèªòE"s×ã¥Îó’… ]49‡ý˜gÓÐ|ÔÃ~]»ÍæêúzlO‹êäUÌ–š-KT#Ô —Þ£ríÍ‹Wmn¾!Ö·j7·›¿Ý}‡²;?4ýöÙ»;ïZü5÷×”=‹G¹cüa÷aååÜËc«N®:µêÌ*ŸWufå¼£)¸ŠLZÐÔîC.¶)´À‡<Ÿï†ÒÙí4Ŷ(™”6³,J„/ Yk`eû¢OG_ˆ²ÑQ¼÷Hwj0„CPU3‘º¶}¡§C//¬ò=4†[BPWS†à”. ¦µd2/ Š–4ûf ï a…ÇHyaOîe4£g>íÁ]žAãyžù7$ »µÁ%½ z.Á—ÔÖZý˜Í  @X@‹ØŒ”3xsfwf_†Í(ÄÞ]ž“™|¡ž\Š—’¾™€g@â‡eMüŽÎ©¥Ä ¦7Á¤Z &p‚êénonw/Nô%Æ'\ÂLj&¦ØW‚p-áE‰ÔU™UÚªý0æü*r«ß`Ì­2ï~hžC}\ç4¨.lqõ¹^s±.âH×]Fb¨/¯D»Ḛ̀ïiÇí X¦‹Åˆ•Y†¸™òTåh Oe§ü€HâÒGvãÊUÏâ­(„õvɘ¢zìÀøÀMŒ§NË©þ²v›*»¤÷˧ÏBv€,á–´ï“m»<>zQ±©•‹݇‰“SìI œ/¦ˆ/Ùá×¢ïF¡d€LFêÌ|N >¦uÄ@R¤ËÔÔÔ¬éëe Ñ<(mõÄDg+›èp¬­ËlÀ¶W|%¨“¬›ôJÙˆG1›é]¸ì“VäX¸0ùüÒ•'ößÞûbÊÌ ®ñ‚ÎíÕó¼¾Á£ŽXÁaUEŽåu¦¾Kû×Ý¿¢±IQ¢3uë‚ ÁðåÌÎ-Û÷®˜9°}ßʙ羜íŽf"ÓwÌ˹\œcj+ýžÿ!ù Œí°Þ"™2 8ìÂÙ‚õsq‰fžè ÎWÀ¼Ñ&‡°K2žp1vPÉSnÍçh\›¦±v»ÎýÍöYðLˆ}Ö}LyÎ;ú‡È?áù¾÷GüQá˜È?É?&é|ÌÅ?"[†m»†CüFçz÷õÜ6ý`ˆ_éZáî ]!lùUb´J¹¹ÇÉk¡.´”]Á/x5”ãZœsÐ|3’bBJ8.…ÔP&Ô:â+òÛÌ!Uïòºj`rŠ&ÒEŸš(Í`·)¼Ò.VÀµñ§-NÙg1KP9èø‚£¥šÕ% ª$ŠÕ@ @¼ |œw¹!ç‚P4#FtŸ¹±ûƒŒKs »Î¸8ׇ§æìrŽ8Ï8yÕÙëìs:9ç(ó§£jè¡2Ü=[,zÎO‘Ò^±LtK ìçXöÿ e fí/~þ£K+Ŧ$¯Ó+¶‚E³Ñõ££rA’ìdÁäÍ£ö‚>Q^N:`)LÍžEì¬Y‚bãX… ñj<Ïÿp^4ŸœŒG'¹¸ì™?©¹¼¥÷`-Ý:›7*5…®øìVî«+Á0êê#WŸ{µ^_W•7`†"Ћb,ü}ȉ¿:åIé.}Zö¤t,VlÖ.b A—/ý•òF#ñ› EÆ)gI#Yî¤+-ÀñÐÅþy€‚œ"² 4ØšŽ<܉U¿“j3ìsŸq³nj@ž“#±ÖZ˜–ÃõM]n¬¹»Ü½î>÷°{?TÉ€¸ 'B<숛fØŽYÐ$QÐ#1+)oþÈOË q—÷ûŒÃÆýÆ3FÞxÐuƒbiµ·}î·,’j:Ô#ñ‹^ˆS®7yrs'ÛÛë½æ âMX±•¿ï³Ë[ª¨Ç!«=2×+‡©7F´‹MìƒðmŸÐÒ6‰S¸}Ü>Ó>óÜ('îsc“ûSCSê¶t9Yç6Û-—s—ZÞåNZÄÊà'0ëv±ÆÌ;y|»ø^žá3Fa–_oÁ«-›-Œ%ÃèQûÄ@±HƒònÊÖ¡Oey†3@¡"Z#ÏÖ œÙb‰°œƒe9ÖÀpl4»Mä-\ùŒÉ(È«-Ø’ÁŒÞò3™ÇL×jY\¿ºUße“fê3±&oÚÝî^ ßÏXoÈ#3—ûÛ¡»èæ±þEgO_LÌŽ‹`NËp=„m4˜jcE¢îö–ã –Ç?Fò'•ˆLhâçWÄEº@j.Ôt[;›€.±™ aÑH.â*XFK¿=ê*p I¾yÔQàúl$9|¦½â$É:!i¡É æû”_ZfCy¢*l¸9äÄ!™›ÙË çÞdz'__Óf÷q Eã‹7vºeöL~ak<áÆ“Ñs¯‡kÕ«È·_[úÝ’%„ZÇw9lë l ìàw;ªîå¾R%æ™|h»L]ºÆ¿…ßæßÉ y‡üßa×íŸ [PÓÿWät¹%‡‰aÙQì׬jÈ¡²œòúü¬¨p<”î;¤ª!û³øHaíLKüÄü!BzOG><÷qI`ÄQü‰¦×ÂX ÷†™°kÿã¨ÌìtK¢éTMÞ/3²§úYü5ü5ù..ØT$.oÔðw•ÝßÚÇ©¹[éö¾)£1"™)Gê<À ¨·áÛ˜ÛTËŒ¹¼8h¸†Ûl[èãûªx²9‹!‘+/ ŠçwêL™öŸÅì¶‹'7ô`Ý#w®¸ã’ë¶mß\öÆÓ‹n8°÷žk„9~á“Gã{ï½æè`¼yI£?%‡rvÜô›Ö:‘±o1¤ü“ü5(‡‹ÚR=7§žñĽ FVd£6iM½M[¥>¥Ï³µfXöŒ(#C]z‹a§Ušê½]M}M÷r?àN5qFö.ÃX;O }ÊߪmAŸ;ÎùÐ(æ1>ŒŸÅ‡`Êwj ×㾨e͉jNÔ&  °ê@µÕÚe¶1Ûbƒl²m‡­dãlõ®²–NW®˜¿k}[W [bÁ#^&‰Éäzl~~ýPÙÌ@wÑħ©4Õ%Ë«;§é*0|®6²7ƒnͨh‘95%ÊR4OÆkâ¬`ŒE¢–uVƒ²ULéë) ¬š§!]\¨Ã†¨¹•W„)Ð,CKø¬)â@D¦i?¶‡‰!G%µ¶)Ÿ¡Š©‡Ø÷NªS¨qê7s…Ãù¥Û~<9±³ÿ¡¿ vÞ;#8ãRÆä¹¸ÊqÝ©]“7¾ºgù•¿öÊ‚m›[ìvË_3¹tÿ%7œøÁ_^œûZ,Šï¾²=‹å¢×N®™Þzîùÿ:ôÝݸBI:ÃYÄ”þ1¹€}ôÎ8*0Õ Orõ lÔ×H/¡Ô+vRÙ¤ [»J7XªS>oÄ[ŽªB*Y‡3Q796‘²qfÁ;ågP#TG­u„öIiݔٱnʉ5 u² Ï«Ã*g™¡‡y`+ÛQÎ8Ê‘…‘<Åšù&·VÕrÄ™&˜sœš!¿h$NÄï§è݉»s…æioŒçà¡ä‘Ö¸žN=58êéÑ+´H¡Eб¼Å¦¥‡hqˆ‡hq¨n ¶ÖPM.@â…­uu-ÍÿS³£OK·h5y} ±:Z¢–Ø`Ëp 7Ò2Ör²…M ¸«¥·¥i-X•”dÀZ65Ö%ñÕúd@^%±²©1¯Ÿ‘ äga5Þ„h/A±Ze½G‰è†õxD-ú>ý>ýkzNOFëP(R¬ëªë­ë«ãë†ë˜‘:Œê亱º“u\]osÙÌXüŸ›^?/ Q_ÌÏ{ü $zŪ)CcyÒ¾ßOU%kÓÿÕÒHwÓŸÇÑÍ_Ò‹6ß6ãâ>ŸÝ¬Ïh“ÓZ£ž ÎÊ4\½ÀY˜3ÙzQØ¡X‚^gÚŒmü}k·Ï^~™öääV¨ µ7ÊãY]žÎ-žô_^ŒDìú–åìEßšwú枦¢`HÆ*R±V½‚¹Š¹‘R÷¨O¨ÇT#®Å÷iYóú¦eÌeFô±¡jW³ÏzQµ>è“Ca58åûùß*3þ0ÃJèûx3Ê×Ò.7ý§ n*×ÝÔ¯Í]­Óéé|ÓÓR=Žú½¡5ÅŠ˜NMù^œ=K8ñØ=]$®Ôq<ÒÔÍþ·XàŒ Bet‰[ ÷PèúÏÞÏ.:ýä_\¹i…*o_÷Í[7àÅÉáh‹z={͵˜J¶íÜ÷—Žú 7.â7 Š¡,Þ®=Ûƒ±.ÌÖÄ7g·Wd‡ìmÑÁØPö åQïcÑCÆÃÞgbÏŪÿ©áßM.é±`b¼º¸ËäöFMQs'¾ßnºÓü¬ÐŠ;Q'žŸXWÅ/Ë^®Æ™«bWÇ7doÂ7Ç·ÔÞœ%VÝAqPºÍz›m·c·ëÜCÒƒÖ‡l¸¾ûAüÙQî¨ô‘áÆÌÅ?jLŠ&]¼pK#?KBFoœ£ìVG±pPàëHd7UÍÐa ÒažHËøJMFy-Ï»ÿþü©<—ÿ.°€‹k°EÓgܨ•¬Û“{ÿ¹zÏÉn{xÇO“¯’“ŠlwÙÖטJnsq’3âÃkQP¬Z‹k5kQ½-³WsêZ H¹êÖ¢´‚ üè¨!®Ÿ40el#ÈWtßÊ eÑʤ 7{ewzÙ¬¶ëÛÅWŸøîÏ7=5RXøöŸlZ¾ 7lÕ¶\yå`¾¡iI×W®Ýt[l.óÔû—ßñÂÁ…{¯¹ûâ+ûw¿²mÍu+¼±é–Åoܲ8·!=ùÁœG{¿üÈöó WÃLÉ"Äl%V0ômsˆúÏ…¨ç\HKä=¡5ÖõMe×%%è³…ª=Ô fŠ5¶YKЇ: y$BïŽÜê©ÖõIƒÒ)‰-Ü.©WbWKcÒI‰­¬›Ñi!)Uq^šÔª¨óÒµ/4:b3t³K`C]Y€iÑù—ø¾Wü—@Ÿ,3-F/t/©ÌóÞ%€8™­Ïe–Æ“>X›ÉP%õIŠR—$võA¢ésž÷G²"$dG®`ϯöPÙÛCÇÉ]Ù€³lafJJfˆi†t‡”hÒÅLŠÖJ54Ï™ª5gªÖêáEjÍ™1w­7ƒÓ jò™±nÙY8ußÂ)©¼pê ɪ ‡Ô]¨'Y˜¢·§èí©fêýJ š©ÒÐLþç‡Ü×L÷y4SH@ª63ô:ýžÍ_ØQDþQCeÏH¦‚Š_,?C­©ì)y[3ª*3…š5Ò.Oºqö<‹Õ¹K—i¤Nz^¼ló² /æ6(ÑZƒØVË—}}Ó$‹©òÄùM¡"{ÿÏdÅhU^·LÑø%º³÷ó¥Ë6x<<Ý òâÒeËE¥a®•B«J7¨) R´,Õ<ƒæfÐÜŒ…*Ù“TÞOÒÝLÈ•7—ÑMü•^mnî^HmIáÂ)P‰¿Ó« öt_¸Û„†d« =¡ ˆöùD{;ѰA Œ˜:—v¿€æ”>D³áLÙ)}xÄ j@™ò¯Ç§ùsâÉž¿¸ØAÂ={¤Lx¸ Àqe”9w¸º9h€„f¨^˜ Ì]@÷FÊ8N%™QÖt8<#˜ mzxY|ÑŒ¥e³¤dó"­LHHŒÎ]¾‚|˜h­QoŽçÎiÈ(n}Ûí•­‘PFÅ}êq4ÂyÍÒœ¬OEZ2͸¯y¤™i&e®E+fD. .êZÄ .^Ä Eò"fÑhiì¨Ã•[ÔÛÝ3ʬ<|2Š×ßIÿéÐù-g J9]ŽÚ.ž}Å,âü@~íôo±F´Myƒ óøe ÁTGŒS4‹C~l¶T›£"˜b¦.£€U(€ùÿ€1•mZÔgTÝŸ[Ï‹à›/ìVÎâ®õ¶º Ùå7;¯º¯s~ÈeÒ7]4ÙfŸrë9_|yþš… ãl3Ù°°`àCµ‹›òKê§O0ŠQoÌsEŸ®H¾ëݦºÿ¦òQoab° –™²W¸®l¢°EÊÿ?>?÷«`púûßÞùö-[Æ¿qÇ/¶¯œ<óÜäÓdžŽâöçØ]có9¼þšÉìkGwM¾þîèä_‡ûwyüŸÏž{/}nžËîËTdgý­™}¡"CR^ =4TiÇ­4Ä4„²YÓEÂÙ·KÍ=„ §ÊÊ[S¼>ˆ+jåÔ!Ê©CõT/«w®\?%)ê§dGý”kI=¹Ô’T/ck‹éÏ%è‹È²/ÙCy`Ú¶&ªÅ55£˜§²wxùQÑDÿwû‡zº¦*ÊÝD ˜öç–ŽŠþô(x„M7dÊQ¨ÚtÌR› cø{@÷5ý°aØøˆåaë#¶‡ƒû ‡ôú‚§à]-¯¶®n’7[7at Œ™AÝ—Í/±/Y>b>²Œ[ÿb“Ú­íJ{°Em/̱ èo°Hi¦FV£j,]hÁ-²è”—áKå¥*–Wà–÷åOd~¾u^ðEÝ‹úÿÔónKVƒ³™™Á`µØM^c•%` KØeܾG^j]j<–ªª@p ÃUDKºI¡"ˬ>ž‡1ºÙˆ7é°N/xâF#¼º¢uÒ^!ô÷©h¨ŸÚ=]?µ{º¾¾ÐrÁžW’$zæ‰beß«›ªš>m™lÁŒÕf·Ëž 7à©2^­gt=Ñ ãá¦xzF>Ð4 ¥‘Á.Ë5èP1£AgÏ`Æ1CT¡ sqÆ¢—eEߌ›ì“^¨_5ôp0GÑ2ÆA#sƈOO™>ãÙÿïvïS°â pTNI§Q½\?R?V²žïªÇƒõÃõL}oKao®þ¥òJÀ@±“a&/d²+ªØ^ý,›•Û<¤ËdaGnkÛi®¬øQdsÙÆ\P*öºâWw’kÇE‘. ôKó@Åy õ£~ºt “íî6C{0a+`8«4 ¼ÿÝÞ×Ç·U\‰ÎÜ«O˲ü;þÖ•dÙ²eKŽà81XNìÇIl'Ä)Ô‘¥k[D–}ʆ:lK»¼B(tIh›”xqä’:¡]Röµlùm¶ý½×Ú’.l·}lwCK¡]ˆóÎ9÷J¶Céîþ±ÄÉ™9wæÌÌ™ó13÷ν#—¥]À½[S» £ÜÀȨD¸‹tª@Ù#Ș,½âV@³ÂjuSP¯/¢}qœpé^GûF+—ùÈ·ÿ×[r ¶Z~ÏŽ‰®×_±7×”]7¿±¶Â5ÿÏežmóžMŽb“%O*/n(àùÚ{ÞýŸîÂÜÜU‚$ žõ?žÿáGlÞ¼œš^\´²•Í¿4´¶”ØoZi»AÜptsEÇøë`¤™¡õü¾u{ù^aoÕÞêý|¿°¿jµÁkë´õÛÒ>Xñ¸öD…^àUÕ%x§k‡½ÅæÐ—:˜UÈ·lsÂ9_‘‘»™oe^g¡ª`'™†Í ._¹ÁH7¾FºÅ5Ò `´¯,±º«éë3,Áªó«‡«UkªÏ .Vré_”Õ¢úŽÔ>+o¦wŸÜoÞŒG V£*ÖT“F,«Ýî!÷kùÊ2 Ä|¦5™¬_ÒÒÿ"Ìæ<ÿ»8 à[æÊ3hX÷_ö69ÎÓ:½£Hó˜¥ÖTd|¶¢¶ß{ñ[øjù‡]«·èkóµ[矬Y×öΛ™wÆ5¹yEá›à~‘ t®¥›¤ÚÈo=Ã<ÐÍûÖ­ñzR¥ÉŠdå!WÌóÙJýTé×kκ^®x¹ò'5àÿùWm»³½n½«Ù³·.Tóö˜¾Ãxye}e_åË^®Ð>îâ/ÔüxåOj~\÷#×ë5ºJŸ£ÊeÈÃìÜZ¡·9,ÖŠb›ƒUI U®NG¿Cp8ôÅ ®’’bÁ 7²òüòær_y¬\[ÞKGþ]×¹†y¸¼R8JŽ)z9é‹“¾”ù…Û-yÊ ŽÊçO¤—¼G›ÓºÛ¹¢¢n[+ãô÷ï}ùoWÅ»Öì¨ðú¶™O¶6:k­I1ŒX_ú¶/åmÎÉyìðžûŠÀŸl yü &ÞpÊåãÕ¾6gð£Æ˜3ãrŸuÇýcñî_k~óŽæcLÓMë§ ‡µ‡uGôG }ޱAÐÛrsçx­Ïl¨ÐWáΑ]gL©×Vèòè»jkE­Íántår5Z¸µv€¦V61G-så»ל🳮®V(Yi¨s»ždõœÕ7×ûðýÂú{u:«ž÷ëù³z®ŸãOû<,”®êWù¢Ú^]EJ¯¢Ä*RzÕ£`áá”êrø¼ý­›\|MQð¿Þ +rÜIºØ±°ÃŒ¾‡[µ3±rÆÍ@StFÃ#(Îx¹ÞÍa>ÿâÛ»úÍN'¯ëé~îÆ›W]<«Þ¥ƒ%‰o˜å=ò-Záâë}Ñù5ý[œó»îÓ3÷ìóÿwxÈ…+­ Œ‰:í8+aúVøJ÷•+=_ªa¥¾Rá ûòºŠxˆw1#?^-nÜ…ÿÀ,<ÄJ …ñßúò8É(p­Ñ+ˆì,È{}…yy_ÁšfË´å^Ë1‹ÆR¶ò¬PÃ_SŸ ¡¯üæµ|åÑ *{oâÁ/Šœ­™9â:!{Ëpo±uÜ4/ì[[’KYçÍó½óÉøÚjÁéªVÝ&üôþ©ÚŠ£Ñ–K¿¿}Ìg5ìlÚo §aZm1Ffsù·ø å¬ÖW+øj÷Õ«=_«©-Àä¼aeÓì;Æ´¬Ì‰Ÿxð죯íøäkÛo¾ÝÊk5öA'p‘ :½³²¢ª¢ºBÔÕZœ¦ÚÒ²•e‚Φ)aV]ù_‘XI.`5\áø(¬0¿x„•å,< k hh¸£huam¸¬èùW[¾²-xj"¸·²åÓɽû>è‘¿üÁÈswLüïžö×$«=Í5íõëº×\¿ZxôW¼G×ÑoÏŸü—ùÓŸý§o½=ÿ«SŸõÇŸäí¿z$Ñl»vçüçAbÝ—^ÓhaýmeMBŸº¯õÒÓ®z])ûdPŽ€¢ã ˜TU’C3•‰¶ý èíâJ¥êó?øÈ‰$:éLªÄ½À*<€ÝËZˆÏ;ò‹|Æx¡) ?9Åݧúd!˜ñšì{Ô‹NÓ(€.sÊ”ðüÆÃ[8ÿ‡¿™ê·H¥ån3/h²ØJ*šLó<ºŽ€wOχfÂÛtí;ßþ6ß¼í+Ê~Æ;?{ŒÎÕø.ÿQw¬½üo_ø!X4ð%ž1 ‡™Ù}®3·°³Ï"ú,¼!—ëÁa¹hÔê¸&×d†»O³Ï7ÃWI õ†z½Á jôº\³š¹ùþy¦c&~ÔgÖrÑ Ó´šÜ\Í3¼—‰0>ŽúLF£EäGÅ“øº.ÛWÊ;a´-gxå1Ëy‹hÑù`ê)Ë;ËïÉŒ):è呎moâi ¿ÌÇ=§Îv¯rDIþÅxGr@4¾¤e<¢‹ÆÉ8N#q^ì(pØÖp˜I ¸xæôñ‹Ï ©Èñùþæ=óóÑÃâ_¼ûi᱋Ãô£'xîù/Ç^þfÇÖŽßÊ ô#'_xµê¹Ìž\úãü&ýíøËX̨þ^•ÓÛæ{ØÙßEáléŸS×Î+µ»™]¼›õŠU,(´³À7 Ød;[!|•™5€BÚVˆ{àºèôUÌ4Ÿ´ú»YĹ×jŸg…PîZ ¯‡ë¸¾^ÜnÖ¼Ji‡ ŽV];+€v·Àu¤_§I0;€ ®/°-¬­þÖóï‰/èõŸ4œ6œ6þ"ç¹}yë-òg n.üTá׋NfeOÙgÊ¿_q®ò¯«>^}‡õŸmÓöÇ ÇñÚœÚç]ïÖ¹áKîCîmüdÓÏ”*Û‹‡ž`a¦ñ²ÝŒi_°Av{³¸—15žB‘ÊUÓ•H¥òx¥Š‹,ÎT\êÁÚ\ËJùY×1;ÿ¾ŠëÙø›*n`µÂß©¸‘}Bø­Šçhw‹·ª¸‰Å ¯â¹lÔèSq³îkÆ*žÇnÊß›ÕítþiçÌR°FŦ/èVq‘µô©¸h>®âZ–[pŸŠëXAÁQ׳pÁŒŠXQa¥ŠÙÆB¯ŠçOÆUÜÄÚ‹«²¿Z×Z¼[ÅÍâÞâ»Tâ$=‰ú‚¹þË䘩=sÑÖb+zÜJüUEH’ ¨ÓOõÆ©'£j&‰×„Xo’RüTWêD‹¨!ôM¤Wià#¤«€)r“ìFà*@v'_5]d“ÄCêÆº&È?’j­’Lþ’—I‹t Éø o‰(Z#9ù©lp‰îÔ¶bYé'HXФ&“\ÞßêT …¨ŽÀ"!ê÷·Å®Ôßb +2ЍœF²i8ФhÔ“Ô‘Hf·’×EH[©ÎꇊŒ”´•ÍHU±¢ƒ4úÌúÊ:®¶ÏjhÖæ.÷/EÌÇ”Þm ËQì:šå_±KEu<_*qÅæ‚¤}źS$a¥¦õ]is€ê“î_4® Ðh!™(þZbÍÊ9Eœ…©D‚zV­nœôèWÛ«ãö.AšO-ñä=.Ã#ZƒDV©èû ±.œÕpXGGÂÄÝ”ÚãµJM“”3NµEáŸ2fTÝL@EÖ7]Z˜Re´x<¡²ûU^ ¡Æn#´”ÅcÚº2$Õœè’14Hö•Z¢ÅLÍ~Ó£‹j ’üb¤“©%”A’Pœd›Ñ«‡æù$Яƒõƒd€ÿ<4j,¶H:êx‰~j÷B˜¤‘ù«¦º¯SÆÇxvŽôdKþ×¶8IšÈŒ‰ ­l/¯ß°Ö6ˆ÷C*zÏ&=0½RvBˆ«ŸÍ0£÷Яlbê ܵç,Ì;WÎ0™ôñEcAL•òTvdþ`³ì‚®Bª–ÛÊŒ~Sd¯™6ô[Á «‚Å£l†ÅŸ&Ía~òŲ"jí~âB¦9U±0´ó!µ5ô΃êø?B£wH¹”vÞK2™5Ù¤:ã¢/…‹GyÅ“FUkYN^Qµ_(1yÉHšñÙ+Û ª#Iœ*äü´_X¥øiži\Z¾m”þ.uŽT攩+t¡èiéšP ýÄQŒ$RG‘¢sIµÅÌ8>¶¨];‚$ie>Vfÿø¢û„Æ,u|‘Ý.¬KÞ_Ra5B—é õeæËÙߪ 3æ-PFVYA§HâXÿx¶? _‹­{B%ù+^Síca4]jCï×£û襾_©¹Ì\¨¬ì‹z£Ì4Òjä2Ä/“÷BÍØ¿(­å‚ê\‚ëå%3|ígêS|RVçÓ¥ób¦¾+õ¨HKéARË—óãŒÆü—ÉzôÏâvAÊW¶P×o#êÕbŽdu&LÂÜ“©ïŸðw‰ñNÅÅÖÒ¯Ž×Þwk!µRðx|j²‹õ©”Í» rV«xÜC´Q©kظ£@ÀÚÿ¼¹î?>3fò¼—I/;NÅäQ@–¾" ŽËÒ¶h$š„$ic4‹ÆýÉP4"ÅÂÔíOúÿ‘+“vFÃ)LIH½(·ª½½¹ ‚ÔK;BcãÉ„´CNÈñƒrp04!'¤íò¤´#:áìÇRa<ÓÀºË²%5Ýn9žÀF[<í×H®m¡@<šˆŽ&ë/£_DÖFYC;· ^Fû¸4÷å |¿}ß~Jqy,”HÊq9(…"RHwí”üI©VÜ&õŽz$$(Éá„<9džlM ¡èXÜŸZœ$KÝqÿd(2†eC Œ&igÒ ËSÀC<”ˆF¥Ý¡@2—¶úãA9’±¶¶ އÀ ²ì ËR2£ËÑP<‘”ü±˜ìWyDrŒ±[JÇ¡[£‘ ô("O&bþ˜o”F¡…ÉñP`\ %¥IB ʉÐXDz$©7)CJ"5’¤€‡ð”4"¢²ÈX b2ÒDH¤9‘M…‰5)—I† ¨ ®…"þ°TzŸ&AXÒ¨AJE‚rür)ÔC¡¸ EŒL].P@¶ ÃÀQ* ¦ÆÆA/’|kRŽ$Be褌Z,"« ¢ƒÑðAÔÄh*¥ãØ¡ý(¹Œ¾€‡e4Ímð'@ÖQ¬d [Ð@¼|AÇØ1¿ÊõèòÕËÙßFäLEÐŽ?¹ víì‚Iŵvu[½Ô¶j-qØl4îêƒÄæU«V¯†°­µMj»fMûšvsÎ{xÝû:#^yUöÈáf9J·™x[€7‰SÜ K[` òkZ¸dò2ÿ‚ʃ;ñañ”øMñY€3âYñÉ«+W7V®n¬\ÝXaW7V®n¬\ÝX¹º±rucåêÆÊÕ•«+W7V®n¬\ÝX¹º±òßrceÉÓÜOôËåýâ²2ò’ç"ÊÊ{ù:Ãdá‹®5ÕšUš>Íf͵¶/iÇà÷ªe;ù Ž=JïÇù Ldä]@§9yzï–Ç{Õ{{¼Á1¯ðˆ§Í°¶ËܵàÓ…ý€u“WlVïů¼‡d†–0 Þw+v‹÷Þ;h–Ķ<™wÚÙ%T¹ÌßY6xéœø‹ÙžžßÄnÅiW}ËÌH—W¶|Sü…ð$ÌFVHx%]RA9?OoØ "׬UÙ†¦–WºrÄŸ³ÄŸ‹¯€5S©Y—§åB—¸øQfáœYÙ1ñgl@`>ñ'³5µ-GŸÿò_¿ ¼b±ï¦Í-Páóâ×Y!³Š§Å§Õœ§gó ZXWB¼›qv—Î\а¨øe6 pà$€†Y ´xú1E|B|ø<Ž/ÌCèˆаAñ«¾Cñqñf‡²ŸÆão!þ”xÅ_‚¸â/@z5ÄÁ5ÆGÕëG Æü‡ÕôÏÁu Ä©ñƒ^ñpñgÕëƒbŠÊ%Õø˜˜HW[ó»ª!_h»°ûAt÷£Š!äâÇÄ0µt âˆ'”Äu{Úæ Ý>»²¬åˆôvýí ¹ÛAr·ão1Ї24‡š&ñКC@s¤Ò,& ½~0a>€ ‚Ü wLŸðÀK”þqï8†Wâ$ȱ¸ºK¼%í²‚‘ͶûZ:ŸGAÔ>qt¶¬ªåÈ•1 â<5¶ ­L¹ò¬1SåÙò*%ªý]yb€}@`+ ¬X Ð  é¯õ¬¸M˜/Ï:-L‹Óši­¦¹›>+¶°“,›XÔ[‡;xÛ>cÌxØ(æ%c³Ñg0j£â´xD­¢WìûÅaQ‹_xë×µâ÷e›uëZï53͘Ι^2igtçt/éÎë.è´’®YçÓ èöébºÃº{uÇtFü}CaŸ)f:lóM’©Ùä3 ˜´V=?Öu§8‚L@˜¸@2†tIü0À0hcDñaHg2¸Êx ðókáÊt ³@ªR-Ê Äœ€}15W—ÍÉ”Aú ˜P¹yŠŸ(œ‡ðb[àÊ Wf¸2ÕK»Àa>„À€HiçÀj Ìä5«ùût”h2y>,+¼ëó׫ç3õüX=¿·žû::»Z|v ‡ÃÎa×ðqMÔuF]Ñãš~G¿³ßÕ\Óéètvº:k¼¯Óëò×XV§Õe=®9²õäÖg·¾¸U3¼5ºuz«Ø†ŸÛ¥ÝÍ-Û?.+oi³t­NBw†!< ð €È¬z:¢á$„Vá)H} RŸbýÃZ(ñ/ZÕ¡oç>SØÇú7Ì´¹ûæô—v̬u÷Í>´çç÷ ÁÕŒð—sœ îŤ;+f ñT νwÞ]ñ¡;ïâ}3ç¬oDšyk'ô#熽3ZdžRVr°³´³ðº‚öMÝËûÔpÑÁò¥‹O™w—VÍ<зsÏÌW«†fZ¹T5Ô7³y§tÓž3Â!ÚÓ}Fˆa4´ç ¿M8гÓùmÝCY2fb@Æ:0B²YfG2fç³D¶•ÈÀLí=ݧìv…è9Þ‹D`>ÏјRW 4u `dB5«¡ºj„j${P*³,®,—q UfÉeTY%r:¤Ñ‰$§Úœ@pÊÙFÙO,d;œ ;CÌIí8ùµÃùK¡+Piиÿ+ÿä 1Ÿõÿ4è‘=û=2À¾™O/9<"I§‚?Å iF¬Ý7ÇØ/ÏüÔ!wÏÝÒ)`™ìfûݧX gpÏ©€OîNû}þ‡¿{höÄôƾ%mÝ•mkãô2•Mce±­}Ëd÷aö l«ÛêöNøNP[};6ð¾=§ lÃÐÆ›”xV0å€?ì«° m(É]GαÞVúÑŠ³Ó–É=4“ëØ0cÀ¬¦®¦.ÌïĬm?b?j?i×aÆM{Nû:ŽÚÿÍ.¦Àšxþzº©ÍÄð/“©þ1h  4çN¹7îé²³¬v9¬Ì›X€ `'€–ý „?xàwö1ïø"À,¦ˆMbSOi¨[rã S*¶Ì6¯iY;±T‰wîUâžíJÜÑÕR qº³5§Ë oÎÎBøÀOþÀ¿hű…*O)V;”` 7öñä$ w’ãYVÅL¸Ý,¡œmÅAô»'KížñÜf'(" ¢ÔKa¼@øÿ»çy. endstream endobj 82 0 obj 26364 endobj 83 0 obj << /Type /FontDescriptor /FontName /CAAAAA+TimesNewRomanPSMT /Flags 6 /FontBBox [ -568 -306 2028 1007 ] /ItalicAngle 0 /Ascent 891 /Descent 216 /CapHeight 1006 /StemV 80 /FontFile2 81 0 R >> endobj 84 0 obj << /Length 401 /Filter /FlateDecode >> stream xœ]“Énƒ0E÷Hüƒ—é"›!‰!e”²è Ò~—©1È!‹ü}á^RUÝ€Žß`ó6‡íÁÖ Þ\SæÒ©Sm+'׿æJQG9×Ö÷´QU]vÄ«¼­ï}}~¿vr9ØS£–KßS*xï®»«ÉªjŽò„ÅWW‰«íYM>79—ò[Û~ËEl§BßË2UÉièù\´/ÅET€òé¡ê3êî>í ÿ¤|Ü[Q† šg+›J®mQŠ+ìY|o†™Zî÷™ï‰­þG£«Ž§ò«pC¶î³Ã06Ùj@˜E€˜‘ !0’L˜±&Ì l½ $€Ö„=`CH[žmض€=7Ý  C@„ãhú$3ÀèÃ4ú¤ŒÐ'Á>zôÙè3æš>ªé³Áèm=úÌô‰Ù>#£.QÓ'…¦O CŸt }p£†> 65ô‰¡`èáËúDL£OÊ£OÌéxLÁ0(˜íß1,oÎõˆ_“7Ì\må÷7i›uãã5)Êqendstream endobj 85 0 obj << /Type /Font /Subtype /TrueType /BaseFont /CAAAAA+TimesNewRomanPSMT /FirstChar 0 /LastChar 39 /Widths [ 777 666 443 389 277 443 250 277 333 500 443 500 333 389 889 250 500 943 500 500 722 277 443 500 722 500 500 610 500 333 777 666 500 610 556 556 500 500 500 500 ] /FontDescriptor 83 0 R /ToUnicode 84 0 R >> endobj 86 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Courier /Encoding /WinAnsiEncoding >> endobj 87 0 obj << /F1 60 0 R /F2 85 0 R /F3 55 0 R /F4 65 0 R /F5 80 0 R /F6 86 0 R /F7 75 0 R /F8 70 0 R >> endobj 88 0 obj << /Im9 9 0 R >> endobj 89 0 obj << /Font 87 0 R /XObject 88 0 R /ProcSet [ /PDF /ImageC /ImageI ] >> endobj 34 0 obj << /Type /Pages /Resources 89 0 R /MediaBox [ 0 0 595 842 ] /Kids [ 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R ] /Count 16 >> endobj 90 0 obj << /Type /Catalog /Pages 34 0 R >> endobj 91 0 obj << /Author /Producer /CreationDate (D:20050211132814-05'00') >> endobj xref 0 92 0000000000 65535 f 0000000017 00000 n 0000000499 00000 n 0000000525 00000 n 0000001260 00000 n 0000001286 00000 n 0000005447 00000 n 0000005474 00000 n 0000006593 00000 n 0000006620 00000 n 0000060876 00000 n 0000065660 00000 n 0000065688 00000 n 0000070243 00000 n 0000070271 00000 n 0000074329 00000 n 0000074357 00000 n 0000078619 00000 n 0000078647 00000 n 0000082490 00000 n 0000082518 00000 n 0000086269 00000 n 0000086297 00000 n 0000090768 00000 n 0000090796 00000 n 0000094657 00000 n 0000094685 00000 n 0000099675 00000 n 0000099703 00000 n 0000104044 00000 n 0000104072 00000 n 0000108393 00000 n 0000108421 00000 n 0000109409 00000 n 0000258340 00000 n 0000109436 00000 n 0000109545 00000 n 0000109654 00000 n 0000109763 00000 n 0000109872 00000 n 0000109982 00000 n 0000110092 00000 n 0000110202 00000 n 0000110312 00000 n 0000110422 00000 n 0000110532 00000 n 0000110642 00000 n 0000110752 00000 n 0000110862 00000 n 0000110972 00000 n 0000111082 00000 n 0000111192 00000 n 0000140938 00000 n 0000140965 00000 n 0000141204 00000 n 0000141894 00000 n 0000142508 00000 n 0000161869 00000 n 0000161896 00000 n 0000162140 00000 n 0000162641 00000 n 0000163044 00000 n 0000181062 00000 n 0000181089 00000 n 0000181342 00000 n 0000181808 00000 n 0000182175 00000 n 0000204950 00000 n 0000204977 00000 n 0000205221 00000 n 0000205795 00000 n 0000206280 00000 n 0000227659 00000 n 0000227686 00000 n 0000227935 00000 n 0000228417 00000 n 0000228801 00000 n 0000229519 00000 n 0000229544 00000 n 0000229784 00000 n 0000230104 00000 n 0000230310 00000 n 0000256782 00000 n 0000256809 00000 n 0000257058 00000 n 0000257542 00000 n 0000257934 00000 n 0000258048 00000 n 0000258195 00000 n 0000258237 00000 n 0000258765 00000 n 0000258826 00000 n trailer << /Size 92 /Root 90 0 R /Info 91 0 R >> startxref 259044 %%EOF apache-jmeter-2.8/xdocs/index.xml0000644000175000017500000001155012032647214016374 0ustar ebourgebourg Apache JMeter&trade; apache-jmeter-2.8/xdocs/extending.xml0000644000175000017500000001567412032647214017265 0ustar ebourgebourg Extending JMeter
Note to developers: JMeter is undergoing large changes. The following description of JMeter's architecture will likely change in the near future. If you would like your changes to work with an upcoming JMeter 1.6, please join our mailing list, and we will work with you and your modifications.

Customizing JMeter to suit your needs.

Extensible Interfaces

There are five basic objects in JMeter which provide extensibility:

  • Visualizers represent the sampling data which is recorded.
  • Timers specify the delay between samples.
  • SamplerControllers hold information about all the test cases to be sampled, and overall information about how the test is conducted.
  • Samplers are the classes that actually do the sampling of a particular protocol.
  • TestSamples hold information about a particular test case to be sampled.

Visualizers

The Visualizer interface exists in the org.apache.jmeter.visualizers package. JMeter maintains an instance of each visualizer it is aware of for each thread group currently available to the user. A visualizer provides a method of recording the data which JMeter generates. A visualizer may represent the data graphically (GraphVisualizer), persistently (FileVisualizer) or both (TBD). The visualizer contains three methods:
add(SampleResult result) adds data to the visualization.
JMeter calls the add method to include new data in the visualizer. The visualizer should add the data into its data representation.
clear() clears all data in the visualizer currently
JMeter calls clear when the user requests that all visualizers be cleared. When the clear method is called the visualizer should clear all data from its representation and re-initialize itself.
getControlPanel() obtains the GUI for the visualizer
JMeter calls getControlPanel at start up time to prepare the visualizer for display.

Timers

Timers provide a framework for delaying in between samples. This is important in order to obtain a true balanced load on a function rather than a calm-STORM-calm-STORM-calm... pattern. Timers contain two methods:
delay() wait for a Timer specific amount of time
JMeter calls this function prior to every sample. The Timer should wait for a period of time and then return.
set() prepare for sampling
JMeter calls this function prior to the begining of a test session. The timer should initialize itself, read any values from its UI and prepare for operation.

SamplerControllers

The sampler controller is by far the most complicated, but also the most powerful, interface in JMeter. It allows a user to customize what, where and when JMeter tests. It provides six methods:
start()
JMeter calls this immediatly prior to starting a test. It is most often use to disable the SamplerController's GUI.
stop()
JMeter calls this when a user requests a stop to a test. It is most often used to re-enable the SamplerController's GUI.
getControlPanel() Get the GUI for the SamplerController
JMeter calls this at start up to create the its GUI. This is how a user enters information into the SamplerController.
getName() Get the SamplerController's display name.
JMeter uses this name in the list of SamplerControllers that it displays.
getDefaultThreadGroups()
Gets the default list of threadgroups.
getSampleThreads(String threadGroup,int numThreads)
When the user hits start, use this method to get all the JMeterThread objects you want for a threadgroup. Each JMeterThread object implements Runnable and it is used to sample the test entries.

Samplers

Samplers are simple - they are the objects that know the protocol of that which you wish to sample. The HTTPSampler knows how to request a URL from a web server, for instance. The interface for Sampler is as follows:
public SampleResult sample(Entry e)
JMeterThread implementations will loop through all the test samples given to them, and call the sample method on the Sampler (also given to them) for each test entry. SampleResult is essentially a Map containing information about the sampling (timing data is included, as well as the test response from the url).

TestSample

TestSamples are objects that collect information from users about each test sample the user wants to test. The TestSample object is also responsible for serving up its test entries. The interface:
public java.awt.Container getGUI()
Returns the GUI used to collect information from the user.
public Entry[] getEntries()
Gets a list of entries to be sampled from the TestSample object
public String[] getThreadGroups()
Get all the thread groups the user selected for this TestSample
public void setThreadGroups(String[] threadGroups)
Set the thread groups the user may choose from
public String getName()
Get a name for this TestSample
public void setName(String name)
Set the name for this TestSample
public void reset()
inform the test sample that a sampling run is starting

apache-jmeter-2.8/xdocs/mail.xml0000644000175000017500000001744012032647214016213 0ustar ebourgebourg Apache JMeter Project Mailing Lists

A mailing list is an electronic discussion forum that anyone can subscribe to. When someone sends an email message to the mailing list, a copy of that message is broadcast to everyone who is subscribed to that mailing list. Mailing lists provide a simple and effective communication mechanism. With potentially thousands of subscribers, there is a common set of etiquette guidelines that you should observe. Please keep on reading.

Please note that usage of these mailing lists is subject to the Public Forum Archive Policy.

Respect the mailing list type
There are generally two types of lists.

  • The "User" lists where you can send questions and comments about configuration, setup, usage and other "user" types of questions.
  • The "Developer" lists where you can send questions and comments about the actual software source code and general "development" types of questions.

Some questions are appropriate for posting on both the "user" and the "developer" lists. In this case, pick one and only one. Do not cross post.

Asking a configuration question on the developers list is frowned upon because developers' time is as precious as yours. By contacting them directly instead of the user base you are abusing resources. In fact, it is unlikely that you will get a quicker answer, if at all.

Join the lists that are appropriate for your discussion.
Please make sure that you are joining the list that is appropriate for the topic or product that you would like to discuss. For example, please do not join the Regexp mailing list and ask questions about Tomcat. Instead, you should join the Tomcat User list and ask your questions there.

Ask smart questions.
Every volunteer project obtains its strength from the people involved in it. You are welcome to join any of our mailing lists. You can choose to lurk, or actively participate; it's up to you. The level of community responsiveness to specific questions is generally directly proportional to the amount of effort you spend formulating your question. Eric Raymond and Rick Moen have even written an essay entitled "Asking Smart Questions" precisely on this topic. Although somewhat militant, it is definitely worth reading.
Note: Please do NOT send your Java problems to the two authors. They welcome feedback on the FAQ's contents, but are simply not a Java help resource. Follow the essay's advice and choose your forum carefully.

Give feedback when you get a good answer.
If an answer given to you helped you solve your problem then send a mail saying so and don't forget to say THANKS. If you fixed the problem yourself then contribute to the mailing list by writing how you solved your issue. Giving feedback is useful to people who faced/will face same problems as you and will be your way to contribute to the project. Don't forget that people answering your questions are volunteers doing so on their personal time.

Keep your email short and to the point; use a suitable subject line.
If your email is more than about a page of text, chances are that it won't get read by very many people. It is much better to try to pack a lot of informative information (see above about asking smart questions) into as small of an email as possible. If you are replying to a previous email, it is a good idea to only quote the parts that you are replying to and to remove the unnecessary bits. This makes it easier for people to follow a thread as well as making the email archives easier to search and read.

Start a new thread for a new topic
When asing a new question, please start a new thread with an appropriate new subject line. This makes it easier to read, and to find later in the archives.

Do your best to ensure that you are not sending HTML or "Stylelized" email to the list.
If you are using Outlook or Outlook Express or Eudora, chances are that you are sending HTML email by default. There is usually a setting that will allow you to send "Plain Text" email. If you are using Microsoft products to send email, there are several bugs in the software that prevent you from turning off the sending of HTML email.

Please don't send attachments or include large chunks of code
Attachments can be difficult to read and are rarely needed by all recipients. Some mailing lists are set up to drop them. If you need to send more than a few lines of code, ask first. Note that code is often mangled by word-wrapping, so it is better to provide a link to a downloadable file. If necessary, arrange with the person(s) responding to the posting how best to give access to the data, should it prove necessary.

Watch where you are sending email.
The majority of our mailing lists have set the Reply-To to go back to the list. That means that when you Reply to a message, it will go to the list and not to the original author directly. The reason is because it helps facilitate discussion on the list for everyone to benefit from. Be careful of this as sometimes you may intend to reply to a message directly to someone instead of the entire list. The appropriate contents of the Reply-To header is an age-old debate that should not be brought up on the mailing lists. You can examine opposing points of view condemning our convention and condoning it. Bringing this up for debate on a mailing list will add nothing new and is considered off-topic.

Do not cross post messages.
In other words, pick a mailing list and send your messages to that mailing list only. Do not send your messages to multiple mailing lists. The reason is that people may be subscribed to one list and not to the other. Therefore, some people will only see part of the conversation.

Now that you have read the guidelines above, here is the page that gives you a listing of the different mailing lists that you can join. If you managed to find this without reading the above information, chances are you will be sent back here. You might as well read it now and save yourself the embarrassment.

apache-jmeter-2.8/xdocs/stylesheets/0000755000175000017500000000000012165514773017127 5ustar ebourgebourgapache-jmeter-2.8/xdocs/stylesheets/site.vsl0000644000175000017500000003757312032647207020630 0ustar ebourgebourg ## Defined variables #set ($bodybg = "#ffffff") #set ($bodyfg = "#000000") #set ($bodylink = "#525D76") #set ($bannerbg = "#525D76") #set ($bannerfg = "#ffffff") #set ($subbannerbg = "#828DA6") #set ($subbannerfg = "#ffffff") #set ($tablethbg = "#039acc") #set ($tabletdbg = "#a0ddf0") #set ($notebackground = "#bbbb00") #set ($space = " ") #set ($space = $space.charAt(0)) #set ($udsc = "_") #set ($udsc = $udsc.charAt(0)) #set ($imgdir = "$relativePath/images") #set ($sshotdir = "$imgdir/screenshots" ) #set ($cssdir = "$relativePath/css") #set ($year = $date.getYear()+1900) #document() ## This is where the macros live #macro ( sectionlink $anchor) #if($anchor)#end #end #macro ( table $table) #foreach ( $items in $table.getChildren() ) #if ($items.getName().equals("tr")) #tr ($items) #end #end
#end #macro ( tr $tr) #foreach ( $items in $tr.getChildren() ) #if ($items.getName().equals("td")) #td ($items) #elseif ($items.getName().equals("th")) #th ($items) #end #end #end #macro ( td $value) #if ($value.getAttributeValue("colspan")) #set ($colspan = $value.getAttributeValue("colspan")) #end #if ($value.getAttributeValue("rowspan")) #set ($rowspan = $value.getAttributeValue("rowspan")) #end #if ($value.getText().length() != 0 || $value.getChildren().size() > 0) $value.content #else   #end #end #macro ( th $value) #if ($value.getAttributeValue("colspan")) #set ($colspan = $value.getAttributeValue("colspan")) #end #if ($value.getAttributeValue("rowspan")) #set ($rowspan = $value.getAttributeValue("rowspan")) #end #if ($value.getText().length() != 0 || $value.getChildren().size() > 0) $value.content #else   #end #end #macro ( projectanchor $name $value ) #if ($value.startsWith("http://")) $name #elseif ($value.startsWith("/site")) $name #else $name #end #end #macro ( metaauthor $author $email ) #end #macro ( image $value ) #if ($value.getAttributeValue("width")) #set ($width=$value.getAttributeValue("width")) #end #if ($value.getAttributeValue("height")) #set ($height=$value.getAttributeValue("height")) #end #if ($value.getAttributeValue("align")) #set ($align=$value.getAttributeValue("align")) #end #end #macro ( source $value)
$escape.getText($value.getText())
#end #macro (properties $properties)

Parameters #if ($properties.getParent().getName() == 'component') #set ($name = $properties.getParent().getAttributeValue("name").replace($space,$udsc)) #set ($suff = "_parms") #sectionlink ("$name$suff") #end #foreach ($items in $properties.getChildren("property")) #end
AttributeDescriptionRequired
$items.getAttributeValue("name") #runloop($items) #if("$!items.getAttributeValue('required')" != "") $items.getAttributeValue("required") #else No #end

#end #macro (seeAlso $seeAlso)

See Also:

#end #macro (figure $figure) #set ($width = "") #set ($width = $figure.getAttributeValue('width') ) #set ($height = "") #set ($height = $figure.getAttributeValue('height') ) #set ($dim= "") #if ("$!width" != "") #set ($dim = "width='$width' height='$height'") #end


#runloop($figure)

#end #macro (example $example) #sectionlink ($example.getAttributeValue("anchor"))

$example.getAttributeValue("title")

#runloop($example) #end #macro (note $note)

#runloop($note)

#end #macro (scope $scope) #if ($scope.getText() == "")
scope #else $scope.getText() #end #end ## #macro ( bugzilla $id) Bug $id.getText() #end #macro (unknown $u_node) #if($u_node.getName() == "note") #note($u_node) #elseif($u_node.getName() == "complink") #complink($u_node) #elseif($u_node.getName() == "figure") #figure($u_node) #elseif ($u_node.getName() == "links") #seeAlso ($u_node) #elseif ($u_node.getName() == "properties") #properties ($u_node) #elseif ($u_node.getName() == "example") #example ($u_node) #elseif ($u_node.getName().equals("source")) #source ($u_node) #elseif ($u_node.getName().equals("table")) #table ($u_node) #elseif ($u_node.getName().equals("component")) #component($u_node) #elseif ($u_node.getName().equals("subsection")) #subsection ($u_node) #elseif ($u_node.getName().equals("scope")) #scope ($u_node) #elseif ($u_node.getName().equals("bugzilla")) #bugzilla ($u_node) #else #outputTag($u_node) #runloop($u_node) #outputEndTag($u_node) #end #end #macro (complink $complink) $complink.getAttributeValue("name") #end #macro (outputTag $tag) <$tag.getName()#getAtts($tag)> #end #macro (getAtts $tag) #foreach ($att in $tag.getAttributes()) $att.getName()="$att.getValue()"#end #end #macro (outputEndTag $tag) #end #macro (runloop $itemToLoop) #foreach ($rl_node in $itemToLoop.getContent()) #if($rl_node.getClass().getName().indexOf("Element") > -1) #unknown($rl_node) #else $rl_node.getText() #end #end #end #macro ( component $component) #set ($screenshot = "") #set ($screenshot = $component.getAttributeValue('screenshot') ) #set ($width = "") #set ($width = $component.getAttributeValue('width') ) #set ($height = "") #set ($height = $component.getAttributeValue('height') ) #set ($dim= "") #if ("$!width" != "") #set ($dim = "width='$width' height='$height'") #end #if($component.getAttribute("useinstead")) #end

$!component.getAttributeValue("index") $component.getAttributeValue("name") #sectionlink ($component.getAttributeValue("name"))

*** This element is deprecated. Use $component.getAttributeValue("useinstead") instead ***
#foreach ( $c_items in $component.getChildren() ) #if ($c_items.getName().equals("description")) #runloop($c_items) #if ("$!screenshot" != "")

Control Panel

#end #else #unknown($c_items) #end #end


#end #macro ( subsection $subsection)
$subsection.getAttributeValue("name") #sectionlink ($subsection.getAttributeValue("anchor"))
#foreach ( $su_items in $subsection.getChildren() ) #if ($su_items.getName().equals("img")) #image ($su_items) #else #unknown($su_items) #end #end

#end #macro (pagelinks) #if (("$!next" != "") || ("$!prev" != "")) #if ("$!next" != "") #end #if ("$!prev" != "") #end
#end #end #macro ( section $section)
#set ($anchor = $section.getAttributeValue("anchor")) #if($anchor)#end$section.getAttributeValue("name")#if($anchor)#sectionlink ($anchor)#end
#foreach ( $s_items in $section.getChildren() ) #if ($s_items.getName().equals("img")) #image ($s_items) #else #unknown($s_items) #end #end


#end #macro ( makeProject ) #set ($menus = $project.getChild("body").getChildren("menu")) #foreach ( $menu in $menus )

$menu.getAttributeValue("name")

    #foreach ( $item in $menu.getChildren() ) #set ($name = $item.getAttributeValue("name"))
  • #projectanchor($name $item.getAttributeValue("href"))
  • #end
#end #end #macro (makeIndex $subsections) #end #macro (getProjectImage) #if ($project.getChild("logo")) #set ( $logoString = $project.getChild("logo").getAttributeValue("href") ) #set ( $logoHeight = $project.getChild("logo").getAttributeValue("height") ) #set ( $logoWidth = $project.getChild("logo").getAttributeValue("width") ) #set ( $logoString = $project.getChild("logo").getAttributeValue("href") ) #set ( $logoHeight = $project.getChild("logo").getAttributeValue("height") ) #set ( $logoWidth = $project.getChild("logo").getAttributeValue("width") ) #if ( $logoString.startsWith("/") ) $project.getChild( #else $project.getChild( #end #else #end #end #macro (document) #set ($next = "") #set ($next = $root.getAttributeValue("next")) #set ($prev = "") #set ($prev = $root.getAttributeValue("prev")) #set ($authors = $root.getChild("properties").getChildren("author")) #foreach ( $au in $authors ) #metaauthor ( $au.getText() $au.getAttributeValue("email") ) #end $project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText() #getProjectImage()

#makeProject() #pagelinks()
#if ($root.getAttributeValue("index") == "yes") #makeIndex($root.getChild("body").getChildren("section")) #end #set ($allSections = $root.getChild("body").getChildren("section")) #foreach ( $section in $allSections ) #section ($section) #end #pagelinks()

Copyright © 1999-$year, Apache Software Foundation
Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are trademarks of the Apache Software Foundation.
#end apache-jmeter-2.8/xdocs/stylesheets/printable_project.xml0000644000175000017500000000204612032647207023351 0ustar ebourgebourg Apache JMeter Apache JMeter apache-jmeter-2.8/xdocs/stylesheets/site.xsl0000644000175000017500000002045112032647207020615 0ustar ebourgebourg <xsl:value-of select="$project/title"/> - <xsl:value-of select="properties/title"/> PAGE HEADERHEADER SEPARATORLEFT SIDE NAVIGATIONRIGHT SIDE MAIN BODYFOOTER SEPARATORPAGE FOOTER
JAKARTA LOGO The Jakarta Project PROJECT LOGO {$alt}


Copyright © 1999-2001, Apache Software Foundation

  • 				
    			 
    apache-jmeter-2.8/xdocs/stylesheets/site_printable.vsl0000644000175000017500000003726412032647207022665 0ustar ebourgebourg ## ## Content Stylesheet for Site ## ## Java cannot currently handle HTML tags of the form , e.g.
    ; ## the trailing > characters are output to the display, which messes it up. ## Java does handle

    OK, but as the output from this stylesheet ## does not have to be XHTML, for simplicity the trailing slashes have been removed. ## ## ## Defined variables #set ($bodybg = "#ffffff") #set ($bodyfg = "#000000") #set ($bodylink = "#525D76") #set ($bannerbg = "#525D76") #set ($bannerfg = "#ffffff") #set ($subbannerbg = "#828DA6") #set ($subbannerfg = "#ffffff") #set ($tablethbg = "#039acc") #set ($tabletdbg = "#a0ddf0") #set ($notebackground = "#bbbb00") #set ($space = " ") #set ($space = $space.charAt(0)) #set ($udsc = "_") #set ($udsc = $udsc.charAt(0)) #set ($imgdir = "$relativePath/../docs/images") #set ($cssdir = "$relativePath/../docs/css") #set ($sshotdir = "$imgdir/screenshots") #set ($year = $date.getYear()+1900) #document() ## This is where the macro's live #macro ( table $table) #foreach ( $items in $table.getChildren() ) #if ($items.getName().equals("tr")) #tr ($items) #end #end
    #end #macro ( tr $tr) #foreach ( $items in $tr.getChildren() ) #if ($items.getName().equals("td")) #td ($items) #elseif ($items.getName().equals("th")) #th ($items) #end #end #end #macro ( td $value) #if ($value.getAttributeValue("colspan")) #set ($colspan = $value.getAttributeValue("colspan")) #end #if ($value.getAttributeValue("rowspan")) #set ($rowspan = $value.getAttributeValue("rowspan")) #end #if ($value.getText().length() != 0 || $value.getChildren().size() > 0) $value.content #else   #end #end #macro ( th $value) #set ($colspan = $value.getAttributeValue("colspan")) #set ($rowspan = $value.getAttributeValue("rowspan")) #if ($value.getText().length() != 0 || $value.getChildren().size() > 0) $value.content #else   #end #end #macro ( projectanchor $name $value ) #if ($value.startsWith("http://")) $name #elseif ($value.startsWith("/site")) $name #else $name #end #end #macro ( metaauthor $author $email ) #end #macro ( image $value ) #if ($value.getAttributeValue("width")) #set ($width=$value.getAttributeValue("width")) #end #if ($value.getAttributeValue("height")) #set ($height=$value.getAttributeValue("height")) #end #if ($value.getAttributeValue("align")) #set ($align=$value.getAttributeValue("align")) #end #end #macro ( source $value)
    $escape.getText($value.getText())
    #end #macro (properties $properties)

    Parameters #foreach ($items in $properties.getChildren("property")) #end
    AttributeDescriptionRequired
    $items.getAttributeValue("name") #runloop($items) #if("$!items.getAttributeValue('required')" != "") $items.getAttributeValue("required") #else No #end

    #end #macro (seeAlso $seeAlso)

    See Also:

      #foreach ($items in $seeAlso.getChildren()) #if($items.getName() == "link")
    • $xmlout.outputString($items,true)
    • #elseif($items.getName() == "complink")
    • #complink($items)
    • #end #end

    #end #macro (figure $figure) #set ($width = "") #set ($width = $figure.getAttributeValue('width') ) #set ($height = "") #set ($height = $figure.getAttributeValue('height') ) #set ($dim= "") #if ("$!width" != "") #set ($dim = "width='$width' height='$height'") #end


    #runloop($figure)

    #end #macro (example $example)

    $example.getAttributeValue("title")

    #runloop($example) #end #macro (note $note)

    #runloop($note)

    #end #macro (scope $scope) #if ($scope.getText() == "")
    scope #else $scope.getText() #end #end #macro ( bugzilla $id) Bug $id.getText() #end #macro (unknown $node) #if($node.getName() == "note") #note($node) #elseif($node.getName() == "complink") #complink($node) #elseif($node.getName() == "figure") #figure($node) #elseif ($node.getName() == "links") #seeAlso ($node) #elseif ($node.getName() == "properties") #properties ($node) #elseif ($node.getName() == "example") #example ($node) #elseif ($node.getName().equals("source")) #source ($node) #elseif ($node.getName().equals("table")) #table ($node) #elseif ($node.getName().equals("component")) #component($node) #elseif ($node.getName().equals("subsection")) #subsection ($node) #elseif ($node.getName().equals("scope")) #scope ($node) #elseif ($node.getName().equals("bugzilla")) #bugzilla ($node) #else #outputTag($node) #runloop($node) #outputEndTag($node) #end #end #macro (complink $complink) $complink.getAttributeValue("name") #end #macro (outputTag $tag) <$tag.getName()#getAtts($tag)> #end #macro (getAtts $tag) #foreach ($att in $tag.getAttributes()) $att.getName()="$att.getValue()"#end #end #macro (outputEndTag $tag) #end #macro (runloop $itemToLoop) #foreach ($node in $itemToLoop.getContent()) #if($node.getClass().getName().indexOf("Element") > -1) #unknown($node) #else $node.getText() #end #end #end #macro ( component $component) #set ($width = "") #set ($width = $component.getAttributeValue('width') ) #set ($height = "") #set ($height = $component.getAttributeValue('height') ) #set ($dim= "") #if ("$!width" != "") #set ($dim = "width='$width' height='$height'") #end #set ($screenshot = "") #set ($screenshot = $component.getAttributeValue('screenshot') ) #if($component.getAttribute("useinstead")) #end
    #set ($tag = "") #set ($tag = $component.getAttributeValue("tag")) #if ("$!tag" != "") #end

    $!component.getAttributeValue("index") $component.getAttributeValue("name")

    *** This element is deprecated. Use $component.getAttributeValue("useinstead") instead ***
    #foreach ( $items in $component.getChildren() ) #if ($items.getName().equals("description")) #runloop($items) #if ("$!screenshot" != "")

    Control Panel

    #end #else #unknown($items) #end #end


    #end #macro ( subsection $subsection)
    $subsection.getAttributeValue("name")
    #foreach ( $items in $subsection.getChildren() ) #if ($items.getName().equals("img")) #image ($items) #else #unknown($items) #end #end

    #end #macro (pagelinks) #if (("$!next" != "") || ("$!prev" != "")) #if ("$!next" != "") #end #if ("$!prev" != "") #end
    #end #end #macro ( section $section)
    #set ($anchor = $section.getAttributeValue("anchor")) #if($anchor)#end$section.getAttributeValue("name")#if($anchor)#end
    #foreach ( $items in $section.getChildren() ) #if ($items.getName().equals("img")) #image ($items) #else #unknown($items) #end #end


    #end #macro ( makeProject ) #set ($menus = $project.getChild("body").getChildren("menu")) #foreach ( $menu in $menus )

    $menu.getAttributeValue("name")

      #foreach ( $item in $menu.getChildren() ) #set ($name = $item.getAttributeValue("name"))
    • #projectanchor($name $item.getAttributeValue("href"))
    • #end
    #end #end #macro (makeIndex $subsections) #set ($level2 = $root.getAttributeValue("index-level-2")) ## Should we display numbers for index level 2 ? (useful for checking numbering) #set ($index2 = $root.getAttributeValue("index-numbers")) #set ($colbreak = $root.getAttributeValue("colbreak")) #if ("$!colbreak" != "")
    #end
      #foreach ($sect in $subsections) #if (("$!colbreak" != "") && ($sect.getAttributeValue("name").startsWith("$colbreak")))
    #if ("$!colbreak" != "")
    #end #end #macro (getProjectImage) #if ($project.getChild("logo")) #set ( $logoHeight = $project.getChild("logo").getAttributeValue("height") ) #set ( $logoWidth = $project.getChild("logo").getAttributeValue("width") ) #set ( $logoString = $project.getChild("logo").getAttributeValue("href") ) #if ( $logoString.startsWith("/") ) $project.getChild( #else $project.getChild( #end #else #end #end #macro (document) ## ====================================================================== ## Main Page Section --> ## ====================================================================== #set ($authors = $root.getChild("properties").getChildren("author")) #foreach ( $au in $authors ) #metaauthor ( $au.getText() $au.getAttributeValue("email") ) #end #set ($next = "") #set ($next = $root.getAttributeValue("next")) #set ($prev = "") #set ($prev = $root.getAttributeValue("prev")) #set ($id = "") #set ($id = $root.getAttributeValue("id")) $project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText() ## #getProjectImage()

    #pagelinks()
    #if ($root.getAttributeValue("index") == "yes") #makeIndex($root.getChild("body").getChildren("section")) #end #set ($allSections = $root.getChild("body").getChildren("section")) #foreach ( $section in $allSections ) #section ($section) #end
    #pagelinks()

    #if ("$!id" != "") #if ("$!id" != "") #end
    #else #end Copyright © 1999-$year, Apache Software Foundation $id
    Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are trademarks of the Apache Software Foundation.
    #endapache-jmeter-2.8/xdocs/stylesheets/project.xml0000644000175000017500000000664712032647207021324 0ustar ebourgebourg Apache JMeter Apache JMeter apache-jmeter-2.8/xdocs/svnindex.xml0000644000175000017500000000527312032647214017130 0ustar ebourgebourg Apache JMeter Project Source Repositories

    Most users of the source code probably don't need to have day to day access to the source code as it changes. For these users we provide easy to unpack source code downloads via our download page.

    For information on connecting to the ASF Subversion repositories, see the version control page.

    Modules available for access are listed below.

    Subversion is an open-source version control system. The root url of the ASF Subversion repository is http://svn.apache.org/repos/asf/ for non-committers and https://svn.apache.org/repos/asf/ for committers.

    NOTE: When checking out a subproject using Subversion, ensure that you are checking out a tag, a branch or trunk (the main-line) and not all tags and branches to avoid filling up your hard-disk and wasting bandwidth.

    Project http (read-only) https (committers) View-SVN
    Apache JMeter http://svn.apache.org/repos/asf/jmeter/trunk https://svn.apache.org/repos/asf/jmeter/trunk http://svn.apache.org/viewcvs.cgi/jmeter/
    apache-jmeter-2.8/xdocs/presentation/0000755000175000017500000000000012165514774017267 5ustar ebourgebourgapache-jmeter-2.8/xdocs/presentation/jmeter_presentation_part2.sxi0000644000175000017500000002451612032647207025204 0ustar ebourgebourgPK±Þ2óàÛXmimetypeapplication/vnd.sun.xml.impressPK±Þ2=ÈÃs__-Pictures/1000000000000040000000400142E835.png‰PNG  IHDR@@% æ‰&IDATxœí˜Qƒ D!éÁ<š7Ó›ÑÖ6µº(,LÑy_IºoÔð†ÁµÌ]@.@C4@C4@C4@C4—躮VqÆqÜ$Ð÷½y) (eÄ—ÜA/àÒ{  Šx¿øB‰?ùb,°*}>XHÃR`³úùݰ=àÎ@ÈL@o¿Ì1“À«ýÎ(„[=F#«äh/?í—ëÌÌÓ Ì¹ÀShÞ~É ÁR@¡™›Ü»©‹b¥ôßöËxrE–PÑŸõöÀ^ûånZ·zd ·_æ$„pF æÒ>LŽ´_fž ¡†€Égó œJè´q.¤  ì†ý| ¡  ¡  ¡  ¡  yÆ‚<‡ðÜûXIEND®B`‚PK±Þ2 content.xmlí]Ûrã¸}ÏW0Lå‘¢(êê²½5ãÙÍ&å™qbM%y„HˆBL*´¬}Ú?H¥òÿËä‚ u¡$ÒâP–@Y³Uk‹l‚§O7º-¾þá% gHcDðé4š¦±G|„ƒóÛð'«oþpû›ëß~úz7üûѯ|â%ÄÌòfü§ñðíãýï Ó²í¯Sˆ¿J±¡m~2ÔçOéU¿mÿøÅ4L5^Ãg¾y{78Ljã+uöÆœ06½²mÂoCV·i5›M[}6Ó b6‹å¥ÄBœÁV(-–Â`ôÊØRb!îS0+”œó…ü˜,¥g³YcæJIg0Ø{¼·"4K,/!ÂO¹òòìB'ÑÒb$€ /S cnÀ¤‹\¹.¸´Ás° ™bÿy©¯7´˜|)±¢Óõ_¡Óõœ©I;}û3?)ÿ÷ù~Å= Ký<ЦÅÈ•ˆ¹˜:^âøÆÌ’•žËLÄå|PØËÏ a„+…$¶É|:0~§1cxÀÛ³õíÈ,ç}Û³ª 2§ÑÚ—ÊeØdrP ïö"¡ÞvE¼Jã-¼Bh-˜d0ß;æº@Ÿa˜ÆœQ†ê¤8Î!šê£:e‰ÞÝù¿_ÿ•£Þ˜ðp·àâ‘ú8F$\²$N‹1bÈÑ¿Xqz–_¹ˆdMùÏ\&zB7f»ó{©eîZµJh%ã)ðøHpL(Gã¤ö©‰¶n5m[õÒ¶]M[·^ÚvªiÛ®—¶ÝjÚvê¥m¯š¶ÝziÛ¯¦m¯^ÚªiÛ×BÛµÓû­Ê…ÇÿóÏ\‚ĺ'#>fºÔ[Õ©5ñ‰UI‘ÊYŸHõ=2v-û“‘.΄Œ5M2úgDÆÎ’g2ZjÑu&d쬈ö'Ã=#*v–K%¨8«ð¹³šÚŸŒöY…ÏÅV2j>KÖbî[5v³T³ŽÉ¥?té]úC—þÞÚ^úC—þÐ9õ‡ÚoÚÚl–.}ãvÅ'éýúï½û…KŸÃ9Ón2zZuŽŽ´$>Š_ìîííG[Å/*ö:ÇêÅ3*öºÇj–…ŒŠ£Þ±úG!£bçhpFTTì9ÍÓÆÏ7)Ò:§xz¨fýŸB»¿ÚªYû§Yý´S¶b÷Ç)*´S¶bó§NN\±óÓ*ªg´S¶bãÇ­UxªØ÷qkž*¶}Ú:„§’E÷¨]Ÿ"ÏoK×çÒõ¹t}tð‹K×çÒõ¹t}.]ŸK×ç•"ÍÎÝ“(=1"þüöZ¾{*¶Ro¡ª"n¨ÞÜU›øÈû¬íZ$"_oò÷Ä R¹oÑŽ—b7v$Zÿ . Áœ$,½òý3,É…NÖˆ¼dGX$w ZÉ®ŸzXœá㋵Ôm¸9žƒ«Ôx-·1p¤qÅÁõ·‡û‹ƒ/b-Ùì,?Ï…É{}™D2¨ÒÍ£{ïHsLSÊ¢ºýÓgÈù2† Œp`<ÊŒVjÂ)·\Fù\´r¹p÷á¢Ólr!_8n­‘á6š-wŒnÃéIräð¡˜{>Jb9unUËŠ²g“˜À(À±ØÍ úé»’”¶ÌÛÉè=Â+‹ÄS Ü‘(BŒÿ¶×Uö¶e2ÀåÞEkÊb“$a€Âí‰Ð×½“sßkv·,ÂÃQ?cn»·fV£ßq—Qs2ÝZÎ*ìíLn…‰å´§¿]l¿äd°·V.7——9nž»¨­¡6‚IÈ#õ„„¾À±Ü_l—Uì%9!¡illø0F~5öµÞ$öµ†N™Ø×Î5Qû­cß®éÞä±áûcÛ¼fl B#·3¸•q|€ðØÉ¥«{’ðXÈWº•D©à˜`BùT€¾% mŽ7žÈA F阷ßba`Jp LÔI$cÍñìPÞß8ÁžN¨þJ¸/ýDáµòbíús~Tc„«ùÏ«bj„øò?§7Ò…O‚P3¼ß0Žû%ö¥`ßðƒ¡èq@]æQêˆÿ”ÁدڀV3þÃÍÌ|_Q½«ÜÖ¥Êͯrc%¡¼dá¯Vº®•nW»JW•}ß[é>®ì0Üš¥ß[ßöô«oóYÒ¢¾ýáù™Œíi¡IW.ð<Ǽú Tq¡-Ü;‚Ç(H¨Í]Œ38â}†Ô`„¯#¸ƒðúm …F€Î „ÇrË|®Œ&J¢V†£$d­GHøÎ²ª[›¬º+¹N³×pÜ`ôÆY7 ñÆÏÃáÃã« ·­CÂíë•pv¯RÂ͘à¹v Y®-$H‹\ûý—6ØÝÚ;é’iµ¬5Ëñ˜SBT̉EûÏ€ú3@¡¬ BHuJ Cм'U©ÌÒîHe“×;{¶k“=O?¤_P§M´}Ö¤R¤Ø¼^§ÉýÓéVJ’k–8ܪÔÉÿ†þ4©²˜'-r¥Zö}ø2Ë&ø½„A#ýÒaó¥I #">Ô$æ+ÄwT,šˆ{è'!”Z—ü® >¦Ð|câ'Áæ aŸÌÞ[JêÔ&%å´–šSõPy`0˜ËÇSà!6—e Þ'wuµÈ]ù ÕóÑÇB£"åOËÓ9ÝUˆÅÂXèÎí„OáÜ pJ¨6iá#ðž’©ÏùtŒtõ™`Ĉ죊v©ê¡j‚í^| ?|jyútž?Á±z˜2/(J¢e xgi½[ó´~ªE¨G°&±ü[?¯$ðž ü„Ïþ}o޾[r|ˆ||ʧù´M¹e‡!ê’Ìþœˆf‚h«ŠÎ%§bil¼³ÀÜ«y`nÊ¿¨öÆ¡9Ëd¢oò桌L×μÒbçüµúÛÿPK…Vã®Ø TPK±Þ2 styles.xmlíÛ’Û¶Çïû¬:íUIñ¤ÓÖëŒ'NÒu³3^Ï´—I‰ˆIBR«Ý\å :^ôýú}†~ $’«ÓJ¢öLá@~ÿÀ‡ zóÍS(1‰n{†¦÷/rˆ‹£ùmïËÃ÷ê¸÷ÍÛß½ùý‡Ÿ¿}øÇýw ™Í°ãݸÄY†^”¨qòx±rÿåýÝß*=µßÿyáE?óR¡ó~ÿÃÃ%ýü!«¤ÀmúýïþÖSzéå47q{oß4\,Œâ›4ó¶ç'Éâ¦ß'pRÜÅÔu½Ÿ~îexíÖò¼„(žxOIkiV /Œ¦/\›—Å]ŠV­¥Yð¸(?#yéÕj¥­,^Ò˜L&ý¿¾ëOhˆr[ž}m,ÏsEÑhN=Ún JPÅ/ êÅÐ(ᤥf¹`Þó:ËRï?æzÑvçó…;-÷wZ®( žò¼3î‚LþŸOw…ïiØzqV ×çP¼h·<-Ò§2Ôò.Ÿöô·oX?¸™Säb6Lø§…ÐÓ>Š4£—&g½Z×C4O'© ´ñtþ'Ëò"7Ϙñ?•:8J¼(ÆÉ3Ø¥ë,UªÏAÑœÝ]\}J¨Ëúä÷·a¶V1:ºãÔ¨˜¢©ç¡Âì­cøÚ­Ñ¤b‡–ðQâøeóà k)ÆìBYZ­Ñ.ë"‚u'ÌÒ(AÏï7ÃA âͽòMßã$D Ý–‡¤Ÿz3¸Å=v’%D޾¡—ÿØÅ¿†m~7¶Ú‚ÇG^7y^p“ÃS<-ö ÄXœ+’\%P’Dw¹¹… EQ¼@&ºç²åôZµqv!¢_=Z¾ùŽ OÁ•¸ 8ÞCøP¾ü¸–í(_" Pí)Ÿ>Wsï–vQV3-# < {³­EË-^*Á]H›>Í­/ò"峎P—UîaáöIt‰z]5ææõš ΋ԚœçÖ]›ÉP]EË„@4gûáÃSEÁÂÏ}ºXF|†€ L]Av1¥d@ÌW§ÔC€×°“Û¶¢8 S A;Ì TM¦ù°ò‡ø@1Dþz$È“*‘DT-‡•4ú±@ä"êöv6¥h  v{Êz„-â* ÍYÆ »<²@XJ®¥t.PS`5+¡•|`‰M€3Ä^µãšæê”j*3ƨjãÔQX:çLÅsÆ©MÇKqTRë(©€uƒgRßúÈeâc×e¶”¨äÇ^¢>U%V3Ÿk3… ±Îþò° ž™ã&®Y’5U‘HYp.R׳48È2a½;÷j)Ë¡$f4Èʈaµ>Y½ ¦(z®dö¿™s>¯÷Úº©,^á8Þk*+îÇ샵pÀ“¹õ¢6ÂÁ …¦š«šV^êµÒ•øÀ÷³ô”ëÄõQ€ç—45Æ^ø^Ä13¡K¯(‰á†QÖoß°$¸nœø"!ð½ óßt^¢¤™, ÿ˜f©l%|ÛûïþÙÀ•v‚† ŸŸÃ) zm ’ú×p>í·Y¶ƒÝævó‚àU‰Y!¾ Í,Á³gI…’ %J*ìŒ\I…’ %J*¼&*L9îp2ÇÇü€îðSÑc3…]R—\)¹Rr¥äÊ‹+¹Rr¥äÊëåJœ”l=צ³mËMg‰%vH®Ä@‰%^ 'åÀ–ÃÝÓ³Ðw;צøušsm62kÎ]/¹??ˆœ?ÆÌvÁÓÃ%¥JJ•”*)µ3r%¥JJ•”*)õj(Õ<2¥Öæ­r`¬ élæ8“ÉÉÑt‡÷RóXÃfŠÝÜ£?áý% 2‰¶m%ÚJ´½x±m%ÚJ´½Z´õ=ä²_%<ûV¼)·â% J”$Ø%¹’% J”$xM$xÚÝøÚ£€Æåßã?£ ns% J@”€(±3r% J@”€(ñšñØá{¢]D~ÁÛNP€É’%7Jn”ÜØ±’%7Jn¼Zn =/é«î0—¿Ó"úÕ£pDþîp„½È‹\O1k Ž-Þ‡Ìò¡N¥ºµ‘]W¹ZM¹Á-9Tr¨äÐÉ•*9Tr¨äÐkàÐà9Q&¿Nƒ¥§Öž?´ ^ ŠL¢}ŸTòf4à,RYMâk0!vÝÀ«xg6›L†Ca «©’e´Þöf(ˆ½J–CIãhÎʬs¦ñ.˜¢¨øE²FÕß{I¢üuIcüX)“VWçÀ»;Õ+Ç• œ8Ðúˆb4 6OSÒÛËrâÛK©é%eK€lšÊ®Êª<Èͯ“9”S|ÖM½ˆY¥FËp ¢¹ðßÑ¡û¿ýkWè.y‘]#ö@Г_’7¨ªƒ¶—ÿe©­%òíÕšÝR[ äÛ«µº¥¶–Ç·WkwKm-Žo¯vÐ-µµ<¾½Úå²ÔÖâøöjGÝR[KãÛ«_„ÚׂÓx9=?ŸîðåoáK‡ÿ9&Ê>ø„F.*¹¢ŽT) Q´ ©Zf ©F„†(8©®_ií;ð­°šWßWÏpŒý> ¾ËŠ/g~è|YÎ8ó#éËrÆ™X_–3Îü8û²œqևݗåŠ3? ¿,gœùAùe9ãÌÑ;ÍõSä|Süx\²o9ÒԲسå"gN‘‹Ù{©y³ŠQ.„C4ÏO¥2ªGR¥y~Fº,³ /ÈôÏIâý\’1ºë/j> Ëj; k#³é”Öc¯Jöó\DoOo½ø’õúè¹ø•œY÷*øñWr­K¶ýš1óçÆ×-Ô’{,ß½!ûÛF?Ïò½}«)¡ËúÅûäÔ‹÷õ•l+—NŽ6áŠÞs†eýoÿÞzñÖÊ¥Ç{ªXïŒÑE-ëO´^9I¿¨_ÔoÝ/N†è'é.ê}óã²zÆ‹úá©V²'qÆËúÑ©o'qÆËúɹâÀE½¡Ÿ7~žwUŸ1òÆ×b+ ßü%‡úEAýëEûÈlŽË2—Ðt¼÷ê=³Ó:¢fó¸šíÍÃC5ÛGÔlW³þZšGÔlwDóðˆšÑ<:¢æaG4¨yÔÍ“#jŸ]sÙxuÁO謫¸áÝþ`²qX.}³€c|¸U*éCéÛž".Õã?×ðÄv<õ‡`öù™=QÙ–ø,ž˜ëÚ`0‰âQ¹®t+q˜ ,Ð û¼6¬»ÁÖöðÌnØË†~{Ú±‹úÎ=L¼éµ}ÿ2-mb˜ë¢,m öqlém³zÚØoeƒaiæ«8Ö|0ºçØ,@žØ¯}2›a' ‘°¢É>¢eBB(î¨"CDy¨¢8eŸßÒÛ{BÅ»ñYÚ”$p—ätXKÌæ‘º(m9šmTNn0ù^¤° äA(^€Ù "Dì EyG¦$ïeÅ/,»¸b½^±^§¸}Ö«(ŸCï K®×la£VoÖ&á¤]ð&¹‹m6¶gÆv¯XýÆm¶b“:Ó)¡.{…³{›ïszʃ]K¿\•~»m_}kï+ûÐ~Z,ÞX/Õnõ^óÖÞºßÜ–Eq‡5Œ™òNafÓÆÝú±8ËHûqžÊ5A\gIì Vñ9•›A9üìnõù¥·N¶(#ÞÆh,ê€û) ZJd~°¹—ê¯ëH’MÕ¹µazS+0¯l„µ OpenOffice.org 1.1.4 (Win32)peter lin2005-06-19T21:28:02peter lin2005-06-29T21:05:34en-US18PT3H37M33SPK±Þ2 settings.xmlí[[wÚ8~ß_Áúµ'14Krzä à-×¹ð&la”Ø–+Ëuȯ_É\ˆRïöt£ˆméûFÒÌhf.¿<¹Né;¢&Þ•T9.K%ä™Äž}%G£šô¥þÇåŸZOÝ÷õ™Í°‰.,b†.òØQ€ã}ƒR¬´ µ$ÉrÏG^/îwL¨-ËÚH+-¯µÕ°'’e½+•¤%à±Å,©~™ŠÎ¥ô‚‹åã+iΘ!Ë„ó<Õr¹,/¯¥Õ€'{›þQG'qßÊùù¹?]wõ) 8%dñB¼Áð²ãz°I¼¶ßV‘—]¤õn-ùfâëùÖ/—ÝWÀG˜!W,FiuÛƒ._†ïE›%’’Æl÷¿Áž:PGÄ—ÖÙÂç±Ç¤úÑIåó¥üç§°ÛhÆÁ«µ³³Üè·Øbó$ø“Ór­’¾…°=O¿Z©UkïÅ?r¡„= =!k— EÉ›ášEï‘E†µ#fÀ(ש.ô"ãJ4)¶Œ`µ;ðSB=©>ƒN€òà7(ñv×xƒÎh˜Ü†ôGD û¾mÔÔÆ^PÜÄg{¨@ŠÞô™¬AùÍWkÉÒ'܆Rç’‹¦ï„A z–ƒàDpQ ö ÍåhÚCniN»£;ØÅd¨OœE¼lm~ƒA—ä–*ŸË嬳yÍUÄ­ö£ üÌÛŇ:;U¸t!Õåw·ÚU6YúÜC2ø«HÓ&æ#²ö‹"ï‡êÀ¸ûŸ±]¢‡¼1¿²_‡¢{Ï›ìøÂUåÇðîA9'”›NF»"‡{4d ðdàŒ1”ĪÐ!V1ÎKÁöÊQ¯‘o¢ê`óq„ž˜náBÎø˜@CÏF×d†|:C[(è#zM¢äM>Í|.ÎIÔ§HDi†EmøS Ñ}|ÙwfˆØ_/d<¿*ˆL(—@2®Ðîx|2f4ï5t—°W†r\a‚$LL1ò§/¿i^W-8¯;ϞͨÒ¥J_©þ•Q_~€§Ëž½ÁÍ3U𳓌³FN—:´È*ÒW»œ5^C¿±Ö¹±c±ïº¡‹(d„·4wòHÙ'³ä(l8îÿ…yÜ3#ˆ³)A£{"(¢Z Ð HÚ&„¸=/!ô|Ç¡špóeÍ)íñªŒ•Ü!@ì}ÅÊåEHã€ígª–À÷Å8@Tƒ >’P0ã“ 5_·S*j3ì  žè©/ŠÛrÈ…ZqÊÁ*9È4› <¤¥çT%®¨1‹òðˆKqÐÜ%Nä9Y3› æ‡ÃÊ(šÁÐa\’!KŽœª?áõÓ‹¾ B§Ø²·Ùäü%à6π„tµ|VF{PI(øSP5=c$)†¯j¾+Ôw”7dcOÔC3#èžõæø=αнB^{5þO÷jïA¶¿I¡…9Ø!=”m3Z™õ”ó¬1ÓWD=pÍ臞ÉÂ7 /yê;q‰V!äÑA©õ£|/ ^(Ð|,z…½íŠIxTTLñh‰Na$t¬(é˜½ËæŸ@rµåñ¹.&QÈ«º˜#©uÀ)¬*uňÕéõš1fqX¬"p!ò‹sŽw‡ôð9Þ•ðœ~Š(V]˜XÉXóîó ×¦ÐŸC×-ªbïÒ „f»Qž²m ‹¨Ác¾òÜÔY.^{”¡\\PÈÅ•`*kø¹_²PðøÀ³ëϵr¹Ä5£ Û±p7õÙ~ÙŸäê<2š×ŽYeß&w»;²£ŽªÙàkñ+ðu}0PÖ$fõܸÎÃ$UŽí¦‚—¬º’Ú1wSÐ2(sÐŒöwg;íi6Ðc]26*¥Õ&÷¦òÜývv0¢öÑþ³¦uªÔ7A#c 4€nnò#Ѓq¤p¿gpíoÀd <ƒf ­8 5àF*€›÷"‘0u3÷c;äßÐJ4kà>ZÚå(RBñ àŽ˜¶RzLÅýÖ½À_ÜöÑ>ÚGûZŽØç*ã?#Ž} 2Ô Ä!×w²••R_ʯ~á §ýØ£þPK«E0¶•2PK±Þ2META-INF/manifest.xml­“ÁŠÂ0†ïûÙ¹7Óº.ˆX…µ.,ì®êÁch§5Ц¡Eß~ã¡VPX„æ2É0óý†d¶8Õ•8Rëtcbˆd‚LÖäÚ”1lÓÏ`‹ùËì5Y/ÓÝf%jetAާÝFl¶ß_KâÚ’Y…ÎH6m‰˜¤‰øéê<qõ º”Ì9¿gzSÆ]1ì™í±ñü¦çÂ0®ȃDO*tEnÏ7Ž)×*à³¥”µ•Îû[ãÑäÒŒô¢R×¶%ç ï*UXÅûð)]«’Кò1n£3>x5ŒÂÛ5îc4­&oïò‚xNúÅ'iL'F?žÇÔ¬1ì›/ó”ëø\‘[«á½³ÿ2W·3¼{Ôó?PKSVCÀlPK±Þ2óàÛXmimetypePK±Þ2=ÈÃs__-EPictures/1000000000000040000000400142E835.pngPK±Þ2…Vã®Ø T ïcontent.xmlPK±Þ2ö]››Œì styles.xmlPK±Þ2º=h$<<Ómeta.xmlPK±Þ2«E0¶•2 5settings.xmlPK±Þ2SVCÀl%&META-INF/manifest.xmlPKµƒ'apache-jmeter-2.8/xdocs/presentation/jmeter_presentation.sxi0000644000175000017500000063272112032647207024077 0ustar ebourgebourgPKÚ Ô2óàÛXmimetypeapplication/vnd.sun.xml.impressPKÚ Ô2=ÈÃs__-Pictures/1000000000000040000000400142E835.png‰PNG  IHDR@@% æ‰&IDATxœí˜Qƒ D!éÁ<š7Ó›ÑÖ6µº(,LÑy_IºoÔð†ÁµÌ]@.@C4@C4@C4@C4—躮VqÆqÜ$Ð÷½y) (eÄ—ÜA/àÒ{  Šx¿øB‰?ùb,°*}>XHÃR`³úùݰ=àÎ@ÈL@o¿Ì1“À«ýÎ(„[=F#«äh/?í—ëÌÌÓ Ì¹ÀShÞ~É ÁR@¡™›Ü»©‹b¥ôßöËxrE–PÑŸõöÀ^ûånZ·zd ·_æ$„pF æÒ>LŽ´_fž ¡†€Égó œJè´q.¤  ì†ý| ¡  ¡  ¡  ¡  yÆ‚<‡ðÜûXIEND®B`‚PKÚ Ô2­_ÿW´Š´Š-Pictures/100002010000019A0000008214B7D082.png‰PNG  IHDRš‚ô! cHRMz&€„ú€èu0ê`:˜pœºQ<gAMA±Ž|ûQ“sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+ IDATxÚì]XTÇŸët8šHDPPT{ï=I¢!1þ£FcÔXc‰11ÆžX£ÆžÄnTì ,ØPP:ÒË\ywÿ™“G¤Ô›ï»ïÞ½·oßîÞÝüö7;3ËÑh4 A/zÑ‹^ô¢—¾~^­ÄÄ€Qd$ˆéX.QFˆÕjà±×ssAÌ0`\ÎêT&&Æå‚Š=!ÌÚ2é¸m[HÂëŒ~Ôõ¢½èæ5”Û·Aœœ b ©¬•J°Dàk4ÀS( ‚ˆ¾„ø"`áã9k‚WÕÆ3gž¿óxF¸Æá€ µ ÄçC¾2ñ³ÔÀ’Œ•ÙcÆœŒ°tIÒÃzÑ‹^ô@SÃríX§¦‚8!\sr J õðåŠ`¢‘—Õ‘——† æ,xz~Xä¼Tǵ×ÝÝß/È̌О··o‡ ` -º\]û!K±¨R_ î9*à>ŠEäóÏ÷\Ã'¶þé¤ Q\%|çg˜D8à± žkŸ¦ÿ…èE/zÑM9‰èâEpG@qEVâA ‚ŠØ_&FU©ûÁƒí퉉׋Mzz?þ tê´ŒŒ¬µàBï7o®gçž0ºw_®¨ìì˜*ƒLy¤mÛàûõ뇶ù÷Œû®ô*€¤Î-ÇWlÁõcA’³' „äˆÇ=ðÝDoªÓ‹^ôòöMH˜Ý½ î))à)“Îæ=LVLÊ’¦MGi_6Ô/rþÒ¥9еëàâÒ«ð\\ÜE¨[·-4jô>¯G¶‘…mÞl«ñ±qrJŒ÷ÝõðWþ»ÔÈæämž¿H2¨øºŠ>ZµšGútî¼ÌÍ] ,l?˜š:‚XìgÎL†Ž—[³_P¨`>ÿ|#‡Ãaª‹6‰ y>å ƒ¤¤Óf© Ô¹G èömÉÓgÏLà šóˆ½é³Ï>óܼysè[÷ï;wÎ?öÖ7jtzöLЫ$½è¦ ­¥øà$4nü±vÆÐÐÇîÞݨ}oÕê«kËøñ[ðùr{Æ;ô Ù›Lž|ÖfíÚ^½ÒÒòzùûGCNŽlmŸÄµiÓàʸq'L³³ nâ-oЄ„˜ÁÁƒ‹@&¨Ck®\ñ_ßyàU:ü裼ŸÌ˜qììLp¢'¶„{÷R°ï¸?Uû¾wo(¬\ÙÁ—¬š ¥€´@Ôÿ.ö¸Q A à•òÆüãV­š„_üàR¯«ÕVÁ…N®•tyÊ”)7ÆÚ·oß+ëׯÿzáÂ…éüêÕ«›åçç‚ÌÆ¤¤¤ÈàààÎJ¥2ÙäæÍ›‡ñ>~РA'Œæß½{w©©©¦¤ú/^¼hôÓO?¹ 80ƒeP:tH¥òß~û­ÃÖ­[£¢¢¸x.çèÑ£fßÿ½ûСCSزGޱ‹Å9...J*úôiËž={f?xð@4oÞ¼†pE<‰qáùN»vír5jT›6mškdd$oíÚµ®Ø–Önnn T]›8q¢ûâÅ‹;!S16lØ3¶ž!C†´Y±bEÛXòÉ'qË—/ïennžˆ€,ÇiçvíÚÅÔ©SGë¨Bíš>}zoì«è½÷Þ+Ñ•ŸËu¡ûq¬3Ùû>|(¢va]»v•R[±ÝqŒqŽ°Ï±´úô@S &’E‡ÿæ·üçÄ©S°0.&æåA†‡×ÅÜGf±óç§BFFÄÆžC¦b§]±µõÆ?ó,ˆ@…»zôX ††–pòäèÖíGíºB‘wïþ†÷†CË– Ý«CŒó¤S§®’s¹ŒuMö?--nÞL‚Í›ï"°™Áûï7ÂþÕÃIC˜™ áöíddmpút ‚‘1X[ŸÄ£Â…|€¤áç?@бˆGЩŸŠ¼PóÚþãNž\ “²D©´†ž=w–kÖ¬qBå6ºnݺç&MštÎ[ZZ¦íرc¾ŒoܸÑ•ÿV´sçÎ ¥¤¤ØíÞ½»Ý|°åÃ?,Õ=]$©?ýôÓícÆŒÙøða‹ï¾ûî(Þ{™ÀAb¥\.Ï={öloTÔ—ß}÷Ý/]º´•ò6*»jÕ*ü¯Æ9ܹs‡‹÷Gúúú~ì©ÛìÙ³¿óÎ;QI·$ Ô5õ!Àô´±±IA¦6áÏ?ÿL˜0!bæ™3gú!pÊSSSëoÛ¶í3¡£³fÍrþ5566ÎA[ñôéÓ+\¶¶¶? øuÀ1ˆÌËË3& & A&×!<<¼nVV–3ŽKÙsݺuë…m‡cráÂ…9‰‰‰7YPeÇmÌýû÷;¸»»ßò3¼8T'ŽË(×1ÉÉÉ&®®®á?üðƒÏ?ÿü3©Y³fç±ý]°¯_!¨íÐÃÊ‹Rk”v ćó> 08òºA/s®€ßû‰æN30¯ßRëuV\lüü.hÝš |DÔjôî½V»>SÖ½Õ!S¦¬{Êã)×tÿ'O>ƒJ¥ üaþüX¾¼;̞ݶl¹>>vpäHüõ×xçpá‚_µ©‘¹fÿ’ÒzÀ‰Œ'h’öpzÀmpÙkõÃP©\_Z†aœK»„`áŒJ¸T*u500ÈbÏÇÇÇ ñs,*æ–¨ x ,H@…y,&&Ư¥f;vl(*ØäÐÐÐ"­ë…Â$TêžÈм‘\¾|¹çÎ;4 oäÈ‘æÎû)*q^BBB/##£Ð±cǶuµ¶¶FÖE¦;TÈ×Q™b;œ©,*ü¾]ºt)òLd'iøÚ…u‹„îaŸ¬ÿeÝõïÝ»·—Ž±Ý‡©=üñG~ §òÈ bM‰U¥§§÷;tèP×âæ@++«ÛØ®Äv°Ï“éÞ7¡~ýú‡°­™Øö¨óçÏw¡:uÙÔh—þTßûï¿/G°Y—Òuì_öeÓóI›ñrdqó Yn HÕCJ-š?à6q7 r‡h´ñb‘ òwÿl ïþ ü0ι^&ÖÑS­Ó×}ÐÉ›L×FŸY©I1âÏ›ffé­kú9ñH<’’rµæ3>Ÿ«]“Y¼øŠöÚõë‰Èð$0fL3 JaÙ•åK!°[µ¶€rôpÒž~™`WÁÁ0|Òíp¹©8³°+ÛÎÀ+•q(µÐçæIƒ“Ó¦M;ûË/¿DáìztÇŽÿÀöÕöíÛDv°sÿ¿ÿþû6*ZÎêíÒÒÒ¼°ìÒ9sæL 5Åý‚899]$pAÅïD 8Í0Œ6`•¾ŸÏÏ,iÍ ™Rô‹8¯ã8¸Éd21‚hx£Fè^Ç~S[²•$1{ïIÓ©ËÛ¦ÒÃH9~öÿÅC/Ãe»å°|â\˜{é<Ú™9~E@¦øÃ-ÌCùùº6ÌüEBQïË÷ù&ùáú¯®bÒ¤IX„—WpËWñ,kkCðò²¡C¢E0uê9øâ‹–Zo³Õ«oiMµæµŸ¾nnâb†ËÀ}ŸXóõX<_ç:·.™bå@œ/ɘv/m ,…ó° ¦ŸùþŒ™dŠ+´ZóE^}iƒ—–!–ÀápäIIIZ…‹ŠØ•¦v}`Ó¦MgQñ»²3ôÀÀÀ6ªÕj^¯^½$¨ÐµŠ»´ºûôés낌DL¬ˆÇãÉ¢¢¢>þä“Oþ)`=×°ÞùÈ:núùùEFѤ)h¬?þÖ­[Ó‡zÁæ•Eq•Ø1bTϹsçz¹ººú»233‹ÒmÖgôÜý@”——çÚ·oß(<ѹsçÍÄt°MZ @F‘Jïœå~“»ÈdÒ±?kéuäÈ‘õxÓï+Ú1¤õz÷÷÷÷B¦UJ]a샩d’Ók™ZÂhˆ½DCôÿò ƒP·ú â–Kq|vê3à##Ü6`›ÝßAóö÷Lö,Ýö¶íî÷W¿¿Á«—ÎBS¡¶¸O÷굎뎬F\ ã‘@×®+J»ÝØØx?ÎÔ¯fff6Å~…¬X±B;#oÙ²ån˜ï>| sTð« Œ>üðùS¦LYAJ™@`‹-£·3fL©k ÄPéʉ9<Ÿ8XßHNNîD CŸ{ôèqÙÉü|–€åûï¿'tš½ʹÄÄÄžåƒnß¾ýC÷îÝOе­[·z ØÐúS#d?w„ÛÚÚ¶DP3#–‚ýѲ½¸¸¸¾x¾ ²*OggçÝdf[¹re‚Ó|dQáüuíÚµ¡Ø¯­Zµúqÿþý¿œ:uê¶F£á§¦¦Î(­oȺ~úæ›o¶YXX4!¦äæævëùYË/Ož_p]3 2űz­óІ&âf2Púâfµ*Õ,ËTÁù~ª;^õ%×AÿõŒ·ýž«kXóZÕ(2…´…‹Ý•hݸ2ì6&;F ,¿õù ~ úQ 4s.ÍŽŽ!,=LËr‚ƒ`s¿Í`"4‘ƒ …6°ú&lûo%&Æ(&ø ßSÓìNôÑIjèÒÒw/¸¸ÈÞöß,²£™4÷®Pk-d2ƒ###Éd¦B!“àªÒÖ½ô@S@³Ö N‚¤q*P¹ÿ'½RsAðÐû1çb÷|E‚Ôò Κ’¶moE ú·s­ayEMc•6wªÔ*èÿWXÙc%,¾²X 4ùª|XukXˆ, èY´­Ûâó™½ßÏ~¿Yr´3˜2FŠšaE{€ÿ,u„˜„ƒ‹dP4hÓŒü}ÁwžW¹áhíàäÉ“Þý¿aÆ‹ìl›˜¿¿¡G­ixÕ™J‹È§ö¥¥¥‰Xó[mcUK—.¿T 5Dª³²¿áoÏù0<Ä/ÿÏ@FÛ+5(›7RL^Ñœ»`IžA«7øÆò'oÓkl,Ky÷ÝÆÿ9ÈiìÌÀ›ðÝ¢pX5Ù 4lU\S[¼BRC`òÙÉàwÔNE‚e×—iMhӺ͖=®—÷TÒÇ-ö§üý¹y'fÊ'œŸâ|ÏÚHŒÀ3À÷ÀùŸ&'ÿÈáí‡ý›‹ƒ žë»öí!WÿÒî_½zõtŠþOHHðh×®Ýd¾¡ó¿ÿþ{—Ó§OÏ¥u z?Þù¿È PZDþ‘#G<=Ú¶6þW%‰'è¥Æ¤Z6i†¶¶ÌŒ†è…jP;Ö¦jJUƒÇê®­x®±O…™¶áêlSSÐpÞd–ÃÌšµ2B$Êý¯%Z>‚ý'Àñþví\üj ngß¾nó5Œj: Ì]œÓ"ɲ¶»×>:1ò¶›\· yvßÂuüÿ,žßz~ø¡ dÇh:j”nü<€67<ˆôxúª†f¬š” ¥gÀÿUDp;AÉ™fÍšåOA_}õU²›‰ÆÆÆg(BÅ“Ïç§Ñ¬œ)jYŒWE3x}ñÅM¾ÿþûNºÑóä™%dx­C½zõR(Z¿´ˆ||†Š"øÙˆ|©T*srrJŠ‹‹ãÿùçŸu([ÕI11;vì°§è{Z7ùòË/ûнŃ(IhÝŸÝÁ¶Öù¬Q£FrZ³š:ujSj×çŸÞÁÖŒm/-ö·Ãºuë¼íìì¨<{ŸÓÆ &[©Tr¯^½Ú«I“&çŠ×Acѯ_¿>ØÎúlæ‚’ÚõñÇ÷À~Ù{{{'SuÛEã… 2†­kË–-ÁÁÁËmݺõ[a*­2£ù ~ë»öž”€dDm7Q1®áNòqëZi¾/ :}ƒo)yH§ß´/õ£š˜d´øOLc»G߀ßeÀž¼ ѺEuþ&Ô\`"AøÉ!póׯàö‚ï!ñÐ0¾e–«™u”#´ÊTæ4¸µz5·í¬Y`êèyiipãçŸAìæVòïÀ9 `Ûb€õ—ì^Åáÿ¤ïËÊHAúÒ2dBS«Õ¢.]ºdêÌÌÛxyy búìãã“€ÀÓŒÀÀÈÈ(•ùL??¿Uìvi2~üxŸððpgÎTþúë¯Õ¬»8yf1b5*Hí†"ò/]º4šŽuYLXXØû‡þ0::º3-쳌kûöí¾Z°]µê¶,Åô ó$÷dòà¢d¡»víZ@©fŠ·kæÌ™½T*AK<|øpòòrŒÀ6®ÇkdffÚ`Â~jóÁýòË/ÃèÇ åÿþ÷¿X°œrw~ܤ;t¸u³Y³^©i¬¤€Êjä!úq#Ä:ƒ ÅU\(¢€ìÛ·›¦MµÇÊœè¹r%ML´Ÿ‡:¹II`lW6† »éu õò}€¥“ŽÖäp©àå™^æç,}Æ{û`ˆÿ]žàD@ˆìåŸ^½zu …i·nÝ:XÒWá-’JÍQ8êAë_•7Y²›¤:ÌGÛê¹GøÀçç|O¥<Ù¢9¼†VV™ñï¼sˆqͮ˼è5V-Ù$bÈHt‚”ûÍAQL%F@J٣̰öERPè¼¹‹KÉ6c…Bfe-<{ÆågdCnîì]††-~öÙâ:uä51t\প¡ìÌ<(=3)EŠñ:tè}ú|« 2/v[-âñxZ¥Æf ™áå嵜2,\¸°ÌÌaaaŸ}ýõן~ÿý÷±¨¸ß/Ù<ûQ*² ( °JTèAS¦L™{óæMGÍÙtN,ßÅ6+(Z_·,9/´hÑ"•XUrrr_¤®:­Zµš¤Û_6¦…L…”ÖFDõ‘)íÚµkÞLâftt41þƒ/k'²’»ø¬ñ¿ÿþûÖâûþà˜:Òw€ ,:!!2nü¥5{J¥M6l¸¿x]ØÞÐ;wîÌ¢‰¸ ‡ÚsS4%È:XçñßÁ©1ʵÍïwØú~¸g8÷lŸ,&¾.þpÁ¢¶¶yìØ÷D¢ÜöÕ^±Ì$®tªÓX)ÀRõµÃôô$Ô6™†qqy‚” @QK$4I°/x”²D©Pø\:xð@vzú§­úô©Ö¸›^ÐkÅ18Ö½´‰2IW(93-–£"ksâĉå8×ÉÒ¥K?¢ CTd¾¨ŒpÆ.&vðÍ7߬lfTú—ieÓ¦M´øÍ'óЂ ~Ò-CõU$"_W Ü®ïR’N6síÚµ›¼6ØÇú碂>´mÛ¶~üñÇ4¼¾Râ ;QÚ—=z„R=È’Ö³Á¾ÛìÛ·ï§Gá8µAvµËç"ó¨Cæº-[¶l4hÐìãzd2do'ÈÌUR;)C±cÇþF :Œ€RØGZ[A" ëc³‹­ÆËÝ"bSØè€Sø?ÿüsÁ{'%"544Œ"õ·hÊGC±12Ëà-¼çªù~@÷‡ê€ŽÖª F°×´tî|ãòÀ;VÛw£æÊ!¤E8\êÆ@%ãØõ•ÐÆ yf<`© %’ Ó¨¨gF!!ù‚ÔTC®Db¦–ËíjÂÔ‰Š ©EÏžùTó˦ç Í À^‚xMóƒÒ3”&*YO³eÖT•ÌìÌ'Cf²ªDÐWDØL%=ÍŠ@$ŽŽŽ ZK!åý×_½KǺí`ÛFùËt3&° Mt³”ú}=jV¼î’ÚmjjÊ”5Öº™(#5Ö·¨,fúÖÍvØÞ! Â6À[øø‚J·œëûTu¿q=FÅqú/ÛB›˜Mœ¸Î ªÃ”™ä çú$W& ’–bë+•ú½pT*¹IllœáÓ§QB#HNq³³-j PJÄ4!/C)⤫̈́QC|GÎvq¨Þˆ}r¦9ì—ýÔTë¸aî$ ôui¹×ô™*" .ü%''ç£ÚÞV33³m´†CëDÈ€B®_¿þRÀ·hhöu ®ýYVvå·Vpæ/¼Õ!„s¥£H±ðÒhà•Ž‘B:þwY<ž¢ò`'3NÀž1p³…H ¼J`!v"JMM/”„#®Tj­V*kÌÕXùڀ—¢BèR 9r•€Ã(…ÀUr5¶_ÅU[ª‹mLfca³tú°éÕ¶¡mG~ð ,’É hf#ð÷õ…y^/ÉËF3ãÉ“'{ÓBñÿ×_Ý&33“Üo+xÕ™HhM„ÜY«W!VVV¿à3§é•Rí”2×h(Šù&Ü\¦™Ríi"E›@høÜàÔ{ª»^Œ‚[ïU<~âÄMd*m­ ¨l}.væÀ3ë&x¦ÍËn)e}Å£¼€b˜˜˜"zúTjÍᥥ‘‡—­šaH¡YüWWaý‰Í P¤ªSd222^i®Ad4Þz…ôšÍ:X7©F2.¿Brß=¶à Œ ²ÑÞ…ÞRE”c‹šÚ¨mР3Wmmã;TÌ4æ çz§˜Æ|*,vÕ(“ÒXˆ4<%Gmò/ a,¡4¯5õ •ʹja&W%”r€'ç(…rŽJÀ ÉP ¸5ð4*žš<6ÿé§}“gÎüpmU¿·_…‰%L!ST;‚̈́ٳ¡D‡€‚x³"‘è¼îùmÛ¶M§½Zhã3öű8;;_£ø33³ˆñ ÀLzôèÑ—e·ñW눈3 9åUëß¿ÿ]6GÕ1~üøn8Þüƒž"Ó»ð÷ˆÝÜÜÊ\£ 2ñù Q¢Øõ ¢7nÜ“åË—{çææ±1)´Æ‚Œ¬39"KºM^plÑuFp1kÑ¢EhÁfpÚúi·OÝ:ØúŸGñœ9sX¦Ç¶‹¶lÆó·i}‡Ø Å%! ?000`Èa@¯ýª4×àšu6dÒQ……§l𸾀«0 ¯t Ò\mÏSJ (J¾Zë4ˆ¿Û©ÓùòÍàò äØó¾Ž×Xƒ²Ì`1õÀHj Öe‹(==É0!!Í82R&LMåVPª……0¢$ .ÙšR˜‡@¢â¨„š@C ~¾ŒÛg§.<ÿíAF†dÒš5’¾üò½¿ªòÝI$ðòÌRm™©W*•úXYYýfgg·`æöíÛ7Sfd/pâ+’€¼ªBBB>C&´O¥R‰–,Y2ÓÚÚú=JÍ?pàÀmÍš5û#::º}ïÞ½ÅXnEü'&&°´´¼Šåv—V/eHII±)È8°ÞØØx,e8U§NˆðððŽÍ)àsÑ¢E•)²³³m–-[ö7MkZ˜ÿàƒþ¦ø*W¸É¹o“»qrrr7쫜{R&hŠ_Á¶ÅQæQºýg#öñuX,§>|‚Êç¬Ô.¬#ï%÷íÛTyžá¸žÝµk×\ZoA ™£WyUšKpéc½É¬j¢æ›*ºû·…îþÀϲzÈ?ú^¦âq}O5étÞ/ÚÄlôèM¶PÖw£æ<ô~ ç{æ@’USÐ ¨,e}Å£,@à’›‘a99õ È®,@aY#äå"ûÈC&¢,/ á©…È sy a®P)|T44ŽZÅáCEønZÐ áp4r¡P­} …*)—Ëa„BežWk¿:¡JÃá0Àã1ÚÉé‡ÿ)@Õ€ËË30Pá@h†aÄW¯^í’””´ˆ\ß{ï½ïhÍ¢2™HBÙ2¨€›ïÞ½Û‡¾@ ÈD%ŸšŸŸ/,,Œ¢ówQd?A6KèŸ_â$¨XÆxB¶OàAìà³Ï> E ÛC@˲*ÿÅ_̧cdO½(P”Ì€ÅëGübz\]]µæ;%l“_¿~ý¾À{TȤê£Òû¡(~z§];é§¡®;7Öïl&Û!ÁÁÁ=h­ ûèˆ ×Z¯åª4´6#‰_y*ȎɆÄë‰Àås¡Á À7x^enR.¤‡¥–³ò°c;cÈŒÈi¼ìÛÙ–Œ/Y¼¹Nm*‹ô&ª‘›èP.¼Ñé6çJ§|y²E+¨àú_ü–Àã)š–x1Ù>üFÃWwPq•dK²[lY`!/ä´“¨¨4Q|¼R”$@†b­V(l‹Jq<Ž$ï%,ä9ph¸¹<¥0·€md TÂLŽèblÈÀ‡y<–%M»…BMÃ(¸<¬ÉP‘…§²X€T ‡C ò ð—ÇS¨bly!›)x±}+—óFSõß— ©juÙÏãñ*¾…Å•Œ9òÓ"<²m@ce2‰w‹-þ@œJ&²â‘òe ­ß û0#YY-hÛCkBȾ´k.ÑÑÑ“ðy ùÍš5Ó&Åôöö:~üø;”bæeñA?³dÉ’L‡ –M±k<óæÍkNžx´VDÑÿlŒ >¯ ™ßŠ×E™fÏžÍPÎ2|öel[7 ÕCH€&âÛ”·‚Á{ÿÍxþp×C-[1w1×~vâý›ß1îb8÷t†&#šÀý­÷A•¯‚ÀÅðî_ユƒÏ˜f;3Ãv:Ã0`½îqN÷U)l¼KZËqwõò nY`cà¡wœï‘«J·vð³û¾QBó•±á³Ä,ÑÓ§jã£Ñ§¬¬4®TŠG-D‚5sDrd!cŽ ç”rœ<&!©0j.AC‰lC­]W ŽÍãñX3€F òUºf&-‹ªXAêX‰ ÁC²ÏE@âù"|á’C‹ñœ‚PødŽÜH^`ç’q±\àh•‰šáÄq^á¸h¨]ˆGZ%ËUÊyØŠÁEcjŒ¿.„À"¤H Ñ¨L9Êf¤¦#ø—{>7’Ë/™ç©Uj~dÂ×ý|+û÷ê+Žƒî€âR¤k×Ò×gÈ,öäÉ“¡È,¬ÍÌÌv¶oß~­E|üñÇ?Òº²ïŒŒŒ&={ö\UÙÌZ‹Dn®»••Õ•JeDf1vÁÝÞÞþ*e+655}€¬©D–®Ðú e•Æû?)žq ((ˆ”‡öìÙ3ÙW&¶}Iùî6eOFÐL …±ÔwbkŽŽŽ&LX?}úôXƒ§”<³¤gSŸûôé3‡2)P¢Oz¦¯¯ïoÄšŒwúøøô ³ÖwÑÝÝ}'™‰±á¹%ÕÕ±cÇ…ó±lŽIBÊ'%ÆÑ,%ËËÚ3£4ÚÎö;a\ø8šáÁö²#½×H ,d£2A?Çpx´ûð xàý¹·Öl¦—“…Â0Kp¾osçŽR&pg×efÌøIÎM±SdÞëñ41×Ý Ö$SþŒÏäIãêœ F#Íuž’£AE©!ƒ,õ-ÃÁ7†Ãá ¹ ­Ý P¨qÏ py\†³v¯qyjà"Æ€’hxÀe„ b «ÀÕ¦jŽ•õó?ÃÃY Gc*†Î â×n9a†J›§æð5À)TÒùæjPñÿµ;Q…†BéFp¡5½hÂ-Îs’ÁÑd‹©œºàrÕjŽQ‹2-9ŒRPúf™ŸWø|AªXÎU6@bÊðÈÔ÷‚’— nš•Rf¬àÕ¶ÐÈ2F®†ÿ­ÇGCªò= îAA°‘aÀ¡˜É,ÁË ¦ùùA¥¢ÅÙìl{e3B'óÑ¢E‹V”¥OlgôF•ÉPRÆò ûâ‹/Æ’ùŒ¢þY¶ÄöY 10^ÁšJ¦nˆµ¼Ì¹Í( ›5¡¸P})))"b.¥Õ§Ùà4×ÐÐ0 û°I¯µ* 4 aá69ÈËí:Kë1GýŽBÛYmÁµŸk‘5Z!Pñ»à§]£¡Ï´N“™†V† M‚©ƒ)´úª•þÛ(®ø¢Ý’ŒÎôNðm‘#iž¥ 4"NŠ&S“ÆQHl5È@4j5#¶”ãLXdjÔÛSEJêb­rEå jÔÌôO5BÊ6æsX¯Uòæ ‡+@`P ÁÍ1©)W „tóâwmª!g‚¢k×®]J/ÚT쯿þšR’¨Q£F[BCCÝ)åôéÓÈ|ôÍ7ß,F2fw›¤tèÐRgåä‚,‘HÇ÷áóùYgΜù•óþË—/; czÏÄÄ䦭­mJ3d>‘AEtîÜ9jñâÅ£ò */55µþ©S§¾BúûÀ”¶*ßËqqq®È˜zuëÖmw×®]¥ºÏ6l˜/*üôØØXOlÃðÙ³gŸ˜9sfs¼%¶Ÿ£P(Dš “’’®àXdŒ;ÖÏÑÑ1Ûñ‚A£©S§^£¼p:?XYYÝÃò†Øî¨K—.¹ÆÇÇ÷ºxñb‡#=þü"²ßÉ ¼G;êÔ©sëïce5~üøGºm¢Ø£üq µ=<<¼ùÏ?ÿü?Ýv!ÈxÇ5hÐàöç‹‹K€R©äáØ­BævÓÏÏ/ámýß”$i©ÊÎ<¥èN•*FÆBnΆֆEÎé~~[ÄXÎm,¸?é7nÊÂŒÓÐ}ò6îknå2Hò@©ô‘è†^í¿Z¡)òy·ŠfU9QÙ[¤ÓúK@@Àœ‰¯+ñ *••iË›7oþؾ}ûC?üðÃúFÉGý*bO{{û ȼ{÷ng77·‰T_Ùó ymÍ t3´=1B²I9Éݘâbš4irK(¦ÑgÖk í9Џ§t2¨ÔåË—/wGåì‡À@ÌŠ2 Ë*‘ÕÐ}’·[µj¨܉ÏO%wfºAÁBÙOk.Ÿþyž F`Õ¦¥ þŸ‡‡Ç6bvTË(hã´°°°Ïé+mÙI“&ù²Y¥Ü‹ŽŽîY¼MÈrÆÑî™ÔvjƒL&sŸ8q¢Ö3”úG9äøý©.ds”Ù€>…ëMg%ýPՌݣ#V—½Ÿ¨w«¤˜äó£›ßçdµ R;ÕMP9Wûäò66×´ïoéft¯ZŽ ÍÂäùªÕÂMEFó¯^™ ãÈDf¡B¼Vš)†R´´mÛö(™uÈŒ#‰(`ÒŽP1ò>LÙ¨)ô1J6‰3ùe¥¤ÁûÊ ©+”EZçX$Š3{{‡à²î#óÔôéÓgRœ2„"h»göMŠLňÌf+W®œK “••Uÿß¿ˆ¼‚]dñú)ï[qs!e=P«ÕÆlÖàÓ/ðL¥RŒ¬)Vg\’ÄmIcëÌÏÏ7£øý?æ%Œ†äI°¦_- ÓQù'¼¦ùüˆÎ×ÁSWóÒæ-RÕç ²EÝƺƞ(—·Ç_8Å\èÓb¼6³ ̪aÑÚ°Qÿ¥–!¥š˜˜8b„ Eöz!ï06‹²Í嘘mòTZ+ w2sÙ»wïW6lXMÁ†õë×ÏD圄 Ù¬²½ÑeC¨¨‹LxPá±m@–áJk9¨ä“ðžætžÖI­:>3­w [rGÅïLëQ ¸Pä{Ð)ŸžžÞ¼^½z¡xO[ssó'ÈR¶b²×Åbñ dårPpww§ÿ‘ ȯQQQkÙ½thLi§ "Ùt6lŸp\ãŠ×…àšššJhKmg*§g4¥ˆBÅ¸ÞØj{¨ågñz5Sº˜åòÛ>ä(:^fœ-ÓTn¯¼ …Nâ?Ðÿéúo¤fd•‘íÍl¹º}Vˆœ8q™ܕW­Z¥­/..®/2¯&(» \˜wO™2å2•±drÒéÛ/¹¹¹³©®S§NÙQ]”y™˜myÀšQÖkGŠË•#p^À>7Ä>OÁgi™"öÙ“LZx~öm'¯;kÿþý7—ÖÊ®`ooß29S.5 Æ$“e6 FYš±¾u8îÛ±]î¢8¾;è{¸|ùr‘ý§È´†Ï0vìØý€·‘ùÄ"£cÞæÿO‰q4î3y\p™éõ sȼiÚûzUó¯Xäð{†Ó1@]Ï:EmR+Åã=F€`£Fªf …}ȱ®GÊŠQª ü§iªh„sÚˆóób›ƒñ¼¦øUË>ò侌3ukb#Qñ*Å3ЂúíÛ·ÉÍ9µcÇŽ---T. âçé>—XK||¼°¬¶P]¨ÀÅT÷éÓ§Å>>>’•+Wz‘K÷úõë¿,ž€ê¤µ#:W<;ž={l„äå ®,OÖƒâãZÚØPÛèY×åÕ«WyU±B¯!Ð åáò’Þ™›õ”k–÷V§ÄKùÑ­ƒy™Ín+Öpya2ÌMÁ—§}n —j OÞÛÐQ"U¨ê«ªhHbŒ &Øžš>Oè$ —–{\do¸yzzþ&‰ë«N2­!óYÛ·l&4hÐZ B†æêäätšÌzzFSЈ¼ˆwd(4"yã·hlK ?²Ù}PµP¹™gƒðõøF92àó#A©lª‡‰ª‰8òæ®±É UC5£†jš0ƒƒ°dP4hÓüÁæ”™€ðMLL$‹-ºZÒ"=›@÷e Q[2P½µ=¶„ò™õïßÿPI™ôRÁ9p¹þpJÆíÔRëzô¨!².í$·$vA ÿ·nÝò¤LlD?˘`uë¤öÐ.›ll}tžvÛ¤L...±lœÛ†ÈÈHü°_¿~Ãè¼——׎Ññ‡M÷”2¤ð©MçΛO“±õ;vNBB‚ctttkÚôÎ?Þ'<<ÜY$å"Pn 3#'ï¹û÷ï÷¡c¼§Ð¡AzÂ¥K—ú" &¶]:£)Nèûï¿ßÆÖ¡+öööó‰}ZYY¥b¿aóÂíÚµë3´_°Ÿ­h Ý>Ò6Û%õñ­b4…`Ã0õÎn2thÜÞà”çÔ.ÀÕ¼›ÿð4ÜÇg¼ˆN`èy_éÆW)š¿šS ÏµÚ ¶ÈÕKÉò§YÇ+ ­ë)¦æÒW¨àå1 ”à»{÷ng>R©ÔÕÀ ìä·8CŒ³ü`Öš2\¾|Ù›2¨T*QAf€VËÃjöìÙ3ºAƒLj‘Fe}šXÀãÇ[ׯ_¹S9Tú#è®±Ùè3‚ÛÅÒênÛ¶ínº¿`ûfëóà$d"} ‡ BJò ñyž²pò»sçN81ö2–m:ÈãñnRv§Mì%ô$°B¥_û1ªø8`¿NSVv¶]ØÞ…ÈÎ2)³å]Ã: xÓÓÓ»ÇÄÄô¦úð{~…—´ãÓ¸qãCÈ.ÿ¡cdW…}Äû~þùçez ) ïÑ5è—ð°nP—Ii&B E“ZÙ957µ^/¥ý5à?µ÷[©AU*/Bé c z)ŠÅ3ÓÞãþLÚ3*uÍš¹ j(Û¥ºÁ˜U´¦š“È2ÎRÄñr¤ì!ŒÃÙþ{ì¹Êf`…âaO°Ÿ)2ž;²3Tä‰/7‰Ä”â`Ê3,È^èƒZ­FÌ2+3žr¾!P~F€€Ì©³Àñ)tO¦Ô9ä¶Ü¼yó~±±±]±ü96µMJJŠ™¡¡a\I`[Rf¼Rüx!cSP†Ž"A›”X“¶Òf룜V…Hin*ÒÇ·ÎtV\²%ª¶ÿ,;EŸ¶¦_­ˆN'pqܵ“ñí<µÍ¸õÊ&Mƒ•´éößf¡ühB›ýY/…ljÞߥÅÓka'æüF áå™ ^^†ÌRdKJJÒ*KÝÌ3ö 'tcAªš xd<åújذa‚O0g’YO7¾S§N!6Í @OD[:Wh¨ C)oµ•w/¾Y³[ܼyóÎ;o&ÖÀW$ˆ•èœ(kÅÆ ùì‹/¾øòŸQªºŽl)ŠÒÕèŽßKÆá.2ÅhZ/£»¦BA¥´VE^}ùùù®4t™RS½“—Rð-ÛGünz½©ÿ³*§LV«5fÁg¹ž\³¿ÛyLvž‘cnûWÝ ÃMö çÇ·º®²w{¢®ËÕg6.í˲.7„ÂGZ“Ú[,ðé\§Æ±w@ÐZͨ^ÝÚ\/XÇ ;²q)S? t…R3ïG%w533³©¹¹ü@S¦ IDATy*Ñt^73}&Ó 2•/tïm×®ÝWUÉ   Sfïž={(¸ô®]˾}ûÖ„'uîܹ ´Ž±zõê0TªOá”{öþÞ{ï-Ä~­qss{‡ú¦5<¢Ð:×$<ìAyÓΟ??Ç$”v¾ŒŒŒì‰ þ•»uëÖpd}켑ɬ&ЋŗW­Zõ ö=’…Rä?ÅÒ¥Kwãk˺uëîRµ²Ü¹äýñÇë±®ž” U«V‡ÈD‡ C·?!ó\Ë–-—’W ‚RŽ•+Žñ”’êšÝ>Ò¶ȸ:•ÔÇ7’ÑxÜØÊ†¡ìÿt¡…¤^#ÎÅæÃÓñTu««± nb“Çüg].0Žu)}‡\0•ždD¢+øÞñmè°‚Ç—í©ç~m·©µ·R¥n­VWÎþUnÌ`‡f0(&üžš‚63€“]ZÂ^p23ÂÂW¥ö5©®(Å󬑉Ao½AE»»»ÿÎ*Vòö¢- ÈãÍÂÂ"”e`åŠQ©©©MðE”LsìØ±K^Ö/vlQ¥"ûS”ÔçÒÜ‘ ¸Ë ÞÅÇ¡2õ 0À7!!¡%öϘ̙cÆŒYú&þÿJd4—lœŸ"ÍQÕʹ\ŽÄ¥/°ñ´"KE¥¢©)#rӜ܎—{«4½I¬ÚÅÀà2äçw„74Ö&C ÊÛUßãÉ)S+'9ÃX>g(ÄV펯e4b‘è¯k >ŸW•6…˜X„ˆR$hÓÀß`ž”ž€ÝI’LP6l¸ø²™7Åh̘1#œÊ±*’ ªòª£ëk*“^ªˆ%t¯ks±:*§õ›¨PÕ€–‰]®®¶¿,6 ‚—Çt0”´²ã ÁÃ?sS¿Y¤r|@Ù\25$ùù]´ÙŸ¹\Ù›Ô­xcÓÔÞíïŒhÕUsÜܦ¹R£©o»úu,ªôßÈA@ß°¹8È๾ûöÄ@é™V¯^=]&“™á,Ø£]»v”µi-˜ïÚµëO2'‘É­2™ª*¯:º¾¦2è¥jR¢élûXßÏ9«TLõ¬}h@#z– êòì7#073»íÙUžìØ1³¥†[˜iXŽàÓ*˜+kuMån‘©j¤ÿj^¡(•Í´î϶8;°z»rÙÁ9âHâòê3jµ 1“ê—°öãªRǯ•PzfÎól&̆’tJŠD¢!”©¸$S±—#GŽÌ155Õz°Ø‚ g`÷ba]¨)æ¤}ûöiÞÞÞ²~øÁ“"ú§NÚ¡Y³f±T†ÜÌŒhwɲÆÖ/Ö¬YãCîÑ£G¾LŒŠÀϹâØ )éOýùóÏ?½srr̰Íÿ°LŽm3MÇóæÍ»¨[?¶§ e)Ðþg³”Ö¾’2P»¨¯:uŠ'FH‹ýtnüøñÝõò±½O¼¼¼2ßæìÌ/Þ¢E‹JT,Çï„A¦,¯su?P.WÛÇ?áº?9oš“mv±u'|Ún…c÷sj{×p¦®A¾F¨ÿZþ!O=Š…àp$ Ñ¼VûÚ<35ÏÞÕ¤eèòf­Vus8\KFÃÅå~Ý÷"ÇꢟK,£sìla¶á³®­oW¥­' ô• æDÖ=v–U†ì¥K—üæÏŸ¿ÉÅÅEYüz¿~ý¾kܸñaœÝ[·iÓæe@åýn$Ê£GÚ òunݺµ?þÿ£Êz*Uëß~ûí¹\~îüùó7n\Ž }žß¾ÿ~w†aä§OŸž»~ýúR©ÔôÉ“'Cðsö¨Q£¢PAûÖ¯_ÿ†ŸŸ_0|÷Ýw?D…Ÿ—œœÜààÁƒS¨N¬ÛëXÿøñc5)ð7nL Œùä“OâFŽùƒƒCBhhh·½{÷¶F PCÐÙliiy—¾o‡3|þ@‡#E`ý`¿B¡€æÍ›ïÀ2qqqÍÐZ~õÕWAÅAuÖ¬Y[°½iiiup¾Ä>üƒãf‹@·óúõëN†††Ï4hð¬k×®‡œ¯Ë8° Ÿ›4nÜ8}òÍŠ˜ÎHvOx—Ï‹ª©ÓvÑ1áªAkü v–Û‡/2°=Á7x¢ÿJþC¡íˆÑ)­–K†¡‘âW‹{_õòèË.}MÎØ9´P ‚®©ç‘À/ÚUå!†—g@zQæÖß4»§ò=zÌ.){3*T?“6úœ„ÊQf€;wîxRfZ /È 0±,óEÞ·jÕjéªU«~Z½zõýû÷_ʲ áÖ­[—{ò±=‡#""~¥ôøÄ<ÊêÝCkLXw -Î|y< ¥Ô§¸WW×ÝȺ±å‘9… \CÐКâPñˆ}9He).†evä¶Œ@8ƒî¡@Mòü3fL_:O©^œœœî!Àõ.Þ&Ê|`kk{ØÕ‰åµùÏØë÷ïߟMÛPÜ‹µµu•#·f¯«zåQ Ó‰•‰ Ó·©ûœcwï!o²šlD¶BÙr7j‰Ý`ÎX Åwzs•2?Ì´¡RÖLŸ ò‹FcŠ€S ®C~~»ÚÔ´$s‹œ+n Ã]xIƒ&jFÕœ]ܯiéèVožGq•ƒ’qf—Š­-33þæÓÊb2È6:t^in¨œç ÂΉDiGÊ%K–tÀ™÷ðÊfÀç]èÝ»÷LpÝd“¤Äu½ª<<e>4ÅÒ*ûŽ{£g7ÝÜUOMLTŒÚ § 0¯> µØÈàèÎу7VW}½V莽—Âx$]Kq /1T~mNœ8±gíÚÁXºtéG"Å3”$•É @‰9iöNà‚ ?Aço,jaaQavGYš‘A­£Å|l·Aä@@J_EY—»téò„²”å”2‹Í¾}û~ÂçÚ­]»v:'“Ž'm€ulF€Ýƒõ¬¡:š6mz‚²D—ôl2qÙÛÛ_íß¿ÿŸÈŒ´±<)))s(3¥ÆA ùŸ±™²SS}”7­N:gЋ§¦!gWWWëÈòB £*’ñàm”ãhJŸ¿®—äçך\<.7'¦3_•;X)µmÌä×çéO͈Px  šé‰r °Y»ò¦O×^Ú ÷Íüе«–±Ì¸p¦´j¥=Û¼9tß»W J> ; zÍ¤ÚØdÞõh’ø*ÎBl‡ÚËJ7¦EÃR<¾…)ÿRó¢s½à>ö³n=å£1äó¯ûÜw,™‘«s8â;`#VêPÌd–à0 gtwkâk¬®ÌÕ!l†Šš0uttTÐZ 1¶+W®Œe¯±ëAl”=Eý“§97°Ì„¸¬}]¡ Δ\³¬hý’2݈~|öá9sæ|QZ ¨^*4é99¼¿ìšÿ_0›rQ3.7ÍQÀlÎQBPp»*s­4*[ýW\]Ì”ŸŸ_ûƒ†32`eÏžÚÓI¹¹Z0YÞ½; ‡7ÖšÇv?zcš5ƒ©çÎAs[[-ÓéÒ°!Þ°aL¸»{N¬ƒ£:ÁÜÂI¡뢠PTéÿW@c!ýuØ€jY—)IbŒNÄÄøå?}ª5M89pqÙë {[b¤àÉåZ×…»¶ 2º B¡0ÿväõFf=½’¨ a¥Ó÷›æ&gSÖM­7[ñyQ¶\Èôá©r{ªóŒ›ªåÖvŒÒYÿµW\È,¶&887,-M4­ukþ¨¦MµçÉŒæwô(„!øðx°wð`p‹asTT^Tš«nàž.É2ÑØÚò­||Ì ÎÕ¨uåPøïF,ìÝ7rÐ’êf2¬< 1;ðà"¹LV$hÓÀÈÈ¿»¯ï<'/¯*e`cHÈóKwÉêÌ @í`wˬ¿WZË‰ŠŠò ߤÿ÷þ÷RjMi2º‹OÀÕˆ˜ˆdInG¦v›ª”j8‹Ñ؇ª8Îÿ0ûmjC‹ Óô½\“øK|ãðX(&‡ËKFi¬Q›p«¸m›,õÌÌàƒF„£š7Ïò=xïÛ°!ËÝšz'œ5ëÁ=…–^ >Ûº#=yèPqnË–FîÞ±ÈUÈZÏžc²cǼ~}0²±)3^¥´Ø–ò”)­|yâh89îÖâGÆøþj$jjbQùóŽnܸC)—w)~M¥TºÅ}z︸8#Šq©¿×Õ«W·JIIi2cÆŒsúo-0ˆTæ¦}üüWœ¾¶ãÒí_ò”*¯×©ÃJµÚ*Y VÉ*ríá ð¸©!—›îÀÓ¤9sÔy9 ×M­4vSç[9c*b‹·ñÂp8L¦©iB²¹8'Q,–ÇYÛ*TGŽzMoÓ1Õª[7£#?²èüéh‡È ´mþu¬@Éåb-] ½Ö­…K3g‚©£#˜88@^Zz­ì§ŸÒÇÍuÞ7½ÚÖhÐÝñ_È(•¥gP©Ü/íÛ7á£Ù³+  š^ë¹æììl””ä|èСÐÊd ¡l·nÝò´±±Ic#õ‘£¡cJª¹|ùrïääd;6ÊŸOVV–ˆÍ(@ûÔxxxHН{”ñOŒ ë´&‡boýû÷¿Ëö‘etØ ¹¯ÛFÇlÚ´é¬ný;wîl«[­7®—¥¥e&ÛŸâB÷aýhÓ2vWNÝvEDDˆÿøã6“€››[œ±±±üË/¿ŒzYþ9=£©€thP/{XÛ&NÜ{‘æ+i¡øµfÄÎjE:2 H8_Wqë`øv»Ô濪 ~“¬­<³¤}\“¸c|“¸ë<Äë<ƒ”pž(%ƒ+ÈJãðr4ŽÒD£6~"S RDšYdÄ™š?»ckŸèP/%ÐÑ%Ñ¿AÔC ½²þjÜ,o¿—7hâmxʽ±ùÏ¿o¶¹!2¬{áòEGœ) 1É”Ãã0ùùpoão½¶lÛ-Áµÿ\8ôX6lYQQwá¤Ü½ ^#G‚ÀظÖ0üÀÔ12ܲ¬_ç¹Ã¼>«éq¿qòäõKÒü ³±nÙ³g•2[Y¼xq‹ÈÈÈnS§NÝܾ}ûìÊd ~ãÆ Úû&Ÿ7mâÈ‘#c>ýôÓQaaa– ?lذþzò´´4;YåÿðáCÑ’%K¶…‡‡ßAåŸÌâ· &üU¼­ºÿ¿ÿþ{ÿY³fùÏœ9³ùþýû¿CV¦ÈÏÏ7Be>ßÈÈèL‡rÆŽëçèèwýúõ8`5iÒ¤{´Íò©S§–XYYÝQ(†-Z´ˆÂ¶ºâý½½q¼UÇŸ‡cµƒdøðá[@n€Ï1?~ü#Ý6‘GÛÆçyzzb»Z"ø3bÛuïÞ=W±X‹C©F`Ù‰z¦Ak…­­í?]»v•ê¡¥ +dþ4÷³Õ ž=q88t±L¡ôycgöEŽŠ±ÈÁcšÝNÃÇaD\H5àr”F\Øp@&BµfÃÑ(Ȇ2S5#âkÔZ,{.äñŸk=àj4Fý{âP, G{Dñ%y*7'•Ë)8\p8€ §ÊŠä.ϸ\MšPÄQñø<9Ë— „B%—gªâó*ÇLÃãry\!‡ÇµárñÅÃ*x\àj_<¼ûü3<ÅuðPÈMJ„ºí:@ëÙß`¹ç}÷1ì;t‚´ûÐh¸8vî Œ< öí;hË´žöÿö®,ª#ë6Ýì›6‚0"‹ Q5!®(×qÅ%jb¸Á˜ˆƒ¸Ä-.ˆ"¢FC4bâ.*Œ‚ ¸äGQ¢ii¡ñ¿§§‹y´Ý€`ˆÊ»~-¯ßR¯ªú½{êTÕ= ܹ#èôùtžØ¬Qc`ja1—?l×6h–gû[öUTÔª P)—7HáCŽßM‹i^^ž!¦@CàìÙ³îP 椧T蜰E«2ýÉÀl­K—.e°Æjà™œ|P¹>KÆ‚ &*êA\\\9æo (nÐmT—WŠ‚Y N‡íÇ‚a,ˆ”€Åš€q•aÆ\À"ÈÉ_d+ƒÒyã(í¯0…™ÄŠ Ë´´´¹(Õƒ"@”Ö(bvEÄÆŠ˜®Þ¾}³ZªoÆÆÆúS~·3fH  ÀÅ1]]ݘm›/Ú´iÅîK,k<)Ð0[ìëAŸ±¾v˜~ïþ—••æM»ZŸ‰d•+aG1}«ÞLÖªWÕ6U@ EÛB(`Õ9øKßq>Ïè;ý” µ´ªrð"fÙ¹ëï#üï}¸Ö¼m[Y»·yPÐd=}™ê ­6³·W\W)ÿëA†ê ¨™éúÕ}ºïma¬Û¨Á9ôû>«¬´ªù·5H€9püurršºsçNr°õQ€žÑgäPc[¢zÝP „,Œ­­mµ E¨ ºŸX‰ÕYÕk^Ä T ÏS­«E$ªê~Š—”¾!&.ìÛ·o¶••U ^\§ìn4éÖ­ÛsHᨨD"±ºS  U½ŽÊiG,é§‹²€ÀZ¬Ü®R? fo*‚> oµ¿s/3±˜Ycîš6ò«f&Û° _½¼½JF+oa¨9¿‡û€öÙÓØ £pšµêbéêë×K@Ýš÷ÚÚÚ2,qŒm¦ ¶‹lAÀÒÒ2Ÿ1u–’’2¤G[¡ýENö¹…¾ïRPPàƒV>ÆX¸ÇìíígS«ÿ¨‰‰IZÏž=?eû‡Ú¬„€‚œzXJÙÙÙ¹šòcÛ>ì@ –~úôio,ž-4Êw•Ÿ±±ñõýû÷÷¬Kýðü ³sçÎmÂ}ýõW…ª ˜R5¥w™XŠÒ'Ož8PþŸ›ô@Lëâ;w|ÀÈ0…óø·L½Õ{ŒF“Y77-ÿ¤§Ç9g+ËèÔìÂ=‰½}„î¿øøøÍt}åÅ‹7nÜèT\\ì@ç·¥<%HýzìØ±Å6lpÃù¿ýöÛ='1cÍf-^¼x&ùºÝ»wG7`/bwŸ"}JË}îܹ&L˜ð]çó œ¯DGGÿ“Ž{lÞ¼y –…¦²ýeMõéÂÒÄøΉˆˆ˜“™™iDy1 ú=Žßƒ÷X*þëEãh^Ô"/\6ÿ.á¢ïÝGÅŸa!4¾ÊëI=¹]g"Nw™¦®3å16îR5#TciUŽWK³z:U]gÚ*é¨Þ‡›¶_¹ïñ*~ =ܬ ô¶Ovm»¯ÛßÌ_†pð Ó¤¤-”Gk•.³hSZ&õ‰:å0ÅgÊ({kõ̦wïÞÞW¯^õ!§ˆÁjµÝ4“'OôèÑ#k33³¼;v¬ºvíÚÆ„þóŸ‹=<<~œ8qâò¢¢¢ó9tèÐèÿûßÕ›ïß¿oB÷ryÓŸ#¨bóoÓ4̺Ø[Kôƒ™*G~N½&Þyî’WÖýG#¤OѵƃoêMW¨•f¡¯÷cq³øÿf‘ÿ:å}ÓáMŸ«fPˆ:5}þXõÊʵîOéééÅiJƒÍ¤‚uîÜY@@Ó·!ÊUy'F”™™iÊ¢ý1{Œ5¿|ùò½ñññI]ºti˜×ˆ#¼é¾re¾«ÆF°­õϲW7u[SC>èº+sçÎ}£,Úã9°=°,4S,ДWÆ'Mšô¾¶¶¶œ«€ôqÏÙ³gÇ«ÿA¾ˆaöÉdzAAA Œ-¢ ¾§ã+?º>|hѳgÏËPh*ŠÏ¯LûP×¢˜Yãb®,™9vÓÇCßë`Û*ÀT_ÿ”–@‹—shâ¦%È „Âø6úó>±±èö»óðU®m÷¼n “H%>µ¶®¥%>/ë~¹¹¹Xîb þéÓ§XwÑÒÒ’988ÌìÞ½{Ô‹Œ±lß¾½gddägì;9ìï™C>|ø±‚‚ÅôÞÛ·o‹á´1[‹œ¯QvvöÛ˜êÌÒX±bÅ·k×®]@ç´Å6öcj¶ŸŸßVHÈ}†õiTï‡]ZZjAÑðððïÙ$äÃ××w"‚IÉ¡ÏÆRÖØ‹ÅEl6؇iÈÈ+íSLĸqãFUl››Ûªœœœ·Œ— ~û°6ÍÍ›7]è¾&Ó§OUü†zû¥R©bÁ¶Ñ£GïaëïôíÛw$€XZúÄrÒ›7oþkáðŒæ/´Ü$ôQ0ëzß¹àq#¿°KQ铞OÊå.<ÛyóMGKa(·ÔÕ¹ÐWlœÚÑÐðˆËª×® ¯”¿…q8ܲ²2ó“'O~™UõQ¨‹X "0KB\ Û Àj™pªÔr/:wî0RHé#ºžXÖ,ÜzmØ·uëÖq&&&-[¶,$»J¬ +ëÅ«as VtéÒ%cF°˜˜˜(Õ¡©- IDATcïÞ½%IIIshצX@ SBN_qŸ={ö|ˆ¼ªSuž8qâF°5ÊC[è¶A @"‘t @ŽÄqœ9U.«ñ÷÷÷544¼É&XYYy.X°€ðûCÅ5‹-Z&…´Œl™R}“ûÔ~Õ3èli) ÿä#&¸]l{’¯t½û@Òµ¸Lö®¬\îÀÏëo"-AŽH˜, ’;š$÷36ÎË)ÔV>«Y@$5XzßÎÎ.ðÉ“'æ"³ÙôÝú(ÔÅÌL›5kv›»ì«d²|b4U2/Ä2®«11"íkŠØ +..nC–øìÙ³jÊñ¬ŒXa“îkÈU,033Ëd瑳·TÍ+3Ö%ÈL©P¥"@uº®­–oJOL™Ã¾C­ûØwÖ]wÿþ}S,GÝ@禑»Øès‚6ñQÄ龜îÁÏk,AŽ‘–0¹¹Hì®+JŸßÊm kp¾´¬´Æ.}]ýó/š.ºÄlll$èóG·OQQ‘Û7¦pSعsgД)S‚  @Ž;Ÿ@ƺ®÷| c,lH:µè?sgcÔzÿlûöíÛ4é±q û¹¹¹]¸¬Æ¢õ·oßö¿wïž+ʤ££3[µ ÷!¦äŽå•™bW/¤:çÙÚÚ&_¿~}$7¯š ³ó>lèççwã(»êL·mÛæŒñ)KKË[\¶G½íâârè9¿5tè-Ê“ÃÇìÕgbcÌÍÍ/ò@óšØxO÷ô©¬ºüH¢Ëµ¼ûî÷‹K»–U<µ••W¾ÅƒÏ_ùiÝÒ¡‰@påoaê:Â4Kí&9öæÝÉ{Í¡ ‡¼ˆÕˆÕ2PÒ«c¯5š®‡R1±aä@Í1%×ÓÓ3¢ŽÑÑÑ Èq%Є¤¦¦,--uG!®iÙ²åqĤ ÈrÈ!›1.C× „Æ9â¯ë’w€9l##£hb US«1Á E‹Ã(ÍÐØPffæ¦C‡ V±—Züÿ§lÕiJ;222†€ÂiÓçX¤fؘM¥›€qHá ûöP*ï&3fÌÈÙ «‹b1—-[&ÅJ˜"‘è)± )fì8quuõayµ¶¶¾xéÒ¥}êò„zòððøjõêÕ;ÂÃÃS!ÛC€ñNåøT;¬RÙ}(o; ` ìÆ;®šºÛV¬X±†~§ Ä(sèÞy`8Må¹ÿKâhÛR²ó ·Å§¸å?v,”  p€ØS:_/Ç´ù*xÞ° Ûç}ßE >_fL½ŽKË6 •–•J¤O,$OžZ•Ë+tž”WXUV ŒhÛü©\n%x&ÐkÌuz´…Â"‘– ‹?é舊tµuŠDÚZ¥zÚÚØ~b¨§ó@l Ÿk -”µ25~àiÙ<ßµys@þdS(DÇn-/—?¯ -ó‰Š:é0eŠÏ({{ëz+°Ösqq±µ˜ÃhbÐTe€¦hPB¸ÿþ)¾&x y% S¯ééΆ™r©¬ªk@%/—‹jc4Å"t_)¶m[4{ÐLßPÆ~ÉÖ&ͤ]í‹ø_æÕµM›®d˜)”¢ÎLŸ?l½•`xg]50ŒUÔW±#ĆÞG$½ŸŸßy0$ ã·a]@`[tŽª)1¥tÆ °¤X$Õrp Š˜6Î=×µmÛVF‰åXl –Évuu½I¿»vM Ùñ@ÃÛ fÊ©ìÊãk¥©´–¥µ+”(ÎYó2ï‹qrä/¬ €Hú•+WîrttÜell\”••eB`'Ál2r¾áˆäGd|ttôØ.]º”’3ÝݬY³´V­Z]%G¯`ðˆˆ§}NNN—¡pýúõåpªÎÎΟþñÇ6IJb#""“?ùDÌPzäç̙ӛÀ" :`o2§teŸsæÌ™.k˜¥¶sçN=[[Û .oOŸ>} ];vÚ´i”&ÆFJ÷íÛjdd4 ˆ¼ß›CçWõ8ÄÇÇO‹Åi˜vƒvÎÉÉY6yåÊ•a © ÿ®ÚåHå^ˆø!” ‹ÔÅÅÅídù*))q!ðOÀ"jnnnã±hš——WÝk å­M •Þxã­ÎVQ!¯]@^i÷²ï‹™XõQPFÒ§bª1Û'©.žÀèæÓ§O­RSSDzôXt=‹ˆ'PS«þr¾ó ´>Ù¿ÿ€±ÙO?ý‰…NÝ3ýÞ½{_ƒÝÀa«æKÉ"Á¶œ2À Ø±Î;P2œ}„)8‡i² ¨Ü¹ ˆÐõ ¶×Kp±t5VÅtr„.Ø—’’2ö €)Ò××Ïûá‡<('Ø5ÈkAA/Ke:vìØ0PoݺõQ¦H@ìÊ2ÀŽ®Ë[ºtiÿ7ù¹ò¯>o¼5â 'Ô*¬í‘Hø§ Ì£k b”ÅÅŶ¥¥¥–ݺu;ݼyó|(hºF]$½¦hxbVÄBîpA ÑõÄ"òØ>ú›_^^.Ætaà.sðíÛ·Ï—Ëåb3¸ZSY tIùŠ ê/“ɪ}TÍäÒÖÖ.ÁBiãAL 9vHã(@ :gt¼H«³··ÏRÓ­)&Vb ¥04b6Õ–w&€µ …n™p ;N×Tý®ÄzL‰­U4™çžõyã­ñÌÀ@·Ö¨}}Ýz) E]Ó9L ,,l=‚¡ `ii™OŽZãšPˆ¤øða\Ëö!þÑ£GÙwDÃcßàÁƒSŸ|h:o޼˚”‘Ù*’r¹\´råÊS8¯>ÊHçСCÖ/3J‘÷dáo‚bp°˜™ºõmxûŸñ“xã­ ʱ±Ñ[UAVV&õ9y2jw^^¶¡¦ëœœ¦?~|Ü7Ü ´ƒ­æÈ5 ‚?>T*•šÞ¿¿ ʦ €r(°ó  0lØ0A¾™cÇŽ {™u€È{î¢eµ[íòU4zbþÉ®ÙD‹-jÁWo¼5ŽÅĬó/++ýPÓñÊÊÊ¿ÿž)|çîÔ±‹ðððå7oÞœH ‘¼~ýzS§N9Í™3'‰{ÞŽ;lè·Û·o¯êÛ·ïeb##Z´h‘ššÚ'bÙ²e~AAA† òïmÛ¶-ïܹsY Y~JyÊ#°zF´gÏ«¬¬,ѬY³¼.^¼xÄò6iÒ$ï°°°wrrr¤tßbÌÆ>|¸b‘ñ2™LÞ®];1-_ÿlذ¡Ý»žžž·,--åéS§z`ßåË—+6®£{n¦¼§ɺté"ŸθqãúìÝ»·•»»{»vîܹïèèèHg̘ñ>±¾ln!wb€ïoܸÑÝyÞ²e‹uRR’áüùó{Þ»wOÚ«W/…24Æs°oß¾}VÞÞÞy&&&ϰqA‹/î¾}ûö¶ï¾ûîŸþù-hÊ]ApÓ@ž>úè£þ° üÞUW¹Èå×ûðáÃÍüüüòX]²|ÑïcG ûØ7aŸøøxjhˆÛ´iS‚2ðŒ†7Þx{ΤR‰Oí用=çÛo¿íjllœÆ‘[¶lyõÑ£GÏÉÙ“¼YVVf(õ>ø ˆk”ž>}úÂÊXà 3Ú°Y_Xë~áÂ…ÿ"F‚î´ï°ƒÿ(Ç Á¨pŠu˜ÅÒAd<Òâ¤;9//¯5Û»OŸ>K°’6`\B¡°‚¥}çÎñ³gÏD8—>F¨ Èóóó[¿÷Þ{»0°ŽÉˆøÇ‚nXÝSµ!!!ƒ°úfnnn§Þ½{/geCy0½˜®1Çl1°S& ‘3îÄö—””¼5fuù‚L X ±"'|ÏÎÎ^ïììœ\aÊØ6lmmÓOŸ>íM@˜}7ªŸ*)ccãëû÷ïïY—:!àù ]~çÎÛ¦ÇÆœðQ¦w™XŠcqÂ…’‚jZÄ´.B€Œ *Äå o¼ñ¦Ñ:uò^sáÂ!/b5–J:vì¥V­^OOÏeÝ»wE‹WGG§äøñã{qŒ« @Ç9rd!@KrÄŽ&&&éf¬2@] KÛFiî@ëÞÔÔônffæ&ÚN'–²]HÕÀ€œÿ'ôQŒo£Z©ìJh×®Ýw”;x'O$2ö÷ë×oÝÖ­[#¥¡@Àó+bfÔÉïÈ`¼d‚7=ÚÕÂÂb1ƒRVKŒàDïc?€ÑþÄñÓ¦M“Ðùk[¶li Â}þĉ×…††FÐùp~pp°Æz‹ŒŒŒ!ÆèILf/1©›TþP€ÆX•²k-J”F¥çIõàF¿ïr‘ž={Ö–›@ŠØU§þýûï§sã©~r° ÝkÅäù8Þxk\KH8ètãFÒ–ÊJ¹µJ—Yž££[€——_Á†h¥çææêÖ‡‚m''')ëNjˆ2@] écÚ2@ ]I`8 &šî©š?°+ww÷b@"r¾"\Ëös#íq/ÕÈÿšŒ) oˆì÷ðð¬]»Ö ši{÷îýšc]`\u¦:€cL€›ïºÔ‰&•€º¤ÇUÀ65 N¾KWó@Ão±!Væ\ÜQ?é£2…2€¡™~b·>÷X[ÛóÊdè¶# ìw÷îÝ•¯r>VAAA߀Ŗ••µvvvÞÇ–hà†7ÞxSkwÓîšÆÅÄ-’IeÕ• õOxùzÛ¸Ù4X€{.—Öt}”ÀJ–/_îR“¤ ‚H) /S=à¯0Ô1Ÿ|”ÿË7~2o¼5¢)”¢c·ª‚ ¬LZæs2êäî¼ì¼)p[ì‘‘‘{ÑõS_et}8}\S™0S ‰Õ§>/6^òWÊÀGùÿ9ÆOà·F´Ã›./—»k:^QQát&êÌô±óÇ>7! ’=îÎ;}Ðgß²eK›Y³fM&v²^õ\°—Ÿþ9ÈÄÄD1ƒ `ƒ Ü›šš~‚}Ë–-ûbÇŽ‹jŠ¡éÑ£G‰Ï.ö @y°ÃTkn< 3¶¶ËÒ¥KsdÑÑÑ]àø¯ýëXÊ@¬ÁÓ›333ÅT«¤¤$ÿ¡C‡.ÓjÓ¦,88¸4±HfÍ©«‡ 6xhÛŠ«cšl`gXù²C‡·ØµÈ?v옢ÎÙrØÆì¯ÄÄD7lÏœ93[wßÿý»”ÖM–†RµÀAœˆ{QWW× éÅÝÂÂÂRqn¾À&±”KKOOOF ‡¼!C†äÕe¼‡g4¼ñÆ[L*‘Ö® P"m2láÂ… Ú·o¿‹ÅcÔWÅ"üု_¿î9sæÌÈÛ«v=­^½z+ÝSl¹k×./D½#Ÿ±(Õ¨÷¢¢" ÄÌX0Á©(ÊÂÃÿgK¨”mœôï¿ÿÞ–ØØ*–.Ý/’T'V[·n@ ‘Q]¦§§ÁÌ;ìCÞCCCÃÊËËõð!6Såh}Ê—â° åíÔÔÔX­S5Oè¢Ä:<â%W¯^íìêêºå‹îÿíW_}õåƒÄH«K—.?!ÿt_ý®bÏhxã·›¼B^»2€¼²AÊp„Hy.\8B¶»Ò±6Xã8ô‰DËý×_Í@~Ø1,ã»`ƌӈ½(4»°@š2_ÌÆçF½ÛÈ!pÈâL(ýS¬[öÉÔ‰o"]°‚Å‹ËèžU+}"^Óª±(ÿ¸¸8ļd°(ÿ7n¤µÅñ‹/NtvvÞ7Ùõ˜V, ÁBf ¾ Æa¿¿¿¿/¦h¬ÊÊÊ®ØN¤Ý{¸y"–3õ­·ÞŠc¤¯˜‚Ë€öÛo¿ÍGcʶ¹¹yGÙ`|Sxîy á·F4-¡Vá³Êg5+ˆ„ R '$‰ŠÈ٠šõ_ýõûFFF£ª €HrSíííOËd²jLƒœ¯BáyòäÉy¬)00ð ¼{ˆÕážËzW’ZímmmSÔ©°t)"*ÓCî1*óS˜)¢üÑmödff–‰(v±4TŽ,Õôó¢:ÁB*•Š+++X”¿££c”êuˆµ!pËá”±€EùXCE+’6µçžï:ã·F4]ÝÚ•ôu¤ @N±=9¾^ˆµ Ç™¶pá±l¨2bNN€Q ¨’{ÌËËk3C!X‰û Ÿ´¢âU£ñÕ8i`}F髪`b‹òGº˜’V=YøÓ§Oç-[¶ì˵k×zB˜œßzHØ?~-±ÓÙ³gWsêäÿý÷OAºÞÍÍ- _¿~QóçÏ¿›˜˜X3-''§ÓôéÓ·0i{U;sæŒiBB‚/ÕÎÝ»w›]»vmúºuë: O ÁÆÕÕ5‘œy›ëGŽùaÆ #vìØÑþ“O>9yøðái!!!.ùùùŽÄ¾œ{¬í­_e++«%0æä/ÔUÝù¯2t­!Þçáǯr>’Ðjƒ&±<b>±èÖ{ÓŸwhxã­±--ÍT³H UYÎÙÐð„À×7XàæÖ e´àÑ…„Ya;vLgûõQ€aÁ¯›7o‹Å—! ù&þ$¨›eË–M%µŒ@_¾ñ“xã­1íñc‘ :zës “J}QQ»ÙÙ Rزe‹[AA5f¥íÚµk=bFê« ð_\LûŒîó÷_~ùe]cTº³˜”~c¦QK$þýsŒŸÞÌoÛtþ\P^®Q@PQáD`3]0~½•”‘늙kvvvæùùùvH¯2\.7ÅcB·Á:*®®®7 ÈÒ#ÈÌÌT€^YY™¨ÿþ\œ‡ü/Y²¤7‚•ñ&Š®¤/¾øBø9iÒ¤óP"Àtd|§|G«j¬áüU«V¹šÿùazlcÆŒ¹&תU«ì:äkïÞ½î`wTÖ#\õgDÿSÙD£GNVeƒÜ40–2bÄo,Íâ_TM¹VLccc)fâ>Ü|aÊÌÒ‚Z”ÜÜÜŠÞôñžÑðÆ[c›DR«2€ ¤¤ÁÊ`+>>>=Š‹‹,ŽÔW€@Í x±È}OOÏA!!!K0-š'¦;ÏÄyÛ·oïIÎ;”œú˜?þøÃHݺ÷~~~[E"‘<55u„···®>|ø7Ø'‹‹ˆ9‰é\V”Ä'''ÇR5?¥ŠŠ ,! &€PDëcR¾}ûBéØH( ìß¿%ÊŽc”×AÍš5“@S¯±ã9³gÏÞ/•Jq½¬¬,ÅôjªóñãLJ˜‘@À€µpd2™üÛÜêØ€öˆèÚÖPÀu,_S¦L Â* Ø×¶mÛÝH‹ÀVõÔßuÆo¼½\«¨¨½KH.o2,""ÂçâÅ‹bš/„!S¸té’ ”°„±Ràs¶z¥:ƒž+E\ ZÞ”æl›p°&:¶’ÀàcÖ}‡ÅÍ0žhaZ ÛIDATÆÁ˜SÀ¹äTÇ™˜˜d º¾E‹W)½ÑÊkò‰Ø‘ƒOƒ®òI sŸsçÎPÍäñ¿ûî»óä¼O+¨Ömÿb|ü~ 6Ñû0‰aîܹimÚ´¹@ ¢v%€MupçB€é™!@³Ö08²`¦Ú„ z">ÇÚÚ:—êê7*ßs‘ü(•+li¢¾pŽQué·XŽúÃ>Ô ¶Q¯TÆóMå±×ftqΜ9UP¬¡M¨A´4©6 ò5¶Âµ¤ýøã©Øz9lذO±Æ6¢ˆÅZlh•Ѓ0°}ûö±Œj㥠zýwzéZúúúþÀ XRëN1]”hkÄë4åÔŸZ\“釾ÉîÁÀÄÄDD8WP«g"©Õ]yšò¾ÔuëÖ}µ$@‹ÝÀì³ððð•ôp†Ñƒ£dSRR@£ïܹ3Ž»êÔ©TÿÁŠ}þê–—å­‰›Aí­X}ý)TkIjkË***LY©!Ê0rÚÕÖ¹Gkq%µ]G ðÀ 3|˜¶™¹¹y¾“˜ý1v>‚'Ù6ʆ{¡+Šü”|Æ[¸é#¸“13bí ”¯CE€ò§§ªN@ì#…üN÷º”·gÏžP0$_³ é0-5ä>ÛÍš5»M¬±Óÿz>KÞyë­·žk¤@§Øxàw‚?¤m÷&Åh”Læ©R /~°Ë„øqhùß½{×$66v P¨pŠ> ˜Hý€Ÿ’³>Ï]ôý¯+<Ì”N"è$9ïÙ[°±±ù‚»¢О!>1žÛèKeô–œöQÜãÝwß=HLc ½`Wˆf%'þ5ö^†’+]¯¸«‰Å0ûÇ?þÑßÌÌLÁÖð°Ò Ï î׫W¯íè‡&Ú\QÓ2ÏáøL¥U%§‡Ñ‰ 4Poˆñž•·jæí½FpèyF±Æ#ôê¥v 1„§§ç²îÝ»‡‚-ƒ(9~üø^‹ŽŽ^@N;™Þá—‰EEENhÉÓ»ì3räÈù8ÊÅC† ÙŒç—Ò9@€ˆÆ½Ï_×5ûä\EFF®Â:÷R©ÔÞ£ MÁ‹\£kbè\OjÜEÓç´ÇÐEEŒë{ÈÙ€ÚQ¾P²°Ëqqq߯Ѓ¯@Ùè?€÷uÅŠš7o†î)zߤ˜QGŒ,ãHPL˜¡‹ Ék×®=z´+ëI¾z-"""¾C,‹X,Åù”ÿ£HC]¾Á:ô£ÏO(©tmòAó0¶Bþ“úï‹déA1Îû݇ªÀÞ—#GŽÄ,]ºô{úmÒá# îФ€F¥õ!§J¸CLÂý›»ví Æ~SSÓï‰Zî›1c†9ºŽ°æBNNÎôr™Ë¹sçÉáÅw{{ûckÖ¬‰'ǽ•ZdŽš–M3ÉÈÈøé§Ÿ.SÒÛÖ0ŠV ÝÃ-úa$Œ"£«Z q?j™¡Ï33d¾ù曹š€ÝkôBÞf/.—NCËéêÕ«w‰uu§VÛººׂƒƒ7S}í¥ÞÛYuQÄå­‰™§çAaáARÒ\n­Òe–'ps  ft~ Œü½+ɪóÔ¸™Àí6ckÕSc§ª+úË/¿ÜÉ®Q>Ûuz¾¹ëÓ£A9kÖ¬áx1Á€u¯+J ;O5}¼k>œÅÉ—¢ŒôÎO@´>½“2–7Œ_¬®l¿üòËXvoIëÖ­Ÿ¢GÀ³sçÎ l³È}äÀgS çoÁÔ ?~<&¸Jé êî©TŽbi«–—¥‡²™˜˜ÈY÷îôéíKL§ßcÍÉ­ÁOmÛ¶½Ód¡;¢˜%TÁVÔŠ§¯¯ÿ;Ö©S§à”ýüüLé‡>Êu¨ô€9¤³}h@~»¦î,€ÌäÉ“—øûû“°3c¨U¦«ì'EWAF®¢+ZcÔª{Âü…ú+¯èáYÖ±cÇ‘\J;~üxÌzA‹GC¹«Béü£xÈ tåËBu°œÓ‡[TÓúâ‹- $8Î1ÅÚ´=™•‡7Þ8”8Cоý`ÁáÃýéán¯Ø×¼ùo‚ÁƒSËLZûåµ/’¥®¡õ²¦Ñ‰Ó'¯>תæ~‚-+À5M’0Ü{3£wßü@>·w„ÎaçAX”{Lõ{mu^[½×¥~Ûµk14lÉ·$Øý_“DƒRõ»‰©}D{g ’Áh”õü|°PÝnñâÅÕ$Ú·oŸOt¾ª¥¥UGGG?úU@F?ÒJ®S¦!™ pÄf<ЯŠ’h~Z"xH¨…äÑ¿ÿjÝ VVV¹oc[¹ÖÄ>îqb+É&ˆ#ˆD× è+ë·¥VLU_5dÆñ—­›Q+..ö`ݸIèËæ†7µ@ñ÷¯Æx«ŸÁÐgìëWò1“›âo¤Po†BëÉ“'ýÉ÷$Ç8òÖ­[.Ä.þ=tèÐ"¢ƒN{öì™°~ýú.D¡[¤¥¥eÑz7,,ÌÄã§Ÿ~ªæÈ¡K­ùæK–,¾zõê> ´Tû/^¼h|þüyo¦bÊŒ˜L§+W®Ì PpƒÒìöíÛ-ˆš§`¥oÛ¶mÜæÍ› P0¸‘@O–’’’AéÏݰaCGb’’’¢”]t³i_×›7o~8zôè ÄJ©+ððáÃó7nÜøÎÚµk»kñ9rdèºßUº~ÑxÛ¬¬¬n_}õÕº.]º¨m]¢{€ö«ÒÒÒwBCCí)@}uË–-6TÃgØV“&MŠÒ¤ŠËo¼ñÖT¬NZgÔb}¢®®® *Š.%¢]ÜIªÎ¸¤¤DÔPº®\ó¡šB,fŽ!/Ü´¹ ­uA*+ —]©ª»¾¨)Çš _„–óÆo¼½Éöÿ¢ž%o-„JIEND®B`‚PKÚ Ô2Æéz­‘­‘-Pictures/100002010000019A00000082C94EE80E.png‰PNG  IHDRš‚ô! cHRMz&€„ú€èu0ê`:˜pœºQ<gAMA±Ž|ûQ“sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+ IDATxÚì]|ÕÖ?3Û7›^!=H @h -¡ "ð, V,O>l(ˆöü~›ìN¹sçîÎùßÿi—E±ØÅ.v±‹]ìrƒDi‚›+Šø‹ñž6«MÁ‹¼² ´ÀCàE‹(ðºüÖÇÇ#_¡`8ùsttÇ<ƒÁÀÛGÙ.v±‹hþG$9.Î5ïâE£Ñèa5›=­UU6›Í[ày½Àqžxˆ†ç8¬UA•PÝDhPAS© ´:-hôš:ûAiÓªåÏÇŽ%€ƒƒÓåý¿ýwé8†1³,SJïñ!Ë*¬H…¸Ý¢R)‹X–µjµª<üÏ;8¨sýüJ­>>ÙÁÁ= í@e»ØÅ47QÎìÝë“–PYVˆ@ÒÖfµ¶# ÁÁ〤>H”šL ÓjA¯ùs—c¹¢´ÊPd*•ààäpÅ5XùhõZÈÏ̇6m`äC#!#)Žï<‚ TÃcggw8>Ìæ èÞ=öŠ6DQÔó¼¨ÿý÷ªÂ×j­†®]@HHg°XÌpøðvP©4ЧÏH0‰O‹Žÿ†í…ÀÄæ)Êl–Uæ©TêlµZŸ£Ó²¼½ý2ÂÂúeÙÈ.v±‹hZ){|«ñ@{ÀÕûóϵlJJ×Ö´µò‡@ “™ŸྡC!%+ âwžïQ¨±VöÝÏÁÙÝÎÇŸs…ºÇv¿¢ S'Hÿ­+|øÜ‡Ð$J€ã‚1×RxæÌAÿnÝÀ… g`äȇšìOƒ$P*.΃/¾x ^|qìßÿ„†FByyœ8ñsNppxä† ;aòä2Xú‚Õ{ @™´=;; âãwÕ‘**U­Öäh4º<''×ìöžRý#üöGÊ.v±Ëm 4 Š]!]PuúZX"pjˆ»¯0g]œ2‚?ùä8“šÚ«5×™:áH˜-xþƒ$ 9pú4ŒˆŽfRSΙƒgB» èÎ\¤)¹øÇEï.½×è42W J¥ ˆ© >‘”~“mÈ \~o±TIæ6Q´™ËË“·m;¨‰ƒA×¢{¼D›ÍÒÏl¾dÎ+9£HN®øoVÁ)”Š$­A{LgÐ]p÷tψˆ‰HuõvµØ5»ØÅ4ÿ“ ‚ÓëÎ(á6|‰úæÎ-8yÊÓÒ tÜ8H~øá^§'NÌôªªòíÞý2€œLJ‚~]º4 ÙÙti€•Jé]Ìi#Ølb „x²{’݇²s§/œ?)½ïØñ$ šmWIvù_żyóÜÿÞ+ø®w[u0aÀÓ»^ËxAfN£»¢6k‹G©škÆZQß V“Iš}sç‚׸qÎ¥éé>ŽþÞÞÌW¿üý»v•Ìc ™É6îÚ{Nœ€±±±àíæA>>p29*+Í cuU¾W°Syq9è z‰©Ô'7'ë£;Æ7@§¨N€ì‚ l%ªÜêJ›{jjtéÒ~ýõ[Ž>Þ“Z­ƒ6m‚@£Ñ¾}[ñœ¾àêê11q={z„8pA¨ÒÓs!99 ÂÂ[>C©ô¦¾lÙ²Åéý÷ß;vlQcýpww_ìèè×»wï¿õ÷Ö«W¯ Ÿ|òIøSO=uÎ7NØ¿],ƒ 0Â8¿Á®±Á»!g!¢¥Ì¥!ùåÉ'!òŸÿ¼ü¹2/ÜÂÂÀ}Ê”€ E»ââ¸.íÚ»³s£m´÷óƒ"H½öØcðíöí`¬¬'Ù§"à8 j·¤I¼Ol[³­Éþ¸¸zºBq^±ô™þ§&'9wéÒOb1žžmAš&d2#`éÑc°ô¾  ÿ YC®ÿæÍ{`øð(P©”ð F†”Õr) <Êç;uÑ¥µã¤´T™•Q‘3ìãpñârøñÇ0wî°pá«°bÅh8tÈãö‰«¨PÀúõ«Àl}Å>³y¬[÷-¤¥5úþðÃ_4›ÍNÙÙÙa}úôù277W2ý~õÕW®žžžï!¨|ûÙgŸ…Ѷ+Vx †ÇøŒ5jm{òÉ'Ã92A¤QÚÖ­[}ÿûßÿŽoú6*"‹ŠŠ4W3Ô/êÇ­ðu”””øÒË·»é, ãWˆ†"füÏAèJ¹4÷ Ñw9@Ùw“aÿÙè -ÎM9·n°J%´3òâ.…·CvsäÝw«®†¶ÑÑ^Yqq%´m«yÞ¹¹ö :xººB^q±48ñIIä«Ñe)Í÷lëé-ðBƒçîADf‘s1ª«ªÁ'ÐGŠfÛ÷ã>=âÉ<ƪõ&G>Ei4McjFFøùµ—LgååÅàààŒÄ¡ Ó¦==cb"qVê Fc% ,k³ãÄðª26×?Ÿ³Bò”V}ž >s([Xìd3wið»±Ù±“ô¢ŽlÛ–€ˆº||ŽÀ„ qð¿bj[±â¼×ÈF÷s\(‚ÍT˜5kQC»‹‹‹_ßk4š»W­Zåó¯ý+û¡‡*Å×L''§¯äýÛ·o ãB’îoÓ¦M¿´iÓ†§mô9//OúÁþüóÏcËÊÊ >ùñÇîÞ½[ÿÞ{ïEæççû ¡û© bj{÷îdY–C ÝÞ¥K ¶¥9tèPx÷îÝ“p[²ÌävíÚcdÁöwÈí<üðÃt/¸½òÀÛk3Eê7ÞüŸ"™Ù½õÖ[ƒÚ·oŸÑÐ}Ë×ÁqîÙ©S§¤/¿ü2AÒ””)ï ººZA}¢‰ÀÒ¥Kcp2Päììlž={ö9º;£ùKM à„¬e,¼ËáØ©ð1áÁ†@†¤¨ª‹A_ .bf0ó?"*,)'‹óß}×ॊáè¢EýÊ+`ÊÊ’LhUEEÐñž{ fþ|èÿúë±g˜µZ·ÏóòT;ãã5lݿΥ¥ÁïññPQU~ÞÞÒöÍxþÝ11àŒ Ã«]òÒóVÑðÐûwð—òhŒ`òÌÉ Ö¨¥Ï1wÇ€^嬦`€±cŸΣG?ÒŒ…æNž—À¾}?˜1S ,Ls877³§§§ „„´•ú÷ïŠÔ>¸ï¾¡MÏHlŽç!3x+tlÍWiP%ã5…ÇÇóémd"[<°Ù"pº9 ΞýJxgÁ}û¾º –Mƒ4ýßú‰3G4{ŒÉÔì1¤q¢‰-m옞={fgeeu½ûôz}úˆ#^ž4iÒ¤ü›j›Ñúõë_¥÷O?ýtÏäää@RÌ7n\^Ÿ‰Œ=ºß×_ýjdd¤¹†Yvss+MLL…Œë9ÚöÅ_Lx÷Ýw£â¾™Æb±¸ò<¯GVæGû_~ùåaÇ)*++çÏŸ¿¡¡>!Äøúúf%%%ºóÎ;_¤mŸþyìûï¿ÿíCÀñEÐý””<½Àb\ÇŽ{²[·n“èøˆˆˆ¿ÿþû7è}yy¹§Ü6Ü€eË–Mñê##CqüøñMô™1'd É/½ôÒ« Z°¿ÔîùóçÕn•÷Iù^ð}·o¾ù¦'1d%_‹øã?N™L&š¾MÁñzȾÚmãØdã}Í&pyûí·¥pP­ÉØçd//¯B‡dƒƒpsóâããg`{ó‘¡Äýq¶û±kjØfvaaáLI/¸»„¬èsùº¸oªÝtv3%Á䈘ŒàÒ³5à"Ëì=³!Ò+’ÀEú|$÷¼ÞÿuH+OƒÝ§w»F<[îz„—:yGœG>Þ»þŒºË£J/ÉÔ´{7$¬Y# ÉáwÞ‘Lhîaa`C¦sIëª鯼âôþû©Bee¥ÑP4š{ÝX œhGge¶žkõp‰ÂÕùŸ 0·i“£Å–›/)ZmŠïÌ1>ªÕzX –£ÔgwÇŠZ£Þ†Èû׿„,1ó5|mу~‡øl}Øk€¿ye A|šùŠšb2 .\9~üø×3çÔ–ï¾û.gÖ>8ëX¼xñ‚Ù³gO¥Y¶lêiJhÖŽŠü®àààÈBœê)ÚÉÄ”Èd&÷mÉ’%¯â ?¯\ûX<®¸¡öÉœG Åjµ:kìžÉ7åìì|Ñl6{×*Åe›¯J¥2"[r ·{÷î§Ú¶m»Y’¯Z­N¼D’m>ýû÷O½b"‡íÖßVú4Ø¿hºÞÿ©úÇ`Ÿ43$=‚@«T*MÆŽ5`Rø'9·93º}4‘él}lNy>‚ÿÂEXŽ Óïj@fwÆn8žwžíñìåmÝ:Â/©¿ÀÏ~ƒÚÛ/n‡WBŸu¾ú¼ð¤µ)†¸ÆÚÓº¸€[ÇŽ—Mjdr 9Rb6C‡ÂÎ矇~sæ§Ó9^˜=;Pðö¾ªH‰ Õ0ª?Z{ž W!èë[rJm­'^ŸÎdVpÕÖÒs:«Ì§cÓò#¬½÷l-{ùfŠæè¿æ3Ö-#­Ý/LóCióè¬DÃs‹>+[¾`Ìýî;¿¥Ÿ8î`³ÇhµCLæŽ;îx³% #=#»wë÷ïß?qß¾}+ñ÷£6l˜¯©¼¼¼E“dŸ}öÙ…È\6¢²¬ÃŸxâ‰ùUUU~AAAR Îæ£Qi'%&&~†`Óäï[Ei’K&¤üüüÄ(V¯^ýsm"À ÿÔ.•KJMM]Z¿]Tâº?­’ÆÈîÝ»Ÿ;tè™±¶Óqrrº ,ƒáˆì?jN|ð~-tMzÉ~òÉ>'ϓ䟑™qpÅ$ÁÃÃ#>;;»/ÝË<Éqœãí471¼¹gÓ_ ýÜ2 ëï =ã- â Ìµª5.Ð ~^e<ôÓCðÍ]ß˰°'sŒ ü@JY „¸„À¾¬}î.Z¡†p&À­ÏAhë—I©í¡À¢‚:ÊÅoÀ€K304èOeݯŸ:Änjf¦lYß¾žN.œ`ËÊÚ´v44‚"Ϥ¼[üE ê±ÌI×Úë8;[N;:voͤBYá}\Èu±E¿ Š$Çæ–såQlñCDìåp¬úÌW³e{pí Üy_‘iÁ„C`yÕ‰¨åïÊ7g¸¸nÁ\‰S°Å]sr`âÞ½Ðç e0À­5“T«OAròÔ´ºF† ›õw-Z´Èç§Ÿ~zíÂ… ýÞ~ûí‡ßzë­GPÙmïׯ_)º¡C‡®Ä|XZZZäš5kœî½÷ޓÇÿ×ôéÓ?3fLùÆÞ{ï½L&SÐüùó×6Þ¼nÝ:_l#™Ïæ•+WìÚµë©>ø 7*HCaa¡×K/½´‹®€·qÖ¬Y›W­ZõüW_}å}mæ²eË:VTTxãuÂsrrâRRR$S׌3$3‘eïÞ½3–.]þÎ;ïü„s'ökÈ7ß|ÓY‚+Þc ‚b9^ûGŸx¦ƒ>ív@€ôÃ{ìžž~*//Ï333s8ö-Çã~2Ïa»ßmÚ´I{úôéÿÃöÃðØ@dA®‡üýýnÛ¶íMÜÞ ¿ÐñcÇŽu–û¶gÏ'ìÿ„¹sç®éÚµë9DZã¥E}þùç~Ó¦M;…ìíå³gÏúÑñ8FüöÛos?ú裮ØçÇbccßž9sf …Kc?}ñýNjû¾ûî‹[¾|ùøM-))겸ïè{»]€†¹ñËóvãƒeãø&´ŽŽõ?'ºÛ Ë»L“ kYü2Xyr%xè< ÂZY¦,˜ÑkÌê3ë²I­¿_øìÔg°yÂf车7{¤.3Oì ‰›ÆhÔ_Û,Øwýú?4'Ntníy™í”É6‘ m‘òG†Á¥û¶¦}•J,ȨEÞ¯E?P˜ùç¹J¦{KŽo6’¬ ö²e¼2?Í×ÚQ`ZLøûP§tº»†Tr9^Ç6˘XJœ`íÀðMß¾PtË1 l@%®GÀàë÷¹¡v{ì±ÑšŒ@³FnK>ž€Ù–Á°”Ú–û!_+22ÒÔTˆwív(²®ÛPEí¾7æ/£ïA>—üF>úè.d?Ýá6’4 NÛA€¹§ >­4Ô[€”ÊÑ>EÔl¬Os&´5 k¤`’Ÿ.ü)¥)Ã!ÀY;v-Ä|û&ïkðüsÝàôwÿ±R Ý®ön½vì8á¸cGW± ·ÂKW`°ölÑDØêœhÍrkMŸ‚ƒs¦*¢E6T^“ÇäúUòV±]sÇR$Ùpeqª§ÅÔ½¥CìeÿuÂþ~‚S…¶eà*ËÑgÅ£Q _èê/ðL‹Ù·Vk5‡…%_ìÒåÊààƒ^Ï'D pGú-ñ䥥éÓâ7MÊt,—(´¿ÉyP k!(è/K€$¥:gΜ7È„Jy]íðß[Qú÷ï?Ƨ¥ •P42šÙÈ LÈf:wîü @Øæš̺'ŒÈb§ëÒd®"ìd„ÄP'0«Ãš2©ÍÝ7þsÇ@É*¥ˆ4pѺÀü˜ùM]…?Ó n¾\Í*ˆ¸šnº:tÆeË–Ž8¦ê–>ðé!l / ÍÎÎUf÷Ó¶<ç®->¯ªƒCn¿1Ÿ*÷x¾À%Dà›NÀ¬I&Š-²ñ·–½°en…Ê“½2„£½5\‰#R‹|w,+ð!!i;Ÿ+ ?§vq)ˆhqViØ0n1ü…Ñj 8 ۛ摩öv=è·O€ ¯5IG3äéÓ§G’£¿þìú¥—^Š*--u½ÿþûÒ Ÿ”\BB‚÷[o½uJfTàá‡NnÉŒþï*¡¡¡O…„„œ«af—¿F®sÔÙ |p²^n5ƒiNÚd†Á}5yhÅžy• ÇzÀ¨'SœfPÀ  —4ÛV`É%Èl·±¥WQt91øâwßq»B«B*_Ób)îÛ·‹ÍÉ)Óãë¯=µÁ×îfõ…]u³@à [Kû¡ÓñÙC~—fÛD SûæÊ4Ýš ]nm$Ù•ìåŠÈ±º ß©jïÐ á\G›QßÁ ÐìxÈŒ¥S§s•íÛ'9êõ¦@Pbc3²œ€,8Ý2¼—B5€©ðÜdNT(ÖÃúU6¸2igÄ:Xò.ÙÏÕÞ…QÐ fÃ=pÓê\­€ÏØšxN8àBl¦Î‚†+ÔD?íÐh4»jo_½zõ‹111«(§CÞFQ[­­ @Qj6lð•3ì)JjÑ¢Egä ÿ””×nݺ["¿ ¶ ‡IÓ±J¥’›2eJ*ù+èx‹Å¢|ûí·ÓéÚ}ôQȪU«ÎÕ7+ÕÏà'Ðlß¾½ñðáÃ>”,ºpáÂßeÿU!8~üxx@@@vm°¤{¥Pww÷ÂÚ,†ÚÚ¿„\M€¶Q¿(’­±J$È'Nœ=¹xñâTù< õ ûWJyJrÅŠv«¬¬Ô´4Ð4­›Ÿá,xÙ4€²´2GãºôÞâvEáë’_'¹óiØ[Ym›óë4kŠþœ=ÃáÈÎAЖcÀ¿E£œñ …þ|/ÚlMF–±<èmêãå*K¯æhBKÄß¿|ÏWjRÉ[“Å\oG› 4ª¨Û©-'bÄB­ÚÚ4`´˜½,¯NŠHfâzm‰íxëÈÙèx¢¾²tê”r±[·ÓÆÀÀTƒƒƒÑŸaÊ;Ý]K -$.„š!=@ %Îî`UÐä A°µjÁœØR“:‚9Ûæ"ƒÚ=à3Üxvc„æ+˜@ª °¨5íšL¦ž¨dÿããã3O«Õ–~ñÅ«¨2²—Q¨„³ZZ€"Ñ´–Ì;÷n $X·nÝ—˜ ༴··G ™ÿÊ+¯ŒG ˜úî»ïö§c)ƒž®sáÂ…CäßùðÃ_áy^@óôã?>¢¨¨ˆ@þ2ÐÈü¾¾¾éÓÀüðŠÄÎúâZÀ…ý³Ø„ßC˜fÜÑ‘;¡RõmêUy›x[±FhÐ÷á©°åŒd *uVK“Q1:*“wW”7É^j"Ř½±¶Œ¶VŽ k °§8êõF³°P 9~¹*¥(B®·˜t>ëÖ0Ë‚Ìäp(Ì.ÏtåpG†Jà_Û×ó=€¾CfÇâ)7ògŠŒ¥ÙÊ<ð­mºëÁƒcóòòæQEâüãoQ]´ÖV R«ÕyTß •h¤³³ó>T´C¿úê«lü}*~øáß_}õÕÇÈO„Šu˹'žx":===„òE¼½½S“’’†!c8D‰ŠÈhéX¤Èê\“jŠ5”ÁOB C sɬûúSܤºaÇŽK§*Īð>G"h ¬ïsBàÃ~-"¶ƒ÷,•‡Áó¦oƾ–bßS‘Mѵɵå”ï¿ÿþNjïž{á.©ŠÞß>ª~@ïÞC÷Z K;Ьl¼R®+Ð/&ó-T·nÝ©ú~cýS ¾«»ì×i5àpà4| EÐ1nºŽžìáMš»8''JìT/^ü””4ÊX ïæÌi÷—)ª4vŒÀ±Mú|(ûßÛ;Û]¾7^Qø‡­‚íÑÐ~7Ÿ=TQœçj­h´Y•cÚ?H•x¤·àr‰½p ƒËÑgT=× IDATád¤`Ëòî`˜FÁÅÓ³8¯{÷3Ù½{Õ8:–„6,ôÝ¥„åAjˆ2ýôp)@ ]C,%-2ÓƒÁ˜‰Ó€"w TÚð—&N TeÚœœ|]NŽælzú|Ï9zÊ”æ@f-šña*@Ñjß˲fé=;QéM£÷WSÀßß7 *þÀçŸ~2–,XP†Jö™ÌÞ|óÍŒG}´‚W*óÄ'N E@ñDZjF{ÏéÛ®]»mrƒèØêêjß?þ8®¾yjÆ /ÖÏà—¾•ÊRë½”`JQfgΜ™ˆ@ñ«\¥€Âš‘q•6ØàééyEÆ?Çq®8íÍf³+‚h22¸3µ÷ã}ÓOœÜ^×®]ót./ú„çÕjËûÆÙaä†Í{OáÓÿ\s¦²¢¢*ر# &Nü3E%/¯~ø!Iú?rdôésÉõ±¤¤”¸qÀÅå’ž\·îœtŒüùšý:# iKéŸtd¿Në¬uà„øu—˜¶NhpD¥Rsñ…‚>þø“•Õ(Kp,°…”µÅÉlcebxF×”/%  ø¨ ðƒöÚh²Ù¬ÇóWD­éX±x°ª4ÙÏRÖ¯îÛör…¯¦~¤˜ {SÀÒ©ÓYðòÊõeY)\ŸÚ %…µŸîf„´=˜*S<ÖÓÐX¤X³ÀBlåL÷l8Û g!ž^`UxÕg5Åž—yÈR¬9mA•ïÈRèZW\OaµšuyyùšÜÜrmf¦UUTIJÅÅŽPYI‹÷Ôé{iÌRR2mÊ]ï{fÆÛ×l†Á°E[aë`d5®0ã@ب†ÌbIIIãm6›- зoßOÈù=yòäw©Š2*îÈdÏC‡ý€LV'N|uÆŒ‹HÉ#Øß½{÷7P‰{<þøãæžó{ÅŠbôÙÃÃã(U8–Ë÷2d/²“øyÍühˆý*Ÿ egNNÎКãÄÅÅ-jü£ú֚ƃƒ?†‹ŸnpßìÙ{@£QÀ A¨<úhÙ»·¢mÛL¿ËÀBL1½]d%¶’ëå[›-]¡$Ç Îuc®â—'xYàU<4ÅÅyºìì"]FF•ª ”EE:7°Z½›^ËJ¦ª1 iÒO"¨K›¦X-:%M2n^D„ÿuMn¤uu6¥ÅO*Ït”ürÎþ¦ý‚z¬m,ævdG/#МºÕ+ “{áÂ…a’Jã8§»ï¾ûƒ–˜ïì@Ó0ö?PøòÕ4ÞÐÈŒ¿  €—^º”ûGþ™¬,Î"2$“Ÿ_)™Ø.xkŒ’Ù¡ŽöÏ„=xÈwéÖÐAEš³ínHOñ“ÎJÑåôé÷µkCê+¼*Wå¹®\À¯ËæÓÛ\á?iÓ¦r·N—?¨Ž©L4œá3|œ^¸\­Ù—µfW–©m–ÎͲ—Ú‘b™mýjƒK#‘a ”ÏwÎ…,[}¶B¦¯ó!7Ëli 79€‡ýÓ|FìD[TT`HM-ÒdeÙTyy*EQ‘‡`µz55εĦF0Ñj#:ó"ïÑh^’ÈX‚¶€å4åŒMm‘ò“lj–·1Z@#p¬[ý*Ùƒnãk¯=ôÚõú9%$€Ó¦M0Ïl†º•ô°}Âx-"Z]€fà .ìIá½µW©¼šÊ´ÈWjjj¸]u½…L~F£ñ¡›õø’¹‘þËëߨåæK3>šõ2/^Ï Nš´¼Œ÷çÄ™ØKbb ¸¸háÈ‘ÉOóöÛ‡¤ üþúQÒWzÁ _½.ûuÎvK€ý1–ú3õÚÒ6Ú>± Úú@ö†I“é uœèe]»Fp..½W®tyþ2[Ñ•rÕnÊ V‘»YÅÊ+ª¼:8Éz}ATm¿ŒªÊó —ç)Š‚^u"É„KŽ~™½ìëÇûX5¾—K‘b'êGаDtMJ¬,œ2XrØoe„\Ÿy 8%¸J¦¯>’éëL-Ó—ä—!@1¤§g¸fffk²³3TÙÙz¶¢Â¹PêD† €EÐ*2É´Õ0ÏEp¹’…h‹•œ6à‹Fy…ÁC#r¬3Ï xQþNý†-jµPªs°”(«VÛªÔjNT©l,N‚ÚÒ·ï¨Ôký)UT€býzXe³Á••Ì0bÝ:yâ ¸/(ZUàé§Ÿž„³j££cáÛo¿½:11ñern_Me+ʬ¯¿ó³fÍê)'…’Ùëĉžõ“0›“Éu3_*¼iWõ·,ÐP2æ™wà:&b>ÿüNðós¬2’Ò-³Àúõç$¿ ™Ï´Z¥ÄlˆýÜz#Æi k\¾¤‰5¤„Ÿ…ãQåp¶ƒ/XW¬ù‚s}ßg—€oz($¬L™ÃŸÙì”Ø)NŸ~ÁgÙ²*‘ã.›³ÜJ™Š¼Z*”áÔUõ¦å–¶ms«xþ’ü1EA{¸rÅ@òÇP$ÙŠ¢Lo›©‹IFìeû¬1ÃÇŠ“ko¦ÊÁ¤>Ò?Nwe­9(RŒ€¥KÄùºŒ¥ØÓÎt¯„ý*¡È-•؊Ѽ±Á¹~’é+;Ïl5¦¯PµÑX¢ËÉ)ОË4¹_¼x†)+Ó²&“‡`“Ìj¡ °Ø´ŠÎE•, §U6F0p¬PÃ*Èï„/™…XtÄBJTœªXˆ( ¶ØƒÌBøK¹4nW€‡ÚbÒ:rEø9O)ÃØ ,Ë9â¹®5ì銷šñ…óç¼@sͳð+à™†@æOÆ¡6SgÍ‚VU 5`ä÷AAAm>SYYy¤µ•êöu…ÇW_}}çwž$†DuÔvíÚõÎÝwßýüã?žøî»ï>RVV^PPð E‘ˆÝu×]ÙäðÇmž›6múEöa³¢µ[(¿±ëQ¤­Ãó¼BÎä—«'ãu4‡ ïÞ½{’œ`ÙPUŠ KJJ ¡å§k›ßäözè¡#²ß‡¢àí jß¾}FcYýrß;uê”$›Æ¨_)))Rˆuuuµ‚úDÛ¾øâ‹~žžžEÎÎÎæÙ³gŸk‰¿è6š•^m2&E­Y“ 9ø_y%Z U>~·¶2Àå”BaFEú<Ã0Ò šcÆŒ‰;uê”Yöu ²G¥ª¨íû@Ʊ­FYoÂ6ŽQ?2‘§1|Wcr;ˆíMkèš”ÅO ÿw@°l/oG°K«àûnß|óMOb*µ« TTTHìû3yèС3ëÞ6• !VƒÀ9’¶!ƒ™âèè˜ìååU˜“““€Œüu΋Ÿ 6ŸúŽûã"##÷c¥±ÃñL%0”}w÷¢££—³ƒKU¦Úá¥Y ù.úºW`n¬ÈbdùŸ’ú~„žGá`_äx ’õŒ<Èúv`0œýu´µét._~90xÙ²CB^^_ÇBk×E…‚hv —2óðÈ Q¯)Øi)V袪H‰bŠÜ¬*¡ÃŽáÄ^ RHkнQ¼"!¬À͹L5tè^éyÜèXáÌ$t5—©H?íÈ'†3¹¹a (‹(ÓAizµ6;ˬÉÎæUdzõ^8‰ç€W3PmP€ÿÛ4ÀÛ¼x‹à©½ p*†1s ¶WˆM×@Ötªþ1V«5°W¯^ôžÌ`tO´›Üù8*·ƒûx;¤´ hrÙ‡æ:ûu"DáK*. I‰×ËȦ„8ÇìTvê»àX?8óßJ÷”çž‹ \µ*NqáBOg‹ò\©ÆÚ›|ÔL@@A"*¼0e~Ð ?›Å3F•Ÿ’«W Öfe›ÛëØý1Œûi…©sÈEs{gcu›¾Ç3ʹ¶pÞ4šùE¥†UA˜Ã°9;yuaa5³½DÇðÕJG–çÉO‚ÄC¨Ô6A£´ò*W*Ú\b#`•…žw^¡E*EàQÃ:@¡7+XƒQÃ2¢ƒhSØð?*eu™ŠWUáN!h¬ŽãÕV¥èHvžEÐ*• –è9N7–Æ‚ÈVº§±‚šçuåU Q):XU"WâÎHŠ«‚sµT‚Z,P)ÅJ«V­Â 2|¹› J¶JÕb©«heY£È"Z•9³ˆEš¸@• ² Àæ*X†gT¥Õb!«à«Õn%Ujµ•œZö¢碷ÈÊ‚7Ø”¼RPˆ—ü4<80xóë2§ÃDÿ¥WûSÐéà`e%4]@ ­® @… iûÚ SãÓiue€¦yŸ-%HÖþŒJßþSž Ky(ï¿ÿ~öùóçÉ/uÌUò±ä3zíµ×ºQDUS–}Mݺu›”››Ûµ–×ýiz4R¥ä/‘9<ÜPUƒÁp„ü0rÔ]SBÅ1«ªª<êW  >º¸¸X¨ ܓ䟡 Ôäƒ!S!Ýö·N[Tç Y×(¼§ƒ . §ò4vÅ×¼éÌ^NáF ‹jØé0²¡IRè“©Œë›Ü7¾‹Oô~½÷Þa¿ãñ'ƒ|6¬Ûã”pªGY c9…ÖÓ³âˉ~n9m³ûr™Ã#U‹…‚s‘ŸzDCmEeïJ±”q6•æ:3{ªŠÀd+P æS<“^ÂrŽ·ñ¨nJã‘F"Í`Uúj¥F+¨U)8¥†Aì`¬J%°Ž\5¯DTpT Ä7G8bä"¥ZÖ¦Vñ ‡Í˜]E`y¥¹ÌJ”øGaU2UN<ËÝ^T‹¥ŽŒXZæ&V*•€ŸUµü ¬‚¨`¹ gÁ¡m¨Q V˜X…É ¸h-å¢Ù~—F'›ZpÊÔHŠÍ]ʼnN¨öE‹J‡JQ™ëˆú_©0* 8•¾ŒgL‹lQPªml•úÁfU#›T0P3æ«UÊ ±¬ /é/db<ÞºÂÈ”"w³L)NT¥Ù.”±6‘cjuÕBžÀ ¯^5Ð ‹¶n…ÁÈj\a<ơՕ9ÜOu¼4¤°Q ¯Ùµk××WS 1!»`Á3*á§L™òo*Š~.²•WeÒñãÇï÷òòºƒãCb÷ß?ùZ¾D€ûÉíÑÈT% gÏžC¨-TÔ3¨³ì#¢%j|N====ߣ Íxí#å†À¹?>>þEª*@uÖðz!n|ðÁŸ}öÙrÜ>€ŽŸ;wî¼ÆîÔªxàcG¹n™©z4ö5f)ŸßÃë÷E2hР٠9ø8°¢S§NõîÝûooïÄ|ì §FÉ£™uþвÿ·»]iQ· ¶„šŸbªòÓ~ƒÒÌ[©:B_i6¸jy›§ŸÅê(jŠõ¢ Ï«Ê­Pl4³6¥IÌ&†áªqÖ®âjL–q¶Ü‰ôjÔÃz• 3º2ȘjÔßL±‡àT(ªÈ4ŒN «`¼ÕÕL%NÆ‹ ‚à \ZßGÀ ¿/GÚ!_¥cœª@¬TAiE5ƒç3zYdLLo¥Öˆg ˜u´´XJAic Š|õ,ccÆÌ—³è’2¯+3Ô(v¤E•ˆøP¥¨;›F5/Z5œ eFÞ8þ®/¡&_Q-ÙO¢D®®Pò[xY’.r—+ÊRð,…3ÊÙSÞ¼ûZ¾fœ ‡9+ùzµå ÈŽˆ€&M‚벦ɨ @,„‚j‚x‘DÎÞ'…=xðà¥T—ÌÑÑ‘¯}]bVʦVõ$ÿ ™¥¨m¹JÀc=6šÂ“?øàƒ5T@³v&¿\UàŽ;î(¥>ÉYür###M-YETŽl“况{Ž-•×Åih¬åsiLˆÂÉ@»Rk’ÑØAæêEQ$¨å¥ ØÆõ •çÕeǪþü6ðwuÈ _0ܦV–cL»ùÞe:!KtVuµ®‚ƒŒ|¦Ô–˸è˫ڙu.q n%‚:°˜ ‘Wx0:7˜‹Xi5 âW‚ð@ê\[©Ái|£6T]Êft´2P¬“ÁÄØ´¥"r¦’Aݯe ˜YNS§˜k.(ªviÇ¥˜QpBz¤¢Ä•:·,BÝrbb½ÿ—hÑQ@Õ/AGýòcuzÒüÈ®8µôÉH×Ôêò;‹{§/‡ºfŽÕ¡À—¦±¿ Å{eEñZ!cÇBr×®0&>>m’£cæ€K3xÿý=z­m,æj„ßõ.?Cмv$UíöÉß³xkí’1²4¦ ëŽËX£ ²é‹B”ñ%o¯µ¯S»OõûØœ4Ôߦî¹!Y¶l™ßòåËgSý4d>QQQoÚua3Œ¦Ä¸àG­²ñRÁ••Žfž¿:,²Ù4Õ¬ °-nÀlv4WThu¨œ›-j29W›ÍZGåa=<ìÃs“¿ Cu²2*¾Øu çRÜU.› =)d¹Ýù[d‘¹ÛXÒêœv×Ô¥¬_Õð²çæëBž¸©yv3*\«TTTDÞÌ櫓Jv¹Å¦\™—m°Ùæf« Uá)¹¡ÛÛp>Ù¡\­ìùZ¢XýˆàòÒûl¡K‰àiµ¿NÎ*t×4+židd¡Éĺ©³þ²ÊFÝ»w/”MJ =sæÌä‹/j¶nÝêKû6lØy×]w%äùçŸïGÙùrišFï|Å :r^V¯^ý³œùOöåEÑbrùºØ×d>Ã~ï} $püøñp ƒD ÝQ»ýÚ• d¦7{öìÁõ«ÔŠ[¿~}¶ŸW“#ù‹ðxꎭ'U «Ø3ÿ¯BÏ5HÍÙ¤*ûÐÜ8aXѤÎ>¢zdíiáÍ×Ü,“?â}²›\–€cÏ/žPسŒÿbÙZÓµµ`Ñü1¦×rª ’@•(CŸrNZS ''ÇõÅ_ü”œÚdfC™B •JËà¶Å¯¿þú+¥¥¥´¢æ—TÒ?;;;€Ö‰!€jªÝ¥K—ŽFmÄ>õ@f&E—Q†ýþóŸÅk×®VVVæ1þüoåþ‡êçííwòäÉ)C† y¶QÔžól0›ÍN~ÒˆÕT2ÈÍÍmO ±Ñ6ÊÍ=zôjzêÔ©ñ÷6ÄiMcÇŽ :ÚN÷JýZ¶lÙ4 §¶î»ï¾õ®®®¥8>¾ëÖ­û–ìOÄ5M¶%3„Κw}…Wº™Ôc9!¾9WmýçÒh[ø©®R¸s %ÏÍùÛhõ1ûPþE_ €e¯éxm­p-({Á_—Ê4«0`ÀV*C•PÉgPe€ðððGšjƒ˜ *ÜmÓ§O_ˆ,ãUZ,¬öþÓ§OÏ¢L}Jfœ7oÞ" V«ÕEMæŽÐqÈ~‚ƒƒÙl¶ËÌA0•öÑË`0íèjÇ IDAT$¬ZµJò]‘ÏåŸÿüg*÷S‹Å©¦É\@Õ¨²ŸI®d––ö!öKŠæÃv&Ë™ÿîîî ( ­ß'—©"N÷¼}ûö#P'æBûjîi6í£¶°ßë(”œrwäLír ¦3Nà½.jŽÅ··õía¢k`ò»ô:™oí³·#çRq­íý>ÀÖûÝ„öWÈzÛak¥pkW°…ÍWÝPüå•6!ÐLÅ™þµCŠIùÖfDÍElÉBŒàÃ?|zý$OJ4•ßS¶=…žØÑÆg p£Ì¼®”ùO‰ eþ7TÉ€j±QŽ eþÓçöíÛÿz…®ã8ׯ2ÿ5M¡|­Šý̱?בÑ$òqžÀfû]Å *…BM—¤£Šç–fr¯Í ­ùÃÁ¥äº­³|:[Bµ·ì#}sÙÌbÁá:”›×µ ë_{Ý+ìÛ·o%eêSeTÚÍV˜5kÖ’‘#G>‹M泫½[2ÛC Ì–eybT8³ÎØò¼ƒüž=Îíܹs˜‹‹Ë9ò=!C» ,Èx¿ÿþûØ–\ç4åKQ2%eÿË5Ù(ó_®P€L/•2ÿé}íÌÿúmyxx$ÒòÒ4žä#²gþ_F#Í8«ÿ)ͯG»ÙFÚÃj[ äwQæœc÷êlÏt¶°7Žq˜t\ÇmãÔÇÆl²ö¶üÍ‘w mTTñC®½¥a‹¶Æ)C#KȲF€ieœù?ƒÇn#“*äg—/_þ1*á®æn)óÿ={réÒ¥/R†?b%2 oÀ(ã^ÎüGÅŸ¾víÚߟ~úiã¶mÛ–xyyùÐvIbE<òÈØŸOñøx¿ú×^{m~c×þúë¯7 4¨/Þχ$NWD…;)óŸö#»›=yòäwÉçC™ÿ&“)"22òß 9øûí·µƒ|¿·gþ_…~l(&ôåÅçkvóCÔÿHvåÂìCÕ0+ÝLÉì€6kÔþNRM³›(­SýÑù¤­³ýk¸±rZëxòѵ)6ÞÆAò¿_¸F?Í–P€#+q._!Q°GÄ “nÙÊ×t×µ2ÿ¿ýö[Ïž={_z饑ÈzoذaþÞ½{]kgçS0å$†Q»ÝUhmæ¿\9 ¡q¢þ„††šk¯~æÿ£>º ÙOwûÓqŒæ’ˆŠ½Üf·ÑŠ'3•¼Þß>\5ƒf¨Nf£•Ùúïäô•U?ÖÝÇ»ÏMdÍêjAoÿVnŒªÜ'•΂•»Žc<6 ëH‹Ÿ™ŽReð7퇠kËŸ¹¹•®é®keþË~ŸšÌ©´Kýê5}—ú_;3Ÿî«%E3eiÎDíÕöC5$”ù¯¹jµº”2ÿ$_·?× h.lgW§ß©xªŒåU.­½@UUde퇌Œ=0tè’ËÛ32vÃÉ“+¡²2""ÁÒ£ÒösçÖAqq"tïþ488\ò™îÙ3úôy”.Ù@±*!O–’!ç»Ü _ž|>}Z÷ÌÖžöŸò  « ¥ñ.C@i¥•ët]N'Ø4ÌAµ+ô=tƒ ðD@³³tšUŸ8qÂuñâÅ© 1ÜEù*T¬R^j™föÛ·o¡Õ1e…_?gæfKÍ ˜Ûoöu‘½<r®þº5 UoÆ×ö§â*õgKªæ,¿ÁçYœÂ\ÒÚ ää“) ’“¨«$m0pàB¸÷ÞÿÂÙ³ß@|ü2 `èÕ³ç4عóy鸣Gß?¿þ ÈßE’u\ýÄš³ÂüW=[’ïr³%ÃÇÚótOU‚ý§|™ŒRU|—sð…^¼¾ S X«À £¯Øg†°¾…4h–=M›6í=Ù×P_V®\‘ŸŸï[YYéøå—_~H¹"”¬9gΜ7¨Œÿ#<"å°P¾ÊÖ­[ï?~|«XµENþ«¹ýÑ£G÷»¾_ª$@ì¿ô[„Ñ\~>l•¿(>ÏÎ<ÊiDƒWKÏk×nL `,jp;‰—W$˜ÍE»qtôÎCz_X˜€ • QQ/ÝÔ‰lm¿‹EÉõºÕ¿Äõ÷ðmÚd+²=óx_ûOú:(!¥*sŒK;³ÑÆ]ü xlÐxeBl¦Â¬Æ— g½N§Ë¡AŸ ¼’%½§µZòòò7oÞ|ŽB‡)¿ÆÉÉIZ=wÁ‚/¯^½z^s œä´§U:;tèJò/½ôRÔ®]»ÞA°yžØQVV–š²û¥Iiuµ"""¢”>Ël‹@‰2î‰=ýúë¯ïÉç«¢:e¤ð£¢¢Î ãJ®mªÕ†×ЍÙOA–Çû$''.\¸ðwÙì&W èÖ­[²Ìää>P>‘»»{amCÑgû÷ïøì³Ï¶Ëþàµk×ök¬O2DFNAò}Öî~G¥dÞ£ö÷îÝIõçä vFÓœæ­~¿ŠŸ[K•Ùç®›V·”Á… ?AÇŽ÷€·w$¾ÿö훋,fÒê7 &fþÍA\Cu²zè¾cÌ¿æ—s/¿aí·»ûÍvî_­ðŒàþÙL¹=äùÚå¬Î1ñN·P¡‚:Þ ¡ù¬SãÇ‚ËÍ͈ŠzuSM²$%Ž3÷P<çg*qOÑ[t>Ã0–é Xל3Úøïÿû2)h)¤·´´Ô•†IqÈPv?*äå_}õÕÔ²²2ú\›mÕDžÑ2˵ϣΎ92Ù××7 ·]…G¦>¨77·ÒcÇŽ=IÇÓö/¾øb±³S§NuÉÉÉ Ã{XIÎz™£GvA 5Q¹R­qóûï¿KK+×f1¨øïY·nÝdìWU8Aõ7ÞXH¾#á%òš8µ…Bɉ R¿×¬YóEÊý¢°ð={öŒÀqГüôÓOçÒqTùàûï¿_l7µP¬ç·Ëº¡C’fï„kRl2?üp/ ²<=#$óUŒèÚõqÉ·0PòÏüúëTà¸êëóõò]¬Ãî-ÒÌC)3p6MÔÄ]®ZÖ¸ûxÔ9  ZoØE8h¾2 ^Ÿr8Ö¯_ÿê+¯¼ò*B®©&PÁˆ‹ Â£×ÓŒŸ+£Y8-L97'OžŒ!vDJº±v¼½½K)ë>  HfcÆŒ‰£m”—"ûv°?Ù………3›š±ÓùµÏsuu-¤%”ÛµkW$׫-t åMœ8ñU0™L—K¾`öSe W¦e”qL‰}PÛ<òÈI‡dªT@þ*—‘|3hŸœKC‚à‡@5?::z 21?Ú†ŒkÛId&¥T±ÙTlýïàÂ… S>ùä“ÅÔçW_}uŽã˵Ækõ‰XU¸ÿþûÿMÇQÕƒÛùÙb¯î4Qq¦êxÿ]Š/þ°0WÓ‚ p°nÝp‰±„„Œ¼¼À†Ú·¿rrŽHz½·äë¹^$Jݶè„ê -­3öw‘ã]-=3B”íÑÊ„B‘?Õ¿óo+´®}ô7ø‰+lö5Âf¬¬¬Œ Z^TŒ¨¿¿ÿË KŠ?*ÌS8ëžFÛHù‘9YN¶ãÝ¿ÿ...yr±†„ªôíÛ÷sy´²fc T;‹¾¥B¦0™Ć|||æ5ÄÞ >z÷ÝwGSu€ÚûT*UíjR*ÞÏd3«ßÿý‘‹E%Z,M©T–6ÄÜ<==/^9ùµ"è¸R5ggçäŽ;ž©½ŸB°iºP;zŽçùËl ϹüÝQR'ö³?aW 45³h[Y×mÂ*]šúØÖž»mÛcжm)²¬¼‚úç ’µ Â“ü'k×®}îã?þr‚‚ƒƒK©h¥\G¬!¡sˆ‰ ¢¿™ƒ+å¯\š(6ýìÈef† 6¸ÎƒÈóz¬è?U–FÅ~'‚æà3›“h@Õ¹ì#VS»: ž#M(0¡ªª*„VõÄ÷ÆÄĬ"¦ƒÀ'…+?ðÀRÉ–|=ƒá$2™bª$@/™ia;‘dÊ£\ú,5µ‹×Jm¨-¸Ÿþy,õ‘Ìh·3Ð(¯µAãª÷õOR8;€¯Ñsžuª¨Ÿ9ó$$¬ÁA‚µkCtô+—A¤¨(A qŸ(…<üž´-*êEÉt¦Tj%PjµÖUó™Êîgrmƒ ¦:c·ÃÔ¢â¿}DsôvZ(möž=0Ðß²+*`ÑÑ£°oòdP²,UUÁó;wÂ/©©°qÜ8y••ðÆÐ+88ç©Ãqχûö5¥§hÊÎÄ!8^¸±‹`+ \™úa`ã ™Ô½¥uî©hfiii(*Ì|Tæ#î½÷ÞYtLŸ>}ž»ë®»þC³qd)›p^Dů~á…u„N˜0a$²£»È‡³óRòõ ÀñÈ2Šˆá9®þ9¨ôã-Zô¤ƒƒÃz77·¸zÌ'=,,låã?¾`Û¶mƒ‘uu& tuu•À•ª&×øt:†††žDÖ3×ËË«Õþ:É•© nïl6›Q¾!3Û’%KöQiìß9*ÚyèСñmÚ´9Ú«W¯wq|ÿòË/qP>F£ñ±Æî— ˆÎ™3g5Þ[gbJíÛ·ßíüLþ•¤¤¤exMwÜqÇì… ®\¶lÙª}ß}÷Íl¨-ì뿟}öÙE®ïܹó—’áô6•+„Íúà0/4V"£Éæø ]ÐÞî¶1XAåý—P4¥X  ÈÎà‡þæÌµ;Û.6þgÕÉè}¶ÈÛí¾ƒ?þ~Ÿ4 ‚œ/o¼v-¼Þ¿¿4?fe/³1E¶Q÷´=¹pŽcØô9¼j ´›BK´0Ð<"ý鳈ŸåíÀ ¥‰ï<×çš:¹Bá¬|ë™Ì²!^€IpÍ‘Ir6|íL{Úv5ù2r†~í¶h–^;[ÿŠ[ÜBKà8qõ“0åóä,}dKŠÆÚ¡khˆ™›¢óñ<…–=cÆŒßQÑ+jßµ§Óé¸N:™ãââœäDLò­Ù‹€²%ËJË€ÖX"§Ü^cÕdÆ&ß1Î 6¼X^^~[æâ44]æ|´¾ÚÆ]µ’R°Œ)@ÓîTWÛˆ¥pS`ÈïrVô»Êq"XA·¹°"czuÃL‚ËírÏdBëûÕWüÔS`P«ëͬ˜XsVì{W›-Ñ·nrõèÝòîF©¯þCAëí b °44*€“gÞþ¿û¯½³ O‹‡I™Ž Uð7Áþ °‚À^ȶ!Ɔ@“W“ìyË ™ŒaYÖBfGdBËnäʦ;Ó™“V“p-@à ¢ãŪ”ìS°6twGkl˜Vpò¹î—KÁ ØfÕUÚëÕ6i2¢ãÊiª3/.´Þ@C&±Ç¶mƒÕ£FÕ™b® ™Uªç†tfòØ Ñ$_k_ðÛóÌAu’6ûéºMx-¯ @¾‚¤¤¤ƒÁ`œ7oÞÁÆfç4›ÆÙx—ôôtïèèèd ¸+\Ôà¢ûš;wî«ÅÅÅ/ÜJý¬ñïµk£F‚BÛxî¾घ“mã>s=¨Z{Ȥ̣(k ‰¦R0W„$ë*í%»Bgk—wjŽßLføúõ°pà@r)z8ÝÉõÜìÿoïKàš¸¶ÿ‡$kØËŠ EEPѪµ •ºTëR+Õöiµ>m±­ÚEýã«V­ýiµuß—Z«X׺ î¢>´àòPTYÄ¢ ‘Åþç›fhŒ ‚Îù3Lfîܹ™œïýÞ{Î÷w=÷AP7 ©¹¥ŠÇ¯œð¶nÑŠ1µwdŒŒ™G™éŒkÏþL™$Ÿy”U}Àž·“M~%Dø·2ÌjB‡'”h_D ÃlÎ` G¾a‰f¼_¿~ý^½zm64Ôåçç·†²¯™™YYllìkõ© P•a’œ•ào(ÃaIII ÷‹obŒfÃè§[Nù9§\©ª—Ló ¦Âä/ù_ÿb63VBó?[ñ;•ºÈ[w4bx5âR/}ì•s£"쨨¬yŠŸœaœ¹¯®fv¤{Y«6_lÕ0™ÅááL'ùOßK›Ý›ÙÜ7âµPªTü =“ûJ™ŒùëÄaÆ÷£Ï˜›k2|‘ˆá›ŠUYÕ¹ZÆ|~Îâa}Ž×¥®ËæcX œúy6ã&3ú …wŽýzcþ±°rA°¤6ÔV€Í¶ÇrÇÕ5zûí·s¶oßîA çƒÌzìÇÒÇj†™›»U7§óóæÍ ¼wïž32åYaL°´¡C‡¦CŸÍÅÅ%Ÿ=ó<‹- &pigÿƒÁ˜†( “ÈÈÈÊ=€é„ ^stt”h_I§EEEV;wî<¤ï^qÞØ±cß öQ.^¼ø4;çÂÖ ’>¸o°ÄÁƒ‡ã¸°°°¨4%&ø"§y4**ê²î1Ó¦MûÂÓÓ3žÀeÀ?üл´´ô:&Áûí·wÒÈ®]»ÖqõêÕž:t8L¿ÿôê@ÙöÖÖÖ…'OžœJ׿ûá‡f >ü'rÜVô "ÀñC´9ø·!# sF•¦]Ö!CzAJF"‘8йs hÖa?9󉉉eJ¥’ÿ]ã®AÇ$ÀD¨që_~ù%ròäÉPŸ™3gî‰D×é2zhaa¡ ºEnÙ²%€®-={öì7tÓT "ãGC¬ÇÚmà×_§;ìF×_éîîž$—ËM¨½¦¾úê«G‰ÊQ¯¸¸8:¿ˆ@õfóæÍ7‹Å⛸yt³ïܹS4f̘ÎÅÔ’ÑÀ~7xÓë߯ZV®|&4X¡T:e(Ó2˜tÆBhvÉSàŸï®hëgÅ·f´C’¹¯¨ÀÝXé3Üäü‡k^œç| ËÜãÍýÓ¹xÕŽØ‹°r_3qo"¶e:Ì\ðÏ„¾JÅ(ËŒ÷»2|ssFU®b^{ƒ±éö÷1šÉýl†—¹`XßMu­71–jOÔå6¨L@`áIίgqq±©©éC½×(/“ "Fó-õÔƒ‰ ,%2¡ÈÐÝ‚2c¢QhÕ7 ±ÖWªF-:õáÇ•ѨÞÞÞ±ÈY Ö”ã G¬^rYßD=rf4k¿¤~ùå—Ó´?;~üøÔÊ{B°Åq” ¶1cÆ yll¬ZspïÞ½ÜÜÜb°ò¦6[£ïV„,}D‰c '<µ'ö!&6ÔÒËËk½çÒ5FèÖ‰XÔ(°:jÎÎΩ"\ý6Q™Â5kÖÌÁ|ò°Œ5«,àããs‚ó,õ4vʈ־Sö^¼±Jϲ%e¥WË.2W™KJKþ%…¢È[Zz_dÅ8qü¥^ìZsyG¨<·IT4YðþKl{ï´¯ÿíxWOa߸­JYîü7ˆÔ<÷ňÏgŒ-­tžnª°Ksh'±¼®÷@sžªš¡_ú±ŽÑEª{Ñ4'NœxDw©ôà!«Ç ibV ÆqÄø»wïŠãÈ©ïE`” I¤@m™€èc€ ›mÏ9ð´§¹wè«I¥R;Š+µ 'gŽ˜SVÓ°h|µjÌÍÍTvP +:?é GF÷¬Š !PHÞ ËË[§{^QQ‘»««keyÈ=¢:Š5eV.¬FÇYb)jΓÔú¹7l "{_òv°™ßpÕ©à—”ßøÓ(üÐÏ–¯œþÊõË¿:+¸f_QÎÈ}]u³í•¶¥æFÅM¥¾*#žòº§×ÅÕ={‹öQú×}8íiæ×)ßXTñŒ;?Úæ!¶^¸lXŸz‰2cªW0­Á1`ÇÌÍÍU9h+888œ"'«Nœ#À;†Îj£ páÂ…·u³í«ýÞTªJ¿¢]¯ìììÁTßéëׯ߯s¼ «píÚµ@b$)Û·o÷E2&”z÷î]9/fooýöíÛ]«Ògc ÊÊ`wĈ6±™þìpæ_°Mw%'''ˆ=§  àUj“'†»víšL`Ó÷‚6ÍÏÏç–¸¯FÃZìW#×vún…ûƒidCW®T¦ô¿õ?†^¦Œ‘‘™ÔZÌ»èêW^ìÖ¾ÄÞÜµÔØN£”)Ì(d¬½¬ŸØÿàú¦4¿”q td„B½çJnIsgsƒŸ×ÅÊø*—Õã„?û±¬Ñ†‚çÚ;d_ôm!¹Ð¼EÅ‘¹§R©jÇæ³0ʆïPŠE¦{~ý¨ßÊú*/œaæïe˜Pº±ž_Qwư2²í HÎJ$Ì›$ÏŸ?_­Å¥­ °aÆÕýû÷_DŒÃ±¸¸¸YëÖ­—`X‹zô“žV½ýcÇŽM¥k¦ ƒ?--­Ç‰':ž®•pàÀŸÜÝÝMÚõ‚ð&æL°J%½2;vìØÃiPtnÓ¦Í8ŸÀŇœù§Hº þϲ¥E2Y£ÑëðxùVbÞ-×€2¥Kk©™¥›Ì»‚W5ƒú³Ûo0WÖ^QÊØÛc+÷ËÊ™v2Îí™rY9cÿª=ÓzDkæÀÈŒ™½ãì¬þunö9¦çòž OðìÆ û1IêvDÔ¾Ç{NN[Ü¿âã#¸kií!¯¨°×ž/açVK¤Ô$S²‰”ÿ$W>>Gó÷1O–ó÷ñJõÍcåè\ÇL 8»÷ßGc¹>ïyÃø&0ÌJ*ÔUgÈ,'€a&RΠ2›YX\Ä?—}}}¥ìqµUÀyx'fS\•kö»î2Ò`!»"2a!:F ìM6óŸúÒξiGž•–– ª[‚YÝÞ{öX]ºtɲ*Uö«jíLS¯^½V¿¬ëË<3 yPRÂï³`Ó´çÁlj <ÄxÒlÜÊåN-Ê-ù ,¶ Y‡²’2F`*`Vù®z hbÇÅ2NÁNLÛÑm+÷eÈR³ìÛº…y/î=f÷»»™¾¿ö}&lFÇä_ÍçIìòT &^fj*½éç—uÓ×·ä¶›{ù=s‹feŒÃã ð¸Ó^@ccb¼gÙÞõ2/£Ï2Ft ##R–­V0uwïíåµÅ‹yù”ˆl.))y¿±×ì Ë+€3K9wîÜ’êBÃ9«áÐYe#S¯î¿ÿ;½ëìUe÷  gpŒ¼&V®RÙ?x€ä]†£2¦B~ºÈŠ)tðV”8ûË­<äŽBë2Ï¿;õo†"ãHÓaRæâŠ‹Œ©)ã7ØOý^”Y¤J3¶0fÎÎ:Ë}Ô 3Y9Ž/™ì;³¾™ kÙÉÉV'wîœ.JûXü³ûµS"Q[þÀÑîuR뉎Žn‹Æ´W‰l¬Êv¥Míõbž‡¹¹¹M%[¥¯=›òÀ 4¬Åÿ¿1ß]¾%ñbfî,•ªÂª1ßœ¬Lé#£Ç¥ ŸÇܸ`Æ`*ÌÇLd”gí¨*°÷VTX»•YY¸ÈmM­Ëm^Å3Y‹ÌCjÞÞÌõ­×™» w™?õP³š³³Ï2Ý=Ôl¨øN±zŸÇϼmŠDŠ– 19? ¦N!ÏÊBK뼬W\îä8;>Êtváßup°*6·pP x¯ñù¶<>áñùŒ×è ŒŒe GÛo7ë³í:U~ìÖ­«•Š'OeRiD\LŒOÄèÑC\½¼ô2(@PR£ UZZúŽî1#GŽìSPPàŠãÖ¯_?ïÚµkKˆe€àààíPH$Ÿ²Êß}÷Ý3]ÆJ®®®Òª†¹2¨óó~ŠŠŠZBi€ƒ†ç 4°˜q‘‡çÇž¹þËÉÄ¥Šò&. æS\ÂàÅÜIhš@ÄðxFEBcÞm æž…¸¢Pì¦0¶tT -ËLMìeîFU­Õ¨1ßÒfTFÜ\̸uuS­hÚÑ^=ŸsiåßüLÒÒ$u0€¿Ý3o‹„@yp»?i^·Ê›D>¿ñ#)² IDAT¨ÀÒò~®µ$ÛΡ4Ë֮⮭i…¥M™ÐØ‘Ι@ĹPðnÔô²jMüäžÍ}¢ÿ_xÈ3MÀÛ·lÙ'ú@¦òù,/÷=3îýÉ“k­  Í Ú·oH®»víJ©2æ7Œ\ÁzOï7Y†Cøs^^žýøñãO³s2`IÆ Ë„ @XXXúÚµk§b¨‰Àñ³¹uðàAuèËÖÇ\–'`3ÿõ«VжmÛTMÈw¥Z–¸ÿ¾[¶!†‡ëPù¡þV-Z´HמoAàv؇µg¨-[@5Zwþ‰5,••åªÛ¯¿þznLLLKj¯›`KlYԞ꺳÷ÀŽMêÙ%sÄkm‡ \´%êîÃ’7¶¡´§5°3™\i%»Çxçßc˜Œë|͆²,>'166zh"ª(65gJEÖ¥¦–åfb¥‘¹}¹©±Hifj£‰Äê@”Çæ>.` ¬™q†‰XÁpT,`åiÅ<Ê}ôÌF)3+,{d^ºþuѽ2¡â/K˲bSSÙ‘óÐTdVljb^&تø|g Qƒ¯NÚÇU4}™°' ÑÚoÃ:-tuxæó#Ò¢¢j•;¥ÅÅ8F/Ð`‚œœ¿ó¶mÛ“sü¹º²¸IÀ’‰ð ˆáôœ–®]»ÆTP§}øðá§OŸÞnbb"%‡¸†`,#"ÈÜÜÜ≭dbÝ•S§N}ýˆ4#-!F•L`˜ƒÅÎär¹˜°½¦Ì¡þþþç†uêÔÉKk_3 `ž££ãeªc*–¡Ö2P+ ëKü€4i_×ÛÛûÄíÛ·ßhÓ¦ÍXe”œ~7@€õtä«V­ú•Êï }7dú#rÏÅÅå*6¥šüq–½½}±¬¶o½õ–B»éœá<¯6kÖ,~ìØ±+è¾>Ô]«bUN¬£ƒcLç¼P/z`ð¢,¹ ´ÿîÝ»?¢¶q¦úÀ¡±l åÉ©/üvç‘»“RfHËÁ/jCa}¥œËèÑ*D?å£"Œ¦4;)ͺÅÿUƬéòg‰ÛBK/ûf^á‚c=ݺßypý–½çëÝï§¶»÷çOÛZx„u–e8å•=2õ<5åš4ãHŽƒKHpþƒkæM^`è‰1RoáUfTÁ/‘Ó¯GIžŸ¼%¿B +/(Ëä|S#†§(“™r¦R*”s¥J@?Xž‰Š1²&¤0#à°&à°&ÀpNòÑ0 +QƒˆÑßC]F/ðÃO,æR?¿æS>ëÜ&½Áž£òòj•TJe”X£Þ~¤L&³§ãgÂ)ÖF@ý”«e3ñ X¼÷ïßO÷ÁrŒÕ/±Ÿ˜‚˜œü8r˜XØúbëX†@û2‘d‰•:ñ7€L‰Þ[4×½ž™™Y>ÝŸ+õþ÷ë›+ÑU+ °ÔbpÛp*ÿÉI 8«³þ1TH,HŽ¡1(&”••9'&&¾¯{ïXºe@ñ€Σû ù–H‚Eàˆ­ùb™kmðCž µÇ”‡ö 2ÀÕíA · ¨aû›o¾‰¢¶ê 'æU„ñÜÐY lÆÀðTz½?pÑæ~)wïƒá©—rÒJ̘y4W¿@ƒT¦V%ÅJWÆáUÆ.‰)ȹÝÊ4àMæ¡ÐÝ1épy€Â6„ÉÉ÷fr63~C˜¬ŒÛŒqÛVÌÅãŽODË©O,»`A¯µŸÇÓ|þ÷g<>û7Ê@¶Ñ 5Ê42’xÛZ-ü1¬ëïv¢ï'¯BUu´}—uR€!g¦´´Ôž@äs¶ç]e Д±ÛB¡°¸¤¤ÄY÷"‘(‹ÝOÎ5—œqez1–<}eaØ Â›Ävn=|øÐ[ß1ÄæHŒš0aÂï+W®T'‹jÞ¥K—ˆÿýïCõ©P›¨ïN²4,àƒhãááq¡¢¢ÂD3l†Ò²ô,•ÿD{+Ó9-èÅÛ:GýØÐ1/1ò„ØòtÛƒÎÉûgôD¥^î¥úÍÕga;?{ÏÆ±ï¾élm¹s/›3¶¶eÌÜ›U¾øæÿ¬^`,¶g¬:0&Îî;€1uó~Œ±à¡­#ÃÙ3ròä/ìD¦›&w ìµ¾_Ø–†µ£63«6ë_hjZ'eÌ›H$’rÐÑÚÃ;µQÐ8ÙÊá+ 'ÙÙÙA¤ózðl†þ7Zð¤UQ†ú8b!tœðZºöU}Çk(¿uëÖ²/¿ür$÷±†Å §%¶ d†R+À2xGtNІ|Œ¶ÀÜÚ ûúöí›H@ìÁ¶YuFu¾„dTVa€UžÆ\صG•ç‹¡ÍêÚƒ.%**j ÚŽUøËðÛÔw¼\¥§ÿßÇsã’ÓW|÷Çѱ÷ŠJ"©!âÜgÏ `Œ¹È$¦›Ë+1Ÿù¥?Ϻ…‡Ï?·woh…¡¥Òy¼¢vÝ»×I€œWor¸^^^qšÞô!déwêÔé‹§U€AÆ…®9àD/ËåË—oCXõÞ½{·cžƒzŽB¡pXºtégú·ÌKrrrT»ví0´•¼aÆϩNjVW\\ÜÃNÚÇü„w™LæD,$ÛÈæ'ö5sP§=:/×=wîÜF³ÀØùóç?¢²1´Ø’˜Ú\ì#öèçç· aÌ7ömÞ¼y#G‰a¥@o ò8†Ú€€k:æƒpMøMóU:#ÊöД£º­ÀA0éTwO(è+kРAßÒ÷µˆÚîm|gŒZkõÿ Ö4a³¶¶éÜ%û §“f~ÜØÃ¡5õ¬ÓЙÖ OóYåä¾Îç•ùx9Oè\³²í:h‡7Óö?‰‘ZÉ–Ï(a“î|g3“u#[5ßÖåûFðOïÙã{#!a%ÕÑUgÈ,§Y@ÀÄÐÈÈzQеÚ( ÇŽ9„3gÎŒÆuµ3÷a˜'¹}û¶¨:µm•6Sçèªh±¨* …D£<ÈÔ´jÕJJÀj¥Qmþ•˜ÎòLÝöAy؇í;wîÙv`뢯úX$“™ÜPÔ™ö½jm…,KMïª@Žš§0b8V‹œ‰¸'\—e¢9 á€¦: 1aŒÎ;™ ÷Lhç·ÇÇÜ\Þ¿ÏœŒ ѱ;# d…je[Sëø°Þ·ÊŸy^†!¨Ã‡Ø’‘¹±±±ËÂøûûÊËË{Új–=zôL}ólÐÔÑ¢·iyäÚ­÷$ÒÒ>Ëဦ>€†N(²àñÚXÄ|à›Ü˜¿Ëäìd«ÇvN—Ê¥-ç,2:0:ÀýåR¨­U•ÅÏY#ó_Ï㢳‡§@ÎfÓØ!ÝÛz¸L47ž'Ìã4ƒ8{j3áñ’},DS¾nåÛcC×vÑd  °5vëj]IeÒˆ˜¸˜Í9ç4¡ €w2Àf}Ç@€]ƒÊFá(`²Êìð”SÒ¿{.‹¿é˜ày^Û£†"¶|ÿ‰×Ä¿œ¹šv¿`°´ CkM;”³ggBžQ²ƒ©Éönbëãý^qÈmJu_¶oÙ' eÕÊ1'cÆM~ÿù+`.aüøñÛ·oOdÙ2Ü1?v'è«Î;÷A?–rž={v¦n9l¿ƒƒCþþýûϲeéËâ×ÎÖGÖ<›1ýtÝױ§——W&['˜¾,~”ñâEÔ÷’¡a)CYü¨×Ê•+^Ö,þga|¢ßv¡"þ.²÷BÚ¤Œ ÙÑò§_ïHŠ®—Êü²rõ„©àeÿ¢Œÿbd¤‚Roó4ÛFZÛ•ÇøL_U–©ço#Þ“çUU2***¨Q¡~¯É6ó÷KnjdtÚÍD¸l€“ÍŒ Þîz:Ø&ûYš—4µïñàùƒÿQ©TUþæå ûA=~Õ÷Âg-ZäNìä#rªG£¢¢.WUÁ0KKËr¦ÿýí·ßÞI##§Ù‘œ¥g‡ÓïßàÜWANv§§çGGG1¡]ÉÉÉ2ºæErÆSy<Þ_“'OªT*ww÷,†ØÑ}]A¿µµuáÉ“'§fff&õë×/øðá?8p -•QBU 'à ÿæ›oÓþÄT¬ø|¾rß¾} œv¹¹¹ÉÝ&‘Hl©œ»ÄÊÌF:gΜgÏž}£°°Ð,;;»/7n\22ï“’’Þ´··¿M×ø¦K—.ûœÚõB?•gîêêšA×þîêÕ«· ”‹z(‡—––Vß3fÌ;TVo*ól\\ÜðË—/÷š2eÊ.:š£1doøÑKÍt®ß»g²`ÿ¹à¹y$J_/U([rlçÅ7c#&UÄçŸuŸë!¶Hl'½yYåÊê•”ªÆ£ `cc“@Œ ü—_~É'&”››ÛØÅrÒ¯5j.CKrôaaa‡õEˆU•ÅO á›ÅO¬ä3aÂì°± ©vÿ­[·žÈâ§ûŠ9sæÌá*²øåÊÝpŒ6øU•ÅߪU«]/sÿK41''ùªÞÝÆk!†Ø¶œ¿Ü1;¿¨c¡L"W(}8ày¨µ“iÆçó˜óí,ÍÎ÷´°È}ï“gÄËSUT­ Àç5eêÉŸ$‡ÿ^^^^9ü…+NŒà8œ/½~ƒ˜:uêæ7Ö:‹ï“&p|ëîÝ»ATÿs5É∈xbNYüwîÜ  óÊÅOÀ‘¥ý9—Åÿžû¦VáþÁ­$P>3íß3“gÖ÷Û¡¯{¿ò™£¥ù&cA*TÐD€…a2-xÛ<ø¼¯Þ1v_hkÓó;›èoìm÷¼¨ 3V¯ `*l<ÊÑÑÑ %%%T^0æ_Èé^"à™DÎ;ž-zguÍâùÈeAcÆŒYR×,~‡Ûl?;§ÂeñsŒ¦Ö6¼s`>½@‹ÕÔ+ÎÙßòZÎýÀû…:ÊÊË<ä U Žõ<χÌ(ݘ^– sù†—ø¦1/ÙÉX Û"<(|þÞs{C‰Õˆõ÷üxEÝÛ5e„OÓ5“!ó¿¡^|á…П~ú鬆ñÔ(‹ŸêœÌfñ“ƒW³6‹¿¨¨(˜Ì|€"²øþùç¹T·{Èâß°aÃ@€…v?ôÖˆ±|o¨ÎÈâ'vµT,÷àñxJ.‹ÿùÛsÉ£ih»‘#Z{üB@NaI³¼¢?™Bá)S([* É€4FêÙòh ò+ðÓMy¼tÿе€w§ ßôr€1SÄýÔþ±=§÷ø&ÜHX©T=® ÀçñsšLŒ m<Ê5±§Éâ?uê–*È…$LUYüͤ¤J.‹Ÿš&okO]p¾–ãq·°ØSòHæ]ZVîVª(óU”«\+˜ŠFŸßX€†œ¡\ àçš ˜ø9ÖBã[bcA¦§À8'ÈÌ8×M(”s?«ê ¹2;ˆ,,©•¬mMã†õÞâåÚ¸”ž•qYüмô†á·­ W¯þußù¯‚b×"™Ì¹T®p’—«äå §r•Ê¡\YáÜÃq 4ÆA¾1ŸŸ+˜ósM„ÆD|AžØÔ8×ÅÔ$'ÈJ”ÛÊÜ\Ê=%µ·ääl«;M—Jå+ˆLà^'eCLãES¨OãTž­ ¸&ÐÓÛ²°P~Ò#2àx%:¡×Ç’3ìHd Q‘´Ô¡¨´ÌY¡,7.U”;«TŒ9mÛ—)•ÎLcÒëôx¼|>ßHÎç󥯯|‰P`,á Œ™Ø.™ç‹ÍLï˜ xr+‹üÎN6¹­ll8yƦVØ»Z¡P>‘´)•Ê"bbâ|FŽâååª÷»€2€­­mŽF ª´´ô}Ç9::Î),, nݺõ š¬2@ppðv(H$’OYe¤™/û÷© p@Óxiµ““œ^, ÕØ h]$•W>Ô*¥BɯŽÑ¨ó¤ÿøXÁŒþyØYç[›Šäì7éfi-íÝÊKÂ}3×–-Û÷‰>aM­ srÜäÉï×Zvÿþý)öoÌë<­2 óF®È–_°`AGzO&V•7bĈװ<2›é¶ôûï¿"£ŸÊÜÿàÁþºuë|ØU(á… D€a{Ê”)¡&&&rvõˉ'ú4oÞ¼èÖ­[VñññÑÑÑ'ôÍA=O•mÝ8]ƒÊƒ£:'°kÕp*ÿX£Qx™¬»³´ƒ[1ûêÓÆï¯¾íüsªzõië—CÇÑ«ENïÖÍsz¿Ú<§‹»$ØÃ¹Xýrs.öu°‘q­Û¸íàÁóÕ+(Êí{ôª³2À¼yó‘I?f̘”ŠŠ åÓ*À¾þúë¶ät8tèPKÕÖ­[¿# iILJpéÒ¥³™þä@ßuuuÍIIIycË–-HNŽ5j§··÷®¶mÛʈ}½O éCÎ=—îr''§ËW¯^íGå™;ö9þ¯8™ššú ãI×|Jº £­2@mq—®›¡­2pûöínK—.¨Ê@BBBGÚoU…ÊÀwvvv©Ýc›¬Ê•N÷>SÐÓQæ~úœqÖpV^®¬^@©ªR€œðÛP@vM¯‹¹( ger¾r2À'ì*™UÙ•+W&#¦¬¬Ì“Ài>Â*„³™þHøœ0aB2Ë9:Æl€p±¦~ø<++«7É~8Hâ¤")’>¿JÀÐCËa'Þ½{wfHHÈ„B?É—¥"¿æ_ÿú×%ssóT0ö3¨ à3b53 ú@‰aÌÈð§ë&=¦2À®¸É*ÀZµjµ‡€s¾¯¯ïj_õ07Tèï¨/m>µ°.øAeàÌ™3Ë rðꫯþ¦Q`ËÜ…EÖ0O†²À Q¯×^{m7tÆgœ=›žÏ(O¥ª¨Z€Ï«³2€>«2 €¢=¼¦;aŽ ƒ… N"É$æTéSÞ~ûí­›7ožþñÇŸGRZ²d‰X.—;°êÒt±ìñH²¬ªþµQ €ëÚ¬Y³£œÊÇh8ãì¥133aõʦÂ:)TuÎÓ*ÔÄöìÙ‚ÄÈŒŒŒ…þþþçµA‘œ«ù¶mÛ>§ý4Žø 9}>æ›´•¦õæ~i‡íÚ¨ (ÎmŒ*,ÐrŒ†3Î8«w š¿wï¹Pb5ú•xLQ÷îíê¤ €¿±¬19@dÝÛÙÙuÅ ™µQ¨‰AŠñâÅ“¨^ó0$W\\Ü“ã˜d÷òòÚ–šš:nÕªUŸãØM›6í$&Õ™˜Ìït/7Éùæc¸ÊPÙP §E›aº*iii=ÈÁÂqÐc3 2°€À*·žTäí۷ߥåTžÂ¸<Î8k`Û³ç´oB•J¥ÊUgÈ,'  ÙÄÈÈÐ&¥  a5•Yöäx |$Uåø°ëÙÔ$Ë_Û © „††.ŽˆˆH·´´Tj+Ô§Ê®k¨ý8•h8ã¬ÑYFFŽèÀc‘2YA׿‡Ëlã{÷Ûb(†3ÃÖ”TˆYúcØòeSà€†3Îز³“­ŽÛ9]®³œ³©©èphèÀhw÷ƒL=ôƒòx¼ò+Vœ0ÔGÔÕâÅ‹»µmÛ6•WxÊ(Ÿê; ªá©ú6dù÷êÕk·fã1.€3ÎР »uµ.ÈÀd2iD\\Ìæœœ ‘¡óÝ%•J­rrrü;uê´Q_h2’Ç·PüñLJèI³Ê˜4‡2Žc• ðÌ’|þŒ¬û†lc\O{5Ξ¿qÁœqÖ€¶oß²O”JE•Ê'OÆŒ{ÿýÉz'È1©Ïn›˜˜ôÇ|›‰ÎǸ.]º,ÇD5ÌåöíÛŒ‰‰9Re°bI!ô~“ÍŽÈA!I‘l&=X²ûñ9gÈôeùC!à7ÞÈ×—åÕ<‘U‘ˆµqØ:Êòথ¥¹Ò¾#ì=¢|¬2ªÁ¯k¬žœö1ÚõÂ\v–ddäY„4s Šc4œqÖ(L*-Ѝþ˜âjÁ…1é®ûö³ÛìКD"–••aò¼%B}}||ÆwíÚ5¦º€8V˜‹-ê&EÎt Ê€ƒ÷õõý•˜•'m7oÓ¦Í8Qb6Kéœq………¢ª@Yþb±X‚H²ðððPìß´iÓÇ£GžBåºÝ¾}»C@@À<ìG¢ejjª'룹sçn a?.^¼ø¶t*skŽ?>îäÉ“ýt?Á¾Î;÷ùå—_¾ À•P­gËÐ6—iГCØ71¾*ÝØz -¸zõj{¨"@1€Àñ#WW×;Ô6ÃõÇ=ݣጳFaJeyµÊ*•Ò³ªÏá üñÇÂÂÂ&ë‹ìêÔ©Ó/ñññ_ôïß_NŽ6X’ØÙÙY­ €Þ<” * Qhúôé•U±¬3D=öµØvssó&;˜@ IÍš5»‰á8rì#´˜VN^^ÞWØF¾‰{+JŽ«y"Ë!Ä´¹“®}Íògïꋈ5€rbnܸ1B·þHêD¾ ±¹YYY°/))ésÇÚYþTÆamð&Æš‘‘ñ&Êl–?vžÞðc ‹D6ËŸÚ4œ{²9FÃgÆ‚‚ÂçŸ;·7”XeÄyEíÚu×ÇK=òŽ˜GÎYÝëþþûï߇`£¶21•ð´´´ ê—z?~ºfH­VÊdýœèe¹|ùòm²£ÞþºÑ£Gï ë'`þ‡XÎØªÊÑÎòwuuM:vìØT*7…Ê´Ò—åO€Ó‚˜ÌB€¤X,>…,ªs†ìØ,ºÿßèµfÉ’%—è^L´ƒ%t­&YþAAAß#ËŸ€$U*•ú|ñÅzË£6F}åO€½—y‰²ükÅä¹<Î8kX;}zï +U*¥«ÎYN³fCC#ëœxP"GÍ×ÎT¯2zûÇæÌ™ÑP$Ðͤg3â«S0ÄpðÞ­[·b”º°Ì6†,ÿªÊÓÎò°ãêú²dùs@ÃgMÄ+sæØHiL­ ²5ïÖ{‹««W£RÀPõú?¬Š)Ô§¹»»MÀÛØ³ü;vìØkß ÂO¡Pˆ‡þ¡EÑ8〆3Îܲ“³­Ží<6].•?® 2=:04Ú=À½ÎÊèqOš4©uff¦SHHH*¤Nž‡2@S4NY þ àŒ³4µ2ÀÖØÕº “Ieq1q›s2rê¤ €p`??¿5)))¾fffe±±±¯=/e€¦hœ²@ý Àg hû–íûD©PV­ srÜû“߯µ2À”)SÆÙÚÚ^B„–6ª2 \Ć^S(&È‚Gð€küøñêdÆÅ‹Ÿf™€Ž %@µ"¦”²,‘‘á©›‘F…U?ÅÆ L¢®ööör( ÄÇÇÐuNkÏÕ°Æ–igg—§É»©Ìà߸q£oVV–+{®¶²YºöÐ’2©]ô) ItÕªUGØû«‹²@óæÍ‹À(Ye6iµU«V7é{4öáºúôévÜÏŸ3ÎÆÎ<ÿ•JUåo®\QnÔ#èתŽ3>yòdä´iÓV‘ƒThFû¾ðôôŒ§cüðýKKKŽ,ùí·ßÞI##gÛ‘À³C‡‡é÷_¥z0± ϯ¿þz+1£4¡P(‰DÍÍÍeäÌ·˜]¡{áÍœ9s^›6mö!¯„œéfbM&–––yL 9ù,‚E‰ÄÜÍÍ-}Ë–-Ó®^½zkРA¹Ð`»råÊk¾¾¾—wïÞýÕŽ;ŒÆŒ“2räÈô÷ª§•%Þ¿ÄaízaðàÁƒœœîR;L%½7bĈtºÞ×»ví §z="Ö×–¶?œ:uêŽáÇwÈÎÎv*@\\Ü\Ú>G@ºÝ½{×O,c3ãQ£F¥Í™3g Xð½{÷¬ °®Žß„ ÎaÒÿСC0'S]£éœcԆͩAY ==½î)&&f K1[/b£Š‹‹™ààà«tŸïœ>}zµÛ‘sçνùçŸ~JßÛ/£áŒ3ÎêlÊreõÊJU”Ž|çÎ b ßBº‹|sTe†~X@ŒU€A~…ç&õÆ÷àoggçÎäÌûA% ¬¬Ì911ñ}¶<ôÚ‹ŠŠÚ&''OÀ¾Ž;ŠÉù~tâĉɄy‘Ãî…ù"dá¸,¥SµRÉÛÔIDATÔ+nÒ5SfPq¯ºõÒ0‚M`[Pƒb?cÖis›e;ˆ>|ø°Qw])}Ê.\GûwÛ’˜ššæèS pÈ–§¥,pŸÐ †´ ÛP @ ÆeÙ³g¿õ"?÷Ü gœ5 ñŒªÍšçñyU*Lš4iCß¾}ç³ÃEOôIHHÈ8v8Xd±cˆ CSäèÿWXXèALÁ©K—.Gmllr¡ `èzR©ÔÉÚÚú¶Î>11–Löo{ØG½gÝL}bbHÒ°û ((-,ZLd<²ð•J¥X‹\­ªvMõZC ôV •"é^WP;„²Ê7nܰG[éÓ{Ó§,×( „еSõ) ðx¼"í{Â9ìçtNå÷Šï„ØÕK“{à gœ5  Í„Õ+˜ ë¤ àààp*##£¶1—‚w ÕFÀÃÃã<Ô´ƒèœô‚‚‚öìß´ý*öø%B{ ‚ýŒ®‹!)_6Ûžœ{k¦4ä̰À‰wdá ¥WÇä´•|||×FYÚmø<***áÉ`65ùî,,,ô*  N¬²ÀRûžªRˆ‹‹ }Y”¸¡3Î8k@ šnï¹Ð U…Ø@ׯ¨]÷vuRذaÃjêñ/¢^¹#߬uëÖK0Äæéé9éi•ˆíoÙ²eoÿ•B¡PBL# ÎÝÎÎ.ÂÊÊj½‘‘‘’^嬜?àÆ1cƬ§:¥[bø‹ò dÛÀ¤#Û~Ö¬Ycq,æè¶-^¼8Ãkï½÷^•¹:ºÊ×®]Gõè †eröê!ªª”V­Z•Ž:'$$ô£69ß¾}ûï©]ÁtªU˜:uê\¥õºÊ;vìX@ך öHû¢¡ M÷t¹&Ê–½é^b™\Y€Ë£áŒ³¶Ó{NûÞH¸±R¥T¹ê ™å4 h6142´^¢L¾¾¾Rv(§6ÊÚlòø5í}x×-ŒÃUÚ™õ†²íÁt0ŒV“¬~Cu"À’<²€»»»<11ÑŠ½—Æ ,@Lkhaaáhh8㌳z3äʤï<i^X Vxdmï30l‹«—«”kÚ[SR öF•d2™Ó Aƒfnܸ1™Î8ã¬~,9يٹs:#ÕYÎY$:Ì ÍÔIó2ÑÑÑm±x&ÿYi”Ú(°+lÖg–<2ïÉV½jÈÁIOOoÉF“q¦ß¸`Î8kH+)á3[·®~d`Ri³™ÉȨ“2ÀÈ‘#û°ëĬ_¿~†fj« !`PŸM€Ì{,\VÓãûôéóZcý:‘è …lîÁ®Ú¸„MÎ8kHûùç(æÑ£~?G2ç­[<¦k×sú>Fââ¸qã’¿øâ‹b7Ÿ˜››ÇuïÞ½Xû$=~þùççñ¾{÷î²[·nuµ²²JNLLlK€³æûᅵ2eÊ®·ß~û»µk×Îiß¾½¬Š—©Tª$7‚mÙ²Å9--ÿÙgŸ…&%% Xæ3bĈpbYÐW“öèÑ£ÑXHÌÄçÈŒ—ËåJ???9"ƒƒƒO,Z´ÈÀ.¤sçÎéNNNJ€!Õ9û.]ºT޲q]s9Õ=Y"‘È‘ ‰yaÆ…ýþûï.÷Øs'L˜ÐÚØØXúé§Ÿ¾öá‡fhßêþÕW_½¶dÉ’@öz¨óÊ•+]D“'O~ýîÝ»R¶-Á±oÛ¶mÎááá9–––ؼ 3ft]·n]ó¬?þø£+}—Ñ&Úe Nï¼óÎ[»vír úfëk\Ô‹ê¾oß>ëÈÈȶ-ÙzÑ÷ãIûØ÷ÁD?~ÜìСCbooïbÜÇh8ãŒ3}Ýùˆj).®ö8B„æ"l¹ªã¸I “ã°f †ÊŒŒŒä>>>ã»ví£/‡DÛÈÑù#¢ ÛˆúZ¾|ù‚iÓ¦ý‡ †Ó6`?&ÿ PÞ»wOŒzûömuD¢±Ør6mÚô1ÊÒ*w$†öèØ7ÂÂÂfa$mÀ¸0,È–••%®¨¨àãXz™ã¾{õêõ;Š277×eu PX:zôè)ÚËB³¶xñâ>ÖÖÖEhbxsØ{Ãý ¼˜Î±G´XžæžúØÚÚJΟ??”Í3Bò&µÁ"jwX%ÕÝäﯫ¸%Ú$//Ï“Êø•Ô ÷röìÙaíÚµ{W·NÐ!0›çààáÂ…GGÇÇêE EŒÉ ÷f 5Ye“5b;‘@Šd걟Ä>b*GØû»xñ¢:ÜÚc&&&Ò?ÿüS­€É~rÈÇÙcéº=©§O8úúMáš5kæèO,U &DLÎáêÕ«CÙý¹f—±vssxö™4iÒZ̹€E{KbóŒè¸aÄV¾×N”%Ðm“ϱŸîm¡*vvvW ”zÐîmÚuŠ"vµnÿþýg‰ý$;û/1&õ’ØB¡0ÿþýûSØ{&Ã^—îyxS{ì,U#*þ/̓$÷ôôLŽŽNxÚ…Œª3¬ÒGå?¢žÔ^V¼ô’´QEEEîwÏœ9³Œ}è1ÑF\ï6mÚÄB ûÐ{éÖ­Û¿KJJø;щÞFAA:\”~T ¬ä„>C‚zTÔC¸}ìØ±MìõÐÈÇxt9ûCÐw>êiŒƒkÿ¸ÐŽô DQÏѲY³fñXN—ó¬œ=>†ÀËcT*çj¼y•ÊÈ=¡ßLtU‘UÈ™)--µ'ùœ ÀóLÏ'÷îÝjGK¿ï½Du¶Õ9æL]P"0³ÒU¨ÎlllÔu(@¨ç¤À²0ßAU4õGN_ŒöoSSÓ\–Á@@È€qMœ8qª¹¹ù*W œ•ÁäÜ‹é·+ë#vô¹³³ó*ÛÊ÷Ê-»té’^“6?õع2ôX=÷âI~+Kã³äP)€’þ&p­TP(VTÏ»Mú±Çˆù&ÚÛuĈ;©”xùòåÞDÕ¦Õç…ðeSÃ:c:m…TÐÏž={ƽ‘<Ö±cÇIšO`RRR?ªK4õz@rû‰‚Nƒ`ß¼yó‚ÆÂ¹c?ý``ð Î1Tôj(3—¼b€{=³W­Z5÷«¯¾ZA³A%škŽÌk¢õÃtÆÆ'Rûøý÷ßg@FÕt-sÎ^"33«V€¼g”0y.‘HðÛÑŽJ«2@MÌËË+%??¿#«BÀ†öpM0`íÏȈØßEŠÆDÑoý+° ïévîð@#gôÏ(cqk¨1ë«|üù_üM¿Ù…þþþç'Jsv )G ' L¾µO¥u„¯ïرãõš´ Ï ù¡ãŒÎ(ËÈ0ç„—¦¼KÄR‚YG€b%ݲˆi%‘¯‰€ïB'™:>Mí±h!{™FÒ:‡¾ÔKÔàÇpSÙÙÙ–Dñ†BÊ= j¤#è\¹re2P ¬ä¬Ïj‡?†‡‡‡¬ð0S9ñÈ$&çý94ÊœË‹Û ¼ÆP±MNÿ=rÚp è6ÓJòå¼¼¼þäÄgb?QÜKÓ¦MëCçoÁ9U±Ö¾üòË·lmmÕlmýúõû©Gqß3®G´x–ˆ­*K«Î¾øøñÎ*OID“©ŒtVfƒ3Θ~ó™½{CÉ Pà1Ý»×I 11±÷£G âpŒ££ã!üæ:uêôÅÓ*ÔÄ0Ú`gg7€Ê\Þ=æ„nݺµŒ¶Sˆ¥ìÀ~Úçóÿˆ^êù bTs5CB§ýüü6@Rìâ<›à±Ÿögò3›úöí»F,/…"ÏŸ]}:Ì—|€äMj³Žìˆ «F/p ²÷±¾ ÙþÄÇÇŽ[DÇÿDíæ ÂuPþ¿þõ¯Ÿ—.]º†ŽÂñÑÑÑÛmÓ¦M;ÉÇt&&ó;uhoÒýçgffÎÇ\•†]NÒ•±‚ÊëLí@‚9ø.O:å¡]@ŠØUÐ[o½µƒŽ=Ní“Ie*›Òc¯Î£aRÉA~À~@_ú¯¡¡¡‹'L˜Ì¡aŽô}¶œÔD}ú\ÂýÑ®ól$ˆX$ÚlLצOŸ>‰XàtŒÕÆ—ÒöHö~8ãL‹§2mÚôeöí{‹î6šI‹+Lß¾‡¨göÌ”žu‚¤nùp¬UIºhËÙh†›”úÓ·ÿiïe¶ÃÌ^wÕªUeøMkÆšÀ$šûÈÑ®‹n½ëÒæ5)€NtèPeO¨©g³fÍ 66 dô…ÌÕvÊäàÏ@a"-õøñãÁô÷|iDó%è áËyðàA0ÑÉdžˆbÞ¹wïÞ«ØÖ°–m:cÃç±Ø-†YJò‰mUŽUcbïläGM ãÐìð#nÆ_9 áL¯P¢¢0n¿“kŒçcšy®F¿ª¥fí&­ƒ¦NØK$ÀJY»ví°åË—û ´¤z,A²×… R©ü ‹-jGŸŸ£¢ûœöu¼yóf¿÷Þ{o›H¦kH [²dIk¢Í]ˆµ„¿û‘ŒF×»JçEÝ#--­Ë·ß~û³îêy¬VÐ~ûèÑ£ÖK—.õ¢:<2dÈ_+W®t§ö€:ÀºŒ1"F7™Ž3Î8ãìe³iaŽ _×®]µjÕJM31¤D@´Ñœ1;ÆZ— âÚÚc§0Œ·¢.Úe³Š©ºÇ2Œ²÷¢Í®tÇ‚ŸÖPÔÔTÑÓÐkÎ8㌳Ùþ?¾€È"ø¯IEND®B`‚PKÚ Ô2:áp³õ³õ-Pictures/1000020100000276000000D2458AB688.png‰PNG  IHDRvÒÇF( cHRMz&€„ú€èu0ê`:˜pœºQ<gAMA±Ž|ûQ“sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+ IDATxÚì¼ÕÙÿϽ4©J¯AD^T4Šhì…7ÝúI3Q£‰&&ÑML¢&¾Il¯¾¨1–¿ ± °QDŠHérù?ß3û\†¹³»³»3»sïç|†½ìΜ3íœó;¿§•í1‰$’H"‰$’H"‰Ôx)OnA"‰$’H"‰$’Hì¬ìܹ3¹‹‰$’H"‰$’H"µØ}öÙgÉ]L$‘DI$‘D©éÀnݺuvK$‘DI$‘DI¤;T°Ÿ~úirI$‘DI$‘Dj:°›={vr÷I$‘DI$‘Dj:°ó2u‰:6‘DI$‘DI¤ôR?×¾üòËj@néÒ¥¦yóæ¦Aƒöÿ›6m2+V¬0û쳩¨¨°ßmٲŲ|Û·o7;w6½zõª:~Μ9fýúõfÀ€f¿ýö³ßmݺÕÌœ9ÓÖyÈ!‡˜† ÚïW¯^mæÎkÚµkg<ðÀjutÐAö7u1uTVVšÁƒWÕ‘H"‰$’H"‰$R%gÆîƒ>¨öÝW_}eV®\Yõÿ/¾øÂ¬ZµÊn*€¬š‘#Gš>úÈ,Y²Ä~ÿÞ{ï™zõê™#Ž8¼þúëfÇŽöû‰'š~ýú™.]º˜I“&UÆiÓ¦™#FØ¿çÏŸ_U€‘:Þxã ³qãFûýþó þúöík^zé¥äi'’H"‰$RZYºÔ˜ûî3æÚk¿ù®@Y´h‘Ýjº@½ýöÛÉ{RL`7hРjßµoßÞtêÔ©êÿ°tmÛ¶Ýk˜¸&Mš˜òòrÓ¢E‹ªøwü±éÙ³§w;v4 ,0Ÿþ¹eû8†zj€Åyóæ™ý÷ßßÖ`S PìÝ»·­£k×®¶N€`:ho×®]¶ŽDI$‘D)‰LjÌM7󿛯¬Xálü}à ƼþzÆCÏ=÷\« K'÷Þ{¯Ýjºp\k"Ev€ª!C†ìõ¬ß‘µk×ZV®{÷îöÿ.U‘¢Îݶm›Ù¼y³iÚ´iÕ1|j°¦ªZÝá{Ýß½ï¾ûî[UG³fÍì÷‰$’H"‰$RtY¼ô…úªúo••ÆL˜`Ì‚iÿñ\5ÿE!ÇOžQ-‘úÅl P‡ÝèÑ£} *ݲ²2˼øÜß³ýúõ«¾ç“}ÝŸ}üöÕýƒ‚ÏDI$‘D UžyÆpÙö¹ôRߟn½õVó—¿üÅtèÐÁ\qÅV…Òßÿþws衇îµï?þñ Ï9çsÿý÷›Y³fYõæ1Çc~ýë_[Vì'?ù‰Õ–¡á:þøãíïßùÎwÌ÷¾÷=KÖüóŸÿ´ª]Úù׿þU Tºë=òÈ#Íïÿûªz©ï±Ç³óñ¬mÚ´1ûÛßÌ'Ÿ|bÏ™6þû¿ÿÛþþóŸÿܼóÎ;ö﫯¾ÚÚÉ#wÝu—­ííóùÄO˜ÿûß¶ö=öØc«Ý'Ž{íµ×,Atúé§ÛvX@̵¦NjÏIëâ~¢þ=å”SÌ×¾öµZñª éà<1}útkc§NH«V­ªœ1°ÓCõÊæeÂé•-ˆýPÕ¢¦Ex°ªþåШu°_ëÖ­«ê@p¬ ŽDI$‘D)ºd`ãªdá´?   æÎ;ï4ßúÖ· >³×~=ôµ)?ãŒ3ìÿO:é$óÇ?þÑ<÷Üsæ>ìùŒcÇöè£Z;öGyÄœþùöûÿýßÿµ vÝu×Y@…¶ 0æw½7ÞxcU½Ï?ÿ¼9üðÃÍÓO?m† f~÷»ßÙßXÓ¿þõ¯æî»ï¶ß¡:ƶž:¦L™R¬˜ß™÷©ƒ¿¹v@& ëÌ^rÉ%>¸øóä“OZàÆ¹³ÿ«¯¾jÈ-øº~ùË_Úº8'm³¶H$Œ+ìáelø` uäÅ_lÁÌ@F™²lræ™gZ[ú«®ºÊªOý„züq[/엟ĸ?Ño|ãUÄ*_7h«Lê×÷½Ï¨Ž_y啌Ï ëŸ~m°Ÿ? QL€G¼ÎAÁ`>Ç%Ç&Ç&Ç&Ç&Ç&ÇÆéØ@2rdv`Ç>YDÕ±€&^7ŒÊšA||†jÁêR€¿£Šä;/Ãæ&A`·°×£ öüÊ`Õìç`¿ýío§­—óB% ‘ƒÞE]d£N6Ý¡ÞN8Á‚CX:?@§‚šÛ›o¾Ù2o°‰¨Qý¢bFõJ}\pµ½S.¶^á¾À$0aòصtm‘Ä› ‘DI$‘D¢–aÃ27~1"k5¨(a®&gŸ}¶Y¼x±µCÝȆ6‹Ø¯˜)ìÑn¿ýv ¸ÆoØ/[·ŒHï¿ÿ¾=¦`†=ß<`÷Ôr Á>Më}ìß?üá#½×¤^ÿßÿûÖð´àJðHBÙ›{ˆãŽ;ÎÜqÇæÔSO­uïU"‰$R·e±”{¥TšêAŠùÀ×AJOÓ3¹Y‰ÔN`GÌ;˜À[¢VΟ?ß²FÄÕÛçÚk¯µªJÀ@^¹fÉøÔS¦ÃúõÆä \ڸȓZͰÍR{î¹r£îé…^he1š]µj•9úè£#:Ø5èê0K›ÄÐjÀêÚô^%’H"u[ž‘âê¼û\jªgž@•Š3vo¨ÑvÀ6á„3†¡L`Ìpv€@…Ka?{3T¼3Æùõ %;Ù!Èü@=8806köÔ¬8bè<ÅùàÌ€SÎ:¶v…ìØr…óÞM%®¼òÊ´Ù#8/„lÚçÁ‚ÓŽÔ…£„zÓƒ•L€]{EÀá/!wš°(D3Vìè0€:àÑ«W¯àK硇Œ™>}ÏwºeËœœlD ‡½ëÑà ݾ݌cÆŒ±àƤ×=oqOrØ<ÖsnQ@èΡY,ÜÙ#¼ŒŸ~Ù#x=ÞWŸqØ@6·ã–›ÊÂÁèiö„ÀËZ 8 ¿RÛ²GÔJ`7ÑbV–NV8”1aOG§oÙÒìVÐp:Ôيʘ>0fÞ<çàÇä£LŸ "¼°=zØzj“0@F½ÒŽ‹`CˆzŽ•4*o÷`• Ngf¥}ÔQGYF@4÷žÉ8*Ùºu«pa“™lœ×}Uîªvú’ܯªà®°`ûîJÀVÔ1¤2DDbo˜;@{7©§Í¶m΋þÀ#¶X} ûTr`*ÃÀ óœ£4-HÞ«Þ«æ ³Úǘœª,AÛí&%kWaÒgži&þ#îi:é€8Tš~¢Ù#Áâ!¼onÐV \ä™=‚ã¼Ù#Zû°ìÔ;Ï"ŠcÈA€æDb ˜ŽúÍo~Óv"ôü*¬ÒbÙ. Œ•3¹iaÞt °Ù& Ô'£G›UÒÞwdExÅúõæ£`ùíÔ#çÓnÎÜšöÄ=ªË÷9„v/¿üróç?ÿÙªu°£Ô 8JqOø¬n‰Ú#/»Í„IÀ- Œ’ªìüXË0pÀ Ë Í¢h޼Ç8é䬮c™=Ûö¥÷aeÎ:Ë>Û²ÁƒÍ­ šk¦N53ä_P÷ù!æo¸ÁžÓ¿¤¿™‰yé,hÁ^À\^,íòéâûŒªŽÿG©žŒÝ{%€»‹Ü{{/++ãý^å ˜ÃÜzë­–¹ÂT†…ªw>ƒ† iFæ½׋ڑgË}‡%tƒŸ\„ü®DPÐDÝØÚyß™‡zÈ'Ÿfž`ŽÔk¶ ÆP°jìØM'šŸõ.ûj.wŽÁ~!fõójYT½~Þ«ÔÓ‡šÍL_"©qá×Üá<Ľ*Ëg’àøLÇñ¢ð2wÞyvUÊ 0¼)Õ{4ßóµ]YÁYµ«¬Ø T6,®±æ'‡v¿!@çk2qÝ5eŠÙ9t¨9à Í?Ÿ{Îêô@<Âô5lX÷îsHíþßÿýŸµW¡-Ô7£â˜øÀf” ”-ºv5FÀ@Øí’çU`/ƒÝ6`€‚¨®W'X>X¬ ÇæÛ.ƒ4íaƒ ÌA@™·KßÂÞ¦[ùÒíÛ3 “„³)•˜iûÔ£¬ú;¡ò!56–¨ÿqf‚5_ºÔQ×¾õ‰#I>GMàëeâgÒƒ¹Â‰ÅʶmÛ¬G{N×[ƒß«ÓŽ=Ö4ûŸÿ1ÍqÁ½„•Á’ñjß}¡bâó^åØnÖ÷*@»]¤l”‚w¬Ÿ “2NJ™)«öÛ»ï¾k `Ú3€XÀ´ª0Ýñâß4^Ÿš£]¿‡S&Ç¡f ¡òL±ÐÀ¢Õk„™±" v–ï,”aNGŽi÷"s&ªõžç}Úi§YÀS¸zõj{M€EeaÙGÏ Õ7ê\®]Åm"uòÉ'[€Éþô7õÔe‰­*–‡ e‹-Åoû[ó‡?üÁêõyx±iW:›,'&-eKg'ŒòòÐÚ}CÚ.o€¬†ìäó§?ó£…¦–­÷9dÆÛ&#ÔgLLÈi2˜tÁî[ØØ@ºÇc9_9ÄÇžKSEiÛ糦á)†¾†Í+Kyƒˆ€|Ë€°`¿a·ënUªëªÝgê£ÏÂ`ú¨Ãîïùç­«UÓº&•H¯·&¿W¨çn¹eo­‹^Ø;6ö>bg¬ÚˆR½W´è½Ê Īë$e’”µ&å"eŒ”QRÊÓ(Ñp:p‹;“„;£‚;£ƒ;#ƒû{÷߀9?¯TäüóÏ·[ºïÜõ¬¼ÁˆÓÀÍË'ÝßùÕ‡xˆò®ã°ëèL$,`·b…3H–‡§Ùeµ =«èûg?û™¥Â禌¢£’@íbǤ£vp.[º(Ú݉=ÑOjÌŸÿìLl¨eQÁbÔæûQ»¨P†LPf+²Òï++Ç*ÁޑɆ”bÛQÀN2,ÉoX {¨Ù.àŠp,˜˜ ºu‹®]Æ-rM²1–½ñ®yCÎ&ýº6®yxÔb‡Ä»Vl)j»8@ÝâÅfÛ>û˜ON9ÅÌ‚‰>¨,3fb{ÌÆ30htÀ^óFMºÏ=—Ž6K^m,tTÕ={”›žGËm(þé§l£XÌc§§ b(¦~}ÛßùÄ+ïÙDŒ)ÛM|€<ĽJrÇÎ$ÍÈ'q°§yóm»dÇb7¨c Ê¥ åœióÆU1ƒ ÷=®÷ª¦ûôÓ6ôÌpÚ FÇž †©vB° Lü¬€}îy¶vQ1âÖ`uŠº `Ë “Õ·&±ûzkd»:ú¬–.Ƭh׋­¶­“'ïyÓÒØ€bçåç\ÀÄ£>ª÷¹Ôí6ھ݌xë-ÓLG›¥_\/cÔ™_¼÷±ÜKÀݬYÎbXŽ©úÌ(N,ÒÇfHß‹óõÚ.8ë¯)'Óid3D&©ñ‚ ^ÍQ€ÆD¢`ìP•`È©L‡û{lXéòÙ³gd1¤"°z=÷ÜUP,]ÎCwÕUÆÜv›s¬’€»D²° /¿lÿ\-LFXÀ@;!Ttún›ICßìyH†¯»kœ3&”( Ýk\»0:˜7ðPùTƒ†~½€ÊÁƒ ÖŽ>GìIÞ‡”‘·[0Þ@ªmÑž×kk¤¯o)ÛýøÝwÍ%ÒšI[[64Owïn–ðüüî%Ï‘ ôÈÃ#{æ  óE7µqe!³ë-´]^|ü|JøÀ‡b g’x"‘X;ì¾Ö¬qÂàTA¼7Œfyé½`/·CÚŽsšK*¯½fZ(¨ÐåiK ¸C…˜R}ØOlîBPËÖI™ã=•Ig+óÞ{}Ê)ŽÇ% 5ì ï2Ÿl°Ó¨œ4tMÁ`øêþÐŒ’÷¦‡,¾Ú¶Í¬š;×tðØŸ÷ˆ .€N»ð(—Ii»LÄ$ÃjyívJÞ.6«ÌnÌrô±<âÌEr½²ˆûlØ0ÇÛnf^ú [&¿@¹QÛŒ–ªÝÁdŽp¶}GëMeÁy®ô—UÙ}ó®³(f;ï¹>øòˆ@] ëeÐS»#À&! …›û\Ìve5žR¦$Û ¨ÁfßðvÅ™°‡#ùüÉ:`¿Œ:D÷e??õ2 pÃÓ4Ñ.æ Ä ÃVŽº€! ’°'ÄŽD~ùË_Ú6È Áþ ¬è“dÉà;=Éõ`#Gº0€ŸW¨€4L*o]Ή ;r|O]ªîåüóNš0v6ŽÍÍhZ@&6K½“^+‹´Øfx$uÖY6LC1¤Z» b,M1ÛMw½ c`d€ÍSÕ›û\Äv—…ÇåM›š]Ý»›z€dXçl‚®äÔS&w8eÞµí‹/f>0c­¡ødC}@'bŽŽÁºa§H³Ü.³qäMdiðQuÆâz¿û]cˆ¤kË3«ÍQ@]Õ˜ÃØÎb' ¦9e±H?­é  úL} »K6Æ7ÍRQQ£n]‰éö¡œÁ‘aÖ àó°"ÎÛý÷ßoÓçH™ßñ*Ô©Cû“éƾ€Dx{ÐæÍ.À¢ixÀÙ‚Rå ‰¹ƒÆäÿ-ob²†hL:ÿã#«àö½B 7BÚ °–DTÐxy€F B]ü­í†Ä9vA„ÞÑG;“"é´²y‘Ye€ä‰Īœ‡éζxÛýyQˆ·«m[S/ÂÛ“ÓõzÁŸ?ÿù^ñ·òm÷pÃe«àS¢SœžïnXXÙîøä³èÊ+sk×ãI¹ìÙgMgL Øk€6@“^͞ɻýú™Áè£Þ £¢òä²­µ UPê3ÑÄF`¥p–ºë.‡AB%‚·tl4cM@ç­¼Aµ³£=ÂÞ Öƒ@_ɰÄn65âwÂz-k—«’‚1 à0Ã)•*æ€òÇüF¨CɵJžØñØ4cÕ–ìOü:X7ÆZØ:âι H;ÄD`ÆüF&V† (’k6 ÀžªkÓçÍF0ô¦A£.ÔÒ*ùq®éRšÌòöî&x/È<À2†ÒƼ0x(iîº(EÛÝòÙg¦áîÝf“œóoP±©Ý@×«àŽ †A(ù¼Ì••fùË/›v²q…çKýdõ7=Mš™’]oXòÁ¦L@Ýjž(´]¹÷+``›d0ÔLJŒä0 Y€¶í À¨ù±QB‹§n‘ûc%¼¯,Fx_¹oqu*š“ú†Ûó¶3uŒ}°«Q‚ºtˆˆþ[Šiñä8ì¸Q9þéŠ+Laj¥’‘#óßGƒð¼øDõˆ-Ÿß¡†ì™ò¼` ÐÒXpîýÙÛ7 tŒœ{î¹–ÖMóÆ’y Ä8†6Ø•*Q3WÀ*¨ãÿ¨¨±uelç8?N…z8W6æeâP±ªZVKæ ØFÚõ³™ BÐö\`Ï«.Ji2OÔ«g¶É Ò€ïѶj•v×_ýêW–†Åü 鼨ì`uxò±™ mßÝîdÂÝgÆ ³KÚ=F&þbµøzaˆ`ŽX©0Øa¯ÐhÔ(s»lÍDl¼óNÓþÃMVB®v:wíjÊŽ8"^×B»Ÿþö·¦¥\ÿyÿ.”.P¬vYi3È‘-@·ªˆù¤’#×!’að”`#ÊÊ¢m7Ïþ_P»°˜Øý0óîbgà¾Çâza°ékŒ0³Ý»Ç÷>‡Ñ.L^Á˜Î»² (úõÒnß¾f—ŒIëdAµ[ƾú6˜2i·)±(|RGyC‹qŸÑbr+û'ž°Ý3¾tÝ6P3Ì`ÞîNZFÆ+þn%ó(æ,¨ùoð)æ_U¨8BÖHÿ‹§N 8%QÛjL8XB®¯RÆIêÿ@Ãä^c‡º—lØ÷± ÆñG‹™3gš®2gP7mÀäÁ qdIHºãØ}z•“F]’Ò¨bEVÈ`Ñ A‚è Ñà¡„ÿùÏZäýg™à@JÂmèÞ|Ï;ÈùºÛ=—¶ܬéÝÛ´éß¿híæu½L’Ø1 É Þþý÷å!ÆÇ Л²÷›0â…v˜¹[ÀÎ_ÿñ½Ú `¶ ƒ;*•»ë͵]îÁO˜/ËÊÌa·ßn¾Ø²¥¨ïU™´KâAeTå âcУÀBÀÞ Âc”z»_/ º`Õ¡?rf"cu½<UÉ’ÀG€C\îs¡í®]°À´'š.צޯ>ÁØcw½Øãñ\`¾YÁ ã$¥¶Œ}ÔïÑwï>Ëy˜ÿ‘m±ÔµÙn2(É&㳡o§Èk}i:-L‚ lWºxo€¤0™/T¿„ ûzPK£‚†íCýÛ¤@MGÂØåŠØu‚Ê`Ti‘gjeD"öy>‹áéân÷+¸Q«eP8¨ˆíæ}½5£26‡…±ãgåšJÝãP}ÛíÞÝX¥ ƒcœ¯7W¶®²ÒL“A¤Üƒb¿W¬ŒÉ‡«ÂHZUÌÝw:Á{abQ; !Êv#¼^YF«¬A'¡ñ}Q®ÀuÐÏ0â—ç—û\P»ë×›ñ:%ÄzBTsižUl¯»cÀúM"0°¸eQ‡‰×FdìÏrd‹ »^Œë,?§(¾#h0ŒYn M6oʶ˜žÆù*‘:+%v;Ðâ0Bl¸ˆ$OÚŒBÑå÷–ÕX« Îa‰»Ýú)‚ÆEˆ›Úõ²ºP°ò_ÿ2íÉc`°Ë¡Ý°tøç»3‡Äõzƒ;²Ü‡öçW’÷ ›B¯dTåÐ/.ºÈ˜ÇwÀž˜xÏ¢b²Ý¨®—Ð&0'{Tíza1`¾Y0Üu—ù©O¸¡’ÜçBÚ}õUÓHãvÂÔeˆ›÷*]»î°DØÓ‡45 Ï 7Ô”giô÷ù™4 Î»Oz‹¬ †]¼·#¨ mðÄŽ0%¨Nñ2Å“– ,ì‹ê;9l㨠Sœ-ð^ö¨8? Æn±ç¼U ±B`aÎ…LÔ£Y+8@‚j¿vç¤ f³±ª±¹Þlò Î"B·Þƒ•ä½b0v›1 ˆv•8ûÔ=êvC¾Þ“.´œDÔÀ®¨×‹+#Œ*ñ eÒ|–x†%¾Ïµ«ªr Õ³<Ë{¨]MeFÈ<y°w/¿l*07ÁÉ"Kîï®7@ê “>õ€jñâÅ6ÆÜ™gžiÎ „¬©c㙦¬OVÕСCm¨÷°ACì'4 °Ã>ŽÄ€.€Ö\ÄÈÃù}±Õ£ ²^ð;öndÄàÔÞ ÐÆõP/÷53çÊyrŠólÂ>Ο?oè+usMǹ`Bƒ×/êW€@PGdÀxë­·,¨쮈p.«õÀŽà…$Mæ!âa:²nÝ:ûýîÝ»­­‚µuP÷™ ë…ò²¯zHò2€àŽ/KÙDànŽ÷/Ù®DѸ\¯_¿Þ® qm~ðÁmü•#76WÊ9M—"Ê ÞvÝB*E»¿þÕ¯öV‡‹,ƒ^¬¯u² äÄŒ»X:ÿòTJžbÝg•Ö®‰;V·'˜!Ž'Ï#^;wšòTTùHÛ ñzkÒô4LcqŸseUo¸Átþüssˆ,XW¶o_Òûœw»ÄåÓœØr Çå½Ê©]Ï‹IžÅžô%›âRžeÃ#»Þí#v±üLúÀ~B¨f©…±ßP#Ãì{ì±UûtIcC pºñÆ-ÓæwØ•ÆÿÔ¬¨«U`ψCçubàzÔÆNr_h.ð‰è ¨;vlÕq´CÈ'êhÍlA]Ø êµw 9£Ov[¶l1Ó¦M³±dHI‚¡)Ô'`äÌ÷€4ËŽ¤€BCì¡OY‰h ’+óbEgR |òäɦ½ š|’­k`Eêxê©§lÆyz6ÌÖ‹š#Ì“´eu2ôÔSM”|Ž·]׊’IÊÚ.1ºPaàU"°+úõI]€ÐæþýM§ŽmòòbÞg•žŒ—_~yn¶}¨”x°Œ²ªí û¸Ë€ÜnH×[É„êŒêñ¾Ï¹ ‹Tò ?þ¸9 Æ ¶KžI©îsÞí2!WVšíûîk`Uãò^åÕ.6i„Þ­c±¤€6²v»`íÒ›ûøemPñ¯t‚ʶ_¿~Uˆ³ÉðáÃm|9ìWº:Oe öÒy¥¦ËB“Æ+šÃÛGØÇ/ …ß~X76I€]ž‚:ŒFñx ¡çÆ3‰óÀÐõó[T±)ÝF@Z¹|×Q&\:«ŠŠ kŠ·ä-·ÜbÙ^ÆÑ£G[`[‡}Àʘzñjäa2iç#H'§-Ú ÎzúiCMŸÁZE(Þv¯¿þzëÑsJÄÑø³¶Ëà° 9‚wQ¯–(¥rh~ÚiæZy/‹}ŸU¼ªœ¥2™Tæša¦§ ¹MpŽ!¼C–ó¥Ý¯wé¿ßd’…[ýòòøßç\E°_ÈBv¿ Ì¢ë®3/Ê;^Šû\Ðõâ…Í$(À»Q\ïsØíjœ»Nb…µ;2°™óéjPªÐÈÒ±š-‚ïa±þþ÷¿Û9V »:æU¾W;ìçhÕ¨Ãï¨8b s¨D™ÓI_öýﯬVà[w 'XpK—  Bá¡{óÍ7[æ öÛ>®°Xhñ¨¬0Ž0„\Ÿ;–ž·.T°0y쨭 z¸€›‚8^ T¤¦¶P•òÐ1ÆD¥Ú*W&¥2¼6å!±?¨àÆ~Ý»w·/íÂ… -«òÆoØxCO”ëþýû[&£PŽ£T¾î@ˆÞóâš®+€ŽÒ!šÈ5MiÑÂ4°µ¿¶«Æ®-[¶´ eÉÚEõ“Ï,Çêz±§!›€ˆ€¥%¼Ï0×,@xŸÙN>ùd;ÐåÜ.l !QP!e j»\o'™»ÊDøe«V¦^‰5á>çØîG2¹µ—ñ¯å¶mf·ìôøñE¿Ï]/}eõj³bð`Ó2À$‡÷ªàvåø]rÝå„ãÁ“6e:~»¨;!Ò¤ž0ôáq²¥Ï4ãŽû†*T³.à€CáÑC€*ù[v#æTT£h$°…Ãä G1ŽG­ÉœÊuðþ,1²i]2€‘ýSyÂo¨E•¨s5kZ3ÍZŠ”6Ùµ,ç ùÃì¾~8ÔAÚÀü­–wñh+`²?çˆm6v„\6†ÞlÊžwÞyö¨ƒº¸'n®„± (¼à¼HP©ûÊÄC\ iÁÃ…‰ƒ-±I†4`óT†ý–Ü|àŒýg?ü°Ýo•¬¤@ïxÙäx@Cµ»cþO[ÔQ^@[èëi—I“§ÈØ‹/63ðæ‹H¼íbŠç JaÖv5vÑ‚5ózY4(­?n\ÉW•ƒäݮڌðl²d µÝ|¯—þ#‹³¯Š0´T×;è„X5X¯ËC‰!ùõ¯›T|±¸^ìëRŽ[ªÊcñ^…ÐîvY¸ÛLH°vTÐ…·;žY LL}‡Ý6e0féû°;æ›f„@+ê,0Wª,Š\~Œ–Ÿ‡¨;“ƒ».Ô¬ºŸ{_Ä/kEº¶Ü×㮀èÍpèsÇØdº³\øÕ‰°hg?.¬äexy׉Äyõ(ˆŠª 5ëŽ;öP…)°·Y:QsVJË–Y›¼>}úؕД)S샀ÆÆŽ—‰\uLÈêÝ¢«$>YIä©£KŽÁtÝå|ÇwØ—h \C=içK™0oºá«îJÜíÂp’ì˜ )i»Ø*ÂÖ¡Îd )àcÑ®—Ą̀ÑY¥Éö„´YŠûœÎY„~Àb‡óÉ9™·«Q#S ™ð>6‘´›çõÓ¸±ùñ~û™¹Ò×ËB¬Xí–âz¯“1k |ÎûùÏÍ„¦M‹zŸó¾^rÁ²@EÎŽ,6Êqz¯Âh k¶Ä>)ÈBmwéhc^–maJ…Û£³$ùæFªÚ/„ÇvnÒÄÆû|Ú4³|çÎs½­çÎ5ûË¿¶l1»ÔYŠsfŒ©›Ñ*]SÀn…,¦–ðr «Ý|®·›|;e-f»¥ºÞÖC‡šýe1û5Y̾6gN쯷׬Yžî³vŸÃh·i*DÖhçØ>í6 ’Á"‚Äùf™ êÙt¹aI€]^q‹è¼ö8V†Ó§›ÎÞ:¬§êØ<ÀÇ~æ q­úö5­ä˜¢µ·cQõ½÷žé$`»SÜžQºcaëžxÂ~×èë_7ƒ=4¶çœo²¯(¹JSóA‡<ê(êõ¾óŽýèÜ»·9*O/äRÝç¼Úeÿ Lé;Dz *dœŒúz9¿”Vy6+-ª9÷9„vgc²ÀÛ¶-¯:äxç<<5´ž­Øk– ¼úQgâ9 ¡‚fŒ€Ä7Ýt“ ŒàíJ6 ìîð2ýáh³Uàl@fûì»t©Š•ç¢`î„y¿c/G84B¨pšÕ‚s¥]Ì¥0s!X0Î ˜eÑ&ç†hœZlòñr…¨Á㪫®ªj“÷ˆëmã±û¤B°¨cž¹œƒž6ð‚½æškl]8Zpo8;ï¼³VƒÚò’Ÿz¡JŠ›,Ny/Õ¡À†¾¢6'® “±VÝB³wy^Õ6Ù¦iÐjBDõÔ€¾£.%æ>ë,'Ë¥‹àD‘·`[¸Ãœ%K¶‰Ú(;7vì‰Q¡GÚª€Äj Œ“ !P?`‡ïpTè ÚÄ#6èÎiËß|Ǿj'Ç߀2€õø:§"!ªHÑå 9+lÈ$Î’8*¨³ßQ¦Xj›Hø2læÙ—MÕ£>j.ºè" ¶4 Çe»8®‡ Ç^Œt˜v¬ÄÐã:8/îç ¨£.ìó˜\3àô˵ °ËUDø4Y}œdíÚ=çX—…ˆ§XŸQ:ÑthD0//¯µ¦Ê6¨&<›TþÑu ØÉرR³ƒ›4®¢‹¶Þ½ëö8å"©€Äæƒ8®€©t‚‡ÚµlŽqb8õÔS-0óŤ XÖë1OÆÍì˜#¡ûñ7õ°ÿ;)–IÃvÞ+ØÁq¬;È0áNœ\/`ÏmÒ¥T{i<ƒkŸ¥´lĸÓ(ÔuL*0çº_ÄYoâ õK~€:€‰É).ô(“$ç£çW×¥¢Â …‹²1nèÂyâ耠‚­É²ƒ¬Ê4ÀùxôÅFRLÈWu ؉¬êßßt$Ž"ùdqBŠc-Î éÕ«n;îsQϨ°Ä6>@ µ% HS‚ÁRe ú[µLÃRvˆBP¹ŒÈî¸pD0 ï+í£.EÝë'š‚„¨=aøÜ1Ò*?obêAµê _²x‘kšBSœq>A³tÔd‰•Q‘z›.ŒÏQDź.ª29ž]$¢lAp눈ši ÔÑŸ„VF#Îbãöi ¯‡Žß ò\PÅ"u™±ÃûÑ{¶ŒÌ˜0*T€ÊšT& € ž_Z3~ã8~W6÷o¨$QßaÓ4À°ÚÀÁ–¡ÖÔl´A@c·hV êBUŒíûRÇb릀Š8´œì ÇeJÅFv ˜:X;ö×s'o­zÒ²¶|\#™*`ýìæØ{Dl i¿¶«a-èÅY´oï|®\/`‡$l#°t¤®Š£-¤Kì»X¬ãŽ«Ï–¦!NýÇ+Ä@Dê[W%˜` «J æÂ…"uܾ®h $K°.žœá÷þ?æI+ìÑT¥‰½ €ç @ÌžËé`mæHïuöÙgÛ\êÊšaÏv÷Ýw[ Èqd…Ða›§™H1¤-Àa]p¶`_UÙ¦¨°„w.ç‰=N ìíûΰwãwrÈÒ.¬ [m̹þ´^lç¸6êÆ9„ý5Û‚“¶w€;®U18ÖÍòÎMÓ“)@N€]±:TœŒ‹õ\**L"†x2ñ{F~§™ 6lFÊÒ7H‚Ú º0Šãí5HÏø¶Ö ¬?±I6ÿÔSÅÇöSL]fëÜc}”c\ž‰'.~AFnpäÍá—ñfnPÏY·¸cËÊTT ‹æ—Õðæ®O÷G¼ªU/°sÿÀ<ÜãøæÎf\|ñÅÕÎÛ›¥æv;>@qýšeÈ.’»°;TœTIÊ~è¤Y×¥sg‡m± 1EØà¡ ”=“è‘GÖg£vuqVŦ'L*E_ÒQá@p€ñ1"祪Ǻl_§àÆm [DìeOD*~Y-Pæê¼µâ¡°Œ0u¯hŠÉZ,ñX2ÆÑ3V'É$€cêM)ßcg§j급tزݻY²ùfa¨µ¢ýV,®Ï&1mpúF쇵‹ËX§±qv¼)–D¬Ž%ñÄM²½IåÎÆß7Èöz »U€:o¾Vìòâ&;˜@HÔĵ­‹°s{žÆEÕ—2N5µ\Ÿ× WŠ”«»éÛ·n2 NH˶mÎ'ñÂê² ìØ«b úz ¦re§ïG"TÇjâ ?8¯‰'ÂYqh n\"uSêǪC1)±•zå¨A*±ª«6A~¢Œ¨¸I*¡´Ñ¸auIè3ô&¤~ýâw~uÝÆÎ-ØÚÝv›1?îd£(å=Q¶ÐÄû?RG¾OX!ÃÞ¥xŸâü€Í¢ØÍš5Ë‚9+\Lx—àx€mžÛY/XâÑQìN ØÊê„xoät§.¾§ûï¿ßÖ*†î÷¿ÿ½­Çœ8§ µåÃŽ ‡ €)o6öË$›ÞˆëF]OEmæp€X2¹„è<¬``ú… !•Lš &Ìu‘ò <Ú\áÎÄÁ£m=æøã·Ì¡ L$¿Q¬ß¡©Àó’9ÚW⥊h¥”³$±þ‚',Þ± zqËrRo”÷¨y]fÔ)njµºÇÎ+˜5 jÌԩƼð‚1>©–жվNƒóÖu‰0R!‰'UØ4oæ„z9ü>|¸eäBº-?Ñ,º? !D`éL Ò›@„­K—!#h ¾ãÜwœC¦ ÇuYâÃØ¹=û¢Jœ° áðÕ«ãu^)cç/ë@@_AýÌûª©ðâ&‰]uÁÖNY»R,hûºÌc\È$ž¨R]j4›C&¹36`‹§jT­ ç"µKNÉ£>j¿»ýöÛ«‚ž“ØÀÀø–– æŽý½,¢[u°{¨vaîØ—s€µS/Z2V`‡G}Ø÷‘u‚`È~u±/ym™?N$ÎÀ.Nž}Ipâô¢,¦æ–Œ°Û\—©ù8™3$ .Øó5ʘÊJÇ‘¢Ø’Ø×eãBž‡†ewOØpØÆaŸÛ¶xñb ’ÜŠÝ™ì 0S'ìÝ4ÿ+6l0u8# 6D©Ühç ŒÝ@P‰ãÄßþö7Û6wÔÁþªZ¥>²Eh `êh-ó;6€ÿþ÷¿«9²[è¹cCG}´E;ªæšÜ !¬%ªYŽ=ýôÓk}‰|¤~¬ÎF=û¢JÂTÆ.½ès‰SX '0Do×Îqž¨«óòÁñs Hœ‘ÒËI'9êXÒà±8)æbR‰}ÿ)‚~”gâ ‚Ü™'¾–Ê=ììÍÜàÎá¬éºü„ÌÞì|çÍø€|ðÁ6¥™[ÜmºáüýYeeôm*ËØ×Uµ÷ÙiõâÅæµ{ïÝ Ô©TÊ3ð­ˆkVŸDj”Ä‹±óæ¼,…[b_€³ê6¬´çÂ$¨“óRv¨®NH,H`~XÅH%}*»ÀÔ Ž•Éß̘á„B‰RÔù)±¯óµ÷¦/…¤½™! ½2 hgŸ±—VÏ=AÖ U•â]Ú¯_?뙊')^¤Øœà·K—.fÈ!6'ª[Âqx¸¢:Åg ¼eñr%¨0Þª6& ž®8Uð‰cáNP·âI‹7*Ç zÅÃábVØ8uÔsÇ9çœc÷¹âŠ+¬“Çâ@á aB\:öѸw8Mpz^/¼ð‚='œAh—ó§.ÚÓ¶©.å±;£R«“UlvQƒÝ8¨ü8VÀīɃî8©c»#q9ñÎßxÈFœºY”%öué%‚L.AظU<ÚqØhê-„”^!¾#¨/N^P‡¨ó€5æC=d¿¸êþú׿Z/WÀ`‹:ÉNxâoÀ#B ²>m ¬8@Ǩ—-@OX¼]i„Rñ aKðlå¼ð¢%«„žuqQ0Ëõ]yå•`&R“€]© À`—]4glÔØ$é ;‘=5w\$±± &8Q°°…áÄæ.*Qûº$~]v‚!ÄyhW°žnB—³ pwöÙg[àƒW(,1â°oãw€Ñû:&z€`È/sŰaÃ,c€Ã3†ýqP`Í@à ùyÈ~¶ÐÍÈ6ñZ%Vm/ðÌÔǹ² À‘ßV…ëÔ0'|Ïu:Ss27g“ú±;£R漤S¡f°KìÒ ÌvAd(•Ê\þìb× IDATeÉ’½M]—82v‰]p9ýtÒ 3qbtêØÄ¾®$ý¨m·nYY»Öil»ñüDÕ ÐDíÚµËÆ„C (ìLŸ>ݲbãÆì¾÷ÂŽÌäTŋԛ¹Â-šqf•.!J>ùä“*pˆp¼7ƒ„_F êÅÓÐ,~`S3NðwºlZj^»$Ù&²K¢ŠuKâ8‘;3TêÌxæ" c·÷s‰ ×eÞ’ØØ—>}œw0Lª±(Díë’>“ay9æ(˜O&FŒ@Ä ÜPŸjf@u`›¦™+t¿gŸ}Ö2€šY‚8wº?uªPIÛ?ùÉOìþnvÍOPÙ¢B圩G³\À*’a†[<‚(óŽÏ?ÿ|ߺ®¾újÛ.õñ™HMv¥TÅ&PpQÏØåËKw%fÀœÐóŽDäÑ—·p2"QûX»Tª±ú©ôO¡>es’>Œdi.ê5l˜é›Üñû#F¤ý ¤€E`^UOÂt°oæM˜fvÀî ˇ™+h 8ÐÜzë­ÖQ' ö#P0LY Ø[>˜2lܰ›„‘»qg˜Xj*2@ÇrN„DÑì¨~UŠ ]£Fl}íÛ··Œ"‚ Ö‰Š…}aqÎH²Md–ø©bu¥¤S1A–²„ªN$½¨'×`Q…ç…—™ &±”§Å}‡ ©Ô“w¢†Í]pN’ ÌLŸn:â!{ÄáÕ­öuŒ«É6{?RóØMbÕµ”±sö¤IfSjáÕ\žÃ€1cLaåÆ1w ^€Ü5×\Sõ€›[YšÙU¦‚&D!‚mœ».= ¥³¦âθmî8ÎÏŽãÜÇ"îL\‡·>vnA Ë5±%ô^k"qvºRÒUÌÁGíú’•l°É!8p©2P¨Ø•V'³'µXììljüää“-°kûá‡á.p“4bÁ%"{ïzšeKÌÒ޽]Ï=M‹þ=3‚º¨PÖÌM€°(0yn¶¬âÍfÁߨŠQpÀ6ÔK"Ev¸O»¥ÿþ²HÜifÏžm¶oßn:wî¼×ïsæÌ1ëׯ7 p¼`R+¥¥¯½f–oÙb_²† Ú}W¯^m–,Ybš7ontÿjÄæi×®]~'žØØ—–-' YÉšï=/D4‰yÇŽÉóð2 ÊΔZó†ü„þ4t¨)pg~ؘK. wñZ׳´eé2„ ÉU¦ÎŸj&Lž`vîÚc··jã*óö‚·Íø#Ç›#*næ /€Ãžµ(áLJ)Þl<¿\³‰øK$K„Ž2Ñêú/++³À]þÈ‘#ÍG}$ ù U/R½zõÌGa^ýu³cÇŽª•ÿBOš4ÉþÓ¦MfÚ´i‚»*ìßóS;u©ÃÐùFÝO&¡ÜDp©„ñƒNž…ß„Æ.‰a—¿œu–ÙÕ¨œ‘Uq8u*Ë0vÁH!õ£Å«›{_»w/P§Bàb߂х"èï?þñä¹Ö‰„±ë”²¿š7ož5vlРAU<¤E‹U9P®§všwA¼gÚ7ib€V euI]iBc̉:¶î¥—^’…g/ ‰…C]»vµuvØa¹ƒ:µ=IŒ¼ƒ rïK’Z ¦pýz‡5Lì·ö–s]æ,ªŠMžQî"÷l™Œc]§L1fÂc®½¶° ܼªÖM¯î¿Ý Ø |‡Ÿ™‘=óû\:öRßßð&Å V½Xqt`>$nŽÌ©îì 7Þx£u„`ž$&ó(NxÕò7ÄÙ¼êMæÑlÙ,Ô)‚sÐl´KûšÍ§êvg³àXk6 XBæõtÙ,|LØÍ A <®}ý²Yhv ÛÂtÙ,¨‹vùãjK6‹Èlì`Ôx€ÇwœglYkY¹V­ZÙÿGÕ¬¨W9nc ØéÄÄ÷[·nµ¿ñàyà|·-Åð}Ó¦M«êø< ‘&Î]¬“©Ø¢ÏX8Ù[°³#¬lj)ã•){^D»R¾”²Y o•Âç’NKL™”NRÚI)7ñw¸YݧéŠç9ñÏÈ6ò8ÌKŠÀÖq¯gvœi>7ù-öVv\iö—ÒÚÄx2ð‡¢/·pUzµ/!Bð2ÅÛ‡<\qp æ Š˜v€5Rtá½JÜ:ÀÊ#Ädò€:ì츳}T  iÔ¶•rÓ+ëÕ3å)ÏX¾Ç°” ¨€}˜:þÏ>ºo^«Ye;"˜h¦užfêI ¥&L(;DcÉSp@úõK@\º `Ç„TJ`b¿RаHÊæTá»Í®’Q:3Ã8ö¿Í¤ðzHá³›”Ø‚½ñã̈Ƽù¦1G•¿‡¦Ú¤Fd_÷‘”û¤¬ï´>ÿJ:9Ïhˆ”S¥”à…ØüT°¹ìQ›8,À ðˆA?°w{^ñ{iËöæ2VXÕìÊ4Î!Ø·p –yÀì1yØþh0sZqg³ ¨0¬^½d³àœ½Ù,¼ ÑlîŒÄΣ­»ï¾Û‚±ÞžE õ±¹ï Uś͂Ð)Ìgm’P€Ý‹RFIi$áEƒE«p9!lÙ²ÅFÆ3fŒb*0wëÖ­³Ÿ¼`€AX·/dk%õì’‡Gü~GU ‡j——RU¾|a󨃗!g‰Èqbª”‡¥lî°Ù¼'¥‰”þR†Ié)EïYî š-jQ*Š%jМ0¬éŸû½.•„dc·BÊíRVuZ•u_@ýŒÏÆRøÜWÊG?2[462ô[8/UT8¦‹#>韱`Žçu1y²£’ýå/óóB×ÐD!Ob•Rž–ò¼þ®WYÏŒ)#“KîÓËœ sÌŠ}W˜éRàý—žEMïGÝÚvËÊÚU´6ÿh†ÀªDÍ‘){ƒ[G¨9É‹|ç;ßñÁ´N6 Ào©ç¸³Y9×°²Y¨Z6‹H]AîGmÎf °{LÊ)ßr l뼘ð¥/’¢fýÌ™3-˜k,ƒ¿º7ïÀÓQ€Ý’iÓÌaòQ×vïÞÝ,[¶ÌzÆâ;|øðª: X[§XÜ¡KÍØÁÒM2Ûìa&[Háû©©Â„ƒw¨î[SÃlû°ÝÂÙÏVL`§ªó$z~z¦Á}ŸJ%xL#e’§/m—ÒhW#3¦Þ ¸ÜN?31n3æÏ° àc”R–KY(Õ!ìŸì±ð‚ÕkØ¥¡é%…>\9õTlj„_„ŠÈ}|ã] †¸b<»G l÷þ)íÞkg|h~vA'Ó{Ho󦔤LOÕ“¤0^–¤ÉœS¨Œì32+°cŸLé™gž±vlتÁh1_b+vóÍ7Û ¾¨gaéÒæIeÉ=lšqÂ+d³ ~€ÏšT?†#ó^³Þl¨HÝÙ,`qˆôf³L, d £§Ù,`Ϩ+SŒ:ÍfÁq`êk n¥>›û~¤ËfÁý£]Î=Sšµš(e»Eò9ÐÒä±>™µM`´ÿû›£–eï ¾B縱 \FÞäê, n­LÜ‹\Á<`zªŠMWG.Òÿ_ÿ2 7m2säÙ! ³™ßj¾y«â-óeý/MƒÊæ°e‡™¾«ûšÊ²J³ªé*3¯õ<óYóÏÌ–†[ö`$Ù¯Çú¦Û2„mè&¦¬F¼@Ý&O6m¤£~>t¨Y>hPQÚä9ñ¼v4mjæ¤Ä꺔ïÚeÝ}·5i˜ù½ï•ì<†Üq‡3^\xaÎÇî.ÛmÞéøŽy¯Ã{öï~«ú™Ã—n¡(d}ãõf]ãu¶®i¼Æ~î*ßUõ{óÍÍIsO²Ÿ¥²xêùüófwy¹ùଳr§è£ôÕu½z™OC²%Z´ß"3¥ë³­Á6;Þû鱦ã¦ðBqïK§wšnÛ@Úoio^u°+‹1F6Ø¶Í ˜0ÁìlÜØÌùïÿ–÷пM Aä×0“?œìûÛ°^ÃÌ·G};­)ÄÙ&p&D)`AC{†]6cšeÀèQõ-À §¬ögÌãdŽÀÁ{:Ô­:Ô°85 òd^Å‚zPâ„€-,õñ‰Š“ÀÁ¨lS+9´‰] çÁ±üFûœ?mb#è=»Ïãôœlù8Q'Ž×l´‰õõë×ÏÖÇý ·:[Á+íóŒ" eìR2hÈ ó¬”—¥°ê…y:QŠ`ç´+hŽÏذ¡ºí6gÅô›ßävl–ó®v,¶|xü åeÏéØ ,]?)ã¥À.ø c0KÊÛR8¶Š"–ÒGÊp)0y³gÌ÷zÃ<–xGÒѬ­Û~Tœv±5ºï¾jmåzC>v­”Ç–?fÎìx¦iiZ†Ûî/~á057ÜàËDG~½¨è¯¸Â1:O¥B z,ìÜ]RèKŒ!ô£#¥û­’²XÊý_Ýoj<£ŸJÁ¯$ïï=ï¿Ï»ŸñXú(}•te‡¶\Ïy§ÌK^—û9TÊYR”Í ûÑjÙ‰RÔ)ƒû?F ÚØÚHßgíGx%û8kåÚî+¼b&ÍždÖnrÈÖÍ[›1ƘQ}2gžØ}‡Ø”Yµ®;]\ÖÐη͚YP ü£kœªÉŠ*–wœ^:<¶dOJyKÊyR)ySàÅÙ ¶¨a«lé¤0М,»ÃLª¡ž©‚‘ðR)ïJAíÀd¯*êêÚ­«i#uDìDƒMÓ–K}CÌ8aUä]¦Í#÷UÓkR¶wÜnÞ—rŽ”fDx ¦¦ÿ`XŠðyªa™¼ÿ.PºDJ©Þýv©²óýfÊ!S¬Úö&)?’R’sB%Ë¢š…/[Pç!õ\/Ðt[ÇJá±€Çü&Ôw6Íü24U>òŒžÃR—r¼”Ñ&BFMч*;/üž-˜%;ÊÌ‚¥+RÃXù®V§¿š:`Ñ:ä©î÷fœˆRhûAL¡;5Zì\ |‘:ßCR˜o‘‚]“VN¦7gl”Zíëòpœð²t0l v¹¬è¸º¥ ûP„Íð}Üæcsƒ¼÷X¥2ÀÅÆN(0@-$ÎVPQÇ Bz„$ö¶Ÿmï9  ¶+LøH`¢p6RvÛý=…ïHáýɇ½«&š©Tvvy8N°¸áYpoèKH)™]›K°íƒ©ãÜè›’ò)œcQöó”Sœl8R ÍhÔ(ûø†ãÇì°{c\ç]í …±ž1©˜Ò/U`Q!˜kw,’¨8ÀÚC†ÒwܼRо©SçËc›,ÓÚÿªUÍÛo/0ãÇËÈsäAiÅf¬&ˆ;§m®âÍ8¥àdY[³YÔªóýFÊó©è™+P‚z60(Ñœ±Q'3׫a,êS ‡QŸ º…ãR`÷ÜòçÌÂŽŽ7“ÿ#R†§Jà#'È©¬@ÔáGúªŽÉq‚ÉÁíäòzª"å)aLÞ¨“`瘀֛õUý„wfÍŒ5æ«!_Ùw‰s¹VJ(ìÞŸR©orÌËD­ž•#¥œ+%NáGè×ß•Â'ïÇmR`yŽE•cŽ!‡¢üÉ'm†Š¬lqqhËÛ  Ø!¼—¼Ÿ¥ôèg k s÷ª´sÚÍ1¿”ƒG¿Um\H‹¯6÷Þûšob›yB_‡ûY/‘Dbì”…ÂÎöÊõ,:+r&³@’Ê9ã ª½€àÑÏ–îÛR¢`nC>bÎïx¾½‡¯HÁkï¥T¡m¬hÉZX;õŒع3„4*üzå÷JApr9·ó¹ö¾2Y¼—*<€F¾  ñ9)0±oI™UÀˆ‡&áox–ôúH(ì]©=c58q–À®°swHÁ³’ûK_â~ÄUx&Œo“¥ 2þ–Xô¢ÊyçóÛß:vsÆí‰)™Ø!y0Ü'l1(aZSôkÍ´vIæš×>hæ·žoçñ¤¸Ãpå-!õ£gž™‘=ó„ìsé¥c}ÓÌîÅ3öôÓO· Î $ÆÙ@³Iàø€w,Ž\pUã¢âd_⺱? ê3±ß‚LܸY³fYµèرc}Y-ìè8ŽàÁ8@p¬fvÐŒ‹“…;ã^¯ÖŒš!"]Æ ,@5på@;yÁ”Þ(EA¬)€ 6nŒ Â;‚ ¨SõÕRüX@ž'¿ôÙò¬•)ÉY¼©ÅŠ-B1`³¨SÇ„8ƒ:œ9¿#ý¯¨Ò®1'žè0q¨e3†wßu>s\ta2ðg)€:T®×H‰¨Û {Iµh”í£Œ“,ÃÅ9Àaó_]§´"†°ª:P0èEí@¡ê=b€ VòØ}Â&ÃÌù1¥G¦ *RÞ& Ø ÔâØòN+ûD~ õÂþå«blˆžÙÞ•2µXÆ6å?R¸OÜ?€C Ð=€;À7cÚj)gH)Šm }/YX ¿ØÕ«öV5¬f‰ € ëx‹nC‚mí}‘Å. •þε±ÈÊ9бzÆ€òvݺµÍÊÚUT´.`h\aÁ ¬–‚!g¨ìicµÁ¬Ú5.jNØ6¿¤÷îÌP~BÌ8˜9˜±L}3eœàût!Òeœ€ÅË”q‚ã¶ü]W3Nì™·J L’—D=•1¿£×36J ¹ëêõt)quÕÆ)Ø.¢úSƒnXF‚»^'[™È ×®]ôì*ïõ3A˜úíQ)¨­1†y "¨xP£þB 4 “jð;†Üaï3àœÀØüüNÊqR a:`®—§zÎb´Xå®vU¥p ðqž@E0æ>±H‚}®‰ ÎýŒès\Àö® Õ_.2x°1¤lÝj̽÷Vÿ]Õ°¸Jëx.5Ô¹(ú+ï™.ÞHM‡W³;ÃHà~T€YÐÈ‘}BÙ'“à5€8€Ž/cGve´P‰bû–IØwt*°µ‚&Í8¸3NPŸf³pgœ€S5,à f»9ö‡EË$šqVŽz”aäxìaaÿP#«š9]Æ ‚(sõñY¥Þ¯±nÌC–/_î"lr[Á0 ¿½ím³µÁVË&µ7¼Qñþ") M*fmwÊsÕTíX>AïÖþd@úUž¨;¤`<ÜTJÁíFtl™@jX臛>4k­5Ó¤ì'%/ÚœÎVˆw‚gtÀÑ\/«½×_7¦m[c<ÙHr9g@.ì ÷êÇR”Í zÎÜGî-*oòaÂÔí’B}„I!DJP°’­]ÚTòì>‘²D )üÈZyýÌç fðeä Cù; s€í¬RŠ¿³œ+sR¬~”ë±€ 0D‹¤°h%'4c]äç hC%‹)ý/e¦`:Õ˜M›œ)­ZjSÇ:Øá8u¹Kß¡o6—²,UÐnЗ˜¶.ßš¹]˜+`D=jÊ çÜ¥Kk©f›õŽõ“aÃz™qã†ì•QÉ+ît[€&e¥pœ€0ÁÂvØa²žÚ׬ZµJ¦µö7öýæ7¿iãå´ˆÛ»‡ýÀLëF=éN Ê÷€3@£fw 5jQÔ¦S¦L±mÌž=ÛÞlæH!Š­9ÞQÅ>ùä“6u(voØÐ}ôÑæä“O¶@ßHÊwÎë|P•ŠT3E – cS˜<ðÀ­ºpɵ±ÿ‰'žh*õÌh£±¹½¦¾}ûÚó¥>îêéŸýìgµ ØÕ/UÃ]6t1«›¬6s¤dÜ£öŒ `àÍÊfqßíûš6ÚÔ˜‡KÜÀqóÆ™ECYµl Ð#Q{á•ÇÀ·dIt¤ï@ñë`½þW Œ lZ!q¸4À4Œß#Ë1ã:Ë)~a>ìLáƒRPÑò<+zUdŽÝ³ ¨ƒéŒ:зw"ô1q@U‰ðrÞµI`·`îpãù0f`7¹p yrÏ=Æ Zc‘Ú¨‘)çþkŸ ÈpëXGܾ6õÚÔªçƒzÕ9‹2%9;Uzïß;{?rAy ±ê:uji&Mš-SϦÔÔÓÜŒ3ÀŒÕ'cbRc©¸ã¼¶T`©”©rÜ]sÍ5 ÙÅ:Aì5ƸÒm¹Û)xtw¬k‘í×Ç⸠ⶫóòJîsæ8÷urœ×&Ïý;ÀÕ§rß5,×$ãDm L¼ç]/‘´ÛâL€Jû§•¨=c |¬Àò Æ)®VPA}ŒA1*ATExºeTç#Åp PubÀŽP°)¬à±µ e^•rÈŠC"u*ØíÉÐmUKÈÒK­RZQÃï(Íüdk*ør“½c‰Á” ye£©ÂuÁDòN`çŠÚ|{½íÑ7¬!OÔ)«fŒm0¦,Ž†Ò±Žœß5q¬ "Œƒ,Æ0`q‡Ìm=7s?R³ þBÊO¾ñ |¼öšušØWÙsìð‚®Rc.¼k³àô¢W#3dìGîÒªUy·9þTóÄ7™yóÞ”.²Ênüýøã7øŠ&dêNâÝUŸúVT… eŽ9ä« K8·hê`ê.¿ürËîÁøù9k$À.OiPÙ ÊÞKW‰ižBjFˆ “›vÚ,ƒ]›-5[5ÚñJ)° ßÃÜáI•ÔĘ–-g…Ú\'˜—ýGàÃ¥hh ‚ Ç2ïnŽ‚Ñ~½ÊzÖÆ/#p(Vbç&5ÖÞÍ7ß\u^€MΕ,Ù*Ãy\YÏ?v^H üŒƒžv¨°UIZ_vI;RÛDã²Áb±R%^Vg–lŒ]TÌ>«íëð~U,ñ£0Ú'ûÌ™ cBeeqŸa—MŽmcƘ\¼ßLî°h7çÄ|;õˆm¹­¥©+ ®ìW¤±$Ý2tèž1Óãå˜I´ï×3…Hú‘j‹òv~*Ø\öm»þúëí§[ÜYK0w^»122œqÆUyT½BØ@Â'ÿ‡Et‘VÎ B…º‚7Þx£”nQG @™Kû8fuŒ †]:û^± šîhjê’ìÔ|EËH!÷})gûËáëjk(šPú‘’ «WçÜFŸ>#óÞGÙ-@’f{ðT”¨=5˃WM™IPIr,ŒBÌ8‚x³SðÍØ çE[^æ  ÇqdƒÐxsì0¥^Tµü ™¿•ì}\&!Nç‰!êbŽE`ð`ÕúØ[»ñãÇûÄ‹/¾ØªvQ9«_ìBRV³Y]˜ž±î¸^mÚ¤]Á2"¤6Ùeù¿åÖîî»R¸Vò Nì91xêª*¤îõÆëÖ…wr èsŒHO_RXá=šS‚Z8Yîæp6¯ŒaÌ~ddà2æÂ g˜?üÁù?l¿³|óMä‘s…º¶«éš}B*¶g¬G‹*\=[}Ùªèï7ÏlÆŒN…DªÈ[Zmkeûן1@Ø wïjq3±uue¬ËÖÔÉ'ã\´ wïÕ^½†™¾}GfüýÀýÓU(V •( ì/^lL›;/iº®»î:ó»ßýÎÜ}÷Ýö;Ô’§yÄþ”)s{Ř¨Û­šÄæ Ç ÚU`G}:ó6vä¥-lçp´PiÚ´©=VŒßœ%øŽ¿ù›;lßÜ*_ÎMY9÷ur}äž%„ ¬Ÿ2mØÈ) ‡ýõ±iÔ¸/»³jpþ¤+ÃþßÚ´©NC%ਠ‰=«Fߨb^ÏØ°&ŒŸF55K ’VE\ Ä3!áüòæËm (T³…Ð |`š„ ìT ›Cû7¥ ÞÇ3‘8UA=~]ØÌ‘DæfçyM˜+YB„x51üŸïÙxµ¨GÆD«¢%´ â±Oc†~Iœu áÄ/ÿïÚE¤ŽzÆ4cÇÅ«ª*u“”‘G%;R,A…e…¨¬ìhfÎdÀîÆ‰ÎS Á¡·L'ÇŒ:ÖÕ¶l ¹ÎEHF;c] -ÎÏùÈ#ÇË{×ÉÌž=ÉlÚ”2MhÞÚ 0FÆ„QiƒX!°\ˆŸ]š_†7˜Ñl€&w6 ¿¬¨d½^¢n Éïé²J nõÖç¢î¶½í¸ÏÍ{Œû7wÖ ¿úw¦ vû>Àáí·ßníñ`‚äö—‚a1qZ5€ÛF( Ã%ˆz]5&fÕN*$’eŠ&·ÑÑ›}þyx'¤'R¹‚³bv)ä»DH]$f@iÊ”®æÁ÷s¼jØŸÃÂÆ‚FZÏz˜ - ›<‹€=µÉkÚ´ÍÄÆ÷¼âh74#`.³éGgÓ´mKS~ry¤öA…°u–t5ëZŒì è^zɘ—_Þ“Cå•W ÇNØ·€¤VABÞXvq뺘.uØ‘® sQZ’!„Ôbýú¶Û֭޹B“&-jݽċÐwÜ¢²E`î0'À.ÁX—ÎãØ¡C•Ôµkx“O›-ìêâ*ö`)û|µYU•UMΩšR—î£È$ ¡ƒh@û:lQÁ¢~=Üžõ5˜8Ña趦2‹(3GÀ~! ½À 2yççhq¦Ms/m[·6±*ÞLø r¾|Âúq‹ŒS_ib:ŸTa––/¶}h˜_¤ Ðâ^rÑQz€ùØ×©Gl!¹yƒŒëþcÌsÏítÜw4QkÖÌ0;±ªuž7#~'œà°xQ:ºÅPyÆ-]Wcï2Cô¬Yí­Uë–\„ °v‹S…8«¾óPÀnOŸ®}€N¥¦$غC9¤ÖÝÿX;À*?Ø!ì¼21A–i Ø©­QXÀ C©¢äcÄøA( õ@}T¯+ ç“ÿG‘b‰‡|‘·ùØÆ¹Ó´;Y¥]; "ªWètÂ…³€‘Eû-²“'Ï rº B‘ ~Μ=øó ƒÖ˜Ñ£ÛøªYÃê…ùc„îÞyG€³b.Çsfh°?§{Æ×_¿QºD Óky?³´óbÛ‡|µ{8Ïul”ÀÎÇ#V»¨R‰q/1Щ—KH7UwãÏú㢋pýä“yì1à|2q¶¢éO°à¼“ØÙ±ˆõ %ë8¿ NbÄ!‡Hç^ãDÚÃ,w±DÌ—˜Ô¤y“x¥€:Æßg¤Ì7ËÖ¬vgPI$vy Ú›#k_ãݰ=c³'Ö ÉÅRÃê@¹l™3Ùpz{BŽ9¡42@@@Çÿß²¥“éÕ+¿Ý×w·ÀŽÀ¥„ Ì20“2Úc‡R(°S›0êÉ2ã qr·Éöo<|±¯«ö\]:ÂýB‡Zî£Ë$T<ãY.‡Io×®åfÈü˜¬ƒ^iÝê7䞟51s¾Ëb9Pø'þÌ8ÞyõVò.ïgÊÊÅ: P ˆ€}S@G:îmºº1M¡Õ8Œ-¯*Î-Dl€ÝËtlÞ쀔ץà'`§cª"ÓMl¬«›Ö¯÷‡ðZ½z»Ù½»‘½·lŒE¼‘#‹gט¯p 2Ú«bG¬ƒtÏž&‘D`—†b¥°ÃÈÚWàòŒ-ßBŒ%µ±K£/ÐäQ8N0(0Xå2¡p*~qcf˜•íܹQ°R »@Ôo˜&È·ƒouéhæÏ7æ’KrÏÆÖis' ²±Ûâ¹ùÂè°c¶%Xj!:.àPÒ†}YÿKËŽŒ–âfs`Ƙ´'òØ™hFŽ>Ö\”RQ±Ñ¤Ï_ïaêŸÙÀ¬-[km }™±b9PøxÄ®1Nø›å3;˜™3[Z'Öœ?§Æ'¯NP°ÇÜ HWEŽC­š ë€cé¶×ðZ^¶/ Áä`WPðDǺîÆÉ)ËX4mZgËb–ýÆ&@C2‡5—>CîûŒï›†XP7y²ó|Ϙ|°1GaBeÅGÑl ÅÀ®5_PÎÜÉ€-dZ;;5 bàN€]" °K/„=Øáå ì\ž±ÇHsÛ¥vj䬃]!bí ¦v±ª"9¯17‚ ®m[gœ`äSYÿ3æ[÷ît¢öÔ Y¢€¿Ÿ~z§\nóç?;ö]#F?o¼Éá;]Ê)ݘ1fûo˜F P\Ï9'ÿ›§ÔZ—ìFݧ#8L°Xà>ÀtèÜ-€Ž èååµ£Æ<öX#³Ïòîfs§y–µ#±yÚÅQÔ©Å<6v, °+c’\÷I˽ÞyµËrçUç{7vZ|j_pcý‡rú•‚ÓNrÞí|A:Ç P¯ ÂØ¨}^¢ì?lPZÐPѱNÇ]Àò{ïu¨¶Àd\:àÀeH¯]üXÓ±_}ÕaVY`±)‹G?Ìźͦ‚AÐíO ÎB–1ŸgÄ}QÛHÏjÊù ÓA,‘Dj#°ÓA%cÚ”gì>©€„³@iF'&#X´‘ü3 ÑûïCfgžÛcË `Àárô3€¦1ý`ÔÈÙüÈýö›m-b ÊQ51(ÂD]-¸v¨c5€qV‘‘uáÑG›>0v¸ ýžet^³NÊ‹0K"sž¶B *˜î_ö3ÏOv&e8a^`ç¢P±•Z%Üê-3å"ØÍ—â ìZ¼$j·•xlì401 ƒE‹œŸÞÌ;ÏÅé…SÌ•LÔ^°Çû  øøãÁVKãÓ³•÷‚w„ûù⋎ÝÄ3[EE/Ó¼¹Ó_ó}°×eLá]M Š,:Ö2žŒU0äôÓ'"]!ìLêYgsÆÎxøÖ[(W{S[Þ!Ѐ¼a Ëß,bý@$ïÒòå;åÝhP$œ ÐO½„(b r<€L¦ï3ÒRì©‹ÀîÃ?”W!¢“Bh¡ŒÜK–,±yßêÕÛËjŽôÚ5Ö˜úGÔ7Ÿ–9øÎ­;ÍÌ™3¥#6°^+ 6¬¢ÀwHŸ'Ÿºô$Ô±^fq\¬ÛµkØùˆÚ){*a‚ÂÛn˜s³qdðÚ×NN\F1Á4+í{îqB@€•¾ÿý`v¿0v ú¨0üêH²úñ[ß2æ®»Œ¹ãcˆg”«Á¾†æà¸,F‚€O¤ù¼ƒÍõw7¨ºÿ ê‚1íäQ[…ç;1ùcy_Ç>“ÙÎŽ{É}’µó¨b5•X“m­ís©W¯RÀB¹ítUowe¾ÄÖTmºødBwº2 ìpº3&Ûu@ä¸qȃ½ƒÅÃŽK‚…‚mÊÇÿ„1…‹<£8;}W`©èçMtº\÷îëÍqÇ…kÇóæ=eãõ#Z ÏŽý]_ûÏÝÏŽ}qøÏ¡¶g½§CÃŒ³­ ˜ Ž÷…÷MãGò\Q|[7“º–gôŒ”´$C±˜ïD)%°cÐõÒÝ/ì'`·zõjéhY7èùóçWE—&  mäð‘fÒºIfmkg5;{âl{«,¿ˆJ=vìXó¥€2¾uçoÚdëéÕ«—­ƒÔ$D~ê©§lR䙀@–ð0H/)Ù„ÁCð«µ'qGµWu!3PçÌž½ £:5j©ºê*Ç~f„, ^˜ÝîÕ1¸ÞM•‘fdðF™¹9Œªÿ»1W\‘ÛL¬‰ªÐºéãEa'&þŠŠºÑ‘-°»¥»)ûªY[?ƒ7„Y”™³mÛhNFuc)m¥qœ5¬sXëN6Ë‚-}ÿ„!bãõQ¡oÁÜÌž½L@WgÓ®áðxUYõ¾ûÖšåË[[Ì ËÄÆ­$пƒÚ¯2¦ì2çQÜjX®Ms¥Ì§C/÷OdØ8lñèî••«ìïÞgîq¶á#Œ á r¹7¾Î|î€ùë×›D©•ÀŽ Ðt>€ Ô}ûö[-;çP¸#Ol]“Ô O.·ÓN;Í~·ÿŽýí„ôΦwL‹}ZXPÈFòcòÁ-¯¬´QîšÈ[÷ÒK/Y``<餓l]e)G‡vXúÖ<i&6 Í€¾WP¡NB˜s3s¬&P¸Q†ÌÈW$¯¼Ò!Ðð°»ûÆ7PIØ '`‡`؇¾e4”á~œ®D?‡¤ I£‚*Ézöí”þî`û>ö©cé.QöìÖÀ,XØ]fª vvš– ”°c6¥S¨«¶«?U~îô§V­ðšÍÍM[™½òòòÙ¹¨÷–nÔ¨EfРÖvQP˜1ÃÁÆl¨Á*ôyP™.í„ýgFãü"Š>›öR0]`|c1G6=r/Ps·–^.[}‡ÍËÊ̶TX…M›6Ù¼tºïçÙl20vš ›Îív ¿ñF…y䑽i€9%l8Œ S±n´g`l~VýüÊtìÈê~¦˜‚ŸƒÀiX°äé¹ç¦?w‚#8PïŠ@ž9®\@‚?‡)¢aŒü‚ˆzof¡C4è«™'Óf·-êšÔÉÎ C¹`ÞØ¥µ³‹ZäœX=b·|\‘v[käýUÛX6Ø&æt€æÜN6L€;’äa³K¨“ŒÆùEÆ:eìÚ­ïm|eÏ{TŠœº¼š®4C†t‰äÙe þñÇmìÜõÝï:û«az|' R„$Hå3M$‘ZìnºÉ¡ÑѺ͞½S:Jƒ”᳨²yóÝ27ï4ÍšígÆŽ=[:Ñ[ÖÖîPÐKÚljc=1W4^avìÞQõ=jV›COPÉWÒ‰ê¯[g*¿øÂ”alcŒeêˆìSµoºN¨õªõÑçèJšŽí^M?ü0¸¤]8›kР `n³€3â;,²³5µñ÷v KÏ´¼ÆNÔ€¢Â ‹ðôc…:a‚£aRùi°‰‡ª›À]Ú¸é„J©ü¶Û4IŒ„ QK5c÷̞ɯn~ÇÞ’}>ég?œximëdgfÒÚçÞæKóŒùp—tÈzi^&^Xyà¡„ òŠÇqbcªØÇù®³0iÓf[­¸ßô6Ö)j’(b#m¯~ûöÝíÚDc¸)hÀ.´”ÀNÇ:TöS'¶¶d+Ž#\S)€]±Ä$Ç2‚T3WሃížÚÙ¥uS/}H„Ø%Rƒ—º¶ïرÛ,[¶E€^}ä6˜•+Û˜M›ÊͬY°r=­Ál›6Ã¥sÍ3ÿŸ½÷€ê:ó†ÿ*£†*£.èÆ¸`ã—;^o¿I¼ÙÍ›M¾¼I¼þ’MÙ¬¿ì&Î:Þõ&›äMœuì8޽.!¸à6 ¦ PA ºÄ ¡Þõ=ÿsÎ 4*`Ê<÷w¹£afn9ç<Ïÿé7Ü@í}:ÎPãÑQç@êœTTUàTÀ)Yt °±A/ÿ?)) -r²éòù6ášÉÆ­Ä£Ãá%*QÎW¯{¢ ÖVWJÝÕ2­`bw†Kj¦¦NPç}Þ.Ù_‘kô&ƒ€ñQfhx´ Ãe …¡H •$@kæÍ¯;k8ÑÒHÅ“áo¼ÇýH×»›5BMæ²ØÚÙ`4¢é‚ª2Ss¹ó$£U+%ä¤1,7fÛ6Ñ.×(t²råJaL{D–ha2‡) ÈY*…ŸÁÔf5[±Ä€Ï=§ÿ/7·N˜€·©p´Æ=o€o„ܹf´k´0Ç ýž‘bAÁBäåñó›ÕïGpwí¨ß‹ˆ™°ÊäUº%yDÇ£¬];Lp™¾Ô`ï—mB½.9^¬–Ìèeú}ó›žA›•81F…Ø—Êò1˜Ù‹À™¸yeŒ*3s%Ó ×ØðV¹Ž³+ì+ÁºÀܱ4‰@Š8å†u°€Ý´ÖDpå‘/øù Nà‡iÙ>a,ß¼ g3RNYî´äQ!¤Ã)oê[ ÁQ’\.ÅŽÔt ]%PÑ›|²Q RR>‚6Ó…yiÔZ±¢'OÆ)H`ž™éгc¨Ç9îXƧR~Tˆ¬„|tÙ»ýŒ$Öêë_«ÚZqoo?.ïMÇ»ïÎU!W/½Ô- %J¹PYÚÄ¯Ôæ2T…UaQè"åne u[n.DxÄ?Ž@á–èúDcJ’÷»…1~ï UÖ~J0®¢ævÝýþý8¾ø¸°¤4jÆþý‚/ì"ÓDNõbÉ’Z¹Žê1ŸGttfÍÚŽÀÀ.†¢õU®†Ã1ƒƒ~nŸj5ûi/ŸñYâ""æaæÌ¿hnV@¯¯ï-¹¾åòû™r®€q;­\釀€$U˜ô™güpà@V­òò]{–Ž0Þ,~ í šþYY˜' -ìÄ 8~þsT°ûúH†CŠ»S2þ®¿·×;ý4’KiP·ßëûï\¾Ø¾Ëñ m`~Z„Q§< Wû®¨ŽY8+ÀîŠ|L;{nuÖXH4ʆ °›êkN..FW|{;jäÿ S ™…„¾òéàM«õê~ þBCOËZ:…ððù^ƒÈÑ~– •¥¾¾´µ% –´£«+ZøDòçp1Œ¯.±‘,ßME¶ŸúT±º·ØÌXÔFÔâ­Š·0Ï1ïc¹æS‹N‰&.ïÃuMGåó]:/¿Ÿp‰‰Ü»• Øß,ŠüLáMjœÈ /Ö5ÈqÊʪUãôûßwà“Ÿ,FDJ÷`GýôV*“-²††‚ óaùö‘>n`7‘2QQExå•,ÕæÚk“œ†š½ß”ítÄi,]¹tĬ±ý¡¡ˆ§_ã•Wà/ 9þðaÄ ÐS¹ó̆%èíôvÝK4Z®yøuÓÕØ/ãÉV,Y¡ª6°Â=éî»éFã^i¥Ûí~¥U![.å~y18}zÿ„ËY ý.c>vƒM´kЛ9ó¨ü}íŠc|×31䑯Ý1žðÌ™P|ó›θ»S²qlÚæ·Y¬xÔó2[úá‡a€gg âu×ó];]æB3W­ÂLm{^}³ýë~¯^>ûF$û'Žë~]Ô lK55 p`6õÂq[&v^o¿Ëë«2Çb@üuv\GR•ƒ‡S–ÁQ—en8b«—ñ÷çþ\l¬ ¬¤PšòkfUn^“Œq’üÿNÙHÍ3e$Iœçµî¯È‡'YÄ ˆëÀ—ªžA``“R¢¸»ˆ“•Y³éf7»ÿy#ÏÄPŠ'’à„¡§g©2\×ÈFwloZ/òÒò.ø¼¢¥°U6ÿ~úËfcù2?¬_Ÿ=Áó²tÕóf^Z&Šb¦O?¦ví™ Õ‹qÕdö¶aþÝÏ~V·_ll “9º×&…«d¾ö„vä%Œð»Œ+’5væŒIøèòvPî–øq C¦Óßz«N’|â àûß×±zî©æ£f1öê‹_Ô¥çùÊèe¢0Vå{èlwàs^æ„?EeŒá`dÆ£/#ˆHe²µçÇáo~{•‘›«~([ Ï=±†Œ“ä£ùÅ/Xm$B%³~þó:0Ÿ}s ìŠP4¹Ëç@ÓßË¢zÌJá ÝÀ³žU6Õè‘þ 3“ß>VÜÜØžd$yë"çøÐEËk©™»ZãvYƒÈÈç+pŽ Z’¢Í\W¥968¯oØL†vç7˜Ïrî= æÆuiéøSŸìh ªÈIæê3n¤«áðTÖåñPœ¸¡@Ãû¬*6ú¾èr?jÀÜð8TŽ­YŒab(@ ŽuÞmfÝq kÌój1{ÑÁõ0c-æ´&ÅB'Ø\˜ŽôTé–e:cíX~c^¸Ž³µ˜ôy$ë¼ÇÓ¸»õÖ ¶á={"Ëçy—€$£3{ÌX´^µËÌ]ŽábLÞ]ÛfæMÌ-Zï'îfÜ4lj®sÆÚ=”“[°M•R±8»é‰êv>º<ÝŒFFÉ8Ûg öÈLÏ@LFp÷oh,feyU €õ;ø#x¬Að쳺îûØdgù¸3Æn„ŒX÷ÂÄÌ c[!1ˆg#`‡ÑVMô±÷_ ¡Á‹b0“h‰n¤Œ?já=úU ßüGàñÇÏâäÉ(•ÌÊl±gÁn³+kƒŠ½î;1 ‡ RQ M IDAT>ÉA‰"yB3&¡Dm n¥!%dÏbí’[”5 ˆ+3Bÿ¤@ž@R úû«MG~f›ÙùËÍ3žê Fm)LNæ}ì4€³ÃÃõÅ Ÿ9“ƒÒÔø>¼‹Y•Ÿ»O)GÓϦÃa/Å–ã%ìÖœ+ÁbcáÇIÎr Vm»© ·;Zß-`×W•¨pzbb“¬%Æ`½aÀõÀ°ûœíäRÆÐáf\†ƒ þîq@u¨1¿À”C<ä¹ À³€žÝãÍ멼,}Â:q¬àÃ)×½éªlÐÇggñ:”f*en|S€cÆß— PæsÚíIàî7ïe›½×€»Cfžv»¼p3Ö«=¬¯^³9®´Ì¶»i%Ü« ¤¨ò† ¿ÈÌ §%Ûb¿à7ÞÐzeþ^Ò×j#;ïd#û\FI™âv>º<]˜›¥¡tØû–šaÙPÆî?øxV‰3+kl\ÕÙ™’Æ,¦w‘sre‘ø1UÿßÑϱ<ÿ³ÏklÁªŒFB ss\+ݨ6Ù×ÇÄŠw #}sç¦LH‹¥ì¿é¦28y D';g~+†lSV»I;û6:¥³6˜½ÁÎ26Π~õëˆÝÙv·é¬ÂeXæ´éÀíÝÐux˜«qf.&»ÍIòói ZbžÝ>0NHÿƳÇÁ}¼îZϖ¤¤ác9Ëœ87eiäsõô°~£(6xÜ\c²š Ë"3ñ–œ§Âv --kÎ-cC¡D`LJ9•ÀÎ*%$À‘€…à.´7-‘H™Mé}9u¾›b2Ë<Ïy¸NLÙÍž3 @Ÿ–°OÎÍs6š5Ûa@‚§$’H'ÈKJÀdkI~úÓ¢r=ªË Üt“ ¹1¹Îöb#ÖJËÛi3F£—‚Òë9Z¿«ëBBz̸î1»w.`§ªì¯#zÈŽ(V¯ÌD©­TU8دϤ{—ûÈG'°{Ì,D.úZ7M¹c°§µòÔÔ@e ‹Ä—¾Dë.qÆð«Œ,WK—qWg§jL”ÍçßyG .þ8-DVí4+£iˆžïÒœë í*±ƒøoäZº-†¹íý¬t£Q°Ñš ðÞTV¼ÈH‰_MX‹e)zIÉ舷X|q›èʼn޾aò—ü…/èþf¬YG·ì}÷!Øb”5 ³i2Çìå6OS—ôªh°€C†:Ö1u @æïfi¸ß!Èà l7;…~®±æ¥OÊRØØ,SRæ§rýÆN@1à=Ñ û_f^†b¡mž»×0˜Y¢–ë!‚9ꪪ±[Œ‡Ü ;LÌUpk,hÇÓU!,^@aûL&£Û{ÒqvÕÕþ2?Üc¥Ú xh0G‡è³\à-j,]núlc]Ê7¥žÂ†ù2ŽuÙ×t{1ŤÏ‘§6ùkKjN|¢—¸ž¼üE£4 €Kæ˜7Îùê¾¾>cÖÉGÊ¢Êñ í0–<÷Ïǘ}–qɰ¥ ác……û§ÄLñÁ1¢±¡ã (+<¸ÌMMHåa˜êùèãvþp)»S±P”áÆc·ZpÚëö’HÔ’(°‡òýïÛ™>ñêìmô’‹ÒŸJ€ÇòðÜ-k…k]æà¿Û ¸ývûP]Æz¶SÙiX׉Jìè†Õ§„+Àþþ êF£p³¤@ €^§€Þ™3»1}úò ͵¯6»÷–ë»ïÖ½Q©8./§–߅޳+ì(×—ï°ã®½Y¿ IxÅÌk³¾nÅx\œž-yYfP஦fŸà¥Làâ   çoNÞLgÂcû^L‡m…®g7b×&"ÑòM­×³kÇG>º'J6»[7o%iUyÙ€Œ¥JûÕE"µÐ¦6;÷ï3QêçeœGV°^¡ÌºÜ²Eû•?rÇ RçÑtµN)›ˆ Ý­tsç¾á&˜.+ÝhdÐpµ€†¯LZ‹å£d"òܹþøÃ¡¥è_½?ÙºßÈY?yOǃMk™L!È>È|#$¸0¡…²vŸbÛ‹”RýMM鈉Ùxžžç,³oty»Ôó T+©`–© 5ÆÚôšˆ·_až_ª@èœ]ˆ#GÖ© }w`7èç?}M•µÁÍ ¸'ÚO$}ªF [–) Œ¼ÈY£?\n]áåÓØ-1¼k\õ$ßs³âåŒ B¸Ž¨Ä2@ÿ½ì°Ï®ž·‘xAîìõ²u©öÓó8j¥•FQ¨qãy÷Ž ÀOÕóÎEm-KÚäMÑozïž5k¦Y£úÞ¬Z„¥¥6L?Ž3±º½Ø9²ˆ`ŽƒÊ¨Øùè"â^˜¸p6 ²ò*ó÷ N ãí¨è!:û‘æ8㊳󨘇ëDŠþgXLo„ÎVFlñûš¹Ò<„G¿ ×ViÝW/rP7’KwÝd'Ð[k„¥ÅÒ]Ë’¿5‰‘ãZ˜¼1k¾†º³óU·Š]»¦àé*wGÒœÃÜå´Ö‡DÍv uZju¦ '7˜{ðGUÕª ôL-€÷Ù¿&)ÏÌ &ýBö0Yi>{¡–Úífl;°ÌÈË÷*£õPÌoG'+ÓZ­Û&KŠžJ5ùG5Ðó¢âÅË.—š±å8¯7–ŸB³n¾ %:z—®!bK£ë5ŸÛë ë8¿D¯¡Õ©åÚ”¹>Õ‚ôtÖG ¨³«9®÷øKxìÈøoÐq©kÌøuÈÜdyMC¾aõÏ>»Wƒ¹«,Z„:†ø$&ÂG>º‚±Û5d ‰Zý°Œ4Œ·£ñ`Ç3éÊ•dÅÙM ¦ŒG9­wË—yÛj†Í´ÿ®¢t¥©­òBFh¾|ÐNÿKtÈ--– äqì×À•Có3Ùÿ_Udy$!µ.:GÇ=f–¢7´EYƒ×Ö6ÉK#ø¶ä°Ž4*14ç^-ódÓnحЮœUªÃÇÇ!0jjò̼H¾æÆýjŒÙ5–ä7»¥å½çà·S’D¡å© a}b-`G—ŸGÒ·¶^BãL÷ü#,du‹xV2K¯Ç©NÐP¹uîÔ)°^лÈõ¤kïD^¸'sÝK˜>ý¸YS·›}‰=Ëü9^ï5ïÓï Màœe–lÿQýœFl·r%ªY;Õg­ó‘ع ^ëŠh©cÅۡ׆ÁéNÐu>ɬéÄóM˜ s{N««W`¢õá.]-öi -IA;_°ª5¨¬wDr6~øap<)úÖ·,†ê,f7bøK¤Ñ;Û:S3XíqÀ[w‹oE;é °c–²µ jaÎrîÔi;&PL¹Åص˜Ê.SX¦ÏÛ9ý2 \3´vËP±g1Ðn?º1¿c2µ‡j=|,Ç×sxÞt~•iàýã\l½˜Öé¡ÄÊI¸’ÂÈnÇäcé.vxê뛿_ò¿·Kñ?©åBõ`Íy#ùè2v³Ô¢Òô”@X™˜ýEÚjS¿ÞÉg÷‘.`à xúÀù.›J„žÒÚ쇎óë¦Øßª?ää¼aÖ:º! ¢À]{±^žÓb%Žû„yÍÒ){†|‚5èe¶ÀÈ|ûÛ:‹˜ø€õŸ^}5í1ßFwl¸«Ê;"Û»1ø¿3­HÄ΀jʦŠh|`®ñ6ßjÜÍ5%iÂr(€ìÙÁ²?Œe$ ;}zò§s‹±³Ü°ý:&-í„üLô_Rë‡@aß2ïÑÊ\0äS4˜ª°Ò}ˆ*˜ç[§Æ~®.Lò»±)X&M¯ÀŠébý࿹^›ÀÏD•£øøù1wôö¢.´\‡­˜†reæ.M ˜^~ÅM6î>o¦ÉÐ^l¯ÃžºÝ²–ñB¬•ÆÊ%»ººpÕŽŒM@&Ó#›î#Öa³ ‡îSYm–`Úb0]a©¾Õ<Í3º“ë” nûöŽ¡Æ¹´4}œŠ 7‹]½l¤ÁÓv`"#-KGÊ6³Ufº¦g ?ÁÐ`)°ùçOe‘qZkƒ¹Š°¥nÃïH÷¨Ìå+èF4F†ý.õ(Ìx »pJŒÛ>òÑeìHVJ:ƒ]1‹æÛ`oIWé7ï”O x¢Í;*) ÙŽ[np/ù`%LðÝ}Oƒ fl~÷mÚ:4¨˜¡qÿôO"8æi!ÏØ8ÖÀcâCSÓøÏþ¼éBybj¯3È|©ªxo™Ÿnò­dd7[Ÿß¢r¡¦& EEnÉV†8;€L–Ü’'¬R'¨O0ù0ÕæC ®¸1hl¤K“A†d`CÃTÒ\ÃT®Í©&*GìÔâç@O„ÃÙ{(m1Jõ¬+R‰ÕDþ£y½iÿ«éð볡'é$ötû‹|ÀÎ;² –23ÉÕ=`ÕtmoŸQ‚§žšÚ3Ò½·«N ¹ÌÀÙnåM\ ÔØ¯ðir'të –ù,7ãìèŽeÜÉ€›ë‚Âêšk*ðýïë*&|Î,!H€Çî"Ý^òE&bX@h Ì—±H²…«„ žÓ[7YÖ™ÄkŠ Øf ÿI'•LÐ-yÂ*NÌø±ôô¸â–R®ÐQ¸Ï°[ÖÀš…|õ*‚kÒ•‚ùò©wõ±÷)•£ôõú¼l8´›Aøvóz#.ÝŒÿ© ë ¿ç3q…Ÿ„ Šo×`xÓ¡>«|ÀÎ;¢ ÜÊj|Ö©-Í÷ÓB) «T ùÍ›§îŒª‘ü,s²"ƽ¦“•0a÷YƒœÓäËfŒ'ô’z7F6UeöãHAÅ,Àò5lË\ºM›tö,›€Œfœ ã|î9ýš±{t‘…®ƒ¶TY}vÀ[çÍ…žÛ½é ð÷”u”…¶¶'Ò¬³”ˆœéŠíž„%‚ ŽÊ’ßsZì*S1{6-A½Fq»Rë}%%‘ˆàpáb˜A^„V`÷4—L¾lYÖ:uKuÜã¹…­Z¢´Îg]á«…€÷Vóz3Ü=Ö5Í8¬ªøÈG>`ç‘ñqñPóS½C—µKÖâ ïUôÕÕ“¯ZÏâ 0î~Þð˜÷„‰ûðñ·=º˜€÷çÍ”yV øBÙHl’퉈|P á—uö,C±Ød‚<2È‘´_ #&_0^ïÚku­Á|cÉÍUù ¾Ø:oÈšÛ•åX¸¤Oð— ;vä àzG†³ÃÕác2íÅ:Œ S N•…h‰T.ÆÄDËZ—q…[ƒn3Êb¥“¿Y´zú<¾KàSA–µŽí€ë£J‡}Mef-Ðlô-EkŒB„ý¾óÝ,##ÒË•‚ê³ÚùÈ켦{àÊÄ<éŒaªùª¿ÖnŠ×_Ÿ;¦Åg,R±[1ÕHÞŠCÒd%L`fûfÈâó°ºÉ³Ò~V`…ú‹•ó0:§cöï|G·&c<6fOƲ2×纻ãT¢ð6íÚe)öjLF¼ŒÔ>óIŸ5Õ²æ7ÁVÖ­z ½ÿþõfLÜWqÕÉ*vKœp&®KT‰v»eÍé³)e†¿¹‚†ÉãX aÛžŽ!ëa¢töl°ÓZ·ö:W9—Ëõú¬92¶,Æ·XœbñÜq²Œ H«@SG÷ÔtÜñ‘® `GëÁ5†Ù<¯ŽVj~IJg¿KZ|¾ñ à¿ÐîYö˜õVƒâ‚$ã În­sO˜¸Ç7;F$6_kÀï¯d´4hh’­ÞY|˜Awì½÷j‹ÇâÑGÇרâÈ‘åÙ£!Éêbµ\Zˆ37è6òÅÖyKÖg¬*“šš¢°w/ƒä Þ2€k2 n‰îñuº&d¹›bàSŽtr×ÏSnφy~™*Q ¹ùxùåÉ[„òó“Ôo¨F;éºòP%–È„!'‘p% øHeN†§7c¤’Nüå¡f”)¹ÓíË£ð‘ØyK÷@»,hAøÀ)”˜IkÏ¢E N#‹®Ò=KPÀX®'ŸöìÑ=™G"ÖвÉ'_UîÔĆ&LÜ Ÿ‹o¬ñ¡«‚ùiä@n> _¼œx2óØÝϲÊœÿä'­÷'©ÏÜu—«]¬•y»Ø”ÑpÅÁøÈ²Üo\CëÖé÷öïg´ ÇdH2ˆu¢hÂ-qÂ=¾.!¡GŸCQŠo œë' º¶+Qlt=» ìcJÁÉϟد“÷½ý6óa4€cI«FžK‰¥›Ñ X¾¾“‘è.¸^ ÜÓF†è¥jÊ¿ù¦ï)ùèâ£À‹oÒåÇjí/ ìúÒ–èJ`œÝêÕ•ÈË‹W®XÊ"Æ}[G‚º=&™‰5n³³µ Áûü»  ^1>ºg¸»'LÜ웣Ӈ™Lñ%˜`¥b}²mgœ3‘o¿]ƒ<îwßÕØ‚ãf%l²2ÁB$‚0 +qåáOŒ,Î5ôÀÊ^lÚdÃáËÐÐ/ká¨6² ÇOÀ:¤8±qé:옷¼Ö|ÀŽË»5Õxˆ2®“g¡C?2°²Æˆµæ8ËŽpçž‹9“ÿqÈØŽVoòµòrW¸#‰±u´|¿e¢Ù4ÔŒ_ÉåMÆ"𛳠g?óÏ©1zM¶€%Àï6âwèy°ù•|ÀÎ;Z «ô‰ Ï)«­ îmw˜ÌGÐÆå0Èäv<þíôøùÞ^]·ë¯ÿW/~éWnÌëŒ-ù/7íuŠª0Ü„CÂPÉ£™Ë †œÀꋲÿ ±Gž`¸Àb½%«›tÓBÇD‰ÿþï3¸ï>W?QËZ—‹>óØ.£LØ" é`†óZUÇrÁ 7†—cùòLìÚå?\-kGPAzº^0\8vbì­B¯>7ìP¢Ù”Œ©Ì€†»\cìÀÌ%œ:hǾ}IX¦ yÊBDÇ!b) 溌gL+wJ ×T#6nŒs*GªÌÖ ÉYÊã^\Ù -cÑÝØÑm}µ3ή%¸óõ¢ø°  X»Ö÷¤|äv^Ò}ZòÉÂÊ­’pt)x4:ÐÍd¹šÈøô¸»3AÁÀ¹:愦u›Ò^­„‰Ü©¹tz´ŽÈ¾U]4f ÌpñÒpðf›ã¬KìQXß,—ý¦èµŠõ‘m"ÀÎ @T›¥r9º€Õmb©z¨KqIÇÖ èù€CМڠŸ×~c8a¨ÓyŠ µa—l\CË–eªXÓ={VâöÛ߆ú-ºÍñã&(kœdbìú¢¦©ò7̆%H‰Œà m™¿ýÚ[°L1kŒ²?U‚ªCkpP@?³Ç‰¹GŠç¢BD¾G\Îìs-\¾ÿ)ù¿8æ¹¹ ÿÌð»5† Mu¼è0ŠÊe£Ä&#™÷kò¿æ42,½¯¥ßÉQ^ –•‰÷…üúè²vuçkÓeA—ì ÂîJU.(o]Ü­¦¬Áºm[=î¹';Lݵ,P£ýÚJ÷ד¿ «RË-´­ÛèöëFpB0PeÞÚkZ‡¸Ð˜˜fޏDê"oTö€År3»^9ˆ ¦?éT-@6óH\Y¹—˜£Ád§ÑSÜ;pÈ ö Â/ÄOÏ™=ÐÞŸ›0å%ÅÉFÐ@«÷íÙôšöÂá°£¢" ³s’´W°h‚MÎMŒ]md»ÑªX¿n®6t“´Øuëg¨@ƒÃ(G¤(ÙCÍ‘ï]RÞ^«¶ÅrŽQ}üa¬ZµFo+^˜q¨lïKkÜüùÄÅÆºâP=‘_§­Mãኺc|—ËH•Ó¼¡Ùíï:¸—åÓüyïå¤ÄÞf´0Ýï—ÆÊ¡Ó1ǰvmŽLýzDEùBC|t¹»œÏ¬ºd K:!¬Èe²]åÕ¸…Ì1[U°ÛpÒTÞŸ¡$-¹ÒíæÂ'(tòP&Ï´Ü#D"×BA^^ž>™!=0õæXçìëç™(è´ºA.ª+ä_›6ËíœlÛ&'gÒ|ÎTÙ5Ð ô Y²ŸVqv”Eߺ–ÑjY.>`ç£Ë Ø…o+Ô]Â7ù6 ø|MDͤ.—õÖÊPf„݃J×ÿ‡êŒf‡›à¦‘ñ:èìO<Îõ&ò–˜xUlŽåæ7‹øÑxU•ÂIán@:Æ# KÆ”‡ŽM‘"?ÿ<ËÊø `?ž“wVLÉ/oWÅaZÙŸk]¯¿×äѵ  aÆo@V¨y¾‰nc0ü·Ê n™ †«ÒÅ|œ›„nt‹O@‡ó¼f€ÍãFYº “Žˆ”‰BŒƒdÌ]wv»v­ÁÆOÁŸ©æ ÞbWfæ8ža¯Þm6ÔØõ{õ ˜7¯Ê|`†w’ÖšÿEæØq®|m nAdF¤«'=ÀæØbÆ ÉÖÝ) I~vê»û͚殞*êmG÷èf¡\çµÅTbåÊÓ¢&Lê VW˜Yê9Ì„^?Ú¢ÓJÎHø†÷mžC¢y/n(Ï)Ù_r®[k°kWJìœÎ9À1£,·™ý¬ ófŒ¸¶¦‘)²âÞdæ au |s uÃWïÄG—+°{lü XY¡æ@â…­¸sð¶vuµ“º\ºö¸ íð0hk¸÷–2­Úò‘—HC⪠j‹ÉfÏjEâ9jÖ"©?I3¹:7†ç¡¤‹º•D úfµÎšœ•"Í[0žŒ%æ °‡d»5bò1UŒÕª67™y>2a9/_€Ó[80ÿEþCŸs‡‡¢‘«ÛüŠùÚ›Ö2l®ç!³ÈKÀ͹Ã@ì5ÆóŽ™g¿2Bô&#°&Þ³d#h Eh¦}&’“QSŽüü`,Íœ¡cÆì¬R'v;ªzëõµ±GìM™d{`oxt l=_&Š.0VK™ÏÇöÓ a´õÙ4蓱¬­u”41p×¶¯ ááz.¼ivNñÅæö&ªf!~ø&çÑZíÊb¸[-›^C‡Ì»wxž@–¢CºÕðµ83ÏÇË×FSb«TiŽÝzD5VŒƒ-%6Ѐ¸0ýº£¨aíazÍZa áÆ‚· :„zÂJoŒÑØß”ŸxKËaÇœI)>òÑåì&°€•Š9 ÷{{’ÛD¬ïQ\º!æø¤.ײÖe)P·Ôìc0‹”R€ÝG˜1ô-Ãù‰ 7îÀÿ$å% ˆøh2Ϲɼ_mþÏT®%G.ž„•Âíô‚rñWxFƨDžëç3¶43k·Du³Ðb/|*3a[”üÔ 8 ^¼ÈÈÇÒensÁvuæwš×èk1»ðöi²9çD¦±èdbâåÁü €[éð=ð ôº±¬Âã¤ù²½'KÓÌ”míZ?¼ðcO¯ÁÒuf¢Ô×ïG­âÄ‘‘hèw(áÙk‡ÍvÌ|`öeeÆž:´CÝ{Fés¹” ‚ »ÛúqgGû‡­£qPIr ò–äi}È(w•fÍÌ¡l£˜eNä ¬mW¨{>>¡ìÔ´´MØ‘×ÜÙ$k¨Ó Dz ½zN7§5#úÎèó#u,%vù0k­ÌïšC5Hž™¬Yˆq‘E>Šö!/'O+l{Œ²ÐbÖù.7Ek1&讽ɠÞ:™žñê4|¾“Ió‘.^`çFýýý8tè(ñ- Ã’%K`[îR“úkûáxËøãõb[vFSSrrr­™IGG<(ÂÁ†ÜÜ\ Ïÿ+Y‹¿AmP;*O"Õ~£“û>¬cþüùˆ#=©ºÃ,áeÝ5D‰ù‰.9uÕä,'“"‹Ùyâ'³ Ø«9,Œ2aŒ‡ ‘ñ^ì§{=¼ ‘ “m¶h²dv'üû.8¸Æ0 IDATÿÈHºÕ˜ˆñ 2‹ò›s0%™°æ~6ƒŒþF= À÷žkù 7§Îì+×hžó¢d­#LõœXnöR𠸓שsÆcùvÅÙÑ"ÔiëÄR¹Þ—^Dii&Úî>¬íÖãm-f•:‰ŠB}®ª» "ÑLB>Œt×g·˜Ò?›eðÿ<󱋹$˜¿±`ee‡ Ž ÛÜÿ{f¾dþ9žE­kÛe`§#&¹\íõ¤.ÙrÃÎV¦8ÞÀ½£á}ƒísêµõìB‘1 Ôú×"9o@Éf°k¶±>Á•ÞíòÂò°zº"€]bb¢c………Ø·oV¯^íüÿˆºð:¬[´ñ‡ãÑüL3nÀUW]…7Þx6l„-[¶à†nPïwÞÁ'>ñ øµf")Ô†êÀ^Ú÷ U©eÁhoŸŽ¸¸dg/Å»ï¾U«î@däÈ’ÎÏoPCmÎJW«Ú ÀÐfé+„üÅDnÿµg”Žzì¬^ÿ¼î°Æ¬>»]]ÑXB$•oöÃE×y…ÛP‹#Ê¿OýÉÉ?òáßÁÕ!ÇðèÉðä0ògOî9{M™f?iž+®!T?çí%‡ÉºIUÉC a Xä¢Y«ÁØ{"×±Þ w»—±m:ý»Ó†~ÿ^•8‘Ûá6m.`muSXi0Æ¥Üð Õì €8jDƒÙwh¼–ž®?7&«ÑµíÂdý¤"BF¨5á“‹'®‚Žs\ ¼7~efnÉ|nKl»ô¥›Í¬sîVå¬}f¶™±Ú«çଙ³¼#ÆH¼%˜°A$O jŸ×ØåC>ºètÐ)%‚²äädøûû‹…^· 𥥥GHHêrë”Å$úD4æúÍE@@€Š)++CMMú ­wü-Zÿš››Õ÷“ZtŠ eÙOý„ v#tZ­€É|9ç“ ÿ‚iÓ¾Ýáh›¼+x'$iŸÀ…>9µRTñI/h›Öö².~P7…T·¸NÏp•nƒre£µ¡ÔÖ) óÃÐEŒ‰FLÃy|Gö_îÚëñwJeì”Üœ&Ð sâ7ÁëþµìaKÆý%Ð/UE{–y¬™¿w»V/ÈêpP¡ãW®ÔÑå;wæÊ¦é•”ŒãëÉÑjÆSõˆµkÝܰ%z<úƒûuÆåÔÅ*ËXñ‘ýAh+0­B-ÀôcÓµëÙ+ºO±åyêH5‘vƒ¢Ä–™R')ʯyÓè_xÏW_¦’.Û(@ÿ&û× Fã‰[«ËýxõC·©S -üµ“Œùö‘.z`g]AA²L_(³ÊÊJånUÿO!pQ¬¶j>"""'ÚœMsþߧ宵µk{®Ç’Ú%ˆ‘í˜0.6ûz¯¿½4Ô‰¤° H4E¯§â'¾-û×Àº,g’*À%Ç_¥9ŽA4´OÑ1L9hÇa¸“(é¾Åœ‚®2zÝ7˜ËXz™ Ppzþim {Ãû¯Y}c­ìrìî“õ™ŠÖXƒ¶Ê˽ÿÁf]Þ¦1ÔÌ9ìHOßë<›“´gggž½¸]®“%ê!÷wŸø®óæËº¶õÔj"ª'|­¡a_ÝjÅ¥âS£#é&£kã/»Ì›ÍñÏ…ÏŠ!μ˅Ðé¶Ð¥}èò‘.{`×ÓÓƒ>ø@¹`ãâtK›÷ß_„G°Š›#@sÐÕ# dO`–óe@__üüü”õŽ.]‹ø>-€˜Ö3 Ëk–ã‡ý?Ä ‘#[wÀÞD…À¶<Ò‘Œ—N,E/> Ýó5Ëp+]ý¤ùÍÞ{߀;Ñb{¦õLèyÐp0)ÉŠ3p)ÍõpYí¼ÌìÏ1fͲ=(Û“²¢Q¾~§á¤˜qi2è‹ÖŸÎ:€˜ÄØožRÖDúX2ýG3v˜Sý®žÞ—Õ,¯ÑÓÛkà -vìBÐÖˆ6ÙX².'Gƒ³¢&ÂP7aebì*Buqâð¦T·Ä ÓtÞ$M‘4\Ü•b(„‹ëõ¢ÙÛ/Þ&OmºúzcØi5F¡Žäýg†È´#Vo»aLkpyYR½‘€Ìaݳ’|ò”wÞÔ³ëЉõÑgôÚ´²‹Ýê0Çq¸ÁGh«;DAòd€ñÐxÍòÝ£…i_HŸ^C´ ³\Íw¼9y¶ c’ŒP­¬ŒfÙÿ¢øÁ,Ê,^1Z2´åUœ=–Õ{¯Ÿ»B( £­ð*–: ÷ɳýÉ99$#v|䣋ü…&òÅýû÷»tÃDuwóÇ&t,ÀÚVq(Úèªëîšu§n9ÿÏ"Þ?oÆÖ V?ŠÒ饪¬Ã#T‡w^œÍ¿ßÙÏg#¨=H]¯m$ªŽŒD•ìÑÑ8ëÖ†)Xé̳g‘.4µ¥ÆZ9(×Ü"×^ŽæÐPÔ àm’c÷°{Tz»|'žÖÊ®.Ķ·«£½£ãc™(s_Ÿ‹Èj¹×•U.·Å8¨ß¿UU8}ǧG¯¿+q"¤/)-)Ètd"­/Ïf¾†–€Ü^z;’Z½«;QÌW59vË1´¤¶\Q 9y2’ö'¡5©¥·—Žùy®ç>/ó4÷Ü/k×ùù!øè£l|yÆ#·ê#Ôæå¡f´bÀš`Éo‹AQZ¾üË~Ñ`løÛC×`Ù²wEÁ“ï×äÁÖiÃÂç¿×EwÉZ²{žÃ\\%±±2_"Ð.kÅ"®¡hY‰²&úÌzi“õÎ×rì…±ßËž[!Â+b:;‘ ëŠÇ8YW“áac‘;?©¸¦ŽyŽ1¿ÓæÀñÔh´u¡ÚÖ†6ÿ¾s>Ý„äÞ0Ù§!R^ÇËZŠ—¿¹~?ŒÀÁ|.ÿóòì<ž'kSÂÃÔ¼áü™(uÉó¯•1# ííUcÙÓ£^_ ä>FÇ>!<$elÒù*šýq]øß&žéC>º|,v/dgÛ½H`è¬ Ÿ£- d.y~ycjõC¾; ]+Û€jqµÉV lì¢ ‡eý}ÚõµeÝœå<ïù^tרüa–¹èÄ+–åÊac›>àîÅ5T˹W„cµ[é–ñjíÞ>«1¿ËÊóÈ9Kg`Æý3Æ ~é¼+L›1Ž -xûdË—­#°C=îÑ}~kæ­ÞY숙_Ó/ :ç~rîäï÷|—`F²}TSƒÉÉÎMá9o–¶ØàæEäyeµÛѲ•‘•è_Ú¯¬vññ'ØÅÍÈ•õ’$ó/ÉÃ=9Ï+Š ¨TE²‘j3üÎØ±x±N|IJºVöLÃdܰY²F|V^µÕ•ë)(*õ9»7žh2¿eÕ’>êp`Ý1ø¾!ÜÝÏåÉj>Ù¹±dÅ G[ìÒŠÒvošW&ÃàývçyYZƒ]sX„¯Y²¦9 Mö qõg¦5Üjuï—€KFiïGsS£f*™·ez=Ÿ› j0ãVωóÁæ9Æ›cܰ¿mãXG£´ŠÅ±ÚZ,KJR<8x’c4wÿ\ÝNwÌ1ÊSßMÌó:]fÀnÒ­b¹²éNbŒÐ«Ðµl§ÈOB`°ÜldŠ®ý3%-(¼c^ßæbd;SS‡4ž°Àqè2sŸ½ìQбc_] ´jp·@°7 ®Ö±)˜bWÓ,Àó è]?¹1É6Ûgd£;ÐÞV 8ÿÏk7ìn#YäAÔæÖN¨Z?Ÿ)ã·úÌ3´cj]á– ¬6k¤Î])Á½ W+θÚtR`X€Ÿ‹íèào®¡Ǿ¦¬Æ,ìÞ‘À.5UÀeb= êê2¶Þ*6íÄZ§iËZpC*l ùR˜Øês¼t¨€žh[ÝÑç–ÇÆˆ«¨@ž;÷¦õæXç‡YÍ0eíwºIäD&Ñéf³°é:¿n|_O5Ûr7.AžF—ú)Ùšd#Økr{šcÆ¿çÔ‚Çœ»–ÒY‡s»¿Ylœl¢[æDœ(£f]u˜åé)Å Ò äµÌœ9ÑV±Ô$Téy£øN¨îµ5F¼I2^ ùèÊvh‹ 3Ô¢sZ'®1`Š_ÜL$r,bfÔæ$åŒ  1Î,šRj:Z„™õ¾d’`n,²º´ùWW#ÏÄZŒµÊ¼>éìæ*iÊâŠn4Àî=#”¦àÆ™™e6Zòî¶7lÇŠøÞý'Ù&W5ÒÆAVÜ8 ~mÃÇ9Ô<·Tó:Ù÷ðQ,kMf-Ô˜ñ©ô ”‚ § œ!‚°ÆŒ­%ÄZ†­wg®ËO®Ù¹Ž8&[ÝÝV»Ygg©²A´þ°+è¯^} ›6-GkP "¼)TlB °³«+1æ9^©Õ–seKAšŠ¶ºW,ò»át¤àmde]ƒ5¶às¥‡V±@B‚ªû k‘ùëØÓ²¿bÍÇ•&úÆPkÝv7»^åœ7²ŠÝ»ãÞ:¦O¦|Ò \¸ ¤IgãZí”Ê&fqðÆ’ÇÇý•ý˜ïeWõ·ŒTàCYE³›÷ç㘾`æ&‰1\‹üýmx­V±`DaCk@VÍܹJ(ÃPW¢;HŒ3/.ëµmA7Xç¶;Ìúir·€$%©ˆµŽ†[¾Ç°Ú1®ŽIE¯ÉÆÒ4÷ȶ|¹?6oÀ‘Þ,¬¦É‚…Š×¬ñü#êФã¨Rƒ¬¸W3~º‚6ÁÅhÜYè¦ ME[Ý©"Ëjž;l¸¶ÖÖ"Yùæù·™uF*á·bܬ®Ý’œàû¾-«Ý†©¿³ V bvÂ(ëh«›Ü¡àE)±‰‰ç( |6sÌÈÚǾ-%h¤d`ËunÍïbyÎiòœ'Ð*Ö¹Ž,]⨛5¸Èm GKžôÎéƒã>FÌ6¿Ý|t»Ý»_ÆÑ£Áºu÷#99óF9ܽHúŒ9ÒØâLcXe@?DÓÉÊá‰0短9ùKæ¿ò„éÜœ”tÑ b¢Ù× SÆ ¤w××£S@ô”eãÞdÐË[†~œ5Z,ÆKºÇûki1ón—Ûócí@~>–-]:ÄÒ`µƒå<ètYmn–å°ŒŒtD«¥h¢Û1uœÊrgz°2NU=hÈ:²,ß|Ó‹² ´ô0sœ™Ëe³ÛÓ‘Q†ÒÒ¹؉°Ø=«PŒ®ñ˜j•2™ëvÐàÁ½3¤õã½ÝÝh8qµbÍÄê†ÕÊZ(•߉Ћ°ÈH¯ÇÁ_Ιç¶ö{Íœ8kæC«Q, T“›’9_‡¾ýÍ@ýʬ¡5ÀÇR%ƒ‚UâÄ-¬Â]‰½ÓàñäóhAõÇа‡iÞóD(®öÊ›(4÷UhÆÇê&£ÜÆ¥¦ºZ.»Ñ;fMEÂG>º²€Ýž ‡£¯½öÒÒr±ví} y%X.®£GñÊ‚J.Ï´!Ô²ÿÚ ¾¶B}¯1áL=ϧ $ÎËeÑÖ‹ØÁƒÅ€û`UòعÇMØ]¸J"Pší†&/4=WQU/’ °ØdÆ”÷y#\ý0öˈ´, ñð‘ú²‹@šŸœ¬ž[âyÆ»67¥©cø:â‰o5šBŽ~1vÙèg=;‚;Uûqõ6ü¥Ôܱ ›»¦d}\‘du¬˜§N‘ Ø™Î|˜ú4nŽ}¬ਬĩ‚Ô––¢¾¼ý&»r2å`köºœí¶à`DØíˆŒ×Ǹ¸!ŒRÃÏæfÊñ`…²’cž7ëëuËø“kØ 3ïÿÖÎ.¸Šw›ÖzÕØ[ÇÉëºÚÚP#c5)ð-ç=ÜÜŒðpL‹‰Q…éyäXxÄG“9×™±©4:O)\ 2æO@÷'² £måúÈGW°Û¸ñ;8xðu>¼ù¨¬,Ä’%·"7÷fµ0GªÛÎSFY¦~…ðÞ1ªîL¹»oTÚa8r¼¶¾m.ƒ ý dãëÑ!B¯¥¡AëòóÇm-˜jÍØS\ÑXîò¯bX˜ ­clñ†~N‹ÕÎR¿mFƒÈŸW)Âc5²ÚÅV)”ߨ¨Æ†ÂÄ/ @½¦P¡ ± 53¼_׋@ÊKNs>œ´759,ÑS[\ŒbYÉ™™jnøû{ÿ@G\G\C/››õ|³È7Ý{²Ñ‚—›;ˆÿ˜ˆÞ^OUÂo´Bź”#¾í‘›ÖgaâF’fȽG:;Š!‹îÛ€×J•<‹ {†•ö!àò Ü… '4eN 8Œ1<+çou8ÔïŸrÆáØ[ ¯]Ö>ÇhºŒ1ßã|ðÆ EÜÔ+÷³)+K…ÕͳtZ„5ë&xÑ|~Šé}s¼ÞõÖx”XÎ]‚m5f……êvµµ á+ßn¥´†ÓH`ÏZ§ 2®'üüœc4Ò:ò‡+Ñ n¼îW†¥pÙÜk}Ø#+¦ØgµóÑ•ìNWT kî5˜?->üðîöíÛŒÒÒqõÕŸAJÊÈ¥ÿWàÄuCñ-#,UlûÄ¿‚) 0öŠ(€Þ2¯o‘ëò×§·.'®X,w •;™[³0ÂŽÖVu´ÀÜpÁTÍZS`-˜JòÆ]þ¬ìŸwÇoÙ†3rð>—ù€›eõFŒ$ã¢6sýV¨W¼t¹"¨kKJ°óÐ!ß»×)”Ü-:ç#P,Ã1 ŠBph(êD°õÊ:àïpܹó5]ˆ óF˜qÜÒÓ?{6bX%#Ã)Ì<Ñ9ëHÖKØmæy¾YÀ›1YL `†rfØbdç¢|o:2ûJG/TÜ ¡rg¨<“ÖéòO œUn­lže®Î|Ôqf]ð¹p *UÀš`a8°Jš7©  E€ŸÃdÊŽ`Øw9>x\¯<¶Én>k +¥¬¬ìœ¹Áq"€ À‹IIAÈ´iêo*nœîJkOÞiŒs6Ћ¡~©yFD_¾€ë§À˜“E£+±ˆkVTò¸áce=“¸Y³Ð+à*mÞ¼ ]-v12î›Î³g•âÃ#×ÇÂ:o«Ã1ê:â¸p<¬uÄë ìãÜ=N7eg+ãÜLKr£-îˆÏG>º€ÝŸò“!`%."Mí5Š9¾~êq$¥ÏÃÕëïCôôsËPÜmJ™±¨¿ùçÀe?OÆçÐn—µn`•5½FãÞ`„@­0ÅÅŠ±QŒÄÜ܉̅̄ª¹¹YµE›µ@˜[|ÇrOPC ŽVDZ„þDh¸»|Õ·ºˆ€ê·Æººü[íÞ5(›5J‹³-æò:ŒÀZ?8ˆ5'N tÇ<7 HP(É3ÏÈÍUcmý_›ŒÛ`¿œYe$ÁÒXT4æ|°À »¯ðÈóÖWW#<, 'OªyAwww%€s /næL$(¨F]GëdHÞñÎjǤZí6˶W¶L܃+þ¥{3åu©N ðì >+€­5Ô¼™©×Rµ–œ+]ùnhoG‰(8o¼&¹ï7Áû¤ ¶€ïsªçöðñà>üY*ÝA®‹s€kc]&‚ŸÖ>®W¾Ï9Âñ"UŽhYâ&ÐkéêÂsçªB愆´øÜFãȇ—­Æ¦ØZgú@ŸÄP%6Zæà‡{ö zëV'À ÄñÞ¨„LOMu‚(Ž×ù¬Égoeõ¶Öi¹ðæ`Yã§«ªœna÷u$k,vÆ Ä¦¥Á.G®§“ñÍbÊôˆ?iZ+I Ö}`¬›Ú²ê#}\ÀÎ. Û¬œ£…/Á ïþl¡ÁÂf 26V•avd~_‚îÙNEòM @Ьò˜±¢­ÅùM™€+öàu¨ÍÝo0ËÖß=‰š#…C\ Aa¡rO!ˆJHûJAX„cdx¼/wwÍ~/¬gêjÑvæ ÚN;εŒâž°\ŒÖ9-‹R³ÒBù PXŸåq,PH7ß—ñt3†e æiPißÒ 4c;ÜÆjãÈÖÜBs½VÖbº<ƒe"¤ªdÍÍŠJF?cþ|d¬\‰TÑÖó F*–Õ€@‚IJÌñ½ªS§,‚€›ÏÖ²Úp­ÖÏ™ÚZ•tñò¤4MŸ9 m¸3!×ÍHTJuVv~ v£ mYõ‘>N`w×÷¾7*X9]s }mÝèíìFýñãjWÌN>÷‰¯‘"üþNþþw#™™“©å ¤é|¦œ[uëD;¶J[z,Ü@ö±ó…çQuÄhå)†)†=èÉ׎&Ô4Ãÿ¬?BQð/‘c¨v[0¦M‹App(êêjÐÛ[®®6ôôt¨¯{{»ÑÑÑ‚þ~a­,‚a4w&v™#w–gëÓ¯ÙJÍ Pq宾!–¤‘h4PHf¾@ qx¹^À÷=ò>Ý™Ï-ÖX÷ic›Â¢Ò£ÒÜech] hððhãÇ ¦`:÷Ùg´w¯³o&ï“ nöòå Ô¸FЖ@‰Œªº÷Ë3^:Q¡QxN«ÇõD€`¹Â¬x¦jc!|E@åm>ˆH¹6÷u”z °h«wV;60gá[öñeGu²øb:”«½¿ÚCEw· ‚^´„ªÉ™Ygaâíæ3Ë\ë)OPÙîÝêõª»îÂüµkÇõü/&²Üޤ™99#Zû¬Ï?¯Æmß3Ïà‹<€ÇeÍm1@*“¡½—ô{¾­uFY¶é„w%vߦM*a…´ö¾ûÔ=r>^,€Û[PÎõ9|rÝÐJl­£:| •¨?¦ÞË?zw~÷Q’à EyÀ²¬î5 ,ÉløÈG—?°³h4×FUU ¶¿û´²F)Á\ µ¸Þýõ¯qÓW¿ŠÙ"pï1àÚ¡büÆjGátÎ_Y[×/@åþ®ÒNÌrßýÚË(|o›Ó1ÙZ§û¨½½I³ÎγNpÆ÷H­­#¸êÇpÕ…„+0HP¨\ur °ÁáhTnÜ3gjÔïö£w¨Å±Ïìò:$H~g0X;[»—®P—å¾ E¡¯«K-!Dj!rÓÉ ÜñÍqR@•VæLíÕŽ5íìÞ”m-þ‹¯ ޽vØ;htÀ?n˜•ÄÄ×¶ëM4¡÷e¦0± …£YÚrJ…à¬\+ç[œëœ .[¦êní£K¹5 ¥›7«XNÎÅO}ö³øQΘØ1ŒL IDAT…ùýHŸõF9"ð<^‡gÁÞ×jÙ]‰­ß¾ùo¾©®?óöÛ±`ݺËj\Pý„§sذËÑG_„èç]ˆôoGê@ú;ñêŒ{~ð=ü,.Va9ªX·2i£ç)ÏG>ºR€Ýh4cÆ<üÕýãèÑí*±¢7¶[¹hã¿~†[¾ú5¬¦Ç¬L&Š1KéÛ¢½a0àë®ópa$Ä31ÀŸVé—Ô^'[øá»(x]÷‹[•†äë°råUJ$ìx´¬r}UU§œ<ááÑ ¬Y=‚9Zô‚‚¼sÕ)*’ €²¹¹N~¿U•›iiiPçêêovÕ†V–ü¦TЉ ¾ŒøŠþ66Õ£¬¢µ•8U[³MÚ¥( 1EÀw»ñô/øäCßBSb¢rs: KSžßW%ýómµ³|FëàJg5¼ÇûûÑ(4PÀêÜÿú/D76"Y„jæêÕ*ÛôRµ eÙ;ÓׇS`izõßÿ]»uî¬uôŸ2§¿'kÇ{‡yv(C6v1`›ªô köYìµÍ†½×Ó;KÿÉa&?“ÛÑ ÿþ@بY$ºZˆÉ|xÃ`è%%%¨.+SŠ_òX6/$qWUíAVÖ\eœF#Û´iÊ3ñúã£xǬ–qËY¿^鸖â˜Ð+A¤UdLy烬'Ù²Œb4ø·”جòr¼þ‚ÎHºáK_‚£¿ÿ²Z/……•øðÃRá¥åNÅ|öìx\}õ,_>;·½£›_C`o¶<ü¯¸÷‡?Àob¢•ËœfŠlkŒN^ ˪|t);Í¢EëU­»·ß~M8†’Ô•–ᕟÿŸøê7ñ:VKÊñ/Þ Wðªh™SÚÀ.•õ´àµ­”Ôß±žÛ¢8_üâ4Üñ¹oáàÁƒckêúylÕ `k 0Dµîž&ŽÞÕ(qd›‘ìèe2îçgÜ@3sF—y<îÜù’{¯¾úïÈ]q'¢QÓTƒ“'QI0Ø1,0ZðOpT0RbRp(öÒ!D¶tà…yËø K¯Vòç9ÙYfC¹tÞ2V»#³ î„É*ý5<çç¯ûžÒj÷ ¼n>?nzÝ¥D8]‰u?íéAµhԴԭݲWßû)lÙ÷6ªv×)ÀM`ͯ»{»€n4Ú_³ß xÓÒÀ›aŸd™«3Ø#¸£¥Ž ŽàÎrË> àŽq‘@ü÷´Ú1^u½g«{Å^´ãº%§Ñç(À­Gö"'Ï%»«•Åçl”€–°³ÍíÑë–•@‘<ªP™×½øûVlÜèõóó$ø «qäH«€¬6œ<ÙˆîîÑÇ“`€€„@¡½½II êw¬ßåyººúÔQ­Á&ÝÀÐØÚÎùÍ£G# à0f̈S¿›’ƒiÓB”ˆ@LJ#Qæš5j|ö¿öÿô§¸ùŸþ [dìžñø‘ŒQð pµ±šJ«±ÖõÝæ´Îqlh[¿~¡º.ohæìÜB·¹¬ŸàÖ3üÿ~„”|Õø½ŒÑßÉùqŒ)—¿SÀGW*°{úý§'d…ò;á§fFÎ*D#¯<öS Ôõ«,ÓòöŸ!}Õ§q<çüR´Ì]1F„Áú §à¢ é—Åú{Ó+qîî—P½U@ðôШHÌ»ç¼øÑËØ{|¯Ãï… 1: Q ì „_w0ºÏât]'ê+ÚQåh5ŸŽ„c¼þ°„Õ2°»ûkëoCdžÑÑaÂÈB3ãkOB„Ä‚Ÿ 2`vül‰àÚºõ —wòàȼñï¼´Lä¸ÿÛÿŒ¿¼ð<ŠÞÛ†YÛŠPù,:n¾?—ßü›?R¯7cãEóùqQ“t¤»4#%¨û·®.Ô†„ ¨© Ë7¿Œ†øn<üÊ¿êø™*Œ ¸9'£L’JDpº:úQÕPƒ°04tU)@XXY¨v‹¨°d&g*0L°Çgjð>6`4KaýzD‡G;×׋u#K0RÀvvv«¿ûûQ\\¹s;Ô\`°þ=ätËòÈ¿ï”÷7åÇpÏñ"ËÜJ¢Ø‚°Ö–ŽVûYL?}'ß/`çB펅=Xœ8ÝoLtö†}k¹é¯¥E%~ÐbÅëÞ¿¿Vÿnï?×@H—0€½+„¨2ÈC£5?‰œŽTmqö%ÐiE¢0w_cÕHãùKKó±k×kNÚ8Ø1{öÑ(/?%¿!ÇJœ9Ó&㨀¥2üVŽ@8&¼†®®£,õ7)ïöÛÑÞܬâíZô#,–ý͆'Diù*džŒb*›Ï[%NäôÏ/ÓUr 9¯¿ŽÒ‚¥ Ê}þî鿨õsÝuÙrßÁX±b™ó'8Fx¾<67·+GÅïs·€_I‰cô5(cd¹Ä¹-×ø™3gøæ|à\çúàÑáðv8ùê¹DëÜUWÍW±s£ñFßÏœ‰›¾ö ¼õ3wõÕ°ÿøßpæ»ßÆ??ì”1Zûžy¦ïM±¡ÁG>º˜€ªNJ†; Œe…²¬#dx©7,ÅÙw`PÀ]pd¢w¿(Ân:šg/Å7tã+»ƒUÙ†àÔ)Pe_Õ‡k…i ÃK)?ÿ­‚ êåÍ”Ívì|rˆPO Oĵ‹¯E|dùÉoáw~#×]¤âîÖ­» ‹F´Ž”–Ö “lwº@®¾ç^„ÉuÐÚµi ãg¡ké:<* ÷»W [Ã5`>1…3”.Xfó±¼I޾ãŸtt ., !55HüŸ_cç´:¸ †B° }I3K±° qÎËÊJ N¡´¤åõÐ!RqÖ²ÒH„ÉÙBiºmQ÷Ê6ìø‰P ˆÇ@ßÞ+ÞƒžùÜ`·Úùºo OŽèì÷ÊRè‘d„÷ =ö ÿ§ÅøÌ­·‰ Îpºe-pG -yÌjþ³…s³y ÷$Š"ÌCzöiå (+‘9ž +¥¿I[FvÓk‘®Ò“{S­ÉÂüì³*Ö‘±u|îO>¹M€P͹&h ¸ÅÈÑÖ‹Àp nôÛ:1èçùÙušp¢TþñoÖʤ™K©¤÷`¬†A¹Öººc¢“ó "*%©éó1Ð*µ}uHOÀüµèlmBÑá­4ú0iÉWËX„©9eÅôY@ÇÇŽ½€{ï½J ®Kºd™•ÎÒ"ÓþsLÿú×qX¤wKŸ{ŒÆE;¡Pv½€’¿˜±[_\Œ2v›³±¹Ø¾­T]×ý÷¯ÃÚµóßp'Ʀ……Ù‘šz®"cY: Æxÿ‡ JV.[ò?Ë‚I0GÅ”¿åÙZ7:øæy¬óY¼ŠÔÜܦ”Ø Vxã¥Ì³Ðú¹¿Å®§Ÿ@peRÿûI”~ñoð¼àÄ £DŽã³×ø@„.S`·&åF—k£ÉåÚÕ Ü ÿ°Ø"z”5¬´¦Ta‚èY¢IY^ÚŠ³ó#¾ëy´ è+HIDÁ¢fäŠFR~Ò‡¶ÖÉ"}õFX" Þ|ÖYѶ|æÎøµ(0Æ|¬ÌX‰Ô¨tüÏsïãÐ{m(++óâââ¢À%‰ˆwÆ ©M¦;ËšYߥ𠛨ªÊ¡^SpP{å~à€ Qñœdp”çºEfÈøDÈë^|ôÑ!ùô!ç.,|wݵJ1{ËÚ@a°oófdÿúYý‡é蜻Ÿ)Å7³Äî£Ý²WOÁÄâíP¾Ð¨x/ÐØß‡GÛd^DÅ ¬²Q|1mÊ‚vcÎX* @A~ò–žûœ)pö¬@QQ ŠGá´ðû!S´u>+wÑß0¨-Ií€DÕ O€H¿Ìå3},4·×yÎH8³þëÂ]AâѲPñoRйó®[`þïÇŸ&ážõŸÀ"¶Œ±³Ü²<Þõoàç™q(Í¡ÅùÏ0„9ž/Õ•DÑ„œÅ­ ØÍ(—9™ æCg5 ¦+Vu~ݯÛH^¬­uɇÿ½Ù6(Àùì³¢ ””Ë4 %-ƒ¶.´ô4£½·U€ÕÐ>Ì}n¯ ΨLÑ:ÚÞÚŽ‰3”k]»ó,:»;ÕÑÝ"ªpæ%‡¼ i¨=[âü·Fß!úKÿG+¨ÓÜŒd*Ó0„þ^?œ8vÍA ÔîÙS†¸Nœë¿ð•ìÒXR‚…€÷Ø{b%ðÛå§ËÆ#¯ˆ Ën½†~oBO—ʸÕüç*€äŸŠc-Jyûò—7(Ñ ;™P\/ËE%Ö¢?aÐ顨£qûi/ž»€³æÃÍJ³Âyx´Â|,%“ÊìH p*@Ey«ÊÜú<÷"ö~„Ô”¨¼å&<&côÈv*:S4F>òÑÅì>÷¹k=º6,@a¹,Ð÷öÛÑÞÞ«Œ1sÅ ïšxœi? 'DLBÒñD·¢A”õÞ·|ò[xñîh,,„½ÄŽ’_¢e~+¦Í‰DPpÓÕéE9‚wT¥íkuà·mÓˆ=¢]­õ3‘¶,Ÿž½\:‚»üü <ò‹W5XuNm´ŒÍŸŸ¢ ÿ>ß1X<wjþNO‹½'pêT£ÓJÀcY™Íž¹0'€‚Ò„„X;Ý"Ì(ãØ=óÌvèåN”{óͪ˜1ƒÀçÿçÿEÑÿ]É™øÅòÝøq~ BŠB¶` Ê‹¼¨- ×wbSívì ÊC_t¬uö—‰ŒµËñ¿³¯U®ðsÜž2V%%µ8z´RS[@Í"ºÅÀ,HEVVŠcoËD(ŸMÕ™*T7U¡ÖQÈð(™ƒaÊŠì†@ÿ@ù‡È16¿`eê%⬀Ö9lïir–^ðgóóC\ôL‡Dã $%ÍDhh¨zæT~,ÐBPC Ã÷öíCmkzå=Tâ‰÷ÿ/‚ÿм9K°ð3·£ä¯(p÷–€»ûz¯ÜmÇ×ü¶ÉŽõlù^-“( ];!*‚²á½çì¢z´5ªoZ"9—ÞMW¿+¿/÷õâ‹Ê=ÌLËíÛbûŽ#ðË(Ç`D ª»kµ%ÖY·oܧGLWG&õðH!ï­EÇÝKàúø¬*NUÈ3ÚØže‚*+ªB¡¡*c?,,jDÀ1-zš²dw‰²ÄßãxÖ;ªÐÖÓ©€¬•Lu ´ëݯ?…gËñGJp÷Í7bÝÚlÀÿôã£eÇ™‡YÈ_¶ OÝ üoZVÇ#¯ˆuëDo=• ”Åò|‚þã?ÐËŒaÛLT¶„Š2“„kïHŇUïágŒv2nšÄwG³^öüÔ±±¡qÂIf_Û)²R²ÔïZ´öÚ\óÿ…‚ŸFüŸÿ„¶9éhÊÌÄ 2F=Ucä#]ŒÀÎüèlªsÿ/.®_„Ü4¼üòn;Ü„êãíøô§×à®;îîv¼ú'}í-Ì=áΔlÿ®ÿ"v¯òÚy‡²•¡©Û¿•a•8~U¡U8vm‘mÊõb-x+V‰¯=†…GÁß„­× ³-xóÞ/U‘è¹iøÜÿù¦ú¼rtŠàþíïßÃÞ½ºSFTT0n¹e™ÒjÓÒb/š@zË2¸fMæ—Eyy½²££ºEººN Èþ•*çÀ.¬wg•RY¸0BÀy^|q—Š#úþ÷ŸÇÆ+°nÝΚdïüæ7˜ûè¿£äÿ„ŽÅ«ðþübÜ|x>:wtb[Ê6ç³obÍàîAƒÙmëÆwÛÿÝI_Q Ž‰×ù7åŸãä~Ï}T7Þ¨P.r÷>¤¼gÆÞX@ÎrUkÀÖ­\ÓµLŽ)îTÏ!J@nLžÏϲÐÂGÊEÚ¨€ƒÏµªª55‡Õ±ÇdJGDè=R€K·€Ö7ljjkn”ë8"û»êÜ©©Ù2¶sà°«ÕÌÐkGNnòËãÅ­¯ãì`à¥N•ÐÄ=|Væ÷„ª"Ô{}«¿û]ìYÕ»d>Îðhù“-W6öŽÝõÿ·wàUUév¥ÞoH©„À$$R$"p(ƒR ÎÈóùÀ2Ïo ŠÏ:ß8ã8è¨ã(3ŽŒßˆ( (EB jHb€ôB ½ž›ööÚ7çr’¡¨°×ýöwoNî=eïsö^{ýe‹xºk%t5U(?Q%È­ f°ìj“#¨çqÏÔ A•xË÷÷ä‘£°)/ÇÍ=†üÂ*¬Z$¥x’:bVÜ,ˆûŒ×£Ea_ °Mµ:ê]WGÚεÛüàÁu()HW° ›€[n™/sK^ª‰0#c'’“×¢UC7_Dß|/ôÒO“ÄòÀñ¨h®0DÉ»U£U”§eców~¸gÒÜþø"lYþ6ZV¬@€¯/RÑ*ŒNˆzLõº<ëÄ>ÃÛún?â°•+Ñ&HÌY3Wœ}¤Wl-*¬óðáÎs`l 77ćÇ,Š:¤ÒªÄ–ïü»£ƒ)•b¢¤ma!êÓffæ²^Ïým6 Árru’ä’„\ú؉wNj¨È¨Æ^Bɉ|´xÖb‚cŒ$ï¶;cŵu"cý¿1L´QË񴯾†I¢|®D)(ü˜ˆÝ…@óÞèÑ䉂ªÊÊ•»šZ }Q&Μ ; iòsJ­ÂËw.Ä7mÍX7ÛÍv‚Ø¥…{­ lÚ¬Ú*‹†&Ë&”Ú”"ß.…ö…ÈrÈB†•Á/jÎé9°î°Â6ÑÑUÚVaü¶oÑÚ¹ ôô§Ÿ1æ>£JG¥Š*#IÁ¬Yqb°oE\\Ô¢a©@¹º‹·F HýÇåÛÙù`ΜeHLü;ŠŠÒ°aÃë¢] <Ü Ë,Žégl#šÓÊÂåRJw/^Œmï¿ÿW"oÑ"$>ŽÉKÛ[‹¯?ÿ¢Ò¦u–uç ÀýÖääæ ô`(œÅkÿ—h¿ûq´{øHR÷hn.bÒ3S5 ø¦MG”tÒÑÇý“€5¬Û4î)‰™¦êP©áõ–”d¡¬,ß°¤Ç“”4†è;_™Dšܶ¶Nòs{_$€9KJ2¥ D²ØØ+rš n½½GÂ)Èe„$i`2kÁÌBaaºümAÁ1YHx\=OÏÐneÉÉ8Lj•eï¾ãX½y Úìª$‰h0×#MpÏáÙ’ù"ýÅçàø_Ïcl²|» ú”øšß÷ÆTñ"±OfDuÉÇyâÙÐÁ¬ÌP_ôOÕAüï´A5Ý̛߽nÓ&iië‚7ß܈΀\é«HR?%H™Øïo$dð'3|'yž<ùç‚ô>wETÔdA¾CÅ„â/h¨>£{þ…©S—`h ¡2\ô.’|ÓÝä@Τ¤ êÝ„jࣽÊösK,vœ€Ûïš?þÍ·ÁK/î'Ý þÀìv¼pIkfÛ—ÙKw†Rà„ !!©b&œœŒÑŸå¨7N J»W¬1u; ÒùcßÞ pkÓ¼b?àÔ§½Þà¬ï‡|k Úy[Šg_KÔNʪóQ/™‹ÏGÉ[cQ•ÕÈýWù^T\tž"{Ѥ.ëêÛê%¡Ô&E¬“¸Ð8Œ»Ä„¾¹Y¼­_ ð¯ÅÉçžÃóÍeÑ‚$íÎ:E(±3šÄžyfº4û}öÙ>I¨²²Îà?mZž˜(}Qh¶¨ °Çç\3é>ƒ¹Ä_ La…íð-nG`–9†–[À®ÍÁ Á²hЛ·¢Þ¶ºFO´ŠñxçäNܶc'ÎfK³"³­“Ô‘Èñ<´ å | ©™ Í‘#G®Ë›€,•º£G7Šúß‚={>ħXt´Á=Úˆæ´5kÈöyíµµ¸ï¾ñ’œ3ò’í£_³§î»{o‚;·ÓJ§É"ëßB›TØT Ì¢ Ö¨²ªB¹M9ò­òÑf~n ˜yf&œ[QáX…Ô‡ÐêíkAêž(+CÄÍ7÷ t‰‰éر#Ýè3çåå Hø8ALýz8iS9ËΦrv¢‡rvî>ô$ØB AÆäÎ,$€ Wopµ=>ee§Û,¸ÓéJ!ë– m5"ç:@Ên!!ñ²ÐÜÉc“t¥£´4G¬ÙÙdIJú·<6#7½¼ì侉„["122Ÿ~ºi)E’L9„èq*¢ -°jÔ£ê½qpÔ1.Õ¶Ê–ž} Jþâ¥Q”øûˆÄqì=‘V†k¤bç)M~Ãåß»Åy;feÉÀ–˜'ŸÁ»ïnEƒ.K°›ZIàÿwæÿâTö©ïí^×Ô5¶ ;:^þˆ¬dhöì°}û²­¾üò $$< •@|G RÎBBr(3÷$ rW$ƒr’+ÓàæÞ#œgŸÅþq映eØdz0Ö¬fƒ0‹‡«É6“[Ëã¸a­Ô­w‰Ž¾^Ôÿ?þ!]9sÃÛÐaið]äùÄw»ÔTŠúÙ…ÃEÈ{¸øÑå$eÚ*:ŒlÕîÊÊJQ·Rmã3ĺ&¤¿/ßMWè©í#¨îL/S,I÷Í:¶³s”ŸÝÄsÄí¦ÏÒ‘ŽËðc/þ–þ…ûNîCš˜ôQaÝs|,œÄ‹çÒ^<˜II¶j ,Áw>ÍÕvP¬NA»ó@eˆ&29 ¥áïOÄÁƒÙ‚àM— 535³¶ÿì׿ÆF†0úøÈˆóRà”¿eK!Ùcñ, »œ+:1½µ$urð™ «/ÀÙ¯¿‘k7r­Z’;š\?ÿ|¿ô£¢º3wîxúÿc˸>ðãâf âá#‰@›A,0JvØ4ÁFEùK%ÓT½c$¶dRëСثWaݽ P1TÜÛy rÂêZe ‹vsƒ:Ä’vþ9´Ú¶¢É© æÐ•èd{‰éDÈò¿Š§9aˆ‡ØhŒϵ¾{²°aíãúÖœ°ØÙyˆg*æàº¿—ž‹v>IòRS÷2[(@®ÃÌB’Êó ‹çŸ¿WL– >’‰›Ë5Ž¥ÑXU‰½íË þ"b²]á°È{ŽîyLQl¯>͘+.Ë£©N¨ƒU³¡þÄh棷œÍƒ[VœóóQì> i•ß ¶X+K+<3ýéSg0U§ˆv,”™Ï è ¾IJ˜â'00úªMÆ›#ž!?©ªfe}+î£C‚ÕKbDu‹÷•¦v%$D`ôè@9YÊH+D¥CÜÜKá±kjoŠÆ×Ó¢ðµ e` ´àɲó9#…Pè*: ÛÊÍaÝl-‹†Cñâ;IÛaWXˆöÈQxñ±Gàlï(ï=‚xæç1>'|>"#dpìXš ¿WgM_>‹bx¾ÊÕÑ‡êÆ IŸéÆÆZyð3Ÿ=mr¥M°**N ú¼Ö¬9ºžÜ!ŸMaË|äˆýïÏÚ£yG¥’—-æ˜Ã·®C“¯/ìŠOÁ2áVà:[ZA»+ *C£F:;1 Ñ÷.::~m(9‘ïV¯†ƒìé¼oëì,U7'1³´±Áh§žQ± ¼cŒ×YWñгɢ"Ø­Z…Žº:­Wgî†_[+‰}éæÎ+Í‹7‚J×hâ˜={)¾úêCAZNÉA×”4°ã » Ë–Í‘ «æI5oÞ¢ÿF×gb@;}-îîЋY­^§Cµ“(ÀÑ>–Ùä`åy¦A…­ð„ϬÝ{nµ„õÙ³x²© Á¢óä}@5U[€,±±â| pèП±woÃyì•RÎ" TÇXêê,/ËOk0ƒ#WSÓ%žÅ’Ôæä0ª“'O&ÉB’9fÌXA|C°cÇ)¤d”ÁÅ.zèêp¸ð”Z‚©éá~HŸÝ…¨»ÌŒK‡1ˆ‚ËŒí¯*1—rÏ¡Bw ö8GìtE¾2mË·ûèk¸†Çbk^2à["#ƒݹH’:’ªY˜/DÎú3óÕÕ5ÚŠŽù·ß>ßè›x51|øXyÿi¤ýû? êtΈá&ÚÐYuN¶(Dð?>BùäÉ‚±¹¢CôsíŽLc½•²Ãìp2ÜB|f΋s“c1ÕUЇ˜0¥UÂçÃMð¸i<¦,œ-Ú`Ÿ¸/öÉsÒ¯#Æ‹2Q*_?Dð¼Xú›\Q=ç=Ÿ•u\&7 òò2I¬•Ï‹æu›ì¹Ô"Ë‚‰ Y’‰#yGp°+Á½‹†!öèLPÑ ŠØ]”z÷ÔS?‘¾wŒÊ~ BCGˆ,G’/FâΙõ8ç„KEÚÓÓeDf³œkDiptD½hŸVAö4Ò×âá?[YŒ¤©¶¿ìšj[ðêGŸ¢¸Ø@Ü,-;I+…‡µêê:Eé©®uuÙ‹IÁ¸«ªœýРEϲPíb{¤"7÷T4hV'FŽtí,N!v%°j*Gaúr|±SóÆcÔÌU҉ЇÍäŽ+Q쯔ðNÜ%ˆ]8NÂÁF0‡@/»¼™OßR.ÈD%¶w‰–Ñ$uaÁRùÍË;*÷ÇnºéΫbæüíµ u½'HÛ¶}*>Û^ÐçÌήááV(, @^]F4dÂgãÆ §ÅÁÖ6hr*ó=ëêŽ;9˜Ãmõ¸ùúÁ6¤«V=gTC5u.(hÌ€õýCïÍ¿´¾ÞzÐ÷½ìbbbd@ý Å熅*Õoª¼<žf®7o~ø/8Y;‹í–jÐPPÄîb¡ùÞiê]rÃP ³6G¿€™µ5£KtVmÍMhoiFkc#ôMM²̾ß¶:ìȵBum¾1âõFñ¥ i6l´,ãÇß'É]qq†4åp0ÒHCLÌP±-Htˆz|²*YúÉLŸ-ëwhw^<ah‹zw´µ¡¦¢-Õå8›UírÑZ:_‹öô*ÍÁŠ#Mb6nß­jtJ2çéY& »¸øJÎÍÍ_Îæ9Pi+m\Kåì‡Ü^Œn&ÉËÍ=,ÛM¯¯ƒTµ Pî8sÆéMþЙ9"ÐâJO|Œ~E˜YqÂö›#ÿl'¼~a[CE°xåøçà.qŒûbèÍ DÛŠ1L)Ã¥ÉÏsófd‰.¥#(_þïÁ„a'ˆåš5/KÃA1&fZ[Å-: y{Ç\²ÏÙ±c¥HÚÕ çÖR˜¡KÔj;¬ ‡9 fSí3·Û4ÔJ³„}ÕùföCPë[ŽÚB ¢:GS£K¹ot°ÿ yc1¸6ìDfæ~£Š·oßg²þ"#'wGÉ[ã¹'””5v((bw9êóÞå5X"Ïè³~þlÓÑÖ vbeaÖ%>›ÃÚ¢ ´2ï@A^ ÎT¹‹î°¥GÄ«ÂÅu|$M,Tz’† A*$i8}ÚOÌž[etñÀƒž^6&HÖ ÿ®®vCq§¶: ¤.0°ññ.‚¬Ü) £¯´Yõzm¯sJÞÒ);û àÓÉ>.H¸7*+Ýq¶ÝfE@ñ|î^Ži¶ÿƒ ã8³¼O›ÃÝÉ Ú­ Α eud£Ô ®’ø!'Ó+áõŸtFÖðœsó½h€]Ý*Kæ‰Ó‚TΡ/Ÿ³à``Ò¤z¬[·[æ¡dÞI𤇠é÷~;ººêÅ3W'Jj«ÐX_‡ºÊRƒ¿㉺Әty´ÁÃ+áá·HÓâY»– ²Ë`²ØØ™Òñĉ=’Üi.)¦þˆ ŠØ]¦zÇœdk×î–9ÅØ‰qhmñpm1ñúæ.QúsÀö’ªÑ‚îTj¦uù¤¡³ó!”—çI¯œœÃpqùN†ÖVà ¢×[‰ï˜Ë…Óµ¢mï4ãÅÅùbÆŒqðövS~”<š¬|»#þhrJMM$<……C‘S 7Tÿ2_Ù¾†ÉÞKá_l…ºWºP¼¸ñAñøÂi5*Ý[àQÞž/K;{¤…ÚÁaßzäüîÆÆ "c—TtI$n$/"b’zÖ. ÞŠ‰ñ0eo0G®j"ê>;;cÇÞ%ƒ¡ßÏi)ˆ¬‘•µ_ú®²¿c¡Ï¨‹ SýŒQ•¥ ˆÝåtvcÆxhÚëz¶uôXú‰…Û‹‹‹ñÓŸÞªTº+ÜùiA&Ü/•¼ÔÔýÝJƒ‹Ñ žƒ¼æOÕÕ5¤ß忨FÓ¦M¿W„îjµ´ªªLºPT{÷îEA ‘h.ÄæÎ_#!ðD8Áò/È\ Çĸ[‘´M:åTð¥˜pÒ#WØ¢º!ÙaÛ0ö€á·Ìa74wŠZw¢Â¥º.[8Ö•H¿2¦ü`r^¥Ò)\}£žY¨âefæªJQøaÝ£ª ¨¦Ž=O?ý"–,¹žæÈ² AÒÉ¿`GpªTçn]€N§s„»ÎY}³¾‚•xš5Ë yóþO.I§HÂõªxŒìî3gÎÈ(h…ï*F[AAáÜL¯Û§è©§Æ ??ë×ïÀμ¨fÄlÙLD¤1.vµü®Up°ªu¶@Œ£nø°r&W¸áQVV&s&VTTˆ‰Î0¸ººªJQ¸¦0ëÌUd›‚‚‚‚‚ÂÅÃɉKÿbÈÕ¯põ0hÅŽÙßëëëÑÐРjQAAAAAaøûûÃÃÃCU„ÂUÇ `ñèèè¨jPAAAAAaŒ1B‘:…k†Ëò±#¹cQPP¸±°¼ë-LÁ]ˆ2‹R•¡ `‚´´4´µò<º¸¸ $$DUŠÂ5… [SPP¸dL6» :3•ŸNA¡7F-ßÃÃéSø^ ¢b.ÑâÕ •˜UA¡/ ”@_AájC)v ƒì@TT–,Y"é.((ÀÇlÜçK/½tÞqÞzë-,\¸Ð¸ŸÁàäÉ“ò|£££gÜþ·¿ý €———ûì³ï½2lllðÎ;ïà7ÞÀO<ÒÒR¹}Þ¼y’è=þøã¸ÿþûå6¸‡zË—/—„ïõ×_7n/,,”¤P#†½ñöÛo£¶¶ö²Îõ»ï¾ÃÖ­[廆äädìÛ·O¶Ÿµµ5þô§?©;\AAAAAá‚Q±Û²e BCCñØcÉ¿ýüüdÑHÄ /¼€ÊÊJ¼úê«’°ÈPZ½zµ$6_|ñ…T ž|òIInH’>ùäùN2Ä}“lÜ}÷Ý’ØPÝ ŠÖ›o¾)ÃòÛßþV*Z$(TÊÖ­['÷ÁãqÙWî<’°_þò—†‹û&AãùðØ“&MÂÚµkebH’žcÇŽÉëå±L¡)_<•.^ω$ŒŽ°¦ZF":cÆ ù½|111X¶l™ü¯«?Rg ž Õ;Ós2­[uÐ[Ý›;wnR§]wqq±¬~7nœºÃn ˜›’ ¼ôÕ«÷ß_Œ—_~Yn£¹v÷îÝr•=þž¦I¡7bìØ±Fnýúõ˜:uª$>$xÿüç?e¡Ù“˜5k–,$5$+Ü/‰âwÜ!÷Á}’˜ñX$l}¤núôéXµj•ŒDÒΓÇ&Iúæ›o°iÓ&¹×©ؾÀcò;$¶<6ÏYÉ!I$U9æ&"¸MÝãgþoüøñ’ Fî_ûÌ:í]·Üëöb@bʶ5j”ÜÇÅK…ëØQy2UÂH&4Œ„méÒ¥øÕ¯~%‰†š'©n±T²rrrðè£J?/ üÍĉåg î§/ß3í¸Üé>hª%¹¢ ¥©i½ÁsÔ* ñØ÷Üsü¬'ßû33Ó?ŽÇ'ñÔ¾KÕL?kç¡m×¶i¤‘¿Ý¹s'Þ{ï=©r½ëöb@Å„úĉòœ4ó°‚‚‚‚‚‚£)–fEúØÑឤ‡ ’)9úÍo~Ó¯¢§ —FlúÕ?ªn#GŽ4*v½÷A³£é>¨´‘0$Ÿ¦DËôw4C’ò»šùR°k×.¹®©*Èà=šeIÞ¨(òÜiÞMLL4ÏÞê˜Fû:WStttÈwíú.6lÀœ9s$ñ¥Ÿ ɱfVPPPPPP¸ˆ ýçè“Få‹FS‹H²-Z$U7 ô’šLlÀýÑTIÿ3SÐ\HrG“& ɉÒþðIÆh"åñ5¿<¹ôñ›9s¦ü]_ ã~yŽÜ'}éúƒ xž$?¦`ä+ÅÉ“'Ë¿iÖÕ¢K¹oâÙgŸ•Ä“>n$RTIü´}mß¾]šQ¹^k“$‘ײfÍ#©»uŽjÏ:ä±hÆ&©£²J¢I‚ºxñbu‡+(((((Ü@0ë0Ý@âF¢@âAR£™µíÜv!ÂïQá2ý½)èWFrÄ}’˜°h&KÍDÊ¿ùmTê¸D©¯}^ê9^*¨`òšz›py-½Gå×Ô;à¾{¼’Jšjµë4½îËϑǿu       ð##v W4m“ RÉS¤KAAAAAAáJãÿB#-ÍJãØÒIEND®B`‚PKÚ Ô2$_ÝêÝê-Pictures/1000020100000276000000D22B3DEF8F.png‰PNG  IHDRvÒÇF( cHRMz&€„ú€èu0ê`:˜pœºQ<gAMA±Ž|ûQ“sRGB®ÎébKGDÿÿÿ ½§“ pHYsÄÄ•+ IDATxÚì½ œÕ™þºÙdUödÙTDâ†A£Dq‰ã’…¨IŒQ&u4šhL£c6ý':Ñ1cÆq‰»ÅdeQPø¿ßSõ^ª«ëîUuëv×SŸû¹Ý÷Ö­Së9ÏyÞ­f—À¤H‘"EŠ)R¤¨zÔ¦§ EŠ)R¤H‘"%vÛ·oOÏbŠ)R¤H‘"Ec vï¼óNzS¤H‘"EŠ)ªØ}ðÁö•"EŠ)R¤H‘¢Š‰&ØåË—§g0EŠ)R¤H‘¢Ú‰ÝܹsÓ³—"EŠ)R¤HQíÄίԥæØ)R¤H‘"EŠÊ£y±?øôÓO¹•+WšöíÛ›-Z˜;v˜×^{ÍlܸѴiÓÆpÀös°lÙ2óöÛo›V­Z™ƒ:(óù¼yó̆ ÌÈ‘#Í^{íe?Û¼y³yå•Wì:ûï¿¿iÙ²¥ý|ݺufáÂ…¦[·nfðàÁ™}Ðmì»ï¾ö»)R¤H‘"EЦ†¢»7Þx£ÁgŸ}ö™Y³fýbWWWgÆgZ·nm^zé¥ ![°`9âˆ#LÇŽ3¦ÜW_}Õ4kÖÌvØaæùçŸ7Û¶m³Ÿ?öØcfذafï½÷6O=õ”ýlÓ¦MföìÙæÐCµ/^¼8³­[·ÚmLŸ>Ý’Ê)R¤H‘"qX¹Ò˜?ÿÙ˜«¯v^üÍgeâ­·Þ²¯jâÑ /¼Þ'q;8?ºwïnzöìiÿFYãïÚÚZ³çž{fòÜ¡èqÁxAäºvíj?óÍ7ÍÀíg=zô0K–,1ï¾û®Ùc=¬zǶ j~ø¡Y´h‘ÙgŸ}ì¶Që”dB‡ b·Ñ§O»Í)R¤H‘"Q˜5˘n0fÆ cV¯v^ü}ÝuÆ<ÿ|Ο~õ«_•ÕWgýþÎ;ï´¯jÇȱ¦ˆ‘ØAªF]ï3T5>÷B‡*7tèPû?D­oß¾fòäÉ– ñ€Â§fVÈß–-[ÌÇlÚ¶m›ÙŸcšE¥SS­® ø\××uS¤H‘"EŠÄ`Š؃cÃïvî4æî»Y²$ëÏÿýßÿ=3þEC9$½FÍ£Ø(æÔ©S§Ú¥sçÎö3üò {_þò—ÍÌ™3­Ùs­˜tkjj¬òáó~qlÞ¼yæsÞYèú¬£ë¦H‘"EЉÁ#8.ß:]øÕoû[óë_ÿÚº:]zé¥ÖŠ…Òþðë³îÅÿøGK¿ò•¯˜¿üå/ÖïóæÑGm~úÓŸZUì?øµ–aáš0a‚ýþ›ßü¦9çœs¬ðrë­·ZÓ.íüõ¯m@*½Û=üðÃÍ/~ñ‹ÌvÙÞ<`Çã»…°véÒÅÜ|óÍféÒ¥vŸiãë_ÿºýþG?ú‘uÙâï+¯¼ÒúɃ?ýéOvˆB´Ïû?þñó¿ÿû¿¶Öý¾Ðà<ñ»)S¦XèÔSOµíT@ܵfÍše÷I·ÅùÄ’xòÉ'›/~ñ‹âV í”÷ÙgŸ5£FÊ:@оu.‚$V­Ze?ïÔ©S&?=L¯œhn&¶ä±¦ZÌ´€ «æ_Þׯ_ŸÙë¥H‘"EЉA5.ƒe˲~‚€HÍÿ÷›³Ï>[¸à#õÖ»ï¾ûÌ3ÏØškûõëg !ìâ§Ò1Û =%’ H;‘)R¤H‘RW½ÀÚëŒ9sæXEÁ8øè£Z«.ABÁCó‚±E/¨c(r” ]’…Bâ tþí¢ì©êöùÏÞ\sÍ5âÄ~h ¥î/ä”ö¼€X^ä*—úðý÷ß7'žx¢Ë“î¤nâĉ™ßÑ>ÄŽw¸…’]¶/´âB!vÜ\^(i3ýžÀ¢W;tè`o ýœ nR›x·ÑÃÜŠ~Ž/ÛàæñIŒÁ6Ø6D1EŠ)R¤ˆ‚÷ò¢oßüª]ïÞy7ó›ßüÆšQžPݼ‘°Ã‡7O?ý´5Gžþù–L!€ |AdT)ˇÓO?ÝúÒ_~ùåÖ|¶ûàƒÚí¢~"Æùˆžyæ™V™˜|½¤­1iÞ<ðbçó;‚šc!M<‚U5Cø€øŒ3Æ’#Ì¥¾ÇÉg~…MBÝÂ_6Xò)CUøÏ¡~ãßȺ]ö “(ª~zçwžýN³bèú€íwÜq–¢Ò:fZ| o¼ñF«¼¡&b6Æô‹‰Ó+Û;÷Üs­ïšpñýóƒó‚’ÁDÉc=ÌÒÍ~Š'e ÀܪP_·b_ÊïÒߦ¿M›þ¶`!ÿýÆÜu—i_¯ „fÝ::-FÁô\¥¿ï·d‚ Ç*ѱA;ÖÌŒnP O@¨ -- ~Œˆ‹Ö0öt`ª“N:É̘1Ã(âÖé8ñ=Ù*ðƒÈñîUû&`[˜h1kÒΤI“ìßl²Ä6x±] Œ€`AiŸ=ܧøÒ†of_Hß±.V8|è1‘bá£]ÌÇ< ø÷M‰ß¿ýÛ¿YÿAŽÜ¸GuT†`²>$m¿ýö³¾‚2àœ©Yè6ñõ‡²lƒmqüÞ¢M^±K‘"EŠDB'€yöYçoÕnÈÆK 3a‚1ýû§ç+E<’d'$Ýwþ ¾áÇcÌ‘GÂ8ü5 Ó!äâé!hÁ«dùñúñlÿ†¤ùÒ]䋾ýÒ—¾d_  ú{ˆe¶õš…YÏ».øîw¿[ï·Þý÷ƒwß¼Û z]I/Ä‘W¾ãEd=”?|î.¾øâFs›¥Ä®‰ƒ™éb(ÿV©öyÑ~”9šR4Nâé§Á—G &–“O6sÞߌ&¯&„oêTJÖ8/fé ,|—¦J*BVö&pNˆ…ñdEH±+Ç4ÏŽÛ,Ûé˜eû×4G™¦w–$˜617^}õÕY}ÒÊ&Wú_ ^,¨j~âL²DÚzU¹J€¨\Î)¾‚š[7%vº#FŒˆlûäàÃ!Y™*[)³)jÜFü4HÓB»ûï¿ßJüQgàF¢Çâ‡?ü¡=Þ8 ݵ×^k“UáL LïÞ½mxzc¼¯RÄ@è(C¡[»Öù %î”SâæŒÆ0ÁÜ‘#Ó?ŠžÜƒö…ã:Êɘ1)Á+õüéO¦;);^{ÍQDÉ\àQSš:fÉr·,ÛeQ·Ú¬5/È2I–ÃMC¥ 0^d…д$aã†n°cœ_e+(‹yš Z]bùòå»ìg!ûš»À믿ÞàsäÓ(`Hí’[||Øû¹á Ó¾ð #%v8ïBìpêDJ§jï{ß‹ô\ã yýûßÿnOã 8W’Gâ‹AnB|8Ž=öXsÛm·ÉX|JuÝWB$zOŸnÌ AÆtèŽ^±–³œÄ®Jè䙵„B‘ a’?Þ1½ø¢c£^çw8Û:ê(c=Ô˜'seo6UD VàPBàJcÁ Yî”e§i˜¤˜Ï |u² ”¥Ï 5OÕ6Ò›¢é"±ÄŽ„Ã(9Z’LµÉpñâÅV5"¯Ñ<<0˜*!ìO@ÍRεr£çô;ßùŽ k'ñ#¹q(’àá× ³CÈ,m’B« «_aêƒÈ«ù§ðIùþ÷Ò"z ²É„ i¡;î8<¤ WÜX§u^Ôž~üqg»÷ÝgÌc9däè£Ós_‚1æÁퟫd²Ö묳R‡É›ëùäÜnÌa‡9æñ&öœ<"K©ó¯s‘¹(ë÷¤1!Ð;È©M°*a®%È“*“T¢=/»ì2ëóFP)ÂXÓ'¦RؘOÉ ‡€áG©Õ%ØJ ÑÇ—Z]‚}gü ò!,¶ºÇ‹šØ˜ªKT%±C½"áð¡Ìš=ð–‹´ÉÀ±ã&Ô9¢ÌZ3E&"pÓñPˆ™¨/‰²]/ V„’Ïž=Û¾¢ÑRtD"ák¡f`ÎsA9¡*y_eṡ‰ƒt¸¯0õ£{¯oœ ÃÅÑ8jF=.Î5ô“O>iÍíš\´lñZ°@ìUVaÛ!øB 4):÷2÷[^@6x¡:AØ!&¨wr{“ô<"‹òL´“ú Ôè£c …I¸¯>þÍoL;ž…‘#ÍšQ£L/H&m^(©dÿGY;×y©Š‡“{¾x‘ÞW9@ÿðÄO”v_¹XbòWžXf–å¸íW›+VØ{ŒúȪ :uŽóŽ;î° R ¾yççH̉ í6ož£:eÉÔ?þ|;1£Ï`°G™`hÿøãì<'á¾Â+Œ3»U^× iû’ß!ÂyÆ859fo9'–”«Š‡zŽ2êIlë}U åÞWÖ¯®Œu´Ì(fbÆäY+,£Ž{eÏ[g5[à@©Õ%H5¢(¶º#%šaV— ß_SA[„’çÍð90íá³"g72iÿîw8Ã5*Ÿ:ȨgÚ¡ È1ŸN‚ÄuÌßJ^GÈ€ îVµëÚµÞ@Eg„ù€‘Y%&oï$"*`Ngf&ͬFH4çÞ›‹2llÞ¼ÙwÔ$:\`UdK2µ£žÉ§3„ó)æ:·ÓV h $Ð>¾š(y³¢Û… “˜;È)RðÝ xñO¥¦*üU˜ë¥kA¥ï«óäù=ðÉ'åØjVËõ¸@Ž9ë}å5{CšñKå¹ÂΫcGÓRC ý¾*aÜW}eɧÚõ6Ù+OäJÞ›-é°˜lIÄ« ƒó¡ÔꌕJöÒêñ#±¡_<¨gu–}ˆ°Á+˜¥5öv§JGmn¸Á17é Œc7ŸïÜ™žç2Û½ä’KÌM7ÝdÍ:øQêÌ«×]‡Tà:Ô"Ó.¿|w´¥3ÊÀâ‘ý½>ê ³GÌQûm2B8˜½¢(©É®Ôd¬…J1€Ð ÓÑÏ›7ÏéeƼÇ}ÏõR·±W/c0 X>R0Ë`šbPÁ¥)ï%§ŠèÝÛ|€)VÈ‹Mp€<ÐÞC:ùã2=PÍù,KßÐî«"Æ}5ÎŒ e?hÓ¨^sÎ $K‰&N(}/rÒ¡j1àEÀ Ÿ+p‘Á|ªÛÊU]âtË-·XEÎ[]³µ·º¤ý@Ë%àÿƶq b=Ý/ŽO3D°=üæ8&>g»AÑ­l‹s‚ ?Ök*Hlå f¡\@Ì“ÌJ·oßn}Àˆ¦ÔèÑR÷;©ížsúéæÛ2X ‡Òšú¤ó»U¬6òyW 'ó@ äy|ðÒó\\»wÝu—5!Ðæ›sÎ9Çšï½÷^kÊÊÈõ::7ÌM\ Hê"¤Åðe‡Ï´Û¯Ÿ1Ìà1Ûc¾ChÙÒÖ0&(F‹MãGˆßáþ‚(³Þ3ø£Öñù€à/e¶}Î#3dÚ#ðˆY<ÊI@, j•Nq{ߣ’ xcÄÓ#‡Ï)JÁFøÑ¡Óö=÷ÜcÍ£¨î¥ï[ríº2û§zÑ´B¥?ƒŠ(‰]™¬lÙ²ÅF´|¼%œçŠÞWBrÛÈ=¾­m[óÿ„XM8é¤âï+ÎcNÀËA™‹›VL „ñ½ó™C¹¯J8Þ0e‘©‰Ž ÂXYN”¥ÆÔd݆7ïýd5û …Š>¬ÿþvß0ÁbÖä|a…„â G¥‡N:ÙßÓ÷b¾¤ªÿó··º„n+[u ¾Ã,ê¯.o©¿ºëªëMÕ%ØÆ—ÆZ]"kŠ¥“D’Å—âg?û™ù¯ÿú/³FÈ e£kWn¼Á2` ÒaUĦ·icÞ‘kºtÐáhŒyåW¿2³3¡“ONÏs‰Š¾1Ìg@”,f–Žù˜„42²ÐÈY|n>úÈ1/¡6]xa½Ìè :<^Qúzaf&H_ÃË•¨Ï¹€JÍ5༠PË}bM¢2ì*à\yÛÄT§æºrÎófLë Þï¾ëv!M¡o¨Ø}Å1¹Q°-¥oº/Œê2`/’0úí·~ŽÔ3BL¬:ë‰r®Äyë¾"W]OYž’e½qAd9F–#e©ÍaDóVNðVn€¬h°ðægC¥‚@¡Ú)ZA¢Þ\vA¹Þª©º‘ÀµºDU;f›H­êTÿÿñ–™{2E»(;òPøeIGv˜ "õÚePapÃ$…Ó1ªQÀà’žçüíbB!2I™È`r>@@&Pˆðá¢3/Ö¯‘Aè[ßrÌéÄ»ï¶ÿcÞ`†Ì±;vl,þPUÕ.Îõø(¢’Á ‚BVDÂàÈŽ—û“<þ?>{˜°¸×âFäír°0éñºPÚ…ÈÑß4ÁƒHœ{nÎà±j:ÏWŽ7o?;Þ,Yæ¸Õ ì_k%·x»©a& ­.4™G ôªkQ•¯±V—¨JbäTO^^QÎDckU‚Ž sDB“ªzŒíBúèø˜ÍÒÑ•ùÐ6úóœ£]M®„`â/¬ˆd,'™*¦[ZÓΚe^Þ°Á|,ßÚÅ\±Å¤ô•,‘–aÓ6fŒÄ·ËóÀ}MJ ;Ú tÈq‘e©"=^L<Ðh¥ I?¯ ß!üˆ¨ i¥NHó¦öíÍÔ¶mÍNO2ÜÐÚÅ…rwË-ι&TÈù'òv!úŒ/¨‚2!>XVW¹®ý¾ùÍzcL5œgâ°ò%5`‹ O°ù3(R– FÄ÷¸*at°.¾w(ט! ²`}¢X   /`[DQ{¡Õ#ðÏ#¸Œú´ª¶õêÕ˺9ðl$ĶQ,‰„%°‚v5•mkº’L£Dݲ.çT}ÿ¦{ôÑGí÷|æ'ÐZ½_9@àíè~¡"Ò&¿ÕªO°_TàØ¿‰Õ+/Ý d…»‰fÃ?‡Ö2RtpƒU¡µKg¸d‰ˆÓ:9Î8O˜PyzyùH]ÁíúÍÔ‚Ç9/³ìX¦]ö¢+®0]™%ÏŸ_繜v!È‚÷£òý@e7Πi:{¶yvòd[‡˜?"rk#,8OômÚ³QbÚ…ýìg©cð&M ji¤.–ã%€rGŸF5DÚes/ˆ±¶‹ –à™Äw>ë¬x—¶ð³“óß“(ã‹§Ï«†ó¼$á “+>Ixq3À¯OSDAjðYã;Ò„ Ù{Üu+¡ú4ø/R›èº¬d^†BÄ nD²HíâÎ@Ž9|娀B*IE@zÚxê©§ìúJ¬x&)ùÅgú{$ÇC4-õØ!~~@P!i”ƒ¼AtÙ'^øÐ1‘ãs¶¥æ^ö?ÎR O±ÃI§wHd²Á»7²%4ÌÊ‹P¨(ÚNn3"’ÎΟpú8PV»YŽÙÊòåV™ØÓÒèZ'š•>‹éºàvÙ>\(v´wë­¡.qð¢Ý¿\u•ùn·n¦³×¼€ÊÈ  ¨ôõ=yüxó5|x˜ñùf‰¡â"a{iëRüïʸVÅ‚T QV!(ª]!\ý(ǦÄÚñZ5Ç‹?æÓO;Pí"®_ðŒ0áãžEU­­@ Tü‰NÆ4 KrýîL•Tؾ½ôuP¨ g(dTØ@5ƒ8¡|A¬ðy£®ëªU«l"e¾'í¤åÎN\e}Ò@ÀX’xr@v­A–/PÑ4ør¦U!x‡Hâî ¹ù¢åOBLÕõÏÓü(Ž0ªM@Þ‚Ê~‘þD#ZQ-ñD­S5U«D±-þÖvY·)"bqÓº€¿ ï̬˜¡»uéèÄ{ó€b¾ÍÓ¡“Éš™YLžœAÌʹ˜Í|¹¤ÂDQíR¿›\3¨{²bëñ®•ãíF‡æñ2 ¨ƒ>í#¯3H ¹>gBÞ Bêx¬ž•mŸ"½Lk®%ÛŽ(÷O¥¯ï;8gËqή©1 dr2RîáHÚÅl„“5“ ΧÌ<³Õ”mÔ˜:ÕtRR§ÞâµµÕu ô[˜ØX w1Ôƒ­(˜è¡ÜÐGà \I'0ÎýìUð]½“^ÈWû¹ ÐOÓ¿Iÿ]GýZ&•æ8ƒæSí²ØÝJŸq‚˜„I÷HÌ„ ,ñƒa%iðí·ß.˜ÓÇ`¶d}rÀ¡ºÑ×¢ÖMÃÝÆoõ€2q”pTðƒ¢èrƒp%¯oi÷ûtD}ú˜ó¯¼2–vwȵúðÔSM§¿þÕÔ<ø Y9¢mÛÈCfø~ÓJð·ÛIî·=T¾¨æã%È@ú0Òó¸Ï[RÎsh úWƒ[p'ðõ=^é«Zí¹§é$ýFôS6Q$W ú5ÞsùwÓo3ÙÖÄÆŒGå/\Pì\—ÞÀïsuÛ%U  l˜\¿@FW©Â$«I{Qõ(¿¦¦H>¿Rú8MüóŸÿܪw»ÛkIæVLž7áÅL‹iÇöñåò„B1„H¡1!&Еb†Ÿ¤•ßÀÀ¶½¦_õOd?ðÅ»õÖ[mûM?ì  ÐTE;öE‘í³ÎÙ+ûĶ €?ˆpS4ÇÆŸÇއ‰Yww™ÂI"ë•u|aëQšé‚Ú}ï4=Ü™„š93(fI!E—|¼ø.¢OÏ [:¼À´Yòçuïßß\íkwk÷îfŠ D[¹ä IDATÓ”RŠ hE¯/çaî\Ó|üøØÚůòE'·nmÈ[ßNö¡ æ­ˆ¡íÙ§ˆÃïÎßî¥òèŒDÕ¼&8jѳÏ:9î„ô$å<‡Ò.}…[]ÂFâ˜`“p¼¤Gþ¶¡‚ƒq¬^à&DÇ«S'ç‰/ïzBè„$2•{¼XF™‡“íj½SxÂ&4 ÷µð™œsgo¥ÌyAôªâç-× òVõçtôVlªñ/7PÈŸ˜˜íz£j½ûHþv¼dÍÛ&¤ÑoŠU¿¹|ÛóV­@-D!d?PµÂQJìâ€ø  Ž -,°Ì°nP WM¼Ì1ÒãCˆûEÞyR­äl—Rq;f©!»Š\_A­t}ûõ‹õ¾zøá‡ë¹1€Ñ£GïÎGWå.Ä(ä¬íÆx¼u2äª#í*už£ª÷ÎŒæŸ2È­ôÕOû<—Ý.ª8ýô¼>jI¸¯Âh·Ðñ¨¼v (=a²—ž ¸€@³K/½ÔFªBºH¹"JwÊ)§XbG„*巴̘˜T‰Š…3Ʀ"¡ÿ…¸Mœ8Ñ’'#%¼ˆ0%©0D IyˆäêÔÐõGÒBèȇG¢bßér/±-¢Vqy!šÖëûÆq¢dñâÅösÖ‡Pò[ö‹ýãÜ󉌕t^/“ò…§ãJ‰qÂÁa÷7n´öí8@ú†æ“O>1sçεµñOøT$7‰ZŽ(75ÃEù€C}ë Æö¹q¹Á{’I’ƒlÆ Öɳ[Yìï½÷^›¿Ç‹I2«ù²´Ç¬nψ.DP» ÂÚK‚œÿ•‡’ó|Ô.)@˜½C:4O_·ü]î«“çÏ7$xÿæï~g>qKíDÝ®¢³Ç”MÇ‹ùÙ øm%FÞG­)b´lÖvc<ޗ೜™c=^üZ1ß-Yb†É ù™ôo•<Ïe·«Ñ¡îq$ý¾ £]ÿxM»ÛËZ2Éá” Hã^Py° @ލ§ŠòåÏó¦Q­ø¨iNO# %Ma#ÕJP*úQH£7Îùì z€6•L*(…FÛú.£ª ˆÉwl ÕOsØ¡¦Ä.&bÇÉ&ÍÒ‘s"äbûöífÔ¨Qöâh^K„(lY·ÎL:ÕÞ$z±)®ÌÅÃ÷ЇI%pÖëÞ½»ývû×Ċȵ“'O¶rr‡£îÈçÃv!™8a’_­ý]wYšÍ„ÉG„ÀvÝòZQ*IµË¬b‡¹ðÀ«öx?/N3™$Ì‘ÉÂig[»ŠC}‰ª.¹ä’ݾ}øoBîPî¨õHrЀú”¡·×ñ2(._n>!)qìÇKê¼úÈàÚŸ+÷+ržËi?Ú>rÌåø'â¾ ¡Ýmä’tÇ£\“×òÚí[€j|Î#>ˆjš—`bS41“«îüóÏ·Y ‚ùjçžÖGcLG¥Ù*KXRá«.Á˜ÏØŽbTyBTY"ˆ”²o;ö¡©V–ˆØ¡®i„О{îiU4ÿé²7'*™©å‚3Æ&C8²÷–N…ô\@njfüfüøñV½C­ã¦„Ø!#sƒÕˆƒ+d¡`¯§-Ú={¶¹öÚkÍeró0ŸÛRDÛ0ÚEñ ªåW‘vI¥±Ã$±«Ôñvzýuû>Tf€Ê}W» ¿)gåÊ•f§7‰*ƒ©&›– %ÕyüœBi7†ã=Pfé̳·FRñã¥'ÄUˆÑ¿®¿Þ,r•ŒJœç²Ú]±Âæ·ÜÔ£‡éXOÂ}Z»îxdU»€³òÛW± vuÑÒYšéÓ§[#Ÿ*‡‚ÇXˆš‡ • _4ÝêŸ_å£úfRJ’iâ_Èc/>p0þF%$‰1ÊÛg¿‚*AHê¦]”7ú|ê×òŽÿÜsÏ=gKžñ=ÛCÊøÁ¶X“3 ~„´Ÿ¢>"Kw‚BG¡uX~[Of}jÌ!§v’Ô“ô!rcíÁ¬‹ÜlÅŽwn>B§¹A—-[fUnh.:äõ^yå3bÄ3sæL›ŒÂÇMøÁÔ“yýû]HhºÎ>۲Ō–}Ü%¤ñ=!7= 0O„Ñ.&knZÎ eÔéò¶Ë@…o‘cøå™%&òxQI&+÷P«/¹"ç™ûŸ ÷3¯“N:Év–õ~‹2L±mDÌßL(²¤a µÝˆ·täd¢÷±úPùóf»¸ŠÐŸÉõÚSцýö«Øy.«]ì!7dÂܾ€ \î«ÐÚEl€è0vÈØ~»òL›Æ‰Ž ‚Lž }Mƒo M¸8áKG©,ÆBÈ_Œu:ÞÑŸ2âËqzâ‰'ì>ò·V€áæ„rê©§Úu ^Tu@‘¤Á XÉH‚ˆ‚R©â·Xá0ÕbíàsÆduòæ±£=Æìã?Þºb¡ü-_¾Ü¶Ãyƒl²>ûÍ>°½Y³f™ /¼0SUpL:V â áŸÍñïÚµËîKŠ;+koÛfM¦H¸^Ÿ ..ªïŸuëfw •|NÔ ß£Öñà@Îî¿ÿ~{#ãÇ,‚$¹uB.0ùªßëó?7!³‰Ú2L=´E’EÚeÐ?÷裭鎇}g„U üíòÀá\”&‚ÛE9bKZÈ‘€Õv¼®ÙáUé~ûÍoÆzž‡Ô l—ó‹O UDxa)£ÜYÁíFy¼¤àYºÔlo×.9ç9ÜF­ÊÚQÈë‰\?7§d¢î«|Xæ8ï\`®ÎDÜWaµ«äLƒG"iw É‹.·ô„­™!“eƒß\mÖ °·êÃ]ß›[«˜·šƒW³ñ’-Ä–   @¥ ï6ô3­@Q_¤Þ@Uó¶éý û¹ê]?h{À¿?Œ]TBHh¾ÑMžØ!K“À‡R/©#x‚,ÐD´¨O@3Wýê$D•u˜ öM›6Í:Tâ—ÇvŒñÙƒö Ó×YïBfÔñc¶R*›o»í6{ó3kÙˆÊ( Ž`9ð· Ñ}Ý5ž Å®+Ý.R;ÄŽ‚Ùe»Ø—ÙwŒ&—üíoféDâ<ÏÙ‚Exp;à<4ð•aÁ‡„š½$˜&r6‹‰(Ôv#:Þÿ”ÙõˆV­Ì#òlÿ?!Ôqµçñž·çžfb›6æ…«®2×É=W‰ó\Öñ._nß>ÍáC•´û*´v•Ìôõ¡¶»r¼1ÏÊk™kÂí_yá L²¿º„ÝŸ¥\`êõ–5 (DÌ"…½eÌRDDìPbµ‘S$‹›žÈÈÄLg5.9hööÛ¶öÒ,>z¼¨ 7nÜ8«ÄAÜ0ËB‘QõðÝC8âÓžIü·J6ïß•Gfikq„Âß®þðúе‹b„Н ~ËÈêûñΜi}‡v ¡»+Ë /Êóüµ¯};‚@¡ìùóç[5º01`""J–Ù,iP<Ñà‘µÅñrÞeÐl!Ïi¬íÆy¼¤:‘ãüÜ{˜É2q,Ä~žK=^'¨L#×g{ëÖÕs_…ÕnbZ» ‹ä!¶Á¯®:Gs/¸b^D8"i½uUýÀ*öزÜ(„ ÔÇJ—-kÄÎ/Eô¨93ýÞïä8gî\3¢}{ÓrÓ&³~Ñ"ë³ ë’"…´(˜[™ é ËìäYˆ¢k×®Ö ‹íß»bö7çì`…ã±Æ-TŽÜß~;¨GÓaÕ*³èÙg­ƒuµïÙ_®àr¹6æ p•ØgfÉø‘âÂ|ÿF6=dû;÷;³P±7B;²vC>ÞÖ­³CYs9ž8Ûûx™„vZºÔ¬~ðA³êàƒc?Ï¥og*ìÀï\Õ¦Zî«ÐÚ]¼Ø6n´I÷¹Ñò…´Ûª€ ø O¤H‰]ù(%¯ýÝôé6o×**óÛ;¢~‹ BsÄfÎ[oÅ×nRKMÌ{î1ƒQìrl7QûŒùX&ø© :餬‰+µÏ=C|ë­¦öå—ÍÐ'ž0æG?²I§#o7¬ãE "¸@&lÙIìy£]‚]n¸ÁÔ-Ybê(áçy.çx݉rçýö3oS÷UØí–0Á…¨èež@Ä@¤âþjDó£°!– Œ}ùË_¶Õ0S^yå•6>h$"Îeª$ •àR†á·¦U%ðƒ'É1• ØA hÜ|óÍ6wfÖI“&™ïbA°?a`uóV¡À?8D"ŠÙ?\¬¨A ãe—]V/HBÁï4 ÀÚûE`Q»DÓ²-"h5J>U²© ¶â{ ¹’–-KÞÙ‘™›5O/ä©U "å F”PŠ!­A( ³”T«­­ÞsI`°T“ÈxýúêÙwž%Pb~ɪÉŠèñt]Rªj‚ÌQ+µÑCÇ£<‰ŠKB…' pøkÕ "dÕÉ"ÓÄßþö7KúH„`Aör8|ëÈ1GJ 9¢XÉ ©¤9Á¯íkY/R¤Ü#“}¶ÙRb…üŠ+¬û®W¸QAæð‘‡(²mþÖô+ ŽâÆ:Dï²möG÷ ¢I[º-È«–E+4IsJì¢F÷îÎ;sIíè Œk ¢‘Î:‰dÜ7hÂÖ^­v¿ "“Éq¹ƒÔIÇÚbË–êØ÷>rÞ÷ܳi<'ZzoêÔêØ_Uü¡¸Ç²¤úhˆr<*¯ð„­ŠrqóG¢hi:"ý÷Êüâyb©,á'XÞ*TŽ)ÖõF”:"`ý …1Qké2Ý”A߉'žh_AÕ/H?EÔ¯ªp(zJ쉕ùŽm ¢©^ºëµKQ¹Z±õf·v¦’@’»`™‰ï¡ÌÍÀ„;„¸A™²hÕÞóγ¤Žk°ï?þáD('] Su±©(ߘõ&O¶ÊOr?&(T;úº<õa5rP”Ò O¸»´:S‘¿Ãˆ`Å)$Nkfû¡U(”¡´2€l$2¨ÊÛ!E Ê^VRP…¢s@¿Á¶ œ˜yù Y5¼9s›2*¯ØqÁèH4"+i}Øz§wŠš¸%,éxþyçÝ n@}$·“UL–²@‰‚*‹y¢-OÏJ ‹£ìŸ=òs%j۔Ͱ޾> Sì¸Ò×¼`vÄî÷¿ÿ½­»Zj9-75»BšØ6¾v$1ö‚ô.'ŸV¡`~ƒ9X«PPMŸ8T5ÖGIË2d@ÈÈ_Ǻϻý3¿ÁƒíófY­†´-²nœ~úéVÅDéK‘b©S6ÅÃFg—*v¾™g_G!âüDœß¯,ƒ C·nÆ Ò¸®ê£th‰|n‚ ¦Ø¦àc§ ¡\§½ðûIòs»Éœ jÚ}›ŽGˆ aû°ŽÍCîøþÐ௠>$èGYÃ/Ž Í¿Éç J#îï&2ç]K%z?Ç7OÍ—¨uþóŸíöIô{ã7f¶qÄ·ŽÀ ˆfO3H¡â3È Û!H‚ï” ú÷ËÛ&`Û˜qª€õÔ·Ž}ãoMÄìOF̶Øöĉ­É8Ì<|ÕŒæ‰Ø fIJ’4cL‰]v`jBNLJèŒ3’¹ :ïÔ ®æ ‰lÎnWM©À2%Ù„¦ÁMÅÇ ¬¢n£J$ù9ñ>+i_çœHýØ®¥žhP‡UKá­Ìà­ö‘S2çýÜû7þkAQ©àÛßþ¶}eûÌ»Ȧ?q¶ý‚Äù+™B漟mø‡ª¡#xÕ˜")ÄNqÞ=ôÐä D¼Pš’ÊP(èh v/¿LfËä'üê46)÷TØèÖÍlÇK ü¸J¬“ ¼>v>'íFQ£bG¾¤BÕ)&©Û‰<òÆŽßw)O E Ol%džF±f«íž—À4onÍʼLY²I!vªÒ%É\‘ªu¹4Π̀°jUòüÿˆˆ%° ;ìoéÒÅ!v\ƒ$;¯]S"vC†8ª*õGu¢˜4huMSœPhŸAdl… O¸rÁ©¯Ÿ_‰+ÙêØ6uÔ&êAJ±Ó(ݦîLœ ZadÞ¼ä훦™À Ûˆ‘©é9~²w´©¥;Q´je6iíj×'*qHͰõQ…ž ÔÂKŠÜ&Qª¥€€ƒÕI÷ûLQ2’¡Øid¬&N‚¢³µ47NvPs,QPÇŸœýâÂôEÎ=×Ǥ±b“ ÆÝI;“ôÄœM)A±›¥?ëI€|'Ñ-@ûº¦œ¿.h<ÒL !©˜ež° $'Öt'ä±ÓHT¢e58`¢N `Ð@ ƒüà6è‚HSüѾ÷½ïÙêø²U Š ÷œT– Ö;>m|Ož9¶1}útË~h²cö•v!Žxh˜€ üàhSƒ+ÔŽ4%çž{®ÍÑGÄå—_ži“Š ˜Y9^`ÛùÉO~bÛc¨HÁ>è~u;lØ0›ÿmQ¯žsÃ~`¹®Od’ã¥JRf©)6?Èg‡ƒ89í0{&3f8>v ¢Ü´ô‰N<ð±Kj%H$¤® šú>$Š Œ%ñ¥Ö‰úˆ(2¶ŒÂ– ñÂ÷M“ÄÙá3Ì‘L›TŠ % $Лz„¿ùŒuù$Œ¿!e#¶Dê !ˆD¥ýê ‘«mZ$yéH7i„xòÛ#°ÈYpÁ˜Q£FÙuy)±" )S [šKßPµB+_üñl°OѾòlÑ„•0ûÅy`_!ulë7Þ°“c†œ~ÚÈÝA’Cì”@%%uCšÃ®€»§v·sqŽÜEq¢f×.'h‚};æ˜F >#Û;„‰A(©iO(C‚耤U!¸I3A\4p"-›¸˜cË)<"×d*ˆ‚ý|‘vN8áÄpÊ)§XbHJ—,±ª×níto{¨`9"wY¿ÙëSFL’ææUP¦Œßz+WP'ÂÉñBö¨OëD’}M@ÖP㑾ZrmAûZLUŽjEóÄ=HI(-¦¼Jò)²ƒÄ¿DÆâgç&˜¬$öTõlS1ûõêå!U‡’„&l†;›5sÔ0z¸FI rQµ. œ¨UÂC$âež°QŸ%Ì– MS¢•ò!›JÙ™6mš%J_ýêWmmW%E€ Ô…¥}Ì¥˜{ƒ *(Q†Ù…}Sd#TÍx>ö Óª7eJòP¡Â_ÖL·µÐõ#e¼ûÔh5—Äì‰*vI(-–ša áå˜cñiK@Qú®šVbܸ¦s  HΤ(M5p Mü›´ —´âDîñ(ÄgªŒÂV ƒ`aB…¨h}Uˆ ^P ¾ãw|¯>lÞï0Ib¾…,¢¦á_YR8Ô2-cÆ‹6zè¡zm Ìaâe[˜Šñ½c]¶Ão§»)§ S$,f?Pù]®ÊTº@©Cµc}ÝwoÕ ÖÁ—c$±2êaßëáˆ!íÚ¢ò›'îA Ùaµ$¤fØ"¦µŽ¯¦X^®ä]ȽÓ)³ûÔT õz“XoYŸiДM}L€0c©Ÿ]Rò>’ܤAbõA s K ØMÍñ}¶ÐÈ$ b…?šš4ñ·CAƒÐ<¡¥¿œ!µÎúÌQÝê‡vXF5ßíöÛo·D‘ßQåB‡ož&¦¶ OTŠ Ø‚uÕd ™b;%ª@°ŸøãÔÀúø¾±>ä 7¾¿æškl»¨‚^³1û¦Õ*Ø.¾sÛ&8„õyé1dïäŽcÕ` ~ëUùŸ}ÃLKå%È)±‹˜i4/¯Jªe ˆˆýX–µ²¬—enÝ\3D–v²$$a…Ôa’­$±›1Ãñ±Ã Û+MdƒN@È•Æ,¸]ÂV'6˜_éã0KË iNÆ~i»ÆVr¯\D[bá K\pü÷bä%Gþüsü”“‚ÃK¡‘³^xsËAÊjFEƒøAý$Ô»=oe ¿iÕOì¼ßUŸðç¬;ÿüóì··â@9DÄRGy²víÚ5êÛ·y¢öFK¹0Kª$±‹!Jl§,ï˲Nܲ(‘ã}«,ô2æY¾+Kg“@Õ5"Åy«$±P3WR͸ÀùæÅ¹Ç´¦ ^RÐÄ}ì<#Ž“_‘ç$ ÷¨’T§h8aâZaÁ q,)Û«yöY³ÚgêdÛ#Ž:ÊÔV™…b80ä¾²Á 3 $Ží¢2¢Ô‘ÛØÑ6se™ ËxYëw”m|íð…ä:UZYN#bs#ä\vsy$Ôù×™˜E]" ùØÈ%GÁ©§žj.üÇ4 âæ›o¶9ß0;è@ ‘ øçaâd]ª?°>þf>±J>hDÇ(ñÚk¯5¨áÕ.ø‘°bð[¢UùŒjDÚò[üôœ •wüÝH:̾°Yðoðël˜ö/¾øb¼Á:DµÁo ñ§6á;ªs‘Ëw¿øÅ/¬é•ýâ;Žéœsα~{Z±‚mÕÛØÌ³µ‰{´´˜úåTª³ !pb‘, Fµ²L\<Ñœ,Ë0YPÛ %u Ö¿@–ÃeÁ´{“, p‰j ×oëVÇ9.˲t”åf§vš¹ï¾û,‚ä@®4Y0Äì©§ž²DhÊ”)fÔ¨Q6¨"F†¿M¶¯&×l•%ÛùíokÉÊ!mèÀºøÜ±>Õ$h_yÞï!«þí;̰„Rê¯f‘;3Ü'~Ò”EhÔaU;Ÿ8Ë(%Æ  ©ƒX10@Å:S”;T ®,橊8’CÌå¡iŽï&Ò¨U4%1Ü'¼±CyŴާ‘ \ßѲ|^oÃák‡›)ûL1/˲+é”»vu;ÎCˆ]–vQù²(YåžÅ}¡@&ðÇ' çï YæºË ~ƒ’‘g¢U+çÜpÿÆíÀ­jºöµ%2~«,¼Cª•%ê’Â5ÇÌŽyö7²ÐOÊP]¶Uƒg„ûèµî¯™}d ÕJ©ÃÈf[ÍÛfåjÇßn`Ý@ÓaÄÀœ¤®`žÅlºoÄm¤0Kua†hfó•+¨˜ªñ¯0`€¹úê«Sbfà D¯ºË€Ìþ«÷7Cv1}{÷ͬ÷Á˜ ˜]»v™×jÇŽÖî¾iÓ&“ºš¡C‡:¥U„,|úióÑàÁöâ¶lÙÒ®¿nÝ:óöÛo›öíÛ›ÁgÖyóæ™ 6Ø›·[©‘‘eN¨_¾@tVq+f ŒøÑab®£³ÃÏ¥"3Ɖü#:6jb§ÎÈe83Ь–å•¯X3'ƒ/Y⼆qÏQ3PWû¹øwd¿ýb‡£ìi§EkŽ}çç]îƒB@$)Â*Y R L§îž&ˆAï' ooYˆ: “ìA¼µ6ð”~S̽²¨:GÛ(s˜Zó‘f;›Y%¥–}?º’ÁGAðùØñº°³C,è ­Q¦Ã€,`"¤¿¬ù‹YÜ}qf i† sŽcw]`R ±“>Ìäð«Šzo”a†Å'’ç‡{•üš…Z8ÏøÙA¸Õ¯âÍÄ„ûÁÿŒ@à oódáï œ…´Í5\³miÖ²Yæú¢BðPoËR‚ u¨àe»ëV˜;§d¯<á«Û«Î*xqåÊë·—"%vYgÈä-b€ydë#fm'J·ÿ¦þæ Á™­[·Úpê®  S§NfåÊ•fûöíVŠæÿäÅ0°Ç{={ZçNädB¥aï8f¢ÖA!v¨€ä¯a»}úô±6ôƒ>¸Hɤ´ˆXˆ3Wf°˜"P* ÌtÔ“E¹ƒÜ½3ìkÕü4|¸ùŒðsÎ'*h߾ѫC‡^RaàÄàÀÀ™±€´mزÁônÝÛž7T€7ÜÅ{CD {œ×l$žûá}Y´6ð²(‘ã½ÞÕÉUßda!KPh6$ ÄŽÁñèþîàXɲ|^ø|ì8€‰ |\@ûÎXóîß°A(X &×É‚â©@5Œà¡–‘صùìôÞ(Q)DýdÏss‘,¥&®„k€0Ï(ý¨ÌQlʳÊóëmñüõ‘…ë†é•m9óæ˜‘£GZRÇõåÙLJu@ŽÃdA5,ÚE…ó §/Zº²üÈœü•'X碉Á•'²U{ðWU Ú“1¨/œVn ªTS t`;¨clS“A: ðC#Ѐüwþüvʶ0m’0™mÐfNræÑ‘¸D°2n#Æà§$h‡}&LÈT»à·TÊ }ö`Ž—íÓ"NúÆïØÛ¦‚J0ó»¾2‘°“ó±Öåå÷;lÒÄÎ;#Ãç«ãŠŽf~Í|³tÐRûð®Ýg­yeë+fØúa¦Ëk]Ìž-œ<'}þüù6á!‡bOìûmÛZb§ f×Í›7[• ™Ï¶¸f>o+¿Ñuß-%*°3,ƒ7#yr&»ËdA±[Ùr¥ù™,¨¦¡¸ä½ jÍF9P#¸¢"v6ìNdݱ£%M³öže£#éÔ3& LÔã…D¡Âi‰7:û9óçXå˜ëŠ’‡ª÷¶,=þÇ\ê'{ n\û-¶Ø¤¬Jä”r¥Ûàw\ K åN­;µäk!aÀã˜ßé×Âì­IU“@áó±Sb½¯Ù·"»Ãõ÷[ ý¨Ü<7ø€9ÁC-«ÄuÒöh»Å޾œ@@,äª,áR–«dˆásÉ„Gs~òLòŒBäFÉÂs–¯„¿ã.<‡ÿ’ó¬úYªŠ‡bX°e…óD$k™*ø’Õù+O,[›}Bá€4Q6 1HÄ ¢D•¾S„•KóÁQYõ!F3,^-üØXÕ¼`,&j éyå•Wl:#Ûõ‚õØ.¿3fŒ%l+ðÞYîiÈíSÖ ÄSsÑõèÑÃŽåŒùK¬w}®;¦b¢jÙ?ˆÛ‚¨‘ø˜6 ¨ØÛSqÂGî<ö¾ÀùºñÆm`ûÅùÑ üž ìÄÙ*m4ybçEï½Í—dÁTy×{w™5=Ö˜—{¾lZ÷hm:/êl–åÍ—Þ4#GŽ´fTX4&ÔÏ4™©›ñVšÇ̓Oà]ýôPêøŸutÝ¢Q‚–ŽˆAŸÎ‚ IÊzÏ>1›¾sífi·¥á¸"Ôôìé»Ù³9öØhaÍ Ø­“ÊÌjï$âÆ€­ï…˜Ýø¾§»0@((PÔ,‰ƒÛþ™YÐg™Q3ü3äûp12ó€ŒAðÞ{ï=ñiË–fmÛÌgË—Û‹ˆ‰†‡— 3-à}½@. ¥Tö.¥^¨FŠ8‹eæJBNu¾ºRy8då!æ[ݾ•1?yý‹P-¢2?mèßßì3c†ÓF•aÅ wÚïÑp\€Ž¿ªr† ‚Å딽Ò]^ïu3¨Ç Œ §*`\`ÅÏ“spzÿÁ¦F«·T²Ð¼Ï ‹â©Š]Ó%ψZXPbé“T•âo~HG$ Èb'ƒKlÄ®D3,JiMð{#6 3:Ï Aw£{Žì£¼O—U_Õw&Áý{ö7ƒdQ³n}…¢÷nR\F §¾]ûæUízw¶A†pIÊWíA ^ƒ¾yî¡òuÁX’ÆøË B•­:…elìØ±ÖtŠ0­@Ž8âKÃTv–þ¨QgØ×<`B^0³@öøl뻃Ú‡¿ ÝèwG[eÜê-ƒ"*æè•ƒö¨?Y©|¨ í¶¶‰LP˵£Tn ®@bð¾R Ûù|•×à°ÝÏGuDC>‹)!G©C±æ¹"Ggµ‚g“ý§ß# [®ëœs¬’—U]EùÞºuw‰¼0n踒×Qu ’¤Õ‚@0æX­òðŽ—ªSð[-€‰3ª¿:ÿkÅÝ/ÚZâ+—Ñãw$AÖ|s¬1e»øåñ7fPþ†T²>þq¹€ªÈ~Â10ó[@e õd{¬ƒ¯Ý¤I“ âùçŸoM»˜œÕǯ1 f¹GJ€Fµ ‚$0¡N4ͦ8âí#Ì ÷YS*äMÍ«½„¤ÕÉͲVf+}eVÀð® 8 n’%æe)3¡[¶˜¹gži¶ç)4yÈd³ºÝjÓcSsÂâä$VW«]5»Ì’ŽKÌÜîsmr[;önÝÓæDüþ`Óbg8¤¤§Ü#=äõá>û˜¥!›c›K1ꮻ̎V­Ìkge¦ì3ͼÙåM3lí0sØÊÃLSfh| ›ÛÜuË{f[ûöfÞW¿Z±ýéÄDí™gÌ2ÑZ~ôÑæ­½Þ2OxÒôÚØËL\<1ñçóÃ=>4¯Õ½fuZdŸ"¯l_Ý? §׈¿þÕ´Ü´É,:ñD³©GÈIû¹7Î8Ã|šC)ñbZŸifA×–Ÿ´ð$Ó~[ûFõܼÑí 3½÷tÓz{kóõy_ìÏýóŸ6éú’ ÌG>Ã*2äÃ=Ïßc¦Î®<1vÐXó#¿èJ!‚|@ì `˜K1S*qó&áÅW R…JF¥ÆEˆ—&âEý#ñ0„’¦IˆÙÿ£¾©R1BYc]ª<°.¤ Yã{ˆêîTøÄásÉÂDŒX£Á ¬ÃoI½2dÈK¬V¬Xa}Üh›íÐff¶Í~òŽ2Çï¼ÇÉwŒè1Ò>tìë{·Ç~P}CI)ÛÐ*œ7Øçö¡‡²fè”ØqS{ñØ›™‡ö}ÈÎ"Kƒ=/©Tþð'WÛ…Z¥…å¸ÅÇ™/ úRâÎs¿EIF]BýùõŒ£]w]V?»È÷‡ó{î1†‰™Ì˜q Åžïïk~ÐåUsžQ‚ï}ï^3¿ÇüL43® ø™á»YV»ôqôu'œ`Œ»HŸå+®pžC"ÿr<ú["`I*L°©” ÉýWmÏÖŠnÿ¡ÙÒb‹Í(€rÛ>ˆ›1'ŸlÌñÇ—Õîsov|†ßbrÇ„ø|‹çÍú~MçEë+@¡¦X×Ç_D€2RMà¾óîóõ_·Ïˆ¦Jù¥,D…⫊ßeIæeL¢»¨Ü¼ÐÔ*‘›°®cµcIsBçÚ·¯YR»Ìª© ®¨ŽÔYª7vç+¶V5^L'L(«„­§Ó'“º1?¼[C„ûÊWŒ¹þúmæã[Ú’¹<"Ü› Æs‡<Ϥ(|ub5ª´ÃÖâ¡ÿ KÅn’ábn&U î GÉB¤t^ ÚqÓ BGÕÏy‰cž›’<~(vLb™ä5…þN…Ììä©l PªÐ ù!ÝT[Åà‘Gæä¯!¬¾âª{™'‡¤ŽÙkßúÆ[š«Â §Š*Š)QJýZÔOë”IÉ€HG È&7 Y÷;IøÍ!‡¬´þèøÀã5@lÇ 781#ìn©b%V쫯vbh€¼Ë.3æûßw\÷Þ{“]o–çò@(6t®5Û[¸;¹~}en Oº̰ú|·ÙÞ¦Q='ô_˜`Qëâ |* äîrY¦öXÊ.M=¥ºê&{Ï(„ÙøŸ,Z/ù[²$)ézÔà*ÈB-:«V•´ýBÔ¸e˲Ëý8úClˆâ|àìgD˜B„ø Ç*=9ÿCš †:ˆœ7H¹åH;y‚l±M¢U!Oü yä­Ãí¹çž«G¬ØH¿ÑütIªOs’FÂc?N9åsê©§Úý:ùä“m Ý/¶ Ĭ«d–ãÃOS¯¤H(±³I)e85 qPx;¼ÿ"¦˜‰ƒ‘kF6©›ƒ´'jv&ÇSÉ¹îÆºê,gÇÜ|I»F ϘaG›Ñ±ŸH¼ røðu¦M'°‘@TÔ4ˆcõï~ç|ù*”àqª®½Ö!tˆ< \`¬¹×+¸ ¼>³¾n›É9í–÷ËŒ•¹< Š1UÚGZ–jKT ˆ–ÅWõjY˜´B”HÃCtiNÅN'˜Qå³+Ð ‹ëÊ*)ik°D6`¥`"˽è~¢BC)%+!Í&ØB×9ûì³mÍVÈéN >¤çÐÊ ø·ñ=Ä/ˆØA†®•N…ßÔïžÇZÅ GÉ.6­(ÁúšŸÂAÓ´)^P¹µÐ«ÈA6IËB„,mûóÜiåªbU%§&!æóÆX!"*4OÂN`®Ài…i6#ýë†?UTŽÅy̰ttš˜?Œ¦f±˜É ª`p*) ?̇ˆ/Xõ]ˉ0€½p?Ƚ°°ß6;!Ðò_q3,‡uÆ$Ý5ˆÛTú2CÕÖ¡¼"»|ÇNÐÃQG9…±„’ù‰šcåú ^f/2•1ÇBêxf‘/儨]+´D,µT©v@ô,ª?AW “Jú®ÏHÁ.VÖ! [7̘M®»³"VÆ£©ltŒ("éo=âØ·k^Õ®wïàçƒJ ˜:!:(ò¾R& ,¤ ²ó¢t6¨b'Êìr¹Ï_“¼o .´õfsU®Ð*(s˜tÉi·ÔÍ@ ¤ßû+BUˆ`;¨xÙ)´ò*$g«¡ÛÂÌÛØ*D4ZÅNg¹ÌñO!õI½Q’"*sRžÀ Ò(ùlÌJCö¤6“iÓDªh0¸u£žË57Á^žêù³2qœ y5Á’Òªo–:è1ÄÊÿØ1BºPß°‚ð>s›ÝÓÉçú“cº…ÔQ‡‰ì5×8$1[&„fÍvfQ¯¯~vkêœûõ³Eóã¿qôÀÚ8fWõ¯£|SS䀚٘bµä] ÜlùƧ¦„>Uu0èÑ’…zǰÏMší?»ÖUÿ\‰q㆖¼?3.ÞIº{óÍ7Ûw€’‡"Fâ]%n˜OQˤ‰mà›¦•+t½G}Ô*€(l¬C”¨®¯,¤’¶©:Áú^u-˜l1¡²Ïl‡ßTEjÚ¢â‹G"a¾»mW|x IDATF:;ªJÇ´Ëö´êEŠ„;@ê{ƒºfÏSùƒ¡þ{Ý»vt¤c! ®R—IŽÄD[Bê”è ÍiôòËåíŒ+eíèß×FSƒ°Š‘Їrúv]¡5aȳÜîNY"ý•¹í¶ÑÖu¯Y3g›üY7HÕócÄçýÅ=3\YZ÷w©«ßÿ¦ñÕ‰U³î¦{ÅîãíÛ+ÓÝQ©Â«†B ×Â…QxAŠº[`5¡ÊFµaWoˆý=VRÙÔƒ ̶n-zÛcÇâ¶_Îï=4{ð åÂ~é&Ї`‘XÍ“(]$üÛðiS"F€ßD •5*>(Ñ¢¢å´T H‚õþð‡?X¥î–[n±ëãˇR†~s0j×|ã4eij1€¤ñ[ö‰”(«]BŒéWÍ©øÐµ’NŽíu—1EÑòϾ^’ÓN;Í®‹ŠHpF—.]LŠìhž”ap~Hfµ¤>ɘl¸Ì£2'å0Å*‰ÁW†‡½)Cë+ÁŒy¶h“š\8ƒ•cVwÍ+´´ÑÊøÅ`öŠ ì>©FPÐHÛTñòï‚óÎsn;jf«0f̳ÇçøæÄP> W†ƒ:O0;¼n:lüÔì\¿ÎÔvîß “¥NlYv™]±ß¿xüýïû™ýö‹6%föùpK´™$âÒx¿jô8‘W˜I¥Õ•%‹1€È…žI6Ê]5øá‡[U¼œë‹©œ@,ÜO0ŸÓ¿ìþÒKE !ïäªëÙ³£y꩹r™7¹|±½9昑B†æLRŒ9V‘û1²¿ ˆ¯z÷,ÊlÙ‰žtJš€B€oœw[ú[ˆ”eM¡ÛTx}îø7Ÿ¿óþh 3=ÿö”Øy–c€âKè?Ö Uìx äÖ´k¤c=%-ªÈØ,¦X::!:ºÃÌaMþFÁTÎõaFŸµXv. oqŽ™é–š¯ öƒ¢!ßs릑lq€]'O»ÛHÏ2Üú˜G0±%röàƒWY…Žÿ»•tÍX ¾u¯¼âQŠdYWç(/ëΈ÷†ñå°{ß8ÅÓ÷2{Uäþ½ûn¸f+[….¬tŠ…õKUå /iP5-lÕ®3ìtYx¶Qç«Ñòþ‡Ãlgà"å^߯‘À£c•̽[º >rdsì±ÛÌøñ+í‹¿ù,ÊʘVƒ"I!e^Â& c«CdP1ýÍ;`À€z$5E‚‰PÅL)“úD¤("ûrDÄ’˜Ž_¥¦”â$Ž“NÎ.U`Š––À¬S§0Kvµ«÷ÞfN'Â6Î ˜`Q~ਾr‘%uaÿýW—EÙ¼óN@œw`Û>Ø! k×Ì‹÷fñä°Ûè.:Aˆ¤ˆSÿCº’<Ç T{ëËÒ ­S†‰»ì|ñâp×íe1ÃÒÏiFÝÏj%\ç:^Ö…÷ÑGËÛÞY²šcË/žeþñd?g˜×Ú?øàuB„žìA°4•ˆ˜;†‘[4˜_ñ¥ (ur î¡k¤H(±ÃDA(Îj.¥Œ‰TIX˜P²è“Ôéx‰Š” Já@Ë&1üÕ”²Ü|]n¸üêþmì5B‘ŠK]àVQì¤IÑV~*ô͘…¼î¨]û;JQ«e«²Š(àñ±SµŽTqçEc7Ü”_fÔ¨5ö=ùd}ĸú6îWüT³QDåg—'Õ‰¦8a”vL8ðëgÂP¾y>{¬¼-¬4êS­ã@eø|¯[·ÂL™r§Ù±£ásHââ©Sï¶Ä¤HQ.G{ñoàa"û9¦¿Z$ ^ôÐ.ÅÈí­ç v—ã„PÀî½×y'°![l%aÁ×1”ÁN÷±s£hö]¾Óà(бÀãc§åñ¯‹ úªp>øGînKÀašíÕË”­”Ô0ẕ̌×! ?;Í(à5õú€?™î_5U™à°¸Ž<—¸què°Z®i/«È’#·±R3+i ü)瑎J&vsæ<’·òëLœxQàw(nDÁj+ø´‘·ŽàªK¸@E :3üÒøœ€ƒl òë°“B…ÊlcÍš5æù矷9å.¹ä’)H,Œ¿%Z5WE ‚?Ø7Öa]òØab%P#¨"…V¸à;‚0PÙ/¾#©2AlO÷ŸmÁûÜsÏ¥Š]ÒvÈ”:óÖ{˜Â P9Ý3“EÕÀ «$3…@Èr’,àÿd)*i±×¬s¬«Ø=7ØÉü— ý8þo7$ûªWrði綦…Œïo¬Ÿï¨ë¶¯Ä.nß-]0ÃrÛ}ë[ÆÔÔ첩aÈ¿$ƒÿæÍñíiy0ñmßÀÄ¢ð³Ó¤ÇZëÔöƒ žëjêï¸~$þ†´ë5µÏ/:å©ù\'c¥€45œÎi¸¼Ï“=4°qc‘:B~5níÚì.G˜5!]:H ®€œsøœ=õÔS–àáOÇ „¬å©D”˜4i’y„P}ãT~ ꕹÈáÉcW bÇÀ¯jic¼VÈÓNsL×\[œîã ¦À ­}›Öžn€°ýìò˜aQ™œÜQM‘ÿ¨®\?x–/èÒ|íkŽR‡ß›ù£¤k¥þ»ZÝ&ƒK‹™`‹YEJS€5Jn8Èï¨bä¬#Á°,°®?º4䙣ÂÄ3ÏIƒ¹UÆ‹¦ @¨ÄÁS–wž'V¢y÷^ö½Ûš]¥×ü-;/±ã‘Û´©eäÍcŽ£-<7ü‰ïQðH9£ƒHþÝ1žÜMH×ÓaûÙédXý[½äWõ÷«¦  øé0™Äpý“-þÿÎwœç¡;µ¼d|I£•@Ûµk~ŽÎ sýÑ J¼PëPË6HŸŠy¶PP‘‚\u¤ AËמšP dP’©û„l)PðØß2ÁJw¢)@!)@Z‘"áÄ œBæ™ÔQ˜b"b1I੬Æè°8o]II‹qÃá ÖTŒjç¦H™3ÐñÝÂ&j]‡ò…‹ç)§TÇu9Ð=-õò@»d¡¿Ì‹ðŒ“ÔÙGÍCì9&OY!;•Çõ&(‹»¦ƒ?~xU5@â¹!@Œèò`«5âÂèï” ¤:äóü’«­Z|‰¹Nj¹£HA6Wý©NÁ›¥H«i¦cr)–üƒ”X3vèÐqe­¹ÂTŠÂ…Ÿþt:rÒQ‘ÏQß B¹€¢ç­H¡Ûö+vüiÊW‘r…¯[¡)(‰†Ù_‘‚ßk-fVÌÊ|Ï;ÛÂ9çœc·•V¤¨b´f,ѱ›µ~Og)Oh̰ärÒÙkRÌpŸW^éaM ¥¼ømX§Ì¯ÈÂ5‚ØeâÓ*ó‹(uåP ï²&’¨SÐ0®>á¸Zš3ÏL¶ Öj!2ÜÞòä*Þý—טõÛWÛ L¤x߉‚5nvx/±£Ìæ'Ÿ´4W\áÄЄ æ j‚¥Ænï|…ÁŸ:¿e6Šý ‚ú²iS0M͸_fèn RÎX%2·4QRýç €~Lýæ°ÒåSÐá.#G:¿ÃŸ²èó'‹N µÊMæÆEÞ0ƒ5ûí7.ç÷ƒšõ{H "C0Õâúß¶Ÿcâ„|a¶Õ €ÿ ^¨_Z‘¥S)ä 9*R¨ió+¾uÞŠøË±*ª~x(eøñá7WHE L«êsç­HA 5§â3H Çı©Ÿ ¦e¯ys-þuiEŠúHl2f¶ø7¼Ôâ53ŽŽ)¬Y¬Wýsg_äÙ‚Dò0ky³JÅÅ…~ÝQ—Ë Ýëisxáþ€Sq˜90I€¿Ê'½‚€·3ŽkÌø ©BÁuß Ô±[ ³¡ãvsB jä€]ãœ18T  ì/§–ûÇš!ݽ¹œÇÎr*_ª{Éô7ý£Û _;’x®x¦½¹©oº‰ˆ¼p‹, ²2Þ2>Rî ;ûDÉ‹/¿¼øj"Åb´,ȲÒ]¨e˜MÙ!:‚2Âv÷øðÃzľބQT(*b„Yk™nõÕWë,¡îâÜ‹g‘ëƒ÷Ïäĉ…ýUïºëÏÄ ,õè³b‡²ùŠ,Ç÷†R ÒŠEÇá‡O2;ö4sç>e6mr&<íÛw–gö3tè‘y“£dy+;(QÃ4´®—ØiÅþVó'¿Õ2eJºv “ݘI!^.x‰•¢˜Š´óEßÅð~Ÿí˜²U¤`ûT¤(ħ0%vÆ ²@잓刺î¦F‰]Û¶åo\GwöÅ쟢r+Q¨œ>âùçDª^3cr§NŸHgVÚ1?ýôgfóæææŽ;œ@T¢É8H€Ÿ׈ÜO5ä=¾u®Ãà<)Sð­”iú›wY…0Ì(Œ©(¥˜ë0åUdâk‰÷R¦ïÄ'†9öźë§pžT'šÃR¹óÎˤS~øÃpH*¥We-” q1ó Bè³Ô! ZÍæY¨{¶9»þ j6•g£öˆ#Jn§½š ž/­€®/åé´iš »—­€rÒIÆ …A”¹.tøErm  Ò6B÷~—Îb|e¸oQ¹3¥.½)¸Jðë6l¼}m޼ьæ%`QÃKÊ’ H*æiTC*R (¦H8±CU@¢ÊÁûýz›®o¸„Œ|ha)v2Á—O£Ôðí‹ ô»3g:¢wÀCuÁ¤†°E'4wî›Vj.I¯ëùšÙ²e´MÒÊ@ÿ“ŸïÔ% D¦rΤ”åbY Ê…ÅMêìT>bçz?/´Ë 1ûZ•!*À55¡-‰ÚÛTa‰`nLVœ6î++0 Ú±¹¼½™qèÆ†‘~a"Kàc jZ‹;ÍUWÕ¬+üË-Æ|ÿûå)w˜ç(÷†²C\1Éô™<]p£ì rrªŽŽØ: ¡ÂxŽ,§ËRÏõƒáN|Ú–aÎüÖ-ˆŠª©¤Êñ%¦ÿ"e“½ä3VËûï7v‚{Í5…On!½øÚñ¼pÎ2)–8§t}…:…š^〚P“Dòë¥ðO­üðjÝêú„¬ø"b1ÁâÌŒI„r2Q‚ÝÇY#:r¤ñŽïDy‘žˆwž­0*Pnж¨èE§Ë¨f0€‰•“ü\Y³êû1ÆM%Sˆ‘ëó±pHôѰtüxçVçCͽ¤i&>ÅÜû­nmß# ¢È’ÃNyÆ^{}j:,CZSœdåTh  ‡YJ  Jj6äçür*Ôž,¨AX ¯…«Úµ/£&iÆëKê>EµN›‚†42(Ú¿ú•Ó§07ƒßp¿AŽé»¾ó9æÂ uŒkκô7¥øúòèëD‹Š/¥V¿‚¨ó<ólãOYLŠ%sõ®“’e=Ç)R¤Ä®pDB3­ïÛÎÒ{×îØšZ4ªEæuõ;A%æE>ƒ0Ê$ŽÎw:Ÿ(T", ¤˜%h—YöÏ~Ni%oÒâ‡e)(i1²;‰ȥJ0Èà¶Qö}çh£a.ìlοϥêpSÉÌží9ß2KØkùÓn{+«@li±%šÆ=>v^b·nÞ‹Ÿf„)|ìp#SrWÊàï5ÁBÎJ 1ñ!ãƒ>‘”"Nù§A †ÏŒ›ž¤Ñ&¥@NdËM›iÊ#…ÒŽæ-Æ—˜s)“ )Cˆ/} >Š—]f … 4"ÀÏ“uqÁâ3úþ§ï+”Tq/¨ ‹¿d¹µê!†œ &;Åä·#X‹q‰+€E¥ÅR¤hòÄŽмvkºí2ÛÚµ´Oy‹róÕ(±ëÚÕÊë80efBb:/L¬¿ù3³=»—m–NŽÙíõ×;D 2WíQˆ$ûCÇ‹zÇìSX¹ƒAœCÌæ%-æ€5*áå—³¯ç†Â¿µãï…ÿ£ªS¦ìcÿÇTÝ¡Cu?ØÔ'NŸ}\8ß FòüŒ_Ñß4,éQ]Ê€rb^Å®C‡­õ”2Hs,žÜˆŠµ>êàÏÀ_n¹7|y!·Ý~yêz×HžúHC=àn"°-yèò±].0$HŒ »%|½ÄŠ:¦XM»’ôaL:ñc'ø€¦Pç4(²”­Ê#÷É¡¯ºÊ9§ÌDZV0¹Í—éˆþ“HVîÔó0Ò Áqéw™Or,K ¼ý™¸7ŽûO&:VƒZJ H‘"j4¯†¤>)³Ì·{~fJ¿Õº\¢výtö:A–0Ô:ú`: úV埌©|`Ž8¢S¬$.L1•`FaNçM'WŽïç‡ü[e™,Ëñ-Ïÿ#N’áK/eWs3íÎßÏIîéf 丹´ê’ Ïÿ°Ò×r‡ #÷¢õCµ[¶ÌŒ]ÖÕ<ÇG,ªI+÷4¾©¨võê.3³€í²#¿þ5a…»Iœ¾ÈA–ôùüë4Aõ²dëïØ4QŽ]7Ï5‚8rHÖ"9ïE¬Ü‹l²Æ„—yÑúA×Ó:}mA"Êæ‡ç¢"bÞ…8¢"ROö`Y u\'¬H–رSëÖ™š]»R&‘¢i;jfætX QFpÐÇ·j}Ç—mÌeµé” ×oåú=ì ÇeTÁrL  % t"t„¸“-^¼ÜŒÝ)Q3 ¾ˆ8£ÓEùxí5§³-¥xöà4}š6oï±È<Ýl±9ðãq¹”q˜¡s$$‘Ñ$`åoÌ5Íä}á°æBG–uß‘ ¥€wP'Pw â]Íà Iåºr¼–ع#hך9U Ú¬N·Q.|ìºÈ¢ I]]CÅ~€èX;OH^>rÇüÎë– ŠÊÎ 78‘êðáÖ­£¹Fô;É‚Ÿ/£zeòPí8úÊœdÇy†xÉgï}ò‰éqðÁ»/‹,ú»#Í‘Y7Ç9ÅuÄ>Óƒ|pôåNH¹±0ñåÅÄŠô”ÇãÌëtûÌõ0ÙÒ5pÂvMÁ¬»t©ÓgãS[H^[ÔM5ÇâŸØŠ¢ÓÁ¬eT‰BS¤H±Û´i“M:¸m[[!==í¸ áy÷Ý2~ëԫή§œ²Ò¼óÎr³óÿgïM࣪Ïõñgf2Ù÷}% $,a;Š ˆˆ(Å­¨µ¶½j¯WÛ¿­×ÛåÚë¯Ëµ‹×Özk­¶µZ®KQŠ"¢¢ˆ"‹,–@²ï Ù×Éÿ}¾çL2 Ù Èyçs8“aæÌœïò¾Ï»Ûl¢ÁM‡¿¿~ä?9"›Ýª2t–;/Ç¡ØÃ˜/àÉ$Ì &8¤Z¥¥¥©v*“&M’ý<°”ÚtLÅœ0nk8íÃP÷ìј¿(Q³]¼XS²ÍcÜÙMGJËÇ›ojÌŽ˜ÖggÓy–. S{Õ{xq6Ÿ«1˜°xôi”L:„ßüm~xgtߌ™ÒœƒDÓ¹|OS™0LKE5äó‡T–¼–Bƒ5 æzyùÕŒOŸ2E³lq’“såüåv̪f"KPðþýì~J™`–¥¡ ? QvÔjôÚ„V­†ÁйÎ[­ ƒ´ö‰O(di ²ƒ;ZòúRþ¨P¸íÞh)b˜­:¯¾J—¢Ç…Ùò ˆYù¬IïD' )’©5¶gÒA›"!Ÿ>™Lar2Âü¤ö¾°,Ü×^âÞÿB¤àØ$›µW+¥üÔÕ«5Éq%¿aIKFc0¾±¤ÄC>òò  Õþ“±˜™”Kü>{3‰¾ˆqÞ¬Ò@`ÇLfeµÓ3\ ƒ¾¬ÀŽ‚ƒL ùÔ)«€¹h45õì i†ÅÒ¦öCi©“ÚTï¼$ZYˆÈ‚fUæÎ;µ¤ÛDec«<öÁ»ñƱ+ŠB· í(ðxúôiÄÇÇ«Ö&mmmÂcË–-ª)°wÒÀBó¥¾h·»}47ݰƒ%2á—øä“î™î4>Q2~îrŒÏ"¦"Àq´Þ¹¸ÌPàÈÜØP ¿ÀgÊ›€æ ¨=¹ÕSö¢äkOãwï=ˆÿ¸irßÚ>£ü9D`=_—+ãj8i‚Óº$Þ_3:þV3(ãì@."bìƒî‘1€7Ü.š­œ™ K±ß}?Îâìè~©ƒÖÞ†‰Ö:{Ü\и™{‡€‚–;{B“~zsí•røþ~Z\Žˆ¸—iI¢õhÛ¶GÃ×1‰ Žn¾nÀNPMaR†YêÈ‘he²—tê¯Ä cà¸o&M*PwáªøsÞh£ Ï¡ÜÐêÞNêäGÂþ/‘ÜÑ%Ì{¾áo 4Ìt›رX±v\ ²Ý.t–A] `G-»»kËUß<í›, ô0$çôô½"X'àäÉJ¼ûîT9»ªÌ½%Kœ•ÕNiš²ËYyšÅy°EIµhE²émfvUµHˆÅáîvl$Ì Ø‹ãÆSÕ¨ç9¸ ºmh]ðÔ»¡Î\­ŠÝ¦=- ´jÙ÷1 ­Ä&QQ—ÿbp´ÞÑSWgQ´ç{(œiµŸíe·ì·ëñ«ò"f#÷–gð»kðï“oì=¦Ç^¿€;»IG§êÌdøßÅšpÍE‰ùQÍÒÒi ߥ ‰–9=)ôŠ#ZŽ ì¸Ç-Ò(ä… 9Vú—ø¢gÔ²ÁûHœ°ç+P:ÆÜQø:‚;{†&‰-ÁC€E½›,¡¯¿£Iü®ZwíŠÆµ×ö¯”³< ÷É)yp,ÝusâˆCƒ 2h,; UnBn®už[ZráæV. §»¥åäI›Î÷›UnJ¿þ:åA–iˆªƒ‡Cw ///e¹ , Ce ¥6dU†ÆF­l]¿ö÷ó½…ýÄ£xÓ”#”6A à¶×ɈhÁJMÕ@-?˜´Ð}Áµe‚¡Í› 1~|x7ð6˜û¥›gMÎuȱVãC÷ÍÈœ¼Ÿ;ŽG}î;¿nÑ—c Ÿšõ°fQ­™ÓoQb®? û´3ØýB•¹ÜÈžKkºÂÍÜœì¼Ï”Â2Ñ‚sê1j½wû¨aÇ8?’¾ÅeÑaÌç•ÀÊîH´ðð^®FÁ˜5 Ѳó÷¿— 77DY ypmÑHýq4”:ºG ì˜Ìu!€cìÞˆÞs;XfÌ›«kÛE[£ä)Œå|¾új)¾ñà‹ÆW©˜3¦/#ÃY0î¯ëy€³\Ð\}â W¬AcFE'bú:µl1ð„„4ÁdêPèP3£¡îÃc©ߢå­Ý¡Vݬì¡çbvA‹Ÿz­òÀ8¼j¿ª›ÖØÒù~û{û"WÝ¢Ù¬è`Z`Ù3GÉì(\X·‰LýËl"Öš5«HNk°õ~oñYŽõy¥Á¨ðÉÂOÛÑ{c»tNéú?[«î׫øº©Q7 ê(ü @¿úÕcjn P×5ÄrÜjxí}CssبYdò‘?z_8@ »¡ÄLq¹ßˆýi¹cÙ£GC:]°Ci-5¢Epþü|üüçZÜ;®;ÿÅ/º’,z&ä Ø1©–µ*Œ®k/Gt!r¦÷‘€ôÑGZ¼,-òºëFkuñ⼋ÊBàNï’ðúï,yËÞ«€Ý…¬‹cA—ØÙ3¿‡CAA§8”ʾ0ãùçÍŠ9²M]¯tͶʆ¡Iaaahu×ê-Û <ù“FD?·q–4ü-ã?ð¦í8YR½¯O`§kW‚5e­£‹€Áµ2ëÖP`Ô ÁÓ²¸hÜrüq`ÿ|4[ð¼<ރ껸¥Æ,¹ji^²:çE›1É<¥×kS! BAPG噀›–`ƒº“ÝÊ0ÆÎ4S‘âõ°cf쨑ÝÛ£Ô‰½ŽëP­[Üw °Wþ`8éB»`û²,ÑšÍuƃˆ¿®nZÿó?µ¶UéYËä-v8 [Ü^’d´È±/lo.w†™|¤ÕhWý]G£·ëåD³Ó§—¨çL6ê/Ž˜µN9†t™+¨•;1ܱ}Ù€]ObŒ³gÏâ‹`šì÷ IDAT/ºŠÕ~úé§*[öèÑ£ ¸‘’““¹ÁÁe}#ÝÜW©ÎõAîE'û"â º‰ Z©©{yµ+ftýR¬)µøÄfì”Ç“ò°×+iO Î@,]*2¾NÍSlp¯ËThÁ¡‹‘ŠEoöéÂH¯»Í¤Ÿßp ¡ÈXGThÖïQµØÙ“'||”‹—d©PÁºò{³˜HÙKð¨Î{iÇ”V;‚K{‘qZE¹&wìЬx\›´ ¥u­v öìÕQ™y°”Š8öFLáoç>Z°àÊÜ#v´øSIü¢ŸúêÌbŽ;P¤É£3›Æè@aÐ"Q6†W]‘€l4‰»-[&¢¢Â'VàškÎ*·ªÉdR®YGjnnV@Ï"\Ó[6ƒW= λ´» £N©ÉN(ž “ÿDD— QTj¶¦ÚüPf÷ S]íª~OS““rЪhÐÈèÃ' §±æþ [T.¬6+å.ÂÄŠ‰ˆ‰èŸ™‰¢Y³P(R;èƒ?c\nöÜ2® zÌ¿Ee)–•¹‹°oĪUg Ð=mܘ¨ÖôòåÙ¸ñØßTGƒ#7-ÀŸÖ|Üv÷¨|Oüûï«=yêÆëñÛ›µ>_Ë6ý;vnWEºùýÃ¥ÚZg|ðÁ„1;ßßÓ§ýE! @}½V€áññ•*¬a0qkïLz%%¸áô ˆªyð^ZpöEíÃøÊñXž}¾µªÊ ÿüç$´·›qýõg§œ»b÷HA7Þ{/^¹eׯOSçÞ(=8{¢ö`rÙd¬Ýª²bC¯¿¾ït‘iT’'’†ÁL`Øós ØgÿRöìœ2% ÏfÝ>ë˜ýÊt¹´44¤„)'žUMH:(Ìô`¾²KØ)7Ú„õwÁ3³©µËaawÆ ~íkQ0›£zýÍ#¹ß+í³¬4ÏLÇŒ'ßûÞBMÒN|óšbš0Õr ð|&ÂÎÃñŽl$ ¨kvf]w/ÜÍ]ód©£çƒ†¾Gqƒ§ç4cœ º1Y/¬ª*3f¨±°¼&e!ªw®G\RÜÚµõù½¬NS5PB7¬‡³–11y²¿*Ò=’ûõô<|^BÖXgºgííµ’,NÂ’‚åµ`<üðÀ!+´ÔýE%ñ%øŠÛ˜±žKÓäå zýwq$ùB PgТ1UÉ‹®–o~Sc~LXÈÈÆ–,ûƒÂíW¿‡íñ£lí"TÄù ÕÁä<®ß,KöO¥ ä^½XÚWÑ ÇÚUÑQfT¿x"ß}PÍcŠž‰Û¢ ´pV[¹– [åÑ Ô·ÿö·]1u†ûuðÄØ0/š#Ç«×hµ£[I?ŽÎé1v>šuŠ¥5J´ð¥Q)6;PBÖ˜`ªf-Ó±t!ó7sÜ¿D e–_"Àf’Q)Fæ%ÈñÉQááòè-IŒ<Ž¿‹tÛmÆ!±(2ç.õ¾zs~¸®Yò„¥O 2Èv­:v&Cmr$¡ æ¨h­¾?ø2e>r/òCDâÊ>?C@ÉìAÆ[°Ÿê•XûìB’=žñV¹[§cÚ?ŸPÙÉYÞå8§ÅÍß¡ÅÞ9GwÕÆ` ‚:®Ô 8ÞV¬v¦AK@b"Q´ŠÁ½Å£‹ô»Ro­-vöBÞW¢Qƒ÷¼d‰6¶¬ 9P÷)ÆÂ±Í-w´ „Ni5f–É£·¤ ÆÓ;±hÑ…)¼|9y [Žq\X³´/b·"ÒHçÈ ƒ®`G¢;ƒe6èv{ñEM”¬fŒŸ¼So‡wœ^ßǜeVA. q\ îòö}èñ[¾‡5òHž£µ0óÖ…Ÿ¬æVá:øÃ4 š…Ÿ5æfè4_o‡¼ï¤ŸÒX¬˜V¥e™ŽŠÅލ…ÑÛeV-9Ê·=@r*Hýõ}ý2c†™MÏìS‚©çIb´dw ÃBI+Ýò ÅŽ%Tæà|~GW1="ÜG}¹¯TbË3–\ᥤô=G¤òè¸ ¬ÈÀnL3Î÷AaNËÝ….D&÷ÚkÚsÖ5ºP= ÒˆãËÕt{¼ÿž–m7aÁ„¯u{iB|·âÃ?üáåÙ²m,­áïÔVtDj1pÑg´5*;{!7AìöR'*S _ŽÎ,#!†tPadwý]§l:Ï1<ë{¶Ï÷±Üݵ¬©¶QÏÊã{òxB›¡U¶×Çs$ÆÒzHbÌ¿±Ÿºç‰àŽÄqêͰÀ‚ÞtÇ2ë8ß+ß4ƒ `7¨fÖâ±ØçÒº.ѽÇfßÔ^gÎ4ÆÅ Z1¾ñ m®ÙN¨¢¬{9†¿Îâè9±œ…Ý[æ£Å\eê®Syt«-8rèkvm%@þJ&®_»eŒV;Zïú#ö% :Ö5¼ò ˆ#hûµ<â~"ä±Cì†À¸/ZûئŒY›öë8½¬,ÄpzF :Ÿ®¹Fö÷QVÐn ÍõÉ5Ì 1ENcùÇÙ㱘¡J7©¿?pÓM£ûvw/-ÛËô•‰kÐ…!º9ö,ìúÒKt[͆ǩÃh‹ŸÔSGP@o€º‘­v´~¦5Åc9¶ÃùT¶Šƒ#˖LjÚY9ô‰-׃ʫNkEí /®d"ˆ:tH«½ÈõNÏ@_Ä› Ò/ò*R8v£hÆù¦#&ñ}±ò`‚ÏööpɹÉêÞ*Ž{‰$#6bˆû6,ÐÊÊþÓŒ»f‹Âžáì»»UY~Y£ÛoÙ ƒFº~/M—ñnÜh,×`Ïâ ²w. VÆ£wÞi,ˆKAŒ©\³F³˜þý¬ÖËòâe Ôqþ™(a¸ÆG‡fë•BöæhÙ°¬Ѫ ÿ΂ÑÃ%½O¬-ÀOY—˜P‘­¡qcþ4b1cºúhb Wߌ٬ºØç… Ž Ž¥6–Ëã^yü\OÉãqyÜ-Æ} ÔówçN Ü1YâbôÙ½œ‰¡@ôÞPù§G¡'q.¨5ZG·{‹Aœ.‡ÉÌ2º1ï@—éÚµ®£r]jÍÔž h2Êš\:¢%67W€{êÞ8^¥ª×°ÿ°ŸŸ1>£EŒuãxæW Æ3Þu嘕í‹Tb´ØõÕ$~P¤÷‰­vÓ,Ktfëõˆ ‹FtïQ‰!/{ã ­vg_-¼Ë£¤¤3Cf*k\ Ý ´è؆Ùy‡Ÿ§öJæfdYŽ b2El‚;„YÚüðýï_¹™”lÛ»Úqåš5)sJb#¶Øé1vç¼µ,AÏæ‘µû²ÒŠÀ¦“½Iû"çÏÏŸEò %n¤®>ZÈ?éŽ7z^Žhif¼©·¹"°K*LÐRjA°ëƒè*µ74§µ=é¦{ê)-‚½KQÓ“É|¿c‚†A—žìŒO…ÏÁciÖ ƒFŸìÍZŽ5NTçÀ|­æÝI#J èQœØ¹ÖHœè \Ó%ËõNKÐ ±ƒXKqÊünÆÖ4xbÑbZ¹9Oe4dÐX §ËéÇ’)ÝwƒìKQS¬ÚJ1þîTvbÒ… Ý?43VÂîÎ;wÎÿ÷Z<7,µWƒÆqî®[“ƒ€€@c0.ÑZD õ‰: Ø9gœ…‹ÍŠfs«J¢ ¥hX¤ÇØh}\› 5`g¸a{Ÿ–aÜð† Àã÷í’ ¢"Kï‹_é¥g†£p ¿òŠfP˜6Ͱ@d»Qü æ!)I3çÐË£¨ˆ=fµ4~‚=j¨öŠ÷$2͈¾6UýM·îÊ•Æ0èÊ$f#ïÜŒ'w8ˆ™—7ŸGç"KÃvz»÷ÚnÀΰØõNÌÀ§ÈÞÇ—Šæ… ~­Mv€bÐÐiÁà“O4Y³eË…›+ƒ º"]ošoO ÔöØ£’5Ðð[bz´â±²A]©4iãLÍ8ë4 m©_à*ÀNö J†Q=Æ.Ï[sÉVž6Š÷GZ¬ãø«_Û·k.òÑ+z&he"ÑBh$" ìåOXz‹±ÙK—ñ¿Àî’ƒ=6×b$б~}¨aJ7èŠ&-³gš"‘€TÄgÓP(‹ÝH@cqâsYWt+±Á•LÖ·c2]}?øÁèºùXV…¼VS£FçÈ犮lÆ*2¥¿:„tI‘+åF©©Òý4o^¡µtÅCÂÃkpZz¤oV¥:;3¶¼\ÚýT†G»7Z¬JÁ2”¨þ‰%5˜(D/öm£wÝÖVsçõøÆ<Œœèʶ×!ÌÉ1ÆÃ ØdAcˆÂÃëXU3ß©ª~uVUX¸³ÏëPH¯a×äfRgÏ:-°Îˆ¯Ȧ›î>¶ûbÌÝhPjj¨Êgañu£MâèìmØX‡p¸å¶ 2ÈvdШSppZaE‰S„’P 2üÕëòÚé¥Nê|,êì\©!ºcœCÌÜg\…—_`àgwï’“ÃÔß ô7Š­^­YX³Í[d;ƒ 2hLP``£²@¤µiîØñ9ZÈí°âìz'nÌ×ëØ5Æ ÁÑm·i!ºø˜L1T0G A+Ò¬•P!ÑRgÌÁè-¬·ß®=gbJs³ÅƒÆ9C`AW&™LJðíÔ,;QYZqâaeÆê5ìÊ4SS}®Qêd8€.ÙgŸÕÊŸØûúöæX¿“V£C‡:«Í(bY¨¨¨ ¬_od®\býS&S„=ª’* 2ÈvdÐ%'ºßÚ©*öÉ®„U°]–u;=Æ®ÂMC´Øy{«$Yƒ†@ì¬Ã$/çÓêvÍ5¦óÞCËܾ}@Zš–ñêæY@—×IM= ??Ø](ºûn­üÉÑ£!ªã‘Ñ)Ç ØdA—œX_e@eGü[+› d$T¨ÌV+†F©ÇØúÔk—Öºakl²í!Ë3aÎÍ2ÇBÃ<Á3­®ìÿK Ò…ì^aPwâx³Ð}MM ||ŒÅnì 2È 1@11@fVüQ©Yîì-y šô»"ïzXlV´×x#ÎpO ‹Øî}±_xس'JŽîÿÏ8¾¾¾êµ††9rD´~+fΜ gggõzYYrssáåå…„„c 2hˆù›¡eö…kú;P„bÙ~z »sn-À.ÄØš]FÔÖÔd ‚A°ØÍÖ˦€iJ}öíÛ‡•+W*P—œœ¬^OIIQ mñâÅxÿý÷ÕÿóïmÛ¶aÅŠ à}ôÑG¸ñÆX>þ2æ M‘s³”r•[ ;D×i•_œüå5«BÅ%ÖAv Ð]±eÞÍÀ.*êBüÊ„„•sá°>^$ÿR¡¤¢Éj²†Ã  VdÓÉÍ›1eÒ$x¡ÀÎNÅç1J»•ÎNa&L@ss3,‹²Ä‘Nž<‰[n¹E½FëÞ™3g”ÕÎÕÕUy|öÙg¨®®Fff&bbbÐ$Ú­u;vì£ÀŽm•Žñîä8¨RD_?àðšèãÆsP¿%ƒ..O@ÅÞè…Š³ÙBOž¨ò±ÁTëŽVë('>!ǧr¤"2Ò6ì«„©ÎiÉú_ž:À‹ÓÏÑØ¾wù)±;þò4×ÖbÏo`ÕCÓhì4z¢£œ6­»vmDCƒ'–.½V4ZìxÔÕÕ¡°°î,Ì$ÔÞÞÞéf¥u–8'''xxxt^¯ÓrÇÿ ‰Q\\¬^kÔ]@c‡ÎÈq¸ÌuR³Ük/Â#¾ pgLRƒnyèËúàÝ òÂÃÛt¦é£@?cå4ê4e pjïD,Â^•@ñY 3cjØu”ªlΑ>Ø^a¿»xeý5wá>²÷“†uÅÊÊð÷gÃö|9XÖ%C?Ðy} RŽýºqiµëéî½8¤KT%|RÐÍ2§>Q›º|9ÿÞªýw‚¼sa fÚd6é²ëq޷˱(ºï¨‚æâ®{M×…eþZÃóÞÈS ~ˆŒlÑ™]¢.¤¾¼ÔÐPƒS§¶`Ú´i²î†Ò‘›ãøœŒq©>§ve%Vx‘º° Øã|fËQ ‡âε£-ヽ;;Ð ÑΚp\æ0Süq³’—aò§øá‘ãPFG˜ÃCYë!Eö‘)Øé1vç¨W °«Ñ­={@Ç¡Wéc?šdÖÇ5¸ËS>Oyú¹Y)oZƒ÷4ûHékÃnÙ‹ÒçêËáÆ%K–EÙ^ù"GVÛa™ƒ2;]Ó-ÂoÊ0Y8ÿl‘“[u“„W;骦«ð*?y¿‹Ì-?gêG‰í>ÎC£¡ºÚ?{ùe´ ˜ Ž‹Cø5× ë½÷PSZŠô;1sÕ*t¥»îŒòСCÊšVW—!.T€\::råÈ‚ÙÜ '§ÓÐZ_Æüùw)G0çææ¦\­$ÆÐíÚµK»yóæ)wmll, Tf,³h.\x‡ªF´I ž7u!íæ˜(2Ggôf͈÷¢®¨N–O>$p¡8 Âÿ#¦Ëñ’ <ßóŠ®ô®ïi0ë&M xȸ$õ„v`W¥ ¤*ýõýÿΨwjmŽê׌Ò@'&ê‚éËeÙÛ½ûU´µ5ɺـի¿§¬¼Õ]€C›05v :Ow„>JWã© €>@Ü}^rtPÓËû\X¬©i ©¿ŸsÚê ì¬G¡úqµü޲  Rö[®­}²RåùÌ‘¡ÏÔ(´æYáYÛª gd‰J8ÀÖÐî­†X´"±S« qìÒǸµ‡u.é("áú1·‡U5G”«C²ôùlîŲgÕ?;MQ—­eo3ᑆ’dµgÈh¸vR¸{©Ã ÷“YK”W'!ÓeDæ*̽›¡ËÃÝ9RÞúìzË:«…˺'øC]B==Õÿ{ê*é`i(®ö¼´*4ÕåÀ"Ú̵ßü&NçåaÉ=÷`ëÓOãȶmHX´îÞF‚›A—'™:X{ddÏjíÆè>%ëé.µX*àç—èèýêïììe¨¨˜ ÞoíQÑÔÑ5ëHLÀèíÚ’Æß_ß³úý¹ ¼|’€Ë44 `íúîeu"Ì­f”L¬Á›ë[q2Ô­=@ÆÕ{:pÇ?LpÑìÖý«*Q>¡ >ro^--°Ø†$îì\ —:Ï:ÌEpw/Ð\)ãÕ5Õ6›U€w°ÈäHÔÖF¢±Ñ¿Û}\nT[[„ŒŒwæk¥ÌWLß _Æ",ì ôæóÒÒDÐ d\,êoW×j5fîîå2†ùêo³¹ý|x¢£“SZ[=E‰)–õÚÜËžp‘uë-ï •±öSç–/õ}{£ÙRøžõ…o];¬n˜B‹;ŽàrØÜañìs¢Ñøç‡qòæLØ,¶cQ‘Þ}W ôWîJ&Çòìå}[ù1}ÃÔy™ñèÿÈwÿúX;­EŠú^ßϱ :ÀÀS²FÏéûÜUöR¬ÌÁ445ùöú9îŸRø¥ð–=â)‡¿|·uûĵÚ>9>¨Š«B‹WËÈÔXs+<<Êem”ªõáî^¡îÅqÙç¼±&æÜHäÕ$¢Î}ì[ôι¸àƒÄ(Ü`zóláa®ë²ÌÙ\q¶y22e¯4Ç $ëû~œœ`“9«žÞ.çF9·èçÁy S"Dqˆ¨­E`}=\ÚÛj2ÎÎ5j/º¹UË\•ȹª×}Ù&|º¡1LÖ¿€÷™8µm7ª²³á7~<â–/ôonx€AY‹ÝTYÔCÕ­sr\ÜíBllª놤Tw# ï³ÔÒsõçë…AÌÁå~~“s >ÔŒ'ÿ{7ÚÌš†ê+ *ÎÕµÓñùbŽMîz ˜žjÂ’ÍH€×îb٠Ǩa>EEˆ ÚS· øêg?ôïêº_‚SÐâOˆpª‚·w:´ uoÝ’7E·Zù]‚qÞgÛÛ[ñæ›oëÀÁªþ®ª:†¥KoVŸOdð³,µÑû‚ƒ¯B^Þ@ß[ª[ÕÒt+\™Œcƒ>†@W?¯9A7¯ig‹%J€zÎP×峕î*EpYðùžuoù¼%A»L¸,?mÎ5ëW3¯7Ñ9p[ðfݬÙ8³íë'$ ¡5ñ§eÅ,ªF’Rߟ-Ö~tƒ=ש<×]çÝO× Æ"p°Î-P°ûT5­CÆ7¬*¬ßj'.èÊ“íIA99H ìä‘9úZ8£Ï·=Í,Åá3~úá5@4q8oMFòÖZ•qÛOÀ+ ]¿Ú&µ‚¼faúu×É{¶b߯ˆ˜<ÙH¤0èÊvÿñk]sÑJœÜ.g7ÑÀåì/›{dµkn¿{åà‡g3_·nŒ5ú@Þ(,œ}ž•ŽV„Üf7Ê=ŠÜÚ¼ND×J`H‰k(—Û[‘S–ƒ”â&÷‘íå!pc+fìšà¼`Üû °âó2ì¾.e”7µÊFÀìæ-c¬™|˜ûI–T¥ÿ†>›?é±2}ƒ”e"Ðl¢牘MU.¸Xd+à—èQŠÓh?¾-ï›n$&L<¸E='ˆ«¨hÇ’%÷`Û¶î§íB IDATß!%å$$,tH¤8¬ƒtBÆÊݯ¤ŽÝÖr„É9CþQê(’Q @˜FD¾rA_Y6aâ‚墾Uše©›åBöKA)à>Q;¸GbÑò=a«,CÆ+’ωèûæKÀû?”m52Aä33VY¸¼å^²½³e´úh%á˜81`+±/”¸®®Ž¯ïô6äî‘«èÕ† $gdtSªt P©ücí'âëm/*Ø-ÓóɵòÍ VÒz.›efŠü&Èyn“×e‹›*ûv±–óD#/¿ÛUW”˜ì[- R¯9±­ú²Ú§ßŒÝ3Ì7.”u77ûê°p«¼&à¡P¾(|l*JïÈÿNå˜üå&ÞY‹öê«a™í¤ r£¾mìæ¶šFênð)¼{.Ð0«xê Í1³Œ…³å»«å7ËϬ‘ßbi’¯ßåYŒƒ²ŸÞ•¯w‘k'š» eí0~Ž4oÝ:‡bÄ+‘—W¬ÇPoÂÌU?ÆÙ£GQ‘—‡£|€9k× ƒ®8`×¥mpÙøá…Úѵ ?3Ɇs’ýÞ&»/^@‡÷uò?Ül‚ŒðCŒ­Ì2r²ôç÷Àfkèö?ŸÊáü®€°­Úkoß#BEÜ* ŸŽ N"»$ -úç úÿ¶·‚ßÂ"ó"Ü^p;"²‚pã_ݰ)bÒ¿à IŒ¯DEc²"#7woÅgí®vwº¨He÷Ofeµêƒ²)S>é†t,Å ˆmö¶‹`›Yb‡¿‹ߨ¨DÄÄÌ`—ŒððŒ?§OïW oùòû”ØÒ@ºMîs rq§ÀXsw7ß³¬ÝeÀƒÊ´¸Èâ0µîX¨ëe% ª«–+¿V¾¦H/‘f‰S àÈÝÇG Ÿ¾ nëXa´ÜÜèn Ò·äÉ/´$÷˜º¶§1lH?Ū9©P÷Vì]Ü7°s¨a§Z‰…ôwem/•^…Ï5A¨']À^X¤ È &ÙˆüÌÁ>´ìCÛBúáš×•×÷êjLõí¼ï*Ù[ãü=d-{ Ðq‘5ìQª{£A#‚ÂÚEšäì$gwQ~;ß[§­ä3g:­P…º}¸PÛ&ÅmòôÃq†‚\¨L‰èiº*Íz•»‰† (ûÊU›´BÅ9 9}¿Ù±†]^T?;-K¸å\8ÞœÑSnÒÿ§ÍE³ð[í–ý,:ÔqhÚ¡³ ;Eë†ÿ…¸3£{¡³(9IŽà׿CŽÛ´ëÙ„ ù ÂY-zæ 2Œµ²å —ÈWH>^YøÂ'E0ãN ÀÛ­‚´´’ï­˜& ØýüœØ&Ux‹Ö×üSA’²oÊ1wö˜ÚK9°jš¼¿»¸5Wi‡oÿú×XùàƒïÙ—Ûntìïä'ç#$Éáס«²Iÿ%;eêƒ4”ÙÙãN|téå®ò¼&»ÞnÞèÈ×”«„ íÐÈ$ÊÕuȼ…ØuÐ/Ù"qŽXzžTr(*qÆÏ‹ÌƒU­»ßþ¶ º²€Ý¯ßÖ|±.V2d|¯@äû…ã w?”T›Ñ*’*¤¸U0“Y$•íO.0W˜žõr…­ÐJ‡¡a †½:'¹C)û##U…>¿gƒ0xAxm–vüiü‹HËêŠúðtõÄôqÓ1>t<ÂÔx 9y‰þõ2NÁµÁXqhøhókCmP-мŠiÍD²-EµEç=ÎET@<:<7)N¾! ø\$­Å\vNxI^ù1ÆJ{ Ö8dYžçÍ[+`¤;dêu¹êÌ ØWçÑ*Á >‚ Í"Üe; Ò¢Ÿß½â2Ÿé`n¸z‡Y„æù:’Þ#sø…|mºvL’­³¬ÍªAŽîz´ÉÐæÈw–#%J›#â¼SŽ]k: ߘè'à;[”Ø7dá½.c%?6ÖsLì¥j¯oFãÖ€’ä ¤«@ÂM7¡½¸X›m¿ûÝy'¦,Y2¼/è^íä|ÞU²E'‹¦½ßUŸ{Çx¾~öÕéäÓŠÇšzÔŸ®?ÞK‰î Vìueÿ3"“{6`2j'ºÃËs™¾V_Ãâõ¢àÄ d>¬Ü¸ç[ƒ ú2; º + ÕÑ+v÷F$£¦âûO-ÁþÊŠÙhÏ%ÂôáÎfg²ŠÒXÐŽÞÒ¹ÎZ%j_°µ#~¦îy±WöA³¹ÏÇ=,AÓæ#><Ã&*‹™Õ2 5âiè£xc1Bm¡ª.²S•üªüÀÇyÜ$v¿vTV#ß+å–r¤·§ãDë œ)ÖjÙåoÉÇ£kU {¨Dì1S‘"JöÁ1c£—â±c£ººXÅÏM›¶¼Ó0p "ï+¬•‚o†ý.à æ^´ý+BÍ>¸•÷$Ó!XÅÜ#åRûíM(ÙÍ/¾úsOœ×Ù-/9ÁIF!±GC:b&î0Yx£½y ^çßÁ7àÜös-8Ž£Pzë°u¤ «&*ÁÈž±U­¥°Ym½ÇY:ÄØ9 裕Á_:Ú­pú|!Ò“‘ø€Û°,:ÞvÅ‚ÞAFqÌÄ u šx].’›¡%?ïÒК³Mk{¨üá‹eíÈdD[5¬²çåÄ*(Ü`ßÂ7ž‘Óc±ËàR(à;\n$k£¼á[ç^^lI~hlJ:Lÿ²í-NødSV|ûATȺJZ³~~Hݾ»_} UU£oÖ½d' = –6òkꛆˆßMùoÔÈž9}æÎ[‡ZYÓ­rß>ÙZlÞø /íÉõûkauOQ³èêù…öåýßúøãªîA]Àîñ[×øsSx¥5¥ê\QW²se¯Õ4ÔÈ!¬/_ŽÔðÔw‚ï?ç`ÙX›ÖÂt7”½×êÜK8,»tÑI!²o6Õ"ÝÕ îçšñГ¥˜P…kŽ®=Šë§\ ¡FÈõj6 æ 4IsÉÓµÛ|ý¹0#K•U–ˣùCYöRšSPèVˆO^ü×-¹¾>¾]ð@µRt™Ù†o‰Rý„`™T9o—­¼¤‹– ‡k-éè‚¥+–œ¥N„†Š\Þ„øX%…œl^ˆí;Ê‘”÷GÜû0\³½úL¹¬ð«@À¼€®¦³Í:-{iiØ:s¦Â§”þ°ÓmšuõÚí¢#MÔ1yX׀ЗeEµV 4»y ybz1¹8ÄØEºõ¥8|¤sûÞe07¹£qRFwóÚ,:§ ±"bð‰ÌÃ%îÙú!ß¿-‘k#ûlÝæ‚®€ GK+U«×l6ä™Í*mç[Þ÷ÂÜü ¤¢Äî#ÊÛ%ìK*,®]§ë£o)¿rÊGHX¸F•ø¨ÐKx,¸õVxøú*wäámÛÐTW§¬wƒ+þ}鉀ŒÝ$\==1ýÞë`’uæí ZZd’Jd9FÉä ?-}ÞÁÜ!L•™ó[1ùšŸàÄ®pÕ~ŒñvI7Ýd ƒ® `×ÉŸ]=ÕÁx¯óø³0·ªú*W+ ·ýÈv”ï{ÿûÀ÷ðƒgÜá¹#¶¨[`^ø:íÐr¡.…:[¡[ëHwà­â|÷:¾÷Ës' ®Ã£îÿá /þÏ‹ÒGÜ[¬› ru!(`ÏTe‚w7–ÀÁ}’чvëX²À!0¼:\1ÿ™òŸþ÷ÁwÑÓðÅftì‚©¬À^Ää\Ïíþýo©„‰øøùˆ‹Ób•6ª!à-ðnº*|!’9ûLÚµ±)õpa¡µÃŽæcœ—ry6ù,’.¯ il}LοխCÇ||³- &'QŽ– ÀËø©`¨¡ï#&j=BP¯%P$ôì4„Ìä ½;šã>Ó˜Íû×![Ö­É£vØbbDDG\ÜA_2£‘‘ò´¶¥§ãiÓ”ºê⌯å®iÜ&YÂçNÉ"œx 2)dÚl–yž½K%ÝTÕ¸¢¾r®ºûÆóÞ:mùr•@ññ /àø®]¨..V1gKc™Î¦¤àô~­>»Jôö{e‚¢äøÜå&m™ˆ`á‘ÕÏÍ„ïÃÂẆÀþ]}vËSO©ŒZÆÝùެ²A]^À®_þ,]vw G£ÂbÃðjΧx滫ðȳfx¾¼M±ŸÃ5”æ(Zdn½CÂìÉfttÌÂ?ŽUcgüdx×™ñ£_6Á¿*X Óƒ¦Ño_9BÁ£ÇYzkÒÂÃ…°àxöq¸Ö»ÂÍä†(k,-ͽe·ˆØ¢9º&èƒ:·J‹,Ÿø ðæãZêY¤>Ëì6–‰‹E#Ca†Êv¥•Î^£n'ŽØŒÿ°=H³ Ú:Am|P žQ˜Õ­æf”zfÁs^|¬íë#^¿­pŘ›Ó]¸³Q¾·()§6Ër¾{X‰-± Ó•;6I~ïo²ÇØ RŽïÍj¢öSûñé°TÀ=m‹.q¥uŠÖžÚŠ ”8«‰Vv¤GK ‘3ݱL¼Š·×V^’'ã+JdÃÝW‡mÐ~Œ¹¹·¿¥j¿¥oóÅâõ÷öi‰‹JLÄÍ=¦2EoF Cpç>&çŽ.XºPI“®ºjÀBÃîæ:ä_Æä)™–t ñµ;àöµt¥ ÇU#6)IÅòšÌ6È ØõeÕñÇcr¼}®Ïý[ ¾ÿ;3\_ú::~øK˜ÌÛa³MFs1V¢~PIü {[°'q&ä{âßþdƒG­+êBëàù¨'p9´Ô«vu!<)1õ1xjËSÊZJpýȨ¤ŽóÊÀ7臼Vt¶{©”²öµ°TfÀßÿ Ú~ðœ<¬¥€öBíµÃRcÑLIwõÃ$Z}i­SV„iËá%÷Aذ­x¤þ/ˆôù+•{zî!9‡jî:½5nú¹8pd3¼Ûƒqkèã°š¿\EGi²ƒ‡O%Ä;߆94ÉÌÝ|‘,z#Y÷Y2pZ¡â=ÈéÔq?”â|Cµ†Õ3ËΫqv:#8 `Œ»öÖVÚìà­¦¬¬Ûߎôú¾} à$,\¨€ÂPâ­hdÿ–Lû‡ð—`{1µM øB™Ÿç+."Ÿ{Mcu ¿wçfdfùbÆußð~¢¢°ö‡?Ä{Ï<£¬vw×=ð€*â;ÖhçK/¡¾ªJõ{eé’ÁÐ,á—Û¾ ÌVîõs?ئ®ƒy&Áá[¸ú®Ç'àžÉÅgÎ tÂdìú¡¯øã]M?ô\4¬Û¯We*ë¼òoaFô¬‹ÓÁBI/+a´û¤;öÍAbA(î{©îufU,sf&fxϸ<­:~*âé­O+p÷Ûw‹ïßô} ÜõQž•™ƒ”PzËðK§£}ÍNXÐ{?Å”ð$M¡U…CÅ’¿Ž ‘‡ËÊrT‡‰¤¤5* òu™·—¾ˆÐàTålÿ˿²:TtViíËq&ggGŠžåQ¾ ¥ƒ;bé?[f#²vB½v3dª8øÍ,² ­­¨hE}Eîùk¤¼\;1±"±çaG:‡Kam>6nß»t–7Z™ŠŽÁ§ÇŽ¡N~÷9qüý;x++]YA›Ú*áÎÃÙÝàäð †\r´ÙϹFኮ‡GØVá-òJêãr¾ÊÆMwmIȆ봃hëp‚ŸËúA["ù¾[~ô#lûßÿEiV¶?ÿ<–ßwÆMY¬ A4¯Ç9:k±Œ¨ã³Xé†%]{ÿýCr_'¬ã5ÑW×ÿJØâóË€'ɺ?#óý‘êHqèw°kÃÕµâr‰34ÈvÃ"jod€#Yè IÝ ŠßK¢ÖÞÿò˜gF`p)>N}ÛÆab–¹€:¡ ÊkÌØX»ËêáÕMÂÄæ ªÞUÛ‘¶a]™ZVzMbVn>>J;¦6É33Ï.“ ¥î±›S ŽÉ,<óï¡dË~EÐÒ_ñMÜ/ðÁIÅ"& ÷êlÐ<éãå`¥V`ö)“j‡šS__…ÔT­ÎAY½ÅŠ¿Õ¾¯I©šÙ(ù{8º²³çœƒE×-;RlÙòÒÒv 1q)<†Qærw8Èñ¤×øÝ¹ X|JX¿!Àî[Cº–ÕÝŠb¯X„Öd öT *Ut&è(r¨açÖÐK+±]ê_ó¾ùÈ›hFÔE0JÑÒV% ŒÁî'Oªç 5}×­á$ïRÎß_}‚‚ÔÙ˜¬óÑGÇòå_CiFŽïÜ©€bÚŽê°[ñn#4\3Š—…þ_Ø*üºú0ÌlM’.¯4Üza]²Üƒ‚óÛ½šqî;E͆Âò$DFÌÒejoúþ÷ñé+¯(÷$Á³eg®| RZßÙÙ!75E2–%ÙÙÊ‚ªJ¹&ù!­bÁqqˆ™1CçÁXH9×{_]Sæ–/r‰~úpQŒDCºÿw¸ø¯Ÿ¦r"'%e998òÞ{F"…A_n`·Q´2AÆ[p#úÉ9(:zÈ`Úìs³à5YñõwÖÁtÿ ¸už?Û”¥,M‰Q‰X;çB´w©CsëV¸È®Þx27åÝåCÅž`=ôÞ`ÓÊ?vL 2>»`!Ãê‹8N| 6N®®jL]ÜÜPQ],“ ‘“&)¦:RË-uvpÇqJ)Š­•ˆÃûXƒ›•ôya† ßï$ъÆ"¬ÇÁ_èÈcˆqwlV ãÆMG˜ïËPþ }œÐüÀ^v¢f/ GGrß~¾àà8Õ"+ë0öíÛˆ+¾œEG'ëøù9™­WÍ·ãë¶çøýÀÙD fþÐ.Fÿª»&açuv¥Nül=×Ö½µ£Ù¦O—Âù c‰#€+:u Uræs*™½YÞÈ—Úœ1aòäN+À‹\ïÞýªwo½õS,Zt;Ö<ú¨ú®S»w«à|G+ÞÔ¥K1yÉ¥¬õ§ÄV+ŒeÅ îßÀƒ¶_ÉÚݼ=O4§¨ ³(XSÏ ;ü/›0×¹5m>ˆ ºgX—ã¸ÑRç¢úªؼY¹²¯º»ïžßtqç O,E—ç–†î©éœ—VwîÂ÷È žy0•s6q¢y”-v+i]]ªªêQXX‰cÇŠqzÛvÅo9·Ã-ÍÂÈ‚•Ÿ^öðàóá°~¸RyÌæW1ÿöõØöÛgòá‡*v¯¿y6È ËØ‘¡ÙÝ<_ŒŒD`L äL l “ÿ7åxFÔÚ7g㎃sa{]'¶U!=/]!!ð óBlHìˆËŒ°ö^^ùO11¼§K­X”ú#Ìdz¹¬‰…ȇPu…±Ù‡wsöq°cŠ6 mmmÊDí”ïikjRg‚A»k¨7áT¨— Êñ'×"ƒŽ»‚àŽ1vv·,Ï1wƒ F—d`•骷l;^ßíý2¾úr¼Í;÷[Åc°ÃDfæAX­.X2ÿndnáèõL7ìÖ‘ô}@ìàê_ÌŸòd Üñ`Vmii|G5Ž)‘<¬uTTT„úúãprr‚›üV |}=Õ™¦EÖFpQrô(jDÈQ(öw4˜¾á5 ò–!!j‡€´7d¬Ü™o2õœÆŠ]ˆËbY·LÁéþV‡»(÷žûš}7m0É. rGÈĨ]"¼sNe£øl.²ÒÒpìÑVSŽöÆú󇋜<}añò‡s@8œ½ýav÷†M£™#3käzÈb¿¾{üµ··"77M¹îíõX\]›°}ûë²añâõXxÇ*~‹ûýäž=jÿ³$ºÇÏ™ƒøùóûTb9z)ÎÑÈ(—ù ”ùIz8(eî(—NbÍ• j:p áLš|D½Üaù:FÚÛŒV+¿ˆÓvR€.צ×Ô©Ö3‚î¼ãǕע§ë› ,ÁZÔ”)j¼’ì…ÜíŸÍ:’‚“'Ð\_¯¬{<Ô–wrCÍ6_4À-pF Ê­Ç‚æ9OÄÛaâÄ0ÄÆ†¨}8¢/K¶Ê™¨o¼ºf‘C(Dx|&&,X€Œ½{±oãF£#…A_^`÷õ§ŸVq+dl•Â<+A¡C¬'ØëÔžEN’sO‡ö(Æ ýr9àõñzÜÐ.B«¿Zy¶ææâ³Ÿ¡¤¾D‚ºÉ“UÏÔ„°Ux(”…”w{÷,©AK› >oýñGÐ ¼ßõ{Tæ+c:¨‘:‚¹h_±³g+WMŠ0¤þ:O0Æ„à˜cÖÜØ¨žÛAßiù¬I^ã˜ÚÇ“ECy¯dˆaöèbþ`>cîA«>{à Ñp‰ÖhgŸX{ËÖ—tsgÿÖPÇ âסã9_Lò]7lÓ7„óº>¾§­Í>W#]Â+Ï}$_°m @qñP0‚}“¬  –óm“íÅ3ÿ¦`ñöv‡‹‹žž®œÔÙÍÍÕÕhnÎ@h¨/‚ƒ½Õë‚où´F1&Œë¡®ºZí5އÞebîÍ7«þ—Ž@´¼˜ßG܆g+Ó`ñg¯?øÀ‡m‚öLš¨ºŸ03ö½†Üî®B‡vÝ]W‰ìXóªç¸¼¼eeçÈ./,FE^.+Ê€Ú2¸t4ÈHv…AØS8¾MpE-¼Ô™¾©ÙU{ÚÙJù§²ç®⬞_,7=݆;^E||f̘‰q1“°F„=÷ÿ™ýûqjß>Åx0&Ë[ø\B/µJ‰•ãkñT]\¢òDñ‘u]·vôŠ.³Öåó¨;öœï?v–.蘆ÓÔa_–`»¹¹UÛŽ«Uë¡¢¢Vt3Z['Éì6©ßí%³Í³¹­¾à¡·q’uߦ­ŒSò‹š‘¹5[·Bí¹¸¸`L™…É“#1¸Ð.Û—¿ÚjÅ=¯Þ |÷YÇm˜Ë-”±|´ÔdЗØ©ž¤zœŠ#ˆÐ¤^š­â)GAC†G¢ —æòÄe˺m4ÊVÉxz…'&½ñ36ÁÅk#nxK—âŸüÕ¶jÌRsSÕ±M¬¡Gwmbd¢ª¥êÛw½¡”³)xiçKxäFØ>]‹à£!(0ç+J˜9´!tö,2„yÌ9ZæR âhMã¹¾±U ª£iyÊTS“®˜ŒÝ¢CAϳŸŸ‡ÈJ(÷bÑl R ‚žZlqf¦Ò\ùÝv7]!n>¾ð‰·ÀP8Ç ÍìŒÌÌþ¾×oØ1wœ­¯ÉLýã?ð+˜±™”-o€l1zG¢t C°hœ¼}fÛ;LL«½“¶,ƒÓô½ÀºÍº¤à»zn3–ñ ™ãús"*«ÑX[§e8¶5ÁÔ¡¢‹¼Ñl­ô*œ:_½çtàÇBÊŸ&ï“ÑÔ 3l}^‹n0_Ùkò\ƒ´’|±iŽþ¹ª¹åWD·_£ì­ÍçîÅm¾O ¨AT# Ë{Ùà~¸¬ÇzWx4ɯ=›§ÕýÓ©£æœ Wh.29ØqÍh%NpfŠ­áÝÚŒ$'©¿r•ÅX«KáÚQ¯îß>\_Wì0Y„1ø¢ÝêŽÀØ pö †ÅÃgÈVÕ°~ú&·µµ /ïªªŠ ñôôGLÌ Ù;8uê,L&œ=[Š––6ÔÖzàðáj9>ÕVÙOááþ˜6m¦Þù¯°Ô#ïðµ7dŽ^—ƒ™´öŒÚnJ,\ðG{ð=Ûõ¼.vgøˆËñ85ÉÄ<«áìÒ°l¤ÍÚ‰[¼Ïª5çgº£o/FC‹âW§Oï“EGM IDATQÏkjÐÞÞ!û°NýÍ9ì\1ãͧájkA[]µv-‹ ÎYÀ°bª qÁš/Éõ½k'ÌV8­s/Þ ZPr÷ìÁÉ7ßìæRpõö_ìDÀ/ ÍV/¤•œÃŽÍ¨y%E1AG:x°°_pLàEFÆãhÑ),,€Ö‚ÆÆf45µ cõCû\´›ê`®)‚{Gh®`Îi YŽš”žëŠ]ɇúü^“hÌnVDzYa3Wáù§Ÿ@°%®V7ù®ÔTcÑêk”‹±'û „Æ»Ö °³á%™íc@sÃlýô$Иû¤Žä£{ ˜œHÙåÙ÷a|¥0ÕE{Ññõ ò›m:Ëíu´b2˜›Ö¬ÞFÙä,Î0;YÐljE‡S;š\Íì‹€V­Á¾ž¾ðvõV­ð¼Ü¼àåê¥Æ«/Ðàëáѧ«@ÁA[ukfü<·é°¯n0û!˜hxf–Í Ã‰O>RAÝ[Ÿ~ZÆ:ÑÕE¢ß `(?u"§oC‡ËÁ—?±EÉþ=}ãÎÖ£jJ•jg§¬Ìuµ`£­*w„øÛÏ&¿ïCm¼w-Aõj™js—Rô·?oGÕÉdugž‚8"q~B’Éꢔ”À˜8„ÅE#:qrg<Ü{.;PŸ¥«ß¾ʾ«Ad¤U%è$&v)œ,×fÿ,-UŸ}¶‡€ç$ûÒCöŠ+rrÊÔÑ© Êº‰™°.5Ùðh,U œ@fÔÚcñ”kJ@JÍU˜é#ÚÎU/ËØýX:Ld׬±€©ÿ˜ªž×«Ä–Üßàºi 6«‚õn™ÏÊ*Åßþö‰RHû³nÚ•C7/Ù;å¨w.Fƒ¹§dý3³ÞC+sÙæÔŒ.jÏq5»Ãb²ÂÅâ&+ÚÎfW8‰"ÚTߌذX¥˜'Œ‹½ÂKñÄó)¦ó•8z‰R„?/½õVxúÁ_޹sÇ«ÿ罤§ç!#£H TÌT‰Vò7ÄÅM:ä|? {ü¶ßëêN{;ŒÉ W#U”+ZiËhµ[°À@2u8ÚʇÈ$íôâ‹Ã‹K w®F”¹P„_£uŒWa@ª#íWž»bü—í§š°øÃqlê9L½ö|7;[¤å¤!=_yüÛ‘èf¤eŠä턟Ýfߪê¬ìò_‘€Ó{á!dÆ;_~­z`‡ýsÖP”4¹‹hêĘ‘i Ö×׊¦¢?5ÈÖÖvÅ`Ôx ©8./WXÛëágaÛXKó9‘¤í£²HÚ…»GÆcò¢y˜½dn7Gˆõ”k𬀼tlÝ/ëãÈÀ˜üþ/:¥ cÜõU]øðÆ÷ÿùxµ -)æûŸ‡ÙDà°FÖBWFcš’·lQVZ#J¢¹CÍV„D# ÈOlÂÇ…ÂìÝ‚½§÷*E€.hG g1Y”p¢à„RÎgyÿŸ½‘Ù… .8®Óº9àèÏÕžŸ›‹ S¦(kÁ“hjêZ”+бÅÅçÔ™Tpýt>îÎX¿~1<êópðí·ÕwÍZ½Ze*ÚÁɦni”}RŒ¶†¤ž¼³gÏxþ?Û Ëkž(‚úß¾‹N‰ê~§l~ ne•xò¡(üxúãú»9™Ï)e©ìw¿FÀO̰ã_ÝðŠvoU®4G…&düxø……!dÂ5 ŒïËU6ÚÀ®©©N%Ҝ֕ÁÐÐ X¶ì[ªF"[$ÚÛ#¦žLÅôIÓUû@?=›šŠÇÇ¿ b@m6³I¢ˆÍB^^µj®ìÄý¹æªÔdS!+¹¼ÇÈ©S1iñbtÈù¢dü¼ñ ¸º ßÚºX¼ ÉYƒ¸_›îr=E„ -Ä¡N_wÁÍx«úÿ!ìn7,]P€rtîø/9ÎgtÛ·§bóæê·¹¸X°fÍ\ÅÃv,“âc—œ.;ÌâLå)©ièžqÌýà. -6"Vãuƒ¹—ø¾¦¶¦óÞß/_“ýÆZ§ ·™1I=wg÷awG ç&55W½ììÅ‹I«VÍcæyëO_Õx4y’^ªýP~ü>¼½áiÅw¾ú³Ÿç±2È ËØýó|TÚ ¦z•(׉1c̶r´ÞÑcgëxKM;…E¿þp«UóúÑòÓG¬q^Ežzi¹iê¹]XÓóó«&Á5怠‚ÙØžým´]ÓC–PèÒ¢˜uèÚ¼t%!L9þr2= UÆFñððЀŸ“ òÿËtìñ*´òÑ2§e{U¢¬¬y ÔËË]¾ÃS®í*f,‹œÃzÕhí.ïcòÛÃBúv<¶·Û”k‰Ì­®±éÅGÑ, ˜Ú³w¥hÓMõ°ttYUÚœä¾"ÇcÑM×cÂÔxmœÁ¤×*|O ^€ÒÌWËýFNS(½ -îŽÏ—GâŽ`|i$ÜÞó†Õæ‚ê…§áyïïádj•·¬è¶¶s~>úÓ (É<£þ.–ÅPnš¯bj8dÐtÙïËØ§[ÚÙÉÍê·öfø ³ÿê £¼´Eýf2¾¯ ª¹e¹ èñïÞÀž‹Õa^ÁèñŽL@hp ü=”Pâ:ã™@ ¿˜ž¡‚Îݘ{¯½ö9jk57Tbb¾ºnŽn}§³Ž…ÍÕwÝ¥ö‡÷ØîÙ›ÐÞ&3åô¨¨+g·>ü°`ÁV¼ð@"¾ô]¤îÞé6 YöÜß¹ÿ·RAüŽŽ'aj³àÜ/¯ÇÝ•µŽ€áßþ¡…°¸¸bâšqÕÊ•ƒ¾=,gÁ¡Ã³ŒääÃÛß%UÅÈ+;‹†¶þ]ãœ+Zù &J*Jdx)O@o€Ï*ÀÐCö¡[K£rßÅ…NÀõºå{¿ºÚYYÃÊ©tÜwßre ã:ÎГ-HK—bÍÚFLsß/—€‚=w â›QÚ¾à[NBksVW„ì{%¨­‘Mh ªCµw1ªÛ‹TÜ-éêŸ&`rh²01x¤[è-WTh&_»ë®«E¨ÁŽC;PßQßM!¶ƒÚ™131%jŠt~½Ô‚-ðÍyçxŸ,8‰3Åg”¢ÕÛØó7ðpëpÜÄ9>äÔëoSõóäžrEÉ#Ÿ%Ïm×ﯦÆyyQÊ­Nò÷¯DDD»–N{ìÚûàäŠÇñs˜Ì6´>ýÄŸÆâ›o0ЄA°³o`j‹/½´S¶Òz7ݯ ¦ª\MéLLT±wöÌÙíÂÙVª<2Ùô×Á5%Nǽ5ôSÀ¬ƒ;wè% 7üéKq |5Þ \«*qØ!]e{ß|§…Ùrhh+rž€U_¹ >>Í 4Œ”aÄÑ}SUU¨:)ÑôâÌüü"”5oܸå6ª×ÝËuuÕŠ!56žë–!9 {C®Iaã-K;uû› ŒàÎÞ~ŒD>/~fEÏBÚžd<‚š³§àdë ¢n3»"ëñaqD ÖAOnP ,AGÛƒ°ÊëþÁîMNuعv?¬üH¦¯ MH„+Dk³ ûÿ¹Ç?ýTÙ‡*áI ðµo¬€Í© oïz¹õ¹Ý,sÐI±Iʪ0-zZ·9»Í›ŸTsž„5kP¯Õ`©‹ÊÊ<ÅüKK³”E¦'µ8YUPuC-:œ,*.±JæÒÎÙnPÔqá7ò”ðDÔd{ ÿ˜æVš93F¹góîQuÆhÁ¥EÕó§N¸.ž¿‘ &ëÎæfóOdŒûü5ÿý$¼ssðæWSîzL¬€»w²›ïEì2(«â ¿ü+š2`²XTŸÍ"Q–y†JHª+GÙ¹2à*k+;\–³Ñ wgW„ûG*çïå¯Î<Û-A=÷/ÇÙò³Ê¢KðÃßÙs:ÉhDø…ÉÙ “ã&ãܹ>œ%{¸Y…O̘£Dµ˜˜p*Mù(þêMxtöv¸Š²‹7Ö£e÷B8µ[a¶u•ìh2סȒâÖ3§ÓQâ^ï/áš0,¹«D”"«`ÂÇ1C­ão}ï½#ضíˆz7ÓS,8’sXªn×`>Yé¨ÄÔ…Šƒ$qœóËó‘'û’Ä,Ù—ýYV9—¾®^p1™ÐAË`M,´¬:p$ò>&ÆDGO–¹©CZZ23ÐÒbÅĦÀ]p°ÂÓ&àîÔÍaµ×\oú@yêÿ<~æwqûýdÐXvvÚ»7o¼±G˜—:ÄšóÑÚX«›¦^¿áÓ'¢®¡¦¸H°ïv­Z[l-~°¶ºÀz.Ö’ ÑhÅeñ gsW‰à¹gÊÛBñßNã;ÂðìµrY›hÿ?ÿ©¬tŒÕÊC|'$âÞ{—)mvÀ8ªÖf¾¸ìg6‚¯Ó§ÁÃÃE:ÚíI4÷ûbŒßÿßÞ•@WYÜû_¶››íæf½IÈd!!,Rc ¨<°B . ¸R—W¥¢mÇãR´zzúžžÖ¢G=ÔÚÖ…*Zå©O‚e *Ê&„,³@Ⱦç&¹Iîòæ77ßå’HQ”ùqæ|7÷ÎÌ7óÍÌoþÛ„ÄÈ«F´Îµ\æÛÓÓí"|ü\VV"Êõ‹J:ÄB9XÙg,tþ9Ñyùáh}-ê­íèèétM”YÉYÒ3yœ œ¥DZï³heоÏ…¢'žÀrß¿bZ¿G¿ÂNw˜‰ýׄ³ÈëO2Õxâ$l[qèÊ ,¸¦BJhÛ©3R×ÑÔŽÿô"º뜶tÞñ¸êÖ\ÇY±§d ª \‹+mq¸e§dËëp¶9ÕÕǰaÃóNáoXœ¬Ç`$ŽR·ððñ²oÂÂb!¹}Äþ®©);ÿBœ:Uä"âÑóÖÀCh4üÄoûÄð«8Qq–Ä®¯á$ºd»X,’0ÚíVÑÙ‡Ú°eÏtõç-I¬‡ÖúPØjÃàï(%0é“"d4~J¡Ù> $¾0x9nú«èŠJ´ÙÂÐãµBôÈÐñ}‚L{lÞ„½Y‚.^Ο!ùÓOéø ë/V!5 Däý„h£ôþé x?”K_/žÿíkˆh/Î#Ùw,…g”/>;°z/´[:ÑÞÛ ³x¦á¦!A º@ùú‰qnE„1tT“]}}¥ ‰AyLLx<®{/ÂBbF5_ ¦^$É(ý^Z{'+aÁ†ËõŽÙ¥À SÏÅ]IÛ7©¡(NE}mʺJЈ Ô¡œî>ιÃß_2'q§ ﵋ùsîýUðh@r1‹äˆ£tn͚ͨlª€gD3üLtöuœž‹Äf%Ú׈S<¢Cáç32ã7yÓo¥æ! ß„WMb6”–æ»킇Ÿ‡”ÈrS`±ö|©÷ƒ)Ø„H£ öN;rsr]‘h C k~~±üÛd ÆÒ¥3Ä:à%Ö¼1Ïài„z4¡e× dö­çíŬ pQ»‘džràðð0!a¢Ú°°0MMþr!Hñ9†€¾~Cq£“èÂüwuB6˜tÍ0z´Ë C.H"'‡]LV±°[üĬ錩÷w܇©È’ñ‡)¥£Ú¢p§ó$Jj}°è¦ÙÈÎNƒ¼Q’¢ââà ’„‰õ¶Z-r!׈\ß9Jäq9‚P=j29¯$߆Á8ëÉg!yáÕlnr‘¾ööú³UpFɧìÎ]¦.&ÙiÑ©˜11aÁQ¨:V‡ý[òQ99‹çáZlFrë!Dû7C¯;ÛóÑjõåù¢±ÑSÝnA‚úDúÛ'*‹YŤÙ,ÊMAÆ‘í{dH‡hcª^{ÆOAdv WrÙâxŽ7ŽÇœisD½fŒ(xõ¦M¯HõŒ{EGO’ýBÇ>âµ^Cä9T±M™j^¾#š´ÀdŠ“jx'‘þ]bH(Y§ÆÆZ± {£\ü¶ÎîÀ²–V£ 27):w/û1l¢Ÿw½óŽTÏÒâêÆàGrïz ­=v4{þ ÑC©eËʀ瞓1ëvÞ¹SöDòžm’èM½oµƒ;ŠïMDå±G–ÓŠ×V¿?Ñ?Ë^ãuè ë•&aƒË ;޾?ùô_uý× y 5Û.;{)RSsÆÜ¶o_ÁìüâaƒãˆÞ $'Á‚L˜Í¾(-ms‡Mô¥ŸÈ{â6¹ñÝÉi¥Hò+:+ßæÔuèÑ݃O$bçBïÃcôƱY*=¹Iq;Àƒàñ[L}þþæÏ°ãàX ¢aOK½·>~›8½ÝzÑr”ÁÈž‡‡—¼–—ýº8ޏáÓQÙNûIŸ€Pxú G¬vÜPÔ2×iÚ n\§ÅO“å”–Öâí·óåÉĬY)X²ä }uG¥é‰Íî/Ïg0èÛ ßWb·ÿ_.h¥ÃÅB?N,þÞõlÁxJxˆ ÐSç Óå‰0{·‹N’VJLb"¡ †WdÂ-ö2# µR…Çä‹3É£HGVàV1}U~õòþñXšB,!”Òy†‡ -­Y,®5çLÖ´Eƒ;Mm‘DŽùËÏMM­HJš,µâ‚ü]Œyú…ØýÒ¾DÏ)e<-íkä»ίv·ÙØ?¥™Äd†üÌÛÑ>.ÖIÄ7ÙQ†XTÉkŒØžIA$z>hì GŒ®¦Ÿ`ÇÁhÖ¼‡ÚÃÎ-­ú tg£ÖZí’ÎQ=”•$Hzâp¼èø¨ÚŠÏ½eË:$'O‘’8ö‘Ï$çê‘7”}Ï@ð=bHüŒF“üL©n` Ñµ¨¹—«I Ëöã`U!êÄ{ëZ¶{uðl ÁÔ¨(Ì›3m%õ8ºe»´ÛšôSÄÿ\|N*E¯ØüÔ{?(ú)i0±0ì?OA_X–‹k6"½àsl™çƒ¬…¿…Îg5|õMè}ç§Xß³%ǽÙT/Í+la^èo“G³Ç¼iÉ—ŠP½AJá˜è‘<öÒ :\yåõ²MÇr ö^uuUÉ1ä›Í€ŠŠD1Þ-¨öŽ:Ôä—@o4"sñB„fÆÀ®³¢¥­ÍM5¨)ø-b Vˆøo1°{Œ©°DÄÃÇ‚Hïfé±ÉTØ1‰y/ãï_~ k­Å%¥;å9Ñq”$–C;ÆuÒìϺ»ˆ‹/ë¨%’6Ð G¸0¤¦Î¼¨_Nˆ|Πþtnq_Ì(U%Ékh©–ž êJÑÔmF#ɸH§ÄDi)nÇËhNÍAŸX¸yÒƒEoD¡W(Ž`ÕσÕ`@$ê%ÁKE±üÌ£Ét}.R×.zª³b1>xñ¿€®y$TM¬j#;DE:äÄK© CP\I@ll&Ož9¦íKÒÈääJ=ÒvïàÁÝ‚ô§JòÆ÷I #—(ˆ-“<‹TŒƒm‡>ÅþŠBÑ7í°GÖá+{Ž~zãt½H˜iDOq'65¿†œ—bòýþÐM;Œû ØW=ug«®ã#ýQÛ[K9Ú›Ž½6oìÝ» óçC†89Ўʺ>„6µIR§1ÁšÃU‡åb:+eÒÓpyæåc¾Qì·£!u⽚9ó’˜Ð£²òTÓóïÄăÒ`¿¾>o½•‡¼¼ÈÍM÷ÓåoQ’Šäþç¥L vbÓZçhd¯69§ñ8-nf}½è}[yÆ&vÓ§ù<ïй“ýdï¡x ¹Ò¿‰ !66]ÌoÎr¿É³õ»Úˆ’(kP’=w›ãêê*1~3Ås¤º|'Œm͘­HÂŽØ-Õž1cè¬Ó?¼PÚÞ½ÿþ±`Ä"FŒqö°´¶Ê³ 50x),ô¾H‰œå<Ø»×ks3Z«ŠÑÐP†N1ÐOÆúƒˆ¿ŽºÂ)§×<^nÄ5Yþ7î 9ùÓÞWýêáêüC'K˜LNÉ–÷hDÎP"ô>5 âÇý®_7 Gw!=&†@Aª}{¡G ªòŽàÔ‘BØêNÒ£ÖÀ@|åï^ÿ`ü_ô|$eDaBŠ'<ºJpj›/Nn| ž» ³Q>Á!¢UªJf§Î–ª_Ÿï÷dJò6N¾» ¾ç©Þ^Ⱥ,Tnl;æÁ׿ƒÎÐÊ~‘ÑhÎFá‰Cr!]rÅÌŸ2_’†K$ß<›˜In^úÕô<“–žÃÇŽE Òç¿ýí&LX/È¥ÿ ˜{ÚÔ…rMC²‰65ûD¢È?•bžª÷ €.Ø!ÞfIö¸aÚsÂSïÁÑa„¾3‰ bLzK[QJ´âÅ82sBÏņ€~O× ANÇq8ö»Úv´/Jé˜(Éã¼¶çØ9~ÞÎ[Úéf&ebÙò ìúô¤ 挕k‘6) ž¿ºI± …±KЦǾ8¥w'ž4±úV$D BÐÞ"R³‘X¼ôJää¤*Â0F»Ýé¦é#Ž>ÏÏ%{¢­²?¾íLI›¢s ÇѺuÛPZVnã ô†6cwp5¢Åù¨×wÿ¹›©Ûˆ“ÍbûzEL0‡è`hé…¡ÿÜÛpS•¼|=¾Íkàã©Dº.G\ )Éý¾«Ì¿í Ò¢E3eÿ0¾'C“=úM!Št’ÀñzÖj'âtv¶áŽ;æ(ºÂР-/ÓÍY7K[¼­[¥š¶×Ñ£GA»ó…ž93zXÒ@’Çï6›­ ü)ïWUUáÁë¯TRºï\ì™Â„  -£"uc?޲³cq_ÚBlÝzÛ÷~‰ÎÐã¨1šÑ¢oD[^nh¼ÑË>¤n#jšÛa ½ÝLl9éÊÇÖDZ|upƒü»l‚½'–å,“}©0:¤¤Äà©§nÁ;ï|†˜˜IÖxF³FÚHÖäÑÁ~ÆIR¤nlæ.MŠGbWQZ¡EA»±†ûd6ÀíßoS¤NA¡$ ”ñàscÝ´'­~_ãà$3Ëÿ·¿qïÜŒèÐ|4Öö‘p»–1¾§(.ž‹ùyŒ³=Æ€•ó¸ žÊªotÈÈà&v†jŒ‹´_­ñªQ ¡pQAé!¤ô‡DÿýøÏqßìŸ#´#'M:ü¥åCøk`DxÔÐ…œ–Öµ b§k ÃÞ/¡6 0^–‚'?©HÂ%êêji_¬ ð]@¹ó(((œÞé1äCV²L•øç¶ø›}:ßüæ,;cÖ Û"aÛÂÊ‚é¨vlÃÄùspë¬[GtÚ‡‚Âuuu2NkCCâã㢇¾]\ #ņƒÁ`Àøñãáã£6@ c‡QKìxdLGGÌf³jE…a‡ÈÈHÕ cŽQÛØÑS+((Hµ ‚‚‚‚‚Â0˜4i’"u ßÎËÆŽäŽIAAáÒ‚ÝÞOOŸNAa >Œ¾¾>ùÙh4"11Q5ŠÂ· å«  0ò‰C‘:…A1mÚ4yMMMU¤Ná;òŠUPPPPP¸€.€¾‚˜o¼U((((((((ü0p†ÄŽ®/¿ü2JJJ.w·ÝvÛEWé & ¼¼ü‚盟Ÿ7ß|S–¼ûî»qõÕW»Úå÷¿ÿ½¼ÿ›ßüFÚMûöí믾Šôôt¬X±BùSQQ7ÞxÕçÓO?}V9/¼ðî¹çW>£Aqq±¬ïe—]†ÌÌL×ý?ÿùÏØ»w/¢¢¢d]Õ[®     p‰À%±³X,˜3gŽ$t¯½ö~ùË_ÊÏßHPÞ}÷Ýï¼1ôz=^zé%üáÀòåËQ[[+ïßrË-’è=ðÀ¸ýöÛå=¸eË–aõêÕ’ð=ûì³®û•••’jÄp ^|ñE´¶¶žW] °yófyÕðùçŸc÷îݲÿ|}}ñÇ?þQ½á —\»M›6!)) ?ûÙÏäß±±±2i$âÉ'ŸDcc#~÷»ßIÂB"C©Ð{ï½'‰Íûï¿/%P=ô$7$Ik×®•W’!æM²±`ÁIl(ÝJHH­çŸ^þ†é±Ç“-JÊ>üðC™Ëã=–9Xì<’°_ÿú×·y“ ±>,ûª«®Âúõëe`H’žC‡ÉçeYîÐ$_,’.>ëDFCXSZF"š››+¿w×]w!##«V­’ßás EêÜÁz0Qzç^'÷¶eylƒÒ½›o¾ù R§=wUU•l~¾âŠ+Ô®     p ÁÓdhäe (½Z³f$Ï<óŒ¼Gum^^ž¼GÉOÕ$‰Ð'Ÿ|‚¬¬,—î£>µ×^+‰ Þ믿.ÕžÄ 7Ü I É ó%Qœ7ožÌƒy’˜±,¶Á@RwÝu×aݺuÒI«'Ë&Iú׿þ… 6È{|NÀ–ÉïØ²lÖYÉ!I$¥rŒMD0MºÇÏü¿ììlIP‡ #ó×>³M¶-ócÛž HLÙS§N•yœ ¹TPPPPPPø;JžÜ%a$šŒ„íñÇÇ#<"‰†ª')Ýb"(É*--Ž÷Þ+í¼4ð7999ò3 óÌöL+—ù¸çAU-É¥Pš4m XGMBEB£‘!–}ã7ÊÏZ=yJÍLû8–Oâ©}—R3 ü¬ÕC»¯ÝÓH#»}ûv¼òÊ+RÊ9 lÛs%~$ÔEEE²NšzXAAAAAAáÒ€KKµ"mìhpOÒC ’;9zôÑG‡”èi „K#6CÒ?JݦL™â’Ø ÌƒjG÷<(i#a$H>݉–û暴$äw55òH°cÇy®»TÎ $zTË’¼Q¢ÈºS½»uëVñ(ÓÈã`uu‡Íf“WíùÎü1–,Y"‰/íIŽ5õ°‚‚‚‚‚‚Â%DìHÈh?G›4J¾H`4iIÖý÷ß/¥n$*t $7T™ÒÙ€ùQUIû3wP]HrG•& ɉÒsÏ='ÉU¤,_³Ëcô̥ߢE‹äïÉóe™'mé† XO’wÐó•ŹsçÊ¿©ÖÕ¼K™7±råJIøÀEêF"£4Žå³ YÕØ$u”¬’h’ >øàƒê WPPPPP¸„àáp¿AâF¢@âAR£©µû¼÷M„ߣ„Ëý÷î ]Éó$1aÒT–šŠ”óÿµ<(©ã=¥ÁòiG J0ùLU¸|–åQrÈgèð@Û=>I%UµÚsº?÷ù‚udùcÑ ß3b§0v j›•’x-’Ìgÿ9ÂkŒ![M¾*1£³j®¡³j†…Sã%ì´Šâ¦úßcgÆ=³WV. Dø †Õ’ûEráÐ1,èºW¹y²‚{s1~Åèoèq*@a#¯úɽ~¯~úúüß ´…zšN9\BqÉW´¼G(>é0!8ã¹ .×»4¾õˆ™Æ.V*Ï™'TcY1:ødp÷Uq!{1&ãrG,!ðˆAgŒ w‘°Ì;ÿ@yq‘‹†Ó·WYÚ^pÝLÚ"õGÞÊ嘙KE’–B<ócÊðaÅ •‡‰ž5Deˆå^•{–O³R66M9U)ƒZ”åmjÆ›öoYž $Ò,–þ'œ‰!»4‚¶ …V2dÆo2„HìïåÕ ©ÐVì\嘠ö§’aƒØ?‡$®"ɘÆj±1cTXš!´Üâ$`~¤,íkÊó‚™ïRü<Ç\Òç¶°;_´S[ÚsClYyEøUîCõOHŽº¼ÐòI~‚MiQü 8]#< Ê«…z©iØi'4pÀ®7ð1ï X¹Zh–ëéUwŒˆ½|ðg†U.ÔÊéPÕv§ G¤…õ] ¢Þ*•6¤…Ù5­©GŸÔ •F%²–Ȫ…v%Õ8ê&g/È r)I)Ûƒl$š´ÐPNØ¢­ØEæ‹^•ÞBSâ_Ü\¬ä“J¬BcsÁò~éÍeKλ”mH¥ QXÅŠtÃ3Ë›´ÿ»ë☴µÒ"iÓu{Ò¨§µ\¨¤êöv*Ù’f9l•B-•l­T²% oÙª{.IÓ¹Ë>U Ö|Ã0´¢æfwò#DÆXŽL°ëΕp07„=}†âY™×êJcÉL§<í´$¨ææ—`)ŒzIoÎZ’Ôœ—³Ímg¡µ²M¥a!#âlôFˆw«¨Ùfèƒ+êNXè'F« _/ÆÿÚIÚ¼•ÄhجåÜlÞJB×µ²ïlsѺ¸Bôp©‚òßðA¥ÁZ'Œ§ÅoŒº® éŠ2W9B zۙܿ&Ÿ“­3[6j¯;†&„RÅ„ö„Z3Ѽē`íÖ”ºŠYü£Ó6%æ TaQFmH’ØÂÛ3„Éš j;zÙ¬¹¨ð²£Q“›+R—?äH7|®þ†c ˆ¢šÄâàÑJ%zbíð–¢o.f»×Z_’«‡#„#¯YŒ<8—ñ7¨G8­~íÍU¨vÜãYVAÿfXAxE60¨)¼±¨¾È6–Óy ÉeIzÿ :ÔýSÛ¢ø¯hž¤!÷/®$=0øóÄ–+z›Ú·{ó1'ŠmïÍÉß‘qáY =#+ˆ%<ËBø7åuµ5ªþôoååiƒ«Ü¿þöMàö8d½©= ó˜e.®ÌKÞ îÆ4°¤þIýêT(WÉU%*UÐu !jBCʤ/Zñ/Új6´½ÐÖ²¡­ê…¶ž mM/´lhëz¡mfCÛÐ m+Ú¦^hÛÙжŽmìö&ŽG%³ãñÏÿÿûR‚äµ¢Î`ëz¶ª‰N,ôJVAž×‰ï‰±ÐiÙœŒ X}"d,ôiÒÑ:!2º<›“ìŸ =¢Íɨž Ý¥Tœ”ù\èMmNFí¤ÌçBg+ ˜Ï”¾Xu¯¾ØkÇd¥™ipð^Úßþoã¹x¥™Ùc¿˜ŒæQyio4ý¼‰^,öÑ6Ö‹7³¸o¢}´ú[ùho¢}´Æ[9&oBFF/­ùVsñ›‘ÑKkŸ}´ré°ös/NZí;uGõÚ<º²ß×nÔET+ ØÖïèÀf܉+¯rŽlÆ8”8ã.\e•?st`3nÂUµ2O÷àªZ™§Œ[pµc0OI‡¢¸4Fpc@Íéõ{õ¶§Ìuá¿÷mò³øÙ#T;±tê*6gÙlèrÄTÂŒo¡¾J…ÿÃÄ‚SêñàÉ›N¹/3{DÙòú2_C\ • aV6~«ÞõËŒ.~3¿{½ :§R-´ËjXÊ‹ñwÃ[áÅi¦Jõèo™Á¡Ðl©Ÿ“*ÈZ¾¶®ºÃ Ôe^ªëÏHðú b‚É(è;GtÙê$T–’P]OB­Pm´_“ Þ#o¬`A¬ÌëÕe,Ä’-,%"Ú£‰$ï÷Q1dµÐ˜ ÇES.è#—Ïh“O_Ï(ÌÒÜó1ølËÎÙyåÅ£ªæº«4°ƒÉîYô ·Ô¶1ß7•¯GÌœ2ª”1 —çcψ­¤e±õæBމR#1RÄÂ#n.ª…F­(•BË(39Â$S ËÆƒ¼šÁÒ•k…z¹•]f\(ÏÉ^©µc²‹ÇÊK¹Ÿñá•u·ÄÌ8¦–)åˆ2 -ê•bDÇ’9hD¡å®ƒ*{™ƒ*R‘7ï™ÚÒž©ë´rŒ‰1øQ²èpµµÝzª/e¬u +x{,äÅ#” Ff^zTI†^íšaŽìt××Ð-*ë /wýiޝ$þuãÅrg³°ºM7Ö ®å®?Ñ àØºCÀ¢Ð|ú_OÀ.ºÈÏ.CSþž‰ƒ#¢jk>›ëùü*ßpÐ0¤îXtä¾igÂíGùV”£im¬©¤âo1@ Ï»ãù ¢rI³+´X˜g€ÉPeò¿ŸÏÙ̪œ;m ™ÊÀ^ìèzåKm£2Iç™iÜ>YíÃïjz"™ž¥BŽÄL1ž;td•ýT2Í…CÉ¥,§;Æ >Aˆ€á,¦"½-ÌÌ$íª‹ƒ˜2·Ä@§Ó1;ðÈcœ²W.Z¼“±[…%Ád y :æS9³HNeÙ’¤¶1w÷ ›Ó:èUY¼Wé¶Ó„Ãçƒ4„Iâ ÊÝ›µq±ê^âbU™L`'±£Ýœ¹ñyîû<¯ u ;ì¥ùqµ|C¦½x½P+•Ê)ªÄ¾!òr¡Ò¨ÏÅ·J5Å„úžÁ»1CëܺØàž ¢X–{‹•’úQ*·oüÍÆVå¶]»¿o•î Žú¸‚z–O!ª‹eZ„ðš;–iŠÃfx Šª…+w•£¤#VR·õ2EÕ›¢“28Á@0é„ȵãúP|íbr2™œˆéã1:-µ:gsjíj z³PjmasʵÍ;ñómNíbs–Ûœj Œ…k½ÖÔÔ/¦&“© x>&CS«·ç M9¼QhW›šJ³áš»J­ÞºùÐhµÎÑÐÔ/†f¥¡ §ÛµÆ¦q16Y §j3 od'þ@Ì-Þ¨S-y^(Œ¹må®·~4^rg[ú¿¡gˆ˜.ˆ±3¼X0¨]ÔVWÚJõfîÎÖH/8ºr Xžüóx +s»«cÝ;E¥÷FVóâê,wuÓ ‚Æ­‹—³•—ãóK…G9=ÎãØâj½’ÕÇ™¿é¹BCÔ×tå)ù‰^¥£‡:!òUˆä§²ÎvB9£øû<êðºÈb6û$|ðTæ™ÿˆ8‰þpdà!6üóV‚|‚䀕‡)‡Øz“eGÌÉý ”¡TcKsø‰Imk Fþiy”í¸ñ÷å_‘eщ hºÅocQ¡ÿ»}»OZz2c|æ$ÜË÷^{›´‡蟦†Ovpÿ7–¡ùž×\žµ¥K “ÚXaW‡=uî[öð¨†á'éŸøçØ«]®'OüaáПÔË2Y9ûî¬ æŽUâ,"D­ËQçmbGA~±ŒÀÆúRûAÊ’…Ægy1¤ær 6à`Y©Ò¨žn©™»î«ðº³U#û7ʾ«TXÊÞ3M0bÔs4ÿ–Ψe!vtûJ›I?Ä#e¯û0ò÷T,GKê;¢éòê(ûëÊ,|Y¬28ØÖ“õ.Cy‡QyŒ‚.IæuÜòSQÎî‰üÞkQ,ÊåO Ä–’ÙÖŒZ/Û—Åà6‹ÁÈA^ŸŽ´tY nµ|½ÙÓqÉÊé—\güZÁ) … &ø-øx·v~€ò䀠1<¶t.r Ü쳦BŠå—Ucà‘šÚͯÆ7¹I1¢È˜´ )´ä±&6Rék$1‹œµÇ '´‹ËÞeq©"Æx½Ë°Ÿæ§ï2D_\†ÝÁ 2ßeôEÇYµl‡2Ȧ`"´@á-hˆÂ_nû©ÔfþŽ+ÓÒÚôY]§ `|œå,U¾ÌR[-lcjµ~¢:ò<çG;Q,Œíód™«Z{™«Ú•Uh¾É)lé¯â7 §€µ8”v~€‡ß‘X] åÌ «v€bL¿r+³ïiˆáW5ÿ¨Q1< 5ž#¯bjÊ廋 J´ÄÒ¡ÔõH¶ô ‡¾gŒ‘éY˾VsܲsÈD;XK{OL]E¿Óôƒ ÷dWæFóåË%íVË#:´~ñ²Ÿd´§¿x™òÚk˜­~Ð(Ûñ®\Úñ6$r¨ ‹ŽûÎï–p~!büY>#Ð-p(_S_2õÆb ð…XSÍqôTJ3ÍAøï®ê"úz’Þ8©\‰i¢?fÔk䗡悱ýE6«9”Êîå ½Qô¥wýتÞHž<"cš£ø6ÆÚ›ÛÞóåcåÓb2AÖ<þ±ë`¨²gÿ˜½Ã´>²ŸcœE$ñªØžU/aŲ’»þÔïwÁÇÇ”áJDð¨â!,›í<$œ[J¿c¤?uN ô{ÖE˜jô ¡gqWK$§äó݇[éMùé33¬/¢Þ_:à/bS½{çQºOÊmð.²–8ÔÀÿäãÐÙ wè‡cÜ[ꋺZ™suGÒ¹»9S¬Ü¿pDLd&!ýtÓé~ºùYKhŸá3L±Ÿ™Ÿ~˜"dxqŠKÔ&²åïyŠ9ê7ìzÐÂ?4œ®ˆ :cðàYrûÖÕr·#B¡1€ž#õ]s]вaëÜ¿a4‰äï3„tq314‚ $eúy ¯;З˜: Ž0¨­¿o s=÷#%˜S¦óÐŽ>"&M”š2ÎyaÓØÑ¦z^ ›h’[¿²i^V6[­l"Š÷º{؇²Â|;”¸Ìœ5-yxîWk=áèëà÷ÇŽÞfû.ZÃx¼«B/zcøÔ×]™~ïB>Ö‚è™yΆàõ,¬`€Ô84÷’›—ðÿ6^2Wß[ï"·..òvI„%¿÷xçöïVøÆÁ:ZðÐs],îYF´ò•`¹Í£=Ž™JÍðh ¦7%†€Að™Õ)n…ÎÓ=ØÕ÷ÔO7ˆ6q.Ç}MœæÅTΩ«˜‡Ø@ïÔœÎþ2©áÉ7ó2Ù§øyýoPKKôç?~ PKÚ Ô2 styles.xmlí]Y’Û:–ýïU°UÑõÕ¤8ht9]áñùU¥ßsD¦+ª?!’ðLlÊÁ_µƒŽŽú¨ ôNz'½€^C AHQ³”t„3\‚÷\çbÒë?>E¡ñIŠp|Óq,»cÀØÇŠg7o÷ŸÌQçoþåõ¿~øõýý|ýhàéùðU€ýEãÌL³ç¦Æ×oïn~otÌn÷ׯ¿r) “Y·ûáþƒ‘þPÿd|A±?ÇÆ-šÍ3ãOyò¿ùï/wEv5yùÔŸê2nk2DrþIzÏWÕ‹húO8£Æ_+-OV¼¿ÈxW“!’óOòûU/zË+θ£îÃøöóJ­—Ðø#æ@ãË]5÷vá£Oæ2BàÌie¯×µ¨™eK¬Ò…@^õy¦¨}‘ã¸|°hª,¹Aø˜O¢I¨q)Ô-Ÿ«W¸Qª\檔Vf²àÉ‹ Soκ1 æÝÓa2/mš,b>ÜÑÑØ|¤ÙËñ±Ð€ú|sB  õNÈ/u{$(££¿Qìtl f6)»=ŨÀIJ½FwÕ”IO"•ÝJîý˜# :[8É›ÒpX¬’‡]úUæš‹ŒGp_È¡”¬¤6ùX`æ$LÍø4ã»°šñiƧß‹f|<Ÿžõ­ wI¦™ f‚š j&x5p5ÔLP3AÍ_üm‘fSë¯8*#dZˆ³ÐL4}Ö¬P³BÍ 5+¼¸šjV¨Y¡f…/‰æ—Μ‡nq3§å9Üà§bõ,ì’Z¸æ•šWj^©yåŃռRóJÍ+_.¯D™tÛë¹{=½è¬i ¦š^\M5 Ô4PÓÀC“òÀ†›áó»Ð·»×fùÕ Š{mÖ2÷®Kæ//"çÓ˜Å*x~Ù¢f©š¥j–ªYêÕÀÕ,U³TÍR5K}1,Õ=0KU]æ-}QO…šN§¾_~uçé¨é ïRõxƒz»¾FÂúKêdšÚjj«©­¦¶VS[Mm5µ}±ÔvAÀ¾•ðìKñ®^Š×LP3Aͯ ®f‚š j&¨™àKb‚§]W^4’¿[|65[  ¢&ˆš j‚x5p5AÔQDM_A<ôBø±'D^àMe D¾æš7jÞ¨y£æ×VóFÍ5o|±¼1‚ ]£®0Ëgz"@¾CBË„²¿[#Ã8€†«Xv¹²È§ÏT÷Ö²U7VW/pkªy¨æ¡WWóPÍC5Õ<ô%ðлÿýŸEÃC[ÌLÇvR[| ÿlÑ|ý<³‘”¼j‰0R-Ä/ØTKŸŒ¦S9GH4ù§â£á8²Ôdþ¼ùÌþ6*Ù(3A´ß¡,É’"‹#Fs0®=aÔp¾¨îtQ½Û¶Ò~Á$õ_9®¦¾»[r)õâÚ îØ÷‹9æij5ÕM‡Y‚7ëEœªÅ·»R/QŠ RbuY¹¨(NH²Bóœ¢\‘¡*ÝÇQ§Z]Yg'®x|³L•\åæÒ‹ óžÓAÄܲ´ˆdÚWÒ8‹03¾xÆ'ÜpY¬ê0œR!Þå¶Ñ‚Fk±qItÆ×ßRwµO“u,ÇmlµmktW[*¯Z†‘›.÷èE³®Í/ÛvUb?HŸëw35ÖC†6ÊyNµ&8ËpTÉ‘G4ÊîYŸtún4kw1 W³ ó;$1Šg7Œ,`­GQ.‰æå aù- ïÑ®¬R\.mÏê¨_;<|uxŽ5³×Ú»¿©:ÖL®*`W“·+ë&÷Nhr·g ÃR{“« ØÕäíÊ:†É{§4¹š laòZª²ƒÉ[•u “÷Ohrg¸g+W°«ÉÛ•u “Niòžåp”ÞÈé ÆÃíM®(`g“·*ë&¦é–v¿\vö.Äþ÷ÿ\àl«¨¼5[^ÏhßöŽÃ°ßÿ|ÿñÅÔÞû_?ìFÈþ$8ýÃ{¼ ãø˜'TÔÏeÍŒ!A> jkÿ›ýñz…¶«x²x÷n>½(²¬ˆÔ(Ÿ­Q¤Å°_…Œ’9E{8ÿÃÕYÐNFؾB1Åv­ûósÂÕú¾%Zy¢‹ÍÚ©‘¦4à[ÎEVsÅ\GÈÿ> ¢O8 ñ# öE6²m~AÐå û3|ž`¶OàR½ÑFªr>j º vdŠõ•°õdYÃ7 ¶à·5Cµj¢ÇÁËE­f`Bœ¤« ÅÃT?>IšWgw£”kGýV’}k<¶’Yã¾ÛJÒq¬±×k'Ú³ÆÎ¸èÐÛípmk4´õ¬ÑÐi':°F}¯èØy£\´»VÅ;/'þ0ßñ^mà©ñ o·Þ°êÞ$-rµïðÍhµÃozGËîÝê•eÜøÒöY= ¯x‰;1ü0ïiSÒUû«ö°÷ž‰+žd<>Ú »§á3‚ãÙ.†¯åÍ(ëñxâ= ¢ ’åÅšú~ ä/€z½ÉnÞƒg\Ú$Þçû/·Æ@¾/’§¦Ó|7Ó!´y£¨ék†´u#|ÎÌ€Ú`. ©üfº„À”*øæˆϰò¦( ˜ìI„b„‹P„°Sµìx<T,‹Y>Í2aZeñ NÙä “Y=P’‘pâgEÛ*fˆ`–^=l9–%(óç7‡²{¬ìŒ°›ìrbÓ™< ¨ž!T êýO|ÿ Œ™Vf¼ˆ&Ûk‘ÛïàÇ1þÿoÿ½íq ÉŠ¬ŒR@OfzI‡5jP©¶óoÚzYh•g5Ú£u¯ ­ò¨F{´Þu¡UžÔh¶w]h•5Ú£í_ZåIöh7n^¿,´Êƒíѯ ­òœF{´£‹@{Àc rš.&çç§[l¯¶ôùÏ!©ìý“8!ldªG Þ†©z®‚©ÆÅ!„ý™êjI+Ó[dum[Š™Ã9Õ™â]–9óqäË2Æ™+_–1Î|”ù²ŒqæƒÎ—eŒ³ƒ¾,SœùôeãÌG¨/Ëg>`}Õ¼~üï3‚)<,³oø²kÏcsË-¯.*Å©ÜzSäÍ ¦ëT6\ìf <ù úÙÚ~Óv&iw„Ùò1¯gÖ}÷¡£’Ý,ã îh­×o®öž‹ä\Õ%¡‡äC¶Ýª±°çÚÑÕÕäá;°WPéç ß›—šòc½Šà}|êà}5’mä¥ãƒ ¸¢õœ!¬ÿÛß[o¼ôp³Šjc /*¬?Q¼r’v¡ê[·‹“Qô“´‹=ƒú}ﺬ–±gP?8U${cìÖO¼Ä{†õãdŠ=ƒzÇ>¯ÿÙÝG–݉?ŸÙŒÂ°ç‰ÏbÆÜ¶úýHSå¶5´‹£Œû©àÐÍéW‡U3ô¬~opf3ì¤C·¹ mÙÄœ{{ë&vzµo_®gó;odPžÕ·‡»VÚm¦Ö¡_œ¬Ý¬ƒãYîQ ëÞ;×gØÂA^²]½{ç ËŸØ®]<"¿zh¤X|dÇ‘"*î›"CŒžôÙ¤!Ûüë»ÅÍ+7Z‰›%V’ó±U}-–HM¤¥\wl åda—¯ñ Œ1A tÔ§ž7õA"¯tIð6#Þζ¹Kc 6QA<:Þ ¡ì1kØQâ-ê½q‚IFÊš¯sË Y[¾dk‘lU=_»|¹\ü/hß“€m½¾M 3rʯR/ N îŠoeøœ6‡”…/w‚‹ÍÊ­ö‹·¿xg}¹[Ü&^ÓgäØB§µ·uk}q‘‘·ã2•c¢~%±™ÁåçnìpÇÏަΗvó´»\jE}j~‚Éâ+¶§àRÝU¹Q ¢,\Suh­ÞÌJd¬¹S¼økyf6_D“ ÐXª¢]¥ä«£ðÐê‹$>šG®4š/¿u‹¿2_rgËâÝckâ (gnVÅ=¾*«Fqœ<{]ï v©×¦'uÖj»­µh_ì©Úi‹¦)|¼ì]Ù°T» ~ªvƒÚ9‚Ú¶·U3³­c¨4ñе¢•‚4-éu%.¶štw¸Üu´Æžå Æ î OpenOffice.org 1.1.4 (Win32)peter lin2005-06-18T21:41:01peter lin2005-06-19T20:37:45en-US37PT10H44M42SPKÚ Ô2 settings.xmlí[[wÚ8~ß_Áúµ'14Mrzä à-×¹ð&lalË•å:äׯd. ÄN¨w{v£ˆméûFÒÌhf®¾>¹Né¢&ÞµT9.K%ä™Äž}-†õ£sékí«?µ®:|èé%2b]ZÄ ]ä±£1Æû¥ÞHijI:’宼nÜï˜P[–µ¡VZ^k«a%N$ËzG*IKÀc‹YRí*Ké—ËÇ×ÒŒ1ÿR– ç!?yªårY^^K«Oöæ›þQG'qßÊÅÅ…?]wõ) 8%dñB¼Áð²ãz°I¼)¶ßV‘—]¤õn-ùfâëùÖ®–ÝWÀG˜!W,FiuÛƒ._†E›%’’Æl÷¿Åž8P‡Ä—ÖÙÂç±Ç¤ÚÑI¹z%¿Æù%ìš²DðÓÊçóÜèwØb³$ø“³Ó/ŸsÃ7¶g‰âW+ggûâ¹Ð?ž…žµË…¢äÍŠÇpÍ¢‹}$F‘aíˆ0Ê5Aª ½¨d[‰Å–¬Öc~Bˆƒ 'զРPü:%ÞîoÐ 3‚ÁÀƒþ’d_Ã÷ ÚÚØ Š›ƒølaHÑ<"“Õ)¿Yàj-Yz„ÛPê\rÑôœ0hBÏrPœ. Ô^¡¹üB{À-Í)bwt»Øƒ õˆ³ˆ—­Åo0 è’ÜRås¹œu6¯¹ŠØ¢Õ~´à‚Ÿy»ø0@g§ ‚.¤š¼w;¿Î&K{HiZÄœ#ë}Qä÷¡:0îþ'El`‡¨Ä!¯E̯ì7¡ƒè»çMv|ᪿñcx÷ œÊM'£Ý Ã=²x2påKV‹Œu¡M¬b¼—‚í•§,^#!ßEÕÁæ|ˆž˜náBù˜@AÏF7d‡|:[(è!zC¢ä]>Í|0ÎHÔ£H„i†GEmøS ÑùˆmvCÆ3¬7Ùrœ“\»ò€q†t×Äã³1£¯¡;„½²”Cà $ab’‘1lÿïgv{g^3»Œ[¤*4@©ÒWª_2êËOðtÙó¡×¹y¦ ~v’1^#§K Zäé«]ί¡ßXëÜØ±Ø÷ÐE2B‹[š{ y$Ží“Yr”6ÿÀ<Š™‡Äù” Ñ=‘Q/è¤mcBÜ®—|îq¨&Ü|YuJ{¼*d%wÛ¯\¹¼i±ýJÝø¾³ˆjÁÃG f|’C¡£›VJMmŠtÉS=õòEy[¹P+N9X"Ç™d„Ç´òÌ‚ªÄUfQ r)š½Ä©Ü!'kf“CƒÁìbXÅ@S:ŒK2`É‘Sõ¼~zÙ·Nè[ò6›œ¿Üâ)P˜„®–ÏÊh*  ª¦gŒÄ ÅðUÕw…ºGCA6öDE43‚îYoŽÇ9ºWÈ+b¯Fƒÿé^½{½Çß ÐÂìÊζMÈ̃zÊY֘颸fôBÏdᛕ—<ž¸H«2wPj)ß+ƒ 4çEO¢°÷]1 ŠŠ©-Ñ)Œ„Ž%}³·bÙüH®¶’ >×Å$ yYs$•¢8…U¥®8±:¢^4Æ Cî‹U¤!.D~qÎñãî>ÇÛžÓOåѪ k ‹Þ=ôÚú³AèºE•ìã]ê‡ÐÁl7"ÊS¶a5xìÀWž›:kÁÅkò3”‹ ¹¸Le ?óK æ<»þ|^.—¸`äb î¦>Û¯B#ûñ“\EFãÆ1«ìûø¾ow†vÔV•çñý_þø¾ ~§›À7nŸaÕw,TºˆŒfÇ1]Ç1£­®wè@öúºêãÿžOú´+7ÝÛHÚ¿Ö´v•ú&¨G`”:ÐMÀM~ê#0Šî÷l`®ý>÷•gд4ûÜ(@pá^$¦nFâ~l‡ü» Z@iƒÆ9xˆ–v9Œ”P|£>¸c¦­TÞq¿ù ð÷£}´öÑþC-GìsñßG¾ªSâ‘ë;ÙÊJ©¯åW¿qÓ~îQûPKµ°//¼—2PKÚ Ô2META-INF/manifest.xmlÅ”Ao‚0Çïû¬wx€¨ÕˆF“%Ûô ‡ l¥¡O£ß~51™Éââf/}mú~¿íh²/ cÇjÅ+áDz‰ÁDR¥\ä>Y¯æ&%“ñÓè9\ÌVËÈ(cÁ3¦pØÆr¼¾Ì b,$‹,ã ³ª:W¡ñÖœÓl€è¤Ù²RL‰†gêPB—>Ù Ê!@¥ùUËwmÛæ-)ã3™Àúp‘˜¥<6ñ ™Ob) žÄ¨o ;‘Zj+,-µx)k¦i»²mQ˜2ÆO€ÀM^Æ9)òë¸%Op«màØ—ÃkgÇs#ÚéZGĪ]û”ÀLOjê:^ÐõüõlàEµ£ÿR»ýÞIº^—Nƒ¥P»A'Œætþ õÆiÈöú)\§&•@Ý||+wå*<LÝ[2ŒïŸ•!êïñœv-ä«PKÜÛNRXPKÚ Ô2óàÛXmimetypePKÚ Ô2=ÈÃs__-EPictures/1000000000000040000000400142E835.pngPKÚ Ô2­_ÿW´Š´Š-ïPictures/100002010000019A0000008214B7D082.pngPKÚ Ô2Æéz­‘­‘-îŒPictures/100002010000019A00000082C94EE80E.pngPKÚ Ô2:áp³õ³õ-æPictures/1000020100000276000000D2458AB688.pngPKÚ Ô2$_ÝêÝê-äPictures/1000020100000276000000D22B3DEF8F.pngPKÚ Ô2Kôç?~  content.xmlPKÚ Ô2`ðy¼±Í Ãstyles.xmlPKÚ Ô2Žàª==¬%meta.xmlPKÚ Ô2µ°//¼—2 *settings.xmlPKÚ Ô2ÜÛNRX1META-INF/manifest.xmlPK !š2apache-jmeter-2.8/xdocs/issues.xml0000644000175000017500000001136612032647214016605 0ustar ebourgebourg Issues

    JMeter uses Bugzilla for issue tracking, i.e. for reporting bugs and requesting enhancements.

    Before creating a new issue, please check whether the issue has already been reported by searching Bugzilla. It's also worth checking first on the JMeter user mailing list; others may already have a solution.

    First check that the issue has not already been reported. If reporting a bug, are you sure it really is a bug in JMeter, not just a misunderstanding of how JMeter works?

    If you have not already done so, you need to register an account first, using the "New Account" link at the top of the main Bugzilla page: https://issues.apache.org/bugzilla/.

    Make sure you read and understand the information on the account creation page before signing up.

    Once logged in, click "File a bug" and select JMeter from the list.

    Please make sure you provide sufficient information for others to be able to make use of the report effectively. Use the checklist below to guide you.

    • JMeter version
    • Java version (output from java -version)
    • OS version
    • jmeter.log file (unlikely to contain sensitive information, but check before uploading)
    • JMX file if relevant (redact any sensitive information first), providing a simplified Test Plan (using DEBUG sampler) will ensure BUG is fixed much more rapidely than without it
    • JTL file if relevant (may need to redact sensitive information)
    • For a suspected bug, describe what you did, what happened, and how this differs from what you expected to happen. Does it happen every time?.
    • Add yourself in CC List to be notified when JMeter Team requires more information (in this case bug will be marked as NEEDINFO)
    • Select accurately the IMPORTANCE level, ENHANCEMENT means it's not a BUG while others mean it's a BUG
    • If you are providing a patch to fix a bug, please ensure it is in unified diff format. If using Eclipse, please set the patch root to "Project", not the default "Workspace" which is harder to apply.
    • New source files can be provided as is; please ensure they have the standard Apache License header (as per other JMeter files). Please do not use @author tags (credit will be given in the changes file).
    • In the case of patches for new features, please also provide documentation patches if at all possible. Components are documented in xdocs/usermanual/component_reference.xml.

    See also the following Bug writing guidelines, also the terms and conditions noted on the Bugzilla account creation page.

    apache-jmeter-2.8/xdocs/download_jmeter.xml0000644000175000017500000001475112032647214020450 0ustar ebourgebourg ]> Downloads

    We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be available from the mirrors.

    You are currently using [preferred]. If you encounter a problem with this mirror, please select another mirror. If all mirrors are failing, there are backup mirrors (at the end of the mirrors list) that should be available.

    [if-any logo][end]

    Other mirrors:

    The KEYS link links to the code signing keys used to sign the product. The PGP link downloads the OpenPGP compatible signature from our main site. The MD5 link downloads the checksum from the main site.

    For more information concerning Apache JMeter, see the Apache JMeter site.

    KEYS

    apache-jmeter-&release;.tgz md5 pgp
    apache-jmeter-&release;.zip md5 pgp
    apache-jmeter-&release;_src.tgz md5 pgp
    apache-jmeter-&release;_src.zip md5 pgp

    Older releases can be obtained from the archives.

    It is essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures. Please read Verifying Apache Software Foundation Releases for more information on why you should verify our releases.

    The PGP signatures can be verified using PGP or GPG. First download the KEYS as well as the asc signature file for the relevant distribution. Make sure you get these files from the main distribution site, rather than from a mirror. Then verify the signatures using

    % pgpk -a KEYS
    % pgpv downloaded_file.asc
    or
    % pgp -ka KEYS
    % pgp downloaded_file.asc
    or
    % gpg --import KEYS
    % gpg --verify downloaded_file.asc
    

    Alternatively, you can verify the MD5 signature on the files. This is not very secure, and should only be used to check that the file has been downloaded successfully.
    A unix program called md5 or md5sum is included in many unix distributions. It is also available as part of GNU Textutils.
    Windows users can get binary md5 programs from here, here, or here.

    apache-jmeter-2.8/xdocs/localising/0000755000175000017500000000000012165514773016677 5ustar ebourgebourgapache-jmeter-2.8/xdocs/localising/index.xml0000644000175000017500000001624012032647145020524 0ustar ebourgebourg Jordi Salvat i Alabart JMeter Localisation (Translator's Guide)

    This document describes the process of creating and maintaining translated texts for JMeter in languages other than English. English has been tacitly chosen as the project's primary (or "default") language -- despite its obvious inadequacy for reasonably unambiguous communication -- as a tribute to the Power of the Empire :-)
    The metropolitan language texts are thus maintained by the software developers, while other project contributors (called "translators" in this document) take care of maintaining the texts in the languages of the provinces. The process of producing and maintaining the later is called "translation" in this document.

    This document assumes you'll be using i18nEdit as your tool to edit properties files, and instructions will be specific to this software, but this is not mandatory: the process should mostly work also if you prefer to use another tool, such as or vi or Emacs.

    This document describes 6 processes:

    1. Obtaining the current texts [translators].
    2. Providing the current texts to translators [developers].
    3. Downloading and running i18nEdit [everyone].
    4. Translating [translators].
    5. Submitting your translations to the project [translators].
    6. Merging in new translations [committers].

    If you want to help with JMeter's translation process, start by reading this document. Then send a message to dev@jmeter.apache.org stating your intention. The files you need (*.properties and *.metaprop) are included in the source archive. But if you are having any difficulty, one of the project contributors will be able to grab the current texts from SVN and send them to you. You'll receive a jar, zip, tar or tgz file that you'll need to unpack in your local disk.

    If you are familiar with SVN or you're brave, feel free to anonymously connect to the Apache SVN server and obtain the JMeter source yourself, as described in http://jmeter.apache.org/svnindex.html -- the files necessary to the translation process are all under the jmeter/src directory.

    Once you've unpacked or checked out the files, make sure to find file src/i18nedit.properties in there: you'll need to know where it is to start working with i18nEdit.

    If you have access to JMeter's SVN repository and you want to pack the files necessary for localisation for sending to a translator, just go to the directory above the project root and issue the following command:
    tar czf jmeter-localisation.tgz `find jmeter/src -name "*.properties" -o -name "*.metaprops"` Of course you could also send the translator the whole jmeter directory, but this will make his life easier.

    The runtime for i18nEdit can be obtained from http://www.cantamen.com/i18nedit.php. Download the binary distribution (i18nedit-1.0.0.jar) and save it locally.

    To run i18nEdit, just make sure to have a reasonably modern Java Runtime Environment in your PATH, change to the directory where you saved i18nedit-1.0.0.jar, then issue the following command:
    java -jar i18nedit-1.0.0.jar

    Then:

    1. If you've never run i18nEdit before, choose a language. The rest of this document assumes you chose UK English.
    2. Select the "Projects" menu, then "Open project...".
    3. Navigate to jmeter/src/, select i18nedit.properties, and press the "Open" button.
    4. In the window that opens, select the "Project" menu, then "Project settings". Check that your target language appears in the list in field "Additional locales (ISO codes)". Otherwise, add it now. Press "Save".
    You're now ready to start translating.

    Before you start translating, select the "Project" menu, then "Translation settings". Choose work mode "Directed translation (source to target)". Enter "en" (without the quotes) in the "Source localization" field. Enter the ISO code of your target language in the "Target localization field".

    Click on one of the editable fields in the right panel ("Comment" or "Content" for your language). Press F2. i18nEdit will bring you to the first property that requires your attention, either because a translation does not yet exist for it or because the English text has changed since the translation was provided. Enter or fix the text if necessary, then press F2 again to repeat the process.

    i18nEdit's on-line help is excellent: read through it for more information and tips.

    Once you're done translating, just pack up the whole set of files in jmeter/src in a jar, zip, tar, tgz, or alike and attach them to a JMeter bug report (follow link to "Known bugs" in JMeter's home page for that).

    If you're a committer receiving text files from a translator, follow this steps to merge them into the project:

    1. Unpack the files submitted by the translator in a separate directory.
    2. Start i18nEdit as described in Downloading and running i18nEdit above.
    3. If the translator worked in a new language, make sure it is listed in the Additional locales field in the Project Settings.
    4. Open the "Team" menu and select "Merge changes as integrator".
    5. Enter the path to the src directory in the files submitted by the translator.
    6. Select the translator's target language.
    7. Press "Perform merge".
    8. Close i18nEdit and commit to SVN as usual (remember to Refresh your project if you're using Eclipse).

    apache-jmeter-2.8/test/0000775000175000017500000000000012165514773014414 5ustar ebourgebourgapache-jmeter-2.8/test/src/0000755000175000017500000000000012032647143015170 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/0000755000175000017500000000000012032647143015757 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/0000755000175000017500000000000012032647145017202 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/0000755000175000017500000000000012165514773020652 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/util/0000755000175000017500000000000012165514773021627 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/util/TestJorphanUtils.java0000644000175000017500000002576112032647143025756 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * Package to test JOrphanUtils methods */ package org.apache.jorphan.util; import junit.framework.TestCase; public class TestJorphanUtils extends TestCase { public TestJorphanUtils() { super(); } public TestJorphanUtils(String arg0) { super(arg0); } public void testReplace1() { assertEquals("xyzdef", JOrphanUtils.replaceFirst("abcdef", "abc", "xyz")); } public void testReplace2() { assertEquals("axyzdef", JOrphanUtils.replaceFirst("abcdef", "bc", "xyz")); } public void testReplace3() { assertEquals("abcxyz", JOrphanUtils.replaceFirst("abcdef", "def", "xyz")); } public void testReplace4() { assertEquals("abcdef", JOrphanUtils.replaceFirst("abcdef", "bce", "xyz")); } public void testReplace5() { assertEquals("abcdef", JOrphanUtils.replaceFirst("abcdef", "alt=\"\" ", "")); } public void testReplace6() { assertEquals("abcdef", JOrphanUtils.replaceFirst("abcdef", "alt=\"\" ", "")); } public void testReplace7() { assertEquals("alt=\"\"", JOrphanUtils.replaceFirst("alt=\"\"", "alt=\"\" ", "")); } public void testReplace8() { assertEquals("img src=xyz ", JOrphanUtils.replaceFirst("img src=xyz alt=\"\" ", "alt=\"\" ", "")); } // Note: the split tests should agree as far as possible with CSVSaveService.csvSplitString() // Tests for split(String,String,boolean) public void testSplit1() { String in = "a,bc,,"; // Test ignore trailing split characters String out[] = JOrphanUtils.split(in, ",",true);// Ignore adjacent delimiters assertEquals(2, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); out = JOrphanUtils.split(in, ",",false); assertEquals("Should detect the trailing split chars; ", 4, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); assertEquals("", out[2]); assertEquals("", out[3]); } public void testSplit2() { String in = ",,a,bc"; // Test leading split characters String out[] = JOrphanUtils.split(in, ",",true); assertEquals(2, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); out = JOrphanUtils.split(in, ",",false); assertEquals("Should detect the leading split chars; ", 4, out.length); assertEquals("", out[0]); assertEquals("", out[1]); assertEquals("a", out[2]); assertEquals("bc", out[3]); } public void testSplit3() { String in = "a,bc,,"; // Test ignore trailing split characters String out[] = JOrphanUtils.split(in, ",",true);// Ignore adjacent delimiters assertEquals(2, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); out = JOrphanUtils.split(in, ",",false); assertEquals("Should detect the trailing split chars; ", 4, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); assertEquals("", out[2]); assertEquals("", out[3]); } public void testSplit4() { String in = " , ,a ,bc"; // Test leading split characters String out[] = JOrphanUtils.split(in, " ,",true); assertEquals(2, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); out = JOrphanUtils.split(in, " ,",false); assertEquals("Should detect the leading split chars; ", 4, out.length); assertEquals("", out[0]); assertEquals("", out[1]); assertEquals("a", out[2]); assertEquals("bc", out[3]); } public void testTruncate() throws Exception { String in = "a;,b;,;,;,d;,e;,;,f"; String[] out = JOrphanUtils.split(in,";,",true); assertEquals(5, out.length); assertEquals("a",out[0]); assertEquals("b",out[1]); assertEquals("d",out[2]); assertEquals("e",out[3]); assertEquals("f",out[4]); out = JOrphanUtils.split(in,";,",false); assertEquals(8, out.length); assertEquals("a",out[0]); assertEquals("b",out[1]); assertEquals("", out[2]); assertEquals("", out[3]); assertEquals("d",out[4]); assertEquals("e",out[5]); assertEquals("", out[6]); assertEquals("f",out[7]); } public void testSplit5() throws Exception { String in = "a;;b;;;;;;d;;e;;;;f"; String[] out = JOrphanUtils.split(in,";;",true); assertEquals(5, out.length); assertEquals("a",out[0]); assertEquals("b",out[1]); assertEquals("d",out[2]); assertEquals("e",out[3]); assertEquals("f",out[4]); out = JOrphanUtils.split(in,";;",false); assertEquals(8, out.length); assertEquals("a",out[0]); assertEquals("b",out[1]); assertEquals("", out[2]); assertEquals("", out[3]); assertEquals("d",out[4]); assertEquals("e",out[5]); assertEquals("", out[6]); assertEquals("f",out[7]); } // Empty string public void testEmpty(){ String out[] = JOrphanUtils.split("", ",",false); assertEquals(0,out.length); } // Tests for split(String,String,String) public void testSplitSSS1() { String in = "a,bc,,"; // Test non-empty parameters String out[] = JOrphanUtils.split(in, ",","?"); assertEquals(4, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); assertEquals("?", out[2]); assertEquals("?", out[3]); } public void testSplitSSS2() { String in = "a,bc,,"; // Empty default String out[] = JOrphanUtils.split(in, ",",""); assertEquals(4, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); assertEquals("", out[2]); assertEquals("", out[3]); } public void testSplitSSS3() { String in = "a,bc,,"; // Empty delimiter String out[] = JOrphanUtils.split(in, "","?"); assertEquals(1, out.length); assertEquals(in, out[0]); } public void testSplitSSS4() { String in = "a,b;c,,"; // Multiple delimiters String out[]; out = JOrphanUtils.split(in, ",;","?"); assertEquals(5, out.length); assertEquals("a", out[0]); assertEquals("b", out[1]); assertEquals("c", out[2]); assertEquals("?", out[3]); assertEquals("?", out[4]); out = JOrphanUtils.split(in, ",;",""); assertEquals(5, out.length); assertEquals("a", out[0]); assertEquals("b", out[1]); assertEquals("c", out[2]); assertEquals("", out[3]); assertEquals("", out[4]); } public void testSplitSSS5() { String in = "a,bc,,"; // Delimiter same as splitter String out[] = JOrphanUtils.split(in, ",",","); assertEquals(4, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); assertEquals(",", out[2]); assertEquals(",", out[3]); } public void testSplitSSSNulls() { String in = "a,bc,,"; String out[]; try { out = JOrphanUtils.split(null, ",","?"); assertEquals(0, out.length); fail("Expecting NullPointerException"); } catch (NullPointerException ignored){ //Ignored } try{ out = JOrphanUtils.split(in, null,"?"); assertEquals(0, out.length); fail("Expecting NullPointerException"); } catch (NullPointerException ignored){ //Ignored } } public void testSplitSSSNull() { String out[]; out = JOrphanUtils.split("a,bc,,", ",",null); assertEquals(2, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); out = JOrphanUtils.split("a,;bc,;,", ",;",null); assertEquals(2, out.length); assertEquals("a", out[0]); assertEquals("bc", out[1]); } public void testSplitSSSNone() { String out[]; out = JOrphanUtils.split("", "," ,"x"); assertEquals(0, out.length); out = JOrphanUtils.split("a,;bc,;,", "","x"); assertEquals(1, out.length); assertEquals("a,;bc,;,", out[0]); } public void testreplaceAllChars(){ assertEquals(JOrphanUtils.replaceAllChars("",' ', "+"),""); String in,out; in="source"; assertEquals(JOrphanUtils.replaceAllChars(in,' ', "+"),in); out="so+rce"; assertEquals(JOrphanUtils.replaceAllChars(in,'u', "+"),out); in="A B C "; out="A+B++C+"; assertEquals(JOrphanUtils.replaceAllChars(in,' ', "+"),out); } public void testTrim(){ assertEquals("",JOrphanUtils.trim("", " ;")); assertEquals("",JOrphanUtils.trim(" ", " ;")); assertEquals("",JOrphanUtils.trim("; ", " ;")); assertEquals("",JOrphanUtils.trim(";;", " ;")); assertEquals("",JOrphanUtils.trim(" ", " ;")); assertEquals("abc",JOrphanUtils.trim("abc ;", " ;")); } public void testbaToHexString(){ assertEquals("",JOrphanUtils.baToHexString(new byte[]{})); assertEquals("00",JOrphanUtils.baToHexString(new byte[]{0})); assertEquals("0f107f8081ff",JOrphanUtils.baToHexString(new byte[]{15,16,127,-128,-127,-1})); } public void testbaToByte() throws Exception{ assertEqualsArray(new byte[]{},JOrphanUtils.baToHexBytes(new byte[]{})); assertEqualsArray(new byte[]{'0','0'},JOrphanUtils.baToHexBytes(new byte[]{0})); assertEqualsArray("0f107f8081ff".getBytes("UTF-8"),JOrphanUtils.baToHexBytes(new byte[]{15,16,127,-128,-127,-1})); } private void assertEqualsArray(byte[] expected, byte[] actual){ assertEquals("arrays must be same length",expected.length, actual.length); for(int i=0; i < expected.length; i++){ assertEquals("values must be the same for index: "+i,expected[i],actual[i]); } } public void testIsBlank() { assertTrue(JOrphanUtils.isBlank("")); assertTrue(JOrphanUtils.isBlank(null)); assertTrue(JOrphanUtils.isBlank(" ")); assertFalse(JOrphanUtils.isBlank(" zdazd dzd ")); } } apache-jmeter-2.8/test/src/org/apache/jorphan/collections/0000755000175000017500000000000012165514773023170 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/collections/PackageTest.java0000644000175000017500000001514312032647143026221 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; import java.util.Arrays; import java.util.Collection; import junit.framework.TestCase; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class PackageTest extends TestCase { public PackageTest(String name) { super(name); } public void testAdd1() throws Exception { Logger log = LoggingManager.getLoggerForClass(); Collection treePath = Arrays.asList(new String[] { "1", "2", "3", "4" }); HashTree tree = new HashTree(); log.debug("treePath = " + treePath); tree.add(treePath, "value"); log.debug("Now treePath = " + treePath); log.debug(tree.toString()); assertEquals(1, tree.list(treePath).size()); assertEquals("value", tree.getArray(treePath)[0]); } public void testEqualsAndHashCode1() throws Exception { HashTree tree1 = new HashTree("abcd"); HashTree tree2 = new HashTree("abcd"); HashTree tree3 = new HashTree("abcde"); HashTree tree4 = new HashTree("abcde"); assertTrue(tree1.equals(tree1)); assertTrue(tree1.equals(tree2)); assertTrue(tree2.equals(tree1)); assertTrue(tree2.equals(tree2)); assertEquals(tree1.hashCode(), tree2.hashCode()); assertTrue(tree3.equals(tree3)); assertTrue(tree3.equals(tree4)); assertTrue(tree4.equals(tree3)); assertTrue(tree4.equals(tree4)); assertEquals(tree3.hashCode(), tree4.hashCode()); assertNotSame(tree1, tree2); assertNotSame(tree1, tree3); assertNotSame(tree1, tree4); assertNotSame(tree2, tree3); assertNotSame(tree2, tree4); assertFalse(tree1.equals(tree3)); assertFalse(tree1.equals(tree4)); assertFalse(tree2.equals(tree3)); assertFalse(tree2.equals(tree4)); assertNotNull(tree1); assertNotNull(tree2); tree1.add("abcd", tree3); assertFalse(tree1.equals(tree2)); assertFalse(tree2.equals(tree1));// Check reflexive if (tree1.hashCode() == tree2.hashCode()) { // This is not a requirement System.out.println("WARN: unequal HashTrees should not have equal hashCodes"); } tree2.add("abcd", tree4); assertTrue(tree1.equals(tree2)); assertTrue(tree2.equals(tree1)); assertEquals(tree1.hashCode(), tree2.hashCode()); } public void testAddObjectAndTree() throws Exception { ListedHashTree tree = new ListedHashTree("key"); ListedHashTree newTree = new ListedHashTree("value"); tree.add("key", newTree); assertEquals(tree.list().size(), 1); assertEquals("key", tree.getArray()[0]); assertEquals(1, tree.getTree("key").list().size()); assertEquals(0, tree.getTree("key").getTree("value").size()); assertEquals(tree.getTree("key").getArray()[0], "value"); assertNotNull(tree.getTree("key").get("value")); } public void testEqualsAndHashCode2() throws Exception { ListedHashTree tree1 = new ListedHashTree("abcd"); ListedHashTree tree2 = new ListedHashTree("abcd"); ListedHashTree tree3 = new ListedHashTree("abcde"); ListedHashTree tree4 = new ListedHashTree("abcde"); assertTrue(tree1.equals(tree1)); assertTrue(tree1.equals(tree2)); assertTrue(tree2.equals(tree1)); assertTrue(tree2.equals(tree2)); assertEquals(tree1.hashCode(), tree2.hashCode()); assertTrue(tree3.equals(tree3)); assertTrue(tree3.equals(tree4)); assertTrue(tree4.equals(tree3)); assertTrue(tree4.equals(tree4)); assertEquals(tree3.hashCode(), tree4.hashCode()); assertNotSame(tree1, tree2); assertNotSame(tree1, tree3); assertFalse(tree1.equals(tree3)); assertFalse(tree3.equals(tree1)); assertFalse(tree1.equals(tree4)); assertFalse(tree4.equals(tree1)); assertFalse(tree2.equals(tree3)); assertFalse(tree3.equals(tree2)); assertFalse(tree2.equals(tree4)); assertFalse(tree4.equals(tree2)); tree1.add("abcd", tree3); assertFalse(tree1.equals(tree2)); assertFalse(tree2.equals(tree1)); tree2.add("abcd", tree4); assertTrue(tree1.equals(tree2)); assertTrue(tree2.equals(tree1)); assertEquals(tree1.hashCode(), tree2.hashCode()); tree1.add("a1"); tree1.add("a2"); // tree1.add("a3"); tree2.add("a2"); tree2.add("a1"); assertFalse(tree1.equals(tree2)); assertFalse(tree2.equals(tree1)); if (tree1.hashCode() == tree2.hashCode()) { // This is not a requirement System.out.println("WARN: unequal ListedHashTrees should not have equal hashcodes"); } tree4.add("abcdef"); assertFalse(tree3.equals(tree4)); assertFalse(tree4.equals(tree3)); } public void testSearch() throws Exception { ListedHashTree tree = new ListedHashTree(); SearchByClass searcher = new SearchByClass(Integer.class); String one = "one"; String two = "two"; Integer o = Integer.valueOf(1); tree.add(one, o); tree.getTree(one).add(o, two); tree.traverse(searcher); assertEquals(1, searcher.getSearchResults().size()); } } apache-jmeter-2.8/test/src/org/apache/jorphan/test/0000755000175000017500000000000012165514773021631 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/test/AllTests.java0000644000175000017500000003615412032647143024227 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.nio.charset.Charset; import java.util.List; import java.util.Locale; import java.util.Properties; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestResult; import junit.framework.TestSuite; import junit.textui.TestRunner; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Provides a quick and easy way to run all junit unit tests in your java * project. It will find all unit test classes and run all their test methods. * There is no need to configure it in any way to find these classes except to * give it a path to search. *

    * Here is an example Ant target (See Ant at Apache) that runs all your unit * tests: * *

     * 
     *       <target name="test" depends="compile">
     *           <java classname="org.apache.jorphan.test.AllTests" fork="yes">
     *               <classpath>
     *                   <path refid="YOUR_CLASSPATH"/>
     *                   <pathelement location="ROOT_DIR_OF_YOUR_COMPILED_CLASSES"/>
     *               </classpath>
     *               <arg value="SEARCH_PATH/"/>
     *               <arg value="PROPERTY_FILE"/>
     *               <arg value="NAME_OF_UNITTESTMANAGER_CLASS"/>
     *           </java>
     *       </target>
     *  
     * 
    * *
    *
    YOUR_CLASSPATH
    *
    Refers to the classpath that includes all jars and libraries need to run * your unit tests
    * *
    ROOT_DIR_OF_YOUR_COMPILED_CLASSES
    *
    The classpath should include the directory where all your project's * classes are compiled to, if it doesn't already.
    * *
    SEARCH_PATH
    *
    The first argument tells AllTests where to look for unit test classes to * execute. In most cases, it is identical to ROOT_DIR_OF_YOUR_COMPILED_CLASSES. * You can specify multiple directories or jars to search by providing a * comma-delimited list.
    * *
    PROPERTY_FILE
    *
    A simple property file that sets logging parameters. It is optional and * is only relevant if you use the same logging packages that JOrphan uses.
    * *
    NAME_OF_UNITTESTMANAGER_CLASS
    *
    If your system requires some configuration to run correctly, you can * implement the {@link UnitTestManager} interface and be given an opportunity * to initialize your system from a configuration file.
    *
    * * @see UnitTestManager */ public final class AllTests { private static final Logger log = LoggingManager.getLoggerForClass(); /** * Private constructor to prevent instantiation. */ private AllTests() { } private static void logprop(String prop, boolean show) { String value = System.getProperty(prop); log.info(prop + "=" + value); if (show) { System.out.println(prop + "=" + value); } } private static void logprop(String prop) { logprop(prop, false); } /** * Starts a run through all unit tests found in the specified classpaths. * The first argument should be a list of paths to search. The second * argument is optional and specifies a properties file used to initialize * logging. The third argument is also optional, and specifies a class that * implements the UnitTestManager interface. This provides a means of * initializing your application with a configuration file prior to the * start of any unit tests. * * @param args * the command line arguments */ public static void main(String[] args) { if (args.length < 1) { System.out.println("You must specify a comma-delimited list of paths to search " + "for unit tests"); return; } String home=new File(System.getProperty("user.dir")).getParent(); System.out.println("Setting JMeterHome: "+home); JMeterUtils.setJMeterHome(home); initializeLogging(args); initializeManager(args); String version = "JMeterVersion="+JMeterUtils.getJMeterVersion(); log.info(version); System.out.println(version); logprop("java.version", true); logprop("java.vm.name"); logprop("java.vendor"); logprop("java.home", true); logprop("file.encoding", true); // Display actual encoding used (will differ if file.encoding is not recognised) String msg = "default encoding="+Charset.defaultCharset(); System.out.println(msg); log.info(msg); logprop("user.home"); logprop("user.dir", true); logprop("user.language"); logprop("user.region"); logprop("user.country"); logprop("user.variant"); final String showLocale = "Locale="+Locale.getDefault().toString(); log.info(showLocale); System.out.println(showLocale); logprop("os.name", true); logprop("os.version", true); logprop("os.arch"); logprop("java.class.version"); // logprop("java.class.path"); String cp = System.getProperty("java.class.path"); String cpe[] = JOrphanUtils.split(cp, java.io.File.pathSeparator); StringBuilder sb = new StringBuilder(3000); sb.append("java.class.path="); for (int i = 0; i < cpe.length; i++) { sb.append("\n"); sb.append(cpe[i]); if (new java.io.File(cpe[i]).exists()) { sb.append(" - OK"); } else { sb.append(" - ??"); } } log.info(sb.toString()); // ++ // GUI tests throw the error // testArgumentCreation(org.apache.jmeter.config.gui.ArgumentsPanel$Test)java.lang.NoClassDefFoundError // at java.lang.Class.forName0(Native Method) // at java.lang.Class.forName(Class.java:141) // at // java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:62) // // Try to find out why this is ... System.out.println("+++++++++++"); logprop("java.awt.headless", true); logprop("java.awt.graphicsenv", true); // // try {// // Class c = Class.forName(n); // System.out.println("Found class: "+n); // // c.newInstance(); // // System.out.println("Instantiated: "+n); // } catch (Exception e1) { // System.out.println("Error finding class "+n+" "+e1); // } catch (java.lang.InternalError e1){ // System.out.println("Error finding class "+n+" "+e1); // } // System.out.println("------------"); // don't call isHeadless() here, as it has a side effect. // -- System.out.println("Creating test suite"); TestSuite suite = suite(args[0]); int countTestCases = suite.countTestCases(); System.out.println("Starting test run, test count = "+countTestCases); // for (int i=0;i= 2) { Properties props = new Properties(); InputStream inputStream = null; try { System.out.println("Setting up logging props using file: " + args[1]); inputStream = new FileInputStream(args[1]); props.load(inputStream); LoggingManager.initializeLogging(props); } catch (FileNotFoundException e) { System.out.println(e.getLocalizedMessage()); } catch (IOException e) { System.out.println(e.getLocalizedMessage()); } finally { JOrphanUtils.closeQuietly(inputStream); } } } /** * An overridable method that that instantiates a UnitTestManager (if one * was specified in the command-line arguments), and hands it the name of * the properties file to use to configure the system. * * @param args */ protected static void initializeManager(String[] args) { if (args.length >= 3) { try { System.out.println("Using initializeProperties() from " + args[2]); UnitTestManager um = (UnitTestManager) Class.forName(args[2]).newInstance(); System.out.println("Setting up initial properties using: " + args[1]); um.initializeProperties(args[1]); } catch (ClassNotFoundException e) { System.out.println("Couldn't create: " + args[2]); e.printStackTrace(); } catch (InstantiationException e) { System.out.println("Couldn't create: " + args[2]); e.printStackTrace(); } catch (IllegalAccessException e) { System.out.println("Couldn't create: " + args[2]); e.printStackTrace(); } } } /* * Externally callable suite() method for use by JUnit Allows tests to be * run directly under JUnit, rather than using the startup code in the rest * of the module. No parameters can be passed in, so it is less flexible. */ public static TestSuite suite() { String args[] = { "../lib/ext", "./jmetertest.properties", "org.apache.jmeter.util.JMeterUtils" }; initializeManager(args); return suite(args[0]); } /** * A unit test suite for JUnit. * * @return The test suite */ private static TestSuite suite(String searchPaths) { TestSuite suite = new TestSuite("All Tests"); System.out.println("Scanning "+searchPaths+ " for test cases"); int tests=0; int suites=0; try { log.info("ClassFinder(TestCase)"); List classList = ClassFinder.findClassesThatExtend(JOrphanUtils.split(searchPaths, ","), new Class[] { TestCase.class }, true); int sz=classList.size(); log.info("ClassFinder(TestCase) found: "+sz+ " TestCase classes"); System.out.println("ClassFinder found: "+sz+ " TestCase classes"); for (String name : classList) { try { /* * TestSuite only finds testXXX() methods, and does not look * for suite() methods. * * To provide more compatibilty with stand-alone tests, * where JUnit does look for a suite() method, check for it * first here. * */ Class clazz = Class.forName(name); Test t = null; try { Method m = clazz.getMethod("suite", new Class[0]); t = (Test) m.invoke(clazz, (Object[])null); suites++; } catch (NoSuchMethodException e) { } // this is not an error, the others are // catch (SecurityException e) {} // catch (IllegalAccessException e) {} // catch (IllegalArgumentException e) {} // catch (InvocationTargetException e) {} if (t == null) { t = new TestSuite(clazz); } tests++; suite.addTest(t); } catch (Exception ex) { System.out.println("ERROR: (see logfile) could not add test for class " + name + " " + ExceptionUtils.getStackTrace(ex)); log.error("error adding test :", ex); } } } catch (IOException e) { log.error("", e); } System.out.println("Created: "+tests+" tests including "+suites+" suites"); return suite; } } apache-jmeter-2.8/test/src/org/apache/jorphan/math/0000755000175000017500000000000012165514773021603 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/math/TestStatCalculator.java0000644000175000017500000001200612032647143026221 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.math; import java.util.Map; import junit.framework.TestCase; public class TestStatCalculator extends TestCase { private StatCalculatorLong calc; /** * */ public TestStatCalculator() { super(); } public TestStatCalculator(String arg0) { super(arg0); } @Override public void setUp() { calc = new StatCalculatorLong(); } public void testPercentagePoint() throws Exception { calc.addValue(10); calc.addValue(9); calc.addValue(5); calc.addValue(6); calc.addValue(1); calc.addValue(3); calc.addValue(8); calc.addValue(2); calc.addValue(7); calc.addValue(4); assertEquals(10, calc.getCount()); assertEquals(9, calc.getPercentPoint(0.8999999).intValue()); } public void testCalculation() { assertEquals(Long.MIN_VALUE, calc.getMax().longValue()); assertEquals(Long.MAX_VALUE, calc.getMin().longValue()); calc.addValue(18); calc.addValue(10); calc.addValue(9); calc.addValue(11); calc.addValue(28); calc.addValue(3); calc.addValue(30); calc.addValue(15); calc.addValue(15); calc.addValue(21); assertEquals(16, (int) calc.getMean()); assertEquals(8.0622577F, (float) calc.getStandardDeviation(), 0F); assertEquals(30, calc.getMax().intValue()); assertEquals(3, calc.getMin().intValue()); assertEquals(15, calc.getMedian().intValue()); } public void testLong(){ calc.addValue(0L); calc.addValue(2L); calc.addValue(2L); final Long long0 = Long.valueOf(0); final Long long2 = Long.valueOf(2); assertEquals(long2,calc.getMax()); assertEquals(long0,calc.getMin()); Map map = calc.getDistribution(); assertTrue(map.containsKey(long0)); assertTrue(map.containsKey(long2)); } public void testInteger(){ StatCalculatorInteger calci = new StatCalculatorInteger(); assertEquals(Integer.MIN_VALUE, calci.getMax().intValue()); assertEquals(Integer.MAX_VALUE, calci.getMin().intValue()); calci.addValue(0); calci.addValue(2); calci.addValue(2); assertEquals(Integer.valueOf(2),calci.getMax()); assertEquals(Integer.valueOf(0),calci.getMin()); Map map = calci.getDistribution(); assertTrue(map.containsKey(Integer.valueOf(0))); assertTrue(map.containsKey(Integer.valueOf(2))); } @SuppressWarnings("boxing") public void testBug52125_1(){ // No duplicates when adding calc.addValue(1L); calc.addValue(2L); calc.addValue(3L); calc.addValue(2L); calc.addValue(2L); calc.addValue(2L); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum()); assertEquals(0.5773502691896255, calc.getStandardDeviation()); } @SuppressWarnings("boxing") public void testBug52125_2(){ // add duplicates calc.addValue(1L); calc.addValue(2L); calc.addValue(3L); calc.addEachValue(2L, 3); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum()); assertEquals(0.5773502691896255, calc.getStandardDeviation()); } @SuppressWarnings("boxing") public void testBug52125_2A(){ // as above, but with aggregate sample instead calc.addValue(1L); calc.addValue(2L); calc.addValue(3L); calc.addValue(6L, 3); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum()); assertEquals(0.5773502691896255, calc.getStandardDeviation()); } @SuppressWarnings("boxing") public void testBug52125_3(){ // add duplicates as per bug calc.addValue(1L); calc.addValue(2L); calc.addValue(3L); StatCalculatorLong calc2 = new StatCalculatorLong(); calc2.addValue(2L); calc2.addValue(2L); calc2.addValue(2L); calc.addAll(calc2); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum()); assertEquals(0.5773502691896255, calc.getStandardDeviation()); } } apache-jmeter-2.8/test/src/org/apache/jorphan/reflect/0000755000175000017500000000000012165514773022276 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jorphan/reflect/TestFunctor.java0000644000175000017500000001656512032647143025425 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.reflect; import java.util.Map; import java.util.Properties; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; /* * Unit tests for classes that use Functors * */ public class TestFunctor extends JMeterTestCase { interface HasName { String getName(); } interface HasString { String getString(String s); } class Test1 implements HasName { private final String name; public Test1(){ this(""); } public Test1(String s){ name=s; } public String getName(){ return name; } public String getString(String s){ return s; } } class Test1a extends Test1{ Test1a(){ super("1a"); } Test1a(String s){ super("1a:"+s); } @Override public String getName(){ return super.getName()+"."; } } static class Test2 implements HasName, HasString { private final String name; public Test2(){ this(""); } public Test2(String s){ name=s; } public String getName(){ return name; } public String getString(String s){ return s; } } public TestFunctor(String arg0) { super(arg0); } @Override public void setUp(){ LoggingManager.setPriority("FATAL_ERROR",LoggingManager.removePrefix(Functor.class.getName())); } public void testName() throws Exception{ Functor f1 = new Functor("getName"); Functor f2 = new Functor("getName"); Functor f1a = new Functor("getName"); Test1 t1 = new Test1("t1"); Test2 t2 = new Test2("t2"); Test1a t1a = new Test1a("aa"); assertEquals("t1",f1.invoke(t1)); //assertEquals("t1",f1.invoke()); try { f1.invoke(t2); fail("Should have generated error"); } catch (JMeterError e){ } assertEquals("t2",f2.invoke(t2)); //assertEquals("t2",f2.invoke()); assertEquals("1a:aa.",f1a.invoke(t1a)); //assertEquals("1a:aa.",f1a.invoke()); try { f1a.invoke(t1);// can't call invoke using super class fail("Should have generated error"); } catch (JMeterError e){ } // OK (currently) to invoke using sub-class assertEquals("1a:aa.",f1.invoke(t1a)); //assertEquals("1a:aa.",f1.invoke());// N.B. returns different result from before } public void testNameTypes() throws Exception{ Functor f = new Functor("getString",new Class[]{String.class}); Functor f2 = new Functor("getString");// Args will be provided later Test1 t1 = new Test1("t1"); assertEquals("x1",f.invoke(t1,new String[]{"x1"})); try { assertEquals("x1",f.invoke(t1)); fail("Should have generated an Exception"); } catch (JMeterError ok){ } assertEquals("x2",f2.invoke(t1,new String[]{"x2"})); try { assertEquals("x2",f2.invoke(t1)); fail("Should have generated an Exception"); } catch (JMeterError ok){ } } public void testObjectName() throws Exception{ Test1 t1 = new Test1("t1"); Test2 t2 = new Test2("t2"); Functor f1 = new Functor(t1,"getName"); assertEquals("t1",f1.invoke(t1)); assertEquals("t1",f1.invoke(t2)); // should use original object } // Check how Class definition behaves public void testClass() throws Exception{ Test1 t1 = new Test1("t1"); Test1 t1a = new Test1a("t1a"); Test2 t2 = new Test2("t2"); Functor f1 = new Functor(HasName.class,"getName"); assertEquals("t1",f1.invoke(t1)); assertEquals("1a:t1a.",f1.invoke(t1a)); assertEquals("t2",f1.invoke(t2)); try { f1.invoke(); fail("Should have failed"); } catch (IllegalStateException ok){ } Functor f2 = new Functor(HasString.class,"getString"); assertEquals("xyz",f2.invoke(t2,new String[]{"xyz"})); try { f2.invoke(t1,new String[]{"xyz"}); fail("Should have failed"); } catch (JMeterError ok){ } Functor f3 = new Functor(t2,"getString"); assertEquals("xyz",f3.invoke(t2,new Object[]{"xyz"})); Properties p = new Properties(); p.put("Name","Value"); Functor fk = new Functor(Map.Entry.class,"getKey"); Functor fv = new Functor(Map.Entry.class,"getValue"); Object o = p.entrySet().iterator().next(); assertEquals("Name",fk.invoke(o)); assertEquals("Value",fv.invoke(o)); } public void testBadParameters() throws Exception{ try { new Functor(null); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} try { new Functor(null,new Class[]{}); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} try { new Functor(null,new Object[]{}); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} try { new Functor(String.class,null); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} try { new Functor(new Object(),null); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} try { new Functor(new Object(),null, new Class[]{}); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} try { new Functor(new Object(),null, new Object[]{}); fail("should have generated IllegalArgumentException;"); } catch (IllegalArgumentException ok){} } public void testIllegalState() throws Exception{ Functor f = new Functor("method"); try { f.invoke(); fail("should have generated IllegalStateException;"); } catch (IllegalStateException ok){} try { f.invoke(new Object[]{}); fail("should have generated IllegalStateException;"); } catch (IllegalStateException ok){} } } apache-jmeter-2.8/test/src/org/apache/jorphan/TestFunctorUsers.java0000644000175000017500000000501612032647143025010 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel; import org.apache.jmeter.protocol.ldap.config.gui.LDAPArgumentsPanel; import org.apache.jmeter.visualizers.StatGraphVisualizer; import org.apache.jmeter.visualizers.StatVisualizer; import org.apache.jmeter.visualizers.SummaryReport; import org.apache.jmeter.visualizers.TableVisualizer; /* * Unit tests for classes that use Functors * */ public class TestFunctorUsers extends JMeterTestCase { public TestFunctorUsers(String arg0) { super(arg0); } @SuppressWarnings("deprecation") public void testSummaryReport() throws Exception{ assertTrue("SummaryReport Functor",SummaryReport.testFunctors()); } public void testTableVisualizer() throws Exception{ assertTrue("TableVisualizer Functor",TableVisualizer.testFunctors()); } public void testStatGraphVisualizer() throws Exception{ assertTrue("StatGraphVisualizer Functor",StatGraphVisualizer.testFunctors()); } @SuppressWarnings("deprecation") public void testStatVisualizer() throws Exception{ assertTrue("StatVisualizer Functor",StatVisualizer.testFunctors()); } public void testArgumentsPanel() throws Exception{ assertTrue("ArgumentsPanel Functor",ArgumentsPanel.testFunctors()); } public void testHTTPArgumentsPanel() throws Exception{ assertTrue("HTTPArgumentsPanel Functor",HTTPArgumentsPanel.testFunctors()); } public void testLDAPArgumentsPanel() throws Exception{ assertTrue("LDAPArgumentsPanel Functor",LDAPArgumentsPanel.testFunctors()); } } apache-jmeter-2.8/test/src/org/apache/jorphan/TestXMLBuffer.java0000644000175000017500000000354112032647143024141 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jorphan.util.XMLBuffer; public class TestXMLBuffer extends JMeterTestCase { public TestXMLBuffer(String arg0) { super(arg0); } public void test1() throws Exception{ XMLBuffer xb = new XMLBuffer(); xb.openTag("start"); assertEquals("\n",xb.toString()); } public void test2() throws Exception{ XMLBuffer xb = new XMLBuffer(); xb.tag("start","now"); assertEquals("now\n",xb.toString()); } public void test3() throws Exception{ XMLBuffer xb = new XMLBuffer(); xb.openTag("abc"); xb.closeTag("abc"); assertEquals("\n",xb.toString()); } public void test4() throws Exception{ XMLBuffer xb = new XMLBuffer(); xb.openTag("abc"); try { xb.closeTag("abcd"); fail("Should have caused IllegalArgumentException"); } catch (IllegalArgumentException e) { } } } apache-jmeter-2.8/test/src/org/apache/commons/0000755000175000017500000000000012032647145020655 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/commons/cli/0000755000175000017500000000000012032647145021424 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/commons/cli/avalon/0000755000175000017500000000000012165514773022713 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/commons/cli/avalon/ClutilTestCase.java0000644000175000017500000011543712032647145026452 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli import java.util.List; import junit.framework.TestCase; /** * */ public final class ClutilTestCase extends TestCase { private static final String[] ARGLIST1 = new String[] { "--you", "are", "--all", "-cler", "kid" }; private static final String[] ARGLIST2 = new String[] { "-Dstupid=idiot", "are", "--all", "here", "-d" }; private static final String[] ARGLIST3 = new String[] { // duplicates "-Dstupid=idiot", "are", "--all", "--all", "here" }; private static final String[] ARGLIST4 = new String[] { // incompatable (blee/all) "-Dstupid", "idiot", "are", "--all", "--blee", "here" }; private static final String[] ARGLIST5 = new String[] { "-f", "myfile.txt" }; private static final int DEFINE_OPT = 'D'; private static final int CASE_CHECK_OPT = 'd'; private static final int YOU_OPT = 'y'; private static final int ALL_OPT = 'a'; private static final int CLEAR1_OPT = 'c'; private static final int CLEAR2_OPT = 'l'; private static final int CLEAR3_OPT = 'e'; private static final int CLEAR5_OPT = 'r'; private static final int BLEE_OPT = 'b'; private static final int FILE_OPT = 'f'; private static final int TAINT_OPT = 'T'; private static final CLOptionDescriptor DEFINE = new CLOptionDescriptor("define", CLOptionDescriptor.ARGUMENTS_REQUIRED_2, DEFINE_OPT, "define"); private static final CLOptionDescriptor DEFINE_MANY = new CLOptionDescriptor("define", CLOptionDescriptor.ARGUMENTS_REQUIRED_2 | CLOptionDescriptor.DUPLICATES_ALLOWED, DEFINE_OPT, "define"); private static final CLOptionDescriptor CASE_CHECK = new CLOptionDescriptor("charCheck", CLOptionDescriptor.ARGUMENT_DISALLOWED, CASE_CHECK_OPT, "check character case sensitivity"); private static final CLOptionDescriptor YOU = new CLOptionDescriptor("you", CLOptionDescriptor.ARGUMENT_DISALLOWED, YOU_OPT, "you"); private static final CLOptionDescriptor CLEAR1 = new CLOptionDescriptor("c", CLOptionDescriptor.ARGUMENT_DISALLOWED, CLEAR1_OPT, "c"); private static final CLOptionDescriptor CLEAR2 = new CLOptionDescriptor("l", CLOptionDescriptor.ARGUMENT_DISALLOWED, CLEAR2_OPT, "l"); private static final CLOptionDescriptor CLEAR3 = new CLOptionDescriptor("e", CLOptionDescriptor.ARGUMENT_DISALLOWED, CLEAR3_OPT, "e"); private static final CLOptionDescriptor CLEAR5 = new CLOptionDescriptor("r", CLOptionDescriptor.ARGUMENT_DISALLOWED, CLEAR5_OPT, "r"); private static final CLOptionDescriptor BLEE = new CLOptionDescriptor("blee", CLOptionDescriptor.ARGUMENT_DISALLOWED, BLEE_OPT, "blee"); private static final CLOptionDescriptor ALL = new CLOptionDescriptor("all", CLOptionDescriptor.ARGUMENT_DISALLOWED, ALL_OPT, "all", new CLOptionDescriptor[] { BLEE }); private static final CLOptionDescriptor FILE = new CLOptionDescriptor("file", CLOptionDescriptor.ARGUMENT_REQUIRED, FILE_OPT, "the build file."); private static final CLOptionDescriptor TAINT = new CLOptionDescriptor("taint", CLOptionDescriptor.ARGUMENT_OPTIONAL, TAINT_OPT, "turn on tainting checks (optional level)."); private static final CLOptionDescriptor [] OPTIONS = new CLOptionDescriptor [] { new CLOptionDescriptor("none", CLOptionDescriptor.ARGUMENT_DISALLOWED | CLOptionDescriptor.DUPLICATES_ALLOWED, '0', "no parameter"), new CLOptionDescriptor("optional", CLOptionDescriptor.ARGUMENT_OPTIONAL | CLOptionDescriptor.DUPLICATES_ALLOWED, '?', "optional parameter"), new CLOptionDescriptor("one", CLOptionDescriptor.ARGUMENT_REQUIRED | CLOptionDescriptor.DUPLICATES_ALLOWED, '1', "one parameter"), new CLOptionDescriptor("two", CLOptionDescriptor.ARGUMENTS_REQUIRED_2 | CLOptionDescriptor.DUPLICATES_ALLOWED, '2', "two parameters") }; public ClutilTestCase() { this("Command Line Interpreter Test Case"); } public ClutilTestCase(String name) { super(name); } public void testOptionalArgWithSpace() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; final String[] args = new String[] { "-T", "param", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals("Option count", 3, size); final CLOption option0 = clOptions.get(0); assertEquals("Option Code: " + option0.getDescriptor().getId(), TAINT_OPT, option0.getDescriptor().getId()); assertEquals("Option Arg: " + option0.getArgument(0), null, option0.getArgument(0)); final CLOption option1 = clOptions.get(1); assertEquals(option1.getDescriptor().getId(), CLOption.TEXT_ARGUMENT); assertEquals(option1.getArgument(0), "param"); final CLOption option2 = clOptions.get(2); assertEquals(option2.getDescriptor().getId(), ALL_OPT); assertEquals(option2.getArgument(0), null); } public void testOptionalArgLong() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; // Check that optional args work woth long options final String[] args = new String[] { "--taint", "param", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals("Option count", 3, size); final CLOption option0 = clOptions.get(0); assertEquals("Option Code: " + option0.getDescriptor().getId(), TAINT_OPT, option0.getDescriptor().getId()); assertEquals("Option Arg: " + option0.getArgument(0), null, option0.getArgument(0)); final CLOption option1 = clOptions.get(1); assertEquals(CLOption.TEXT_ARGUMENT, option1.getDescriptor().getId()); assertEquals("param", option1.getArgument(0)); final CLOption option2 = clOptions.get(2); assertEquals(option2.getDescriptor().getId(), ALL_OPT); assertEquals(option2.getArgument(0), null); } public void testOptionalArgLongEquals() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; // Check that optional args work woth long options final String[] args = new String[] { "--taint=param", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals("Option count", 2, size); final CLOption option0 = clOptions.get(0); assertEquals("Option Code: " + option0.getDescriptor().getId(), TAINT_OPT, option0.getDescriptor().getId()); assertEquals("Option Arg: " + option0.getArgument(0), "param", option0.getArgument(0)); final CLOption option2 = clOptions.get(1); assertEquals(option2.getDescriptor().getId(), ALL_OPT); assertEquals(option2.getArgument(0), null); } public void testShortOptArgUnenteredBeforeOtherOpt() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; final String[] args = new String[] { "-T", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals("Option count", 2, size); final CLOption option0 = clOptions.get(0); assertEquals("Option Code: " + option0.getDescriptor().getId(), TAINT_OPT, option0.getDescriptor().getId()); assertEquals("Option Arg: " + option0.getArgument(0), null, option0.getArgument(0)); final CLOption option1 = clOptions.get(1); assertEquals(option1.getDescriptor().getId(), ALL_OPT); assertEquals(option1.getArgument(0), null); } public void testOptionalArgsWithArgShortBeforeOtherOpt() { // "-T3","-a" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; final String[] args = new String[] { "-T3", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 2); final CLOption option0 = clOptions.get(0); assertEquals(option0.getDescriptor().getId(), TAINT_OPT); assertEquals(option0.getArgument(0), "3"); final CLOption option1 = clOptions.get(1); assertEquals(ALL_OPT, option1.getDescriptor().getId()); assertEquals(null, option1.getArgument(0)); } public void testOptionalArgsWithArgShortEqualsBeforeOtherOpt() { // "-T3","-a" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; final String[] args = new String[] { "-T=3", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 2); final CLOption option0 = clOptions.get(0); assertEquals(option0.getDescriptor().getId(), TAINT_OPT); assertEquals(option0.getArgument(0), "3"); final CLOption option1 = clOptions.get(1); assertEquals(ALL_OPT, option1.getDescriptor().getId()); assertEquals(null, option1.getArgument(0)); } public void testOptionalArgsNoArgShortBeforeOtherOpt() { // "-T","-a" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { ALL, TAINT }; final String[] args = new String[] { "-T", "-a" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 2); final CLOption option0 = clOptions.get(0); assertEquals(TAINT_OPT, option0.getDescriptor().getId()); assertEquals(null, option0.getArgument(0)); final CLOption option1 = clOptions.get(1); assertEquals(ALL_OPT, option1.getDescriptor().getId()); assertEquals(null, option1.getArgument(0)); } public void testFullParse() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { YOU, ALL, CLEAR1, CLEAR2, CLEAR3, CLEAR5 }; final CLArgsParser parser = new CLArgsParser(ARGLIST1, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 8); assertEquals(clOptions.get(0).getDescriptor().getId(), YOU_OPT); assertEquals(clOptions.get(1).getDescriptor().getId(), 0); assertEquals(clOptions.get(2).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions.get(3).getDescriptor().getId(), CLEAR1_OPT); assertEquals(clOptions.get(4).getDescriptor().getId(), CLEAR2_OPT); assertEquals(clOptions.get(5).getDescriptor().getId(), CLEAR3_OPT); assertEquals(clOptions.get(6).getDescriptor().getId(), CLEAR5_OPT); assertEquals(clOptions.get(7).getDescriptor().getId(), 0); } public void testDuplicateOptions() { // "-Dstupid=idiot","are","--all","--all","here" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE, ALL, CLEAR1 }; final CLArgsParser parser = new CLArgsParser(ARGLIST3, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 5); assertEquals(clOptions.get(0).getDescriptor().getId(), DEFINE_OPT); assertEquals(clOptions.get(1).getDescriptor().getId(), 0); assertEquals(clOptions.get(2).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions.get(3).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions.get(4).getDescriptor().getId(), 0); } public void testIncompatableOptions() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE, ALL, CLEAR1, BLEE }; final CLArgsParser parser = new CLArgsParser(ARGLIST4, options); assertNotNull(parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 5); assertEquals(clOptions.get(0).getDescriptor().getId(), DEFINE_OPT); assertEquals(clOptions.get(1).getDescriptor().getId(), 0); assertEquals(clOptions.get(2).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions.get(3).getDescriptor().getId(), BLEE_OPT); assertEquals(clOptions.get(4).getDescriptor().getId(), 0); } public void testSingleArg() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(ARGLIST5, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 1); assertEquals(clOptions.get(0).getDescriptor().getId(), FILE_OPT); assertEquals(clOptions.get(0).getArgument(), "myfile.txt"); } public void testSingleArg2() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-f-=,=-" } // Check // delimiters // are // allowed , options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("-=,=-", clOptions.get(0).getArgument()); } public void testSingleArg3() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "--file=-=,-" } // Check // delimiters // are // allowed , options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("-=,-", clOptions.get(0).getArgument()); } public void testSingleArg4() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "--file", "myfile.txt" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("myfile.txt", clOptions.get(0).getArgument()); } public void testSingleArg5() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-f", "myfile.txt" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("myfile.txt", clOptions.get(0).getArgument()); } public void testSingleArg6() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-f", "-=-" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("-=-", clOptions.get(0).getArgument()); } public void testSingleArg7() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "--file=-=-" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("-=-", clOptions.get(0).getArgument()); } public void testSingleArg8() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "--file", "-=-" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("-=-", clOptions.get(0).getArgument()); } public void testSingleArg9() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "--file", "-=-" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(FILE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals("-=-", clOptions.get(0).getArgument()); } public void testCombinedArgs1() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { BLEE, TAINT }; final CLArgsParser parser = new CLArgsParser(new String[] { "-bT", "rest" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(3, size); assertEquals(BLEE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals(TAINT_OPT, clOptions.get(1).getDescriptor().getId()); assertEquals(0, clOptions.get(2).getDescriptor().getId()); assertEquals("rest", clOptions.get(2).getArgument()); } public void testCombinedArgs2() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { BLEE, TAINT, FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-bT", "-fa" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(3, size); assertEquals(BLEE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals(TAINT_OPT, clOptions.get(1).getDescriptor().getId()); assertEquals(FILE_OPT, clOptions.get(2).getDescriptor().getId()); assertEquals("a", clOptions.get(2).getArgument()); } public void testCombinedArgs3() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { BLEE, TAINT, FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-bT", "--", "-fa" }// Should // not // detect // trailing // option , options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(3, size); assertEquals(BLEE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals(TAINT_OPT, clOptions.get(1).getDescriptor().getId()); assertEquals(0, clOptions.get(2).getDescriptor().getId()); assertEquals("-fa", clOptions.get(2).getArgument()); } public void testCombinedArgs4() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { BLEE, TAINT, FILE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-bT", "rest", "-fa" } // should // detect // trailing // option , options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(4, size); assertEquals(BLEE_OPT, clOptions.get(0).getDescriptor().getId()); assertEquals(TAINT_OPT, clOptions.get(1).getDescriptor().getId()); assertEquals(0, clOptions.get(2).getDescriptor().getId()); assertEquals("rest", clOptions.get(2).getArgument()); assertEquals(FILE_OPT, clOptions.get(3).getDescriptor().getId()); assertEquals("a", clOptions.get(3).getArgument()); } public void test2ArgsParse() { // "-Dstupid=idiot","are","--all","here" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE, ALL, CLEAR1, CASE_CHECK }; final CLArgsParser parser = new CLArgsParser(ARGLIST2, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 5); assertEquals(clOptions.get(0).getDescriptor().getId(), DEFINE_OPT); assertEquals(clOptions.get(1).getDescriptor().getId(), 0); assertEquals(clOptions.get(2).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions.get(3).getDescriptor().getId(), 0); assertEquals(clOptions.get(4).getDescriptor().getId(), CASE_CHECK_OPT); final CLOption option = clOptions.get(0); assertEquals("stupid", option.getArgument(0)); assertEquals("idiot", option.getArgument(1)); } public void test2ArgsParse2() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE }; final CLArgsParser parser = new CLArgsParser(new String[] { "--define", "a-b,c=d-e,f" }, // Check // "-" // is // allowed // in // arg2 options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(DEFINE_OPT, clOptions.get(0).getDescriptor().getId()); final CLOption option = clOptions.get(0); assertEquals("a-b,c", option.getArgument(0)); assertEquals("d-e,f", option.getArgument(1)); } public void test2ArgsParse3() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-D", "A-b,c", "G-e,f" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(1, size); assertEquals(DEFINE_OPT, clOptions.get(0).getDescriptor().getId()); final CLOption option = clOptions.get(0); assertEquals("A-b,c", option.getArgument(0)); assertEquals("G-e,f", option.getArgument(1)); } public void test2ArgsParse4() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE_MANY }; final CLArgsParser parser = new CLArgsParser(new String[] { "-Dval1=-1", "-D", "val2=-2", "--define=val-3=-3", "--define", "val4-=-4" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(4, size); for (int i = 0; i < size; i++) { assertEquals(DEFINE_OPT, clOptions.get(i).getDescriptor().getId()); } CLOption option; option = clOptions.get(0); assertEquals("val1", option.getArgument(0)); assertEquals("-1", option.getArgument(1)); option = clOptions.get(1); assertEquals("val2", option.getArgument(0)); assertEquals("-2", option.getArgument(1)); option = clOptions.get(2); assertEquals("val-3", option.getArgument(0)); assertEquals("-3", option.getArgument(1)); option = clOptions.get(3); assertEquals("val4-", option.getArgument(0)); assertEquals("-4", option.getArgument(1)); } public void testPartParse() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { YOU }; final ParserControl control = new AbstractParserControl() { @Override public boolean isFinished(int lastOptionCode) { return (lastOptionCode == YOU_OPT); } }; final CLArgsParser parser = new CLArgsParser(ARGLIST1, options, control); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 1); assertEquals(clOptions.get(0).getDescriptor().getId(), YOU_OPT); } public void test2PartParse() { final CLOptionDescriptor[] options1 = new CLOptionDescriptor[] { YOU }; final CLOptionDescriptor[] options2 = new CLOptionDescriptor[] { ALL, CLEAR1, CLEAR2, CLEAR3, CLEAR5 }; final ParserControl control1 = new AbstractParserControl() { @Override public boolean isFinished(int lastOptionCode) { return (lastOptionCode == YOU_OPT); } }; final CLArgsParser parser1 = new CLArgsParser(ARGLIST1, options1, control1); assertNull(parser1.getErrorString(), parser1.getErrorString()); final List clOptions1 = parser1.getArguments(); final int size1 = clOptions1.size(); assertEquals(size1, 1); assertEquals(clOptions1.get(0).getDescriptor().getId(), YOU_OPT); final CLArgsParser parser2 = new CLArgsParser(parser1.getUnparsedArgs(), options2); assertNull(parser2.getErrorString(), parser2.getErrorString()); final List clOptions2 = parser2.getArguments(); final int size2 = clOptions2.size(); assertEquals(size2, 7); assertEquals(clOptions2.get(0).getDescriptor().getId(), 0); assertEquals(clOptions2.get(1).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions2.get(2).getDescriptor().getId(), CLEAR1_OPT); assertEquals(clOptions2.get(3).getDescriptor().getId(), CLEAR2_OPT); assertEquals(clOptions2.get(4).getDescriptor().getId(), CLEAR3_OPT); assertEquals(clOptions2.get(5).getDescriptor().getId(), CLEAR5_OPT); assertEquals(clOptions2.get(6).getDescriptor().getId(), 0); } public void test2PartPartialParse() { final CLOptionDescriptor[] options1 = new CLOptionDescriptor[] { YOU, ALL, CLEAR1 }; final CLOptionDescriptor[] options2 = new CLOptionDescriptor[] {}; final ParserControl control1 = new AbstractParserControl() { @Override public boolean isFinished(final int lastOptionCode) { return (lastOptionCode == CLEAR1_OPT); } }; final CLArgsParser parser1 = new CLArgsParser(ARGLIST1, options1, control1); assertNull(parser1.getErrorString(), parser1.getErrorString()); final List clOptions1 = parser1.getArguments(); final int size1 = clOptions1.size(); assertEquals(size1, 4); assertEquals(clOptions1.get(0).getDescriptor().getId(), YOU_OPT); assertEquals(clOptions1.get(1).getDescriptor().getId(), 0); assertEquals(clOptions1.get(2).getDescriptor().getId(), ALL_OPT); assertEquals(clOptions1.get(3).getDescriptor().getId(), CLEAR1_OPT); assertEquals("ler",parser1.getUnparsedArgs()[0]); final CLArgsParser parser2 = new CLArgsParser(parser1.getUnparsedArgs(), options2); assertNull(parser2.getErrorString(), parser2.getErrorString()); final List clOptions2 = parser2.getArguments(); final int size2 = clOptions2.size(); assertEquals(size2, 2); assertEquals(clOptions2.get(0).getDescriptor().getId(), 0); assertEquals(clOptions2.get(1).getDescriptor().getId(), 0); } public void testDuplicatesFail() { final CLOptionDescriptor[] options = new CLOptionDescriptor[] { YOU, ALL, CLEAR1, CLEAR2, CLEAR3, CLEAR5 }; final CLArgsParser parser = new CLArgsParser(ARGLIST1, options); assertNull(parser.getErrorString(), parser.getErrorString()); } public void testIncomplete2Args() { // "-Dstupid=" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE }; final CLArgsParser parser = new CLArgsParser(new String[] { "-Dstupid=" }, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 1); final CLOption option = clOptions.get(0); assertEquals(option.getDescriptor().getId(), DEFINE_OPT); assertEquals(option.getArgument(0), "stupid"); assertEquals(option.getArgument(1), ""); } public void testIncomplete2ArgsMixed() { // "-Dstupid=","-c" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE, CLEAR1 }; final String[] args = new String[] { "-Dstupid=", "-c" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 2); assertEquals(clOptions.get(1).getDescriptor().getId(), CLEAR1_OPT); final CLOption option = clOptions.get(0); assertEquals(option.getDescriptor().getId(), DEFINE_OPT); assertEquals(option.getArgument(0), "stupid"); assertEquals(option.getArgument(1), ""); } public void testIncomplete2ArgsMixedNoEq() { // "-Dstupid","-c" final CLOptionDescriptor[] options = new CLOptionDescriptor[] { DEFINE, CLEAR1 }; final String[] args = new String[] { "-DStupid", "-c" }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); assertEquals(size, 2); assertEquals(clOptions.get(1).getDescriptor().getId(), CLEAR1_OPT); final CLOption option = clOptions.get(0); assertEquals(option.getDescriptor().getId(), DEFINE_OPT); assertEquals(option.getArgument(0), "Stupid"); assertEquals(option.getArgument(1), ""); } /** * Test the getArgumentById and getArgumentByName lookup methods. */ public void testArgumentLookup() { final String[] args = { "-f", "testarg" }; final CLOptionDescriptor[] options = { FILE }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); CLOption optionById = parser.getArgumentById(FILE_OPT); assertNotNull(optionById); assertEquals(FILE_OPT, optionById.getDescriptor().getId()); assertEquals("testarg", optionById.getArgument()); CLOption optionByName = parser.getArgumentByName(FILE.getName()); assertNotNull(optionByName); assertEquals(FILE_OPT, optionByName.getDescriptor().getId()); assertEquals("testarg", optionByName.getArgument()); } /** * Test that you can have null long forms. */ public void testNullLongForm() { final CLOptionDescriptor test = new CLOptionDescriptor(null, CLOptionDescriptor.ARGUMENT_DISALLOWED, 'n', "test null long form"); final String[] args = { "-n", "testarg" }; final CLOptionDescriptor[] options = { test }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final CLOption optionByID = parser.getArgumentById('n'); assertNotNull(optionByID); assertEquals('n', optionByID.getDescriptor().getId()); final CLOption optionByName = parser.getArgumentByName(FILE.getName()); assertNull("Looking for non-existent option by name", optionByName); } /** * Test that you can have null descriptions. */ public void testNullDescription() { final CLOptionDescriptor test = new CLOptionDescriptor("nulltest", CLOptionDescriptor.ARGUMENT_DISALLOWED, 'n', null); final String[] args = { "-n", "testarg" }; final CLOptionDescriptor[] options = { test }; final CLArgsParser parser = new CLArgsParser(args, options); assertNull(parser.getErrorString(), parser.getErrorString()); final CLOption optionByID = parser.getArgumentById('n'); assertNotNull(optionByID); assertEquals('n', optionByID.getDescriptor().getId()); final StringBuilder sb = CLUtil.describeOptions(options); final String lineSeparator = System.getProperty("line.separator"); assertEquals("Testing display of null description", "\t-n, --nulltest" + lineSeparator, sb.toString()); } public void testCombinations() throws Exception { check(new String [] {},""); check(new String [] {"--none", "-0" }, "-0 -0"); // Canonical form check(new String [] {"--one=a", "--one","A", "-1b", "-1=c", "-1","d" }, "-1=[a] -1=[A] -1=[b] -1=[c] -1=[d]"); check(new String [] {"-2n=v", "-2","N=V" }, "-2=[n, v] -2=[N, V]"); check(new String [] {"--two=n=v", "--two","N=V" }, "-2=[n, v] -2=[N, V]"); // Test optional arguments check(new String [] {"-?", "A", // Separate argument "-?=B", "-?C", "-?" }, "-? [A] -?=[B] -?=[C] -?"); check(new String [] {"--optional=A", // OK "--optional","B", // should treat B as separate "--optional" // Should have no arg }, "-?=[A] -? [B] -?"); } private void check(String args[], String canon){ final CLArgsParser parser = new CLArgsParser(args, OPTIONS); assertNull(parser.getErrorString(),parser.getErrorString()); final List clOptions = parser.getArguments(); final int size = clOptions.size(); StringBuilder sb = new StringBuilder(); for (int i=0; i< size; i++){ if (i>0) { sb.append(" "); } sb.append(clOptions.get(i).toShortString()); } assertEquals("Canonical form ("+size+")",canon,sb.toString()); } /* * TODO add tests to check for: - name clash - long option abbreviations * (match shortest unique abbreviation) */ } apache-jmeter-2.8/test/src/org/apache/jmeter/0000755000175000017500000000000012032647145020470 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/timers/0000755000175000017500000000000012165514773022002 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/timers/PackageTest.java0000644000175000017500000001021712032647144025031 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.util.ResourceBundle; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.TestJMeterContextService; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class PackageTest extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); public PackageTest(String arg0) { super(arg0); } public void testTimer1() throws Exception { ConstantThroughputTimer timer = new ConstantThroughputTimer(); assertEquals(0,timer.getCalcModeInt());// Assume this thread only timer.setThroughput(60.0);// 1 per second long delay = timer.delay(); // Initialise assertEquals(0,delay); Thread.sleep(500); assertEquals("Expected delay of approx 500",500, timer.delay(), 50); } public void testTimer2() throws Exception { ConstantThroughputTimer timer = new ConstantThroughputTimer(); assertEquals(0,timer.getCalcModeInt());// Assume this thread only timer.setThroughput(60.0);// 1 per second assertEquals(1000,timer.calculateCurrentTarget(0)); // Should delay for 1 second timer.setThroughput(60000.0);// 1 per milli-second assertEquals(1,timer.calculateCurrentTarget(0)); // Should delay for 1 milli-second } public void testTimer3() throws Exception { ConstantThroughputTimer timer = new ConstantThroughputTimer(); ConstantThroughputTimerBeanInfo bi = new ConstantThroughputTimerBeanInfo(); ResourceBundle rb = (ResourceBundle) bi.getBeanDescriptor().getValue(BeanInfoSupport.RESOURCE_BUNDLE); timer.setCalcMode(rb.getString("calcMode.2")); //$NON-NLS-1$ - all threads assertEquals(1,timer.getCalcModeInt());// All threads for(int i=1; i<=10; i++){ TestJMeterContextService.incrNumberOfThreads(); } assertEquals(10,JMeterContextService.getNumberOfThreads()); timer.setThroughput(600.0);// 10 per second assertEquals(1000,timer.calculateCurrentTarget(0)); // Should delay for 1 second timer.setThroughput(600000.0);// 10 per milli-second assertEquals(1,timer.calculateCurrentTarget(0)); // Should delay for 1 milli-second for(int i=1; i<=990; i++){ TestJMeterContextService.incrNumberOfThreads(); } assertEquals(1000,JMeterContextService.getNumberOfThreads()); timer.setThroughput(60000000.0);// 1000 per milli-second assertEquals(1,timer.calculateCurrentTarget(0)); // Should delay for 1 milli-second } public void testTimerBSH() throws Exception { if (!BeanShellInterpreter.isInterpreterPresent()){ final String msg = "BeanShell jar not present, test ignored"; log.warn(msg); return; } BeanShellTimer timer = new BeanShellTimer(); long delay; timer.setScript("\"60\""); delay = timer.delay(); assertEquals(60,delay); timer.setScript("60"); delay = timer.delay(); assertEquals(60,delay); timer.setScript("5*3*4"); delay = timer.delay(); assertEquals(60,delay); } } apache-jmeter-2.8/test/src/org/apache/jmeter/config/0000755000175000017500000000000012165514773021744 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/config/TestCVSDataSet.java0000644000175000017500000002064512032647144025347 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * Package to test FileServer methods */ package org.apache.jmeter.config; import java.io.IOException; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.util.JMeterStopThreadException; public class TestCVSDataSet extends JMeterTestCase { private JMeterVariables threadVars; public TestCVSDataSet(String arg0) { super(arg0); } @Override public void setUp(){ JMeterContext jmcx = JMeterContextService.getContext(); jmcx.setVariables(new JMeterVariables()); threadVars = jmcx.getVariables(); threadVars.put("b", "value"); } @Override public void tearDown() throws IOException{ FileServer.getFileServer().closeFiles(); } public void testopen() throws Exception { CSVDataSet csv = new CSVDataSet(); csv.setFilename("No.such.filename"); csv.setVariableNames("a,b,c"); csv.setDelimiter(","); csv.iterationStart(null); assertEquals("",threadVars.get("a")); assertEquals("",threadVars.get("b")); assertEquals("",threadVars.get("c")); csv = new CSVDataSet(); csv.setFilename(findTestPath("testfiles/testempty.csv")); csv.setVariableNames("a,b,c"); csv.setDelimiter(","); csv.iterationStart(null); assertEquals("",threadVars.get("a")); assertEquals("b1",threadVars.get("b")); assertEquals("c1",threadVars.get("c")); csv.iterationStart(null); assertEquals("a2",threadVars.get("a")); assertEquals("",threadVars.get("b")); assertEquals("c2",threadVars.get("c")); csv.iterationStart(null); assertEquals("a3",threadVars.get("a")); assertEquals("b3",threadVars.get("b")); assertEquals("",threadVars.get("c")); csv.iterationStart(null); assertEquals("a4",threadVars.get("a")); assertEquals("b4",threadVars.get("b")); assertEquals("c4",threadVars.get("c")); csv.iterationStart(null); // Restart file assertEquals("",threadVars.get("a")); assertEquals("b1",threadVars.get("b")); assertEquals("c1",threadVars.get("c")); } public void testutf8() throws Exception { CSVDataSet csv = new CSVDataSet(); csv.setFilename(findTestPath("testfiles/testutf8.csv")); csv.setVariableNames("a,b,c,d"); csv.setDelimiter(","); csv.setQuotedData( true ); csv.setFileEncoding( "UTF-8" ); csv.iterationStart(null); assertEquals("a1",threadVars.get("a")); assertEquals("b1",threadVars.get("b")); assertEquals("\u00e71",threadVars.get("c")); assertEquals("d1",threadVars.get("d")); csv.iterationStart(null); assertEquals("a2",threadVars.get("a")); assertEquals("b2",threadVars.get("b")); assertEquals("\u00e72",threadVars.get("c")); assertEquals("d2",threadVars.get("d")); csv.iterationStart(null); assertEquals("a3",threadVars.get("a")); assertEquals("b3",threadVars.get("b")); assertEquals("\u00e73",threadVars.get("c")); assertEquals("d3",threadVars.get("d")); csv.iterationStart(null); assertEquals("a4",threadVars.get("a")); assertEquals("b4",threadVars.get("b")); assertEquals("\u00e74",threadVars.get("c")); assertEquals("d4",threadVars.get("d")); } // Test CSV file with a header line public void testHeaderOpen(){ CSVDataSet csv = new CSVDataSet(); csv.setFilename(findTestPath("testfiles/testheader.csv")); csv.setDelimiter("|"); assertNull(csv.getVariableNames()); csv.iterationStart(null); assertNull(threadVars.get("a")); assertEquals("a1",threadVars.get("A")); assertEquals("b1",threadVars.get("B")); assertEquals("c1",threadVars.get("C")); assertEquals("d1",threadVars.get("D|1")); csv.iterationStart(null); assertNull(threadVars.get("a")); assertEquals("a2",threadVars.get("A")); assertEquals("b2",threadVars.get("B")); assertEquals("c2",threadVars.get("C")); assertEquals("d2",threadVars.get("D|1")); } // Test CSV file with a header line and recycle is true public void testHeaderOpenAndRecycle(){ CSVDataSet csv = new CSVDataSet(); csv.setFilename(findTestPath("testfiles/testheader.csv")); csv.setDelimiter("|"); csv.setRecycle(true); assertNull(csv.getVariableNames()); // read 1st line // read 5 lines + restart to file begin csv.iterationStart(null); // line 2 csv.iterationStart(null); // line 3 csv.iterationStart(null); // line 4 csv.iterationStart(null); // line 5 csv.iterationStart(null); // return to 2nd line (first line is names) assertEquals("a1",threadVars.get("A")); assertEquals("b1",threadVars.get("B")); assertEquals("c1",threadVars.get("C")); assertEquals("d1",threadVars.get("D|1")); } // Test CSV file with a header line public void testHeaderQuotes(){ CSVDataSet csv = new CSVDataSet(); csv.setFilename(findTestPath("testfiles/testquoted.csv")); csv.setDelimiter("|"); csv.setQuotedData(true); csv.setRecycle(false); csv.setStopThread(true); assertNull(csv.getVariableNames()); csv.iterationStart(null); assertNull(threadVars.get("a")); assertEquals("a1",threadVars.get("A")); assertEquals("b1",threadVars.get("B")); assertEquals("c1",threadVars.get("C")); assertEquals("d1",threadVars.get("D|1")); csv.iterationStart(null); assertNull(threadVars.get("a")); assertEquals("a2",threadVars.get("A")); assertEquals("b2",threadVars.get("B")); assertEquals("c2",threadVars.get("C")); assertEquals("d2",threadVars.get("D|1")); csv.iterationStart(null); assertNull(threadVars.get("a")); assertEquals("a3",threadVars.get("A")); assertEquals("b3",threadVars.get("B")); assertEquals("c3",threadVars.get("C")); assertEquals("d3",threadVars.get("D|1")); try { csv.iterationStart(null); fail("Expected JMeterStopThreadException"); } catch (JMeterStopThreadException expected) { } } private CSVDataSet initCSV(){ CSVDataSet csv = new CSVDataSet(); csv.setFilename(findTestPath("testfiles/test.csv")); csv.setVariableNames("a,b,c"); csv.setDelimiter(","); return csv; } public void testShareMode(){ new CSVDataSetBeanInfo(); // needs to be initialised CSVDataSet csv0 = initCSV(); CSVDataSet csv1 = initCSV(); assertNull(csv1.getShareMode()); csv1.setShareMode("abc"); assertEquals("abc",csv1.getShareMode()); csv1.iterationStart(null); assertEquals("a1",threadVars.get("a")); csv1.iterationStart(null); assertEquals("a2",threadVars.get("a")); CSVDataSet csv2 = initCSV(); csv2.setShareMode("abc"); assertEquals("abc",csv2.getShareMode()); csv2.iterationStart(null); assertEquals("a3",threadVars.get("a")); csv0.iterationStart(null); assertEquals("a1",threadVars.get("a")); csv1.iterationStart(null); assertEquals("a4",threadVars.get("a")); } } apache-jmeter-2.8/test/src/org/apache/jmeter/config/gui/0000755000175000017500000000000012165514773022530 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/config/gui/TestArgumentsPanel.java0000644000175000017500000000417112032647144027153 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config.gui; import junit.framework.TestCase; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; /** * A GUI panel allowing the user to enter name-value argument pairs. These * arguments (or parameters) are usually used to provide configuration values * for some other component. * */ public class TestArgumentsPanel extends TestCase { /** * Create a new test. * * @param name * the name of the test */ public TestArgumentsPanel(String name) { super(name); } /** * Test that adding an argument to the table results in an appropriate * TestElement being created. * * @throws Exception * if an exception occurred during the test */ public void testArgumentCreation() throws Exception { ArgumentsPanel gui = new ArgumentsPanel(); gui.tableModel.addRow(new Argument()); gui.tableModel.setValueAt("howdy", 0, 0); gui.tableModel.addRow(new Argument()); gui.tableModel.setValueAt("doody", 0, 1); assertEquals("=", ((Argument) ((Arguments) gui.createTestElement()).getArguments().get(0).getObjectValue()) .getMetaData()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/junit/0000755000175000017500000000000012165514773021630 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/junit/JMeterTest.java0000644000175000017500000006473512032647144024530 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.junit; import java.awt.Component; import java.awt.HeadlessException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.rmi.RemoteException; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; import junit.framework.Test; import junit.framework.TestSuite; import org.apache.jmeter.config.gui.ObsoleteGui; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.Function; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.gui.TestBeanGUI; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; public class JMeterTest extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); private static Map guiTitles; private static Map guiTags; private static Map funcTitles; private static Properties nameMap; private static final Locale TEST_LOCALE = Locale.ENGLISH; private static final Locale DEFAULT_LOCALE = Locale.getDefault(); public JMeterTest(String name) { super(name); } /* * The suite() method creates separate test suites for each of the types of * test. The suitexxx() methods create a list of items to be tested, and * create a new test instance for each. * * Each test type has its own constructor, which saves the item to be tested * * Note that the suite() method must be static, and the methods to run the * tests must be instance methods so that they can pick up the item value * which was saved by the constructor. * */ // Constructor for TestElement tests private TestElement testItem; public JMeterTest(String testName, TestElement te) { super(testName);// Save the method name testItem = te; } // Constructor for Serializable tests private Serializable serObj; public JMeterTest(String testName, Serializable ser) { super(testName);// Save the method name serObj = ser; } // Constructor for GUI tests private JMeterGUIComponent guiItem; public JMeterTest(String testName, JMeterGUIComponent gc) { super(testName);// Save the method name guiItem = gc; } // Constructor for Function tests private Function funcItem; private static volatile boolean classPathShown = false;// Only show classpath once public JMeterTest(String testName, Function fi) { super(testName);// Save the method name funcItem = fi; } /* * Use a suite to allow the tests to be generated at run-time */ public static Test suite() throws Exception { // The Locale used to instantiate the GUI objects JMeterUtils.setLocale(TEST_LOCALE); Locale.setDefault(TEST_LOCALE); // Needs to be done before any GUI classes are instantiated TestSuite suite = new TestSuite("JMeterTest"); suite.addTest(new JMeterTest("readAliases")); suite.addTest(new JMeterTest("createTitleSet")); suite.addTest(new JMeterTest("createTagSet")); suite.addTest(suiteGUIComponents()); suite.addTest(suiteSerializableElements()); suite.addTest(suiteTestElements()); suite.addTest(suiteBeanComponents()); suite.addTest(new JMeterTest("createFunctionSet")); suite.addTest(suiteFunctions()); suite.addTest(new JMeterTest("checkGuiSet")); suite.addTest(new JMeterTest("checkFunctionSet")); suite.addTest(new JMeterTest("resetLocale")); // revert return suite; } // Restore the original Locale public void resetLocale(){ JMeterUtils.setLocale(DEFAULT_LOCALE); Locale.setDefault(DEFAULT_LOCALE); } /* * Extract titles from component_reference.xml */ public void createTitleSet() throws Exception { guiTitles = new HashMap(90); String compref = "../xdocs/usermanual/component_reference.xml"; SAXBuilder bldr = new SAXBuilder(); Document doc; doc = bldr.build(compref); Element root = doc.getRootElement(); Element body = root.getChild("body"); @SuppressWarnings("unchecked") List sections = body.getChildren("section"); for (int i = 0; i < sections.size(); i++) { @SuppressWarnings("unchecked") List components = sections.get(i).getChildren("component"); for (int j = 0; j < components.size(); j++) { Element comp = components.get(j); String nm=comp.getAttributeValue("name"); if (!nm.equals("SSL Manager")){// Not a true GUI component guiTitles.put(nm.replace(' ','_'), Boolean.FALSE); } } } // Add titles that don't need to be documented //guiTitles.put("Root", Boolean.FALSE); guiTitles.put("Example Sampler", Boolean.FALSE); } /* * Extract titles from component_reference.xml */ public void createTagSet() throws Exception { guiTags = new HashMap(90); String compref = "../xdocs/usermanual/component_reference.xml"; SAXBuilder bldr = new SAXBuilder(); Document doc; doc = bldr.build(compref); Element root = doc.getRootElement(); Element body = root.getChild("body"); @SuppressWarnings("unchecked") List sections = body.getChildren("section"); for (int i = 0; i < sections.size(); i++) { @SuppressWarnings("unchecked") List components = sections.get(i).getChildren("component"); for (int j = 0; j < components.size(); j++) { Element comp = components.get(j); guiTags.put(comp.getAttributeValue("tag"), Boolean.FALSE); } } } /* * Extract titles from functions.xml */ public void createFunctionSet() throws Exception { funcTitles = new HashMap(20); String compref = "../xdocs/usermanual/functions.xml"; SAXBuilder bldr = new SAXBuilder(); Document doc; doc = bldr.build(compref); Element root = doc.getRootElement(); Element body = root.getChild("body"); Element section = body.getChild("section"); @SuppressWarnings("unchecked") List sections = section.getChildren("subsection"); for (int i = 0; i < sections.size(); i++) { @SuppressWarnings("unchecked") List components = sections.get(i).getChildren("component"); for (int j = 0; j < components.size(); j++) { Element comp = components.get(j); funcTitles.put(comp.getAttributeValue("name"), Boolean.FALSE); String tag = comp.getAttributeValue("tag"); if (tag != null){ funcTitles.put(tag, Boolean.FALSE); } } } } private int scanprintMap(Map m, String t) { Set s = m.keySet(); int unseen = 0; if (s.size() == 0) { return 0; } Iterator i = s.iterator(); while (i.hasNext()) { String key = i.next(); if (!m.get(key).equals(Boolean.TRUE)) { if (unseen == 0)// first time { System.out.println("\nNames remaining in " + t + " Map:"); } unseen++; System.out.println(key); } } return unseen; } public void checkGuiSet() throws Exception { guiTitles.remove("Example Sampler");// We don't mind if this is left over guiTitles.remove("Sample_Result_Save_Configuration");// Ditto, not a sampler assertEquals("Should not have any names left over", 0, scanprintMap(guiTitles, "GUI")); } public void checkFunctionSet() throws Exception { assertEquals("Should not have any names left over", 0, scanprintMap(funcTitles, "Function")); } /* * Test GUI elements - create the suite of tests */ private static Test suiteGUIComponents() throws Exception { TestSuite suite = new TestSuite("GuiComponents"); Iterator iter = getObjects(JMeterGUIComponent.class).iterator(); while (iter.hasNext()) { JMeterGUIComponent item = (JMeterGUIComponent) iter.next(); if (item instanceof JMeterTreeNode) { System.out.println("o.a.j.junit.JMeterTest INFO: JMeterGUIComponent: skipping all tests " + item.getClass().getName()); continue; } if (item instanceof ObsoleteGui){ continue; } TestSuite ts = new TestSuite(item.getClass().getName()); ts.addTest(new JMeterTest("GUIComponents1", item)); if (item instanceof TestBeanGUI) { System.out.println("o.a.j.junit.JMeterTest INFO: JMeterGUIComponent: skipping some tests " + item.getClass().getName()); } else { ts.addTest(new JMeterTest("GUIComponents2", item)); ts.addTest(new JMeterTest("runGUITitle", item)); } suite.addTest(ts); } return suite; } /* * Test Functions - create the suite of tests */ private static Test suiteFunctions() throws Exception { TestSuite suite = new TestSuite("Functions"); Iterator iter = getObjects(Function.class).iterator(); while (iter.hasNext()) { Object item = iter.next(); if (item.getClass().equals(CompoundVariable.class)) { continue; } TestSuite ts = new TestSuite(item.getClass().getName()); ts.addTest(new JMeterTest("runFunction", (Function) item)); ts.addTest(new JMeterTest("runFunction2", (Function) item)); suite.addTest(ts); } return suite; } /* * Test GUI elements - create the suite of tests */ private static Test suiteBeanComponents() throws Exception { TestSuite suite = new TestSuite("BeanComponents"); Iterator iter = getObjects(TestBean.class).iterator(); while (iter.hasNext()) { Class c = iter.next().getClass(); try { JMeterGUIComponent item = new TestBeanGUI(c); // JMeterGUIComponent item = (JMeterGUIComponent) iter.next(); TestSuite ts = new TestSuite(item.getClass().getName()); ts.addTest(new JMeterTest("GUIComponents2", item)); ts.addTest(new JMeterTest("runGUITitle", item)); suite.addTest(ts); } catch (IllegalArgumentException e) { System.out.println("o.a.j.junit.JMeterTest Cannot create test for " + c.getName() + " " + e); e.printStackTrace(System.out); } } return suite; } /* * Test GUI elements - run the test */ public void runGUITitle() throws Exception { if (guiTitles.size() > 0) { String title = guiItem.getDocAnchor(); boolean ct = guiTitles.containsKey(title); if (ct) { guiTitles.put(title, Boolean.TRUE);// So we can detect extra entries } String name = guiItem.getClass().getName(); if (// Is this a work in progress or an internal GUI component? (title != null && title.length() > 0) // Will be "" for internal components && (title.toUpperCase(java.util.Locale.ENGLISH).indexOf("(ALPHA") == -1) && (title.toUpperCase(java.util.Locale.ENGLISH).indexOf("(BETA") == -1) && (!title.matches("Example\\d+")) // Skip the example samplers ... && (!name.startsWith("org.apache.jmeter.examples.")) && (!name.startsWith("org.apache.jmeter.report.")) // Skip report packages as implementation is incomplete && (!name.equals("org.apache.jmeter.control.gui.ReportGui"))) // Skip report GUI as implementation is incomplete {// No, not a work in progress ... String s = "component_reference.xml needs '" + title + "' anchor for " + name; if (!ct) { log.warn(s); // Record in log as well } assertTrue(s, ct); } } } /* * run the function test */ public void runFunction() throws Exception { if (funcTitles.size() > 0) { String title = funcItem.getReferenceKey(); boolean ct = funcTitles.containsKey(title); if (ct) { funcTitles.put(title, Boolean.TRUE);// For detecting extra entries } if (// Is this a work in progress ? title.indexOf("(ALPHA") == -1 && title.indexOf("(EXPERIMENTAL") == -1) {// No, // not // a // work // in // progress // ... String s = "function.xml needs '" + title + "' entry for " + funcItem.getClass().getName(); if (!ct) { log.warn(s); // Record in log as well } assertTrue(s, ct); } } } /* * Check that function descriptions are OK */ public void runFunction2() throws Exception { Iterator i = funcItem.getArgumentDesc().iterator(); while (i.hasNext()) { Object o = i.next(); assertTrue("Description must be a String", o instanceof String); assertFalse("Description must not start with [refkey", ((String) o).startsWith("[refkey")); } } /* * Test GUI elements - run for all components */ public void GUIComponents1() throws Exception { String name = guiItem.getClass().getName(); assertEquals("Name should be same as static label for " + name, guiItem.getStaticLabel(), guiItem.getName()); if (name.startsWith("org.apache.jmeter.examples.")){ return; } if (!name.endsWith("TestBeanGUI")) { try { String label = guiItem.getLabelResource(); assertNotNull("Label should not be null for "+name, label); assertTrue("Label should not be empty for "+name, label.length() > 0); assertFalse("'" + label + "' should be in resource file for " + name, JMeterUtils.getResString( label).startsWith(JMeterUtils.RES_KEY_PFX)); } catch (UnsupportedOperationException uoe) { log.warn("Class has not yet implemented getLabelResource " + name); } } checkElementAlias(guiItem); } /* * Test GUI elements - not run for TestBeanGui items */ public void GUIComponents2() throws Exception { String name = guiItem.getClass().getName(); // TODO these assertions should be separate tests TestElement el = guiItem.createTestElement(); assertNotNull(name + ".createTestElement should be non-null ", el); assertEquals("GUI-CLASS: Failed on " + name, name, el.getPropertyAsString(TestElement.GUI_CLASS)); assertEquals("NAME: Failed on " + name, guiItem.getName(), el.getName()); assertEquals("TEST-CLASS: Failed on " + name, el.getClass().getName(), el .getPropertyAsString(TestElement.TEST_CLASS)); TestElement el2 = guiItem.createTestElement(); el.setName("hey, new name!:"); el.setProperty("NOT", "Shouldn't be here"); if (!(guiItem instanceof UnsharedComponent)) { assertEquals("SHARED: Failed on " + name, "", el2.getPropertyAsString("NOT")); } log.debug("Saving element: " + el.getClass()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); SaveService.saveElement(el, bos); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); bos.close(); el = (TestElement) SaveService.loadElement(bis); bis.close(); assertNotNull("Load element failed on: "+name,el); guiItem.configure(el); assertEquals("CONFIGURE-TEST: Failed on " + name, el.getName(), guiItem.getName()); guiItem.modifyTestElement(el2); assertEquals("Modify Test: Failed on " + name, "hey, new name!:", el2.getName()); } /* * Test serializable elements - create the suite of tests */ private static Test suiteSerializableElements() throws Exception { TestSuite suite = new TestSuite("SerializableElements"); Iterator iter = getObjects(Serializable.class).iterator(); while (iter.hasNext()) { Serializable serObj = (Serializable) iter.next(); if (serObj.getClass().getName().endsWith("_Stub")) { continue; } TestSuite ts = new TestSuite(serObj.getClass().getName()); ts.addTest(new JMeterTest("runSerialTest", serObj)); suite.addTest(ts); } return suite; } /* * Test serializable elements - test the object */ public void runSerialTest() throws Exception { if (!(serObj instanceof Component)) {// try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bytes); out.writeObject(serObj); out.close(); ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes.toByteArray())); Object readObject = in.readObject(); in.close(); assertEquals("deserializing class: " + serObj.getClass().getName(), serObj.getClass(), readObject .getClass()); } catch (Exception e) { fail("serialization of " + serObj.getClass().getName() + " failed: " + e); } } } /* * Test TestElements - create the suite */ private static Test suiteTestElements() throws Exception { TestSuite suite = new TestSuite("TestElements"); Iterator iter = getObjects(TestElement.class).iterator(); while (iter.hasNext()) { TestElement item = (TestElement) iter.next(); TestSuite ts = new TestSuite(item.getClass().getName()); ts.addTest(new JMeterTest("runTestElement", item)); suite.addTest(ts); } return suite; } /* * Test TestElements - implement the test case */ public void runTestElement() throws Exception { checkElementCloning(testItem); String name = testItem.getClass().getName(); assertTrue(name + " must implement Serializable", testItem instanceof Serializable); if (name.startsWith("org.apache.jmeter.examples.")){ return; } if (name.equals("org.apache.jmeter.control.TransactionSampler")){ return; // Not a real sampler } checkElementAlias(testItem); } public void readAliases() throws Exception { nameMap = SaveService.loadProperties(); assertNotNull("SaveService nameMap (saveservice.properties) should not be null",nameMap); } private void checkElementAlias(Object item) { String name=item.getClass().getName(); boolean contains = nameMap.values().contains(name); if (!contains){ //System.out.println(name.substring(name.lastIndexOf('.')+1)+"="+name); fail("SaveService nameMap (saveservice.properties) should contain "+name); } } private static Collection getObjects(Class extendsClass) throws Exception { String exName = extendsClass.getName(); Object myThis = ""; Iterator classes = ClassFinder .findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { extendsClass }).iterator(); List objects = new LinkedList(); String n = ""; boolean caughtError = true; Throwable caught = null; try { while (classes.hasNext()) { n = classes.next(); // TODO - improve this check if (n.endsWith("RemoteJMeterEngineImpl")) { continue; // Don't try to instantiate remote server } Class c = null; try { c = Class.forName(n); try { // Try with a parameter-less constructor first objects.add(c.newInstance()); } catch (InstantiationException e) { caught = e; // System.out.println(e.toString()); try { // Events often have this constructor objects.add(c.getConstructor(new Class[] { Object.class }).newInstance( new Object[] { myThis })); } catch (NoSuchMethodException f) { // no luck. Ignore this class System.out.println("o.a.j.junit.JMeterTest WARN: " + exName + ": NoSuchMethodException " + n + ", missing empty Constructor or Constructor with Object parameter"); } } } catch (NoClassDefFoundError e) { // no luck. Ignore this class System.out.println("o.a.j.junit.JMeterTest WARN: " + exName + ": NoClassDefFoundError " + n); } catch (IllegalAccessException e) { caught = e; System.out.println("o.a.j.junit.JMeterTest WARN: " + exName + ": IllegalAccessException " + n); // We won't test restricted-access classes. } catch (HeadlessException e) { caught = e; System.out.println("o.a.j.junit.JMeterTest Error creating "+n+" "+e.toString()); } catch (Exception e) { caught = e; if (e instanceof RemoteException) { // not thrown, so need to check here System.out.println("o.a.j.junit.JMeterTest WARN: " + "Error creating " + n + " " + e.toString()); } else { throw new Exception("Error creating " + n, e); } } } caughtError = false; } finally { if (caughtError) { System.out.println("Last class=" + n); System.out.println("objects.size=" + objects.size()); System.out.println("Last error=" + caught); } } if (objects.size() == 0) { System.out.println("No classes found that extend " + exName + ". Check the following:"); System.out.println("Search paths are:"); String ss[] = JMeterUtils.getSearchPaths(); for (int i = 0; i < ss.length; i++) { System.out.println(ss[i]); } if (!classPathShown) {// Only dump it once System.out.println("Class path is:"); String cp = System.getProperty("java.class.path"); String cpe[] = JOrphanUtils.split(cp, java.io.File.pathSeparator); for (int i = 0; i < cpe.length; i++) { System.out.println(cpe[i]); } classPathShown = true; } } return objects; } private static void cloneTesting(TestElement item, TestElement clonedItem) { assertTrue(item != clonedItem); assertEquals("CLONE-SAME-CLASS: testing " + item.getClass().getName(), item.getClass().getName(), clonedItem .getClass().getName()); } private static void checkElementCloning(TestElement item) { TestElement clonedItem = (TestElement) item.clone(); cloneTesting(item, clonedItem); PropertyIterator iter2 = item.propertyIterator(); while (iter2.hasNext()) { JMeterProperty item2 = iter2.next(); // [sebb] assertEquals(item2, // clonedItem.getProperty(item2.getName())); assertEquals(item2.getStringValue(), clonedItem.getProperty(item2.getName()).getStringValue()); assertTrue(item2 != clonedItem.getProperty(item2.getName())); } } } apache-jmeter-2.8/test/src/org/apache/jmeter/junit/JMeterTestCase.java0000644000175000017500000001510212032647144025304 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.junit; import java.io.File; import java.nio.charset.Charset; import java.util.Collection; import java.util.LinkedList; import java.util.Locale; import java.util.MissingResourceException; import junit.framework.TestCase; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.AbstractFunction; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /* * Extend JUnit TestCase to provide common setup */ public abstract class JMeterTestCase extends TestCase { // Used by findTestFile private static final String filePrefix; public JMeterTestCase() { super(); } public JMeterTestCase(String name) { super(name); } /* * If not running under AllTests.java, make sure that the properties (and * log file) are set up correctly. * * N.B. In order for this to work correctly, the JUnit test must be started * in the bin directory, and all the JMeter jars (plus any others needed at * run-time) need to be on the classpath. * */ static { if (JMeterUtils.getJMeterProperties() == null) { String file = "testfiles/jmetertest.properties"; File f = new File(file); if (!f.canRead()) { System.out.println("Can't find " + file + " - trying bin directory"); file = "bin/" + file;// JMeterUtils assumes Unix-style separators filePrefix = "bin/"; } else { filePrefix = ""; } // Used to be done in initializeProperties String home=new File(System.getProperty("user.dir"),filePrefix).getParent(); System.out.println("Setting JMeterHome: "+home); JMeterUtils.setJMeterHome(home); System.setProperty("jmeter.home", home); // needed for scripts JMeterUtils jmu = new JMeterUtils(); try { jmu.initializeProperties(file); } catch (MissingResourceException e) { System.out.println("** Can't find resources - continuing anyway **"); } System.out.println("JMeterVersion="+JMeterUtils.getJMeterVersion()); logprop("java.version"); logprop("java.vm.name"); logprop("java.vendor"); logprop("java.home"); logprop("file.encoding"); // Display actual encoding used (will differ if file.encoding is not recognised) System.out.println("default encoding="+Charset.defaultCharset()); logprop("user.home"); logprop("user.dir"); logprop("user.language"); logprop("user.region"); logprop("user.country"); logprop("user.variant"); System.out.println("Locale="+Locale.getDefault().toString()); logprop("java.class.version"); logprop("os.name"); logprop("os.version"); logprop("os.arch"); logprop("java.class.path"); // String cp = System.getProperty("java.class.path"); // String cpe[]= JOrphanUtils.split(cp,File.pathSeparator); // System.out.println("java.class.path="); // for (int i=0;i parms = new LinkedList(); for (int count = 0; count < min; count++) { try { func.setParameters(parms); fail("Should have generated InvalidVariableException for " + parms.size() + " parameters"); } catch (InvalidVariableException ignored) { } parms.add(new CompoundVariable()); } for (int count = min; count <= max; count++) { func.setParameters(parms); parms.add(new CompoundVariable()); } parms.add(new CompoundVariable()); try { func.setParameters(parms); fail("Should have generated InvalidVariableException for " + parms.size() + " parameters"); } catch (InvalidVariableException ignored) { } } } apache-jmeter-2.8/test/src/org/apache/jmeter/junit/stubs/0000755000175000017500000000000012165514773022770 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/junit/stubs/TestSampler.java0000644000175000017500000000370012032647144026066 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 30, 2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.apache.jmeter.junit.stubs; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; public class TestSampler extends AbstractSampler { private static final long serialVersionUID = 240L; private long wait = 0; private long samples = 0; // number of samples taken /** * {@inheritDoc} */ public SampleResult sample(Entry e) { if (wait > 0) { try { Thread.sleep(wait); } catch (InterruptedException e1) { // ignore } } samples++; return null; } public TestSampler(String name, long wait) { setName(name); this.wait = wait; } public TestSampler(String name) { setName(name); } public TestSampler() { } @Override public String toString() { return getName(); } public long getSamples() { return samples; } } apache-jmeter-2.8/test/src/org/apache/jmeter/util/0000755000175000017500000000000012165514773021454 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/util/PackageTest.java0000644000175000017500000000437712032647145024516 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import junit.framework.TestCase; public class PackageTest extends TestCase { public PackageTest() { super(); } public PackageTest(String arg0) { super(arg0); } public void testServer() throws Exception { BeanShellServer bshs = new BeanShellServer(9876, ""); assertNotNull(bshs); // Not sure we can test anything else here } public void testSub1() throws Exception { String input = "http://jakarta.apache.org/jmeter/index.html"; String pattern = "jakarta.apache.org"; String sub = "${server}"; assertEquals("http://${server}/jmeter/index.html", StringUtilities.substitute(input, pattern, sub)); } public void testSub2() throws Exception { String input = "arg1=param1;param1"; String pattern = "param1"; String sub = "${value}"; assertEquals("arg1=${value};${value}", StringUtilities.substitute(input, pattern, sub)); } public void testSub3() throws Exception { String input = "jakarta.apache.org"; String pattern = "jakarta.apache.org"; String sub = "${server}"; assertEquals("${server}", StringUtilities.substitute(input, pattern, sub)); } public void testSub4() throws Exception { String input = "//a///b////c"; String pattern = "//"; String sub = "/"; assertEquals("/a//b//c", StringUtilities.substitute(input, pattern, sub)); } } apache-jmeter-2.8/test/src/org/apache/jmeter/util/TestJMeterUtils.java0000644000175000017500000000230712032647145025361 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * Package to test JMeterUtils methods */ package org.apache.jmeter.util; import junit.framework.TestCase; public class TestJMeterUtils extends TestCase { public TestJMeterUtils() { super(); } public TestJMeterUtils(String arg0) { super(arg0); } //TODO add some real tests now that split() has been removed public void test1() throws Exception{ } } apache-jmeter-2.8/test/src/org/apache/jmeter/save/0000755000175000017500000000000012165514773021435 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/save/TestSaveService.java0000644000175000017500000001625112032647144025354 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; public class TestSaveService extends JMeterTestCase { // testLoadAndSave test files private static final String[] FILES = new String[] { "AssertionTestPlan.jmx", "AuthManagerTestPlan.jmx", "HeaderManagerTestPlan.jmx", "InterleaveTestPlan2.jmx", "InterleaveTestPlan.jmx", "LoopTestPlan.jmx", "Modification Manager.jmx", "OnceOnlyTestPlan.jmx", "proxy.jmx", "ProxyServerTestPlan.jmx", "SimpleTestPlan.jmx", "GuiTest.jmx", "GuiTest231.jmx", "GenTest27.jmx", }; // Test files for testLoad; output will generally be different in size private static final String[] FILES_LOAD_ONLY = new String[] { "GuiTest_original.jmx", "GuiTest231_original.jmx", "GenTest22.jmx", "GenTest231.jmx", "GenTest24.jmx", "GenTest25.jmx", // GraphAccumVisualizer obsolete, BSFSamplerGui now a TestBean "GenTest251.jmx", // GraphAccumVisualizer obsolete, BSFSamplerGui now a TestBean "GenTest26.jmx", // GraphAccumVisualizer now obsolete }; private static final boolean saveOut = JMeterUtils.getPropDefault("testsaveservice.saveout", false); public TestSaveService(String name) { super(name); } public void testPropfile() throws Exception { assertTrue("Property Version mismatch, ensure you update SaveService#PROPVERSION field with _version property value from saveservice.properties", SaveService.checkPropertyVersion()); assertTrue("Property File Version mismatch, ensure you update SaveService#FILEVERSION field with revision id of saveservice.properties", SaveService.checkFileVersion()); } public void testVersions() throws Exception { assertTrue("Unexpected version found", SaveService.checkVersions()); } public void testLoadAndSave() throws Exception { boolean failed = false; // Did a test fail? for (int i = 0; i < FILES.length; i++) { final File testFile = findTestFile("testfiles/" + FILES[i]); int [] orig = readFile(new BufferedReader(new FileReader(testFile))); InputStream in = null; HashTree tree = null; try { in = new FileInputStream(testFile); tree = SaveService.loadTree(in); } finally { if(in != null) { in.close(); } } ByteArrayOutputStream out = new ByteArrayOutputStream(1000000); try { SaveService.saveTree(tree, out); } finally { out.close(); // Make sure all the data is flushed out } ByteArrayInputStream ins = new ByteArrayInputStream(out.toByteArray()); int [] output = readFile(new BufferedReader(new InputStreamReader(ins))); // We only check the length of the result. Comparing the // actual result (out.toByteArray==original) will usually // fail, because the order of the properties within each // test element may change. Comparing the lengths should be // enough to detect most problem cases... if (orig[0] != output[0] || orig[1] != output[1]) { failed = true; System.out.println(); System.out.println("Loading file testfiles/" + FILES[i] + " and " + "saving it back changes its size from " + orig[0] + " to " + output[0] + "."); System.out.println("Number of lines changes from " + orig[1] + " to " + output[1]); if (saveOut) { final File outFile = findTestFile("testfiles/" + FILES[i] + ".out"); System.out.println("Write " + outFile); FileOutputStream outf = null; try { outf = new FileOutputStream(outFile); outf.write(out.toByteArray()); } finally { if(outf != null) { outf.close(); } } System.out.println("Wrote " + outFile); } } // Note this test will fail if a property is added or // removed to any of the components used in the test // files. The way to solve this is to appropriately change // the test file. } if (failed) // TODO make these separate tests? { fail("One or more failures detected"); } } /** * Calculate size and line count ignoring EOL and * "jmeterTestPlan" element which may vary because of * different attributes/attribute lengths. */ private int[] readFile(BufferedReader br) throws Exception { try { int length=0; int lines=0; String line; while((line=br.readLine()) != null) { lines++; if (!line.startsWith(" missingClasses = SaveService.checkClasses(); if(missingClasses.size()>0) { fail("One or more classes not found:"+missingClasses); } } } apache-jmeter-2.8/test/src/org/apache/jmeter/save/TestCSVSaveService.java0000644000175000017500000001430012032647144025721 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import org.apache.jmeter.junit.JMeterTestCase; public class TestCSVSaveService extends JMeterTestCase { public TestCSVSaveService(String name) { super(name); } private void checkSplitString(String input, char delim, String []expected) throws Exception { String out[] = CSVSaveService.csvSplitString(input, delim); checkStrings(expected, out); } private void checkStrings(String[] expected, String[] out) { assertEquals("Incorrect number of strings returned",expected.length, out.length); for(int i = 0; i < out.length; i++){ assertEquals("Incorrect entry returned",expected[i], out[i]); } } // This is what JOrphanUtils.split() does public void testSplitEmpty() throws Exception { checkSplitString("", ',', new String[]{}); } // These tests should agree with those for JOrphanUtils.split() as far as possible public void testSplitUnquoted() throws Exception { checkSplitString("a", ',', new String[]{"a"}); checkSplitString("a,bc,d,e", ',', new String[]{"a","bc","d","e"}); checkSplitString(",bc,d,e", ',', new String[]{"","bc","d","e"}); checkSplitString("a,,d,e", ',', new String[]{"a","","d","e"}); checkSplitString("a,bc, ,e", ',', new String[]{"a","bc"," ","e"}); checkSplitString("a,bc,d, ", ',', new String[]{"a","bc","d"," "}); checkSplitString("a,bc,d,", ',', new String[]{"a","bc","d",""}); checkSplitString("a,bc,,", ',', new String[]{"a","bc","",""}); checkSplitString("a,,,", ',', new String[]{"a","","",""}); checkSplitString("a,bc,d,\n",',', new String[]{"a","bc","d",""}); // \u00e7 = LATIN SMALL LETTER C WITH CEDILLA // \u00e9 = LATIN SMALL LETTER E WITH ACUTE checkSplitString("a,b\u00e7,d,\u00e9", ',', new String[]{"a","b\u00e7","d","\u00e9"}); } public void testSplitQuoted() throws Exception { checkSplitString("a,bc,d,e", ',', new String[]{"a","bc","d","e"}); checkSplitString(",bc,d,e", ',', new String[]{"","bc","d","e"}); checkSplitString("\"\",bc,d,e", ',', new String[]{"","bc","d","e"}); checkSplitString("a,,d,e", ',', new String[]{"a","","d","e"}); checkSplitString("a,\"\",d,e", ',', new String[]{"a","","d","e"}); checkSplitString("a,bc, ,e", ',', new String[]{"a","bc"," ","e"}); checkSplitString("a,bc,\" \",e", ',', new String[]{"a","bc"," ","e"}); checkSplitString("a,bc,d, ", ',', new String[]{"a","bc","d"," "}); checkSplitString("a,bc,d,\" \"", ',', new String[]{"a","bc","d"," "}); checkSplitString("a,bc,d,", ',', new String[]{"a","bc","d",""}); checkSplitString("a,bc,d,\"\"", ',', new String[]{"a","bc","d",""}); checkSplitString("a,bc,d,\"\"\n",',', new String[]{"a","bc","d",""}); // \u00e7 = LATIN SMALL LETTER C WITH CEDILLA // \u00e9 = LATIN SMALL LETTER E WITH ACUTE checkSplitString("\"a\",\"b\u00e7\",\"d\",\"\u00e9\"", ',', new String[]{"a","b\u00e7","d","\u00e9"}); } public void testSplitBadQuote() throws Exception { try { checkSplitString("a\"b",',',null); fail("Should have generated IOException"); } catch (IOException e) { } } public void testSplitMultiLine() throws Exception { String line="a,,\"c\nd\",e\n,,f,g,\n\n"; String[] out; BufferedReader br = new BufferedReader(new StringReader(line)); out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{"a","","c\nd","e"}, out); out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{"","","f","g",""}, out); out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{""}, out); // Blank line assertEquals("Expected to be at EOF",-1,br.read()); // Empty strings at EOF out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{}, out); out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{}, out); } public void testBlankLine() throws Exception { BufferedReader br = new BufferedReader(new StringReader("\n")); String[] out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{""}, out); assertEquals("Expected to be at EOF",-1,br.read()); } public void testBlankLineQuoted() throws Exception { BufferedReader br = new BufferedReader(new StringReader("\"\"\n")); String[] out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{""}, out); assertEquals("Expected to be at EOF",-1,br.read()); } public void testEmptyFile() throws Exception { BufferedReader br = new BufferedReader(new StringReader("")); String[] out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{}, out); assertEquals("Expected to be at EOF",-1,br.read()); } public void testShortFile() throws Exception { BufferedReader br = new BufferedReader(new StringReader("a")); String[] out = CSVSaveService.csvReadFile(br, ','); checkStrings(new String[]{"a"}, out); assertEquals("Expected to be at EOF",-1,br.read()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/threads/0000755000175000017500000000000012165514773022131 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/threads/TestJMeterContextService.java0000644000175000017500000000377412032647144027713 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import junit.framework.TestCase; public class TestJMeterContextService extends TestCase { public TestJMeterContextService(String name) { super(name); } public void testCounts(){ assertEquals(0,JMeterContextService.getNumberOfThreads()); assertEquals(0,JMeterContextService.getTotalThreads()); incrNumberOfThreads(); assertEquals(1,JMeterContextService.getNumberOfThreads()); assertEquals(0,JMeterContextService.getTotalThreads()); decrNumberOfThreads(); assertEquals(0,JMeterContextService.getTotalThreads()); assertEquals(0,JMeterContextService.getNumberOfThreads()); JMeterContextService.addTotalThreads(27); JMeterContextService.addTotalThreads(27); assertEquals(54,JMeterContextService.getTotalThreads()); assertEquals(0,JMeterContextService.getNumberOfThreads()); } // Give access to the method for test code public static void incrNumberOfThreads(){ JMeterContextService.incrNumberOfThreads(); } // Give access to the method for test code public static void decrNumberOfThreads(){ JMeterContextService.decrNumberOfThreads(); } } apache-jmeter-2.8/test/src/org/apache/jmeter/threads/TestTestCompiler.java0000644000175000017500000000466012032647144026244 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.control.GenericController; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.collections.ListedHashTree; public class TestTestCompiler extends junit.framework.TestCase { public TestTestCompiler(String name) { super(name); } public void testConfigGathering() throws Exception { ListedHashTree testing = new ListedHashTree(); GenericController controller = new GenericController(); ConfigTestElement config1 = new ConfigTestElement(); config1.setName("config1"); config1.setProperty("test.property", "A test value"); TestSampler sampler = new TestSampler(); sampler.setName("sampler"); testing.add(controller, config1); testing.add(controller, sampler); TestCompiler.initialize(); TestCompiler compiler = new TestCompiler(testing); testing.traverse(compiler); sampler = (TestSampler) compiler.configureSampler(sampler).getSampler(); assertEquals("A test value", sampler.getPropertyAsString("test.property")); } class TestSampler extends AbstractSampler { private static final long serialVersionUID = 240L; public SampleResult sample(org.apache.jmeter.samplers.Entry e) { return null; } @Override public Object clone() { return new TestSampler(); } } } apache-jmeter-2.8/test/src/org/apache/jmeter/testbeans/0000755000175000017500000000000012032647144022457 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/testbeans/gui/0000755000175000017500000000000012165514773023253 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/testbeans/gui/PackageTest.java0000644000175000017500000002073212032647144026305 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.util.Enumeration; import java.util.List; import java.util.Locale; import java.util.ResourceBundle; import org.apache.jmeter.gui.util.JMeterMenuBar; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.log.Logger; import junit.framework.Test; // import junit.framework.TestCase; import junit.framework.TestSuite; /* * Find all beans out there and check their resource property files: - Check * that non-default property files don't have any extra keys. - Check all * necessary properties are defined at least in the default property file, * except for beans whose name contains "Experimental" or "Alpha". * * TODO: - Check property files don't have duplicate keys (is this important) * */ public final class PackageTest extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); // ResourceBundle i18nEdit= // ResourceBundle.getBundle("org.apache.jmeter.resources.i18nedit"); private static final Locale defaultLocale = new Locale("en",""); // i18nEdit.getString("locale.default"); private final ResourceBundle defaultBundle; private final Class testBeanClass; private final Locale testLocale; private PackageTest(Class testBeanClass, Locale locale, ResourceBundle defaultBundle) { super(testBeanClass.getName() + " - " + locale.getLanguage() + " - " + locale.getCountry()); this.testBeanClass = testBeanClass; this.testLocale = locale; this.defaultBundle = defaultBundle; } private PackageTest(String name){ super(name); this.testBeanClass = null; this.testLocale = null; this.defaultBundle = null; } private BeanInfo beanInfo; private ResourceBundle bundle; @Override public void setUp() { if (testLocale == null) { return;// errorDetected() } JMeterUtils.setLocale(testLocale); Introspector.flushFromCaches(testBeanClass); try { beanInfo = Introspector.getBeanInfo(testBeanClass); bundle = (ResourceBundle) beanInfo.getBeanDescriptor().getValue(GenericTestBeanCustomizer.RESOURCE_BUNDLE); } catch (IntrospectionException e) { log.error("Can't get beanInfo for " + testBeanClass.getName(), e); throw new Error(e.toString(), e); // Programming error. Don't continue. } if (bundle == null) { throw new Error("This can't happen!"); } } @Override public void tearDown() { JMeterUtils.setLocale(Locale.getDefault()); } @Override public void runTest() throws Throwable { if (testLocale == null) { super.runTest(); return;// errorDetected() } if (bundle == defaultBundle) { checkAllNecessaryKeysPresent(); } else { checkNoInventedKeys(); } } public void checkNoInventedKeys() { // Check that all keys in the bundle are also in the default bundle: for (Enumeration keys = bundle.getKeys(); keys.hasMoreElements();) { String key = keys.nextElement(); defaultBundle.getString(key); // Will throw MissingResourceException if key is not there. } } public void checkAllNecessaryKeysPresent() { // Check that all necessary keys are there: // displayName is always mandatory: String dn = defaultBundle.getString("displayName").toUpperCase(Locale.ENGLISH); // Skip the rest of this test for alpha/experimental beans: if (dn.indexOf("(ALPHA") != -1 || dn.indexOf("(EXPERIMENTAL") != -1) { return; } // Check for property- and group-related texts: PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i < descriptors.length; i++) { // Skip non-editable properties, that is: // Ignore hidden, read-only, and write-only properties if (descriptors[i].isHidden() || descriptors[i].getReadMethod() == null || descriptors[i].getWriteMethod() == null) { continue; } // Ignore TestElement properties which don't have an explicit // editor: if (TestElement.class.isAssignableFrom(descriptors[i].getPropertyType()) && descriptors[i].getPropertyEditorClass() == null) { continue; } // Done -- we're working with an editable property. String name = descriptors[i].getName(); bundle.getString(name + ".displayName"); // bundle.getString(name+".shortDescription"); NOT MANDATORY String group = (String) descriptors[i].getValue(GenericTestBeanCustomizer.GROUP); if (group != null) { bundle.getString( group + ".displayName"); } } } public static Test suite() throws Exception { TestSuite suite = new TestSuite("Bean Resource Test Suite"); List testBaeanclassNames = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { TestBean.class }); boolean errorDetected = false; JMeterUtils.setLocale(defaultLocale); for (String className : testBaeanclassNames) { Class testBeanClass = Class.forName(className); ResourceBundle defaultBundle = null; try { defaultBundle = (ResourceBundle) Introspector.getBeanInfo(testBeanClass).getBeanDescriptor().getValue( GenericTestBeanCustomizer.RESOURCE_BUNDLE); } catch (IntrospectionException e) { log.error("Can't get beanInfo for " + testBeanClass.getName(), e); throw new Error(e.toString(), e); // Programming error. Don't // continue. } if (defaultBundle == null) { if (className.startsWith("org.apache.jmeter.examples.")) { log.info("No default bundle found for " + className); continue; } errorDetected=true; log.error("No default bundle found for " + className + " using " + defaultLocale.toString()); //throw new Error("No default bundle for class " + className); continue; } suite.addTest(new PackageTest(testBeanClass, defaultLocale, defaultBundle)); String [] languages = JMeterMenuBar.getLanguages(); for (int i=0; i < languages.length; i++){ final String[] language = languages[i].split("_"); if (language.length == 1){ suite.addTest(new PackageTest(testBeanClass, new Locale(language[0]), defaultBundle)); } else if (language.length == 2){ suite.addTest(new PackageTest(testBeanClass, new Locale(language[0], language[1]), defaultBundle)); } } } if (errorDetected) { suite.addTest(new PackageTest("errorDetected")); } return suite; } public void errorDetected(){ fail("One or more errors detected - see log file"); } } apache-jmeter-2.8/test/src/org/apache/jmeter/testbeans/gui/TestComboStringEditor.java0000644000175000017500000000405312032647144030345 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; public class TestComboStringEditor extends junit.framework.TestCase { public TestComboStringEditor(String name) { super(name); } private void testSetGet(ComboStringEditor e, Object value) throws Exception { e.setValue(value); assertEquals(value, e.getValue()); } private void testSetGetAsText(ComboStringEditor e, String text) throws Exception { e.setAsText(text); assertEquals(text, e.getAsText()); } public void testSetGet() throws Exception { ComboStringEditor e = new ComboStringEditor(); testSetGet(e, "any string"); testSetGet(e, ""); testSetGet(e, null); testSetGet(e, "${var}"); } public void testSetGetAsText() throws Exception { ComboStringEditor e = new ComboStringEditor(); testSetGetAsText(e, "any string"); testSetGetAsText(e, ""); testSetGetAsText(e, null); testSetGetAsText(e, "${var}"); // Check "Undefined" does not become a "reserved word": e.setAsText(ComboStringEditor.UNDEFINED.toString()); assertNotNull(e.getAsText()); } }apache-jmeter-2.8/test/src/org/apache/jmeter/testbeans/gui/TestFieldStringEditor.java0000644000175000017500000000346412032647144030336 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; public class TestFieldStringEditor extends junit.framework.TestCase { public TestFieldStringEditor(String name) { super(name); } private void testSetGet(ComboStringEditor e, Object value) throws Exception { e.setValue(value); assertEquals(value, e.getValue()); } private void testSetGetAsText(ComboStringEditor e, String text) throws Exception { e.setAsText(text); assertEquals(text, e.getAsText()); } public void testSetGet() throws Exception { ComboStringEditor e = new ComboStringEditor(); testSetGet(e, "any string"); testSetGet(e, ""); testSetGet(e, "${var}"); } public void testSetGetAsText() throws Exception { ComboStringEditor e = new ComboStringEditor(); testSetGetAsText(e, "any string"); testSetGetAsText(e, ""); testSetGetAsText(e, "${var}"); } }apache-jmeter-2.8/test/src/org/apache/jmeter/testbeans/gui/TestBooleanPropertyEditor.java0000644000175000017500000000437112032647144031246 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.beans.PropertyEditor; import java.beans.PropertyEditorManager; /** * Test class to check that the JVM provides sensible behaviour for the boolean PropertyEditor, i.e. * that getAsText() can only return values that match getTags(). * */ public class TestBooleanPropertyEditor extends junit.framework.TestCase { private static final String FALSE = "False"; private static final String TRUE = "True"; public TestBooleanPropertyEditor(String name) { super(name); } public void testBooleanEditor(){ PropertyEditor propertyEditor = PropertyEditorManager.findEditor(boolean.class); assertNotNull(propertyEditor); String tags[] = propertyEditor.getTags(); assertEquals(2,tags.length); assertEquals(TRUE,tags[0]); assertEquals(FALSE,tags[1]); propertyEditor.setValue(Boolean.FALSE); assertEquals(FALSE,propertyEditor.getAsText()); propertyEditor.setAsText(FALSE); assertEquals(FALSE,propertyEditor.getAsText()); propertyEditor.setAsText("false"); assertEquals(FALSE,propertyEditor.getAsText()); propertyEditor.setValue(Boolean.TRUE); assertEquals(TRUE,propertyEditor.getAsText()); propertyEditor.setAsText(TRUE); assertEquals(TRUE,propertyEditor.getAsText()); propertyEditor.setAsText("true"); assertEquals(TRUE,propertyEditor.getAsText()); } }apache-jmeter-2.8/test/src/org/apache/jmeter/assertions/0000755000175000017500000000000012165514773022671 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/assertions/ResponseAssertionTest.java0000644000175000017500000002057712032647144030065 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.net.MalformedURLException; import java.net.URL; import junit.framework.TestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class ResponseAssertionTest extends TestCase { public ResponseAssertionTest() { } private ResponseAssertion assertion; private SampleResult sample; private AssertionResult result; @Override public void setUp() throws MalformedURLException { JMeterContext jmctx = JMeterContextService.getContext(); assertion = new ResponseAssertion(); assertion.setThreadContext(jmctx); sample = new SampleResult(); JMeterVariables vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(sample); sample.setResponseData("response Data\nline 2\n\nEOF", null); sample.setURL(new URL("http://localhost/Sampler/Data/")); sample.setResponseCode("401"); sample.setResponseHeaders("X-Header: abcd"); } public void testResponseAssertionEquals() throws Exception{ assertion.unsetNotType(); assertion.setToEqualsType(); assertion.setTestFieldURL(); assertion.addTestString("Sampler Label"); assertion.addTestString("Sampler labelx"); result = assertion.getResult(sample); assertFailed(); assertion.setToNotType(); assertion.clearTestStrings(); assertion.addTestString("Sampler LabeL"); assertion.addTestString("Sampler Labelx"); result = assertion.getResult(sample); assertPassed(); } public void testResponseAssertionHeaders() throws Exception{ assertion.unsetNotType(); assertion.setToEqualsType(); assertion.setTestFieldResponseHeaders(); assertion.addTestString("X-Header: abcd"); assertion.addTestString("X-Header: abcdx"); result = assertion.getResult(sample); assertFailed(); assertion.clearTestStrings(); assertion.addTestString("X-Header: abcd"); result = assertion.getResult(sample); assertPassed(); } public void testResponseAssertionContains() throws Exception{ assertion.unsetNotType(); assertion.setToContainsType(); assertion.setTestFieldURL(); assertion.addTestString("Sampler"); assertion.addTestString("Label"); assertion.addTestString(" x"); result = assertion.getResult(sample); assertFailed(); assertion.setToNotType(); result = assertion.getResult(sample); assertFailed(); assertion.clearTestStrings(); assertion.addTestString("r l"); result = assertion.getResult(sample); assertPassed(); assertion.unsetNotType(); assertion.setTestFieldResponseData(); assertion.clearTestStrings(); assertion.addTestString("line 2"); result = assertion.getResult(sample); assertPassed(); assertion.clearTestStrings(); assertion.addTestString("(?s)line \\d+.*EOF"); result = assertion.getResult(sample); assertPassed(); assertion.setTestFieldResponseCode(); assertion.clearTestStrings(); assertion.addTestString("401"); result = assertion.getResult(sample); assertPassed(); } // Bug 46831 - check can match dollars public void testResponseAssertionContainsDollar() throws Exception { sample.setResponseData("value=\"${ID}\" Group$ctl00$drpEmails", null); assertion.unsetNotType(); assertion.setToContainsType(); assertion.setTestFieldResponseData(); assertion.addTestString("value=\"\\${ID}\" Group\\$ctl00\\$drpEmails"); result = assertion.getResult(sample); assertPassed(); } public void testResponseAssertionSubstring() throws Exception{ assertion.unsetNotType(); assertion.setToSubstringType(); assertion.setTestFieldURL(); assertion.addTestString("Sampler"); assertion.addTestString("Label"); assertion.addTestString("+("); result = assertion.getResult(sample); assertFailed(); assertion.setToNotType(); result = assertion.getResult(sample); assertFailed(); assertion.clearTestStrings(); assertion.addTestString("r l"); result = assertion.getResult(sample); assertPassed(); assertion.unsetNotType(); assertion.setTestFieldResponseData(); assertion.clearTestStrings(); assertion.addTestString("line 2"); result = assertion.getResult(sample); assertPassed(); assertion.clearTestStrings(); assertion.addTestString("line 2\n\nEOF"); result = assertion.getResult(sample); assertPassed(); assertion.setTestFieldResponseCode(); assertion.clearTestStrings(); assertion.addTestString("401"); result = assertion.getResult(sample); assertPassed(); } //TODO - need a lot more tests private void assertPassed() throws Exception{ assertNull(result.getFailureMessage(),result.getFailureMessage()); assertFalse("Not expecting error: "+result.getFailureMessage(),result.isError()); assertFalse("Not expecting error",result.isError()); assertFalse("Not expecting failure",result.isFailure()); } private void assertFailed() throws Exception{ assertNotNull(result.getFailureMessage()); assertFalse("Should not be: Response was null","Response was null".equals(result.getFailureMessage())); assertFalse("Not expecting error: "+result.getFailureMessage(),result.isError()); assertTrue("Expecting failure",result.isFailure()); } private volatile int threadsRunning; private volatile int failed; public void testThreadSafety() throws Exception { Thread[] threads = new Thread[100]; for (int i = 0; i < threads.length; i++) { threads[i] = new TestThread(); } failed = 0; for (int i = 0; i < threads.length; i++) { threads[i].start(); threadsRunning++; } synchronized (this) { while (threadsRunning > 0) { wait(); } } assertEquals(failed, 0); } class TestThread extends Thread { static final String TEST_STRING = "DAbale arroz a la zorra el abad."; // Used to be 'dábale', but caused trouble on Gump. Reasons // unknown. static final String TEST_PATTERN = ".*A.*\\."; @Override public void run() { ResponseAssertion assertion = new ResponseAssertion(); assertion.setTestFieldResponseData(); assertion.setToContainsType(); assertion.addTestString(TEST_PATTERN); SampleResult response = new SampleResult(); response.setResponseData(TEST_STRING, null); for (int i = 0; i < 100; i++) { AssertionResult result; result = assertion.getResult(response); if (result.isFailure() || result.isError()) { failed++; } } synchronized (ResponseAssertionTest.this) { threadsRunning--; ResponseAssertionTest.this.notifyAll(); } } } }apache-jmeter-2.8/test/src/org/apache/jmeter/assertions/MD5HexAssertionTest.java0000644000175000017500000000234612032647144027313 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import junit.framework.TestCase; public class MD5HexAssertionTest extends TestCase { public MD5HexAssertionTest() { super(); } public MD5HexAssertionTest(String arg0) { super(arg0); } public void testMD5() throws Exception { assertEquals("D41D8CD98F00B204E9800998ECF8427E", MD5HexAssertion.baMD5Hex(new byte[] {}).toUpperCase(java.util.Locale.ENGLISH)); } } apache-jmeter-2.8/test/src/org/apache/jmeter/assertions/SizeAssertionTest.java0000644000175000017500000001337712032647144027201 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class SizeAssertionTest extends JMeterTestCase{ private SizeAssertion assertion; private SampleResult sample1,sample0; private AssertionResult result; private final String data1 = "response Data\n" + "line 2\n\nEOF"; private final int data1Len=data1.length(); @Override public void setUp() { JMeterContext jmctx = JMeterContextService.getContext(); assertion = new SizeAssertion(); assertion.setThreadContext(jmctx); assertion.setTestFieldResponseBody(); JMeterVariables vars = new JMeterVariables(); jmctx.setVariables(vars); sample0 = new SampleResult(); sample1 = new SampleResult(); sample1.setResponseData(data1, null); } public void testSizeAssertionEquals() throws Exception{ assertion.setCompOper(SizeAssertion.EQUAL); assertion.setAllowedSize(0); result = assertion.getResult(sample1); assertFailed(); result = assertion.getResult(sample0); assertPassed(); assertion.setAllowedSize(data1Len); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertFailed(); } public void testSizeAssertionNotEquals() throws Exception{ assertion.setCompOper(SizeAssertion.NOTEQUAL); assertion.setAllowedSize(0); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertFailed(); assertion.setAllowedSize(data1Len); result = assertion.getResult(sample1); assertFailed(); result = assertion.getResult(sample0); assertPassed(); } public void testSizeAssertionGreaterThan() throws Exception{ assertion.setCompOper(SizeAssertion.GREATERTHAN); assertion.setAllowedSize(0); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertFailed(); assertion.setAllowedSize(data1Len); result = assertion.getResult(sample1); assertFailed(); result = assertion.getResult(sample0); assertFailed(); } public void testSizeAssertionGreaterThanEqual() throws Exception{ assertion.setCompOper(SizeAssertion.GREATERTHANEQUAL); assertion.setAllowedSize(0); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertPassed(); assertion.setAllowedSize(data1Len); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertFailed(); } public void testSizeAssertionLessThan() throws Exception{ assertion.setCompOper(SizeAssertion.LESSTHAN); assertion.setAllowedSize(0); result = assertion.getResult(sample1); assertFailed(); result = assertion.getResult(sample0); assertFailed(); assertion.setAllowedSize(data1Len+1); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertPassed(); } public void testSizeAssertionLessThanEqual() throws Exception{ assertion.setCompOper(SizeAssertion.LESSTHANEQUAL); assertion.setAllowedSize(0); result = assertion.getResult(sample1); assertFailed(); result = assertion.getResult(sample0); assertPassed(); assertion.setAllowedSize(data1Len+1); result = assertion.getResult(sample1); assertPassed(); result = assertion.getResult(sample0); assertPassed(); } // TODO - need a lot more tests private void assertPassed() throws Exception{ // if (null != result.getFailureMessage()){ //System.out.println(result.getFailureMessage());// debug //} assertNull("Failure message should be null",result.getFailureMessage()); assertFalse(result.isError()); assertFalse(result.isFailure()); } private void assertFailed() throws Exception{ assertNotNull("Failure nessage should not be null",result.getFailureMessage()); //System.out.println(result.getFailureMessage()); assertFalse("Should not be: Response was null","Response was null".equals(result.getFailureMessage())); assertFalse(result.isError()); assertTrue(result.isFailure()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/assertions/XMLSchemaAssertionTest.java0000644000175000017500000001742612032647144030047 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; //import org.apache.jorphan.logging.LoggingManager; public class XMLSchemaAssertionTest extends JMeterTestCase { private XMLSchemaAssertion assertion; private SampleResult result; private JMeterContext jmctx; public XMLSchemaAssertionTest(String arg0) { super(arg0); } @Override protected void setUp() throws Exception { super.setUp(); jmctx = JMeterContextService.getContext(); assertion = new XMLSchemaAssertion(); assertion.setThreadContext(jmctx);// This would be done by the run // command result = new SampleResult(); JMeterVariables vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); // LoggingManager.setPriority("DEBUG","jmeter"); } private ByteArrayOutputStream readBA(String name) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(findTestFile(name))); ByteArrayOutputStream baos = new ByteArrayOutputStream(1000); int len = 0; byte[] data = new byte[512]; while ((len = bis.read(data)) >= 0) { baos.write(data, 0, len); } bis.close(); return baos; } private byte[] readFile(String name) throws IOException { return readBA(name).toByteArray(); } public void testAssertionOK() throws Exception { result.setResponseData(readFile("testfiles/XMLSchematest.xml")); assertion.setXsdFileName(findTestPath("testfiles/XMLSchema-pass.xsd")); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertFalse("Should not be a failure", res.isFailure()); } public void testAssertionFail() throws Exception { result.setResponseData(readFile("testfiles/XMLSchematest.xml")); assertion.setXsdFileName("testfiles/XMLSchema-fail.xsd"); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertTrue(res.isError()); assertFalse(res.isFailure()); } public void testAssertionBadXSDFile() throws Exception { result.setResponseData(readFile("testfiles/XMLSchematest.xml")); assertion.setXsdFileName("xtestfiles/XMLSchema-fail.xsd"); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertTrue(res.getFailureMessage().indexOf("Failed to read schema document") > 0); assertTrue(res.isError());// TODO - should this be a failure? assertFalse(res.isFailure()); } public void testAssertionNoFile() throws Exception { result.setResponseData(readFile("testfiles/XMLSchematest.xml")); assertion.setXsdFileName(""); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertEquals(XMLSchemaAssertion.FILE_NAME_IS_REQUIRED, res.getFailureMessage()); assertFalse(res.isError()); assertTrue(res.isFailure()); } public void testAssertionNoResult() throws Exception { // result.setResponseData - not set assertion.setXsdFileName("testfiles/XMLSchema-fail.xsd"); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertEquals(AssertionResult.RESPONSE_WAS_NULL, res.getFailureMessage()); assertFalse(res.isError()); assertTrue(res.isFailure()); } public void testAssertionEmptyResult() throws Exception { result.setResponseData("", null); assertion.setXsdFileName("testfiles/XMLSchema-fail.xsd"); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertEquals(AssertionResult.RESPONSE_WAS_NULL, res.getFailureMessage()); assertFalse(res.isError()); assertTrue(res.isFailure()); } public void testAssertionBlankResult() throws Exception { result.setResponseData(" ", null); assertion.setXsdFileName("testfiles/XMLSchema-fail.xsd"); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertTrue(res.getFailureMessage().indexOf("Premature end of file") > 0); assertTrue(res.isError()); assertFalse(res.isFailure()); } public void testXMLTrailingcontent() throws Exception { ByteArrayOutputStream baos = readBA("testfiles/XMLSchematest.xml"); baos.write("extra".getBytes()); // TODO - charset? result.setResponseData(baos.toByteArray()); assertion.setXsdFileName(findTestPath("testfiles/XMLSchema-pass.xsd")); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertTrue(res.getFailureMessage().indexOf("Content is not allowed in trailing section") > 0); assertTrue(res.isError()); assertFalse(res.isFailure()); } public void testXMLTrailingwhitespace() throws Exception { ByteArrayOutputStream baos = readBA("testfiles/XMLSchematest.xml"); baos.write(" \t\n".getBytes()); // TODO - charset? result.setResponseData(baos.toByteArray()); assertion.setXsdFileName(findTestPath("testfiles/XMLSchema-pass.xsd")); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); testLog.debug("xisError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure " + res.getFailureMessage()); assertFalse(res.isError()); assertFalse(res.isFailure()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/assertions/XPathAssertionTest.java0000644000175000017500000003623412032647144027310 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class XPathAssertionTest extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); private XPathAssertion assertion; private SampleResult result; private JMeterVariables vars; private JMeterContext jmctx; public XPathAssertionTest(String arg0) { super(arg0); } @Override protected void setUp() throws Exception { super.setUp(); jmctx = JMeterContextService.getContext(); assertion = new XPathAssertion(); assertion.setThreadContext(jmctx);// This would be done by the run command result = new SampleResult(); result.setResponseData(readFile("testfiles/XPathAssertionTest.xml")); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); //testLog.setPriority(org.apache.log.Priority.DEBUG); } private void setAlternateResponseData(){ String data = "" + "" + "LIS_OK" + "" + "" + "" + "0" + "1" + "" + "5" + "" + "6" + "" + "" + ""; result.setResponseData(data, null); } private ByteArrayOutputStream readBA(String name) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(findTestFile(name))); ByteArrayOutputStream baos = new ByteArrayOutputStream(1000); int len = 0; byte[] data = new byte[512]; while ((len = bis.read(data)) >= 0) { baos.write(data, 0, len); } bis.close(); return baos; } private byte[] readFile(String name) throws IOException { return readBA(name).toByteArray(); } public void testAssertionOK() throws Exception { assertion.setXPathString("/"); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertFalse("Should not be a failure", res.isFailure()); } public void testAssertionFail() throws Exception { assertion.setXPathString("//x"); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionPath1() throws Exception { assertion.setXPathString("//*[code=1]"); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertFalse("Should not be a failure",res.isFailure()); } public void testAssertionPath2() throws Exception { assertion.setXPathString("//*[code=2]"); // Not present AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionBool1() throws Exception { assertion.setXPathString("count(//error)=2"); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertFalse("Should not be a failure",res.isFailure()); } public void testAssertionBool2() throws Exception { assertion.setXPathString("count(//*[code=1])=1"); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertFalse("Should not be a failure",res.isFailure()); } public void testAssertionBool3() throws Exception { assertion.setXPathString("count(//error)=1"); // wrong AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionBool4() throws Exception { assertion.setXPathString("count(//*[code=2])=1"); //Wrong AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionNumber() throws Exception { assertion.setXPathString("count(//error)");// not yet handled AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionNoResult() throws Exception { // result.setResponseData - not set result = new SampleResult(); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertEquals(AssertionResult.RESPONSE_WAS_NULL, res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionEmptyResult() throws Exception { result.setResponseData("", null); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertEquals(AssertionResult.RESPONSE_WAS_NULL, res.getFailureMessage()); assertFalse("Should not be an error", res.isError()); assertTrue("Should be a failure",res.isFailure()); } public void testAssertionBlankResult() throws Exception { result.setResponseData(" ", null); AssertionResult res = assertion.getResult(result); testLog.debug("isError() " + res.isError() + " isFailure() " + res.isFailure()); testLog.debug("failure message: " + res.getFailureMessage()); assertTrue(res.getFailureMessage().indexOf("Premature end of file") > 0); assertTrue("Should be an error",res.isError()); assertFalse("Should not be a failure", res.isFailure()); } public void testNoTolerance() throws Exception { String data = "testtitle" + "" + "

    invalid tag nesting


    " + ""; result.setResponseData(data, null); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); assertion.setXPathString("/html/head/title"); assertion.setValidating(false); assertion.setTolerant(false); AssertionResult res = assertion.getResult(result); log.debug("failureMessage: " + res.getFailureMessage()); assertTrue(res.isError()); assertFalse(res.isFailure()); } public void testAssertion() throws Exception { setAlternateResponseData(); assertion.setXPathString("//row/value[@field = 'alias']"); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); log.debug(" res " + res.isError()); log.debug(" failure " + res.getFailureMessage()); assertFalse(res.isError()); assertFalse(res.isFailure()); } public void testNegateAssertion() throws Exception { setAlternateResponseData(); assertion.setXPathString("//row/value[@field = 'noalias']"); assertion.setNegated(true); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); log.debug(" res " + res.isError()); log.debug(" failure " + res.getFailureMessage()); assertFalse(res.isError()); assertFalse(res.isFailure()); } public void testValidationFailure() throws Exception { setAlternateResponseData(); assertion.setXPathString("//row/value[@field = 'alias']"); assertion.setNegated(false); assertion.setValidating(true); AssertionResult res = assertion.getResult(jmctx.getPreviousResult()); log.debug(res.getFailureMessage() + " error: " + res.isError() + " failure: " + res.isFailure()); assertTrue(res.isError()); assertFalse(res.isFailure()); } public void testValidationSuccess() throws Exception { String data = "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "]>" + "" + "" + "All About Me" + "" + "" + "
    Welcome To My Book
    " + "" + "CHAPTER 1" + "" + "

    Glad you want to hear about me.

    " + "

    There's so much to say!

    " + "

    Where should we start?

    " + "

    How about more about me?

    " + "
    " + "
    " + "
    " + "
    "; result.setResponseData(data, null); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); assertion.setXPathString("/"); assertion.setValidating(true); AssertionResult res = assertion.getResult(result); assertFalse(res.isError()); assertFalse(res.isFailure()); } public void testValidationFailureWithDTD() throws Exception { String data = "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "]>" + "" + "" + "All About Me" + "" + "" + "
    Welcome To My Book
    " + "" + "CHAPTER 1" + "" + "

    Glad you want to hear about me.

    " + "

    There's so much to say!

    " + "

    Where should we start?

    " + "

    How about more about me?

    " + "
    " + "
    " + "not defined in dtd" + "
    " + "
    "; result.setResponseData(data, null); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); assertion.setXPathString("/"); assertion.setValidating(true); AssertionResult res = assertion.getResult(result); log.debug("failureMessage: " + res.getFailureMessage()); assertTrue(res.isError()); assertFalse(res.isFailure()); } public void testTolerance() throws Exception { String data = "testtitle" + "" + "

    invalid tag nesting


    " + ""; result.setResponseData(data, null); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); assertion.setXPathString("/html/head/title"); assertion.setValidating(true); assertion.setTolerant(true); AssertionResult res = assertion.getResult(result); log.debug("failureMessage: " + res.getFailureMessage()); assertFalse(res.isFailure()); assertFalse(res.isError()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/gui/0000755000175000017500000000000012032647144021253 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/gui/util/0000755000175000017500000000000012165514773022240 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/gui/util/TestMenuFactory.java0000644000175000017500000000377712032647144026205 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import org.apache.jmeter.junit.JMeterTestCase; public final class TestMenuFactory extends JMeterTestCase { public TestMenuFactory() { super(); } public TestMenuFactory(String name) { super(name); } private static void check(String s, int i) throws Exception { assertFalse("The number of " + s + " should not be 0", 0 == i); } public void testMenu() throws Exception { check("menumap", MenuFactory.menuMap_size()); check("assertions", MenuFactory.assertions_size()); check("configElements", MenuFactory.configElements_size()); check("controllers", MenuFactory.controllers_size()); check("listeners", MenuFactory.listeners_size()); check("nonTestElements", MenuFactory.nonTestElements_size()); check("postProcessors", MenuFactory.postProcessors_size()); check("preProcessors", MenuFactory.preProcessors_size()); check("samplers", MenuFactory.samplers_size()); check("timers", MenuFactory.timers_size()); check("elementstoskip", MenuFactory.elementsToSkip_size()); } }apache-jmeter-2.8/test/src/org/apache/jmeter/gui/action/0000755000175000017500000000000012165514773022540 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/gui/action/PackageTest.java0000644000175000017500000000227112032647144025570 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import junit.framework.TestCase; public class PackageTest extends TestCase { public PackageTest(String arg0) { super(arg0); } //TODO add tests for SaveGraphics public void testSaveGraphics() throws Exception { } //TODO add tests for ReportSaveGraphics public void testReportSaveGraphics() throws Exception { } } apache-jmeter-2.8/test/src/org/apache/jmeter/gui/action/TestLoad.java0000644000175000017500000000757012032647144025123 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; import java.util.HashSet; import java.util.Set; import junit.framework.TestSuite; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.save.SaveService; import org.apache.jorphan.collections.HashTree; /** * * Test JMX files to check that they can be loaded OK. */ public class TestLoad extends JMeterTestCase { private static final String basedir = new File(System.getProperty("user.dir")).getParent(); private static final File testfiledir = new File(basedir,"bin/testfiles"); private static final File demofiledir = new File(basedir,"xdocs/demos"); private static final Set notTestPlan = new HashSet();// not full test plans static{ notTestPlan.add("load_bug_list.jmx");// used by TestAnchorModifier notTestPlan.add("Load_JMeter_Page.jmx");// used by TestAnchorModifier notTestPlan.add("ProxyServerTestPlan.jmx");// used by TestSaveService } private static final FilenameFilter jmxFilter = new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".jmx"); } }; private final File testFile; private final String parent; public TestLoad(String name) { super(name); testFile=null; parent=null; } public TestLoad(String name, File file, String dir) { super(name); testFile=file; parent=dir; } public static TestSuite suite(){ TestSuite suite=new TestSuite("Load Test"); //suite.addTest(new TestLoad("checkGuiPackage")); scanFiles(suite,testfiledir); scanFiles(suite,demofiledir); return suite; } private static void scanFiles(TestSuite suite, File parent) { File testFiles[]=parent.listFiles(jmxFilter); String dir = parent.getName(); for (int i=0; i 0)); assertTrue((input.getEndTimestamp() > input.getStartTimestamp())); assertTrue((input.getURLs().size() > 0)); log.info("URL count=" + input.getURLs().size()); java.util.ArrayList list = new java.util.ArrayList(); list.add(input); list.add(input2); list.add(input3); LineChart lgraph = new LineChart(); lgraph.setTitle("Sample Line Graph"); lgraph.setCaption("Sample"); lgraph.setName("Sample"); lgraph.setYAxis("milliseconds"); lgraph.setYLabel("Test Runs"); lgraph.setXAxis(AbstractTable.REPORT_TABLE_MAX); lgraph.setXLabel(AbstractChart.X_DATA_FILENAME_LABEL); lgraph.setURLs("jakarta_home,jmeter_home"); JComponent gr = lgraph.renderChart(list); assertNotNull(gr); SaveGraphicsService serv = new SaveGraphicsService(); String filename = lgraph.getTitle(); filename = filename.replace(' ','_'); if (!"true".equalsIgnoreCase(System.getProperty("java.awt.headless"))){ String outPfx = File.createTempFile(filename, null).getAbsolutePath(); // tweak. serv.saveJComponent(outPfx,SaveGraphicsService.PNG,gr); assertTrue("Should have created file",new File(outPfx+".png").exists()); } } } apache-jmeter-2.8/test/src/org/apache/jmeter/testelement/BarChartTest.java0000644000175000017500000000676012032647144026222 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.File; import java.io.IOException; import javax.swing.JComponent; import org.apache.jmeter.report.DataSet; import org.apache.jmeter.save.SaveGraphicsService; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class BarChartTest extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); /** * @param arg0 */ public BarChartTest(String arg0) { super(arg0); } public void testGenerateBarChart() throws IOException { log.info("jtl version=" + JMeterUtils.getProperty("file_format.testlog")); // String sampleLog = "C:/eclipse3/workspace/jmeter-21/bin/testfiles/sample_log1.jtl"; String sampleLog = findTestPath("testfiles/sample_log1.jtl"); String sampleLog2 = findTestPath("testfiles/sample_log1b.jtl"); String sampleLog3 = findTestPath("testfiles/sample_log1c.jtl"); JTLData input = new JTLData(); JTLData input2 = new JTLData(); JTLData input3 = new JTLData(); input.setDataSource(sampleLog); input.loadData(); input2.setDataSource(sampleLog2); input2.loadData(); input3.setDataSource(sampleLog3); input3.loadData(); assertTrue((input.getStartTimestamp() > 0)); assertTrue((input.getEndTimestamp() > input.getStartTimestamp())); assertTrue((input.getURLs().size() > 0)); log.info("URL count=" + input.getURLs().size()); java.util.ArrayList list = new java.util.ArrayList(); list.add(input); list.add(input2); list.add(input3); BarChart bchart = new BarChart(); bchart.setTitle("Sample Chart"); bchart.setCaption("Sample"); bchart.setName("Sample"); bchart.setYAxis("milliseconds"); bchart.setYLabel("Test Runs"); bchart.setXAxis(AbstractTable.REPORT_TABLE_90_PERCENT); bchart.setXLabel(AbstractChart.X_DATA_DATE_LABEL); bchart.setURL("jakarta_home"); JComponent gr = bchart.renderChart(list); assertNotNull(gr); SaveGraphicsService serv = new SaveGraphicsService(); String filename = bchart.getTitle(); filename = filename.replace(' ','_'); if (!"true".equalsIgnoreCase(System.getProperty("java.awt.headless"))){ String outName = File.createTempFile(filename, null).getAbsolutePath(); // tweak. serv.saveJComponent(outName,SaveGraphicsService.PNG,gr); assertTrue("Should have created the file",new File(outName+".png").exists()); } } } apache-jmeter-2.8/test/src/org/apache/jmeter/resources/0000755000175000017500000000000012165514773022511 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/resources/PackageTest.java0000644000175000017500000003543212032647145025547 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.resources; import java.io.BufferedReader; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.MissingResourceException; import java.util.Properties; import java.util.PropertyResourceBundle; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.jmeter.gui.util.JMeterMenuBar; import org.apache.jorphan.util.JOrphanUtils; /* * Created on Nov 29, 2003 * * Test the composition of the messages*.properties files * - properties files exist * - properties files don't have duplicate keys * - non-default properties files don't have any extra keys. * * N.B. If there is a default resource, ResourceBundle does not detect missing * resources, i.e. the presence of messages.properties means that the * ResourceBundle for Locale "XYZ" would still be found, and have the same keys * as the default. This makes it not very useful for checking properties files. * * This is why the tests use Class.getResourceAsStream() etc * * The tests don't quite follow the normal JUnit test strategy of one test per * possible failure. This was done in order to make it easier to report exactly * why the tests failed. */ public class PackageTest extends TestCase { private static final String basedir = new File(System.getProperty("user.dir")).getParent(); private static final File srcFiledir = new File(basedir,"src"); private static final String MESSAGES = "messages"; private static PropertyResourceBundle defaultPRB; private static final CharsetEncoder ASCII_ENCODER = Charset.forName("US-ASCII").newEncoder(); // Ensure properties files don't use special characters private static boolean isPureAscii(String v) { return ASCII_ENCODER.canEncode(v); } // Read resource into ResourceBundle and store in List private PropertyResourceBundle getRAS(String res) throws Exception { InputStream ras = this.getClass().getResourceAsStream(res); if (ras == null){ return null; } return new PropertyResourceBundle(ras); } private static final Object[] DUMMY_PARAMS = new Object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; // Read resource file saving the keys private int readRF(String res, List l) throws Exception { int fails = 0; InputStream ras = this.getClass().getResourceAsStream(res); if (ras==null){ if (MESSAGES.equals(resourcePrefix)|| lang.length() == 0 ){ throw new IOException("Cannot open resource file "+res); } else { return 0; } } BufferedReader fileReader = null; try { fileReader = new BufferedReader(new InputStreamReader(ras)); String s; while ((s = fileReader.readLine()) != null) { if (s.length() > 0 && !s.startsWith("#") && !s.startsWith("!")) { int equ = s.indexOf('='); String key = s.substring(0, equ); if (resourcePrefix.equals(MESSAGES)){// Only relevant for messages /* * JMeterUtils.getResString() converts space to _ and lowercases * the key, so make sure all keys pass the test */ if ((key.indexOf(' ') >= 0) || !key.toLowerCase(java.util.Locale.ENGLISH).equals(key)) { System.out.println("Invalid key for JMeterUtils " + key); fails++; } } String val = s.substring(equ + 1); l.add(key); // Store the key /* * Now check for invalid message format: if string contains {0} * and ' there may be a problem, so do a format with dummy * parameters and check if there is a { in the output. A bit * crude, but should be enough for now. */ if (val.indexOf("{0}") > 0 && val.indexOf('\'') > 0) { String m = java.text.MessageFormat.format(val, DUMMY_PARAMS); if (m.indexOf('{') > 0) { fails++; System.out.println("Incorrect message format ? (input/output) for: "+key); System.out.println(val); System.out.println(m); } } if (!isPureAscii(val)) { fails++; System.out.println("Incorrect char value in: "+s); } } } return fails; } finally { JOrphanUtils.closeQuietly(fileReader); } } // Helper method to construct resource name private String getResName(String lang) { if (lang.length() == 0) { return resourcePrefix+".properties"; } else { return resourcePrefix+"_" + lang + ".properties"; } } private void check(String resname) throws Exception { check(resname, true);// check that there aren't any extra entries } /* * perform the checks on the resources * */ private void check(String resname, boolean checkUnexpected) throws Exception { ArrayList alf = new ArrayList(500);// holds keys from file String res = getResName(resname); subTestFailures += readRF(res, alf); Collections.sort(alf); // Look for duplicate keys in the file String last = ""; for (int i = 0; i < alf.size(); i++) { String curr = alf.get(i); if (curr.equals(last)) { subTestFailures++; System.out.println("\nDuplicate key =" + curr + " in " + res); } last = curr; } if (resname.length() == 0) // Must be the default resource file { defaultPRB = getRAS(res); if (defaultPRB == null){ throw new IOException("Could not find required file: "+res); } } else if (checkUnexpected) { // Check all the keys are in the default props file PropertyResourceBundle prb = getRAS(res); if (prb == null){ return; } final ArrayList list = Collections.list(prb.getKeys()); Collections.sort(list); final boolean mainResourceFile = resname.startsWith("messages"); for (String key : list) { try { String val = defaultPRB.getString(key); // Also Check key is in default if (mainResourceFile && val.equals(prb.getString(key))){ System.out.println("Duplicate value? "+key+"="+val+" in "+res); subTestFailures++; } } catch (MissingResourceException e) { subTestFailures++; System.out.println(resourcePrefix + "_" + resname + " has unexpected key: " + key); } } } if (subTestFailures > 0) { fail("One or more subtests failed"); } } private static final String[] prefixList = getResources(srcFiledir); /** * Find I18N resources in classpath * @param srcFiledir * @return list of properties files subject to I18N */ public static final String[] getResources(File srcFiledir) { Set set = new TreeSet(); findFile(srcFiledir, set, new FilenameFilter() { public boolean accept(File dir, String name) { return new File(dir, name).isDirectory() || ( name.equals("messages.properties") || (name.endsWith("Resources.properties") && !name.matches("Example\\d+Resources\\.properties"))); } }); return set.toArray(new String[set.size()]); } /** * Find resources matching filenamefiler and adds them to set removing everything before "/org" * @param file * @param set * @param filenameFilter */ private static void findFile(File file, Set set, FilenameFilter filenameFilter) { File[] foundFiles = file.listFiles(filenameFilter); for (File file2 : foundFiles) { if(file2.isDirectory()) { findFile(file2, set, filenameFilter); } else { String absPath2 = file2.getAbsolutePath().replace('\\', '/'); // Fix up Windows paths int indexOfOrg = absPath2.indexOf("/org"); int lastIndex = absPath2.lastIndexOf('.'); set.add(absPath2.substring(indexOfOrg, lastIndex)); } } } /* * Use a suite to ensure that the default is done first */ public static Test suite() { TestSuite ts = new TestSuite("Resources PackageTest"); String languages[] = JMeterMenuBar.getLanguages(); for(String prefix : prefixList){ TestSuite pfx = new TestSuite(prefix) ; pfx.addTest(new PackageTest("testLang","", prefix)); // load the default resource for(String language : languages){ if (!"en".equals(language)){ // Don't try to check the default language pfx.addTest(new PackageTest("testLang", language, prefix)); } } ts.addTest(pfx); } ts.addTest(new PackageTest("checkI18n", "fr")); // TODO Add these some day // ts.addTest(new PackageTest("checkI18n", "es")); // ts.addTest(new PackageTest("checkI18n", "pl")); // ts.addTest(new PackageTest("checkI18n", "pt_BR")); // ts.addTest(new PackageTest("checkI18n", "tr")); // ts.addTest(new PackageTest("checkI18n", Locale.JAPANESE.toString())); // ts.addTest(new PackageTest("checkI18n", Locale.SIMPLIFIED_CHINESE.toString())); // ts.addTest(new PackageTest("checkI18n", Locale.TRADITIONAL_CHINESE.toString())); return ts; } private int subTestFailures; private final String lang; private final String resourcePrefix; // e.g. "messages" public PackageTest(String testName, String _lang) { this(testName, _lang, MESSAGES); } public PackageTest(String testName, String _lang, String propName) { super(testName); lang=_lang; subTestFailures = 0; resourcePrefix = propName; } public void testLang() throws Exception{ check(lang); } /** * Check all messages are available in one language * @throws Exception */ public void checkI18n() throws Exception { Map> missingLabelsPerBundle = new HashMap>(); for (String prefix : prefixList) { Properties messages = new Properties(); messages.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(prefix.substring(1)+".properties")); checkMessagesForLanguage( missingLabelsPerBundle , missingLabelsPerBundle, messages,prefix.substring(1), lang); } assertEquals(missingLabelsPerBundle.size()+" missing labels, labels missing:"+printLabels(missingLabelsPerBundle), 0, missingLabelsPerBundle.size()); } /** * Check messages are available in language * @param missingLabelsPerBundle2 * @param missingLabelsPerBundle * @param messages Properties messages in english * @param language Language * @throws IOException */ private void checkMessagesForLanguage(Map> missingLabelsPerBundle, Map> missingLabelsPerBundle2, Properties messages, String bundlePath,String language) throws IOException { Properties messagesFr = new Properties(); String languageBundle = bundlePath+"_"+language+ ".properties"; InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(languageBundle); if(inputStream == null) { Map messagesAsProperties = new HashMap(); for (Iterator> iterator = messages.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = iterator.next(); messagesAsProperties.put((String) entry.getKey(), (String) entry.getValue()); } missingLabelsPerBundle.put(languageBundle, messagesAsProperties); return; } messagesFr.load(inputStream); Map missingLabels = new TreeMap(); for (Iterator> iterator = messages.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = iterator.next(); String key = (String)entry.getKey(); if(!messagesFr.containsKey(key)) { missingLabels.put(key,(String) entry.getValue()); } } if(!missingLabels.isEmpty()) { missingLabelsPerBundle.put(languageBundle, missingLabels); } } /** * Build message with misssing labels per bundle * @param missingLabelsPerBundle * @return String */ private String printLabels(Map> missingLabelsPerBundle) { StringBuilder builder = new StringBuilder(); for (Iterator>> iterator = missingLabelsPerBundle.entrySet().iterator(); iterator.hasNext();) { Map.Entry> entry = iterator.next(); builder.append("Missing labels in bundle:"+entry.getKey()+"\r\n"); for (Iterator> it2 = entry.getValue().entrySet().iterator(); it2.hasNext();) { Map.Entry entry2 = it2.next(); builder.append(entry2.getKey()+"="+entry2.getValue()+"\r\n"); } builder.append("======================================================\r\n"); } return builder.toString(); } } apache-jmeter-2.8/test/src/org/apache/jmeter/monitor/0000755000175000017500000000000012032647144022156 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/monitor/model/0000755000175000017500000000000012165514773023266 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/monitor/model/TestObjectFactory.java0000644000175000017500000000470212032647144027522 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; import java.util.List; import org.apache.commons.io.FileUtils; import org.apache.jmeter.junit.JMeterTestCase; public class TestObjectFactory extends JMeterTestCase { private ObjectFactory of; private Status status; @Override public void setUp(){ of = ObjectFactory.getInstance(); } public void testStatus() throws Exception { status = of.parseString(""); assertNotNull(status); } public void testNoStatus() throws Exception { status = of.parseString(""); assertNull(status); } public void testFileData() throws Exception { byte[] bytes= FileUtils.readFileToByteArray(findTestFile("testfiles/monitorStatus.xml")); status = of.parseBytes(bytes); checkResult(); } public void testStringData() throws Exception { String content = FileUtils.readFileToString(findTestFile("testfiles/monitorStatus.xml")); status = of.parseString(content); checkResult(); } private void checkResult(){ assertNotNull(status); final Jvm jvm = status.getJvm(); assertNotNull(jvm); final Memory memory = jvm.getMemory(); assertNotNull(memory); assertEquals(10807352, memory.getFree()); assertEquals(16318464, memory.getTotal()); assertEquals(259522560, memory.getMax()); final List connector = status.getConnector(); assertNotNull(connector); assertEquals(2, connector.size()); Connector conn = connector.get(0); assertEquals(200, conn.getThreadInfo().getMaxThreads()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/monitor/model/benchmark/0000755000175000017500000000000012165514773025220 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/monitor/model/benchmark/ParseBenchmark.java0000644000175000017500000000776412032647144030756 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model.benchmark; import org.apache.commons.io.IOUtils; public class ParseBenchmark { /** * */ public ParseBenchmark() { super(); } public static void main(String[] args) { if (args.length == 3) { int parser = 0; String file = null; int loops = 1000; if (args[0] != null) { if (!args[0].equals("jaxb")) { parser = 1; } } if (args[1] != null) { file = args[1]; } if (args[2] != null) { loops = Integer.parseInt(args[2]); } java.io.File infile = new java.io.File(file); java.io.FileInputStream fis = null; java.io.InputStreamReader isr = null; java.io.BufferedReader br = null; StringBuilder buf = new StringBuilder(); try { fis = new java.io.FileInputStream(infile); isr = new java.io.InputStreamReader(fis); br = new java.io.BufferedReader(isr); String line = null; while ((line = br.readLine()) != null) { buf.append(line); } } catch (Exception e) { e.printStackTrace(); } finally { IOUtils.closeQuietly(br); IOUtils.closeQuietly(isr); IOUtils.closeQuietly(fis); } long start = 0; long end = 0; String contents = buf.toString().trim(); System.out.println("start test: " + loops + " iterations"); System.out.println("content:"); System.out.println(contents); if (parser == 0) { /** * try { JAXBContext jxbc = new * org.apache.jorphan.tomcat.manager.ObjectFactory(); * Unmarshaller mar = jxbc.createUnmarshaller(); * * start = System.currentTimeMillis(); for (int idx=0; idx < * loops; idx++){ StreamSource ss = new StreamSource( new * ByteArrayInputStream(contents.getBytes())); Object ld = * mar.unmarshal(ss); } end = System.currentTimeMillis(); * System.out.println("elapsed Time: " + (end - start)); } catch * (JAXBException e){ } */ } else { org.apache.jmeter.monitor.model.ObjectFactory of = org.apache.jmeter.monitor.model.ObjectFactory .getInstance(); start = System.currentTimeMillis(); for (int idx = 0; idx < loops; idx++) { // NOTUSED org.apache.jmeter.monitor.model.Status st = of.parseBytes(contents.getBytes()); // TODO - charset? } end = System.currentTimeMillis(); System.out.println("elapsed Time: " + (end - start)); } } else { System.out.println("missing paramters:"); System.out.println("parser file iterations"); System.out.println("example: jaxb status.xml 1000"); } } } apache-jmeter-2.8/test/src/org/apache/jmeter/extractor/0000755000175000017500000000000012165514773022512 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/extractor/TestXPathExtractor.java0000644000175000017500000002127512032647145027135 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor; import java.io.UnsupportedEncodingException; import junit.framework.TestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestXPathExtractor extends TestCase { private XPathExtractor extractor; private SampleResult result; private String data; private JMeterVariables vars; public TestXPathExtractor(String name) { super(name); } private JMeterContext jmctx; private static final String VAL_NAME = "value"; private static final String VAL_NAME_NR = "value_matchNr"; @Override public void setUp() throws UnsupportedEncodingException { jmctx = JMeterContextService.getContext(); extractor = new XPathExtractor(); extractor.setThreadContext(jmctx);// This would be done by the run command extractor.setRefName(VAL_NAME); extractor.setDefaultValue("Default"); result = new SampleResult(); data = "zeroonetwo"; result.setResponseData(data.getBytes("UTF-8")); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); } public void testAttributeExtraction() throws Exception { extractor.setXPathQuery("/book/preface/@title"); extractor.process(); assertEquals("Intro", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("Intro", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); extractor.setXPathQuery("/book/preface[@title]"); extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); extractor.setXPathQuery("/book/preface[@title='Intro']"); extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); extractor.setXPathQuery("/book/preface[@title='xyz']"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("0", vars.get(VAL_NAME_NR)); assertNull(vars.get(VAL_NAME+"_1")); } public void testVariableExtraction() throws Exception { extractor.setXPathQuery("/book/preface"); extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); extractor.setXPathQuery("/book/page"); extractor.process(); assertEquals("one", vars.get(VAL_NAME)); assertEquals("2", vars.get(VAL_NAME_NR)); assertEquals("one", vars.get(VAL_NAME+"_1")); assertEquals("two", vars.get(VAL_NAME+"_2")); assertNull(vars.get(VAL_NAME+"_3")); extractor.setXPathQuery("/book/page[2]"); extractor.process(); assertEquals("two", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("two", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); assertNull(vars.get(VAL_NAME+"_3")); extractor.setXPathQuery("/book/index"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("0", vars.get(VAL_NAME_NR)); assertNull(vars.get(VAL_NAME+"_1")); // Has child, but child is empty extractor.setXPathQuery("/book/a"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertNull(vars.get(VAL_NAME+"_1")); // Has no child extractor.setXPathQuery("/book/empty"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertNull(vars.get(VAL_NAME+"_1")); // No text extractor.setXPathQuery("//a"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); // Test fragment extractor.setXPathQuery("/book/page[2]"); extractor.setFragment(true); extractor.process(); assertEquals("two", vars.get(VAL_NAME)); // Now get its text extractor.setXPathQuery("/book/page[2]/text()"); extractor.process(); assertEquals("two", vars.get(VAL_NAME)); // No text, but using fragment mode extractor.setXPathQuery("//a"); extractor.process(); assertEquals("", vars.get(VAL_NAME)); } public void testScope(){ extractor.setXPathQuery("/book/preface"); extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); extractor.setScopeChildren(); // There aren't any extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("0", vars.get(VAL_NAME_NR)); assertNull(vars.get(VAL_NAME+"_1")); extractor.setScopeAll(); // same as Parent extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); // Try to get data from subresult result.sampleStart(); // Needed for addSubResult() result.sampleEnd(); SampleResult subResult = new SampleResult(); subResult.sampleStart(); subResult.setResponseData(result.getResponseData()); subResult.sampleEnd(); result.addSubResult(subResult); // Get data from both extractor.setScopeAll(); extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("2", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertEquals("zero", vars.get(VAL_NAME+"_2")); assertNull(vars.get(VAL_NAME+"_3")); // get data from child extractor.setScopeChildren(); extractor.process(); assertEquals("zero", vars.get(VAL_NAME)); assertEquals("1", vars.get(VAL_NAME_NR)); assertEquals("zero", vars.get(VAL_NAME+"_1")); assertNull(vars.get(VAL_NAME+"_2")); } public void testInvalidXpath() throws Exception { extractor.setXPathQuery("<"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("0", vars.get(VAL_NAME_NR)); } public void testInvalidDocument() throws Exception { result.setResponseData("", null); extractor.setXPathQuery("<"); extractor.process(); assertEquals("Default", vars.get(VAL_NAME)); assertEquals("0", vars.get(VAL_NAME_NR)); } } apache-jmeter-2.8/test/src/org/apache/jmeter/extractor/TestRegexExtractor.java0000644000175000017500000004403112032647145027156 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor; import java.net.URL; import junit.framework.TestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestRegexExtractor extends TestCase { private RegexExtractor extractor; private SampleResult result; private JMeterVariables vars; public TestRegexExtractor(String name) { super(name); } private JMeterContext jmctx; @Override public void setUp() { jmctx = JMeterContextService.getContext(); extractor = new RegexExtractor(); extractor.setThreadContext(jmctx);// This would be done by the run // command extractor.setRefName("regVal"); result = new SampleResult(); String data = "" + "" + "LIS_OK" + "" + "" + "" + "0" + "1" + "" + "5" + "" + "6" + "" + "" + ""; result.setResponseData(data, null); result.setResponseHeaders("Header1: Value1\nHeader2: Value2"); result.setResponseCode("abcd"); result.setResponseMessage("The quick brown fox"); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); } public void testVariableExtraction0() throws Exception { extractor.setRegex("<(value) field=\""); extractor.setTemplate("$1$"); extractor.setMatchNumber(0); extractor.process(); assertEquals("value", vars.get("regVal")); } public void testVariableExtraction() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$2$"); extractor.setMatchNumber(2); extractor.process(); assertEquals("5", vars.get("regVal")); assertEquals("pinposition2", vars.get("regVal_g1")); assertEquals("5", vars.get("regVal_g2")); assertEquals("5", vars.get("regVal_g0")); assertNull(vars.get("regVal_g3")); assertEquals("2",vars.get("regVal_g")); } private static void templateSetup(RegexExtractor rex, String tmp) { rex.setRegex(""); rex.setMatchNumber(1); rex.setTemplate(tmp); rex.process(); } public void testTemplate1() throws Exception { templateSetup(extractor, ""); assertEquals("", vars.get("regVal_g0")); assertEquals("xmlext", vars.get("regVal_g1")); assertEquals("query", vars.get("regVal_g2")); assertEquals("ret", vars.get("regVal_g3")); assertEquals("", vars.get("regVal")); assertEquals("3",vars.get("regVal_g")); } public void testTemplate2() throws Exception { templateSetup(extractor, "ABC"); assertEquals("ABC", vars.get("regVal")); } public void testTemplate3() throws Exception { templateSetup(extractor, "$2$"); assertEquals("query", vars.get("regVal")); } public void testTemplate4() throws Exception { templateSetup(extractor, "PRE$2$"); assertEquals("PREquery", vars.get("regVal")); } public void testTemplate5() throws Exception { templateSetup(extractor, "$2$POST"); assertEquals("queryPOST", vars.get("regVal")); } public void testTemplate6() throws Exception { templateSetup(extractor, "$2$$1$"); assertEquals("queryxmlext", vars.get("regVal")); } public void testTemplate7() throws Exception { templateSetup(extractor, "$2$MID$1$"); assertEquals("queryMIDxmlext", vars.get("regVal")); } public void testVariableExtraction2() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$1$"); extractor.setMatchNumber(3); extractor.process(); assertEquals("pinposition3", vars.get("regVal")); } public void testVariableExtraction6() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$2$"); extractor.setMatchNumber(4); extractor.setDefaultValue("default"); extractor.process(); assertEquals("default", vars.get("regVal")); } public void testVariableExtraction3() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("_$1$"); extractor.setMatchNumber(2); extractor.process(); assertEquals("_pinposition2", vars.get("regVal")); } public void testVariableExtraction5() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$1$"); extractor.setMatchNumber(1);// Set up the non-wild variables extractor.process(); assertNotNull(vars.get("regVal")); assertEquals("2",vars.get("regVal_g")); assertNotNull(vars.get("regVal_g0")); assertNotNull(vars.get("regVal_g1")); assertNotNull(vars.get("regVal_g2")); extractor.setMatchNumber(-1); extractor.process(); assertNotNull(vars.get("regVal"));// Should not clear this? assertNull(vars.get("regVal_g")); assertNull(vars.get("regVal_g1")); assertNull(vars.get("regVal_g2")); assertEquals("3", vars.get("regVal_matchNr")); assertEquals("pinposition1", vars.get("regVal_1")); assertEquals("pinposition2", vars.get("regVal_2")); assertEquals("pinposition3", vars.get("regVal_3")); assertEquals("2", vars.get("regVal_1_g")); assertEquals("pinposition1", vars.get("regVal_1_g1")); assertEquals("1", vars.get("regVal_1_g2")); assertEquals("6", vars.get("regVal_3_g2")); assertEquals("1", vars.get("regVal_1_g0")); assertNull(vars.get("regVal_4")); // Check old values don't hang around: extractor.setRegex("(\\w+)count"); // fewer matches extractor.process(); assertEquals("2", vars.get("regVal_matchNr")); assertEquals("position", vars.get("regVal_1")); assertEquals("1", vars.get("regVal_1_g")); assertEquals("position", vars.get("regVal_1_g1")); assertNull("Unused variables should be null", vars.get("regVal_1_g2")); assertEquals("invalidpin", vars.get("regVal_2")); assertEquals("1", vars.get("regVal_2_g")); assertEquals("invalidpin", vars.get("regVal_2_g1")); assertNull("Unused variables should be null", vars.get("regVal_2_g2")); assertEquals("1", vars.get("regVal_1_g")); assertNull("Unused variables should be null", vars.get("regVal_3")); assertNull("Unused variables should be null", vars.get("regVal_3_g")); assertNull("Unused variables should be null", vars.get("regVal_3_g0")); assertNull("Unused variables should be null", vars.get("regVal_3_g1")); assertNull("Unused variables should be null", vars.get("regVal_3_g2")); // Check when match fails extractor.setRegex("xxxx(.)(.)"); extractor.process(); assertEquals("0", vars.get("regVal_matchNr")); assertNull("Unused variables should be null", vars.get("regVal_1")); assertNull("Unused variables should be null", vars.get("regVal_1_g0")); assertNull("Unused variables should be null", vars.get("regVal_1_g1")); assertNull("Unused variables should be null", vars.get("regVal_1_g2")); } public void testVariableExtraction7() throws Exception { extractor.setRegex("Header1: (\\S+)"); extractor.setTemplate("$1$"); extractor.setMatchNumber(1); assertTrue("useBody should be true", extractor.useBody()); assertFalse("useHdrs should be false", extractor.useHeaders()); assertFalse("useURL should be false", extractor.useUrl()); extractor.setUseField(RegexExtractor.USE_BODY); assertTrue("useBody should be true", extractor.useBody()); assertFalse("useHdrs should be false", extractor.useHeaders()); assertFalse("useURL should be false", extractor.useUrl()); extractor.setUseField(RegexExtractor.USE_HDRS); assertTrue("useHdrs should be true", extractor.useHeaders()); assertFalse("useBody should be false", extractor.useBody()); assertFalse("useURL should be false", extractor.useUrl()); extractor.process(); assertEquals("Value1", vars.get("regVal")); extractor.setUseField(RegexExtractor.USE_URL); assertFalse("useHdrs should be false", extractor.useHeaders()); assertFalse("useBody should be false", extractor.useBody()); assertTrue("useURL should be true", extractor.useUrl()); } public void testVariableExtraction8() throws Exception { extractor.setRegex("http://jakarta\\.apache\\.org/(\\w+)"); extractor.setTemplate("$1$"); extractor.setMatchNumber(1); extractor.setUseField(RegexExtractor.USE_URL); assertFalse("useHdrs should be false", extractor.useHeaders()); assertFalse("useBody should be false", extractor.useBody()); assertTrue("useURL should be true", extractor.useUrl()); extractor.process(); assertNull(vars.get("regVal")); result.setURL(new URL("http://jakarta.apache.org/index.html?abcd")); extractor.process(); assertEquals("index",vars.get("regVal")); } public void testVariableExtraction9() throws Exception { extractor.setRegex("(\\w+)"); extractor.setTemplate("$1$"); extractor.setMatchNumber(1); extractor.setUseField(RegexExtractor.USE_CODE); assertFalse("useHdrs should be false", extractor.useHeaders()); assertFalse("useBody should be false", extractor.useBody()); assertFalse("useURL should be false", extractor.useUrl()); assertFalse("useMessage should be false", extractor.useMessage()); assertTrue("useCode should be true", extractor.useCode()); extractor.process(); assertEquals("abcd",vars.get("regVal")); extractor.setUseField(RegexExtractor.USE_MESSAGE); assertFalse("useHdrs should be false", extractor.useHeaders()); assertFalse("useBody should be false", extractor.useBody()); assertFalse("useURL should be false", extractor.useUrl()); assertTrue("useMessage should be true", extractor.useMessage()); assertFalse("useCode should be falsee", extractor.useCode()); extractor.setMatchNumber(3); extractor.process(); assertEquals("brown",vars.get("regVal")); } public void testNoDefault() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$2$"); extractor.setMatchNumber(4); //extractor.setDefaultValue("default"); vars.put("regVal", "initial"); assertEquals("initial", vars.get("regVal")); extractor.process(); assertEquals("initial", vars.get("regVal")); } public void testDefault() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$2$"); extractor.setMatchNumber(999); extractor.setDefaultValue("default"); vars.put("regVal", "initial"); assertEquals("initial", vars.get("regVal")); extractor.process(); assertEquals("default", vars.get("regVal")); assertNull(vars.get("regVal_g0")); assertNull(vars.get("regVal_g1")); } public void testStaleVariables() throws Exception { extractor.setRegex("(\\d+)"); extractor.setTemplate("$2$"); extractor.setMatchNumber(1); extractor.setDefaultValue("default"); extractor.process(); assertEquals("1", vars.get("regVal")); assertEquals("1", vars.get("regVal_g2")); assertEquals("2", vars.get("regVal_g")); assertNotNull(vars.get("regVal_g0")); assertNotNull(vars.get("regVal_g1")); // Now rerun with match fail extractor.setMatchNumber(10); extractor.process(); assertEquals("default", vars.get("regVal")); assertNull(vars.get("regVal_g0")); assertNull(vars.get("regVal_g1")); assertNull(vars.get("regVal_g")); } public void testScope1() throws Exception { result.setResponseData("ONE", "ISO-8859-1"); extractor.setScopeParent(); extractor.setTemplate("$1$"); extractor.setMatchNumber(1); extractor.setRegex("([^<]+)<"); extractor.setDefaultValue("NOTFOUND"); extractor.process(); assertEquals("ONE", vars.get("regVal")); extractor.setScopeAll(); extractor.process(); assertEquals("ONE", vars.get("regVal")); extractor.setScopeChildren(); extractor.process(); assertEquals("NOTFOUND", vars.get("regVal")); } public void testScope2() throws Exception { result.sampleStart(); result.setResponseData("<title>PARENT", "ISO-8859-1"); result.sampleEnd(); SampleResult child1 = new SampleResult(); child1.sampleStart(); child1.setResponseData("ONE", "ISO-8859-1"); child1.sampleEnd(); result.addSubResult(child1); SampleResult child2 = new SampleResult(); child2.sampleStart(); child2.setResponseData("TWO", "ISO-8859-1"); child2.sampleEnd(); result.addSubResult(child2); SampleResult child3 = new SampleResult(); child3.sampleStart(); child3.setResponseData("THREE", "ISO-8859-1"); child3.sampleEnd(); result.addSubResult(child3); extractor.setScopeParent(); extractor.setTemplate("$1$"); extractor.setMatchNumber(1); extractor.setRegex("([^<]+)<"); extractor.setDefaultValue("NOTFOUND"); extractor.process(); assertEquals("PARENT", vars.get("regVal")); extractor.setScopeAll(); extractor.setMatchNumber(3); extractor.process(); assertEquals("TWO", vars.get("regVal")); extractor.setScopeChildren(); extractor.process(); assertEquals("THREE", vars.get("regVal")); extractor.setRegex(">(...)<"); extractor.setScopeAll(); extractor.setMatchNumber(2); extractor.process(); assertEquals("TWO", vars.get("regVal")); // Match all extractor.setRegex("<title>([^<]+)<"); extractor.setMatchNumber(-1); extractor.setScopeParent(); extractor.process(); assertEquals("1", vars.get("regVal_matchNr")); extractor.setScopeAll(); extractor.process(); assertEquals("4", vars.get("regVal_matchNr")); extractor.setScopeChildren(); extractor.process(); assertEquals("3", vars.get("regVal_matchNr")); // Check random number extractor.setMatchNumber(0); extractor.setScopeParent(); extractor.process(); assertEquals("PARENT", vars.get("regVal")); extractor.setRegex("(<title>)"); extractor.setScopeAll(); extractor.process(); assertEquals("<title>", vars.get("regVal")); extractor.setScopeChildren(); extractor.process(); assertEquals("<title>", vars.get("regVal")); extractor.setRegex("<title>(...)<"); extractor.setScopeAll(); extractor.process(); final String found = vars.get("regVal"); assertTrue(found.equals("ONE") || found.equals("TWO")); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/engine/������������������������������������������������0000755�0001750�0001750�00000000000�12165514773�021744� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/engine/util/�������������������������������������������0000755�0001750�0001750�00000000000�12165514773�022721� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/engine/util/PackageTest.java���������������������������0000644�0001750�0001750�00000025232�12032647144�025753� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Jul 25, 2003 */ package org.apache.jmeter.engine.util; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; /* * To run this test stand-alone, ensure that ApacheJMeter_functions.jar is on the classpath, * as it is needed to resolve the functions. */ public class PackageTest extends JMeterTestCase { private ReplaceStringWithFunctions transformer; public PackageTest(String arg0) { super(arg0); } private JMeterContext jmctx = null; @Override public void setUp() { jmctx = JMeterContextService.getContext(); Map<String, String> variables = new HashMap<String, String>(); variables.put("my_regex", ".*"); variables.put("server", "jakarta.apache.org"); SampleResult result = new SampleResult(); result.setResponseData("<html>hello world</html> costs: $3.47,$5.67", null); transformer = new ReplaceStringWithFunctions(new CompoundVariable(), variables); jmctx.setVariables(new JMeterVariables()); jmctx.setSamplingStarted(true); jmctx.setPreviousResult(result); jmctx.getVariables().put("server", "jakarta.apache.org"); jmctx.getVariables().put("my_regex", ".*"); } public void testFunctionParse1() throws Exception { StringProperty prop = new StringProperty("date", "${__javaScript((new Date().getDate() / 100).toString()." + "substr(${__javaScript(1+1,d\\,ay)}\\,2),heute)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); newProp.recoverRunningVersion(null); assertTrue(Integer.parseInt(newProp.getStringValue()) > -1); assertEquals("2", jmctx.getVariables().getObject("d,ay")); } public void testParseExample1() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(<html>(.*)</html>,$1$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("hello world", newProp.getStringValue()); } public void testParseExample2() throws Exception { StringProperty prop = new StringProperty("html", "It should say:\\${${__regexFunction(<html>(.*)</html>,$1$)}}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("It should say:${hello world}", newProp.getStringValue()); } public void testParseExample3() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(<html>(.*)</html>,$1$)}" + "${__regexFunction(<html>(.*o)(.*o)(.*)</html>," + "$1$$3$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("hello worldhellorld", newProp.getStringValue()); } public void testParseExample4() throws Exception { StringProperty prop = new StringProperty("html", "${non-existing function}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("${non-existing function}", newProp.getStringValue()); } public void testParseExample6() throws Exception { StringProperty prop = new StringProperty("html", "${server}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("jakarta.apache.org", newProp.getStringValue()); } public void testParseExample5() throws Exception { StringProperty prop = new StringProperty("html", ""); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.StringProperty", newProp.getClass().getName()); assertEquals("", newProp.getStringValue()); } public void testParseExample7() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(\\<([a-z]*)\\>,$1$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("html", newProp.getStringValue()); } public void testParseExample8() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction((\\\\$\\d+\\.\\d+),$1$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("$3.47", newProp.getStringValue()); } public void testParseExample9() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(([$]\\d+\\.\\d+),$1$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("$3.47", newProp.getStringValue()); } public void testParseExample10() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(\\ " + "(\\\\\\$\\d+\\.\\d+\\,\\\\$\\d+\\.\\d+),$1$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("$3.47,$5.67", newProp.getStringValue()); } // Escaped dollar commma and backslash with no variable reference public void testParseExample11() throws Exception { StringProperty prop = new StringProperty("html", "\\$a \\, \\\\ \\x \\ jakarta.apache.org"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.StringProperty", newProp.getClass().getName()); assertEquals("\\$a \\, \\\\ \\x \\ jakarta.apache.org", newProp.getStringValue()); } // N.B. See Bug 46831 which wanted to changed the behaviour of \$ // It's too late now, as this would invalidate some existing test plans, // so document the current behaviour with some more tests. // Escaped dollar commma and backslash with variable reference public void testParseExample12() throws Exception { StringProperty prop = new StringProperty("html", "\\$a \\, \\\\ \\x \\ ${server} \\$b \\, \\\\ cd"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); // N.B. Backslashes are removed before dollar, comma and backslash assertEquals("$a , \\ \\x \\ jakarta.apache.org $b , \\ cd", newProp.getStringValue()); } // Escaped dollar commma and backslash with missing variable reference public void testParseExample13() throws Exception { StringProperty prop = new StringProperty("html", "\\$a \\, \\\\ \\x \\ ${missing} \\$b \\, \\\\ cd"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); // N.B. Backslashes are removed before dollar, comma and backslash assertEquals("$a , \\ \\x \\ ${missing} $b , \\ cd", newProp.getStringValue()); } // Escaped dollar commma and backslash with missing function reference public void testParseExample14() throws Exception { StringProperty prop = new StringProperty("html", "\\$a \\, \\\\ \\x \\ ${__missing(a)} \\$b \\, \\\\ cd"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); // N.B. Backslashes are removed before dollar, comma and backslash assertEquals("$a , \\ \\x \\ ${__missing(a)} $b , \\ cd", newProp.getStringValue()); } public void testNestedExample1() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(<html>(${my_regex})</html>," + "$1$)}${__regexFunction(<html>(.*o)(.*o)(.*)" + "</html>,$1$$3$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("hello worldhellorld", newProp.getStringValue()); } public void testNestedExample2() throws Exception { StringProperty prop = new StringProperty("html", "${__regexFunction(<html>(${my_regex})</html>,$1$)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); assertEquals("org.apache.jmeter.testelement.property.FunctionProperty", newProp.getClass().getName()); assertEquals("hello world", newProp.getStringValue()); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/engine/util/TestValueReplacer.java���������������������0000644�0001750�0001750�00000013240�12032647144�027146� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.util; import java.util.ArrayList; import java.util.List; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestValueReplacer extends JMeterTestCase { private TestPlan variables; public TestValueReplacer(String name) { super(name); } /** {@inheritDoc} */ @Override public void setUp() { variables = new TestPlan(); variables.addParameter("server", "jakarta.apache.org"); variables.addParameter("username", "jack"); // The following used to be jacks_password, but the Arguments class uses // HashMap for which the order is not defined. variables.addParameter("password", "his_password"); variables.addParameter("regex", ".*"); JMeterVariables vars = new JMeterVariables(); vars.put("server", "jakarta.apache.org"); JMeterContextService.getContext().setVariables(vars); JMeterContextService.getContext().setSamplingStarted(true); } public void testReverseReplacement() throws Exception { ValueReplacer replacer = new ValueReplacer(variables); assertTrue(variables.getUserDefinedVariables().containsKey("server")); assertTrue(replacer.containsKey("server")); TestElement element = new TestPlan(); element.setProperty(new StringProperty("domain", "jakarta.apache.org")); List<Object> argsin = new ArrayList<Object>(); argsin.add("username is jack"); argsin.add("his_password"); element.setProperty(new CollectionProperty("args", argsin)); replacer.reverseReplace(element); assertEquals("${server}", element.getPropertyAsString("domain")); @SuppressWarnings("unchecked") List<JMeterProperty> args = (List<JMeterProperty>) element.getProperty("args").getObjectValue(); assertEquals("username is ${username}", args.get(0).getStringValue()); assertEquals("${password}", args.get(1).getStringValue()); } public void testReplace() throws Exception { ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(variables.getUserDefinedVariables()); TestElement element = new ConfigTestElement(); element.setProperty(new StringProperty("domain", "${server}")); replacer.replaceValues(element); //log.debug("domain property = " + element.getProperty("domain")); element.setRunningVersion(true); assertEquals("jakarta.apache.org", element.getPropertyAsString("domain")); } public void testReplaceStringWithBackslash() throws Exception { ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(variables.getUserDefinedVariables()); TestElement element = new ConfigTestElement(); String input = "\\${server} \\ \\\\ \\\\\\ \\, "; element.setProperty(new StringProperty("domain", input)); replacer.replaceValues(element); //log.debug("domain property = " + element.getProperty("domain")); element.setRunningVersion(true); assertEquals(input, element.getPropertyAsString("domain")); } /* * This test should be compared with the one above. * Here, the string contains a valid variable reference, so all * backslashes are also processed. * * See https://issues.apache.org/bugzilla/show_bug.cgi?id=53534 */ public void testReplaceFunctionWithBackslash() throws Exception { ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(variables.getUserDefinedVariables()); TestElement element = new ConfigTestElement(); String input = "${server} \\ \\\\ \\\\\\ \\, "; element.setProperty(new StringProperty("domain", input)); replacer.replaceValues(element); //log.debug("domain property = " + element.getProperty("domain")); element.setRunningVersion(true); assertEquals("jakarta.apache.org \\ \\ \\\\ , ", element.getPropertyAsString("domain")); } /** {@inheritDoc} */ @Override protected void tearDown() throws Exception { JMeterContextService.getContext().setSamplingStarted(false); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/engine/TestTreeCloner.java�����������������������������0000644�0001750�0001750�00000007773�12032647144�025517� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.control.GenericController; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jorphan.collections.ListedHashTree; public class TestTreeCloner extends junit.framework.TestCase { public TestTreeCloner(String name) { super(name); } public void testCloning() throws Exception { ListedHashTree original = new ListedHashTree(); GenericController controller = new GenericController(); controller.setName("controller"); Arguments args = new Arguments(); args.setName("args"); TestPlan plan = new TestPlan(); plan.addParameter("server", "jakarta"); original.add(controller, args); original.add(plan); ResultCollector listener = new ResultCollector(); listener.setName("Collector"); original.add(controller, listener); TreeCloner cloner = new TreeCloner(); original.traverse(cloner); ListedHashTree newTree = cloner.getClonedTree(); assertTrue(original != newTree); assertEquals(original.size(), newTree.size()); assertEquals(original.getTree(original.getArray()[0]).size(), newTree.getTree(newTree.getArray()[0]).size()); assertTrue(original.getArray()[0] != newTree.getArray()[0]); assertEquals(((GenericController) original.getArray()[0]).getName(), ((GenericController) newTree .getArray()[0]).getName()); assertSame(original.getTree(original.getArray()[0]).getArray()[1], newTree.getTree(newTree.getArray()[0]) .getArray()[1]); TestPlan clonedTestPlan = (TestPlan) newTree.getArray()[1]; clonedTestPlan.setRunningVersion(true); clonedTestPlan.recoverRunningVersion(); assertTrue(!plan.getUserDefinedVariablesAsProperty().isRunningVersion()); assertTrue(clonedTestPlan.getUserDefinedVariablesAsProperty().isRunningVersion()); Arguments vars = (Arguments) plan.getUserDefinedVariablesAsProperty().getObjectValue(); PropertyIterator iter = ((CollectionProperty) vars.getProperty(Arguments.ARGUMENTS)).iterator(); while (iter.hasNext()) { JMeterProperty argProp = iter.next(); assertTrue(!argProp.isRunningVersion()); assertTrue(argProp.getObjectValue() instanceof Argument); Argument arg = (Argument) argProp.getObjectValue(); arg.setValue("yahoo"); assertEquals("yahoo", arg.getValue()); } vars = (Arguments) clonedTestPlan.getUserDefinedVariablesAsProperty().getObjectValue(); iter = vars.propertyIterator(); while (iter.hasNext()) { assertTrue(iter.next().isRunningVersion()); } } }�����apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/����������������������������������������������0000755�0001750�0001750�00000000000�12032647144�022330� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/tcp/������������������������������������������0000755�0001750�0001750�00000000000�12032647144�023116� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/tcp/sampler/����������������������������������0000755�0001750�0001750�00000000000�12165514773�024571� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/tcp/sampler/TCPClientDecoratorTest.java�������0000644�0001750�0001750�00000020161�12032647144�031714� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Test class for TCPClientDecorator utility methods. * */ package org.apache.jmeter.protocol.tcp.sampler; import junit.framework.TestCase; public class TCPClientDecoratorTest extends TestCase { public void testIntToByteArray() throws Exception { byte[] ba; int len = 2; ba = TCPClientDecorator.intToByteArray(0, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(0, ba[1]); ba = TCPClientDecorator.intToByteArray(15, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(15, ba[1]); ba = TCPClientDecorator.intToByteArray(255, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(-1, ba[1]); ba = TCPClientDecorator.intToByteArray(256, len); assertEquals(len, ba.length); assertEquals(1, ba[0]); assertEquals(0, ba[1]); ba = TCPClientDecorator.intToByteArray(-1, len); assertEquals(len, ba.length); assertEquals(-1, ba[0]); assertEquals(-1, ba[1]); ba = TCPClientDecorator.intToByteArray(Short.MAX_VALUE, len); assertEquals(len, ba.length); assertEquals(127, ba[0]); assertEquals(-1, ba[1]); ba = TCPClientDecorator.intToByteArray(Short.MIN_VALUE, len); assertEquals(len, ba.length); assertEquals(-128, ba[0]); assertEquals(0, ba[1]); try { ba = TCPClientDecorator.intToByteArray(Short.MIN_VALUE-1, len); fail(); } catch (IllegalArgumentException iae) { } try { ba = TCPClientDecorator.intToByteArray(Short.MAX_VALUE+1, len); fail(); } catch (IllegalArgumentException iae) { } len = 4; ba = TCPClientDecorator.intToByteArray(0, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(0, ba[1]); assertEquals(0, ba[2]); assertEquals(0, ba[3]); ba = TCPClientDecorator.intToByteArray(15, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(0, ba[1]); assertEquals(0, ba[2]); assertEquals(15, ba[3]); ba = TCPClientDecorator.intToByteArray(255, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(0, ba[1]); assertEquals(0, ba[2]); assertEquals(-1, ba[3]); ba = TCPClientDecorator.intToByteArray(-1, len); assertEquals(len, ba.length); assertEquals(-1, ba[0]); assertEquals(-1, ba[1]); assertEquals(-1, ba[2]); assertEquals(-1, ba[3]); ba = TCPClientDecorator.intToByteArray(256, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(0, ba[1]); assertEquals(1, ba[2]); assertEquals(0, ba[3]); ba = TCPClientDecorator.intToByteArray(65535, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(0, ba[1]); assertEquals(-1, ba[2]); assertEquals(-1, ba[3]); ba = TCPClientDecorator.intToByteArray(65536, len); assertEquals(len, ba.length); assertEquals(0, ba[0]); assertEquals(1, ba[1]); assertEquals(0, ba[2]); assertEquals(0, ba[3]); ba = TCPClientDecorator.intToByteArray(Integer.MIN_VALUE, len); assertEquals(len, ba.length); assertEquals(-128, ba[0]); assertEquals(0, ba[1]); assertEquals(0, ba[2]); assertEquals(0, ba[3]); ba = TCPClientDecorator.intToByteArray(Integer.MAX_VALUE, len); assertEquals(len, ba.length); assertEquals(127, ba[0]); assertEquals(-1, ba[1]); assertEquals(-1, ba[2]); assertEquals(-1, ba[3]); // Check illegal array lengths try { ba = TCPClientDecorator.intToByteArray(0, 0); fail(); } catch (IllegalArgumentException iae) { } try { ba = TCPClientDecorator.intToByteArray(0, 1); fail(); } catch (IllegalArgumentException iae) { } try { ba = TCPClientDecorator.intToByteArray(0, 3); fail(); } catch (IllegalArgumentException iae) { } try { TCPClientDecorator.intToByteArray(0, 5); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException iae) { } } public void testByteArrayToInt() throws Exception { byte[] ba; ba = new byte[] { 0, 0 }; assertEquals(0, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 0, 15 }; assertEquals(15, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 0, -1 }; assertEquals(255, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 1, 0 }; assertEquals(256, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { -1, -1 }; assertEquals(-1, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 0, 0, -1, -1 }; assertEquals(65535, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 0, 1, 0, 0 }; assertEquals(65536, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 0, 0, 0, 0 }; assertEquals(0, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { -128, 0, 0, 0 }; assertEquals(Integer.MIN_VALUE, TCPClientDecorator.byteArrayToInt(ba)); ba = new byte[] { 127, -1, -1, -1 }; assertEquals(Integer.MAX_VALUE, TCPClientDecorator.byteArrayToInt(ba)); // test invalid byte arrays try { TCPClientDecorator.byteArrayToInt(null); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } try { TCPClientDecorator.byteArrayToInt(new byte[]{}); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } try { TCPClientDecorator.byteArrayToInt(new byte[]{0}); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } try { TCPClientDecorator.byteArrayToInt(new byte[]{0,0,0}); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } try { TCPClientDecorator.byteArrayToInt(new byte[]{0,0,0}); fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } } public void testLoopBack() throws Exception { assertEquals(Short.MIN_VALUE, TCPClientDecorator.byteArrayToInt(TCPClientDecorator.intToByteArray(Short.MIN_VALUE, 2))); assertEquals(Short.MAX_VALUE, TCPClientDecorator.byteArrayToInt(TCPClientDecorator.intToByteArray(Short.MAX_VALUE, 2))); assertEquals(Integer.MIN_VALUE, TCPClientDecorator.byteArrayToInt(TCPClientDecorator.intToByteArray(Integer.MIN_VALUE, 4))); assertEquals(Integer.MAX_VALUE, TCPClientDecorator.byteArrayToInt(TCPClientDecorator.intToByteArray(Integer.MAX_VALUE, 4))); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImplTest.java������0000644�0001750�0001750�00000006067�12032647144�032051� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Test class for BinaryTCPClientImpl utility methods. * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import junit.framework.TestCase; import org.apache.jorphan.util.JOrphanUtils; public class BinaryTCPClientImplTest extends TestCase { public void testHexStringToByteArray() throws Exception { byte [] ba; ba = BinaryTCPClientImpl.hexStringToByteArray(""); assertEquals(0, ba.length); ba = BinaryTCPClientImpl.hexStringToByteArray("00"); assertEquals(1, ba.length); assertEquals(0, ba[0]); ba = BinaryTCPClientImpl.hexStringToByteArray("0f107F8081ff"); assertEquals(6, ba.length); assertEquals(15, ba[0]); assertEquals(16, ba[1]); assertEquals(127, ba[2]); assertEquals(-128, ba[3]); assertEquals(-127, ba[4]); assertEquals(-1, ba[5]); try { ba = BinaryTCPClientImpl.hexStringToByteArray("0f107f8081ff1");// odd chars fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } try { BinaryTCPClientImpl.hexStringToByteArray("0f107xxf8081ff"); // invalid fail("Expected IllegalArgumentException"); } catch (IllegalArgumentException expected){ // ignored } } public void testLoopBack() throws Exception { assertEquals("0f107f8081ff", JOrphanUtils.baToHexString(BinaryTCPClientImpl.hexStringToByteArray("0f107f8081ff"))); } public void testRoundTrip() throws Exception { BinaryTCPClientImpl bi = new BinaryTCPClientImpl(); InputStream is = null; try { bi.write(null, is); fail("Expected UnsupportedOperationException"); } catch (UnsupportedOperationException expected) { // ignored } ByteArrayOutputStream os = new ByteArrayOutputStream(); bi.write(os, "3132333435"); // '12345' os.close(); assertEquals("12345",os.toString("ISO-8859-1")); ByteArrayInputStream bis = new ByteArrayInputStream(os.toByteArray()); assertEquals("3132333435",bi.read(bis)); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000155�00000000000�011566� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/tcp/sampler/LengthPrefixedBinaryTCPClientImplTest.java��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/tcp/sampler/LengthPrefixedBinaryTCPClientImplT0000644�0001750�0001750�00000003773�12032647144�033247� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Test class for BinaryTCPClientImpl utility methods. * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import junit.framework.TestCase; public class LengthPrefixedBinaryTCPClientImplTest extends TestCase { public void testError() throws Exception { ByteArrayOutputStream os = null; ByteArrayInputStream is = null; LengthPrefixedBinaryTCPClientImpl lp = new LengthPrefixedBinaryTCPClientImpl(); try { lp.write(os, is); fail("Expected java.lang.UnsupportedOperationException"); } catch (java.lang.UnsupportedOperationException expected) { } } public void testValid() throws Exception { ByteArrayOutputStream os = new ByteArrayOutputStream(); LengthPrefixedBinaryTCPClientImpl lp = new LengthPrefixedBinaryTCPClientImpl(); final String DATA = "31323334353637"; lp.write(os, DATA); os.close(); final byte[] byteArray = os.toByteArray(); assertEquals(2+(DATA.length()/2), byteArray.length); ByteArrayInputStream is = new ByteArrayInputStream(byteArray); assertEquals(DATA, lp.read(is)); } } �����apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/�����������������������������������������0000755�0001750�0001750�00000000000�12032647144�023307� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/config/����������������������������������0000755�0001750�0001750�00000000000�12165514773�024564� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/config/UrlConfigTest.java����������������0000644�0001750�0001750�00000006245�12032647144�030156� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.config; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jmeter.testelement.property.TestElementProperty; public class UrlConfigTest extends JMeterTestCase { private HTTPSamplerBase config; private HTTPSamplerBase defaultConfig; private HTTPSamplerBase partialConfig; public UrlConfigTest(String name) { super(name); } @Override protected void setUp() { Arguments args = new Arguments(); args.addArgument("username", "mstover"); args.addArgument("password", "pass"); args.addArgument("action", "login"); config = new HTTPNullSampler(); config.setName("Full Config"); config.setProperty(HTTPSamplerBase.DOMAIN, "www.lazer.com"); config.setProperty(HTTPSamplerBase.PATH, "login.jsp"); config.setProperty(HTTPSamplerBase.METHOD, HTTPConstants.POST); config.setProperty(new TestElementProperty(HTTPSamplerBase.ARGUMENTS, args)); defaultConfig = new HTTPNullSampler(); defaultConfig.setName("default"); defaultConfig.setProperty(HTTPSamplerBase.DOMAIN, "www.xerox.com"); defaultConfig.setProperty(HTTPSamplerBase.PATH, "default.html"); partialConfig = new HTTPNullSampler(); partialConfig.setProperty(HTTPSamplerBase.PATH, "main.jsp"); partialConfig.setProperty(HTTPSamplerBase.METHOD, HTTPConstants.GET); } public void testSimpleConfig() { assertEquals("Full Config", config.getName()); assertEquals("www.lazer.com", config.getDomain()); } public void testOverRide() { JMeterProperty jmp = partialConfig.getProperty(HTTPSamplerBase.DOMAIN); assertTrue(jmp instanceof NullProperty); assertEquals(jmp, new NullProperty(HTTPSamplerBase.DOMAIN)); partialConfig.addTestElement(defaultConfig); assertEquals(partialConfig.getPropertyAsString(HTTPSamplerBase.DOMAIN), "www.xerox.com"); assertEquals(partialConfig.getPropertyAsString(HTTPSamplerBase.PATH), "main.jsp"); } }�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/config/MultipartUrlConfigTest.java�������0000644�0001750�0001750�00000013445�12032647144�032060� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.config; import junit.framework.TestCase; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.protocol.http.util.HTTPFileArgs; public class MultipartUrlConfigTest extends TestCase { public MultipartUrlConfigTest(String name) { super(name); } @SuppressWarnings("deprecation") public void testConstructors() { MultipartUrlConfig muc = new MultipartUrlConfig(); assertEquals(0, muc.getArguments().getArgumentCount()); assertEquals(0, muc.getHTTPFileArgs().getHTTPFileArgCount()); muc = new MultipartUrlConfig("boundary"); assertEquals(0, muc.getArguments().getArgumentCount()); assertEquals(0, muc.getHTTPFileArgs().getHTTPFileArgCount()); assertEquals("boundary", muc.getBoundary()); } // TODO - should LF-only EOL be allowed? public void testParseArgumentsLF() { String queryString = "Content-Disposition: form-data; name=\"aa\"\n" + "Content-Type: text/plain; charset=ISO-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" + "\n" + "bb\n" + "--7d159c1302d0y0\n" + "Content-Disposition: form-data; name=\"xx\"\n" + "Content-Type: text/plain; charset=ISO-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" + "\n" + "yy\n" + "--7d159c1302d0y0\n" + "Content-Disposition: form-data; name=\"abc\"\n" + "Content-Type: text/plain; charset=ISO-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" + "\n" + "xyz \n" + "xyz \n" + "--7d159c1302d0y0\n" + "Content-Disposition: form-data; name=\"param1\"; filename=\"file1\"\n" + "Content-Type: text/plain\n" + "Content-Transfer-Encoding: binary\n" + "\n" + "file content\n" + "\n"; MultipartUrlConfig muc = new MultipartUrlConfig("7d159c1302d0y0"); muc.parseArguments(queryString); HTTPFileArgs files = muc.getHTTPFileArgs(); assertEquals(1, files.getHTTPFileArgCount()); HTTPFileArg file = (HTTPFileArg) files.iterator().next().getObjectValue(); assertEquals("file1", file.getPath()); assertEquals("param1", file.getParamName()); assertEquals("text/plain", file.getMimeType()); Arguments args = muc.getArguments(); assertEquals(3, args.getArgumentCount()); Argument arg = args.getArgument(0); assertEquals("aa", arg.getName()); assertEquals("bb", arg.getValue()); arg = args.getArgument(1); assertEquals("xx", arg.getName()); assertEquals("yy", arg.getValue()); arg = args.getArgument(2); assertEquals("abc", arg.getName()); assertEquals("xyz \nxyz ", arg.getValue()); } public void testParseArgumentsCRLF() { String queryString = "Content-Disposition: form-data; name=\"aa\"\r\n" + "Content-Type: text/plain; charset=ISO-8859-1\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + "\r\n" + "bb\r\n" + "--7d159c1302d0y0\r\n" + "Content-Disposition: form-data; name=\"xx\"\r\n" + "Content-Type: text/plain; charset=ISO-8859-1\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + "\r\n" + "yy\r\n" + "--7d159c1302d0y0\r\n" + "Content-Disposition: form-data; name=\"abc\"\r\n" + "Content-Type: text/plain; charset=ISO-8859-1\r\n" + "Content-Transfer-Encoding: 8bit\r\n" + "\r\n" + "xyz \r\n" + "xyz \r\n" + "--7d159c1302d0y0\r\n" + "Content-Disposition: form-data; name=\"param1\"; filename=\"file1\"\r\n" + "Content-Type: text/plain\r\n" + "Content-Transfer-Encoding: binary\r\n" + "\r\n" + "file content\r\n" + "\r\n"; MultipartUrlConfig muc = new MultipartUrlConfig("7d159c1302d0y0"); muc.parseArguments(queryString); HTTPFileArgs files = muc.getHTTPFileArgs(); assertEquals(1, files.getHTTPFileArgCount()); HTTPFileArg file = (HTTPFileArg) files.iterator().next().getObjectValue(); assertEquals("file1", file.getPath()); assertEquals("param1", file.getParamName()); assertEquals("text/plain", file.getMimeType()); Arguments args = muc.getArguments(); assertEquals(3, args.getArgumentCount()); Argument arg = args.getArgument(0); assertEquals("aa", arg.getName()); assertEquals("bb", arg.getValue()); arg = args.getArgument(1); assertEquals("xx", arg.getName()); assertEquals("yy", arg.getValue()); arg = args.getArgument(2); assertEquals("abc", arg.getName()); assertEquals("xyz \r\nxyz ", arg.getValue()); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/proxy/�����������������������������������0000755�0001750�0001750�00000000000�12165514773�024500� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java������������0000644�0001750�0001750�00000101461�12032647144�031124� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.io.ByteArrayInputStream; import java.io.IOException; import java.net.URLEncoder; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; public class TestHttpRequestHdr extends JMeterTestCase { public TestHttpRequestHdr(String name) { super(name); } public void testRepeatedArguments() throws Exception { String url = "http://localhost/matrix.html"; // A HTTP GET request String contentEncoding = "UTF-8"; String testGetRequest = "GET " + url + "?update=yes&d=1&d=2&d=&d=&d=&d=&d=&d=1&d=2&d=1&d=&d= " + "HTTP/1.0\r\n\r\n"; HTTPSamplerBase s = getSamplerForRequest(url, testGetRequest, contentEncoding); assertEquals(HTTPConstants.GET, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments Arguments arguments = s.getArguments(); assertEquals(13, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "update", "yes", "yes", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "d", "1", "1", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(2), "d", "2", "2", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(3), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(4), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(5), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(6), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(7), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(8), "d", "1", "1", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(9), "d", "2", "2", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(10), "d", "1", "1", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(11), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(12), "d", "", "", contentEncoding, false); // A HTTP POST request contentEncoding = "UTF-8"; String postBody = "update=yes&d=1&d=2&d=&d=&d=&d=&d=&d=1&d=2&d=1&d=&d="; String testPostRequest = "POST " + url + " HTTP/1.0\n" + "Content-type: " + HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertFalse(s.getDoMultipartPost()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments arguments = s.getArguments(); assertEquals(13, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "update", "yes", "yes", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "d", "1", "1", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(2), "d", "2", "2", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(3), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(4), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(5), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(6), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(7), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(8), "d", "1", "1", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(9), "d", "2", "2", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(10), "d", "1", "1", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(11), "d", "", "", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(12), "d", "", "", contentEncoding, false); // A HTTP POST request, with content-type text/plain contentEncoding = "UTF-8"; postBody = "update=yes&d=1&d=2&d=&d=&d=&d=&d=&d=1&d=2&d=1&d=\uc385&d="; testPostRequest = "POST " + url + " HTTP/1.1\r\n" + "Content-type: text/plain\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertFalse(s.getDoMultipartPost()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments // We should have one argument, with the value equal to the post body arguments = s.getArguments(); assertEquals(1, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "", postBody, postBody, contentEncoding, false); // A HTTP POST request, with content-type text/plain; charset=UTF-8 // The encoding should be picked up from the header we send with the request contentEncoding = "UTF-8"; postBody = "update=yes&d=1&d=2&d=&d=&d=&d=&d=&d=1&d=2&d=1&d=\uc385&d="; testPostRequest = "POST " + url + " HTTP/1.1\r\n" + "Content-type: text/plain; charset=" + contentEncoding + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; // Use null for url to simulate that HttpRequestHdr do not // know the encoding for the page. Specify contentEncoding, so the // request is "sent" using that encoding s = getSamplerForRequest(null, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertFalse(s.getDoMultipartPost()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments // We should have one argument, with the value equal to the post body arguments = s.getArguments(); assertEquals(1, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "", postBody, postBody, contentEncoding, false); } public void testEncodedArguments() throws Exception { String url = "http://localhost/matrix.html"; testEncodedArguments(url); } public void testEncodedArgumentsIPv6() throws Exception { String url = "http://[::1]:8080/matrix.html"; testEncodedArguments(url); } public void testEncodedArguments(String url) throws Exception { // A HTTP GET request, with encoding not known String contentEncoding = ""; String queryString = "abc%3FSPACE=a+b&space=a%20b&query=What%3F"; String testGetRequest = "GET " + url + "?" + queryString + " HTTP/1.1\r\n\r\n"; // Use null for url and contentEncoding, to simulate that HttpRequestHdr do not // know the encoding for the page HTTPSamplerBase s = getSamplerForRequest(null, testGetRequest, null); assertEquals(HTTPConstants.GET, s.getMethod()); assertEquals(queryString, s.getQueryString()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments Arguments arguments = s.getArguments(); assertEquals(3, arguments.getArgumentCount()); // When the encoding is not known, the argument will get the encoded value, and the "encode?" set to false checkArgument((HTTPArgument)arguments.getArgument(0), "abc%3FSPACE", "a+b", "a+b", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "space", "a%20b", "a%20b", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(2), "query", "What%3F", "What%3F", contentEncoding, false); // A HTTP GET request, with UTF-8 encoding contentEncoding = "UTF-8"; queryString = "abc%3FSPACE=a+b&space=a%20b&query=What%3F"; testGetRequest = "GET " + url + "?" + queryString + " HTTP/1.1\r\n\r\n"; s = getSamplerForRequest(url, testGetRequest, contentEncoding); assertEquals(HTTPConstants.GET, s.getMethod()); String expectedQueryString = "abc%3FSPACE=a+b&space=a+b&query=What%3F"; assertEquals(expectedQueryString, s.getQueryString()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments arguments = s.getArguments(); assertEquals(3, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "abc?SPACE", "a b", "a+b", contentEncoding, true); checkArgument((HTTPArgument)arguments.getArgument(1), "space", "a b", "a+b", contentEncoding, true); checkArgument((HTTPArgument)arguments.getArgument(2), "query", "What?", "What%3F", contentEncoding, true); // A HTTP POST request, with unknown encoding contentEncoding = ""; String postBody = "abc%3FSPACE=a+b&space=a%20b&query=What%3F"; String testPostRequest = "POST " + url + " HTTP/1.1\r\n" + "Content-type: " + HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; // Use null for url and contentEncoding, to simulate that HttpRequestHdr do not // know the encoding for the page s = getSamplerForRequest(null, testPostRequest, null); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(queryString, s.getQueryString()); assertEquals(contentEncoding, s.getContentEncoding()); assertFalse(s.getDoMultipartPost()); // Check arguments arguments = s.getArguments(); assertEquals(3, arguments.getArgumentCount()); // When the encoding is not known, the argument will get the encoded value, and the "encode?" set to false checkArgument((HTTPArgument)arguments.getArgument(0), "abc%3FSPACE", "a+b", "a+b", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "space", "a%20b", "a%20b", contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(2), "query", "What%3F", "What%3F", contentEncoding, false); // A HTTP POST request, with UTF-8 encoding contentEncoding = "UTF-8"; postBody = "abc?SPACE=a+b&space=a%20b&query=What?"; testPostRequest = "POST " + url + " HTTP/1.1\n" + "Content-type: " + HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); expectedQueryString = "abc%3FSPACE=a+b&space=a+b&query=What%3F"; assertEquals(expectedQueryString, s.getQueryString()); assertEquals(contentEncoding, s.getContentEncoding()); assertFalse(s.getDoMultipartPost()); // Check arguments arguments = s.getArguments(); assertEquals(3, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "abc?SPACE", "a b", "a+b", contentEncoding, true); checkArgument((HTTPArgument)arguments.getArgument(1), "space", "a b", "a+b", contentEncoding, true); checkArgument((HTTPArgument)arguments.getArgument(2), "query", "What?", "What%3F", contentEncoding, true); } public void testGetRequestEncodings() throws Exception { testGetRequestEncodings("http://localhost/matrix.html"); } public void testGetRequestEncodingsIPv6() throws Exception { testGetRequestEncodings("http://[::1]:8080/matrix.html"); } public void testGetRequestEncodings(String url) throws Exception { // A HTTP GET request, with encoding not known String contentEncoding = ""; String param1Value = "yes"; String param2Value = "0+5 -\u00c5\uc385%C3%85"; String param2ValueEncoded = URLEncoder.encode(param2Value,"UTF-8"); String testGetRequest = "GET " + url + "?param1=" + param1Value + "¶m2=" + param2ValueEncoded + " " + "HTTP/1.1\r\n\r\n"; // Use null for url and contentEncoding, to simulate that HttpRequestHdr do not // know the encoding for the page HTTPSamplerBase s = getSamplerForRequest(null, testGetRequest, null); assertEquals(HTTPConstants.GET, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments Arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "param1", param1Value, param1Value, contentEncoding, false); // When the encoding is not known, the argument will get the encoded value, and the "encode?" set to false checkArgument((HTTPArgument)arguments.getArgument(1), "param2", param2ValueEncoded, param2ValueEncoded, contentEncoding, false); // A HTTP GET request, with UTF-8 encoding contentEncoding = "UTF-8"; param1Value = "yes"; param2Value = "0+5 -\u007c\u2aa1\u266a\u0153\u20a1\u0115\u0364\u00c5\u2052\uc385%C3%85"; param2ValueEncoded = URLEncoder.encode(param2Value, contentEncoding); testGetRequest = "GET " + url + "?param1=" + param1Value + "¶m2=" + param2ValueEncoded + " " + "HTTP/1.1\r\n\r\n"; s = getSamplerForRequest(url, testGetRequest, contentEncoding); assertEquals(HTTPConstants.GET, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "param1", param1Value, param1Value, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "param2", param2Value, param2ValueEncoded, contentEncoding, true); // A HTTP GET request, with ISO-8859-1 encoding contentEncoding = "ISO-8859-1"; param1Value = "yes"; param2Value = "0+5 -\u00c5%C3%85"; param2ValueEncoded = URLEncoder.encode(param2Value, contentEncoding); testGetRequest = "GET " + url + "?param1=" + param1Value + "¶m2=" + param2ValueEncoded + " " + "HTTP/1.1\r\n\r\n"; s = getSamplerForRequest(url, testGetRequest, contentEncoding); assertEquals(HTTPConstants.GET, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "param1", param1Value, param1Value, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "param2", param2Value, param2ValueEncoded, contentEncoding, true); } public void testPostRequestEncodings() throws Exception { String url = "http://localhost/matrix.html"; // A HTTP POST request, with encoding not known String contentEncoding = ""; String param1Value = "yes"; String param2Value = "0+5 -\u00c5%C3%85"; String param2ValueEncoded = URLEncoder.encode(param2Value,"UTF-8"); String postBody = "param1=" + param1Value + "¶m2=" + param2ValueEncoded + "\r\n"; String testPostRequest = "POST " + url + " HTTP/1.1\r\n" + "Content-type: " + HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; // Use null for url and contentEncoding, to simulate that HttpRequestHdr do not // know the encoding for the page HTTPSamplerBase s = getSamplerForRequest(null, testPostRequest, null); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments Arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "param1", param1Value, param1Value, contentEncoding, false); // When the encoding is not known, the argument will get the encoded value, and the "encode?" set to false checkArgument((HTTPArgument)arguments.getArgument(1), "param2", param2ValueEncoded, param2ValueEncoded, contentEncoding, false); // A HTTP POST request, with UTF-8 encoding contentEncoding = "UTF-8"; param1Value = "yes"; param2Value = "0+5 -\u007c\u2aa1\u266a\u0153\u20a1\u0115\u0364\u00c5\u2052\uc385%C3%85"; param2ValueEncoded = URLEncoder.encode(param2Value, contentEncoding); postBody = "param1=" + param1Value + "¶m2=" + param2ValueEncoded + "\r\n"; testPostRequest = "POST " + url + " HTTP/1.1\r\n" + "Content-type: " + HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "param1", param1Value, param1Value, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "param2", param2Value, param2ValueEncoded, contentEncoding, true); // A HTTP POST request, with ISO-8859-1 encoding contentEncoding = "ISO-8859-1"; param1Value = "yes"; param2Value = "0+5 -\u00c5%C3%85"; param2ValueEncoded = URLEncoder.encode(param2Value, contentEncoding); postBody = "param1=" + param1Value + "¶m2=" + param2ValueEncoded + "\r\n"; testPostRequest = "POST " + url + " HTTP/1.1\r\n" + "Content-type: " + HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED + "\r\n" + "Content-length: " + getBodyLength(postBody, contentEncoding) + "\r\n" + "\r\n" + postBody; s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "param1", param1Value, param1Value, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "param2", param2Value, param2ValueEncoded, contentEncoding, true); } public void testPostMultipartFormData() throws Exception { String url = "http://localhost/matrix.html"; // A HTTP POST request, multipart/form-data, simple values, String contentEncoding = "UTF-8"; String boundary = "xf8SqlDNvmn6mFYwrioJaeUR2_Z4cLRXOSmB"; String endOfLine = "\r\n"; String titleValue = "mytitle"; String descriptionValue = "mydescription"; String postBody = createMultipartFormBody(titleValue, descriptionValue, contentEncoding, true, boundary, endOfLine); String testPostRequest = createMultipartFormRequest(url, postBody, contentEncoding, boundary, endOfLine); HTTPSamplerBase s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); assertTrue(s.getDoMultipartPost()); // Check arguments Arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "title", titleValue, titleValue, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "description", descriptionValue, descriptionValue, contentEncoding, false); // A HTTP POST request, multipart/form-data, simple values, // with \r\n as end of line, which is according to spec, // and with more headers in each multipart endOfLine = "\r\n"; titleValue = "mytitle"; descriptionValue = "mydescription"; postBody = createMultipartFormBody(titleValue, descriptionValue, contentEncoding, true, boundary, endOfLine); testPostRequest = createMultipartFormRequest(url, postBody, contentEncoding, boundary, endOfLine); s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); assertTrue(s.getDoMultipartPost()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "title", titleValue, titleValue, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "description", descriptionValue, descriptionValue, contentEncoding, false); // A HTTP POST request, multipart/form-data, simple values, // with \n as end of line, which should also be handled, // and with more headers in each multipart endOfLine = "\n"; titleValue = "mytitle"; descriptionValue = "mydescription"; postBody = createMultipartFormBody(titleValue, descriptionValue, contentEncoding, true, boundary, endOfLine); testPostRequest = createMultipartFormRequest(url, postBody, contentEncoding, boundary, endOfLine); s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); assertTrue(s.getDoMultipartPost()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "title", titleValue, titleValue, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "description", descriptionValue, descriptionValue, contentEncoding, false); // A HTTP POST request, multipart/form-data, with value that will change // if they are url encoded // Values are similar to __VIEWSTATE parameter that .net uses endOfLine = "\r\n"; titleValue = "/wEPDwULLTE2MzM2OTA0NTYPZBYCAgMPZ/rA+8DZ2dnZ2dnZ2d/GNDar6OshPwdJc="; descriptionValue = "mydescription"; postBody = createMultipartFormBody(titleValue, descriptionValue, contentEncoding, true, boundary, endOfLine); testPostRequest = createMultipartFormRequest(url, postBody, contentEncoding, boundary, endOfLine); s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); assertTrue(s.getDoMultipartPost()); // Check arguments arguments = s.getArguments(); assertEquals(2, arguments.getArgumentCount()); checkArgument((HTTPArgument)arguments.getArgument(0), "title", titleValue, titleValue, contentEncoding, false); checkArgument((HTTPArgument)arguments.getArgument(1), "description", descriptionValue, descriptionValue, contentEncoding, false); } public void testParse1() throws Exception {// no space after : HttpRequestHdr req = new HttpRequestHdr(); ByteArrayInputStream bis = null; bis = new ByteArrayInputStream("GET xxx HTTP/1.0\r\nname:value \r\n".getBytes("ISO-8859-1")); req.parse(bis); bis.close(); HeaderManager mgr = req.getHeaderManager(); Header header; mgr.getHeaders(); header = mgr.getHeader(0); assertEquals("name",header.getName()); assertEquals("value",header.getValue()); } public void testParse2() throws Exception {// spaces after : HttpRequestHdr req = new HttpRequestHdr(); ByteArrayInputStream bis = null; bis = new ByteArrayInputStream("GET xxx HTTP/1.0\r\nname: value \r\n".getBytes("ISO-8859-1")); req.parse(bis); bis.close(); HeaderManager mgr = req.getHeaderManager(); Header header; mgr.getHeaders(); header = mgr.getHeader(0); assertEquals("name",header.getName()); assertEquals("value",header.getValue()); } public void testPostMultipartFileUpload() throws Exception { String url = "http://localhost/matrix.html"; // A HTTP POST request, multipart/form-data, simple values, String contentEncoding = "UTF-8"; String boundary = "xf8SqlDNvmn6mFYwrioJaeUR2_Z4cLRXOSmB"; String endOfLine = "\r\n"; String fileFieldValue = "test_file"; String fileName = "somefilename.txt"; String mimeType = "text/plain"; String fileContent = "somedummycontent\n\ndfgdfg\r\nfgdgdg\nContent-type:dfsfsfds"; String postBody = createMultipartFileUploadBody(fileFieldValue, fileName, mimeType, fileContent, boundary, endOfLine); String testPostRequest = createMultipartFormRequest(url, postBody, contentEncoding, boundary, endOfLine); HTTPSamplerBase s = getSamplerForRequest(url, testPostRequest, contentEncoding); assertEquals(HTTPConstants.POST, s.getMethod()); assertEquals(contentEncoding, s.getContentEncoding()); assertEquals("", s.getQueryString()); assertTrue(s.getDoMultipartPost()); // Check arguments Arguments arguments = s.getArguments(); assertEquals(0, arguments.getArgumentCount()); HTTPFileArg hfa = s.getHTTPFiles()[0]; // Assume there's at least one file assertEquals(fileFieldValue, hfa.getParamName()); assertEquals(fileName, hfa.getPath()); assertEquals(mimeType, hfa.getMimeType()); } private String createMultipartFormBody(String titleValue, String descriptionValue, String contentEncoding, boolean includeExtraHeaders, String boundary, String endOfLine) { // Title multipart String postBody = "--" + boundary + endOfLine + "Content-Disposition: form-data; name=\"title\"" + endOfLine; if(includeExtraHeaders) { postBody += "Content-Type: text/plain; charset=" + contentEncoding + endOfLine + "Content-Transfer-Encoding: 8bit" + endOfLine; } postBody += endOfLine + titleValue + endOfLine + "--" + boundary + endOfLine; // Description multipart postBody += "Content-Disposition: form-data; name=\"description\"" + endOfLine; if(includeExtraHeaders) { postBody += "Content-Type: text/plain; charset=" + contentEncoding + endOfLine + "Content-Transfer-Encoding: 8bit" + endOfLine; } postBody += endOfLine + descriptionValue + endOfLine + "--" + boundary + "--" + endOfLine; return postBody; } private String createMultipartFileUploadBody(String fileField, String fileName, String fileMimeType, String fileContent, String boundary, String endOfLine) { // File upload multipart String postBody = "--" + boundary + endOfLine + "Content-Disposition: form-data; name=\"" + fileField + "\" filename=\"" + fileName + "\"" + endOfLine + "Content-Type: " + fileMimeType + endOfLine + "Content-Transfer-Encoding: binary" + endOfLine + endOfLine + fileContent + endOfLine + "--" + boundary + "--" + endOfLine; return postBody; } private String createMultipartFormRequest(String url, String postBody, String contentEncoding, String boundary, String endOfLine) throws IOException { String postRequest = "POST " + url + " HTTP/1.1" + endOfLine + "Content-type: " + HTTPConstants.MULTIPART_FORM_DATA + "; boundary=" + boundary + endOfLine + "Content-length: " + getBodyLength(postBody, contentEncoding) + endOfLine + endOfLine + postBody; return postRequest; } private HTTPSamplerBase getSamplerForRequest(String url, String request, String contentEncoding) throws Exception { HttpRequestHdr req = new HttpRequestHdr(); ByteArrayInputStream bis = null; if(contentEncoding != null) { bis = new ByteArrayInputStream(request.getBytes(contentEncoding)); } else { // Most browsers use ISO-8859-1 as default encoding, even if spec says UTF-8 bis = new ByteArrayInputStream(request.getBytes("ISO-8859-1")); } req.parse(bis); bis.close(); Map<String, String> pageEncodings = Collections.synchronizedMap(new HashMap<String, String>()); Map<String, String> formEncodings = Collections.synchronizedMap(new HashMap<String, String>()); if(url != null && contentEncoding != null) { pageEncodings.put(url, contentEncoding); } SamplerCreatorFactory creatorFactory = new SamplerCreatorFactory(); SamplerCreator creator = creatorFactory.getSamplerCreator(req, pageEncodings, formEncodings); HTTPSamplerBase sampler = creator.createSampler(req, pageEncodings, formEncodings); creator.populateSampler(sampler, req, pageEncodings, formEncodings); return sampler; } private void checkArgument( HTTPArgument arg, String expectedName, String expectedValue, String expectedEncodedValue, String contentEncoding, boolean expectedEncoded) throws IOException { assertEquals(expectedName, arg.getName()); // System.out.println("expect " + URLEncoder.encode(expectedValue, "UTF-8")); // System.out.println("actual " + URLEncoder.encode(arg.getValue(), "UTF-8")); assertEquals(expectedValue, arg.getValue()); if(contentEncoding != null && contentEncoding.length() > 0) { assertEquals(expectedEncodedValue, arg.getEncodedValue(contentEncoding)); } else { // Most browsers use ISO-8859-1 as default encoding, even if spec says UTF-8 assertEquals(expectedEncodedValue, arg.getEncodedValue("ISO-8859-1")); } assertEquals(expectedEncoded, arg.isAlwaysEncoded()); } private int getBodyLength(String postBody, String contentEncoding) throws IOException { if(contentEncoding != null && contentEncoding.length() > 0) { return postBody.getBytes(contentEncoding).length; } else { // Most browsers use ISO-8859-1 as default encoding, even if spec says UTF-8 return postBody.getBytes().length; // TODO - charset? } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/proxy/TestProxyControl.java��������������0000644�0001750�0001750�00000015735�12032647144�030670� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import junit.framework.TestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; public class TestProxyControl extends TestCase { private HTTPSamplerBase sampler; private ProxyControl control; public TestProxyControl(String name) { super(name); } @Override public void setUp() { control = new ProxyControl(); control.addIncludedPattern(".*\\.jsp"); control.addExcludedPattern(".*apache.org.*"); sampler = new HTTPNullSampler(); } public void testFilter1() throws Exception { sampler.setDomain("jakarta.org"); sampler.setPath("index.jsp"); assertTrue("Should find jakarta.org/index.jsp", control.filterUrl(sampler)); } public void testFilter2() throws Exception { sampler.setPath("index.jsp"); sampler.setDomain("www.apache.org"); assertFalse("Should not match www.apache.org", control.filterUrl(sampler)); } public void testFilter3() throws Exception { sampler.setPath("header.gif"); sampler.setDomain("jakarta.org"); assertFalse("Should not match header.gif", control.filterUrl(sampler)); } public void testContentTypeNoFilters() throws Exception { SampleResult result = new SampleResult(); // No filters control.setContentTypeInclude(null); control.setContentTypeExclude(null); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertTrue("Should allow text/html", control.filterContentType(result)); result.setContentType("image/png"); assertTrue("Should allow image/png", control.filterContentType(result)); // Empty filters control.setContentTypeInclude(""); control.setContentTypeExclude(""); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertTrue("Should allow text/html", control.filterContentType(result)); result.setContentType("image/png"); assertTrue("Should allow image/png", control.filterContentType(result)); // Non empty filters control.setContentTypeInclude(" "); control.setContentTypeExclude(" "); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertFalse("Should not allow text/html", control.filterContentType(result)); result.setContentType("image/png"); assertFalse("Should not allow image/png", control.filterContentType(result)); } public void testContentTypeInclude() throws Exception { SampleResult result = new SampleResult(); control.setContentTypeInclude("text/html|text/ascii"); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertTrue("Should allow text/html", control.filterContentType(result)); result.setContentType("text/css"); assertFalse("Should not allow text/css", control.filterContentType(result)); } public void testContentTypeExclude() throws Exception { SampleResult result = new SampleResult(); control.setContentTypeExclude("text/css"); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertTrue("Should allow text/html", control.filterContentType(result)); result.setContentType("text/css"); assertFalse("Should not allow text/css", control.filterContentType(result)); } public void testContentTypeIncludeAndExclude() throws Exception { SampleResult result = new SampleResult(); // Simple inclusion and exclusion filter control.setContentTypeInclude("text/html|text/ascii"); control.setContentTypeExclude("text/css"); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertTrue("Should allow text/html", control.filterContentType(result)); result.setContentType("text/css"); assertFalse("Should not allow text/css", control.filterContentType(result)); result.setContentType("image/png"); assertFalse("Should not allow image/png", control.filterContentType(result)); // Allow all but images control.setContentTypeInclude(null); control.setContentTypeExclude("image/.*"); result.setContentType(null); assertTrue("Should allow if no content-type present", control.filterContentType(result)); result.setContentType("text/html; charset=utf-8"); assertTrue("Should allow text/html", control.filterContentType(result)); result.setContentType("text/css"); assertTrue("Should allow text/css", control.filterContentType(result)); result.setContentType("image/png"); assertFalse("Should not allow image/png", control.filterContentType(result)); } } �����������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/������������������������������������0000755�0001750�0001750�00000000000�12165514773�024274� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/accesslog/��������������������������0000755�0001750�0001750�00000000000�12165514773�026237� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/accesslog/TestTCLogParser.java������0000644�0001750�0001750�00000004754�12032647144�032071� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; // TODO - more tests needed public class TestTCLogParser extends JMeterTestCase { private static final TCLogParser tclp = new TCLogParser(); private static final String URL1 = "127.0.0.1 - - [08/Jan/2003:07:03:54 -0500] \"GET /addrbook/ HTTP/1.1\" 200 1981"; private static final String URL2 = "127.0.0.1 - - [08/Jan/2003:07:03:54 -0500] \"GET /addrbook?x=y HTTP/1.1\" 200 1981"; private static final String TEST3 = "127.0.0.1 - - [08/Jan/2003:07:03:54 -0500] \"HEAD /addrbook/ HTTP/1.1\" 200 1981"; public void testConstruct() throws Exception { TCLogParser tcp; tcp = new TCLogParser(); assertNull("Should not have set the filename", tcp.FILENAME); String file = "testfiles/access.log"; tcp = new TCLogParser(file); assertEquals("Filename should have been saved", file, tcp.FILENAME); } public void testcleanURL() throws Exception { String res = tclp.cleanURL(URL1); assertEquals("/addrbook/", res); assertNull(tclp.stripFile(res, new HTTPNullSampler())); } public void testcheckURL() throws Exception { assertFalse("URL does not have a query", tclp.checkURL(URL1)); assertTrue("URL is a query", tclp.checkURL(URL2)); } public void testHEAD() throws Exception { String res = tclp.cleanURL(TEST3); assertEquals("/addrbook/", res); assertNull(tclp.stripFile(res, new HTTPNullSampler())); } }��������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/accesslog/TestLogFilter.java��������0000644�0001750�0001750�00000013776�12032647144�031637� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import org.apache.jmeter.junit.JMeterTestCase; public class TestLogFilter extends JMeterTestCase { private static final String TESTSTR = "/test/helloworld.html"; private static final String TESTSTROUT = "/test/helloworld.jsp"; private static class TestData { private final String file; private final boolean exclfile; private final boolean inclfile; private final boolean exclpatt; private final boolean inclpatt; TestData(String f, boolean exf, boolean inf, boolean exp, boolean inp) { file = f; exclfile = exf; inclfile = inf; exclpatt = exp; inclpatt = inp; } } private static final String[] INCL = { "hello.html", "index.html", "/index.jsp" }; private static final String[] PATTERNS = { "index", ".jtml" }; private static final TestData[] TESTDATA = { // file exclf inclf exclp inclp new TestData("/test/hello.jsp", true, false, true, false), new TestData("/test/one/hello.html", false, true, true, false), new TestData("hello.jsp", true, false, true, false), new TestData("hello.htm", true, false, true, false), new TestData("/test/open.jsp", true, false, true, false), new TestData("/test/open.html", true, false, true, false), new TestData("/index.jsp", false, true, false, true), new TestData("/index.jhtml", true, false, false, true), new TestData("newindex.jsp", true, false, false, true), new TestData("oldindex.jsp", true, false, false, true), new TestData("oldindex1.jsp", true, false, false, true), new TestData("oldindex2.jsp", true, false, false, true), new TestData("oldindex3.jsp", true, false, false, true), new TestData("oldindex4.jsp", true, false, false, true), new TestData("oldindex5.jsp", true, false, false, true), new TestData("oldindex6.jsp", true, false, false, true), new TestData("/test/index.htm", true, false, false, true) }; public void testConstruct() { new LogFilter(); } private LogFilter testf; @Override public void setUp() { testf = new LogFilter(); } public void testReplaceExtension() { testf.setReplaceExtension("html", "jsp"); testf.isFiltered(TESTSTR,null);// set the required variables assertEquals(TESTSTROUT, testf.filter(TESTSTR)); } public void testExcludeFiles() { testf.excludeFiles(INCL); for (int idx = 0; idx < TESTDATA.length; idx++) { TestData td = TESTDATA[idx]; String theFile = td.file; boolean expect = td.exclfile; testf.isFiltered(theFile,null); String line = testf.filter(theFile); if (line != null) { assertTrue("Expect to accept " + theFile, expect); } else { assertFalse("Expect to reject " + theFile, expect); } } } public void testIncludeFiles() { testf.includeFiles(INCL); for (int idx = 0; idx < TESTDATA.length; idx++) { TestData td = TESTDATA[idx]; String theFile = td.file; boolean expect = td.inclfile; testf.isFiltered(theFile,null); String line = testf.filter(theFile); if (line != null) { assertTrue("Expect to accept " + theFile, expect); } else { assertFalse("Expect to reject " + theFile, expect); } } } public void testExcludePattern() { testf.excludePattern(PATTERNS); for (int idx = 0; idx < TESTDATA.length; idx++) { TestData td = TESTDATA[idx]; String theFile = td.file; boolean expect = td.exclpatt; assertEquals(!expect, testf.isFiltered(theFile,null)); String line = testf.filter(theFile); if (line != null) { assertTrue("Expect to accept " + theFile, expect); } else { assertFalse("Expect to reject " + theFile, expect); } } } public void testIncludePattern() { testf.includePattern(PATTERNS); for (int idx = 0; idx < TESTDATA.length; idx++) { TestData td = TESTDATA[idx]; String theFile = td.file; boolean expect = td.inclpatt; assertEquals(!expect, testf.isFiltered(theFile,null)); String line = testf.filter(theFile); if (line != null) { assertTrue("Expect to accept " + theFile, expect); } else { assertFalse("Expect to reject " + theFile, expect); } } } } ��apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/TestHTTPUtils.java������������������0000644�0001750�0001750�00000012153�12032647144�027571� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.net.URL; import junit.framework.TestCase; public class TestHTTPUtils extends TestCase { public TestHTTPUtils(String name) { super(name); } public void testgetEncoding() throws Exception { assertNull(ConversionUtils.getEncodingFromContentType("xyx")); assertEquals("utf8",ConversionUtils.getEncodingFromContentType("charset=utf8")); assertEquals("utf8",ConversionUtils.getEncodingFromContentType("charset=\"utf8\"")); assertEquals("utf8",ConversionUtils.getEncodingFromContentType("text/plain ;charset=utf8")); assertEquals("utf8",ConversionUtils.getEncodingFromContentType("text/html ;charset=utf8;charset=def")); assertNull(ConversionUtils.getEncodingFromContentType("charset=")); assertNull(ConversionUtils.getEncodingFromContentType(";charset=;")); assertNull(ConversionUtils.getEncodingFromContentType(";charset=no-such-charset;")); } public void testMakeRelativeURL() throws Exception { URL base = new URL("http://192.168.0.1/a/b/c"); // Trailing file assertEquals(new URL("http://192.168.0.1/a/b/d"),ConversionUtils.makeRelativeURL(base,"d")); assertEquals(new URL("http://192.168.0.1/a/d"),ConversionUtils.makeRelativeURL(base,"../d")); assertEquals(new URL("http://192.168.0.1/d"),ConversionUtils.makeRelativeURL(base,"../../d")); assertEquals(new URL("http://192.168.0.1/d"),ConversionUtils.makeRelativeURL(base,"../../../d")); assertEquals(new URL("http://192.168.0.1/d"),ConversionUtils.makeRelativeURL(base,"../../../../d")); assertEquals(new URL("http://192.168.0.1/../d"),ConversionUtils.makeRelativeURL(base,"/../d")); assertEquals(new URL("http://192.168.0.1/a/b/d"),ConversionUtils.makeRelativeURL(base,"./d")); } public void testMakeRelativeURL2() throws Exception { URL base = new URL("http://192.168.0.1/a/b/c/"); // Trailing directory assertEquals(new URL("http://192.168.0.1/a/b/c/d"),ConversionUtils.makeRelativeURL(base,"d")); assertEquals(new URL("http://192.168.0.1/a/b/d"),ConversionUtils.makeRelativeURL(base,"../d")); assertEquals(new URL("http://192.168.0.1/a/d"),ConversionUtils.makeRelativeURL(base,"../../d")); assertEquals(new URL("http://192.168.0.1/d"),ConversionUtils.makeRelativeURL(base,"../../../d")); assertEquals(new URL("http://192.168.0.1/d"),ConversionUtils.makeRelativeURL(base,"../../../../d")); assertEquals(new URL("http://192.168.0.1/../d"),ConversionUtils.makeRelativeURL(base,"/../d")); assertEquals(new URL("http://192.168.0.1/a/b/c/d"),ConversionUtils.makeRelativeURL(base,"./d")); } public void testRemoveSlashDotDot() { assertEquals("/path/", ConversionUtils.removeSlashDotDot("/path/")); assertEquals("http://host/", ConversionUtils.removeSlashDotDot("http://host/")); assertEquals("http://host/one", ConversionUtils.removeSlashDotDot("http://host/one")); assertEquals("/two", ConversionUtils.removeSlashDotDot("/one/../two")); assertEquals("http://host:8080/two", ConversionUtils.removeSlashDotDot("http://host:8080/one/../two")); assertEquals("http://host:8080/two/", ConversionUtils.removeSlashDotDot("http://host:8080/one/../two/")); assertEquals("http://usr@host:8080/two/", ConversionUtils.removeSlashDotDot("http://usr@host:8080/one/../two/")); assertEquals("http://host:8080/two/?query#anchor", ConversionUtils.removeSlashDotDot("http://host:8080/one/../two/?query#anchor")); assertEquals("one", ConversionUtils.removeSlashDotDot("one/two/..")); assertEquals("../../path", ConversionUtils.removeSlashDotDot("../../path")); assertEquals("/", ConversionUtils.removeSlashDotDot("/one/..")); assertEquals("/", ConversionUtils.removeSlashDotDot("/one/../")); assertEquals("/?a", ConversionUtils.removeSlashDotDot("/one/..?a")); assertEquals("http://host/one", ConversionUtils.removeSlashDotDot("http://host/one/../one")); assertEquals("http://host/one/two", ConversionUtils.removeSlashDotDot("http://host/one/two/../../one/two")); assertEquals("http://host/..", ConversionUtils.removeSlashDotDot("http://host/..")); assertEquals("http://host/../abc", ConversionUtils.removeSlashDotDot("http://host/../abc")); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/TestHTTPFileArg.java����������������0000644�0001750�0001750�00000005635�12032647144�030011� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import junit.framework.TestCase; public class TestHTTPFileArg extends TestCase { public TestHTTPFileArg(String name) { super(name); } public void testConstructors() throws Exception { HTTPFileArg file = new HTTPFileArg(); assertEquals("no parameter failure", "", file.getPath()); assertEquals("no parameter failure", "", file.getParamName()); assertEquals("no parameter failure", "", file.getMimeType()); file = new HTTPFileArg("path"); assertEquals("single parameter failure", "path", file.getPath()); assertEquals("single parameter failure", "", file.getParamName()); assertEquals("single parameter failure", "", file.getMimeType()); file = new HTTPFileArg("path", "param", "mimetype"); assertEquals("three parameter failure", "path", file.getPath()); assertEquals("three parameter failure", "param", file.getParamName()); assertEquals("three parameter failure", "mimetype", file.getMimeType()); HTTPFileArg file2 = new HTTPFileArg(file); assertEquals("copy constructor failure", "path", file2.getPath()); assertEquals("copy constructor failure", "param", file2.getParamName()); assertEquals("copy constructor failure", "mimetype", file2.getMimeType()); } public void testGettersSetters() throws Exception { HTTPFileArg file = new HTTPFileArg(); assertEquals("", file.getPath()); assertEquals("", file.getParamName()); assertEquals("", file.getMimeType()); file.setPath("path"); file.setParamName("param"); file.setMimeType("mimetype"); file.setHeader("header"); assertEquals("path", file.getPath()); assertEquals("param", file.getParamName()); assertEquals("mimetype", file.getMimeType()); assertEquals("header", file.getHeader()); } public void testToString() throws Exception { HTTPFileArg file = new HTTPFileArg("path1", "param1", "mimetype1"); assertEquals("path:'path1'|param:'param1'|mimetype:'mimetype1'", file.toString()); } } ���������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/TestHTTPArgument.java���������������0000644�0001750�0001750�00000010722�12032647144�030253� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import junit.framework.TestCase; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.testelement.property.CollectionProperty; public class TestHTTPArgument extends TestCase { public TestHTTPArgument(String name) { super(name); } public void testCloning() throws Exception { HTTPArgument arg = new HTTPArgument("name.?", "value_ here"); assertEquals("name.?", arg.getName()); assertEquals("value_ here", arg.getValue()); assertEquals("name.%3F", arg.getEncodedName()); assertEquals("value_+here", arg.getEncodedValue()); HTTPArgument clone = (HTTPArgument) arg.clone(); assertEquals("name.%3F", clone.getEncodedName()); assertEquals("value_+here", clone.getEncodedValue()); assertEquals("name.?", clone.getName()); assertEquals("value_ here", clone.getValue()); } public void testConversion() throws Exception { Arguments args = new Arguments(); args.addArgument("name.?", "value_ here"); args.addArgument("name$of property", "value_.+"); HTTPArgument.convertArgumentsToHTTP(args); CollectionProperty argList = args.getArguments(); HTTPArgument httpArg = (HTTPArgument) argList.get(0).getObjectValue(); assertEquals("name.%3F", httpArg.getEncodedName()); assertEquals("value_+here", httpArg.getEncodedValue()); httpArg = (HTTPArgument) argList.get(1).getObjectValue(); assertEquals("name%24of+property", httpArg.getEncodedName()); assertEquals("value_.%2B", httpArg.getEncodedValue()); } public void testEncoding() throws Exception { HTTPArgument arg; arg = new HTTPArgument("name.?", "value_ here", false); assertEquals("name.?", arg.getName()); assertEquals("value_ here", arg.getValue()); assertEquals("name.%3F", arg.getEncodedName()); assertEquals("value_+here", arg.getEncodedValue()); // Show that can bypass encoding: arg.setAlwaysEncoded(false); assertEquals("name.?", arg.getEncodedName()); assertEquals("value_ here", arg.getEncodedValue()); // The sample does not use a valid encoding arg = new HTTPArgument("name.?", "value_ here", true); assertEquals("name.?", arg.getName()); assertEquals("value_ here", arg.getValue()); assertEquals("name.%3F", arg.getEncodedName()); assertEquals("value_+here", arg.getEncodedValue()); arg.setAlwaysEncoded(false); // by default, name/value are encoded on fetch assertEquals("name.?", arg.getEncodedName()); assertEquals("value_ here", arg.getEncodedValue()); // Try a real encoded argument arg = new HTTPArgument("name.%3F", "value_+here", true); assertEquals("name.?", arg.getName()); assertEquals("value_ here", arg.getValue()); assertEquals("name.%3F", arg.getEncodedName()); assertEquals("value_+here", arg.getEncodedValue()); // Show that can bypass encoding: arg.setAlwaysEncoded(false); assertEquals("name.?", arg.getEncodedName()); assertEquals("value_ here", arg.getEncodedValue()); arg = new HTTPArgument("", "\00\01\07", "", false); arg.setAlwaysEncoded(false); assertEquals("", arg.getEncodedName()); assertEquals("\00\01\07", arg.getEncodedValue()); } } ����������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/util/TestHTTPFileArgs.java���������������0000644�0001750�0001750�00000013221�12032647144�030162� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.util.List; import java.util.LinkedList; import junit.framework.TestCase; import org.apache.jmeter.testelement.property.PropertyIterator; public class TestHTTPFileArgs extends TestCase { public TestHTTPFileArgs(String name) { super(name); } public void testConstructors() throws Exception { HTTPFileArgs files = new HTTPFileArgs(); assertEquals(0, files.getHTTPFileArgCount()); } public void testAdding() throws Exception { HTTPFileArgs files = new HTTPFileArgs(); assertEquals(0, files.getHTTPFileArgCount()); files.addHTTPFileArg("hede"); assertEquals(1, files.getHTTPFileArgCount()); assertEquals("hede", ((HTTPFileArg) files.iterator().next().getObjectValue()).getPath()); HTTPFileArg file = new HTTPFileArg("hodo"); files.addHTTPFileArg(file); assertEquals(2, files.getHTTPFileArgCount()); PropertyIterator iter = files.iterator(); assertEquals("hede", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("hodo", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); files.addEmptyHTTPFileArg(); assertEquals(3, files.getHTTPFileArgCount()); iter = files.iterator(); assertEquals("hede", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("hodo", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); } public void testSetHTTPFileArgs() throws Exception { List<HTTPFileArg> newHTTPFileArgs = new LinkedList<HTTPFileArg>(); newHTTPFileArgs.add(new HTTPFileArg("hede")); HTTPFileArgs files = new HTTPFileArgs(); files.setHTTPFileArgs(newHTTPFileArgs); assertEquals(1, files.getHTTPFileArgCount()); assertEquals("hede", ((HTTPFileArg) files.iterator().next().getObjectValue()).getPath()); } public void testRemoving() throws Exception { HTTPFileArgs files = new HTTPFileArgs(); assertEquals(0, files.getHTTPFileArgCount()); files.addHTTPFileArg("hede"); assertEquals(1, files.getHTTPFileArgCount()); files.clear(); assertEquals(0, files.getHTTPFileArgCount()); files.addHTTPFileArg("file1"); files.addHTTPFileArg("file2"); files.addHTTPFileArg("file3"); HTTPFileArg file = new HTTPFileArg("file4"); files.addHTTPFileArg(file); files.addHTTPFileArg("file5"); files.addHTTPFileArg("file6"); assertEquals(6, files.getHTTPFileArgCount()); files.removeHTTPFileArg("file3"); assertEquals(5, files.getHTTPFileArgCount()); PropertyIterator iter = files.iterator(); assertEquals("file1", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file2", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file4", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file5", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file6", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); files.removeHTTPFileArg(file); assertEquals(4, files.getHTTPFileArgCount()); iter = files.iterator(); assertEquals("file1", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file2", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file5", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file6", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); files.removeHTTPFileArg(new HTTPFileArg("file5")); assertEquals(3, files.getHTTPFileArgCount()); iter = files.iterator(); assertEquals("file1", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file2", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file6", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); files.removeHTTPFileArg(1); assertEquals(2, files.getHTTPFileArgCount()); iter = files.iterator(); assertEquals("file1", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); assertEquals("file6", ((HTTPFileArg) iter.next().getObjectValue()).getPath()); files.removeAllHTTPFileArgs(); assertEquals(0, files.getHTTPFileArgCount()); } public void testToString() throws Exception { HTTPFileArgs files = new HTTPFileArgs(); files.addHTTPFileArg("file1"); files.addHTTPFileArg("file2"); files.addHTTPFileArg("file3"); assertEquals("path:'file1'|param:''|mimetype:''\n" +"path:'file2'|param:''|mimetype:''\n" +"path:'file3'|param:''|mimetype:''", files.toString()); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/���������������������������������0000755�0001750�0001750�00000000000�12165514773�024762� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/PutWriterTest.java���������������0000644�0001750�0001750�00000003436�12032647144�030430� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.net.URLConnection; import junit.framework.TestCase; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.protocol.http.util.HTTPConstants; public class PutWriterTest extends TestCase { public PutWriterTest(String name) { super(name); } public void testSetHeaders() throws Exception { URLConnection uc = new NullURLConnection(); HTTPSampler sampler = new HTTPSampler(); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("file1", "", "mime1")}); PutWriter pw = new PutWriter(); pw.setHeaders(uc, sampler); assertEquals("mime1", uc.getRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE)); uc = new NullURLConnection(); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("file2", "param2", "mime2")}); pw.setHeaders(uc, sampler); assertEquals("mime2", uc.getRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE)); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/HTTPNullSampler.java�������������0000644�0001750�0001750�00000003106�12032647144�030553� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.net.URL; /** * Dummy HTTPSampler class for use by classes that need an HTTPSampler, but that * don't need an actual sampler, e.g. for Parsing testing. */ public final class HTTPNullSampler extends HTTPSamplerBase { private static final long serialVersionUID = 240L; /** * Returns a sample Result with the request fields filled in. * * {@inheritDoc} */ @Override protected HTTPSampleResult sample(URL u, String method, boolean areFollowingRedirec, int depth) { HTTPSampleResult res = new HTTPSampleResult(); res.sampleStart(); res.setURL(u); res.sampleEnd(); return res; // throw new UnsupportedOperationException("For test purposes only"); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/PackageTest.java�����������������0000644�0001750�0001750�00000004576�12032647144�030024� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Jul 16, 2003 */ package org.apache.jmeter.protocol.http.sampler; import junit.framework.TestCase; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.protocol.http.config.gui.HttpDefaultsGui; import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui; import org.apache.jmeter.protocol.http.util.HTTPArgument; public class PackageTest extends TestCase { public PackageTest(String arg0) { super(arg0); } public void testConfiguring() throws Exception { HTTPSamplerBase sampler = (HTTPSamplerBase) new HttpTestSampleGui().createTestElement(); configure(sampler); } private void configure(HTTPSamplerBase sampler) throws Exception { sampler.addArgument("arg1", "val1"); ConfigTestElement config = (ConfigTestElement) new HttpDefaultsGui().createTestElement(); ((Arguments) config.getProperty(HTTPSamplerBase.ARGUMENTS).getObjectValue()).addArgument(new HTTPArgument( "config1", "configValue")); config.setRunningVersion(true); sampler.setRunningVersion(true); sampler.setRunningVersion(true); sampler.addTestElement(config); assertEquals("config1=configValue", sampler.getArguments().getArgument(1).toString()); sampler.recoverRunningVersion(); config.recoverRunningVersion(); assertEquals(1, sampler.getArguments().getArgumentCount()); sampler.addTestElement(config); assertEquals("config1=configValue", sampler.getArguments().getArgument(1).toString()); } } ����������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/PostWriterTest.java��������������0000644�0001750�0001750�00000122645�12032647144�030611� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class PostWriterTest extends TestCase { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String UTF_8 = "UTF-8"; private static final String HTTP_ENCODING = "ISO-8859-1"; private static final byte[] CRLF = { 0x0d, 0x0A }; private static byte[] TEST_FILE_CONTENT; private StubURLConnection connection; private HTTPSampler sampler; private File temporaryFile; private PostWriter postWriter; @Override protected void setUp() throws Exception { establishConnection(); sampler = new HTTPSampler();// This must be the original (Java) HTTP sampler postWriter=new PostWriter(); // Create the test file content TEST_FILE_CONTENT = "foo content &?=01234+56789-\u007c\u2aa1\u266a\u0153\u20a1\u0115\u0364\u00c5\u2052".getBytes(UTF_8); // create a temporary file to make sure we always have a file to give to the PostWriter // Whereever we are or Whatever the current path is. temporaryFile = File.createTempFile("foo", "txt"); OutputStream output = null; try { output = new FileOutputStream(temporaryFile); output.write(TEST_FILE_CONTENT); output.flush(); } finally { JOrphanUtils.closeQuietly(output); } } @Override protected void tearDown() throws Exception { // delete temporay file if(!temporaryFile.delete()) { fail("Could not delete file:"+temporaryFile.getAbsolutePath()); } } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.sendPostData(URLConnection, HTTPSampler)' * This method test sending a request which contains both formdata and file content */ public void testSendPostData() throws IOException { sampler.setMethod(HTTPConstants.POST); setupFilepart(sampler); String titleValue = "mytitle"; String descriptionValue = "mydescription"; setupFormData(sampler, titleValue, descriptionValue); // Test sending data with default encoding String contentEncoding = ""; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); byte[] expectedFormBody = createExpectedOutput(PostWriter.BOUNDARY, null, titleValue, descriptionValue, TEST_FILE_CONTENT); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as ISO-8859-1 establishConnection(); contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedOutput(PostWriter.BOUNDARY, contentEncoding, titleValue, descriptionValue, TEST_FILE_CONTENT); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as UTF-8 establishConnection(); titleValue = "mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5"; contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedOutput(PostWriter.BOUNDARY, contentEncoding, titleValue, descriptionValue, TEST_FILE_CONTENT); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending UTF-8 data with ISO-8859-1 content encoding establishConnection(); contentEncoding = UTF_8; sampler.setContentEncoding("ISO-8859-1"); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedOutput(PostWriter.BOUNDARY, contentEncoding, titleValue, descriptionValue, TEST_FILE_CONTENT); checkContentLength(connection, expectedFormBody.length); checkArraysHaveDifferentContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.sendPostData(URLConnection, HTTPSampler)' * This method test sending a HTTPSampler with form parameters, and only * the filename of a file. */ public void testSendPostData_NoFilename() throws IOException { setupNoFilename(sampler); String titleValue = "mytitle"; String descriptionValue = "mydescription"; setupFormData(sampler, titleValue, descriptionValue); // Test sending data with default encoding String contentEncoding = ""; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); byte[] expectedUrl = "title=mytitle&description=mydescription".getBytes(); // TODO - charset? checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); expectedUrl = "title=mytitle&description=mydescription".getBytes(UTF_8); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as ISO-8859-1 establishConnection(); contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); expectedUrl = "title=mytitle&description=mydescription".getBytes(contentEncoding); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); expectedUrl = "title=mytitle&description=mydescription".getBytes(UTF_8); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); connection.disconnect(); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.sendPostData(URLConnection, HTTPSampler)' * This method test sending file content as the only content of the post body */ public void testSendPostData_FileAsBody() throws IOException { setupFilepart(sampler, "", temporaryFile, ""); // Check using default encoding postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentLength(connection, TEST_FILE_CONTENT.length); checkArraysHaveSameContent(TEST_FILE_CONTENT, connection.getOutputStreamContent()); connection.disconnect(); // Check using a different encoding String otherEncoding; final String fileEncoding = System.getProperty( "file.encoding");// $NON-NLS-1$ log.info("file.encoding: "+fileEncoding); if (UTF_8.equalsIgnoreCase(fileEncoding) || "UTF8".equalsIgnoreCase(fileEncoding)){// $NON-NLS-1$ otherEncoding="ISO-8859-1"; // $NON-NLS-1$ } else { otherEncoding=UTF_8; } log.info("Using other encoding: "+otherEncoding); establishConnection(); sampler.setContentEncoding(otherEncoding); // File content is sent as binary, so the content encoding should not change the file data postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentLength(connection, TEST_FILE_CONTENT.length); checkArraysHaveSameContent(TEST_FILE_CONTENT, connection.getOutputStreamContent()); // Check that other encoding is not the current encoding checkArraysHaveDifferentContent(new String(TEST_FILE_CONTENT) // TODO - charset? .getBytes(otherEncoding), connection.getOutputStreamContent()); // If we have both file as body, and form data, then only form data will be sent setupFormData(sampler); establishConnection(); sampler.setContentEncoding(""); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); byte[] expectedUrl = "title=mytitle&description=mydescription".getBytes(); // TODO - charset? checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.sendPostData(URLConnection, HTTPSampler)' * This method test sending only a file multipart. */ public void testSendFileData_Multipart() throws IOException { sampler.setMethod(HTTPConstants.POST); String fileField = "upload"; String mimeType = "text/plain"; File file = temporaryFile; byte[] fileContent = TEST_FILE_CONTENT; setupFilepart(sampler, fileField, file, mimeType); // Test sending data with default encoding String contentEncoding = ""; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); byte[] expectedFormBody = createExpectedFilepartOutput(PostWriter.BOUNDARY, fileField, file, mimeType, fileContent, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as ISO-8859-1 establishConnection(); contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedFilepartOutput(PostWriter.BOUNDARY, fileField, file, mimeType, fileContent, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as UTF-8 establishConnection(); fileField = "some_file_field"; mimeType = "image/png"; contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); setupFilepart(sampler, fileField, file, mimeType); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedFilepartOutput(PostWriter.BOUNDARY, fileField, file, mimeType, fileContent, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.sendPostData(URLConnection, HTTPSampler)' * This method test sending only a formdata, as a multipart/form-data request. */ public void testSendFormData_Multipart() throws IOException { sampler.setMethod(HTTPConstants.POST); String titleField = "title"; String titleValue = "mytitle"; String descriptionField = "description"; String descriptionValue = "mydescription"; setupFormData(sampler, titleValue, descriptionValue); // Tell sampler to do multipart, even if we have no files to upload sampler.setDoMultipartPost(true); // Test sending data with default encoding String contentEncoding = ""; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); byte[] expectedFormBody = createExpectedFormdataOutput(PostWriter.BOUNDARY, null, titleField, titleValue, descriptionField, descriptionValue, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as ISO-8859-1 establishConnection(); contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedFormdataOutput(PostWriter.BOUNDARY, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as ISO-8859-1, with values that need to be urlencoded establishConnection(); titleValue = "mytitle+123 456&yes"; descriptionValue = "mydescription and some spaces"; contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedFormdataOutput(PostWriter.BOUNDARY, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as UTF-8 establishConnection(); titleValue = "mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5"; contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedFormdataOutput(PostWriter.BOUNDARY, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as UTF-8, with values that would have been urlencoded // if it was not sent as multipart establishConnection(); titleValue = "mytitle\u0153+\u20a1 \u0115&yes\u00c5"; descriptionValue = "mydescription \u0153 \u20a1 \u0115 \u00c5"; contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); expectedFormBody = createExpectedFormdataOutput(PostWriter.BOUNDARY, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, true); checkContentLength(connection, expectedFormBody.length); checkArraysHaveSameContent(expectedFormBody, connection.getOutputStreamContent()); connection.disconnect(); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.sendPostData(URLConnection, HTTPSampler)' * This method test sending only a formdata, as urlencoded data */ public void testSendFormData_Urlencoded() throws IOException { String titleValue = "mytitle"; String descriptionValue = "mydescription"; setupFormData(sampler, titleValue, descriptionValue); // Test sending data with default encoding String contentEncoding = ""; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); byte[] expectedUrl = ("title=" + titleValue + "&description=" + descriptionValue).getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), "ISO-8859-1"), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), "ISO-8859-1")); connection.disconnect(); // Test sending data as ISO-8859-1 establishConnection(); contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); expectedUrl = new StringBuilder("title=").append(titleValue).append("&description=") .append(descriptionValue).toString().getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), contentEncoding), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), contentEncoding)); connection.disconnect(); // Test sending data as ISO-8859-1, with values that need to be urlencoded establishConnection(); titleValue = "mytitle+123 456&yes"; descriptionValue = "mydescription and some spaces"; contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); String expectedString = "title=" + URLEncoder.encode(titleValue, contentEncoding) + "&description=" + URLEncoder.encode(descriptionValue, contentEncoding); expectedUrl = expectedString.getBytes(contentEncoding); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), contentEncoding), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), contentEncoding)); String unencodedString = "title=" + titleValue + "&description=" + descriptionValue; byte[] unexpectedUrl = unencodedString.getBytes(UTF_8); checkArraysHaveDifferentContent(unexpectedUrl, connection.getOutputStreamContent()); connection.disconnect(); // Test sending data as UTF-8 establishConnection(); titleValue = "mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5"; contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); expectedString = "title=" + URLEncoder.encode(titleValue, contentEncoding) + "&description=" + URLEncoder.encode(descriptionValue, contentEncoding); expectedUrl = expectedString.getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), contentEncoding), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), contentEncoding)); connection.disconnect(); // Test sending data as UTF-8, with values that needs to be urlencoded establishConnection(); titleValue = "mytitle\u0153+\u20a1 \u0115&yes\u00c5"; descriptionValue = "mydescription \u0153 \u20a1 \u0115 \u00c5"; contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); setupFormData(sampler, titleValue, descriptionValue); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); expectedString = "title=" + URLEncoder.encode(titleValue, UTF_8) + "&description=" + URLEncoder.encode(descriptionValue, UTF_8); expectedUrl = expectedString.getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), contentEncoding), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), contentEncoding)); unencodedString = "title=" + titleValue + "&description=" + descriptionValue; unexpectedUrl = unencodedString.getBytes("US-ASCII"); checkArraysHaveDifferentContent(unexpectedUrl, connection.getOutputStreamContent()); connection.disconnect(); // Test sending parameters which are urlencoded beforehand // The values must be URL encoded with UTF-8 encoding, because that // is what the HTTPArgument assumes // %C3%85 in UTF-8 is the same as %C5 in ISO-8859-1, which is the same as Å titleValue = "mytitle%20and%20space%2Ftest%C3%85"; descriptionValue = "mydescription+and+plus+as+space%2Ftest%C3%85"; setupFormData(sampler, true, titleValue, descriptionValue); // Test sending data with default encoding establishConnection(); contentEncoding = ""; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); StringBuilder sb = new StringBuilder(); expectedUrl = (sb.append("title=").append(titleValue.replaceAll("%20", "+").replaceAll("%C3%85", "%C5")) .append("&description=").append(descriptionValue.replaceAll("%C3%85", "%C5"))).toString().getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), "ISO-8859-1"), // HTTPSampler uses ISO-8859-1 as default encoding URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), "ISO-8859-1")); // HTTPSampler uses ISO-8859-1 as default encoding connection.disconnect(); // Test sending data as ISO-8859-1 establishConnection(); contentEncoding = "ISO-8859-1"; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); sb = new StringBuilder(); expectedUrl = (sb.append("title=").append(titleValue.replaceAll("%20", "+").replaceAll("%C3%85", "%C5")) .append("&description=").append(descriptionValue.replaceAll("%C3%85", "%C5"))).toString().getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), contentEncoding), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), contentEncoding)); connection.disconnect(); // Test sending data as UTF-8 establishConnection(); contentEncoding = UTF_8; sampler.setContentEncoding(contentEncoding); postWriter.setHeaders(connection, sampler); postWriter.sendPostData(connection, sampler); checkContentTypeUrlEncoded(connection); sb = new StringBuilder(); expectedUrl = (sb.append("title=").append(titleValue.replaceAll("%20", "+")).append("&description=").append(descriptionValue)).toString().getBytes("US-ASCII"); checkContentLength(connection, expectedUrl.length); checkArraysHaveSameContent(expectedUrl, connection.getOutputStreamContent()); assertEquals( URLDecoder.decode(new String(expectedUrl, "US-ASCII"), contentEncoding), URLDecoder.decode(new String(connection.getOutputStreamContent(), "US-ASCII"), contentEncoding)); connection.disconnect(); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.setHeaders(URLConnection, HTTPSampler)' */ public void testSetHeaders() throws IOException { sampler.setMethod(HTTPConstants.POST); setupFilepart(sampler); setupFormData(sampler); postWriter.setHeaders(connection, sampler); checkContentTypeMultipart(connection, PostWriter.BOUNDARY); } /* * Test method for 'org.apache.jmeter.protocol.http.sampler.postWriter.setHeaders(URLConnection, HTTPSampler)' */ public void testSetHeaders_NoFilename() throws IOException { setupNoFilename(sampler); setupFormData(sampler); postWriter.setHeaders(connection, sampler); checkContentTypeUrlEncoded(connection); checkContentLength(connection, "title=mytitle&description=mydescription".length()); } /** * setup commons parts of HTTPSampler with a no filename. * * @param httpSampler * @throws IOException */ private void setupNoFilename(HTTPSampler httpSampler) { setupFilepart(sampler, "upload", null, "application/octet-stream"); } /** * Setup the filepart with default values * * @param httpSampler */ private void setupFilepart(HTTPSampler httpSampler) { setupFilepart(sampler, "upload", temporaryFile, "text/plain"); } /** * Setup the filepart with specified values * * @param httpSampler */ private void setupFilepart(HTTPSampler httpSampler, String fileField, File file, String mimeType) { HTTPFileArg[] hfa = {new HTTPFileArg(file == null ? "" : file.getAbsolutePath(), fileField, mimeType)}; httpSampler.setHTTPFiles(hfa); } /** * Setup the form data with default values * * @param httpSampler */ private void setupFormData(HTTPSampler httpSampler) { setupFormData(httpSampler, "mytitle", "mydescription"); } /** * Setup the form data with specified values * * @param httpSampler */ private void setupFormData(HTTPSampler httpSampler, String titleValue, String descriptionValue) { setupFormData(sampler, false, titleValue, descriptionValue); } /** * Setup the form data with specified values * * @param httpSampler */ private void setupFormData(HTTPSampler httpSampler, boolean isEncoded, String titleValue, String descriptionValue) { Arguments args = new Arguments(); HTTPArgument argument1 = new HTTPArgument("title", titleValue, isEncoded); HTTPArgument argument2 = new HTTPArgument("description", descriptionValue, isEncoded); args.addArgument(argument1); args.addArgument(argument2); httpSampler.setArguments(args); } private void establishConnection() throws MalformedURLException { connection = new StubURLConnection("http://fake_url/test"); } /** * Create the expected output post body for form data and file multiparts * with default values for field names */ private byte[] createExpectedOutput( String boundaryString, String contentEncoding, String titleValue, String descriptionValue, byte[] fileContent) throws IOException { return createExpectedOutput(boundaryString, contentEncoding, "title", titleValue, "description", descriptionValue, "upload", fileContent); } /** * Create the expected output post body for form data and file multiparts * with specified values */ private byte[] createExpectedOutput( String boundaryString, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue, String fileField, byte[] fileContent) throws IOException { // Create the multiparts byte[] formdataMultipart = createExpectedFormdataOutput(boundaryString, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, false); byte[] fileMultipart = createExpectedFilepartOutput(boundaryString, fileField, temporaryFile, "text/plain", fileContent, false, true); // Join the two multiparts ByteArrayOutputStream output = new ByteArrayOutputStream(); output.write(formdataMultipart); output.write(fileMultipart); output.flush(); output.close(); return output.toByteArray(); } /** * Create the expected output multipart/form-data, with only form data, * and no file multipart * * @param lastMultipart true if this is the last multipart in the request */ private byte[] createExpectedFormdataOutput( String boundaryString, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue, boolean firstMultipart, boolean lastMultipart) throws IOException { final byte[] DASH_DASH = "--".getBytes(HTTP_ENCODING); // All form parameter always have text/plain as mime type final String mimeType="text/plain";//TODO make this a parameter? final ByteArrayOutputStream output = new ByteArrayOutputStream(); if(firstMultipart) { output.write(DASH_DASH); output.write(boundaryString.getBytes(HTTP_ENCODING)); output.write(CRLF); } output.write("Content-Disposition: form-data; name=\"".getBytes(HTTP_ENCODING)); output.write(titleField.getBytes(HTTP_ENCODING)); output.write("\"".getBytes(HTTP_ENCODING)); output.write(CRLF); output.write("Content-Type: ".getBytes(HTTP_ENCODING)); output.write(mimeType.getBytes(HTTP_ENCODING)); output.write("; charset=".getBytes(HTTP_ENCODING)); output.write((contentEncoding==null ? PostWriter.ENCODING : contentEncoding).getBytes(HTTP_ENCODING)); output.write(CRLF); output.write("Content-Transfer-Encoding: 8bit".getBytes(HTTP_ENCODING)); output.write(CRLF); output.write(CRLF); if(contentEncoding != null) { output.write(titleValue.getBytes(contentEncoding)); } else { output.write(titleValue.getBytes()); // TODO - charset? } output.write(CRLF); output.write(DASH_DASH); output.write(boundaryString.getBytes(HTTP_ENCODING)); output.write(CRLF); output.write("Content-Disposition: form-data; name=\"".getBytes(HTTP_ENCODING)); output.write(descriptionField.getBytes(HTTP_ENCODING)); output.write("\"".getBytes(HTTP_ENCODING)); output.write(CRLF); output.write("Content-Type: ".getBytes(HTTP_ENCODING)); output.write(mimeType.getBytes(HTTP_ENCODING)); output.write("; charset=".getBytes(HTTP_ENCODING)); output.write((contentEncoding==null ? PostWriter.ENCODING : contentEncoding).getBytes(HTTP_ENCODING)); output.write(CRLF); output.write("Content-Transfer-Encoding: 8bit".getBytes(HTTP_ENCODING)); output.write(CRLF); output.write(CRLF); if(contentEncoding != null) { output.write(descriptionValue.getBytes(contentEncoding)); } else { output.write(descriptionValue.getBytes()); // TODO - charset? } output.write(CRLF); output.write(DASH_DASH); output.write(boundaryString.getBytes(HTTP_ENCODING)); if(lastMultipart) { output.write(DASH_DASH); } output.write(CRLF); output.flush(); output.close(); return output.toByteArray(); } /** * Create the expected file multipart * * @param lastMultipart true if this is the last multipart in the request */ private byte[] createExpectedFilepartOutput( String boundaryString, String fileField, File file, String mimeType, byte[] fileContent, boolean firstMultipart, boolean lastMultipart) throws IOException { // The encoding used for http headers and control information final String httpEncoding = "ISO-8859-1"; final byte[] DASH_DASH = "--".getBytes(httpEncoding); final ByteArrayOutputStream output = new ByteArrayOutputStream(); if(firstMultipart) { output.write(DASH_DASH); output.write(boundaryString.getBytes(httpEncoding)); output.write(CRLF); } // replace all backslash with double backslash String filename = file.getName(); output.write("Content-Disposition: form-data; name=\"".getBytes(httpEncoding)); output.write(fileField.getBytes(httpEncoding)); output.write(("\"; filename=\"" + filename + "\"").getBytes(httpEncoding)); output.write(CRLF); output.write("Content-Type: ".getBytes(httpEncoding)); output.write(mimeType.getBytes(httpEncoding)); output.write(CRLF); output.write("Content-Transfer-Encoding: binary".getBytes(httpEncoding)); output.write(CRLF); output.write(CRLF); output.write(fileContent); output.write(CRLF); output.write(DASH_DASH); output.write(boundaryString.getBytes(httpEncoding)); if(lastMultipart) { output.write(DASH_DASH); } output.write(CRLF); output.flush(); output.close(); return output.toByteArray(); } /** * Check that the the two byte arrays have identical content * * @param expected * @param actual * @throws UnsupportedEncodingException */ private void checkArraysHaveSameContent(byte[] expected, byte[] actual) throws UnsupportedEncodingException { if(expected != null && actual != null) { if(expected.length != actual.length) { System.out.println(new String(expected,UTF_8)); System.out.println("--------------------"); System.out.println(new String(actual,UTF_8)); System.out.println("===================="); fail("arrays have different length, expected is " + expected.length + ", actual is " + actual.length); } else { for(int i = 0; i < expected.length; i++) { if(expected[i] != actual[i]) { System.out.println(new String(expected,0,i+1, UTF_8)); System.out.println("--------------------"); System.out.println(new String(actual,0,i+1, UTF_8)); System.out.println("===================="); fail("byte at position " + i + " is different, expected is " + expected[i] + ", actual is " + actual[i]); } } } } else { fail("expected or actual byte arrays were null"); } } /** * Check that the the two byte arrays different content * * @param expected * @param actual */ private void checkArraysHaveDifferentContent(byte[] expected, byte[] actual) { if(expected != null && actual != null) { if(expected.length == actual.length) { boolean allSame = true; for(int i = 0; i < expected.length; i++) { if(expected[i] != actual[i]) { allSame = false; break; } } if(allSame) { fail("all bytes were equal"); } } } else { fail("expected or actual byte arrays were null"); } } private void checkContentTypeMultipart(HttpURLConnection conn, String boundaryString) { assertEquals("multipart/form-data; boundary=" + boundaryString, conn.getRequestProperty("Content-Type")); } private void checkContentTypeUrlEncoded(HttpURLConnection conn) { assertEquals(HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED, conn.getRequestProperty("Content-Type")); } private void checkContentLength(HttpURLConnection conn, int length) { assertEquals(Integer.toString(length), conn.getRequestProperty("Content-Length")); } /** * Mock an HttpURLConnection. * extends HttpURLConnection instead of just URLConnection because there is a cast in PostWriter. */ private static class StubURLConnection extends HttpURLConnection { private ByteArrayOutputStream output = new ByteArrayOutputStream(); private Map<String, String> properties = new HashMap<String, String>(); public StubURLConnection(String url) throws MalformedURLException { super(new URL(url)); } @Override public void connect() throws IOException { } @Override public OutputStream getOutputStream() throws IOException { return output; } @Override public void disconnect() { } @Override public boolean usingProxy() { return false; } @Override public String getRequestProperty(String key) { return properties.get(key); } @Override public void setRequestProperty(String key, String value) { properties.put(key, value); } public byte[] getOutputStreamContent() { return output.toByteArray(); } } } �������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/TestHTTPSamplers.java������������0000644�0001750�0001750�00000033424�12032647144�030751� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import junit.framework.TestCase; public class TestHTTPSamplers extends TestCase { public TestHTTPSamplers(String arg0) { super(arg0); } // Parse arguments singly public void testParseArguments(){ HTTPSamplerBase sampler = new HTTPNullSampler(); Arguments args; Argument arg; args = sampler.getArguments(); assertEquals(0,args.getArgumentCount()); assertEquals(0,sampler.getHTTPFileCount()); sampler.parseArguments(""); args = sampler.getArguments(); assertEquals(0,args.getArgumentCount()); assertEquals(0,sampler.getHTTPFileCount()); sampler.parseArguments("name1"); args = sampler.getArguments(); assertEquals(1,args.getArgumentCount()); arg=args.getArgument(0); assertEquals("name1",arg.getName()); assertEquals("",arg.getMetaData()); assertEquals("",arg.getValue()); assertEquals(0,sampler.getHTTPFileCount()); sampler.parseArguments("name2="); args = sampler.getArguments(); assertEquals(2,args.getArgumentCount()); arg=args.getArgument(1); assertEquals("name2",arg.getName()); assertEquals("=",arg.getMetaData()); assertEquals("",arg.getValue()); assertEquals(0,sampler.getHTTPFileCount()); sampler.parseArguments("name3=value3"); args = sampler.getArguments(); assertEquals(3,args.getArgumentCount()); arg=args.getArgument(2); assertEquals("name3",arg.getName()); assertEquals("=",arg.getMetaData()); assertEquals("value3",arg.getValue()); assertEquals(0,sampler.getHTTPFileCount()); } // Parse arguments all at once public void testParseArguments2(){ HTTPSamplerBase sampler = new HTTPNullSampler(); Arguments args; Argument arg; args = sampler.getArguments(); assertEquals(0,args.getArgumentCount()); assertEquals(0,sampler.getHTTPFileCount()); sampler.parseArguments("&name1&name2=&name3=value3"); args = sampler.getArguments(); assertEquals(3,args.getArgumentCount()); assertEquals(0,sampler.getHTTPFileCount()); arg=args.getArgument(0); assertEquals("name1",arg.getName()); assertEquals("",arg.getMetaData()); assertEquals("",arg.getValue()); assertEquals(0,sampler.getHTTPFileCount()); arg=args.getArgument(1); assertEquals("name2",arg.getName()); assertEquals("=",arg.getMetaData()); assertEquals("",arg.getValue()); assertEquals(0,sampler.getHTTPFileCount()); arg=args.getArgument(2); assertEquals("name3",arg.getName()); assertEquals("=",arg.getMetaData()); assertEquals("value3",arg.getValue()); assertEquals(0,sampler.getHTTPFileCount()); } public void testArgumentWithoutEquals() throws Exception { HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setProtocol("http"); sampler.setMethod(HTTPConstants.GET); sampler.setPath("/index.html?pear"); sampler.setDomain("www.apache.org"); assertEquals("http://www.apache.org/index.html?pear", sampler.getUrl().toString()); } public void testMakingUrl() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.addArgument("param1", "value1"); config.setPath("/index.html"); config.setDomain("www.apache.org"); assertEquals("http://www.apache.org/index.html?param1=value1", config.getUrl().toString()); } public void testRedirect() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.setDomain("192.168.0.1"); HTTPSampleResult res = new HTTPSampleResult(); res.sampleStart(); res.setURL(config.getUrl()); res.setResponseCode("301"); res.sampleEnd(); res.setRedirectLocation("./"); config.followRedirects(res , 0); assertEquals("http://192.168.0.1/", config.getUrl().toString()); res.setRedirectLocation("."); config.followRedirects(res , 0); assertEquals("http://192.168.0.1/", config.getUrl().toString()); res.setRedirectLocation("../"); config.followRedirects(res , 0); assertEquals("http://192.168.0.1/", config.getUrl().toString()); } public void testMakingUrl2() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.addArgument("param1", "value1"); config.setPath("/index.html?p1=p2"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1=value1&p1=p2", config.getUrl().toString()); } public void testMakingUrl3() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.POST); config.addArgument("param1", "value1"); config.setPath("/index.html?p1=p2"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?p1=p2", config.getUrl().toString()); } // test cases for making Url, and exercise method // addArgument(String name,String value,String metadata) public void testMakingUrl4() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.addArgument("param1", "value1", "="); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1=value1", config.getUrl().toString()); } public void testMakingUrl5() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.addArgument("param1", "", "="); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1=", config.getUrl().toString()); } public void testMakingUrl6() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.addArgument("param1", "", ""); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1", config.getUrl().toString()); } // test cases for making Url, and exercise method // parseArguments(String queryString) public void testMakingUrl7() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.parseArguments("param1=value1"); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1=value1", config.getUrl().toString()); } public void testMakingUrl8() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.parseArguments("param1="); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1=", config.getUrl().toString()); } public void testMakingUrl9() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.parseArguments("param1"); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html?param1", config.getUrl().toString()); } public void testMakingUrl10() throws Exception { HTTPSamplerBase config = new HTTPNullSampler(); config.setProtocol("http"); config.setMethod(HTTPConstants.GET); config.parseArguments(""); config.setPath("/index.html"); config.setDomain("192.168.0.1"); assertEquals("http://192.168.0.1/index.html", config.getUrl().toString()); } public void testFileList(){ HTTPSamplerBase config = new HTTPNullSampler(); HTTPFileArg[] arg; arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(0,arg.length); config.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("","","")}); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(0,arg.length); config.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("","","text/plain")}); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(1,arg.length); assertEquals("text/plain",arg[0].getMimeType()); assertEquals("",arg[0].getPath()); assertEquals("",arg[0].getParamName()); config.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("/tmp/test123.tmp","test123.tmp","text/plain")}); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(1,arg.length); assertEquals("text/plain",arg[0].getMimeType()); assertEquals("/tmp/test123.tmp",arg[0].getPath()); assertEquals("test123.tmp",arg[0].getParamName()); HTTPFileArg[] files = {}; // Ignore empty file specs config.setHTTPFiles(files); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(0,arg.length); files = new HTTPFileArg[]{ new HTTPFileArg(), new HTTPFileArg(), }; config.setHTTPFiles(files); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(0,arg.length); // Ignore trailing empty spec files = new HTTPFileArg[]{ new HTTPFileArg("file"), new HTTPFileArg(), }; config.setHTTPFiles(files); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(1,arg.length); // Ignore leading empty spec files = new HTTPFileArg[]{ new HTTPFileArg(), new HTTPFileArg("file1"), new HTTPFileArg(), new HTTPFileArg("file2"), new HTTPFileArg(), }; config.setHTTPFiles(files); arg = config.getHTTPFiles(); assertNotNull(arg); assertEquals(2,arg.length); } public void testSetAndGetFileField() { HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("","param","")}); HTTPFileArg file = sampler.getHTTPFiles()[0]; assertEquals("param", file.getParamName()); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("","param2","")}); file = sampler.getHTTPFiles()[0]; assertEquals("param2", file.getParamName()); } public void testSetAndGetFilename() { HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("name","","")}); HTTPFileArg file = sampler.getHTTPFiles()[0]; assertEquals("name", file.getPath()); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("name2","","")}); file = sampler.getHTTPFiles()[0]; assertEquals("name2", file.getPath()); } public void testSetAndGetMimetype() { HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("","","mime")}); HTTPFileArg file = sampler.getHTTPFiles()[0]; assertEquals("mime", file.getMimeType()); sampler.setHTTPFiles(new HTTPFileArg[]{new HTTPFileArg("","","mime2")}); file = sampler.getHTTPFiles()[0]; assertEquals("mime2", file.getMimeType()); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000000�0000000�0000000�00000000160�00000000000�011562� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/TestHTTPSamplersAgainstHttpMirrorServer.java�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/TestHTTPSamplersAgainstHttpMirror0000644�0001750�0001750�00000214721�12032647144�033374� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.net.URL; import java.util.Locale; import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.control.HttpMirrorServer; import org.apache.jmeter.protocol.http.control.TestHTTPMirrorThread; import org.apache.jmeter.protocol.http.util.EncoderCache; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; import junit.framework.Test; import junit.framework.TestSuite; import junit.extensions.TestSetup; /** * Class for performing actual samples for HTTPSampler and HTTPSampler2. * The samples are executed against the HttpMirrorServer, which is * started when the unit tests are executed. */ public class TestHTTPSamplersAgainstHttpMirrorServer extends JMeterTestCase { private static final int HTTP_SAMPLER = 0; private static final int HTTP_SAMPLER2 = 1; private static final int HTTP_SAMPLER3 = 2; /** The encodings used for http headers and control information */ private static final String ISO_8859_1 = "ISO-8859-1"; // $NON-NLS-1$ private static final String US_ASCII = "US-ASCII"; // $NON-NLS-1$ private static final byte[] CRLF = { 0x0d, 0x0A }; private static final int MIRROR_PORT = 8182; // Different from TestHTTPMirrorThread port and standard mirror server private static byte[] TEST_FILE_CONTENT; private static File temporaryFile; private final int item; public TestHTTPSamplersAgainstHttpMirrorServer(String arg0) { super(arg0); this.item = -1; } // additional ctor for processing tests which use int parameters public TestHTTPSamplersAgainstHttpMirrorServer(String arg0, int item) { super(arg0); this.item = item; } // This is used to emulate @before class and @after class public static Test suite(){ final TestSuite testSuite = new TestSuite(TestHTTPSamplersAgainstHttpMirrorServer.class); // Add parameterised tests. For simplicity we assune each has cases 0-10 for(int i=0; i<11; i++) { testSuite.addTest(new TestHTTPSamplersAgainstHttpMirrorServer("itemised_testGetRequest_Parameters", i)); testSuite.addTest(new TestHTTPSamplersAgainstHttpMirrorServer("itemised_testGetRequest_Parameters2", i)); testSuite.addTest(new TestHTTPSamplersAgainstHttpMirrorServer("itemised_testGetRequest_Parameters3", i)); testSuite.addTest(new TestHTTPSamplersAgainstHttpMirrorServer("itemised_testPostRequest_UrlEncoded", i)); testSuite.addTest(new TestHTTPSamplersAgainstHttpMirrorServer("itemised_testPostRequest_UrlEncoded2", i)); testSuite.addTest(new TestHTTPSamplersAgainstHttpMirrorServer("itemised_testPostRequest_UrlEncoded3", i)); } TestSetup setup = new TestSetup(testSuite){ private HttpMirrorServer httpServer; @Override protected void setUp() throws Exception { httpServer = TestHTTPMirrorThread.startHttpMirror(MIRROR_PORT); // Create the test file content TEST_FILE_CONTENT = "some foo content &?=01234+56789-\u007c\u2aa1\u266a\u0153\u20a1\u0115\u0364\u00c5\u2052\uc385%C3%85".getBytes("UTF-8"); // create a temporary file to make sure we always have a file to give to the PostWriter // Whereever we are or Whatever the current path is. temporaryFile = File.createTempFile("TestHTTPSamplersAgainstHttpMirrorServer", "tmp"); OutputStream output = new FileOutputStream(temporaryFile); output.write(TEST_FILE_CONTENT); output.flush(); output.close(); } @Override protected void tearDown() throws Exception { // Shutdown mirror server httpServer.stopServer(); httpServer = null; // delete temporay file if(!temporaryFile.delete()) { fail("Could not delete file:"+temporaryFile.getAbsolutePath()); } } }; return setup; } public void itemised_testPostRequest_UrlEncoded() throws Exception { testPostRequest_UrlEncoded(HTTP_SAMPLER, ISO_8859_1, item); } public void itemised_testPostRequest_UrlEncoded2() throws Exception { testPostRequest_UrlEncoded(HTTP_SAMPLER2, US_ASCII, item); } public void itemised_testPostRequest_UrlEncoded3() throws Exception { testPostRequest_UrlEncoded(HTTP_SAMPLER3, US_ASCII, item); } public void testPostRequest_FormMultipart_0() throws Exception { testPostRequest_FormMultipart(HTTP_SAMPLER, ISO_8859_1); } public void testPostRequest_FormMultipart2() throws Exception { testPostRequest_FormMultipart(HTTP_SAMPLER2, US_ASCII); } public void testPostRequest_FormMultipart3() throws Exception { testPostRequest_FormMultipart(HTTP_SAMPLER3, US_ASCII); } public void testPostRequest_FileUpload() throws Exception { testPostRequest_FileUpload(HTTP_SAMPLER, ISO_8859_1); } public void testPostRequest_FileUpload2() throws Exception { testPostRequest_FileUpload(HTTP_SAMPLER2, US_ASCII); } public void testPostRequest_FileUpload3() throws Exception { testPostRequest_FileUpload(HTTP_SAMPLER3, US_ASCII); } public void testPostRequest_BodyFromParameterValues() throws Exception { testPostRequest_BodyFromParameterValues(HTTP_SAMPLER, ISO_8859_1); } public void testPostRequest_BodyFromParameterValues2() throws Exception { testPostRequest_BodyFromParameterValues(HTTP_SAMPLER2, US_ASCII); } public void testPostRequest_BodyFromParameterValues3() throws Exception { testPostRequest_BodyFromParameterValues(HTTP_SAMPLER3, US_ASCII); } public void testGetRequest() throws Exception { testGetRequest(HTTP_SAMPLER); } public void testGetRequest2() throws Exception { testGetRequest(HTTP_SAMPLER2); } public void testGetRequest3() throws Exception { testGetRequest(HTTP_SAMPLER3); } public void itemised_testGetRequest_Parameters() throws Exception { testGetRequest_Parameters(HTTP_SAMPLER, item); } public void itemised_testGetRequest_Parameters2() throws Exception { testGetRequest_Parameters(HTTP_SAMPLER2, item); } public void itemised_testGetRequest_Parameters3() throws Exception { testGetRequest_Parameters(HTTP_SAMPLER3, item); } private void testPostRequest_UrlEncoded(int samplerType, String samplerDefaultEncoding, int test) throws Exception { String titleField = "title"; String titleValue = "mytitle"; String descriptionField = "description"; String descriptionValue = "mydescription"; HTTPSamplerBase sampler = createHttpSampler(samplerType); HTTPSampleResult res; String contentEncoding; switch(test) { case 0: // Test sending data with default encoding contentEncoding = ""; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, false); break; case 1: // Test sending data as ISO-8859-1 contentEncoding = ISO_8859_1; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, false); break; case 2: // Test sending data as UTF-8 contentEncoding = "UTF-8"; titleValue = "mytitle2\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription2\u0153\u20a1\u0115\u00c5"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, false); break; case 3: // Test sending data as UTF-8, with values that will change when urlencoded contentEncoding = "UTF-8"; titleValue = "mytitle3/="; descriptionValue = "mydescription3 /\\"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, false); break; case 4: // Test sending data as UTF-8, with values that have been urlencoded contentEncoding = "UTF-8"; titleValue = "mytitle4%2F%3D"; descriptionValue = "mydescription4+++%2F%5C"; setupUrl(sampler, contentEncoding); setupFormData(sampler, true, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true); break; case 5: // Test sending data as UTF-8, with values similar to __VIEWSTATE parameter that .net uses contentEncoding = "UTF-8"; titleValue = "/wEPDwULLTE2MzM2OTA0NTYPZBYCAgMPZ/rA+8DZ2dnZ2dnZ2d/GNDar6OshPwdJc="; descriptionValue = "mydescription5"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, false); break; case 6: // Test sending data as UTF-8, with values similar to __VIEWSTATE parameter that .net uses, // with values urlencoded, but the always encode set to false for the arguments // This is how the HTTP Proxy server adds arguments to the sampler contentEncoding = "UTF-8"; titleValue = "%2FwEPDwULLTE2MzM2OTA0NTYPZBYCAgMPZ%2FrA%2B8DZ2dnZ2dnZ2d%2FGNDar6OshPwdJc%3D"; descriptionValue = "mydescription6"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); assertFalse(((HTTPArgument)sampler.getArguments().getArgument(0)).isAlwaysEncoded()); assertFalse(((HTTPArgument)sampler.getArguments().getArgument(1)).isAlwaysEncoded()); checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true); break; case 7: // Test sending data as UTF-8, where user defined variables are used // to set the value for form data JMeterUtils.setLocale(Locale.ENGLISH); TestPlan testPlan = new TestPlan(); JMeterVariables vars = new JMeterVariables(); vars.put("title_prefix", "a test\u00c5"); vars.put("description_suffix", "the_end"); JMeterContextService.getContext().setVariables(vars); JMeterContextService.getContext().setSamplingStarted(true); ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(testPlan.getUserDefinedVariables()); contentEncoding = "UTF-8"; titleValue = "${title_prefix}mytitle7\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription7\u0153\u20a1\u0115\u00c5${description_suffix}"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); // Replace the variables in the sampler replacer.replaceValues(sampler); res = executeSampler(sampler); String expectedTitleValue = "a test\u00c5mytitle7\u0153\u20a1\u0115\u00c5"; String expectedDescriptionValue = "mydescription7\u0153\u20a1\u0115\u00c5the_end"; checkPostRequestUrlEncoded(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, expectedTitleValue, descriptionField, expectedDescriptionValue, false); break; case 8: break; case 9: break; case 10: break; default: fail("Unexpected switch value: "+test); } } private void testPostRequest_FormMultipart(int samplerType, String samplerDefaultEncoding) throws Exception { String titleField = "title"; String titleValue = "mytitle"; String descriptionField = "description"; String descriptionValue = "mydescription"; // Test sending data with default encoding HTTPSamplerBase sampler = createHttpSampler(samplerType); String contentEncoding = ""; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); HTTPSampleResult res = executeSampler(sampler); checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue); // Test sending data as ISO-8859-1 sampler = createHttpSampler(samplerType); contentEncoding = ISO_8859_1; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); res = executeSampler(sampler); checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue); // Test sending data as UTF-8 sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); res = executeSampler(sampler); checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue); // Test sending data as UTF-8, with values that would have been urlencoded // if it was not sent as multipart sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle/="; descriptionValue = "mydescription /\\"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); res = executeSampler(sampler); checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue); // Test sending data as UTF-8, with values that have been urlencoded sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle%2F%3D"; descriptionValue = "mydescription+++%2F%5C"; setupUrl(sampler, contentEncoding); setupFormData(sampler, true, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); res = executeSampler(sampler); String expectedTitleValue = "mytitle/="; String expectedDescriptionValue = "mydescription /\\"; checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, expectedTitleValue, descriptionField, expectedDescriptionValue); // Test sending data as UTF-8, with values similar to __VIEWSTATE parameter that .net uses sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "/wEPDwULLTE2MzM2OTA0NTYPZBYCAgMPZ/rA+8DZ2dnZ2dnZ2d/GNDar6OshPwdJc="; descriptionValue = "mydescription"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); res = executeSampler(sampler); checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue); // Test sending data as UTF-8, where user defined variables are used // to set the value for form data JMeterUtils.setLocale(Locale.ENGLISH); TestPlan testPlan = new TestPlan(); JMeterVariables vars = new JMeterVariables(); vars.put("title_prefix", "a test\u00c5"); vars.put("description_suffix", "the_end"); JMeterContextService.getContext().setVariables(vars); JMeterContextService.getContext().setSamplingStarted(true); ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(testPlan.getUserDefinedVariables()); sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "${title_prefix}mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5${description_suffix}"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); sampler.setDoMultipartPost(true); // Replace the variables in the sampler replacer.replaceValues(sampler); res = executeSampler(sampler); expectedTitleValue = "a test\u00c5mytitle\u0153\u20a1\u0115\u00c5"; expectedDescriptionValue = "mydescription\u0153\u20a1\u0115\u00c5the_end"; checkPostRequestFormMultipart(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, expectedTitleValue, descriptionField, expectedDescriptionValue); } private void testPostRequest_FileUpload(int samplerType, String samplerDefaultEncoding) throws Exception { String titleField = "title"; String titleValue = "mytitle"; String descriptionField = "description"; String descriptionValue = "mydescription"; String fileField = "file1"; String fileMimeType = "text/plain"; // Test sending data with default encoding HTTPSamplerBase sampler = createHttpSampler(samplerType); String contentEncoding = ""; setupUrl(sampler, contentEncoding); setupFileUploadData(sampler, false, titleField, titleValue, descriptionField, descriptionValue, fileField, temporaryFile, fileMimeType); HTTPSampleResult res = executeSampler(sampler); checkPostRequestFileUpload(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, fileField, temporaryFile, fileMimeType, TEST_FILE_CONTENT); // Test sending data as ISO-8859-1 sampler = createHttpSampler(samplerType); contentEncoding = ISO_8859_1; setupUrl(sampler, contentEncoding); setupFileUploadData(sampler, false, titleField, titleValue, descriptionField, descriptionValue, fileField, temporaryFile, fileMimeType); res = executeSampler(sampler); checkPostRequestFileUpload(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, fileField, temporaryFile, fileMimeType, TEST_FILE_CONTENT); // Test sending data as UTF-8 sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5"; setupUrl(sampler, contentEncoding); setupFileUploadData(sampler, false, titleField, titleValue, descriptionField, descriptionValue, fileField, temporaryFile, fileMimeType); res = executeSampler(sampler); checkPostRequestFileUpload(sampler, res, samplerDefaultEncoding, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, fileField, temporaryFile, fileMimeType, TEST_FILE_CONTENT); } private void testPostRequest_BodyFromParameterValues(int samplerType, String samplerDefaultEncoding) throws Exception { final String titleField = ""; // ensure only values are used String titleValue = "mytitle"; final String descriptionField = ""; // ensure only values are used String descriptionValue = "mydescription"; // Test sending data with default encoding HTTPSamplerBase sampler = createHttpSampler(samplerType); String contentEncoding = ""; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); HTTPSampleResult res = executeSampler(sampler); String expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as ISO-8859-1 sampler = createHttpSampler(samplerType); contentEncoding = ISO_8859_1; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8 sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, with values that will change when urlencoded sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle/="; descriptionValue = "mydescription /\\"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, with values that will change when urlencoded, and where // we tell the sampler to urlencode the parameter value sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle/="; descriptionValue = "mydescription /\\"; setupUrl(sampler, contentEncoding); setupFormData(sampler, true, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); expectedPostBody = URLEncoder.encode(titleValue + descriptionValue, contentEncoding); checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, with values that have been urlencoded sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle%2F%3D"; descriptionValue = "mydescription+++%2F%5C"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, with values that have been urlencoded, and // where we tell the sampler to urlencode the parameter values sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle%2F%3D"; descriptionValue = "mydescription+++%2F%5C"; setupUrl(sampler, contentEncoding); setupFormData(sampler, true, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, with values similar to __VIEWSTATE parameter that .net uses sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "/wEPDwULLTE2MzM2OTA0NTYPZBYCAgMPZ/rA+8DZ2dnZ2dnZ2d/GNDar6OshPwdJc="; descriptionValue = "mydescription"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, with + as part of the value, // where the value is set in sampler as not urluencoded, but the // isalwaysencoded flag of the argument is set to false. // This mimics the HTTPConstants.addNonEncodedArgument, which the // Proxy server calls in some cases sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle++"; descriptionValue = "mydescription+"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); res = executeSampler(sampler); expectedPostBody = titleValue + descriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); // Test sending data as UTF-8, where user defined variables are used // to set the value for form data JMeterUtils.setLocale(Locale.ENGLISH); TestPlan testPlan = new TestPlan(); JMeterVariables vars = new JMeterVariables(); vars.put("title_prefix", "a test\u00c5"); vars.put("description_suffix", "the_end"); JMeterContextService.getContext().setVariables(vars); JMeterContextService.getContext().setSamplingStarted(true); ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(testPlan.getUserDefinedVariables()); sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "${title_prefix}mytitle\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription\u0153\u20a1\u0115\u00c5${description_suffix}"; setupUrl(sampler, contentEncoding); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); ((HTTPArgument)sampler.getArguments().getArgument(0)).setAlwaysEncoded(false); ((HTTPArgument)sampler.getArguments().getArgument(1)).setAlwaysEncoded(false); // Replace the variables in the sampler replacer.replaceValues(sampler); res = executeSampler(sampler); String expectedTitleValue = "a test\u00c5mytitle\u0153\u20a1\u0115\u00c5"; String expectedDescriptionValue = "mydescription\u0153\u20a1\u0115\u00c5the_end"; expectedPostBody = expectedTitleValue+ expectedDescriptionValue; checkPostRequestBody(sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody); } private void testGetRequest(int samplerType) throws Exception { // Test sending simple HTTP get // Test sending data with default encoding HTTPSamplerBase sampler = createHttpSampler(samplerType); String contentEncoding = ""; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); HTTPSampleResult res = executeSampler(sampler); checkGetRequest(sampler, res); // Test sending data with ISO-8859-1 encoding sampler = createHttpSampler(samplerType); contentEncoding = ISO_8859_1; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); res = executeSampler(sampler); checkGetRequest(sampler, res); // Test sending data with UTF-8 encoding sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); res = executeSampler(sampler); checkGetRequest(sampler, res); } private void testGetRequest_Parameters(int samplerType, int test) throws Exception { String titleField = "title"; String titleValue = "mytitle"; String descriptionField = "description"; String descriptionValue = "mydescription"; HTTPSamplerBase sampler = createHttpSampler(samplerType); String contentEncoding; HTTPSampleResult res; URL executedUrl; switch(test) { case 0: // Test sending simple HTTP get // Test sending data with default encoding contentEncoding = ""; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); sampler.setRunningVersion(true); executedUrl = sampler.getUrl(); sampler.setRunningVersion(false); checkGetRequest_Parameters(sampler, res, contentEncoding, executedUrl, titleField, titleValue, descriptionField, descriptionValue, false); break; case 1: // Test sending data with ISO-8859-1 encoding sampler = createHttpSampler(samplerType); contentEncoding = ISO_8859_1; titleValue = "mytitle1\uc385"; descriptionValue = "mydescription1\uc385"; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); sampler.setRunningVersion(true); executedUrl = sampler.getUrl(); sampler.setRunningVersion(false); checkGetRequest_Parameters(sampler, res, contentEncoding, executedUrl, titleField, titleValue, descriptionField, descriptionValue, false); break; case 2: // Test sending data with UTF-8 encoding sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle2\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription2\u0153\u20a1\u0115\u00c5"; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); sampler.setRunningVersion(true); executedUrl = sampler.getUrl(); sampler.setRunningVersion(false); checkGetRequest_Parameters(sampler, res, contentEncoding, executedUrl, titleField, titleValue, descriptionField, descriptionValue, false); break; case 3: // Test sending data as UTF-8, with values that changes when urlencoded sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle3\u0153+\u20a1 \u0115&yes\u00c5"; descriptionValue = "mydescription3 \u0153 \u20a1 \u0115 \u00c5"; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); sampler.setRunningVersion(true); executedUrl = sampler.getUrl(); sampler.setRunningVersion(false); checkGetRequest_Parameters(sampler, res, contentEncoding, executedUrl, titleField, titleValue, descriptionField, descriptionValue, false); break; case 4: // Test sending data as UTF-8, with values that have been urlencoded sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "mytitle4%2F%3D"; descriptionValue = "mydescription4+++%2F%5C"; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); setupFormData(sampler, true, titleField, titleValue, descriptionField, descriptionValue); res = executeSampler(sampler); sampler.setRunningVersion(true); executedUrl = sampler.getUrl(); sampler.setRunningVersion(false); checkGetRequest_Parameters(sampler, res, contentEncoding, executedUrl, titleField, titleValue, descriptionField, descriptionValue, true); break; case 5: // Test sending data as UTF-8, where user defined variables are used // to set the value for form data JMeterUtils.setLocale(Locale.ENGLISH); TestPlan testPlan = new TestPlan(); JMeterVariables vars = new JMeterVariables(); vars.put("title_prefix", "a test\u00c5"); vars.put("description_suffix", "the_end"); JMeterContextService.getContext().setVariables(vars); JMeterContextService.getContext().setSamplingStarted(true); ValueReplacer replacer = new ValueReplacer(); replacer.setUserDefinedVariables(testPlan.getUserDefinedVariables()); sampler = createHttpSampler(samplerType); contentEncoding = "UTF-8"; titleValue = "${title_prefix}mytitle5\u0153\u20a1\u0115\u00c5"; descriptionValue = "mydescription5\u0153\u20a1\u0115\u00c5${description_suffix}"; setupUrl(sampler, contentEncoding); sampler.setMethod(HTTPConstants.GET); setupFormData(sampler, false, titleField, titleValue, descriptionField, descriptionValue); // Replace the variables in the sampler replacer.replaceValues(sampler); res = executeSampler(sampler); String expectedTitleValue = "a test\u00c5mytitle5\u0153\u20a1\u0115\u00c5"; String expectedDescriptionValue = "mydescription5\u0153\u20a1\u0115\u00c5the_end"; sampler.setRunningVersion(true); executedUrl = sampler.getUrl(); sampler.setRunningVersion(false); checkGetRequest_Parameters(sampler, res, contentEncoding, executedUrl, titleField, expectedTitleValue, descriptionField, expectedDescriptionValue, false); break; case 6: break; case 7: break; case 8: break; case 9: break; case 10: break; default: fail("Unexpected switch value: "+test); } } private HTTPSampleResult executeSampler(HTTPSamplerBase sampler) { sampler.setRunningVersion(true); sampler.threadStarted(); HTTPSampleResult res = (HTTPSampleResult) sampler.sample(); sampler.threadFinished(); sampler.setRunningVersion(false); return res; } private void checkPostRequestUrlEncoded( HTTPSamplerBase sampler, HTTPSampleResult res, String samplerDefaultEncoding, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue, boolean valuesAlreadyUrlEncoded) throws IOException { if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = samplerDefaultEncoding; } // Check URL assertEquals(sampler.getUrl(), res.getURL()); String expectedPostBody = null; if(!valuesAlreadyUrlEncoded) { String expectedTitle = URLEncoder.encode(titleValue, contentEncoding); String expectedDescription = URLEncoder.encode(descriptionValue, contentEncoding); expectedPostBody = titleField + "=" + expectedTitle + "&" + descriptionField + "=" + expectedDescription; } else { expectedPostBody = titleField + "=" + titleValue + "&" + descriptionField + "=" + descriptionValue; } // Check the request checkPostRequestBody( sampler, res, samplerDefaultEncoding, contentEncoding, expectedPostBody ); } private void checkPostRequestFormMultipart( HTTPSamplerBase sampler, HTTPSampleResult res, String samplerDefaultEncoding, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue) throws IOException { if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = samplerDefaultEncoding; } // Check URL assertEquals(sampler.getUrl(), res.getURL()); String boundaryString = getBoundaryStringFromContentType(res.getRequestHeaders()); assertNotNull(boundaryString); byte[] expectedPostBody = createExpectedFormdataOutput(boundaryString, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, true); // Check request headers checkHeaderTypeLength(res.getRequestHeaders(), "multipart/form-data" + "; boundary=" + boundaryString, expectedPostBody.length); // Check post body from the result query string checkArraysHaveSameContent(expectedPostBody, res.getQueryString().getBytes(contentEncoding), contentEncoding, res); // Find the data sent to the mirror server, which the mirror server is sending back to us String dataSentToMirrorServer = new String(res.getResponseData(), contentEncoding); int posDividerHeadersAndBody = getPositionOfBody(dataSentToMirrorServer); String headersSent = null; String bodySent = ""; if(posDividerHeadersAndBody >= 0) { headersSent = dataSentToMirrorServer.substring(0, posDividerHeadersAndBody); // Skip the blank line with crlf dividing headers and body bodySent = dataSentToMirrorServer.substring(posDividerHeadersAndBody+2); } else { fail("No header and body section found"); } // Check response headers checkHeaderTypeLength(headersSent, "multipart/form-data" + "; boundary=" + boundaryString, expectedPostBody.length); // Check post body which was sent to the mirror server, and // sent back by the mirror server checkArraysHaveSameContent(expectedPostBody, bodySent.getBytes(contentEncoding), contentEncoding, res); // Check method, path and query sent checkMethodPathQuery(headersSent, sampler.getMethod(), sampler.getPath(), (String) null, res); } private void checkPostRequestFileUpload( HTTPSamplerBase sampler, HTTPSampleResult res, String samplerDefaultEncoding, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue, String fileField, File fileValue, String fileMimeType, byte[] fileContent) throws IOException { if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = samplerDefaultEncoding; } // Check URL assertEquals(sampler.getUrl(), res.getURL()); String boundaryString = getBoundaryStringFromContentType(res.getRequestHeaders()); assertNotNull(boundaryString); byte[] expectedPostBody = createExpectedFormAndUploadOutput(boundaryString, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, fileField, fileValue, fileMimeType, fileContent); // Check request headers checkHeaderTypeLength(res.getRequestHeaders(), "multipart/form-data" + "; boundary=" + boundaryString, expectedPostBody.length); // We cannot check post body from the result query string, since that will not contain // the actual file content, but placeholder text for file content //checkArraysHaveSameContent(expectedPostBody, res.getQueryString().getBytes(contentEncoding)); // Find the data sent to the mirror server, which the mirror server is sending back to us String headersSent = getHeadersSent(res.getResponseData()); if(headersSent == null) { fail("No header and body section found"); } // Check response headers checkHeaderTypeLength(headersSent, "multipart/form-data" + "; boundary=" + boundaryString, expectedPostBody.length); byte[] bodySent = getBodySent(res.getResponseData()); assertNotNull("Sent body should not be null", bodySent); // Check post body which was sent to the mirror server, and // sent back by the mirror server checkArraysHaveSameContent(expectedPostBody, bodySent, contentEncoding, res); // Check method, path and query sent checkMethodPathQuery(headersSent, sampler.getMethod(), sampler.getPath(), (String) null, res); } private void checkPostRequestBody( HTTPSamplerBase sampler, HTTPSampleResult res, String samplerDefaultEncoding, String contentEncoding, String expectedPostBody) throws IOException { if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = samplerDefaultEncoding; } // Check URL assertEquals(sampler.getUrl(), res.getURL()); // Check request headers checkHeaderTypeLength(res.getRequestHeaders(), HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED, expectedPostBody.getBytes(contentEncoding).length); // Check post body from the result query string checkArraysHaveSameContent(expectedPostBody.getBytes(contentEncoding), res.getQueryString().getBytes(contentEncoding), contentEncoding, res); // Find the data sent to the mirror server, which the mirror server is sending back to us String dataSentToMirrorServer = new String(res.getResponseData(), contentEncoding); int posDividerHeadersAndBody = getPositionOfBody(dataSentToMirrorServer); String headersSent = null; String bodySent = ""; if(posDividerHeadersAndBody >= 0) { headersSent = dataSentToMirrorServer.substring(0, posDividerHeadersAndBody); // Skip the blank line with crlf dividing headers and body bodySent = dataSentToMirrorServer.substring(posDividerHeadersAndBody+2); } else { fail("No header and body section found"); } // Check response headers checkHeaderTypeLength(headersSent, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED, expectedPostBody.getBytes(contentEncoding).length); // Check post body which was sent to the mirror server, and // sent back by the mirror server checkArraysHaveSameContent(expectedPostBody.getBytes(contentEncoding), bodySent.getBytes(contentEncoding), contentEncoding, res); // Check method, path and query sent checkMethodPathQuery(headersSent, sampler.getMethod(), sampler.getPath(), (String) null, res); } private void checkGetRequest( HTTPSamplerBase sampler, HTTPSampleResult res ) throws IOException { // Check URL assertEquals(sampler.getUrl(), res.getURL()); // Check method assertEquals(sampler.getMethod(), res.getHTTPMethod()); // Check that the query string is empty assertEquals(0, res.getQueryString().length()); // Find the data sent to the mirror server, which the mirror server is sending back to us String dataSentToMirrorServer = new String(res.getResponseData(), EncoderCache.URL_ARGUMENT_ENCODING); int posDividerHeadersAndBody = getPositionOfBody(dataSentToMirrorServer); String headersSent = null; String bodySent = ""; if(posDividerHeadersAndBody >= 0) { headersSent = dataSentToMirrorServer.substring(0, posDividerHeadersAndBody); // Skip the blank line with crlf dividing headers and body bodySent = dataSentToMirrorServer.substring(posDividerHeadersAndBody+2); } else { fail("No header and body section found"); } // No body should have been sent assertEquals(bodySent.length(), 0); // Check method, path and query sent checkMethodPathQuery(headersSent, sampler.getMethod(), sampler.getPath(), (String) null, res); } private void checkGetRequest_Parameters( HTTPSamplerBase sampler, HTTPSampleResult res, String contentEncoding, URL executedUrl, String titleField, String titleValue, String descriptionField, String descriptionValue, boolean valuesAlreadyUrlEncoded) throws IOException { if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = EncoderCache.URL_ARGUMENT_ENCODING; } // Check URL assertEquals(executedUrl, res.getURL()); // Check method assertEquals(sampler.getMethod(), res.getHTTPMethod()); // Cannot check the query string of the result, because the mirror server // replies without including query string in URL String expectedQueryString = null; if(!valuesAlreadyUrlEncoded) { String expectedTitle = URLEncoder.encode(titleValue, contentEncoding); String expectedDescription = URLEncoder.encode(descriptionValue, contentEncoding); expectedQueryString = titleField + "=" + expectedTitle + "&" + descriptionField + "=" + expectedDescription; } else { expectedQueryString = titleField + "=" + titleValue + "&" + descriptionField + "=" + descriptionValue; } // Find the data sent to the mirror server, which the mirror server is sending back to us String dataSentToMirrorServer = new String(res.getResponseData(), EncoderCache.URL_ARGUMENT_ENCODING); int posDividerHeadersAndBody = getPositionOfBody(dataSentToMirrorServer); String headersSent = null; String bodySent = ""; if(posDividerHeadersAndBody >= 0) { headersSent = dataSentToMirrorServer.substring(0, posDividerHeadersAndBody); // Skip the blank line with crlf dividing headers and body bodySent = dataSentToMirrorServer.substring(posDividerHeadersAndBody+2); } else { fail("No header and body section found in: ["+dataSentToMirrorServer+"]"); } // No body should have been sent assertEquals(bodySent.length(), 0); // Check method, path and query sent checkMethodPathQuery(headersSent, sampler.getMethod(), sampler.getPath(), expectedQueryString, res); } private void checkMethodPathQuery( String headersSent, String expectedMethod, String expectedPath, String expectedQueryString, HTTPSampleResult res ) throws IOException { // Check the Request URI sent to the mirror server, and // sent back by the mirror server int indexFirstSpace = headersSent.indexOf(' '); int indexSecondSpace = headersSent.indexOf(' ', headersSent.length() > indexFirstSpace ? indexFirstSpace + 1 : indexFirstSpace); if(indexFirstSpace <= 0 && indexSecondSpace <= 0 || indexFirstSpace == indexSecondSpace) { fail("Could not find method and URI sent"); } String methodSent = headersSent.substring(0, indexFirstSpace); assertEquals(expectedMethod, methodSent); String uriSent = headersSent.substring(indexFirstSpace + 1, indexSecondSpace); int indexQueryStart = uriSent.indexOf('?'); if(expectedQueryString != null && expectedQueryString.length() > 0) { // We should have a query string part if(indexQueryStart <= 0 || (indexQueryStart == uriSent.length() - 1)) { fail("Could not find query string in URI"); } } else { if(indexQueryStart > 0) { // We should not have a query string part fail("Query string present in URI"); } else { indexQueryStart = uriSent.length(); } } // Check path String pathSent = uriSent.substring(0, indexQueryStart); assertEquals(expectedPath, pathSent); // Check query if(expectedQueryString != null && expectedQueryString.length() > 0) { String queryStringSent = uriSent.substring(indexQueryStart + 1); // Is it only the parameter values which are encoded in the specified // content encoding, the rest of the query is encoded in UTF-8 // Therefore we compare the whole query using UTF-8 checkArraysHaveSameContent(expectedQueryString.getBytes(EncoderCache.URL_ARGUMENT_ENCODING), queryStringSent.getBytes(EncoderCache.URL_ARGUMENT_ENCODING), EncoderCache.URL_ARGUMENT_ENCODING, res); } } private String getHeadersSent(byte[] responseData) throws IOException { // Find the data sent to the mirror server, which the mirror server is sending back to us // We assume the headers are in ISO_8859_1, and the body can be in any content encoding. String dataSentToMirrorServer = new String(responseData, ISO_8859_1); int posDividerHeadersAndBody = getPositionOfBody(dataSentToMirrorServer); String headersSent = null; if(posDividerHeadersAndBody >= 0) { headersSent = dataSentToMirrorServer.substring(0, posDividerHeadersAndBody); } return headersSent; } private byte[] getBodySent(byte[] responseData) throws IOException { // Find the data sent to the mirror server, which the mirror server is sending back to us // We assume the headers are in ISO_8859_1, and the body can be in any content encoding. // Therefore we get the data sent in ISO_8859_1, to be able to determine the end of the // header part, and then we just construct a byte array to hold the body part, not taking // encoding of the body into consideration, because it can contain file data, which is // sent as raw byte data byte[] bodySent = null; String headersSent = getHeadersSent(responseData); if(headersSent != null) { // Get the content length, it tells us how much data to read // TODO : Maybe support chunked encoding, then we cannot rely on content length String contentLengthValue = getSentRequestHeaderValue(headersSent, HTTPConstants.HEADER_CONTENT_LENGTH); int contentLength = -1; if(contentLengthValue != null) { contentLength = Integer.parseInt(contentLengthValue); } else { fail("Did not receive any content-length header"); } bodySent = new byte[contentLength]; System.arraycopy(responseData, responseData.length - contentLength, bodySent, 0, contentLength); } return bodySent; } private boolean isInRequestHeaders(String requestHeaders, String headerName, String headerValue) { return checkRegularExpression(requestHeaders, headerName + ": " + headerValue); } // Java 1.6.0_22+ no longer allows Content-Length to be set, so don't check it. // See: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6996110 // TODO any point in checking the other headers? private void checkHeaderTypeLength(String requestHeaders, String contentType, int contentLen) { boolean typeOK = isInRequestHeaders(requestHeaders, HTTPConstants.HEADER_CONTENT_TYPE, contentType); // boolean lengOK = isInRequestHeaders(requestHeaders, HTTPConstants.HEADER_CONTENT_LENGTH, Integer.toString(contentLen)); if (!typeOK){ fail("Expected type:" + contentType + " in:\n"+ requestHeaders); } // if (!lengOK){ // fail("Expected & length: " +contentLen + " in:\n"+requestHeaders); // } } private String getSentRequestHeaderValue(String requestHeaders, String headerName) { Perl5Matcher localMatcher = JMeterUtils.getMatcher(); String expression = ".*" + headerName + ": (\\d*).*"; Pattern pattern = JMeterUtils.getPattern(expression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.SINGLELINE_MASK); if(localMatcher.matches(requestHeaders, pattern)) { // The value is in the first group, group 0 is the whole match return localMatcher.getMatch().group(1); } return null; } private boolean checkRegularExpression(String stringToCheck, String regularExpression) { Perl5Matcher localMatcher = JMeterUtils.getMatcher(); Pattern pattern = JMeterUtils.getPattern(regularExpression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.SINGLELINE_MASK); return localMatcher.contains(stringToCheck, pattern); } private int getPositionOfBody(String stringToCheck) { Perl5Matcher localMatcher = JMeterUtils.getMatcher(); // The headers and body are divided by a blank line String regularExpression = "^.$"; Pattern pattern = JMeterUtils.getPattern(regularExpression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.MULTILINE_MASK); PatternMatcherInput input = new PatternMatcherInput(stringToCheck); while(localMatcher.contains(input, pattern)) { MatchResult match = localMatcher.getMatch(); return match.beginOffset(0); } // No divider was found return -1; } private String getBoundaryStringFromContentType(String requestHeaders) { Perl5Matcher localMatcher = JMeterUtils.getMatcher(); String regularExpression = "^" + HTTPConstants.HEADER_CONTENT_TYPE + ": multipart/form-data; boundary=(.+)$"; Pattern pattern = JMeterUtils.getPattern(regularExpression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.MULTILINE_MASK); if(localMatcher.contains(requestHeaders, pattern)) { MatchResult match = localMatcher.getMatch(); String matchString = match.group(1); // Header may contain ;charset= , regexp extracts it so computed boundary is wrong int indexOf = matchString.indexOf(';'); if(indexOf>=0) { return matchString.substring(0, indexOf); } else { return matchString; } } else { return null; } } private void setupUrl(HTTPSamplerBase sampler, String contentEncoding) { String protocol = "http"; // String domain = "localhost"; String domain = "localhost"; String path = "/test/somescript.jsp"; sampler.setProtocol(protocol); sampler.setMethod(HTTPConstants.POST); sampler.setPath(path); sampler.setDomain(domain); sampler.setPort(MIRROR_PORT); sampler.setContentEncoding(contentEncoding); } /** * Setup the form data with specified values * * @param httpSampler */ private void setupFormData(HTTPSamplerBase httpSampler, boolean isEncoded, String titleField, String titleValue, String descriptionField, String descriptionValue) { if(isEncoded) { httpSampler.addEncodedArgument(titleField, titleValue); httpSampler.addEncodedArgument(descriptionField, descriptionValue); } else { httpSampler.addArgument(titleField, titleValue); httpSampler.addArgument(descriptionField, descriptionValue); } } /** * Setup the form data with specified values, and file to upload * * @param httpSampler */ private void setupFileUploadData( HTTPSamplerBase httpSampler, boolean isEncoded, String titleField, String titleValue, String descriptionField, String descriptionValue, String fileField, File fileValue, String fileMimeType) { // Set the form data setupFormData(httpSampler, isEncoded, titleField, titleValue, descriptionField, descriptionValue); // Set the file upload data HTTPFileArg[] hfa = {new HTTPFileArg(fileValue == null ? "" : fileValue.getAbsolutePath(), fileField, fileMimeType)}; httpSampler.setHTTPFiles(hfa); } /** * Check that the the two byte arrays have identical content * * @param expected * @param actual * @throws UnsupportedEncodingException */ private void checkArraysHaveSameContent(byte[] expected, byte[] actual, String encoding, HTTPSampleResult res) throws UnsupportedEncodingException { if(expected != null && actual != null) { if(expected.length != actual.length) { System.out.println("\n>>>>>>>>>>>>>>>>>>>> expected:"); System.out.println(new String(expected, encoding)); System.out.println("==================== actual:"); System.out.println(new String(actual, encoding)); System.out.println("<<<<<<<<<<<<<<<<<<<<"); if (res != null) { System.out.println("URL="+res.getUrlAsString()); } fail("arrays have different length, expected is " + expected.length + ", actual is " + actual.length); } else { for(int i = 0; i < expected.length; i++) { if(expected[i] != actual[i]) { System.out.println("\n>>>>>>>>>>>>>>>>>>>> expected:"); System.out.println(new String(expected,0,i+1, encoding)); System.out.println("==================== actual:"); System.out.println(new String(actual,0,i+1, encoding)); System.out.println("<<<<<<<<<<<<<<<<<<<<"); /* // Useful to when debugging for(int j = 0; j < expected.length; j++) { System.out.print(expected[j] + " "); } System.out.println(); for(int j = 0; j < actual.length; j++) { System.out.print(actual[j] + " "); } System.out.println(); */ if (res != null) { System.out.println("URL="+res.getUrlAsString()); } fail("byte at position " + i + " is different, expected is " + expected[i] + ", actual is " + actual[i]); } } } } else { if (res != null) { System.out.println("URL="+res.getUrlAsString()); } fail("expected or actual byte arrays were null"); } } /** * Create the expected output multipart/form-data, with only form data, * and no file multipart. * This method is copied from the PostWriterTest class * * @param lastMultipart true if this is the last multipart in the request */ private byte[] createExpectedFormdataOutput( String boundaryString, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue, boolean firstMultipart, boolean lastMultipart) throws IOException { // The encoding used for http headers and control information final byte[] DASH_DASH = "--".getBytes(ISO_8859_1); final ByteArrayOutputStream output = new ByteArrayOutputStream(); if(firstMultipart) { output.write(DASH_DASH); output.write(boundaryString.getBytes(ISO_8859_1)); output.write(CRLF); } output.write("Content-Disposition: form-data; name=\"".getBytes(ISO_8859_1)); output.write(titleField.getBytes(ISO_8859_1)); output.write("\"".getBytes(ISO_8859_1)); output.write(CRLF); output.write("Content-Type: text/plain".getBytes(ISO_8859_1)); if(contentEncoding != null) { output.write("; charset=".getBytes(ISO_8859_1)); output.write(contentEncoding.getBytes(ISO_8859_1)); } output.write(CRLF); output.write("Content-Transfer-Encoding: 8bit".getBytes(ISO_8859_1)); output.write(CRLF); output.write(CRLF); if(contentEncoding != null) { output.write(titleValue.getBytes(contentEncoding)); } else { output.write(titleValue.getBytes()); // TODO - charset? } output.write(CRLF); output.write(DASH_DASH); output.write(boundaryString.getBytes(ISO_8859_1)); output.write(CRLF); output.write("Content-Disposition: form-data; name=\"".getBytes(ISO_8859_1)); output.write(descriptionField.getBytes(ISO_8859_1)); output.write("\"".getBytes(ISO_8859_1)); output.write(CRLF); output.write("Content-Type: text/plain".getBytes(ISO_8859_1)); if(contentEncoding != null) { output.write("; charset=".getBytes(ISO_8859_1)); output.write(contentEncoding.getBytes(ISO_8859_1)); } output.write(CRLF); output.write("Content-Transfer-Encoding: 8bit".getBytes(ISO_8859_1)); output.write(CRLF); output.write(CRLF); if(contentEncoding != null) { output.write(descriptionValue.getBytes(contentEncoding)); } else { output.write(descriptionValue.getBytes()); // TODO - charset? } output.write(CRLF); output.write(DASH_DASH); output.write(boundaryString.getBytes(ISO_8859_1)); if(lastMultipart) { output.write(DASH_DASH); } output.write(CRLF); output.flush(); output.close(); return output.toByteArray(); } /** * Create the expected file multipart * * @param lastMultipart true if this is the last multipart in the request */ private byte[] createExpectedFilepartOutput( String boundaryString, String fileField, File file, String mimeType, byte[] fileContent, boolean firstMultipart, boolean lastMultipart) throws IOException { final byte[] DASH_DASH = "--".getBytes(ISO_8859_1); final ByteArrayOutputStream output = new ByteArrayOutputStream(); if(firstMultipart) { output.write(DASH_DASH); output.write(boundaryString.getBytes(ISO_8859_1)); output.write(CRLF); } // replace all backslash with double backslash String filename = file.getName(); output.write("Content-Disposition: form-data; name=\"".getBytes(ISO_8859_1)); output.write(fileField.getBytes(ISO_8859_1)); output.write(("\"; filename=\"" + filename + "\"").getBytes(ISO_8859_1)); output.write(CRLF); output.write("Content-Type: ".getBytes(ISO_8859_1)); output.write(mimeType.getBytes(ISO_8859_1)); output.write(CRLF); output.write("Content-Transfer-Encoding: binary".getBytes(ISO_8859_1)); output.write(CRLF); output.write(CRLF); output.write(fileContent); output.write(CRLF); output.write(DASH_DASH); output.write(boundaryString.getBytes(ISO_8859_1)); if(lastMultipart) { output.write(DASH_DASH); } output.write(CRLF); output.flush(); output.close(); return output.toByteArray(); } /** * Create the expected output post body for form data and file multiparts * with specified values, when request is multipart */ private byte[] createExpectedFormAndUploadOutput( String boundaryString, String contentEncoding, String titleField, String titleValue, String descriptionField, String descriptionValue, String fileField, File fileValue, String fileMimeType, byte[] fileContent) throws IOException { // Create the multiparts byte[] formdataMultipart = createExpectedFormdataOutput(boundaryString, contentEncoding, titleField, titleValue, descriptionField, descriptionValue, true, false); byte[] fileMultipart = createExpectedFilepartOutput(boundaryString, fileField, fileValue, fileMimeType, fileContent, false, true); // Join the two multiparts ByteArrayOutputStream output = new ByteArrayOutputStream(); output.write(formdataMultipart); output.write(fileMultipart); output.flush(); output.close(); return output.toByteArray(); } private HTTPSamplerBase createHttpSampler(int samplerType) { switch(samplerType) { case HTTP_SAMPLER: return new HTTPSampler(); case HTTP_SAMPLER2: return new HTTPSampler2(); case HTTP_SAMPLER3: return new HTTPSampler3(); } throw new IllegalArgumentException("Unexpected type: "+samplerType); } } �����������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/NullURLConnection.java�����������0000644�0001750�0001750�00000003170�12032647144�031133� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.net.URL; import java.net.URLConnection; import java.net.MalformedURLException; import java.util.Properties; /** * Dummy URLConnection class for use by classes that need an * URLConnection for junit tests. * */ public final class NullURLConnection extends URLConnection { private final Properties data = new Properties(); public NullURLConnection() throws MalformedURLException { this(new URL("http://localhost")); } public NullURLConnection(URL url) { super(url); } @Override public void connect() { } @Override public void setRequestProperty(String name, String value) { data.put(name, value); } @Override public String getRequestProperty(String name) { return (String) data.get(name); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/sampler/HTTPSampler3.java����������������0000644�0001750�0001750�00000003137�12032647144�030007� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.samplers.Interruptible; /** * A sampler which understands all the parts necessary to read statistics about * HTTP requests, including cookies and authentication. * This sampler uses the Apache HttpClient implementation */ class HTTPSampler3 extends HTTPSamplerBase implements Interruptible { private static final long serialVersionUID = 241L; private final transient HTTPHC4Impl hc; public HTTPSampler3(){ hc = new HTTPHC4Impl(this); } public boolean interrupt() { return hc.interrupt(); } @Override protected HTTPSampleResult sample(java.net.URL u, String method, boolean areFollowingRedirect, int depth) { return hc.sample(u, method, areFollowingRedirect, depth); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/modifier/��������������������������������0000755�0001750�0001750�00000000000�12165514773�025115� 5����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/modifier/TestURLRewritingModifier.java���0000644�0001750�0001750�00000030513�12032647144�032626� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.NullSampler; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; public class TestURLRewritingModifier extends JMeterTestCase { private SampleResult response = null; private JMeterContext context = null; private URLRewritingModifier mod = null; public TestURLRewritingModifier(String name) { super(name); } @Override public void setUp() { context = JMeterContextService.getContext(); mod = new URLRewritingModifier(); mod.setThreadContext(context); } public void testNonHTTPSampler() throws Exception { Sampler sampler = new NullSampler(); response = new SampleResult(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); } public void testGrabSessionId() throws Exception { String html = "location: http://server.com/index.html" + "?session_id=jfdkjdkf%20jddkfdfjkdjfdf%22;"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("session_id"); HTTPSamplerBase sampler = createSampler(); sampler.addArgument("session_id", "adfasdfdsafasdfasd"); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("jfdkjdkf jddkfdfjkdjfdf\"", ((Argument) args.getArguments().get(0).getObjectValue()) .getValue()); assertEquals("http://server.com/index.html?" + "session_id=jfdkjdkf+jddkfdfjkdjfdf%22", sampler.toString()); } public void testGrabSessionId2() throws Exception { String html = "<a href=\"http://server.com/index.html?" + "session_id=jfdkjdkfjddkfdfjkdjfdf\">"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("session_id"); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("jfdkjdkfjddkfdfjkdjfdf", ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } private HTTPSamplerBase createSampler() { HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setDomain("server.com"); sampler.setPath("index.html"); sampler.setMethod(HTTPConstants.GET); sampler.setProtocol("http"); return sampler; } public void testGrabSessionId3() throws Exception { String html = "href='index.html?session_id=jfdkjdkfjddkfdfjkdjfdf'"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("session_id"); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("jfdkjdkfjddkfdfjkdjfdf", ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } public void testGrabSessionIdFromXMLNonPatExtension() throws Exception { // Bug 50286 String html = "<url>/some/path;jsessionid=123456789</url>"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("jsessionid"); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("123456789", ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } public void testGrabSessionIdFromXMLPatExtension() throws Exception { // Bug 50286 String html = "<url>/some/path;jsessionid=123456789</url>"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("jsessionid"); mod.setPathExtension(true); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); assertEquals("index.html;jsessionid=123456789",sampler.getPath()); } public void testGrabSessionIdEndedInTab() throws Exception { String html = "href='index.html?session_id=jfdkjdkfjddkfdfjkdjfdf\t"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("session_id"); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("jfdkjdkfjddkfdfjkdjfdf", ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } public void testGrabSessionId4() throws Exception { String html = "href='index.html;%24sid%24KQNq3AAADQZoEQAxlkX8uQV5bjqVBPbT'"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("%24sid%24"); // $sid$ mod.setPathExtension(true); mod.setPathExtensionNoEquals(true); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); // Arguments args = sampler.getArguments(); assertEquals("index.html;%24sid%24KQNq3AAADQZoEQAxlkX8uQV5bjqVBPbT", sampler.getPath()); } public void testGrabSessionId5() throws Exception { String html = "location: http://server.com/index.html" + "?session[33]=jfdkjdkf%20jddkfdfjkdjfdf%22;"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("session[33]"); HTTPSamplerBase sampler = createSampler(); sampler.addArgument("session[33]", "adfasdfdsafasdfasd"); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("jfdkjdkf jddkfdfjkdjfdf\"", ((Argument) args.getArguments().get(0).getObjectValue()) .getValue()); assertEquals("http://server.com/index.html?session%5B33%5D=jfdkjdkf+jddkfdfjkdjfdf%22", sampler.toString()); } public void testGrabSessionIdFromForm() throws Exception { String[] html = new String[] { "<input name=\"sid\" value=\"myId\">", "<input name='sid' value='myId'>", "<input value=\"myId\" NAME='sid'>", "<input VALUE='myId' name=\"sid\">", "<input blah blah value=\"myId\" yoda yoda NAME='sid'>", "<input type=\"HIDDEN\" name=\"sid\" value=\"myId\">", "<input type=\"HIDDEN\" name=\"sid\"\tvalue=\"myId\">", }; for (int i = 0; i < html.length; i++) { response = new SampleResult(); response.setResponseData(html[i], null); URLRewritingModifier newMod = new URLRewritingModifier(); newMod.setThreadContext(context); newMod.setArgumentName("sid"); newMod.setPathExtension(false); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); newMod.process(); Arguments args = sampler.getArguments(); assertEquals("For case i=" + i, "myId", ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } } public void testGrabSessionIdURLinJSON() throws Exception { String html = "<a href=\"#\" onclick=\"$(\'frame\').src=\'/index?param1=bla&sessionid=xyzxyzxyz\\'"; response = new SampleResult(); response.setResponseData(html, null); mod.setArgumentName("sessionid"); HTTPSamplerBase sampler = createSampler(); sampler.addArgument("sessionid", "xyzxyzxyz"); context.setCurrentSampler(sampler); context.setPreviousResult(response); mod.process(); Arguments args = sampler.getArguments(); assertEquals("xyzxyzxyz", ((Argument) args.getArguments().get(0).getObjectValue()) .getValue()); } public void testCache() throws Exception { String[] html = new String[] { "<input name=\"sid\" value=\"myId\">", "<html></html>", // No entry; check it is still present }; URLRewritingModifier newMod = new URLRewritingModifier(); newMod.setShouldCache(true); newMod.setThreadContext(context); newMod.setArgumentName("sid"); newMod.setPathExtension(false); for (int i = 0; i < html.length; i++) { response = new SampleResult(); response.setResponseData(html[i], null); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); newMod.process(); Arguments args = sampler.getArguments(); assertEquals("For case i=" + i, "myId", ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } } public void testNoCache() throws Exception { String[] html = new String[] { "<input name=\"sid\" value=\"myId\">", "myId", "<html></html>", "", }; URLRewritingModifier newMod = new URLRewritingModifier(); newMod.setThreadContext(context); newMod.setArgumentName("sid"); newMod.setPathExtension(false); newMod.setShouldCache(false); for (int i = 0; i < html.length/2; i++) { response = new SampleResult(); response.setResponseData(html[i*2], null); HTTPSamplerBase sampler = createSampler(); context.setCurrentSampler(sampler); context.setPreviousResult(response); newMod.process(); Arguments args = sampler.getArguments(); assertEquals("For case i=" + i, html[i*2+1], ((Argument) args.getArguments().get(0).getObjectValue()).getValue()); } } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/modifier/TestAnchorModifier.java���������0000644�0001750�0001750�00000044163�12032647144�031511� 0����������������������������������������������������������������������������������������������������ustar �ebourg��������������������������ebourg�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.FileInputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.io.TextFile; public class TestAnchorModifier extends JMeterTestCase { private AnchorModifier parser = new AnchorModifier(); public TestAnchorModifier(String name) { super(name); } private JMeterContext jmctx = null; @Override public void setUp() { jmctx = JMeterContextService.getContext(); parser.setThreadContext(jmctx); } public void testProcessingHTMLFile(String HTMLFileName) throws Exception { HTTPSamplerBase config = (HTTPSamplerBase) SaveService.loadTree( new FileInputStream(System.getProperty("user.dir") + "/testfiles/load_bug_list.jmx")).getArray()[0]; config.setRunningVersion(true); HTTPSampleResult result = new HTTPSampleResult(); HTTPSamplerBase context = (HTTPSamplerBase) SaveService.loadTree( new FileInputStream(System.getProperty("user.dir") + "/testfiles/Load_JMeter_Page.jmx")).getArray()[0]; jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); result.setResponseData(new TextFile(System.getProperty("user.dir") + HTMLFileName).getText(), null); result.setSampleLabel(context.toString()); result.setSamplerData(context.toString()); result.setURL(new URL("http://issues.apache.org/fakepage.html")); jmctx.setPreviousResult(result); AnchorModifier modifier = new AnchorModifier(); modifier.setThreadContext(jmctx); modifier.process(); assertEquals("http://issues.apache.org/bugzilla/buglist.cgi?" + "bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED" + "&email1=&emailtype1=substring&emailassigned_to1=1" + "&email2=&emailtype2=substring&emailreporter2=1" + "&bugidtype=include&bug_id=&changedin=&votes=" + "&chfieldfrom=&chfieldto=Now&chfieldvalue=" + "&product=JMeter&short_desc=&short_desc_type=substring" + "&long_desc=&long_desc_type=substring&bug_file_loc=" + "&bug_file_loc_type=substring&keywords=" + "&keywords_type=anywords" + "&field0-0-0=noop&type0-0-0=noop&value0-0-0=" + "&cmdtype=doit&order=Reuse+same+sort+as+last+time", config.toString()); config.recoverRunningVersion(); assertEquals("http://issues.apache.org/bugzilla/buglist.cgi?" + "bug_status=.*&bug_status=.*&bug_status=.*&email1=" + "&emailtype1=substring&emailassigned_to1=1&email2=" + "&emailtype2=substring&emailreporter2=1" + "&bugidtype=include&bug_id=&changedin=&votes=" + "&chfieldfrom=&chfieldto=Now&chfieldvalue=" + "&product=JMeter&short_desc=&short_desc_type=substring" + "&long_desc=&long_desc_type=substring&bug_file_loc=" + "&bug_file_loc_type=substring&keywords=" + "&keywords_type=anywords&field0-0-0=noop" + "&type0-0-0=noop&value0-0-0=&cmdtype=doit" + "&order=Reuse+same+sort+as+last+time", config.toString()); } public void testModifySampler() throws Exception { testProcessingHTMLFile("/testfiles/jmeter_home_page.html"); } public void testModifySamplerWithRelativeLink() throws Exception { testProcessingHTMLFile("/testfiles/jmeter_home_page_with_relative_links.html"); } public void testModifySamplerWithBaseHRef() throws Exception { testProcessingHTMLFile("/testfiles/jmeter_home_page_with_base_href.html"); } public void testSimpleParse() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*/index\\.html"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "<html><head><title>Test page" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setSamplerData(context.toString()); result.setURL(context.getUrl()); jmctx.setPreviousResult(result); parser.process(); assertEquals("http://www.apache.org/subdir/index.html", config.getUrl().toString()); } // Test https works too public void testSimpleParse1() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*/index\\.html"); config.setProtocol(HTTPConstants.PROTOCOL_HTTPS); config.setPort(HTTPConstants.DEFAULT_HTTPS_PORT); HTTPSamplerBase context = makeContext("https://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setSamplerData(context.toString()); result.setURL(context.getUrl()); jmctx.setPreviousResult(result); parser.process(); assertEquals("https://www.apache.org/subdir/index.html", config.getUrl().toString()); } public void testSimpleParse2() throws Exception { HTTPSamplerBase config = makeUrlConfig("/index\\.html"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "Goto index page" + "hfdfjiudfjdfjkjfkdjf" + "bold textlower" + ""; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); String newUrl = config.getUrl().toString(); assertTrue("http://www.apache.org/index.html".equals(newUrl) || "http://www.apache.org/subdir/lowerdir/index.html".equals(newUrl)); } public void testSimpleParse3() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*index.*"); config.getArguments().addArgument("param1", "value1"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); String newUrl = config.getUrl().toString(); assertEquals("http://www.apache.org/home/index.html?param1=value1", newUrl); } public void testSimpleParse4() throws Exception { HTTPSamplerBase config = makeUrlConfig("/subdir/index\\..*"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); String newUrl = config.getUrl().toString(); assertEquals("http://www.apache.org/subdir/index.html", newUrl); } public void testSimpleParse5() throws Exception { HTTPSamplerBase config = makeUrlConfig("/subdir/index\\.h.*"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/one/previous.html"); String responseText = "Test page" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); String newUrl = config.getUrl().toString(); assertEquals("http://www.apache.org/subdir/index.html", newUrl); } public void testFailSimpleParse1() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*index.*?param2=.+1"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); String newUrl = config.getUrl().toString(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); assertEquals(newUrl, config.getUrl().toString()); } public void testFailSimpleParse3() throws Exception { HTTPSamplerBase config = makeUrlConfig("/home/index.html"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); String newUrl = config.getUrl().toString(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); assertEquals(newUrl + "?param1=value1", config.getUrl().toString()); } public void testFailSimpleParse2() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*login\\.html"); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "" + "Goto index page"; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setPreviousResult(result); parser.process(); String newUrl = config.getUrl().toString(); assertTrue(!"http://www.apache.org/home/index.html?param1=value1".equals(newUrl)); assertEquals(config.getUrl().toString(), newUrl); } public void testSimpleFormParse() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*index.html"); config.addArgument("test", "g.*"); config.setMethod(HTTPConstants.POST); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "
    " + "Goto index page
    "; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); assertEquals("http://www.apache.org/subdir/index.html", config.getUrl().toString()); assertEquals("test=goto", config.getQueryString()); } public void testBadCharParse() throws Exception { HTTPSamplerBase config = makeUrlConfig(".*index.html"); config.addArgument("te$st", "g.*"); config.setMethod(HTTPConstants.POST); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "
    " + "Goto index page
    "; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); assertEquals("http://www.apache.org/subdir/index.html", config.getUrl().toString()); assertEquals("te%24st=goto", config.getQueryString()); } public void testSpecialCharParse() throws Exception { String specialChars = "-_.!~*'()%25";// These are some of the special characters String htmlEncodedFixture = URLEncoder.encode(specialChars, "UTF-8"); HTTPSamplerBase config = makeUrlConfig(".*index.html"); config.addArgument("test", ".*"); config.setMethod(HTTPConstants.POST); HTTPSamplerBase context = makeContext("http://www.apache.org/subdir/previous.html"); String responseText = "Test page" + "
    " + "Goto index page
    "; HTTPSampleResult result = new HTTPSampleResult(); result.setResponseData(responseText, null); result.setSampleLabel(context.toString()); result.setURL(context.getUrl()); jmctx.setCurrentSampler(context); jmctx.setCurrentSampler(config); jmctx.setPreviousResult(result); parser.process(); assertEquals("http://www.apache.org/subdir/index.html", config.getUrl().toString()); assertEquals("test=" + htmlEncodedFixture, config.getQueryString()); } private HTTPSamplerBase makeContext(String url) throws MalformedURLException { URL u = new URL(url); HTTPSamplerBase context = new HTTPNullSampler(); context.setDomain(u.getHost()); context.setPath(u.getPath()); context.setPort(u.getPort()); context.setProtocol(u.getProtocol()); context.parseArguments(u.getQuery()); return context; } private HTTPSamplerBase makeUrlConfig(String path) { HTTPSamplerBase config = new HTTPNullSampler(); config.setDomain("www.apache.org"); config.setMethod(HTTPConstants.GET); config.setPath(path); config.setPort(HTTPConstants.DEFAULT_HTTP_PORT); config.setProtocol(HTTPConstants.PROTOCOL_HTTP); return config; } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/parser/0000755000175000017500000000000012165514773024613 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/parser/TestHTMLParser.java0000644000175000017500000003140712032647144030234 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.TreeSet; import java.util.Vector; import org.apache.commons.io.IOUtils; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import junit.framework.TestSuite; public class TestHTMLParser extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); public TestHTMLParser(String arg0) { super(arg0); } private String parserName; private int testNumber = 0; public TestHTMLParser(String name, int test) { super(name); testNumber = test; } public TestHTMLParser(String name, String parser, int test) { super(name); testNumber = test; parserName = parser; } private static class StaticTestClass // Can't instantiate { private StaticTestClass() { } } private class TestClass // Can't instantiate { private TestClass() { } } private static class TestData { private String fileName; private String baseURL; private String expectedSet; private String expectedList; private TestData(String f, String b, String s, String l) { fileName = f; baseURL = b; expectedSet = s; expectedList = l; } // private TestData(String f, String b, String s) { // this(f, b, s, null); // } } // List of parsers to test. Should probably be derived automatically private static final String[] PARSERS = { "org.apache.jmeter.protocol.http.parser.HtmlParserHTMLParser", "org.apache.jmeter.protocol.http.parser.JTidyHTMLParser", "org.apache.jmeter.protocol.http.parser.RegexpHTMLParser" }; private static final TestData[] TESTS = new TestData[] { new TestData("testfiles/HTMLParserTestCase.html", "http://localhost/mydir/myfile.html", "testfiles/HTMLParserTestCase.set", "testfiles/HTMLParserTestCase.all"), new TestData("testfiles/HTMLParserTestCaseWithBaseHRef.html", "http://localhost/mydir/myfile.html", "testfiles/HTMLParserTestCaseBase.set", "testfiles/HTMLParserTestCaseBase.all"), new TestData("testfiles/HTMLParserTestCaseWithBaseHRef2.html", "http://localhost/mydir/myfile.html", "testfiles/HTMLParserTestCaseBase.set", "testfiles/HTMLParserTestCaseBase.all"), new TestData("testfiles/HTMLParserTestCaseWithMissingBaseHRef.html", "http://localhost/mydir/images/myfile.html", "testfiles/HTMLParserTestCaseBase.set", "testfiles/HTMLParserTestCaseBase.all"), new TestData("testfiles/HTMLParserTestCase2.html", "http:", "", ""), // Dummy as the file has no entries new TestData("testfiles/HTMLParserTestCase3.html", "http:", "", ""), // Dummy as the file has no entries new TestData("testfiles/HTMLParserTestCaseWithComments.html", "http://localhost/mydir/myfile.html", "testfiles/HTMLParserTestCaseBase.set", "testfiles/HTMLParserTestCaseBase.all"), new TestData("testfiles/HTMLScript.html", "http://localhost/", "testfiles/HTMLScript.set", "testfiles/HTMLScript.all"), new TestData("testfiles/HTMLParserTestFrames.html", "http://localhost/", "testfiles/HTMLParserTestFrames.all", "testfiles/HTMLParserTestFrames.all"), // Relative filenames new TestData("testfiles/HTMLParserTestFile_2.html", "file:HTMLParserTestFile_2.html", "testfiles/HTMLParserTestFile_2.all", "testfiles/HTMLParserTestFile_2.all"), }; public static junit.framework.Test suite() { TestSuite suite = new TestSuite("TestHTMLParser"); suite.addTest(new TestHTMLParser("testDefaultParser")); suite.addTest(new TestHTMLParser("testParserDefault")); suite.addTest(new TestHTMLParser("testParserMissing")); suite.addTest(new TestHTMLParser("testNotParser")); suite.addTest(new TestHTMLParser("testNotCreatable")); suite.addTest(new TestHTMLParser("testNotCreatableStatic")); for (int i = 0; i < PARSERS.length; i++) { TestSuite ps = new TestSuite(PARSERS[i]);// Identify subtests ps.addTest(new TestHTMLParser("testParserProperty", PARSERS[i], 0)); for (int j = 0; j < TESTS.length; j++) { TestSuite ts = new TestSuite(TESTS[j].fileName); ts.addTest(new TestHTMLParser("testParserSet", PARSERS[i], j)); ts.addTest(new TestHTMLParser("testParserList", PARSERS[i], j)); ps.addTest(ts); } suite.addTest(ps); } return suite; } // Test if can instantiate parser using property name public void testParserProperty() throws Exception { Properties p = JMeterUtils.getJMeterProperties(); if (p == null) { p = JMeterUtils.getProperties("jmeter.properties"); } p.setProperty(HTMLParser.PARSER_CLASSNAME, parserName); HTMLParser.getParser(); } public void testDefaultParser() throws Exception { HTMLParser.getParser(); } public void testParserDefault() throws Exception { HTMLParser.getParser(HTMLParser.DEFAULT_PARSER); } public void testParserMissing() throws Exception { try { HTMLParser.getParser("no.such.parser"); fail("Should not have been able to create the parser"); } catch (HTMLParseError e) { if (e.getCause() instanceof ClassNotFoundException) { // This is OK } else { throw e; } } } public void testNotParser() throws Exception { try { HTMLParser.getParser("java.lang.String"); fail("Should not have been able to create the parser"); } catch (HTMLParseError e) { if (e.getCause() instanceof ClassCastException) { return; } throw e; } } public void testNotCreatable() throws Exception { try { HTMLParser.getParser(TestClass.class.getName()); fail("Should not have been able to create the parser"); } catch (HTMLParseError e) { if (e.getCause() instanceof InstantiationException) { return; } throw e; } } public void testNotCreatableStatic() throws Exception { try { HTMLParser.getParser(StaticTestClass.class.getName()); fail("Should not have been able to create the parser"); } catch (HTMLParseError e) { if (e.getCause() instanceof ClassCastException) { return; } if (e.getCause() instanceof IllegalAccessException) { return; } throw e; } } public void testParserSet() throws Exception { HTMLParser p = HTMLParser.getParser(parserName); filetest(p, TESTS[testNumber].fileName, TESTS[testNumber].baseURL, TESTS[testNumber].expectedSet, null, false); } public void testParserList() throws Exception { HTMLParser p = HTMLParser.getParser(parserName); filetest(p, TESTS[testNumber].fileName, TESTS[testNumber].baseURL, TESTS[testNumber].expectedList, new Vector(), true); } private static void filetest(HTMLParser p, String file, String url, String resultFile, Collection c, boolean orderMatters) // Does the order matter? throws Exception { String parserName = p.getClass().getName().substring("org.apache.jmeter.protocol.http.parser.".length()); String fname = file.substring(file.indexOf('/')+1); log.debug("file " + file); File f = findTestFile(file); byte[] buffer = new byte[(int) f.length()]; InputStream is = null; try { is = new FileInputStream(f); int len = is.read(buffer); assertEquals(len, buffer.length); } finally { IOUtils.closeQuietly(is); } Iterator result; if (c == null) { result = p.getEmbeddedResourceURLs(buffer, new URL(url), System.getProperty("file.encoding")); } else { result = p.getEmbeddedResourceURLs(buffer, new URL(url), c,System.getProperty("file.encoding")); } /* * TODO: Exact ordering is only required for some tests; change the * comparison to do a set compare where necessary. */ Iterator expected; if (orderMatters) { expected = getFile(resultFile).iterator(); } else { // Convert both to Sets expected = new TreeSet(getFile(resultFile)).iterator(); TreeSet temp = new TreeSet(new Comparator() { public int compare(Object o1, Object o2) { return (o1.toString().compareTo(o2.toString())); } }); while (result.hasNext()) { temp.add(result.next()); } result = temp.iterator(); } while (expected.hasNext()) { Object next = expected.next(); assertTrue(fname+"::"+parserName + "::Expecting another result " + next, result.hasNext()); try { assertEquals(fname+"::"+parserName + "(next)", next, result.next().toString()); } catch (ClassCastException e) { fail(fname+"::"+parserName + "::Expected URL, but got " + e.toString()); } } assertFalse(fname+"::"+parserName + "::Should have reached the end of the results", result.hasNext()); } // Get expected results as a List private static List getFile(String file) throws Exception { ArrayList al = new ArrayList(); if (file != null && file.length() > 0) { BufferedReader br = new BufferedReader(new FileReader(findTestFile(file))); String line = br.readLine(); while (line != null) { al.add(line); line = br.readLine(); } br.close(); } return al; } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/parser/TestHtmlParsingUtils.java0000644000175000017500000001040512032647144031557 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import org.apache.jmeter.config.Argument; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; // TODO: need more tests public final class TestHtmlParsingUtils extends JMeterTestCase { public TestHtmlParsingUtils(String name) { super(name); } @Override protected void setUp() { } public void testGetParser() throws Exception { HtmlParsingUtils.getParser(); } public void testGetDom() throws Exception { HtmlParsingUtils.getDOM(""); HtmlParsingUtils.getDOM(""); } public void testIsArgumentMatched() throws Exception { Argument arg = new Argument(); Argument argp = new Argument(); assertTrue(HtmlParsingUtils.isArgumentMatched(arg, argp)); arg = new Argument("test", "abcd"); argp = new Argument("test", "a.*d"); assertTrue(HtmlParsingUtils.isArgumentMatched(arg, argp)); arg = new Argument("test", "abcd"); argp = new Argument("test", "a.*e"); assertFalse(HtmlParsingUtils.isArgumentMatched(arg, argp)); } public void testIsAnchorMatched() throws Exception { HTTPSamplerBase target=new HTTPNullSampler(); HTTPSamplerBase pattern=new HTTPNullSampler(); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); target.setProtocol("http:"); assertFalse(HtmlParsingUtils.isAnchorMatched(target, pattern)); pattern.setProtocol(".*"); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); target.setDomain("a.b.c"); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); pattern.setDomain(".*"); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); target.setPath("/abc"); assertFalse(HtmlParsingUtils.isAnchorMatched(target, pattern)); pattern.setPath(".*"); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); target.addArgument("param2", "value2", "="); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); pattern.addArgument("param1", ".*", "="); assertFalse(HtmlParsingUtils.isAnchorMatched(target, pattern)); target.addArgument("param1", "value1", "="); assertTrue(HtmlParsingUtils.isAnchorMatched(target, pattern)); } public void testisEqualOrMatches() throws Exception { assertTrue(HtmlParsingUtils.isEqualOrMatches("http:","http:")); assertFalse(HtmlParsingUtils.isEqualOrMatches("http:","htTp:")); assertTrue(HtmlParsingUtils.isEqualOrMatches("http:","ht+p:")); assertFalse(HtmlParsingUtils.isEqualOrMatches("ht+p:","http:")); } public void testisEqualOrMatchesCaseBlind() throws Exception { assertTrue(HtmlParsingUtils.isEqualOrMatchesCaseBlind("http:","http:")); assertTrue(HtmlParsingUtils.isEqualOrMatchesCaseBlind("http:","htTp:")); assertTrue(HtmlParsingUtils.isEqualOrMatches("http:","ht+p:")); assertFalse(HtmlParsingUtils.isEqualOrMatches("ht+p:","http:")); } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/0000755000175000017500000000000012165514773024777 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/TestCacheManager.java0000644000175000017500000005576712032647144031014 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.IOException; import java.lang.reflect.Field; import java.net.URL; import java.net.URLConnection; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.TimeZone; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.URI; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.util.HttpURLConnection; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.control.CacheManager.CacheEntry; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; public class TestCacheManager extends JMeterTestCase { private class URLConnectionStub extends URLConnection { protected URLConnectionStub(URL url) { super(url); } private URLConnectionStub(URLConnection urlConnection) { super(urlConnection.getURL()); } @Override public void connect() throws IOException { } private String expires = null; private String cacheControl = null; @Override public String getHeaderField(String name) { if (HTTPConstants.LAST_MODIFIED.equals(name)) { return currentTimeInGMT; } else if (HTTPConstants.ETAG.equals(name)) { return EXPECTED_ETAG; } else if (HTTPConstants.EXPIRES.equals(name)){ return expires; } else if (HTTPConstants.CACHE_CONTROL.equals(name)){ return cacheControl; } else if (HTTPConstants.DATE.equals(name)){ return currentTimeInGMT; } return super.getHeaderField(name); } @Override public URL getURL() { return url; } } private class HttpMethodStub extends PostMethod { private Header lastModifiedHeader; private Header etagHeader; private String expires; private String cacheControl; private Header dateHeader; HttpMethodStub() { this.lastModifiedHeader = new Header(HTTPConstants.LAST_MODIFIED, currentTimeInGMT); this.dateHeader = new Header(HTTPConstants.DATE, currentTimeInGMT); this.etagHeader = new Header(HTTPConstants.ETAG, EXPECTED_ETAG); } @Override public Header getResponseHeader(String headerName) { if (HTTPConstants.LAST_MODIFIED.equals(headerName)) { return this.lastModifiedHeader; } else if (HTTPConstants.ETAG.equals(headerName)) { return this.etagHeader; } else if (HTTPConstants.EXPIRES.equals(headerName)) { return expires == null ? null : new Header(HTTPConstants.EXPIRES, expires); } else if (HTTPConstants.CACHE_CONTROL.equals(headerName)) { return cacheControl == null ? null : new Header(HTTPConstants.CACHE_CONTROL, cacheControl); } if (HTTPConstants.DATE.equals(headerName)) { return this.dateHeader; } return null; } @Override public URI getURI() throws URIException { return uri; } } private static class HttpURLConnectionStub extends HttpURLConnection { private Map> properties; public HttpURLConnectionStub(HttpMethod method, URL url) { super(method, url); this.properties = new HashMap>(); } @Override public void addRequestProperty(String key, String value) { List list = new ArrayList(); list.add(value); this.properties.put(key, list); } @Override public Map> getRequestProperties() { return this.properties; } } private static final String LOCAL_HOST = "http://localhost/"; private static final String EXPECTED_ETAG = "0xCAFEBABEDEADBEEF"; private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); private CacheManager cacheManager; private String currentTimeInGMT; private URL url; private URI uri; private URLConnection urlConnection; private HttpMethod httpMethod; private HttpURLConnection httpUrlConnection; private SampleResult sampleResultOK; public TestCacheManager(String name) { super(name); } private String makeDate(Date d){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); simpleDateFormat.setTimeZone(GMT); return simpleDateFormat.format(d); } @Override public void setUp() throws Exception { super.setUp(); this.cacheManager = new CacheManager(); this.currentTimeInGMT = makeDate(new Date()); this.uri = new URI(LOCAL_HOST, false); this.url = new URL(LOCAL_HOST); this.urlConnection = new URLConnectionStub(this.url.openConnection()); this.httpMethod = new HttpMethodStub(); this.httpUrlConnection = new HttpURLConnectionStub(this.httpMethod, this.url); this.sampleResultOK = getSampleResultWithSpecifiedResponseCode("200"); } @Override protected void tearDown() throws Exception { this.httpUrlConnection = null; this.httpMethod = null; this.urlConnection = null; this.url = null; this.uri = null; this.cacheManager = null; this.currentTimeInGMT = null; this.sampleResultOK = null; super.tearDown(); } public void testExpiresJava() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((URLConnectionStub)urlConnection).expires=makeDate(new Date(System.currentTimeMillis()+2000)); this.cacheManager.saveDetails(this.urlConnection, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(2010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testNoExpiresJava() throws Exception{ this.cacheManager.setUseExpires(false); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((URLConnectionStub)urlConnection).expires=makeDate(new Date(System.currentTimeMillis()+2000)); this.cacheManager.saveDetails(this.urlConnection, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testCacheJava() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((URLConnectionStub)urlConnection).expires=makeDate(new Date(System.currentTimeMillis())); ((URLConnectionStub)urlConnection).cacheControl="public, max-age=5"; this.cacheManager.saveDetails(this.urlConnection, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(5010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testExpiresHttpClient() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).expires=makeDate(new Date(System.currentTimeMillis()+2000)); this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(2010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testCacheHttpClient() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).expires=makeDate(new Date(System.currentTimeMillis())); ((HttpMethodStub)httpMethod).cacheControl="public, max-age=5"; this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(5010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testPrivateCacheHttpClient() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).expires=makeDate(new Date(System.currentTimeMillis())); ((HttpMethodStub)httpMethod).cacheControl="private, max-age=5"; this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(5010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testPrivateCacheNoMaxAgeNoExpireHttpClient() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).cacheControl="private"; ((HttpMethodStub)httpMethod).lastModifiedHeader=new Header(HTTPConstants.LAST_MODIFIED, makeDate(new Date(System.currentTimeMillis()-(10*5*1000)))); this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(5010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testPrivateCacheExpireNoMaxAgeHttpClient() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).expires=makeDate(new Date(System.currentTimeMillis()+2000)); ((HttpMethodStub)httpMethod).cacheControl="private"; this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(2010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testNoCacheHttpClient() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).cacheControl="no-cache"; this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testCacheHttpClientBug51932() throws Exception{ this.cacheManager.setUseExpires(true); this.cacheManager.testIterationStart(null); assertNull("Should not find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); ((HttpMethodStub)httpMethod).expires=makeDate(new Date(System.currentTimeMillis())); ((HttpMethodStub)httpMethod).cacheControl="public, max-age=5, no-transform"; this.cacheManager.saveDetails(httpMethod, sampleResultOK); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertTrue("Should find valid entry",this.cacheManager.inCache(url)); Thread.sleep(5010); assertNotNull("Should find entry",getThreadCacheEntry(LOCAL_HOST)); assertFalse("Should not find valid entry",this.cacheManager.inCache(url)); } public void testGetClearEachIteration() throws Exception { assertFalse("Should default not to clear after each iteration.", this.cacheManager.getClearEachIteration()); this.cacheManager.setClearEachIteration(true); assertTrue("Should be settable to clear after each iteration.", this.cacheManager.getClearEachIteration()); this.cacheManager.setClearEachIteration(false); assertFalse("Should be settable not to clear after each iteration.", this.cacheManager.getClearEachIteration()); } public void testSaveDetailsWithEmptySampleResultGivesNoCacheEntry() throws Exception { saveDetailsWithConnectionAndSampleResultWithResponseCode(""); assertTrue("Saving details with empty SampleResult should not make cache entry.", getThreadCache().isEmpty()); } public void testSaveDetailsURLConnectionWithSampleResultWithResponseCode200GivesCacheEntry() throws Exception { saveDetailsWithConnectionAndSampleResultWithResponseCode("200"); CacheManager.CacheEntry cacheEntry = getThreadCacheEntry(this.url.toString()); assertNotNull("Saving details with SampleResult & connection with 200 response should make cache entry.", cacheEntry); assertEquals("Saving details with SampleResult & connection with 200 response should make cache entry with an etag.", EXPECTED_ETAG, cacheEntry.getEtag()); assertEquals("Saving details with SampleResult & connection with 200 response should make cache entry with last modified date.", this.currentTimeInGMT, cacheEntry.getLastModified()); } public void testSaveDetailsHttpMethodWithSampleResultWithResponseCode200GivesCacheEntry() throws Exception { saveDetailsWithHttpMethodAndSampleResultWithResponseCode("200"); CacheManager.CacheEntry cacheEntry = getThreadCacheEntry(this.httpMethod.getURI().toString()); assertNotNull("Saving SampleResult with HttpMethod & 200 response should make cache entry.", cacheEntry); assertEquals("Saving details with SampleResult & HttpMethod with 200 response should make cache entry with no etag.", EXPECTED_ETAG, cacheEntry.getEtag()); assertEquals("Saving details with SampleResult & HttpMethod with 200 response should make cache entry with no last modified date.", this.currentTimeInGMT, cacheEntry.getLastModified()); } public void testSaveDetailsURLConnectionWithSampleResultWithResponseCode404GivesNoCacheEntry() throws Exception { saveDetailsWithConnectionAndSampleResultWithResponseCode("404"); assertNull("Saving details with SampleResult & connection with 404 response should not make cache entry.", getThreadCacheEntry(url.toString())); } public void testSaveDetailsHttpMethodWithSampleResultWithResponseCode404GivesNoCacheEntry() throws Exception { saveDetailsWithHttpMethodAndSampleResultWithResponseCode("404"); assertNull("Saving SampleResult with HttpMethod & 404 response should not make cache entry.", getThreadCacheEntry(this.httpMethod.getPath())); } public void testSetHeadersHttpMethodWithSampleResultWithResponseCode200GivesCacheEntry() throws Exception { this.httpMethod.setURI(this.uri); this.httpMethod.addRequestHeader(new Header(HTTPConstants.IF_MODIFIED_SINCE, this.currentTimeInGMT, false)); this.httpMethod.addRequestHeader(new Header(HTTPConstants.ETAG, EXPECTED_ETAG, false)); saveDetailsWithHttpMethodAndSampleResultWithResponseCode("200"); setHeadersWithUrlAndHttpMethod(); checkRequestHeader(HTTPConstants.IF_NONE_MATCH, EXPECTED_ETAG); checkRequestHeader(HTTPConstants.IF_MODIFIED_SINCE, this.currentTimeInGMT); } public void testSetHeadersHttpMethodWithSampleResultWithResponseCode404GivesNoCacheEntry() throws Exception { this.httpMethod.setURI(this.uri); saveDetailsWithHttpMethodAndSampleResultWithResponseCode("404"); setHeadersWithUrlAndHttpMethod(); assertNull("Saving SampleResult with HttpMethod & 404 response should not make cache entry.", getThreadCacheEntry(this.httpMethod.getPath())); } public void testSetHeadersHttpURLConnectionWithSampleResultWithResponseCode200GivesCacheEntry() throws Exception { saveDetailsWithConnectionAndSampleResultWithResponseCode("200"); setHeadersWithHttpUrlConnectionAndUrl(); Map> properties = this.httpUrlConnection.getRequestProperties(); checkProperty(properties, HTTPConstants.IF_NONE_MATCH, EXPECTED_ETAG); checkProperty(properties, HTTPConstants.IF_MODIFIED_SINCE, this.currentTimeInGMT); } public void testSetHeadersHttpURLConnectionWithSampleResultWithResponseCode404GivesNoCacheEntry() throws Exception { saveDetailsWithConnectionAndSampleResultWithResponseCode("404"); setHeadersWithHttpUrlConnectionAndUrl(); assertNull("Saving SampleResult with HttpMethod & 404 response should not make cache entry.", getThreadCacheEntry(this.url.toString())); } public void testClearCache() throws Exception { assertTrue("ThreadCache should be empty initially.", getThreadCache().isEmpty()); saveDetailsWithHttpMethodAndSampleResultWithResponseCode("200"); assertFalse("ThreadCache should be populated after saving details for HttpMethod with SampleResult with response code 200.", getThreadCache().isEmpty()); this.cacheManager.clear(); assertTrue("ThreadCache should be emptied by call to clear.", getThreadCache().isEmpty()); } private void checkRequestHeader(String requestHeader, String expectedValue) { Header header = this.httpMethod.getRequestHeader(requestHeader); assertEquals("Wrong name in header for " + requestHeader, requestHeader, header.getName()); assertEquals("Wrong value for header " + header, expectedValue, header.getValue()); } private static void checkProperty(Map> properties, String property, String expectedPropertyValue) { assertNotNull("Properties should not be null. Expected to find within it property = " + property + " with expected value = " + expectedPropertyValue, properties); List listOfPropertyValues = properties.get(property); assertNotNull("No property entry found for property " + property, listOfPropertyValues); assertEquals("Did not find single property for property " + property, 1, listOfPropertyValues.size()); assertEquals("Unexpected value for property " + property, expectedPropertyValue, listOfPropertyValues.get(0)); } private SampleResult getSampleResultWithSpecifiedResponseCode(String code) { SampleResult sampleResult = new SampleResult(); sampleResult.setResponseCode(code); return sampleResult; } private Map getThreadCache() throws Exception { Field threadLocalfield = CacheManager.class.getDeclaredField("threadCache"); threadLocalfield.setAccessible(true); @SuppressWarnings("unchecked") ThreadLocal> threadLocal = (ThreadLocal>) threadLocalfield.get(this.cacheManager); return threadLocal.get(); } private CacheManager.CacheEntry getThreadCacheEntry(String url) throws Exception { return getThreadCache().get(url); } private void saveDetailsWithHttpMethodAndSampleResultWithResponseCode(String responseCode) throws Exception { SampleResult sampleResult = getSampleResultWithSpecifiedResponseCode(responseCode); this.cacheManager.saveDetails(this.httpMethod, sampleResult); } private void saveDetailsWithConnectionAndSampleResultWithResponseCode(String responseCode) { SampleResult sampleResult = getSampleResultWithSpecifiedResponseCode(responseCode); this.cacheManager.saveDetails(this.urlConnection, sampleResult); } private void setHeadersWithHttpUrlConnectionAndUrl() { this.cacheManager.setHeaders(this.httpUrlConnection, this.url); } private void setHeadersWithUrlAndHttpMethod() { this.cacheManager.setHeaders(this.url, this.httpMethod); } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java0000644000175000017500000004444612032647144031212 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.net.URL; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; public class TestCookieManager extends JMeterTestCase { private CookieManager man = null; public TestCookieManager(String name) { super(name); } private JMeterContext jmctx = null; @Override public void setUp() throws Exception { super.setUp(); jmctx = JMeterContextService.getContext(); man = new CookieManager(); man.setThreadContext(jmctx); man.testStarted();// This is needed in order to set up the cookie policy } public void testRemoveCookie() throws Exception { man.setThreadContext(jmctx); Cookie c = new Cookie("id", "me", "127.0.0.1", "/", false, 0); man.add(c); assertEquals(1, man.getCookieCount()); // This should be ignored, as there is no value Cookie d = new Cookie("id", "", "127.0.0.1", "/", false, 0); man.add(d); assertEquals(0, man.getCookieCount()); man.add(c); man.add(c); assertEquals(1, man.getCookieCount()); Cookie e = new Cookie("id", "me2", "127.0.0.1", "/", false, 0); man.add(e); assertEquals(1, man.getCookieCount()); } public void testSendCookie() throws Exception { man.add(new Cookie("id", "value", "jakarta.apache.org", "/", false, 9999999999L)); HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setDomain("jakarta.apache.org"); sampler.setPath("/index.html"); sampler.setMethod(HTTPConstants.GET); assertNotNull(man.getCookieHeaderForURL(sampler.getUrl())); } public void testSendCookie2() throws Exception { man.add(new Cookie("id", "value", ".apache.org", "/", false, 9999999999L)); HTTPSamplerBase sampler = new HTTPNullSampler(); sampler.setDomain("jakarta.apache.org"); sampler.setPath("/index.html"); sampler.setMethod(HTTPConstants.GET); assertNotNull(man.getCookieHeaderForURL(sampler.getUrl())); } /** * Test that the cookie domain field is actually handled as browsers do * (i.e.: host X matches domain .X): */ public void testDomainHandling() throws Exception { URL url = new URL("http://jakarta.apache.org/"); man.addCookieFromHeader("test=1;domain=.jakarta.apache.org", url); assertNotNull(man.getCookieHeaderForURL(url)); } public void testCrossDomainHandling() throws Exception { URL url = new URL("http://jakarta.apache.org/"); assertEquals(0,man.getCookieCount()); // starts empty man.addCookieFromHeader("test=2;domain=.hc.apache.org", url); assertEquals(0,man.getCookieCount()); // should not be stored man.addCookieFromHeader("test=1;domain=.jakarta.apache.org", url); assertEquals(1,man.getCookieCount()); // OK } /** * Test that we won't be tricked by similar host names (this was a past * bug, although it never got reported in the bug database): */ public void testSimilarHostNames() throws Exception { URL url = new URL("http://ache.org/"); man.addCookieFromHeader("test=1", url); url = new URL("http://jakarta.apache.org/"); assertNull(man.getCookieHeaderForURL(url)); } // Test session cookie is returned public void testSessionCookie() throws Exception { URL url = new URL("http://a.b.c/"); man.addCookieFromHeader("test=1", url); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test=1", s); } // Bug 2063 public void testCookieWithEquals() throws Exception { URL url = new URL("http://a.b.c/"); man.addCookieFromHeader("NSCP_USER_LOGIN1_NEW=SHA=xxxxx", url); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("NSCP_USER_LOGIN1_NEW=SHA=xxxxx", s); Cookie c=man.get(0); assertEquals("NSCP_USER_LOGIN1_NEW",c.getName()); assertEquals("SHA=xxxxx",c.getValue()); } // Test Old cookie is not returned public void testOldCookie() throws Exception { URL url = new URL("http://a.b.c/"); man.addCookieFromHeader("test=1; expires=Mon, 01-Jan-1990 00:00:00 GMT", url); String s = man.getCookieHeaderForURL(url); assertNull(s); } // Test New cookie is returned public void testNewCookie() throws Exception { URL url = new URL("http://a.b.c/"); man.addCookieFromHeader("test=1; expires=Mon, 01-Jan-2990 00:00:00 GMT", url); assertEquals(1,man.getCookieCount()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test=1", s); } // Test multi-cookie header handling public void testCookies1() throws Exception { URL url = new URL("http://a.b.c.d/testCookies1"); man.addCookieFromHeader("test1=1; comment=\"how,now\", test2=2; version=1", url); assertEquals(2,man.getCookieCount()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test1=1; test2=2", s); } public void testCookies2() throws Exception { URL url = new URL("https://a.b.c.d/testCookies2"); man.addCookieFromHeader("test1=1;secure, test2=2;secure", url); assertEquals(2,man.getCookieCount()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test1=1; test2=2", s); } // Test duplicate cookie handling public void testDuplicateCookie() throws Exception { URL url = new URL("http://a.b.c/"); man.addCookieFromHeader("test=1", url); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test=1", s); man.addCookieFromHeader("test=2", url); s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test=2", s); } public void testDuplicateCookie2() throws Exception { URL url = new URL("http://a.b.c/"); man.addCookieFromHeader("test=1", url); man.addCookieFromHeader("test2=a", url); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test=1; test2=a", s); // Assumes some kind of list is used man.addCookieFromHeader("test=2", url); man.addCookieFromHeader("test3=b", url); s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test2=a; test=2; test3=b", s);// Assumes some kind of list is use // If not using a list that retains the order, then the asserts would need to change } /** Tests missing cookie path for a trivial URL fetch from the domain * Note that this fails prior to a fix for BUG 38256 */ public void testMissingPath0() throws Exception { URL url = new URL("http://d.e.f/goo.html"); man.addCookieFromHeader("test=moo", url); String s = man.getCookieHeaderForURL(new URL("http://d.e.f/")); assertNotNull(s); assertEquals("test=moo", s); } /** Tests missing cookie path for a non-trivial URL fetch from the * domain. Note that this fails prior to a fix for BUG 38256 */ public void testMissingPath1() throws Exception { URL url = new URL("http://d.e.f/moo.html"); man.addCookieFromHeader("test=moo", url); String s = man.getCookieHeaderForURL(new URL("http://d.e.f/goo.html")); assertNotNull(s); assertEquals("test=moo", s); } /** Tests explicit root path with a trivial URL fetch from the domain */ public void testRootPath0() throws Exception { URL url = new URL("http://d.e.f/goo.html"); man.addCookieFromHeader("test=moo;path=/", url); String s = man.getCookieHeaderForURL(new URL("http://d.e.f/")); assertNotNull(s); assertEquals("test=moo", s); } /** Tests explicit root path with a non-trivial URL fetch from the domain */ public void testRootPath1() throws Exception { URL url = new URL("http://d.e.f/moo.html"); man.addCookieFromHeader("test=moo;path=/", url); String s = man.getCookieHeaderForURL(new URL("http://d.e.f/goo.html")); assertNotNull(s); assertEquals("test=moo", s); } // Test cookie matching public void testCookieMatching() throws Exception { URL url = new URL("http://a.b.c:8080/TopDir/fred.jsp"); man.addCookieFromHeader("ID=abcd; Path=/TopDir", url); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("ID=abcd", s); url = new URL("http://a.b.c:8080/other.jsp"); s=man.getCookieHeaderForURL(url); assertNull(s); url = new URL("http://a.b.c:8080/TopDir/suub/another.jsp"); s=man.getCookieHeaderForURL(url); assertNotNull(s); url = new URL("http://a.b.c:8080/TopDir"); s=man.getCookieHeaderForURL(url); assertNotNull(s); url = new URL("http://a.b.d/"); s=man.getCookieHeaderForURL(url); assertNull(s); } public void testCookieOrdering1() throws Exception { URL url = new URL("http://order.now/sub1/moo.html"); man.addCookieFromHeader("test1=moo1;path=/", url); man.addCookieFromHeader("test2=moo2;path=/sub1", url); man.addCookieFromHeader("test2=moo3;path=/", url); assertEquals(3,man.getCookieCount()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); assertEquals("test2=moo2; test1=moo1; test2=moo3", s); } public void testCookieOrdering2() throws Exception { URL url = new URL("http://order.now/sub1/moo.html"); man.addCookieFromHeader("test1=moo1;", url); man.addCookieFromHeader("test2=moo2;path=/sub1", url); man.addCookieFromHeader("test2=moo3;path=/", url); assertEquals(3,man.getCookieCount()); assertEquals("/sub1",man.get(0).getPath()); // Defaults to caller URL assertEquals("/sub1",man.get(1).getPath()); assertEquals("/",man.get(2).getPath()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler(); org.apache.commons.httpclient.Cookie[] c = hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, CookieManager.ALLOW_VARIABLE_COOKIES); assertEquals("/sub1",c[0].getPath()); assertFalse(c[0].isPathAttributeSpecified()); assertEquals("/sub1",c[1].getPath()); assertTrue(c[1].isPathAttributeSpecified()); assertEquals("/",c[2].getPath()); assertEquals("test1=moo1; test2=moo2; test2=moo3", s); } public void testCookiePolicy2109() throws Exception { man.setCookiePolicy(CookiePolicy.RFC_2109); man.testStarted(); // ensure policy is picked up URL url = new URL("http://order.now/sub1/moo.html"); man.addCookieFromHeader("test1=moo1;", url); man.addCookieFromHeader("test2=moo2;path=/sub1", url); man.addCookieFromHeader("test2=moo3;path=/", url); assertEquals(3,man.getCookieCount()); //assertEquals("/",man.get(0).getPath()); assertEquals("/sub1",man.get(1).getPath()); assertEquals("/",man.get(2).getPath()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler(); org.apache.commons.httpclient.Cookie[] c = hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, CookieManager.ALLOW_VARIABLE_COOKIES); assertEquals("/sub1",c[0].getPath()); assertFalse(c[0].isPathAttributeSpecified()); assertEquals("/sub1",c[1].getPath()); assertTrue(c[1].isPathAttributeSpecified()); assertEquals("/",c[2].getPath()); assertTrue(c[2].isPathAttributeSpecified()); assertEquals("$Version=0; test1=moo1; test2=moo2; $Path=/sub1; test2=moo3; $Path=/", s); } public void testCookiePolicyNetscape() throws Exception { man.setCookiePolicy(CookiePolicy.NETSCAPE); man.testStarted(); // ensure policy is picked up URL url = new URL("http://www.order.now/sub1/moo.html"); man.addCookieFromHeader("test1=moo1;", url); man.addCookieFromHeader("test2=moo2;path=/sub1", url); man.addCookieFromHeader("test2=moo3;path=/", url); assertEquals(3,man.getCookieCount()); assertEquals("/sub1",man.get(0).getPath()); assertEquals("/sub1",man.get(1).getPath()); assertEquals("/",man.get(2).getPath()); String s = man.getCookieHeaderForURL(url); assertNotNull(s); HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler(); org.apache.commons.httpclient.Cookie[] c = hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, CookieManager.ALLOW_VARIABLE_COOKIES); assertEquals("/sub1",c[0].getPath()); assertFalse(c[0].isPathAttributeSpecified()); assertEquals("/sub1",c[1].getPath()); assertTrue(c[1].isPathAttributeSpecified()); assertEquals("/",c[2].getPath()); assertTrue(c[2].isPathAttributeSpecified()); assertEquals("test1=moo1; test2=moo2; test2=moo3", s); } public void testCookiePolicyIgnore() throws Exception { man.setCookiePolicy(CookiePolicy.IGNORE_COOKIES); man.testStarted(); // ensure policy is picked up URL url = new URL("http://order.now/sub1/moo.html"); man.addCookieFromHeader("test1=moo1;", url); man.addCookieFromHeader("test2=moo2;path=/sub1", url); man.addCookieFromHeader("test2=moo3;path=/", url); assertEquals(0,man.getCookieCount());// Cookies are ignored Cookie cc; cc=new Cookie("test1","moo1",null,"/sub1",false,0,false,false); man.add(cc); cc=new Cookie("test2","moo2",null,"/sub1",false,0,true,false); man.add(cc); cc=new Cookie("test3","moo3",null,"/",false,0,false,false); man.add(cc); assertEquals(3,man.getCookieCount()); assertEquals("/sub1",man.get(0).getPath()); assertEquals("/sub1",man.get(1).getPath()); assertEquals("/",man.get(2).getPath()); String s = man.getCookieHeaderForURL(url); assertNull(s); HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler(); org.apache.commons.httpclient.Cookie[] c = hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, CookieManager.ALLOW_VARIABLE_COOKIES); assertEquals(0,c.length); // Cookies again ignored } public void testLoad() throws Exception{ assertEquals(0,man.getCookieCount()); man.addFile(findTestPath("testfiles/cookies.txt")); assertEquals(3,man.getCookieCount()); int num = 0; assertEquals("name",man.get(num).getName()); assertEquals("value",man.get(num).getValue()); assertEquals("path",man.get(num).getPath()); assertEquals("domain",man.get(num).getDomain()); assertTrue(man.get(num).getSecure()); assertEquals(num,man.get(num).getExpires()); num++; assertEquals("name2",man.get(num).getName()); assertEquals("value2",man.get(num).getValue()); assertEquals("/",man.get(num).getPath()); assertEquals("",man.get(num).getDomain()); assertFalse(man.get(num).getSecure()); assertEquals(0,man.get(num).getExpires()); num++; assertEquals("a",man.get(num).getName()); assertEquals("b",man.get(num).getValue()); assertEquals("d",man.get(num).getPath()); assertEquals("c",man.get(num).getDomain()); assertTrue(man.get(num).getSecure()); assertEquals(0,man.get(num).getExpires()); // Show that maxlong now saved as 0 } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/TestAuthManager.java0000644000175000017500000000667112032647144030700 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.net.URL; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.testelement.property.CollectionProperty; public class TestAuthManager extends JMeterTestCase { public TestAuthManager(String name) { super(name); } public void testHttp() throws Exception { assertTrue(AuthManager.isSupportedProtocol(new URL("http:"))); } public void testHttps() throws Exception { assertTrue(AuthManager.isSupportedProtocol(new URL("https:"))); } public void testFile() throws Exception { AuthManager am = new AuthManager(); CollectionProperty ao = am.getAuthObjects(); assertEquals(0, ao.size()); am.addFile(findTestPath("testfiles/TestAuth.txt")); assertEquals(9, ao.size()); Authorization at; at = am.getAuthForURL(new URL("http://a.b.c/")); assertEquals("login", at.getUser()); assertEquals("password", at.getPass()); at = am.getAuthForURL(new URL("http://a.b.c:80/")); // same as above assertEquals("login", at.getUser()); assertEquals("password", at.getPass()); at = am.getAuthForURL(new URL("http://a.b.c:443/"));// not same assertNull(at); at = am.getAuthForURL(new URL("http://a.b.c/1")); assertEquals("login1", at.getUser()); assertEquals("password1", at.getPass()); assertEquals("", at.getDomain()); assertEquals("", at.getRealm()); at = am.getAuthForURL(new URL("http://d.e.f/")); assertEquals("user", at.getUser()); assertEquals("pass", at.getPass()); assertEquals("domain", at.getDomain()); assertEquals("realm", at.getRealm()); at = am.getAuthForURL(new URL("https://j.k.l/")); assertEquals("jkl", at.getUser()); assertEquals("pass", at.getPass()); at = am.getAuthForURL(new URL("https://j.k.l:443/")); assertEquals("jkl", at.getUser()); assertEquals("pass", at.getPass()); at = am.getAuthForURL(new URL("https://l.m.n/")); assertEquals("lmn443", at.getUser()); assertEquals("pass", at.getPass()); at = am.getAuthForURL(new URL("https://l.m.n:443/")); assertEquals("lmn443", at.getUser()); assertEquals("pass", at.getPass()); at = am.getAuthForURL(new URL("https://l.m.n:8443/")); assertEquals("lmn8443", at.getUser()); assertEquals("pass", at.getPass()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/gui/0000755000175000017500000000000012165514773025563 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/gui/TestHttpTestSampleGui.java0000644000175000017500000000337712032647144032656 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control.gui; import junit.framework.TestCase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; public class TestHttpTestSampleGui extends TestCase { private HttpTestSampleGui gui; public TestHttpTestSampleGui(String name) { super(name); } @Override public void setUp() { gui = new HttpTestSampleGui(); } public void testCloneSampler() throws Exception { HTTPSamplerBase sampler = (HTTPSamplerBase) gui.createTestElement(); sampler.addArgument("param", "value"); HTTPSamplerBase clonedSampler = (HTTPSamplerBase) sampler.clone(); clonedSampler.setRunningVersion(true); sampler.getArguments().getArgument(0).setValue("new value"); assertEquals("Sampler didn't clone correctly", "new value", sampler.getArguments().getArgument(0) .getValue()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/http/control/TestHTTPMirrorThread.java0000644000175000017500000003767512032647144031616 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; /* import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.protocol.http.control.HttpMirrorControl; import org.apache.jmeter.protocol.http.sampler.HTTPSampler2; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.EncoderCache; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; */ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.extensions.TestSetup; /** * Class for testing the HTTPMirrorThread, which is handling the * incoming requests for the HTTPMirrorServer */ public class TestHTTPMirrorThread extends TestCase { /** The encodings used for http headers and control information */ private static final String ISO_8859_1 = "ISO-8859-1"; // $NON-NLS-1$ private static final String UTF_8 = "UTF-8"; // $NON-NLS-1$ private static final byte[] CRLF = { 0x0d, 0x0a }; private static final int HTTP_SERVER_PORT = 8181; public TestHTTPMirrorThread(String arg0) { super(arg0); } public static Test suite(){ TestSetup setup = new TestSetup(new TestSuite(TestHTTPMirrorThread.class)){ private HttpMirrorServer httpServer; @Override protected void setUp() throws Exception { httpServer = startHttpMirror(HTTP_SERVER_PORT); } @Override protected void tearDown() throws Exception { // Shutdown the http server httpServer.stopServer(); httpServer = null; } }; return setup; } /** * Utility method to handle starting the HttpMirrorServer for testing. * Also used by TestHTTPSamplersAgainstHttpMirrorServer */ public static HttpMirrorServer startHttpMirror(int port) throws Exception { HttpMirrorServer server = null; server = new HttpMirrorServer(port); server.start(); Exception e = null; for (int i=0; i < 10; i++) {// Wait up to 1 second try { Thread.sleep(100); } catch (InterruptedException ignored) { } e = server.getException(); if (e != null) {// Already failed throw new Exception("Could not start mirror server on port: "+port+". "+e); } if (server.isAlive()) { break; // succeeded } } if (!server.isAlive()){ throw new Exception("Could not start mirror server on port: "+port); } return server; } public void testGetRequest() throws Exception { // Connect to the http server, and do a simple http get Socket clientSocket = new Socket("localhost", HTTP_SERVER_PORT); OutputStream outputStream = clientSocket.getOutputStream(); InputStream inputStream = clientSocket.getInputStream(); // Write to the socket ByteArrayOutputStream bos = new ByteArrayOutputStream(); // Headers bos.write("GET / HTTP 1.1".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write("Host: localhost".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(CRLF); bos.close(); outputStream.write(bos.toByteArray()); // Read the response ByteArrayOutputStream response = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = 0; while(( length = inputStream.read(buffer)) != -1) { response.write(buffer, 0, length); } response.close(); byte[] mirroredResponse = getMirroredResponse(response.toByteArray()); // Check that the request and response matches checkArraysHaveSameContent(bos.toByteArray(), mirroredResponse); // Close the connection clientSocket.close(); // Connect to the http server, and do a simple http get, with // a pause in the middle of transmitting the header clientSocket = new Socket("localhost", HTTP_SERVER_PORT); outputStream = clientSocket.getOutputStream(); inputStream = clientSocket.getInputStream(); // Write to the socket bos = new ByteArrayOutputStream(); // Headers bos.write("GET / HTTP 1.1".getBytes(ISO_8859_1)); bos.write(CRLF); // Write the start of the headers, and then sleep, so that the mirror // thread will have to block to wait for more data to appear bos.close(); byte[] firstChunk = bos.toByteArray(); outputStream.write(firstChunk); Thread.sleep(300); // Write the rest of the headers bos = new ByteArrayOutputStream(); bos.write("Host: localhost".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(CRLF); bos.close(); byte[] secondChunk = bos.toByteArray(); outputStream.write(secondChunk); // Read the response response = new ByteArrayOutputStream(); buffer = new byte[1024]; length = 0; while((length = inputStream.read(buffer)) != -1) { response.write(buffer, 0, length); } response.close(); mirroredResponse = getMirroredResponse(response.toByteArray()); // The content sent bos = new ByteArrayOutputStream(); bos.write(firstChunk); bos.write(secondChunk); bos.close(); // Check that the request and response matches checkArraysHaveSameContent(bos.toByteArray(), mirroredResponse); // Close the connection clientSocket.close(); } public void testPostRequest() throws Exception { // Connect to the http server, and do a simple http post Socket clientSocket = new Socket("localhost", HTTP_SERVER_PORT); OutputStream outputStream = clientSocket.getOutputStream(); InputStream inputStream = clientSocket.getInputStream(); // Construct body StringBuilder postBodyBuffer = new StringBuilder(); for(int i = 0; i < 1000; i++) { postBodyBuffer.append("abc"); } byte[] postBody = postBodyBuffer.toString().getBytes(ISO_8859_1); // Write to the socket ByteArrayOutputStream bos = new ByteArrayOutputStream(); // Headers bos.write("GET / HTTP 1.1".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write("Host: localhost".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(("Content-type: text/plain; charset=" + ISO_8859_1).getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(("Content-length: " + postBody.length).getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(CRLF); bos.write(postBody); bos.close(); // Write the headers and body outputStream.write(bos.toByteArray()); // Read the response ByteArrayOutputStream response = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = 0; while((length = inputStream.read(buffer)) != -1) { response.write(buffer, 0, length); } response.close(); byte[] mirroredResponse = getMirroredResponse(response.toByteArray()); // Check that the request and response matches checkArraysHaveSameContent(bos.toByteArray(), mirroredResponse); // Close the connection clientSocket.close(); // Connect to the http server, and do a simple http post, with // a pause after transmitting the headers clientSocket = new Socket("localhost", HTTP_SERVER_PORT); outputStream = clientSocket.getOutputStream(); inputStream = clientSocket.getInputStream(); // Write to the socket bos = new ByteArrayOutputStream(); // Headers bos.write("GET / HTTP 1.1".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write("Host: localhost".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(("Content-type: text/plain; charset=" + ISO_8859_1).getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(("Content-length: " + postBody.length).getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(CRLF); bos.close(); // Write the headers, and then sleep bos.close(); byte[] firstChunk = bos.toByteArray(); outputStream.write(firstChunk); Thread.sleep(300); // Write the body byte[] secondChunk = postBody; outputStream.write(secondChunk); // Read the response response = new ByteArrayOutputStream(); buffer = new byte[1024]; length = 0; while((length = inputStream.read(buffer)) != -1) { response.write(buffer, 0, length); } response.close(); mirroredResponse = getMirroredResponse(response.toByteArray()); // The content sent bos = new ByteArrayOutputStream(); bos.write(firstChunk); bos.write(secondChunk); bos.close(); // Check that the request and response matches checkArraysHaveSameContent(bos.toByteArray(), mirroredResponse); // Close the connection clientSocket.close(); // Connect to the http server, and do a simple http post with utf-8 // encoding of the body, which caused problems when reader/writer // classes were used in the HttpMirrorThread clientSocket = new Socket("localhost", HTTP_SERVER_PORT); outputStream = clientSocket.getOutputStream(); inputStream = clientSocket.getInputStream(); // Construct body postBodyBuffer = new StringBuilder(); for(int i = 0; i < 1000; i++) { postBodyBuffer.append("\u0364\u00c5\u2052"); } postBody = postBodyBuffer.toString().getBytes(UTF_8); // Write to the socket bos = new ByteArrayOutputStream(); // Headers bos.write("GET / HTTP 1.1".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write("Host: localhost".getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(("Content-type: text/plain; charset=" + UTF_8).getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(("Content-length: " + postBody.length).getBytes(ISO_8859_1)); bos.write(CRLF); bos.write(CRLF); bos.close(); // Write the headers, and then sleep bos.close(); firstChunk = bos.toByteArray(); outputStream.write(firstChunk); Thread.sleep(300); // Write the body secondChunk = postBody; outputStream.write(secondChunk); // Read the response response = new ByteArrayOutputStream(); buffer = new byte[1024]; length = 0; while((length = inputStream.read(buffer)) != -1) { response.write(buffer, 0, length); } response.close(); mirroredResponse = getMirroredResponse(response.toByteArray()); // The content sent bos = new ByteArrayOutputStream(); bos.write(firstChunk); bos.write(secondChunk); bos.close(); // Check that the request and response matches checkArraysHaveSameContent(bos.toByteArray(), mirroredResponse); // Close the connection clientSocket.close(); } /* public void testPostRequestChunked() throws Exception { // TODO - implement testing of chunked post request } */ /** * Check that the the two byte arrays have identical content * * @param expected * @param actual * @throws UnsupportedEncodingException */ private void checkArraysHaveSameContent(byte[] expected, byte[] actual) throws UnsupportedEncodingException { if(expected != null && actual != null) { if(expected.length != actual.length) { System.out.println(">>>>>>>>>>>>>>>>>>>> (expected) : length " + expected.length); System.out.println(new String(expected,"UTF-8")); System.out.println("==================== (actual) : length " + actual.length); System.out.println(new String(actual,"UTF-8")); System.out.println("<<<<<<<<<<<<<<<<<<<<"); fail("arrays have different length, expected is " + expected.length + ", actual is " + actual.length); } else { for(int i = 0; i < expected.length; i++) { if(expected[i] != actual[i]) { System.out.println(">>>>>>>>>>>>>>>>>>>> (expected) : length " + expected.length); System.out.println(new String(expected,0,i+1, ISO_8859_1)); System.out.println("==================== (actual) : length " + actual.length); System.out.println(new String(actual,0,i+1, ISO_8859_1)); System.out.println("<<<<<<<<<<<<<<<<<<<<"); /* // Useful to when debugging for(int j = 0; j < expected.length; j++) { System.out.print(expected[j] + " "); } System.out.println(); for(int j = 0; j < actual.length; j++) { System.out.print(actual[j] + " "); } System.out.println(); */ fail("byte at position " + i + " is different, expected is " + expected[i] + ", actual is " + actual[i]); } } } } else { fail("expected or actual byte arrays were null"); } } private byte[] getMirroredResponse(byte[] allResponse) { // The response includes the headers from the mirror server, // we want to skip those, to only keep the content mirrored. // Look for the first CRLFCRLF section int startOfMirrorResponse = 0; for(int i = 0; i < allResponse.length; i++) { // TODO : This is a bit fragile if(allResponse[i] == 0x0d && allResponse[i+1] == 0x0a && allResponse[i+2] == 0x0d && allResponse[i+3] == 0x0a) { startOfMirrorResponse = i + 4; break; } } byte[] mirrorResponse = new byte[allResponse.length - startOfMirrorResponse]; System.arraycopy(allResponse, startOfMirrorResponse, mirrorResponse, 0, mirrorResponse.length); return mirrorResponse; } } apache-jmeter-2.8/test/src/org/apache/jmeter/protocol/ldap/0000755000175000017500000000000012032647144023250 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/protocol/ldap/config/0000755000175000017500000000000012032647144024515 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/protocol/ldap/config/gui/0000755000175000017500000000000012165514773025311 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/protocol/ldap/config/gui/PackageTest.java0000644000175000017500000000357512032647144030351 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.config.gui; import junit.framework.TestCase; public class PackageTest extends TestCase { /** * Create a new test. * * @param name * the name of the test */ public PackageTest(String name) { super(name); } /** * Test that adding an argument to the table results in an appropriate * TestElement being created. * * @throws Exception * if an exception occurred during the test */ public void testLDAPArgumentCreation() throws Exception { LDAPArgumentsPanel gui = new LDAPArgumentsPanel(); gui.tableModel.addRow(new LDAPArgument()); gui.tableModel.setValueAt("howdy", 0, 0); gui.tableModel.addRow(new LDAPArgument()); gui.tableModel.setValueAt("doody", 0, 1); assertEquals("=", ((LDAPArgument) ((LDAPArguments) gui.createTestElement()).getArguments().get(0) .getObjectValue()).getMetaData()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/visualizers/0000755000175000017500000000000012165514773023057 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/visualizers/TestSamplingStatCalculator.java0000644000175000017500000000726612032647143031204 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.samplers.SampleResult; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class TestSamplingStatCalculator { private SamplingStatCalculator ssc; @Before public void setUp(){ ssc = new SamplingStatCalculator("JUnit"); } @Test public void testGetCurrentSample() { Assert.assertNotNull(ssc.getCurrentSample()); // probably needed to avoid NPEs with GUIs } // @Test // public void testGetElapsed() { // fail("Not yet implemented"); // } // // @Test // public void testGetRate() { // fail("Not yet implemented"); // } // // @Test // public void testGetBytesPerSecond() { // fail("Not yet implemented"); // } // // @Test // public void testGetKBPerSecond() { // fail("Not yet implemented"); // } @Test public void testGetAvgPageBytes() { SampleResult res = new SampleResult(); Assert.assertEquals(0,ssc.getAvgPageBytes(),0); res.setResponseData("abcdef", "UTF-8"); ssc.addSample(res); res.setResponseData("abcde", "UTF-8"); ssc.addSample(res); res.setResponseData("abcd", "UTF-8"); ssc.addSample(res); Assert.assertEquals(5,ssc.getAvgPageBytes(),0); } // @Test // public void testGetLabel() { // fail("Not yet implemented"); // } // // @Test // public void testAddSample() { // fail("Not yet implemented"); // } // // @Test // public void testGetErrorPercentage() { // fail("Not yet implemented"); // } // // @Test // public void testToString() { // fail("Not yet implemented"); // } // // @Test // public void testGetErrorCount() { // fail("Not yet implemented"); // } // // @Test // public void testGetMaxThroughput() { // fail("Not yet implemented"); // } // // @Test // public void testGetDistribution() { // fail("Not yet implemented"); // } // // @Test // public void testGetPercentPointDouble() { // fail("Not yet implemented"); // } // // @Test // public void testGetCount() { // fail("Not yet implemented"); // } // // @Test // public void testGetMax() { // fail("Not yet implemented"); // } // // @Test // public void testGetMean() { // fail("Not yet implemented"); // } // // @Test // public void testGetMeanAsNumber() { // fail("Not yet implemented"); // } // // @Test // public void testGetMedian() { // fail("Not yet implemented"); // } // // @Test // public void testGetMin() { // fail("Not yet implemented"); // } // // @Test // public void testGetPercentPointFloat() { // fail("Not yet implemented"); // } // // @Test // public void testGetStandardDeviation() { // fail("Not yet implemented"); // } } apache-jmeter-2.8/test/src/org/apache/jmeter/visualizers/GenerateTreeGui.java0000644000175000017500000002222312032647143026731 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.control.GenericController; import org.apache.jmeter.control.gui.LogicControllerGui; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * Workbench test element to create a test plan containing samples of each test element * (apart from Threads and Test Fragment). * * The user creates a Thread Group, and the elements are created as child elements of * Simple Controllers. * * Note: the code currently runs on all versions of JMeter back to 2.2. * Beware of making changes that rely on more recent APIs. */ public class GenerateTreeGui extends AbstractConfigGui implements ActionListener, UnsharedComponent { private static final long serialVersionUID = 1L; private JButton generateButton = new JButton("Generate"); public GenerateTreeGui() { super(); new Throwable().printStackTrace(); init(); } public String getLabelResource() { new Throwable().printStackTrace(); return "test_plan"; // $NON-NLS-1$ } @Override public String getStaticLabel() { new Throwable().printStackTrace(); return "Test Generator"; // $NON-NLS-1$ } @Override public String getDocAnchor() { new Throwable().printStackTrace(); return super.getDocAnchor(); } @Override public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.NON_TEST_ELEMENTS }); } public void actionPerformed(ActionEvent action) { GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeModel treeModel = guiPackage.getTreeModel(); JMeterTreeNode myTarget = findFirstNodeOfType(org.apache.jmeter.threads.ThreadGroup.class, treeModel); if (myTarget == null) { JMeterUtils.reportErrorToUser("Cannot find Thread Group"); return; } addElements(MenuFactory.CONTROLLERS, "Controllers", guiPackage, treeModel, myTarget); addElements(MenuFactory.CONFIG_ELEMENTS, "Config Elements", guiPackage, treeModel, myTarget); addElements(MenuFactory.TIMERS, "Timers", guiPackage, treeModel, myTarget); addElements(MenuFactory.PRE_PROCESSORS, "Pre Processors", guiPackage, treeModel, myTarget); addElements(MenuFactory.SAMPLERS, "Samplers", guiPackage, treeModel, myTarget); addElements(MenuFactory.POST_PROCESSORS, "Post Processors", guiPackage, treeModel, myTarget); addElements(MenuFactory.ASSERTIONS, "Assertions", guiPackage, treeModel, myTarget); addElements(MenuFactory.LISTENERS, "Listeners", guiPackage, treeModel, myTarget); } private void addElements(String menuKey, String title, GuiPackage guiPackage, JMeterTreeModel treeModel, JMeterTreeNode myTarget) { myTarget = addSimpleController(treeModel, myTarget, title); JPopupMenu jp = MenuFactory.makeMenu(menuKey, "").getPopupMenu(); for(Component comp : jp.getComponents()) { JMenuItem jmi = (JMenuItem) comp; try { TestElement testElement = guiPackage.createTestElement(jmi.getName()); addToTree(treeModel, myTarget, testElement); } catch (Exception e) { addSimpleController(treeModel, myTarget, jmi.getName()+" "+e.getMessage()); } } } public TestElement createTestElement() { TestElement el = new ConfigTestElement(); modifyTestElement(el); return el; } public void modifyTestElement(TestElement element) { configureTestElement(element); } /** * Create a panel containing the title label for the table. * * @return a panel containing the title label */ private Component makeLabelPanel() { JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); ButtonGroup bg = new ButtonGroup(); bg.add(generateButton); generateButton.addActionListener(this); labelPanel.add(generateButton); return labelPanel; } /** * Initialize the components and layout of this component. */ private void init() { JPanel p = this; setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); p = new JPanel(); p.setLayout(new BorderLayout()); p.add(makeLabelPanel(), BorderLayout.NORTH); // p.add(makeMainPanel(), BorderLayout.CENTER); // Force a minimum table height of 70 pixels p.add(Box.createVerticalStrut(70), BorderLayout.WEST); //p.add(makeButtonPanel(), BorderLayout.SOUTH); add(p, BorderLayout.CENTER); } /** * Helper method to add a Simple Controller to contain the elements. * Called from Application Thread that needs to update GUI (JMeterTreeModel) * @param model * Test component tree model * @param node * Node in the tree where we will add the Controller * @param name * A name for the Controller * @return the new node */ private JMeterTreeNode addSimpleController(JMeterTreeModel model, JMeterTreeNode node, String name) { final TestElement sc = new GenericController(); sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI); sc.setProperty(TestElement.NAME, name); // Use old style return addToTree(model, node, sc); } private static class RunGUI implements Runnable { private final JMeterTreeModel model; private final JMeterTreeNode node; private final TestElement testElement; RunGUI(JMeterTreeModel model, JMeterTreeNode node, TestElement testElement) { super(); this.model = model; this.node = node; this.testElement = testElement; } volatile JMeterTreeNode newNode; public void run() { try { newNode = model.addComponent(testElement, node); } catch (IllegalUserActionException e) { throw new Error(e); } } } private JMeterTreeNode addToTree(final JMeterTreeModel model, final JMeterTreeNode node, final TestElement sc) { RunGUI runnable = new RunGUI(model, node, sc); if(SwingUtilities.isEventDispatchThread()) { runnable.run(); } else { try { SwingUtilities.invokeAndWait(runnable); } catch (InterruptedException e) { throw new Error(e); } catch (InvocationTargetException e) { throw new Error(e); } } return runnable.newNode; } private static final String LOGIC_CONTROLLER_GUI = LogicControllerGui.class.getName(); /** * Finds the first enabled node of a given type in the tree. * * @param type * class of the node to be found * @param treeModel * * @return the first node of the given type in the test component tree, or * null if none was found. */ private JMeterTreeNode findFirstNodeOfType(Class type, JMeterTreeModel treeModel) { List nodes = treeModel.getNodesOfType(type); for (JMeterTreeNode node : nodes) { if (node.isEnabled()) { return node; } } return null; } }apache-jmeter-2.8/test/src/org/apache/jmeter/functions/0000755000175000017500000000000012165514773022507 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/functions/TestJexlFunction.java0000644000175000017500000000650712032647145026623 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestJexlFunction extends JMeterTestCase { private JexlFunction function; private SampleResult result; private Collection params; private JMeterVariables vars; private JMeterContext jmctx; public TestJexlFunction(String name) { super(name); } @Override public void setUp() { function = new JexlFunction(); result = new SampleResult(); jmctx = JMeterContextService.getContext(); String data = "The quick brown fox"; result.setResponseData(data, null); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); params = new LinkedList(); } public void testParameterCount() throws Exception { checkInvalidParameterCounts(function, 1, 2); } public void testSum() throws Exception { params.add(new CompoundVariable("1+2+3")); function.setParameters(params); String ret = function.execute(result, null); assertEquals("6", ret); } public void testSumVar() throws Exception { params.add(new CompoundVariable("1+2+3")); params.add(new CompoundVariable("TOTAL")); function.setParameters(params); String ret = function.execute(result, null); assertEquals("6", ret); assertEquals("6", vars.get("TOTAL")); } public void testReplace1() throws Exception { params.add(new CompoundVariable( "sampleResult.getResponseDataAsString().replaceAll('T','t')")); function.setParameters(params); String ret = function.execute(result, null); assertEquals("the quick brown fox", ret); } public void testReplace2() throws Exception { vars.put("URL", "/query.cgi?s1=1&s2=2&s3=3"); params.add(new CompoundVariable("vars.get('URL').replaceAll('&','&')")); params.add(new CompoundVariable("URL")); function.setParameters(params); String ret = function.execute(result, null); assertEquals("/query.cgi?s1=1&s2=2&s3=3", ret); assertEquals(ret,vars.getObject("URL")); } } apache-jmeter-2.8/test/src/org/apache/jmeter/functions/TestFileRowColContainer.java0000644000175000017500000001143712032647145030061 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.FileNotFoundException; import org.apache.jmeter.junit.JMeterTestCase; /** * File data container for CSV (and similar delimited) files Data is accessible * via row and column number * * @version $Revision: 1028573 $ */ public class TestFileRowColContainer extends JMeterTestCase { public void testNull() throws Exception { try { new FileRowColContainer(findTestPath("testfiles/xyzxyz")); fail("Should not find the file"); } catch (FileNotFoundException e) { } } public void testrowNum() throws Exception { FileRowColContainer f = new FileRowColContainer(findTestPath("testfiles/test.csv")); assertNotNull(f); assertEquals("Expected 4 lines", 4, f.getSize()); assertEquals(0, f.nextRow()); assertEquals(1, f.nextRow()); assertEquals(2, f.nextRow()); assertEquals(3, f.nextRow()); assertEquals(0, f.nextRow()); } public void testColumns() throws Exception { FileRowColContainer f = new FileRowColContainer(findTestPath("testfiles/test.csv")); assertNotNull(f); assertTrue("Not empty", f.getSize() > 0); int myRow = f.nextRow(); assertEquals(0, myRow); assertEquals("a1", f.getColumn(myRow, 0)); assertEquals("d1", f.getColumn(myRow, 3)); try { f.getColumn(myRow, 4); fail("Expected out of bounds"); } catch (IndexOutOfBoundsException e) { } myRow = f.nextRow(); assertEquals(1, myRow); assertEquals("b2", f.getColumn(myRow, 1)); assertEquals("c2", f.getColumn(myRow, 2)); } public void testColumnsComma() throws Exception { FileRowColContainer f = new FileRowColContainer(findTestPath("testfiles/test.csv"), ","); assertNotNull(f); assertTrue("Not empty", f.getSize() > 0); int myRow = f.nextRow(); assertEquals(0, myRow); assertEquals("a1", f.getColumn(myRow, 0)); assertEquals("d1", f.getColumn(myRow, 3)); try { f.getColumn(myRow, 4); fail("Expected out of bounds"); } catch (IndexOutOfBoundsException e) { } myRow = f.nextRow(); assertEquals(1, myRow); assertEquals("b2", f.getColumn(myRow, 1)); assertEquals("c2", f.getColumn(myRow, 2)); } public void testColumnsTab() throws Exception { FileRowColContainer f = new FileRowColContainer(findTestPath("testfiles/test.tsv"), "\t"); assertNotNull(f); assertTrue("Not empty", f.getSize() > 0); int myRow = f.nextRow(); assertEquals(0, myRow); assertEquals("a1", f.getColumn(myRow, 0)); assertEquals("d1", f.getColumn(myRow, 3)); try { f.getColumn(myRow, 4); fail("Expected out of bounds"); } catch (IndexOutOfBoundsException e) { } myRow = f.nextRow(); assertEquals(1, myRow); assertEquals("b2", f.getColumn(myRow, 1)); assertEquals("c2", f.getColumn(myRow, 2)); } public void testEmptyCols() throws Exception { FileRowColContainer f = new FileRowColContainer(findTestPath("testfiles/testempty.csv")); assertNotNull(f); assertEquals("Expected 4 lines", 4, f.getSize()); int myRow = f.nextRow(); assertEquals(0, myRow); assertEquals("", f.getColumn(myRow, 0)); assertEquals("d1", f.getColumn(myRow, 3)); myRow = f.nextRow(); assertEquals(1, myRow); assertEquals("", f.getColumn(myRow, 1)); assertEquals("c2", f.getColumn(myRow, 2)); myRow = f.nextRow(); assertEquals(2, myRow); assertEquals("b3", f.getColumn(myRow, 1)); assertEquals("", f.getColumn(myRow, 2)); myRow = f.nextRow(); assertEquals(3, myRow); assertEquals("b4", f.getColumn(myRow, 1)); assertEquals("c4", f.getColumn(myRow, 2)); assertEquals("", f.getColumn(myRow, 3)); } }apache-jmeter-2.8/test/src/org/apache/jmeter/functions/PackageTest.java0000644000175000017500000010201112032647145025531 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Package to test functions * * Functions are created and parameters set up in one thread. * * They are then tested in another thread, or two threads running in parallel * */ package org.apache.jmeter.functions; import java.io.FileNotFoundException; import java.util.Collection; import java.util.LinkedList; import junit.extensions.ActiveTestSuite; import junit.framework.Test; import junit.framework.TestSuite; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterStopThreadException; import org.apache.log.Logger; /** * Test cases for Functions */ public class PackageTest extends JMeterTestCase { private static final Logger log = LoggingManager.getLoggerForClass(); // static { // LoggingManager.setPriority("DEBUG","jmeter"); // LoggingManager.setTarget(new java.io.PrintWriter(System.out)); // } public PackageTest(String arg0) { super(arg0); } // Create the CSVRead function and set its parameters. private static CSVRead setCSVReadParams(String p1, String p2) throws Exception { CSVRead cr = new CSVRead(); Collection parms = new LinkedList(); if (p1 != null) { parms.add(new CompoundVariable(p1)); } if (p2 != null) { parms.add(new CompoundVariable(p2)); } cr.setParameters(parms); return cr; } // Create the StringFromFile function and set its parameters. private static StringFromFile SFFParams(String p1, String p2, String p3, String p4) throws Exception { StringFromFile sff = new StringFromFile(); Collection parms = new LinkedList(); if (p1 != null) { parms.add(new CompoundVariable(p1)); } if (p2 != null) { parms.add(new CompoundVariable(p2)); } if (p3 != null) { parms.add(new CompoundVariable(p3)); } if (p4 != null) { parms.add(new CompoundVariable(p4)); } sff.setParameters(parms); return sff; } // Create the SplitFile function and set its parameters. private static SplitFunction splitParams(String p1, String p2, String p3) throws Exception { SplitFunction split = new SplitFunction(); Collection parms = new LinkedList(); parms.add(new CompoundVariable(p1)); if (p2 != null) { parms.add(new CompoundVariable(p2)); } if (p3 != null) { parms.add(new CompoundVariable(p3)); } split.setParameters(parms); return split; } // Create the BeanShell function and set its parameters. private static BeanShell BSHFParams(String p1, String p2, String p3) throws Exception { BeanShell bsh = new BeanShell(); bsh.setParameters(makeParams(p1, p2, p3)); return bsh; } private static Collection makeParams(String p1, String p2, String p3) { Collection parms = new LinkedList(); if (p1 != null) { parms.add(new CompoundVariable(p1)); } if (p2 != null) { parms.add(new CompoundVariable(p2)); } if (p3 != null) { parms.add(new CompoundVariable(p3)); } return parms; } public static Test suite() throws Exception { TestSuite allsuites = new TestSuite("Function PackageTest"); if (!BeanShellInterpreter.isInterpreterPresent()){ final String msg = "BeanShell jar not present, tests ignored"; log.warn(msg); } else { TestSuite bsh = new TestSuite("BeanShell"); bsh.addTest(new PackageTest("BSH1")); allsuites.addTest(bsh); } TestSuite suite = new TestSuite("SingleThreaded"); suite.addTest(new PackageTest("CSVParams")); suite.addTest(new PackageTest("CSVNoFile")); suite.addTest(new PackageTest("CSVSetup")); suite.addTest(new PackageTest("CSVRun")); suite.addTest(new PackageTest("CSValias")); suite.addTest(new PackageTest("CSVBlankLine")); allsuites.addTest(suite); // Reset files suite.addTest(new PackageTest("CSVSetup")); TestSuite par = new ActiveTestSuite("Parallel"); par.addTest(new PackageTest("CSVThread1")); par.addTest(new PackageTest("CSVThread2")); allsuites.addTest(par); TestSuite sff = new TestSuite("StringFromFile"); sff.addTest(new PackageTest("SFFTest1")); sff.addTest(new PackageTest("SFFTest2")); sff.addTest(new PackageTest("SFFTest3")); sff.addTest(new PackageTest("SFFTest4")); sff.addTest(new PackageTest("SFFTest5")); allsuites.addTest(sff); TestSuite split = new TestSuite("SplitFunction"); split.addTest(new PackageTest("splitTest1")); allsuites.addTest(split); TestSuite xpath = new TestSuite("XPath"); xpath.addTest(new PackageTest("XPathtestColumns")); xpath.addTest(new PackageTest("XPathtestDefault")); xpath.addTest(new PackageTest("XPathtestNull")); xpath.addTest(new PackageTest("XPathtestrowNum")); xpath.addTest(new PackageTest("XPathEmpty")); xpath.addTest(new PackageTest("XPathFile1")); xpath.addTest(new PackageTest("XPathFile2")); xpath.addTest(new PackageTest("XPathNoFile")); allsuites.addTest(xpath); TestSuite random = new TestSuite("Random"); random.addTest(new PackageTest("randomTest1")); allsuites.addTest(random); allsuites.addTest(new PackageTest("XPathSetup1")); TestSuite par2 = new ActiveTestSuite("ParallelXPath1"); par2.addTest(new PackageTest("XPathThread1")); par2.addTest(new PackageTest("XPathThread2")); allsuites.addTest(par2); allsuites.addTest(new PackageTest("XPathSetup2")); TestSuite par3 = new ActiveTestSuite("ParallelXPath2"); par3.addTest(new PackageTest("XPathThread1")); par3.addTest(new PackageTest("XPathThread2")); allsuites.addTest(par3); TestSuite variable = new TestSuite("Variable"); variable.addTest(new PackageTest("variableTest1")); allsuites.addTest(variable); TestSuite eval = new TestSuite("Eval"); eval.addTest(new PackageTest("evalTest1")); eval.addTest(new PackageTest("evalTest2")); allsuites.addTest(eval); TestSuite intSum = new TestSuite("Sums"); intSum.addTest(new PackageTest("sumTest")); allsuites.addTest(intSum); return allsuites; } private JMeterContext jmctx = null; private JMeterVariables vars = null; @Override public void setUp() { jmctx = JMeterContextService.getContext(); jmctx.setVariables(new JMeterVariables()); vars = jmctx.getVariables(); } public void BSH1() throws Exception { String fn = "testfiles/BeanShellTest.bsh"; try { BSHFParams(null, null, null); fail("Expected InvalidVariableException"); } catch (InvalidVariableException e) { } try { BSHFParams("", "", ""); fail("Expected InvalidVariableException"); } catch (InvalidVariableException e) { } BeanShell bsh; try { bsh = BSHFParams("", "", null); assertEquals("", bsh.execute()); } catch (InvalidVariableException e) { fail("BeanShell not present"); } bsh = BSHFParams("1", null, null); assertEquals("1", bsh.execute()); bsh = BSHFParams("1+1", "VAR", null); assertEquals("2", bsh.execute()); assertEquals("2", vars.get("VAR")); // Check some initial variables bsh = BSHFParams("return threadName", null, null); assertEquals(Thread.currentThread().getName(), bsh.execute()); bsh = BSHFParams("return log.getClass().getName()", null, null); assertEquals(log.getClass().getName(), bsh.execute()); // Check source works bsh = BSHFParams("source (\"testfiles/BeanShellTest.bsh\")", null, null); assertEquals("9876", bsh.execute()); // Check persistence bsh = BSHFParams("${SCR1}", null, null); vars.put("SCR1", "var1=11"); assertEquals("11", bsh.execute()); vars.put("SCR1", "var2=22"); assertEquals("22", bsh.execute()); vars.put("SCR1", "x=var1"); assertEquals("11", bsh.execute()); vars.put("SCR1", "++x"); assertEquals("12", bsh.execute()); vars.put("VAR1", "test"); vars.put("SCR1", "vars.get(\"VAR1\")"); assertEquals("test", bsh.execute()); // Check init file functioning JMeterUtils.getJMeterProperties().setProperty(BeanShell.INIT_FILE, fn); bsh = BSHFParams("${SCR2}", null, null); vars.put("SCR2", "getprop(\"" + BeanShell.INIT_FILE + "\")"); assertEquals(fn, bsh.execute());// Check that bsh has read the file vars.put("SCR2", "getprop(\"avavaav\",\"default\")"); assertEquals("default", bsh.execute()); vars.put("SCR2", "++i"); assertEquals("1", bsh.execute()); vars.put("SCR2", "++i"); assertEquals("2", bsh.execute()); } public void splitTest1() throws Exception { String src = ""; try { splitParams("a,b,c", null, null); fail("Expected InvalidVariableException (wrong number of parameters)"); } catch (InvalidVariableException e) { // OK } src = "a,b,c"; SplitFunction split; split = splitParams(src, "VAR1", null); assertEquals(src, split.execute()); assertEquals(src, vars.get("VAR1")); assertEquals("3", vars.get("VAR1_n")); assertEquals("a", vars.get("VAR1_1")); assertEquals("b", vars.get("VAR1_2")); assertEquals("c", vars.get("VAR1_3")); assertNull(vars.get("VAR1_4")); split = splitParams(src, "VAR2", ","); assertEquals(src, split.execute()); assertEquals(src, vars.get("VAR2")); assertEquals("3", vars.get("VAR2_n")); assertEquals("a", vars.get("VAR2_1")); assertEquals("b", vars.get("VAR2_2")); assertEquals("c", vars.get("VAR2_3")); assertNull(vars.get("VAR2_4")); src = "a|b|c"; split = splitParams(src, "VAR3", "|"); assertEquals(src, split.execute()); assertEquals(src, vars.get("VAR3")); assertEquals("3", vars.get("VAR3_n")); assertEquals("a", vars.get("VAR3_1")); assertEquals("b", vars.get("VAR3_2")); assertEquals("c", vars.get("VAR3_3")); assertNull(vars.get("VAR3_4")); src = "a|b||"; split = splitParams(src, "VAR4", "|"); assertEquals(src, split.execute()); assertEquals(src, vars.get("VAR4")); assertEquals("4", vars.get("VAR4_n")); assertEquals("a", vars.get("VAR4_1")); assertEquals("b", vars.get("VAR4_2")); assertEquals("?", vars.get("VAR4_3")); assertNull(vars.get("VAR4_5")); src = "a,,c"; vars.put("VAR", src); split = splitParams("${VAR}", "VAR", null); assertEquals(src, split.execute()); assertEquals("3", vars.get("VAR_n")); assertEquals("a", vars.get("VAR_1")); assertEquals("?", vars.get("VAR_2")); assertEquals("c", vars.get("VAR_3")); assertNull(vars.get("VAR_4")); src = "a,b"; vars.put("VAR", src); split = splitParams("${VAR}", "VAR", null); assertEquals(src, split.execute()); assertEquals("2", vars.get("VAR_n")); assertEquals("a", vars.get("VAR_1")); assertEquals("b", vars.get("VAR_2")); assertNull(vars.get("VAR_3")); src = "a,,c,"; vars.put("VAR", src); split = splitParams("${VAR}", "VAR5", null); assertEquals(src, split.execute()); assertEquals("4", vars.get("VAR5_n")); assertEquals("a", vars.get("VAR5_1")); assertEquals("?", vars.get("VAR5_2")); assertEquals("c", vars.get("VAR5_3")); assertEquals("?", vars.get("VAR5_4")); assertNull(vars.get("VAR5_5")); } public void SFFTest1() throws Exception { StringFromFile sff1 = SFFParams("testfiles/SFFTest#'.'txt", "", "1", "3"); assertEquals("uno", sff1.execute()); assertEquals("dos", sff1.execute()); assertEquals("tres", sff1.execute()); assertEquals("cuatro", sff1.execute()); assertEquals("cinco", sff1.execute()); assertEquals("one", sff1.execute()); assertEquals("two", sff1.execute()); sff1.execute(); sff1.execute(); assertEquals("five", sff1.execute()); assertEquals("eins", sff1.execute()); sff1.execute(); sff1.execute(); sff1.execute(); assertEquals("fuenf", sff1.execute()); try { sff1.execute(); fail("Should have thrown JMeterStopThreadException"); } catch (JMeterStopThreadException e) { // expected } } public void SFFTest2() throws Exception { StringFromFile sff = SFFParams("testfiles/SFFTest1.txt", "", null, null); assertEquals("uno", sff.execute()); assertEquals("dos", sff.execute()); assertEquals("tres", sff.execute()); assertEquals("cuatro", sff.execute()); assertEquals("cinco", sff.execute()); assertEquals("uno", sff.execute()); // Restarts assertEquals("dos", sff.execute()); assertEquals("tres", sff.execute()); assertEquals("cuatro", sff.execute()); assertEquals("cinco", sff.execute()); } public void SFFTest3() throws Exception { StringFromFile sff = SFFParams("testfiles/SFFTest1.txt", "", "", ""); assertEquals("uno", sff.execute()); assertEquals("dos", sff.execute()); assertEquals("tres", sff.execute()); assertEquals("cuatro", sff.execute()); assertEquals("cinco", sff.execute()); assertEquals("uno", sff.execute()); // Restarts assertEquals("dos", sff.execute()); assertEquals("tres", sff.execute()); assertEquals("cuatro", sff.execute()); assertEquals("cinco", sff.execute()); } public void SFFTest4() throws Exception { StringFromFile sff = SFFParams("xxtestfiles/SFFTest1.txt", "", "", ""); assertEquals(StringFromFile.ERR_IND, sff.execute()); assertEquals(StringFromFile.ERR_IND, sff.execute()); } // Test that only loops twice public void SFFTest5() throws Exception { StringFromFile sff = SFFParams("testfiles/SFFTest1.txt", "", "", "2"); assertEquals("uno", sff.execute()); assertEquals("dos", sff.execute()); assertEquals("tres", sff.execute()); assertEquals("cuatro", sff.execute()); assertEquals("cinco", sff.execute()); assertEquals("uno", sff.execute()); assertEquals("dos", sff.execute()); assertEquals("tres", sff.execute()); assertEquals("cuatro", sff.execute()); assertEquals("cinco", sff.execute()); try { sff.execute(); fail("Should have thrown JMeterStopThreadException"); } catch (JMeterStopThreadException e) { // expected } } // Function objects to be tested private static CSVRead cr1, cr2, cr3, cr4, cr5, cr6; // Helper class used to implement co-routine between two threads private static class Baton { void pass() { done(); try { // System.out.println(">wait:"+Thread.currentThread().getName()); wait(1000); } catch (InterruptedException e) { System.out.println(e); } // System.out.println("done:"+Thread.currentThread().getName()); notifyAll(); } } private static final Baton baton = new Baton(); public void CSVThread1() throws Exception { Thread.currentThread().setName("One"); synchronized (baton) { assertEquals("b1", cr1.execute(null, null)); assertEquals("", cr4.execute(null, null)); assertEquals("b2", cr1.execute(null, null)); baton.pass(); assertEquals("", cr4.execute(null, null)); assertEquals("b4", cr1.execute(null, null)); assertEquals("", cr4.execute(null, null)); baton.pass(); assertEquals("b3", cr1.execute(null, null)); assertEquals("", cr4.execute(null, null)); baton.done(); } } public void CSVThread2() throws Exception { Thread.currentThread().setName("Two"); Thread.sleep(500);// Allow other thread to start synchronized (baton) { assertEquals("b3", cr1.execute(null, null)); assertEquals("", cr4.execute(null, null)); baton.pass(); assertEquals("b1", cr1.execute(null, null)); assertEquals("", cr4.execute(null, null)); assertEquals("b2", cr1.execute(null, null)); baton.pass(); assertEquals("", cr4.execute(null, null)); assertEquals("b4", cr1.execute(null, null)); baton.done(); } } public void CSVRun() throws Exception { assertEquals("b1", cr1.execute(null, null)); assertEquals("c1", cr2.execute(null, null)); assertEquals("d1", cr3.execute(null, null)); assertEquals("", cr4.execute(null, null)); assertEquals("b2", cr1.execute(null, null)); assertEquals("c2", cr2.execute(null, null)); assertEquals("d2", cr3.execute(null, null)); assertEquals("", cr4.execute(null, null)); assertEquals("b3", cr1.execute(null, null)); assertEquals("c3", cr2.execute(null, null)); assertEquals("d3", cr3.execute(null, null)); assertEquals("", cr4.execute(null, null)); assertEquals("b4", cr1.execute(null, null)); assertEquals("c4", cr2.execute(null, null)); assertEquals("d4", cr3.execute(null, null)); assertEquals("", cr4.execute(null, null)); assertEquals("b1", cr1.execute(null, null)); assertEquals("c1", cr2.execute(null, null)); assertEquals("d1", cr3.execute(null, null)); assertEquals("a1", cr5.execute(null, null)); assertEquals("", cr6.execute(null, null)); assertEquals("a2", cr5.execute(null, null)); } public void CSVParams() throws Exception { try { setCSVReadParams(null, null); fail("Should have failed"); } catch (InvalidVariableException e) { } try { setCSVReadParams(null, ""); fail("Should have failed"); } catch (InvalidVariableException e) { } try { setCSVReadParams("", null); fail("Should have failed"); } catch (InvalidVariableException e) { } } public void CSVSetup() throws Exception { cr1 = setCSVReadParams("testfiles/test.csv", "1"); cr2 = setCSVReadParams("testfiles/test.csv", "2"); cr3 = setCSVReadParams("testfiles/test.csv", "3"); cr4 = setCSVReadParams("testfiles/test.csv", "next"); cr5 = setCSVReadParams("", "0"); cr6 = setCSVReadParams("", "next"); } public void CSValias() throws Exception { cr1 = setCSVReadParams("testfiles/test.csv", "*A"); cr2 = setCSVReadParams("*A", "1"); cr3 = setCSVReadParams("*A", "next"); cr4 = setCSVReadParams("testfiles/test.csv", "*B"); cr5 = setCSVReadParams("*B", "2"); cr6 = setCSVReadParams("*B", "next"); String s; s = cr1.execute(null, null); // open as *A assertEquals("", s); s = cr2.execute(null, null); // col 1, line 1, *A assertEquals("b1", s); s = cr4.execute(null, null);// open as *B assertEquals("", s); s = cr5.execute(null, null);// col2 line 1 assertEquals("c1", s); s = cr3.execute(null, null);// *A next assertEquals("", s); s = cr2.execute(null, null);// col 1, line 2, *A assertEquals("b2", s); s = cr5.execute(null, null);// col2, line 1, *B assertEquals("c1", s); s = cr6.execute(null, null);// *B next assertEquals("", s); s = cr5.execute(null, null);// col2, line 2, *B assertEquals("c2", s); } public void CSVNoFile() throws Exception { String s; cr1 = setCSVReadParams("xtestfiles/test.csv", "1"); log.info("Expecting file not found"); s = cr1.execute(null, null); assertEquals("", s); cr2 = setCSVReadParams("xtestfiles/test.csv", "next"); log.info("Expecting no entry for file"); s = cr2.execute(null, null); assertEquals("", s); cr3 = setCSVReadParams("xtestfiles/test.csv", "*ABC"); log.info("Expecting file not found"); s = cr3.execute(null, null); assertEquals("", s); cr4 = setCSVReadParams("*ABC", "1"); log.info("Expecting cannot open file"); s = cr4.execute(null, null); assertEquals("", s); } // Check blank lines are treated as EOF public void CSVBlankLine() throws Exception { CSVRead csv1 = setCSVReadParams("testfiles/testblank.csv", "1"); CSVRead csv2 = setCSVReadParams("testfiles/testblank.csv", "next"); String s; for (int i = 1; i <= 2; i++) { s = csv1.execute(null, null); assertEquals("b1", s); s = csv2.execute(null, null); assertEquals("", s); s = csv1.execute(null, null); assertEquals("b2", s); s = csv2.execute(null, null); assertEquals("", s); } } // XPathFileContainer tests public void XPathtestNull() throws Exception { try { new XPathFileContainer("nosuch.xml", "/"); fail("Should not find the file"); } catch (FileNotFoundException e) { } } public void XPathtestrowNum() throws Exception { XPathFileContainer f = new XPathFileContainer("../build.xml", "/project/target/@name"); assertNotNull(f); // assertEquals("Expected 4 lines",4,f.size()); int myRow = f.nextRow(); assertEquals(0, myRow); assertEquals(1, f.getNextRow()); myRow = f.nextRow(); assertEquals(1, myRow); assertEquals(2, f.getNextRow()); myRow = f.nextRow(); assertEquals(2, myRow); assertEquals(3, f.getNextRow()); // myRow = f.nextRow(); // assertEquals(3,myRow); // assertEquals(0,f.getNextRow()); // myRow = f.nextRow(); // assertEquals(0,myRow); // assertEquals(1,f.getNextRow()); } public void XPathtestColumns() throws Exception { XPathFileContainer f = new XPathFileContainer("../build.xml", "/project/target/@name"); assertNotNull(f); assertTrue("Not empty", f.size() > 0); int last = 0; for (int i = 0; i < f.size(); i++) { last = f.nextRow(); log.debug("found [" + i + "]" + f.getXPathString(last)); } assertEquals(last + 1, f.size()); } public void XPathtestDefault() throws Exception { XPathFileContainer f = new XPathFileContainer("../build.xml", "/project/@default"); assertNotNull(f); assertTrue("Not empty", f.size() > 0); assertEquals("install", f.getXPathString(0)); } public void XPathEmpty() throws Exception{ XPath xp = setupXPath("",""); String val=xp.execute(); assertEquals("",val); val=xp.execute(); assertEquals("",val); val=xp.execute(); assertEquals("",val); } public void XPathNoFile() throws Exception{ XPath xp = setupXPath("no-such-file",""); String val=xp.execute(); assertEquals("",val); // TODO - should check that error has been logged... } public void XPathFile1() throws Exception{ XPath xp = setupXPath("testfiles/XPathTest.xml","//user/@username"); assertEquals("u1",xp.execute()); assertEquals("u2",xp.execute()); assertEquals("u3",xp.execute()); assertEquals("u4",xp.execute()); assertEquals("u5",xp.execute()); assertEquals("u1",xp.execute()); } public void XPathFile2() throws Exception{ XPath xp1 = setupXPath("testfiles/XPathTest.xml","//user/@username"); XPath xp1a = setupXPath("testfiles/XPathTest.xml","//user/@username"); XPath xp2 = setupXPath("testfiles/XPathTest.xml","//user/@password"); XPath xp2a = setupXPath("testfiles/XPathTest.xml","//user/@password"); assertEquals("u1",xp1.execute()); assertEquals("p1",xp2.execute()); assertEquals("p2",xp2.execute()); assertEquals("u2",xp1a.execute()); assertEquals("u3",xp1.execute()); assertEquals("u4",xp1.execute()); assertEquals("p3",xp2a.execute()); } private static XPath sxp1,sxp2; // Use same XPath for both threads public void XPathSetup1() throws Exception{ sxp1 = setupXPath("testfiles/XPathTest.xml","//user/@username"); sxp2=sxp1; } // Use different XPath for both threads public void XPathSetup2() throws Exception{ sxp1 = setupXPath("testfiles/XPathTest.xml","//user/@username"); sxp2 = setupXPath("testfiles/XPathTest.xml","//user/@username"); } public void XPathThread1() throws Exception { Thread.currentThread().setName("XPathOne"); synchronized (baton) { assertEquals("u1",sxp1.execute()); assertEquals("u2",sxp1.execute()); baton.pass(); assertEquals("u5",sxp1.execute()); baton.pass(); assertEquals("u2",sxp1.execute()); baton.done(); } } public void XPathThread2() throws Exception { Thread.currentThread().setName("XPathTwo"); Thread.sleep(500); synchronized (baton) { assertEquals("u3",sxp2.execute()); assertEquals("u4",sxp2.execute()); baton.pass(); assertEquals("u1",sxp2.execute()); baton.pass(); assertEquals("u3",sxp2.execute()); baton.done(); } } private XPath setupXPath(String file, String expr) throws Exception{ Collection parms = new LinkedList(); parms.add(new CompoundVariable(file)); parms.add(new CompoundVariable(expr)); XPath xp = new XPath(); xp.setParameters(parms); return xp; } public void randomTest1() throws Exception { Random r = new Random(); Collection parms = makeParams("0","10000000000","VAR"); r.setParameters(parms); //String s = r.execute(null,null); } public void variableTest1() throws Exception { Variable r = new Variable(); vars.put("A_1","a1"); vars.put("A_2","a2"); vars.put("one","1"); vars.put("two","2"); vars.put("V","A"); Collection parms; String s; parms = makeParams("V",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("A",s); parms = makeParams("X",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("X",s); parms = makeParams("A${X}",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("A${X}",s); parms = makeParams("A_1",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("a1",s); parms = makeParams("A_2",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("a2",s); parms = makeParams("A_${two}",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("a2",s); parms = makeParams("${V}_${one}",null,null); r.setParameters(parms); s = r.execute(null,null); assertEquals("a1",s); } public void evalTest1() throws Exception { EvalFunction eval = new EvalFunction(); vars.put("query","select ${column} from ${table}"); vars.put("column","name"); vars.put("table","customers"); Collection parms; String s; parms = makeParams("${query}",null,null); eval.setParameters(parms); s = eval.execute(null,null); assertEquals("select name from customers",s); } public void evalTest2() throws Exception { EvalVarFunction evalVar = new EvalVarFunction(); vars.put("query","select ${column} from ${table}"); vars.put("column","name"); vars.put("table","customers"); Collection parms; String s; parms = makeParams("query",null,null); evalVar.setParameters(parms); s = evalVar.execute(null,null); assertEquals("select name from customers",s); } public void sumTest() throws Exception { String maxIntVal = Integer.toString(Integer.MAX_VALUE); String minIntVal = Integer.toString(Integer.MIN_VALUE); { // prevent accidental use of is below IntSum is = new IntSum(); checkInvalidParameterCounts(is,2); checkSum(is,"3", new String[]{"1","2"}); checkSumNoVar(is,"3", new String[]{"1","2"}); checkSum(is,"1", new String[]{"-1","1","1","1","-2","1"}); checkSumNoVar(is,"1", new String[]{"-1","1","1","1","-2","1"}); checkSumNoVar(is,"-1", new String[]{"-1","1","1","1","-2","-1"}); checkSum(is,maxIntVal, new String[]{maxIntVal,"0"}); checkSum(is,minIntVal, new String[]{maxIntVal,"1"}); // wrap-round check } LongSum ls = new LongSum(); checkInvalidParameterCounts(ls,2); checkSum(ls,"3", new String[]{"1","2"}); checkSum(ls,"1", new String[]{"-1","1","1","1","-1","0"}); checkSumNoVar(ls,"3", new String[]{"1","2"}); checkSumNoVar(ls,"1", new String[]{"-1","1","1","1","-1","0"}); checkSumNoVar(ls,"0", new String[]{"-1","1","1","1","-1","-1"}); String maxIntVal_1 = Long.toString(1+(long)Integer.MAX_VALUE); checkSum(ls,maxIntVal, new String[]{maxIntVal,"0"}); checkSum(ls,maxIntVal_1, new String[]{maxIntVal,"1"}); // no wrap-round check String maxLongVal = Long.toString(Long.MAX_VALUE); String minLongVal = Long.toString(Long.MIN_VALUE); checkSum(ls,maxLongVal, new String[]{maxLongVal,"0"}); checkSum(ls,minLongVal, new String[]{maxLongVal,"1"}); // wrap-round check } // Perform a sum and check the results private void checkSum(AbstractFunction func, String value, String [] addends) throws Exception { Collection parms = new LinkedList(); for (int i=0; i< addends.length; i++){ parms.add(new CompoundVariable(addends[i])); } parms.add(new CompoundVariable("Result")); func.setParameters(parms); assertEquals(value,func.execute(null,null)); assertEquals(value,vars.getObject("Result")); } // Perform a sum and check the results private void checkSumNoVar(AbstractFunction func, String value, String [] addends) throws Exception { Collection parms = new LinkedList(); for (int i=0; i< addends.length; i++){ parms.add(new CompoundVariable(addends[i])); } func.setParameters(parms); assertEquals(value,func.execute(null,null)); } } apache-jmeter-2.8/test/src/org/apache/jmeter/functions/TestTimeFunction.java0000644000175000017500000001571312032647145026616 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.Locale; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestTimeFunction extends JMeterTestCase { private Function variable; private SampleResult result; private Collection params; private JMeterVariables vars; private JMeterContext jmctx = null; private String value; public TestTimeFunction(String name) { super(name); } @Override public void setUp() { jmctx = JMeterContextService.getContext(); vars = new JMeterVariables(); jmctx.setVariables(vars); jmctx.setPreviousResult(result); params = new LinkedList(); result = new SampleResult(); variable = new TimeFunction(); } public void testDefault() throws Exception { variable.setParameters(params); long before = System.currentTimeMillis(); value = variable.execute(result, null); long now= Long.parseLong(value); long after = System.currentTimeMillis(); assertTrue(now >= before && now <= after); } public void testDefault1() throws Exception { params.add(new CompoundVariable()); variable.setParameters(params); long before = System.currentTimeMillis(); value = variable.execute(result, null); long now= Long.parseLong(value); long after = System.currentTimeMillis(); assertTrue(now >= before && now <= after); } public void testDefault2() throws Exception { params.add(new CompoundVariable()); params.add(new CompoundVariable()); variable.setParameters(params); long before = System.currentTimeMillis(); value = variable.execute(result, null); long now= Long.parseLong(value); long after = System.currentTimeMillis(); assertTrue(now >= before && now <= after); } public void testDefaultNone() throws Exception { long before = System.currentTimeMillis(); value = variable.execute(result, null); long now= Long.parseLong(value); long after = System.currentTimeMillis(); assertTrue(now >= before && now <= after); } public void testTooMany() throws Exception { params.add(new CompoundVariable("YMD")); params.add(new CompoundVariable("NAME")); params.add(new CompoundVariable("YMD")); try { variable.setParameters(params); fail("Should have raised InvalidVariableException"); } catch (InvalidVariableException ignored){ } } public void testYMD() throws Exception { params.add(new CompoundVariable("YMD")); params.add(new CompoundVariable("NAME")); variable.setParameters(params); value = variable.execute(result, null); assertEquals(8,value.length()); assertEquals(value,vars.get("NAME")); } public void testYMDnoV() throws Exception { params.add(new CompoundVariable("YMD")); variable.setParameters(params); value = variable.execute(result, null); assertEquals(8,value.length()); assertNull(vars.get("NAME")); } public void testHMS() throws Exception { params.add(new CompoundVariable("HMS")); variable.setParameters(params); value = variable.execute(result, null); assertEquals(6,value.length()); } public void testYMDHMS() throws Exception { params.add(new CompoundVariable("YMDHMS")); variable.setParameters(params); value = variable.execute(result, null); assertEquals(15,value.length()); } public void testUSER1() throws Exception { params.add(new CompoundVariable("USER1")); variable.setParameters(params); value = variable.execute(result, null); assertEquals(0,value.length()); } public void testUSER2() throws Exception { params.add(new CompoundVariable("USER2")); variable.setParameters(params); value = variable.execute(result, null); assertEquals(0,value.length()); } public void testFixed() throws Exception { params.add(new CompoundVariable("'Fixed text'")); variable.setParameters(params); value = variable.execute(result, null); assertEquals("Fixed text",value); } public void testMixed() throws Exception { params.add(new CompoundVariable("G")); variable.setParameters(params); Locale locale = Locale.getDefault(); Locale.setDefault(Locale.ENGLISH); value = variable.execute(result, null); Locale.setDefault(locale); assertEquals("AD",value); } public void testDivisor() throws Exception { params.add(new CompoundVariable("/1000")); variable.setParameters(params); long before = System.currentTimeMillis()/1000; value = variable.execute(result, null); long now= Long.parseLong(value); long after = System.currentTimeMillis()/1000; assertTrue(now >= before && now <= after); } public void testDivisorNoMatch() throws Exception { params.add(new CompoundVariable("/1000 ")); // trailing space variable.setParameters(params); value = variable.execute(result, null); assertEquals("/1000 ", value); } } apache-jmeter-2.8/test/src/org/apache/jmeter/functions/TestRegexFunction.java0000644000175000017500000004416312032647145026773 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestRegexFunction extends JMeterTestCase { private static final String INPUT_VARIABLE_NAME = "INVAR"; private RegexFunction variable; private SampleResult result; private Collection params; private JMeterVariables vars; private JMeterContext jmctx; public TestRegexFunction(String name) { super(name); } @Override public void setUp() { variable = new RegexFunction(); result = new SampleResult(); jmctx = JMeterContextService.getContext(); String data = "" + "" + "LIS_OK" + "" + "0156" + ""; result.setResponseData(data, null); vars = new JMeterVariables(); String data2 = "The quick brown fox jumped over the lazy dog 123 times"; vars.put(INPUT_VARIABLE_NAME, data2); jmctx.setVariables(vars); jmctx.setPreviousResult(result); } public void testVariableExtraction() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$2$")); params.add(new CompoundVariable("2")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("5", match); } // Test with output variable name public void testVariableExtraction1a() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$2$")); // template params.add(new CompoundVariable("2")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("3", vars.getObject("OUTVAR_matchNr")); assertEquals("5", match); assertEquals("5", vars.getObject("OUTVAR")); assertEquals("5", vars.getObject("OUTVAR_g0")); assertEquals("pinposition2", vars.getObject("OUTVAR_g1")); assertEquals("5", vars.getObject("OUTVAR_g2")); } // Test with empty output variable name public void testVariableExtraction1b() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$2$")); // template params.add(new CompoundVariable("2")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("5", match); assertNull(vars.getObject("OUTVAR")); } public void testVariableExtractionFromVariable() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("$2$")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("times", match); assertEquals("times", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable2() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("$1$$2$")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("123times", match); assertEquals("123times", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable3() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("pre$2$post")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("pretimespost", match); assertEquals("pretimespost", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable4() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("pre$2$")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("pretimes", match); assertEquals("pretimes", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable5() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("$2$post")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("timespost", match); assertEquals("timespost", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable6() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("$2$$2$")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("timestimes", match); assertEquals("timestimes", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable7() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("pre$1$mid$2$post")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("pre123midtimespost", match); assertEquals("pre123midtimespost", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable8() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("pre$1$mid$2$")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("pre123midtimes", match); assertEquals("pre123midtimes", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtractionFromVariable9() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)\\s+(\\w+)")); params.add(new CompoundVariable("$1$mid$2$post")); // template params.add(new CompoundVariable("1")); // match number params.add(new CompoundVariable("-")); // ALL separator params.add(new CompoundVariable("default")); params.add(new CompoundVariable("OUTVAR")); params.add(new CompoundVariable(INPUT_VARIABLE_NAME)); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1", vars.getObject("OUTVAR_matchNr")); assertEquals("123midtimespost", match); assertEquals("123midtimespost", vars.getObject("OUTVAR")); assertEquals("123 times", vars.getObject("OUTVAR_g0")); assertEquals("123", vars.getObject("OUTVAR_g1")); assertEquals("times", vars.getObject("OUTVAR_g2")); } public void testVariableExtraction2() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$1$")); params.add(new CompoundVariable("3")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("pinposition3", match); } public void testVariableExtraction5() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$1$")); params.add(new CompoundVariable("ALL")); params.add(new CompoundVariable("_")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("pinposition1_pinposition2_pinposition3", match); } public void testVariableExtraction6() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$2$")); params.add(new CompoundVariable("4")); params.add(new CompoundVariable("")); params.add(new CompoundVariable("default")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("default", match); } public void testComma() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$1$")); params.add(new CompoundVariable("3")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("pinposition3", match); } public void testVariableExtraction3() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("_$1$")); params.add(new CompoundVariable("2")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("_pinposition2", match); } public void testVariableExtraction4() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$2$, ")); params.add(new CompoundVariable(".333")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("1, ", match); } public void testDefaultValue() throws Exception { params = new LinkedList(); params.add(new CompoundVariable("(\\d+)")); params.add(new CompoundVariable("$2$, ")); params.add(new CompoundVariable(".333")); params.add(new CompoundVariable("")); params.add(new CompoundVariable("No Value Found")); variable.setParameters(params); String match = variable.execute(result, null); assertEquals("No Value Found", match); } } apache-jmeter-2.8/test/src/org/apache/jmeter/control/0000755000175000017500000000000012165514773022157 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/control/TestWhileController.java0000644000175000017500000003712112032647143026771 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterThread; import org.apache.jmeter.threads.JMeterVariables; public class TestWhileController extends JMeterTestCase { // static { // LoggingManager.setPriority("DEBUG","jmeter"); // LoggingManager.setTarget(new java.io.PrintWriter(System.out)); // } public TestWhileController(String name) { super(name); } private JMeterContext jmctx; private JMeterVariables jmvars; @Override public void setUp() { jmctx = JMeterContextService.getContext(); jmctx.setVariables(new JMeterVariables()); jmvars = jmctx.getVariables(); } private void setLastSampleStatus(boolean status){ jmvars.put(JMeterThread.LAST_SAMPLE_OK,Boolean.toString(status)); } private void setRunning(TestElement el){ PropertyIterator pi = el.propertyIterator(); while(pi.hasNext()){ pi.next().setRunningVersion(true); } } // Get next sample and its name private String nextName(GenericController c) { Sampler s = c.next(); if (s == null) { return null; } return s.getName(); } // While (blank), previous sample OK - should loop until false public void testBlankPrevOK() throws Exception { // log.info("testBlankPrevOK"); runtestPrevOK(""); } // While (LAST), previous sample OK - should loop until false public void testLastPrevOK() throws Exception { // log.info("testLASTPrevOK"); runtestPrevOK("LAST"); } private static final String OTHER = "X"; // Dummy for testing functions // While (LAST), previous sample OK - should loop until false public void testOtherPrevOK() throws Exception { // log.info("testOtherPrevOK"); runtestPrevOK(OTHER); } private void runtestPrevOK(String type) throws Exception { GenericController controller = new GenericController(); WhileController while_cont = new WhileController(); setLastSampleStatus(true); while_cont.setCondition(type); while_cont.addTestElement(new TestSampler("one")); while_cont.addTestElement(new TestSampler("two")); while_cont.addTestElement(new TestSampler("three")); controller.addTestElement(while_cont); controller.addTestElement(new TestSampler("four")); controller.initialize(); assertEquals("one", nextName(controller)); assertEquals("two", nextName(controller)); assertEquals("three", nextName(controller)); assertEquals("one", nextName(controller)); assertEquals("two", nextName(controller)); assertEquals("three", nextName(controller)); assertEquals("one", nextName(controller)); setLastSampleStatus(false); if (type.equals(OTHER)){ while_cont.setCondition("false"); } assertEquals("two", nextName(controller)); assertEquals("three", nextName(controller)); setLastSampleStatus(true); if (type.equals(OTHER)) { while_cont.setCondition(OTHER); } assertEquals("one", nextName(controller)); assertEquals("two", nextName(controller)); assertEquals("three", nextName(controller)); setLastSampleStatus(false); if (type.equals(OTHER)) { while_cont.setCondition("false"); } assertEquals("four", nextName(controller)); assertNull(nextName(controller)); setLastSampleStatus(true); if (type.equals(OTHER)) { while_cont.setCondition(OTHER); } assertEquals("one", nextName(controller)); } // While (blank), previous sample failed - should run once public void testBlankPrevFailed() throws Exception { // log.info("testBlankPrevFailed"); GenericController controller = new GenericController(); controller.setRunningVersion(true); WhileController while_cont = new WhileController(); setLastSampleStatus(false); while_cont.setCondition(""); while_cont.addTestElement(new TestSampler("one")); while_cont.addTestElement(new TestSampler("two")); controller.addTestElement(while_cont); controller.addTestElement(new TestSampler("three")); controller.initialize(); assertEquals("one", nextName(controller)); assertEquals("two", nextName(controller)); assertEquals("three", nextName(controller)); assertNull(nextName(controller)); // Run entire test again assertEquals("one", nextName(controller)); assertEquals("two", nextName(controller)); assertEquals("three", nextName(controller)); assertNull(nextName(controller)); } /* * Generic Controller * - before * - While Controller ${VAR} * - - one * - - two * - - Simple Controller * - - - three * - - - four * - after */ public void testVariable1() throws Exception { GenericController controller = new GenericController(); WhileController while_cont = new WhileController(); setLastSampleStatus(false); while_cont.setCondition("${VAR}"); jmvars.put("VAR", ""); ValueReplacer vr = new ValueReplacer(); vr.replaceValues(while_cont); setRunning(while_cont); controller.addTestElement(new TestSampler("before")); controller.addTestElement(while_cont); while_cont.addTestElement(new TestSampler("one")); while_cont.addTestElement(new TestSampler("two")); GenericController simple = new GenericController(); while_cont.addTestElement(simple); simple.addTestElement(new TestSampler("three")); simple.addTestElement(new TestSampler("four")); controller.addTestElement(new TestSampler("after")); controller.initialize(); for (int i = 1; i <= 3; i++) { assertEquals("Loop: "+i,"before", nextName(controller)); assertEquals("Loop: "+i,"one", nextName(controller)); assertEquals("Loop: "+i,"two", nextName(controller)); assertEquals("Loop: "+i,"three", nextName(controller)); assertEquals("Loop: "+i,"four", nextName(controller)); assertEquals("Loop: "+i,"after", nextName(controller)); assertNull("Loop: "+i,nextName(controller)); } jmvars.put("VAR", "LAST"); // Should not enter the loop for (int i = 1; i <= 3; i++) { assertEquals("Loop: "+i,"before", nextName(controller)); assertEquals("Loop: "+i,"after", nextName(controller)); assertNull("Loop: "+i,nextName(controller)); } jmvars.put("VAR", ""); for (int i = 1; i <= 3; i++) { assertEquals("Loop: "+i,"before", nextName(controller)); if (i==1) { assertEquals("Loop: "+i,"one", nextName(controller)); assertEquals("Loop: "+i,"two", nextName(controller)); assertEquals("Loop: "+i,"three", nextName(controller)); jmvars.put("VAR", "LAST"); // Should not enter the loop next time assertEquals("Loop: "+i,"four", nextName(controller)); } assertEquals("Loop: "+i,"after", nextName(controller)); assertNull("Loop: "+i,nextName(controller)); } } // Test with SimpleController as first item public void testVariable2() throws Exception { GenericController controller = new GenericController(); WhileController while_cont = new WhileController(); setLastSampleStatus(false); while_cont.setCondition("${VAR}"); jmvars.put("VAR", ""); ValueReplacer vr = new ValueReplacer(); vr.replaceValues(while_cont); setRunning(while_cont); controller.addTestElement(new TestSampler("before")); controller.addTestElement(while_cont); GenericController simple = new GenericController(); while_cont.addTestElement(simple); simple.addTestElement(new TestSampler("one")); simple.addTestElement(new TestSampler("two")); while_cont.addTestElement(new TestSampler("three")); while_cont.addTestElement(new TestSampler("four")); controller.addTestElement(new TestSampler("after")); controller.initialize(); for (int i = 1; i <= 3; i++) { assertEquals("Loop: "+i,"before", nextName(controller)); assertEquals("Loop: "+i,"one", nextName(controller)); assertEquals("Loop: "+i,"two", nextName(controller)); assertEquals("Loop: "+i,"three", nextName(controller)); assertEquals("Loop: "+i,"four", nextName(controller)); assertEquals("Loop: "+i,"after", nextName(controller)); assertNull("Loop: "+i,nextName(controller)); } jmvars.put("VAR", "LAST"); // Should not enter the loop for (int i = 1; i <= 3; i++) { assertEquals("Loop: "+i,"before", nextName(controller)); assertEquals("Loop: "+i,"after", nextName(controller)); assertNull("Loop: "+i,nextName(controller)); } jmvars.put("VAR", ""); for (int i = 1; i <= 3; i++) { assertEquals("Loop: "+i,"before", nextName(controller)); if (i==1){ assertEquals("Loop: "+i,"one", nextName(controller)); assertEquals("Loop: "+i,"two", nextName(controller)); jmvars.put("VAR", "LAST"); // Should not enter the loop next time // But should continue to the end of the loop assertEquals("Loop: "+i,"three", nextName(controller)); assertEquals("Loop: "+i,"four", nextName(controller)); } assertEquals("Loop: "+i,"after", nextName(controller)); assertNull("Loop: "+i,nextName(controller)); } } // While LAST, previous sample failed - should not run public void testLASTPrevFailed() throws Exception { // log.info("testLastPrevFailed"); runTestPrevFailed("LAST"); } // While False, previous sample failed - should not run public void testfalsePrevFailed() throws Exception { // log.info("testFalsePrevFailed"); runTestPrevFailed("False"); } private void runTestPrevFailed(String s) throws Exception { GenericController controller = new GenericController(); WhileController while_cont = new WhileController(); setLastSampleStatus(false); while_cont.setCondition(s); while_cont.addTestElement(new TestSampler("one")); while_cont.addTestElement(new TestSampler("two")); controller.addTestElement(while_cont); controller.addTestElement(new TestSampler("three")); controller.initialize(); assertEquals("three", nextName(controller)); assertNull(nextName(controller)); assertEquals("three", nextName(controller)); assertNull(nextName(controller)); } public void testLastFailedBlank() throws Exception{ runTestLastFailed(""); } public void testLastFailedLast() throws Exception{ runTestLastFailed("LAST"); } // Should behave the same for blank and LAST because success on input private void runTestLastFailed(String s) throws Exception { GenericController controller = new GenericController(); controller.addTestElement(new TestSampler("1")); WhileController while_cont = new WhileController(); controller.addTestElement(while_cont); while_cont.setCondition(s); GenericController sub = new GenericController(); while_cont.addTestElement(sub); sub.addTestElement(new TestSampler("2")); sub.addTestElement(new TestSampler("3")); controller.addTestElement(new TestSampler("4")); setLastSampleStatus(true); controller.initialize(); assertEquals("1", nextName(controller)); assertEquals("2", nextName(controller)); setLastSampleStatus(false); assertEquals("3", nextName(controller)); assertEquals("4", nextName(controller)); assertNull(nextName(controller)); } // Tests for Stack Overflow (bug 33954) public void testAlwaysFailOK() throws Exception { runTestAlwaysFail(true); // Should be OK } public void testAlwaysFailBAD() throws Exception { runTestAlwaysFail(false); } private void runTestAlwaysFail(boolean other) { LoopController controller = new LoopController(); controller.setContinueForever(true); controller.setLoops(-1); WhileController while_cont = new WhileController(); setLastSampleStatus(false); while_cont.setCondition("false"); while_cont.addTestElement(new TestSampler("one")); while_cont.addTestElement(new TestSampler("two")); controller.addTestElement(while_cont); if (other) { controller.addTestElement(new TestSampler("three")); } controller.initialize(); try { if (other) { assertEquals("three", nextName(controller)); } else { assertNull(nextName(controller)); } } catch (StackOverflowError e) { // e.printStackTrace(); fail(e.toString()); } } }apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestSwitchController.java0000644000175000017500000002646112032647143027167 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.engine.util.ReplaceStringWithFunctions; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class TestSwitchController extends JMeterTestCase { // static { // LoggingManager.setPriority("DEBUG","jmeter"); // LoggingManager.setTarget(new java.io.PrintWriter(System.out)); // } public TestSwitchController(String name) { super(name); } // Get next sample and its name private String nextName(GenericController c) { Sampler s = c.next(); String n; if (s == null) { return null; } n = s.getName(); return n; } public void test() throws Exception { runSimpleTests("", "zero"); } public void test0() throws Exception { runSimpleTests("0", "zero"); } public void test1() throws Exception { runSimpleTests("1", "one"); runSimpleTests("one", "one"); // Match by name } public void test2() throws Exception { runSimpleTests("2", "two"); runSimpleTests("two", "two"); // Match by name } public void test3() throws Exception { runSimpleTests("3", "three"); runSimpleTests("three", "three"); // Match by name } public void test4() throws Exception { runSimpleTests("4", "zero"); } public void testX() throws Exception { runSimpleTests("X", null); // should not run any children runSimpleTest2("X", "one", "Default"); // should match the default entry } private void runSimpleTests(String cond, String exp) throws Exception { runSimpleTest(cond, exp); runSimpleTest2(cond, exp, "one"); } /* * Simple test with single Selection controller * Generic Controller * + Sampler "before" * + Switch Controller * + + Sampler "zero" * + + Sampler "one" * + + Sampler "two" * + + Sampler "three" * + Sampler "after" */ private void runSimpleTest(String cond, String exp) throws Exception { GenericController controller = new GenericController(); SwitchController switch_cont = new SwitchController(); switch_cont.setSelection(cond); controller.addTestElement(new TestSampler("before")); controller.addTestElement(switch_cont); switch_cont.addTestElement(new TestSampler("zero")); switch_cont.addTestElement(new TestSampler("one")); switch_cont.addTestElement(new TestSampler("two")); switch_cont.addTestElement(new TestSampler("three")); controller.addTestElement(new TestSampler("after")); controller.initialize(); for (int i = 1; i <= 3; i++) { assertEquals("Loop " + i, "before", nextName(controller)); if (exp!=null){ assertEquals("Loop " + i, exp, nextName(controller)); } assertEquals("Loop " + i, "after", nextName(controller)); assertNull(nextName(controller)); } } // Selection controller with two sub-controllers, but each has only 1 // child /* * Controller * + Before * + Switch (cond) * + + zero * + + Controller sub_1 * + + + one * + + two * + + Controller sub_2 * + + + three * + After */ private void runSimpleTest2(String cond, String exp, String sub1Name) throws Exception { GenericController controller = new GenericController(); GenericController sub_1 = new GenericController(); GenericController sub_2 = new GenericController(); SwitchController switch_cont = new SwitchController(); switch_cont.setSelection(cond); switch_cont.addTestElement(new TestSampler("zero")); switch_cont.addTestElement(sub_1); sub_1.addTestElement(new TestSampler("one")); sub_1.setName(sub1Name); switch_cont.addTestElement(new TestSampler("two")); switch_cont.addTestElement(sub_2); sub_2.addTestElement(new TestSampler("three")); sub_2.setName("three"); controller.addTestElement(new TestSampler("before")); controller.addTestElement(switch_cont); controller.addTestElement(new TestSampler("after")); controller.initialize(); for (int i = 1; i <= 3; i++) { assertEquals("Loop="+i,"before", nextName(controller)); if (exp!=null){ assertEquals("Loop="+i,exp, nextName(controller)); } assertEquals("Loop="+i,"after", nextName(controller)); assertNull("Loop="+i,nextName(controller)); } } public void testTest2() throws Exception { runTest2("", new String[] { "zero" }); runTest2("0", new String[] { "zero" }); runTest2("7", new String[] { "zero" }); runTest2("5", new String[] { "zero" }); runTest2("4", new String[] { "six" }); runTest2("3", new String[] { "five" }); runTest2("1", new String[] { "one", "two" }); runTest2("2", new String[] { "three", "four" }); } /* * Test: * Before * Selection Controller * - zero (default) * - simple controller 1 * - - one * - - two * - simple controller 2 * - - three * - - four * - five * - six * After * * cond = Switch condition * exp[] = expected results */ private void runTest2(String cond, String exp[]) throws Exception { int loops = 3; LoopController controller = new LoopController(); controller.setLoops(loops); controller.setContinueForever(false); GenericController sub_1 = new GenericController(); GenericController sub_2 = new GenericController(); SwitchController switch_cont = new SwitchController(); switch_cont.setSelection(cond); switch_cont.addTestElement(new TestSampler("zero")); switch_cont.addTestElement(sub_1); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); switch_cont.addTestElement(sub_2); sub_2.addTestElement(new TestSampler("three")); sub_2.addTestElement(new TestSampler("four")); switch_cont.addTestElement(new TestSampler("five")); switch_cont.addTestElement(new TestSampler("six")); controller.addTestElement(new TestSampler("before")); controller.addTestElement(switch_cont); controller.addTestElement(new TestSampler("after")); controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); switch_cont.setRunningVersion(true); controller.initialize(); for (int i = 1; i <= 3; i++) { assertEquals("Loop:" + i, "before", nextName(controller)); for (int j = 0; j < exp.length; j++) { assertEquals("Loop:" + i, exp[j], nextName(controller)); } assertEquals("Loop:" + i, "after", nextName(controller)); } assertNull("Loops:" + loops, nextName(controller)); } /* * N.B. Requires ApacheJMeter_functions.jar to be on the classpath, * otherwise the function cannot be resolved. */ public void testFunction() throws Exception { JMeterContext jmctx = JMeterContextService.getContext(); Map variables = new HashMap(); ReplaceStringWithFunctions transformer = new ReplaceStringWithFunctions(new CompoundVariable(), variables); jmctx.setVariables(new JMeterVariables()); JMeterVariables jmvars = jmctx.getVariables(); jmvars.put("VAR", "100"); StringProperty prop = new StringProperty(SwitchController.SWITCH_VALUE,"${__counter(TRUE,VAR)}"); JMeterProperty newProp = transformer.transformValue(prop); newProp.setRunningVersion(true); GenericController controller = new GenericController(); SwitchController switch_cont = new SwitchController(); switch_cont.setProperty(newProp); controller.addTestElement(new TestSampler("before")); controller.addTestElement(switch_cont); switch_cont.addTestElement(new TestSampler("0")); switch_cont.addTestElement(new TestSampler("1")); switch_cont.addTestElement(new TestSampler("2")); switch_cont.addTestElement(new TestSampler("3")); controller.addTestElement(new TestSampler("after")); controller.initialize(); assertEquals("100",jmvars.get("VAR")); for (int i = 1; i <= 3; i++) { assertEquals("Loop " + i, "before", nextName(controller)); assertEquals("Loop " + i, ""+i, nextName(controller)); assertEquals("Loop " + i, ""+i, jmvars.get("VAR")); assertEquals("Loop " + i, "after", nextName(controller)); assertNull(nextName(controller)); } int i = 4; assertEquals("Loop " + i, "before", nextName(controller)); assertEquals("Loop " + i, "0", nextName(controller)); assertEquals("Loop " + i, ""+i, jmvars.get("VAR")); assertEquals("Loop " + i, "after", nextName(controller)); assertNull(nextName(controller)); assertEquals("4",jmvars.get("VAR")); } } apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestOnceOnlyController.java0000644000175000017500000003414212032647143027447 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.testelement.TestElement; public class TestOnceOnlyController extends JMeterTestCase { public TestOnceOnlyController(String name) { super(name); } public void testProcessing() throws Exception { GenericController controller = new GenericController(); GenericController sub_1 = new OnceOnlyController(); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); LoopController sub_2 = new LoopController(); sub_2.setLoops(3); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); String[] interleaveOrder = new String[] { "one", "two" }; String[] order = new String[] { "", "", "three", "four", "five", "six", "seven", "four", "five", "six", "seven", "four", "five", "six", "seven" }; int counter = 15; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); for (int i = 0; i < 4; i++) { assertEquals(15, counter); counter = 0; if (i > 0) { counter = 2; } TestElement sampler = null; while ((sampler = controller.next()) != null) { if (i == 0 && counter < 2) { assertEquals(interleaveOrder[counter], sampler.getName()); } else { assertEquals(order[counter], sampler.getName()); } counter++; } } } public void testProcessing2() throws Exception { GenericController controller = new GenericController(); GenericController sub_1 = new OnceOnlyController(); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); LoopController sub_2 = new LoopController(); sub_2.setLoops(3); OnceOnlyController sub_3 = new OnceOnlyController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addIterationListener(sub_3); sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); String[] interleaveOrder = new String[] { "one", "two" }; String[] order = new String[] { "", "", "three", "four", "five", "six", "seven", "four", "seven", "four", "seven" }; int counter = 11; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); for (int i = 0; i < 4; i++) { assertEquals(11, counter); counter = 0; if (i > 0) { counter = 2; } TestElement sampler = null; while ((sampler = controller.next()) != null) { if (i == 0 && counter < 2) { assertEquals(interleaveOrder[counter], sampler.getName()); } else { assertEquals(order[counter], sampler.getName()); } counter++; } } } public void testInOuterLoop() throws Exception { // Set up the test plan LoopController controller = new LoopController(); final int outerLoopCount = 4; controller.setLoops(outerLoopCount); // OnlyOnce samples OnceOnlyController sub_1 = new OnceOnlyController(); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); // Outer sample controller.addTestElement(new TestSampler("three")); // Inner loop LoopController sub_2 = new LoopController(); final int innerLoopCount = 3; sub_2.setLoops(innerLoopCount); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); // Sample in inner loop sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); // Compute the expected sample names String[] onlyOnceOrder = new String[] { "one", "two" }; String[] order = new String[] { "three", "four", "five", "six", "seven", "four", "five", "six", "seven", "four", "five", "six", "seven" }; // Outer only once + ("three" + ("four" + "five" + "six" + "seven") * innerLoopCount) * outerLoopCount; int expectedNoSamples = 2 + (1 + (3 + 1) * innerLoopCount) * outerLoopCount; String[] expectedSamples = new String[expectedNoSamples]; // The only once samples System.arraycopy(onlyOnceOrder, 0, expectedSamples, 0, onlyOnceOrder.length); // The outer sample and the inner loop samples final int onceOnlySamples = onlyOnceOrder.length; for(int i = 0; i < order.length * outerLoopCount; i++) { expectedSamples[onceOnlySamples + i] = order[i % order.length]; } // Execute the test pan controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); int counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals(expectedSamples[counter], sampler.getPropertyAsString(TestElement.NAME)); counter++; } assertEquals(expectedNoSamples, counter); } public void testInsideInnerLoop() throws Exception { // Test plan with OnlyOnceController inside inner loop // Set up the test plan LoopController controller = new LoopController(); final int outerLoopCount = 4; controller.setLoops(outerLoopCount); // OnlyOnce samples OnceOnlyController sub_1 = new OnceOnlyController(); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); // Outer sample controller.addTestElement(new TestSampler("three")); // Inner loop LoopController sub_2 = new LoopController(); final int innerLoopCount = 3; sub_2.setLoops(innerLoopCount); // Sample in inner loop sub_2.addTestElement(new TestSampler("four")); // OnlyOnce inside inner loop OnceOnlyController sub_3 = new OnceOnlyController(); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addIterationListener(sub_3); // Sample in inner loop sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); // Compute the expected sample names String[] onlyOnceOrder = new String[] { "one", "two" }; String[] order = new String[] { "three", "four", "five", "six", "seven", "four", "seven", "four", "seven" }; // Outer only once + ("three" + "only once five and six" + ("four" + "seven") * innerLoopCount) * outerLoopCount; int expectedNoSamples = 2 + (1 + 2 + (1 + 1) * innerLoopCount) * outerLoopCount; String[] expectedSamples = new String[expectedNoSamples]; // The only once samples System.arraycopy(onlyOnceOrder, 0, expectedSamples, 0, onlyOnceOrder.length); // The outer sample and the inner loop samples final int onceOnlySamples = onlyOnceOrder.length; for(int i = 0; i < order.length * outerLoopCount; i++) { expectedSamples[onceOnlySamples + i] = order[i % order.length]; } // Execute the test pan controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); int counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals(expectedSamples[counter], sampler.getPropertyAsString(TestElement.NAME)); counter++; } assertEquals(expectedNoSamples, counter); } // Test skipped for now as behaviour is not yet properly defined public void notestInsideInterleave() throws Exception { // Test to show current problem with InterleaveController // I am not sure if the expected order of the samples // below are correct, because I am not sure if it is // properly defined how the InterleaveController and // OnlyOnceController should function. // Test plan with OnlyOnceController inside inner loop // Set up the test plan LoopController controller = new LoopController(); final int outerLoopCount = 4; controller.setLoops(outerLoopCount); // OnlyOnce samples OnceOnlyController sub_1 = new OnceOnlyController(); sub_1.setName("outer OnlyOnce"); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); // Outer sample controller.addTestElement(new TestSampler("three")); // Inner loop LoopController sub_2 = new LoopController(); final int innerLoopCount = 5; sub_2.setLoops(innerLoopCount); sub_2.addTestElement(new TestSampler("four")); // OnlyOnce inside inner loop OnceOnlyController sub_3 = new OnceOnlyController(); sub_3.setName("In loop OnlyOnce"); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addIterationListener(sub_3); // InterleaveController in inner loop InterleaveControl sub_4 = new InterleaveControl(); sub_4.setStyle(InterleaveControl.USE_SUB_CONTROLLERS); // OnlyOnce inside InterleaveController OnceOnlyController sub_5 = new OnceOnlyController(); sub_5.addTestElement(new TestSampler("seven")); sub_5.addTestElement(new TestSampler("eight")); sub_5.setName("Inside InterleaveController OnlyOnce"); sub_4.addTestElement(sub_5); sub_4.addIterationListener(sub_5); // Samples inside InterleaveController sub_4.addTestElement(new TestSampler("nine")); sub_4.addTestElement(new TestSampler("ten")); sub_2.addTestElement(sub_4); // Sample in inner loop sub_2.addTestElement(new TestSampler("eleven")); controller.addTestElement(sub_2); // Compute the expected sample names String[] onlyOnceOrder = new String[] { "one", "two" }; String[] order = new String[] { "three", "four", "five", "six", "seven", "eight", "eleven", "four", "nine", "eleven", "four", "ten", "eleven", "four", "nine", "eleven", "four", "ten", "eleven" }; // Outer only once + ("three" + "only once five and six" + "eight in interleave only once" + ("four" + "interleave" + "eleven") * innerLoopCount) * outerLoopCount; int expectedNoSamples = 2 + (1 + 2 + 1 + (1 + 1 + 1) * innerLoopCount) * outerLoopCount; String[] expectedSamples = new String[expectedNoSamples]; // The only once samples System.arraycopy(onlyOnceOrder, 0, expectedSamples, 0, onlyOnceOrder.length); // The outer sample and the inner loop samples final int onceOnlySamples = onlyOnceOrder.length; for (int i = 0; i < order.length * outerLoopCount; i++) { expectedSamples[onceOnlySamples + i] = order[i % order.length]; } // Execute the test pan controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); sub_4.setRunningVersion(true); sub_5.setRunningVersion(true); controller.initialize(); int counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { System.out.println("ex: " + expectedSamples[counter] + " ac: " + sampler.getPropertyAsString(TestElement.NAME)); assertEquals(expectedSamples[counter], sampler.getPropertyAsString(TestElement.NAME)); counter++; } assertEquals(expectedNoSamples, counter); } } apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestThroughputController.java0000644000175000017500000002261512032647143030074 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.testelement.TestElement; /** * This class represents a controller that can controll the number of times that * it is executed, either by the total number of times the user wants the * controller executed (BYNUMBER) or by the percentage of time it is called * (BYPERCENT) * */ public class TestThroughputController extends JMeterTestCase { public TestThroughputController(String name) { super(name); } public void testByNumber() throws Exception { ThroughputController sub_1 = new ThroughputController(); sub_1.setStyle(ThroughputController.BYNUMBER); sub_1.setMaxThroughput(2); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); LoopController loop = new LoopController(); loop.setLoops(5); loop.addTestElement(new TestSampler("zero")); loop.addTestElement(sub_1); loop.addIterationListener(sub_1); loop.addTestElement(new TestSampler("three")); LoopController test = new LoopController(); test.setLoops(2); test.addTestElement(loop); String[] order = new String[] { "zero", "one", "two", "three", "zero", "one", "two", "three", "zero", "three", "zero", "three", "zero", "three", "zero", "three", "zero", "three", "zero", "three", "zero", "three", "zero", "three", }; sub_1.testStarted(); test.setRunningVersion(true); sub_1.setRunningVersion(true); loop.setRunningVersion(true); test.initialize(); for (int counter = 0; counter < order.length; counter++) { TestElement sampler = test.next(); assertNotNull(sampler); assertEquals("Counter: " + counter, order[counter], sampler.getName()); } assertNull(test.next()); sub_1.testEnded(); } public void testByNumberZero() throws Exception { ThroughputController sub_1 = new ThroughputController(); sub_1.setStyle(ThroughputController.BYNUMBER); sub_1.setMaxThroughput(0); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); LoopController controller = new LoopController(); controller.setLoops(5); controller.addTestElement(new TestSampler("zero")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); controller.addTestElement(new TestSampler("three")); String[] order = new String[] { "zero", "three", "zero", "three", "zero", "three", "zero", "three", "zero", "three", }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_1.testStarted(); controller.initialize(); for (int i = 0; i < 3; i++) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("Counter: " + counter + ", i: " + i, order[counter], sampler.getName()); counter++; } assertEquals(counter, order.length); counter = 0; } sub_1.testEnded(); } public void testByPercent33() throws Exception { ThroughputController sub_1 = new ThroughputController(); sub_1.setStyle(ThroughputController.BYPERCENT); sub_1.setPercentThroughput(33.33f); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); LoopController controller = new LoopController(); controller.setLoops(6); controller.addTestElement(new TestSampler("zero")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); controller.addTestElement(new TestSampler("three")); // Expected results established using the DDA // algorithm (see // http://www.siggraph.org/education/materials/HyperGraph/scanline/outprims/drawline.htm): String[] order = new String[] { "zero", // 0/1 vs. 1/1 -> 0 is // closer to 33.33 "three", "zero", // 0/2 vs. 1/2 -> 50.0 is closer to // 33.33 "one", "two", "three", "zero", // 1/3 vs. 2/3 -> 33.33 is // closer to 33.33 "three", "zero", // 1/4 vs. 2/4 -> 25.0 is closer to // 33.33 "three", "zero", // 1/5 vs. 2/5 -> 40.0 is closer to // 33.33 "one", "two", "three", "zero", // 2/6 vs. 3/6 -> 33.33 is // closer to 33.33 "three", // etc... }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_1.testStarted(); controller.initialize(); for (int i = 0; i < 3; i++) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("Counter: " + counter + ", i: " + i, order[counter], sampler.getName()); counter++; } assertEquals(counter, order.length); counter = 0; } sub_1.testEnded(); } public void testByPercentZero() throws Exception { ThroughputController sub_1 = new ThroughputController(); sub_1.setStyle(ThroughputController.BYPERCENT); sub_1.setPercentThroughput(0.0f); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); LoopController controller = new LoopController(); controller.setLoops(150); controller.addTestElement(new TestSampler("zero")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); controller.addTestElement(new TestSampler("three")); String[] order = new String[] { "zero", "three", }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_1.testStarted(); controller.initialize(); for (int i = 0; i < 3; i++) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("Counter: " + counter + ", i: " + i, order[counter % order.length], sampler.getName()); counter++; } assertEquals(counter, 150 * order.length); counter = 0; } sub_1.testEnded(); } public void testByPercent100() throws Exception { ThroughputController sub_1 = new ThroughputController(); sub_1.setStyle(ThroughputController.BYPERCENT); sub_1.setPercentThroughput(100.0f); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); LoopController controller = new LoopController(); controller.setLoops(150); controller.addTestElement(new TestSampler("zero")); controller.addTestElement(sub_1); controller.addIterationListener(sub_1); controller.addTestElement(new TestSampler("three")); String[] order = new String[] { "zero", "one", "two", "three", }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_1.testStarted(); controller.initialize(); for (int i = 0; i < 3; i++) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("Counter: " + counter + ", i: " + i, order[counter % order.length], sampler.getName()); counter++; } assertEquals(counter, 150 * order.length); counter = 0; } sub_1.testEnded(); } } apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestIfController.java0000644000175000017500000001665712032647143026272 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.samplers.Sampler; public class TestIfController extends JMeterTestCase { public TestIfController(String name) { super(name); } public void testProcessing() throws Exception { GenericController controller = new GenericController(); controller.addTestElement(new IfController("false==false")); controller.addTestElement(new IfController(" \"a\".equals(\"a\")")); controller.addTestElement(new IfController("2<100")); //TODO enable some proper tests!! /* * GenericController sub_1 = new GenericController(); * sub_1.addTestElement(new IfController("3==3")); * controller.addTestElement(sub_1); controller.addTestElement(new * IfController("false==true")); */ /* * GenericController controller = new GenericController(); * GenericController sub_1 = new GenericController(); * sub_1.addTestElement(new IfController("10<100")); * sub_1.addTestElement(new IfController("true==false")); * controller.addTestElement(sub_1); controller.addTestElement(new * IfController("false==false")); * * IfController sub_2 = new IfController(); sub_2.setCondition( "10<10000"); * GenericController sub_3 = new GenericController(); * * sub_2.addTestElement(new IfController( " \"a\".equals(\"a\")" ) ); * sub_3.addTestElement(new IfController("2>100")); * sub_3.addTestElement(new IfController("false==true")); * sub_2.addTestElement(sub_3); sub_2.addTestElement(new * IfController("2==3")); controller.addTestElement(sub_2); */ /* * IfController controller = new IfController("12==12"); * controller.initialize(); */ // TestElement sampler = null; // while ((sampler = controller.next()) != null) { // logger.debug(" ->>> Gonna assertTrue :" + sampler.getClass().getName() + " Property is ---->>>" // + sampler.getName()); // } } public void testProcessingTrue() throws Exception { LoopController controller = new LoopController(); controller.setLoops(2); controller.addTestElement(new TestSampler("Sample1")); IfController ifCont = new IfController("true==true"); ifCont.setEvaluateAll(true); ifCont.addTestElement(new TestSampler("Sample2")); TestSampler sample3 = new TestSampler("Sample3"); ifCont.addTestElement(sample3); controller.addTestElement(ifCont); String[] order = new String[] { "Sample1", "Sample2", "Sample3", "Sample1", "Sample2", "Sample3" }; int counter = 0; controller.setRunningVersion(true); ifCont.setRunningVersion(true); Sampler sampler = null; while ((sampler = controller.next()) != null) { sampler.sample(null); assertEquals(order[counter], sampler.getName()); counter++; } assertEquals(counter, 6); } /** * Test false return on sample3 (sample4 doesn't execute) * @throws Exception */ public void testEvaluateAllChildrenWithoutSubController() throws Exception { LoopController controller = new LoopController(); controller.setLoops(2); controller.addTestElement(new TestSampler("Sample1")); IfController ifCont = new IfController("true==true"); ifCont.setEvaluateAll(true); controller.addTestElement(ifCont); ifCont.addTestElement(new TestSampler("Sample2")); TestSampler sample3 = new TestSampler("Sample3"); ifCont.addTestElement(sample3); TestSampler sample4 = new TestSampler("Sample4"); ifCont.addTestElement(sample4); String[] order = new String[] { "Sample1", "Sample2", "Sample3", "Sample1", "Sample2", "Sample3" }; int counter = 0; controller.setRunningVersion(true); ifCont.setRunningVersion(true); Sampler sampler = null; while ((sampler = controller.next()) != null) { sampler.sample(null); if (sampler.getName().equals("Sample3")) { ifCont.setCondition("true==false"); } assertEquals(order[counter], sampler.getName()); counter++; } assertEquals(counter, 6); } /** * test 2 loops with a sub generic controller (sample4 doesn't execute) * @throws Exception */ public void testEvaluateAllChildrenWithSubController() throws Exception { LoopController controller = new LoopController(); controller.setLoops(2); controller.addTestElement(new TestSampler("Sample1")); IfController ifCont = new IfController("true==true"); ifCont.setEvaluateAll(true); controller.addTestElement(ifCont); ifCont.addTestElement(new TestSampler("Sample2")); GenericController genericCont = new GenericController(); TestSampler sample3 = new TestSampler("Sample3"); genericCont.addTestElement(sample3); TestSampler sample4 = new TestSampler("Sample4"); genericCont.addTestElement(sample4); ifCont.addTestElement(genericCont); String[] order = new String[] { "Sample1", "Sample2", "Sample3", "Sample1", "Sample2", "Sample3" }; int counter = 0; controller.setRunningVersion(true); ifCont.setRunningVersion(true); genericCont.setRunningVersion(true); Sampler sampler = null; while ((sampler = controller.next()) != null) { sampler.sample(null); if (sampler.getName().equals("Sample3")) { ifCont.setCondition("true==false"); } assertEquals(order[counter], sampler.getName()); counter++; } assertEquals(counter, 6); } }apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestGenericController.java0000644000175000017500000000500012032647143027264 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.testelement.TestElement; public class TestGenericController extends JMeterTestCase { public TestGenericController(String name) { super(name); } public void testProcessing() throws Exception { testLog.debug("Testing Generic Controller"); GenericController controller = new GenericController(); GenericController sub_1 = new GenericController(); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); GenericController sub_2 = new GenericController(); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); String[] order = new String[] { "one", "two", "three", "four", "five", "six", "seven" }; int counter = 7; controller.initialize(); for (int i = 0; i < 2; i++) { assertEquals(7, counter); counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals(order[counter++], sampler.getName()); } } } } apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestRunTime.java0000644000175000017500000000543212032647143025240 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.samplers.Sampler; /** * @version $Revision: 773380 $ */ public class TestRunTime extends JMeterTestCase { public TestRunTime(String name) { super(name); } public void testProcessing() throws Exception { RunTime controller = new RunTime(); controller.setRuntime(10); TestSampler samp1 = new TestSampler("Sample 1", 500); TestSampler samp2 = new TestSampler("Sample 2", 490); LoopController sub1 = new LoopController(); sub1.setLoops(2); sub1.setContinueForever(false); sub1.addTestElement(samp1); LoopController sub2 = new LoopController(); sub2.setLoops(40); sub2.setContinueForever(false); sub2.addTestElement(samp2); controller.addTestElement(sub1); controller.addTestElement(sub2); controller.setRunningVersion(true); sub1.setRunningVersion(true); sub2.setRunningVersion(true); controller.initialize(); Sampler sampler = null; int loops = 0; long now = System.currentTimeMillis(); while ((sampler = controller.next()) != null) { loops++; sampler.sample(null); } long elapsed = System.currentTimeMillis() - now; assertTrue("Should be at least 20 loops "+loops, loops >= 20); assertTrue("Should be fewer than 30 loops "+loops, loops < 30); assertTrue("Should take at least 10 seconds "+elapsed, elapsed >= 10000); assertTrue("Should take less than 12 seconds "+elapsed, elapsed <= 12000); assertEquals("Sampler 1 should run 2 times", 2, samp1.getSamples()); assertTrue("Sampler 2 should run >= 18 times", samp2.getSamples() >= 18); } }apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestLoopController.java0000644000175000017500000000661012032647143026631 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.testelement.TestElement; public class TestLoopController extends JMeterTestCase { public TestLoopController(String name) { super(name); } public void testProcessing() throws Exception { GenericController controller = new GenericController(); GenericController sub_1 = new GenericController(); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); LoopController sub_2 = new LoopController(); sub_2.setLoops(3); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); String[] order = new String[] { "one", "two", "three", "four", "five", "six", "seven", "four", "five", "six", "seven", "four", "five", "six", "seven" }; int counter = 15; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); for (int i = 0; i < 2; i++) { assertEquals(15, counter); counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals(order[counter++], sampler.getName()); } } } public void testLoopZeroTimes() throws Exception { LoopController loop = new LoopController(); loop.setLoops(0); loop.addTestElement(new TestSampler("never run")); loop.initialize(); assertNull(loop.next()); } public void testInfiniteLoop() throws Exception { LoopController loop = new LoopController(); loop.setLoops(-1); loop.addTestElement(new TestSampler("never run")); loop.setRunningVersion(true); loop.initialize(); for (int i = 0; i < 42; i++) { assertNotNull(loop.next()); } } }apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestInterleaveControl.java0000644000175000017500000002510012032647143027306 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.testelement.TestElement; public class TestInterleaveControl extends JMeterTestCase { public TestInterleaveControl(String name) { super(name); } public void testProcessing() throws Exception { testLog.debug("Testing Interleave Controller 1"); GenericController controller = new GenericController(); InterleaveControl sub_1 = new InterleaveControl(); sub_1.setStyle(InterleaveControl.IGNORE_SUB_CONTROLLERS); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); LoopController sub_2 = new LoopController(); sub_2.setLoops(3); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addTestElement(new TestSampler("seven")); controller.addTestElement(sub_2); String[] interleaveOrder = new String[] { "one", "two" }; String[] order = new String[] { "dummy", "three", "four", "five", "six", "seven", "four", "five", "six", "seven", "four", "five", "six", "seven" }; int counter = 14; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); for (int i = 0; i < 4; i++) { assertEquals(14, counter); counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { if (counter == 0) { assertEquals(interleaveOrder[i % 2], sampler.getName()); } else { assertEquals(order[counter], sampler.getName()); } counter++; } } } public void testProcessing6() throws Exception { testLog.debug("Testing Interleave Controller 6"); GenericController controller = new GenericController(); InterleaveControl sub_1 = new InterleaveControl(); controller.addTestElement(new TestSampler("one")); sub_1.setStyle(InterleaveControl.IGNORE_SUB_CONTROLLERS); controller.addTestElement(sub_1); LoopController sub_2 = new LoopController(); sub_1.addTestElement(sub_2); sub_2.setLoops(3); int counter = 1; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); controller.initialize(); for (int i = 0; i < 4; i++) { assertEquals(1, counter); counter = 0; TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("one", sampler.getName()); counter++; } } } public void testProcessing2() throws Exception { testLog.debug("Testing Interleave Controller 2"); GenericController controller = new GenericController(); InterleaveControl sub_1 = new InterleaveControl(); sub_1.setStyle(InterleaveControl.IGNORE_SUB_CONTROLLERS); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); LoopController sub_2 = new LoopController(); sub_2.setLoops(3); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addTestElement(new TestSampler("seven")); sub_1.addTestElement(sub_2); String[] order = new String[] { "one", "three", "two", "three", "four", "three", "one", "three", "two", "three", "five", "three", "one", "three", "two", "three", "six", "three", "one", "three" }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); while (counter < order.length) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("failed on " + counter, order[counter], sampler.getName()); counter++; } } } public void testProcessing3() throws Exception { testLog.debug("Testing Interleave Controller 3"); GenericController controller = new GenericController(); InterleaveControl sub_1 = new InterleaveControl(); sub_1.setStyle(InterleaveControl.USE_SUB_CONTROLLERS); sub_1.addTestElement(new TestSampler("one")); sub_1.addTestElement(new TestSampler("two")); controller.addTestElement(sub_1); controller.addTestElement(new TestSampler("three")); LoopController sub_2 = new LoopController(); sub_2.setLoops(3); GenericController sub_3 = new GenericController(); sub_2.addTestElement(new TestSampler("four")); sub_3.addTestElement(new TestSampler("five")); sub_3.addTestElement(new TestSampler("six")); sub_2.addTestElement(sub_3); sub_2.addTestElement(new TestSampler("seven")); sub_1.addTestElement(sub_2); String[] order = new String[] { "one", "three", "two", "three", "four", "five", "six", "seven", "four", "five", "six", "seven", "four", "five", "six", "seven", "three", "one", "three", "two", "three" }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); while (counter < order.length) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("failed on" + counter, order[counter], sampler.getName()); counter++; } } } public void testProcessing4() throws Exception { testLog.debug("Testing Interleave Controller 4"); GenericController controller = new GenericController(); InterleaveControl sub_1 = new InterleaveControl(); sub_1.setStyle(InterleaveControl.IGNORE_SUB_CONTROLLERS); controller.addTestElement(sub_1); GenericController sub_2 = new GenericController(); sub_2.addTestElement(new TestSampler("one")); sub_2.addTestElement(new TestSampler("two")); sub_1.addTestElement(sub_2); GenericController sub_3 = new GenericController(); sub_3.addTestElement(new TestSampler("three")); sub_3.addTestElement(new TestSampler("four")); sub_1.addTestElement(sub_3); String[] order = new String[] { "one", "three", "two", "four" }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); while (counter < order.length) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("failed on" + counter, order[counter], sampler.getName()); counter++; } } } public void testProcessing5() throws Exception { testLog.debug("Testing Interleave Controller 5"); GenericController controller = new GenericController(); InterleaveControl sub_1 = new InterleaveControl(); sub_1.setStyle(InterleaveControl.USE_SUB_CONTROLLERS); controller.addTestElement(sub_1); GenericController sub_2 = new GenericController(); sub_2.addTestElement(new TestSampler("one")); sub_2.addTestElement(new TestSampler("two")); sub_1.addTestElement(sub_2); GenericController sub_3 = new GenericController(); sub_3.addTestElement(new TestSampler("three")); sub_3.addTestElement(new TestSampler("four")); sub_1.addTestElement(sub_3); String[] order = new String[] { "one", "two", "three", "four" }; int counter = 0; controller.setRunningVersion(true); sub_1.setRunningVersion(true); sub_2.setRunningVersion(true); sub_3.setRunningVersion(true); controller.initialize(); while (counter < order.length) { TestElement sampler = null; while ((sampler = controller.next()) != null) { assertEquals("failed on" + counter, order[counter], sampler.getName()); counter++; } } } } apache-jmeter-2.8/test/src/org/apache/jmeter/control/TestRandomOrderController.java0000644000175000017500000000600012032647143030125 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.control; import java.util.ArrayList; import java.util.List; import org.apache.jmeter.junit.JMeterTestCase; import org.apache.jmeter.junit.stubs.TestSampler; import org.apache.jmeter.testelement.TestElement; public class TestRandomOrderController extends JMeterTestCase { public TestRandomOrderController(String name) { super(name); } public void testRandomOrder() { testLog.debug("Testing RandomOrderController"); RandomOrderController roc = new RandomOrderController(); roc.addTestElement(new TestSampler("zero")); roc.addTestElement(new TestSampler("one")); roc.addTestElement(new TestSampler("two")); roc.addTestElement(new TestSampler("three")); TestElement sampler = null; List usedSamplers = new ArrayList(); roc.initialize(); while ((sampler = roc.next()) != null) { String samplerName = sampler.getName(); if (usedSamplers.contains(samplerName)) { assertTrue("Duplicate sampler returned from next()", false); } usedSamplers.add(samplerName); } assertEquals("All samplers were returned", 4, usedSamplers.size()); } public void testRandomOrderNoElements() { RandomOrderController roc = new RandomOrderController(); roc.initialize(); assertNull(roc.next()); } public void testRandomOrderOneElement() { RandomOrderController roc = new RandomOrderController(); roc.addTestElement(new TestSampler("zero")); TestElement sampler = null; List usedSamplers = new ArrayList(); roc.initialize(); while ((sampler = roc.next()) != null) { String samplerName = sampler.getName(); if (usedSamplers.contains(samplerName)) { assertTrue("Duplicate sampler returned from next()", false); } usedSamplers.add(samplerName); } assertEquals("All samplers were returned", 1, usedSamplers.size()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/samplers/0000755000175000017500000000000012165514773022325 5ustar ebourgebourgapache-jmeter-2.8/test/src/org/apache/jmeter/samplers/TestSampleResult.java0000644000175000017500000003115312032647144026443 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.StringWriter; import junit.framework.TestCase; import org.apache.jmeter.util.Calculator; import org.apache.log.LogTarget; import org.apache.log.format.Formatter; import org.apache.log.format.RawFormatter; import org.apache.log.output.io.WriterTarget; // TODO need more tests - particularly for the new functions public class TestSampleResult extends TestCase { public TestSampleResult(String name) { super(name); } public void testElapsedTrue() throws Exception { SampleResult res = new SampleResult(true); // Check sample increments OK res.sampleStart(); Thread.sleep(110); // Needs to be greater than the minimum to allow for boundary errors res.sampleEnd(); long time = res.getTime(); if(time < 100){ fail("Sample time should be >=100, actual "+time); } } public void testElapsedFalse() throws Exception { SampleResult res = new SampleResult(false); // Check sample increments OK res.sampleStart(); Thread.sleep(110); // Needs to be greater than the minimum to allow for boundary errors res.sampleEnd(); long time = res.getTime(); if(time < 100){ fail("Sample time should be >=100, actual "+time); } } public void testPauseFalse() throws Exception { SampleResult res = new SampleResult(false); // Check sample increments OK res.sampleStart(); Thread.sleep(100); res.samplePause(); Thread.sleep(200); // Re-increment res.sampleResume(); Thread.sleep(100); res.sampleEnd(); long sampleTime = res.getTime(); if ((sampleTime < 180) || (sampleTime > 290)) { fail("Accumulated time (" + sampleTime + ") was not between 180 and 290 ms"); } } public void testPauseTrue() throws Exception { SampleResult res = new SampleResult(true); // Check sample increments OK res.sampleStart(); Thread.sleep(100); res.samplePause(); Thread.sleep(200); // Re-increment res.sampleResume(); Thread.sleep(100); res.sampleEnd(); long sampleTime = res.getTime(); if ((sampleTime < 180) || (sampleTime > 290)) { fail("Accumulated time (" + sampleTime + ") was not between 180 and 290 ms"); } } private static final Formatter fmt = new RawFormatter(); private StringWriter wr = null; private void divertLog() {// N.B. This needs to divert the log for SampleResult wr = new StringWriter(1000); LogTarget[] lt = { new WriterTarget(wr, fmt) }; SampleResult.log.setLogTargets(lt); } public void testPause2True() throws Exception { divertLog(); SampleResult res = new SampleResult(true); res.sampleStart(); res.samplePause(); assertEquals(0, wr.toString().length()); res.samplePause(); assertFalse(wr.toString().length() == 0); } public void testPause2False() throws Exception { divertLog(); SampleResult res = new SampleResult(false); res.sampleStart(); res.samplePause(); assertEquals(0, wr.toString().length()); res.samplePause(); assertFalse(wr.toString().length() == 0); } public void testByteCount() throws Exception { SampleResult res = new SampleResult(); res.sampleStart(); res.setBytes(100); res.setSampleLabel("sample of size 100 bytes"); res.sampleEnd(); assertEquals(100, res.getBytes()); assertEquals("sample of size 100 bytes", res.getSampleLabel()); } public void testSubResultsTrue() throws Exception { testSubResults(true, 0); } public void testSubResultsTrueThread() throws Exception { testSubResults(true, 500L, 0); } public void testSubResultsFalse() throws Exception { testSubResults(false, 0); } public void testSubResultsFalseThread() throws Exception { testSubResults(false, 500L, 0); } public void testSubResultsTruePause() throws Exception { testSubResults(true, 100); } public void testSubResultsTruePauseThread() throws Exception { testSubResults(true, 500L, 100); } public void testSubResultsFalsePause() throws Exception { testSubResults(false, 100); } public void testSubResultsFalsePauseThread() throws Exception { testSubResults(false, 500L, 100); } // temp test case for exploring settings public void xtestUntilFail() throws Exception { while(true) { testSubResultsTruePause(); testSubResultsFalsePause(); } } private void testSubResults(boolean nanoTime, long pause) throws Exception { testSubResults(nanoTime, 0L, pause); // Don't use nanoThread } private void testSubResults(boolean nanoTime, long nanoThreadSleep, long pause) throws Exception { // This test tries to emulate a http sample, with two // subsamples, representing images that are downloaded for the // page representing the first sample. // Sample that will get two sub results, simulates a web page load SampleResult parent = new SampleResult(nanoTime, nanoThreadSleep); assertEquals(nanoTime, parent.useNanoTime); assertEquals(nanoThreadSleep, parent.nanoThreadSleep); long beginTest = parent.currentTimeInMillis(); parent.sampleStart(); Thread.sleep(100); parent.setBytes(300); parent.setSampleLabel("Parent Sample"); parent.setSuccessful(true); parent.sampleEnd(); long parentElapsed = parent.getTime(); // Sample with no sub results, simulates an image download SampleResult child1 = new SampleResult(nanoTime); child1.sampleStart(); Thread.sleep(100); child1.setBytes(100); child1.setSampleLabel("Child1 Sample"); child1.setSuccessful(true); child1.sampleEnd(); long child1Elapsed = child1.getTime(); assertTrue(child1.isSuccessful()); assertEquals(100, child1.getBytes()); assertEquals("Child1 Sample", child1.getSampleLabel()); assertEquals(1, child1.getSampleCount()); assertEquals(0, child1.getSubResults().length); long actualPause = 0; if (pause > 0) { long t1 = parent.currentTimeInMillis(); Thread.sleep(pause); actualPause = parent.currentTimeInMillis() - t1; } // Sample with no sub results, simulates an image download SampleResult child2 = new SampleResult(nanoTime); child2.sampleStart(); Thread.sleep(100); child2.setBytes(200); child2.setSampleLabel("Child2 Sample"); child2.setSuccessful(true); child2.sampleEnd(); long child2Elapsed = child2.getTime(); assertTrue(child2.isSuccessful()); assertEquals(200, child2.getBytes()); assertEquals("Child2 Sample", child2.getSampleLabel()); assertEquals(1, child2.getSampleCount()); assertEquals(0, child2.getSubResults().length); // Now add the subsamples to the sample parent.addSubResult(child1); parent.addSubResult(child2); assertTrue(parent.isSuccessful()); assertEquals(600, parent.getBytes()); assertEquals("Parent Sample", parent.getSampleLabel()); assertEquals(1, parent.getSampleCount()); assertEquals(2, parent.getSubResults().length); long parentElapsedTotal = parent.getTime(); long overallTime = parent.currentTimeInMillis() - beginTest; long sumSamplesTimes = parentElapsed + child1Elapsed + actualPause + child2Elapsed; /* * Parent elapsed total should be no smaller than the sum of the individual samples. * It may be greater by the timer granularity. */ long diff = parentElapsedTotal - sumSamplesTimes; long maxDiff = nanoTime ? 2 : 16; // TimeMillis has granularity of 10-20 if (diff < 0 || diff > maxDiff) { fail("ParentElapsed: " + parentElapsedTotal + " - " + " sum(samples): " + sumSamplesTimes + " = " + diff + " not in [0," + maxDiff + "]; nanotime=" + nanoTime); } /** * The overall time to run the test must be no less than, * and may be greater (but not much greater) than the parent elapsed time */ diff = overallTime - parentElapsedTotal; if (diff < 0 || diff > maxDiff) { fail("TestElapsed: " + overallTime + " - " + " ParentElapsed: " + parentElapsedTotal + " = " + diff + " not in [0," + maxDiff + "]; nanotime="+nanoTime); } // Check that calculator gets the correct statistics from the sample Calculator calculator = new Calculator(); calculator.addSample(parent); assertEquals(600, calculator.getTotalBytes()); assertEquals(1, calculator.getCount()); assertEquals(1d / (parentElapsedTotal / 1000d), calculator.getRate(),0.0001d); // Allow for some margin of error // Check that the throughput uses the time elapsed for the sub results assertFalse(1d / (parentElapsed / 1000d) <= calculator.getRate()); } // TODO some more invalid sequence tests needed public void testEncodingAndType() throws Exception { // check default SampleResult res = new SampleResult(); assertEquals(SampleResult.DEFAULT_ENCODING,res.getDataEncodingWithDefault()); assertEquals("DataType should be blank","",res.getDataType()); assertNull(res.getDataEncodingNoDefault()); // check null changes nothing res.setEncodingAndType(null); assertEquals(SampleResult.DEFAULT_ENCODING,res.getDataEncodingWithDefault()); assertEquals("DataType should be blank","",res.getDataType()); assertNull(res.getDataEncodingNoDefault()); // check no charset res.setEncodingAndType("text/html"); assertEquals(SampleResult.DEFAULT_ENCODING,res.getDataEncodingWithDefault()); assertEquals("text",res.getDataType()); assertNull(res.getDataEncodingNoDefault()); // Check unquoted charset res.setEncodingAndType("text/html; charset=aBcd"); assertEquals("aBcd",res.getDataEncodingWithDefault()); assertEquals("aBcd",res.getDataEncodingNoDefault()); assertEquals("text",res.getDataType()); // Check quoted charset res.setEncodingAndType("text/html; charset=\"aBCd\""); assertEquals("aBCd",res.getDataEncodingWithDefault()); assertEquals("aBCd",res.getDataEncodingNoDefault()); assertEquals("text",res.getDataType()); } } apache-jmeter-2.8/test/src/org/apache/jmeter/samplers/NullSampler.java0000644000175000017500000000207712032647144025424 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; /** * * Dummy class for testing purposes * */ public class NullSampler extends AbstractSampler { private static final long serialVersionUID = 240L; public SampleResult sample(Entry e) { return new SampleResult(); } } apache-jmeter-2.8/test/src/org/apache/jmeter/samplers/TestSampleSaveConfiguration.java0000644000175000017500000001310012032647144030603 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.text.SimpleDateFormat; import org.apache.jmeter.junit.JMeterTestCase; // Extends JMeterTest case because it needs access to JMeter properties public class TestSampleSaveConfiguration extends JMeterTestCase { public TestSampleSaveConfiguration(String name) { super(name); } public void testClone() throws Exception { SampleSaveConfiguration a = new SampleSaveConfiguration(); a.setUrl(false); a.setAssertions(true); a.setDefaultDelimiter(); a.setDefaultTimeStampFormat(); a.setDataType(true); assertFalse(a.saveUrl()); assertNotNull(a.getDelimiter()); assertTrue(a.saveAssertions()); assertTrue(a.saveDataType()); // Original and clone should be equal SampleSaveConfiguration cloneA = (SampleSaveConfiguration) a.clone(); assertNotSame(a, cloneA); assertEquals(a, cloneA); assertTrue(a.equals(cloneA)); assertTrue(cloneA.equals(a)); assertEquals(a.hashCode(), cloneA.hashCode()); // Change the original a.setUrl(true); assertFalse(a.equals(cloneA)); assertFalse(cloneA.equals(a)); assertFalse(a.hashCode() == cloneA.hashCode()); // Change the original back again a.setUrl(false); assertEquals(a, cloneA); assertTrue(a.equals(cloneA)); assertTrue(cloneA.equals(a)); assertEquals(a.hashCode(), cloneA.hashCode()); } public void testEqualsAndHashCode() throws Exception { SampleSaveConfiguration a = new SampleSaveConfiguration(); a.setUrl(false); a.setAssertions(true); a.setDefaultDelimiter(); a.setDefaultTimeStampFormat(); a.setDataType(true); SampleSaveConfiguration b = new SampleSaveConfiguration(); b.setUrl(false); b.setAssertions(true); b.setDefaultDelimiter(); b.setDefaultTimeStampFormat(); b.setDataType(true); // a and b should be equal assertEquals(a, b); assertTrue(a.equals(b)); assertTrue(b.equals(a)); assertEquals(a.hashCode(), b.hashCode()); assertEquals(a.saveUrl(), b.saveUrl()); assertEquals(a.saveAssertions(), b.saveAssertions()); assertEquals(a.getDelimiter(), b.getDelimiter()); assertEquals(a.saveDataType(), b.saveDataType()); a.setAssertions(false); // a and b should not be equal assertFalse(a.equals(b)); assertFalse(b.equals(a)); assertFalse(a.hashCode() == b.hashCode()); assertFalse(a.saveAssertions() == b.saveAssertions()); } public void testFalse() throws Exception { SampleSaveConfiguration a = new SampleSaveConfiguration(false); SampleSaveConfiguration b = new SampleSaveConfiguration(false); assertEquals("Hash codes should be equal",a.hashCode(), b.hashCode()); assertTrue("Objects should be equal",a.equals(b)); assertTrue("Objects should be equal",b.equals(a)); } public void testTrue() throws Exception { SampleSaveConfiguration a = new SampleSaveConfiguration(true); SampleSaveConfiguration b = new SampleSaveConfiguration(true); assertEquals("Hash codes should be equal",a.hashCode(), b.hashCode()); assertTrue("Objects should be equal",a.equals(b)); assertTrue("Objects should be equal",b.equals(a)); } public void testFalseTrue() throws Exception { SampleSaveConfiguration a = new SampleSaveConfiguration(false); SampleSaveConfiguration b = new SampleSaveConfiguration(true); assertFalse("Hash codes should not be equal",a.hashCode() == b.hashCode()); assertFalse("Objects should not be equal",a.equals(b)); assertFalse("Objects should not be equal",b.equals(a)); } public void testFormatter() throws Exception { SampleSaveConfiguration a = new SampleSaveConfiguration(false); SampleSaveConfiguration b = new SampleSaveConfiguration(false); a.setFormatter(null); assertEquals("Hash codes should be equal",a.hashCode(), b.hashCode()); assertTrue("Objects should be equal",a.equals(b)); assertTrue("Objects should be equal",b.equals(a)); b.setFormatter(null); assertEquals("Hash codes should be equal",a.hashCode(), b.hashCode()); assertTrue("Objects should be equal",a.equals(b)); assertTrue("Objects should be equal",b.equals(a)); a.setFormatter(new SimpleDateFormat()); b.setFormatter(new SimpleDateFormat()); assertEquals("Hash codes should be equal",a.hashCode(), b.hashCode()); assertTrue("Objects should be equal",a.equals(b)); assertTrue("Objects should be equal",b.equals(a)); } } apache-jmeter-2.8/NOTICE0000644000175000017500000000261612032647263014336 0ustar ebourgebourgApache JMeter Copyright 1998-2012 The Apache Software Foundation This product includes software developed at The Apache Software Foundation (http://www.apache.org/). This product includes JavaScript support provided by the Mozilla Rhino project See http://www.mozilla.org/rhino/ This product includes software developed by the JDOM Project (http://www.jdom.org/). This product includes JUnit (http://www.junit.org/) under the Common Public License Version 1.0: http://www.opensource.org/licenses/cpl.php This product includes XStream (http://xstream.codehaus.org/) Copyright (c) 2003-2004, Joe Walnes All rights reserved. This product includes software developed by the Indiana University Extreme! Lab (http://www.extreme.indiana.edu/). (XPP3 Pull Parser) This project includes HTMLParser (http://htmlparser.sourceforge.net/) under the Common Public License Version 1.0: http://www.opensource.org/licenses/cpl.php This product includes software developed by the jCharts Project. See http://jcharts.sourceforge.net/ This product includes BeanShell by Pat Niemeyer http://www.beanshell.org/; Source: http://www.beanshell.org/developer.html This product includes JAF and JavaMail from Oracle(Sun) The software is included under the CDDL License. The product includes icons from Open Icon Library http://openiconlibrary.sourceforge.net/, of which the Oxygen Icons 4.3.1 are added under the CC-BY-SA 3.0 license apache-jmeter-2.8/src/0000755000175000017500000000000012165514773014222 5ustar ebourgebourgapache-jmeter-2.8/src/core/0000755000175000017500000000000012032647217015143 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/0000755000175000017500000000000012032647217015732 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/0000755000175000017500000000000012032647217017153 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/0000755000175000017500000000000012165514773020450 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/timers/0000755000175000017500000000000012165514773021753 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/timers/gui/0000755000175000017500000000000012165514773022537 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/timers/gui/AbstractTimerGui.java0000644000175000017500000000445112032647220026602 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers.gui; import java.util.Arrays; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * This is the base class for JMeter GUI components which manage timers. * * @version $Revision: 905027 $ */ public abstract class AbstractTimerGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

    * This implementation returns menu items appropriate for most timer * components. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultTimerMenu(); } /** * This is the list of menu categories this gui component will be available * under. This implementation returns * {@link org.apache.jmeter.gui.util.MenuFactory#TIMERS}, which is * appropriate for most timer components. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.TIMERS }); } }apache-jmeter-2.8/src/core/org/apache/jmeter/timers/Timer.java0000644000175000017500000000233112032647220023660 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; /** * This interface defines those methods that must be implemented by timer * plugins. * */ public interface Timer extends Serializable { /** * This method is called after a sampling process is done to know how much * time the sampling thread has to wait until sampling again. * * @return the computed delay value. */ long delay(); } apache-jmeter-2.8/src/core/org/apache/jmeter/config/0000755000175000017500000000000012165514773021715 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/config/ConfigTestElement.java0000644000175000017500000000330312032647220026121 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; public class ConfigTestElement extends AbstractTestElement implements Serializable, ConfigElement { private static final long serialVersionUID = 240L; public static final String USERNAME = "ConfigTestElement.username"; public static final String PASSWORD = "ConfigTestElement.password"; public ConfigTestElement() { } @Override public void addTestElement(TestElement parm1) { if (parm1 instanceof ConfigTestElement) { mergeIn(parm1); } } /** * {@inheritDoc} */ public void addConfigElement(ConfigElement config) { mergeIn((TestElement) config); } /** * {@inheritDoc} */ public boolean expectsModification() { return false; } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/Arguments.java0000644000175000017500000001702112032647220024511 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.io.Serializable; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; /** * A set of Argument objects. * */ public class Arguments extends ConfigTestElement implements Serializable { private static final long serialVersionUID = 240L; /** The name of the property used to store the arguments. */ public static final String ARGUMENTS = "Arguments.arguments"; //$NON-NLS-1$ /** * Create a new Arguments object with no arguments. */ public Arguments() { setProperty(new CollectionProperty(ARGUMENTS, new ArrayList())); } /** * Get the arguments. * * @return the arguments */ public CollectionProperty getArguments() { return (CollectionProperty) getProperty(ARGUMENTS); } /** * Clear the arguments. */ @Override public void clear() { super.clear(); setProperty(new CollectionProperty(ARGUMENTS, new ArrayList())); } /** * Set the list of arguments. Any existing arguments will be lost. * * @param arguments * the new arguments */ public void setArguments(List arguments) { setProperty(new CollectionProperty(ARGUMENTS, arguments)); } /** * Get the arguments as a Map. Each argument name is used as the key, and * its value as the value. * * @return a new Map with String keys and values containing the arguments */ public Map getArgumentsAsMap() { PropertyIterator iter = getArguments().iterator(); Map argMap = new LinkedHashMap(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); // Because CollectionProperty.mergeIn will not prevent adding two // properties of the same name, we need to select the first value so // that this element's values prevail over defaults provided by // configuration // elements: if (!argMap.containsKey(arg.getName())) { argMap.put(arg.getName(), arg.getValue()); } } return argMap; } /** * Add a new argument with the given name and value. * * @param name * the name of the argument * @param value * the value of the argument */ public void addArgument(String name, String value) { addArgument(new Argument(name, value, null)); } /** * Add a new argument. * * @param arg * the new argument */ public void addArgument(Argument arg) { TestElementProperty newArg = new TestElementProperty(arg.getName(), arg); if (isRunningVersion()) { this.setTemporary(newArg); } getArguments().addItem(newArg); } /** * Add a new argument with the given name, value, and metadata. * * @param name * the name of the argument * @param value * the value of the argument * @param metadata * the metadata for the argument */ public void addArgument(String name, String value, String metadata) { addArgument(new Argument(name, value, metadata)); } /** * Get a PropertyIterator of the arguments. * * @return an iteration of the arguments */ public PropertyIterator iterator() { return getArguments().iterator(); } /** * Create a string representation of the arguments. * * @return the string representation of the arguments */ @Override public String toString() { StringBuilder str = new StringBuilder(); PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); final String metaData = arg.getMetaData(); str.append(arg.getName()); if (metaData == null) { str.append("="); //$NON-NLS-1$ } else { str.append(metaData); } str.append(arg.getValue()); if (iter.hasNext()) { str.append("&"); //$NON-NLS-1$ } } return str.toString(); } /** * Remove the specified argument from the list. * * @param row * the index of the argument to remove */ public void removeArgument(int row) { if (row < getArguments().size()) { getArguments().remove(row); } } /** * Remove the specified argument from the list. * * @param arg * the argument to remove */ public void removeArgument(Argument arg) { PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { Argument item = (Argument) iter.next().getObjectValue(); if (arg.equals(item)) { iter.remove(); } } } /** * Remove the argument with the specified name. * * @param argName * the name of the argument to remove */ public void removeArgument(String argName) { PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); if (arg.getName().equals(argName)) { iter.remove(); } } } /** * Remove all arguments from the list. */ public void removeAllArguments() { getArguments().clear(); } /** * Add a new empty argument to the list. The new argument will have the * empty string as its name and value, and null metadata. */ public void addEmptyArgument() { addArgument(new Argument("", "", null)); } /** * Get the number of arguments in the list. * * @return the number of arguments */ public int getArgumentCount() { return getArguments().size(); } /** * Get a single argument. * * @param row * the index of the argument to return. * @return the argument at the specified index, or null if no argument * exists at that index. */ public Argument getArgument(int row) { Argument argument = null; if (row < getArguments().size()) { argument = (Argument) getArguments().get(row).getObjectValue(); } return argument; } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/Argument.java0000644000175000017500000001403112032647220024324 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.util.JOrphanUtils; /** * Class representing an argument. Each argument consists of a name/value pair, * as well as (optional) metadata. * */ public class Argument extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; /** Name used to store the argument's name. */ public static final String ARG_NAME = "Argument.name"; // $NON-NLS-1$ /** Name used to store the argument's value. */ public static final String VALUE = "Argument.value"; // $NON-NLS-1$ /** Name used to store the argument's description. */ public static final String DESCRIPTION = "Argument.desc"; // $NON-NLS-1$ private static final String DFLT_DESCRIPTION = ""; // $NON-NLS-1$ /** Name used to store the argument's metadata. */ public static final String METADATA = "Argument.metadata"; // $NON-NLS-1$ /** * Create a new Argument without a name, value, or metadata. */ public Argument() { } /** * Create a new Argument with the specified name and value, and no metadata. * * @param name * the argument name * @param value * the argument value */ public Argument(String name, String value) { setProperty(new StringProperty(ARG_NAME, name)); setProperty(new StringProperty(VALUE, value)); } /** * Create a new Argument with the specified name, value, and metadata. * * @param name * the argument name * @param value * the argument value * @param metadata * the argument metadata */ public Argument(String name, String value, String metadata) { setProperty(new StringProperty(ARG_NAME, name)); setProperty(new StringProperty(VALUE, value)); setProperty(new StringProperty(METADATA, metadata)); } /** * Create a new Argument with the specified name, value, and metadata. * * @param name * the argument name * @param value * the argument value * @param metadata * the argument metadata * @param description * the argument description */ public Argument(String name, String value, String metadata, String description) { setProperty(new StringProperty(ARG_NAME, name)); setProperty(new StringProperty(VALUE, value)); setProperty(new StringProperty(METADATA, metadata)); setProperty(DESCRIPTION, description, DFLT_DESCRIPTION); } /** * Set the name of the Argument. * * @param newName * the new name */ @Override public void setName(String newName) { setProperty(new StringProperty(ARG_NAME, newName)); } /** * Get the name of the Argument. * * @return the attribute's name */ @Override public String getName() { return getPropertyAsString(ARG_NAME); } /** * Sets the value of the Argument. * * @param newValue * the new value */ public void setValue(String newValue) { setProperty(new StringProperty(VALUE, newValue)); } /** * Gets the value of the Argument object. * * @return the attribute's value */ public String getValue() { return getPropertyAsString(VALUE); } /** * Sets the Description attribute of the Argument. * * @param description * the new description */ public void setDescription(String description) { setProperty(DESCRIPTION, description, DFLT_DESCRIPTION); } /** * Gets the Meta Data attribute of the Argument. * * @return the MetaData value */ public String getDescription() { return getPropertyAsString(DESCRIPTION, DFLT_DESCRIPTION); } /** * Sets the Meta Data attribute of the Argument. * * @param newMetaData * the new metadata */ public void setMetaData(String newMetaData) { setProperty(new StringProperty(METADATA, newMetaData)); } /** * Gets the Meta Data attribute of the Argument. * * @return the MetaData value */ public String getMetaData() { return getPropertyAsString(METADATA); } @Override public String toString() { return getName() + getMetaData() + getValue(); } /** * Is this parameter skippable, i.e. empty/blank string * or it looks like an unrecognised variable. * * @param parameterName - parameter name * @return true if parameter should be skipped */ public boolean isSkippable(String parameterName) { if (JOrphanUtils.isBlank(parameterName)){ return true; // Skip parameters with a blank name (allows use of optional variables in parameter lists) } // TODO: improve this test if (parameterName.trim().startsWith("${") && parameterName.endsWith("}")){// $NON-NLS-1$ $NON-NLS-2$ return true; // Missing variable name } return false; } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/LoginConfig.java0000644000175000017500000000457012032647220024747 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.io.Serializable; import org.apache.jmeter.testelement.property.StringProperty; public class LoginConfig extends ConfigTestElement implements Serializable // TODO: move this to components -- the only reason why it's in core is because // it's used as a guinea pig by a couple of tests. { private static final long serialVersionUID = 240L; /** * Constructor for the LoginConfig object. */ public LoginConfig() { } /** * Sets the Username attribute of the LoginConfig object. * * @param username * the new Username value */ public void setUsername(String username) { setProperty(new StringProperty(ConfigTestElement.USERNAME, username)); } /** * Sets the Password attribute of the LoginConfig object. * * @param password * the new Password value */ public void setPassword(String password) { setProperty(new StringProperty(ConfigTestElement.PASSWORD, password)); } /** * Gets the Username attribute of the LoginConfig object. * * @return the Username value */ public String getUsername() { return getPropertyAsString(ConfigTestElement.USERNAME); } /** * Gets the Password attribute of the LoginConfig object. * * @return the Password value */ public String getPassword() { return getPropertyAsString(ConfigTestElement.PASSWORD); } @Override public String toString() { return getUsername() + "=" + getPassword(); //$NON-NLS-1$ } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/0000755000175000017500000000000012165514773022501 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java0000644000175000017500000005651312032647220026266 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config.gui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.TableCellEditor; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; /** * A GUI panel allowing the user to enter name-value argument pairs. These * arguments (or parameters) are usually used to provide configuration values * for some other component. * */ public class ArgumentsPanel extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = 240L; /** The title label for this component. */ private JLabel tableLabel; /** The table containing the list of arguments. */ private transient JTable table; /** The model for the arguments table. */ protected transient ObjectTableModel tableModel; // will only contain Argument or HTTPArgument /** A button for adding new arguments to the table. */ private JButton add; /** A button for removing arguments from the table. */ private JButton delete; /** * Added background support for reporting tool */ private Color background; /** * Boolean indicating whether this component is a standalone component or it * is intended to be used as a subpanel for another component. */ private final boolean standalone; /** Button to move a argument up*/ private JButton up; /** Button to move a argument down*/ private JButton down; private final boolean enableUpDown; /** Command for adding a row to the table. */ private static final String ADD = "add"; // $NON-NLS-1$ /** Command for adding rows from the clipboard */ private static final String ADD_FROM_CLIPBOARD = "addFromClipboard"; // $NON-NLS-1$ /** Command for removing a row from the table. */ private static final String DELETE = "delete"; // $NON-NLS-1$ /** Command for moving a row up in the table. */ private static final String UP = "up"; // $NON-NLS-1$ /** Command for moving a row down in the table. */ private static final String DOWN = "down"; // $NON-NLS-1$ /** Command for showing detail. */ private static final String DETAIL = "detail"; // $NON-NLS-1$ public static final String COLUMN_RESOURCE_NAMES_0 = "name"; // $NON-NLS-1$ public static final String COLUMN_RESOURCE_NAMES_1 = "value"; // $NON-NLS-1$ public static final String COLUMN_RESOURCE_NAMES_2 = "description"; // $NON-NLS-1$ /** * Create a new ArgumentsPanel as a standalone component. */ public ArgumentsPanel() { this(JMeterUtils.getResString("user_defined_variables"),null, true, true);// $NON-NLS-1$ } /** * Create a new ArgumentsPanel as an embedded component, using the specified * title. * * @param label * the title for the component. */ public ArgumentsPanel(String label) { this(label, null, true, false); } /** * Create a new ArgumentsPanel as an embedded component, using the specified * title. * * @param label * the title for the component. * @param enableUpDown Add up/down buttons */ public ArgumentsPanel(String label, boolean enableUpDown) { this(label, null, enableUpDown, false); } /** * Create a new ArgumentsPanel with a border and color background * @param label text for label * @param bkg background colour */ public ArgumentsPanel(String label, Color bkg) { this(label, bkg, true, false); } /** * Create a new ArgumentsPanel with a border and color background * @param label text for label * @param bkg background colour * @param enableUpDown Add up/down buttons * @param standalone is standalone */ public ArgumentsPanel(String label, Color bkg, boolean enableUpDown, boolean standalone) { this(label, bkg, enableUpDown, standalone, null); } /** * Create a new ArgumentsPanel with a border and color background * @param label text for label * @param bkg background colour * @param enableUpDown Add up/down buttons * @param standalone is standalone * @param model the table model to use */ public ArgumentsPanel(String label, Color bkg, boolean enableUpDown, boolean standalone, ObjectTableModel model) { tableLabel = new JLabel(label); this.enableUpDown = enableUpDown; this.background = bkg; this.standalone = standalone; this.tableModel = model; init(); } /** * This is the list of menu categories this gui component will be available * under. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ @Override public Collection getMenuCategories() { if (standalone) { return super.getMenuCategories(); } return null; } public String getLabelResource() { return "user_defined_variables"; // $NON-NLS-1$ } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { Arguments args = new Arguments(); modifyTestElement(args); return args; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement args) { GuiUtils.stopTableEditing(table); Arguments arguments = null; if (args instanceof Arguments) { arguments = (Arguments) args; arguments.clear(); @SuppressWarnings("unchecked") // only contains Argument (or HTTPArgument) Iterator modelData = (Iterator) tableModel.iterator(); while (modelData.hasNext()) { Argument arg = modelData.next(); if(StringUtils.isEmpty(arg.getName()) && StringUtils.isEmpty(arg.getValue())) { continue; } arg.setMetaData("="); // $NON-NLS-1$ arguments.addArgument(arg); } } this.configureTestElement(args); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param el * the TestElement to configure */ @Override public void configure(TestElement el) { super.configure(el); if (el instanceof Arguments) { tableModel.clearData(); PropertyIterator iter = ((Arguments) el).iterator(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); tableModel.addRow(arg); } } checkDeleteStatus(); } /** * Get the table used to enter arguments. * * @return the table used to enter arguments */ protected JTable getTable() { return table; } /** * Get the title label for this component. * * @return the title label displayed with the table */ protected JLabel getTableLabel() { return tableLabel; } /** * Get the button used to delete rows from the table. * * @return the button used to delete rows from the table */ protected JButton getDeleteButton() { return delete; } /** * Get the button used to add rows to the table. * * @return the button used to add rows to the table */ protected JButton getAddButton() { return add; } /** * Enable or disable the delete button depending on whether or not there is * a row to be deleted. */ protected void checkDeleteStatus() { // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { delete.setEnabled(false); } else { delete.setEnabled(true); } if(enableUpDown && tableModel.getRowCount()>1) { up.setEnabled(true); down.setEnabled(true); } } @Override public void clearGui(){ super.clearGui(); clear(); } /** * Clear all rows from the table. T.Elanjchezhiyan(chezhiyan@siptech.co.in) */ public void clear() { GuiUtils.stopTableEditing(table); tableModel.clearData(); } /** * Invoked when an action occurs. This implementation supports the add and * delete buttons. * * @param e * the event that has occurred */ public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(DELETE)) { deleteArgument(); } else if (action.equals(ADD)) { addArgument(); } else if (action.equals(ADD_FROM_CLIPBOARD)) { addFromClipboard(); } else if (action.equals(UP)) { moveUp(); } else if (action.equals(DOWN)) { moveDown(); } else if (action.equals(DETAIL)) { showDetail(); } } /** * Cancel cell editing if it is being edited */ private void cancelEditing() { // If a table cell is being edited, we must cancel the editing before // deleting the row if (table.isEditing()) { TableCellEditor cellEditor = table.getCellEditor(table.getEditingRow(), table.getEditingColumn()); cellEditor.cancelCellEditing(); } } /** * Move a row down */ private void moveDown() { cancelEditing(); int[] rowsSelected = table.getSelectedRows(); if (rowsSelected.length > 0 && rowsSelected[rowsSelected.length - 1] < table.getRowCount() - 1) { table.clearSelection(); for (int i = rowsSelected.length - 1; i >= 0; i--) { int rowSelected = rowsSelected[i]; tableModel.moveRow(rowSelected, rowSelected + 1, rowSelected + 1); } for (int rowSelected : rowsSelected) { table.addRowSelectionInterval(rowSelected + 1, rowSelected + 1); } } } /** * Move a row down */ private void moveUp() { cancelEditing(); int[] rowsSelected = table.getSelectedRows(); if (rowsSelected.length > 0 && rowsSelected[0] > 0) { table.clearSelection(); for (int rowSelected : rowsSelected) { tableModel.moveRow(rowSelected, rowSelected + 1, rowSelected - 1); } for (int rowSelected : rowsSelected) { table.addRowSelectionInterval(rowSelected - 1, rowSelected - 1); } } } /** * Show Row Detail */ private void showDetail() { cancelEditing(); int[] rowsSelected = table.getSelectedRows(); if (rowsSelected.length == 1) { table.clearSelection(); RowDetailDialog detailDialog = new RowDetailDialog(tableModel, rowsSelected[0]); detailDialog.setVisible(true); } } /** * Remove the currently selected argument from the table. */ protected void deleteArgument() { cancelEditing(); int[] rowsSelected = table.getSelectedRows(); int anchorSelection = table.getSelectionModel().getAnchorSelectionIndex(); table.clearSelection(); if (rowsSelected.length > 0) { for (int i = rowsSelected.length - 1; i >= 0; i--) { tableModel.removeRow(rowsSelected[i]); } // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { delete.setEnabled(false); } // Table still contains one or more rows, so highlight (select) // the appropriate one. else if (tableModel.getRowCount() > 0) { if (anchorSelection >= tableModel.getRowCount()) { anchorSelection = tableModel.getRowCount() - 1; } table.setRowSelectionInterval(anchorSelection, anchorSelection); } if(enableUpDown && tableModel.getRowCount()>1) { up.setEnabled(true); down.setEnabled(true); } } } /** * Add a new argument row to the table. */ protected void addArgument() { // If a table cell is being edited, we should accept the current value // and stop the editing before adding a new row. GuiUtils.stopTableEditing(table); tableModel.addRow(makeNewArgument()); // Enable DELETE (which may already be enabled, but it won't hurt) delete.setEnabled(true); if(enableUpDown && tableModel.getRowCount()>1) { up.setEnabled(true); down.setEnabled(true); } // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; table.setRowSelectionInterval(rowToSelect, rowToSelect); } /** * Add values from the clipboard */ protected void addFromClipboard() { GuiUtils.stopTableEditing(table); int rowCount = table.getRowCount(); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable trans = clipboard.getContents(null); DataFlavor[] flavourList = trans.getTransferDataFlavors(); Collection flavours = new ArrayList(flavourList.length); if (Collections.addAll(flavours, flavourList) && flavours.contains(DataFlavor.stringFlavor)) { try { String clipboardContent = (String) trans.getTransferData(DataFlavor.stringFlavor); String[] clipboardLines = clipboardContent.split("\n"); for (String clipboardLine : clipboardLines) { String[] clipboardCols = clipboardLine.split("\t"); if (clipboardCols.length > 0) { Argument argument = makeNewArgument(); argument.setName(clipboardCols[0]); if (clipboardCols.length > 1) { argument.setValue(clipboardCols[1]); if (clipboardCols.length > 2) { argument.setDescription(clipboardCols[2]); } } tableModel.addRow(argument); } } } catch (IOException ioe) { JOptionPane.showMessageDialog(this, "Could not add read arguments from clipboard:\n" + ioe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE); } catch (UnsupportedFlavorException ufe) { JOptionPane.showMessageDialog(this, "Could not add retrieve " + DataFlavor.stringFlavor.getHumanPresentableName() + " from clipboard" + ufe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE); } if (table.getRowCount() > rowCount) { // Enable DELETE (which may already be enabled, but it won't hurt) delete.setEnabled(true); // Highlight (select) the appropriate rows. int rowToSelect = tableModel.getRowCount() - 1; table.setRowSelectionInterval(rowCount, rowToSelect); } } } /** * Create a new Argument object. * * @return a new Argument object */ protected Argument makeNewArgument() { return new Argument("", ""); // $NON-NLS-1$ // $NON-NLS-2$ } /** * Stop any editing that is currently being done on the table. This will * save any changes that have already been made. * Needed for subclasses */ protected void stopTableEditing() { GuiUtils.stopTableEditing(table); } /** * Initialize the table model used for the arguments table. */ protected void initializeTableModel() { if (tableModel == null) { if(standalone) { tableModel = new ObjectTableModel(new String[] { COLUMN_RESOURCE_NAMES_0, COLUMN_RESOURCE_NAMES_1, COLUMN_RESOURCE_NAMES_2 }, Argument.class, new Functor[] { new Functor("getName"), // $NON-NLS-1$ new Functor("getValue"), // $NON-NLS-1$ new Functor("getDescription") }, // $NON-NLS-1$ new Functor[] { new Functor("setName"), // $NON-NLS-1$ new Functor("setValue"), // $NON-NLS-1$ new Functor("setDescription") }, // $NON-NLS-1$ new Class[] { String.class, String.class, String.class }); } else { tableModel = new ObjectTableModel(new String[] { COLUMN_RESOURCE_NAMES_0, COLUMN_RESOURCE_NAMES_1 }, Argument.class, new Functor[] { new Functor("getName"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { new Functor("setName"), // $NON-NLS-1$ new Functor("setValue") }, // $NON-NLS-1$ new Class[] { String.class, String.class }); } } } public static boolean testFunctors(){ ArgumentsPanel instance = new ArgumentsPanel(); instance.initializeTableModel(); return instance.tableModel.checkFunctors(null,instance.getClass()); } /** * Resize the table columns to appropriate widths. * * @param _table * the table to resize columns for */ protected void sizeColumns(JTable _table) { } /** * Create the main GUI panel which contains the argument table. * * @return the main GUI panel */ private Component makeMainPanel() { initializeTableModel(); table = new JTable(tableModel); table.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); if (this.background != null) { table.setBackground(this.background); } return makeScrollPane(table); } /** * Create a panel containing the title label for the table. * * @return a panel containing the title label */ protected Component makeLabelPanel() { JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); labelPanel.add(tableLabel); if (this.background != null) { labelPanel.setBackground(this.background); } return labelPanel; } /** * Create a panel containing the add and delete buttons. * * @return a GUI panel containing the buttons */ private JPanel makeButtonPanel() { JButton showDetail = new JButton(JMeterUtils.getResString("detail")); // $NON-NLS-1$ showDetail.setActionCommand(DETAIL); showDetail.setEnabled(true); add = new JButton(JMeterUtils.getResString("add")); // $NON-NLS-1$ add.setActionCommand(ADD); add.setEnabled(true); /** A button for adding new arguments to the table from the clipboard. */ JButton addFromClipboard = new JButton(JMeterUtils.getResString("add_from_clipboard")); // $NON-NLS-1$ addFromClipboard.setActionCommand(ADD_FROM_CLIPBOARD); addFromClipboard.setEnabled(true); delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ delete.setActionCommand(DELETE); if(enableUpDown) { up = new JButton(JMeterUtils.getResString("up")); // $NON-NLS-1$ up.setActionCommand(UP); down = new JButton(JMeterUtils.getResString("down")); // $NON-NLS-1$ down.setActionCommand(DOWN); } checkDeleteStatus(); JPanel buttonPanel = new JPanel(); buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10)); if (this.background != null) { buttonPanel.setBackground(this.background); } showDetail.addActionListener(this); add.addActionListener(this); addFromClipboard.addActionListener(this); delete.addActionListener(this); buttonPanel.add(showDetail); buttonPanel.add(add); buttonPanel.add(addFromClipboard); buttonPanel.add(delete); if(enableUpDown) { up.addActionListener(this); down.addActionListener(this); buttonPanel.add(up); buttonPanel.add(down); } return buttonPanel; } /** * Initialize the components and layout of this component. */ private void init() { JPanel p = this; if (standalone) { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); p = new JPanel(); } p.setLayout(new BorderLayout()); p.add(makeLabelPanel(), BorderLayout.NORTH); p.add(makeMainPanel(), BorderLayout.CENTER); // Force a minimum table height of 70 pixels p.add(Box.createVerticalStrut(70), BorderLayout.WEST); p.add(makeButtonPanel(), BorderLayout.SOUTH); if (standalone) { add(p, BorderLayout.CENTER); } table.revalidate(); sizeColumns(table); } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/AbstractConfigGui.java0000644000175000017500000000453112032647220026670 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config.gui; import java.util.Arrays; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * This is the base class for JMeter GUI components which provide configuration * for some other component. * */ public abstract class AbstractConfigGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

    * This implementation returns menu items appropriate for most configuration * components. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultConfigElementMenu(); } /** * This is the list of menu categories this gui component will be available * under. This implementation returns * {@link org.apache.jmeter.gui.util.MenuFactory#CONFIG_ELEMENTS}, which is * appropriate for most configuration components. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.CONFIG_ELEMENTS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/RowDetailDialog.java0000644000175000017500000001666112032647220026353 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRootPane; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.gui.JLabeledTextArea; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.gui.ObjectTableModel; /** * Show detail of a Row */ public class RowDetailDialog extends JDialog implements ActionListener { /** * */ private static final long serialVersionUID = 6578889215615435475L; /** Command for moving a row up in the table. */ private static final String NEXT = "next"; // $NON-NLS-1$ /** Command for moving a row down in the table. */ private static final String PREVIOUS = "previous"; // $NON-NLS-1$ /** Command for CANCEL. */ private static final String CLOSE = "close"; // $NON-NLS-1$ private static final String UPDATE = "update"; // $NON-NLS-1$ private JLabeledTextField nameTF; private JLabeledTextArea valueTA; private JButton nextButton; private JButton previousButton; private ObjectTableModel tableModel; private int selectedRow; public RowDetailDialog() { super(); } public RowDetailDialog(ObjectTableModel tableModel, int selectedRow) { super((JFrame) null, JMeterUtils.getResString("detail"), true); //$NON-NLS-1$ this.tableModel = tableModel; this.selectedRow = selectedRow; init(); } @Override protected JRootPane createRootPane() { JRootPane rootPane = new JRootPane(); // Hide Window on ESC Action escapeAction = new AbstractAction("ESCAPE") { /** * */ private static final long serialVersionUID = -8699034338969407625L; public void actionPerformed(ActionEvent actionEvent) { setVisible(false); } }; // Do update on Enter Action enterAction = new AbstractAction("ENTER") { /** * */ private static final long serialVersionUID = -1529005452976176873L; public void actionPerformed(ActionEvent actionEvent) { doUpdate(actionEvent); setVisible(false); } }; ActionMap actionMap = rootPane.getActionMap(); actionMap.put(escapeAction.getValue(Action.NAME), escapeAction); actionMap.put(enterAction.getValue(Action.NAME), enterAction); InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(KeyStrokes.ESC, escapeAction.getValue(Action.NAME)); inputMap.put(KeyStrokes.ENTER, enterAction.getValue(Action.NAME)); return rootPane; } private void init() { this.getContentPane().setLayout(new BorderLayout(10,10)); nameTF = new JLabeledTextField(JMeterUtils.getResString("name"), 20); //$NON-NLS-1$ valueTA = new JLabeledTextArea(JMeterUtils.getResString("value")); //$NON-NLS-1$ valueTA.setPreferredSize(new Dimension(450, 300)); setValues(selectedRow); JPanel detailPanel = new JPanel(); detailPanel.setLayout(new BorderLayout()); //detailPanel.setBorder(BorderFactory.createEmptyBorder(7, 3, 3, 3)); detailPanel.add(nameTF, BorderLayout.NORTH); detailPanel.add(valueTA, BorderLayout.CENTER); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.setBorder(BorderFactory.createEmptyBorder(7, 3, 3, 3)); mainPanel.add(detailPanel, BorderLayout.CENTER); JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); JButton updateButton = new JButton(JMeterUtils.getResString("update")); //$NON-NLS-1$ updateButton.setActionCommand(UPDATE); updateButton.addActionListener(this); JButton closeButton = new JButton(JMeterUtils.getResString("close")); //$NON-NLS-1$ closeButton.setActionCommand(CLOSE); closeButton.addActionListener(this); nextButton = new JButton(JMeterUtils.getResString("next")); //$NON-NLS-1$ nextButton.setActionCommand(NEXT); nextButton.addActionListener(this); nextButton.setEnabled(selectedRow < tableModel.getRowCount()-1); previousButton = new JButton(JMeterUtils.getResString("previous")); //$NON-NLS-1$ previousButton.setActionCommand(PREVIOUS); previousButton.addActionListener(this); previousButton.setEnabled(selectedRow > 0); buttonsPanel.add(updateButton); buttonsPanel.add(previousButton); buttonsPanel.add(nextButton); buttonsPanel.add(closeButton); mainPanel.add(buttonsPanel, BorderLayout.SOUTH); this.getContentPane().add(mainPanel); nameTF.requestFocusInWindow(); this.pack(); ComponentUtil.centerComponentInWindow(this); } /** * Do search * @param e {@link ActionEvent} */ public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if(action.equals(CLOSE)) { this.setVisible(false); } else if(action.equals(NEXT)) { selectedRow++; previousButton.setEnabled(true); nextButton.setEnabled(selectedRow < tableModel.getRowCount()-1); setValues(selectedRow); } else if(action.equals(PREVIOUS)) { selectedRow--; nextButton.setEnabled(true); previousButton.setEnabled(selectedRow > 0); setValues(selectedRow); } else if(action.equals(UPDATE)) { doUpdate(e); } } /** * Set TextField and TA values from model * @param selectedRow Selected row */ private void setValues(int selectedRow) { nameTF.setText((String)tableModel.getValueAt(selectedRow, 0)); valueTA.setText((String)tableModel.getValueAt(selectedRow, 1)); } /** * Update model values * @param actionEvent */ protected void doUpdate(ActionEvent actionEvent) { tableModel.setValueAt(nameTF.getText(), selectedRow, 0); tableModel.setValueAt(valueTA.getText(), selectedRow, 1); } }apache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/SimpleConfigGui.java0000644000175000017500000002416012032647220026356 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.config.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.TableCellEditor; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.PowerTableModel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.Data; import org.apache.jorphan.gui.GuiUtils; /** * Default config gui for Configuration Element. */ public class SimpleConfigGui extends AbstractConfigGui implements ActionListener { /* This class created for enhancement Bug ID 9101. */ private static final long serialVersionUID = 240L; // TODO: This class looks a lot like ArgumentsPanel. What exactly is the // difference? Could they be combined? // Note: it seems that this class is not actually used ... /** The table of configuration parameters. */ private JTable table; /** The model for the parameter table. */ private PowerTableModel tableModel; /** A button for removing parameters from the table. */ private JButton delete; /** Command for adding a row to the table. */ private static final String ADD = "add"; /** Command for removing a row from the table. */ private static final String DELETE = "delete"; /** * Boolean indicating whether or not this component should display its name. * If true, this is a standalone component. If false, this component is * intended to be used as a subpanel for another component. */ private final boolean displayName; /** The resource names of the columns in the table. */ private static final String COLUMN_NAMES_0 = "name"; // $NON-NLS-1$ private static final String COLUMN_NAMES_1 = "value"; // $NON-NLS-1$ /** * Create a new standalone SimpleConfigGui. */ public SimpleConfigGui() { this(true); } /** * Create a new SimpleConfigGui as either a standalone or an embedded * component. * * @param displayName * indicates whether or not this component should display its * name. If true, this is a standalone component. If false, this * component is intended to be used as a subpanel for another * component. */ public SimpleConfigGui(boolean displayName) { this.displayName = displayName; init(); } public String getLabelResource() { return "simple_config_element"; // $NON-NLS-1$ } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. *

    * This implementation retrieves all key/value pairs from the TestElement * object and sets these values in the GUI. * * @param el * the TestElement to configure */ @Override public void configure(TestElement el) { super.configure(el); tableModel.clearData(); PropertyIterator iter = el.propertyIterator(); while (iter.hasNext()) { JMeterProperty prop = iter.next(); tableModel.addRow(new Object[] { prop.getName(), prop.getStringValue() }); } checkDeleteStatus(); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { TestElement el = new ConfigTestElement(); modifyTestElement(el); return el; } /** * Get all of the values from the GUI component and set them in the * TestElement. * * @param el * the TestElement to modify */ public void modifyTestElement(TestElement el) { GuiUtils.stopTableEditing(table); Data model = tableModel.getData(); model.reset(); while (model.next()) { el.setProperty(new StringProperty((String) model.getColumnValue(COLUMN_NAMES_0), (String) model .getColumnValue(COLUMN_NAMES_1))); } super.configureTestElement(el); } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout(0, 10)); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } add(createTablePanel(), BorderLayout.CENTER); // Force the table to be at least 70 pixels high add(Box.createVerticalStrut(70), BorderLayout.WEST); add(createButtonPanel(), BorderLayout.SOUTH); } /** * Invoked when an action occurs. This implementation supports the add and * delete buttons. * * @param e * the event that has occurred */ public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(DELETE)) { deleteArgument(); } else if (action.equals(ADD)) { addArgument(); } } /** * Create a GUI panel containing the table of configuration parameters. * * @return a GUI panel containing the parameter table */ private Component createTablePanel() { tableModel = new PowerTableModel( new String[] { COLUMN_NAMES_0, COLUMN_NAMES_1 }, new Class[] { String.class, String.class }); table = new JTable(tableModel); table.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); return makeScrollPane(table); } /** * Create a panel containing the add and delete buttons. * * @return a GUI panel containing the buttons */ private JPanel createButtonPanel() { /** A button for adding new parameters to the table. */ JButton add = new JButton(JMeterUtils.getResString("add")); //$NON-NLS-1$ add.setActionCommand(ADD); add.addActionListener(this); add.setEnabled(true); delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ delete.setActionCommand(DELETE); delete.addActionListener(this); checkDeleteStatus(); JPanel buttonPanel = new JPanel(); buttonPanel.add(add); buttonPanel.add(delete); return buttonPanel; } /** * Enable or disable the delete button depending on whether or not there is * a row to be deleted. */ protected void checkDeleteStatus() { // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { delete.setEnabled(false); } else { delete.setEnabled(true); } } /** * Add a new argument row to the table. */ protected void addArgument() { // If a table cell is being edited, we should accept the current value // and stop the editing before adding a new row. GuiUtils.stopTableEditing(table); tableModel.addNewRow(); tableModel.fireTableDataChanged(); // Enable DELETE (which may already be enabled, but it won't hurt) delete.setEnabled(true); // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; table.setRowSelectionInterval(rowToSelect, rowToSelect); } /** * Stop any editing that is currently being done on the table. This will * save any changes that have already been made. */ protected void stopTableEditing() { GuiUtils.stopTableEditing(table); } /** * Remove the currently selected argument from the table. */ protected void deleteArgument() { // If a table cell is being edited, we must cancel the editing before // deleting the row if (table.isEditing()) { TableCellEditor cellEditor = table.getCellEditor(table.getEditingRow(), table.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = table.getSelectedRow(); if (rowSelected >= 0) { // removeProperty(tableModel.getValueAt ( // table.getSelectedRow(),0).toString()); tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { delete.setEnabled(false); } else { // Table still contains one or more rows, so highlight (select) // the appropriate one. int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } table.setRowSelectionInterval(rowToSelect, rowToSelect); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/ObsoleteGui.java0000644000175000017500000000413112032647220025547 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.config.gui; import java.awt.BorderLayout; import java.util.Collection; import javax.swing.JLabel; import javax.swing.JPopupMenu; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * Default config gui for Configuration Element. */ public class ObsoleteGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; private final JLabel obsoleteMessage = new JLabel(JMeterUtils.getResString("obsolete_test_element")); // $NON-NLS-1$ public ObsoleteGui(){ init(); } private void init() { setLayout(new BorderLayout(0, 10)); setBorder(makeBorder()); //add(makeTitlePanel(), BorderLayout.NORTH); add(obsoleteMessage,BorderLayout.WEST); } public String getLabelResource() { return "obsolete_test_element"; // $NON-NLS-1$ } public TestElement createTestElement() { return new ConfigTestElement(); } public void modifyTestElement(TestElement element) { } public JPopupMenu createPopupMenu() { return null; } public Collection getMenuCategories() { return null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/gui/LoginConfigGui.java0000644000175000017500000001315112032647220026173 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config.gui; import java.awt.BorderLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; /** * A GUI component allowing the user to enter a username and password for a * login. * */ public class LoginConfigGui extends AbstractConfigGui { private static final long serialVersionUID = 240L; /** Field allowing the user to enter a username. */ private final JTextField username = new JTextField(15); /** Field allowing the user to enter a password. */ private final JPasswordField password = new JPasswordField(15); /** * Boolean indicating whether or not this component should display its name. * If true, this is a standalone component. If false, this component is * intended to be used as a subpanel for another component. */ private boolean displayName = true; /** * Create a new LoginConfigGui as a standalone component. */ public LoginConfigGui() { this(true); } /** * Create a new LoginConfigGui as either a standalone or an embedded * component. * * @param displayName * indicates whether or not this component should display its * name. If true, this is a standalone component. If false, this * component is intended to be used as a subpanel for another * component. */ public LoginConfigGui(boolean displayName) { this.displayName = displayName; init(); } public String getLabelResource() { return "login_config_element"; // $NON-NLS-1$ } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); username.setText(element.getPropertyAsString(ConfigTestElement.USERNAME)); password.setText(element.getPropertyAsString(ConfigTestElement.PASSWORD)); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { ConfigTestElement element = new ConfigTestElement(); modifyTestElement(element); return element; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { configureTestElement(element); element.setProperty(new StringProperty(ConfigTestElement.USERNAME, username.getText())); String passwordString = new String(password.getPassword()); element.setProperty(new StringProperty(ConfigTestElement.PASSWORD, passwordString)); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); username.setText(""); //$NON-NLS-1$ password.setText(""); //$NON-NLS-1$ } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout(0, 5)); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } VerticalPanel mainPanel = new VerticalPanel(); mainPanel.add(createUsernamePanel()); mainPanel.add(createPasswordPanel()); add(mainPanel, BorderLayout.CENTER); } /** * Create a panel containing the username field and corresponding label. * * @return a GUI panel containing the username field */ private JPanel createUsernamePanel() { JPanel panel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("username")); // $NON-NLS-1$ label.setLabelFor(username); panel.add(label, BorderLayout.WEST); panel.add(username, BorderLayout.CENTER); return panel; } /** * Create a panel containing the password field and corresponding label. * * @return a GUI panel containing the password field */ private JPanel createPasswordPanel() { JPanel panel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("password")); // $NON-NLS-1$ label.setLabelFor(password); panel.add(label, BorderLayout.WEST); panel.add(password, BorderLayout.CENTER); return panel; } } apache-jmeter-2.8/src/core/org/apache/jmeter/config/ConfigElement.java0000644000175000017500000000425712032647220025272 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; public interface ConfigElement extends Cloneable { /** * Add a configuration element to this one. This allows config elements to * combine and give a "layered" effect. For example, * HTTPConfigElements have properties for domain, path, method, and * parameters. If element A has everything filled in, but null for domain, * and element B is added, which has only domain filled in, then after * adding B to A, A will have the domain from B. If A already had a domain, * then the correct behavior is for A to ignore the addition of element B. * * @param config * the element to be added to this ConfigElement */ void addConfigElement(ConfigElement config); /** * If your config element expects to be modified in the process of a test * run, and you want those modifications to carry over from sample to sample * (as in a cookie manager - you want to save all cookies that get set * throughout the test), then return true for this method. Your config * element will not be cloned for each sample. If your config elements are * more static in nature, return false. If in doubt, return false. * * @return true if the element expects to be modified over the course of a * test run */ boolean expectsModification(); Object clone(); } apache-jmeter-2.8/src/core/org/apache/jmeter/util/0000755000175000017500000000000012165514773021425 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/util/ShutdownClient.java0000644000175000017500000000344312032647221025232 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import org.apache.jmeter.JMeter; /** * Simple utility to send a shutdown message to a non-GUI instance of JMeter */ public class ShutdownClient { public static void main(String[] args) throws IOException { int port = JMeter.UDP_PORT_DEFAULT; if (args.length > 1){ port = Integer.parseInt(args[1]); } else if (args.length == 0) { throw new RuntimeException("Usage: command [port]"); } String command = args[0]; System.out.println("Sending "+command+" request to port "+port); DatagramSocket socket = new DatagramSocket(); byte[] buf = command.getBytes("ASCII"); InetAddress address = InetAddress.getByName("localhost"); DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port); socket.send(packet); socket.close(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/BSFBeanInfoSupport.java0000644000175000017500000000311312032647221025663 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.util.Arrays; import java.util.Properties; /** * Parent class to handle common GUI design for BSF test elements */ public abstract class BSFBeanInfoSupport extends ScriptingBeanInfoSupport { private static final String[] LANGUAGE_TAGS; static { Properties languages = JMeterUtils.loadProperties("org/apache/bsf/Languages.properties"); // $NON-NLS-1$ LANGUAGE_TAGS = new String[languages.size() + 1]; int i = 0; for (Object language : languages.keySet()) { LANGUAGE_TAGS[i++] = language.toString(); } LANGUAGE_TAGS[i] = "jexl"; // $NON-NLS-1$ Arrays.sort(LANGUAGE_TAGS); } protected BSFBeanInfoSupport(Class beanClass) { super(beanClass, LANGUAGE_TAGS); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/LocaleChangeListener.java0000644000175000017500000000164012032647221026270 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; public interface LocaleChangeListener { void localeChanged(LocaleChangeEvent event); } apache-jmeter-2.8/src/core/org/apache/jmeter/util/BSFTestElement.java0000644000175000017500000001626312032647221025050 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.util; import java.io.File; import java.io.IOException; import java.io.PrintStream; import java.io.Serializable; import java.util.Properties; import org.apache.bsf.BSFEngine; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.commons.io.FileUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public abstract class BSFTestElement extends AbstractTestElement implements Serializable, Cloneable { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); static { BSFManager.registerScriptingEngine("jexl", //$NON-NLS-1$ "org.apache.commons.jexl.bsf.JexlEngine", //$NON-NLS-1$ new String[]{"jexl"}); //$NON-NLS-1$ log.info("Registering JMeter version of JavaScript engine as work-round for BSF-22"); BSFManager.registerScriptingEngine("javascript", //$NON-NLS-1$ "org.apache.jmeter.util.BSFJavaScriptEngine", //$NON-NLS-1$ new String[]{"js"}); //$NON-NLS-1$ } //++ For TestBean implementations only private String parameters; // passed to file or script private String filename; // file to source (overrides script) private String script; // script (if file not provided) private String scriptLanguage; // BSF language to use //-- For TestBean implementations only public BSFTestElement() { super(); init(); } private void init() { parameters=""; // ensure variables are not null filename=""; script=""; scriptLanguage=""; } protected Object readResolve() { init(); return this; } @Override public Object clone() { BSFTestElement o = (BSFTestElement) super.clone(); o.init(); return o; } protected BSFManager getManager() throws BSFException { BSFManager mgr = new BSFManager(); initManager(mgr); return mgr; } protected void initManager(BSFManager mgr) throws BSFException{ final String label = getName(); final String fileName = getFilename(); final String scriptParameters = getParameters(); // Use actual class name for log final Logger logger = LoggingManager.getLoggerForShortName(getClass().getName()); mgr.declareBean("log", logger, Logger.class); // $NON-NLS-1$ mgr.declareBean("Label",label, String.class); // $NON-NLS-1$ mgr.declareBean("FileName",fileName, String.class); // $NON-NLS-1$ mgr.declareBean("Parameters", scriptParameters, String.class); // $NON-NLS-1$ String [] args=JOrphanUtils.split(scriptParameters, " ");//$NON-NLS-1$ mgr.declareBean("args",args,args.getClass());//$NON-NLS-1$ // Add variables for access to context and variables JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); Properties props = JMeterUtils.getJMeterProperties(); mgr.declareBean("ctx", jmctx, jmctx.getClass()); // $NON-NLS-1$ mgr.declareBean("vars", vars, vars.getClass()); // $NON-NLS-1$ mgr.declareBean("props", props, props.getClass()); // $NON-NLS-1$ // For use in debugging: mgr.declareBean("OUT", System.out, PrintStream.class); // $NON-NLS-1$ // Most subclasses will need these: Sampler sampler = jmctx.getCurrentSampler(); mgr.declareBean("sampler", sampler, Sampler.class); SampleResult prev = jmctx.getPreviousResult(); mgr.declareBean("prev", prev, SampleResult.class); } protected void processFileOrScript(BSFManager mgr) throws BSFException{ BSFEngine bsfEngine = mgr.loadScriptingEngine(getScriptLanguage()); final String scriptFile = getFilename(); if (scriptFile.length() == 0) { bsfEngine.exec("[script]",0,0,getScript()); } else {// we have a file, read and process it try { String script=FileUtils.readFileToString(new File(scriptFile)); bsfEngine.exec(scriptFile,0,0,script); } catch (IOException e) { log.warn(e.getLocalizedMessage()); throw new BSFException(BSFException.REASON_IO_ERROR,"Problem reading script file",e); } } } protected Object evalFileOrScript(BSFManager mgr) throws BSFException{ BSFEngine bsfEngine = mgr.loadScriptingEngine(getScriptLanguage()); final String scriptFile = getFilename(); if (scriptFile.length() == 0) { return bsfEngine.eval("[script]",0,0,getScript()); } else {// we have a file, read and process it try { String script=FileUtils.readFileToString(new File(scriptFile)); return bsfEngine.eval(scriptFile,0,0,script); } catch (IOException e) { log.warn(e.getLocalizedMessage()); throw new BSFException(BSFException.REASON_IO_ERROR,"Problem reading script file",e); } } } /** * Return the script (TestBean version). * Must be overridden for subclasses that don't implement TestBean * otherwise the clone() method won't work. * * @return the script to execute */ public String getScript(){ return script; } /** * Set the script (TestBean version). * Must be overridden for subclasses that don't implement TestBean * otherwise the clone() method won't work. * * @param s the script to execute (may be blank) */ public void setScript(String s){ script=s; } public String getParameters() { return parameters; } public void setParameters(String s) { parameters = s; } public String getFilename() { return filename; } public void setFilename(String s) { filename = s; } public String getScriptLanguage() { return scriptLanguage; } public void setScriptLanguage(String s) { scriptLanguage = s; } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/SlowSocket.java0000644000175000017500000000664312032647221024362 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.UnknownHostException; /** * "Slow" (non-SSL) socket implementation to emulate dial-up modems etc */ public class SlowSocket extends Socket { private final int CPS; // Characters per second to emulate public SlowSocket(final int cps, String host, int port, InetAddress localAddress, int localPort, int timeout) throws IOException { super(); if (cps <=0) { throw new IllegalArgumentException("Speed (cps) <= 0"); } CPS=cps; // This sequence is borrowed from: // org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); SocketAddress remoteaddr = new InetSocketAddress(host, port); bind(localaddr); connect(remoteaddr, timeout); } /** * * @param cps characters per second * @param host hostname * @param port port * @param localAddr local address * @param localPort local port * * @throws IOException * @throws IllegalArgumentException if cps <=0 */ public SlowSocket(int cps, String host, int port, InetAddress localAddr, int localPort) throws IOException { super(host, port, localAddr, localPort); if (cps <=0) { throw new IllegalArgumentException("Speed (cps) <= 0"); } CPS=cps; } /** * * @param cps characters per second * @param host hostname * @param port port * * @throws UnknownHostException * @throws IOException * @throws IllegalArgumentException if cps <=0 */ public SlowSocket(int cps, String host, int port) throws UnknownHostException, IOException { super(host, port); if (cps <=0) { throw new IllegalArgumentException("Speed (cps) <= 0"); } CPS=cps; } /** * Added for use by SlowHC4SocketFactory. * * @param cps */ public SlowSocket(int cps) { super(); CPS = cps; } // Override so we can intercept the stream @Override public OutputStream getOutputStream() throws IOException { return new SlowOutputStream(super.getOutputStream(), CPS); } // Override so we can intercept the stream @Override public InputStream getInputStream() throws IOException { return new SlowInputStream(super.getInputStream(), CPS); } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/SlowOutputStream.java0000644000175000017500000000321512032647221025576 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; /** * OutputStream filter to emulate a slow device, e.g. modem * */ public class SlowOutputStream extends FilterOutputStream { private final CPSPauser pauser; /** * Create wrapped Output Stream toe emulate the requested CPS. * @param out OutputStream * @param cps characters per second */ public SlowOutputStream(OutputStream out, int cps) { super(out); pauser = new CPSPauser(cps); } // Also handles write(byte[]) @Override public void write(byte[] b, int off, int len) throws IOException { pauser.pause(len); out.write(b, off, len); } @Override public void write(int b) throws IOException { pauser.pause(1); out.write(b); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/SlowSSLSocket.java0000644000175000017500000002156312032647221024742 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.SocketAddress; import java.net.SocketException; import java.nio.channels.SocketChannel; import javax.net.ssl.HandshakeCompletedListener; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocket; /** * "Slow" SSLsocket implementation to emulate dial-up modems etc * * WARNING: the class relies on overriding all superclass methods in order to apply them to the input socket. * Any missing methods will access the superclass socket, which will probably be in the wrong state. * */ public class SlowSSLSocket extends SSLSocket { private final int CPS; // Characters per second to emulate private final SSLSocket sslSock; // Save the actual socket /** * Wrap an SSLSocket with slow input and output streams * @param sock SSLSocket to be wrapped * @param cps characters per second to emulate */ public SlowSSLSocket(final SSLSocket sock, final int cps){ if (cps <=0) { throw new IllegalArgumentException("Speed (cps) <= 0"); } sslSock=sock; CPS=cps; } // Override so we can intercept the stream @Override public OutputStream getOutputStream() throws IOException { return new SlowOutputStream(sslSock.getOutputStream(), CPS); } // Override so we can intercept the stream @Override public InputStream getInputStream() throws IOException { return new SlowInputStream(sslSock.getInputStream(), CPS); } // Forward all the SSLSocket methods to the input socket @Override public void addHandshakeCompletedListener(HandshakeCompletedListener arg0) { sslSock.addHandshakeCompletedListener(arg0); } @Override public boolean getEnableSessionCreation() { return sslSock.getEnableSessionCreation(); } @Override public String[] getEnabledCipherSuites() { return sslSock.getEnabledCipherSuites(); } @Override public String[] getEnabledProtocols() { return sslSock.getEnabledProtocols(); } @Override public boolean getNeedClientAuth() { return sslSock.getNeedClientAuth(); } @Override public SSLSession getSession() { return sslSock.getSession(); } @Override public String[] getSupportedCipherSuites() { return sslSock.getSupportedCipherSuites(); } @Override public String[] getSupportedProtocols() { return sslSock.getSupportedProtocols(); } @Override public boolean getUseClientMode() { return sslSock.getUseClientMode(); } @Override public boolean getWantClientAuth() { return sslSock.getWantClientAuth(); } @Override public void removeHandshakeCompletedListener(HandshakeCompletedListener arg0) { sslSock.removeHandshakeCompletedListener(arg0); } @Override public void setEnableSessionCreation(boolean arg0) { sslSock.setEnableSessionCreation(arg0); } @Override public void setEnabledCipherSuites(String[] arg0) { sslSock.setEnabledCipherSuites(arg0); } @Override public void setEnabledProtocols(String[] arg0) { sslSock.setEnabledProtocols(arg0); } @Override public void setNeedClientAuth(boolean arg0) { sslSock.setNeedClientAuth(arg0); } @Override public void setUseClientMode(boolean arg0) { sslSock.setUseClientMode(arg0); } @Override public void setWantClientAuth(boolean arg0) { sslSock.setWantClientAuth(arg0); } @Override public void startHandshake() throws IOException { sslSock.startHandshake(); } // Also forward all the Socket methods. @Override public void bind(SocketAddress bindpoint) throws IOException { sslSock.bind(bindpoint); } @Override public synchronized void close() throws IOException { sslSock.close(); } @Override public void connect(SocketAddress endpoint, int timeout) throws IOException { sslSock.connect(endpoint, timeout); } @Override public void connect(SocketAddress endpoint) throws IOException { sslSock.connect(endpoint); } @Override public SocketChannel getChannel() { return sslSock.getChannel(); } @Override public InetAddress getInetAddress() { return sslSock.getInetAddress(); } @Override public boolean getKeepAlive() throws SocketException { return sslSock.getKeepAlive(); } @Override public InetAddress getLocalAddress() { return sslSock.getLocalAddress(); } @Override public int getLocalPort() { return sslSock.getLocalPort(); } @Override public SocketAddress getLocalSocketAddress() { return sslSock.getLocalSocketAddress(); } @Override public boolean getOOBInline() throws SocketException { return sslSock.getOOBInline(); } @Override public int getPort() { return sslSock.getPort(); } @Override public synchronized int getReceiveBufferSize() throws SocketException { return sslSock.getReceiveBufferSize(); } @Override public SocketAddress getRemoteSocketAddress() { return sslSock.getRemoteSocketAddress(); } @Override public boolean getReuseAddress() throws SocketException { return sslSock.getReuseAddress(); } @Override public synchronized int getSendBufferSize() throws SocketException { return sslSock.getSendBufferSize(); } @Override public int getSoLinger() throws SocketException { return sslSock.getSoLinger(); } @Override public synchronized int getSoTimeout() throws SocketException { return sslSock.getSoTimeout(); } @Override public boolean getTcpNoDelay() throws SocketException { return sslSock.getTcpNoDelay(); } @Override public int getTrafficClass() throws SocketException { return sslSock.getTrafficClass(); } @Override public boolean isBound() { return sslSock.isBound(); } @Override public boolean isClosed() { return sslSock.isClosed(); } @Override public boolean isConnected() { return sslSock.isConnected(); } @Override public boolean isInputShutdown() { return sslSock.isInputShutdown(); } @Override public boolean isOutputShutdown() { return sslSock.isOutputShutdown(); } @Override public void sendUrgentData(int data) throws IOException { sslSock.sendUrgentData(data); } @Override public void setKeepAlive(boolean on) throws SocketException { sslSock.setKeepAlive(on); } @Override public void setOOBInline(boolean on) throws SocketException { sslSock.setOOBInline(on); } @Override public synchronized void setReceiveBufferSize(int size) throws SocketException { sslSock.setReceiveBufferSize(size); } @Override public void setReuseAddress(boolean on) throws SocketException { sslSock.setReuseAddress(on); } @Override public synchronized void setSendBufferSize(int size) throws SocketException { sslSock.setSendBufferSize(size); } @Override public void setSoLinger(boolean on, int linger) throws SocketException { sslSock.setSoLinger(on, linger); } @Override public synchronized void setSoTimeout(int timeout) throws SocketException { sslSock.setSoTimeout(timeout); } @Override public void setTcpNoDelay(boolean on) throws SocketException { sslSock.setTcpNoDelay(on); } @Override public void setTrafficClass(int tc) throws SocketException { sslSock.setTrafficClass(tc); } @Override public void shutdownInput() throws IOException { sslSock.shutdownInput(); } @Override public void shutdownOutput() throws IOException { sslSock.shutdownOutput(); } @Override public String toString() { return sslSock.toString(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/JSR223BeanInfoSupport.java0000644000175000017500000000372512032647221026147 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.script.ScriptEngineFactory; import javax.script.ScriptEngineManager; /** * Parent class to handle common GUI design for JSR223 test elements */ public abstract class JSR223BeanInfoSupport extends ScriptingBeanInfoSupport { private static final String[] LANGUAGE_TAGS; static { List shortNames = new ArrayList(); ScriptEngineManager sem = new ScriptEngineManager(); @SuppressWarnings("unchecked") // can be dropped in Java 1.6 final List engineFactories = sem.getEngineFactories(); for(ScriptEngineFactory fact : engineFactories){ @SuppressWarnings("unchecked") // can be dropped in Java 1.6 List names = fact.getNames(); for(String shorName : names) { shortNames.add(shorName); } } LANGUAGE_TAGS = shortNames.toArray(new String[shortNames.size()]); Arrays.sort(LANGUAGE_TAGS); } protected JSR223BeanInfoSupport(Class beanClass) { super(beanClass, LANGUAGE_TAGS); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/JsseSSLManager.java0000644000175000017500000003672412032647221025051 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.net.HttpURLConnection; import java.net.Socket; import java.security.GeneralSecurityException; import java.security.Principal; import java.security.PrivateKey; import java.security.Provider; import java.security.SecureRandom; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import javax.net.ssl.X509KeyManager; import javax.net.ssl.X509TrustManager; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; import org.apache.jmeter.util.keystore.JmeterKeyStore; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The SSLManager handles the KeyStore information for JMeter. Basically, it * handles all the logic for loading and initializing all the JSSE parameters * and selecting the alias to authenticate against if it is available. * SSLManager will try to automatically select the client certificate for you, * but if it can't make a decision, it will pop open a dialog asking you for * more information. * * TODO: does not actually prompt * */ public class JsseSSLManager extends SSLManager { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String HTTPS = "https"; // $NON-NLS-1$ // Temporary fix to allow default protocol to be changed private static final String DEFAULT_SSL_PROTOCOL = JMeterUtils.getPropDefault("https.default.protocol","TLS"); // $NON-NLS-1$ // $NON-NLS-2$ // Allow reversion to original shared session context private static final boolean SHARED_SESSION_CONTEXT = JMeterUtils.getPropDefault("https.sessioncontext.shared",false); // $NON-NLS-1$ private static final int cps; static { log.info("Using default SSL protocol: "+DEFAULT_SSL_PROTOCOL); log.info("SSL session context: "+(SHARED_SESSION_CONTEXT ? "shared" : "per-thread")); cps = JMeterUtils.getPropDefault("httpclient.socket.https.cps", 0); // $NON-NLS-1$ if (cps > 0) { log.info("Setting up HTTPS SlowProtocol, cps="+cps); } } /** * Cache the SecureRandom instance because it takes a long time to create */ private SecureRandom rand; private Provider pro = null; // TODO why not use the super class value? private SSLContext defaultContext; // If we are using a single session private ThreadLocal threadlocal; // Otherwise /** * Create the SSLContext, and wrap all the X509KeyManagers with * our X509KeyManager so that we can choose our alias. * * @param provider * Description of Parameter */ public JsseSSLManager(Provider provider) { log.debug("ssl Provider = " + provider); setProvider(provider); if (null == this.rand) { // Surely this is always null in the constructor? this.rand = new SecureRandom(); } try { if (SHARED_SESSION_CONTEXT) { log.debug("Creating shared context"); this.defaultContext = createContext(); } else { this.threadlocal = new ThreadLocal(); } /* * Set up Java defaults. * N.B. does not allow SlowSocket - fails with: * java.lang.RuntimeException: Export restriction: this JSSE implementation is non-pluggable. */ HttpsURLConnection.setDefaultSSLSocketFactory(new HttpSSLProtocolSocketFactory(this)); HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }); /* * Also set up HttpClient defaults */ Protocol protocol = new Protocol( JsseSSLManager.HTTPS, (ProtocolSocketFactory) new HttpSSLProtocolSocketFactory(this, cps), 443); Protocol.registerProtocol(JsseSSLManager.HTTPS, protocol); log.debug("SSL stuff all set"); } catch (GeneralSecurityException ex) { log.error("Could not set up SSLContext", ex); } log.debug("JsseSSLManager installed"); } /** * Sets the Context attribute of the JsseSSLManager object * * @param conn * The new Context value */ @Override public void setContext(HttpURLConnection conn) { if (conn instanceof HttpsURLConnection) { /* * No point doing this on a per-connection basis, as there is currently no way to configure it. * So we leave it to the defaults set up in the SSL Context * */ // HttpsURLConnection secureConn = (HttpsURLConnection) conn; // secureConn.setSSLSocketFactory(this.getContext().getSocketFactory()); } else { log.warn("Unexpected HttpURLConnection class: "+conn.getClass().getName()); } } /** * Sets the Provider attribute of the JsseSSLManager object * * @param p * The new Provider value */ @Override protected final void setProvider(Provider p) { super.setProvider(p); if (null == this.pro) { this.pro = p; } } /** * Returns the SSLContext we are using. * This is either a context per thread, * or, for backwards compatibility, a single shared context. * * @return The Context value */ public SSLContext getContext() throws GeneralSecurityException { if (SHARED_SESSION_CONTEXT) { if (log.isDebugEnabled()){ log.debug("Using shared SSL context for: "+Thread.currentThread().getName()); } return this.defaultContext; } SSLContext sslContext = this.threadlocal.get(); if (sslContext == null) { if (log.isDebugEnabled()){ log.debug("Creating threadLocal SSL context for: "+Thread.currentThread().getName()); } sslContext = createContext(); this.threadlocal.set(sslContext); } if (log.isDebugEnabled()){ log.debug("Using threadLocal SSL context for: "+Thread.currentThread().getName()); } return sslContext; } /** * Resets the SSLContext if using per-thread contexts. * */ public void resetContext() { if (!SHARED_SESSION_CONTEXT) { log.debug("Clearing session context for current thread"); this.threadlocal.set(null); } } /* * * Creates new SSL context * @return SSL context * @throws GeneralSecurityException */ private SSLContext createContext() throws GeneralSecurityException { SSLContext context; if (pro != null) { context = SSLContext.getInstance(DEFAULT_SSL_PROTOCOL, pro); // $NON-NLS-1$ } else { context = SSLContext.getInstance(DEFAULT_SSL_PROTOCOL); // $NON-NLS-1$ } KeyManagerFactory managerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); JmeterKeyStore keys = this.getKeyStore(); managerFactory.init(null, defaultpw == null ? new char[]{} : defaultpw.toCharArray()); KeyManager[] managers = managerFactory.getKeyManagers(); KeyManager[] newManagers = new KeyManager[managers.length]; log.debug(keys.getClass().toString()); // Now wrap the default managers with our key manager for (int i = 0; i < managers.length; i++) { if (managers[i] instanceof X509KeyManager) { X509KeyManager manager = (X509KeyManager) managers[i]; newManagers[i] = new WrappedX509KeyManager(manager, keys); } else { newManagers[i] = managers[i]; } } // Get the default trust managers TrustManagerFactory tmfactory = TrustManagerFactory.getInstance( TrustManagerFactory.getDefaultAlgorithm()); tmfactory.init(this.getTrustStore()); // Wrap the defaults in our custom trust manager TrustManager[] trustmanagers = tmfactory.getTrustManagers(); for (int i = 0; i < trustmanagers.length; i++) { if (trustmanagers[i] instanceof X509TrustManager) { trustmanagers[i] = new CustomX509TrustManager( (X509TrustManager)trustmanagers[i]); } } context.init(newManagers, trustmanagers, this.rand); if (log.isDebugEnabled()){ String[] dCiphers = context.getSocketFactory().getDefaultCipherSuites(); String[] sCiphers = context.getSocketFactory().getSupportedCipherSuites(); int len = (dCiphers.length > sCiphers.length) ? dCiphers.length : sCiphers.length; for (int i = 0; i < len; i++) { if (i < dCiphers.length) { log.debug("Default Cipher: " + dCiphers[i]); } if (i < sCiphers.length) { log.debug("Supported Cipher: " + sCiphers[i]); } } } return context; } /** * This is the X509KeyManager we have defined for the sole purpose of * selecting the proper key and certificate based on the keystore available. * */ private static class WrappedX509KeyManager implements X509KeyManager { /** * The parent X509KeyManager. * This is used for the methods {@link #getServerAliases(String, Principal[])} * and {@link #chooseServerAlias(String, Principal[], Socket)} */ private final X509KeyManager manager; /** * The KeyStore this KeyManager uses. * This is used for the remaining X509KeyManager methods: * {@link #getClientAliases(String, Principal[])}, * {@link #getCertificateChain(String)}, * {@link #getPrivateKey(String)} and * {@link #chooseClientAlias(String[], Principal[], Socket)} */ private final JmeterKeyStore store; /** * Instantiate a new WrappedX509KeyManager. * * @param parent * The parent X509KeyManager * @param ks * The KeyStore we derive our client certs and keys from */ public WrappedX509KeyManager(X509KeyManager parent, JmeterKeyStore ks) { this.manager = parent; this.store = ks; } /** * Compiles the list of all client aliases with a private key. * * @param keyType the key algorithm type name (RSA, DSA, etc.) * @param issuers the CA certificates we are narrowing our selection on. * * @return the array of aliases; may be empty */ public String[] getClientAliases(String keyType, Principal[] issuers) { log.debug("WrappedX509Manager: getClientAliases: "); // implementation moved to JmeterKeystore as only that has the keyType info return this.store.getClientAliases(keyType, issuers); } /** * Get the list of server aliases for the SSLServerSockets. This is not * used in JMeter. * * @param keyType * the type of private key the server expects (RSA, DSA, * etc.) * @param issuers * the CA certificates we are narrowing our selection on. * @return the ServerAliases value */ public String[] getServerAliases(String keyType, Principal[] issuers) { log.debug("WrappedX509Manager: getServerAliases: "); return this.manager.getServerAliases(keyType, issuers); } /** * Get the Certificate chain for a particular alias * * @param alias * The client alias * @return The CertificateChain value */ public X509Certificate[] getCertificateChain(String alias) { log.debug("WrappedX509Manager: getCertificateChain(" + alias + ")"); return this.store.getCertificateChain(alias); } /** * Get the Private Key for a particular alias * * @param alias * The client alias * @return The PrivateKey value */ public PrivateKey getPrivateKey(String alias) { PrivateKey privateKey = this.store.getPrivateKey(alias); log.debug("WrappedX509Manager: getPrivateKey: " + privateKey); return privateKey; } /** * Select the Alias we will authenticate as if Client authentication is * required by the server we are connecting to. We get the list of * aliases, and if there is only one alias we automatically select it. * If there are more than one alias that has a private key, we prompt * the user to choose which alias using a combo box. Otherwise, we * simply provide a text box, which may or may not work. The alias does * have to match one in the keystore. * * TODO? - does not actually allow the user to choose an alias at present * * @param keyType the key algorithm type name(s), ordered with the most-preferred key type first. * @param issuers the list of acceptable CA issuer subject names or null if it does not matter which issuers are used. * @param socket the socket to be used for this connection. * This parameter can be null, which indicates that implementations are free to select an alias applicable to any socket. * * @see javax.net.ssl.X509KeyManager#chooseClientAlias(String[], Principal[], Socket) */ public String chooseClientAlias(String[] keyType, Principal[] issuers, Socket socket) { log.debug("keyType: " + keyType[0]); String alias = this.store.getAlias(); if (alias == null || alias.length() == 0) { log.debug("ClientAlias not found."); } return alias; } /** * Choose the server alias for the SSLServerSockets. This are not used * in JMeter. * * @see javax.net.ssl.X509KeyManager#chooseServerAlias(String, Principal[], Socket) */ public String chooseServerAlias(String arg0, Principal[] arg1, Socket arg2) { return this.manager.chooseServerAlias(arg0, arg1, arg2); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/BeanShellClient.java0000644000175000017500000000700612032647221025253 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import org.apache.jorphan.util.JOrphanUtils; /** * Implements a client that can talk to the JMeter BeanShell server. */ public class BeanShellClient { private static final int MINARGS = 3; public static void main(String [] args) throws Exception{ if (args.length < MINARGS){ System.out.println("Please provide "+MINARGS+" or more arguments:"); System.out.println("serverhost serverport filename [arg1 arg2 ...]"); System.out.println("e.g. "); System.out.println("localhost 9000 extras/remote.bsh apple blake 7"); return; } String host=args[0]; String portString = args[1]; String file=args[2]; int port=Integer.parseInt(portString)+1;// convert to telnet port System.out.println("Connecting to BSH server on "+host+":"+portString); Socket sock = new Socket(host,port); InputStream is = sock.getInputStream(); OutputStream os = sock.getOutputStream(); InputStreamReader fis = new FileReader(file); new SockRead(is).start(); sendLine("bsh.prompt=\"\";",os);// Prompt is unnecessary sendLine("String [] args={",os); for (int i=MINARGS; i -1) { char c = (char) x; System.out.print(c); } } catch (IOException e) { // TODO Why empty block ? } finally { System.out.println("... disconnected from server."); JOrphanUtils.closeQuietly(is); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/NameUpdater.java0000644000175000017500000001560412032647221024467 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Jun 13, 2003 */ package org.apache.jmeter.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Enumeration; import java.util.Properties; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public final class NameUpdater { private static final Properties nameMap; // Read-only access after class has been initialised private static final Logger log = LoggingManager.getLoggerForClass(); private static final String NAME_UPDATER_PROPERTIES = "META-INF/resources/org.apache.jmeter.nameupdater.properties"; // $NON-NLS-1$ static { nameMap = new Properties(); FileInputStream fis = null; File f = new File(JMeterUtils.getJMeterHome(), JMeterUtils.getPropDefault("upgrade_properties", // $NON-NLS-1$ "/bin/upgrade.properties")); // $NON-NLS-1$ try { fis = new FileInputStream(f); nameMap.load(fis); } catch (FileNotFoundException e) { log.error("Could not find upgrade file: ", e); } catch (IOException e) { log.error("Error processing upgrade file: "+f.getPath(), e); } finally { JOrphanUtils.closeQuietly(fis); } //load additionnal name conversion rules from plugins Enumeration enu = null; try { enu = JMeterUtils.class.getClassLoader().getResources(NAME_UPDATER_PROPERTIES); } catch (IOException e) { log.error("Error in finding additional nameupdater.properties files: ", e); } if(enu != null) { while(enu.hasMoreElements()) { URL ressourceUrl = enu.nextElement(); log.info("Processing "+ressourceUrl.toString()); Properties prop = new Properties(); InputStream is = null; try { is = ressourceUrl.openStream(); prop.load(is); } catch (IOException e) { log.error("Error processing upgrade file: " + ressourceUrl.getPath(), e); } finally { JOrphanUtils.closeQuietly(is); } @SuppressWarnings("unchecked") // names are Strings Enumeration propertyNames = (Enumeration) prop.propertyNames(); while (propertyNames.hasMoreElements()) { String key = propertyNames.nextElement(); if (!nameMap.contains(key)) { nameMap.put(key, prop.get(key)); log.info("Added additional nameMap entry: " + key); } else { log.warn("Additional nameMap entry: '" + key + "' rejected as already defined."); } } } } } /** * Looks up the class name; if that does not exist in the map, * then defaults to the input name. * * @param className the classname from the script file * @return the class name to use, possibly updated. */ public static String getCurrentName(String className) { if (nameMap.containsKey(className)) { String newName = nameMap.getProperty(className); log.info("Upgrading class " + className + " to " + newName); return newName; } return className; } /** * Looks up test element / gui class combination; if that * does not exist in the map, then defaults to getCurrentName(testClassName). * * @param testClassName - test element class name * @param guiClassName - associated gui class name * @return new test class name */ public static String getCurrentTestName(String testClassName, String guiClassName) { String key = testClassName + "|" + guiClassName; if (nameMap.containsKey(key)) { String newName = nameMap.getProperty(key); log.info("Upgrading " + key + " to " + newName); return newName; } return getCurrentName(testClassName); } /** * Looks up class name / property name combination; if that * does not exist in the map, then defaults to input property name. * * @param propertyName - property name to check * @param className - class name containing the property * @return possibly updated property name */ public static String getCurrentName(String propertyName, String className) { String key = className + "/" + propertyName; if (nameMap.containsKey(key)) { String newName = nameMap.getProperty(key); log.info("Upgrading property " + propertyName + " to " + newName); return newName; } return propertyName; } /** * Looks up class name . property name / value combination; * if that does not exist in the map, returns the original value. * * @param value the value to be checked * @param propertyName the name of the property * @param className the class containing the propery. * @return the value, updated if necessary */ public static String getCurrentName(String value, String propertyName, String className) { String key = className + "." + propertyName + "/" + value; if (nameMap.containsKey(key)) { String newValue = nameMap.getProperty(key); log.info("Upgrading value " + value + " to " + newValue); return newValue; } return value; } /** * Private constructor to prevent instantiation. */ private NameUpdater() { } /** * Check if a key is in the map; intended for use by * {@link org.apache.jmeter.save.SaveService#checkClasses() SaveService#checkClasses()} * only. * * @param key * @return true if the key is in the map */ public static boolean isMapped(String key) { return nameMap.containsKey(key); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/JMeterUtils.java0000644000175000017500000013006412032647221024467 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; import java.net.URL; import java.net.UnknownHostException; import java.util.Enumeration; import java.util.Hashtable; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.MissingResourceException; import java.util.Properties; import java.util.Random; import java.util.ResourceBundle; import java.util.Vector; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import org.apache.commons.io.IOUtils; import org.apache.jmeter.gui.GuiPackage; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.test.UnitTestManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.PatternCacheLRU; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; import org.xml.sax.XMLReader; /** * This class contains the static utility methods used by JMeter. * */ public class JMeterUtils implements UnitTestManager { private static final Logger log = LoggingManager.getLoggerForClass(); // Note: cannot use a static variable here, because that would be processed before the JMeter properties // have been defined (Bug 52783) private static class LazyPatternCacheHolder { public static final PatternCacheLRU INSTANCE = new PatternCacheLRU( getPropDefault("oro.patterncache.size",1000), // $NON-NLS-1$ new Perl5Compiler()); } private static final String EXPERT_MODE_PROPERTY = "jmeter.expertMode"; // $NON-NLS-1$ private static final String ENGLISH_LANGUAGE = Locale.ENGLISH.getLanguage(); private static volatile Properties appProperties; private static final Vector localeChangeListeners = new Vector(); private static volatile Locale locale; private static volatile ResourceBundle resources; // What host am I running on? //@GuardedBy("this") private static String localHostIP = null; //@GuardedBy("this") private static String localHostName = null; //@GuardedBy("this") private static String localHostFullName = null; private static volatile boolean ignoreResorces = false; // Special flag for use in debugging resources private static final ThreadLocal localMatcher = new ThreadLocal() { @Override protected Perl5Matcher initialValue() { return new Perl5Matcher(); } }; // Provide Random numbers to whomever wants one private static final Random rand = new Random(); /** * Gets Perl5Matcher for this thread. */ public static Perl5Matcher getMatcher() { return localMatcher.get(); } /** * This method is used by the init method to load the property file that may * even reside in the user space, or in the classpath under * org.apache.jmeter.jmeter.properties. * * The method also initialises logging and sets up the default Locale * * TODO - perhaps remove? * [still used * * @param file * the file to load * @return the Properties from the file * @see #getJMeterProperties() * @see #loadJMeterProperties(String) * @see #initLogging() * @see #initLocale() */ public static Properties getProperties(String file) { loadJMeterProperties(file); initLogging(); initLocale(); return appProperties; } /** * Initialise JMeter logging */ public static void initLogging() { LoggingManager.initializeLogging(appProperties); } /** * Initialise the JMeter Locale */ public static void initLocale() { String loc = appProperties.getProperty("language"); // $NON-NLS-1$ if (loc != null) { String []parts = JOrphanUtils.split(loc,"_");// $NON-NLS-1$ if (parts.length==2) { setLocale(new Locale(parts[0], parts[1])); } else { setLocale(new Locale(loc, "")); // $NON-NLS-1$ } } else { setLocale(Locale.getDefault()); } } /** * Load the JMeter properties file; if not found, then * default to "org/apache/jmeter/jmeter.properties" from the classpath * * c.f. loadProperties * */ public static void loadJMeterProperties(String file) { Properties p = new Properties(System.getProperties()); InputStream is = null; try { File f = new File(file); is = new FileInputStream(f); p.load(is); } catch (IOException e) { try { is = ClassLoader.getSystemResourceAsStream("org/apache/jmeter/jmeter.properties"); // $NON-NLS-1$ if (is == null) { throw new RuntimeException("Could not read JMeter properties file"); } p.load(is); } catch (IOException ex) { // JMeter.fail("Could not read internal resource. " + // "Archive is broken."); } } finally { JOrphanUtils.closeQuietly(is); } appProperties = p; } /** * This method loads a property file that may reside in the user space, or * in the classpath * * @param file * the file to load * @return the Properties from the file, may be null (e.g. file not found) */ public static Properties loadProperties(String file) { return loadProperties(file, null); } /** * This method loads a property file that may reside in the user space, or * in the classpath * * @param file * the file to load * @param defaultProps a set of default properties * @return the Properties from the file; if it could not be processed, the defaultProps are returned. */ public static Properties loadProperties(String file, Properties defaultProps) { Properties p = new Properties(defaultProps); InputStream is = null; try { File f = new File(file); is = new FileInputStream(f); p.load(is); } catch (IOException e) { try { final URL resource = JMeterUtils.class.getClassLoader().getResource(file); if (resource == null) { log.warn("Cannot find " + file); return defaultProps; } is = resource.openStream(); if (is == null) { log.warn("Cannot open " + file); return defaultProps; } p.load(is); } catch (IOException ex) { log.warn("Error reading " + file + " " + ex.toString()); return defaultProps; } } finally { JOrphanUtils.closeQuietly(is); } return p; } public static PatternCacheLRU getPatternCache() { return LazyPatternCacheHolder.INSTANCE; } /** * Get a compiled expression from the pattern cache (READ_ONLY). * * @param expression * @return compiled pattern * * @throws MalformedCachePatternException (Runtime) * This should be caught for expressions that may vary (e.g. user input) * */ public static Pattern getPattern(String expression) throws MalformedCachePatternException { return getPattern(expression, Perl5Compiler.READ_ONLY_MASK); } /** * Get a compiled expression from the pattern cache. * * @param expression RE * @param options e.g. READ_ONLY_MASK * @return compiled pattern * * @throws MalformedCachePatternException (Runtime) * This should be caught for expressions that may vary (e.g. user input) * */ public static Pattern getPattern(String expression, int options) throws MalformedCachePatternException { return LazyPatternCacheHolder.INSTANCE.getPattern(expression, options); } public void initializeProperties(String file) { System.out.println("Initializing Properties: " + file); getProperties(file); } /** * Convenience method for * {@link ClassFinder#findClassesThatExtend(String[], Class[], boolean)} * with the option to include inner classes in the search set to false * and the path list is derived from JMeterUtils.getSearchPaths(). * * @param superClass - single class to search for * @return List of Strings containing discovered class names. */ public static List findClassesThatExtend(Class superClass) throws IOException { return ClassFinder.findClassesThatExtend(getSearchPaths(), new Class[]{superClass}, false); } /** * Generate a list of paths to search. * The output array always starts with * JMETER_HOME/lib/ext * and is followed by any paths obtained from the "search_paths" JMeter property. * * @return array of path strings */ public static String[] getSearchPaths() { String p = JMeterUtils.getPropDefault("search_paths", null); // $NON-NLS-1$ String[] result = new String[1]; if (p != null) { String[] paths = p.split(";"); // $NON-NLS-1$ result = new String[paths.length + 1]; System.arraycopy(paths, 0, result, 1, paths.length); } result[0] = getJMeterHome() + "/lib/ext"; // $NON-NLS-1$ return result; } /** * Provide random numbers * * @param r - * the upper bound (exclusive) */ public static int getRandomInt(int r) { return rand.nextInt(r); } /** * Changes the current locale: re-reads resource strings and notifies * listeners. * * @param loc - * new locale */ public static void setLocale(Locale loc) { log.info("Setting Locale to " + loc.toString()); /* * See bug 29920. getBundle() defaults to the property file for the * default Locale before it defaults to the base property file, so we * need to change the default Locale to ensure the base property file is * found. */ Locale def = null; boolean isDefault = false; // Are we the default language? if (loc.getLanguage().equals(ENGLISH_LANGUAGE)) { isDefault = true; def = Locale.getDefault(); // Don't change locale from en_GB to en if (!def.getLanguage().equals(ENGLISH_LANGUAGE)) { Locale.setDefault(Locale.ENGLISH); } else { def = null; // no need to reset Locale } } if (loc.toString().equals("ignoreResources")){ // $NON-NLS-1$ log.warn("Resource bundles will be ignored"); ignoreResorces = true; // Keep existing settings } else { ignoreResorces = false; ResourceBundle resBund = ResourceBundle.getBundle("org.apache.jmeter.resources.messages", loc); // $NON-NLS-1$ resources = resBund; locale = loc; final Locale resBundLocale = resBund.getLocale(); if (isDefault || resBundLocale.equals(loc)) {// language change worked // Check if we at least found the correct language: } else if (resBundLocale.getLanguage().equals(loc.getLanguage())) { log.info("Could not find resources for '"+loc.toString()+"', using '"+resBundLocale.toString()+"'"); } else { log.error("Could not find resources for '"+loc.toString()+"'"); } } notifyLocaleChangeListeners(); /* * Reset Locale if necessary so other locales are properly handled */ if (def != null) { Locale.setDefault(def); } } /** * Gets the current locale. * * @return current locale */ public static Locale getLocale() { return locale; } public static void addLocaleChangeListener(LocaleChangeListener listener) { localeChangeListeners.add(listener); } public static void removeLocaleChangeListener(LocaleChangeListener listener) { localeChangeListeners.remove(listener); } /** * Notify all listeners interested in locale changes. * */ private static void notifyLocaleChangeListeners() { LocaleChangeEvent event = new LocaleChangeEvent(JMeterUtils.class, locale); @SuppressWarnings("unchecked") // clone will produce correct type // TODO but why do we need to clone the list? Vector listeners = (Vector) localeChangeListeners.clone(); for (LocaleChangeListener listener : listeners) { listener.localeChanged(event); } } /** * Gets the resource string for this key. * * If the resource is not found, a warning is logged * * @param key * the key in the resource file * @return the resource string if the key is found; otherwise, return * "[res_key="+key+"]" */ public static String getResString(String key) { return getResStringDefault(key, RES_KEY_PFX + key + "]"); // $NON-NLS-1$ } /** * Gets the resource string for this key in Locale. * * If the resource is not found, a warning is logged * * @param key * the key in the resource file * @param forcedLocale Force a particular locale * @return the resource string if the key is found; otherwise, return * "[res_key="+key+"]" * @since 2.7 */ public static String getResString(String key, Locale forcedLocale) { return getResStringDefault(key, RES_KEY_PFX + key + "]", // $NON-NLS-1$ forcedLocale); } public static final String RES_KEY_PFX = "[res_key="; // $NON-NLS-1$ /** * Gets the resource string for this key. * * If the resource is not found, a warning is logged * * @param key * the key in the resource file * @param defaultValue - * the default value * * @return the resource string if the key is found; otherwise, return the * default * @deprecated Only intended for use in development; use * getResString(String) normally */ @Deprecated public static String getResString(String key, String defaultValue) { return getResStringDefault(key, defaultValue); } /* * Helper method to do the actual work of fetching resources; allows * getResString(S,S) to be deprecated without affecting getResString(S); */ private static String getResStringDefault(String key, String defaultValue) { return getResStringDefault(key, defaultValue, null); } /* * Helper method to do the actual work of fetching resources; allows * getResString(S,S) to be deprecated without affecting getResString(S); */ private static String getResStringDefault(String key, String defaultValue, Locale forcedLocale) { if (key == null) { return null; } // Resource keys cannot contain spaces, and are forced to lower case String resKey = key.replace(' ', '_'); // $NON-NLS-1$ // $NON-NLS-2$ resKey = resKey.toLowerCase(java.util.Locale.ENGLISH); String resString = null; try { ResourceBundle bundle = resources; if(forcedLocale != null) { bundle = ResourceBundle.getBundle("org.apache.jmeter.resources.messages", forcedLocale); // $NON-NLS-1$ } resString = bundle.getString(resKey); if (ignoreResorces ){ // Special mode for debugging resource handling return "["+key+"]"; } } catch (MissingResourceException mre) { if (ignoreResorces ){ // Special mode for debugging resource handling return "[?"+key+"?]"; } log.warn("ERROR! Resource string not found: [" + resKey + "]", mre); resString = defaultValue; } return resString; } /** * To get I18N label from properties file * * @param key * in messages.properties * @return I18N label without (if exists) last colon ':' and spaces */ public static String getParsedLabel(String key) { String value = JMeterUtils.getResString(key); return value.replaceFirst("(?m)\\s*?:\\s*$", ""); // $NON-NLS-1$ $NON-NLS-2$ } /** * Get the locale name as a resource. * Does not log an error if the resource does not exist. * This is needed to support additional locales, as they won't be in existing messages files. * * @param locale name * @return the locale display name as defined in the current Locale or the original string if not present */ public static String getLocaleString(String locale){ // All keys in messages.properties are lowercase (historical reasons?) String resKey = locale.toLowerCase(java.util.Locale.ENGLISH); // TODO When migrating to JAVA 6, use resources#containsKey instead of try/catch try { return resources.getString(resKey); } catch (MissingResourceException e) { } return locale; } /** * This gets the currently defined appProperties. It can only be called * after the {@link #getProperties(String)} or {@link #loadJMeterProperties(String)} * method has been called. * * @return The JMeterProperties value, * may be null if {@link #loadJMeterProperties(String)} has not been called * @see #getProperties(String) * @see #loadJMeterProperties(String) */ public static Properties getJMeterProperties() { return appProperties; } /** * This looks for the requested image in the classpath under * org.apache.jmeter.images. * * @param name * Description of Parameter * @return The Image value */ public static ImageIcon getImage(String name) { try { URL url = JMeterUtils.class.getClassLoader().getResource( "org/apache/jmeter/images/" + name.trim()); if(url != null) { return new ImageIcon(url); // $NON-NLS-1$ } else { log.warn("no icon for " + name); return null; } } catch (NoClassDefFoundError e) {// Can be returned by headless hosts log.info("no icon for " + name + " " + e.getMessage()); return null; } catch (InternalError e) {// Can be returned by headless hosts log.info("no icon for " + name + " " + e.getMessage()); return null; } } /** * This looks for the requested image in the classpath under * org.apache.jmeter.images. , and also sets the description * of the image, which is useful if the icon is going to be placed * on the clipboard. * * @param name * the name of the image * @param description * the description of the image * @return The Image value */ public static ImageIcon getImage(String name, String description) { ImageIcon icon = getImage(name); if(icon != null) { icon.setDescription(description); } return icon; } public static String getResourceFileAsText(String name) { BufferedReader fileReader = null; try { String lineEnd = System.getProperty("line.separator"); // $NON-NLS-1$ InputStream is = JMeterUtils.class.getClassLoader().getResourceAsStream(name); if(is != null) { fileReader = new BufferedReader(new InputStreamReader(is)); StringBuilder text = new StringBuilder(); String line = "NOTNULL"; // $NON-NLS-1$ while (line != null) { line = fileReader.readLine(); if (line != null) { text.append(line); text.append(lineEnd); } } // Done by finally block: fileReader.close(); return text.toString(); } else { return ""; // $NON-NLS-1$ } } catch (IOException e) { return ""; // $NON-NLS-1$ } finally { IOUtils.closeQuietly(fileReader); } } /** * Creates the vector of Timers plugins. * * @param properties * Description of Parameter * @return The Timers value */ public static Vector getTimers(Properties properties) { return instantiate(getVector(properties, "timer."), // $NON-NLS-1$ "org.apache.jmeter.timers.Timer"); // $NON-NLS-1$ } /** * Creates the vector of visualizer plugins. * * @param properties * Description of Parameter * @return The Visualizers value */ public static Vector getVisualizers(Properties properties) { return instantiate(getVector(properties, "visualizer."), // $NON-NLS-1$ "org.apache.jmeter.visualizers.Visualizer"); // $NON-NLS-1$ } /** * Creates a vector of SampleController plugins. * * @param properties * The properties with information about the samplers * @return The Controllers value */ // TODO - does not appear to be called directly public static Vector getControllers(Properties properties) { String name = "controller."; // $NON-NLS-1$ Vector v = new Vector(); Enumeration names = properties.keys(); while (names.hasMoreElements()) { String prop = (String) names.nextElement(); if (prop.startsWith(name)) { Object o = instantiate(properties.getProperty(prop), "org.apache.jmeter.control.SamplerController"); // $NON-NLS-1$ v.addElement(o); } } return v; } /** * Create a string of class names for a particular SamplerController * * @param properties * The properties with info about the samples. * @param name * The name of the sampler controller. * @return The TestSamples value */ public static String[] getTestSamples(Properties properties, String name) { Vector vector = getVector(properties, name + ".testsample"); // $NON-NLS-1$ return vector.toArray(new String[vector.size()]); } /** * Create an instance of an org.xml.sax.Parser based on the default props. * * @return The XMLParser value */ // TODO only called by UserParameterXMLParser.getXMLParameters which is a deprecated class public static XMLReader getXMLParser() { XMLReader reader = null; final String parserName = getPropDefault("xml.parser", // $NON-NLS-1$ "org.apache.xerces.parsers.SAXParser"); // $NON-NLS-1$ try { reader = (XMLReader) instantiate(parserName, "org.xml.sax.XMLReader"); // $NON-NLS-1$ // reader = xmlFactory.newSAXParser().getXMLReader(); } catch (Exception e) { reader = (XMLReader) instantiate(parserName, // $NON-NLS-1$ "org.xml.sax.XMLReader"); // $NON-NLS-1$ } return reader; } /** * Creates the vector of alias strings. * * @param properties * @return The Alias value */ public static Hashtable getAlias(Properties properties) { return getHashtable(properties, "alias."); // $NON-NLS-1$ } /** * Creates a vector of strings for all the properties that start with a * common prefix. * * @param properties * Description of Parameter * @param name * Description of Parameter * @return The Vector value */ public static Vector getVector(Properties properties, String name) { Vector v = new Vector(); Enumeration names = properties.keys(); while (names.hasMoreElements()) { String prop = (String) names.nextElement(); if (prop.startsWith(name)) { v.addElement(properties.getProperty(prop)); } } return v; } /** * Creates a table of strings for all the properties that start with a * common prefix. * * @param properties input to search * @param prefix to match against properties * @return a Hashtable where the keys are the original keys with the prefix removed */ public static Hashtable getHashtable(Properties properties, String prefix) { Hashtable t = new Hashtable(); Enumeration names = properties.keys(); final int length = prefix.length(); while (names.hasMoreElements()) { String prop = (String) names.nextElement(); if (prop.startsWith(prefix)) { t.put(prop.substring(length), properties.getProperty(prop)); } } return t; } /** * Get a int value with default if not present. * * @param propName * the name of the property. * @param defaultVal * the default value. * @return The PropDefault value */ public static int getPropDefault(String propName, int defaultVal) { int ans; try { ans = (Integer.valueOf(appProperties.getProperty(propName, Integer.toString(defaultVal)).trim())) .intValue(); } catch (Exception e) { ans = defaultVal; } return ans; } /** * Get a boolean value with default if not present. * * @param propName * the name of the property. * @param defaultVal * the default value. * @return The PropDefault value */ public static boolean getPropDefault(String propName, boolean defaultVal) { boolean ans; try { String strVal = appProperties.getProperty(propName, Boolean.toString(defaultVal)).trim(); if (strVal.equalsIgnoreCase("true") || strVal.equalsIgnoreCase("t")) { // $NON-NLS-1$ // $NON-NLS-2$ ans = true; } else if (strVal.equalsIgnoreCase("false") || strVal.equalsIgnoreCase("f")) { // $NON-NLS-1$ // $NON-NLS-2$ ans = false; } else { ans = ((Integer.valueOf(strVal)).intValue() == 1); } } catch (Exception e) { ans = defaultVal; } return ans; } /** * Get a long value with default if not present. * * @param propName * the name of the property. * @param defaultVal * the default value. * @return The PropDefault value */ public static long getPropDefault(String propName, long defaultVal) { long ans; try { ans = (Long.valueOf(appProperties.getProperty(propName, Long.toString(defaultVal)).trim())).longValue(); } catch (Exception e) { ans = defaultVal; } return ans; } /** * Get a String value with default if not present. * * @param propName * the name of the property. * @param defaultVal * the default value. * @return The PropDefault value */ public static String getPropDefault(String propName, String defaultVal) { String ans = defaultVal; try { String value = appProperties.getProperty(propName, defaultVal); if(value != null) { ans = value.trim(); } } catch (Exception e) { ans = defaultVal; } return ans; } /** * Get the value of a JMeter property. * * @param propName * the name of the property. * @return the value of the JMeter property, or null if not defined */ public static String getProperty(String propName) { String ans = null; try { ans = appProperties.getProperty(propName); } catch (Exception e) { ans = null; } return ans; } /** * Set a String value * * @param propName * the name of the property. * @param propValue * the value of the property * @return the previous value of the property */ public static Object setProperty(String propName, String propValue) { return appProperties.setProperty(propName, propValue); } /** * Sets the selection of the JComboBox to the Object 'name' from the list in * namVec. * NOTUSED? */ public static void selJComboBoxItem(Properties properties, JComboBox combo, Vector namVec, String name) { int idx = namVec.indexOf(name); combo.setSelectedIndex(idx); // Redisplay. combo.updateUI(); } /** * Instatiate an object and guarantee its class. * * @param className * The name of the class to instantiate. * @param impls * The name of the class it must be an instance of * @return an instance of the class, or null if instantiation failed or the class did not implement/extend as required */ // TODO probably not needed public static Object instantiate(String className, String impls) { if (className != null) { className = className.trim(); } if (impls != null) { impls = impls.trim(); } try { Class c = Class.forName(impls); try { Class o = Class.forName(className); Object res = o.newInstance(); if (c.isInstance(res)) { return res; } throw new IllegalArgumentException(className + " is not an instance of " + impls); } catch (ClassNotFoundException e) { log.error("Error loading class " + className + ": class is not found"); } catch (IllegalAccessException e) { log.error("Error loading class " + className + ": does not have access"); } catch (InstantiationException e) { log.error("Error loading class " + className + ": could not instantiate"); } catch (NoClassDefFoundError e) { log.error("Error loading class " + className + ": couldn't find class " + e.getMessage()); } } catch (ClassNotFoundException e) { log.error("Error loading class " + impls + ": was not found."); } return null; } /** * Instantiate a vector of classes * * @param v * Description of Parameter * @param className * Description of Parameter * @return Description of the Returned Value */ public static Vector instantiate(Vector v, String className) { Vector i = new Vector(); try { Class c = Class.forName(className); Enumeration elements = v.elements(); while (elements.hasMoreElements()) { String name = elements.nextElement(); try { Object o = Class.forName(name).newInstance(); if (c.isInstance(o)) { i.addElement(o); } } catch (ClassNotFoundException e) { log.error("Error loading class " + name + ": class is not found"); } catch (IllegalAccessException e) { log.error("Error loading class " + name + ": does not have access"); } catch (InstantiationException e) { log.error("Error loading class " + name + ": could not instantiate"); } catch (NoClassDefFoundError e) { log.error("Error loading class " + name + ": couldn't find class " + e.getMessage()); } } } catch (ClassNotFoundException e) { log.error("Error loading class " + className + ": class is not found"); } return i; } /** * Create a button with the netscape style * * @param name * Description of Parameter * @param listener * Description of Parameter * @return Description of the Returned Value */ public static JButton createButton(String name, ActionListener listener) { JButton button = new JButton(getImage(name + ".on.gif")); // $NON-NLS-1$ button.setDisabledIcon(getImage(name + ".off.gif")); // $NON-NLS-1$ button.setRolloverIcon(getImage(name + ".over.gif")); // $NON-NLS-1$ button.setPressedIcon(getImage(name + ".down.gif")); // $NON-NLS-1$ button.setActionCommand(name); button.addActionListener(listener); button.setRolloverEnabled(true); button.setFocusPainted(false); button.setBorderPainted(false); button.setOpaque(false); button.setPreferredSize(new Dimension(24, 24)); return button; } /** * Create a button with the netscape style * * @param name * Description of Parameter * @param listener * Description of Parameter * @return Description of the Returned Value */ public static JButton createSimpleButton(String name, ActionListener listener) { JButton button = new JButton(getImage(name + ".gif")); // $NON-NLS-1$ button.setActionCommand(name); button.addActionListener(listener); button.setFocusPainted(false); button.setBorderPainted(false); button.setOpaque(false); button.setPreferredSize(new Dimension(25, 25)); return button; } /** * Report an error through a dialog box. * Title defaults to "error_title" resource string * @param errorMsg - the error message. */ public static void reportErrorToUser(String errorMsg) { reportErrorToUser(errorMsg, JMeterUtils.getResString("error_title")); // $NON-NLS-1$ } /** * Report an error through a dialog box. * * @param errorMsg - the error message. * @param titleMsg - title string */ public static void reportErrorToUser(String errorMsg, String titleMsg) { if (errorMsg == null) { errorMsg = "Unknown error - see log file"; log.warn("Unknown error", new Throwable("errorMsg == null")); } GuiPackage instance = GuiPackage.getInstance(); if (instance == null) { System.out.println(errorMsg); return; // Done } try { JOptionPane.showMessageDialog(instance.getMainFrame(), errorMsg, titleMsg, JOptionPane.ERROR_MESSAGE); } catch (HeadlessException e) { log.warn("reportErrorToUser(\"" + errorMsg + "\") caused", e); } } /** * Finds a string in an array of strings and returns the * * @param array * Array of strings. * @param value * String to compare to array values. * @return Index of value in array, or -1 if not in array. */ //TODO - move to JOrphanUtils? public static int findInArray(String[] array, String value) { int count = -1; int index = -1; if (array != null && value != null) { while (++count < array.length) { if (array[count] != null && array[count].equals(value)) { index = count; break; } } } return index; } /** * Takes an array of strings and a tokenizer character, and returns a string * of all the strings concatenated with the tokenizer string in between each * one. * * @param splittee * Array of Objects to be concatenated. * @param splitChar * Object to unsplit the strings with. * @return Array of all the tokens. */ //TODO - move to JOrphanUtils? public static String unsplit(Object[] splittee, Object splitChar) { StringBuilder retVal = new StringBuilder(); int count = -1; while (++count < splittee.length) { if (splittee[count] != null) { retVal.append(splittee[count]); } if (count + 1 < splittee.length && splittee[count + 1] != null) { retVal.append(splitChar); } } return retVal.toString(); } // End Method /** * Takes an array of strings and a tokenizer character, and returns a string * of all the strings concatenated with the tokenizer string in between each * one. * * @param splittee * Array of Objects to be concatenated. * @param splitChar * Object to unsplit the strings with. * @param def * Default value to replace null values in array. * @return Array of all the tokens. */ //TODO - move to JOrphanUtils? public static String unsplit(Object[] splittee, Object splitChar, String def) { StringBuilder retVal = new StringBuilder(); int count = -1; while (++count < splittee.length) { if (splittee[count] != null) { retVal.append(splittee[count]); } else { retVal.append(def); } if (count + 1 < splittee.length) { retVal.append(splitChar); } } return retVal.toString(); } /** * Get the JMeter home directory - does not include the trailing separator. * * @return the home directory */ public static String getJMeterHome() { return jmDir; } /** * Get the JMeter bin directory - does not include the trailing separator. * * @return the bin directory */ public static String getJMeterBinDir() { return jmBin; } public static void setJMeterHome(String home) { jmDir = home; jmBin = jmDir + File.separator + "bin"; // $NON-NLS-1$ } // TODO needs to be synch? Probably not changed after threads have started private static String jmDir; // JMeter Home directory (excludes trailing separator) private static String jmBin; // JMeter bin directory (excludes trailing separator) /** * Gets the JMeter Version. * * @return the JMeter version string */ public static String getJMeterVersion() { return JMeterVersion.getVERSION(); } /** * Gets the JMeter copyright. * * @return the JMeter copyright string */ public static String getJMeterCopyright() { return JMeterVersion.getCopyRight(); } /** * Determine whether we are in 'expert' mode. Certain features may be hidden * from user's view unless in expert mode. * * @return true iif we're in expert mode */ public static boolean isExpertMode() { return JMeterUtils.getPropDefault(EXPERT_MODE_PROPERTY, false); } /** * Find a file in the current directory or in the JMeter bin directory. * * @param fileName * @return File object */ public static File findFile(String fileName){ File f =new File(fileName); if (!f.exists()){ f=new File(getJMeterBinDir(),fileName); } return f; } /** * Returns the cached result from calling * InetAddress.getLocalHost().getHostAddress() * * @return String representation of local IP address */ public static synchronized String getLocalHostIP(){ if (localHostIP == null) { getLocalHostDetails(); } return localHostIP; } /** * Returns the cached result from calling * InetAddress.getLocalHost().getHostName() * * @return local host name */ public static synchronized String getLocalHostName(){ if (localHostName == null) { getLocalHostDetails(); } return localHostName; } /** * Returns the cached result from calling * InetAddress.getLocalHost().getCanonicalHostName() * * @return local host name in canonical form */ public static synchronized String getLocalHostFullName(){ if (localHostFullName == null) { getLocalHostDetails(); } return localHostFullName; } private static void getLocalHostDetails(){ InetAddress localHost=null; try { localHost = InetAddress.getLocalHost(); } catch (UnknownHostException e1) { log.error("Unable to get local host IP address."); return; // TODO - perhaps this should be a fatal error? } localHostIP=localHost.getHostAddress(); localHostName=localHost.getHostName(); localHostFullName=localHost.getCanonicalHostName(); } /** * Split line into name/value pairs and remove colon ':' * * @param headers * multi-line string headers * @return a map name/value for each header */ public static LinkedHashMap parseHeaders(String headers) { LinkedHashMap linkedHeaders = new LinkedHashMap(); String[] list = headers.split("\n"); // $NON-NLS-1$ for (String header : list) { int colon = header.indexOf(':'); // $NON-NLS-1$ if (colon <= 0) { linkedHeaders.put(header, ""); // Empty value // $NON-NLS-1$ } else { linkedHeaders.put(header.substring(0, colon).trim(), header .substring(colon + 1).trim()); } } return linkedHeaders; } /** * Run the runnable in AWT Thread if current thread is not AWT thread * otherwise runs call {@link SwingUtilities#invokeAndWait(Runnable)} * @param runnable {@link Runnable} */ public static final void runSafe(Runnable runnable) { if(SwingUtilities.isEventDispatchThread()) { runnable.run(); } else { try { SwingUtilities.invokeAndWait(runnable); } catch (InterruptedException e) { log.warn("Interrupted in thread "+Thread.currentThread().getName(), e); } catch (InvocationTargetException e) { throw new Error(e); } } } /** * Help GC by triggering GC and finalization */ public static final void helpGC() { System.gc(); System.runFinalization(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/TidyException.java0000644000175000017500000000224212032647221025044 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; /** * Class for reporting errors when running Tidy. */ public class TidyException extends Exception { private static final long serialVersionUID = 240L; public TidyException() { this(0,0); } public TidyException(int errors, int warnings){ super("tidy: " + errors + " errors, " + warnings + " warnings"); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/SlowInputStream.java0000644000175000017500000000320312032647221025372 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; /** * InputStream wrapper to emulate a slow device, e.g. modem * */ public class SlowInputStream extends FilterInputStream { private final CPSPauser pauser; /** * Wraps the input stream to emulate a slow device * @param in input stream * @param cps characters per second to emulate */ public SlowInputStream(InputStream in, int cps) { super(in); pauser = new CPSPauser(cps); } @Override public int read() throws IOException { pauser.pause(1); return in.read(); } // Also handles read(byte[]) @Override public int read(byte[] b, int off, int len) throws IOException { pauser.pause(len); return in.read(b, off, len); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/ColorHelper.java0000644000175000017500000000413612032647221024476 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.awt.Color; /** * This class contains the static utility methods to manipulate colors. * * @version $Revision: 674365 $ */ public final class ColorHelper { /** * Private constructor to prevent instantiation. */ private ColorHelper() { } /** * Given the Color, get the red, green and blue components. * Increment the lowest of the components by the indicated increment value. * If all the components are the same value increment in the order of red, * green and blue. * * @param inc * value to increment the color components * @return the color after change */ public static Color changeColorCyclicIncrement(Color col, int inc) { int red = col.getRed(); int green = col.getGreen(); int blue = col.getBlue(); int temp1 = Math.min(red, green); int temp2 = Math.min(temp1, blue); // now temp2 has the lowest of the three components if (red == temp2) { red += inc; red %= 256; } else if (green == temp2) { green += inc; green %= 256; } else if (blue == temp2) { blue += inc; blue %= 256; } return new Color(red, green, blue); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/XPathUtil.java0000644000175000017500000004133212032647221024141 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.xml.utils.PrefixResolver; import org.apache.xpath.XPathAPI; import org.apache.xpath.objects.XObject; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.tidy.Tidy; import org.xml.sax.EntityResolver; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** * This class provides a few utility methods for dealing with XML/XPath. */ public class XPathUtil { private static final Logger log = LoggingManager.getLoggerForClass(); private XPathUtil() { super(); } //@GuardedBy("this") private static DocumentBuilderFactory documentBuilderFactory; /** * Returns a suitable document builder factory. * Caches the factory in case the next caller wants the same options. * * @param validate should the parser validate documents? * @param whitespace should the parser eliminate whitespace in element content? * @param namespace should the parser be namespace aware? * * @return javax.xml.parsers.DocumentBuilderFactory */ private static synchronized DocumentBuilderFactory makeDocumentBuilderFactory(boolean validate, boolean whitespace, boolean namespace) { if (XPathUtil.documentBuilderFactory == null || documentBuilderFactory.isValidating() != validate || documentBuilderFactory.isNamespaceAware() != namespace || documentBuilderFactory.isIgnoringElementContentWhitespace() != whitespace) { // configure the document builder factory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setValidating(validate); documentBuilderFactory.setNamespaceAware(namespace); documentBuilderFactory.setIgnoringElementContentWhitespace(whitespace); } return XPathUtil.documentBuilderFactory; } /** * Create a DocumentBuilder using the makeDocumentFactory func. * * @param validate should the parser validate documents? * @param whitespace should the parser eliminate whitespace in element content? * @param namespace should the parser be namespace aware? * @param downloadDTDs if true, parser should attempt to resolve external entities * @return document builder * @throws ParserConfigurationException */ public static DocumentBuilder makeDocumentBuilder(boolean validate, boolean whitespace, boolean namespace, boolean downloadDTDs) throws ParserConfigurationException { DocumentBuilder builder = makeDocumentBuilderFactory(validate, whitespace, namespace).newDocumentBuilder(); builder.setErrorHandler(new MyErrorHandler(validate, false)); if (!downloadDTDs){ EntityResolver er = new EntityResolver(){ public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { return new InputSource(new ByteArrayInputStream(new byte[]{})); } }; builder.setEntityResolver(er); } return builder; } /** * Utility function to get new Document * * @param stream - Document Input stream * @param validate - Validate Document (not Tidy) * @param whitespace - Element Whitespace (not Tidy) * @param namespace - Is Namespace aware. (not Tidy) * @param tolerant - Is tolerant - i.e. use the Tidy parser * @param quiet - set Tidy quiet * @param showWarnings - set Tidy warnings * @param report_errors - throw TidyException if Tidy detects an error * @param isXml - is document already XML (Tidy only) * @param downloadDTDs - if true, try to download external DTDs * @return document * @throws ParserConfigurationException * @throws SAXException * @throws IOException * @throws TidyException */ public static Document makeDocument(InputStream stream, boolean validate, boolean whitespace, boolean namespace, boolean tolerant, boolean quiet, boolean showWarnings, boolean report_errors, boolean isXml, boolean downloadDTDs) throws ParserConfigurationException, SAXException, IOException, TidyException { return makeDocument(stream, validate, whitespace, namespace, tolerant, quiet, showWarnings, report_errors, isXml, downloadDTDs, null); } /** * Utility function to get new Document * * @param stream - Document Input stream * @param validate - Validate Document (not Tidy) * @param whitespace - Element Whitespace (not Tidy) * @param namespace - Is Namespace aware. (not Tidy) * @param tolerant - Is tolerant - i.e. use the Tidy parser * @param quiet - set Tidy quiet * @param showWarnings - set Tidy warnings * @param report_errors - throw TidyException if Tidy detects an error * @param isXml - is document already XML (Tidy only) * @param downloadDTDs - if true, try to download external DTDs * @param tidyOut OutputStream for Tidy pretty-printing * @return document * @throws ParserConfigurationException * @throws SAXException * @throws IOException * @throws TidyException */ public static Document makeDocument(InputStream stream, boolean validate, boolean whitespace, boolean namespace, boolean tolerant, boolean quiet, boolean showWarnings, boolean report_errors, boolean isXml, boolean downloadDTDs, OutputStream tidyOut) throws ParserConfigurationException, SAXException, IOException, TidyException { Document doc; if (tolerant) { doc = tidyDoc(stream, quiet, showWarnings, report_errors, isXml, tidyOut); } else { doc = makeDocumentBuilder(validate, whitespace, namespace, downloadDTDs).parse(stream); } return doc; } /** * Create a document using Tidy * * @param stream - input * @param quiet - set Tidy quiet? * @param showWarnings - show Tidy warnings? * @param report_errors - log errors and throw TidyException? * @param isXML - treat document as XML? * @param out OutputStream, null if no output required * @return the document * * @throws TidyException if a ParseError is detected and report_errors is true */ private static Document tidyDoc(InputStream stream, boolean quiet, boolean showWarnings, boolean report_errors, boolean isXML, OutputStream out) throws TidyException { StringWriter sw = new StringWriter(); Tidy tidy = makeTidyParser(quiet, showWarnings, isXML, sw); Document doc = tidy.parseDOM(stream, out); doc.normalize(); if (tidy.getParseErrors() > 0) { if (report_errors) { log.error("TidyException: " + sw.toString()); throw new TidyException(tidy.getParseErrors(),tidy.getParseWarnings()); } log.warn("Tidy errors: " + sw.toString()); } return doc; } /** * Create a Tidy parser with the specified settings. * * @param quiet - set the Tidy quiet flag? * @param showWarnings - show Tidy warnings? * @param isXml - treat the content as XML? * @param stringWriter - if non-null, use this for Tidy errorOutput * @return the Tidy parser */ public static Tidy makeTidyParser(boolean quiet, boolean showWarnings, boolean isXml, StringWriter stringWriter) { Tidy tidy = new Tidy(); tidy.setInputEncoding("UTF8"); tidy.setOutputEncoding("UTF8"); tidy.setQuiet(quiet); tidy.setShowWarnings(showWarnings); tidy.setMakeClean(true); tidy.setXmlTags(isXml); if (stringWriter != null) { tidy.setErrout(new PrintWriter(stringWriter)); } return tidy; } static class MyErrorHandler implements ErrorHandler { private final boolean val, tol; private final String type; MyErrorHandler(boolean validate, boolean tolerate) { val = validate; tol = tolerate; type = "Val=" + val + " Tol=" + tol; } public void warning(SAXParseException ex) throws SAXException { log.info("Type=" + type + " " + ex); if (val && !tol){ throw new SAXException(ex); } } public void error(SAXParseException ex) throws SAXException { log.warn("Type=" + type + " " + ex); if (val && !tol) { throw new SAXException(ex); } } public void fatalError(SAXParseException ex) throws SAXException { log.error("Type=" + type + " " + ex); if (val && !tol) { throw new SAXException(ex); } } } /** * Return value for node * @param node Node * @return String */ private static String getValueForNode(Node node) { StringWriter sw = new StringWriter(); try { Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); t.transform(new DOMSource(node), new StreamResult(sw)); } catch (TransformerException e) { sw.write(e.getMessageAndLocation()); } return sw.toString(); } /** * Extract NodeList using expression * @param document {@link Document} * @param xPathExpression XPath expression * @return {@link NodeList} * @throws TransformerException */ public static NodeList selectNodeList(Document document, String xPathExpression) throws TransformerException { XObject xObject = XPathAPI.eval(document, xPathExpression, getPrefixResolver(document)); return xObject.nodelist(); } /** * Put in matchStrings results of evaluation * @param document XML document * @param xPathQuery XPath Query * @param matchStrings List that will be filled * @param fragment return fragment * @throws TransformerException */ public static void putValuesForXPathInList(Document document, String xPathQuery, List matchStrings, boolean fragment) throws TransformerException { String val = null; XObject xObject = XPathAPI.eval(document, xPathQuery, getPrefixResolver(document)); final int objectType = xObject.getType(); if (objectType == XObject.CLASS_NODESET) { NodeList matches = xObject.nodelist(); int length = matches.getLength(); for (int i = 0 ; i < length; i++) { Node match = matches.item(i); if ( match instanceof Element){ if (fragment){ val = getValueForNode(match); } else { // elements have empty nodeValue, but we are usually interested in their content final Node firstChild = match.getFirstChild(); if (firstChild != null) { val = firstChild.getNodeValue(); } else { val = match.getNodeValue(); // TODO is this correct? } } } else { val = match.getNodeValue(); } matchStrings.add(val); } } else if (objectType == XObject.CLASS_NULL || objectType == XObject.CLASS_UNKNOWN || objectType == XObject.CLASS_UNRESOLVEDVARIABLE) { log.warn("Unexpected object type: "+xObject.getTypeString()+" returned for: "+xPathQuery); } else { val = xObject.toString(); matchStrings.add(val); } } /** * * @param document XML Document * @return {@link PrefixResolver} */ private static PrefixResolver getPrefixResolver(Document document) { PropertiesBasedPrefixResolver propertiesBasedPrefixResolver = new PropertiesBasedPrefixResolver(document.getDocumentElement()); return propertiesBasedPrefixResolver; } /** * Validate xpathString is a valid XPath expression * @param document XML Document * @param xpathString XPATH String * @throws TransformerException if expression fails to evaluate */ public static void validateXPath(Document document, String xpathString) throws TransformerException { if (XPathAPI.eval(document, xpathString, getPrefixResolver(document)) == null) { // We really should never get here // because eval will throw an exception // if xpath is invalid, but whatever, better // safe throw new IllegalArgumentException("xpath eval of '" + xpathString + "' was null"); } } /** * Fills result * @param result {@link AssertionResult} * @param doc XML Document * @param xPathExpression XPath expression * @param isNegated */ public static void computeAssertionResult(AssertionResult result, Document doc, String xPathExpression, boolean isNegated) { try { XObject xObject = XPathAPI.eval(doc, xPathExpression, getPrefixResolver(doc)); switch (xObject.getType()) { case XObject.CLASS_NODESET: NodeList nodeList = xObject.nodelist(); if (nodeList == null || nodeList.getLength() == 0) { if (log.isDebugEnabled()) { log.debug(new StringBuilder("nodeList null no match ").append(xPathExpression).toString()); } result.setFailure(!isNegated); result.setFailureMessage("No Nodes Matched " + xPathExpression); return; } if (log.isDebugEnabled()) { log.debug("nodeList length " + nodeList.getLength()); if (!isNegated) { for (int i = 0; i < nodeList.getLength(); i++){ log.debug(new StringBuilder("nodeList[").append(i).append("] ").append(nodeList.item(i)).toString()); } } } result.setFailure(isNegated); if (isNegated) { result.setFailureMessage("Specified XPath was found... Turn off negate if this is not desired"); } return; case XObject.CLASS_BOOLEAN: if (!xObject.bool()){ result.setFailure(!isNegated); result.setFailureMessage("No Nodes Matched " + xPathExpression); } return; default: result.setFailure(true); result.setFailureMessage("Cannot understand: " + xPathExpression); return; } } catch (TransformerException e) { result.setError(true); result.setFailureMessage( new StringBuilder("TransformerException: ") .append(e.getMessage()) .append(" for:") .append(xPathExpression) .toString()); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/PropertiesBasedPrefixResolver.java0000644000175000017500000000723312032647221030254 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.commons.lang3.StringUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.xml.utils.PrefixResolver; import org.apache.xml.utils.PrefixResolverDefault; import org.w3c.dom.Node; /** * {@link PrefixResolver} implementation that loads prefix configuration from jmeter property xpath.namespace.config */ public class PropertiesBasedPrefixResolver extends PrefixResolverDefault { private static final Logger logger = LoggingManager.getLoggerForClass(); private static final String XPATH_NAMESPACE_CONFIG = "xpath.namespace.config"; private static final Map NAMESPACE_MAP = new HashMap(); static { String pathToNamespaceConfig = JMeterUtils.getPropDefault(XPATH_NAMESPACE_CONFIG, ""); if(!StringUtils.isEmpty(pathToNamespaceConfig)) { Properties properties = new Properties(); InputStream inputStream = null; try { File pathToNamespaceConfigFile = JMeterUtils.findFile(pathToNamespaceConfig); if(!pathToNamespaceConfigFile.exists()) { logger.error("Cannot find configured file:'"+ pathToNamespaceConfig+"' in property:'"+XPATH_NAMESPACE_CONFIG+"', file does not exist"); } else { if(!pathToNamespaceConfigFile.canRead()) { logger.error("Cannot read configured file:'"+ pathToNamespaceConfig+"' in property:'"+XPATH_NAMESPACE_CONFIG+"'"); } else { inputStream = new BufferedInputStream(new FileInputStream(pathToNamespaceConfigFile)); properties.load(inputStream); properties.entrySet(); for (Map.Entry entry : properties.entrySet()) { NAMESPACE_MAP.put((String) entry.getKey(), (String) entry.getValue()); } logger.info("Read following XPath namespace configuration "+ NAMESPACE_MAP); } } } catch(IOException e) { logger.error("Error loading namespaces from file:'"+ pathToNamespaceConfig+"', message:"+e.getMessage(),e); } finally { JOrphanUtils.closeQuietly(inputStream); } } } /** * @param xpathExpressionContext Node */ public PropertiesBasedPrefixResolver(Node xpathExpressionContext) { super(xpathExpressionContext); } /** * Searches prefix in NAMESPACE_MAP, if it fails to find it defaults to parent implementation * @param prefix Prefix * @param namespaceContext Node */ @Override public String getNamespaceForPrefix(String prefix, Node namespaceContext) { String namespace = NAMESPACE_MAP.get(prefix); if(namespace==null) { return super.getNamespaceForPrefix(prefix, namespaceContext); } else { return namespace; } } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/LocaleChangeEvent.java0000644000175000017500000000246312032647221025570 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.util.EventObject; import java.util.Locale; /** * @version $Revision: 905027 $ */ public class LocaleChangeEvent extends EventObject { private static final long serialVersionUID = 240L; private Locale locale; public LocaleChangeEvent(Object source) { super(source); } public LocaleChangeEvent(Object source, Locale locale) { super(source); this.locale = locale; } public Locale getLocale() { return locale; } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/JMeterVersion.java0000644000175000017500000000661712032647221025022 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on 02-Oct-2003 * * This class defines the JMeter version only (moved from JMeterUtils) * * Version changes no longer change the JMeterUtils source file * - easier to spot when JMeterUtils really changes * - much smaller to download when the version changes * */ package org.apache.jmeter.util; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Properties; import org.apache.commons.io.IOUtils; /** * Utility class to define the JMeter Version string * */ public final class JMeterVersion { /* * * The string is made private so the compiler can't propagate it into * JMeterUtils. (Java compilers may make copies of final variables) * * This ensures that JMeterUtils always gets the correct * version, even if JMeterUtils is not re-compiled during the build. */ private static final String VERSION = "2.8"; private static final String IMPLEMENTATION; // Same applies to copyright string private static final String COPYRIGHT = "Copyright (c) 1998-2012 The Apache Software Foundation"; static { String impl=null; final Class myClass = JMeterVersion.class; // This assumes that the JMV treats a class file as a resource (not all do). URL resource = myClass.getResource("JMeterVersion.class"); // For example: // jar:file:/JMeter/lib/ext/ApacheJMeter_core.jar!/org/apache/jmeter/util/JMeterVersion.class // or if using an IDE // file:/workspaces/JMeter/build/core/org/apache/jmeter/util/JMeterVersion.class try { // Convert to URL for manifest String url = resource.toString().replaceFirst("!/.+", "!/META-INF/MANIFEST.MF"); resource=new URL(url); InputStream inputStream = resource.openStream(); if (inputStream != null) { Properties props = new Properties(); try { props.load(inputStream); impl = props.getProperty("Implementation-Version"); } finally { IOUtils.closeQuietly(inputStream); } } } catch (IOException ioe) { // Ignored } if (impl == null) { IMPLEMENTATION = VERSION; // default to plain version } else { IMPLEMENTATION = impl; } } private JMeterVersion() // Not instantiable { super(); } static String getVERSION() { return IMPLEMENTATION; } public static String getCopyRight() { return COPYRIGHT; } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/HttpSSLProtocolSocketFactory.java0000644000175000017500000002073112032647221030003 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.util; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.UnknownHostException; import java.security.GeneralSecurityException; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; import org.apache.commons.httpclient.ConnectTimeoutException; import org.apache.commons.httpclient.params.HttpConnectionParams; import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Derived from EasySSLProtocolFactory * * Used by JsseSSLManager to set up the Commons HttpClient and Java https socket handling */ public class HttpSSLProtocolSocketFactory extends SSLSocketFactory // for java sockets implements SecureProtocolSocketFactory { // for Commons Httpclient sockets private static final Logger log = LoggingManager.getLoggerForClass(); private final JsseSSLManager sslManager; private final int CPS; // Characters per second to emulate public HttpSSLProtocolSocketFactory(JsseSSLManager sslManager) { this(sslManager, 0); } public HttpSSLProtocolSocketFactory(JsseSSLManager sslManager, int cps) { super(); this.sslManager = sslManager; CPS=cps; } private static final String protocolList = JMeterUtils.getPropDefault("https.socket.protocols", ""); // $NON-NLS-1$ $NON-NLS-2$ static { if (protocolList.length()>0){ log.info("Using protocol list: "+protocolList); } } private static final String[] protocols = protocolList.split(" "); // $NON-NLS-1$ private void setSocket(Socket socket){ if (!(socket instanceof SSLSocket)) { throw new IllegalArgumentException("Expected SSLSocket"); } SSLSocket sock = (SSLSocket) socket; if (protocolList.length() > 0) { try { sock.setEnabledProtocols(protocols); } catch (IllegalArgumentException e) { log.warn("Could not set protocol list: " + protocolList + "."); log.warn("Valid protocols are: " + join(sock.getSupportedProtocols())); } } } private String join(String[] strings) { StringBuilder sb = new StringBuilder(); for (int i=0;i0) { sb.append(" "); } sb.append(strings[i]); } return sb.toString(); } private SSLSocketFactory getSSLSocketFactory() throws IOException { try { SSLContext sslContext = this.sslManager.getContext(); return sslContext.getSocketFactory(); } catch (GeneralSecurityException ex) { throw new IOException(ex.getMessage()); } } /* * Wraps the socket in a slow SSL socket if necessary */ private Socket wrapSocket(Socket sock){ if (CPS>0) { return new SlowSSLSocket((SSLSocket) sock, CPS); } return sock; } /** * Attempts to get a new socket connection to the given host within the given time limit. * * @param host the host name/IP * @param port the port on the host * @param localAddress the local host name/IP to bind the socket to * @param localPort the port on the local machine * @param params {@link HttpConnectionParams Http connection parameters} * * @return Socket a new socket * * @throws IOException if an I/O error occurs while creating the socket * @throws UnknownHostException if the IP address of the host cannot be * determined */ public Socket createSocket( final String host, final int port, final InetAddress localAddress, final int localPort, final HttpConnectionParams params ) throws IOException, UnknownHostException, ConnectTimeoutException { if (params == null) { throw new IllegalArgumentException("Parameters may not be null"); } int timeout = params.getConnectionTimeout(); SSLSocketFactory sslfac = getSSLSocketFactory(); Socket socket; if (timeout == 0) { socket = sslfac.createSocket(host, port, localAddress, localPort); } else { socket = sslfac.createSocket(); SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); SocketAddress remoteaddr = new InetSocketAddress(host, port); socket.bind(localaddr); socket.connect(remoteaddr, timeout); } setSocket(socket); return wrapSocket(socket); } /** * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int) */ @Override public Socket createSocket(String host, int port) throws IOException, UnknownHostException { SSLSocketFactory sslfac = getSSLSocketFactory(); Socket sock = sslfac.createSocket( host, port ); setSocket(sock); return wrapSocket(sock); } /** * @see javax.net.SocketFactory#createSocket() */ @Override public Socket createSocket() throws IOException, UnknownHostException { SSLSocketFactory sslfac = getSSLSocketFactory(); Socket sock = sslfac.createSocket(); setSocket(sock); return wrapSocket(sock); } /** * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean) */ @Override public Socket createSocket( Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { SSLSocketFactory sslfac = getSSLSocketFactory(); Socket sock = sslfac.createSocket( socket, host, port, autoClose ); setSocket(sock); return wrapSocket(sock); } /** * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int,java.net.InetAddress,int) */ @Override public Socket createSocket( String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException { SSLSocketFactory sslfac = getSSLSocketFactory(); Socket sock = sslfac.createSocket( host, port, clientHost, clientPort ); setSocket(sock); return wrapSocket(sock); } @Override public Socket createSocket(InetAddress host, int port) throws IOException { SSLSocketFactory sslfac = getSSLSocketFactory(); Socket sock=sslfac.createSocket(host,port); setSocket(sock); return wrapSocket(sock); } @Override public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException { SSLSocketFactory sslfac = getSSLSocketFactory(); Socket sock=sslfac.createSocket(address, port, localAddress, localPort); setSocket(sock); return wrapSocket(sock); } @Override public String[] getDefaultCipherSuites() { try { SSLSocketFactory sslfac = getSSLSocketFactory(); return sslfac.getDefaultCipherSuites(); } catch (IOException ex) { return new String[] {}; } } @Override public String[] getSupportedCipherSuites() { try { SSLSocketFactory sslfac = getSSLSocketFactory(); return sslfac.getSupportedCipherSuites(); } catch (IOException ex) { return new String[] {}; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/keystore/0000755000175000017500000000000012165514773023272 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/util/keystore/JmeterKeyStore.java0000644000175000017500000002016712032647221027043 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util.keystore; import java.io.InputStream; import java.security.KeyStore; import java.security.Principal; import java.security.PrivateKey; import java.security.cert.Certificate; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Enumeration; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Use this Keystore for JMeter specific KeyStores. * */ public final class JmeterKeyStore { private static final Logger LOG = LoggingManager.getLoggerForClass(); private final KeyStore store; private final int startIndex; private final int endIndex; private X509Certificate[][] certChains; private PrivateKey[] keys; private String[] names = new String[0]; // default empty array to prevent NPEs //@GuardedBy("this") private int last_user; private JmeterKeyStore(String type, int startIndex, int endIndex) throws Exception { if (startIndex < 0 || endIndex < 0 || endIndex < startIndex) { throw new IllegalArgumentException("Invalid index(es). Start="+startIndex+", end="+endIndex); } this.store = KeyStore.getInstance(type); this.startIndex = startIndex; this.endIndex = endIndex; } /** * Process the input stream */ public void load(InputStream is, String pword) throws Exception { char pw[] = pword==null ? null : pword.toCharArray(); store.load(is, pw); ArrayList v_names = new ArrayList(); ArrayList v_keys = new ArrayList(); ArrayList v_certChains = new ArrayList(); if (null != is){ // No point checking an empty keystore PrivateKey _key = null; int index = 0; Enumeration aliases = store.aliases(); while (aliases.hasMoreElements()) { String alias = aliases.nextElement(); if (store.isKeyEntry(alias)) { if (index >= startIndex && index <= endIndex) { _key = (PrivateKey) store.getKey(alias, pw); if (null == _key) { throw new Exception("No key found for alias: " + alias); // Should not happen } Certificate[] chain = store.getCertificateChain(alias); if (null == chain) { throw new Exception("No certificate chain found for alias: " + alias); } v_names.add(alias); v_keys.add(_key); X509Certificate[] x509certs = new X509Certificate[chain.length]; for (int i = 0; i < x509certs.length; i++) { x509certs[i] = (X509Certificate)chain[i]; } v_certChains.add(x509certs); } index++; } } if (null == _key) { throw new Exception("No key(s) found"); } if (index <= endIndex-startIndex) { LOG.warn("Did not find all requested aliases. Start="+startIndex+", end="+endIndex+", found="+v_certChains.size()); } } /* * Note: if is == null, the arrays will be empty */ int v_size = v_names.size(); this.names = new String[v_size]; this.names = v_names.toArray(names); this.keys = new PrivateKey[v_size]; this.keys = v_keys.toArray(keys); this.certChains = new X509Certificate[v_size][]; this.certChains = v_certChains.toArray(certChains); } /** * Get the ordered certificate chain for a specific alias. */ public X509Certificate[] getCertificateChain(String alias) { int entry = findAlias(alias); if (entry >=0) { return this.certChains[entry]; } // API expects null not empty array, see http://docs.oracle.com/javase/6/docs/api/javax/net/ssl/X509KeyManager.html return null; } /** * Get the next or only alias. * @return the next or only alias. */ public String getAlias() { int length = this.names.length; if (length == 0) { // i.e. is == null return null; } return this.names[getIndexAndIncrement(length)]; } public int getAliasCount() { return this.names.length; } public String getAlias(int index) { int length = this.names.length; if (length == 0 && index == 0) { // i.e. is == null return null; } if (index >= length || index < 0) { throw new ArrayIndexOutOfBoundsException(index); } return this.names[index]; } /** * Return the private Key for a specific alias */ public PrivateKey getPrivateKey(String alias) { int entry = findAlias(alias); if (entry >=0) { return this.keys[entry]; } return null; } /** * Create a keystore which returns a range of aliases (if available) * @param type store type (e.g. JKS) * @param startIndex first index (from 0) * @param endIndex last index (to count -1) * @return the keystore * @throws Exception */ public static JmeterKeyStore getInstance(String type, int startIndex, int endIndex) throws Exception { return new JmeterKeyStore(type, startIndex, endIndex); } /** * Create a keystore which returns the first alias only. * @param type e.g. JKS * @return the keystore * @throws Exception */ public static JmeterKeyStore getInstance(String type) throws Exception { return new JmeterKeyStore(type, 0, 0); } private int findAlias(String alias) { for(int i = 0; i < names.length; i++) { if (alias.equals(names[i])){ return i; } } return -1; } /** * Gets current index and increment by rolling if index is equal to length * @param length Number of keys to roll */ private int getIndexAndIncrement(int length) { synchronized(this) { int result = last_user++; if (last_user >= length) { last_user = 0; } return result; } } /** * Compiles the list of all client aliases with a private key. * TODO Currently, keyType and issuers are both ignored. * * @param keyType the key algorithm type name (RSA, DSA, etc.) * @param issuers the CA certificates we are narrowing our selection on. * * @return the array of aliases; may be empty */ public String[] getClientAliases(String keyType, Principal[] issuers) { int count = getAliasCount(); String[] aliases = new String[count]; for(int i = 0; i < aliases.length; i++) { // if (keys[i].getAlgorithm().equals(keyType)){ // // } aliases[i] = this.names[i]; } if(aliases.length>0) { return aliases; } else { // API expects null not empty array, see http://docs.oracle.com/javase/6/docs/api/javax/net/ssl/X509KeyManager.html return null; } } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/JSR223TestElement.java0000644000175000017500000002146012032647221025316 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Serializable; import java.util.Collections; import java.util.Map; import java.util.Properties; import javax.script.Bindings; import javax.script.Compilable; import javax.script.CompiledScript; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import org.apache.commons.collections.map.LRUMap; import org.apache.commons.io.IOUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public abstract class JSR223TestElement extends AbstractTestElement implements Serializable, Cloneable { /** * Initialization On Demand Holder pattern */ private static class LazyHolder { public static final ScriptEngineManager INSTANCE = new ScriptEngineManager(); } /** * @return ScriptEngineManager singleton */ public static ScriptEngineManager getInstance() { return LazyHolder.INSTANCE; } private static final long serialVersionUID = 233L; //++ For TestBean implementations only private String parameters; // passed to file or script private String filename; // file to source (overrides script) private String script; // script (if file not provided) private String scriptLanguage; // JSR223 language to use /** * Cache of compiled scripts */ @SuppressWarnings("unchecked") // LRUMap does not support generics (yet) private static final Map compiledScriptsCache = Collections.synchronizedMap( new LRUMap(JMeterUtils.getPropDefault("jsr223.compiled_scripts_cache_size", 100))); //-- For TestBean implementations only public JSR223TestElement() { super(); init(); } private void init() { parameters=""; // ensure variables are not null filename=""; script=""; scriptLanguage=""; } protected Object readResolve() { init(); return this; } @Override public Object clone() { JSR223TestElement o = (JSR223TestElement) super.clone(); o.init(); return o; } protected ScriptEngine getScriptEngine() throws ScriptException { final String lang = getScriptLanguage(); ScriptEngine scriptEngine = getInstance().getEngineByName(lang); if (scriptEngine == null) { throw new ScriptException("Cannot find engine named: "+lang); } return scriptEngine; } /** * Populate variables to be passed to scripts * @param bindings Bindings */ protected void populateBindings(Bindings bindings) { final String label = getName(); final String fileName = getFilename(); final String scriptParameters = getParameters(); // Use actual class name for log final Logger logger = LoggingManager.getLoggerForShortName(getClass().getName()); bindings.put("log", logger); bindings.put("Label", label); bindings.put("FileName", fileName); bindings.put("Parameters", scriptParameters); String [] args=JOrphanUtils.split(scriptParameters, " ");//$NON-NLS-1$ bindings.put("args", args); // Add variables for access to context and variables JMeterContext jmctx = JMeterContextService.getContext(); bindings.put("ctx", jmctx); JMeterVariables vars = jmctx.getVariables(); bindings.put("vars", vars); Properties props = JMeterUtils.getJMeterProperties(); bindings.put("props", props); // For use in debugging: bindings.put("OUT", System.out); // Most subclasses will need these: Sampler sampler = jmctx.getCurrentSampler(); bindings.put("sampler", sampler); SampleResult prev = jmctx.getPreviousResult(); bindings.put("prev", prev); } /** * This method will run inline script or file script with special behaviour for file script: * - If ScriptEngine implements Compilable script will be compiled and cached * - If not if will be run * @param scriptEngine ScriptEngine * @param bindings {@link Bindings} might be null * @return Object returned by script * @throws IOException * @throws ScriptException */ protected Object processFileOrScript(ScriptEngine scriptEngine, Bindings bindings) throws IOException, ScriptException { if(bindings == null) { bindings = scriptEngine.createBindings(); } populateBindings(bindings); File scriptFile = new File(getFilename()); // Hack as in bsh-2.0b5.jar BshScriptEngine implements Compilable but throws new Error boolean supportsCompilable = scriptEngine instanceof Compilable && !(scriptEngine.getClass().getName().equals("bsh.engine.BshScriptEngine")); if (scriptFile.exists()) { BufferedReader fileReader = null; try { if(supportsCompilable) { String cacheKey = getScriptLanguage()+"#"+ scriptFile.getAbsolutePath()+"#"+ scriptFile.lastModified(); CompiledScript compiledScript = compiledScriptsCache.get(cacheKey); if(compiledScript==null) { synchronized (compiledScriptsCache) { compiledScript = compiledScriptsCache.get(cacheKey); if(compiledScript==null) { // TODO Charset ? fileReader = new BufferedReader(new FileReader(scriptFile), (int)scriptFile.length()); compiledScript = ((Compilable) scriptEngine).compile(fileReader); compiledScriptsCache.put(cacheKey, compiledScript); } } } return compiledScript.eval(bindings); } else { // TODO Charset ? fileReader = new BufferedReader(new FileReader(scriptFile), (int)scriptFile.length()); return scriptEngine.eval(fileReader, bindings); } } finally { IOUtils.closeQuietly(fileReader); } } else { return scriptEngine.eval(getScript(), bindings); } } /** * Return the script (TestBean version). * Must be overridden for subclasses that don't implement TestBean * otherwise the clone() method won't work. * * @return the script to execute */ public String getScript(){ return script; } /** * Set the script (TestBean version). * Must be overridden for subclasses that don't implement TestBean * otherwise the clone() method won't work. * * @param s the script to execute (may be blank) */ public void setScript(String s){ script=s; } public String getParameters() { return parameters; } public void setParameters(String s) { parameters = s; } public String getFilename() { return filename; } public void setFilename(String s) { filename = s; } public String getScriptLanguage() { return scriptLanguage; } public void setScriptLanguage(String s) { scriptLanguage = s; } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/SSLManager.java0000644000175000017500000002556612032647221024226 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.security.KeyStore; import java.security.Provider; import java.security.Security; import java.util.Locale; import javax.swing.JOptionPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.keystore.JmeterKeyStore; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * The SSLManager handles the KeyStore information for JMeter. Basically, it * handles all the logic for loading and initializing all the JSSE parameters * and selecting the alias to authenticate against if it is available. * SSLManager will try to automatically select the client certificate for you, * but if it can't make a decision, it will pop open a dialog asking you for * more information. * * TODO? - N.B. does not currently allow the selection of a client certificate. * */ public abstract class SSLManager { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String SSL_TRUST_STORE = "javax.net.ssl.trustStore";// $NON-NLS-1$ private static final String KEY_STORE_PASSWORD = "javax.net.ssl.keyStorePassword"; // $NON-NLS-1$ public static final String JAVAX_NET_SSL_KEY_STORE = "javax.net.ssl.keyStore"; // $NON-NLS-1$ private static final String JAVAX_NET_SSL_KEY_STORE_TYPE = "javax.net.ssl.keyStoreType"; // $NON-NLS-1$ private static final String PKCS12 = "pkcs12"; // $NON-NLS-1$ /** Singleton instance of the manager */ //@GuardedBy("this") private static SSLManager manager; private static final boolean isSSLSupported = true; /** Cache the KeyStore instance */ private volatile JmeterKeyStore keyStore; /** Cache the TrustStore instance - null if no truststore name was provided */ private KeyStore trustStore = null; // Have we yet tried to load the truststore? private volatile boolean truststore_loaded=false; /** Have the password available */ protected String defaultpw = System.getProperty(KEY_STORE_PASSWORD); private int keystoreAliasStartIndex; private int keystoreAliasEndIndex; /** * Resets the SSLManager so that we can create a new one with a new keystore */ public static synchronized void reset() { SSLManager.manager = null; } public abstract void setContext(HttpURLConnection conn); /** * Default implementation of setting the Provider */ protected void setProvider(Provider provider) { if (null != provider) { Security.addProvider(provider); } } /** * Opens and initializes the KeyStore. If the password for the KeyStore is * not set, this method will prompt you to enter it. Unfortunately, there is * no PasswordEntryField available from JOptionPane. */ protected JmeterKeyStore getKeyStore() { if (null == this.keyStore) { String fileName = System.getProperty(JAVAX_NET_SSL_KEY_STORE,""); // empty if not provided String fileType = System.getProperty(JAVAX_NET_SSL_KEY_STORE_TYPE, // use the system property to determine the type fileName.toLowerCase(Locale.UK).endsWith(".p12") ? PKCS12 : "JKS"); // otherwise use the name log.info("JmeterKeyStore Location: " + fileName + " type " + fileType); try { this.keyStore = JmeterKeyStore.getInstance(fileType, keystoreAliasStartIndex, keystoreAliasEndIndex); log.info("KeyStore created OK"); } catch (Exception e) { this.keyStore = null; throw new RuntimeException("Could not create keystore: "+e.getMessage(), e); } InputStream fileInputStream = null; try { File initStore = new File(fileName); if (fileName.length() >0 && initStore.exists()) { fileInputStream = new BufferedInputStream(new FileInputStream(initStore)); this.keyStore.load(fileInputStream, getPassword()); if (log.isInfoEnabled()) { log.info("Total of " + keyStore.getAliasCount() + " aliases loaded OK from keystore"); } } else { log.warn("Keystore file not found, loading empty keystore"); this.defaultpw = ""; // Ensure not null this.keyStore.load(null, ""); } } catch (Exception e) { log.error("Problem loading keystore: " +e.getMessage(), e); } finally { JOrphanUtils.closeQuietly(fileInputStream); } log.debug("JmeterKeyStore type: " + this.keyStore.getClass().toString()); } return this.keyStore; } /* * The password can be defined as a property; this dialogue is provided to allow it * to be entered at run-time. * * However, this does not gain much, as the dialogue does not (yet) support hidden input ... * */ private String getPassword() { String password = this.defaultpw; if (null == password) { final GuiPackage guiInstance = GuiPackage.getInstance(); if (guiInstance != null) { synchronized (this) { // TODO is sync really needed? this.defaultpw = JOptionPane.showInputDialog( guiInstance.getMainFrame(), JMeterUtils.getResString("ssl_pass_prompt"), // $NON-NLS-1$ JMeterUtils.getResString("ssl_pass_title"), // $NON-NLS-1$ JOptionPane.QUESTION_MESSAGE); System.setProperty(KEY_STORE_PASSWORD, this.defaultpw); password = this.defaultpw; } } else { log.warn("No password provided, and no GUI present so cannot prompt"); } } return password; } /** * Opens and initializes the TrustStore. * * There are 3 possibilities: * - no truststore name provided, in which case the default Java truststore should be used * - truststore name is provided, and loads OK * - truststore name is provided, but is not found or does not load OK, in which case an empty * truststore is created * * If the KeyStore object cannot be created, then this is currently treated the same * as if no truststore name was provided. * * @return truststore * - null: use Java truststore * - otherwise, the truststore, which may be empty if the file could not be loaded. * */ protected KeyStore getTrustStore() { if (!truststore_loaded) { truststore_loaded=true;// we've tried ... String fileName = System.getProperty(SSL_TRUST_STORE); if (fileName == null) { return null; } log.info("TrustStore Location: " + fileName); try { this.trustStore = KeyStore.getInstance("JKS"); log.info("TrustStore created OK, Type: JKS"); } catch (Exception e) { this.trustStore = null; throw new RuntimeException("Problem creating truststore: "+e.getMessage(), e); } InputStream fileInputStream = null; try { File initStore = new File(fileName); if (initStore.exists()) { fileInputStream = new BufferedInputStream(new FileInputStream(initStore)); this.trustStore.load(fileInputStream, null); log.info("Truststore loaded OK from file"); } else { log.info("Truststore file not found, loading empty truststore"); this.trustStore.load(null, null); } } catch (Exception e) { throw new RuntimeException("Can't load TrustStore: " + e.getMessage(), e); } finally { JOrphanUtils.closeQuietly(fileInputStream); } } return this.trustStore; } /** * Protected Constructor to remove the possibility of directly instantiating * this object. Create the SSLContext, and wrap all the X509KeyManagers with * our X509KeyManager so that we can choose our alias. */ protected SSLManager() { } /** * Static accessor for the SSLManager object. The SSLManager is a singleton. */ public static final synchronized SSLManager getInstance() { if (null == SSLManager.manager) { SSLManager.manager = new JsseSSLManager(null); // if (SSLManager.isSSLSupported) { // String classname = null; // classname = "org.apache.jmeter.util.JsseSSLManager"; // $NON-NLS-1$ // // try { // Class clazz = Class.forName(classname); // Constructor con = clazz.getConstructor(new Class[] { Provider.class }); // SSLManager.manager = (SSLManager) con.newInstance(new Object[] { SSLManager.sslProvider }); // } catch (Exception e) { // log.error("Could not create SSLManager instance", e); // $NON-NLS-1$ // SSLManager.isSSLSupported = false; // return null; // } // } } return SSLManager.manager; } /** * Test whether SSL is supported or not. */ public static final boolean isSSLSupported() { return SSLManager.isSSLSupported; } /** * Configure Keystore * @param preload * @param startIndex * @param endIndex */ public void configureKeystore(boolean preload, int startIndex, int endIndex) { this.keystoreAliasStartIndex = startIndex; this.keystoreAliasEndIndex = endIndex; if(preload) { keyStore = getKeyStore(); } } /** * Destroy Keystore */ public void destroyKeystore() { keyStore=null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/NamedObject.java0000644000175000017500000000167112032647221024434 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; // TODO no reference to this interface, is it really useful ? public interface NamedObject { String getName(); }apache-jmeter-2.8/src/core/org/apache/jmeter/util/StringUtilities.java0000644000175000017500000000342112032647221025416 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; public final class StringUtilities { /** * Private constructor to prevent instantiation. */ private StringUtilities() { } /** * Replace all patterns in a String * * @see String#replaceAll(String,String) * - JDK1.4 only * * @param input - string to be transformed * @param pattern - pattern to replace * @param sub - replacement * @return the updated string */ public static String substitute(final String input, final String pattern, final String sub) { StringBuilder ret = new StringBuilder(input.length()); int start = 0; int index = -1; final int length = pattern.length(); while ((index = input.indexOf(pattern, start)) >= start) { ret.append(input.substring(start, index)); ret.append(sub); start = index + length; } ret.append(input.substring(start)); return ret.toString(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/BeanShellTestElement.java0000644000175000017500000002154312032647221026270 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.util; import java.io.Serializable; import java.util.List; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public abstract class BeanShellTestElement extends AbstractTestElement implements Serializable, Cloneable, ThreadListener, TestStateListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; //++ For TestBean implementations only private String parameters; // passed to file or script private String filename; // file to source (overrides script) private String script; // script (if file not provided) private boolean resetInterpreter = false; //-- For TestBean implementations only private transient BeanShellInterpreter bshInterpreter = null; private transient boolean hasInitFile = false; public BeanShellTestElement() { super(); init(); } protected abstract String getInitFileProperty(); /** * Get the interpreter and set up standard script variables. *

    * Sets the following script variables: *

      *
    • ctx
    • *
    • Label
    • *
    • prev
    • *
    • props
    • *
    • vars
    • *
    * @return the interpreter */ protected BeanShellInterpreter getBeanShellInterpreter() { if (isResetInterpreter()) { try { bshInterpreter.reset(); } catch (ClassNotFoundException e) { log.error("Cannot reset BeanShell: "+e.toString()); } } JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); try { bshInterpreter.set("ctx", jmctx);//$NON-NLS-1$ bshInterpreter.set("Label", getName()); //$NON-NLS-1$ bshInterpreter.set("prev", jmctx.getPreviousResult());//$NON-NLS-1$ bshInterpreter.set("props", JMeterUtils.getJMeterProperties()); bshInterpreter.set("vars", vars);//$NON-NLS-1$ } catch (JMeterException e) { log.warn("Problem setting one or more BeanShell variables "+e); } return bshInterpreter; } private void init() { parameters=""; // ensure variables are not null filename=""; script=""; try { String initFileName = JMeterUtils.getProperty(getInitFileProperty()); hasInitFile = initFileName != null; bshInterpreter = new BeanShellInterpreter(initFileName, log); } catch (ClassNotFoundException e) { log.error("Cannot find BeanShell: "+e.toString()); } } protected Object readResolve() { init(); return this; } @Override public Object clone() { BeanShellTestElement o = (BeanShellTestElement) super.clone(); o.init(); return o; } /** * Process the file or script from the test element. *

    * Sets the following script variables: *

      *
    • FileName
    • *
    • Parameters
    • *
    • bsh.args
    • *
    * @param bsh the interpreter, not {@code null} * @return the result of the script, may be {@code null} * * @throws JMeterException */ protected Object processFileOrScript(BeanShellInterpreter bsh) throws JMeterException{ String fileName = getFilename(); String params = getParameters(); bsh.set("FileName", fileName);//$NON-NLS-1$ // Set params as a single line bsh.set("Parameters", params); // $NON-NLS-1$ // and set as an array bsh.set("bsh.args",//$NON-NLS-1$ JOrphanUtils.split(params, " "));//$NON-NLS-1$ if (fileName.length() == 0) { return bsh.eval(getScript()); } return bsh.source(fileName); } /** * Return the script (TestBean version). * Must be overridden for subclasses that don't implement TestBean * otherwise the clone() method won't work. * * @return the script to execute */ public String getScript(){ return script; } /** * Set the script (TestBean version). * Must be overridden for subclasses that don't implement TestBean * otherwise the clone() method won't work. * * @param s the script to execute (may be blank) */ public void setScript(String s){ script=s; } public void threadStarted() { if (bshInterpreter == null || !hasInitFile) { return; } try { bshInterpreter.evalNoLog("threadStarted()"); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } } public void threadFinished() { if (bshInterpreter == null || !hasInitFile) { return; } try { bshInterpreter.evalNoLog("threadFinished()"); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } } public void testEnded() { if (bshInterpreter == null || !hasInitFile) { return; } try { bshInterpreter.evalNoLog("testEnded()"); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } } public void testEnded(String host) { if (bshInterpreter == null || !hasInitFile) { return; } try { bshInterpreter.eval((new StringBuilder("testEnded(")) // $NON-NLS-1$ .append(host) .append(")") // $NON-NLS-1$ .toString()); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } } public void testStarted() { if (bshInterpreter == null || !hasInitFile) { return; } try { bshInterpreter.evalNoLog("testStarted()"); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } } public void testStarted(String host) { if (bshInterpreter == null || !hasInitFile) { return; } try { bshInterpreter.eval((new StringBuilder("testStarted(")) // $NON-NLS-1$ .append(host) .append(")") // $NON-NLS-1$ .toString()); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } } // Overridden by non-TestBean implementations to return the property value instead public String getParameters() { return parameters; } public void setParameters(String s) { parameters = s; } // Overridden by non-TestBean implementations to return the property value instead public String getFilename() { return filename; } public void setFilename(String s) { filename = s; } public boolean isResetInterpreter() { return resetInterpreter; } public void setResetInterpreter(boolean b) { resetInterpreter = b; } /** * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); result.add(getScript()); return result; } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/BeanShellBeanInfoSupport.java0000644000175000017500000000420412032647221027110 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.TextAreaEditor; /** * Parent class to handle common GUI design */ public abstract class BeanShellBeanInfoSupport extends BeanInfoSupport { protected BeanShellBeanInfoSupport(Class beanClass) { super(beanClass); PropertyDescriptor p; p = property("resetInterpreter"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); createPropertyGroup("resetGroup", new String[] { "resetInterpreter" }); p = property("parameters"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); createPropertyGroup("parameterGroup", new String[] { "parameters" }); p = property("filename"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); createPropertyGroup("filenameGroup", new String[] { "filename" }); p = property("script"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setPropertyEditorClass(TextAreaEditor.class); createPropertyGroup("scripting", new String[] { "script" }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/ScopePanel.java0000644000175000017500000001147712032647221024317 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import org.apache.jmeter.gui.util.HorizontalPanel; /** * Scope panel so users can choose whether * to apply the test element to the parent sample, the child samples or both. * */ public class ScopePanel extends JPanel implements ActionListener { private static final long serialVersionUID = 240L; private final JRadioButton parentButton; private final JRadioButton childButton; private final JRadioButton allButton; private final JRadioButton variableButton; private final JTextField variableName; public ScopePanel(){ this(false); } public ScopePanel(boolean enableVariableButton) { allButton = new JRadioButton(JMeterUtils.getResString("sample_scope_all")); //$NON-NLS-1$ parentButton = new JRadioButton(JMeterUtils.getResString("sample_scope_parent")); //$NON-NLS-1$ childButton = new JRadioButton(JMeterUtils.getResString("sample_scope_children")); //$NON-NLS-1$ if (enableVariableButton) { variableButton = new JRadioButton(JMeterUtils.getResString("sample_scope_variable")); //$NON-NLS-1$ variableName = new JTextField(10); } else { variableButton = null; variableName = null; } init(); } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout(5, 0)); setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("sample_scope"))); //$NON-NLS-1$ parentButton.setSelected(true); JPanel buttonPanel = new HorizontalPanel(); ButtonGroup group = new ButtonGroup(); group.add(allButton); group.add(parentButton); group.add(childButton); buttonPanel.add(parentButton); buttonPanel.add(childButton); buttonPanel.add(allButton); if (variableButton != null){ variableButton.addActionListener(this); group.add(variableButton); buttonPanel.add(variableButton); buttonPanel.add(variableName); } add(buttonPanel); } public void clearGui() { parentButton.setSelected(true); } public int getSelection(){ if (parentButton.isSelected()){ return 0; } return 1; } public void setScopeAll() { setScopeAll(false); } public void setScopeAll(boolean enableVariableButton) { allButton.setSelected(true); if (enableVariableButton) { variableName.setText(""); //$NON-NLS-1$ } } public void setScopeChildren() { setScopeChildren(false); } public void setScopeChildren(boolean enableVariableButton) { childButton.setSelected(true); if (enableVariableButton) { variableName.setText(""); //$NON-NLS-1$ } } public void setScopeParent() { setScopeParent(false); } public void setScopeParent(boolean enableVariableButton) { parentButton.setSelected(true); if (enableVariableButton) { variableName.setText(""); //$NON-NLS-1$ } } public void setScopeVariable(String value){ variableButton.setSelected(true); variableName.setText(value); } public boolean isScopeParent() { return parentButton.isSelected(); } public boolean isScopeChildren() { return childButton.isSelected(); } public boolean isScopeAll() { return allButton.isSelected(); } public boolean isScopeVariable() { return variableButton.isSelected(); } public void actionPerformed(ActionEvent e) { variableName.setEnabled(variableButton.isSelected()); } public String getVariable() { return variableName.getText(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/Calculator.java0000644000175000017500000001442412032647221024352 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import org.apache.jmeter.samplers.SampleResult; /** * Class to calculate various items that don't require all previous results to be saved: * - mean = average * - standard deviation * - minimum * - maximum */ public class Calculator { private double sum = 0; private double sumOfSquares = 0; private double mean = 0; private double deviation = 0; private int count = 0; private long bytes = 0; private long maximum = Long.MIN_VALUE; private long minimum = Long.MAX_VALUE; private int errors = 0; private final String label; public Calculator() { this(""); } public Calculator(String label) { this.label = label; } public void clear() { maximum = Long.MIN_VALUE; minimum = Long.MAX_VALUE; sum = 0; sumOfSquares = 0; mean = 0; deviation = 0; count = 0; } /** * Add the value for a single sample. * * @param newValue * * @see #addValue(long, int) * @deprecated Use {@link #addSample(SampleResult)} instead */ @Deprecated public void addValue(long newValue) { addValue(newValue, 1); } /** * Add the value for (possibly multiple) samples. * Updates the count, sum, min, max, sumOfSqaures, mean and deviation. * * @param newValue the total value for all the samples. * @param sampleCount number of samples included in the value */ private void addValue(long newValue, int sampleCount) { count += sampleCount; double currentVal = newValue; sum += currentVal; if (sampleCount > 1){ minimum=Math.min(newValue/sampleCount, minimum); maximum=Math.max(newValue/sampleCount, maximum); // For n values in an aggregate sample the average value = (val/n) // So need to add n * (val/n) * (val/n) = val * val / n sumOfSquares += (currentVal * currentVal) / (sampleCount); } else { // no point dividing by 1 minimum=Math.min(newValue, minimum); maximum=Math.max(newValue, maximum); sumOfSquares += currentVal * currentVal; } // Calculate each time, as likely to be called for each add mean = sum / count; deviation = Math.sqrt((sumOfSquares / count) - (mean * mean)); } public void addBytes(long newValue) { bytes += newValue; } private long startTime = 0; private long elapsedTime = 0; /** * Add details for a sample result, which may consist of multiple samples. * Updates the number of bytes read, error count, startTime and elapsedTime * @param res the sample result; might represent multiple values * @see #addValue(long, int) */ public void addSample(SampleResult res) { addBytes(res.getBytes()); addValue(res.getTime(),res.getSampleCount()); errors+=res.getErrorCount(); // account for multiple samples if (startTime == 0){ // not yet intialised startTime=res.getStartTime(); } else { startTime = Math.min(startTime, res.getStartTime()); } elapsedTime = Math.max(elapsedTime, res.getEndTime()-startTime); } public long getTotalBytes() { return bytes; } public double getMean() { return mean; } public Number getMeanAsNumber() { return Long.valueOf((long) mean); } public double getStandardDeviation() { return deviation; } public long getMin() { return minimum; } public long getMax() { return maximum; } public int getCount() { return count; } public String getLabel() { return label; } /** * Returns the raw double value of the percentage of samples with errors * that were recorded. (Between 0.0 and 1.0) * * @return the raw double value of the percentage of samples with errors * that were recorded. */ public double getErrorPercentage() { double rval = 0.0; if (count == 0) { return (rval); } rval = (double) errors / (double) count; return (rval); } /** * Returns the throughput associated to this sampler in requests per second. * May be slightly skewed because it takes the timestamps of the first and * last samples as the total time passed, and the test may actually have * started before that start time and ended after that end time. */ public double getRate() { if (elapsedTime == 0) { return 0.0; } return ((double) count / (double) elapsedTime ) * 1000; } /** * calculates the average page size, which means divide the bytes by number * of samples. * * @return average page size in bytes */ public double getAvgPageBytes() { if (count > 0 && bytes > 0) { return (double) bytes / count; } return 0.0; } /** * Throughput in bytes / second * * @return throughput in bytes/second */ public double getBytesPerSecond() { if (elapsedTime > 0) { return bytes / ((double) elapsedTime / 1000); // 1000 = millisecs/sec } return 0.0; } /** * Throughput in kilobytes / second * * @return Throughput in kilobytes / second */ public double getKBPerSecond() { return getBytesPerSecond() / 1024; // 1024=bytes per kb } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/BeanShellServer.java0000644000175000017500000000733112032647221025304 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements a BeanShell server to allow access to JMeter variables and * methods. * * To enable, define the JMeter property: beanshell.server.port (see * JMeter.java) beanshell.server.file (optional, startup file) * */ public class BeanShellServer implements Runnable { private static final Logger log = LoggingManager.getLoggerForClass(); private final int serverport; private final String serverfile; /** * */ public BeanShellServer(int port, String file) { super(); serverfile = file;// can be the empty string serverport = port; } // For use by the server script static String getprop(String s) { return JMeterUtils.getPropDefault(s, s); } // For use by the server script static void setprop(String s, String v) { JMeterUtils.getJMeterProperties().setProperty(s, v); } public void run() { ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { Class Interpreter = loader.loadClass("bsh.Interpreter");//$NON-NLS-1$ Object instance = Interpreter.newInstance(); Class string = String.class; Class object = Object.class; Method eval = Interpreter.getMethod("eval", new Class[] { string });//$NON-NLS-1$ Method setObj = Interpreter.getMethod("set", new Class[] { string, object });//$NON-NLS-1$ Method setInt = Interpreter.getMethod("set", new Class[] { string, int.class });//$NON-NLS-1$ Method source = Interpreter.getMethod("source", new Class[] { string });//$NON-NLS-1$ setObj.invoke(instance, new Object[] { "t", this });//$NON-NLS-1$ setInt.invoke(instance, new Object[] { "portnum", Integer.valueOf(serverport) });//$NON-NLS-1$ if (serverfile.length() > 0) { try { source.invoke(instance, new Object[] { serverfile }); } catch (InvocationTargetException e1) { log.warn("Could not source " + serverfile); Throwable t= e1.getCause(); if (t != null) { log.warn(t.toString()); if(t instanceof Error) { throw (Error)t; } } } } eval.invoke(instance, new Object[] { "setAccessibility(true);" });//$NON-NLS-1$ eval.invoke(instance, new Object[] { "server(portnum);" });//$NON-NLS-1$ } catch (ClassNotFoundException e) { log.error("Beanshell Interpreter not found"); } catch (Exception e) { log.error("Problem starting BeanShell server ", e); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/CustomX509TrustManager.java0000644000175000017500000000774512032647221026466 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.util; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.X509TrustManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Custom TrustManager ignores all certificate errors * * TODO: implement conditional checking and logging * * (Derived from AuthSSLX509TrustManager in HttpClient contrib directory) */ public class CustomX509TrustManager implements X509TrustManager { private final X509TrustManager defaultTrustManager; private static final Logger log = LoggingManager.getLoggerForClass(); public CustomX509TrustManager(final X509TrustManager defaultTrustManager) { super(); if (defaultTrustManager == null) { throw new IllegalArgumentException("Trust manager may not be null"); } this.defaultTrustManager = defaultTrustManager; } /** * @see javax.net.ssl.X509TrustManager#checkClientTrusted(X509Certificate[],String) */ public void checkClientTrusted(X509Certificate[] certificates,String authType) throws CertificateException { if (certificates != null && log.isDebugEnabled()) { for (int c = 0; c < certificates.length; c++) { X509Certificate cert = certificates[c]; log.debug(" Client certificate " + (c + 1) + ":"); log.debug(" Subject DN: " + cert.getSubjectDN()); log.debug(" Signature Algorithm: " + cert.getSigAlgName()); log.debug(" Valid from: " + cert.getNotBefore() ); log.debug(" Valid until: " + cert.getNotAfter()); log.debug(" Issuer: " + cert.getIssuerDN()); } } // try { // defaultTrustManager.checkClientTrusted(certificates,authType); // } catch (CertificateException e){ // log.warn("Ignoring failed Client trust check: "+e.getMessage()); // } } /** * @see javax.net.ssl.X509TrustManager#checkServerTrusted(X509Certificate[],String) */ public void checkServerTrusted(X509Certificate[] certificates,String authType) throws CertificateException { if (certificates != null && log.isDebugEnabled()) { for (int c = 0; c < certificates.length; c++) { X509Certificate cert = certificates[c]; log.debug(" Server certificate " + (c + 1) + ":"); log.debug(" Subject DN: " + cert.getSubjectDN()); log.debug(" Signature Algorithm: " + cert.getSigAlgName()); log.debug(" Valid from: " + cert.getNotBefore() ); log.debug(" Valid until: " + cert.getNotAfter()); log.debug(" Issuer: " + cert.getIssuerDN()); } } // try{ // defaultTrustManager.checkServerTrusted(certificates,authType); // } catch (CertificateException e){ // log.warn("Ignoring failed Server trust check: "+e.getMessage()); // } } /** * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers() */ public X509Certificate[] getAcceptedIssuers() { return this.defaultTrustManager.getAcceptedIssuers(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/BSFJavaScriptEngine.java0000644000175000017500000001766312032647221026020 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.util; import java.util.Iterator; import java.util.Vector; import org.apache.bsf.BSFDeclaredBean; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.bsf.util.BSFEngineImpl; import org.apache.bsf.util.BSFFunctions; import org.mozilla.javascript.Context; import org.mozilla.javascript.EvaluatorException; import org.mozilla.javascript.Function; import org.mozilla.javascript.ImporterTopLevel; import org.mozilla.javascript.JavaScriptException; import org.mozilla.javascript.NativeJavaObject; import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.WrappedException; import org.mozilla.javascript.Wrapper; /** * This is the interface to Netscape's Rhino (JavaScript) from the * Bean Scripting Framework. *

    * The original version of this code was first written by Adam Peller * for use in LotusXSL. Sanjiva took his code and adapted it for BSF. * * Modified for JMeter to fix bug BSF-22. */ public class BSFJavaScriptEngine extends BSFEngineImpl { /** * The global script object, where all embedded functions are defined, * as well as the standard ECMA "core" objects. */ private Scriptable global; /** * Return an object from an extension. * @param object Object on which to make the call (ignored). * @param method The name of the method to call. * @param args an array of arguments to be * passed to the extension, which may be either * Vectors of Nodes, or Strings. */ public Object call(Object object, String method, Object[] args) throws BSFException { Object retval = null; Context cx; try { cx = Context.enter(); // REMIND: convert arg list Vectors here? Object fun = global.get(method, global); // NOTE: Source and line arguments are nonsense in a call(). // Any way to make these arguments *sensible? if (fun == Scriptable.NOT_FOUND) throw new EvaluatorException("function " + method + " not found.", "none", 0); cx.setOptimizationLevel(-1); cx.setGeneratingDebug(false); cx.setGeneratingSource(false); cx.setOptimizationLevel(0); cx.setDebugger(null, null); retval = ((Function) fun).call(cx, global, global, args); // ScriptRuntime.call(cx, fun, global, args, global); if (retval instanceof Wrapper) retval = ((Wrapper) retval).unwrap(); } catch (Throwable t) { handleError(t); } finally { Context.exit(); } return retval; } @Override public void declareBean(BSFDeclaredBean bean) throws BSFException { if ((bean.bean instanceof Number) || (bean.bean == null) || (bean.bean instanceof String) || (bean.bean instanceof Boolean)) { global.put(bean.name, global, bean.bean); } else { // Must wrap non-scriptable objects before presenting to Rhino Scriptable wrapped = Context.toObject(bean.bean, global); global.put(bean.name, global, wrapped); } } /** * This is used by an application to evaluate a string containing * some expression. */ public Object eval(String source, int lineNo, int columnNo, Object oscript) throws BSFException { String scriptText = oscript.toString(); Object retval = null; Context cx; try { cx = Context.enter(); cx.setOptimizationLevel(-1); cx.setGeneratingDebug(false); cx.setGeneratingSource(false); cx.setOptimizationLevel(0); cx.setDebugger(null, null); retval = cx.evaluateString(global, scriptText, source, lineNo, null); if (retval instanceof NativeJavaObject) retval = ((NativeJavaObject) retval).unwrap(); } catch (Throwable t) { // includes JavaScriptException, rethrows Errors handleError(t); } finally { Context.exit(); } return retval; } private void handleError(Throwable t) throws BSFException { if (t instanceof WrappedException) t = ((WrappedException) t).getWrappedException(); String message = null; Throwable target = t; if (t instanceof JavaScriptException) { message = t.getLocalizedMessage(); // Is it an exception wrapped in a JavaScriptException? Object value = ((JavaScriptException) t).getValue(); if (value instanceof Throwable) { // likely a wrapped exception from a LiveConnect call. // Display its stack trace as a diagnostic target = (Throwable) value; } } else if (t instanceof EvaluatorException || t instanceof SecurityException) { message = t.getLocalizedMessage(); } else if (t instanceof RuntimeException) { message = "Internal Error: " + t.toString(); } else if (t instanceof StackOverflowError) { message = "Stack Overflow"; } if (message == null) message = t.toString(); if (t instanceof Error && !(t instanceof StackOverflowError)) { // Re-throw Errors because we're supposed to let the JVM see it // Don't re-throw StackOverflows, because we know we've // corrected the situation by aborting the loop and // a long stacktrace would end up on the user's console throw (Error) t; } else { throw new BSFException(BSFException.REASON_OTHER_ERROR, "JavaScript Error: " + message, target); } } /** * Initialize the engine. * Put the manager into the context-manager * map hashtable too. */ @Override public void initialize(BSFManager mgr, String lang, @SuppressWarnings("rawtypes") // superclass does not support types Vector declaredBeans) throws BSFException { super.initialize(mgr, lang, declaredBeans); // Initialize context and global scope object try { Context cx = Context.enter(); global = new ImporterTopLevel(cx); Scriptable bsf = Context.toObject(new BSFFunctions(mgr, this), global); global.put("bsf", global, bsf); for( @SuppressWarnings("unchecked") Iterator it = declaredBeans.iterator(); it.hasNext();) { declareBean(it.next()); } } catch (Throwable t) { handleError(t); } finally { Context.exit(); } } @Override public void undeclareBean(BSFDeclaredBean bean) throws BSFException { global.delete(bean.name); } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/CPSPauser.java0000644000175000017500000000360412032647221024064 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; /** * * Generate appropriate pauses for a given CPS (characters per second) */ public class CPSPauser{ private final int CPS; // Characters per second to emulate // Conversions for milli and nano seconds private static final int MS_PER_SEC = 1000; private static final int NS_PER_SEC = 1000000000; private static final int NS_PER_MS = NS_PER_SEC/MS_PER_SEC; /** * Create a pauser with the appropriate speed settings. * * @param cps CPS to emulate */ public CPSPauser(int cps){ if (cps <=0) { throw new IllegalArgumentException("Speed (cps) <= 0"); } CPS=cps; } /** * Pause for an appropriate time according to the number of bytes being transferred. * * @param bytes number of bytes being transferred */ public void pause(int bytes){ long sleepMS = (bytes*MS_PER_SEC)/CPS; int sleepNS = ((bytes*MS_PER_SEC)/CPS) % NS_PER_MS; try { Thread.sleep(sleepMS,sleepNS); } catch (InterruptedException ignored) { } } }apache-jmeter-2.8/src/core/org/apache/jmeter/util/BeanShellInterpreter.java0000644000175000017500000001774412032647221026352 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.io.File; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; /** * BeanShell setup function - encapsulates all the access to the BeanShell * Interpreter in a single class. * * The class uses dynamic class loading to access BeanShell, which means that * all the source files can be built without needing access to the bsh jar. * * If the beanshell jar is not present at run-time, an error will be logged * */ public class BeanShellInterpreter { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Method bshGet; private static final Method bshSet; private static final Method bshEval; private static final Method bshSource; private static final Class bshClass; private static final String BSH_INTERPRETER = "bsh.Interpreter"; //$NON-NLS-1$ static { // Temporary copies, so can set the final ones Method get = null, eval = null, set = null, source = null; Class clazz = null; ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { clazz = loader.loadClass(BSH_INTERPRETER); Class string = String.class; Class object = Object.class; get = clazz.getMethod("get", //$NON-NLS-1$ new Class[] { string }); eval = clazz.getMethod("eval", //$NON-NLS-1$ new Class[] { string }); set = clazz.getMethod("set", //$NON-NLS-1$ new Class[] { string, object }); source = clazz.getMethod("source", //$NON-NLS-1$ new Class[] { string }); } catch (ClassNotFoundException e) { log.error("Beanshell Interpreter not found"); } catch (SecurityException e) { log.error("Beanshell Interpreter not found", e); } catch (NoSuchMethodException e) { log.error("Beanshell Interpreter not found", e); } finally { bshEval = eval; bshGet = get; bshSet = set; bshSource = source; bshClass = clazz; } } // This class is not serialised private Object bshInstance = null; // The interpreter instance for this class private final String initFile; // Script file to initialize the Interpreter with private final Logger logger; // Logger to use during initialization and script run public BeanShellInterpreter() throws ClassNotFoundException { initFile = null; logger = null; init(); } /** * * @param init initialisation file * @param _log logger to pass to interpreter */ public BeanShellInterpreter(String init, Logger _log) throws ClassNotFoundException { initFile = init; logger = _log; init(); } // Called from ctor, so must be private (or final, but it does not seem useful elsewhere) private void init() throws ClassNotFoundException { if (bshClass == null) { throw new ClassNotFoundException(BSH_INTERPRETER); } try { bshInstance = bshClass.newInstance(); } catch (InstantiationException e) { log.error("Can't instantiate BeanShell", e); throw new ClassNotFoundException("Can't instantiate BeanShell", e); } catch (IllegalAccessException e) { log.error("Can't instantiate BeanShell", e); throw new ClassNotFoundException("Can't instantiate BeanShell", e); } if (logger != null) {// Do this before starting the script try { set("log", logger);//$NON-NLS-1$ } catch (JMeterException e) { log.warn("Can't set logger variable", e); } } if (initFile != null && initFile.length() > 0) { String fileToUse=initFile; // Check file so we can distinguish file error from script error File in = new File(fileToUse); if (!in.exists()){// Cannot find the file locally, so try the bin directory fileToUse=JMeterUtils.getJMeterHome() +File.separator+"bin" // $NON-NLS-1$ +File.separator+initFile; in = new File(fileToUse); if (!in.exists()) { log.warn("Cannot find init file: "+initFile); } } if (!in.canRead()) { log.warn("Cannot read init file: "+fileToUse); } try { source(fileToUse); } catch (JMeterException e) { log.warn("Cannot source init file: "+fileToUse,e); } } } /** * Resets the BeanShell interpreter. * * @throws ClassNotFoundException if interpreter cannot be instantiated */ public void reset() throws ClassNotFoundException { init(); } private Object bshInvoke(Method m, Object[] o, boolean shouldLog) throws JMeterException { Object r = null; final String errorString = "Error invoking bsh method: "; try { r = m.invoke(bshInstance, o); } catch (IllegalArgumentException e) { // Programming error final String message = errorString + m.getName(); log.error(message); throw new JMeterError(message, e); } catch (IllegalAccessException e) { // Also programming error final String message = errorString + m.getName(); log.error(message); throw new JMeterError(message, e); } catch (InvocationTargetException e) { // Can occur at run-time // could be caused by the bsh Exceptions: // EvalError, ParseException or TargetError String message = errorString + m.getName(); Throwable cause = e.getCause(); if (cause != null) { message += "\t" + cause.getLocalizedMessage(); } if (shouldLog) { log.error(message); } throw new JMeterException(message, e); } return r; } public Object eval(String s) throws JMeterException { return bshInvoke(bshEval, new Object[] { s }, true); } public Object evalNoLog(String s) throws JMeterException { return bshInvoke(bshEval, new Object[] { s }, false); } public Object set(String s, Object o) throws JMeterException { return bshInvoke(bshSet, new Object[] { s, o }, true); } public Object set(String s, boolean b) throws JMeterException { return bshInvoke(bshSet, new Object[] { s, Boolean.valueOf(b) }, true); } public Object source(String s) throws JMeterException { return bshInvoke(bshSource, new Object[] { s }, true); } public Object get(String s) throws JMeterException { return bshInvoke(bshGet, new Object[] { s }, true); } // For use by Unit Tests public static boolean isInterpreterPresent(){ return bshClass != null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/util/ScriptingBeanInfoSupport.java0000644000175000017500000000503312032647221027216 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.util; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.FileEditor; import org.apache.jmeter.testbeans.gui.TextAreaEditor; /** * Parent class to define common GUI parameters for BSF and JSR223 test elements */ public abstract class ScriptingBeanInfoSupport extends BeanInfoSupport { protected ScriptingBeanInfoSupport(Class beanClass, String[] LANGUAGE_TAGS) { super(beanClass); PropertyDescriptor p; p = property("scriptLanguage"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p.setValue(TAGS, LANGUAGE_TAGS); createPropertyGroup("scriptingLanguage", // $NON-NLS-1$ new String[] { "scriptLanguage" }); // $NON-NLS-1$ p = property("parameters"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ createPropertyGroup("parameterGroup", // $NON-NLS-1$ new String[] { "parameters" }); // $NON-NLS-1$ p = property("filename"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p.setPropertyEditorClass(FileEditor.class); createPropertyGroup("filenameGroup", // $NON-NLS-1$ new String[] { "filename" }); // $NON-NLS-1$ p = property("script"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p.setPropertyEditorClass(TextAreaEditor.class); createPropertyGroup("scripting", // $NON-NLS-1$ new String[] { "script" }); // $NON-NLS-1$ } } apache-jmeter-2.8/src/core/org/apache/jmeter/NewDriver.java0000644000175000017500000002065712032647221023216 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter; // N.B. this must only use standard Java packages import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.lang.reflect.Method; import java.net.MalformedURLException; import java.net.URL; import java.security.AccessController; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.StringTokenizer; /** * Main class for JMeter - sets up initial classpath and the loader. * */ public final class NewDriver { private static final String CLASSPATH_SEPARATOR = System.getProperty("path.separator");// $NON-NLS-1$ private static final String OS_NAME = System.getProperty("os.name");// $NON-NLS-1$ private static final String OS_NAME_LC = OS_NAME.toLowerCase(java.util.Locale.ENGLISH); private static final String JAVA_CLASS_PATH = "java.class.path";// $NON-NLS-1$ /** The class loader to use for loading JMeter classes. */ private static final DynamicClassLoader loader; /** The directory JMeter is installed in. */ private static final String jmDir; static { final List jars = new LinkedList(); final String initial_classpath = System.getProperty(JAVA_CLASS_PATH); // Find JMeter home dir from the initial classpath String tmpDir=null; StringTokenizer tok = new StringTokenizer(initial_classpath, File.pathSeparator); if (tok.countTokens() == 1 || (tok.countTokens() == 2 // Java on Mac OS can add a second entry to the initial classpath && OS_NAME_LC.startsWith("mac os x")// $NON-NLS-1$ ) ) { File jar = new File(tok.nextToken()); try { tmpDir = jar.getCanonicalFile().getParentFile().getParent(); } catch (IOException e) { } } else {// e.g. started from IDE with full classpath tmpDir = System.getProperty("jmeter.home","");// Allow override $NON-NLS-1$ $NON-NLS-2$ if (tmpDir.length() == 0) { File userDir = new File(System.getProperty("user.dir"));// $NON-NLS-1$ tmpDir = userDir.getAbsoluteFile().getParent(); } } jmDir=tmpDir; /* * Does the system support UNC paths? If so, may need to fix them up * later */ boolean usesUNC = OS_NAME_LC.startsWith("windows");// $NON-NLS-1$ // Add standard jar locations to initial classpath StringBuilder classpath = new StringBuilder(); File[] libDirs = new File[] { new File(jmDir + File.separator + "lib"),// $NON-NLS-1$ $NON-NLS-2$ new File(jmDir + File.separator + "lib" + File.separator + "ext"),// $NON-NLS-1$ $NON-NLS-2$ new File(jmDir + File.separator + "lib" + File.separator + "junit")};// $NON-NLS-1$ $NON-NLS-2$ for (int a = 0; a < libDirs.length; a++) { File[] libJars = libDirs[a].listFiles(new FilenameFilter() { public boolean accept(File dir, String name) {// only accept jar files return name.endsWith(".jar");// $NON-NLS-1$ } }); if (libJars == null) { new Throwable("Could not access " + libDirs[a]).printStackTrace(); continue; } Arrays.sort(libJars); // Bug 50708 Ensure predictable order of jars for (int i = 0; i < libJars.length; i++) { try { String s = libJars[i].getPath(); // Fix path to allow the use of UNC URLs if (usesUNC) { if (s.startsWith("\\\\") && !s.startsWith("\\\\\\")) {// $NON-NLS-1$ $NON-NLS-2$ s = "\\\\" + s;// $NON-NLS-1$ } else if (s.startsWith("//") && !s.startsWith("///")) {// $NON-NLS-1$ $NON-NLS-2$ s = "//" + s;// $NON-NLS-1$ } } // usesUNC jars.add(new File(s).toURI().toURL());// See Java bug 4496398 classpath.append(CLASSPATH_SEPARATOR); classpath.append(s); } catch (MalformedURLException e) { e.printStackTrace(); } } } // ClassFinder needs the classpath System.setProperty(JAVA_CLASS_PATH, initial_classpath + classpath.toString()); loader = AccessController.doPrivileged( new java.security.PrivilegedAction() { public DynamicClassLoader run() { return new DynamicClassLoader(jars.toArray(new URL[jars.size()])); } } ); } /** * Prevent instantiation. */ private NewDriver() { } /** * Add a URL to the loader classpath only; does not update the system classpath. * * @param path to be added. */ public static void addURL(String path) { File furl = new File(path); try { loader.addURL(furl.toURI().toURL()); // See Java bug 4496398 } catch (MalformedURLException e) { e.printStackTrace(); } } /** * Add a URL to the loader classpath only; does not update the system classpath. * * @param url */ public static void addURL(URL url) { loader.addURL(url); } /** * Add a directory or jar to the loader and system classpaths. * * @param path to add to the loader and system classpath * @throws MalformedURLException */ public static void addPath(String path) throws MalformedURLException { File file = new File(path); // Ensure that directory URLs end in "/" if (file.isDirectory() && !path.endsWith("/")) {// $NON-NLS-1$ file = new File(path + "/");// $NON-NLS-1$ } loader.addURL(file.toURI().toURL()); // See Java bug 4496398 StringBuilder sb = new StringBuilder(System.getProperty(JAVA_CLASS_PATH)); sb.append(CLASSPATH_SEPARATOR); sb.append(path); // ClassFinder needs this System.setProperty(JAVA_CLASS_PATH,sb.toString()); } /** * Get the directory where JMeter is installed. This is the absolute path * name. * * @return the directory where JMeter is installed. */ public static String getJMeterDir() { return jmDir; } /** * The main program which actually runs JMeter. * * @param args * the command line arguments */ public static void main(String[] args) { Thread.currentThread().setContextClassLoader(loader); if (System.getProperty("log4j.configuration") == null) {// $NON-NLS-1$ $NON-NLS-2$ File conf = new File(jmDir, "bin" + File.separator + "log4j.conf");// $NON-NLS-1$ $NON-NLS-2$ System.setProperty("log4j.configuration", "file:" + conf); } try { Class initialClass; if (args != null && args.length > 0 && args[0].equals("report")) {// $NON-NLS-1$ initialClass = loader.loadClass("org.apache.jmeter.JMeterReport");// $NON-NLS-1$ } else { initialClass = loader.loadClass("org.apache.jmeter.JMeter");// $NON-NLS-1$ } Object instance = initialClass.newInstance(); Method startup = initialClass.getMethod("start", new Class[] { new String[0].getClass() });// $NON-NLS-1$ startup.invoke(instance, new Object[] { args }); } catch(Throwable e){ e.printStackTrace(); System.err.println("JMeter home directory was detected as: "+jmDir); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/0000755000175000017500000000000012165514773021406 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/save/ListenerResultWrapper.java0000644000175000017500000000416712032647220026571 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import java.util.Collection; import org.apache.jmeter.samplers.SampleResult; /** * ListenerResultWrapper is for calculated results generated by listeners like * aggregate listener and monitor listener. */ public class ListenerResultWrapper { private String version = ""; private Collection calculatedResults; private long testStartTime; /** * @return Returns the sampleResults. */ public Collection getSampleResults() { return calculatedResults; } /** * @param results * The sampleResults to set. */ public void setSampleResults(Collection results) { this.calculatedResults = results; } /** * @return Returns the testStartTime. */ public long getTestStartTime() { return testStartTime; } /** * @param testStartTime * The testStartTime to set. */ public void setTestStartTime(long testStartTime) { this.testStartTime = testStartTime; } /** * @return Returns the version. */ public String getVersion() { return version; } /** * @param version * The version to set. */ public void setVersion(String version) { this.version = version; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/TestResultWrapper.java0000644000175000017500000000402512032647220025714 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 6, 2004 */ package org.apache.jmeter.save; import java.util.Collection; import org.apache.jmeter.samplers.SampleResult; public class TestResultWrapper { private String version = ""; private Collection sampleResults; private long testStartTime; /** * @return Returns the sampleResults. */ public Collection getSampleResults() { return sampleResults; } /** * @param sampleResults * The sampleResults to set. */ public void setSampleResults(Collection sampleResults) { this.sampleResults = sampleResults; } /** * @return Returns the testStartTime. */ public long getTestStartTime() { return testStartTime; } /** * @param testStartTime * The testStartTime to set. */ public void setTestStartTime(long testStartTime) { this.testStartTime = testStartTime; } /** * @return Returns the version. */ public String getVersion() { return version; } /** * @param version * The version to set. */ public void setVersion(String version) { this.version = version; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/0000755000175000017500000000000012165514773023600 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/MultiPropertyConverter.java0000644000175000017500000000635012032647220031161 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.MapProperty; import org.apache.jmeter.testelement.property.MultiProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class MultiPropertyConverter extends AbstractCollectionConverter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232554 $"; //$NON-NLS-1$ } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return arg0.equals(CollectionProperty.class) || arg0.equals(MapProperty.class); } /** {@inheritDoc} */ @Override public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) { MultiProperty prop = (MultiProperty) arg0; writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName())); PropertyIterator iter = prop.iterator(); while (iter.hasNext()) { writeItem(iter.next(), context, writer); } } /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { MultiProperty prop = (MultiProperty) createCollection(context.getRequiredType()); prop.setName(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME))); while (reader.hasMoreChildren()) { reader.moveDown(); JMeterProperty subProp = (JMeterProperty) readItem(reader, context, prop); if (subProp != null) { // could be null if it has been deleted via NameUpdater prop.addProperty(subProp); } reader.moveUp(); } return prop; } /** * @param arg0 */ public MultiPropertyConverter(Mapper arg0) { super(arg0); } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/SampleEventConverter.java0000644000175000017500000000437512032647220030552 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.samplers.SampleEvent; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; /** * XStream Converter for the SampleResult class */ public class SampleEventConverter implements Converter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 959055 $"; //$NON-NLS-1$ } /** {@inheritDoc} */ public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return SampleEvent.class.equals(arg0); } /** {@inheritDoc} */ // TODO save hostname; save sample type (plain or http) public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { SampleEvent evt = (SampleEvent) source; Object res = evt.getResult(); context.convertAnother(res); } /** {@inheritDoc} */ // TODO does not work yet; need to determine the sample type public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { SampleEvent evt = new SampleEvent(); return evt; } }apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/StringPropertyConverter.java0000644000175000017500000000462312032647220031336 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.testelement.property.StringProperty; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class StringPropertyConverter implements Converter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232550 $"; // $NON-NLS-1$ } /** {@inheritDoc} */ public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return StringProperty.class.equals(arg0); } /** {@inheritDoc} */ public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext arg2) { StringProperty prop = (StringProperty) obj; writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName())); writer.setValue(ConversionHelp.encode(prop.getStringValue())); } /** {@inheritDoc} */ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final String name = ConversionHelp.getPropertyName(reader, context); if (name == null) { return null; } final String value = ConversionHelp.getPropertyValue(reader, context, name); StringProperty prop = new StringProperty(name, value); return prop; } }apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java0000644000175000017500000004256712032647220030754 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URL; import org.apache.commons.io.IOUtils; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.save.SaveService; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.Converter; import org.apache.log.Logger; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.mapper.Mapper; /** * XStream Converter for the SampleResult class */ public class SampleResultConverter extends AbstractCollectionConverter { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String JAVA_LANG_STRING = "java.lang.String"; //$NON-NLS-1$ private static final String ATT_CLASS = "class"; //$NON-NLS-1$ // Element tags. Must be unique. Keep sorted. protected static final String TAG_COOKIES = "cookies"; //$NON-NLS-1$ protected static final String TAG_METHOD = "method"; //$NON-NLS-1$ protected static final String TAG_QUERY_STRING = "queryString"; //$NON-NLS-1$ protected static final String TAG_REDIRECT_LOCATION = "redirectLocation"; //$NON-NLS-1$ protected static final String TAG_REQUEST_HEADER = "requestHeader"; //$NON-NLS-1$ //NOT USED protected static final String TAG_URL = "requestUrl"; //$NON-NLS-1$ protected static final String TAG_RESPONSE_DATA = "responseData"; //$NON-NLS-1$ protected static final String TAG_RESPONSE_HEADER = "responseHeader"; //$NON-NLS-1$ protected static final String TAG_SAMPLER_DATA = "samplerData"; //$NON-NLS-1$ protected static final String TAG_RESPONSE_FILE = "responseFile"; //$NON-NLS-1$ // samplerData attributes. Must be unique. Keep sorted by string value. // Ensure the Listener documentation is updated when new attributes are added private static final String ATT_BYTES = "by"; //$NON-NLS-1$ private static final String ATT_DATA_ENCODING = "de"; //$NON-NLS-1$ private static final String ATT_DATA_TYPE = "dt"; //$NON-NLS-1$ private static final String ATT_ERROR_COUNT = "ec"; //$NON-NLS-1$ private static final String ATT_HOSTNAME = "hn"; //$NON-NLS-1$ private static final String ATT_LABEL = "lb"; //$NON-NLS-1$ private static final String ATT_LATENCY = "lt"; //$NON-NLS-1$ private static final String ATT_ALL_THRDS = "na"; //$NON-NLS-1$ private static final String ATT_GRP_THRDS = "ng"; //$NON-NLS-1$ // N.B. Originally the response code was saved with the code "rs" // but retrieved with the code "rc". Changed to always use "rc", but // allow for "rs" when restoring values. private static final String ATT_RESPONSE_CODE = "rc"; //$NON-NLS-1$ private static final String ATT_RESPONSE_MESSAGE = "rm"; //$NON-NLS-1$ private static final String ATT_RESPONSE_CODE_OLD = "rs"; //$NON-NLS-1$ private static final String ATT_SUCCESS = "s"; //$NON-NLS-1$ private static final String ATT_SAMPLE_COUNT = "sc"; //$NON-NLS-1$ private static final String ATT_TIME = "t"; //$NON-NLS-1$ private static final String ATT_IDLETIME = "it"; //$NON-NLS-1$ private static final String ATT_THREADNAME = "tn"; //$NON-NLS-1$ private static final String ATT_TIME_STAMP = "ts"; //$NON-NLS-1$ /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1382569 $"; //$NON-NLS-1$ } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return SampleResult.class.equals(arg0); } /** {@inheritDoc} */ @Override public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) { SampleResult res = (SampleResult) obj; SampleSaveConfiguration save = res.getSaveConfig(); setAttributes(writer, context, res, save); saveAssertions(writer, context, res, save); saveSubResults(writer, context, res, save); saveResponseHeaders(writer, context, res, save); saveRequestHeaders(writer, context, res, save); saveResponseData(writer, context, res, save); saveSamplerData(writer, context, res, save); } /** * @param writer * @param res * @param save */ protected void saveSamplerData(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveSamplerData(res)) { writeString(writer, TAG_SAMPLER_DATA, res.getSamplerData()); } if (save.saveUrl()) { final URL url = res.getURL(); if (url != null) { writeItem(url, context, writer); } } } /** * @param writer * @param res * @param save */ protected void saveResponseData(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveResponseData(res)) { writer.startNode(TAG_RESPONSE_DATA); writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING); try { if (SampleResult.TEXT.equals(res.getDataType())){ writer.setValue(new String(res.getResponseData(), res.getDataEncodingWithDefault())); } // Otherwise don't save anything - no point } catch (UnsupportedEncodingException e) { writer.setValue("Unsupported encoding in response data, can't record."); } writer.endNode(); } if (save.saveFileName()){ writer.startNode(TAG_RESPONSE_FILE); writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING); writer.setValue(res.getResultFileName()); writer.endNode(); } } /** * @param writer * @param res * @param save */ protected void saveRequestHeaders(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveRequestHeaders()) { writeString(writer, TAG_REQUEST_HEADER, res.getRequestHeaders()); } } /** * @param writer * @param res * @param save */ protected void saveResponseHeaders(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveResponseHeaders()) { writeString(writer, TAG_RESPONSE_HEADER, res.getResponseHeaders()); } } /** * @param writer * @param context * @param res * @param save */ protected void saveSubResults(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveSubresults()) { SampleResult[] subResults = res.getSubResults(); for (int i = 0; i < subResults.length; i++) { subResults[i].setSaveConfig(save); writeItem(subResults[i], context, writer); } } } /** * @param writer * @param context * @param res * @param save */ protected void saveAssertions(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveAssertions()) { AssertionResult[] assertionResults = res.getAssertionResults(); for (int i = 0; i < assertionResults.length; i++) { writeItem(assertionResults[i], context, writer); } } } /** * @param writer * @param res * @param save */ protected void setAttributes(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveTime()) { writer.addAttribute(ATT_TIME, Long.toString(res.getTime())); } if (save.saveIdleTime()) { writer.addAttribute(ATT_IDLETIME, Long.toString(res.getIdleTime())); } if (save.saveLatency()) { writer.addAttribute(ATT_LATENCY, Long.toString(res.getLatency())); } if (save.saveTimestamp()) { writer.addAttribute(ATT_TIME_STAMP, Long.toString(res.getTimeStamp())); } if (save.saveSuccess()) { writer.addAttribute(ATT_SUCCESS, Boolean.toString(res.isSuccessful())); } if (save.saveLabel()) { writer.addAttribute(ATT_LABEL, ConversionHelp.encode(res.getSampleLabel())); } if (save.saveCode()) { writer.addAttribute(ATT_RESPONSE_CODE, ConversionHelp.encode(res.getResponseCode())); } if (save.saveMessage()) { writer.addAttribute(ATT_RESPONSE_MESSAGE, ConversionHelp.encode(res.getResponseMessage())); } if (save.saveThreadName()) { writer.addAttribute(ATT_THREADNAME, ConversionHelp.encode(res.getThreadName())); } if (save.saveDataType()) { writer.addAttribute(ATT_DATA_TYPE, ConversionHelp.encode(res.getDataType())); } if (save.saveEncoding()) { writer.addAttribute(ATT_DATA_ENCODING, ConversionHelp.encode(res.getDataEncodingNoDefault())); } if (save.saveBytes()) { writer.addAttribute(ATT_BYTES, String.valueOf(res.getBytes())); } if (save.saveSampleCount()){ writer.addAttribute(ATT_SAMPLE_COUNT, String.valueOf(res.getSampleCount())); writer.addAttribute(ATT_ERROR_COUNT, String.valueOf(res.getErrorCount())); } if (save.saveThreadCounts()){ writer.addAttribute(ATT_GRP_THRDS, String.valueOf(res.getGroupThreads())); writer.addAttribute(ATT_ALL_THRDS, String.valueOf(res.getAllThreads())); } SampleEvent event = (SampleEvent) context.get(SaveService.SAMPLE_EVENT_OBJECT); if (event != null) { if (save.saveHostname()){ writer.addAttribute(ATT_HOSTNAME, event.getHostname()); } for (int i = 0; i < SampleEvent.getVarCount(); i++){ writer.addAttribute(SampleEvent.getVarName(i), ConversionHelp.encode(event.getVarValue(i))); } } } /** * @param writer * @param tag * @param value */ protected void writeString(HierarchicalStreamWriter writer, String tag, String value) { if (value != null) { writer.startNode(tag); writer.addAttribute(ATT_CLASS, JAVA_LANG_STRING); writer.setValue(value); writer.endNode(); } } /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { SampleResult res = (SampleResult) createCollection(context.getRequiredType()); retrieveAttributes(reader, context, res); while (reader.hasMoreChildren()) { reader.moveDown(); Object subItem = readItem(reader, context, res); retrieveItem(reader, context, res, subItem); reader.moveUp(); } // If we have a file, but no data, then read the file String resultFileName = res.getResultFileName(); if (resultFileName.length()>0 && res.getResponseData().length == 0) { readFile(resultFileName,res); } return res; } /** * * @param reader * @param context * @param res * @return true if the item was processed (for HTTPResultConverter) */ protected boolean retrieveItem(HierarchicalStreamReader reader, UnmarshallingContext context, SampleResult res, Object subItem) { String nodeName = reader.getNodeName(); if (subItem instanceof AssertionResult) { res.addAssertionResult((AssertionResult) subItem); } else if (subItem instanceof SampleResult) { res.storeSubResult((SampleResult) subItem); } else if (nodeName.equals(TAG_RESPONSE_HEADER)) { res.setResponseHeaders((String) subItem); } else if (nodeName.equals(TAG_REQUEST_HEADER)) { res.setRequestHeaders((String) subItem); } else if (nodeName.equals(TAG_RESPONSE_DATA)) { final String responseData = (String) subItem; if (responseData.length() > 0) { final String dataEncoding = res.getDataEncodingWithDefault(); try { res.setResponseData(responseData.getBytes(dataEncoding)); } catch (UnsupportedEncodingException e) { res.setResponseData(("Can't support the char set: " + dataEncoding), null); res.setDataType(SampleResult.TEXT); } } } else if (nodeName.equals(TAG_SAMPLER_DATA)) { res.setSamplerData((String) subItem); } else if (nodeName.equals(TAG_RESPONSE_FILE)) { res.setResultFileName((String) subItem); // Don't try restoring the URL TODO: wy not? } else { return false; } return true; } /** * @param reader * @param res */ protected void retrieveAttributes(HierarchicalStreamReader reader, UnmarshallingContext context, SampleResult res) { res.setSampleLabel(ConversionHelp.decode(reader.getAttribute(ATT_LABEL))); res.setDataEncoding(ConversionHelp.decode(reader.getAttribute(ATT_DATA_ENCODING))); res.setDataType(ConversionHelp.decode(reader.getAttribute(ATT_DATA_TYPE))); String oldrc=reader.getAttribute(ATT_RESPONSE_CODE_OLD); if (oldrc!=null) { res.setResponseCode(ConversionHelp.decode(oldrc)); } else { res.setResponseCode(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_CODE))); } res.setResponseMessage(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_MESSAGE))); res.setSuccessful(Converter.getBoolean(reader.getAttribute(ATT_SUCCESS), true)); res.setThreadName(ConversionHelp.decode(reader.getAttribute(ATT_THREADNAME))); res.setStampAndTime(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)), Converter.getLong(reader.getAttribute(ATT_TIME))); res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME))); res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY))); res.setBytes(Converter.getInt(reader.getAttribute(ATT_BYTES))); res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); // default is 1 res.setErrorCount(Converter.getInt(reader.getAttribute(ATT_ERROR_COUNT),0)); // default is 0 res.setGroupThreads(Converter.getInt(reader.getAttribute(ATT_GRP_THRDS))); res.setAllThreads(Converter.getInt(reader.getAttribute(ATT_ALL_THRDS))); } protected void readFile(String resultFileName, SampleResult res) { File in = null; InputStream fis = null; try { in = new File(resultFileName); fis = new BufferedInputStream(new FileInputStream(in)); ByteArrayOutputStream outstream = new ByteArrayOutputStream(res.getBytes()); byte[] buffer = new byte[4096]; int len; while ((len = fis.read(buffer)) > 0) { outstream.write(buffer, 0, len); } outstream.close(); res.setResponseData(outstream.toByteArray()); } catch (FileNotFoundException e) { log.warn(e.getLocalizedMessage()); } catch (IOException e) { log.warn(e.getLocalizedMessage()); } finally { IOUtils.closeQuietly(fis); } } /** * @param arg0 */ public SampleResultConverter(Mapper arg0) { super(arg0); } }apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/TestElementConverter.java0000644000175000017500000001244412032647220030554 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.NameUpdater; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class TestElementConverter extends AbstractCollectionConverter { private static final Logger log = LoggingManager.getLoggerForClass(); /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232554 $"; //$NON-NLS-1$ } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return TestElement.class.isAssignableFrom(arg0); } /** {@inheritDoc} */ @Override public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) { TestElement el = (TestElement) arg0; if (SaveService.IS_TESTPLAN_FORMAT_22){ ConversionHelp.saveSpecialProperties(el,writer); } PropertyIterator iter = el.propertyIterator(); while (iter.hasNext()) { JMeterProperty jmp=iter.next(); // Skip special properties if required if (!SaveService.IS_TESTPLAN_FORMAT_22 || !ConversionHelp.isSpecialProperty(jmp.getName())) { // Don't save empty comments - except for the TestPlan (to maintain compatibility) if (!( TestElement.COMMENTS.equals(jmp.getName()) && jmp.getStringValue().length()==0 && !el.getClass().equals(TestPlan.class) )) { writeItem(jmp, context, writer); } } } } /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { String classAttribute = reader.getAttribute(ConversionHelp.ATT_CLASS); Class type; if (classAttribute == null) { type = mapper().realClass(reader.getNodeName()); } else { type = mapper().realClass(classAttribute); } // Update the test class name if necessary (Bug 52466) String inputName = type.getName(); String targetName = inputName; String guiClassName = SaveService.aliasToClass(reader.getAttribute(ConversionHelp.ATT_TE_GUICLASS)); targetName = NameUpdater.getCurrentTestName(inputName, guiClassName); if (!targetName.equals(inputName)) { // remap the class name type = mapper().realClass(targetName); } context.put(SaveService.TEST_CLASS_NAME, targetName); // needed by property converters (Bug 52466) try { TestElement el = (TestElement) type.newInstance(); // No need to check version, just process the attributes if present ConversionHelp.restoreSpecialProperties(el, reader); // Slight hack - we need to ensure the TestClass is not reset by the previous call el.setProperty(TestElement.TEST_CLASS, targetName); while (reader.hasMoreChildren()) { reader.moveDown(); JMeterProperty prop = (JMeterProperty) readItem(reader, context, el); if (prop != null) { // could be null if it has been deleted via NameUpdater el.setProperty(prop); } reader.moveUp(); } return el; } catch (InstantiationException e) { log.error("TestElement not instantiable: " + type, e); return null; } catch (IllegalAccessException e) { log.error("TestElement not instantiable: " + type, e); return null; } } /** * @param arg0 */ public TestElementConverter(Mapper arg0) { super(arg0); } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/TestResultWrapperConverter.java0000644000175000017500000000770512032647220032006 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 7, 2004 */ package org.apache.jmeter.save.converters; import java.util.ArrayList; import java.util.Collection; import org.apache.jmeter.reporters.ResultCollectorHelper; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.save.TestResultWrapper; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.mapper.Mapper; /** * XStream Class to convert TestResultWrapper * */ public class TestResultWrapperConverter extends AbstractCollectionConverter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 959055 $"; //$NON-NLS-1$ } /** * @param arg0 */ public TestResultWrapperConverter(Mapper arg0) { super(arg0); } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return arg0.equals(TestResultWrapper.class); } /** {@inheritDoc} */ @Override public void marshal(Object arg0, HierarchicalStreamWriter arg1, MarshallingContext arg2) { // Not used, as the element is generated by the // ResultCollector class } /** * Read test results from JTL files and pass them to the visualiser directly. * If the ResultCollector helper object is defined, then pass the samples to that * rather than adding them to the test result wrapper. * * @return the test result wrapper (may be empty) * * @see com.thoughtworks.xstream.converters.Converter#unmarshal(com.thoughtworks.xstream.io.HierarchicalStreamReader, * com.thoughtworks.xstream.converters.UnmarshallingContext) */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { TestResultWrapper results = new TestResultWrapper(); Collection samples = new ArrayList(); String ver = reader.getAttribute("version"); //$NON-NLS-1$ if (ver == null || ver.length() == 0) { ver = "1.0"; //$NON-NLS-1$ } results.setVersion(ver); ConversionHelp.setInVersion(ver);// Make sure decoding follows input file final ResultCollectorHelper resultCollectorHelper = (ResultCollectorHelper) context.get(SaveService.RESULTCOLLECTOR_HELPER_OBJECT); while (reader.hasMoreChildren()) { reader.moveDown(); SampleResult sample = (SampleResult) readItem(reader, context, results); if (resultCollectorHelper != null) { resultCollectorHelper.add(sample); } else { samples.add(sample); } reader.moveUp(); } results.setSampleResults(samples); return results; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/HashTreeConverter.java0000644000175000017500000000551412032647220030026 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jorphan.collections.HashTree; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class HashTreeConverter extends AbstractCollectionConverter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1188228 $"; //$NON-NLS-1$ } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return HashTree.class.isAssignableFrom(arg0); } /** {@inheritDoc} */ @Override public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) { HashTree tree = (HashTree) arg0; for (Object item : tree.list()) { writeItem(item, context, writer); writeItem(tree.getTree(item), context, writer); } } /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { boolean isKey = true; Object current = null; HashTree tree = (HashTree) createCollection(context.getRequiredType()); while (reader.hasMoreChildren()) { reader.moveDown(); Object item = readItem(reader, context, tree); if (isKey) { tree.add(item); current = item; isKey = false; } else { tree.set(current, (HashTree) item); isKey = true; } reader.moveUp(); } return tree; } public HashTreeConverter(Mapper arg0) { super(arg0); } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/ConversionHelp.java0000644000175000017500000002451312032647220027371 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Jul 27, 2004 */ package org.apache.jmeter.save.converters; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.NameUpdater; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; /** * Utility conversion routines for use with XStream * */ public class ConversionHelp { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String CHAR_SET = "UTF-8"; //$NON-NLS-1$ // Attributes for TestElement and TestElementProperty // Must all be unique public static final String ATT_CLASS = "class"; //$NON-NLS-1$ // Also used by PropertyConverter classes public static final String ATT_NAME = "name"; // $NON-NLS-1$ public static final String ATT_ELEMENT_TYPE = "elementType"; // $NON-NLS-1$ private static final String ATT_TE_ENABLED = "enabled"; //$NON-NLS-1$ private static final String ATT_TE_TESTCLASS = "testclass"; //$NON-NLS-1$ static final String ATT_TE_GUICLASS = "guiclass"; //$NON-NLS-1$ private static final String ATT_TE_NAME = "testname"; //$NON-NLS-1$ /* * These must be set before reading/writing the XML. Rather a hack, but * saves changing all the method calls to include an extra variable. * * AFAIK the variables should only be accessed from one thread, so no need to synchronize. */ private static String inVersion; private static String outVersion = "1.1"; // Default for writing//$NON-NLS-1$ public static void setInVersion(String v) { inVersion = v; } public static void setOutVersion(String v) { outVersion = v; } /** * Encode a string (if necessary) for output to a JTL file. * Strings are only encoded if the output version is 1.0, * but nulls are always converted to the empty string. * * @param p string to encode * @return encoded string (will never be null) */ public static String encode(String p) { if (p == null) {// Nulls cannot be written using PrettyPrintWriter - they cause an NPE return ""; // $NON-NLS-1$ } // Only encode strings if outVersion = 1.0 if (!"1.0".equals(outVersion)) {//$NON-NLS-1$ return p; } try { String p1 = URLEncoder.encode(p, CHAR_SET); return p1; } catch (UnsupportedEncodingException e) { log.warn("System doesn't support " + CHAR_SET, e); return p; } } public static String decode(String p) { if (!"1.0".equals(inVersion)) {//$NON-NLS-1$ return p; } // Only decode strings if inVersion = 1.0 if (p == null) { return null; } try { return URLDecoder.decode(p, CHAR_SET); } catch (UnsupportedEncodingException e) { log.warn("System doesn't support " + CHAR_SET, e); return p; } } public static String cdata(byte[] chars, String encoding) throws UnsupportedEncodingException { StringBuilder buf = new StringBuilder(""); return buf.toString(); } // Names of properties that are handled specially private static final Map propertyToAttribute=new HashMap(); private static void mapentry(String prop, String att){ propertyToAttribute.put(prop,att); } static{ mapentry(TestElement.NAME,ATT_TE_NAME); mapentry(TestElement.GUI_CLASS,ATT_TE_GUICLASS);//$NON-NLS-1$ mapentry(TestElement.TEST_CLASS,ATT_TE_TESTCLASS);//$NON-NLS-1$ mapentry(TestElement.ENABLED,ATT_TE_ENABLED); } private static void saveClass(TestElement el, HierarchicalStreamWriter writer, String prop){ String clazz=el.getPropertyAsString(prop); if (clazz.length()>0) { writer.addAttribute(propertyToAttribute.get(prop),SaveService.classToAlias(clazz)); } } private static void restoreClass(TestElement el, HierarchicalStreamReader reader, String prop) { String att=propertyToAttribute.get(prop); String alias=reader.getAttribute(att); if (alias!=null){ alias=SaveService.aliasToClass(alias); if (TestElement.GUI_CLASS.equals(prop)) { // mainly for TestElementConverter alias = NameUpdater.getCurrentName(alias); } el.setProperty(prop,alias); } } private static void saveItem(TestElement el, HierarchicalStreamWriter writer, String prop, boolean encode){ String item=el.getPropertyAsString(prop); if (item.length() > 0) { if (encode) { item=ConversionHelp.encode(item); } writer.addAttribute(propertyToAttribute.get(prop),item); } } private static void restoreItem(TestElement el, HierarchicalStreamReader reader, String prop, boolean decode) { String att=propertyToAttribute.get(prop); String value=reader.getAttribute(att); if (value!=null){ if (decode) { value=ConversionHelp.decode(value); } el.setProperty(prop,value); } } public static boolean isSpecialProperty(String name) { return propertyToAttribute.containsKey(name); } /** * Get the property name, updating it if necessary using {@link NameUpdater}. * @param reader where to read the name attribute * @param context the unmarshalling context * * @return the property name, may be null if the property has been deleted. * @see #getUpgradePropertyName(String, UnmarshallingContext) */ public static String getPropertyName(HierarchicalStreamReader reader, UnmarshallingContext context) { String name = ConversionHelp.decode(reader.getAttribute(ATT_NAME)); return getUpgradePropertyName(name, context); } /** * Get the property value, updating it if necessary using {@link NameUpdater}. * * Do not use for GUI_CLASS or TEST_CLASS. * * @param reader where to read the value * @param context the unmarshalling context * * @return the property value, updated if necessary. * @see #getUpgradePropertyValue(String, String, UnmarshallingContext) */ public static String getPropertyValue(HierarchicalStreamReader reader, UnmarshallingContext context, String name) { String value = ConversionHelp.decode(reader.getValue()); return getUpgradePropertyValue(name, value, context); } /** * Update a property name using {@link NameUpdater}. * @param name the original property name * @param context the unmarshalling context * * @return the property name, may be null if the property has been deleted. */ public static String getUpgradePropertyName(String name, UnmarshallingContext context) { String testClass = (String) context.get(SaveService.TEST_CLASS_NAME); final String newName = NameUpdater.getCurrentName(name, testClass); // Delete any properties whose name converts to the empty string if (name.length() != 0 && newName.length()==0) { return null; } return newName; } /** * Update a property value using {@link NameUpdater#getCurrentName(String, String, String)}. * * Do not use for GUI_CLASS or TEST_CLASS. * * @param name the original property name * @param value the original property value * @param context the unmarshalling context * * @return the property value, updated if necessary */ public static String getUpgradePropertyValue(String name, String value, UnmarshallingContext context) { String testClass = (String) context.get(SaveService.TEST_CLASS_NAME); return NameUpdater.getCurrentName(value, name, testClass); } /** * Save the special properties: *
      *
    • TestElement.GUI_CLASS
    • *
    • TestElement.TEST_CLASS
    • *
    • TestElement.NAME
    • *
    • TestElement.ENABLED
    • *
    * @param testElement * @param writer */ public static void saveSpecialProperties(TestElement testElement, HierarchicalStreamWriter writer) { saveClass(testElement,writer,TestElement.GUI_CLASS); saveClass(testElement,writer,TestElement.TEST_CLASS); saveItem(testElement,writer,TestElement.NAME,true); saveItem(testElement,writer,TestElement.ENABLED,false); } /** * Restore the special properties: *
      *
    • TestElement.GUI_CLASS
    • *
    • TestElement.TEST_CLASS
    • *
    • TestElement.NAME
    • *
    • TestElement.ENABLED
    • *
    * @param testElement * @param reader */ public static void restoreSpecialProperties(TestElement testElement, HierarchicalStreamReader reader) { restoreClass(testElement,reader,TestElement.GUI_CLASS); restoreClass(testElement,reader,TestElement.TEST_CLASS); restoreItem(testElement,reader,TestElement.NAME,true); restoreItem(testElement,reader,TestElement.ENABLED,false); } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/BooleanPropertyConverter.java0000644000175000017500000000453312032647220031447 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.testelement.property.BooleanProperty; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class BooleanPropertyConverter implements Converter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232550 $"; // $NON-NLS-1$ } /** {@inheritDoc} */ public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) {// superclass does not use types return arg0.equals(BooleanProperty.class); } /** {@inheritDoc} */ public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext arg2) { BooleanProperty prop = (BooleanProperty) obj; writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName())); writer.setValue(prop.getStringValue()); } /** {@inheritDoc} */ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final String name = ConversionHelp.getPropertyName(reader, context); if (name == null) { return null; } BooleanProperty prop = new BooleanProperty(name, Boolean.valueOf(reader.getValue()).booleanValue()); return prop; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/SampleSaveConfigurationConverter.java0000644000175000017500000001567012032647220033117 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.samplers.SampleSaveConfiguration; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider; import com.thoughtworks.xstream.converters.reflection.ReflectionConverter; import com.thoughtworks.xstream.converters.reflection.ReflectionProvider; import com.thoughtworks.xstream.core.JVM; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.mapper.MapperWrapper; /* * Allow new fields to be added to the SampleSaveConfiguration without * changing the output JMX file unless it is necessary. * * TODO work out how to make shouldSerializeMember() conditionally return true. */ public class SampleSaveConfigurationConverter extends ReflectionConverter { private static final ReflectionProvider rp; static { ReflectionProvider tmp; try { tmp = new JVM().bestReflectionProvider(); } catch (NullPointerException e) {// Bug in above method tmp = new PureJavaReflectionProvider(); } rp = tmp; } private static final String TRUE = "true"; // $NON-NLS-1$ // N.B. These must agree with the new member names in SampleSaveConfiguration private static final String NODE_FILENAME = "fileName"; // $NON-NLS-1$ private static final String NODE_HOSTNAME = "hostname"; // $NON-NLS-1$ private static final String NODE_URL = "url"; // $NON-NLS-1$ private static final String NODE_BYTES = "bytes"; // $NON-NLS-1$ private static final String NODE_THREAD_COUNT = "threadCounts"; // $NON-NLS-1$ private static final String NODE_SAMPLE_COUNT = "sampleCount"; // $NON-NLS-1$ private static final String NODE_IDLE_TIME = "idleTime"; // $NON-NLS-1$ // Additional member names which are currently not written out private static final String NODE_DELIMITER = "delimiter"; // $NON-NLS-1$ private static final String NODE_PRINTMS = "printMilliseconds"; // $NON-NLS-1$ static class MyWrapper extends MapperWrapper{ public MyWrapper(Mapper wrapped) { super(wrapped); } /** {@inheritDoc} */ @Override public boolean shouldSerializeMember( @SuppressWarnings("rawtypes") // superclass does not use types Class definedIn, String fieldName) { if (SampleSaveConfiguration.class != definedIn) { return true; } // These are new fields; not saved unless true if (fieldName.equals(NODE_BYTES)) { return false; } if (fieldName.equals(NODE_URL)) { return false; } if (fieldName.equals(NODE_FILENAME)) { return false; } if (fieldName.equals(NODE_HOSTNAME)) { return false; } if (fieldName.equals(NODE_THREAD_COUNT)) { return false; } if (fieldName.equals(NODE_SAMPLE_COUNT)) { return false; } if (fieldName.equals(NODE_IDLE_TIME)) { return false; } // These fields are not currently saved or restored if (fieldName.equals(NODE_DELIMITER)) { return false; } if (fieldName.equals(NODE_PRINTMS)) { return false; } return true; } } public SampleSaveConfigurationConverter(Mapper arg0) { super(new MyWrapper(arg0),rp); } /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 959055 $"; // $NON-NLS-1$ } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { return arg0.equals(SampleSaveConfiguration.class); } /** {@inheritDoc} */ @Override public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) { super.marshal(obj, writer, context); // Save most things SampleSaveConfiguration prop = (SampleSaveConfiguration) obj; // Save the new fields - but only if they are not the default createNode(writer,prop.saveBytes(),NODE_BYTES); createNode(writer,prop.saveUrl(),NODE_URL); createNode(writer,prop.saveFileName(),NODE_FILENAME); createNode(writer,prop.saveHostname(),NODE_HOSTNAME); createNode(writer,prop.saveThreadCounts(),NODE_THREAD_COUNT); createNode(writer,prop.saveSampleCount(),NODE_SAMPLE_COUNT); createNode(writer,prop.saveIdleTime(),NODE_IDLE_TIME); } // Helper method to simplify marshall routine private void createNode(HierarchicalStreamWriter writer, boolean save, String node) { if (!save) { return; } writer.startNode(node); writer.setValue(TRUE); writer.endNode(); } /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final Class thisClass = SampleSaveConfiguration.class; final Class requiredType = context.getRequiredType(); if (requiredType != thisClass) { throw new IllegalArgumentException("Unexpected class: "+requiredType.getName()); } SampleSaveConfiguration result = new SampleSaveConfiguration(); result.setBytes(false); // Maintain backward compatibility (bytes was not in the JMX file) while (reader.hasMoreChildren()) { reader.moveDown(); String nn = reader.getNodeName(); if (!"formatter".equals(nn)){// Skip formatter (if present) bug 42674 $NON-NLS-1$ String fieldName = mapper.realMember(thisClass, nn); java.lang.reflect.Field field = reflectionProvider.getField(thisClass,fieldName); Class type = field.getType(); Object value = unmarshallField(context, result, type, field); reflectionProvider.writeField(result, nn, value, thisClass); } reader.moveUp(); } return result; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/TestElementPropertyConverter.java0000644000175000017500000001504712032647220032323 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class TestElementPropertyConverter extends AbstractCollectionConverter { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String HEADER_CLASSNAME = "org.apache.jmeter.protocol.http.control.Header"; // $NON-NLS-1$ /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232555 $"; // $NON-NLS-1$ } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return arg0.equals(TestElementProperty.class); } /** {@inheritDoc} */ @Override public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) { TestElementProperty prop = (TestElementProperty) arg0; writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName())); Class clazz = prop.getObjectValue().getClass(); writer.addAttribute(ConversionHelp.ATT_ELEMENT_TYPE, SaveService.IS_TESTPLAN_FORMAT_22 ? mapper().serializedClass(clazz) : clazz.getName()); if (SaveService.IS_TESTPLAN_FORMAT_22){ TestElement te = (TestElement)prop.getObjectValue(); ConversionHelp.saveSpecialProperties(te,writer); } PropertyIterator iter = prop.iterator(); while (iter.hasNext()) { JMeterProperty jmp=iter.next(); // Skip special properties if required if (!SaveService.IS_TESTPLAN_FORMAT_22 || !ConversionHelp.isSpecialProperty(jmp.getName())) { // Don't save empty comments if (!(TestElement.COMMENTS.equals(jmp.getName()) && jmp.getStringValue().length()==0)) { writeItem(jmp, context, writer); } } } //TODO clazz is probably always the same as testclass } /* * TODO - convert to work more like upgrade.properties/NameUpdater.java * * Special processing is carried out for the Header Class The String * property TestElement.name is converted to Header.name for example: * Mozilla%2F4.0+%28compatible%3B+MSIE+5.5%3B+Windows+98%29 * User-Agent * becomes Mozilla%2F4.0+%28compatible%3B+MSIE+5.5%3B+Windows+98%29 * User-Agent */ /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { try { TestElementProperty prop = (TestElementProperty) createCollection(context.getRequiredType()); prop.setName(ConversionHelp.decode(reader.getAttribute(ConversionHelp.ATT_NAME))); String element = reader.getAttribute(ConversionHelp.ATT_ELEMENT_TYPE); boolean isHeader = HEADER_CLASSNAME.equals(element); prop.setObjectValue(mapper().realClass(element).newInstance());// Always decode TestElement te = (TestElement)prop.getObjectValue(); // No need to check version, just process the attributes if present ConversionHelp.restoreSpecialProperties(te, reader); while (reader.hasMoreChildren()) { reader.moveDown(); JMeterProperty subProp = (JMeterProperty) readItem(reader, context, prop); if (subProp != null) { // could be null if it has been deleted via NameUpdater if (isHeader) { String name = subProp.getName(); if (TestElement.NAME.equals(name)) { subProp.setName("Header.name");// $NON-NLS-1$ // Must be same as Header.HNAME - but that is built // later } } prop.addProperty(subProp); } reader.moveUp(); } return prop; } catch (InstantiationException e) { log.error("Couldn't unmarshall TestElementProperty", e); return new TestElementProperty("ERROR", new ConfigTestElement());// $NON-NLS-1$ } catch (IllegalAccessException e) { log.error("Couldn't unmarshall TestElementProperty", e); return new TestElementProperty("ERROR", new ConfigTestElement());// $NON-NLS-1$ } } /** * @param arg0 */ public TestElementPropertyConverter(Mapper arg0) { super(arg0); } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/IntegerPropertyConverter.java0000644000175000017500000000451512032647220031465 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.testelement.property.IntegerProperty; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class IntegerPropertyConverter implements Converter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232550 $"; // $NON-NLS-1$ } /** {@inheritDoc} */ public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return arg0.equals(IntegerProperty.class); } /** {@inheritDoc} */ public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext arg2) { IntegerProperty prop = (IntegerProperty) obj; writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName())); writer.setValue(prop.getStringValue()); } /** {@inheritDoc} */ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final String name = ConversionHelp.getPropertyName(reader, context); if (name == null) { return null; } IntegerProperty prop = new IntegerProperty(name, Integer.parseInt(reader.getValue())); return prop; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/converters/LongPropertyConverter.java0000644000175000017500000000446612032647220030774 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save.converters; import org.apache.jmeter.testelement.property.LongProperty; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class LongPropertyConverter implements Converter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1232550 $"; // $NON-NLS-1$ } /** {@inheritDoc} */ public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not use types return arg0.equals(LongProperty.class); } /** {@inheritDoc} */ public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext arg2) { LongProperty prop = (LongProperty) obj; writer.addAttribute(ConversionHelp.ATT_NAME, ConversionHelp.encode(prop.getName())); writer.setValue(prop.getStringValue()); } /** {@inheritDoc} */ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final String name = ConversionHelp.getPropertyName(reader, context); if (name == null) { return null; } LongProperty prop = new LongProperty(name, Long.parseLong(reader.getValue())); return prop; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/ScriptWrapper.java0000644000175000017500000000174512032647220025050 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import org.apache.jorphan.collections.HashTree; class ScriptWrapper { // Used by ScriptWrapperConverter String version = ""; HashTree testPlan; } apache-jmeter-2.8/src/core/org/apache/jmeter/save/SaveService.java0000644000175000017500000006423012032647220024460 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.lang.reflect.InvocationTargetException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.jmeter.reporters.ResultCollectorHelper; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.NameUpdater; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.ConversionException; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.DataHolder; import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider; import com.thoughtworks.xstream.converters.reflection.ReflectionProvider; import com.thoughtworks.xstream.io.xml.XppDriver; import com.thoughtworks.xstream.mapper.CannotResolveClassException; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.mapper.MapperWrapper; /** * Handles setting up XStream serialisation. * The class reads alias definitions from saveservice.properties. * */ public class SaveService { private static final Logger log = LoggingManager.getLoggerForClass(); // Names of DataHolder entries for JTL processing public static final String SAMPLE_EVENT_OBJECT = "SampleEvent"; // $NON-NLS-1$ public static final String RESULTCOLLECTOR_HELPER_OBJECT = "ResultCollectorHelper"; // $NON-NLS-1$ // Names of DataHolder entries for JMX processing public static final String TEST_CLASS_NAME = "TestClassName"; // $NON-NLS-1$ private static final class XStreamWrapper extends XStream { private XStreamWrapper(ReflectionProvider reflectionProvider) { super(reflectionProvider); } // Override wrapMapper in order to insert the Wrapper in the chain @Override protected MapperWrapper wrapMapper(MapperWrapper next) { // Provide our own aliasing using strings rather than classes return new MapperWrapper(next){ // Translate alias to classname and then delegate to wrapped class @Override public Class realClass(String alias) { String fullName = aliasToClass(alias); if (fullName != null) { fullName = NameUpdater.getCurrentName(fullName); } return super.realClass(fullName == null ? alias : fullName); } // Translate to alias and then delegate to wrapped class @Override public String serializedClass(@SuppressWarnings("rawtypes") // superclass does not use types Class type) { if (type == null) { return super.serializedClass(null); // was type, but that caused FindBugs warning } String alias = classToAlias(type.getName()); return alias == null ? super.serializedClass(type) : alias ; } }; } } private static final XStream JMXSAVER = new XStreamWrapper(new PureJavaReflectionProvider()); private static final XStream JTLSAVER = new XStreamWrapper(new PureJavaReflectionProvider()); static { JTLSAVER.setMode(XStream.NO_REFERENCES); // This is needed to stop XStream keeping copies of each class } // The XML header, with placeholder for encoding, since that is controlled by property private static final String XML_HEADER = "\"?>"; // $NON-NLS-1$ // Default file name private static final String SAVESERVICE_PROPERTIES_FILE = "/bin/saveservice.properties"; // $NON-NLS-1$ // Property name used to define file name private static final String SAVESERVICE_PROPERTIES = "saveservice_properties"; // $NON-NLS-1$ // Define file format property names private static final String FILE_FORMAT = "file_format"; // $NON-NLS-1$ private static final String FILE_FORMAT_TESTPLAN = "file_format.testplan"; // $NON-NLS-1$ private static final String FILE_FORMAT_TESTLOG = "file_format.testlog"; // $NON-NLS-1$ // Define file format versions private static final String VERSION_2_2 = "2.2"; // $NON-NLS-1$ // Default to overall format, and then to version 2.2 public static final String TESTPLAN_FORMAT = JMeterUtils.getPropDefault(FILE_FORMAT_TESTPLAN , JMeterUtils.getPropDefault(FILE_FORMAT, VERSION_2_2)); public static final String TESTLOG_FORMAT = JMeterUtils.getPropDefault(FILE_FORMAT_TESTLOG , JMeterUtils.getPropDefault(FILE_FORMAT, VERSION_2_2)); private static boolean validateFormat(String format){ if ("2.2".equals(format)) return true; if ("2.1".equals(format)) return true; return false; } static{ if (!validateFormat(TESTPLAN_FORMAT)){ log.error("Invalid test plan format: "+TESTPLAN_FORMAT); } if (!validateFormat(TESTLOG_FORMAT)){ log.error("Invalid test log format: "+TESTLOG_FORMAT); } } /** New XStream format - more compressed class names */ public static final boolean IS_TESTPLAN_FORMAT_22 = VERSION_2_2.equals(TESTPLAN_FORMAT); // Holds the mappings from the saveservice properties file // Key: alias Entry: full class name // There may be multiple aliases which map to the same class private static final Properties aliasToClass = new Properties(); // Holds the reverse mappings // Key: full class name Entry: primary alias private static final Properties classToAlias = new Properties(); // Version information for test plan header // This is written to JMX files by ScriptWrapperConverter // Also to JTL files by ResultCollector private static final String VERSION = "1.2"; // $NON-NLS-1$ // This is written to JMX files by ScriptWrapperConverter private static String propertiesVersion = "";// read from properties file; written to JMX files // Must match _version property value in saveservice.properties // used to ensure saveservice.properties and SaveService are updated simultaneously private static final String PROPVERSION = "2.3";// Expected version $NON-NLS-1$ // Internal information only private static String fileVersion = ""; // read from saveservice.properties file// $NON-NLS-1$ // Must match Revision id value in saveservice.properties, // used to ensure saveservice.properties and SaveService are updated simultaneously private static final String FILEVERSION = "1382180"; // Expected value $NON-NLS-1$ private static String fileEncoding = ""; // read from properties file// $NON-NLS-1$ static { log.info("Testplan (JMX) version: "+TESTPLAN_FORMAT+". Testlog (JTL) version: "+TESTLOG_FORMAT); initProps(); checkVersions(); } // Helper method to simplify alias creation from properties private static void makeAlias(String aliasList, String clazz) { String aliases[]=aliasList.split(","); // Can have multiple aliases for same target classname String alias=aliases[0]; for (String a : aliases){ Object old = aliasToClass.setProperty(a,clazz); if (old != null){ log.error("Duplicate class detected for "+alias+": "+clazz+" & "+old); } } Object oldval=classToAlias.setProperty(clazz,alias); if (oldval != null) { log.error("Duplicate alias detected for "+clazz+": "+alias+" & "+oldval); } } public static Properties loadProperties() throws IOException{ Properties nameMap = new Properties(); FileInputStream fis = null; try { fis = new FileInputStream(JMeterUtils.getJMeterHome() + JMeterUtils.getPropDefault(SAVESERVICE_PROPERTIES, SAVESERVICE_PROPERTIES_FILE)); nameMap.load(fis); } finally { JOrphanUtils.closeQuietly(fis); } return nameMap; } private static void initProps() { // Load the alias properties try { Properties nameMap = loadProperties(); // now create the aliases for (Map.Entry me : nameMap.entrySet()) { String key = (String) me.getKey(); String val = (String) me.getValue(); if (!key.startsWith("_")) { // $NON-NLS-1$ makeAlias(key, val); } else { // process special keys if (key.equalsIgnoreCase("_version")) { // $NON-NLS-1$ propertiesVersion = val; log.info("Using SaveService properties version " + propertiesVersion); } else if (key.equalsIgnoreCase("_file_version")) { // $NON-NLS-1$ fileVersion = extractVersion(val); log.info("Using SaveService properties file version " + fileVersion); } else if (key.equalsIgnoreCase("_file_encoding")) { // $NON-NLS-1$ fileEncoding = val; log.info("Using SaveService properties file encoding " + fileEncoding); } else { key = key.substring(1);// Remove the leading "_" try { final String trimmedValue = val.trim(); if (trimmedValue.equals("collection") // $NON-NLS-1$ || trimmedValue.equals("mapping")) { // $NON-NLS-1$ registerConverter(key, JMXSAVER, true); registerConverter(key, JTLSAVER, true); } else { registerConverter(key, JMXSAVER, false); registerConverter(key, JTLSAVER, false); } } catch (IllegalAccessException e1) { log.warn("Can't register a converter: " + key, e1); } catch (InstantiationException e1) { log.warn("Can't register a converter: " + key, e1); } catch (ClassNotFoundException e1) { log.warn("Can't register a converter: " + key, e1); } catch (IllegalArgumentException e1) { log.warn("Can't register a converter: " + key, e1); } catch (SecurityException e1) { log.warn("Can't register a converter: " + key, e1); } catch (InvocationTargetException e1) { log.warn("Can't register a converter: " + key, e1); } catch (NoSuchMethodException e1) { log.warn("Can't register a converter: " + key, e1); } } } } } catch (IOException e) { log.fatalError("Bad saveservice properties file", e); throw new JMeterError("JMeter requires the saveservice properties file to continue"); } } /** * Register converter. * @param key * @param jmxsaver * @param useMapper * * @throws InstantiationException * @throws IllegalAccessException * @throws InvocationTargetException * @throws NoSuchMethodException * @throws ClassNotFoundException */ private static void registerConverter(String key, XStream jmxsaver, boolean useMapper) throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException { if (useMapper){ jmxsaver.registerConverter((Converter) Class.forName(key).getConstructor( new Class[] { Mapper.class }).newInstance( new Object[] { jmxsaver.getMapper() })); } else { jmxsaver.registerConverter((Converter) Class.forName(key).newInstance()); } } // For converters to use public static String aliasToClass(String s){ String r = aliasToClass.getProperty(s); return r == null ? s : r; } // For converters to use public static String classToAlias(String s){ String r = classToAlias.getProperty(s); return r == null ? s : r; } // Called by Save function public static void saveTree(HashTree tree, OutputStream out) throws IOException { // Get the OutputWriter to use OutputStreamWriter outputStreamWriter = getOutputStreamWriter(out); writeXmlHeader(outputStreamWriter); // Use deprecated method, to avoid duplicating code ScriptWrapper wrapper = new ScriptWrapper(); wrapper.testPlan = tree; JMXSAVER.toXML(wrapper, outputStreamWriter); outputStreamWriter.write('\n');// Ensure terminated properly outputStreamWriter.close(); } // Used by Test code public static void saveElement(Object el, OutputStream out) throws IOException { // Get the OutputWriter to use OutputStreamWriter outputStreamWriter = getOutputStreamWriter(out); writeXmlHeader(outputStreamWriter); // Use deprecated method, to avoid duplicating code JMXSAVER.toXML(el, outputStreamWriter); outputStreamWriter.close(); } // Used by Test code public static Object loadElement(InputStream in) throws IOException { // Get the InputReader to use InputStreamReader inputStreamReader = getInputStreamReader(in); // Use deprecated method, to avoid duplicating code Object element = JMXSAVER.fromXML(inputStreamReader); inputStreamReader.close(); return element; } /** * Save a sampleResult to an XML output file using XStream. * * @param evt sampleResult wrapped in a sampleEvent * @param writer output stream which must be created using {@link #getFileEncoding(String)} */ // Used by ResultCollector.sampleOccurred(SampleEvent event) public synchronized static void saveSampleResult(SampleEvent evt, Writer writer) throws IOException { DataHolder dh = JTLSAVER.newDataHolder(); dh.put(SAMPLE_EVENT_OBJECT, evt); // This is effectively the same as saver.toXML(Object, Writer) except we get to provide the DataHolder // Don't know why there is no method for this in the XStream class JTLSAVER.marshal(evt.getResult(), new XppDriver().createWriter(writer), dh); writer.write('\n'); } /** * @param elem test element * @param writer output stream which must be created using {@link #getFileEncoding(String)} */ // Used by ResultCollector#recordStats() public synchronized static void saveTestElement(TestElement elem, Writer writer) throws IOException { JMXSAVER.toXML(elem, writer); // TODO should this be JTLSAVER? Only seems to be called by MonitorHealthVisualzer writer.write('\n'); } private static boolean versionsOK = true; // Extract version digits from String of the form #Revision: n.mm # // (where # is actually $ above) private static final String REVPFX = "$Revision: "; private static final String REVSFX = " $"; // $NON-NLS-1$ private static String extractVersion(String rev) { if (rev.length() > REVPFX.length() + REVSFX.length()) { return rev.substring(REVPFX.length(), rev.length() - REVSFX.length()); } return rev; } // private static void checkVersion(Class clazz, String expected) { // // String actual = "*NONE*"; // $NON-NLS-1$ // try { // actual = (String) clazz.getMethod("getVersion", null).invoke(null, null); // actual = extractVersion(actual); // } catch (Exception ignored) { // // Not needed // } // if (0 != actual.compareTo(expected)) { // versionsOK = false; // log.warn("Version mismatch: expected '" + expected + "' found '" + actual + "' in " + clazz.getName()); // } // } // Routines for TestSaveService static boolean checkPropertyVersion(){ return SaveService.PROPVERSION.equals(SaveService.propertiesVersion); } static boolean checkFileVersion(){ return SaveService.FILEVERSION.equals(SaveService.fileVersion); } // Allow test code to check for spurious class references static List checkClasses(){ final ClassLoader classLoader = SaveService.class.getClassLoader(); List missingClasses = new ArrayList(); //boolean OK = true; for (Object clazz : classToAlias.keySet()) { String name = (String) clazz; if (!NameUpdater.isMapped(name)) {// don't bother checking class is present if it is to be updated try { Class.forName(name, false, classLoader); } catch (ClassNotFoundException e) { log.error("Unexpected entry in saveservice.properties; class does not exist and is not upgraded: "+name); missingClasses.add(name); } } } return missingClasses; } static boolean checkVersions() { versionsOK = true; // Disable converter version checks as they are more of a nuisance than helpful // checkVersion(BooleanPropertyConverter.class, "493779"); // $NON-NLS-1$ // checkVersion(HashTreeConverter.class, "514283"); // $NON-NLS-1$ // checkVersion(IntegerPropertyConverter.class, "493779"); // $NON-NLS-1$ // checkVersion(LongPropertyConverter.class, "493779"); // $NON-NLS-1$ // checkVersion(MultiPropertyConverter.class, "514283"); // $NON-NLS-1$ // checkVersion(SampleResultConverter.class, "571992"); // $NON-NLS-1$ // // // Not built until later, so need to use this method: // try { // checkVersion( // Class.forName("org.apache.jmeter.protocol.http.util.HTTPResultConverter"), // $NON-NLS-1$ // "514283"); // $NON-NLS-1$ // } catch (ClassNotFoundException e) { // versionsOK = false; // log.warn(e.getLocalizedMessage()); // } // checkVersion(StringPropertyConverter.class, "493779"); // $NON-NLS-1$ // checkVersion(TestElementConverter.class, "549987"); // $NON-NLS-1$ // checkVersion(TestElementPropertyConverter.class, "549987"); // $NON-NLS-1$ // checkVersion(ScriptWrapperConverter.class, "514283"); // $NON-NLS-1$ // checkVersion(TestResultWrapperConverter.class, "514283"); // $NON-NLS-1$ // checkVersion(SampleSaveConfigurationConverter.class,"549936"); // $NON-NLS-1$ if (!PROPVERSION.equalsIgnoreCase(propertiesVersion)) { log.warn("Bad _version - expected " + PROPVERSION + ", found " + propertiesVersion + "."); } // if (!FILEVERSION.equalsIgnoreCase(fileVersion)) { // log.warn("Bad _file_version - expected " + FILEVERSION + ", found " + fileVersion +"."); // } if (versionsOK) { log.info("All converter versions present and correct"); } return versionsOK; } /** * Read results from JTL file. * * @param reader of the file * @param resultCollectorHelper helper class to enable TestResultWrapperConverter to deliver the samples * @throws Exception */ public static void loadTestResults(InputStream reader, ResultCollectorHelper resultCollectorHelper) throws Exception { // Get the InputReader to use InputStreamReader inputStreamReader = getInputStreamReader(reader); DataHolder dh = JTLSAVER.newDataHolder(); dh.put(RESULTCOLLECTOR_HELPER_OBJECT, resultCollectorHelper); // Allow TestResultWrapper to feed back the samples // This is effectively the same as saver.fromXML(InputStream) except we get to provide the DataHolder // Don't know why there is no method for this in the XStream class JTLSAVER.unmarshal(new XppDriver().createReader(reader), null, dh); inputStreamReader.close(); } /** * Load a Test tree (JMX file) * @param reader on the JMX file * @return the loaded tree * @throws Exception if there is a problem reading the file or processing it */ public static HashTree loadTree(InputStream reader) throws Exception { if (!reader.markSupported()) { reader = new BufferedInputStream(reader); } reader.mark(Integer.MAX_VALUE); ScriptWrapper wrapper = null; try { // Get the InputReader to use InputStreamReader inputStreamReader = getInputStreamReader(reader); wrapper = (ScriptWrapper) JMXSAVER.fromXML(inputStreamReader); inputStreamReader.close(); if (wrapper == null){ log.error("Problem loading XML: see above."); return null; } return wrapper.testPlan; } catch (CannotResolveClassException e) { if (e.getMessage().startsWith("node")) { log.info("Problem loading XML, trying Avalon format"); reader.reset(); return OldSaveService.loadSubTree(reader); } log.warn("Problem loading XML, cannot determine class for element: " + e.getLocalizedMessage()); return null; } catch (NoClassDefFoundError e) { log.error("Missing class "+e); return null; } catch (ConversionException e) { log.error("Conversion error "+e); return null; } } private static InputStreamReader getInputStreamReader(InputStream inStream) { // Check if we have a encoding to use from properties Charset charset = getFileEncodingCharset(); if(charset != null) { return new InputStreamReader(inStream, charset); } else { // We use the default character set encoding of the JRE return new InputStreamReader(inStream); } } private static OutputStreamWriter getOutputStreamWriter(OutputStream outStream) { // Check if we have a encoding to use from properties Charset charset = getFileEncodingCharset(); if(charset != null) { return new OutputStreamWriter(outStream, charset); } else { // We use the default character set encoding of the JRE return new OutputStreamWriter(outStream); } } /** * Returns the file Encoding specified in saveservice.properties or the default * @param dflt value to return if file encoding was not provided * * @return file encoding or default */ // Used by ResultCollector when creating output files public static String getFileEncoding(String dflt){ if(fileEncoding != null && fileEncoding.length() > 0) { return fileEncoding; } else { return dflt; } } private static Charset getFileEncodingCharset() { // Check if we have a encoding to use from properties if(fileEncoding != null && fileEncoding.length() > 0) { return Charset.forName(fileEncoding); } else { // We use the default character set encoding of the JRE return null; } } private static void writeXmlHeader(OutputStreamWriter writer) throws IOException { // Write XML header if we have the charset to use for encoding Charset charset = getFileEncodingCharset(); if(charset != null) { // We do not use getEncoding method of Writer, since that returns // the historical name String header = XML_HEADER.replaceAll("", charset.name()); writer.write(header); writer.write('\n'); } } // Normal output // ---- Debugging information ---- // required-type : org.apache.jorphan.collections.ListedHashTree // cause-message : WebServiceSampler : WebServiceSampler // class : org.apache.jmeter.save.ScriptWrapper // message : WebServiceSampler : WebServiceSampler // line number : 929 // path : /jmeterTestPlan/hashTree/hashTree/hashTree[4]/hashTree[5]/WebServiceSampler // cause-exception : com.thoughtworks.xstream.alias.CannotResolveClassException // ------------------------------- /** * Simplify getMessage() output from XStream ConversionException * @param ce - ConversionException to analyse * @return string with details of error */ public static String CEtoString(ConversionException ce){ String msg = "XStream ConversionException at line: " + ce.get("line number") + "\n" + ce.get("message") + "\nPerhaps a missing jar? See log file."; return msg; } public static String getPropertiesVersion() { return propertiesVersion; } public static String getVERSION() { return VERSION; } }apache-jmeter-2.8/src/core/org/apache/jmeter/save/OldSaveService.java0000644000175000017500000005742312032647220025125 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; //import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; //import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.Collection; //import java.util.Date; //import java.util.Iterator; //import java.util.LinkedList; //import java.util.List; import java.util.Map; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; //import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; //import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.samplers.SampleResult; //import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.MapProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.NameUpdater; import org.apache.jmeter.visualizers.Visualizer; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.xml.sax.SAXException; /** * This class restores the original Avalon XML format (not used by default). * * This may be removed in a future release. */ public final class OldSaveService { private static final Logger log = LoggingManager.getLoggerForClass(); // --------------------------------------------------------------------- // XML RESULT FILE CONSTANTS AND FIELD NAME CONSTANTS // --------------------------------------------------------------------- // Shared with TestElementSaver static final String PRESERVE = "preserve"; // $NON-NLS-1$ static final String XML_SPACE = "xml:space"; // $NON-NLS-1$ private static final String ASSERTION_RESULT_TAG_NAME = "assertionResult"; // $NON-NLS-1$ private static final String BINARY = "binary"; // $NON-NLS-1$ private static final String DATA_TYPE = "dataType"; // $NON-NLS-1$ private static final String ERROR = "error"; // $NON-NLS-1$ private static final String FAILURE = "failure"; // $NON-NLS-1$ private static final String FAILURE_MESSAGE = "failureMessage"; // $NON-NLS-1$ private static final String LABEL = "label"; // $NON-NLS-1$ private static final String RESPONSE_CODE = "responseCode"; // $NON-NLS-1$ private static final String RESPONSE_MESSAGE = "responseMessage"; // $NON-NLS-1$ private static final String SAMPLE_RESULT_TAG_NAME = "sampleResult"; // $NON-NLS-1$ private static final String SUCCESSFUL = "success"; // $NON-NLS-1$ private static final String THREAD_NAME = "threadName"; // $NON-NLS-1$ private static final String TIME = "time"; // $NON-NLS-1$ private static final String TIME_STAMP = "timeStamp"; // $NON-NLS-1$ private static final DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); /** * Private constructor to prevent instantiation. */ private OldSaveService() { } // public static void saveSubTree(HashTree subTree, OutputStream writer) throws IOException { // Configuration config = getConfigsFromTree(subTree).get(0); // DefaultConfigurationSerializer saver = new DefaultConfigurationSerializer(); // // saver.setIndent(true); // try { // saver.serialize(writer, config); // } catch (SAXException e) { // throw new IOException("SAX implementation problem"); // } catch (ConfigurationException e) { // throw new IOException("Problem using Avalon Configuration tools"); // } // } /** * Read sampleResult from Avalon XML file. * * @param config Avalon configuration * @return sample result */ // Probably no point in converting this to return a SampleEvent private static SampleResult getSampleResult(Configuration config) { SampleResult result = new SampleResult(config.getAttributeAsLong(TIME_STAMP, 0L), config.getAttributeAsLong( TIME, 0L)); result.setThreadName(config.getAttribute(THREAD_NAME, "")); // $NON-NLS-1$ result.setDataType(config.getAttribute(DATA_TYPE, "")); result.setResponseCode(config.getAttribute(RESPONSE_CODE, "")); // $NON-NLS-1$ result.setResponseMessage(config.getAttribute(RESPONSE_MESSAGE, "")); // $NON-NLS-1$ result.setSuccessful(config.getAttributeAsBoolean(SUCCESSFUL, false)); result.setSampleLabel(config.getAttribute(LABEL, "")); // $NON-NLS-1$ result.setResponseData(getBinaryData(config.getChild(BINARY))); Configuration[] subResults = config.getChildren(SAMPLE_RESULT_TAG_NAME); for (int i = 0; i < subResults.length; i++) { result.storeSubResult(getSampleResult(subResults[i])); } Configuration[] assResults = config.getChildren(ASSERTION_RESULT_TAG_NAME); for (int i = 0; i < assResults.length; i++) { result.addAssertionResult(getAssertionResult(assResults[i])); } Configuration[] samplerData = config.getChildren("property"); // $NON-NLS-1$ for (int i = 0; i < samplerData.length; i++) { result.setSamplerData(samplerData[i].getValue("")); // $NON-NLS-1$ } return result; } // private static List getConfigsFromTree(HashTree subTree) { // Iterator iter = subTree.list().iterator(); // List configs = new LinkedList(); // // while (iter.hasNext()) { // TestElement item = iter.next(); // DefaultConfiguration config = new DefaultConfiguration("node", "node"); // $NON-NLS-1$ // $NON-NLS-2$ // // config.addChild(getConfigForTestElement(null, item)); // List configList = getConfigsFromTree(subTree.getTree(item)); // Iterator iter2 = configList.iterator(); // // while (iter2.hasNext()) { // config.addChild(iter2.next()); // } // configs.add(config); // } // return configs; // } // private static Configuration getConfiguration(byte[] bin) { // DefaultConfiguration config = new DefaultConfiguration(BINARY, "JMeter Save Service"); // $NON-NLS-1$ // // try { // config.setValue(new String(bin, "UTF-8")); // $NON-NLS-1$ // } catch (UnsupportedEncodingException e) { // log.error("", e); // $NON-NLS-1$ // } // return config; // } private static byte[] getBinaryData(Configuration config) { if (config == null) { return new byte[0]; } try { return config.getValue("").getBytes("UTF-8"); // $NON-NLS-1$ } catch (UnsupportedEncodingException e) { return new byte[0]; } } private static AssertionResult getAssertionResult(Configuration config) { AssertionResult result = new AssertionResult(""); //TODO provide proper name? result.setError(config.getAttributeAsBoolean(ERROR, false)); result.setFailure(config.getAttributeAsBoolean(FAILURE, false)); result.setFailureMessage(config.getAttribute(FAILURE_MESSAGE, "")); return result; } // private static Configuration getConfiguration(AssertionResult assResult) { // DefaultConfiguration config = new DefaultConfiguration(ASSERTION_RESULT_TAG_NAME, "JMeter Save Service"); // // config.setAttribute(FAILURE_MESSAGE, assResult.getFailureMessage()); // config.setAttribute(ERROR, "" + assResult.isError()); // config.setAttribute(FAILURE, "" + assResult.isFailure()); // return config; // } // /** // * This method determines the content of the result data that will be // * stored for the Avalon XML format. // * // * @param result // * the object containing all of the data that has been collected. // * @param saveConfig // * the configuration giving the data items to be saved. // * N.B. It is rather out of date, as many fields are not saved. // * However it is probably not worth updating, as no-one should be using the format. // */ // public static Configuration getConfiguration(SampleResult result, SampleSaveConfiguration saveConfig) { // DefaultConfiguration config = new DefaultConfiguration(SAMPLE_RESULT_TAG_NAME, "JMeter Save Service"); // $NON-NLS-1$ // // if (saveConfig.saveTime()) { // config.setAttribute(TIME, String.valueOf(result.getTime())); // } // if (saveConfig.saveLabel()) { // config.setAttribute(LABEL, result.getSampleLabel()); // } // if (saveConfig.saveCode()) { // config.setAttribute(RESPONSE_CODE, result.getResponseCode()); // } // if (saveConfig.saveMessage()) { // config.setAttribute(RESPONSE_MESSAGE, result.getResponseMessage()); // } // if (saveConfig.saveThreadName()) { // config.setAttribute(THREAD_NAME, result.getThreadName()); // } // if (saveConfig.saveDataType()) { // config.setAttribute(DATA_TYPE, result.getDataType()); // } // // if (saveConfig.printMilliseconds()) { // config.setAttribute(TIME_STAMP, String.valueOf(result.getTimeStamp())); // } else if (saveConfig.formatter() != null) { // String stamp = saveConfig.formatter().format(new Date(result.getTimeStamp())); // // config.setAttribute(TIME_STAMP, stamp); // } // // if (saveConfig.saveSuccess()) { // config.setAttribute(SUCCESSFUL, Boolean.toString(result.isSuccessful())); // } // // SampleResult[] subResults = result.getSubResults(); // // if (subResults != null) { // for (int i = 0; i < subResults.length; i++) { // config.addChild(getConfiguration(subResults[i], saveConfig)); // } // } // // AssertionResult[] assResults = result.getAssertionResults(); // // if (saveConfig.saveSamplerData(result)) { // config.addChild(createConfigForString("samplerData", result.getSamplerData())); // $NON-NLS-1$ // } // if (saveConfig.saveAssertions() && assResults != null) { // for (int i = 0; i < assResults.length; i++) { // config.addChild(getConfiguration(assResults[i])); // } // } // if (saveConfig.saveResponseData(result)) { // config.addChild(getConfiguration(result.getResponseData())); // } // return config; // } // private static Configuration getConfigForTestElement(String named, TestElement item) { // TestElementSaver saver = new TestElementSaver(named); // item.traverse(saver); // Configuration config = saver.getConfiguration(); // /* // * DefaultConfiguration config = new DefaultConfiguration("testelement", // * "testelement"); // * // * if (named != null) { config.setAttribute("name", named); } if // * (item.getProperty(TestElement.TEST_CLASS) != null) { // * config.setAttribute("class", (String) // * item.getProperty(TestElement.TEST_CLASS)); } else { // * config.setAttribute("class", item.getClass().getName()); } Iterator // * iter = item.getPropertyNames().iterator(); // * // * while (iter.hasNext()) { String name = (String) iter.next(); Object // * value = item.getProperty(name); // * // * if (value instanceof TestElement) { // * config.addChild(getConfigForTestElement(name, (TestElement) value)); } // * else if (value instanceof Collection) { // * config.addChild(createConfigForCollection(name, (Collection) value)); } // * else if (value != null) { config.addChild(createConfigForString(name, // * value.toString())); } } // */ // return config; // } // private static Configuration createConfigForString(String name, String value) { // if (value == null) { // value = ""; // } // DefaultConfiguration config = new DefaultConfiguration("property", "property"); // // config.setAttribute("name", name); // config.setValue(value); // config.setAttribute(XML_SPACE, PRESERVE); // return config; // } // Called by SaveService.loadTree(InputStream reader) if XStream loading fails public synchronized static HashTree loadSubTree(InputStream in) throws IOException { try { Configuration config = builder.build(in); HashTree loadedTree = generateNode(config); return loadedTree; } catch (ConfigurationException e) { String message = "Problem loading using Avalon Configuration tools"; log.error(message, e); throw new IOException(message); } catch (SAXException e) { String message = "Problem with SAX implementation"; log.error(message, e); throw new IOException(message); } } private static TestElement createTestElement(Configuration config) throws ConfigurationException, ClassNotFoundException, IllegalAccessException, InstantiationException { TestElement element = null; String testClass = config.getAttribute("class"); // $NON-NLS-1$ String gui_class=""; // $NON-NLS-1$ Configuration[] children = config.getChildren(); for (int i = 0; i < children.length; i++) { if (children[i].getName().equals("property")) { // $NON-NLS-1$ if (children[i].getAttribute("name").equals(TestElement.GUI_CLASS)){ // $NON-NLS-1$ gui_class=children[i].getValue(); } } } String newClass = NameUpdater.getCurrentTestName(testClass,gui_class); element = (TestElement) Class.forName(newClass).newInstance(); for (int i = 0; i < children.length; i++) { if (children[i].getName().equals("property")) { // $NON-NLS-1$ try { JMeterProperty prop = createProperty(children[i], newClass); if (prop!=null) { element.setProperty(prop); } } catch (Exception ex) { log.error("Problem loading property", ex); element.setProperty(children[i].getAttribute("name"), ""); // $NON-NLS-1$ // $NON-NLS-2$ } } else if (children[i].getName().equals("testelement")) { // $NON-NLS-1$ element.setProperty(new TestElementProperty(children[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createTestElement(children[i]))); } else if (children[i].getName().equals("collection")) { // $NON-NLS-1$ element.setProperty(new CollectionProperty(children[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createCollection(children[i], newClass))); } else if (children[i].getName().equals("map")) { // $NON-NLS-1$ element.setProperty(new MapProperty(children[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createMap(children[i],newClass))); } } return element; } private static Collection createCollection(Configuration config, String testClass) throws ConfigurationException, ClassNotFoundException, IllegalAccessException, InstantiationException { @SuppressWarnings("unchecked") // OK Collection coll = (Collection) Class.forName(config.getAttribute("class")).newInstance(); // $NON-NLS-1$ Configuration[] items = config.getChildren(); for (int i = 0; i < items.length; i++) { if (items[i].getName().equals("property")) { // $NON-NLS-1$ JMeterProperty prop = createProperty(items[i], testClass); if (prop!=null) { coll.add(prop); } } else if (items[i].getName().equals("testelement")) { // $NON-NLS-1$ coll.add(new TestElementProperty(items[i].getAttribute("name", ""), createTestElement(items[i]))); // $NON-NLS-1$ // $NON-NLS-2$ } else if (items[i].getName().equals("collection")) { // $NON-NLS-1$ coll.add(new CollectionProperty(items[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createCollection(items[i], testClass))); } else if (items[i].getName().equals("string")) { // $NON-NLS-1$ JMeterProperty prop = createProperty(items[i], testClass); if (prop!=null) { coll.add(prop); } } else if (items[i].getName().equals("map")) { // $NON-NLS-1$ coll.add(new MapProperty(items[i].getAttribute("name", ""), createMap(items[i], testClass))); // $NON-NLS-1$ // $NON-NLS-2$ } } return coll; } private static JMeterProperty createProperty(Configuration config, String testClass) throws IllegalAccessException, ClassNotFoundException, InstantiationException { String value = config.getValue(""); // $NON-NLS-1$ String name = config.getAttribute("name", value); // $NON-NLS-1$ String oname = name; String type = config.getAttribute("propType", StringProperty.class.getName()); // $NON-NLS-1$ // Do upgrade translation: name = NameUpdater.getCurrentName(name, testClass); if (TestElement.GUI_CLASS.equals(name)) { value = NameUpdater.getCurrentName(value); } else if (TestElement.TEST_CLASS.equals(name)) { value=testClass; // must always agree } else { value = NameUpdater.getCurrentName(value, name, testClass); } // Delete any properties whose name converts to the empty string if (oname.length() != 0 && name.length()==0) { return null; } // Create the property: JMeterProperty prop = (JMeterProperty) Class.forName(type).newInstance(); prop.setName(name); prop.setObjectValue(value); return prop; } private static Map createMap(Configuration config, String testClass) throws ConfigurationException, ClassNotFoundException, IllegalAccessException, InstantiationException { @SuppressWarnings("unchecked") // OK Map map = (Map) Class.forName(config.getAttribute("class")).newInstance(); Configuration[] items = config.getChildren(); for (int i = 0; i < items.length; i++) { if (items[i].getName().equals("property")) { // $NON-NLS-1$ JMeterProperty prop = createProperty(items[i], testClass); if (prop!=null) { map.put(prop.getName(), prop); } } else if (items[i].getName().equals("testelement")) { // $NON-NLS-1$ map.put(items[i].getAttribute("name", ""), new TestElementProperty(items[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createTestElement(items[i]))); } else if (items[i].getName().equals("collection")) { // $NON-NLS-1$ map.put(items[i].getAttribute("name"), // $NON-NLS-1$ new CollectionProperty(items[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createCollection(items[i], testClass))); } else if (items[i].getName().equals("map")) { // $NON-NLS-1$ map.put(items[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ new MapProperty(items[i].getAttribute("name", ""), // $NON-NLS-1$ // $NON-NLS-2$ createMap(items[i], testClass))); } } return map; } private static HashTree generateNode(Configuration config) { TestElement element = null; try { element = createTestElement(config.getChild("testelement")); // $NON-NLS-1$ } catch (Exception e) { log.error("Problem loading part of file", e); return null; } HashTree subTree = new ListedHashTree(element); Configuration[] subNodes = config.getChildren("node"); // $NON-NLS-1$ for (int i = 0; i < subNodes.length; i++) { HashTree t = generateNode(subNodes[i]); if (t != null) { subTree.add(element, t); } } return subTree; } // Called by ResultCollector#loadExistingFile() if XStream loading fails public static void processSamples(String filename, Visualizer visualizer, ResultCollector rc) throws SAXException, IOException, ConfigurationException { DefaultConfigurationBuilder cfgbuilder = new DefaultConfigurationBuilder(); Configuration savedSamples = cfgbuilder.buildFromFile(filename); Configuration[] samples = savedSamples.getChildren(); final boolean errorsOnly = rc.isErrorLogging(); final boolean successOnly = rc.isSuccessOnlyLogging(); for (int i = 0; i < samples.length; i++) { SampleResult result = OldSaveService.getSampleResult(samples[i]); if (ResultCollector.isSampleWanted(result.isSuccessful(), errorsOnly, successOnly)) { visualizer.add(result); } } } // Called by ResultCollector#recordResult() // public static String getSerializedSampleResult( // SampleResult result, DefaultConfigurationSerializer slzr, SampleSaveConfiguration cfg) // throws SAXException, IOException, // ConfigurationException { // ByteArrayOutputStream tempOut = new ByteArrayOutputStream(); // // slzr.serialize(tempOut, OldSaveService.getConfiguration(result, cfg)); // String serVer = tempOut.toString(); // String lineSep=System.getProperty("line.separator"); // $NON-NLS-1$ // /* // * Remove the prefix. // * When using the x-jars (xakan etc) or Java 1.4, the serialised output has a // * newline after the prefix. However, when using Java 1.5 without the x-jars, the output // * has no newline at all. // */ // int index = serVer.indexOf(lineSep); // Is there a new-line? // if (index > -1) {// Yes, assume it follows the prefix // return serVer.substring(index); // } // if (serVer.startsWith("");// must exist // $NON-NLS-1$ // return lineSep + serVer.substring(index+2);// +2 for ?> // } // return serVer; // } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/ScriptWrapperConverter.java0000644000175000017500000001122512032647220026732 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import org.apache.jmeter.save.converters.ConversionHelp; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.converters.ConversionException; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; /** * Handles XStream conversion of Test Scripts * */ public class ScriptWrapperConverter implements Converter { private static final String ATT_PROPERTIES = "properties"; // $NON-NLS-1$ private static final String ATT_VERSION = "version"; // $NON-NLS-1$ private static final String ATT_JMETER = "jmeter"; // $NON-NLS-1$ /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1378971 $"; // $NON-NLS-1$ } private final Mapper classMapper; public ScriptWrapperConverter(Mapper classMapper) { this.classMapper = classMapper; } /** * {@inheritDoc} */ public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass is not typed return arg0.equals(ScriptWrapper.class); } /** * {@inheritDoc} */ public void marshal(Object arg0, HierarchicalStreamWriter writer, MarshallingContext context) { ScriptWrapper wrap = (ScriptWrapper) arg0; String version = SaveService.getVERSION(); ConversionHelp.setOutVersion(version);// Ensure output follows version writer.addAttribute(ATT_VERSION, version); writer.addAttribute(ATT_PROPERTIES, SaveService.getPropertiesVersion()); writer.addAttribute(ATT_JMETER, JMeterUtils.getJMeterVersion()); writer.startNode(classMapper.serializedClass(wrap.testPlan.getClass())); context.convertAnother(wrap.testPlan); writer.endNode(); } /** * {@inheritDoc} */ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { ScriptWrapper wrap = new ScriptWrapper(); wrap.version = reader.getAttribute(ATT_VERSION); ConversionHelp.setInVersion(wrap.version);// Make sure decoding // follows input file reader.moveDown(); // Catch errors and rethrow as ConversionException so we get location details try { wrap.testPlan = (HashTree) context.convertAnother(wrap, getNextType(reader)); } catch (NoClassDefFoundError e) { throw createConversionException(e); } catch (Exception e) { throw createConversionException(e); } return wrap; } private ConversionException createConversionException(Throwable e) { final ConversionException conversionException = new ConversionException(e); StackTraceElement[] ste = e.getStackTrace(); if (ste!=null){ for(StackTraceElement top : ste){ String className=top.getClassName(); if (className.startsWith("org.apache.jmeter.")){ conversionException.add("first-jmeter-class", top.toString()); break; } } } return conversionException; } protected Class getNextType(HierarchicalStreamReader reader) { String classAttribute = reader.getAttribute(ConversionHelp.ATT_CLASS); Class type; if (classAttribute == null) { type = classMapper.realClass(reader.getNodeName()); } else { type = classMapper.realClass(classAttribute); } return type; } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/SaveGraphicsService.java0000644000175000017500000001507112032647220026140 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.swing.JComponent; import org.apache.xmlgraphics.image.codec.png.PNGEncodeParam; import org.apache.xmlgraphics.image.codec.png.PNGImageEncoder; import org.apache.xmlgraphics.image.codec.tiff.TIFFEncodeParam; import org.apache.xmlgraphics.image.codec.tiff.TIFFImageEncoder; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.util.JOrphanUtils; /** * Class is responsible for taking a component and saving it as a JPEG, PNG or * TIFF. The class is very simple. Thanks to Batik and the developers who worked * so hard on it. */ public class SaveGraphicsService { public static final int PNG = 0; public static final int TIFF = 1; public static final String PNG_EXTENSION = ".png"; //$NON-NLS-1$ public static final String TIFF_EXTENSION = ".tif"; //$NON-NLS-1$ public static final String JPEG_EXTENSION = ".jpg"; //$NON-NLS-1$ /** * */ public SaveGraphicsService() { super(); } /* * This is not currently used by JMeter code. * As it uses Sun-specific code (the only such in JMeter), it has been commented out for now. */ // /** // * If someone wants to save a JPEG, use this method. There is a limitation // * though. It uses gray scale instead of color due to artifacts with color // * encoding. For some reason, it does not translate pure red and orange // * correctly. To make the text readable, gray scale is used. // * // * @param filename // * @param component // */ // public void saveUsingJPEGEncoder(String filename, JComponent component) { // Dimension size = component.getSize(); // // We use Gray scale, since color produces poor quality // // this is an unfortunate result of the default codec // // implementation. // BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_USHORT_GRAY); // Graphics2D grp = image.createGraphics(); // component.paint(grp); // // File outfile = new File(filename + JPEG_EXTENSION); // FileOutputStream fos = createFile(outfile); // JPEGEncodeParam param = JPEGCodec.getDefaultJPEGEncodeParam(image); // Float q = new Float(1.0); // param.setQuality(q.floatValue(), true); // JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos, param); // // try { // encoder.encode(image); // } catch (Exception e) { // log.warn(e.toString()); // } finally { // JOrphanUtils.closeQuietly(fos); // } // } /** * Method will save the JComponent as an image. The formats are PNG, and * TIFF. * * @param filename * @param type * @param component */ public void saveJComponent(String filename, int type, JComponent component) { Dimension size = component.getSize(); BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_BYTE_INDEXED); Graphics2D grp = image.createGraphics(); component.paint(grp); if (type == PNG) { filename += PNG_EXTENSION; this.savePNGWithBatik(filename, image); } else if (type == TIFF) { filename = filename + TIFF_EXTENSION; this.saveTIFFWithBatik(filename, image); } } /** * Use Batik to save a PNG of the graph * * @param filename * @param image */ public void savePNGWithBatik(String filename, BufferedImage image) { File outfile = new File(filename); OutputStream fos = createFile(outfile); if (fos == null) { return; } PNGEncodeParam param = PNGEncodeParam.getDefaultEncodeParam(image); PNGImageEncoder encoder = new PNGImageEncoder(fos, param); try { encoder.encode(image); } catch (IOException e) { JMeterUtils.reportErrorToUser("PNGImageEncoder reported: "+e.getMessage(), "Problem creating image file"); } finally { JOrphanUtils.closeQuietly(fos); } } /** * Use Batik to save a TIFF file of the graph * * @param filename * @param image */ public void saveTIFFWithBatik(String filename, BufferedImage image) { File outfile = new File(filename); OutputStream fos = createFile(outfile); if (fos == null) { return; } TIFFEncodeParam param = new TIFFEncodeParam(); TIFFImageEncoder encoder = new TIFFImageEncoder(fos, param); try { encoder.encode(image); } catch (IOException e) { JMeterUtils.reportErrorToUser("TIFFImageEncoder reported: "+e.getMessage(), "Problem creating image file"); // Yuck: TIFFImageEncoder uses Error to report runtime problems } catch (Error e) { JMeterUtils.reportErrorToUser("TIFFImageEncoder reported: "+e.getMessage(), "Problem creating image file"); if (e.getClass() != Error.class){// rethrow other errors throw e; } } finally { JOrphanUtils.closeQuietly(fos); } } /** * Create a new file for the graphics. Since the method creates a new file, * we shouldn't get a FNFE. * * @param filename * @return output stream created from the filename */ private FileOutputStream createFile(File filename) { try { return new FileOutputStream(filename); } catch (FileNotFoundException e) { JMeterUtils.reportErrorToUser("Could not create file: "+e.getMessage(), "Problem creating image file"); return null; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/save/CSVSaveService.java0000644000175000017500000011761212032647220025037 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.save; import java.io.BufferedReader; import java.io.CharArrayWriter; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.swing.table.DefaultTableModel; import org.apache.commons.collections.map.LinkedMap; import org.apache.commons.lang3.CharUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.samplers.StatisticalSampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.Visualizer; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.jorphan.util.JMeterError; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; /** * This class provides a means for saving/reading test results as CSV files. */ // For unit tests, @see TestCSVSaveService public final class CSVSaveService { private static final Logger log = LoggingManager.getLoggerForClass(); // --------------------------------------------------------------------- // XML RESULT FILE CONSTANTS AND FIELD NAME CONSTANTS // --------------------------------------------------------------------- private static final String DATA_TYPE = "dataType"; // $NON-NLS-1$ private static final String FAILURE_MESSAGE = "failureMessage"; // $NON-NLS-1$ private static final String LABEL = "label"; // $NON-NLS-1$ private static final String RESPONSE_CODE = "responseCode"; // $NON-NLS-1$ private static final String RESPONSE_MESSAGE = "responseMessage"; // $NON-NLS-1$ private static final String SUCCESSFUL = "success"; // $NON-NLS-1$ private static final String THREAD_NAME = "threadName"; // $NON-NLS-1$ private static final String TIME_STAMP = "timeStamp"; // $NON-NLS-1$ // --------------------------------------------------------------------- // ADDITIONAL CSV RESULT FILE CONSTANTS AND FIELD NAME CONSTANTS // --------------------------------------------------------------------- private static final String CSV_ELAPSED = "elapsed"; // $NON-NLS-1$ private static final String CSV_BYTES = "bytes"; // $NON-NLS-1$ private static final String CSV_THREAD_COUNT1 = "grpThreads"; // $NON-NLS-1$ private static final String CSV_THREAD_COUNT2 = "allThreads"; // $NON-NLS-1$ private static final String CSV_SAMPLE_COUNT = "SampleCount"; // $NON-NLS-1$ private static final String CSV_ERROR_COUNT = "ErrorCount"; // $NON-NLS-1$ private static final String CSV_URL = "URL"; // $NON-NLS-1$ private static final String CSV_FILENAME = "Filename"; // $NON-NLS-1$ private static final String CSV_LATENCY = "Latency"; // $NON-NLS-1$ private static final String CSV_ENCODING = "Encoding"; // $NON-NLS-1$ private static final String CSV_HOSTNAME = "Hostname"; // $NON-NLS-1$ private static final String CSV_IDLETIME = "IdleTime"; // $NON-NLS-1$ // Used to enclose variable name labels, to distinguish from any of the // above labels private static final String VARIABLE_NAME_QUOTE_CHAR = "\""; // $NON-NLS-1$ // Initial config from properties static private final SampleSaveConfiguration _saveConfig = SampleSaveConfiguration .staticConfig(); // Date format to try if the time format does not parse as milliseconds // (this is the suggested value in jmeter.properties) private static final String DEFAULT_DATE_FORMAT_STRING = "MM/dd/yy HH:mm:ss"; // $NON-NLS-1$ private static final String LINE_SEP = System.getProperty("line.separator"); // $NON-NLS-1$ /** * Private constructor to prevent instantiation. */ private CSVSaveService() { } /** * Read Samples from a file; handles quoted strings. * * @param filename * input file * @param visualizer * where to send the results * @param resultCollector * the parent collector * @throws IOException */ public static void processSamples(String filename, Visualizer visualizer, ResultCollector resultCollector) throws IOException { BufferedReader dataReader = null; final boolean errorsOnly = resultCollector.isErrorLogging(); final boolean successOnly = resultCollector.isSuccessOnlyLogging(); try { dataReader = new BufferedReader(new InputStreamReader( new FileInputStream(filename), SaveService.getFileEncoding("UTF-8"))); dataReader.mark(400);// Enough to read the header column names // Get the first line, and see if it is the header String line = dataReader.readLine(); if (line == null) { throw new IOException(filename + ": unable to read header line"); } long lineNumber = 1; SampleSaveConfiguration saveConfig = CSVSaveService .getSampleSaveConfiguration(line, filename); if (saveConfig == null) {// not a valid header log.info(filename + " does not appear to have a valid header. Using default configuration."); saveConfig = (SampleSaveConfiguration) resultCollector .getSaveConfig().clone(); // may change the format later dataReader.reset(); // restart from beginning lineNumber = 0; } String[] parts; final char delim = saveConfig.getDelimiter().charAt(0); // TODO: does it matter that an empty line will terminate the loop? // CSV output files should never contain empty lines, so probably // not // If so, then need to check whether the reader is at EOF SimpleDateFormat dateFormat = new SimpleDateFormat(DEFAULT_DATE_FORMAT_STRING); while ((parts = csvReadFile(dataReader, delim)).length != 0) { lineNumber++; SampleEvent event = CSVSaveService .makeResultFromDelimitedString(parts, saveConfig, lineNumber, dateFormat); if (event != null) { final SampleResult result = event.getResult(); if (ResultCollector.isSampleWanted(result.isSuccessful(), errorsOnly, successOnly)) { visualizer.add(result); } } } } finally { JOrphanUtils.closeQuietly(dataReader); } } /** * Make a SampleResult given a set of tokens * * @param parts * tokens parsed from the input * @param saveConfig * the save configuration (may be updated) * @param lineNumber * @param dateFormat * @return the sample result * * @throws JMeterError */ private static SampleEvent makeResultFromDelimitedString( final String[] parts, final SampleSaveConfiguration saveConfig, // may be updated final long lineNumber, DateFormat dateFormat) { SampleResult result = null; String hostname = "";// $NON-NLS-1$ long timeStamp = 0; long elapsed = 0; String text = null; String field = null; // Save the name for error reporting int i = 0; try { if (saveConfig.saveTimestamp()) { field = TIME_STAMP; text = parts[i++]; if (saveConfig.printMilliseconds()) { try { timeStamp = Long.parseLong(text); } catch (NumberFormatException e) {// see if this works log.warn(e.toString()); // method is only ever called from one thread at a time // so it's OK to use a static DateFormat Date stamp = dateFormat.parse(text); timeStamp = stamp.getTime(); log.warn("Setting date format to: " + DEFAULT_DATE_FORMAT_STRING); saveConfig.setFormatter(dateFormat); } } else if (saveConfig.formatter() != null) { Date stamp = saveConfig.formatter().parse(text); timeStamp = stamp.getTime(); } else { // can this happen? final String msg = "Unknown timestamp format"; log.warn(msg); throw new JMeterError(msg); } } if (saveConfig.saveTime()) { field = CSV_ELAPSED; text = parts[i++]; elapsed = Long.parseLong(text); } if (saveConfig.saveSampleCount()) { result = new StatisticalSampleResult(timeStamp, elapsed); } else { result = new SampleResult(timeStamp, elapsed); } if (saveConfig.saveLabel()) { field = LABEL; text = parts[i++]; result.setSampleLabel(text); } if (saveConfig.saveCode()) { field = RESPONSE_CODE; text = parts[i++]; result.setResponseCode(text); } if (saveConfig.saveMessage()) { field = RESPONSE_MESSAGE; text = parts[i++]; result.setResponseMessage(text); } if (saveConfig.saveThreadName()) { field = THREAD_NAME; text = parts[i++]; result.setThreadName(text); } if (saveConfig.saveDataType()) { field = DATA_TYPE; text = parts[i++]; result.setDataType(text); } if (saveConfig.saveSuccess()) { field = SUCCESSFUL; text = parts[i++]; result.setSuccessful(Boolean.valueOf(text).booleanValue()); } if (saveConfig.saveAssertionResultsFailureMessage()) { i++; // TODO - should this be restored? } if (saveConfig.saveBytes()) { field = CSV_BYTES; text = parts[i++]; result.setBytes(Integer.parseInt(text)); } if (saveConfig.saveThreadCounts()) { field = CSV_THREAD_COUNT1; text = parts[i++]; result.setGroupThreads(Integer.parseInt(text)); field = CSV_THREAD_COUNT2; text = parts[i++]; result.setAllThreads(Integer.parseInt(text)); } if (saveConfig.saveUrl()) { i++; // TODO: should this be restored? } if (saveConfig.saveFileName()) { field = CSV_FILENAME; text = parts[i++]; result.setResultFileName(text); } if (saveConfig.saveLatency()) { field = CSV_LATENCY; text = parts[i++]; result.setLatency(Long.parseLong(text)); } if (saveConfig.saveEncoding()) { field = CSV_ENCODING; text = parts[i++]; result.setEncodingAndType(text); } if (saveConfig.saveSampleCount()) { field = CSV_SAMPLE_COUNT; text = parts[i++]; result.setSampleCount(Integer.parseInt(text)); field = CSV_ERROR_COUNT; text = parts[i++]; result.setErrorCount(Integer.parseInt(text)); } if (saveConfig.saveHostname()) { field = CSV_HOSTNAME; hostname = parts[i++]; } if (saveConfig.saveIdleTime()) { field = CSV_IDLETIME; text = parts[i++]; result.setIdleTime(Long.parseLong(text)); } if (i + saveConfig.getVarCount() < parts.length) { log.warn("Line: " + lineNumber + ". Found " + parts.length + " fields, expected " + i + ". Extra fields have been ignored."); } } catch (NumberFormatException e) { log.warn("Error parsing field '" + field + "' at line " + lineNumber + " " + e); throw new JMeterError(e); } catch (ParseException e) { log.warn("Error parsing field '" + field + "' at line " + lineNumber + " " + e); throw new JMeterError(e); } catch (ArrayIndexOutOfBoundsException e) { log.warn("Insufficient columns to parse field '" + field + "' at line " + lineNumber); throw new JMeterError(e); } return new SampleEvent(result, "", hostname); } /** * Generates the field names for the output file * * @return the field names as a string */ public static String printableFieldNamesToString() { return printableFieldNamesToString(_saveConfig); } /** * Generates the field names for the output file * * @return the field names as a string */ public static String printableFieldNamesToString( SampleSaveConfiguration saveConfig) { StringBuilder text = new StringBuilder(); String delim = saveConfig.getDelimiter(); if (saveConfig.saveTimestamp()) { text.append(TIME_STAMP); text.append(delim); } if (saveConfig.saveTime()) { text.append(CSV_ELAPSED); text.append(delim); } if (saveConfig.saveLabel()) { text.append(LABEL); text.append(delim); } if (saveConfig.saveCode()) { text.append(RESPONSE_CODE); text.append(delim); } if (saveConfig.saveMessage()) { text.append(RESPONSE_MESSAGE); text.append(delim); } if (saveConfig.saveThreadName()) { text.append(THREAD_NAME); text.append(delim); } if (saveConfig.saveDataType()) { text.append(DATA_TYPE); text.append(delim); } if (saveConfig.saveSuccess()) { text.append(SUCCESSFUL); text.append(delim); } if (saveConfig.saveAssertionResultsFailureMessage()) { text.append(FAILURE_MESSAGE); text.append(delim); } if (saveConfig.saveBytes()) { text.append(CSV_BYTES); text.append(delim); } if (saveConfig.saveThreadCounts()) { text.append(CSV_THREAD_COUNT1); text.append(delim); text.append(CSV_THREAD_COUNT2); text.append(delim); } if (saveConfig.saveUrl()) { text.append(CSV_URL); text.append(delim); } if (saveConfig.saveFileName()) { text.append(CSV_FILENAME); text.append(delim); } if (saveConfig.saveLatency()) { text.append(CSV_LATENCY); text.append(delim); } if (saveConfig.saveEncoding()) { text.append(CSV_ENCODING); text.append(delim); } if (saveConfig.saveSampleCount()) { text.append(CSV_SAMPLE_COUNT); text.append(delim); text.append(CSV_ERROR_COUNT); text.append(delim); } if (saveConfig.saveHostname()) { text.append(CSV_HOSTNAME); text.append(delim); } if (saveConfig.saveIdleTime()) { text.append(CSV_IDLETIME); text.append(delim); } for (int i = 0; i < SampleEvent.getVarCount(); i++) { text.append(VARIABLE_NAME_QUOTE_CHAR); text.append(SampleEvent.getVarName(i)); text.append(VARIABLE_NAME_QUOTE_CHAR); text.append(delim); } String resultString = null; int size = text.length(); int delSize = delim.length(); // Strip off the trailing delimiter if (size >= delSize) { resultString = text.substring(0, size - delSize); } else { resultString = text.toString(); } return resultString; } // Map header names to set() methods private static final LinkedMap headerLabelMethods = new LinkedMap(); // These entries must be in the same order as columns are saved/restored. static { headerLabelMethods.put(TIME_STAMP, new Functor("setTimestamp")); headerLabelMethods.put(CSV_ELAPSED, new Functor("setTime")); headerLabelMethods.put(LABEL, new Functor("setLabel")); headerLabelMethods.put(RESPONSE_CODE, new Functor("setCode")); headerLabelMethods.put(RESPONSE_MESSAGE, new Functor("setMessage")); headerLabelMethods.put(THREAD_NAME, new Functor("setThreadName")); headerLabelMethods.put(DATA_TYPE, new Functor("setDataType")); headerLabelMethods.put(SUCCESSFUL, new Functor("setSuccess")); headerLabelMethods.put(FAILURE_MESSAGE, new Functor( "setAssertionResultsFailureMessage")); headerLabelMethods.put(CSV_BYTES, new Functor("setBytes")); // Both these are needed in the list even though they set the same // variable headerLabelMethods.put(CSV_THREAD_COUNT1, new Functor("setThreadCounts")); headerLabelMethods.put(CSV_THREAD_COUNT2, new Functor("setThreadCounts")); headerLabelMethods.put(CSV_URL, new Functor("setUrl")); headerLabelMethods.put(CSV_FILENAME, new Functor("setFileName")); headerLabelMethods.put(CSV_LATENCY, new Functor("setLatency")); headerLabelMethods.put(CSV_ENCODING, new Functor("setEncoding")); // Both these are needed in the list even though they set the same // variable headerLabelMethods.put(CSV_SAMPLE_COUNT, new Functor("setSampleCount")); headerLabelMethods.put(CSV_ERROR_COUNT, new Functor("setSampleCount")); headerLabelMethods.put(CSV_HOSTNAME, new Functor("setHostname")); headerLabelMethods.put(CSV_IDLETIME, new Functor("setIdleTime")); } /** * Parse a CSV header line * * @param headerLine * from CSV file * @param filename * name of file (for log message only) * @return config corresponding to the header items found or null if not a * header line */ public static SampleSaveConfiguration getSampleSaveConfiguration( String headerLine, String filename) { String[] parts = splitHeader(headerLine, _saveConfig.getDelimiter()); // Try // default // delimiter String delim = null; if (parts == null) { Perl5Matcher matcher = JMeterUtils.getMatcher(); PatternMatcherInput input = new PatternMatcherInput(headerLine); Pattern pattern = JMeterUtils.getPatternCache() // This assumes the header names are all single words with no spaces // word followed by 0 or more repeats of (non-word char + word) // where the non-word char (\2) is the same // e.g. abc|def|ghi but not abd|def~ghi .getPattern("\\w+((\\W)\\w+)?(\\2\\w+)*(\\2\"\\w+\")*", // $NON-NLS-1$ // last entries may be quoted strings Perl5Compiler.READ_ONLY_MASK); if (matcher.matches(input, pattern)) { delim = matcher.getMatch().group(2); parts = splitHeader(headerLine, delim);// now validate the // result } } if (parts == null) { return null; // failed to recognise the header } // We know the column names all exist, so create the config SampleSaveConfiguration saveConfig = new SampleSaveConfiguration(false); int varCount = 0; for (int i = 0; i < parts.length; i++) { String label = parts[i]; if (isVariableName(label)) { varCount++; } else { Functor set = (Functor) headerLabelMethods.get(label); set.invoke(saveConfig, new Boolean[] { Boolean.TRUE }); } } if (delim != null) { log.warn("Default delimiter '" + _saveConfig.getDelimiter() + "' did not work; using alternate '" + delim + "' for reading " + filename); saveConfig.setDelimiter(delim); } saveConfig.setVarCount(varCount); return saveConfig; } private static String[] splitHeader(String headerLine, String delim) { String parts[] = headerLine.split("\\Q" + delim);// $NON-NLS-1$ int previous = -1; // Check if the line is a header for (int i = 0; i < parts.length; i++) { final String label = parts[i]; // Check for Quoted variable names if (isVariableName(label)) { previous = Integer.MAX_VALUE; // they are always last continue; } int current = headerLabelMethods.indexOf(label); if (current == -1) { return null; // unknown column name } if (current <= previous) { log.warn("Column header number " + (i + 1) + " name " + label + " is out of order."); return null; // out of order } previous = current; } return parts; } /** * Check if the label is a variable name, i.e. is it enclosed in * double-quotes? * * @param label * column name from CSV file * @return if the label is enclosed in double-quotes */ private static boolean isVariableName(final String label) { return label.length() > 2 && label.startsWith(VARIABLE_NAME_QUOTE_CHAR) && label.endsWith(VARIABLE_NAME_QUOTE_CHAR); } /** * Method will save aggregate statistics as CSV. For now I put it here. Not * sure if it should go in the newer SaveService instead of here. if we ever * decide to get rid of this class, we'll need to move this method to the * new save service. * * @param data * List of data rows * @param writer * output file * @throws IOException */ public static void saveCSVStats(List data, FileWriter writer) throws IOException { saveCSVStats(data, writer, null); } /** * Method will save aggregate statistics as CSV. For now I put it here. Not * sure if it should go in the newer SaveService instead of here. if we ever * decide to get rid of this class, we'll need to move this method to the * new save service. * * @param data * List of data rows * @param writer * output file * @param headers * header names (if non-null) * @throws IOException */ public static void saveCSVStats(List data, FileWriter writer, String headers[]) throws IOException { final char DELIM = ','; final char SPECIALS[] = new char[] { DELIM, QUOTING_CHAR }; if (headers != null) { for (int i = 0; i < headers.length; i++) { if (i > 0) { writer.write(DELIM); } writer.write(quoteDelimiters(headers[i], SPECIALS)); } writer.write(LINE_SEP); } for (int idx = 0; idx < data.size(); idx++) { List row = (List) data.get(idx); for (int idy = 0; idy < row.size(); idy++) { if (idy > 0) { writer.write(DELIM); } Object item = row.get(idy); writer.write(quoteDelimiters(String.valueOf(item), SPECIALS)); } writer.write(LINE_SEP); } } /** * Method saves aggregate statistics (with header names) as CSV from a table * model. Same as {@link #saveCSVStats(List, FileWriter, String[])} except * that there is no need to create a List containing the data. * * @param model * table model containing the data * @param writer * output file * @throws IOException */ public static void saveCSVStats(DefaultTableModel model, FileWriter writer) throws IOException { saveCSVStats(model, writer, true); } /** * Method saves aggregate statistics as CSV from a table model. Same as * {@link #saveCSVStats(List, FileWriter, String[])} except that there is * no need to create a List containing the data. * * @param model * table model containing the data * @param writer * output file * @param saveHeaders * whether or not to save headers * @throws IOException */ public static void saveCSVStats(DefaultTableModel model, FileWriter writer, boolean saveHeaders) throws IOException { final char DELIM = ','; final char SPECIALS[] = new char[] { DELIM, QUOTING_CHAR }; final int columns = model.getColumnCount(); final int rows = model.getRowCount(); if (saveHeaders) { for (int i = 0; i < columns; i++) { if (i > 0) { writer.write(DELIM); } writer.write(quoteDelimiters(model.getColumnName(i), SPECIALS)); } writer.write(LINE_SEP); } for (int row = 0; row < rows; row++) { for (int column = 0; column < columns; column++) { if (column > 0) { writer.write(DELIM); } Object item = model.getValueAt(row, column); writer.write(quoteDelimiters(String.valueOf(item), SPECIALS)); } writer.write(LINE_SEP); } } /** * Convert a result into a string, where the fields of the result are * separated by the default delimiter. * * @param event * the sample event to be converted * @return the separated value representation of the result */ public static String resultToDelimitedString(SampleEvent event) { return resultToDelimitedString(event, event.getResult().getSaveConfig() .getDelimiter()); } /** * Convert a result into a string, where the fields of the result are * separated by a specified String. * * @param event * the sample event to be converted * @param delimiter * the separation string * @return the separated value representation of the result */ public static String resultToDelimitedString(SampleEvent event, final String delimiter) { /* * Class to handle generating the delimited string. - adds the delimiter * if not the first call - quotes any strings that require it */ final class StringQuoter { final StringBuilder sb = new StringBuilder(); private final char[] specials; private boolean addDelim; public StringQuoter(char delim) { specials = new char[] { delim, QUOTING_CHAR, CharUtils.CR, CharUtils.LF }; addDelim = false; // Don't add delimiter first time round } private void addDelim() { if (addDelim) { sb.append(specials[0]); } else { addDelim = true; } } // These methods handle parameters that could contain delimiters or // quotes: public void append(String s) { addDelim(); // if (s == null) return; sb.append(quoteDelimiters(s, specials)); } public void append(Object obj) { append(String.valueOf(obj)); } // These methods handle parameters that cannot contain delimiters or // quotes public void append(int i) { addDelim(); sb.append(i); } public void append(long l) { addDelim(); sb.append(l); } public void append(boolean b) { addDelim(); sb.append(b); } @Override public String toString() { return sb.toString(); } } StringQuoter text = new StringQuoter(delimiter.charAt(0)); SampleResult sample = event.getResult(); SampleSaveConfiguration saveConfig = sample.getSaveConfig(); if (saveConfig.saveTimestamp()) { if (saveConfig.printMilliseconds()) { text.append(sample.getTimeStamp()); } else if (saveConfig.formatter() != null) { String stamp = saveConfig.formatter().format( new Date(sample.getTimeStamp())); text.append(stamp); } } if (saveConfig.saveTime()) { text.append(sample.getTime()); } if (saveConfig.saveLabel()) { text.append(sample.getSampleLabel()); } if (saveConfig.saveCode()) { text.append(sample.getResponseCode()); } if (saveConfig.saveMessage()) { text.append(sample.getResponseMessage()); } if (saveConfig.saveThreadName()) { text.append(sample.getThreadName()); } if (saveConfig.saveDataType()) { text.append(sample.getDataType()); } if (saveConfig.saveSuccess()) { text.append(sample.isSuccessful()); } if (saveConfig.saveAssertionResultsFailureMessage()) { String message = null; AssertionResult[] results = sample.getAssertionResults(); if (results != null) { // Find the first non-null message for (int i = 0; i < results.length; i++) { message = results[i].getFailureMessage(); if (message != null) { break; } } } if (message != null) { text.append(message); } else { text.append(""); // Need to append something so delimiter is // added } } if (saveConfig.saveBytes()) { text.append(sample.getBytes()); } if (saveConfig.saveThreadCounts()) { text.append(sample.getGroupThreads()); text.append(sample.getAllThreads()); } if (saveConfig.saveUrl()) { text.append(sample.getURL()); } if (saveConfig.saveFileName()) { text.append(sample.getResultFileName()); } if (saveConfig.saveLatency()) { text.append(sample.getLatency()); } if (saveConfig.saveEncoding()) { text.append(sample.getDataEncodingWithDefault()); } if (saveConfig.saveSampleCount()) { // Need both sample and error count to be any use text.append(sample.getSampleCount()); text.append(sample.getErrorCount()); } if (saveConfig.saveHostname()) { text.append(event.getHostname()); } if (saveConfig.saveIdleTime()) { text.append(event.getResult().getIdleTime()); } for (int i = 0; i < SampleEvent.getVarCount(); i++) { text.append(event.getVarValue(i)); } return text.toString(); } // =================================== CSV quote/unquote handling // ============================== /* * Private versions of what might eventually be part of Commons-CSV or * Commons-Lang/Io... */ /* *

    Returns a String value for a character-delimited column * value enclosed in the quote character, if required.

    * *

    If the value contains a special character, then the String value is * returned enclosed in the quote character.

    * *

    Any quote characters in the value are doubled up.

    * *

    If the value does not contain any special characters, then the String * value is returned unchanged.

    * *

    N.B. The list of special characters includes the quote character. *

    * * @param input the input column String, may be null (without enclosing * delimiters) * * @param specialChars special characters; second one must be the quote * character * * @return the input String, enclosed in quote characters if the value * contains a special character, null for null string input */ private static String quoteDelimiters(String input, char[] specialChars) { if (StringUtils.containsNone(input, specialChars)) { return input; } StringBuilder buffer = new StringBuilder(input.length() + 10); final char quote = specialChars[1]; buffer.append(quote); for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); if (c == quote) { buffer.append(quote); // double the quote char } buffer.append(c); } buffer.append(quote); return buffer.toString(); } // State of the parser private static final int INITIAL = 0, PLAIN = 1, QUOTED = 2, EMBEDDEDQUOTE = 3; public static final char QUOTING_CHAR = '"'; /** * Reads from file and splits input into strings according to the delimiter, * taking note of quoted strings. *

    * Handles DOS (CRLF), Unix (LF), and Mac (CR) line-endings equally. *

    * A blank line - or a quoted blank line - both return an array containing * a single empty String. * @param infile * input file - must support mark(1) * @param delim * delimiter (e.g. comma) * @return array of strings, will be empty if there is no data, i.e. if the input is at EOF. * @throws IOException * also for unexpected quote characters */ public static String[] csvReadFile(BufferedReader infile, char delim) throws IOException { int ch; int state = INITIAL; List list = new ArrayList(); CharArrayWriter baos = new CharArrayWriter(200); boolean push = false; while (-1 != (ch = infile.read())) { push = false; switch (state) { case INITIAL: if (ch == QUOTING_CHAR) { state = QUOTED; } else if (isDelimOrEOL(delim, ch)) { push = true; } else { baos.write(ch); state = PLAIN; } break; case PLAIN: if (ch == QUOTING_CHAR) { baos.write(ch); throw new IOException( "Cannot have quote-char in plain field:[" + baos.toString() + "]"); } else if (isDelimOrEOL(delim, ch)) { push = true; state = INITIAL; } else { baos.write(ch); } break; case QUOTED: if (ch == QUOTING_CHAR) { state = EMBEDDEDQUOTE; } else { baos.write(ch); } break; case EMBEDDEDQUOTE: if (ch == QUOTING_CHAR) { baos.write(QUOTING_CHAR); // doubled quote => quote state = QUOTED; } else if (isDelimOrEOL(delim, ch)) { push = true; state = INITIAL; } else { baos.write(QUOTING_CHAR); throw new IOException( "Cannot have single quote-char in quoted field:[" + baos.toString() + "]"); } break; } // switch(state) if (push) { if (ch == '\r') {// Remove following \n if present infile.mark(1); if (infile.read() != '\n') { infile.reset(); // did not find \n, put the character // back } } String s = baos.toString(); list.add(s); baos.reset(); } if ((ch == '\n' || ch == '\r') && state != QUOTED) { break; } } // while not EOF if (ch == -1) {// EOF (or end of string) so collect any remaining data if (state == QUOTED) { throw new IOException("Missing trailing quote-char in quoted field:[\"" + baos.toString() + "]"); } // Do we have some data, or a trailing empty field? if (baos.size() > 0 // we have some data || push // we've started a field || state == EMBEDDEDQUOTE // Just seen "" ) { list.add(baos.toString()); } } return list.toArray(new String[list.size()]); } private static boolean isDelimOrEOL(char delim, int ch) { return ch == delim || ch == '\n' || ch == '\r'; } /** * Reads from String and splits into strings according to the delimiter, * taking note of quoted strings. * * Handles DOS (CRLF), Unix (LF), and Mac (CR) line-endings equally. * * @param line * input line * @param delim * delimiter (e.g. comma) * @return array of strings * @throws IOException * also for unexpected quote characters */ public static String[] csvSplitString(String line, char delim) throws IOException { return csvReadFile(new BufferedReader(new StringReader(line)), delim); } } apache-jmeter-2.8/src/core/org/apache/jmeter/plugin/0000755000175000017500000000000012165514773021746 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/plugin/JMeterPlugin.java0000644000175000017500000000166112032647220025145 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.plugin; public interface JMeterPlugin { String[][] getIconMappings(); String[][] getResourceBundles(); } apache-jmeter-2.8/src/core/org/apache/jmeter/plugin/PluginManager.java0000644000175000017500000000504712032647220025333 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.plugin; import java.net.URL; import javax.swing.ImageIcon; import org.apache.jmeter.gui.GUIFactory; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public final class PluginManager { private static final PluginManager instance = new PluginManager(); private static final Logger log = LoggingManager.getLoggerForClass(); private PluginManager() { } /** * Installs a plugin. * * @param plugin * the plugin to install * @param useGui * indication of whether or not the gui will be used */ public static void install(JMeterPlugin plugin, boolean useGui) { if (useGui) { instance.installPlugin(plugin); } } private void installPlugin(JMeterPlugin plugin) { String[][] icons = plugin.getIconMappings(); ClassLoader classloader = plugin.getClass().getClassLoader(); for (int i = 0; i < icons.length; i++) { URL resource = classloader.getResource(icons[i][1].trim()); if (resource == null) { log.warn("Can't find icon for " + icons[i][0] + " - " + icons[i][1]); } else { GUIFactory.registerIcon(icons[i][0], new ImageIcon(resource)); if (icons[i].length > 2 && icons[i][2] != null) { URL resource2 = classloader.getResource(icons[i][2].trim()); if (resource2 == null) { log.info("Can't find disabled icon for " + icons[i][0] + " - " + icons[i][2]); } else { GUIFactory.registerDisabledIcon(icons[i][0], new ImageIcon(resource2)); } } } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/0000755000175000017500000000000012165514773022102 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/threads/JMeterVariables.java0000644000175000017500000001020412032647220025744 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import org.apache.jmeter.util.JMeterUtils; /** * Class which defines JMeter variables. * These are similar to properties, but they are local to a single thread. */ public class JMeterVariables { private final Map variables = new HashMap(); private int iteration = 0; // Property names to preload into JMeter variables: private static final String [] PRE_LOAD = { "START.MS", // $NON-NLS-1$ "START.YMD", // $NON-NLS-1$ "START.HMS", //$NON-NLS-1$ "TESTSTART.MS", // $NON-NLS-1$ }; public JMeterVariables() { preloadVariables(); } private void preloadVariables(){ for (int i = 0; i < PRE_LOAD.length; i++){ String property=PRE_LOAD[i]; String value=JMeterUtils.getProperty(property); if (value != null){ variables.put(property,value); } } } public String getThreadName() { return Thread.currentThread().getName(); } public int getIteration() { return iteration; } public void incIteration() { iteration++; } // Does not appear to be used public void initialize() { variables.clear(); preloadVariables(); } /** * Remove a variable. * * @param key the variable name to remove * * @return the variable value, or {@code null} if there was no such variable */ public Object remove(String key) { return variables.remove(key); } /** * Creates or updates a variable with a String value. * * @param key the variable name * @param value the variable value */ public void put(String key, String value) { variables.put(key, value); } /** * Creates or updates a variable with a value that does not have to be a String. * * @param key the variable name * @param value the variable value */ public void putObject(String key, Object value) { variables.put(key, value); } public void putAll(Map vars) { variables.putAll(vars); } public void putAll(JMeterVariables vars) { putAll(vars.variables); } /** * Gets the value of a variable, coerced to a String. * * @param key the name of the variable * @return the value of the variable, or {@code null} if it does not exist */ public String get(String key) { return (String) variables.get(key); } /** * Gets the value of a variable (not converted to String). * * @param key the name of the variable * @return the value of the variable, or {@code null} if it does not exist */ public Object getObject(String key) { return variables.get(key); } /** * Gets a read-only Iterator over the variables. * * @return the iterator */ public Iterator> getIterator(){ return Collections.unmodifiableMap(variables).entrySet().iterator() ; } // Used by DebugSampler public Set> entrySet(){ return Collections.unmodifiableMap(variables).entrySet(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/threads/JMeterContext.java0000644000175000017500000001207612032647220025471 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; /** * Holds context for a thread. * Generated by JMeterContextService. * * The class is not thread-safe - it is only intended for use within a single thread. */ public class JMeterContext { private JMeterVariables variables; private SampleResult previousResult; private Sampler currentSampler; private Sampler previousSampler; private boolean samplingStarted; private StandardJMeterEngine engine; private JMeterThread thread; private AbstractThreadGroup threadGroup; private int threadNum; private boolean isReinitSubControllers = false; private boolean restartNextLoop = false; JMeterContext() { clear0(); } public void clear() { clear0(); } private void clear0() { variables = null; previousResult = null; currentSampler = null; previousSampler = null; samplingStarted = false; threadNum = 0; thread = null; isReinitSubControllers = false; } /** * Gives access to the JMeter variables for the current thread. * * @return a pointer to the JMeter variables. */ public JMeterVariables getVariables() { return variables; } public void setVariables(JMeterVariables vars) { this.variables = vars; } public SampleResult getPreviousResult() { return previousResult; } public void setPreviousResult(SampleResult result) { this.previousResult = result; } public Sampler getCurrentSampler() { return currentSampler; } public void setCurrentSampler(Sampler sampler) { this.previousSampler = currentSampler; this.currentSampler = sampler; } /** * Returns the previousSampler. * * @return Sampler */ public Sampler getPreviousSampler() { return previousSampler; } /** * Returns the threadNum. * * @return int */ public int getThreadNum() { return threadNum; } /** * Sets the threadNum. * * @param threadNum * the threadNum to set */ public void setThreadNum(int threadNum) { this.threadNum = threadNum; } public JMeterThread getThread() { return this.thread; } public void setThread(JMeterThread thread) { this.thread = thread; } public AbstractThreadGroup getThreadGroup() { return this.threadGroup; } public void setThreadGroup(AbstractThreadGroup threadgrp) { this.threadGroup = threadgrp; } public StandardJMeterEngine getEngine() { return engine; } public void setEngine(StandardJMeterEngine engine) { this.engine = engine; } public boolean isSamplingStarted() { return samplingStarted; } public void setSamplingStarted(boolean b) { samplingStarted = b; } /** * Reset flag indicating listeners should not be notified since reinit of sub * controllers is being done. See bug 50032 */ public void unsetIsReinitializingSubControllers() { if (isReinitSubControllers) { isReinitSubControllers = false; } } /** * Set flag indicating listeners should not be notified since reinit of sub * controllers is being done. See bug 50032 * @return true if it is the first one to set */ public boolean setIsReinitializingSubControllers() { if (!isReinitSubControllers) { isReinitSubControllers = true; return true; } return false; } /** * @return true if within reinit of Sub Controllers */ public boolean isReinitializingSubControllers() { return isReinitSubControllers; } /** * if set to true a restart of the loop will occurs * @param restartNextLoop */ public void setRestartNextLoop(boolean restartNextLoop) { this.restartNextLoop = restartNextLoop; } /** * a restart of the loop was required ? * @return the restartNextLoop */ public boolean isRestartNextLoop() { return restartNextLoop; } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/PostThreadGroup.java0000644000175000017500000000210712032647220026022 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; /** * PostThreadGroup is a special type of ThreadGroup that can be used for * performing actions at the end of a test for cleanup and such. */ public class PostThreadGroup extends ThreadGroup { private static final long serialVersionUID = 240L; } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/SetupThreadGroup.java0000644000175000017500000000221512032647220026175 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; /** * SetupThreadGroup.java is a special type of ThreadGroup that can be used for * setting up of a test before the bulk of the test executes later. * */ public class SetupThreadGroup extends ThreadGroup { private static final long serialVersionUID = 240L; public SetupThreadGroup() { super(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/FindTestElementsUpToRootTraverser.java0000644000175000017500000000622512032647220031524 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.control.Controller; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * HashTreeTraverser implementation that stores in a Stack all * the Test Elements on the path to a particular node. */ public class FindTestElementsUpToRootTraverser implements HashTreeTraverser { private static final Logger log = LoggingManager.getLoggerForClass(); private final LinkedList stack = new LinkedList(); /** * Node to find in TestTree */ private final Object nodeToFind; /** * Once we find the node in the Tree we stop recording nodes */ private boolean stopRecording = false; /** * @param nodeToFind Node to find */ public FindTestElementsUpToRootTraverser(Object nodeToFind) { this.nodeToFind = nodeToFind; } /** {@inheritDoc} */ public void addNode(Object node, HashTree subTree) { if(stopRecording) { return; } if(node == nodeToFind) { this.stopRecording = true; } stack.addLast((TestElement) node); } /** {@inheritDoc} */ public void subtractNode() { if(stopRecording) { return; } if(log.isDebugEnabled()) { log.debug("Subtracting node, stack size = " + stack.size()); } stack.removeLast(); } /** {@inheritDoc} */ public void processPath() { //NOOP } /** * Returns all controllers that where in Tree down to nodeToFind in reverse order (from leaf to root) * @return List */ public List getControllersToRoot() { List result = new ArrayList(stack.size()); LinkedList stackLocalCopy = new LinkedList(stack); while(stackLocalCopy.size()>0) { TestElement te = stackLocalCopy.getLast(); if(te instanceof Controller) { result.add((Controller)te); } stackLocalCopy.removeLast(); } return result; } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/TestCompilerHelper.java0000644000175000017500000000314412032647220026504 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import org.apache.jmeter.testelement.TestElement; /** * Bug 53796 - TestCompiler uses static Set which can grow huge * * This interface is a means to allow the pair data to be saved with the parent * instance, thus allowing it to be garbage collected when the thread completes. * * This uses a bit more memory, as each controller test element includes the data * structure to contain the child element. However, there is no need to store the * parent element. * * @since 2.8 */ public interface TestCompilerHelper { /** * Add child test element only if it has not already been added. *

    * Only for use by TestCompiler. * * @param child * @return true if the child was added */ boolean addTestElementOnce(TestElement child); } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/TestCompiler.java0000644000175000017500000003122212032647220025342 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Map; import java.util.Set; import org.apache.jmeter.assertions.Assertion; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.TransactionController; import org.apache.jmeter.control.TransactionSampler; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.engine.util.ConfigMergabilityIndicator; import org.apache.jmeter.engine.util.NoConfigMerge; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBeanHelper; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.timers.Timer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * HashTreeTraverser implementation that traverses the Test Tree to build: *

      *
    • A map with key Sampler and as value the associated SamplePackage
    • *
    • A map with key TransactionController and as value the associated SamplePackage
    • *
    */ public class TestCompiler implements HashTreeTraverser { private static final Logger LOG = LoggingManager.getLoggerForClass(); /** * Set this property {@value} to true to revert to using a shared static set. */ private static final String USE_STATIC_SET = "TestCompiler.useStaticSet"; /** * The default value - {@value} - assumed for {@link #USE_STATIC_SET}. */ private static final boolean USE_STATIC_SET_DEFAULT = false; public static final boolean IS_USE_STATIC_SET = JMeterUtils.getPropDefault(USE_STATIC_SET, USE_STATIC_SET_DEFAULT); /** * This set keeps track of which ObjectPairs have been seen. * It seems to be used to prevent adding a child to a parent if the child has already been added. * If the ObjectPair (child, parent) is present, then the child has been added. * Otherwise, the child is added to the parent and the pair is added to the Set. */ private static final Set PAIRING = new HashSet(); private final LinkedList stack = new LinkedList(); private final Map samplerConfigMap = new HashMap(); private final Map transactionControllerConfigMap = new HashMap(); private final HashTree testTree; public TestCompiler(HashTree testTree) { this.testTree = testTree; } /** * Clears the pairing Set Called by StandardJmeterEngine at the start of a * test run. */ public static void initialize() { // synch is probably not needed as only called before run starts synchronized (PAIRING) { PAIRING.clear(); } } /** * Configures sampler from SamplePackage extracted from Test plan and returns it * @param sampler {@link Sampler} * @return {@link SamplePackage} */ public SamplePackage configureSampler(Sampler sampler) { SamplePackage pack = samplerConfigMap.get(sampler); pack.setSampler(sampler); configureWithConfigElements(sampler, pack.getConfigs()); return pack; } /** * Configures Transaction Sampler from SamplePackage extracted from Test plan and returns it * @param transactionSampler {@link TransactionSampler} * @return {@link SamplePackage} */ public SamplePackage configureTransactionSampler(TransactionSampler transactionSampler) { TransactionController controller = transactionSampler.getTransactionController(); SamplePackage pack = transactionControllerConfigMap.get(controller); pack.setSampler(transactionSampler); return pack; } /** * Reset pack to its initial state * @param pack */ public void done(SamplePackage pack) { pack.recoverRunningVersion(); } /** {@inheritDoc} */ public void addNode(Object node, HashTree subTree) { stack.addLast((TestElement) node); } /** {@inheritDoc} */ public void subtractNode() { LOG.debug("Subtracting node, stack size = " + stack.size()); TestElement child = stack.getLast(); trackIterationListeners(stack); if (child instanceof Sampler) { saveSamplerConfigs((Sampler) child); } else if(child instanceof TransactionController) { saveTransactionControllerConfigs((TransactionController) child); } stack.removeLast(); if (stack.size() > 0) { TestElement parent = stack.getLast(); boolean duplicate = false; // Bug 53750: this condition used to be in ObjectPair#addTestElements() if (parent instanceof Controller && (child instanceof Sampler || child instanceof Controller)) { if (!IS_USE_STATIC_SET && parent instanceof TestCompilerHelper) { TestCompilerHelper te = (TestCompilerHelper) parent; duplicate = !te.addTestElementOnce(child); } else { // this is only possible for 3rd party controllers by default ObjectPair pair = new ObjectPair(child, parent); synchronized (PAIRING) {// Called from multiple threads if (!PAIRING.contains(pair)) { parent.addTestElement(child); PAIRING.add(pair); } else { duplicate = true; } } } } if (duplicate) { LOG.warn("Unexpected duplicate for " + parent.getClass().getName() + " and " + child.getClass().getName()); } } } @SuppressWarnings("deprecation") // TestBeanHelper.prepare() is OK private void trackIterationListeners(LinkedList p_stack) { TestElement child = p_stack.getLast(); if (child instanceof LoopIterationListener) { ListIterator iter = p_stack.listIterator(p_stack.size()); while (iter.hasPrevious()) { TestElement item = iter.previous(); if (item == child) { continue; } if (item instanceof Controller) { TestBeanHelper.prepare(child); ((Controller) item).addIterationListener((LoopIterationListener) child); break; } } } } /** {@inheritDoc} */ public void processPath() { } private void saveSamplerConfigs(Sampler sam) { List configs = new LinkedList(); List controllers = new LinkedList(); List listeners = new LinkedList(); List timers = new LinkedList(); List assertions = new LinkedList(); LinkedList posts = new LinkedList(); LinkedList pres = new LinkedList(); for (int i = stack.size(); i > 0; i--) { addDirectParentControllers(controllers, stack.get(i - 1)); List tempPre = new LinkedList (); List tempPost = new LinkedList(); for (Object item : testTree.list(stack.subList(0, i))) { if ((item instanceof ConfigTestElement)) { configs.add((ConfigTestElement) item); } if (item instanceof SampleListener) { listeners.add((SampleListener) item); } if (item instanceof Timer) { timers.add((Timer) item); } if (item instanceof Assertion) { assertions.add((Assertion) item); } if (item instanceof PostProcessor) { tempPost.add((PostProcessor) item); } if (item instanceof PreProcessor) { tempPre.add((PreProcessor) item); } } pres.addAll(0, tempPre); posts.addAll(0, tempPost); } SamplePackage pack = new SamplePackage(configs, listeners, timers, assertions, posts, pres, controllers); pack.setSampler(sam); pack.setRunningVersion(true); samplerConfigMap.put(sam, pack); } private void saveTransactionControllerConfigs(TransactionController tc) { List configs = new LinkedList(); List controllers = new LinkedList(); List listeners = new LinkedList(); List timers = new LinkedList(); List assertions = new LinkedList(); LinkedList posts = new LinkedList(); LinkedList pres = new LinkedList(); for (int i = stack.size(); i > 0; i--) { addDirectParentControllers(controllers, stack.get(i - 1)); for (Object item : testTree.list(stack.subList(0, i))) { if (item instanceof SampleListener) { listeners.add((SampleListener) item); } if (item instanceof Assertion) { assertions.add((Assertion) item); } } } SamplePackage pack = new SamplePackage(configs, listeners, timers, assertions, posts, pres, controllers); pack.setSampler(new TransactionSampler(tc, tc.getName())); pack.setRunningVersion(true); transactionControllerConfigMap.put(tc, pack); } /** * @param controllers * @param i */ private void addDirectParentControllers(List controllers, TestElement maybeController) { if (maybeController instanceof Controller) { LOG.debug("adding controller: " + maybeController + " to sampler config"); controllers.add((Controller) maybeController); } } private static class ObjectPair { private final TestElement child; private final TestElement parent; public ObjectPair(TestElement child, TestElement parent) { this.child = child; this.parent = parent; } /** {@inheritDoc} */ @Override public int hashCode() { return child.hashCode() + parent.hashCode(); } /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (o instanceof ObjectPair) { return child == ((ObjectPair) o).child && parent == ((ObjectPair) o).parent; } return false; } } private void configureWithConfigElements(Sampler sam, List configs) { sam.clearTestElementChildren(); for (ConfigTestElement config : configs) { if (!(config instanceof NoConfigMerge)) { if(sam instanceof ConfigMergabilityIndicator) { if(((ConfigMergabilityIndicator)sam).applies(config)) { sam.addTestElement(config); } } else { // Backward compatibility sam.addTestElement(config); } } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/JMeterContextService.java0000644000175000017500000001210412032647220027002 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import org.apache.jmeter.util.JMeterUtils; /** * Provides context service for JMeter threads. * Keeps track of active and total thread counts. */ public final class JMeterContextService { private static final ThreadLocal threadContext = new ThreadLocal() { @Override public JMeterContext initialValue() { return new JMeterContext(); } }; //@GuardedGy("this") private static long testStart = 0; //@GuardedGy("this") private static int numberOfActiveThreads = 0; //@GuardedGy("this") private static int numberOfThreadsStarted = 0; //@GuardedGy("this") private static int numberOfThreadsFinished = 0; //@GuardedGy("this") private static int totalThreads = 0; /** * Private constructor to prevent instantiation. */ private JMeterContextService() { } /** * Gives access to the current thread context. * * @return the current thread Context */ public static JMeterContext getContext() { return threadContext.get(); } /** * Allows the thread Context to be completely cleared. *
    * Invokes {@link ThreadLocal#remove()}. */ static void removeContext(){ // Currently only used by JMeterThread threadContext.remove(); } /** * Replace Thread Context by the parameter. * Currently only used by {@link org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.ASyncSample HTTPSamplerBase.ASyncSample} * @param context {@link JMeterContext} */ public static void replaceContext(JMeterContext context) { threadContext.remove(); threadContext.set(context); } /** * Method is called by the JMeterEngine class when a test run is started. * Zeroes numberOfActiveThreads. * Saves current time in a field and in the JMeter property "TESTSTART.MS" */ public static synchronized void startTest() { if (testStart == 0) { numberOfActiveThreads = 0; testStart = System.currentTimeMillis(); JMeterUtils.setProperty("TESTSTART.MS",Long.toString(testStart));// $NON-NLS-1$ } } /** * Increment number of active threads. */ static synchronized void incrNumberOfThreads() { numberOfActiveThreads++; numberOfThreadsStarted++; } /** * Decrement number of active threads. */ static synchronized void decrNumberOfThreads() { numberOfActiveThreads--; numberOfThreadsFinished++; } /** * Get the number of currently active threads * @return active thread count */ public static synchronized int getNumberOfThreads() { return numberOfActiveThreads; } // return all the associated counts together public static synchronized ThreadCounts getThreadCounts() { return new ThreadCounts(numberOfActiveThreads, numberOfThreadsStarted, numberOfThreadsFinished); } /** * Called by MainFrame#testEnded(). * Clears start time field. */ public static synchronized void endTest() { testStart = 0; } public static synchronized long getTestStartTime() {// NOT USED return testStart; } /** * Get the total number of threads (>= active) * @return total thread count */ public static synchronized int getTotalThreads() { return totalThreads; } /** * Update the total number of threads * @param thisGroup number of threads in this thread group */ public static synchronized void addTotalThreads(int thisGroup) { totalThreads += thisGroup; } /** * Set total threads to zero; also clears started and finished counts */ public static synchronized void clearTotalThreads() { totalThreads = 0; numberOfThreadsStarted = 0; numberOfThreadsFinished = 0; } public static class ThreadCounts { public final int activeThreads; public final int startedThreads; public final int finishedThreads; ThreadCounts (int active, int started, int finished) { activeThreads = active; startedThreads = started; finishedThreads = finished; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/gui/0000755000175000017500000000000012165514773022666 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/threads/gui/AbstractThreadGroupGui.java0000644000175000017500000001356512032647220030103 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.util.Arrays; import java.util.Collection; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JRadioButton; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.util.JMeterUtils; public abstract class AbstractThreadGroupGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; // Sampler error action buttons private JRadioButton continueBox; private JRadioButton startNextLoop; private JRadioButton stopThrdBox; private JRadioButton stopTestBox; private JRadioButton stopTestNowBox; public AbstractThreadGroupGui(){ super(); init(); initGui(); } public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.THREADS }); } public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); pop.add(MenuFactory.makeMenus(new String[] { MenuFactory.CONTROLLERS, MenuFactory.CONFIG_ELEMENTS, MenuFactory.TIMERS, MenuFactory.PRE_PROCESSORS, MenuFactory.SAMPLERS, MenuFactory.POST_PROCESSORS, MenuFactory.ASSERTIONS, MenuFactory.LISTENERS, }, JMeterUtils.getResString("add"), // $NON-NLS-1$ ActionNames.ADD)); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } @Override public Dimension getPreferredSize() { return getMinimumSize(); } @Override public void clearGui(){ super.clearGui(); initGui(); } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createOnErrorPanel()); add(box, BorderLayout.NORTH); } private void initGui() { continueBox.setSelected(true); } private JPanel createOnErrorPanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("sampler_on_error_action"))); // $NON-NLS-1$ ButtonGroup group = new ButtonGroup(); continueBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_continue")); // $NON-NLS-1$ group.add(continueBox); panel.add(continueBox); startNextLoop = new JRadioButton(JMeterUtils.getResString("sampler_on_error_start_next_loop")); // $NON-NLS-1$ group.add(startNextLoop); panel.add(startNextLoop); stopThrdBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_stop_thread")); // $NON-NLS-1$ group.add(stopThrdBox); panel.add(stopThrdBox); stopTestBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_stop_test")); // $NON-NLS-1$ group.add(stopTestBox); panel.add(stopTestBox); stopTestNowBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_stop_test_now")); // $NON-NLS-1$ group.add(stopTestNowBox); panel.add(stopTestNowBox); return panel; } private void setSampleErrorBoxes(AbstractThreadGroup te) { if (te.getOnErrorStopTest()) { stopTestBox.setSelected(true); } else if (te.getOnErrorStopTestNow()) { stopTestNowBox.setSelected(true); } else if (te.getOnErrorStopThread()) { stopThrdBox.setSelected(true); } else if (te.getOnErrorStartNextLoop()) { startNextLoop.setSelected(true); } else { continueBox.setSelected(true); } } private String onSampleError() { if (stopTestBox.isSelected()) { return AbstractThreadGroup.ON_SAMPLE_ERROR_STOPTEST; } if (stopTestNowBox.isSelected()) { return AbstractThreadGroup.ON_SAMPLE_ERROR_STOPTEST_NOW; } if (stopThrdBox.isSelected()) { return AbstractThreadGroup.ON_SAMPLE_ERROR_STOPTHREAD; } if (startNextLoop.isSelected()) { return AbstractThreadGroup.ON_SAMPLE_ERROR_START_NEXT_LOOP; } // Defaults to continue return AbstractThreadGroup.ON_SAMPLE_ERROR_CONTINUE; } @Override public void configure(TestElement tg) { super.configure(tg); setSampleErrorBoxes((AbstractThreadGroup) tg); } @Override protected void configureTestElement(TestElement tg) { super.configureTestElement(tg); tg.setProperty(new StringProperty(AbstractThreadGroup.ON_SAMPLE_ERROR, onSampleError())); } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/gui/ThreadGroupGui.java0000644000175000017500000002502212032647220026406 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads.gui; import java.awt.BorderLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.LoopController; import org.apache.jmeter.control.gui.LoopControlPanel; import org.apache.jmeter.gui.util.JDateField; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.LongProperty; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.threads.ThreadGroup; import org.apache.jmeter.util.JMeterUtils; public class ThreadGroupGui extends AbstractThreadGroupGui implements ItemListener { private static final long serialVersionUID = 240L; private LoopControlPanel loopPanel; private VerticalPanel mainPanel; private static final String THREAD_NAME = "Thread Field"; private static final String RAMP_NAME = "Ramp Up Field"; private JTextField threadInput; private JTextField rampInput; private JDateField start; private JDateField end; private final boolean showDelayedStart; private JCheckBox delayedStart; private JCheckBox scheduler; private JTextField duration; private JTextField delay; // Relative start-up time public ThreadGroupGui() { this(true); } public ThreadGroupGui(boolean showDelayedStart) { super(); this.showDelayedStart = showDelayedStart; init(); initGui(); } public TestElement createTestElement() { ThreadGroup tg = new ThreadGroup(); modifyTestElement(tg); return tg; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement tg) { super.configureTestElement(tg); if (tg instanceof ThreadGroup) { ((ThreadGroup) tg).setSamplerController((LoopController) loopPanel.createTestElement()); } tg.setProperty(AbstractThreadGroup.NUM_THREADS, threadInput.getText()); tg.setProperty(ThreadGroup.RAMP_TIME, rampInput.getText()); tg.setProperty(new LongProperty(ThreadGroup.START_TIME, start.getDate().getTime())); tg.setProperty(new LongProperty(ThreadGroup.END_TIME, end.getDate().getTime())); if (showDelayedStart) { tg.setProperty(ThreadGroup.DELAYED_START, delayedStart.isSelected(), false); } tg.setProperty(new BooleanProperty(ThreadGroup.SCHEDULER, scheduler.isSelected())); tg.setProperty(ThreadGroup.DURATION, duration.getText()); tg.setProperty(ThreadGroup.DELAY, delay.getText()); } @Override public void configure(TestElement tg) { super.configure(tg); threadInput.setText(tg.getPropertyAsString(AbstractThreadGroup.NUM_THREADS)); rampInput.setText(tg.getPropertyAsString(ThreadGroup.RAMP_TIME)); loopPanel.configure((TestElement) tg.getProperty(AbstractThreadGroup.MAIN_CONTROLLER).getObjectValue()); if (showDelayedStart) { delayedStart.setSelected(tg.getPropertyAsBoolean(ThreadGroup.DELAYED_START)); } scheduler.setSelected(tg.getPropertyAsBoolean(ThreadGroup.SCHEDULER)); if (scheduler.isSelected()) { mainPanel.setVisible(true); } else { mainPanel.setVisible(false); } // Check if the property exists String s = tg.getPropertyAsString(ThreadGroup.START_TIME); if (s.length() == 0) {// Must be an old test plan start.setDate(new Date()); end.setDate(new Date()); } else { start.setDate(new Date(tg.getPropertyAsLong(ThreadGroup.START_TIME))); end.setDate(new Date(tg.getPropertyAsLong(ThreadGroup.END_TIME))); } duration.setText(tg.getPropertyAsString(ThreadGroup.DURATION)); delay.setText(tg.getPropertyAsString(ThreadGroup.DELAY)); } public void itemStateChanged(ItemEvent ie) { if (ie.getItem().equals(scheduler)) { if (scheduler.isSelected()) { mainPanel.setVisible(true); } else { mainPanel.setVisible(false); } } } private JPanel createControllerPanel() { loopPanel = new LoopControlPanel(false); LoopController looper = (LoopController) loopPanel.createTestElement(); looper.setLoops(1); loopPanel.configure(looper); return loopPanel; } /** * Create a panel containing the StartTime field and corresponding label. * * @return a GUI panel containing the StartTime field */ private JPanel createStartTimePanel() { JPanel panel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("starttime")); //$NON-NLS-1$ panel.add(label, BorderLayout.WEST); start = new JDateField(); panel.add(start, BorderLayout.CENTER); return panel; } /** * Create a panel containing the EndTime field and corresponding label. * * @return a GUI panel containing the EndTime field */ private JPanel createEndTimePanel() { JPanel panel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("endtime")); // $NON-NLS-1$ panel.add(label, BorderLayout.WEST); end = new JDateField(); panel.add(end, BorderLayout.CENTER); return panel; } /** * Create a panel containing the Duration field and corresponding label. * * @return a GUI panel containing the Duration field */ private JPanel createDurationPanel() { JPanel panel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("duration")); // $NON-NLS-1$ panel.add(label, BorderLayout.WEST); duration = new JTextField(); panel.add(duration, BorderLayout.CENTER); return panel; } /** * Create a panel containing the Duration field and corresponding label. * * @return a GUI panel containing the Duration field */ private JPanel createDelayPanel() { JPanel panel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("delay")); // $NON-NLS-1$ panel.add(label, BorderLayout.WEST); delay = new JTextField(); panel.add(delay, BorderLayout.CENTER); return panel; } public String getLabelResource() { return "threadgroup"; // $NON-NLS-1$ } @Override public void clearGui(){ super.clearGui(); initGui(); } // Initialise the gui field values private void initGui(){ threadInput.setText("1"); // $NON-NLS-1$ rampInput.setText("1"); // $NON-NLS-1$ loopPanel.clearGui(); if (showDelayedStart) { delayedStart.setSelected(false); } scheduler.setSelected(false); Date today = new Date(); end.setDate(today); start.setDate(today); delay.setText(""); // $NON-NLS-1$ duration.setText(""); // $NON-NLS-1$ } private void init() { // THREAD PROPERTIES VerticalPanel threadPropsPanel = new VerticalPanel(); threadPropsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("thread_properties"))); // $NON-NLS-1$ // NUMBER OF THREADS JPanel threadPanel = new JPanel(new BorderLayout(5, 0)); JLabel threadLabel = new JLabel(JMeterUtils.getResString("number_of_threads")); // $NON-NLS-1$ threadPanel.add(threadLabel, BorderLayout.WEST); threadInput = new JTextField(5); threadInput.setName(THREAD_NAME); threadLabel.setLabelFor(threadInput); threadPanel.add(threadInput, BorderLayout.CENTER); threadPropsPanel.add(threadPanel); // RAMP-UP JPanel rampPanel = new JPanel(new BorderLayout(5, 0)); JLabel rampLabel = new JLabel(JMeterUtils.getResString("ramp_up")); // $NON-NLS-1$ rampPanel.add(rampLabel, BorderLayout.WEST); rampInput = new JTextField(5); rampInput.setName(RAMP_NAME); rampLabel.setLabelFor(rampInput); rampPanel.add(rampInput, BorderLayout.CENTER); threadPropsPanel.add(rampPanel); // LOOP COUNT threadPropsPanel.add(createControllerPanel()); // mainPanel.add(threadPropsPanel, BorderLayout.NORTH); // add(mainPanel, BorderLayout.CENTER); if (showDelayedStart) { delayedStart = new JCheckBox(JMeterUtils.getResString("delayed_start")); // $NON-NLS-1$ threadPropsPanel.add(delayedStart); } scheduler = new JCheckBox(JMeterUtils.getResString("scheduler")); // $NON-NLS-1$ scheduler.addItemListener(this); threadPropsPanel.add(scheduler); mainPanel = new VerticalPanel(); mainPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("scheduler_configuration"))); // $NON-NLS-1$ mainPanel.add(createStartTimePanel()); mainPanel.add(createEndTimePanel()); mainPanel.add(createDurationPanel()); mainPanel.add(createDelayPanel()); mainPanel.setVisible(false); VerticalPanel intgrationPanel = new VerticalPanel(); intgrationPanel.add(threadPropsPanel); intgrationPanel.add(mainPanel); add(intgrationPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/gui/PostThreadGroupGui.java0000644000175000017500000000267512032647220027265 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads.gui; import java.awt.event.ItemListener; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.threads.PostThreadGroup; public class PostThreadGroupGui extends ThreadGroupGui implements ItemListener { private static final long serialVersionUID = 240L; public PostThreadGroupGui() { super(false); } @Override public String getLabelResource() { return "post_thread_group_title"; // $NON-NLS-1$ } @Override public TestElement createTestElement() { PostThreadGroup tg = new PostThreadGroup(); modifyTestElement(tg); return tg; } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/gui/SetupThreadGroupGui.java0000644000175000017500000000270312032647220027430 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads.gui; import java.awt.event.ItemListener; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.threads.SetupThreadGroup; public class SetupThreadGroupGui extends ThreadGroupGui implements ItemListener { private static final long serialVersionUID = 240L; public SetupThreadGroupGui() { super(false); } @Override public String getLabelResource() { return "setup_thread_group_title"; // $NON-NLS-1$ } @Override public TestElement createTestElement() { SetupThreadGroup tg = new SetupThreadGroup(); modifyTestElement(tg); return tg; } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/SamplePackage.java0000644000175000017500000001456412032647220025437 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.util.List; import org.apache.jmeter.assertions.Assertion; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.control.Controller; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.timers.Timer; /** * Packages methods related to sample handling.
    * A SamplePackage contains all elements associated to a Sampler: *
      *
    • SampleListener(s)
    • *
    • Timer(s)
    • *
    • Assertion(s)
    • *
    • PreProcessor(s)
    • *
    • PostProcessor(s)
    • *
    • ConfigTestElement(s)
    • *
    • Controller(s)
    • *
    */ public class SamplePackage { private final List sampleListeners; private final List timers; private final List assertions; private final List postProcessors; private final List preProcessors; private final List configs; private final List controllers; private Sampler sampler; public SamplePackage( List configs, List listeners, List timers, List assertions, List postProcessors, List preProcessors, List controllers) { this.configs = configs; this.sampleListeners = listeners; this.timers = timers; this.assertions = assertions; this.postProcessors = postProcessors; this.preProcessors = preProcessors; this.controllers = controllers; } /** * Make the SamplePackage the running version, or make it no longer the * running version. This tells to each element of the SamplePackage that it's current state must * be retrievable by a call to recoverRunningVersion(). * @param running boolean * @see TestElement#setRunningVersion(boolean) */ public void setRunningVersion(boolean running) { setRunningVersion(configs, running); setRunningVersion(sampleListeners, running); setRunningVersion(assertions, running); setRunningVersion(timers, running); setRunningVersion(postProcessors, running); setRunningVersion(preProcessors, running); setRunningVersion(controllers, running); sampler.setRunningVersion(running); } private void setRunningVersion(List list, boolean running) { @SuppressWarnings("unchecked") // all implementations extend TestElement List telist = (List)list; for (TestElement te : telist) { te.setRunningVersion(running); } } private void recoverRunningVersion(List list) { @SuppressWarnings("unchecked") // All implementations extend TestElement List telist = (List)list; for (TestElement te : telist) { te.recoverRunningVersion(); } } /** * Recover each member of SamplePackage to the state before the call of setRunningVersion(true) * @see TestElement#recoverRunningVersion() */ public void recoverRunningVersion() { recoverRunningVersion(configs); recoverRunningVersion(sampleListeners); recoverRunningVersion(assertions); recoverRunningVersion(timers); recoverRunningVersion(postProcessors); recoverRunningVersion(preProcessors); recoverRunningVersion(controllers); sampler.recoverRunningVersion(); } /** * @return List */ public List getSampleListeners() { return sampleListeners; } /** * Add Sample Listener * @param listener {@link SampleListener} */ public void addSampleListener(SampleListener listener) { sampleListeners.add(listener); } /** * @return List */ public List getTimers() { return timers; } /** * Add Post processor * @param ex {@link PostProcessor} */ public void addPostProcessor(PostProcessor ex) { postProcessors.add(ex); } /** * Add Pre processor * @param pre {@link PreProcessor} */ public void addPreProcessor(PreProcessor pre) { preProcessors.add(pre); } /** * Add Timer * @param timer {@link Timer} */ public void addTimer(Timer timer) { timers.add(timer); } /** * Add Assertion * @param asser {@link Assertion} */ public void addAssertion(Assertion asser) { assertions.add(asser); } /** * @return List */ public List getAssertions() { return assertions; } /** * @return List */ public List getPostProcessors() { return postProcessors; } /** * @return {@link Sampler} */ public Sampler getSampler() { return sampler; } /** * @param s {@link Sampler} */ public void setSampler(Sampler s) { sampler = s; } /** * Returns the preProcessors. * @return List */ public List getPreProcessors() { return preProcessors; } /** * Returns the configs. * * @return List */ public List getConfigs() { return configs; } }apache-jmeter-2.8/src/core/org/apache/jmeter/threads/AbstractThreadGroup.java0000644000175000017500000001773512032647220026655 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.io.Serializable; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicInteger; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.LoopController; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.collections.ListedHashTree; /** * ThreadGroup holds the settings for a JMeter thread group. * * This class is intended to be ThreadSafe. */ public abstract class AbstractThreadGroup extends AbstractTestElement implements Serializable, Controller, JMeterThreadMonitor, TestCompilerHelper { private static final long serialVersionUID = 240L; // Only create the map if it is required private transient final ConcurrentMap children = TestCompiler.IS_USE_STATIC_SET ? null : new ConcurrentHashMap(); private static final Object DUMMY = new Object(); /** Action to be taken when a Sampler error occurs */ public static final String ON_SAMPLE_ERROR = "ThreadGroup.on_sample_error"; // int /** Continue, i.e. ignore sampler errors */ public static final String ON_SAMPLE_ERROR_CONTINUE = "continue"; /** Start next loop for current thread if sampler error occurs */ public static final String ON_SAMPLE_ERROR_START_NEXT_LOOP = "startnextloop"; /** Stop current thread if sampler error occurs */ public static final String ON_SAMPLE_ERROR_STOPTHREAD = "stopthread"; /** Stop test (all threads) if sampler error occurs */ public static final String ON_SAMPLE_ERROR_STOPTEST = "stoptest"; /** Stop test NOW (all threads) if sampler error occurs */ public static final String ON_SAMPLE_ERROR_STOPTEST_NOW = "stoptestnow"; /** Number of threads in the thread group */ public static final String NUM_THREADS = "ThreadGroup.num_threads"; public static final String MAIN_CONTROLLER = "ThreadGroup.main_controller"; private final AtomicInteger numberOfThreads = new AtomicInteger(0); // Number of active threads in this group /** {@inheritDoc} */ public boolean isDone() { return getSamplerController().isDone(); } /** {@inheritDoc} */ public Sampler next() { return getSamplerController().next(); } /** * Get the sampler controller. * * @return the sampler controller. */ public Controller getSamplerController() { return (Controller) getProperty(MAIN_CONTROLLER).getObjectValue(); } /** * Set the sampler controller. * * @param c * the sampler controller. */ public void setSamplerController(LoopController c) { c.setContinueForever(false); setProperty(new TestElementProperty(MAIN_CONTROLLER, c)); } /** * Add a test element. * * @param child * the test element to add. */ @Override public void addTestElement(TestElement child) { getSamplerController().addTestElement(child); } /** * {@inheritDoc} */ public final boolean addTestElementOnce(TestElement child){ if (children.putIfAbsent(child, DUMMY) == null) { addTestElement(child); return true; } return false; } /** {@inheritDoc} */ public void addIterationListener(LoopIterationListener lis) { getSamplerController().addIterationListener(lis); } /** {@inheritDoc} */ public void removeIterationListener(LoopIterationListener iterationListener) { getSamplerController().removeIterationListener(iterationListener); } /** {@inheritDoc} */ public void initialize() { Controller c = getSamplerController(); JMeterProperty property = c.getProperty(TestElement.NAME); property.setObjectValue(getName()); // Copy our name into that of the controller property.setRunningVersion(property.isRunningVersion());// otherwise name reverts c.initialize(); } /** * Start next iteration after an error */ public void startNextLoop() { ((LoopController) getSamplerController()).startNextLoop(); } /** * NOOP */ public void triggerEndOfLoop() { // NOOP } /** * Set the total number of threads to start * * @param numThreads * the number of threads. */ public void setNumThreads(int numThreads) { setProperty(new IntegerProperty(NUM_THREADS, numThreads)); } /** * Increment the number of active threads */ void incrNumberOfThreads() { numberOfThreads.incrementAndGet(); } /** * Decrement the number of active threads */ void decrNumberOfThreads() { numberOfThreads.decrementAndGet(); } /** * Get the number of active threads */ public int getNumberOfThreads() { return numberOfThreads.get(); } /** * Get the number of threads. * * @return the number of threads. */ public int getNumThreads() { return this.getPropertyAsInt(AbstractThreadGroup.NUM_THREADS); } /** * Check if a sampler error should cause thread to start next loop. * * @return true if thread should start next loop */ public boolean getOnErrorStartNextLoop() { return getPropertyAsString(AbstractThreadGroup.ON_SAMPLE_ERROR).equalsIgnoreCase(ON_SAMPLE_ERROR_START_NEXT_LOOP); } /** * Check if a sampler error should cause thread to stop. * * @return true if thread should stop */ public boolean getOnErrorStopThread() { return getPropertyAsString(AbstractThreadGroup.ON_SAMPLE_ERROR).equalsIgnoreCase(ON_SAMPLE_ERROR_STOPTHREAD); } /** * Check if a sampler error should cause test to stop. * * @return true if test (all threads) should stop */ public boolean getOnErrorStopTest() { return getPropertyAsString(AbstractThreadGroup.ON_SAMPLE_ERROR).equalsIgnoreCase(ON_SAMPLE_ERROR_STOPTEST); } /** * Check if a sampler error should cause test to stop now. * * @return true if test (all threads) should stop immediately */ public boolean getOnErrorStopTestNow() { return getPropertyAsString(AbstractThreadGroup.ON_SAMPLE_ERROR).equalsIgnoreCase(ON_SAMPLE_ERROR_STOPTEST_NOW); } public abstract boolean stopThread(String threadName, boolean now); public abstract int numberOfActiveThreads(); public abstract void start(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine); public abstract boolean verifyThreadsStopped(); public abstract void waitThreadsStopped(); public abstract void tellThreadsToStop(); public abstract void stop(); } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/ListenerNotifier.java0000644000175000017500000002523012032647220026217 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ ///////////////////////////////////////// //////// //////// This code is mostly unused at present //////// it seems that only notifyListeners() //////// is used. //////// //////// However, it does look useful. //////// And it may one day be used... //////// ///////////////////////////////////////// package org.apache.jmeter.threads; import java.util.List; //import org.apache.commons.collections.Buffer; //import org.apache.commons.collections.BufferUtils; //import org.apache.commons.collections.buffer.UnboundedFifoBuffer; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.testbeans.TestBeanHelper; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; ///** // * The ListenerNotifier thread is responsible for performing // * asynchronous notifications that a sample has occurred. Each time a sample // * occurs, the addLast method should be called to add the sample // * and its list of listeners to the notification queue. This thread will then // * notify those listeners asynchronously at some future time. // *

    // * In the current implementation, the notifications will be made in batches, // * with 2 seconds between the beginning of successive batches. If the notifier // * thread starts to get behind, the priority of the thread will be increased in // * an attempt to help it to keep up. // * // * @see org.apache.jmeter.samplers.SampleListener // * // */ /** * Processes sample events. * The current implementation processes events in the calling thread * using {@link #notifyListeners(SampleEvent, List)} * The other code is not used currently, so is commented out. */ public class ListenerNotifier { private static final Logger log = LoggingManager.getLoggerForClass(); /** * Notify a list of listeners that a sample has occurred. * * @param res * the sample event that has occurred. Must be non-null. * @param listeners * a list of the listeners which should be notified. This list * must not be null and must contain only SampleListener * elements. */ @SuppressWarnings("deprecation") // TestBeanHelper.prepare() is OK public void notifyListeners(SampleEvent res, List listeners) { for (SampleListener sampleListener : listeners) { try { TestBeanHelper.prepare((TestElement) sampleListener); sampleListener.sampleOccurred(res); } catch (RuntimeException e) { log.error("Detected problem in Listener: ", e); log.info("Continuing to process further listeners"); } } } // /** // * The number of milliseconds between batches of notifications. // */ // private static final int SLEEP_TIME = 2000; // // /** // * Indicates whether or not this thread should remain running. The thread // * will continue running after this field is set to false until the next // * batch of notifications has been completed and the notification queue is // * empty. // */ // private boolean running = true; // // /** // * Indicates whether or not this thread has stopped. No further // * notifications will be performed. // */ // private boolean isStopped = true; // // /** // * The queue containing the notifications to be performed. Each notification // * consists of a pair of entries in this queue. The first is the // * {@link org.apache.jmeter.samplers.SampleEvent SampleEvent} representing // * the sample. The second is a List of // * {@link org.apache.jmeter.samplers.SampleListener SampleListener}s which // * should be notified. // */ // private Buffer listenerEvents = BufferUtils.synchronizedBuffer(new UnboundedFifoBuffer()); // // /** // * Stops the ListenerNotifier thread. The thread will continue processing // * any events remaining in the notification queue before it actually stops, // * but this method will return immediately. // */ // public void stop() { // running = false; // } // // /** // * Indicates whether or not the thread has stopped. This will not return // * true until the stop method has been called and any // * remaining notifications in the queue have been completed. // * // * @return true if the ListenerNotifier has completely stopped, false // * otherwise // */ // public boolean isStopped() { // return isStopped; // } // // /** // * Process the events in the notification queue until the thread has been // * told to stop and the notification queue is empty. // *

    // * In the current implementation, this method will iterate continually until // * the thread is told to stop. In each iteration it will process any // * notifications that are in the queue at the beginning of the iteration, // * and then will sleep until it is time to start the next batch. As long as // * the thread is keeping up, each batch should start 2 seconds after the // * beginning of the last batch. This exact behavior is subject to change. // */ // public void run() { // boolean isMaximumPriority = false; // int normalCount = 0; // // while (running) { // long startTime = System.currentTimeMillis(); // processNotifications(); // long sleep = SLEEP_TIME - (System.currentTimeMillis() - startTime); // // // If the thread has been told to stop then we shouldn't sleep // if (!running) { // break; // } // // if (sleep < 0) { // isMaximumPriority = true; // normalCount = 0; // if (log.isInfoEnabled()) { // log.info("ListenerNotifier exceeded maximum " + "notification time by " + (-sleep) + "ms"); // } // boostPriority(); // } else { // normalCount++; // // // If there have been three consecutive iterations since the // // last iteration which took too long to execute, return the // // thread to normal priority. // if (isMaximumPriority && normalCount >= 3) { // isMaximumPriority = false; // unboostPriority(); // } // // if (log.isDebugEnabled()) { // log.debug("ListenerNotifier sleeping for " + sleep + "ms"); // } // // try { // Thread.sleep(sleep); // } catch (InterruptedException e) { // } // } // } // // // Make sure that all pending notifications are processed before // // actually ending the thread. // processNotifications(); // isStopped = true; // } // // /** // * Process all of the pending notifications. Only the samples which are in // * the queue when this method is called will be processed. Any samples added // * between the time when this method is called and when it exits are saved // * for the next batch. // */ // private void processNotifications() { // int listenerEventsSize = listenerEvents.size(); // if (log.isDebugEnabled()) { // log.debug("ListenerNotifier: processing " + listenerEventsSize + " events"); // } // // while (listenerEventsSize > 0) { // // Since this is a FIFO and this is the only place we remove // // from it (only from a single thread) we don't have to remove // // these two items in one atomic operation. Each individual // // remove is atomic (because we use a synchronized buffer), // // which is necessary since the buffer can be accessed from // // other threads (to add things to the buffer). // SampleEvent res = (SampleEvent) listenerEvents.remove(); // List listeners = (List) listenerEvents.remove(); // // notifyListeners(res, listeners); // // listenerEventsSize -= 2; // } // } // // /** // * Boost the priority of the current thread to maximum priority. If the // * thread is already at maximum priority then this will have no effect. // */ // private void boostPriority() { // if (Thread.currentThread().getPriority() != Thread.MAX_PRIORITY) { // log.info("ListenerNotifier: Boosting thread priority to maximum."); // Thread.currentThread().setPriority(Thread.MAX_PRIORITY); // } // } // // /** // * Return the priority of the current thread to normal. If the thread is // * already at normal priority then this will have no effect. // */ // private void unboostPriority() { // if (Thread.currentThread().getPriority() != Thread.NORM_PRIORITY) { // log.info("ListenerNotifier: Returning thread priority to normal."); // Thread.currentThread().setPriority(Thread.NORM_PRIORITY); // } // } // // /** // * Add a new sample event to the notification queue. The notification will // * be performed asynchronously and this method will return immediately. // * // * @param item // * the sample event that has occurred. Must be non-null. // * @param listeners // * a list of the listeners which should be notified. This list // * must not be null and must contain only SampleListener // * elements. // */ // public void addLast(SampleEvent item, List listeners) { // // Must use explicit synchronization here so that the item and // // listeners are added together atomically // synchronized (listenerEvents) { // listenerEvents.add(item); // listenerEvents.add(listeners); // } // } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/JMeterThread.java0000644000175000017500000010337312032647220025255 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.concurrent.locks.ReentrantLock; import org.apache.jmeter.assertions.Assertion; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.TransactionSampler; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBeanHelper; import org.apache.jmeter.testelement.AbstractScopedAssertion; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestIterationListener; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.timers.Timer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.collections.SearchByClass; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterStopTestException; import org.apache.jorphan.util.JMeterStopTestNowException; import org.apache.jorphan.util.JMeterStopThreadException; import org.apache.log.Logger; /** * The JMeter interface to the sampling process, allowing JMeter to see the * timing, add listeners for sampling events and to stop the sampling process. * */ public class JMeterThread implements Runnable, Interruptible { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String PACKAGE_OBJECT = "JMeterThread.pack"; // $NON-NLS-1$ public static final String LAST_SAMPLE_OK = "JMeterThread.last_sample_ok"; // $NON-NLS-1$ private static final String TRUE = Boolean.toString(true); // i.e. "true" /** How often to check for shutdown during ramp-up, default 1000ms */ private static final int RAMPUP_GRANULARITY = JMeterUtils.getPropDefault("jmeterthread.rampup.granularity", 1000); // $NON-NLS-1$ private final Controller controller; private final HashTree testTree; private final TestCompiler compiler; private final JMeterThreadMonitor monitor; private final JMeterVariables threadVars; // Note: this is only used to implement TestIterationListener#testIterationStart // Since this is a frequent event, it makes sense to create the list once rather than scanning each time // The memory used will be released when the thread finishes private final Collection testIterationStartListeners; private final ListenerNotifier notifier; /* * The following variables are set by StandardJMeterEngine. * This is done before start() is called, so the values will be published to the thread safely * TODO - consider passing them to the constructor, so that they can be made final * (to avoid adding lots of parameters, perhaps have a parameter wrapper object. */ private String threadName; private int initialDelay = 0; private int threadNum = 0; private long startTime = 0; private long endTime = 0; private boolean scheduler = false; // based on this scheduler is enabled or disabled // Gives access to parent thread threadGroup private AbstractThreadGroup threadGroup; private StandardJMeterEngine engine = null; // For access to stop methods. /* * The following variables may be set/read from multiple threads. */ private volatile boolean running; // may be set from a different thread private volatile boolean onErrorStopTest; private volatile boolean onErrorStopTestNow; private volatile boolean onErrorStopThread; private volatile boolean onErrorStartNextLoop; private volatile Sampler currentSampler; private final ReentrantLock interruptLock = new ReentrantLock(); // ensure that interrupt cannot overlap with shutdown public JMeterThread(HashTree test, JMeterThreadMonitor monitor, ListenerNotifier note) { this.monitor = monitor; threadVars = new JMeterVariables(); testTree = test; compiler = new TestCompiler(testTree); controller = (Controller) testTree.getArray()[0]; SearchByClass threadListenerSearcher = new SearchByClass(TestIterationListener.class); // TL - IS test.traverse(threadListenerSearcher); testIterationStartListeners = threadListenerSearcher.getSearchResults(); notifier = note; running = true; } public void setInitialContext(JMeterContext context) { threadVars.putAll(context.getVariables()); } /** * Enable the scheduler for this JMeterThread. */ public void setScheduled(boolean sche) { this.scheduler = sche; } /** * Set the StartTime for this Thread. * * @param stime the StartTime value. */ public void setStartTime(long stime) { startTime = stime; } /** * Get the start time value. * * @return the start time value. */ public long getStartTime() { return startTime; } /** * Set the EndTime for this Thread. * * @param etime * the EndTime value. */ public void setEndTime(long etime) { endTime = etime; } /** * Get the end time value. * * @return the end time value. */ public long getEndTime() { return endTime; } /** * Check the scheduled time is completed. * */ private void stopScheduler() { long now = System.currentTimeMillis(); long delay = now - endTime; if ((delay >= 0)) { running = false; } } /** * Wait until the scheduled start time if necessary * */ private void startScheduler() { long delay = (startTime - System.currentTimeMillis()); delayBy(delay, "startScheduler"); } public void setThreadName(String threadName) { this.threadName = threadName; } /* * See below for reason for this change. Just in case this causes problems, * allow the change to be backed out */ private static final boolean startEarlier = JMeterUtils.getPropDefault("jmeterthread.startearlier", true); // $NON-NLS-1$ private static final boolean reversePostProcessors = JMeterUtils.getPropDefault("jmeterthread.reversePostProcessors",false); // $NON-NLS-1$ static { if (startEarlier) { log.info("jmeterthread.startearlier=true (see jmeter.properties)"); } else { log.info("jmeterthread.startearlier=false (see jmeter.properties)"); } if (reversePostProcessors) { log.info("Running PostProcessors in reverse order"); } else { log.info("Running PostProcessors in forward order"); } } public void run() { // threadContext is not thread-safe, so keep within thread JMeterContext threadContext = JMeterContextService.getContext(); LoopIterationListener iterationListener=null; try { iterationListener = initRun(threadContext); while (running) { Sampler sam = controller.next(); while (running && sam != null) { process_sampler(sam, null, threadContext); if(onErrorStartNextLoop || threadContext.isRestartNextLoop()) { if(threadContext.isRestartNextLoop()) { triggerEndOfLoopOnParentControllers(sam, threadContext); sam = null; threadContext.getVariables().put(LAST_SAMPLE_OK, TRUE); threadContext.setRestartNextLoop(false); } else { boolean lastSampleFailed = !TRUE.equals(threadContext.getVariables().get(LAST_SAMPLE_OK)); if(lastSampleFailed) { if(log.isDebugEnabled()) { log.debug("StartNextLoop option is on, Last sample failed, starting next loop"); } triggerEndOfLoopOnParentControllers(sam, threadContext); sam = null; threadContext.getVariables().put(LAST_SAMPLE_OK, TRUE); } else { sam = controller.next(); } } } else { sam = controller.next(); } } if (controller.isDone()) { running = false; } } } // Might be found by contoller.next() catch (JMeterStopTestException e) { log.info("Stopping Test: " + e.toString()); stopTest(); } catch (JMeterStopTestNowException e) { log.info("Stopping Test Now: " + e.toString()); stopTestNow(); } catch (JMeterStopThreadException e) { log.info("Stop Thread seen: " + e.toString()); } catch (Exception e) { log.error("Test failed!", e); } catch (ThreadDeath e) { throw e; // Must not ignore this one } catch (Error e) {// Make sure errors are output to the log file log.error("Test failed!", e); } finally { currentSampler = null; // prevent any further interrupts try { interruptLock.lock(); // make sure current interrupt is finished, prevent another starting yet threadContext.clear(); log.info("Thread finished: " + threadName); threadFinished(iterationListener); monitor.threadFinished(this); // Tell the monitor we are done JMeterContextService.removeContext(); // Remove the ThreadLocal entry } finally { interruptLock.unlock(); // Allow any pending interrupt to complete (OK because currentSampler == null) } } } /** * Trigger end of loop on parent controllers up to Thread Group * @param sam Sampler Base sampler * @param threadContext */ private void triggerEndOfLoopOnParentControllers(Sampler sam, JMeterContext threadContext) { // Find parent controllers of current sampler FindTestElementsUpToRootTraverser pathToRootTraverser=null; TransactionSampler transactionSampler = null; if(sam instanceof TransactionSampler) { transactionSampler = (TransactionSampler) sam; pathToRootTraverser = new FindTestElementsUpToRootTraverser((transactionSampler).getTransactionController()); } else { pathToRootTraverser = new FindTestElementsUpToRootTraverser(sam); } testTree.traverse(pathToRootTraverser); List controllersToReinit = pathToRootTraverser.getControllersToRoot(); // Trigger end of loop condition on all parent controllers of current sampler for (Iterator iterator = controllersToReinit .iterator(); iterator.hasNext();) { Controller parentController = iterator.next(); if(parentController instanceof ThreadGroup) { ThreadGroup tg = (ThreadGroup) parentController; tg.startNextLoop(); } else { parentController.triggerEndOfLoop(); } } if(transactionSampler!=null) { process_sampler(transactionSampler, null, threadContext); } } /** * Process the current sampler, handling transaction samplers. * * @param current sampler * @param parent sampler * @param threadContext * @return SampleResult if a transaction was processed */ @SuppressWarnings("deprecation") // OK to call TestBeanHelper.prepare() private SampleResult process_sampler(Sampler current, Sampler parent, JMeterContext threadContext) { SampleResult transactionResult = null; try { // Check if we are running a transaction TransactionSampler transactionSampler = null; if(current instanceof TransactionSampler) { transactionSampler = (TransactionSampler) current; } // Find the package for the transaction SamplePackage transactionPack = null; if(transactionSampler != null) { transactionPack = compiler.configureTransactionSampler(transactionSampler); // Check if the transaction is done if(transactionSampler.isTransactionDone()) { // Get the transaction sample result transactionResult = transactionSampler.getTransactionResult(); transactionResult.setThreadName(threadName); transactionResult.setGroupThreads(threadGroup.getNumberOfThreads()); transactionResult.setAllThreads(JMeterContextService.getNumberOfThreads()); // Check assertions for the transaction sample checkAssertions(transactionPack.getAssertions(), transactionResult, threadContext); // Notify listeners with the transaction sample result if (!(parent instanceof TransactionSampler)){ notifyListeners(transactionPack.getSampleListeners(), transactionResult); } compiler.done(transactionPack); // Transaction is done, we do not have a sampler to sample current = null; } else { Sampler prev = current; // It is the sub sampler of the transaction that will be sampled current = transactionSampler.getSubSampler(); if (current instanceof TransactionSampler){ SampleResult res = process_sampler(current, prev, threadContext);// recursive call threadContext.setCurrentSampler(prev); current=null; if (res!=null){ transactionSampler.addSubSamplerResult(res); } } } } // Check if we have a sampler to sample if(current != null) { threadContext.setCurrentSampler(current); // Get the sampler ready to sample SamplePackage pack = compiler.configureSampler(current); runPreProcessors(pack.getPreProcessors()); // Hack: save the package for any transaction controllers threadVars.putObject(PACKAGE_OBJECT, pack); delay(pack.getTimers()); Sampler sampler = pack.getSampler(); sampler.setThreadContext(threadContext); // TODO should this set the thread names for all the subsamples? // might be more efficient than fetching the name elsewehere sampler.setThreadName(threadName); TestBeanHelper.prepare(sampler); // Perform the actual sample currentSampler = sampler; SampleResult result = sampler.sample(null); currentSampler = null; // TODO: remove this useless Entry parameter // If we got any results, then perform processing on the result if (result != null) { result.setGroupThreads(threadGroup.getNumberOfThreads()); result.setAllThreads(JMeterContextService.getNumberOfThreads()); result.setThreadName(threadName); threadContext.setPreviousResult(result); runPostProcessors(pack.getPostProcessors()); checkAssertions(pack.getAssertions(), result, threadContext); // Do not send subsamples to listeners which receive the transaction sample List sampleListeners = getSampleListeners(pack, transactionPack, transactionSampler); notifyListeners(sampleListeners, result); compiler.done(pack); // Add the result as subsample of transaction if we are in a transaction if(transactionSampler != null) { transactionSampler.addSubSamplerResult(result); } // Check if thread or test should be stopped if (result.isStopThread() || (!result.isSuccessful() && onErrorStopThread)) { stopThread(); } if (result.isStopTest() || (!result.isSuccessful() && onErrorStopTest)) { stopTest(); } if (result.isStopTestNow() || (!result.isSuccessful() && onErrorStopTestNow)) { stopTestNow(); } } else { compiler.done(pack); // Finish up } } if (scheduler) { // checks the scheduler to stop the iteration stopScheduler(); } } catch (JMeterStopTestException e) { log.info("Stopping Test: " + e.toString()); stopTest(); } catch (JMeterStopThreadException e) { log.info("Stopping Thread: " + e.toString()); stopThread(); } catch (Exception e) { if (current != null) { log.error("Error while processing sampler '"+current.getName()+"' :", e); } else { log.error("", e); } } return transactionResult; } /** * Get the SampleListeners for the sampler. Listeners who receive transaction sample * will not be in this list. * * @param samplePack * @param transactionPack * @param transactionSampler * @return the listeners who should receive the sample result */ private List getSampleListeners(SamplePackage samplePack, SamplePackage transactionPack, TransactionSampler transactionSampler) { List sampleListeners = samplePack.getSampleListeners(); // Do not send subsamples to listeners which receive the transaction sample if(transactionSampler != null) { ArrayList onlySubSamplerListeners = new ArrayList(); List transListeners = transactionPack.getSampleListeners(); for(SampleListener listener : sampleListeners) { // Check if this instance is present in transaction listener list boolean found = false; for(SampleListener trans : transListeners) { // Check for the same instance if(trans == listener) { found = true; break; } } if(!found) { onlySubSamplerListeners.add(listener); } } sampleListeners = onlySubSamplerListeners; } return sampleListeners; } /** * @param threadContext * @return * */ private IterationListener initRun(JMeterContext threadContext) { threadContext.setVariables(threadVars); threadContext.setThreadNum(getThreadNum()); threadContext.getVariables().put(LAST_SAMPLE_OK, TRUE); threadContext.setThread(this); threadContext.setThreadGroup(threadGroup); threadContext.setEngine(engine); testTree.traverse(compiler); // listeners = controller.getListeners(); if (scheduler) { // set the scheduler to start startScheduler(); } rampUpDelay(); // TODO - how to handle thread stopped here log.info("Thread started: " + Thread.currentThread().getName()); /* * Setting SamplingStarted before the contollers are initialised allows * them to access the running values of functions and variables (however * it does not seem to help with the listeners) */ if (startEarlier) { threadContext.setSamplingStarted(true); } controller.initialize(); IterationListener iterationListener = new IterationListener(); controller.addIterationListener(iterationListener); if (!startEarlier) { threadContext.setSamplingStarted(true); } threadStarted(); return iterationListener; } private void threadStarted() { JMeterContextService.incrNumberOfThreads(); threadGroup.incrNumberOfThreads(); GuiPackage gp =GuiPackage.getInstance(); if (gp != null) {// check there is a GUI gp.getMainFrame().updateCounts(); } ThreadListenerTraverser startup = new ThreadListenerTraverser(true); testTree.traverse(startup); // call ThreadListener.threadStarted() } private void threadFinished(LoopIterationListener iterationListener) { ThreadListenerTraverser shut = new ThreadListenerTraverser(false); testTree.traverse(shut); // call ThreadListener.threadFinished() JMeterContextService.decrNumberOfThreads(); threadGroup.decrNumberOfThreads(); GuiPackage gp = GuiPackage.getInstance(); if (gp != null){// check there is a GUI gp.getMainFrame().updateCounts(); } if (iterationListener != null) { // probably not possible, but check anyway controller.removeIterationListener(iterationListener); } } // N.B. This is only called at the start and end of a thread, so there is not // necessary to cache the search results, thus saving memory private static class ThreadListenerTraverser implements HashTreeTraverser { private final boolean isStart; private ThreadListenerTraverser(boolean start) { isStart = start; } public void addNode(Object node, HashTree subTree) { if (node instanceof ThreadListener) { ThreadListener tl = (ThreadListener) node; if (isStart) { tl.threadStarted(); } else { tl.threadFinished(); } } } public void subtractNode() { } public void processPath() { } } public String getThreadName() { return threadName; } public void stop() { // Called by StandardJMeterEngine, TestAction and AccessLogSampler running = false; log.info("Stopping: " + threadName); } /** {@inheritDoc} */ public boolean interrupt(){ try { interruptLock.lock(); Sampler samp = currentSampler; // fetch once; must be done under lock if (samp instanceof Interruptible){ // (also protects against null) log.warn("Interrupting: " + threadName + " sampler: " +samp.getName()); try { boolean found = ((Interruptible)samp).interrupt(); if (!found) { log.warn("No operation pending"); } return found; } catch (Exception e) { log.warn("Caught Exception interrupting sampler: "+e.toString()); } } else if (samp != null){ log.warn("Sampler is not Interruptible: "+samp.getName()); } } finally { interruptLock.unlock(); } return false; } private void stopTest() { running = false; log.info("Stop Test detected by thread: " + threadName); if (engine != null) { engine.askThreadsToStop(); } } private void stopTestNow() { running = false; log.info("Stop Test Now detected by thread: " + threadName); if (engine != null) { engine.stopTest(); } } private void stopThread() { running = false; log.info("Stop Thread detected by thread: " + threadName); } @SuppressWarnings("deprecation") // OK to call TestBeanHelper.prepare() private void checkAssertions(List assertions, SampleResult parent, JMeterContext threadContext) { for (Assertion assertion : assertions) { TestBeanHelper.prepare((TestElement) assertion); if (assertion instanceof AbstractScopedAssertion){ AbstractScopedAssertion scopedAssertion = (AbstractScopedAssertion) assertion; String scope = scopedAssertion.fetchScope(); if (scopedAssertion.isScopeParent(scope) || scopedAssertion.isScopeAll(scope) || scopedAssertion.isScopeVariable(scope)){ processAssertion(parent, assertion); } if (scopedAssertion.isScopeChildren(scope) || scopedAssertion.isScopeAll(scope)){ SampleResult children[] = parent.getSubResults(); boolean childError = false; for (int i=0;i extractors) { ListIterator iter; if (reversePostProcessors) {// Original (rather odd) behaviour iter = extractors.listIterator(extractors.size());// start at the end while (iter.hasPrevious()) { PostProcessor ex = iter.previous(); TestBeanHelper.prepare((TestElement) ex); ex.process(); } } else { for (PostProcessor ex : extractors) { TestBeanHelper.prepare((TestElement) ex); ex.process(); } } } @SuppressWarnings("deprecation") // OK to call TestBeanHelper.prepare() private void runPreProcessors(List preProcessors) { for (PreProcessor ex : preProcessors) { if (log.isDebugEnabled()) { log.debug("Running preprocessor: " + ((AbstractTestElement) ex).getName()); } TestBeanHelper.prepare((TestElement) ex); ex.process(); } } @SuppressWarnings("deprecation") // OK to call TestBeanHelper.prepare() private void delay(List timers) { long sum = 0; for (Timer timer : timers) { TestBeanHelper.prepare((TestElement) timer); sum += timer.delay(); } if (sum > 0) { try { Thread.sleep(sum); } catch (InterruptedException e) { log.warn("The delay timer was interrupted - probably did not wait as long as intended."); } } } void notifyTestListeners() { threadVars.incIteration(); for (TestIterationListener listener : testIterationStartListeners) { if (listener instanceof TestElement) { listener.testIterationStart(new LoopIterationEvent(controller, threadVars.getIteration())); ((TestElement) listener).recoverRunningVersion(); } else { listener.testIterationStart(new LoopIterationEvent(controller, threadVars.getIteration())); } } } private void notifyListeners(List listeners, SampleResult result) { SampleEvent event = new SampleEvent(result, threadGroup.getName(), threadVars); notifier.notifyListeners(event, listeners); } /** * Set rampup delay for JMeterThread Thread * @param delay Rampup delay for JMeterThread */ public void setInitialDelay(int delay) { initialDelay = delay; } /** * Initial delay if ramp-up period is active for this threadGroup. */ private void rampUpDelay() { delayBy(initialDelay, "RampUp"); } /** * Wait for delay with RAMPUP_GRANULARITY * @param delay delay in ms * @param type Delay type */ protected final void delayBy(long delay, String type) { if (delay > 0) { long start = System.currentTimeMillis(); long end = start + delay; long now=0; long pause = RAMPUP_GRANULARITY; while(running && (now = System.currentTimeMillis()) < end) { long togo = end - now; if (togo < pause) { pause = togo; } try { Thread.sleep(pause); // delay between checks } catch (InterruptedException e) { if (running) { // Don't bother reporting stop test interruptions log.warn(type+" delay for "+threadName+" was interrupted. Waited "+(now - start)+" milli-seconds out of "+delay); } break; } } } } /** * Returns the threadNum. */ public int getThreadNum() { return threadNum; } /** * Sets the threadNum. * * @param threadNum * the threadNum to set */ public void setThreadNum(int threadNum) { this.threadNum = threadNum; } private class IterationListener implements LoopIterationListener { /** * {@inheritDoc} */ public void iterationStart(LoopIterationEvent iterEvent) { notifyTestListeners(); } } /** * Save the engine instance for access to the stop methods * * @param engine */ public void setEngine(StandardJMeterEngine engine) { this.engine = engine; } /** * Should Test stop on sampler error? * * @param b - * true or false */ public void setOnErrorStopTest(boolean b) { onErrorStopTest = b; } /** * Should Test stop abruptly on sampler error? * * @param b - * true or false */ public void setOnErrorStopTestNow(boolean b) { onErrorStopTestNow = b; } /** * Should Thread stop on Sampler error? * * @param b - * true or false */ public void setOnErrorStopThread(boolean b) { onErrorStopThread = b; } /** * Should Thread start next loop on Sampler error? * * @param b - * true or false */ public void setOnErrorStartNextLoop(boolean b) { onErrorStartNextLoop = b; } public void setThreadGroup(AbstractThreadGroup group) { this.threadGroup = group; } } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/JMeterThreadMonitor.java0000644000175000017500000000171012032647220026615 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; /** * @version $Revision: 1377076 $ */ public interface JMeterThreadMonitor { void threadFinished(JMeterThread thread); } apache-jmeter-2.8/src/core/org/apache/jmeter/threads/ThreadGroup.java0000644000175000017500000004447512032647220025172 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.threads; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.engine.TreeCloner; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.LongProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * ThreadGroup holds the settings for a JMeter thread group. * * This class is intended to be ThreadSafe. */ public class ThreadGroup extends AbstractThreadGroup { private static final long serialVersionUID = 280L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final long WAIT_TO_DIE = JMeterUtils.getPropDefault("jmeterengine.threadstop.wait", 5 * 1000); // 5 seconds /** How often to check for shutdown during ramp-up, default 1000ms */ private static final int RAMPUP_GRANULARITY = JMeterUtils.getPropDefault("jmeterthread.rampup.granularity", 1000); // $NON-NLS-1$ //+ JMX entries - do not change the string values /** Ramp-up time */ public static final String RAMP_TIME = "ThreadGroup.ramp_time"; /** Whether thread startup is delayed until required */ public static final String DELAYED_START = "ThreadGroup.delayedStart"; /** Whether scheduler is being used */ public static final String SCHEDULER = "ThreadGroup.scheduler"; /** Scheduler absolute start time */ public static final String START_TIME = "ThreadGroup.start_time"; /** Scheduler absolute end time */ public static final String END_TIME = "ThreadGroup.end_time"; /** Scheduler duration, overrides end time */ public static final String DURATION = "ThreadGroup.duration"; /** Scheduler start delay, overrides start time */ public static final String DELAY = "ThreadGroup.delay"; //- JMX entries private transient Thread threadStarter; // List of active threads private final Map allThreads = new ConcurrentHashMap(); /** * Is test (still) running? */ private volatile boolean running = false; /** * Are we using delayed startup? */ private boolean delayedStartup; /** * No-arg constructor. */ public ThreadGroup() { } /** * Set whether scheduler is being used * * @param Scheduler true is scheduler is to be used */ public void setScheduler(boolean Scheduler) { setProperty(new BooleanProperty(SCHEDULER, Scheduler)); } /** * Get whether scheduler is being used * * @return true if scheduler is being used */ public boolean getScheduler() { return getPropertyAsBoolean(SCHEDULER); } /** * Set the absolute StartTime value. * * @param stime - * the StartTime value. */ public void setStartTime(long stime) { setProperty(new LongProperty(START_TIME, stime)); } /** * Get the absolute start time value. * * @return the start time value. */ public long getStartTime() { return getPropertyAsLong(START_TIME); } /** * Get the desired duration of the thread group test run * * @return the duration (in secs) */ public long getDuration() { return getPropertyAsLong(DURATION); } /** * Set the desired duration of the thread group test run * * @param duration * in seconds */ public void setDuration(long duration) { setProperty(new LongProperty(DURATION, duration)); } /** * Get the startup delay * * @return the delay (in secs) */ public long getDelay() { return getPropertyAsLong(DELAY); } /** * Set the startup delay * * @param delay * in seconds */ public void setDelay(long delay) { setProperty(new LongProperty(DELAY, delay)); } /** * Set the EndTime value. * * @param etime - * the EndTime value. */ public void setEndTime(long etime) { setProperty(new LongProperty(END_TIME, etime)); } /** * Get the end time value. * * @return the end time value. */ public long getEndTime() { return getPropertyAsLong(END_TIME); } /** * Set the ramp-up value. * * @param rampUp * the ramp-up value. */ public void setRampUp(int rampUp) { setProperty(new IntegerProperty(RAMP_TIME, rampUp)); } /** * Get the ramp-up value. * * @return the ramp-up value. */ public int getRampUp() { return getPropertyAsInt(ThreadGroup.RAMP_TIME); } private boolean isDelayedStartup() { return getPropertyAsBoolean(DELAYED_START); } /** * This will schedule the time for the JMeterThread. * * @param thread JMeterThread */ private void scheduleThread(JMeterThread thread, long now) { // if true the Scheduler is enabled if (getScheduler()) { // set the start time for the Thread if (getDelay() > 0) {// Duration is in seconds thread.setStartTime(getDelay() * 1000 + now); } else { long start = getStartTime(); if (start < now) { start = now; // Force a sensible start time } thread.setStartTime(start); } // set the endtime for the Thread if (getDuration() > 0) {// Duration is in seconds thread.setEndTime(getDuration() * 1000 + (thread.getStartTime())); } else { thread.setEndTime(getEndTime()); } // Enables the scheduler thread.setScheduled(true); } } /** * Wait for delay with RAMPUP_GRANULARITY * @param delay delay in ms */ private void delayBy(long delay) { if (delay > 0) { long start = System.currentTimeMillis(); long end = start + delay; long now=0; long pause = RAMPUP_GRANULARITY; // maximum pause to use while(running && (now = System.currentTimeMillis()) < end) { long togo = end - now; if (togo < pause) { pause = togo; } pause(pause); // delay between checks } } } @Override public void start(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine) { running = true; int numThreads = getNumThreads(); int rampUp = getRampUp(); float perThreadDelay = ((float) (rampUp * 1000) / (float) getNumThreads()); delayedStartup = isDelayedStartup(); // Fetch once; needs to stay constant log.info("Starting thread group number " + groupCount + " threads " + numThreads + " ramp-up " + rampUp + " perThread " + perThreadDelay + " delayedStart=" + delayedStartup); if (delayedStartup) { threadStarter = new Thread(new ThreadStarter(groupCount, notifier, threadGroupTree, engine), getName()+"-ThreadStarter"); threadStarter.setDaemon(true); threadStarter.start(); // N.B. we don't wait for the thread to complete, as that would prevent parallel TGs } else { long now = System.currentTimeMillis(); // needs to be same time for all threads in the group final JMeterContext context = JMeterContextService.getContext(); for (int i = 0; running && i < numThreads; i++) { JMeterThread jmThread = makeThread(groupCount, notifier, threadGroupTree, engine, i, context); scheduleThread(jmThread, now); // set start and end time jmThread.setInitialDelay((int)(i * perThreadDelay)); Thread newThread = new Thread(jmThread, jmThread.getThreadName()); registerStartedThread(jmThread, newThread); newThread.start(); } } log.info("Started thread group number "+groupCount); } /** * Register Thread when it starts * @param jMeterThread {@link JMeterThread} * @param newThread Thread */ private void registerStartedThread(JMeterThread jMeterThread, Thread newThread) { allThreads.put(jMeterThread, newThread); } private JMeterThread makeThread(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine, int i, JMeterContext context) { // N.B. Context needs to be fetched in the correct thread boolean onErrorStopTest = getOnErrorStopTest(); boolean onErrorStopTestNow = getOnErrorStopTestNow(); boolean onErrorStopThread = getOnErrorStopThread(); boolean onErrorStartNextLoop = getOnErrorStartNextLoop(); String groupName = getName(); final JMeterThread jmeterThread = new JMeterThread(cloneTree(threadGroupTree), this, notifier); jmeterThread.setThreadNum(i); jmeterThread.setThreadGroup(this); jmeterThread.setInitialContext(context); final String threadName = groupName + " " + (groupCount) + "-" + (i + 1); jmeterThread.setThreadName(threadName); jmeterThread.setEngine(engine); jmeterThread.setOnErrorStopTest(onErrorStopTest); jmeterThread.setOnErrorStopTestNow(onErrorStopTestNow); jmeterThread.setOnErrorStopThread(onErrorStopThread); jmeterThread.setOnErrorStartNextLoop(onErrorStartNextLoop); return jmeterThread; } /** * Stop thread called threadName: *

      *
    1. stop JMeter thread
    2. *
    3. interrupt JMeter thread
    4. *
    5. interrupt underlying thread
    6. *
        * @param threadName String thread name * @param now boolean for stop * @return true if thread stopped */ @Override public boolean stopThread(String threadName, boolean now) { for(Entry entry : allThreads.entrySet()){ JMeterThread thrd = entry.getKey(); if (thrd.getThreadName().equals(threadName)){ thrd.stop(); thrd.interrupt(); if (now) { Thread t = entry.getValue(); if (t != null) { t.interrupt(); } } return true; } } return false; } /** * Called by JMeterThread when it finishes */ public void threadFinished(JMeterThread thread) { log.debug("Ending thread " + thread.getThreadName()); allThreads.remove(thread); } /** * For each thread, invoke: *
          *
        • {@link JMeterThread#stop()} - set stop flag
        • *
        • {@link JMeterThread#interrupt()} - interrupt sampler
        • *
        • {@link Thread#interrupt()} - interrupt JVM thread
        • *
        */ @Override public void tellThreadsToStop() { running = false; if (delayedStartup) { try { threadStarter.interrupt(); } catch (Exception e) { log.warn("Exception occured interrupting ThreadStarter"); } } for (Entry entry : allThreads.entrySet()) { JMeterThread item = entry.getKey(); item.stop(); // set stop flag item.interrupt(); // interrupt sampler if possible Thread t = entry.getValue(); if (t != null ) { // Bug 49734 t.interrupt(); // also interrupt JVM thread } } } /** * For each thread, invoke: *
          *
        • {@link JMeterThread#stop()} - set stop flag
        • *
        */ @Override public void stop() { running = false; if (delayedStartup) { try { threadStarter.interrupt(); } catch (Exception e) { log.warn("Exception occured interrupting ThreadStarter"); } } for (JMeterThread item : allThreads.keySet()) { item.stop(); } } /** * @return number of active threads */ @Override public int numberOfActiveThreads() { return allThreads.size(); } /** * @return boolean true if all threads stopped */ @Override public boolean verifyThreadsStopped() { boolean stoppedAll = true; if (delayedStartup){ stoppedAll = verifyThreadStopped(threadStarter); } for (Thread t : allThreads.values()) { stoppedAll = stoppedAll && verifyThreadStopped(t); } return stoppedAll; } /** * Verify thread stopped and return true if stopped successfully * @param thread Thread * @return boolean */ private boolean verifyThreadStopped(Thread thread) { boolean stopped = true; if (thread != null) { if (thread.isAlive()) { try { thread.join(WAIT_TO_DIE); } catch (InterruptedException e) { } if (thread.isAlive()) { stopped = false; log.warn("Thread won't exit: " + thread.getName()); } } } return stopped; } /** * Wait for all Group Threads to stop */ @Override public void waitThreadsStopped() { if (delayedStartup) { waitThreadStopped(threadStarter); } for (Thread t : allThreads.values()) { waitThreadStopped(t); } } /** * Wait for thread to stop * @param thread Thread */ private void waitThreadStopped(Thread thread) { if (thread != null) { while (thread.isAlive()) { try { thread.join(WAIT_TO_DIE); } catch (InterruptedException e) { } } } } private ListedHashTree cloneTree(ListedHashTree tree) { TreeCloner cloner = new TreeCloner(true); tree.traverse(cloner); return cloner.getClonedTree(); } private void pause(long ms){ try { Thread.sleep(ms); } catch (InterruptedException e) { // TODO Is this silent exception intended } } /** * Starts Threads using ramp up */ class ThreadStarter implements Runnable { private final int groupCount; private final ListenerNotifier notifier; private final ListedHashTree threadGroupTree; private final StandardJMeterEngine engine; private final JMeterContext context; public ThreadStarter(int groupCount, ListenerNotifier notifier, ListedHashTree threadGroupTree, StandardJMeterEngine engine) { super(); this.groupCount = groupCount; this.notifier = notifier; this.threadGroupTree = threadGroupTree; this.engine = engine; this.context = JMeterContextService.getContext(); } public void run() { long now = System.currentTimeMillis(); // needs to be constant for all threads long endtime = 0; final boolean usingScheduler = getScheduler(); if (usingScheduler) { // set the start time for the Thread if (getDelay() > 0) {// Duration is in seconds delayBy(getDelay() * 1000); } else { long start = getStartTime(); if (start >= now) { delayBy(start-now); } // else start immediately } // set the endtime for the Thread endtime = getDuration(); if (endtime > 0) {// Duration is in seconds, starting from when the threads start endtime = endtime *1000 + System.currentTimeMillis(); } else { endtime = getEndTime(); } } final int numThreads = getNumThreads(); final int perTthreadDelay = Math.round(((float) (getRampUp() * 1000) / (float) numThreads)); for (int i = 0; running && i < numThreads; i++) { if (i > 0) { pause(perTthreadDelay); // ramp-up delay (except first) } if (usingScheduler && System.currentTimeMillis() > endtime) { break; // no point continuing beyond the end time } JMeterThread jmThread = makeThread(groupCount, notifier, threadGroupTree, engine, i, context); jmThread.setInitialDelay(0); // Already waited if (usingScheduler) { jmThread.setScheduled(true); jmThread.setEndTime(endtime); } Thread newThread = new Thread(jmThread, jmThread.getThreadName()); newThread.setDaemon(false); // ThreadStarter is daemon, but we don't want sampler threads to be so too registerStartedThread(jmThread, newThread); newThread.start(); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/images/0000755000175000017500000000000012165514774021716 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-1.gif0000644000175000017500000000061312032647220025131 0ustar ebourgebourgGIF89aD¥!ÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù?,D¨@@1Ñü~ dò¨\"›LèS¥NMP5 04(Æ«V¼gËh²:Ûý†Ïk)|.¯[Ù‡Fe“¦ßíX€f‚y|qŠ‹ƒe…z}‚”‰ŒI“˜Ž™¡£–¢›Ÿ~¢¥¤ e ¨ª•¯¶«£²­¾·µY ¼¿¸ÇÁM ŽÀ—ÈÐIÄÉÑÊÚJ Ù¬Ó®YÞâåãæ‚A;apache-jmeter-2.8/src/core/org/apache/jmeter/images/about.on.gif0000644000175000017500000000064312032647220024117 0ustar ebourgebourgGIF89a((ÄkHG .£`4H…¾«‚‚œ‘¬«ªÀÀÀÁÊËÀÀÀ!ù,((ÿà'Ždižhª®lëŽÈñÎ$‚|‡L»Ê‡D`ÇC‡ÀÈRŽ00U¨”p0讦¬ ¾àR¶@6éð¸ÍFÆIkzA¿+y[u=qeu…%74bl‚G}6•67•,ˆuv—]@¢˜6*=ˆfG•¡¢®^Ž)€c‚{A­¯¯±(O‘‰{¹ºº˜²´nGUÄͤ¼$¾É©|ÍÖA*ÉŠ×ÎÐ%ÚÛ¶Ìß®Ï*€ìæç^9¥,Bìð19øù–Dò5"áw ø ƒ*œ°…Á† ]D\ñpÄ”)1´Xp" ˆ"@Šäèñ#Ç!Q néð"B–+I:,Q1%KŒ%ML|x1#Äš9 0;apache-jmeter-2.8/src/core/org/apache/jmeter/images/New24.gif0000644000175000017500000000141212032647220023264 0ustar ebourgebourgGIF89aæÿÿÿÿÀÀÀÎËðÌÉî×ÔùÚ×üÉÇëÇÅéÎÌðÍËïÌÊîÛÙýÚØüØÖú¼ºáÂÀ濽ãÅÃéÏÍóÎÌòÈÆëÇÅêÆÄéÍËðÌÊïËÉîÊÈíÕÓøÓÑöÙ×üØÖû×Õú¶µÜ¼»âº¹à¹¸ßÄÃëÂÁè½¼ãÅÄëÀ¿åÊÉðÉÈïÈÇíÄÃéÎÍóÅÄéÑÐöÌËðÉÈìÈÇëÕÔùÒÑöÐÏôÍÌðÊÉíÖÕùÚÙýØ×û×ÖúÚÙü×ÖùžžÈ¨¨ÒÃÃò¯¯Ù²²Ü­­Õ¸¸á··à²²Ú±±Ø¯¯Ö´´Û³³Ú¾¾æ¸¸ß··ÝÀÀ翿澾弼ãÃÃêÂÂé½½ã¼¼áÆÆìÂÂèÃÃèÐÐõÏÏôÓÓ÷š›ÅŸ Ê¤¥ÏŸ É¥¦Ðª«Õ¦§Ð±²Ü­®Ø­®Öª«Ó©ªÒ´µÞ°±Ø¯°×º»ã¹ºâ™›Ä¤¦Ð ¢Ë¨ªÔ¯±Û©«Ôµ·ßòòò³³³ !ù,ÿ€‚ƒ„…†‡ˆ‰ˆwŒŽŠ‚u•—–u’wuonq?e_i”uw’”]s`BatDwA”Šb^rcFfQK²´Š”pd@EILJ("²‰ChmkP!W'͉”gljON,[/4 Œ‹uRH&M+)Z> : ·”GT$*0fðÀÀàÆ‡Z‡:•K‡;0PA>C”¬PÈÂeƒ‡ 2ä¤.a8hh0€!Â\ÈA G‚8Ààlg¡N 2Ü3 £Æ$Á6¢$ñÆŽ Z^&59ÑUt¦£iiZ¸x0EP¦¤•~Úyäè(LŸ†0aÒ)àÔ&¸’Ý-©4¯¡¾!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/SaveAll24.down.gif0000644000175000017500000000041212032647220025027 0ustar ebourgebourgGIF89aó€€€ÿÿÿòòòžžžnnnaaa ÏÏÏ‘‘‘ÂÂÂ!ù,·ÈI«•áê2à1ªš¢ ‘(É’¤G} ÒI‚BH‰YK""™*\2 êý±™·åe—€jÁ¶P‘“‰AÍçÉÒl\¸×Ÿ¥)å˜-É.F€O#kJWU:dˆ:U|X2 ’‘”=…b‚šƒŒWnЉ–i†<%¨…Vm ˆ^—L¦›šiC¬Z¡¯–¥ §´œ¾¿TGÉE"/W¿Ã›/ƸÕÖרÙÚÖ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/New24.over.gif0000644000175000017500000000214412032647220024241 0ustar ebourgebourgGIF89a÷ÿÿÿ€€€ òòò¤¦Ð™›Ä¨ªÔžžÈ­®Ø¤¥Ï´µÞš›Å©«ÔŸ É¯¯Ù¥¦Ðµ·ß­­ÕÃÃòª«ÕŸ Ê¯±Û¦§Ð··à­®Ö¾¾å³³Ú ¢Ë±²Ü¨¨Ò¸¸á¯¯Ö¾¾æ´´ÛÅÄ뼻ⲲܩªÒ¹ºâ¯°×¿¿æ¶µÜÆÆì½¼ãÏÍóÅÃ骫Ӻ»ã°±ØÀÀç··ÝÈÇí¿½ãÏÏôÅÄéÕÔùÌÊ㱱ØÂÁ踸ßÉÈïÀ¿åÐÐõÇÅê×ÖùÚÙýÎÌð²²ÚÂÂ鹸ßÊÉðÂÀæÑÐöÈÇë×ÖúÍËðÛÙýÍÌðØÖûÄÃ뺹àÌËðÂÂèÓÑöÉÇëØ×ûÍËï×ÕúÇÅé¼¼áÎÌòÃÃèÓÓ÷ÊÈíÙ×üÌÊïÖÕùÎÍóÕÓøËÉîÚØüÎËðÆÄéÌÉîÚÙüÊÉíÚ×üÉÈìÒÑöÈÆëØÖúÐÏô½½ã×ÔùÄÃ鼺áÃÃê³³³!ù,þH° A*< !Hq¢Eˆ ÄH@ ?N,€Q€Æ‡ 8€ ‚ :Pò$G <€A„tÌèã€,\ÀAÃ@…ݱc@„1‚D  G!ÚLiâŠ*V°háâX±E«€CÆ 5lÜÀ‘C‡Ä‡cÝÁ£‡@‚¢ƒH‘°;9‚$‰’%Lš8y%ÊÐÀG¥L¡RÅÊ,YždѲr\¹tñòL˜"OÄŒÁøõQ2/ʘ9ƒæIISQÂfŒš5Eΰ6èZÄ8nãæMÕåÈ#BH  œ Ç¥¸®:Ž9s`ÿí8Q|:uÈØ¹Q¤zÐxTDÑwÈ…÷š!…DÝL$ QCF(á„Vh!„;apache-jmeter-2.8/src/core/org/apache/jmeter/images/icon.properties0000644000175000017500000000355012032647220024751 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Icon definition file. # Key: (super) class names # Value: icon, optionally followed by space and then the disabled icon name org.apache.jmeter.control.gui.TestPlanGui=org/apache/jmeter/images/beaker.gif org.apache.jmeter.timers.gui.AbstractTimerGui=org/apache/jmeter/images/timer.gif org.apache.jmeter.threads.gui.AbstractThreadGroupGui=org/apache/jmeter/images/thread.gif org.apache.jmeter.visualizers.gui.AbstractListenerGui=org/apache/jmeter/images/meter.png org.apache.jmeter.config.gui.AbstractConfigGui=org/apache/jmeter/images/testtubes.png org.apache.jmeter.processor.gui.AbstractPreProcessorGui=org/apache/jmeter/images/leafnode.gif org.apache.jmeter.processor.gui.AbstractPostProcessorGui=org/apache/jmeter/images/leafnodeflip.gif org.apache.jmeter.control.gui.AbstractControllerGui=org/apache/jmeter/images/knob.gif org.apache.jmeter.samplers.gui.AbstractSamplerGui=org/apache/jmeter/images/pipet.png org.apache.jmeter.assertions.gui.AbstractAssertionGui=org/apache/jmeter/images/question.gif org.apache.jmeter.control.gui.WorkBenchGui=org/apache/jmeter/images/clipboard.gifapache-jmeter-2.8/src/core/org/apache/jmeter/images/Edit24.on.gif0000644000175000017500000000233412032647220024037 0ustar ebourgebourgGIF89a÷ÿÿÿÿ±AT¾NaÀÀÀÎËðÌÉî×ÔùÚ×üÉÇëÎÌðÍËïÌÊîÔÒöÛÙýÚØüØÖú¼ºáÂÀ濽ãÅÃéÏÍóÎÌòÈÆëÇÅêÆÄéÍËðÌÊïËÉîÊÈíÕÓøÓÑöÙ×ü×Õú¶µÜ¼»âº¹à¹¸ßÄÃëÂÁè½¼ãÅÄëÀ¿å¿¾äÊÉðÉÈïÈÇíÄÃéÁÀåÎÍóÅÄéÑÐöÌËðÉÈìÈÇëÕÔùÒÑöÐÏôÍÌðÊÉíÖÕùÚÙýØ×û×ÖúÚÙü×ÖùžžÈ¨¨ÒÃÃò¯¯Ù²²Ü­­Õ¸¸á··à²²Ú²²Ù±±Ø¯¯Ö´´Û³³Ú¾¾æ¸¸ß··ÝÀÀ翿澾弼ãÃÃêÂÂé½½ã¼¼áÆÆìÅÅëÂÂèÃÃèÐÐõÏÏôÓÓ÷š›ÅŸ Ê¤¥ÏŸ É¥¦Ðª«Õ¦§Ð±²Ü­®Ø­®Öª«Ó©ªÒ´µÞ°±Ø¯°×º»ã¹ºâ™›Ä¤¦Ð ¢Ë¨ªÔ¯±Û©«Ôµ·ß+Z+8g8ÅÆFÒÓSƒƒ5ÃóÐÐÀ¬€@¹M«€~¸‹Ù¯­æ¼ºòòò³³³((( !ù,ÿ H° A‚‹$\¨°aAE‰ À!‹/*<4P¡B„$ \tˆÎ;BÔqSñТ‰ *”ˆ#Šbð”)b&Ï‘EDT$hÐÌ <3æš$kª<*”€¢=FÕX±Nš!Hš@q’bÐEŠéÙ£gëÈCFÚÈCEÄ(MħO[‘\°‰ófŠÀȸÁ Q >~k…ɉ(-T|Á„AE}øà6°,%XH˜aã‡iE“¶9¤ 4º|Hàcƒ|!KNJ1€ ^Ât¡ÀÁÇÂ'×>ƒ‚ 80à´ìÒÅ3ðf0DÁƒ b?=Ć ÔÀ#xdéÅ}ëðqáË è÷WI¿A€AYp¡ ~¬G[A-pÀ 1DpʼnüÈl"„C -øGM$$PFeXF&¶у-šÈ^Œ4Æ!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/question.gif0000644000175000017500000000051412032647220024236 0ustar ebourgebourgGIF89a¥?y_©€c¸d³wk‰€d·e¹‚e¹i¦€i¬„g¼„g½ƒh¸j¬G‡=‡n·t»x»x¼yºŽ©•~¿’±™‡¼›†ÄšŠ¹œ‹½ž‹Ãœ¸˜“ —”ž£Ç©˜É¤¡§«¥³ª¦°³§È®«´®¬³³ªÁ·§Ó°¬·µ²º»·ÃýÍżÔÄ¿ÈÄÁÅÄÁÌʾâÆÄËÍÁâËÃÚÌÃÜËÇÑÍÉÒÏÌÖÕÎâ×Õܨרáßæâàèåàðèæìÿÿÿ!ù ?,iÀŸpH,ȤR9ƒ`vË!ï¡0d¢¿ 1H8°!ÁaAØ4Îç#‡¤ hèxQ”ʽL²_Z¿vJ671FrB(,5-„hC +GB>'#X?=*I•?0 .J£8œ¬­®QA;apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/0000755000175000017500000000000012165514774022507 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/images/new/table-grey.png0000644000175000017500000000056212032647220025235 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<$PLTEØØØLLLººº»»»ŒŒŒvvvKKK444ÙÙÙ333ÿÿÿˆGÔIDATxÚbàÆˆ«(@a n....  7@1ps01±°³³s²31ˆfçâ  Zf(#Š(@Õ²±±°1 ˜b6.n€в²²-àD`n€Šrr²qsrrpX-’ZZ€B¨E.n€ºU-Ø\€Â¦–ƒ €Àj1Ü@@QNN¨"˜Z€ÂpX-@a÷@Áà B€ƒŽ‹ €°‡/@a ì¢>#ó ÛIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/book.png0000644000175000017500000000226212032647220024133 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ûPLTEǦdüûúƦcǧfûûùÆ¥b¡n„f*ǨiÈ©iúù÷ȨhƧgƒf.ǧeßßÞýýý££¢¿¿¾~b*ȨgƧh€a$ǧgȲ…þþý…i0ñññšx‚e.˜R¥…FóóóĤe¸™Xy]%Å¥cùùù€b#¥[ÔÎÂe+¼¼»¾¾½Æ¨j€kA˜ƒ\‚nEuDf1ÄÄߌhƒf)f3›‰e|`(ø÷ôŨk…j2§ŸŽkBȨfȰ~‹sB›€JÉ©i¯“ZÄ¥bƒe+~b,É»Ÿ‘m%õóïŽhäeáØÆÈ¬s‚f,ÐÏ̃g-w])}b-Ȱ€ŠdĦhŦf}_%òòòs<žˆZ˜…`Å¥bÎÀ¥Ì®qã`À `~a*œˆbôòqøöñûúøÈ©h“q.®šoíèÝȨiŦdc-É¿¬˜w0Ž{U„h2Ĥc…qI¥¤¢ƒf,€b%c'ÖÏÀǧhÊÊÉÊÊÊš‡dÏÆ¶ýüü–{Da#ȱ‚z_(€d+ÉÉÈg5ôôóƒg2°‘S{a-y]&c*Ã¥f~a'‹p9È®zȰ½½»‚f-ŠrBpW#ƨl‰uNƦeħj€d-…h.u[%›„T‹p8¬TÈÈÅɪj¨_ÒÒÒ€h7É­vž…QÀÀ¿Æ¥cÿÿÿÿÿÿMcqƒ©tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûo{ˆIDATxÚbXŒ©+@1€ˆ$Y±óSƒd7ˆ @ „#Ü8DXÌR–[± €À‚ žj“;Ë—§dzÇdÔ5Z¬  ¤ð4[¥R›üšÚåË—O‘bY@ A®Še¬q>Kt§æ._n7‘q@›x˜TœÓ–)ªë/_.Á˸ €@‚Œ%ÌË ³D¢–/ïëe\@`A¾e˘ø8«—/o˜Ã¸ €@‚,.¢Ë–q0/cð igY@ A.vžeÑY LÜ!‰Ë—‹·­X@`•ìÌÌL ¬ÜœÝÆË—÷»®X@ ­FBóLt–1°²ŠÄZ²-_”³b@1ð/]*Ô¢9dÑüÅ@Á¼+Vƒ$Ptél±™íÌâ¢ÓÙ–k,*Z± €€fªV…Í|ËäCãõ´‹ýV¬ p€„7/]ª%cXŸ&Xâ$¥.]:Áz’½˜@ È!ΡE 7þ° œg}´IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/chart-grey.png0000644000175000017500000000057712032647220025255 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<!PLTEqqq‰‰‰777ØØØ666ppp444ˆˆˆ333ÙÙÙÿÿÿˆ æäIDATxÚbàˆ«(@a  ('1Ã\ÄÀÅÉÁ‰¸¸¬–‘¦¤ € ¢@P†‰•" @ Ø99™99X4'+Ø€‚ÛRÅd°‚ÔP”Ège›È ˆXaÖ a D-Ìvv°Q\6—á, Ñ@!€›ÀŠð;Ø 2 E-Ѐ‚º€¾áâ .66 ‚6 —‹ €Ã „=|»(@a0†¨ 5ÇçIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/scroll.png0000644000175000017500000000074312032647220024501 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<`PLTEϽ“ÒÀ–о”Õ˜Ô˜μ’ÓÀ–ÖÙϼ’Ѿ”êêêùùùÕØн“̺ͺûûûלѿ”ÖÄšÓÁ–ÔÁ—о“ÖÄ™ÓÁ—Ñ¿•ÚÚÚæææëëëÿÿÿBšÄr IDATxÚbLj«(@a °¨œ,pCE$*'!Ë))ÁÈÎÈ"'  ˜,£´´”4¿,D €äeä„%9eÅ™™$Y ¢•‘šËR+- °m\\²’¼ L¬PQ€‹ÊÈÈ‚”JIs@E"*+()*)ÉÈ” ˆR&i)$cå*ÊÌ,)!És‚<@AEÙ¥Àæ‚ü ¨(+ƒ›$ƒ,³„H € ¢ •RÒ¬²ŒŒ’ Q€‚ˆÊȲI²HHHÉ2ƒM ¨{e`¡± €°‡/@a ì¢òc.›”÷‘ÃIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/pencil.png0000644000175000017500000000200712032647220024450 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<³PLTEÍÍËþþþýýýþþýæåäÚÙØÿÿþÎÎÌКMÿÿýúöññññäϲäÇ8ûûûqqp[_bÛ¹KóêßÅÊëѬNîâÓþýüàÂIÜÛÚÛ¿åäãøçIÕJصHëÒKþýûÓ¶™Ï§KÇ›K„ÔûøôèÎIº†DÊŸI‰ÐŒhàààÚ½”“MìÔ³Õ¶—ÆšFΨcíßÒYb¬ôìàÐÔï©¥˜Ð­~ÛÛÛìßÍà¼HðÛKðððùõðâÅHÚ¹IîØJΫzijwëÜÎýüúܬýüùÌ£HÜĨ”KË£SÒ«HóßIÆ™BãáçÊ =öäGΫ~÷æIN[ÅÒ«5nyÌúãAùèH_ao;J¼úàHýþþ&7»Ñ«GÇœQóóòîïøïÙBõõõLX¾_e–kklçÒ±ªƒTΩrknţsÜ»6Ô°Ph_Qÿÿÿÿÿÿþ! @‘tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ2ùa›=IDATxÚb˜ýýÂý@1€„ÂÊJÌ‘EˆaB£J•š³I ’ @1Làôªmi寴DR @ ØòC’Ûºt™‚Ônf-àÝQmŒP @ ‹âÔË£s4‹RᢜÀæo$cèÞk  `z·›®§]'L €ÀŽ ¬POHc„ Xp³kO¢lLT)@AûCë •äâÄ ¢œÀ˜Yš«í`• ¨`¿ªE“`|„X €˜$X¸™€¢ŽÅYö"<`A€bhf```geqRHâµÉðó{ €c¥â ú¢Ùyí`•6“‰›…•]KOÊ…£,@ 0¯16ðq…K€ÙÄ€¶ýœ>‘`@€=ܬ d‰snIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/thread.png0000644000175000017500000000160512032647220024450 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÑPLTE˜˜˜———222………tttÅÀ˜’e™™™´´´«««µµµ¬¤xøøøkkk555XXX¯¨{¤ r»¶…===ñññšššÌÇ•ˆˆˆWWW]]],,,“““¹³ƒÉÉÈÕÒµÑÌ™¡pþýýLLLÒÍÓÓÒ`_MNNN±±±ÍÈ–©¥vAA@×Ô¸îîïKKAúùèËÆ“÷÷÷˜”jûúúŸœo¾¹Œþý츸·KJBÌÈ–¦¡rÆÂ’AAA443¿º‹Â½[[[ÆÁ™sss¿º‰²®‡+,,£££ÑË™÷õã¾¾¾ªª© {ÈÃ’×Õ¹úøç:97DC?ôôóÅ¡ÈÓÍÈ•ÌɨØÕ­§§«LKCµ°~ôôå œoºº³ÉÃ’™’fÁº‹À»Œ¸µ886Ľ»·‘ÄÃ÷²‚¾»–¢¢¢º³…»»»ÍÈ—FFGèæÐ‡„^åâÊ­ªyMLBìëÕ^^]¾º‹£žn}}}·°ºµ„??9UUG}|pèæÏÝÝÝÐ˘›››èåϦ¢uZZZœ™mËÅ“¹³…˜lº´ƒååå§£t¶¶±³°}Ž‹b´°…´®xu_‚iôôô„„„Ïʘ˜•tmjTÎÍÍéçÐüûûÎÉ—ÿÿÿxÀ)G:IDATxÚb˜…6A€Â*@X,Xëæ¤Ì',ÉÌ!   3?‹4#;£Œ8¯'X €€‚ì“êE€@”E½$@XUØÌ¸©U¶Ij¬ŒÁ‚lcccãàî‹P X°<3­]V¶¢ÅRhÖ,  €À‚‚ɱš3gÎ Q K ’O @A1 Ød±ÈÆ" O> €fÍ0Œ2)`uŸ™,TêR2] €§yÆõäEku6+:wÅôÓgƒWxuo«½+«OB‰w׬Y5¾³ˆÁœƒÅµpŠuÝÌ™ ¦ýL9º³\ü¨R£IJªR/Ÿ‰‰ÉÆ ¨ß, €&ª¦fe”k#‡@a O€\§ÒâþïIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/pin-grey.png0000644000175000017500000000123512032647220024732 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÕPLTE~~~lllkkkoooggg```cccjjjßßßiii©©©|||ddd¦¦¦eeerrr¥¥¥sssbbbqqq………ÇÇÇYYYÍÍÍmmmRRRSSSVVV¸¸¸www£££ÙÙÙŠŠŠZZZzzznnn\\\ààà^^^ÎÎÎfff‚‚‚âââQQQ¼¼¼ÄÄÄaaa¡¡¡²²²xxxtttžžžXXX»»»ŒŒŒ–––···ªªªTTTyyyWWWØØØùùù[[[‰‰‰„„„___}}}ÿÿÿ,ÈjëGtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇœVoûIDATxÚbpÈBéYj1+pq@xæft5…ð*(bªÃÂS @ 0s4¥\¹al€‚ ²«3¸ÂØ´cwu‡r&hÍÆéÊ`åTPƒ‘E›ÁU  ˆ ?¾²««+T @A(~VN![ ˜«6˜ @`Asi&!Wpñ,hÃÄÃÌÈR©¤ âXÐBÒŒMV‚™™‘EÄ ˆ™¢vFŠŽŒ*ò`.@Á}ä&â gB× Î „  /œ @A]C8 €°E@€p[ƒÄ]‘IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/puzzle.png0000644000175000017500000000233112032647220024527 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<4PLTE盡­¾ûüüûûüüñkÊÑÚ¾ÇÒþ÷r|¤Îþölë›å½:Ž›™ùîmýônPf…Xn‹ö÷ùØ™G`€¼ÀvÔÙá`r‰†–¥ùëhß›è³ÌÓÜÐÒ€as`v‘øéfz¡ÝÄOþönKcƒçs…™øégõâeà›Zu‹þ÷mËþøtþ÷}üñg×”И‚˜å›ùêdÞœ þùkÒ˜ ÍÔÜޚ⬷ÀÍÓ¯7Ý™óßbèœÚßæüôkýõocv‰þökøédÇÎØ¹ÂÏ»“"Ê‘w‰¡Ô­+þöjè›â›Of…ÌúíköÎ>‘âËieyŽé›Ý› dvŠòóö˪‚œ©»¤’zϤ*Ó•çå õèhÜàçÔ”¥°™ù÷w•£¶Ì™ ’ ´Îüòlmy’üö…þ÷y“ ¡þöoÑ“õð|ãœøêfæéécv†áåꔡ§ßš}Ž¥IaâšåœÎÕÝ}@æ›àšþ÷vã›s‚›üónfyŠþ÷tzŒ£bw’þömo‚šÝâèúíhþùw‹š®þþþMd„öïrüòqíœcx“Š{‹ûîgϾyþõl‘ž}‰‡—¬ÉÛœÊÍ`vȑ雙€8uˆ‘Úœ §™nÙ™þ÷sjqg蜷Ž,Tk‰csþöh‘ƒ‚þõjh|ÍÑ €‘›ãšüùpª¦pŒ•žy‹¡úígot‹D]~C\}ÿÿÿCÆ2¼tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ. kcIDATxÚbØÃîÝ}lí;Á@¢*@@Á]¹k\Ø;”sD[&C(Ø¿HÖ‘«UoYvr'D €€‚»SÕææ±7ôlØæÕ@ »#ÅÛ6rùh;ñ¦³– ˆawïúвx3ÝuEÓ‚³šÁ‚İ{—IÊæéü,’ÝvkUÀ‚œ/=¡9e»ºÂTý-«À‚ôP š˜É33Äu‰X €€‚ž…Þ< J[gyMÙ!   §¯°©ÕgÖ.ëhF7° @3Œ/¨Ù½›™âN€©l”*×L*‘a‚@uì'­ð3Xm  àìj†:†|q‡Ýlò‚ÇP0 jSCÜrÅ•µZ`A€ Î`à®·5´\jžÆ½pX €vsT‚xìÜU lÑ`¤Ô°D¬eÎIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/typewriter.png0000644000175000017500000000054612032647220025422 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<!PLTE000éš×Ô§ü¨ ɇ ÁÁÁëåŽÿùÛïœÿÿÿƒ‡…›ËIDATxÚbàˆ«(@EÙØYYÙÙ!, @Q+ADªÀ¢ÄÀÅÉÉÉVRÉÊärqDI-X €@¢ l¬@Õ@$Ø89Y¸"ŠÀ¢e‚(@E™Ñ P €¸9Ð!@1pq`..€bàbÁ\\² ÍX ¹åâ@ Q€©Eæâ ìjh€‹ €°Ç@a0úF ‹e˜ŸÏIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/puzzle-grey.png0000644000175000017500000000160512032647220025476 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<>PLTEóóó›››ªªª¨¨¨¬¬¬ççç¡¡¡©©©îîî”””ëëë§§§uuu™™™ŒŒŒñññôôôðððßßß­­­üüü¢¢¢„„„pppyyy¥¥¥ïïïwwwêêêìììàààÒÒÒÆÆÆttt‡‡‡rrrûûûŸŸŸÐÐÐsssÍÍÍ   ºººÁÁÁ———»»»ËËË‚‚‚€€€ÂÂÂáááŽŽŽ£££ÄÄÄvvvèèèšššƒƒƒâââiiiååå~~~“““¦¦¦lllæææ¾¾¾bbbÌÌÌœœœ–––ééé÷÷÷‰‰‰þþþÔÔÔ¯¯¯‹‹‹ÎÎÎäääeeedddˆˆˆ³³³±±±oooÉÉÉ^^^˜˜˜ÀÀÀÙÙÙaaa´´´```ÓÓÓõõõžžž«««òòò[[[ZZZÿÿÿ1픢í>[Ý9Sá%Cöž­Ê5ðd|Ó;Ò:¤%Ñ9¯ $±±±ûÏ×¥¡Ï0Ié«´»,»+÷®ºÚ"?À6ö¤²Út„íwа6Gð_wì2QÌ6¬ #Ù!?Ø!>Å2Ú!?÷­¹¨*ë*Jÿÿÿ¢ŠžŒNtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬MûÎõIDATxÚbðňBi‹9û(ŠssBxtµqPãòq‚ð*()ÇlæÁS @ 0sXM}|`l€‚ êH#&¨jäâããåLÐA×ÇGÊ ¨ 5«§,„@AQ7!fC  ÔT€‚:Zñ²3MÀ\€ ªKñ°[‚Ä|4ì@|€ ªðò)™4A|€ *È ‹héóé ðÛÚƒø1Ó‚ÍÀœ…EÙ›MÌ ¸|98àL€B20™„dD0Á’1†3ˆ[týg§pU™ IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/funnel.png0000644000175000017500000000160512032647220024470 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<\PLTEýýýªªª»»»ÍÍÍûûû………hhh¡¡¡BBBQQQåååõõõôôôËË˹¹¹ÐÐÐÛÛÛ©©©ÓÓÓÇÇǵµµ¶¶¶®®®ÌÌÌêêêããã÷÷÷þþþœœœÖÖÖ™™™ÀÀÀòòòÞÞÞæææúúúð£ ñ©¢¢¢õÀD¹¶©øËFï£øÑlgggõ¼0ùÔxò­÷ÉRÔиô¶%õº6ô²’’’AAA‘‘‘ñ¥ ñ¥ ñÎhËɼðððùùùñÁNõ·2ô·1ѽ}õ¹-§§§õ»/öÃMÔÔÔó²#ÄÄÄöÀKô¸.Ó̵þòºúØiàÜÌûÛaàààÉÉÉ¡¡ ýí½ÆÆÆ§¦¢òÅ_õ¹2ò±)öööþêò®ñ§   ´³²öÄLïÎl÷ÆOí¹J«««ÝÓ©ï»GöÅC¤¤¤„„„“““ÐÎÀPPPâÆŒöÃ8öÁ8°°°ûèÃÿÿÿÿÿÿÅÏ— ttRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿötÅk/IDATxÚb(ƈ› @…YÙ8988ÙX…@|€ ÊÊȉòsqKKssñ‹ÊÉÈPP^QJ™¡ ”¥å‹‹ˆ¡˜!”¥ °xØPeF©˜°€„€°X–y\q1@Ô3Ùr8Ì8uXÅÙmŠ‹d;3B7“xQq1@ýBôòü£µ} %Y€v§dX¤J¬¾»¥…º`ˆ@1Y»D¨zº9ò¹ŒbO´×Ôõ² Vsêw·x‡¤ f € ‚ )É&ùVìP@ÁBI$W+-µÊ ¸ wz83”@0A%ÞlC^%( €ìd gBÐ'Î0XÜ…µþt+IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/barchart.png-grey.png0000644000175000017500000000056112032647220026516 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEØØØ­­­444eeeddd®®®ÙÙÙ333ÿÿÿ[†‡@a_€Â. @ØE | ˆ¯`¸IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/barchart.png0000644000175000017500000000045512032647220024771 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEi²000ïœÚÚÚÿÿÿx— Ÿ¤IDATxÚb`Áˆ«(@a  (# 3*b fFf4ÀÂ@(j™˜ j»(@¡˜…˜@j@® ¨(D/\ € &@ô‚H <@aQËÄÂ@`Q U €À&€E$ @!©…“,,„] €X1 @a3€Â¾„] €°‹ ¨cêß5–IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/clock.png0000644000175000017500000000155412032647220024277 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¿PLTEÓÓÓÿÿýýüÙÒë¶þüÜÙÙÙøùÌåååêêêôôôûûûÿÿüâââØð¹ Ú¤þýìˆÐÑ브ɣž@Ãê¬E¡hfE#_Äx¶‹ˆøûÛ'§VŽ@‹Ó¦ÔîÇþüß¡Ù÷ùË«DøýöõøÊÿÿþ”@µA&¯UA­ä ýüÚóúõíùñ®Þ¡‘xSŒÕ}¶’¼ã©øúÌ–Eþþ÷È캙LãÜÇýûйå³IÆn{̇»ã¨Ìé³Ëì×Ëë×¼ãªP¾n×î¹Þ”tY?;§dŸ<ÍÁ˜ ‹nýûÕ×ïÇþüàú÷Ëÿþ÷ýüרïÃÅ绘ٜÿþù­œƒ¨ã¨ÜÜÜÑDzþüÞsÒ{‰…}zÔáò¿ÔÔÔ¨?×××ÿþø”{VãõéýûÓiÅzÃæ¹TÉh…¹˜Y¿q¥BçóÂÞòÛîøÖêõöá¥LÁnÂæ­2¾SåÞ³œà°ÿÿùe·€µå£×ͯ¥@’zUúøÍsÉÁæµúøÌWÁ|ÛÓÀýûҌԧöûéùüèÓ«ãœÙ©þýè›…_ÓêÜhÅ~õúáu[=ȼ¥òøÕƸ¤?µE±ß£ýûÏÿÿÿù¨€3IDATxÚb˜‚6A€Â*@X.ÈØ¨ ØÇÏ bLÐ>șو¹À15È ¨ ƒSÌäÉÚåýv-ÁS¦T°Î€mòdùÞŽÉ*“ä§D0I£lòäÉ,ቓ'ë dO ˆ ¸;/P©¾²ªvr߀‚ÊVäý-ij”–äDø €Àbfn ² HÌ…ÕÚI €€bü |Ìâ\1€bðö6b`e¶Có og}fMed1€bpª3Gó o) d‹Á ÀùP] _jãfIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/blue-quill.png0000644000175000017500000000214112032647220025250 0ustar ebourgebourg‰PNG  IHDRêÇ•ÔgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEûûûþþþüüüíííãããýýýöööùùùëëëâââ÷÷÷êêêáááäääñññøøø»Ü‰³ÒèéëÒäñ›››¾ÅÌîîîòòò’™ž¿Ö蜻Óåæç^zÊÐÖš§²ôö÷œÀÚ·×Úé󥪣±¼µµµµ»À”šÁÈÏ———`|‘ÏÕÙž¤¨˜¡ïïï©ËäÏÏϾÆÎ£¨~œ²óóóäæè„­Ëçççìîñh‡ŸN_jÁÌÒðñòÀÈϬµ»d“÷øø±¸¿‹·Ö¿ÏÛ’§¶®°³µ¾ÅˆŠŠ—™šPet”˜¡«³¾ÆËèè胅†¬³¹ìììK\gÆÍÐRiz¬¼Åµ¾ÆêìíÞáãúúúÑØÛxœµŠ‘Ëßî}‘¤²·¾Ãª²¸”£¯¤³¸»½¼¼¼€š¬‚ªÈŒ‘“ðððÓÙÝõõõŒŽíïðc‚š±·»§®´¹ÂÈ™¡¦ÅÌÑÂÈΘ°Â¹ØÜßáÚÞጱ̗ž¤ïñóUgv`}“¶¾ÄàåèŽ”š¨°¶èëíååå ¨­£ª¯ÓÓÓ´½Ãn‹¡ÑÑѪ¹Äæææ«·¿ßäæJ]jw¢w–­¯¯¯HYfgz‡¿ÆËèêí¬´º›¡¦ôôõTk|òôõÔÙÜššš›¬¹éééÌÜè°¸¿w‰–ÜÝÝ¡®¸¦©«‹•ÄÊÎv™´ÜÜÜüüý}‘ Uoƒ¼ÅËÊÏЖ™›ñòòàààÿÿÿ6æxæÔIDATxÚbØ€VQ¡þ 6V¹ •iQr9›ÜäêeŠq669+K³¾Y@@aʉÚë·{³Y„!W0Ñ(ƺ, @èr¡½ZR‚IÌ`6@¡ÊU©xæ ”Ax„"×è\£ Y²*@Èrëæ¬Š§T‘È岜Æ$A§Ôr €r ²k£……;Ýà"—cµ]<{ý† í¸àr—‹tiݰÃ? a@Áä¦'ˆ¤lØ` Žd?@Áä =&0lXï—‡ì%€‚ÊMÑÕÔÛ°!¹Âedã`áÎÚ@ë|÷Ž kÁ¼ˆŒ®õ¼&Œ6D®.]u³š(;Éν~=‹8#H € rñÙË¥ÊXÙÌyÖó0C- 0eQ?mu›ÐŽõ@ÀËs @äVäW:lØÀ6—(ÃÂÇw'@ä2Õµ70‰ñe8™‘à €€lyåæ üM =bL(± @@¹â%=ü¾œ¼ÜâLhi €6Ì,œÊÇÇÄȈ™àˆaC­„)ö4@ ¼–²ãÈÄ€'¯ˆxËÌËÝ!tIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/table.png0000644000175000017500000000043712032647220024272 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTE˹Q„–ŽŽŽ000ÚÚÚÿÿÿ¼ëîIDATxÚb`È«(@a 6LÀ@@Qf&&&Vfa ì¢eF,leddZÀŠÀ,leeefE,l„]-@aW @ØÕvµ„]-@aW @ØÕvQ€Âf„=|»(@a0p*|Ç'IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/remote-grey.png0000644000175000017500000000157412032647220025445 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<,PLTEhhhccc\\\ÛÛÛèèè®®®ãããgggoooïïï[[[ŒŒŒçççíííìììððð^^^ƒƒƒñññýýýaaa„„„£££dddkkk}}}{{{åååúúúëëë’’’ÔÔÔ‡‡‡ÿÿÿêêêeeetttŠŠŠ   ]]]```¯¯¯iii•••»»»æææ“““qqqÃÃÑ‘‘‚‚‚ÌÌÌüüümmm¤¤¤ˆˆˆ§§§ééé¹¹¹___yyyÒÒÒòòòjjj‹‹‹zzzÀÀÀ¾¾¾óóóõõõžžžÚÚÚœœœ´´´nnnÜÜ܆††µµµbbbÓÓÓvvv|||ŸŸŸpppßßßÝÝݪªªfff˜˜˜~~~………sss±±±YYYZZZÿÿÿ°l¥dtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&Œm=fIDATxÚbHƈ› @a   ·‚„§od/§˜œ @ Élb!Ú¢l 1æPÛhnæd€b`sfЕdbddÔHLHHJRe 1A..MF%¤$‹„¤Ä$n€bÔ `0–pŠROJHˆQLHHd ‰Ù0oF% f95Ö„Ä$€bd¶ÓV7WódgdaM`JJd ™&‘qI‰.ªR‰IZ@3¹ˆ-–ÉÅ0IÔA™Ç4hKR’3@1$[å¹\YÜ9ùl¸“Y“ˆ!Y$ë+-Í+Äɧ• †äx CTVO&9ÙQO0))Q* €’™ÙYXøÁ~çTfOJH †dAMŽ`kˆX²°<‡ˆe2@1œ¼ü°@“áeáñH Pxš £…'@a d€¨,iZA•= IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/glasses-grey.png0000644000175000017500000000144712032647220025612 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< PLTEîîîõõõëëëñññûûûQQQTTTêêêèèè„„„çççïïïððð···CCCMMMXXXRRRwwwˆˆˆzzzœœœ©©©eeeúúúóóóGGGSSSººº‹‹‹àààVVV÷÷÷hhh[[[nnnsssrrröööxxxøøøíííPPPYYYÓÓÓ´´´BBBbbbÛÛÛÑÑÑ———¦¦¦HHHôôô½½½›››äääÝÝÝâââËËËýýý¨¨¨òòòooo³³³fff~~~}}}ƒƒƒ   FFFUUUŸŸŸ˜˜˜ÄÄÄiiiìììùùùvvv‘‘‘†††ZZZ{{{±±±ÏÏÏžžžåååþþþÿÿÿ‚CŠYtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿO…=IDATxÚbˆÀˆ› @A­Åx‚dñssTä2¶„ Cƒ¸8§¶®(™ˆ§Œ lD@1DðŠó D¨ùF„G0;¨èIKEDP»F›w„)‡d¸Z„¨³:+C@1DHð„»š° ææb¶pââcˆ †v;ùaîF¡L@•²™Ûhz»’˜²ª:£ f@Ã9 ùY"ôÅÂý…8Ã#ìNF-/.UÑpMV[a{Ɉ€ †³»ˆ(ñ‡31±0jùñ¦B0Ÿ 4;·Ž2 È·õ»•|ÐVOs°X@A%˜„µ˜eØäÀ<€‚ƒ¼Š€” @ˆðdF@a d€Â*`’^a©Äæ( IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/book-grey.png0000644000175000017500000000152012032647220025073 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEggg¿¿¿¬¬¬ttthhhfffvvvŠŠŠjjjýýýùùù‘‘‘óóó¢¢¢mmmÈÈÈ‹‹‹µµµ“““òòò´´´‡‡‡ÞÞÞ›››­­­bbbllleeeooowwwÎÎÎnnn³³³üüü¯¯¯ÏÏφ††£££ÇÇÇööö———þþþççç………qqqiiiÉÉÉzzzccc___ÅÅźºº¦¦¦\\\úúú°°°ÃÃÃÁÁÁØØØˆˆˆ•••ŸŸŸ}}}±±±§§§»»»„„„aaa|||œœœ÷÷÷ÒÒÒ²²²ƒƒƒñññ¼¼¼¾¾¾¨¨¨ªªªûûûkkk«««©©©ÿÿÿÿÿÿ®{rŽXtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx›ÂjIDATxÚb ‹p$@ B„ƒ•U†•ÃPÂ"@`A>AMfa9Y7c)×ðp€ ²Ê²˜K©„ihÛÚHXy†HP‹!”ɃAÁÑD),,,„/( €@‚œ,!fÊb rŒaaŠÁAáÔ e uÐ  H0(¨2P200D,,Ì›9( € ‚L!¡@Èd&  ¨ÊÐÐÀÐÐAˆv€ r‚CBÙ¶K‡‡Te`h`@S€P;P €x¬ýÕƒ™€Ö‡8…p qFÿ`aE’–@Aw–ðp€bàgôgTeà³ ä“—f  b.~ö`öP5]?^^ùðp€‚?#£©@0› ¯ˆ@ ôõògtq`cãóˆ9㸠4@¡Â@€Ë@dVˆËxrIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/scroll-grey.png0000644000175000017500000000074212032647220025444 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<HPLTE¥¥¥ííí¦¦¦îîîóóóìììðððæææåååôôôËËËëëëïïïêêêõõõéééñññÙÙÙòòòÌÌÌÿÿÿ<_ IDATxÚbLj«(@a °¨¨ˆ°°°p@E$*Ê)Â,ÀÌ"Ä($Ê  '°ƒ /¿D €À¢B<Â|ŒBÜl,,ÂQ€ŠŠ‰Íedgdà`‚ª ¨—0#+++#/T € .aâdd熊DT˜E€Y@&(@PQF&A É0Q€‹Š ± 1 °ÁD*Ê)ÈÄÀ!ÈôØmåfäbee‚8 € ¢ì‚L‚LL¬Â@ŸƒL °(—˜°³3›ˆØh€‚¨‡Û@—q‰—Ô „=Ô»(@€h ŽÂ¤SŒIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/mglass.png0000644000175000017500000000130612032647220024465 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ùPLTEž‹uûûû{iXùùùšššçççËËËýýüóóó¾¾¾ãããúúúþþþÚÚÚvvvŠŠŠ¤¤¤òòò¬¬¬ªªª}i¶¶¶···ÒÒÒyyy™™™ÍÍÍ~jüûúfff x³¤“Ÿ›————‚‚‚ÒÑÏ”‡x‘~jÄÄÄÓÓÓÝÝÝ÷÷÷¸ªšááájjj   £££½±£æææ¢¢¢ÜÕÍ'''ÁÁÁàà൧™åååžžžÑȾ†††ØÑÈ»»»€n]ÕÍÃîêæÚÓ˯ Ž¾±¢°¢”¹¹¹ÀÀÀ˜˜˜¸«¬Þ×ÏÜÜÜ‹xe¨¨¨¯¯¯zzzÿÿÿÿÿÿô <StRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿf‰~YôIDATxÚbˆÎâd· ÐSÔÔ  ¸ §º±»%³–›4c@ÁÙYÄx™¹E¤ø‚.È"&¬lÂA”4g òp \PŽ9$øƒ¡R¡ €°š @ȶ³Âl „;ÙäÍ$ìô•€î ˜ ‡Š©‡Ÿ ¿†¿cP@A½U~ ˆ ‰<ƒ R€XЉAÍWI €@‚¶ 2L^²H‚tй"‹C5ƒ(“J ƒ#PÌU, €‚tì Ñ£ À94e㡤DIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/glasses.png0000644000175000017500000000161712032647220024645 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<VPLTEþþþèîóU‚ûûûR€ïïïDvñõ÷êê꠸˪ÁMzž{·[…¥úûüìììõõõéééìñõKyàèîIwœ`ˆ¨1fS HyN~6i‘ýþþ!Y†Wƒôôô£»Íðððñññc‹ªS?p–èèèDt™Ft˜ Y…Jxœ¿ÏÜT¢ùùù?o–Üåì3g$[‡ýýý`ˆ§ëëë›´ÈŸ´ÄøøøÛáæ]†¥öööT‚€ º÷÷÷N}ííí Iza‰©O|Ÿ5i‘óö÷R~ |·"Z†X„àãæÏÛåGxóöùæíòêìíòòòãêðºÌÙÄÓß}ž¸ïóõIvšˆ¦¾-cm’¯§¾Ï}›³äëðàçì÷ùú#[‡ÖàèÄÒÝHw›Cs˜ñòòÒÝæŒ©À ¹ëðô±ÅÕ%]ˆEwš³Èêðôöøúïóöv™´Qÿÿÿ<…ÃrtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ|×ËèAIDATxÚb(Ĉ› @A¹8Ù‚äKô6– K C!£¸8¯»)ONz$·$¯‚„ra!@1rr‹eÉZéÊ e«³YKP{n!“t¡¼‰ <ƒO!«0 c!@12+1Ø8ð2³ª%ë눊°1C¡+Gˆ¬6Èü¹(ãàh J€Ù4½0 ŽKOC˜]· €@‚ ‚ R|…Œá\ †Z¼Î2…v§?K†Hƒ½Jª˜j^a!@8,¹3íøý˜¼\b|€‚xÓÜŒM…‰C1H•YPÈ ¨ß==œXX óÝÔ@b…dæw,PR`²°ótŒr¡šñP6@!ÂSx„5« @€Ð|ð®OEIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/remote.png0000644000175000017500000000155612032647220024501 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<,PLTEccchhh[[[èèèÛÛÛƒƒƒãããïïŒíííìììððð„„„ñññ£££ooožžž\\\ýýýmmm{{{ÿÿÿÓÓÓççç___¼¼¼}}}ˆˆˆåååêêêppp†††úúúæææxÀpëëëbbbZZZkkkttt®®®¡¡¡aaa]]]’’’eee‹‹‹t´méééÀÀÀqqq\c[_£XZ\Z   ‡‡‡sssÜÜܬ¬¬ÔÔÔ–––|||ÁÁÁÞÞÞ´´´ÝÝݧ§§•••yyyóóóh®aÃÃÃzzzZ^ZõõõÕÕÕYZY~~~ÌÌÌh¨büüüxÂq¶¶¶vvv“““jjjÅÅÅ```¯¯¯ßßß]šW¹¹¹òòò^^^yÄqYYYfffÿÿÿœ9‡dtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&Œm=XIDATxÚbHƈ› @a   €‡¹3„æç¢#œ @ Él|!ŒüFFVGi&& QíÄD} `"@1HIÊ3ꨅ[é20¨&$¸Õ&ƒZ´²¦œ ³ƒ(P³IŒRB¢*@1HY†2j ë¹3100y+%˜&&&ØL{ùÄDu#‘DŸ °™ÄÀæ+hÈ‘È#&+î/—Â,Äìb0Ù1»²sÅ2ØÉÄlb8ÈÈpò²sEAˆ!ÙHó(+r)$'Ç)²9"ÉÄ,´Ž™™ìwvÙ¤ÄÄød€bHfä3€ˆ% ñZókI'ÁÎÉ 4Nfq¯d€…g ZxÖ@0ó²iƒf0mÏIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/clock-grey.png0000644000175000017500000000143212032647220025236 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEúúúÓÓÓûûûçççâââåååöööôôôýýýÔÔÔ×××ÚÚÚÌÌÌÉÉɇ‡‡þþþØØØ±±±µµµÖÖÖ{{{ªªªÛÛÛ÷÷÷õõõÒÒÒ¼¼¼}}}ÞÞÞŽŽŽÀÀÀˆˆˆßßߥ¥¥žžž™™™–––```“““¸¸¸áááììì¾¾¾NNN²²²æææ§§§òòòÝÝÝèèèÇÇǬ¬¬­­­ëëëÁÁÁ___´´´~~~ÐÐÐËËËÈÈÈðððíííººº•••†††œœœÜÜÜÕÕÕ¨¨¨êêêóóóééé¿¿¿ÑÑÑ‚‚‚………©©©€€€üüüøøøùùùÿÿÿÿÿÿ‰´‡XtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿx›Â4IDATxÚbLj› @a ¬‚ •åeaç±&ÈlÏÊÂÅÂ-àÎäT9Ð<4”GSÉB( @PAA+¶ÐP&i¾Pv?Ö°p€‚ªr…MlBBlu´Ã"(¤ÈÊÀ(ÃÆÊi@A^y‡P  ¸œ›H—`8@AÅdC€úù,uB…Â"¨Æ'-  PW’¢üTpV6 ‘ÂæÄ@Af— _  ~Ìzad`÷bñÑ`dfb``âàæ    «#£”™¿,✢¦*®ÖÂ!@+kx¢ c–Õ V›IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/typewriter-grey.png0000644000175000017500000000070712032647220026365 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<9PLTEÑÑÑ•••âââõõõ«««ªªªÒÒÒ444¿¿¿”””ŸŸŸÀÀÀ­­­áááööö   ®®®333ÿÿÿøRZñIDATxÚbˆ«(@Eyù¸9øø¸ˆ™, @Q 7qCDª ˜¡jˆAH@@€—¨ ˆ9€P€G@H € ¢`eÌ ’È ¨ /7/77/;£@E™˜˜xD0 E(Ê#ÈËl`Ì+2 €@¢`ÀÆ<< Q€bbåbåg@.V.~V.!!€bâ‡. â1„„ˆAˆ““A ؽ0±GH €€¢B\Bü@#A¶H-\BEˆAˆÌ„AˆZ€ŠòÀL„  ìq@ØE èü±ÕÂIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/chart.png0000644000175000017500000000052712032647220024304 0ustar ebourgebourg‰PNG  IHDRžÉU¤gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEl ß$Ÿ<000ÚÚÚÿÿÿ ó’$ËIDATxÚb`ň«(@a  (3++ *b Vf4ÀÊ @`µL@€¢ € ¢@P‚‘‘" @ ˜ÀúA4#Ø€‚ÛRÅd0‚ÔT”‘l"T € n`„Y4„( @µ 0Û™ÀF±X”á, Ñ@a€›ÀˆðØ RËÈŠ¢h@a„Ð7¬¬ÄÀÊŒXY{˜öð 좄] À±ÊlÙ­ÕVIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/new/thread-grey.png0000644000175000017500000000155212032647220025415 0ustar ebourgebourg‰PNG  IHDRºWí?gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<5PLTEÃÃæ¦¦”””„„„×××   ÅÅÅ«««gggÈÈÈØØØBBBÄÄÄ¥¥¥EEEÍÍÍâââ³³³¨¨¨ªªªÑÑÑÊÊʶ¶¶ÀÀÀlllZZZ©©©ßßß===¹¹¹§§§õõõ———‹‹‹²²²ÙÙÙÔÔÔÇÇÇÉÉɾ¾¾ÆÆÆÁÁÁ¿¿¿®®®¯¯¯ÒÒÒºººŸŸŸ¢¢¢ôôôhhhHHHòòò½½½¡¡¡[[[PPPYYYnnn»»»IIIyyyjjjúúúmmm;;;ÌÌÌÏÏÏÎÎÎýýý‘‘‘{{{ÜÜÜMMMðððUUUÚÚÚ£££iiiNNNzzz¼¼¼ŽŽŽOOOááá\\\dddÐÐÐDDD^^^ÕÕÕSSS···°°°ìì옘˜QQQÓÓÓËËË‚‚‚ÖÖÖÿÿÿÿÿÿø /ügtRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºxHIDATxÚbHÈ› @a `*2 H(N0ÙœÏS‚‰* @ A&f}F!^…=°R€ Ù1 KÉ12ÊI12Gʃ´X¥T¥;P%H €Àf²Ú†Eó[Zé€ÅÒl;/++« ˜’5§D €À‚Zšâ âš ºQ<@P €À‚ÚI"),)))>! áÒl,©6S;Q%%……KE]ÇÈ“ö ° °,?WJŠ» Psª¼@1¤z8©™Å» +Å2²sš‚|Ä™ @ \l1Šê ¢ªüü"jªìl©©†©Ä ÁÃìê묜’¢¬Ááíšj˜ @ ,lZ~22Á’’6ÜÜÜ ² ý†Ä* +*¨è`Áç/ÁÄŽÔT€ÂÈõ`nÄ&m~VIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/New24.off.gif0000644000175000017500000000141212032647220024035 0ustar ebourgebourgGIF89aæÿÿÿÿÀÀÀÎËðÌÉî×ÔùÚ×üÉÇëÇÅéÎÌðÍËïÌÊîÛÙýÚØüØÖú¼ºáÂÀ濽ãÅÃéÏÍóÎÌòÈÆëÇÅêÆÄéÍËðÌÊïËÉîÊÈíÕÓøÓÑöÙ×üØÖû×Õú¶µÜ¼»âº¹à¹¸ßÄÃëÂÁè½¼ãÅÄëÀ¿åÊÉðÉÈïÈÇíÄÃéÎÍóÅÄéÑÐöÌËðÉÈìÈÇëÕÔùÒÑöÐÏôÍÌðÊÉíÖÕùÚÙýØ×û×ÖúÚÙü×ÖùžžÈ¨¨ÒÃÃò¯¯Ù²²Ü­­Õ¸¸á··à²²Ú±±Ø¯¯Ö´´Û³³Ú¾¾æ¸¸ß··ÝÀÀ翿澾弼ãÃÃêÂÂé½½ã¼¼áÆÆìÂÂèÃÃèÐÐõÏÏôÓÓ÷š›ÅŸ Ê¤¥ÏŸ É¥¦Ðª«Õ¦§Ð±²Ü­®Ø­®Öª«Ó©ªÒ´µÞ°±Ø¯°×º»ã¹ºâ™›Ä¤¦Ð ¢Ë¨ªÔ¯±Û©«Ôµ·ßòòò³³³ !ù,ÿ€‚ƒ„…†‡ˆ‰ˆwŒŽŠ‚u•—–u’wuonq?e_i”uw’”]s`BatDwA”Šb^rcFfQK²´Š”pd@EILJ("²‰ChmkP!W'͉”gljON,[/4 Œ‹uRH&M+)Z> : ·”GT$*0fðÀÀàÆ‡Z‡:•K‡;0PA>C”¬PÈÂeƒ‡ 2ä¤.a8hh0€!Â\ÈA G‚8Ààlg¡N 2Ü3 £Æ$Á6¢$ñÆŽ Z^&59ÑUt¦£iiZ¸x0EP¦¤•~Úyäè(LŸ†0aÒ)àÔ&¸’Ý-©4¯¡¾!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/testtubes.png0000644000175000017500000000112612032647220024430 0ustar ebourgebourg‰PNG  IHDRrP6ÌbKGDùC» pHYs  ÒÝ~ütIMEÒ (“@ZãIDATxœÍ’¿kSQ†Ÿsïͤ˜ª©ÅØ&B¬’6-´4Y¬ÐâàÒA*Nb‡ A\ô¨8dp±d%QLKÓ´ârAŒR-QHcQÚ+"Z05ñ8\r¹·ÞH«Kßí=çã9ßy¿v«„Ûabjúfàhû•Î!`.³ðào t¼#Üô•gsëÆÚ—ï–+KÛñŽÎSÓ_UÙ3|úT ;³QTE Vå­~ÍøÑ3§{xøÄ ?; ”ìòÄE/Àþû|Á#Ÿ¼-{U7/Yúã7Z³oÖS9ß@±BuSѾ'3]¢ãjH´òºm]ÓçË]öÚT<&°T<&ß,µÖ_=ÿÔ¦gWõ6MÓ]A¿ß„5ÈvmzŸ=–?ë¹ÁÛÚ-‡§ ÝÔ?™ ´ÓŽú'Ó@ úýÿÃâÒÌu €Ö Üž˜­ÅFBÏ®ÈÞj{±‚ïÂŒd¦~':®†„‡èp}¾\/kjðX°öÖ9MT‘ È“¡X17Q Žõ•(äà ̺±¾ùoaW ¬F̨¬=ÛšÝÏÂ}@‚”6ÿËá»ËçYÍݵ²Sì Ã—ŒŒ~ ®€êµAÜîÚÓ´ÐR*“Ûír'µÿ¬ß|·ÑöÆ|ŒoIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/Open24.off.gif0000644000175000017500000000071612032647220024213 0ustar ebourgebourgGIF89aÕÿÿÿÿÿçÍÿæÍÿæÌþåËýäËüãÊûâÊúáÉøàÈöÞÇóÛÅðÚÃïØÂí×ÁëÕÀèÔ¿äмâλà͹Þ˸ÚÈ¶×Æ´ÕijÓ²ÑÁ±ÐÀ°Ì½®Ì´šÌ³šÌ³™Ì²™Ë²™Ê±˜È°—Ç®–Å­•딾¨‘¼¦º¤¸¢Ž¸¢·¢¶¡Œ²Š¯›‰®š‡¬™†ª—…¢‘€ žŽ~}™Š{f33ÀÀÀ!ù9,@˜ÀœpH,9œr©8Ÿ ˆ£QVN6 j¼,´ ­‰,›¥Ðtºº‘Õp¨yN?ÞîøÛQ¦UP[Z+anC8b3'#1ˆ†D8 Z™ _}‰•u ¡¢£¤¡yySTq[ƒc©BL²³}•|‰2&Ž#ˆ¯–b€™/bUŸI+ " .`žÌI³ÙK°¥ÝHA!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-active.gif0000644000175000017500000000101412032647220025323 0ustar ebourgebourgGIF89a æHüüüccééDDáááZZššIjj:ØØ¸¸“®®““¡¡†,,55YY88hh"XX#gg&ýýôônn2—‡‡q##úúzz(00;;88ÍÍ$$nn RR*TT+ììÕÕÕçççMMIIæææ))jj2ÖÖÖ55››OÀÀÀŽŽyóóî÷÷÷øøø]],··ee.¾¾ííEEÕÕ¯ûûûnnØØ±¨¨ŸŸ‚rr4ÿÿÿÿÿ!ùH, i€HHAC '8‚H74# GDFH>GŸ 1,@3* ¨GE ©¨=“¯Ÿ!µ¨%ºŸ- ¿. ¿&9µ (2H; $B)5‚/<S¡€¿pT™ðà…çÖÛ1ÁQ±?÷ ZQÅN— ÿ XEÍX #M,1iH˜9@ rêP(& „Lœ=ȃNði¢$š lRP€@gƒ˜–¸w¦ Ô TP5F §V÷ÆðJÕœX±D2¥”6YŽRm' P€R,tÓÅg.†²»\¢j l¸1ÅÈ›"ãp¯CÁ¾ÆùŒ2XؘŰÀÅA‘l¨S§nVʉ¦Ód“}—5k"B5‹=»¶í4>š1h­0Ù´y/ûÝëôðÖº+Í ú²ê´‡ç@>¼ô ɳ_ŸŽ|¼ìËéžHß¾]YyöáyCWO;{øæóÏç–¿ÞÙ•·Ÿ ÚYÂuÛ!H'rÝýâ‹mË1ó[¢¹Fi1Ükfˆ^i„(âˆ$–hâ‰"†;apache-jmeter-2.8/src/core/org/apache/jmeter/images/SaveAll24.gif0000644000175000017500000000051612032647220024066 0ustar ebourgebourgGIF89a³ÿÿÿÿòòòÏÏÏžžž‘‘‘nnnaaa ÀÀÀ!ù ,¨PÉI«½$Í·çÁB!’®çh%Â` Ä "´0ÕýŸÍ!æÊL¨+0â &0Yî6ÝE‹Šf¡FXq‡­'‰ÎjT´µ†Õ~•*â–¬ˆHø“~L ¹9€€Mtf‡‰ˆˆNa~Y;Hzy$ŽNP1gV}Z“¡•„Oe™›‚ŽŸ‘¢¡au§‚œN²’”{XLA@ ¼Å'ÈÉÊË!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/smallthread.idle.gif0000644000175000017500000000007312032647220025603 0ustar ebourgebourgGIF89a¢ÿÿÿÿÿÿÿ,*ÀNH™;apache-jmeter-2.8/src/core/org/apache/jmeter/images/SaveAll24.on.gif0000644000175000017500000000051612032647220024501 0ustar ebourgebourgGIF89a³ÿÿÿÿòòòÏÏÏžžž‘‘‘nnnaaa ÀÀÀ!ù ,¨PÉI«½$Í·çÁB!’®çh%Â` Ä "´0ÕýŸÍ!æÊL¨+0â &0Yî6ÝE‹Šf¡FXq‡­'‰ÎjT´µ†Õ~•*â–¬ˆHø“~L ¹9€€Mtf‡‰ˆˆNa~Y;Hzy$ŽNP1gV}Z“¡•„Oe™›‚ŽŸ‘¢¡au§‚œN²’”{XLA@ ¼Å'ÈÉÊË!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-3.gif0000644000175000017500000000135512032647220025137 0ustar ebourgebourgGIF89aDÆ]ÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿOÿPÿQÿRÿSÿTÿUÿYÿZÿ[ÿ\ÿ]ÿ^ÿbÿcÿdÿeÿfÿgÿhÿlÿmÿnÿoÿpÿuÿvÿwÿxÿyÿzÿ‘ÿ’ÿ“ÿ•ÿ–ÿšÿ›ÿœÿÿžÿŸÿ£ÿ¤ÿ¥ÿ¦ÿ§ÿ¨ÿ©ÿ­ÿ®ÿ¯ÿ°ÿ±ÿ¶ÿ·ÿ¸ÿ¹ÿºÿ»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù,Dþ€  '-49‡?DJQV‡\••”–\˜–›—™šŸ™\ †!'.ŒŽDK’¤´¢œ¶ž µ ¦¨ª!(®:ŽE²W»£¸¡ºÊÈ– ‡À‡@ELQÇÍÞÌàÉá–ÑÔ"Á5ÃÙLRÝã¹âõ·ó\åÒ‡ê.5;1ÂdŠ<{ôî!\¶Pø¥Kñ @‚R²8KÈ‘¡Â•>° qEÿ9Òd –;Â$5 ÁÈ’)` xĉ˙ßÂ`óB‡C$TĸÁƒg*ƒ‚ŒIæŒ"]ãFCBzVÑ_ÙLd=ú§ÄŠK8šþ‚ÄÉØ³SñV"€ƒ‡C%XÈÀñu.’'w¥ÊT\U0|¼bpa!I TÙ¢·±YÇ $d˜üÇ‹8|’ysç×Ê;apache-jmeter-2.8/src/core/org/apache/jmeter/images/icon_1.properties0000644000175000017500000000613612032647220025174 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Icon definition file. # Key: (super) class names # Value: icon, optionally followed by space and then the disabled icon name org.apache.jmeter.control.gui.TestPlanGui=org/apache/jmeter/images/new/book.png org/apache/jmeter/images/new/book-grey.png org.apache.jmeter.timers.gui.AbstractTimerGui=org/apache/jmeter/images/new/clock.png org/apache/jmeter/images/new/clock-grey.png org.apache.jmeter.threads.gui.ThreadGroupGui=org/apache/jmeter/images/new/thread.png org/apache/jmeter/images/new/thread-grey.png org.apache.jmeter.visualizers.gui.AbstractListenerGui=org/apache/jmeter/images/new/pencil.png org/apache/jmeter/images/new/pencil-grey.png org.apache.jmeter.config.gui.AbstractConfigGui=org/apache/jmeter/images/new/puzzle.png org/apache/jmeter/images/new/puzzle-grey.png org.apache.jmeter.processor.gui.AbstractPreProcessorGui=org/apache/jmeter/images/new/funnel.png org/apache/jmeter/images/new/funnel-grey.png org.apache.jmeter.processor.gui.AbstractPostProcessorGui=org/apache/jmeter/images/new/mglass.png org/apache/jmeter/images/new/mglass-grey.png org.apache.jmeter.control.gui.AbstractControllerGui=org/apache/jmeter/images/new/remote.png org/apache/jmeter/images/new/remote-grey.png org.apache.jmeter.samplers.gui.AbstractSamplerGui=org/apache/jmeter/images/new/glasses.png org/apache/jmeter/images/new/glasses-grey.png org.apache.jmeter.assertions.gui.AbstractAssertionGui=org/apache/jmeter/images/new/pin.png org/apache/jmeter/images/new/pin-grey.png org.apache.jmeter.report.writers.gui.AbstractReportWriterGui=org/apache/jmeter/images/new/pin.png org/apache/jmeter/images/new/pin-grey.png org.apache.jmeter.report.gui.ReportPageGui=org/apache/jmeter/images/new/scroll.png org/apache/jmeter/images/new/scroll-grey.png org.apache.jmeter.report.gui.TableGui=org/apache/jmeter/images/new/table.png org/apache/jmeter/images/new/table-grey.png org.apache.jmeter.report.gui.BarChartGui=org/apache/jmeter/images/new/barchart.png org/apache/jmeter/images/new/barchart-grey.png org.apache.jmeter.report.gui.LineGraphGui=org/apache/jmeter/images/new/chart.png org/apache/jmeter/images/new/chart-grey.png org.apache.jmeter.report.writers.gui.HTMLReportWriterGui=org/apache/jmeter/images/new/typewriter.png org/apache/jmeter/images/new/typewriter-grey.png org.apache.jmeter.control.gui.ReportGui=org/apache/jmeter/images/new/blue-quill.png apache-jmeter-2.8/src/core/org/apache/jmeter/images/Open24.down.gif0000644000175000017500000000176012032647220024410 0ustar ebourgebourgGIF89a÷€€€ÿÿÿf33ÿçÍÌ´š·¢ÚȶžŽ~̽®º¤¢‘€äм¾¨‘Ç®– âλ¼¦í×Áª—…ׯ´®š‡Þ˸Ȱ—ïØÂöÞǯ›‰!ù,ÍH° A*< !#Jœ8±¡@Š1Z|˜±#Ä=‚ 9 ¤ÉFvªÛh—Ê /§N3Öë'Åhíûœý–çk²í&ˆc"l„…†…‰Š !þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/start.off.gif0000644000175000017500000000043612032647220024300 0ustar ebourgebourgGIF89a((³7<33f/X\†ÿrrŽ/Bš§3ÿ™Pò¡€€€‚­´°°°ÀÀÀøüÿÀÀÀ!ù,((ËðÉI«½8ëÍ»ÿàc„äD : ·”GT$*0fðÀÀàÆ‡Z‡:•K‡;0PA>C”¬PÈÂeƒ‡ 2ä¤.a8hh0€!Â\ÈA G‚8Ààlg¡N 2Ü3 £Æ$Á6¢$ñÆŽ Z^&59ÑUt¦£iiZ¸x0EP¦¤•~Úyäè(LŸ†0aÒ)àÔ&¸’Ý-©4¯¡¾!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-legend.gif0000644000175000017500000000547512032647220025325 0ustar ebourgebourgGIF89aÿçÿ% 9A V*g0n &}Š$“$ –!# '% .˜8$™6-'"8œ D"&,..*)J#)ŸM%+;5.) A,0D55231=1-W)1N,/£98954EŸ:; D6.U25=98£ ¤!H:1X58KB=5V:@FEZN@7FBACEBQC:JEDSD;)S(KKb"X ¬1­2-\*®: oSS*¯; yHO³>ZZ!h&%hZX#TUS0e+°B´EµF {PU^]./m1db:j7¶M c^]·N4r6bf/fg$&z(hhhcblnefdkj:jl/‘¿_pr5À`Ág }rrÂh |z(vxuÃnÂm«Ãs…zzÈrÅt~€}q‡nÊyJ›FÇ|†‡rP›M»•‚„“‘v{‡‰†˜…‡Žy’Œ‹ÐŽΙœGÕ’ Ñ” ¦“–ƒ …Ò• —™–֘י٧¨Ôœ±—›¡Ÿ…Ù  ¯®¦¡ Ú¦Û§é¹¶í©«¨•¸”»¾ ôü·¸ä¹ı³™Â— ÿ¾¸·æÀ¹»¸ÌÍæÆçÇÂÚ¾Á½2þ5ÿèÍîÍéÏJÿÙØXÿYÿîÓïÔÊÌɬزfÿgÿsÿrÿuÿÔÕ«ÓÕÒØØ¯ÔÖÓ’ÿ›ÿöåæê£ÿ¤ÿøç«ÿ¬ÿëîµÿÜÞÛ÷í¼ÿùîßáÞòôÓÿùôøôÚÿÜÿÛÿåçäãÿéþæèåþøêÿÿùðÿûü÷ÿøÿþþÿÿíïëôîíñóïöøô÷ùöùûøúüùÿÿ!ùÿ,ÿþÿýë§Ì͇¶ÐÚ'°¡Ã‡#JœH±¢Å‹¥ñq@C^ 1ŠI²$Å~³b0…¨&cÊœ±® ¨a &ÍŸ@1ÖZë—ÀaÅŠ1{&Z5lܼ ,—ŽÛI”G!›Ü²‹^Cœ@‰¶™À¡†>0‚DÉ<úO{þ#‡QÈÉ…éá +¡’Ç °í…J¡³ü ä°†?ÕB¦$Ã@©Dk&ó‚º ù·íC.'ÃI¨ÿ¸\-©ZšZãn8êø[Á)dqE—ä’Ë9Ù\”SÖµku¾R§¨Iàe±°l0¦¸Pˆæ»Ÿò ¶N×Vx¦§‘ ª@^dÀ&ËA)@ç¸÷ÍCEg²bþ§ÿ´¶@Ö®Ù&Ûn+ÌpÍ+{j€µ À À 0‘}Œî?/xÑ£Š Iºeªmð?£¾.…+üiºßƦ$—ˆ@²ÝRnáé¼Ào2¸@*ï«ã£Î6ò–£o<ú(\Äi$’ÉurI­Kçêô?¼Z—¥Ô|לo½ E‹qÍ+Þ @±¸E0æ§ž–‡rØ&€ï뎣¡—9xÚ|óï3X„÷Ðm\ ˆ(õ§†,~øè³à´¿3µˆ‚(Ï72g@ÎP’“H^Ð&=IY Û ç¾Æ?ÿt¤jS…úð5V$ +kšbG²ÃuŠSþ¥#Ý "¶7À-®oð2"€ÚDÀO)ÆóYòÒåiÅD{ž¬–4=æàJJБÎÓô‹L]óTø¥§Î• xŠ«Ú+Ð7­¡Œk^“û‘…+¥áǃÊÃ7mÅyxšâõ†æ?F Õ¹œ{×R@;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-0.gif0000644000175000017500000000052112032647220025126 0ustar ebourgebourgGIF89aD¥!ÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿÿÿÿ!ù?,Dn@Pøû ‰ÆcñZ*“CgŠdJ™Õ§•Úä^»Û°;—ÇçtV &¯ßmöwî­»át3ÞŽ†ëã{y}€Xƒr|ˆ‚\‹„‡w…“•‰d–ŽŠŒœš‘›lŸ”—¤££™žªn©¡ ¯†¥­°“A;apache-jmeter-2.8/src/core/org/apache/jmeter/images/pipet.png0000644000175000017500000000141712032647220023532 0ustar ebourgebourg‰PNG  IHDRrP6ÌbKGDùC» pHYs  ÒÝ~ütIMEÒ  Nï‹âœIDATxœÓ]H“QðÿÞwk›nÎ9kšš+1EMŠ(±œ}˜áEx!Ý‚BŠ‚P] ~jJDW…Ÿ¥Ó´]$•¤å[æÌ¯mæÖÜ܇ó5›§‹P6Q›=—ç9Ïþ<çpðu%«êDdhÜmíd-3Ú_£Ï4º÷½ÜÝB)‰ÙAA²£âtŠ¢C‚DÒcòØœ—#ƒÞ ”{>ædbvFXÈFšæI¼{"¡,’ã/”w©¶U.U¤rù…€Œ%šù‹x’áñ¸].÷ê‚ß”¨Íáƒå~Û€ÖËæ˜ÿè7V_óðy°ŽFmêâv»5Ìdã?1ipçfIÙÚ^¹ .ž…Ål…úñüFŸ]v”~ïîyó©‰ÙqBsëFÅZx„ç2”X°Ø!A‹¬0k)¨lUWUk^`G¬ªì‰ˆ ƒòÌ)ØmNðx{0«Ÿ[1™Œ%#_ù@•Ÿ¥7Ž{Öïo³¼´–(F!M™Š³â 1´3³˜šž¸Î0_Zz_©æ †9â=³å£­(½K¸ŽxœNK‚Ùd…D"ÁÌ„Sº‰¼Ž§mmïúW·š£6T–Õ®#™9IxÝ®‡X,ÆÜO´ú©âæÖ']“Ó?\Û¥ñ‰Y]^O<æd^NÂP¿4MƒeCm(êîéjyѧrnù`š Í*p$e?†ß΂Cqàt°³çÖÔUvjÆÇ–v‚|bÒ¬ÇÓ£Á|0€Ë£±hg!;l+|ÞÙ1àx-À¨]Æt ( Á ; +_ ï7´wŒ0Ÿíþ@>!k°˜žÀbpp$¿OÝÝ4:Ƹý…6°;Ejâ!nHÙ{íê®>¿wQ°/Á <ÿ?ZïÒŒøãIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/Edit24.gif0000644000175000017500000000233412032647220023424 0ustar ebourgebourgGIF89a÷ÿÿÿÿ±AT¾NaÀÀÀÎËðÌÉî×ÔùÚ×üÉÇëÎÌðÍËïÌÊîÔÒöÛÙýÚØüØÖú¼ºáÂÀ濽ãÅÃéÏÍóÎÌòÈÆëÇÅêÆÄéÍËðÌÊïËÉîÊÈíÕÓøÓÑöÙ×ü×Õú¶µÜ¼»âº¹à¹¸ßÄÃëÂÁè½¼ãÅÄëÀ¿å¿¾äÊÉðÉÈïÈÇíÄÃéÁÀåÎÍóÅÄéÑÐöÌËðÉÈìÈÇëÕÔùÒÑöÐÏôÍÌðÊÉíÖÕùÚÙýØ×û×ÖúÚÙü×ÖùžžÈ¨¨ÒÃÃò¯¯Ù²²Ü­­Õ¸¸á··à²²Ú²²Ù±±Ø¯¯Ö´´Û³³Ú¾¾æ¸¸ß··ÝÀÀ翿澾弼ãÃÃêÂÂé½½ã¼¼áÆÆìÅÅëÂÂèÃÃèÐÐõÏÏôÓÓ÷š›ÅŸ Ê¤¥ÏŸ É¥¦Ðª«Õ¦§Ð±²Ü­®Ø­®Öª«Ó©ªÒ´µÞ°±Ø¯°×º»ã¹ºâ™›Ä¤¦Ð ¢Ë¨ªÔ¯±Û©«Ôµ·ß+Z+8g8ÅÆFÒÓSƒƒ5ÃóÐÐÀ¬€@¹M«€~¸‹Ù¯­æ¼ºòòò³³³((( !ù,ÿ H° A‚‹$\¨°aAE‰ À!‹/*<4P¡B„$ \tˆÎ;BÔqSñТ‰ *”ˆ#Šbð”)b&Ï‘EDT$hÐÌ <3æš$kª<*”€¢=FÕX±Nš!Hš@q’bÐEŠéÙ£gëÈCFÚÈCEÄ(MħO[‘\°‰ófŠÀȸÁ Q >~k…ɉ(-T|Á„AE}øà6°,%XH˜aã‡iE“¶9¤ 4º|Hàcƒ|!KNJ1€ ^Ât¡ÀÁÇÂ'×>ƒ‚ 80à´ìÒÅ3ðf0DÁƒ b?=Ć ÔÀ#xdéÅ}ëðqáË è÷WI¿A€AYp¡ ~¬G[A-pÀ 1DpʼnüÈl"„C -øGM$$PFeXF&¶у-šÈ^Œ4Æ!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/warning.png0000644000175000017500000000177312032647220024063 0ustar ebourgebourg‰PNG  IHDRóÿabKGDùC» pHYs»»:ìãâ vpAg\Æ­ÃØIDAT8Ë¥“»kTQ‡¿9÷›»èfµ0Â[-R¦P‚ú(b£ÚHP›`#,U ¢Xi£Xˆ‹˜Xä/H+D IAâî5»ÙÝûØcqM¢`ÖUæœ3óßœ‡h­ùS½ãª}>}åœêIÐZÿÖ“9ët-E}|ÍUÄ­iå'Ï~½…´ï=­ÂI‰Y,%tEXtcreate-date2009-11-15T17:02:34-07:00¶çŽ%tEXtdate:create2010-02-20T23:26:24-07:00.ÃPÖ%tEXtdate:modify2010-01-11T09:24:44-07:00‘ßçgtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[`253"NPg$”Œ+1vdlnŸs–‚0svs8ˆP8p!;+B,O<+ž˜4,ž!;apache-jmeter-2.8/src/core/org/apache/jmeter/images/meter.png0000644000175000017500000000075312032647220023527 0ustar ebourgebourg‰PNG  IHDRrP6ÌbKGDxkŒmû» pHYs  ÒÝ~ütIMEÒ  ®Å4xIDATxœí’»/CaÀW®GÕm«4‹ÕÜUºŠØI ‘Æ® Ñ.þ&11‹]šHˆjBˆRZ½áÖÕûY\é+m0ò›Îw¾s~9ßþ’,ÎlˆßˆÖâ ’Õ\t–†~,R-'XË“ãóƒôô „@’¾§¨iµWºº• ÑòôáW\!3%ÏjžÜýzrn’8Œr‡ƒœ½—Âð$Ч¢T·ÖÊnnYKm [tÖŸn  @tÜo—°ºB¾Û‹£ôôTô¶TËâw[غ,ìNì°äí£`oE˜ïtÜoàÌd°†ÃÍ'+I%äw™ÑÈ;³{ÌÑæñPÈ=¢Qœwž=5ºO"SââìJ”“ÍfE0étZ†!ê™:æ·ª9f9.—‹X,F(" iZ£òÆ2›Í†ÏçCUÕ†u5wVßï'‘H Ë2n·û{²ÔùuÝÂâË+ùÇú{ueÛ›§Íý> R 7U³IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-9.gif0000644000175000017500000000306512032647220025145 0ustar ebourgebourgGIF89aDçü«3¬3«4«4¬4®:®:¯:®;®;°@±@°A±A³F³G³G´G´G´H¶MµN¶N ¶N½` ¾` ¾` ½a ½a ¾a ¾a Àf Àg Ág Ág Áh Âm Ãm Ãm Äm Ãn Ãn Ås Ås Æs Åt Åt Æt Èy Èz Èz Éz È{ ÐŒÐ Ñ ÐŽ ÑŽÑŽ Ò“Ó“Ó“ Ò”Ò” Ó”Ó” ՙ֙՚֚՛ؠؠءءڦۦڧڧۧۧâ¹ã¹ã¹âºâºãºãºÿÿÿÿåÀÿæÀåÁåÁæÁÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿçÆèÆèÆ*ÿ+ÿ,ÿçÇèÇ-ÿèÇ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿëÌêÍêÍëÍëÎOÿPÿQÿRÿSÿTÿUÿYÿíÓZÿíÓ[ÿ\ÿ]ÿíÔíÔ^ÿbÿcÿdÿeÿfÿgÿhÿlÿmÿnÿoÿpÿuÿvÿwÿxÿyÿzÿ‘ÿ’ÿ“ÿ•ÿ–ÿšÿ›ÿœÿÿžÿŸÿôæõæ£ÿ¤ÿõçõç¥ÿ¦ÿ§ÿ¨ÿ©ÿ­ÿ®ÿ¯ÿ°ÿ±ÿ¶ÿ·ÿ¸ÿ¹ÿºÿ÷í»ÿ÷íøíøí÷îøîúóÒÿÓÿÔÿÕÿúôÖÿûô×ÿÛÿÜÿÝÿÞÿßÿàÿåÿæÿçÿüùèÿýùéÿýùüúýúýúîÿïÿýûðÿñÿòÿóÿ÷ÿøÿùÿúÿþþûÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿ!ùÿ,Dþ±ˆI3§Ï¿ˆeUêà*X¸‚;8m[8vóÞ['íÙ­ƒ’ ÁáRå “#BvØ8c…‰RpÀÀ€ƒûræÄ2F ƒÿ=ÒÄÐ!¬\Rãv1ã¿|ä¤9ÛuR¡;\¨˜D"$ÈÊ0\‚À ‚‚pêÜÇÓ'ÐD‘ˆšr é1¥Û9½§®£-†F–üÉ 5ÂPADÌÌ V'2jêø9WîAV±x»ûoZ7qíèiL'mÕ’ Éáåà$D~|Áˆ 2(0  rÎ,˜élþ§(n¨¹ÿ@óFºÚéÔ͵~mÕNÖƒPŽþñ±Ûe²ÿ.Z”±Fô17É&øéÇŸ0ÉdÝ8ïØC :×ø$ƒäÁÅ&QD8°ô "pPÖYi½·V†làÑá"Š’ß?­ÌÒË0Èd7(ø>}¹vÐ%†ÜƶÙèÕA3¸PÂ×ZnaF‘GN‰’úÍâ ”&zS<*þs:×hùb!³iõO\ù /øæã?HPeBê¤Å›zr#”t2 *uöBL‰ÿL¹gŸX^Ík–ˆô˜þ„)A7Dƒ )€°AY $|[œÑF¦›VÂÉ(©äŠÅ(#å7çð¹¢4Í|ô%‡Èh¨IÌºÛ ¹¦™^ $@À…]˜1¬¦ÿ4RI'¤€ú+´øÒìAØ€SN<øhÄ¢ –’‡††G9þCà %€ .0pÀ¯ku!ìÔ&ž’ì¼´ürï?Ø@˯¿ÙD£ËAØ «ÁAèp . àØA@P.Å:u†{¢q%ìJ-Àà ¾ÐÊÓ¯Ÿ}­Êò!^ZžFÐ:ó 'Œ0á ÇsN>¿Á‡Ðÿ8‚É'¤¨rÐ+H+}6àœã4î´È*ÕaXë¬9ØÚ‚ͤ^Œ½O@;apache-jmeter-2.8/src/core/org/apache/jmeter/images/stop.off.gif0000644000175000017500000000047212032647220024130 0ustar ebourgebourgGIF89a((³"""33f€ÿÌ™fffÌ€€€™™ÿÀÀÀþþÿÀÀÀ!ù,((çðÉI«½8ëÍ»ÿŸñˆäø ‡"ëš)&˜ì¦HÑ-C}&9w3;x‰V3e‰S\tEn99i‰|N("•€{Š‹‰b3((uKlˆl¦V/z|g}l%‡'ƒ¸¹º»¾¼( ¦¬º ÉȼÌ¿'оÐ<ÓÈÄÃ¥ÃÙEÛ½ËÉ'ÄãÎEÌéæåá1¬êäáÎç Öæ½¿ÄößÃãÝäk7°Â¸‚­D;apache-jmeter-2.8/src/core/org/apache/jmeter/images/icon_success_sml.gif0000644000175000017500000000173612032647220025731 0ustar ebourgebourgGIF89a÷ÿÿÿ„™º¦¶Î§·Î¼ÈÚÇÑà¿ÈÕc~¢¡±Çßåíw¬™´¦¸Ë—®¿³Ã©½ËSq‚*/‚¡­%(#8='*!37,/(CH'AF&>B/2*,)FI"!Prkœ¼´¢À¸j•†„¬œtœ‹¢Å²FcOƒ­7G;ÅÖÈÈ£¬Ö©·Û´¸ß²2B.²á¥³â¦·ã«¸ä¬¸ä­ºå¯¼å±Â€¶ã©²à¢²à£œÎˆ¬Þ˜«Ü™©Ù—«Û—]•BÎ…¢Ô‹©Û‘Í„­Õ—]”>¡Ô„çñሻf“Çr¿mˆ¶jÐæÂøûöbœ7Jw*U‡0WŠ2•ÑiÔäÈmª;Ag$r³?o¬=ež8fž8b›7ZŽ2YŠ1S‚.Jt)Qy1‰ËW…½Yu¤Qe‹FcˆE—¹{›½{“h­Î×Çîóê„ÊGv·@uµ?k¥:hž7`’3Jr(ÃE^‘3Q|,S~-Dh%}¼DEi&‹ÎQ²Å¢ÖàÍÏ×ÈãëÜIm&Qx+Ot)Mo(êïåLl&Ig%Gc$õ÷òþþþûûû÷÷÷ÿÿÿ!ù‹,» H° A!,X E aCF5pAÆ *01#†"NT0è‡A˜ ¡ =†Y²&€ NR¤I’1ÅÁbà€JðÃ'À:oŒ8bŠ˜3‡ˆ-ÃeË“‹„у™>Ô|‰Â¥ (ØÌq£Å‹•4häÔ±(Ћm®TÉ"Jž;*d(Å"4l¨p ,Pø°( ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-warning.gif0000644000175000017500000000101412032647220025515 0ustar ebourgebourgGIF89a æGüüü(ááá‰:‹X(/ÀÀÀæææ5p! N.2y†y{ÕÕÕU27B#'ñîîL&+ ûûû“‚„!c 0I,0S26!ů²U  V °—š5 ȱ´T A L"'f C+.8 8#xIO •“øøøÖÖÖ)A*-V:>~qs÷÷÷©“–A |OU–†ˆlY49ççç–ÿÿÿ!ùG, i€GG% &#<‚G?'F4BG1FŸ Cž ¨ *!¨® )“® 32D´®E,7¹  .+¾F0/=Ã(;5¹96G:$A  >-‚@ "8Ý;apache-jmeter-2.8/src/core/org/apache/jmeter/images/feather.gif0000644000175000017500000000023212032647220024002 0ustar ebourgebourgGIF89a³ÿÿÿÿïó¸½Þ½ÖÐpÊœÿsZd)~Jkµ,OÈI«½8ëÍ…°ˆa|Û’(Fà…w‹º&ˆÀ`E$†Zâ¦@ädA!Ъ9ŠÕ`PQtC¢68¨”rÉdN5bqhÍn»ßpJ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-blue-legend.gif0000644000175000017500000000015112032647220026234 0ustar ebourgebourgGIF89a³aXXXo¢¹...™333ÿ!ù,° IËH˜ ‹“æÙv…`œl;apache-jmeter-2.8/src/core/org/apache/jmeter/images/start.on.gif0000644000175000017500000000043312032647220024137 0ustar ebourgebourgGIF89a((³7<33f€ÿ€€Bš§3ÿ™€€€ÀÀÀÌÌÿÀÀÀ!ù,((ÈðÉI«½8ëÍ»ÿ Q`IÄ@šåñ(*  Ë[Ã+®Ñ@žÏ‚*¾‚ƒÁB{w´‚rùp‚X…” ¼²Ñ©Ïz(–ËÅAaI3¸ßpC °ºTø¤~^yz|T(x{t†„sŠ•–Ty”—•C–x›–•I£¥•£«¯°±²³¶´º¼¾%À¹ÂÅ·½È·È&¶¾Ç½ÃC¼ÏÎÑ×>ÔÒÑÚ,ÏÒßÝÞÌ×κ߸éêëC;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-2.gif0000644000175000017500000000123712032647220025135 0ustar ebourgebourgGIF89aDÆ@ÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿ*ÿ+ÿ,ÿ-ÿ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿOÿPÿQÿRÿSÿTÿUÿYÿZÿ[ÿ\ÿ]ÿ^ÿbÿcÿdÿeÿfÿgÿhÿlÿmÿnÿoÿpÿuÿvÿwÿxÿyÿzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù@,Dü€ @@ '-49‡?Ž?’•‘@“”™“—›š †@!'.Œž«œ–­˜š¬±¯?¡£¥!(©:²´½®³Â“ ‡¹»À°¾ÃÁÏÒÆÉ@"º5¼¿ÞÐÎÑâáÕLJÚ.5;ÍŸÓäïãòèÙ)/ìîÿßàÑûaï}#øÙhp@p$0ˆ0Œ…fœ'`â…‡H¨ˆqƒÇÆx'#*€ð1ä 7z¤œÙð,A)±"“5Ò„H`%‡J°CfСiXǤ+˜:…Õ¡Ô2\b‚Å >º¢|J+;apache-jmeter-2.8/src/core/org/apache/jmeter/images/stop.over.gif0000644000175000017500000000065212032647220024331 0ustar ebourgebourgGIF89a((³ 11c{{{„ÿÿc1ÿÿÿccÎÿc΄„„œœÿÀÀÀõûþÀÀÀ!ù,((ÿ°ÉI«½xªöºÿ`(ŽÀ‘h*nꃼ0 BkªÈò,|¯Ûip=8@ ¦C•¨)ˆà ƒ@ðãAI,ÔŒc(°€æ GãGâaÖ6×”UõœíYzo#UX€0‰(apU YZi?@@nb. I[jkA${pU ‚I£;J¦#¨‡ 4/®:˜)$U 39.™…œ“­3<ÇO›S U N¡ ]¥Ñ´c± J»¥³+†!Þ™×:­’´æ!À™ ë™/5"µ"9€n˜|ŒŸã’yrB7ªÉYˆz»Úí§{æÌš8w$ïÍI0‡J°ãðg$OFÿãµj³#Ñâ!° †±Wж-$ ”*[H;–“z²ðßœˆKÈ€ü 3pø84Ä9ôCaΰ¡Ž=¸Í@;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Edit24.off.gif0000644000175000017500000000233412032647220024175 0ustar ebourgebourgGIF89a÷ÿÿÿÿ±AT¾NaÀÀÀÎËðÌÉî×ÔùÚ×üÉÇëÎÌðÍËïÌÊîÔÒöÛÙýÚØüØÖú¼ºáÂÀ濽ãÅÃéÏÍóÎÌòÈÆëÇÅêÆÄéÍËðÌÊïËÉîÊÈíÕÓøÓÑöÙ×ü×Õú¶µÜ¼»âº¹à¹¸ßÄÃëÂÁè½¼ãÅÄëÀ¿å¿¾äÊÉðÉÈïÈÇíÄÃéÁÀåÎÍóÅÄéÑÐöÌËðÉÈìÈÇëÕÔùÒÑöÐÏôÍÌðÊÉíÖÕùÚÙýØ×û×ÖúÚÙü×ÖùžžÈ¨¨ÒÃÃò¯¯Ù²²Ü­­Õ¸¸á··à²²Ú²²Ù±±Ø¯¯Ö´´Û³³Ú¾¾æ¸¸ß··ÝÀÀ翿澾弼ãÃÃêÂÂé½½ã¼¼áÆÆìÅÅëÂÂèÃÃèÐÐõÏÏôÓÓ÷š›ÅŸ Ê¤¥ÏŸ É¥¦Ðª«Õ¦§Ð±²Ü­®Ø­®Öª«Ó©ªÒ´µÞ°±Ø¯°×º»ã¹ºâ™›Ä¤¦Ð ¢Ë¨ªÔ¯±Û©«Ôµ·ß+Z+8g8ÅÆFÒÓSƒƒ5ÃóÐÐÀ¬€@¹M«€~¸‹Ù¯­æ¼ºòòò³³³((( !ù,ÿ H° A‚‹$\¨°aAE‰ À!‹/*<4P¡B„$ \tˆÎ;BÔqSñТ‰ *”ˆ#Šbð”)b&Ï‘EDT$hÐÌ <3æš$kª<*”€¢=FÕX±Nš!Hš@q’bÐEŠéÙ£gëÈCFÚÈCEÄ(MħO[‘\°‰ófŠÀȸÁ Q >~k…ɉ(-T|Á„AE}øà6°,%XH˜aã‡iE“¶9¤ 4º|Hàcƒ|!KNJ1€ ^Ât¡ÀÁÇÂ'×>ƒ‚ 80à´ìÒÅ3ðf0DÁƒ b?=Ć ÔÀ#xdéÅ}ëðqáË è÷WI¿A€AYp¡ ~¬G[A-pÀ 1DpʼnüÈl"„C -øGM$$PFeXF&¶у-šÈ^Œ4Æ!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/SaveAll24.over.gif0000644000175000017500000000041312032647220025034 0ustar ebourgebourgGIF89aóÿÿÿ€€€òòòžžžnnnaaa ÏÏÏ‘‘‘ÂÂÂ!ù,¸ÈI«•áê2à1ªšC'B$J²$éaãÀ‚¸ŸBH‰†YË#"™ª\ òe´]NÛÃ.%ÕÂm¡'Ûσ­Ý¶ïîíKí‰mÑZ¼–`#O#jJ@U;c‰;U}m ‘“’’>†Lvƒ›„W3n‹c]˜`š‚¨J]ŸYŠ®¤h‡§œOhC¬¡®6¤² %©‚h@TGÉE"0@´Š.ÕÖרÙÚÛÕ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Delete24.over.gif0000644000175000017500000000034612032647220024714 0ustar ebourgebourgGIF89aóÿÿÿ€€€ÌÌÌ333™™™fff!ù,“ÈI«•áê2`¤hv’9ì ‚è'tmßa ë†`ðÀƒyv·dM¦Ûõ~À!yt€„¡`(e‚æ p½j¹Þ¢1eÅž»ß\u\ÎnáêðœW§Áb|nwrltƒhqk`‚f„‹z‡ŽvŠyd‰x€{™–œ“O?B‘J7¡`†°±²³´µ¶°;apache-jmeter-2.8/src/core/org/apache/jmeter/images/New24.down.gif0000644000175000017500000000215212032647220024234 0ustar ebourgebourgGIF89a÷€€€ÿÿÿ òòò¤¦Ð™›Ä¨ªÔžžÈ­®Ø¤¥Ï´µÞš›Å©«ÔŸ É¯¯Ù¥¦Ðµ·ß­­ÕÃÃòª«ÕŸ Ê¯±Û¦§Ð··à­®Ö¾¾å³³Ú ¢Ë±²Ü¨¨Ò¸¸á¯¯Ö¾¾æ´´ÛÅÄ뼻ⲲܩªÒ¹ºâ¯°×¿¿æ¶µÜÆÆì½¼ãÏÍóÅÃ骫Ӻ»ã°±ØÀÀç··ÝÈÇí¿½ãÏÏôÅÄéÕÔùÌÊ㱱ØÂÁ踸ßÉÈïÀ¿åÐÐõÇÅê×ÖùÚÙýÎÌð²²ÚÂÂ鹸ßÊÉðÂÀæÑÐöÈÇë×ÖúÍËðÛÙýÍÌðØÖûÄÃ뺹àÌËðÂÂèÓÑöÉÇëØ×ûÍËï×ÕúÇÅé¼¼áÎÌòÃÃèÓÓ÷ÊÈíÙ×üÌÊïÖÕùÎÍóÕÓøËÉîÚØüÎËðÆÄéÌÉîÚÙüÊÉíÚ×üÉÈìÒÑöÈÆëØÖúÐÏô½½ã×ÔùÄÃ鼺áÃÃê³³³!ù,þH° A*< !Hq¢Eˆ ÄH @ ?N,€Q€Æ‡ 8€ ‚ :Pò$Ç <€A„tÌèã€,\ÀAÃ@…ݱc@„1‚D  G!ÚLiâŠ*V°háâX±E«€CÆ 5lÜÀ‘C‡Ä&ã 8ºƒG?€2D‘"aÇ èhä’$J–0iâä ”(C%•2…J+W°dy’EË–È‚;réâå ˜0Ežˆ“10ÕÁȼ(cæ š'% LE99@š1jÖ9ÃfrÊæ‚jó¸›7U›H+—Üq5,p‚$—ú1{Öq„È™3ùoljäd¡S‡Œ;‰ÄžhxTDQxÊ'˜I5è‘u3‘ÔQB Uhá…f¨á†;apache-jmeter-2.8/src/core/org/apache/jmeter/images/icon_warning_sml.gif0000644000175000017500000000110012032647220025707 0ustar ebourgebourgGIF89aæÿÿÿ¸œ§º¡«b`awr}“ޤ˜ º¡¨¿¬²Æ~ް„’²j| £¯ÇfsŠ„™º§·Î·Ä×ÄÏßËÔ⣴ÌÜãì[M@Kƒ? àk®T£N ”G J$ùwñsïrêpÛi×fÖfÔeÎcÍbÇ_¿[¼Z°T©Q¤OšJ E D E ƒ? i2 çnämÃ]¹X·WµV•H ‰A €= h2 ]-Ëbùzù{ìz&«Z¿i&×iù(Ëj&ùƒ1ùƒ2ú†7Ìm-D2%Ìp4úŠBúŽIØ|DÌu@ú”Yú˜aæ\Ì}R׈[¦v[úmI:2̓`û¡vû¤û§ƒÙ‘s=.()ûª‹+*û­‘ç ….!Ó—<,&é¤5&!:*%²‡y*Švp묜*,-¨‡‚š~zÇŸžÿÿÿ!ùv,€v‚ƒ„…† †…oae‹ƒd][s’v iT ‹u^PW†\Z¥MI…gXU¥GAD„SRQ¥?4ƒVONK¥)#C‚nJHFE0=7'6*v B@%¥+8, l !5"9¥.:/Lt"$&(-3:øc‡ Yìø‚f3càÄ‘#¦ ;;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Delete24.off.gif0000644000175000017500000000037112032647220024511 0ustar ebourgebourgGIF89a¢ÿÿÿÿÌÌÌ™™™fff333ÀÀÀ!ù,khºÜþ0ÊUêŒ%èrù`(F  ªC ‰p&š²åüB ‚€ÐÒíz= è¢!ÁaQRz*¥Í£ïÊ4>ªÛh—Ê /§N3Öë'Åhíûœý–çk²í&ˆc"l„…†…‰Š !þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-7.gif0000644000175000017500000000265212032647220025144 0ustar ebourgebourgGIF89aDçÇÐŒÐ Ñ ÐŽ ÑŽÑŽ Ò“Ó“Ó“ Ò”Ò” Ó”Ó” ՙ֙՚֚՛ؠؠءءڦۦڧڧۧۧâ¹ã¹ã¹âºâºãºãºÿÿÿÿåÀÿæÀåÁåÁæÁÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿçÆèÆèÆ*ÿ+ÿ,ÿçÇèÇ-ÿèÇ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿëÌêÍêÍëÍëÎOÿPÿQÿRÿSÿTÿUÿYÿíÓZÿíÓ[ÿ\ÿ]ÿíÔíÔ^ÿbÿcÿdÿeÿfÿgÿhÿlÿmÿnÿoÿpÿuÿvÿwÿxÿyÿzÿ‘ÿ’ÿ“ÿ•ÿ–ÿšÿ›ÿœÿÿžÿŸÿôæõæ£ÿ¤ÿõçõç¥ÿ¦ÿ§ÿ¨ÿ©ÿ­ÿ®ÿ¯ÿ°ÿ±ÿ¶ÿ·ÿ¸ÿ¹ÿºÿ÷í»ÿ÷íøíøí÷îøîúóÒÿÓÿÔÿÕÿúôÖÿûô×ÿÛÿÜÿÝÿÞÿßÿàÿåÿæÿçÿüùèÿýùéÿýùüúýúýúîÿïÿýûðÿñÿòÿóÿ÷ÿøÿùÿúÿþþûÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ùÿ,DþG´ áÉ¿S´Yç =ƒE:èÉ«[¾ ³ÕI“ ƒ] ì8âà 8h¬eK–.Át9ÂEÿQÑR†¡Ã=„$ütêbÆÄ^uÊdèà(BN|09¡ƒ•ÿbÊÌsfËš7sRáÒ3ŽC>A% µˆë¨°ZŒ2²ä¿ 0àu«Ö¾#^Ô’äàØ²ïð9ÄHí?O¨Záú¥‘V'KMÿu‰Ò㇃&"òÿŒH¤‘(вIfaˆ¤ŒwUðÀЈœ2àå–`œáåñ#$•ˆ¨Š,E Ø &ý† >™s²§\1¡ƒžZþƒh¼æ?yü‘¡² ,¼ £Ñ€‰K†ñ)<9Ü@X噿ia1FoJꊠúÏ(‡¶ú*)œrУ´Ây+ØÙžV(̃M ±ÆæÈ"\’꡽¸z$\kN+…‹!WAtj{i¦3èpD¸ÿd1†oÔqç¦{P)«ÈÒîw¹Èæ¼,ÔçœèëWL;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Delete24.down.gif0000644000175000017500000000034712032647220024711 0ustar ebourgebourgGIF89aó€€€ÿÿÿÌÌÌ333™™™fff!ù,”ÈI«•áê2`¤hv’9ì ‚è'tmßa ë†`ðÀƒyv·d-`Líz?àÇèž á@( ĪõˆÕr½àbS6 d³ço8Gn¿·]¹zì´›óibW~p€sk!8¡¶¬£&-=3*6‚"¸¢):;5 ¶É:,091‰¹$!/Š¡B#+'’A.ê42ð<õùúõ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-6.gif0000644000175000017500000000254412032647220025143 0ustar ebourgebourgGIF89aDç«â¹ã¹ã¹âºâºãºãºÿÿÿÿåÀÿæÀåÁåÁæÁÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$ÿ%ÿ&ÿ'ÿçÆèÆèÆ*ÿ+ÿ,ÿçÇèÇ-ÿèÇ.ÿ/ÿ0ÿ4ÿ5ÿ6ÿ7ÿ8ÿ9ÿëÌêÍêÍëÍëÎOÿPÿQÿRÿSÿTÿUÿYÿíÓZÿíÓ[ÿ\ÿ]ÿíÔíÔ^ÿbÿcÿdÿeÿfÿgÿhÿlÿmÿnÿoÿpÿuÿvÿwÿxÿyÿzÿ‘ÿ’ÿ“ÿ•ÿ–ÿšÿ›ÿœÿÿžÿŸÿôæõæ£ÿ¤ÿõçõç¥ÿ¦ÿ§ÿ¨ÿ©ÿ­ÿ®ÿ¯ÿ°ÿ±ÿ¶ÿ·ÿ¸ÿ¹ÿºÿ÷í»ÿ÷íøíøí÷îøîúóÒÿÓÿÔÿÕÿúôÖÿûô×ÿÛÿÜÿÝÿÞÿßÿàÿåÿæÿçÿüùèÿýùéÿýùüúýúýúîÿïÿýûðÿñÿòÿóÿ÷ÿøÿùÿúÿþþûÿÿþÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ùÿ,DþDÀ ‚Å¿7| yBå –/gàÔ9(H¤M¢šÒÈ™ƒAh|X@à ª“'M¢T¥eË“$daðI:ü‚FâÁA‹.fü‡jR >jþ abÁ€—,ÿ­Œ:jÌ™5qÉYÅ!˜žv~Zä4ÔT¦Že@ÖYRêJ¨pÝ¢<0!‰µr=¸Ì8aÿ b‰Ó(˜éIú/H Ä­*7eeUêŽÀû/ÇV(]ÿõ]'0!†5VRÌxi §“ß^†šÙ®‹ƒž“@±rK˜5rä‰ÔATg‘*­¢A€Ø.g_N@A‰Û…(ÙÝûw<OþKòTêx&CÊÿýbè–)O¥¾ávÚ£ðþÇE 9wTH#ã÷O*g-v5˜ð€ðQ%ÛT TPß}B,¡_ob´`xPòIyÿ˜r‰! ªGdOI'ß„+%`a /´ÃLHq‡lÌÞ?ŠH"‚†üÁX"9¡‹0FG¡Ðh#KHÅA]tHG:bɈæÂÇGÿaC{-¾èd“'1PA”5þÃLL±ã?]ŒÑÆ–ò% œ¢Ñy)1 ¤É¦„k¢Ä”*ÀpG41Å•xŽáŸÿâe ƒ"H™‰è’jÆ·(t B C“a)¦]ñ{ôée(‚–x–‘¥Úà`FȪ+ÀúOG81Eya+®%òˆ%¼× zG ±L6ª*J;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-dead.gif0000644000175000017500000000101312032647220024744 0ustar ebourgebourgGIF89a æDüüü K>7L?8 ááá.&" EB@‹Š‰gca#NA941/:75ÖÖÖ# 6-(ðïï,)(€~ÀÀÀŒÕÕÕ7539528.)øøø»¹¸HEBQC< PC;¥¢¡%,*)865E:3B>;=3-;1+IGFc^\æææB70ççç¾»ºŸ›÷÷÷DA?ûûûxwv<98@=;/'#RD<ÿÿÿ!ùD, h€DD<6.@A)8‚D C($D2CŸ :5# §C B¨§/'“®Ÿ&%´§ ¹Ÿ9!¾-+7¾*=" ´D10 4 ,‚3?;>Ü;apache-jmeter-2.8/src/core/org/apache/jmeter/images/stop.on.gif0000644000175000017500000000053312032647220023770 0ustar ebourgebourgGIF89a((³"""33f€ÿÌ™fffÌ€€€™™ÿÀÀÀÌÌÿÀÀÀ!ù,((ÿðÉI«½8ëÍ»ÿž!ޤq€rjˆ€bb ªë¡€ l6( ¿r`)x†‘"@* J`N‹Èa<Ð!Žå—cµ?z-Aª°@àKÓ¡ 8ƒ&OˆCS5vAA1|\Š‹Hˆ"ˆ[QˆtH‰5hœŸ+ˆ+q¦_Œ¢‰*­:k°@Ž«gPR_¢Ÿ„y1™+k7‚ƒ<*«=‰%UMÙãêëìíî ŽïôöîøõòúAþÿîÅ›2ðž¿}øúͰÇá¾5 LH„¢DŠ<(aAyARP(²äŒ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/jmeter.jpg0000644000175000017500000002126612032647220023677 0ustar ebourgebourgÿØÿàJFIF``ÿÛC  #!!!$'$ & ! ÿÛC  ÿÀfÝÿÄÿÄH !1AQ"a2q‘³#Ru¡±Á367Brt¢²%5bes‚Ñ$ÂÓáðÿÄÿÄ;!1AQa2q"‘¡±BÁÑáð#3R$4br‚ñ’ÿÚ ?ö]Pº›ÔÈ=6´Á—"Ù&ë&k«Cq#± ©n9Ï’ByúëKÃÝZç484g¹°«è6W+eÆ%ÞÏëÀäYŒ¡öWúHRB’~ãTÇ1ÅŽÜh¾cb²·'8ÈÍxD*Hî@úè‹îF3ž(‹ïrnÓbŸuZ ¨†ÂßRyPJIÀûª¥FéOÝüšX Lì€>&˶r.V¨sÒŸ Ie’ ?m}ŠOidÀ?âxŒ2º"o”‘ð6YdÜR¨WÚ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”Eæë楕|ö‚ºÜcèÛ®¬´i¸K³´ˆ AB$:}JÜ¡ÎÓ³Ð×[;aØà c¤9µ¾Ã÷}WÖêW- |Ùç_hùÍK·]t´)¶Ì‚ûl-•¸Â•ƒÁÁ#ÑÕ*ö4ÕÇ3H!öÛkÞÅh±ƒÛÆíÁ#ëªá7J£JônÍÔø7Ë“ú¢;åªK“¤IK…±³;vmVÐÏjÊšK½Í¶‹j–o´V'´{3˜l4µõ¾÷Ñgß›²êa~[ÖS­d²ÿ€ƒ jܤ¤ÒTH+äœüäÊ®,JÒ |ôÔñÉ‹ûÀ9ο22“n›,m9:í©tî…Ñ÷KœÖ¡Ï—=–™Æq¸ùØÉpwàã¸Mg:Q.&ĺýtåu³Y 3×b±¥ÌlY}ßt7vS·kìJ¿NÒ¶ý)§ul[Uåïs‘iuÄÚžx»à…âJ‰P·×çÛª)Û;BÓîÞöÐëÕsPâsb5Tž1™²4g×Ôhl¸ú,6¬LÙ4Æš¿Ä™,Üœ\`ë«yD-*(Ûœ€pò¬y©…4UFãžì¹¹ÔŶ²™õ®ªª©¥{[ìÀ}…†„^Æûߪ’K’o›“Ò­Ó'd-–¼'¶!ž8¾u™6zê‰,”5Å­Êü¡¶íq¯;žÊ‹ƒ)¡‰±½­ÌÐMÅÉ¿{9+•S ¬"`XZR’³•ùfº|Õý“-`!À.A%¼®G>GÉ`V{?kx¶=6º–­åQ(‰DJ"Qˆ”D¢%(‰DJ"Qˆ”D¢%(ˆFAEXÑZ.Ù¡loÚí²eK2e;6D™ŠJ}×T¥¥#=‡aÀ«µ•¬Hð€ €ð *Ö½Ðq\…¬õe¬Î]Þã§d[— Œ)¹$6¢ƒ°$¨¹Ù#·¤5³"u¬ßez–k>6:Öþª'Gô‚ lZuûÅâøü8̱)6)oÿé˜`'(#v²BIÀ?uE4¹œvóW¦ÄÞ×”Eó­737¥Zn2NWq–ÊœòCj*ÿÚ"ñBe«C)-'è*"²TΆéíêø˜‚KÉ–Ø`¡Ç‘€O§Ÿ¢-(×Qzë«®VËšâ¥D©mðBGË)RÚMMغ¥Õ½99µj·€•aæ^a :çµhŸíDV>°]ú‰t»Ã‰¥½õZ2çfméjD¸Ù+S›·:PJNÍœ qëDXúnȨ6ø«ˆÉšRÉJBˆX §ÌçQ¡ïXhý¨oú¾<‰Ò›’†m¬=1ÂÊ“Û)HÈ$žOE¨ê/]µtâ«mÍq‰R"Ûá „–R¥´š"œ±uK«zrsjÔ+nÿ*Ã̼Ât'ÏjÐ?Úˆ¹ëþ¤õEL¸ÃÑú…Ql…¨ÏElÂad%Èí¬ò´rTO$÷¢(™Z߯OÛ˜ ¾-–’¢“%¸,¤º¬ç[18ÂqÇ|ÑÌé¼×7+êôæ´Ù;{*v<ä¶–Ö q”¬$Aƒ€xç9à‹xQˆ”D¢%(‰DJ"Qˆ”E§½¡?˜ö?×M~ Õžz‹úª¯¥¿ÞÖOïŒ~"j‹¦…Ptdó1ÛSä}) ñŠ"žëÂ’4M¥µ€RíÙ¤sÿIÓü(‹«¦Pãĺ4l$ª:¹æ(Šª™m]/÷˜î¶“áÊy½EwÏ·ÇoS!ÀØÏ¹ÄOoHíáDVMA1zOÀ·ßöcí]sЉiÝGJP‹+ä}TE¶(‰DJ"Qˆ”D¢%(‰DJ"ÓÞПÌ{릿êŽO ½EýUWÒßïk'÷Æ?5Ež0ºzôïò?E“ÕéÊÝú¯Çz´—§®„±¦,³¼”ã¬(ý¹û¨Š8Äiå%òqš"ο+ÜgÛaci÷&ÖG¡$“ûMb_yÐDÿÍ›üQVkîaZß,È-“¸8QÇbˆ°ìš[ò;Ò"íOnVü¿“»ÏTE³t{­5¥P·J—$¨ãuLê.ˆƒ!QßÔ°‹ˆÆðÓž&ÌöÜS¾¼÷¨Ÿ,l =À_k•#"’Käi6è.ªR} :tÃ%™’¦•µµGgpW©#ÿݼ³Qø…;3]Ûo¡[ À11²NWlz©Ý7Õ=#«ç¢Ûb¸My¥¸ÊNÝÅ<)>¹ËÐf¦Šª)^ca¹ •FULÏi4e¢öׯE®Znƒ_î[ ½¦0¤1%Ýͽ$•øE¹î±±G¿Ä3ôjÅõ² ·F˜»H½éÈ·l!‡ÜOÆ–Õ¹?X>„`ýµé}Þýe°BTÛÕÖ-¾:FK’ñçÞˆµœ´7­/æÉÓ#·àÒÂdÝŸËP£ œÝÖpïê;×Ä[u;‚@QʱÉõÚ"¿Ý!é‹­ìFT£oˆì¯ wb ¶ƒÏ'ûkå×Ð.l¼Úïµ –ÖÍ‘ä^š§rò¯¸)I^ÓwEß4¢òâÛ“¡³!hOd)h )î{GÙ^ÁUÜ®!jÿhWaŽOçwBÀù]ü£“®QUW4¢Jï@žþöÉû– RgŒ.ž ÚþGè²:¡ý9[¿SµøïV’╪ñÈ軲2¸oûÂ~ æþ*ˆ¡¬ÄϤž^R[ùœQ¨OúŸ2xx÷*ˆ—Ä“ T@$&êÙ?/Í("—ÑS¢Á¹²ìÙMFh²±½Õ„'•šü6¦¢¤ÉˆyEúwa4²áÑÔÕÆ×.ã_+¸j 8$” 9‚Ý6pú´‚¸¬c‚j9éœìÎuµêæ3v»móXÓºg²kÙ–{ÁvDH¤´eBRVJ¥n-¨q¹G/Ë$Šáíªü¿E±-`êγ¶µ¦:+ fµ0Ÿ Ë¥´çS‹øs„ãÌúzW¥ñ^4§³=Âó=7þ´j‰:’qQZméyE–òsñ3œð00|è‹Ñ–‹5ªÁkf×f·±) C, $숳è‰D]"³:ˆR¹™ ©¥T¨`þÃDÚ¯)[´ª,“¦Øî,*…¥>òPù‚>F³ä¸6]…&I# ÑnêµÓ@ÛSjzÅùbÞÖ|‡¼'çnv¡žÝ±Ÿ¨T±Ë¥ŠÎ­¢ÌüíT K¯5TµL¥ÚÓk¶[ʼ©YpîV7-JÀÉàc€ÚIõ#îŠJrÇ-ÉÓ›3²¯LKR»ÁÔ¯"¢0‘ûsöTP¶îº½‰L#ƒ'2¬ú£¦ÿé&¹©ÿ-{¯ƒ =ßÝ·îÚµ«víãôñŒyUåÊ«q¶ôŒ­<ô¹ :ҜَíŸ,úÑšéù°9NÝýôG;±îû7qýcŽy¢.KÓÔß5‚u*ï‚",–K‡ÂIÝ»xõôò¢(é×~œØ,S-Z‹W[Þj[›¶¡`¸•1„¤¨ç söW‡ÈÖ\me40I;ƒ"i$ôZžï¯4#Ðä@³ÏŸuSClE •ç¥ ÷î~*ŒØ•4 ;áªÒf \éDF" ë§Ãª©ÛzŸf³ÜÄkurPŸåŒ‡6xgФrG~AmDÌ@ÈÌÑÆOãûè¶ßÂ5…Ñ9®¶àn= ´ïðV+¿´>¡zÍ2Þõ²ÌäwÛSaÈ¡ÇP¦È))# ŒŒyõE˜´ò>ÍŠÝŽ…_¥àÉd‹ÚÈû7¨ þª•dê´«5‘1fÙ˜ßÐ|¡³åÈÚ¢“Ÿ_¾¶ƒªË= „‘ç·É$à¹#p¼ã!ûÀ\_¡×M}:•tÕ.7ζÙL|ºäu¹½dz àÇ—Ÿm˜E}kƒâ»KEí×Ì-Š^‚ž9#”ûWsÊà:°Ý×?]Џ5Õ$Ø›fu§zV’u§°—øH#)<Ü×CMÃõS´:à_nç§b±jxE­þe<à°øIסî¢S¡À€„Z÷Vå‚zZ·-•£Œ Œ’yò­º~Ñ’ÌûµÆÚ ]<Ô4¸Nd•sæaè-cÞ÷Xn®µ§­ °õ³ßŒ¢—?°«*'wÑ?¥š»?I.iCòå°#.Ú wת¥}š®¡õn–Î6¶èÓ^Ý«j¨A»j„Çc¶Ã/¥ .xœm œLöó­ª * &ôÕS4‹\;A¾â×+G âfaÔ®¢óyuÜ[U¯îлEiKXeÀ¦WÛh#öqU*8 †W{šAiÂÀÜjuÛB±*ø‚¦vˆÁÐ;tQ«™¨'¡ÖcÆu-âíÇ`Nsõd£&+‹U±ñÑA’;çÔjï¹¶—–a5“‚Ó~«&6•»Üì©RJv68䩎>ꆣ­ª{§Äg½Àq[Žvä ‡E~“©©}­aE³æôf:Ë­tÝįað'1%!Ðܤ¤«ŽR¤ÃëÇ•pµÔæ’wC{±ê9,úú(gu<»˜:‚®Ú_©:ïOÞ!3yºI•nk”EŽàa‡ÆÒ‘´#‘‚älUÊ—³´íþ§°Ç¼Û|PÃÀ® ¡hP8RH>`äW n¾)jú‰DJ"QoQèûf£R$;º4æÆÔIlsEëÝQ¾0õrš­ôçÝÔtTy½(¸>J2ÈõsrOÜýõ_Ø8lVÀÅap÷ÚWm§¤ Æt.lÖБÝ1Ó’~ÓÛî¯B̨_Š4å7â® Ô+L£òA½[á)„x‹eO§zGé+œóê…J\Ȇ¦ÁcHù&~gjUAÏhš´‡no¨$e;X$9Æx=½{ãµF*#p%ºÛ±ZÏÀq(Ø$|&ÇnM½TÏÚgHFJÿ'Zn36çãZCmžqÜnýÜyâ¢mcÒciqèªëx[-ìÞ·ù\þ\ì´Õÿ¯CÔ¤¿J­vÇ2†‘m!e´ã¹Q*õýÜWºvÕU¸{0Z<—g‡p…#`ö•­/¿6:àzh{i­2F£Ôò#6n:Û´§ne­KHãéÈÇö†qšÜ“ƒêçŒJÙNSÓqÏ^ßEqØW‹òqùÇC}Ôqir^|2Žû`…E8RyÆÓèx¯”| Rd,×pëÏ¿uÒ@i!k›J\7iµŽûyõXû-‹Ž\iÍá%ØQý•wœçλ:>‰âímÈñ4ª3bTF+µ×nŇ—üO#­ï}V“ìèPñd8¸Àü'‡ãŸ¨Àïßš¹SS¸Ë9yÿst½ÏoÍdKÄ”Z2W’Ϻáãoo+i}ÖúŽ<Iy·cï'*Z?âHú*ç½Z—¢.Jæ5ܦWvpäz,©x°ÒIš[láÜr=× :ÞÒ€§á¶–‹£cñÏ!c=ÇÏ“õÕS„R‚ÿhÐ9»Ü_—ÆýÕzž/×};-›ÄÇõú¨‡µæe¶¢äe``íé<ºþõ]lÆÕ”3ÀܵíIQóú³_?ˆãõ->ÍŒ”ô½·Ô^×=þqC‡ÖÕekZNc§sºcD_f-µK˜”$çâ*äg?å5ð¬J¬‡ÕÔîrîN×ò–Í? UÊFk »/¨¿ä¬6ÞÙÛ2_Ÿ%Ç[ae8'ÏoX‹ /tï.±æzy.ª‡ƒ`9äĆ“òÝw5¦íVë?vPB“¸ˆ‚ž~ꯒו×rüoÅN)Síòåûjðzwc^¢¶ß”Ê—½¯¡¦Ç‡)[BB”{ ØÇésš•a«‚†Ò„„¤yD\¨‰DJ"Qˆ¢u¢´ék‹ÕîZcD`d©]ÔqÂ@ó'’66—9}óf¯ë•¿R)Ø.j5éËBñ]b#ˆ\§ÚPãÆ~p’“…¸€Ü~'ˆHLthM7ùéožºs6¿ ewuLV¨ÑðžzivêË-•Çq«kï4¶ÂIØ Rß|•$€;Äò£Ä&"wœ¤nö‚ ÷ä; æ÷ìƒ$ˆ ¿‚¯Î¿X.qâ\íšGT!sò¿ Fr°)YáÁçŒã¢Âj±<&g5•1{MÇ«~ïMú’´©qzš@œäu–Ç÷ÒË[Ë»ß[—"e²ÀëC… wáHpÀ¤pO~Üf¿~¢Ä›=+j䣳ÏÞn>„\üÖ›q\eãí4±e_`mÛŸ¢úÔr«¢UÖÄgÖ€§’œò¡Øsó⯶¾³Ú‡ELƸxùwéõW#™Ô’\¹ÖX8x¬ð ÛŽãË犪ùq'74•- iÐåp;}TÔÜ3ˆJÓ<“µ¿zäòåÔ.kÑOs/êñä¨e)%kXóÀÁÉôÍFúz×ékwia½¯ç¦÷Sž¨¥÷œt7:ÚÿsÐÁ ‘ùÉWw””â­¤îñúý#óª_ÃØyjO25¹è:ù¯làæšY †ä Üÿkzžë½ŽŸÛÖó­ªC¥Y;²¡ˆãn?Ö_‡5ðÌ> ¶W’Oœú¹Z¦àÈæ{š{ÿ´w<ÝÔ ÌgJ´³"<>Ó›kÄpŸypãöüÕs&³5—kŸïÙj·†pÑüȘ\Ñ ¹>û­è:ù¬Æ X`lu«tw=Ù¤¬£%÷–<ÀÇí¯Qc}1±¶àtÜõòWãÁhiÀ{c µíâyä;Yd‡›m–¡Fm¼DG†9}C¿Ïh9?mzg±¹ ÛÌéOšºhZ)¢h÷¿îGÏ(Ôú¬…MKN…EŽVÔx,¥#>#ÊÀþ gæj…_73~jèŠ8\Æû± ­îó§ËA~W+ê]u’ÒþF K8£€]?ǹÇÌW6þ-‘Á¡¦úéߺœx D¯bqêãøîHî[-Ê–Ê­¼„É}jqÖ’w­)R‰(Ú9*#?çƒéXòc•sp Ó¹ü»¬Ùqj8iÝ’—]®Í&öó#@ÆÒ½Öz“ùE´I J^º6Ym˜ùÏÎõ-CË϶c’ú©šguš]Iü‚ã13cóý™»Œ¢ü›ÏÕß½–Þ³{4Z}Þ:uMõÙ…·ƒî3oG»!ÂÚ ²Wð1‚;zöž *™×v–×nÿÈ×qu`-s¬.¶ø-É`Ò:oL%ïÈvˆðÜ|…<òS— `,òxõ5¥L‰¡‘‹°$•ò¸¾Cry•9R¨×Ú"Qˆ”D¢%(е­tm¯\éµÙnªqÝâ4ãx%·6©![H)P A¨e‰²°±û/Mqi¸Z}Ÿgy6‡Q"Û~‰sZR Qq†”§¶FÏ=ûòsƒ[Gðºé¼ô僧›%›lkòKK^'x^ðP¥0œ‹;Ôäùb°¹¡­Ž@om6¸^ú÷76S á¾U­nš­×ûª<}11ž€€—¤4ÌXÉa8J¸N6ü vó“šì°ŒÂØØÃÞ5¹Úý{žånÓWá” Læ™dèEšßž¿%Èû?õmå¥ÁÖÚ‚@ \á¹±ÀÂBxû{ü³ÐωÖNn_cË·—E¾xÒœ>í„í½ÅÇüE¬ß™UY½+ê]²Þë²teÍl!Y,ÇÚ²áï•«vH'Ð ÖLßêœÚõÓ×™ZŸâŒ4C`â×(“þ÷ý?÷‹4ê|–S hkªX)Ø­¥ (a IVRœr2yô"¥“®µ™åä:/ â|/1ÎM€¶ƒq¥šÞêN§²ÉGJº®ùl/CLl4?4ÁRhÆ@ÉÝÉã·Ϊ šÂàIò×ðüÕÁÅxtnbo…ºå/Ôö¶žk"/Eú«p2æ—ʶ-×ÞBèÀÊ‚JAãÉÁÎ+ܵµ`G¹ÝÄÝUwáÏq28’í Ø‘±û­ØØ\žË2/Bºªô–›AÄ GŒ§ÛHa vHÉÆsÝÎ+ãjªâa1˜érvò^gâª;Üqu´÷E€èÀv<‹Ž½–oú¼uEô©— [ÐìØŸµ*>ªPI*Æx¿¦+&Hjä:ÉûòT¦ãx_FÂC¶öÿèî~_œ»žËÚÙ3#©ÛK¨Ø±â6–»0IÈÁ=¸ï^@ç {Eš8Ö¢ùŒ`,ÐÐtÛ}ü•Ä{,Û µê·Ð¤ ¢¤%'Ï“€}{óߊ 20,\Oï÷¢¢þ0¯qŒ»XmåÜÞÄî±²¬q%)cXºÄogÁ%ÆøØIÀ$ç$‚q÷W¯á± ‰?ï¦Êq^!—+n–ä;w<ÉÕY {4hæBî7‹ÌÙHIB^iñ!'(çžO^}·¦kKr^úëªÌ—Ä%xy”‹ h­PºÒÈ0ÛŒ4ŒY(oe)N’¬ä¨•¤H÷⮣i¸hºÌuD¯nW8‘{ïϪ¹Û4ÞŸ²´ÛV‹$(hm@b:Q´z (/}J•¯¨˜¢%(‰DJ"Qˆ”D¢%(‰Š"Qˆ”D¢%1ó¢%(‰D_1D_qDJ"Qˆ”D¢%(‰DJ"Qˆ”EÿÙapache-jmeter-2.8/src/core/org/apache/jmeter/images/icon_error_sml.gif0000644000175000017500000000176212032647220025411 0ustar ebourgebourgGIF89a÷ÿÿÿ ²±«£ q x v m¸;@’GJf46éÒÓ_ Á· œ › ‚ i [ ¾½¹·«¦ ˜ — – “ Š ˆ ~ } s q p n X V L ž  … ƒ  v l ¾~ ®Â"±",¢9?‚6;{6:Ždfå³¶ðàáÂ$¿'¿)©OWͱ³ÞÐÑÅ-Å/«*Ç"4À"3Øs}ôÖÙñÕØðÖÙúðñûòóÇ%8Ç&:È(=È*@È+AÃ*?É5H½=MÀM\ùñòÄ+BÉ.FÉ/GÉ0IË2MË3OÈ2NÇ%9J.F¯p«±r®N3O²v´³x·µ{»@-EL6RO8V08G3O1:bGm3=4>7 C5AgOx?2ME7TmW†|d™}gŽu²š„Á^Vƒøððèààöððýýýûûûúúúôôôÿÿÿ!ù,Ï; H° AJýéÃg’ÁN’Þ´YcŒ—* FrÃM™/]¨HI‚h $5iÎŒ³å “%B€øéTÉ ™0P8ÁÒ$À“2,Êã…‹•,Z(µ¤D‡ŒðL‰¢É¥¨@¡€¢;GŒÉák$<Hd‡ >`ê'‘!\2ƒ†?v°hp‰‡  uÚ@‹ .¨Xñà = q˜0 )f$Tp„"F¼ˆQƒ´ÁGrểCÇÁ€;apache-jmeter-2.8/src/core/org/apache/jmeter/images/knob.gif0000644000175000017500000000123212032647220023316 0ustar ebourgebourgGIF89aæÿÿÿÿñðôíëñèåìçäíæãëåâéäÞíãàèãÞêáÚìßÚéÝ×çÚÖáÚÔàÚÑå×Óà×ÒÞ×ÎåÖÍåÖÍäÕÌäÕÌãÔÍáÔËâÀÀÀÑÊÝÑÇßÏÆÞÎÉØÎÅÝÎÄÝÌÃÜÌÂÛÊÁÚÉÀÙÉ¿ØÈ¿ØÈ¾ØÈ¾×ǽ×Ç½ÖÆÀÑÆ¼ÖžÐýθÓÀ¶Ð¿¸Ê¿µÐ¿´Ï¾´Ï¾³Î½¶É½³Î»°Ìº³Çº²Ç·®Æ´©Æ±¨À¬£¼¬¡¿¬ ¾©¼¨œ»¦›º¦š¹¥ž´¤˜¸£—·¡–² •² ”´ž’²›°š¯™“§˜‹­•ˆ«”ˆª”‡©“‡©’†¨’…¨„§Ž¤£Œ…›Š}¡‰| ˆ–‡˜†yž…x…wœƒv›‚uš‚tš‚t™t™s™€z€s˜€r˜r—q—yrŠ!ù,@怂ƒ„……l4Z_ejeaZŠ!l†*=LRH8— Š$?SQlªl[ „1 9M[fXD+lJ†¤Š'l®ƒ Š6T`gid]¬&,ƒÌII]^]kâ';G…,>"/EI0¡õö l+B)H$l€AU[ m¡$‹˜2cžlÙRaFA¶¥°r†Ì4c®Pâ1ˆÃ6Uº<ìfM %œ JðA‘q8×p©8¤!3U°P¡Â„ („iq©2ظe ¶{X;Ì4iÔ¬a³´ªÕ«‚;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-healthy.gif0000644000175000017500000000101412032647220025506 0ustar ebourgebourgGIF89a æHüüüécDááá&g&*R*¨çççE2n2ì÷÷÷¯Õ¯ýîóî,],Inô;ÕÕÕ+T+ͱر“¸“n#yŽy:j:,ÖÖÖ“$ÀÀÀ"h"#X#5íZYM0ûûû 2j2ú5æææ®8——.e.)·(z(‚Ÿ‚øøøIšI†¡†O›O8¾q‡q4r4Øÿÿÿÿ!ùH, i€HH.;2/7 ‚HA65G1EH?B)GŸ 0 (  ¨G*<&#©¨C'>“¯Ÿ-µ¨$ºŸ!,4¿F¿D= µ "H+: %‚3@8 9Ý;apache-jmeter-2.8/src/core/org/apache/jmeter/images/clear.over.gif0000644000175000017500000000057512032647220024436 0ustar ebourgebourgGIF89a((³"""33f€€ÿÿÿffÌ€€€™™ÿÀÀÀÿÿÌýþÿÀÀÀ!ù,((ÿpÉI«½xžõºÿ`(ŽÝFžèh¦² ¬Ê¥®ÇàzºJÿâ݈§8ø àC"{=C c6‹½gO ¦¬ƒÖHÐr,°' hå÷Û ˜~g#€àà>Èth(j]Ip‹tix#u{d€z(l\ŸzU‘{šS£_ ¨R—˜)S€¯ƒRb|$†l  ‚‰‰^2,ËÆƒ]l¾…¤#ÃlS‚ˆµ(ªš³ÈS¿Õ1Ñ ]b¬Jì%ÖíÝð8Áò"jøúõ`üûþÁóB`;‚ øåó°0 A?èûgp"°w'æS¸ð!DŒ*&d(²YH’R,iïC|_2ìx±z6ƒ¸Ì‚—ÏŸ@ƒ 4;apache-jmeter-2.8/src/core/org/apache/jmeter/images/smallthread.enabled.gif0000644000175000017500000000007312032647220026260 0ustar ebourgebourgGIF89a¢ÿÿÿÿÿÿÿ,*ÀNH™;apache-jmeter-2.8/src/core/org/apache/jmeter/images/start.over.gif0000644000175000017500000000054412032647220024501 0ustar ebourgebourgGIF89a((³7<33f€ÿÿ€€Bš§3ÿ™€€€ÀÀÀÿÿÌþþÿÀÀÀ!ù,((ÿpÉI«½x¢õºÿ`(ŽÝFžèh¦ÝP¬¸²Ã Àñ7§Çcã¹ÇÕ;ü‚BN¬§0Þ‚ÃS±yŒEAµì£I¬JRÏÃ=P ßÔõÃ4»©F´:<*Œwü ž&­=nFY{„(fŽˆ'Šf7™^›’”•t" š›,–5™¤œ“`(§’­²¸¹* 'šº¹~½!¹™Àºs©^ÊİÎÊH%ÆÖ©ØÙ‰ÛÜÅßHäá:Øéë$í2è!ï"ó kõåìùåùðîýøØu¨w.źväø üdp¡À…ÒSçáC‚Æõ»˜ð¡ÇcÞÌÙ )2#É’B†©\ɲå°;apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/0000755000175000017500000000000012165514774023360 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/start.png0000644000175000017500000000122012032647220025200 0ustar ebourgebourg‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ ƒôIDAT8Ë핽kSQÆç&·XZ[ÁÔ`ý"Šˆb¥A ¤Bm‘"þ*ÅA:¹ânQÁ5“]êÐâ÷"ê`¬`¡r!ý”Ĥצ79çÜãà i‹I­n}Ægø½/ïìèKlf§FM]½OÑIrçòIñOÀ-ƒCfèö{ê›lÐ{˜yrS ƒ\:Û±¥ÖzÃ(ƒ.\3ÔÚE޼d9~—k©IójjÁü=Ø7È5ÍJN‘˸¸ßò„ÂYZ{Ÿ1e3:öÎ̤ó 78²„—/§¡Í i„ØÍó™NL›‹} Q5X%ÙϱÛÂÍhì`‰½ ‡5{ŽB¾·&ÝOcl•oŸš¨î` £@zxÊǬø(¤‚Œ£ÉÌ—Xr ÒÁ-¤YÖ‰œG¶¼áÑ‹O¦"X+‰Î–{^^Sp ÒóYrß=˜"ºU~Ô¤«ÈX)Œ)oÀþ‚C€0>_³¯‰Ó@¨ÔŽÉ5UÖ`×–ƒ¥‚P]€pD`‡,â =Ôö1û¡“6äjÿÆß–ƶÊZ˜~ÜÇý‘Ó¢ê9ö•ÊÇ B0T]r"LÜ;Ρś„n¾ Z£Šã¥@ ÙÅ0_ÆÎÓ+RLÞ}ÝmbË·¢±½Õœ8—¥¦Iàvñ}ö]‰Œ^éÛ>yÇú»Íá3fèú¸ÙyÛÖOõ¯âJ—lyIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/shutdown.png0000644000175000017500000000131112032647220025717 0ustar ebourgebourg‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜüyuIIDAT8Ëí”[hÎqÆ?¿·°­e+g9¤H1í@ÔL¤X² §4¦ÝJr9™;Ü(9MqgN+W’9DX©Å„² íð¶wÿÿÿý~›÷Âï(¹ñÔ÷îéÓÓóû}¿ð_[&—áìÁ.-s|¬ QaBk-óhhYkþ|x÷u5v´aCB„˜Œƒ"|‡Æõõœ»Ûl~ ÜTÛª†Žk˜ B‘‡ \LàEø£(ò#kê¸ðø¸W?jN)5«Z‰4ºÿ˜‚—ÝêŸ]¥ ‹”(Z¢àÅ+¥êö©‡iê¡H;Jv*'´vóI¥¦¬W²¸RñÂUŠRÃ’$§ëµÞÏY.ïù+IROè!“ÕA¾:)PåÌš1ðØà’Ôp†0nšÈ¢o]-ar˜üÒ¥,øÔɤò‚D‚G嫸ˆO‘FXEü¸)äŽd⸑ËÀ‹g<Ý´cŒçFu ÷?ôÑH> œàÌiFpÈà¡Ò3'ÆxªÎŸ&/#D„€ƒ”+ñ0i|Òøx8̽r‘âŠ2¼d’–ºzF)æU”³íêeÂlâœU¼É/À#ÈŽøÒpˆÑw½\ZQE{ëŽV®f ·—;MÍx€‡ð°¹ÿñÖÅ›ÕÐýDô!>cIÃb±ÄÈÃ2ÃT ·ç¯äî‡Çf\ ²½¬^{»nG "âÙdö»)ž,ÞÀ½î[æ·VzKé.í~y'û@6ÛiXDûO ã:BËö¨øë[, )ÄbHL_È£×mæÿÿwúŸFâa=IEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/new.png0000644000175000017500000000204012032647220024635 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYs × ×B(›x vpAgÜÅéX>IDAT8Ë­•;ka†Ÿ÷Ìl$ ^Èm\+ +ALÿ€M +;±µAL#*^þ„…XÈö¢‚šÆ€Vf›¸$‚H\“ÝdŽÅ\÷²Q?fæ0ßsÎyßó1â×ÎÚ¬€ Уšgqeß¿ ÌjŠ?¶Eur“Àœí–=½|©~#ŒjͰôÝÜ­›·†º·¡ý™¸ùš¶ãŒ°ñýË5'x³³6û<ìÞP¯× ‚wGRÒTùœŠŒØ+‚Ê0>tc™x‹Ç/®Ê,Z78dwwÜw€]L›HÛ¸&ÀÆ»#ÀÑ}ÁÈb&Ì@ ˆu˜˜I´³ íw¯ÑÚšGþk ØØlfÉ]B²"™ S@Ìq¶˜¡å§ µ@Ø~Éò×Dü h„ýÀfVhŒ@e&Ä®´g—3 V˜_úɹÓOÀç;Í*UŸ_d]¸âÁI4t–Íf…0ª5èæ=à ç§©V«]šRÈaJßÓîdIWÇ‚¾R¬®®&›ÜòöÉ»H=%ý gõg—Ëóêºg9O a Î7–š•h ²ô=‹§Å&ñÎÕ“ìÃÇ÷=I‰´¬±2öÏL_djjª˜aKMÄRã„0ÌÊSÒ+F_×××;ÆòIDy‚rgi\d±’y)0¡1Ϋ±Â¸”—YYœFWiެ8w=;Út—tÁ`GQÄÿX98Žã{ž<¸ó/°o+ëy·{©ð—ìügú#û“£Ïïý¾%tEXtcreate-date2009-11-10T19:38:20-07:00€}ñ%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T08:56:29-07:00Oq«›2tEXtLicensehttp://en.wikipedia.org/wiki/Public_domain?ýêÏ%tEXtmodify-date2009-11-10T19:38:20-07:00ßÌûÅtEXtSourceTango Icon LibraryTÏí‚:tEXtSource_URLhttp://tango.freedesktop.org/Tango_Icon_Library¼È­ÖIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/collapse.png0000644000175000017500000000115412032647220025653 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYs × ×B(›x vpAgÜÅéXŠIDAT8Ëí± Â@ EßI4Ù€š’2--# `ˆ–9`djZ„„û§ A`Š«¹'¹ùúz¶ …Bá'é3h6§¨3=C\7ïÁ"(Õ‡mËè"£)4I¯IÀ®;‰¹?ëíîÂæÂ&31¹p‡Õ² Gâaß]²_‘Ù/þ›Wb1Ûl½–%tEXtcreate-date2009-11-10T19:38:20-07:00€}ñ%tEXtdate:create2010-02-20T23:26:17-07:00‘¤M¨%tEXtdate:modify2010-01-11T08:56:31-07:00°4åb2tEXtLicensehttp://en.wikipedia.org/wiki/Public_domain?ýêÏ%tEXtmodify-date2009-11-10T19:38:20-07:00ßÌûÅtEXtSourceTango Icon LibraryTÏí‚:tEXtSource_URLhttp://tango.freedesktop.org/Tango_Icon_Library¼È­ÖIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/search.png0000644000175000017500000000302612032647220025316 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYs × ×B(›x vpAgÜÅéXóIDAT8Ëí•ßO[eÇ¿Ï9==ýÁ+гšµŒ•TVeÍpp,f‰“Ý4Ä;ÂÀÆ+c2wË? YÌ¢Ñ%¤édI€e 6]姬:Úa éá@•(´§¯‚A^ìÆø$ÏÕ“ïç}Ÿ7ï÷yˆ1†—ÜK¡þwÀDÄÑMžç“f³yÂáp´×G‹Ùlžày>ID7‰ˆÃô¾×ÝÝýA8×ÖÖX,«!¢Ë Šâ§‘H¤£¹¹™ …‚xxø)€/ÿF`Œý‘GôH†ÃáŠÇãa’$1I’ò‚ Œ ‚•$)/IóxÇÔä}|ŒÆ†T×Ô!•JA×ux<ž=§ÓYN§ÓâÎÎ:;;aáî|ö ¦<À³Õ%\´’ÁØéÍÍM2ºÝna*vm/à|Í)ì—M݃ÿrcp¹\ØÛÛãÀår!—ËAà€GS÷píJ¬&Âóí]LÅ몰°°ä|haÎrAE]%ÎÆÓh:[…bq?¬-#­P©T˜®ëOu]×òùüUUÉRØ@ËùZ\½è…TÖúnÚ®ŽýýÚÔò%žˆ®7yœFŽs5½ýW êO ilg¼,§WÔb±xG–åAQ¿PUÕj³ÙÜþ†³6hÏh3…Tz¯v^Cyû'°êWŒŸ78ÆX´DBéÒuå,ŠZ‚ÕŽP¨¦s͆asš¦ ...n,--e5M4 cÎt®Ù…Ú!Xí¨òúc‚—P"¡Ä‹‘çù¨¢(o¿ oœ¯¦í"±ñ‡ ÆÜÜÃŒÙl~7›Í~Ò­.—ëµÃÃÉîî.woW+_ca´òü6óÍbivvökÃ0"ÇV¶øÀ¬,Ëë‚ $EQ¼%ËrãI›žLY–EQ¼%BR–åu³G ËŸ,}r²1ÆŒ3"_¤¡ÿWÓqüìÒä=I×%tEXtcreate-date2009-11-15T17:03:05-07:00qÝé{%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T09:25:47-07:00Æ»®DgtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[ ”Ðù`O"‘x¼X,®/‹ëÇçïþóõƒO+·F[[[e>öͯï¤÷Èó«¬î…mùà#XÑ:<<<644TÚ²eË'ûûûoذáãžçáy›7oÞÔ××÷뻞ÞdYÕý¹Lšþ‹£ç‹xá¥ß³(—ø– ]Be¼$¸ÆÀÀÀÍb±˜ˆÇãÂó¼ù„‘Šð}‡Ó½ûUG×CÄ‹Ÿ_³êc]€8þÊOT*.øÄ“ß“ú8>22¢çóy¤”" CÇ¡Z­ŠiÒͬÉ"·!šÚVª ƒç%·•Š.¼õÛ¯L”hYºü€ÒÀ^ÿÕ={öìð}Û¶qÓLH$ˆÇšÉùÇ<ûét†Ë6‰mÛ¶}1 Ã’qëÄ–'hºzâ«ËŠíãóÓÓÓ³Çq¢(¢ÑhN§)OQuo Å$º•azz‚5íq†¯]¡ue…çñËÝÉÙ¾«Õ õÇ+òqFK%.–«Í=?;Œ8zôès…Ba«iš“ɤJÁDå³±¿²jÕ£\ûó5RÒÀ "®•ÊøšÆc;¿Ã•þ?EY­*¥—.#Ì${Ÿ}1x²^¯?iÆ&)¥Q!¥ÆãG°2çyï•°(ÕBÍöÐc&…¤MW6âúÀqr±º QØš:Ò!?xfk@:ŽƒïûÊó<‚ ¸ßÓ‘¢aYL y4Û9¢ÀÅ"×"L_CTk1 TQÒÑ–Y µ··/ŸœœLåóùEº® Ã0°í³Sƨ¤³ÐŠeÙhRP¯”1I\Û!Ë¢k’( ñæfñ¥À4$gÎ|Ðó¯kíܹsÇûúú~ÕÙÙ¹º»»{åýÞÕ°n_§|ç6‘‘"‹p]¯^á¡S ›ˆkDså FÌÀõß}ñ­½ý¼Ã‡°m‡êô·.`õò…d4›«cs”î4pI`9MqƒbJcS ݬãÊ$uÛÅÐ)Í{ó°qèСƒžï+Œž~™l&C<ž V¯Ó‘V¤œ ,·Áõ ËרLWéȈYk†Ò½†R—ÿŽOLN&›SÆß;Bx,+A†÷Ê3dÓI:5Ó‘Ôqk5æ¬ZàÑÑÞJ¾9ÝùØ™'6¯ü/¸¾ë©§6ÿý@Ô¹ ¢<ã€ëC#—5ïg6 bº ™LШÕhÉ&°m›\KŠd\’4 ʳÞð±¾áûðk?ÿ?Ý»õ™õK4íÕ¿]äS ¥Ok“IeºÆÒÅ9̘ÆÈ)ºò ™±¸ ¹ÉÄÔuŽËÂ\Š+Wn^ß·ïÁ´øáîÍ;^²àKRÈ/N –.ïˆfÆgdK{“(UènÏ2Z®Ò‘Ïâ9JB‰ïL±ne'å‰iæÜ€ËÚytÇ r~ÒÉßíÛž\³ºóíî%‹:êuG=òP—ŠIG% M ¢(™ˆaÛ.‰DŒBK3f2&tSMÉ¡m3YsX·¢«áÎêÛ{¢™Š%ý¸¦5߸=w¤«%WªúÑú]WY951mÉ«“j2Tà‡¸5òŒUóÂPï..Às=eÆuå[>®–ÞÜûŒ±B@ûÃÌ`ô9óÓ3¹¶`$2ôsžžµ$'C?¼'…°« ï^B§s²æVHÓFÊõãB©ËJáš-nˆÖ˜ñ>œò£×}¯rò±‹oF=C qÞ8û>±ø¤½¸«å¦k›C¦]RšvNòPÉ÷ïTê§l/x9N-ï;}aw÷Ã]ï‘85[÷Þž©9' mÙÚ©»½_ûѱ[bág99:Ê¿@Wä öàí%tEXtcreate-date2009-11-15T17:03:05-07:00qÝé{%tEXtdate:create2010-01-11T09:25:29-07:00!¶d"%tEXtdate:modify2010-01-11T09:25:29-07:00PëÜžgtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[?h @ "–B‘.›Ö¯C+MNNÎù”á;ᬪª*êêë)¸½ˆ«èʾ,…ˆå®n‡ºÓ§PJ±oÿ¾t @kÍÆMù³¶éºXBÄC Ê`¤Ã…—–PÿÄ|œßNà±@ºš`0H0DkÓo…1×uÑZc Ïg±ïhÝPãŒ!»s)&3À°Ã ì).æÎšÝx§¢µFk1º¬µ&B>Æ„%ðy÷MϽ’ÉéƒËÈIiâáo$ÓÃ’;¤ä‡Å‹)>ò J)”Rh¥+ÖZ#„@)uùöxà p¸á3ÉÛÏ“o»;ÕNt¼dúÉXg&!•ŽAµF3X±R*Ö'â2cbFÚüš y_òJ5üôk˜ÔänÖ—C䪻h+\„6ú_»ÊЕ¶ ;O1;e=[j${itä"Õ¯z±E6»Oñàìl´6(¥bœ­ÑJÄß9’û<ã¼Û9x¤ƒk ]­ìX yD »jâ¶©7q]ZRÅê1ƒkcP½R*´ 1.¼™`]+·zèê¼Èº ‹ìt?ÛÏbtÖroœ‚u1€Û+¬ÏcaŒaÚÍSMVVVÜSfÍâ,ûG¬MâRG JšYx¯ŸŠÍ×ÒÒ5œœñ9x<ž!ÙØØÈÑc?‹^ÅýV¼0·›¬ëg0¯¼–ˎìÉ-TÌõSùAõMùyéTÓwô Ÿ§Mü¢dr Å3Ëx¬|g›$¹©¼[îeõŽŸ„ü¼L|>_üý¡3tÅ€¸®KfJ3•ÏϧbÅvþh¤&¶R½ÌâÓï®áÈ™‘¬\õ4¥¥¥qeåÏ•cÛ¡Xmz¬=ÕÀQJ1"¡-oLeù[ŸðýqÃpˆ­Ë¢8êeóç0gN´··ÇWÀØ´4ÚÚ¼tvt ¥ì»Ä—G^&À†ê½ì9dHô»¼¿¤“Æ‹^^|Ï!77—²²2¤”„ÃalÛÆ¶m””` ƒ+%¦wÐâà™3&ÈYËW'²ñz kžj&11À㫆%QYY‰ã8„B¡8Ô¶m"RöNœAº.£FŽƒ½w—"ó¬]^ÄÁ;)ºeó^K$mìBB¡˜—ÃéqˆDzbÏRb‡Bq°x«j~ò¤)“:3R;EWëï´^òàI-Áø3ˆÊhl•ZÖ¨”’š/vÑ}ù2aÇaxRB.µÿÍ_çÎ ¯‹÷77ì‹îÛ¼kÿ¹Qg›lkÁ¢iøýNÿü÷îÚ+[ìBSÑhÇqbø¼ÝT.¼gųÞjŒá¿Œ h×4tÇ¿%tEXtcreate-date2009-11-15T17:03:05-07:00qÝé{%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T09:25:44-07:00÷S´ÙgtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[Û´óŠxMš¸°ò{Gæ¥IÞdí§¢¯ªÂ_ž Ð𱌹?mUüñ‰‘å©c}çâ RJÏß CGù¤AbQ'O±¶º"*ª¦Ðvt™Qåü#ig¼¿ç\ô¥¶C[1°ºÉ3óÈLŽ•i„‰¼$…æš!/4<Ö”RZ%º:mÚ³{ž:pôçÜOGhm¬|G!‹j¸.ØV–™¯oEQmXà.UØë{Wò[¢;NQ漟§Ö‰:Å£U“‰»_[b‡o«*!¾=¬¾FXÛ¬±®ahz”œ ÀË·œ¥û³ÓL-|ÏJ:†uø#'÷+ßõVsaÜIÚ¾txvò=¶‡©¼!lm„µ?7ÏкŽÌH¤¥PÌ3½ëh£ç£)ìßœÄn³Ùí'²ÛOuÐÉØ°HÇû\øªgk¥.ÁUY¸0ðÊù»h:ØÍ£-W ZùàËŸ¸ïÖ**jQ¬1\ö±åT M$ÖõÛJT‹¤4v‚ª “PÐZèq¦›”-ƘêâÒòr–¾ž kp¼Èc`šy,R ¨`s)8½*ó‹¶ÔlJ¼~_3 ?%³Qnª/Á…£X——9º@UMrjN¦r?nJÚà( ðâkÏmÄÒdÿl’V #†ašùœ\sëHwéï.À—U—-JŸ™Ó™™Ó‹o^2:9çõ{ož¬RÂb›öúYeæ¸ýþÚV>šfaêϧ)÷„èl’PÐJ×à8»‚¾â;~ÇÇĵÍ{=áö6wûóÃÂõÁPVùö£2›Ooœ':ÏÈ‹z·²>ê2“ž·Nó›æn[ ¼’æ†Zñßÿš~p^ÞŠIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/paste.png0000644000175000017500000000220712032647220025165 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYs  šœ vpAgÜÅéX¥IDAT8Ë¥’MHTQ€¿ûæ§,uÔqœ1AÉ]˜ 7a‘#Ò"³6íÜEn›ÁPƒ´ÉQN$¸­îÊEI.$ 1CgÆtÞó96ãxo‹çç9ã`]xÜûî9÷»ß;ç *Œááá@¯e{vrròÒQçDáK0ˆ¶<‹ å½vÞ~¢ö”ÊÓÕÕ™T¥ ßÐ4K'·‡œ‘·óg{IƒÈCàÑ>Ûm…|&%Õê{4o{hmõ–4Z]±þ}NÜœ“ Ц’ÚÝçï÷ߨL·>ɧCÛ\‘½&¾ìû¸ÝÚÚÚséÌœLÂúz‡¨j9gë®]ÂEÄ5=÷cȃ—gqÖØ©s84æ7; j“¾41F}•&ú¢1©V¢¤h â‹%–ŠPS-`1iƒ- ,k—a/3;sŽ/–HªÛJbâ÷zþç—/ßåÿÿQ;ýnÌ—ï3G†ºš'húÝ>”Vø¶z<žú#fî,ü˜þüÁê±¾xÓxŸ#Ʀ2;€O`ªñJÆd2‚·=Sœÿ]O꘡›¦&®s!ƒ+Gd’"zBȦ™ÝþkÉ«“—Ó“£\ÞR9H/º¹šÃPTíˆ+ʸ§­ÍuñFäDõ­Æ |ø“*"P‹mÜZ°ÑÕŸ`±ÿ5xlàÂæS—"½AŸDîj.¤~™áe¼0V^‡ÝáG¤aBŠã7õÝÝÝŠmÛ’ªª¨««»q xÏž‡Ô¡sãï™ÿDÐà §×Al8_–†ÿdìÕùíÓÕ÷öö†Ñå8N­iš°mÈ2pÛѽžÈ×ÇB¹5«ð  ¢»ÁçÌŽ1¿náSü‰íêêÎq¹É4ÍÎd2YkYO$D„奨÷òcRü‡†7ÊC5O/Îf#ªPâÀ¢6æÒÐa[:â¶ë¦^uÓ'£ ÆlÛf”RJa| üî[íR"¢Ñ|eû³” \‰#¥C&Ò333lÚ ËWý@ýÏ£g;ñRÿi0‘}ÆJ([Ëã”RÊc„ªë:Y Ñuþ\Í{Уæ²K#1â/r¬‡×;ÉC_}•ÒŸ»uç¦|ïlù}áy#Y±>¨î2D…$¹iš$NsY–©$I¯+ŠÒ¿ŽŒ—ÄcŠƒ@i„®©7ìÒJõ•֊ĹCµoŸJ9>ÊN*ú-!Ï55 ðÅ4ò“8lÀívC"Ëò{¡Pèµp8œZÏýÆ÷kùsX•\Ö>¬ª*ÿh©£ÏrCv§ÍÃrä¸)|Ì4ÁOs¢iÚU˲OOO÷´´´¤–Íqá– GfÆîþvó‹o/.›?¯(Ãbz‘érfÇAH¡×{V–å½ÍÍÍ» Šo1;5ï5«„ãÉ[¶åm ­GÏÜ+~ó¼EÜu\"!y g)Y745Ì®È6;::îgŒ}æ\y6³€y½Ùcþlï®úÆ­¿®ÈÝ€s¾KÅÕ6·9!ñx<ÃÅÅÅOUVVέØ6Àqœ(ç¢(Ý«èºþÂí ····ß`.Ëò³š¦655]¼“«“ÙSE1Ÿ1VÂkniiéÇÿ!þ´“åýcåIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/searchreset.png0000644000175000017500000000315412032647220026363 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYsHHFÉk> vpAgÜÅéXeIDAT8Ë¥“{h•eÇ?Ï{=ç¼çìÌ­mnže›·9#]Klh7)Vb$Hƒü'•AÒÌUX‰9¥RQ“%•¦f¦¨ÛtÞ6/›Š®å.móìrÎÙ¹¼ïÓBa„Ã|yþøñ|ž/_¾XÿŠâ+B¬B¤ él\Vc¯ä>G‚÷òÆ2{^0ðTù«^OÚ¨åÕêÂû«ª,.cFn"ºÆ´ÇæZŠ`}u…ªßرq'™DQ ÛÏcYrÆŒóK·­/îüØ<þõR1âG`Ç…ºƒÑ´Â9X9Sèo­£¨¤Ìcf°Öpù¾“’é"‚‘;–¬ìé¸Q}ôÀ·CÚ¨‰˜ÑÚu”Œq™®ù‹V¸sóÇÇD’GF RJª+Ôš®}“9ÉëN˲˜ùôó¸ /gßÞKïÏ-¶°ÅærÛ~k$QàŸä4¸ â}LY2s Ñ?NS÷Üv8ÒEñè€j+òõ-•bÑ–Ê{Ë[ØV)fIh(ž6>kò´"ªo¦qþy2ztV:—ÿºEú’"-/?“ª‰›[*Å‚{Šbûj±O }nz†?âiŠ{œa­(k C‰8×ûºûérž àö•Ò×ÛAýï"}½M‰„S¬’Wÿ7ã­«E‡É£?W¾Ÿ˜1:½'¦G‹Q°AâyPÅ4=膅Ëû(š§„?o\’'íÄcƒkG~¬’ÉaÁÿÎ>UýÀV凾م"ïÝ›BqI4ÍÄ4=¦M3Ñ5/º5„,äLí¯ÑkGCñxl5°#X%c¶®±òŠ7Œp÷.¤FÓ LÓÂ0-t=d ·Ûƒª§ƒYBÿ€Å¹Úý‘ë—êR:뇵Êpù(*m‘ÁT#)%’ (Êš Ž!í8"v ¿ëOkî|_<ÚÎÙÚúxW·slCÜØÞÍm šR¸ H)ía?H*"pÆâ—˜:ãa~LØœnlá«Í»©@b@RÞû¬Ãæ(G#%tEXtcreate-date2009-11-10T19:38:20-07:00€}ñ%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T08:56:29-07:00Oq«›2tEXtLicensehttp://en.wikipedia.org/wiki/Public_domain?ýêÏ%tEXtmodify-date2009-11-10T19:38:20-07:00ßÌûÅtEXtSoftwarewww.inkscape.org›î<tEXtSourceTango Icon LibraryTÏí‚:tEXtSource_URLhttp://tango.freedesktop.org/Tango_Icon_Library¼È­ÖIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/function.png0000644000175000017500000000262212032647220025677 0ustar ebourgebourg‰PNG  IHDRÄ´l;gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDùC» pHYs „ „ªâcy vpAgÜÅéXKIDAT8˵•AhUÇß{»›ÌlšÝMbZ$%(xQ‘*M ÛµŠ «+˜\ Bðê]¯ž•íA^I.–´Á‚^¼¨ˆ šºeÜÙÍfwæ=of;Û$ï½]æ?¿÷ñ›oàº$]AP Ãp°ÿ6+‚_Â0l/c®š8þ`³³}ž½o_(‘—€/r™ÿÚ[[[´Ã¥¥g1Ær̳ã‚- ¢‹"2\÷c81;›e!·¾¾n©×ëôz=;77'­]dðåµIŠ3”/”}E5*¾Põ…JIQõ… OóÚcwÔeHEûûûÃÒìî ƒ+»DFˆ­00åHSZ DF¬µÆó<›Ö}Ò³äß©ðò9– \>Ý$2 ¥\xú(õ+€Z£ÑøªÕÚá‹]ÇcÁ¢ˆ¬F% JQÊ1‹£>61ˆ¼\½?øœµöÚo¿ßBkG–"‚J)3s\ Däyàúçß F¬èlnnÒét©­Âäxb€ÃDDVÜÚYýÈøÞ'7¯<õäÝóOå§µ¢vÈÛâÊcÓPõ•³¡$”}aÊW”I¬P\:3_ïôé”â©#­ÐZ±ÛVØÏ"°*)XJ¨soo-û}~ÜŽ¹3m…ˆsVÎkÆf„ª¯(ûr¨Ç¥¢bmÙðóvŒ§âV,7ív›·VV0ÆPö œ"€rKr ënÄÏç­¼òµ~üVïÃò\6ø9kíõ?›M´ÖC¥´rÁ#{q·¥3@.—CDžnžùèƒâ§766¾Dõz,”•Ð¥#­qö°BƒÖÚ¾úé)ñçƒí¿?~¨ƒ("gBäõ˜ÂC†ê¸¢â+ª%†VT‚¤Æž°VÓòÓí&½¸5{¤¢;¡`¿($d*2Bš®q¯õì@ÿ½BpdraÀü¼ba&Ç£3ðÈ´æíri“WÚ:+hÞÁ^±|¥Ñ¸v»¬®®º^$¤r6ŠeØ„Dc Ýn—R©dåMN²ÍûÏ6¤sö?^ÀYÞÍ{žwbooï4£ß¼ì‰þi¯ŠÅâ7½^ï6ÀßÂiˆÐ8Ä%tEXtcreate-date2009-11-15T17:03:05-07:00qÝé{%tEXtdate:create2010-01-11T09:25:28-07:00‡Áo–%tEXtdate:modify2010-01-11T09:25:28-07:00öœ×*gtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[È4* Õ$&»F®¡90Üœó)šXÆ÷}^ß#TáúôˆHUPý¶ÕÅ`œK¤Ìˇåñé UQDÁŠb"k•H8Ø«»•0ýÁ$—Áy§…™=swÿPÄ1¥à"ó‡Ý¡zé˜ÒåìŠíM¤‚-Üí7kUàùÍþîÍÃFöý%©±\6¾š“«Qr¥ÿ£X.§›·0æ0q/ÊŸ×ð^4pAGW%tEXtcreate-date2009-11-10T19:38:20-07:00€}ñ%tEXtdate:create2010-02-20T23:26:17-07:00‘¤M¨%tEXtdate:modify2010-01-11T08:56:32-07:00Üÿÿ2tEXtLicensehttp://en.wikipedia.org/wiki/Public_domain?ýêÏ%tEXtmodify-date2009-11-10T19:38:20-07:00ßÌûÅtEXtSourceTango Icon LibraryTÏí‚:tEXtSource_URLhttp://tango.freedesktop.org/Tango_Icon_Library¼È­ÖIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/stopremoteall.png0000644000175000017500000000221712032647220026744 0ustar ebourgebourg‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ'kEÍœIDAT8˵”Ml”U†ŸsçëŒôgBK[  -C††@ ”؉ÄY‰ÑRl ¸pãB“Yi܉b m‰bb$&ÈJ…D%­¥ZÚBÇfHM™étZíßôë÷Ýë¢~é‚wu÷¾÷=Ï=çÂs’ü·èŠÝVÎ×çör«ç¨Ÿ(D)ÐZ¤hQŸ^]Q¯j·^Û¼c›yVc àzŸr¾hÙãœ;d /²1(Àã'«²tÃڙɮ<«±pNÝkŸýùèpüî‹Ùˆ.@™…( Q(=ÒÕÔßÿÔÚ~¼y×¼Ó?pÔ39UTZµ^kË#x³ÐÉ„±úq‡D­hÝ Hg÷1 òÙíLႵ(eÄIâ ­!Óµt±Y°>„”–ˆ[`úïñ¢y¡Y;ÒÁÌPBìþAìdRœÁ!¦;þÀñûqRi™¾t cÄÌËï â-_n|åÆÊõa&§Œäd›œ-›‘ì[1ÓÓÓcĵæÇ87»wæF4HO¿¶ÓâúbˆëBz '™23Óü(Eqqt^‰ÍÊeûÝ•ËzSé„C›´aÔ•Dü.CÓ“hŒ*©ÝÑC óJ,u[¯y´s ß¡5~óFÀƀơ¥²k·EÔ«uïV7ì‹ývòÛ tE›u2¹ÎxŒ#®ˆäå ëMU¬?ÿÄä\ÿªu—nï:fÆ'‹ŒÇqÅ¢¸8ª7†¶4ìëíüìH…óËÅS‰_#5i´QX^„²Ðš;ž=¯ÕËÎW7¿\cà‡GQ<®{À[4…ïTl¸`½ùz}þ†ª^@%ÒhÒh™Â¨¢²å k÷+‡åí7Î<1 ÿ§ŽËWE_l{IÝŽµšá‘J”2häå¦ôÚÕ‡å=gªËWiž§þ_–ÕÆ•݈ŽIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/save.png0000644000175000017500000000234012032647220025005 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYsvv}Õ‚Ì vpAgÜÅéX½IDAT8˵•K‹U†ŸS]Ý8BÆnf2ÉÈ'b¶¢xY«èï0àFÆxïÄM@˜à/PÆþ!;‘¡' hl$`Oì²».绸¨šêªi‚!gÑßénÎSïwΩàî<Ž‘¼õÆ›Çóù|;$¼ã†ƒºL€PB”Q¸ýí-L{ßÿøÃV °ÈÛ{{{ݽˋ¯¼ÎSO>Á)6œÖ@^C¨ë?óœ£ß~EU9øéàbklfìßÞg÷¹]¢Itj˜g€õ< ÅǨ*f¾ŒÂÝÌŒ$†Ã„ƒ_ŽÎ•åÛ/]ÁqÌ 3ÃÝè_Ý½Š»’Àpxçå+=€;8^W¯«¹SFAÕPÕÚX­olf„P5òJøùÎñ¹Œ_»¶…˜71æÞ7VÕlF^ ¯¾°µ´m>këZßó¢Z›n1uŠ*rgü×¹Œ¯m?Ó‚Ýëfìf˜*@küü¥§W ÞH´™7ÆQëõîÞ76w´ù!F¥™ÚNØv H#ÖËØ­Žàæ‡ï+‚‡ ïîcóe:¬×¼Žñ£Ž•""íŸ_s“õõõÿ5»þîu²l†ˆpéb½=µ{@T•c»h:òù§ŸQUkkk|ñÕ—g¬ê+`scƒû÷Sœœ´ëU¥–ØÝÉçsD¤³jXŒADÐÁÇ‘ hÓ«lJìDáîˆ*¢J¨*‹Å TD(clo´(ÂÆæ&¿ßû£Ó<5+òÏwfÄÌø?Êo3'_úö»›{îAp¦&†¢j¢i*¨)/ÍPO’wvlê•`i—ø«c?Žß÷ëòù\ÛMe¶2cQê=úÂÓ[­61S—?ˆšÑ[““Œ-[¿xi†íO>!{>ùt߇Üþü¶mÓ7„Ç÷É|DÙÿW«ÓÛÛK±X\×~>M<>ü`é›ã§vÏÞ°ÉaMyhÒ=̆GöbªŒŒŒ,ƒGÇ/vt°a}?'Nœ2 Âû^{éÅ“+&NRïÖRwq²‘ŽŽ¾ç(—ËËàr¹Œª26yLH<ýýžÏ_Ýùu’ÒLŽ?³Û>[Ç©×[k(swgÏþÆÔÔÔJ/ž-[¶`I—{?.¯]W,·be|¼¶X„Ͻ+AÓÏfÕ)…Á!œèééYÎår”ŠšQ®îiªœ;_+,iE¤t5[P±nÖ– ´®ŽqæØ!¢êf .?~ü2…†‡‡©TfÉY…Z#ÁZ ‹ðÉ]ò^øf]Cgà“9ý •b7wt±NÃÌP5T•¸S½:Ku¢ÁÑ?v12Ñ©©7˜ÑjQ\€[1/ß¶yë&çæ ƒ!nþÆC —¡PÊÓ÷ïI7n2~:ÒÏ\ýO<b•E8¶lwGè’qaønZS`ô÷„0tK«eKI³výóm‘v†0WK1'äÇ)qs®±ºÄAF©5çƒé\­F#­fu½ˆ\«Þ»¶<¦B#JQµHDÄh´ì×Fõêcaè¯:åõ—ù¼Ïßµƒhpp0𒘃S®¼¾~]nùƶÞòõ®NavR•Ô÷ý5>ÀŽ÷9òÞÎÖ‰RQïi×_iÃ]3WÈ)C¬^šÍfoñ†††r?ŒNì ²W6÷õš“ÕtãºÊf Ÿƒs•Âe`À¨×ëÞ/Ó}'“Ô{{íùê ¾拈s€'ˆ81QÀ‰áÁLœ‡ˆ!Šéåz~¯™@úûûÃb±Ø•Éd:ã8Î8ç<@<ÏsªêTÕó÷s¾÷Þs…RŠû­/„8ƒw…¦=í¯­-6¦§—"†qÇ WžS* ,p[[[{GGG·)%€@M°xëÖþù¾¾CÇNŸehf<Îòè(Á4‰DËY¥¾Ò¬yUUU^_EER ¥@J‰"«%§§¹{ñ"ÇO4SVÿ鹇DOë”Ö×S‰Ýø@ˆZi_¢”ò_ÛDo/¾ýn´š |ùD}€µ… E Õø;;1¼^|¥¥®¼¯å‚·W½m(m¶J)GF¨4¤Ç?aâÇy¢ý5V}„²†fÆÞ»Äæ÷_¢%ÖqCãc!Ä®¡ØiRJâ‰2“aŸSá.N½yž¿&†(khæ·±AVn¿Á•IÜ.(Î[PËVZãsÅ.ºñ$<ÔrßñgˆN hXZЬ­e}”÷qê^¸ÄÜgH|}’èðjž}“Œï(ñ5HÁ=-ר5´n …ÀápPÙÓÃÚ™3¬Þ™äîóOâ4'9Pé¿/³ôÍ ¯OÁ:é!x' ŒH+Ôz€ÕMMŒvuq°¿ŸÄç“%°ä‡-ú#%qa~Šºrnï1¹‘ìä P^^NSw7#~?™«W) …pþi€ËÅò‘# ¸\7¯÷+¥RyÁÂÊØµbòz½œhmeåÔ)æææÈd2ñT À¯×®} F ‚-Û¬ìwŽǃßïG×u ÃÀív#¥ÜÝx²Á¶ÃÞrᶉ8N4M#w3Ûkœ3±T)…a躎®ë!YK¬gv_ÝÜ·‚fö¾iš¤Óib±³³³,„# õ½uù£¼`a‹#Ðêomm‡I¥6üÌGÂk/µ¶6*¥V ç);Ü0 666X]qø°Ñ`0õjW×Ñ………%ûœ½Æy2¶ÃMÓ$™LRâ)áÛo¿^711ν^ã>Jišl¦3Ìþ1é<×qlff&šïÚ]p(Z…B¿Èí*h¼™Ùâ§©Ÿ?×~¶%‹­”ø??ÓÿRÿÂÞVO1Mù%tEXtcreate-date2009-11-15T17:03:05-07:00qÝé{%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T09:25:42-07:00”ƒãgtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[‘µXÖßÛÔ<:ÑãÇW©,¹nNëïZ­6Tïª=Pþ¼È¬Uv$·R‚Ì”0ÓEç-Ôß$ß-‹<×[áñ-Žåø}G¯…?[¾Õ;oðÏæ¥gŽj믃üièïOáÊY0Öª%N¦Ú‘S¸ý«þƒ[\ g À¬+‰Æ•ø}û¬x¤iñ™ƒ@Ão¾Eîá·r)–eñeq¿!jƒ¢´Ýlq$€³'°%!Ñ^<¾§âÑáXC1È*™Iʤ 8•bÒCu„ˆ²¯Ìz"¸Ø ,Àã  ÛÙæŸ12$„ACÒó¦àp»ycE¡@©óK‰cK¶èkÀ~_höï_ÙÀY’¡ÎÔ´ŽfÇNéî‘=óÑúé>^šYÀ¯‡Û%FŠ A·ˆnõ¡Ohæt`'ð~ßÏWÃå¯i)<}¨&JD\(Ã’~’Ô¥ÉÅ=VT/f÷Ö W<]%K à3ü¾ ‰á®zÿÇSO~;;‚{Ö+ƒË®tM¹íüûå–±§aø†_ÓXT“S’,NWªF@ÛØ ó@_g„ÿCøº³kÊPIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/clear.png0000644000175000017500000000363512032647220025145 0ustar ebourgebourg‰PNG  IHDRÄ´l;gAMA± üasRGB®Îé cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDùC» pHYs „ „ªâcy vpAgÜÅéXVIDAT8Ë…”[l\W†¿}nsµs<¾ÄÛRçâ&M©P•¢ri…”BU ©ê[¤H´H$<”¸}ᡊ‚ jQ«@åH­[ Æ"DA&A‰«6µÁöÉ´vgêñÄžñÌœ9sn›bˉ¬²^öÞÒÒ·×ú×>Å.\¸ð¼eY×-˺><<üÃOó}óÜs…±Wü¯µ·²v‘Rh€rçN"‘x¬¯¯ïÁ¾¾¾…mà¬û½øü³\þã+ ·ÒÞÛÓcoöi[6›ÍY–õÑ]¹rå•R©Öj5iÛ¶\YY ÆÇÇsôèч …Bnqqq¡­­½àÊ»Coþù×ÏÈ÷dž¾»”¸Õ-Ëšïêêê Ãh4*a"„@ ¥DQ†a`Û¶(Þ¾Û¹cÇ}ÿ“FkS”ÏyFlL 2;;«™¦‰”RxžG½^§\.ãû!ª&ØÒl5A ÂPʉ‰÷ŒwÎÿôôj1KWûþ_nL_½sº£££3'Nœx¢ÑhP¯×q‡xË•%¢´¢éš¢ð?¼Àý÷÷a“s%:ã *)óŸGN¾|ð®â­MÞÈÈÈëºRJ) 5A¦+E4CÑ"üýw?"Ù¥©)I._ä3)…b¾@­¦‘+…”ý¦É{÷ÃÚŠäóùx2™Ä4M¶ní ‰¢Ë÷ßùjX'“éf~~Ï®QX.cè°½§•Þô4ËÌl ®?~üP6›½=55õŸL&ó—^>wþß—Ï‹íÍ%¦oI PBAGk×siiN‹(Ä£:5¹öÆÕy6“àæ±cÇv°ºCÞèÍè=O¼þî‡ö(¦aà.©& ÅU¶u·szph~Ü$â5[Vöý#ßòÂ`ß'Ë6mɘŒ›†¬šSrÅUú{[¨»>ɸNû–×ónnðн`.¾zJïM7?4°½óæÂŠ÷•ÏíAhžGÅ0„èÔ+6õ0dï}m8®oüöëÿœ¸™—ŠÌÞZy#“0­iÏÕóŽ&)”«Žöù½idHUU¤[õ)ÛÞäÌÛÏEoîLߏkq >òÚD@þ{_ÝÕß,}Dw ¥¸ÞN„ÜÚëHH WuÅ_[øÈ Ïîl•?ÿòvÂ{asðšýéµ'1ßÞñÅkb¶ÚªF„o(šb*ˆv íëv-­ÖôÝ=‡‡.\=óú_oÌÈA„þ/°Îy ©½Òq%tEXtcreate-date2009-11-15T17:03:05-07:00qÝé{%tEXtdate:create2010-01-11T09:25:39-07:00íd¼%tEXtdate:modify2010-01-11T09:25:39-07:00œAÜgtEXtLicensehttp://creativecommons.org/licenses/by-sa/3.0/ or http://creativecommons.org/licenses/LGPL/2.1/[ïƒc½ÉDÜ/È2WM&âvíðÈáê*Uº¿}|<¦´Uyø“Þ‡Ç{ç.Åüt¹§º]µÐs±¸?üÖpïúÔ‚Ój°UÈåg1îLö74½]|÷è«\¾,‚ @ …ò@qé´">Q@êôõ›F(–ØbV+>þþä™»*–ã“=󉸬{¨™àÚ°ÈN^D<Á ‘KgP?_$Ðú$¾¬GòÂ/Ø›6¨¯¹ä Ò¿MÛ«Çí^¿ ¬²Y±fC5ûºÈÇ~‡†0F2M`÷óß!»­ óáF ­¹oÑAl_j»á~¬ÕÕä]W”ýøäœ•³Õš¹™kÜ:q’à›ûÕ¯¥‰<Û¢˜NAÆÛBX&•{^ÄÜañǟкL»ià ²j ©éit.‡õB¹áÏ0´B¦ãa„l¨0ÁqÑ®Gú£ÜœšÂASW®E±ˆ÷Ø&Ö¶=×fYœå¡  ¸•¸BÕ®íH%ÑßFo{å¸dÑËŠ, ¶,<;& žKÀ’9wúóo( Iÿpœ †›åÆô%,×A^™E"–e^¬Z6UŽNì½:1eÚD ðÈÄfh<4©³ç—7e3Ü‘_ÔDÖ9ªåñÃ+ñyN×®>÷KCõÍ‘¼‚´Dà£xGi˜KcIêZ¨mÚt¿<ätuô•¬¸UH7ªô@]u•¼ß;‹ûÿ&ß’ÎnjÌ‹ƒ¯½suçŽvQÆ+Ú¥ðN)Ý_ŸZÐ5‡Fz’‰¸]ÆÝ¨‰4:þW:‡fwîhÿ7wØ*…7¦ô m…¬ºñÉî{øñ‘tgÇ`)ËüoÆ_¸Rr!vá¥oIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/copy.png0000644000175000017500000000210412032647220025017 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYs  šœ vpAgÜÅéXbIDAT8Ë••¿OAÇ¿of÷ëî/8Ø]ÿcˆ••‰¥5DÁ@¬M•D‰!±¶±µ21Ž BÂó¬± !bnwîæY »·sî-Ü6³Ù÷æ3ß÷7³´øjá!kícÀ‡„h<™˜úØ/î¨(òžMÍÊÅë7K^^Ü‚¿o ®€ˆrsœ¼ 3SE²ç …"˜™o n6ZÐݽGWWjR‘YàåÒ\–‡DDŸ-ðèèHò†¡üºþ¥6ýt†˜9¿n›ŠÅåù±¾ŠU[áZ)]^^ ä?Õja³¾~k`ìŽÇ&¨Td%ßõý <2Rƒa±Q¼µ‘Ä|ßï ŒÇLÅÌŒf³™€•RVb£ÑÈ„vSAp§ ŽÌŒZ-¥8 ±µ½™$A`m0ƒˆò™JµÿSœš1^Ô3P,m°Ö:QlÀ@¶°ý­ž$zž—¨ëUL$à8J)h­»àN§c•Ål·3ãè(î ;¯\.£R©ªÕjÂJcX¬‚,°çZ@€!„„”Zk!W½y¦†††Kˆ®ëöl¨Û®ë‚HuŽ“l^}kZk8n¡ðãíêJf“Q²XZ­DZk¼_{—5uÏÉû Ì-¼˜éõ?.Ÿ™ `ŒÝ½8;?Åî÷0a5÷>îõßuHi¦Õ)Íu}òë‡û(•Ë+ã“k7‚•R(•JÖ‘•²«ºÓÑ8;?ÅÁá> èñÄøäȽg—ç?µÛíéC‘~ ´Õ5øÞìôó¿qìÆ” ïÕä-%tEXtcreate-date2009-11-10T19:38:20-07:00€}ñ%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T08:56:33-07:00'«ôK2tEXtLicensehttp://en.wikipedia.org/wiki/Public_domain?ýêÏ%tEXtmodify-date2009-11-10T19:38:20-07:00ßÌûÅtEXtSourceTango Icon LibraryTÏí‚:tEXtSource_URLhttp://tango.freedesktop.org/Tango_Icon_Library¼È­ÖIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/cut.png0000644000175000017500000000301112032647220024636 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYs  Í›ž vpAgÜÅéX'IDAT8Ë…“]HW†ß3{fg6«IüÙ³«n¡M¶41¶%Õˆ†$ÚÒ–^„€´Io¥6­ôb¶´X$i@KBrBñ'k(i1•˜¦X{QSb’FZ1VÝÆÍªû?;sΜ^dYÖõ…ÃÀ|ß<çýÞ9‡ M]_Ÿ7M³Ê0ŒÚ¯ï6Ðé³§Út©ªm¡íãO]éu)½Y’¤Ê*QXP8‚,RUõ«·ßz’$9OŸ=u-+Øn·øÆëowés°HõÛ‹ç;3A¿ééîuîrÒ¼íù8T{;‹vîË fŒ9 €ÚC‡À—!‚²d2ùnUe58çPU±x¬$+8™LN_¿fZ­VÈTFQQ±åÊw—G×÷äææ¬ªc’$áÖØÏˆD"íYÁŽžˆ¦% „@ù¾ýˆF#GÖ¹­áœW¸œ¥BàÉÒ$“új‡××Üáõ=pihxPØív!ðòþWÑ?Ðûrrr~8z¤Œ1PJ1v{‰D¼"ÓHwŒ¯¯IÓ´Ðÿî B ˆD»/^ºÐ½}[ÞVU±AÉ»@Q”¾”™ÍÁ)µü61N¶ly9XUƒÜÜÜOJJË „€$Ì/Ìé'[ÛÞÛàûÌ௯Ï4ͱ_îÜ6- dY†¢¨àŒ‚ŸF~D$©CIYjü3ó·BÀ³ûEÄbQÌÌ΀Z,²ÝJ°lT¸92ª«?jûozºÆS^Ã0 ë:‚àDKël¢lŽáù¬SOÎÎbêÏIx<’ˆD˜~„!«µs30IqpoSÕN‰†$cêÞ½/‘ Í†'~GIåk(H$05u_(”j¦!Mû¢˜Í ²Z[d‹åó²¼¼bU–!KÏš˜›©^QYZJÀ0Mh†Ç++~ƒó/éúùŒQ ºœõ\ˆö=Gñj"œòûW‚ñ8–¢Q蜟¡ Ç/蜟YŠFŒÇ1å÷¯¬&Á=G1¢}Ðå¬Ïœq<ÞTív»ƒ±–¢Ñ~ó›,c1† Ü=Þ;Ð `r1†M–¡sÞ³öc1T»ÝnÄãM™Á†ñ¼J)bºÎœ+”6Û­VH„,œ®Pï%BìV+J›œÇt©”Bèú 룥kƒ¹Âš†­ªŠrJo¸òó1¹¸˜c¬€€€9Æúà÷7¾ârí˜_^¾!SÊš‰q'€€K©]$+¥—çC!äÈ2µ) îùýXâןZŽVÆ®>büžß›¢ G–é|(“Ò^Jên5ëôªªz%!êL!ˆ_ˆ›' c0U3Ó&d]”6ì’¤:JOrë}M;€­9^ÜÈšûÔ¢ä´#¹6¡™‚ðuO¤â2à§ëÕŸ1H¾%tEXtcreate-date2009-11-10T19:38:20-07:00€}ñ%tEXtdate:create2010-02-20T23:26:15-07:00;\%tEXtdate:modify2010-01-11T08:56:31-07:00°4åb2tEXtLicensehttp://en.wikipedia.org/wiki/Public_domain?ýêÏ%tEXtmodify-date2009-11-10T19:38:20-07:00ßÌûÅtEXtSourceTango Icon LibraryTÏí‚:tEXtSource_URLhttp://tango.freedesktop.org/Tango_Icon_Library¼È­ÖIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/startremoteall.png0000644000175000017500000000216312032647220027114 0ustar ebourgebourg‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÜ5 Œ«S_óIDAT8ËÅ“{HuÇ¿Ïûž÷õxÎÑsŽçx§óÒÖ²Í5ƒ­Ë´†³¤hŽV¹ôŸÚ8¶ h¬ÑeÒXQ úcÑXAŒGK¬!C×fÎûíäÎí=¾—ßÓsKIHGÑóßïöáû{¾ßøŠ`GÛgéæ‚.wRÖà\oÕ›¼–ßý¯€ójœi>Ùí“ȇxo²bõŸÝ‘›÷ü·/¶¡Ø¦ßX6Y6t2âÈ«>ËáÜO÷Ž˜WBƒ‰ÁÖî¾™îgº=°epdÜÂäÆc#säɾ„HàÅùÃ34üãÇÓ=÷:*^ ØœÐ0û› HÅý³0ýœŽJóÏò6äsú‹Ž+nyòä™ÁƒOí*ønÅ`1GdB@u ˜L°Œ\î8' ÊMsprZj!…Úlà€ +Wl`ÀnÁˆ2¢&Á3Pä~¨Š†,Cf¯ª°T»€$'IPœDo»l¹4Òï›)ÕSÉñ¬ûWež É`™Ø–LðfG”C5¤Ž<÷†÷mí¹60~Õºðö³­\µòV˜L]@•©nLJ2(_™œVñÁÖý Ç3·ïý²é£Ÿ·¥¤;)œúíž·îºôK[Sé=ÿ7ŽÉ¬ƒµiœ«¥œ‰cÖ¥·+oìoè ¢icÞJ“L–Jk~rÆ+n{çtwõM€k£ yÙÉ€µ5“Nwùå¼ÿÂëÏPÏâK¾ªG.69_¦¸¯ÝC©öµp9 cÕ6…lÂÞtµÏþÃsûrbKÁ-Á2änơکå¾å»³îâŽ/”)N"»—žé„Ë‘orÛ•¤DŠüúúxÄqHÓÞ§w•°máíŒt‡T.æy ‘ I)2æ,# —'ÊG˜²=§æÈÅ¢8qym¥!lë7Ácì·H-ÁÁ±æj°¢€ä$ GC‚éƒ*#%i T§ MdtK‘n™ @Z‚w/¬·8…–à:€ ’e¾¡^DI&²ÛÁ’$Ñø¨•õhbÎ݆Hªù×€_xÀ»h þ {~‚~åZ®ß,TD¬ÈDvAõÆX—“#¶F,ïðõé’síÍÅß/<àU~õ*¥å^>û•ŸM‹1OP˜Éž¦sÜ™½”ïÞÞ%ë…þòîÝÍ¡¿åÁqO.(-ðÞÂù8Ð0̬e Ët§ºä»rdXo,Éä-¶7íüz÷ƒK¡Kr¼È8ÀcBè ~ss{S]Õõdw€/}þÊúø¿êO躦}1Ü‘ÅIEND®B`‚apache-jmeter-2.8/src/core/org/apache/jmeter/images/toolbar/help.png0000644000175000017500000000271712032647220025007 0ustar ebourgebourg‰PNG  IHDRÄ´l;bKGDùC» pHYsaaÁ0Uú vpAgÜÅéX¬IDAT8Ëu•M‹E†Ÿsª»ïÌÜÌu˜‰IÔ˜,Œ ƒÅÁ…bþ€îÄ• 7.²p)¸Æ­$ˆ{7²1‚ˆJ4 q¡Q‰"$™/çƒûÕ]甋î{çŽÞ)¨.útóÔ[o¿U-)%FMD.À.¾¹üÐL{^ÍÝÌÜ<%ws3³ºd–Ì+A¢ *Ð-áÐ ¼xºÍ0Âåë;xªí%kØZ­eYÖ‡:Nu<©wžÀL¡Q°ØVŽv„h†™S™QÕ“ìOZ‘F`A²‚hq3A¸òå&Ïžšã›[}¢3>#Hìoû¡ vww)Ë’A¯›B´æ›Õ/šðùO;ã3Xd¤ƒÀß®®®¦áp(½^²¿ëyUš296ØýµªßýXD ÀÖ××/'«ªnÞþîp,{³˜©{¥)¥@rA$Ѝ‰h%A£LUãúí¾–w®€!‚§ÏFÕ Óa%Lœ@‘BÅ < háb„  x#†Œ4jظƒ'„:Îzœ`>~ "d‘"Œè0rÄc¢H’(Y¤‰“'PŠD1 #G )h[B¥Š•+X²hÙÂe¬gÐEƒìâå ˜0bÆáBæîâÆ0ò-cæ š4jÖpa“ø·cájÛàpóN.rÜp~:Â9tävÔYÇÎן»{ ›(kòèÙÃÇ7ãçëìî3Æ“?ÍÝK²±Ç O"È RHz±±Ä†Ò"‰(Á"„À6 „1B@E$ŠEÈ"hYD`M´!Z­8ÓŠ, 5¤ãŽ<öèã@ê;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Delete24.on.gif0000644000175000017500000000037112032647220024353 0ustar ebourgebourgGIF89a¢ÿÿÿÿÌÌÌ™™™fff333ÀÀÀ!ù,khºÜþ0ÊUêŒ%èrù`(F  ªC ‰p&š²åüB ‚€ÐÒíz= è¢!ÁaQRz*¥Í£ïÊ4>ªÛh—Ê /§N3Öë'Åhíûœý–çk²í&ˆc"l„…†…‰Š !þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/stop.down.gif0000644000175000017500000000076012032647220024325 0ustar ebourgebourgGIF89a((³ 11c{{{„ÿÿc1ÿÿÿccÎÿc΄„„œœÿÀÀÀÖÆÆøüÿÀÀÀ!ù,((ÿP %鬸jË3wÊ#ŽäØœhÚ”ìè-©ÎiL¾öƒ"|ß*Ê‹ÆbÉ\<Z kD Ç9Pîj «í€0ÎÀRl£²P@­¡@`¾ n'S!UVi |n_kC-vwGZ"}Žm’,”2;˜mh<Ÿ%¡2i mnqPP„“†-V ²ÂP€Qc e½ˆar \Çd‡– <ÁÑ·¬7Ê%)iA @Hh¸à.¼wW çPH_¸ºÉ‡ri±ÁÂÄ™s Y¸CçÊqÆÅ Á‚“Äc&Œ0'Ϻð0èÎÆ(NøP„£W¢ì-€&pIúzÄÓÏ’BbºX‰†OsèøI£Ol>…žPp“c…ÆRñ[6QO#CÚ¶®)Ðú8l‘?åwHÚ ÞíY HÃÀŸbGn–T kX Z}|~€‚,x1z‘‰’RŠU(Žb}Roo•‰j%laf©ª«—¥„P =¶t¸®°¤#™š  ·¸º?v²„o¶Ã¹¯cc¼™!Æ®Î׌8¦bÑ·ݘàá ¶åçÓLêy tïò^Ôõy켓–¦ß7*¨Hã7ï „+–yQ¢?'"Jt‚€ÇÞn,NLA DI'3ª(Ù¨Jˆ)!vÔÈ1fÇ“q–ü˜. Jiü±“(M—+gRÉ)´ä‚”Ê|¾DIYS¥=IšTꔪЩYI~ÜúócJ-1Ê\kƒ/Mpɼñ¡E òêÝË·¯ß¿z#;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-orange-legend.gif0000644000175000017500000000015112032647220026560 0ustar ebourgebourgGIF89a³|g?XXXra<™v= y;±3...333ïœ!ù,РI I¸ ‹“æÙv…†0œl;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Edit24.over.gif0000644000175000017500000000222412032647220024374 0ustar ebourgebourgGIF89a÷ÿÿÿ€€€òòò ¸‹Ù¯­¤¦Ð™›Ä¨ªÔžžÈ­®Ø¤¥Ï´µÞ(((漺š›Å©«ÔŸ É¯¯Ù¥¦Ðµ·ß­­ÕÃÃò«€~ª«ÕŸ Ê¯±Û¦§Ð··à­®Ö¾¾å³³Ú8g8 ¢Ë±²Ü¨¨Ò¸¸á¯¯Ö¾¾æ´´ÛÅÄë¼»â¹M+Z+²²Ü©ªÒ¹ºâ¯°×¿¿æ¶µÜÆÆì½¼ãÏÍóÅÃéÅÆFÒÓSª«Óº»ã°±ØÀÀç··ÝÈÇí¿½ãÏÏôÅÄéÕÔùÌÊ@¾Na¼¼ã±±ØÂÁ踸ßÉÈïÀ¿åÐÐõÇÅê×ÖùÚÙý±AT²²ÚÂÂ鹸ßÊÉðÂÀæÑÐöÈÇë×ÖúÍËðÛÙýÄÃ뺹àÌËðÂÂèÓÑöÉÇëØ×ûÍËï¼¼áÎÌòÃÃèÓÓ÷ÊÈíÙ×üÎÌðÌÊïÎÍóÕÓøËÉîÚØüÎËðÌÉîÆÄéÖÕùÚÙüÊÉíÔÒö×ÕúÚ×üÉÈìÒÑöÁÀåÍÌðÈÆë¿¾äØÖúÐÏô½½ãÅÅëÐÐÀƒƒ5×ÔùÄÃ鼺áÃÃê²²ÙÃó³³³!ù,þH° A*< ¡@ J0€€€ @pÀ@Ç ,`ÐÀÁƒ `,A> ”0B 0È@K /;ʰC@„±“b#€jˆé‰&N H¡b‹ ´p1ÂC_Àˆ!c6nàØ !‡³È°ƒG?€2„HFt9’·ÀP$I”,aÒÄÉ(E¢Б£…”³Ž«N¡RÅÊ,Y´lá"¶óç‹¡vñòL1cÈp!SW1cŸ±–1sM5k¸°Aì»1Æ¡mp¸y'9n6»ý¼ê:rêr¬cçNkÏÜ»?ÄÃ&ÊšÈ:,,#¿µ).7/§½¾À‚ -‡³ÏB($ˆ¨ÁA+˜‚2 0ð‚;õùúûˆ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-red-legend.gif0000644000175000017500000000015112032647220026057 0ustar ebourgebourgGIF89a³oaXXX¹¢...™333ÿ!ù,° I Ix ‹“æÙv…E`œ"l;apache-jmeter-2.8/src/core/org/apache/jmeter/images/monitor-load-10.gif0000644000175000017500000000154112032647220025212 0ustar ebourgebourgGIF89aDÆh˜™œ  Ÿ ¢£Ÿ£ ¤!¬1­2®: ¯; ³>¯A°B´EµF ¶M ·N¿_À`ÀfÁg Âh ÂmÂmÄnÃsÈrÅtÉxËyÇ|ÏÐŽÕ’ Ñ” Ò• ֘יԜ٠ Ú¦Û§ã¸ä¹ ÿæÀçÁæÆçÇ2þ5ÿèÍíÌîÍéÏJÿXÿYÿîÓïÔfÿgÿsÿrÿuÿ’ÿ›ÿœÿöå£ÿ¤ÿøç«ÿ¬ÿ´ÿ¶ÿ÷í¼ÿùîÓÿùôøôúõÚÿÜÿÛÿâÿãÿéþþøêÿÿùïþúûûüñÿ÷ÿøÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù,Dþ€1‚17<==BE†FGJNP†TY\ae†c`VQI†?;420†-,)'%†!† † ƒ„†ˆŠŒŽ’”–˜šœž ¢¤¦¨ª¬°² ·»½…‡‰‹‘“•dÊÌŸ9Ñ¥§'$«­Ú±ÞàÐÅk9`醭3†ì]¦1Íæ‰za¯ÚªÙ¶uûfHA.r¡FŒÝ1wð6É{jTÅTú2öófëÇq©®X;.—©töƒžËi§LXÃÆ›¿ZÅÔ)RHÂ’ ³| ª©ÊÊ¢õ¦P³éF€  P®êÕ…¿í¶¦ŒøˆQiÔ`^ó°áU¿m~ÌéëœU’pOÊÍÆ+Ñ–xï-ݧq-´ƒ î<ÜÓ$¥ÅB«LqòKk#øš} AÍnC’—ëPC¥Ãæ¼Áì„Z«ÍycóÙNhãºëÊÜG©‘ý“º·ÆYÁo!(0€¸qäÊ?Ûö2·i±zYYŸ™=`®î° ï^«m+åëž7µ"½êÊÿ„óšNßÑ7 s\á˜y4Ì™EÔý÷W{;apache-jmeter-2.8/src/core/org/apache/jmeter/images/Open24.on.gif0000644000175000017500000000071612032647220024055 0ustar ebourgebourgGIF89aÕÿÿÿÿÿçÍÿæÍÿæÌþåËýäËüãÊûâÊúáÉøàÈöÞÇóÛÅðÚÃïØÂí×ÁëÕÀèÔ¿äмâλà͹Þ˸ÚÈ¶×Æ´ÕijÓ²ÑÁ±ÐÀ°Ì½®Ì´šÌ³šÌ³™Ì²™Ë²™Ê±˜È°—Ç®–Å­•딾¨‘¼¦º¤¸¢Ž¸¢·¢¶¡Œ²Š¯›‰®š‡¬™†ª—…¢‘€ žŽ~}™Š{f33ÀÀÀ!ù9,@˜ÀœpH,9œr©8Ÿ ˆ£QVN6 j¼,´ ­‰,›¥Ðtºº‘Õp¨yN?ÞîøÛQ¦UP[Z+anC8b3'#1ˆ†D8 Z™ _}‰•u ¡¢£¤¡yySTq[ƒc©BL²³}•|‰2&Ž#ˆ¯–b€™/bUŸI+ " .`žÌI³ÙK°¥ÝHA!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/SaveAll24.off.gif0000644000175000017500000000051612032647220024637 0ustar ebourgebourgGIF89a³ÿÿÿÿòòòÏÏÏžžž‘‘‘nnnaaa ÀÀÀ!ù ,¨PÉI«½$Í·çÁB!’®çh%Â` Ä "´0ÕýŸÍ!æÊL¨+0â &0Yî6ÝE‹Šf¡FXq‡­'‰ÎjT´µ†Õ~•*â–¬ˆHø“~L ¹9€€Mtf‡‰ˆˆNa~Y;Hzy$ŽNP1gV}Z“¡•„Oe™›‚ŽŸ‘¢¡au§‚œN²’”{XLA@ ¼Å'ÈÉÊË!þOCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;apache-jmeter-2.8/src/core/org/apache/jmeter/images/thread.disabled.gif0000644000175000017500000000010312032647220025376 0ustar ebourgebourgGIF89a ‘ÿÿÿÿÿÿ!ù, „ÃÍêŒoÑ1iŽ[Z„âX;apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/0000755000175000017500000000000012165514773022440 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/BeanInfoSupport.java0000644000175000017500000002332412032647220026350 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans; import java.awt.Image; import java.beans.BeanDescriptor; import java.beans.BeanInfo; import java.beans.EventSetDescriptor; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.MethodDescriptor; import java.beans.PropertyDescriptor; import java.beans.SimpleBeanInfo; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.apache.jmeter.testbeans.gui.GenericTestBeanCustomizer; import org.apache.jmeter.testbeans.gui.TypeEditor; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Support class for test bean beanInfo objects. It will help using the * introspector to get most of the information, to then modify it at will. *

        * To use, subclass it, create a subclass with a parameter-less constructor * that: *

          *
        1. Calls super(beanClass) *
        2. Modifies the property descriptors, bean descriptor, etc. at will. *
        *

        * Even before any such modifications, a resource bundle named xxxResources * (where xxx is the fully qualified bean class name) will be obtained if * available and used to localize the following: *

          *
        • Bean's display name -- from property displayName. *
        • Properties' display names -- from properties propertyName.displayName. *
        • Properties' short descriptions -- from properties propertyName.shortDescription. *
        *

        * The resource bundle will be stored as the bean descriptor's "resourceBundle" * attribute, so that it can be used for further localization. TestBeanGUI, for * example, uses it to obtain the group's display names from properties groupName.displayName. * * @version $Revision: 1206442 $ */ public abstract class BeanInfoSupport extends SimpleBeanInfo { private static final Logger log = LoggingManager.getLoggerForClass(); // Some known attribute names, just for convenience: public static final String TAGS = GenericTestBeanCustomizer.TAGS; public static final String NOT_UNDEFINED = GenericTestBeanCustomizer.NOT_UNDEFINED; public static final String NOT_EXPRESSION = GenericTestBeanCustomizer.NOT_EXPRESSION; public static final String NOT_OTHER = GenericTestBeanCustomizer.NOT_OTHER; public static final String MULTILINE = "multiline"; public static final String DEFAULT = GenericTestBeanCustomizer.DEFAULT; public static final String RESOURCE_BUNDLE = GenericTestBeanCustomizer.RESOURCE_BUNDLE; /** The BeanInfo for our class as obtained by the introspector. */ private final BeanInfo rootBeanInfo; /** The descriptor for our class */ private final BeanDescriptor beanDescriptor; /** The icons for this bean. */ private final Image[] icons = new Image[5]; /** The class for which we're providing the bean info. */ private final Class beanClass; /** * Construct a BeanInfo for the given class. */ protected BeanInfoSupport(Class beanClass) { this.beanClass= beanClass; try { rootBeanInfo = Introspector.getBeanInfo(beanClass, Introspector.IGNORE_IMMEDIATE_BEANINFO); } catch (IntrospectionException e) { throw new Error("Can't introspect "+beanClass, e); // Programming error: bail out. } // N.B. JVMs other than Sun may return different instances each time // so we cache the value here (and avoid having to fetch it every time) beanDescriptor = rootBeanInfo.getBeanDescriptor(); try { ResourceBundle resourceBundle = ResourceBundle.getBundle( beanClass.getName() + "Resources", // $NON-NLS-1$ JMeterUtils.getLocale()); // Store the resource bundle as an attribute of the BeanDescriptor: getBeanDescriptor().setValue(RESOURCE_BUNDLE, resourceBundle); // Localize the bean name try { getBeanDescriptor().setDisplayName(resourceBundle.getString("displayName")); // $NON-NLS-1$ } catch (MissingResourceException e) { log.debug("Localized display name not available for bean " + beanClass); } // Localize the property names and descriptions: PropertyDescriptor[] properties = getPropertyDescriptors(); for (int i = 0; i < properties.length; i++) { String name = properties[i].getName(); try { properties[i].setDisplayName(resourceBundle.getString(name + ".displayName")); // $NON-NLS-1$ } catch (MissingResourceException e) { log.debug("Localized display name not available for property " + name + " in " + beanClass); } try { properties[i].setShortDescription(resourceBundle.getString(name + ".shortDescription")); } catch (MissingResourceException e) { log.debug("Localized short description not available for property " + name + " in " + beanClass); } } } catch (MissingResourceException e) { log.warn("Localized strings not available for bean " + beanClass, e); } catch (Exception e) { log.warn("Something bad happened when loading bean info for bean " + beanClass, e); } } /** * Get the property descriptor for the property of the given name. * * @param name * property name * @return descriptor for a property of that name, or null if there's none */ protected PropertyDescriptor property(String name) { for (PropertyDescriptor propdesc : getPropertyDescriptors()) { if (propdesc.getName().equals(name)) { return propdesc; } } log.error("Cannot find property: " + name + " in class " + beanClass); return null; } /** * Get the property descriptor for the property of the given name. * * @param name * property name * @return descriptor for a property of that name, or null if there's none */ protected PropertyDescriptor property(String name, TypeEditor editor) { PropertyDescriptor property = property(name); if (property != null) { property.setValue(GenericTestBeanCustomizer.GUITYPE, editor); } return property; } /** * Set the bean's 16x16 colour icon. * * @param resourceName * A pathname relative to the directory holding the class file of * the current class. */ protected void setIcon(String resourceName) { icons[ICON_COLOR_16x16] = loadImage(resourceName); } /** Number of groups created so far by createPropertyGroup. */ private int numCreatedGroups = 0; /** * Utility method to group and order properties. *

        * It will assing the given group name to each of the named properties, and * set their order attribute so that they are shown in the given order. *

        * The created groups will get order 1, 2, 3,... in the order in which they * are created. * * @param group * name of the group * @param names * property names in the desired order */ protected void createPropertyGroup(String group, String[] names) { for (int i = 0; i < names.length; i++) { // i is used below log.debug("Getting property for: " + names[i]); PropertyDescriptor p = property(names[i]); p.setValue(GenericTestBeanCustomizer.GROUP, group); p.setValue(GenericTestBeanCustomizer.ORDER, Integer.valueOf(i)); } numCreatedGroups++; getBeanDescriptor().setValue(GenericTestBeanCustomizer.ORDER(group), Integer.valueOf(numCreatedGroups)); } /** {@inheritDoc} */ @Override public BeanInfo[] getAdditionalBeanInfo() { return rootBeanInfo.getAdditionalBeanInfo(); } /** {@inheritDoc} */ @Override public BeanDescriptor getBeanDescriptor() { return beanDescriptor; } /** {@inheritDoc} */ @Override public int getDefaultEventIndex() { return rootBeanInfo.getDefaultEventIndex(); } /** {@inheritDoc} */ @Override public int getDefaultPropertyIndex() { return rootBeanInfo.getDefaultPropertyIndex(); } /** {@inheritDoc} */ @Override public EventSetDescriptor[] getEventSetDescriptors() { return rootBeanInfo.getEventSetDescriptors(); } /** {@inheritDoc} */ @Override public Image getIcon(int iconKind) { return icons[iconKind]; } /** {@inheritDoc} */ @Override public MethodDescriptor[] getMethodDescriptors() { return rootBeanInfo.getMethodDescriptors(); } /** {@inheritDoc} */ @Override public PropertyDescriptor[] getPropertyDescriptors() { return rootBeanInfo.getPropertyDescriptors(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/0000755000175000017500000000000012165514773023224 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/TypeEditor.java0000644000175000017500000000312612032647220026144 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testbeans.gui; import java.beans.PropertyDescriptor; import java.beans.PropertyEditor; /** * Allow direct specification of property editors. */ public enum TypeEditor { FileEditor {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new FileEditor(descriptor); }}, PasswordEditor {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new PasswordEditor(); }}, TableEditor {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new TableEditor(); }}, TextAreaEditor {@Override PropertyEditor getInstance(PropertyDescriptor descriptor) { return new TextAreaEditor(); }}, ; // Some editors may need the descriptor abstract PropertyEditor getInstance(PropertyDescriptor descriptor); }apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/SharedCustomizer.java0000644000175000017500000000226012032647220027345 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.beans.Customizer; /** * Tagging interface to mark a customizer class as shareable among elements of * the same type. *

        * The interface is equivalent to Customizer -- the only difference is that * setElement can be called multiple times to change the element it works on. * */ public interface SharedCustomizer extends Customizer { } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/IntegerPropertyEditor.java0000644000175000017500000000317012032647220030364 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testbeans.gui; import java.beans.PropertyEditorSupport; /** * Property Editor which handles Integer properties. * Uses {@link Integer#decode(String)} so supports hex and octal input. */ public class IntegerPropertyEditor extends PropertyEditorSupport { @Override public void setAsText(String text) { this.setValue(text); } @Override public void setValue(Object value){ if (value instanceof String) { super.setValue(Integer.decode((String) value)); // handles hex as well } else if (value == null || value instanceof Integer) { super.setValue(value); // not sure if null is passed in but no harm in setting it } else { throw new java.lang.IllegalArgumentException("Unexpected type: "+value.getClass().getName()); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/TestBeanGUI.java0000644000175000017500000004441512032647220026134 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.BorderLayout; import java.awt.Component; import java.beans.BeanDescriptor; import java.beans.BeanInfo; import java.beans.Customizer; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.beans.PropertyEditorManager; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.ResourceBundle; import javax.swing.JPopupMenu; import org.apache.commons.collections.map.LRUMap; import org.apache.jmeter.assertions.Assertion; import org.apache.jmeter.assertions.gui.AbstractAssertionGui; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.gui.AbstractControllerGui; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.processor.gui.AbstractPostProcessorGui; import org.apache.jmeter.processor.gui.AbstractPreProcessorGui; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.AbstractProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.timers.Timer; import org.apache.jmeter.timers.gui.AbstractTimerGui; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jmeter.visualizers.Visualizer; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * JMeter GUI element editing for TestBean elements. *

        * The actual GUI is always a bean customizer: if the bean descriptor provides * one, it will be used; otherwise, a GenericTestBeanCustomizer will be created * for this purpose. *

        * Those customizers deviate from the standards only in that, instead of a bean, * they will receive a Map in the setObject call. This will be a property name * to value Map. The customizer is also in charge of initializing empty Maps * with sensible initial values. *

        * If the provided Customizer class implements the SharedCustomizer interface, * the same instance of the customizer will be reused for all beans of the type: * setObject(map) can then be called multiple times. Otherwise, one separate * instance will be used for each element. For efficiency reasons, most * customizers should implement SharedCustomizer. * */ public class TestBeanGUI extends AbstractJMeterGuiComponent implements JMeterGUIComponent, LocaleChangeListener{ private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private final Class testBeanClass; private transient BeanInfo beanInfo; private final Class customizerClass; /** * The single customizer if the customizer class implements * SharedCustomizer, null otherwise. */ private Customizer customizer = null; /** * TestElement to Customizer map if customizer is null. This is necessary to * avoid the cost of creating a new customizer on each edit. The cache size * needs to be limited, though, to avoid memory issues when editing very * large test plans. */ @SuppressWarnings("unchecked") private final Map customizers = new LRUMap(20); /** * Index of the customizer in the JPanel's child component list: */ private int customizerIndexInPanel; /** * The property name to value map that the active customizer edits: */ private final Map propertyMap = new HashMap(); /** * Whether the GUI components have been created. */ private boolean initialized = false; static { List paths = new LinkedList(); paths.add("org.apache.jmeter.testbeans.gui");// $NON-NLS-1$ paths.addAll(Arrays.asList(PropertyEditorManager.getEditorSearchPath())); String s = JMeterUtils.getPropDefault("propertyEditorSearchPath", null);// $NON-NLS-1$ if (s != null) { paths.addAll(Arrays.asList(JOrphanUtils.split(s, ",", "")));// $NON-NLS-1$ // $NON-NLS-2$ } PropertyEditorManager.setEditorSearchPath(paths.toArray(new String[paths.size()])); } /** * @deprecated Dummy for JUnit test purposes only */ @Deprecated public TestBeanGUI() { log.warn("Constructor only for use in testing");// $NON-NLS-1$ testBeanClass = null; customizerClass = null; beanInfo = null; } public TestBeanGUI(Class testBeanClass) { super(); log.debug("testing class: " + testBeanClass.getName()); // A quick verification, just in case: if (!TestBean.class.isAssignableFrom(testBeanClass)) { Error e = new Error(); log.error("This should never happen!", e); throw e; // Programming error: bail out. } this.testBeanClass = testBeanClass; // Get the beanInfo: try { beanInfo = Introspector.getBeanInfo(testBeanClass); } catch (IntrospectionException e) { log.error("Can't get beanInfo for " + testBeanClass.getName(), e); throw new Error(e.toString()); // Programming error. Don't // continue. } customizerClass = beanInfo.getBeanDescriptor().getCustomizerClass(); // Creation of the customizer and GUI initialization is delayed until // the // first // configure call. We don't need all that just to find out the static // label, menu // categories, etc! initialized = false; JMeterUtils.addLocaleChangeListener(this); } private Customizer createCustomizer() { try { return (Customizer) customizerClass.newInstance(); } catch (InstantiationException e) { log.error("Could not instantiate customizer of class " + customizerClass, e); throw new Error(e.toString()); } catch (IllegalAccessException e) { log.error("Could not instantiate customizer of class " + customizerClass, e); throw new Error(e.toString()); } } /** * {@inheritDoc} */ @Override public String getStaticLabel() { if (beanInfo == null){ return "null";// $NON-NLS-1$ } return beanInfo.getBeanDescriptor().getDisplayName(); } /** * {@inheritDoc} */ public TestElement createTestElement() { try { TestElement element = (TestElement) testBeanClass.newInstance(); // In other GUI component, clearGUI resets the value to defaults one as there is one GUI per Element // With TestBeanGUI as it's shared, its default values are only known here, we must call setValues with // element (as it holds default values) // otherwise we will get values as computed by customizer reset and not default ones if(initialized) { setValues(element); } // configure(element); // super.clear(); // set name, enabled. modifyTestElement(element); // put the default values back into the // new element return element; } catch (InstantiationException e) { log.error("Can't create test element", e); throw new Error(e.toString()); // Programming error. Don't // continue. } catch (IllegalAccessException e) { log.error("Can't create test element", e); throw new Error(e.toString()); // Programming error. Don't // continue. } } /** * {@inheritDoc} */ public void modifyTestElement(TestElement element) { // Fetch data from screen fields if (customizer instanceof GenericTestBeanCustomizer) { GenericTestBeanCustomizer gtbc = (GenericTestBeanCustomizer) customizer; gtbc.saveGuiFields(); } configureTestElement(element); // Copy all property values from the map into the element: for (PropertyDescriptor desc : beanInfo.getPropertyDescriptors()) { String name = desc.getName(); Object value = propertyMap.get(name); log.debug("Modify " + name + " to " + value); if (value == null) { if (GenericTestBeanCustomizer.notNull(desc)) { // cannot be null setPropertyInElement(element, name, desc.getValue(GenericTestBeanCustomizer.DEFAULT)); } else { element.removeProperty(name); } } else { setPropertyInElement(element, name, value); } } } /** * @param element * @param name */ private void setPropertyInElement(TestElement element, String name, Object value) { JMeterProperty jprop = AbstractProperty.createProperty(value); jprop.setName(name); element.setProperty(jprop); } /** * {@inheritDoc} */ public JPopupMenu createPopupMenu() { if (Timer.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultTimerMenu(); } else if(Sampler.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultSamplerMenu(); } else if(ConfigElement.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultConfigElementMenu(); } else if(Assertion.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultAssertionMenu(); } else if(PostProcessor.class.isAssignableFrom(testBeanClass) || PreProcessor.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultExtractorMenu(); } else if(Visualizer.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultVisualizerMenu(); } else if(Controller.class.isAssignableFrom(testBeanClass)) { return MenuFactory.getDefaultControllerMenu(); } else { log.warn("Cannot determine PopupMenu for "+testBeanClass.getName()); return MenuFactory.getDefaultMenu(); } } /** * {@inheritDoc} */ @Override public void configure(TestElement element) { if (!initialized){ init(); } clearGui(); super.configure(element); setValues(element); initialized = true; } /** * Get values from element to fill propertyMap and setup customizer * @param element TestElement */ private void setValues(TestElement element) { // Copy all property values into the map: for (PropertyIterator jprops = element.propertyIterator(); jprops.hasNext();) { JMeterProperty jprop = jprops.next(); propertyMap.put(jprop.getName(), jprop.getObjectValue()); } if (customizer != null) { customizer.setObject(propertyMap); } else { if (initialized){ remove(customizerIndexInPanel); } Customizer c = customizers.get(element); if (c == null) { c = createCustomizer(); c.setObject(propertyMap); customizers.put(element, c); } add((Component) c, BorderLayout.CENTER); } } /** {@inheritDoc} */ public Collection getMenuCategories() { List menuCategories = new LinkedList(); BeanDescriptor bd = beanInfo.getBeanDescriptor(); // We don't want to show expert beans in the menus unless we're // in expert mode: if (bd.isExpert() && !JMeterUtils.isExpertMode()) { return null; } int matches = setupGuiClasses(menuCategories); if (matches == 0) { log.error("Could not assign GUI class to " + testBeanClass.getName()); } else if (matches > 1) {// may be impossible, but no harm in // checking ... log.error("More than 1 GUI class found for " + testBeanClass.getName()); } return menuCategories; } /** * Setup GUI class * @return number of matches */ public int setupGuiClasses() { return setupGuiClasses(new ArrayList()); } /** * Setup GUI class * @param menuCategories List menu categories * @return number of matches */ private int setupGuiClasses(List menuCategories ) { int matches = 0;// How many classes can we assign from? // TODO: there must be a nicer way... BeanDescriptor bd = beanInfo.getBeanDescriptor(); if (Assertion.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.ASSERTIONS); bd.setValue(TestElement.GUI_CLASS, AbstractAssertionGui.class.getName()); matches++; } if (ConfigElement.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.CONFIG_ELEMENTS); bd.setValue(TestElement.GUI_CLASS, AbstractConfigGui.class.getName()); matches++; } if (Controller.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.CONTROLLERS); bd.setValue(TestElement.GUI_CLASS, AbstractControllerGui.class.getName()); matches++; } if (Visualizer.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.LISTENERS); bd.setValue(TestElement.GUI_CLASS, AbstractVisualizer.class.getName()); matches++; } if (PostProcessor.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.POST_PROCESSORS); bd.setValue(TestElement.GUI_CLASS, AbstractPostProcessorGui.class.getName()); matches++; } if (PreProcessor.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.PRE_PROCESSORS); bd.setValue(TestElement.GUI_CLASS, AbstractPreProcessorGui.class.getName()); matches++; } if (Sampler.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.SAMPLERS); bd.setValue(TestElement.GUI_CLASS, AbstractSamplerGui.class.getName()); matches++; } if (Timer.class.isAssignableFrom(testBeanClass)) { menuCategories.add(MenuFactory.TIMERS); bd.setValue(TestElement.GUI_CLASS, AbstractTimerGui.class.getName()); matches++; } return matches; } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); customizerIndexInPanel = getComponentCount(); if (customizerClass == null) { customizer = new GenericTestBeanCustomizer(beanInfo); } else if (SharedCustomizer.class.isAssignableFrom(customizerClass)) { customizer = createCustomizer(); } if (customizer != null){ add((Component) customizer, BorderLayout.CENTER); } } /** * {@inheritDoc} */ public String getLabelResource() { // @see getStaticLabel return null; } /** * {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); if (customizer instanceof GenericTestBeanCustomizer) { GenericTestBeanCustomizer gtbc = (GenericTestBeanCustomizer) customizer; gtbc.clearGuiFields(); } propertyMap.clear(); } public boolean isHidden() { return beanInfo.getBeanDescriptor().isHidden(); } public boolean isExpert() { return beanInfo.getBeanDescriptor().isExpert(); } /** * Handle Locale Change by reloading BeanInfo * @param event {@link LocaleChangeEvent} */ public void localeChanged(LocaleChangeEvent event) { try { beanInfo = Introspector.getBeanInfo(testBeanClass); setupGuiClasses(); } catch (IntrospectionException e) { log.error("Can't get beanInfo for " + testBeanClass.getName(), e); JMeterUtils.reportErrorToUser("Can't get beanInfo for " + testBeanClass.getName()); } } /** * {@inheritDoc}} * @see org.apache.jmeter.gui.AbstractJMeterGuiComponent#getDocAnchor() */ @Override public String getDocAnchor() { ResourceBundle resourceBundle = ResourceBundle.getBundle( testBeanClass.getName() + "Resources", // $NON-NLS-1$ new Locale("","")); String name = resourceBundle.getString("displayName"); return name.replace(' ', '_'); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/WrapperEditor.java0000644000175000017500000003444312032647220026651 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.Component; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyEditor; import java.beans.PropertyEditorSupport; import javax.swing.JOptionPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This is an implementation of a full-fledged property editor, providing both * object-text transformation and an editor GUI (a custom editor component), * from two simpler property editors providing only one of these functionalities * each, namely: *

        *
        typeEditor *
        *
        Provides suitable object-to-string and string-to-object transformation * for the property's type. That is: it's a simple editor that only need to * support the set/getAsText and set/getValue methods.
        *
        guiEditor
        *
        Provides a suitable GUI for the property, but works on [possibly null] * String values. That is: it supportsCustomEditor, but get/setAsText and * get/setValue are indentical.
        *
        *

        * The resulting editor provides optional support for null values (you can * choose whether null is to be a valid property value). It also * provides optional support for JMeter 'expressions' (you can choose whether * they make valid property values). * */ class WrapperEditor extends PropertyEditorSupport implements PropertyChangeListener { private static final Logger log = LoggingManager.getLoggerForClass(); /** * The type's property editor. */ private final PropertyEditor typeEditor; /** * The gui property editor */ private final PropertyEditor guiEditor; /** * Whether to allow null as a property value. */ private final boolean acceptsNull; /** * Whether to allow JMeter 'expressions' as property values. */ private final boolean acceptsExpressions; /** * Whether to allow any constant values different from the provided tags. */ private final boolean acceptsOther; /** Default value to be used to (re-)initialiase the field */ private final Object defaultValue; /** * Keep track of the last valid value in the editor, so that we can revert * to it if the user enters an invalid value. */ private String lastValidValue = null; /** * Constructor for use when a PropertyEditor is delegating to us. */ WrapperEditor(Object source, PropertyEditor typeEditor, PropertyEditor guiEditor, boolean acceptsNull, boolean acceptsExpressions, boolean acceptsOther, Object defaultValue) { super(); if (source != null) { super.setSource(source); } this.typeEditor = typeEditor; this.guiEditor = guiEditor; this.acceptsNull = acceptsNull; this.acceptsExpressions = acceptsExpressions; this.acceptsOther = acceptsOther; this.defaultValue = defaultValue; initialize(); } /** * Constructor for use for regular instantiation and by subclasses. */ WrapperEditor(PropertyEditor typeEditor, PropertyEditor guiEditor, boolean acceptsNull, boolean acceptsExpressions, boolean acceptsOther, Object defaultValue) { this(null, typeEditor, guiEditor, acceptsNull, acceptsExpressions, acceptsOther, defaultValue); } final void resetValue(){ setValue(defaultValue); lastValidValue = getAsText(); } private void initialize() { resetValue(); if (guiEditor instanceof ComboStringEditor) { String[] tags = ((ComboStringEditor) guiEditor).getTags(); // Provide an initial edit value if necessary -- this is an // heuristic that tries to provide the most convenient // initial edit value: String v; if (!acceptsOther) { v = "${}"; //$NON-NLS-1$ } else if (isValidValue("")) { //$NON-NLS-1$ v = ""; //$NON-NLS-1$ } else if (acceptsExpressions) { v = "${}"; //$NON-NLS-1$ } else if (tags != null && tags.length > 0) { v = tags[0]; } else { v = getAsText(); } ((ComboStringEditor) guiEditor).setInitialEditValue(v); } guiEditor.addPropertyChangeListener(this); } @Override public boolean supportsCustomEditor() { return true; } @Override public Component getCustomEditor() { return guiEditor.getCustomEditor(); } @Override public String[] getTags() { return guiEditor.getTags(); } /** * Determine wheter a string is one of the known tags. * * @param text * @return true iif text equals one of the getTags() */ private boolean isATag(String text) { String[] tags = getTags(); if (tags == null) { return false; } for (int i = 0; i < tags.length; i++) { if (tags[i].equals(text)) { return true; } } return false; } /** * Determine whether a string is a valid value for the property. * * @param text * the value to be checked * @return true iif text is a valid value */ private boolean isValidValue(String text) { if (text == null) { return acceptsNull; } if (acceptsExpressions && isExpression(text)) { return true; } // Not an expression (isn't or can't be), not null. // The known tags are assumed to be valid: if (isATag(text)) { return true; } // Was not a tag, so if we can't accept other values... if (!acceptsOther) { return false; } // Delegate the final check to the typeEditor: try { typeEditor.setAsText(text); } catch (IllegalArgumentException e1) { // setAsText failed: not valid return false; } // setAsText succeeded: valid return true; } /** * This method is used to do some low-cost defensive programming: it is * called when a condition that the program logic should prevent from * happening occurs. I hope this will help early detection of logical bugs * in property value handling. * * @throws Error * always throws an error. */ private final void shouldNeverHappen(String msg) throws Error { throw new Error(msg); // Programming error: bail out. } /** * Same as shouldNeverHappen(), but provide a source exception. * * @param e * the exception that helped identify the problem * @throws Error * always throws one. */ private final void shouldNeverHappen(Exception e) throws Error { throw new Error(e.toString()); // Programming error: bail out. } /** * Check if a string is a valid JMeter 'expression'. *

        * The current implementation is very basic: it just accepts any string * containing "${" as a valid expression. TODO: improve, but keep returning * true for "${}". */ private final boolean isExpression(String text) { return text.indexOf("${") != -1;//$NON-NLS-1$ } /** * Same as isExpression(String). * * @param text * @return true iif text is a String and isExpression(text). */ private final boolean isExpression(Object text) { return text instanceof String && isExpression((String) text); } /** * @see java.beans.PropertyEditor#getValue() * @see org.apache.jmeter.testelement.property.JMeterProperty */ @Override public Object getValue() { String text = (String) guiEditor.getValue(); Object value; if (text == null) { if (!acceptsNull) { shouldNeverHappen("Text is null but null is not allowed"); } value = null; } else { if (acceptsExpressions && isExpression(text)) { value = text; } else { // not an expression (isn't or can't be), not null. // a check, just in case: if (!acceptsOther && !isATag(text)) { shouldNeverHappen("Text is not a tag but other entries are not allowed"); } try { // Bug 44314 Number field does not seem to accept "" try { typeEditor.setAsText(text); } catch (NumberFormatException e) { if (text.length()==0){ text="0";//$NON-NLS-1$ typeEditor.setAsText(text); } else { shouldNeverHappen(e); } } } catch (IllegalArgumentException e) { shouldNeverHappen(e); } value = typeEditor.getValue(); } } if (log.isDebugEnabled()) { log.debug("->" + (value != null ? value.getClass().getName() : "NULL") + ":" + value); } return value; } @Override public final void setValue(Object value) { /// final because called from ctor String text; if (log.isDebugEnabled()) { log.debug("<-" + (value != null ? value.getClass().getName() : "NULL") + ":" + value); } if (value == null) { if (!acceptsNull) { throw new IllegalArgumentException("Null is not allowed"); } text = null; } else if (acceptsExpressions && isExpression(value)) { text = (String) value; } else { // Not an expression (isn't or can't be), not null. typeEditor.setValue(value); // may throw IllegalArgumentExc. text = fixGetAsTextBug(typeEditor.getAsText()); if (!acceptsOther && !isATag(text)) { throw new IllegalArgumentException("Value not allowed: "+text); } } guiEditor.setValue(text); } /* * Fix bug in JVMs that return true/false rather than True/False * from the type editor getAsText() method */ private String fixGetAsTextBug(String asText) { if (asText == null){ return asText; } if (asText.equals("true")){ log.debug("true=>True");// so we can detect it return "True"; } if (asText.equals("false")){ log.debug("false=>False");// so we can detect it return "False"; } return asText; } @Override public String getAsText() { String text = fixGetAsTextBug(guiEditor.getAsText()); if (text == null) { if (!acceptsNull) { shouldNeverHappen("Text is null, but null is not allowed"); } } else if (!acceptsExpressions || !isExpression(text)) { // not an expression (can't be or isn't), not null. try { typeEditor.setAsText(text); // ensure value is propagated to editor } catch (IllegalArgumentException e) { shouldNeverHappen(e); } text = fixGetAsTextBug(typeEditor.getAsText()); // a check, just in case: if (!acceptsOther && !isATag(text)) { shouldNeverHappen("Text is not a tag, but other values are not allowed"); } } if (log.isDebugEnabled()) { log.debug("->\"" + text + "\""); } return text; } @Override public void setAsText(String text) throws IllegalArgumentException { if (log.isDebugEnabled()) { log.debug(text == null ? "<-null" : "<-\"" + text + "\""); } String value; if (text == null) { if (!acceptsNull) { throw new IllegalArgumentException("Null parameter not allowed"); } value = null; } else { if (acceptsExpressions && isExpression(text)) { value = text; } else { // Some editors do tiny transformations (e.g. "true" to // "True",...): typeEditor.setAsText(text); // may throw IllegalArgumentException value = typeEditor.getAsText(); if (!acceptsOther && !isATag(text)) { throw new IllegalArgumentException("Value not allowed: "+text); } } } guiEditor.setValue(value); } public void propertyChange(PropertyChangeEvent event) { String text = fixGetAsTextBug(guiEditor.getAsText()); if (isValidValue(text)) { lastValidValue = text; firePropertyChange(); } else { if (GuiPackage.getInstance() == null){ log.warn("Invalid value: "+text+" "+typeEditor); } else { JOptionPane.showMessageDialog(guiEditor.getCustomEditor().getParent(), JMeterUtils.getResString("property_editor.value_is_invalid_message"),//$NON-NLS-1$ JMeterUtils.getResString("property_editor.value_is_invalid_title"), //$NON-NLS-1$ JOptionPane.WARNING_MESSAGE); } // Revert to the previous value: guiEditor.setAsText(lastValidValue); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/FileEditor.java0000644000175000017500000001360512032647220026105 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.IntrospectionException; import java.beans.PropertyChangeListener; import java.beans.PropertyDescriptor; import java.beans.PropertyEditor; import java.beans.PropertyEditorSupport; import java.io.File; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JPanel; import org.apache.jmeter.gui.util.FileDialoger; /** * A property editor for File properties. *

        * Note that it never gives out File objects, but always Strings. This is * because JMeter is now too dumb to handle File objects (there's no * FileProperty). * */ public class FileEditor implements PropertyEditor, ActionListener { /** * The editor's panel. */ private final JPanel panel; /** * The editor handling the text field inside: */ private final PropertyEditor editor; /** * @throws IntrospectionException * @deprecated Only for use by test cases */ @Deprecated public FileEditor() throws IntrospectionException { this(new PropertyDescriptor("dummy", null, null)); } public FileEditor(PropertyDescriptor descriptor) { if (descriptor == null) { throw new IllegalArgumentException("Descriptor must not be null"); } // Create a button to trigger the file chooser: JButton button = new JButton("Browse..."); button.addActionListener(this); // Get a WrapperEditor to provide the field or combo -- we'll delegate // most methods to it: boolean notNull = GenericTestBeanCustomizer.notNull(descriptor); boolean notExpression = GenericTestBeanCustomizer.notExpression(descriptor); boolean notOther = GenericTestBeanCustomizer.notOther(descriptor); Object defaultValue = descriptor.getValue(GenericTestBeanCustomizer.DEFAULT); ComboStringEditor cse = new ComboStringEditor(); cse.setNoUndefined(notNull); cse.setNoEdit(notExpression && notOther); editor = new WrapperEditor(this, new SimpleFileEditor(), cse, !notNull, // acceptsNull !notExpression, // acceptsExpressions !notOther, // acceptsOther defaultValue); // default // Create a panel containing the combo and the button: panel = new JPanel(new BorderLayout(5, 0)); panel.add(editor.getCustomEditor(), BorderLayout.CENTER); panel.add(button, BorderLayout.EAST); } /** * {@inheritDoc} */ public void actionPerformed(ActionEvent e) { JFileChooser chooser = FileDialoger.promptToOpenFile(); if (chooser == null){ return; } setValue(chooser.getSelectedFile().getPath()); } /** * @param listener */ public void addPropertyChangeListener(PropertyChangeListener listener) { editor.addPropertyChangeListener(listener); } /** * @return the text */ public String getAsText() { return editor.getAsText(); } /** * @return custom editor panel */ public Component getCustomEditor() { return panel; } /** * @return the Java initialisation string */ public String getJavaInitializationString() { return editor.getJavaInitializationString(); } /** * @return the editor tags */ public String[] getTags() { return editor.getTags(); } /** * @return the value */ public Object getValue() { return editor.getValue(); } /** * @return true if the editor is paintable */ public boolean isPaintable() { return editor.isPaintable(); } /** * @param gfx * @param box */ public void paintValue(Graphics gfx, Rectangle box) { editor.paintValue(gfx, box); } /** * @param listener */ public void removePropertyChangeListener(PropertyChangeListener listener) { editor.removePropertyChangeListener(listener); } /** * @param text * @throws java.lang.IllegalArgumentException */ public void setAsText(String text) throws IllegalArgumentException { editor.setAsText(text); } /** * @param value */ public void setValue(Object value) { editor.setValue(value); } /** * @return true if supports a custom editor */ public boolean supportsCustomEditor() { return editor.supportsCustomEditor(); } private static class SimpleFileEditor extends PropertyEditorSupport { @Override public String getAsText() { Object value = super.getValue(); if (value instanceof File) { return ((File) value).getPath(); } return (String) value; // assume it's string } @Override public void setAsText(String text) throws IllegalArgumentException { super.setValue(new File(text)); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/FieldStringEditor.java0000644000175000017500000000667512032647220027451 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.beans.PropertyEditorSupport; import javax.swing.JTextField; //import org.apache.jorphan.logging.LoggingManager; //import org.apache.log.Logger; /** * This class implements a property editor for non-null String properties that * supports custom editing (i.e.: provides a GUI component) based on a text * field. *

        * The provided GUI is a simple text field. * */ class FieldStringEditor extends PropertyEditorSupport implements ActionListener, FocusListener { // private static final Logger log = LoggingManager.getLoggerForClass(); /** * This will hold the text editing component, either a plain JTextField (in * cases where the combo box would not have other options than 'Edit'), or * the text editing component in the combo box. */ private final JTextField textField; /** * Value on which we started the editing. Used to avoid firing * PropertyChanged events when there's not been such change. */ private String initialValue = ""; protected FieldStringEditor() { super(); textField = new JTextField(); textField.addActionListener(this); textField.addFocusListener(this); } @Override public String getAsText() { return textField.getText(); } @Override public void setAsText(String value) { initialValue = value; textField.setText(value); } @Override public Object getValue() { return getAsText(); } @Override public void setValue(Object value) { if (value instanceof String) { setAsText((String) value); } else { throw new IllegalArgumentException(); } } /** * {@inheritDoc} */ @Override public Component getCustomEditor() { return textField; } // TODO should this implement supportsCustomEditor() ? /** * {@inheritDoc} */ @Override public void firePropertyChange() { String newValue = getAsText(); if (initialValue.equals(newValue)) { return; } initialValue = newValue; super.firePropertyChange(); } /** * {@inheritDoc} */ public void actionPerformed(ActionEvent e) { firePropertyChange(); } /** * {@inheritDoc} */ public void focusGained(FocusEvent e) { } /** * {@inheritDoc} */ public void focusLost(FocusEvent e) { firePropertyChange(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/LongPropertyEditor.java0000644000175000017500000000315112032647220027665 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testbeans.gui; import java.beans.PropertyEditorSupport; /** * Property Editor which handles Long properties. * Uses {@link Long#decode(String)} so supports hex and octal input. */ public class LongPropertyEditor extends PropertyEditorSupport { @Override public void setAsText(String text) { this.setValue(text); } @Override public void setValue(Object value){ if (value instanceof String) { super.setValue(Long.decode((String) value)); // handles hex as well } else if (value == null || value instanceof Long) { super.setValue(value); // not sure if null is passed in but no harm in setting it } else { throw new java.lang.IllegalArgumentException("Unexpected type: "+value.getClass().getName()); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/TestBeanPropertyEditor.java0000644000175000017500000000202312032647220030470 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testbeans.gui; import java.beans.PropertyDescriptor; import java.beans.PropertyEditor; public interface TestBeanPropertyEditor extends PropertyEditor { void setDescriptor(PropertyDescriptor descriptor); } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/BooleanPropertyEditor.java0000644000175000017500000000326012032647220030346 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testbeans.gui; import java.beans.PropertyEditorSupport; /** * Property Editor which handles Boolean properties. */ public class BooleanPropertyEditor extends PropertyEditorSupport { private static final String[] TAGS = {"True", "False"}; // $NON-NLS-1$ @Override public void setAsText(String text) { this.setValue(text); } @Override public void setValue(Object value){ if (value instanceof String) { super.setValue(Boolean.valueOf((String) value)); } else if (value == null || value instanceof Boolean) { super.setValue(value); // not sure if null is passed in but no harm in setting it } else { throw new java.lang.IllegalArgumentException("Unexpected type: "+value.getClass().getName()); } } @Override public String[] getTags() { return TAGS; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/GenericTestBeanCustomizer.java0000644000175000017500000006520012032647220031144 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.Component; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.beans.BeanInfo; import java.beans.PropertyDescriptor; import java.beans.PropertyEditor; import java.beans.PropertyEditorManager; import java.io.Serializable; import java.text.MessageFormat; import java.util.Arrays; import java.util.Comparator; import java.util.Map; import java.util.MissingResourceException; import java.util.ResourceBundle; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingConstants; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The GenericTestBeanCustomizer is designed to provide developers with a * mechanism to quickly implement GUIs for new components. *

        * It allows editing each of the public exposed properties of the edited type 'a * la JavaBeans': as far as the types of those properties have an associated * editor, there's no GUI development required. *

        * This class understands the following PropertyDescriptor attributes: *

        *
        group: String
        *
        Group under which the property should be shown in the GUI. The string is * also used as a group title (but see comment on resourceBundle below). The * default group is "".
        *
        order: Integer
        *
        Order in which the property will be shown in its group. A smaller * integer means higher up in the GUI. The default order is 0. Properties of * equal order are sorted alphabetically.
        *
        tags: String[]
        *
        List of values to be offered for the property in addition to those * offered by its property editor.
        *
        notUndefined: Boolean
        *
        If true, the property should not be left undefined. A default * attribute must be provided if this is set.
        *
        notExpression: Boolean
        *
        If true, the property content should always be constant: JMeter * 'expressions' (strings using ${var}, etc...) can't be used. *
        notOther: Boolean
        *
        If true, the property content must always be one of the tags values or * null. *
        default: Object
        *
        Initial value for the property's GUI. Must be provided and be non-null * if notUndefined is set. Must be one of the provided tags (or null) if * notOther is set. *
        *

        * The following BeanDescriptor attributes are also understood: *

        *
        group.group.order: Integer
        *
        where group is a group name used in a group * attribute in one or more PropertyDescriptors. Defines the order in which the * group will be shown in the GUI. A smaller integer means higher up in the GUI. * The default order is 0. Groups of equal order are sorted alphabetically.
        *
        resourceBundle: ResourceBundle
        *
        A resource bundle to be used for GUI localization: group display names * will be obtained from property "group.displayName" if * available (where group is the group name). *
        */ public class GenericTestBeanCustomizer extends JPanel implements SharedCustomizer { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); // should be quicker to find the editors if they are registered. static { PropertyEditorManager.registerEditor(Long.class, LongPropertyEditor.class); PropertyEditorManager.registerEditor(Integer.class, IntegerPropertyEditor.class); PropertyEditorManager.registerEditor(Boolean.class, BooleanPropertyEditor.class); } public static final String GROUP = "group"; //$NON-NLS-1$ public static final String ORDER = "order"; //$NON-NLS-1$ /** * Array of permissible values. *

        * Must be provided if: *

          *
        • {@link #NOT_OTHER} is TRUE, and
        • *
        • {@link PropertyEditor#getTags()} is null
        • *
        */ public static final String TAGS = "tags"; //$NON-NLS-1$ /** * Whether the field must be defined (i.e. is required); * Boolean, defaults to FALSE */ public static final String NOT_UNDEFINED = "notUndefined"; //$NON-NLS-1$ /** Whether the field disallows JMeter expressions; Boolean, default FALSE */ public static final String NOT_EXPRESSION = "notExpression"; //$NON-NLS-1$ /** Whether the field disallows constant values different from the provided tags; Boolean, default FALSE */ public static final String NOT_OTHER = "notOther"; //$NON-NLS-1$ /** Default value, must be provided if {@link #NOT_UNDEFINED} is TRUE */ public static final String DEFAULT = "default"; //$NON-NLS-1$ public static final String RESOURCE_BUNDLE = "resourceBundle"; //$NON-NLS-1$ /** Property editor override; must be an enum of type {@link TypeEditor} */ public static final String GUITYPE = "guiType"; // $NON-NLS-$ public static final String ORDER(String group) { return "group." + group + ".order"; } public static final String DEFAULT_GROUP = ""; @SuppressWarnings("unused") // TODO - use or remove private int scrollerCount = 0; /** * BeanInfo object for the class of the objects being edited. */ private transient BeanInfo beanInfo; /** * Property descriptors from the beanInfo. */ private transient PropertyDescriptor[] descriptors; /** * Property editors -- or null if the property can't be edited. Unused if * customizerClass==null. */ private transient PropertyEditor[] editors; /** * Message format for property field labels: */ private MessageFormat propertyFieldLabelMessage; /** * Message format for property tooltips: */ private MessageFormat propertyToolTipMessage; /** * The Map we're currently customizing. Set by setObject(). */ private Map propertyMap; /** * @deprecated only for use by test code */ @Deprecated public GenericTestBeanCustomizer(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } /** * Create a customizer for a given test bean type. * * @param testBeanClass * a subclass of TestBean * @see org.apache.jmeter.testbeans.TestBean */ GenericTestBeanCustomizer(BeanInfo beanInfo) { super(); this.beanInfo = beanInfo; // Get and sort the property descriptors: descriptors = beanInfo.getPropertyDescriptors(); Arrays.sort(descriptors, new PropertyComparator(beanInfo)); // Obtain the propertyEditors: editors = new PropertyEditor[descriptors.length]; for (int i = 0; i < descriptors.length; i++) { // Index is also used for accessing editors array PropertyDescriptor descriptor = descriptors[i]; String name = descriptor.getName(); // Don't get editors for hidden or non-read-write properties: if (descriptor.isHidden() || (descriptor.isExpert() && !JMeterUtils.isExpertMode()) || descriptor.getReadMethod() == null || descriptor.getWriteMethod() == null) { log.debug("Skipping editor for property " + name); editors[i] = null; continue; } PropertyEditor propertyEditor; Object guiType = descriptor.getValue(GUITYPE); if (guiType instanceof TypeEditor) { propertyEditor = ((TypeEditor) guiType).getInstance(descriptor); } else { Class editorClass = descriptor.getPropertyEditorClass(); if (log.isDebugEnabled()) { log.debug("Property " + name + " has editor class " + editorClass); } if (editorClass != null) { try { propertyEditor = (PropertyEditor) editorClass.newInstance(); } catch (InstantiationException e) { log.error("Can't create property editor.", e); throw new Error(e.toString()); } catch (IllegalAccessException e) { log.error("Can't create property editor.", e); throw new Error(e.toString()); } } else { Class c = descriptor.getPropertyType(); propertyEditor = PropertyEditorManager.findEditor(c); } } if (propertyEditor == null) { log.warn("No editor for property: " + name + " type: " + descriptor.getPropertyType() + " in bean: " + beanInfo.getBeanDescriptor().getDisplayName() ); editors[i] = null; continue; } if (log.isDebugEnabled()) { log.debug("Property " + name + " has property editor " + propertyEditor); } validateAttributes(descriptor, propertyEditor); if (!propertyEditor.supportsCustomEditor()) { propertyEditor = createWrapperEditor(propertyEditor, descriptor); if (log.isDebugEnabled()) { log.debug("Editor for property " + name + " is wrapped in " + propertyEditor); } } if(propertyEditor instanceof TestBeanPropertyEditor) { ((TestBeanPropertyEditor)propertyEditor).setDescriptor(descriptor); } if (propertyEditor.getCustomEditor() instanceof JScrollPane) { scrollerCount++; } editors[i] = propertyEditor; // Initialize the editor with the provided default value or null: setEditorValue(i, descriptor.getValue(DEFAULT)); } // Obtain message formats: propertyFieldLabelMessage = new MessageFormat(JMeterUtils.getResString("property_as_field_label")); //$NON-NLS-1$ propertyToolTipMessage = new MessageFormat(JMeterUtils.getResString("property_tool_tip")); //$NON-NLS-1$ // Initialize the GUI: init(); } /** * Validate the descriptor attributes. * * @param pd the descriptor * @param pe the propertyEditor */ private static void validateAttributes(PropertyDescriptor pd, PropertyEditor pe) { if (notNull(pd) && pd.getValue(DEFAULT) == null) { log.warn(getDetails(pd) + " requires a value but does not provide a default."); } if (notOther(pd) && pd.getValue(TAGS) == null && pe.getTags() == null) { log.warn(getDetails(pd) + " does not have tags but other values are not allowed."); } if (!notNull(pd)) { Class propertyType = pd.getPropertyType(); if (propertyType.isPrimitive()) { log.warn(getDetails(pd) + " allows null but is a primitive type"); } } if (!pd.attributeNames().hasMoreElements()) { log.warn(getDetails(pd) + " does not appear to have been configured"); } } /** * Identify the property from the descriptor. * * @param pd * @return */ private static String getDetails(PropertyDescriptor pd) { StringBuilder sb = new StringBuilder(); sb.append(pd.getReadMethod().getDeclaringClass().getName()); sb.append('#'); sb.append(pd.getName()); return sb.toString(); } /** * Find the default typeEditor and a suitable guiEditor for the given * property descriptor, and combine them in a WrapperEditor. * * @param typeEditor * @param descriptor * @return */ private WrapperEditor createWrapperEditor(PropertyEditor typeEditor, PropertyDescriptor descriptor) { String[] editorTags = typeEditor.getTags(); String[] additionalTags = (String[]) descriptor.getValue(TAGS); String[] tags = null; if (editorTags == null) { tags = additionalTags; } else if (additionalTags == null) { tags = editorTags; } else { tags = new String[editorTags.length + additionalTags.length]; int j = 0; for (String editorTag : editorTags) { tags[j++] = editorTag; } for (String additionalTag : additionalTags) { tags[j++] = additionalTag; } } boolean notNull = notNull(descriptor); boolean notExpression = notExpression(descriptor); boolean notOther = notOther(descriptor); PropertyEditor guiEditor; if (notNull && tags == null) { guiEditor = new FieldStringEditor(); } else { ComboStringEditor e = new ComboStringEditor(); e.setNoUndefined(notNull); e.setNoEdit(notExpression && notOther); e.setTags(tags); guiEditor = e; } WrapperEditor wrapper = new WrapperEditor(typeEditor, guiEditor, !notNull, // acceptsNull !notExpression, // acceptsExpressions !notOther, // acceptsOther descriptor.getValue(DEFAULT)); return wrapper; } /** * Returns true if the property disallows constant values different from the provided tags. * * @param descriptor the property descriptor * @return true if the attribute {@link #NOT_OTHER} is defined and equal to Boolean.TRUE; * otherwise the default is false */ static boolean notOther(PropertyDescriptor descriptor) { boolean notOther = Boolean.TRUE.equals(descriptor.getValue(NOT_OTHER)); return notOther; } /** * Returns true if the property does not allow JMeter expressions. * * @param descriptor the property descriptor * @return true if the attribute {@link #NOT_EXPRESSION} is defined and equal to Boolean.TRUE; * otherwise the default is false */ static boolean notExpression(PropertyDescriptor descriptor) { boolean notExpression = Boolean.TRUE.equals(descriptor.getValue(NOT_EXPRESSION)); return notExpression; } /** * Returns true if the property must be defined (i.e. is required); * * @param descriptor the property descriptor * @return true if the attribute {@link #NOT_UNDEFINED} is defined and equal to Boolean.TRUE; * otherwise the default is false */ static boolean notNull(PropertyDescriptor descriptor) { boolean notNull = Boolean.TRUE.equals(descriptor.getValue(NOT_UNDEFINED)); return notNull; } /** * Set the value of the i-th property, properly reporting a possible * failure. * * @param i * the index of the property in the descriptors and editors * arrays * @param value * the value to be stored in the editor * * @throws IllegalArgumentException * if the editor refuses the value */ private void setEditorValue(int i, Object value) throws IllegalArgumentException { editors[i].setValue(value); } /** * {@inheritDoc} * @param map must be an instance of Map<String, Object> */ @SuppressWarnings("unchecked") public void setObject(Object map) { propertyMap = (Map) map; if (propertyMap.size() == 0) { // Uninitialized -- set it to the defaults: for (PropertyDescriptor descriptor : descriptors) { Object value = descriptor.getValue(DEFAULT); String name = descriptor.getName(); if (value != null) { propertyMap.put(name, value); log.debug("Set " + name + "= " + value); } firePropertyChange(name, null, value); } } // Now set the editors to the element's values: for (int i = 0; i < editors.length; i++) { if (editors[i] == null) { continue; } try { setEditorValue(i, propertyMap.get(descriptors[i].getName())); } catch (IllegalArgumentException e) { // I guess this can happen as a result of a bad // file read? In this case, it would be better to replace the // incorrect value with anything valid, e.g. the default value // for the property. // But for the time being, I just prefer to be aware of any // problems occuring here, most likely programming errors, // so I'll bail out. // (MS Note) Can't bail out - newly create elements have blank // values and must get the defaults. // Also, when loading previous versions of jmeter test scripts, // some values // may not be right, and should get default values - MS // TODO: review this and possibly change to: setEditorValue(i, descriptors[i].getValue(DEFAULT)); } } } // /** // * Find the index of the property of the given name. // * // * @param name // * the name of the property // * @return the index of that property in the descriptors array, or -1 if // * there's no property of this name. // */ // private int descriptorIndex(String name) // NOTUSED // { // for (int i = 0; i < descriptors.length; i++) { // if (descriptors[i].getName().equals(name)) { // return i; // } // } // return -1; // } /** * Initialize the GUI. */ private void init() { setLayout(new GridBagLayout()); GridBagConstraints cl = new GridBagConstraints(); // for labels cl.gridx = 0; cl.anchor = GridBagConstraints.EAST; cl.insets = new Insets(0, 1, 0, 1); GridBagConstraints ce = new GridBagConstraints(); // for editors ce.fill = GridBagConstraints.BOTH; ce.gridx = 1; ce.weightx = 1.0; ce.insets = new Insets(0, 1, 0, 1); GridBagConstraints cp = new GridBagConstraints(); // for panels cp.fill = GridBagConstraints.BOTH; cp.gridx = 1; cp.gridy = GridBagConstraints.RELATIVE; cp.gridwidth = 2; cp.weightx = 1.0; JPanel currentPanel = this; String currentGroup = DEFAULT_GROUP; int y = 0; for (int i = 0; i < editors.length; i++) { if (editors[i] == null) { continue; } if (log.isDebugEnabled()) { log.debug("Laying property " + descriptors[i].getName()); } String g = group(descriptors[i]); if (!currentGroup.equals(g)) { if (currentPanel != this) { add(currentPanel, cp); } currentGroup = g; currentPanel = new JPanel(new GridBagLayout()); currentPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), groupDisplayName(g))); cp.weighty = 0.0; y = 0; } Component customEditor = editors[i].getCustomEditor(); boolean multiLineEditor = false; if (customEditor.getPreferredSize().height > 50 || customEditor instanceof JScrollPane) { // TODO: the above works in the current situation, but it's // just a hack. How to get each editor to report whether it // wants to grow bigger? Whether the property label should // be at the left or at the top of the editor? ...? multiLineEditor = true; } JLabel label = createLabel(descriptors[i]); label.setLabelFor(customEditor); cl.gridy = y; cl.gridwidth = multiLineEditor ? 2 : 1; cl.anchor = multiLineEditor ? GridBagConstraints.CENTER : GridBagConstraints.EAST; currentPanel.add(label, cl); ce.gridx = multiLineEditor ? 0 : 1; ce.gridy = multiLineEditor ? ++y : y; ce.gridwidth = multiLineEditor ? 2 : 1; ce.weighty = multiLineEditor ? 1.0 : 0.0; cp.weighty += ce.weighty; currentPanel.add(customEditor, ce); y++; } if (currentPanel != this) { add(currentPanel, cp); } // Add a 0-sized invisible component that will take all the vertical // space that nobody wants: cp.weighty = 0.0001; add(Box.createHorizontalStrut(0), cp); } private JLabel createLabel(PropertyDescriptor desc) { String text = desc.getDisplayName(); if (!"".equals(text)) { text = propertyFieldLabelMessage.format(new Object[] { desc.getDisplayName() }); } // if the displayName is the empty string, leave it like that. JLabel label = new JLabel(text); label.setHorizontalAlignment(SwingConstants.TRAILING); text = propertyToolTipMessage.format(new Object[] { desc.getName(), desc.getShortDescription() }); label.setToolTipText(text); return label; } /** * Obtain a property descriptor's group. * * @param descriptor * @return the group String. */ private static String group(PropertyDescriptor d) { String group = (String) d.getValue(GROUP); if (group == null){ group = DEFAULT_GROUP; } return group; } /** * Obtain a group's display name */ private String groupDisplayName(String group) { try { ResourceBundle b = (ResourceBundle) beanInfo.getBeanDescriptor().getValue(RESOURCE_BUNDLE); if (b == null) { return group; } return b.getString(group + ".displayName"); } catch (MissingResourceException e) { return group; } } /** * Comparator used to sort properties for presentation in the GUI. */ private static class PropertyComparator implements Comparator, Serializable { private static final long serialVersionUID = 240L; private final BeanInfo beanInfo; public PropertyComparator(BeanInfo beanInfo) { this.beanInfo = beanInfo; } public int compare(PropertyDescriptor d1, PropertyDescriptor d2) { int result; String g1 = group(d1), g2 = group(d2); Integer go1 = groupOrder(g1), go2 = groupOrder(g2); result = go1.compareTo(go2); if (result != 0) { return result; } result = g1.compareTo(g2); if (result != 0) { return result; } Integer po1 = propertyOrder(d1), po2 = propertyOrder(d2); result = po1.compareTo(po2); if (result != 0) { return result; } return d1.getName().compareTo(d2.getName()); } /** * Obtain a group's order. * * @param group * group name * @return the group's order (zero by default) */ private Integer groupOrder(String group) { Integer order = (Integer) beanInfo.getBeanDescriptor().getValue(ORDER(group)); if (order == null) { order = Integer.valueOf(0); } return order; } /** * Obtain a property's order. * * @param d * @return the property's order attribute (zero by default) */ private Integer propertyOrder(PropertyDescriptor d) { Integer order = (Integer) d.getValue(ORDER); if (order == null) { order = Integer.valueOf(0); } return order; } } /** * Save values from the GUI fields into the property map */ void saveGuiFields() { for (int i = 0; i < editors.length; i++) { PropertyEditor propertyEditor=editors[i]; // might be null (e.g. in testing) if (propertyEditor != null) { Object value = propertyEditor.getValue(); String name = descriptors[i].getName(); if (value == null) { propertyMap.remove(name); if (log.isDebugEnabled()) { log.debug("Unset " + name); } } else { propertyMap.put(name, value); if (log.isDebugEnabled()) { log.debug("Set " + name + "= " + value); } } } } } void clearGuiFields() { for (int i = 0; i < editors.length; i++) { PropertyEditor propertyEditor=editors[i]; // might be null (e.g. in testing) if (propertyEditor != null) { try { if (propertyEditor instanceof WrapperEditor){ WrapperEditor we = (WrapperEditor) propertyEditor; String tags[]=we.getTags(); if (tags != null && tags.length > 0) { we.setAsText(tags[0]); } else { we.resetValue(); } } else if (propertyEditor instanceof ComboStringEditor) { ComboStringEditor cse = (ComboStringEditor) propertyEditor; cse.setAsText(cse.getInitialEditValue()); } else { propertyEditor.setAsText(""); } } catch (IllegalArgumentException ex){ log.error("Failed to set field "+descriptors[i].getName(),ex); } } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/ComboStringEditor.java0000644000175000017500000001670212032647220027455 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.Component; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.beans.PropertyEditorSupport; import java.util.Arrays; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.text.JTextComponent; import org.apache.jmeter.util.JMeterUtils; /** * This class implements a property editor for possibly null String properties * that supports custom editing (i.e.: provides a GUI component) based on a * combo box. *

        * The provided GUI is a combo box with: *

          *
        • An option for "undefined" (corresponding to the null value), unless the * noUndefined property is set. *
        • An option for each value in the tags property. *
        • The possibility to write your own value, unless the noEdit * property is set. *
        * */ class ComboStringEditor extends PropertyEditorSupport implements ItemListener { /** * The list of options to be offered by this editor. */ private String[] tags = new String[0]; /** * True iif the editor should not accept (nor produce) a null value. */ private boolean noUndefined = false; /** * True iif the editor should not accept (nor produce) any non-null values * different from the provided tags. */ private boolean noEdit = false; /** * The edited property's default value. */ private String initialEditValue; private final JComboBox combo; private final DefaultComboBoxModel model; private boolean startingEdit = false; /* * True iif we're currently processing an event triggered by the user * selecting the "Edit" option. Used to prevent reverting the combo to * non-editable during processing of secondary events. */ // TODO - do these behave properly during language change? Probably not. // Needs to be visible to test cases static final Object UNDEFINED = new UniqueObject(JMeterUtils.getResString("property_undefined")); //$NON-NLS-1$ private static final Object EDIT = new UniqueObject(JMeterUtils.getResString("property_edit")); //$NON-NLS-1$ ComboStringEditor() { // Create the combo box we will use to edit this property: model = new DefaultComboBoxModel(); model.addElement(UNDEFINED); model.addElement(EDIT); combo = new JComboBox(model); combo.addItemListener(this); combo.setEditable(false); } /** * {@inheritDoc} */ @Override public boolean supportsCustomEditor() { return true; } /** * {@inheritDoc} */ @Override public Component getCustomEditor() { return combo; } /** * {@inheritDoc} */ @Override public Object getValue() { return getAsText(); } /** * {@inheritDoc} */ @Override public String getAsText() { Object value = combo.getSelectedItem(); if (value == UNDEFINED) { return null; } return (String) value; } /** * {@inheritDoc} */ @Override public void setValue(Object value) { setAsText((String) value); } /** * {@inheritDoc} */ @Override public void setAsText(String value) { combo.setEditable(true); if (value == null) { combo.setSelectedItem(UNDEFINED); } else { combo.setSelectedItem(value); } if (!startingEdit && combo.getSelectedIndex() >= 0) { combo.setEditable(false); } } /** * {@inheritDoc} */ public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getItem() == EDIT) { startingEdit = true; startEditing(); startingEdit = false; } else { if (!startingEdit && combo.getSelectedIndex() >= 0) { combo.setEditable(false); } firePropertyChange(); } } } private void startEditing() { JTextComponent textField = (JTextComponent) combo.getEditor().getEditorComponent(); combo.setEditable(true); textField.requestFocus(); String text = initialEditValue; if (initialEditValue == null) { text = ""; // will revert to last valid value if invalid } combo.setSelectedItem(text); int i = text.indexOf("${}"); if (i != -1) { textField.setCaretPosition(i + 2); } else { textField.selectAll(); } } public String getInitialEditValue() { return initialEditValue; } public boolean getNoEdit() { return noEdit; } public boolean getNoUndefined() { return noUndefined; } /** * {@inheritDoc} */ @Override public String[] getTags() { return tags; } /** * @param object */ public void setInitialEditValue(String object) { initialEditValue = object; } /** * @param b */ public void setNoEdit(boolean b) { if (noEdit == b) { return; } noEdit = b; if (noEdit) { model.removeElement(EDIT); } else { model.addElement(EDIT); } } /** * @param b */ public void setNoUndefined(boolean b) { if (noUndefined == b) { return; } noUndefined = b; if (noUndefined) { model.removeElement(UNDEFINED); } else { model.insertElementAt(UNDEFINED, 0); } } /** * @param strings */ public void setTags(String[] strings) { if (Arrays.equals(tags,strings)) { return; } for (int i = 0; i < tags.length; i++) { model.removeElement(tags[i]); } tags = strings == null ? new String[0] : strings; int b = noUndefined ? 0 : 1; // base index for tags for (int i = 0; i < tags.length; i++) { model.insertElementAt(tags[i], b + i); } } /** * This is a funny hack: if you use a plain String, entering the text of the * string in the editor will make the combo revert to that option -- which * actually amounts to making that string 'reserved'. I preferred to avoid * this by using a different type having a controlled .toString(). */ private static class UniqueObject { private final String s; UniqueObject(String s) { this.s = s; } @Override public String toString() { return s; } } }apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/TableEditor.java0000644000175000017500000002337412032647220026261 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testbeans.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.beans.PropertyDescriptor; import java.beans.PropertyEditorSupport; import java.lang.reflect.Method; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Locale; import javax.swing.CellEditor; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.log.Logger; /** * Table editor for TestBean GUI properties. * Currently only works for: * - property type Collection, where there is a single header entry */ public class TableEditor extends PropertyEditorSupport implements FocusListener,TestBeanPropertyEditor,TableModelListener { private static final Logger log = LoggingManager.getLoggerForClass(); /** * attribute name for class name of a table row; * value must be java.lang.String, or a class which supports set and get/is methods for the property name. */ public static final String CLASSNAME = "tableObject.classname"; // $NON-NLS-1$ /** * attribute name for table headers, value must be a String array. * If {@link #CLASSNAME} is java.lang.String, there must be only a single entry. */ public static final String HEADERS = "table.headers"; // $NON-NLS-1$ /** attribute name for property names within the {@link #CLASSNAME}, value must be String array */ public static final String OBJECT_PROPERTIES = "tableObject.properties"; // $NON-NLS-1$ private JTable table; private ObjectTableModel model; private Class clazz; private PropertyDescriptor descriptor; private final JButton addButton,removeButton,clearButton; public TableEditor() { addButton = new JButton(JMeterUtils.getResString("add")); // $NON-NLS-1$ addButton.addActionListener(new AddListener()); removeButton = new JButton(JMeterUtils.getResString("remove")); // $NON-NLS-1$ removeButton.addActionListener(new RemoveListener()); clearButton = new JButton(JMeterUtils.getResString("clear")); // $NON-NLS-1$ clearButton.addActionListener(new ClearListener()); } @Override public String getAsText() { return null; } @Override public Component getCustomEditor() { JComponent pane = makePanel(); pane.doLayout(); pane.validate(); return pane; } private JComponent makePanel() { JPanel p = new JPanel(new BorderLayout()); JScrollPane scroller = new JScrollPane(table); scroller.setPreferredSize(scroller.getMinimumSize()); p.add(scroller,BorderLayout.CENTER); JPanel south = new JPanel(); south.add(addButton); south.add(removeButton); south.add(clearButton); p.add(south,BorderLayout.SOUTH); return p; } @Override public Object getValue() { return model.getObjectList(); } @Override public void setAsText(String text) throws IllegalArgumentException { //not interested in this method. } @Override public void setValue(Object value) { if(value != null) { model.setRows(convertCollection((Collection)value)); } else model.clearData(); this.firePropertyChange(); } private Collection convertCollection(Collection values) { List l = new LinkedList(); for(Object obj : values) { if(obj instanceof TestElementProperty) { l.add(((TestElementProperty)obj).getElement()); } else { l.add(obj); } } return l; } @Override public boolean supportsCustomEditor() { return true; } /** * For the table editor, the CLASSNAME attribute must simply be the name of the class of object it will hold * where each row holds one object. */ public void setDescriptor(PropertyDescriptor descriptor) { this.descriptor = descriptor; String value = (String)descriptor.getValue(CLASSNAME); if (value == null) { throw new RuntimeException("The Table Editor requires the CLASSNAME atttribute be set - the name of the object to represent a row"); } try { clazz = Class.forName(value); initializeModel(); } catch (ClassNotFoundException e) { throw new RuntimeException("Could not find the CLASSNAME class "+ value, e); } } void initializeModel() { Object hdrs = descriptor.getValue(HEADERS); if (!(hdrs instanceof String[])){ throw new RuntimeException("attribute HEADERS must be a String array"); } if(clazz == String.class) { model = new ObjectTableModel((String[])hdrs,new Functor[0],new Functor[0],new Class[]{String.class}); } else { Object value = descriptor.getValue(OBJECT_PROPERTIES); if (!(value instanceof String[])) { throw new RuntimeException("attribute OBJECT_PROPERTIES must be a String array"); } String[] props = (String[])value; Functor[] writers = new Functor[props.length]; Functor[] readers = new Functor[props.length]; Class[] editors = new Class[props.length]; int count = 0; for(String propName : props) { propName = propName.substring(0,1).toUpperCase(Locale.ENGLISH) + propName.substring(1); writers[count] = createWriter(clazz,propName); readers[count] = createReader(clazz,propName); editors[count] = getArgForWriter(clazz,propName); count++; } model = new ObjectTableModel((String[])hdrs,readers,writers,editors); } model.addTableModelListener(this); table = new JTable(model); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.addFocusListener(this); } Functor createWriter(Class c,String propName) { String setter = "set" + propName; // $NON-NLS-1$ return new Functor(setter); } Functor createReader(Class c,String propName) { String getter = "get" + propName; // $NON-NLS-1$ try { c.getMethod(getter,new Class[0]); return new Functor(getter); } catch(Exception e) { return new Functor("is" + propName); } } Class getArgForWriter(Class c,String propName) { String setter = "set" + propName; // $NON-NLS-1$ for(Method m : c.getMethods()) { if(m.getName().equals(setter)) { return m.getParameterTypes()[0]; } } return null; } public void tableChanged(TableModelEvent e) { this.firePropertyChange(); } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { final int editingRow = table.getEditingRow(); final int editingColumn = table.getEditingColumn(); CellEditor ce = null; if (editingRow != -1 && editingColumn != -1){ ce = table.getCellEditor(editingRow,editingColumn); } Component editor = table.getEditorComponent(); if(ce != null && (editor == null || editor != e.getOppositeComponent())) { ce.stopCellEditing(); } else if(editor != null) { editor.addFocusListener(this); } this.firePropertyChange(); } private class AddListener implements ActionListener { public void actionPerformed(ActionEvent e) { try { model.addRow(clazz.newInstance()); }catch(Exception err) { log.error("The class type given to TableEditor was not instantiable. ",err); } } } private class RemoveListener implements ActionListener { public void actionPerformed(ActionEvent e) { int row = table.getSelectedRow(); if (row >= 0) { model.removeRow(row); } } } private class ClearListener implements ActionListener { public void actionPerformed(ActionEvent e) { model.clearData(); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java0000644000175000017500000000552712032647220026747 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 21, 2004 */ package org.apache.jmeter.testbeans.gui; import java.awt.Component; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.beans.PropertyEditorSupport; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; public class TextAreaEditor extends PropertyEditorSupport implements FocusListener { private JTextArea textUI; private JScrollPane scroller; /** {@inheritDoc} */ public void focusGained(FocusEvent e) { } /** {@inheritDoc} */ public void focusLost(FocusEvent e) { firePropertyChange(); } private final void init() {// called from ctor, so must not be overridable textUI = new JTextArea(); textUI.addFocusListener(this); textUI.setWrapStyleWord(true); textUI.setLineWrap(true); scroller = new JScrollPane(textUI, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); } /** * */ public TextAreaEditor() { super(); init(); } /** * @param source */ public TextAreaEditor(Object source) { super(source); init(); setValue(source); } /** {@inheritDoc} */ @Override public String getAsText() { return textUI.getText(); } /** {@inheritDoc} */ @Override public Component getCustomEditor() { return scroller; } /** {@inheritDoc} */ @Override public void setAsText(String text) throws IllegalArgumentException { textUI.setText(text); } /** {@inheritDoc} */ @Override public void setValue(Object value) { if (value != null) { textUI.setText(value.toString()); } else { textUI.setText(""); } } /** {@inheritDoc} */ @Override public Object getValue() { return textUI.getText(); } /** {@inheritDoc} */ @Override public boolean supportsCustomEditor() { return true; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/gui/PasswordEditor.java0000644000175000017500000000626212032647220027031 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans.gui; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.beans.PropertyEditorSupport; import javax.swing.JPasswordField; /** * This class implements a property editor for non-null String properties that * supports custom editing (i.e.: provides a GUI component) based on a text * field. *

        * The provided GUI is a simple password field. * */ public class PasswordEditor extends PropertyEditorSupport implements ActionListener, FocusListener { private JPasswordField textField; /** * Value on which we started the editing. Used to avoid firing * PropertyChanged events when there's not been such change. */ private String initialValue = ""; protected PasswordEditor() { super(); textField = new JPasswordField(); textField.addActionListener(this); textField.addFocusListener(this); } @Override public String getAsText() { return new String(textField.getPassword()); } @Override public void setAsText(String value) { initialValue = value; textField.setText(value); } @Override public Object getValue() { return getAsText(); } @Override public void setValue(Object value) { if (value instanceof String) { setAsText((String) value); } else { throw new IllegalArgumentException(); } } /** * {@inheritDoc} */ @Override public Component getCustomEditor() { return textField; } @Override public boolean supportsCustomEditor() { return true; } /** * Avoid needlessly firing PropertyChanged events. *

        * {@inheritDoc} */ @Override public void firePropertyChange() { String newValue = getAsText(); if (initialValue.equals(newValue)) { return; } initialValue = newValue; super.firePropertyChange(); } /** * {@inheritDoc} */ public void actionPerformed(ActionEvent e) { firePropertyChange(); } /** * {@inheritDoc} */ public void focusGained(FocusEvent e) { } /** * {@inheritDoc} */ public void focusLost(FocusEvent e) { firePropertyChange(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/TestBean.java0000644000175000017500000000173612032647220025002 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 21, 2004 */ package org.apache.jmeter.testbeans; /** * Marker interface to tell JMeter to make a Test Bean Gui for the class. * */ public interface TestBean { } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/TestBeanHelper.java0000644000175000017500000001603012032647220026133 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package org.apache.jmeter.testbeans; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Collection; import java.util.LinkedList; import org.apache.jmeter.testbeans.gui.GenericTestBeanCustomizer; import org.apache.jmeter.testbeans.gui.TableEditor; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.MultiProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.Converter; import org.apache.log.Logger; /** * This is an experimental class. An attempt to address the complexity of * writing new JMeter components. *

        * TestBean currently extends AbstractTestElement to support * backward-compatibility, but the property-value-map may later on be separated * from the test beans themselves. To ensure this will be doable with minimum * damage, all inherited methods are deprecated. * */ public class TestBeanHelper { protected static final Logger log = LoggingManager.getLoggerForClass(); /** * Prepare the bean for work by populating the bean's properties from the * property value map. *

        * * @deprecated to limit it's usage in expectation of moving it elsewhere. */ @Deprecated public static void prepare(TestElement el) { if (!(el instanceof TestBean)) { return; } try { BeanInfo beanInfo = Introspector.getBeanInfo(el.getClass()); PropertyDescriptor[] desc = beanInfo.getPropertyDescriptors(); Object[] param = new Object[1]; if (log.isDebugEnabled()) { log.debug("Preparing " + el.getClass()); } for (int x = 0; x < desc.length; x++) { // Obtain a value of the appropriate type for this property. JMeterProperty jprop = el.getProperty(desc[x].getName()); Class type = desc[x].getPropertyType(); Object value = unwrapProperty(desc[x], jprop, type); if (log.isDebugEnabled()) { log.debug("Setting " + jprop.getName() + "=" + value); } // Set the bean's property to the value we just obtained: if (value != null || !type.isPrimitive()) // We can't assign null to primitive types. { param[0] = value; Method writeMethod = desc[x].getWriteMethod(); if (writeMethod!=null) { invokeOrBailOut(el, writeMethod, param); } } } } catch (IntrospectionException e) { log.error("Couldn't set properties for " + el.getClass().getName(), e); } } /** * @param desc * @param x * @param jprop * @param type * @return */ private static Object unwrapProperty(PropertyDescriptor desc, JMeterProperty jprop, Class type) { Object value; if(jprop instanceof TestElementProperty) { TestElement te = ((TestElementProperty)jprop).getElement(); if(te instanceof TestBean) { prepare(te); } value = te; } else if(jprop instanceof MultiProperty) { value = unwrapCollection((MultiProperty)jprop,(String)desc.getValue(TableEditor.CLASSNAME)); } // value was not provided, and this is allowed else if (jprop instanceof NullProperty && // use negative condition so missing (null) value is treated as FALSE ! Boolean.TRUE.equals(desc.getValue(GenericTestBeanCustomizer.NOT_UNDEFINED))) { value=null; } else { value = Converter.convert(jprop.getStringValue(), type); } return value; } private static Object unwrapCollection(MultiProperty prop,String type) { if(prop instanceof CollectionProperty) { Collection values = new LinkedList(); PropertyIterator iter = prop.iterator(); while(iter.hasNext()) { try { values.add(unwrapProperty(null,iter.next(),Class.forName(type))); } catch(Exception e) { log.error("Couldn't convert object: " + prop.getObjectValue() + " to " + type,e); } } return values; } return null; } /** * Utility method that invokes a method and does the error handling around * the invocation. * * @param method * @param params * @return the result of the method invocation. */ private static Object invokeOrBailOut(Object invokee, Method method, Object[] params) { try { return method.invoke(invokee, params); } catch (IllegalArgumentException e) { throw new Error(createMessage(invokee, method, params), e); } catch (IllegalAccessException e) { throw new Error(createMessage(invokee, method, params), e); } catch (InvocationTargetException e) { throw new Error(createMessage(invokee, method, params), e); } } private static String createMessage(Object invokee, Method method, Object[] params){ StringBuilder sb = new StringBuilder(); sb.append("This should never happen. Tried to invoke:\n"); sb.append(invokee.getClass().getName()); sb.append("#"); sb.append(method.getName()); sb.append("("); for(Object o : params) { sb.append(o.getClass().getSimpleName()); sb.append(' '); sb.append(o); sb.append(' '); } sb.append(")"); return sb.toString(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testbeans/TestBeanBeanInfo.java0000644000175000017500000000517612032647220026406 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testbeans; import java.awt.Image; import java.beans.BeanDescriptor; import java.beans.BeanInfo; import java.beans.EventSetDescriptor; import java.beans.MethodDescriptor; import java.beans.PropertyDescriptor; /** * This is the BeanInfo object for the TestBean class. It acts as a "stopper" * for the introspector: we don't want it to look at properties defined at this * or higher classes. *

        * Note this is really needed since using Introspector.getBeanInfo with a stop * class is not an option because: *

          *
        1. The API does not define a 3-parameter getBeanInfo in which you can use a * stop class AND flags. [Why? I guess this is a bug in the spec.] *
        2. java.beans.Introspector is buggy and, opposite to what's stated in the * Javadocs, only results of getBeanInfo(Class) are actually cached. *
        * * @version $Revision: 908219 $ */ public class TestBeanBeanInfo implements BeanInfo { public BeanInfo[] getAdditionalBeanInfo() { return new BeanInfo[0]; } /** * {@inheritDoc} */ public BeanDescriptor getBeanDescriptor() { return null; } /** * {@inheritDoc} */ public int getDefaultEventIndex() { return 0; } /** * {@inheritDoc} */ public int getDefaultPropertyIndex() { return 0; } /** * {@inheritDoc} */ public EventSetDescriptor[] getEventSetDescriptors() { return new EventSetDescriptor[0]; } /** * {@inheritDoc} */ public Image getIcon(int iconKind) { return null; } /** * {@inheritDoc} */ public MethodDescriptor[] getMethodDescriptors() { return new MethodDescriptor[0]; } /** * {@inheritDoc} */ public PropertyDescriptor[] getPropertyDescriptors() { return new PropertyDescriptor[0]; } }apache-jmeter-2.8/src/core/org/apache/jmeter/swing/0000755000175000017500000000000012165514773021577 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/swing/HtmlPane.java0000644000175000017500000000341312032647220024136 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.swing; import javax.swing.JTextPane; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkListener; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements an HTML Pane with local hyperlinking enabled. */ public class HtmlPane extends JTextPane { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); public HtmlPane() { this.addHyperlinkListener(new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { String ref = e.getURL().getRef(); if (ref != null && ref.length() > 0) { log.debug("reference to scroll to = " + ref); scrollToReference(ref); } } } }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/assertions/0000755000175000017500000000000012165514773022642 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/assertions/CompareAssertionResult.java0000644000175000017500000000467612032647220030162 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; public class CompareAssertionResult extends AssertionResult { private static final long serialVersionUID = 1; private transient final ResultHolder comparedResults = new ResultHolder(); /** * For testing only * @deprecated Use the other ctor */ @Deprecated public CompareAssertionResult() { // needs to be public for testing super(); } public CompareAssertionResult(String name) { super(name); } public void addToBaseResult(String resultData) { comparedResults.addToBaseResult(resultData); } public void addToSecondaryResult(String resultData) { comparedResults.addToSecondaryResult(resultData); } public String getBaseResult() { return comparedResults.baseResult; } public String getSecondaryResult() { return comparedResults.secondaryResult; } private static class ResultHolder { private String baseResult; private String secondaryResult; public ResultHolder() { } public void addToBaseResult(String r) { if(baseResult == null) { baseResult = r; } else { baseResult = baseResult + "\n\n" + r; //$NON-NLS-1$ } } public void addToSecondaryResult(String r) { if(secondaryResult == null) { secondaryResult = r; } else { secondaryResult = secondaryResult + "\n\n" + r; //$NON-NLS-1$ } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/assertions/AssertionResult.java0000644000175000017500000001067712032647220026651 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.Serializable; /** * Implements Response Assertion checking. */ public class AssertionResult implements Serializable { public static final String RESPONSE_WAS_NULL = "Response was null"; // $NON-NLS-1$ private static final long serialVersionUID = 240L; /** Name of the assertion. */ private final String name; /** True if the assertion failed. */ private boolean failure; /** True if there was an error checking the assertion. */ private boolean error; /** A message describing the failure. */ private String failureMessage; /** * Create a new Assertion Result. The result will indicate no failure or * error. * @deprecated - use the named constructor */ @Deprecated public AssertionResult() { // Needs to be public for tests this.name = null; } /** * Create a new Assertion Result. The result will indicate no failure or * error. * * @param name the name of the assertion */ public AssertionResult(String name) { this.name = name; } /** * Get the name of the assertion * * @return the name of the assertion */ public String getName() { return name; } /** * Check if the assertion failed. If it failed, the failure message may give * more details about the failure. * * @return true if the assertion failed, false if the sample met the * assertion criteria */ public boolean isFailure() { return failure; } /** * Check if an error occurred while checking the assertion. If an error * occurred, the failure message may give more details about the error. * * @return true if an error occurred while checking the assertion, false * otherwise. */ public boolean isError() { return error; } /** * Get the message associated with any failure or error. This method may * return null if no message was set. * * @return a failure or error message, or null if no message has been set */ public String getFailureMessage() { return failureMessage; } /** * Set the flag indicating whether or not an error occurred. * * @param e * true if an error occurred, false otherwise */ public void setError(boolean e) { error = e; } /** * Set the flag indicating whether or not a failure occurred. * * @param f * true if a failure occurred, false otherwise */ public void setFailure(boolean f) { failure = f; } /** * Set the failure message giving more details about a failure or error. * * @param message * the message to set */ public void setFailureMessage(String message) { failureMessage = message; } /** * Convenience method for setting up failed results * * @param message * the message to set * @return this * */ public AssertionResult setResultForFailure(String message) { error = false; failure = true; failureMessage = message; return this; } /** * Convenience method for setting up results where the response was null * * @return assertion result with appropriate fields set up */ public AssertionResult setResultForNull() { error = false; failure = true; failureMessage = RESPONSE_WAS_NULL; return this; } @Override public String toString() { return getName() != null ? getName() : super.toString(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/assertions/gui/0000755000175000017500000000000012165514773023426 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/assertions/gui/AbstractAssertionGui.java0000644000175000017500000000376612032647220030370 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.util.Arrays; import java.util.Collection; import org.apache.jmeter.gui.AbstractScopedJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * This is the base class for JMeter GUI components which manage assertions. * * Assertions which can be applied to different scopes (parent, children or both) * need to use the createScopePanel() to add the panel to the GUI, and they also * need to use saveScopeSettings() and showScopeSettings() to keep the test element * and GUI in synch. * */ public abstract class AbstractAssertionGui extends AbstractScopedJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * This is the list of menu categories this gui component will be available * under. This implementation returns * {@link org.apache.jmeter.gui.util.MenuFactory#ASSERTIONS}, which is * appropriate for most assertion components. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.ASSERTIONS }); } }apache-jmeter-2.8/src/core/org/apache/jmeter/assertions/Assertion.java0000644000175000017500000000326612032647220025446 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import org.apache.jmeter.samplers.SampleResult; /** * An Assertion checks a SampleResult to determine whether or not it is * successful. The resulting success status can be obtained from a corresponding * Assertion Result. For example, if a web response doesn't contain an expected * expression, it would be considered a failure. * * @version $Revision: 674351 $ */ public interface Assertion { /** * Returns the AssertionResult object encapsulating information about the * success or failure of the assertion. * * @param response * the SampleResult containing information about the Sample * (duration, success, etc) * * @return the AssertionResult containing the information about whether the * assertion passed or failed. */ AssertionResult getResult(SampleResult response); } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/0000755000175000017500000000000012165514773021234 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/gui/CommentPanel.java0000644000175000017500000000422112032647220024443 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import org.apache.jmeter.util.JMeterUtils; /** * Generic comment panel for Test Elements * */ public class CommentPanel extends JPanel { private static final long serialVersionUID = 240L; /** A text field containing the comment. */ private JTextArea commentField; /** * Create a new NamePanel with the default name. */ public CommentPanel() { init(); } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout(5, 0)); commentField = new JTextArea(); JLabel commentLabel = new JLabel(JMeterUtils.getResString("testplan_comments")); //$NON-NLS-1$ commentLabel.setLabelFor(commentField); JPanel commentPanel = new JPanel(); commentPanel.setLayout(new BorderLayout(0, 5)); commentPanel.add(commentLabel,BorderLayout.WEST); commentPanel.add(commentField,BorderLayout.CENTER); add(commentPanel); } public void setText(String comment) { this.commentField.setText(comment); } public String getText() { return this.commentField.getText(); } public void clearGui() { commentField.setText(""); // $NON-NLS-1$ } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/0000755000175000017500000000000012165514773022211 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/FileDialoger.java0000644000175000017500000001275412032647220025376 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterFileFilter; /** * Class implementing a file open dialogue */ public final class FileDialoger { /** * The last directory visited by the user while choosing Files. */ private static String lastJFCDirectory = null; private static JFileChooser jfc = new JFileChooser(); /** * Prevent instantiation of utility class. */ private FileDialoger() { } /** * Prompts the user to choose a file from their filesystems for our own * devious uses. This method maintains the last directory the user visited * before dismissing the dialog. This does NOT imply they actually chose a * file from that directory, only that they closed the dialog there. It is * the caller's responsibility to check to see if the selected file is * non-null. * * @return the JFileChooser that interacted with the user, after they are * finished using it - null if no file was chosen */ public static JFileChooser promptToOpenFile(String[] exts) { // JFileChooser jfc = null; if (lastJFCDirectory == null) { String start = System.getProperty("user.dir", ""); //$NON-NLS-1$//$NON-NLS-2$ if (start.length() > 0) { jfc.setCurrentDirectory(new File(start)); } } clearFileFilters(); if(exts != null && exts.length > 0) { JMeterFileFilter currentFilter = new JMeterFileFilter(exts); jfc.addChoosableFileFilter(currentFilter); jfc.setAcceptAllFileFilterUsed(true); jfc.setFileFilter(currentFilter); } int retVal = jfc.showOpenDialog(GuiPackage.getInstance().getMainFrame()); lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); if (retVal == JFileChooser.APPROVE_OPTION) { return jfc; } return null; } private static void clearFileFilters() { FileFilter[] filters = jfc.getChoosableFileFilters(); for (int x = 0; x < filters.length; x++) { jfc.removeChoosableFileFilter(filters[x]); } } public static JFileChooser promptToOpenFile() { return promptToOpenFile(new String[0]); } /** * Prompts the user to choose a file from their filesystems for our own * devious uses. This method maintains the last directory the user visited * before dismissing the dialog. This does NOT imply they actually chose a * file from that directory, only that they closed the dialog there. It is * the caller's responsibility to check to see if the selected file is * non-null. * * @return the JFileChooser that interacted with the user, after they are * finished using it - null if no file was chosen * @see #promptToOpenFile() */ public static JFileChooser promptToSaveFile(String filename) { return promptToSaveFile(filename, null); } /** * Get a JFileChooser with a new FileFilter. * * @param filename file name * @param extensions list of extensions * @return the FileChooser - null if no file was chosen */ public static JFileChooser promptToSaveFile(String filename, String[] extensions) { if (lastJFCDirectory == null) { String start = System.getProperty("user.dir", "");//$NON-NLS-1$//$NON-NLS-2$ if (start.length() > 0) { jfc = new JFileChooser(new File(start)); } lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); } String ext = ".jmx";//$NON-NLS-1$ if (filename != null) { jfc.setDialogTitle(filename); jfc.setSelectedFile(filename.lastIndexOf(System.getProperty("file.separator")) > 0 ? new File(filename) : new File(lastJFCDirectory, filename)); int i = -1; if ((i = filename.lastIndexOf('.')) > -1) {//$NON-NLS-1$ ext = filename.substring(i); } } clearFileFilters(); if (extensions != null) { jfc.addChoosableFileFilter(new JMeterFileFilter(extensions)); } else { jfc.addChoosableFileFilter(new JMeterFileFilter(new String[] { ext })); } int retVal = jfc.showSaveDialog(GuiPackage.getInstance().getMainFrame()); jfc.setDialogTitle(null); lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); if (retVal == JFileChooser.APPROVE_OPTION) { return jfc; } return null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/TextAreaCellRenderer.java0000644000175000017500000000360212032647220027044 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.TableCellRenderer; public class TextAreaCellRenderer implements TableCellRenderer { private JTextArea rend = new JTextArea(""); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { rend = new JTextArea(value.toString()); // Use two rows, so that we have room for horisontal scrollbar, if the text is one long line. Fix for 40371 // This is not an optimal solution, but makes it possible to see the line if it is long rend.setRows(2); rend.revalidate(); if (!hasFocus && !isSelected) { rend.setBackground(JMeterColor.LAVENDER); } if (table.getRowHeight(row) < getPreferredHeight()) { table.setRowHeight(row, getPreferredHeight()); } return rend; } public int getPreferredHeight() { return rend.getPreferredSize().height + 5; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/NumberFieldErrorListener.java0000644000175000017500000000412512032647220027755 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import java.awt.TextComponent; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import javax.swing.JOptionPane; import javax.swing.text.JTextComponent; import org.apache.jmeter.util.JMeterUtils; public class NumberFieldErrorListener extends FocusAdapter { private static final NumberFieldErrorListener listener = new NumberFieldErrorListener(); public static NumberFieldErrorListener getNumberFieldErrorListener() { return listener; } @Override public void focusLost(FocusEvent e) { Component source = (Component) e.getSource(); String text = ""; if (source instanceof JTextComponent) { text = ((JTextComponent) source).getText(); } else if (source instanceof TextComponent) { text = ((TextComponent) source).getText(); } try { Integer.parseInt(text); } catch (NumberFormatException nfe) { JOptionPane.showMessageDialog(source, JMeterUtils.getResString("you_must_enter_a_valid_number"), //$NON-NLS-1$ JMeterUtils.getResString("invalid_data"), //$NON-NLS-1$ JOptionPane.WARNING_MESSAGE); new FocusRequester(source); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/JDateField.java0000644000175000017500000001417112032647220024776 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.swing.JTextField; /** * This is Date mask control. Using this control we can pop up our date in the * text field. And this control is Devloped basically for JDK1.3 and lower * version support. This control is similer to JSpinner control this is * available in JDK1.4 and above only. *

        * This will set the date "yyyy/MM/dd HH:mm:ss" in this format only. *

        * */ public class JDateField extends JTextField { private static final long serialVersionUID = 240L; // Datefields are not thread-safe private final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); // $NON-NLS-1$ /* * The following array must agree with dateFormat * * It is used to translate the positions in the buffer to the values used by * the Calendar class for the field id. * * Current format: MM/DD/YYYY HH:MM:SS 01234567890123456789 ^buffer * positions */ private static final int fieldPositions[] = { Calendar.YEAR, // Y Calendar.YEAR, // Y Calendar.YEAR, // Y Calendar.YEAR, // Y Calendar.YEAR, // sp Calendar.MONTH, // M Calendar.MONTH, // M Calendar.MONTH, // / Calendar.DAY_OF_MONTH, // D Calendar.DAY_OF_MONTH, // D Calendar.DAY_OF_MONTH, // / Calendar.HOUR_OF_DAY, // H Calendar.HOUR_OF_DAY, // H Calendar.HOUR_OF_DAY, // : Calendar.MINUTE, // M Calendar.MINUTE, // M Calendar.MINUTE, // : Calendar.SECOND, // S Calendar.SECOND, // S Calendar.SECOND // end }; /** * Create a DateField with the specified date. */ public JDateField(Date date) { super(20); this.addKeyListener(new KeyFocus()); this.addFocusListener(new FocusClass()); String myString = dateFormat.format(date); setText(myString); } // Dummy constructor to allo JUnit tests to work public JDateField() { this(new Date()); } /** * Set the date to the Date mask control. */ public void setDate(Date date) { setText(dateFormat.format(date)); } /** * Get the date from the Date mask control. */ public Date getDate() { try { return dateFormat.parse(getText()); } catch (ParseException e) { return new Date(); } catch (Exception e) { // DateFormat.parse has some bugs (up to JDK 1.4.2) by which it // throws unchecked exceptions. E.g. see: // http://developer.java.sun.com/developer/bugParade/bugs/4699765.html // // To avoid problems with such situations, we'll catch all // exceptions here and act just as for ParseException above: return new Date(); } } /* * Convert position in buffer to Calendar type Assumes that pos >=0 (which * is true for getCaretPosition()) */ private static int posToField(int pos) { if (pos >= fieldPositions.length) { // if beyond the end pos = fieldPositions.length - 1; // then set to the end } return fieldPositions[pos]; } /** * Converts a date/time to a calendar using the defined format */ private Calendar parseDate(String datetime) { Calendar c = Calendar.getInstance(); try { Date dat = dateFormat.parse(datetime); c.setTime(dat); } catch (ParseException e) { // Do nothing; the current time will be returned } return c; } /* * Update the current field. The addend is only expected to be +1/-1, but * other values will work. N.B. the roll() method only supports changes by a * single unit - up or down */ private void update(int addend, boolean shifted) { Calendar c = parseDate(getText()); int pos = getCaretPosition(); int field = posToField(pos); if (shifted) { c.roll(field, true); } else { c.add(field, addend); } String newDate = dateFormat.format(c.getTime()); setText(newDate); if (pos > newDate.length()) { pos = newDate.length(); } setCaretPosition(pos);// Restore position } class KeyFocus extends KeyAdapter { KeyFocus() { } @Override public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_UP) { update(1, e.isShiftDown()); } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { update(-1, e.isShiftDown()); } } } class FocusClass implements FocusListener { FocusClass() { } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { try { dateFormat.parse(getText()); } catch (ParseException e1) { requestFocus(); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/TextAreaTableCellEditor.java0000644000175000017500000002211112032647220027470 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.ItemEvent; import java.awt.event.MouseEvent; import java.io.Serializable; import java.util.EventObject; import javax.swing.AbstractCellEditor; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTree; import javax.swing.table.TableCellEditor; import javax.swing.tree.TreeCellEditor; public class TextAreaTableCellEditor extends AbstractCellEditor implements TableCellEditor, TreeCellEditor { private static final long serialVersionUID = 240L; // // Instance Variables // /** The Swing component being edited. */ protected JTextArea editorComponent; /** * The delegate class which handles all methods sent from the * CellEditor. */ protected EditorDelegate delegate; /** * An integer specifying the number of clicks needed to start editing. Even * if clickCountToStart is defined as zero, it will not * initiate until a click occurs. */ protected int clickCountToStart = 1; // // Constructors // /** * Constructs a TableCellEditor that uses a text field. */ public TextAreaTableCellEditor() { editorComponent = new JTextArea(); editorComponent.setRows(3); this.clickCountToStart = 2; delegate = new EditorDelegate() { private static final long serialVersionUID = 240L; @Override public void setValue(Object value) { editorComponent.setText((value != null) ? value.toString() : ""); } @Override public Object getCellEditorValue() { return editorComponent.getText(); } }; editorComponent.addFocusListener(delegate); } /** * Returns a reference to the editor component. * * @return the editor Component */ public Component getComponent() { return editorComponent; } // // Modifying // /** * Specifies the number of clicks needed to start editing. * * @param count * an int specifying the number of clicks needed to start editing * @see #getClickCountToStart */ public void setClickCountToStart(int count) { clickCountToStart = count; } /** * Returns the number of clicks needed to start editing. * * @return the number of clicks needed to start editing */ public int getClickCountToStart() { return clickCountToStart; } // // Override the implementations of the superclass, forwarding all methods // from the CellEditor interface to our delegate. // /** * Forwards the message from the CellEditor to the * delegate. * * @see EditorDelegate#getCellEditorValue */ public Object getCellEditorValue() { return delegate.getCellEditorValue(); } /** * Forwards the message from the CellEditor to the * delegate. * * @see EditorDelegate#isCellEditable(EventObject) */ @Override public boolean isCellEditable(EventObject anEvent) { return delegate.isCellEditable(anEvent); } /** * Forwards the message from the CellEditor to the * delegate. * * @see EditorDelegate#shouldSelectCell(EventObject) */ @Override public boolean shouldSelectCell(EventObject anEvent) { return delegate.shouldSelectCell(anEvent); } /** * Forwards the message from the CellEditor to the * delegate. * * @see EditorDelegate#stopCellEditing */ @Override public boolean stopCellEditing() { return delegate.stopCellEditing(); } /** * Forwards the message from the CellEditor to the * delegate. * * @see EditorDelegate#cancelCellEditing */ @Override public void cancelCellEditing() { delegate.cancelCellEditing(); } // // Implementing the TreeCellEditor Interface // /** Implements the TreeCellEditor interface. */ public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { String stringValue = tree.convertValueToText(value, isSelected, expanded, leaf, row, false); delegate.setValue(stringValue); return new JScrollPane(editorComponent); } // // Implementing the CellEditor Interface // /** Implements the TableCellEditor interface. */ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { delegate.setValue(value); return new JScrollPane(editorComponent); } // // Protected EditorDelegate class // /** * The protected EditorDelegate class. */ protected class EditorDelegate implements FocusListener, Serializable { private static final long serialVersionUID = 240L; /** The value of this cell. */ protected Object value; /** * Returns the value of this cell. * * @return the value of this cell */ public Object getCellEditorValue() { return value; } /** * Sets the value of this cell. * * @param value * the new value of this cell */ public void setValue(Object value) { this.value = value; } /** * Returns true if anEvent is not a * MouseEvent. Otherwise, it returns true if the * necessary number of clicks have occurred, and returns false * otherwise. * * @param anEvent * the event * @return true if cell is ready for editing, false otherwise * @see #setClickCountToStart(int) * @see #shouldSelectCell */ public boolean isCellEditable(EventObject anEvent) { if (anEvent instanceof MouseEvent) { return ((MouseEvent) anEvent).getClickCount() >= clickCountToStart; } return true; } /** * Returns true to indicate that the editing cell may be selected. * * @param anEvent * the event * @return true * @see #isCellEditable */ public boolean shouldSelectCell(EventObject anEvent) { return true; } /** * Returns true to indicate that editing has begun. * * @param anEvent * the event */ public boolean startCellEditing(EventObject anEvent) { return true; } /** * Stops editing and returns true to indicate that editing has stopped. * This method calls fireEditingStopped. * * @return true */ public boolean stopCellEditing() { fireEditingStopped(); return true; } /** * Cancels editing. This method calls fireEditingCanceled. */ public void cancelCellEditing() { fireEditingCanceled(); } /** * When an action is performed, editing is ended. * * @param e * the action event * @see #stopCellEditing */ public void actionPerformed(ActionEvent e) { TextAreaTableCellEditor.this.stopCellEditing(); } /** * When an item's state changes, editing is ended. * * @param e * the action event * @see #stopCellEditing */ public void itemStateChanged(ItemEvent e) { TextAreaTableCellEditor.this.stopCellEditing(); } public void focusLost(FocusEvent ev) { TextAreaTableCellEditor.this.stopCellEditing(); } public void focusGained(FocusEvent ev) { } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/HorizontalPanel.java0000644000175000017500000000421712032647220026154 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 25, 2003 * */ package org.apache.jmeter.gui.util; import java.awt.Color; import java.awt.BorderLayout; import java.awt.Component; import javax.swing.Box; import javax.swing.JComponent; import javax.swing.JPanel; public class HorizontalPanel extends JPanel { private static final long serialVersionUID = 240L; private final Box subPanel = Box.createHorizontalBox(); private final float verticalAlign; private final int hgap; public HorizontalPanel() { this(5, CENTER_ALIGNMENT); } public HorizontalPanel(Color bk) { this(); subPanel.setBackground(bk); this.setBackground(bk); } public HorizontalPanel(int hgap, float verticalAlign) { super(new BorderLayout()); add(subPanel, BorderLayout.CENTER); this.hgap = hgap; this.verticalAlign = verticalAlign; } /** * {@inheritDoc} */ @Override public Component add(Component c) { // This won't work right if we remove components. But we don't, so I'm // not going to worry about it right now. if (hgap > 0 && subPanel.getComponentCount() > 0) { subPanel.add(Box.createHorizontalStrut(hgap)); } if (c instanceof JComponent) { ((JComponent) c).setAlignmentY(verticalAlign); } return subPanel.add(c); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/FilePanelEntry.java0000644000175000017500000001066512032647220025730 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import java.util.List; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.util.JMeterUtils; public class FilePanelEntry extends HorizontalPanel implements ActionListener { private static final long serialVersionUID = 280L; private final Font FONT_SMALL = new Font("SansSerif", Font.PLAIN, 10); //$NON-NLS-1$ private final JTextField filename = new JTextField(10); private final JLabel label; private final JButton browse = new JButton(JMeterUtils.getResString("browse")); //$NON-NLS-1$ private static final String ACTION_BROWSE = "browse"; //$NON-NLS-1$ private final List listeners = new LinkedList(); private final String[] filetypes; // Mainly needed for unit test Serialisable tests public FilePanelEntry() { this(JMeterUtils.getResString("file_visualizer_filename")); //$NON-NLS-1$ } public FilePanelEntry(String label) { this(label, (ChangeListener) null); } public FilePanelEntry(String label, String ... exts) { this(label, (ChangeListener) null, exts); } public FilePanelEntry(String label, ChangeListener listener, String ... exts) { this.label = new JLabel(label); if (listener != null) { listeners.add(listener); } if (exts != null) { this.filetypes = new String[exts.length]; System.arraycopy(exts, 0, this.filetypes, 0, exts.length); } else { this.filetypes = null; } init(); } public final void addChangeListener(ChangeListener l) { listeners.add(l); } private void init() { add(label); add(filename); filename.addActionListener(this); browse.setFont(FONT_SMALL); add(browse); browse.setActionCommand(ACTION_BROWSE); browse.addActionListener(this); } public void clearGui(){ filename.setText(""); // $NON-NLS-1$ } /** * If the gui needs to enable/disable the FilePanel, call the method. * * @param enable */ public void enableFile(boolean enable) { browse.setEnabled(enable); filename.setEnabled(enable); } /** * Gets the filename attribute of the FilePanel object. * * @return the filename value */ public String getFilename() { return filename.getText(); } /** * Sets the filename attribute of the FilePanel object. * * @param f * the new filename value */ public void setFilename(String f) { filename.setText(f); } private void fireFileChanged() { for (ChangeListener cl : listeners) { cl.stateChanged(new ChangeEvent(this)); } } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(ACTION_BROWSE)) { JFileChooser chooser; if(filetypes == null || filetypes.length == 0){ chooser = FileDialoger.promptToOpenFile(); } else { chooser = FileDialoger.promptToOpenFile(filetypes); } if (chooser != null && chooser.getSelectedFile() != null) { filename.setText(chooser.getSelectedFile().getPath()); fireFileChanged(); } } else { fireFileChanged(); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/IconToolbarBean.java0000644000175000017500000000636712032647220026054 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.gui.util; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public final class IconToolbarBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String ICON_FIELD_SEP = ","; //$NON-NLS-1$ private final String i18nKey; private final String actionName; private final String iconPath; private final String iconPathPressed; /** * Constructor to transform a line value (from icon set file) to a icon bean for toolbar. * @param strToSplit - the line value (i18n key, ActionNames ID, icon path, optional icon pressed path) * @throws JMeterException if error in parsing. */ IconToolbarBean(final String strToSplit) throws IllegalArgumentException { if (strToSplit == null) { throw new IllegalArgumentException("Icon definition must not be null"); //$NON-NLS-1$ } final String tmp[] = strToSplit.split(ICON_FIELD_SEP); if (tmp.length > 2) { this.i18nKey = tmp[0]; this.actionName = tmp[1]; this.iconPath = tmp[2]; this.iconPathPressed = (tmp.length > 3) ? tmp[3] : tmp[2]; } else { throw new IllegalArgumentException("Incorrect argument format - expected at least 2 fields separated by " + ICON_FIELD_SEP); } } /** * Resolve action name ID declared in icon set file to ActionNames value * @return the resolve actionName */ public String getActionNameResolve() { final String aName; try { aName = (String) (ActionNames.class.getField(this.actionName).get(null)); } catch (Exception e) { log.warn("Toolbar icon Action names error: " + this.actionName + ", use unknown action."); //$NON-NLS-1$ return this.actionName; // return unknown action names for display error msg } return aName; } /** * @return the i18nKey */ public String getI18nKey() { return i18nKey; } /** * @return the actionName */ public String getActionName() { return actionName; } /** * @return the iconPath */ public String getIconPath() { return iconPath; } /** * @return the iconPathPressed */ public String getIconPathPressed() { return iconPathPressed; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/MenuInfo.java0000644000175000017500000000320012032647220024552 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import org.apache.jmeter.gui.JMeterGUIComponent; /** * Class to hold additional information needed when building the GUI lists */ public class MenuInfo { private final String label; private final String className; private final JMeterGUIComponent guiComp; public MenuInfo(String displayLabel, String classFullName) { label = displayLabel; className = classFullName; guiComp = null; } public MenuInfo(JMeterGUIComponent item, String classFullName) { label = item.getStaticLabel(); className = classFullName; guiComp = item; } public String getLabel(){ if (guiComp != null) { return guiComp.getStaticLabel(); } return label; } public String getClassName(){ return className; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/PowerTableModel.java0000644000175000017500000002303012032647220026062 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.List; import javax.swing.table.DefaultTableModel; import org.apache.jorphan.collections.Data; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class PowerTableModel extends DefaultTableModel { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 233L; private Data model = new Data(); private Class[] columnClasses; public PowerTableModel(String[] headers, Class[] classes) { if (headers.length != classes.length){ throw new IllegalArgumentException("Header and column array sizes differ"); } model.setHeaders(headers); columnClasses = classes; } public PowerTableModel() { } public void setRowValues(int row, Object[] values) { if (values.length != model.getHeaderCount()){ throw new IllegalArgumentException("Incorrect number of data items"); } model.setCurrentPos(row); for (int i = 0; i < values.length; i++) { model.addColumnValue(model.getHeaders()[i], values[i]); } } public Data getData() { return model; } public void addNewColumn(String colName, Class colClass) { model.addHeader(colName); Class[] newClasses = new Class[columnClasses.length + 1]; System.arraycopy(columnClasses, 0, newClasses, 0, columnClasses.length); newClasses[newClasses.length - 1] = colClass; columnClasses = newClasses; Object defaultValue = createDefaultValue(columnClasses.length - 1); model.setColumnData(colName, defaultValue); this.fireTableStructureChanged(); } @Override public void removeRow(int row) { log.debug("remove row: " + row); if (model.size() > row) { log.debug("Calling remove row on Data"); model.removeRow(row); } } public void removeColumn(int col) { model.removeColumn(col); this.fireTableStructureChanged(); } public void setColumnData(int col, List data) { model.setColumnData(col, data); } public List getColumnData(String colName) { return model.getColumnAsObjectArray(colName); } public void clearData() { String[] headers = model.getHeaders(); model = new Data(); model.setHeaders(headers); this.fireTableDataChanged(); } @Override public void addRow(Object data[]) { if (data.length != model.getHeaderCount()){ throw new IllegalArgumentException("Incorrect number of data items"); } model.setCurrentPos(model.size()); for (int i = 0; i < data.length; i++) { model.addColumnValue(model.getHeaders()[i], data[i]); } } public void addNewRow() { addRow(createDefaultRow()); } private Object[] createDefaultRow() { Object[] rowData = new Object[getColumnCount()]; for (int i = 0; i < rowData.length; i++) { rowData[i] = createDefaultValue(i); } return rowData; } public Object[] getRowData(int row) { Object[] rowData = new Object[getColumnCount()]; for (int i = 0; i < rowData.length; i++) { rowData[i] = model.getColumnValue(i, row); } return rowData; } private Object createDefaultValue(int i) { Class colClass = getColumnClass(i); try { return colClass.newInstance(); } catch (Exception e) { try { Constructor constr = colClass.getConstructor(new Class[] { String.class }); return constr.newInstance(new Object[] { "" }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Integer.TYPE }); return constr.newInstance(new Object[] { Integer.valueOf(0) }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Long.TYPE }); return constr.newInstance(new Object[] { Long.valueOf(0L) }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Boolean.TYPE }); return constr.newInstance(new Object[] { Boolean.FALSE }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Float.TYPE }); return constr.newInstance(new Object[] { Float.valueOf(0F) }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Double.TYPE }); return constr.newInstance(new Object[] { Double.valueOf(0D) }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Character.TYPE }); return constr.newInstance(new Object[] { Character.valueOf(' ') }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Byte.TYPE }); return constr.newInstance(new Object[] { Byte.valueOf(Byte.MIN_VALUE) }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } try { Constructor constr = colClass.getConstructor(new Class[] { Short.TYPE }); return constr.newInstance(new Object[] { Short.valueOf(Short.MIN_VALUE) }); } catch (NoSuchMethodException err) { } catch (InstantiationException err) { } catch (IllegalAccessException err) { } catch (InvocationTargetException err) { } } return ""; } /** * Required by table model interface. * * @return the RowCount value */ @Override public int getRowCount() { if (model == null) { return 0; } return model.size(); } /** * Required by table model interface. * * @return the ColumnCount value */ @Override public int getColumnCount() { return model.getHeaders().length; } /** * Required by table model interface. * * @return the ColumnName value */ @Override public String getColumnName(int column) { return model.getHeaders()[column]; } @Override public boolean isCellEditable(int row, int column) { // all table cells are editable return true; } @Override public Class getColumnClass(int column) { return columnClasses[column]; } /** * Required by table model interface. return the ValueAt value */ @Override public Object getValueAt(int row, int column) { return model.getColumnValue(column, row); } /** * Sets the ValueAt attribute of the Arguments object. * * @param value * the new ValueAt value */ @Override public void setValueAt(Object value, int row, int column) { if (row < model.size()) { model.setCurrentPos(row); model.addColumnValue(model.getHeaders()[column], value); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java0000644000175000017500000001662412032647220026114 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.gui.util; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.TableModel; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; /** * Dialog text box to display some text in a box * */ public class TextBoxDialoger implements ActionListener { private static final String CANCEL_COMMAND = "cancel_dialog"; // $NON-NLS-1$ private static final String SAVE_CLOSE_COMMAND = "save_close_dialog"; // $NON-NLS-1$ private static final String CLOSE_COMMAND = "close_dialog"; // $NON-NLS-1$ private static JDialog dialog; private JEditorPane textBox; private String originalText; private boolean editable = false; /** * Dialog text box */ public TextBoxDialoger() { // Empty box init(""); //$NON-NLS-1$ } /** * Dialog text box * @param text - text to display in a box */ public TextBoxDialoger(String text) { init(text); } /** * Dialog text box * @param text - text to display in a box * @param editable - allow to modify text */ public TextBoxDialoger(String text, boolean editable) { this.editable = editable; init(text); } private void init(String text) { createDialogBox(); setTextBox(text); dialog.setVisible(true); } private void createDialogBox() { JFrame mainFrame = GuiPackage.getInstance().getMainFrame(); String title = editable ? JMeterUtils.getResString("textbox_title_edit") //$NON-NLS-1$ : JMeterUtils.getResString("textbox_title_view"); //$NON-NLS-1$ dialog = new JDialog(mainFrame, title, true); // modal dialog box // Close action dialog box when tapping Escape key JPanel content = (JPanel) dialog.getContentPane(); content.registerKeyboardAction(this, KeyStrokes.ESC, JComponent.WHEN_IN_FOCUSED_WINDOW); textBox = new JEditorPane(); textBox.setEditable(editable); JScrollPane textBoxScrollPane = GuiUtils.makeScrollPane(textBox); JPanel btnBar = new JPanel(); btnBar.setLayout(new FlowLayout(FlowLayout.RIGHT)); if (editable) { JButton cancelBtn = new JButton(JMeterUtils.getResString("textbox_cancel")); //$NON-NLS-1$ cancelBtn.setActionCommand(CANCEL_COMMAND); cancelBtn.addActionListener(this); JButton saveBtn = new JButton(JMeterUtils.getResString("textbox_save_close")); //$NON-NLS-1$ saveBtn.setActionCommand(SAVE_CLOSE_COMMAND); saveBtn.addActionListener(this); btnBar.add(cancelBtn); btnBar.add(saveBtn); } else { JButton closeBtn = new JButton(JMeterUtils.getResString("textbox_close")); //$NON-NLS-1$ closeBtn.setActionCommand(CLOSE_COMMAND); closeBtn.addActionListener(this); btnBar.add(closeBtn); } // Prepare dialog box Container panel = dialog.getContentPane(); dialog.setMinimumSize(new Dimension(400, 250)); panel.add(textBoxScrollPane, BorderLayout.CENTER); panel.add(btnBar, BorderLayout.SOUTH); // determine location on screen Point p = mainFrame.getLocationOnScreen(); Dimension d1 = mainFrame.getSize(); Dimension d2 = dialog.getSize(); dialog.setLocation(p.x + (d1.width - d2.width) / 2, p.y + (d1.height - d2.height) / 2); dialog.pack(); } private void closeDialog() { dialog.setVisible(false); } public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if (CANCEL_COMMAND.equals(command)) { closeDialog(); setTextBox(originalText); } else { // must be CLOSE or SAVE_CLOSE COMMANDS closeDialog(); } } public void setTextBox(String text) { originalText = text; // text backup textBox.setText(text); } public String getTextBox() { return textBox.getText(); } /** * Class to display a dialog box and cell's content * when double click on a table's cell * */ public static class TextBoxDoubleClick extends MouseAdapter { private JTable table = null; public TextBoxDoubleClick(JTable table) { super(); this.table = table; } @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { // double click TableModel tm = table.getModel(); Object value = tm.getValueAt(table.getSelectedRow(), table.getSelectedColumn()); new TextBoxDialoger(value.toString(), false); // view only } } } /** * Class to edit in a dialog box the cell's content * when double (pressed) click on a table's cell which is editable * */ public static class TextBoxDoubleClickPressed extends MouseAdapter { private JTable table = null; public TextBoxDoubleClickPressed(JTable table) { super(); this.table = table; } @Override public void mousePressed(MouseEvent e) { if (e.getClickCount() == 2) { // double (pressed) click TableModel tm = table.getModel(); Object value = tm.getValueAt(table.getSelectedRow(), table.getSelectedColumn()); if (value instanceof String) { if (table.getCellEditor() != null) { table.getCellEditor().cancelCellEditing(); // in main table (evt mousePressed because cell is editable) } TextBoxDialoger tbd = new TextBoxDialoger(value.toString(), true); tm.setValueAt(tbd.getTextBox(), table.getSelectedRow(), table.getSelectedColumn()); } // else do nothing (cell isn't a string to edit) } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/FileListPanel.java0000644000175000017500000001526212032647220025540 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.LinkedList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterFileFilter; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; public class FileListPanel extends JPanel implements ActionListener { private static final long serialVersionUID = 1L; private JTable files = null; private transient ObjectTableModel tableModel = null; private static final String ACTION_BROWSE = "browse"; // $NON-NLS-1$ private static final String LABEL_LIBRARY = "library"; // $NON-NLS-1$ private JButton browse = new JButton(JMeterUtils.getResString(ACTION_BROWSE)); private JButton clear = new JButton(JMeterUtils.getResString("clear")); // $NON-NLS-1$ private JButton delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ private List listeners = new LinkedList(); private String title; private String filetype; /** * Constructor for the FilePanel object. */ public FileListPanel() { title = ""; // $NON-NLS-1$ init(); } public FileListPanel(String title) { this.title = title; init(); } public FileListPanel(String title, String filetype) { this.title = title; this.filetype = filetype; init(); } /** * Constructor for the FilePanel object. */ public FileListPanel(ChangeListener l, String title) { this.title = title; init(); listeners.add(l); } public void addChangeListener(ChangeListener l) { listeners.add(l); } private void init() { this.setLayout(new BorderLayout(0, 5)); setBorder(BorderFactory.createEmptyBorder(5, 0, 5, 5)); JLabel jtitle = new JLabel(title); HorizontalPanel buttons = new HorizontalPanel(); buttons.add(jtitle); buttons.add(browse); buttons.add(delete); buttons.add(clear); add(buttons,BorderLayout.NORTH); this.initializeTableModel(); files = new JTable(tableModel); files.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); files.revalidate(); JScrollPane scrollpane = new JScrollPane(files); scrollpane.setPreferredSize(new Dimension(100,80)); add(scrollpane,BorderLayout.CENTER); browse.setActionCommand(ACTION_BROWSE); // $NON-NLS-1$ browse.addActionListener(this); clear.addActionListener(this); delete.addActionListener(this); //this.setPreferredSize(new Dimension(400,150)); } /** * If the gui needs to enable/disable the FilePanel, call the method. * * @param enable */ public void enableFile(boolean enable) { browse.setEnabled(enable); files.setEnabled(false); } /** * Add a single file to the table * @param f */ public void addFilename(String f) { tableModel.addRow(f); } /** * clear the files from the table */ public void clearFiles() { tableModel.clearData(); } public void setFiles(String[] files) { this.clearFiles(); for (int idx=0; idx < files.length; idx++) { addFilename(files[idx]); } } public String[] getFiles() { String[] _files = new String[tableModel.getRowCount()]; for (int idx=0; idx < _files.length; idx++) { _files[idx] = (String)tableModel.getValueAt(idx,0); } return _files; } protected void deleteFile() { // If a table cell is being edited, we must cancel the editing before // deleting the row int rowSelected = files.getSelectedRow(); if (rowSelected >= 0) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); } } private void fireFileChanged() { for (ChangeListener cl : listeners) { cl.stateChanged(new ChangeEvent(this)); } } protected void initializeTableModel() { tableModel = new ObjectTableModel(new String[] { JMeterUtils.getResString(LABEL_LIBRARY) }, new Functor[0] , new Functor[0] , // i.e. bypass the Functors new Class[] { String.class }); } public void actionPerformed(ActionEvent e) { if (e.getSource() == clear) { this.clearFiles(); } else if (e.getActionCommand().equals(ACTION_BROWSE)) { JFileChooser chooser = new JFileChooser(); String start = System.getProperty("user.dir", ""); // $NON-NLS-1$ // $NON-NLS-2$ chooser.setCurrentDirectory(new File(start)); chooser.setFileFilter(new JMeterFileFilter(new String[] { filetype })); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); chooser.setMultiSelectionEnabled(true); chooser.showOpenDialog(GuiPackage.getInstance().getMainFrame()); File[] cfiles = chooser.getSelectedFiles(); if (cfiles != null) { for (int idx=0; idx < cfiles.length; idx++) { this.addFilename(cfiles[idx].getPath()); } fireFileChanged(); } } else if (e.getSource() == delete) { this.deleteFile(); } else { fireFileChanged(); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/FocusRequester.java0000644000175000017500000000304112032647220026014 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import javax.swing.SwingUtilities; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /* * Note: This helper class appeared in JavaWorld in June 2001 * (http://www.javaworld.com) and was written by Michael Daconta. * */ public class FocusRequester implements Runnable { private static final Logger log = LoggingManager.getLoggerForClass(); private final Component comp; public FocusRequester(Component comp) { this.comp = comp; try { SwingUtilities.invokeLater(this); } catch (Exception e) { log.error("", e); // $NON-NLS-1$ } } public void run() { comp.requestFocus(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/VerticalPanel.java0000644000175000017500000000440312032647220025571 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 25, 2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.apache.jmeter.gui.util; import java.awt.Color; import java.awt.BorderLayout; import java.awt.Component; import javax.swing.Box; import javax.swing.JComponent; import javax.swing.JPanel; public class VerticalPanel extends JPanel { private static final long serialVersionUID = 240L; private final Box subPanel = Box.createVerticalBox(); private final float horizontalAlign; private final int vgap; public VerticalPanel() { this(5, LEFT_ALIGNMENT); } public VerticalPanel(Color bkg) { this(); subPanel.setBackground(bkg); this.setBackground(bkg); } public VerticalPanel(int vgap, float horizontalAlign) { super(new BorderLayout()); add(subPanel, BorderLayout.NORTH); this.vgap = vgap; this.horizontalAlign = horizontalAlign; } /** * {@inheritDoc} */ @Override public Component add(Component c) { // This won't work right if we remove components. But we don't, so I'm // not going to worry about it right now. if (vgap > 0 && subPanel.getComponentCount() > 0) { subPanel.add(Box.createVerticalStrut(vgap)); } if (c instanceof JComponent) { ((JComponent) c).setAlignmentX(horizontalAlign); } return subPanel.add(c); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/EscapeDialog.java0000644000175000017500000000410612032647220025360 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Frame; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JRootPane; import org.apache.jmeter.gui.action.KeyStrokes; public class EscapeDialog extends JDialog { private static final long serialVersionUID = 1319421816741139938L; public EscapeDialog() { super(); } public EscapeDialog(Frame frame, String title, boolean modal) { super(frame, title, modal); } @Override protected JRootPane createRootPane() { JRootPane rootPane = new JRootPane(); Action escapeAction = new AbstractAction("ESCAPE") { /** * */ private static final long serialVersionUID = 2208129319916921772L; public void actionPerformed(ActionEvent e) { setVisible(false); } }; InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(KeyStrokes.ESC, escapeAction.getValue(Action.NAME)); rootPane.getActionMap().put(escapeAction.getValue(Action.NAME), escapeAction); return rootPane; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/JMeterToolBar.java0000644000175000017500000001745712032647220025526 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.gui.util; import java.awt.Component; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JToolBar; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The JMeter main toolbar class * */ public class JMeterToolBar extends JToolBar implements LocaleChangeListener { /** * */ private static final long serialVersionUID = -4591210341986068907L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String TOOLBAR_ENTRY_SEP = ","; //$NON-NLS-1$ private static final String TOOLBAR_PROP_NAME = "toolbar"; //$NON-NLS-1$ // protected fields: JMeterToolBar class can be use to create another toolbar (plugin, etc.) protected static final String DEFAULT_TOOLBAR_PROPERTY_FILE = "org/apache/jmeter/images/toolbar/icons-toolbar.properties"; //$NON-NLS-1$ protected static final String USER_DEFINED_TOOLBAR_PROPERTY_FILE = "jmeter.toolbar.icons"; //$NON-NLS-1$ private static final String TOOLBAR_LIST = "jmeter.toolbar"; /** * Create the default JMeter toolbar * @return the JMeter toolbar */ public static JMeterToolBar createToolbar(boolean visible) { JMeterToolBar toolBar = new JMeterToolBar(); toolBar.setFloatable(false); toolBar.setVisible(visible); setupToolbarContent(toolBar); JMeterUtils.addLocaleChangeListener(toolBar); // implicit return empty toolbar if icons == null return toolBar; } /** * Setup toolbar content * @param toolBar {@link JMeterToolBar} */ private static void setupToolbarContent(JMeterToolBar toolBar) { List icons = getIconMappings(); if (icons != null) { for (IconToolbarBean iconToolbarBean : icons) { if (iconToolbarBean == null) { toolBar.addSeparator(); } else { toolBar.add(makeButtonItemRes(iconToolbarBean)); } } toolBar.setTestStarted(false); } } /** * Generate a button component from icon bean * @param iconBean contains I18N key, ActionNames, icon path, optional icon path pressed * @return a button for toolbar */ private static JButton makeButtonItemRes(IconToolbarBean iconBean) { final URL imageURL = JMeterUtils.class.getClassLoader().getResource(iconBean.getIconPath()); JButton button = new JButton(new ImageIcon(imageURL)); button.setToolTipText(JMeterUtils.getResString(iconBean.getI18nKey())); final URL imageURLPressed = JMeterUtils.class.getClassLoader().getResource(iconBean.getIconPathPressed()); button.setPressedIcon(new ImageIcon(imageURLPressed)); button.addActionListener(ActionRouter.getInstance()); button.setActionCommand(iconBean.getActionNameResolve()); return button; } /** * Parse icon set file. * @return List of icons/action definition */ private static List getIconMappings() { // Get the standard toolbar properties Properties defaultProps = JMeterUtils.loadProperties(DEFAULT_TOOLBAR_PROPERTY_FILE); if (defaultProps == null) { JOptionPane.showMessageDialog(null, JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JOptionPane.WARNING_MESSAGE); return null; } Properties p; String userProp = JMeterUtils.getProperty(USER_DEFINED_TOOLBAR_PROPERTY_FILE); if (userProp != null){ p = JMeterUtils.loadProperties(userProp, defaultProps); } else { p=defaultProps; } String order = JMeterUtils.getPropDefault(TOOLBAR_LIST, p.getProperty(TOOLBAR_PROP_NAME)); if (order == null) { log.warn("Could not find toolbar definition list"); JOptionPane.showMessageDialog(null, JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JOptionPane.WARNING_MESSAGE); return null; } String[] oList = order.split(TOOLBAR_ENTRY_SEP); List listIcons = new ArrayList(); for (String key : oList) { log.debug("Toolbar icon key: " + key); //$NON-NLS-1$ String trimmed = key.trim(); if (trimmed.equals("|")) { //$NON-NLS-1$ listIcons.add(null); } else { String property = p.getProperty(trimmed); if (property == null) { log.warn("No definition for toolbar entry: " + key); } else { try { IconToolbarBean itb = new IconToolbarBean(property); listIcons.add(itb); } catch (IllegalArgumentException e) { // already reported by IconToolbarBean } } } } return listIcons; } /** * {@inheritDoc} */ public void localeChanged(LocaleChangeEvent event) { this.removeAll(); setupToolbarContent(this); } /** * Change state of buttons * @param started */ public void setTestStarted(boolean started) { Map buttonStates = new HashMap(); buttonStates.put(ActionNames.ACTION_START,Boolean.valueOf(!started)); buttonStates.put(ActionNames.ACTION_START_NO_TIMERS,Boolean.valueOf(!started)); buttonStates.put(ActionNames.ACTION_STOP,Boolean.valueOf(started)); buttonStates.put(ActionNames.ACTION_SHUTDOWN,Boolean.valueOf(started)); buttonStates.put(ActionNames.REMOTE_START_ALL,Boolean.valueOf(!started)); buttonStates.put(ActionNames.REMOTE_STOP_ALL,Boolean.valueOf(started)); buttonStates.put(ActionNames.REMOTE_SHUT_ALL,Boolean.valueOf(started)); Component[] components = getComponents(); for (int i = 0; i < components.length; i++) { if(components[i]instanceof JButton) { JButton button = (JButton) components[i]; Boolean enabled = buttonStates.get(button.getActionCommand()); if(enabled != null) { button.setEnabled(enabled.booleanValue()); } } } } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/MenuFactory.java0000644000175000017500000006300412032647220025276 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import java.io.IOException; import java.io.Serializable; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import javax.swing.MenuElement; import org.apache.jmeter.control.Controller; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.gui.TestBeanGUI; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.Printable; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public final class MenuFactory { private static final Logger log = LoggingManager.getLoggerForClass(); /* * Predefined strings for makeMenu(). * These are used as menu categories in the menuMap Hashmap, * and also for resource lookup in messages.properties */ public static final String THREADS = "menu_threads"; //$NON-NLS-1$ public static final String FRAGMENTS = "menu_fragments"; //$NON-NLS-1$ public static final String TIMERS = "menu_timer"; //$NON-NLS-1$ public static final String CONTROLLERS = "menu_logic_controller"; //$NON-NLS-1$ public static final String SAMPLERS = "menu_generative_controller"; //$NON-NLS-1$ public static final String CONFIG_ELEMENTS = "menu_config_element"; //$NON-NLS-1$ public static final String POST_PROCESSORS = "menu_post_processors"; //$NON-NLS-1$ public static final String PRE_PROCESSORS = "menu_pre_processors"; //$NON-NLS-1$ public static final String ASSERTIONS = "menu_assertions"; //$NON-NLS-1$ public static final String NON_TEST_ELEMENTS = "menu_non_test_elements"; //$NON-NLS-1$ public static final String LISTENERS = "menu_listener"; //$NON-NLS-1$ private static final Map> menuMap = new HashMap>(); private static final Set elementsToSkip = new HashSet(); // MENU_ADD_xxx - controls which items are in the ADD menu // MENU_PARENT_xxx - controls which items are in the Insert Parent menu private static final String[] MENU_ADD_CONTROLLER = new String[] { MenuFactory.CONTROLLERS, MenuFactory.CONFIG_ELEMENTS, MenuFactory.TIMERS, MenuFactory.PRE_PROCESSORS, MenuFactory.SAMPLERS, MenuFactory.POST_PROCESSORS, MenuFactory.ASSERTIONS, MenuFactory.LISTENERS, }; private static final String[] MENU_PARENT_CONTROLLER = new String[] { MenuFactory.CONTROLLERS }; private static final String[] MENU_ADD_SAMPLER = new String[] { MenuFactory.CONFIG_ELEMENTS, MenuFactory.TIMERS, MenuFactory.PRE_PROCESSORS, MenuFactory.POST_PROCESSORS, MenuFactory.ASSERTIONS, MenuFactory.LISTENERS, }; private static final String[] MENU_PARENT_SAMPLER = new String[] { MenuFactory.CONTROLLERS }; private static final List timers, controllers, samplers, threads, fragments,configElements, assertions, listeners, nonTestElements, postProcessors, preProcessors; static { threads = new LinkedList(); fragments = new LinkedList(); timers = new LinkedList(); controllers = new LinkedList(); samplers = new LinkedList(); configElements = new LinkedList(); assertions = new LinkedList(); listeners = new LinkedList(); postProcessors = new LinkedList(); preProcessors = new LinkedList(); nonTestElements = new LinkedList(); menuMap.put(THREADS, threads); menuMap.put(FRAGMENTS, fragments); menuMap.put(TIMERS, timers); menuMap.put(ASSERTIONS, assertions); menuMap.put(CONFIG_ELEMENTS, configElements); menuMap.put(CONTROLLERS, controllers); menuMap.put(LISTENERS, listeners); menuMap.put(NON_TEST_ELEMENTS, nonTestElements); menuMap.put(SAMPLERS, samplers); menuMap.put(POST_PROCESSORS, postProcessors); menuMap.put(PRE_PROCESSORS, preProcessors); try { String[] classesToSkip = JOrphanUtils.split(JMeterUtils.getPropDefault("not_in_menu", ""), ","); //$NON-NLS-1$ for (int i = 0; i < classesToSkip.length; i++) { elementsToSkip.add(classesToSkip[i].trim()); } initializeMenus(); sortPluginMenus(); } catch (Throwable e) { log.error("", e); if (e instanceof Error){ throw (Error) e; } if (e instanceof RuntimeException){ throw (RuntimeException) e; } } } /** * Private constructor to prevent instantiation. */ private MenuFactory() { } public static void addEditMenu(JPopupMenu menu, boolean removable) { addSeparator(menu); if (removable) { menu.add(makeMenuItemRes("cut", ActionNames.CUT, KeyStrokes.CUT)); //$NON-NLS-1$ } menu.add(makeMenuItemRes("copy", ActionNames.COPY, KeyStrokes.COPY)); //$NON-NLS-1$ menu.add(makeMenuItemRes("paste", ActionNames.PASTE, KeyStrokes.PASTE)); //$NON-NLS-1$ menu.add(makeMenuItemRes("duplicate", ActionNames.DUPLICATE, KeyStrokes.DUPLICATE)); //$NON-NLS-1$ menu.add(makeMenuItemRes("reset_gui", ActionNames.RESET_GUI )); //$NON-NLS-1$ if (removable) { menu.add(makeMenuItemRes("remove", ActionNames.REMOVE, KeyStrokes.REMOVE)); //$NON-NLS-1$ } } public static void addPasteResetMenu(JPopupMenu menu) { addSeparator(menu); menu.add(makeMenuItemRes("paste", ActionNames.PASTE, KeyStrokes.PASTE)); //$NON-NLS-1$ menu.add(makeMenuItemRes("reset_gui", ActionNames.RESET_GUI )); //$NON-NLS-1$ } public static void addFileMenu(JPopupMenu menu) { addSeparator(menu); menu.add(makeMenuItemRes("open", ActionNames.OPEN));// $NON-NLS-1$ menu.add(makeMenuItemRes("menu_merge", ActionNames.MERGE));// $NON-NLS-1$ menu.add(makeMenuItemRes("save_as", ActionNames.SAVE_AS));// $NON-NLS-1$ addSeparator(menu); JMenuItem savePicture = makeMenuItemRes("save_as_image",// $NON-NLS-1$ ActionNames.SAVE_GRAPHICS, KeyStrokes.SAVE_GRAPHICS); menu.add(savePicture); if (!(GuiPackage.getInstance().getCurrentGui() instanceof Printable)) { savePicture.setEnabled(false); } JMenuItem savePictureAll = makeMenuItemRes("save_as_image_all",// $NON-NLS-1$ ActionNames.SAVE_GRAPHICS_ALL, KeyStrokes.SAVE_GRAPHICS_ALL); menu.add(savePictureAll); addSeparator(menu); JMenuItem disabled = makeMenuItemRes("disable", ActionNames.DISABLE);// $NON-NLS-1$ JMenuItem enabled = makeMenuItemRes("enable", ActionNames.ENABLE);// $NON-NLS-1$ boolean isEnabled = GuiPackage.getInstance().getTreeListener().getCurrentNode().isEnabled(); if (isEnabled) { disabled.setEnabled(true); enabled.setEnabled(false); } else { disabled.setEnabled(false); enabled.setEnabled(true); } menu.add(enabled); menu.add(disabled); JMenuItem toggle = makeMenuItemRes("toggle", ActionNames.TOGGLE, KeyStrokes.TOGGLE);// $NON-NLS-1$ menu.add(toggle); addSeparator(menu); menu.add(makeMenuItemRes("help", ActionNames.HELP));// $NON-NLS-1$ } public static JMenu makeMenus(String[] categories, String label, String actionCommand) { JMenu addMenu = new JMenu(label); for (int i = 0; i < categories.length; i++) { addMenu.add(makeMenu(categories[i], actionCommand)); } return addMenu; } public static JPopupMenu getDefaultControllerMenu() { JPopupMenu pop = new JPopupMenu(); pop.add(MenuFactory.makeMenus(MENU_ADD_CONTROLLER, JMeterUtils.getResString("add"),// $NON-NLS-1$ ActionNames.ADD)); pop.add(makeMenus(MENU_PARENT_CONTROLLER, JMeterUtils.getResString("insert_parent"),// $NON-NLS-1$ ActionNames.ADD_PARENT)); pop.add(makeMenus(MENU_PARENT_CONTROLLER, JMeterUtils.getResString("change_parent"),// $NON-NLS-1$ ActionNames.CHANGE_PARENT)); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultSamplerMenu() { JPopupMenu pop = new JPopupMenu(); pop.add(MenuFactory.makeMenus(MENU_ADD_SAMPLER, JMeterUtils.getResString("add"),// $NON-NLS-1$ ActionNames.ADD)); pop.add(makeMenus(MENU_PARENT_SAMPLER, JMeterUtils.getResString("insert_parent"),// $NON-NLS-1$ ActionNames.ADD_PARENT)); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultConfigElementMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultVisualizerMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultTimerMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultAssertionMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultExtractorMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultMenu() { // if type is unknown JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } /** * Create a menu from a menu category. * * @param category - predefined string (used as key for menuMap HashMap and messages.properties lookup) * @param actionCommand - predefined string, e.g. ActionNames.ADD * @see org.apache.jmeter.gui.action.ActionNames * @return the menu */ public static JMenu makeMenu(String category, String actionCommand) { return makeMenu(menuMap.get(category), actionCommand, JMeterUtils.getResString(category)); } /** * Create a menu from a collection of items. * * @param menuInfo - collection of MenuInfo items * @param actionCommand - predefined string, e.g. ActionNames.ADD * @see org.apache.jmeter.gui.action.ActionNames * @param menuName * @return the menu */ public static JMenu makeMenu(Collection menuInfo, String actionCommand, String menuName) { JMenu menu = new JMenu(menuName); for (MenuInfo info : menuInfo) { menu.add(makeMenuItem(info, actionCommand)); } return menu; } public static void setEnabled(JMenu menu) { if (menu.getSubElements().length == 0) { menu.setEnabled(false); } } /** * Create a single menu item * * @param label for the MenuItem * @param name for the MenuItem * @param actionCommand - predefined string, e.g. ActionNames.ADD * @see org.apache.jmeter.gui.action.ActionNames * @return the menu item */ public static JMenuItem makeMenuItem(String label, String name, String actionCommand) { JMenuItem newMenuChoice = new JMenuItem(label); newMenuChoice.setName(name); newMenuChoice.addActionListener(ActionRouter.getInstance()); if (actionCommand != null) { newMenuChoice.setActionCommand(actionCommand); } return newMenuChoice; } /** * Create a single menu item from the resource name. * * @param resource for the MenuItem * @param actionCommand - predefined string, e.g. ActionNames.ADD * @see org.apache.jmeter.gui.action.ActionNames * @return the menu item */ public static JMenuItem makeMenuItemRes(String resource, String actionCommand) { JMenuItem newMenuChoice = new JMenuItem(JMeterUtils.getResString(resource)); newMenuChoice.setName(resource); newMenuChoice.addActionListener(ActionRouter.getInstance()); if (actionCommand != null) { newMenuChoice.setActionCommand(actionCommand); } return newMenuChoice; } /** * Create a single menu item from a MenuInfo object * * @param info the MenuInfo object * @param actionCommand - predefined string, e.g. ActionNames.ADD * @see org.apache.jmeter.gui.action.ActionNames * @return the menu item */ public static Component makeMenuItem(MenuInfo info, String actionCommand) { JMenuItem newMenuChoice = new JMenuItem(info.getLabel()); newMenuChoice.setName(info.getClassName()); newMenuChoice.addActionListener(ActionRouter.getInstance()); if (actionCommand != null) { newMenuChoice.setActionCommand(actionCommand); } return newMenuChoice; } public static JMenuItem makeMenuItemRes(String resource, String actionCommand, KeyStroke accel) { JMenuItem item = makeMenuItemRes(resource, actionCommand); item.setAccelerator(accel); return item; } public static JMenuItem makeMenuItem(String label, String name, String actionCommand, KeyStroke accel) { JMenuItem item = makeMenuItem(label, name, actionCommand); item.setAccelerator(accel); return item; } private static void initializeMenus() { try { List guiClasses = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { JMeterGUIComponent.class, TestBean.class }); Collections.sort(guiClasses); for (String name : guiClasses) { /* * JMeterTreeNode and TestBeanGUI are special GUI classes, and * aren't intended to be added to menus * * TODO: find a better way of checking this */ if (name.endsWith("JMeterTreeNode") // $NON-NLS-1$ || name.endsWith("TestBeanGUI")) {// $NON-NLS-1$ continue;// Don't try to instantiate these } if (elementsToSkip.contains(name)) { // No point instantiating class log.info("Skipping " + name); continue; } boolean hideBean = false; // Should the TestBean be hidden? JMeterGUIComponent item; try { Class c = Class.forName(name); if (TestBean.class.isAssignableFrom(c)) { TestBeanGUI tbgui = new TestBeanGUI(c); hideBean = tbgui.isHidden() || (tbgui.isExpert() && !JMeterUtils.isExpertMode()); item = tbgui; } else { item = (JMeterGUIComponent) c.newInstance(); } } catch (NoClassDefFoundError e) { log.warn("Missing jar? Could not create " + name + ". " + e); continue; } catch (Throwable e) { log.warn("Could not instantiate " + name, e); if (e instanceof Error){ throw (Error) e; } if (e instanceof RuntimeException){ throw (RuntimeException) e; } continue; } if (hideBean || elementsToSkip.contains(item.getStaticLabel())) { log.info("Skipping " + name); continue; } else { elementsToSkip.add(name); // Don't add it again } Collection categories = item.getMenuCategories(); if (categories == null) { log.debug(name + " participates in no menus."); continue; } if (categories.contains(THREADS)) { threads.add(new MenuInfo(item, name)); } if (categories.contains(FRAGMENTS)) { fragments.add(new MenuInfo(item, name)); } if (categories.contains(TIMERS)) { timers.add(new MenuInfo(item, name)); } if (categories.contains(POST_PROCESSORS)) { postProcessors.add(new MenuInfo(item, name)); } if (categories.contains(PRE_PROCESSORS)) { preProcessors.add(new MenuInfo(item, name)); } if (categories.contains(CONTROLLERS)) { controllers.add(new MenuInfo(item, name)); } if (categories.contains(SAMPLERS)) { samplers.add(new MenuInfo(item, name)); } if (categories.contains(NON_TEST_ELEMENTS)) { nonTestElements.add(new MenuInfo(item, name)); } if (categories.contains(LISTENERS)) { listeners.add(new MenuInfo(item, name)); } if (categories.contains(CONFIG_ELEMENTS)) { configElements.add(new MenuInfo(item, name)); } if (categories.contains(ASSERTIONS)) { assertions.add(new MenuInfo(item, name)); } } } catch (IOException e) { log.error("", e); } } private static void addSeparator(JPopupMenu menu) { MenuElement[] elements = menu.getSubElements(); if ((elements.length > 0) && !(elements[elements.length - 1] instanceof JPopupMenu.Separator)) { menu.addSeparator(); } } /** * Determine whether or not nodes can be added to this parent. * * Used by Merge * * @param parentNode * @param element - top-level test element to be added * * @return whether it is OK to add the element to this parent */ public static boolean canAddTo(JMeterTreeNode parentNode, TestElement element) { JMeterTreeNode node = new JMeterTreeNode(element, null); return canAddTo(parentNode, new JMeterTreeNode[]{node}); } /** * Determine whether or not nodes can be added to this parent. * * Used by DragNDrop and Paste. * * @param parentNode * @param nodes - array of nodes that are to be added * * @return whether it is OK to add the dragged nodes to this parent */ public static boolean canAddTo(JMeterTreeNode parentNode, JMeterTreeNode nodes[]) { if (null == parentNode) { return false; } if (foundClass(nodes, new Class[]{WorkBench.class})){// Can't add a Workbench anywhere return false; } if (foundClass(nodes, new Class[]{TestPlan.class})){// Can't add a TestPlan anywhere return false; } TestElement parent = parentNode.getTestElement(); // Force TestFragment to only be pastable under a Test Plan if (foundClass(nodes, new Class[]{org.apache.jmeter.control.TestFragmentController.class})){ if (parent instanceof TestPlan) return true; return false; } if (parent instanceof WorkBench) {// allow everything else return true; } if (parent instanceof TestPlan) { if (foundClass(nodes, new Class[]{Sampler.class, Controller.class}, // Samplers and Controllers need not apply ... org.apache.jmeter.threads.AbstractThreadGroup.class) // but AbstractThreadGroup (Controller) is OK ){ return false; } return true; } // AbstractThreadGroup is only allowed under a TestPlan if (foundClass(nodes, new Class[]{org.apache.jmeter.threads.AbstractThreadGroup.class})){ return false; } if (parent instanceof Controller) {// Includes thread group; anything goes return true; } if (parent instanceof Sampler) {// Samplers and Controllers need not apply ... if (foundClass(nodes, new Class[]{Sampler.class, Controller.class})){ return false; } return true; } // All other return false; } // Is any node an instance of one of the classes? private static boolean foundClass(JMeterTreeNode nodes[],Class classes[]){ for (int i = 0; i < nodes.length; i++) { JMeterTreeNode node = nodes[i]; for (int j=0; j < classes.length; j++) { if (classes[j].isInstance(node.getUserObject())){ return true; } } } return false; } // Is any node an instance of one of the classes, but not an exception? private static boolean foundClass(JMeterTreeNode nodes[],Class classes[], Class except){ for (int i = 0; i < nodes.length; i++) { JMeterTreeNode node = nodes[i]; Object userObject = node.getUserObject(); if (!except.isInstance(userObject)) { for (int j=0; j < classes.length; j++) { if (classes[j].isInstance(userObject)){ return true; } } } } return false; } // Methods used for Test cases static int menuMap_size() { return menuMap.size(); } static int assertions_size() { return assertions.size(); } static int configElements_size() { return configElements.size(); } static int controllers_size() { return controllers.size(); } static int listeners_size() { return listeners.size(); } static int nonTestElements_size() { return nonTestElements.size(); } static int postProcessors_size() { return postProcessors.size(); } static int preProcessors_size() { return preProcessors.size(); } static int samplers_size() { return samplers.size(); } static int timers_size() { return timers.size(); } static int elementsToSkip_size() { return elementsToSkip.size(); } /** * Menu sort helper class */ private static class MenuInfoComparator implements Comparator, Serializable { private static final long serialVersionUID = 1L; private final boolean caseBlind; MenuInfoComparator(boolean caseBlind){ this.caseBlind = caseBlind; } public int compare(MenuInfo o1, MenuInfo o2) { String lab1 = o1.getLabel(); String lab2 = o2.getLabel(); if (caseBlind) { return lab1.toLowerCase(Locale.ENGLISH).compareTo(lab2.toLowerCase(Locale.ENGLISH)); } return lab1.compareTo(lab2); } } /** * Sort loaded menus; all but THREADS are sorted case-blind. * [This is so Thread Group appears before setUp and tearDown] */ private static void sortPluginMenus() { for(Entry> me : menuMap.entrySet()){ Collections.sort(me.getValue(), new MenuInfoComparator(!me.getKey().equals(THREADS))); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/HeaderAsPropertyRenderer.java0000644000175000017500000000454612032647220027760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import org.apache.jmeter.util.JMeterUtils; /** * Renders items in a JTable by converting from resource names. */ public class HeaderAsPropertyRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 240L; public HeaderAsPropertyRenderer() { super(); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if (table != null) { JTableHeader header = table.getTableHeader(); if (header != null){ setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } setText(getText(value, row, column)); setBorder(UIManager.getBorder("TableHeader.cellBorder")); setHorizontalAlignment(SwingConstants.CENTER); } return this; } /** * Get the text for the value as the translation of the resource name. * * @param value * @param column * @param row * @return the text */ protected String getText(Object value, int row, int column) { if (value == null){ return ""; } return JMeterUtils.getResString(value.toString()); } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/ButtonPanel.java0000644000175000017500000000743312032647220025301 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JPanel; import org.apache.jmeter.util.JMeterUtils; // TODO - does not appear to be used public class ButtonPanel extends JPanel { private static final long serialVersionUID = 240L; public static final int ADD_BUTTON = 1; public static final int EDIT_BUTTON = 2; public static final int DELETE_BUTTON = 3; public static final int LOAD_BUTTON = 4; public static final int SAVE_BUTTON = 5; private JButton add, delete, edit, load, save; public ButtonPanel() { init(); } public void addButtonListener(int button, ActionListener listener) { switch (button) { case ADD_BUTTON: add.addActionListener(listener); break; case EDIT_BUTTON: edit.addActionListener(listener); break; case DELETE_BUTTON: delete.addActionListener(listener); break; case LOAD_BUTTON: load.addActionListener(listener); break; case SAVE_BUTTON: save.addActionListener(listener); break; } } /* * NOTUSED private void initButtonMap() { } */ private void init() { add = new JButton(JMeterUtils.getResString("add")); // $NON-NLS-1$ add.setActionCommand("Add"); edit = new JButton(JMeterUtils.getResString("edit")); // $NON-NLS-1$ edit.setActionCommand("Edit"); delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ delete.setActionCommand("Delete"); load = new JButton(JMeterUtils.getResString("load")); // $NON-NLS-1$ load.setActionCommand("Load"); save = new JButton(JMeterUtils.getResString("save")); // $NON-NLS-1$ save.setActionCommand("Save"); Dimension d = delete.getPreferredSize(); add.setPreferredSize(d); edit.setPreferredSize(d); // close.setPreferredSize(d); load.setPreferredSize(d); save.setPreferredSize(d); GridBagLayout g = new GridBagLayout(); this.setLayout(g); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.NONE; c.gridwidth = 1; c.gridheight = 1; c.gridx = 1; c.gridy = 1; g.setConstraints(add, c); this.add(add); c.gridx = 2; c.gridy = 1; g.setConstraints(edit, c); this.add(edit); c.gridx = 3; c.gridy = 1; g.setConstraints(delete, c); this.add(delete); /* * c.gridx = 1; c.gridy = 2; g.setConstraints(close, c); * panel.add(close); */ c.gridx = 2; c.gridy = 2; g.setConstraints(load, c); this.add(load); c.gridx = 3; c.gridy = 2; g.setConstraints(save, c); this.add(save); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/JMeterMenuBar.java0000644000175000017500000006645112032647220025513 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComponent; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import javax.swing.MenuElement; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.gui.action.LoadRecentProject; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jmeter.util.SSLManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class JMeterMenuBar extends JMenuBar implements LocaleChangeListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private JMenu fileMenu; private JMenuItem file_save_as; private JMenuItem file_selection_as; private JMenuItem file_revert; private JMenuItem file_load; private List file_load_recent_files; private JMenuItem file_merge; private JMenuItem file_exit; private JMenuItem file_close; private JMenu editMenu; private JMenu edit_add; private JMenu runMenu; private JMenuItem run_start; private JMenuItem run_start_no_timers; private JMenu remote_start; private JMenuItem remote_start_all; private Collection remote_engine_start; private JMenuItem run_stop; private JMenuItem run_shut; private JMenu remote_stop; private JMenu remote_shut; private JMenuItem remote_stop_all; private JMenuItem remote_shut_all; private Collection remote_engine_stop; private Collection remote_engine_shut; private JMenuItem run_clear; private JMenuItem run_clearAll; // JMenu reportMenu; // JMenuItem analyze; private JMenu optionsMenu; private JMenu lafMenu; private JMenuItem sslManager; private JMenu helpMenu; private JMenuItem help_about; private String[] remoteHosts; private JMenu remote_exit; private JMenuItem remote_exit_all; private Collection remote_engine_exit; private JMenu searchMenu; public static final String SYSTEM_LAF = "System"; // $NON-NLS-1$ public static final String CROSS_PLATFORM_LAF = "CrossPlatform"; // $NON-NLS-1$ public JMeterMenuBar() { // List for recent files menu items file_load_recent_files = new LinkedList(); // Lists for remote engines menu items remote_engine_start = new LinkedList(); remote_engine_stop = new LinkedList(); remote_engine_shut = new LinkedList(); remote_engine_exit = new LinkedList(); remoteHosts = JOrphanUtils.split(JMeterUtils.getPropDefault("remote_hosts", ""), ","); //$NON-NLS-1$ if (remoteHosts.length == 1 && remoteHosts[0].equals("")) { remoteHosts = new String[0]; } this.getRemoteItems(); createMenuBar(); JMeterUtils.addLocaleChangeListener(this); } public void setFileSaveEnabled(boolean enabled) { if(file_save_as != null) { file_save_as.setEnabled(enabled); } } public void setFileLoadEnabled(boolean enabled) { if (file_load != null) { file_load.setEnabled(enabled); } if (file_merge != null) { file_merge.setEnabled(enabled); } } public void setFileRevertEnabled(boolean enabled) { if(file_revert != null) { file_revert.setEnabled(enabled); } } public void setProjectFileLoaded(String file) { if(file_load_recent_files != null && file != null) { LoadRecentProject.updateRecentFileMenuItems(file_load_recent_files, file); } } public void setEditEnabled(boolean enabled) { if (editMenu != null) { editMenu.setEnabled(enabled); } } // Does not appear to be used; called by MainFrame#setEditAddMenu() but that is not called public void setEditAddMenu(JMenu menu) { // If the Add menu already exists, remove it. if (edit_add != null) { editMenu.remove(edit_add); } // Insert the Add menu as the first menu item in the Edit menu. edit_add = menu; editMenu.insert(edit_add, 0); } // Called by MainFrame#setEditMenu() which is called by EditCommand#doAction and GuiPackage#localeChanged public void setEditMenu(JPopupMenu menu) { if (menu != null) { editMenu.removeAll(); Component[] comps = menu.getComponents(); for (int i = 0; i < comps.length; i++) { editMenu.add(comps[i]); } editMenu.setEnabled(true); } else { editMenu.setEnabled(false); } } public void setEditAddEnabled(boolean enabled) { // There was a NPE being thrown without the null check here.. JKB if (edit_add != null) { edit_add.setEnabled(enabled); } // If we are enabling the Edit-->Add menu item, then we also need to // enable the Edit menu. The Edit menu may already be enabled, but // there's no harm it trying to enable it again. setEditEnabled(enabled); } /** * Creates the MenuBar for this application. I believe in my heart that this * should be defined in a file somewhere, but that is for later. */ public void createMenuBar() { makeFileMenu(); makeEditMenu(); makeRunMenu(); makeOptionsMenu(); makeHelpMenu(); makeSearchMenu(); this.add(fileMenu); this.add(editMenu); this.add(searchMenu); this.add(runMenu); this.add(optionsMenu); this.add(helpMenu); } private void makeHelpMenu() { // HELP MENU helpMenu = makeMenuRes("help",'H'); //$NON-NLS-1$ JMenuItem contextHelp = makeMenuItemRes("help", 'H', ActionNames.HELP, KeyStrokes.HELP); //$NON-NLS-1$ JMenuItem whatClass = makeMenuItemRes("help_node", 'W', ActionNames.WHAT_CLASS, KeyStrokes.WHAT_CLASS);//$NON-NLS-1$ JMenuItem setDebug = makeMenuItemRes("debug_on", ActionNames.DEBUG_ON, KeyStrokes.DEBUG_ON);//$NON-NLS-1$ JMenuItem resetDebug = makeMenuItemRes("debug_off", ActionNames.DEBUG_OFF, KeyStrokes.DEBUG_OFF);//$NON-NLS-1$ JMenuItem heapDump = makeMenuItemRes("heap_dump", ActionNames.HEAP_DUMP);//$NON-NLS-1$ help_about = makeMenuItemRes("about", 'A', ActionNames.ABOUT); //$NON-NLS-1$ helpMenu.add(contextHelp); helpMenu.addSeparator(); helpMenu.add(whatClass); helpMenu.add(setDebug); helpMenu.add(resetDebug); helpMenu.add(heapDump); helpMenu.addSeparator(); helpMenu.add(help_about); } private void makeOptionsMenu() { // OPTIONS MENU optionsMenu = makeMenuRes("option",'O'); //$NON-NLS-1$ JMenuItem functionHelper = makeMenuItemRes("function_dialog_menu_item", 'F', ActionNames.FUNCTIONS, KeyStrokes.FUNCTIONS); //$NON-NLS-1$ lafMenu = makeMenuRes("appearance",'L'); //$NON-NLS-1$ UIManager.LookAndFeelInfo lafs[] = getAllLAFs(); for (int i = 0; i < lafs.length; ++i) { JMenuItem laf = new JMenuItem(lafs[i].getName()); laf.addActionListener(ActionRouter.getInstance()); laf.setActionCommand(ActionNames.LAF_PREFIX + lafs[i].getClassName()); laf.setToolTipText(lafs[i].getClassName()); // show the classname to the user lafMenu.add(laf); } optionsMenu.add(functionHelper); optionsMenu.add(lafMenu); JCheckBoxMenuItem menuToolBar = makeCheckBoxMenuItemRes("menu_toolbar", ActionNames.TOOLBAR); //$NON-NLS-1$ JCheckBoxMenuItem menuLoggerPanel = makeCheckBoxMenuItemRes("menu_logger_panel", ActionNames.LOGGER_PANEL_ENABLE_DISABLE); //$NON-NLS-1$ GuiPackage guiInstance = GuiPackage.getInstance(); if (guiInstance != null) { //avoid error in ant task tests (good way?) guiInstance.setMenuItemToolbar(menuToolBar); guiInstance.setMenuItemLoggerPanel(menuLoggerPanel); } optionsMenu.add(menuToolBar); optionsMenu.add(menuLoggerPanel); if (SSLManager.isSSLSupported()) { sslManager = makeMenuItemRes("sslmanager", 'S', ActionNames.SSL_MANAGER, KeyStrokes.SSL_MANAGER); //$NON-NLS-1$ optionsMenu.add(sslManager); } optionsMenu.add(makeLanguageMenu()); JMenuItem collapse = makeMenuItemRes("menu_collapse_all", ActionNames.COLLAPSE_ALL, KeyStrokes.COLLAPSE_ALL); //$NON-NLS-1$ optionsMenu.add(collapse); JMenuItem expand = makeMenuItemRes("menu_expand_all", ActionNames.EXPAND_ALL, KeyStrokes.EXPAND_ALL); //$NON-NLS-1$ optionsMenu.add(expand); } private static class LangMenuHelper{ final ActionRouter actionRouter = ActionRouter.getInstance(); final JMenu languageMenu; LangMenuHelper(JMenu _languageMenu){ languageMenu = _languageMenu; } /** * Create a language entry from the locale name. * * @param locale - must also be a valid resource name */ void addLang(String locale){ String localeString = JMeterUtils.getLocaleString(locale); JMenuItem language = new JMenuItem(localeString); language.addActionListener(actionRouter); language.setActionCommand(ActionNames.CHANGE_LANGUAGE); language.setName(locale); // This is used by the ChangeLanguage class to define the Locale languageMenu.add(language); } } /** * Generate the list of supported languages. * * @return list of languages */ // Also used by org.apache.jmeter.resources.PackageTest public static String[] getLanguages(){ List lang = new ArrayList(20); lang.add(Locale.ENGLISH.toString()); // en lang.add(Locale.FRENCH.toString()); // fr lang.add(Locale.GERMAN.toString()); // de lang.add("no"); // $NON-NLS-1$ lang.add("pl"); // $NON-NLS-1$ lang.add("pt_BR"); // $NON-NLS-1$ lang.add("es"); // $NON-NLS-1$ lang.add("tr"); // $NON-NLS-1$ lang.add(Locale.JAPANESE.toString()); // ja lang.add(Locale.SIMPLIFIED_CHINESE.toString()); // zh_CN lang.add(Locale.TRADITIONAL_CHINESE.toString()); // zh_TW final String addedLocales = JMeterUtils.getProperty("locales.add"); if (addedLocales != null){ String [] addLanguages =addedLocales.split(","); // $NON-NLS-1$ for(String newLang : addLanguages){ log.info("Adding locale "+newLang); lang.add(newLang); } } return lang.toArray(new String[lang.size()]); } static JMenu makeLanguageMenu() { final JMenu languageMenu = makeMenuRes("choose_language",'C'); //$NON-NLS-1$ LangMenuHelper langMenu = new LangMenuHelper(languageMenu); /* * Note: the item name is used by ChangeLanguage to create a Locale for * that language, so need to ensure that the language strings are valid * If they exist, use the Locale language constants. * Also, need to ensure that the names are valid resource entries too. */ for(String lang : getLanguages()){ langMenu.addLang(lang); } return languageMenu; } private void makeRunMenu() { // RUN MENU runMenu = makeMenuRes("run",'R'); //$NON-NLS-1$ run_start = makeMenuItemRes("start", 'S', ActionNames.ACTION_START, KeyStrokes.ACTION_START); //$NON-NLS-1$ run_start_no_timers = makeMenuItemRes("start_no_timers", ActionNames.ACTION_START_NO_TIMERS); //$NON-NLS-1$ run_stop = makeMenuItemRes("stop", 'T', ActionNames.ACTION_STOP, KeyStrokes.ACTION_STOP); //$NON-NLS-1$ run_stop.setEnabled(false); run_shut = makeMenuItemRes("shutdown", 'Y', ActionNames.ACTION_SHUTDOWN, KeyStrokes.ACTION_SHUTDOWN); //$NON-NLS-1$ run_shut.setEnabled(false); run_clear = makeMenuItemRes("clear", 'C', ActionNames.CLEAR, KeyStrokes.CLEAR); //$NON-NLS-1$ run_clearAll = makeMenuItemRes("clear_all", 'a', ActionNames.CLEAR_ALL, KeyStrokes.CLEAR_ALL); //$NON-NLS-1$ runMenu.add(run_start); runMenu.add(run_start_no_timers); if (remote_start != null) { runMenu.add(remote_start); } remote_start_all = makeMenuItemRes("remote_start_all", ActionNames.REMOTE_START_ALL, KeyStrokes.REMOTE_START_ALL); //$NON-NLS-1$ runMenu.add(remote_start_all); runMenu.add(run_stop); runMenu.add(run_shut); if (remote_stop != null) { runMenu.add(remote_stop); } remote_stop_all = makeMenuItemRes("remote_stop_all", 'X', ActionNames.REMOTE_STOP_ALL, KeyStrokes.REMOTE_STOP_ALL); //$NON-NLS-1$ runMenu.add(remote_stop_all); if (remote_shut != null) { runMenu.add(remote_shut); } remote_shut_all = makeMenuItemRes("remote_shut_all", 'X', ActionNames.REMOTE_SHUT_ALL, KeyStrokes.REMOTE_SHUT_ALL); //$NON-NLS-1$ runMenu.add(remote_shut_all); if (remote_exit != null) { runMenu.add(remote_exit); } remote_exit_all = makeMenuItemRes("remote_exit_all", ActionNames.REMOTE_EXIT_ALL); //$NON-NLS-1$ runMenu.add(remote_exit_all); runMenu.addSeparator(); runMenu.add(run_clear); runMenu.add(run_clearAll); } private void makeEditMenu() { // EDIT MENU editMenu = makeMenuRes("edit",'E'); //$NON-NLS-1$ // From the Java Look and Feel Guidelines: If all items in a menu // are disabled, then disable the menu. Makes sense. editMenu.setEnabled(false); } private void makeFileMenu() { // FILE MENU fileMenu = makeMenuRes("file",'F'); //$NON-NLS-1$ JMenuItem file_save = makeMenuItemRes("save", 'S', ActionNames.SAVE, KeyStrokes.SAVE); //$NON-NLS-1$ file_save.setEnabled(true); file_save_as = makeMenuItemRes("save_all_as", 'A', ActionNames.SAVE_ALL_AS, KeyStrokes.SAVE_ALL_AS); //$NON-NLS-1$ file_save_as.setEnabled(true); file_selection_as = makeMenuItemRes("save_as", ActionNames.SAVE_AS); //$NON-NLS-1$ file_selection_as.setEnabled(true); file_revert = makeMenuItemRes("revert_project", 'R', ActionNames.REVERT_PROJECT); //$NON-NLS-1$ file_revert.setEnabled(false); file_load = makeMenuItemRes("menu_open", 'O', ActionNames.OPEN, KeyStrokes.OPEN); //$NON-NLS-1$ // Set default SAVE menu item to disabled since the default node that // is selected is ROOT, which does not allow items to be inserted. file_load.setEnabled(false); file_close = makeMenuItemRes("menu_close", 'C', ActionNames.CLOSE, KeyStrokes.CLOSE); //$NON-NLS-1$ file_exit = makeMenuItemRes("exit", 'X', ActionNames.EXIT, KeyStrokes.EXIT); //$NON-NLS-1$ file_merge = makeMenuItemRes("menu_merge", 'M', ActionNames.MERGE); //$NON-NLS-1$ // file_merge.setAccelerator( // KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK)); // Set default SAVE menu item to disabled since the default node that // is selected is ROOT, which does not allow items to be inserted. file_merge.setEnabled(false); fileMenu.add(file_close); fileMenu.add(file_load); fileMenu.add(file_merge); fileMenu.addSeparator(); fileMenu.add(file_save); fileMenu.add(file_save_as); fileMenu.add(file_selection_as); fileMenu.add(file_revert); fileMenu.addSeparator(); // Add the recent files, which will also add a separator that is // visible when needed file_load_recent_files = LoadRecentProject.getRecentFileMenuItems(); for(JComponent jc : file_load_recent_files){ fileMenu.add(jc); } fileMenu.add(file_exit); } private void makeSearchMenu() { // Search MENU searchMenu = makeMenuRes("menu_search"); //$NON-NLS-1$ JMenuItem search = makeMenuItemRes("menu_search", 'F', ActionNames.SEARCH_TREE, KeyStrokes.SEARCH_TREE); //$NON-NLS-1$ searchMenu.add(search); searchMenu.setEnabled(true); JMenuItem searchReset = makeMenuItemRes("menu_search_reset", ActionNames.SEARCH_RESET); //$NON-NLS-1$ searchMenu.add(searchReset); searchMenu.setEnabled(true); } public void setRunning(boolean running, String host) { log.info("setRunning(" + running + "," + host + ")"); Iterator iter = remote_engine_start.iterator(); Iterator iter2 = remote_engine_stop.iterator(); Iterator iter3 = remote_engine_exit.iterator(); Iterator iter4 = remote_engine_shut.iterator(); while (iter.hasNext() && iter2.hasNext() && iter3.hasNext() &&iter4.hasNext()) { JMenuItem start = iter.next(); JMenuItem stop = iter2.next(); JMenuItem exit = iter3.next(); JMenuItem shut = iter4.next(); if (start.getText().equals(host)) { log.debug("Found start host: " + start.getText()); start.setEnabled(!running); } if (stop.getText().equals(host)) { log.debug("Found stop host: " + stop.getText()); stop.setEnabled(running); } if (exit.getText().equals(host)) { log.debug("Found exit host: " + exit.getText()); exit.setEnabled(true); } if (shut.getText().equals(host)) { log.debug("Found exit host: " + exit.getText()); shut.setEnabled(running); } } } /** {@inheritDoc} */ @Override public void setEnabled(boolean enable) { run_start.setEnabled(!enable); run_start_no_timers.setEnabled(!enable); run_stop.setEnabled(enable); run_shut.setEnabled(enable); } private void getRemoteItems() { if (remoteHosts.length > 0) { remote_start = makeMenuRes("remote_start"); //$NON-NLS-1$ remote_stop = makeMenuRes("remote_stop"); //$NON-NLS-1$ remote_shut = makeMenuRes("remote_shut"); //$NON-NLS-1$ remote_exit = makeMenuRes("remote_exit"); //$NON-NLS-1$ for (int i = 0; i < remoteHosts.length; i++) { remoteHosts[i] = remoteHosts[i].trim(); JMenuItem item = makeMenuItemNoRes(remoteHosts[i], ActionNames.REMOTE_START); remote_engine_start.add(item); remote_start.add(item); item = makeMenuItemNoRes(remoteHosts[i], ActionNames.REMOTE_STOP); item.setEnabled(false); remote_engine_stop.add(item); remote_stop.add(item); item = makeMenuItemNoRes(remoteHosts[i], ActionNames.REMOTE_SHUT); item.setEnabled(false); remote_engine_shut.add(item); remote_shut.add(item); item = makeMenuItemNoRes(remoteHosts[i],ActionNames.REMOTE_EXIT); item.setEnabled(false); remote_engine_exit.add(item); remote_exit.add(item); } } } /** {@inheritDoc} */ public void localeChanged(LocaleChangeEvent event) { updateMenuElement(fileMenu); updateMenuElement(editMenu); updateMenuElement(searchMenu); updateMenuElement(runMenu); updateMenuElement(optionsMenu); updateMenuElement(helpMenu); } /** * Get a list of all installed LAFs plus CrossPlatform and System. */ // This is also used by LookAndFeelCommand public static LookAndFeelInfo[] getAllLAFs() { UIManager.LookAndFeelInfo lafs[] = UIManager.getInstalledLookAndFeels(); int i = lafs.length; UIManager.LookAndFeelInfo lafsAll[] = new UIManager.LookAndFeelInfo[i+2]; System.arraycopy(lafs, 0, lafsAll, 0, i); lafsAll[i++]=new UIManager.LookAndFeelInfo(CROSS_PLATFORM_LAF,UIManager.getCrossPlatformLookAndFeelClassName()); lafsAll[i++]=new UIManager.LookAndFeelInfo(SYSTEM_LAF,UIManager.getSystemLookAndFeelClassName()); return lafsAll; } /** *

        Refreshes all texts in the menu and all submenus to a new locale.

        * *

        Assumes that the item name is set to the resource key, so the resource can be retrieved. * Certain action types do not follow this rule, @see JMeterMenuBar#isNotResource(String)

        * * The Language Change event assumes that the name is the same as the locale name, * so this additionally means that all supported locales must be defined as resources. * */ private void updateMenuElement(MenuElement menu) { Component component = menu.getComponent(); final String compName = component.getName(); if (compName != null) { if (component instanceof JMenu) { final JMenu jMenu = (JMenu) component; if (isResource(jMenu.getActionCommand())){ jMenu.setText(JMeterUtils.getResString(compName)); } } else { final JMenuItem jMenuItem = (JMenuItem) component; if (isResource(jMenuItem.getActionCommand())){ jMenuItem.setText(JMeterUtils.getResString(compName)); } else if (ActionNames.CHANGE_LANGUAGE.equals(jMenuItem.getActionCommand())){ jMenuItem.setText(JMeterUtils.getLocaleString(compName)); } } } MenuElement[] subelements = menu.getSubElements(); for (int i = 0; i < subelements.length; i++) { updateMenuElement(subelements[i]); } } /** * Return true if component name is a resource.
        * i.e it is not a hostname:
        * * ActionNames.REMOTE_START
        * ActionNames.REMOTE_STOP
        * ActionNames.REMOTE_EXIT
        * * nor a filename:
        * ActionNames.OPEN_RECENT * * nor a look and feel prefix:
        * ActionNames.LAF_PREFIX */ private static boolean isResource(String actionCommand) { if (ActionNames.CHANGE_LANGUAGE.equals(actionCommand)){// return false; } if (ActionNames.ADD.equals(actionCommand)){// return false; } if (ActionNames.REMOTE_START.equals(actionCommand)){// return false; } if (ActionNames.REMOTE_STOP.equals(actionCommand)){// return false; } if (ActionNames.REMOTE_SHUT.equals(actionCommand)){// return false; } if (ActionNames.REMOTE_EXIT.equals(actionCommand)){// return false; } if (ActionNames.OPEN_RECENT.equals(actionCommand)){// return false; } if (actionCommand != null && actionCommand.startsWith(ActionNames.LAF_PREFIX)){ return false; } return true; } /** * Make a menu from a resource string. * @param resource used to name menu and set text. * @return the menu */ private static JMenu makeMenuRes(String resource) { JMenu menu = new JMenu(JMeterUtils.getResString(resource)); menu.setName(resource); return menu; } /** * Make a menu from a resource string and set its mnemonic. * * @param resource * @param mnemonic * @return the menu */ private static JMenu makeMenuRes(String resource, int mnemonic){ JMenu menu = makeMenuRes(resource); menu.setMnemonic(mnemonic); return menu; } /** * Make a menuItem using a fixed label which is also used as the item name. * This is used for items such as recent files and hostnames which are not resources * @param label (this is not used as a resource key) * @param actionCommand * @return the menu item */ private static JMenuItem makeMenuItemNoRes(String label, String actionCommand) { JMenuItem menuItem = new JMenuItem(label); menuItem.setName(label); menuItem.setActionCommand(actionCommand); menuItem.addActionListener(ActionRouter.getInstance()); return menuItem; } private static JMenuItem makeMenuItemRes(String resource, String actionCommand) { return makeMenuItemRes(resource, KeyEvent.VK_UNDEFINED, actionCommand, null); } private static JMenuItem makeMenuItemRes(String resource, String actionCommand, KeyStroke keyStroke) { return makeMenuItemRes(resource, KeyEvent.VK_UNDEFINED, actionCommand, keyStroke); } private static JMenuItem makeMenuItemRes(String resource, int mnemonic, String actionCommand) { return makeMenuItemRes(resource, mnemonic, actionCommand, null); } private static JMenuItem makeMenuItemRes(String resource, int mnemonic, String actionCommand, KeyStroke keyStroke){ JMenuItem menuItem = new JMenuItem(JMeterUtils.getResString(resource), mnemonic); menuItem.setName(resource); menuItem.setActionCommand(actionCommand); menuItem.setAccelerator(keyStroke); menuItem.addActionListener(ActionRouter.getInstance()); return menuItem; } private static JCheckBoxMenuItem makeCheckBoxMenuItemRes(String resource, String actionCommand) { return makeCheckBoxMenuItemRes(resource, actionCommand, null); } private static JCheckBoxMenuItem makeCheckBoxMenuItemRes(String resource, String actionCommand, KeyStroke keyStroke){ JCheckBoxMenuItem cbkMenuItem = new JCheckBoxMenuItem(JMeterUtils.getResString(resource)); cbkMenuItem.setName(resource); cbkMenuItem.setActionCommand(actionCommand); cbkMenuItem.setAccelerator(keyStroke); cbkMenuItem.addActionListener(ActionRouter.getInstance()); return cbkMenuItem; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/FilePanel.java0000644000175000017500000000354112032647220024701 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import javax.swing.BorderFactory; import javax.swing.event.ChangeListener; import org.apache.jmeter.util.JMeterUtils; public class FilePanel extends FilePanelEntry { private static final long serialVersionUID = 240L; private final String title; public FilePanel() { this("", (String) null); } public FilePanel(String title) { this(title, (String) null); } public FilePanel(String title, String filetype) { super(JMeterUtils.getResString("file_visualizer_filename"), filetype); this.title = title; init(); } public FilePanel(ChangeListener l, String title) { super(JMeterUtils.getResString("file_visualizer_filename"), l); this.title = title; init(); } public FilePanel(String resString, String[] exts) { super(JMeterUtils.getResString("file_visualizer_filename"), exts); title = resString; init(); } private void init() { setBorder(BorderFactory.createTitledBorder(title)); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/JMeterColor.java0000644000175000017500000000250712032647220025230 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Color; public class JMeterColor extends Color { private static final long serialVersionUID = 240L; public static final Color dark_green = new JMeterColor(0F, .5F, 0F); public static final Color LAVENDER = new JMeterColor(206F / 255F, 207F / 255F, 1F); public static final Color purple = new JMeterColor(150 / 255F, 0, 150 / 255F); public JMeterColor(float r, float g, float b) { super(r, g, b); } public JMeterColor() { super(0, 0, 0); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/util/JLabeledRadioI18N.java0000644000175000017500000001330012032647220026055 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Enumeration; import java.util.LinkedList; import java.util.List; import javax.swing.AbstractButton; import javax.swing.ButtonGroup; import javax.swing.ButtonModel; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledField; /** * JLabeledRadioI18N creates a set of Radio buttons with a label. * This is a version of the original JLabelledRadio class (now removed), but modified * to accept resource names rather than language strings. * */ public class JLabeledRadioI18N extends JPanel implements JLabeledField, ActionListener { private static final long serialVersionUID = 240L; private final JLabel mLabel = new JLabel(); private final ButtonGroup bGroup = new ButtonGroup(); private final ArrayList mChangeListeners = new ArrayList(3); /** * * @param label_resouce text resource name for group label * @param item_resources list of resource names for individual buttons * @param selectedItem button to be selected (if not null) */ public JLabeledRadioI18N(String label_resouce, String[] item_resources, String selectedItem) { setLabel(label_resouce); init(item_resources, selectedItem); } /** * @deprecated - only for use in testing */ @Deprecated public JLabeledRadioI18N() { super(); } /** * Method is responsible for creating the JRadioButtons and adding them to * the ButtonGroup. * * The resource name is used as the action command for the button model, * and the reource value is used to set the button label. * * @param resouces list of resource names * @param selected initially selected resource (if not null) * */ private void init(String[] resouces, String selected) { this.add(mLabel); for (int idx = 0; idx < resouces.length; idx++) { JRadioButton btn = new JRadioButton(JMeterUtils.getResString(resouces[idx])); btn.setActionCommand(resouces[idx]); btn.addActionListener(this); // add the button to the button group this.bGroup.add(btn); // add the button this.add(btn); if (selected != null && selected.equals(resouces[idx])) { btn.setSelected(true); } } } /** * The implementation will get the resource name from the selected radio button * in the JButtonGroup. */ public String getText() { return this.bGroup.getSelection().getActionCommand(); } /** * The implementation will iterate through the radio buttons and find the * match. It then sets it to selected and sets all other radio buttons as * not selected. * @param resourcename name of resource whose button is to be selected */ public void setText(String resourcename) { Enumeration en = this.bGroup.getElements(); while (en.hasMoreElements()) { ButtonModel model = en.nextElement().getModel(); if (model.getActionCommand().equals(resourcename)) { this.bGroup.setSelected(model, true); } else { this.bGroup.setSelected(model, false); } } } /** * Set the group label from the resource name. * * @param label_resource */ public final void setLabel(String label_resource) { this.mLabel.setText(JMeterUtils.getResString(label_resource)); } /** {@inheritDoc} */ public void addChangeListener(ChangeListener pChangeListener) { this.mChangeListeners.add(pChangeListener); } /** * Notify all registered change listeners that the text in the text field * has changed. */ private void notifyChangeListeners() { ChangeEvent ce = new ChangeEvent(this); for (int index = 0; index < mChangeListeners.size(); index++) { mChangeListeners.get(index).stateChanged(ce); } } /** * Method will return all the label and JRadioButtons. ButtonGroup is * excluded from the list. */ public List getComponentList() { List comps = new LinkedList(); comps.add(mLabel); Enumeration en = this.bGroup.getElements(); while (en.hasMoreElements()) { comps.add(en.nextElement()); } return comps; } /** * When a radio button is clicked, an ActionEvent is triggered. */ public void actionPerformed(ActionEvent e) { this.notifyChangeListeners(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/SavePropertyDialog.java0000644000175000017500000001333112032647220025646 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 15, 2004 */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JPanel; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.log.Logger; /** * Generates Configure pop-up dialogue for Listeners from all methods in SampleSaveConfiguration * with the signature "boolean saveXXX()". * There must be a corresponding "void setXXX(boolean)" method, and a property save_XXX which is * used to name the field on the dialogue. * */ public class SavePropertyDialog extends JDialog implements ActionListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; private static final Map functors = new HashMap(); private static final String NAME_SAVE_PFX = "save"; // $NON-NLS-1$ i.e. boolean saveXXX() private static final String NAME_SET_PREFIX = "set"; // $NON-NLS-1$ i.e. void setXXX(boolean) private static final String RESOURCE_PREFIX = "save_"; // $NON-NLS-1$ e.g. save_XXX property private static final int NAME_SAVE_PFX_LEN = NAME_SAVE_PFX.length(); private SampleSaveConfiguration saveConfig; public SavePropertyDialog(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } /** * @param owner * @param title * @param modal * @throws java.awt.HeadlessException */ public SavePropertyDialog(Frame owner, String title, boolean modal, SampleSaveConfiguration s) // throws HeadlessException { super(owner, title, modal); saveConfig = s; log.debug("SampleSaveConfiguration = " + saveConfig);// $NON-NLS-1$ initDialog(); } private int countMethods(Method[] m) { int count = 0; for (int i = 0; i < m.length; i++) { if (m[i].getName().startsWith(NAME_SAVE_PFX)) { count++; } } return count; } private void initDialog() { this.getContentPane().setLayout(new BorderLayout()); Method[] methods = SampleSaveConfiguration.class.getMethods(); int x = (countMethods(methods) / 3) + 1; log.debug("grid panel is " + 3 + " by " + x); JPanel checkPanel = new JPanel(new GridLayout(x, 3)); for (int i = 0; i < methods.length; i++) { String name = methods[i].getName(); if (name.startsWith(NAME_SAVE_PFX) && methods[i].getParameterTypes().length == 0) { try { name = name.substring(NAME_SAVE_PFX_LEN); JCheckBox check = new JCheckBox( JMeterUtils.getResString(RESOURCE_PREFIX + name)// $NON-NLS-1$ ,((Boolean) methods[i].invoke(saveConfig, new Object[0])).booleanValue()); checkPanel.add(check, BorderLayout.NORTH); check.addActionListener(this); String actionCommand = NAME_SET_PREFIX + name; // $NON-NLS-1$ check.setActionCommand(actionCommand); if (!functors.containsKey(actionCommand)) { functors.put(actionCommand, new Functor(actionCommand)); } } catch (IllegalAccessException e) { log.warn("Problem creating save config dialog", e); } catch (InvocationTargetException e) { log.warn("Problem creating save config dialog", e); } } } getContentPane().add(checkPanel, BorderLayout.NORTH); JButton exit = new JButton(JMeterUtils.getResString("done")); // $NON-NLS-1$ this.getContentPane().add(exit, BorderLayout.SOUTH); exit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); } }); } public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); Functor f = functors.get(action); f.invoke(saveConfig, new Object[] { Boolean.valueOf(((JCheckBox) e.getSource()).isSelected()) }); } /** * @return Returns the saveConfig. */ public SampleSaveConfiguration getSaveConfig() { return saveConfig; } /** * @param saveConfig * The saveConfig to set. */ public void setSaveConfig(SampleSaveConfiguration saveConfig) { this.saveConfig = saveConfig; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/Stoppable.java0000644000175000017500000000177312032647220024023 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; /** * Interface that identifies processes to stop on close or load of new project files */ public interface Stoppable { /** * Stop server */ void stopServer(); } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/OnErrorPanel.java0000644000175000017500000000700312032647220024430 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JPanel; import javax.swing.JRadioButton; import org.apache.jmeter.testelement.OnErrorTestElement; import org.apache.jmeter.util.JMeterUtils; public class OnErrorPanel extends JPanel { private static final long serialVersionUID = 240L; // Sampler error action buttons private JRadioButton continueBox; private JRadioButton stopThrdBox; private JRadioButton stopTestBox; private JRadioButton stopTestNowBox; private JPanel createOnErrorPanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("sampler_on_error_action"))); //$NON-NLS-1$ ButtonGroup group = new ButtonGroup(); continueBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_continue")); //$NON-NLS-1$ group.add(continueBox); continueBox.setSelected(true); panel.add(continueBox); stopThrdBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_stop_thread")); //$NON-NLS-1$ group.add(stopThrdBox); panel.add(stopThrdBox); stopTestBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_stop_test")); //$NON-NLS-1$ group.add(stopTestBox); panel.add(stopTestBox); stopTestNowBox = new JRadioButton(JMeterUtils.getResString("sampler_on_error_stop_test_now")); //$NON-NLS-1$ group.add(stopTestNowBox); panel.add(stopTestNowBox); return panel; } /** * Create a new NamePanel with the default name. */ public OnErrorPanel() { init(); } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout(5, 0)); add(createOnErrorPanel()); } public void configure(int errorAction) { stopTestNowBox.setSelected(errorAction == OnErrorTestElement.ON_ERROR_STOPTEST_NOW); stopTestBox.setSelected(errorAction == OnErrorTestElement.ON_ERROR_STOPTEST); stopThrdBox.setSelected(errorAction == OnErrorTestElement.ON_ERROR_STOPTHREAD); continueBox.setSelected(errorAction == OnErrorTestElement.ON_ERROR_CONTINUE); } public int getOnErrorSetting() { if (stopTestNowBox.isSelected()) { return OnErrorTestElement.ON_ERROR_STOPTEST_NOW; } if (stopTestBox.isSelected()) { return OnErrorTestElement.ON_ERROR_STOPTEST; } if (stopThrdBox.isSelected()) { return OnErrorTestElement.ON_ERROR_STOPTHREAD; } // Defaults to continue return OnErrorTestElement.ON_ERROR_CONTINUE; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/Searchable.java0000644000175000017500000000211012032647220024105 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.util.List; /** * Interface for nodes that are searchable */ public interface Searchable { /** * @return List of searchable tokens * @throws Exception */ List getSearchableTokens() throws Exception; } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/JMeterFileFilter.java0000644000175000017500000000730212032647220025220 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.io.File; import java.util.Arrays; /** * A file filter which allows files to be filtered based on a list of allowed * extensions. * * Optionally returns directories. * */ public class JMeterFileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter { /** The list of extensions allowed by this filter. */ private final String[] exts; private final boolean allowDirs; // Should we allow directories? /** * Create a new JMeter file filter which allows the specified extensions. If * the array of extensions contains no elements, any file will be allowed. * * This constructor will also return all directories * * @param extensions * non-null array of allowed file extensions */ public JMeterFileFilter(String[] extensions) { this(extensions,true); } /** * Create a new JMeter file filter which allows the specified extensions. If * the array of extensions contains no elements, any file will be allowed. * * @param extensions non-null array of allowed file extensions * @param allow should directories be returned ? */ public JMeterFileFilter(String[] extensions, boolean allow) { exts = extensions; allowDirs = allow; } /** * Determine if the specified file is allowed by this filter. The file will * be allowed if it is a directory, or if the end of the filename matches * one of the extensions allowed by this filter. The filename is converted * to lower-case before making the comparison. * * @param f * the File being tested * * @return true if the file should be allowed, false otherwise */ @Override public boolean accept(File f) { return (allowDirs && f.isDirectory()) || accept(f.getName().toLowerCase()); // TODO - why lower case? OK to use the default Locale? } /** * Determine if the specified filename is allowed by this filter. The file * will be allowed if the end of the filename matches one of the extensions * allowed by this filter. The comparison is case-sensitive. If no * extensions were provided for this filter, the file will always be * allowed. * * @param filename * the filename to test * @return true if the file should be allowed, false otherwise */ public boolean accept(String filename) { if (exts.length == 0) { return true; } for (int i = 0; i < exts.length; i++) { if (filename.endsWith(exts[i])) { return true; } } return false; } /** * Get a description for this filter. * * @return a description for this filter */ @Override public String getDescription() { return "JMeter " + Arrays.asList(exts).toString(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/tree/0000755000175000017500000000000012165514773022173 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/gui/tree/JMeterTreeNode.java0000644000175000017500000001536212032647217025652 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.tree; import java.awt.Image; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JPopupMenu; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; import org.apache.jmeter.gui.GUIFactory; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JMeterTreeNode extends DefaultMutableTreeNode implements NamedTreeNode { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final int TEST_PLAN_LEVEL = 1; private final JMeterTreeModel treeModel; private boolean markedBySearch; public JMeterTreeNode() {// Allow serializable test to work // TODO: is the serializable test necessary now that JMeterTreeNode is // no longer a GUI component? this(null, null); } public JMeterTreeNode(TestElement userObj, JMeterTreeModel treeModel) { super(userObj); this.treeModel = treeModel; } public boolean isEnabled() { return ((AbstractTestElement) getTestElement()).getPropertyAsBoolean(TestElement.ENABLED); } public void setEnabled(boolean enabled) { getTestElement().setProperty(new BooleanProperty(TestElement.ENABLED, enabled)); treeModel.nodeChanged(this); } /** * Return nodes to level 2 * @return {@link List} */ public List getPathToThreadGroup() { List nodes = new ArrayList(); if(treeModel != null) { TreeNode[] nodesToRoot = treeModel.getPathToRoot(this); for (int i = 0; i < nodesToRoot.length; i++) { JMeterTreeNode jMeterTreeNode = (JMeterTreeNode) nodesToRoot[i]; int level = jMeterTreeNode.getLevel(); if(level testClass = testElement.getClass(); try { Image img = Introspector.getBeanInfo(testClass).getIcon(BeanInfo.ICON_COLOR_16x16); // If icon has not been defined, then use GUI_CLASS property if (img == null) { Object clazz = Introspector.getBeanInfo(testClass).getBeanDescriptor() .getValue(TestElement.GUI_CLASS); if (clazz == null) { log.warn("getIcon(): Can't obtain GUI class from " + testClass.getName()); return null; } return GUIFactory.getIcon(Class.forName((String) clazz), enabled); } return new ImageIcon(img); } catch (IntrospectionException e1) { log.error("Can't obtain icon for class "+testElement, e1); throw new org.apache.jorphan.util.JMeterError(e1); } } return GUIFactory.getIcon(Class.forName(testElement.getPropertyAsString(TestElement.GUI_CLASS)), enabled); } catch (ClassNotFoundException e) { log.warn("Can't get icon for class " + testElement, e); return null; } } public Collection getMenuCategories() { try { return GuiPackage.getInstance().getGui(getTestElement()).getMenuCategories(); } catch (Exception e) { log.error("Can't get popup menu for gui", e); return null; } } public JPopupMenu createPopupMenu() { try { return GuiPackage.getInstance().getGui(getTestElement()).createPopupMenu(); } catch (Exception e) { log.error("Can't get popup menu for gui", e); return null; } } public TestElement getTestElement() { return (TestElement) getUserObject(); } public String getStaticLabel() { return GuiPackage.getInstance().getGui((TestElement) getUserObject()).getStaticLabel(); } public String getDocAnchor() { return GuiPackage.getInstance().getGui((TestElement) getUserObject()).getDocAnchor(); } /** {@inheritDoc} */ public void setName(String name) { ((TestElement) getUserObject()).setName(name); } /** {@inheritDoc} */ public String getName() { return ((TestElement) getUserObject()).getName(); } /** {@inheritDoc} */ public void nameChanged() { if (treeModel != null) { // may be null during startup treeModel.nodeChanged(this); } } // Override in order to provide type safety @Override @SuppressWarnings("unchecked") public Enumeration children() { return super.children(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/tree/JMeterTreeListener.java0000644000175000017500000002611612032647217026551 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.tree; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import org.apache.jmeter.control.gui.TestPlanGui; import org.apache.jmeter.control.gui.WorkBenchGui; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.MainFrame; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JMeterTreeListener implements TreeSelectionListener, MouseListener, KeyListener, MouseMotionListener { private static final Logger log = LoggingManager.getLoggerForClass(); // Container endWindow; // JPopupMenu pop; private TreePath currentPath; private ActionListener actionHandler; private JMeterTreeModel model; private JTree tree; private boolean dragging = false; private JMeterTreeNode[] draggedNodes; private final JLabel dragIcon = new JLabel(JMeterUtils.getImage("leafnode.gif")); // $NON-NLS-1$ /** * Constructor for the JMeterTreeListener object. */ public JMeterTreeListener(JMeterTreeModel model) { this.model = model; dragIcon.validate(); dragIcon.setVisible(true); } public JMeterTreeListener() { dragIcon.validate(); dragIcon.setVisible(true); } public void setModel(JMeterTreeModel m) { model = m; } /** * Sets the ActionHandler attribute of the JMeterTreeListener object. * * @param ah * the new ActionHandler value */ public void setActionHandler(ActionListener ah) { actionHandler = ah; } /** * Sets the JTree attribute of the JMeterTreeListener object. * * @param tree * the new JTree value */ public void setJTree(JTree tree) { this.tree = tree; } /** * Sets the EndWindow attribute of the JMeterTreeListener object. * * @param window * the new EndWindow value */ public void setEndWindow(Container window) { // endWindow = window; } /** * Gets the JTree attribute of the JMeterTreeListener object. * * @return tree the current JTree value. */ public JTree getJTree() { return tree; } /** * Gets the CurrentNode attribute of the JMeterTreeListener object. * * @return the CurrentNode value */ public JMeterTreeNode getCurrentNode() { if (currentPath != null) { if (currentPath.getLastPathComponent() != null) { return (JMeterTreeNode) currentPath.getLastPathComponent(); } return (JMeterTreeNode) currentPath.getParentPath().getLastPathComponent(); } return (JMeterTreeNode) model.getRoot(); } public JMeterTreeNode[] getSelectedNodes() { TreePath[] paths = tree.getSelectionPaths(); if (paths == null) { return new JMeterTreeNode[] { getCurrentNode() }; } JMeterTreeNode[] nodes = new JMeterTreeNode[paths.length]; for (int i = 0; i < paths.length; i++) { nodes[i] = (JMeterTreeNode) paths[i].getLastPathComponent(); } return nodes; } public TreePath removedSelectedNode() { currentPath = currentPath.getParentPath(); return currentPath; } public void valueChanged(TreeSelectionEvent e) { log.debug("value changed, updating currentPath"); currentPath = e.getNewLeadSelectionPath(); actionHandler.actionPerformed(new ActionEvent(this, 3333, "edit")); // $NON-NLS-1$ } public void mouseClicked(MouseEvent ev) { } public void mouseReleased(MouseEvent e) { if (dragging && isValidDragAction(draggedNodes, getCurrentNode())) { dragging = false; JPopupMenu dragNdrop = new JPopupMenu(); JMenuItem item = new JMenuItem(JMeterUtils.getResString("insert_before")); // $NON-NLS-1$ item.addActionListener(actionHandler); item.setActionCommand(ActionNames.INSERT_BEFORE); dragNdrop.add(item); item = new JMenuItem(JMeterUtils.getResString("insert_after")); // $NON-NLS-1$ item.addActionListener(actionHandler); item.setActionCommand(ActionNames.INSERT_AFTER); dragNdrop.add(item); if (MenuFactory.canAddTo(getCurrentNode(), draggedNodes)){ item = new JMenuItem(JMeterUtils.getResString("add_as_child")); // $NON-NLS-1$ item.addActionListener(actionHandler); item.setActionCommand(ActionNames.DRAG_ADD); dragNdrop.add(item); } dragNdrop.addSeparator(); item = new JMenuItem(JMeterUtils.getResString("cancel")); // $NON-NLS-1$ dragNdrop.add(item); displayPopUp(e, dragNdrop); } else { GuiPackage.getInstance().getMainFrame().repaint(); } dragging = false; } public JMeterTreeNode[] getDraggedNodes() { return draggedNodes; } /** * Tests if the node is being dragged into one of it's own sub-nodes, or * into itself. */ private boolean isValidDragAction(JMeterTreeNode[] source, JMeterTreeNode dest) { boolean isValid = true; TreeNode[] path = dest.getPath(); for (int i = 0; i < path.length; i++) { if (contains(source, path[i])) { isValid = false; } } return isValid; } public void mouseEntered(MouseEvent e) { } private void changeSelectionIfDragging(MouseEvent e) { if (dragging) { GuiPackage.getInstance().getMainFrame().drawDraggedComponent(dragIcon, e.getX(), e.getY()); if (tree.getPathForLocation(e.getX(), e.getY()) != null) { currentPath = tree.getPathForLocation(e.getX(), e.getY()); if (!contains(draggedNodes, getCurrentNode())) { tree.setSelectionPath(currentPath); } } } } private boolean contains(Object[] container, Object item) { for (int i = 0; i < container.length; i++) { if (container[i] == item) { return true; } } return false; } public void mousePressed(MouseEvent e) { // Get the Main Frame. MainFrame mainFrame = GuiPackage.getInstance().getMainFrame(); // Close any Main Menu that is open mainFrame.closeMenu(); int selRow = tree.getRowForLocation(e.getX(), e.getY()); if (tree.getPathForLocation(e.getX(), e.getY()) != null) { log.debug("mouse pressed, updating currentPath"); currentPath = tree.getPathForLocation(e.getX(), e.getY()); } if (selRow != -1) { // updateMainMenu(((JMeterGUIComponent) // getCurrentNode().getUserObject()).createPopupMenu()); if (isRightClick(e)) { if (tree.getSelectionCount() < 2) { tree.setSelectionPath(currentPath); } log.debug("About to display pop-up"); displayPopUp(e); } } } public void mouseDragged(MouseEvent e) { if (!dragging) { dragging = true; draggedNodes = getSelectedNodes(); if (draggedNodes[0].getUserObject() instanceof TestPlanGui || draggedNodes[0].getUserObject() instanceof WorkBenchGui) { dragging = false; } } changeSelectionIfDragging(e); } public void mouseMoved(MouseEvent e) { } public void mouseExited(MouseEvent ev) { } public void keyPressed(KeyEvent e) { if (KeyStrokes.matches(e,KeyStrokes.COPY)) { ActionRouter actionRouter = ActionRouter.getInstance(); actionRouter.doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.COPY)); } else if (KeyStrokes.matches(e,KeyStrokes.PASTE)) { ActionRouter actionRouter = ActionRouter.getInstance(); actionRouter.doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.PASTE)); } else if (KeyStrokes.matches(e,KeyStrokes.CUT)) { ActionRouter actionRouter = ActionRouter.getInstance(); actionRouter.doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.CUT)); // If the following lines are included, then pressing the DUPLICATE key results in calling the action twice. // Without the code below, it still works. // Odd, the other keypresses do need to be handled above or they do not work at all... // } else if (KeyStrokes.matches(e,KeyStrokes.DUPLICATE)) { // ActionRouter actionRouter = ActionRouter.getInstance(); // actionRouter.doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.DUPLICATE)); } } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } private boolean isRightClick(MouseEvent e) { return e.isPopupTrigger() || (InputEvent.BUTTON2_MASK & e.getModifiers()) > 0 || (InputEvent.BUTTON3_MASK == e.getModifiers()); } private void displayPopUp(MouseEvent e) { JPopupMenu pop = getCurrentNode().createPopupMenu(); GuiPackage.getInstance().displayPopUp(e, pop); } private void displayPopUp(MouseEvent e, JPopupMenu popup) { // See Bug 46108 - this log message is unnecessary and misleading // log.warn("Shouldn't be here"); if (popup != null) { popup.pack(); popup.show(tree, e.getX(), e.getY()); popup.setVisible(true); popup.requestFocus(); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/tree/NamedTreeNode.java0000644000175000017500000000167212032647217025507 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.tree; public interface NamedTreeNode { void setName(String name); String getName(); void nameChanged(); } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/tree/JMeterTreeModel.java0000644000175000017500000002274612032647217026031 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.tree; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.swing.tree.DefaultTreeModel; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.control.gui.TestPlanGui; import org.apache.jmeter.control.gui.WorkBenchGui; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.ListedHashTree; public class JMeterTreeModel extends DefaultTreeModel { private static final long serialVersionUID = 240L; public JMeterTreeModel(TestElement tp, TestElement wb) { super(new JMeterTreeNode(wb, null)); initTree(tp,wb); } public JMeterTreeModel() { this(new TestPlanGui().createTestElement(),new WorkBenchGui().createTestElement()); // super(new JMeterTreeNode(new WorkBenchGui().createTestElement(), null)); // TestElement tp = new TestPlanGui().createTestElement(); // initTree(tp); } /** * Hack to allow TreeModel to be used in non-GUI and headless mode. * * @deprecated - only for use by JMeter class! * @param o - dummy */ @Deprecated public JMeterTreeModel(Object o) { this(new TestPlan(),new WorkBench()); // super(new JMeterTreeNode(new WorkBench(), null)); // TestElement tp = new TestPlan(); // initTree(tp, new WorkBench()); } /** * Returns a list of tree nodes that hold objects of the given class type. * If none are found, an empty list is returned. */ public List getNodesOfType(Class type) { List nodeList = new LinkedList(); traverseAndFind(type, (JMeterTreeNode) this.getRoot(), nodeList); return nodeList; } /** * Get the node for a given TestElement object. */ public JMeterTreeNode getNodeOf(TestElement userObject) { return traverseAndFind(userObject, (JMeterTreeNode) getRoot()); } /** * Adds the sub tree at the given node. Returns a boolean indicating whether * the added sub tree was a full test plan. */ public HashTree addSubTree(HashTree subTree, JMeterTreeNode current) throws IllegalUserActionException { Iterator iter = subTree.list().iterator(); while (iter.hasNext()) { TestElement item = (TestElement) iter.next(); if (item instanceof TestPlan) { TestPlan tp = (TestPlan) item; current = (JMeterTreeNode) ((JMeterTreeNode) getRoot()).getChildAt(0); final TestPlan userObject = (TestPlan) current.getUserObject(); userObject.addTestElement(item); userObject.setName(item.getName()); userObject.setFunctionalMode(tp.isFunctionalMode()); userObject.setSerialized(tp.isSerialized()); addSubTree(subTree.getTree(item), current); } else if (item instanceof WorkBench) { current = (JMeterTreeNode) ((JMeterTreeNode) getRoot()).getChildAt(1); final TestElement testElement = ((TestElement) current.getUserObject()); testElement.addTestElement(item); testElement.setName(item.getName()); addSubTree(subTree.getTree(item), current); } else { addSubTree(subTree.getTree(item), addComponent(item, current)); } } return getCurrentSubTree(current); } public JMeterTreeNode addComponent(TestElement component, JMeterTreeNode node) throws IllegalUserActionException { if (node.getUserObject() instanceof AbstractConfigGui) { throw new IllegalUserActionException("This node cannot hold sub-elements"); } GuiPackage guiPackage = GuiPackage.getInstance(); if (guiPackage != null) { // The node can be added in non GUI mode at startup guiPackage.updateCurrentNode(); JMeterGUIComponent guicomp = guiPackage.getGui(component); guicomp.configure(component); guicomp.modifyTestElement(component); guiPackage.getCurrentGui(); // put the gui object back // to the way it was. } JMeterTreeNode newNode = new JMeterTreeNode(component, this); // This check the state of the TestElement and if returns false it // disable the loaded node try { if (component.getProperty(TestElement.ENABLED) instanceof NullProperty || component.getPropertyAsBoolean(TestElement.ENABLED)) { newNode.setEnabled(true); } else { newNode.setEnabled(false); } } catch (Exception e) { newNode.setEnabled(true); } this.insertNodeInto(newNode, node, node.getChildCount()); return newNode; } public void removeNodeFromParent(JMeterTreeNode node) { if (!(node.getUserObject() instanceof TestPlan) && !(node.getUserObject() instanceof WorkBench)) { super.removeNodeFromParent(node); } } private void traverseAndFind(Class type, JMeterTreeNode node, List nodeList) { if (type.isInstance(node.getUserObject())) { nodeList.add(node); } Enumeration enumNode = node.children(); while (enumNode.hasMoreElements()) { JMeterTreeNode child = enumNode.nextElement(); traverseAndFind(type, child, nodeList); } } private JMeterTreeNode traverseAndFind(TestElement userObject, JMeterTreeNode node) { if (userObject == node.getUserObject()) { return node; } Enumeration enumNode = node.children(); while (enumNode.hasMoreElements()) { JMeterTreeNode child = enumNode.nextElement(); JMeterTreeNode result = traverseAndFind(userObject, child); if (result != null) { return result; } } return null; } public HashTree getCurrentSubTree(JMeterTreeNode node) { ListedHashTree hashTree = new ListedHashTree(node); Enumeration enumNode = node.children(); while (enumNode.hasMoreElements()) { JMeterTreeNode child = enumNode.nextElement(); hashTree.add(node, getCurrentSubTree(child)); } return hashTree; } public HashTree getTestPlan() { return getCurrentSubTree((JMeterTreeNode) ((JMeterTreeNode) this.getRoot()).getChildAt(0)); } /** * Clear the test plan, and use default node for test plan and workbench. * * N.B. Should only be called by {@link GuiPackage#clearTestPlan()} */ public void clearTestPlan() { TestElement tp = new TestPlanGui().createTestElement(); clearTestPlan(tp); } /** * Clear the test plan, and use specified node for test plan and default node for workbench * * N.B. Should only be called by {@link GuiPackage#clearTestPlan(TestElement)} * * @param testPlan the node to use as the testplan top node */ public void clearTestPlan(TestElement testPlan) { // Remove the workbench and testplan nodes int children = getChildCount(getRoot()); while (children > 0) { JMeterTreeNode child = (JMeterTreeNode)getChild(getRoot(), 0); super.removeNodeFromParent(child); children = getChildCount(getRoot()); } // Init the tree initTree(testPlan,new WorkBenchGui().createTestElement()); // Assumes this is only called from GUI mode } /** * Initialize the model with nodes for testplan and workbench. * * @param tp the element to use as testplan * @param wb the element to use as workbench */ private void initTree(TestElement tp, TestElement wb) { // Insert the test plan node insertNodeInto(new JMeterTreeNode(tp, this), (JMeterTreeNode) getRoot(), 0); // Insert the workbench node insertNodeInto(new JMeterTreeNode(wb, this), (JMeterTreeNode) getRoot(), 1); // Let others know that the tree content has changed. // This should not be necessary, but without it, nodes are not shown when the user // uses the Close menu item nodeStructureChanged((JMeterTreeNode)getRoot()); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/tree/JMeterCellRenderer.java0000644000175000017500000000462312032647217026511 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.tree; import java.awt.Color; import java.awt.Component; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; /** * Class to render the test tree - sets the enabled/disabled versions of the icons */ public class JMeterCellRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = 240L; public JMeterCellRenderer() { } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean p_hasFocus) { JMeterTreeNode node = (JMeterTreeNode) value; super.getTreeCellRendererComponent(tree, node.getName(), sel, expanded, leaf, row, p_hasFocus); boolean enabled = node.isEnabled(); ImageIcon ic = node.getIcon(enabled); if (ic != null) { if (enabled) { setIcon(ic); } else { setDisabledIcon(ic); } } else { if (!enabled)// i.e. no disabled icon found { // Must therefore set the enabled icon so there is at least some // icon ic = node.getIcon(); if (ic != null) { setIcon(ic); } } } this.setEnabled(enabled); if(node.isMarkedBySearch()) { setBorder(BorderFactory.createLineBorder(Color.red)); } else { setBorder(null); } return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/GuiPackage.java0000644000175000017500000006277112032647220024077 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.Component; import java.awt.event.MouseEvent; import java.beans.Introspector; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.swing.JCheckBoxMenuItem; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; import javax.swing.JToolBar; import javax.swing.SwingUtilities; import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.gui.TestBeanGUI; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * GuiPackage is a static class that provides convenient access to information * about the current state of JMeter's GUI. Any GUI class can grab a handle to * GuiPackage by calling the static method {@link #getInstance()} and then use * it to query the GUI about it's state. When actions, for instance, need to * affect the GUI, they typically use GuiPackage to get access to different * parts of the GUI. * */ public final class GuiPackage implements LocaleChangeListener { /** Logging. */ private static final Logger log = LoggingManager.getLoggerForClass(); /** Singleton instance. */ private static GuiPackage guiPack; /** * Flag indicating whether or not parts of the tree have changed since they * were last saved. */ private boolean dirty = false; /** * Map from TestElement to JMeterGUIComponent, mapping the nodes in the tree * to their corresponding GUI components. */ private Map nodesToGui = new HashMap(); /** * Map from Class to JMeterGUIComponent, mapping the Class of a GUI * component to an instance of that component. */ private Map, JMeterGUIComponent> guis = new HashMap, JMeterGUIComponent>(); /** * Map from Class to TestBeanGUI, mapping the Class of a TestBean to an * instance of TestBeanGUI to be used to edit such components. */ private Map, JMeterGUIComponent> testBeanGUIs = new HashMap, JMeterGUIComponent>(); /** The currently selected node in the tree. */ private JMeterTreeNode currentNode = null; private boolean currentNodeUpdated = false; /** The model for JMeter's test tree. */ private final JMeterTreeModel treeModel; /** The listener for JMeter's test tree. */ private final JMeterTreeListener treeListener; /** The main JMeter frame. */ private MainFrame mainFrame; /** The main JMeter toolbar. */ private JToolBar toolbar; /** The menu item toolbar. */ private JCheckBoxMenuItem menuToolBar; /** * The LoggerPanel menu item */ private JCheckBoxMenuItem menuItemLoggerPanel; /** * Logger Panel reference */ private LoggerPanel loggerPanel; /** * Private constructor to permit instantiation only from within this class. * Use {@link #getInstance()} to retrieve a singleton instance. */ private GuiPackage(JMeterTreeModel treeModel, JMeterTreeListener treeListener) { this.treeModel = treeModel; this.treeListener = treeListener; JMeterUtils.addLocaleChangeListener(this); } /** * Retrieve the singleton GuiPackage instance. * * @return the GuiPackage instance (may be null, e.g in non-Gui mode) */ public static GuiPackage getInstance() { return guiPack; } /** * When GuiPackage is requested for the first time, it should be given * handles to JMeter's Tree Listener and TreeModel. * * @param listener * the TreeListener for JMeter's test tree * @param treeModel * the model for JMeter's test tree * * @return GuiPackage */ public static GuiPackage getInstance(JMeterTreeListener listener, JMeterTreeModel treeModel) { if (guiPack == null) { guiPack = new GuiPackage(treeModel, listener); } return guiPack; } /** * Get a JMeterGUIComponent for the specified test element. If the GUI has * already been created, that instance will be returned. Otherwise, if a GUI * component of the same type has been created, and the component is not * marked as an {@link UnsharedComponent}, that shared component will be * returned. Otherwise, a new instance of the component will be created. The * TestElement's GUI_CLASS property will be used to determine the * appropriate type of GUI component to use. * * @param node * the test element which this GUI is being created for * * @return the GUI component corresponding to the specified test element */ public JMeterGUIComponent getGui(TestElement node) { String testClassName = node.getPropertyAsString(TestElement.TEST_CLASS); String guiClassName = node.getPropertyAsString(TestElement.GUI_CLASS); try { Class testClass; if (testClassName.equals("")) { // $NON-NLS-1$ testClass = node.getClass(); } else { testClass = Class.forName(testClassName); } Class guiClass = null; if (!guiClassName.equals("")) { // $NON-NLS-1$ guiClass = Class.forName(guiClassName); } return getGui(node, guiClass, testClass); } catch (ClassNotFoundException e) { log.error("Could not get GUI for " + node, e); return null; } } /** * Get a JMeterGUIComponent for the specified test element. If the GUI has * already been created, that instance will be returned. Otherwise, if a GUI * component of the same type has been created, and the component is not * marked as an {@link UnsharedComponent}, that shared component will be * returned. Otherwise, a new instance of the component will be created. * * @param node * the test element which this GUI is being created for * @param guiClass * the fully qualifed class name of the GUI component which will * be created if it doesn't already exist * @param testClass * the fully qualifed class name of the test elements which have * to be edited by the returned GUI component * * @return the GUI component corresponding to the specified test element */ public JMeterGUIComponent getGui(TestElement node, Class guiClass, Class testClass) { try { JMeterGUIComponent comp = nodesToGui.get(node); if (comp == null) { comp = getGuiFromCache(guiClass, testClass); nodesToGui.put(node, comp); } log.debug("Gui retrieved = " + comp); return comp; } catch (Exception e) { log.error("Problem retrieving gui", e); return null; } } /** * Remove a test element from the tree. This removes the reference to any * associated GUI component. * * @param node * the test element being removed */ public void removeNode(TestElement node) { nodesToGui.remove(node); } /** * Convenience method for grabbing the gui for the current node. * * @return the GUI component associated with the currently selected node */ public JMeterGUIComponent getCurrentGui() { try { updateCurrentNode(); TestElement curNode = treeListener.getCurrentNode().getTestElement(); JMeterGUIComponent comp = getGui(curNode); comp.clearGui(); log.debug("Updating gui to new node"); comp.configure(curNode); currentNodeUpdated = false; return comp; } catch (Exception e) { log.error("Problem retrieving gui", e); return null; } } /** * Find the JMeterTreeNode for a certain TestElement object. * * @param userObject * the test element to search for * @return the tree node associated with the test element */ public JMeterTreeNode getNodeOf(TestElement userObject) { return treeModel.getNodeOf(userObject); } /** * Create a TestElement corresponding to the specified GUI class. * * @param guiClass * the fully qualified class name of the GUI component or a * TestBean class for TestBeanGUIs. * @param testClass * the fully qualified class name of the test elements edited by * this GUI component. * @return the test element corresponding to the specified GUI class. */ public TestElement createTestElement(Class guiClass, Class testClass) { try { JMeterGUIComponent comp = getGuiFromCache(guiClass, testClass); comp.clearGui(); TestElement node = comp.createTestElement(); nodesToGui.put(node, comp); return node; } catch (Exception e) { log.error("Problem retrieving gui", e); return null; } } /** * Create a TestElement for a GUI or TestBean class. *

        * This is a utility method to help actions do with one single String * parameter. * * @param objClass * the fully qualified class name of the GUI component or of the * TestBean subclass for which a TestBeanGUI is wanted. * @return the test element corresponding to the specified GUI class. */ public TestElement createTestElement(String objClass) { JMeterGUIComponent comp; Class c; try { c = Class.forName(objClass); if (TestBean.class.isAssignableFrom(c)) { comp = getGuiFromCache(TestBeanGUI.class, c); } else { comp = getGuiFromCache(c, null); } comp.clearGui(); TestElement node = comp.createTestElement(); nodesToGui.put(node, comp); return node; } catch (NoClassDefFoundError e) { log.error("Problem retrieving gui for " + objClass, e); String msg="Cannot find class: "+e.getMessage(); JOptionPane.showMessageDialog(null, msg, "Missing jar? See log file." , JOptionPane.ERROR_MESSAGE); throw new RuntimeException(e.toString(), e); // Probably a missing jar } catch (ClassNotFoundException e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Programming error: bail out. } catch (InstantiationException e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Programming error: bail out. } catch (IllegalAccessException e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Programming error: bail out. } } /** * Get an instance of the specified JMeterGUIComponent class. If an instance * of the GUI class has previously been created and it is not marked as an * {@link UnsharedComponent}, that shared instance will be returned. * Otherwise, a new instance of the component will be created, and shared * components will be cached for future retrieval. * * @param guiClass * the fully qualified class name of the GUI component. This * class must implement JMeterGUIComponent. * @param testClass * the fully qualified class name of the test elements edited by * this GUI component. This class must implement TestElement. * @return an instance of the specified class * * @throws InstantiationException * if an instance of the object cannot be created * @throws IllegalAccessException * if access rights do not allow the default constructor to be * called * @throws ClassNotFoundException * if the specified GUI class cannot be found */ private JMeterGUIComponent getGuiFromCache(Class guiClass, Class testClass) throws InstantiationException, IllegalAccessException { JMeterGUIComponent comp; if (guiClass == TestBeanGUI.class) { comp = testBeanGUIs.get(testClass); if (comp == null) { comp = new TestBeanGUI(testClass); testBeanGUIs.put(testClass, comp); } } else { comp = guis.get(guiClass); if (comp == null) { comp = (JMeterGUIComponent) guiClass.newInstance(); if (!(comp instanceof UnsharedComponent)) { guis.put(guiClass, comp); } } } return comp; } /** * Update the GUI for the currently selected node. The GUI component is * configured to reflect the settings in the current tree node. * */ public void updateCurrentGui() { updateCurrentNode(); currentNode = treeListener.getCurrentNode(); TestElement element = currentNode.getTestElement(); JMeterGUIComponent comp = getGui(element); comp.configure(element); currentNodeUpdated = false; } /** * This method should be called in order for GuiPackage to change the * current node. This will save any changes made to the earlier node before * choosing the new node. */ public void updateCurrentNode() { try { if (currentNode != null && !currentNodeUpdated) { log.debug("Updating current node " + currentNode.getName()); JMeterGUIComponent comp = getGui(currentNode.getTestElement()); TestElement el = currentNode.getTestElement(); comp.modifyTestElement(el); currentNode.nameChanged(); // Bug 50221 - ensure label is updated } // The current node is now updated currentNodeUpdated = true; currentNode = treeListener.getCurrentNode(); } catch (Exception e) { log.error("Problem retrieving gui", e); } } public JMeterTreeNode getCurrentNode() { return treeListener.getCurrentNode(); } public TestElement getCurrentElement() { return getCurrentNode().getTestElement(); } /** * The dirty property is a flag that indicates whether there are parts of * JMeter's test tree that the user has not saved since last modification. * Various (@link Command actions) set this property when components are * modified/created/saved. * * @param dirty * the new value of the dirty flag */ public void setDirty(boolean dirty) { this.dirty = dirty; } /** * Retrieves the state of the 'dirty' property, a flag that indicates if * there are test tree components that have been modified since they were * last saved. * * @return true if some tree components have been modified since they were * last saved, false otherwise */ public boolean isDirty() { return dirty; } /** * Add a subtree to the currently selected node. * * @param subTree * the subtree to add. * * @return the resulting subtree starting with the currently selected node * * @throws IllegalUserActionException * if a subtree cannot be added to the currently selected node */ public HashTree addSubTree(HashTree subTree) throws IllegalUserActionException { return treeModel.addSubTree(subTree, treeListener.getCurrentNode()); } /** * Get the currently selected subtree. * * @return the subtree of the currently selected node */ public HashTree getCurrentSubTree() { return treeModel.getCurrentSubTree(treeListener.getCurrentNode()); } /** * Get the model for JMeter's test tree. * * @return the JMeter tree model */ /* * TODO consider removing this method, and providing method wrappers instead. * This would allow the Gui package to do any additional clearups if required, * as has been done with clearTestPlan() */ public JMeterTreeModel getTreeModel() { return treeModel; } /** * Get a ValueReplacer for the test tree. * * @return a ValueReplacer configured for the test tree */ public ValueReplacer getReplacer() { return new ValueReplacer((TestPlan) ((JMeterTreeNode) getTreeModel().getTestPlan().getArray()[0]) .getTestElement()); } /** * Set the main JMeter frame. * * @param newMainFrame * the new JMeter main frame */ public void setMainFrame(MainFrame newMainFrame) { mainFrame = newMainFrame; } /** * Get the main JMeter frame. * * @return the main JMeter frame */ public MainFrame getMainFrame() { return mainFrame; } /** * Get the listener for JMeter's test tree. * * @return the JMeter test tree listener */ public JMeterTreeListener getTreeListener() { return treeListener; } /** * Set the main JMeter toolbar. * * @param newToolbar * the new JMeter main toolbar */ public void setMainToolbar(JToolBar newToolbar) { toolbar = newToolbar; } /** * Get the main JMeter toolbar. * * @return the main JMeter toolbar */ public JToolBar getMainToolbar() { return toolbar; } /** * Set the menu item toolbar. * * @param newMenuToolBar * the new menu item toolbar */ public void setMenuItemToolbar(JCheckBoxMenuItem newMenuToolBar) { menuToolBar = newMenuToolBar; } /** * Get the menu item toolbar. * * @return the menu item toolbar */ public JCheckBoxMenuItem getMenuItemToolbar() { return menuToolBar; } /** * Display the specified popup menu with the source component and location * from the specified mouse event. * * @param e * the mouse event causing this popup to be displayed * @param popup * the popup menu to display */ public void displayPopUp(MouseEvent e, JPopupMenu popup) { displayPopUp((Component) e.getSource(), e, popup); } /** * Display the specified popup menu at the location specified by a mouse * event with the specified source component. * * @param invoker * the source component * @param e * the mouse event causing this popup to be displayed * @param popup * the popup menu to display */ public void displayPopUp(Component invoker, MouseEvent e, JPopupMenu popup) { if (popup != null) { log.debug("Showing pop up for " + invoker + " at x,y = " + e.getX() + "," + e.getY()); popup.pack(); popup.show(invoker, e.getX(), e.getY()); popup.setVisible(true); popup.requestFocus(); } } /** * {@inheritDoc} */ public void localeChanged(LocaleChangeEvent event) { // FIrst make sure we save the content of the current GUI (since we // will flush it away): updateCurrentNode(); // Forget about all GUIs we've created so far: we'll need to re-created // them all! guis = new HashMap, JMeterGUIComponent>(); nodesToGui = new HashMap(); testBeanGUIs = new HashMap, JMeterGUIComponent>(); // BeanInfo objects also contain locale-sensitive data -- flush them // away: Introspector.flushCaches(); // Now put the current GUI in place. [This code was copied from the // EditCommand action -- we can't just trigger the action because that // would populate the current node with the contents of the new GUI -- // which is empty.] MainFrame mf = getMainFrame(); // Fetch once if (mf == null) // Probably caused by unit testing on headless system { log.warn("Mainframe is null"); } else { mf.setMainPanel((javax.swing.JComponent) getCurrentGui()); mf.setEditMenu(getTreeListener().getCurrentNode().createPopupMenu()); } } private String testPlanFile; private final List stoppables = Collections.synchronizedList(new ArrayList()); /** * Sets the filepath of the current test plan. It's shown in the main frame * title and used on saving. * * @param f */ public void setTestPlanFile(String f) { testPlanFile = f; getMainFrame().setExtendedFrameTitle(testPlanFile); // Enable file revert action if a file is used getMainFrame().setFileRevertEnabled(f != null); getMainFrame().setProjectFileLoaded(f); try { FileServer.getFileServer().setBasedir(testPlanFile); } catch (IllegalStateException e1) { log.error("Failure setting file server's base dir", e1); } } public String getTestPlanFile() { return testPlanFile; } /** * Clears the test plan and associated objects. * Clears the test plan file name. */ public void clearTestPlan() { getTreeModel().clearTestPlan(); nodesToGui.clear(); setTestPlanFile(null); } /** * Clears the test plan element and associated object * * @param element to clear */ public void clearTestPlan(TestElement element) { getTreeModel().clearTestPlan(element); removeNode(element); } public static void showErrorMessage(final String message, final String title){ showMessage(message,title,JOptionPane.ERROR_MESSAGE); } public static void showInfoMessage(final String message, final String title){ showMessage(message,title,JOptionPane.INFORMATION_MESSAGE); } public static void showWarningMessage(final String message, final String title){ showMessage(message,title,JOptionPane.WARNING_MESSAGE); } public static void showMessage(final String message, final String title, final int type){ if (guiPack == null) { return ; } SwingUtilities.invokeLater(new Runnable() { public void run() { JOptionPane.showMessageDialog(null,message,title,type); } }); } /** * Unregister stoppable * @param stoppable Stoppable */ public void unregister(Stoppable stoppable) { for (Iterator iterator = stoppables .iterator(); iterator.hasNext();) { Stoppable stopable = iterator.next(); if(stopable == stoppable) { iterator.remove(); } } } /** * Register process to stop on reload * @param stoppable */ public void register(Stoppable stoppable) { stoppables.add(stoppable); } /** * * @return List Copy of IStoppable */ public List getStoppables() { ArrayList list = new ArrayList(); list.addAll(stoppables); return list; } /** * Set the menu item LoggerPanel. * @param menuItemLoggerPanel */ public void setMenuItemLoggerPanel(JCheckBoxMenuItem menuItemLoggerPanel) { this.menuItemLoggerPanel = menuItemLoggerPanel; } /** * Get the menu item LoggerPanel. * * @return the menu item LoggerPanel */ public JCheckBoxMenuItem getMenuItemLoggerPanel() { return menuItemLoggerPanel; } /** * @param loggerPanel LoggerPanel */ public void setLoggerPanel(LoggerPanel loggerPanel) { this.loggerPanel = loggerPanel; } /** * @return the loggerPanel */ public LoggerPanel getLoggerPanel() { return loggerPanel; } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/LoggerPanel.java0000644000175000017500000000715612032647220024272 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import java.awt.Insets; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.SwingUtilities; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.LogEvent; import org.apache.log.LogTarget; import org.apache.log.format.PatternFormatter; /** * Panel that shows log events */ public class LoggerPanel extends JPanel implements LogTarget { private static final long serialVersionUID = 6911128494402594429L; private JTextArea textArea; private final PatternFormatter format; // Limit length of log content private static final int LOGGER_PANEL_MAX_LENGTH = JMeterUtils.getPropDefault("jmeter.loggerpanel.maxlength", 80000); // $NON-NLS-1$ /** * Pane for display JMeter log file */ public LoggerPanel() { init(); format = new PatternFormatter(LoggingManager.DEFAULT_PATTERN + "\n"); // $NON-NLS-1$ } private void init() { this.setLayout(new BorderLayout()); // TEXTAREA textArea = new JTextArea(); textArea.setEditable(false); textArea.setLineWrap(false); textArea.setMargin(new Insets(2, 2, 2, 2)); // space between borders and text JScrollPane areaScrollPane = new JScrollPane(textArea); areaScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); areaScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); this.add(areaScrollPane, BorderLayout.CENTER); } /* (non-Javadoc) * @see org.apache.log.LogTarget#processEvent(org.apache.log.LogEvent) */ public void processEvent(final LogEvent logEvent) { if(!GuiPackage.getInstance().getMenuItemLoggerPanel().getModel().isSelected()) { return; } SwingUtilities.invokeLater(new Runnable() { public void run() { synchronized (textArea) { textArea.append(format.format(logEvent)); int currentLength = textArea.getText().length(); // If LOGGER_PANEL_MAX_LENGTH is 0, it means all log events are kept if(LOGGER_PANEL_MAX_LENGTH != 0 && currentLength> LOGGER_PANEL_MAX_LENGTH) { textArea.setText(textArea.getText().substring(Math.max(0, currentLength-LOGGER_PANEL_MAX_LENGTH), currentLength)); } textArea.setCaretPosition(textArea.getText().length()); } } }); } /** * Clear panel content */ public void clear() { this.textArea.setText(""); // $NON-NLS-1$ } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/GUIFactory.java0000644000175000017500000001355512032647220024047 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.util.HashMap; import java.util.Map; import javax.swing.ImageIcon; import javax.swing.JComponent; import org.apache.jmeter.testbeans.gui.TestBeanGUI; /** * Provides a way to register and retrieve GUI classes and icons. * */ public final class GUIFactory { /** A Map from String to JMeterGUIComponent of registered GUI classes. */ private static final Map GUI_MAP = new HashMap(); /** A Map from String to ImageIcon of registered icons. */ private static final Map ICON_MAP = new HashMap(); /** A Map from String to ImageIcon of registered icons. */ private static final Map DISABLED_ICON_MAP = new HashMap(); /** * Prevent instantiation since this is a static utility class. */ private GUIFactory() { } /** * Get an icon which has previously been registered for this class object. * * @param elementClass * the class object which we want to get an icon for * * @return the associated icon, or null if this class or its superclass has * not been registered */ public static ImageIcon getIcon(Class elementClass) { return getIcon(elementClass, true); } /** * Get icon/disabledicon which has previously been registered for this class * object. * * @param elementClass * the class object which we want to get an icon for * @param enabled - * is icon enabled * * @return the associated icon, or null if this class or its superclass has * not been registered */ public static ImageIcon getIcon(Class elementClass, boolean enabled) { String key = elementClass.getName(); ImageIcon icon = (enabled ? ICON_MAP.get(key) : DISABLED_ICON_MAP.get(key)); if (icon != null) { return icon; } if (elementClass.getSuperclass() != null) { return getIcon(elementClass.getSuperclass(), enabled); } return null; } /** * Get a component instance which has previously been registered for this * class object. * * @param elementClass * the class object which we want to get an instance of * * @return an instance of the class, or null if this class or its superclass * has not been registered */ public static JComponent getGUI(Class elementClass) { // TODO: This method doesn't appear to be used. String key = elementClass.getName(); JComponent gui = (JComponent) GUI_MAP.get(key); if (gui != null) { return gui; } if (elementClass.getSuperclass() != null) { return getGUI(elementClass.getSuperclass()); } return null; } /** * Register an icon so that it can later be retrieved via * {@link #getIcon(Class)}. The key should match the fully-qualified class * name for the class used as the parameter when retrieving the icon. * * @param key * the name which can be used to retrieve this icon later * @param icon * the icon to store */ public static void registerIcon(String key, ImageIcon icon) { ICON_MAP.put(key, icon); } /** * Register an icon so that it can later be retrieved via * {@link #getIcon(Class)}. The key should match the fully-qualified class * name for the class used as the parameter when retrieving the icon. * * @param key * the name which can be used to retrieve this icon later * @param icon * the icon to store */ public static void registerDisabledIcon(String key, ImageIcon icon) { DISABLED_ICON_MAP.put(key, icon); } /** * Register a GUI class so that it can later be retrieved via * {@link #getGUI(Class)}. The key should match the fully-qualified class * name for the class used as the parameter when retrieving the GUI. * * @param key * the name which can be used to retrieve this GUI later * @param guiClass * the class object for the GUI component * @param testClass * the class of the objects edited by this GUI * * @throws InstantiationException * if an instance of the GUI class can not be instantiated * @throws IllegalAccessException * if access rights do not permit an instance of the GUI class * to be created */ public static void registerGUI(String key, Class guiClass, Class testClass) throws InstantiationException, IllegalAccessException { // TODO: This method doesn't appear to be used. JMeterGUIComponent gui; if (guiClass == TestBeanGUI.class) { gui = new TestBeanGUI(testClass); } else { gui = (JMeterGUIComponent) guiClass.newInstance(); } GUI_MAP.put(key, gui); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/ServerPanel.java0000644000175000017500000001262412032647220024315 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.util.JMeterUtils; /** * Common server panel implementation for use with HTTP, TCP etc samplers */ public class ServerPanel extends JPanel { private static final long serialVersionUID = -2749091243070619669L; private JTextField domain; private JTextField port; private JTextField connectTimeOut; private JTextField responseTimeOut; /** * create the target server panel. *

          *
        • Server IP
        • *
        • Server Port
        • *
        • Connect Timeout
        • *
        • Response Timeout
        • *
        */ public ServerPanel() { init(); } /** * clear all the fields */ public void clear() { domain.setText(""); port.setText(""); connectTimeOut.setText(""); responseTimeOut.setText(""); } public String getServer(){ return domain.getText(); } public void setServer(String value){ domain.setText(value); } public String getPort(){ return port.getText(); } public void setPort(String value){ port.setText(value); } public String getConnectTimeout(){ return connectTimeOut.getText(); } public void setConnectTimeout(String value){ connectTimeOut.setText(value); } public String getResponseTimeout(){ return responseTimeOut.getText(); } public void setResponseTimeout(String value){ responseTimeOut.setText(value); } private void init() { setLayout(new BorderLayout(5, 0)); // Target server panel JPanel webServerPanel = new HorizontalPanel(); webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("target_server"))); // $NON-NLS-1$ final JPanel domainPanel = getDomainPanel(); final JPanel portPanel = getPortPanel(); webServerPanel.add(domainPanel, BorderLayout.CENTER); webServerPanel.add(portPanel, BorderLayout.EAST); JPanel timeOut = new HorizontalPanel(); timeOut.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("web_server_timeout_title"))); // $NON-NLS-1$ final JPanel connPanel = getConnectTimeOutPanel(); final JPanel reqPanel = getResponseTimeOutPanel(); timeOut.add(connPanel); timeOut.add(reqPanel); JPanel webServerTimeoutPanel = new VerticalPanel(); webServerTimeoutPanel.add(webServerPanel, BorderLayout.CENTER); webServerTimeoutPanel.add(timeOut, BorderLayout.EAST); JPanel bigPanel = new VerticalPanel(); bigPanel.add(webServerTimeoutPanel); add(bigPanel); } private JPanel getDomainPanel() { domain = new JTextField(20); JLabel label = new JLabel(JMeterUtils.getResString("web_server_domain")); // $NON-NLS-1$ label.setLabelFor(domain); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(domain, BorderLayout.CENTER); return panel; } private JPanel getPortPanel() { port = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_port")); // $NON-NLS-1$ label.setLabelFor(port); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(port, BorderLayout.CENTER); return panel; } private JPanel getConnectTimeOutPanel() { connectTimeOut = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_timeout_connect")); // $NON-NLS-1$ label.setLabelFor(connectTimeOut); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(connectTimeOut, BorderLayout.CENTER); return panel; } private JPanel getResponseTimeOutPanel() { responseTimeOut = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_timeout_response")); // $NON-NLS-1$ label.setLabelFor(responseTimeOut); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(responseTimeOut, BorderLayout.CENTER); return panel; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/AbstractJMeterGuiComponent.java0000644000175000017500000003047112032647220027271 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.Component; import java.awt.Container; import java.awt.Font; import java.util.Locale; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.border.Border; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.Printable; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This abstract class takes care of the most basic functions necessary to * create a viable JMeter GUI component. It extends JPanel and implements * JMeterGUIComponent. This abstract class is, in turn, extended by several * other abstract classes that create different classes of GUI components for * JMeter (Visualizers, Timers, Samplers, Modifiers, Controllers, etc). * * @see org.apache.jmeter.gui.JMeterGUIComponent * @see org.apache.jmeter.config.gui.AbstractConfigGui * @see org.apache.jmeter.assertions.gui.AbstractAssertionGui * @see org.apache.jmeter.control.gui.AbstractControllerGui * @see org.apache.jmeter.timers.gui.AbstractTimerGui * @see org.apache.jmeter.visualizers.gui.AbstractVisualizer * @see org.apache.jmeter.samplers.gui.AbstractSamplerGui * */ public abstract class AbstractJMeterGuiComponent extends JPanel implements JMeterGUIComponent, Printable { private static final long serialVersionUID = 240L; /** Logging */ private static final Logger log = LoggingManager.getLoggerForClass(); /** Flag indicating whether or not this component is enabled. */ private boolean enabled = true; /** A GUI panel containing the name of this component. */ protected NamePanel namePanel; // used by AbstractReportGui private final CommentPanel commentPanel; /** * When constructing a new component, this takes care of basic tasks like * setting up the Name Panel and assigning the class's static label as the * name to start. */ public AbstractJMeterGuiComponent() { namePanel = new NamePanel(); commentPanel=new CommentPanel(); initGui(); } /** * Provides a default implementation for setting the name property. It's unlikely * developers will need to override. */ @Override public void setName(String name) { namePanel.setName(name); } /** * Provides a default implementation for setting the comment property. It's unlikely * developers will need to override. */ public void setComment(String comment) { commentPanel.setText(comment); } /** * Provides a default implementation for the enabled property. It's unlikely * developers will need to override. */ @Override public boolean isEnabled() { return enabled; } /** * Provides a default implementation for the enabled property. It's unlikely * developers will need to override. */ @Override public void setEnabled(boolean e) { log.debug("Setting enabled: " + e); enabled = e; } /** * Provides a default implementation for the name property. It's unlikely * developers will need to override. */ @Override public String getName() { if (getNamePanel() != null) { return getNamePanel().getName(); } return ""; // $NON-NLS-1$ } /** * Provides a default implementation for the comment property. It's unlikely * developers will need to override. */ public String getComment() { if (getCommentPanel() != null) { return getCommentPanel().getText(); } return ""; // $NON-NLS-1$ } /** * Provides the Name Panel for extending classes. Extending classes are free * to place it as desired within the component, or not at all. Most * components place the NamePanel automatically by calling * {@link #makeTitlePanel()} instead of directly calling this method. * * @return a NamePanel containing the name of this component */ protected NamePanel getNamePanel() { return namePanel; } private CommentPanel getCommentPanel(){ return commentPanel; } /** * Provides a label containing the title for the component. Subclasses * typically place this label at the top of their GUI. The title is set to * the name returned from the component's * {@link JMeterGUIComponent#getStaticLabel() getStaticLabel()} method. Most * components place this label automatically by calling * {@link #makeTitlePanel()} instead of directly calling this method. * * @return a JLabel which subclasses can add to their GUI */ protected Component createTitleLabel() { JLabel titleLabel = new JLabel(getStaticLabel()); Font curFont = titleLabel.getFont(); titleLabel.setFont(curFont.deriveFont((float) curFont.getSize() + 4)); return titleLabel; } /** * A newly created gui component can be initialized with the contents of a * Test Element object by calling this method. The component is responsible * for querying the Test Element object for the relevant information to * display in its GUI. *

        * AbstractJMeterGuiComponent provides a partial implementation of this * method, setting the name of the component and its enabled status. * Subclasses should override this method, performing their own * configuration as needed, but also calling this super-implementation. * * @param element * the TestElement to configure */ public void configure(TestElement element) { setName(element.getName()); if (element.getProperty(TestElement.ENABLED) instanceof NullProperty) { enabled = true; } else { enabled = element.getPropertyAsBoolean(TestElement.ENABLED); } getCommentPanel().setText(element.getComment()); } /** * Provides a default implementation that resets the name field to the value of * getStaticLabel(), reset comment and sets enabled to true. Your GUI may need more things * cleared, in which case you should override, clear the extra fields, and * still call super.clearGui(). */ public void clearGui() { initGui(); enabled = true; } // helper method - also used by constructor private void initGui() { setName(getStaticLabel()); commentPanel.clearGui(); } /** * This provides a convenience for extenders when they implement the * {@link JMeterGUIComponent#modifyTestElement(TestElement)} method. This * method will set the name, gui class, and test class for the created Test * Element. It should be called by every extending class when * creating/modifying Test Elements, as that will best assure consistent * behavior. * * @param mc * the TestElement being created. */ protected void configureTestElement(TestElement mc) { mc.setName(getName()); mc.setProperty(new StringProperty(TestElement.GUI_CLASS, this.getClass().getName())); mc.setProperty(new StringProperty(TestElement.TEST_CLASS, mc.getClass().getName())); // This stores the state of the TestElement log.debug("setting element to enabled: " + enabled); mc.setProperty(new BooleanProperty(TestElement.ENABLED, enabled)); mc.setComment(getComment()); } /** * Create a standard title section for JMeter components. This includes the * title for the component and the Name Panel allowing the user to change * the name for the component. This method is typically added to the top of * the component at the beginning of the component's init method. * * @return a panel containing the component title and name panel */ protected Container makeTitlePanel() { VerticalPanel titlePanel = new VerticalPanel(); titlePanel.add(createTitleLabel()); VerticalPanel contentPanel = new VerticalPanel(); contentPanel.setBorder(BorderFactory.createEtchedBorder()); contentPanel.add(getNamePanel()); contentPanel.add(getCommentPanel()); titlePanel.add(contentPanel); return titlePanel; } /** * Create a top-level Border which can be added to JMeter components. * Components typically set this as their border in their init method. It * simply provides a nice spacing between the GUI components used and the * edges of the window in which they appear. * * @return a Border for JMeter components */ protected Border makeBorder() { return BorderFactory.createEmptyBorder(10, 10, 5, 10); } /** * Create a scroll panel that sets it's preferred size to it's minimum size. * Explicitly for scroll panes that live inside other scroll panes, or * within containers that stretch components to fill the area they exist in. * Use this for any component you would put in a scroll pane (such as * TextAreas, tables, JLists, etc). It is here for convenience and to avoid * duplicate code. JMeter displays best if you follow this custom. * * @param comp * the component which should be placed inside the scroll pane * @return a JScrollPane containing the specified component */ protected JScrollPane makeScrollPane(Component comp) { JScrollPane pane = new JScrollPane(comp); pane.setPreferredSize(pane.getMinimumSize()); return pane; } /** * Create a scroll panel that sets it's preferred size to it's minimum size. * Explicitly for scroll panes that live inside other scroll panes, or * within containers that stretch components to fill the area they exist in. * Use this for any component you would put in a scroll pane (such as * TextAreas, tables, JLists, etc). It is here for convenience and to avoid * duplicate code. JMeter displays best if you follow this custom. * * @see javax.swing.ScrollPaneConstants * * @param comp * the component which should be placed inside the scroll pane * @param verticalPolicy * the vertical scroll policy * @param horizontalPolicy * the horizontal scroll policy * @return a JScrollPane containing the specified component */ protected JScrollPane makeScrollPane(Component comp, int verticalPolicy, int horizontalPolicy) { JScrollPane pane = new JScrollPane(comp, verticalPolicy, horizontalPolicy); pane.setPreferredSize(pane.getMinimumSize()); return pane; } public String getStaticLabel() { return JMeterUtils.getResString(getLabelResource()); } /** * Compute Anchor value to find reference in documentation for a particular component * @return String anchor */ public String getDocAnchor() { // Ensure we use default bundle String label = JMeterUtils.getResString(getLabelResource(), new Locale("","")); return label.replace(' ', '_'); } /** * Subclasses need to over-ride this method, if they wish to return * something other than the Visualizer itself. * * @return this object */ public JComponent getPrintableComponent() { return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/AbstractScopedJMeterGuiComponent.java0000644000175000017500000001026112032647220030422 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import javax.swing.JPanel; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.AbstractScopedTestElement; import org.apache.jmeter.util.ScopePanel; public abstract class AbstractScopedJMeterGuiComponent extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; private ScopePanel scopePanel; @Override public void clearGui(){ super.clearGui(); if (scopePanel != null) { scopePanel.clearGui(); } } /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

        * This implementation returns menu items appropriate for most assertion * components. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultAssertionMenu(); } /** * Create the scope settings panel. * * @return the scope settings panel */ protected JPanel createScopePanel() { return createScopePanel(false); } /** * Create the scope settings panel. * @param enableVariable set true to enable the variable panel * @return the scope settings panel */ protected JPanel createScopePanel(boolean enableVariable) { scopePanel = new ScopePanel(enableVariable); return scopePanel; } /** * Save the scope settings in the test element. * * @param testElement */ protected void saveScopeSettings(AbstractScopedTestElement testElement) { if (scopePanel.isScopeParent()){ testElement.setScopeParent(); } else if (scopePanel.isScopeChildren()){ testElement.setScopeChildren(); } else if (scopePanel.isScopeAll()) { testElement.setScopeAll(); } else if (scopePanel.isScopeVariable()) { testElement.setScopeVariable(scopePanel.getVariable()); } else { throw new IllegalArgumentException("Unexpected scope panel state"); } } /** * Show the scope settings from the test element. * * @param testElement */ protected void showScopeSettings(AbstractScopedTestElement testElement) { showScopeSettings(testElement, false); } /** * Show the scope settings from the test element with variable scope * * @param testElement * @param enableVariableButton */ protected void showScopeSettings(AbstractScopedTestElement testElement, boolean enableVariableButton) { String scope = testElement.fetchScope(); if (testElement.isScopeParent(scope)) { scopePanel.setScopeParent(enableVariableButton); } else if (testElement.isScopeChildren(scope)){ scopePanel.setScopeChildren(enableVariableButton); } else if (testElement.isScopeAll(scope)){ scopePanel.setScopeAll(enableVariableButton); } else if (testElement.isScopeVariable(scope)){ scopePanel.setScopeVariable(testElement.getVariableName()); } else { throw new IllegalArgumentException("Invalid scope: "+scope); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/UnsharedComponent.java0000644000175000017500000000212512032647220025516 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; /** * Marker interface indicating that an instance of a component cannot be shared. * The GUI instance will be shared among all test elements of a given type if * the GUI component class does not implement this interface. * */ public interface UnsharedComponent { } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/0000755000175000017500000000000012165514773022511 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Save.java0000644000175000017500000001516312032647217024251 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileOutputStream; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Set; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.apache.commons.io.FilenameUtils; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Save the current test plan; implements: * Save * Save TestPlan As * Save (Selection) As */ public class Save implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String JMX_FILE_EXTENSION = ".jmx"; // $NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(ActionNames.SAVE_AS); // Save (Selection) As commands.add(ActionNames.SAVE_ALL_AS); // Save TestPlan As commands.add(ActionNames.SAVE); // Save } /** * Constructor for the Save object. */ public Save() { } /** * Gets the ActionNames attribute of the Save object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) throws IllegalUserActionException { HashTree subTree = null; boolean fullSave = false; // are we saving the whole tree? if (!commands.contains(e.getActionCommand())) { throw new IllegalUserActionException("Invalid user command:" + e.getActionCommand()); } if (e.getActionCommand().equals(ActionNames.SAVE_AS)) { JMeterTreeNode[] nodes = GuiPackage.getInstance().getTreeListener().getSelectedNodes(); if (nodes.length > 1){ JMeterUtils.reportErrorToUser( JMeterUtils.getResString("save_as_error"), // $NON-NLS-1$ JMeterUtils.getResString("save_as")); // $NON-NLS-1$ return; } subTree = GuiPackage.getInstance().getCurrentSubTree(); } else { fullSave = true; subTree = GuiPackage.getInstance().getTreeModel().getTestPlan(); } String updateFile = GuiPackage.getInstance().getTestPlanFile(); if (!ActionNames.SAVE.equals(e.getActionCommand()) || updateFile == null) { JFileChooser chooser = FileDialoger.promptToSaveFile(updateFile == null ? GuiPackage.getInstance().getTreeListener() .getCurrentNode().getName() + JMX_FILE_EXTENSION : updateFile); if (chooser == null) { return; } updateFile = chooser.getSelectedFile().getAbsolutePath(); // Make sure the file ends with proper extension if(FilenameUtils.getExtension(updateFile).equals("")) { updateFile = updateFile + JMX_FILE_EXTENSION; } // Check if the user is trying to save to an existing file File f = new File(updateFile); if(f.exists()) { int response = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("save_overwrite_existing_file"), // $NON-NLS-1$ JMeterUtils.getResString("save?"), // $NON-NLS-1$ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (response == JOptionPane.CLOSED_OPTION || response == JOptionPane.NO_OPTION) { return ; // Do not save, user does not want to overwrite } } if (!e.getActionCommand().equals(ActionNames.SAVE_AS)) { GuiPackage.getInstance().setTestPlanFile(updateFile); } } try { convertSubTree(subTree); } catch (Exception err) { log.warn("Error converting subtree "+err); } FileOutputStream ostream = null; try { ostream = new FileOutputStream(updateFile); SaveService.saveTree(subTree, ostream); if (fullSave) { // Only update the stored copy of the tree for a full save subTree = GuiPackage.getInstance().getTreeModel().getTestPlan(); // refetch, because convertSubTree affects it ActionRouter.getInstance().doActionNow(new ActionEvent(subTree, e.getID(), ActionNames.SUB_TREE_SAVED)); } } catch (Throwable ex) { log.error("Error saving tree:", ex); if (ex instanceof Error){ throw (Error) ex; } if (ex instanceof RuntimeException){ throw (RuntimeException) ex; } throw new IllegalUserActionException("Couldn't save test plan to file: " + updateFile, ex); } finally { JOrphanUtils.closeQuietly(ostream); } GuiPackage.getInstance().updateCurrentGui(); } // package protected to allow access from test code void convertSubTree(HashTree tree) { Iterator iter = new LinkedList(tree.list()).iterator(); while (iter.hasNext()) { JMeterTreeNode item = (JMeterTreeNode) iter.next(); convertSubTree(tree.getTree(item)); TestElement testElement = item.getTestElement(); // requires JMeterTreeNode tree.replace(item, testElement); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/RemoteStart.java0000644000175000017500000001677012032647217025631 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Component; import java.awt.event.ActionEvent; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.jmeter.JMeter; import org.apache.jmeter.engine.ClientJMeterEngine; import org.apache.jmeter.engine.JMeterEngine; import org.apache.jmeter.engine.JMeterEngineException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class RemoteStart extends AbstractAction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String LOCAL_HOST = "127.0.0.1"; // $NON-NLS-1$ private static final String REMOTE_HOSTS = "remote_hosts"; // $NON-NLS-1$ jmeter.properties private static final String REMOTE_HOSTS_SEPARATOR = ","; // $NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(ActionNames.REMOTE_START); commands.add(ActionNames.REMOTE_STOP); commands.add(ActionNames.REMOTE_SHUT); commands.add(ActionNames.REMOTE_START_ALL); commands.add(ActionNames.REMOTE_STOP_ALL); commands.add(ActionNames.REMOTE_SHUT_ALL); commands.add(ActionNames.REMOTE_EXIT); commands.add(ActionNames.REMOTE_EXIT_ALL); } private final Map remoteEngines = new HashMap(); public RemoteStart() { } @Override public void doAction(ActionEvent e) { String name = ((Component) e.getSource()).getName(); if (name != null) { name = name.trim(); } String action = e.getActionCommand(); if (action.equals(ActionNames.REMOTE_STOP)) { doRemoteStop(name, true); } else if (action.equals(ActionNames.REMOTE_SHUT)) { doRemoteStop(name, false); } else if (action.equals(ActionNames.REMOTE_START)) { popupShouldSave(e); doRemoteInit(name); doRemoteStart(name); } else if (action.equals(ActionNames.REMOTE_START_ALL)) { popupShouldSave(e); String remote_hosts_string = JMeterUtils.getPropDefault(REMOTE_HOSTS, LOCAL_HOST); java.util.StringTokenizer st = new java.util.StringTokenizer(remote_hosts_string, REMOTE_HOSTS_SEPARATOR); while (st.hasMoreElements()) { String el = (String) st.nextElement(); doRemoteInit(el.trim()); } st = new java.util.StringTokenizer(remote_hosts_string, REMOTE_HOSTS_SEPARATOR); while (st.hasMoreElements()) { String el = (String) st.nextElement(); doRemoteStart(el.trim()); } } else if (action.equals(ActionNames.REMOTE_STOP_ALL)) { doRemoteStopAll(true); } else if (action.equals(ActionNames.REMOTE_SHUT_ALL)) { doRemoteStopAll(false); } else if (action.equals(ActionNames.REMOTE_EXIT)) { doRemoteExit(name); } else if (action.equals(ActionNames.REMOTE_EXIT_ALL)) { String remote_hosts_string = JMeterUtils.getPropDefault(REMOTE_HOSTS, LOCAL_HOST); java.util.StringTokenizer st = new java.util.StringTokenizer(remote_hosts_string, REMOTE_HOSTS_SEPARATOR); while (st.hasMoreElements()) { String el = (String) st.nextElement(); doRemoteExit(el.trim()); } } } private void doRemoteStopAll(boolean now) { String remote_hosts_string = JMeterUtils.getPropDefault(REMOTE_HOSTS, LOCAL_HOST); java.util.StringTokenizer st = new java.util.StringTokenizer(remote_hosts_string, REMOTE_HOSTS_SEPARATOR); while (st.hasMoreElements()) { String el = (String) st.nextElement(); doRemoteStop(el.trim(), now); } } /** * Stops a remote testing engine * * @param name * the DNS name or IP address of the remote testing engine * */ private void doRemoteStop(String name, boolean now) { GuiPackage.getInstance().getMainFrame().showStoppingMessage(name); JMeterEngine engine = remoteEngines.get(name); engine.stopTest(now); } /** * Exits a remote testing engine * * @param name * the DNS name or IP address of the remote testing engine * */ private void doRemoteExit(String name) { JMeterEngine engine = remoteEngines.get(name); if (engine == null) { return; } // GuiPackage.getInstance().getMainFrame().showStoppingMessage(name); engine.exit(); } /** * Starts a remote testing engine * * @param name * the DNS name or IP address of the remote testing engine * */ private void doRemoteStart(String name) { JMeterEngine engine = remoteEngines.get(name); if (engine != null) { try { engine.runTest(); } catch (IllegalStateException e) { JMeterUtils.reportErrorToUser(e.getMessage(),JMeterUtils.getResString("remote_error_starting")); // $NON-NLS-1$ } catch (JMeterEngineException e) { JMeterUtils.reportErrorToUser(e.getMessage(),JMeterUtils.getResString("remote_error_starting")); // $NON-NLS-1$ } } } /** * Initializes remote engines */ private void doRemoteInit(String name) { JMeterEngine engine = remoteEngines.get(name); if (engine == null) { try { log.info("Initialising remote engine: "+name); engine = new ClientJMeterEngine(name); remoteEngines.put(name, engine); } catch (Exception ex) { log.error("Failed to initialise remote engine", ex); JMeterUtils.reportErrorToUser(ex.getMessage(), JMeterUtils.getResString("remote_error_init") + ": " + name); // $NON-NLS-1$ $NON-NLS-2$ return; } } else { engine.reset(); } initEngine(engine); } @Override public Set getActionNames() { return commands; } /** * Initializes test on engine. * * @param engine * remote engine object */ private void initEngine(JMeterEngine engine) { GuiPackage gui = GuiPackage.getInstance(); HashTree testTree = gui.getTreeModel().getTestPlan(); JMeter.convertSubTree(testTree); testTree.add(testTree.getArray()[0], gui.getMainFrame()); engine.configure(testTree); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ExitCommand.java0000644000175000017500000000512412032647217025557 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; public class ExitCommand implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.EXIT); } /** * Constructor for the ExitCommand object */ public ExitCommand() { } /** * Gets the ActionNames attribute of the ExitCommand object * * @return The ActionNames value */ public Set getActionNames() { return commands; } /** * Description of the Method * * @param e * Description of Parameter */ public void doAction(ActionEvent e) { ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_DIRTY)); if (GuiPackage.getInstance().isDirty()) { int chosenOption = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils .getResString("cancel_exit_to_save"), // $NON-NLS-1$ JMeterUtils.getResString("save?"), // $NON-NLS-1$ JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (chosenOption == JOptionPane.NO_OPTION) { System.exit(0); } else if (chosenOption == JOptionPane.YES_OPTION) { ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.SAVE)); if (!GuiPackage.getInstance().isDirty()) { System.exit(0); } } } else { System.exit(0); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Analyze.java0000644000175000017500000000355412032647217024757 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.HashSet; import java.util.Set; import javax.swing.JFileChooser; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.reporters.FileReporter; import org.apache.jmeter.util.JMeterUtils; public class Analyze implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.ANALYZE_FILE); } public Analyze() { } public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { FileReporter analyzer = new FileReporter(); final JFileChooser chooser = FileDialoger.promptToOpenFile(new String[] { ".jtl" }); //$NON-NLS-1$ if (chooser != null) { try { analyzer.init(chooser.getSelectedFile().getPath()); } catch (IOException err) { JMeterUtils.reportErrorToUser("The file you selected could not be analyzed"); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Command.java0000644000175000017500000000211112032647217024716 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.Set; import org.apache.jmeter.exceptions.IllegalUserActionException; public interface Command { void doAction(ActionEvent e) throws IllegalUserActionException; Set getActionNames(); }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Start.java0000644000175000017500000001131412032647217024442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.JMeter; import org.apache.jmeter.engine.JMeterEngineException; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.engine.TreeCloner; import org.apache.jmeter.engine.TreeClonerNoTimer; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.timers.Timer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class Start extends AbstractAction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.ACTION_START); commands.add(ActionNames.ACTION_START_NO_TIMERS); commands.add(ActionNames.ACTION_STOP); commands.add(ActionNames.ACTION_SHUTDOWN); } private StandardJMeterEngine engine; /** * Constructor for the Start object. */ public Start() { } /** * Gets the ActionNames attribute of the Start object. * * @return the ActionNames value */ @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent e) { if (e.getActionCommand().equals(ActionNames.ACTION_START)) { popupShouldSave(e); startEngine(false); } else if (e.getActionCommand().equals(ActionNames.ACTION_START_NO_TIMERS)) { popupShouldSave(e); startEngine(true); } else if (e.getActionCommand().equals(ActionNames.ACTION_STOP)) { if (engine != null) { log.info("Stopping test"); GuiPackage.getInstance().getMainFrame().showStoppingMessage(""); engine.stopTest(); } } else if (e.getActionCommand().equals(ActionNames.ACTION_SHUTDOWN)) { if (engine != null) { log.info("Shutting test down"); GuiPackage.getInstance().getMainFrame().showStoppingMessage(""); engine.askThreadsToStop(); } } } /** * Start JMeter engine * @param noTimer ignore timers */ private void startEngine(boolean ignoreTimer) { GuiPackage gui = GuiPackage.getInstance(); HashTree testTree = gui.getTreeModel().getTestPlan(); JMeter.convertSubTree(testTree); testTree.add(testTree.getArray()[0], gui.getMainFrame()); log.debug("test plan before cloning is running version: " + ((TestPlan) testTree.getArray()[0]).isRunningVersion()); TreeCloner cloner = cloneTree(testTree, ignoreTimer); engine = new StandardJMeterEngine(); engine.configure(cloner.getClonedTree()); try { engine.runTest(); } catch (JMeterEngineException e) { JOptionPane.showMessageDialog(gui.getMainFrame(), e.getMessage(), JMeterUtils .getResString("Error Occurred"), JOptionPane.ERROR_MESSAGE); } log.debug("test plan after cloning and running test is running version: " + ((TestPlan) testTree.getArray()[0]).isRunningVersion()); } /** * Create a Cloner that ignores {@link Timer} if removeTimers is true * @param testTree {@link HashTree} * @param removeTimers boolean remove timers * @return {@link TreeCloner} */ private TreeCloner cloneTree(HashTree testTree, boolean removeTimers) { TreeCloner cloner = null; if(removeTimers) { cloner = new TreeClonerNoTimer(false); } else { cloner = new TreeCloner(false); } testTree.traverse(cloner); return cloner; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/RawTextSearcher.java0000644000175000017500000000440312032647217026421 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.util.List; import org.apache.commons.lang3.StringUtils; /** * Searcher implementation that searches text as is */ public class RawTextSearcher implements Searcher { private boolean caseSensitive; private String textToSearch; /** * Constructor * @param caseSensitive is search case sensitive * @param textToSearch Text to search */ public RawTextSearcher(boolean caseSensitive, String textToSearch) { super(); this.caseSensitive = caseSensitive; if(caseSensitive) { this.textToSearch = textToSearch; } else { this.textToSearch = textToSearch.toLowerCase(); } } /** * {@inheritDoc} */ public boolean search(List textTokens) { boolean result = false; for (String searchableToken : textTokens) { if(!StringUtils.isEmpty(searchableToken)) { if(caseSensitive) { result = searchableToken.indexOf(textToSearch)>=0; } else { result = searchableToken.toLowerCase().indexOf(textToSearch)>=0; } if (result) { return result; } } } return false; } /** * Returns true if searchedTextLowerCase is in value * @param value * @param searchedTextLowerCase * @return true if searchedTextLowerCase is in value */ protected boolean testField(String value, String searchedTextLowerCase) { if(!StringUtils.isEmpty(value)) { return value.toLowerCase().indexOf(searchedTextLowerCase)>=0; } return false; } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/SaveGraphics.java0000644000175000017500000001210212032647217025720 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.File; import java.util.HashSet; import java.util.Set; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.save.SaveGraphicsService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.Printable; /** * SaveGraphics action is meant to be a generic reusable Action. The class will * use GUIPackage to get the current gui. Once it does, it checks to see if the * element implements Printable interface. If it does, it call getPrintable() to * get the JComponent. By default, it will use SaveGraphicsService to save a PNG * file if no extension is provided. If either .png or .tif is in the filename, * it will call SaveGraphicsService to save in the format. */ public class SaveGraphics implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.SAVE_GRAPHICS); commands.add(ActionNames.SAVE_GRAPHICS_ALL); } private static final String[] extensions = { SaveGraphicsService.TIFF_EXTENSION, SaveGraphicsService.PNG_EXTENSION }; /** * Constructor for the Save object. */ public SaveGraphics() { } /** * Gets the ActionNames attribute of the Save object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) throws IllegalUserActionException { if (!commands.contains(e.getActionCommand())) { throw new IllegalUserActionException("Invalid user command:" + e.getActionCommand()); } if (e.getActionCommand().equals(ActionNames.SAVE_GRAPHICS)) { JMeterGUIComponent component = GuiPackage.getInstance().getCurrentGui(); // get the JComponent from the visualizer if (component instanceof Printable) { JComponent comp = ((Printable) component).getPrintableComponent(); saveImage(comp); } } if (e.getActionCommand().equals(ActionNames.SAVE_GRAPHICS_ALL)) { JMeterGUIComponent component = GuiPackage.getInstance().getCurrentGui(); JComponent comp=((JComponent) component).getRootPane(); saveImage(comp); } } private void saveImage(JComponent comp){ String filename; JFileChooser chooser = FileDialoger.promptToSaveFile(GuiPackage.getInstance().getTreeListener() .getCurrentNode().getName(), extensions); if (chooser == null) { return; } // Get the string given from the choose and check // the file extension. filename = chooser.getSelectedFile().getAbsolutePath(); if (filename != null) { File f = new File(filename); if(f.exists()) { int response = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("save_overwrite_existing_file"), // $NON-NLS-1$ JMeterUtils.getResString("save?"), // $NON-NLS-1$ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (response == JOptionPane.CLOSED_OPTION || response == JOptionPane.NO_OPTION) { return ; // Do not save, user does not want to overwrite } } SaveGraphicsService save = new SaveGraphicsService(); String ext = filename.substring(filename.length() - 4); String name = filename.substring(0, filename.length() - 4); if (ext.equals(SaveGraphicsService.PNG_EXTENSION)) { save.saveJComponent(name, SaveGraphicsService.PNG, comp); } else if (ext.equals(SaveGraphicsService.TIFF_EXTENSION)) { save.saveJComponent(name, SaveGraphicsService.TIFF, comp); } else { save.saveJComponent(filename, SaveGraphicsService.PNG, comp); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/CheckDirty.java0000644000175000017500000001310712032647217025400 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Check if the TestPlan has been changed since it was last saved * */ public class CheckDirty extends AbstractAction implements HashTreeTraverser, ActionListener { private static final Logger log = LoggingManager.getLoggerForClass(); private final Map previousGuiItems; private boolean checkMode = false; private boolean removeMode = false; private boolean dirty = false; private static final Set commands = new HashSet(); static { commands.add(ActionNames.CHECK_DIRTY); commands.add(ActionNames.SUB_TREE_SAVED); commands.add(ActionNames.SUB_TREE_MERGED); commands.add(ActionNames.SUB_TREE_LOADED); commands.add(ActionNames.ADD_ALL); commands.add(ActionNames.CHECK_REMOVE); } public CheckDirty() { previousGuiItems = new HashMap(); ActionRouter.getInstance().addPreActionListener(ExitCommand.class, this); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(ActionNames.EXIT)) { doAction(e); } } /** * @see Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(ActionNames.SUB_TREE_SAVED)) { HashTree subTree = (HashTree) e.getSource(); subTree.traverse(this); } else if (action.equals(ActionNames.SUB_TREE_LOADED)) { ListedHashTree addTree = (ListedHashTree) e.getSource(); addTree.traverse(this); } else if (action.equals(ActionNames.ADD_ALL)) { previousGuiItems.clear(); GuiPackage.getInstance().getTreeModel().getTestPlan().traverse(this); } else if (action.equals(ActionNames.CHECK_REMOVE)) { GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes(); removeMode = true; for (int i = nodes.length - 1; i >= 0; i--) { guiPackage.getTreeModel().getCurrentSubTree(nodes[i]).traverse(this); } removeMode = false; } // If we are merging in another test plan, we know the test plan is dirty now if(action.equals(ActionNames.SUB_TREE_MERGED)) { dirty = true; } else { dirty = false; checkMode = true; HashTree wholeTree = GuiPackage.getInstance().getTreeModel().getTestPlan(); wholeTree.traverse(this); checkMode = false; } GuiPackage.getInstance().setDirty(dirty); } /** * The tree traverses itself depth-first, calling processNode for each * object it encounters as it goes. */ public void addNode(Object node, HashTree subTree) { log.debug("Node is class:" + node.getClass()); JMeterTreeNode treeNode = (JMeterTreeNode) node; if (checkMode) { // Only check if we have not found any differences so far if(!dirty) { if (previousGuiItems.containsKey(treeNode)) { if (!previousGuiItems.get(treeNode).equals(treeNode.getTestElement())) { dirty = true; } } else { dirty = true; } } } else if (removeMode) { previousGuiItems.remove(treeNode); } else { previousGuiItems.put(treeNode, (TestElement) treeNode.getTestElement().clone()); } } /** * Indicates traversal has moved up a step, and the visitor should remove * the top node from it's stack structure. */ public void subtractNode() { } /** * Process path is called when a leaf is reached. If a visitor wishes to * generate Lists of path elements to each leaf, it should keep a Stack data * structure of nodes passed to it with addNode, and removing top items for * every subtractNode() call. */ public void processPath() { } /** * @see Command#getActionNames() */ @Override public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/RevertProject.java0000644000175000017500000000515412032647217026150 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.File; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; /** * Handles the Revert Project command. * */ public class RevertProject implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.REVERT_PROJECT); } public RevertProject() { super(); } public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { // Get the file name of the current project String projectFile = GuiPackage.getInstance().getTestPlanFile(); // Check if the user has loaded any file if(projectFile == null) { return; } // Check if the user wants to drop any changes ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_DIRTY)); GuiPackage guiPackage = GuiPackage.getInstance(); if (guiPackage.isDirty()) { // Check if the user wants to revert int response = JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("cancel_revert_project"), // $NON-NLS-1$ JMeterUtils.getResString("revert_project?"), // $NON-NLS-1$ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(response == JOptionPane.YES_OPTION) { // Close the current project Close.closeProject(e); // Reload the project Load.loadProjectFile(e, new File(projectFile), false); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/EditCommand.java0000644000175000017500000000433312032647217025534 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.NamePanel; /** * Implements the Edit menu item. */ public class EditCommand implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.EDIT); } public EditCommand() { } public void doAction(ActionEvent e) { GuiPackage guiPackage = GuiPackage.getInstance(); JMeterGUIComponent currentGui = guiPackage.getCurrentGui(); guiPackage.getMainFrame().setMainPanel((javax.swing.JComponent) currentGui); guiPackage.getMainFrame().setEditMenu(guiPackage.getTreeListener().getCurrentNode().createPopupMenu()); // TODO: I believe the following code (to the end of the method) is // obsolete, // since NamePanel no longer seems to be the GUI for any component: if (!(currentGui instanceof NamePanel)) { guiPackage.getMainFrame().setFileLoadEnabled(true); guiPackage.getMainFrame().setFileSaveEnabled(true); } else { guiPackage.getMainFrame().setFileLoadEnabled(false); guiPackage.getMainFrame().setFileSaveEnabled(false); } } public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/SearchTreeDialog.java0000644000175000017500000001740712032647217026523 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRootPane; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.Searchable; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * */ public class SearchTreeDialog extends JDialog implements ActionListener { /** * */ private static final long serialVersionUID = -4436834972710248247L; private static final Logger logger = LoggingManager.getLoggerForClass(); private JButton searchButton; private JLabeledTextField searchTF; private JCheckBox isRegexpCB; private JCheckBox isCaseSensitiveCB; private JButton cancelButton; /** * Store last search */ private transient String lastSearch = null; public SearchTreeDialog() { super((JFrame) null, JMeterUtils.getResString("search_tree_title"), true); //$NON-NLS-1$ init(); } @Override protected JRootPane createRootPane() { JRootPane rootPane = new JRootPane(); // Hide Window on ESC Action escapeAction = new AbstractAction("ESCAPE") { /** * */ private static final long serialVersionUID = -6543764044868772971L; public void actionPerformed(ActionEvent actionEvent) { setVisible(false); } }; // Do search on Enter Action enterAction = new AbstractAction("ENTER") { /** * */ private static final long serialVersionUID = -3661361497864527363L; public void actionPerformed(ActionEvent actionEvent) { doSearch(actionEvent); } }; ActionMap actionMap = rootPane.getActionMap(); actionMap.put(escapeAction.getValue(Action.NAME), escapeAction); actionMap.put(enterAction.getValue(Action.NAME), enterAction); InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(KeyStrokes.ESC, escapeAction.getValue(Action.NAME)); inputMap.put(KeyStrokes.ENTER, enterAction.getValue(Action.NAME)); return rootPane; } private void init() { this.getContentPane().setLayout(new BorderLayout(10,10)); searchTF = new JLabeledTextField(JMeterUtils.getResString("search_text_field"), 20); //$NON-NLS-1$ if(!StringUtils.isEmpty(lastSearch)) { searchTF.setText(lastSearch); } isRegexpCB = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_regexp"), false); //$NON-NLS-1$ isCaseSensitiveCB = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_case"), false); //$NON-NLS-1$ Font font = new Font("SansSerif", Font.PLAIN, 10); // reduce font isRegexpCB.setFont(font); isCaseSensitiveCB.setFont(font); JPanel searchCriterionPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); searchCriterionPanel.add(isCaseSensitiveCB); searchCriterionPanel.add(isRegexpCB); JPanel searchPanel = new JPanel(); searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.Y_AXIS)); searchPanel.setBorder(BorderFactory.createEmptyBorder(7, 3, 3, 3)); searchPanel.add(searchTF, BorderLayout.NORTH); searchPanel.add(searchCriterionPanel, BorderLayout.CENTER); JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); searchButton = new JButton(JMeterUtils.getResString("search")); //$NON-NLS-1$ searchButton.addActionListener(this); cancelButton = new JButton(JMeterUtils.getResString("cancel")); //$NON-NLS-1$ cancelButton.addActionListener(this); buttonsPanel.add(searchButton); buttonsPanel.add(cancelButton); searchPanel.add(buttonsPanel, BorderLayout.SOUTH); this.getContentPane().add(searchPanel); searchTF.requestFocusInWindow(); this.pack(); ComponentUtil.centerComponentInWindow(this); } /** * Do search * @param e {@link ActionEvent} */ public void actionPerformed(ActionEvent e) { if(e.getSource()==cancelButton) { this.setVisible(false); return; } doSearch(e); } /** * @param e {@link ActionEvent} */ private void doSearch(ActionEvent e) { String wordToSearch = searchTF.getText(); if(StringUtils.isEmpty(wordToSearch)) { return; } else { this.lastSearch = wordToSearch; } // reset previous result ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.SEARCH_RESET)); // do search Searcher searcher = null; if(isRegexpCB.isSelected()) { searcher = new RegexpSearcher(isCaseSensitiveCB.isSelected(), searchTF.getText()); } else { searcher = new RawTextSearcher(isCaseSensitiveCB.isSelected(), searchTF.getText()); } GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeModel jMeterTreeModel = guiPackage.getTreeModel(); Set nodes = new HashSet(); for (JMeterTreeNode jMeterTreeNode : jMeterTreeModel.getNodesOfType(Searchable.class)) { try { if (jMeterTreeNode.getUserObject() instanceof Searchable){ Searchable searchable = (Searchable) jMeterTreeNode.getUserObject(); List matchingNodes = jMeterTreeNode.getPathToThreadGroup(); List searchableTokens = searchable.getSearchableTokens(); boolean result = searcher.search(searchableTokens); if(result) { nodes.addAll(matchingNodes); } } } catch (Exception ex) { logger.error("Error occured searching for word:"+ wordToSearch, ex); } } for (Iterator iterator = nodes.iterator(); iterator.hasNext();) { JMeterTreeNode jMeterTreeNode = iterator.next(); jMeterTreeNode.setMarkedBySearch(true); } GuiPackage.getInstance().getMainFrame().repaint(); this.setVisible(false); } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/LoadDraggedFile.java0000644000175000017500000000245212032647217026305 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.File; /** * Handles the loading of a file from a Drag and Drop action. */ public class LoadDraggedFile { /** * Loads dragged file asking before for save if current open file is dirty. * @param e {@link ActionEvent} * @param file File to Load */ public static void loadProject(ActionEvent e, File file) { if(!Close.performAction(e)) { return; } Load.loadProjectFile(e, file, false); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/LoadRecentProject.java0000644000175000017500000002165212032647217026722 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.File; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import java.util.prefs.Preferences; import javax.swing.JComponent; import javax.swing.JMenuItem; import javax.swing.JSeparator; /** * Handles the loading of recent files, and also the content and * visibility of menu items for loading the recent files */ public class LoadRecentProject extends Load { /** Prefix for the user preference key */ private static final String USER_PREFS_KEY = "recent_file_"; //$NON-NLS-1$ /** The number of menu items used for recent files */ private static final int NUMBER_OF_MENU_ITEMS = 9; private static final Set commands = new HashSet(); static { commands.add(ActionNames.OPEN_RECENT); } private static final Preferences prefs = Preferences.userNodeForPackage(LoadRecentProject.class); // Note: Windows user preferences are stored relative to: HKEY_CURRENT_USER\Software\JavaSoft\Prefs public LoadRecentProject() { super(); } @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent e) { // We must ask the user if it is ok to close current project if (!Close.performAction(e)) { return; } // Load the file for this recent file command loadProjectFile(e, getRecentFile(e), false); } /** * Get the recent file for the menu item */ private File getRecentFile(ActionEvent e) { JMenuItem menuItem = (JMenuItem)e.getSource(); // Get the preference for the recent files return new File(getRecentFile(Integer.parseInt(menuItem.getName()))); } /** * Get the menu items to add to the menu bar, to get recent file functionality * * @return a List of JMenuItem and a JSeparator, representing recent files */ public static List getRecentFileMenuItems() { LinkedList menuItems = new LinkedList(); // Get the preference for the recent files for(int i = 0; i < NUMBER_OF_MENU_ITEMS; i++) { // Create the menu item JMenuItem recentFile = new JMenuItem(); // Use the index as the name, used when processing the action recentFile.setName(Integer.toString(i)); recentFile.addActionListener(ActionRouter.getInstance()); recentFile.setActionCommand(ActionNames.OPEN_RECENT); // Set the KeyStroke to use int shortKey = getShortcutKey(i); if(shortKey >= 0) { recentFile.setMnemonic(shortKey); } // Add the menu item menuItems.add(recentFile); } // Add separator as the last item JSeparator separator = new JSeparator(); separator.setVisible(false); menuItems.add(separator); // Update menu items to reflect recent files updateMenuItems(menuItems); return menuItems; } /** * Update the content and visibility of the menu items for recent files * * @param menuItems the JMenuItem and JSeparator to update * @param loadedFileName the file name of the project file that has just * been loaded */ public static void updateRecentFileMenuItems(List menuItems, String loadedFileName) { // Get the preference for the recent files LinkedList newRecentFiles = new LinkedList(); // Check if the new file is already in the recent list boolean alreadyExists = false; for(int i = 0; i < NUMBER_OF_MENU_ITEMS; i++) { String recentFilePath = getRecentFile(i); if(!loadedFileName.equals(recentFilePath)) { newRecentFiles.add(recentFilePath); } else { alreadyExists = true; } } // Add the new file at the start of the list newRecentFiles.add(0, loadedFileName); // Remove the last item from the list if it was a brand new file if(!alreadyExists) { newRecentFiles.removeLast(); } // Store the recent files for(int i = 0; i < NUMBER_OF_MENU_ITEMS; i++) { String fileName = newRecentFiles.get(i); if(fileName != null) { setRecentFile(i, fileName); } } // Update menu items to reflect recent files updateMenuItems(menuItems); } /** * Set the content and visibility of menu items and menu separator, * based on the recent file stored user preferences. */ private static void updateMenuItems(List menuItems) { // Assume no recent files boolean someRecentFiles = false; // Update the menu items for(int i = 0; i < NUMBER_OF_MENU_ITEMS; i++) { // Get the menu item JMenuItem recentFile = (JMenuItem)menuItems.get(i); // Find and set the file for this recent file command String recentFilePath = getRecentFile(i); if(recentFilePath != null) { File file = new File(recentFilePath); StringBuilder sb = new StringBuilder(60); if (i<9) { sb.append(i+1).append(" "); //$NON-NLS-1$ } sb.append(getMenuItemDisplayName(file)); recentFile.setText(sb.toString()); recentFile.setToolTipText(recentFilePath); recentFile.setEnabled(true); recentFile.setVisible(true); // At least one recent file menu item is visible someRecentFiles = true; } else { recentFile.setEnabled(false); recentFile.setVisible(false); } } // If there are some recent files, we must make the separator visisble // The separator is the last item in the list JSeparator separator = (JSeparator)menuItems.get(menuItems.size() - 1); separator.setVisible(someRecentFiles); } /** * Get the name to display in the menu item, it will chop the file name * if it is too long to display in the menu bar */ private static String getMenuItemDisplayName(File file) { // Limit the length of the menu text if needed final int maxLength = 40; String menuText = file.getName(); if(menuText.length() > maxLength) { menuText = "..." + menuText.substring(menuText.length() - maxLength, menuText.length()); //$NON-NLS-1$ } return menuText; } /** * Get the KeyEvent to use as shortcut key for menu item */ private static int getShortcutKey(int index) { int shortKey = -1; switch(index+1) { case 1: shortKey = KeyEvent.VK_1; break; case 2: shortKey = KeyEvent.VK_2; break; case 3: shortKey = KeyEvent.VK_3; break; case 4: shortKey = KeyEvent.VK_4; break; case 5: shortKey = KeyEvent.VK_5; break; case 6: shortKey = KeyEvent.VK_6; break; case 7: shortKey = KeyEvent.VK_7; break; case 8: shortKey = KeyEvent.VK_8; break; case 9: shortKey = KeyEvent.VK_9; break; default: break; } return shortKey; } /** * Get the full path to the recent file where index 0 is the most recent */ public static String getRecentFile(int index) { return prefs.get(USER_PREFS_KEY + index, null); } /** * Set the full path to the recent file where index 0 is the most recent */ private static void setRecentFile(int index, String fileName) { prefs.put(USER_PREFS_KEY + index, fileName); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/RegexpSearcher.java0000644000175000017500000000365112032647217026261 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; /** * Regexp search implementation */ public class RegexpSearcher implements Searcher { private boolean caseSensitive; private Pattern pattern; /** * Constructor * @param caseSensitive is search case sensitive * @param regexp Regexp to search */ public RegexpSearcher(boolean caseSensitive, String regexp) { super(); this.caseSensitive = caseSensitive; String newRegexp = ".*"+regexp+".*"; if(caseSensitive) { pattern = Pattern.compile(newRegexp); } else { pattern = Pattern.compile(newRegexp.toLowerCase()); } } /** * {@inheritDoc} */ public boolean search(List textTokens) { for (String searchableToken : textTokens) { if(!StringUtils.isEmpty(searchableToken)) { Matcher matcher = null; if(caseSensitive) { matcher = pattern.matcher(searchableToken); } else { matcher = pattern.matcher(searchableToken.toLowerCase()); } if(matcher.find()) { return true; } } } return false; } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ActionRouter.java0000644000175000017500000002706612032647217025776 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.SwingUtilities; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.util.JMeterError; import org.apache.log.Logger; public final class ActionRouter implements ActionListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Object LOCK = new Object(); private static volatile ActionRouter router; private Map> commands = new HashMap>(); private final Map> preActionListeners = new HashMap>(); private final Map> postActionListeners = new HashMap>(); private ActionRouter() { } public void actionPerformed(final ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { performAction(e); } }); } private void performAction(final ActionEvent e) { String actionCommand = e.getActionCommand(); try { try { GuiPackage.getInstance().updateCurrentGui(); } catch (Exception err){ log.error("performAction(" + actionCommand + ") updateCurrentGui() on" + e.toString() + " caused", err); JMeterUtils.reportErrorToUser("Problem updating GUI - see log file for details"); } for (Command c : commands.get(actionCommand)) { try { preActionPerformed(c.getClass(), e); c.doAction(e); postActionPerformed(c.getClass(), e); } catch (IllegalUserActionException err) { String msg = err.getMessage(); if (msg == null) { msg = err.toString(); } Throwable t = err.getCause(); if (t != null) { String cause = t.getMessage(); if (cause == null) { cause = t.toString(); } msg = msg + "\n" + cause; } JMeterUtils.reportErrorToUser(msg); } catch (Exception err) { log.error("Error processing "+c.toString(), err); } } } catch (NullPointerException er) { log.error("performAction(" + actionCommand + ") " + e.toString() + " caused", er); JMeterUtils.reportErrorToUser("Sorry, this feature (" + actionCommand + ") not yet implemented"); } } /** * To execute an action immediately in the current thread. * * @param e * the action to execute */ public void doActionNow(ActionEvent e) { performAction(e); } public Set getAction(String actionName) { Set set = new HashSet(); for (Command c : commands.get(actionName)) { try { set.add(c); } catch (Exception err) { log.error("Could not add Command", err); } } return set; } public Command getAction(String actionName, Class actionClass) { for (Command com : commands.get(actionName)) { if (com.getClass().equals(actionClass)) { return com; } } return null; } public Command getAction(String actionName, String className) { for (Command com : commands.get(actionName)) { if (com.getClass().getName().equals(className)) { return com; } } return null; } /** * Allows an ActionListener to receive notification of a command being * executed prior to the actual execution of the command. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.gui.action.Command. * @param listener * the ActionListener to receive the notifications */ public void addPreActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = preActionListeners.get(action.getName()); if (set == null) { set = new HashSet(); } set.add(listener); preActionListeners.put(action.getName(), set); } } /** * Allows an ActionListener to be removed from receiving notifications of a * command being executed prior to the actual execution of the command. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.gui.action.Command. * @param listener * the ActionListener to receive the notifications */ public void removePreActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = preActionListeners.get(action.getName()); if (set != null) { set.remove(listener); preActionListeners.put(action.getName(), set); } } } /** * Allows an ActionListener to receive notification of a command being * executed after the command has executed. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.gui.action.Command. * @param listener */ public void addPostActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = postActionListeners.get(action.getName()); if (set == null) { set = new HashSet(); } set.add(listener); postActionListeners.put(action.getName(), set); } } /** * Allows an ActionListener to be removed from receiving notifications of a * command being executed after the command has executed. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.gui.action.Command. * @param listener */ public void removePostActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = postActionListeners.get(action.getName()); if (set != null) { set.remove(listener); postActionListeners.put(action.getName(), set); } } } protected void preActionPerformed(Class action, ActionEvent e) { if (action != null) { Set listenerSet = preActionListeners.get(action.getName()); if (listenerSet != null && listenerSet.size() > 0) { ActionListener[] listeners = listenerSet.toArray(new ActionListener[listenerSet.size()]); for (int i = 0; i < listeners.length; i++) { listeners[i].actionPerformed(e); } } } } protected void postActionPerformed(Class action, ActionEvent e) { if (action != null) { Set listenerSet = postActionListeners.get(action.getName()); if (listenerSet != null && listenerSet.size() > 0) { ActionListener[] listeners = listenerSet.toArray(new ActionListener[listenerSet.size()]); for (int i = 0; i < listeners.length; i++) { listeners[i].actionPerformed(e); } } } } private void populateCommandMap() { try { List listClasses = ClassFinder.findClassesThatExtend( JMeterUtils.getSearchPaths(), // strPathsOrJars - pathnames or jarfiles to search for classes // classNames - required parent class(es) or annotations new Class[] {Class.forName("org.apache.jmeter.gui.action.Command") }, // $NON-NLS-1$ false, // innerClasses - should we include inner classes? // contains - classname should contain this string // This was added in r325814 as part of changes for the reporting tool "org.apache.jmeter.gui", // $NON-NLS-1$ null, // notContains - classname should not contain this string false); // annotations - true if classnames are annotations commands = new HashMap>(listClasses.size()); if (listClasses.isEmpty()) { log.fatalError("!!!!!Uh-oh, didn't find any action handlers!!!!!"); throw new JMeterError("No action handlers found - check JMeterHome and libraries"); } for (String strClassName : listClasses) { Class commandClass = Class.forName(strClassName); Command command = (Command) commandClass.newInstance(); for (String commandName : command.getActionNames()) { Set commandObjects = commands.get(commandName); if (commandObjects == null) { commandObjects = new HashSet(); commands.put(commandName, commandObjects); } commandObjects.add(command); } } } catch (HeadlessException e){ log.warn(e.toString()); } catch (Exception e) { log.error("exception finding action handlers", e); } } /** * Gets the Instance attribute of the ActionRouter class * * @return The Instance value */ public static ActionRouter getInstance() { if (router == null) { synchronized (LOCK) { if(router == null) { router = new ActionRouter(); router.populateCommandMap(); } } } return router; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/AddToTree.java0000644000175000017500000000603212032647217025161 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.swing.JComponent; import javax.swing.tree.TreePath; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class AddToTree implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commandSet; static { HashSet commands = new HashSet(); commands.add(ActionNames.ADD); commandSet = Collections.unmodifiableSet(commands); } public AddToTree() { } /** * Gets the Set of actions this Command class responds to. * * @return the ActionNames value */ public Set getActionNames() { return commandSet; } /** * Adds the specified class to the current node of the tree. */ public void doAction(ActionEvent e) { GuiPackage guiPackage = GuiPackage.getInstance(); try { guiPackage.updateCurrentNode(); TestElement testElement = guiPackage.createTestElement(((JComponent) e.getSource()).getName()); JMeterTreeNode parentNode = guiPackage.getCurrentNode(); JMeterTreeNode node = guiPackage.getTreeModel().addComponent(testElement, parentNode); guiPackage.getMainFrame().getTree().setSelectionPath(new TreePath(node.getPath())); } catch (IllegalUserActionException err) { log.error("", err); // $NON-NLS-1$ String msg = err.getMessage(); if (msg == null) { msg=err.toString(); } JMeterUtils.reportErrorToUser(msg); } catch (Exception err) { log.error("", err); // $NON-NLS-1$ String msg = err.getMessage(); if (msg == null) { msg=err.toString(); } JMeterUtils.reportErrorToUser(msg); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Remove.java0000644000175000017500000000710012032647217024600 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import javax.swing.tree.TreePath; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * Implements the Remove menu item. */ public class Remove implements Command { private static final Set commands = new HashSet(); // Whether to skip the delete confirmation dialogue private static final boolean SKIP_CONFIRM = JMeterUtils.getPropDefault("confirm.delete.skip", false); // $NON-NLS-1$ static { commands.add(ActionNames.REMOVE); } /** * Constructor for the Remove object */ public Remove() { } /** * Gets the ActionNames attribute of the Remove object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { int isConfirm = SKIP_CONFIRM ? JOptionPane.YES_OPTION : JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("remove_confirm_msg"),// $NON-NLS-1$ JMeterUtils.getResString("remove_confirm_title"), // $NON-NLS-1$ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (isConfirm == JOptionPane.YES_OPTION) { // TODO - removes the nodes from the CheckDirty map - should it be done later, in case some can't be removed? ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_REMOVE)); GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes(); TreePath newTreePath = // Save parent node for later guiPackage.getTreeListener().removedSelectedNode(); for (int i = nodes.length - 1; i >= 0; i--) { removeNode(nodes[i]); } guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath); guiPackage.updateCurrentGui(); } } private static void removeNode(JMeterTreeNode node) { TestElement testElement = node.getTestElement(); if (testElement.canRemove()) { GuiPackage.getInstance().getTreeModel().removeNodeFromParent(node); GuiPackage.getInstance().removeNode(testElement); } else { String message = testElement.getClass().getName() + " is busy"; JOptionPane.showMessageDialog(null, message, "Cannot remove item", JOptionPane.ERROR_MESSAGE); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/AboutCommand.java0000644000175000017500000001064712032647217025726 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.border.EmptyBorder; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.util.EscapeDialog; import org.apache.jmeter.util.JMeterUtils; /** * About Command. It may be extended in the future to add a list of installed * protocols, config options, etc. * */ public class AboutCommand implements Command { private static final Set commandSet; private static JDialog about; static { HashSet commands = new HashSet(); commands.add(ActionNames.ABOUT); commandSet = Collections.unmodifiableSet(commands); } /** * Handle the "about" action by displaying the "About Apache JMeter..." * dialog box. The Dialog Box is NOT modal, because those should be avoided * if at all possible. */ public void doAction(ActionEvent e) { if (e.getActionCommand().equals(ActionNames.ABOUT)) { this.about(); } } /** * Provide the list of Action names that are available in this command. */ public Set getActionNames() { return AboutCommand.commandSet; } /** * Called by about button. Raises about dialog. Currently the about box has * the product image and the copyright notice. The dialog box is centered * over the MainFrame. */ void about() { JFrame mainFrame = GuiPackage.getInstance().getMainFrame(); if (about == null) { about = new EscapeDialog(mainFrame, "About Apache JMeter...", false); about.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { about.setVisible(false); } }); JLabel jmeter = new JLabel(JMeterUtils.getImage("jmeter.jpg")); JLabel copyright = new JLabel(JMeterUtils.getJMeterCopyright(), SwingConstants.CENTER); JLabel rights = new JLabel("All Rights Reserved.", SwingConstants.CENTER); JLabel version = new JLabel("Apache JMeter Version " + JMeterUtils.getJMeterVersion(), SwingConstants.CENTER); JPanel infos = new JPanel(); infos.setOpaque(false); infos.setLayout(new GridLayout(0, 1)); infos.setBorder(new EmptyBorder(5, 5, 5, 5)); infos.add(copyright); infos.add(rights); infos.add(version); Container panel = about.getContentPane(); panel.setLayout(new BorderLayout()); panel.setBackground(Color.white); panel.add(jmeter, BorderLayout.NORTH); panel.add(infos, BorderLayout.SOUTH); } // NOTE: these lines center the about dialog in the // current window. Some older Swing versions have // a bug in getLocationOnScreen() and they may not // make this behave properly. Point p = mainFrame.getLocationOnScreen(); Dimension d1 = mainFrame.getSize(); Dimension d2 = about.getSize(); about.setLocation(p.x + (d1.width - d2.width) / 2, p.y + (d1.height - d2.height) / 2); about.pack(); about.setVisible(true); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Cut.java0000644000175000017500000000351512032647217024104 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; /** * Implements the Cut menu item command */ public class Cut extends AbstractAction { private static final Set commands = new HashSet(); static { commands.add(ActionNames.CUT); } /** * @see Command#getActionNames() */ @Override public Set getActionNames() { return commands; } /** * @see Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { GuiPackage guiPack = GuiPackage.getInstance(); JMeterTreeNode[] currentNodes = guiPack.getTreeListener().getSelectedNodes(); Copy.setCopiedNodes(currentNodes); for (int i = 0; i < currentNodes.length; i++) { guiPack.getTreeModel().removeNodeFromParent(currentNodes[i]); } guiPack.getMainFrame().repaint(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Load.java0000644000175000017500000002014712032647217024230 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.Set; import javax.swing.JFileChooser; import javax.swing.JTree; import javax.swing.tree.TreePath; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.FocusRequester; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import com.thoughtworks.xstream.converters.ConversionException; /** * Handles the Open (load a new file) and Merge commands. * */ public class Load implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final boolean expandTree = JMeterUtils.getPropDefault("onload.expandtree", false); //$NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(ActionNames.OPEN); commands.add(ActionNames.MERGE); } public Load() { super(); } public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { JFileChooser chooser = FileDialoger.promptToOpenFile(new String[] { ".jmx" }); //$NON-NLS-1$ if (chooser == null) { return; } File selectedFile = chooser.getSelectedFile(); if(selectedFile != null) { boolean merging = e.getActionCommand().equals(ActionNames.MERGE); // We must ask the user if it is ok to close current project if(!merging) { if (!Close.performAction(e)) { return; } } loadProjectFile(e, selectedFile, merging); } } static void loadProjectFile(ActionEvent e, File f, boolean merging) { ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.STOP_THREAD)); GuiPackage guiPackage = GuiPackage.getInstance(); InputStream reader = null; try { if (f != null) { boolean isTestPlan = false; if (merging) { log.info("Merging file: " + f); } else { log.info("Loading file: " + f); FileServer.getFileServer().setBaseForScript(f); } reader = new FileInputStream(f); HashTree tree = SaveService.loadTree(reader); isTestPlan = insertLoadedTree(e.getID(), tree, merging); // don't change name if merging if (!merging && isTestPlan) { guiPackage.setTestPlanFile(f.getAbsolutePath()); } } } catch (NoClassDefFoundError ex) // Allow for missing optional jars { log.warn("Missing jar file", ex); String msg = ex.getMessage(); if (msg == null) { msg = "Missing jar file - see log for details"; } JMeterUtils.reportErrorToUser(msg); } catch (ConversionException ex) { log.warn("Could not convert file "+ex); JMeterUtils.reportErrorToUser(SaveService.CEtoString(ex)); } catch (IOException ex) { log.warn("Error reading file: "+ex); String msg = ex.getMessage(); if (msg == null) { msg = "Unexpected error - see log for details"; } JMeterUtils.reportErrorToUser(msg); } catch (Exception ex) { log.warn("Unexpected error", ex); String msg = ex.getMessage(); if (msg == null) { msg = "Unexpected error - see log for details"; } JMeterUtils.reportErrorToUser(msg); } finally { JOrphanUtils.closeQuietly(reader); guiPackage.updateCurrentGui(); guiPackage.getMainFrame().repaint(); } } /** * Returns a boolean indicating whether the loaded tree was a full test plan */ public static boolean insertLoadedTree(int id, HashTree tree, boolean merging) throws Exception, IllegalUserActionException { // convertTree(tree); if (tree == null) { throw new Exception("Error in TestPlan - see log file"); } boolean isTestPlan = tree.getArray()[0] instanceof TestPlan; // If we are loading a new test plan, initialize the tree with the testplan node we are loading GuiPackage guiInstance = GuiPackage.getInstance(); if(isTestPlan && !merging) { guiInstance.clearTestPlan((TestElement)tree.getArray()[0]); } if (merging){ // Check if target of merge is reasonable TestElement te = (TestElement)tree.getArray()[0]; if (!(te instanceof WorkBench || te instanceof TestPlan)){// These are handled specially by addToTree boolean ok = MenuFactory.canAddTo(guiInstance.getCurrentNode(), te); if (!ok){ String name = te.getName(); String className = te.getClass().getName(); className = className.substring(className.lastIndexOf('.')+1); throw new IllegalUserActionException("Can't merge "+name+" ("+className+") here"); } } } HashTree newTree = guiInstance.addSubTree(tree); guiInstance.updateCurrentGui(); guiInstance.getMainFrame().getTree().setSelectionPath( new TreePath(((JMeterTreeNode) newTree.getArray()[0]).getPath())); tree = guiInstance.getCurrentSubTree(); // Send different event wether we are merging a test plan into another test plan, // or loading a testplan from scratch ActionEvent actionEvent = null; if(!merging) { actionEvent = new ActionEvent(tree.get(tree.getArray()[tree.size() - 1]), id, ActionNames.SUB_TREE_LOADED); } else { actionEvent = new ActionEvent(tree.get(tree.getArray()[tree.size() - 1]), id, ActionNames.SUB_TREE_MERGED); } ActionRouter.getInstance().actionPerformed(actionEvent); JTree jTree = guiInstance.getMainFrame().getTree(); if (expandTree && !merging) { // don't automatically expand when merging for(int i = 0; i < jTree.getRowCount(); i++) { jTree.expandRow(i); } } else { jTree.expandRow(0); } TreePath path = jTree.getPathForRow(1); jTree.setSelectionPath(path); new FocusRequester(jTree); return isTestPlan; } public static boolean insertLoadedTree(int id, HashTree tree) throws Exception, IllegalUserActionException { return insertLoadedTree(id, tree, false); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/AbstractAction.java0000644000175000017500000000413412032647217026250 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public abstract class AbstractAction implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); /** * @see Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { } /** * @see Command#getActionNames() */ abstract public Set getActionNames(); /** * @param e */ protected void popupShouldSave(ActionEvent e) { log.debug("popupShouldSave"); if (GuiPackage.getInstance().getTestPlanFile() == null) { if (JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("should_save"), //$NON-NLS-1$ JMeterUtils.getResString("warning"), //$NON-NLS-1$ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(),ActionNames.SAVE)); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/EnableComponent.java0000644000175000017500000000576612032647217026434 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements the Enable menu item. */ public class EnableComponent implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.ENABLE); commands.add(ActionNames.DISABLE); commands.add(ActionNames.TOGGLE); } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { JMeterTreeNode[] nodes = GuiPackage.getInstance().getTreeListener().getSelectedNodes(); if (e.getActionCommand().equals(ActionNames.ENABLE)) { log.debug("enabling currently selected gui objects"); enableComponents(nodes, true); } else if (e.getActionCommand().equals(ActionNames.DISABLE)) { log.debug("disabling currently selected gui objects"); enableComponents(nodes, false); } else if (e.getActionCommand().equals(ActionNames.TOGGLE)) { log.debug("toggling currently selected gui objects"); toggleComponents(nodes); } } private void enableComponents(JMeterTreeNode[] nodes, boolean enable) { GuiPackage pack = GuiPackage.getInstance(); for (int i = 0; i < nodes.length; i++) { nodes[i].setEnabled(enable); pack.getGui(nodes[i].getTestElement()).setEnabled(enable); } } private void toggleComponents(JMeterTreeNode[] nodes) { GuiPackage pack = GuiPackage.getInstance(); for (int i = 0; i < nodes.length; i++) { boolean enable = !nodes[i].isEnabled(); nodes[i].setEnabled(enable); pack.getGui(nodes[i].getTestElement()).setEnabled(enable); } } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/What.java0000644000175000017500000000663212032647217024257 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.HeapDumper; import org.apache.log.Logger; /** * * Debug class to show details of the currently selected object * Currently shows TestElement and GUI class names * * Also enables/disables debug for the test element. * */ public class What implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commandSet; static { HashSet commands = new HashSet(); commands.add(ActionNames.WHAT_CLASS); commands.add(ActionNames.DEBUG_ON); commands.add(ActionNames.DEBUG_OFF); commands.add(ActionNames.HEAP_DUMP); commandSet = Collections.unmodifiableSet(commands); } public void doAction(ActionEvent e) throws IllegalUserActionException { JMeterTreeNode node= GuiPackage.getInstance().getTreeListener().getCurrentNode(); TestElement te = (TestElement)node.getUserObject(); if (ActionNames.WHAT_CLASS.equals(e.getActionCommand())){ String guiClassName = te.getPropertyAsString(TestElement.GUI_CLASS); System.out.println(te.getClass().getName()); System.out.println(guiClassName); log.info("TestElement:"+te.getClass().getName()+", guiClassName:"+guiClassName); } else if (ActionNames.DEBUG_ON.equals(e.getActionCommand())){ LoggingManager.setPriorityFullName("DEBUG",te.getClass().getName());//$NON-NLS-1$ } else if (ActionNames.DEBUG_OFF.equals(e.getActionCommand())){ LoggingManager.setPriorityFullName("INFO",te.getClass().getName());//$NON-NLS-1$ } else if (ActionNames.HEAP_DUMP.equals(e.getActionCommand())){ try { String s = HeapDumper.dumpHeap(); JOptionPane.showMessageDialog(null, "Created "+s, "HeapDump", JOptionPane.INFORMATION_MESSAGE); } catch (Exception ex) { JOptionPane.showMessageDialog(null, ex.toString(), "HeapDump", JOptionPane.ERROR_MESSAGE); } } } /** * Provide the list of Action names that are available in this command. */ public Set getActionNames() { return commandSet; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/DragNDrop.java0000644000175000017500000001024212032647217025164 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; public class DragNDrop extends AbstractAction { private static final Set commands = new HashSet(); static { commands.add(ActionNames.DRAG_ADD); commands.add(ActionNames.INSERT_BEFORE); commands.add(ActionNames.INSERT_AFTER); } /** * @see Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { String action = e.getActionCommand(); GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeNode[] draggedNodes = guiPackage.getTreeListener().getDraggedNodes(); JMeterTreeListener treeListener = guiPackage.getTreeListener(); JMeterTreeNode currentNode = treeListener.getCurrentNode(); JMeterTreeNode parentNode = (JMeterTreeNode) currentNode.getParent(); TestElement te = currentNode.getTestElement(); if (te instanceof TestPlan || te instanceof WorkBench) { parentNode = null; // So elements can only be added as children } if (ActionNames.DRAG_ADD.equals(action) && canAddTo(currentNode,draggedNodes)) { removeNodesFromParents(draggedNodes); for (int i = 0; i < draggedNodes.length; i++) { GuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], currentNode, currentNode.getChildCount()); } } else if (parentNode != null) { if (ActionNames.INSERT_BEFORE.equals(action) && canAddTo(parentNode,draggedNodes)) { removeNodesFromParents(draggedNodes); for (int i = 0; i < draggedNodes.length; i++) { int index = parentNode.getIndex(currentNode); GuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], parentNode, index); } } else if (ActionNames.INSERT_AFTER.equals(action) && canAddTo(parentNode,draggedNodes)) { removeNodesFromParents(draggedNodes); for (int i = 0; i < draggedNodes.length; i++) { int index = parentNode.getIndex(currentNode) + 1; GuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], parentNode, index); } } } GuiPackage.getInstance().getMainFrame().repaint(); } private static boolean canAddTo(JMeterTreeNode parentNode, JMeterTreeNode[] draggedNodes) { boolean ok = MenuFactory.canAddTo(parentNode, draggedNodes); if (!ok){ Toolkit.getDefaultToolkit().beep(); } return ok; } private void removeNodesFromParents(JMeterTreeNode[] nodes) { for (int i = 0; i < nodes.length; i++) { GuiPackage.getInstance().getTreeModel().removeNodeFromParent(nodes[i]); } } /** * @see Command#getActionNames() */ @Override public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/StopStoppables.java0000644000175000017500000000427312032647217026335 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.Stoppable; /** * Stops stopables (Proxy, Mirror) * @since 2.5.1 */ public class StopStoppables extends AbstractAction implements ActionListener { private static final Set commands = new HashSet(); static { commands.add(ActionNames.STOP_THREAD); } /** * */ public StopStoppables() { super(); } /* (non-Javadoc) * @see org.apache.jmeter.gui.action.AbstractAction#getActionNames() */ @Override public Set getActionNames() { return commands; } /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ public void actionPerformed(ActionEvent e) { } /* (non-Javadoc) * @see org.apache.jmeter.gui.action.AbstractAction#doAction(java.awt.event.ActionEvent) */ @Override public void doAction(ActionEvent e) { GuiPackage instance = GuiPackage.getInstance(); List stopables = instance.getStoppables(); for (Stoppable element : stopables) { instance.unregister(element); element.stopServer(); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/LoggerPanelEnableDisable.java0000644000175000017500000000510212032647217030135 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JSplitPane; import javax.swing.UIManager; import org.apache.jmeter.gui.GuiPackage; /** * Hide / unhide LoggerPanel. * */ public class LoggerPanelEnableDisable implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.LOGGER_PANEL_ENABLE_DISABLE); } /** * Constructor for object. */ public LoggerPanelEnableDisable() { } /** * Gets the ActionNames attribute of the action * * @return the ActionNames value */ public Set getActionNames() { return commands; } /** * This method performs the actual command processing. * * @param e * the generic UI action event */ public void doAction(ActionEvent e) { GuiPackage guiInstance = GuiPackage.getInstance(); JSplitPane splitPane = ((JSplitPane)guiInstance.getLoggerPanel().getParent()); if (ActionNames.LOGGER_PANEL_ENABLE_DISABLE.equals(e.getActionCommand())) { if (!guiInstance.getLoggerPanel().isVisible()) { splitPane.setDividerSize(UIManager.getInt("SplitPane.dividerSize")); guiInstance.getLoggerPanel().setVisible(true); splitPane.setDividerLocation(0.8); guiInstance.getMenuItemLoggerPanel().getModel().setSelected(true); } else { guiInstance.getLoggerPanel().clear(); guiInstance.getLoggerPanel().setVisible(false); splitPane.setDividerSize(0); guiInstance.getMenuItemLoggerPanel().getModel().setSelected(false); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/CreateFunctionDialog.java0000644000175000017500000000310012032647217027370 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.functions.gui.FunctionHelper; public class CreateFunctionDialog extends AbstractAction { private final FunctionHelper helper; private static final Set commands; static { commands = new HashSet(); commands.add(ActionNames.FUNCTIONS); } public CreateFunctionDialog() { helper = new FunctionHelper(); } /** * Provide the list of Action names that are available in this command. */ @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent arg0) { helper.setVisible(true); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/KeyStrokes.java0000644000175000017500000001252312032647217025453 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Toolkit; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.KeyStroke; /* * Collect all the keystrokes together in one place. * This helps to ensure that there are no duplicates. */ public final class KeyStrokes { // Prevent instantiation private KeyStrokes(){ } // Bug 47064 - fixes for Mac LAF private static final int CONTROL_MASK =Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); public static final KeyStroke COPY = KeyStroke.getKeyStroke(KeyEvent.VK_C, CONTROL_MASK); public static final KeyStroke DUPLICATE = KeyStroke.getKeyStroke(KeyEvent.VK_C, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke DEBUG_OFF = KeyStroke.getKeyStroke(KeyEvent.VK_D, CONTROL_MASK); public static final KeyStroke DEBUG_ON = KeyStroke.getKeyStroke(KeyEvent.VK_D, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke CLEAR_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_E, CONTROL_MASK); public static final KeyStroke CLEAR = KeyStroke.getKeyStroke(KeyEvent.VK_E, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke ESC = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); public static final KeyStroke ENTER = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0); public static final KeyStroke FUNCTIONS = KeyStroke.getKeyStroke(KeyEvent.VK_F1, CONTROL_MASK); public static final KeyStroke SAVE_GRAPHICS = KeyStroke.getKeyStroke(KeyEvent.VK_G, CONTROL_MASK); public static final KeyStroke SAVE_GRAPHICS_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_G, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke HELP = KeyStroke.getKeyStroke(KeyEvent.VK_H, CONTROL_MASK); public static final KeyStroke CLOSE = KeyStroke.getKeyStroke(KeyEvent.VK_L, CONTROL_MASK); public static final KeyStroke SSL_MANAGER = KeyStroke.getKeyStroke(KeyEvent.VK_M, CONTROL_MASK); public static final KeyStroke OPEN = KeyStroke.getKeyStroke(KeyEvent.VK_O, CONTROL_MASK); public static final KeyStroke EXIT = KeyStroke.getKeyStroke(KeyEvent.VK_Q, CONTROL_MASK); public static final KeyStroke ACTION_START = KeyStroke.getKeyStroke(KeyEvent.VK_R, CONTROL_MASK); public static final KeyStroke REMOTE_START_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_R, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke SAVE = KeyStroke.getKeyStroke(KeyEvent.VK_S, CONTROL_MASK); public static final KeyStroke SAVE_ALL_AS = KeyStroke.getKeyStroke(KeyEvent.VK_S, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); public static final KeyStroke SEARCH_TREE = KeyStroke.getKeyStroke(KeyEvent.VK_F, CONTROL_MASK); public static final KeyStroke TOGGLE = KeyStroke.getKeyStroke(KeyEvent.VK_T, CONTROL_MASK); public static final KeyStroke PASTE = KeyStroke.getKeyStroke(KeyEvent.VK_V, CONTROL_MASK); public static final KeyStroke WHAT_CLASS = KeyStroke.getKeyStroke(KeyEvent.VK_W, CONTROL_MASK); public static final KeyStroke CUT = KeyStroke.getKeyStroke(KeyEvent.VK_X, CONTROL_MASK); public static final KeyStroke REMOTE_STOP_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_DOWN_MASK); public static final KeyStroke REMOTE_SHUT_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.ALT_DOWN_MASK); public static final KeyStroke REMOVE = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0); public static final KeyStroke ACTION_STOP = KeyStroke.getKeyStroke(KeyEvent.VK_PERIOD, CONTROL_MASK); public static final KeyStroke ACTION_SHUTDOWN = KeyStroke.getKeyStroke(KeyEvent.VK_COMMA, CONTROL_MASK); public static final KeyStroke COLLAPSE_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, CONTROL_MASK); // VK_PLUS + CTRL_DOWN_MASK did not work... public static final KeyStroke EXPAND_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, CONTROL_MASK | InputEvent.SHIFT_DOWN_MASK); /** * Check if an event matches the KeyStroke definition. * * @param e event * @param k keystroke * @return true if event matches the keystroke definition */ public static boolean matches(KeyEvent e, KeyStroke k){ final int modifiersEx = e.getModifiersEx() | e.getModifiers();// Hack to get full modifier value return e.getKeyCode() == k.getKeyCode() && modifiersEx == k.getModifiers(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Clear.java0000644000175000017500000000555212032647217024402 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.samplers.Clearable; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Handles the following actions: * - Clear (Data) * - Clear All (Data) * - Reset (Clear GUI) */ public class Clear implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.CLEAR); commands.add(ActionNames.CLEAR_ALL); commands.add(ActionNames.RESET_GUI); } public Clear() { } public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { GuiPackage guiPackage = GuiPackage.getInstance(); final String actionCommand = e.getActionCommand(); if (actionCommand.equals(ActionNames.CLEAR)) { JMeterGUIComponent guiComp = guiPackage.getCurrentGui(); if (guiComp instanceof Clearable){ ((Clearable) guiComp).clearData(); } } else if (actionCommand.equals(ActionNames.RESET_GUI)) { JMeterGUIComponent guiComp = guiPackage.getCurrentGui(); guiComp.clearGui(); } else { guiPackage.getMainFrame().clearData(); for (JMeterTreeNode node : guiPackage.getTreeModel().getNodesOfType(Clearable.class)) { JMeterGUIComponent guiComp = guiPackage.getGui(node.getTestElement()); if (guiComp instanceof Clearable){ Clearable item = (Clearable) guiComp; try { item.clearData(); } catch (Exception ex) { log.error("Can't clear: "+node+" "+guiComp, ex); } } } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/SSLManagerCommand.java0000644000175000017500000001150612032647217026603 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.SSLManager; // /** * SSL Manager Command. The SSL Manager provides a mechanism to change your * client authentication if required by the server. If you have JSSE 1.0.2 * installed, you can select your client identity from a list of installed keys. * You can also change your keystore. JSSE 1.0.2 allows you to export a PKCS#12 * key from Netscape 4.04 or higher and use it in a read only format. You must * supply a password that is greater than six characters due to limitations in * the keytool program--and possibly the rest of the system. *

        * By selecting a *.p12 file as your keystore (your PKCS#12) format file, you * can have a whopping one key keystore. The advantage is that you can test a * connection using the assigned Certificate from a Certificate Authority. *

        * TODO ? * N.B. The present implementation does not seem to allow selection of keys, * it only allows a change of keystore at run-time, or to provide one if not * already defined via the property. * */ public class SSLManagerCommand implements Command { private static final Set commandSet; static { HashSet commands = new HashSet(); commands.add(ActionNames.SSL_MANAGER); commandSet = Collections.unmodifiableSet(commands); } private JFileChooser keyStoreChooser; /** * Handle the "sslmanager" action by displaying the "SSL CLient Manager" * dialog box. The Dialog Box is NOT modal, because those should be avoided * if at all possible. */ public void doAction(ActionEvent e) { if (e.getActionCommand().equals(ActionNames.SSL_MANAGER)) { this.sslManager(); } } /** * Provide the list of Action names that are available in this command. */ public Set getActionNames() { return SSLManagerCommand.commandSet; } /** * Called by sslManager button. Raises sslManager dialog. * I.e. a FileChooser for PCSI12 (.p12|.P12) files. */ private void sslManager() { SSLManager.reset(); keyStoreChooser = new JFileChooser(System.getProperty("user.dir")); //$NON-NLS-1$ keyStoreChooser.addChoosableFileFilter(new AcceptPKCS12FileFilter()); keyStoreChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int retVal = keyStoreChooser.showOpenDialog(GuiPackage.getInstance().getMainFrame()); if (JFileChooser.APPROVE_OPTION == retVal) { File selectedFile = keyStoreChooser.getSelectedFile(); try { System.setProperty(SSLManager.JAVAX_NET_SSL_KEY_STORE, selectedFile.getCanonicalPath()); } catch (IOException e) { //Ignored } } keyStoreChooser = null; SSLManager.getInstance(); } /** * Internal class to add a PKCS12 file format filter for JFileChooser. */ static private class AcceptPKCS12FileFilter extends FileFilter { /** * Get the description that shows up in JFileChooser filter menu. * * @return description */ @Override public String getDescription() { return JMeterUtils.getResString("pkcs12_desc"); //$NON-NLS-1$ } /** * Tests to see if the file ends with "*.p12" or "*.P12". * * @param testFile * file to test * @return true if file is accepted, false otherwise */ @Override public boolean accept(File testFile) { return testFile.isDirectory() || testFile.getName().endsWith(".p12") //$NON-NLS-1$ || testFile.getName().endsWith(".P12"); //$NON-NLS-1$ } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/CollapseExpand.java0000644000175000017500000000430612032647217026252 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JTree; import org.apache.jmeter.gui.GuiPackage; /** * Processes the Collapse All and Expand All options. * */ public class CollapseExpand implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.COLLAPSE_ALL); commands.add(ActionNames.EXPAND_ALL); } /** * Constructor for the Close object. */ public CollapseExpand() { } /** * Gets the ActionNames attribute of the Close object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } /** * This method performs the actual command processing. * * @param e * the generic UI action event */ public void doAction(ActionEvent e) { boolean collapse=ActionNames.COLLAPSE_ALL.equals(e.getActionCommand()); GuiPackage guiInstance = GuiPackage.getInstance(); JTree jTree = guiInstance.getMainFrame().getTree(); if (collapse){ for (int i = jTree.getRowCount() - 1; i >= 0; i--) { jTree.collapseRow(i); } return; } for(int i = 0; i < jTree.getRowCount(); i++) { jTree.expandRow(i); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/AddParent.java0000644000175000017500000000565012032647217025215 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Component; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements the Add Parent menu command */ public class AddParent implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.ADD_PARENT); } public AddParent() { } public void doAction(ActionEvent e) { String name = ((Component) e.getSource()).getName(); GuiPackage guiPackage = GuiPackage.getInstance(); try { guiPackage.updateCurrentNode(); TestElement controller = guiPackage.createTestElement(name); addParentToTree(controller); } catch (Exception err) { log.error("", err); } } public Set getActionNames() { return commands; } protected void addParentToTree(TestElement newParent) { GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeNode newNode = new JMeterTreeNode(newParent, guiPackage.getTreeModel()); JMeterTreeNode currentNode = guiPackage.getTreeListener().getCurrentNode(); JMeterTreeNode parentNode = (JMeterTreeNode) currentNode.getParent(); int index = parentNode.getIndex(currentNode); guiPackage.getTreeModel().insertNodeInto(newNode, parentNode, index); JMeterTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes(); for (int i = 0; i < nodes.length; i++) { moveNode(guiPackage, nodes[i], newNode); } } private void moveNode(GuiPackage guiPackage, JMeterTreeNode node, JMeterTreeNode newParentNode) { guiPackage.getTreeModel().removeNodeFromParent(node); guiPackage.getTreeModel().insertNodeInto(node, newParentNode, newParentNode.getChildCount()); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Duplicate.java0000644000175000017500000000443012032647217025260 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 9, 2003 * * Clones a JMeterTreeNode */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; /** * Implements the Duplicate menu command */ public class Duplicate extends AbstractAction { private static final HashSet commands = new HashSet(); static { commands.add(ActionNames.DUPLICATE); } /* * @see org.apache.jmeter.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent e) { GuiPackage instance = GuiPackage.getInstance(); JMeterTreeListener treeListener = instance.getTreeListener(); JMeterTreeNode[] copiedNodes = Copy.cloneTreeNodes(treeListener.getSelectedNodes()); JMeterTreeNode currentNode = treeListener.getCurrentNode(); JMeterTreeNode parentNode = (JMeterTreeNode) currentNode.getParent(); JMeterTreeModel treeModel = instance.getTreeModel(); for (int i = 0; i < copiedNodes.length; i++) { int index = parentNode.getIndex(currentNode) + 1; treeModel.insertNodeInto(copiedNodes[i], parentNode, index); } instance.getMainFrame().repaint(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/LookAndFeelCommand.java0000644000175000017500000001335212032647217026773 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.HashSet; import java.util.Locale; import java.util.Set; import java.util.prefs.Preferences; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.util.JMeterMenuBar; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements the Look and Feel menu item. */ public class LookAndFeelCommand implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String JMETER_LAF = "jmeter.laf"; // $NON-NLS-1$ private static final Set commands = new HashSet(); private static final Preferences PREFS = Preferences.userNodeForPackage(LookAndFeelCommand.class); // Note: Windows user preferences are stored relative to: HKEY_CURRENT_USER\Software\JavaSoft\Prefs /** Prefix for the user preference key */ private static final String USER_PREFS_KEY = "laf"; //$NON-NLS-1$ static { UIManager.LookAndFeelInfo[] lfs = JMeterMenuBar.getAllLAFs(); for (int i = 0; i < lfs.length; i++) { commands.add(ActionNames.LAF_PREFIX + lfs[i].getClassName()); } try { String jMeterLaf = getJMeterLaf(); UIManager.setLookAndFeel(jMeterLaf); if (log.isInfoEnabled()) { ArrayList names=new ArrayList(); for(UIManager.LookAndFeelInfo laf : lfs) { if (laf.getClassName().equals(jMeterLaf)) { names.add(laf.getName()); } } if (names.size() > 0) { log.info("Using look and feel: "+jMeterLaf+ " " +names.toString()); } else { log.info("Using look and feel: "+jMeterLaf); } } } catch (IllegalAccessException e) { } catch (ClassNotFoundException e) { } catch (InstantiationException e) { } catch (UnsupportedLookAndFeelException e) { } } /** * Get LookAndFeel classname from the following properties: *
          *
        • jmeter.laf.<os.name> - lowercased; spaces replaced by '_'
        • *
        • jmeter.laf.<os.family> - lowercased.
        • *
        • jmeter.laf
        • *
        • UIManager.getCrossPlatformLookAndFeelClassName()
        • *
        * @return LAF classname */ private static String getJMeterLaf(){ String laf; laf = PREFS.get(USER_PREFS_KEY, null); if (laf != null) { return checkLafName(laf); } String osName = System.getProperty("os.name") // $NON-NLS-1$ .toLowerCase(Locale.ENGLISH); // Spaces are not allowed in property names read from files laf = JMeterUtils.getProperty(JMETER_LAF+"."+osName.replace(' ', '_')); if (laf != null) { return checkLafName(laf); } String[] osFamily = osName.split("\\s"); // e.g. windows xp => windows laf = JMeterUtils.getProperty(JMETER_LAF+"."+osFamily[0]); if (laf != null) { return checkLafName(laf); } laf = JMeterUtils.getProperty(JMETER_LAF); if (laf != null) { return checkLafName(laf); } return UIManager.getCrossPlatformLookAndFeelClassName(); } // Check if LAF is a built-in one private static String checkLafName(String laf){ if (JMeterMenuBar.SYSTEM_LAF.equalsIgnoreCase(laf)){ return UIManager.getSystemLookAndFeelClassName(); } if (JMeterMenuBar.CROSS_PLATFORM_LAF.equalsIgnoreCase(laf)){ return UIManager.getCrossPlatformLookAndFeelClassName(); } return laf; } public LookAndFeelCommand() { } public void doAction(ActionEvent ev) { try { String className = ev.getActionCommand().substring(ActionNames.LAF_PREFIX.length()).replace('/', '.'); UIManager.setLookAndFeel(className); SwingUtilities.updateComponentTreeUI(GuiPackage.getInstance().getMainFrame()); PREFS.put(USER_PREFS_KEY, className); } catch (javax.swing.UnsupportedLookAndFeelException e) { JMeterUtils.reportErrorToUser("Look and Feel unavailable:" + e.toString()); } catch (InstantiationException e) { JMeterUtils.reportErrorToUser("Look and Feel unavailable:" + e.toString()); } catch (ClassNotFoundException e) { JMeterUtils.reportErrorToUser("Look and Feel unavailable:" + e.toString()); } catch (IllegalAccessException e) { JMeterUtils.reportErrorToUser("Look and Feel unavailable:" + e.toString()); } } public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ResetSearchCommand.java0000644000175000017500000000430212032647217027053 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.Searchable; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; /** * Reset Search */ public class ResetSearchCommand extends AbstractAction { private static final Set commands = new HashSet(); static { commands.add(ActionNames.SEARCH_RESET); } /** * @see Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeModel jMeterTreeModel = guiPackage.getTreeModel(); for (JMeterTreeNode jMeterTreeNode : jMeterTreeModel.getNodesOfType(Searchable.class)) { if (jMeterTreeNode.getUserObject() instanceof Searchable){ List matchingNodes = jMeterTreeNode.getPathToThreadGroup(); for (JMeterTreeNode jMeterTreeNode2 : matchingNodes) { jMeterTreeNode2.setMarkedBySearch(false); } } } GuiPackage.getInstance().getMainFrame().repaint(); } /** * @see Command#getActionNames() */ @Override public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Help.java0000644000175000017500000001020112032647217024227 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.HashSet; import java.util.Set; import javax.swing.JDialog; import javax.swing.JScrollPane; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.util.EscapeDialog; import org.apache.jmeter.swing.HtmlPane; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements the Help menu item. */ public class Help implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); private static final String HELP_DOCS = "file:///" // $NON-NLS-1$ + JMeterUtils.getJMeterHome() + "/printable_docs/usermanual/"; // $NON-NLS-1$ private static final String HELP_PAGE = HELP_DOCS + "component_reference.html"; // $NON-NLS-1$ public static final String HELP_FUNCTIONS = HELP_DOCS + "functions.html"; // $NON-NLS-1$ private static JDialog helpWindow; private static final HtmlPane helpDoc; private static final JScrollPane scroller; static { commands.add(ActionNames.HELP); helpDoc = new HtmlPane(); scroller = new JScrollPane(helpDoc); helpDoc.setEditable(false); } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { if (helpWindow == null) { helpWindow = new EscapeDialog(new Frame(),// independent frame to // allow it to be overlaid // by the main frame JMeterUtils.getResString("help"),//$NON-NLS-1$ false); helpWindow.getContentPane().setLayout(new GridLayout(1, 1)); helpWindow.getContentPane().removeAll(); helpWindow.getContentPane().add(scroller); ComponentUtil.centerComponentInWindow(helpWindow, 60); } helpWindow.setVisible(true); // set the window visible immediately /* * This means that a new page will be shown before rendering is complete, * however the correct location will be displayed. * Attempts to use a "page" PropertyChangeListener to detect when the page * has been loaded failed to work any better. */ StringBuilder url=new StringBuilder(); if (e.getSource() instanceof String[]) { String[] source = (String[]) e.getSource(); url.append(source[0]).append('#').append(source[1]); } else { url.append(HELP_PAGE).append('#').append(GuiPackage.getInstance().getTreeListener().getCurrentNode().getDocAnchor()); } try { helpDoc.setPage(url.toString()); // N.B. this only reloads if necessary (ignores the reference) } catch (IOException ioe) { log.error(ioe.toString()); JMeterUtils.reportErrorToUser("Problem loading a help page - see log for details"); } } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Close.java0000644000175000017500000000700312032647217024412 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import javax.swing.JTree; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.util.FocusRequester; import org.apache.jmeter.util.JMeterUtils; /** * This command clears the existing test plan, allowing the creation of a New * test plan. * */ public class Close implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.CLOSE); } /** * Constructor for the Close object. */ public Close() { } /** * Gets the ActionNames attribute of the Close object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } /** * This method performs the actual command processing. * * @param e * the generic UI action event */ public void doAction(ActionEvent e) { performAction(e); } /** * Helper routine to allow action to be shared by LOAD. * * @param e event * @return true if Close was not cancelled */ static boolean performAction(ActionEvent e){ ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.CHECK_DIRTY)); GuiPackage guiPackage = GuiPackage.getInstance(); if (guiPackage.isDirty()) { int response; if ((response=JOptionPane.showConfirmDialog(GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("cancel_new_to_save"), // $NON-NLS-1$ JMeterUtils.getResString("save?"), // $NON-NLS-1$ JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE)) == JOptionPane.YES_OPTION) { ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.SAVE)); } if (response == JOptionPane.CLOSED_OPTION || response == JOptionPane.CANCEL_OPTION) { return false; // Don't clear the plan } } ActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ActionNames.STOP_THREAD)); closeProject(e); return true; } static void closeProject(ActionEvent e) { GuiPackage guiPackage = GuiPackage.getInstance(); guiPackage.clearTestPlan(); JTree tree = guiPackage.getTreeListener().getJTree(); tree.setSelectionRow(0); new FocusRequester(tree); ActionRouter.getInstance().actionPerformed(new ActionEvent(e.getSource(), e.getID(), ActionNames.ADD_ALL)); } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java0000644000175000017500000000304512032647217026673 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; /** * Search nodes for a text * TODO Enhance search dialog to select kind of nodes .... */ public class SearchTreeCommand extends AbstractAction { private static final Set commands = new HashSet(); static { commands.add(ActionNames.SEARCH_TREE); } private SearchTreeDialog dialog = new SearchTreeDialog(); /** * @see Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { dialog.setVisible(true); } /** * @see Command#getActionNames() */ @Override public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Copy.java0000644000175000017500000000756112032647217024270 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 9, 2003 * * Clones a JMeterTreeNode */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.Enumeration; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; /** * Implements the Copy menu command */ public class Copy extends AbstractAction { private static JMeterTreeNode copiedNode = null; private static JMeterTreeNode copiedNodes[] = null; private static final HashSet commands = new HashSet(); static { commands.add(ActionNames.COPY); } /* * @see org.apache.jmeter.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent e) { JMeterTreeListener treeListener = GuiPackage.getInstance().getTreeListener(); JMeterTreeNode[] nodes = treeListener.getSelectedNodes(); setCopiedNodes(nodes); } public static JMeterTreeNode[] getCopiedNodes() { if (copiedNodes == null) { // can be null if Copy has yet to be used return null; } for (int i = 0; i < copiedNodes.length; i++) { if (copiedNodes[i] == null) { return null; } } return cloneTreeNodes(copiedNodes); } public static JMeterTreeNode getCopiedNode() { if (copiedNode == null) { return null; } return cloneTreeNode(copiedNode); } public static void setCopiedNode(JMeterTreeNode node) { copiedNode = cloneTreeNode(node); } public static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) { JMeterTreeNode treeNode = (JMeterTreeNode) node.clone(); treeNode.setUserObject(((TestElement) node.getUserObject()).clone()); cloneChildren(treeNode, node); return treeNode; } public static void setCopiedNodes(JMeterTreeNode nodes[]) { copiedNodes = new JMeterTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { copiedNodes[i] = cloneTreeNode(nodes[i]); } } public static JMeterTreeNode[] cloneTreeNodes(JMeterTreeNode nodes[]) { JMeterTreeNode treeNodes[] = new JMeterTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { treeNodes[i] = cloneTreeNode(nodes[i]); } return treeNodes; } private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) { Enumeration enumFrom = from.children(); while (enumFrom.hasMoreElements()) { JMeterTreeNode child = (JMeterTreeNode) enumFrom.nextElement(); JMeterTreeNode childClone = (JMeterTreeNode) child.clone(); childClone.setUserObject(((TestElement) child.getUserObject()).clone()); to.add(childClone); cloneChildren((JMeterTreeNode) to.getLastChild(), child); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ChangeParent.java0000644000175000017500000000645712032647217025720 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Component; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.control.Controller; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements the Add Parent menu command */ public class ChangeParent implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.CHANGE_PARENT); } public ChangeParent() { } public void doAction(ActionEvent e) { String name = ((Component) e.getSource()).getName(); GuiPackage guiPackage = GuiPackage.getInstance(); JMeterTreeNode currentNode = guiPackage.getTreeListener().getCurrentNode(); if (!(currentNode.getUserObject() instanceof Controller)) { Toolkit.getDefaultToolkit().beep(); return; } try { guiPackage.updateCurrentNode(); TestElement controller = guiPackage.createTestElement(name); changeParent(controller, guiPackage, currentNode); } catch (Exception err) { Toolkit.getDefaultToolkit().beep(); log.error("Failed to change parent", err); } } public Set getActionNames() { return commands; } private void changeParent(TestElement newParent, GuiPackage guiPackage, JMeterTreeNode currentNode) { JMeterTreeModel treeModel = guiPackage.getTreeModel(); JMeterTreeNode newNode = new JMeterTreeNode(newParent, treeModel); JMeterTreeNode parentNode = (JMeterTreeNode) currentNode.getParent(); int index = parentNode.getIndex(currentNode); treeModel.insertNodeInto(newNode, parentNode, index); treeModel.removeNodeFromParent(currentNode); int childCount = currentNode.getChildCount(); for (int i = 0; i < childCount; i++) { // Using index 0 is voluntary as child is removed in next step and added to new parent JMeterTreeNode node = (JMeterTreeNode) currentNode.getChildAt(0); treeModel.removeNodeFromParent(node); treeModel.insertNodeInto(node, newNode, newNode.getChildCount()); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Paste.java0000644000175000017500000000631412032647217024425 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Places a copied JMeterTreeNode under the selected node. * */ public class Paste extends AbstractAction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.PASTE); } /** * @see Command#getActionNames() */ @Override public Set getActionNames() { return commands; } /** * @see Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { JMeterTreeNode draggedNodes[] = Copy.getCopiedNodes(); if (draggedNodes == null) { Toolkit.getDefaultToolkit().beep(); return; } JMeterTreeListener treeListener = GuiPackage.getInstance().getTreeListener(); JMeterTreeNode currentNode = treeListener.getCurrentNode(); if (MenuFactory.canAddTo(currentNode, draggedNodes)) { for (int i = 0; i < draggedNodes.length; i++) { if (draggedNodes[i] != null) { addNode(currentNode, draggedNodes[i]); } } } else { Toolkit.getDefaultToolkit().beep(); } GuiPackage.getInstance().getMainFrame().repaint(); } private void addNode(JMeterTreeNode parent, JMeterTreeNode node) { try { // Add this node JMeterTreeNode newNode = GuiPackage.getInstance().getTreeModel().addComponent(node.getTestElement(), parent); // Add all the child nodes of the node we are adding for(int i = 0; i < node.getChildCount(); i++) { addNode(newNode, (JMeterTreeNode)node.getChildAt(i)); } } catch (IllegalUserActionException iuae) { log.error("", iuae); // $NON-NLS-1$ JMeterUtils.reportErrorToUser(iuae.getMessage()); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/Searcher.java0000644000175000017500000000213512032647217025102 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.util.List; /** * Search algorithm */ public interface Searcher { /** * Implements the search * @param textTokens List content to be searched * @return true if search on textTokens is successful */ boolean search(List textTokens); } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ActionNames.java0000644000175000017500000001423312032647217025551 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; /* * Collect all the action names together in one place. * This helps to ensure that there are no duplicates * * */ public final class ActionNames { public static final String ABOUT = "about"; // $NON-NLS-1$ public static final String ACTION_SHUTDOWN = "shutdown"; // $NON-NLS-1$ public static final String ACTION_START = "start"; // $NON-NLS-1$ public static final String ACTION_START_NO_TIMERS = "start_no_timers"; // $NON-NLS-1$ public static final String ACTION_STOP = "stop"; // $NON-NLS-1$ public static final String ADD = "Add"; // $NON-NLS-1$ public static final String ADD_ALL = "add_all"; // $NON-NLS-1$ public static final String ADD_PARENT = "Add Parent"; // $NON-NLS-1$ public static final String ANALYZE_FILE = "Analyze File"; // $NON-NLS-1$ public static final String CHANGE_LANGUAGE = "change_language"; // $NON-NLS-1$ public static final String CHANGE_PARENT = "Change Parent"; // $NON-NLS-1$ public static final String CHECK_DIRTY = "check_dirty"; // $NON-NLS-1$ public static final String CHECK_REMOVE = "check_remove"; // $NON-NLS-1$ public static final String CLEAR = "action.clear"; // $NON-NLS-1$ public static final String CLEAR_ALL = "action.clear_all"; // $NON-NLS-1$ public static final String CLOSE = "close"; // $NON-NLS-1$ public static final String COLLAPSE_ALL = "collapse all"; // $NON-NLS-1$ public static final String COPY = "Copy"; // $NON-NLS-1$ public static final String CUT = "Cut"; // $NON-NLS-1$ public static final String DEBUG_ON = "debug_on"; // $NON-NLS-1$ public static final String DEBUG_OFF = "debug_off"; // $NON-NLS-1$ public static final String DISABLE = "disable"; // $NON-NLS-1$ public static final String DRAG_ADD = "drag_n_drop.add";//$NON-NLS-1$ /** Copy, then paste afterwards */ public static final String DUPLICATE = "duplicate"; // $NON-NLS-1$ public static final String EDIT = "edit"; // $NON-NLS-1$ public static final String ENABLE = "enable"; // $NON-NLS-1$ public static final String EXIT = "exit"; // $NON-NLS-1$ public static final String EXPAND_ALL = "expand all"; // $NON-NLS-1$ public static final String FUNCTIONS = "functions"; // $NON-NLS-1$ public static final String HELP = "help"; // $NON-NLS-1$ public static final String HEAP_DUMP = "heap_dump"; // $NON-NLS-1$ public static final String INSERT_AFTER = "drag_n_drop.insert_after";//$NON-NLS-1$ public static final String INSERT_BEFORE = "drag_n_drop.insert_before";//$NON-NLS-1$ public static final String LAF_PREFIX = "laf:"; // Look and Feel prefix public static final String LOGGER_PANEL_ENABLE_DISABLE = "logger_panel_enable_disable"; // $NON-NLS-1$ public static final String MERGE = "merge"; // $NON-NLS-1$ public static final String OPEN = "open"; // $NON-NLS-1$ public static final String OPEN_RECENT = "open_recent"; // $NON-NLS-1$ public static final String PASTE = "Paste"; // $NON-NLS-1$ public static final String REMOTE_EXIT = "remote_exit"; // $NON-NLS-1$ public static final String REMOTE_EXIT_ALL = "remote_exit_all"; // $NON-NLS-1$ public static final String REMOTE_SHUT = "remote_shut"; // $NON-NLS-1$ public static final String REMOTE_SHUT_ALL = "remote_shut_all"; // $NON-NLS-1$ public static final String REMOTE_START = "remote_start"; // $NON-NLS-1$ public static final String REMOTE_START_ALL = "remote_start_all"; // $NON-NLS-1$ public static final String REMOTE_STOP = "remote_stop"; // $NON-NLS-1$ public static final String REMOTE_STOP_ALL = "remote_stop_all"; // $NON-NLS-1$ public static final String REMOVE = "remove"; // $NON-NLS-1$ public static final String RESET_GUI = "reset_gui"; // $NON-NLS-1$ public static final String REVERT_PROJECT = "revert_project"; // $NON-NLS-1$ public static final String SAVE = "save"; // $NON-NLS-1$ public static final String SAVE_ALL_AS = "save_all_as"; // $NON-NLS-1$ public static final String SAVE_AS = "save_as"; // $NON-NLS-1$ public static final String SAVE_GRAPHICS = "save_graphics"; // $NON-NLS-1$ public static final String SAVE_GRAPHICS_ALL= "save_graphics_all"; // $NON-NLS-1$ public static final String SSL_MANAGER = "sslManager"; // $NON-NLS-1$ public static final String STOP_THREAD = "stop_thread"; // $NON-NLS-1$ public static final String SUB_TREE_LOADED = "sub_tree_loaded"; // $NON-NLS-1$ public static final String SUB_TREE_MERGED = "sub_tree_merged"; // $NON-NLS-1$ public static final String SUB_TREE_SAVED = "sub_tree_saved"; // $NON-NLS-1$ public static final String TOGGLE = "toggle"; // $NON-NLS-1$ enable/disable public static final String TOOLBAR = "toolbar"; // $NON-NLS-1$ public static final String WHAT_CLASS = "what_class"; // $NON-NLS-1$ public static final String SEARCH_TREE = "search_tree"; // $NON-NLS-1$ public static final String SEARCH_RESET = "search_reset"; // $NON-NLS-1$ // Prevent instantiation private ActionNames(){ } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ToolBar.java0000644000175000017500000000374012032647217024713 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.GuiPackage; /** * Hide / unhide toolbar. * */ public class ToolBar implements Command { private static final Set commands = new HashSet(); static { commands.add(ActionNames.TOOLBAR); } /** * Constructor for object. */ public ToolBar() { } /** * Gets the ActionNames attribute of the action * * @return the ActionNames value */ public Set getActionNames() { return commands; } /** * This method performs the actual command processing. * * @param e * the generic UI action event */ public void doAction(ActionEvent e) { if (ActionNames.TOOLBAR.equals(e.getActionCommand())) { GuiPackage guiInstance = GuiPackage.getInstance(); if (guiInstance.getMenuItemToolbar().getModel().isSelected()) { guiInstance.getMainToolbar().setVisible(true); } else { guiInstance.getMainToolbar().setVisible(false); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/action/ChangeLanguage.java0000644000175000017500000000432712032647217026204 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.action; import java.awt.Component; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Locale; import java.util.Set; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.log.Logger; /** * @version $Revision: 804421 $ */ public class ChangeLanguage implements Command { private static final Set commands = new HashSet(); private static final Logger log = LoggingManager.getLoggerForClass(); static { commands.add(ActionNames.CHANGE_LANGUAGE); } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { String locale = ((Component) e.getSource()).getName(); Locale loc; int sep = locale.indexOf('_'); if (sep > 0) { loc = new Locale(locale.substring(0, sep), locale.substring(sep + 1)); } else { loc = new Locale(locale, ""); } log.debug("Changing locale to " + loc.toString()); try { JMeterUtils.setLocale(loc); } catch (JMeterError err) { JMeterUtils.reportErrorToUser(err.toString()); } } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/NamePanel.java0000644000175000017500000000711412032647220023725 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import java.util.Collection; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JTextField; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; public class NamePanel extends JPanel implements JMeterGUIComponent { private static final long serialVersionUID = 240L; /** A text field containing the name. */ private final JTextField nameField = new JTextField(15); /** * Create a new NamePanel with the default name. */ public NamePanel() { setName(getStaticLabel()); init(); } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout(5, 0)); /** The label for the text field. */ JLabel nameLabel = new JLabel(JMeterUtils.getResString("name")); // $NON-NLS-1$ nameLabel.setName("name"); nameLabel.setLabelFor(nameField); add(nameLabel, BorderLayout.WEST); add(nameField, BorderLayout.CENTER); } public void clearGui() { setName(getStaticLabel()); } /** * Get the currently displayed name. * * @return the current name */ @Override public String getName() { if (nameField != null) { return nameField.getText(); } return ""; // $NON-NLS-1$ } /** {@inheritDoc} */ @Override public void setName(String name) { super.setName(name); nameField.setText(name); } /** {@inheritDoc} */ public void configure(TestElement testElement) { setName(testElement.getName()); } /** {@inheritDoc} */ public JPopupMenu createPopupMenu() { return null; } /** {@inheritDoc} */ public String getStaticLabel() { return JMeterUtils.getResString(getLabelResource()); } /** {@inheritDoc} */ public String getLabelResource() { return "root"; // $NON-NLS-1$ } /** {@inheritDoc} */ public Collection getMenuCategories() { return null; } /** {@inheritDoc} */ public TestElement createTestElement() { WorkBench wb = new WorkBench(); modifyTestElement(wb); return wb; } /** {@inheritDoc} */ public void modifyTestElement(TestElement wb) { wb.setName(getName()); wb.setProperty(new StringProperty(TestElement.GUI_CLASS, this.getClass().getName())); wb.setProperty(new StringProperty(TestElement.TEST_CLASS, WorkBench.class.getName())); } /** * {@inheritDoc} */ public String getDocAnchor() { return null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/gui/MainFrame.java0000644000175000017500000006630512032647220023733 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.Insets; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTree; import javax.swing.MenuElement; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.LoadDraggedFile; import org.apache.jmeter.gui.tree.JMeterCellRenderer; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.util.EscapeDialog; import org.apache.jmeter.gui.util.JMeterMenuBar; import org.apache.jmeter.gui.util.JMeterToolBar; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.Remoteable; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.LogEvent; import org.apache.log.LogTarget; import org.apache.log.Logger; import org.apache.log.Priority; /** * The main JMeter frame, containing the menu bar, test tree, and an area for * JMeter component GUIs. * */ public class MainFrame extends JFrame implements TestStateListener, Remoteable, DropTargetListener, Clearable, ActionListener { private static final long serialVersionUID = 240L; // This is used to keep track of local (non-remote) tests // The name is chosen to be an unlikely host-name private static final String LOCAL = "*local*"; // $NON-NLS-1$ // The application name private static final String DEFAULT_APP_NAME = "Apache JMeter"; // $NON-NLS-1$ // The default title for the Menu bar private static final String DEFAULT_TITLE = DEFAULT_APP_NAME + " (" + JMeterUtils.getJMeterVersion() + ")"; // $NON-NLS-1$ $NON-NLS-2$ // Allow display/hide toolbar private static final boolean DISPLAY_TOOLBAR = JMeterUtils.getPropDefault("jmeter.toolbar.display", true); // $NON-NLS-1$ // Allow display/hide LoggerPanel private static final boolean DISPLAY_LOGGER_PANEL = JMeterUtils.getPropDefault("jmeter.loggerpanel.display", false); // $NON-NLS-1$ // Allow display/hide Log Error/Fatal counter private static final boolean DISPLAY_ERROR_FATAL_COUNTER = JMeterUtils.getPropDefault("jmeter.errorscounter.display", true); // $NON-NLS-1$ private static final Logger log = LoggingManager.getLoggerForClass(); /** The menu bar. */ private JMeterMenuBar menuBar; /** The main panel where components display their GUIs. */ private JScrollPane mainPanel; /** The panel where the test tree is shown. */ private JScrollPane treePanel; /** The LOG panel. */ private LoggerPanel logPanel; /** The test tree. */ private JTree tree; /** An image which is displayed when a test is running. */ private final ImageIcon runningIcon = JMeterUtils.getImage("thread.enabled.gif");// $NON-NLS-1$ /** An image which is displayed when a test is not currently running. */ private final ImageIcon stoppedIcon = JMeterUtils.getImage("thread.disabled.gif");// $NON-NLS-1$ /** An image which is displayed to indicate FATAL, ERROR or WARNING. */ private final ImageIcon warningIcon = JMeterUtils.getImage("warning.png");// $NON-NLS-1$ /** The button used to display the running/stopped image. */ private JButton runningIndicator; /** The x coordinate of the last location where a component was dragged. */ private int previousDragXLocation = 0; /** The y coordinate of the last location where a component was dragged. */ private int previousDragYLocation = 0; /** The set of currently running hosts. */ private final Set hosts = new HashSet(); /** A message dialog shown while JMeter threads are stopping. */ private JDialog stoppingMessage; private JLabel totalThreads; private JLabel activeThreads; private JMeterToolBar toolbar; /** * Indicator for Log errors and Fatals */ private JButton warnIndicator; /** * Counter */ private JLabel errorsOrFatalsLabel; /** * LogTarget that receives ERROR or FATAL */ private transient ErrorsAndFatalsCounterLogTarget errorsAndFatalsCounterLogTarget; /** * Create a new JMeter frame. * * @param treeModel * the model for the test tree * @param treeListener * the listener for the test tree */ public MainFrame(TreeModel treeModel, JMeterTreeListener treeListener) { // TODO: Make the running indicator its own class instead of a JButton runningIndicator = new JButton(stoppedIcon); runningIndicator.setMargin(new Insets(0, 0, 0, 0)); runningIndicator.setBorder(BorderFactory.createEmptyBorder()); totalThreads = new JLabel("0"); // $NON-NLS-1$ activeThreads = new JLabel("0"); // $NON-NLS-1$ warnIndicator = new JButton(warningIcon); warnIndicator.setMargin(new Insets(0, 0, 0, 0)); // Transparent JButton with no border warnIndicator.setOpaque(false); warnIndicator.setContentAreaFilled(false); warnIndicator.setBorderPainted(false); warnIndicator.setToolTipText(JMeterUtils.getResString("error_indicator_tooltip")); // $NON-NLS-1$ warnIndicator.addActionListener(this); errorsOrFatalsLabel = new JLabel("0"); // $NON-NLS-1$ errorsOrFatalsLabel.setToolTipText(JMeterUtils.getResString("error_indicator_tooltip")); // $NON-NLS-1$ tree = makeTree(treeModel, treeListener); GuiPackage.getInstance().setMainFrame(this); init(); initTopLevelDndHandler(); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); } /** * Default constructor for the JMeter frame. This constructor will not * properly initialize the tree, so don't use it. * * @deprecated Do not use - only needed for JUnit tests */ @Deprecated public MainFrame() { } // MenuBar related methods // TODO: Do we really need to have all these menubar methods duplicated // here? Perhaps we can make the menu bar accessible through GuiPackage? /** * Specify whether or not the File|Load menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setFileLoadEnabled(boolean enabled) { menuBar.setFileLoadEnabled(enabled); } /** * Specify whether or not the File|Save menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setFileSaveEnabled(boolean enabled) { menuBar.setFileSaveEnabled(enabled); } /** * Specify whether or not the File|Revert item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setFileRevertEnabled(boolean enabled) { menuBar.setFileRevertEnabled(enabled); } /** * Specify the project file that was just loaded * * @param file - the full path to the file that was loaded */ public void setProjectFileLoaded(String file) { menuBar.setProjectFileLoaded(file); } /** * Set the menu that should be used for the Edit menu. * * @param menu * the new Edit menu */ public void setEditMenu(JPopupMenu menu) { menuBar.setEditMenu(menu); } /** * Specify whether or not the Edit menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setEditEnabled(boolean enabled) { menuBar.setEditEnabled(enabled); } /** * Set the menu that should be used for the Edit|Add menu. * * @param menu * the new Edit|Add menu */ public void setEditAddMenu(JMenu menu) { menuBar.setEditAddMenu(menu); } /** * Specify whether or not the Edit|Add menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setEditAddEnabled(boolean enabled) { menuBar.setEditAddEnabled(enabled); } /** * Close the currently selected menu. */ public void closeMenu() { if (menuBar.isSelected()) { MenuElement[] menuElement = menuBar.getSubElements(); if (menuElement != null) { for (int i = 0; i < menuElement.length; i++) { JMenu menu = (JMenu) menuElement[i]; if (menu.isSelected()) { menu.setPopupMenuVisible(false); menu.setSelected(false); break; } } } } } /** * Show a dialog indicating that JMeter threads are stopping on a particular * host. * * @param host * the host where JMeter threads are stopping */ public void showStoppingMessage(String host) { if (stoppingMessage != null){ stoppingMessage.dispose(); } stoppingMessage = new EscapeDialog(this, JMeterUtils.getResString("stopping_test_title"), true); //$NON-NLS-1$ JLabel stopLabel = new JLabel(JMeterUtils.getResString("stopping_test") + ": " + host); //$NON-NLS-1$$NON-NLS-2$ stopLabel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); stoppingMessage.getContentPane().add(stopLabel); stoppingMessage.pack(); ComponentUtil.centerComponentInComponent(this, stoppingMessage); SwingUtilities.invokeLater(new Runnable() { public void run() { if (stoppingMessage != null) {// TODO - how can this be null? stoppingMessage.setVisible(true); } } }); } public void updateCounts() { SwingUtilities.invokeLater(new Runnable() { public void run() { activeThreads.setText(Integer.toString(JMeterContextService.getNumberOfThreads())); totalThreads.setText(Integer.toString(JMeterContextService.getTotalThreads())); } }); } public void setMainPanel(JComponent comp) { mainPanel.setViewportView(comp); } public JTree getTree() { return tree; } // TestStateListener implementation /** * Called when a test is started on the local system. This implementation * sets the running indicator and ensures that the menubar is enabled and in * the running state. */ public void testStarted() { testStarted(LOCAL); menuBar.setEnabled(true); } /** * Called when a test is started on a specific host. This implementation * sets the running indicator and ensures that the menubar is in the running * state. * * @param host * the host where the test is starting */ public void testStarted(String host) { hosts.add(host); runningIndicator.setIcon(runningIcon); activeThreads.setText("0"); // $NON-NLS-1$ totalThreads.setText("0"); // $NON-NLS-1$ menuBar.setRunning(true, host); toolbar.setTestStarted(true); } /** * Called when a test is ended on the local system. This implementation * disables the menubar, stops the running indicator, and closes the * stopping message dialog. */ public void testEnded() { testEnded(LOCAL); menuBar.setEnabled(false); } /** * Called when a test is ended on the remote system. This implementation * stops the running indicator and closes the stopping message dialog. * * @param host * the host where the test is ending */ public void testEnded(String host) { hosts.remove(host); if (hosts.size() == 0) { runningIndicator.setIcon(stoppedIcon); JMeterContextService.endTest(); } menuBar.setRunning(false, host); toolbar.setTestStarted(false); if (stoppingMessage != null) { stoppingMessage.dispose(); stoppingMessage = null; } } /** * Create the GUI components and layout. */ private void init() { menuBar = new JMeterMenuBar(); setJMenuBar(menuBar); JPanel all = new JPanel(new BorderLayout()); all.add(createToolBar(), BorderLayout.NORTH); JSplitPane treeAndMain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); treePanel = createTreePanel(); treeAndMain.setLeftComponent(treePanel); JSplitPane topAndDown = new JSplitPane(JSplitPane.VERTICAL_SPLIT); topAndDown.setOneTouchExpandable(true); topAndDown.setDividerLocation(0.8); topAndDown.setResizeWeight(.8); topAndDown.setContinuousLayout(true); topAndDown.setBorder(null); // see bug jdk 4131528 if (!DISPLAY_LOGGER_PANEL) { topAndDown.setDividerSize(0); } mainPanel = createMainPanel(); logPanel = createLoggerPanel(); if (DISPLAY_ERROR_FATAL_COUNTER) { errorsAndFatalsCounterLogTarget = new ErrorsAndFatalsCounterLogTarget(); LoggingManager.addLogTargetToRootLogger(new LogTarget[]{ logPanel, errorsAndFatalsCounterLogTarget }); } else { LoggingManager.addLogTargetToRootLogger(new LogTarget[]{ logPanel }); } topAndDown.setTopComponent(mainPanel); topAndDown.setBottomComponent(logPanel); treeAndMain.setRightComponent(topAndDown); treeAndMain.setResizeWeight(.2); treeAndMain.setContinuousLayout(true); all.add(treeAndMain, BorderLayout.CENTER); getContentPane().add(all); tree.setSelectionRow(1); addWindowListener(new WindowHappenings()); setTitle(DEFAULT_TITLE); setIconImage(JMeterUtils.getImage("jmeter.jpg").getImage());// $NON-NLS-1$ setWindowTitle(); // define AWT WM_CLASS string } /** * Support for Test Plan Dnd * see BUG 52281 (when JDK6 will be minimum JDK target) */ public void initTopLevelDndHandler() { new DropTarget(this, this); } public void setExtendedFrameTitle(String fname) { // file New operation may set to null, so just return app name if (fname == null) { setTitle(DEFAULT_TITLE); return; } // allow for windows / chars in filename String temp = fname.replace('\\', '/'); // $NON-NLS-1$ // $NON-NLS-2$ String simpleName = temp.substring(temp.lastIndexOf('/') + 1);// $NON-NLS-1$ setTitle(simpleName + " (" + fname + ") - " + DEFAULT_TITLE); // $NON-NLS-1$ // $NON-NLS-2$ } /** * Create the JMeter tool bar pane containing the running indicator. * * @return a panel containing the running indicator */ private Component createToolBar() { Box toolPanel = new Box(BoxLayout.X_AXIS); // add the toolbar this.toolbar = JMeterToolBar.createToolbar(DISPLAY_TOOLBAR); GuiPackage guiInstance = GuiPackage.getInstance(); guiInstance.setMainToolbar(toolbar); guiInstance.getMenuItemToolbar().getModel().setSelected(DISPLAY_TOOLBAR); toolPanel.add(toolbar); toolPanel.add(Box.createRigidArea(new Dimension(10, 15))); toolPanel.add(Box.createGlue()); if (DISPLAY_ERROR_FATAL_COUNTER) { toolPanel.add(errorsOrFatalsLabel); toolPanel.add(warnIndicator); toolPanel.add(Box.createRigidArea(new Dimension(20, 15))); } toolPanel.add(activeThreads); toolPanel.add(new JLabel(" / ")); toolPanel.add(totalThreads); toolPanel.add(Box.createRigidArea(new Dimension(10, 15))); toolPanel.add(runningIndicator); return toolPanel; } /** * Create the panel where the GUI representation of the test tree is * displayed. The tree should already be created before calling this method. * * @return a scroll pane containing the test tree GUI */ private JScrollPane createTreePanel() { JScrollPane treeP = new JScrollPane(tree); treeP.setMinimumSize(new Dimension(100, 0)); return treeP; } /** * Create the main panel where components can display their GUIs. * * @return the main scroll pane */ private JScrollPane createMainPanel() { return new JScrollPane(); } /** * Create at the down of the left a Console for Log events * @return {@link LoggerPanel} */ private LoggerPanel createLoggerPanel() { LoggerPanel loggerPanel = new LoggerPanel(); loggerPanel.setMinimumSize(new Dimension(0, 100)); loggerPanel.setPreferredSize(new Dimension(0, 150)); GuiPackage guiInstance = GuiPackage.getInstance(); guiInstance.setLoggerPanel(loggerPanel); guiInstance.getMenuItemLoggerPanel().getModel().setSelected(DISPLAY_LOGGER_PANEL); loggerPanel.setVisible(DISPLAY_LOGGER_PANEL); return loggerPanel; } /** * Create and initialize the GUI representation of the test tree. * * @param treeModel * the test tree model * @param treeListener * the test tree listener * * @return the initialized test tree GUI */ private JTree makeTree(TreeModel treeModel, JMeterTreeListener treeListener) { JTree treevar = new JTree(treeModel) { private static final long serialVersionUID = 240L; @Override public String getToolTipText(MouseEvent event) { TreePath path = this.getPathForLocation(event.getX(), event.getY()); if (path != null) { Object treeNode = path.getLastPathComponent(); if (treeNode instanceof DefaultMutableTreeNode) { Object testElement = ((DefaultMutableTreeNode) treeNode).getUserObject(); if (testElement instanceof TestElement) { String comment = ((TestElement) testElement).getComment(); if (comment != null && comment.length() > 0) { return comment; } } } } return null; } }; treevar.setToolTipText(""); treevar.setCellRenderer(getCellRenderer()); treevar.setRootVisible(false); treevar.setShowsRootHandles(true); treeListener.setJTree(treevar); treevar.addTreeSelectionListener(treeListener); treevar.addMouseListener(treeListener); treevar.addMouseMotionListener(treeListener); treevar.addKeyListener(treeListener); return treevar; } /** * Create the tree cell renderer used to draw the nodes in the test tree. * * @return a renderer to draw the test tree nodes */ private TreeCellRenderer getCellRenderer() { DefaultTreeCellRenderer rend = new JMeterCellRenderer(); rend.setFont(new Font("Dialog", Font.PLAIN, 11)); return rend; } /** * Repaint pieces of the GUI as needed while dragging. This method should * only be called from the Swing event thread. * * @param dragIcon * the component being dragged * @param x * the current mouse x coordinate * @param y * the current mouse y coordinate */ public void drawDraggedComponent(Component dragIcon, int x, int y) { Dimension size = dragIcon.getPreferredSize(); treePanel.paintImmediately(previousDragXLocation, previousDragYLocation, size.width, size.height); this.getLayeredPane().setLayer(dragIcon, 400); SwingUtilities.paintComponent(treePanel.getGraphics(), dragIcon, treePanel, x, y, size.width, size.height); previousDragXLocation = x; previousDragYLocation = y; } /** * A window adapter used to detect when the main JMeter frame is being * closed. */ private static class WindowHappenings extends WindowAdapter { /** * Called when the main JMeter frame is being closed. Sends a * notification so that JMeter can react appropriately. * * @param event * the WindowEvent to handle */ @Override public void windowClosing(WindowEvent event) { ActionRouter.getInstance().actionPerformed(new ActionEvent(this, event.getID(), ActionNames.EXIT)); } } public void dragEnter(DropTargetDragEvent dtde) { // NOOP } public void dragExit(DropTargetEvent dte) { // NOOP } public void dragOver(DropTargetDragEvent dtde) { // NOOP } /** * Handler of Top level Dnd */ public void drop(DropTargetDropEvent dtde) { try { Transferable tr = dtde.getTransferable(); DataFlavor[] flavors = tr.getTransferDataFlavors(); for (int i = 0; i < flavors.length; i++) { // Check for file lists specifically if (flavors[i].isFlavorJavaFileListType()) { dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); try { @SuppressWarnings("unchecked") List files = (List) tr.getTransferData(DataFlavor.javaFileListFlavor); if(files.isEmpty()) { return; } File file = files.get(0); if(!file.getName().endsWith(".jmx")) { log.warn("Importing file:" + file.getName()+ "from DnD failed because file extension does not end with .jmx"); return; } ActionEvent fakeEvent = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, ActionNames.OPEN); LoadDraggedFile.loadProject(fakeEvent, file); } finally { dtde.dropComplete(true); } return; } } } catch (UnsupportedFlavorException e) { log.warn("Dnd failed" , e); } catch (IOException e) { log.warn("Dnd failed" , e); } } public void dropActionChanged(DropTargetDragEvent dtde) { // NOOP } /** * */ public final class ErrorsAndFatalsCounterLogTarget implements LogTarget, Clearable { public AtomicInteger errorOrFatal = new AtomicInteger(0); public void processEvent(LogEvent event) { if(event.getPriority().equals(Priority.ERROR) || event.getPriority().equals(Priority.FATAL_ERROR)) { final int newValue = errorOrFatal.incrementAndGet(); SwingUtilities.invokeLater(new Runnable() { public void run() { errorsOrFatalsLabel.setText(Integer.toString(newValue)); } }); } } public void clearData() { errorOrFatal.set(0); SwingUtilities.invokeLater(new Runnable() { public void run() { errorsOrFatalsLabel.setText(Integer.toString(errorOrFatal.get())); } }); } } public void clearData() { logPanel.clear(); if(DISPLAY_ERROR_FATAL_COUNTER) { errorsAndFatalsCounterLogTarget.clearData(); } } /** * Handles click on warnIndicator */ public void actionPerformed(ActionEvent event) { if(event.getSource()==warnIndicator) { ActionRouter.getInstance().doActionNow(new ActionEvent(event.getSource(), event.getID(), ActionNames.LOGGER_PANEL_ENABLE_DISABLE)); } } /** * Define AWT window title (WM_CLASS string) (useful on Gnome 3 / Linux) */ private void setWindowTitle() { Class xtoolkit = Toolkit.getDefaultToolkit().getClass(); if (xtoolkit.getName().equals("sun.awt.X11.XToolkit")) { // $NON-NLS-1$ try { final Field awtAppClassName = xtoolkit.getDeclaredField("awtAppClassName"); // $NON-NLS-1$ awtAppClassName.setAccessible(true); awtAppClassName.set(null, DEFAULT_APP_NAME); } catch (NoSuchFieldException nsfe) { log.warn("Error awt title: " + nsfe); // $NON-NLS-1$ } catch (IllegalAccessException iae) { log.warn("Error awt title: " + iae); // $NON-NLS-1$ } } } }apache-jmeter-2.8/src/core/org/apache/jmeter/gui/JMeterGUIComponent.java0000644000175000017500000001560012032647220025502 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.testelement.TestElement; /** * Implementing this interface indicates that the class is a JMeter GUI * Component. A JMeter GUI Component is essentially the GUI display code * associated with a JMeter Test Element. The writer of the component must take * care to make the component be consistent with the rest of JMeter's GUI look * and feel and behavior. Use of the provided abstract classes is highly * recommended to make this task easier. * * @see AbstractJMeterGuiComponent * @see org.apache.jmeter.config.gui.AbstractConfigGui * @see org.apache.jmeter.assertions.gui.AbstractAssertionGui * @see org.apache.jmeter.control.gui.AbstractControllerGui * @see org.apache.jmeter.timers.gui.AbstractTimerGui * @see org.apache.jmeter.visualizers.gui.AbstractVisualizer * @see org.apache.jmeter.samplers.gui.AbstractSamplerGui * */ public interface JMeterGUIComponent { /** * Sets the name of the JMeter GUI Component. The name of the component is * used in the Test Tree as the name of the tree node. * * @param name * the name of the component */ void setName(String name); /** * Gets the name of the JMeter GUI component. The name of the component is * used in the Test Tree as the name of the tree node. * * @return the name of the component */ String getName(); /** * Get the component's label. This label is used in drop down lists that * give the user the option of choosing one type of component in a list of * many. It should therefore be a descriptive name for the end user to see. * It must be unique to the class. * * It is also used by Help to find the appropriate location in the * documentation. * * Normally getLabelResource() should be overridden instead of * this method; the definition of this method in AbstractJMeterGuiComponent * is intended for general use. * * @see #getLabelResource() * @return GUI label for the component. */ String getStaticLabel(); /** * Get the component's resource name, which getStaticLabel uses to derive * the component's label in the local language. The resource name is fixed, * and does not vary with the selected language. * * Normally this method should be overriden in preference to overriding * getStaticLabel(). However where the resource name is not available or required, * getStaticLabel() may be overridden instead. * * @return the resource name */ String getLabelResource(); /** * Get the component's document anchor name. Used by Help to find the * appropriate location in the documentation * * @return Document anchor (#ref) for the component. */ String getDocAnchor(); /** * JMeter test components are separated into a model and a GUI * representation. The model holds the data and the GUI displays it. The GUI * class is responsible for knowing how to create and initialize with data * the model class that it knows how to display, and this method is called * when new test elements are created. * * @return the Test Element object that the GUI component represents. */ TestElement createTestElement(); /** * GUI components are responsible for populating TestElements they create * with the data currently held in the GUI components. This method should * overwrite whatever data is currently in the TestElement as it is called * after a user has filled out the form elements in the gui with new * information. * * @param element * the TestElement to modify */ void modifyTestElement(TestElement element); /** * Test GUI elements can be disabled, in which case they do not become part * of the test when run. * * @return true if the element should be part of the test run, false * otherwise */ boolean isEnabled(); /** * Set whether this component is enabled. * * @param enabled * true for enabled, false for disabled. */ void setEnabled(boolean enabled); /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. * * @return a JPopupMenu appropriate for the component. */ JPopupMenu createPopupMenu(); /** * The GUI must be able to extract the data from the TestElement and update * all GUI fields to represent those data. This method is called to allow * JMeter to show the user the GUI that represents the test element's data. * * @param element * the TestElement to configure */ void configure(TestElement element); /** * This is the list of add menu categories this gui component will be * available under. For instance, if this represents a Controller, then the * MenuFactory.CONTROLLERS category should be in the returned collection. * When a user right-clicks on a tree element and looks through the "add" * menu, which category your GUI component shows up in is determined by * which categories are returned by this method. Most GUI's belong to only * one category, but it is possible for a component to exist in multiple * categories. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory * * @see org.apache.jmeter.gui.util.MenuFactory */ Collection getMenuCategories(); /** * Clear the gui and return it to initial default values. This is necessary * because most gui classes are instantiated just once and re-used for * multiple test element objects and thus they need to be cleared between * use. */ void clearGui(); // N.B. originally called clear() // @see also Clearable } apache-jmeter-2.8/src/core/org/apache/jmeter/services/0000755000175000017500000000000012165514773022273 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/services/FileServer.java0000644000175000017500000005041112032647217025176 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Oct 19, 2004 */ package org.apache.jmeter.services; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.util.HashMap; import java.util.Map; import java.util.Random; import org.apache.commons.collections.ArrayStack; import org.apache.jmeter.gui.JMeterFileFilter; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * * The point of this class is to provide thread-safe access to files, and to * provide some simplifying assumptions about where to find files and how to * name them. For instance, putting supporting files in the same directory as * the saved test plan file allows users to refer to the file with just it's * name - this FileServer class will find the file without a problem. * Eventually, I want all in-test file access to be done through here, with the * goal of packaging up entire test plans as a directory structure that can be * sent via rmi to remote servers (currently, one must make sure the remote * server has all support files in a relative-same location) and to package up * test plans to execute on unknown boxes that only have Java installed. */ public class FileServer { private static final Logger log = LoggingManager.getLoggerForClass(); /** * The default base used for resolving relative files, i.e.
        * {@code System.getProperty("user.dir")} */ private static final String DEFAULT_BASE = System.getProperty("user.dir");// $NON-NLS-1$ /** Default base prefix: {@value} */ private static final String BASE_PREFIX_DEFAULT = "~/"; // $NON-NLS-1$ private static final String BASE_PREFIX = JMeterUtils.getPropDefault("jmeter.save.saveservice.base_prefix", // $NON-NLS-1$ BASE_PREFIX_DEFAULT); //@GuardedBy("this") private File base; //@GuardedBy("this") NOTE this also guards against possible window in checkForOpenFiles() private final Map files = new HashMap(); private static final FileServer server = new FileServer(); private final Random random = new Random(); // volatile needed to ensure safe publication private volatile String scriptName; // Cannot be instantiated private FileServer() { base = new File(DEFAULT_BASE); log.info("Default base='"+DEFAULT_BASE+"'"); } /** * @return the singleton instance of the server. */ public static FileServer getFileServer() { return server; } /** * Resets the current base to {@link #DEFAULT_BASE}. */ public synchronized void resetBase() { checkForOpenFiles(); base = new File(DEFAULT_BASE); log.info("Reset base to'"+base+"'"); } /** * Sets the current base directory for relative file names from the provided path. * If the path does not refer to an existing directory, then its parent is used. * Normally the provided path is a file, so using the parent directory is appropriate. * * @param basedir the path to set, or {@code null} if the GUI is being cleared * @throws IllegalStateException if files are still open */ public synchronized void setBasedir(String basedir) { checkForOpenFiles(); // TODO should this be called if basedir == null? if (basedir != null) { File newBase = new File(basedir); if (!newBase.isDirectory()) { newBase = newBase.getParentFile(); } base = newBase; log.info("Set new base='"+base+"'"); } } /** * Sets the current base directory for relative file names from the provided script file. * The parameter is assumed to be the path to a JMX file, so the base directory is derived * from its parent. * * @param scriptPath the path of the script file; must be not be {@code null} * @throws IllegalStateException if files are still open * @throws IllegalArgumentException if scriptPath parameter is null */ public synchronized void setBaseForScript(File scriptPath) { if (scriptPath == null){ throw new IllegalArgumentException("scriptPath must not be null"); } setScriptName(scriptPath.getName()); // getParentFile() may not work on relative paths setBase(scriptPath.getAbsoluteFile().getParentFile()); } /** * Sets the current base directory for relative file names. * * @param jmxBase the path of the script file base directory, cannot be null * @throws IllegalStateException if files are still open * @throws IllegalArgumentException if {@code basepath} is null */ public synchronized void setBase(File jmxBase) { if (jmxBase == null) { throw new IllegalArgumentException("jmxBase must not be null"); } checkForOpenFiles(); base = jmxBase; log.info("Set new base='"+base+"'"); } /** * Check if there are entries in use. *

        * Caller must ensure that access to the files map is single-threaded as * there is a window between checking the files Map and clearing it. * * @throws IllegalStateException if there are any entries still in use */ private void checkForOpenFiles() throws IllegalStateException { if (filesOpen()) { // checks for entries in use throw new IllegalStateException("Files are still open, cannot change base directory"); } files.clear(); // tidy up any unused entries } public synchronized String getBaseDir() { return base.getAbsolutePath(); } public static String getDefaultBase(){ return DEFAULT_BASE; } /** * Calculates the relative path from {@link #DEFAULT_BASE} to the current base, * which must be the same as or a child of the default. * * @return the relative path, or {@code "."} if the path cannot be determined */ public synchronized File getBaseDirRelative() { // Must first convert to absolute path names to ensure parents are available File parent = new File(DEFAULT_BASE).getAbsoluteFile(); File f = base.getAbsoluteFile(); ArrayStack l = new ArrayStack(); while (f != null) { if (f.equals(parent)){ if (l.isEmpty()){ break; } File rel = new File((String) l.pop()); while(!l.isEmpty()) { rel = new File(rel, (String) l.pop()); } return rel; } l.push(f.getName()); f = f.getParentFile(); } return new File("."); } /** * Creates an association between a filename and a File inputOutputObject, * and stores it for later use - unless it is already stored. * * @param filename - relative (to base) or absolute file name (must not be null) */ public void reserveFile(String filename) { reserveFile(filename,null); } /** * Creates an association between a filename and a File inputOutputObject, * and stores it for later use - unless it is already stored. * * @param filename - relative (to base) or absolute file name (must not be null) * @param charsetName - the character set encoding to use for the file (may be null) */ public void reserveFile(String filename, String charsetName) { reserveFile(filename, charsetName, filename, false); } /** * Creates an association between a filename and a File inputOutputObject, * and stores it for later use - unless it is already stored. * * @param filename - relative (to base) or absolute file name (must not be null) * @param charsetName - the character set encoding to use for the file (may be null) * @param alias - the name to be used to access the object (must not be null) */ public void reserveFile(String filename, String charsetName, String alias) { reserveFile(filename, charsetName, alias, false); } /** * Creates an association between a filename and a File inputOutputObject, * and stores it for later use - unless it is already stored. * * @param filename - relative (to base) or absolute file name (must not be null) * @param charsetName - the character set encoding to use for the file (may be null) * @param alias - the name to be used to access the object (must not be null) * @param hasHeader true if the file has a header line describing the contents * @return the header line; may be null */ public synchronized String reserveFile(String filename, String charsetName, String alias, boolean hasHeader) { if (filename == null){ throw new IllegalArgumentException("Filename must not be null"); } if (alias == null){ throw new IllegalArgumentException("Alias must not be null"); } FileEntry fileEntry = files.get(alias); if (fileEntry == null) { File f = new File(filename); fileEntry = new FileEntry(f.isAbsolute() ? f : new File(base, filename),null,charsetName); if (filename.equals(alias)){ log.info("Stored: "+filename); } else { log.info("Stored: "+filename+" Alias: "+alias); } files.put(alias, fileEntry); if (hasHeader){ try { fileEntry.headerLine=readLine(alias, false); } catch (IOException e) { throw new IllegalArgumentException("Could not read file header line",e); } } } return fileEntry.headerLine; } /** * Get the next line of the named file, recycle by default. * * @param filename the filename or alias that was used to reserve the file * @return String containing the next line in the file * @throws IOException */ public String readLine(String filename) throws IOException { return readLine(filename, true); } /** * Get the next line of the named file, first line is name to false * * @param filename the filename or alias that was used to reserve the file * @param recycle - should file be restarted at EOF? * @return String containing the next line in the file (null if EOF reached and not recycle) * @throws IOException */ public String readLine(String filename, boolean recycle) throws IOException { return readLine(filename, recycle, false); } /** * Get the next line of the named file. * * @param filename the filename or alias that was used to reserve the file * @param recycle - should file be restarted at EOF? * @param firstLineIsNames - 1st line is fields names * @return String containing the next line in the file (null if EOF reached and not recycle) * @throws IOException */ public synchronized String readLine(String filename, boolean recycle, boolean firstLineIsNames) throws IOException { FileEntry fileEntry = files.get(filename); if (fileEntry != null) { if (fileEntry.inputOutputObject == null) { fileEntry.inputOutputObject = createBufferedReader(fileEntry); } else if (!(fileEntry.inputOutputObject instanceof Reader)) { throw new IOException("File " + filename + " already in use"); } BufferedReader reader = (BufferedReader) fileEntry.inputOutputObject; String line = reader.readLine(); if (line == null && recycle) { reader.close(); reader = createBufferedReader(fileEntry); fileEntry.inputOutputObject = reader; if (firstLineIsNames) { // read first line and forget reader.readLine(); } line = reader.readLine(); } if (log.isDebugEnabled()) { log.debug("Read:"+line); } return line; } throw new IOException("File never reserved: "+filename); } /** * * @param alias the file name or alias * @param recycle whether the file should be re-started on EOF * @param firstLineIsNames whether the file contains a file header * @param delim the delimiter to use for parsing * @return the parsed line, will be empty if the file is at EOF */ public synchronized String[] getParsedLine(String alias, boolean recycle, boolean firstLineIsNames, char delim) throws IOException { BufferedReader reader = getReader(alias, recycle, firstLineIsNames); return CSVSaveService.csvReadFile(reader, delim); } private BufferedReader getReader(String alias, boolean recycle, boolean firstLineIsNames) throws IOException { FileEntry fileEntry = files.get(alias); if (fileEntry != null) { BufferedReader reader; if (fileEntry.inputOutputObject == null) { reader = createBufferedReader(fileEntry); fileEntry.inputOutputObject = reader; if (firstLineIsNames) { // read first line and forget reader.readLine(); } } else if (!(fileEntry.inputOutputObject instanceof Reader)) { throw new IOException("File " + alias + " already in use"); } else { reader = (BufferedReader) fileEntry.inputOutputObject; if (recycle) { // need to check if we are at EOF already reader.mark(1); int peek = reader.read(); if (peek == -1) { // already at EOF reader.close(); reader = createBufferedReader(fileEntry); fileEntry.inputOutputObject = reader; if (firstLineIsNames) { // read first line and forget reader.readLine(); } } else { // OK, we still have some data, restore it reader.reset(); } } } return reader; } else { throw new IOException("File never reserved: "+alias); } } private BufferedReader createBufferedReader(FileEntry fileEntry) throws IOException { FileInputStream fis = new FileInputStream(fileEntry.file); InputStreamReader isr = null; // If file encoding is specified, read using that encoding, otherwise use default platform encoding String charsetName = fileEntry.charSetEncoding; if(!JOrphanUtils.isBlank(charsetName)) { isr = new InputStreamReader(fis, charsetName); } else { isr = new InputStreamReader(fis); } return new BufferedReader(isr); } public synchronized void write(String filename, String value) throws IOException { FileEntry fileEntry = files.get(filename); if (fileEntry != null) { if (fileEntry.inputOutputObject == null) { fileEntry.inputOutputObject = createBufferedWriter(fileEntry); } else if (!(fileEntry.inputOutputObject instanceof Writer)) { throw new IOException("File " + filename + " already in use"); } BufferedWriter writer = (BufferedWriter) fileEntry.inputOutputObject; if (log.isDebugEnabled()) { log.debug("Write:"+value); } writer.write(value); } else { throw new IOException("File never reserved: "+filename); } } private BufferedWriter createBufferedWriter(FileEntry fileEntry) throws IOException { FileOutputStream fos = new FileOutputStream(fileEntry.file); OutputStreamWriter osw = null; // If file encoding is specified, write using that encoding, otherwise use default platform encoding String charsetName = fileEntry.charSetEncoding; if(!JOrphanUtils.isBlank(charsetName)) { osw = new OutputStreamWriter(fos, charsetName); } else { osw = new OutputStreamWriter(fos); } return new BufferedWriter(osw); } public synchronized void closeFiles() throws IOException { for (Map.Entry me : files.entrySet()) { closeFile(me.getKey(),me.getValue() ); } files.clear(); } /** * @param name * @throws IOException */ public synchronized void closeFile(String name) throws IOException { FileEntry fileEntry = files.get(name); closeFile(name, fileEntry); } private void closeFile(String name, FileEntry fileEntry) throws IOException { if (fileEntry != null && fileEntry.inputOutputObject != null) { log.info("Close: "+name); fileEntry.inputOutputObject.close(); fileEntry.inputOutputObject = null; } } boolean filesOpen() { // package access for test code only for (FileEntry fileEntry : files.values()) { if (fileEntry.inputOutputObject != null) { return true; } } return false; } /** * Method will get a random file in a base directory * TODO hey, not sure this method belongs here. FileServer is for threadsafe * File access relative to current test's base directory. * * @param basedir * @return a random File from the basedir that matches one of the extensions */ public File getRandomFile(String basedir, String[] extensions) { File input = null; if (basedir != null) { File src = new File(basedir); if (src.isDirectory() && src.list() != null) { File[] lfiles = src.listFiles(new JMeterFileFilter(extensions)); int count = lfiles.length; input = lfiles[random.nextInt(count)]; } } return input; } private static class FileEntry{ private String headerLine; private final File file; private Closeable inputOutputObject; private final String charSetEncoding; FileEntry(File f, Closeable o, String e){ file=f; inputOutputObject=o; charSetEncoding=e; } } /** * Resolve a file name that may be relative to the base directory. * If the name begins with the value of the JMeter property * "jmeter.save.saveservice.base_prefix" * - default "~/" - then the name is assumed to be relative to the basename. * * @param relativeName * @return the updated file */ public static String resolveBaseRelativeName(String relativeName) { if (relativeName.startsWith(BASE_PREFIX)){ String newName = relativeName.substring(BASE_PREFIX.length()); return new File(getFileServer().getBaseDir(),newName).getAbsolutePath(); } return relativeName; } /** * @return JMX Script name * @since 2.6 */ public String getScriptName() { return scriptName; } /** * @param scriptName Script name * @since 2.6 */ public void setScriptName(String scriptName) { this.scriptName = scriptName; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/0000755000175000017500000000000012165514773023001 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/testelement/AbstractTestElement.java0000644000175000017500000004325212032647220027552 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.jmeter.gui.Searchable; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.MapProperty; import org.apache.jmeter.testelement.property.MultiProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.PropertyIteratorImpl; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** */ public abstract class AbstractTestElement implements TestElement, Serializable, Searchable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private final Map propMap = Collections.synchronizedMap(new LinkedHashMap()); /** * Holds properties added when isRunningVersion is true */ private transient Set temporaryProperties; private transient boolean runningVersion = false; // Thread-specific variables saved here to save recalculation private transient JMeterContext threadContext = null; private transient String threadName = null; @Override public Object clone() { try { TestElement clonedElement = this.getClass().newInstance(); PropertyIterator iter = propertyIterator(); while (iter.hasNext()) { clonedElement.setProperty(iter.next().clone()); } clonedElement.setRunningVersion(runningVersion); return clonedElement; } catch (InstantiationException e) { throw new AssertionError(e); // clone should never return null } catch (IllegalAccessException e) { throw new AssertionError(e); // clone should never return null } } /** * {@inheritDoc} */ public void clear() { propMap.clear(); } /** * {@inheritDoc} *

        * Default implementation - does nothing */ public void clearTestElementChildren(){ // NOOP } /** * {@inheritDoc} */ public void removeProperty(String key) { propMap.remove(key); } /** * {@inheritDoc} */ @Override public boolean equals(Object o) { if (o instanceof AbstractTestElement) { return ((AbstractTestElement) o).propMap.equals(propMap); } else { return false; } } // TODO temporary hack to avoid unnecessary bug reports for subclasses /** * {@inheritDoc} */ @Override public int hashCode(){ return System.identityHashCode(this); } /* * URGENT: TODO - sort out equals and hashCode() - at present equal * instances can/will have different hashcodes - problem is, when a proper * hashcode is used, tests stop working, e.g. listener data disappears when * switching views... This presumably means that instances currently * regarded as equal, aren't really equal. * * @see java.lang.Object#hashCode() */ // This would be sensible, but does not work: // public int hashCode() // { // return propMap.hashCode(); // } /** * {@inheritDoc} */ public void addTestElement(TestElement el) { mergeIn(el); } public void setName(String name) { setProperty(TestElement.NAME, name); } public String getName() { return getPropertyAsString(TestElement.NAME); } public void setComment(String comment){ setProperty(new StringProperty(TestElement.COMMENTS, comment)); } public String getComment(){ return getProperty(TestElement.COMMENTS).getStringValue(); } /** * Get the named property. If it doesn't exist, a new NullProperty object is * created with the same name and returned. */ public JMeterProperty getProperty(String key) { JMeterProperty prop = propMap.get(key); if (prop == null) { prop = new NullProperty(key); } return prop; } public void traverse(TestElementTraverser traverser) { PropertyIterator iter = propertyIterator(); traverser.startTestElement(this); while (iter.hasNext()) { traverseProperty(traverser, iter.next()); } traverser.endTestElement(this); } protected void traverseProperty(TestElementTraverser traverser, JMeterProperty value) { traverser.startProperty(value); if (value instanceof TestElementProperty) { ((TestElement) value.getObjectValue()).traverse(traverser); } else if (value instanceof CollectionProperty) { traverseCollection((CollectionProperty) value, traverser); } else if (value instanceof MapProperty) { traverseMap((MapProperty) value, traverser); } traverser.endProperty(value); } protected void traverseMap(MapProperty map, TestElementTraverser traverser) { PropertyIterator iter = map.valueIterator(); while (iter.hasNext()) { traverseProperty(traverser, iter.next()); } } protected void traverseCollection(CollectionProperty col, TestElementTraverser traverser) { PropertyIterator iter = col.iterator(); while (iter.hasNext()) { traverseProperty(traverser, iter.next()); } } public int getPropertyAsInt(String key) { return getProperty(key).getIntValue(); } public int getPropertyAsInt(String key, int defaultValue) { JMeterProperty jmp = getProperty(key); return jmp instanceof NullProperty ? defaultValue : jmp.getIntValue(); } public boolean getPropertyAsBoolean(String key) { return getProperty(key).getBooleanValue(); } public boolean getPropertyAsBoolean(String key, boolean defaultVal) { JMeterProperty jmp = getProperty(key); return jmp instanceof NullProperty ? defaultVal : jmp.getBooleanValue(); } public float getPropertyAsFloat(String key) { return getProperty(key).getFloatValue(); } public long getPropertyAsLong(String key) { return getProperty(key).getLongValue(); } public long getPropertyAsLong(String key, long defaultValue) { JMeterProperty jmp = getProperty(key); return jmp instanceof NullProperty ? defaultValue : jmp.getLongValue(); } public double getPropertyAsDouble(String key) { return getProperty(key).getDoubleValue(); } public String getPropertyAsString(String key) { return getProperty(key).getStringValue(); } public String getPropertyAsString(String key, String defaultValue) { JMeterProperty jmp = getProperty(key); return jmp instanceof NullProperty ? defaultValue : jmp.getStringValue(); } /** * Add property to test element * @param property {@link JMeterProperty} to add to current Test Element * @param clone clone property */ protected void addProperty(JMeterProperty property, boolean clone) { JMeterProperty propertyToPut = property; if(clone) { propertyToPut = property.clone(); } if (isRunningVersion()) { setTemporary(propertyToPut); } else { clearTemporary(property); } JMeterProperty prop = getProperty(property.getName()); if (prop instanceof NullProperty || (prop instanceof StringProperty && prop.getStringValue().equals(""))) { propMap.put(property.getName(), propertyToPut); } else { prop.mergeIn(propertyToPut); } } /** * Add property to test element without cloning it * @param property {@link JMeterProperty} */ protected void addProperty(JMeterProperty property) { addProperty(property, false); } /** * Remove property from temporaryProperties * @param property {@link JMeterProperty} */ protected void clearTemporary(JMeterProperty property) { if (temporaryProperties != null) { temporaryProperties.remove(property); } } /** * Log the properties of the test element * * @see TestElement#setProperty(JMeterProperty) */ protected void logProperties() { if (log.isDebugEnabled()) { PropertyIterator iter = propertyIterator(); while (iter.hasNext()) { JMeterProperty prop = iter.next(); log.debug("Property " + prop.getName() + " is temp? " + isTemporary(prop) + " and is a " + prop.getObjectValue()); } } } public void setProperty(JMeterProperty property) { if (isRunningVersion()) { if (getProperty(property.getName()) instanceof NullProperty) { addProperty(property); } else { getProperty(property.getName()).setObjectValue(property.getObjectValue()); } } else { propMap.put(property.getName(), property); } } public void setProperty(String name, String value) { setProperty(new StringProperty(name, value)); } /** * Create a String property - but only if it is not the default. * This is intended for use when adding new properties to JMeter * so that JMX files are not expanded unnecessarily. * * N.B. - must agree with the default applied when reading the property. * * @param name property name * @param value current value * @param dflt default */ public void setProperty(String name, String value, String dflt) { if (dflt.equals(value)) { removeProperty(name); } else { setProperty(new StringProperty(name, value)); } } public void setProperty(String name, boolean value) { setProperty(new BooleanProperty(name, value)); } /** * Create a boolean property - but only if it is not the default. * This is intended for use when adding new properties to JMeter * so that JMX files are not expanded unnecessarily. * * N.B. - must agree with the default applied when reading the property. * * @param name property name * @param value current value * @param dflt default */ public void setProperty(String name, boolean value, boolean dflt) { if (value == dflt) { removeProperty(name); } else { setProperty(new BooleanProperty(name, value)); } } public void setProperty(String name, int value) { setProperty(new IntegerProperty(name, value)); } /** * Create a boolean property - but only if it is not the default. * This is intended for use when adding new properties to JMeter * so that JMX files are not expanded unnecessarily. * * N.B. - must agree with the default applied when reading the property. * * @param name property name * @param value current value * @param dflt default */ public void setProperty(String name, int value, int dflt) { if (value == dflt) { removeProperty(name); } else { setProperty(new IntegerProperty(name, value)); } } public PropertyIterator propertyIterator() { return new PropertyIteratorImpl(propMap.values()); } /** * Add to this the properties of element (by reference) * @param element {@link TestElement} */ protected void mergeIn(TestElement element) { PropertyIterator iter = element.propertyIterator(); while (iter.hasNext()) { JMeterProperty prop = iter.next(); addProperty(prop, false); } } /** * Returns the runningVersion. */ public boolean isRunningVersion() { return runningVersion; } /** * Sets the runningVersion. * * @param runningVersion * the runningVersion to set */ public void setRunningVersion(boolean runningVersion) { this.runningVersion = runningVersion; PropertyIterator iter = propertyIterator(); while (iter.hasNext()) { iter.next().setRunningVersion(runningVersion); } } /** * {@inheritDoc} */ public void recoverRunningVersion() { Iterator> iter = propMap.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = iter.next(); JMeterProperty prop = entry.getValue(); if (isTemporary(prop)) { iter.remove(); clearTemporary(prop); } else { prop.recoverRunningVersion(this); } } emptyTemporary(); } /** * Clears temporaryProperties */ protected void emptyTemporary() { if (temporaryProperties != null) { temporaryProperties.clear(); } } /** * {@inheritDoc} */ public boolean isTemporary(JMeterProperty property) { if (temporaryProperties == null) { return false; } else { return temporaryProperties.contains(property); } } /** * {@inheritDoc} */ public void setTemporary(JMeterProperty property) { if (temporaryProperties == null) { temporaryProperties = new LinkedHashSet(); } temporaryProperties.add(property); if (property instanceof MultiProperty) { PropertyIterator iter = ((MultiProperty) property).iterator(); while (iter.hasNext()) { setTemporary(iter.next()); } } } /** * @return Returns the threadContext. */ public JMeterContext getThreadContext() { if (threadContext == null) { /* * Only samplers have the thread context set up by JMeterThread at * present, so suppress the warning for now */ // log.warn("ThreadContext was not set up - should only happen in // JUnit testing..." // ,new Throwable("Debug")); threadContext = JMeterContextService.getContext(); } return threadContext; } /** * @param inthreadContext * The threadContext to set. */ public void setThreadContext(JMeterContext inthreadContext) { if (threadContext != null) { if (inthreadContext != threadContext) { throw new RuntimeException("Attempting to reset the thread context"); } } this.threadContext = inthreadContext; } /** * @return Returns the threadName. */ public String getThreadName() { return threadName; } /** * @param inthreadName * The threadName to set. */ public void setThreadName(String inthreadName) { if (threadName != null) { if (!threadName.equals(inthreadName)) { throw new RuntimeException("Attempting to reset the thread name"); } } this.threadName = inthreadName; } public AbstractTestElement() { super(); } /** * {@inheritDoc} */ // Default implementation public boolean canRemove() { return true; } /** * {@inheritDoc} */ // Moved from JMeter class public boolean isEnabled() { return getProperty(TestElement.ENABLED) instanceof NullProperty || getPropertyAsBoolean(TestElement.ENABLED); } /** * {@inheritDoc}} */ public List getSearchableTokens() throws Exception { List result = new ArrayList(2); result.add(getComment()); result.add(getName()); return result; } /** * Add to result the values of propertyNames * @param result List values of propertyNames * @param propertyNames Set properties to extract */ protected final void addPropertiesValues(List result, Set propertyNames) { PropertyIterator iterator = propertyIterator(); while(iterator.hasNext()) { JMeterProperty jMeterProperty = iterator.next(); if(propertyNames.contains(jMeterProperty.getName())) { result.add(jMeterProperty.getStringValue()); } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestElementTraverser.java0000644000175000017500000000347712032647220027771 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import org.apache.jmeter.testelement.property.JMeterProperty; /** * For traversing Test Elements, which contain property that can be other test * elements, strings, collections, maps, objects * * @version $Revision: 1377076 $ */ public interface TestElementTraverser { /** * Notification that a new test element is about to be traversed. * * @param el */ void startTestElement(TestElement el); /** * Notification that the test element is now done. * * @param el */ void endTestElement(TestElement el); /** * Notification that a property is starting. This could be a test element * property or a Map property - depends on the context. * * @param key */ void startProperty(JMeterProperty key); /** * Notification that a property is ending. Again, this could be a test * element or a Map property, dependig on the context. * * @param key */ void endProperty(JMeterProperty key); } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/VariablesCollection.java0000644000175000017500000000267712032647220027567 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.threads.JMeterVariables; /** * @version $Revision: 1380371 $ */ public class VariablesCollection implements Serializable { private static final long serialVersionUID = 240L; private final Map varMap = new HashMap(); public void addJMeterVariables(JMeterVariables jmVars) { varMap.put(Thread.currentThread().getName(), jmVars); } public JMeterVariables getVariables() { return varMap.get(Thread.currentThread().getName()); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/AbstractTestElementBeanInfo.java0000644000175000017500000000521312032647220031147 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.testelement; import java.awt.Image; import java.beans.BeanDescriptor; import java.beans.BeanInfo; import java.beans.EventSetDescriptor; import java.beans.MethodDescriptor; import java.beans.PropertyDescriptor; /** * This is the BeanInfo object for the TestBean class. It acts as a "stopper" * for the introspector: we don't want it to look at properties defined at this * or higher classes. *

        * Note this is really needed since using Introspector.getBeanInfo with a stop * class is not an option because: *

          *
        1. The API does not define a 3-parameter getBeanInfo in which you can use a * stop class AND flags. [Why? I guess this is a bug in the spec.] *
        2. java.beans.Introspector is buggy and, opposite to what's stated in the * Javadocs, only results of getBeanInfo(Class) are actually cached. *
        * * @version $Revision: 908219 $ */ public class AbstractTestElementBeanInfo implements BeanInfo { public BeanInfo[] getAdditionalBeanInfo() { return new BeanInfo[0]; } /** * {@inheritDoc} */ public BeanDescriptor getBeanDescriptor() { return null; } /** * {@inheritDoc} */ public int getDefaultEventIndex() { return 0; } /** * {@inheritDoc} */ public int getDefaultPropertyIndex() { return 0; } /** * {@inheritDoc} */ public EventSetDescriptor[] getEventSetDescriptors() { return new EventSetDescriptor[0]; } /** * {@inheritDoc} */ public Image getIcon(int iconKind) { return null; } /** * {@inheritDoc} */ public MethodDescriptor[] getMethodDescriptors() { return new MethodDescriptor[0]; } /** * {@inheritDoc} */ public PropertyDescriptor[] getPropertyDescriptors() { return new PropertyDescriptor[0]; } }apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestElement.java0000644000175000017500000001350712032647220026066 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.threads.JMeterContext; public interface TestElement extends Cloneable { String NAME = "TestElement.name"; //$NON-NLS-1$ String GUI_CLASS = "TestElement.gui_class"; //$NON-NLS-1$ String ENABLED = "TestElement.enabled"; //$NON-NLS-1$ String TEST_CLASS = "TestElement.test_class"; //$NON-NLS-1$ // Needed by AbstractTestElement. // Also TestElementConverter and TestElementPropertyConverter for handling empty comments String COMMENTS = "TestPlan.comments"; //$NON-NLS-1$ // N.B. Comments originally only applied to Test Plans, hence the name - which can now not be easily changed void addTestElement(TestElement child); /** * This method should clear any test element properties that are merged * by {@link #addTestElement(TestElement)}. */ void clearTestElementChildren(); void setProperty(String key, String value); void setProperty(String key, String value, String dflt); void setProperty(String key, boolean value); void setProperty(String key, boolean value, boolean dflt); void setProperty(String key, int value); void setProperty(String key, int value, int dflt); /** * Check if ENABLED property is present and true ; defaults to true * * @return true if element is enabled */ boolean isEnabled(); /** * Returns true or false whether the element is the running version. */ boolean isRunningVersion(); /** * Test whether a given property is only a temporary resident of the * TestElement * * @param property * @return boolean */ boolean isTemporary(JMeterProperty property); /** * Indicate that the given property should be only a temporary property in * the TestElement * * @param property * void */ void setTemporary(JMeterProperty property); /** * Return a property as a boolean value. */ boolean getPropertyAsBoolean(String key); boolean getPropertyAsBoolean(String key, boolean defaultValue); long getPropertyAsLong(String key); long getPropertyAsLong(String key, long defaultValue); int getPropertyAsInt(String key); int getPropertyAsInt(String key, int defaultValue); float getPropertyAsFloat(String key); double getPropertyAsDouble(String key); /** * Make the test element the running version, or make it no longer the * running version. This tells the test element that it's current state must * be retrievable by a call to recoverRunningVersion(). It is kind of like * making the TestElement Read- Only, but not as strict. Changes can be made * and the element can be modified, but the state of the element at the time * of the call to setRunningVersion() must be recoverable. */ void setRunningVersion(boolean run); /** * Tells the test element to return to the state it was in when * setRunningVersion(true) was called. */ void recoverRunningVersion(); /** * Clear the TestElement of all data. */ void clear(); // TODO - yet another ambiguous name - does it need changing? // See also: Clearable, JMeterGUIComponent String getPropertyAsString(String key); String getPropertyAsString(String key, String defaultValue); /** * Sets and overwrites a property in the TestElement. This call will be * ignored if the TestElement is currently a "running version". */ void setProperty(JMeterProperty property); /** * Given the name of the property, returns the appropriate property from * JMeter. If it is null, a NullProperty object will be returned. */ JMeterProperty getProperty(String propName); /** * Get a Property Iterator for the TestElements properties. * * @return PropertyIterator */ PropertyIterator propertyIterator(); void removeProperty(String key); // lifecycle methods Object clone(); /** * Convenient way to traverse a test element. */ void traverse(TestElementTraverser traverser); /** * @return Returns the threadContext. */ JMeterContext getThreadContext(); /** * @param threadContext * The threadContext to set. */ void setThreadContext(JMeterContext threadContext); /** * @return Returns the threadName. */ String getThreadName(); /** * @param threadName * The threadName to set. */ void setThreadName(String threadName); /** * Called by Remove to determine if it is safe to remove the element. The * element can either clean itself up, and return true, or the element can * return false. * * @return true if safe to remove the element */ boolean canRemove(); String getName(); void setName(String name); String getComment(); void setComment(String comment); } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestListener.java0000644000175000017500000000217412032647220026260 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; /** * TestListener interface is used for methods that are called at different * stages of each test. * * @deprecated since 2.8, please use {@link TestStateListener} and/or {@link TestIterationListener} */ @Deprecated public interface TestListener extends TestStateListener, TestIterationListener { }apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/AbstractScopedAssertion.java0000644000175000017500000000312212032647220030416 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; /** *

        * Super-class for all Assertions that can be applied to main sample, sub-samples or both. * Test elements merely need to extend this class to support scoping. *

        * *

        * Their corresponding GUI classes need to add the AssertionScopePanel to the GUI * using the AbstractAssertionGui methods: *

          *
        • createScopePanel()
        • *
        • saveScopeSettings()
        • *
        • showScopeSettings()
        • *
        *

        */ public abstract class AbstractScopedAssertion extends AbstractScopedTestElement { private static final long serialVersionUID = 240L; //+ JMX attributes - do not change private static final String SCOPE = "Assertion.scope"; //- JMX @Override protected String getScopeName() { return SCOPE; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/0000755000175000017500000000000012165514773024665 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/DoubleProperty.java0000644000175000017500000000575412032647220030505 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * @version $Revision: 1226919 $ */ public class DoubleProperty extends NumberProperty { private static final long serialVersionUID = 240L; private double value; private double savedValue; public DoubleProperty(String name, double value) { super(name); this.value = value; } public DoubleProperty() { } public void setValue(float value) { this.value = value; } /** * {@inheritDoc} */ @Override protected void setNumberValue(Number n) { value = n.doubleValue(); } /** * {@inheritDoc} */ @Override protected void setNumberValue(String n) throws NumberFormatException { value = Double.parseDouble(n); } /** * {@inheritDoc} */ public String getStringValue() { return Double.toString(value); } /** * {@inheritDoc} */ public Object getObjectValue() { return Double.valueOf(value); } /** * {@inheritDoc} */ @Override public DoubleProperty clone() { DoubleProperty prop = (DoubleProperty) super.clone(); prop.value = value; return prop; } /** * {@inheritDoc} */ @Override public boolean getBooleanValue() { return value > 0 ? true : false; } /** * {@inheritDoc} */ @Override public double getDoubleValue() { return value; } /** * {@inheritDoc} */ @Override public float getFloatValue() { return (float) value; } /** * {@inheritDoc} */ @Override public int getIntValue() { return (int) value; } /** * @see JMeterProperty#getLongValue() */ @Override public long getLongValue() { return (long) value; } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { savedValue = value; super.setRunningVersion(runningVersion); } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { value = savedValue; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/ObjectProperty.java0000644000175000017500000000457612032647220030502 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 16, 2004 */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; public class ObjectProperty extends AbstractProperty { private static final long serialVersionUID = 1; private Object value; private Object savedValue; /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { if (savedValue != null) { value = savedValue; } } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { super.setRunningVersion(runningVersion); if (runningVersion) { savedValue = value; } else { savedValue = null; } } /** * {@inheritDoc} */ @Override public ObjectProperty clone() { ObjectProperty p = (ObjectProperty) super.clone(); p.value = value; return p; } /** * */ public ObjectProperty() { super(); // TODO Auto-generated constructor stub } /** * @param name */ public ObjectProperty(String name) { super(name); } public ObjectProperty(String name, Object p) { super(name); value = p; } /** * {@inheritDoc} */ public String getStringValue() { return value.toString(); } /** * {@inheritDoc} */ public Object getObjectValue() { return value; } /** * {@inheritDoc} */ public void setObjectValue(Object value) { this.value = value; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/NullProperty.java0000644000175000017500000000572512032647220030203 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * A null property. * */ public final class NullProperty extends AbstractProperty { private static final long serialVersionUID = 240L; private JMeterProperty tempValue; // TODO - why does null property have a value? public NullProperty(String name) { super(name); } public NullProperty() { super(); } /** * @see JMeterProperty#getStringValue() */ public String getStringValue() { if (tempValue != null) { return tempValue.getStringValue(); } return ""; } public void setObjectValue(Object v) { // NOOP } /** * @see JMeterProperty#getObjectValue() */ public Object getObjectValue() { return null; } /** * @see JMeterProperty#isRunningVersion() */ @Override public boolean isRunningVersion() { return false; } /** * see JMeterProperty#isTemporary(TestElement) */ public boolean isTemporary(TestElement owner) { return true; } /** * @see JMeterProperty#mergeIn(JMeterProperty) */ @Override public void mergeIn(JMeterProperty prop) { tempValue = prop; } @Override public NullProperty clone() { return this; } /** * @see JMeterProperty#getBooleanValue() */ @Override public boolean getBooleanValue() { return false; } /** * @see JMeterProperty#getDoubleValue() */ @Override public double getDoubleValue() { return 0; } /** * @see JMeterProperty#getFloatValue() */ @Override public float getFloatValue() { return 0; } /** * @see JMeterProperty#getIntValue() */ @Override public int getIntValue() { return 0; } /** * @see JMeterProperty#getLongValue() */ @Override public long getLongValue() { return 0; } /** * @see JMeterProperty#recoverRunningVersion(TestElement) */ public void recoverRunningVersion(TestElement owner) { tempValue = null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/CollectionProperty.java0000644000175000017500000001255712032647220031365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.jmeter.testelement.TestElement; public class CollectionProperty extends MultiProperty { private static final long serialVersionUID = 221L; // Remember to change this when the class changes ... private Collection value; private transient Collection savedValue; public CollectionProperty(String name, Collection value) { super(name); this.value = normalizeList(value); } public CollectionProperty() { super(); value = new ArrayList(); } @Override public boolean equals(Object o) { if (o instanceof CollectionProperty) { if (value != null) { return value.equals(((JMeterProperty) o).getObjectValue()); } } return false; } @Override public int hashCode() { return (value == null ? 0 : value.hashCode()); } public void remove(String prop) { PropertyIterator iter = iterator(); while (iter.hasNext()) { if (iter.next().getName().equals(prop)) { iter.remove(); } } } public void set(int index, String prop) { if (value instanceof List) { ((List) value).set(index, new StringProperty(prop, prop)); } } public void set(int index, JMeterProperty prop) { if (value instanceof List) { ((List) value).set(index, prop); } } public JMeterProperty get(int row) { if (value instanceof List) { return ((List) value).get(row); } return null; } public void remove(int index) { if (value instanceof List) { ((List) value).remove(index); } } /** * {@inheritDoc} */ public void setObjectValue(Object v) { if (v instanceof Collection) { setCollection((Collection) v); } } /** * {@inheritDoc} */ @Override public PropertyIterator iterator() { return getIterator(value); } /** * {@inheritDoc} */ public String getStringValue() { return value.toString(); } /** * {@inheritDoc} */ public Object getObjectValue() { return value; } public int size() { return value.size(); } /** * {@inheritDoc} */ @Override public CollectionProperty clone() { CollectionProperty prop = (CollectionProperty) super.clone(); prop.value = cloneCollection(); return prop; } private Collection cloneCollection() { try { @SuppressWarnings("unchecked") // value is of type Collection Collection newCol = value.getClass().newInstance(); PropertyIterator iter = iterator(); while (iter.hasNext()) { newCol.add(iter.next().clone()); } return newCol; } catch (Exception e) { log.error("Couldn't clone collection", e); return value; } } public void setCollection(Collection coll) { value = normalizeList(coll); } /** * {@inheritDoc} */ @Override public void clear() { value.clear(); } /** * {@inheritDoc} */ @Override public void addProperty(JMeterProperty prop) { value.add(prop); } public void addItem(Object item) { addProperty(convertObject(item)); } /** * Figures out what kind of properties this collection is holding and * returns the class type. * * @see AbstractProperty#getPropertyType() */ @Override protected Class getPropertyType() { if (value != null && value.size() > 0) { return value.iterator().next().getClass(); } return NullProperty.class; } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { if (savedValue != null) { value = savedValue; } recoverRunningVersionOfSubElements(owner); } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean running) { super.setRunningVersion(running); if (running) { savedValue = value; } else { savedValue = null; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/LongProperty.java0000644000175000017500000000614012032647220030160 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * @version $Revision: 1188141 $ */ public class LongProperty extends NumberProperty { private static final long serialVersionUID = 240L; private long value; private long savedValue; public LongProperty(String name, long value) { super(name); this.value = value; } public LongProperty() { super(); } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { savedValue = value; super.setRunningVersion(runningVersion); } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { value = savedValue; } public void setValue(int value) { this.value = value; } /** * {@inheritDoc} */ @Override protected void setNumberValue(Number n) { value = n.longValue(); } /** * {@inheritDoc} */ @Override protected void setNumberValue(String n) throws NumberFormatException { value = Long.parseLong(n); } /** * @see JMeterProperty#getStringValue() */ public String getStringValue() { return Long.toString(value); } /** * @see JMeterProperty#getObjectValue() */ public Object getObjectValue() { return Long.valueOf(value); } /** * {@inheritDoc} */ @Override public LongProperty clone() { LongProperty prop = (LongProperty) super.clone(); prop.value = value; return prop; } /** * @see JMeterProperty#getBooleanValue() */ @Override public boolean getBooleanValue() { return getLongValue() > 0 ? true : false; } /** * @see JMeterProperty#getDoubleValue() */ @Override public double getDoubleValue() { return value; } /** * @see JMeterProperty#getFloatValue() */ @Override public float getFloatValue() { return value; } /** * @see JMeterProperty#getIntValue() */ @Override public int getIntValue() { return (int) value; } /** * @see JMeterProperty#getLongValue() */ @Override public long getLongValue() { return value; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/AbstractProperty.java0000644000175000017500000003116712032647220031033 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.testelement.property; import java.util.Collection; import java.util.Map; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public abstract class AbstractProperty implements JMeterProperty { private static final long serialVersionUID = 240L; //TODO consider using private logs for each derived class protected static final Logger log = LoggingManager.getLoggerForClass(); private String name; private transient boolean runningVersion = false; // private static StringProperty defaultProperty = new StringProperty(); public AbstractProperty(String name) { if (name == null) { throw new IllegalArgumentException("Name cannot be null"); } this.name = name; } public AbstractProperty() { this(""); } protected boolean isEqualType(JMeterProperty prop) { if (this.getClass().equals(prop.getClass())) { return true; } else { return false; } } /** {@inheritDoc} */ public boolean isRunningVersion() { return runningVersion; } /** {@inheritDoc} */ public String getName() { return name; } /** {@inheritDoc} */ public void setName(String name) { if (name == null) { throw new IllegalArgumentException("Name cannot be null"); } this.name = name; } /** {@inheritDoc} */ public void setRunningVersion(boolean runningVersion) { this.runningVersion = runningVersion; } protected PropertyIterator getIterator(Collection values) { return new PropertyIteratorImpl(values); } /** {@inheritDoc} */ @Override public AbstractProperty clone() { try { AbstractProperty prop = (AbstractProperty) super.clone(); prop.name = name; prop.runningVersion = runningVersion; return prop; } catch (CloneNotSupportedException e) { throw new AssertionError(e); // clone should never return null } } /** * Returns 0 if string is invalid or null. * * @see JMeterProperty#getIntValue() */ public int getIntValue() { String val = getStringValue(); if (val == null) { return 0; } try { return Integer.parseInt(val); } catch (NumberFormatException e) { return 0; } } /** * Returns 0 if string is invalid or null. * * @see JMeterProperty#getLongValue() */ public long getLongValue() { String val = getStringValue(); if (val == null) { return 0; } try { return Long.parseLong(val); } catch (NumberFormatException e) { return 0; } } /** * Returns 0 if string is invalid or null. * * @see JMeterProperty#getDoubleValue() */ public double getDoubleValue() { String val = getStringValue(); if (val == null) { return 0; } try { return Double.parseDouble(val); } catch (NumberFormatException e) { log.error("Tried to parse a non-number string to an integer", e); return 0; } } /** * Returns 0 if string is invalid or null. * * @see JMeterProperty#getFloatValue() */ public float getFloatValue() { String val = getStringValue(); if (val == null) { return 0; } try { return Float.parseFloat(val); } catch (NumberFormatException e) { log.error("Tried to parse a non-number string to an integer", e); return 0; } } /** * Returns false if string is invalid or null. * * @see JMeterProperty#getBooleanValue() */ public boolean getBooleanValue() { String val = getStringValue(); if (val == null) { return false; } return Boolean.parseBoolean(val); } /** * Determines if the two objects are equal by comparing names and values * * @return true if names are equal and values are equal (or both null) */ @Override public boolean equals(Object o) { if (!(o instanceof JMeterProperty)) { return false; } if (this == o) { return true; } JMeterProperty jpo = (JMeterProperty) o; if (!name.equals(jpo.getName())) { return false; } Object o1 = getObjectValue(); Object o2 = jpo.getObjectValue(); return o1 == null ? o2 == null : o1.equals(o2); } /** {@inheritDoc} */ @Override public int hashCode() { int result = 17; result = result * 37 + name.hashCode();// name cannot be null Object o = getObjectValue(); result = result * 37 + (o == null ? 0 : o.hashCode()); return result; } /** * Compares two JMeterProperty object values. N.B. Does not compare names * * @param arg0 * JMeterProperty to compare against * @return 0 if equal values or both values null; -1 otherwise * @see Comparable#compareTo(Object) */ public int compareTo(JMeterProperty arg0) { // We don't expect the string values to ever be null. But (as in // bug 19499) sometimes they are. So have null compare less than // any other value. Log a warning so we can try to find the root // cause of the null value. String val = getStringValue(); String val2 = arg0.getStringValue(); if (val == null) { log.warn("Warning: Unexpected null value for property: " + name); if (val2 == null) { // Two null values -- return equal return 0; } else { return -1; } } return val.compareTo(val2); } /** * Get the property type for this property. Used to convert raw values into * JMeterProperties. */ protected Class getPropertyType() { return getClass(); } protected JMeterProperty getBlankProperty() { try { JMeterProperty prop = getPropertyType().newInstance(); if (prop instanceof NullProperty) { return new StringProperty(); } return prop; } catch (Exception e) { return new StringProperty(); } } protected static JMeterProperty getBlankProperty(Object item) { if (item == null) { return new NullProperty(); } if (item instanceof String) { return new StringProperty("", item.toString()); } else if (item instanceof Boolean) { return new BooleanProperty("", ((Boolean) item).booleanValue()); } else if (item instanceof Float) { return new FloatProperty("", ((Float) item).floatValue()); } else if (item instanceof Double) { return new DoubleProperty("", ((Double) item).doubleValue()); } else if (item instanceof Integer) { return new IntegerProperty("", ((Integer) item).intValue()); } else if (item instanceof Long) { return new LongProperty("", ((Long) item).longValue()); } else if (item instanceof Long) { return new LongProperty("", ((Long) item).longValue()); } else { return new StringProperty("", item.toString()); } } /** * Convert a collection of objects into JMeterProperty objects. * * @param coll Collection of any type of object * @return Collection of JMeterProperty objects */ protected Collection normalizeList(Collection coll) { if (coll.isEmpty()) { @SuppressWarnings("unchecked") // empty collection, local var is here to allow SuppressWarnings Collection okColl = (Collection) coll; return okColl; } try { @SuppressWarnings("unchecked") // empty collection Collection newColl = coll.getClass().newInstance(); for (Object item : coll) { newColl.add(convertObject(item)); } return newColl; } catch (Exception e) {// should not happen log.error("Cannot create copy of "+coll.getClass().getName(),e); return null; } } /** * Given a Map, it converts the Map into a collection of JMeterProperty * objects, appropriate for a MapProperty object. */ protected Map normalizeMap(Map coll) { if (coll.isEmpty()) { @SuppressWarnings("unchecked")// empty collection ok to cast, local var is here to allow SuppressWarnings Map emptyColl = (Map) coll; return emptyColl; } try { @SuppressWarnings("unchecked") // empty collection Map newColl = coll.getClass().newInstance(); for (Map.Entry entry : ((Map)coll).entrySet()) { Object key = entry.getKey(); Object prop = entry.getValue(); String item=null; if (key instanceof String) { item = (String) key; } else { if (key != null) { log.error("Expected key type String, found: "+key.getClass().getName()); item = key.toString(); } } newColl.put(item, convertObject(prop)); } return newColl; } catch (Exception e) {// should not happen log.error("Cannot create copy of "+coll.getClass().getName(),e); return null; } } public static JMeterProperty createProperty(Object item) { JMeterProperty prop = makeProperty(item); if (prop == null) { prop = getBlankProperty(item); } return prop; } /** * Create a JMeterProperty from an object. * The object can be one of: *
          *
        • JMeterProperty - returned unchanged
        • *
        • TestElement => TestElementProperty with the same name
        • *
        • Map|Collection => Map|CollectionProperty with the name = item.hashCode
        • *
        * @param item object to be turned into a propery * @return the JMeterProperty */ protected static JMeterProperty makeProperty(Object item) { if (item instanceof JMeterProperty) { return (JMeterProperty) item; } if (item instanceof TestElement) { return new TestElementProperty(((TestElement) item).getName(), (TestElement) item); } if (item instanceof Collection) { return new CollectionProperty(Integer.toString(item.hashCode()), (Collection) item); } if (item instanceof Map) { return new MapProperty(Integer.toString(item.hashCode()), (Map) item); } return null; } protected JMeterProperty convertObject(Object item) { JMeterProperty prop = makeProperty(item); if (prop == null) { prop = getBlankProperty(); prop.setName(Integer.toString(item.hashCode())); prop.setObjectValue(item); } return prop; } /** * Provides the string representation of the property. * * @return the string value */ @Override public String toString() { // N.B. Other classes rely on this returning just the string. return getStringValue(); } /** {@inheritDoc} */ public void mergeIn(JMeterProperty prop) { // NOOP } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/MultiProperty.java0000644000175000017500000000556512032647220030365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * For JMeterProperties that hold multiple properties within, provides a simple * interface for retrieving a property iterator for the sub values. * * @version $Revision: 905027 $ */ public abstract class MultiProperty extends AbstractProperty { private static final long serialVersionUID = 240L; public MultiProperty() { super(); } public MultiProperty(String name) { super(name); } /** * Get the property iterator to iterate through the sub-values of this * JMeterProperty. * * @return an iterator for the sub-values of this property */ public abstract PropertyIterator iterator(); /** * Add a property to the collection. */ public abstract void addProperty(JMeterProperty prop); /** * Clear away all values in the property. */ public abstract void clear(); @Override public void setRunningVersion(boolean running) { super.setRunningVersion(running); PropertyIterator iter = iterator(); while (iter.hasNext()) { iter.next().setRunningVersion(running); } } protected void recoverRunningVersionOfSubElements(TestElement owner) { PropertyIterator iter = iterator(); while (iter.hasNext()) { JMeterProperty prop = iter.next(); if (owner.isTemporary(prop)) { iter.remove(); } else { prop.recoverRunningVersion(owner); } } } @Override public void mergeIn(JMeterProperty prop) { if (prop.getObjectValue() == getObjectValue()) { return; } log.debug("merging in " + prop.getClass()); if (prop instanceof MultiProperty) { PropertyIterator iter = ((MultiProperty) prop).iterator(); while (iter.hasNext()) { JMeterProperty item = iter.next(); addProperty(item); } } else { addProperty(prop); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/BooleanProperty.java0000644000175000017500000000447112032647220030645 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * @version $Revision: 1380048 $ */ public class BooleanProperty extends AbstractProperty { private static final long serialVersionUID = 233L; private boolean value; private transient boolean savedValue; public BooleanProperty(String name, boolean v) { super(name); value = v; } public BooleanProperty() { super(); } public void setObjectValue(Object v) { if (v instanceof Boolean) { value = ((Boolean) v).booleanValue(); } else { value = Boolean.parseBoolean(v.toString()); } } /** * {@inheritDoc} */ public String getStringValue() { return Boolean.toString(value); } /** * {@inheritDoc} */ public Object getObjectValue() { return Boolean.valueOf(value); } @Override public BooleanProperty clone() { BooleanProperty prop = (BooleanProperty) super.clone(); prop.value = value; return prop; } /** * {@inheritDoc} */ @Override public boolean getBooleanValue() { return value; } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { savedValue = value; super.setRunningVersion(runningVersion); } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { value = savedValue; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/PropertyIterator.java0000644000175000017500000000170212032647220031051 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; public interface PropertyIterator { boolean hasNext(); JMeterProperty next(); void remove(); } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/NumberProperty.java0000644000175000017500000000401112032647220030504 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 5, 2003 */ package org.apache.jmeter.testelement.property; public abstract class NumberProperty extends AbstractProperty { private static final long serialVersionUID = 240L; public NumberProperty() { super(); } public NumberProperty(String name) { super(name); } /** * Set the value of the property with a Number object. */ protected abstract void setNumberValue(Number n); /** * Set the value of the property with a String object. */ protected abstract void setNumberValue(String n) throws NumberFormatException; public void setObjectValue(Object v) { if (v instanceof Number) { setNumberValue((Number) v); } else { try { setNumberValue(v.toString()); } catch (RuntimeException e) { } } } /** * @see Comparable#compareTo(Object) */ @Override public int compareTo(JMeterProperty arg0) { double compareValue = getDoubleValue() - arg0.getDoubleValue(); if (compareValue < 0) { return -1; } else if (compareValue == 0) { return 0; } else { return 1; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/FloatProperty.java0000644000175000017500000000570112032647220030330 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * @version $Revision: 1226919 $ */ public class FloatProperty extends NumberProperty { private static final long serialVersionUID = 240L; private float value; private float savedValue; public FloatProperty(String name, float value) { super(name); this.value = value; } public FloatProperty() { } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { savedValue = value; super.setRunningVersion(runningVersion); } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { value = savedValue; } public void setValue(float value) { this.value = value; } /** * {@inheritDoc} */ @Override protected void setNumberValue(Number n) { value = n.floatValue(); } /** * {@inheritDoc} */ @Override protected void setNumberValue(String n) throws NumberFormatException { value = Float.parseFloat(n); } /** * {@inheritDoc} */ public String getStringValue() { return Float.toString(value); } /** * {@inheritDoc} */ public Object getObjectValue() { return Float.valueOf(value); } /** * {@inheritDoc} */ @Override public FloatProperty clone() { FloatProperty prop = (FloatProperty) super.clone(); prop.value = value; return prop; } /** * {@inheritDoc} */ @Override public boolean getBooleanValue() { return value > 0 ? true : false; } /** * {@inheritDoc} */ @Override public double getDoubleValue() { return value; } /** * {@inheritDoc} */ @Override public float getFloatValue() { return value; } /** * {@inheritDoc} */ @Override public int getIntValue() { return (int) value; } /** * {@inheritDoc} */ @Override public long getLongValue() { return (long) value; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/PropertyIteratorImpl.java0000644000175000017500000000257612032647220031705 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import java.util.Collection; import java.util.Iterator; public class PropertyIteratorImpl implements PropertyIterator { private final Iterator iter; public PropertyIteratorImpl(Collection value) { iter = value.iterator(); } /** {@inheritDoc} */ public boolean hasNext() { return iter.hasNext(); } /** {@inheritDoc} */ public JMeterProperty next() { return iter.next(); } /** {@inheritDoc} */ public void remove() { iter.remove(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/IntegerProperty.java0000644000175000017500000000626512032647220030666 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * @version $Revision: 1188141 $ */ public class IntegerProperty extends NumberProperty { private static final long serialVersionUID = 240L; private int value; private int savedValue; public IntegerProperty(String name, int value) { super(name); this.value = value; } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { savedValue = value; super.setRunningVersion(runningVersion); } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { value = savedValue; } public IntegerProperty(String name) { super(name); } public IntegerProperty() { super(); } public void setValue(int value) { this.value = value; } /** * {@inheritDoc} */ @Override protected void setNumberValue(Number n) { value = n.intValue(); } /** * {@inheritDoc} */ @Override protected void setNumberValue(String n) throws NumberFormatException { value = Integer.parseInt(n); } /** * @see JMeterProperty#getStringValue() */ public String getStringValue() { return Integer.toString(value); } /** * @see JMeterProperty#getObjectValue() */ public Object getObjectValue() { return Integer.valueOf(value); } /** * {@inheritDoc} */ @Override public IntegerProperty clone() { IntegerProperty prop = (IntegerProperty) super.clone(); prop.value = value; return prop; } /** * @see JMeterProperty#getBooleanValue() */ @Override public boolean getBooleanValue() { return getIntValue() > 0 ? true : false; } /** * @see JMeterProperty#getDoubleValue() */ @Override public double getDoubleValue() { return value; } /** * @see JMeterProperty#getFloatValue() */ @Override public float getFloatValue() { return value; } /** * @see JMeterProperty#getIntValue() */ @Override public int getIntValue() { return value; } /** * @see JMeterProperty#getLongValue() */ @Override public long getLongValue() { return value; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/MapProperty.java0000644000175000017500000001114112032647220027773 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import java.util.Map; import org.apache.jmeter.testelement.TestElement; public class MapProperty extends MultiProperty { private static final long serialVersionUID = 221L; // Remember to change this when the class changes ... private Map value; private transient Map savedValue = null; public MapProperty(String name, Map value) { super(name); log.info("map = " + value); this.value = normalizeMap(value); log.info("normalized map = " + this.value); } public MapProperty() { super(); } /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (o instanceof MapProperty) { if (value != null) { return value.equals(((JMeterProperty) o).getObjectValue()); } } return false; } @Override public int hashCode(){ int hash = super.hashCode(); if (value != null) { hash = hash*37 + value.hashCode(); } return hash; } /** {@inheritDoc} */ public void setObjectValue(Object v) { if (v instanceof Map) { setMap((Map) v); } } /** {@inheritDoc} */ @Override public void addProperty(JMeterProperty prop) { addProperty(prop.getName(), prop); } public JMeterProperty get(String key) { return value.get(key); } /** * Figures out what kind of properties this collection is holding and * returns the class type. * * @see AbstractProperty#getPropertyType() */ @Override protected Class getPropertyType() { if (value.size() > 0) { return valueIterator().next().getClass(); } return NullProperty.class; } /** {@inheritDoc} */ public String getStringValue() { return value.toString(); } /** {@inheritDoc} */ public Object getObjectValue() { return value; } /** {@inheritDoc} */ @Override public MapProperty clone() { MapProperty prop = (MapProperty) super.clone(); prop.value = cloneMap(); return prop; } private Map cloneMap() { try { @SuppressWarnings("unchecked") // value is the correct class Map newCol = value.getClass().newInstance(); PropertyIterator iter = valueIterator(); while (iter.hasNext()) { JMeterProperty item = iter.next(); newCol.put(item.getName(), item.clone()); } return newCol; } catch (Exception e) { log.error("Couldn't clone map", e); return value; } } public PropertyIterator valueIterator() { return getIterator(value.values()); } public void addProperty(String name, JMeterProperty prop) { if (!value.containsKey(name)) { value.put(name, prop); } } public void setMap(Map newMap) { value = normalizeMap(newMap); } /** {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { if (savedValue != null) { value = savedValue; } recoverRunningVersionOfSubElements(owner); } /** {@inheritDoc} */ @Override public void clear() { value.clear(); } /** {@inheritDoc} */ @Override public PropertyIterator iterator() { return valueIterator(); } /** {@inheritDoc} */ @Override public void setRunningVersion(boolean running) { super.setRunningVersion(running); if (running) { savedValue = value; } else { savedValue = null; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/TestElementProperty.java0000644000175000017500000000743612032647220031523 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; public class TestElementProperty extends MultiProperty { private static final long serialVersionUID = 233L; private TestElement value; private transient TestElement savedValue = null; public TestElementProperty(String name, TestElement value) { super(name); this.value = value; } public TestElementProperty() { super(); } /** * Determines if two test elements are equal. * * @return true if the value is not null and equals the other Objects value; * false otherwise (even if both values are null) */ @Override public boolean equals(Object o) { if (o instanceof TestElementProperty) { if (this == o) { return true; } if (value != null) { return value.equals(((JMeterProperty) o).getObjectValue()); } } return false; } @Override public int hashCode() { return value == null ? 0 : value.hashCode(); } /** * {@inheritDoc} */ public String getStringValue() { return value.toString(); } /** * {@inheritDoc} */ public void setObjectValue(Object v) { if (v instanceof TestElement) { value = (TestElement) v; } } /** * {@inheritDoc} */ public Object getObjectValue() { return value; } public TestElement getElement() { return value; } public void setElement(TestElement el) { value = el; } /** * {@inheritDoc} */ @Override public TestElementProperty clone() { TestElementProperty prop = (TestElementProperty) super.clone(); prop.value = (TestElement) value.clone(); return prop; } /** * {@inheritDoc} */ @Override public void mergeIn(JMeterProperty prop) { if (isEqualType(prop)) { value.addTestElement((TestElement) prop.getObjectValue()); } } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { if (savedValue != null) { value = savedValue; } value.recoverRunningVersion(); } /** * {@inheritDoc} */ @Override public void setRunningVersion(boolean runningVersion) { super.setRunningVersion(runningVersion); value.setRunningVersion(runningVersion); if (runningVersion) { savedValue = value; } else { savedValue = null; } } /** * {@inheritDoc} */ @Override public void addProperty(JMeterProperty prop) { value.setProperty(prop); } /** * {@inheritDoc} */ @Override public void clear() { value.clear(); } /** * {@inheritDoc} */ @Override public PropertyIterator iterator() { return value.propertyIterator(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/FunctionProperty.java0000644000175000017500000000756012032647220031055 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; /** * Class that implements the Function property */ public class FunctionProperty extends AbstractProperty { private static final long serialVersionUID = 233L; private transient CompoundVariable function; private int testIteration = -1; private String cacheValue; public FunctionProperty(String name, CompoundVariable func) { super(name); function = func; } public FunctionProperty() { super(); } public void setObjectValue(Object v) { if (v instanceof CompoundVariable && !isRunningVersion()) { function = (CompoundVariable) v; } else { cacheValue = v.toString(); } } @Override public boolean equals(Object o) { if (o instanceof FunctionProperty) { if (function != null) { return function.equals(((JMeterProperty) o).getObjectValue()); } } return false; } @Override public int hashCode(){ int hash = super.hashCode(); if (function != null) { hash = hash*37 + function.hashCode(); } return hash; } /** * Executes the function (and caches the value for the duration of the test * iteration) if the property is a running version. Otherwise, the raw * string representation of the function is provided. * * @see JMeterProperty#getStringValue() */ public String getStringValue() { JMeterContext ctx = JMeterContextService.getContext();// Expensive, so // do // once if (!isRunningVersion() /*|| !ctx.isSamplingStarted()*/) { log.debug("Not running version, return raw function string"); return function.getRawParameters(); } if(!ctx.isSamplingStarted()) { return function.execute(); } log.debug("Running version, executing function"); int iter = ctx.getVariables() != null ? ctx.getVariables().getIteration() : -1; if (iter < testIteration) { testIteration = -1; } if (iter > testIteration || cacheValue == null) { testIteration = iter; cacheValue = function.execute(); } return cacheValue; } /** * @see JMeterProperty#getObjectValue() */ public Object getObjectValue() { return function; } @Override public FunctionProperty clone() { FunctionProperty prop = (FunctionProperty) super.clone(); prop.cacheValue = cacheValue; prop.testIteration = testIteration; prop.function = function; return prop; } /** * @see JMeterProperty#recoverRunningVersion(TestElement) */ public void recoverRunningVersion(TestElement owner) { cacheValue = null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/StringProperty.java0000644000175000017500000000475512032647220030541 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import org.apache.jmeter.testelement.TestElement; /** * @version $Revision: 1188141 $ */ public class StringProperty extends AbstractProperty { private static final long serialVersionUID = 233L; private String value; private transient String savedValue; public StringProperty(String name, String value) { super(name); this.value = value; } public StringProperty() { super(); } /** * @see JMeterProperty#setRunningVersion(boolean) */ @Override public void setRunningVersion(boolean runningVersion) { super.setRunningVersion(runningVersion); if (runningVersion) { savedValue = value; } else { savedValue = null; } } /** * {@inheritDoc} */ public void setObjectValue(Object v) { value = v.toString(); } /** * @see JMeterProperty#getStringValue() */ public String getStringValue() { return value; } /** * @see JMeterProperty#getObjectValue() */ public Object getObjectValue() { return value; } /** * {@inheritDoc} */ @Override public StringProperty clone() { StringProperty prop = (StringProperty) super.clone(); prop.value = value; return prop; } /** * Sets the value. * * @param value * The value to set */ public void setValue(String value) { this.value = value; } /** * {@inheritDoc} */ public void recoverRunningVersion(TestElement owner) { if (savedValue != null) { value = savedValue; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/property/JMeterProperty.java0000644000175000017500000000545412032647220030456 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement.property; import java.io.Serializable; import org.apache.jmeter.testelement.TestElement; public interface JMeterProperty extends Serializable, Cloneable, Comparable { /** * Returns whether the property is a running version. * * @return boolean */ boolean isRunningVersion(); /** * The name of the property. Typically this should match the name that keys * the property's location in the test elements Map. * * @return String */ String getName(); /** * Set the property name. * * @param name */ void setName(String name); /** * Make the property a running version or turn it off as the running * version. A property that is made a running version will preserve the * current state in such a way that it is retrievable by a future call to * 'recoverRunningVersion()'. Additionally, a property that is a running * version will resolve all functions prior to returning it's property * value. A non-running version property will return functions as their * uncompiled string representation. * * @param runningVersion */ void setRunningVersion(boolean runningVersion); /** * Tell the property to revert to the state at the time * setRunningVersion(true) was called. */ void recoverRunningVersion(TestElement owner); /** * Take the given property object and merge it's value with the current * property object. For most property types, this will simply be ignored. * But for collection properties and test element properties, more complex * behavior is required. * * @param prop */ void mergeIn(JMeterProperty prop); int getIntValue(); long getLongValue(); double getDoubleValue(); float getFloatValue(); boolean getBooleanValue(); String getStringValue(); Object getObjectValue(); void setObjectValue(Object value); JMeterProperty clone(); } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestPlan.java0000644000175000017500000001733612032647220025373 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.IOException; import java.io.Serializable; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.NewDriver; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class TestPlan extends AbstractTestElement implements Serializable, TestStateListener { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); //+ JMX field names - do not change values private static final String FUNCTIONAL_MODE = "TestPlan.functional_mode"; //$NON-NLS-1$ private static final String USER_DEFINED_VARIABLES = "TestPlan.user_defined_variables"; //$NON-NLS-1$ private static final String SERIALIZE_THREADGROUPS = "TestPlan.serialize_threadgroups"; //$NON-NLS-1$ private static final String CLASSPATHS = "TestPlan.user_define_classpath"; //$NON-NLS-1$ private static final String TEARDOWN_ON_SHUTDOWN = "TestPlan.tearDown_on_shutdown"; //$NON-NLS-1$ //- JMX field names private static final String CLASSPATH_SEPARATOR = ","; //$NON-NLS-1$ private static final String BASEDIR = "basedir"; private transient List threadGroups = new LinkedList(); // There's only 1 test plan, so can cache the mode here private static volatile boolean functionalMode = false; public TestPlan() { // this("Test Plan"); // setFunctionalMode(false); // setSerialized(false); } public TestPlan(String name) { setName(name); // setFunctionalMode(false); // setSerialized(false); } // create transient item private Object readResolve(){ threadGroups = new LinkedList(); return this; } public void prepareForPreCompile() { getVariables().setRunningVersion(true); } /** * Fetches the functional mode property * * @return functional mode */ public boolean isFunctionalMode() { return getPropertyAsBoolean(FUNCTIONAL_MODE); } public void setUserDefinedVariables(Arguments vars) { setProperty(new TestElementProperty(USER_DEFINED_VARIABLES, vars)); } public JMeterProperty getUserDefinedVariablesAsProperty() { return getProperty(USER_DEFINED_VARIABLES); } public String getBasedir() { return getPropertyAsString(BASEDIR); } // Does not appear to be used yet public void setBasedir(String b) { setProperty(BASEDIR, b); } public Arguments getArguments() { return getVariables(); } public Map getUserDefinedVariables() { Arguments args = getVariables(); return args.getArgumentsAsMap(); } private Arguments getVariables() { Arguments args = (Arguments) getProperty(USER_DEFINED_VARIABLES).getObjectValue(); if (args == null) { args = new Arguments(); setUserDefinedVariables(args); } return args; } public void setFunctionalMode(boolean funcMode) { setProperty(new BooleanProperty(FUNCTIONAL_MODE, funcMode)); functionalMode = funcMode; } /** * Gets the static copy of the functional mode * * @return mode */ public static boolean getFunctionalMode() { return functionalMode; } public void setSerialized(boolean serializeTGs) { setProperty(new BooleanProperty(SERIALIZE_THREADGROUPS, serializeTGs)); } public void setTearDownOnShutdown(boolean tearDown) { setProperty(TEARDOWN_ON_SHUTDOWN, tearDown, false); } public boolean isTearDownOnShutdown() { return getPropertyAsBoolean(TEARDOWN_ON_SHUTDOWN, false); } /** * Set the classpath for the test plan * @param text */ public void setTestPlanClasspath(String text) { setProperty(CLASSPATHS,text); } public void setTestPlanClasspathArray(String[] text) { StringBuilder cat = new StringBuilder(); for (int idx=0; idx < text.length; idx++) { if (idx > 0) { cat.append(CLASSPATH_SEPARATOR); } cat.append(text[idx]); } this.setTestPlanClasspath(cat.toString()); } public String[] getTestPlanClasspathArray() { return JOrphanUtils.split(this.getTestPlanClasspath(),CLASSPATH_SEPARATOR); } /** * Returns the classpath * @return classpath */ public String getTestPlanClasspath() { return getPropertyAsString(CLASSPATHS); } /** * Fetch the serialize threadgroups property * * @return serialized setting */ public boolean isSerialized() { return getPropertyAsBoolean(SERIALIZE_THREADGROUPS); } public void addParameter(String name, String value) { getVariables().addArgument(name, value); } @Override public void addTestElement(TestElement tg) { super.addTestElement(tg); if (tg instanceof AbstractThreadGroup && !isRunningVersion()) { addThreadGroup((AbstractThreadGroup) tg); } } /** * Adds a feature to the AbstractThreadGroup attribute of the TestPlan object. * * @param group * the feature to be added to the AbstractThreadGroup attribute */ public void addThreadGroup(AbstractThreadGroup group) { threadGroups.add(group); } /** * {@inheritDoc} */ public void testEnded() { try { FileServer.getFileServer().closeFiles(); } catch (IOException e) { log.error("Problem closing files at end of test", e); } } /** * {@inheritDoc} */ public void testEnded(String host) { testEnded(); } /** * {@inheritDoc} */ public void testStarted() { if (getBasedir() != null && getBasedir().length() > 0) { try { FileServer.getFileServer().setBasedir(FileServer.getFileServer().getBaseDir() + getBasedir()); } catch (IllegalStateException e) { log.error("Failed to set file server base dir with " + getBasedir(), e); } } // we set the classpath String[] paths = this.getTestPlanClasspathArray(); for (int idx=0; idx < paths.length; idx++) { NewDriver.addURL(paths[idx]); log.info("add " + paths[idx] + " to classpath"); } } /** * {@inheritDoc} */ public void testStarted(String host) { testStarted(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/AbstractScopedTestElement.java0000644000175000017500000001206212032647220030703 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.util.ArrayList; import java.util.List; import org.apache.jmeter.samplers.SampleResult; /** *

        * Super-class for TestElements that can be applied to main sample, sub-samples or both. * [Assertions use a different class because they use a different value for the {@link #getScopeName()} constant] *

        * *

        * Their corresponding GUI classes need to add the ScopePanel to the GUI * using the AbstractXXXGui methods: *

          *
        • createScopePanel()
        • *
        • saveScopeSettings()
        • *
        • showScopeSettings()
        • *
        *

        */ public abstract class AbstractScopedTestElement extends AbstractTestElement { private static final long serialVersionUID = 240L; //+ JMX attributes - do not change private static final String SCOPE = "Sample.scope"; // $NON-NLS-1$ private static final String SCOPE_PARENT = "parent"; // $NON-NLS-1$ private static final String SCOPE_CHILDREN = "children"; // $NON-NLS-1$ private static final String SCOPE_ALL = "all"; // $NON-NLS-1$ private static final String SCOPE_VARIABLE = "variable"; // $NON-NLS-1$ private static final String SCOPE_VARIABLE_NAME = "Scope.variable"; // $NON-NLS-1$ //- JMX protected String getScopeName() { return SCOPE; } /** * Get the scope setting * @return the scope, default parent */ public String fetchScope() { return getPropertyAsString(getScopeName(), SCOPE_PARENT); } /** * Is the assertion to be applied to the main (parent) sample? * * @param scope * @return if the assertion is to be applied to the parent sample. */ public boolean isScopeParent(String scope) { return scope.equals(SCOPE_PARENT); } /** * Is the assertion to be applied to the sub-samples (children)? * * @param scope * @return if the assertion is to be applied to the children. */ public boolean isScopeChildren(String scope) { return scope.equals(SCOPE_CHILDREN); } /** * Is the assertion to be applied to the all samples? * * @param scope * @return if the assertion is to be applied to the all samples. */ public boolean isScopeAll(String scope) { return scope.equals(SCOPE_ALL); } /** * Is the assertion to be applied to the all samples? * * @param scope * @return if the assertion is to be applied to the all samples. */ public boolean isScopeVariable(String scope) { return scope.equals(SCOPE_VARIABLE); } /** * Is the assertion to be applied to the all samples? * * @return if the assertion is to be applied to the all samples. */ protected boolean isScopeVariable() { return isScopeVariable(fetchScope()); } public String getVariableName(){ return getPropertyAsString(SCOPE_VARIABLE_NAME, ""); } public void setScopeParent() { removeProperty(getScopeName()); } public void setScopeChildren() { setProperty(getScopeName(), SCOPE_CHILDREN); } public void setScopeAll() { setProperty(getScopeName(), SCOPE_ALL); } public void setScopeVariable(String variableName) { setProperty(getScopeName(), SCOPE_VARIABLE); setProperty(SCOPE_VARIABLE_NAME, variableName); } /** * Generate a list of qualifying sample results, * depending on the scope. * * @param result current sample * @return list containing the current sample and/or its child samples */ protected List getSampleList(SampleResult result) { List sampleList = new ArrayList(); String scope = fetchScope(); if (isScopeParent(scope) || isScopeAll(scope)) { sampleList.add(result); } if (isScopeChildren(scope) || isScopeAll(scope)) { for (SampleResult subResult : result.getSubResults()) { sampleList.add(subResult); } } return sampleList; } /** * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); result.add(getVariableName()); return result; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestStateListener.java0000644000175000017500000000536112032647220027262 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; /** * @since 2.8 */ public interface TestStateListener { /** *

        * Called just before the start of the test from the main engine thread. * * This is before the test elements are cloned. * * Note that not all the test * variables will have been set up at this point. *

        * *

        * * N.B. testStarted() and testEnded() are called from different threads. * *

        * @see org.apache.jmeter.engine.StandardJMeterEngine#run() * */ void testStarted(); /** *

        * Called just before the start of the test from the main engine thread. * * This is before the test elements are cloned. * * Note that not all the test * variables will have been set up at this point. *

        * *

        * * N.B. testStarted() and testEnded() are called from different threads. * *

        * @see org.apache.jmeter.engine.StandardJMeterEngine#run() * @param host name of host */ void testStarted(String host); /** *

        * Called once for all threads after the end of a test. * * This will use the same element instances as at the start of the test. *

        * *

        * * N.B. testStarted() and testEnded() are called from different threads. * *

        * @see org.apache.jmeter.engine.StandardJMeterEngine#stopTest() * */ void testEnded(); /** *

        * Called once for all threads after the end of a test. * * This will use the same element instances as at the start of the test. *

        * *

        * * N.B. testStarted() and testEnded() are called from different threads. * *

        * @see org.apache.jmeter.engine.StandardJMeterEngine#stopTest() * @param host name of host * */ void testEnded(String host); }apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/ThreadListener.java0000644000175000017500000000273312032647220026551 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; /** * Allow threads to perform startup and closedown if necessary * */ public interface ThreadListener { /** * Called for each thread before starting sampling. * WARNING: this is called before any Config test elements are processed, * so any properties they define will not have been merged in yet. * * @see org.apache.jmeter.threads.JMeterThread#threadStarted() * */ void threadStarted(); /** * Called for each thread after all samples have been processed. * * @see org.apache.jmeter.threads.JMeterThread#threadFinished(LoopIterationListener) * */ void threadFinished(); }apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestCloneable.java0000644000175000017500000000166512032647220026363 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 28, 2004 */ package org.apache.jmeter.testelement; public interface TestCloneable extends Cloneable { Object clone(); } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/OnErrorTestElement.java0000644000175000017500000000413012032647220027365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Dec 9, 2003 * */ package org.apache.jmeter.testelement; import org.apache.jmeter.testelement.property.IntegerProperty; /** * @version $Revision: 1380370 $ */ public abstract class OnErrorTestElement extends AbstractTestElement { private static final long serialVersionUID = 240L; /* Action to be taken when a Sampler error occurs */ public static final int ON_ERROR_CONTINUE = 0; public static final int ON_ERROR_STOPTHREAD = 1; public static final int ON_ERROR_STOPTEST = 2; public static final int ON_ERROR_STOPTEST_NOW = 3; /* Property name */ public static final String ON_ERROR_ACTION = "OnError.action"; protected OnErrorTestElement() { super(); } public void setErrorAction(int value) { setProperty(new IntegerProperty(ON_ERROR_ACTION, value)); } public int getErrorAction() { return getPropertyAsInt(ON_ERROR_ACTION); } public boolean isContinue() { return getErrorAction() == ON_ERROR_CONTINUE; } public boolean isStopThread() { return getErrorAction() == ON_ERROR_STOPTHREAD; } public boolean isStopTest() { return getErrorAction() == ON_ERROR_STOPTEST; } public boolean isStopTestNow() { return getErrorAction() == ON_ERROR_STOPTEST_NOW; } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/WorkBench.java0000644000175000017500000000215612032647220025515 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; public class WorkBench extends AbstractTestElement { private static final long serialVersionUID = 240L; /** * Constructor for the WorkBench object. */ public WorkBench(String name, boolean isRootNode) { setName(name); } public WorkBench() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/testelement/TestIterationListener.java0000644000175000017500000000244312032647220030136 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import org.apache.jmeter.engine.event.LoopIterationEvent; public interface TestIterationListener { /** * Each time through a Thread Group's test script, an iteration event is * fired for each thread. * * This will be after the test elements have been cloned, so in general * the instance will not be the same as the ones the start/end methods call. * * @param event */ void testIterationStart(LoopIterationEvent event); }apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/0000755000175000017500000000000012165514773022475 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/reporters/FileReporter.java0000644000175000017500000002672012032647220025734 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * This class loads data from a saved file and displays statistics about it. * * * @version $Revision: 1226919 $ */ public class FileReporter extends JPanel { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private final Map> data = new ConcurrentHashMap>(); /** initalize a file reporter from a file */ public void init(String file) throws IOException { File datafile = new File(file); BufferedReader reader = null; try { if (datafile.canRead()) { reader = new BufferedReader(new FileReader(datafile)); } else { JOptionPane.showMessageDialog(null, "The file you specified cannot be read.", "Information", JOptionPane.INFORMATION_MESSAGE); return; } String line; while ((line = reader.readLine()) != null) { try { line = line.trim(); if (line.startsWith("#") || line.length() == 0) { continue; } int splitter = line.lastIndexOf(' '); String key = line.substring(0, splitter); int len = line.length() - 1; Integer value = null; if (line.charAt(len) == ',') { value = Integer.valueOf(line.substring(splitter + 1, len)); } else { value = Integer.valueOf(line.substring(splitter + 1)); } List v = getData(key); if (v == null) { v = Collections.synchronizedList(new ArrayList()); this.data.put(key, v); } v.add(value); } catch (NumberFormatException nfe) { log.error("This line could not be parsed: " + line, nfe); } catch (Exception e) { log.error("This line caused a problem: " + line, e); } } } finally { JOrphanUtils.closeQuietly(reader); } showPanel(); } public List getData(String key) { return data.get(key); } /** * Show main panel with length, graph, and stats. */ public void showPanel() { JFrame f = new JFrame("Data File Report"); setLayout(new BorderLayout()); GraphPanel gp = new GraphPanel(data); add(gp, "Center"); add(gp.getStats(), BorderLayout.EAST); add(gp.getLegend(), BorderLayout.NORTH); f.setSize(500, 300); f.getContentPane().add(this); f.setVisible(true); } /** * Graph panel generates all the panels for this reporter. Data is organized * based on thread name in a hashtable. The data itself is a List of Integer * objects */ private static class GraphPanel extends JPanel { private static final long serialVersionUID = 240L; // boolean autoScale = true; private final Map> data; private final List keys = Collections.synchronizedList(new ArrayList()); private final List colorList = Collections.synchronizedList(new ArrayList()); public GraphPanel(Map> data) { this.data = data; for (String key : data.keySet()) { keys.add(key); } for (int a = 0x33; a < 0xFF; a += 0x66) { for (int b = 0x33; b < 0xFF; b += 0x66) { for (int c = 0x33; c < 0xFF; c += 0x66) { colorList.add(new Color(a, b, c)); } } } } /** * Get the maximum for all the data. */ public float getMax() { float maxValue = 0; for (int t = 0; t < keys.size(); t++) { String key = keys.get(t); List temp = data.get(key); for (int j = 0; j < temp.size(); j++) { float f = temp.get(j).intValue(); maxValue = Math.max(f, maxValue); } } return (float) (maxValue + maxValue * 0.1); } /** * Get the minimum for all the data. */ public float getMin() { float minValue = 9999999; for (int t = 0; t < keys.size(); t++) { String key = keys.get(t); List temp = data.get(key); for (int j = 0; j < temp.size(); j++) { float f = temp.get(j).intValue(); minValue = Math.min(f, minValue); } } return (float) (minValue - minValue * 0.1); } /** * Get the legend panel. */ public JPanel getLegend() { JPanel main = new JPanel(); GridBagLayout g = new GridBagLayout(); main.setLayout(g); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(3, 3, 3, 3); c.fill = GridBagConstraints.BOTH; c.gridwidth = 1; c.gridheight = 1; for (int t = 0; t < keys.size(); t++) { String key = keys.get(t); JLabel colorSwatch = new JLabel(" "); colorSwatch.setBackground(colorList.get(t % colorList.size())); colorSwatch.setOpaque(true); c.gridx = 1; c.gridy = t; g.setConstraints(colorSwatch, c); main.add(colorSwatch); JLabel name = new JLabel(key); c.gridx = 2; c.gridy = t; g.setConstraints(name, c); main.add(name); } return main; } /** * Get the stats panel. */ public JPanel getStats() { int total = 0; float totalValue = 0; float maxValue = 0; float minValue = 999999; for (int t = 0; t < keys.size(); t++) { String key = keys.get(t); List temp = data.get(key); for (int j = 0; j < temp.size(); j++) { float f = temp.get(j).intValue(); minValue = Math.min(f, minValue); maxValue = Math.max(f, maxValue); totalValue += f; total++; } } float averageValue = totalValue / total; JPanel main = new JPanel(); GridBagLayout g = new GridBagLayout(); main.setLayout(g); DecimalFormat df = new DecimalFormat("#0.0"); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(3, 6, 3, 6); c.fill = GridBagConstraints.BOTH; c.gridwidth = 1; c.gridheight = 1; JLabel count = new JLabel("Count: " + total); c.gridx = 1; c.gridy = 1; g.setConstraints(count, c); JLabel min = new JLabel("Min: " + df.format(Float.valueOf(minValue))); c.gridx = 1; c.gridy = 2; g.setConstraints(min, c); JLabel max = new JLabel("Max: " + df.format(Float.valueOf(maxValue))); c.gridx = 1; c.gridy = 3; g.setConstraints(max, c); JLabel average = new JLabel("Average: " + df.format(Float.valueOf(averageValue))); c.gridx = 1; c.gridy = 4; g.setConstraints(average, c); main.add(count); main.add(min); main.add(max); main.add(average); return main; } /** * Gets the size of the biggest List. */ public int getDataWidth() { int size = 0; for (int t = 0; t < keys.size(); t++) { String key = keys.get(t); size = Math.max(size, data.get(key).size()); } return size; } /** * Draws the graph. */ @Override public void update(Graphics g) { // setup drawing area int base = 10; g.setColor(Color.white); g.fillRect(0, 0, getSize().width, getSize().height); int width = getSize().width; int height = getSize().height; float maxValue = getMax(); float minValue = getMin(); // draw grid g.setColor(Color.gray); int dataWidth = getDataWidth(); int increment = Math.round((float)(width - 1) / (dataWidth - 1)); /* * for (int t = 0; t < dataWidth; t++) { g.drawLine(t * increment, 0, t * * increment, height); } */ int yIncrement = Math.round(((float) height - (1 + base)) / (10 - 1)); /* * for (int t = 0; t < 10; t++) { g.drawLine(0, height - t * yIncrement, * width, height - t * yIncrement); } */ // draw axis for (int t = 1; t < dataWidth; t += (dataWidth / 25 + 1)) { g.drawString((Integer.valueOf(t)).toString(), t * increment + 2, height - 2); } float incrementValue = (maxValue - minValue) / (10 - 1); for (int t = 0; t < 10; t++) { g.drawString(Integer.valueOf(Math.round(minValue + (t * incrementValue))).toString(), 2, height - t * yIncrement - 2 - base); } // draw data lines int start = 0; for (int t = 0; t < keys.size(); t++) { String key = keys.get(t); List v = data.get(key); start = 0; g.setColor(colorList.get(t % colorList.size())); for (int i = 0; i < v.size() - 1; i++) { float y1 = v.get(i).intValue(); float y2 = v.get(i + 1).intValue(); y1 = y1 - minValue; y2 = y2 - minValue; int Y1 = Math.round((height * y1) / (maxValue - minValue)); int Y2 = Math.round((height * y2) / (maxValue - minValue)); Y1 = height - Y1 - base; Y2 = height - Y2 - base; g.drawLine(start, Y1, start + increment, Y2); start += increment; } } } @Override public void paint(Graphics g) { update(g); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/ResultSaver.java0000644000175000017500000002171212032647220025605 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.Serializable; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Save Result responseData to a set of files * * * This is mainly intended for validation tests * */ // TODO - perhaps save other items such as headers? public class ResultSaver extends AbstractTestElement implements Serializable, SampleListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final Object LOCK = new Object(); // File name sequence number //@GuardedBy("LOCK") private static long sequenceNumber = 0; //@GuardedBy("LOCK") private static String timeStamp; private static final String TIMESTAMP_FORMAT = "yyyyMMdd-HHmm_"; // $NON-NLS-1$ //@GuardedBy("LOCK") private static int numberPadLength; //+ JMX property names; do not change public static final String FILENAME = "FileSaver.filename"; // $NON-NLS-1$ public static final String VARIABLE_NAME = "FileSaver.variablename"; // $NON-NLS-1$ public static final String ERRORS_ONLY = "FileSaver.errorsonly"; // $NON-NLS-1$ public static final String SUCCESS_ONLY = "FileSaver.successonly"; // $NON-NLS-1$ public static final String SKIP_AUTO_NUMBER = "FileSaver.skipautonumber"; // $NON-NLS-1$ public static final String SKIP_SUFFIX = "FileSaver.skipsuffix"; // $NON-NLS-1$ public static final String ADD_TIMESTAMP = "FileSaver.addTimstamp"; // $NON-NLS-1$ public static final String NUMBER_PAD_LENGTH = "FileSaver.numberPadLen"; // $NON-NLS-1$ //- JMX property names private synchronized long nextNumber() { return ++sequenceNumber; } /* * Constructor is initially called once for each occurrence in the test plan * For GUI, several more instances are created Then clear is called at start * of test Called several times during test startup The name will not * necessarily have been set at this point. */ public ResultSaver() { super(); // log.debug(Thread.currentThread().getName()); // System.out.println(">> "+me+" "+this.getName()+" // "+Thread.currentThread().getName()); } /* * Constructor for use during startup (intended for non-GUI use) @param name * of summariser */ public ResultSaver(String name) { this(); setName(name); } /* * This is called once for each occurrence in the test plan, before the * start of the test. The super.clear() method clears the name (and all * other properties), so it is called last. */ @Override public void clear() { synchronized(LOCK){ sequenceNumber = 0; // TODO is this the right thing to do? if (getAddTimeStamp()) { DateFormat format = new SimpleDateFormat(TIMESTAMP_FORMAT); timeStamp = format.format(new Date()); } else { timeStamp = ""; } numberPadLength=getNumberPadLen(); } super.clear(); } /** * Saves the sample result (and any sub results) in files * * @see org.apache.jmeter.samplers.SampleListener#sampleOccurred(org.apache.jmeter.samplers.SampleEvent) */ public void sampleOccurred(SampleEvent e) { processSample(e.getResult(), new Counter()); } /** * Recurse the whole (sub)result hierarchy. * * @param s Sample result * @param c sample counter */ private void processSample(SampleResult s, Counter c) { saveSample(s, c.num++); SampleResult[] sr = s.getSubResults(); for (int i = 0; i < sr.length; i++) { processSample(sr[i], c); } } /** * @param s SampleResult to save * @param num number to append to variable (if >0) */ private void saveSample(SampleResult s, int num) { // Should we save the sample? if (s.isSuccessful()){ if (getErrorsOnly()){ return; } } else { if (getSuccessOnly()){ return; } } String fileName = makeFileName(s.getContentType(), getSkipAutoNumber(), getSkipSuffix()); log.debug("Saving " + s.getSampleLabel() + " in " + fileName); s.setResultFileName(fileName);// Associate sample with file name String variable = getVariableName(); if (variable.length()>0){ if (num > 0) { StringBuilder sb = new StringBuilder(variable); sb.append(num); variable=sb.toString(); } JMeterContextService.getContext().getVariables().put(variable, fileName); } File out = new File(fileName); FileOutputStream pw = null; try { pw = new FileOutputStream(out); pw.write(s.getResponseData()); } catch (FileNotFoundException e1) { log.error("Error creating sample file for " + s.getSampleLabel(), e1); } catch (IOException e1) { log.error("Error saving sample " + s.getSampleLabel(), e1); } finally { JOrphanUtils.closeQuietly(pw); } } /** * @return fileName composed of fixed prefix, a number, and a suffix derived * from the contentType e.g. Content-Type: * text/html;charset=ISO-8859-1 */ private String makeFileName(String contentType, boolean skipAutoNumber, boolean skipSuffix) { StringBuilder sb = new StringBuilder(FileServer.resolveBaseRelativeName(getFilename())); sb.append(timeStamp); // may be the empty string if (!skipAutoNumber){ String number = Long.toString(nextNumber()); for(int i=number.length(); i < numberPadLength; i++) { sb.append('0'); } sb.append(number); } if (!skipSuffix){ sb.append('.'); if (contentType != null) { int i = contentType.indexOf('/'); // $NON-NLS-1$ if (i != -1) { int j = contentType.indexOf(';'); // $NON-NLS-1$ if (j != -1) { sb.append(contentType.substring(i + 1, j)); } else { sb.append(contentType.substring(i + 1)); } } else { sb.append("unknown"); } } else { sb.append("unknown"); } } return sb.toString(); } /** * {@inheritDoc} */ public void sampleStarted(SampleEvent e) { // not used } /** * {@inheritDoc} */ public void sampleStopped(SampleEvent e) { // not used } private String getFilename() { return getPropertyAsString(FILENAME); } private String getVariableName() { return getPropertyAsString(VARIABLE_NAME,""); // $NON-NLS-1$ } private boolean getErrorsOnly() { return getPropertyAsBoolean(ERRORS_ONLY); } private boolean getSkipAutoNumber() { return getPropertyAsBoolean(SKIP_AUTO_NUMBER); } private boolean getSkipSuffix() { return getPropertyAsBoolean(SKIP_SUFFIX); } private boolean getSuccessOnly() { return getPropertyAsBoolean(SUCCESS_ONLY); } private boolean getAddTimeStamp() { return getPropertyAsBoolean(ADD_TIMESTAMP); } private int getNumberPadLen() { return getPropertyAsInt(NUMBER_PAD_LENGTH, 0); } // Mutable int to keep track of sample count private static class Counter{ int num; } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/ResultCollectorHelper.java0000644000175000017500000000327012032647220027612 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.visualizers.Visualizer; /** * Helper class to allow TestResultWrapperConverter to send samples * directly to the visualiser if required. */ public class ResultCollectorHelper { private final Visualizer visualizer; private final boolean errorsOnly; private final boolean successOnly; public ResultCollectorHelper(ResultCollector resultCollector, Visualizer visualizer) { this.visualizer = visualizer; this.errorsOnly = resultCollector.isErrorLogging(); this.successOnly = resultCollector.isSuccessOnlyLogging(); } public void add(SampleResult sample){ if (ResultCollector.isSampleWanted(sample.isSuccessful(), errorsOnly, successOnly)){ visualizer.add(sample); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/AbstractListenerElement.java0000644000175000017500000000337512032647220030116 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.lang.ref.WeakReference; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.visualizers.Visualizer; /** * Base class for Listeners */ public abstract class AbstractListenerElement extends AbstractTestElement { private static final long serialVersionUID = 240L; // TODO should class implement SampleListener? private transient WeakReference listener; public AbstractListenerElement() { } protected final Visualizer getVisualizer() { if (listener == null){ // e.g. in non-GUI mode return null; } return listener.get(); } public void setListener(Visualizer vis) { listener = new WeakReference(vis); } @Override public Object clone() { AbstractListenerElement clone = (AbstractListenerElement) super.clone(); clone.listener=this.listener; return clone; } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/gui/0000755000175000017500000000000012165514773023261 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/reporters/gui/ResultSaverGui.java0000644000175000017500000001552512032647220027043 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters.gui; import java.awt.BorderLayout; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.reporters.ResultSaver; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractListenerGui; import org.apache.jorphan.gui.JLabeledTextField; /** * Create a ResultSaver test element, which saves the sample information in set * of files * */ public class ResultSaverGui extends AbstractListenerGui implements Clearable { private static final long serialVersionUID = 240L; private JTextField filename; private JTextField variableName; private JCheckBox errorsOnly; private JCheckBox successOnly; private JCheckBox skipAutoNumber; private JCheckBox skipSuffix; private JCheckBox addTimestamp; private JLabeledTextField numberPadLength; public ResultSaverGui() { super(); init(); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#getStaticLabel() */ public String getLabelResource() { return "resultsaver_title"; // $NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); filename.setText(el.getPropertyAsString(ResultSaver.FILENAME)); errorsOnly.setSelected(el.getPropertyAsBoolean(ResultSaver.ERRORS_ONLY)); successOnly.setSelected(el.getPropertyAsBoolean(ResultSaver.SUCCESS_ONLY)); skipAutoNumber.setSelected(el.getPropertyAsBoolean(ResultSaver.SKIP_AUTO_NUMBER)); skipSuffix.setSelected(el.getPropertyAsBoolean(ResultSaver.SKIP_SUFFIX)); variableName.setText(el.getPropertyAsString(ResultSaver.VARIABLE_NAME,"")); addTimestamp.setSelected(el.getPropertyAsBoolean(ResultSaver.ADD_TIMESTAMP)); numberPadLength.setText(el.getPropertyAsString(ResultSaver.NUMBER_PAD_LENGTH,"")); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { ResultSaver resultSaver = new ResultSaver(); modifyTestElement(resultSaver); return resultSaver; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement te) { super.configureTestElement(te); te.setProperty(ResultSaver.FILENAME, filename.getText()); te.setProperty(ResultSaver.ERRORS_ONLY, errorsOnly.isSelected()); te.setProperty(ResultSaver.SKIP_AUTO_NUMBER, skipAutoNumber.isSelected()); te.setProperty(ResultSaver.SKIP_SUFFIX, skipSuffix.isSelected()); te.setProperty(ResultSaver.SUCCESS_ONLY, successOnly.isSelected()); te.setProperty(ResultSaver.ADD_TIMESTAMP, addTimestamp.isSelected(), false); AbstractTestElement at = (AbstractTestElement) te; at.setProperty(ResultSaver.VARIABLE_NAME, variableName.getText(),""); //$NON-NLS-1$ at.setProperty(ResultSaver.NUMBER_PAD_LENGTH, numberPadLength.getText(),""); //$NON-NLS-1$ } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); skipAutoNumber.setSelected(false); skipSuffix.setSelected(false); filename.setText(""); //$NON-NLS-1$ errorsOnly.setSelected(false); successOnly.setSelected(false); addTimestamp.setSelected(false); variableName.setText(""); //$NON-NLS-1$ numberPadLength.setText(""); //$NON-NLS-1$ } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createFilenamePrefixPanel()); box.add(createVariableNamePanel()); errorsOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_errors")); // $NON-NLS-1$ box.add(errorsOnly); successOnly = new JCheckBox(JMeterUtils.getResString("resultsaver_success")); // $NON-NLS-1$ box.add(successOnly); skipAutoNumber = new JCheckBox(JMeterUtils.getResString("resultsaver_skipautonumber")); // $NON-NLS-1$ box.add(skipAutoNumber); skipSuffix = new JCheckBox(JMeterUtils.getResString("resultsaver_skipsuffix")); // $NON-NLS-1$ box.add(skipSuffix); addTimestamp = new JCheckBox(JMeterUtils.getResString("resultsaver_addtimestamp")); // $NON-NLS-1$ box.add(addTimestamp); numberPadLength = new JLabeledTextField(JMeterUtils.getResString("resultsaver_numberpadlen"));// $NON-NLS-1$ box.add(numberPadLength); add(box, BorderLayout.NORTH); } private JPanel createFilenamePrefixPanel() { JLabel label = new JLabel(JMeterUtils.getResString("resultsaver_prefix")); // $NON-NLS-1$ filename = new JTextField(10); filename.setName(ResultSaver.FILENAME); label.setLabelFor(filename); JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); filenamePanel.add(label, BorderLayout.WEST); filenamePanel.add(filename, BorderLayout.CENTER); return filenamePanel; } private JPanel createVariableNamePanel() { JLabel label = new JLabel(JMeterUtils.getResString("resultsaver_variable")); // $NON-NLS-1$ variableName = new JTextField(10); variableName.setName(ResultSaver.VARIABLE_NAME); label.setLabelFor(variableName); JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); filenamePanel.add(label, BorderLayout.WEST); filenamePanel.add(variableName, BorderLayout.CENTER); return filenamePanel; } // Needed to avoid Class cast error in Clear.java public void clearData() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/gui/ResultActionGui.java0000644000175000017500000000571612032647220027201 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters.gui; import java.awt.BorderLayout; import javax.swing.Box; import org.apache.jmeter.reporters.ResultAction; import org.apache.jmeter.gui.OnErrorPanel; import org.apache.jmeter.processor.gui.AbstractPostProcessorGui; import org.apache.jmeter.testelement.OnErrorTestElement; import org.apache.jmeter.testelement.TestElement; /** * Create a Result Action Test Element * */ public class ResultActionGui extends AbstractPostProcessorGui { private static final long serialVersionUID = 240L; private OnErrorPanel errorPanel; public ResultActionGui() { super(); init(); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#getStaticLabel() */ public String getLabelResource() { return "resultaction_title"; //$NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); errorPanel.configure(((OnErrorTestElement) el).getErrorAction()); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { ResultAction resultAction = new ResultAction(); modifyTestElement(resultAction); return resultAction; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement te) { super.configureTestElement(te); ((OnErrorTestElement) te).setErrorAction(errorPanel.getOnErrorSetting()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); errorPanel.configure(OnErrorTestElement.ON_ERROR_CONTINUE); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); errorPanel = new OnErrorPanel(); box.add(errorPanel); add(box, BorderLayout.NORTH); } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/gui/SummariserGui.java0000644000175000017500000000420012032647220026677 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters.gui; import java.awt.BorderLayout; import org.apache.jmeter.reporters.Summariser; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.visualizers.gui.AbstractListenerGui; /** * Create a summariser test element GUI. * */ public class SummariserGui extends AbstractListenerGui { private static final long serialVersionUID = 240L; public SummariserGui() { super(); init(); } public String getLabelResource() { return "summariser_title"; //$NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { Summariser summariser = new Summariser(); modifyTestElement(summariser); return summariser; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement summariser) { super.configureTestElement(summariser); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } } apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/Summariser.java0000644000175000017500000003237712032647220025466 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.io.Serializable; import java.text.DecimalFormat; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.samplers.Remoteable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterContextService.ThreadCounts; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.RunningSample; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Generate a summary of the test run so far to the log file and/or standard * output. Both running and differential totals are shown. Output is generated * every n seconds (default 3 minutes) on the appropriate time boundary, so that * multiple test runs on the same time will be synchronised. * * This is mainly intended for batch (non-GUI) runs * * Note that the RunningSample start and end times relate to the samples, * not the reporting interval. * * Since the first sample in a delta is likely to have started in the previous reporting interval, * this means that the delta interval is likely to be longer than the reporting interval. * * Also, the sum of the delta intervals will be larger than the overall elapsed time. * * Data is accumulated according to the test element name. * */ public class Summariser extends AbstractTestElement implements Serializable, SampleListener, TestStateListener, NoThreadClone, Remoteable { /* * N.B. NoThreadClone is used to ensure that the testStarted() methods will share the same * instance as the sampleOccured() methods, so the testStarted() method can fetch the * Totals accumulator object for the samples to be stored in. */ private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); /** interval between summaries (in seconds) default 3 minutes */ private static final long INTERVAL = JMeterUtils.getPropDefault("summariser.interval", 3 * 60); //$NON-NLS-1$ /** Write messages to log file ? */ private static final boolean TOLOG = JMeterUtils.getPropDefault("summariser.log", true); //$NON-NLS-1$ /** Write messages to System.out ? */ private static final boolean TOOUT = JMeterUtils.getPropDefault("summariser.out", true); //$NON-NLS-1$ /* * Ensure that a report is not skipped if we are slightly late in checking * the time. */ private static final int INTERVAL_WINDOW = 5; // in seconds /** * Lock used to protect accumulators update + instanceCount update */ private static final Object lock = new Object(); /* * This map allows summarisers with the same name to contribute to the same totals. */ //@GuardedBy("accumulators") - needed to ensure consistency between this and instanceCount private static final Map accumulators = new ConcurrentHashMap(); //@GuardedBy("accumulators") private static int instanceCount; // number of active tests /* * Cached copy of Totals for this instance. * The variables do not need to be synchronised, * as they are not shared between threads * However the contents do need to be synchronized. */ //@GuardedBy("myTotals") private transient Totals myTotals = null; // Name of the accumulator. Set up by testStarted(). private transient String myName; /* * Constructor is initially called once for each occurrence in the test plan. * For GUI, several more instances are created. * Then clear is called at start of test. * Called several times during test startup. * The name will not necessarily have been set at this point. */ public Summariser() { super(); synchronized (lock) { accumulators.clear(); instanceCount=0; } } /** * Constructor for use during startup (intended for non-GUI use) * * @param name of summariser */ public Summariser(String name) { this(); setName(name); } /* * Contains the items needed to collect stats for a summariser * */ private static class Totals { /** Time of last summary (to prevent double reporting) */ private long last = 0; private final RunningSample delta = new RunningSample("DELTA",0); private final RunningSample total = new RunningSample("TOTAL",0); /** * Add the delta values to the total values and clear the delta */ private void moveDelta() { total.addSample(delta); delta.clear(); } } /** * Accumulates the sample in two SampleResult objects - one for running * totals, and the other for deltas. * * @see org.apache.jmeter.samplers.SampleListener#sampleOccurred(org.apache.jmeter.samplers.SampleEvent) */ public void sampleOccurred(SampleEvent e) { SampleResult s = e.getResult(); long now = System.currentTimeMillis() / 1000;// in seconds RunningSample myDelta = null; RunningSample myTotal = null; boolean reportNow = false; /* * Have we reached the reporting boundary? * Need to allow for a margin of error, otherwise can miss the slot. * Also need to check we've not hit the window already */ synchronized (myTotals) { if (s != null) { myTotals.delta.addSample(s); } if ((now > myTotals.last + INTERVAL_WINDOW) && (now % INTERVAL <= INTERVAL_WINDOW)) { reportNow = true; // copy the data to minimise the synch time myDelta = new RunningSample(myTotals.delta); myTotals.moveDelta(); myTotal = new RunningSample(myTotals.total); myTotals.last = now; // stop double-reporting } } if (reportNow) { String str; str = format(myName, myDelta, "+"); if (TOLOG) { log.info(str); } if (TOOUT) { System.out.println(str); } // Only if we have updated them if (myTotal != null && myDelta != null &&myTotal.getNumSamples() != myDelta.getNumSamples()) { str = format(myName, myTotal, "="); if (TOLOG) { log.info(str); } if (TOOUT) { System.out.println(str); } } } } private static StringBuilder longToSb(StringBuilder sb, long l, int len) { sb.setLength(0); sb.append(l); return JOrphanUtils.rightAlign(sb, len); } private static StringBuilder doubleToSb(DecimalFormat dfDouble, StringBuilder sb, double d, int len, int frac) { sb.setLength(0); dfDouble.setMinimumFractionDigits(frac); dfDouble.setMaximumFractionDigits(frac); sb.append(dfDouble.format(d)); return JOrphanUtils.rightAlign(sb, len); } /** * @param myTotal * @param string * @return */ private static String format(String name, RunningSample s, String type) { DecimalFormat dfDouble = new DecimalFormat("#0.0"); // $NON-NLS-1$ StringBuilder tmp = new StringBuilder(20); // for intermediate use StringBuilder sb = new StringBuilder(100); // output line buffer sb.append(name); sb.append(" "); sb.append(type); sb.append(" "); sb.append(longToSb(tmp, s.getNumSamples(), 6)); sb.append(" in "); long elapsed = s.getElapsed(); long elapsedSec = (elapsed + 500) / 1000; // rounded seconds if (elapsedSec > 100 // No point displaying decimals (less than 1% error) || (elapsed - elapsedSec * 1000) < 50 // decimal would be zero ) { sb.append(longToSb(tmp, elapsedSec, 5)); } else { double elapsedSecf = elapsed / 1000.0d; // fractional seconds sb.append(doubleToSb(dfDouble, tmp, elapsedSecf, 5, 1)); // This will round } sb.append("s = "); if (elapsed > 0) { sb.append(doubleToSb(dfDouble, tmp, s.getRate(), 6, 1)); } else { sb.append("******");// Rate is effectively infinite } sb.append("/s Avg: "); sb.append(longToSb(tmp, s.getAverage(), 5)); sb.append(" Min: "); sb.append(longToSb(tmp, s.getMin(), 5)); sb.append(" Max: "); sb.append(longToSb(tmp, s.getMax(), 5)); sb.append(" Err: "); sb.append(longToSb(tmp, s.getErrorCount(), 5)); sb.append(" ("); sb.append(s.getErrorPercentageString()); sb.append(")"); if ("+".equals(type)) { ThreadCounts tc = JMeterContextService.getThreadCounts(); sb.append(" Active: "); sb.append(tc.activeThreads); sb.append(" Started: "); sb.append(tc.startedThreads); sb.append(" Finished: "); sb.append(tc.finishedThreads); } return sb.toString(); } /** {@inheritDoc} */ public void sampleStarted(SampleEvent e) { // not used } /** {@inheritDoc} */ public void sampleStopped(SampleEvent e) { // not used } /* * The testStarted/testEnded methods are called at the start and end of a test. * * However, when a test is run on multiple nodes, there is no guarantee that all the * testStarted() methods will be called before all the threadStart() or sampleOccurred() * methods for other threads - nor that testEnded() will only be called after all * sampleOccurred() calls. The ordering is only guaranteed within a single test. * */ /** {@inheritDoc} */ public void testStarted() { testStarted("local"); } /** {@inheritDoc} */ public void testEnded() { testEnded("local"); } /** * Called once for each Summariser in the test plan. * There may be more than one summariser with the same name, * however they will all be called before the test proper starts. *

        * However, note that this applies to a single test only. * When running in client-server mode, testStarted() may be * invoked after sampleOccurred(). *

        * {@inheritDoc} */ public void testStarted(String host) { synchronized (lock) { myName = getName(); myTotals = accumulators.get(myName); if (myTotals == null){ myTotals = new Totals(); accumulators.put(myName, myTotals); } instanceCount++; } } /** * Called from a different thread as testStarted() but using the same instance. * So synch is needed to fetch the accumulator, and the myName field will already be set up. *

        * {@inheritDoc} */ public void testEnded(String host) { Set> totals = null; synchronized (lock) { instanceCount--; if (instanceCount <= 0){ totals = accumulators.entrySet(); } } if (totals == null) {// We're not done yet return; } for(Map.Entry entry : totals){ String str; String name = entry.getKey(); Totals total = entry.getValue(); // Only print final delta if there were some samples in the delta // and there has been at least one sample reported previously if (total.delta.getNumSamples() > 0 && total.total.getNumSamples() > 0) { str = format(name, total.delta, "+"); if (TOLOG) { log.info(str); } if (TOOUT) { System.out.println(str); } } total.moveDelta(); str = format(name, total.total, "="); if (TOLOG) { log.info(str); } if (TOOUT) { System.out.println(str); } } } }apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/ResultCollector.java0000644000175000017500000005275412032647220026465 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.Remoteable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.save.OldSaveService; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.ObjectProperty; import org.apache.jmeter.visualizers.Visualizer; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.xml.sax.SAXException; import com.thoughtworks.xstream.converters.ConversionException; /** * This class handles all saving of samples. * The class must be thread-safe because it is shared between threads (NoThreadClone). */ public class ResultCollector extends AbstractListenerElement implements SampleListener, Clearable, Serializable, TestStateListener, Remoteable, NoThreadClone { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 233L; // This string is used to identify local test runs, so must not be a valid host name private static final String TEST_IS_LOCAL = "*local*"; // $NON-NLS-1$ private static final String TESTRESULTS_START = ""; // $NON-NLS-1$ private static final String TESTRESULTS_START_V1_1_PREVER = ""; // $NON-NLS-1$ private static final String TESTRESULTS_END = ""; // $NON-NLS-1$ private static final String XML_HEADER = ""; // $NON-NLS-1$ private static final int MIN_XML_FILE_LEN = XML_HEADER.length() + TESTRESULTS_START.length() + TESTRESULTS_END.length(); public static final String FILENAME = "filename"; // $NON-NLS-1$ private static final String SAVE_CONFIG = "saveConfig"; // $NON-NLS-1$ private static final String ERROR_LOGGING = "ResultCollector.error_logging"; // $NON-NLS-1$ private static final String SUCCESS_ONLY_LOGGING = "ResultCollector.success_only_logging"; // $NON-NLS-1$ // Static variables // Lock used to guard static mutable variables private static final Object LOCK = new Object(); //@GuardedBy("LOCK") private static final Map files = new HashMap(); /* * Keep track of the file writer and the configuration, * as the instance used to close them is not the same as the instance that creates * them. This means one cannot use the saved PrintWriter or use getSaveConfig() */ private static class FileEntry{ final PrintWriter pw; final SampleSaveConfiguration config; FileEntry(PrintWriter _pw, SampleSaveConfiguration _config){ pw =_pw; config = _config; } } /** * The instance count is used to keep track of whether any tests are currently running. * It's not possible to use the constructor or threadStarted etc as tests may overlap * e.g. a remote test may be started, * and then a local test started whilst the remote test is still running. */ //@GuardedBy("LOCK") private static int instanceCount; // Keep track of how many instances are active // Instance variables (guarded by volatile) private transient volatile PrintWriter out; private volatile boolean inTest = false; private volatile boolean isStats = false; /** the summarizer to which this result collector will forward the samples */ private volatile Summariser summariser; /** * No-arg constructor. */ public ResultCollector() { this(null); } public ResultCollector(Summariser summer) { setErrorLogging(false); setSuccessOnlyLogging(false); setProperty(new ObjectProperty(SAVE_CONFIG, new SampleSaveConfiguration())); summariser = summer; } // Ensure that the sample save config is not shared between copied nodes // N.B. clone only seems to be used for client-server tests @Override public Object clone(){ ResultCollector clone = (ResultCollector) super.clone(); clone.setSaveConfig((SampleSaveConfiguration)clone.getSaveConfig().clone()); // Unfortunately AbstractTestElement does not call super.clone() clone.summariser = this.summariser; return clone; } private void setFilenameProperty(String f) { setProperty(FILENAME, f); } public String getFilename() { return getPropertyAsString(FILENAME); } public boolean isErrorLogging() { return getPropertyAsBoolean(ERROR_LOGGING); } public final void setErrorLogging(boolean errorLogging) { setProperty(new BooleanProperty(ERROR_LOGGING, errorLogging)); } public final void setSuccessOnlyLogging(boolean value) { if (value) { setProperty(new BooleanProperty(SUCCESS_ONLY_LOGGING, true)); } else { removeProperty(SUCCESS_ONLY_LOGGING); } } public boolean isSuccessOnlyLogging() { return getPropertyAsBoolean(SUCCESS_ONLY_LOGGING,false); } /** * Decides whether or not to a sample is wanted based on:
        * - errorOnly
        * - successOnly
        * - sample success
        * Should only be called for single samples. * * @param success is sample successful * @return whether to log/display the sample */ public boolean isSampleWanted(boolean success){ boolean errorOnly = isErrorLogging(); boolean successOnly = isSuccessOnlyLogging(); return isSampleWanted(success, errorOnly, successOnly); } /** * Decides whether or not to a sample is wanted based on:
        * - errorOnly
        * - successOnly
        * - sample success
        * This version is intended to be called by code that loops over many samples; * it is cheaper than fetching the settings each time. * @param success status of sample * @param errorOnly if errors only wanted * @param successOnly if success only wanted * @return whether to log/display the sample */ public static boolean isSampleWanted(boolean success, boolean errorOnly, boolean successOnly) { return (!errorOnly && !successOnly) || (success && successOnly) || (!success && errorOnly); // successOnly and errorOnly cannot both be set } /** * Sets the filename attribute of the ResultCollector object. * * @param f * the new filename value */ public void setFilename(String f) { if (inTest) { return; } setFilenameProperty(f); } public void testEnded(String host) { synchronized(LOCK){ instanceCount--; if (instanceCount <= 0) { finalizeFileOutput(); inTest = false; } } if(summariser != null) { summariser.testEnded(host); } } public void testStarted(String host) { synchronized(LOCK){ instanceCount++; try { initializeFileOutput(); if (getVisualizer() != null) { this.isStats = getVisualizer().isStats(); } } catch (Exception e) { log.error("", e); } } inTest = true; if(summariser != null) { summariser.testStarted(host); } } public void testEnded() { testEnded(TEST_IS_LOCAL); } public void testStarted() { testStarted(TEST_IS_LOCAL); } /** * Loads an existing sample data (JTL) file. * This can be one of: * - XStream format * - Avalon format * - CSV format * */ public void loadExistingFile() { final Visualizer visualizer = getVisualizer(); if (visualizer == null) { return; // No point reading the file if there's no visualiser } boolean parsedOK = false; String filename = getFilename(); File file = new File(filename); if (file.exists()) { BufferedReader dataReader = null; BufferedInputStream bufferedInputStream = null; try { dataReader = new BufferedReader(new FileReader(file)); // TODO Charset ? // Get the first line, and see if it is XML String line = dataReader.readLine(); dataReader.close(); dataReader = null; if (line == null) { log.warn(filename+" is empty"); } else { if (!line.startsWith(" 0) { writer.println(pi); } // Can't do it as a static initialisation, because SaveService // is being constructed when this is called writer.print(TESTRESULTS_START_V1_1_PREVER); writer.print(SaveService.getVERSION()); writer.print(TESTRESULTS_START_V1_1_POSTVER); // Write the EOL separately so we generate LF line ends on Unix and Windows writer.print("\n"); // $NON-NLS-1$ } else if (saveConfig.saveFieldNames()) { writer.println(CSVSaveService.printableFieldNamesToString(saveConfig)); } } private static void writeFileEnd(PrintWriter pw, SampleSaveConfiguration saveConfig) { if (saveConfig.saveAsXml()) { pw.print("\n"); // $NON-NLS-1$ pw.print(TESTRESULTS_END); pw.print("\n");// Added in version 1.1 // $NON-NLS-1$ } } private static PrintWriter getFileWriter(String filename, SampleSaveConfiguration saveConfig) throws IOException { if (filename == null || filename.length() == 0) { return null; } filename = FileServer.resolveBaseRelativeName(filename); FileEntry fe = files.get(filename); PrintWriter writer = null; boolean trimmed = true; if (fe == null) { if (saveConfig.saveAsXml()) { trimmed = trimLastLine(filename); } else { trimmed = new File(filename).exists(); } // Find the name of the directory containing the file // and create it - if there is one File pdir = new File(filename).getParentFile(); if (pdir != null) { // returns false if directory already exists, so need to check again if(pdir.mkdirs()){ log.info("Folder "+pdir.getAbsolutePath()+" was created"); } // else if might have been created by another process so not a problem if (!pdir.exists()){ log.warn("Error creating directories for "+pdir.toString()); } } writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(filename, trimmed)), SaveService.getFileEncoding("UTF-8")), true); // $NON-NLS-1$ log.debug("Opened file: "+filename); files.put(filename, new FileEntry(writer, saveConfig)); } else { writer = fe.pw; } if (!trimmed) { writeFileStart(writer, saveConfig); } return writer; } // returns false if the file did not contain the terminator private static boolean trimLastLine(String filename) { RandomAccessFile raf = null; try { raf = new RandomAccessFile(filename, "rw"); // $NON-NLS-1$ long len = raf.length(); if (len < MIN_XML_FILE_LEN) { return false; } raf.seek(len - TESTRESULTS_END.length() - 10);// TODO: may not work on all OSes? String line; long pos = raf.getFilePointer(); int end = 0; while ((line = raf.readLine()) != null)// reads to end of line OR end of file { end = line.indexOf(TESTRESULTS_END); if (end >= 0) // found the string { break; } pos = raf.getFilePointer(); } if (line == null) { log.warn("Unexpected EOF trying to find XML end marker in " + filename); raf.close(); return false; } raf.setLength(pos + end);// Truncate the file raf.close(); raf = null; } catch (FileNotFoundException e) { return false; } catch (IOException e) { log.warn("Error trying to find XML terminator " + e.toString()); return false; } finally { try { if (raf != null) { raf.close(); } } catch (IOException e1) { log.info("Could not close " + filename + " " + e1.getLocalizedMessage()); } } return true; } public void sampleStarted(SampleEvent e) { } public void sampleStopped(SampleEvent e) { } /** * When a test result is received, display it and save it. * * @param event * the sample event that was received */ public void sampleOccurred(SampleEvent event) { SampleResult result = event.getResult(); if (isSampleWanted(result.isSuccessful())) { sendToVisualizer(result); if (out != null && !isResultMarked(result) && !this.isStats) { SampleSaveConfiguration config = getSaveConfig(); result.setSaveConfig(config); try { if (config.saveAsXml()) { SaveService.saveSampleResult(event, out); } else { // !saveAsXml String savee = CSVSaveService.resultToDelimitedString(event); out.println(savee); } } catch (Exception err) { log.error("Error trying to record a sample", err); // should throw exception back to caller } } } if(summariser != null) { summariser.sampleOccurred(event); } } protected final void sendToVisualizer(SampleResult r) { if (getVisualizer() != null) { getVisualizer().add(r); } } /** * recordStats is used to save statistics generated by visualizers * * @param e * @throws Exception */ // Used by: MonitorHealthVisualizer.add(SampleResult res) public void recordStats(TestElement e) throws Exception { if (out != null) { SaveService.saveTestElement(e, out); } } /** * Checks if the sample result is marked or not, and marks it * @param res - the sample result to check * @return true if the result was marked */ private boolean isResultMarked(SampleResult res) { String filename = getFilename(); return res.markFile(filename); } private void initializeFileOutput() throws IOException { String filename = getFilename(); if (filename != null) { if (out == null) { try { out = getFileWriter(filename, getSaveConfig()); } catch (FileNotFoundException e) { out = null; } } } } private void finalizeFileOutput() { for(Map.Entry me : files.entrySet()){ log.debug("Closing: "+me.getKey()); FileEntry fe = me.getValue(); writeFileEnd(fe.pw, fe.config); fe.pw.close(); if (fe.pw.checkError()){ log.warn("Problem detected during use of "+me.getKey()); } } files.clear(); } /** * @return Returns the saveConfig. */ public SampleSaveConfiguration getSaveConfig() { try { return (SampleSaveConfiguration) getProperty(SAVE_CONFIG).getObjectValue(); } catch (ClassCastException e) { setSaveConfig(new SampleSaveConfiguration()); return getSaveConfig(); } } /** * @param saveConfig * The saveConfig to set. */ public void setSaveConfig(SampleSaveConfiguration saveConfig) { getProperty(SAVE_CONFIG).setObjectValue(saveConfig); } // This is required so that // @see org.apache.jmeter.gui.tree.JMeterTreeModel.getNodesOfType() // can find the Clearable nodes - the userObject has to implement the interface. public void clearData() { } }apache-jmeter-2.8/src/core/org/apache/jmeter/reporters/ResultAction.java0000644000175000017500000000544712032647220025751 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.io.Serializable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.OnErrorTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * ResultAction - take action based on the status of the last Result * */ public class ResultAction extends OnErrorTestElement implements Serializable, SampleListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); /* * Constructor is initially called once for each occurrence in the test plan * For GUI, several more instances are created Then clear is called at start * of test Called several times during test startup The name will not * necessarily have been set at this point. */ public ResultAction() { super(); // log.debug(Thread.currentThread().getName()); // System.out.println(">> "+me+" "+this.getName()+" // "+Thread.currentThread().getName()); } /** * Examine the sample(s) and take appropriate action * * @see org.apache.jmeter.samplers.SampleListener#sampleOccurred(org.apache.jmeter.samplers.SampleEvent) */ public void sampleOccurred(SampleEvent e) { SampleResult s = e.getResult(); log.debug(s.getSampleLabel() + " OK? " + s.isSuccessful()); if (!s.isSuccessful()) { if (isStopTestNow()) { s.setStopTestNow(true); } if (isStopTest()) { s.setStopTest(true); } if (isStopThread()) { s.setStopThread(true); } } } /** * {@inheritDoc} */ public void sampleStarted(SampleEvent e) { // not used } /** * {@inheritDoc} */ public void sampleStopped(SampleEvent e) { // not used } } apache-jmeter-2.8/src/core/org/apache/jmeter/resources/0000755000175000017500000000000012165514773022462 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages.properties0000644000175000017500000014173512032647221026406 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Warning: JMeterUtils.getResString() replaces space with '_' # and converts keys to lowercase before lookup # => All keys in this file must also be lower case or they won't match # # Please add new entries in alphabetical order about=About Apache JMeter add=Add add_from_clipboard=Add from Clipboard add_as_child=Add as Child add_parameter=Add Variable add_pattern=Add Pattern\: add_test=Add Test add_user=Add User add_value=Add Value addtest=Add test aggregate_graph=Statistical Graphs aggregate_graph_choose_color=Choose color aggregate_graph_choose_foreground_color=Foreground color aggregate_graph_color_bar=Color\: aggregate_graph_column=Column\: aggregate_graph_column_selection=Column label selection\: aggregate_graph_column_settings=Column settings aggregate_graph_columns_to_display=Columns to display\: aggregate_graph_dimension=Graph size aggregate_graph_display=Display Graph aggregate_graph_draw_outlines=Draw outlines bar? aggregate_graph_dynamic_size=Dynamic graph size aggregate_graph_font=Font\: aggregate_graph_height=Height\: aggregate_graph_legend=Legend aggregate_graph_legend.placement.bottom=Bottom aggregate_graph_legend.placement.left=Left aggregate_graph_legend.placement.right=Right aggregate_graph_legend.placement.top=Top aggregate_graph_legend_placement=Placement\: aggregate_graph_max_length_xaxis_label=Max length of x-axis label\: aggregate_graph_ms=Milliseconds aggregate_graph_no_values_to_graph=No values to graph aggregate_graph_number_grouping=Show number grouping? aggregate_graph_response_time=Response Time aggregate_graph_save=Save Graph aggregate_graph_save_table=Save Table Data aggregate_graph_save_table_header=Save Table Header aggregate_graph_size=Size\: aggregate_graph_style=Style\: aggregate_graph_sync_with_name=Synchronize with name aggregate_graph_tab_graph=Graph aggregate_graph_tab_settings=Settings aggregate_graph_title=Aggregate Graph aggregate_graph_title_group=Title aggregate_graph_use_group_name=Include group name in label? aggregate_graph_user_title=Graph title\: aggregate_graph_value_font=Value font\: aggregate_graph_value_labels_vertical=Value labels vertical? aggregate_graph_width=Width\: aggregate_graph_xaxis_group=X Axis aggregate_graph_yaxis_group=Y Axis aggregate_graph_yaxis_max_value=Scale maximum value\: aggregate_report=Aggregate Report aggregate_report_90=90% aggregate_report_90%_line=90% Line aggregate_report_bandwidth=KB/sec aggregate_report_count=# Samples aggregate_report_error=Error aggregate_report_error%=Error % aggregate_report_max=Max aggregate_report_median=Median aggregate_report_min=Min aggregate_report_rate=Throughput aggregate_report_stddev=Std. Dev. aggregate_report_total_label=TOTAL ajp_sampler_title=AJP/1.3 Sampler als_message=Note\: The Access Log Parser is generic in design and allows you to plugin als_message2=your own parser. To do so, implement the LogParser, add the jar to the als_message3=/lib directory and enter the class in the sampler. analyze=Analyze Data File... anchor_modifier_title=HTML Link Parser appearance=Look and Feel argument_must_not_be_negative=The Argument must not be negative\! arguments_panel_title=Command parameters assertion_assume_success=Ignore Status assertion_body_resp=Response Body assertion_code_resp=Response Code assertion_contains=Contains assertion_equals=Equals assertion_headers=Response Headers assertion_matches=Matches assertion_message_resp=Response Message assertion_network_size=Full Response assertion_not=Not assertion_pattern_match_rules=Pattern Matching Rules assertion_patterns_to_test=Patterns to Test assertion_resp_field=Response Field to Test assertion_resp_size_field=Response Size Field to Test assertion_substring=Substring assertion_text_resp=Text Response assertion_textarea_label=Assertions\: assertion_title=Response Assertion assertion_url_samp=URL Sampled assertion_visualizer_title=Assertion Results attribute=Attribute attrs=Attributes auth_base_url=Base URL auth_manager_title=HTTP Authorization Manager auths_stored=Authorizations Stored in the Authorization Manager average=Average average_bytes=Avg. Bytes bind=Thread Bind bouncy_castle_unavailable_message=The jars for bouncy castle are unavailable, please add them to your classpath. browse=Browse... bsf_sampler_title=BSF Sampler bsf_script=Script to run (variables: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) bsf_script_file=Script file to run bsf_script_language=Scripting language\: bsf_script_parameters=Parameters to pass to script/file\: bsh_assertion_script=Script (see below for variables that are defined) bsh_assertion_script_variables=The following variables are defined for the script:\nRead/Write: Failure, FailureMessage, SampleResult, vars, props, log.\nReadOnly: Response[Data|Code|Message|Headers], RequestHeaders, SampleLabel, SamplerData, ctx bsh_assertion_title=BeanShell Assertion bsh_function_expression=Expression to evaluate bsh_sampler_title=BeanShell Sampler bsh_script=Script (see below for variables that are defined) bsh_script_file=Script file bsh_script_parameters=Parameters (-> String Parameters and String []bsh.args) bsh_script_reset_interpreter=Reset bsh.Interpreter before each call bsh_script_variables=The following variables are defined for the script\:\nSampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log busy_testing=I'm busy testing, please stop the test before changing settings cache_manager_size=Max Number of elements in cache cache_manager_title=HTTP Cache Manager cache_session_id=Cache Session Id? cancel=Cancel cancel_exit_to_save=There are test items that have not been saved. Do you wish to save before exiting? cancel_new_to_save=There are test items that have not been saved. Do you wish to save before clearing the test plan? cancel_revert_project=There are test items that have not been saved. Do you wish to revert to the previously saved test plan? change_parent=Change Controller char_value=Unicode character number (decimal or 0xhex) check_return_code_title=Check Return Code choose_function=Choose a function choose_language=Choose Language clear=Clear clear_all=Clear All clear_cache_per_iter=Clear cache each iteration? clear_cookies_per_iter=Clear cookies each iteration? close=Close column_delete_disallowed=Deleting this column is not permitted column_number=Column number of CSV file | next | *alias command_config_box_title=Command to Execute command_config_std_streams_title=Standard streams (files) command_field_title=Command: compare=Compare comparefilt=Compare filter comparison_differ_content=Responses differ in content comparison_differ_time=Responses differ in response time by more than comparison_invalid_node=Invalid Node comparison_regex_string=Regex String comparison_regex_substitution=Substitution comparison_response_time=Response Time: comparison_unit=\ ms comparison_visualizer_title=Comparison Assertion Visualizer config_element=Config Element config_save_settings=Configure configure_wsdl=Configure confirm=Confirm constant_throughput_timer_memo=Add a delay between sampling to attain constant throughput constant_timer_delay=Thread Delay (in milliseconds)\: constant_timer_memo=Add a constant delay between sampling constant_timer_title=Constant Timer content_encoding=Content encoding\: controller=Controller cookie_implementation_choose=Implementation: cookie_manager_policy=Cookie Policy: cookie_manager_title=HTTP Cookie Manager cookie_options=Options cookies_stored=User-Defined Cookies copy=Copy counter_config_title=Counter counter_per_user=Track counter independently for each user counter_reset_per_tg_iteration=Reset counter on each Thread Group Iteration countlim=Size limit csvread_file_file_name=CSV file to get values from | *alias cut=Cut cut_paste_function=Copy and paste function string database_conn_pool_max_usage=Max Usage For Each Connection\: database_conn_pool_props=Database Connection Pool database_conn_pool_size=Number of Connections in Pool\: database_conn_pool_title=JDBC Database Connection Pool Defaults database_driver_class=Driver Class\: database_login_title=JDBC Database Login Defaults database_sql_query_string=SQL Query String\: database_sql_query_title=JDBC SQL Query Defaults database_testing_title=JDBC Request database_url=JDBC URL\: database_url_jdbc_props=Database URL and JDBC Driver ddn=DN de=German debug_off=Disable debug debug_on=Enable debug default_parameters=Default Parameters default_value_field=Default Value\: delay=Startup delay (seconds) delayed_start=Delay Thread creation until needed delete=Delete delete_parameter=Delete Variable delete_test=Delete Test delete_user=Delete User deltest=Deletion test deref=Dereference aliases description=Description detail=Detail directory_field_title=Working directory: disable=Disable distribution_graph_title=Distribution Graph (alpha) distribution_note1=The graph will update every 10 samples dn=DN domain=Domain done=Done down=Down duplicate=Duplicate duration=Duration (seconds) duration_assertion_duration_test=Duration to Assert duration_assertion_failure=The operation lasted too long\: It took {0} milliseconds, but should not have lasted longer than {1} milliseconds. duration_assertion_input_error=Please enter a valid positive integer. duration_assertion_label=Duration in milliseconds\: duration_assertion_title=Duration Assertion edit=Edit email_results_title=Email Results en=English enable=Enable encode?=Encode? encoded_value=URL Encoded Value endtime=End Time entry_dn=Entry DN entrydn=Entry DN environment_panel_title=Environment Variables error_indicator_tooltip=Show the number of errors in log, click to open Log Viewer panel error_loading_help=Error loading help page error_occurred=Error Occurred error_title=Error es=Spanish escape_html_string=String to escape eval_name_param=Text containing variable and function references evalvar_name_param=Name of variable example_data=Sample Data example_title=Example Sampler exit=Exit expected_return_code_title=Expected Return Code: expiration=Expiration field_name=Field name file=File file_already_in_use=That file is already in use file_visualizer_append=Append to Existing Data File file_visualizer_auto_flush=Automatically Flush After Each Data Sample file_visualizer_browse=Browse... file_visualizer_close=Close file_visualizer_file_options=File Options file_visualizer_filename=Filename file_visualizer_flush=Flush file_visualizer_missing_filename=No output filename specified. file_visualizer_open=Open file_visualizer_output_file=Write results to file / Read from file file_visualizer_submit_data=Include Submitted Data file_visualizer_title=File Reporter file_visualizer_verbose=Verbose Output filename=File Name follow_redirects=Follow Redirects follow_redirects_auto=Redirect Automatically font.sansserif=Sans Serif font.serif=Serif fontstyle.bold=Bold fontstyle.italic=Italic fontstyle.normal=Normal foreach_controller_title=ForEach Controller foreach_input=Input variable prefix foreach_output=Output variable name foreach_use_separator=Add "_" before number ? format=Number format fr=French ftp_binary_mode=Use Binary mode ? ftp_get=get(RETR) ftp_local_file=Local File: ftp_local_file_contents=Local File Contents: ftp_put=put(STOR) ftp_remote_file=Remote File: ftp_sample_title=FTP Request Defaults ftp_save_response_data=Save File in Response ? ftp_testing_title=FTP Request function_dialog_menu_item=Function Helper Dialog function_helper_title=Function Helper function_name_param=Name of variable in which to store the result (required) function_name_paropt=Name of variable in which to store the result (optional) function_params=Function Parameters functional_mode=Functional Test Mode (i.e. save Response Data and Sampler Data) functional_mode_explanation=Selecting Functional Test Mode may adversely affect performance. gaussian_timer_delay=Constant Delay Offset (in milliseconds)\: gaussian_timer_memo=Adds a random delay with a gaussian distribution gaussian_timer_range=Deviation (in milliseconds)\: gaussian_timer_title=Gaussian Random Timer generate=Generate generator=Name of Generator class generator_cnf_msg=Could not find the generator class. Please make sure you place your jar file in the /lib directory. generator_illegal_msg=Could not access the generator class due to IllegalAccessException. generator_instantiate_msg=Could not create an instance of the generator parser. Please make sure the generator implements Generator interface. get_xml_from_file=File with SOAP XML Data (overrides above text) get_xml_from_random=Message(s) Folder graph_apply_filter=Apply filter graph_choose_graphs=Graphs to Display graph_full_results_title=Graph Full Results graph_pointshape_circle=Circle graph_pointshape_diamond=Diamond graph_pointshape_square=Square graph_pointshape_triangle=Triangle graph_pointshape_none=None graph_resp_time_interval_label=Interval (ms): graph_resp_time_interval_reload=Apply interval graph_resp_time_not_enough_data=Unable to graph, not enough data graph_resp_time_series_selection=Sampler label selection: graph_resp_time_settings_line=Line settings graph_resp_time_settings_pane=Graph settings graph_resp_time_shape_label=Shape point: graph_resp_time_stroke_width=Stroke width: graph_resp_time_title=Response Time Graph graph_resp_time_title_label=Graph title: graph_resp_time_xaxis_time_format=Time format (SimpleDateFormat): graph_results_average=Average graph_results_data=Data graph_results_deviation=Deviation graph_results_latest_sample=Latest Sample graph_results_median=Median graph_results_ms=ms graph_results_no_samples=No of Samples graph_results_throughput=Throughput graph_results_title=Graph Results grouping_add_separators=Add separators between groups grouping_in_controllers=Put each group in a new controller grouping_in_transaction_controllers=Put each group in a new transaction controller grouping_mode=Grouping\: grouping_no_groups=Do not group samplers grouping_store_first_only=Store 1st sampler of each group only header_manager_title=HTTP Header Manager headers_stored=Headers Stored in the Header Manager heap_dump=Create a heap dump help=Help help_node=What's this node? html_assertion_file=Write JTidy report to file html_assertion_label=HTML Assertion html_assertion_title=HTML Assertion html_parameter_mask=HTML Parameter Mask http_implementation=Implementation: http_response_code=HTTP response code http_url_rewriting_modifier_title=HTTP URL Re-writing Modifier http_user_parameter_modifier=HTTP User Parameter Modifier httpmirror_title=HTTP Mirror Server httpmirror_settings=Settings httpmirror_max_pool_size=Max number of Threads: httpmirror_max_queue_size=Max queue size: id_prefix=ID Prefix id_suffix=ID Suffix if_controller_evaluate_all=Evaluate for all children? if_controller_expression=Interpret Condition as Variable Expression? if_controller_label=Condition (default Javascript) if_controller_title=If Controller ignore_subcontrollers=Ignore sub-controller blocks include_controller=Include Controller include_equals=Include Equals? include_path=Include Test Plan increment=Increment infinite=Forever initial_context_factory=Initial Context Factory insert_after=Insert After insert_before=Insert Before insert_parent=Insert Parent interleave_control_title=Interleave Controller intsum_param_1=First int to add. intsum_param_2=Second int to add - further ints can be summed by adding further arguments. invalid_data=Invalid data invalid_mail=Error occurred sending the e-mail invalid_mail_address=One or more invalid e-mail addresses detected invalid_mail_server=Problem contacting the e-mail server (see JMeter log file) invalid_variables=Invalid variables iteration_counter_arg_1=TRUE, for each user to have own counter, FALSE for a global counter iterator_num=Loop Count\: ja=Japanese jar_file=Jar Files java_request=Java Request java_request_defaults=Java Request Defaults javascript_expression=JavaScript expression to evaluate jexl_expression=JEXL expression to evaluate jms_auth_required=Required jms_client_caption=Receiver client uses MessageConsumer.receive() to listen for message. jms_client_caption2=MessageListener uses onMessage(Message) interface to listen for new messages. jms_client_id=Client ID jms_client_type=Client jms_communication_style=Communication style jms_concrete_connection_factory=Concrete Connection Factory jms_config=Message source jms_config_title=JMS Configuration jms_connection_factory=Connection Factory jms_correlation_title=Use alternate fields for message correlation jms_dest_setup=Setup jms_dest_setup_dynamic=Each sample jms_dest_setup_static=At startup jms_durable_subscription_id=Durable Subscription ID jms_file=File jms_initial_context_factory=Initial Context Factory jms_itertions=Number of samples to aggregate jms_jndi_defaults_title=JNDI Default Configuration jms_jndi_props=JNDI Properties jms_map_message=Map Message jms_message_title=Message properties jms_message_type=Message Type jms_msg_content=Content jms_object_message=Object Message jms_point_to_point=JMS Point-to-Point jms_props=JMS Properties jms_provider_url=Provider URL jms_publisher=JMS Publisher jms_pwd=Password jms_queue=Queue jms_queue_connection_factory=QueueConnection Factory jms_queueing=JMS Resources jms_random_file=Random File jms_read_response=Read Response jms_receive_queue=JNDI name Receive queue jms_request=Request Only jms_requestreply=Request Response jms_sample_title=JMS Default Request jms_selector=JMS Selector jms_send_queue=JNDI name Request queue jms_separator=Separator jms_stop_between_samples=Stop between samples? jms_subscriber_on_message=Use MessageListener.onMessage() jms_subscriber_receive=Use MessageConsumer.receive() jms_subscriber_title=JMS Subscriber jms_testing_title=Messaging Request jms_text_message=Text Message or Object Message serialized to XML by XStream jms_timeout=Timeout (milliseconds) jms_topic=Destination jms_use_auth=Use Authorization? jms_use_file=From file jms_use_non_persistent_delivery=Use non-persistent delivery mode? jms_use_properties_file=Use jndi.properties file jms_use_random_file=Random File jms_use_req_msgid_as_correlid=Use Request Message Id jms_use_res_msgid_as_correlid=Use Response Message Id jms_use_text=Textarea jms_user=User jndi_config_title=JNDI Configuration jndi_lookup_name=Remote Interface jndi_lookup_title=JNDI Lookup Configuration jndi_method_button_invoke=Invoke jndi_method_button_reflect=Reflect jndi_method_home_name=Home Method Name jndi_method_home_parms=Home Method Parameters jndi_method_name=Method Configuration jndi_method_remote_interface_list=Remote Interfaces jndi_method_remote_name=Remote Method Name jndi_method_remote_parms=Remote Method Parameters jndi_method_title=Remote Method Configuration jndi_testing_title=JNDI Request jndi_url_jndi_props=JNDI Properties junit_append_error=Append assertion errors junit_append_exception=Append runtime exceptions junit_constructor_error=Unable to create an instance of the class junit_constructor_string=Constructor String Label junit_create_instance_per_sample=Create a new instance per sample junit_do_setup_teardown=Do not call setUp and tearDown junit_error_code=Error Code junit_error_default_code=9999 junit_error_default_msg=An unexpected error occured junit_error_msg=Error Message junit_failure_code=Failure Code junit_failure_default_code=0001 junit_failure_default_msg=Test failed junit_failure_msg=Failure Message junit_junit4=Search for JUnit 4 annotations (instead of JUnit 3) junit_pkg_filter=Package Filter junit_request=JUnit Request junit_request_defaults=JUnit Request Defaults junit_success_code=Success Code junit_success_default_code=1000 junit_success_default_msg=Test successful junit_success_msg=Success Message junit_test_config=JUnit Test Parameters junit_test_method=Test Method ldap_argument_list=LDAPArgument List ldap_connto=Connection timeout (in milliseconds) ldap_parse_results=Parse the search results ? ldap_sample_title=LDAP Request Defaults ldap_search_baseobject=Perform baseobject search ldap_search_onelevel=Perform onelevel search ldap_search_subtree=Perform subtree search ldap_secure=Use Secure LDAP Protocol ? ldap_testing_title=LDAP Request ldapext_sample_title=LDAP Extended Request Defaults ldapext_testing_title=LDAP Extended Request library=Library load=Load load_wsdl=Load WSDL log_errors_only=Errors log_file=Location of log File log_function_comment=Additional comment (optional) log_function_level=Log level (default INFO) or OUT or ERR log_function_string=String to be logged log_function_string_ret=String to be logged (and returned) log_function_throwable=Throwable text (optional) log_only=Log/Display Only: log_parser=Name of Log Parser class log_parser_cnf_msg=Could not find the class. Please make sure you place your jar file in the /lib directory. log_parser_illegal_msg=Could not access the class due to IllegalAccessException. log_parser_instantiate_msg=Could not create an instance of the log parser. Please make sure the parser implements LogParser interface. log_sampler=Tomcat Access Log Sampler log_success_only=Successes logic_controller_title=Simple Controller login_config=Login Configuration login_config_element=Login Config Element longsum_param_1=First long to add longsum_param_2=Second long to add - further longs can be summed by adding further arguments. loop_controller_title=Loop Controller looping_control=Looping Control lower_bound=Lower Bound mail_reader_account=Username: mail_reader_all_messages=All mail_reader_delete=Delete messages from the server mail_reader_folder=Folder: mail_reader_num_messages=Number of messages to retrieve: mail_reader_password=Password: mail_reader_port=Server Port (optional): mail_reader_server=Server Host: mail_reader_server_type=Protocol (e.g. pop3, imaps): mail_reader_storemime=Store the message using MIME (raw) mail_reader_title=Mail Reader Sampler mail_sent=Mail sent successfully mailer_addressees=Addressee(s): mailer_attributes_panel=Mailing attributes mailer_connection_security=Connection security: mailer_error=Couldn't send mail. Please correct any misentries. mailer_failure_limit=Failure Limit: mailer_failure_subject=Failure Subject: mailer_failures=Failures: mailer_from=From: mailer_host=Host: mailer_login=Login: mailer_msg_title_error=Error mailer_msg_title_information=Information mailer_password=Password: mailer_port=Port: mailer_string=E-Mail Notification mailer_success_limit=Success Limit: mailer_success_subject=Success Subject: mailer_test_mail=Test Mail mailer_title_message=Message mailer_title_settings=Mailer settings mailer_title_smtpserver=SMTP server mailer_visualizer_title=Mailer Visualizer match_num_field=Match No. (0 for Random)\: max=Maximum maximum_param=The maximum value allowed for a range of values md5hex_assertion_failure=Error asserting MD5 sum : got {0} but should have been {1} md5hex_assertion_label=MD5Hex md5hex_assertion_md5hex_test=MD5Hex to Assert md5hex_assertion_title=MD5Hex Assertion memory_cache=Memory Cache menu_assertions=Assertions menu_close=Close menu_collapse_all=Collapse All menu_config_element=Config Element menu_edit=Edit menu_expand_all=Expand All menu_fragments=Test Fragment menu_generative_controller=Sampler menu_listener=Listener menu_logic_controller=Logic Controller menu_logger_panel=Log Viewer menu_merge=Merge menu_modifiers=Modifiers menu_non_test_elements=Non-Test Elements menu_open=Open menu_post_processors=Post Processors menu_pre_processors=Pre Processors menu_response_based_modifiers=Response Based Modifiers menu_search=Search menu_search_reset=Reset Search menu_tables=Table menu_threads=Threads (Users) menu_timer=Timer menu_toolbar=Toolbar metadata=MetaData method=Method\: mimetype=Mimetype minimum_param=The minimum value allowed for a range of values minute=minute modddn=Old entry name modification_controller_title=Modification Controller modification_manager_title=Modification Manager modify_test=Modify Test modtest=Modification test module_controller_module_to_run=Module To Run module_controller_title=Module Controller module_controller_warning=Could not find module: monitor_equation_active=Active: (busy/max) > 25% monitor_equation_dead=Dead: no response monitor_equation_healthy=Healthy: (busy/max) < 25% monitor_equation_load=Load: ( (busy / max) * 50) + ( (used memory / max memory) * 50) monitor_equation_warning=Warning: (busy/max) > 67% monitor_health_tab_title=Health monitor_health_title=Monitor Results monitor_is_title=Use as Monitor monitor_label_left_bottom=0 % monitor_label_left_middle=50 % monitor_label_left_top=100 % monitor_label_prefix=Connection Prefix monitor_label_right_active=Active monitor_label_right_dead=Dead monitor_label_right_healthy=Healthy monitor_label_right_warning=Warning monitor_legend_health=Health monitor_legend_load=Load monitor_legend_memory_per=Memory % (used/total) monitor_legend_thread_per=Thread % (busy/max) monitor_load_factor_mem=50 monitor_load_factor_thread=50 monitor_performance_servers=Servers monitor_performance_tab_title=Performance monitor_performance_title=Performance Graph name=Name\: new=New newdn=New distinguished name next=Next no=Norwegian number_of_threads=Number of Threads (users)\: obsolete_test_element=This test element is obsolete once_only_controller_title=Once Only Controller opcode=opCode open=Open... option=Options optional_tasks=Optional Tasks paramtable=Send Parameters With the Request\: password=Password paste=Paste paste_insert=Paste As Insert path=Path\: path_extension_choice=Path Extension (use ";" as separator) path_extension_dont_use_equals=Do not use equals in path extension (Intershop Enfinity compatibility) path_extension_dont_use_questionmark=Do not use questionmark in path extension (Intershop Enfinity compatibility) patterns_to_exclude=URL Patterns to Exclude patterns_to_include=URL Patterns to Include pkcs12_desc=PKCS 12 Key (*.p12) pl=Polish poisson_timer_delay=Constant Delay Offset (in milliseconds)\: poisson_timer_memo=Adds a random delay with a poisson distribution poisson_timer_range=Lambda (in milliseconds)\: poisson_timer_title=Poisson Random Timer port=Port\: post_as_parameters=Parameters post_body=Post Body post_body_raw=Raw Post Body post_thread_group_title=tearDown Thread Group previous=Previous property_as_field_label={0}\: property_default_param=Default value property_edit=Edit property_editor.value_is_invalid_message=The text you just entered is not a valid value for this property.\nThe property will be reverted to its previous value. property_editor.value_is_invalid_title=Invalid input property_name_param=Name of property property_returnvalue_param=Return Original Value of property (default false) ? property_tool_tip={0}\: {1} property_undefined=Undefined property_value_param=Value of property property_visualiser_title=Property Display protocol=Protocol [http]\: protocol_java_border=Java class protocol_java_classname=Classname\: protocol_java_config_tile=Configure Java Sample protocol_java_test_title=Java Testing provider_url=Provider URL proxy_assertions=Add Assertions proxy_cl_error=If specifying a proxy server, host and port must be given proxy_content_type_exclude=Exclude\: proxy_content_type_filter=Content-type filter proxy_content_type_include=Include\: proxy_daemon_bind_error=Could not create proxy - port in use. Choose another port. proxy_daemon_error=Could not create proxy - see log for details proxy_general_settings=Global Settings proxy_headers=Capture HTTP Headers proxy_regex=Regex matching proxy_sampler_settings=HTTP Sampler settings proxy_sampler_type=Type\: proxy_separators=Add Separators proxy_target=Target Controller\: proxy_test_plan_content=Test plan content proxy_title=HTTP Proxy Server pt_br=Portugese (Brazilian) ramp_up=Ramp-Up Period (in seconds)\: random_control_title=Random Controller random_order_control_title=Random Order Controller random_string_chars_to_use=Chars to use for random string generation random_string_length=Random string length read_response_message=Read response is not checked. To see the response, please check the box in the sampler. read_response_note=If read response is unchecked, the sampler will not read the response read_response_note2=or set the SampleResult. This improves performance, but it means read_response_note3=the response content won't be logged. read_soap_response=Read SOAP Response realm=Realm record_controller_title=Recording Controller ref_name_field=Reference Name\: regex_extractor_title=Regular Expression Extractor regex_field=Regular Expression\: regex_source=Response Field to check regex_src_body=Body regex_src_body_unescaped=Body (unescaped) regex_src_hdrs=Headers regex_src_url=URL regexfunc_param_1=Regular expression used to search previous sample - or variable. regexfunc_param_2=Template for the replacement string, using groups from the regular expression. Format is $[group]$. Example $1$. regexfunc_param_3=Which match to use. An integer 1 or greater, RAND to indicate JMeter should randomly choose, A float, or ALL indicating all matches should be used ([1]) regexfunc_param_4=Between text. If ALL is selected, the between text will be used to generate the results ([""]) regexfunc_param_5=Default text. Used instead of the template if the regular expression finds no matches ([""]) regexfunc_param_7=Input variable name containing the text to be parsed ([previous sample]) regexp_render_no_text=Data response result isn't text. regexp_tester_button_test=Test regexp_tester_field=Regular expression\: regexp_tester_title=RegExp Tester remote_error_init=Error initialising remote server remote_error_starting=Error starting remote server remote_exit=Remote Exit remote_exit_all=Remote Exit All remote_shut=Remote Shutdown remote_shut_all=Remote Shutdown All remote_start=Remote Start remote_start_all=Remote Start All remote_stop=Remote Stop remote_stop_all=Remote Stop All remove=Remove remove_confirm_title=Confirm remove? remove_confirm_msg=Are you sure you want remove the selected element(s)? rename=Rename entry report=Report report_bar_chart=Bar Chart report_bar_graph_url=URL report_base_directory=Base Directory report_chart_caption=Chart Caption report_chart_x_axis=X Axis report_chart_x_axis_label=Label for X Axis report_chart_y_axis=Y Axis report_chart_y_axis_label=Label for Y Axis report_line_graph=Line Graph report_line_graph_urls=Include URLs report_output_directory=Output Directory for Report report_page=Report Page report_page_element=Page Element report_page_footer=Page Footer report_page_header=Page Header report_page_index=Create Page Index report_page_intro=Page Introduction report_page_style_url=Stylesheet url report_page_title=Page Title report_pie_chart=Pie Chart report_plan=Report Plan report_select=Select report_summary=Report Summary report_table=Report Table report_writer=Report Writer report_writer_html=HTML Report Writer request_data=Request Data reset_gui=Reset Gui response_save_as_md5=Save response as MD5 hash? restart=Restart resultaction_title=Result Status Action Handler resultsaver_addtimestamp=Add timestamp resultsaver_errors=Save Failed Responses only resultsaver_numberpadlen=Minumum Length of sequence number resultsaver_prefix=Filename prefix\: resultsaver_skipautonumber=Don't add number to prefix resultsaver_skipsuffix=Don't add suffix resultsaver_success=Save Successful Responses only resultsaver_title=Save Responses to a file resultsaver_variable=Variable Name: retobj=Return object return_code_config_box_title=Return Code Configuration reuseconnection=Re-use connection revert_project=Revert revert_project?=Revert project? root=Root root_title=Root run=Run running_test=Running test runtime_controller_title=Runtime Controller runtime_seconds=Runtime (seconds) sample_result_save_configuration=Sample Result Save Configuration sample_scope=Apply to: sample_scope_all=Main sample and sub-samples sample_scope_children=Sub-samples only sample_scope_parent=Main sample only sample_scope_variable=JMeter Variable sampler_label=Label sampler_on_error_action=Action to be taken after a Sampler error sampler_on_error_continue=Continue sampler_on_error_start_next_loop=Start Next Thread Loop sampler_on_error_stop_test=Stop Test sampler_on_error_stop_test_now=Stop Test Now sampler_on_error_stop_thread=Stop Thread save=Save save?=Save? save_all_as=Save Test Plan as save_as=Save Selection As... save_as_error=More than one item selected! save_as_image=Save Node As Image save_as_image_all=Save Screen As Image save_assertionresultsfailuremessage=Save Assertion Failure Message save_assertions=Save Assertion Results (XML) save_asxml=Save As XML save_bytes=Save byte count save_code=Save Response Code save_datatype=Save Data Type save_encoding=Save Encoding save_fieldnames=Save Field Names (CSV) save_filename=Save Response Filename save_graphics=Save Graph save_hostname=Save Hostname save_idletime=Save Idle Time save_label=Save Label save_latency=Save Latency save_message=Save Response Message save_overwrite_existing_file=The selected file already exists, do you want to overwrite it? save_requestheaders=Save Request Headers (XML) save_responsedata=Save Response Data (XML) save_responseheaders=Save Response Headers (XML) save_samplecount=Save Sample and Error Counts save_samplerdata=Save Sampler Data (XML) save_subresults=Save Sub Results (XML) save_success=Save Success save_threadcounts=Save Active Thread Counts save_threadname=Save Thread Name save_time=Save Elapsed Time save_timestamp=Save Time Stamp save_url=Save URL sbind=Single bind/unbind scheduler=Scheduler scheduler_configuration=Scheduler Configuration scope=Scope search_base=Search base search_filter=Search Filter search_test=Search Test search_text_button_close=Close search_text_button_find=Find search_text_button_next=Find next search_text_chkbox_case=Case sensitive search_text_chkbox_regexp=Regular exp. search_text_field=Search: search_text_msg_not_found=Text not found search_text_title_not_found=Not found search_tree_title=Search Tree search=Search searchbase=Search base searchfilter=Search Filter searchtest=Search test second=second secure=Secure send_file=Send Files With the Request\: send_file_browse=Browse... send_file_filename_label=File Path\: send_file_mime_label=MIME Type\: send_file_param_name_label=Parameter Name\: server=Server Name or IP\: servername=Servername \: session_argument_name=Session Argument Name setup_thread_group_title=setUp Thread Group should_save=You should save your test plan before running it. \nIf you are using supporting data files (ie, for CSV Data Set or _StringFromFile), \nthen it is particularly important to first save your test script. \nDo you want to save your test plan first? shutdown=Shutdown simple_config_element=Simple Config Element simple_data_writer_title=Simple Data Writer size_assertion_comparator_error_equal=been equal to size_assertion_comparator_error_greater=been greater than size_assertion_comparator_error_greaterequal=been greater or equal to size_assertion_comparator_error_less=been less than size_assertion_comparator_error_lessequal=been less than or equal to size_assertion_comparator_error_notequal=not been equal to size_assertion_comparator_label=Type of Comparison size_assertion_failure=The result was the wrong size\: It was {0} bytes, but should have {1} {2} bytes. size_assertion_input_error=Please enter a valid positive integer. size_assertion_label=Size in bytes\: size_assertion_size_test=Size to Assert size_assertion_title=Size Assertion smime_assertion_issuer_dn=Issuer distinguished name smime_assertion_message_position=Execute assertion on message at position smime_assertion_not_signed=Message not signed smime_assertion_signature=Signature smime_assertion_signer=Signer certificate smime_assertion_signer_by_file=Certificate file smime_assertion_signer_constraints=Check values smime_assertion_signer_dn=Signer distinguished name smime_assertion_signer_email=Signer email address smime_assertion_signer_no_check=No check smime_assertion_signer_serial=Serial Number smime_assertion_title=SMIME Assertion smime_assertion_verify_signature=Verify signature smtp_additional_settings=Additional Settings smtp_attach_file=Attach file(s): smtp_attach_file_tooltip=Separate multiple files with ";" smtp_auth_settings=Auth settings smtp_bcc=Address To BCC: smtp_cc=Address To CC: smtp_default_port=(Defaults: SMTP:25, SSL:465, StartTLS:587) smtp_eml=Send .eml: smtp_enabledebug=Enable debug logging? smtp_enforcestarttls=Enforce StartTLS smtp_enforcestarttls_tooltip=Enforces the server to use StartTLS.
        If not selected and the SMTP-Server doesn't support StartTLS,
        a normal SMTP-Connection will be used as fallback instead.
        Please note that this checkbox creates a file in "/tmp/",
        so this will cause problems under windows. smtp_from=Address From: smtp_header_add=Add Header smtp_header_name=Header Name smtp_header_remove=Remove smtp_header_value=Header Value smtp_mail_settings=Mail settings smtp_message=Message: smtp_message_settings=Message settings smtp_messagesize=Calculate message size smtp_password=Password: smtp_plainbody=Send plain body (i.e. not multipart/mixed) smtp_replyto=Address Reply-To: smtp_sampler_title=SMTP Sampler smtp_security_settings=Security settings smtp_server=Server: smtp_server_port=Port: smtp_server_settings=Server settings smtp_subject=Subject: smtp_suppresssubj=Suppress Subject Header smtp_timestamp=Include timestamp in subject smtp_to=Address To: smtp_trustall=Trust all certificates smtp_trustall_tooltip=Enforces JMeter to trust all certificates, whatever CA it comes from. smtp_truststore=Local truststore: smtp_truststore_tooltip=The pathname of the truststore.
        Relative paths are resolved against the current directory.
        Failing that, against the directory containing the test script (JMX file) smtp_useauth=Use Auth smtp_usenone=Use no security features smtp_username=Username: smtp_usessl=Use SSL smtp_usestarttls=Use StartTLS smtp_usetruststore=Use local truststore smtp_usetruststore_tooltip=Allows JMeter to use a local truststore. soap_action=Soap Action soap_data_title=Soap/XML-RPC Data soap_sampler_title=SOAP/XML-RPC Request soap_send_action=Send SOAPAction: soap_sampler_file_invalid=Filename references a missing or unreadable file\: spline_visualizer_average=Average spline_visualizer_incoming=Incoming spline_visualizer_maximum=Maximum spline_visualizer_minimum=Minimum spline_visualizer_title=Spline Visualizer spline_visualizer_waitingmessage=Waiting for samples split_function_separator=String to split on. Default is , (comma). split_function_string=String to split ssl_alias_prompt=Please type your preferred alias ssl_alias_select=Select your alias for the test ssl_alias_title=Client Alias ssl_error_title=Key Store Problem ssl_pass_prompt=Please type your password ssl_pass_title=KeyStore Password ssl_port=SSL Port sslmanager=SSL Manager start=Start start_no_timers=Start no pauses starttime=Start Time stop=Stop stopping_test=Shutting down all test threads. Please be patient. stopping_test_failed=One or more test threads won't exit; see log file. stopping_test_title=Stopping Test string_from_file_encoding=File encoding if not the platform default (opt) string_from_file_file_name=Enter path (absolute or relative) to file string_from_file_seq_final=Final file sequence number (opt) string_from_file_seq_start=Start file sequence number (opt) summariser_title=Generate Summary Results summary_report=Summary Report switch_controller_label=Switch Value switch_controller_title=Switch Controller system_sampler_title=OS Process Sampler system_sampler_stdin=Standard input (stdin): system_sampler_stdout=Standard output (stdout): system_sampler_stderr=Standard error (stderr): table_visualizer_bytes=Bytes table_visualizer_latency=Latency table_visualizer_sample_num=Sample # table_visualizer_sample_time=Sample Time(ms) table_visualizer_start_time=Start Time table_visualizer_status=Status table_visualizer_success=Success table_visualizer_thread_name=Thread Name table_visualizer_warning=Warning target_server=Target Server tcp_classname=TCPClient classname\: tcp_config_title=TCP Sampler Config tcp_nodelay=Set NoDelay tcp_port=Port Number\: tcp_request_data=Text to send tcp_sample_title=TCP Sampler tcp_timeout=Timeout (milliseconds)\: teardown_on_shutdown=Run tearDown Thread Groups after shutdown of main threads template_field=Template\: test=Test test_action_action=Action test_action_duration=Duration (milliseconds) test_action_pause=Pause test_action_restart_next_loop=Go to next loop iteration test_action_stop=Stop test_action_stop_now=Stop Now test_action_target=Target test_action_target_test=All Threads test_action_target_thread=Current Thread test_action_title=Test Action test_configuration=Test Configuration test_fragment_title=Test Fragment test_plan=Test Plan test_plan_classpath_browse=Add directory or jar to classpath testconfiguration=Test Configuration testplan.serialized=Run Thread Groups consecutively (i.e. run groups one at a time) testplan_comments=Comments\: testt=Test textbox_cancel=Cancel textbox_close=Close textbox_save_close=Save & Close textbox_title_edit=Edit text textbox_title_view=View text textbox_tooltip_cell=Double click to view/edit thread_delay_properties=Thread Delay Properties thread_group_title=Thread Group thread_properties=Thread Properties threadgroup=Thread Group throughput_control_bynumber_label=Total Executions throughput_control_bypercent_label=Percent Executions throughput_control_perthread_label=Per User throughput_control_title=Throughput Controller throughput_control_tplabel=Throughput time_format=Format string for SimpleDateFormat (optional) timelim=Time limit toggle=Toggle toolbar_icon_set_not_found=The file description of toolbar icon set is not found. See logs. tr=Turkish transaction_controller_include_timers=Include duration of timer and pre-post processors in generated sample transaction_controller_parent=Generate parent sample transaction_controller_title=Transaction Controller unbind=Thread Unbind unescape_html_string=String to unescape unescape_string=String containing Java escapes uniform_timer_delay=Constant Delay Offset (in milliseconds)\: uniform_timer_memo=Adds a random delay with a uniform distribution uniform_timer_range=Random Delay Maximum (in milliseconds)\: uniform_timer_title=Uniform Random Timer up=Up update=Update update_per_iter=Update Once Per Iteration upload=File Upload upper_bound=Upper Bound url=URL url_config_get=GET url_config_http=HTTP url_config_https=HTTPS url_config_post=POST url_config_protocol=Protocol\: url_config_title=HTTP Request Defaults url_full_config_title=UrlFull Sample url_multipart_config_title=HTTP Multipart Request Defaults use_expires=Use Cache-Control/Expires header when processing GET requests use_keepalive=Use KeepAlive use_multipart_for_http_post=Use multipart/form-data for POST use_multipart_mode_browser=Browser-compatible headers use_recording_controller=Use Recording Controller user=User user_defined_test=User Defined Test user_defined_variables=User Defined Variables user_param_mod_help_note=(Do not change this. Instead, modify the file of that name in JMeter's /bin directory) user_parameters_table=Parameters user_parameters_title=User Parameters userdn=Username username=Username userpw=Password value=Value var_name=Reference Name variable_name_param=Name of variable (may include variable and function references) view_graph_tree_title=View Graph Tree view_results_assertion_error=Assertion error: view_results_assertion_failure=Assertion failure: view_results_assertion_failure_message=Assertion failure message: view_results_autoscroll=Scroll automatically? view_results_childsamples=Child samples? view_results_desc=Shows the text results of sampling in tree form view_results_error_count=Error Count: view_results_fields=fields: view_results_in_table=View Results in Table view_results_latency=Latency: view_results_load_time=Load time: view_results_render=Render: view_results_render_html=HTML view_results_render_html_embedded=HTML (download resources) view_results_render_json=JSON view_results_render_text=Text view_results_render_xml=XML view_results_request_headers=Request Headers: view_results_response_code=Response code: view_results_response_headers=Response headers: view_results_response_message=Response message: view_results_response_partial_message=Start of message: view_results_response_too_large_message=Response too large to be displayed. Size: view_results_sample_count=Sample Count: view_results_sample_start=Sample Start: view_results_search_pane=Search pane view_results_size_body_in_bytes=Body size in bytes: view_results_size_headers_in_bytes=Headers size in bytes: view_results_size_in_bytes=Size in bytes: view_results_tab_assertion=Assertion result view_results_tab_request=Request view_results_tab_response=Response data view_results_tab_sampler=Sampler result view_results_table_fields_key=Additional field view_results_table_fields_value=Value view_results_table_headers_key=Response header view_results_table_headers_value=Value view_results_table_request_headers_key=Request header view_results_table_request_headers_value=Value view_results_table_request_http_cookie=Cookie view_results_table_request_http_host=Host view_results_table_request_http_method=Method view_results_table_request_http_nohttp=No HTTP Sample view_results_table_request_http_path=Path view_results_table_request_http_port=Port view_results_table_request_http_protocol=Protocol view_results_table_request_params_key=Parameter name view_results_table_request_params_value=Value view_results_table_request_raw_nodata=No data to display view_results_table_request_tab_http=HTTP view_results_table_request_tab_raw=Raw view_results_table_result_tab_parsed=Parsed view_results_table_result_tab_raw=Raw view_results_thread_name=Thread Name: view_results_title=View Results view_results_tree_title=View Results Tree warning=Warning! web_cannot_convert_parameters_to_raw=Cannot convert parameters to RAW Post body \nbecause one of the parameters has a name web_cannot_switch_tab=You cannot switch because data cannot be converted\n to target Tab data, empty data to switch web_parameters_lost_message=Switching to RAW Post body will convert the parameters.\nParameter table will be cleared when you select\nanother node or save the test plan.\nOK to proceeed? web_proxy_server_title=Proxy Server web_request=HTTP Request web_server=Web Server web_server_client=Client implementation: web_server_domain=Server Name or IP\: web_server_port=Port Number\: web_server_timeout_connect=Connect: web_server_timeout_response=Response: web_server_timeout_title=Timeouts (milliseconds) web_testing2_source_ip=Source IP address: web_testing2_title=HTTP Request HTTPClient web_testing_concurrent_download=Use concurrent pool. Size: web_testing_embedded_url_pattern=Embedded URLs must match\: web_testing_retrieve_images=Retrieve All Embedded Resources from HTML Files web_testing_title=HTTP Request webservice_configuration_wizard=WSDL helper webservice_get_xml_from_random_title=Use random messages SOAP webservice_maintain_session=Maintain HTTP Session webservice_message_soap=WebService message webservice_methods=Web Methods webservice_proxy_host=Proxy Host webservice_proxy_note=If Use HTTP Proxy is checked, but no host or port are provided, the sampler webservice_proxy_note2=will look at command line options. If no proxy host or port are provided by webservice_proxy_note3=either, it will fail silently. webservice_proxy_port=Proxy Port webservice_sampler_title=WebService(SOAP) Request webservice_soap_action=SOAPAction webservice_timeout=Timeout: webservice_use_proxy=Use HTTP Proxy while_controller_label=Condition (function or variable) while_controller_title=While Controller workbench_title=WorkBench wsdl_helper_error=The WSDL was not valid, please double check the url. wsdl_url=WSDL URL wsdl_url_error=The WSDL was emtpy. xml_assertion_title=XML Assertion xml_download_dtds=Fetch external DTDs xml_namespace_button=Use Namespaces xml_tolerant_button=Use Tidy (tolerant parser) xml_validate_button=Validate XML xml_whitespace_button=Ignore Whitespace xmlschema_assertion_label=File Name: xmlschema_assertion_title=XML Schema Assertion xpath_assertion_button=Validate xpath_assertion_check=Check XPath Expression xpath_assertion_error=Error with XPath xpath_assertion_failed=Invalid XPath Expression xpath_assertion_label=XPath xpath_assertion_negate=True if nothing matches xpath_assertion_option=XML Parsing Options xpath_assertion_test=XPath Assertion xpath_assertion_tidy=Try and tidy up the input xpath_assertion_title=XPath Assertion xpath_assertion_valid=Valid XPath Expression xpath_assertion_validation=Validate the XML against the DTD xpath_assertion_whitespace=Ignore whitespace xpath_expression=XPath expression to match against xpath_extractor_fragment=Return entire XPath fragment instead of text content? xpath_extractor_query=XPath query: xpath_extractor_title=XPath Extractor xpath_file_file_name=XML file to get values from xpath_tidy_quiet=Quiet xpath_tidy_report_errors=Report errors xpath_tidy_show_warnings=Show warnings you_must_enter_a_valid_number=You must enter a valid number zh_cn=Chinese (Simplified) zh_tw=Chinese (Traditional)apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_no.properties0000644000175000017500000001322212032647221027067 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. about=Om Apache JMeter add=Legg til add_pattern=Legg til m\u00F8nster\: add_value=Legg til verdi analyze=Analyser data fil... assertion_contains=Inneholder assertion_matches=Matcher assertion_not=Ikke assertion_pattern_match_rules=M\u00F8nster matching regler assertion_patterns_to_test=M\u00F8nster \u00E5 teste assertion_resp_field=Svarfelt \u00E5 teste assertion_text_resp=Tektssvar auth_base_url=Basis URL auth_manager_title=HTTP autentiseringsmanager auths_stored=Autentiseringer lagret hos autentiseringsmanager browse=Bla gjennom clear_all=Nullstill alle clear=Nullstill config_element=Konfigurasjonselement constant_timer_delay=Tr\u00E5dforsinkelse (i millisekund)\: constant_timer_title=Konstant timer controller=Kontroller cookies_stored=Cookies lagret hos cookie manager database_sql_query_string=SQL foresp\u00F8rsel\: database_sql_query_title=JDBC SQL foresp\u00F8rsel standard instillinger default_parameters=Standard parametre delete=Slett domain=Domene edit=Rediger endtime=EndTime exit=Avslutt expiration=Utl\u00F8per file=Fil file_visualizer_append=Legg til en eksisterende fil file_visualizer_auto_flush=Automatisk t\u00F8mming etter hver m\u00E5ledata file_visualizer_browse=Bla gjennom... file_visualizer_close=Lukk file_visualizer_filename=Skriv et nytt filnavn, eller bla gjennom til en eksisterende fil file_visualizer_file_options=Fil egenskaper file_visualizer_flush=T\u00F8m file_visualizer_missing_filename=Ingen utfil spesifisert. file_visualizer_open=\u00C5pne file_visualizer_output_file=Skriv alle data til en fil file_visualizer_submit_data=Inkluder sendte data file_visualizer_title=Filrapport\u00F8r file_visualizer_verbose=Utf\u00F8rlig output ftp_sample_title=FTP foresp\u00F8rsel standard instillinger ftp_testing_title=FTP foresp\u00F8rsel gaussian_timer_delay=Konstant forsinkelsesoffset (i millisekund)\: gaussian_timer_range=Avvik (i millisekund)\: gaussian_timer_title=Gaussisk tilfeldig timer graph_full_results_title=Graf full resultater graph_results_average=Gjennomsnitt graph_results_deviation=Avvik graph_results_title=Graf resultater headers_stored=Headere lagret hos headermanager help=Hjelp infinite=Uendelig interleave_control_title=Vekslende kontroller iterator_num=L\u00F8kketeller\: jndi_config_title=JNDI konfigurasjon jndi_lookup_title=JNDI lookup konfigurasjon jndi_method_home_name=Home metode navn jndi_method_home_parms=Home metode parametre jndi_method_name=Metode konfigurasjon jndi_method_remote_name=Remote metode navn jndi_method_remote_parms=Remote metode parametre jndi_method_title=Remote metode konfigurasjon jndi_testing_title=JNDI foresp\u00F8rsel jndi_url_jndi_props=JNDI egenskaper load=Hent logic_controller_title=Enkel kontroller login_config=Innlogging konfigurasjon loop_controller_title=L\u00F8kke kontroller looping_control=L\u00F8kkekontroll menu_edit=Rediger method=Metode\: modification_manager_title=Modifiseringsmanager name=Navn\: number_of_threads=Antall tr\u00E5der\: once_only_controller_title=En gang kontroller open=\u00C5pne... optional_tasks=Valgfrie oppgaver option=Innstillinger paramtable=Send parametre med foresp\u00F8rselen\: password=Passord path=Sti\: patterns_to_exclude=URL M\u00F8nster \u00E5 ekskludere patterns_to_include=URL M\u00F8nster \u00E5 inkludere protocol=Protokoll\: proxy_title=HTTP proxy server ramp_up=Oppstartsperiode (i sekunder)\: random_control_title=Random kontroller remote_start=Remote start remote_stop=Remote stopp remove=Fjern report=Rapport root=Rot root_title=Rot run=Kj\u00F8r save_all_as=Lagre alle som... save_as=Lagre som... save_as_image=Lagre som Image save=Lagre alle secure=Sikker send_file_browse=Bla gjennom... send_file_filename_label=Filnavn\: send_file_mime_label=MIME type\: send_file_param_name_label=Parameter navn\: send_file=Send en fil med foresp\u00F8rselen\: server=Server navn eller IP\: spline_visualizer_average=Gjennomsnitt spline_visualizer_incoming=Innkommende spline_visualizer_maximum=Maksimum spline_visualizer_title=Spline visualiserer spline_visualizer_waitingmessage=Venter p\u00E5 m\u00E5linger ssl_alias_prompt=Tast inn ditt preferred alias ssl_alias_select=Velg ditt alias for testeen ssl_alias_title=klient alias sslmanager=SSL manager ssl_pass_prompt=Tast inn ditt passord starttime=StartTime stop=Stopp thread_delay_properties=Tr\u00E5dforsinkelse egenskaper thread_group_title=Tr\u00E5dgruppe threadgroup=Tr\u00E5dgruppe uniform_timer_delay=Konstant forsinkelsesoffset (i millisekund)\: uniform_timer_range=Tilfeldig forsinkelse maksimum (i millisekund)\: uniform_timer_title=Uniform tilfeldig timer upload=Fil opplasting url_config_title=HTTP foresp\u00F8rsel standard instillinger username=Brukernavn value=Verdi view_results_title=Vis resultat view_results_tree_title=Vis resultattre web_server_domain=Server navn eller IP\: web_server_port=Port nummer\: web_testing_retrieve_images=Hent alle bilder og Java Applets (kun HTML) web_testing_title=HTTP foresp\u00F8rsel workbench_title=Arbeidsbenk apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_pt_BR.properties0000644000175000017500000012720712032647221027472 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Warning: JMeterUtils.getResString() replaces space with '_' # and converts keys to lowercase before lookup # => All keys in this file must also be lower case or they won't match # # Please add new entries in alphabetical order about=Sobre Apache JMeter add=Adicionar add_as_child=Adicionar como filho add_parameter=Adicionar Var\u00E1vel add_pattern=Adicionar Padr\u00E3o\: add_test=Adicionar Teste add_user=Adicionar Usu\u00E1rio add_value=Adicionar Valor addtest=Adicionar teste aggregate_graph=Gr\u00E1ficos Estat\u00EDsticos aggregate_graph_column=Coluna aggregate_graph_display=Exibir Gr\u00E1fico aggregate_graph_height=Altura aggregate_graph_max_length_xaxis_label=Largura m\u00E1xima do r\u00F3tulo do eixo x aggregate_graph_ms=Milisegundos aggregate_graph_response_time=Tempo de Tesposta aggregate_graph_save=Salvar Gr\u00E1fico aggregate_graph_save_table=Salvar Dados da Tabela aggregate_graph_save_table_header=Salvar Cabe\u00E7alho da Tabela aggregate_graph_title=Gr\u00E1fico Agregado aggregate_graph_use_group_name=Incluir nome do grupo no r\u00F3tulo? aggregate_graph_user_title=T\u00EDtulo para o Gr\u00E1fico aggregate_graph_width=Largura aggregate_report=Relat\u00F3rio Agregado aggregate_report_90%_line=Linha de 90% aggregate_report_bandwidth=KB/s aggregate_report_count=\# Amostras aggregate_report_error=Erro aggregate_report_error%=% de Erro aggregate_report_max=M\u00E1x. aggregate_report_median=Mediana aggregate_report_min=M\u00EDn. aggregate_report_rate=Vaz\u00E3o aggregate_report_stddev=Desvio Padr\u00E3o ajp_sampler_title=Testador AJP/1.3 als_message=Nota\: O Processador de Logs de Acesso \u00E9 gen\u00E9rico em seu projeto e permite que voc\u00EA o especialize als_message2=seu pr\u00F3prio processador. Para tanto, implementar o LogParser, e adicionar o arquivo jar als_message3=diret\u00F3rio /lib e entre com a classe no testador analyze=Analizar Arquivo de Dados... anchor_modifier_title=Processador de Links HTML appearance=Apar\u00EAncia argument_must_not_be_negative=O Argumento n\u00E3o pode ser negativo\! assertion_assume_success=Ignorar estado assertion_code_resp=C\u00F3digo de Resposta assertion_contains=Cont\u00E9m assertion_equals=Igual assertion_headers=Cabe\u00E7alhos da Resposta assertion_matches=Combina assertion_message_resp=Mensagem da Resposta assertion_not=N\u00E3o assertion_pattern_match_rules=Regras para Combina\u00E7\u00E3o de Padr\u00F5es assertion_patterns_to_test=Padr\u00F5es a serem Testados assertion_resp_field=Testar que Campo da Resposta assertion_text_resp=Resposta de Texto assertion_textarea_label=Asser\u00E7\u00F5es\: assertion_title=Asser\u00E7\u00F5es de Resposta assertion_url_samp=URL Amostrada assertion_visualizer_title=Resultados de Asser\u00E7\u00E3o attribute=Atributo attrs=Atributos auth_base_url=URL Base auth_manager_title=Gerenciador de Autoriza\u00E7\u00E3o HTTP auths_stored=Autoriza\u00E7\u00F5es Armazenadas no Gerenciador de Autoriza\u00E7\u00E3o average=M\u00E9dia average_bytes=M\u00E9dia de Bytes bind=Liga\u00E7\u00E3o do Usu\u00E1rio Virtual browse=Procurar... bsf_sampler_title=Testador BSF bsf_script=Script a ser executado (vari\u00E1veis\: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) bsf_script_file=Arquivo de script a ser executado bsf_script_language=Linguagem de scripting\: bsf_script_parameters=Par\u00E2metros a serem passados ao script/arquivo\: bsh_assertion_script=Script (veja abaixo quais vari\u00E1veis que est\u00E3o definidas) bsh_assertion_script_variables=As seguintes vari\u00E1veis est\u00E3o definidas para o script\:\nEscrita/Leitura\: Failure, FailureMessage, SampleResult, vars, props, log.\nSomente Leitura\: Response[Data|Code|Message|Headers], RequestHeaders, SampleLabel, SamplerData, ctx bsh_assertion_title=Asser\u00E7\u00E3o BeanShell bsh_function_expression=Express\u00E3o a ser avaliada bsh_sampler_title=Testador BeanShell bsh_script=Script (veja abaixo quais vari\u00E1veis est\u00E3o definidas) bsh_script_file=Arquivo de script bsh_script_parameters=Par\u00E2metros (\=> String Parameters e String []bsh.args) bsh_script_reset_interpreter=Reiniciar bsh.Interpreter antes de cada chamada bsh_script_variables=As seguintes vari\u00E1veis est\u00E3o definidas para o script\:\nSampleResult, RespondeCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log busy_testing=Eu estou ocupado testando, por favor pare o teste antes de alterar as configura\u00E7\u00F5es cache_manager_title=Gerenciador de Cache HTTP cache_session_id=Fazer cache do ID da sess\u00E3o? cancel=Cancelar cancel_exit_to_save=Existem itens n\u00E3o salvos. Voc\u00EA deseja salvar antes de sair? cancel_new_to_save=Existem itens n\u00E3o salvos. Voc\u00EA deseja salvar antes de limpar o plano de teste? cancel_revert_project=Existem itens n\u00E3o salvos. Voc\u00EA deseja reverter para o plano de teste salvo previamente? char_value=N\u00FAmero unicode do caracter (decimal ou 0xhex) choose_function=Escolher Fun\u00E7\u00E3o choose_language=Escolher Linguagem clear=Limpar clear_all=Limpar Tudo clear_cache_per_iter=Limpar cache a cada itera\u00E7\u00E3o? clear_cookies_per_iter=Limpar cookies a cada itera\u00E7\u00E3o? column_delete_disallowed=N\u00E3o \u00E9 permitida a exclus\u00E3o desta coluna. column_number=N\u00FAmero da coluna no arquivo CSV | pr\u00F3x | *apelido compare=Comparar comparefilt=Filtro de compara\u00E7\u00E3o config_element=Elemento de Configura\u00E7\u00E3o config_save_settings=Configurar configure_wsdl=Configurar constant_throughput_timer_memo=Adicionar um atraso entre amostragens para obter vaz\u00E3o constante constant_timer_delay=Atraso do usu\u00E1rio virtual (em milisegundos) constant_timer_memo=Adicionar um atraso constante entre amostragens constant_timer_title=Temporizador Constante content_encoding=Codifica\u00E7\u00E3o do conte\u00FAdo\: controller=Controlador cookie_manager_policy=Pol\u00EDtica de Cookie cookie_manager_title=Gerenciador de Cookie HTTP cookies_stored=Cookies Definidos pelo Usu\u00E1rio copy=Copiar counter_config_title=Contador counter_per_user=Realiza contagem independentemente para cada usu\u00E1rio countlim=Tamanho limite csvread_file_file_name=Arquivo CSV de onde os valores ser\u00E3o obtidos | *apelido cut=Recortar cut_paste_function=Copiar e colar texto da fun\u00E7\u00E3o database_conn_pool_max_usage=Uso M\u00E1ximo Para Cada Conex\u00E3o\: database_conn_pool_props=Grupo de Conex\u00F5es com o Banco de Dados database_conn_pool_size=N\u00FAmero de Conex\u00F5es no Grupo de Conex\u00F5es database_conn_pool_title=Padr\u00F5es JDBC do Grupo de Conex\u00F5es ao Banco de Dados database_driver_class=Classe do Driver\: database_login_title=Padr\u00F5es JDBC para Acesso ao Banco de Dados database_sql_query_string=Consulta SQL\: database_sql_query_title=Padr\u00F5es JDBC para Consultas SQL database_testing_title=Requisi\u00E7\u00E3o JDBC database_url=URL JDBC\: database_url_jdbc_props=URL do Banco de Dados e Driver JDBC de=Alem\u00E3o debug_off=Desabilitar debug debug_on=Habilitar debug default_parameters=Par\u00E2metros Padr\u00E3o default_value_field=Valor Padr\u00E3o\: delay=Atraso para in\u00EDcio (segundos) delete=Excluir delete_parameter=Excluir Vari\u00E1vel delete_test=Excluir Teste delete_user=Excluir Usu\u00E1rio deltest=Teste de exclus\u00E3o deref=Dereferenciar apelidos disable=Desabilitar distribution_graph_title=Gr\u00E1fico de Distribui\u00E7\u00E3o (alfa) distribution_note1=O gr\u00E1fico ser\u00E1 atualizado a cada 10 amostras domain=Dom\u00EDnio done=Pronto duration=Dura\u00E7\u00E3o (segundos) duration_assertion_duration_test=Dura\u00E7\u00E3o para Avaliar duration_assertion_failure=A opera\u00E7\u00E3o tomou muito tempo\: levou {0} milisegundos, mas n\u00E3o deveria ter levado mais do que {1} milisegundos duration_assertion_input_error=Favor entrar com um inteiro positivo v\u00E1lido. duration_assertion_label=Dura\u00E7\u00E3o em milisegundos\: duration_assertion_title=Asser\u00E7\u00E3o de Dura\u00E7\u00E3o edit=Editar email_results_title=Enviar Resultados por Email en=Ingl\u00EAs enable=Habilitar encode?=Codificar? encoded_value=Valor da URL Codificada endtime=Tempo de T\u00E9rmino entry_dn=Entrada DN entrydn=Entrada DN error_loading_help=Erro ao carregar p\u00E1gina de ajuda error_occurred=Um erro ocorreu error_title=Erro es=Espanhol escape_html_string=String a ser escapada eval_name_param=Texto contendo refer\u00EAncias de fun\u00E7\u00F5es e vari\u00E1veis evalvar_name_param=Nome da vari\u00E1vel example_data=Dados da amostra example_title=Testador de Exemplo exit=Sair expiration=Expira\u00E7\u00E3o field_name=Nome do campo file=Arquivo file_already_in_use=Este arquivo j\u00E1 est\u00E1 em uso file_visualizer_append=Adicionar a um Arquivo de Dados Existente file_visualizer_auto_flush=Automaticamente descarregar dados (flush) ap\u00F3s cada amostra de dados file_visualizer_browse=Procurar... file_visualizer_close=Fechar file_visualizer_file_options=Op\u00E7\u00F5es do Arquivo file_visualizer_filename=Nome do arquivo file_visualizer_flush=Descarregar (flush) file_visualizer_missing_filename=N\u00E3o foi especificado nenhum nome de arquivo de sa\u00EDda. file_visualizer_open=Abrir file_visualizer_output_file=Escrever resultados para arquivo / Ler a partir do arquivo file_visualizer_submit_data=Incluir Dados Enviados file_visualizer_title=Relat\u00F3rios de Arquivo file_visualizer_verbose=Sa\u00EDda detalhada (verbose) filename=Nome do arquivo follow_redirects=Seguir redire\u00E7\u00F5es follow_redirects_auto=Redirecionar automaticamente foreach_controller_title=Controlador ParaCada (ForEach) foreach_input=Prefixo da vari\u00E1vel de entrada foreach_output=Nome da vari\u00E1vel de sa\u00EDda foreach_use_separator=Adicionar "_" antes do n\u00FAmero? format=Formato do n\u00FAmero fr=Franc\u00EAs ftp_binary_mode=Usar modo bin\u00E1rio? ftp_local_file=Arquivo local\: ftp_local_file_contents=Conte\u00FAdo do Arquivo Local\: ftp_remote_file=Arquivo remoto\: ftp_sample_title=Padr\u00F5es para Requisi\u00E7ao FTP ftp_save_response_data=Salvar Arquivos na Resposta? ftp_testing_title=Requisi\u00E7\u00E3o FTP function_dialog_menu_item=Di\u00E1logo de Fun\u00E7\u00E3o de Ajuda function_helper_title=Fun\u00E7\u00E3o de Ajuda function_name_param=Nome da vari\u00E1vel na qual ser\u00E1 armazenado o resultado (requerido) function_name_paropt=Nome da vari\u00E1vel na qual ser\u00E1 armazenado o resultado (opcional) function_params=Par\u00E2metros da Fun\u00E7\u00E3o functional_mode=Modo de Teste Funcional (ex\: salvar dados das respostas e dados dos testadores) functional_mode_explanation=Selecionando Modo de Teste Funcional pode afetar o desempenho de modo adverso. gaussian_timer_delay=Offset do Atraso Constante (em milisegundos)\: gaussian_timer_memo=Adiciona um atraso aleat\u00F3rio atrav\u00E9s de uma distribui\u00E7\u00E3o gaussiana. gaussian_timer_range=Desvio (em milisegundos)\: gaussian_timer_title=Temporizador Aleat\u00F3rio Gaussiano generate=Gerar generator=Nome da classe Geradora generator_cnf_msg=N\u00E3o foi poss\u00EDvel encontrar a classe geradora. Verifique se voc\u00EA colocou o jar correto no diret\u00F3rio /lib. generator_illegal_msg=N\u00E3o foi poss\u00EDvel acessar a classe geradora devido a uma IllegalAccessException. generator_instantiate_msg=N\u00E3o foi poss\u00EDvel criar uma inst\u00E2ncia do processador gerador. Verifique se o gerador implementa a interface Generator. get_xml_from_file=Arquivo com dados XML SOAP (substitui o texto acima) get_xml_from_random=Diret\u00F3rio das Mensagens graph_choose_graphs=Gr\u00E1ficos a serem Exibidos graph_full_results_title=Gr\u00E1fico de Resultados Completos graph_results_average=M\u00E9dia graph_results_data=Dados graph_results_deviation=Desvio graph_results_latest_sample=\u00DAltima Amostra graph_results_median=Mediana graph_results_no_samples=N\u00FAm. de Amostras graph_results_throughput=Vaz\u00E3o graph_results_title=Gr\u00E1fico de Resultados grouping_add_separators=Adicionar separadores entre grupos grouping_in_controllers=Colocar cada grupo em um novo controlador grouping_mode=Agrupamento\: grouping_no_groups=N\u00E3o agrupar testadores grouping_store_first_only=Armazenar primeiro testador de cada grupo apenas header_manager_title=Gerenciador de Cabe\u00E7alhos HTTP headers_stored=Cabe\u00E7alhos Armazenados no Gerenciador de Cabe\u00E7alhos help=Ajuda help_node=O que \u00E9 este n\u00F3? html_assertion_file=Escrever relat\u00F3rio do JTidy em arquivo html_assertion_label=Asser\u00E7\u00E3o HTML html_assertion_title=Asser\u00E7\u00E3o HTML html_parameter_mask=M\u00E1scara de Par\u00E2metro HTML http_implementation=Implementa\u00E7\u00E3o\: http_response_code=C\u00F3digo da Resposta HTTP http_url_rewriting_modifier_title=Modificador de Re-escrita de URL HTTP http_user_parameter_modifier=Modificador de Par\u00E2metros HTTP do Usu\u00E1rio httpmirror_title=Servidor Espelho HTTP id_prefix=Prefixo do ID id_suffix=Sufixo do ID if_controller_evaluate_all=Avaliar para todos os filhos? if_controller_expression=Interpretar Condi\u00E7\u00E3o como Express\u00E3o de Vari\u00E1vel? if_controller_label=Condi\u00E7\u00E3o (padr\u00E3o\: Javascript) if_controller_title=Controlador Se ignore_subcontrollers=Ignorar blocos de sub-controladores include_controller=Controlador de Inclus\u00E3o include_equals=Incluir Igual? include_path=Incluir Plano de Teste increment=Incremento infinite=Infinito initial_context_factory=F\u00E1brica de Contexto Inicial insert_after=Inserir Depois insert_before=Inserir Antes insert_parent=Inserir como Pai interleave_control_title=Controlador de Intercala\u00E7\u00E3o intsum_param_1=Primeiro inteiro para adicionar. intsum_param_2=Segundo inteiro a ser adicionado - posteriormente inteiros podem ser somados atrav\u00E9s da adi\u00E7\u00E3o de novos argumentos. invalid_data=Dados inv\u00E1lidos invalid_mail=Ocorreu um erro ao enviar o e-mail invalid_mail_address=Foram detectados um ou mais endere\u00E7os de email inv\u00E1lidos invalid_mail_server=Houve um problema ao contactar o servidor de email (veja arquivo de log do JMeter) invalid_variables=Vari\u00E1veis inv\u00E1lidas iteration_counter_arg_1=TRUE, para que cada usu\u00E1rio tenha seu pr\u00F3prio contador, FALSE para um contador global iterator_num=Contador de Itera\u00E7\u00E3o ja=Japon\u00EAs jar_file=Arquivos Jar java_request=Requisi\u00E7\u00E3o Java java_request_defaults=Padr\u00F5es de Requisi\u00E7\u00E3o Java javascript_expression=Express\u00E3o JavaScript a ser avaliada jexl_expression=Express\u00E3o JEXL a ser avaliada jms_auth_required=Requerido jms_client_caption=Cliente recebedor usa TopicSubscriber.receive() para aguardar uma mensagem. jms_client_caption2=MessageListener usa a interface onMessage(Message) para aguardar novas mensagens. jms_client_type=Cliente jms_communication_style=Estilo de comunica\u00E7\u00E3o jms_concrete_connection_factory=F\u00E1brica Concreta de Conex\u00E3o jms_config=Configura\u00E7\u00E3o jms_config_title=Configura\u00E7\u00E3o JMS jms_connection_factory=F\u00E1brica de Conex\u00E3o jms_file=Arquivo jms_initial_context_factory=F\u00E1brica de Contexto Inicial jms_itertions=N\u00FAmeros de amostras para agregar jms_jndi_defaults_title=Configura\u00E7\u00E3o Padr\u00E3o de JNDI jms_jndi_props=Propriedades JNDI jms_message_title=Propriedades das mensagens jms_message_type=Tipo das Mensagens jms_msg_content=Conte\u00FAdo jms_object_message=Mensagens de Objetos jms_point_to_point=JMS Ponto a Ponto jms_props=Propriedades JMS jms_provider_url=URL do Provedor jms_publisher=Publicador JMS jms_pwd=Senha jms_queue=Fila jms_queue_connection_factory=F\u00E1brica de Conex\u00F5es em Fila jms_queueing=Recursos JMS jms_random_file=Arquivo Aleat\u00F3rio jms_read_response=Resposta Lida jms_receive_queue=Nome da Fila de Recebimento JNDI jms_request=Somente Requisitar jms_requestreply=Requisitar e Responder jms_sample_title=Padr\u00F5es de Requisi\u00E7\u00E3o JMS jms_send_queue=Fila de Requisi\u00E7\u00E3o de nomes JNDI jms_subscriber_on_message=Utilizar MessageListener.onMessage() jms_subscriber_receive=Usar TopicSubscriber.receive() jms_subscriber_title=Assinante JMS jms_testing_title=Requisi\u00E7\u00E3o de Mensagens jms_text_message=Mensagem de Texto jms_timeout=Tempo limite (timeout) em milisegundos jms_topic=T\u00F3pico jms_use_auth=Usar Autoriza\u00E7\u00E3o? jms_use_file=Do Arquivo jms_use_non_persistent_delivery=Utilizar modo de entrega n\u00E3o persistente jms_use_properties_file=Utilizar aquivo jndi.properties jms_use_random_file=Arquivo Aleat\u00F3rio jms_use_req_msgid_as_correlid=Utilizar ID de Mensagem de Requisi\u00E7\u00E3o como ID de Correla\u00E7\u00E3o jms_use_text=\u00C1rea de texto jms_user=Usu\u00E1rio jndi_config_title=Configura\u00E7\u00E3o JNDI jndi_lookup_name=Interface Remota jndi_lookup_title=Configura\u00E7\u00E3o de Lookup JNDI jndi_method_button_invoke=Invocar jndi_method_button_reflect=Refletir jndi_method_home_name=Nome do M\u00E9todo Home jndi_method_home_parms=Par\u00E2metros do M\u00E9todo Home jndi_method_name=Configura\u00E7\u00E3o do M\u00E9todo jndi_method_remote_interface_list=Interfaces Remotas jndi_method_remote_name=Nome do M\u00E9todo Remoto jndi_method_remote_parms=Par\u00E2metros do M\u00E9todo Remoto jndi_method_title=Configura\u00E7\u00E3o do M\u00E9todo Remoto jndi_testing_title=Requisi\u00E7\u00E3o JNDI jndi_url_jndi_props=Propriedades JNDI junit_append_error=Adicionar erros de asser\u00E7\u00E3o junit_append_exception=Adicionar exce\u00E7\u00F5es de tempo de execu\u00E7\u00E3o junit_constructor_error=N\u00E3o foi poss\u00EDvel criar uma inst\u00E2ncia da classe junit_constructor_string=R\u00F3tulo String do Construtor junit_do_setup_teardown=N\u00E3o chamar setUp e tearDown junit_error_code=C\u00F3digo de Erro junit_error_default_msg=Houve um erro inesperado junit_error_msg=Mensagem de Erro junit_failure_code=C\u00F3digo da Falha junit_failure_default_msg=O teste falhou junit_failure_msg=Mensagns de Falha junit_pkg_filter=Filtro de Pacote junit_request=Requisi\u00E7\u00E3o JUnit junit_request_defaults=Padr\u00F5es de Requisi\u00E7\u00E3o JUnit junit_success_code=C\u00F3digo de Sucesso junit_success_default_msg=Teste com sucesso junit_success_msg=Mensagem de Sucesso junit_test_config=Par\u00E2metros de Teste JUnit junit_test_method=M\u00E9todo de Teste ldap_argument_list=Lista de Argumentos LDAP ldap_connto=Tempo limite de Conex\u00E3o (timeout) em milisegundos ldap_parse_results=Processar os resultados da busca? ldap_sample_title=Padr\u00F5es de Requisi\u00E7\u00E3o LDAP ldap_search_baseobject=Realizar busca b\u00E1sica de objetos ldap_search_onelevel=Realizar busca de um n\u00EDvel ldap_search_subtree=Realizar busca em sub-\u00E1rvore ldap_secure=Utilizar Protocolo LDAP Seguro? ldap_testing_title=Requisi\u00E7\u00E3o LDAP ldapext_sample_title=Padr\u00F5es de Requisi\u00E7\u00E3o LDAP Estendidas ldapext_testing_title=Requisi\u00E7\u00E3o LDAP Estendida library=Biblioteca load=Carregar load_wsdl=Carregar WSDL log_errors_only=Erros log_file=Localiza\u00E7\u00E3o do arquivo de log log_function_comment=Coment\u00E1rios adicionais (opcional) log_function_level=N\u00EDvel de log (padr\u00E3o INFO) ou OUT ou ERR log_function_string=String a ser logada log_function_string_ret=String a ser logada (e retornada) log_function_throwable=Texto a ser lan\u00E7ado (opcional) log_only=Apenas Logar/Exibir log_parser=Nome da Classe Processadora de Logs log_parser_cnf_msg=N\u00E3o foi poss\u00EDvel encontrar a classe. Verifique se o jar se encontra no diret\u00F3rio /lib. log_parser_illegal_msg=N\u00E3o foi poss\u00EDvel acessar a classe devido a IllegalAccessException. log_parser_instantiate_msg=N\u00E3o foi poss\u00EDvel criar uma inst\u00E2ncia do processador de logs. Verifique se o processador implementa a interface LogParser. log_sampler=Testador de Log de Acessp do Tomcat log_success_only=Sucessos logic_controller_title=Controlador Simples login_config=Configura\u00E7\u00E3o de Login login_config_element=Elemento de Configura\u00E7\u00E3o de Login longsum_param_1=Primeiro long a ser adicionado longsum_param_2=Segundo long a ser adicionado - adicionalmente novos longs podem ser somados atrav\u00E9s da adi\u00E7\u00E3o de novos argumentos loop_controller_title=Controlador de Itera\u00E7\u00E3o looping_control=Controle de Itera\u00E7\u00E3o lower_bound=Limite Inferior mail_reader_account=Nome do usu\u00E1rio\: mail_reader_all_messages=Todos mail_reader_delete=Excluir mensagens do servidor mail_reader_folder=Diret\u00F3rio\: mail_reader_num_messages=N\u00FAmero de mensagens a serem recuperadas\: mail_reader_password=Senha\: mail_reader_server=Servidor\: mail_reader_server_type=Tipo do Servidor\: mail_reader_storemime=Armazenar as mensagens utilizando MIME mail_reader_title=Testador Leitor de Emails mail_sent=Email enviado com sucesso mailer_attributes_panel=Atributos de envio de emails mailer_error=N\u00E3o foi poss\u00EDvel enviar email. Favor verificar as configura\u00E7\u00F5es. mailer_visualizer_title=Vizualizador de Email match_num_field=N\u00FAmero para Combina\u00E7\u00E3o (0 para aleat\u00F3rio) max=M\u00E1ximo maximum_param=O valor m\u00E1ximo permitido para um intervalo de valores md5hex_assertion_failure=Erro avaliando soma MD5\: encontrado {0} mas deveria haver {1} md5hex_assertion_md5hex_test=MD5Hex para Asser\u00E7\u00E3o md5hex_assertion_title=Asser\u00E7\u00E3o MD5Hex memory_cache=Cache em Mem\u00F3ria menu_assertions=Asser\u00E7\u00F5es menu_close=Fechar menu_collapse_all=Fechar Todos menu_config_element=Elemento de Configura\u00E7\u00E3o menu_edit=Editar menu_expand_all=Expandir Todos menu_generative_controller=Testador menu_listener=Ouvinte menu_logic_controller=Controlador L\u00F3gico menu_merge=Mesclar menu_modifiers=Modificadores menu_non_test_elements=Elementos que n\u00E3o s\u00E3o de Teste menu_open=Abrir menu_post_processors=P\u00F3s-Processadores menu_pre_processors=Pr\u00E9-Processadores menu_response_based_modifiers=Modificadores Baseados na Resposta menu_timer=Temporizador metadata=Metadados method=M\u00E9todo\: minimum_param=Valor m\u00EDnimo permitido para um intervalo de valores minute=minuto modddn=Velho nome da entrada modification_controller_title=Controlador de Modifica\u00E7\u00E3o modification_manager_title=Gerenciador de Modifica\u00E7\u00E3o modify_test=Modificar Teste modtest=Teste de Modifica\u00E7\u00E3o module_controller_module_to_run=M\u00F3dulo a ser executado module_controller_title=Controlador de M\u00F3dulo module_controller_warning=N\u00E3o foi poss\u00EDvel encontrar o m\u00F3dulo\: monitor_equation_active=Ativo\: (ocupado / max) > 25% monitor_equation_dead=Morto\: sem resposta monitor_equation_healthy=Saud\u00E1vel\: (ocupado / max) < 25% monitor_equation_load=Carga\: ((ocupado / max) * 50) + ((mem\u00F3ria utilizada / max mem\u00F3ria) * 50) monitor_equation_warning=Alerta\: (ocupado / max) > 67% monitor_health_tab_title=Sa\u00FAde monitor_health_title=Monitorar Resultados monitor_is_title=Usar como Monitor monitor_label_prefix=Prefixo de Conex\u00E3o monitor_label_right_active=Ativo monitor_label_right_dead=Morto monitor_label_right_healthy=Saud\u00E1vel monitor_label_right_warning=Alerta monitor_legend_health=Sa\u00FAde monitor_legend_load=Carga monitor_legend_memory_per=Mem\u00F3ria % (usada / total) monitor_legend_thread_per=Thread % (ocupado / max) monitor_performance_servers=Servidores monitor_performance_tab_title=Desempenho monitor_performance_title=Gr\u00E1fico de Desempenho name=Nome\: new=Novo newdn=Novo nome distingu\u00EDvel no=Noruegu\u00EAs number_of_threads=N\u00FAmero de Usu\u00E1rios Virtuais (threads)\: obsolete_test_element=O elemento de teste est\u00E1 obsoleto. once_only_controller_title=Controlador de Uma \u00DAnica Vez open=Abrir... option=Op\u00E7\u00F5es optional_tasks=Tarefas Opcionais paramtable=Enviar Par\u00E2metros Com a Requisi\u00E7\u00E3o password=Senha paste=Colar paste_insert=Colar como Inser\u00E7\u00E3o path=Caminho\: path_extension_choice=Extens\u00F5es do Caminho (usar ";" como separador) path_extension_dont_use_equals=N\u00E3o usar igual nas extens\u00F5es do caminho (compatibilidae com Intershop Enfinity) path_extension_dont_use_questionmark=N\u00E3o utilizar s\u00EDmbolo de interroga\u00E7\u00E3o nas extens\u00F5es do caminho (Compatibilidade com Intershop Enfinity) patterns_to_exclude=Padr\u00F5es de URL a serem exclu\u00EDdos patterns_to_include=Padr\u00F5es de URL a serem inclu\u00EDdos pl=Polon\u00EAs port=Porta\: property_default_param=Valor padr\u00E3o property_edit=Editar property_editor.value_is_invalid_message=O texto informado n\u00E3o \u00E9 um valor v\u00E1lido para esta propriedade.\nA propriedade ser\u00E1 revertida para o seu valor pr\u00E9vio. property_editor.value_is_invalid_title=Entrada inv\u00E1lida. property_name_param=Nome da propriedade property_returnvalue_param=Retornar Valor Original da Propriedade (padr\u00E3o\: false)? property_undefined=Indefinido property_value_param=Valor da propriedade property_visualiser_title=Exibi\u00E7\u00E3o da Propriedade protocol=Protocolo [http]\: protocol_java_border=Classe Java protocol_java_classname=Nome da classe\: protocol_java_config_tile=Configurar amostra Java protocol_java_test_title=Teste Java provider_url=URL do Provedor proxy_assertions=Adicionar Asser\u00E7\u00F5es proxy_cl_error=Se estiver especificando um servidor proxy, nome do servidor e porta precisam ser informados proxy_content_type_exclude=Excluir\: proxy_content_type_filter=Filtro de tipo de conte\u00FAdo\: proxy_content_type_include=Incluir\: proxy_daemon_bind_error=N\u00E3o foi poss\u00EDvel criar o proxy - porta em uso\: Escolha outra porta. proxy_daemon_error=N\u00E3o foi poss\u00EDvel criar o proxy - veja log para detalhes proxy_headers=Capturar Cabe\u00E7alhos HTTP proxy_regex=Combina\u00E7\u00E3o de express\u00E3o regular proxy_sampler_settings=Configura\u00E7\u00F5es do Testador HTTP proxy_sampler_type=Tipo\: proxy_separators=Adicionar Separadores proxy_target=Controlador alvo\: proxy_test_plan_content=Conte\u00FAdo do Plano de Teste proxy_title=Servidor HTTP Proxy pt_br=Portugu\u00EAs (Brasileiro) ramp_up=Tempo de inicializa\u00E7\u00E3o (em segundos) random_control_title=Controlador Aleat\u00F3rio random_order_control_title=Controlador de Ordem Aleat\u00F3ria read_response_message=N\u00E3o est\u00E1 configurado para ler a resposta. Para ver a resposta, favor marcar esta op\u00E7\u00E3o no testador. read_response_note=Se ler resposta est\u00E1 desmarcado, o testador n\u00E3o ir\u00E1 ler a resposta read_response_note2=ou configurar o SampleResult. Isto melhora o desempenho, mas significa que read_response_note3=o conte\u00FAdo da resposta n\u00E3o ser\u00E1 logado. read_soap_response=Ler Respostas SOAP realm=Reino (realm) record_controller_title=Controlador de Grava\u00E7\u00E3o ref_name_field=Nome de Refer\u00EAncia\: regex_extractor_title=Extractor de Express\u00E3o Regular regex_field=Express\u00E3o Regular regex_source=Campo da Resposta a ser verificado regex_src_body=Corpo (body) regex_src_body_unescaped=Corpo (body) - n\u00E3o escapado regex_src_hdrs=Cabe\u00E7alhos (headers) regexfunc_param_1=Express\u00E3o regular usada para buscar amostras anteriores - ou vari\u00E1vel. regexfunc_param_2=Modelo (template) para substitui\u00E7\u00E3o de string, usando grupos de express\u00F5es reuglares. Formato \u00E9 ${grupo}$. Exemplo $1$. regexfunc_param_3=Que combina\u00E7\u00E3o usar. Um inteiro 1 ou maior, RAND indica que JMeter deve escolher aleatoriamente, um ponto flutuante (float) ou ALL indicando todas as combina\u00E7\u00F5es devem ser usadas ([1]) regexfunc_param_4=Entre texto. Se ALL est\u00E1 selecionado, o que estiver ENTRE o texto informado ser\u00E1 utilizado para gerar os resultados ([""]) regexfunc_param_5=Texto padr\u00E3o. Usado no lugar do modelo (template) se a express\u00E3o regular n\u00E3o econtrar nenhuma combina\u00E7\u00E3o ([""]) regexfunc_param_7=Nome da vari\u00E1vel de entrada contidas no texto a ser processado ([amostra anterior]) remote_error_init=Erro inicializando o servidor remoto remote_error_starting=Erro inicializando o servidor remoto remote_exit=Sa\u00EDda Remota remote_exit_all=Sair de Todos Remotos remote_start=Inicializar Remoto remote_start_all=Inicializar Todos Remotos remote_stop=Parar Remoto remote_stop_all=Parar Todos Remotos remove=Remover rename=Renomear entrada report=Relat\u00F3rio report_bar_chart=Gr\u00E1fico de Barras report_base_directory=Diret\u00F3rio Base report_chart_caption=Legenda do Gr\u00E1fico report_chart_x_axis=Eixo X report_chart_x_axis_label=R\u00F3tulo do Eixo X report_chart_y_axis=Eixo Y report_chart_y_axis_label=R\u00F3tulo do Eixo Y report_line_graph=Gr\u00E1fico de Linha report_line_graph_urls=Incluir URLs report_output_directory=Diret\u00F3rio de Sa\u00EDda do Relat\u00F3rio report_page=P\u00E1gina do Relat\u00F3rio report_page_element=Elemento da P\u00E1gina report_page_footer=Rodap\u00E9 da P\u00E1gina report_page_header=Cabe\u00E7alho da P\u00E1gina report_page_index=Criar \u00CDndice de P\u00E1ginas report_page_intro=P\u00E1gina de Introdu\u00E7\u00E3o report_page_style_url=URL da folha de estilos (stylesheet) report_page_title=T\u00EDtulo da P\u00E1gina report_pie_chart=Gr\u00E1fico de Pizza report_plan=Plano de Relat\u00F3rio report_select=Selecionar report_summary=Sum\u00E1rio do Relat\u00F3rio report_table=Tabela do Relat\u00F3rio report_writer=Escritor de Relat\u00F3rio report_writer_html=Escritor de Relat\u00F3rio HTML request_data=Requisitar Dados reset_gui=Reiniciar GUI response_save_as_md5=Salvar respostas como chave MD5? restart=Reiniciar resultaction_title=Manuseador de A\u00E7\u00F5es de Estados do Resultado resultsaver_errors=Somente Salvar Respostas que Falharam resultsaver_prefix=Prefixo do nome do arquivo resultsaver_skipautonumber=N\u00E3o adicionar n\u00FAmeros ao prefixo resultsaver_success=Somente Salvar Respostas de Sucesso resultsaver_title=Salvar respostas para arquivo resultsaver_variable=Nome da Vari\u00E1vel\: retobj=Objeto de retorno reuseconnection=Reusar conex\u00E3o revert_project=Reverter revert_project?=Reverter projeto? root=Raiz root_title=Raiz run=Executar running_test=Testes executando runtime_controller_title=Controlador de Tempo de Execu\u00E7\u00E3o runtime_seconds=Tempo de execu\u00E7\u00E3o (segundos) sample_result_save_configuration=Configura\u00E7\u00E3o de Salvar Resultados da Amostra sample_scope=Quais amostras testar sample_scope_all=Amostras principais e sub-amostras sample_scope_children=Somente Sub-amostras sample_scope_parent=Somente Amostras principais sampler_label=R\u00F3tulo sampler_on_error_action=A\u00E7\u00E3o a ser tomada depois de erro do testador sampler_on_error_continue=Continuar sampler_on_error_stop_test=Interromper Teste sampler_on_error_stop_test_now=Interrompe Teste Agora sampler_on_error_stop_thread=Interromper Usu\u00E1rio Virtual save=Salvar save?=Salvar? save_all_as=Salvar Plano de Teste como save_as=Salvar Sele\u00E7\u00E3o Como... save_as_error=Mais de um item selecionado\! save_as_image=Salvar N\u00F3 como Imagem save_as_image_all=Salvar Tela Como Imagem save_assertionresultsfailuremessage=Salvar Mensagens de Falha de Asser\u00E7\u00E3o save_assertions=Salvar Resultados de Asser\u00E7\u00F5es (XML) save_asxml=Salvar como XML save_bytes=Salvar quantidade de bytes save_code=Salvar C\u00F3digo da Resposta save_datatype=Salvar Tipo de Dados save_encoding=Salvar Codifica\u00E7\u00E3o save_fieldnames=Salvar Nomes dos Campos (CSV) save_filename=Nome do Arquivo para Salvar Respostas save_graphics=Salvar Gr\u00E1fico save_hostname=Salvar Nome do Host save_label=Salvar R\u00F3tulo save_latency=Salvar Lat\u00EAncia save_message=Salvar Mensagens das Respostas save_overwrite_existing_file=O arquivo selecionado j\u00E1 existe, voc\u00EA quer substitu\u00ED-lo? save_requestheaders=Salvar Cabe\u00E7alhos das Requisi\u00E7\u00F5es (XML) save_responsedata=Salvar Dados das Respostas (XML) save_responseheaders=Salvar Cabe\u00E7alhos das Respostas (XML) save_samplecount=Salvar Amostra e Contador de Erros save_samplerdata=Salvar Dados do Testador (XML) save_subresults=Salvar sub resultados (XML) save_success=Salvar Sucessos save_threadcounts=Salvar Contador de Usu\u00E1rios Virtuais Ativos save_threadname=Salvar Nome do Usu\u00E1rio Virtual save_time=Salvar Tempo Decorrido save_timestamp=Salvar Data e Hora save_url=Salvar URL sbind=Ligar/Desligar \u00FAnico (single bind/unbind) scheduler=Agendador scheduler_configuration=Configura\u00E7\u00E3o do Agendador scope=Escopo search_base=Base de busca search_filter=Filtro de busca search_test=Teste de busca searchbase=Base de busca searchfilter=Filtro de Busca searchtest=Teste de Busca second=segundo secure=Seguro send_file=Enviar Arquivos com a Requisi\u00E7\u00E3o send_file_browse=Procurar... send_file_filename_label=Caminho do Arquivo\: send_file_param_name_label=Nome do Par\u00E2metro\: server=Nome do servidor ou IP\: servername=Nome do servidor\: session_argument_name=Nome do Argumento de Sess\u00E3o should_save=Voc\u00EA deveria salvar seu plano de teste antes de execut\u00E1-lo.\nSe voc\u00EA est\u00E1 usando suporte a arquivos de dados (ex\: Conjunto de Dados CSV ou _StringFromFile),\nent\u00E3o \u00E9 particularmente importante salvar seu script de teste.\nVoc\u00EA quer salvar seu plano de teste primeiro? shutdown=Desligar simple_config_element=Elemento de Configura\u00E7\u00E3o Simples simple_data_writer_title=Escritor de Dados Simples size_assertion_comparator_error_equal=igual a size_assertion_comparator_error_greater=maior que size_assertion_comparator_error_greaterequal=maior ou igual que size_assertion_comparator_error_less=menor que size_assertion_comparator_error_lessequal=menor ou igual que size_assertion_comparator_error_notequal=diferente de size_assertion_comparator_label=Tipo de Compara\u00E7\u00E3o size_assertion_failure=O resultado estava com tamanho errado\: Tinha {0} bytes, mas deveria ter {1} {2} bytes size_assertion_input_error=Favor entrar um inteiro positivo v\u00E1lido. size_assertion_label=Tamanho em bytes\: size_assertion_size_test=Tamanho para Asser\u00E7\u00E3o size_assertion_title=Asser\u00E7\u00E3o de Tamanho soap_action=A\u00E7\u00E3o SOAP soap_data_title=Dados Soap/XML-RPC soap_sampler_title=Requisi\u00E7\u00E3o SOAP/XML-RPC soap_send_action=Enviar a\u00E7\u00E3o SOAP\: spline_visualizer_average=M\u00E9dia spline_visualizer_incoming=Recebidos spline_visualizer_maximum=M\u00E1ximo spline_visualizer_minimum=M\u00EDnimo spline_visualizer_title=Visualizador Spline spline_visualizer_waitingmessage=Aguardando amostras split_function_separator=Separador. Padr\u00E3o \u00E9 , (v\u00EDrgula) split_function_string=String a ser separada ssl_alias_prompt=Favor digitar seu apelido preferido ssl_alias_select=Selecione seu apelido para o teste ssl_alias_title=Apelido do Cliente ssl_error_title=Problema com Armazenamento de Chave ssl_pass_prompt=Favor digitar sua senha ssl_pass_title=Senha do Armaz\u00E9m de Chaves (KeyStore) ssl_port=Porta SSL sslmanager=Gerenciador SSL start=Iniciar start_no_timers=Iniciar sem pausas starttime=Tempo de In\u00EDcio stop=Interromper stopping_test=Interrompendo todos os usu\u00E1rios virtuais. Por favor, seja paciente. stopping_test_failed=Um ou mais usu\u00E1rios virtuais n\u00E3o pararam; veja arquivo de log. stopping_test_title=Interrompendo Teste string_from_file_file_name=Entre com o caminho completo do arquivo string_from_file_seq_final=N\u00FAmero de sequ\u00EAncia final do arquivo (opcional) string_from_file_seq_start=Numero de sequ\u00EAncia inicial do arquivo (opcional) summariser_title=Gerar Sum\u00E1rio de Resultados summary_report=Relat\u00F3rio de Sum\u00E1rio switch_controller_label=Valor de Sele\u00E7\u00E3o switch_controller_title=Controlador de Sele\u00E7\u00E3o table_visualizer_sample_num=Amostra \# table_visualizer_sample_time=Tempo da amostra (ms) table_visualizer_start_time=Tempo de in\u00EDcio table_visualizer_status=Estado table_visualizer_success=Sucesso table_visualizer_thread_name=Nome do Usu\u00E1rio Virtual table_visualizer_warning=Alerta tcp_classname=Nome da classe TCPClient\: tcp_config_title=Configura\u00E7\u00E3o do Testador TCP tcp_nodelay=Alterar "Sem Atrasos" tcp_port=N\u00FAmero da Porta\: tcp_request_data=Texto para envio tcp_sample_title=Testador TCP tcp_timeout=Tempo limite (ms) template_field=Modelo\: test=Teste test_action_action=A\u00E7\u00E3o test_action_duration=Dura\u00E7\u00E3o (ms) test_action_pause=Pausar test_action_stop=Encerrar test_action_stop_now=Encerrar Agora test_action_target=Alvo test_action_target_test=Todos Usu\u00E1ros Virtuais test_action_target_thread=Usu\u00E1rio Virtual Atual test_action_title=A\u00E7\u00E3o de Teste test_configuration=Configura\u00E7\u00E3o do Teste test_plan=Plano de Teste test_plan_classpath_browse=Adiconar diret\u00F3rio ou jar ao caminho de classes (classpath) testconfiguration=Configura\u00E7\u00E3o de Teste testplan.serialized=Executar Grupos de Usu\u00E1rios consecutivamente (ex\: executar um grupo de cada vez) testplan_comments=Coment\u00E1rios\: testt=Teste thread_delay_properties=Propriedades de Atraso do Usu\u00E1rio Virtual thread_group_title=Grupo de Usu\u00E1rios thread_properties=Propriedades do Usu\u00E1rio Virtual threadgroup=Grupo de Usu\u00E1rios throughput_control_bynumber_label=Total de Execu\u00E7\u00F5es throughput_control_bypercent_label=Percentagem de Execu\u00E7\u00F5es throughput_control_perthread_label=Por Usu\u00E1rio throughput_control_title=Controlador de Vaz\u00E3o throughput_control_tplabel=Vaz\u00E3o time_format=Formato de string para o SimpleDateFormat (opcional) timelim=Tempo limite tr=Turco transaction_controller_include_timers=Incluem dura\u221a\u00df\u221a\u00a3o do temporizador e pr\u221a\u00a9-p\u221a\u2265s processadores em amostra gerada transaction_controller_parent=Gerar amostras do pai transaction_controller_title=Controlador de Transa\u00E7\u00E3o unbind=Liberar Usu\u00E1rio Virtual unescape_html_string=String a ser escapada unescape_string=String contendo escapes de Java uniform_timer_delay=Limite de Atraso Constante (em ms) uniform_timer_memo=Adiciona um atraso aleat\u00F3rio com uma distribui\u00E7\u00E3o uniforme uniform_timer_range=Atraso M\u00E1ximo Aleat\u00F3rio (ms) uniform_timer_title=Temporizador Aleat\u00F3rio Uniforme update_per_iter=Atualizar uma \u00FAnica vez por itera\u00E7\u00E3o upload=Subir Arquivo upper_bound=Limite Superior url_config_protocol=Protocolo\: url_config_title=Padr\u00F5es de Requisi\u00E7\u00E3o HTTP url_full_config_title=Amostra de URL Completa url_multipart_config_title=Padr\u00F5es de Requisi\u00E7\u00E3o HTTP Multiparte use_keepalive=Usar Manter Ativo (KeepAlive) use_multipart_for_http_post=Usar multipart/form-data para HTTP POST use_recording_controller=Usar Controlador de Grava\u00E7\u00E3o user=Usu\u00E1rio user_defined_test=Teste Definido pelo Usu\u00E1rio user_defined_variables=Vari\u00E1veis Definidas Pelo Usu\u00E1rio user_param_mod_help_note=(N\u00E3o modifique isto. Modifique o arquivo com aquele nome no diret\u00F3rio /bin do JMeter) user_parameters_table=Par\u00E2metros user_parameters_title=Par\u00E2metros do Usu\u00E1rio userdn=Nome do Usu\u00E1rio username=Nome do Usu\u00E1rio userpw=Senha value=Valor var_name=Nome de Refer\u00EAncia variable_name_param=Nome da vari\u00E1vel (pode incluir refer\u00EAncias de vari\u00E1veis e fun\u00E7\u00F5es) view_graph_tree_title=Ver Gr\u00E1fico de \u00C1rvore view_results_assertion_error=Erro de asser\u00E7\u00E3o\: view_results_assertion_failure=Falha de asser\u00E7\u00E3o\: view_results_assertion_failure_message=Mensagem de falha de asser\u00E7\u00E3o\: view_results_desc=Exibe os resultados de amostragem na forma de \u00E1rvore view_results_error_count=Contador de Erros\: view_results_fields=campos\: view_results_in_table=Ver Resultados em Tabela view_results_latency=Lat\u00EAncia\: view_results_load_time=Tempo de Carga\: view_results_render_html=Renderizar HTML view_results_render_json=Renderizar JSON view_results_render_text=Exibir Texto view_results_render_xml=Renderizar XML view_results_request_headers=Cabe\u00E7alhos das Requisi\u00E7\u00F5es view_results_response_code=C\u00F3digo de Resposta\: view_results_response_headers=Cabe\u00E7alhos da Resposta\: view_results_response_message=Mensagem de resposta\: view_results_response_too_large_message=Resposta muito grande para ser exibida. Tamanho\: view_results_response_partial_message=In\u00EDcio da mensagem: view_results_sample_count=Contagem de amostras\: view_results_sample_start=In\u00EDcio da Amostra\: view_results_size_in_bytes=Tamanho em bytes\: view_results_tab_assertion=Resultados da asser\u00E7\u00E3o view_results_tab_request=Requisi\u00E7\u00E3o view_results_tab_response=Dados da resposta view_results_tab_sampler=Resultados do testador view_results_thread_name=Nome do Usu\u00E1rio Virtual\: view_results_title=Ver Resultados view_results_tree_title=Ver \u00C1rvore de Resultados warning=Alerta\! web_request=Requisi\u00E7\u00E3o HTTP web_server=Servidor Web web_server_client=Implementa\u00E7\u00E3o do Cliente\: web_server_domain=Nome do Servidor ou IP\: web_server_port=N\u00FAmero da Porta\: web_server_timeout_connect=Conectar\: web_server_timeout_response=Resposta\: web_server_timeout_title=Tempo limite (ms) web_testing2_title=Cliente HTTP de Requisi\u00E7\u00E3o HTTP web_testing_embedded_url_pattern=URLs embutidas precisam combinar\: web_testing_retrieve_images=Recuperar todos recursos embutidos a partir de arquivos HTML web_testing_title=Requisi\u00E7\u00E3o HTTP webservice_proxy_note=Se Usar Proxy HTTP estiver marcado, mas nenhum host ou porta s\u00E3o fornecidos, o testador webservice_proxy_note2=ir\u00E1 analizar as op\u00E7\u00F5es de linha de comando. Se nenhum host proxy ou portas forem providos webservice_proxy_note3=tamb\u00E9m, ele ir\u00E1 falhar em modo silencioso. webservice_proxy_port=Porta do Proxy webservice_sampler_title=Requisi\u00E7\u00E3o (SOAP) Requisi\u00E7\u00E3o webservice_soap_action=A\u00E7\u00E3o SOAP webservice_timeout=Tempo limite\: webservice_use_proxy=Usar Proxy HTTP while_controller_label=Condi\u00E7\u00F5e (fun\u00E7\u00E3o ou vari\u00E1vel) while_controller_title=Controlador de Enquanto workbench_title=\u00C1rea de Trabalho wsdl_helper_error=O WSDL \u00E9 inv\u00E1lido, favor verificar a url. wsdl_url_error=O WSDL estava vazio. xml_assertion_title=Asser\u00E7\u00E3o XML xml_namespace_button=Usar Espa\u00E7o de Nome (namespace) xml_tolerant_button=Processador de XML/HTML Tolerante xml_validate_button=Validar XML xml_whitespace_button=Ignorar espa\u00E7os em branco xmlschema_assertion_label=Nome do arquivo\: xmlschema_assertion_title=Asser\u00E7\u00E3o de Esquema de XML xpath_assertion_button=Validar xpath_assertion_check=Verificar Express\u00E3o XPath xpath_assertion_error=Erro com XPath xpath_assertion_failed=Express\u00F5es XPath Inv\u00E1lidas xpath_assertion_negate=Verdadeiro se nada combina xpath_assertion_option=Op\u00E7\u00F5es de Processamento de XML xpath_assertion_test=Asser\u00E7\u00E3o XPath xpath_assertion_tidy=Tentar e melhorar entrada xpath_assertion_title=Asser\u00E7\u00E3o XPath xpath_assertion_valid=Express\u00E3o XPath V\u00E1lida xpath_assertion_validation=Validar XML de acordo com DTD xpath_assertion_whitespace=Ignorar espa\u00E7os em branco xpath_expression=Express\u00F5es XPath que ser\u00E3o combinadas xpath_extractor_query=Consulta XPath xpath_extractor_title=Extractor XPath xpath_file_file_name=Arquivo XML de onde os valores ser\u00E3o extra\u00EDdos xpath_tidy_quiet=Quieto xpath_tidy_report_errors=Reportar erros xpath_tidy_show_warnings=Exibir alertas you_must_enter_a_valid_number=Voc\u00EA precisa entrar com um n\u00FAmero v\u00E1lido zh_cn=Chin\u00EAs (Simplificado) zh_tw=Chin\u00EAs (Tradicional) apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_zh_CN.properties0000644000175000017500000005577512032647221027477 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. about=\u5173\u4E8EApache JMeter add=\u6DFB\u52A0 add_as_child=\u6DFB\u52A0\u5B50\u8282\u70B9 add_parameter=\u6DFB\u52A0\u53D8\u91CF add_pattern=\u6DFB\u52A0\u6A21\u5F0F\uFF1A add_test=\u6DFB\u52A0\u6D4B\u8BD5 add_user=\u6DFB\u52A0\u7528\u6237 add_value=\u6DFB\u52A0\u6570\u503C aggregate_report=\u805A\u5408\u62A5\u544A aggregate_report_total_label=\u603B\u4F53 als_message=\u6CE8\u610F\uFF1A\u8BBF\u95EE\u65E5\u5FD7\u89E3\u6790\u5668\uFF08Access Log Parser\uFF09\u662F\u901A\u7528\u7684\u5E76\u5141\u8BB8\u5B9A\u4E49\u63D2\u4EF6 als_message2=\u81EA\u5B9A\u4E49\u7684\u89E3\u6790\u5668\u3002\u8981\u8FD9\u4E48\u505A\uFF0C\u5B9E\u73B0LogParser\uFF0C\u6DFB\u52A0jar\u5230 als_message3=/lib\u76EE\u5F55\u5E76\u5728sampler\u4E2D\u8F93\u5165\u7C7B\u540D\u79F0\u3002 analyze=\u5206\u6790\u6570\u636E\u6587\u4EF6... anchor_modifier_title=HTML\u94FE\u63A5\u89E3\u6790\u5668 appearance=\u5916\u89C2 argument_must_not_be_negative=\u53C2\u6570\u4E0D\u5141\u8BB8\u662F\u8D1F\u503C\uFF01 assertion_code_resp=\u54CD\u5E94\u4EE3\u7801 assertion_contains=\u5305\u62EC assertion_matches=\u5339\u914D assertion_message_resp=\u54CD\u5E94\u4FE1\u606F assertion_not=\u5426 assertion_pattern_match_rules=\u6A21\u5F0F\u5339\u914D\u89C4\u5219 assertion_patterns_to_test=\u8981\u6D4B\u8BD5\u7684\u6A21\u5F0F assertion_resp_field=\u8981\u6D4B\u8BD5\u7684\u54CD\u5E94\u5B57\u6BB5 assertion_text_resp=\u54CD\u5E94\u6587\u672C assertion_textarea_label=\u65AD\u8A00\uFF1A assertion_title=\u54CD\u5E94\u65AD\u8A00 assertion_url_samp=URL\u6837\u672C assertion_visualizer_title=\u65AD\u8A00\u7ED3\u679C auth_base_url=\u57FA\u7840URL auth_manager_title=HTTP\u6388\u6743\u7BA1\u7406\u5668 auths_stored=\u5B58\u50A8\u5728\u6388\u6743\u7BA1\u7406\u5668\u4E2D\u7684\u6388\u6743 browse=\u6D4F\u89C8... bsf_sampler_title=BSF \u53D6\u6837\u5668 bsf_script=\u8981\u8FD0\u884C\u7684\u811A\u672C bsf_script_file=\u8981\u8FD0\u884C\u7684\u811A\u672C\u6587\u4EF6 bsf_script_language=\u811A\u672C\u8BED\u8A00\uFF1A bsf_script_parameters=\u4F20\u9012\u7ED9\u811A\u672C/\u6587\u4EF6\u7684\u53C2\u6570\uFF1A bsh_assertion_title=BeanShell\u65AD\u8A00 bsh_function_expression=\u8868\u8FBE\u5F0F\u6C42\u503C bsh_script_file=\u811A\u672C\u6587\u4EF6 bsh_script_parameters=\u53C2\u6570\uFF08-> String Parameters \u548C String [ ]bash.args\uFF09 busy_testing=\u6B63\u5728\u6D4B\u8BD5\uFF0C\u8BF7\u5728\u4FEE\u6539\u8BBE\u7F6E\u524D\u505C\u6B62\u6D4B\u8BD5 cancel=\u53D6\u6D88 cancel_exit_to_save=\u6D4B\u8BD5\u6761\u76EE\u672A\u5B58\u50A8\u3002\u4F60\u60F3\u5728\u9000\u51FA\u524D\u5B58\u50A8\u5417\uFF1F cancel_new_to_save=\u6D4B\u8BD5\u6761\u76EE\u672A\u5B58\u50A8\u3002\u4F60\u60F3\u5728\u6E05\u7A7A\u6D4B\u8BD5\u8BA1\u5212\u524D\u5B58\u50A8\u5417\uFF1F choose_function=\u9009\u62E9\u4E00\u4E2A\u529F\u80FD choose_language=\u9009\u62E9\u8BED\u8A00 clear=\u6E05\u9664 clear_all=\u6E05\u9664\u5168\u90E8 clear_cookies_per_iter=\u6BCF\u6B21\u53CD\u590D\u6E05\u9664Cookies \uFF1F column_delete_disallowed=\u4E0D\u5141\u8BB8\u5220\u9664\u6B64\u5217 column_number=CSV\u6587\u4EF6\u5217\u53F7| next| *alias configure_wsdl=\u914D\u7F6E constant_throughput_timer_memo=\u5728\u53D6\u6837\u95F4\u6DFB\u52A0\u5EF6\u8FDF\u6765\u83B7\u5F97\u56FA\u5B9A\u7684\u541E\u5410\u91CF constant_timer_delay=\u7EBF\u7A0B\u5EF6\u8FDF\uFF08\u6BEB\u79D2\uFF09\uFF1A constant_timer_memo=\u5728\u53D6\u6837\u95F4\u6DFB\u52A0\u56FA\u5B9A\u5EF6\u8FDF constant_timer_title=\u56FA\u5B9A\u5B9A\u65F6\u5668 controller=\u63A7\u5236\u5668 cookie_manager_title=HTTP Cookie \u7BA1\u7406\u5668 cookies_stored=\u5B58\u50A8\u5728Cookie\u7BA1\u7406\u5668\u4E2D\u7684Cookie copy=\u590D\u5236 counter_config_title=\u8BA1\u6570\u5668 counter_per_user=\u4E0E\u6BCF\u7528\u6237\u72EC\u7ACB\u7684\u8DDF\u8E2A\u8BA1\u6570\u5668 cut=\u526A\u5207 cut_paste_function=\u62F7\u8D1D\u5E76\u7C98\u8D34\u51FD\u6570\u5B57\u7B26\u4E32 database_sql_query_string=SQL\u67E5\u8BE2\u5B57\u7B26\u4E32\uFF1A database_sql_query_title=JDBC SQL \u67E5\u8BE2\u7F3A\u7701\u503C de=\u5FB7\u8BED default_parameters=\u7F3A\u7701\u53C2\u6570 default_value_field=\u7F3A\u7701\u503C\uFF1A delay=\u542F\u52A8\u5EF6\u8FDF\uFF08\u79D2\uFF09 delete=\u5220\u9664 delete_parameter=\u5220\u9664\u53D8\u91CF delete_test=\u5220\u9664\u6D4B\u8BD5 delete_user=\u5220\u9664\u7528\u6237 disable=\u7981\u7528 domain=\u57DF duration=\u6301\u7EED\u65F6\u95F4\uFF08\u79D2\uFF09 duration_assertion_duration_test=\u65AD\u8A00\u6301\u7EED\u65F6\u95F4 duration_assertion_failure=\u64CD\u4F5C\u6301\u7EED\u592A\u957F\u65F6\u95F4\uFF1A\u4ED6\u82B1\u8D39\u4E86{0}\u6BEB\u79D2\uFF0C\u4F46\u4E0D\u5E94\u8BE5\u8D85\u8FC7{1}\u6BEB\u79D2\u3002 duration_assertion_input_error=\u8BF7\u8F93\u5165\u4E00\u4E2A\u6709\u6548\u7684\u6B63\u6574\u6570\u3002 duration_assertion_label=\u6301\u7EED\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF1A duration_assertion_title=\u65AD\u8A00\u6301\u7EED\u65F6\u95F4 edit=\u7F16\u8F91 email_results_title=\u7535\u5B50\u90AE\u4EF6\u7ED3\u679C en=\u82F1\u8BED enable=\u542F\u7528 encode?=\u7F16\u7801\uFF1F encoded_value=URL\u7F16\u7801\u540E\u7684\u503C endtime=\u7ED3\u675F\u65F6\u95F4 entry_dn=\u5165\u53E3DN error_loading_help=\u52A0\u8F7D\u5E2E\u52A9\u9875\u9762\u51FA\u9519 error_occurred=\u53D1\u751F\u9519\u8BEF example_data=\u6837\u672C\u6570\u636E example_title=\u793A\u4F8B\u53D6\u6837\u5668 exit=\u9000\u51FA expiration=\u8FC7\u671F field_name=\u5B57\u6BB5\u540D\u6210 file=\u6587\u4EF6 file_already_in_use=\u6587\u4EF6\u6B63\u5728\u4F7F\u7528 file_visualizer_append=\u6DFB\u52A0\u5230\u5DF2\u7ECF\u5B58\u5728\u7684\u6570\u636E\u6587\u4EF6 file_visualizer_auto_flush=\u5728\u6BCF\u6B21\u6570\u636E\u53D6\u6837\u540E\u81EA\u52A8\u66F4\u65B0 file_visualizer_browse=\u6D4F\u89C8... file_visualizer_close=\u5173\u95ED file_visualizer_file_options=\u6587\u4EF6\u64CD\u4F5C file_visualizer_filename=\u6587\u4EF6\u540D file_visualizer_flush=\u66F4\u65B0 file_visualizer_missing_filename=\u6CA1\u6709\u6307\u5B9A\u8F93\u51FA\u6587\u4EF6\u540D\u3002 file_visualizer_open=\u6253\u5F00 file_visualizer_output_file=\u6240\u6709\u6570\u636E\u5199\u5165\u4E00\u4E2A\u6587\u4EF6 file_visualizer_submit_data=\u5305\u62EC\u88AB\u63D0\u4EA4\u7684\u6570\u636E file_visualizer_title=\u6587\u4EF6\u62A5\u544A\u5668 file_visualizer_verbose=\u8BE6\u7EC6\u7684\u8F93\u51FA filename=\u6587\u4EF6\u540D\u79F0 follow_redirects=\u8DDF\u968F\u91CD\u5B9A\u5411 follow_redirects_auto=\u81ea\u52a8\u91cd\u5b9a\u5411 foreach_controller_title=ForEach\u63A7\u5236\u5668 foreach_input=\u8F93\u5165\u53D8\u91CF\u524D\u7F00 foreach_output=\u8F93\u51FA\u53D8\u91CF\u540D\u79F0 ftp_sample_title=FTP\u8BF7\u6C42\u7F3A\u7701\u503C ftp_testing_title=FTP\u8BF7\u6C42 function_dialog_menu_item=\u51FD\u6570\u52A9\u624B\u5BF9\u8BDD\u6846 function_helper_title=\u51FD\u6570\u52A9\u624B function_name_param=\u51FD\u6570\u540D\u79F0\u3002\u7528\u4E8E\u5B58\u50A8\u5728\u6D4B\u8BD5\u8BA1\u5212\u4E2D\u5176\u4ED6\u7684\u65B9\u5F0F\u4F7F\u7528\u7684\u503C\u3002 function_params=\u51FD\u6570\u53C2\u6570 functional_mode=\u51FD\u6570\u6D4B\u8BD5\u6A21\u5F0F functional_mode_explanation=\u53EA\u6709\u5F53\u4F60\u9700\u8981\u8BB0\u5F55\u6BCF\u4E2A\u8BF7\u6C42\u4ECE\u670D\u52A1\u5668\u53D6\u5F97\u7684\u6570\u636E\u5230\u6587\u4EF6\u65F6\n\u624D\u9700\u8981\u9009\u62E9\u51FD\u6570\u6D4B\u8BD5\u6A21\u5F0F\u3002\n\n\u9009\u62E9\u8FD9\u4E2A\u9009\u9879\u5F88\u5F71\u54CD\u6027\u80FD\u3002\n gaussian_timer_delay=\u56FA\u5B9A\u5EF6\u8FDF\u504F\u79FB\uFF08\u6BEB\u79D2\uFF09\uFF1A gaussian_timer_memo=\u6DFB\u52A0\u4E00\u4E2A\u968F\u673A\u7684\u9AD8\u65AF\u5206\u5E03\u5EF6\u8FDF gaussian_timer_range=\u504F\u5DEE\uFF08\u6BEB\u79D2\uFF09\uFF1A gaussian_timer_title=\u9AD8\u65AF\u968F\u673A\u5B9A\u65F6\u5668 generate=\u751F\u6210 generator=\u751F\u6210\u5668\u7C7B\u540D\u79F0 generator_cnf_msg=\u4E0D\u80FD\u627E\u5230\u751F\u6210\u5668\u7C7B\u3002\u8BF7\u786E\u5B9A\u4F60\u5C06jar\u6587\u4EF6\u653E\u7F6E\u5728/lib\u76EE\u5F55\u4E2D\u3002 generator_illegal_msg=\u7531\u4E8EIllegalAcessException\uFF0C\u4E0D\u80FD\u8BBF\u95EE\u751F\u6210\u5668\u7C7B\u3002 generator_instantiate_msg=\u4E0D\u80FD\u521B\u5EFA\u751F\u6210\u5668\u89E3\u6790\u5668\u7684\u5B9E\u4F8B\u3002\u8BF7\u786E\u4FDD\u751F\u6210\u5668\u5B9E\u73B0\u4E86Generator\u63A5\u53E3\u3002 get_xml_from_file=\u5E26SOAP XML \u6570\u636E\u7684\u6587\u4EF6\uFF08\u8986\u76D6\u4E0A\u9762\u7684\u6587\u672C\uFF09 get_xml_from_random=\u6D88\u606F\u6587\u4EF6\u5939 graph_choose_graphs=\u8981\u663E\u793A\u7684\u56FE\u5F62 graph_full_results_title=\u56FE\u5F62\u7ED3\u679C graph_results_average=\u5E73\u5747 graph_results_data=\u6570\u636E graph_results_deviation=\u504F\u79BB graph_results_latest_sample=\u6700\u65B0\u6837\u672C graph_results_median=\u4E2D\u503C graph_results_no_samples=\u6837\u672C\u6570\u76EE graph_results_throughput=\u541E\u5410\u91CF graph_results_title=\u56FE\u5F62\u7ED3\u679C grouping_add_separators=\u5728\u7EC4\u95F4\u6DFB\u52A0\u5206\u9694 grouping_in_controllers=\u6BCF\u4E2A\u7EC4\u653E\u5165\u4E00\u4E2A\u65B0\u7684\u63A7\u5236\u5668 grouping_mode=\u5206\u7EC4\uFF1A grouping_no_groups=\u4E0D\u5BF9\u6837\u672C\u5206\u7EC4 grouping_store_first_only=\u53EA\u5B58\u50A8\u6BCF\u4E2A\u7EC4\u7684\u7B2C\u4E00\u4E2A\u6837\u672C header_manager_title=HTTP\u4FE1\u606F\u5934\u7BA1\u7406\u5668 headers_stored=\u4FE1\u606F\u5934\u5B58\u50A8\u5728\u4FE1\u606F\u5934\u7BA1\u7406\u5668\u4E2D help=\u5E2E\u52A9 html_parameter_mask=HTML\u53C2\u6570\u63A9\u7801 http_response_code=HTTP\u578B\u5E94\u4EE3\u7801 http_url_rewriting_modifier_title=HTTP URL \u91CD\u5199\u4FEE\u9970\u7B26 http_user_parameter_modifier=HTTP \u7528\u6237\u53C2\u6570\u4FEE\u9970\u7B26 id_prefix=ID\u524D\u7F00 id_suffix=ID\u540E\u7F00 if_controller_label=\u6761\u4EF6 if_controller_title=\u5982\u679C\uFF08If\uFF09\u63A7\u5236\u5668 ignore_subcontrollers=\u5FFD\u7565\u8D44\u63A7\u5236\u5668\u5757 include_equals=\u5305\u542B\u7B49\u4E8E\uFF1F increment=\u9012\u589E infinite=\u6C38\u8FDC insert_after=\u4E4B\u540E\u63D2\u5165 insert_before=\u4E4B\u524D\u63D2\u5165 insert_parent=\u63D2\u5165\u4E0A\u7EA7 interleave_control_title=\u4EA4\u66FF\u63A7\u5236\u5668 intsum_param_1=\u8981\u6DFB\u52A0\u7684\u7B2C\u4E00\u4E2A\u6574\u6570\u3002 intsum_param_2=\u8981\u6DFB\u52A0\u7684\u7B2C\u4E8C\u4E2A\u6574\u6570\u2014\u2014\u66F4\u591A\u7684\u6574\u6570\u53EF\u4EE5\u901A\u8FC7\u6DFB\u52A0\u66F4\u591A\u7684\u53C2\u6570\u6765\u6C42\u548C\u3002 invalid_data=\u65E0\u6548\u6570\u636E invalid_mail_server=\u90AE\u4EF6\u670D\u52A1\u5668\u4E0D\u53EF\u77E5\u3002 iteration_counter_arg_1=TRUE\uFF0C\u6BCF\u4E2A\u7528\u6237\u6709\u81EA\u5DF1\u7684\u8BA1\u6570\u5668\uFF1BFALSE\uFF0C\u4F7F\u7528\u5168\u5C40\u8BA1\u6570\u5668 iterator_num=\u5FAA\u73AF\u6B21\u6570 java_request=Java\u8BF7\u6C42 java_request_defaults=Java\u8BF7\u6C42\u9ED8\u8BA4\u503C jndi_config_title=JNDI\u914D\u7F6E jndi_lookup_name=\u8FDC\u7A0B\u63A5\u53E3 jndi_lookup_title=JNDI\u67E5\u8BE2\u914D\u7F6E jndi_method_button_invoke=\u8C03\u7528 jndi_method_button_reflect=\u53CD\u5C04 jndi_method_home_name=\u672C\u5730\u65B9\u6CD5\u540D\u79F0 jndi_method_home_parms=\u672C\u5730\u65B9\u6CD5\u53C2\u6570 jndi_method_name=\u65B9\u6CD5\u914D\u7F6E jndi_method_remote_interface_list=\u8FDC\u7A0B\u63A5\u53E3 jndi_method_remote_name=\u8FDC\u7A0B\u65B9\u6CD5\u540D\u79F0 jndi_method_remote_parms=\u8FDC\u7A0B\u65B9\u6CD5\u53C2\u6570 jndi_method_title=\u8FDC\u7A0B\u65B9\u6CD5\u914D\u7F6E jndi_testing_title=JNDI\u8BF7\u6C42 jndi_url_jndi_props=JNDI\u5C5E\u6027 ja=\u65E5\u8BED ldap_sample_title=LDAP\u8BF7\u6C42\u9ED8\u8BA4\u503C ldap_testing_title=LDAP\u8BF7\u6C42 load=\u8F7D\u5165 load_wsdl=\u8F7D\u5165WSDL log_errors_only=\u4EC5\u65E5\u5FD7\u9519\u8BEF log_file=\u65E5\u5FD7\u6587\u4EF6\u4F4D\u7F6E log_parser=\u65E5\u5FD7\u89E3\u6790\u5668\u7C7B\u540D log_parser_cnf_msg=\u627E\u4E0D\u5230\u7C7B\u3002\u786E\u8BA4\u4F60\u5C06jar\u6587\u4EF6\u653E\u5728\u4E86/lib\u76EE\u5F55\u4E2D\u3002 log_parser_illegal_msg=\u56E0\u4E3AIllegalAccessException\u4E0D\u80FD\u8BBF\u95EE\u7C7B\u3002 log_parser_instantiate_msg=\u4E0D\u80FD\u521B\u5EFA\u65E5\u5FD7\u89E3\u6790\u5668\u5B9E\u4F8B\u3002\u786E\u8BA4\u89E3\u6790\u5668\u5B9E\u73B0\u4E86LogParser\u63A5\u53E3\u3002 log_sampler=Tomcat\u8BBF\u95EE\u65E5\u5FD7\u53D6\u6837\u5668 logic_controller_title=\u7B80\u5355\u63A7\u5236\u5668 login_config=\u767B\u9646\u914D\u7F6E login_config_element=\u767B\u9646\u914D\u7F6E\u5143\u4EF6/\u7D20 loop_controller_title=\u5FAA\u73AF\u63A7\u5236\u5668 looping_control=\u5FAA\u73AF\u63A7\u5236 lower_bound=\u8F83\u4F4E\u8303\u56F4 mailer_attributes_panel=\u90AE\u4EF6\u5C5E\u6027 mailer_error=\u4E0D\u80FD\u53D1\u9001\u90AE\u4EF6\u3002\u8BF7\u4FEE\u6B63\u9519\u8BEF\u3002 mailer_visualizer_title=\u90AE\u4EF6\u89C2\u5BDF\u4EEA match_num_field=\u5339\u914D\u6570\u5B57\uFF080\u4EE3\u8868\u968F\u673A\uFF09\uFF1A max=\u6700\u5927\u503C maximum_param=\u4E00\u4E2A\u8303\u56F4\u5185\u5141\u8BB8\u7684\u6700\u5927\u503C md5hex_assertion_failure=MD5\u603B\u5408\u65AD\u8A00\u9519\u8BEF\uFF1A\u5F97\u5230\u4E86{0}\uFF0C\u4F46\u5E94\u8BE5\u662F{1} md5hex_assertion_md5hex_test=\u8981\u65AD\u8A00\u7684MD5Hex md5hex_assertion_title=MD5Hex\u65AD\u8A00 memory_cache=\u5185\u5B58\u7F13\u5B58 menu_assertions=\u65AD\u8A00 menu_close=\u5173\u95ED menu_config_element=\u914D\u7F6E\u5143\u4EF6 menu_edit=\u7F16\u8F91 menu_listener=\u76D1\u542C\u5668 menu_logic_controller=\u903B\u8F91\u63A7\u5236\u5668 menu_merge=\u5408\u5E76 menu_modifiers=\u4FEE\u9970\u7B26 menu_non_test_elements=\u975E\u6D4B\u8BD5\u5143\u4EF6 menu_open=\u6253\u5F00 menu_post_processors=\u540E\u7F6E\u5904\u7406\u5668 menu_pre_processors=\u524D\u7F6E\u5904\u7406\u5668 menu_response_based_modifiers=\u57FA\u4E8E\u76F8\u5E94\u7684\u4FEE\u9970\u7B26 menu_timer=\u5B9A\u65F6\u5668 metadata=\u539F\u6570\u636E method=\u65B9\u6CD5\uFF1A mimetype=MIME\u7C7B\u578B minimum_param=\u4E00\u4E2A\u8303\u56F4\u5185\u7684\u6700\u5C0F\u503C minute=\u5206\u949F modification_controller_title=\u4FEE\u6B63\u63A7\u5236\u5668 modification_manager_title=\u4FEE\u6B63\u7BA1\u7406\u5668 modify_test=\u4FEE\u6539\u6D4B\u8BD5 module_controller_title=\u6A21\u5757\u63A7\u5236\u5668 monitor_equation_active=\u6D3B\u52A8\uFF1A(busy/max)>25% monitor_equation_dead=\u975E\u6D3B\u52A8\uFF1A\u6CA1\u6709\u54CD\u5E94 monitor_equation_healthy=Healthy\:(busy/max)<25% monitor_health_title=\u76D1\u89C6\u5668\u7ED3\u679C monitor_is_title=\u7528\u4F5C\u76D1\u89C6\u5668 monitor_label_right_active=\u6D3B\u52A8\u7684 monitor_label_right_dead=\u975E\u6D3B\u52A8\u7684 monitor_label_right_warning=\u8B66\u544A monitor_legend_load=\u8D1F\u8F7D monitor_legend_thread_per=\u7EBF\u7A0B%(busy/max) monitor_performance_servers=\u670D\u52A1\u5668 monitor_performance_tab_title=\u6027\u80FD monitor_performance_title=\u6027\u80FD\u56FE name=\u540D\u79F0\uFF1A new=\u65B0\u5EFA no=\u632A\u5A01\u8BED number_of_threads=\u7EBF\u7A0B\u6570\uFF1A once_only_controller_title=\u4EC5\u4E00\u6B21\u63A7\u5236\u5668 open=\u6253\u5F00... option=\u9009\u9879 optional_tasks=\u5176\u4ED6\u4EFB\u52A1 paramtable=\u540C\u8BF7\u6C42\u4E00\u8D77\u53D1\u9001\u53C2\u6570\uFF1A password=\u5BC6\u7801 paste=\u7C98\u8D34 paste_insert=\u4F5C\u4E3A\u63D2\u5165\u7C98\u8D34 path=\u8DEF\u5F84\uFF1A path_extension_choice=\u8DEF\u5F84\u6269\u5C55\uFF08\u4F7F\u7528";"\u4F5C\u5206\u9694\u7B26\uFF09 patterns_to_exclude=\u6392\u9664\u6A21\u5F0F patterns_to_include=\u5305\u542B\u6A21\u5F0F port=\u7AEF\u53E3\uFF1A property_default_param=\u9ED8\u8BA4\u503C property_edit=\u7F16\u8F91 property_editor.value_is_invalid_title=\u65E0\u6548\u8F93\u5165 property_name_param=\u5C5E\u6027\u540D\u79F0 property_undefined=\u672A\u5B9A\u4E49 protocol=\u534F\u8BAE\uFF1A protocol_java_border=Java\u7C7B protocol_java_classname=\u7C7B\u540D\u79F0\uFF1A protocol_java_config_tile=\u914D\u7F6EJava\u6837\u672C protocol_java_test_title=Java\u6D4B\u8BD5 proxy_assertions=\u6DFB\u52A0\u65AD\u8A00 proxy_cl_error=\u5982\u679C\u6307\u5B9A\u4EE3\u7406\u670D\u52A1\u5668\uFF0C\u4E3B\u673A\u548C\u7AEF\u53E3\u5FC5\u987B\u6307\u5B9A proxy_headers=\u8BB0\u5F55HTTP\u4FE1\u606F\u5934 proxy_separators=\u6DFB\u52A0\u5206\u9694\u7B26 proxy_target=\u76EE\u6807\u63A7\u5236\u5668\uFF1A proxy_title=HTTP\u4EE3\u7406\u670D\u52A1\u5668 random_control_title=\u968F\u673A\u63A7\u5236\u5668 random_order_control_title=\u968F\u673A\u987A\u5E8F\u63A7\u5236\u5668 read_response_message=\u8BFB\u53D6\u54CD\u5E94\u6CA1\u6709\u9009\u4E2D\u3002\u8981\u770B\u5230\u54CD\u5E94\uFF0C\u8BF7\u5728\u53D6\u6837\u5668\u4E2D\u9009\u4E2D\u8BFB\u53D6\u54CD\u5E94\u590D\u9009\u6846\u3002 read_response_note=\u5982\u679C\u8BFB\u53D6\u54CD\u5E94\u6CA1\u6709\u9009\u4E2D\uFF0C\u53D6\u6837\u5668\u4E0D\u4F1A\u8BFB\u53D6\u54CD\u5E94\u3002 read_response_note2=\u6216\u8BBE\u7F6E\u6837\u672C\u7ED3\u679C\u3002\u8FD9\u4F1A\u63D0\u9AD8\u6027\u80FD\u3002 read_response_note3=\u54CD\u5E94\u5185\u5BB9\u4E0D\u4F1A\u8BB0\u5F55\u3002 read_soap_response=\u8BFB\u53D6SOAP\u54CD\u5E94 record_controller_title=\u5F55\u5236\u63A7\u5236\u5668 ref_name_field=\u5F15\u7528\u540D\u79F0\uFF1A regex_extractor_title=\u6B63\u5219\u8868\u8FBE\u5F0F\u63D0\u53D6\u5668 regex_field=\u6B63\u5219\u8868\u8FBE\u5F0F\uFF1A regex_source=\u8981\u68C0\u67E5\u7684\u54CD\u5E94\u5B57\u6BB5 regex_src_body=\u4E3B\u4F53 regex_src_hdrs=\u4FE1\u606F\u5934 regexfunc_param_1=\u7528\u4E8E\u4ECE\u524D\u4E00\u4E2A\u8BF7\u6C42\u641C\u7D22\u7ED3\u679C\u7684\u6B63\u5219\u8868\u8FBE\u5F0F remote_exit=\u8FDC\u7A0B\u9000\u51FA remote_exit_all=\u8FDC\u7A0B\u5168\u90E8\u9000\u51FA remote_start=\u8FDC\u7A0B\u542F\u52A8 remote_start_all=\u8FDC\u7A0B\u5168\u90E8\u542F\u52A8 remote_stop=\u8FDC\u7A0B\u505C\u6B62 remote_stop_all=\u8FDC\u7A0B\u5168\u90E8\u505C\u6B62 remove=\u5220\u9664 report=\u62A5\u544A request_data=\u8BF7\u6C42\u6570\u636E restart=\u91CD\u542F resultsaver_prefix=\u6587\u4EF6\u540D\u79F0\u524D\u7F00\uFF1A resultsaver_title=\u4FDD\u5B58\u54CD\u5E94\u5230\u6587\u4EF6 root=\u6839 root_title=\u6839 run=\u8FD0\u884C running_test=\u6B63\u5728\u8FD0\u884C\u7684\u6D4B\u8BD5 sampler_on_error_action=\u5728\u53D6\u6837\u5668\u9519\u8BEF\u540E\u8981\u6267\u884C\u7684\u52A8\u4F5C sampler_on_error_continue=\u7EE7\u7EED sampler_on_error_stop_test=\u505C\u6B62\u6D4B\u8BD5 sampler_on_error_stop_thread=\u505C\u6B62\u7EBF\u7A0B save=\u4FDD\u5B58\u6D4B\u8BD5\u8BA1\u5212 save?=\u4FDD\u5B58\uFF1F save_all_as=\u4FDD\u5B58\u6D4B\u8BD5\u8BA1\u5212\u4E3A save_as=\u4FDD\u5B58\u4E3A... scheduler=\u8C03\u5EA6\u5668 scheduler_configuration=\u8C03\u5EA6\u5668\u914D\u7F6E search_filter=\u641C\u7D22\u8FC7\u6EE4\u5668 search_test=\u641C\u7D22\u6D4B\u8BD5 secure=\u5B89\u5168 send_file=\u540C\u8BF7\u6C42\u4E00\u8D77\u53D1\u9001\u6587\u4EF6\uFF1A send_file_browse=\u6D4F\u89C8... send_file_filename_label=\u6587\u4EF6\u540D\u79F0\uFF1A send_file_mime_label=MIME\u7C7B\u578B\uFF1A send_file_param_name_label=\u53C2\u6570\u540D\u79F0\uFF1A server=\u670D\u52A1\u5668\u540D\u79F0\u6216IP\uFF1A servername=\u670D\u52A1\u5668\u540D\u79F0\uFF1A session_argument_name=\u4F1A\u8BDD\u53C2\u6570\u540D\u79F0\uFF1A shutdown=\u5173\u95ED simple_config_element=\u7B80\u5355\u914D\u7F6E\u5143\u4EF6 size_assertion_comparator_label=\u6BD4\u8F83\u7C7B\u578B size_assertion_input_error=\u8BF7\u8F93\u5165\u4E00\u4E2A\u6709\u6548\u7684\u6B63\u6574\u6570\u3002 size_assertion_label=\u5B57\u8282\u5927\u5C0F\uFF1A soap_action=Soap\u52A8\u4F5C spline_visualizer_average=\u5E73\u5747\u503C spline_visualizer_incoming=\u8FDB\u5165 spline_visualizer_maximum=\u6700\u5927\u503C spline_visualizer_minimum=\u6700\u5C0F\u503C spline_visualizer_waitingmessage=\u7B49\u5F85\u6837\u672C ssl_alias_prompt=\u8BF7\u8F93\u5165\u9996\u9009\u7684\u522B\u540D ssl_alias_select=\u4E3A\u6D4B\u8BD5\u9009\u62E9\u4F60\u7684\u522B\u540D ssl_alias_title=\u5BA2\u6237\u7AEF\u522B\u540D ssl_pass_prompt=\u8BF7\u8F93\u5165\u4F60\u7684\u5BC6\u7801 ssl_port=SSL\u7AEF\u53E3 sslmanager=SSL\u7BA1\u7406\u5668 start=\u542F\u52A8 starttime=\u542F\u52A8\u65F6\u95F4 stop=\u505C\u6B62 stopping_test=\u505C\u6B62\u5168\u90E8\u6D4B\u8BD5\u7EBF\u7A0B\u3002\u8BF7\u8010\u5FC3\u7B49\u5F85\u3002 stopping_test_title=\u6B63\u5728\u505C\u6B62\u6D4B\u8BD5 string_from_file_file_name=\u8F93\u5165\u6587\u4EF6\u7684\u5168\u8DEF\u5F84 summariser_title=\u751F\u6210\u6982\u8981\u7ED3\u679C tcp_config_title=TCP\u53D6\u6837\u5668\u914D\u7F6E tcp_nodelay=\u8BBE\u7F6E\u65E0\u5EF6\u8FDF tcp_port=\u7AEF\u53E3\u53F7\uFF1A tcp_request_data=\u8981\u53D1\u9001\u7684\u6587\u672C tcp_sample_title=TCP\u53D6\u6837\u5668 tcp_timeout=\u8D85\u65F6\uFF1A template_field=\u6A21\u677F\uFF1A test=\u6D4B\u8BD5 test_configuration=\u6D4B\u8BD5\u914D\u7F6E test_plan=\u6D4B\u8BD5\u8BA1\u5212 testplan.serialized=\u72EC\u7ACB\u8FD0\u884C\u6BCF\u4E2A\u7EBF\u7A0B\u7EC4\uFF08\u4F8B\u5982\u5728\u4E00\u4E2A\u7EC4\u8FD0\u884C\u7ED3\u675F\u540E\u542F\u52A8\u4E0B\u4E00\u4E2A\uFF09 testplan_comments=\u6CE8\u91CA\uFF1A thread_delay_properties=\u7EBF\u7A0B\u5EF6\u8FDF\u5C5E\u6027 thread_group_title=\u7EBF\u7A0B\u7EC4 thread_properties=\u7EBF\u7A0B\u5C5E\u6027 threadgroup=\u7EBF\u7A0B\u7EC4 throughput_control_title=\u541E\u5410\u91CF\u63A7\u5236\u5668 throughput_control_tplabel=\u541E\u5410\u91CF transaction_controller_title=\u4E8B\u52A1\u63A7\u5236\u5668 update_per_iter=\u6BCF\u6B21\u8DCC\u4EE3\u66F4\u65B0\u4E00\u6B21 upload=\u6587\u4EF6\u4E0A\u8F7D upper_bound=\u4E0A\u9650 url_config_protocol=\u534F\u8BAE\uFF1A url_config_title=HTTP\u8BF7\u6C42\u9ED8\u8BA4\u503C use_recording_controller=\u4F7F\u7528\u5F55\u5236\u63A7\u5236\u5668 user=\u7528\u6237 user_defined_test=\u7528\u6237\u5B9A\u4E49\u7684\u6D4B\u8BD5 user_defined_variables=\u7528\u6237\u5B9A\u4E49\u7684\u53D8\u91CF user_parameters_table=\u53C2\u6570 user_parameters_title=\u7528\u6237\u53C2\u6570 username=\u7528\u6237\u540D value=\u503C var_name=\u5F15\u7528\u540D\u79F0 view_graph_tree_title=\u5BDF\u770B\u7ED3\u679C\u6811 view_results_in_table=\u7528\u8868\u683C\u5BDF\u770B\u7ED3\u679C view_results_tab_request=\u8BF7\u6C42 view_results_tab_response=\u54CD\u5E94\u6570\u636E view_results_tab_sampler=\u53D6\u6837\u5668\u7ED3\u679C view_results_title=\u5BDF\u770B\u7ED3\u679C view_results_tree_title=\u5BDF\u770B\u7ED3\u679C\u6811 web_request=HTTP\u8BF7\u6C42 web_server=Web\u670D\u52A1\u5668 web_server_domain=\u670D\u52A1\u5668\u540D\u79F0\u6216IP\uFF1A web_server_port=\u7AEF\u53E3\u53F7\uFF1A web_testing_retrieve_images=\u4ECEHTML\u6587\u4EF6\u83B7\u53D6\u6240\u6709\u5185\u542B\u7684\u8D44\u6E90 web_testing_title=HTTP\u8BF7\u6C42 webservice_proxy_host=\u4EE3\u7406\u670D\u52A1\u5668\u4E3B\u673A webservice_proxy_port=\u4EE3\u7406\u670D\u52A1\u5668\u7AEF\u53E3 webservice_use_proxy=\u4F7F\u7528\u4EE3\u7406\u670D\u52A1\u5668 workbench_title=\u5DE5\u4F5C\u53F0 wsdl_helper_error=WSDL\u65E0\u6548\uFF0C\u8BF7\u68C0\u67E5URL\u3002 wsdl_url_error=WSDL\u662F\u7A7A\u7684\u3002 xml_assertion_title=XML\u65AD\u8A00 you_must_enter_a_valid_number=\u5FC5\u987B\u8F93\u5165\u6709\u6548\u7684\u6570\u5B57 apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_es.properties0000644000175000017500000014176212032647221027075 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! about=Acerca de Apache JMeter add=A\u00F1adir add_as_child=A\u00F1adir como hijo add_parameter=A\u00F1adir Variable add_pattern=A\u00F1adir Patr\u00F3n\: add_test=A\u00F1adir Test add_user=A\u00F1adir Usuario add_value=A\u00F1adir Valor addtest=A\u00F1adir test aggregate_graph=Gr\u00E1ficos estad\u00EDsticos aggregate_graph_column=Columna aggregate_graph_display=Mostrar gr\u00E1fico aggregate_graph_height=Altura aggregate_graph_max_length_xaxis_label=Longitud m\u00E1xima de la etiqueta del eje x aggregate_graph_ms=Milisegundos aggregate_graph_response_time=Tiempo de respuesta aggregate_graph_save=Guardar gr\u00E1fico aggregate_graph_save_table=Guardar la tabla de datos aggregate_graph_save_table_header=Guardar la cabecera de la tabla aggregate_graph_title=Gr\u00E1fico aggregate_graph_use_group_name=\u00BFIncluir el nombre del grupo en la etiqueta? aggregate_graph_user_title=T\u00EDtulo del gr\u00E1fico aggregate_graph_width=Anchura aggregate_report=Informe Agregado aggregate_report_90=90% aggregate_report_90%_line=Linea de 90% aggregate_report_bandwidth=Kb/sec aggregate_report_count=\# Muestras aggregate_report_error=Error aggregate_report_error%=% Error aggregate_report_max=M\u00E1x aggregate_report_median=Mediana aggregate_report_min=M\u00EDn aggregate_report_rate=Rendimiento aggregate_report_stddev=Desv. Est\u00E1ndar aggregate_report_total_label=Total ajp_sampler_title=AJP/1.3 Muestreador als_message=Nota\: El Parser de Access Log tiene un dise\u00F1o gen\u00E9rico y le permite incorporar als_message2=su propio parser. Para hacer esto, implemente "LogParser", y a\u00F1ada el jar al als_message3=directorio /lib e introduzca la clases en el muestreador. analyze=Analizar Archivo de Datos... anchor_modifier_title=Parseador de Enlaces HTML appearance=Apariencia argument_must_not_be_negative=\u00A1El Argumento no puede ser negativo\! assertion_assume_success=Ignorar el Estado assertion_code_resp=C\u00F3digo de Respuesta assertion_contains=Contiene assertion_equals=igual assertion_headers=Cabeceras de la respuesta assertion_matches=Coincide assertion_message_resp=Mensaje de Respuesta assertion_not=No assertion_pattern_match_rules=Reglas de Coincidencia de Patrones assertion_patterns_to_test=Patr\u00F3n a Probar assertion_resp_field=Campo de Respuesta a Probar assertion_substring=Substring assertion_text_resp=Respuesta Textual assertion_textarea_label=Aserciones\: assertion_title=Aserci\u00F3n de Respuesta assertion_url_samp=URL Muestreada assertion_visualizer_title=Resultados de la Aserci\u00F3n attribute=Atributo attrs=Atributos auth_base_url=URL Base auth_manager_title=Gestor de Autorizaci\u00F3n HTTP auths_stored=Autorizaciones Almacenadas en el Gestor de Autorizaci\u00F3n average=Media average_bytes=Media de Bytes bind=Enlace a Hilo bouncy_castle_unavailable_message=Los jars para bouncy castle no est\u00E1n disponibles, por favor a\u00F1adalos a su classpath. browse=Navegar... bsf_sampler_title=Muestreador BSF bsf_script=Script a lanzar (variables\: log, Label, FileName, Parameters, args[], SampleResult (aka prev), sampler, ctx, vars, props, OUT) bsf_script_file=Archivo de Script a lanzar bsf_script_language=Lenguaje de Script\: bsf_script_parameters=Par\u00E1metros a pasar al script/archivo\: bsh_assertion_script=Script (ver abajo para las variables que est\u00E1n definidas) bsh_assertion_script_variables=Lectura/Escritura\: Failure, FailureMessage, SampleResult, log.\nS\u00F3lo Lectura\: Response[Data|Code|Message|Headers], RequestHeaders, SampleLabel, SamplerData bsh_assertion_title=Aserci\u00F3n BeanShell bsh_function_expression=Expresi\u00F3n a evaluar bsh_sampler_title=Muestreador BeanShell bsh_script=Script (ver abajo para las variables que est\u00E1n definidas) bsh_script_file=Archivo de script bsh_script_parameters=Par\u00E1metros (-> Par\u00E1metros String y String[]bsh.args) bsh_script_reset_interpreter=Resetear el int\u00E9rprete bsh antes de cada llamada bsh_script_variables=Las siguientes variables est\u00E1n definidas para el script\:\nSampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log busy_testing=Estoy ocupado probando, por favor pare el test antes de cambiar la configuraci\u00F3n cache_manager_title=Gestionador de la Cach\u00E9 HTTP cache_session_id=\u00BFIdentificador de la sesi\u00F3n de cach\u00E9? cancel=Cancelar cancel_exit_to_save=\u00BFHay elementos de prueba que no han sido salvados. \u00BFQuiere salvar antes de salir? cancel_new_to_save=\u00BFHay elementos del test que no han sido salvados. \u00BFQuiere salvar antes de limpiar el plan de pruebas? cancel_revert_project=Hay elementos del test que no han sido guardados. \u00BFDesea revertir a una versi\u00F3n guardada previamente del plan de test? char_value=N\u00FAmero del car\u00E1cter Unicode (decimal or 0xhex) choose_function=Elija una funci\u00F3n choose_language=Elija lenguaje clear=Limpiar clear_all=Limpiar Todo clear_cache_per_iter=\u00BFLimpiar la cach\u00E9 en cada iteraci\u00F3n? clear_cookies_per_iter=\u00BFLimpiar las cookies en cada iteraci\u00F3n? column_delete_disallowed=Borrar esta columna no est\u00E1 permitido column_number=N\u00FAmero de columna del archivo CSV | siguiente | *alias compare=Comparar comparefilt=Filtro de Comparaci\u00F3n comparison_differ_content=Las respuestas difieren en el contenido comparison_differ_time=Las respuestas difieren en el tiempo de respuesta en m\u00E1s de comparison_invalid_node=Nodo inv\u00E1lido comparison_regex_string=Expresi\u00F3n regular comparison_regex_substitution=Sustituci\u00F3n comparison_response_time=Tiempo de respuesta\: comparison_unit=ms comparison_visualizer_title=Visualizador de la aserci\u00F3n de comparaci\u00F3n config_element=Elemento de Configuraci\u00F3n config_save_settings=Configurar configure_wsdl=Configurar constant_throughput_timer_memo=A\u00F1ade un retardo entre muestras para obtener un rendimiento constante constant_timer_delay=Retardo de Hilo (en milisegundos)\: constant_timer_memo=A\u00F1ade un retardo constante entre muestras constant_timer_title=Temporizador Constante content_encoding=Codificac\u00EDon del contenido\: controller=Controlador cookie_manager_policy=Pol\u00EDtica de Cookies cookie_manager_title=Gestor de Cookies HTTP cookies_stored=Cookies almacenadas en el Gestor de Cookies copy=Copiar counter_config_title=Contador counter_per_user=Contador independiente para cada usuario countlim=L\u00EDmite de tama\u00F1o csvread_file_file_name=Archivo CSV del que obtener valores | *alias cut=Cortar cut_paste_function=Funci\u00F3n de cadena para copiar y pegar database_conn_pool_max_usage=Uso m\u00E1ximo para cada Conexi\u00F3n database_conn_pool_props=Pool de Conexiones a Base de Datos database_conn_pool_size=N\u00FAmero de Conexiones en el Pool database_conn_pool_title=Valores por defecto del Pool de Conexiones JDBC database_driver_class=Clase del Driver\: database_login_title=Valores por defecto para el Login a JDBC database_sql_query_string=Query String de SQL\: database_sql_query_title=Valores por defecto de Query SQL JDBC database_testing_title=Petici\u00F3n JDBC database_url=URL JDBC\: database_url_jdbc_props=Driver JDBC y URL a Base de Datos ddn=DN de=Alem\u00E1n debug_off=Deshabilitar depuraci\u00F3n debug_on=Habilitar depuraci\u00F3n default_parameters=Valores por defecto default_value_field=Valor por defecto\: delay=Retardo de arranque (segundos) delete=Borrar delete_parameter=Borrar Variable delete_test=Borrar Test delete_user=Borrar Usuario deltest=Test de borrado deref=Alias para desreferenciar disable=Deshabilitar distribution_graph_title=Gr\u00E1fico de Distribuci\u00F3n (alfa) distribution_note1=El gr\u00E1fico se actualiza cada 10 muestras dn=DN domain=Dominio done=Hecho duration=Duraci\u00F3n (segundos) duration_assertion_duration_test=Duraci\u00F3n a asegurar duration_assertion_failure=La operaci\u00F3n dur\u00F3 demasiado\: tard\u00F3 {0} milisegundos, cuando no deber\u00EDa haber tardado m\u00E1s de {1} milisegundos. duration_assertion_input_error=Por favor, introduzca un entero positivo v\u00E1lido. duration_assertion_label=Duraci\u00F3n en milisegundos\: duration_assertion_title=Aserci\u00F3n de Duraci\u00F3n edit=Editar email_results_title=Resultados del Email en=Ingl\u00E9s enable=Habilitar encode?=\u00BFCodificar? encoded_value=Valor de URL Codificada endtime=Tiempo de Finalizaci\u00F3n entry_dn=Introduzca DN entrydn=Introduzca DN error_loading_help=Error cargando p\u00E1gina de ayuda error_occurred=Error error_title=Error es=Espa\u00F1ol escape_html_string=Texto de escapado eval_name_param=Texto que contien variables y referencias de funci\u00F3n evalvar_name_param=Nombre de la variable example_data=Dato de muestra example_title=Muestreador de ejemplo exit=Salir expiration=Expiraci\u00F3n field_name=Nombre de campo file=Archivo file_already_in_use=Ese archivo est\u00E1 en uso file_visualizer_append=A\u00F1adir a archivo de datos existente file_visualizer_auto_flush=Limpiar autom\u00E1ticamente despu\u00E9s de cada muestra de datos file_visualizer_browse=Navegar... file_visualizer_close=Cerrar file_visualizer_file_options=Opciones de Archivo file_visualizer_filename=Nombre de archivo file_visualizer_flush=Limpiar file_visualizer_missing_filename=No se ha especificado nombre de archivo de salida. file_visualizer_open=Abrir file_visualizer_output_file=Escribir todos los datos a Archivo file_visualizer_submit_data=Incluir Datos Enviados file_visualizer_title=Informe de Archivo file_visualizer_verbose=Salida Verbosa filename=Nombre de Archivo follow_redirects=Seguir Redirecciones follow_redirects_auto=Redirigir Autom\u00E1ticamente foreach_controller_title=Controlador ForEach foreach_input=Prefijo de variable de entrada foreach_output=Nombre de variable de salida foreach_use_separator=\u00BFA\u00F1adir "_" antes de n\u00FAmero? format=Formato del n\u00FAmero fr=Franc\u00E9s ftp_binary_mode=\u00BFUsar modo binario? ftp_get=get(RETR) ftp_local_file=Fichero local\: ftp_local_file_contents=Contenidos del fichero local\: ftp_put=put(STOR) ftp_remote_file=Fichero remoto\: ftp_sample_title=Valores por defecto para petici\u00F3n FTP ftp_save_response_data=\u00BFGuardar fichero en la respuesta? ftp_testing_title=Petici\u00F3n FTP function_dialog_menu_item=Di\u00E1logo de Ayuda de Funci\u00F3n function_helper_title=Ayuda de Funci\u00F3n function_name_param=Nombre de funci\u00F3n. Usado para almacenar valores a utilizar en cualquier sitio del plan de prueba. function_name_paropt=Nombre de variable donde almacenar el resultado (opcional) function_params=Par\u00E1metros de Funci\u00F3n functional_mode=Modo de Prueba Funcional functional_mode_explanation=Seleccione modo de prueba funcional solo si necesita archivar los datos recibidos del servidor para cada petici\u00F3n.\nSeleccionar esta opci\u00F3n impacta en el rendimiento considerablemente. gaussian_timer_delay=Desplazamiento para Retardo Constante (en milisegundos)\: gaussian_timer_memo=A\u00F1ade un retardo aleatorio con distribuci\u00F3n gaussiana. gaussian_timer_range=Desviaci\u00F3n (en milisegundos)\: gaussian_timer_title=Temporizador Aleatorio Gaussiano generate=Generar generator=Nombre de la clase Generadora generator_cnf_msg=No pude encontrar la clase generadora. Por favor aseg\u00FArese de que puso el archivo jar en el directorio /lib generator_illegal_msg=No pude acceder a la clase generadora debido a una "IllegalAcessException". generator_instantiate_msg=No pude crear una instancia del parser generador. Por favor aseg\u00FArese de que el generador implementa la interfaz Generator. get_xml_from_file=Archivo con datos SOAP XML (sobreescribe el texto anterior) get_xml_from_random=Carpeta de Mensaje graph_choose_graphs=Gr\u00E1ficos a Mostrar graph_full_results_title=Resultados de Gr\u00E1fico Completo graph_results_average=Media graph_results_data=Datos graph_results_deviation=Desviaci\u00F3n graph_results_latest_sample=\u00DAltima Muestra graph_results_median=Mediana graph_results_ms=ms graph_results_no_samples=No. de Muestras graph_results_throughput=Rendimiento graph_results_title=Gr\u00E1fico de Resultados grouping_add_separators=A\u00F1adir separadores entre grupos grouping_in_controllers=Poner cada grupo en un nuevo controlador grouping_in_transaction_controllers=Poner cada grupo en un nuevo controlador de transacciones grouping_mode=Agrupaci\u00F3n\: grouping_no_groups=No agrupar muestreadores grouping_store_first_only=Almacenar el primer muestreador de cada grupo solamente header_manager_title=Gestor de Cabecera HTTP headers_stored=Cabeceras Almacenadas en el Gestor de Cabeceras help=Ayuda help_node=\u00BFQu\u00E9 es este nodo? html_assertion_file=Escribir el reporte JTidy en fichero html_assertion_label=Aserci\u00F3n HTML html_assertion_title=Aserci\u00F3n HTML html_parameter_mask=M\u00E1scara de Par\u00E1metro HTML http_implementation=Implementaci\u00F3n HTTP\: http_response_code=c\u00F3digo de respuesta HTTP http_url_rewriting_modifier_title=Modificador de re-escritura HTTP URL http_user_parameter_modifier=Modificador de Par\u00E1metro de Usuario HTTP httpmirror_title=Servidor espejo HTTP id_prefix=Prefijo ID id_suffix=Sufijo ID if_controller_evaluate_all=\u00BFEvaluar para todos los hijos? if_controller_expression=\u00BFInterpretar la condici\u00F3n como una variable de expresi\u00F3n? if_controller_label=Condici\u00F3n if_controller_title=Controlador If ignore_subcontrollers=Ignorar bloques sub-controladores include_controller=Incluir Controlador include_equals=\u00BFIncluir Equals? include_path=Incluir Plan de Pruebas increment=Incrementar infinite=Sin f\u00EDn initial_context_factory=Factor\u00EDa Initial Context insert_after=Insertar Despu\u00E9s insert_before=Insertar Antes insert_parent=Insertar Padre interleave_control_title=Controlador Interleave intsum_param_1=Primer int a a\u00F1adir. intsum_param_2=Segundo int a a\u00F1adir - m\u00E1s ints pueden ser insertados a\u00F1adiendo m\u00E1s argumentos invalid_data=Dato inv\u00E1lido invalid_mail=Error al enviar el e-mail invalid_mail_address=Una o m\u00E1s direcciones de e-mail inv\u00E1lidas invalid_mail_server=Problema contactantdo el servidor de e-mail (mire los logs de JMeter) invalid_variables=Variables inv\u00E1lidas iteration_counter_arg_1=TRUE, para que cada usuario su propio contador, FALSE para tener un contador global iterator_num=Contador del bucle\: ja=Japon\u00E9s jar_file=Ficheros .jar java_request=Petici\u00F3n Java java_request_defaults=Valores por defecto para Petici\u00F3n Java javascript_expression=Expresi\u00F3n JavaScript a evaluar jexl_expression=Expresi\u00F3n JEXL a evaluar jms_auth_required=Requerido jms_client_caption=El cliente Receive utiliza TopicSubscriber.receive() para escuchar un mensaje. jms_client_caption2=MessageListener utiliza la interfaz onMessage(Message) para escuchar nuevos mensajes jms_client_type=Cliente jms_communication_style=Estilo de Comunicaci\u00F3n jms_concrete_connection_factory=Factor\u00EDa de Connection Concreto jms_config=Fuente del mensaje jms_config_title=Configuraci\u00F3n JMS jms_connection_factory=Factor\u00EDa de Connection jms_correlation_title=Usar campos alternativos para la correlaci\u00F3n de mensajes jms_dest_setup=Configuraci\u00F3n jms_dest_setup_dynamic=En cada muestra jms_dest_setup_static=Al arranque jms_file=Archivo jms_initial_context_factory=Factor\u00EDa de Initial Context jms_itertions=N\u00FAmero de muestras a agregar jms_jndi_defaults_title=Configuraci\u00F3n por defecto de JNDI jms_jndi_props=Propiedades JNDI jms_map_message=Mensaje Map jms_message_title=Propiedades de Mensaje jms_message_type=Tipo de Mensaje jms_msg_content=Contenido jms_object_message=Mensaje Object jms_point_to_point=JMS Punto-a-Punto jms_props=Propiedades JMS jms_provider_url=URL Proveedor jms_publisher=Publicador JMS jms_pwd=Contrase\u00F1a jms_queue=Cola jms_queue_connection_factory=Factor\u00EDa de QueueConnection jms_queueing=Recursos JMS jms_random_file=Archivo Aleatorio jms_read_response=Respuesta Le\u00EDda jms_receive_queue=Nombre JNDI cola Recepci\u00F3n jms_request=S\u00F3lo Petici\u00F3n jms_requestreply=Respuesta a Petici\u00F3n jms_sample_title=Petici\u00F3n JMS por defecto jms_send_queue=Nombre JNDI Cola Petici\u00F3n jms_stop_between_samples=\u00BFParar entre muestras? jms_subscriber_on_message=Utilizar MessageListener.onMessage() jms_subscriber_receive=Utilizar TopicSubscriber.receive() jms_subscriber_title=Suscriptor JMS jms_testing_title=Petici\u00F3n Mensajer\u00EDa jms_text_message=Mensaje Texto jms_timeout=Timeout (milisegundos) jms_topic=T\u00F3pico jms_use_auth=\u00BFUsar Autorizaci\u00F3n? jms_use_file=Desde archivo jms_use_non_persistent_delivery=\u00BFUsar modo de entrega no persistente? jms_use_properties_file=Utilizar archivo jndi.properties jms_use_random_file=Archivo Aleatorio jms_use_req_msgid_as_correlid=Usar el identificador del mensaje Request jms_use_res_msgid_as_correlid=Usar el identificador del mensaje Response jms_use_text=\u00C1rea de Texto jms_user=Usuario jndi_config_title=Configuraci\u00F3n JNDI jndi_lookup_name=Interfaz Remota jndi_lookup_title=Configuraci\u00F3n del Lookup JNDI jndi_method_button_invoke=Invocar jndi_method_button_reflect=Reflejar jndi_method_home_name=Nombre de M\u00E9todo Home jndi_method_home_parms=Par\u00E1metros de M\u00E9todo Home jndi_method_name=Configuraci\u00F3n de M\u00E9todo jndi_method_remote_interface_list=Interfaces Remotas jndi_method_remote_name=Nombre de M\u00E9todo Remoto jndi_method_remote_parms=Par\u00E1metros de M\u00E9todo Remoto jndi_method_title=Configuraci\u00F3n de M\u00E9todo Remoto jndi_testing_title=Petici\u00F3n JNDI jndi_url_jndi_props=Propiedades JNDI junit_append_error=A\u00F1adir errores de aserci\u00F3n junit_append_exception=A\u00F1adir excepciones de ejecuci\u00F3n junit_constructor_error=Imposible crear una instancia de la clase junit_constructor_string=Etiqueta del constructor de String junit_do_setup_teardown=No llamar a setUp y tearDown junit_error_code=C\u00F3digo de error junit_error_default_code=9999 junit_error_default_msg=Ocurri\u00F3 un error no esperado junit_error_msg=Mensaje de error junit_failure_code=Codigo de fallo junit_failure_default_code=0001 junit_failure_default_msg=Test fall\u00F3 junit_failure_msg=Mensaje de fallo junit_junit4=Buscar anotaciones JUnit 4 (en el caso de JUnit 3) junit_pkg_filter=Filtro de paquetes junit_request=Petici\u00F3n JUnit junit_request_defaults=Valores por defecto de la petici\u00F3n JUnit junit_success_code=C\u00F3digo de \u00E9xito junit_success_default_code=1000 junit_success_default_msg=Test satisfactorio junit_success_msg=Mensaje de \u00E9xito junit_test_config=Par\u00E1metros del test JUnit junit_test_method=M\u00E9todo de Test ldap_argument_list=Lista de LDAPArgument ldap_connto=Timeout de conexi\u00F3n (en milisegundos) ldap_parse_results=\u00BFParsear los resultados de la b\u00FAsqueda? ldap_sample_title=Valores por defecto Petici\u00F3n LDAP ldap_search_baseobject=Realizar la b\u00FAsqueda 'baseobject' ldap_search_onelevel=Realizar la b\u00FAsqueda 'onelevel' ldap_search_subtree=Realizar la b\u00FAsqueda 'subtree' ldap_secure=\u00BFUsar el Protocolo LDAP Seguro? ldap_testing_title=Petici\u00F3n LDAP ldapext_sample_title=Valores por defecto Petici\u00F3n Extendidad LDAP ldapext_testing_title=Petici\u00F3n Extendida LDAP library=Librer\u00EDa load=Cargar load_wsdl=Cargar WSDL log_errors_only=Escribir en Log S\u00F3lo Errores log_file=Ubicaci\u00F3n del archivo de logs log_function_comment=Comentario adicional (opcional) log_function_level=Nivel de Log (por defecto INFO) o OUT o ERR log_function_string=Texto a escribir en log log_function_string_ret=Texto a ser escrito en log (y retornado) log_function_throwable=Texto para 'Throwable' (Opcional) log_only=Log/Mostrar s\u00F3lo\: log_parser=Nombre de la clase Parser de Log log_parser_cnf_msg=No pude encontrar la clase. Por favor, aseg\u00FArese de colocar el archivo jar en el directorio /lib. log_parser_illegal_msg=No pude acceder a la clase debido a una "IllegalAcessException". log_parser_instantiate_msg=No pude crear una instancia del parser de log. Por favor aseg\u00FArese de que el parser implementar la interfaz LogParser. log_sampler=Muestreador de Log de Acceso de Tomcat log_success_only=\u00C9xitos logic_controller_title=Controlador Simple login_config=Configuraci\u00F3n de Login login_config_element=Elemento de Configuraci\u00F3n de Login longsum_param_1=Primer 'long' a a\u00F1adir longsum_param_2=Segundo 'long' a a\u00F1adir - m\u00E1s 'longs' pueden ser sumados a\u00F1adiendo m\u00E1s argumentos. loop_controller_title=Controlador Bucle looping_control=Control de Bucles lower_bound=L\u00EDmite inferior mail_reader_account=Usuario\: mail_reader_all_messages=Todo mail_reader_delete=Borrar archivos del servidor mail_reader_folder=Carpeta\: mail_reader_num_messages=N\u00FAmero de mensajes a recuperar\: mail_reader_password=Contrase\u00F1a\: mail_reader_port=Puerto del servidor (opcional)\: mail_reader_server=Servidor\: mail_reader_server_type=Tipo de Servidor\: mail_reader_storemime=Almacenar el mensaje usando MIME(raw) mail_reader_title=Muestreador Lector de Correo mail_sent=Mail enviado con \u00E9xito mailer_attributes_panel=Atributos de Mailing mailer_error=No pude enviar mail. Por favor, corrija las entradas incorrectas. mailer_visualizer_title=Visualizador de Mailer match_num_field=Coincidencia No. (0 para Aleatorio)\: max=M\u00E1ximo maximum_param=El valor m\u00E1ximo permitido para un rango de valores md5hex_assertion_failure=Error validando MD5\: obtuve {0} pero deber\u00EDa haber obtenido {1} md5hex_assertion_label=MD5Hex md5hex_assertion_md5hex_test=MD5Hex a Comprobar md5hex_assertion_title=Aserci\u00F3n MD5Hex memory_cache=Cach\u00E9 en Memoria menu_assertions=Aserciones menu_close=Cerrar menu_collapse_all=Colapsar todo menu_config_element=Elemento de Configuraci\u00F3n menu_edit=Editar menu_expand_all=Expandir todo menu_fragments=Fragmento de Prueba menu_generative_controller=Muestreador menu_listener=Receptor menu_logic_controller=Controlador L\u00F3gico menu_merge=Mezclar menu_modifiers=Modificadores menu_non_test_elements=Elementos NoDePrueba menu_open=Abrir menu_post_processors=Post Procesadores menu_pre_processors=Pre Procesadores menu_response_based_modifiers=Modificadores Basados en Respuesta menu_tables=Tabla menu_threads=Hilos (Usuarios) menu_timer=Temporizador metadata=MetaDatos method=M\u00E9todo\: mimetype=Tipo MIME minimum_param=El valor m\u00EDnimo admitido para un rango de valores minute=minuto modddn=Nombre de entrada antiguo modification_controller_title=Controlador de Modificaci\u00F3n modification_manager_title=Gestor de Modificaci\u00F3n modify_test=Prueba de Modificaci\u00F3n modtest=Prueba de Modificaci\u00F3n module_controller_module_to_run=M\u00F3dulo a ejecutar module_controller_title=Controlador de M\u00F3dulo module_controller_warning=No pudo encontrar el m\u00F3dulo\: monitor_equation_active=Activo\: (ocupado/m\u00E1x) > 25% monitor_equation_dead=Muerto\: no hay respuesta monitor_equation_healthy=Sano. (ocupado/m\u00E1x) < 25% monitor_equation_load=Carga\: ((ocupado/m\u00E1x) * 50) + ((memoria usada/memoria m\u00E1x) * 50) monitor_equation_warning=Aviso\: (ocupado/m\u00E1x) > 67% monitor_health_tab_title=Salud monitor_health_title=Resultados del Monitor monitor_is_title=Utilizar como Monitor monitor_label_left_bottom=0 % monitor_label_left_middle=50 % monitor_label_left_top=100 % monitor_label_prefix=Prefijo de conexi\u00F3n monitor_label_right_active=Activo monitor_label_right_dead=Muerto monitor_label_right_healthy=Sano monitor_label_right_warning=Aviso monitor_legend_health=Salud monitor_legend_load=Carga monitor_legend_memory_per=Memoria % (usada/total) monitor_legend_thread_per=Hilo % (ocupado/m\u00E1x) monitor_load_factor_mem=50 monitor_load_factor_thread=50 monitor_performance_servers=Servidores monitor_performance_tab_title=Rendimiento monitor_performance_title=Gr\u00E1fico de Rendimiento name=Nombre\: new=Nuevo newdn=Nuevo distinghuised name no=Noruego number_of_threads=N\u00FAmero de Hilos obsolete_test_element=Este elemento de test es obsoleto once_only_controller_title=Controlador Only Once opcode=opCode open=Abrir... option=Opciones optional_tasks=Tareas Opcionales paramtable=Enviar Par\u00E1metros Con la Petici\u00F3n\: password=Contrase\u00F1a paste=Pegar paste_insert=Pegar como Inserci\u00F3n path=Ruta\: path_extension_choice=Extensi\u00F3n de Path (utilice ";" como separador) path_extension_dont_use_equals=No utilice el signo igual en la extensi\u00F3n del path (compatibilidad con Intershop Enfinity) path_extension_dont_use_questionmark=No utilice el signo interrogaci\u00F3n en la extensi\u00F3n del path (compatibilidad con Intershop Enfinity) patterns_to_exclude=URL Patrones a Excluir patterns_to_include=URL Patrones a Incluir pkcs12_desc=Clave PKCS (*.p12) pl=Polaco port=Puerto\: post_thread_group_title=Tirar abajo grupo de Hilos property_as_field_label={0}\: property_default_param=Valor por defecto property_edit=Editar property_editor.value_is_invalid_message=El texto que acaba de introducir no es un valor v\u00E1lido para esta propiedad. La propiedad ser\u00E1 devuelta a su valor anterior. property_editor.value_is_invalid_title=Entrada inv\u00E1lida property_name_param=Nombre de propiedad property_returnvalue_param=\u00BFRetornar el valor original de la propiedad (falso, por defecto)? property_tool_tip={0}\: {1} property_undefined=No definido property_value_param=Valor de propiedad property_visualiser_title=Visualizador de propiedades protocol=Protocolo\: protocol_java_border=Clase java protocol_java_classname=Nombre de clase\: protocol_java_config_tile=Muestra de Configure Java protocol_java_test_title=Test Java provider_url=URL Proveedor proxy_assertions=A\u00F1adir Aserciones proxy_cl_error=Si est\u00E1 especificando un servidor proxy, el puerto y el host deben ser provistos. proxy_content_type_exclude=Excluir\: proxy_content_type_filter=Filtro de tipo de contenido proxy_content_type_include=Incluir\: proxy_daemon_bind_error=No pudo crear el proxy - puerto en uso. Escoger otro puerto. proxy_daemon_error=No pudo crear el proxy - ver traza para m\u00E1s detalles proxy_headers=Capturar Cabeceras HTTP proxy_regex=Coincidencia Regex proxy_sampler_settings=Par\u00E1metros muestra HTTP proxy_sampler_type=Tipo\: proxy_separators=A\u00F1adir Separadores proxy_target=Controlador Objetivo\: proxy_test_plan_content=Contenido del plan de pruebas proxy_title=Servidor Proxy HTTP pt_br=Portugu\u00E9s (Brasile\u00F1o) ramp_up=Periodo de Subida (en segundos)\: random_control_title=Controlador Aleatorio random_order_control_title=Controlador Orden Aleatorio read_response_message=La lectura de respuesta no est\u00E1 activada. Para ver la respuesta, por favor marque la caja en el sampler. read_response_note=Si "leer respuesta" est\u00E1 desactivado, el muestreador no leer\u00E1 la respuesta read_response_note2=ni establecer\u00E1 el "SampleResult". Esto mejora el rendimiento, pero significa read_response_note3=que el contenido de respuesta no ser\u00E1 logado. read_soap_response=Leer Respuesta SOAP realm=Dominio (realm) record_controller_title=Controlador Grabaci\u00F3n ref_name_field=Nombre de Referencia\: regex_extractor_title=Extractor de Expresiones Regulares regex_field=Expresi\u00F3n Regular\: regex_source=Campo de Respuesta a comprobar regex_src_body=Cuerpo regex_src_body_unescaped=Cuerpo (No escapado) regex_src_hdrs=Cabeceras regex_src_url=URL regexfunc_param_1=Expresi\u00F3n regular usada para buscar resultados en la peticiones previas regexfunc_param_2=Plantilla para la cadena de sustituci\u00F3n, utilizando grupos de la expresi\u00F3n regular. El formato es $[grupo]$.\nEjemplo $1$. regexfunc_param_3=Qu\u00E9 coincidencia utilizar. Un entero 1 o mayor, RAND para indicar a JMeter que utilice un n\u00FAmero aleatorio, un floar o ALL para indicar que todas las coincidencias deber\u00EDan ser utilizadas regexfunc_param_4=Texto intermedio. Si se selecciona ALL, the texto intermedio ser\u00E1 utilizado para generar los resultados regexfunc_param_5=Texto por Defecto. Utilizado en lugar de la plantilla si la expresi\u00F3n regular no encuentra coincidencias. regexfunc_param_7=Nombre de la variable de entrada que contiene el texto a ser parseado ([muestra anterior]) regexp_render_no_text=El dato de respuesta del resultado no es texto. regexp_tester_button_test=Test regexp_tester_field=Expresi\u00F3n regular\: regexp_tester_title=Testeador de RegExp remote_error_init=Error inicializando el servidor remoto remote_error_starting=Error arrancando el servidor remoto remote_exit=Salir Remoto remote_exit_all=Salir de Todo Remoto remote_shut=Apagar remoto remote_shut_all=Apagar todo remoto remote_start=Arrancar Remoto remote_start_all=Arrancar Todo Remoto remote_stop=Parar Remoto remote_stop_all=Parar Todo Remoto remove=Borrar rename=Renombrar entrada report=Informe report_bar_chart=Gr\u00E1fico de barras report_bar_graph_url=URL report_base_directory=Directorio base report_chart_caption=Leyenda del gr\u00E1fico report_chart_x_axis=Eje X report_chart_x_axis_label=Etiqueta para el eje X report_chart_y_axis=Eje Y report_chart_y_axis_label=Etiqueta para el eje Y report_line_graph=Gr\u00E1fico de l\u00EDneas report_line_graph_urls=Incluir URL report_output_directory=Directorio de salida para el informe report_page=P\u00E1gina del informe report_page_element=Elemento de p\u00E1gina report_page_footer=Pie de p\u00E1gina report_page_header=Cabecera de p\u00E1gina report_page_index=Crear \u00EDndice de p\u00E1gina report_page_intro=P\u00E1gina de introducci\u00F3n report_page_style_url=URL de la hoja de estilos report_page_title=T\u00EDtulo de p\u00E1gina report_pie_chart=Gr\u00E1fico de tarta report_plan=Esquema del reporte report_select=Seleccionar report_summary=Resumen de informe report_table=Tabla de informe report_writer=Escritor del reporte report_writer_html=Escritor HTML del reporte request_data=Pedir Datos reset_gui=Resetear GUI response_save_as_md5=\u00BFGuardar la respuesta como MD5 hash? restart=Rearranque resultaction_title=Manejador de Acci\u00F3n para Status de Resultados resultsaver_errors=Guardar Respuestas Fallidas Solamente resultsaver_prefix=Prefijo de nombre de archivo\: resultsaver_skipautonumber=No a\u00F1adir n\u00FAmero al prefijo resultsaver_skipsuffix=No a\u00F1adir sufijo resultsaver_success=Guardar s\u00F3lo respuestas satisfactorias resultsaver_title=Guardar respuestas en archivo resultsaver_variable=Nombre de variable\: retobj=Devolver objeto reuseconnection=Reusar conexi\u00F3n revert_project=Revertir revert_project?=\u00BFRevertir proyecto? root=Ra\u00EDz root_title=Ra\u00EDz run=Lanzar running_test=Test lanzado runtime_controller_title=Controlador Tiempo de Ejecuci\u00F3n runtime_seconds=Tiempo de ejecuci\u00F3n (segundos) sample_result_save_configuration=Guardar Configuraci\u00F3n de Resultado de Muestra sample_scope=Aplicar a\: sample_scope_all=Muestra principal y submuestras sample_scope_children=S\u00F3lo submuestras sample_scope_parent=S\u00F3lo muestra principal sample_scope_variable=Variable JMeter sampler_label=Etiqueta sampler_on_error_action=Acci\u00F3n a tomar despu\u00E9s de un error de Muestreador sampler_on_error_continue=Continuar sampler_on_error_start_next_loop=Comenzar siguiente iteraci\u00F3n sampler_on_error_stop_test=Parar Test sampler_on_error_stop_test_now=Parar test ahora sampler_on_error_stop_thread=Parar Hilo save=Guardar save?=\u00BFGuardar? save_all_as=Guardar Plan de Pruebas como save_as=Guardar selecci\u00F3n como... save_as_error=\u00A1M\u00E1s de un item seleccionado\! save_as_image=Guardar como imagen save_as_image_all=Guardar la pantalla como imagen save_assertionresultsfailuremessage=Guardar Mensaje de Fallo de Resultados de Aserci\u00F3n save_assertions=Guardar Resultados de Aserci\u00F3n save_asxml=Guardar Como XML save_bytes=Guardar conteo de bytes save_code=Guardar C\u00F3digo de Respuesta save_datatype=Guardar Tipo de Datos save_encoding=Guardar Codificaci\u00F3n save_fieldnames=Guardar Nombre de Campo save_filename=Guardar el nombre del fichero de respuesta save_graphics=Guardar Gr\u00E1ficos save_hostname=Guardar el nombre de host save_idletime=Guardar tiempo inactivo save_label=Guardar Etiqueta save_latency=Guardar Latencia save_message=Guardar Mensaje de Respuesta save_overwrite_existing_file=El fichero seleccionado ya existe, \u00BFquiere sobreescribirlo? save_requestheaders=Guardar Cabeceras de Petici\u00F3n save_responsedata=Guardar Datos de Respuesta save_responseheaders=Guardar Cabeceras de Respuesta save_samplecount=Guardar muestra y conteo de error save_samplerdata=Guardar Datos de Muestreador save_subresults=Guardar Sub Resultados save_success=Guardado Correctamente save_threadcounts=Guardar conteos hilos activos save_threadname=Guardar Nombre de Hilo save_time=Guardar Tiempo save_timestamp=Guardar Etiqueta de Tiempo save_url=Guardar URL sbind=Conexi\u00F3n/Desconexi\u00F3n Simple scheduler=Planificador scheduler_configuration=Configuraci\u00F3n del Planificador scope=\u00C1mbito search_base=Base de B\u00FAsqueda search_filter=Filtro de B\u00FAsqueda search_test=Prueba de B\u00FAsqueda search_text_button_close=Cerrar search_text_button_find=Encontrar search_text_button_next=Encontrar siguiente search_text_chkbox_case=Sensible a may\u00FAsculas search_text_chkbox_regexp=Expresi\u00F3n regular search_text_field=Buscar\: search_text_msg_not_found=Texto no encontrado search_text_title_not_found=No encontrado searchbase=Base de B\u00FAsqueda searchfilter=Filtro de B\u00FAsqueda searchtest=Prueba de B\u00FAsqueda second=segundo secure=Seguro send_file=Enviar un archivo Con la Petici\u00F3n send_file_browse=Navegar... send_file_filename_label=Nombre de Archivo\: send_file_mime_label=Tipo MIME\: send_file_param_name_label=Nombre de Par\u00E1metro\: server=Nombre de Servidor o IP\: servername=Nombre de Servidor\: session_argument_name=Nombre de Argumento de Sesi\u00F3n setup_thread_group_title=Montar grupo de Hilos should_save=Deber\u00EDa guardar el plan de pruebas antes de lanzarlo. Si est\u00E1 utilizando archivos de datos (ie, para DCV o _StringFromFile), entonces es especialmente importante que primero guarde su script de prueba. shutdown=Interrumpir simple_config_element=Elemento de Configuraci\u00F3n Simple simple_data_writer_title=Escritor de Datos Simple size_assertion_comparator_error_equal=siendo igual a size_assertion_comparator_error_greater=siendo mayor que size_assertion_comparator_error_greaterequal=siendo mayor o igual a size_assertion_comparator_error_less=siendo menor que size_assertion_comparator_error_lessequal=siendo menor o igual que size_assertion_comparator_error_notequal=no siendo igual a size_assertion_comparator_label=Tipo de Comparaci\u00F3n size_assertion_failure=El resultado tuvo el tama\u00F1o incorrecto\: fu\u00E9 {0} bytes, pero deber\u00EDa haber sido {1} {2} bytes. size_assertion_input_error=Por favor, introduzca un entero positivo v\u00E1lido. size_assertion_label=Tama\u00F1o en bytes\: size_assertion_size_test=Tama\u00F1o a Comprobar size_assertion_title=Aserci\u00F3n de Tama\u00F1o smime_assertion_issuer_dn=Nombre \u00FAnico del emisor\: smime_assertion_message_position=Ejecutar aserci\u00F3n sobre el mensaje a partir de la posici\u00F3n smime_assertion_not_signed=Mensaje no firmado smime_assertion_signature=Firma smime_assertion_signer=Cerficado del firmante smime_assertion_signer_by_file=Certificado smime_assertion_signer_constraints=Chequear valores smime_assertion_signer_dn=Nombre \u00FAnico del firmante smime_assertion_signer_email=Direcci\u00F3n de correo del firmante smime_assertion_signer_no_check=No chequear smime_assertion_signer_serial=N\u00FAmero de serie smime_assertion_title=Aserci\u00F3n SMIME smime_assertion_verify_signature=Verificar firma smtp_additional_settings=Par\u00E1metros adicionales smtp_attach_file=Adjuntar fichero(s)\: smtp_attach_file_tooltip=Separar ficheros con ";" smtp_auth_settings=Par\u00E1metros de autentificaci\u00F3n smtp_bcc=Direcciones en copia oculta (BCC)\: smtp_cc=Direcciones en copia(CC)\: smtp_default_port=(Por defecto\: SMTP\:25, SSL\:465, StartTLS\:587) smtp_eml=Enviar .eml\: smtp_enabledebug=\u00BFActivar las trazas de depuraci\u00F3n? smtp_enforcestarttls=Imponer StartTLS smtp_enforcestarttls_tooltip=Forza al servidor a usar StartTLS.
        Si no es seleccionado el servidor SMTP no soporta StartTLS,
        una conexi\u00F3n normal SMTP ser\u00E1 usada como reserva.
        Por favor advierta que este objeto crea un fichero en "/tmp/",
        so Esto causar\u00E1 problemas bajo Windows. smtp_from=Direcci\u00F3n Desde\: smtp_header_add=A\u00F1adir cabecera smtp_header_name=Nombre de cabecera smtp_header_remove=Suprimir smtp_header_value=Valor de cabecera smtp_mail_settings=Par\u00E1metros del correo smtp_message=Mensaje\: smtp_message_settings=Par\u00E1metros del mensaje\: smtp_messagesize=Calcular tama\u00F1o del mensaje smtp_password=Contrase\u00F1a\: smtp_plainbody=Enviar texto plano(i.e. no multipart/mixed) smtp_replyto=Direcci\u00F3n Responder-a\: smtp_sampler_title=Muestra SMTP smtp_security_settings=Par\u00E1metros de seguridad smtp_server=Servidor\: smtp_server_port=Puerto\: smtp_server_settings=Par\u00E1metros del servidor smtp_subject=Asunto\: smtp_suppresssubj=Suprimir la cabecera del asunto smtp_timestamp=Incluir timestamp en el asunto smtp_to=Direcci\u00F3n A\: smtp_trustall=Verificar todos los certificados smtp_trustall_tooltip=Fuerza a JMeter a verificar todos los certificados, que vienen del CA. smtp_truststore=Almacenamiento local de confianza\: smtp_truststore_tooltip=Nombre de la ruta del almacenamiento local de confianza.
        Rutas relativas son resueltas contra el directorio actual.
        Si esto falla, contra el directorio que contiene el script de test (JMX file) smtp_useauth=Usar autentificaci\u00F3n smtp_usenone=No usar funcionalidades de seguridad smtp_username=Nombre de usuario\: smtp_usessl=Usar SSL smtp_usestarttls=Usar StartTLS smtp_usetruststore=Usar almacenamiento local de confianza smtp_usetruststore_tooltip=Permite a JMeter usar un almacenamiento de confianza local. soap_action=Acci\u00F3n Soap soap_data_title=Datos Soap/XML-RPC soap_sampler_title=Petici\u00F3n Soap/XML-RPC soap_send_action=Enviar SOAPAction\: spline_visualizer_average=Media spline_visualizer_incoming=Entrando spline_visualizer_maximum=M\u00E1ximo spline_visualizer_minimum=M\u00EDnimo spline_visualizer_title=Visualizador Spline spline_visualizer_waitingmessage=Esperando muestras split_function_separator=Texto para separar. Por defecto es , (coma) split_function_string=Texto a separar ssl_alias_prompt=Por favor, introduzca su alias favorito ssl_alias_select=Seleccione su alias para la prueba ssl_alias_title=Alias de Cliente ssl_error_title=Problema con el KeyStore ssl_pass_prompt=Por favor, introduzca su contrase\u00F1a ssl_pass_title=Contrase\u00F1a de KeyStore ssl_port=Puerto SSL sslmanager=Gestor SSL start=Arrancar start_no_timers=Inicio no se detiene starttime=Tiempo de Arranque stop=Parar stopping_test=Parando todos los hilos. Por favor, sea paciente. stopping_test_failed=Uno o m\u00E1s hilos de test no saldr\u00E1n; ver fichero de log. stopping_test_title=Parando la Prueba string_from_file_encoding=Codificaci\u00F3n, si no el por defecto de la plataforma (opcional) string_from_file_file_name=Introduzca ruta completa al archivo string_from_file_seq_final=N\u00FAmero final de secuencia de archivo string_from_file_seq_start=N\u00FAmero inicial de secuencia de archivo summariser_title=Generar Resumen de Resultados summary_report=Reporte resumen switch_controller_label=Conmutar Valor switch_controller_title=Conmutar Controlador table_visualizer_bytes=Bytes table_visualizer_sample_num=Muestra \# table_visualizer_sample_time=Tiempo de Muestra (ms) table_visualizer_start_time=Tiempo de comienzo table_visualizer_status=Estado table_visualizer_success=\u00C9xito table_visualizer_thread_name=Nombre del hilo table_visualizer_warning=Alerta tcp_classname=Nombre de clase TCPClient\: tcp_config_title=Configuraci\u00F3n de Muestreador TCP tcp_nodelay=Establecer SinRetardo tcp_port=Puerto\: tcp_request_data=Texto a enviar tcp_sample_title=Muestreador TCP tcp_timeout=Timeout (milisegundos) template_field=Plantilla\: test=Prueba test_action_action=Acci\u00F3n test_action_duration=Duraci\u00F3n test_action_pause=Pausa test_action_stop=Parar test_action_stop_now=Parar ahora test_action_target=Objetivo test_action_target_test=Todos los Hilos test_action_target_thread=Hilo Actual test_action_title=Acci\u00F3n de Prueba test_configuration=Configuraci\u00F3n de Pruebas test_fragment_title=Fragmento de Prueba test_plan=Plan de Pruebas test_plan_classpath_browse=A\u00F1adir directorio o jar al classpath testconfiguration=Configuraci\u00F3n de Pruebas testplan.serialized=Lanza cada Grupo de Hilos separadamente (i.e. lanza un grupo antes de lanzar el siguiente) testplan_comments=Comentarios testt=Prueba textbox_cancel=Cancelar textbox_close=Cerrar textbox_save_close=Guardar y cerrar textbox_title_edit=Editar texto textbox_title_view=Ver texto textbox_tooltip_cell=Doble click para ver/editar thread_delay_properties=Propiedades de Retardo de Hilos thread_group_title=Grupo de Hilos thread_properties=Propiedades de Hilo threadgroup=Grupo de Hilos throughput_control_bynumber_label=Ejecuciones Totales throughput_control_bypercent_label=Porcentaje de Ejecuciones throughput_control_perthread_label=Por Usuario throughput_control_title=Controlador Throughput throughput_control_tplabel=Rendimiento time_format=Cadena de formateo para SimpleDateFormat(opcional) timelim=L\u00EDmite de Tiempo tr=Turco transaction_controller_include_timers=Incluir la duraci\u00F3n de temporizador y pre-post procesadores en la muestra generada transaction_controller_parent=Generar muestra padre transaction_controller_title=Controlador Transaction unbind=Desligar Hilo unescape_html_string=Cadena de texto para quitar caracteres de escapado unescape_string=Cadena de texto contiene caracteres Java de escapado uniform_timer_delay=Desplazamiento de Retraso Constante (en milisegundos)\: uniform_timer_memo=A\u00F1ade un retardo aleatorio con una distribuci\u00F3n uniforme uniform_timer_range=M\u00E1ximo retardo Aleatorio (en milisegundos) uniform_timer_title=Temporizador Aleatorio Uniforme update_per_iter=Actualizar Una Vez Por Iteraci\u00F3n upload=Subida de Archivo upper_bound=L\u00EDmite Superior url=URL url_config_get=GET url_config_http=HTTP url_config_https=HTTPS url_config_post=POST url_config_protocol=Protocolo\: url_config_title=Valores por Defecto para Petici\u00F3n HTTP url_full_config_title=Muestra UrlFull url_multipart_config_title=Valores por Defecto para Petici\u00F3n HTTP Multipart use_expires=Usar cabecera 'Cache-Control/Expires' cuando se procesan peticiones GET use_keepalive=Utilizar KeepAlive use_multipart_for_http_post=Usar 'multipart/form-data' para HTTP POST use_multipart_mode_browser=Cabeceras compatibles con navegadores use_recording_controller=Utilizar Controlador Recording user=Usuario user_defined_test=Prueba Definida por el Usuario user_defined_variables=Variables definidas por el Usuario user_param_mod_help_note=(No cambie esto. En su lugar, modifique el archivo con ese nombre en el directorio /bin de JMeter) user_parameters_table=Par\u00E1metros user_parameters_title=Par\u00E1metros de Usuario userdn=Nombre de Usuario username=Nombre de Usuario userpw=Contrase\u00F1a value=Valor var_name=Nombre de Referencia variable_name_param=Nombre de variable(puede incluir variables y referencias a funci\u00F3n) view_graph_tree_title=Ver \u00C1rbol Gr\u00E1fico view_results_assertion_error=Error de aserci\u00F3n\: view_results_assertion_failure=Fallo de aserci\u00F3n\: view_results_assertion_failure_message=Mensaje de fallo de aserci\u00F3n\: view_results_desc=Muestra los resultados de texto del muestreo en forma de \u00E1rbol view_results_error_count=Conteo de error\: view_results_fields=campos\: view_results_in_table=Ver Resultados en \u00C1rbol view_results_latency=Latencia\: view_results_load_time=Tiempo de carga\: view_results_render=Renderizador\: view_results_render_html=HTML view_results_render_html_embedded=HTML(descargar elementos embebidos) view_results_render_json=JSON view_results_render_text=Texto view_results_render_xml=XML view_results_request_headers=Cabeceras de petici\u00F3n\: view_results_response_code=C\u00F3digo de respuesta\: view_results_response_headers=Cabeceras de respuesta\: view_results_response_message=Mensaje de respuesta\: view_results_response_too_large_message=Respuesta muy larga a ser mostrada. Tama\u00F1o\: view_results_response_partial_message=Principio del mensaje: view_results_sample_count=Conteo de muestra\: view_results_sample_start=Comienzo de muestra\: view_results_search_pane=Panel de b\u00FAsqueda view_results_size_in_bytes=Tama\u00F1o en bytes\: view_results_tab_assertion=Resultado de la aserci\u00F3n view_results_tab_request=Petici\u00F3n view_results_tab_response=Datos de Respuesta view_results_tab_sampler=Resultado del Muestreador view_results_table_fields_key=Campo adicional view_results_table_fields_value=Valor view_results_table_headers_key=Cabecera de respuesta view_results_table_headers_value=Valor view_results_table_request_headers_key=Cabecera de petici\u00F3n view_results_table_request_headers_value=Valor view_results_table_request_http_cookie=Cookie view_results_table_request_http_host=M\u00E1quina view_results_table_request_http_method=M\u00E9todo view_results_table_request_http_nohttp=No muestra HTTP view_results_table_request_http_path=Ruta view_results_table_request_http_port=Puerto view_results_table_request_http_protocol=Protocolo view_results_table_request_params_key=Nombre de par\u00E1metro view_results_table_request_params_value=Valor view_results_table_request_raw_nodata=No mostrar datos view_results_table_request_tab_http=HTTP view_results_table_request_tab_raw=En bruto view_results_table_result_tab_parsed=Parseado view_results_table_result_tab_raw=En bruto view_results_thread_name=Nombre del hilo\: view_results_title=Ver Resultados view_results_tree_title=Ver \u00C1rbol de Resultados warning=\u00A1Atenci\u00F3n\! web_proxy_server_title=Servidor Proxy web_request=Petici\u00F3n HTTP web_server=Servidor Web web_server_client=Implementaci\u00F3n del Cliente\: web_server_domain=Nombre de Servidor o IP\: web_server_port=Puerto\: web_server_timeout_connect=Conexi\u00F3n\: web_server_timeout_response=Respuesta\: web_server_timeout_title=Timeout (milisegundos) web_testing2_source_ip=Direcci\u00F3n IP fuente\: web_testing2_title=Petici\u00F3n HTTP HttpClient web_testing_embedded_url_pattern=Las URLs embebidas deben coincidir a\: web_testing_retrieve_images=Recuperar Todos los Recursos Empotrados de Archivos HTML web_testing_title=Petici\u00F3n HTTP webservice_proxy_host=Host Proxy webservice_proxy_note=Si est\u00E1 seleccionado "Utilizar Proxy HTTP", pero no se proporciona host o puerto, el muestreador webservice_proxy_note2=buscar\u00E1 opciones en la l\u00EDnea de comandos. Si no se proporcionan host o puerto webservice_proxy_note3=all\u00ED, finalmente fallar\u00E1 silenciosamente. webservice_proxy_port=Puerto Proxy webservice_sampler_title=Petici\u00F3n WebService(SOAP) webservice_soap_action=Acci\u00F3n SOAP webservice_timeout=Timeout\: webservice_use_proxy=Utilizar Proxy HTTP while_controller_label=Condici\u00F3n (funci\u00F3n o variable) while_controller_title=Controlador While workbench_title=Banco de Trabajo wsdl_helper_error=El WSDL no es v\u00E1lido, por favor compruebe la url. wsdl_url=URL del WSDL wsdl_url_error=El WSDL est\u00E1 vacio. xml_assertion_title=Aserci\u00F3n XML xml_download_dtds=Recuperar DTDs externos xml_namespace_button=Utilizar NameSpaces xml_tolerant_button=Parser XML/HTML Tolerante xml_validate_button=Validar XML xml_whitespace_button=Ignorar Espacios xmlschema_assertion_label=Nombre de Archivo\: xmlschema_assertion_title=Aserci\u00F3n de Esquema XML xpath_assertion_button=Validar xpath_assertion_check=Comprobar Expresi\u00F3n XPath xpath_assertion_error=Error en XPath xpath_assertion_failed=Expresi\u00F3n XPath Inv\u00E1lida xpath_assertion_label=XPath xpath_assertion_negate=True si nada coincide xpath_assertion_option=Opciones para parsear XML xpath_assertion_test=Aserci\u00F3n XPath xpath_assertion_tidy=Prueba y ordena la entrada xpath_assertion_title=Aserci\u00F3n XPath xpath_assertion_valid=Expresi\u00F3n XPath V\u00E1lida xpath_assertion_validation=Validar el XML contra el DTD xpath_assertion_whitespace=Ignorar espacios xpath_expression=Expresi\u00F3n XPath contra la que comparar xpath_extractor_fragment=\u00BFRetornar el fragmento XPATH en el caso de contenido de texto? xpath_extractor_query=Consulta XPath\: xpath_extractor_title=Extractor XPath xpath_file_file_name=Archivo XML del que obtener valores xpath_tidy_quiet=Silencioso xpath_tidy_report_errors=Reportar los errores xpath_tidy_show_warnings=Mostrar advertencias you_must_enter_a_valid_number=Debe introducir un n\u00FAmero v\u00E1lido zh_cn=Chino (Simplificado) zh_tw=Chino (Tradicional) apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_de.properties0000644000175000017500000006450312032647221027053 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. about=\u00DCber Apache JMeter add=Hinzuf\u00FCgen add_as_child=Als ein Kind hinzuf\u00FCgen add_parameter=Variable hinzuf\u00FCgen add_pattern=Muster hinzuf\u00FCgen\: add_test=Test hinzuf\u00FCgen add_user=Benutzer hinzuf\u00FCgen add_value=Wert hinzuf\u00FCgen addtest=Test hinzuf\u00FCgen aggregate_graph_column=Spalte aggregate_graph_display=Graphen anzeigen aggregate_graph_height=H\u00F6he aggregate_graph_max_length_xaxis_label=Maximale L\u00E4nge des x-Achsen Bezeichners aggregate_graph_ms=Millisekunden aggregate_graph_response_time=Reaktionszeit aggregate_graph_save_table_header=Tabellen Kopf speichern aggregate_graph_save_table=Tabellen Daten speichern aggregate_graph_save=Graphen speichern aggregate_graph_title=Graph aggregate_graph_user_title=Titel f\u00FCr den Graphen aggregate_graph_width=Breite aggregate_graph=Statistischer Graph aggregate_report_90%_line=90% Marke aggregate_report_bandwidth=KB/sek aggregate_report_count=Anz. der Proben aggregate_report_error%=% Fehler aggregate_report_error=Fehler aggregate_report_median=Mittel aggregate_report_rate=Durchsatz aggregate_report_total_label=Gesamt aggregate_report=Report als_message=Hinweis\: Der Zugriff-Log Parser ist allgmein gehalten. Es ist m\u00F6glich ein Plugin zu erstellen. als_message2=Eigener Parser. Implementieren sie hierzu "LogParser" und f\u00FCgen sie es als .jar hinzu analyze=Analysiere Daten Datei... appearance=Aussehen (Look & Feel) argument_must_not_be_negative=Der Wert darf nicht negativ sein\! assertion_assume_success=Status ignorieren assertion_code_resp=Antwort-Code (Response-Code) assertion_contains=Enth\u00E4lt assertion_equals=Gleicht assertion_headers=Antwort-Header (Response-Header) assertion_matches=Entsprechungen assertion_message_resp=Antwort-Message assertion_not=Nicht assertion_pattern_match_rules=Regeln f\u00FCr passende Muster assertion_patterns_to_test=Zu testende(s) Muster assertion_resp_field=Zu testendes Antwort-Feld (Response-Feld) assertion_substring=Teilzeichenkette (Substring) assertion_text_resp=Text-Antwort (Text-Response) assertion_textarea_label=Behauptungen\: assertion_title=Versicherte Anwort assertion_url_samp=URL gesampled assertion_visualizer_title=Versicherungs Erebnis attribute=Attribut attrs=Attribute auth_manager_title=HTTP Authorisierungs Manager auths_stored=Im Authorization Manager gespeicherte Authorisierungen average_bytes=Durchschnittliche Bytes average=Durchschnitt browse=Datei laden... bsf_script_file=Auszuf\u00FChrendes Script bsf_script_language=Scriptsprache bsf_script_parameters=An das Script bzw. die Script-Datei zu \u00FCbergebende Parameter bsf_script=Auszuf\u00FChrendes Script (Variablen\: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) bsh_assertion_script=Script (untenstehende Variablen sind definiert) bsh_assertion_title=BeanShell Behauptung bsh_function_expression=Auszuwertender Ausdruck bsh_script_file=Script-Datei bsh_script_variables=Folgende Variablen wurden f\u00FCr das Script definiert\:\nSampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log bsh_script=Script (untenstehende Variablen sind definiert) busy_testing=Ich bin mit dem Testen besch\u00E4ftigt, bitte stoppen sie den Test bevor sie die Einstellungen \u00E4ndern. cache_session_id=Session ID zwischenspeichern? cancel_exit_to_save=Es gibt Tests die noch nicht gespeichert wurden. M\u00F6chten sie diese vor dem Beenden speichern? cancel_new_to_save=Es gibt Tests die noch nicht gespeichert wurden. M\u00F6chten sie diese vor dem Bereinigen speichern? cancel_revert_project=Es gibt Tests die noch nicht gespeichert wurden. M\u00F6chten sie zum zuletzt gespeicherten Testplan zur\u00FCck gehen? cancel=Abbrechen choose_function=W\u00E4hlen Sie eine Funktion choose_language=W\u00E4hlen sie eine Sprache clear_all=Alle L\u00F6schen clear_cookies_per_iter=Cookies bei jedem Durchgang l\u00F6schen? clear=L\u00F6schen column_delete_disallowed=Das l\u00F6schen dieser Spalte ist nicht erlaubt column_number=Spaltennummer der CSV Datei file | next | *alias compare=Vergleichen comparefilt=Vergleichsfilter config_element=Konfigurations Element config_save_settings=Konfigurieren configure_wsdl=Konfigurieren constant_throughput_timer_memo=Geben sie eine Pause zwischen den Proben an um einen konstanten Durchsatz zu gew\u00E4hrleisten constant_timer_delay=Thread-Pause (in Millisekunden) constant_timer_memo=Geben sie eine Pause zwischen den Proben an constant_timer_title=Konstanter Timer content_encoding=Content Kodierung\: cookie_manager_policy=Cookie Richtlinie cookies_stored=Anzahl der gespeicherten Cookies im Cookie Manager copy=Kopieren counter_config_title=Z\u00E4hler (Counter) counter_per_user=Z\u00E4hler (Counter) f\u00FCr jeden Benutzer einzeln f\u00FChren countlim=Gr\u00F6\u00DFen-Beschr\u00E4nkung csvread_file_file_name=CVS Datei aus der die Werte gelesen werden | *alias cut_paste_function=Kopieren und Einf\u00FCgen des Funktions Strings cut=Ausschneiden database_conn_pool_max_usage=Maximale Auslastung jeder Verbindung\: database_conn_pool_props=Datenbank Verbindungs-Pool\: database_conn_pool_size=Anzahl der Verbindungen im Pool\: database_conn_pool_title=Vorgaben zum JDBC Datenbank Verbindungs Pool database_driver_class=Treiber-Klasse\: database_login_title=JDBC Datenbank Login Vorgabe database_sql_query_string=SQL Abfrage\: database_sql_query_title=Vorgaben zur JDBC SQL Abfrage database_testing_title=JDBC Anfrage database_url_jdbc_props=Database URL und JDBC Treiber de=Deutsch debug_off=Debugging deaktivieren debug_on=Debugging aktivieren default_parameters=Standard Parameter default_value_field=Vorgabe-Wert\: delay=Pause zu Beginn (Sekunden) delete_parameter=L\u00F6sche Variable delete_test=Test L\u00F6schen delete_user=Benutzer L\u00F6schen delete=L\u00F6schen deltest=L\u00F6sch-Test deref=Dereferenzierungs Aliasse disable=Deaktivieren distribution_graph_title=Verteilungs-Graph (Alpha) distribution_note1=Der Graph wird mit jeder 10. Probe aktualisiert done=Fertig duration_assertion_duration_test=Dauer der Aufrechterhaltung duration_assertion_failure=Die Operation dauerte zu lang\: es wurden {0} Millisekunden ben\u00F6tigt, h\u00E4tte aber maximal {1} Millisekunden dauern d\u00FCrfen. duration_assertion_input_error=Geben Sie bitte einen g\u00FCltigen, positive Ganzzahl-Wert ein. duration_assertion_label=Dauer in Millisekunden duration_assertion_title=Aufrechterhaltungs-Dauer duration=Dauer (Sekunden) edit=Bearbeiten email_results_title=Ergebnisse per eMail verschicken en=Englisch enable=Aktivieren encode?=Encodieren? encoded_value=URL-Encodierter Wert endtime=End-Zeitpunkt entry_dn=Ausgangs DN entrydn=Ausgangs DN error_loading_help=Fehler beim laden der Hilfe-Seite error_occurred=Es ist ein Fehler aufgetreten error_title=Fehler es=Spanisch eval_name_param=Ein Ausdruck der eine Variable und Funktions-Referenz enth\u00E4lt evalvar_name_param=Variablenname example_data=Beispieldaten example_title=Beispiel Proben exit=Beenden expiration=Verfall field_name=Feldname file_already_in_use=Die Datei ist bereits ge\u00F6ffnet file_visualizer_append=An eine existierende Daten-Datei anh\u00E4ngen file_visualizer_auto_flush=Nach jeder Daten-Probe bereinigen (Flush) file_visualizer_browse=Datei laden... file_visualizer_close=Schliessen file_visualizer_file_options=Datei Optionen file_visualizer_filename=Dateinamen eingeben, oder eine existierende Datei ausw\u00E4hlen. file_visualizer_flush=Bereinigen file_visualizer_missing_filename=Kein Ausgabe Dateiname angegeben. file_visualizer_open=\u00D6ffnen file_visualizer_output_file=Schreibe alle Daten in eine Datei file_visualizer_submit_data=Einschliesslich \u00FCbermittelter Daten file_visualizer_title=Datei Reporter file_visualizer_verbose=Umfangreiche Ausgabe (Verbose) file=Datei filename=Dateiname follow_redirects_auto=Automatisch Redirects folgen follow_redirects=Folge Redirects foreach_input=Prefix der Eingabe-Variable foreach_output=Name der Ausgabe-Variable foreach_use_separator=Trennzeichen "_" vor jeder Nummer einf\u00FCgen? format=Zahlenformat fr=Franz\u00F6sisch ftp_binary_mode=Bin\u00E4r-Modus verwenden? ftp_local_file=Lokale Datei\: ftp_remote_file=Entfernte Datei ftp_sample_title=Vorgaben zum FTP Request ftp_save_response_data=Datei in Antwort speichern? ftp_testing_title=FTP Anfrage function_dialog_menu_item=Funktions Hilfe-Dialog function_helper_title=Funktions Hilfe function_name_param=Name der Variablen, in der die Ergebnisse abgelegt werden sollen (ben\u00F6tigt) function_name_paropt=Name der Variablen, in der die Ergebnisse abgelegt werden sollen (optional) function_params=Funktions Parameter functional_mode_explanation=Diese Funktion f\u00FChrt zu betr\u00E4chtlichen Performanceverlusten. functional_mode=Funktionaler Test Mode gaussian_timer_delay=Konstante Pause (in Millisekunden) gaussian_timer_memo=Zus\u00E4tzliche Pause zur Gauss'schen Verteilung gaussian_timer_range=Abweichung (in Millisekunden) gaussian_timer_title=Gauss'scher Zufalls-Zeitgeber generate=Generiere generator_cnf_msg=Kann die Erzeuger-Klasse (Generator) nicht finden. Vergewissern sie sich, dass die das .jar Archiv in das /lib Verzeichnis gelegt haben. generator_illegal_msg=Konnte wegen einer "IllegalAcessException" nicht auf die Erzeuger-Klasse (Generator) zugreifen. generator_instantiate_msg=Konnte keine Instanz der Erzeuger-Klasse ertsllen. Stellen sie sicher, dass der Erzeuger das "Generator"-Interface implementiert\! generator=Name der Erzeuger-Klasse get_xml_from_file=Datei mit SOAP XML Daten (Vorrang vor obenstehendem Text) get_xml_from_random=Verzeichnis mit Meldungen graph_choose_graphs=Anzuzeigende Graphen graph_full_results_title=Vollst\u00E4ndige Ergebnisse graph_results_average=Durchschnitt graph_results_data=Daten graph_results_deviation=Abweichung graph_results_latest_sample=Letzte Probe graph_results_median=Mittel graph_results_ms=Millisekunden (ms) graph_results_no_samples=Anzahl der Proben graph_results_throughput=Durchsatz graph_results_title=Ergebnisse grouping_add_separators=Zwischen den Gruppen Trennzeichen einf\u00FCgen grouping_in_controllers=Jede Gruppe in einen neuen Controller legen grouping_mode=Gruppierung grouping_no_groups=Sampler nicht gruppieren grouping_store_first_only=Nur den ersten Sampler jeder Gruppe speichern headers_stored=Gespeicherte Header im Header Manager help_node=Wof\u00FCr ist das? help=Hilfe html_assertion_file=Schreibe JTidy Bericht in eine Datei html_assertion_label=HTML Bericht html_assertion_title=Titel des HTML Bericht html_parameter_mask=HTML Parameter Maske http_url_rewriting_modifier_title=HTTP URL Re-writing Bezeichner http_user_parameter_modifier=HTTP User Parameter Bezeichner httpmirror_title=HTTP Spiegel if_controller_evaluate_all=F\u00FCr alle Unterelemente auswerten? if_controller_label=Bedingung (Javascript) if_controller_title=If-Controller ignore_subcontrollers=Ignoriere Sub-Controller Bl\u00F6cke include_controller=Controller einschlie\u00DFen include_equals=Gleichheitszeichen mit einbeziehen? include_path=Test-Plan mit einbeziehen? increment=Zunahme infinite=endlos Wiederholen insert_after=Dahinter einf\u00FCgen insert_before=Davor einf\u00FCgen insert_parent=Dar\u00FCber Einf\u00FCgen interleave_control_title=Controller \u00FCberlagern intsum_param_1=Erster Ganzzahl Wert (int) intsum_param_2=Zweiter Ganzzahl Wert (int). Weitere Werte k\u00F6nnen durch Angabe weiterer Argumente addiert werden. invalid_data=Ung\u00FCltige Daten invalid_mail_address=Eine oder mehrere fehlerhafte E-Mail Adressen gefunden invalid_mail_server=Probleme beim Verbinden mit dem Mail-Server (siehe JMeter Log-Datei) invalid_mail=Fehler beim senden der E-Mail invalid_variables=Ung\u00FCltige Variablen iteration_counter_arg_1="TRUE" damit jeder Benutzer einen eingenen Z\u00E4hler hat. "FALSE" f\u00FCr einen globalen Z\u00E4hler. iterator_num=Anzahl der Wiederholungen\: jar_file=.jar Dateien java_request_defaults=Java Anfrage (Request) Vorgabe java_request=Java Anfrage (Request) javascript_expression=Zu evaluierender JavaScript Ausdruck jexl_expression=Auszuwertender JEXL Ausdruck jms_auth_required=Ben\u00F6tigt jndi_config_title=JNDI Konfiguration jndi_url_jndi_props=JNDI Eigenschaften load_wsdl=Lade WSDL load=Laden log_errors_only=Fehler log_file=Ort der Log-Datei log_function_comment=Zus\u00E4tzliche Kommentare (optional) log_function_level=Log-Level "INFO" (Vorgabe), "OUT" oder "ERR" log_function_string_ret=Zu loggende (und zur\u00FCckzugebende) Zeichenkette log_function_string=Zu loggende Zeichenkette log_function_throwable="Throwable" Test (optional) log_only=Nur Loggen/Anzeigen\: log_parser_cnf_msg=Kann die Klasse nicht finden. Vergewissern sie sich, dass die das .jar Archiv in das /lib Verzeichnis gelegt haben. log_parser_illegal_msg=Konnte aufgrund einer "IllegalAcessException" nicht auf die Klasse zugreifen. log_parser_instantiate_msg=Konnte keine Instanz der Log-Parsers erstellen. Stellen sie sicher, dass der Erzeuger das "LogParser"-Interface implementiert\! log_parser=Name der Log-Parser Klasse log_sampler=Tomcat Zugriffs-Log Sampler log_success_only=Erfolge logic_controller_title=Einfacher Controller login_config_element=Login Konfigurations Element login_config=Login Konfiguration longsum_param_1=Erster long-Wert longsum_param_2=Zweiter long-Wert. Durch weitere Parameter k\u00F6nnen zus\u00E4tzliche long-Werte hinzugef\u00FCgt werden loop_controller_title=Schleifen-Controller (Loop Controller) looping_control=Wiederholungs-Control lower_bound=Untere Grenze mail_reader_account=Benutzername\: mail_reader_all_messages=Alle mail_reader_delete=Nachrichten vom Server l\u00F6schen mail_reader_folder=Verzeichnis\: mail_reader_num_messages=Anzahl der zu ladenen Nachrichten\: mail_reader_password=Passwort\: mail_reader_server_type=Server-Typ\: mail_sent=Mail erfolgreich gesendet mailer_attributes_panel=Mail Eigenschaften mailer_error=Konnte die Mail nicht senden. Bitte korrigieren Sie jede fehlerhafte Eingabe. mailer_visualizer_title=Mailer-Visualisierung maximum_param=Der maximale Wert welcher f\u00FCr einen Wertebereich erlaubt ist md5hex_assertion_failure=Fehler beim \u00FCberpr\u00FCfen der MD5 Summe\: {0} erhalten, sollte {1} sein md5hex_assertion_md5hex_test=Zu pr\u00FCfender MD5 Hex String md5hex_assertion_title=MD5 Hex \u00DCberpr\u00FCfung menu_assertions=\u00DCberpr\u00FCfung menu_close=Schlie\u00DFen menu_collapse_all=Alle schlie\u00DFen menu_config_element=Konfigurations Element menu_edit=Editieren menu_expand_all=Alle \u00F6ffnen menu_logic_controller=Logik-Controller menu_merge=Zusammenf\u00FCgen menu_modifiers=Modifizierer menu_non_test_elements=Nicht-Test Elemente menu_open=\u00D6ffnen menu_post_processors=Post-Processors menu_pre_processors=Pre-Processors menu_response_based_modifiers=Antwort-Basierter Modifizierer menu_timer=Zeitgeber (Timer) method=Methode\: minimum_param=Der minimale Wert welcher f\u00FCr einen Wertebereich erlaubt ist minute=Minute modddn=Alter Name modification_controller_title=Modifikations-Controller modification_manager_title=Modifikations-Manager modify_test=Test \u00E4ndern modtest=\u00C4nderungs-Test module_controller_module_to_run=Auszurufendes Modul module_controller_title=Modul-Controller module_controller_warning=Konnte Modul nicht finden\: monitor_equation_active=Aktiv\: (aktiv/maximum) > 25% monitor_equation_dead=Abgestoben\: keine Antwort monitor_equation_healthy=Gut\: (aktiv/maximum) < 25% monitor_equation_load=Last\: ((aktiv/mamimum)*50) + ((genutzer Speicher/maximaler Speicher)*50) monitor_equation_warning=Warnung\: (aktiv/maximum) > 67% monitor_health_tab_title=Gut monitor_health_title=Ergebnisse \u00DCberwachen monitor_is_title=Als \u00DCberwacher (Monitor) benutzen monitor_label_right_active=Aktiv monitor_label_right_dead=Abgestorben monitor_label_right_healthy=Gut monitor_label_right_warning=Warnung monitor_legend_health=Gut monitor_legend_load=Last monitor_legend_memory_per=Speicher % (genutzt/gesamt) monitor_legend_thread_per=Thread % (aktiv/maimum) monitor_performance_servers=Server monitor_performance_title=Performance-Graph new=Neu newdn=Neuer DN (distinguished name) no=Norwegisch number_of_threads=Anzahl von Threads\: obsolete_test_element=Dieser Test-Abschnitt ist hinf\u00E4lig once_only_controller_title=Einmal-Controller opcode=OPcode open=\u00D6ffnen option=Optionen optional_tasks=Optionale Aufgaben paramtable=Parameter die mit dem Request gesendet werden\: password=Passwort paste_insert=Als Eintrag einf\u00FCgen paste=Einf\u00FCgen path_extension_choice=Pfad-Erweiterung (benutze ";" als Trennzeichen) path_extension_dont_use_equals=Keine Gleichheitszeichen in Pfad-Erweiterung benutzen (Intershop Enfinity compatibility) path_extension_dont_use_questionmark=Keine Fragezeichen in Pfad-Erweiterung benutzen (Intershop Enfinity compatibility) path=Pfad\: patterns_to_exclude=Auszuschlie\u00DFende URL-Muster patterns_to_include=Einzuschlie\u00DFende URL-Muster property_default_param=Vorgabe-Wert property_edit=Bearbeiten property_editor.value_is_invalid_message=Der eingegebene Text ist f\u00FCr diese Eigenschaft ung\u00FCltig.\nDer Wert wird auf seinen vorherigen Wert zur\u00FCck gesetzt. property_editor.value_is_invalid_title=Ung\u00FCltige Eingabe property_name_param=Name der Eigenschaft property_returnvalue_param=Urspr\u00FCnglichen Wert der Eigenschaft zur\u00FCckgeben? Vorgabe\: false property_undefined=undefiniert property_value_param=Wert der Eigeschaft property_visualiser_title=Eigenschaften protocol_java_border=Java-Klasse protocol_java_classname=Klassenname (classname)\: protocol_java_config_tile=Java Sample Konfigurieren protocol_java_test_title=Java Tests protocol=Protokoll [http]\: proxy_assertions=Versicherungen hinzuf\u00FCgen proxy_cl_error=Wenn Sie einen Proxy Server spezifizieren, m\u00FCssen Sie den Host und Port angeben proxy_content_type_exclude=Ausschlie\u00DFen\: proxy_content_type_filter=Content-Type Filter proxy_content_type_include=Einschlie\u00DFen\: proxy_headers=HTTP-Header \u00FCberwachen proxy_regex=RegEx Muster proxy_sampler_settings=HTTP Sampler Einstellungen proxy_sampler_type=Typ\: proxy_separators=F\u00FCgen sie Trennzeichen hinzu proxy_target=Ziel-Controller (Target-Controller)\: proxy_test_plan_content=Test-Plan Inhalt\: random_control_title=Zufalls-Controller random_order_control_title=Zufalls-Reihenfolgen-Controller read_response_message=Empfange Antwort wurde nicht gepr\u00FCft. Um die Antwort anzusehen aktivieren Sie die Checkbox im Sampler. read_soap_response=SOAP-Antwort lesen realm=Bereich regexfunc_param_1=Regul\u00E4re Ausdr\u00FCcke zum Suchen in den Results der vorherigen Requests regexfunc_param_2=Beispiel f\u00FCr Ersetzungs Strings, benuzte Gruppen von den regul\u00E4ren Ausdr\u00FCcken regexfunc_param_3=Which match to use. Einen Integer 1 oder gr\u00F6sser, RAND damit JMeter eine zuf\u00E4llige Auswahl trifft, eine Fliesskommazahl, oder ALL wenn alle Treffer benutzt werden regexfunc_param_4=Zwischen Text. Wenn ALL ausgew\u00E4hlt ist, wird der zwischen Test benutzt um das Ergebnis zu generieren regexfunc_param_5=Standard Text. Wird benutzt anstatt der Vorlage, falls der Regul\u00E4re Ausdruck keine Treffer findet remove=Entfernen report_bar_chart=Balken-Diagramm report_base_directory=Basis-Verzeichnis report_chart_caption=Diagramm-Titel report_chart_x_axis_label=Bezeichner f\u00FCr die X-Achse report_chart_x_axis=X-Achse report_chart_y_axis_label=Bezeichner f\u00FCr die Y-Achse report_chart_y_axis=Y-Achse report_line_graph_urls=URLs einbeziehen report_line_graph=Linien-Diagramm report_output_directory=Ausgabe-Verzeichnis f\u00FCr den Bericht report_page_element=Seitenelement report_page_footer=Seitenfu\u00DF report_page_header=Seitenkopf report_page_index=Seiten-Index erstellen report_page_intro=Seiteneinleitung report_page_style_url=Stylesheet URL report_page_title=Seitentitel report_page=Bericht-Seite report_pie_chart=Torten-Diagramm report_select=Ausw\u00E4hlen report_summary=Bericht-Zusammenfassung report_writer_html=HTML Bericht-Schreiber report_writer=Bericht-Schreiber request_data=Request Daten reset_gui=GUI zur\u00FCcksetzen restart=Neu starten revert_project?=Projekt zur\u00FCck setzten? revert_project=Zur\u00FCcksetzen root_title=Wurzel root=Wurzel run=Start running_test=Test starten sampler_on_error_action=Aktion die bei einem Sampler-Fehler ausgef\u00FChrt werden soll sampler_on_error_continue=Fortfahren sampler_on_error_stop_test=Test Anhalten sampler_on_error_stop_thread=Thread Anhalten save?=Speichern? save_all_as=Test-Plan speichern unter save_as_error=Mehr als ein Element ausgew\u00E4hlt\! save_as_image_all=Bildschirm als Bild speichern save_as_image=Als Bild speichern save_as=Speichern unter save_assertionresultsfailuremessage=Speichere Meldungen der Versicherungs-Fehler save_assertions=Speichere Versicherungs-Ergebnisse (XML) save_asxml=Speichere als XML save_bytes=Speichere anzahl der Bytes save_code=Speichere Response-Code save_datatype=Speichere Daten-Typ save_encoding=Speichere Kodierung save_fieldnames=Speichere Feld-Namen (CSV) save_filename=Speichere Response-Dateiname save_graphics=Speichere Graphen save_hostname=Speichere Hostenamen save_label=Speichere Bezeichner save_latency=Speichere Latenz save_message=Speichere Response-Nachricht save_overwrite_existing_file=Die ausgew\u00E4hlte Datei existiert bereits, m\u00F6chten sie sie \u00FCberschreiben? save_requestheaders=Speichere Request-Header (XML) save_responsedata=Speichere Response-Daten (XML) save_responseheaders=Speichere Response-Header (XML) save_samplecount=Speichere Proben und Fehler Anzahl save_samplerdata=Speichere Sampler-Daten (XML) save_subresults=Speichere Unter-Ergebnisse (XML) save_success=Speichere Erfolge save_threadcounts=Speichere aktive Thread Anzahl save_threadname=Speichere Thread-Name save_time=Speichere ben\u00F6tigte Zeit save_timestamp=Speichere Zeitstempel save_url=Speichere URL save=Speichern scheduler_configuration=Scheduler Konfiguration scope=G\u00FCltigkeitsbereich (Scope) second=Sekunde secure=Sicher send_file_browse=Datei ausw\u00E4hlen... send_file_filename_label=Dateiname\: send_file_param_name_label=Wert des "name"-Attributes\: send_file=Datei mit dem Request senden\: server=Server Name oder IP\: should_save=Wenn sie supportete Daten Dateien (z.B. CSV) benutzen ist es wichtig zuerst das Test-Script zu speichern.\nM\u00F6chten sie den Test-Plan speichern? shutdown=Beenden size_assertion_comparator_error_equal=gleich size_assertion_comparator_error_greater=gr\u00F6\u00DFer als size_assertion_comparator_error_greaterequal=gr\u00F6\u00DFer oder gleich size_assertion_comparator_error_less=kleiner als size_assertion_comparator_error_lessequal=kleiner oder gleich size_assertion_comparator_error_notequal=nicht gleich size_assertion_comparator_label=Art des Vergleichs size_assertion_failure=Das Ergebnis hatte die falsche Gr\u00F6\u00DFe ({0} Byte). Es h\u00E4tte {1} {2} Byte sein m\u00FCssen. size_assertion_input_error=Bitte geben sie einen g\u00FCltigen Ganzzahl-Wert ein. size_assertion_label=Gr\u00F6\u00DFe in Byte\: size_assertion_size_test=Gr\u00F6\u00DFe versichern size_assertion_title=Gr\u00F6\u00DFen Versicherung soap_action=SOAP Aktion soap_data_title=SOAP/XML-RPC Daten soap_sampler_title=SOAP/XML-RPC Anfrage soap_send_action=Sende SOAP Aktion\: spline_visualizer_average=Durchschnitt spline_visualizer_incoming=Eingehend spline_visualizer_maximum=Maximal spline_visualizer_minimum=Minimal spline_visualizer_title=Spline Darstellung spline_visualizer_waitingmessage=Warte auf Proben ssl_alias_prompt=Bitte geben Sie Ihren bevorzugten Alias ein ssl_alias_select=W\u00E4hlen Sie Ihren Alias f\u00FCr den Test ssl_error_title=Problem beim Schl\u00FCssel Speichern ssl_pass_prompt=Bitte geben Sie Ihr Passwort ein ssl_pass_title=Schl\u00FCssel Speicher Passwort starttime=Startzeit stopping_test_title=Stoppe den Test stopping_test=Stoppe alle Tests. Bitte warten ... string_from_file_file_name=Geben sie den vollst\u00E4ndingen Datei-Pfad ein string_from_file_seq_final=Letzte Datei-Sequenznummer (optional) string_from_file_seq_start=Erste Datei-Sequenznummer (optional) table_visualizer_sample_num=Proben Anzahl table_visualizer_sample_time=Proben-Zeit (ms) table_visualizer_start_time=Startzeit table_visualizer_success=Erfolgreich table_visualizer_thread_name=Thread-Name table_visualizer_warning=Warnung tcp_config_title=TCP Sampler Konfiguration tcp_nodelay=Setzte "NoDelay" tcp_port=Port-Nummer\: tcp_request_data=Text senden tcp_timeout=Timeout (Millisekunden)\: test_action_duration=Dauer (Millisekunden) test_action_target_test=Alle Threads test_action_target_thread=Aktueller Thread test_action_target=Ziel test_action_title=Test-Aktion test_configuration=Test-Konfiguration test_plan_classpath_browse=F\u00FCgen sie das Verzeichnis oder .jar zum classpath hinzu test_plan=Testplan testconfiguration=Konfiguration Testen testplan.serialized=Thread-Gruppen nacheinander starten testplan_comments=Kommenare\: thread_delay_properties=Thread-Pause Eigenschaften thread_group_title=Thread Gruppe thread_properties=Thread-Eigenschaften threadgroup=Thread-Gruppe throughput_control_bynumber_label=Ausf\u00FChrungen (Gesamt) throughput_control_bypercent_label=Ausf\u00FChrungen (Prozent) throughput_control_perthread_label=pro Benutzer throughput_control_title=Durchsatz-Controller throughput_control_tplabel=Durchsatz time_format=Format-Zeichenkette des "SimpleDateFormat" (optional) timelim=Zeit-Limit tr=T\u00FCrkisch upload=Datei hochladen upper_bound=obere Grenze url_config_title=HTTP Request Default Einstellungen use_keepalive=Benutze KeepAlive user_defined_variables=Benutzer definierte Variablen user_param_mod_help_note=(\u00C4ndern Sie dies nicht. Stattdessen, bitte die Datei mit dem Namen in JMeter's /bin Ordner \u00E4ndern.) username=Benutzername value=Wert view_results_in_table=Zeige Ergebnisse in der Tabelle warning=Warnung\! web_server_domain=Server Name oder IP\: web_testing_retrieve_images=Hole alle Bilder und Java Applets (nur HTML Dateien) you_must_enter_a_valid_number=Sie m\u00FCssen ein g\u00FCltige Nummer eingeben apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_tr.properties0000644000175000017500000012653312032647221027112 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! about=Apache JMeter Hakk\u0131nda add=Ekle add_as_child=\u00C7ocuk Olarak Ekle add_parameter=De\u011Fi\u015Fken Olarak Ekle add_pattern=Desen Ekle\: add_test=Test Ekle add_user=Kullan\u0131c\u0131 Ekle add_value=De\u011Fer Ekle addtest=Test ekle aggregate_graph=\u0130statiksel Grafikler aggregate_graph_column=Kolon aggregate_graph_display=Grafik G\u00F6ster aggregate_graph_height=Y\u00FCkseklik aggregate_graph_max_length_xaxis_label=X-ekseni etiketinin maximum uzunlu\u011Fu aggregate_graph_ms=Milisaniyeler aggregate_graph_response_time=Cevap Zaman\u0131 aggregate_graph_save=Grafi\u011Fi kaydet aggregate_graph_save_table=Tablo Verisini Kaydet aggregate_graph_save_table_header=Tablo Ba\u015Fl\u0131\u011F\u0131n\u0131 Kaydet aggregate_graph_title=Toplu Grafik aggregate_graph_user_title=Grafik Ba\u015Fl\u0131\u011F\u0131 aggregate_graph_width=Geni\u015Flik aggregate_report=Toplu Rapor aggregate_report_90%_line=90% Sat\u0131r aggregate_report_bandwidth=KB/sn aggregate_report_count=\# \u00D6rnek aggregate_report_error=Hata aggregate_report_error%=Hata % aggregate_report_max=En \u00C7ok aggregate_report_median=Ortalama aggregate_report_min=En Az aggregate_report_rate=Transfer Oran\u0131 aggregate_report_total_label=TOPLAM als_message=Not\: Eri\u015Fim Logu Ayr\u0131\u015Ft\u0131r\u0131c\u0131s\u0131 eklentiye izin veren genel-ge\u00E7er bir tasar\u0131ma sahiptir als_message2=\u00F6zg\u00FCn ayr\u0131\u015Ft\u0131r\u0131c\u0131. Bu \u015Fekilde yapmak i\u00E7in, LogParser'i ger\u00E7ekle, jar'\u0131 \u015Furaya ekle\: als_message3=/lib dizini ve \u00F6rnekleyicideki s\u0131n\u0131f\u0131 gir. analyze=Veri Dosyas\u0131n\u0131 Analiz Et... anchor_modifier_title=HTML Ba\u011Flant\u0131s\u0131 Ayr\u0131\u015Ft\u0131r\u0131c\u0131s\u0131 appearance=Temalar argument_must_not_be_negative=Ba\u011F\u0131ms\u0131z de\u011Fi\u015Fken negatif olmamal\u0131\! assertion_assume_success=Durumu Yoksay assertion_code_resp=Cevap Kodu assertion_contains=\u0130\u00E7erir assertion_equals=E\u015Fittir assertion_headers=Cevap Ba\u015Fl\u0131klar\u0131 assertion_matches=\u00D6rt\u00FC\u015F\u00FCr assertion_message_resp=Cevap Mesaj\u0131 assertion_pattern_match_rules=Desen \u00D6rt\u00FC\u015Fme Kurallar\u0131 assertion_patterns_to_test=Test Edilecek Desenler assertion_resp_field=Test Edilecek Cevap Alan\u0131 assertion_text_resp=Metin Cevap assertion_textarea_label=Do\u011Frulamalar\: assertion_title=Cevap Do\u011Frulamas\u0131 assertion_url_samp=URL \u00D6rneklendi assertion_visualizer_title=Do\u011Frulama Sonu\u00E7lar\u0131 attribute=\u00D6znitelik attrs=\u00D6znitelikler auth_base_url=Temel URL auth_manager_title=HTTP Yetkilendirme Y\u00F6neticisi auths_stored=Yetkilendirme Y\u00F6neticisinde Tutulan Yetkilendirmeler average=Ortalama average_bytes=Ort. Byte bind=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Ba\u011Flamas\u0131 browse=G\u00F6zat... bsf_sampler_title=BSF \u00D6rnekleyicisi bsf_script=\u00C7al\u0131\u015Ft\u0131r\u0131lacak betik (de\u011Fi\u015Fkenler\: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) bsf_script_file=\u00C7al\u0131\u015Ft\u0131r\u0131lacak betik dosyas\u0131 bsf_script_language=Betik dili\: bsf_script_parameters=Beti\u011Fe veya betik dosyas\u0131na ge\u00E7ilecek parametreler bsh_assertion_script=Betik (tan\u0131ml\u0131 de\u011Fi\u015Fkenler i\u00E7in a\u015Fa\u011F\u0131ya bak\u0131n) bsh_assertion_script_variables=Betik i\u00E7in \u015Fu de\u011Fi\u015Fkenler tan\u0131mlanm\u0131\u015Ft\u0131r\:\nOkuma/Yazma\: Failure, FailureMessage, SampleResult, vars, props, log.\nSalt Okunur\: Response[Data|Code|Message|Headers], RequestHeaders, SampleLabel, SamplerData, ctx bsh_assertion_title=BeanShell Do\u011Frulamas\u0131 bsh_function_expression=De\u011Ferlendirilecek ifade bsh_sampler_title=BeanShell \u00D6rnekleyici bsh_script=Betik (tan\u0131ml\u0131 de\u011Fi\u015Fkenler i\u00E7in a\u015Fa\u011F\u0131ya bak\u0131n) bsh_script_file=Betik Dosyas\u0131 bsh_script_parameters=Parametreler (-> Dizgi (String) Parametreler ve String []bsh.args) bsh_script_variables=Betik i\u00E7in \u015Fu de\u011Fi\u015Fkenler tan\u0131ml\u0131d\u0131r\:\nSampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log busy_testing=Testle me\u015Fgul\u00FCm, l\u00FCtfen ayarlar\u0131 de\u011Fi\u015Ftirmeden \u00F6nce testi durdurun cache_session_id=\u00D6nbellek oturum Id'si? cancel=\u0130ptal cancel_exit_to_save=Kaydedilmemi\u015F test maddeleri var. \u00C7\u0131kmadan \u00F6nce kaydetmek ister misiniz? cancel_new_to_save=Kaydedilmemi\u015F test maddeleri var. Testi temizlemeden \u00F6nce kaydetmek ister misin? cancel_revert_project=Kaydedilmemi\u015F test maddeleri var. Daha \u00F6nce kaydedilmi\u015F olan test plan\u0131na d\u00F6nmek ister misiniz? choose_function=Fonksiyon se\u00E7in choose_language=Dil se\u00E7in clear=Temizle clear_all=Hepsini Temizle clear_cookies_per_iter=Her tekrar i\u00E7in \u00E7erezleri temizle? column_delete_disallowed=Bu kolonu silmek i\u00E7in izin yok column_number=CSV dosyas\u0131 i\u00E7in kolon numaras\u0131 | ileri | *takma ad compare=Kar\u015F\u0131la\u015Ft\u0131r comparefilt=Filtreyi kar\u015F\u0131la\u015Ft\u0131r config_element=Ayar Eleman\u0131 config_save_settings=Ayarla configure_wsdl=Ayarla constant_throughput_timer_memo=Sabit bir transfer oran\u0131 elde etmek i\u00E7in \u00F6rneklemeler aras\u0131na gecikme ekle constant_timer_delay=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Gecikmesi (milisaniyeler) constant_timer_memo=\u00D6rneklemeler aras\u0131na sabit bir gecikme ekle constant_timer_title=Sabit Zamanlay\u0131c\u0131 content_encoding=\u0130\u00E7erik kodlamas\u0131\: controller=Denet\u00E7i cookie_manager_policy=\u00C7erez Politikas\u0131 cookie_manager_title=HTTP \u00C7erez Y\u00F6neticisi cookies_stored=\u00C7erez Y\u00F6neticisinde Tutulan \u00C7erezler copy=Kopyala counter_config_title=Saya\u00E7 counter_per_user=Sayac\u0131 her kullan\u0131c\u0131 i\u00E7in ba\u011F\u0131ms\u0131z \u00E7al\u0131\u015Ft\u0131r countlim=Boyut s\u0131n\u0131r\u0131 csvread_file_file_name=De\u011Ferlerin okunaca\u011F\u0131 CSV dosyas\u0131 | *k\u0131saltma cut=Kes cut_paste_function=Fonksiyon metnini kopyala ve yap\u0131\u015Ft\u0131r database_conn_pool_max_usage=Her Ba\u011Flant\u0131 i\u00E7in En Fazla Kullan\u0131m\: database_conn_pool_props=Veritaban\u0131 Ba\u011Flant\u0131s\u0131 Havuzu database_conn_pool_size=Havuzdaki Ba\u011Flant\u0131 Say\u0131s\u0131 database_conn_pool_title=JDBC Veritaban Ba\u011Flant\u0131s\u0131 Havuzu \u00D6ntan\u0131ml\u0131 De\u011Ferleri database_driver_class=S\u00FCr\u00FCc\u00FC S\u0131n\u0131f\u0131\: database_login_title=JDBC Veritaban\u0131 Giri\u015Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri database_sql_query_string=SQL Sorgusu Metni\: database_sql_query_title=JDBC SQL Sorgusu \u00D6ntan\u0131ml\u0131 De\u011Ferleri database_testing_title=JDBC \u0130ste\u011Fi database_url=JDBC Adresi\: database_url_jdbc_props=Veritaban\u0131 Adresi ve JDBC S\u00FCr\u00FCc\u00FCs\u00FC de=Alman debug_off=Hata ay\u0131klamas\u0131n\u0131 saf d\u0131\u015F\u0131 b\u0131rak debug_on=Hata ay\u0131klamas\u0131n\u0131 etkinle\u015Ftir default_parameters=\u00D6ntan\u0131ml\u0131 Parametreler default_value_field=\u00D6ntan\u0131ml\u0131 De\u011Fer\: delay=Ba\u015Flang\u0131\u00E7 gecikmesi (saniye) delete=Sil delete_parameter=De\u011Fi\u015Fkeni Sil delete_test=Testi Sil delete_user=Kullan\u0131c\u0131y\u0131 Sil deltest=Testi sil deref=K\u0131saltmalar\u0131 g\u00F6ster disable=Safd\u0131\u015F\u0131 b\u0131rak distribution_graph_title=Da\u011F\u0131t\u0131m Grafi\u011Fi (alfa) distribution_note1=Grafik 10 \u00F6rnekte bir g\u00FCncellenecek domain=Etki Alan\u0131 done=Bitti duration=S\u00FCre (saniye) duration_assertion_duration_test=Do\u011Frulama S\u00FCresi duration_assertion_failure=\u0130\u015Flem \u00E7ok uzun s\u00FCrd\u00FC\: {0} milisaniye s\u00FCrmesi gerekirken, {1} milisaniyeden fazla s\u00FCrd\u00FC. duration_assertion_input_error=Pozitif bir tamsay\u0131 giriniz. duration_assertion_label=Milisaniye olarak s\u00FCre\: duration_assertion_title=S\u00FCre Do\u011Frulamas\u0131 edit=D\u00FCzenle email_results_title=E-posta Sonu\u00E7lar\u0131 en=\u0130ngilizce enable=Etkinle\u015Ftir encode?=Kodlama? encoded_value=URL Kodlanm\u0131\u015F De\u011Fer endtime=Biti\u015F Zaman\u0131 entry_dn=Giri\u015F DN'i entrydn=Giri\u015F DN'i error_loading_help=Yard\u0131m sayfas\u0131n\u0131 y\u00FCklerken hata error_occurred=Hata Olu\u015Ftu error_title=Hata es=\u0130spanyolca eval_name_param=De\u011Fi\u015Fken ve fonksiyon referanslar\u0131 i\u00E7eren metin evalvar_name_param=De\u011Fi\u015Fken ismi example_data=\u00D6rnek Veri example_title=\u00D6rnekleyici \u00F6rne\u011Fi exit=\u00C7\u0131k\u0131\u015F expiration=S\u00FCre dolumu field_name=Alan ismi file=Dosya file_already_in_use=Bu dosya zaten kullan\u0131l\u0131yor file_visualizer_append=Varolan Veri Dosyas\u0131na Ekle file_visualizer_auto_flush=Her \u00D6rnekten Sonra Otomatik Olarak Temizle file_visualizer_browse=G\u00F6zat... file_visualizer_close=Kapat file_visualizer_file_options=Dosya Se\u00E7enekleri file_visualizer_filename=Dosya ismi file_visualizer_flush=Temizle file_visualizer_missing_filename=\u00C7\u0131kt\u0131 dosyas\u0131 belirtilmedi. file_visualizer_open=A\u00E7 file_visualizer_output_file=Sonu\u00E7lar\u0131 dosyaya yaz / Dosyadan oku file_visualizer_submit_data=Girilen Veriyi Ekle file_visualizer_title=Dosya Raprolay\u0131c\u0131 file_visualizer_verbose=\u00C7\u0131kt\u0131y\u0131 Detayland\u0131r filename=Dosya \u0130smi follow_redirects=Y\u00F6nlendirmeleri \u0130zle follow_redirects_auto=Otomatik Olarak Y\u00F6nlendir foreach_controller_title=ForEach Denet\u00E7isi foreach_input=Giri\u015F de\u011Fi\u015Fkeni \u00F6neki foreach_output=\u00C7\u0131k\u0131\u015F de\u011Fi\u015Fkeni ismi foreach_use_separator=Numara \u00F6n\u00FCne "_" ekle ? format=Numara bi\u00E7imi fr=Frans\u0131zca ftp_binary_mode=\u0130kili kipi kullan ? ftp_local_file=Yerel Dosya\: ftp_remote_file=Uzak Dosya\: ftp_sample_title=FTP \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri ftp_save_response_data=Cevab\u0131 Dosyaya Kaydet ? ftp_testing_title=FTP \u0130ste\u011Fi function_dialog_menu_item=Fonksiyon Yard\u0131m\u0131 Diyalo\u011Fu function_helper_title=Fonksiyon Yard\u0131m\u0131 function_name_param=Sonucu tutacak de\u011F\u015Fkenin ismi (gerekli) function_name_paropt=Sonucu tutacak de\u011Fi\u015Fkenin ismi (iste\u011Fe ba\u011Fl\u0131) function_params=Fonksiyon Parametresi functional_mode=Fonksiyonel Test Kipi (\u00F6r\: Cevap Verisini ve \u00D6rnekleyici Verisini kaydet) functional_mode_explanation=Ba\u015Far\u0131m\u0131 olumsuz etkileyecek olmas\u0131na ra\u011Fmen Fonksiyonel Test Kipi se\u00E7iliyor. gaussian_timer_delay=Sabit Gecikme S\u0131n\u0131r\u0131 (milisaniye) gaussian_timer_memo=Gauss da\u011F\u0131l\u0131m\u0131na g\u00F6re rastgele bir gecikme ekler gaussian_timer_range=Sapma (milisaniye) gaussian_timer_title=Gauss Rastgele Zamanlay\u0131c\u0131 generate=\u00DCret generator=\u00DCretici S\u0131n\u0131f\u0131n \u0130smi generator_cnf_msg=\u00DCretici s\u0131n\u0131f\u0131 bulamad\u0131. L\u00FCtfen jar dosyas\u0131n\u0131 /lib dizini alt\u0131na yerle\u015Ftirdi\u011Finizden emin olun. generator_illegal_msg=IllegalAccessException nedeniyle \u00FCretici s\u0131n\u0131fa eri\u015Femedi. generator_instantiate_msg=\u00DCretici ayr\u0131\u015Ft\u0131r\u0131c\u0131 i\u00E7in \u00F6rnek yaratamad\u0131. L\u00FCtfen \u00FCreticinin "Generator" arabirimini ger\u00E7ekledi\u011Finden emin olun. get_xml_from_file=SOAP XML Verisini i\u00E7eren Dosya (A\u015Fa\u011F\u0131daki metnin \u00FCzerine yazar) get_xml_from_random=Mesaj Klas\u00F6r\u00FC graph_choose_graphs=G\u00F6sterilecek Grafikler graph_full_results_title=Grafik Tam Sonu\u00E7lar\u0131 graph_results_average=Ortalama graph_results_data=Veri graph_results_deviation=Sapma graph_results_latest_sample=Son \u00D6rnek graph_results_median=Orta graph_results_no_samples=\u00D6rnek Say\u0131s\u0131 graph_results_throughput=Transfer Oran\u0131 graph_results_title=Grafik Sonu\u00E7lar\u0131 grouping_add_separators=Gruplar aras\u0131na ayra\u00E7 ekle grouping_in_controllers=Her grubu yeni bir denet\u00E7iye koy grouping_mode=Gruplama\: grouping_no_groups=\u00D6rnekleyicileri gruplama grouping_store_first_only=Her grubun sadece 1. \u00F6rnekleyicilerini tut header_manager_title=HTTP Ba\u015Fl\u0131k Y\u00F6neticisi headers_stored=Ba\u015Fl\u0131k Y\u00F6neticisinde Tutulan Ba\u015Fl\u0131klar help=Yard\u0131m help_node=Bu d\u00FC\u011F\u00FCm nedir? html_assertion_file=JTidy raporunu dosyaya yaz html_assertion_label=HTML Do\u011Frulama html_assertion_title=HTML Do\u011Frulama html_parameter_mask=HTML Parametre Maskesi http_implementation=Uygulamas\u0131\: http_response_code=HTTP cevap kodu http_url_rewriting_modifier_title=HTTP URL Yeniden Yazma Niteleyicisi http_user_parameter_modifier=HTTP Kullan\u0131c\u0131 Parametresi Niteleyicisi httpmirror_title=HTTP Ayna Sunucusu id_prefix=ID \u00D6neki id_suffix=ID Soneki if_controller_evaluate_all=T\u00FCm \u00E7ocuklar i\u00E7in hesapla? if_controller_label=Durum (Javascript) if_controller_title=If Denet\u00E7isi ignore_subcontrollers=Alt denet\u00E7i bloklar\u0131n\u0131 yoksay include_controller=\u0130\u00E7erme Denet\u00E7isi include_equals=E\u015Fleniyorsa i\u00E7er? include_path=Test Plan\u0131n\u0131 \u0130\u00E7er increment=Artt\u0131r infinite=Her zaman initial_context_factory=\u0130lk Ba\u011Flam Fabrikas\u0131 insert_after=Arkas\u0131na Ekle insert_before=\u00D6n\u00FCne Ekle insert_parent=Ebeveynine Ekle interleave_control_title=Aral\u0131k Denet\u00E7isi intsum_param_1=Eklenecek ilk tamsay\u0131. intsum_param_2=Eklenecek ikinci tamsay\u0131 - sonraki tamsay\u0131lar di\u011Fer argumanlar\u0131 ekleyerek toplanabilir. invalid_data=Ge\u00E7ersiz veri invalid_mail=E-posta g\u00F6nderirken hata olu\u015Ftu invalid_mail_address=Bir veya daha fazla ge\u00E7ersiz e-posta adresi tespit edildi invalid_mail_server=E-posta sunucusuna ba\u011Flan\u0131rken problem (JMeter log dosyas\u0131na bak\u0131n\u0131z) invalid_variables=Ge\u00E7ersiz de\u011Fi\u015Fkenler iteration_counter_arg_1=TRUE, her kullan\u0131c\u0131n\u0131n kendi sayac\u0131na sahip olmas\u0131 i\u00E7in, FALSE genel-ge\u00E7er saya\u00E7 i\u00E7in iterator_num=D\u00F6ng\u00FC Say\u0131s\u0131\: ja=Japonca jar_file=Jar Dosyalar\u0131 java_request=Java \u0130ste\u011Fi java_request_defaults=Java \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri javascript_expression=De\u011Ferlendirilecek javascript ifadesi jexl_expression=De\u011Ferlendirilecek JEXL ifadesi jms_auth_required=Gerekli jms_client_caption=Mesaj dinlemek i\u00E7in TopicSubscriber.receive() kullanan istemciyi al. jms_client_caption2=MessageListener yeni mesajlar\u0131 dinlemek i\u00E7in onMessage(Message)'\u0131 kullan\u0131r. jms_client_type=\u0130stemci jms_communication_style=\u0130leti\u015Fim \u015Eekli jms_concrete_connection_factory=Somut Ba\u011Flant\u0131 Fabrikas\u0131 jms_config=Ayarlar jms_config_title=JMS Ayar\u0131 jms_connection_factory=Ba\u011Flant\u0131 Fabrikas\u0131 jms_file=Dosya jms_initial_context_factory=Ba\u015Flang\u0131\u00E7 Ba\u011Flam Fabrikas\u0131 jms_itertions=Toplanacak istek say\u0131s\u0131 jms_jndi_defaults_title=JNDI \u00D6ntan\u0131ml\u0131 Ayarlar\u0131 jms_jndi_props=JDNI \u00D6zellikleri jms_message_title=Mesaj \u00F6zellikleri jms_message_type=Mesaj Tipi jms_msg_content=\u0130\u00E7erik jms_object_message=Nesne Mesaj\u0131 jms_point_to_point=JMS U\u00E7tan Uca jms_props=JMS \u00D6zellikleri jms_provider_url=Sa\u011Flay\u0131c\u0131 Adresi (URL) jms_publisher=JMS Yay\u0131nc\u0131s\u0131 jms_pwd=\u015Eifre jms_queue=S\u0131ra jms_queue_connection_factory=QueueConnection Fabrikas\u0131 jms_queueing=JMS Kaynaklar\u0131 jms_random_file=Rastgele Dosyas\u0131 jms_read_response=Cevab\u0131 Oku jms_receive_queue=S\u0131ray\u0131 alan JNDI ismi jms_request=Sadece \u0130stek jms_requestreply=\u0130stek Cevap jms_sample_title=JMS \u00D6ntan\u0131ml\u0131 \u0130ste\u011Fi jms_send_queue=S\u0131ray\u0131 alan JNDI ismi jms_subscriber_on_message=MessageListener.onMessage()'\u0131 kullan jms_subscriber_receive=TopicSubscriber.receive()'\u0131 kullan jms_subscriber_title=JMS Abonesi jms_testing_title=Mesajla\u015Fma \u0130ste\u011Fi jms_text_message=Metin Mesaj\u0131 jms_timeout=Zaman A\u015F\u0131m\u0131 (milisaniye) jms_topic=Konu jms_use_file=Dosyadan jms_use_non_persistent_delivery=S\u00FCrekli olmayan da\u011F\u0131t\u0131m kipini kullan? jms_use_properties_file=jndi.properties dosyas\u0131n\u0131 kullan jms_use_random_file=Rastgele Dosyas\u0131 jms_use_text=Metin alan\u0131 jms_user=Kullan\u0131c\u0131 jndi_config_title=JNDI Ayar\u0131 jndi_lookup_name=Uzak Arabirim jndi_lookup_title=JNDI Arama Ayar\u0131 jndi_method_button_invoke=\u00C7a\u011F\u0131r jndi_method_button_reflect=Yans\u0131t jndi_method_home_name=Yerel Metod \u0130smi jndi_method_home_parms=Yerel Metod Parametreleri jndi_method_name=Metod Ayar\u0131 jndi_method_remote_interface_list=Uzak Arabirimler jndi_method_remote_name=Uzak Metod \u0130smi jndi_method_remote_parms=Uzak Metod Parametreleri jndi_method_title=Uzak Metod Ayar\u0131 jndi_testing_title=JNDI \u0130ste\u011Fi jndi_url_jndi_props=JNDI \u00D6zellikleri junit_append_error=Do\u011Frulama hatalar\u0131n\u0131 ekle junit_append_exception=\u00C7al\u0131\u015Fma zaman\u0131 istisnalar\u0131n\u0131 ekle junit_constructor_error=S\u0131n\u0131f \u00F6rne\u011Fi yarat\u0131lamad\u0131 junit_constructor_string=Yap\u0131c\u0131 Metin Etiketi junit_do_setup_teardown=setUp ve tearDown'u \u00E7a\u011F\u0131rma junit_error_code=Hata Kodu junit_error_default_msg=Beklenmedik hata olu\u015Ftu junit_error_msg=Hata Mesaj\u0131 junit_failure_code=Ba\u015Far\u0131s\u0131zl\u0131k Kodu junit_failure_default_msg=Test ba\u015Far\u0131s\u0131z oldu. junit_failure_msg=Ba\u015Far\u0131s\u0131zl\u0131k Mesaj\u0131 junit_pkg_filter=Paket Filtresi junit_request=JUnit \u0130ste\u011Fi junit_request_defaults=JUnit \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri junit_success_code=Ba\u015Far\u0131 Kodu junit_success_default_msg=Test ba\u015Far\u0131s\u0131z junit_success_msg=Ba\u015Far\u0131 Mesaj\u0131 junit_test_config=JUnit Test Parametreleri junit_test_method=Test Metodu ldap_argument_list=LDAP Arg\u00FCman Listesi ldap_connto=Ba\u011Flant\u0131 zaman a\u015F\u0131m\u0131 (milisaniye) ldap_parse_results=Arama sonu\u00E7lar\u0131n\u0131 ayr\u0131\u015Ft\u0131r ? ldap_sample_title=LDAP \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 Ayarlar\u0131 ldap_search_baseobject=Temel-nesne aramas\u0131 ger\u00E7ekle\u015Ftir ldap_search_onelevel=Tek-seviye aramas\u0131 ger\u00E7ekle\u015Ftir ldap_search_subtree=Alt-a\u011Fa\u00E7 aramas\u0131 ger\u00E7ekle\u015Ftir ldap_secure=G\u00FCvenli LDAP Protokulu kullan ? ldap_testing_title=LDAP \u0130ste\u011Fi ldapext_sample_title=LDAP Geli\u015Fmi\u015F \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri ldapext_testing_title=LDAP Geli\u015Fmi\u015F \u0130ste\u011Fi load=Y\u00FCkle load_wsdl=WSDL Y\u00FCkle log_errors_only=Hatalar log_file=Log Dosyas\u0131 Yolu log_function_comment=Ek yorum (iste\u011Fe ba\u011Fl\u0131) log_function_level=Log seviyesi (\u00F6ntan\u0131ml\u0131 INFO) ya OUT ya da ERR log_function_string=Loglanacak metin log_function_string_ret=Loglanacak (ve d\u00F6n\u00FClecek) metin log_function_throwable=At\u0131lacak metin (iste\u011Fe ba\u011Fl\u0131) log_only=Sadece Log/G\u00F6r\u00FCnt\u00FCleme\: log_parser=Log Ayr\u0131\u015Ft\u0131r\u0131c\u0131s\u0131 S\u0131n\u0131f\u0131n\u0131n \u0130smi log_parser_cnf_msg=S\u0131n\u0131f\u0131 bulamad\u0131. L\u00FCtfen jar dosyas\u0131n\u0131 /lib dizini alt\u0131na yerle\u015Ftirdi\u011Finizden emin olun. log_parser_illegal_msg=IllegalAcessException nedeniyle s\u0131n\u0131fa eri\u015Femedi. log_parser_instantiate_msg=Log ayr\u0131\u015Ft\u0131r\u0131c\u0131 \u00F6rne\u011Fi yaratamad\u0131. L\u00FCtfen ayr\u0131\u015Ft\u0131r\u0131c\u0131n\u0131n LogParser arabirimini ger\u00E7ekledi\u011Finden emin olun. log_sampler=Tomcat Eri\u015Fimi Log \u00D6rnekleyicisi log_success_only=Ba\u015Far\u0131lar logic_controller_title=Basit Denet\u00E7i login_config=Kullan\u0131c\u0131 Giri\u015Fi Ayar\u0131 login_config_element=Kullan\u0131c\u0131 Giri\u015Fi Eleman\u0131 longsum_param_1=Eklenek ilk b\u00FCy\u00FCk say\u0131 (long) longsum_param_2=Eklenecek ikinci b\u00FCy\u00FCk say\u0131 (long) - di\u011Fer b\u00FCy\u00FCk say\u0131lar di\u011Fer arg\u00FCmanlar\u0131n toplanmas\u0131yla elde edilebilir. loop_controller_title=D\u00F6ng\u00FC Denet\u00E7isi looping_control=D\u00F6ng\u00FC Kontrol\u00FC lower_bound=A\u015Fa\u011F\u0131 S\u0131n\u0131r mail_reader_account=Kullan\u0131c\u0131 ismi\: mail_reader_all_messages=Hepsi mail_reader_delete=Sunucudan mesajlar\u0131 sil mail_reader_folder=Klas\u00F6r\: mail_reader_num_messages=\u00C7ekilecek mesajlar\u0131n say\u0131s\u0131\: mail_reader_password=\u015Eifre\: mail_reader_server=Sunucu\: mail_reader_server_type=Sunucu Tipi\: mail_reader_title=Eposta Okuyucu \u00D6rnekleyicisi mail_sent=Eposta ba\u015Far\u0131yla g\u00F6nderildi mailer_attributes_panel=Eposta \u00F6znitelikleri mailer_error=Eposta g\u00F6nderilemedi. L\u00FCtfen sorunlu girdileri d\u00FCzeltin. mailer_visualizer_title=Eposta G\u00F6r\u00FCnt\u00FCleyicisi match_num_field=E\u015Fle\u015Fme Numaras\u0131. (Rastgele i\u00E7in 0) max=En Fazla maximum_param=\u0130zin verilen de\u011Fer aral\u0131\u011F\u0131 i\u00E7in en b\u00FCy\u00FCk de\u011Fer md5hex_assertion_failure=MD5 toplam\u0131 do\u011Frulamas\u0131 hatas\u0131\: {1} beklenirken {0} al\u0131nd\u0131 md5hex_assertion_label=MDBHex md5hex_assertion_md5hex_test=Do\u011Frulanacak MD5Hex md5hex_assertion_title=MD5Hex Do\u011Frulamas\u0131 memory_cache=\u00D6nbellek menu_assertions=Do\u011Frulamalar menu_close=Kapat menu_collapse_all=Hepsini Kapat menu_config_element=Ayar Eleman\u0131 menu_edit=D\u00FCzenle menu_expand_all=Hepsini A\u00E7 menu_generative_controller=\u00D6rnekleyici menu_listener=Dinleyici menu_logic_controller=Mant\u0131k Denet\u00E7isi menu_merge=Birle\u015Ftir menu_modifiers=Niteleyiciler menu_non_test_elements=Test-d\u0131\u015F\u0131 Elemanlar menu_open=A\u00E7 menu_post_processors=Test Sonras\u0131 \u0130\u015Flemciler menu_pre_processors=Test \u00D6ncesi \u0130\u015Flemciler menu_response_based_modifiers=Cevap Temelli Niteleyiciler menu_timer=Zamanlay\u0131c\u0131 metadata=Veri hakk\u0131nda veri (metadata) method=Metod\: mimetype=Mime tipi minimum_param=\u0130zin verilen de\u011Fer aral\u0131\u011F\u0131 i\u00E7in en k\u00FC\u00E7\u00FCk de\u011Fer minute=dakika modddn=Eski girdi ismi modification_controller_title=De\u011Fi\u015Fiklik Denet\u00E7isi modification_manager_title=De\u011Fi\u015Fiklik Y\u00F6neticisi modify_test=Testi De\u011Fi\u015Ftir modtest=De\u011Fi\u015Fiklik testi module_controller_module_to_run=\u00C7al\u0131\u015Ft\u0131r\u0131lacak Birim module_controller_title=Birim Denet\u00E7isi module_controller_warning=Birim bulunamad\u0131\: monitor_equation_active=Aktif\: (me\u015Fgul/maksimum) > 25% monitor_equation_dead=\u00D6l\u00FC\: cevap yok monitor_equation_healthy=Sa\u011Fl\u0131kl\u0131\: (me\u015Fgul/maksimum) < 25% monitor_equation_load=Y\u00FCk\: ((me\u015Fgul / maksimum * 50) + ((kullan\u0131lan bellek / maksimum bellek)) > 25% monitor_equation_warning=Uyar\u0131\: (me\u015Fgul/maksimum) > 67% monitor_health_tab_title=Sa\u011Fl\u0131k monitor_health_title=\u0130zleme Sonu\u00E7lar\u0131 monitor_is_title=\u0130zleyici olarak kullan monitor_label_right_active=Aktif monitor_label_right_dead=\u00D6l\u00FC monitor_label_right_healthy=Sa\u011Fl\u0131kl\u0131 monitor_label_right_warning=Uyar\u0131 monitor_legend_health=Sa\u011Fl\u0131k monitor_legend_load=Y\u00FCk monitor_legend_memory_per=Bellek % (kullan\u0131lan/toplam) monitor_legend_thread_per=\u0130\u015F par\u00E7ac\u0131\u011F\u0131 % (me\u015Fgul/maksimum) monitor_performance_servers=Sunucular monitor_performance_tab_title=Ba\u015Far\u0131m monitor_performance_title=Ba\u015Far\u0131m Grafi\u011Fi name=\u0130sim\: new=Yeni newdn=Yeni ay\u0131rt edici isim no=Norve\u00E7ce number_of_threads=\u0130\u015F par\u00E7ac\u0131\u011F\u0131 say\u0131s\u0131 obsolete_test_element=Test eleman\u0131 belirsiz once_only_controller_title=Bir Kerelik Denet\u00E7i open=A\u00E7... option=Se\u00E7enekler optional_tasks=\u0130ste\u011Fe Ba\u011Fl\u0131 G\u00F6revler paramtable=\u0130stekle parametreleri g\u00F6nder\: password=\u015Eifre paste=Yap\u0131\u015Ft\u0131r paste_insert=Ekleme Olarak Yap\u0131\u015Ft\u0131r path=Yol\: path_extension_choice=Yol Uzatmas\u0131 (ayra\u00E7 olarak ";" kullan) path_extension_dont_use_equals=Yol uzatmas\u0131nda e\u015Fitlik kullanmay\u0131n (Intershop Enfinity uyumlulu\u011Fu) path_extension_dont_use_questionmark=Yol uzatmas\u0131nda soru i\u015Fareti kullanmay\u0131n (Intershop Enfinity uyumlulu\u011Fu) patterns_to_exclude=Hari\u00E7 Tutulacak URL Desenleri patterns_to_include=Dahil Edilecek URL Desenleri pkcs12_desc=PKCS 12 Anahtar (*.p12) property_default_param=\u00D6ntan\u0131ml\u0131 de\u011Fer property_edit=D\u00FCzenle property_editor.value_is_invalid_message=Girdi\u011Finiz metin bu \u00F6zellik i\u00E7in ge\u00E7erli de\u011Fil.\n\u00D6zellik \u00F6nceki de\u011Ferine geri d\u00F6nd\u00FCr\u00FClecek. property_editor.value_is_invalid_title=Ge\u00E7ersiz girdi property_name_param=\u00D6zellik ismi property_returnvalue_param=\u00D6zelli\u011Fin orjinal de\u011Ferini d\u00F6n (\u00F6ntan\u0131ml\u0131 false)? property_undefined=Tan\u0131ms\u0131z property_value_param=\u00D6zelli\u011Fin de\u011Feri property_visualiser_title=\u00D6zellik G\u00F6r\u00FCnt\u00FCleme protocol=Protokol [http]\: protocol_java_border=Java s\u0131n\u0131f\u0131 protocol_java_classname=S\u0131n\u0131f ismi\: protocol_java_config_tile=Java \u00D6rne\u011Fi Ayarla protocol_java_test_title=Java Testi provider_url=Sa\u011Flay\u0131c\u0131 Adresi (URL) proxy_assertions=Do\u011Frulamalar\u0131 Ekle proxy_cl_error=Vekil sunucu belirtiliyorsa, sunucu ve port verilmeli proxy_content_type_exclude=Hari\u00E7 tut\: proxy_content_type_filter=\u0130\u00E7erik-tipi filtresi proxy_content_type_include=\u0130\u00E7eren\: proxy_headers=HTTP Ba\u015Fl\u0131klar\u0131n\u0131 Yakala proxy_regex=D\u00FCzenli ifade e\u015Fle\u015Fmesi proxy_sampler_settings=HTTP \u00D6rnekleyici Ayarlar\u0131 proxy_sampler_type=Tip\: proxy_separators=Ayra\u00E7lar\u0131 Ekle proxy_target=Hedef Denet\u00E7isi\: proxy_test_plan_content=Test plan\u0131 i\u00E7eri\u011Fi proxy_title=HTTP Vekil Sunucusu ramp_up=Rampa S\u00FCresi (saniyeler)\: random_control_title=Rastgele Denet\u00E7isi random_order_control_title=Rastgele S\u0131ra Denet\u00E7isi read_response_message="Cevap Oku" se\u00E7ene\u011Fi i\u015Faretli de\u011Fil. Cevab\u0131 g\u00F6rmek i\u00E7in, l\u00FCtfen \u00F6rnekleyicideki ilgili kutuyu i\u015Faretleyin. read_response_note=E\u011Fer "cevap oku" se\u00E7ene\u011Fi se\u00E7ili de\u011Filse, \u00F6rnekleyici cevab\u0131 okumaz read_response_note2=ya da SampleResult'\u0131 kur. Bu ba\u015Far\u0131m\u0131 artt\u0131r\u0131r, ama \u015Fu anlama gelir read_response_note3=cevap i\u00E7eri\u011Fi loglanmayacak. read_soap_response=SOAP Cevab\u0131n\u0131 Oku realm=Alan (Realm) record_controller_title=Kaydetme Denet\u00E7isi ref_name_field=Referans \u0130smi\: regex_extractor_title=D\u00FCzenli \u0130fade \u00C7\u0131kar\u0131c\u0131 regex_field=D\u00FCzenli \u0130fade\: regex_source=Se\u00E7ilecek Cevap Alanlar\u0131 regex_src_body=G\u00F6vde regex_src_hdrs=Ba\u015Fl\u0131klar regex_src_url=Adres (URL) regexfunc_param_1=\u00D6nceki istekte sonu\u00E7lar\u0131 aramak i\u00E7in kullan\u0131lan d\u00FCzenli ifade regexfunc_param_2=De\u011Fi\u015Ftirme metni i\u00E7in, d\u00FCzenli ifadeden gruplar\u0131 kullanan \u015Fablon.\nBi\u00E7im $[group]$. \u00D6rnek $1$. regexfunc_param_3=Hangi e\u015Fle\u015Fme kullan\u0131lacak. 1 ya da 1'den b\u00FCy\u00FCk bir tamsay\u0131, rastgele se\u00E7im i\u00E7in RAND, b\u00FCy\u00FCk say\u0131 (float) i\u00E7in A, t\u00FCm e\u015Fle\u015Fmelerin kullan\u0131lmas\u0131 i\u00E7in ALL ([1]) regexfunc_param_4=Metinler aras\u0131nda. E\u011Fer ALL se\u00E7iliyse, aradaki metin sonu\u00E7lar\u0131 yaratmak i\u00E7in kullan\u0131lacak ([""]) regexfunc_param_5=\u00D6ntan\u0131ml\u0131 metin. E\u011Fer d\u00FCzenli ifade bir e\u015Fle\u015Fme yakalayamazsa, yerine kullan\u0131lacak \u015Fablon ([""]) remote_error_init=Uzak sunucuyu s\u0131f\u0131rlarken hata remote_error_starting=Uzak sunucuyu ba\u015Flat\u0131rken hata remote_exit=Uzakta \u00C7\u0131k remote_exit_all=Uzakta Hepsinden \u00C7\u0131k remote_start=Uzakta Ba\u015Flat remote_start_all=Uzakta Hepsini Ba\u015Flat remote_stop=Uzakta Durdur remote_stop_all=Uzakta Hepsini Durdur remove=Kald\u0131r rename=Girdiyi yeniden adland\u0131r report=Rapor report_bar_chart=Bar Grafi\u011Fi report_bar_graph_url=Adres (URL) report_base_directory=Temel Dizin report_chart_caption=Grafik Ba\u015Fl\u0131\u011F\u0131 report_chart_x_axis=X Ekseni report_chart_x_axis_label=X Ekseni Etiketi report_chart_y_axis=Y Ekseni report_chart_y_axis_label=Y Ekseni Etiketi report_line_graph=\u00C7izgi Grafik report_line_graph_urls=\u0130\u00E7erilen Adresler (URLler) report_output_directory=Rapor i\u00E7in \u00C7\u0131kt\u0131 Dizini report_page=Rapor Sayfas\u0131 report_page_element=Sayfa Eleman\u0131 report_page_footer=Sayfa Altl\u0131\u011F\u0131 report_page_header=Sayfa Ba\u015Fl\u0131\u011F\u0131 report_page_index=Sayfa \u0130ndeksi Yarat report_page_intro=Sayfa Giri\u015Fi report_page_style_url=CSS Adresi (URL) report_page_title=Sayfa Ba\u015Fl\u0131\u011F\u0131 report_pie_chart=Elma Grafi\u011Fi report_plan=Rapor Plan\u0131 report_select=Se\u00E7 report_summary=Rapor \u00D6zeti report_table=Rapor Tablosu report_writer=Rapor Yaz\u0131c\u0131 report_writer_html=HTML Raporu Yaz\u0131c\u0131 request_data=\u0130stek Verisi reset_gui=Aray\u00FCz\u00FC S\u0131f\u0131rla restart=Ba\u015Ftan ba\u015Flat resultaction_title=Sonu\u00E7 Durumu Eylem \u0130\u015Fleyici resultsaver_errors=Sadece Ba\u015Far\u0131s\u0131z Cevaplar\u0131 Kaydet resultsaver_prefix=Dosya ismi \u00F6neki\: resultsaver_title=Cevaplar\u0131 dosyaya kaydet retobj=Nesne d\u00F6n reuseconnection=Ba\u011Flant\u0131y\u0131 tekrar kullan revert_project=Geri d\u00F6nd\u00FCr revert_project?=Projeyi geri d\u00F6nd\u00FCr? root=K\u00F6k root_title=K\u00F6k run=\u00C7al\u0131\u015Ft\u0131r running_test=Testi \u00E7al\u0131\u015Ft\u0131r runtime_controller_title=\u00C7al\u0131\u015Fma Zaman\u0131 Denet\u00E7isi runtime_seconds=\u00C7al\u0131\u015Fma Zaman\u0131 (saniyeler) sample_result_save_configuration=\u00D6rnek Sonu\u00E7 Kaydetme Ayar\u0131 sampler_label=Etiket sampler_on_error_action=\u00D6rnekleyici hatas\u0131ndan sonra yap\u0131lacak hareket sampler_on_error_continue=Devam et sampler_on_error_stop_test=Testi Durdur sampler_on_error_stop_thread=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Durdur save=Kaydet save?=Kaydet? save_all_as=Test Plan\u0131 olarak Kaydet save_as=Se\u00E7imi Farkl\u0131 Kaydet... save_as_error=Birden fazla madde se\u00E7ili\! save_as_image=D\u00FC\u011F\u00FCm\u00FC Resim olarak Kaydet save_as_image_all=Ekran\u0131 Resim olarak Kaydet save_assertionresultsfailuremessage=Do\u011Frulama Ba\u015Far\u0131s\u0131zl\u0131\u011F\u0131 Mesaj\u0131n\u0131 Kaydet save_assertions=Do\u011Frulama Sonu\u00E7lar\u0131n\u0131 Kaydet (XML) save_asxml=XML olarak Kaydet save_bytes=Bayt say\u0131s\u0131n\u0131 kaydet save_code=Cevap Kodunu Kaydet save_datatype=Data Tipini Kaydet save_encoding=Kodlamay\u0131 Kaydet save_fieldnames=Alan \u0130simlerini Kaydet (CSV) save_filename=Cevap Dosya \u0130smini Kaydet save_graphics=Grafi\u011Fi Kaydet save_hostname=Sunucu \u0130smini Kaydet save_label=Etiketi Kaydet save_latency=Gecikme S\u00FCresi Kaydet save_message=Cevap Mesaj\u0131n\u0131 Kaydet save_overwrite_existing_file=Se\u00E7ili dosya zaten mevcut, \u00FCst\u00FCne yazmak ister misiniz? save_requestheaders=\u0130stek Ba\u015Fl\u0131klar\u0131n\u0131 Kaydet (XML) save_responsedata=Cevap Verisini Kaydet (XML) save_responseheaders=Cevap Ba\u015Fl\u0131klar\u0131n\u0131 Kaydet (XML) save_samplecount=\u00D6rnek ve Hata Say\u0131s\u0131n\u0131 Kaydet save_samplerdata=\u00D6rnekleyici Verisini Kaydet (XML) save_subresults=Alt Sonu\u00E7lar\u0131 Kaydet (XML)\n save_success=Ba\u015Far\u0131y\u0131 Kaydet save_threadcounts=Aktif \u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Say\u0131s\u0131n\u0131 Kaydet save_threadname=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 \u0130smini Kaydet save_time=Ge\u00E7en Zaman\u0131 Kaydet save_timestamp=Tarih Bilgisini Kaydet save_url=URL Adresini Kaydet sbind=Yaln\u0131z ba\u011Fla/ba\u011Flama scheduler=Planla scheduler_configuration=Planlama Ayar\u0131 scope=Kapsam search_base=Ara\u015Ft\u0131rma temeli search_filter=Ara\u015Ft\u0131rma Filtresi search_test=Ara\u015Ft\u0131rma Testi searchbase=Ara\u015Ft\u0131rma temeli searchfilter=Ara\u015Ft\u0131rma Filtresi searchtest=Ara\u015Ft\u0131rma testi second=saniye secure=G\u00FCvenli send_file=\u0130stekle Beraber Dosya G\u00F6nder\: send_file_browse=G\u00F6zat... send_file_filename_label=Dosya Yolu\: send_file_mime_label=MIME Tipi\: send_file_param_name_label=Parametre \u0130smi\: server=Sunucu \u0130smi veya IP\: servername=Sunucu \u0130smi \: session_argument_name=Oturum Arg\u00FCman\u0131 \u0130smi should_save=Testi \u00E7al\u0131\u015Ft\u0131rmadan \u00F6nce test plan\u0131n\u0131 kaydetmeniz tavsiye edilir.\nE\u011Fer destek veri dosyalar\u0131 kullan\u0131yorsan\u0131z (\u00F6r\: CSV Veri K\u00FCmesi ya da _StringFromFile), \u00F6ncelikle test beti\u011Fini kaydetmeniz \u00F6nemlidir.\n\u00D6ncelikle test plan\u0131n\u0131 kaydetmek istiyor musunuz? shutdown=Kapat simple_config_element=Basit Ayar Eleman\u0131 simple_data_writer_title=Basit Veri Yaz\u0131c\u0131 size_assertion_comparator_error_equal=e\u015Fittir size_assertion_comparator_error_greater=b\u00FCy\u00FCkt\u00FCr size_assertion_comparator_error_greaterequal=b\u00FCy\u00FCkt\u00FCr ya da e\u015Fittir size_assertion_comparator_error_less=k\u00FC\u00E7\u00FCkt\u00FCr size_assertion_comparator_error_lessequal=k\u00FC\u00E7\u00FCkt\u00FCr ya da e\u015Fittir size_assertion_comparator_error_notequal=e\u015Fit de\u011Fildir size_assertion_comparator_label=Kar\u015F\u0131la\u015Ft\u0131rma Tipi size_assertion_failure=Sonu\u00E7 boyutunda yanl\u0131\u015Fl\u0131k\: {0} bayt, halbuki {1} {2} bayt olmas\u0131 bekleniyordu. size_assertion_input_error=L\u00FCtfen ge\u00E7erli pozitif bir tamsay\u0131 girin. size_assertion_label=Boyut (bayt)\: size_assertion_size_test=Do\u011Frulanacak Boyut size_assertion_title=Boyut Do\u011Frulamas\u0131 soap_data_title=Soap/XML-RPC Verisi soap_sampler_title=SOAP/XML-RPC \u0130ste\u011Fi soap_send_action=SOAPAction g\u00F6nder\: spline_visualizer_average=Ortalama spline_visualizer_incoming=Gelen spline_visualizer_maximum=Maksimum spline_visualizer_title=Cetvel G\u00F6r\u00FCnt\u00FCleyici spline_visualizer_waitingmessage=\u00D6rnekler i\u00E7in bekliyor ssl_alias_prompt=L\u00FCtfen tercih etti\u011Finiz k\u0131saltmay\u0131 girin ssl_alias_select=Test k\u0131saltman\u0131z\u0131 se\u00E7iniz ssl_alias_title=\u0130stemci K\u0131saltmas\u0131 ssl_error_title=Anahtar Kayd\u0131 Problemi ssl_pass_prompt=L\u00FCtfen \u015Fifrenizi girin ssl_pass_title=Anahtar Kayd\u0131 Problemi ssl_port=SSL Portu sslmanager=SSL Y\u00F6neticisi start=Ba\u015Flat starttime=Ba\u015Flama Zaman\u0131 stop=Durdur stopping_test=T\u00FCm i\u015F par\u00E7ac\u0131klar\u0131n\u0131 kapat\u0131yor. L\u00FCtfen sab\u0131rl\u0131 olun. stopping_test_title=Testleri Durduruyor string_from_file_file_name=Dosya tam yolunu girin string_from_file_seq_final=Dosya s\u0131ra numaras\u0131n\u0131 sonland\u0131r (iste\u011Fe ba\u011Fl\u0131) string_from_file_seq_start=Dosya s\u0131ra numaras\u0131n\u0131 ba\u015Flat (iste\u011Fe ba\u011Fl\u0131) summariser_title=\u00D6zet Sonu\u00E7lar Olu\u015Ftur summary_report=\u00D6zet Rapor switch_controller_label=Dallanma (Switch) De\u011Feri switch_controller_title=Dallanma (Switch) Denet\u00E7isi table_visualizer_bytes=Bayt table_visualizer_sample_num=\u00D6rnek \# table_visualizer_sample_time=\u00D6rnek Zaman\u0131(ms) table_visualizer_start_time=Ba\u015Flama Zaman\u0131 table_visualizer_status=Durum table_visualizer_success=Ba\u015Far\u0131 table_visualizer_thread_name=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 \u0130smi table_visualizer_warning=Uyar\u0131 tcp_config_title=TCP \u00D6rnekleyici Ayar\u0131 tcp_nodelay=Hi\u00E7 Gecikmeye Ayarla tcp_port=Port Numaras\u0131\: tcp_request_data=G\u00F6nderilecek metin tcp_sample_title=TCP \u00D6rnekleyici tcp_timeout=Zaman A\u015F\u0131m\u0131 (milisaniye) template_field=\u015Eablon\: test_action_action=Hareket test_action_duration=S\u00FCre (milisaniye) test_action_pause=Duraklat test_action_stop=Durdur test_action_target=Hedef test_action_target_test=T\u00FCm \u0130\u015F Par\u00E7ac\u0131klar\u0131 test_action_target_thread=\u015Eu Anki \u0130\u015F Par\u00E7ac\u0131\u011F\u0131 test_action_title=Test Hareketi test_configuration=Test Ayar\u0131 test_plan=Test Plan\u0131 test_plan_classpath_browse=S\u0131n\u0131f yoluna (classpath) dizin veya jar ekle testconfiguration=Test Ayar\u0131 testplan.serialized=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Gruplar\u0131n\u0131 Ard\u0131\u015F\u0131k \u00C7al\u0131\u015Ft\u0131r (\u00F6r\: her defas\u0131nda bir grup \u00E7al\u0131\u015Ft\u0131r) testplan_comments=Yorumlar\: thread_delay_properties=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Gecikme \u00D6zellikleri thread_group_title=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Grubu thread_properties=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 \u00D6zellikleri threadgroup=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131 Grubu throughput_control_bynumber_label=Toplam Y\u00FCr\u00FCtme throughput_control_bypercent_label=Y\u00FCr\u00FCtme Y\u00FCzdesi throughput_control_perthread_label=Kullan\u0131c\u0131 Ba\u015F\u0131na throughput_control_title=Transfer Oran\u0131 Denet\u00E7isi throughput_control_tplabel=Transfer Oran\u0131 time_format=Metni SimpleDateFormat i\u00E7in bi\u00E7imlendir (iste\u011Fe ba\u011Fl\u0131) timelim=Zaman s\u0131n\u0131r\u0131 tr=T\u00FCrk\u00E7e transaction_controller_parent=Ebeveyn \u00F6rnek olu\u015Ftur transaction_controller_title=\u0130\u015Flem (transaction) Denet\u00E7isi unbind=\u0130\u015F Par\u00E7ac\u0131\u011F\u0131n\u0131 B\u0131rak uniform_timer_delay=Sabit Gecikme S\u0131n\u0131r\u0131 (milisaniye)\: uniform_timer_memo=Tek bi\u00E7imli da\u011F\u0131l\u0131mla rastgele gecikme ekler uniform_timer_range=Maksimum Rastgele Gecikme (milisaniye)\: uniform_timer_title=Tek Bi\u00E7imli Rastgele Zamanlay\u0131c\u0131 update_per_iter=Her Tekrar i\u00E7in Bir Defa Yenile upload=Dosya Y\u00FCkleme upper_bound=\u00DCst S\u0131n\u0131r url=Adres (URL) url_config_protocol=Protokol\: url_config_title=HTTP \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri url_full_config_title=UrlFull \u00D6rne\u011Fi url_multipart_config_title=HTTP Multipart \u0130ste\u011Fi \u00D6ntan\u0131ml\u0131 De\u011Ferleri use_keepalive=Canl\u0131Tut (KeepAlive) kullan use_multipart_for_http_post=HTTP POST i\u00E7in multipart/form-data kullan use_recording_controller=Kaydetme Denet\u00E7isi Kullan user=Kullan\u0131c\u0131 user_defined_test=Kullan\u0131c\u0131 Tan\u0131ml\u0131 Test user_defined_variables=Kullan\u0131c\u0131 Tan\u0131ml\u0131 De\u011Fi\u015Fkenler user_param_mod_help_note=(Buray\u0131 de\u011Fi\u015Ftirme. Onun yerine, JMeter'in /bin dizinindeki dosya ismini d\u00FCzenle) user_parameters_table=Parametreler user_parameters_title=Kullan\u0131c\u0131 Parametreleri userdn=Kullan\u0131c\u0131 ismi username=Kullan\u0131c\u0131 ismi userpw=\u015Eifre value=De\u011Fer var_name=Referans \u0130smi variable_name_param=De\u011Fi\u015Fken ismi (de\u011Fi\u015Fken ve fonksiyon referanslar\u0131 i\u00E7erebilir) view_graph_tree_title=Grafik A\u011Fac\u0131n\u0131 G\u00F6ster view_results_in_table=Sonu\u00E7 Tablosunu G\u00F6ster view_results_render_html=HTML i\u015Fle view_results_render_json=JSON i\u015Fle view_results_render_text=Metin G\u00F6ster view_results_render_xml=XML \u0130\u015Fle view_results_tab_assertion=Do\u011Frulama sonucu view_results_tab_request=\u0130stek view_results_tab_response=Cevap verisi view_results_tab_sampler=\u00D6rnekleyici sonucu view_results_title=Sonu\u00E7lar\u0131 G\u00F6ster view_results_tree_title=Sonu\u00E7lar\u0131 G\u00F6sterme A\u011Fac\u0131 warning=Uyar\u0131\! web_request=HTTP \u0130ste\u011Fi web_server=A\u011F Sunucusu web_server_client=\u0130stemci uygulamas\u0131\: web_server_domain=Sunucu \u0130smi veya IP\: web_server_port=Port Numaras\u0131\: web_testing2_title=HTTP \u0130ste\u011Fi HTTPClient web_testing_embedded_url_pattern=G\u00F6m\u00FCl\u00FC Adresler (URL) \u00F6rt\u00FC\u015Fmeli\: web_testing_retrieve_images=HTML Dosyalardan T\u00FCm G\u00F6m\u00FCl\u00FC Kaynaklar\u0131 Al web_testing_title=HTTP \u0130ste\u011Fi webservice_proxy_host=Vekil Makine webservice_proxy_note=E\u011Fer "HTTP Vekil Sunucu kullan" se\u00E7iliyse, ama sunucu veya port belirtilmemi\u015Fse, \u00F6rnekleyici webservice_proxy_note2=komut sat\u0131r\u0131 se\u00E7eneklerine bakacakt\u0131r. E\u011Fer vekil sunucu veya port belirtilmediyse webservice_proxy_note3=ya da, sessizce ba\u015Far\u0131s\u0131z olacakt\u0131r. webservice_proxy_port=Vekil Port webservice_sampler_title=WebService(SOAP) \u0130ste\u011Fi webservice_timeout=Zaman A\u015F\u0131m\u0131\: webservice_use_proxy=HTTP Vekil Sunucusunu kullan while_controller_label=Ko\u015Ful (fonksiyon veya de\u011Fi\u015Fken) while_controller_title=While Denet\u00E7isi workbench_title=Tezgah wsdl_helper_error=WSDL ge\u00E7erli de\u011Fil, l\u00FCtfen url adresini iki defa kontrol edin. wsdl_url=WSDL Adresi wsdl_url_error=WSDL bo\u015F. xml_assertion_title=XML Do\u011Frulamas\u0131 xml_namespace_button=Namespace kullan xml_tolerant_button=Ho\u015Fg\u00F6r\u00FClen XML/HTML Ayr\u0131\u015Ft\u0131r\u0131c\u0131 xml_validate_button=XML'i do\u011Frula xml_whitespace_button=G\u00F6r\u00FCnmeyen Karakterleri Yoksay xmlschema_assertion_label=Dosya \u0130smi\: xmlschema_assertion_title=XML \u015Eemas\u0131 Do\u011Frulamas\u0131 xpath_assertion_button=Do\u011Frula xpath_assertion_check=XPath \u0130fadesini Kontrol Et xpath_assertion_error=XPath'te Hata xpath_assertion_failed=Ge\u00E7ersiz XPath \u0130fadesi xpath_assertion_negate=E\u011Fer e\u015Fle\u015Fen yoksa True xpath_assertion_option=XML Ayr\u0131\u015Ft\u0131r\u0131c\u0131 Se\u00E7enekleri xpath_assertion_test=XPath Do\u011Frulamas\u0131 xpath_assertion_tidy=Dene ve girdiyi d\u00FCzenle xpath_assertion_title=XPath Do\u011Frulamas\u0131 xpath_assertion_valid=Ge\u00E7erli XPath \u0130fadesi xpath_assertion_validation=XML'i DTD'ye g\u00F6re kontrol et xpath_assertion_whitespace=G\u00F6r\u00FCnmeyen Karakterleri Yoksay xpath_expression=Kar\u015F\u0131la\u015Ft\u0131r\u0131lacak XPath ifadesi xpath_extractor_query=XPath sorgusu\: xpath_extractor_title=XPath \u00C7\u0131kar\u0131c\u0131 xpath_file_file_name=De\u011Ferlerin okunaca\u011F\u0131 XML dosyas\u0131 xpath_tidy_quiet=Sessiz xpath_tidy_report_errors=Hatalar\u0131 raporla xpath_tidy_show_warnings=Uyar\u0131lar\u0131 g\u00F6ster you_must_enter_a_valid_number=Ge\u00E7erli bir rakam girmelisiniz zh_cn=\u00C7ince (Basitle\u015Ftirilmi\u015F) zh_tw=\u00C7ince (Geleneksel) apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_pl.properties0000644000175000017500000002152712032647221027075 0ustar ebourgebourg#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Warning: JMeterUtils.getResString() replaces space with '_' # and converts keys to lowercase before lookup #=> All keys in this file must also be lower case or they won't match # about=O programie Apache JMeter add=Dodaj add_parameter=Dodaj parametr add_pattern=Dodaj wzorzec: add_test=Dodaj test add_user=Dodaj u\u017Cytkownika add_value=Dodaj warto\u015B\u0107 addtest=Dodaj test aggregate_graph=Wykresy statystyczne aggregate_graph_column=Kolumna aggregate_graph_display=Wy\u015Bwietl wykres aggregate_graph_height=Wysoko\u015B\u0107 aggregate_graph_max_length_xaxis_label=Maksymalna wysoko\u015B\u0107 etykiety osi OX aggregate_graph_ms=Milisekund aggregate_graph_response_time=Czas odpowiedzi aggregate_graph_save=Zapisz wykres aggregate_graph_save_table=Zapisz dane z tabeli aggregate_graph_save_table_header=Zapisz nag\u0142\u00F3wek tabeli aggregate_graph_title=Wykres skumulowany aggregate_graph_user_title=Tytu\u0142 wykresu aggregate_graph_width=Szeroko\u015B\u0107 aggregate_report=Dane zagregowane aggregate_report_90%_line=Linia 90% aggregate_report_bandwidth=KB/sek aggregate_report_count=Liczba pr\u00F3bek aggregate_report_error=B\u0142\u0105d aggregate_report_error%=% b\u0142\u0119d\u00F3w aggregate_report_median=Mediana aggregate_report_rate=Przepustowo\u015B\u0107 aggregate_report_stddev=Odch. std. aggregate_report_total_label=RAZEM ajp_sampler_title=Pr\u00F3bnik AJP/1.3 analyze=Analizuj plik z danymi... anchor_modifier_title=Parser link\u00F3w HTML argument_must_not_be_negative=Parametr musi by\u0107 nieujemny! assertion_assume_success=Ignoruj status assertion_code_resp=Kod odpowiedzi assertion_contains=Zawiera assertion_equals=R\u00F3wna si\u0119 assertion_headers=Nag\u0142\u00F3wki odpowiedzi assertion_matches=Pasuje do assertion_message_resp=Tre\u015B\u0107 odpowiedzi assertion_not=Nie assertion_text_resp=Tekst odpowiedzi assertion_textarea_label=Asercje: attribute=Atrybut attrs=Atrybuty average=\u015Arednia average_bytes=bit\u00F3w \u015Brednio browse=Przegl\u0105daj... bsf_sampler_title=Pr\u00F3bnik BSF bsf_script_language=J\u0119zyk skryptowy: bsf_script_parameters=Parametry do przekazania do skryptu/pliku: bsh_assertion_script=Skrypt (see below for variables that are defined) bsh_script=Skrypt (see below for variables that are defined) bsh_script_file=Plik ze skryptem cancel=Anuluj choose_function=Wybierz funkcj\u0119 choose_language=Wybierz j\u0119zyk clear=Wyczy\u015B\u0107 clear_all=Wyczy\u015B\u0107 wszystko clear_cache_per_iter=Czy\u015Bci\u0107 cache po ka\u017Cdej iteracji? column_delete_disallowed=Tej kolumny nie mo\u017Cna usuwa\u0107 compare=Por\u00F3wnaj config_element=Element konfiguruj\u0105cy config_save_settings=Konfiguruj configure_wsdl=Konfiguruj controller=Kontroler copy=Kopiuj counter_config_title=Licznik counter_per_user=Osobny licznik dla ka\u017Cdego u\u017Cytkownika countlim=Limit rozmiaru cut=Wytnij de=Niemiecki debug_off=Wy\u0142\u0105cz debugowanie debug_on=W\u0142\u0105cz debugowanie default_parameters=Parametry domy\u015Blne default_value_field=Domy\u015Blna warto\u015B\u0107: delay=Uruchom w ci\u0105gu (sekund) delete=Usu\u0144 delete_parameter=Usu\u0144 parametr delete_test=Usu\u0144 test delete_user=Usu\u0144 u\u017Cytkownika deltest=Test usuwania disable=Wy\u0142\u0105cz distribution_graph_title=Rozk\u0142ad funkcji g\u0119sto\u015Bci (alpha) distribution_note1=Wykres uaktualnia si\u0119 automatycznie co 10 pr\u00F3bek domain=Domena done=Gotowe duration=Czas trwania (sekund) edit=Edytuj en=Angielski enable=W\u0142\u0105cz endtime=Czas zako\u0144czenia error_loading_help=Wyst\u0105pi\u0142 b\u0142\u0105d przy pr\u00F3bie wy\u015Bwietlenia strony z pomoc\u0105 error_occurred=Wyst\u0105pi\u0142 b\u0142\u0105d error_title=B\u0142\u0105d es=Hiszpa\u0144ski exit=Edycja file=Plik file_visualizer_close=Zamknij file_visualizer_filename=Nazwa pliku file_visualizer_flush=Zapisz file_visualizer_open=Otw\u00f3rz file_visualizer_output_file=Zapisuj/Czytaj wyniki z pliku filename=Nazwa pliku functional_mode=Tryb test\u00F3w funkcjonalnych (i.e. zapisuj dane wej\u015bciowe i wyj\u015bciowe pr\u00f3bnika) functional_mode_explanation=W\u0142\u0105czenie trybu test\u00F3w funkcjonalnych mo\u017Ce wyra\u017Anie obni\u017Cy\u0107 wydajno\u015B\u0107. help=Pomoc help_node=Co to za w\u0119ze\u0142? iterator_num=Liczba powt\u00F3rze\u0144: ja=Japo\u0144ski jms_client_type=Klient jms_config=Konfiguracja jms_config_title=Konfiguracja JMS jms_message_type=Typ wiadomo\u015Bci jms_pwd=Has\u0142o jms_queue=Kolejka jms_user=U\u017Cytkownik load=Wczytaj load_wsdl=Wczytaj WSDL log_errors_only=B\u0142\u0119dy log_file=Po\u0142o\u017Cenie pliku log\u00F3w log_function_comment=Dodatkowy komentarz (opcjonalnie) log_function_level=Szczeg\u00F3\u0142owo\u015B\u0107 logowania (domy\u015Blnie INFO) lub OUT lub ERR log_only=Zapisuj do loga/Wy\u015bwietlaj tylko: log_success_only=Sukcesy mail_reader_account=U\u017Cytkownik: mail_reader_password=Has\u0142o: mail_reader_server=Serwer: mail_reader_server_type=Typ serwera: mail_sent=Wiadomo\u015B\u0107 zosta\u0142a wys\u0142ana max=Maksimum menu_assertions=Assercje menu_close=Zamknij menu_collapse_all=Zwi\u0144 wszystko menu_config_element=Element konfiguruj\u0105cy menu_edit=Edytuj menu_expand_all=Rozwi\u0144 wszystko menu_listener=S\u0142uchacze menu_merge=Scal menu_open=Otw\u00F3rz menu_post_processors=Post Procesory menu_pre_processors=Pre Procesory name=Nazwa: number_of_threads=Liczba w\u0105tk\u00F3w (u\u017Cytkownik\u00F3w): open=Otw\u00F3rz... option=Opcje password=Has\u0142o paste=Wklej pl=Polski property_default_param=Warto\u015B\u0107 domy\u015Blna property_edit=Edytuj property_undefined=Niezdefiniowano property_value_param=Warto\u015B\u0107 parametru proxy_assertions=Dodaj asercje proxy_headers=Przechwytuj nag\u0142\u00F3wki HTTP proxy_sampler_type=Typ: proxy_title=Serwer proxy HTTP ramp_up=Uruchom w ci\u0105gu (sekund): regex_field=Wyra\u017Cenie regularne: remove=Usu\u0144 report_chart_x_axis=O\u015B X report_chart_x_axis_label=Etykieta osi X report_chart_y_axis=O\u015B Y report_chart_y_axis_label=Etykieta osi Y report_line_graph=Wykres liniowy report_page_title=Tytu\u0142 strony reset_gui=Resetuj Gui resultsaver_prefix=Prefiks do nazwy pliku: revert_project=Cofnij run=Uruchom sample_scope=Kt\u00F3re pr\u00F3bki testowa\u0107 sampler_label=Etykieta sampler_on_error_action=Co robi\u0107 je\u015Bli Pr\u00F3bnik zg\u0142osi b\u0142\u0105d? sampler_on_error_continue=Kontunuuj sampler_on_error_stop_test=Przerwij test sampler_on_error_stop_test_now=Natychmiast przerwij test sampler_on_error_stop_thread=Przerwij w\u0105tek save=Zapisz save?=Zapisa\u0107? save_all_as=Zapisz plan test\u00F3w jako save_as=Zapisz zaznaczenie jako... save_as_image=Zapisz w\u0119ze\u0142 jako obrazek save_as_image_all=Zapisz ekran jako obrazek save_asxml=Zapisz jako XML save_bytes=Zapisz liczb\u0119 bit\u00F3w save_code=Zapisz kod odpowiedzi save_datatype=Zapisz typ danych save_encoding=Zapisz stron\u0119 kodow\u0105 save_fieldnames=Zapisz nazwy kolumn (CSV) scheduler=Kalendarz scheduler_configuration=Konfiguracja kalendarza scope=Zakres second=sekund send_file_browse=Przegl\u0105daj ... send_file_filename_label=\u015acie\u017cka do pliku: ssl_pass_prompt=Prosz\u0119 wpisz has\u0142o template_field=Szablon: test_action_duration=Czas trwania (milisekund) test_action_pause=Pauza test_plan=Plan test\u00F3w test_plan_classpath_browse=Dodaj katalog lub jara do classpatha testplan.serialized=Uruchamiaj grupy w\u0105tk\u00F3w jedna po drugiej (tzn. jedn\u0105 na raz) testplan_comments=Uwagi: thread_group_title=Grupa w\u0105tk\u00F3w thread_properties=W\u0105tki threadgroup=Grupa w\u0105tk\u00F3w user_defined_test=Test zdefiniowany przez u\u017Cytkownika user_defined_variables=Zmienne zdefiniowane przez u\u017Cytkownika user_parameters_table=Parametry user_parameters_title=Parametry u\u017Cytkownika userdn=U\u017Cytkownik username=U\u017Cytkownik userpw=Has\u0142o value=Warto\u015B\u0107: workbench_title=Brudnopis xpath_tidy_show_warnings=Pokazuj ostrze\u017Cenia you_must_enter_a_valid_number=Tu trzeba wpisa\u0107 liczb\u0119 zh_cn=Chi\u0144ski (Uproszczony) zh_tw=Chi\u0144ski (Tradycyjny) apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_ja.properties0000644000175000017500000011105412032647221027047 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! about=Apache JMeter \u306B\u3064\u3044\u3066 add=\u8FFD\u52A0 add_as_child=\u5B50\u3068\u3057\u3066\u8FFD\u52A0 add_parameter=\u5909\u6570\u306E\u8FFD\u52A0 add_pattern=\u30D1\u30BF\u30FC\u30F3\u8FFD\u52A0\: add_test=\u30C6\u30B9\u30C8\u306E\u8FFD\u52A0 add_user=\u30E6\u30FC\u30B6\u30FC\u306E\u8FFD\u52A0 add_value=\u5024\u306E\u8FFD\u52A0 aggregate_report=\u7D71\u8A08\u30EC\u30DD\u30FC\u30C8 aggregate_report_total_label=\u5408\u8A08 als_message=\u6CE8\u610F\: \u30A2\u30AF\u30BB\u30B9\u30ED\u30B0\u30D1\u30FC\u30B5\u306F\u6C4E\u7528\u7684\u306B\u8A2D\u8A08\u3055\u308C\u3066\u3044\u308B\u306E\u3067\u3001\u72EC\u81EA\u30D1\u30FC\u30B5\u3092 als_message2=\u30D7\u30E9\u30B0\u30A4\u30F3\u53EF\u80FD\u3067\u3059\u3002\u305D\u306E\u305F\u3081\u306B\u306F\u3001LogParser\u3092\u5B9F\u88C5\u3057\u3066/lib\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B als_message3=jar\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0\u3057\u3001\u30B5\u30F3\u30D7\u30E9\u30FC\u3067\u30AF\u30E9\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 analyze=\u30C7\u30FC\u30BF\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u6790... anchor_modifier_title=HTML \u30EA\u30F3\u30AF\u30D1\u30FC\u30B5 appearance=\u30EB\u30C3\u30AF&\u30D5\u30A3\u30FC\u30EB argument_must_not_be_negative=\u5F15\u6570\u306F\u8CA0\u306E\u5024\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\uFF01 assertion_code_resp=\u5FDC\u7B54\u30B3\u30FC\u30C9 assertion_contains=\u542B\u3080 assertion_matches=\u4E00\u81F4\u3059\u308B assertion_message_resp=\u5FDC\u7B54\u30E1\u30C3\u30BB\u30FC\u30B8 assertion_not=\u5426\u5B9A assertion_pattern_match_rules=\u30D1\u30BF\u30FC\u30F3\u30DE\u30C3\u30C1\u30F3\u30B0\u30EB\u30FC\u30EB assertion_patterns_to_test=\u30C6\u30B9\u30C8\u30D1\u30BF\u30FC\u30F3 assertion_resp_field=\u30C6\u30B9\u30C8\u3059\u308B\u30EC\u30B9\u30DD\u30F3\u30B9\u30D5\u30A3\u30FC\u30EB\u30C9 assertion_text_resp=\u30C6\u30AD\u30B9\u30C8\u306E\u30EC\u30B9\u30DD\u30F3\u30B9 assertion_textarea_label=\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\: assertion_title=\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 assertion_url_samp=\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3055\u308C\u305F URL assertion_visualizer_title=\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 \u7D50\u679C auth_base_url=\u57FA\u5E95URL auth_manager_title=HTTP \u8A8D\u8A3C\u30DE\u30CD\u30FC\u30B8\u30E3 auths_stored=\u8A8D\u8A3C\u30DE\u30CD\u30FC\u30B8\u30E3\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u8A8D\u8A3C browse=\u53C2\u7167... bsf_sampler_title=BSF\u30B5\u30F3\u30D7\u30E9\u30FC bsf_script=\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8 bsf_script_file=\u5B9F\u884C\u3059\u308B\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB bsf_script_language=\u30B9\u30AF\u30EA\u30D7\u30C8\u8A00\u8A9E\: bsf_script_parameters=\u30B9\u30AF\u30EA\u30D7\u30C8/\u30D5\u30A1\u30A4\u30EB\u3078\u6E21\u3059\u30D1\u30E9\u30E1\u30FC\u30BF\: bsh_assertion_script=\u30B9\u30AF\u30EA\u30D7\u30C8(Response[Data|Code|Message|Headers], RequestHeaders, Sample[Label|rData], Result, Failure[Message]) bsh_assertion_title=BeanShell\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 bsh_function_expression=\u8A55\u4FA1\u5BFE\u8C61\u306E\u5F0F bsh_sampler_title=BeanShell\u30B5\u30F3\u30D7\u30E9\u30FC bsh_script=\u30B9\u30AF\u30EA\u30D7\u30C8 (variables\: SampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName) bsh_script_file=\u30B9\u30AF\u30EA\u30D7\u30C8\u30D5\u30A1\u30A4\u30EB bsh_script_parameters=\u30D1\u30E9\u30E1\u30FC\u30BF\uFF08-> String Parameters and String []bsh.args\uFF09 busy_testing=\u73FE\u5728\u30C6\u30B9\u30C8\u4E2D\u3067\u3059\u3002\u8A2D\u5B9A\u5909\u66F4\u306E\u524D\u306B\u30C6\u30B9\u30C8\u3092\u505C\u6B62\u3057\u3066\u304F\u3060\u3055\u3044\u3002 cancel=\u30AD\u30E3\u30F3\u30BB\u30EB cancel_exit_to_save=\u4FDD\u5B58\u3055\u308C\u3066\u3044\u306A\u3044\u30C6\u30B9\u30C8\u9805\u76EE\u304C\u3042\u308A\u307E\u3059\u3002\u7D42\u4E86\u3059\u308B\u524D\u306B\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F cancel_new_to_save=\u4FDD\u5B58\u3055\u308C\u3066\u3044\u306A\u3044\u30C6\u30B9\u30C8\u9805\u76EE\u304C\u3042\u308A\u307E\u3059\u3002\u30C6\u30B9\u30C8\u8A08\u753B\u3092\u6D88\u53BB\u3059\u308B\u524D\u306B\u4FDD\u5B58\u3057\u307E\u3059\u304B\uFF1F choose_function=\u95A2\u6570\u306E\u9078\u629E choose_language=\u8A00\u8A9E\u306E\u9078\u629E clear=\u6D88\u53BB clear_all=\u5168\u3066\u6D88\u53BB clear_cookies_per_iter=\u7E70\u308A\u8FD4\u3057\u3054\u3068\u306B\u30AF\u30C3\u30AD\u30FC\u3092\u7834\u68C4\u3057\u307E\u3059\u304B\uFF1F column_delete_disallowed=\u3053\u306E\u30AB\u30E9\u30E0\u306E\u524A\u9664\u6A29\u9650\u304C\u3042\u308A\u307E\u305B\u3093 column_number=CSV\u30D5\u30A1\u30A4\u30EB\u306E\u30AB\u30E9\u30E0\u756A\u53F7 config_element=\u8A2D\u5B9A\u30A8\u30EC\u30E1\u30F3\u30C8 configure_wsdl=\u8A2D\u5B9A constant_throughput_timer_memo=\u4E00\u5B9A\u306E\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8\u306B\u5230\u9054\u3057\u305F\u3089\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u9593\u306B\u9045\u5EF6\u3092\u8FFD\u52A0 constant_timer_delay=\u30B9\u30EC\u30C3\u30C9\u9045\u5EF6\u6642\u9593 (\u30DF\u30EA\u79D2)\: constant_timer_memo=\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u9593\u306B\u4E00\u5B9A\u306E\u9045\u5EF6\u3092\u8FFD\u52A0 constant_timer_title=\u5B9A\u6570\u30BF\u30A4\u30DE controller=\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 cookie_manager_title=HTTP \u30AF\u30C3\u30AD\u30FC\u30DE\u30CD\u30FC\u30B8\u30E3 cookies_stored=\u30AF\u30C3\u30AD\u30FC\u30DE\u30CD\u30FC\u30B8\u30E3\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u30AF\u30C3\u30AD\u30FC copy=\u30B3\u30D4\u30FC counter_config_title=\u30AB\u30A6\u30F3\u30BF counter_per_user=\u5404\u30E6\u30FC\u30B6\u72EC\u7ACB\u306E\u30C8\u30E9\u30C3\u30AF\u30AB\u30A6\u30F3\u30BF csvread_file_file_name=\u5024\u3092\u8AAD\u307F\u8FBC\u3080CSV\u30D5\u30A1\u30A4\u30EB cut=\u30AB\u30C3\u30C8 cut_paste_function=\u751F\u6210\u3055\u308C\u305F\u95A2\u6570\u6587\u5B57\u5217\u3092\u30B3\u30D4\u30FC\u3057\u8CBC\u308A\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002 database_sql_query_string=SQL \u30AF\u30A8\u30EA\u30FC\u6587\u5B57\u5217\: database_sql_query_title=JDBC SQL \u30AF\u30A8\u30EA\u30FC\u521D\u671F\u5024\u8A2D\u5B9A de=\u30C9\u30A4\u30C4\u8A9E default_parameters=\u30C7\u30D5\u30A9\u30EB\u30C8\u30D1\u30E9\u30E1\u30FC\u30BF default_value_field=\u521D\u671F\u5024\uFF1A delay=\u8D77\u52D5\u9045\u5EF6\uFF08\u79D2\uFF09 delete=\u524A\u9664 delete_parameter=\u5909\u6570\u306E\u524A\u9664 delete_test=\u30C6\u30B9\u30C8\u306E\u524A\u9664 delete_user=\u30E6\u30FC\u30B6\u30FC\u306E\u524A\u9664 disable=\u7121\u52B9 dn=\uFF24\uFF2E domain=\u30C9\u30E1\u30A4\u30F3 duration=\u6301\u7D9A\u6642\u9593\uFF08\u79D2\uFF09 duration_assertion_duration_test=\u30A2\u30B5\u30FC\u30C8\u306E\u6301\u7D9A duration_assertion_failure=\u64CD\u4F5C\u306B\u6642\u9593\u304C\u304B\u304B\u308A\u3059\u304E\u307E\u3057\u305F\:{0}\u30DF\u30EA\u79D2\u304B\u304B\u308A\u307E\u3057\u305F\u304C\u3001{1}\u30DF\u30EA\u79D2\u3088\u308A\u3082\u9577\u304F\u304B\u304B\u308B\u3079\u304D\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 duration_assertion_input_error=\u59A5\u5F53\u306A\u6B63\u306E\u6574\u6570\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 duration_assertion_label=\u6301\u7D9A\u6642\u9593(\u30DF\u30EA\u79D2) duration_assertion_title=\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u306E\u6301\u7D9A edit=\u7DE8\u96C6 email_results_title=\u7D50\u679C\u3092\u30E1\u30FC\u30EB\u3067\u9001\u4FE1 en=\u82F1\u8A9E enable=\u6709\u52B9 encoded_value=URL\u30A8\u30F3\u30B3\u30FC\u30C9\u5024 endtime=\u7D42\u4E86\u6642\u523B entry_dn=\u30A8\u30F3\u30C8\u30EADN error_loading_help=\u30D8\u30EB\u30D7\u30DA\u30FC\u30B8\u30ED\u30FC\u30C9\u4E2D\u306E\u30A8\u30E9\u30FC error_occurred=\u30A8\u30E9\u30FC\u304C\u767A\u751F example_data=\u30B5\u30F3\u30D7\u30EB\u30C7\u30FC\u30BF example_title=Example\u30B5\u30F3\u30D7\u30E9\u30FC exit=\u7D42\u4E86 expiration=\u671F\u9650 field_name=\u30D5\u30A3\u30FC\u30EB\u30C9\u540D file=\u30D5\u30A1\u30A4\u30EB file_already_in_use=\u305D\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u3059\u3067\u306B\u4F7F\u7528\u4E2D\u3067\u3059\u3002 file_visualizer_append=\u65E2\u306B\u5B58\u5728\u3059\u308B\u30C7\u30FC\u30BF\u30D5\u30A1\u30A4\u30EB\u3078\u8FFD\u52A0 file_visualizer_auto_flush=\u5404\u30C7\u30FC\u30BF\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u305F\u3042\u3068\u306B\u81EA\u52D5\u7684\u306B\u66F8\u51FA\u3057 file_visualizer_browse=\u53C2\u7167... file_visualizer_close=\u9589\u3058\u308B file_visualizer_file_options=\u30D5\u30A1\u30A4\u30EB\u30AA\u30D7\u30B7\u30E7\u30F3 file_visualizer_filename=\u30D5\u30A1\u30A4\u30EB\u540D file_visualizer_flush=\u66F8\u51FA\u3057 file_visualizer_missing_filename=\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 file_visualizer_open=\u958B\u304F file_visualizer_output_file=\u5168\u3066\u306E\u30C7\u30FC\u30BF\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u51FA\u529B file_visualizer_submit_data=\u9001\u4FE1\u30C7\u30FC\u30BF\u3092\u542B\u307E\u305B\u308B file_visualizer_title=\u30D5\u30A1\u30A4\u30EB\u30EC\u30DD\u30FC\u30BF file_visualizer_verbose=\u8A73\u7D30\u306A\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B filename=\u30D5\u30A1\u30A4\u30EB\u540D follow_redirects=\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u306B\u5BFE\u5FDC follow_redirects_auto=\u81EA\u52D5\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8 foreach_controller_title=ForEach\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 foreach_input=Input\u5909\u6570\u540D\u63A5\u982D\u8F9E foreach_output=Output\u5909\u6570\u540D ftp_sample_title=FTP \u30EA\u30AF\u30A8\u30B9\u30C8\u521D\u671F\u5024\u8A2D\u5B9A ftp_testing_title=FTP \u30EA\u30AF\u30A8\u30B9\u30C8 function_dialog_menu_item=\u95A2\u6570\u30D8\u30EB\u30D1\u30FC\u30C0\u30A4\u30A2\u30ED\u30B0 function_helper_title=\u95A2\u6570\u30D8\u30EB\u30D1\u30FC function_name_param=\u95A2\u6570\u540D\u3002\u30C6\u30B9\u30C8\u8A08\u753B\u3067\u4F7F\u7528\u3059\u308B\u5024\u3092\u4FDD\u6301\u3059\u308B\u306E\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 function_params=\u95A2\u6570\u30D1\u30E9\u30E1\u30FC\u30BF functional_mode=Functional \u30C6\u30B9\u30C8\u30E2\u30FC\u30C9 functional_mode_explanation=\u5404\u30EA\u30AF\u30A8\u30B9\u30C8\u306B\u5BFE\u3059\u308B\u30B5\u30FC\u30D0\u30FC\u306E\u5FDC\u7B54\u3092\n\u30D5\u30A1\u30A4\u30EB\u3078\u66F8\u304D\u8FBC\u307F\u305F\u3044\u5834\u5408\u306E\u307FFunctional \u30C6\u30B9\u30C8\u30E2\u30FC\u30C9\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044\u3002\n\n\u3053\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u9078\u3093\u3060\u3068\u304D\u306E\u6027\u80FD\u306B\u5BFE\u3059\u308B\u5F71\u97FF\u306B\u7559\u610F\u3057\u3066\u304F\u3060\u3055\u3044\u3002 gaussian_timer_delay=\u9045\u5EF6\u6642\u9593\u30AA\u30D5\u30BB\u30C3\u30C8\u5B9A\u6570 (\u30DF\u30EA\u79D2)\: gaussian_timer_memo=\u30AC\u30A6\u30B9\u5206\u5E03\u306B\u3088\u308B\u30E9\u30F3\u30C0\u30E0\u306A\u9045\u5EF6\u3092\u8FFD\u52A0 gaussian_timer_range=\u504F\u5DEE (\u30DF\u30EA\u79D2)\: gaussian_timer_title=\u30AC\u30A6\u30B9\u4E71\u6570\u30BF\u30A4\u30DE generate=\u751F\u6210 generator=\u751F\u6210\u30AF\u30E9\u30B9\u540D generator_cnf_msg=\u751F\u6210\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002/lib\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u751F\u6210\u30AF\u30E9\u30B9\u3092\u542B\u3080jar\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002 generator_illegal_msg=IllegalAcessException\u306B\u3088\u308A\u751F\u6210\u30AF\u30E9\u30B9\u3078\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 generator_instantiate_msg=\u751F\u6210\u30D1\u30FC\u30B5\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002Generator\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3059\u308B\u751F\u6210\u30AF\u30E9\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002 get_xml_from_file=SOAP XML\u30C7\u30FC\u30BF\u306E\u30D5\u30A1\u30A4\u30EB\uFF08\u4E0A\u8A18\u30C6\u30AD\u30B9\u30C8\u306F\u7121\u8996\u3055\u308C\u307E\u3059\uFF09 get_xml_from_random=\u30E1\u30C3\u30BB\u30FC\u30B8\u30D5\u30A9\u30EB\u30C0 graph_choose_graphs=\u8868\u793A\u3059\u308B\u30B0\u30E9\u30D5 graph_full_results_title=\u7D50\u679C\u3092\u30B0\u30E9\u30D5\u8868\u793A(\u8A73\u7D30) graph_results_average=\u5E73\u5747 graph_results_data=\u30C7\u30FC\u30BF graph_results_deviation=\u504F\u5DEE graph_results_latest_sample=\u6700\u65B0\u306E\u30B5\u30F3\u30D7\u30EB graph_results_median=\u4E2D\u592E\u5024 graph_results_ms=\u30DF\u30EA\u79D2(ms) graph_results_no_samples=\u30B5\u30F3\u30D7\u30EB\u6570 graph_results_throughput=\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8 graph_results_title=\u30B0\u30E9\u30D5\u8868\u793A grouping_add_separators=\u30B0\u30EB\u30FC\u30D7\u9593\u306B\u30BB\u30D1\u30EC\u30FC\u30BF\u3092\u8FFD\u52A0 grouping_in_controllers=\u65B0\u898F\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9\u3078\u5404\u30B0\u30EB\u30FC\u30D7\u3092\u7F6E\u304F grouping_mode=\u30B0\u30EB\u30FC\u30D7\u306B\u3059\u308B\: grouping_no_groups=\u30B5\u30F3\u30D7\u30E9\u30FC\u3092\u30B0\u30EB\u30FC\u30D7\u306B\u3057\u306A\u3044 grouping_store_first_only=\u5404\u30B0\u30EB\u30FC\u30D7\u306E\u6700\u521D\u306E\u30B5\u30F3\u30D7\u30E9\u30FC\u3060\u3051\u4FDD\u5B58 header_manager_title=HTTP \u30D8\u30C3\u30C0\u30DE\u30CD\u30FC\u30B8\u30E3 headers_stored=\u30D8\u30C3\u30C0\u30FC\u30DE\u30CD\u30FC\u30B8\u30E3\u306B\u4FDD\u5B58\u3055\u308C\u3066\u3044\u308B\u30D8\u30C3\u30C0 help=\u30D8\u30EB\u30D7 html_parameter_mask=HTML\u30D1\u30E9\u30E1\u30FC\u30BF\u30DE\u30B9\u30AF http_response_code=HTTP\u5FDC\u7B54\u30B3\u30FC\u30C9 http_url_rewriting_modifier_title=HTTP URL-Rewriting \u4FEE\u98FE\u5B50 http_user_parameter_modifier=HTTP\u30E6\u30FC\u30B6\u30FC\u30D1\u30E9\u30E1\u30FC\u30BF\u306E\u5909\u66F4 id_prefix=ID\u63A5\u982D\u8F9E id_suffix=ID \u63A5\u5C3E\u8F9E if_controller_label=\u6761\u4EF6 if_controller_title=If \u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 ignore_subcontrollers=\u30B5\u30D6\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9\u30D6\u30ED\u30C3\u30AF\u3092\u7121\u8996 include_equals=\u7B49\u53F7\u542B\u3080\uFF1F increment=\u5897\u5206 infinite=\u7121\u9650\u30EB\u30FC\u30D7 insert_after=\u5F8C\u3078\u633F\u5165 insert_before=\u524D\u3078\u633F\u5165 insert_parent=\u4E0A\u306E\u968E\u5C64\u306B\u633F\u5165 interleave_control_title=\u30A4\u30F3\u30BF\u30EA\u30FC\u30D6\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 intsum_param_1=\u6700\u521D\u306B\u8FFD\u52A0\u3059\u308Bint intsum_param_2=\uFF12\u56DE\u76EE\u306B\u8FFD\u52A0\u3059\u308Bint - \u3055\u3089\u306A\u308B\u5F15\u6570\u3092\u8FFD\u52A0\u3057\u3066\u5408\u8A08\u304C\u8A08\u7B97\u3055\u308C\u308B invalid_data=\u9069\u5207\u3067\u306A\u3044\u30C7\u30FC\u30BF invalid_mail_server=\u4E0D\u660E\u306A\u30E1\u30FC\u30EB\u30B5\u30FC\u30D0\u30FC\u3067\u3059\u3002 iteration_counter_arg_1=TRUE, \u30E6\u30FC\u30B6\u30FC\u6BCE\u306B\u30AB\u30A6\u30F3\u30BF\u30FC\u3092\u6301\u3064\u3053\u3068\u304C\u3067\u304D\u308B, FALSE \u30B0\u30ED\u30FC\u30D0\u30EB\u30AB\u30A6\u30F3\u30BF\u30FC\u3068\u306A\u308B iterator_num=\u30EB\u30FC\u30D7\u56DE\u6570\: java_request=Java \u30EA\u30AF\u30A8\u30B9\u30C8 java_request_defaults=Java \u30EA\u30AF\u30A8\u30B9\u30C8\u521D\u671F\u5024\u8A2D\u5B9A jndi_config_title=JNDI \u8A2D\u5B9A jndi_lookup_name=\u30EA\u30E2\u30FC\u30C8\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 jndi_lookup_title=JNDI \u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u8A2D\u5B9A jndi_method_button_invoke=\u547C\u3073\u51FA\u3057 jndi_method_button_reflect=\u30EA\u30D5\u30EC\u30AF\u30C8 jndi_method_home_name=\u30DB\u30FC\u30E0\u30E1\u30BD\u30C3\u30C9\u540D jndi_method_home_parms=\u30DB\u30FC\u30E0\u30E1\u30BD\u30C3\u30C9\u306E\u5F15\u6570 jndi_method_name=\u30E1\u30BD\u30C3\u30C9\u8A2D\u5B9A jndi_method_remote_interface_list=\u30EA\u30E2\u30FC\u30C8\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 jndi_method_remote_name=\u30EA\u30E2\u30FC\u30C8\u30E1\u30BD\u30C3\u30C9\u540D jndi_method_remote_parms=\u30EA\u30E2\u30FC\u30C8\u30E1\u30BD\u30C3\u30C9\u306E\u5F15\u6570 jndi_method_title=\u30EA\u30E2\u30FC\u30C8\u30E1\u30BD\u30C3\u30C9\u8A2D\u5B9A jndi_testing_title=JNDI \u30EA\u30AF\u30A8\u30B9\u30C8 jndi_url_jndi_props=JNDI \u30D7\u30ED\u30D1\u30C6\u30A3 ja=\u65E5\u672C\u8A9E ldap_sample_title=LDAP\u30EA\u30AF\u30A8\u30B9\u30C8\u521D\u671F\u5024\u8A2D\u5B9A ldap_testing_title=LDAP\u30EA\u30AF\u30A8\u30B9\u30C8 load=\u8AAD\u8FBC load_wsdl=WSDL\u306E\u30ED\u30FC\u30C9 log_errors_only=\u30ED\u30B0\u30A8\u30E9\u30FC\u306E\u307F log_file=\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306E\u5834\u6240 log_parser=Log\u30D1\u30FC\u30B5\u30AF\u30E9\u30B9\u540D log_parser_cnf_msg=\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002/lib\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u30AF\u30E9\u30B9\u3092\u542B\u3080jar\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002 log_parser_illegal_msg=IllegalAcessException\u306B\u3088\u308A\u30AF\u30E9\u30B9\u3078\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002 log_parser_instantiate_msg=\u30ED\u30B0\u30D1\u30FC\u30B5\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002LogParser\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u5B9F\u88C5\u3059\u308B\u30D1\u30FC\u30B5\u30AF\u30E9\u30B9\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002 log_sampler=Tomcat\u30A2\u30AF\u30BB\u30B9\u30ED\u30B0\u30B5\u30F3\u30D7\u30E9\u30FC logic_controller_title=\u30B7\u30F3\u30D7\u30EB\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 login_config=\u30ED\u30B0\u30A4\u30F3\u8A2D\u5B9A login_config_element=\u30ED\u30B0\u30A4\u30F3\u8A2D\u5B9A\u30A8\u30EC\u30E1\u30F3\u30C8 loop_controller_title=\u30EB\u30FC\u30D7\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 looping_control=\u30EB\u30FC\u30D7\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB lower_bound=\u4E0B\u9650 mailer_attributes_panel=\u30E1\u30FC\u30EB\u306E\u5C5E\u6027 mailer_error=\u30E1\u30FC\u30EB\u3092\u9001\u4FE1\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u5165\u529B\u5185\u5BB9\u306B\u9593\u9055\u3044\u304C\u306A\u3044\u304B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 mailer_visualizer_title=\u30E1\u30FC\u30E9\u30FC\u30D3\u30B8\u30E5\u30A2\u30E9\u30A4\u30B6 match_num_field=\u4E00\u81F4\u756A\u53F7\uFF080\u304B\u3089\u4E71\u6570\uFF09\uFF1A max=\u6700\u5927\u5024 maximum_param=\u5024\u57DF\u306E\u6700\u5927\u5024 md5hex_assertion_failure=MD5 sum \u30A2\u30B5\u30FC\u30C8\u30A8\u30E9\u30FC \: \u7D50\u679C\u306F {0} \u3067\u3057\u305F\u304C\u3001{1}\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002 md5hex_assertion_md5hex_test=\u30A2\u30B5\u30FC\u30C8\u5BFE\u8C61\u306EMD5Hex md5hex_assertion_title=MD5Hex\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 memory_cache=\u30E1\u30E2\u30EA\u30FC\u30AD\u30E3\u30C3\u30B7\u30E5 menu_assertions=\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 menu_close=\u9589\u3058\u308B menu_config_element=\u8A2D\u5B9A\u30A8\u30EC\u30E1\u30F3\u30C8 menu_edit=\u7DE8\u96C6 menu_generative_controller=\u30B5\u30F3\u30D7\u30E9\u30FC menu_listener=\u30EA\u30B9\u30CA\u30FC menu_logic_controller=\u30ED\u30B8\u30C3\u30AF\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 menu_merge=\u4F75\u5408\uFF08\u30DE\u30FC\u30B8\uFF09 menu_modifiers=\u4FEE\u98FE\u5B50 menu_non_test_elements=Non-Test\u30A8\u30EC\u30E1\u30F3\u30C8 menu_open=\u958B\u304F menu_post_processors=\u5F8C\u51E6\u7406 menu_pre_processors=\u524D\u51E6\u7406 menu_response_based_modifiers=\u30EC\u30B9\u30DD\u30F3\u30B9\u57FA\u6E96\u306E\u4FEE\u98FE\u5B50 menu_timer=\u30BF\u30A4\u30DE metadata=\u30E1\u30BF\u30C7\u30FC\u30BF method=\u30E1\u30BD\u30C3\u30C9\: mimetype=Mime\u30BF\u30A4\u30D7 minimum_param=\u5024\u57DF\u306E\u6700\u5C0F\u5024 minute=\u5206 modification_controller_title=\u5909\u66F4\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 modification_manager_title=\u5909\u66F4\u30DE\u30CD\u30FC\u30B8\u30E3 modify_test=\u30C6\u30B9\u30C8\u306E\u5909\u66F4 module_controller_title=\u30E2\u30B8\u30E5\u30FC\u30EB\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 monitor_equation_dead=Dead\: \u5FDC\u7B54\u306A\u3057 monitor_health_title=\u30E2\u30CB\u30BF\u7D50\u679C monitor_is_title=\u30E2\u30CB\u30BF\u3068\u3057\u3066\u4F7F\u7528 monitor_legend_memory_per=\u30E1\u30E2\u30EA % (used/total) monitor_legend_thread_per=\u30B9\u30EC\u30C3\u30C9 % (busy/max) monitor_performance_servers=\u30B5\u30FC\u30D0 monitor_performance_tab_title=\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9 monitor_performance_title=\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u30B0\u30E9\u30D5 name=\u540D\u524D\: new=\u65B0\u898F no=\u30CE\u30EB\u30A6\u30A7\u30FC\u8A9E number_of_threads=\u30B9\u30EC\u30C3\u30C9\u6570\: once_only_controller_title=\u4E00\u5EA6\u3060\u3051\u5B9F\u884C\u3055\u308C\u308B\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 open=\u958B\u304F... option=\u30AA\u30D7\u30B7\u30E7\u30F3 optional_tasks=\u30AA\u30D7\u30B7\u30E7\u30F3\u30BF\u30B9\u30AF paramtable=\u30EA\u30AF\u30A8\u30B9\u30C8\u3067\u9001\u308B\u30D1\u30E9\u30E1\u30FC\u30BF\: password=\u30D1\u30B9\u30EF\u30FC\u30C9 paste=\u30DA\u30FC\u30B9\u30C8 paste_insert=\u633F\u5165\u3068\u3057\u3066\u30DA\u30FC\u30B9\u30C8 path=\u30D1\u30B9\: path_extension_choice=\u30D1\u30B9\u306E\u62E1\u5F35(\u533A\u5207\u308A\u306B\u306F";"\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044) path_extension_dont_use_equals=\u30D1\u30B9\u306E\u62E1\u5F35\u306B\u7B49\u53F7\u3092\u4F7F\u308F\u306A\u3044\uFF08Intershop Enfinity \u4E92\u63DB\u306E\u305F\u3081\uFF09 patterns_to_exclude=\u9664\u5916\u3059\u308B\u30D1\u30BF\u30FC\u30F3 patterns_to_include=\u633F\u5165\u3059\u308B\u30D1\u30BF\u30FC\u30F3 port=\u30DD\u30FC\u30C8\: property_default_param=\u521D\u671F\u5024 property_edit=\u7DE8\u96C6 property_editor.value_is_invalid_message=\u5165\u529B\u3055\u308C\u305F\u30C6\u30AD\u30B9\u30C8\u306F\u3053\u306E\u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u9069\u3057\u3066\u3044\u307E\u305B\u3093\u3002\n\u5143\u306E\u5024\u306B\u623B\u3057\u307E\u3059\u3002 property_editor.value_is_invalid_title=\u9069\u5207\u3067\u306A\u3044\u5165\u529B property_name_param=\u30D7\u30ED\u30D1\u30C6\u30A3\u540D property_undefined=\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u306A\u3044 protocol=\u30D7\u30ED\u30C8\u30B3\u30EB\: protocol_java_border=Java \u30AF\u30E9\u30B9 protocol_java_classname=\u30AF\u30E9\u30B9\u540D\: protocol_java_config_tile=Java \u30B5\u30F3\u30D7\u30EB\u306E\u8A2D\u5B9A protocol_java_test_title=Java \u30C6\u30B9\u30C8 proxy_assertions=\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3\u306E\u8FFD\u52A0 proxy_cl_error=\u30D7\u30ED\u30AD\u30B7\u30FC\u30B5\u30FC\u30D0\u30FC\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306F\u3001\u30DB\u30B9\u30C8\u540D\u3068\u30DD\u30FC\u30C8\u3082\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 proxy_headers=HTTP\u30D8\u30C3\u30C0\u306E\u53D6\u308A\u8FBC\u307F proxy_separators=\u30BB\u30D1\u30EC\u30FC\u30BF\u306E\u8FFD\u52A0 proxy_target=\u5BFE\u8C61\u3068\u306A\u308B\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9\: proxy_title=HTTP \u30D7\u30ED\u30AD\u30B7\u30B5\u30FC\u30D0 ramp_up=Ramp-Up \u671F\u9593 (\u79D2)\: random_control_title=\u4E71\u6570\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 random_order_control_title=\u30E9\u30F3\u30C0\u30E0\u9806\u5E8F\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 read_response_message=\u5FDC\u7B54\u8AAD\u307F\u8FBC\u307F\u304C\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5FDC\u7B54\u3092\u898B\u308B\u305F\u3081\u306B\u306F\u30B5\u30F3\u30D7\u30E9\u30FC\u306E\u5FDC\u7B54\u3092\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002 read_response_note=\u5FDC\u7B54\u8AAD\u307F\u8FBC\u307F\u304C\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u3066\u3044\u306A\u3051\u308C\u3070\u3001\u30B5\u30F3\u30D7\u30E9\u30FC\u306F\u5FDC\u7B54\u305B\u305A\u3001 read_response_note2=SampleResult\u3092\u8A2D\u5B9A\u3057\u307E\u305B\u3093\u3002\u3053\u308C\u306F\u30D1\u30D5\u30A9\u30FC\u30DE\u30F3\u30B9\u3092\u826F\u304F\u3057\u307E\u3059\u304C\u3001 read_response_note3=\u5FDC\u7B54\u5185\u5BB9\u306F\u30ED\u30B0\u306B\u6B8B\u3055\u308C\u306A\u3044\u3053\u3068\u306B\u306A\u308A\u307E\u3059\u3002 read_soap_response=SOAP\u30EC\u30B9\u30DD\u30F3\u30B9\u8AAD\u8FBC record_controller_title=\u8A18\u9332\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 ref_name_field=\u53C2\u7167\u540D\uFF1A regex_extractor_title=\u6B63\u898F\u8868\u73FE\u62BD\u51FA regex_field=\u6B63\u898F\u8868\u73FE\uFF1A regexfunc_param_1=\u76F4\u524D\u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u7D50\u679C\u304B\u3089\u691C\u7D22\u3059\u308B\u305F\u3081\u306E\u6B63\u898F\u8868\u73FE\u3067\u3059\u3002 regexfunc_param_2=\u6587\u5B57\u5217\u3092\u7F6E\u63DB\u3059\u308B\u305F\u3081\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3067\u3001\u6B63\u898F\u8868\u73FE\u306E\u30B0\u30EB\u30FC\u30D7\u5316\u3092\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\u66F8\u5F0F\u306F$[group]$\u3002\u4F8B\uFF09 $1$\u3002 regexfunc_param_3=\u30DE\u30C3\u30C1\u30F3\u30B0\u3067\u4F7F\u7528\u3057\u307E\u3059\u30021\u4EE5\u4E0A\u306E\u6574\u6570\u3001RAND(JMeter\u304C\u30E9\u30F3\u30C0\u30E0\u306B\u9078\u629E\u3059\u308B)\u3001\u6D6E\u52D5\u5C0F\u6570\u70B9\u3001ALL(\u5168\u3066\u306B\u4E00\u81F4\u3059\u308B)\u3001\u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002 regexfunc_param_4=\u30C6\u30AD\u30B9\u30C8\u306E\u7BC4\u56F2\u3067\u3059\u3002ALL\u304C\u9078\u629E\u3055\u308C\u305F\u5834\u5408\u3001\u7D50\u679C\u3092\u751F\u6210\u3059\u308B\u305F\u3081\u306B\u4F7F\u308F\u308C\u307E\u3059\u3002 regexfunc_param_5=\u521D\u671F\u30C6\u30AD\u30B9\u30C8\u3067\u3059\u3002\u6B63\u898F\u8868\u73FE\u3068\u4E00\u81F4\u3059\u308B\u6587\u5B57\u5217\u304C\u306A\u304B\u3063\u305F\u5834\u5408\u306B\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u4EE3\u308F\u308A\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002 remote_exit=\u7D42\u4E86(\u30EA\u30E2\u30FC\u30C8) remote_exit_all=\u5168\u3066\u7D42\u4E86(\u30EA\u30E2\u30FC\u30C8) remote_start=\u958B\u59CB(\u30EA\u30E2\u30FC\u30C8) remote_start_all=\u5168\u3066\u958B\u59CB(\u30EA\u30E2\u30FC\u30C8) remote_stop=\u505C\u6B62(\u30EA\u30E2\u30FC\u30C8) remote_stop_all=\u5168\u3066\u505C\u6B62(\u30EA\u30E2\u30FC\u30C8) remove=\u524A\u9664 report=\u30EC\u30DD\u30FC\u30C8 request_data=\u30EA\u30AF\u30A8\u30B9\u30C8\u30C7\u30FC\u30BF restart=\u30EA\u30B9\u30BF\u30FC\u30C8 resultaction_title=\u30A2\u30AF\u30B7\u30E7\u30F3\u30CF\u30F3\u30C9\u30E9\u306E\u7D42\u4E86\u72B6\u614B resultsaver_prefix=\u30D5\u30A1\u30A4\u30EB\u540D\u306E\u63A5\u982D\u8F9E\: resultsaver_title=\u5FDC\u7B54\u3092\u30D5\u30A1\u30A4\u30EB\u3078\u4FDD\u5B58 root=\u30EB\u30FC\u30C8 root_title=\u30EB\u30FC\u30C8 run=\u5B9F\u884C running_test=\u30C6\u30B9\u30C8\u5B9F\u884C\u4E2D sampler_on_error_action=\u30B5\u30F3\u30D7\u30E9\u30FC\u30A8\u30E9\u30FC\u5F8C\u306E\u30A2\u30AF\u30B7\u30E7\u30F3 sampler_on_error_continue=\u7D9A\u884C sampler_on_error_stop_test=\u30C6\u30B9\u30C8\u505C\u6B62 sampler_on_error_stop_thread=\u30B9\u30EC\u30C3\u30C9\u505C\u6B62 save=\u30C6\u30B9\u30C8\u8A08\u753B\u3092\u4FDD\u5B58 save?=\u4FDD\u5B58? save_all_as=\u30C6\u30B9\u30C8\u8A08\u753B\u306B\u540D\u524D\u3092\u3064\u3051\u3066\u4FDD\u5B58 save_as=\u5225\u540D\u3067\u4FDD\u5B58... scheduler=\u30B9\u30B1\u30B8\u30E5\u30FC\u30E9 scheduler_configuration=\u30B9\u30B1\u30B8\u30E5\u30FC\u30E9\u8A2D\u5B9A search_base=\u691C\u7D22\u57FA\u6E96 search_filter=\u691C\u7D22\u30D5\u30A3\u30EB\u30BF search_test=\u30C6\u30B9\u30C8\u306E\u691C\u7D22 second=\u79D2 secure=\u30BB\u30AD\u30E5\u30A2 send_file=\u30EA\u30AF\u30A8\u30B9\u30C8\u3068\u4E00\u7DD2\u306B\u9001\u4FE1\u3055\u308C\u308B\u30D5\u30A1\u30A4\u30EB\: send_file_browse=\u53C2\u7167... send_file_filename_label=\u30D5\u30A1\u30A4\u30EB\u540D\: send_file_mime_label=MIME \u30BF\u30A4\u30D7\: send_file_param_name_label=\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\: server=\u30B5\u30FC\u30D0\u540D\u307E\u305F\u306F IP\: servername=\u30B5\u30FC\u30D0\u540D\uFF1A session_argument_name=\u30BB\u30C3\u30B7\u30E7\u30F3\u5F15\u6570\u540D shutdown=\u30B7\u30E3\u30C3\u30C8\u30C0\u30A6\u30F3 simple_config_element=\u30B7\u30F3\u30D7\u30EB\u8A2D\u5B9A\u30A8\u30EC\u30E1\u30F3\u30C8 simple_data_writer_title=\u30B7\u30F3\u30D7\u30EB\u30C7\u30FC\u30BF\u30E9\u30A4\u30BF size_assertion_comparator_error_equal=\u7B49\u3057\u3044 size_assertion_comparator_error_greater=\u5927\u306A\u308A\u5C0F size_assertion_comparator_error_greaterequal=\u4EE5\u4E0A size_assertion_comparator_error_less=\u5C0F\u306A\u308A\u5927 size_assertion_comparator_error_lessequal=\u4EE5\u4E0B size_assertion_comparator_error_notequal=\u7B49\u3057\u304F\u306A\u3044 size_assertion_comparator_label=\u6BD4\u8F03\u306E\u578B size_assertion_failure=\u7D50\u679C\u306F\u6B63\u3057\u304F\u306A\u3044\u30B5\u30A4\u30BA\u3067\u3059\u3002\:{0}\u30D0\u30A4\u30C8\u3067\u3059\u304C\u3001{1}\u30D0\u30A4\u30C8\u304B{2}\u30D0\u30A4\u30C8\u3067\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002 size_assertion_input_error=\u9069\u5207\u306A\u6B63\u306E\u6574\u6570\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002 size_assertion_label=\u30D0\u30A4\u30C8\u30B5\u30A4\u30BA\: size_assertion_size_test=\u30A2\u30B5\u30FC\u30C8\u306E\u30B5\u30A4\u30BA size_assertion_title=\u30B5\u30A4\u30BA\u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 soap_action=Soap\u30A2\u30AF\u30B7\u30E7\u30F3 soap_data_title=Soap/XML-RPC \u30C7\u30FC\u30BF soap_sampler_title=Soap/XML-RPC\u30EA\u30AF\u30A8\u30B9\u30C8 spline_visualizer_average=\u5E73\u5747 spline_visualizer_incoming=\u5230\u7740 spline_visualizer_maximum=\u6700\u5927 spline_visualizer_minimum=\u6700\u5C0F spline_visualizer_title=\u30B9\u30D7\u30E9\u30A4\u30F3\u30D3\u30B8\u30E5\u30A2\u30E9\u30A4\u30B6 spline_visualizer_waitingmessage=\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u958B\u59CB\u307E\u3067\u304A\u5F85\u3061\u4E0B\u3055\u3044\u3002 ssl_alias_prompt=\u5B9A\u7FA9\u6E08\u307F\u306E\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044\u3002 ssl_alias_select=\u30C6\u30B9\u30C8\u3059\u308B\u30A8\u30A4\u30EA\u30A2\u30B9\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044\u3002 ssl_alias_title=\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30A8\u30A4\u30EA\u30A2\u30B9 ssl_error_title=\u30AD\u30FC\u30B9\u30C8\u30A2\u30A8\u30E9\u30FC ssl_pass_prompt=\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044\u3002 ssl_pass_title=\u30AD\u30FC\u30B9\u30C8\u30A2\u30D1\u30B9\u30EF\u30FC\u30C9 ssl_port=SSL\u30DD\u30FC\u30C8 sslmanager=SSL \u30DE\u30CD\u30FC\u30B8\u30E3 start=\u958B\u59CB starttime=\u958B\u59CB\u6642\u523B stop=\u505C\u6B62 stopping_test=\u3059\u3079\u3066\u306E\u30C6\u30B9\u30C8\u7528\u30B9\u30EC\u30C3\u30C9\u3092\u505C\u6B62\u4E2D\u3067\u3059\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002 stopping_test_title=\u30C6\u30B9\u30C8\u306E\u505C\u6B62\u4E2D string_from_file_file_name=\u30D5\u30A1\u30A4\u30EB\u306E\u30D5\u30EB\u30D1\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 string_from_file_seq_final=\u6700\u7D42\u30D5\u30A1\u30A4\u30EB\u30B7\u30FC\u30B1\u30F3\u30B9\u756A\u53F7 string_from_file_seq_start=\u958B\u59CB\u30D5\u30A1\u30A4\u30EB\u30B7\u30FC\u30B1\u30F3\u30B9\u756A\u53F7 summariser_title=\u7D50\u679C\u306E\u6982\u8981\u3092\u751F\u6210 tcp_config_title=TCP\u30B5\u30F3\u30D7\u30E9\u30FC\u8A2D\u5B9A tcp_nodelay=\u9045\u5EF6\u306A\u3057\u3092\u8A2D\u5B9A tcp_port=\u30DD\u30FC\u30C8\u756A\u53F7\: tcp_request_data=\u9001\u4FE1\u3059\u308B\u30C6\u30AD\u30B9\u30C8 tcp_sample_title=TCP\u30B5\u30F3\u30D7\u30E9\u30FC tcp_timeout=\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\: template_field=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\uFF1A test=\u30C6\u30B9\u30C8 test_configuration=\u30C6\u30B9\u30C8\u8A2D\u5B9A test_plan=\u30C6\u30B9\u30C8\u8A08\u753B testplan.serialized=\u5404\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7\u3092\u5225\u3005\u306B\u5B9F\u884C testplan_comments=\u30B3\u30E1\u30F3\u30C8\: thread_delay_properties=\u30B9\u30EC\u30C3\u30C9\u9045\u5EF6\u6642\u9593\u30D7\u30ED\u30D1\u30C6\u30A3 thread_group_title=\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7 thread_properties=\u30B9\u30EC\u30C3\u30C9\u30D7\u30ED\u30D1\u30C6\u30A3 threadgroup=\u30B9\u30EC\u30C3\u30C9\u30B0\u30EB\u30FC\u30D7 throughput_control_bynumber_label=\u5168\u4F53\u5B9F\u884C throughput_control_bypercent_label=\u30D1\u30FC\u30BB\u30F3\u30C8\u5B9F\u884C throughput_control_perthread_label=\u30E6\u30FC\u30B6\u30FC\u3054\u3068 throughput_control_title=\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 throughput_control_tplabel=\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8 transaction_controller_title=\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9 uniform_timer_delay=\u9045\u5EF6\u6642\u9593\u30AA\u30D5\u30BB\u30C3\u30C8\u5B9A\u6570 (\u30DF\u30EA\u79D2)\: uniform_timer_memo=\u4E00\u69D8\u5206\u5E03\u306B\u3088\u308B\u30E9\u30F3\u30C0\u30E0\u306A\u9045\u5EF6\u3092\u8FFD\u52A0 uniform_timer_range=\u6700\u5927\u9045\u5EF6\u6642\u9593 (\u30DF\u30EA\u79D2)\: uniform_timer_title=\u4E00\u69D8\u4E71\u6570\u30BF\u30A4\u30DE update_per_iter=\u7E70\u308A\u8FD4\u3057\u3054\u3068\u306B\u66F4\u65B0 upload=\u30D5\u30A1\u30A4\u30EB\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9 upper_bound=\u4E0A\u9650 url_config_protocol=\u30D7\u30ED\u30C8\u30B3\u30EB\: url_config_title=HTTP \u30EA\u30AF\u30A8\u30B9\u30C8\u521D\u671F\u5024\u8A2D\u5B9A url_full_config_title=UrlFull \u30B5\u30F3\u30D7\u30EB url_multipart_config_title=HTTP\u30DE\u30EB\u30C1\u30D1\u30FC\u30C8\u30EA\u30AF\u30A8\u30B9\u30C8\u521D\u671F\u5024\u8A2D\u5B9A use_keepalive=KeepAlive \u3092\u6709\u52B9\u306B\u3059\u308B use_recording_controller=\u8A18\u9332\u30B3\u30F3\u30C8\u30ED\u30FC\u30E9\u306E\u4F7F\u7528 user=\u30E6\u30FC\u30B6\u30FC user_defined_test=\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u30C6\u30B9\u30C8 user_defined_variables=\u30E6\u30FC\u30B6\u30FC\u5B9A\u7FA9\u5909\u6570 user_param_mod_help_note=(\u5909\u66F4\u3057\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002\u5909\u66F4\u3059\u308B\u5834\u5408\u306F\u3001JMeter\u306E/bin\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u3042\u308B\u540C\u540D\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002) user_parameters_table=\u30D1\u30E9\u30E1\u30FC\u30BF user_parameters_title=\u30E6\u30FC\u30B6\u30FC\u30D1\u30E9\u30E1\u30FC\u30BF username=\u30E6\u30FC\u30B6\u30FC\u540D value=\u5024 var_name=\u53C2\u7167\u540D view_graph_tree_title=\u7D50\u679C\u3092\u30B0\u30E9\u30D5\u3068\u30C4\u30EA\u30FC\u3067\u8868\u793A view_results_in_table=\u7D50\u679C\u3092\u8868\u3067\u8868\u793A view_results_tab_request=\u30EA\u30AF\u30A8\u30B9\u30C8 view_results_tab_response=\u5FDC\u7B54\u30C7\u30FC\u30BF view_results_title=\u7D50\u679C\u8868\u793A view_results_tree_title=\u7D50\u679C\u3092\u30C4\u30EA\u30FC\u3067\u8868\u793A web_request=HTTP \u30EA\u30AF\u30A8\u30B9\u30C8 web_server=Web \u30B5\u30FC\u30D0 web_server_domain=\u30B5\u30FC\u30D0\u540D\u307E\u305F\u306F IP\: web_server_port=\u30DD\u30FC\u30C8\u756A\u53F7\: web_testing_retrieve_images=\u5168\u3066\u306E\u30A4\u30E1\u30FC\u30B8\u3068\u30A2\u30D7\u30EC\u30C3\u30C8\u3092\u7E70\u308A\u8FD4\u3057\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3059\u308B(HTML \u30D5\u30A1\u30A4\u30EB\u306E\u307F) web_testing_title=HTTP \u30EA\u30AF\u30A8\u30B9\u30C8 webservice_proxy_host=\u30D7\u30ED\u30AD\u30B7\u30DB\u30B9\u30C8 webservice_proxy_note=HTTP\u30D7\u30ED\u30AD\u30B7\u304C\u30C1\u30A7\u30C3\u30AF\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u3001\u30DB\u30B9\u30C8\u540D\u3068\u30DD\u30FC\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u3068\u30B5\u30F3\u30D7\u30E9\u30FC\u306F webservice_proxy_note2=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u53C2\u7167\u3057\u307E\u3059\u3002\u30D7\u30ED\u30AD\u30B7\u30DB\u30B9\u30C8\u3084\u30D7\u30ED\u30AD\u30B7\u30DD\u30FC\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u5834\u5408\u306F webservice_proxy_note3=\u3060\u307E\u3063\u305F\u307E\u307E\u7D42\u4E86\u3057\u307E\u3059\u3002 webservice_proxy_port=\u30D7\u30ED\u30AD\u30B7\u30DD\u30FC\u30C8 webservice_sampler_title=Web\u30B5\u30FC\u30D3\u30B9(SOAP)\u30EA\u30AF\u30A8\u30B9\u30C8 (Beta Code) webservice_soap_action=Soap\u30A2\u30AF\u30B7\u30E7\u30F3 webservice_use_proxy=HTTP\u30D7\u30ED\u30AD\u30B7\u306E\u4F7F\u7528 workbench_title=\u30EF\u30FC\u30AF\u30D9\u30F3\u30C1 wsdl_helper_error=WSDL\u304C\u4E0D\u9069\u5207\u3067\u3059\u3002URL\u3092\uFF12\u91CD\u30C1\u30A7\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002 wsdl_url_error=WSDL\u304C\u7A7A\u3067\u3059\u3002 xml_assertion_title=XML \u30A2\u30B5\u30FC\u30B7\u30E7\u30F3 you_must_enter_a_valid_number=\u9069\u5207\u306A\u6570\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_fr.properties0000644000175000017500000017074212032647221027075 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! about=A propos de JMeter add=Ajouter add_as_child=Ajouter en tant qu'enfant add_from_clipboard=Ajouter depuis Presse-papier add_parameter=Ajouter un param\u00E8tre add_pattern=Ajouter un motif \: add_test=Ajout add_user=Ajouter un utilisateur add_value=Ajouter valeur addtest=Ajout aggregate_graph=Graphique des statistiques aggregate_graph_choose_color=Choisir couleur aggregate_graph_choose_foreground_color=Couleur valeur aggregate_graph_color_bar=Couleur \: aggregate_graph_column=Colonne aggregate_graph_column_selection=S\u00E9lection de colonnes par libell\u00E9 \: aggregate_graph_column_settings=Param\u00E8tres colonne aggregate_graph_columns_to_display=Colonnes \u00E0 afficher \: aggregate_graph_dimension=Taille graphique aggregate_graph_display=G\u00E9n\u00E9rer le graphique aggregate_graph_draw_outlines=Bordure de barre ? aggregate_graph_dynamic_size=Taille de graphique dynamique aggregate_graph_font=Police \: aggregate_graph_height=Hauteur \: aggregate_graph_legend=L\u00E9gende aggregate_graph_legend.placement.bottom=Bas aggregate_graph_legend.placement.left=Gauche aggregate_graph_legend.placement.right=Droite aggregate_graph_legend.placement.top=Haut aggregate_graph_legend_placement=Position \: aggregate_graph_max_length_xaxis_label=Longueur maximum du libell\u00E9 de l'axe des abscisses \: aggregate_graph_ms=Millisecondes aggregate_graph_no_values_to_graph=Pas de valeurs pour le graphique aggregate_graph_number_grouping=S\u00E9parateur de milliers ? aggregate_graph_response_time=Temps de r\u00E9ponse aggregate_graph_save=Enregistrer le graphique aggregate_graph_save_table=Enregistrer le tableau de donn\u00E9es aggregate_graph_save_table_header=Inclure l'ent\u00EAte du tableau aggregate_graph_size=Taille \: aggregate_graph_style=Style \: aggregate_graph_sync_with_name=Synchroniser avec nom aggregate_graph_tab_graph=Graphique aggregate_graph_tab_settings=Param\u00E8tres aggregate_graph_title=Graphique agr\u00E9g\u00E9 aggregate_graph_title_group=Titre aggregate_graph_use_group_name=Ajouter le nom du groupe aux libell\u00E9s aggregate_graph_user_title=Titre du graphique \: aggregate_graph_value_font=Police de la valeur \: aggregate_graph_value_labels_vertical=Libell\u00E9 de valeurs vertical ? aggregate_graph_width=Largeur \: aggregate_graph_xaxis_group=Abscisses aggregate_graph_yaxis_group=Ordonn\u00E9es aggregate_graph_yaxis_max_value=Echelle maximum \: aggregate_report=Rapport agr\u00E9g\u00E9 aggregate_report_90=90% aggregate_report_90%_line=90e centile aggregate_report_bandwidth=Ko/sec aggregate_report_count=\# Echantillons aggregate_report_error=Erreur aggregate_report_error%=% Erreur aggregate_report_max=Max aggregate_report_median=M\u00E9diane aggregate_report_min=Min aggregate_report_rate=D\u00E9bit aggregate_report_stddev=Ecart type aggregate_report_total_label=TOTAL ajp_sampler_title=Requ\u00EAte AJP/1.3 als_message=Note \: Le parseur de log d'acc\u00E8s est g\u00E9n\u00E9rique et vous permet de se brancher \u00E0 als_message2=votre propre parseur. Pour se faire, impl\u00E9menter le LogParser, ajouter le jar au als_message3=r\u00E9pertoire /lib et entrer la classe (fichier .class) dans l'\u00E9chantillon (sampler). analyze=En train d'analyser le fichier de donn\u00E9es anchor_modifier_title=Analyseur de lien HTML appearance=Apparence argument_must_not_be_negative=L'argument ne peut pas \u00EAtre n\u00E9gatif \! arguments_panel_title=Param\u00E8tres de commande assertion_assume_success=Ignorer le statut assertion_body_resp=Corps de r\u00E9ponse assertion_code_resp=Code de r\u00E9ponse assertion_contains=Contient (exp. r\u00E9guli\u00E8re) assertion_equals=Est \u00E9gale \u00E0 (texte brut) assertion_headers=Ent\u00EAtes de r\u00E9ponse assertion_matches=Correspond \u00E0 (exp. r\u00E9guli\u00E8re) assertion_message_resp=Message de r\u00E9ponse assertion_network_size=R\u00E9ponse compl\u00E8te assertion_not=Inverser assertion_pattern_match_rules=Type de correspondance du motif assertion_patterns_to_test=Motifs \u00E0 tester assertion_resp_field=Section de r\u00E9ponse \u00E0 tester assertion_resp_size_field=Taille \u00E0 v\u00E9rifier sur assertion_substring=Contient (texte brut) assertion_text_resp=Texte de r\u00E9ponse assertion_textarea_label=Assertions \: assertion_title=Assertion R\u00E9ponse assertion_url_samp=URL Echantillon assertion_visualizer_title=R\u00E9cepteur d'assertions attribute=Attribut \: attrs=Attributs auth_base_url=URL de base auth_manager_title=Gestionnaire d'autorisation HTTP auths_stored=Autorisations stock\u00E9es average=Moyenne average_bytes=Moy. octets bind=Connexion de l'unit\u00E9 bouncy_castle_unavailable_message=Les jars de bouncycastle sont indisponibles, ajoutez les au classpath. browse=Parcourir... bsf_sampler_title=Echantillon BSF bsf_script=Script \u00E0 lancer (variables\: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) bsf_script_file=Fichier script \u00E0 lancer \: bsf_script_language=Langage de script \: bsf_script_parameters=Param\u00E8tres \u00E0 passer au script/fichier \: bsh_assertion_script=Script (IO\: Failure[Message], Response. IN\: Response[Data|Code|Message|Headers], RequestHeaders, Sample[Label|rData]) bsh_assertion_script_variables=Les variables suivantes sont d\u00E9finies pour le script \:\nEn lecture/\u00E9criture \: Failure, FailureMessage, SampleResult, vars, props, log.\nEn lecture seule \: Response[Data|Code|Message|Headers], RequestHeaders, SampleLabel, SamplerData, ctx bsh_assertion_title=Assertion BeanShell bsh_function_expression=Expression \u00E0 \u00E9valuer bsh_sampler_title=Echantillon BeanShell bsh_script=Script (voir la suite pour les variables qui sont d\u00E9finies) bsh_script_file=Fichier script \: bsh_script_parameters=Param\u00E8tres (-> String Parameters et String []bsh.args) bsh_script_reset_interpreter=R\u00E9initialiser l'interpr\u00E9teur bsh avant chaque appel bsh_script_variables=Les variables suivantes sont d\u00E9finies pour le script \:\nSampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log busy_testing=Je suis occup\u00E9 \u00E0 tester, veuillez arr\u00EAter le test avant de changer le param\u00E8trage cache_manager_size=Nombre maximum d'\u00E9l\u00E9ments dans le cache cache_manager_title=Gestionnaire de cache HTTP cache_session_id=Identifiant de session de cache ? cancel=Annuler cancel_exit_to_save=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Voulez-vous enregistrer avant de sortir ? cancel_new_to_save=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Voulez-vous enregistrer avant de nettoyer le plan de test ? cancel_revert_project=Il y a des \u00E9l\u00E9ments qui n'ont pas \u00E9t\u00E9 sauv\u00E9s. Annuler les changements et revenir \u00E0 la derni\u00E8re sauvegarde du plan de test ? change_parent=Changer le contr\u00F4leur char_value=Caract\u221A\u00AEre num\u221A\u00A9rique Unicode (d\u221A\u00A9cimal or 0xhex) check_return_code_title=V\u00E9rifier le code retour choose_function=Choisir une fonction choose_language=Choisir une langue clear=Nettoyer clear_all=Nettoyer tout clear_cache_per_iter=Nettoyer le cache \u00E0 chaque it\u00E9ration ? clear_cookies_per_iter=Nettoyer les cookies \u00E0 chaque it\u00E9ration ? close=Fermer column_delete_disallowed=Supprimer cette colonne n'est pas possible column_number=Num\u00E9ro de colonne du fichier CSV | next | *alias command_config_box_title=Commande \u00E0 ex\u00E9cuter command_config_std_streams_title=Flux standard (fichiers) command_field_title=Commande \: compare=Comparaison comparefilt=Filtre de comparaison comparison_differ_content=Le contenu des r\u00E9ponses est diff\u00E9rent. comparison_differ_time=La diff\u00E9rence du temps de r\u00E9ponse diff\u00E8re de plus de comparison_invalid_node=Noeud invalide comparison_regex_string=Expression r\u00E9guli\u00E8re comparison_regex_substitution=Substitution comparison_response_time=Temps de r\u00E9ponse \: comparison_unit=ms comparison_visualizer_title=R\u00E9cepteur d'assertions de comparaison config_element=El\u00E9ment de configuration config_save_settings=Configurer configure_wsdl=Configurer confirm=Confirmer constant_throughput_timer_memo=Ajouter un d\u00E9lai entre les \u00E9chantillions pour obtenir un d\u00E9bit constant constant_timer_delay=D\u00E9lai d'attente (en millisecondes) \: constant_timer_memo=Ajouter un d\u00E9lai fixe entre les \u00E9chantillions de test constant_timer_title=Compteur de temps fixe content_encoding=Encodage contenu \: controller=Contr\u00F4leur cookie_implementation_choose=Impl\u00E9mentation \: cookie_manager_policy=Politique des cookies \: cookie_manager_title=Gestionnaire de cookies HTTP cookie_options=Options cookies_stored=Cookies stock\u00E9s copy=Copier counter_config_title=Compteur counter_per_user=Suivre le compteur ind\u00E9pendamment pour chaque unit\u00E9 de test counter_reset_per_tg_iteration=R\u00E9initialiser le compteur \u00E0 chaque it\u00E9ration du groupe d'unit\u00E9s countlim=Limiter le nombre d'\u00E9l\u00E9ments retourn\u00E9s \u00E0 csvread_file_file_name=Fichier CSV pour obtenir les valeurs de | *alias cut=Couper cut_paste_function=Fonction de copier/coller de cha\u00EEne de caract\u00E8re database_conn_pool_max_usage=Utilisation max pour chaque connexion\: database_conn_pool_props=Pool de connexions \u221A\u2020 la base de donn\u221A\u00A9es database_conn_pool_size=Nombre de Connexions dans le Pool\: database_conn_pool_title=Valeurs par d\u221A\u00A9faut du Pool de connexions JDBC database_driver_class=Classe du Driver\: database_login_title=Valeurs par d\u221A\u00A9faut de la base de donn\u221A\u00A9es JDBC database_sql_query_string=Requ\u00EAte SQL \: database_sql_query_title=Requ\u00EAte SQL JDBC par d\u00E9faut database_testing_title=Requ\u221A\u2122te JDBC database_url=URL JDBC\: database_url_jdbc_props=URL et driver JDBC de la base de donn\u221A\u00A9es ddn=DN \: de=Allemand debug_off=D\u00E9sactiver le d\u00E9bogage debug_on=Activer le d\u00E9bogage default_parameters=Param\u00E8tres par d\u00E9faut default_value_field=Valeur par d\u00E9faut \: delay=D\u00E9lai avant d\u00E9marrage (secondes) \: delayed_start=Cr\u00E9er les unit\u00E9s seulement quand n\u00E9cessaire delete=Supprimer delete_parameter=Supprimer le param\u00E8tre delete_test=Suppression delete_user=Supprimer l'utilisateur deltest=Suppression deref=D\u00E9r\u00E9f\u00E9rencement des alias description=Description detail=D\u00E9tail directory_field_title=R\u00E9pertoire d'ex\u00E9cution \: disable=D\u00E9sactiver distribution_graph_title=Graphique de distribution (alpha) distribution_note1=Ce graphique se mettra \u00E0 jour tous les 10 \u00E9chantillons dn=Racine DN \: domain=Domaine \: done=Fait down=Descendre duplicate=Dupliquer duration=Dur\u00E9e (secondes) \: duration_assertion_duration_test=Dur\u00E9e maximale \u00E0 v\u00E9rifier duration_assertion_failure=L''op\u00E9ration a dur\u00E9e trop longtemps\: cela a pris {0} millisecondes, mais n''aurait pas d\u00FB durer plus de {1} millisecondes. duration_assertion_input_error=Veuillez entrer un entier positif valide. duration_assertion_label=Dur\u00E9e en millisecondes \: duration_assertion_title=Assertion Dur\u00E9e edit=Editer email_results_title=R\u00E9sultat d'email en=Anglais enable=Activer encode?=Encodage encoded_value=Valeur de l'URL encod\u00E9e endtime=Date et heure de fin \: entry_dn=Entr\u00E9e DN \: entrydn=Entr\u00E9e DN environment_panel_title=Variables d'environnement error_indicator_tooltip=Affiche le nombre d'erreurs dans le journal(log), cliquer pour afficher la console. error_loading_help=Erreur au chargement de la page d'aide error_occurred=Une erreur est survenue error_title=Erreur es=Espagnol escape_html_string=Cha\u00EEne d'\u00E9chappement eval_name_param=Variable contenant du texte et r\u00E9f\u00E9rences de fonctions evalvar_name_param=Nom de variable example_data=Exemple de donn\u00E9e example_title=Echantillon exemple exit=Quitter expected_return_code_title=Code retour attendu \: expiration=Expiration field_name=Nom du champ file=Fichier file_already_in_use=Ce fichier est d\u00E9j\u00E0 utilis\u00E9 file_visualizer_append=Concat\u00E9ner au fichier de donn\u00E9es existant file_visualizer_auto_flush=Vider automatiquement apr\u00E8s chaque echantillon de donn\u00E9es file_visualizer_browse=Parcourir... file_visualizer_close=Fermer file_visualizer_file_options=Options de fichier file_visualizer_filename=Nom du fichier \: file_visualizer_flush=Vider file_visualizer_missing_filename=Aucun fichier de sortie sp\u00E9cifi\u00E9. file_visualizer_open=Ouvrir... file_visualizer_output_file=Ecrire les donn\u00E9es dans un fichier file_visualizer_submit_data=Inclure les donn\u00E9es envoy\u00E9es file_visualizer_title=Rapporteur de fichier file_visualizer_verbose=Sortie verbeuse filename=Nom de fichier \: follow_redirects=Suivre les redirect. follow_redirects_auto=Rediriger automat. font.sansserif=Sans Serif font.serif=Serif fontstyle.bold=Gras fontstyle.italic=Italique fontstyle.normal=Normal foreach_controller_title=Contr\u00F4leur Pour chaque (ForEach) foreach_input=Pr\u00E9fixe de la variable d'entr\u00E9e \: foreach_output=Nom de la variable de sortie \: foreach_use_separator=Ajouter un soulign\u00E9 "_" avant le nombre ? format=Format du nombre \: fr=Fran\u00E7ais ftp_binary_mode=Utiliser le mode binaire ? ftp_get=R\u00E9cup\u00E9rer (get) ftp_local_file=Fichier local \: ftp_local_file_contents=Contenus fichier local \: ftp_put=D\u00E9poser (put) ftp_remote_file=Fichier distant \: ftp_sample_title=Param\u00E8tres FTP par d\u00E9faut ftp_save_response_data=Enregistrer le fichier dans la r\u00E9ponse ? ftp_testing_title=Requ\u00EAte FTP function_dialog_menu_item=Assistant de fonctions function_helper_title=Assistant de fonctions function_name_param=Nom de la fonction. Utilis\u00E9 pour stocker les valeurs \u00E0 utiliser ailleurs dans la plan de test function_name_paropt=Nom de variable dans laquelle le r\u00E9sultat sera stock\u00E9 (optionnel) function_params=Param\u00E8tres de la fonction functional_mode=Mode de test fonctionnel functional_mode_explanation=S\u00E9lectionner le mode de test fonctionnel uniquement si vous avez besoin\nd'enregistrer les donn\u00E9es re\u00E7ues du serveur dans un fichier \u00E0 chaque requ\u00EAte. \n\nS\u00E9lectionner cette option affecte consid\u00E9rablement les performances. gaussian_timer_delay=D\u00E9lai de d\u00E9calage bas\u00E9 gaussian (en millisecondes) \: gaussian_timer_memo=Ajoute un d\u00E9lai al\u00E9atoire avec une distribution gaussienne gaussian_timer_range=D\u00E9viation (en millisecondes) \: gaussian_timer_title=Compteur de temps al\u00E9atoire gaussien generate=G\u00E9n\u00E9rer generator=Nom de la classe g\u00E9n\u00E9ratrice generator_cnf_msg=N'a pas p\u00FB trouver la classe g\u00E9n\u00E9ratrice. Assurez-vous que vous avez plac\u00E9 votre fichier jar dans le r\u00E9pertoire /lib generator_illegal_msg=N'a pas p\u00FB acc\u00E9der \u00E0 la classes g\u00E9n\u00E9ratrice \u00E0 cause d'une IllegalAccessException. generator_instantiate_msg=N'a pas p\u00FB cr\u00E9er une instance du parseur g\u00E9n\u00E9rateur. Assurez-vous que le g\u00E9n\u00E9rateur impl\u00E9mente l'interface Generator. get_xml_from_file=Fichier avec les donn\u00E9es XML SOAP (remplace le texte ci-dessus) get_xml_from_random=R\u00E9pertoire contenant les fichier(s) \: graph_apply_filter=Appliquer le filtre graph_choose_graphs=Graphique \u00E0 afficher graph_full_results_title=Graphique de r\u00E9sultats complets graph_pointshape_circle=Cercle graph_pointshape_diamond=Diamant graph_pointshape_none=Aucun graph_pointshape_square=Carr\u00E9 graph_pointshape_triangle=Triangle graph_resp_time_interval_label=Interval (ms) \: graph_resp_time_interval_reload=Appliquer l'interval graph_resp_time_not_enough_data=Impossible de dessiner le graphique, pas assez de donn\u00E9es graph_resp_time_series_selection=S\u00E9lection des \u00E9chantillons par libell\u00E9 \: graph_resp_time_settings_line=Param\u00E9tres de la courbe graph_resp_time_settings_pane=Param\u00E9tres du graphique graph_resp_time_shape_label=Forme de la jonction \: graph_resp_time_stroke_width=Largeur de ligne \: graph_resp_time_title=Graphique \u00E9volution temps de r\u00E9ponses graph_resp_time_title_label=Titre du graphique \: graph_resp_time_xaxis_time_format=Formatage heure (SimpleDateFormat) \: graph_results_average=Moyenne graph_results_data=Donn\u00E9es graph_results_deviation=Ecart type graph_results_latest_sample=Dernier \u00E9chantillon graph_results_median=M\u00E9diane graph_results_ms=ms graph_results_no_samples=Nombre d'\u00E9chantillons graph_results_throughput=D\u00E9bit graph_results_title=Graphique de r\u00E9sultats grouping_add_separators=Ajouter des s\u00E9parateurs entre les groupes grouping_in_controllers=Mettre chaque groupe dans un nouveau contr\u00F4leur grouping_in_transaction_controllers=Mettre chaque groupe dans un nouveau contr\u00F4leur de transaction grouping_mode=Grouper \: grouping_no_groups=Ne pas grouper les \u00E9chantillons grouping_store_first_only=Stocker le 1er \u00E9chantillon pour chaque groupe uniquement header_manager_title=Gestionnaire d'ent\u00EAtes HTTP headers_stored=Ent\u00EAtes stock\u00E9es heap_dump=Cr\u00E9er une image disque de la m\u00E9moire (heap dump) help=Aide help_node=Quel est ce noeud ? html_assertion_file=Ecrire un rapport JTidy dans un fichier html_assertion_label=Assertion HTML html_assertion_title=Assertion HTML html_parameter_mask=Masque de param\u00E8tre HTML http_implementation=Impl\u00E9mentation \: http_response_code=Code de r\u00E9ponse HTTP http_url_rewriting_modifier_title=Transcripteur d'URL HTTP http_user_parameter_modifier=Modificateur de param\u00E8tre utilisateur HTTP httpmirror_max_pool_size=Taille maximum du pool d'unit\u00E9s \: httpmirror_max_queue_size=Taille maximum de la file d'attente \: httpmirror_settings=Param\u00E8tres httpmirror_title=Serveur HTTP miroir id_prefix=Pr\u00E9fixe d'ID id_suffix=Suffixe d'ID if_controller_evaluate_all=Evaluer pour tous les fils ? if_controller_expression=Interpr\u00E9ter la condition comme une expression if_controller_label=Condition (d\u00E9faut Javascript) \: if_controller_title=Contr\u00F4leur Si (If) ignore_subcontrollers=Ignorer les sous-blocs de contr\u00F4leurs include_controller=Contr\u00F4leur Inclusion include_equals=Inclure \u00E9gale ? include_path=Plan de test \u00E0 inclure increment=Incr\u00E9ment \: infinite=Infini initial_context_factory=Fabrique de contexte initiale insert_after=Ins\u00E9rer apr\u00E8s insert_before=Ins\u00E9rer avant insert_parent=Ins\u00E9rer en tant que parent interleave_control_title=Contr\u00F4leur Interleave intsum_param_1=Premier entier \u00E0 ajouter intsum_param_2=Deuxi\u00E8me entier \u00E0 ajouter - les entier(s) suivants peuvent \u00EAtre ajout\u00E9(s) avec les arguments suivants. invalid_data=Donn\u00E9e invalide invalid_mail=Une erreur est survenue lors de l'envoi de l'email invalid_mail_address=Une ou plusieurs adresse(s) invalide(s) ont \u00E9t\u00E9 d\u00E9tect\u00E9e(s) invalid_mail_server=Le serveur de mail est inconnu (voir le fichier de journalisation JMeter) invalid_variables=Variables invalides iteration_counter_arg_1=TRUE, pour que chaque utilisateur ait son propre compteur, FALSE pour un compteur global iterator_num=Nombre d'it\u00E9rations \: ja=Japonais jar_file=Fichiers .jar java_request=Requ\u00EAte Java java_request_defaults=Requ\u00EAte Java par d\u00E9faut javascript_expression=Expression JavaScript \u00E0 \u00E9valuer jexl_expression=Expression JEXL \u00E0 \u00E9valuer jms_auth_required=Obligatoire jms_client_caption=Le client r\u00E9cepteur utilise MessageConsumer.receive () pour \u00E9couter les messages. jms_client_caption2=MessageListener utilise l'interface onMessage(Message) pour \u00E9couter les nouveaux messages. jms_client_id=ID du Client jms_client_type=Client jms_communication_style=Type de communication \: jms_concrete_connection_factory=Fabrique de connexion jms_config=Source du message \: jms_config_title=Configuration JMS jms_connection_factory=Fabrique de connexion jms_correlation_title=Champs alternatifs pour la correspondance de message jms_dest_setup=Evaluer jms_dest_setup_dynamic=A chaque \u00E9chantillon jms_dest_setup_static=Au d\u00E9marrage jms_durable_subscription_id=ID d'abonnement durable jms_file=Fichier jms_initial_context_factory=Fabrique de connexion initiale jms_itertions=Nombre d'\u00E9chantillons \u00E0 agr\u00E9ger jms_jndi_defaults_title=Configuration JNDI par d\u00E9faut jms_jndi_props=Propri\u00E9t\u00E9s JNDI jms_map_message=Message Map jms_message_title=Propri\u00E9t\u00E9s du message jms_message_type=Type de message \: jms_msg_content=Contenu jms_object_message=Message Object jms_point_to_point=Requ\u00EAte JMS Point-\u00E0-point jms_props=Propri\u00E9t\u00E9s JMS jms_provider_url=URL du fournisseur jms_publisher=Requ\u00EAte JMS Publication jms_pwd=Mot de passe jms_queue=File jms_queue_connection_factory=Fabrique QueueConnection jms_queueing=Ressources JMS jms_random_file=Fichier al\u00E9atoire jms_read_response=Lire la r\u00E9ponse jms_receive_queue=Nom JNDI de la file d'attente Receive jms_request=Requ\u00EAte seule jms_requestreply=Requ\u00EAte R\u00E9ponse jms_sample_title=Requ\u00EAte JMS par d\u00E9faut jms_selector=S\u00E9lecteur JMS jms_send_queue=Nom JNDI de la file d'attente Request jms_separator=S\u00E9parateur jms_stop_between_samples=Arr\u00EAter entre les \u00E9chantillons ? jms_subscriber_on_message=Utiliser MessageListener.onMessage() jms_subscriber_receive=Utiliser MessageConsumer.receive() jms_subscriber_title=Requ\u00EAte JMS Abonnement jms_testing_title=Messagerie Request jms_text_message=Message texte ou Message Objet s\u00E9rialis\u00E9 en XML par XStream jms_timeout=D\u00E9lai (millisecondes) jms_topic=Destination jms_use_auth=Utiliser l'authentification ? jms_use_file=Depuis un fichier jms_use_non_persistent_delivery=Utiliser un mode de livraison non persistant ? jms_use_properties_file=Utiliser le fichier jndi.properties jms_use_random_file=Fichier al\u00E9atoire jms_use_req_msgid_as_correlid=Utiliser l'ID du message Request jms_use_res_msgid_as_correlid=Utiliser l'ID du message Response jms_use_text=Zone de texte (ci-dessous) jms_user=Utilisateur jndi_config_title=Configuration JNDI jndi_lookup_name=Interface remote jndi_lookup_title=Configuration Lookup JNDI jndi_method_button_invoke=Invoquer jndi_method_button_reflect=R\u00E9flection jndi_method_home_name=Nom de la m\u00E9thode home jndi_method_home_parms=Param\u00E8tres de la m\u00E9thode home jndi_method_name=Configuration m\u00E9thode jndi_method_remote_interface_list=Interfaces remote jndi_method_remote_name=Nom m\u00E9thodes remote jndi_method_remote_parms=Param\u00E8tres m\u00E9thode remote jndi_method_title=Configuration m\u00E9thode remote jndi_testing_title=Requ\u00EAte JNDI jndi_url_jndi_props=Propri\u00E9t\u00E9s JNDI junit_append_error=Concat\u00E9ner les erreurs d'assertion junit_append_exception=Concat\u00E9ner les exceptions d'ex\u00E9cution junit_constructor_error=Impossible de cr\u00E9er une instance de la classe junit_constructor_string=Libell\u00E9 de cha\u00EEne Constructeur junit_create_instance_per_sample=Cr\u00E9er une nouvelle instance pour chaque \u00E9chantillon junit_do_setup_teardown=Ne pas appeler setUp et tearDown junit_error_code=Code d'erreur junit_error_default_code=9999 junit_error_default_msg=Une erreur inattendue est survenue junit_error_msg=Message d'erreur junit_failure_code=Code d'\u00E9chec junit_failure_default_code=0001 junit_failure_default_msg=Test \u00E9chou\u00E9 junit_failure_msg=Message d'\u00E9chec junit_junit4=Rechercher les annotations JUnit 4 (au lieu de JUnit 3) junit_pkg_filter=Filtre de paquets junit_request=Requ\u00EAte JUnit junit_request_defaults=Requ\u00EAte par d\u00E9faut JUnit junit_success_code=Code de succ\u00E8s junit_success_default_code=1000 junit_success_default_msg=Test r\u00E9ussi junit_success_msg=Message de succ\u00E8s junit_test_config=Param\u00E8tres Test JUnit junit_test_method=M\u00E9thode de test ldap_argument_list=Liste d'arguments LDAP ldap_connto=D\u00E9lai d'attente de connexion (millisecondes) ldap_parse_results=Examiner les r\u00E9sultats de recherche ? ldap_sample_title=Requ\u00EAte LDAP par d\u00E9faut ldap_search_baseobject=Effectuer une recherche 'baseobject' ldap_search_onelevel=Effectuer une recherche 'onelevel' ldap_search_subtree=Effectuer une recherche 'subtree' ldap_secure=Utiliser le protocole LDAP s\u00E9curis\u00E9 (ldaps) ? ldap_testing_title=Requ\u00EAte LDAP ldapext_sample_title=Requ\u00EAte LDAP \u00E9tendue par d\u00E9faut ldapext_testing_title=Requ\u00EAte LDAP \u00E9tendue library=Librairie load=Charger load_wsdl=Charger WSDL log_errors_only=Erreurs log_file=Emplacement du fichier de journal (log) log_function_comment=Commentaire (facultatif) log_function_level=Niveau de journalisation (INFO par d\u00E9faut), OUT ou ERR log_function_string=Cha\u00EEne \u00E0 tracer log_function_string_ret=Cha\u00EEne \u00E0 tracer (et \u00E0 retourner) log_function_throwable=Texte de l'exception Throwable (optionnel) log_only=Uniquement \: log_parser=Nom de la classe de parseur des journaux (log) log_parser_cnf_msg=N'a pas p\u00FB trouver cette classe. Assurez-vous que vous avez plac\u00E9 votre fichier jar dans le r\u00E9pertoire /lib log_parser_illegal_msg=N'a pas p\u00FB acc\u00E9der \u00E0 la classe \u00E0 cause d'une exception IllegalAccessException. log_parser_instantiate_msg=N'a pas p\u00FB cr\u00E9er une instance du parseur de log. Assurez-vous que le parseur impl\u00E9mente l'interface LogParser. log_sampler=Echantillon Journaux d'acc\u00E8s Tomcat log_success_only=Succ\u00E8s logic_controller_title=Contr\u00F4leur Simple login_config=Configuration Identification login_config_element=Configuration Identification longsum_param_1=Premier long \u221A\u2020 ajouter longsum_param_2=Second long \u221A\u2020 ajouter - les autres longs pourront \u221A\u2122tre cumul\u221A\u00A9s en ajoutant d'autres arguments. loop_controller_title=Contr\u00F4leur Boucle looping_control=Contr\u00F4le de boucle lower_bound=Borne Inf\u00E9rieure mail_reader_account=Nom utilisateur \: mail_reader_all_messages=Tous mail_reader_delete=Supprimer les messages du serveur mail_reader_folder=Dossier \: mail_reader_num_messages=Nombre de message \u00E0 r\u00E9cup\u00E9rer \: mail_reader_password=Mot de passe \: mail_reader_port=Port (optionnel) \: mail_reader_server=Serveur \: mail_reader_server_type=Protocole (ex. pop3, imaps) \: mail_reader_storemime=Stocker le message en utilisant MIME (brut) mail_reader_title=Echantillon Lecteur d'email mail_sent=Email envoy\u00E9 avec succ\u00E8s mailer_addressees=Destinataire(s) \: mailer_attributes_panel=Attributs de courrier mailer_connection_security=S\u00E9curit\u00E9 connexion \: mailer_error=N'a pas p\u00FB envoyer l'email. Veuillez corriger les erreurs de saisie. mailer_failure_limit=Limite d'\u00E9chec \: mailer_failure_subject=Sujet Echec \: mailer_failures=Nombre d'\u00E9checs \: mailer_from=Exp\u00E9diteur \: mailer_host=Serveur \: mailer_login=Identifiant \: mailer_msg_title_error=Erreur mailer_msg_title_information=Information mailer_password=Mot de passe \: mailer_port=Port \: mailer_string=Notification d'email mailer_success_limit=Limite de succ\u00E8s \: mailer_success_subject=Sujet Succ\u00E8s \: mailer_test_mail=Tester email mailer_title_message=Message mailer_title_settings=Param\u00E8tres mailer_title_smtpserver=Serveur SMTP mailer_visualizer_title=R\u00E9cepteur Notification Email match_num_field=R\u00E9cup\u00E9rer la Ni\u00E8me corresp. (0 \: Al\u00E9atoire) \: max=Maximum \: maximum_param=La valeur maximum autoris\u00E9e pour un \u00E9cart de valeurs md5hex_assertion_failure=Erreur de v\u00E9rification de la somme MD5 \: obtenu {0} mais aurait d\u00FB \u00EAtre {1} md5hex_assertion_label=MD5Hex md5hex_assertion_md5hex_test=MD5Hex \u00E0 v\u00E9rifier md5hex_assertion_title=Assertion MD5Hex memory_cache=Cache de m\u00E9moire menu_assertions=Assertions menu_close=Fermer menu_collapse_all=R\u00E9duire tout menu_config_element=Configurations menu_edit=Editer menu_expand_all=Etendre tout menu_fragments=Fragment d'\u00E9l\u00E9ments menu_generative_controller=Echantillons menu_listener=R\u00E9cepteurs menu_logger_panel=Afficher la console menu_logic_controller=Contr\u00F4leurs Logiques menu_merge=Fusionner... menu_modifiers=Modificateurs menu_non_test_elements=El\u00E9ments hors test menu_open=Ouvrir... menu_post_processors=Post-Processeurs menu_pre_processors=Pr\u00E9-Processeurs menu_response_based_modifiers=Modificateurs bas\u00E9s sur la r\u00E9ponse menu_search=Rechercher menu_search_reset=Effacer la recherche menu_tables=Table menu_threads=Moteurs d'utilisateurs menu_timer=Compteurs de temps menu_toolbar=Barre d'outils metadata=M\u00E9ta-donn\u00E9es method=M\u00E9thode \: mimetype=Type MIME minimum_param=La valeur minimale autoris\u00E9e pour l'\u00E9cart de valeurs minute=minute modddn=Ancienne valeur modification_controller_title=Contr\u00F4leur Modification modification_manager_title=Gestionnaire Modification modify_test=Modification modtest=Modification module_controller_module_to_run=Module \u00E0 ex\u00E9cuter \: module_controller_title=Contr\u00F4leur Module module_controller_warning=Ne peut pas trouver le module \: monitor_equation_active=Activit\u00E9 \: (occup\u00E9e/max) > 25% monitor_equation_dead=Mort \: pas de r\u00E9ponse monitor_equation_healthy=Sant\u00E9 \: (occup\u00E9e/max) < 25% monitor_equation_load=Charge \: ((occup\u00E9e / max) * 50) + ((m\u00E9moire utilis\u00E9e / m\u00E9moire maximum) * 50) monitor_equation_warning=Attention \: (occup\u00E9/max) > 67% monitor_health_tab_title=Sant\u00E9 monitor_health_title=Moniteur de connecteurs monitor_is_title=Utiliser comme moniteur monitor_label_left_bottom=0 % monitor_label_left_middle=50 % monitor_label_left_top=100 % monitor_label_prefix=Pr\u00E9fixe de connecteur \: monitor_label_right_active=Actif monitor_label_right_dead=Mort monitor_label_right_healthy=Sant\u00E9 monitor_label_right_warning=Attention monitor_legend_health=Sant\u00E9 monitor_legend_load=Charge monitor_legend_memory_per=M\u00E9moire % (utilis\u00E9e/total) monitor_legend_thread_per=Unit\u00E9 % (occup\u00E9/max) monitor_load_factor_mem=50 monitor_load_factor_thread=50 monitor_performance_servers=Serveurs monitor_performance_tab_title=Performance monitor_performance_title=Graphique de performance name=Nom \: new=Nouveau newdn=Nouveau DN next=Suivant no=Norv\u00E9gien number_of_threads=Nombre d'unit\u00E9s (utilisateurs) \: obsolete_test_element=Cet \u00E9l\u00E9ment de test est obsol\u00E8te once_only_controller_title=Contr\u00F4leur Ex\u00E9cution unique opcode=Code d'op\u00E9ration open=Ouvrir... option=Options optional_tasks=T\u00E2ches optionnelles paramtable=Envoyer les param\u00E8tres avec la requ\u00EAte \: password=Mot de passe \: paste=Coller paste_insert=Coller ins\u00E9rer path=Chemin \: path_extension_choice=Extension de chemin (utiliser ";" comme separateur) path_extension_dont_use_equals=Ne pas utiliser \u00E9gale dans l'extension de chemin (Compatibilit\u00E9 Intershop Enfinity) path_extension_dont_use_questionmark=Ne pas utiliser le point d'interrogation dans l'extension du chemin (Compatiblit\u00E9 Intershop Enfinity) patterns_to_exclude=URL \: motifs \u00E0 exclure patterns_to_include=URL \: motifs \u00E0 inclure pkcs12_desc=Clef PKCS 12 (*.p12) pl=Polonais poisson_timer_delay=D\u00E9lai de d\u00E9calage bas\u00E9 sur la loi de poisson (en millisecondes) \: poisson_timer_memo=Ajoute un d\u00E9lai al\u00E9atoire avec une distribution de type Poisson poisson_timer_range=D\u00E9viation (en millisecondes) \: poisson_timer_title=Compteur de temps al\u00E9atoire selon la loi de Poisson port=Port \: post_as_parameters=Param\u00E8tres post_body=Donn\u00E9es POST post_body_raw=Donn\u00E9es POST brutes post_thread_group_title=Groupe d'unit\u00E9s de fin previous=Pr\u00E9c\u00E9dent property_as_field_label={0}\: property_default_param=Valeur par d\u00E9faut property_edit=Editer property_editor.value_is_invalid_message=Le texte que vous venez d'entrer n'a pas une valeur valide pour cette propri\u00E9t\u00E9.\nLa propri\u00E9t\u00E9 va revenir \u00E0 sa valeur pr\u00E9c\u00E9dente. property_editor.value_is_invalid_title=Texte saisi invalide property_name_param=Nom de la propri\u00E9t\u00E9 property_returnvalue_param=Revenir \u00E0 la valeur originale de la propri\u00E9t\u00E9 (d\u00E9faut non) ? property_tool_tip={0}\: {1} property_undefined=Non d\u00E9fini property_value_param=Valeur de propri\u00E9t\u00E9 property_visualiser_title=Afficheur de propri\u00E9t\u00E9s protocol=Protocole [http] \: protocol_java_border=Classe Java protocol_java_classname=Nom de classe \: protocol_java_config_tile=Configurer \u00E9chantillon Java protocol_java_test_title=Test Java provider_url=Provider URL proxy_assertions=Ajouter une Assertion R\u00E9ponse proxy_cl_error=Si un serveur proxy est sp\u00E9cifi\u00E9, h\u00F4te et port doivent \u00EAtre donn\u00E9 proxy_content_type_exclude=Exclure \: proxy_content_type_filter=Filtre de type de contenu proxy_content_type_include=Inclure \: proxy_daemon_bind_error=Impossible de lancer le serveur proxy, le port est d\u00E9j\u00E0 utilis\u00E9. Choisissez un autre port. proxy_daemon_error=Impossible de lancer le serveur proxy, voir le journal pour plus de d\u00E9tails proxy_general_settings=Param\u00E8tres g\u00E9n\u00E9raux proxy_headers=Capturer les ent\u00EAtes HTTP proxy_regex=Correspondance des variables par regex ? proxy_sampler_settings=Param\u00E8tres Echantillon HTTP proxy_sampler_type=Type \: proxy_separators=Ajouter des s\u00E9parateurs proxy_target=Contr\u00F4leur Cible \: proxy_test_plan_content=Param\u00E8tres du plan de test proxy_title=Serveur Proxy HTTP pt_br=Portugais (Br\u00E9sil) ramp_up=Dur\u00E9e de mont\u00E9e en charge (en secondes) \: random_control_title=Contr\u00F4leur Al\u00E9atoire random_order_control_title=Contr\u00F4leur d'Ordre al\u00E9atoire random_string_chars_to_use=Caract\u00E8res \u00E0 utiliser pour la g\u00E9n\u00E9ration de la cha\u00EEne al\u00E9atoire random_string_length=Longueur de cha\u00EEne al\u00E9atoire read_response_message='Lire la r\u00E9ponse SOAP' n'est pas coch\u00E9. Pour voir la r\u00E9ponse, cocher la case dans la requ\u00EAte WebService svp. read_response_note=Si 'Lire la r\u00E9ponse SOAP' n'est pas coch\u00E9, la requ\u00EAte WebService ne lira pas la r\u00E9ponse. read_response_note2=et ne remplira pas l'objet SampleResult. Cela am\u00E9liore les performances, mais signifie que read_response_note3=le contenu de la r\u00E9ponse ne sera pas tra\u00E7\u00E9. read_soap_response=Lire la r\u00E9ponse SOAP realm=Univers (realm) record_controller_title=Contr\u00F4leur Enregistreur ref_name_field=Nom de r\u00E9f\u00E9rence \: regex_extractor_title=Extracteur Expression r\u00E9guli\u00E8re regex_field=Expression r\u00E9guli\u00E8re \: regex_source=Port\u00E9e regex_src_body=Corps regex_src_body_unescaped=Corps (non \u00E9chapp\u00E9) regex_src_hdrs=Ent\u00EAtes regex_src_url=URL regexfunc_param_1=Expression r\u00E9guli\u00E8re utilis\u00E9e pour chercher les r\u00E9sultats de la requ\u00EAte pr\u00E9c\u00E9dente. regexfunc_param_2=Canevas pour la ch\u00EEne de caract\u00E8re de remplacement, utilisant des groupes d'expressions r\u00E9guli\u00E8res. Le format est $[group]$. Exemple $1$. regexfunc_param_3=Quelle correspondance utiliser. Un entier 1 ou plus grand, RAND pour indiquer que JMeter doit choisir al\u00E9atoirement , A d\u00E9cimal, ou ALL indique que toutes les correspondances doivent \u00EAtre utilis\u00E9es regexfunc_param_4=Entre le texte. Si ALL est s\u00E9lectionn\u00E9, l'entre-texte sera utilis\u00E9 pour g\u00E9n\u00E9rer les r\u00E9sultats ([""]) regexfunc_param_5=Text par d\u00E9faut. Utilis\u00E9 \u00E0 la place du canevas si l'expression r\u00E9guli\u00E8re ne trouve pas de correspondance regexfunc_param_7=Variable en entr\u221A\u00A9e contenant le texte \u221A\u2020 parser ([\u221A\u00A9chantillon pr\u221A\u00A9c\u221A\u00A9dent]) regexp_render_no_text=Les donn\u00E9es de r\u00E9ponse ne sont pas du texte. regexp_tester_button_test=Tester regexp_tester_field=Expression r\u00E9guli\u00E8re \: regexp_tester_title=Testeur de RegExp remote_error_init=Erreur lors de l'initialisation du serveur distant remote_error_starting=Erreur lors du d\u221A\u00A9marrage du serveur distant remote_exit=Sortie distante remote_exit_all=Sortie distante de tous remote_shut=Extinction \u00E0 distance remote_shut_all=Extinction \u00E0 distance de tous remote_start=D\u00E9marrage distant remote_start_all=D\u00E9marrage distant de tous remote_stop=Arr\u00EAt distant remote_stop_all=Arr\u00EAt distant de tous remove=Supprimer remove_confirm_msg=Etes-vous s\u00FBr de vouloir supprimer ce(s) \u00E9l\u00E9ment(s) ? remove_confirm_title=Confirmer la suppression ? rename=Renommer une entr\u00E9e report=Rapport report_bar_chart=Graphique \u221A\u2020 barres report_bar_graph_url=URL report_base_directory=R\u221A\u00A9pertoire de Base report_chart_caption=L\u221A\u00A9gende du graph report_chart_x_axis=Axe X report_chart_x_axis_label=Libell\u221A\u00A9 de l'Axe X report_chart_y_axis=Axe Y report_chart_y_axis_label=Libell\u221A\u00A9 de l'Axe Y report_line_graph=Graphique Lin\u221A\u00A9aire report_line_graph_urls=Inclure les URLs report_output_directory=R\u221A\u00A9pertoire de sortie du rapport report_page=Page de Rapport report_page_element=Page Element report_page_footer=Pied de page report_page_header=Ent\u221A\u2122te de Page report_page_index=Cr\u221A\u00A9er la Page d'Index report_page_intro=Page d'Introduction report_page_style_url=Url de la feuille de style report_page_title=Titre de la Page report_pie_chart=Camembert report_plan=Plan du rapport report_select=Selectionner report_summary=Rapport r\u221A\u00A9sum\u221A\u00A9 report_table=Table du Rapport report_writer=R\u221A\u00A9dacteur du Rapport report_writer_html=R\u221A\u00A9dacteur de rapport HTML request_data=Donn\u00E9e requ\u00EAte reset_gui=R\u00E9initialiser l'\u00E9l\u00E9ment response_save_as_md5=R\u00E9ponse en empreinte MD5 restart=Red\u00E9marrer resultaction_title=Op\u00E9rateur R\u00E9sultats Action resultsaver_addtimestamp=Ajouter un timestamp resultsaver_errors=Enregistrer seulement les r\u00E9ponses en \u00E9checs resultsaver_numberpadlen=Taille minimale du num\u00E9ro de s\u00E9quence resultsaver_prefix=Pr\u00E9fixe du nom de fichier \: resultsaver_skipautonumber=Ne pas ajouter de nombre au pr\u00E9fixe resultsaver_skipsuffix=Ne pas ajouter de suffixe resultsaver_success=Enregistrer seulement les r\u00E9ponses en succ\u00E8s resultsaver_title=Sauvegarder les r\u00E9ponses vers un fichier resultsaver_variable=Nom de variable \: retobj=Retourner les objets return_code_config_box_title=Configuration du code retour reuseconnection=R\u00E9-utiliser la connexion revert_project=Annuler les changements revert_project?=Annuler les changements sur le projet ? root=Racine root_title=Racine run=Lancer running_test=Lancer test runtime_controller_title=Contr\u00F4leur Dur\u00E9e d'ex\u00E9cution runtime_seconds=Temps d'ex\u00E9cution (secondes) \: sample_result_save_configuration=Sauvegarder la configuration de la sauvegarde des \u00E9chantillons sample_scope=Appliquer sur sample_scope_all=L'\u00E9chantillon et ses ressources li\u00E9es sample_scope_children=Les ressources li\u00E9es sample_scope_parent=L'\u00E9chantillon sample_scope_variable=Une variable \: sampler_label=Libell\u00E9 sampler_on_error_action=Action \u00E0 suivre apr\u00E8s une erreur d'\u00E9chantillon sampler_on_error_continue=Continuer sampler_on_error_start_next_loop=D\u00E9marrer it\u00E9ration suivante sampler_on_error_stop_test=Arr\u00EAter le test sampler_on_error_stop_test_now=Arr\u00EAter le test imm\u00E9diatement sampler_on_error_stop_thread=Arr\u00EAter l'unit\u00E9 save=Enregistrer le plan de test save?=Enregistrer ? save_all_as=Enregistrer le plan de test sous... save_as=Enregistrer sous... save_as_error=Au moins un \u00E9l\u00E9ment doit \u00EAtre s\u00E9lectionn\u00E9 \! save_as_image=Enregistrer en tant qu'image sous... save_as_image_all=Enregistrer l'\u00E9cran en tant qu'image... save_assertionresultsfailuremessage=Messages d'erreur des assertions save_assertions=R\u00E9sultats des assertions (XML) save_asxml=Enregistrer au format XML save_bytes=Nombre d'octets save_code=Code de r\u00E9ponse HTTP save_datatype=Type de donn\u00E9es save_encoding=Encodage save_fieldnames=Libell\u00E9 des colonnes (CSV) save_filename=Nom de fichier de r\u00E9ponse save_graphics=Enregistrer le graphique save_hostname=Nom d'h\u00F4te save_idletime=Temps d'inactivit\u00E9 save_label=Libell\u00E9 save_latency=Latence save_message=Message de r\u00E9ponse save_overwrite_existing_file=Le fichier s\u00E9lectionn\u00E9 existe d\u00E9j\u00E0, voulez-vous l'\u00E9craser ? save_requestheaders=Ent\u00EAtes de requ\u00EAte (XML) save_responsedata=Donn\u00E9es de r\u00E9ponse (XML) save_responseheaders=Ent\u00EAtes de r\u00E9ponse (XML) save_samplecount=Nombre d'\u00E9chantillon et d'erreur save_samplerdata=Donn\u00E9es d'\u00E9chantillon (XML) save_subresults=Sous r\u00E9sultats (XML) save_success=Succ\u00E8s save_threadcounts=Nombre d'unit\u00E9s actives save_threadname=Nom d'unit\u00E9 save_time=Temps \u00E9coul\u00E9 save_timestamp=Horodatage save_url=URL sbind=Simple connexion/d\u00E9connexion scheduler=Programmateur de d\u00E9marrage scheduler_configuration=Configuration du programmateur scope=Port\u00E9e search=Rechercher search_base=Base de recherche search_filter=Filtre de recherche search_test=Recherche search_text_button_close=Fermer search_text_button_find=Rechercher search_text_button_next=Suivant search_text_chkbox_case=Consid\u00E9rer la casse search_text_chkbox_regexp=Exp. reguli\u00E8re search_text_field=Rechercher \: search_text_msg_not_found=Texte non trouv\u00E9 search_text_title_not_found=Pas trouv\u00E9 search_tree_title=Rechercher dans l'arbre searchbase=Base de recherche searchfilter=Filtre de recherche searchtest=Recherche second=seconde secure=S\u00E9curis\u00E9 \: send_file=Envoyer un fichier avec la requ\u00EAte \: send_file_browse=Parcourir... send_file_filename_label=Chemin du fichier \: send_file_mime_label=Type MIME \: send_file_param_name_label=Nom du param\u00E8tre \: server=Nom ou IP du serveur \: servername=Nom du serveur \: session_argument_name=Nom des arguments de la session setup_thread_group_title=Groupe d'unit\u00E9s de d\u00E9but should_save=Vous devez enregistrer le plan de test avant de le lancer. \nSi vous utilisez des fichiers de donn\u00E9es (i.e. Source de donn\u00E9es CSV ou la fonction _StringFromFile), \nalors c'est particuli\u00E8rement important d'enregistrer d'abord votre script de test. \nVoulez-vous enregistrer maintenant votre plan de test ? shutdown=Eteindre simple_config_element=Configuration Simple simple_data_writer_title=Enregistreur de donn\u00E9es size_assertion_comparator_error_equal=est \u00E9gale \u00E0 size_assertion_comparator_error_greater=est plus grand que size_assertion_comparator_error_greaterequal=est plus grand ou \u00E9gale \u00E0 size_assertion_comparator_error_less=est inf\u00E9rieur \u00E0 size_assertion_comparator_error_lessequal=est inf\u00E9rieur ou \u00E9gale \u00E0 size_assertion_comparator_error_notequal=n'est pas \u00E9gale \u00E0 size_assertion_comparator_label=Type de comparaison size_assertion_failure=Le r\u00E9sultat n''a pas la bonne taille \: il \u00E9tait de {0} octet(s), mais aurait d\u00FB \u00EAtre de {1} {2} octet(s). size_assertion_input_error=Entrer un entier positif valide svp. size_assertion_label=Taille en octets \: size_assertion_size_test=Taille \u00E0 v\u00E9rifier size_assertion_title=Assertion Taille smime_assertion_issuer_dn=Nom unique de l'\u00E9metteur \: smime_assertion_message_position=V\u00E9rifier l'assertion sur le message \u00E0 partir de la position smime_assertion_not_signed=Message non sign\u00E9 smime_assertion_signature=Signature smime_assertion_signer=Certificat signataire smime_assertion_signer_by_file=Fichier du certificat \: smime_assertion_signer_constraints=V\u00E9rifier les valeurs \: smime_assertion_signer_dn=Nom unique du signataire \: smime_assertion_signer_email=Adresse courriel du signataire \: smime_assertion_signer_no_check=Pas de v\u00E9rification smime_assertion_signer_serial=Num\u00E9ro de s\u00E9rie \: smime_assertion_title=Assertion SMIME smime_assertion_verify_signature=V\u00E9rifier la signature smtp_additional_settings=Param\u00E8tres suppl\u00E9mentaires smtp_attach_file=Fichier(s) attach\u00E9(s) \: smtp_attach_file_tooltip=S\u00E9parer les fichiers par le point-virgule ";" smtp_auth_settings=Param\u00E8tres d'authentification smtp_bcc=Adresse en copie cach\u00E9e (Bcc) \: smtp_cc=Adresse en copie (CC) \: smtp_default_port=(D\u00E9fauts \: SMTP \: 25, SSL \: 465, StartTLS \: 587) smtp_eml=Envoyer un message .eml \: smtp_enabledebug=Activer les traces de d\u00E9bogage ? smtp_enforcestarttls=Forcer le StartTLS smtp_enforcestarttls_tooltip=Force le serveur a utiliser StartTLS.
        Si il n'est pas s\u00E9lectionn\u00E9 et que le serveur SMTP ne supporte pas StartTLS,
        une connexion SMTP normale sera utilis\u00E9e \u00E0 la place.
        Merci de noter que la case \u00E0 cocher cr\u00E9\u00E9e un fichier dans /tmp/,
        donc cela peut poser des probl\u00E8mes sous Windows. smtp_from=Adresse exp\u00E9diteur (From) \: smtp_header_add=Ajouter une ent\u00EAte smtp_header_name=Nom d'ent\u00EAte smtp_header_remove=Supprimer smtp_header_value=Valeur d'ent\u00EAte smtp_mail_settings=Param\u00E8tres du courriel smtp_message=Message \: smtp_message_settings=Param\u00E8tres du message smtp_messagesize=Calculer la taille du message smtp_password=Mot de passe \: smtp_plainbody=Envoyer le message en texte (i.e. sans multipart/mixed) smtp_replyto=Adresse de r\u00E9ponse (Reply-To) \: smtp_sampler_title=Requ\u00EAte SMTP smtp_security_settings=Param\u00E8tres de s\u00E9curit\u00E9 smtp_server=Serveur \: smtp_server_port=Port \: smtp_server_settings=Param\u00E8tres du serveur smtp_subject=Sujet \: smtp_suppresssubj=Supprimer l'ent\u00EAte Sujet (Subject) smtp_timestamp=Ajouter un horodatage dans le sujet smtp_to=Adresse destinataire (To) \: smtp_trustall=Faire confiance \u00E0 tous les certificats smtp_trustall_tooltip=Forcer JMeter \u00E0 faire confiance \u00E0 tous les certificats, quelque soit l'autorit\u00E9 de certification du certificat. smtp_truststore=Coffre de cl\u00E9s local \: smtp_truststore_tooltip=Le chemin du coffre de confiance.
        Les chemins relatifs sont d\u00E9termin\u00E9s \u00E0 partir du r\u00E9pertoire courant.
        En cas d'\u00E9chec, c'est le r\u00E9pertoire contenant le script JMX qui est utilis\u00E9. smtp_useauth=Utiliser l'authentification smtp_usenone=Pas de fonctionnalit\u00E9 de s\u00E9curit\u00E9 smtp_username=Identifiant \: smtp_usessl=Utiliser SSL smtp_usestarttls=Utiliser StartTLS smtp_usetruststore=Utiliser le coffre de confiance local smtp_usetruststore_tooltip=Autoriser JMeter \u00E0 utiliser le coffre de confiance local. soap_action=Action Soap soap_data_title=Donn\u00E9es Soap/XML-RPC soap_sampler_file_invalid=Le nom de fichier r\u00E9f\u00E9rence un fichier absent ou sans droits de lecture\: soap_sampler_title=Requ\u00EAte SOAP/XML-RPC soap_send_action=Envoyer l'action SOAP \: spline_visualizer_average=Moyenne \: spline_visualizer_incoming=Entr\u00E9e \: spline_visualizer_maximum=Maximum \: spline_visualizer_minimum=Minimum \: spline_visualizer_title=Moniteur de courbe (spline) spline_visualizer_waitingmessage=En attente de r\u00E9sultats d'\u00E9chantillons split_function_separator=S\u00E9parateur utilis\u00E9 pour scinder le texte. Par d\u00E9faut , (virgule) est utilis\u00E9. split_function_string=Texte \u00E0 scinder ssl_alias_prompt=Veuillez entrer votre alias pr\u00E9f\u00E9r\u00E9 ssl_alias_select=S\u00E9lectionner votre alias pour le test ssl_alias_title=Alias du client ssl_error_title=Probl\u00E8me de KeyStore ssl_pass_prompt=Entrer votre mot de passe ssl_pass_title=Mot de passe KeyStore ssl_port=Port SSL sslmanager=Gestionnaire SSL start=Lancer start_no_timers=Lancer sans pauses starttime=Date et heure de d\u00E9marrage \: stop=Arr\u00EAter stopping_test=En train d'\u00E9teindre toutes les unit\u00E9s de tests. Soyez patient, merci. stopping_test_failed=Au moins une unit\u00E9 non arr\u00EAt\u00E9e; voir le journal. stopping_test_title=En train d'arr\u00EAter le test string_from_file_encoding=Encodage du fichier (optionnel) string_from_file_file_name=Entrer le chemin (absolu ou relatif) du fichier string_from_file_seq_final=Nombre final de s\u00E9quence de fichier string_from_file_seq_start=D\u00E9marer le nombre de s\u00E9quence de fichier summariser_title=G\u00E9n\u00E9rer les resultats consolid\u00E9s summary_report=Rapport consolid\u00E9 switch_controller_label=Aller vers le num\u00E9ro d'\u00E9l\u00E9ment (ou nom) subordonn\u00E9 \: switch_controller_title=Contr\u00F4leur Aller \u00E0 system_sampler_title=Appel de processus syst\u00E8me system_sampler_stdin=Entr\u00E9e standard (stdin) \: system_sampler_stdout=Sortie standard (stdout) \: system_sampler_stderr=Erreur standard (stderr) \: table_visualizer_bytes=Octets table_visualizer_latency=Latence table_visualizer_sample_num=Echantillon \# table_visualizer_sample_time=Temps (ms) table_visualizer_start_time=Heure d\u00E9but table_visualizer_status=Statut table_visualizer_success=Succ\u00E8s table_visualizer_thread_name=Nom d'unit\u00E9 table_visualizer_warning=Alerte target_server=Serveur cible tcp_classname=Nom de classe TCPClient \: tcp_config_title=Param\u00E8tres TCP par d\u00E9faut tcp_nodelay=D\u00E9finir aucun d\u00E9lai (NoDelay) tcp_port=Num\u00E9ro de port \: tcp_request_data=Texte \u00E0 envoyer \: tcp_sample_title=Requ\u00EAte TCP tcp_timeout=Expiration (millisecondes) \: teardown_on_shutdown=Ex\u00E9cuter le Groupe d'unit\u00E9s de fin m\u00EAme apr\u00E8s un arr\u00EAt manuel des Groupes d'unit\u00E9s principaux template_field=Canevas \: test=Test test_action_action=Action \: test_action_duration=Dur\u00E9e (millisecondes) \: test_action_pause=Mettre en pause test_action_restart_next_loop=Passer \u00E0 l'it\u00E9ration suivante de la boucle test_action_stop=Arr\u00EAter test_action_stop_now=Arr\u00EAter imm\u00E9diatement test_action_target=Cible \: test_action_target_test=Toutes les unit\u00E9s test_action_target_thread=Unit\u00E9 courante test_action_title=Action test test_configuration=Type de test test_fragment_title=Fragment d'\u00E9l\u00E9ments test_plan=Plan de test test_plan_classpath_browse=Ajouter un r\u00E9pertoire ou un fichier 'jar' au 'classpath' testconfiguration=Tester la configuration testplan.serialized=Lancer les groupes d'unit\u00E9s en s\u00E9rie (c'est-\u00E0-dire \: lance un groupe \u00E0 la fois) testplan_comments=Commentaires \: testt=Test textbox_cancel=Annuler textbox_close=Fermer textbox_save_close=Enregistrer & Fermer textbox_title_edit=Editer texte textbox_title_view=Voir texte textbox_tooltip_cell=Double clic pour voir/editer thread_delay_properties=Propri\u00E9t\u00E9s de temporisation de l'unit\u00E9 thread_group_title=Groupe d'unit\u00E9s thread_properties=Propri\u00E9t\u00E9s du groupe d'unit\u00E9s threadgroup=Groupe d'unit\u00E9s throughput_control_bynumber_label=Ex\u00E9cutions totales throughput_control_bypercent_label=Pourcentage d'ex\u00E9cution throughput_control_perthread_label=Par utilisateur throughput_control_title=Contr\u00F4leur D\u00E9bit throughput_control_tplabel=D\u00E9bit \: time_format=Chaine de formatage sur le mod\u00E8le SimpleDateFormat (optionnel) timelim=Limiter le temps de r\u00E9ponses \u00E0 (ms) toggle=Permuter toolbar_icon_set_not_found=Le fichier de description des ic\u00F4nes de la barre d'outils n'est pas trouv\u00E9. Voir les journaux. tr=Turc transaction_controller_include_timers=Inclure la dur\u00E9e des compteurs de temps et pre/post processeurs dans le calcul du temps transaction_controller_parent=G\u00E9n\u00E9rer en \u00E9chantillon parent transaction_controller_title=Contr\u00F4leur Transaction unbind=D\u00E9connexion de l'unit\u00E9 unescape_html_string=Cha\u00EEne \u00E0 \u00E9chapper unescape_string=Cha\u00EEne de caract\u00E8res contenant des\u00E9chappements Java uniform_timer_delay=D\u00E9lai de d\u00E9calage constant (en millisecondes) \: uniform_timer_memo=Ajoute un d\u00E9lai al\u00E9atoire avec une distribution uniforme uniform_timer_range=D\u00E9viation al\u00E9atoire maximum (en millisecondes) \: uniform_timer_title=Compteur de temps al\u00E9atoire uniforme up=Monter update=Mettre \u00E0 jour update_per_iter=Mettre \u00E0 jour une fois par it\u00E9ration upload=Fichier \u00E0 uploader upper_bound=Borne sup\u00E9rieure url=URL url_config_get=GET url_config_http=HTTP url_config_https=HTTPS url_config_post=POST url_config_protocol=Protocole \: url_config_title=Param\u00E8tres HTTP par d\u00E9faut url_full_config_title=Echantillon d'URL complet url_multipart_config_title=Requ\u00EAte HTTP Multipart par d\u00E9faut use_expires=Utiliser les ent\u00EAtes Cache-Control/Expires lors du traitement des requ\u00EAtes GET use_keepalive=Connexion persist. use_multipart_for_http_post=Multipart/form-data use_multipart_mode_browser=Ent\u00EAtes compat. navigateur use_recording_controller=Utiliser un contr\u00F4leur enregistreur user=Utilisateur user_defined_test=Test d\u00E9fini par l'utilisateur user_defined_variables=Variables pr\u00E9-d\u00E9finies user_param_mod_help_note=(Ne pas changer. A la place, modifier le fichier de ce nom dans le r\u00E9pertoire /bin de JMeter) user_parameters_table=Param\u00E8tres user_parameters_title=Param\u00E8tres Utilisateur userdn=Identifiant username=Nom d'utilisateur \: userpw=Mot de passe value=Valeur \: var_name=Nom de r\u00E9f\u00E9rence \: variable_name_param=Nom de variable (peut inclure une r\u00E9f\u00E9rence de variable ou fonction) view_graph_tree_title=Voir le graphique en arbre view_results_assertion_error=Erreur d'assertion \: view_results_assertion_failure=Echec d'assertion \: view_results_assertion_failure_message=Message d'\u00E9chec d'assertion \: view_results_autoscroll=D\u00E9filement automatique ? view_results_childsamples=Echantillons enfants? view_results_desc=Affiche les r\u00E9sultats d'un \u00E9chantillon dans un arbre de r\u00E9sultats view_results_error_count=Compteur erreur\: view_results_fields=champs \: view_results_in_table=Tableau de r\u00E9sultats view_results_latency=Latence \: view_results_load_time=Temps de r\u00E9ponse \: view_results_render=Rendu \: view_results_render_html=HTML view_results_render_html_embedded=HTML et ressources view_results_render_json=JSON view_results_render_text=Texte brut view_results_render_xml=XML view_results_request_headers=Ent\u00EAtes de requ\u00EAte \: view_results_response_code=Code de retour \: view_results_response_headers=Ent\u00EAtes de r\u00E9ponse \: view_results_response_message=Message de retour \: view_results_response_partial_message=D\u00E9but du message\: view_results_response_too_large_message=R\u00E9ponse d\u00E9passant la taille maximale d'affichage. Taille \: view_results_sample_count=Compteur \u00E9chantillon \: view_results_sample_start=Date d\u00E9but \u00E9chantillon \: view_results_search_pane=Volet recherche view_results_size_body_in_bytes=Taille du corps en octets \: view_results_size_headers_in_bytes=Taille de l'ent\u00EAte en octets \: view_results_size_in_bytes=Taille en octets \: view_results_tab_assertion=R\u00E9sultats d'assertion view_results_tab_request=Requ\u00EAte view_results_tab_response=Donn\u00E9es de r\u00E9ponse view_results_tab_sampler=R\u00E9sultat de l'\u00E9chantillon view_results_table_fields_key=Champ suppl\u00E9mentaire view_results_table_fields_value=Valeur view_results_table_headers_key=Ent\u00EAtes de r\u00E9ponse view_results_table_headers_value=Valeur view_results_table_request_headers_key=Ent\u00EAtes de requ\u00EAte view_results_table_request_headers_value=Valeur view_results_table_request_http_cookie=Cookie view_results_table_request_http_host=H\u00F4te view_results_table_request_http_method=M\u00E9thode view_results_table_request_http_nohttp=N'est pas un \u00E9chantillon HTTP view_results_table_request_http_path=Chemin view_results_table_request_http_port=Port view_results_table_request_http_protocol=Protocole view_results_table_request_params_key=Nom de param\u00E8tre view_results_table_request_params_value=Valeur view_results_table_request_raw_nodata=Pas de donn\u00E9es \u00E0 afficher view_results_table_request_tab_http=HTTP view_results_table_request_tab_raw=Brut view_results_table_result_tab_parsed=D\u00E9cod\u00E9 view_results_table_result_tab_raw=Brut view_results_thread_name=Nom d'unit\u00E9 \: view_results_title=Voir les r\u00E9sultats view_results_tree_title=Arbre de r\u00E9sultats warning=Attention \! web_cannot_convert_parameters_to_raw=Ne peut pas convertir les param\u00E8tres en Donn\u00E9es POST brutes\ncar l'un des param\u00E8tres a un nom. web_cannot_switch_tab=Vous ne pouvez pas basculer car ces donn\u00E9es ne peuvent \u00EAtre converties.\nVider les donn\u00E9es pour basculer. web_parameters_lost_message=Basculer vers les Donn\u00E9es POST brutes va convertir en format brut\net perdre le format tabulaire quand vous s\u00E9lectionnerez un autre noeud\nou \u00E0 la sauvegarde du plan de test, \u00EAtes-vous s\u00FBr ? web_proxy_server_title=Requ\u00EAte via un serveur proxy web_request=Requ\u00EAte HTTP web_server=Serveur web web_server_client=Impl\u00E9mentation client \: web_server_domain=Nom ou adresse IP \: web_server_port=Port \: web_server_timeout_connect=Connexion \: web_server_timeout_response=R\u00E9ponse \: web_server_timeout_title=D\u00E9lai expiration (ms) web_testing2_source_ip=Adresse IP source \: web_testing2_title=Requ\u00EAte HTTP HTTPClient web_testing_concurrent_download=Utiliser pool unit\u00E9. Nbre \: web_testing_embedded_url_pattern=Les URL \u00E0 inclure doivent correspondre \u00E0 \: web_testing_retrieve_images=R\u00E9cup\u00E9rer les ressources incluses web_testing_title=Requ\u00EAte HTTP webservice_configuration_wizard=Assistant de configuration WSDL webservice_get_xml_from_random_title=Utiliser al\u00E9atoirement des messages SOAP webservice_maintain_session=Maintenir la Session HTTP webservice_message_soap=Message WebService webservice_methods=M\u00E9thode(s) WebService \: webservice_proxy_host=H\u00F4te proxy webservice_proxy_note=Si 'utiliser un proxy HTTP' est coch\u00E9e, mais qu'aucun h\u00F4te ou port est fournit, l'\u00E9chantillon webservice_proxy_note2=regardera les options de ligne de commandes. Si aucun h\u00F4te ou port du proxy sont fournit webservice_proxy_note3=non plus, il \u00E9chouera silencieusement. webservice_proxy_port=Port proxy webservice_sampler_title=Requ\u00EAte WebService (SOAP) webservice_soap_action=Action SOAP \: webservice_timeout=D\u00E9lai expiration \: webservice_use_proxy=Utiliser un proxy HTTP while_controller_label=Condition (fonction ou variable) \: while_controller_title=Contr\u00F4leur Tant Que workbench_title=Plan de travail wsdl_helper_error=Le WSDL n'est pas valide, veuillez rev\u00E9rifier l'URL. wsdl_url=URL du WSDL wsdl_url_error=Le WSDL est vide. xml_assertion_title=Assertion XML xml_download_dtds=R\u00E9cup\u00E9rer les DTD externes xml_namespace_button=Utiliser les espaces de noms xml_tolerant_button=Utiliser Tidy (analyseur tol\u00E9rant) xml_validate_button=Validation XML xml_whitespace_button=Ignorer les espaces xmlschema_assertion_label=Nom de fichier \: xmlschema_assertion_title=Assertion Sch\u00E9ma XML xpath_assertion_button=Valider xpath_assertion_check=V\u00E9rifier l'expression XPath xpath_assertion_error=Erreur avec XPath xpath_assertion_failed=Expression XPath invalide xpath_assertion_label=XPath xpath_assertion_negate=Vrai si aucune correspondance trouv\u00E9e xpath_assertion_option=Options d'analyse XML xpath_assertion_test=V\u00E9rificateur XPath xpath_assertion_tidy=Essayer et nettoyer l'entr\u00E9e xpath_assertion_title=Assertion XPath xpath_assertion_valid=Expression XPath valide xpath_assertion_validation=Valider le code XML \u00E0 travers le fichier DTD xpath_assertion_whitespace=Ignorer les espaces xpath_expression=Expression XPath de correspondance xpath_extractor_fragment=Retourner le fragment XPath entier au lieu du contenu xpath_extractor_query=Requ\u00EAte XPath \: xpath_extractor_title=Extracteur XPath xpath_file_file_name=Fichier XML contenant les valeurs xpath_tidy_quiet=Silencieux xpath_tidy_report_errors=Rapporter les erreurs xpath_tidy_show_warnings=Afficher les alertes you_must_enter_a_valid_number=Vous devez entrer un nombre valide zh_cn=Chinois (simplifi\u00E9) zh_tw=Chinois (traditionnel) apache-jmeter-2.8/src/core/org/apache/jmeter/resources/messages_zh_TW.properties0000644000175000017500000010251012032647221027505 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! about=\u95DC\u65BC Apache JMeter add=\u65B0\u589E add_as_child=\u65B0\u589E\u70BA\u5B50\u5143\u4EF6 add_parameter=\u65B0\u589E\u53C3\u6578 add_pattern=\u65B0\u589E\u6A23\u5F0F\: add_test=\u65B0\u589E\u6E2C\u8A66 add_user=\u65B0\u589E\u4F7F\u7528\u8005 add_value=\u65B0\u589E\u503C addtest=\u65B0\u589E\u6E2C\u8A66 aggregate_report=\u5F59\u6574\u5831\u544A aggregate_report_90%_line=90% \u76F4\u7DDA aggregate_report_bandwidth=\u6BCF\u79D2\u4EDF\u4F4D\u5143\u7D44 aggregate_report_count=\u53D6\u6A23\u6578 aggregate_report_error%=\u932F\u8AA4\u7387 aggregate_report_max=\u6700\u5927\u503C aggregate_report_median=\u4E2D\u9593\u503C aggregate_report_min=\u6700\u5C0F\u503C aggregate_report_rate=\u8655\u7406\u91CF aggregate_report_total_label=\u7E3D\u8A08 als_message=\u8A3B\uFF1AAccess Log Parser \u8A2D\u8A08\u6210\u901A\u7528\uFF0C\u4F60\u53EF\u4EE5\u81EA\u884C\u52A0\u5F37\u529F\u80FD als_message2=\u8981\u5BE6\u4F5C LogParser\uFF0C\u4E26\u5C07 jar \u653E\u5728 als_message3=/lib \u76EE\u9304\uFF0C\u7136\u5F8C\u5728\u53D6\u6A23\u4E2D\u8F38\u5165 class \u540D\u7A31 analyze=\u5206\u6790\u8CC7\u6599\u6A94\u6848\u4E2D... anchor_modifier_title=HTML \u93C8\u7D50\u5256\u6790\u5668 argument_must_not_be_negative=\u53C3\u6578\u4E0D\u53EF\u4EE5\u70BA\u8CA0\u503C\uFF01 assertion_assume_success=\u5FFD\u7565\u72C0\u614B assertion_code_resp=\u56DE\u8986\u4EE3\u78BC assertion_contains=\u5305\u542B assertion_matches=\u76F8\u7B26 assertion_message_resp=\u56DE\u8986\u8A0A\u606F assertion_not=\u975E assertion_pattern_match_rules=\u6A23\u5F0F\u6BD4\u5C0D\u898F\u5247 assertion_patterns_to_test=\u6E2C\u8A66\u7528\u6A23\u5F0F assertion_resp_field=\u9808\u6AA2\u67E5\u7684\u56DE\u8986\u6B04\u4F4D assertion_text_resp=\u56DE\u8986\u6587\u5B57 assertion_textarea_label=\u9A57\u8B49\uFF1A assertion_title=\u9A57\u8B49\u56DE\u8986 assertion_url_samp=\u53D6\u6A23\u7684 URL assertion_visualizer_title=\u9A57\u8B49\u7D50\u679C attribute=\u5C6C\u6027 attrs=\u5C6C\u6027 auth_manager_title=HTTP \u6388\u6B0A\u7BA1\u7406\u54E1 auths_stored=\u6388\u6B0A\u7BA1\u7406\u54E1\u4E2D\u8A18\u8F09\u7684\u6388\u6B0A\u8CC7\u6599 average=\u5E73\u5747\u503C bind=\u57F7\u884C\u7DD2\u9023\u7D50 browse=\u700F\u89BD... bsf_sampler_title=BSF \u53D6\u6A23 bsf_script=\u8173\u672C bsf_script_file=\u8173\u672C\u6A94 bsf_script_language=\u8173\u672C\u8A9E\u8A00\uFF1A bsf_script_parameters=\u50B3\u7D66\u8173\u672C(\u6A94\u6848)\u7684\u53C3\u6578\uFF1A bsh_assertion_script=\u8173\u672C bsh_assertion_script_variables=\u56DE\u8986[\u8CC7\u6599|\u4EE3\u78BC|\u8A0A\u606F|\u8868\u982D], \u8981\u6C42\u8868\u982D, \u53D6\u6A23\u6A19\u984C, \u53D6\u6A23\u8CC7\u6599 bsh_assertion_title=BeanShell \u9A57\u8B49 bsh_function_expression=\u88AB\u9A57\u8B49\u7684\u8868\u793A\u5F0F bsh_sampler_title=BeanShell \u53D6\u6A23 bsh_script=\u8173\u672C(\u8B8A\u6578\uFF1A\u53D6\u6A23\u7D50\u679C,\u56DE\u8986\u4EE3\u78BC,\u56DE\u8986\u8A0A\u606F,\u662F\u5426\u6210\u529F,\u6A19\u984C,\u6A94\u540D) bsh_script_file=\u8173\u672C\u6A94\u6848 bsh_script_parameters=\u53C3\u6578(->\u5B57\u4E32\u53C3\u6578\u548C String []bsh.args) busy_testing=\u6211\u6B63\u5FD9\u8457\u6E2C\u5462, \u8981\u6539\u8A2D\u5B9A\u503C\u8ACB\u5148\u505C\u6B62\u6E2C\u8A66 cancel=\u53D6\u6D88 cancel_exit_to_save=\u5C1A\u672A\u5132\u5B58, \u5148\u5132\u5B58\u518D\u96E2\u958B\u597D\u55CE\uFF1F cancel_new_to_save=\u5C1A\u672A\u5132\u5B58, \u5148\u5132\u5B58\u518D\u6E05\u9664\u597D\u55CE\uFF1F choose_function=\u9078\u64C7\u4E00\u500B\u529F\u80FD choose_language=\u9078\u64C7\u4E00\u7A2E\u8A9E\u8A00 clear=\u6E05\u9664 clear_all=\u5168\u90E8\u6E05\u9664 clear_cookies_per_iter=\u6BCF\u56DE\u5408\u90FD\u5148\u6E05\u9664 Cookies\uFF1F column_delete_disallowed=\u6B64\u6B04\u4F4D\u4E0D\u5141\u8A31\u522A\u9664 compare=\u6BD4\u8F03 comparefilt=\u6BD4\u8F03\u904E\u6FFE\u5668 config_element=\u8A2D\u5B9A config_save_settings=\u8A2D\u5B9A configure_wsdl=\u8A2D\u5B9A constant_throughput_timer_memo=\u70BA\u4F7F\u8655\u7406\u91CF\u70BA\u56FA\u5B9A\u503C, \u5728\u53D6\u6A23\u9593\u52A0\u5165\u5EF6\u9072\u6642\u9593 constant_timer_delay=\u5EF6\u9072\u6642\u9593(\u55AE\u4F4D\u662F\u5343\u5206\u4E4B\u4E00\u79D2) constant_timer_memo=\u5728\u53D6\u6A23\u9593\u52A0\u5165\u56FA\u5B9A\u7684\u5EF6\u9072\u6642\u9593 constant_timer_title=\u56FA\u5B9A\u503C\u8A08\u6642\u5668 controller=\u63A7\u5236\u5668 cookie_manager_title=HTTP Cookie \u7BA1\u7406\u54E1 cookies_stored=Cookie \u7BA1\u7406\u54E1\u4E2D\u8A18\u9304\u7684 Cookies copy=\u8907\u88FD counter_config_title=\u8A08\u6578\u5668 counter_per_user=\u6BCF\u500B\u4F7F\u7528\u8005\u7684\u8A08\u6578\u5668 countlim=\u5927\u5C0F\u9650\u5236 cut=\u526A\u4E0B cut_paste_function=\u8907\u88FD\u548C\u8CBC\u4E0A\u5B57\u4E32 database_conn_pool_max_usage=\u6BCF\u500B\u9023\u7DDA\u6700\u5927\u4F7F\u7528\u91CF\uFF1A database_conn_pool_props=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60 database_conn_pool_size=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u4E2D\u7684\u9023\u7DDA\u6578\uFF1A database_conn_pool_title=JDBC \u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u9810\u8A2D\u503C database_driver_class=\u9A45\u52D5\u7A0B\u5F0F Class \uFF1A database_login_title=JDBC \u8CC7\u6599\u5EAB\u767B\u5165\u9810\u8A2D\u503C database_sql_query_string=SQL \u654D\u8FF0\uFF1A database_sql_query_title=JDBC SQL \u654D\u8FF0\u9810\u8A2D\u503C database_testing_title=JDBC \u8981\u6C42 database_url=JDBC URL\uFF1A database_url_jdbc_props=\u8CC7\u6599\u5EAB URL \u548C JDBC \u9A45\u52D5\u7A0B\u5F0F de=\u5FB7\u570B default_parameters=\u9810\u8A2D\u53C3\u6578 default_value_field=\u9810\u8A2D\u503C\uFF1A delay=\u555F\u52D5\u5EF6\u9072\u6642\u9593(\u79D2) delete=\u522A\u9664 delete_parameter=\u522A\u9664\u503C delete_test=\u522A\u9664\u6E2C\u8A66 delete_user=\u522A\u9664\u4F7F\u7528\u8005 deltest=\u522A\u9664\u6E2C\u8A66 deref=\u4E0D\u5F15\u7528\u5225\u540D disable=\u4E0D\u81F4\u80FD distribution_graph_title=\u5206\u6563\u5716\u5F62(alpha) distribution_note1=\u672C\u5716\u65BC\u6BCF10\u500B\u53D6\u6A23\u9032\u884C\u66F4\u65B0 domain=\u7DB2\u57DF done=\u5B8C\u6210 duration=\u671F\u9593 duration_assertion_duration_test=\u88AB\u9A57\u8B49\u7684\u671F\u9593 duration_assertion_failure=\u6B64\u52D5\u4F5C\u592A\u4E45\u4E86,\u61C9\u8A72\u5728{1}\u5FAE\u79D2\u4E4B\u5167\u5B8C\u6210,\u537B\u82B1\u4E86{0}\u5FAE\u79D2 duration_assertion_input_error=\u8ACB\u8F38\u5165\u5408\u6CD5\u6B63\u6574\u6578\u503C duration_assertion_label=\u671F\u9593(\u5FAE\u79D2) duration_assertion_title=\u9A57\u8B49\u671F\u9593 edit=\u7DE8\u8F2F email_results_title=\u96FB\u90F5\u7D50\u679C en=\u82F1\u6587 enable=\u555F\u52D5 encode?=\u7DE8\u78BC\uFF1F encoded_value=URL \u7DE8\u78BC\u503C endtime=\u7D50\u675F\u6642\u9593 entry_dn=\u9032\u5165 DN entrydn=\u9032\u5165 DN error_loading_help=\u8F09\u5165\u8F14\u52A9\u8AAA\u660E\u5931\u6557 error_occurred=\u767C\u751F\u932F\u8AA4 example_data=\u8CC7\u6599\u7BC4\u4F8B example_title=\u53D6\u6A23\u7BC4\u4F8B exit=\u96E2\u958B expiration=\u5230\u671F field_name=\u6B04\u4F4D\u540D\u7A31 file=\u6A94\u6848 file_already_in_use=\u6A94\u6848\u5DF2\u5728\u4F7F\u7528\u4E2D file_visualizer_append=\u52A0\u5165\u65E2\u6709\u7684\u6A94\u6848 file_visualizer_auto_flush=\u53D6\u5F97\u6BCF\u8CC7\u6599\u5F8C\u81EA\u52D5 Flush file_visualizer_browse=\u700F\u89BD file_visualizer_close=\u95DC\u9589 file_visualizer_file_options=\u6A94\u6848\u9078\u9805 file_visualizer_filename=\u6A94\u540D file_visualizer_missing_filename=\u6A94\u540D\u672A\u6307\u5B9A file_visualizer_open=\u958B\u555F file_visualizer_output_file=\u5C07\u5168\u90E8\u8CC7\u6599\u5BEB\u6210\u6A94\u6848 file_visualizer_submit_data=\u5305\u542B\u5DF2\u50B3\u9001\u8CC7\u6599 file_visualizer_title=\u6A94\u6848\u5831\u544A\u54E1 file_visualizer_verbose=\u700F\u89BD\u8F38\u51FA filename=\u6A94\u540D follow_redirects=\u8DDF\u96A8\u91CD\u5C0E follow_redirects_auto=\u81EA\u52D5\u8DDF\u96A8\u91CD\u5C0E foreach_controller_title=ForEach \u63A7\u5236\u5668 foreach_input=\u8B8A\u6578\u524D\u7F6E\u5B57\u4E32 foreach_output=\u8F38\u51FA\u8B8A\u6578\u540D\u7A31 foreach_use_separator=\u5728\u7DE8\u865F\u524D\u52A0\u4E0A\u5E95\u7DDA\u7B26\u865F\uFF1F fr=\u6CD5\u6587 ftp_sample_title=FTP \u8981\u6C42\u9810\u8A2D\u503C ftp_testing_title=FTP \u8981\u6C42 function_dialog_menu_item=\u529F\u80FD\u8F14\u52A9\u8AAA\u660E\u5C0D\u8A71 function_helper_title=\u529F\u80FD\u8F14\u52A9\u8AAA\u660E function_name_param=\u529F\u80FD\u540D\u7A31. \u6703\u51FA\u73FE\u5728\u6574\u4EFD\u6E2C\u8A66\u8A08\u756B\u4E2D function_params=\u529F\u80FD\u53C3\u6578 functional_mode=\u529F\u80FD\u6027\u6E2C\u8A66\u6A21\u5F0F functional_mode_explanation=\u53EA\u6709\u5728\u9700\u8981\u5C07\u6240\u6709\u56DE\u8986\u90FD\u5B58\u6210\u6A94\u6848\u6642\u624D\u9078\u7528\u9019\u7A2E\u6A21\u5F0F\n\n\u9078\u7528\u9019\u7A2E\u6A21\u5F0F\u5C0D\u6548\u80FD\u6703\u6709\u986F\u8457\u5F71\u97FF gaussian_timer_delay=\u5B9A\u503C\u5EF6\u9072\u5DEE(\u5FAE\u79D2) gaussian_timer_memo=\u4EE5\u9AD8\u65AF\u5206\u914D\u6CD5\u52A0\u5165\u96A8\u6A5F\u5EF6\u9072\u6642\u9593 gaussian_timer_range=\u96E2\u5DEE(\u5FAE\u79D2) gaussian_timer_title=\u9AD8\u65AF\u96A8\u6A5F\u8A08\u6642\u5668 generate=\u7522\u751F generator=\u9AD8\u65AF\u6CD5 class \u540D\u7A31 generator_cnf_msg=\u627E\u4E0D\u5230\u7522\u751F\u5668 class. \u8ACB\u78BA\u8A8D jar \u6A94\u653E\u5728 /lib \u76EE\u9304 generator_illegal_msg=\u7121\u6CD5\u5B58\u53D6\u7522\u751F\u5668 class (iIllegalAcessException) generator_instantiate_msg=\u7121\u6CD5\u4F7F\u7528\u7522\u751F\u5668, \u8ACB\u78BA\u8A8D\u5DF2\u5BE6\u4F5C Generator \u4ECB\u9762 get_xml_from_file=SOAP XML \u6A94(\u53D6\u4EE3\u4E0A\u9762\u6587\u5B57) get_xml_from_random=\u8A0A\u606F\u8CC7\u6599\u593E graph_choose_graphs=\u8981\u986F\u793A\u7684\u5716\u5F62 graph_full_results_title=\u5B8C\u6574\u7D50\u679C\u5716\u5F62 graph_results_average=\u5E73\u5747 graph_results_data=\u8CC7\u6599 graph_results_deviation=\u8B8A\u7570\u5DEE graph_results_latest_sample=\u6700\u8FD1\u7684\u53D6\u6A23 graph_results_median=\u4E2D\u9593\u503C graph_results_ms=\u5FAE\u79D2 graph_results_no_samples=\u53D6\u6A23\u7684\u7DE8\u865F graph_results_throughput=\u8655\u7406\u91CF graph_results_title=\u7D50\u679C\u5716\u5F62 grouping_add_separators=\u7FA4\u7D44\u9593\u7684\u5206\u9694\u7DDA grouping_in_controllers=\u6BCF\u500B\u7FA4\u7D44\u5206\u653E\u81F3\u4E0D\u540C\u63A7\u5236\u5668 grouping_mode=\u7FA4\u7D44\uFF1A grouping_no_groups=\u4E0D\u8981\u5C07\u53D6\u6A23\u5206\u7FA4\u7D44 grouping_store_first_only=\u50C5\u5132\u5B58\u6BCF\u500B\u7FA4\u7D44\u7684\u7B2C\u4E00\u500B\u53D6\u6A23 header_manager_title=HTTP \u6A19\u982D\u7BA1\u7406\u54E1 headers_stored=\u6A19\u982D\u7BA1\u7406\u54E1\u4E2D\u5132\u5B58\u7684\u6A19\u982D\u8CC7\u6599 help=\u8F14\u52A9\u8AAA\u660E html_assertion_label=HTML \u9A57\u8B49 html_assertion_title=HTML \u9A57\u8B49 html_parameter_mask=HTML \u53C3\u6578\u906E\u7F69 http_response_code=HTTP \u56DE\u61C9\u4EE3\u78BC http_url_rewriting_modifier_title=HTTP URL \u91CD\u5C0E\u4FEE\u98FE\u8A5E http_user_parameter_modifier=HTTP \u4F7F\u7528\u8005\u53C3\u6578\u4FEE\u98FE\u8A5E id_prefix=ID \u524D\u7F6E\u5B57\u4E32 id_suffix=ID \u5F8C\u7F6E\u5B57\u4E32 if_controller_label=\u689D\u4EF6 if_controller_title=\u82E5...\u63A7\u5236\u5668 ignore_subcontrollers=\u5FFD\u7565\u5B50\u63A7\u5236\u5668\u5167\u5BB9 include_equals=\u5305\u542B\u76F8\u7B49\uFF1F increment=\u589E\u91CF infinite=\u6C38\u4E45 insert_after=\u52A0\u5728\u4E4B\u5F8C insert_before=\u52A0\u5728\u4E4B\u524D insert_parent=\u52A0\u5230\u4E0A\u4E00\u968E\u5C64 interleave_control_title=\u4EA4\u932F\u63A7\u5236\u5668 intsum_param_1=\u7B2C\u4E00\u500B\u6574\u6578\u53C3\u6578 intsum_param_2=\u7B2C\u4E8C\u500B\u6574\u6578\u53C3\u6578\u2500\u5176\u4ED6\u7684\u6574\u6578\u53EF\u4EE5\u7531\u65B0\u589E\u7684\u53C3\u6578\u52A0\u7E3D invalid_data=\u7121\u6548\u8CC7\u6599 invalid_mail=\u50B3\u9001\u96FB\u90F5\u6642\u767C\u751F\u932F\u8AA4 invalid_mail_address=\u5075\u6E2C\u5230\u4E00\u500B\u4EE5\u4E0A\u7684\u7121\u6548\u96FB\u90F5\u5730\u5740 invalid_mail_server=\u7121\u6CD5\u9023\u4E0A\u96FB\u90F5\u4F3A\u670D\u5668(\u8A73\u898BJMeter\u6B77\u7A0B\u6A94) iteration_counter_arg_1=\u6BCF\u500B\u4F7F\u7528\u8005\u4F7F\u7528\u4E0D\u540C\u8A08\u6578\u5668(TRUE)\u6216\u5171\u7528\u4E00\u500B\u5168\u57DF\u8A08\u6578\u5668(FALSE) iterator_num=\u8FF4\u5708\u6B21\u6578\uFF1A java_request=Java \u8981\u6C42 java_request_defaults=Java \u8981\u6C42\u9810\u8A2D\u503C jms_auth_required=\u5FC5\u8981 jms_client_caption=\u63A5\u6536\u7AEF\u900F\u904ETopicSubscriber.receive()\u63A5\u807D\u8A0A\u606F jms_client_caption2=MessageListener\u900F\u904EonMessage(Message\u4ECB\u9762\u63A5\u807D\u8A0A\u606F jms_client_type=\u7528\u6236\u7AEF jms_communication_style=\u6E9D\u901A\u6A21\u5F0F jms_concrete_connection_factory=\u5805\u56FA\u9023\u7DDA\u5DE5\u5EE0 jms_config=\u8A2D\u7F6E jms_config_title=JMS \u8A2D\u7F6E jms_connection_factory=\u9023\u7DDA\u5DE5\u5EE0 jms_file=\u6A94\u6848 jms_initial_context_factory=JNDI \u521D\u59CB\u672C\u6587\u5DE5\u5EE0 jms_itertions=\u8981\u7D2F\u8A08\u7684\u53D6\u6A23\u6578 jms_jndi_defaults_title=JNDI \u9810\u8A2D\u914D\u7F6E jms_jndi_props=JNDI \u5C6C\u6027 jms_message_title=\u8A0A\u606F jms_message_type=\u8A0A\u606F\u7A2E\u985E jms_msg_content=\u8A0A\u606F\u5167\u5BB9 jms_object_message=\u7269\u4EF6\u8A0A\u606F jms_props=JMS \u5C6C\u6027 jms_provider_url=\u63D0\u4F9B\u8005 URL jms_publisher=JMS \u767C\u4F48\u8005 jms_pwd=\u5BC6\u78BC jms_queue=\u4F47\u5217 jms_queue_connection_factory=\u4F47\u5217\u9023\u7DDA\u5DE5\u5EE0 jms_queueing=JMS \u8CC7\u6E90 jms_random_file=\u96A8\u6A5F\u6A94\u6848 jms_read_response=\u8B80\u53D6\u56DE\u8986 jms_receive_queue=\u63A5\u6536\u4F47\u5217 jms_request=\u55AE\u5411\u8981\u6C42 jms_requestreply=\u8981\u6C42\u4E14\u56DE\u8986 jms_sample_title=JMS \u9810\u8A2D\u8981\u6C42 jms_send_queue=\u50B3\u9001\u4F47\u5217 jms_subscriber_on_message=\u4F7F\u7528 MessageListener.onMessage() jms_subscriber_receive=\u4F7F\u7528 TopicSubscriber.receive() jms_subscriber_title=JMS \u8A02\u95B1\u8005 jms_testing_title=\u8981\u6C42\u8A0A\u606F jms_text_message=\u6587\u5B57\u8A0A\u606F jms_timeout=\u903E\u6642 jms_topic=\u984C\u76EE jms_use_file=\u5F9E\u6A94\u6848 jms_use_properties_file=\u4F7F\u7528 jndi.properties \u6A94 jms_use_random_file=\u96A8\u6A5F\u6A94\u6848 jms_use_text=\u6587\u5B57\u5340\u57DF jms_user=\u4F7F\u7528\u8005 jndi_config_title=JNDI \u914D\u7F6E jndi_lookup_name=\u9060\u7AEF\u4ECB\u9762 jndi_lookup_title=JNDI \u5C0B\u67E5\u914D\u7F6E jndi_method_button_invoke=\u8D77\u52D5 jndi_method_button_reflect=\u53CD\u6620 jndi_method_home_name=\u672C\u7AEF\u65B9\u6CD5 jndi_method_home_parms=\u672C\u7AEF\u65B9\u6CD5\u53C3\u6578 jndi_method_name=\u65B9\u6CD5\u914D\u7F6E jndi_method_remote_interface_list=\u9060\u7AEF\u4ECB\u9762 jndi_method_remote_name=\u9060\u7AEF\u65B9\u6CD5\u540D\u7A31 jndi_method_remote_parms=\u9060\u7AEF\u65B9\u6CD5\u53C3\u6578 jndi_method_title=\u9060\u7AEF\u65B9\u6CD5\u914D\u7F6E jndi_testing_title=JNDI \u8981\u6C42 jndi_url_jndi_props=JNDI \u5C6C\u6027 ja=\u65E5\u6587 ldap_argument_list=LDAP\u53C3\u6578\u5217\u8868 ldap_sample_title=LDAP \u8981\u6C42\u9810\u8A2D\u503C ldap_testing_title=LDAP \u8981\u6C42 ldapext_sample_title=LDAP \u5EF6\u4F38\u8981\u6C42\u9810\u8A2D\u503C ldapext_testing_title=LDAP \u5EF6\u4F38\u8981\u6C42 load=\u8F09\u5165 load_wsdl=\u8F09\u5165 WSDL log_errors_only=\u53EA\u8A18\u9304\u932F\u8AA4 log_file=\u6B77\u7A0B\u6A94\u4F4D\u7F6E log_parser=\u6B77\u7A0B\u6A94\u5256\u6790\u7A0B\u5F0F log_parser_cnf_msg=\u627E\u4E0D\u5230\u8A72 class, \u8ACB\u78BA\u5B9A jar \u6A94\u653E\u5728 /lib \u76EE\u9304\u4E0B log_parser_illegal_msg=\u7121\u6CD5\u5B58\u53D6 class (IllegalAcessException) log_parser_instantiate_msg=\u7121\u6CD5\u5EFA\u7ACB log parser. \u8ACB\u5B9A\u6709\u5BE6\u4F5C LogParser \u4ECB\u9762 log_sampler=Tomcat \u5B58\u53D6\u8A18\u9304\u5256\u6790\u5668 logic_controller_title=\u7C21\u6613\u63A7\u5236\u5668 login_config=\u767B\u5165\u914D\u7F6E login_config_element=\u767B\u5165\u914D\u7F6E\u5143\u7D20 loop_controller_title=\u8FF4\u5708\u63A7\u5236\u5668 looping_control=\u8FF4\u5708\u63A7\u5236 lower_bound=\u4F4E\u9650 mail_reader_account=\u4F7F\u7528\u8005 mail_reader_all_messages=\u5168\u90E8 mail_reader_delete=\u5F9E\u4F3A\u670D\u5668\u522A\u9664 mail_reader_folder=\u8CC7\u6599\u593E mail_reader_num_messages=\u5F85\u63A5\u6536\u8A0A\u606F\u6578 mail_reader_password=\u5BC6\u78BC mail_reader_server=\u4F3A\u670D\u5668 mail_reader_server_type=\u4F3A\u670D\u5668\u7A2E\u985E mail_reader_title=\u90F5\u4EF6\u8B80\u53D6\u8005\u53D6\u6A23 mail_sent=\u90F5\u4EF6\u50B3\u9001\u6210\u529F mailer_attributes_panel=\u90F5\u5BC4\u5C6C\u6027 mailer_error=\u7121\u6CD5\u5BC4\u51FA. \u8ACB\u66F4\u6B63\u932F\u8AA4\u503C mailer_visualizer_title=\u90F5\u4EF6\u8996\u89BA\u5316 match_num_field=\u7B26\u5408\u6578\u5B57(0\u8868\u793A\u96A8\u6A5F) max=\u6700\u5927\u503C maximum_param=\u5141\u8A31\u7BC4\u570D\u4E2D\u7684\u6700\u5927\u503C md5hex_assertion_failure=\u9A57\u8B49 MD5 \u932F\u8AA4,\u61C9\u8A72\u662F{1}\u537B\u5F97\u5230{0} md5hex_assertion_md5hex_test=\u88AB\u9A57\u8B49\u7684 MD5Hex md5hex_assertion_title=MD5Hex \u9A57\u8B49 memory_cache=\u8A18\u61B6\u5FEB\u53D6 menu_assertions=\u9A57\u8B49 menu_close=\u95DC\u9589 menu_config_element=\u8A2D\u5B9A\u5143\u7D20 menu_edit=\u7DE8\u8F2F menu_generative_controller=\u53D6\u6A23 menu_listener=\u63A5\u807D menu_logic_controller=\u908F\u8F2F\u63A7\u5236\u5668 menu_merge=\u5408\u4F75 menu_modifiers=\u4FEE\u98FE\u5143 menu_non_test_elements=\u975E\u6E2C\u8A66\u5143\u7D20 menu_open=\u958B\u555F menu_post_processors=\u5F8C\u7F6E\u8655\u7406\u5668 menu_pre_processors=\u524D\u7F6E\u8655\u7406\u5668 menu_response_based_modifiers=\u4EE5\u56DE\u8986\u70BA\u57FA\u6E96\u7684\u4FEE\u98FE\u5143 menu_timer=\u8A08\u6642\u5668 metadata=\u8CC7\u6599\u5B9A\u7FA9 method=\u65B9\u6CD5 mimetype=MIME\u7A2E\u985E minimum_param=\u5141\u8A31\u7BC4\u570D\u4E2D\u7684\u6700\u5C0F\u503C minute=\u5206\u9418 modddn=\u820A\u8F38\u5165\u540D\u7A31 modification_controller_title=\u4FEE\u98FE\u63A7\u5236\u5668 modification_manager_title=\u4FEE\u98FE\u7BA1\u7406\u54E1 modify_test=\u4FEE\u98FE\u6E2C\u8A66 modtest=\u4FEE\u98FE\u6E2C\u8A66 module_controller_title=\u6A21\u7D44\u63A7\u5236\u5668 monitor_equation_active=\u6B63\u5E38\u904B\u4F5C (\u5FD9\u788C/\u6700\u5927) \u5927\u65BC 25 % monitor_equation_dead=\u505C\u6A5F \: \u6C92\u6709\u56DE\u61C9 monitor_equation_healthy=\u5065\u5EB7 (\u5FD9\u788C/\u6700\u5927) < 25% monitor_equation_load=\u8CA0\u8F09 ( (busy / max) * 50) + ( (used memory / max memory) * 50) monitor_equation_warning=\u8B66\u544A (busy/max) > 67% monitor_health_tab_title=\u5065\u5EB7 monitor_health_title=\u76E3\u8996\u7D50\u679C monitor_is_title=\u7576\u6210\u76E3\u8996\u5668 monitor_label_right_active=\u6B63\u5E38\u904B\u4F5C monitor_label_right_dead=\u505C\u6A5F monitor_label_right_healthy=\u5065\u5EB7 monitor_label_right_warning=\u8B66\u793A monitor_legend_health=\u5065\u5EB7 monitor_legend_load=\u8CA0\u8F09 monitor_legend_memory_per=\u8A18\u61B6\u9AD4\u4F7F\u7528\u7387 % (userd/total) monitor_legend_thread_per=\u57F7\u884C\u7DD2 % (busy/max) monitor_performance_servers=\u4F3A\u670D\u5668 monitor_performance_tab_title=\u6548\u80FD monitor_performance_title=\u6548\u80FD\u5716\u5F62 name=\u540D\u7A31 new=\u65B0 newdn=\u65B0\u7684\u8B58\u5225\u540D\u7A31 no=\u632A\u5A01 number_of_threads=\u57F7\u884C\u7DD2\u6578\u91CF once_only_controller_title=\u53EA\u6709\u4E00\u6B21\u63A7\u5236\u5668 open=\u958B\u555F... option=\u9078\u9805 optional_tasks=\u9078\u64C7\u6027\u5DE5\u4F5C paramtable=\u9001\u51FA\u542B\u53C3\u6578\u7684\u8981\u6C42 password=\u5BC6\u78BC paste=\u8CBC\u4E0A paste_insert=\u8CBC\u4E0A(\u63D2\u5165) path=\u8DEF\u5F91 path_extension_choice=\u5EF6\u4F38\u8DEF\u5F91(\u4F7F\u7528\u5206\u865F\u505A\u70BA\u5206\u9694\u865F) path_extension_dont_use_equals=\u4E0D\u8981\u5728\u5EF6\u4F38\u8DEF\u5F91\u4E2D\u4F7F\u7528\u7B49\u865F(Intershop Enfinity compatibility) path_extension_dont_use_questionmark=\u4E0D\u8981\u5728\u5EF6\u4F38\u8DEF\u5F91\u4E2D\u4F7F\u7528\u554F\u865F(Intershop Enfinity compatibility) patterns_to_exclude=\u9664\u5916\u7684\u578B\u5F0F patterns_to_include=\u8981\u5305\u542B\u7684\u578B\u5F0F port=\u7AEF\u53E3 property_default_param=\u9810\u8A2D\u503C property_edit=\u7DE8\u8F2F property_editor.value_is_invalid_message=\u7531\u65BC\u4F60\u7684\u8F38\u5165\u503C\u4E0D\u5408\u6CD5.\u81EA\u52D5\u56DE\u5FA9\u5230\u539F\u503C property_editor.value_is_invalid_title=\u7121\u6548\u8F38\u5165 property_name_param=\u5C6C\u6027\u540D\u7A31 property_undefined=\u672A\u5B9A\u7FA9 protocol=\u5354\u5B9A protocol_java_config_tile=\u8A2D\u5B9A Java \u7BC4\u4F8B protocol_java_test_title=Java \u6E2C\u8A66 proxy_assertions=\u589E\u52A0\u9A57\u8B49 proxy_cl_error=\u82E5\u8981\u6307\u5B9A\u4EE3\u7406\u4F3A\u670D\u5668,\u9808\u63D0\u4F9B\u4E3B\u6A5F\u540D\u7A31\u548C\u7AEF\u53E3 proxy_headers=\u622A\u53D6 HTTP \u8868\u982D proxy_separators=\u589E\u52A0\u5206\u9694 proxy_target=\u76EE\u6A19\u63A7\u5236\u5668 proxy_title=HTTP \u4EE3\u7406\u4F3A\u670D\u5668 ramp_up=\u555F\u52D5\u5EF6\u9072(\u79D2) random_control_title=\u96A8\u6A5F\u63A7\u5236\u5668 random_order_control_title=\u96A8\u6A5F\u9806\u5E8F\u63A7\u5236\u5668 read_response_message=\u56DE\u8986\u4E0D\u6703\u88AB\u6AA2\u67E5. \u8981\u770B\u5230\u56DE\u8986\u7684\u8A71, \u8ACB\u9078\u53D6\u53D6\u6A23\u4E2D\u7684\u9078\u53D6\u5340 read_response_note=\u5982\u679C\u6C92\u9EDE\u9078 read response, \u53D6\u6A23\u5C07\u4E0D\u6703\u8B80\u53D6\u56DE\u8986\u8CC7\u6599 read_response_note2=\u4E5F\u4E0D\u6703\u8A2D\u5B9A SampleResult. \u5982\u6B64\u53EF\u4EE5\u6539\u5584\u6548\u80FD, \u4F46\u4E5F\u8868\u793A read_response_note3=\u5C07\u4E0D\u6703\u8A18\u9304\u56DE\u8986\u7684\u5167\u5BB9 read_soap_response=\u8B80\u53D6 SOAP \u56DE\u8986 record_controller_title=\u9304\u88FD\u63A7\u5236\u5668 ref_name_field=\u53C3\u7167\u540D\u7A31 regex_extractor_title=\u6B63\u898F\u8868\u793A\u5F0F\u5256\u6790\u5668 regex_field=\u6B63\u898F\u8868\u793A\u5F0F regex_source=\u6B63\u898F\u8868\u793A\u5F0F\u6B04\u4F4D regex_src_body=\u672C\u6587 regex_src_hdrs=\u8868\u982D remote_exit=\u9060\u7AEF\u96E2\u958B remote_exit_all=\u9060\u7AEF\u96E2\u958B\u5168\u90E8 remote_start=\u9060\u7AEF\u555F\u52D5 remote_start_all=\u9060\u7AEF\u555F\u52D5\u5168\u90E8 remote_stop=\u9060\u7AEF\u505C\u6B62 remote_stop_all=\u9060\u7AEF\u505C\u6B62\u5168\u90E8 remove=\u79FB\u9664 rename=\u66F4\u540D report=\u5831\u544A request_data=\u8981\u6C42\u8CC7\u6599 restart=\u91CD\u65B0\u555F\u52D5 resultaction_title=\u7D50\u679C\u72C0\u614B\u52D5\u4F5C\u8655\u7406\u5668 resultsaver_errors=\u53EA\u5132\u5B58\u5931\u6557\u7684\u56DE\u8986 resultsaver_prefix=\u6A94\u540D\u524D\u7F6E\u5B57\u4E32 resultsaver_title=\u5C07\u56DE\u8986\u5B58\u5230\u6A94\u6848 retobj=\u50B3\u56DE\u7269\u4EF6 root=\u6839 root_title=\u6839 run=\u57F7\u884C running_test=\u57F7\u884C\u6E2C\u8A66 runtime_controller_title=\u57F7\u884C\u6642\u671F\u63A7\u5236\u5668 runtime_seconds=\u57F7\u884C\u6642\u671F(\u79D2) sample_result_save_configuration=\u53D6\u6A23\u7D50\u679C\u5132\u5B58\u914D\u7F6E sampler_on_error_action=\u53D6\u6A23\u932F\u8AA4\u5F8C\u63A1\u53D6\u7684\u52D5\u4F5C sampler_on_error_continue=\u7E7C\u7E8C sampler_on_error_stop_test=\u505C\u6B62\u6E2C\u8A66 sampler_on_error_stop_thread=\u505C\u6B62\u57F7\u884C\u7DD2 save=\u5132\u5B58\u6E2C\u8A66\u8A08\u756B save?=\u5132\u5B58\uFF1F save_all_as=\u5C07\u6E2C\u8A66\u8A08\u756B\u5132\u5B58\u6210... save_as=\u5132\u5B58\u6210... save_as_image=\u5132\u5B58\u6210\u5716\u5F62 save_assertionresultsfailuremessage=\u5132\u5B58\u9A57\u8B49\u7D50\u679C\u5931\u6557\u8A0A\u606F save_assertions=\u5132\u5B58\u9A57\u8B49\u7D50\u679C save_asxml=\u5132\u5B58\u6210 XML save_code=\u5132\u5B58\u56DE\u8986\u4EE3\u78BC save_datatype=\u5132\u5B58\u8CC7\u6599\u578B\u614B save_encoding=\u5132\u5B58\u7DE8\u78BC save_fieldnames=\u5132\u5B58\u6B04\u4F4D\u540D\u7A31 save_graphics=\u5132\u5B58\u5716\u5F62 save_label=\u5132\u5B58\u6A19\u984C save_latency=\u5132\u5B58 Latency save_message=\u5132\u5B58\u56DE\u8986\u8A0A\u606F save_requestheaders=\u5132\u5B58\u8981\u6C42\u8868\u982D save_responsedata=\u5132\u5B58\u56DE\u8986\u8CC7\u6599 save_responseheaders=\u5132\u5B58\u56DE\u8986\u8868\u982D save_samplerdata=\u5132\u5B58\u53D6\u6A23\u8CC7\u6599 save_subresults=\u5132\u5B58\u5B50\u7D50\u679C save_success=\u5132\u5B58\u6210\u529F save_threadname=\u5132\u5B58\u57F7\u884C\u7DD2\u540D\u7A31 save_time=\u5132\u5B58\u6642\u9593 save_timestamp=\u5132\u5B58\u6642\u9593\u6233\u8A18 sbind=\u55AE\u4E00\u7E6B\u7D50/\u4E0D\u7E6B\u7D50 scheduler=\u5B9A\u6642\u5668 scheduler_configuration=\u5B9A\u6642\u5668\u914D\u7F6E scope=\u7BC4\u570D search_base=\u641C\u5C0B\u57FA\u6E96 search_filter=\u641C\u5C0B\u904E\u6FFE\u689D\u4EF6 search_test=\u641C\u5C0B\u6E2C\u8A66 searchbase=\u641C\u5C0B\u57FA\u6E96 searchfilter=\u641C\u5C0B\u904E\u6FFE\u689D\u4EF6 searchtest=\u641C\u5C0B\u6E2C\u8A66 second=\u79D2 secure=\u5B89\u5168 send_file=\u8207\u8981\u6C42\u4E00\u540C\u50B3\u9001\u6A94\u6848 send_file_browse=\u700F\u89BD... send_file_filename_label=\u6A94\u540D send_file_mime_label=MIME \u578B\u5F0F send_file_param_name_label=\u53C3\u6578\u540D\u7A31 server=\u4F3A\u670D\u5668\u540D\u7A31\u6216 IP servername=\u4F3A\u670D\u5668\u540D\u7A31 session_argument_name=\u9023\u7DDA\u968E\u6BB5\u53C3\u6578\u540D\u7A31 should_save=\u57F7\u884C\u6E2C\u8A66\u524D\u8981\u5148\u5C07\u6E2C\u8A66\u8173\u672C\u5B58\u6A94. \u5C24\u5176\u662F\u7576\u4F60\u4F7F\u7528 CSV Data Set \u6216 _StringFromFile \u6642 shutdown=\u95DC\u9589 simple_config_element=\u7C21\u6613\u8A2D\u7F6E\u5143\u7D20 simple_data_writer_title=\u7C21\u6613\u8CC7\u6599\u5BEB\u4F5C\u8005 size_assertion_comparator_error_equal=\u7B49\u65BC size_assertion_comparator_error_greater=\u5927\u65BC size_assertion_comparator_error_greaterequal=\u5927\u65BC\u6216\u7B49\u65BC size_assertion_comparator_error_less=\u5C0F\u65BC size_assertion_comparator_error_lessequal=\u5C0F\u65BC\u6216\u7B49\u65BC size_assertion_comparator_error_notequal=\u4E0D\u7B49\u65BC size_assertion_comparator_label=\u6BD4\u8F03\u7684\u985E\u5225 size_assertion_failure=\u5927\u5C0F\u932F\u8AA4, \u61C9\u8A72\u6709 {1}{2}\u4F4D\u5143\u7D44, \u537B\u6709 {0} \u4F4D\u5143\u7D44 size_assertion_input_error=\u8ACB\u8F38\u5165\u6709\u6548\u6B63\u6574\u6578 size_assertion_label=\u5927\u5C0F(\u4F4D\u5143\u7D44) size_assertion_size_test=\u9A57\u8B49\u5927\u5C0F size_assertion_title=\u9A57\u8B49\u5927\u5C0F soap_action=Soap \u52D5\u4F5C soap_data_title=Soap/XML-RPC \u8CC7\u6599 soap_sampler_title=SOAP/XML-RPC \u8981\u6C42 spline_visualizer_average=\u5E73\u5747 spline_visualizer_incoming=\u6B63\u4F86\u81E8\u7684 spline_visualizer_maximum=\u6700\u5927\u503C spline_visualizer_minimum=\u6700\u5C0F\u503C spline_visualizer_title=\u6A23\u689D\u5716 spline_visualizer_waitingmessage=\u7B49\u5F85\u53D6\u6A23\u7D50\u679C ssl_alias_prompt=\u8ACB\u8F38\u5165\u9810\u9078\u7684 alias ssl_alias_select=\u8ACB\u9078\u64C7\u6E2C\u8A66\u8981\u7528\u7684 alias ssl_error_title=KeyStore \u554F\u984C ssl_pass_prompt=\u8ACB\u8F38\u5165\u5BC6\u78BC ssl_pass_title=KeyStore \u5BC6\u78BC ssl_port=SSL \u7AEF\u53E3 sslmanager=SSL \u7BA1\u7406\u54E1 start=\u958B\u59CB starttime=\u958B\u59CB\u6642\u9593 stop=\u505C\u6B62 stopping_test=\u6B63\u5728\u505C\u6B62\u6240\u6709\u6E2C\u8A66\u7DD2. \u8ACB\u8010\u5FC3\u7B49\u5F85 stopping_test_title=\u505C\u6B62\u6E2C\u8A66 string_from_file_file_name=\u8F38\u5165\u6A94\u6848\u5B8C\u6574\u8DEF\u5F91 string_from_file_seq_final=\u6A94\u6848\u5E8F\u865F(\u7D50\u675F) string_from_file_seq_start=\u6A94\u6848\u5E8F\u865F(\u958B\u59CB) summariser_title=\u7522\u751F\u7E3D\u8A08\u7D50\u679C switch_controller_label=\u5207\u63DB\u503C switch_controller_title=\u5207\u63DB\u63A7\u5236\u5668 table_visualizer_bytes=\u4F4D\u5143\u7D44 table_visualizer_sample_num=\u53D6\u6A23\u7DE8\u865F \# table_visualizer_sample_time=\u53D6\u6A23\u6642\u9593(\u5FAE\u79D2) tcp_config_title=TCP \u53D6\u6A23\u8A2D\u5B9A tcp_nodelay=\u8A2D\u70BA\u4E0D\u5EF6\u9072 tcp_port=\u7AEF\u53E3\u865F\u78BC tcp_request_data=\u6B32\u50B3\u9001\u6587\u5B57 tcp_sample_title=TCP \u53D6\u6A23 tcp_timeout=\u903E\u6642(\u5FAE\u79D2) template_field=\u7BC4\u672C test=\u6E2C\u8A66 testconfiguration=\u6E2C\u8A66\u914D\u7F6E test_action_action=\u52D5\u4F5C test_action_duration=\u671F\u9593 test_action_pause=\u66AB\u505C test_action_stop=\u505C\u6B62 test_action_target=\u6A19\u7684 test_action_target_test=\u6240\u6709\u57F7\u884C\u7DD2 test_action_target_thread=\u76EE\u524D\u57F7\u884C\u7DD2 test_action_title=\u6E2C\u8A66\u52D5\u4F5C test_configuration=\u6E2C\u8A66\u914D\u7F6E test_plan=\u6E2C\u8A66\u8A08\u756B testplan.serialized=\u4F9D\u5E8F\u57F7\u884C\u57F7\u884C\u7DD2\u7FA4\u7D44,\u57F7\u884C\u5B8C\u4E00\u500B\u624D\u6703\u57F7\u884C\u4E0B\u4E00\u500B testplan_comments=\u5099\u8A3B testt=\u6E2C\u8A66 thread_delay_properties=\u57F7\u884C\u7DD2\u5EF6\u9072\u5C6C\u6027 thread_group_title=\u57F7\u884C\u7DD2\u7FA4\u7D44 thread_properties=\u57F7\u884C\u7DD2\u5C6C\u6027 threadgroup=\u57F7\u884C\u7DD2\u7FA4\u7D44 throughput_control_bynumber_label=\u7E3D\u57F7\u884C\u6578 throughput_control_bypercent_label=\u767E\u5206\u6BD4\u57F7\u884C throughput_control_perthread_label=\u6BCF\u500B\u4F7F\u7528\u8005 throughput_control_title=\u8655\u7406\u91CF\u63A7\u5236\u5668 throughput_control_tplabel=\u8655\u7406\u91CF timelim=\u6642\u9593\u9650\u5236 transaction_controller_title=\u4EA4\u6613\u63A7\u5236\u5668 unbind=\u672A\u7E6B\u7D50\u57F7\u884C\u7DD2 uniform_timer_delay=\u5E38\u6578\u5EF6\u9072\u5DEE(\u5FAE\u79D2) uniform_timer_memo=\u52A0\u5165\u4E00\u81F4\u5206\u4F48\u7684\u96A8\u6A5F\u5EF6\u9072 uniform_timer_range=\u96A8\u6A5F\u5EF6\u9072\u6700\u5927\u503C(\u5FAE\u79D2) uniform_timer_title=\u4E00\u81F4\u96A8\u6A5F\u8A08\u6642\u5668 update_per_iter=\u6BCF\u56DE\u5408\u8B8A\u66F4\u4E00\u6B21 upload=\u6A94\u6848\u4E0A\u50B3 upper_bound=\u4E0A\u9650 url_config_protocol=\u5354\u5B9A url_config_title=HTTP \u8981\u6C42\u9810\u8A2D\u503C url_full_config_title=UrlFull \u7BC4\u4F8B url_multipart_config_title=HTTP Multipart \u8981\u6C42\u9810\u8A2D\u503C use_recording_controller=\u4F7F\u7528\u9304\u88FD\u63A7\u5236\u5668 user=\u4F7F\u7528\u8005 user_defined_test=\u4F7F\u7528\u8005\u81EA\u8A02\u6E2C\u8A66 user_defined_variables=\u4F7F\u7528\u8005\u81EA\u8A02\u8B8A\u6578 user_param_mod_help_note=(\u4E0D\u8981\u8B8A\u66F4\u9019\u88E1, \u8981\u6539\u5C31\u6539\u5728 /bin \u76EE\u9304\u4E0B\u540C\u540D\u7684\u6A94\u6848\u5167\u5BB9) user_parameters_table=\u53C3\u6578 user_parameters_title=\u4F7F\u7528\u8005\u53C3\u6578 userdn=\u4F7F\u7528\u8005\u540D\u7A31 username=\u4F7F\u7528\u8005\u540D\u7A31 userpw=\u5BC6\u78BC value=\u503C var_name=\u53C3\u7167\u540D\u7A31 view_graph_tree_title=\u6AA2\u8996\u5716\u5F62\u6A39 view_results_in_table=\u6AA2\u8996\u8868\u683C\u5F0F\u7D50\u679C view_results_tab_request=\u8981\u6C42 view_results_tab_response=\u56DE\u8986\u8CC7\u6599 view_results_tab_sampler=\u53D6\u6A23\u7D50\u679C view_results_title=\u6AA2\u8996\u7D50\u679C view_results_tree_title=\u6AA2\u8996\u7D50\u679C\u6A39 warning=\u8B66\u544A\uFF01 web_request=HTTP \u8981\u6C42 web_server=Web \u4F3A\u670D\u5668 web_server_domain=\u4E3B\u6A5F\u540D\u7A31\u6216 IP web_server_port=\u7AEF\u53E3\u865F\u78BC web_testing_retrieve_images=\u53D6\u56DE\u6240\u6709\u5D4C\u5165 HTML \u7684\u8CC7\u6E90 web_testing_title=HTTP \u8981\u6C42 webservice_proxy_host=\u4EE3\u7406\u4F3A\u670D\u5668 webservice_proxy_note=\u5982\u679C\u9078\u7528HTTP\u4EE3\u7406\u4F3A\u670D\u5668,\u537B\u6C92\u6709\u6307\u5B9A\u4E3B\u6A5F\u548C\u7AEF\u53E3\u7684\u8A71 webservice_proxy_note2=\u53D6\u6A23\u6703\u7531\u57F7\u884C\u547D\u4EE4\u5217\u53C3\u6578\u53D6\u5F97, \u5982\u679C\u547D\u4EE4\u5217\u53C3\u6578 webservice_proxy_note3=\u4E5F\u6C92\u8A2D\u5B9A, \u5373\u6703\u5931\u6557 webservice_proxy_port=\u4EE3\u7406\u4F3A\u670D\u5668\u7AEF\u53E3 webservice_sampler_title=WebService(SOAP) \u8981\u6C42 webservice_use_proxy=\u4F7F\u7528 HTTP \u4EE3\u7406\u4F3A\u670D\u5668 while_controller_label=\u689D\u4EF6 (blank/LAST \u6216 true) while_controller_title=\u7576.. \u63A7\u5236\u5668 workbench_title=\u5DE5\u4F5C\u53F0 wsdl_helper_error=\u7121\u6548\u7684 WSDL,\u8ACB\u78BA\u8A8D URL \u7121\u8AA4 wsdl_url_error=WSDL \u662F\u7A7A\u7684 xml_assertion_title=XML \u9A57\u8B49 xml_namespace_button=\u4F7F\u7528\u540D\u7A31\u7A7A\u9593 xml_tolerant_button=Tolerant XML/HTML \u5256\u6790\u5668 xml_validate_button=\u9A57\u8B49 XML xml_whitespace_button=\u5FFD\u7565\u767D\u7A7A\u5B57\u5143 xpath_assertion_button=\u9A57\u8B49 xpath_assertion_check=\u6AA2\u67E5 XPath \u654D\u8FF0 xpath_assertion_error=XPath \u932F\u8AA4 xpath_assertion_failed=\u7121\u6548 XPath \u654D\u8FF0 xpath_assertion_negate=\u5982\u679C\u5168\u4E0D\u7B26\u5408\u5247\u70BA True xpath_assertion_option=\u5256\u6790 XML \u9078\u9805 xpath_assertion_test=\u9A57\u8B49 XPath xpath_assertion_tidy=\u8A66\u8457\u4E26\u5C07\u8F38\u5165\u8CC7\u6599 tidy up xpath_assertion_title=\u9A57\u8B49 XPath xpath_assertion_valid=\u5408\u6CD5 XPath \u654D\u8FF0 xpath_assertion_validation=\u4EE5 DTD \u6AA2\u67E5 XML xpath_assertion_whitespace=\u5FFD\u7565\u767D\u7A7A\u5B57\u5143 xpath_expression=\u8981\u6BD4\u5C0D\u7528\u7684 XPath \u654D\u8FF0 xpath_file_file_name=\u53D6\u503C\u4F86\u6E90\u7684 XML \u6A94\u540D you_must_enter_a_valid_number=\u5FC5\u9808\u8F38\u5165\u4E00\u500B\u5408\u6CD5\u6578\u5B57 apache-jmeter-2.8/src/core/org/apache/jmeter/DynamicClassLoader.java0000644000175000017500000000371112032647221025002 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter; import java.net.URL; import java.net.URLClassLoader; import java.net.URLStreamHandlerFactory; /** * This is a basic URL classloader for loading new resources * dynamically. * * It allows public access to the addURL() method. * * It also adds a convenience method to update the current thread classloader * */ public class DynamicClassLoader extends URLClassLoader { public DynamicClassLoader(URL[] urls) { super(urls); } public DynamicClassLoader(URL[] urls, ClassLoader parent) { super(urls, parent); } public DynamicClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) { super(urls, parent, factory); } // Make the addURL method visible @Override public void addURL(URL url) { super.addURL(url); } /** * * @param urls - list of URLs to add to the thread's classloader */ public static void updateLoader(URL [] urls) { DynamicClassLoader loader = (DynamicClassLoader) Thread.currentThread().getContextClassLoader(); for(URL url : urls) { loader.addURL(url); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/0000755000175000017500000000000012165514773021715 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/engine/package-info.java0000644000175000017500000000164512032647220025075 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * This package contains the interfaces and classes that are used to run JMeter tests. */ package org.apache.jmeter.engine;apache-jmeter-2.8/src/core/org/apache/jmeter/engine/JMeterEngineException.java0000644000175000017500000000260612032647220026742 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.io.Serializable; /** * Exception class for use by {@link JMeterEngine#runTest()} and {@link RemoteJMeterEngine#rrunTest()} */ public class JMeterEngineException extends Exception implements Serializable { private static final long serialVersionUID = 240L; public JMeterEngineException() { super(); } public JMeterEngineException(String msg) { super(msg); } public JMeterEngineException(Throwable t) { super(t); } public JMeterEngineException(String msg, Throwable t) { super(msg, t); } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/RemoteJMeterEngine.java0000644000175000017500000000277112032647220026242 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.io.File; import java.rmi.Remote; import java.rmi.RemoteException; import java.util.Properties; import org.apache.jorphan.collections.HashTree; /** * This is the interface for the RMI server engine, i.e. {@link RemoteJMeterEngineImpl} */ public interface RemoteJMeterEngine extends Remote { void rconfigure(HashTree testTree, String host, File jmxBase, String scriptName) throws RemoteException; void rrunTest() throws RemoteException, JMeterEngineException; void rstopTest(boolean now) throws RemoteException; void rreset() throws RemoteException; void rsetProperties(Properties p) throws RemoteException; void rexit() throws RemoteException; } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/0000755000175000017500000000000012165514773022672 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/ConfigMergabilityIndicator.java0000644000175000017500000000251412032647220030755 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.util; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.threads.TestCompiler; /** * Interface that gives a hint about the merge policy to apply between Samplers and Config elements * @see TestCompiler#configureWithConfigElements * @since 2.7 */ public interface ConfigMergabilityIndicator { /** * Does configElement apply to Sampler * @param configElement {@link ConfigTestElement} * @return boolean */ boolean applies(ConfigTestElement configElement); } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/AbstractTransformer.java0000644000175000017500000000270012032647220027505 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 4, 2003 */ package org.apache.jmeter.engine.util; import java.util.Map; abstract class AbstractTransformer implements ValueTransformer { private CompoundVariable masterFunction; private Map variables; /** {@inheritDoc} */ public void setMasterFunction(CompoundVariable variable) { masterFunction = variable; } protected CompoundVariable getMasterFunction() { return masterFunction; } public Map getVariables() { return variables; } /** {@inheritDoc} */ public void setVariables(Map map) { variables = map; } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/UndoVariableReplacement.java0000644000175000017500000000350512032647220030256 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 4, 2003 */ package org.apache.jmeter.engine.util; import java.util.Map; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.StringUtilities; public class UndoVariableReplacement extends AbstractTransformer { public UndoVariableReplacement(CompoundVariable masterFunction, Map variables) { super(); setMasterFunction(masterFunction); setVariables(variables); } public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException { String input = prop.getStringValue(); for (Map.Entry entry : getVariables().entrySet()) { String key = entry.getKey(); String value = entry.getValue(); input = StringUtilities.substitute(input, "${" + key + "}", value); } return new StringProperty(prop.getName(), input); } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/FunctionParser.java0000644000175000017500000002451112032647220026465 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Jul 25, 2003 */ package org.apache.jmeter.engine.util; import java.io.IOException; import java.io.StringReader; import java.util.LinkedList; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.functions.Function; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Parses function / variable references of the form * ${functionName[([var[,var...]])]} * and * ${variableName} */ class FunctionParser { private static final Logger log = LoggingManager.getLoggerForClass(); /** * Compile a general string into a list of elements for a CompoundVariable. * * Calls {@link #makeFunction(StringReader)} if it detects an unescaped "${". * * Removes escapes from '$', ',' and '\'. * * @param value string containing the function / variable references (if any) * * @return list of Strings or Objects representing functions */ LinkedList compileString(String value) throws InvalidVariableException { StringReader reader = new StringReader(value); LinkedList result = new LinkedList(); StringBuilder buffer = new StringBuilder(); char previous = ' '; // TODO - why use space? char[] current = new char[1]; try { while (reader.read(current) == 1) { if (current[0] == '\\') { // Handle escapes previous = current[0]; if (reader.read(current) == 0) { break; } // Keep the '\' unless it is one of the escapable chars '$' ',' or '\' // N.B. This method is used to parse function parameters, so must treat ',' as special if (current[0] != '$' && current[0] != ',' && current[0] != '\\') { buffer.append(previous); // i.e. '\\' } previous = ' '; buffer.append(current[0]); continue; } else if (current[0] == '{' && previous == '$') {// found "${" buffer.deleteCharAt(buffer.length() - 1); if (buffer.length() > 0) {// save leading text result.add(buffer.toString()); buffer.setLength(0); } result.add(makeFunction(reader)); previous = ' '; } else { buffer.append(current[0]); previous = current[0]; } } if (buffer.length() > 0) { result.add(buffer.toString()); } } catch (IOException e) { log.error("Error parsing function: " + value, e); result.clear(); result.add(value); } if (result.size() == 0) { result.add(""); } return result; } /** * Compile a string into a function or SimpleVariable. * * Called by {@link #compileString(String)} when that has detected "${". * * Calls {@link CompoundVariable#getNamedFunction(String)} if it detects: * '(' - start of parameter list * '}' - end of function call * * @param reader points to input after the "${" * @return the function or variable object (or a String) */ Object makeFunction(StringReader reader) throws InvalidVariableException { char[] current = new char[1]; char previous = ' '; // TODO - why use space? StringBuilder buffer = new StringBuilder(); Object function; try { while (reader.read(current) == 1) { if (current[0] == '\\') { if (reader.read(current) == 0) { break; } previous = ' '; buffer.append(current[0]); continue; } else if (current[0] == '(' && previous != ' ') { String funcName = buffer.toString(); function = CompoundVariable.getNamedFunction(funcName); if (function instanceof Function) { ((Function) function).setParameters(parseParams(reader)); if (reader.read(current) == 0 || current[0] != '}') { reader.reset();// set to start of string char []cb = new char[100]; int nbRead = reader.read(cb); throw new InvalidVariableException ("Expected } after "+funcName+" function call in "+new String(cb, 0, nbRead)); } if (function instanceof TestStateListener) { StandardJMeterEngine.register((TestStateListener) function); } return function; } else { // Function does not exist, so treat as per missing variable buffer.append(current[0]); } continue; } else if (current[0] == '}') {// variable, or function with no parameter list function = CompoundVariable.getNamedFunction(buffer.toString()); if (function instanceof Function){// ensure that setParameters() is called. ((Function) function).setParameters(new LinkedList()); } buffer.setLength(0); return function; } else { buffer.append(current[0]); previous = current[0]; } } } catch (IOException e) { log.error("Error parsing function: " + buffer.toString(), e); return null; } log.warn("Probably an invalid function string: " + buffer.toString()); return buffer.toString(); } /** * Compile a String into a list of parameters, each made into a * CompoundVariable. * * Parses strings of the following form: *
          *
        • text)
        • *
        • text,text)
        • *
        • *
        * @param reader a StringReader pointing to the current input location, just after "(" * @return a list of CompoundVariable elements */ LinkedList parseParams(StringReader reader) throws InvalidVariableException { LinkedList result = new LinkedList(); StringBuilder buffer = new StringBuilder(); char[] current = new char[1]; char previous = ' '; int functionRecursion = 0; int parenRecursion = 0; try { while (reader.read(current) == 1) { if (current[0] == '\\') { // Process escaped characters buffer.append(current[0]); // Store the \ if (reader.read(current) == 0) { break; // end of buffer } previous = ' '; buffer.append(current[0]); // store the following character continue; } else if (current[0] == ',' && functionRecursion == 0) { CompoundVariable param = new CompoundVariable(); param.setParameters(buffer.toString()); buffer.setLength(0); result.add(param); } else if (current[0] == ')' && functionRecursion == 0 && parenRecursion == 0) { // Detect functionName() so this does not generate empty string as the parameter if (buffer.length() == 0 && result.isEmpty()){ return result; } // Normal exit occurs here CompoundVariable param = new CompoundVariable(); param.setParameters(buffer.toString()); buffer.setLength(0); result.add(param); return result; } else if (current[0] == '{' && previous == '$') { buffer.append(current[0]); previous = current[0]; functionRecursion++; } else if (current[0] == '}' && functionRecursion > 0) { buffer.append(current[0]); previous = current[0]; functionRecursion--; } else if (current[0] == ')' && functionRecursion == 0 && parenRecursion > 0) { buffer.append(current[0]); previous = current[0]; parenRecursion--; } else if (current[0] == '(' && functionRecursion == 0) { buffer.append(current[0]); previous = current[0]; parenRecursion++; } else { buffer.append(current[0]); previous = current[0]; } } } catch (IOException e) {// Should not happen with StringReader log.error("Error parsing function: " + buffer.toString(), e); } // Dropped out, i.e. did not find closing ')' log.warn("Probably an invalid function string: " + buffer.toString()); CompoundVariable var = new CompoundVariable(); var.setParameters(buffer.toString()); result.add(var); return result; } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/ReplaceFunctionsWithStrings.java0000644000175000017500000000727112032647220031201 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 4, 2003 */ package org.apache.jmeter.engine.util; import java.util.Map; import java.util.Map.Entry; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.StringUtilities; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.regex.MalformedPatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternCompiler; import org.apache.oro.text.regex.PatternMatcher; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.StringSubstitution; import org.apache.oro.text.regex.Util; /** * Transforms strings into variable references (in spite of the name, which * suggests the opposite!) * */ public class ReplaceFunctionsWithStrings extends AbstractTransformer { private static final Logger log = LoggingManager.getLoggerForClass(); // Functions are wrapped in ${ and } private static final String FUNCTION_REF_PREFIX = "${"; //$NON-NLS-1$ private static final String FUNCTION_REF_SUFFIX = "}"; //$NON-NLS-1$ private final boolean regexMatch;// Should we match using regexes? public ReplaceFunctionsWithStrings(CompoundVariable masterFunction, Map variables) { this(masterFunction, variables, false); } public ReplaceFunctionsWithStrings(CompoundVariable masterFunction, Map variables, boolean regexMatch) { super(); setMasterFunction(masterFunction); setVariables(variables); this.regexMatch = regexMatch; } public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException { PatternMatcher pm = JMeterUtils.getMatcher(); Pattern pattern = null; PatternCompiler compiler = new Perl5Compiler(); String input = prop.getStringValue(); if(input == null) { return prop; } for(Entry entry : getVariables().entrySet()){ String key = entry.getKey(); String value = entry.getValue(); if (regexMatch) { try { pattern = compiler.compile("\\b("+value+")\\b"); input = Util.substitute(pm, pattern, new StringSubstitution(FUNCTION_REF_PREFIX + key + FUNCTION_REF_SUFFIX), input, Util.SUBSTITUTE_ALL); } catch (MalformedPatternException e) { log.warn("Malformed pattern " + value); } } else { input = StringUtilities.substitute(input, value, FUNCTION_REF_PREFIX + key + FUNCTION_REF_SUFFIX); } } return new StringProperty(prop.getName(), input); } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/ValueTransformer.java0000644000175000017500000000332012032647220027015 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 4, 2003 */ package org.apache.jmeter.engine.util; import java.util.Map; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.property.JMeterProperty; interface ValueTransformer { /** * Transform the given property and return the new version. * * @param property * @return the transformed property */ JMeterProperty transformValue(JMeterProperty property) throws InvalidVariableException; /** * Set the master function for the value transformer. This handles * converting strings to functions. * * @param masterFunction */ void setMasterFunction(CompoundVariable masterFunction); /** * Set the variable names and values used to reverse replace functions with * strings, and undo functions to raw values. * * @param vars */ void setVariables(Map vars); } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/SimpleVariable.java0000644000175000017500000000350712032647220026424 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.util; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; public class SimpleVariable { private String name; public SimpleVariable(String name) { this.name = name; } public SimpleVariable() { this.name = ""; //$NON-NLS-1$ } public String getName() { return name; } public void setName(String name) { this.name = name; } /** * @see org.apache.jmeter.functions.Function#execute */ @Override public String toString() { String ret = null; JMeterVariables vars = getVariables(); if (vars != null) { ret = vars.get(name); } if (ret == null) { return "${" + name + "}"; } return ret; } private JMeterVariables getVariables() { JMeterContext context = JMeterContextService.getContext(); return context.getVariables(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/NoThreadClone.java0000644000175000017500000000221612032647220026206 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 23, 2003 */ package org.apache.jmeter.engine.util; /** * Implement this method-less interface to indicate your test element should not * be cloned for each thread in a test run. Otherwise, the default behavior is * to clone every test element for each thread. * * @version $Revision: 493779 $ */ public interface NoThreadClone { } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/ReplaceStringWithFunctions.java0000644000175000017500000000337612032647220031020 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 4, 2003 */ package org.apache.jmeter.engine.util; import java.util.Map; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.property.FunctionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; public class ReplaceStringWithFunctions extends AbstractTransformer { public ReplaceStringWithFunctions(CompoundVariable masterFunction, Map variables) { super(); setMasterFunction(masterFunction); setVariables(variables); } public JMeterProperty transformValue(JMeterProperty prop) throws InvalidVariableException { JMeterProperty newValue = prop; getMasterFunction().clear(); getMasterFunction().setParameters(prop.getStringValue()); if (getMasterFunction().hasFunction()) { newValue = new FunctionProperty(prop.getName(), getMasterFunction().getFunction()); } return newValue; } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/ValueReplacer.java0000644000175000017500000001257112032647220026260 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.util; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.MultiProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Perfom replacement of ${variable} references. */ public class ValueReplacer { private static final Logger log = LoggingManager.getLoggerForClass(); private final CompoundVariable masterFunction = new CompoundVariable(); private Map variables = new HashMap(); public ValueReplacer() { } public ValueReplacer(TestPlan tp) { setUserDefinedVariables(tp.getUserDefinedVariables()); } boolean containsKey(String k){ return variables.containsKey(k); } public void setUserDefinedVariables(Map variables) { this.variables = variables; } public void replaceValues(TestElement el) throws InvalidVariableException { Collection newProps = replaceValues(el.propertyIterator(), new ReplaceStringWithFunctions(masterFunction, variables)); setProperties(el, newProps); } private void setProperties(TestElement el, Collection newProps) { el.clear(); for (JMeterProperty jmp : newProps) { el.setProperty(jmp); } } public void reverseReplace(TestElement el) throws InvalidVariableException { Collection newProps = replaceValues(el.propertyIterator(), new ReplaceFunctionsWithStrings(masterFunction, variables)); setProperties(el, newProps); } public void reverseReplace(TestElement el, boolean regexMatch) throws InvalidVariableException { Collection newProps = replaceValues(el.propertyIterator(), new ReplaceFunctionsWithStrings(masterFunction, variables, regexMatch)); setProperties(el, newProps); } public void undoReverseReplace(TestElement el) throws InvalidVariableException { Collection newProps = replaceValues(el.propertyIterator(), new UndoVariableReplacement(masterFunction, variables)); setProperties(el, newProps); } public void addVariable(String name, String value) { variables.put(name, value); } /** * Add all the given variables to this replacer's variables map. * * @param vars * A map of variable name-value pairs (String-to-String). */ public void addVariables(Map vars) { variables.putAll(vars); } private Collection replaceValues(PropertyIterator iter, ValueTransformer transform) throws InvalidVariableException { List props = new LinkedList(); while (iter.hasNext()) { JMeterProperty val = iter.next(); if (log.isDebugEnabled()) { log.debug("About to replace in property of type: " + val.getClass() + ": " + val); } if (val instanceof StringProperty) { // Must not convert TestElement.gui_class etc if (!val.getName().equals(TestElement.GUI_CLASS) && !val.getName().equals(TestElement.TEST_CLASS)) { val = transform.transformValue(val); if (log.isDebugEnabled()) { log.debug("Replacement result: " + val); } } } else if (val instanceof MultiProperty) { MultiProperty multiVal = (MultiProperty) val; Collection newValues = replaceValues(multiVal.iterator(), transform); multiVal.clear(); for (JMeterProperty jmp : newValues) { multiVal.addProperty(jmp); } if (log.isDebugEnabled()) { log.debug("Replacement result: " + multiVal); } } else { if (log.isDebugEnabled()) { log.debug("Won't replace " + val); } } props.add(val); } return props; } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/CompoundVariable.java0000644000175000017500000002045712032647220026762 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.util; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.functions.Function; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.log.Logger; /** * CompoundFunction. * */ public class CompoundVariable implements Function { private static final Logger log = LoggingManager.getLoggerForClass(); private String rawParameters; private static final FunctionParser functionParser = new FunctionParser(); // Created during class init; not modified thereafter private static final Map> functions = new HashMap>(); private boolean hasFunction, isDynamic; private String permanentResults = ""; // $NON-NLS-1$ private LinkedList compiledComponents = new LinkedList(); static { try { final String contain = // Classnames must contain this string [.functions.] JMeterUtils.getProperty("classfinder.functions.contain"); // $NON-NLS-1$ final String notContain = // Classnames must not contain this string [.gui.] JMeterUtils.getProperty("classfinder.functions.notContain"); // $NON-NLS-1$ if (contain!=null){ log.info("Note: Function class names must contain the string: '"+contain+"'"); } if (notContain!=null){ log.info("Note: Function class names must not contain the string: '"+notContain+"'"); } List classes = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { Function.class }, true, contain, notContain); Iterator iter = classes.iterator(); while (iter.hasNext()) { Function tempFunc = (Function) Class.forName(iter.next()).newInstance(); String referenceKey = tempFunc.getReferenceKey(); if (referenceKey.length() > 0) { // ignore self functions.put(referenceKey, tempFunc.getClass()); // Add alias for original StringFromFile name (had only one underscore) if (referenceKey.equals("__StringFromFile")){//$NON-NLS-1$ functions.put("_StringFromFile", tempFunc.getClass());//$NON-NLS-1$ } } } final int functionCount = functions.size(); if (functionCount == 0){ log.warn("Did not find any functions"); } else { log.debug("Function count: "+functionCount); } } catch (Exception err) { log.error("", err); } } public CompoundVariable() { super(); isDynamic = true; hasFunction = false; } public CompoundVariable(String parameters) { this(); try { setParameters(parameters); } catch (InvalidVariableException e) { // TODO should level be more than debug ? if(log.isDebugEnabled()) { log.debug("Invalid variable:"+ parameters, e); } } } public String execute() { if (isDynamic) { JMeterContext context = JMeterContextService.getContext(); SampleResult previousResult = context.getPreviousResult(); Sampler currentSampler = context.getCurrentSampler(); return execute(previousResult, currentSampler); } return permanentResults; // $NON-NLS-1$ } /** * Allows the retrieval of the original String prior to it being compiled. * * @return String */ public String getRawParameters() { return rawParameters; } /** {@inheritDoc} */ public String execute(SampleResult previousResult, Sampler currentSampler) { if (compiledComponents == null || compiledComponents.size() == 0) { return ""; // $NON-NLS-1$ } boolean testDynamic = false; StringBuilder results = new StringBuilder(); for (Object item : compiledComponents) { if (item instanceof Function) { testDynamic = true; try { results.append(((Function) item).execute(previousResult, currentSampler)); } catch (InvalidVariableException e) { // TODO should level be more than debug ? if(log.isDebugEnabled()) { log.debug("Invalid variable:"+item, e); } } } else if (item instanceof SimpleVariable) { testDynamic = true; results.append(((SimpleVariable) item).toString()); } else { results.append(item); } } if (!testDynamic) { isDynamic = false; permanentResults = results.toString(); } return results.toString(); } @SuppressWarnings("unchecked") // clone will produce correct type public CompoundVariable getFunction() { CompoundVariable func = new CompoundVariable(); func.compiledComponents = (LinkedList) compiledComponents.clone(); func.rawParameters = rawParameters; return func; } /** {@inheritDoc} */ public List getArgumentDesc() { return new LinkedList(); } public void clear() { // TODO should this also clear isDynamic, rawParameters, permanentResults? hasFunction = false; compiledComponents.clear(); } public void setParameters(String parameters) throws InvalidVariableException { this.rawParameters = parameters; if (parameters == null || parameters.length() == 0) { return; } compiledComponents = functionParser.compileString(parameters); if (compiledComponents.size() > 1 || !(compiledComponents.get(0) instanceof String)) { hasFunction = true; } } static Object getNamedFunction(String functionName) throws InvalidVariableException { if (functions.containsKey(functionName)) { try { return ((Class) functions.get(functionName)).newInstance(); } catch (Exception e) { log.error("", e); // $NON-NLS-1$ throw new InvalidVariableException(e); } } return new SimpleVariable(functionName); } // For use by FunctionHelper public static Class getFunctionClass(String className) { return functions.get(className); } // For use by FunctionHelper public static String[] getFunctionNames() { return functions.keySet().toArray(new String[functions.size()]); } public boolean hasFunction() { return hasFunction; } // Dummy methods needed by Function interface /** {@inheritDoc} */ public String getReferenceKey() { return ""; // $NON-NLS-1$ } /** {@inheritDoc} */ public void setParameters(Collection parameters) throws InvalidVariableException { } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/util/NoConfigMerge.java0000644000175000017500000000230412032647220026201 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.util; import org.apache.jmeter.threads.TestCompiler; /** * Implement this method-less interface to indicate that this ConfigElement should not be merged. * Otherwise, the default behavior is to merge the element with every sampler in scope. * * @see TestCompiler#configureSampler(Sampler) * @version $Revision: 1381475 $ * @since 2.7 */ public interface NoConfigMerge { } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/JMeterEngine.java0000644000175000017500000000235212032647220025061 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.util.Properties; import org.apache.jorphan.collections.HashTree; /** * This interface is implemented by classes that can run JMeter tests. */ public interface JMeterEngine { void configure(HashTree testPlan); void runTest() throws JMeterEngineException; void stopTest(boolean now); void reset(); void setProperties(Properties p); void exit(); boolean isActive(); } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/ConvertListeners.java0000644000175000017500000000725312032647220026063 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.rmi.RemoteException; import org.apache.jmeter.samplers.RemoteListenerWrapper; import org.apache.jmeter.samplers.RemoteSampleListener; import org.apache.jmeter.samplers.RemoteSampleListenerImpl; import org.apache.jmeter.samplers.RemoteSampleListenerWrapper; import org.apache.jmeter.samplers.RemoteTestListenerWrapper; import org.apache.jmeter.samplers.Remoteable; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Converts the Remoteable Test and Sample Listeners in the test tree by wrapping * them with RemoteSampleListeners so that the samples are returned to the client. * * N.B. Does not handle ThreadListeners. * */ public class ConvertListeners implements HashTreeTraverser { private static final Logger log = LoggingManager.getLoggerForClass(); /** * {@inheritDoc} */ public void addNode(Object node, HashTree subTree) { for (Object item : subTree.list()) { if (item instanceof AbstractThreadGroup) { log.debug("num threads = " + ((AbstractThreadGroup) item).getNumThreads()); } if (item instanceof Remoteable) { if (item instanceof ThreadListener){ log.error("Cannot handle ThreadListener Remotable item "+item.getClass().getName()); continue; } try { RemoteSampleListener rtl = new RemoteSampleListenerImpl(item); if (item instanceof TestStateListener && item instanceof SampleListener) { // TL - all RemoteListenerWrapper wrap = new RemoteListenerWrapper(rtl); subTree.replace(item, wrap); } else if (item instanceof TestStateListener) { RemoteTestListenerWrapper wrap = new RemoteTestListenerWrapper(rtl); subTree.replace(item, wrap); } else if (item instanceof SampleListener) { RemoteSampleListenerWrapper wrap = new RemoteSampleListenerWrapper(rtl); subTree.replace(item, wrap); } else { log.warn("Could not replace Remotable item "+item.getClass().getName()); } } catch (RemoteException e) { log.error("", e); // $NON-NLS-1$ } } } } /** * {@inheritDoc} */ public void subtractNode() { } /** * {@inheritDoc} */ public void processPath() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/TreeClonerNoTimer.java0000644000175000017500000000343712032647220026112 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import org.apache.jmeter.timers.Timer; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Clones the test tree, skipping test elements that implement {@link Timer} by default. */ public class TreeClonerNoTimer extends TreeCloner{ private static final Logger logger = LoggingManager.getLoggerForClass(); public TreeClonerNoTimer() { super(); } public TreeClonerNoTimer(boolean honourNoThreadClone) { super(honourNoThreadClone); } /** * Doesn't add Timer to tree * @see org.apache.jmeter.engine.TreeCloner#addNodeToTree(java.lang.Object) */ @Override protected Object addNodeToTree(Object node) { if(node instanceof Timer) { if(logger.isDebugEnabled()) { logger.debug("Ignoring timer node:"+ node); } return node; // don't add the timer } else { return super.addNodeToTree(node); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/engine/event/0000755000175000017500000000000012165514773023036 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/engine/event/LoopIterationEvent.java0000644000175000017500000000276012032647220027463 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.event; import org.apache.jmeter.testelement.TestElement; /** * An iteration event provides information about the iteration number and the * source of the event. */ public class LoopIterationEvent { private final int iteration; private final TestElement source; public LoopIterationEvent(TestElement source, int iter) { iteration = iter; this.source = source; } /** * Returns the iteration. * * @return int */ public int getIteration() { return iteration; } /** * Returns the source. * * @return TestElement */ public TestElement getSource() { return source; } }apache-jmeter-2.8/src/core/org/apache/jmeter/engine/event/LoopIterationListener.java0000644000175000017500000000214212032647220030161 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine.event; /** * Allows a class to receive loop iteration start events. */ public interface LoopIterationListener { /** * Called when a loop iteration is about to start. * * @param iterEvent the event */ void iterationStart(LoopIterationEvent iterEvent); } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/RemoteJMeterEngineImpl.java0000644000175000017500000002176012032647220027063 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.io.File; import java.net.InetAddress; import java.net.UnknownHostException; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.util.Iterator; import java.util.Properties; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This is the JMeter server main code. */ public final class RemoteJMeterEngineImpl extends java.rmi.server.UnicastRemoteObject implements RemoteJMeterEngine { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); static final String JMETER_ENGINE_RMI_NAME = "JMeterEngine"; // $NON-NLS-1$ private transient JMeterEngine backingEngine; private transient Thread ownerThread; private static final int DEFAULT_RMI_PORT = JMeterUtils.getPropDefault("server.rmi.port", 1099); // $NON-NLS-1$ private static final int DEFAULT_LOCAL_PORT = JMeterUtils.getPropDefault("server.rmi.localport", 0); // $NON-NLS-1$ static{ if (DEFAULT_LOCAL_PORT != 0){ System.out.println("Using local port: "+DEFAULT_LOCAL_PORT); } } // Should we create our own copy of the RMI registry? private static final boolean createServer = JMeterUtils.getPropDefault("server.rmi.create", true); // $NON-NLS-1$ private final Object LOCK = new Object(); private final int rmiPort; private Properties remotelySetProperties; private RemoteJMeterEngineImpl(int localPort, int rmiPort) throws RemoteException { super(localPort); // Create this object using the specified port (0 means anonymous) this.rmiPort = rmiPort; System.out.println("Created remote object: "+this.getRef().remoteToString()); } public static void startServer(int rmiPort) throws RemoteException { RemoteJMeterEngineImpl engine = new RemoteJMeterEngineImpl(DEFAULT_LOCAL_PORT, rmiPort == 0 ? DEFAULT_RMI_PORT : rmiPort); engine.init(); } private void init() throws RemoteException { log.info("Starting backing engine on " + this.rmiPort); InetAddress localHost=null; // Bug 47980 - allow override of local hostname String host = System.getProperties().getProperty("java.rmi.server.hostname"); // $NON-NLS-1$ try { if( host==null ) { localHost = InetAddress.getLocalHost(); } else { localHost = InetAddress.getByName(host); } } catch (UnknownHostException e1) { throw new RemoteException("Cannot start. Unable to get local host IP address.", e1); } log.info("IP address="+localHost.getHostAddress()); String hostName = localHost.getHostName(); // BUG 52469 : Allow loopback address for SSH Tunneling of RMI traffic if (localHost.isLoopbackAddress() && host == null){ throw new RemoteException("Cannot start. "+hostName+" is a loopback address."); } if (localHost.isSiteLocalAddress()){ // should perhaps be log.warn, but this causes the client-server test to fail log.info("IP address is a site-local address; this may cause problems with remote access.\n" + "\tCan be overridden by defining the system property 'java.rmi.server.hostname' - see jmeter-server script file"); } log.debug("This = " + this); if (createServer){ log.info("Creating RMI registry (server.rmi.create=true)"); try { LocateRegistry.createRegistry(this.rmiPort); } catch (RemoteException e){ String msg="Problem creating registry: "+e; log.warn(msg); System.err.println(msg); System.err.println("Continuing..."); } } try { Registry reg = LocateRegistry.getRegistry(this.rmiPort); reg.rebind(JMETER_ENGINE_RMI_NAME, this); log.info("Bound to registry on port " + this.rmiPort); } catch (Exception ex) { log.error("rmiregistry needs to be running to start JMeter in server " + "mode\n\t" + ex.toString()); // Throw an Exception to ensure caller knows ... throw new RemoteException("Cannot start. See server log file.", ex); } } /** * Adds a feature to the ThreadGroup attribute of the RemoteJMeterEngineImpl * object. * * @param testTree * the feature to be added to the ThreadGroup attribute */ public void rconfigure(HashTree testTree, String host, File jmxBase, String scriptName) throws RemoteException { log.info("Creating JMeter engine on host "+host+" base '"+jmxBase+"'"); synchronized(LOCK) { // close window where another remote client might jump in if (backingEngine != null && backingEngine.isActive()) { log.warn("Engine is busy - cannot create JMeter engine"); throw new IllegalStateException("Engine is busy - please try later"); } ownerThread = Thread.currentThread(); backingEngine = new StandardJMeterEngine(host); backingEngine.configure(testTree); // sets active = true } FileServer.getFileServer().setScriptName(scriptName); FileServer.getFileServer().setBase(jmxBase); } public void rrunTest() throws RemoteException, JMeterEngineException, IllegalStateException { log.info("Running test"); checkOwner("runTest"); backingEngine.runTest(); } public void rreset() throws RemoteException, IllegalStateException { // Mail on userlist reported NPE here - looks like only happens if there are network errors, but check anyway if (backingEngine != null) { log.info("Reset"); checkOwner("reset"); backingEngine.reset(); } else { log.warn("Backing engine is null, ignoring reset"); } } public void rstopTest(boolean now) throws RemoteException { if (now) { log.info("Stopping test ..."); } else { log.info("Shutting test ..."); } backingEngine.stopTest(now); log.info("... stopped"); } /* * Called by: * - ClientJMeterEngine.exe() which is called on remoteStop */ public void rexit() throws RemoteException { log.info("Exitting"); backingEngine.exit(); // Tidy up any objects we created Registry reg = LocateRegistry.getRegistry(this.rmiPort); try { reg.unbind(JMETER_ENGINE_RMI_NAME); } catch (NotBoundException e) { log.warn(JMETER_ENGINE_RMI_NAME+" is not bound",e); } log.info("Unbound from registry"); // Help with garbage control JMeterUtils.helpGC(); } public void rsetProperties(Properties p) throws RemoteException, IllegalStateException { checkOwner("setProperties"); if(remotelySetProperties != null) { Properties jmeterProperties = JMeterUtils.getJMeterProperties(); log.info("Cleaning previously set properties "+remotelySetProperties); for (Iterator iterator = remotelySetProperties.keySet().iterator(); iterator.hasNext();) { String key = (String) iterator.next(); jmeterProperties.remove(key); } } backingEngine.setProperties(p); this.remotelySetProperties = p; } /** * Check if the caller owns the engine. * @param methodName the name of the method for the log message * @throws IllegalStateException if the caller is not the owner. */ private void checkOwner(String methodName) throws IllegalStateException { if (ownerThread != null && ownerThread != Thread.currentThread()){ String msg = "The engine is not owned by this thread - cannot call "+methodName; log.warn(msg); throw new IllegalStateException(msg); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/TurnElementsOn.java0000644000175000017500000000311512032647220025465 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; /** * Invokes {@link TestElement#setRunningVersion(boolean) setRunningVersion(true)} for all matched nodes */ public class TurnElementsOn implements HashTreeTraverser { /** * {@inheritDoc} */ public void addNode(Object node, HashTree subTree) { if (node instanceof TestElement && !(node instanceof TestPlan)) { ((TestElement) node).setRunningVersion(true); } } /** * {@inheritDoc} */ public void subtractNode() { } /** * {@inheritDoc} */ public void processPath() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/PreCompiler.java0000644000175000017500000000734512032647220024775 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.util.Map; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Class to replace function and variable references in the test tree. * */ public class PreCompiler implements HashTreeTraverser { private static final Logger log = LoggingManager.getLoggerForClass(); private final ValueReplacer replacer; // Used by both StandardJMeterEngine and ClientJMeterEngine. // In the latter case, only ResultCollectors are updated, // as only these are relevant to the client, and updating // other elements causes all sorts of problems. private final boolean isRemote; // skip certain processing for remote tests public PreCompiler() { replacer = new ValueReplacer(); isRemote = false; } public PreCompiler(boolean remote) { replacer = new ValueReplacer(); isRemote = remote; } /** {@inheritDoc} */ public void addNode(Object node, HashTree subTree) { if(isRemote && node instanceof ResultCollector) { try { replacer.replaceValues((TestElement) node); } catch (InvalidVariableException e) { log.error("invalid variables", e); } } if (isRemote) { return; } if(node instanceof TestElement) { try { replacer.replaceValues((TestElement) node); } catch (InvalidVariableException e) { log.error("invalid variables", e); } } if (node instanceof TestPlan) { ((TestPlan)node).prepareForPreCompile(); //A hack to make user-defined variables in the testplan element more dynamic Map args = ((TestPlan) node).getUserDefinedVariables(); replacer.setUserDefinedVariables(args); JMeterVariables vars = new JMeterVariables(); vars.putAll(args); JMeterContextService.getContext().setVariables(vars); } if (node instanceof Arguments) { ((Arguments)node).setRunningVersion(true); Map args = ((Arguments) node).getArgumentsAsMap(); replacer.addVariables(args); JMeterContextService.getContext().getVariables().putAll(args); } } /** {@inheritDoc} */ public void subtractNode() { } /** {@inheritDoc} */ public void processPath() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/TreeCloner.java0000644000175000017500000000570212032647220024611 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.util.LinkedList; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.collections.ListedHashTree; /** * Clones the test tree, skipping test elements that implement {@link NoThreadClone} by default. */ public class TreeCloner implements HashTreeTraverser { private final ListedHashTree newTree; private final LinkedList objects = new LinkedList(); private final boolean honourNoThreadClone; /** * Clone the test tree, honouring NoThreadClone markers. * */ public TreeCloner() { this(true); } /** * Clone the test tree. * * @param honourNoThreadClone set false to clone NoThreadClone nodes as well */ public TreeCloner(boolean honourNoThreadClone) { newTree = new ListedHashTree(); this.honourNoThreadClone = honourNoThreadClone; } /** * @param node * @param subTree {@link HashTree} */ public final void addNode(Object node, HashTree subTree) { node = addNodeToTree(node); addLast(node); } /** * @param node Node to add to tree or not * @return Object node (clone or not) */ protected Object addNodeToTree(Object node) { if ( (node instanceof TestElement) // Check can cast for clone // Don't clone NoThreadClone unless honourNoThreadClone == false && (!honourNoThreadClone || !(node instanceof NoThreadClone)) ) { node = ((TestElement) node).clone(); newTree.add(objects, node); } else { newTree.add(objects, node); } return node; } /** * add node to objects LinkedList * @param node Object */ private final void addLast(Object node) { objects.addLast(node); } public void subtractNode() { objects.removeLast(); } public ListedHashTree getClonedTree() { return newTree; } public void processPath() { } }apache-jmeter-2.8/src/core/org/apache/jmeter/engine/ClientJMeterEngine.java0000644000175000017500000001520412032647220026220 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.engine; import java.io.File; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.Remote; import java.rmi.RemoteException; import java.rmi.server.RemoteObject; import java.util.Properties; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Class to run remote tests from the client JMeter and collect remote samples */ public class ClientJMeterEngine implements JMeterEngine { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Object LOCK = new Object(); private RemoteJMeterEngine remote; private HashTree test; private final String host; private static RemoteJMeterEngine getEngine(String h) throws MalformedURLException, RemoteException, NotBoundException { final String name = "//" + h + "/" + RemoteJMeterEngineImpl.JMETER_ENGINE_RMI_NAME; // $NON-NLS-1$ $NON-NLS-2$ Remote remobj = Naming.lookup(name); if (remobj instanceof RemoteJMeterEngine){ final RemoteJMeterEngine rje = (RemoteJMeterEngine) remobj; if (remobj instanceof RemoteObject){ RemoteObject robj = (RemoteObject) remobj; System.out.println("Using remote object: "+robj.getRef().remoteToString()); } return rje; } throw new RemoteException("Could not find "+name); } public ClientJMeterEngine(String host) throws MalformedURLException, NotBoundException, RemoteException { this.remote = getEngine(host); this.host = host; } /** {@inheritDoc} */ public void configure(HashTree testTree) { TreeCloner cloner = new TreeCloner(false); testTree.traverse(cloner); test = cloner.getClonedTree(); } /** {@inheritDoc} */ public void stopTest(boolean now) { log.info("about to "+(now ? "stop" : "shutdown")+" remote test on "+host); try { remote.rstopTest(now); } catch (Exception ex) { log.error("", ex); // $NON-NLS-1$ } } /** {@inheritDoc} */ public void reset() { try { try { remote.rreset(); } catch (java.rmi.ConnectException e) { log.info("Retry reset after: "+e); remote = getEngine(host); remote.rreset(); } } catch (Exception ex) { log.error("Failed to reset remote engine", ex); // $NON-NLS-1$ } } public void runTest() throws JMeterEngineException { log.info("running clientengine run method"); HashTree testTree = test; synchronized(testTree) { testTree.traverse(new PreCompiler(true)); // limit the changes to client only test elements testTree.traverse(new TurnElementsOn()); testTree.traverse(new ConvertListeners()); } String methodName="unknown"; try { JMeterContextService.startTest(); /* * Add fix for Deadlocks, see: * * See https://issues.apache.org/bugzilla/show_bug.cgi?id=48350 */ File baseDirRelative = FileServer.getFileServer().getBaseDirRelative(); String scriptName = FileServer.getFileServer().getScriptName(); synchronized(LOCK) { methodName="rconfigure()"; remote.rconfigure(testTree, host, baseDirRelative, scriptName); } log.info("sent test to " + host + " basedir='"+baseDirRelative+"'"); // $NON-NLS-1$ if(savep == null) { savep = new Properties(); } log.info("Sending properties "+savep); try { methodName="rsetProperties()"; remote.rsetProperties(savep); } catch (RemoteException e) { log.warn("Could not set properties: " + e.toString()); } methodName="rrunTest()"; remote.rrunTest(); log.info("sent run command to "+ host); } catch (IllegalStateException ex) { log.error("Error in "+methodName+" method "+ex); // $NON-NLS-1$ $NON-NLS-2$ tidyRMI(log); throw ex; // Don't wrap this error - display it as is } catch (Exception ex) { log.error("Error in "+methodName+" method "+ex); // $NON-NLS-1$ $NON-NLS-2$ tidyRMI(log); throw new JMeterEngineException("Error in "+methodName+" method "+ex, ex); // $NON-NLS-1$ $NON-NLS-2$ } } /** * Tidy up RMI access to allow JMeter client to exit. * Currently just interrups the "RMI Reaper" thread. * @param logger where to log the information */ public static void tidyRMI(Logger logger) { String reaperRE = JMeterUtils.getPropDefault("rmi.thread.name", "^RMI Reaper$"); for(Thread t : Thread.getAllStackTraces().keySet()){ String name = t.getName(); if (name.matches(reaperRE)) { logger.info("Interrupting "+name); t.interrupt(); } } } /** {@inheritDoc} */ // Called by JMeter ListenToTest if remoteStop is true public void exit() { log.info("about to exit remote server on "+host); try { remote.rexit(); } catch (RemoteException e) { log.warn("Could not perform remote exit: " + e.toString()); } } private Properties savep; /** {@inheritDoc} */ public void setProperties(Properties p) { savep = p; // Sent later } public boolean isActive() { return true; } } apache-jmeter-2.8/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java0000644000175000017500000005333712032647220026553 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.engine; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Properties; import java.util.concurrent.CopyOnWriteArrayList; import org.apache.jmeter.JMeter; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.TestBeanHelper; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.ListenerNotifier; import org.apache.jmeter.threads.PostThreadGroup; import org.apache.jmeter.threads.SetupThreadGroup; import org.apache.jmeter.threads.TestCompiler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.collections.SearchByClass; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Runs JMeter tests, either directly for local GUI and non-GUI invocations, * or started by {@link RemoteJMeterEngineImpl} when running in server mode. */ public class StandardJMeterEngine implements JMeterEngine, Runnable { private static final Logger log = LoggingManager.getLoggerForClass(); // Should we exit at end of the test? (only applies to server, because host is non-null) private static final boolean exitAfterTest = JMeterUtils.getPropDefault("server.exitaftertest", false); // $NON-NLS-1$ private static final boolean startListenersLater = JMeterUtils.getPropDefault("jmeterengine.startlistenerslater", true); // $NON-NLS-1$ static { if (startListenersLater){ log.info("Listeners will be started after enabling running version"); log.info("To revert to the earlier behaviour, define jmeterengine.startlistenerslater=false"); } } // Allow engine and threads to be stopped from outside a thread // e.g. from beanshell server // Assumes that there is only one instance of the engine // at any one time so it is not guaranteed to work ... private volatile static StandardJMeterEngine engine; /* * Allow functions etc to register for testStopped notification. * Only used by the function parser so far. * The list is merged with the testListeners and then cleared. */ private static final List testList = new ArrayList(); /** Whether to call System.exit(0) in exit after stopping RMI */ private static final boolean REMOTE_SYSTEM_EXIT = JMeterUtils.getPropDefault("jmeterengine.remote.system.exit", false); /** Whether to call System.exit(1) if threads won't stop */ private static final boolean SYSTEM_EXIT_ON_STOP_FAIL = JMeterUtils.getPropDefault("jmeterengine.stopfail.system.exit", true); /** Flag to show whether test is running. Set to false to stop creating more threads. */ private volatile boolean running = false; /** Flag to show whether test was shutdown gracefully. */ private volatile boolean shutdown = false; /** Flag to show whether engine is active. Set to false at end of test. */ private volatile boolean active = false; /** Thread Groups run sequentially */ private volatile boolean serialized = false; /** tearDown Thread Groups run after shutdown of main threads */ private volatile boolean tearDownOnShutdown = false; private HashTree test; private final String host; // The list of current thread groups; may be setUp, main, or tearDown. private final List groups = new CopyOnWriteArrayList(); public static void stopEngineNow() { if (engine != null) {// May be null if called from Unit test engine.stopTest(true); } } public static void stopEngine() { if (engine != null) { // May be null if called from Unit test engine.stopTest(false); } } public static synchronized void register(TestStateListener tl) { testList.add(tl); } public static boolean stopThread(String threadName) { return stopThread(threadName, false); } public static boolean stopThreadNow(String threadName) { return stopThread(threadName, true); } private static boolean stopThread(String threadName, boolean now) { if (engine == null) { return false;// e.g. not yet started } boolean wasStopped = false; // ConcurrentHashMap does not need synch. here for (AbstractThreadGroup threadGroup : engine.groups) { wasStopped = wasStopped || threadGroup.stopThread(threadName, now); } return wasStopped; } // End of code to allow engine to be controlled remotely public StandardJMeterEngine() { this(null); } public StandardJMeterEngine(String host) { this.host = host; // Hack to allow external control engine = this; } public void configure(HashTree testTree) { // Is testplan serialised? SearchByClass testPlan = new SearchByClass(TestPlan.class); testTree.traverse(testPlan); Object[] plan = testPlan.getSearchResults().toArray(); if (plan.length == 0) { throw new RuntimeException("Could not find the TestPlan class!"); } TestPlan tp = (TestPlan) plan[0]; serialized = tp.isSerialized(); tearDownOnShutdown = tp.isTearDownOnShutdown(); active = true; test = testTree; } public void runTest() throws JMeterEngineException { if (host != null){ long now=System.currentTimeMillis(); System.out.println("Starting the test on host " + host + " @ "+new Date(now)+" ("+now+")"); } try { Thread runningThread = new Thread(this, "StandardJMeterEngine"); runningThread.start(); } catch (Exception err) { stopTest(); StringWriter string = new StringWriter(); PrintWriter writer = new PrintWriter(string); err.printStackTrace(writer); throw new JMeterEngineException(err); } } private void removeThreadGroups(List elements) { Iterator iter = elements.iterator(); while (iter.hasNext()) { // Can't use for loop here because we remove elements Object item = iter.next(); if (item instanceof AbstractThreadGroup) { iter.remove(); } else if (!(item instanceof TestElement)) { iter.remove(); } } } @SuppressWarnings("deprecation") // Deliberate use of deprecated method private void notifyTestListenersOfStart(SearchByClass testListeners) { for (TestStateListener tl : testListeners.getSearchResults()) { if (tl instanceof TestBean) { TestBeanHelper.prepare((TestElement) tl); } if (host == null) { tl.testStarted(); } else { tl.testStarted(host); } } } private void notifyTestListenersOfEnd(SearchByClass testListeners) { log.info("Notifying test listeners of end of test"); for (TestStateListener tl : testListeners.getSearchResults()) { try { if (host == null) { tl.testEnded(); } else { tl.testEnded(host); } } catch (Exception e) { log.warn("Error encountered during shutdown of "+tl.toString(),e); } } if (host != null) { log.info("Test has ended on host "+host); long now=System.currentTimeMillis(); System.out.println("Finished the test on host " + host + " @ "+new Date(now)+" ("+now+")" +(exitAfterTest ? " - exit requested." : "")); if (exitAfterTest){ exit(); } } active=false; } public void reset() { if (running) { stopTest(); } } public synchronized void stopTest() { stopTest(true); } public synchronized void stopTest(boolean now) { shutdown = !now; Thread stopThread = new Thread(new StopTest(now)); stopThread.start(); } private class StopTest implements Runnable { private final boolean now; private StopTest(boolean b) { now = b; } public void run() { running = false; engine = null; if (now) { tellThreadGroupsToStop(); pause(10 * countStillActiveThreads()); boolean stopped = verifyThreadsStopped(); if (!stopped) { // we totally failed to stop the test if (JMeter.isNonGUI()) { // TODO should we call test listeners? That might hang too ... log.fatalError(JMeterUtils.getResString("stopping_test_failed")); if (SYSTEM_EXIT_ON_STOP_FAIL) { // default is true log.fatalError("Exitting"); System.out.println("Fatal error, could not stop test, exitting"); System.exit(1); } else { System.out.println("Fatal error, could not stop test"); } } else { JMeterUtils.reportErrorToUser( JMeterUtils.getResString("stopping_test_failed"), JMeterUtils.getResString("stopping_test_title")); } } // else will be done by threadFinished() } else { stopAllThreadGroups(); } } } public void run() { log.info("Running the test!"); running = true; JMeterContextService.startTest(); try { PreCompiler compiler = new PreCompiler(); test.traverse(compiler); } catch (RuntimeException e) { log.error("Error occurred compiling the tree:",e); JMeterUtils.reportErrorToUser("Error occurred compiling the tree: - see log file"); return; // no point continuing } /** * Notification of test listeners needs to happen after function * replacement, but before setting RunningVersion to true. */ SearchByClass testListeners = new SearchByClass(TestStateListener.class); // TL - S&E test.traverse(testListeners); // Merge in any additional test listeners // currently only used by the function parser testListeners.getSearchResults().addAll(testList); testList.clear(); // no longer needed if (!startListenersLater ) { notifyTestListenersOfStart(testListeners); } test.traverse(new TurnElementsOn()); if (startListenersLater) { notifyTestListenersOfStart(testListeners); } List testLevelElements = new LinkedList(test.list(test.getArray()[0])); removeThreadGroups(testLevelElements); SearchByClass setupSearcher = new SearchByClass(SetupThreadGroup.class); SearchByClass searcher = new SearchByClass(AbstractThreadGroup.class); SearchByClass postSearcher = new SearchByClass(PostThreadGroup.class); test.traverse(setupSearcher); test.traverse(searcher); test.traverse(postSearcher); TestCompiler.initialize(); // for each thread group, generate threads // hand each thread the sampler controller // and the listeners, and the timer Iterator setupIter = setupSearcher.getSearchResults().iterator(); Iterator iter = searcher.getSearchResults().iterator(); Iterator postIter = postSearcher.getSearchResults().iterator(); ListenerNotifier notifier = new ListenerNotifier(); int groupCount = 0; JMeterContextService.clearTotalThreads(); if (setupIter.hasNext()) { log.info("Starting setUp thread groups"); while (running && setupIter.hasNext()) {//for each setup thread group AbstractThreadGroup group = setupIter.next(); groupCount++; String groupName = group.getName(); log.info("Starting setUp ThreadGroup: " + groupCount + " : " + groupName); startThreadGroup(group, groupCount, setupSearcher, testLevelElements, notifier); if (serialized && setupIter.hasNext()) { log.info("Waiting for setup thread group: "+groupName+" to finish before starting next setup group"); group.waitThreadsStopped(); } } log.info("Waiting for all setup thread groups to exit"); //wait for all Setup Threads To Exit waitThreadsStopped(); log.info("All Setup Threads have ended"); groupCount=0; JMeterContextService.clearTotalThreads(); } groups.clear(); // The groups have all completed now /* * Here's where the test really starts. Run a Full GC now: it's no harm * at all (just delays test start by a tiny amount) and hitting one too * early in the test can impair results for short tests. */ JMeterUtils.helpGC(); JMeterContextService.getContext().setSamplingStarted(true); boolean mainGroups = running; // still running at this point, i.e. setUp was not cancelled while (running && iter.hasNext()) {// for each thread group AbstractThreadGroup group = iter.next(); //ignore Setup and Post here. We could have filtered the searcher. but then //future Thread Group objects wouldn't execute. if (group instanceof SetupThreadGroup) { continue; } if (group instanceof PostThreadGroup) { continue; } groupCount++; String groupName = group.getName(); log.info("Starting ThreadGroup: " + groupCount + " : " + groupName); startThreadGroup(group, groupCount, searcher, testLevelElements, notifier); if (serialized && iter.hasNext()) { log.info("Waiting for thread group: "+groupName+" to finish before starting next group"); group.waitThreadsStopped(); } } // end of thread groups if (groupCount == 0){ // No TGs found log.info("No enabled thread groups found"); } else { if (running) { log.info("All thread groups have been started"); } else { log.info("Test stopped - no more thread groups will be started"); } } //wait for all Test Threads To Exit waitThreadsStopped(); groups.clear(); // The groups have all completed now if (postIter.hasNext()){ groupCount = 0; JMeterContextService.clearTotalThreads(); log.info("Starting tearDown thread groups"); if (mainGroups && !running) { // i.e. shutdown/stopped during main thread groups running = shutdown & tearDownOnShutdown; // re-enable for tearDown if necessary } while (running && postIter.hasNext()) {//for each setup thread group AbstractThreadGroup group = postIter.next(); groupCount++; String groupName = group.getName(); log.info("Starting tearDown ThreadGroup: " + groupCount + " : " + groupName); startThreadGroup(group, groupCount, postSearcher, testLevelElements, notifier); if (serialized && postIter.hasNext()) { log.info("Waiting for post thread group: "+groupName+" to finish before starting next post group"); group.waitThreadsStopped(); } } waitThreadsStopped(); // wait for Post threads to stop } notifyTestListenersOfEnd(testListeners); } /** * @return total of active threads in all Thread Groups */ private int countStillActiveThreads() { int reminingThreads= 0; for (AbstractThreadGroup threadGroup : groups) { reminingThreads += threadGroup.numberOfActiveThreads(); } return reminingThreads; } private void startThreadGroup(AbstractThreadGroup group, int groupCount, SearchByClass searcher, List testLevelElements, ListenerNotifier notifier) { int numThreads = group.getNumThreads(); JMeterContextService.addTotalThreads(numThreads); boolean onErrorStopTest = group.getOnErrorStopTest(); boolean onErrorStopTestNow = group.getOnErrorStopTestNow(); boolean onErrorStopThread = group.getOnErrorStopThread(); boolean onErrorStartNextLoop = group.getOnErrorStartNextLoop(); String groupName = group.getName(); log.info("Starting " + numThreads + " threads for group " + groupName + "."); if (onErrorStopTest) { log.info("Test will stop on error"); } else if (onErrorStopTestNow) { log.info("Test will stop abruptly on error"); } else if (onErrorStopThread) { log.info("Thread will stop on error"); } else if (onErrorStartNextLoop) { log.info("Thread will start next loop on error"); } else { log.info("Thread will continue on error"); } ListedHashTree threadGroupTree = (ListedHashTree) searcher.getSubTree(group); threadGroupTree.add(group, testLevelElements); groups.add(group); group.start(groupCount, notifier, threadGroupTree, this); } /** * @return boolean true if all threads of all Threead Groups stopped */ private boolean verifyThreadsStopped() { boolean stoppedAll = true; // ConcurrentHashMap does not need synch. here for (AbstractThreadGroup threadGroup : groups) { stoppedAll = stoppedAll && threadGroup.verifyThreadsStopped(); } return stoppedAll; } /** * Wait for Group Threads to stop */ private void waitThreadsStopped() { // ConcurrentHashMap does not need synch. here for (AbstractThreadGroup threadGroup : groups) { threadGroup.waitThreadsStopped(); } } /** * For each thread group, invoke {@link AbstractThreadGroup#tellThreadsToStop()} */ private void tellThreadGroupsToStop() { // ConcurrentHashMap does not need protecting for (AbstractThreadGroup threadGroup : groups) { threadGroup.tellThreadsToStop(); } } public void askThreadsToStop() { if (engine != null) { // Will be null if StopTest thread has started engine.stopTest(false); } } /** * For each current thread group, invoke: *
          *
        • {@link AbstractThreadGroup#stop()} - set stop flag
        • *
        */ private void stopAllThreadGroups() { // ConcurrentHashMap does not need synch. here for (AbstractThreadGroup threadGroup : groups) { threadGroup.stop(); } } // Remote exit // Called by RemoteJMeterEngineImpl.rexit() // and by notifyTestListenersOfEnd() iff exitAfterTest is true; // in turn that is called by the run() method and the StopTest class // also called public void exit() { ClientJMeterEngine.tidyRMI(log); // This should be enough to allow server to exit. if (REMOTE_SYSTEM_EXIT) { // default is false log.warn("About to run System.exit(0) on "+host); // Needs to be run in a separate thread to allow RMI call to return OK Thread t = new Thread() { @Override public void run() { pause(1000); // Allow RMI to complete log.info("Bye from "+host); System.out.println("Bye from "+host); System.exit(0); } }; t.start(); } } private void pause(long ms){ try { Thread.sleep(ms); } catch (InterruptedException e) { } } public void setProperties(Properties p) { log.info("Applying properties "+p); JMeterUtils.getJMeterProperties().putAll(p); } public boolean isActive() { return active; } } apache-jmeter-2.8/src/core/org/apache/jmeter/exceptions/0000755000175000017500000000000012165514773022631 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/exceptions/IllegalUserActionException.java0000644000175000017500000000247412032647217030721 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.exceptions; /** */ public class IllegalUserActionException extends Exception { private static final long serialVersionUID = 240L; /** * @deprecated - use IllegalUserActionException(String) */ @Deprecated // Needed for serialisation testing public IllegalUserActionException() { super(); } public IllegalUserActionException(String name) { super(name); } public IllegalUserActionException(String name, Throwable t) { super(name, t); } }apache-jmeter-2.8/src/core/org/apache/jmeter/processor/0000755000175000017500000000000012165514773022467 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/processor/PreProcessor.java0000644000175000017500000000175412032647217025760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.processor; /** * PreProcessors are executed just prior to a sample being run. * * @version $Revision: 1377076 $ */ public interface PreProcessor { void process(); } apache-jmeter-2.8/src/core/org/apache/jmeter/processor/PostProcessor.java0000644000175000017500000000220512032647217026147 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.processor; /** * The PostProcessor is activated after a sample result has been generated. * * @version $Revision: 1377076 $ */ public interface PostProcessor { /** * Provides the PostProcessor with a SampleResult object from which to * extract values for use in future Queries. */ void process(); } apache-jmeter-2.8/src/core/org/apache/jmeter/processor/gui/0000755000175000017500000000000012165514773023253 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/processor/gui/AbstractPreProcessorGui.java0000644000175000017500000000261112032647217030666 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.processor.gui; import java.util.Arrays; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; public abstract class AbstractPreProcessorGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultExtractorMenu(); } public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.PRE_PROCESSORS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/processor/gui/AbstractPostProcessorGui.java0000644000175000017500000000320012032647217031060 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.processor.gui; import java.util.Arrays; import java.util.Collection; import org.apache.jmeter.gui.AbstractScopedJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * This is the base class for JMeter GUI components which manage PostProcessors. * * PostProcessors which can be applied to different scopes (parent, children or both) * need to use the createScopePanel() to add the panel to the GUI, and they also * need to use saveScopeSettings() and showScopeSettings() to keep the test element * and GUI in synch. * */ public abstract class AbstractPostProcessorGui extends AbstractScopedJMeterGuiComponent { private static final long serialVersionUID = 240L; public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.POST_PROCESSORS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/0000755000175000017500000000000012165514773023030 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/ImageVisualizer.java0000644000175000017500000000202112032647217026757 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.Image; /** * TODO - interface is used but getImage() does not appear to be used * * @version $Revision: 1377064 $ */ public interface ImageVisualizer { Image getImage(); } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/Visualizer.java0000644000175000017500000000322212032647217026020 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.samplers.SampleResult; /** * Implement this method to be a Visualizer for JMeter. This interface defines a * single method, "add()", that provides the means by which * {@link org.apache.jmeter.samplers.SampleResult SampleResults} are passed to * the implementing visualizer for display/logging. The easiest way to create * the visualizer is to extend the * {@link org.apache.jmeter.visualizers.gui.AbstractVisualizer} class. * */ public interface Visualizer { /** * This method is called by sampling thread to inform the visualizer about * the arrival of a new sample. */ void add(SampleResult sample); /** * This method is used to indicate a visualizer generates statistics. * * @return true if visualiser generates statistics */ boolean isStats(); } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/RunningSample.java0000644000175000017500000002333112032647217026450 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.text.DecimalFormat; import org.apache.jmeter.samplers.SampleResult; /** *

        * Running sample data container. Just instantiate a new instance of this * class, and then call {@link #addSample(SampleResult)} a few times, and pull * the stats out with whatever methods you prefer. *

        *

        * Please note that this class is not thread-safe. * The calling class is responsible for ensuring thread safety if required. * Versions prior to 2.3.2 appeared to be thread-safe but weren't as label and index were not final. * Also the caller needs to synchronize access in order to enure that variables are consistent. *

        * */ public class RunningSample { private final DecimalFormat rateFormatter = new DecimalFormat("#.0"); // $NON-NLS-1$ private final DecimalFormat errorFormatter = new DecimalFormat("#0.00%"); // $NON-NLS-1$ private long counter; private long runningSum; private long max, min; private long errorCount; private long firstTime; private long lastTime; private final String label; private final int index; /** * Use this constructor to create the initial instance */ public RunningSample(String label, int index) { this.label = label; this.index = index; init(); } /** * Copy constructor to create a duplicate of existing instance (without the * disadvantages of clone() * * @param src existing RunningSample to be copied */ public RunningSample(RunningSample src) { this.counter = src.counter; this.errorCount = src.errorCount; this.firstTime = src.firstTime; this.index = src.index; this.label = src.label; this.lastTime = src.lastTime; this.max = src.max; this.min = src.min; this.runningSum = src.runningSum; } private void init() { counter = 0L; runningSum = 0L; max = Long.MIN_VALUE; min = Long.MAX_VALUE; errorCount = 0L; firstTime = Long.MAX_VALUE; lastTime = 0L; } /** * Clear the counters (useful for differential stats) * */ public void clear() { init(); } /** * Get the elapsed time for the samples * * @return how long the samples took */ public long getElapsed() { if (lastTime == 0) { return 0;// No samples collected ... } return lastTime - firstTime; } /** * Returns the throughput associated to this sampler in requests per second. * May be slightly skewed because it takes the timestamps of the first and * last samples as the total time passed, and the test may actually have * started before that start time and ended after that end time. */ public double getRate() { if (counter == 0) { return 0.0; // Better behaviour when howLong=0 or lastTime=0 } long howLongRunning = lastTime - firstTime; if (howLongRunning == 0) { return Double.MAX_VALUE; } return (double) counter / howLongRunning * 1000.0; } /** * Returns the throughput associated to this sampler in requests per min. * May be slightly skewed because it takes the timestamps of the first and * last samples as the total time passed, and the test may actually have * started before that start time and ended after that end time. */ public double getRatePerMin() { if (counter == 0) { return 0.0; // Better behaviour when howLong=0 or lastTime=0 } long howLongRunning = lastTime - firstTime; if (howLongRunning == 0) { return Double.MAX_VALUE; } return (double) counter / howLongRunning * 60000.0; } /** * Returns a String that represents the throughput associated for this * sampler, in units appropriate to its dimension: *

        * The number is represented in requests/second or requests/minute or * requests/hour. *

        * Examples: "34.2/sec" "0.1/sec" "43.0/hour" "15.9/min" * * @return a String representation of the rate the samples are being taken * at. */ public String getRateString() { double rate = getRate(); if (rate == Double.MAX_VALUE) { return "N/A"; } String unit = "sec"; if (rate < 1.0) { rate *= 60.0; unit = "min"; } if (rate < 1.0) { rate *= 60.0; unit = "hour"; } return rateFormatter.format(rate) + "/" + unit; } public String getLabel() { return label; } public int getIndex() { return index; } /** * Records a sample. * */ public void addSample(SampleResult res) { long aTimeInMillis = res.getTime(); counter+=res.getSampleCount(); errorCount += res.getErrorCount(); long startTime = res.getStartTime(); long endTime = res.getEndTime(); if (firstTime > startTime) { // this is our first sample, set the start time to current timestamp firstTime = startTime; } // Always update the end time if (lastTime < endTime) { lastTime = endTime; } runningSum += aTimeInMillis; if (aTimeInMillis > max) { max = aTimeInMillis; } if (aTimeInMillis < min) { min = aTimeInMillis; } } /** * Adds another RunningSample to this one. * Does not check if it has the same label and index. */ public void addSample(RunningSample rs) { this.counter += rs.counter; this.errorCount += rs.errorCount; this.runningSum += rs.runningSum; if (this.firstTime > rs.firstTime) { this.firstTime = rs.firstTime; } if (this.lastTime < rs.lastTime) { this.lastTime = rs.lastTime; } if (this.max < rs.max) { this.max = rs.max; } if (this.min > rs.min) { this.min = rs.min; } } /** * Returns the time in milliseconds of the quickest sample. * * @return the time in milliseconds of the quickest sample. */ public long getMin() { long rval = 0; if (min != Long.MAX_VALUE) { rval = min; } return rval; } /** * Returns the time in milliseconds of the slowest sample. * * @return the time in milliseconds of the slowest sample. */ public long getMax() { long rval = 0; if (max != Long.MIN_VALUE) { rval = max; } return rval; } /** * Returns the average time in milliseconds that samples ran in. * * @return the average time in milliseconds that samples ran in. */ public long getAverage() { if (counter == 0) { return 0; } return runningSum / counter; } /** * Returns the number of samples that have been recorded by this instance of * the RunningSample class. * * @return the number of samples that have been recorded by this instance of * the RunningSample class. */ public long getNumSamples() { return counter; } /** * Returns the raw double value of the percentage of samples with errors * that were recorded. (Between 0.0 and 1.0) If you want a nicer return * format, see {@link #getErrorPercentageString()}. * * @return the raw double value of the percentage of samples with errors * that were recorded. */ public double getErrorPercentage() { double rval = 0.0; if (counter == 0) { return rval; } rval = (double) errorCount / (double) counter; return rval; } /** * Returns a String which represents the percentage of sample errors that * have occurred. ("0.00%" through "100.00%") * * @return a String which represents the percentage of sample errors that * have occurred. */ public String getErrorPercentageString() { double myErrorPercentage = this.getErrorPercentage(); return errorFormatter.format(myErrorPercentage); } /** * For debugging purposes, mainly. */ @Override public String toString() { StringBuilder mySB = new StringBuilder(); mySB.append("Samples: " + this.getNumSamples() + " "); mySB.append("Avg: " + this.getAverage() + " "); mySB.append("Min: " + this.getMin() + " "); mySB.append("Max: " + this.getMax() + " "); mySB.append("Error Rate: " + this.getErrorPercentageString() + " "); mySB.append("Sample Rate: " + this.getRateString()); return mySB.toString(); } /** * @return errorCount */ public long getErrorCount() { return errorCount; } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/Printable.java0000644000175000017500000000215712032647217025611 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import javax.swing.JComponent; /** * Printable is used by components that can be saved to an external file. It is * up to the visualizers to get the right component containing the JPanel or * JComponent to save. */ public interface Printable { JComponent getPrintableComponent(); } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/gui/0000755000175000017500000000000012165514773023614 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/gui/AbstractVisualizer.java0000644000175000017500000003440012032647217030272 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers.gui; import java.awt.Component; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.SavePropertyDialog; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.reporters.AbstractListenerElement; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.Visualizer; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This is the base class for JMeter GUI components which can display test * results in some way. It provides the following conveniences to developers: *

          *
        • Implements the * {@link org.apache.jmeter.gui.JMeterGUIComponent JMeterGUIComponent} interface * that allows your Gui visualizer to "plug-in" to the JMeter GUI environment. * Provides implementations for the following methods: *
            *
          • {@link org.apache.jmeter.gui.JMeterGUIComponent#configure(TestElement) configure(TestElement)}. * Any additional parameters of your Visualizer need to be handled by you.
          • *
          • {@link org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() createTestElement()}. * For most purposes, the default * {@link org.apache.jmeter.reporters.ResultCollector ResultCollector} created * by this method is sufficient.
          • *
          • {@link org.apache.jmeter.gui.JMeterGUIComponent#getMenuCategories getMenuCategories()}. * To control where in the GUI your visualizer can be added.
          • *
          • {@link org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) modifyTestElement(TestElement)}. * Again, additional parameters you require have to be handled by you.
          • *
          • {@link org.apache.jmeter.gui.JMeterGUIComponent#createPopupMenu() createPopupMenu()}.
          • *
          *
        • *
        • Provides convenience methods to help you make a JMeter-compatible GUI: *
            *
          • {@link #makeTitlePanel()}. Returns a panel that includes the name of * the component, and a FilePanel that allows users to control what file samples * are logged to.
          • *
          • {@link #getModel()} and {@link #setModel(ResultCollector)} methods for * setting and getting the model class that handles the receiving and logging of * sample results.
          • *
          *
        • *
        * For most developers, making a new visualizer is primarly for the purpose of * either calculating new statistics on the sample results that other * visualizers don't calculate, or displaying the results visually in a new and * interesting way. Making a new visualizer for either of these purposes is easy - * just extend this class and implement the * {@link org.apache.jmeter.visualizers.Visualizer#add add(SampleResult)} * method and display the results as you see fit. This AbstractVisualizer and * the default * {@link org.apache.jmeter.reporters.ResultCollector ResultCollector} handle * logging and registering to receive SampleEvents for you - all you need to do * is include the JPanel created by makeTitlePanel somewhere in your gui to * allow users set the log file. *

        * If you are doing more than that, you may need to extend * {@link org.apache.jmeter.reporters.ResultCollector ResultCollector} as well * and modify the {@link #configure(TestElement)}, * {@link #modifyTestElement(TestElement)}, and {@link #createTestElement()} * methods to create and modify your alternate ResultCollector. For an example * of this, see the * {@link org.apache.jmeter.visualizers.MailerVisualizer MailerVisualizer}. *

        * */ public abstract class AbstractVisualizer extends AbstractListenerGui implements Visualizer, ChangeListener, UnsharedComponent, Clearable { private static final long serialVersionUID = 240L; /** Logging. */ private static final Logger log = LoggingManager.getLoggerForClass(); /** File Extensions */ private static final String[] EXTS = { ".jtl", ".csv" }; // $NON-NLS-1$ $NON-NLS-2$ /** A panel allowing results to be saved. */ private final FilePanel filePanel; /** A checkbox choosing whether or not only errors should be logged. */ private final JCheckBox errorLogging; /* A checkbox choosing whether or not only successes should be logged. */ private final JCheckBox successOnlyLogging; protected ResultCollector collector = new ResultCollector(); protected boolean isStats = false; public AbstractVisualizer() { super(); // errorLogging and successOnlyLogging are mutually exclusive errorLogging = new JCheckBox(JMeterUtils.getResString("log_errors_only")); // $NON-NLS-1$ errorLogging.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { if (errorLogging.isSelected()) { successOnlyLogging.setSelected(false); } } }); successOnlyLogging = new JCheckBox(JMeterUtils.getResString("log_success_only")); // $NON-NLS-1$ successOnlyLogging.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { if (successOnlyLogging.isSelected()) { errorLogging.setSelected(false); } } }); JButton saveConfigButton = new JButton(JMeterUtils.getResString("config_save_settings")); // $NON-NLS-1$ saveConfigButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SavePropertyDialog d = new SavePropertyDialog( GuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("sample_result_save_configuration"), // $NON-NLS-1$ true, collector.getSaveConfig()); d.pack(); ComponentUtil.centerComponentInComponent(GuiPackage.getInstance().getMainFrame(), d); d.setVisible(true); } }); filePanel = new FilePanel(JMeterUtils.getResString("file_visualizer_output_file"), EXTS); // $NON-NLS-1$ filePanel.addChangeListener(this); filePanel.add(new JLabel(JMeterUtils.getResString("log_only"))); // $NON-NLS-1$ filePanel.add(errorLogging); filePanel.add(successOnlyLogging); filePanel.add(saveConfigButton); } public boolean isStats() { return isStats; } /** * Gets the checkbox which selects whether or not only errors should be * logged. Subclasses don't normally need to worry about this checkbox, * because it is automatically added to the GUI in {@link #makeTitlePanel()}, * and the behavior is handled in this base class. * * @return the error logging checkbox */ protected JCheckBox getErrorLoggingCheckbox() { return errorLogging; } /** * Provides access to the ResultCollector model class for extending * implementations. Using this method and setModel(ResultCollector) is only * necessary if your visualizer requires a differently behaving * ResultCollector. Using these methods will allow maximum reuse of the * methods provided by AbstractVisualizer in this event. */ protected ResultCollector getModel() { return collector; } /** * Gets the file panel which allows the user to save results to a file. * Subclasses don't normally need to worry about this panel, because it is * automatically added to the GUI in {@link #makeTitlePanel()}, and the * behavior is handled in this base class. * * @return the file panel allowing users to save results */ protected Component getFilePanel() { return filePanel; } /** * Sets the filename which results will be saved to. This will set the * filename in the FilePanel. Subclasses don't normally need to call this * method, because configuration of the FilePanel is handled in this base * class. * * @param filename * the new filename * * @see #getFilePanel() */ public void setFile(String filename) { // TODO: Does this method need to be public? It isn't currently // called outside of this class. filePanel.setFilename(filename); } /** * Gets the filename which has been entered in the FilePanel. Subclasses * don't normally need to call this method, because configuration of the * FilePanel is handled in this base class. * * @return the current filename * * @see #getFilePanel() */ public String getFile() { // TODO: Does this method need to be public? It isn't currently // called outside of this class. return filePanel.getFilename(); } /** * Invoked when the target of the listener has changed its state. This * implementation assumes that the target is the FilePanel, and will update * the result collector for the new filename. * * @param e * the event that has occurred */ public void stateChanged(ChangeEvent e) { log.debug("getting new collector"); collector = (ResultCollector) createTestElement(); collector.loadExistingFile(); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { if (collector == null) { collector = new ResultCollector(); } modifyTestElement(collector); return (TestElement) collector.clone(); } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement c) { configureTestElement((AbstractListenerElement) c); if (c instanceof ResultCollector) { ResultCollector rc = (ResultCollector) c; rc.setErrorLogging(errorLogging.isSelected()); rc.setSuccessOnlyLogging(successOnlyLogging.isSelected()); rc.setFilename(getFile()); collector = rc; } } /* Overrides AbstractJMeterGuiComponent.configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); setFile(el.getPropertyAsString(ResultCollector.FILENAME)); ResultCollector rc = (ResultCollector) el; errorLogging.setSelected(rc.isErrorLogging()); successOnlyLogging.setSelected(rc.isSuccessOnlyLogging()); if (collector == null) { collector = new ResultCollector(); } collector.setSaveConfig((SampleSaveConfiguration) rc.getSaveConfig().clone()); } /** * This provides a convenience for extenders when they implement the * {@link org.apache.jmeter.gui.JMeterGUIComponent#createTestElement()} * method. This method will set the name, gui class, and test class for the * created Test Element. It should be called by every extending class when * creating Test Elements, as that will best assure consistent behavior. * * @param mc * the TestElement being created. */ protected void configureTestElement(AbstractListenerElement mc) { // TODO: Should the method signature of this method be changed to // match the super-implementation (using a TestElement parameter // instead of AbstractListenerElement)? This would require an // instanceof check before adding the listener (below), but would // also make the behavior a bit more obvious for sub-classes -- the // Java rules dealing with this situation aren't always intuitive, // and a subclass may think it is calling this version of the method // when it is really calling the superclass version instead. super.configureTestElement(mc); mc.setListener(this); } /** * Create a standard title section for JMeter components. This includes the * title for the component and the Name Panel allowing the user to change * the name for the component. The AbstractVisualizer also adds the * FilePanel allowing the user to save the results, and the error logging * checkbox, allowing the user to choose whether or not only errors should * be logged. *

        * This method is typically added to the top of the component at the * beginning of the component's init method. * * @return a panel containing the component title, name panel, file panel, * and error logging checkbox */ @Override protected Container makeTitlePanel() { Container panel = super.makeTitlePanel(); // Note: the file panel already includes the error logging checkbox, // so we don't have to add it explicitly. panel.add(getFilePanel()); return panel; } /** * Provides extending classes the opportunity to set the ResultCollector * model for the Visualizer. This is useful to allow maximum reuse of the * methods from AbstractVisualizer. * * @param collector */ protected void setModel(ResultCollector collector) { this.collector = collector; } @Override public void clearGui(){ super.clearGui(); filePanel.clearGui(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/gui/AbstractListenerGui.java0000644000175000017500000000446412032647217030376 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers.gui; import java.util.Arrays; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * Basic Listener/Visualiser Gui class to correspond with AbstractPreProcessorGui etc. */ public abstract class AbstractListenerGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

        * This implementation returns menu items appropriate for most visualizer * components. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultVisualizerMenu(); } /** * This is the list of menu categories this gui component will be available * under. This implementation returns * {@link org.apache.jmeter.gui.util.MenuFactory#LISTENERS}, which is * appropriate for most visualizer components. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.LISTENERS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/Sample.java0000644000175000017500000001243212032647217025107 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.io.Serializable; import java.text.Format; import java.util.Date; public class Sample implements Serializable, Comparable { private static final long serialVersionUID = 240L; private final long data; // = elapsed private final long average; private final long median; private final long distributionLine; // TODO: what is this for? private final long deviation; private final double throughput; private final long errorCount; private final boolean success; private final String label; private final String threadName; private final long count; private final long endTime; private final int bytes; public Sample(String name, long data, long average, long deviation, long median, long distributionLine, double throughput, long errorCount, boolean success, long num, long endTime) { this.data = data; this.average = average; this.deviation = deviation; this.throughput = throughput; this.success = success; this.median = median; this.distributionLine = distributionLine; this.label = name; this.errorCount = errorCount; this.count = num; this.endTime = endTime; this.bytes = 0; this.threadName = ""; } public Sample(String name, long data, long average, long deviation, long median, long distributionLine, double throughput, long errorCount, boolean success, long num, long endTime, int bytes, String threadName) { this.data = data; this.average = average; this.deviation = deviation; this.throughput = throughput; this.success = success; this.median = median; this.distributionLine = distributionLine; this.label = name; this.errorCount = errorCount; this.count = num; this.endTime = endTime; this.bytes = bytes; this.threadName = threadName; } public Sample() { this(null, 0, 0, 0, 0, 0, 0, 0, true, 0, 0); } // Appears not to be used - however it is invoked via the Functor class public int getBytes() { return bytes; } /** * @return Returns the average. */ public long getAverage() { return average; } /** * @return Returns the count. */ public long getCount() { return count; } /** * @return Returns the data (usually elapsed time) */ public long getData() { return data; } /** * @return Returns the deviation. */ public long getDeviation() { return deviation; } /** * @return Returns the distributionLine. */ public long getDistributionLine() { return distributionLine; } /** * @return Returns the error. */ public boolean isSuccess() { return success; } /** * @return Returns the errorCount. */ public long getErrorCount() { return errorCount; } /** * @return Returns the label. */ public String getLabel() { return label; } /** * @return Returns the threadName. */ public String getThreadName() { return threadName; } /** * @return Returns the median. */ public long getMedian() { return median; } /** * @return Returns the throughput. */ public double getThroughput() { return throughput; } /** {@inheritDoc} */ public int compareTo(Sample o) { Sample oo = o; return ((count - oo.count) < 0 ? -1 : (count == oo.count ? 0 : 1)); } // TODO should equals and hashCode depend on field other than count? @Override public boolean equals(Object o){ return ( (o instanceof Sample) && (this.compareTo((Sample) o) == 0) ); } @Override public int hashCode(){ return (int)(count ^ (count >>> 32)); } /** * @return Returns the endTime. */ public long getEndTime() { return endTime; } /** * @return Returns the (calculated) startTime, assuming Data is the elapsed time. */ public long getStartTime() { return endTime-data; } /** * @return the start time using the specified format * Intended for use from Functors */ public String getStartTimeFormatted(Format format) { return format.format(new Date(getStartTime())); } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/TableSample.java0000644000175000017500000000734012032647217026061 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.io.Serializable; import java.text.Format; import java.util.Date; /** * Class to hold data for the TableVisualiser. */ public class TableSample implements Serializable, Comparable { private static final long serialVersionUID = 240L; private final long totalSamples; private final int sampleCount; // number of samples in this entry private final long startTime; private final String threadName; private final String label; private final long elapsed; private final boolean success; private final long bytes; private final long latency; /** * @deprecated for unit test code only */ @Deprecated public TableSample() { this(0, 1, 0, "", "", 0, true, 0, 0); } public TableSample(long totalSamples, int sampleCount, long startTime, String threadName, String label, long elapsed, boolean success, long bytes, long latency) { this.totalSamples = totalSamples; this.sampleCount = sampleCount; this.startTime = startTime; this.threadName = threadName; this.label = label; this.elapsed = elapsed/sampleCount; this.success = success; this.bytes = bytes/sampleCount; this.latency = latency; } // The following getters may appear not to be used - however they are invoked via the Functor class public long getBytes() { return bytes; } public String getSampleNumberString(){ StringBuilder sb = new StringBuilder(); if (sampleCount > 1) { sb.append(totalSamples-sampleCount+1); sb.append('-'); } sb.append(totalSamples); return sb.toString(); } public long getElapsed() { return elapsed; } public boolean isSuccess() { return success; } public long getStartTime() { return startTime; } /** * @return the start time using the specified format * Intended for use from Functors */ public String getStartTimeFormatted(Format format) { return format.format(new Date(getStartTime())); } public String getThreadName() { return threadName; } public String getLabel() { return label; } public int compareTo(TableSample o) { TableSample oo = o; return ((totalSamples - oo.totalSamples) < 0 ? -1 : (totalSamples == oo.totalSamples ? 0 : 1)); } // TODO should equals and hashCode depend on field other than count? @Override public boolean equals(Object o){ return ( (o instanceof TableSample) && (this.compareTo((TableSample) o) == 0) ); } @Override public int hashCode(){ return (int)(totalSamples ^ (totalSamples >>> 32)); } /** * @return the latency */ public long getLatency() { return latency; } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java0000644000175000017500000002021712032647217030306 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.util.Map; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.math.StatCalculatorLong; /** * Aggegate sample data container. Just instantiate a new instance of this * class, and then call {@link #addSample(SampleResult)} a few times, and pull * the stats out with whatever methods you prefer. * */ public class SamplingStatCalculator { private final StatCalculatorLong calculator = new StatCalculatorLong(); private double maxThroughput; private long firstTime; private String label; private volatile Sample currentSample; public SamplingStatCalculator(){ // Only for use by test code this(""); } public SamplingStatCalculator(String label) { this.label = label; init(); } private void init() { firstTime = Long.MAX_VALUE; calculator.clear(); maxThroughput = Double.MIN_VALUE; currentSample = new Sample(); } /** * Clear the counters (useful for differential stats) * */ public synchronized void clear() { init(); } public Sample getCurrentSample() { return currentSample; } /** * Get the elapsed time for the samples * * @return how long the samples took */ public long getElapsed() { if (getCurrentSample().getEndTime() == 0) { return 0;// No samples collected ... } return getCurrentSample().getEndTime() - firstTime; } /** * Returns the throughput associated to this sampler in requests per second. * May be slightly skewed because it takes the timestamps of the first and * last samples as the total time passed, and the test may actually have * started before that start time and ended after that end time. */ public double getRate() { if (calculator.getCount() == 0) { return 0.0; // Better behaviour when howLong=0 or lastTime=0 } return getCurrentSample().getThroughput(); } /** * Throughput in bytes / second * * @return throughput in bytes/second */ public double getBytesPerSecond() { // Code duplicated from getPageSize() double rate = 0; if (this.getElapsed() > 0 && calculator.getTotalBytes() > 0) { rate = calculator.getTotalBytes() / ((double) this.getElapsed() / 1000); } if (rate < 0) { rate = 0; } return rate; } /** * Throughput in kilobytes / second * * @return Throughput in kilobytes / second */ public double getKBPerSecond() { return getBytesPerSecond() / 1024; // 1024=bytes per kb } /** * calculates the average page size, which means divide the bytes by number * of samples. * * @return average page size in bytes (0 if sample count is zero) */ public double getAvgPageBytes() { long count = calculator.getCount(); if (count == 0) { return 0; } return calculator.getTotalBytes() / (double) count; } public String getLabel() { return label; } /** * Records a sample. * */ public Sample addSample(SampleResult res) { long rtime, cmean, cstdv, cmedian, cpercent, eCount, endTime; double throughput; boolean rbool; synchronized (calculator) { calculator.addValue(res.getTime(), res.getSampleCount()); calculator.addBytes(res.getBytes()); setStartTime(res); eCount = getCurrentSample().getErrorCount(); eCount += res.getErrorCount(); endTime = getEndTime(res); long howLongRunning = endTime - firstTime; throughput = ((double) calculator.getCount() / (double) howLongRunning) * 1000.0; if (throughput > maxThroughput) { maxThroughput = throughput; } rtime = res.getTime(); cmean = (long)calculator.getMean(); cstdv = (long)calculator.getStandardDeviation(); cmedian = calculator.getMedian().longValue(); cpercent = calculator.getPercentPoint( 0.500 ).longValue(); // TODO cpercent is the same as cmedian here - why? and why pass it to "distributionLine"? rbool = res.isSuccessful(); } long count = calculator.getCount(); Sample s = new Sample( null, rtime, cmean, cstdv, cmedian, cpercent, throughput, eCount, rbool, count, endTime ); currentSample = s; return s; } private long getEndTime(SampleResult res) { long endTime = res.getEndTime(); long lastTime = getCurrentSample().getEndTime(); if (lastTime < endTime) { lastTime = endTime; } return lastTime; } /** * @param res */ private void setStartTime(SampleResult res) { long startTime = res.getStartTime(); if (firstTime > startTime) { // this is our first sample, set the start time to current timestamp firstTime = startTime; } } /** * Returns the raw double value of the percentage of samples with errors * that were recorded. (Between 0.0 and 1.0) * * @return the raw double value of the percentage of samples with errors * that were recorded. */ public double getErrorPercentage() { double rval = 0.0; if (calculator.getCount() == 0) { return rval; } rval = (double) getCurrentSample().getErrorCount() / (double) calculator.getCount(); return rval; } /** * For debugging purposes, only. */ @Override public String toString() { StringBuilder mySB = new StringBuilder(); mySB.append("Samples: " + this.getCount() + " "); mySB.append("Avg: " + this.getMean() + " "); mySB.append("Min: " + this.getMin() + " "); mySB.append("Max: " + this.getMax() + " "); mySB.append("Error Rate: " + this.getErrorPercentage() + " "); mySB.append("Sample Rate: " + this.getRate()); return mySB.toString(); } /** * @return errorCount */ public long getErrorCount() { return getCurrentSample().getErrorCount(); } /** * @return Returns the maxThroughput. */ public double getMaxThroughput() { return maxThroughput; } public Map getDistribution() { return calculator.getDistribution(); } public Number getPercentPoint(double percent) { return calculator.getPercentPoint(percent); } public long getCount() { return calculator.getCount(); } public Number getMax() { return calculator.getMax(); } public double getMean() { return calculator.getMean(); } public Number getMeanAsNumber() { return Long.valueOf((long) calculator.getMean()); } public Number getMedian() { return calculator.getMedian(); } public Number getMin() { if (calculator.getMin().longValue() < 0) { return Long.valueOf(0); } return calculator.getMin(); } public Number getPercentPoint(float percent) { return calculator.getPercentPoint(percent); } public double getStandardDeviation() { return calculator.getStandardDeviation(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/CachingStatCalculator.java0000644000175000017500000000360112032647217030066 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.jmeter.samplers.SampleResult; /** * Provides storage of samples in addition to calculations */ public class CachingStatCalculator extends SamplingStatCalculator { private final List storedValues = Collections.synchronizedList(new ArrayList()); public CachingStatCalculator(String string) { super(string); } public List getSamples() { return storedValues; } public Sample getSample(int index) { synchronized( storedValues ){ if (index < storedValues.size()) { return storedValues.get(index); } } return null; } @Override public void clear() { super.clear(); storedValues.clear(); } /** * Records a sample. * */ @Override public Sample addSample(SampleResult res) { final Sample sample = super.addSample(res); storedValues.add(sample); return sample; } } apache-jmeter-2.8/src/core/org/apache/jmeter/visualizers/package.html0000644000175000017500000000246212032647217025306 0ustar ebourgebourg This package contains the interfaces that have to be implemented by any class wishing to display or present data collected in SampleResults.

        The primary classes/interfaces to be concerned with for implementers is the {@link org.apache.jmeter.visualizers.Visualizer Visualizer} interface, and the {@link org.apache.jmeter.visualizers.gui.AbstractVisualizer AbstractVisualizer} abstract class. apache-jmeter-2.8/src/core/org/apache/jmeter/JMeter.java0000644000175000017500000015102112032647221022465 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.lang.Thread.UncaughtExceptionHandler; import java.net.Authenticator; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.MalformedURLException; import java.net.SocketException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Properties; import java.util.StringTokenizer; import java.util.concurrent.atomic.AtomicInteger; import javax.swing.JTree; import javax.swing.tree.TreePath; import org.apache.commons.cli.avalon.CLArgsParser; import org.apache.commons.cli.avalon.CLOption; import org.apache.commons.cli.avalon.CLOptionDescriptor; import org.apache.commons.cli.avalon.CLUtil; import org.apache.jmeter.control.ReplaceableController; import org.apache.jmeter.engine.ClientJMeterEngine; import org.apache.jmeter.engine.JMeterEngine; import org.apache.jmeter.engine.RemoteJMeterEngineImpl; import org.apache.jmeter.engine.StandardJMeterEngine; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.MainFrame; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.Load; import org.apache.jmeter.gui.action.LoadRecentProject; import org.apache.jmeter.gui.tree.JMeterTreeListener; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.FocusRequester; import org.apache.jmeter.plugin.JMeterPlugin; import org.apache.jmeter.plugin.PluginManager; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.reporters.Summariser; import org.apache.jmeter.samplers.Remoteable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellServer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.SearchByClass; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassTools; import org.apache.jorphan.util.HeapDumper; import org.apache.jorphan.util.JMeterException; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import com.thoughtworks.xstream.converters.ConversionException; /** * Main JMeter class; processes options and starts the GUI, non-GUI or server as appropriate. */ public class JMeter implements JMeterPlugin { private static final Logger log = LoggingManager.getLoggerForClass(); public static final int UDP_PORT_DEFAULT = 4445; // needed for ShutdownClient public static final String HTTP_PROXY_PASS = "http.proxyPass"; // $NON-NLS-1$ public static final String HTTP_PROXY_USER = "http.proxyUser"; // $NON-NLS-1$ public static final String JMETER_NON_GUI = "JMeter.NonGui"; // $NON-NLS-1$ // If the -t flag is to "LAST", then the last loaded file (if any) is used private static final String USE_LAST_JMX = "LAST"; // If the -j or -l flag is set to LAST or LAST.log|LAST.jtl, then the last loaded file name is used to // generate the log file name by removing .JMX and replacing it with .log|.jtl private static final int PROXY_PASSWORD = 'a';// $NON-NLS-1$ private static final int JMETER_HOME_OPT = 'd';// $NON-NLS-1$ private static final int HELP_OPT = 'h';// $NON-NLS-1$ // jmeter.log private static final int JMLOGFILE_OPT = 'j';// $NON-NLS-1$ // sample result log file private static final int LOGFILE_OPT = 'l';// $NON-NLS-1$ private static final int NONGUI_OPT = 'n';// $NON-NLS-1$ private static final int PROPFILE_OPT = 'p';// $NON-NLS-1$ private static final int PROPFILE2_OPT = 'q';// $NON-NLS-1$ private static final int REMOTE_OPT = 'r';// $NON-NLS-1$ private static final int SERVER_OPT = 's';// $NON-NLS-1$ private static final int TESTFILE_OPT = 't';// $NON-NLS-1$ private static final int PROXY_USERNAME = 'u';// $NON-NLS-1$ private static final int VERSION_OPT = 'v';// $NON-NLS-1$ private static final int SYSTEM_PROPERTY = 'D';// $NON-NLS-1$ private static final int JMETER_GLOBAL_PROP = 'G';// $NON-NLS-1$ private static final int PROXY_HOST = 'H';// $NON-NLS-1$ private static final int JMETER_PROPERTY = 'J';// $NON-NLS-1$ private static final int LOGLEVEL = 'L';// $NON-NLS-1$ private static final int NONPROXY_HOSTS = 'N';// $NON-NLS-1$ private static final int PROXY_PORT = 'P';// $NON-NLS-1$ private static final int REMOTE_OPT_PARAM = 'R';// $NON-NLS-1$ private static final int SYSTEM_PROPFILE = 'S';// $NON-NLS-1$ private static final int REMOTE_STOP = 'X';// $NON-NLS-1$ /** * Define the understood options. Each CLOptionDescriptor contains: *

          *
        • The "long" version of the option. Eg, "help" means that "--help" * will be recognised.
        • *
        • The option flags, governing the option's argument(s).
        • *
        • The "short" version of the option. Eg, 'h' means that "-h" will be * recognised.
        • *
        • A description of the option.
        • *
        */ private static final CLOptionDescriptor[] options = new CLOptionDescriptor[] { new CLOptionDescriptor("help", CLOptionDescriptor.ARGUMENT_DISALLOWED, HELP_OPT, "print usage information and exit"), new CLOptionDescriptor("version", CLOptionDescriptor.ARGUMENT_DISALLOWED, VERSION_OPT, "print the version information and exit"), new CLOptionDescriptor("propfile", CLOptionDescriptor.ARGUMENT_REQUIRED, PROPFILE_OPT, "the jmeter property file to use"), new CLOptionDescriptor("addprop", CLOptionDescriptor.ARGUMENT_REQUIRED | CLOptionDescriptor.DUPLICATES_ALLOWED, PROPFILE2_OPT, "additional JMeter property file(s)"), new CLOptionDescriptor("testfile", CLOptionDescriptor.ARGUMENT_REQUIRED, TESTFILE_OPT, "the jmeter test(.jmx) file to run"), new CLOptionDescriptor("logfile", CLOptionDescriptor.ARGUMENT_REQUIRED, LOGFILE_OPT, "the file to log samples to"), new CLOptionDescriptor("jmeterlogfile", CLOptionDescriptor.ARGUMENT_REQUIRED, JMLOGFILE_OPT, "jmeter run log file (jmeter.log)"), new CLOptionDescriptor("nongui", CLOptionDescriptor.ARGUMENT_DISALLOWED, NONGUI_OPT, "run JMeter in nongui mode"), new CLOptionDescriptor("server", CLOptionDescriptor.ARGUMENT_DISALLOWED, SERVER_OPT, "run the JMeter server"), new CLOptionDescriptor("proxyHost", CLOptionDescriptor.ARGUMENT_REQUIRED, PROXY_HOST, "Set a proxy server for JMeter to use"), new CLOptionDescriptor("proxyPort", CLOptionDescriptor.ARGUMENT_REQUIRED, PROXY_PORT, "Set proxy server port for JMeter to use"), new CLOptionDescriptor("nonProxyHosts", CLOptionDescriptor.ARGUMENT_REQUIRED, NONPROXY_HOSTS, "Set nonproxy host list (e.g. *.apache.org|localhost)"), new CLOptionDescriptor("username", CLOptionDescriptor.ARGUMENT_REQUIRED, PROXY_USERNAME, "Set username for proxy server that JMeter is to use"), new CLOptionDescriptor("password", CLOptionDescriptor.ARGUMENT_REQUIRED, PROXY_PASSWORD, "Set password for proxy server that JMeter is to use"), new CLOptionDescriptor("jmeterproperty", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, JMETER_PROPERTY, "Define additional JMeter properties"), new CLOptionDescriptor("globalproperty", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, JMETER_GLOBAL_PROP, "Define Global properties (sent to servers)\n\t\te.g. -Gport=123 or -Gglobal.properties"), new CLOptionDescriptor("systemproperty", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, SYSTEM_PROPERTY, "Define additional system properties"), new CLOptionDescriptor("systemPropertyFile", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENT_REQUIRED, SYSTEM_PROPFILE, "additional system property file(s)"), new CLOptionDescriptor("loglevel", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, LOGLEVEL, "[category=]level e.g. jorphan=INFO or jmeter.util=DEBUG"), new CLOptionDescriptor("runremote", CLOptionDescriptor.ARGUMENT_DISALLOWED, REMOTE_OPT, "Start remote servers (as defined in remote_hosts)"), new CLOptionDescriptor("remotestart", CLOptionDescriptor.ARGUMENT_REQUIRED, REMOTE_OPT_PARAM, "Start these remote servers (overrides remote_hosts)"), new CLOptionDescriptor("homedir", CLOptionDescriptor.ARGUMENT_REQUIRED, JMETER_HOME_OPT, "the jmeter home directory to use"), new CLOptionDescriptor("remoteexit", CLOptionDescriptor.ARGUMENT_DISALLOWED, REMOTE_STOP, "Exit the remote servers at end of test (non-GUI)"), }; public JMeter() { } // Hack to allow automated tests to find when test has ended //transient boolean testEnded = false; private JMeter parent; private Properties remoteProps; // Properties to be sent to remote servers private boolean remoteStop; // should remote engines be stopped at end of non-GUI test? /** * Starts up JMeter in GUI mode */ private void startGui(String testFile) { PluginManager.install(this, true); JMeterTreeModel treeModel = new JMeterTreeModel(); JMeterTreeListener treeLis = new JMeterTreeListener(treeModel); treeLis.setActionHandler(ActionRouter.getInstance()); // NOTUSED: GuiPackage guiPack = GuiPackage.getInstance(treeLis, treeModel); MainFrame main = new MainFrame(treeModel, treeLis); ComponentUtil.centerComponentInWindow(main, 80); main.setVisible(true); ActionRouter.getInstance().actionPerformed(new ActionEvent(main, 1, ActionNames.ADD_ALL)); if (testFile != null) { FileInputStream reader = null; try { File f = new File(testFile); log.info("Loading file: " + f); FileServer.getFileServer().setBaseForScript(f); reader = new FileInputStream(f); HashTree tree = SaveService.loadTree(reader); GuiPackage.getInstance().setTestPlanFile(f.getAbsolutePath()); Load.insertLoadedTree(1, tree); } catch (ConversionException e) { log.error("Failure loading test file", e); JMeterUtils.reportErrorToUser(SaveService.CEtoString(e)); } catch (Exception e) { log.error("Failure loading test file", e); JMeterUtils.reportErrorToUser(e.toString()); } finally { JOrphanUtils.closeQuietly(reader); } } else { JTree jTree = GuiPackage.getInstance().getMainFrame().getTree(); TreePath path = jTree.getPathForRow(0); jTree.setSelectionPath(path); new FocusRequester(jTree); } } /** * Takes the command line arguments and uses them to determine how to * startup JMeter. * * Called reflectively by {@link NewDriver#main(String[])} */ public void start(String[] args) { CLArgsParser parser = new CLArgsParser(args, options); String error = parser.getErrorString(); if (error == null){// Check option combinations boolean gui = parser.getArgumentById(NONGUI_OPT)==null; boolean nonGuiOnly = parser.getArgumentById(REMOTE_OPT)!=null || parser.getArgumentById(REMOTE_OPT_PARAM)!=null || parser.getArgumentById(REMOTE_STOP)!=null; if (gui && nonGuiOnly) { error = "-r and -R and -X are only valid in non-GUI mode"; } } if (null != error) { System.err.println("Error: " + error); System.out.println("Usage"); System.out.println(CLUtil.describeOptions(options).toString()); return; } try { initializeProperties(parser); // Also initialises JMeter logging /* * The following is needed for HTTPClient. * (originally tried doing this in HTTPSampler2, * but it appears that it was done too late when running in GUI mode) * Set the commons logging default to Avalon Logkit, if not already defined */ if (System.getProperty("org.apache.commons.logging.Log") == null) { // $NON-NLS-1$ System.setProperty("org.apache.commons.logging.Log" // $NON-NLS-1$ , "org.apache.commons.logging.impl.LogKitLogger"); // $NON-NLS-1$ } Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() { public void uncaughtException(Thread t, Throwable e) { if (!(e instanceof ThreadDeath)) { log.error("Uncaught exception: ", e); System.err.println("Uncaught Exception " + e + ". See log file for details."); } } }); log.info(JMeterUtils.getJMeterCopyright()); log.info("Version " + JMeterUtils.getJMeterVersion()); logProperty("java.version"); //$NON-NLS-1$ logProperty("java.vm.name"); //$NON-NLS-1$ logProperty("os.name"); //$NON-NLS-1$ logProperty("os.arch"); //$NON-NLS-1$ logProperty("os.version"); //$NON-NLS-1$ logProperty("file.encoding"); // $NON-NLS-1$ log.info("Default Locale=" + Locale.getDefault().getDisplayName()); log.info("JMeter Locale=" + JMeterUtils.getLocale().getDisplayName()); log.info("JMeterHome=" + JMeterUtils.getJMeterHome()); logProperty("user.dir"," ="); //$NON-NLS-1$ log.info("PWD ="+new File(".").getCanonicalPath());//$NON-NLS-1$ log.info("IP: "+JMeterUtils.getLocalHostIP() +" Name: "+JMeterUtils.getLocalHostName() +" FullName: "+JMeterUtils.getLocalHostFullName()); setProxy(parser); updateClassLoader(); if (log.isDebugEnabled()) { String jcp=System.getProperty("java.class.path");// $NON-NLS-1$ String bits[] =jcp.split(File.pathSeparator); log.debug("ClassPath"); for(String bit : bits){ log.debug(bit); } log.debug(jcp); } // Set some (hopefully!) useful properties long now=System.currentTimeMillis(); JMeterUtils.setProperty("START.MS",Long.toString(now));// $NON-NLS-1$ Date today=new Date(now); // so it agrees with above // TODO perhaps should share code with __time() function for this... JMeterUtils.setProperty("START.YMD",new SimpleDateFormat("yyyyMMdd").format(today));// $NON-NLS-1$ $NON-NLS-2$ JMeterUtils.setProperty("START.HMS",new SimpleDateFormat("HHmmss").format(today));// $NON-NLS-1$ $NON-NLS-2$ if (parser.getArgumentById(VERSION_OPT) != null) { System.out.println(JMeterUtils.getJMeterCopyright()); System.out.println("Version " + JMeterUtils.getJMeterVersion()); } else if (parser.getArgumentById(HELP_OPT) != null) { System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt"));// $NON-NLS-1$ } else if (parser.getArgumentById(SERVER_OPT) != null) { // Start the server try { RemoteJMeterEngineImpl.startServer(JMeterUtils.getPropDefault("server_port", 0)); // $NON-NLS-1$ } catch (Exception ex) { System.err.println("Server failed to start: "+ex); log.error("Giving up, as server failed with:", ex); throw ex; } startOptionalServers(); } else { String testFile=null; CLOption testFileOpt = parser.getArgumentById(TESTFILE_OPT); if (testFileOpt != null){ testFile = testFileOpt.getArgument(); if (USE_LAST_JMX.equals(testFile)) { testFile = LoadRecentProject.getRecentFile(0);// most recent } } if (parser.getArgumentById(NONGUI_OPT) == null) { startGui(testFile); startOptionalServers(); } else { CLOption rem=parser.getArgumentById(REMOTE_OPT_PARAM); if (rem==null) { rem=parser.getArgumentById(REMOTE_OPT); } CLOption jtl = parser.getArgumentById(LOGFILE_OPT); String jtlFile = null; if (jtl != null){ jtlFile=processLAST(jtl.getArgument(), ".jtl"); // $NON-NLS-1$ } startNonGui(testFile, jtlFile, rem); startOptionalServers(); } } } catch (IllegalUserActionException e) { System.out.println(e.getMessage()); System.out.println("Incorrect Usage"); System.out.println(CLUtil.describeOptions(options).toString()); } catch (Throwable e) { log.fatalError("An error occurred: ",e); System.out.println("An error occurred: " + e.getMessage()); System.exit(1); // TODO - could this be return? } } // Update classloader if necessary private void updateClassLoader() { updatePath("search_paths",";"); //$NON-NLS-1$//$NON-NLS-2$ updatePath("user.classpath",File.pathSeparator);//$NON-NLS-1$ } private void updatePath(String property, String sep) { String userpath= JMeterUtils.getPropDefault(property,"");// $NON-NLS-1$ if (userpath.length() <= 0) { return; } log.info(property+"="+userpath); //$NON-NLS-1$ StringTokenizer tok = new StringTokenizer(userpath, sep); while(tok.hasMoreTokens()) { String path=tok.nextToken(); File f=new File(path); if (!f.canRead() && !f.isDirectory()) { log.warn("Can't read "+path); } else { log.info("Adding to classpath: "+path); try { NewDriver.addPath(path); } catch (MalformedURLException e) { log.warn("Error adding: "+path+" "+e.getLocalizedMessage()); } } } } /** * */ private void startOptionalServers() { int bshport = JMeterUtils.getPropDefault("beanshell.server.port", 0);// $NON-NLS-1$ String bshfile = JMeterUtils.getPropDefault("beanshell.server.file", "");// $NON-NLS-1$ $NON-NLS-2$ if (bshport > 0) { log.info("Starting Beanshell server (" + bshport + "," + bshfile + ")"); Runnable t = new BeanShellServer(bshport, bshfile); t.run(); } // Should we run a beanshell script on startup? String bshinit = JMeterUtils.getProperty("beanshell.init.file");// $NON-NLS-1$ if (bshinit != null){ log.info("Run Beanshell on file: "+bshinit); try { BeanShellInterpreter bsi = new BeanShellInterpreter();//bshinit,log); bsi.source(bshinit); } catch (ClassNotFoundException e) { log.warn("Could not start Beanshell: "+e.getLocalizedMessage()); } catch (JMeterException e) { log.warn("Could not process Beanshell file: "+e.getLocalizedMessage()); } } int mirrorPort=JMeterUtils.getPropDefault("mirror.server.port", 0);// $NON-NLS-1$ if (mirrorPort > 0){ log.info("Starting Mirror server (" + mirrorPort + ")"); try { Object instance = ClassTools.construct( "org.apache.jmeter.protocol.http.control.HttpMirrorControl",// $NON-NLS-1$ mirrorPort); ClassTools.invoke(instance,"startHttpMirror"); } catch (JMeterException e) { log.warn("Could not start Mirror server",e); } } } /** * Sets a proxy server for the JVM if the command line arguments are * specified. */ private void setProxy(CLArgsParser parser) throws IllegalUserActionException { if (parser.getArgumentById(PROXY_USERNAME) != null) { Properties jmeterProps = JMeterUtils.getJMeterProperties(); if (parser.getArgumentById(PROXY_PASSWORD) != null) { String u, p; Authenticator.setDefault(new ProxyAuthenticator(u = parser.getArgumentById(PROXY_USERNAME) .getArgument(), p = parser.getArgumentById(PROXY_PASSWORD).getArgument())); log.info("Set Proxy login: " + u + "/" + p); jmeterProps.setProperty(HTTP_PROXY_USER, u);//for Httpclient jmeterProps.setProperty(HTTP_PROXY_PASS, p);//for Httpclient } else { String u; Authenticator.setDefault(new ProxyAuthenticator(u = parser.getArgumentById(PROXY_USERNAME) .getArgument(), "")); log.info("Set Proxy login: " + u); jmeterProps.setProperty(HTTP_PROXY_USER, u); } } if (parser.getArgumentById(PROXY_HOST) != null && parser.getArgumentById(PROXY_PORT) != null) { String h = parser.getArgumentById(PROXY_HOST).getArgument(); String p = parser.getArgumentById(PROXY_PORT).getArgument(); System.setProperty("http.proxyHost", h );// $NON-NLS-1$ System.setProperty("https.proxyHost", h);// $NON-NLS-1$ System.setProperty("http.proxyPort", p);// $NON-NLS-1$ System.setProperty("https.proxyPort", p);// $NON-NLS-1$ log.info("Set http[s].proxyHost: " + h + " Port: " + p); } else if (parser.getArgumentById(PROXY_HOST) != null || parser.getArgumentById(PROXY_PORT) != null) { throw new IllegalUserActionException(JMeterUtils.getResString("proxy_cl_error"));// $NON-NLS-1$ } if (parser.getArgumentById(NONPROXY_HOSTS) != null) { String n = parser.getArgumentById(NONPROXY_HOSTS).getArgument(); System.setProperty("http.nonProxyHosts", n );// $NON-NLS-1$ System.setProperty("https.nonProxyHosts", n );// $NON-NLS-1$ log.info("Set http[s].nonProxyHosts: "+n); } } private void initializeProperties(CLArgsParser parser) { if (parser.getArgumentById(PROPFILE_OPT) != null) { JMeterUtils.loadJMeterProperties(parser.getArgumentById(PROPFILE_OPT).getArgument()); } else { JMeterUtils.loadJMeterProperties(NewDriver.getJMeterDir() + File.separator + "bin" + File.separator // $NON-NLS-1$ + "jmeter.properties");// $NON-NLS-1$ } if (parser.getArgumentById(JMLOGFILE_OPT) != null){ String jmlogfile=parser.getArgumentById(JMLOGFILE_OPT).getArgument(); jmlogfile = processLAST(jmlogfile, ".log");// $NON-NLS-1$ JMeterUtils.setProperty(LoggingManager.LOG_FILE,jmlogfile); } JMeterUtils.initLogging(); JMeterUtils.initLocale(); // Bug 33845 - allow direct override of Home dir if (parser.getArgumentById(JMETER_HOME_OPT) == null) { JMeterUtils.setJMeterHome(NewDriver.getJMeterDir()); } else { JMeterUtils.setJMeterHome(parser.getArgumentById(JMETER_HOME_OPT).getArgument()); } Properties jmeterProps = JMeterUtils.getJMeterProperties(); remoteProps = new Properties(); // Add local JMeter properties, if the file is found String userProp = JMeterUtils.getPropDefault("user.properties",""); //$NON-NLS-1$ if (userProp.length() > 0){ //$NON-NLS-1$ FileInputStream fis=null; try { File file = JMeterUtils.findFile(userProp); if (file.canRead()){ log.info("Loading user properties from: "+file.getCanonicalPath()); fis = new FileInputStream(file); Properties tmp = new Properties(); tmp.load(fis); jmeterProps.putAll(tmp); LoggingManager.setLoggingLevels(tmp);//Do what would be done earlier } } catch (IOException e) { log.warn("Error loading user property file: " + userProp, e); } finally { JOrphanUtils.closeQuietly(fis); } } // Add local system properties, if the file is found String sysProp = JMeterUtils.getPropDefault("system.properties",""); //$NON-NLS-1$ if (sysProp.length() > 0){ FileInputStream fis=null; try { File file = JMeterUtils.findFile(sysProp); if (file.canRead()){ log.info("Loading system properties from: "+file.getCanonicalPath()); fis = new FileInputStream(file); System.getProperties().load(fis); } } catch (IOException e) { log.warn("Error loading system property file: " + sysProp, e); } finally { JOrphanUtils.closeQuietly(fis); } } // Process command line property definitions // These can potentially occur multiple times List clOptions = parser.getArguments(); int size = clOptions.size(); for (int i = 0; i < size; i++) { CLOption option = clOptions.get(i); String name = option.getArgument(0); String value = option.getArgument(1); FileInputStream fis = null; switch (option.getDescriptor().getId()) { // Should not have any text arguments case CLOption.TEXT_ARGUMENT: throw new IllegalArgumentException("Unknown arg: "+option.getArgument()); case PROPFILE2_OPT: // Bug 33920 - allow multiple props try { fis = new FileInputStream(new File(name)); Properties tmp = new Properties(); tmp.load(fis); jmeterProps.putAll(tmp); LoggingManager.setLoggingLevels(tmp);//Do what would be done earlier } catch (FileNotFoundException e) { log.warn("Can't find additional property file: " + name, e); } catch (IOException e) { log.warn("Error loading additional property file: " + name, e); } finally { JOrphanUtils.closeQuietly(fis); } break; case SYSTEM_PROPFILE: log.info("Setting System properties from file: " + name); try { fis = new FileInputStream(new File(name)); System.getProperties().load(fis); } catch (IOException e) { log.warn("Cannot find system property file "+e.getLocalizedMessage()); } finally { JOrphanUtils.closeQuietly(fis); } break; case SYSTEM_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting System property: " + name + "=" + value); System.getProperties().setProperty(name, value); } else { // Reset it log.warn("Removing System property: " + name); System.getProperties().remove(name); } break; case JMETER_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting JMeter property: " + name + "=" + value); jmeterProps.setProperty(name, value); } else { // Reset it log.warn("Removing JMeter property: " + name); jmeterProps.remove(name); } break; case JMETER_GLOBAL_PROP: if (value.length() > 0) { // Set it log.info("Setting Global property: " + name + "=" + value); remoteProps.setProperty(name, value); } else { File propFile = new File(name); if (propFile.canRead()) { log.info("Setting Global properties from the file "+name); try { fis = new FileInputStream(propFile); remoteProps.load(fis); } catch (FileNotFoundException e) { log.warn("Could not find properties file: "+e.getLocalizedMessage()); } catch (IOException e) { log.warn("Could not load properties file: "+e.getLocalizedMessage()); } finally { JOrphanUtils.closeQuietly(fis); } } } break; case LOGLEVEL: if (value.length() > 0) { // Set category log.info("LogLevel: " + name + "=" + value); LoggingManager.setPriority(value, name); } else { // Set root level log.warn("LogLevel: " + name); LoggingManager.setPriority(name); } break; case REMOTE_STOP: remoteStop = true; break; default: // ignored break; } } String sample_variables = (String) jmeterProps.get(SampleEvent.SAMPLE_VARIABLES); if (sample_variables != null){ remoteProps.put(SampleEvent.SAMPLE_VARIABLES, sample_variables); } jmeterProps.put("jmeter.version", JMeterUtils.getJMeterVersion()); } /* * Checks for LAST or LASTsuffix. * Returns the LAST name with .JMX replaced by suffix. */ private String processLAST(String jmlogfile, String suffix) { if (USE_LAST_JMX.equals(jmlogfile) || USE_LAST_JMX.concat(suffix).equals(jmlogfile)){ String last = LoadRecentProject.getRecentFile(0);// most recent final String JMX_SUFFIX = ".JMX"; // $NON-NLS-1$ if (last.toUpperCase(Locale.ENGLISH).endsWith(JMX_SUFFIX)){ jmlogfile=last.substring(0, last.length() - JMX_SUFFIX.length()).concat(suffix); } } return jmlogfile; } private void startNonGui(String testFile, String logFile, CLOption remoteStart) throws IllegalUserActionException { // add a system property so samplers can check to see if JMeter // is running in NonGui mode System.setProperty(JMETER_NON_GUI, "true");// $NON-NLS-1$ JMeter driver = new JMeter();// TODO - why does it create a new instance? driver.remoteProps = this.remoteProps; driver.remoteStop = this.remoteStop; driver.parent = this; PluginManager.install(this, false); String remote_hosts_string = null; if (remoteStart != null) { remote_hosts_string = remoteStart.getArgument(); if (remote_hosts_string == null) { remote_hosts_string = JMeterUtils.getPropDefault( "remote_hosts", //$NON-NLS-1$ "127.0.0.1");//$NON-NLS-1$ } } if (testFile == null) { throw new IllegalUserActionException("Non-GUI runs require a test plan"); } driver.runNonGui(testFile, logFile, remoteStart != null, remote_hosts_string); } // run test in batch mode private void runNonGui(String testFile, String logFile, boolean remoteStart, String remote_hosts_string) { FileInputStream reader = null; try { File f = new File(testFile); if (!f.exists() || !f.isFile()) { println("Could not open " + testFile); return; } FileServer.getFileServer().setBaseForScript(f); reader = new FileInputStream(f); log.info("Loading file: " + f); HashTree tree = SaveService.loadTree(reader); @SuppressWarnings("deprecation") // Deliberate use of deprecated ctor JMeterTreeModel treeModel = new JMeterTreeModel(new Object());// Create non-GUI version to avoid headless problems JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot(); treeModel.addSubTree(tree, root); // Hack to resolve ModuleControllers in non GUI mode SearchByClass replaceableControllers = new SearchByClass(ReplaceableController.class); tree.traverse(replaceableControllers); Collection replaceableControllersRes = replaceableControllers.getSearchResults(); for (Iterator iter = replaceableControllersRes.iterator(); iter.hasNext();) { ReplaceableController replaceableController = iter.next(); replaceableController.resolveReplacementSubTree(root); } // Remove the disabled items // For GUI runs this is done in Start.java convertSubTree(tree); Summariser summer = null; String summariserName = JMeterUtils.getPropDefault("summariser.name", "");//$NON-NLS-1$ if (summariserName.length() > 0) { log.info("Creating summariser <" + summariserName + ">"); println("Creating summariser <" + summariserName + ">"); summer = new Summariser(summariserName); } if (logFile != null) { ResultCollector logger = new ResultCollector(summer); logger.setFilename(logFile); tree.add(tree.getArray()[0], logger); } else { // only add Summariser if it can not be shared with the ResultCollector if (summer != null) { tree.add(tree.getArray()[0], summer); } } List engines = new LinkedList(); tree.add(tree.getArray()[0], new ListenToTest(parent, (remoteStart && remoteStop) ? engines : null)); println("Created the tree successfully using "+testFile); if (!remoteStart) { JMeterEngine engine = new StandardJMeterEngine(); engine.configure(tree); long now=System.currentTimeMillis(); println("Starting the test @ "+new Date(now)+" ("+now+")"); engine.runTest(); engines.add(engine); } else { java.util.StringTokenizer st = new java.util.StringTokenizer(remote_hosts_string, ",");//$NON-NLS-1$ while (st.hasMoreElements()) { String el = (String) st.nextElement(); println("Configuring remote engine for " + el); log.info("Configuring remote engine for " + el); JMeterEngine eng = doRemoteInit(el.trim(), tree); if (null != eng) { engines.add(eng); } else { println("Failed to configure "+el); } } if (engines.isEmpty()) { println("No remote engines were started."); return; } println("Starting remote engines"); log.info("Starting remote engines"); long now=System.currentTimeMillis(); println("Starting the test @ "+new Date(now)+" ("+now+")"); for (JMeterEngine engine : engines) { engine.runTest(); } println("Remote engines have been started"); log.info("Remote engines have been started"); } startUdpDdaemon(engines); } catch (Exception e) { System.out.println("Error in NonGUIDriver " + e.toString()); log.error("Error in NonGUIDriver", e); } finally { JOrphanUtils.closeQuietly(reader); } } /** * Refactored from AbstractAction.java * * @param tree */ public static void convertSubTree(HashTree tree) { LinkedList copyList = new LinkedList(tree.list()); for (Object o : copyList) { if (o instanceof TestElement) { TestElement item = (TestElement) o; if (item.isEnabled()) { if (item instanceof ReplaceableController) { ReplaceableController rc; // TODO this bit of code needs to be tidied up // Unfortunately ModuleController is in components, not core if (item.getClass().getName().equals("org.apache.jmeter.control.ModuleController")){ // Bug 47165 rc = (ReplaceableController) item; } else { // HACK: force the controller to load its tree rc = (ReplaceableController) item.clone(); } HashTree subTree = tree.getTree(item); if (subTree != null) { HashTree replacementTree = rc.getReplacementSubTree(); if (replacementTree != null) { convertSubTree(replacementTree); tree.replace(item, rc); tree.set(rc, replacementTree); } } else { // null subTree convertSubTree(tree.getTree(item)); } } else { // not Replaceable Controller convertSubTree(tree.getTree(item)); } } else { // Not enabled tree.remove(item); } } else { // Not a TestElement JMeterTreeNode item = (JMeterTreeNode) o; if (item.isEnabled()) { // Replacement only needs to occur when starting the engine // @see StandardJMeterEngine.run() if (item.getUserObject() instanceof ReplaceableController) { ReplaceableController rc = (ReplaceableController) item.getTestElement(); HashTree subTree = tree.getTree(item); if (subTree != null) { HashTree replacementTree = rc.getReplacementSubTree(); if (replacementTree != null) { convertSubTree(replacementTree); tree.replace(item, rc); tree.set(rc, replacementTree); } } } else { // Not a ReplaceableController convertSubTree(tree.getTree(item)); TestElement testElement = item.getTestElement(); tree.replace(item, testElement); } } else { // Not enabled tree.remove(item); } } } } private JMeterEngine doRemoteInit(String hostName, HashTree testTree) { JMeterEngine engine = null; try { engine = new ClientJMeterEngine(hostName); } catch (Exception e) { log.fatalError("Failure connecting to remote host: "+hostName, e); System.err.println("Failure connecting to remote host: "+hostName+" "+e); return null; } engine.configure(testTree); if (!remoteProps.isEmpty()) { engine.setProperties(remoteProps); } return engine; } /* * Listen to test and handle tidyup after non-GUI test completes. * If running a remote test, then after waiting a few seconds for listeners to finish files, * it calls ClientJMeterEngine.tidyRMI() to deal with the Naming Timer Thread. */ private static class ListenToTest implements TestStateListener, Runnable, Remoteable { private final AtomicInteger started = new AtomicInteger(0); // keep track of remote tests //NOT YET USED private JMeter _parent; private final List engines; /** * @param unused JMeter unused for now * @param engines List */ public ListenToTest(JMeter unused, List engines) { //_parent = unused; this.engines=engines; } public void testEnded(String host) { long now=System.currentTimeMillis(); log.info("Finished remote host: " + host + " ("+now+")"); if (started.decrementAndGet() <= 0) { Thread stopSoon = new Thread(this); stopSoon.start(); } } public void testEnded() { long now = System.currentTimeMillis(); println("Tidying up ... @ "+new Date(now)+" ("+now+")"); println("... end of run"); checkForRemainingThreads(); } public void testStarted(String host) { started.incrementAndGet(); long now=System.currentTimeMillis(); log.info("Started remote host: " + host + " ("+now+")"); } public void testStarted() { long now=System.currentTimeMillis(); log.info(JMeterUtils.getResString("running_test")+" ("+now+")");//$NON-NLS-1$ } /** * This is a hack to allow listeners a chance to close their files. Must * implement a queue for sample responses tied to the engine, and the * engine won't deliver testEnded signal till all sample responses have * been delivered. Should also improve performance of remote JMeter * testing. */ public void run() { long now = System.currentTimeMillis(); println("Tidying up remote @ "+new Date(now)+" ("+now+")"); if (engines!=null){ // it will be null unless remoteStop = true println("Exitting remote servers"); for (JMeterEngine e : engines){ e.exit(); } } try { Thread.sleep(5000); // Allow listeners to close files } catch (InterruptedException ignored) { } ClientJMeterEngine.tidyRMI(log); println("... end of run"); checkForRemainingThreads(); } /** * Runs daemon thread which waits a short while; * if JVM does not exit, lists remaining non-daemon threads on stdout. */ private void checkForRemainingThreads() { // This cannot be a JMeter class variable, because properties // are not initialised until later. final int REMAIN_THREAD_PAUSE = JMeterUtils.getPropDefault("jmeter.exit.check.pause", 2000); // $NON-NLS-1$ if (REMAIN_THREAD_PAUSE > 0) { Thread daemon = new Thread(){ @Override public void run(){ try { Thread.sleep(REMAIN_THREAD_PAUSE); // Allow enough time for JVM to exit } catch (InterruptedException ignored) { } // This is a daemon thread, which should only reach here if there are other // non-daemon threads still active System.out.println("The JVM should have exitted but did not."); System.out.println("The following non-daemon threads are still running (DestroyJavaVM is OK):"); JOrphanUtils.displayThreads(false); } }; daemon.setDaemon(true); daemon.start(); } } } private static void println(String str) { System.out.println(str); } private static final String[][] DEFAULT_ICONS = { { "org.apache.jmeter.control.gui.TestPlanGui", "org/apache/jmeter/images/beaker.gif" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.timers.gui.AbstractTimerGui", "org/apache/jmeter/images/timer.gif" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.threads.gui.ThreadGroupGui", "org/apache/jmeter/images/thread.gif" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.visualizers.gui.AbstractListenerGui", "org/apache/jmeter/images/meter.png" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.config.gui.AbstractConfigGui", "org/apache/jmeter/images/testtubes.png" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.processor.gui.AbstractPreProcessorGui", "org/apache/jmeter/images/leafnode.gif"}, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.processor.gui.AbstractPostProcessorGui","org/apache/jmeter/images/leafnodeflip.gif"},//$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.control.gui.AbstractControllerGui", "org/apache/jmeter/images/knob.gif" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.control.gui.WorkBenchGui", "org/apache/jmeter/images/clipboard.gif" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.samplers.gui.AbstractSamplerGui", "org/apache/jmeter/images/pipet.png" }, //$NON-NLS-1$ $NON-NLS-2$ { "org.apache.jmeter.assertions.gui.AbstractAssertionGui", "org/apache/jmeter/images/question.gif"} //$NON-NLS-1$ $NON-NLS-2$ }; public String[][] getIconMappings() { final String defaultIconProp = "org/apache/jmeter/images/icon.properties"; //$NON-NLS-1$ String iconProp = JMeterUtils.getPropDefault("jmeter.icons", defaultIconProp);//$NON-NLS-1$ Properties p = JMeterUtils.loadProperties(iconProp); if (p == null && !iconProp.equals(defaultIconProp)) { log.info(iconProp + " not found - using " + defaultIconProp); iconProp = defaultIconProp; p = JMeterUtils.loadProperties(iconProp); } if (p == null) { log.info(iconProp + " not found - using inbuilt icon set"); return DEFAULT_ICONS; } log.info("Loaded icon properties from " + iconProp); String[][] iconlist = new String[p.size()][3]; Enumeration pe = p.keys(); int i = 0; while (pe.hasMoreElements()) { String key = (String) pe.nextElement(); String icons[] = JOrphanUtils.split(p.getProperty(key), " ");//$NON-NLS-1$ iconlist[i][0] = key; iconlist[i][1] = icons[0]; if (icons.length > 1) { iconlist[i][2] = icons[1]; } i++; } return iconlist; } public String[][] getResourceBundles() { return new String[0][]; } /** * Check if JMeter is running in non-GUI mode. * * @return true if JMeter is running in non-GUI mode. */ public static boolean isNonGUI(){ return "true".equals(System.getProperty(JMeter.JMETER_NON_GUI)); //$NON-NLS-1$ } private void logProperty(String prop){ log.info(prop+"="+System.getProperty(prop));//$NON-NLS-1$ } private void logProperty(String prop,String separator){ log.info(prop+separator+System.getProperty(prop));//$NON-NLS-1$ } private static void startUdpDdaemon(final List engines) { int port = JMeterUtils.getPropDefault("jmeterengine.nongui.port", UDP_PORT_DEFAULT); // $NON-NLS-1$ int maxPort = JMeterUtils.getPropDefault("jmeterengine.nongui.maxport", 4455); // $NON-NLS-1$ if (port > 1000){ final DatagramSocket socket = getSocket(port, maxPort); if (socket != null) { Thread waiter = new Thread("UDP Listener"){ @Override public void run() { waitForSignals(engines, socket); } }; waiter.setDaemon(true); waiter.start(); } else { System.out.println("Failed to create UDP port"); } } } private static void waitForSignals(final List engines, DatagramSocket socket) { byte[] buf = new byte[80]; System.out.println("Waiting for possible shutdown message on port "+socket.getLocalPort()); DatagramPacket request = new DatagramPacket(buf, buf.length); try { while(true) { socket.receive(request); InetAddress address = request.getAddress(); // Only accept commands from the local host if (address.isLoopbackAddress()){ String command = new String(request.getData(), request.getOffset(), request.getLength(),"ASCII"); System.out.println("Command: "+command+" received from "+address); log.info("Command: "+command+" received from "+address); if (command.equals("StopTestNow")){ for(JMeterEngine engine : engines) { engine.stopTest(true); } } else if (command.equals("Shutdown")) { for(JMeterEngine engine : engines) { engine.stopTest(false); } } else if (command.equals("HeapDump")) { HeapDumper.dumpHeap(); } else { System.out.println("Command: "+command+" not recognised "); } } } } catch (Exception e) { System.out.println(e); } finally { socket.close(); } } private static DatagramSocket getSocket(int udpPort, int udpPortMax) { DatagramSocket socket = null; int i = udpPort; while (i<= udpPortMax) { try { socket = new DatagramSocket(i); break; } catch (SocketException e) { i++; } } return socket; } }apache-jmeter-2.8/src/core/org/apache/jmeter/help.txt0000644000175000017500000000211212032647221022121 0ustar ebourgebourg To run Apache JMeter in GUI mode: Double-click on the ApacheJMeter.jar file. If this doesn't work, open a command prompt and type: java -jar ApacheJMeter.jar [-p property-file] -------------------------------------------------- To run Apache JMeter in NON_GUI mode: Open a command prompt (or Unix shell) and type: java -jar ApacheJMeter.jar -n -t test-file [-p property-file] [-l log-file] -------------------------------------------------- To tell Apache JMeter to use a proxy server: Open a command prompt and type: java -jar ApacheJMeter.jar -H [your.proxy.server] -P [your proxy server port] --------------------------------------------------- To run Apache JMeter in server mode: Open a command prompty and type java -jar ApacheJMeter.jar -s Or, use the provided script file: jmeter-server.bat(Windows)/jmeter-server(Linux) --------------------------------------------------- Please note that a script file is provided: jmeter.bat(Windows)/jmeter(Linux) that can be used in place of "java -jar ApacheJMeter.jar". Example: jmeter -p jmeter.properties -H my.proxy.com -P 9999 apache-jmeter-2.8/src/core/org/apache/jmeter/functions/0000755000175000017500000000000012165514773022460 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/functions/util/0000755000175000017500000000000012165514773023435 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/functions/util/ArgumentEncoder.java0000644000175000017500000000246312032647220027352 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions.util; import org.apache.oro.text.perl.Perl5Util; /** * Encode an Argument */ public final class ArgumentEncoder { private static final Perl5Util util = new Perl5Util(); private static final String expression = "s#([${}(),\\\\])#\\$1#g"; // TODO does not appear to be used public static String encode(String s) { return util.substitute(expression, s); } /** * Prevent instantiation of utility class. */ private ArgumentEncoder() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/functions/util/ArgumentDecoder.java0000644000175000017500000000252312032647220027335 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions.util; import org.apache.oro.text.perl.Perl5Util; /** * Decodes an Argument by replacing '\x' with 'x' */ public final class ArgumentDecoder { private static final Perl5Util util = new Perl5Util(); private static final String expression = "s#[\\\\](.)#$1#g"; // $NON-NLS-1$ // TODO does not appear to be used public static String decode(String s) { return util.substitute(expression, s); } /** * Prevent instantiation of utility class. */ private ArgumentDecoder() { } } apache-jmeter-2.8/src/core/org/apache/jmeter/functions/AbstractFunction.java0000644000175000017500000001207012032647220026557 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; /** * Provides common methods for all functions */ public abstract class AbstractFunction implements Function { /** *

        * N.B. setParameters() and execute() are called from different threads, * so both must be synchronized unless there are no parameters to save *

        * @see Function#execute(SampleResult, Sampler) */ abstract public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException; public String execute() throws InvalidVariableException { JMeterContext context = JMeterContextService.getContext(); SampleResult previousResult = context.getPreviousResult(); Sampler currentSampler = context.getCurrentSampler(); return execute(previousResult, currentSampler); } /** * *

        * N.B. setParameters() and execute() are called from different threads, * so both must be synchronized unless there are no parameters to save *

        * * @see Function#setParameters(Collection) *
        * Note: This is always called even if no parameters are provided * (versions of JMeter after 2.3.1) */ abstract public void setParameters(Collection parameters) throws InvalidVariableException; /** * @see Function#getReferenceKey() */ abstract public String getReferenceKey(); /** * Gives access to the JMeter variables for the current thread. * * @return a pointer to the JMeter variables. */ protected JMeterVariables getVariables() { return JMeterContextService.getContext().getVariables(); } /** * Utility method to check parameter counts. * * @param parameters collection of parameters * @param min minimum number of parameters allowed * @param max maximum number of parameters allowed * * @throws InvalidVariableException if the number of parameters is incorrect */ protected void checkParameterCount(Collection parameters, int min, int max) throws InvalidVariableException { int num = parameters.size(); if ((num > max) || (num < min)) { throw new InvalidVariableException( getReferenceKey() + " called with wrong number of parameters. Actual: "+num+ ( min==max ? ". Expected: "+min+"." : ". Expected: >= "+min+" and <= "+max ) ); } } /** * Utility method to check parameter counts. * * @param parameters collection of parameters * @param count number of parameters expected * * @throws InvalidVariableException if the number of parameters is incorrect */ protected void checkParameterCount(Collection parameters, int count) throws InvalidVariableException { int num = parameters.size(); if (num != count) { throw new InvalidVariableException( getReferenceKey() + " called with wrong number of parameters. Actual: "+num+". Expected: "+count+"." ); } } /** * Utility method to check parameter counts. * * @param parameters collection of parameters * @param minimum number of parameters expected * * @throws InvalidVariableException if the number of parameters is incorrect */ protected void checkMinParameterCount(Collection parameters, int minimum) throws InvalidVariableException { int num = parameters.size(); if (num < minimum) { throw new InvalidVariableException( getReferenceKey() + " called with wrong number of parameters. Actual: "+num+". Expected at least: "+minimum+"." ); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/functions/InvalidVariableException.java0000644000175000017500000000237212032647220030225 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; public class InvalidVariableException extends Exception { private static final long serialVersionUID = 240L; public InvalidVariableException() { } public InvalidVariableException(String message, Throwable cause) { super(message, cause); } public InvalidVariableException(Throwable cause) { super(cause); } public InvalidVariableException(String msg) { super(msg); } } apache-jmeter-2.8/src/core/org/apache/jmeter/functions/gui/0000755000175000017500000000000012165514773023244 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/functions/gui/FunctionHelper.java0000644000175000017500000001652112032647220027024 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions.gui; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; import java.util.Comparator; import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JRootPane; import javax.swing.KeyStroke; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.Function; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.Help; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.JLabeledTextField; public class FunctionHelper extends JDialog implements ActionListener, ChangeListener, LocaleChangeListener { private static final long serialVersionUID = 240L; private JLabeledChoice functionList; private ArgumentsPanel parameterPanel; private JLabeledTextField cutPasteFunction; public FunctionHelper() { super((JFrame) null, JMeterUtils.getResString("function_helper_title"), false); //$NON-NLS-1$ init(); JMeterUtils.addLocaleChangeListener(this); } /** * Allow Dialog to be closed by ESC key */ @Override protected JRootPane createRootPane() { JRootPane rootPane = new JRootPane(); KeyStroke stroke = KeyStrokes.ESC; javax.swing.Action escapeAction = new AbstractAction("ESCAPE") { /** * */ private static final long serialVersionUID = -4036804004190858925L; public void actionPerformed(ActionEvent actionEvent) { setVisible(false); } }; rootPane.getActionMap().put(escapeAction.getValue(Action.NAME), escapeAction); InputMap inputMap = rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); inputMap.put(stroke, escapeAction.getValue(Action.NAME)); return rootPane; } private void init() { parameterPanel = new ArgumentsPanel(JMeterUtils.getResString("function_params"), false); //$NON-NLS-1$ initializeFunctionList(); this.getContentPane().setLayout(new BorderLayout(10, 10)); JPanel comboPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); comboPanel.add(functionList); JButton helpButton = new JButton(JMeterUtils.getResString("help")); //$NON-NLS-1$ helpButton.addActionListener(new HelpListener()); comboPanel.add(helpButton); this.getContentPane().add(comboPanel, BorderLayout.NORTH); this.getContentPane().add(parameterPanel, BorderLayout.CENTER); JPanel resultsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); cutPasteFunction = new JLabeledTextField(JMeterUtils.getResString("cut_paste_function"), 35); //$NON-NLS-1$ resultsPanel.add(cutPasteFunction); JButton generateButton = new JButton(JMeterUtils.getResString("generate")); //$NON-NLS-1$ generateButton.addActionListener(this); resultsPanel.add(generateButton); this.getContentPane().add(resultsPanel, BorderLayout.SOUTH); this.pack(); ComponentUtil.centerComponentInWindow(this); } private void initializeFunctionList() { String[] functionNames = CompoundVariable.getFunctionNames(); Arrays.sort(functionNames, new Comparator() { public int compare(String o1, String o2) { return o1.compareToIgnoreCase(o2); } }); functionList = new JLabeledChoice(JMeterUtils.getResString("choose_function"), functionNames); //$NON-NLS-1$ functionList.addChangeListener(this); } public void stateChanged(ChangeEvent event) { try { Arguments args = new Arguments(); Function function = CompoundVariable.getFunctionClass(functionList.getText()).newInstance(); List argumentDesc = function.getArgumentDesc(); for (String help : argumentDesc) { args.addArgument(help, ""); //$NON-NLS-1$ } parameterPanel.configure(args); parameterPanel.revalidate(); getContentPane().remove(parameterPanel); this.pack(); getContentPane().add(parameterPanel, BorderLayout.CENTER); this.pack(); this.validate(); this.repaint(); } catch (InstantiationException e) { } catch (IllegalAccessException e) { } } public void actionPerformed(ActionEvent e) { StringBuilder functionCall = new StringBuilder("${"); functionCall.append(functionList.getText()); Arguments args = (Arguments) parameterPanel.createTestElement(); if (args.getArguments().size() > 0) { functionCall.append("("); PropertyIterator iter = args.iterator(); boolean first = true; while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); if (!first) { functionCall.append(","); } functionCall.append(arg.getValue()); first = false; } functionCall.append(")"); } functionCall.append("}"); cutPasteFunction.setText(functionCall.toString()); } private class HelpListener implements ActionListener { public void actionPerformed(ActionEvent e) { String[] source = new String[] { Help.HELP_FUNCTIONS, functionList.getText() }; ActionEvent helpEvent = new ActionEvent(source, e.getID(), "help"); //$NON-NLS-1$ ActionRouter.getInstance().actionPerformed(helpEvent); } } public void localeChanged(LocaleChangeEvent event) { setTitle(JMeterUtils.getResString("function_helper_title")); this.getContentPane().removeAll(); // so we can add them again in init init(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/functions/Function.java0000644000175000017500000000507412032647220025101 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; /** * Methods that a function must implement */ public interface Function { /** * Given the previous SampleResult and the current Sampler, return a string * to use as a replacement value for the function call. Assume * "setParameter" was previously called. * * This method must be threadsafe - multiple threads will be using the same * object. */ String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException; /** * A collection of the parameters used to configure your function. Each * parameter is a CompoundVariable and can be resolved by calling the * execute() method of the CompoundVariable (which should be done at * execution.) * * @param parameters * @throws InvalidVariableException */ void setParameters(Collection parameters) throws InvalidVariableException; /** * Return the name of your function. Convention is to prepend "__" to the * name (ie "__regexFunction") */ String getReferenceKey(); /** * Return a list of strings briefly describing each parameter your function * takes. Please use JMeterUtils.getResString(resource_name) to grab a * resource string. Otherwise, your help text will be difficult to * internationalize. * * This list is not optional. If you don't wish to write help, you must at * least return a List containing the correct number of blank strings, one * for each argument. */ List getArgumentDesc(); } apache-jmeter-2.8/src/core/org/apache/jmeter/ProxyAuthenticator.java0000644000175000017500000000437012032647221025157 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter; import java.net.Authenticator; import java.net.PasswordAuthentication; /** * Provides JMeter the ability to use proxy servers that require username and * password. * * @version $Revision: 937726 $ */ public class ProxyAuthenticator extends Authenticator { /** The username to authenticate with. */ private final String userName; /** The password to authenticate with. */ private final char password[]; /** * Create a ProxyAuthenticator with the specified username and password. * * @param userName * the username to authenticate with * @param password * the password to authenticate with */ public ProxyAuthenticator(String userName, String password) { this.userName = userName; this.password = password.toCharArray(); } /** * Return a PasswordAuthentication instance using the userName and password * specified in the constructor. * Only applies to PROXY request types. * * @return a PasswordAuthentication instance to use for authenticating with * the proxy */ @Override protected PasswordAuthentication getPasswordAuthentication() { switch (getRequestorType()){ case PROXY: return new PasswordAuthentication(userName, password); case SERVER: break; default: break; } return null; } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/0000755000175000017500000000000012165514773022130 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/control/GenericController.java0000644000175000017500000003066412032647217026415 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.threads.TestCompiler; import org.apache.jmeter.threads.TestCompilerHelper; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** *

        * This class is the basis for all the controllers. * It also implements SimpleController. *

        *

        * The main entry point is next(), which is called by by JMeterThread as follows: *

        *

        * while (running && (sampler = controller.next()) != null) *

        */ public class GenericController extends AbstractTestElement implements Controller, Serializable, TestCompilerHelper { private static final long serialVersionUID = 234L; private static final Logger log = LoggingManager.getLoggerForClass(); private transient LinkedList iterationListeners = new LinkedList(); // Only create the map if it is required private transient final ConcurrentMap children = TestCompiler.IS_USE_STATIC_SET ? null : new ConcurrentHashMap(); private static final Object DUMMY = new Object(); // May be replaced by RandomOrderController protected transient List subControllersAndSamplers = new ArrayList(); /** * Index of current sub controller or sampler */ protected transient int current; /** * TODO document this */ private transient int iterCount; /** * Controller has ended */ private transient boolean done; /** * First sampler or sub-controller */ private transient boolean first; /** * Creates a Generic Controller */ public GenericController() { } public void initialize() { resetCurrent(); resetIterCount(); done = false; // TODO should this use setDone()? first = true; // TODO should this use setFirst()? TestElement elem; for (int i = 0; i < subControllersAndSamplers.size(); i++) { elem = subControllersAndSamplers.get(i); if (elem instanceof Controller) { ((Controller) elem).initialize(); } } } /** * Resets the controller: *
          *
        • resetCurrent() (i.e. current=0)
        • *
        • increment iteration count
        • *
        • sets first=true
        • *
        • recoverRunningVersion() to set the controller back to the initial state
        • *
        * */ protected void reInitialize() { resetCurrent(); incrementIterCount(); setFirst(true); recoverRunningVersion(); } /** *

        * Determines the next sampler to be processed. *

        * *

        * If isDone, returns null. *

        * *

        * Gets the list element using current pointer. * If this is null, calls {@link #nextIsNull()}. *

        * *

        * If the list element is a sampler, calls {@link #nextIsASampler(Sampler)}, * otherwise calls {@link #nextIsAController(Controller)} *

        * *

        * If any of the called methods throws NextIsNullException, returns null, * otherwise the value obtained above is returned. *

        * * @return the next sampler or null */ public Sampler next() { fireIterEvents(); if (log.isDebugEnabled()) { log.debug("Calling next on: " + this.getClass().getName()); } if (isDone()) { return null; } Sampler returnValue = null; try { TestElement currentElement = getCurrentElement(); setCurrentElement(currentElement); if (currentElement == null) { // incrementCurrent(); returnValue = nextIsNull(); } else { if (currentElement instanceof Sampler) { returnValue = nextIsASampler((Sampler) currentElement); } else { // must be a controller returnValue = nextIsAController((Controller) currentElement); } } } catch (NextIsNullException e) { // NOOP } return returnValue; } /** * @see org.apache.jmeter.control.Controller#isDone() */ public boolean isDone() { return done; } protected void setDone(boolean done) { this.done = done; } protected boolean isFirst() { return first; } public void setFirst(boolean b) { first = b; } /** * Called by next() if the element is a Controller, * and returns the next sampler from the controller. * If this is null, then updates the current pointer and makes recursive call to next(). * @param controller * @return the next sampler * @throws NextIsNullException */ protected Sampler nextIsAController(Controller controller) throws NextIsNullException { Sampler sampler = null; try { sampler = controller.next(); } catch (StackOverflowError soe) { // See bug 50618 Catches a StackOverflowError when a condition returns // always false (after at least one iteration with return true) log.warn("StackOverflowError detected"); // $NON-NLS-1$ throw new NextIsNullException("StackOverflowError detected", soe); } if (sampler == null) { currentReturnedNull(controller); sampler = next(); } return sampler; } /** * Increment the current pointer and return the element. * Called by next() if the element is a sampler. * (May be overriden by sub-classes). * * @param element * @return input element * @throws NextIsNullException */ protected Sampler nextIsASampler(Sampler element) throws NextIsNullException { incrementCurrent(); return element; } /** * Called by next() when getCurrentElement() returns null. * Reinitialises the controller. * * @return null (always, for this class) * @throws NextIsNullException */ protected Sampler nextIsNull() throws NextIsNullException { reInitialize(); return null; } /** * {@inheritDoc} */ public void triggerEndOfLoop() { reInitialize(); } /** * Called to re-initialize a index of controller's elements (Bug 50032) * */ protected void reInitializeSubController() { boolean wasFlagSet = getThreadContext().setIsReinitializingSubControllers(); try { TestElement currentElement = getCurrentElement(); if (currentElement != null) { if (currentElement instanceof Sampler) { nextIsASampler((Sampler) currentElement); } else { // must be a controller if (nextIsAController((Controller) currentElement) != null) { reInitializeSubController(); } } } } catch (NextIsNullException e) { // NOOP } finally { if (wasFlagSet) { getThreadContext().unsetIsReinitializingSubControllers(); } } } /** * If the controller is done, remove it from the list, * otherwise increment to next entry in list. * * @param c controller */ protected void currentReturnedNull(Controller c) { if (c.isDone()) { removeCurrentElement(); } else { incrementCurrent(); } } /** * Gets the SubControllers attribute of the GenericController object * * @return the SubControllers value */ protected List getSubControllers() { return subControllersAndSamplers; } private void addElement(TestElement child) { subControllersAndSamplers.add(child); } /** * Empty implementation - does nothing. * * @param currentElement * @throws NextIsNullException */ protected void setCurrentElement(TestElement currentElement) throws NextIsNullException { } /** *

        * Gets the element indicated by the current index, if one exists, * from the subControllersAndSamplers list. *

        *

        * If the subControllersAndSamplers list is empty, * then set done = true, and throw NextIsNullException. *

        * @return the current element - or null if current index too large * @throws NextIsNullException if list is empty */ protected TestElement getCurrentElement() throws NextIsNullException { if (current < subControllersAndSamplers.size()) { return subControllersAndSamplers.get(current); } if (subControllersAndSamplers.size() == 0) { setDone(true); throw new NextIsNullException(); } return null; } protected void removeCurrentElement() { subControllersAndSamplers.remove(current); } /** * Increments the current pointer; called by currentReturnedNull to move the * controller on to its next child. */ protected void incrementCurrent() { current++; } protected void resetCurrent() { current = 0; } @Override public void addTestElement(TestElement child) { if (child instanceof Controller || child instanceof Sampler) { addElement(child); } } /** * {@inheritDoc} */ public final boolean addTestElementOnce(TestElement child){ if (children.putIfAbsent(child, DUMMY) == null) { addTestElement(child); return true; } return false; } public void addIterationListener(LoopIterationListener lis) { /* * A little hack - add each listener to the start of the list - this * ensures that the thread running the show is the first listener and * can modify certain values before other listeners are called. */ iterationListeners.addFirst(lis); } /** * Remove listener */ public void removeIterationListener(LoopIterationListener iterationListener) { for (Iterator iterator = iterationListeners.iterator(); iterator.hasNext();) { LoopIterationListener listener = iterator.next(); if(listener == iterationListener) { iterator.remove(); break; // can only match once } } } protected void fireIterEvents() { if (isFirst()) { fireIterationStart(); first = false; // TODO - should this use setFirst() ? } } protected void fireIterationStart() { LoopIterationEvent event = new LoopIterationEvent(this, getIterCount()); for (LoopIterationListener item : iterationListeners) { item.iterationStart(event); } } protected int getIterCount() { return iterCount; } protected void incrementIterCount() { iterCount++; } protected void resetIterCount() { iterCount = 0; } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/LoopController.java0000644000175000017500000001140712032647217025744 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; /** * Class that implements the Loop Controller. */ public class LoopController extends GenericController implements Serializable { private static final String LOOPS = "LoopController.loops"; // $NON-NLS-1$ private static final long serialVersionUID = 232L; /* * In spite of the name, this is actually used to determine if the loop controller is repeatable. * * The value is only used in nextIsNull() when the loop end condition has been detected: * If forever==true, then it calls resetLoopCount(), otherwise it calls setDone(true). * * Loop Controllers always set forever=true, so that they will be executed next time * the parent invokes them. * * Thread Group sets the value false, so nextIsNull() sets done, and the Thread Group will not be repeated. * However, it's not clear that a Thread Group could ever be repeated. */ private static final String CONTINUE_FOREVER = "LoopController.continue_forever"; // $NON-NLS-1$ private transient int loopCount = 0; public LoopController() { setContinueForever_private(true); } public void setLoops(int loops) { setProperty(new IntegerProperty(LOOPS, loops)); } public void setLoops(String loopValue) { setProperty(new StringProperty(LOOPS, loopValue)); } public int getLoops() { try { JMeterProperty prop = getProperty(LOOPS); return Integer.parseInt(prop.getStringValue()); } catch (NumberFormatException e) { return 0; } } public String getLoopString() { return getPropertyAsString(LOOPS); } /** * Determines whether the loop will return any samples if it is rerun. * * @param forever * true if the loop must be reset after ending a run */ public void setContinueForever(boolean forever) { setContinueForever_private(forever); } private void setContinueForever_private(boolean forever) { setProperty(new BooleanProperty(CONTINUE_FOREVER, forever)); } private boolean getContinueForever() { return getPropertyAsBoolean(CONTINUE_FOREVER); } /** * {@inheritDoc} */ @Override public Sampler next() { if(endOfLoop()) { if (!getContinueForever()) { setDone(true); } return null; } return super.next(); } private boolean endOfLoop() { final int loops = getLoops(); return (loops > -1) && (loopCount >= loops); } /** * {@inheritDoc} */ @Override protected Sampler nextIsNull() throws NextIsNullException { reInitialize(); if (endOfLoop()) { if (!getContinueForever()) { setDone(true); } else { resetLoopCount(); } return null; } return next(); } /** * {@inheritDoc} */ @Override public void triggerEndOfLoop() { super.triggerEndOfLoop(); resetLoopCount(); } protected void incrementLoopCount() { loopCount++; } protected void resetLoopCount() { loopCount = 0; } /** * {@inheritDoc} */ @Override protected int getIterCount() { return loopCount + 1; } /** * {@inheritDoc} */ @Override protected void reInitialize() { setFirst(true); resetCurrent(); incrementLoopCount(); recoverRunningVersion(); } /** * Start next iteration */ public void startNextLoop() { reInitialize(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/control/IfController.java0000644000175000017500000001445212032647217025374 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; /** * * * This is a Conditional Controller; it will execute the set of statements * (samplers/controllers, etc) while the 'condition' is true. *

        * In a programming world - this is equivalant of : *

         * if (condition) {
         *          statements ....
         *          }
         * 
        * In JMeter you may have : *
         
         * Thread-Group (set to loop a number of times or indefinitely,
         *    ... Samplers ... (e.g. Counter )
         *    ... Other Controllers ....
         *    ... IfController ( condition set to something like - ${counter}<10)
         *       ... statements to perform if condition is true
         *       ...
         *    ... Other Controllers /Samplers }
         * 
        */ // for unit test code @see TestIfController public class IfController extends GenericController implements Serializable { private static final Logger logger = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final String CONDITION = "IfController.condition"; //$NON-NLS-1$ private static final String EVALUATE_ALL = "IfController.evaluateAll"; //$NON-NLS-1$ private static final String USE_EXPRESSION = "IfController.useExpression"; //$NON-NLS-1$ /** * constructor */ public IfController() { super(); } /** * constructor */ public IfController(String condition) { super(); this.setCondition(condition); } /** * Condition Accessor - this is gonna be like ${count}<10 */ public void setCondition(String condition) { setProperty(new StringProperty(CONDITION, condition)); } /** * Condition Accessor - this is gonna be like ${count}<10 */ public String getCondition() { return getPropertyAsString(CONDITION); } /** * evaluate the condition clause log error if bad condition */ private boolean evaluateCondition(String cond) { logger.debug(" getCondition() : [" + cond + "]"); String resultStr = ""; boolean result = false; // now evaluate the condition using JavaScript Context cx = Context.enter(); try { Scriptable scope = cx.initStandardObjects(null); Object cxResultObject = cx.evaluateString(scope, cond /** * conditionString ** */ , "", 1, null); resultStr = Context.toString(cxResultObject); if (resultStr.equals("false")) { //$NON-NLS-1$ result = false; } else if (resultStr.equals("true")) { //$NON-NLS-1$ result = true; } else { throw new Exception(" BAD CONDITION :: " + cond + " :: expected true or false"); } logger.debug(" >> evaluate Condition - [ " + cond + "] results is [" + result + "]"); } catch (Exception e) { logger.error(getName()+": error while processing "+ "[" + cond + "]\n", e); } finally { Context.exit(); } return result; } private static boolean evaluateExpression(String cond) { return cond.equalsIgnoreCase("true"); // $NON-NLS-1$ } /** * This is overriding the parent method. IsDone indicates whether the * termination condition is reached. I.e. if the condition evaluates to * False - then isDone() returns TRUE */ @Override public boolean isDone() { // boolean result = true; // try { // result = !evaluateCondition(); // } catch (Exception e) { // logger.error(e.getMessage(), e); // } // setDone(true); // return result; // setDone(false); return false; } /** * @see org.apache.jmeter.control.Controller#next() */ @Override public Sampler next() { // We should only evalute the condition if it is the first // time ( first "iteration" ) we are called. // For subsequent calls, we are inside the IfControllerGroup, // so then we just pass the control to the next item inside the if control boolean result = true; if(isEvaluateAll() || isFirst()) { result = isUseExpression() ? evaluateExpression(getCondition()) : evaluateCondition(getCondition()); } if (result) { return super.next(); } // If-test is false, need to re-initialize indexes try { reInitializeSubController(); // Bug 50032 - reinitialize current index element for all sub controller return nextIsNull(); } catch (NextIsNullException e1) { return null; } } /** * {@inheritDoc} */ @Override public void triggerEndOfLoop() { reInitializeSubController(); super.triggerEndOfLoop(); } public boolean isEvaluateAll() { return getPropertyAsBoolean(EVALUATE_ALL,false); } public void setEvaluateAll(boolean b) { setProperty(EVALUATE_ALL,b); } public boolean isUseExpression() { return getPropertyAsBoolean(USE_EXPRESSION, false); } public void setUseExpression(boolean selected) { setProperty(USE_EXPRESSION, selected, false); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/TransactionSampler.java0000644000175000017500000001215612032647217026602 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * N.B. Although this is a type of sampler, it is only used by the transaction controller, * and so is in the control package */ package org.apache.jmeter.control; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; /** * Transaction Sampler class to measure transaction times * (not exposed a a GUI class, as it is only used internally) */ public class TransactionSampler extends AbstractSampler { private static final long serialVersionUID = 240L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private boolean transactionDone = false; private TransactionController transactionController; private Sampler subSampler; private SampleResult transactionSampleResult; private int calls = 0; private int noFailingSamples = 0; private int totalTime = 0; /** * @deprecated only for use by test code */ @Deprecated public TransactionSampler(){ //log.warn("Constructor only intended for use in testing"); } public TransactionSampler(TransactionController controller, String name) { transactionController = controller; setName(name); // ensure name is available for debugging transactionSampleResult = new SampleResult(); transactionSampleResult.setSampleLabel(name); // Assume success transactionSampleResult.setSuccessful(true); transactionSampleResult.sampleStart(); } /** * One cannot sample the TransactionSampler directly. */ public SampleResult sample(Entry e) { throw new RuntimeException("Cannot sample TransactionSampler directly"); // It is the JMeterThread which knows how to sample a real sampler } public Sampler getSubSampler() { return subSampler; } public SampleResult getTransactionResult() { return transactionSampleResult; } public TransactionController getTransactionController() { return transactionController; } public boolean isTransactionDone() { return transactionDone; } public void addSubSamplerResult(SampleResult res) { // Another subsample for the transaction calls++; // The transaction fails if any sub sample fails if (!res.isSuccessful()) { transactionSampleResult.setSuccessful(false); noFailingSamples++; } // Add the sub result to the transaction result transactionSampleResult.addSubResult(res); // Add current time to total for later use (exclude pause time) totalTime += res.getTime(); } protected void setTransactionDone() { this.transactionDone = true; // Set the overall status for the transaction sample // TODO: improve, e.g. by adding counts to the SampleResult class transactionSampleResult.setResponseMessage("Number of samples in transaction : " + calls + ", number of failing samples : " + noFailingSamples); if (transactionSampleResult.isSuccessful()) { transactionSampleResult.setResponseCodeOK(); } // Bug 50080 (not include pause time when generate parent) if (!transactionController.isIncludeTimers()) { long end = transactionSampleResult.currentTimeInMillis(); transactionSampleResult.setIdleTime(end - transactionSampleResult.getStartTime() - totalTime); transactionSampleResult.setEndTime(end); } } protected void setSubSampler(Sampler subSampler) { this.subSampler = subSampler; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/0000755000175000017500000000000012165514773022714 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/WhileControllerGui.java0000644000175000017500000001123112032647217027327 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.WhileController; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class WhileControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; private static final String CONDITION_LABEL = "while_controller_label"; // $NON-NLS-1$ /** * A field allowing the user to specify the condition (not yet used). */ private JTextField theCondition; /** The name of the condition field component. */ private static final String CONDITION = "While_Condition"; // $NON-NLS-1$ /** * Create a new LoopControlPanel as a standalone component. */ public WhileControllerGui() { init(); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); if (element instanceof WhileController) { theCondition.setText(((WhileController) element).getCondition()); } } /** * Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { WhileController controller = new WhileController(); modifyTestElement(controller); return controller; } /** * Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement controller) { configureTestElement(controller); if (controller instanceof WhileController) { if (theCondition.getText().length() > 0) { ((WhileController) controller).setCondition(theCondition.getText()); } else { ((WhileController) controller).setCondition(""); // $NON-NLS-1$ } } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); theCondition.setText(""); // $NON-NLS-1$ } public String getLabelResource() { return "while_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(createConditionPanel(), BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } /** * Create a GUI panel containing the condition. TODO make use of the field * * @return a GUI panel containing the condition components */ private JPanel createConditionPanel() { JPanel conditionPanel = new JPanel(new BorderLayout(5, 0)); // Condition LABEL JLabel conditionLabel = new JLabel(JMeterUtils.getResString(CONDITION_LABEL)); conditionPanel.add(conditionLabel, BorderLayout.WEST); // TEXT FIELD // This means exit if last sample failed theCondition = new JTextField(""); // $NON-NLS-1$ theCondition.setName(CONDITION); conditionLabel.setLabelFor(theCondition); conditionPanel.add(theCondition, BorderLayout.CENTER); conditionPanel.add(Box.createHorizontalStrut(conditionLabel.getPreferredSize().width + theCondition.getPreferredSize().width), BorderLayout.NORTH); return conditionPanel; } }apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/IfControllerPanel.java0000644000175000017500000001456312032647217027143 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.IfController; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * The user interface for a controller which specifies that its subcomponents * should be executed while a condition holds. This component can be used * standalone or embedded into some other component. * */ public class IfControllerPanel extends AbstractControllerGui { private static final long serialVersionUID = 240L; /** * A field allowing the user to specify the number of times the controller * should loop. */ private JTextField theCondition; private JCheckBox useExpression; private JCheckBox evaluateAll; /** * Boolean indicating whether or not this component should display its name. * If true, this is a standalone component. If false, this component is * intended to be used as a subpanel for another component. */ private boolean displayName = true; /** * Create a new LoopControlPanel as a standalone component. */ public IfControllerPanel() { this(true); } /** * Create a new IfControllerPanel as either a standalone or an embedded * component. * * @param displayName * indicates whether or not this component should display its * name. If true, this is a standalone component. If false, this * component is intended to be used as a subpanel for another * component. */ public IfControllerPanel(boolean displayName) { this.displayName = displayName; init(); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); if (element instanceof IfController) { IfController ifController = (IfController) element; theCondition.setText(ifController.getCondition()); evaluateAll.setSelected(ifController.isEvaluateAll()); useExpression.setSelected(ifController.isUseExpression()); } } /** * Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { IfController controller = new IfController(); modifyTestElement(controller); return controller; } /** * Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement controller) { configureTestElement(controller); if (controller instanceof IfController) { IfController ifController = (IfController) controller; ifController.setCondition(theCondition.getText()); ifController.setEvaluateAll(evaluateAll.isSelected()); ifController.setUseExpression(useExpression.isSelected()); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); theCondition.setText(""); // $NON-NLS-1$ evaluateAll.setSelected(false); } public String getLabelResource() { return "if_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { // Standalone if (displayName) { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(createConditionPanel(), BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } else { // Embedded setLayout(new BorderLayout()); add(createConditionPanel(), BorderLayout.NORTH); } } /** * Create a GUI panel containing the condition. * * @return a GUI panel containing the condition components */ private JPanel createConditionPanel() { JPanel conditionPanel = new JPanel(new BorderLayout(5, 0)); // Condition LABEL JLabel conditionLabel = new JLabel(JMeterUtils.getResString("if_controller_label")); // $NON-NLS-1$ conditionPanel.add(conditionLabel, BorderLayout.WEST); // TEXT FIELD theCondition = new JTextField(""); // $NON-NLS-1$ conditionLabel.setLabelFor(theCondition); conditionPanel.add(theCondition, BorderLayout.CENTER); conditionPanel.add(Box.createHorizontalStrut(conditionLabel.getPreferredSize().width + theCondition.getPreferredSize().width), BorderLayout.NORTH); JPanel optionPanel = new JPanel(); // Use expression instead of Javascript useExpression = new JCheckBox(JMeterUtils.getResString("if_controller_expression")); // $NON-NLS-1$ optionPanel.add(useExpression); // Evaluate All checkbox evaluateAll = new JCheckBox(JMeterUtils.getResString("if_controller_evaluate_all")); // $NON-NLS-1$ optionPanel.add(evaluateAll); conditionPanel.add(optionPanel,BorderLayout.SOUTH); return conditionPanel; } }apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/RunTimeGui.java0000644000175000017500000001633612032647217025611 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.RunTime; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * The user interface for a controller which specifies that its subcomponents * should be executed some number of seconds in a loop. This component can be * used standalone or embedded into some other component. * */ public class RunTimeGui extends AbstractControllerGui implements ActionListener { private static final long serialVersionUID = 240L; /** * A field allowing the user to specify the number of seconds the controller * should loop. */ private JTextField seconds; /** * Boolean indicating whether or not this component should display its name. * If true, this is a standalone component. If false, this component is * intended to be used as a subpanel for another component. */ private boolean displayName = true; /** * Create a new LoopControlPanel as a standalone component. */ public RunTimeGui() { this(true); } /** * Create a new LoopControlPanel as either a standalone or an embedded * component. * * @param displayName * indicates whether or not this component should display its * name. If true, this is a standalone component. If false, this * component is intended to be used as a subpanel for another * component. */ public RunTimeGui(boolean displayName) { this.displayName = displayName; init(); setState(1); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); if (element instanceof RunTime) { setState(((RunTime) element).getRuntimeString()); } else { setState(1); } } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { RunTime lc = new RunTime(); modifyTestElement(lc); return lc; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement lc) { configureTestElement(lc); if (lc instanceof RunTime) { if (seconds.getText().length() > 0) { ((RunTime) lc).setRuntime(seconds.getText()); } else { ((RunTime) lc).setRuntime(0); } } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); seconds.setText("1"); // $NON-NLS-1$ } /** * Invoked when an action occurs. This implementation assumes that the * target component is the infinite seconds checkbox. * * @param event * the event that has occurred */ public void actionPerformed(ActionEvent event) { seconds.setEnabled(true); } public String getLabelResource() { return "runtime_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { // The Loop Controller panel can be displayed standalone or inside // another panel. For standalone, we want to display the TITLE, NAME, // etc. (everything). However, if we want to display it within another // panel, we just display the Loop Count fields (not the TITLE and // NAME). // Standalone if (displayName) { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(createLoopCountPanel(), BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } else { // Embedded setLayout(new BorderLayout()); add(createLoopCountPanel(), BorderLayout.NORTH); } } /** * Create a GUI panel containing the components related to the number of * seconds which should be executed. * * @return a GUI panel containing the loop count components */ private JPanel createLoopCountPanel() { JPanel loopPanel = new JPanel(new BorderLayout(5, 0)); // SECONDS LABEL JLabel secondsLabel = new JLabel(JMeterUtils.getResString("runtime_seconds")); // $NON-NLS-1$ loopPanel.add(secondsLabel, BorderLayout.WEST); JPanel loopSubPanel = new JPanel(new BorderLayout(5, 0)); // TEXT FIELD seconds = new JTextField("1", 5); // $NON-NLS-1$ secondsLabel.setLabelFor(seconds); loopSubPanel.add(seconds, BorderLayout.CENTER); loopPanel.add(loopSubPanel, BorderLayout.CENTER); loopPanel.add(Box.createHorizontalStrut(secondsLabel.getPreferredSize().width + seconds.getPreferredSize().width), BorderLayout.NORTH); return loopPanel; } /** * Set the number of seconds which should be reflected in the GUI. The * secsCount parameter should contain the String representation of an * integer. This integer will be treated as the number of seconds. If this * integer is less than 0, the number of seconds will be assumed to be * infinity. * * @param secsCount * the String representation of the number of seconds */ private void setState(String secsCount) { seconds.setText(secsCount); seconds.setEnabled(true); } /** * Set the number of seconds which should be reflected in the GUI. If the * secsCount is less than 0, the number of seconds will be assumed to be * infinity. * * @param secsCount * the number of seconds */ private void setState(long secsCount) { seconds.setEnabled(true); seconds.setText(Long.toString(secsCount)); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/TransactionControllerGui.java0000644000175000017500000000606412032647217030554 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import javax.swing.JCheckBox; import org.apache.jmeter.control.TransactionController; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; /** * A Transaction controller component. * */ public class TransactionControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; private JCheckBox parent; // If selected, then generate parent sample, otherwise as per original controller private JCheckBox includeTimers; // if selected, add duration of timers to total runtime /** * Create a new TransactionControllerGui instance. */ public TransactionControllerGui() { init(); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { TransactionController lc = new TransactionController(); configureTestElement(lc); return lc; } @Override public void configure(TestElement el) { super.configure(el); parent.setSelected(((TransactionController) el).isParent()); includeTimers.setSelected(((TransactionController) el).isIncludeTimers()); } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { configureTestElement(el); ((TransactionController) el).setParent(parent.isSelected()); TransactionController tc = ((TransactionController) el); tc.setParent(parent.isSelected()); tc.setIncludeTimers(includeTimers.isSelected()); } public String getLabelResource() { return "transaction_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); parent = new JCheckBox(JMeterUtils.getResString("transaction_controller_parent")); // $NON-NLS-1$ add(parent); includeTimers = new JCheckBox(JMeterUtils.getResString("transaction_controller_include_timers"), true); // $NON-NLS-1$ add(includeTimers); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/WorkBenchGui.java0000644000175000017500000000760612032647217026110 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import java.util.Collection; import javax.swing.JMenu; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.util.JMeterUtils; /** * JMeter GUI component representing a work bench where users can make * preparations for the test plan. * */ public class WorkBenchGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * Create a new WorkbenchGui. */ public WorkBenchGui() { super(); init(); } /** * This is the list of menu categories this gui component will be available * under. This implementation returns null, since the WorkBench appears at * the top level of the tree and cannot be added elsewhere. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return null; } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { WorkBench wb = new WorkBench(); modifyTestElement(wb); return wb; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement wb) { super.configureTestElement(wb); } /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

        * The WorkBench returns a popup menu allowing you to add anything. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { JPopupMenu menu = new JPopupMenu(); JMenu addMenu = MenuFactory.makeMenus(new String[] { MenuFactory.NON_TEST_ELEMENTS, MenuFactory.CONTROLLERS, MenuFactory.CONFIG_ELEMENTS, MenuFactory.TIMERS, MenuFactory.PRE_PROCESSORS, MenuFactory.SAMPLERS, MenuFactory.POST_PROCESSORS, MenuFactory.ASSERTIONS, MenuFactory.LISTENERS, }, JMeterUtils.getResString("add"), // $NON-NLS-1$ ActionNames.ADD); menu.add(addMenu); MenuFactory.addPasteResetMenu(menu); MenuFactory.addFileMenu(menu); return menu; } public String getLabelResource() { return "workbench_title"; // $NON-NLS-1$ } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/LoopControlPanel.java0000644000175000017500000002116612032647217027010 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.LoopController; import org.apache.jmeter.gui.util.FocusRequester; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * The user interface for a controller which specifies that its subcomponents * should be executed some number of times in a loop. This component can be used * standalone or embedded into some other component. * */ public class LoopControlPanel extends AbstractControllerGui implements ActionListener { private static final long serialVersionUID = 240L; /** * A checkbox allowing the user to specify whether or not the controller * should loop forever. */ private JCheckBox infinite; /** * A field allowing the user to specify the number of times the controller * should loop. */ private JTextField loops; /** * Boolean indicating whether or not this component should display its name. * If true, this is a standalone component. If false, this component is * intended to be used as a subpanel for another component. */ private boolean displayName = true; /** The name of the infinite checkbox component. */ private static final String INFINITE = "Infinite Field"; // $NON-NLS-1$ /** The name of the loops field component. */ private static final String LOOPS = "Loops Field"; // $NON-NLS-1$ /** * Create a new LoopControlPanel as a standalone component. */ public LoopControlPanel() { this(true); } /** * Create a new LoopControlPanel as either a standalone or an embedded * component. * * @param displayName * indicates whether or not this component should display its * name. If true, this is a standalone component. If false, this * component is intended to be used as a subpanel for another * component. */ public LoopControlPanel(boolean displayName) { this.displayName = displayName; init(); setState(1); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); if (element instanceof LoopController) { setState(((LoopController) element).getLoopString()); } else { setState(1); } } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { LoopController lc = new LoopController(); modifyTestElement(lc); return lc; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement lc) { configureTestElement(lc); if (lc instanceof LoopController) { if (loops.getText().length() > 0) { ((LoopController) lc).setLoops(loops.getText()); } else { ((LoopController) lc).setLoops(-1); } } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); loops.setText("1"); // $NON-NLS-1$ infinite.setSelected(false); } /** * Invoked when an action occurs. This implementation assumes that the * target component is the infinite loops checkbox. * * @param event * the event that has occurred */ public void actionPerformed(ActionEvent event) { if (infinite.isSelected()) { loops.setText(""); // $NON-NLS-1$ loops.setEnabled(false); } else { loops.setEnabled(true); new FocusRequester(loops); } } public String getLabelResource() { return "loop_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { // The Loop Controller panel can be displayed standalone or inside // another panel. For standalone, we want to display the TITLE, NAME, // etc. (everything). However, if we want to display it within another // panel, we just display the Loop Count fields (not the TITLE and // NAME). // Standalone if (displayName) { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(createLoopCountPanel(), BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } else { // Embedded setLayout(new BorderLayout()); add(createLoopCountPanel(), BorderLayout.NORTH); } } /** * Create a GUI panel containing the components related to the number of * loops which should be executed. * * @return a GUI panel containing the loop count components */ private JPanel createLoopCountPanel() { JPanel loopPanel = new JPanel(new BorderLayout(5, 0)); // LOOP LABEL JLabel loopsLabel = new JLabel(JMeterUtils.getResString("iterator_num")); // $NON-NLS-1$ loopPanel.add(loopsLabel, BorderLayout.WEST); JPanel loopSubPanel = new JPanel(new BorderLayout(5, 0)); // TEXT FIELD loops = new JTextField("1", 5); // $NON-NLS-1$ loops.setName(LOOPS); loopsLabel.setLabelFor(loops); loopSubPanel.add(loops, BorderLayout.CENTER); // FOREVER CHECKBOX infinite = new JCheckBox(JMeterUtils.getResString("infinite")); // $NON-NLS-1$ infinite.setActionCommand(INFINITE); infinite.addActionListener(this); loopSubPanel.add(infinite, BorderLayout.WEST); loopPanel.add(loopSubPanel, BorderLayout.CENTER); loopPanel.add(Box.createHorizontalStrut(loopsLabel.getPreferredSize().width + loops.getPreferredSize().width + infinite.getPreferredSize().width), BorderLayout.NORTH); return loopPanel; } /** * Set the number of loops which should be reflected in the GUI. The * loopCount parameter should contain the String representation of an * integer. This integer will be treated as the number of loops. If this * integer is less than 0, the number of loops will be assumed to be * infinity. * * @param loopCount * the String representation of the number of loops */ private void setState(String loopCount) { if (loopCount.startsWith("-")) { // $NON-NLS-1$ setState(-1); } else { loops.setText(loopCount); infinite.setSelected(false); loops.setEnabled(true); } } /** * Set the number of loops which should be reflected in the GUI. If the * loopCount is less than 0, the number of loops will be assumed to be * infinity. * * @param loopCount * the number of loops */ private void setState(int loopCount) { if (loopCount <= -1) { infinite.setSelected(true); loops.setEnabled(false); loops.setText(""); // $NON-NLS-1$ } else { infinite.setSelected(false); loops.setEnabled(true); loops.setText(Integer.toString(loopCount)); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/TestPlanGui.java0000644000175000017500000001706012032647217025753 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import java.util.Collection; import javax.swing.JCheckBox; import javax.swing.JMenu; import javax.swing.JPopupMenu; import javax.swing.JTextArea; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.util.FileListPanel; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.util.JMeterUtils; /** * JMeter GUI component representing the test plan which will be executed when * the test is run. * */ public class TestPlanGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * A checkbox allowing the user to specify whether or not JMeter should do * functional testing. */ private final JCheckBox functionalMode; private final JCheckBox serializedMode; private final JCheckBox tearDownOnShutdown; /** A panel allowing the user to define variables. */ private final ArgumentsPanel argsPanel; private final FileListPanel browseJar; /** * Create a new TestPlanGui. */ public TestPlanGui() { browseJar = new FileListPanel(JMeterUtils.getResString("test_plan_classpath_browse"), ".jar"); // $NON-NLS-1$ $NON-NLS-2$ argsPanel = new ArgumentsPanel(JMeterUtils.getResString("user_defined_variables")); // $NON-NLS-1$ serializedMode = new JCheckBox(JMeterUtils.getResString("testplan.serialized")); // $NON-NLS-1$ functionalMode = new JCheckBox(JMeterUtils.getResString("functional_mode")); // $NON-NLS-1$ tearDownOnShutdown = new JCheckBox(JMeterUtils.getResString("teardown_on_shutdown")); // $NON-NLS-1$ init(); } /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

        * The TestPlan will return a popup menu allowing you to add ThreadGroups, * Listeners, Configuration Elements, Assertions, PreProcessors, * PostProcessors, and Timers. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); JMenu addMenu = new JMenu(JMeterUtils.getResString("add")); // $NON-NLS-1$ addMenu.add(MenuFactory.makeMenu(MenuFactory.THREADS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.FRAGMENTS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.CONFIG_ELEMENTS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.TIMERS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.PRE_PROCESSORS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.POST_PROCESSORS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.ASSERTIONS, ActionNames.ADD)); addMenu.add(MenuFactory.makeMenu(MenuFactory.LISTENERS, ActionNames.ADD)); pop.add(addMenu); MenuFactory.addPasteResetMenu(pop); MenuFactory.addFileMenu(pop); return pop; } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { TestPlan tp = new TestPlan(); modifyTestElement(tp); return tp; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement plan) { super.configureTestElement(plan); if (plan instanceof TestPlan) { TestPlan tp = (TestPlan) plan; tp.setFunctionalMode(functionalMode.isSelected()); tp.setTearDownOnShutdown(tearDownOnShutdown.isSelected()); tp.setSerialized(serializedMode.isSelected()); tp.setUserDefinedVariables((Arguments) argsPanel.createTestElement()); tp.setTestPlanClasspathArray(browseJar.getFiles()); } } public String getLabelResource() { return "test_plan"; // $NON-NLS-1$ } /** * This is the list of menu categories this gui component will be available * under. This implementation returns null, since the TestPlan appears at * the top level of the tree and cannot be added elsewhere. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return null; } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param el * the TestElement to configure */ @Override public void configure(TestElement el) { super.configure(el); if (el instanceof TestPlan) { TestPlan tp = (TestPlan) el; functionalMode.setSelected(tp.isFunctionalMode()); serializedMode.setSelected(tp.isSerialized()); tearDownOnShutdown.setSelected(tp.isTearDownOnShutdown()); final JMeterProperty udv = tp.getUserDefinedVariablesAsProperty(); if (udv != null) { argsPanel.configure((Arguments) udv.getObjectValue()); } browseJar.setFiles(tp.getTestPlanClasspathArray()); } } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); add(argsPanel, BorderLayout.CENTER); VerticalPanel southPanel = new VerticalPanel(); southPanel.add(serializedMode); southPanel.add(tearDownOnShutdown); southPanel.add(functionalMode); JTextArea explain = new JTextArea(JMeterUtils.getResString("functional_mode_explanation")); // $NON-NLS-1$ explain.setEditable(false); explain.setBackground(this.getBackground()); southPanel.add(explain); southPanel.add(browseJar); add(southPanel, BorderLayout.SOUTH); } @Override public void clearGui() { super.clearGui(); functionalMode.setSelected(false); serializedMode.setSelected(false); tearDownOnShutdown.setSelected(false); argsPanel.clear(); browseJar.clearFiles(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/TestFragmentControllerGui.java0000644000175000017500000000476112032647217030674 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import java.util.Arrays; import java.util.Collection; import org.apache.jmeter.control.TestFragmentController; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; /** * This defines a simple Test Fragment GUI that can be used instead of a Thread Group * to allow for a non-execution part of the Test Plan that can be saved and referenced * by a Module or Include Controller. */ public class TestFragmentControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; public TestFragmentControllerGui() { init(); } /** * Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { TestFragmentController controller = new TestFragmentController(); modifyTestElement(controller); return controller; } /** * Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement controller) { configureTestElement(controller); } public String getLabelResource() { return "test_fragment_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } /** * Over-ride this so that we add ourselves to the Test Fragment Category instead. */ @Override public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.FRAGMENTS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/LogicControllerGui.java0000644000175000017500000000371212032647217027321 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import org.apache.jmeter.control.GenericController; import org.apache.jmeter.testelement.TestElement; /** * A generic controller component. * */ public class LogicControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; /** * Create a new LogicControllerGui instance. */ public LogicControllerGui() { init(); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { GenericController lc = new GenericController(); configureTestElement(lc); return lc; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { configureTestElement(el); } public String getLabelResource() { return "logic_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/gui/AbstractControllerGui.java0000644000175000017500000000445612032647217030035 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.util.Arrays; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * This is the base class for JMeter GUI components which manage controllers. * */ public abstract class AbstractControllerGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

        * This implementation returns menu items appropriate for most controller * components. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultControllerMenu(); } /** * This is the list of menu categories this gui component will be available * under. This implementation returns * {@link org.apache.jmeter.gui.util.MenuFactory#CONTROLLERS}, which is * appropriate for most controller components. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.CONTROLLERS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/TransactionController.java0000644000175000017500000002460212032647217027321 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterThread; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.threads.ListenerNotifier; import org.apache.jmeter.threads.SamplePackage; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Transaction Controller to measure transaction times * * There are two different modes for the controller: * - generate additional total sample after nested samples (as in JMeter 2.2) * - generate parent sampler containing the nested samples * */ public class TransactionController extends GenericController implements SampleListener, Controller, Serializable { private static final long serialVersionUID = 233L; private static final String TRUE = Boolean.toString(true); // i.e. "true" private static final String PARENT = "TransactionController.parent";// $NON-NLS-1$ private static final String INCLUDE_TIMERS = "TransactionController.includeTimers";// $NON-NLS-1$ private static final Logger log = LoggingManager.getLoggerForClass(); /** * Only used in parent Mode */ private transient TransactionSampler transactionSampler; /** * Only used in NON parent Mode */ private transient ListenerNotifier lnf; /** * Only used in NON parent Mode */ private transient SampleResult res; /** * Only used in NON parent Mode */ private transient int calls; /** * Only used in NON parent Mode */ private transient int noFailingSamples; /** * Cumulated pause time to excluse timer and post/pre processor times * Only used in NON parent Mode */ private transient long pauseTime; /** * Previous end time * Only used in NON parent Mode */ private transient long prevEndTime; /** * Creates a Transaction Controller */ public TransactionController() { lnf = new ListenerNotifier(); } private Object readResolve(){ lnf = new ListenerNotifier(); return this; } public void setParent(boolean _parent){ setProperty(new BooleanProperty(PARENT, _parent)); } public boolean isParent(){ return getPropertyAsBoolean(PARENT); } /** * @see org.apache.jmeter.control.Controller#next() */ @Override public Sampler next(){ if (isParent()){ return next1(); } return next2(); } ///////////////// Transaction Controller - parent //////////////// private Sampler next1() { // Check if transaction is done if(transactionSampler != null && transactionSampler.isTransactionDone()) { if (log.isDebugEnabled()) { log.debug("End of transaction " + getName()); } // This transaction is done transactionSampler = null; return null; } // Check if it is the start of a new transaction if (isFirst()) // must be the start of the subtree { if (log.isDebugEnabled()) { log.debug("Start of transaction " + getName()); } transactionSampler = new TransactionSampler(this, getName()); } // Sample the children of the transaction Sampler subSampler = super.next(); transactionSampler.setSubSampler(subSampler); // If we do not get any sub samplers, the transaction is done if (subSampler == null) { transactionSampler.setTransactionDone(); } return transactionSampler; } @Override protected Sampler nextIsAController(Controller controller) throws NextIsNullException { if (!isParent()) { return super.nextIsAController(controller); } Sampler returnValue; Sampler sampler = controller.next(); if (sampler == null) { currentReturnedNull(controller); // We need to call the super.next, instead of this.next, which is done in GenericController, // because if we call this.next(), it will return the TransactionSampler, and we do not want that. // We need to get the next real sampler or controller returnValue = super.next(); } else { returnValue = sampler; } return returnValue; } ////////////////////// Transaction Controller - additional sample ////////////////////////////// private Sampler next2() { if (isFirst()) // must be the start of the subtree { calls = 0; noFailingSamples = 0; res = new SampleResult(); res.setSampleLabel(getName()); // Assume success res.setSuccessful(true); res.sampleStart(); prevEndTime = res.getStartTime();//??? pauseTime = 0; } boolean isLast = current==super.subControllersAndSamplers.size(); Sampler returnValue = super.next(); if (returnValue == null && isLast) // Must be the end of the controller { if (res != null) { res.setIdleTime(pauseTime+res.getIdleTime()); res.sampleEnd(); res.setResponseMessage("Number of samples in transaction : " + calls + ", number of failing samples : " + noFailingSamples); if(res.isSuccessful()) { res.setResponseCodeOK(); } notifyListeners(); } } else { // We have sampled one of our children calls++; } return returnValue; } /** * @see org.apache.jmeter.control.GenericController#triggerEndOfLoop() */ @Override public void triggerEndOfLoop() { if(!isParent()) { if (res != null) { res.setIdleTime(pauseTime+res.getIdleTime()); res.sampleEnd(); res.setSuccessful(TRUE.equals(JMeterContextService.getContext().getVariables().get(JMeterThread.LAST_SAMPLE_OK))); res.setResponseMessage("Number of samples in transaction : " + calls + ", number of failing samples : " + noFailingSamples); notifyListeners(); } } else { transactionSampler.setTransactionDone(); // This transaction is done transactionSampler = null; } super.triggerEndOfLoop(); } /** * Create additional SampleEvent in NON Parent Mode */ protected void notifyListeners() { // TODO could these be done earlier (or just once?) JMeterContext threadContext = getThreadContext(); JMeterVariables threadVars = threadContext.getVariables(); SamplePackage pack = (SamplePackage) threadVars.getObject(JMeterThread.PACKAGE_OBJECT); if (pack == null) { // If child of TransactionController is a ThroughputController and TPC does // not sample its children, then we will have this // TODO Should this be at warn level ? log.warn("Could not fetch SamplePackage"); } else { SampleEvent event = new SampleEvent(res, threadContext.getThreadGroup().getName(),threadVars, true); // We must set res to null now, before sending the event for the transaction, // so that we can ignore that event in our sampleOccured method res = null; // bug 50032 if (!getThreadContext().isReinitializingSubControllers()) { lnf.notifyListeners(event, pack.getSampleListeners()); } } } public void sampleOccurred(SampleEvent se) { if (!isParent()) { // Check if we are still sampling our children if(res != null && !se.isTransactionSampleEvent()) { SampleResult sampleResult = se.getResult(); res.setThreadName(sampleResult.getThreadName()); res.setBytes(res.getBytes() + sampleResult.getBytes()); if (!isIncludeTimers()) {// Accumulate waiting time for later pauseTime += sampleResult.getEndTime() - sampleResult.getTime() - prevEndTime; prevEndTime = sampleResult.getEndTime(); } if(!sampleResult.isSuccessful()) { res.setSuccessful(false); noFailingSamples++; } res.setAllThreads(sampleResult.getAllThreads()); res.setGroupThreads(sampleResult.getGroupThreads()); res.setLatency(res.getLatency() + sampleResult.getLatency()); } } } public void sampleStarted(SampleEvent e) { } public void sampleStopped(SampleEvent e) { } /** * Whether to include timers and pre/post processor time in overall sample. * @param includeTimers */ public void setIncludeTimers(boolean includeTimers) { setProperty(INCLUDE_TIMERS, includeTimers, true); // default true for compatibility } /** * Whether to include timer and pre/post processor time in overall sample. * * @return boolean (defaults to true for backwards compatibility) */ public boolean isIncludeTimers() { return getPropertyAsBoolean(INCLUDE_TIMERS, true); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/ReplaceableController.java0000644000175000017500000000300612032647217027226 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jorphan.collections.HashTree; /** * This interface represents a controller that gets replaced during the * compilation phase of test execution in an arbitrary way. * */ public interface ReplaceableController { /** * Used to replace the test execution tree (usually by adding the * subelements of the TestElement that is replacing the * ReplaceableController. * * @see org.apache.jorphan.collections.HashTree */ HashTree getReplacementSubTree(); /** * Compute the replacement tree. * * @param context */ void resolveReplacementSubTree(JMeterTreeNode context); } apache-jmeter-2.8/src/core/org/apache/jmeter/control/NextIsNullException.java0000644000175000017500000000257512032647217026721 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on Apr 30, 2003 */ package org.apache.jmeter.control; /** * Used by the Generic and Interleave controllers to signal the end of their samples */ public class NextIsNullException extends Exception { private static final long serialVersionUID = 240L; public NextIsNullException() { super(); } public NextIsNullException(String message, Throwable cause) { super(message, cause); } public NextIsNullException(String message) { super(message); } public NextIsNullException(Throwable cause) { super(cause); } } apache-jmeter-2.8/src/core/org/apache/jmeter/control/RunTime.java0000644000175000017500000000660012032647217024351 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.property.LongProperty; import org.apache.jmeter.testelement.property.StringProperty; public class RunTime extends GenericController implements Serializable { private static final long serialVersionUID = 240L; private static final String SECONDS = "RunTime.seconds"; //$NON-NLS-1$ private long startTime = 0; private int loopCount = 0; // for getIterCount public RunTime() { } public void setRuntime(long seconds) { setProperty(new LongProperty(SECONDS, seconds)); } public void setRuntime(String seconds) { setProperty(new StringProperty(SECONDS, seconds)); } public long getRuntime() { try { return Long.parseLong(getPropertyAsString(SECONDS)); } catch (NumberFormatException e) { return 0L; } } public String getRuntimeString() { return getPropertyAsString(SECONDS); } /** * {@inheritDoc} */ @Override public boolean isDone() { if (getRuntime() > 0 && getSubControllers().size() > 0) { return super.isDone(); } return true; // Runtime is zero - no point staying around } private boolean endOfLoop() { return System.currentTimeMillis() - startTime >= 1000 * getRuntime(); } @Override public Sampler next() { if (startTime == 0) { startTime = System.currentTimeMillis(); } if (endOfLoop()) { reInitialize();// ?? resetLoopCount(); return null; } return super.next(); } /** * {@inheritDoc} */ @Override protected Sampler nextIsNull() throws NextIsNullException { reInitialize(); if (endOfLoop()) { resetLoopCount(); return null; } return next(); } protected void incrementLoopCount() { loopCount++; } protected void resetLoopCount() { loopCount = 0; startTime = 0; } /* * This is needed for OnceOnly to work like other Loop Controllers */ @Override protected int getIterCount() { return loopCount + 1; } @Override protected void reInitialize() { setFirst(true); resetCurrent(); incrementLoopCount(); recoverRunningVersion(); } /** * {@inheritDoc} */ @Override public void triggerEndOfLoop() { super.triggerEndOfLoop(); resetLoopCount(); } }apache-jmeter-2.8/src/core/org/apache/jmeter/control/TestFragmentController.java0000644000175000017500000000176712032647217027446 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; public class TestFragmentController extends GenericController implements Serializable { private static final long serialVersionUID = 1L; } apache-jmeter-2.8/src/core/org/apache/jmeter/control/Controller.java0000644000175000017500000000427112032647217025113 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; /** * This interface is used by JMeterThread in the following manner: * * while (running && (sampler = controller.next()) != null) */ public interface Controller extends TestElement { /** * Delivers the next Sampler or null * * @return org.apache.jmeter.samplers.Sampler or null */ Sampler next(); /** * Indicates whether the Controller is done delivering Samplers for the rest * of the test. * * When the top-level controller returns true to JMeterThread, * the thread is complete. * * @return boolean */ boolean isDone(); /** * Controllers have to notify listeners of when they begin an iteration * through their sub-elements. */ void addIterationListener(LoopIterationListener listener); /** * Called to initialize a controller at the beginning of a test iteration. */ void initialize(); /** * Unregister IterationListener * @param iterationListener {@link LoopIterationListener} */ void removeIterationListener(LoopIterationListener iterationListener); /** * Trigger end of loop condition on controller (used by Start Next Loop feature) */ void triggerEndOfLoop(); } apache-jmeter-2.8/src/core/org/apache/jmeter/control/WhileController.java0000644000175000017500000000766412032647217026115 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterThread; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; // @see TestWhileController for unit tests public class WhileController extends GenericController implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; private static final String CONDITION = "WhileController.condition"; // $NON-NLS-1$ public WhileController() { } /* * Evaluate the condition, which can be: * blank or LAST = was the last sampler OK? * otherwise, evaluate the condition to see if it is not "false" * If blank, only evaluate at the end of the loop * * Must only be called at start and end of loop * * @param loopEnd - are we at loop end? * @return true means OK to continue */ private boolean endOfLoop(boolean loopEnd) { String cnd = getCondition().trim(); log.debug("Condition string:" + cnd+"."); boolean res; // If blank, only check previous sample when at end of loop if ((loopEnd && cnd.length() == 0) || "LAST".equalsIgnoreCase(cnd)) {// $NON-NLS-1$ JMeterVariables threadVars = JMeterContextService.getContext().getVariables(); res = "false".equalsIgnoreCase(threadVars.get(JMeterThread.LAST_SAMPLE_OK));// $NON-NLS-1$ } else { // cnd may be null if next() called us res = "false".equalsIgnoreCase(cnd);// $NON-NLS-1$ } log.debug("Condition value: " + res); return res; } /** * Only called at End of Loop *

        * {@inheritDoc} */ @Override protected Sampler nextIsNull() throws NextIsNullException { reInitialize(); if (endOfLoop(true)){ return null; } return next(); } /** * {@inheritDoc} */ @Override public void triggerEndOfLoop() { super.triggerEndOfLoop(); endOfLoop(true); } /** * This skips controller entirely if the condition is false on first entry. *

        * {@inheritDoc} */ @Override public Sampler next(){ if (isFirst()){ if (endOfLoop(false)){ return null; } } return super.next(); } /** * @param string * the condition to save */ public void setCondition(String string) { log.debug("setCondition(" + string + ")"); setProperty(new StringProperty(CONDITION, string)); } /** * @return the condition */ public String getCondition() { String cnd; JMeterProperty prop=getProperty(CONDITION); prop.recoverRunningVersion(this); cnd = prop.getStringValue(); return cnd; } }apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/0000755000175000017500000000000012165514773022276 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/samplers/HoldSampleSender.java0000644000175000017500000000553012032647220026320 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.log.Logger; import org.apache.jorphan.logging.LoggingManager; import java.util.List; import java.util.ArrayList; import java.io.ObjectStreamException; import java.io.Serializable; /** * Lars-Erik Helander provided the idea (and original implementation) for the * caching functionality (sampleStore). */ public class HoldSampleSender extends AbstractSampleSender implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private final List sampleStore = new ArrayList(); private final RemoteSampleListener listener; /** * @deprecated only for use by test code */ @Deprecated public HoldSampleSender(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ listener = null; } HoldSampleSender(RemoteSampleListener listener) { this.listener = listener; log.info("Using HoldSampleSender for this test run"); // client } public void testEnded(String host) { log.info("Test Ended on " + host); try { for (SampleEvent se : sampleStore) { listener.sampleOccurred(se); } listener.testEnded(host); sampleStore.clear(); } catch (Throwable ex) { log.error("testEnded(host)", ex); if (ex instanceof Error){ throw (Error) ex; } if (ex instanceof RuntimeException){ throw (RuntimeException) ex; } } } public void sampleOccurred(SampleEvent e) { synchronized (sampleStore) { sampleStore.add(e); } } /** * Processed by the RMI server code; acts as testStarted(). * @throws ObjectStreamException */ private Object readResolve() throws ObjectStreamException{ log.info("Using HoldSampleSender for this test run"); // server return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/SampleResult.java0000644000175000017500000011167712032647220025561 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; // For unit tests, @see TestSampleResult /** * This is a nice packaging for the various information returned from taking a * sample of an entry. * */ public class SampleResult implements Serializable { private static final long serialVersionUID = 241L; // Needs to be accessible from Test code static final Logger log = LoggingManager.getLoggerForClass(); /** * The default encoding to be used if not overridden. * The value is ISO-8859-1. */ public static final String DEFAULT_HTTP_ENCODING = "ISO-8859-1"; // $NON-NLS-1$ // Bug 33196 - encoding ISO-8859-1 is only suitable for Western countries // However the suggested System.getProperty("file.encoding") is Cp1252 on // Windows // So use a new property with the original value as default // needs to be accessible from test code /** * The default encoding to be used to decode the responseData byte array. * The value is defined by the property "sampleresult.default.encoding" * with a default of DEFAULT_HTTP_ENCODING if that is not defined. */ static final String DEFAULT_ENCODING = JMeterUtils.getPropDefault("sampleresult.default.encoding", // $NON-NLS-1$ DEFAULT_HTTP_ENCODING); /* The default used by {@link #setResponseData(String, String)} */ private static final String DEFAULT_CHARSET = Charset.defaultCharset().name(); /** * Data type value indicating that the response data is text. * * @see #getDataType * @see #setDataType(java.lang.String) */ public static final String TEXT = "text"; // $NON-NLS-1$ /** * Data type value indicating that the response data is binary. * * @see #getDataType * @see #setDataType(java.lang.String) */ public static final String BINARY = "bin"; // $NON-NLS-1$ /* empty arrays which can be returned instead of null */ private static final byte[] EMPTY_BA = new byte[0]; private static final SampleResult[] EMPTY_SR = new SampleResult[0]; private static final AssertionResult[] EMPTY_AR = new AssertionResult[0]; private static final boolean GETBYTES_BODY_REALSIZE = JMeterUtils.getPropDefault("sampleresult.getbytes.body_real_size", true); // $NON-NLS-1$ private static final boolean GETBYTES_HEADERS_SIZE = JMeterUtils.getPropDefault("sampleresult.getbytes.headers_size", true); // $NON-NLS-1$ private static final boolean GETBYTES_NETWORK_SIZE = GETBYTES_HEADERS_SIZE && GETBYTES_BODY_REALSIZE ? true : false; private SampleSaveConfiguration saveConfig; private SampleResult parent = null; /** * @param propertiesToSave * The propertiesToSave to set. */ public void setSaveConfig(SampleSaveConfiguration propertiesToSave) { this.saveConfig = propertiesToSave; } public SampleSaveConfiguration getSaveConfig() { return saveConfig; } private byte[] responseData = EMPTY_BA; private String responseCode = "";// Never return null private String label = "";// Never return null /** Filename used by ResultSaver */ private String resultFileName = ""; /** The data used by the sampler */ private String samplerData; private String threadName = ""; // Never return null private String responseMessage = ""; private String responseHeaders = ""; // Never return null private String contentType = ""; // e.g. text/html; charset=utf-8 private String requestHeaders = ""; // TODO timeStamp == 0 means either not yet initialised or no stamp available (e.g. when loading a results file) /** the time stamp - can be start or end */ private long timeStamp = 0; private long startTime = 0; private long endTime = 0; private long idleTime = 0;// Allow for non-sample time /** Start of pause (if any) */ private long pauseTime = 0; private List assertionResults; private List subResults; private String dataType=""; // Don't return null if not set private boolean success; //@GuardedBy("this"") /** files that this sample has been saved in */ private final Set files = new HashSet(); private String dataEncoding;// (is this really the character set?) e.g. // ISO-8895-1, UTF-8 /** elapsed time */ private long time = 0; /** time to first response */ private long latency = 0; /** Should thread terminate? */ private boolean stopThread = false; /** Should test terminate? */ private boolean stopTest = false; /** Should test terminate abruptly? */ private boolean stopTestNow = false; /** Is the sampler acting as a monitor? */ private boolean isMonitor = false; private int sampleCount = 1; private int bytes = 0; // Allows override of sample size in case sampler does not want to store all the data private int headersSize = 0; private int bodySize = 0; /** Currently active threads in this thread group */ private volatile int groupThreads = 0; /** Currently active threads in all thread groups */ private volatile int allThreads = 0; // TODO do contentType and/or dataEncoding belong in HTTPSampleResult instead? private static final boolean startTimeStamp = JMeterUtils.getPropDefault("sampleresult.timestamp.start", false); // $NON-NLS-1$ // Allow read-only access from test code static final boolean USENANOTIME = JMeterUtils.getPropDefault("sampleresult.useNanoTime", true); // $NON-NLS-1$ // How long between checks of nanotime; default 5000ms; set to <=0 to disable the thread private static final long NANOTHREAD_SLEEP = JMeterUtils.getPropDefault("sampleresult.nanoThreadSleep", 5000); // $NON-NLS-1$; static { if (startTimeStamp) { log.info("Note: Sample TimeStamps are START times"); } else { log.info("Note: Sample TimeStamps are END times"); } log.info("sampleresult.default.encoding is set to " + DEFAULT_ENCODING); log.info("sampleresult.useNanoTime="+USENANOTIME); log.info("sampleresult.nanoThreadSleep="+NANOTHREAD_SLEEP); if (USENANOTIME && NANOTHREAD_SLEEP > 0) { // Make sure we start with a reasonable value NanoOffset.nanoOffset = System.currentTimeMillis() - SampleResult.sampleNsClockInMs(); NanoOffset nanoOffset = new NanoOffset(); nanoOffset.setDaemon(true); nanoOffset.setName("NanoOffset"); nanoOffset.start(); } } private final long nanoTimeOffset; // Allow testcode access to the settings final boolean useNanoTime; final long nanoThreadSleep; private long initOffset(){ if (useNanoTime){ return nanoThreadSleep > 0 ? NanoOffset.getNanoOffset() : System.currentTimeMillis() - sampleNsClockInMs(); } else { return Long.MIN_VALUE; } } public SampleResult() { this(USENANOTIME, NANOTHREAD_SLEEP); } // Allow test code to change the default useNanoTime setting SampleResult(boolean nanoTime) { this(nanoTime, NANOTHREAD_SLEEP); } // Allow test code to change the default useNanoTime and nanoThreadSleep settings SampleResult(boolean nanoTime, long nanoThreadSleep) { this.time = 0; this.useNanoTime = nanoTime; this.nanoThreadSleep = nanoThreadSleep; this.nanoTimeOffset = initOffset(); } /** * Copy constructor. * * @param res existing sample result */ public SampleResult(SampleResult res) { this(); allThreads = res.allThreads;//OK assertionResults = res.assertionResults;// TODO ?? bytes = res.bytes; headersSize = res.headersSize; bodySize = res.bodySize; contentType = res.contentType;//OK dataEncoding = res.dataEncoding;//OK dataType = res.dataType;//OK endTime = res.endTime;//OK // files is created automatically, and applies per instance groupThreads = res.groupThreads;//OK idleTime = res.idleTime; isMonitor = res.isMonitor; label = res.label;//OK latency = res.latency; location = res.location;//OK parent = res.parent; // TODO ?? pauseTime = res.pauseTime; requestHeaders = res.requestHeaders;//OK responseCode = res.responseCode;//OK responseData = res.responseData;//OK responseHeaders = res.responseHeaders;//OK responseMessage = res.responseMessage;//OK // Don't copy this; it is per instance resultFileName = res.resultFileName; sampleCount = res.sampleCount; samplerData = res.samplerData; saveConfig = res.saveConfig; startTime = res.startTime;//OK stopTest = res.stopTest; stopTestNow = res.stopTestNow; stopThread = res.stopThread; subResults = res.subResults; // TODO ?? success = res.success;//OK threadName = res.threadName;//OK time = res.time; timeStamp = res.timeStamp; } public boolean isStampedAtStart() { return startTimeStamp; } /** * Create a sample with a specific elapsed time but don't allow the times to * be changed later * * (only used by HTTPSampleResult) * * @param elapsed * time * @param atend * create the sample finishing now, else starting now */ protected SampleResult(long elapsed, boolean atend) { this(); long now = currentTimeInMillis(); if (atend) { setTimes(now - elapsed, now); } else { setTimes(now, now + elapsed); } } /** * Create a sample with specific start and end times for test purposes, but * don't allow the times to be changed later * * (used by StatVisualizerModel.Test) * * @param start * start time * @param end * end time */ public static SampleResult createTestSample(long start, long end) { SampleResult res = new SampleResult(); res.setStartTime(start); res.setEndTime(end); return res; } /** * Create a sample with a specific elapsed time for test purposes, but don't * allow the times to be changed later * * @param elapsed - * desired elapsed time */ public static SampleResult createTestSample(long elapsed) { long now = System.currentTimeMillis(); return createTestSample(now, now + elapsed); } /** * Allow users to create a sample with specific timestamp and elapsed times * for cloning purposes, but don't allow the times to be changed later * * Currently used by OldSaveService, CSVSaveService and StatisticalSampleResult * * @param stamp - * this may be a start time or an end time * @param elapsed */ public SampleResult(long stamp, long elapsed) { this(); stampAndTime(stamp, elapsed); } private static long sampleNsClockInMs() { return System.nanoTime() / 1000000; } // Helper method to get 1 ms resolution timing. public long currentTimeInMillis() { if (useNanoTime){ if (nanoTimeOffset == Long.MIN_VALUE){ throw new RuntimeException("Invalid call; nanoTimeOffset as not been set"); } return sampleNsClockInMs() + nanoTimeOffset; } return System.currentTimeMillis(); } // Helper method to maintain timestamp relationships private void stampAndTime(long stamp, long elapsed) { if (startTimeStamp) { startTime = stamp; endTime = stamp + elapsed; } else { startTime = stamp - elapsed; endTime = stamp; } timeStamp = stamp; time = elapsed; } /* * For use by SaveService only. * * @param stamp - * this may be a start time or an end time * @param elapsed */ public void setStampAndTime(long stamp, long elapsed) { if (startTime != 0 || endTime != 0){ throw new RuntimeException("Calling setStampAndTime() after start/end times have been set"); } stampAndTime(stamp, elapsed); } /** * Set the "marked" flag to show that the result has been written to the file. * * @param filename * @return true if the result was previously marked */ public synchronized boolean markFile(String filename) { return !files.add(filename); } public String getResponseCode() { return responseCode; } private static final String OK_CODE = Integer.toString(HttpURLConnection.HTTP_OK); private static final String OK_MSG = "OK"; // $NON-NLS-1$ /** * Set response code to OK, i.e. "200" * */ public void setResponseCodeOK(){ responseCode=OK_CODE; } public void setResponseCode(String code) { responseCode = code; } public boolean isResponseCodeOK(){ return responseCode.equals(OK_CODE); } public String getResponseMessage() { return responseMessage; } public void setResponseMessage(String msg) { responseMessage = msg; } public void setResponseMessageOK() { responseMessage = OK_MSG; } /** * Set result statuses OK - shorthand method to set: *

          *
        • ResponseCode
        • *
        • ResponseMessage
        • *
        • Successful status
        • *
        */ public void setResponseOK(){ setResponseCodeOK(); setResponseMessageOK(); setSuccessful(true); } public String getThreadName() { return threadName; } public void setThreadName(String threadName) { this.threadName = threadName; } /** * Get the sample timestamp, which may be either the start time or the end time. * * @see #getStartTime() * @see #getEndTime() * * @return timeStamp in milliseconds */ public long getTimeStamp() { return timeStamp; } public String getSampleLabel() { return label; } /** * Get the sample label for use in summary reports etc. * * @param includeGroup whether to include the thread group name * @return the label */ public String getSampleLabel(boolean includeGroup) { if (includeGroup) { StringBuilder sb = new StringBuilder(threadName.substring(0,threadName.lastIndexOf(' '))); //$NON-NLS-1$ return sb.append(":").append(label).toString(); //$NON-NLS-1$ } return label; } public void setSampleLabel(String label) { this.label = label; } public void addAssertionResult(AssertionResult assertResult) { if (assertionResults == null) { assertionResults = new ArrayList(); } assertionResults.add(assertResult); } /** * Gets the assertion results associated with this sample. * * @return an array containing the assertion results for this sample. * Returns empty array if there are no assertion results. */ public AssertionResult[] getAssertionResults() { if (assertionResults == null) { return EMPTY_AR; } return assertionResults.toArray(new AssertionResult[assertionResults.size()]); } /** * Add a subresult and adjust the parent byte count and end-time. * * @param subResult */ public void addSubResult(SampleResult subResult) { String tn = getThreadName(); if (tn.length()==0) { tn=Thread.currentThread().getName();//TODO do this more efficiently this.setThreadName(tn); } subResult.setThreadName(tn); // TODO is this really necessary? // Extend the time to the end of the added sample setEndTime(Math.max(getEndTime(), subResult.getEndTime() + nanoTimeOffset - subResult.nanoTimeOffset)); // Bug 51855 // Include the byte count for the added sample setBytes(getBytes() + subResult.getBytes()); setHeadersSize(getHeadersSize() + subResult.getHeadersSize()); setBodySize(getBodySize() + subResult.getBodySize()); addRawSubResult(subResult); } /** * Add a subresult to the collection without updating any parent fields. * * @param subResult */ public void addRawSubResult(SampleResult subResult){ if (subResults == null) { subResults = new ArrayList(); } subResults.add(subResult); subResult.setParent(this); } /** * Add a subresult read from a results file. * * As for addSubResult(), except that the fields don't need to be accumulated * * @param subResult */ public void storeSubResult(SampleResult subResult) { if (subResults == null) { subResults = new ArrayList(); } subResults.add(subResult); subResult.setParent(this); } /** * Gets the subresults associated with this sample. * * @return an array containing the subresults for this sample. Returns an * empty array if there are no subresults. */ public SampleResult[] getSubResults() { if (subResults == null) { return EMPTY_SR; } return subResults.toArray(new SampleResult[subResults.size()]); } /** * Sets the responseData attribute of the SampleResult object. * * If the parameter is null, then the responseData is set to an empty byte array. * This ensures that getResponseData() can never be null. * * @param response * the new responseData value */ public void setResponseData(byte[] response) { responseData = response == null ? EMPTY_BA : response; } /** * Sets the responseData attribute of the SampleResult object. * Should only be called after setting the dataEncoding (if necessary) * * @param response * the new responseData value (String) * * @deprecated - only intended for use from BeanShell code */ @Deprecated public void setResponseData(String response) { try { responseData = response.getBytes(getDataEncodingWithDefault()); } catch (UnsupportedEncodingException e) { log.warn("Could not convert string, using default encoding. "+e.getLocalizedMessage()); responseData = response.getBytes(); // N.B. default charset is used deliberately here } } /** * Sets the encoding and responseData attributes of the SampleResult object. * * @param response the new responseData value (String) * @param encoding the encoding to set and then use (if null, use platform default) * */ public void setResponseData(final String response, final String encoding) { String encodeUsing = encoding != null? encoding : DEFAULT_CHARSET; try { responseData = response.getBytes(encodeUsing); setDataEncoding(encodeUsing); } catch (UnsupportedEncodingException e) { log.warn("Could not convert string using '"+encodeUsing+ "', using default encoding: "+DEFAULT_CHARSET,e); responseData = response.getBytes(); // N.B. default charset is used deliberately here setDataEncoding(DEFAULT_CHARSET); } } /** * Gets the responseData attribute of the SampleResult object. *

        * Note that some samplers may not store all the data, in which case * getResponseData().length will be incorrect. * * Instead, always use {@link #getBytes()} to obtain the sample result byte count. *

        * @return the responseData value (cannot be null) */ public byte[] getResponseData() { return responseData; } /** * Gets the responseData of the SampleResult object as a String * * @return the responseData value as a String, converted according to the encoding */ public String getResponseDataAsString() { try { return new String(responseData,getDataEncodingWithDefault()); } catch (UnsupportedEncodingException e) { log.warn("Using platform default as "+getDataEncodingWithDefault()+" caused "+e); return new String(responseData); // N.B. default charset is used deliberately here } } public void setSamplerData(String s) { samplerData = s; } public String getSamplerData() { return samplerData; } /** * Get the time it took this sample to occur. * * @return elapsed time in milliseonds * */ public long getTime() { return time; } public boolean isSuccessful() { return success; } public void setDataType(String dataType) { this.dataType = dataType; } public String getDataType() { return dataType; } /** * Extract and save the DataEncoding and DataType from the parameter provided. * Does not save the full content Type. * @see #setContentType(String) which should be used to save the full content-type string * * @param ct - content type (may be null) */ public void setEncodingAndType(String ct){ if (ct != null) { // Extract charset and store as DataEncoding // N.B. The meta tag: // // is now processed by HTTPSampleResult#getDataEncodingWithDefault final String CS_PFX = "charset="; // $NON-NLS-1$ int cset = ct.toLowerCase(java.util.Locale.ENGLISH).indexOf(CS_PFX); if (cset >= 0) { String charSet = ct.substring(cset + CS_PFX.length()); // handle: ContentType: text/plain; charset=ISO-8859-1; format=flowed int semiColon = charSet.indexOf(';'); if (semiColon >= 0) { charSet=charSet.substring(0, semiColon); } // Check for quoted string if (charSet.startsWith("\"")){ // $NON-NLS-1$ setDataEncoding(charSet.substring(1, charSet.length()-1)); // remove quotes } else { setDataEncoding(charSet); } } if (isBinaryType(ct)) { setDataType(BINARY); } else { setDataType(TEXT); } } } // List of types that are known to be binary private static final String[] BINARY_TYPES = { "image/", //$NON-NLS-1$ "audio/", //$NON-NLS-1$ "video/", //$NON-NLS-1$ }; /* * Determine if content-type is known to be binary, i.e. not displayable as text. * * @param ct content type * @return true if content-type is of type binary. */ private static boolean isBinaryType(String ct){ for (int i = 0; i < BINARY_TYPES.length; i++){ if (ct.startsWith(BINARY_TYPES[i])){ return true; } } return false; } /** * Sets the successful attribute of the SampleResult object. * * @param success * the new successful value */ public void setSuccessful(boolean success) { this.success = success; } /** * Returns the display name. * * @return display name of this sample result */ @Override public String toString() { return getSampleLabel(); } /** * Returns the dataEncoding or the default if no dataEncoding was provided. * * @return the value of the dataEncoding or DEFAULT_ENCODING */ public String getDataEncodingWithDefault() { return getDataEncodingWithDefault(DEFAULT_ENCODING); } /** * Returns the dataEncoding or the default if no dataEncoding was provided. * * @param defaultEncoding the default to be applied * @return the value of the dataEncoding or the provided default */ protected String getDataEncodingWithDefault(String defaultEncoding) { if (dataEncoding != null && dataEncoding.length() > 0) { return dataEncoding; } return defaultEncoding; } /** * Returns the dataEncoding. May be null or the empty String. * @return the value of the dataEncoding */ public String getDataEncodingNoDefault() { return dataEncoding; } /** * Sets the dataEncoding. * * @param dataEncoding * the dataEncoding to set, e.g. ISO-8895-1, UTF-8 */ public void setDataEncoding(String dataEncoding) { this.dataEncoding = dataEncoding; } /** * @return whether to stop the test */ public boolean isStopTest() { return stopTest; } /** * @return whether to stop the test now */ public boolean isStopTestNow() { return stopTestNow; } /** * @return whether to stop this thread */ public boolean isStopThread() { return stopThread; } public void setStopTest(boolean b) { stopTest = b; } public void setStopTestNow(boolean b) { stopTestNow = b; } public void setStopThread(boolean b) { stopThread = b; } /** * @return the request headers */ public String getRequestHeaders() { return requestHeaders; } /** * @return the response headers */ public String getResponseHeaders() { return responseHeaders; } /** * @param string - * request headers */ public void setRequestHeaders(String string) { requestHeaders = string; } /** * @param string - * response headers */ public void setResponseHeaders(String string) { responseHeaders = string; } /** * @return the full content type - e.g. text/html [;charset=utf-8 ] */ public String getContentType() { return contentType; } /** * Get the media type from the Content Type * @return the media type - e.g. text/html (without charset, if any) */ public String getMediaType() { return JOrphanUtils.trim(contentType," ;").toLowerCase(java.util.Locale.ENGLISH); } /** * Stores the content-type string, e.g. "text/xml; charset=utf-8" * @see #setEncodingAndType(String) which can be used to extract the charset. * * @param string */ public void setContentType(String string) { contentType = string; } /** * @return idleTime */ public long getIdleTime() { return idleTime; } /** * @return the end time */ public long getEndTime() { return endTime; } /** * @return the start time */ public long getStartTime() { return startTime; } /* * Helper methods N.B. setStartTime must be called before setEndTime * * setStartTime is used by HTTPSampleResult to clone the parent sampler and * allow the original start time to be kept */ protected final void setStartTime(long start) { startTime = start; if (startTimeStamp) { timeStamp = startTime; } } public void setEndTime(long end) { endTime = end; if (!startTimeStamp) { timeStamp = endTime; } if (startTime == 0) { log.error("setEndTime must be called after setStartTime", new Throwable("Invalid call sequence")); // TODO should this throw an error? } else { time = endTime - startTime - idleTime; } } /** * Set idle time pause. * For use by SampleResultConverter/CSVSaveService. * @param idle long */ public void setIdleTime(long idle) { idleTime = idle; } private void setTimes(long start, long end) { setStartTime(start); setEndTime(end); } /** * Record the start time of a sample * */ public void sampleStart() { if (startTime == 0) { setStartTime(currentTimeInMillis()); } else { log.error("sampleStart called twice", new Throwable("Invalid call sequence")); } } /** * Record the end time of a sample and calculate the elapsed time * */ public void sampleEnd() { if (endTime == 0) { setEndTime(currentTimeInMillis()); } else { log.error("sampleEnd called twice", new Throwable("Invalid call sequence")); } } /** * Pause a sample * */ public void samplePause() { if (pauseTime != 0) { log.error("samplePause called twice", new Throwable("Invalid call sequence")); } pauseTime = currentTimeInMillis(); } /** * Resume a sample * */ public void sampleResume() { if (pauseTime == 0) { log.error("sampleResume without samplePause", new Throwable("Invalid call sequence")); } idleTime += currentTimeInMillis() - pauseTime; pauseTime = 0; } /** * When a Sampler is working as a monitor * * @param monitor */ public void setMonitor(boolean monitor) { isMonitor = monitor; } /** * If the sampler is a monitor, method will return true. * * @return true if the sampler is a monitor */ public boolean isMonitor() { return isMonitor; } /** * The statistical sample sender aggregates several samples to save on * transmission costs. * * @param count number of samples represented by this instance */ public void setSampleCount(int count) { sampleCount = count; } /** * return the sample count. by default, the value is 1. * * @return the sample count */ public int getSampleCount() { return sampleCount; } /** * Returns the count of errors. * * @return 0 - or 1 if the sample failed * * TODO do we need allow for nested samples? */ public int getErrorCount(){ return success ? 0 : 1; } public void setErrorCount(int i){// for reading from CSV files // ignored currently } /* * TODO: error counting needs to be sorted out. * * At present the Statistical Sampler tracks errors separately * It would make sense to move the error count here, but this would * mean lots of changes. * It's also tricky maintaining the count - it can't just be incremented/decremented * when the success flag is set as this may be done multiple times. * The work-round for now is to do the work in the StatisticalSampleResult, * which overrides this method. * Note that some JMS samplers also create samples with > 1 sample count * Also the Transaction Controller probably needs to be changed to do * proper sample and error accounting. * The purpose of this work-round is to allow at least minimal support for * errors in remote statistical batch mode. * */ /** * In the event the sampler does want to pass back the actual contents, we * still want to calculate the throughput. The bytes is the bytes of the * response data. * * @param length */ public void setBytes(int length) { bytes = length; } /** * return the bytes returned by the response. * * @return byte count */ public int getBytes() { if (GETBYTES_NETWORK_SIZE) { int tmpSum = this.getHeadersSize() + this.getBodySize(); return tmpSum == 0 ? bytes : tmpSum; } else if (GETBYTES_HEADERS_SIZE) { return this.getHeadersSize(); } else if (GETBYTES_BODY_REALSIZE) { return this.getBodySize(); } return bytes == 0 ? responseData.length : bytes; } /** * @return Returns the latency. */ public long getLatency() { return latency; } /** * Set the time to the first response * */ public void latencyEnd() { latency = currentTimeInMillis() - startTime - idleTime; } /** * This is only intended for use by SampleResultConverter! * * @param latency * The latency to set. */ public void setLatency(long latency) { this.latency = latency; } /** * This is only intended for use by SampleResultConverter! * * @param timeStamp * The timeStamp to set. */ public void setTimeStamp(long timeStamp) { this.timeStamp = timeStamp; } private URL location; public void setURL(URL location) { this.location = location; } public URL getURL() { return location; } /** * Get a String representation of the URL (if defined). * * @return ExternalForm of URL, or empty string if url is null */ public String getUrlAsString() { return location == null ? "" : location.toExternalForm(); } /** * @return Returns the parent. */ public SampleResult getParent() { return parent; } /** * @param parent * The parent to set. */ public void setParent(SampleResult parent) { this.parent = parent; } public String getResultFileName() { return resultFileName; } public void setResultFileName(String resultFileName) { this.resultFileName = resultFileName; } public int getGroupThreads() { return groupThreads; } public void setGroupThreads(int n) { this.groupThreads = n; } public int getAllThreads() { return allThreads; } public void setAllThreads(int n) { this.allThreads = n; } // Bug 47394 /** * Allow custom SampleSenders to drop unwanted assertionResults */ public void removeAssertionResults() { this.assertionResults = null; } /** * Allow custom SampleSenders to drop unwanted subResults */ public void removeSubResults() { this.subResults = null; } /** * Set the headers size in bytes * * @param size */ public void setHeadersSize(int size) { this.headersSize = size; } /** * Get the headers size in bytes * * @return the headers size */ public int getHeadersSize() { return headersSize; } /** * @return the body size in bytes */ public int getBodySize() { return bodySize == 0 ? responseData.length : bodySize; } /** * @param bodySize the body size to set */ public void setBodySize(int bodySize) { this.bodySize = bodySize; } private static class NanoOffset extends Thread { private static volatile long nanoOffset; static long getNanoOffset() { return nanoOffset; } @Override public void run() { // Wait longer than a clock pulse (generally 10-15ms) getOffset(30L); // Catch an early clock pulse to reduce slop. while(true) { getOffset(NANOTHREAD_SLEEP); // Can now afford to wait a bit longer between checks } } private void getOffset(long wait) { try { Thread.sleep(wait); long clock = System.currentTimeMillis(); long nano = SampleResult.sampleNsClockInMs(); nanoOffset = clock - nano; } catch (InterruptedException ignore) { // ignored } } } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/BatchSampleSender.java0000644000175000017500000001550712032647220026460 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.jmeter.util.JMeterUtils; import org.apache.log.Logger; import org.apache.jorphan.logging.LoggingManager; import java.util.List; import java.util.ArrayList; import java.rmi.RemoteException; import java.io.ObjectStreamException; import java.io.Serializable; /** * Implements batch reporting for remote testing. * */ public class BatchSampleSender extends AbstractSampleSender implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final int DEFAULT_NUM_SAMPLE_THRESHOLD = 100; private static final long DEFAULT_TIME_THRESHOLD = 60000L; // Static fields are resolved on the server private static final int NUM_SAMPLES_THRESHOLD = JMeterUtils.getPropDefault("num_sample_threshold", DEFAULT_NUM_SAMPLE_THRESHOLD); // $NON-NLS-1$ private static final long TIME_THRESHOLD_MS = JMeterUtils.getPropDefault("time_threshold", DEFAULT_TIME_THRESHOLD); // $NON-NLS-1$ // instance fields are copied from the client instance private final int clientConfiguredNumSamplesThreshold = JMeterUtils.getPropDefault("num_sample_threshold", DEFAULT_NUM_SAMPLE_THRESHOLD); // $NON-NLS-1$ private final long clientConfiguredTimeThresholdMs = JMeterUtils.getPropDefault("time_threshold", DEFAULT_TIME_THRESHOLD); // $NON-NLS-1$ private final RemoteSampleListener listener; private final List sampleStore = new ArrayList(); // Server-only work item private transient long batchSendTime = -1; // Configuration items, set up by readResolve private transient volatile int numSamplesThreshold; private transient volatile long timeThresholdMs; /** * @deprecated only for use by test code */ @Deprecated public BatchSampleSender(){ this(null); log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } /** * Constructor * * @param listener * that the List of sample events will be sent to. */ // protected added: Bug 50008 - allow BatchSampleSender to be subclassed protected BatchSampleSender(RemoteSampleListener listener) { this.listener = listener; if (isClientConfigured()) { log.info("Using batching (client settings) for this run." + " Thresholds: num=" + clientConfiguredNumSamplesThreshold + ", time=" + clientConfiguredTimeThresholdMs); } else { log.info("Using batching (server settings) for this run."); } } /** * @return the listener */ // added: Bug 50008 - allow BatchSampleSender to be subclassed protected RemoteSampleListener getListener() { return listener; } /** * @return the sampleStore */ // added: Bug 50008 - allow BatchSampleSender to be subclassed protected List getSampleStore() { return sampleStore; } /** * Checks if any sample events are still present in the sampleStore and * sends them to the listener. Informs the listener of the testended. * * @param host * the host that the test has ended on. */ public void testEnded(String host) { log.info("Test Ended on " + host); try { if (sampleStore.size() != 0) { listener.processBatch(sampleStore); sampleStore.clear(); } listener.testEnded(host); } catch (RemoteException err) { log.error("testEnded(host)", err); } } /** * Stores sample events untill either a time or sample threshold is * breached. Both thresholds are reset if one fires. If only one threshold * is set it becomes the only value checked against. When a threhold is * breached the list of sample events is sent to a listener where the event * are fired locally. * * @param e * a Sample Event */ public void sampleOccurred(SampleEvent e) { synchronized (sampleStore) { sampleStore.add(e); final int sampleCount = sampleStore.size(); boolean sendNow = false; if (numSamplesThreshold != -1) { if (sampleCount >= numSamplesThreshold) { sendNow = true; } } long now = 0; if (timeThresholdMs != -1) { now = System.currentTimeMillis(); // Checking for and creating initial timestamp to check against if (batchSendTime == -1) { this.batchSendTime = now + timeThresholdMs; } if (batchSendTime < now && sampleCount > 0) { sendNow = true; } } if (sendNow){ try { log.debug("Firing sample"); listener.processBatch(sampleStore); sampleStore.clear(); if (timeThresholdMs != -1) { this.batchSendTime = now + timeThresholdMs; } } catch (RemoteException err) { log.error("sampleOccurred", err); } } } // synchronized(sampleStore) } /** * Processed by the RMI server code; acts as testStarted(). * @throws ObjectStreamException */ private Object readResolve() throws ObjectStreamException{ if (isClientConfigured()) { numSamplesThreshold = clientConfiguredNumSamplesThreshold; timeThresholdMs = clientConfiguredTimeThresholdMs; } else { numSamplesThreshold = NUM_SAMPLES_THRESHOLD; timeThresholdMs = TIME_THRESHOLD_MS; } log.info("Using batching for this run." + " Thresholds: num=" + numSamplesThreshold + ", time=" + timeThresholdMs); return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/SampleSenderFactory.java0000644000175000017500000000774512032647220027053 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.lang.reflect.Constructor; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class SampleSenderFactory { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String MODE_STANDARD = "Standard"; // $NON-NLS-1$ private static final String MODE_HOLD = "Hold"; // $NON-NLS-1$ private static final String MODE_BATCH = "Batch"; // $NON-NLS-1$ private static final String MODE_STATISTICAL = "Statistical"; // $NON-NLS-1$ private static final String MODE_STRIPPED = "Stripped"; // $NON-NLS-1$ private static final String MODE_STRIPPED_BATCH = "StrippedBatch"; // $NON-NLS-1$ private static final String MODE_ASYNCH = "Asynch"; // $NON-NLS-1$ private static final String MODE_DISKSTORE = "DiskStore"; // $NON-NLS-1$ /** * Checks for the Jmeter property mode and returns the required class. * * @param listener * @return the appropriate class. Standard Jmeter functionality, * hold_samples until end of test or batch samples. */ static SampleSender getInstance(RemoteSampleListener listener) { // Support original property name final boolean holdSamples = JMeterUtils.getPropDefault("hold_samples", false); // $NON-NLS-1$ // Extended property name final String type = JMeterUtils.getPropDefault("mode", MODE_STANDARD); // $NON-NLS-1$ if (holdSamples || type.equalsIgnoreCase(MODE_HOLD)) { HoldSampleSender h = new HoldSampleSender(listener); return h; } else if (type.equalsIgnoreCase(MODE_BATCH)) { BatchSampleSender b = new BatchSampleSender(listener); return b; } else if (type.equalsIgnoreCase(MODE_STATISTICAL)) { StatisticalSampleSender s = new StatisticalSampleSender(listener); return s; } else if (type.equalsIgnoreCase(MODE_STANDARD)) { StandardSampleSender s = new StandardSampleSender(listener); return s; } else if(type.equalsIgnoreCase(MODE_STRIPPED_BATCH)) { return new DataStrippingSampleSender(new BatchSampleSender(listener)); } else if(type.equalsIgnoreCase(MODE_STRIPPED)){ return new DataStrippingSampleSender(listener); } else if(type.equalsIgnoreCase(MODE_ASYNCH)){ return new AsynchSampleSender(listener); } else if(type.equalsIgnoreCase(MODE_DISKSTORE)){ return new DiskStoreSampleSender(listener); } else { // should be a user provided class name SampleSender s = null; try { Class clazz = Class.forName(type); Constructor cons = clazz.getConstructor(new Class[] {RemoteSampleListener.class}); s = (SampleSender) cons.newInstance(new Object [] {listener}); } catch (Exception e) { // houston we have a problem !! log.error("Unable to create a sample sender from class "+type); throw new IllegalArgumentException(e.getMessage(), e); } return s; } } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/Interruptible.java0000644000175000017500000000222612032647220025756 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; /** * Samplers which are able to interrupt a potentially long-running operation should * implement this interface. * */ public interface Interruptible { /** * Interrupt the current operation if possible. * * @return true if there was an operation to interrupt. */ boolean interrupt(); } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/AsynchSampleSender.java0000644000175000017500000001322012032647220026652 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.ObjectStreamException; import java.io.Serializable; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.log.Logger; public class AsynchSampleSender extends AbstractSampleSender implements Serializable { private static final long serialVersionUID = 251L; private static final Logger log = LoggingManager.getLoggerForClass(); // Create unique object as marker for end of queue private transient static final SampleEvent FINAL_EVENT = new SampleEvent(); private static final int serverConfiguredCapacity = JMeterUtils.getPropDefault("asynch.batch.queue.size", 100); // $NON-NLS-1$ private final int clientConfiguredCapacity = JMeterUtils.getPropDefault("asynch.batch.queue.size", 100); // $NON-NLS-1$ // created by client private final RemoteSampleListener listener; private transient BlockingQueue queue; // created by server in readResolve method private transient long queueWaits; // how many times we had to wait to queue a sample private transient long queueWaitTime; // how long we had to wait (nanoSeconds) /** * Processed by the RMI server code. * @throws ObjectStreamException */ private Object readResolve() throws ObjectStreamException{ int capacity = getCapacity(); log.info("Using batch queue size (asynch.batch.queue.size): " + capacity); // server log file queue = new ArrayBlockingQueue(capacity); Worker worker = new Worker(queue, listener); worker.setDaemon(true); worker.start(); return this; } /** * @deprecated only for use by test code */ @Deprecated public AsynchSampleSender(){ this(null); log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } // Created by SampleSenderFactory protected AsynchSampleSender(RemoteSampleListener listener) { this.listener = listener; log.info("Using Asynch Remote Sampler for this test run, queue size "+getCapacity()); // client log file } /** * @return capacity */ private int getCapacity() { return isClientConfigured() ? clientConfiguredCapacity : serverConfiguredCapacity; } public void testEnded(String host) { log.debug("Test Ended on " + host); try { listener.testEnded(host); queue.put(FINAL_EVENT); } catch (Exception ex) { log.warn("testEnded(host)"+ex); } if (queueWaits > 0) { log.info("QueueWaits: "+queueWaits+"; QueueWaitTime: "+queueWaitTime+" (nanoseconds)"); } } public void sampleOccurred(SampleEvent e) { try { if (!queue.offer(e)){ // we failed to add the element first time queueWaits++; long t1 = System.nanoTime(); queue.put(e); long t2 = System.nanoTime(); queueWaitTime += t2-t1; } } catch (Exception err) { log.error("sampleOccurred; failed to queue the sample", err); } } private static class Worker extends Thread { private final BlockingQueue queue; private final RemoteSampleListener listener; private Worker(BlockingQueue q, RemoteSampleListener l){ queue = q; listener = l; } @Override public void run() { try { boolean eof = false; while (!eof) { List l = new ArrayList(); SampleEvent e = queue.take(); while (!(eof = (e == FINAL_EVENT)) && e != null) { // try to process as many as possible l.add(e); e = queue.poll(); // returns null if nothing on queue currently } int size = l.size(); if (size > 0) { try { listener.processBatch(l); } catch (RemoteException err) { if (err.getCause() instanceof java.net.ConnectException){ throw new JMeterError("Could not return sample",err); } log.error("Failed to return sample", err); } } } } catch (InterruptedException e) { } log.debug("Worker ended"); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/AbstractSampleSender.java0000644000175000017500000000333712032647220027200 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.jmeter.util.JMeterUtils; /** * Base class for SampleSender implementations */ public abstract class AbstractSampleSender implements SampleSender { // Note: this is an instance field (and is not transient), so is created by the JMeter client // and propagated to the server instance by RMI. // [a static field would be recreated on the server, and would pick up the server properties] private final boolean isClientConfigured = JMeterUtils.getPropDefault("sample_sender_client_configured", true); // $NON-NLS-1$ /** * @return boolean indicates how SampleSender configuration is done, true means use client properties and send to servers, false means use server configurations */ public boolean isClientConfigured() { return isClientConfigured; } /** * */ public AbstractSampleSender() { super(); } public void testEnded() { // Not used } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/RemoteSampleListenerWrapper.java0000644000175000017500000000423312032647220030572 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; import java.rmi.RemoteException; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * @version $Revision: 905027 $ */ public class RemoteSampleListenerWrapper extends AbstractTestElement implements SampleListener, Serializable, NoThreadClone { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private RemoteSampleListener listener; public RemoteSampleListenerWrapper(RemoteSampleListener l) { listener = l; } public RemoteSampleListenerWrapper() { } public void sampleOccurred(SampleEvent e) { try { listener.sampleOccurred(e); } catch (RemoteException err) { log.error("", err); // $NON-NLS-1$ } } public void sampleStarted(SampleEvent e) { try { listener.sampleStarted(e); } catch (RemoteException err) { log.error("", err); // $NON-NLS-1$ } } public void sampleStopped(SampleEvent e) { try { listener.sampleStopped(e); } catch (RemoteException err) { log.error("", err); // $NON-NLS-1$ } } }apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/Entry.java0000644000175000017500000000525712032647220024236 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.assertions.Assertion; import org.apache.jmeter.config.ConfigElement; // TODO - not used at present - could perhaps be removed public class Entry { private Map, ConfigElement> configSet; // Set clonedSet; private Class sampler; private List assertions; public Entry() { configSet = new HashMap, ConfigElement>(); // clonedSet = new HashSet(); assertions = new LinkedList(); } public void addAssertion(Assertion assertion) { assertions.add(assertion); } public List getAssertions() { return assertions; } public void setSamplerClass(Class samplerClass) { this.sampler = samplerClass; } public Class getSamplerClass() { return this.sampler; } public ConfigElement getConfigElement(Class configClass) { return configSet.get(configClass); } public void addConfigElement(ConfigElement config) { addConfigElement(config, config.getClass()); } /** * Add a config element as a specific class. Usually this is done to add a * subclass as one of it's parent classes. */ public void addConfigElement(ConfigElement config, Class asClass) { if (config != null) { ConfigElement current = configSet.get(asClass); if (current == null) { configSet.put(asClass, cloneIfNecessary(config)); } else { current.addConfigElement(config); } } } private ConfigElement cloneIfNecessary(ConfigElement config) { if (config.expectsModification()) { return config; } return (ConfigElement) config.clone(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/StandardSampleSender.java0000644000175000017500000000515612032647220027176 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.log.Logger; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import java.rmi.RemoteException; import java.io.ObjectStreamException; import java.io.Serializable; /** * Default behaviour for remote testing. */ public class StandardSampleSender extends AbstractSampleSender implements Serializable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private final RemoteSampleListener listener; /** * @deprecated only for use by test code */ @Deprecated public StandardSampleSender(){ this.listener = null; log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } StandardSampleSender(RemoteSampleListener listener) { this.listener = listener; log.info("Using StandardSampleSender for this test run"); } public void testEnded(String host) { log.info("Test Ended on " + host); try { listener.testEnded(host); } catch (RemoteException ex) { log.warn("testEnded(host)"+ex); } } public void sampleOccurred(SampleEvent e) { try { listener.sampleOccurred(e); } catch (RemoteException err) { if (err.getCause() instanceof java.net.ConnectException){ throw new JMeterError("Could not return sample",err); } log.error("sampleOccurred", err); } } /** * Processed by the RMI server code; acts as testStarted(). * @throws ObjectStreamException */ private Object readResolve() throws ObjectStreamException{ log.info("Using StandardSampleSender for this test run"); return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java0000644000175000017500000001062212032647220027752 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; /** * Aggregates sample results for use by the Statistical remote batch mode. * Samples are aggregated by the key defined by getKey(). * TODO: merge error count into parent class? */ public class StatisticalSampleResult extends SampleResult implements Serializable { private static final long serialVersionUID = 240L; private int errorCount; // Need to maintain our own elapsed timer to ensure more accurate aggregation private long elapsed; public StatisticalSampleResult(){// May be called by XStream } /** * Allow OldSaveService to generate a suitable result when sample/error counts have been saved. * * @deprecated Needs to be replaced when multiple sample results are sorted out * * @param stamp * @param elapsed */ @Deprecated public StatisticalSampleResult(long stamp, long elapsed) { super(stamp, elapsed); this.elapsed = elapsed; } /** * Create a statistical sample result from an ordinary sample result. * * @param res the sample result * @param keyOnThreadName true if key includes threadName, false if threadGroup */ public StatisticalSampleResult(SampleResult res, boolean keyOnThreadName) { // Copy data that is shared between samples (i.e. the key items): setSampleLabel(res.getSampleLabel()); if (keyOnThreadName) { setThreadName(res.getThreadName()); } setSuccessful(true); // Assume result is OK setSampleCount(0); // because we add the sample count in later elapsed = 0; } public void add(SampleResult res) { // Add Sample Counter setSampleCount(getSampleCount() + res.getSampleCount()); setBytes(getBytes() + res.getBytes()); // Add Error Counter if (!res.isSuccessful()) { errorCount++; this.setSuccessful(false); } // Set start/end times if (getStartTime()==0){ // Bug 40954 - ensure start time gets started! this.setStartTime(res.getStartTime()); } else { this.setStartTime(Math.min(getStartTime(), res.getStartTime())); } this.setEndTime(Math.max(getEndTime(), res.getEndTime())); setLatency(getLatency()+ res.getLatency()); elapsed += res.getTime(); } @Override public long getTime() { return elapsed; } @Override public long getTimeStamp() { return getEndTime(); } @Override public int getErrorCount() {// Overrides SampleResult return errorCount; } @Override public void setErrorCount(int e) {// for reading CSV files errorCount = e; } /** * Generates the key to be used for aggregating samples as follows:
        * sampleLabel "-" [threadName|threadGroup] *

        * N.B. the key should agree with the fixed items that are saved in the sample. * * @param event sample event whose key is to be calculated * @param keyOnThreadName true if key should use thread name, otherwise use thread group * @return the key to use for aggregating samples */ public static String getKey(SampleEvent event, boolean keyOnThreadName) { StringBuilder sb = new StringBuilder(80); sb.append(event.getResult().getSampleLabel()); if (keyOnThreadName){ sb.append('-').append(event.getResult().getThreadName()); } else { sb.append('-').append(event.getThreadGroup()); } return sb.toString(); } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/SampleSaveConfiguration.java0000644000175000017500000007305112032647220027722 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 7, 2004 */ package org.apache.jmeter.samplers; import java.io.Serializable; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Properties; import org.apache.commons.lang3.CharUtils; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.util.JMeterError; /* * N.B. to add a new field, remember the following * - static _xyz * - instance xyz=_xyz * - clone s.xyz = xyz (perhaps) * - setXyz(boolean) * - saveXyz() * - update SampleSaveConfigurationConverter to add new fields to marshall() and shouldSerialiseMember() * - update SampleResultConverter and/or HTTPSampleConverter * - update CSVSaveService: CSV_XXXX, makeResultFromDelimitedString, printableFieldNamesToString, static{} * - update messages.properties to add save_xyz entry * - update jmeter.properties to add new property * - update listeners.xml to add new property, CSV and XML names etc. * - take screenshot sample_result_config.png * - update listeners.xml and component_reference.xml with new dimensions (might not change) * */ /** * Holds details of which sample attributes to save. * * The pop-up dialogue for this is created by the class SavePropertyDialog, which assumes: * For each field XXX * - methods have the signature "boolean saveXXX()" * - a corresponding "void setXXX(boolean)" method * - messages.properties contains the key save_XXX * * */ public class SampleSaveConfiguration implements Cloneable, Serializable { private static final long serialVersionUID = 7L; // --------------------------------------------------------------------- // PROPERTY FILE CONSTANTS // --------------------------------------------------------------------- /** Indicates that the results file should be in XML format. * */ private static final String XML = "xml"; // $NON_NLS-1$ /** Indicates that the results file should be in CSV format. * */ //NOTUSED private static final String CSV = "csv"; // $NON_NLS-1$ /** Indicates that the results should be stored in a database. * */ //NOTUSED private static final String DATABASE = "db"; // $NON_NLS-1$ /** A properties file indicator for true. * */ private static final String TRUE = "true"; // $NON_NLS-1$ /** A properties file indicator for false. * */ private static final String FALSE = "false"; // $NON_NLS-1$ /** A properties file indicator for milliseconds. * */ private static final String MILLISECONDS = "ms"; // $NON_NLS-1$ /** A properties file indicator for none. * */ private static final String NONE = "none"; // $NON_NLS-1$ /** A properties file indicator for the first of a series. * */ private static final String FIRST = "first"; // $NON_NLS-1$ /** A properties file indicator for all of a series. * */ private static final String ALL = "all"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating which assertion results should be * saved. **************************************************************************/ private static final String ASSERTION_RESULTS_FAILURE_MESSAGE_PROP = "jmeter.save.saveservice.assertion_results_failure_message"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating which assertion results should be * saved. **************************************************************************/ private static final String ASSERTION_RESULTS_PROP = "jmeter.save.saveservice.assertion_results"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating which delimiter should be used when * saving in a delimited values format. **************************************************************************/ private static final String DEFAULT_DELIMITER_PROP = "jmeter.save.saveservice.default_delimiter"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating which format should be used when * saving the results, e.g., xml or csv. **************************************************************************/ private static final String OUTPUT_FORMAT_PROP = "jmeter.save.saveservice.output_format"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether field names should be printed * to a delimited file. **************************************************************************/ private static final String PRINT_FIELD_NAMES_PROP = "jmeter.save.saveservice.print_field_names"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the data type should be * saved. **************************************************************************/ private static final String SAVE_DATA_TYPE_PROP = "jmeter.save.saveservice.data_type"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the label should be saved. **************************************************************************/ private static final String SAVE_LABEL_PROP = "jmeter.save.saveservice.label"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the response code should be * saved. **************************************************************************/ private static final String SAVE_RESPONSE_CODE_PROP = "jmeter.save.saveservice.response_code"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the response data should be * saved. **************************************************************************/ private static final String SAVE_RESPONSE_DATA_PROP = "jmeter.save.saveservice.response_data"; // $NON_NLS-1$ private static final String SAVE_RESPONSE_DATA_ON_ERROR_PROP = "jmeter.save.saveservice.response_data.on_error"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the response message should * be saved. **************************************************************************/ private static final String SAVE_RESPONSE_MESSAGE_PROP = "jmeter.save.saveservice.response_message"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the success indicator should * be saved. **************************************************************************/ private static final String SAVE_SUCCESSFUL_PROP = "jmeter.save.saveservice.successful"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the thread name should be * saved. **************************************************************************/ private static final String SAVE_THREAD_NAME_PROP = "jmeter.save.saveservice.thread_name"; // $NON_NLS-1$ // Save bytes read private static final String SAVE_BYTES_PROP = "jmeter.save.saveservice.bytes"; // $NON_NLS-1$ // Save URL private static final String SAVE_URL_PROP = "jmeter.save.saveservice.url"; // $NON_NLS-1$ // Save fileName for ResultSaver private static final String SAVE_FILENAME_PROP = "jmeter.save.saveservice.filename"; // $NON_NLS-1$ // Save hostname for ResultSaver private static final String SAVE_HOSTNAME_PROP = "jmeter.save.saveservice.hostname"; // $NON_NLS-1$ /*************************************************************************** * The name of the property indicating whether the time should be saved. **************************************************************************/ private static final String SAVE_TIME_PROP = "jmeter.save.saveservice.time"; // $NON_NLS-1$ /*************************************************************************** * The name of the property giving the format of the time stamp **************************************************************************/ private static final String TIME_STAMP_FORMAT_PROP = "jmeter.save.saveservice.timestamp_format"; // $NON_NLS-1$ private static final String SUBRESULTS_PROP = "jmeter.save.saveservice.subresults"; // $NON_NLS-1$ private static final String ASSERTIONS_PROP = "jmeter.save.saveservice.assertions"; // $NON_NLS-1$ private static final String LATENCY_PROP = "jmeter.save.saveservice.latency"; // $NON_NLS-1$ private static final String SAMPLERDATA_PROP = "jmeter.save.saveservice.samplerData"; // $NON_NLS-1$ private static final String RESPONSEHEADERS_PROP = "jmeter.save.saveservice.responseHeaders"; // $NON_NLS-1$ private static final String REQUESTHEADERS_PROP = "jmeter.save.saveservice.requestHeaders"; // $NON_NLS-1$ private static final String ENCODING_PROP = "jmeter.save.saveservice.encoding"; // $NON_NLS-1$ // optional processing instruction for line 2; e.g. // private static final String XML_PI = "jmeter.save.saveservice.xml_pi"; // $NON_NLS-1$ private static final String SAVE_THREAD_COUNTS = "jmeter.save.saveservice.thread_counts"; // $NON_NLS-1$ private static final String SAVE_SAMPLE_COUNT = "jmeter.save.saveservice.sample_count"; // $NON_NLS-1$ private static final String SAVE_IDLE_TIME = "jmeter.save.saveservice.idle_time"; // $NON_NLS-1$ // N.B. Remember to update the equals and hashCode methods when adding new variables. // Initialise values from properties private boolean time = _time, latency = _latency, timestamp = _timestamp, success = _success, label = _label, code = _code, message = _message, threadName = _threadName, dataType = _dataType, encoding = _encoding, assertions = _assertions, subresults = _subresults, responseData = _responseData, samplerData = _samplerData, xml = _xml, fieldNames = _fieldNames, responseHeaders = _responseHeaders, requestHeaders = _requestHeaders, responseDataOnError = _responseDataOnError; private boolean saveAssertionResultsFailureMessage = _saveAssertionResultsFailureMessage; private boolean url = _url, bytes = _bytes , fileName = _fileName; private boolean hostname = _hostname; private boolean threadCounts = _threadCounts; private boolean sampleCount = _sampleCount; private boolean idleTime = _idleTime; // Does not appear to be used (yet) private int assertionsResultsToSave = _assertionsResultsToSave; // Don't save this, as it is derived from the time format private boolean printMilliseconds = _printMilliseconds; /** A formatter for the time stamp. */ private transient DateFormat formatter = _formatter; /* Make transient as we don't want to save the SimpleDataFormat class * Also, there's currently no way to change the value via the GUI, so changing it * later means editting the JMX, or recreating the Listener. */ // Defaults from properties: private static final boolean _time, _timestamp, _success, _label, _code, _message, _threadName, _xml, _responseData, _dataType, _encoding, _assertions, _latency, _subresults, _samplerData, _fieldNames, _responseHeaders, _requestHeaders; private static final boolean _responseDataOnError; private static final boolean _saveAssertionResultsFailureMessage; private static final String _timeStampFormat; private static final int _assertionsResultsToSave; // TODO turn into method? public static final int SAVE_NO_ASSERTIONS = 0; public static final int SAVE_FIRST_ASSERTION = SAVE_NO_ASSERTIONS + 1; public static final int SAVE_ALL_ASSERTIONS = SAVE_FIRST_ASSERTION + 1; private static final boolean _printMilliseconds; private static final boolean _bytes; private static final boolean _url; private static final boolean _fileName; private static final boolean _hostname; private static final boolean _threadCounts; private static final boolean _sampleCount; private static final DateFormat _formatter; /** * The string used to separate fields when stored to disk, for example, the * comma for CSV files. */ private static final String _delimiter; private static final boolean _idleTime; private static final String DEFAULT_DELIMITER = ","; // $NON_NLS-1$ /** * Read in the properties having to do with saving from a properties file. */ static { Properties props = JMeterUtils.getJMeterProperties(); _subresults = TRUE.equalsIgnoreCase(props.getProperty(SUBRESULTS_PROP, TRUE)); _assertions = TRUE.equalsIgnoreCase(props.getProperty(ASSERTIONS_PROP, TRUE)); _latency = TRUE.equalsIgnoreCase(props.getProperty(LATENCY_PROP, TRUE)); _samplerData = TRUE.equalsIgnoreCase(props.getProperty(SAMPLERDATA_PROP, FALSE)); _responseHeaders = TRUE.equalsIgnoreCase(props.getProperty(RESPONSEHEADERS_PROP, FALSE)); _requestHeaders = TRUE.equalsIgnoreCase(props.getProperty(REQUESTHEADERS_PROP, FALSE)); _encoding = TRUE.equalsIgnoreCase(props.getProperty(ENCODING_PROP, FALSE)); String dlm = props.getProperty(DEFAULT_DELIMITER_PROP, DEFAULT_DELIMITER); if (dlm.equals("\\t")) {// Make it easier to enter a tab (can use \ but that is awkward) dlm="\t"; } if (dlm.length() != 1){ throw new JMeterError("Delimiter '"+dlm+"' must be of length 1."); } char ch = dlm.charAt(0); if (CharUtils.isAsciiAlphanumeric(ch) || ch == CSVSaveService.QUOTING_CHAR){ throw new JMeterError("Delimiter '"+ch+"' must not be alphanumeric or "+CSVSaveService.QUOTING_CHAR+"."); } if (ch != '\t' && !CharUtils.isAsciiPrintable(ch)){ throw new JMeterError("Delimiter (code "+(int)ch+") must be printable."); } _delimiter = dlm; _fieldNames = TRUE.equalsIgnoreCase(props.getProperty(PRINT_FIELD_NAMES_PROP, FALSE)); _dataType = TRUE.equalsIgnoreCase(props.getProperty(SAVE_DATA_TYPE_PROP, TRUE)); _label = TRUE.equalsIgnoreCase(props.getProperty(SAVE_LABEL_PROP, TRUE)); _code = TRUE.equalsIgnoreCase(props.getProperty(SAVE_RESPONSE_CODE_PROP, TRUE)); _responseData = TRUE.equalsIgnoreCase(props.getProperty(SAVE_RESPONSE_DATA_PROP, FALSE)); _responseDataOnError = TRUE.equalsIgnoreCase(props.getProperty(SAVE_RESPONSE_DATA_ON_ERROR_PROP, FALSE)); _message = TRUE.equalsIgnoreCase(props.getProperty(SAVE_RESPONSE_MESSAGE_PROP, TRUE)); _success = TRUE.equalsIgnoreCase(props.getProperty(SAVE_SUCCESSFUL_PROP, TRUE)); _threadName = TRUE.equalsIgnoreCase(props.getProperty(SAVE_THREAD_NAME_PROP, TRUE)); _bytes = TRUE.equalsIgnoreCase(props.getProperty(SAVE_BYTES_PROP, TRUE)); _url = TRUE.equalsIgnoreCase(props.getProperty(SAVE_URL_PROP, FALSE)); _fileName = TRUE.equalsIgnoreCase(props.getProperty(SAVE_FILENAME_PROP, FALSE)); _hostname = TRUE.equalsIgnoreCase(props.getProperty(SAVE_HOSTNAME_PROP, FALSE)); _time = TRUE.equalsIgnoreCase(props.getProperty(SAVE_TIME_PROP, TRUE)); _timeStampFormat = props.getProperty(TIME_STAMP_FORMAT_PROP, MILLISECONDS); _printMilliseconds = MILLISECONDS.equalsIgnoreCase(_timeStampFormat); // Prepare for a pretty date if (!_printMilliseconds && !NONE.equalsIgnoreCase(_timeStampFormat) && (_timeStampFormat != null)) { _formatter = new SimpleDateFormat(_timeStampFormat); } else { _formatter = null; } _timestamp = !NONE.equalsIgnoreCase(_timeStampFormat);// reversed compare allows for null _saveAssertionResultsFailureMessage = TRUE.equalsIgnoreCase(props.getProperty( ASSERTION_RESULTS_FAILURE_MESSAGE_PROP, FALSE)); String whichAssertionResults = props.getProperty(ASSERTION_RESULTS_PROP, NONE); if (NONE.equals(whichAssertionResults)) { _assertionsResultsToSave = SAVE_NO_ASSERTIONS; } else if (FIRST.equals(whichAssertionResults)) { _assertionsResultsToSave = SAVE_FIRST_ASSERTION; } else if (ALL.equals(whichAssertionResults)) { _assertionsResultsToSave = SAVE_ALL_ASSERTIONS; } else { _assertionsResultsToSave = 0; } String howToSave = props.getProperty(OUTPUT_FORMAT_PROP, XML); if (XML.equals(howToSave)) { _xml = true; } else { _xml = false; } _threadCounts=TRUE.equalsIgnoreCase(props.getProperty(SAVE_THREAD_COUNTS, FALSE)); _sampleCount=TRUE.equalsIgnoreCase(props.getProperty(SAVE_SAMPLE_COUNT, FALSE)); _idleTime=TRUE.equalsIgnoreCase(props.getProperty(SAVE_IDLE_TIME, FALSE)); } // Don't save this, as not settable via GUI private String delimiter = _delimiter; // Don't save this - only needed for processing CSV headers currently private transient int varCount = 0; private static final SampleSaveConfiguration _static = new SampleSaveConfiguration(); public int getVarCount() { // Only for use by CSVSaveService return varCount; } public void setVarCount(int varCount) { // Only for use by CSVSaveService this.varCount = varCount; } // Give access to initial configuration public static SampleSaveConfiguration staticConfig() { return _static; } public SampleSaveConfiguration() { } /** * Alternate constructor for use by OldSaveService * * @param value initial setting for boolean fields used in Config dialogue */ public SampleSaveConfiguration(boolean value) { assertions = value; bytes = value; code = value; dataType = value; encoding = value; fieldNames = value; fileName = value; hostname = value; label = value; latency = value; message = value; printMilliseconds = _printMilliseconds;//is derived from properties only requestHeaders = value; responseData = value; responseDataOnError = value; responseHeaders = value; samplerData = value; saveAssertionResultsFailureMessage = value; subresults = value; success = value; threadCounts = value; sampleCount = value; threadName = value; time = value; timestamp = value; url = value; xml = value; } private Object readResolve(){ formatter = _formatter; return this; } @Override public Object clone() { try { SampleSaveConfiguration clone = (SampleSaveConfiguration)super.clone(); if(this.formatter != null) { clone.formatter = (SimpleDateFormat)this.formatter.clone(); } return clone; } catch(CloneNotSupportedException e) { throw new RuntimeException("Should not happen",e); } } @Override public boolean equals(Object obj) { if(this == obj) { return true; } if((obj == null) || (obj.getClass() != this.getClass())) { return false; } // We know we are comparing to another SampleSaveConfiguration SampleSaveConfiguration s = (SampleSaveConfiguration)obj; boolean primitiveValues = s.time == time && s.latency == latency && s.timestamp == timestamp && s.success == success && s.label == label && s.code == code && s.message == message && s.threadName == threadName && s.dataType == dataType && s.encoding == encoding && s.assertions == assertions && s.subresults == subresults && s.responseData == responseData && s.samplerData == samplerData && s.xml == xml && s.fieldNames == fieldNames && s.responseHeaders == responseHeaders && s.requestHeaders == requestHeaders && s.assertionsResultsToSave == assertionsResultsToSave && s.saveAssertionResultsFailureMessage == saveAssertionResultsFailureMessage && s.printMilliseconds == printMilliseconds && s.responseDataOnError == responseDataOnError && s.url == url && s.bytes == bytes && s.fileName == fileName && s.hostname == hostname && s.sampleCount == sampleCount && s.idleTime == idleTime && s.threadCounts == threadCounts; boolean stringValues = false; if(primitiveValues) { stringValues = s.delimiter == delimiter || (delimiter != null && delimiter.equals(s.delimiter)); } boolean complexValues = false; if(primitiveValues && stringValues) { complexValues = s.formatter == formatter || (formatter != null && formatter.equals(s.formatter)); } return primitiveValues && stringValues && complexValues; } @Override public int hashCode() { int hash = 7; hash = 31 * hash + (time ? 1 : 0); hash = 31 * hash + (latency ? 1 : 0); hash = 31 * hash + (timestamp ? 1 : 0); hash = 31 * hash + (success ? 1 : 0); hash = 31 * hash + (label ? 1 : 0); hash = 31 * hash + (code ? 1 : 0); hash = 31 * hash + (message ? 1 : 0); hash = 31 * hash + (threadName ? 1 : 0); hash = 31 * hash + (dataType ? 1 : 0); hash = 31 * hash + (encoding ? 1 : 0); hash = 31 * hash + (assertions ? 1 : 0); hash = 31 * hash + (subresults ? 1 : 0); hash = 31 * hash + (responseData ? 1 : 0); hash = 31 * hash + (samplerData ? 1 : 0); hash = 31 * hash + (xml ? 1 : 0); hash = 31 * hash + (fieldNames ? 1 : 0); hash = 31 * hash + (responseHeaders ? 1 : 0); hash = 31 * hash + (requestHeaders ? 1 : 0); hash = 31 * hash + assertionsResultsToSave; hash = 31 * hash + (saveAssertionResultsFailureMessage ? 1 : 0); hash = 31 * hash + (printMilliseconds ? 1 : 0); hash = 31 * hash + (responseDataOnError ? 1 : 0); hash = 31 * hash + (url ? 1 : 0); hash = 31 * hash + (bytes ? 1 : 0); hash = 31 * hash + (fileName ? 1 : 0); hash = 31 * hash + (hostname ? 1 : 0); hash = 31 * hash + (threadCounts ? 1 : 0); hash = 31 * hash + (delimiter != null ? delimiter.hashCode() : 0); hash = 31 * hash + (formatter != null ? formatter.hashCode() : 0); hash = 31 * hash + (sampleCount ? 1 : 0); hash = 31 * hash + (idleTime ? 1 : 0); return hash; } ///////////////////// Start of standard save/set access methods ///////////////////// public boolean saveResponseHeaders() { return responseHeaders; } public void setResponseHeaders(boolean r) { responseHeaders = r; } public boolean saveRequestHeaders() { return requestHeaders; } public void setRequestHeaders(boolean r) { requestHeaders = r; } public boolean saveAssertions() { return assertions; } public void setAssertions(boolean assertions) { this.assertions = assertions; } public boolean saveCode() { return code; } public void setCode(boolean code) { this.code = code; } public boolean saveDataType() { return dataType; } public void setDataType(boolean dataType) { this.dataType = dataType; } public boolean saveEncoding() { return encoding; } public void setEncoding(boolean encoding) { this.encoding = encoding; } public boolean saveLabel() { return label; } public void setLabel(boolean label) { this.label = label; } public boolean saveLatency() { return latency; } public void setLatency(boolean latency) { this.latency = latency; } public boolean saveMessage() { return message; } public void setMessage(boolean message) { this.message = message; } public boolean saveResponseData(SampleResult res) { return responseData || TestPlan.getFunctionalMode() || (responseDataOnError && !res.isSuccessful()); } public boolean saveResponseData() { return responseData; } public void setResponseData(boolean responseData) { this.responseData = responseData; } public boolean saveSamplerData(SampleResult res) { return samplerData || TestPlan.getFunctionalMode() // as per 2.0 branch || (responseDataOnError && !res.isSuccessful()); } public boolean saveSamplerData() { return samplerData; } public void setSamplerData(boolean samplerData) { this.samplerData = samplerData; } public boolean saveSubresults() { return subresults; } public void setSubresults(boolean subresults) { this.subresults = subresults; } public boolean saveSuccess() { return success; } public void setSuccess(boolean success) { this.success = success; } public boolean saveThreadName() { return threadName; } public void setThreadName(boolean threadName) { this.threadName = threadName; } public boolean saveTime() { return time; } public void setTime(boolean time) { this.time = time; } public boolean saveTimestamp() { return timestamp; } public void setTimestamp(boolean timestamp) { this.timestamp = timestamp; } public boolean saveAsXml() { return xml; } public void setAsXml(boolean xml) { this.xml = xml; } public boolean saveFieldNames() { return fieldNames; } public void setFieldNames(boolean printFieldNames) { this.fieldNames = printFieldNames; } public boolean saveUrl() { return url; } public void setUrl(boolean save) { this.url = save; } public boolean saveBytes() { return bytes; } public void setBytes(boolean save) { this.bytes = save; } public boolean saveFileName() { return fileName; } public void setFileName(boolean save) { this.fileName = save; } public boolean saveAssertionResultsFailureMessage() { return saveAssertionResultsFailureMessage; } public void setAssertionResultsFailureMessage(boolean b) { saveAssertionResultsFailureMessage = b; } public boolean saveThreadCounts() { return threadCounts; } public void setThreadCounts(boolean save) { this.threadCounts = save; } public boolean saveSampleCount() { return sampleCount; } public void setSampleCount(boolean save) { this.sampleCount = save; } ///////////////// End of standard field accessors ///////////////////// /** * Only intended for use by OldSaveService (and test cases) */ public void setFormatter(DateFormat fmt){ printMilliseconds = (fmt == null); // maintain relationship formatter = fmt; } public boolean printMilliseconds() { return printMilliseconds; } public DateFormat formatter() { return formatter; } public int assertionsResultsToSave() { return assertionsResultsToSave; } public String getDelimiter() { return delimiter; } public String getXmlPi() { return JMeterUtils.getJMeterProperties().getProperty(XML_PI, ""); // Defaults to empty; } // Used by old Save service public void setDelimiter(String delim) { delimiter=delim; } // Used by SampleSaveConfigurationConverter.unmarshall() public void setDefaultDelimiter() { delimiter=_delimiter; } // Used by SampleSaveConfigurationConverter.unmarshall() public void setDefaultTimeStampFormat() { printMilliseconds=_printMilliseconds; formatter=_formatter; } public boolean saveHostname(){ return hostname; } public void setHostname(boolean save){ hostname = save; } public boolean saveIdleTime() { return idleTime; } public void setIdleTime(boolean save) { idleTime = save; } }apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/SampleListener.java0000644000175000017500000000253312032647220026056 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; /** * Allows notification on events occuring during the sampling process. * Specifically, when sampling is started, when a specific sample is obtained, * and when sampling is stopped. * * @version $Revision: 1377076 $ */ public interface SampleListener { /** * A sample has started and stopped. */ void sampleOccurred(SampleEvent e); /** * A sample has started. */ void sampleStarted(SampleEvent e); /** * A sample has stopped. */ void sampleStopped(SampleEvent e); } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/SampleEvent.java0000644000175000017500000001261212032647220025351 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; import java.net.InetAddress; import java.net.UnknownHostException; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.log.Logger; /** * Packages information regarding the target of a sample event, such as the * result from that event and the thread group it ran in. */ public class SampleEvent implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; public static final String SAMPLE_VARIABLES = "sample_variables"; // $NON-NLS-1$ public static final String HOSTNAME; // List of variable names to be saved in JTL files private static final String[] variableNames; // Number of variable names private static final int varCount; // The values. Entries be null, but there will be the correct number. private final String[] values; static { String hn=""; try { hn = InetAddress.getLocalHost().getHostName(); } catch (UnknownHostException e) { log.error("Cannot obtain local host name "+e); } HOSTNAME=hn; String vars = JMeterUtils.getProperty(SAMPLE_VARIABLES); variableNames=vars != null ? vars.split(",") : new String[0]; varCount=variableNames.length; if (varCount>0){ log.info(varCount + " sample_variables have been declared: "+vars); } } private final SampleResult result; private final String threadGroup; // TODO appears to duplicate the threadName field in SampleResult private final String hostname; private final boolean isTransactionSampleEvent; /* * Only for Unit tests */ public SampleEvent() { this(null, null); } /** * Creates SampleEvent without saving any variables. * * Use by Proxy and StatisticalSampleSender. * * @param result SampleResult * @param threadGroup name */ public SampleEvent(SampleResult result, String threadGroup) { this(result, threadGroup, HOSTNAME, false); } /** * Contructor used for normal samples, saves variable values if any are defined. * * @param result * @param threadGroup name * @param jmvars Jmeter variables */ public SampleEvent(SampleResult result, String threadGroup, JMeterVariables jmvars) { this(result, threadGroup, jmvars, false); } /** * Only intended for use when loading results from a file. * * @param result * @param threadGroup * @param hostname */ public SampleEvent(SampleResult result, String threadGroup, String hostname) { this(result, threadGroup, hostname, false); } private SampleEvent(SampleResult result, String threadGroup, String hostname, boolean isTransactionSampleEvent) { this.result = result; this.threadGroup = threadGroup; this.hostname = hostname; values = new String[variableNames.length]; this.isTransactionSampleEvent = isTransactionSampleEvent; } /** * @param result * @param threadGroup * @param jmvars * @param isTransactionSampleEvent */ public SampleEvent(SampleResult result, String threadGroup, JMeterVariables jmvars, boolean isTransactionSampleEvent) { this(result, threadGroup, HOSTNAME, isTransactionSampleEvent); saveVars(jmvars); } private void saveVars(JMeterVariables vars){ for(int i = 0; i < variableNames.length; i++){ values[i] = vars.get(variableNames[i]); } } /** Return the number of variables defined */ public static int getVarCount(){ return varCount; } /** Get the nth variable name (zero-based) */ public static String getVarName(int i){ return variableNames[i]; } /** Get the nth variable value (zero-based) */ public String getVarValue(int i){ try { return values[i]; } catch (ArrayIndexOutOfBoundsException e) { throw new JMeterError("Check the sample_variable settings!", e); } } public SampleResult getResult() { return result; } public String getThreadGroup() { return threadGroup; } public String getHostname() { return hostname; } /** * @return the isTransactionSampleEvent */ public boolean isTransactionSampleEvent() { return isTransactionSampleEvent; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/Sampler.java0000644000175000017500000000240612032647220024531 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; import org.apache.jmeter.testelement.TestElement; /** * Classes which are able to generate information about an entry should * implement this interface. * * @version $Revision: 1377076 $ */ public interface Sampler extends Serializable, TestElement { /** * Obtains statistics about the given Entry, and packages the information * into a SampleResult. */ SampleResult sample(Entry e); } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java0000644000175000017500000000634212032647220030205 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.ObjectStreamException; import java.io.Serializable; import java.rmi.RemoteException; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The standard remote sample reporting should be more friendly to the main purpose of * remote testing - which is scalability. To increase scalability, this class strips out the * response data before sending. * * */ public class DataStrippingSampleSender extends AbstractSampleSender implements Serializable { private static final long serialVersionUID = 1; private static final Logger log = LoggingManager.getLoggerForClass(); private final RemoteSampleListener listener; private final SampleSender decoratedSender; /** * @deprecated only for use by test code */ @Deprecated public DataStrippingSampleSender(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ listener = null; decoratedSender = null; } DataStrippingSampleSender(RemoteSampleListener listener) { this.listener = listener; decoratedSender = null; log.info("Using DataStrippingSampleSender for this run"); } DataStrippingSampleSender(SampleSender decorate) { this.decoratedSender = decorate; this.listener = null; log.info("Using DataStrippingSampleSender for this run"); } public void testEnded(String host) { log.info("Test Ended on " + host); if(decoratedSender != null) decoratedSender.testEnded(host); } public void sampleOccurred(SampleEvent event) { //Strip the response data before writing, but only for a successful request. SampleResult result = event.getResult(); if(result.isSuccessful()) { result.setResponseData(new byte[0]); } if(decoratedSender == null) { try { listener.sampleOccurred(event); } catch (RemoteException e) { log.error("Error sending sample result over network ",e); } } else { decoratedSender.sampleOccurred(event); } } /** * Processed by the RMI server code; acts as testStarted(). * @throws ObjectStreamException */ private Object readResolve() throws ObjectStreamException{ log.info("Using DataStrippingSampleSender for this run"); return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/gui/0000755000175000017500000000000012165514773023062 5ustar ebourgebourgapache-jmeter-2.8/src/core/org/apache/jmeter/samplers/gui/AbstractSamplerGui.java0000644000175000017500000000443212032647220027447 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers.gui; import java.util.Arrays; import java.util.Collection; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.util.MenuFactory; /** * This is the base class for JMeter GUI components which manage samplers. * */ public abstract class AbstractSamplerGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * When a user right-clicks on the component in the test tree, or selects * the edit menu when the component is selected, the component will be asked * to return a JPopupMenu that provides all the options available to the * user from this component. *

        * This implementation returns menu items appropriate for most sampler * components. * * @return a JPopupMenu appropriate for the component. */ public JPopupMenu createPopupMenu() { return MenuFactory.getDefaultSamplerMenu(); } /** * This is the list of menu categories this gui component will be available * under. This implementation returns * {@link org.apache.jmeter.gui.util.MenuFactory#SAMPLERS}, which is * appropriate for most sampler components. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.SAMPLERS }); } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/Clearable.java0000644000175000017500000000224312032647220024777 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; /** * Identifies an object which supports the clearing of run-time data * using the clearData() method. * * Intended for implementation by Listeners. */ public interface Clearable { /** * Clears the current data of the object. */ void clearData(); // N.B. originally called clear() // @see also JMeterGUIComponent }apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/RemoteSampleListenerImpl.java0000644000175000017500000000677612032647220030071 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.rmi.RemoteException; import java.util.List; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.util.JMeterUtils; /** * Implementation of remote sampler listener, also supports TestStateListener */ public class RemoteSampleListenerImpl extends java.rmi.server.UnicastRemoteObject implements RemoteSampleListener, SampleListener, TestStateListener { private static final long serialVersionUID = 240L; private final TestStateListener testListener; private final SampleListener sampleListener; private static final int DEFAULT_LOCAL_PORT = JMeterUtils.getPropDefault("client.rmi.localport", 0); // $NON-NLS-1$ public RemoteSampleListenerImpl(Object listener) throws RemoteException { super(DEFAULT_LOCAL_PORT); if (listener instanceof TestStateListener) { testListener = (TestStateListener) listener; } else { testListener = null; } if (listener instanceof SampleListener) { sampleListener = (SampleListener) listener; } else { sampleListener = null; } } public void testStarted() { if (testListener != null) { testListener.testStarted(); } } public void testStarted(String host) { if (testListener != null) { testListener.testStarted(host); } } public void testEnded() { if (testListener != null) { testListener.testEnded(); } } public void testEnded(String host) { if (testListener != null) { testListener.testEnded(host); } } /** * This method is called remotely and fires a list of samples events * received locally. The function is to reduce network load when using * remote testing. * * @param samples * the list of sample events to be fired locally */ public void processBatch(List samples) { if (samples != null && sampleListener != null) { for (SampleEvent e : samples) { sampleListener.sampleOccurred(e); } } } public void sampleOccurred(SampleEvent e) { if (sampleListener != null) { sampleListener.sampleOccurred(e); } } /** * A sample has started. */ public void sampleStarted(SampleEvent e) { if (sampleListener != null) { sampleListener.sampleStarted(e); } } /** * A sample has stopped. */ public void sampleStopped(SampleEvent e) { if (sampleListener != null) { sampleListener.sampleStopped(e); } } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/Remoteable.java0000644000175000017500000000202212032647220025177 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; /** * Marker interface used by ConvertListeners to determine which test elements to wrap * so that the results are processed by the client rather than the server */ public interface Remoteable { } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/RemoteTestListenerWrapper.java0000644000175000017500000000456612032647220030301 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * @version $Revision: 1376300 $ */ public class RemoteTestListenerWrapper extends AbstractTestElement implements TestStateListener, Serializable, NoThreadClone { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private final RemoteSampleListener listener; public RemoteTestListenerWrapper() { log.warn("Only intended for use in testing"); listener = null; } public RemoteTestListenerWrapper(RemoteSampleListener l) { listener = l; } public void testStarted() { try { listener.testStarted(); } catch (Exception ex) { log.error("", ex); // $NON-NLS-1$ } } public void testEnded() { try { listener.testEnded(); } catch (Exception ex) { log.error("", ex); // $NON-NLS-1$ } } public void testStarted(String host) { try { listener.testStarted(host); } catch (Exception ex) { log.error("", ex); // $NON-NLS-1$ } } public void testEnded(String host) { try { listener.testEnded(host); } catch (Exception ex) { log.error("", ex); // $NON-NLS-1$ } } }apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/AbstractSampler.java0000644000175000017500000000244412032647220026217 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.util.ConfigMergabilityIndicator; import org.apache.jmeter.testelement.AbstractTestElement; public abstract class AbstractSampler extends AbstractTestElement implements Sampler, ConfigMergabilityIndicator { private static final long serialVersionUID = 240L; /** * {@inheritDoc} */ public boolean applies(ConfigTestElement configElement) { return true; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/RemoteSampleListener.java0000644000175000017500000000442312032647220027232 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.rmi.RemoteException; import java.util.List; /** * Allows notification on events occuring during the sampling process. * Specifically, when sampling is started, when a specific sample is obtained, * and when sampling is stopped. * * @version $Revision: 1377076 $ */ public interface RemoteSampleListener extends java.rmi.Remote { void testStarted() throws RemoteException; void testStarted(String host) throws RemoteException; void testEnded() throws RemoteException; void testEnded(String host) throws RemoteException; // Not currently needed by any Remoteable classes // Anyway, would probably be too expensive in terms of network traffic // // void testIterationStart(LoopIterationEvent event); /** * This method is called remotely and fires a list of samples events * recieved locally. The function is to reduce network load when using * remote testing. * * @param samples * the list of sample events to be fired locally. * @throws RemoteException */ void processBatch(List samples) throws RemoteException; /** * A sample has started and stopped. */ void sampleOccurred(SampleEvent e) throws RemoteException; /** * A sample has started. */ void sampleStarted(SampleEvent e) throws RemoteException; /** * A sample has stopped. */ void sampleStopped(SampleEvent e) throws RemoteException; } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/RemoteListenerWrapper.java0000644000175000017500000001004012032647220027421 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import java.io.Serializable; import java.rmi.RemoteException; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * * Lars-Erik Helander provided the idea (and original implementation) for the * caching functionality (sampleStore). * * @version $Revision: 1376300 $ */ public class RemoteListenerWrapper extends AbstractTestElement implements SampleListener, TestStateListener, Serializable, NoThreadClone { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private final RemoteSampleListener listener; private final SampleSender sender; public RemoteListenerWrapper(RemoteSampleListener l) { listener = l; // Get appropriate sender class governed by the behaviour set in the JMeter property sender = SampleSenderFactory.getInstance(listener); } public RemoteListenerWrapper() // TODO: not used - make private? { listener = null; sender = null; } public void testStarted() { log.debug("Test Started()"); try { listener.testStarted(); } catch (Throwable ex) { log.warn("testStarted()", ex); if (ex instanceof Error){ throw (Error) ex; } if (ex instanceof RuntimeException){ throw (RuntimeException) ex; } } } public void testEnded() { sender.testEnded(); } public void testStarted(String host) { log.debug("Test Started on " + host); try { listener.testStarted(host); } catch (Throwable ex) { log.error("testStarted(host)", ex); if (ex instanceof Error){ throw (Error) ex; } if (ex instanceof RuntimeException){ throw (RuntimeException) ex; } } } public void testEnded(String host) { sender.testEnded(host); } public void sampleOccurred(SampleEvent e) { sender.sampleOccurred(e); } // Note that sampleStarted() and sampleStopped() is not made to appear // in synch with sampleOccured() when replaying held samples. // For now this is not critical since sampleStarted() and sampleStopped() // is not used, but it may become an issue in the future. Then these // events must also be stored so that replay of all events may occur and // in the right order. Each stored event must then be tagged with something // that lets you distinguish between occured, started and ended. public void sampleStarted(SampleEvent e) { log.debug("Sample started"); try { listener.sampleStarted(e); } catch (RemoteException err) { log.error("sampleStarted", err); } } public void sampleStopped(SampleEvent e) { log.debug("Sample stopped"); try { listener.sampleStopped(e); } catch (RemoteException err) { log.error("sampleStopped", err); } } }apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/StatisticalSampleSender.java0000644000175000017500000002102712032647220027715 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import java.io.ObjectStreamException; import java.io.Serializable; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Implements batch reporting for remote testing. * */ public class StatisticalSampleSender extends AbstractSampleSender implements Serializable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final int DEFAULT_NUM_SAMPLE_THRESHOLD = 100; private static final long DEFAULT_TIME_THRESHOLD = 60000L; // Static fields are set by the server when the class is constructed private static final int NUM_SAMPLES_THRESHOLD = JMeterUtils.getPropDefault( "num_sample_threshold", DEFAULT_NUM_SAMPLE_THRESHOLD); private static final long TIME_THRESHOLD_MS = JMeterUtils.getPropDefault("time_threshold", DEFAULT_TIME_THRESHOLD); // should the samples be aggregated on thread name or thread group (default) ? private static boolean KEY_ON_THREADNAME = JMeterUtils.getPropDefault("key_on_threadname", false); // Instance fields are constructed by the client when the instance is create in the test plan // and the field values are then transferred to the server copy by RMI serialisation/deserialisation private final int clientConfiguredNumSamplesThreshold = JMeterUtils.getPropDefault( "num_sample_threshold", DEFAULT_NUM_SAMPLE_THRESHOLD); private final long clientConfiguredTimeThresholdMs = JMeterUtils.getPropDefault("time_threshold", DEFAULT_TIME_THRESHOLD); // should the samples be aggregated on thread name or thread group (default) ? private final boolean clientConfiguredKeyOnThreadName = JMeterUtils.getPropDefault("key_on_threadname", false); private final RemoteSampleListener listener; private final List sampleStore = new ArrayList(); //@GuardedBy("sampleStore") TODO perhaps use ConcurrentHashMap ? private final Map sampleTable = new HashMap(); // Settings; readResolve sets these from the server/client values as appropriate // TODO would be nice to make these final; not 100% sure volatile is needed as not changed after creation private transient volatile int numSamplesThreshold; private transient volatile long timeThresholdMs; private transient volatile boolean keyOnThreadName; // variables maintained by server code // @GuardedBy("sampleStore") private transient int sampleCount; // maintain separate count of samples for speed private transient long batchSendTime = -1; // @GuardedBy("sampleStore") /** * @deprecated only for use by test code */ @Deprecated public StatisticalSampleSender(){ this(null); log.warn("Constructor only intended for use in testing"); } /** * Constructor, only called by client code. * * @param listener that the List of sample events will be sent to. */ StatisticalSampleSender(RemoteSampleListener listener) { this.listener = listener; if (isClientConfigured()) { log.info("Using StatisticalSampleSender (client settings) for this run." + " Thresholds: num=" + clientConfiguredNumSamplesThreshold + ", time=" + clientConfiguredTimeThresholdMs + ". Key uses ThreadName: " + clientConfiguredKeyOnThreadName); } else { log.info("Using StatisticalSampleSender (server settings) for this run."); } } /** * Checks if any sample events are still present in the sampleStore and * sends them to the listener. Informs the listener of the testended. * * @param host the hostname that the test has ended on. */ public void testEnded(String host) { log.info("Test Ended on " + host); try { if (sampleStore.size() != 0) { sendBatch(); } listener.testEnded(host); } catch (RemoteException err) { log.warn("testEnded(hostname)", err); } } /** * Stores sample events untill either a time or sample threshold is * breached. Both thresholds are reset if one fires. If only one threshold * is set it becomes the only value checked against. When a threhold is * breached the list of sample events is sent to a listener where the event * are fired locally. * * @param e a Sample Event */ public void sampleOccurred(SampleEvent e) { synchronized (sampleStore) { // Locate the statistical sample colector String key = StatisticalSampleResult.getKey(e, keyOnThreadName); StatisticalSampleResult statResult = sampleTable.get(key); if (statResult == null) { statResult = new StatisticalSampleResult(e.getResult(), keyOnThreadName); // store the new statistical result collector sampleTable.put(key, statResult); // add a new wrapper samplevent sampleStore .add(new SampleEvent(statResult, e.getThreadGroup())); } statResult.add(e.getResult()); sampleCount++; boolean sendNow = false; if (numSamplesThreshold != -1) { if (sampleCount >= numSamplesThreshold) { sendNow = true; } } long now = 0; if (timeThresholdMs != -1) { now = System.currentTimeMillis(); // Checking for and creating initial timestamp to check against if (batchSendTime == -1) { this.batchSendTime = now + timeThresholdMs; } if (batchSendTime < now) { sendNow = true; } } if (sendNow) { try { if (log.isDebugEnabled()) { log.debug("Firing sample"); } sendBatch(); if (timeThresholdMs != -1) { this.batchSendTime = now + timeThresholdMs; } } catch (RemoteException err) { log.warn("sampleOccurred", err); } } } // synchronized(sampleStore) } private void sendBatch() throws RemoteException { if (sampleStore.size() > 0) { listener.processBatch(sampleStore); sampleStore.clear(); sampleTable.clear(); sampleCount = 0; } } /** * Processed by the RMI server code; acts as testStarted(). * @throws ObjectStreamException */ private Object readResolve() throws ObjectStreamException{ if (isClientConfigured()) { numSamplesThreshold = clientConfiguredNumSamplesThreshold; timeThresholdMs = clientConfiguredTimeThresholdMs; keyOnThreadName = clientConfiguredKeyOnThreadName; } else { numSamplesThreshold = NUM_SAMPLES_THRESHOLD; timeThresholdMs = TIME_THRESHOLD_MS; keyOnThreadName = KEY_ON_THREADNAME; } log.info("Using StatisticalSampleSender for this run." + (isClientConfigured() ? " Client config: " : " Server config: ") + " Thresholds: num=" + numSamplesThreshold + ", time=" + timeThresholdMs + ". Key uses ThreadName: " + keyOnThreadName); return this; } } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/SampleSender.java0000644000175000017500000000303612032647220025510 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; /** * This interface is used to define the methods that need to be intercepted * by the SampleSender wrapper classes processed by the RemoteListenerWrapper. */ public interface SampleSender { /** * The test ended (probably not used; client-server mode needs a host) */ void testEnded(); /** * The test ended. * * This will be called from the engine thread. * * @param host * the host that the test ended on. */ void testEnded(String host); /** * A sample occurred. * * This method will be called from the sampler thread. * * @param e * a Sample Event */ void sampleOccurred(SampleEvent e); } apache-jmeter-2.8/src/core/org/apache/jmeter/samplers/DiskStoreSampleSender.java0000644000175000017500000001434312032647220027343 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.samplers; import org.apache.log.Logger; import org.apache.commons.io.IOUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.ObjectStreamException; import java.io.OutputStream; import java.io.Serializable; import java.rmi.RemoteException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; /** * Version of HoldSampleSender that stores the samples on disk as a serialised stream. */ public class DiskStoreSampleSender extends AbstractSampleSender implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 252L; private final RemoteSampleListener listener; private transient volatile ObjectOutputStream oos; private transient volatile File temporaryFile; private transient volatile ExecutorService singleExecutor; /** * @deprecated only for use by test code */ @Deprecated public DiskStoreSampleSender(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ listener = null; } DiskStoreSampleSender(RemoteSampleListener listener) { this.listener = listener; log.info("Using DiskStoreSampleSender for this test run"); // client log file } public void testEnded(String host) { log.info("Test Ended on " + host); singleExecutor.submit(new Runnable(){ public void run() { try { oos.close(); // ensure output is flushed } catch (IOException e) { log.error("Failed to close data file ", e); } }}); singleExecutor.shutdown(); // finish processing samples try { if (!singleExecutor.awaitTermination(3, TimeUnit.SECONDS)) { log.error("Executor did not terminate in a timely fashion"); } } catch (InterruptedException e1) { log.error("Executor did not terminate in a timely fashion", e1); } ObjectInputStream ois = null; try { ois = new ObjectInputStream(new FileInputStream(temporaryFile)); Object obj = null; while((obj = ois.readObject()) != null) { if (obj instanceof SampleEvent) { try { listener.sampleOccurred((SampleEvent) obj); } catch (RemoteException err) { if (err.getCause() instanceof java.net.ConnectException){ throw new JMeterError("Could not return sample",err); } log.error("returning sample", err); } } else { log.error("Unexpected object type found in data file "+obj.getClass().getName()); } } } catch (EOFException err) { // expected } catch (IOException err) { log.error("returning sample", err); } catch (ClassNotFoundException err) { log.error("returning sample", err); } finally { try { listener.testEnded(host); } catch (RemoteException e) { log.error("returning sample", e); } IOUtils.closeQuietly(ois); if(!temporaryFile.delete()) { log.warn("Could not delete file:"+temporaryFile.getAbsolutePath()); } } } public void sampleOccurred(final SampleEvent e) { // sampleOccurred is called from multiple threads; not safe to write from multiple threads. // also decouples the file IO from sample generation singleExecutor.submit(new Runnable() { public void run() { try { oos.writeObject(e); } catch (IOException err) { log.error("sampleOccurred", err); } } } ); } /** * Processed by the RMI server code; acts as testStarted(). * @throws ObjectStreamException */ // TODO should errors be thrown back through RMI? private Object readResolve() throws ObjectStreamException{ log.info("Using DiskStoreSampleSender for this test run"); // server log file singleExecutor = Executors.newSingleThreadExecutor(); try { temporaryFile = File.createTempFile("SerialisedSampleSender", ".ser"); temporaryFile.deleteOnExit(); singleExecutor.submit(new Runnable(){ public void run() { OutputStream anOutputStream; try { anOutputStream = new FileOutputStream(temporaryFile); oos = new ObjectOutputStream(anOutputStream); } catch (IOException e) { log.error("Failed to create output Stream", e); } }}); } catch (IOException e) { log.error("Failed to create output file", e); } return this; } } apache-jmeter-2.8/src/junit/0000755000175000017500000000000012032647221015337 5ustar ebourgebourgapache-jmeter-2.8/src/junit/woolfel/0000755000175000017500000000000012165514773017022 5ustar ebourgebourgapache-jmeter-2.8/src/junit/woolfel/SubDummyTest2.java0000644000175000017500000000254012032647221022341 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package woolfel; public class SubDummyTest2 extends DummyTestCase { @SuppressWarnings("unused") private SubDummyTest2() { super(); System.out.println("private SubDummyTest2()"); } public SubDummyTest2(String arg0) { super(arg0); System.out.println("public SubDummyTest2("+arg0+")"); } public void oneTimeSetUp() { System.out.println("SubDummyTest2#oneTimeSetUp(): "+getName()); } public void oneTimeTearDown() { System.out.println("SubDummyTest2#oneTimeTearDown(): "+getName()); } } apache-jmeter-2.8/src/junit/woolfel/DummyTestCase.java0000644000175000017500000000513612032647221022405 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package woolfel; import junit.framework.TestCase; public class DummyTestCase extends TestCase { public DummyTestCase() { super(); System.out.println("public DummyTestCase()"); } protected DummyTestCase(String arg0) { super(arg0); System.out.println("protected DummyTestCase("+arg0+")"); } @Override public void setUp(){ System.out.println("DummyTestCase#setup(): "+getName()); } @Override public void tearDown(){ System.out.println("DummyTestCase#tearDown(): "+getName()); } public void testMethodPass() { try { Thread.sleep(100); assertEquals(10,10); } catch (InterruptedException e) { e.printStackTrace(); } } public void testMethodPass2() { try { Thread.sleep(100); assertEquals("one","one"); } catch (InterruptedException e) { e.printStackTrace(); } } public void testMethodFail() { try { Thread.sleep(100); assertEquals(20,10); } catch (InterruptedException e) { e.printStackTrace(); } } public void testMethodFail2() { try { Thread.sleep(100); assertEquals("one","two"); } catch (InterruptedException e) { e.printStackTrace(); } } // Normal test failure public void testFail() { fail("Test failure"); } // Generate test error public void testException() { @SuppressWarnings("unused") int i = 27 / 0; // will generate Divide by zero error } public void testStringCompareFail(){ assertEquals("this","that"); } public void testObjectCompareFail(){ assertEquals(new Object(),new Object()); } } apache-jmeter-2.8/src/junit/woolfel/SubDummyTest.java0000644000175000017500000000246712032647221022267 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package woolfel; public class SubDummyTest extends DummyTestCase { public SubDummyTest() { super(); System.out.println("public SubDummyTest()"); } public SubDummyTest(String arg0) { super(arg0); System.out.println("public SubDummyTest("+arg0+")"); } public void oneTimeSetUp() { System.out.println("SubDummyTest#oneTimeSetUp(): "+getName()); } public void oneTimeTearDown() { System.out.println("SubDummyTest#oneTimeTearDown(): "+getName()); } } apache-jmeter-2.8/src/junit/test/0000755000175000017500000000000012165514773016332 5ustar ebourgebourgapache-jmeter-2.8/src/junit/test/DummyAnnotatedTest.java0000644000175000017500000000535312032647221022760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.After; import org.junit.Before; import org.junit.Test; /** * Sample test cases for demonstrating JUnit4 sampler. * */ public class DummyAnnotatedTest { public int two = 1; //very wrong. public DummyAnnotatedTest() { } // Generates expected Exception @Test(expected=RuntimeException.class) public void expectedExceptionPass() { throw new RuntimeException(); } // Fails to generate expected Exception @Test(expected=RuntimeException.class) public void expectedExceptionFail() { } @Before public void verifyTwo() { System.out.println("DummyAnnotatedTest#verifyTwo()"); two = 2; } @After public void printDone() { System.out.println("DummyAnnotatedTest#printDone()"); } @Test // Succeeds only if Before method - verifyTwo() - is run. public void add() { int four = two+2; if(4!=four) { throw new RuntimeException("4 did not equal four."); } //or if you have assertions enabled assert 4 == four; } //should always fail @Test(timeout=1000) public void timeOutFail() { try{ Thread.sleep(2000); }catch (InterruptedException e) { } } //should not fail @Test(timeout=1000) public void timeOutPass() { try{ Thread.sleep(500); }catch (InterruptedException e) { } } @Test public void alwaysFail() { fail("This always fails"); } @Test // Generate a test error public void divideByZero() { @SuppressWarnings("unused") int i = 27 / 0; // will generate Divide by zero error } @Test public void stringCompareFail(){ assertEquals("this","that"); } @Test public void objectCompareFail(){ assertEquals(new Object(),new Object()); } } apache-jmeter-2.8/src/junit/test/TearDownTestFail.java0000644000175000017500000000216212032647221022341 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import junit.framework.TestCase; /** * Test to demonstrate how tearDown failures are handled */ public class TearDownTestFail extends TestCase { @Override public void tearDown(){ fail("tearDown()"); } public void testTearDownFail(){ // Dummy to ensure there is a test to run } } apache-jmeter-2.8/src/junit/test/SetupTestError.java0000644000175000017500000000226612032647221022141 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import org.junit.Before; import org.junit.Test; import junit.framework.TestCase; /** * Test to demonstrate how setUp errors are handled */ public class SetupTestError extends TestCase { @Override @Before public void setUp(){ throw new Error("setUp()"); } @Test public void testSetUpError(){ // Dummy to ensure there is a test to run } } apache-jmeter-2.8/src/junit/test/Junit4AnnotationsTest.java0000644000175000017500000000275512032647221023425 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; /** * Test to demonstrate all the common method annotations */ public class Junit4AnnotationsTest { @BeforeClass public static void beforeClass(){ System.out.println("beforeClass"); } @Before public void before(){ System.out.println("before"); } @Test public void test(){ System.out.println("test"); } @After public void after(){ System.out.println("after"); } @AfterClass public static void afterClass(){ System.out.println("afterClass"); } } apache-jmeter-2.8/src/junit/test/RerunTest.java0000644000175000017500000000212012032647221021107 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import org.junit.Test; import junit.framework.TestCase; /** * Test to demonstrate whether a test instance can be re-run */ public class RerunTest extends TestCase { private int i = 123; @Test public void testRerun(){ assertEquals(123,i); i++; } } apache-jmeter-2.8/src/junit/test/SetupTestFail.java0000644000175000017500000000225312032647221021717 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import org.junit.Before; import org.junit.Test; import junit.framework.TestCase; /** * Test to demonstrate how setUp failures are handled */ public class SetupTestFail extends TestCase { @Override @Before public void setUp(){ fail("setUp()"); } @Test public void testSetUpFail(){ // Dummy to ensure there is a test to run } } apache-jmeter-2.8/src/junit/test/AfterAnnotatedTest.java0000644000175000017500000000222712032647221022723 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import static org.junit.Assert.fail; import org.junit.After; import org.junit.Test; /** * Test to demonstrate how @After failures are handled */ public class AfterAnnotatedTest { @After public void afterFail(){ fail("afterFail()"); } @Test public void afterTest(){ // Dummy to ensure there is a test to run } } apache-jmeter-2.8/src/junit/test/BeforeAnnotatedTest.java0000644000175000017500000000223312032647221023061 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package test; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; /** * Test to demonstrate how @Before failures are handled */ public class BeforeAnnotatedTest { @Before public void beginFail(){ fail("beginFail()"); } @Test public void beginTest(){ // Dummy to ensure there is a test to run } } apache-jmeter-2.8/src/junit/org/0000755000175000017500000000000012032647221016126 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/0000755000175000017500000000000012032647221017347 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/0000755000175000017500000000000012032647221020635 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/0000755000175000017500000000000012032647221022476 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/0000755000175000017500000000000012032647221023417 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/sampler/0000755000175000017500000000000012165514773025076 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/sampler/JUnitSampler.java0000644000175000017500000006170712032647221030315 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Enumeration; import junit.framework.AssertionFailedError; import junit.framework.Protectable; import junit.framework.TestCase; import junit.framework.TestFailure; import junit.framework.TestResult; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.Test.None; /** * * This is a basic implementation that runs a single test method of * a JUnit test case. The current implementation will use the string * constructor first. If the test class does not declare a string * constructor, the sampler will try empty constructor. */ public class JUnitSampler extends AbstractSampler implements ThreadListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; // Remember to change this when the class changes ... //++ JMX file attributes - do not change private static final String CLASSNAME = "junitSampler.classname"; private static final String CONSTRUCTORSTRING = "junitsampler.constructorstring"; private static final String METHOD = "junitsampler.method"; private static final String ERROR = "junitsampler.error"; private static final String ERRORCODE = "junitsampler.error.code"; private static final String FAILURE = "junitsampler.failure"; private static final String FAILURECODE = "junitsampler.failure.code"; private static final String SUCCESS = "junitsampler.success"; private static final String SUCCESSCODE = "junitsampler.success.code"; private static final String FILTER = "junitsampler.pkg.filter"; private static final String DOSETUP = "junitsampler.exec.setup"; private static final String APPEND_ERROR = "junitsampler.append.error"; private static final String APPEND_EXCEPTION = "junitsampler.append.exception"; private static final String JUNIT4 = "junitsampler.junit4"; private static final String CREATE_INSTANCE_PER_SAMPLE="junitsampler.createinstancepersample"; private static final boolean CREATE_INSTANCE_PER_SAMPLE_DEFAULT = false; //-- JMX file attributes - do not change private static final String SETUP = "setUp"; private static final String TEARDOWN = "tearDown"; // the Method objects for setUp (@Before) and tearDown (@After) methods // Will be null if not provided or not required private transient Method setUpMethod; private transient Method tearDownMethod; // The TestCase to run private transient TestCase testCase; // The test object, i.e. the instance of the class containing the test method // This is the same as testCase for JUnit3 tests // but different for JUnit4 tests which use a wrapper private transient Object testObject; // The method name to be invoked private transient String methodName; // The name of the class containing the method private transient String className; // The wrapper used to invoke the method private transient Protectable protectable; public JUnitSampler(){ super(); } /** * Method tries to get the setUp and tearDown method for the class * @param testObject */ private void initMethodObjects(Object testObject){ setUpMethod = null; tearDownMethod = null; if (!getDoNotSetUpTearDown()) { setUpMethod = getJunit4() ? getMethodWithAnnotation(testObject, Before.class) : getMethod(testObject, SETUP); tearDownMethod = getJunit4() ? getMethodWithAnnotation(testObject, After.class) : getMethod(testObject, TEARDOWN); } } /** * Sets the Classname attribute of the JavaConfig object * * @param classname * the new Classname value */ public void setClassname(String classname) { setProperty(CLASSNAME, classname); } /** * Gets the Classname attribute of the JavaConfig object * * @return the Classname value */ public String getClassname() { return getPropertyAsString(CLASSNAME); } /** * Set the string label used to create an instance of the * test with the string constructor. * @param constr */ public void setConstructorString(String constr) { setProperty(CONSTRUCTORSTRING,constr); } /** * get the string passed to the string constructor */ public String getConstructorString() { return getPropertyAsString(CONSTRUCTORSTRING); } /** * Return the name of the method to test */ public String getMethod(){ return getPropertyAsString(METHOD); } /** * Method should add the JUnit testXXX method to the list at * the end, since the sequence matters. * @param methodName */ public void setMethod(String methodName){ setProperty(METHOD,methodName); } /** * get the success message */ public String getSuccess(){ return getPropertyAsString(SUCCESS); } /** * set the success message * @param success */ public void setSuccess(String success){ setProperty(SUCCESS,success); } /** * get the success code defined by the user */ public String getSuccessCode(){ return getPropertyAsString(SUCCESSCODE); } /** * set the succes code. the success code should * be unique. * @param code */ public void setSuccessCode(String code){ setProperty(SUCCESSCODE,code); } /** * get the failure message */ public String getFailure(){ return getPropertyAsString(FAILURE); } /** * set the failure message * @param fail */ public void setFailure(String fail){ setProperty(FAILURE,fail); } /** * The failure code is used by other components */ public String getFailureCode(){ return getPropertyAsString(FAILURECODE); } /** * Provide some unique code to denote a type of failure * @param code */ public void setFailureCode(String code){ setProperty(FAILURECODE,code); } /** * return the descriptive error for the test */ public String getError(){ return getPropertyAsString(ERROR); } /** * provide a descriptive error for the test method. For * a description of the difference between failure and * error, please refer to the following url * http://junit.sourceforge.net/doc/faq/faq.htm#tests_9 * @param error */ public void setError(String error){ setProperty(ERROR,error); } /** * return the error code for the test method. it should * be an unique error code. */ public String getErrorCode(){ return getPropertyAsString(ERRORCODE); } /** * provide an unique error code for when the test * does not pass the assert test. * @param code */ public void setErrorCode(String code){ setProperty(ERRORCODE,code); } /** * return the comma separated string for the filter */ public String getFilterString(){ return getPropertyAsString(FILTER); } /** * set the filter string in comman separated format * @param text */ public void setFilterString(String text){ setProperty(FILTER,text); } /** * if the sample shouldn't call setup/teardown, the * method returns true. It's meant for onetimesetup * and onetimeteardown. */ public boolean getDoNotSetUpTearDown(){ return getPropertyAsBoolean(DOSETUP); } /** * set the setup/teardown option * @param setup */ public void setDoNotSetUpTearDown(boolean setup){ setProperty(DOSETUP,String.valueOf(setup)); } /** * If append error is not set, by default it is set to false, * which means users have to explicitly set the sampler to * append the assert errors. Because of how junit works, there * should only be one error */ public boolean getAppendError() { return getPropertyAsBoolean(APPEND_ERROR,false); } /** * Set whether to append errors or not. * * @param error the setting to apply */ public void setAppendError(boolean error) { setProperty(APPEND_ERROR,String.valueOf(error)); } /** * If append exception is not set, by default it is set to false. * Users have to explicitly set it to true to see the exceptions * in the result tree. */ public boolean getAppendException() { return getPropertyAsBoolean(APPEND_EXCEPTION,false); } /** * Set whether to append exceptions or not. * * @param exc the setting to apply. */ public void setAppendException(boolean exc) { setProperty(APPEND_EXCEPTION,String.valueOf(exc)); } /** * Check if JUnit4 (annotations) are to be used instead of * the JUnit3 style (TestClass and specific method names) * * @return true if JUnit4 (annotations) are to be used. * Default is false. */ public boolean getJunit4() { return getPropertyAsBoolean(JUNIT4, false); } /** * Set whether to use JUnit4 style or not. * @param junit4 true if JUnit4 style is to be used. */ public void setJunit4(boolean junit4) { setProperty(JUNIT4, junit4, false); } /** {@inheritDoc} */ public SampleResult sample(Entry entry) { if(getCreateOneInstancePerSample()) { initializeTestObject(); } SampleResult sresult = new SampleResult(); sresult.setSampleLabel(getName());// Bug 41522 - don't use rlabel here sresult.setSamplerData(className + "." + methodName); sresult.setDataType(SampleResult.TEXT); // Assume success sresult.setSuccessful(true); sresult.setResponseMessage(getSuccess()); sresult.setResponseCode(getSuccessCode()); if (this.testCase != null){ // create a new TestResult TestResult tr = new TestResult(); final TestCase theClazz = this.testCase; try { if (setUpMethod != null){ setUpMethod.invoke(this.testObject,new Object[0]); } sresult.sampleStart(); tr.startTest(this.testCase); // Do not use TestCase.run(TestResult) method, since it will // call setUp and tearDown. Doing that will result in calling // the setUp and tearDown method twice and the elapsed time // will include setup and teardown. tr.runProtected(theClazz, protectable); tr.endTest(this.testCase); sresult.sampleEnd(); if (tearDownMethod != null){ tearDownMethod.invoke(testObject,new Object[0]); } } catch (InvocationTargetException e) { Throwable cause = e.getCause(); if (cause instanceof AssertionFailedError){ tr.addFailure(theClazz, (AssertionFailedError) cause); } else if (cause instanceof AssertionError) { // Convert JUnit4 failure to Junit3 style AssertionFailedError afe = new AssertionFailedError(cause.toString()); // copy the original stack trace afe.setStackTrace(cause.getStackTrace()); tr.addFailure(theClazz, afe); } else if (cause != null) { tr.addError(theClazz, cause); } else { tr.addError(theClazz, e); } } catch (IllegalAccessException e) { tr.addError(theClazz, e); } catch (IllegalArgumentException e) { tr.addError(theClazz, e); } if ( !tr.wasSuccessful() ){ sresult.setSuccessful(false); StringBuilder buf = new StringBuilder(); StringBuilder buftrace = new StringBuilder(); Enumeration en; if (getAppendError()) { en = tr.failures(); if (en.hasMoreElements()){ sresult.setResponseCode(getFailureCode()); buf.append( getFailure() ); buf.append("\n"); } while (en.hasMoreElements()){ TestFailure item = en.nextElement(); buf.append( "Failure -- "); buf.append( item.toString() ); buf.append("\n"); buftrace.append( "Failure -- "); buftrace.append( item.toString() ); buftrace.append("\n"); buftrace.append( "Trace -- "); buftrace.append( item.trace() ); } en = tr.errors(); if (en.hasMoreElements()){ sresult.setResponseCode(getErrorCode()); buf.append( getError() ); buf.append("\n"); } while (en.hasMoreElements()){ TestFailure item = en.nextElement(); buf.append( "Error -- "); buf.append( item.toString() ); buf.append("\n"); buftrace.append( "Error -- "); buftrace.append( item.toString() ); buftrace.append("\n"); buftrace.append( "Trace -- "); buftrace.append( item.trace() ); } } sresult.setResponseMessage(buf.toString()); sresult.setResponseData(buftrace.toString(), null); } } else { // we should log a warning, but allow the test to keep running sresult.setSuccessful(false); // this should be externalized to the properties sresult.setResponseMessage("failed to create an instance of the class"); sresult.setResponseCode(getErrorCode()); } return sresult; } /** * If the method is not able to create a new instance of the * class, it returns null and logs all the exceptions at * warning level. */ private static Object getClassInstance(String className, String label){ Object testclass = null; if (className != null){ Constructor con = null; Constructor strCon = null; Class theclazz = null; Object[] strParams = null; Object[] params = null; try { theclazz = Thread.currentThread().getContextClassLoader().loadClass(className.trim()); } catch (ClassNotFoundException e) { log.warn("ClassNotFoundException:: " + e.getMessage()); } if (theclazz != null) { // first we see if the class declares a string // constructor. if it is doesn't we look for // empty constructor. try { strCon = theclazz.getDeclaredConstructor( new Class[] {String.class}); // we have to check and make sure the constructor is // accessible. if we didn't it would throw an exception // and cause a NPE. if (label == null || label.length() == 0) { label = className; } if (strCon.getModifiers() == Modifier.PUBLIC) { strParams = new Object[]{label}; } else { strCon = null; } } catch (NoSuchMethodException e) { log.info("String constructor:: " + e.getMessage()); } try { con = theclazz.getDeclaredConstructor(new Class[0]); if (con != null){ params = new Object[]{}; } } catch (NoSuchMethodException e) { log.info("Empty constructor:: " + e.getMessage()); } try { // if the string constructor is not null, we use it. // if the string constructor is null, we use the empty // constructor to get a new instance if (strCon != null) { testclass = strCon.newInstance(strParams); } else if (con != null){ testclass = con.newInstance(params); } } catch (InvocationTargetException e) { log.warn(e.getMessage()); } catch (InstantiationException e) { log.info(e.getMessage()); } catch (IllegalAccessException e) { log.info(e.getMessage()); } } } return testclass; } /** * Get a method. * @param clazz the classname (may be null) * @param method the method name (may be null) * @return the method or null if an error occurred * (or either parameter is null) */ private Method getMethod(Object clazz, String method){ if (clazz != null && method != null){ try { return clazz.getClass().getMethod(method,new Class[0]); } catch (NoSuchMethodException e) { log.warn(e.getMessage()); } } return null; } private Method getMethodWithAnnotation(Object clazz, Class annotation) { if(null != clazz && null != annotation) { for(Method m : clazz.getClass().getMethods()) { if(m.isAnnotationPresent(annotation)) { return m; } } } return null; } /* * Wrapper to convert a JUnit4 class into a TestCase * * TODO - work out how to convert JUnit4 assertions so they are treated as failures rather than errors */ private class AnnotatedTestCase extends TestCase { private final Method method; private final Class expectedException; private final long timeout; public AnnotatedTestCase(Method method, Class expectedException2, long timeout) { this.method = method; this.expectedException = expectedException2; this.timeout = timeout; } @Override protected void runTest() throws Throwable { try { long start = System.currentTimeMillis(); method.invoke(testObject, (Object[])null); if (expectedException != None.class) { throw new AssertionFailedError( "No error was generated for a test case which specifies an error."); } if (timeout > 0){ long elapsed = System.currentTimeMillis() - start; if (elapsed > timeout) { throw new AssertionFailedError("Test took longer than the specified timeout."); } } } catch (InvocationTargetException e) { Throwable thrown = e.getCause(); if (thrown == null) { // probably should not happen throw e; } if (expectedException == None.class){ // Convert JUnit4 AssertionError failures to JUnit3 style so // will be treated as failure rather than error. if (thrown instanceof AssertionError && !(thrown instanceof AssertionFailedError)){ AssertionFailedError afe = new AssertionFailedError(thrown.toString()); // copy the original stack trace afe.setStackTrace(thrown.getStackTrace()); throw afe; } throw thrown; } if (!expectedException.isAssignableFrom(thrown.getClass())){ throw new AssertionFailedError("The wrong exception was thrown from the test case"); } } } } public void threadFinished() { } /** * Set up all variables that don't change between samples. */ public void threadStarted() { testObject = null; testCase = null; methodName = getMethod(); className = getClassname(); protectable = null; if(!getCreateOneInstancePerSample()) { // NO NEED TO INITIALIZE WHEN getCreateOneInstancePerSample // is true cause it will be done in sample initializeTestObject(); } } /** * Initialize test object */ private void initializeTestObject() { String rlabel = getConstructorString(); if (rlabel.length()== 0) { rlabel = JUnitSampler.class.getName(); } this.testObject = getClassInstance(className, rlabel); if (this.testObject != null){ initMethodObjects(this.testObject); final Method m = getMethod(this.testObject,methodName); if (getJunit4()){ Class expectedException = None.class; long timeout = 0; Test annotation = m.getAnnotation(Test.class); if(null != annotation) { expectedException = annotation.expected(); timeout = annotation.timeout(); } final AnnotatedTestCase at = new AnnotatedTestCase(m, expectedException, timeout); testCase = at; protectable = new Protectable() { public void protect() throws Throwable { at.runTest(); } }; } else { this.testCase = (TestCase) this.testObject; final Object theClazz = this.testObject; // Must be final to create instance protectable = new Protectable() { public void protect() throws Throwable { try { m.invoke(theClazz,new Object[0]); } catch (InvocationTargetException e) { /* * Calling a method via reflection results in wrapping any * Exceptions in ITE; unwrap these here so runProtected can * allocate them correctly. */ Throwable t = e.getCause(); if (t != null) { throw t; } throw e; } } }; } if (this.testCase != null){ this.testCase.setName(methodName); } } } /** * * @param createOneInstancePerSample */ public void setCreateOneInstancePerSample(boolean createOneInstancePerSample) { this.setProperty(CREATE_INSTANCE_PER_SAMPLE, createOneInstancePerSample, CREATE_INSTANCE_PER_SAMPLE_DEFAULT); } /** * * @return boolean create New Instance For Each Call */ public boolean getCreateOneInstancePerSample() { return getPropertyAsBoolean(CREATE_INSTANCE_PER_SAMPLE, CREATE_INSTANCE_PER_SAMPLE_DEFAULT); } }apache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/control/0000755000175000017500000000000012032647221025077 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/control/gui/0000755000175000017500000000000012165514773025677 5ustar ebourgebourgapache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/control/gui/JUnitTestSamplerGui.java0000644000175000017500000003642612032647221032423 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.control.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.File; import java.io.IOException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import junit.framework.TestCase; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.java.sampler.JUnitSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; /** * The JUnitTestSamplerGui class provides the user interface * for the {@link JUnitSampler}. * */ public class JUnitTestSamplerGui extends AbstractSamplerGui implements ChangeListener, ActionListener, ItemListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String TESTMETHOD_PREFIX = "test"; //$NON-NLS-1$ // Names of JUnit3 methods private static final String ONETIMESETUP = "oneTimeSetUp"; //$NON-NLS-1$ private static final String ONETIMETEARDOWN = "oneTimeTearDown"; //$NON-NLS-1$ private static final String SUITE = "suite"; //$NON-NLS-1$ private static final String[] SPATHS; static { String paths[]; String ucp = JMeterUtils.getProperty("user.classpath"); if (ucp!=null){ String parts[] = ucp.split(File.pathSeparator); paths = new String[parts.length+1]; paths[0] = JMeterUtils.getJMeterHome() + "/lib/junit/"; //$NON-NLS-1$ System.arraycopy(parts, 0, paths, 1, parts.length); } else { paths = new String[]{ JMeterUtils.getJMeterHome() + "/lib/junit/" //$NON-NLS-1$ }; } SPATHS = paths; } private JLabeledTextField constructorLabel = new JLabeledTextField( JMeterUtils.getResString("junit_constructor_string")); //$NON-NLS-1$ private JLabel methodLabel = new JLabel( JMeterUtils.getResString("junit_test_method")); //$NON-NLS-1$ private JLabeledTextField successMsg = new JLabeledTextField( JMeterUtils.getResString("junit_success_msg")); //$NON-NLS-1$ private JLabeledTextField failureMsg = new JLabeledTextField( JMeterUtils.getResString("junit_failure_msg")); //$NON-NLS-1$ private JLabeledTextField errorMsg = new JLabeledTextField( JMeterUtils.getResString("junit_error_msg")); //$NON-NLS-1$ private JLabeledTextField successCode = new JLabeledTextField( JMeterUtils.getResString("junit_success_code")); //$NON-NLS-1$ private JLabeledTextField failureCode = new JLabeledTextField( JMeterUtils.getResString("junit_failure_code")); //$NON-NLS-1$ private JLabeledTextField errorCode = new JLabeledTextField( JMeterUtils.getResString("junit_error_code")); //$NON-NLS-1$ private JLabeledTextField filterpkg = new JLabeledTextField( JMeterUtils.getResString("junit_pkg_filter")); //$NON-NLS-1$ private JCheckBox doSetup = new JCheckBox(JMeterUtils.getResString("junit_do_setup_teardown")); //$NON-NLS-1$ private JCheckBox appendError = new JCheckBox(JMeterUtils.getResString("junit_append_error")); //$NON-NLS-1$ private JCheckBox appendExc = new JCheckBox(JMeterUtils.getResString("junit_append_exception")); //$NON-NLS-1$ private JCheckBox junit4 = new JCheckBox(JMeterUtils.getResString("junit_junit4")); //$NON-NLS-1$ private JCheckBox createInstancePerSample = new JCheckBox(JMeterUtils.getResString("junit_create_instance_per_sample")); //$NON-NLS-1$ /** A combo box allowing the user to choose a test class. */ private JComboBox classnameCombo; private JComboBox methodName; private final transient ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); // Potentially expensive; do it once /** * Constructor for JUnitTestSamplerGui */ public JUnitTestSamplerGui() { super(); init(); } public String getLabelResource() { return "junit_request"; //$NON-NLS-1$ } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); add(createClassPanel(), BorderLayout.CENTER); } @SuppressWarnings("unchecked") private void setupClasslist(){ classnameCombo.removeAllItems(); methodName.removeAllItems(); try { List classList; if (junit4.isSelected()){ classList = ClassFinder.findAnnotatedClasses(SPATHS, new Class[] {Test.class}, false); } else { classList = ClassFinder.findClassesThatExtend(SPATHS, new Class[] { TestCase.class }); } ClassFilter filter = new ClassFilter(); filter.setPackges(JOrphanUtils.split(filterpkg.getText(),",")); //$NON-NLS-1$ // change the classname drop down Object[] clist = filter.filterArray(classList); for (int idx=0; idx < clist.length; idx++) { classnameCombo.addItem(clist[idx]); } } catch (IOException e) { log.error("Exception getting interfaces.", e); } } private JPanel createClassPanel() { JLabel label = new JLabel(JMeterUtils.getResString("protocol_java_classname")); //$NON-NLS-1$ classnameCombo = new JComboBox(); classnameCombo.addActionListener(this); classnameCombo.setEditable(false); label.setLabelFor(classnameCombo); methodName = new JComboBox(); methodName.addActionListener(this); methodLabel.setLabelFor(methodName); setupClasslist(); VerticalPanel panel = new VerticalPanel(); panel.add(junit4); junit4.addItemListener(this); panel.add(filterpkg); filterpkg.addChangeListener(this); panel.add(label); panel.add(classnameCombo); constructorLabel.setText(""); panel.add(constructorLabel); panel.add(methodLabel); panel.add(methodName); panel.add(successMsg); panel.add(successCode); panel.add(failureMsg); panel.add(failureCode); panel.add(errorMsg); panel.add(errorCode); panel.add(doSetup); panel.add(appendError); panel.add(appendExc); panel.add(createInstancePerSample); return panel; } private void initGui(){ appendError.setSelected(false); appendExc.setSelected(false); createInstancePerSample.setSelected(false); doSetup.setSelected(false); junit4.setSelected(false); filterpkg.setText(""); //$NON-NLS-1$ constructorLabel.setText(""); //$NON-NLS-1$ successCode.setText(JMeterUtils.getResString("junit_success_default_code")); //$NON-NLS-1$ successMsg.setText(JMeterUtils.getResString("junit_success_default_msg")); //$NON-NLS-1$ failureCode.setText(JMeterUtils.getResString("junit_failure_default_code")); //$NON-NLS-1$ failureMsg.setText(JMeterUtils.getResString("junit_failure_default_msg")); //$NON-NLS-1$ errorMsg.setText(JMeterUtils.getResString("junit_error_default_msg")); //$NON-NLS-1$ errorCode.setText(JMeterUtils.getResString("junit_error_default_code")); //$NON-NLS-1$ } /** {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); initGui(); } /** {@inheritDoc} */ public TestElement createTestElement() { JUnitSampler sampler = new JUnitSampler(); modifyTestElement(sampler); return sampler; } /** {@inheritDoc} */ public void modifyTestElement(TestElement el) { JUnitSampler sampler = (JUnitSampler)el; configureTestElement(sampler); if (classnameCombo.getSelectedItem() != null && classnameCombo.getSelectedItem() instanceof String) { sampler.setClassname((String)classnameCombo.getSelectedItem()); } else { sampler.setClassname(null); } sampler.setConstructorString(constructorLabel.getText()); if (methodName.getSelectedItem() != null) { Object mobj = methodName.getSelectedItem(); sampler.setMethod((String)mobj); } else { sampler.setMethod(null); } sampler.setFilterString(filterpkg.getText()); sampler.setSuccess(successMsg.getText()); sampler.setSuccessCode(successCode.getText()); sampler.setFailure(failureMsg.getText()); sampler.setFailureCode(failureCode.getText()); sampler.setError(errorMsg.getText()); sampler.setErrorCode(errorCode.getText()); sampler.setDoNotSetUpTearDown(doSetup.isSelected()); sampler.setAppendError(appendError.isSelected()); sampler.setAppendException(appendExc.isSelected()); sampler.setCreateOneInstancePerSample(createInstancePerSample.isSelected()); sampler.setJunit4(junit4.isSelected()); } /** {@inheritDoc} */ @Override public void configure(TestElement el) { super.configure(el); JUnitSampler sampler = (JUnitSampler)el; junit4.setSelected(sampler.getJunit4()); filterpkg.setText(sampler.getFilterString()); classnameCombo.setSelectedItem(sampler.getClassname()); setupMethods(); methodName.setSelectedItem(sampler.getMethod()); constructorLabel.setText(sampler.getConstructorString()); if (sampler.getSuccessCode().length() > 0) { successCode.setText(sampler.getSuccessCode()); } else { successCode.setText(JMeterUtils.getResString("junit_success_default_code")); //$NON-NLS-1$ } if (sampler.getSuccess().length() > 0) { successMsg.setText(sampler.getSuccess()); } else { successMsg.setText(JMeterUtils.getResString("junit_success_default_msg")); //$NON-NLS-1$ } if (sampler.getFailureCode().length() > 0) { failureCode.setText(sampler.getFailureCode()); } else { failureCode.setText(JMeterUtils.getResString("junit_failure_default_code")); //$NON-NLS-1$ } if (sampler.getFailure().length() > 0) { failureMsg.setText(sampler.getFailure()); } else { failureMsg.setText(JMeterUtils.getResString("junit_failure_default_msg")); //$NON-NLS-1$ } if (sampler.getError().length() > 0) { errorMsg.setText(sampler.getError()); } else { errorMsg.setText(JMeterUtils.getResString("junit_error_default_msg")); //$NON-NLS-1$ } if (sampler.getErrorCode().length() > 0) { errorCode.setText(sampler.getErrorCode()); } else { errorCode.setText(JMeterUtils.getResString("junit_error_default_code")); //$NON-NLS-1$ } doSetup.setSelected(sampler.getDoNotSetUpTearDown()); appendError.setSelected(sampler.getAppendError()); appendExc.setSelected(sampler.getAppendException()); createInstancePerSample.setSelected(sampler.getCreateOneInstancePerSample()); } private void setupMethods(){ String className = ((String) classnameCombo.getSelectedItem()); methodName.removeAllItems(); if (className != null) { try { // Don't instantiate class Class testClass = Class.forName(className, false, contextClassLoader); String [] names = getMethodNames(testClass); for (int idx=0; idx < names.length; idx++){ methodName.addItem(names[idx]); } methodName.repaint(); } catch (ClassNotFoundException e) { } } } private String[] getMethodNames(Class clazz) { Method[] meths = clazz.getMethods(); List list = new ArrayList(); for (int idx=0; idx < meths.length; idx++){ final Method method = meths[idx]; final String name = method.getName(); if (junit4.isSelected()){ if (method.isAnnotationPresent(Test.class) || method.isAnnotationPresent(BeforeClass.class) || method.isAnnotationPresent(AfterClass.class)) { list.add(name); } } else { if (name.startsWith(TESTMETHOD_PREFIX) || name.equals(ONETIMESETUP) || name.equals(ONETIMETEARDOWN) || name.equals(SUITE)) { list.add(name); } } } if (list.size() > 0){ return list.toArray(new String[list.size()]); } return new String[0]; } /** * Handle action events for this component. This method currently handles * events for the classname combo box, and sets up the associated method names. * * @param evt the ActionEvent to be handled */ public void actionPerformed(ActionEvent evt) { if (evt.getSource() == classnameCombo) { setupMethods(); } } /** * Handle change events: currently handles events for the JUnit4 * checkbox, and sets up the relevant class names. */ public void itemStateChanged(ItemEvent event) { if (event.getItem() == junit4){ setupClasslist(); } } /** * the current implementation checks to see if the source * of the event is the filterpkg field. */ public void stateChanged(ChangeEvent event) { if ( event.getSource() == filterpkg) { setupClasslist(); } } } apache-jmeter-2.8/src/junit/org/apache/jmeter/protocol/java/control/gui/ClassFilter.java0000644000175000017500000000346412032647221030750 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.control.gui; import java.util.ArrayList; import java.util.List; class ClassFilter { private String[] pkgs = new String[0]; ClassFilter() { super(); } void setPackges(String[] pk) { this.pkgs = pk; } private boolean include(String text) { if (pkgs.length == 0) return true; // i.e. no filter boolean inc = false; for (int idx=0; idx < pkgs.length; idx++) { if (text.startsWith(pkgs[idx])){ inc = true; break; } } return inc; } Object[] filterArray(List items) { ArrayList newlist = new ArrayList(); for (String item : items) { if (include(item)) { newlist.add(item); } } if (newlist.size() > 0) { return newlist.toArray(); } else { return new Object[0]; } } int size(){ return pkgs.length; } } apache-jmeter-2.8/src/components/0000755000175000017500000000000012032647216016377 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/0000755000175000017500000000000012032647216017166 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/0000755000175000017500000000000012032647216020407 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/0000755000175000017500000000000012032647217021676 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/timers/0000755000175000017500000000000012165514773023210 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerResources_de.properties0000644000175000017500000000204312032647217031576 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. groupSize.displayName=Anzahl der gruppierten, Simulations-Benutzer groupSize.shortDescription=Geben sie die Anzahl der Simulations-Benutzer an, die den synchronisierten Block ausl\u00F6sen (Vorgabe 0 \= alle Benutzer) grouping.displayName=Gruppierung ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_zh_TW.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_zh_TW.pro0000644000175000017500000000226712032647217033624 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! delay.displayName=\u6BCF\u500B\u53D6\u6A23\u9593\u7684\u5EF6\u9072\u6642\u9593 displayName=\u56FA\u5B9A\u6642\u9694 throughput.displayName=\u76EE\u6A19\u8655\u7406\u91CF(\u6BCF\u5206\u9418\u53D6\u6A23\u6578) throughput.shortDescription=\u5728\u6240\u6709\u53D6\u6A23\u4E2D\uFF0C\u6BCF\u57F7\u884C\u7DD2\u6BCF\u5206\u9418\u5167\u7684\u6700\u5927\u53D6\u6A23\u6578 apache-jmeter-2.8/src/components/org/apache/jmeter/timers/UniformRandomTimer.java0000644000175000017500000000273612032647217027635 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; import org.apache.jmeter.util.JMeterUtils; /** * This class implements those methods needed by RandomTimer to be instantiable * and implements a random delay with an average value and a uniformly * distributed variation. * */ public class UniformRandomTimer extends RandomTimer implements Serializable { private static final long serialVersionUID = 240L; @Override public long delay() { return (long) Math.abs((this.random.nextDouble() * getRange()) + super.delay()); } @Override public String toString() { return JMeterUtils.getResString("uniform_timer_memo"); //$NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimerBeanInfo.java0000644000175000017500000000203212032647217030301 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import org.apache.jmeter.util.BeanShellBeanInfoSupport; public class BeanShellTimerBeanInfo extends BeanShellBeanInfoSupport { public BeanShellTimerBeanInfo() { super(BeanShellTimer.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerResources.properties0000644000175000017500000000206212032647217031127 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Synchronizing Timer grouping.displayName=Grouping groupSize.displayName=Number of Simulated Users to Group by groupSize.shortDescription=Define how many simulated users trigger the release of the synchronizing block (default value of '0' means all users)././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources.propertie0000644000175000017500000000307212032647217033715 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. calcMode.1=this thread only calcMode.2=all active threads calcMode.3=all active threads in current thread group calcMode.4=all active threads (shared) calcMode.5=all active threads in current thread group (shared) calcMode.displayName=Calculate Throughput based on calcMode.shortDescription=The Constant Throughput Timer used to delay each thread as though it was the only thread in the test. Now, it calculates the delay taking into account the number of active threads in the test or the thread group. delay.displayName=Delay before each affected sampler displayName=Constant Throughput Timer throughput.displayName=Target throughput (in samples per minute) throughput.shortDescription=Maximum number of samples you want to obtain per minute, per thread, from all affected samplers. ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_tr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_tr.proper0000644000175000017500000000422112032647217033715 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! calcMode.1=sadece bu i\u015F par\u00E7ac\u0131\u011F\u0131 calcMode.2=b\u00FCt\u00FCn aktif i\u015F par\u00E7ac\u0131klar\u0131 calcMode.3=bu i\u015F par\u00E7ac\u0131\u011F\u0131 grubundaki t\u00FCm aktif i\u015F par\u00E7ac\u0131klar\u0131 calcMode.4=t\u00FCm i\u015F par\u00E7ac\u0131klar\u0131 (payla\u015F\u0131ml\u0131) calcMode.5=bu i\u015F pa\u00E7ac\u0131\u011F\u0131 grubundaki t\u00FCm aktif i\u015F par\u00E7ac\u0131klar\u0131 (payla\u015F\u0131ml\u0131) calcMode.displayName=transfer oran\u0131 hesab\u0131n\u0131n yap\u0131laca\u011F\u0131 temel calcMode.shortDescription=Sabit Transfer Oran\u0131 Zamanlay\u0131c\u0131 eskiden her bir i\u015F par\u00E7ac\u0131\u011F\u0131 i\u00E7in, testteki tek i\u015F par\u00E7ac\u0131\u011F\u0131ym\u0131\u015Fcas\u0131na gecikirken; \u015Fimdi gecikme hesab\u0131 testteki veya i\u015F par\u00E7ac\u0131\u011F\u0131 grubundaki aktif i\u015F par\u00E7ac\u0131\u011F\u0131 say\u0131s\u0131na g\u00F6re yap\u0131lmakta. delay.displayName=Etkilenen her \u00F6rnekleyiciden \u00F6nce gecikme displayName=Sabit Transfer Oran\u0131 Zamanlay\u0131c\u0131 throughput.displayName=Hedeflenen transfer oran\u0131 (\u00F6rnek/dak.) throughput.shortDescription=Dakika, i\u015F par\u00E7ac\u0131\u011F\u0131 ve etkilenen \u00F6rnekleyici ba\u015F\u0131na istedi\u011Finiz en fazla \u00F6rnek say\u0131s\u0131. apache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantTimer.java0000644000175000017500000000551712032647217026646 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.util.JMeterUtils; /** * This class implements a constant timer with its own panel and fields for * value update and user interaction. * */ public class ConstantTimer extends AbstractTestElement implements Timer, Serializable, LoopIterationListener { private static final long serialVersionUID = 240L; public static final String DELAY = "ConstantTimer.delay"; //$NON-NLS-1$ private long delay = 0; /** * No-arg constructor. */ public ConstantTimer() { } /** * Set the delay for this timer. * */ public void setDelay(String delay) { setProperty(DELAY, delay); } /** * Set the range (not used for this timer). * */ public void setRange(double range) { // NOOP } /** * Get the delay value for display. * * @return the delay value for display. */ public String getDelay() { return getPropertyAsString(DELAY); } /** * Retrieve the range (not used for this timer). * * @return the range (always zero for this timer). */ public double getRange() { return 0; } /** * Retrieve the delay to use during test execution. * * @return the delay. */ public long delay() { return delay; } /** * Provide a description of this timer class. * * @return the description of this timer class. */ @Override public String toString() { return JMeterUtils.getResString("constant_timer_memo"); //$NON-NLS-1$ } /** * Gain access to any variables that have been defined. * * @see LoopIterationListener#iterationStart(LoopIterationEvent) */ public void iterationStart(LoopIterationEvent event) { delay = getPropertyAsLong(DELAY); } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimerResources_tr.properties0000644000175000017500000000274112032647217032561 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=BeanShell Zamanlay\u0131c\u0131 filename.displayName=Dosya Ad\u0131 filename.shortDescription=BeanShell beti\u011Fi dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) filenameGroup.displayName=Betik dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) parameterGroup.displayName=BeanShell'e ge\u00E7ilecek parametreler (\=> Dizgi(string) Parametreler ve String []bsh.args) parameters.displayName=Parametreler parameters.shortDescription=BeanShell'e ge\u00E7ilecek parametreler (dosya ya da betik) script.shortDescription=Gecikmeyi yaratacak BeanShell beti\u011Fi scripting.displayName=Betik (de\u011Fi\u015Fkenler\: ctx vars props log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/GaussianRandomTimer.java0000644000175000017500000000274012032647217027763 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; import org.apache.jmeter.util.JMeterUtils; /** * This class implements those methods needed by RandomTimer to be instantiable * and implements a random delay with an average value and a gaussian * distributed variation. * */ public class GaussianRandomTimer extends RandomTimer implements Serializable { private static final long serialVersionUID = 240L; @Override public long delay() { return (long) Math.abs((this.random.nextGaussian() * getRange()) + super.delay()); } @Override public String toString() { return JMeterUtils.getResString("gaussian_timer_memo"); //$NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimerResources_pt_BR.properties0000644000175000017500000000302512032647217033136 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Temporizador BeanShell filename.displayName=Nome do Arquivo filename.shortDescription=Arquivo de script do BeanShell (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao BeanShell (\=> String Parameters e String []bsh.args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao BeanShell (arquivo ou script) resetGroup.displayName=Reiniciar bsh.Interpreter antes de cada chamada. resetInterpreter.displayName=Reiniciar Interpretador script.displayName=\ script.shortDescription=Script BeanShell que ir\u00E1 gerar o atraso scripting.displayName=Script (vari\u00E1veis\: ctx vars props log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BSFTimerBeanInfo.java0000644000175000017500000000177412032647217027072 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import org.apache.jmeter.util.BSFBeanInfoSupport; public class BSFTimerBeanInfo extends BSFBeanInfoSupport { public BSFTimerBeanInfo() { super(BSFTimer.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/JSR223TimerResources.properties0000644000175000017500000000307012032647217031100 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JSR223 Timer scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of JSR223 language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate JSR223 language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BSFTimer.java0000644000175000017500000000370012032647217025457 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BSFTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class BSFTimer extends BSFTestElement implements Cloneable, Timer, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; /** {@inheritDoc} */ public long delay() { long delay = 0; BSFManager mgr = null; try { mgr = getManager(); Object o = evalFileOrScript(mgr); if (o == null) { log.warn("Script did not return a value"); return 0; } delay = Long.parseLong(o.toString()); } catch (NumberFormatException e) { log.warn("Problem in BSF script "+e); } catch (BSFException e) { log.warn("Problem in BSF script "+e); } finally { if(mgr != null) { mgr.terminate(); } } return delay; } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_es.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_es.proper0000644000175000017500000000311012032647217033673 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! calcMode.1=solamente este hilo calcMode.2=todos los hilos activos calcMode.3=todos los hilos activos en el grupo de hilos actual calcMode.displayName=Calcular el rendimiento basado en calcMode.shortDescription=El Temporizador para Rendimiento Constante introduc\u00EDa un retardo como si este fuera el unico hilo en la prueba. Ahora calcula el retardo teniendo en cuenta el n\u00FAmero de hilos activos en la prueba o el grupo de hilos. delay.displayName=Retardo antes de cada muestreador afectado displayName=Temporizador de Rendimiento Constante throughput.displayName=Rendimiento objetivo (en muestras por minuto) throughput.shortDescription=N\u00FAmero m\u00E1ximo de muestras que quiere obtener por minuto, por hilo, desde todos los muestreadores afectados. apache-jmeter-2.8/src/components/org/apache/jmeter/timers/JSR223Timer.java0000644000175000017500000000377012032647217025741 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import java.io.IOException; import javax.script.ScriptEngine; import javax.script.ScriptException; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.JSR223TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JSR223Timer extends JSR223TestElement implements Cloneable, Timer, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; /** {@inheritDoc} */ public long delay() { long delay = 0; try { ScriptEngine scriptEngine = getScriptEngine(); Object o = processFileOrScript(scriptEngine, null); if (o == null) { log.warn("Script did not return a value"); return 0; } delay = Long.parseLong(o.toString()); } catch (NumberFormatException e) { log.warn("Problem in JSR223 script ", e); } catch (IOException e) { log.warn("Problem in JSR223 script ", e); } catch (ScriptException e) { log.warn("Problem in JSR223 script ", e); } return delay; } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/PoissonRandomTimer.java0000644000175000017500000002745612032647217027656 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; import org.apache.jmeter.util.JMeterUtils; /** * This class implements those methods needed by RandomTimer to be instantiable * and implements a random delay with an average value and a Poisson * distributed variation. * */ public class PoissonRandomTimer extends RandomTimer implements Serializable { /** * */ private static final long serialVersionUID = 3514708226113231004L; /** * */ private static final double[] LOG_FACTORIAL = { 0.000000000000000, 0.000000000000000, 0.693147180559945, 1.791759469228055, 3.178053830347946, 4.787491742782046, 6.579251212010101, 8.525161361065415, 10.604602902745251, 12.801827480081469, 15.104412573075516, 17.502307845873887, 19.987214495661885, 22.552163853123421, 25.191221182738683, 27.899271383840894, 30.671860106080675, 33.505073450136891, 36.395445208033053, 39.339884187199495, 42.335616460753485, 45.380138898476908, 48.471181351835227, 51.606675567764377, 54.784729398112319, 58.003605222980518, 61.261701761002001, 64.557538627006323, 67.889743137181526, 71.257038967168000, 74.658236348830158, 78.092223553315307, 81.557959456115029, 85.054467017581516, 88.580827542197682, 92.136175603687079, 95.719694542143202, 99.330612454787428, 102.968198614513810, 106.631760260643450, 110.320639714757390, 114.034211781461690, 117.771881399745060, 121.533081515438640, 125.317271149356880, 129.123933639127240, 132.952575035616290, 136.802722637326350, 140.673923648234250, 144.565743946344900, 148.477766951773020, 152.409592584497350, 156.360836303078800, 160.331128216630930, 164.320112263195170, 168.327445448427650, 172.352797139162820, 176.395848406997370, 180.456291417543780, 184.533828861449510, 188.628173423671600, 192.739047287844900, 196.866181672889980, 201.009316399281570, 205.168199482641200, 209.342586752536820, 213.532241494563270, 217.736934113954250, 221.956441819130360, 226.190548323727570, 230.439043565776930, 234.701723442818260, 238.978389561834350, 243.268849002982730, 247.572914096186910, 251.890402209723190, 256.221135550009480, 260.564940971863220, 264.921649798552780, 269.291097651019810, 273.673124285693690, 278.067573440366120, 282.474292687630400, 286.893133295426990, 291.323950094270290, 295.766601350760600, 300.220948647014100, 304.686856765668720, 309.164193580146900, 313.652829949878990, 318.152639620209300, 322.663499126726210, 327.185287703775200, 331.717887196928470, 336.261181979198450, 340.815058870798960, 345.379407062266860, 349.954118040770250, 354.539085519440790, 359.134205369575340, 363.739375555563470, 368.354496072404690, 372.979468885689020, 377.614197873918670, 382.258588773060010, 386.912549123217560, 391.575988217329610, 396.248817051791490, 400.930948278915760, 405.622296161144900, 410.322776526937280, 415.032306728249580, 419.750805599544780, 424.478193418257090, 429.214391866651570, 433.959323995014870, 438.712914186121170, 443.475088120918940, 448.245772745384610, 453.024896238496130, 457.812387981278110, 462.608178526874890, 467.412199571608080, 472.224383926980520, 477.044665492585580, 481.872979229887900, 486.709261136839360, 491.553448223298010, 496.405478487217580, 501.265290891579240, 506.132825342034830, 511.008022665236070, 515.890824587822520, 520.781173716044240, 525.679013515995050, 530.584288294433580, 535.496943180169520, 540.416924105997740, 545.344177791154950, 550.278651724285620, 555.220294146894960, 560.169054037273100, 565.124881094874350, 570.087725725134190, 575.057539024710200, 580.034272767130800, 585.017879388839220, 590.008311975617860, 595.005524249382010, 600.009470555327430, 605.020105849423770, 610.037385686238740, 615.061266207084940, 620.091704128477430, 625.128656730891070, 630.172081847810200, 635.221937855059760, 640.278183660408100, 645.340778693435030, 650.409682895655240, 655.484856710889060, 660.566261075873510, 665.653857411105950, 670.747607611912710, 675.847474039736880, 680.953419513637530, 686.065407301994010, 691.183401114410800, 696.307365093814040, 701.437263808737160, 706.573062245787470, 711.714725802289990, 716.862220279103440, 722.015511873601330, 727.174567172815840, 732.339353146739310, 737.509837141777440, 742.685986874351220, 747.867770424643370, 753.055156230484160, 758.248113081374300, 763.446610112640200, 768.650616799717000, 773.860102952558460, 779.075038710167410, 784.295394535245690, 789.521141208958970, 794.752249825813460, 799.988691788643450, 805.230438803703120, 810.477462875863580, 815.729736303910160, 820.987231675937890, 826.249921864842800, 831.517780023906310, 836.790779582469900, 842.068894241700490, 847.352097970438420, 852.640365001133090, 857.933669825857460, 863.231987192405430, 868.535292100464630, 873.843559797865740, 879.156765776907600, 884.474885770751830, 889.797895749890240, 895.125771918679900, 900.458490711945270, 905.796028791646340, 911.138363043611210, 916.485470574328820, 921.837328707804890, 927.193914982476710, 932.555207148186240, 937.921183163208070, 943.291821191335660, 948.667099599019820, 954.046996952560450, 959.431492015349480, 964.820563745165940, 970.214191291518320, 975.612353993036210, 981.015031374908400, 986.422203146368590, 991.833849198223450, 997.249949600427840, 1002.670484599700300, 1008.095434617181700, 1013.524780246136200, 1018.958502249690200, 1024.396581558613400, 1029.838999269135500, 1035.285736640801600, 1040.736775094367400, 1046.192096209724900, 1051.651681723869200, 1057.115513528895000, 1062.583573670030100, 1068.055844343701400, 1073.532307895632800, 1079.012946818975000, 1084.497743752465600, 1089.986681478622400, 1095.479742921962700, 1100.976911147256000, 1106.478169357800900, 1111.983500893733000, 1117.492889230361000, 1123.006317976526100, 1128.523770872990800, 1134.045231790853000, 1139.570684729984800, 1145.100113817496100, 1150.633503306223700, 1156.170837573242400, }; /** * {@inheritDoc} */ @Override public long delay() { return Math.abs(randomPoisson((int)Math.round(getRange())) + super.delay()); } /** * {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("poisson_timer_memo"); //$NON-NLS-1$ } /** * Generate Poisson random based using * @param lambda Lambda in Poisson * @return random */ private static int randomPoisson(int lambda) { if(lambda <= 30) { return poissonRandomNumberLowEq30(lambda); } else { return poissonRandomNumberSup30(lambda); } } /** * see http://en.wikipedia.org/wiki/Poisson_distribution * @param lambda Lambda in Poisson * @return random */ private static final int poissonRandomNumberLowEq30(int lambda) { double L = Math.exp(-lambda); int k = 0; double p = 1; do { k = k + 1; double u = Math.random(); p = p * u; } while (p > L); return k - 1; } /** * http://www.johndcook.com/blog/2010/06/14/generating-poisson-random-values/ * @param lambda Lambda in Poisson * @return random */ private static final int poissonRandomNumberSup30(int lambda) { double c = 0.767 - 3.36/lambda; double beta = Math.PI/Math.sqrt(3.0*lambda); double alpha = beta*lambda; double k = Math.log(c) - lambda - Math.log(beta); while(true) { double u = Math.random(); double x = (alpha - Math.log((1.0 - u)/u))/beta; int n = (int)Math.floor(x + 0.5); if (n < 0){ continue; } double v = Math.random(); double y = alpha - beta*x; double lhs = y + Math.log(v/Math.pow((1.0 + Math.exp(y)),2)); double rhs = k + n*Math.log(lambda) -logFactorial(n); if (lhs <= rhs) { return n; } } } /** * Compute log factorial * http://www.johndcook.com/blog/2010/08/16/how-to-compute-log-factorial/ * @param n Number for which we want log(n!) * @return Log factorial */ private static final double logFactorial(int n) { if (n < 0) { throw new IllegalArgumentException(); } else if (n > 254) { double x = n + 1; return (x - 0.5)*Math.log(x) - x + 0.5*Math.log(2*Math.PI) + 1.0/(12.0*x); } else { return LOG_FACTORIAL[n]; } } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/gui/0000755000175000017500000000000012165514773023774 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/timers/gui/PoissonRandomTimerGui.java0000644000175000017500000000366312032647217031101 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers.gui; import org.apache.jmeter.timers.PoissonRandomTimer; import org.apache.jmeter.timers.RandomTimer; import org.apache.jmeter.util.JMeterUtils; /** * Implementation of a Poisson random timer. */ public class PoissonRandomTimerGui extends AbstractRandomTimerGui { private static final long serialVersionUID = -3218002787832805275L; private static final String DEFAULT_DELAY = "300"; // $NON-NLS-1$ private static final String DEFAULT_RANGE = "100"; // $NON-NLS-1$ public PoissonRandomTimerGui() { super(); } @Override public String getLabelResource() { return "poisson_timer_title";//$NON-NLS-1$ } @Override protected RandomTimer createRandomTimer() { return new PoissonRandomTimer(); } @Override protected String getTimerDelayLabelKey() { return JMeterUtils.getResString("poisson_timer_delay"); } @Override protected String getTimerRangeLabelKey() { return JMeterUtils.getResString("poisson_timer_range"); } @Override protected String getDefaultDelay() { return DEFAULT_DELAY; } @Override protected String getDefaultRange() { return DEFAULT_RANGE; } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/gui/GaussianRandomTimerGui.java0000644000175000017500000000425712032647217031221 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers.gui; import org.apache.jmeter.timers.GaussianRandomTimer; import org.apache.jmeter.timers.RandomTimer; import org.apache.jmeter.util.JMeterUtils; /** * Implementation of a gaussian random timer. */ public class GaussianRandomTimerGui extends AbstractRandomTimerGui { private static final long serialVersionUID = 240L; private static final String DEFAULT_DELAY = "300"; // $NON-NLS-1$ private static final String DEFAULT_RANGE = "100.0"; // $NON-NLS-1$ /** * No-arg constructor. */ public GaussianRandomTimerGui() { super(); } /** * {@inheritDoc} */ @Override public String getLabelResource() { return "gaussian_timer_title";//$NON-NLS-1$ } /** * {@inheritDoc} */ @Override protected RandomTimer createRandomTimer() { return new GaussianRandomTimer(); } /** * {@inheritDoc} */ @Override protected String getTimerDelayLabelKey() { return JMeterUtils.getResString("gaussian_timer_delay"); } /** * {@inheritDoc} */ @Override protected String getTimerRangeLabelKey() { return JMeterUtils.getResString("gaussian_timer_range"); } /** * {@inheritDoc} */ @Override protected String getDefaultDelay() { return DEFAULT_DELAY; } /** * {@inheritDoc} */ @Override protected String getDefaultRange() { return DEFAULT_RANGE; } }apache-jmeter-2.8/src/components/org/apache/jmeter/timers/gui/AbstractRandomTimerGui.java0000644000175000017500000001322512032647217031205 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers.gui; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.timers.ConstantTimer; import org.apache.jmeter.timers.RandomTimer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; /** * Abstract Random timer GUI. * */ public abstract class AbstractRandomTimerGui extends AbstractTimerGui { /** * */ private static final long serialVersionUID = -322164502276145504L; private static final String DELAY_FIELD = "Delay Field"; private static final String RANGE_FIELD = "Range Field"; private JTextField delayField; private JTextField rangeField; /** * No-arg constructor. */ public AbstractRandomTimerGui() { init(); } /** * Handle an error. * * @param e * the Exception that was thrown. * @param thrower * the JComponent that threw the Exception. */ public static void error(Exception e, JComponent thrower) { JOptionPane.showMessageDialog(thrower, e, "Error", JOptionPane.ERROR_MESSAGE); } /** * Create the test element underlying this GUI component. * * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { RandomTimer timer = createRandomTimer(); modifyTestElement(timer); return timer; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement timer) { this.configureTestElement(timer); ((RandomTimer) timer).setDelay(delayField.getText()); ((RandomTimer) timer).setRange(rangeField.getText()); } /** * Configure this GUI component from the underlying TestElement. * * @see org.apache.jmeter.gui.JMeterGUIComponent#configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); delayField.setText(el.getPropertyAsString(ConstantTimer.DELAY)); rangeField.setText(el.getPropertyAsString(RandomTimer.RANGE)); } /** * Initialize this component. */ private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); setBorder(makeBorder()); add(makeTitlePanel()); JPanel threadDelayPropsPanel = new JPanel(); threadDelayPropsPanel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); threadDelayPropsPanel.setBorder(BorderFactory.createTitledBorder( JMeterUtils.getResString("thread_delay_properties")));//$NON-NLS-1$ // DELAY DEVIATION Box delayDevPanel = Box.createHorizontalBox(); delayDevPanel.add(new JLabel(getTimerRangeLabelKey()));//$NON-NLS-1$ delayDevPanel.add(Box.createHorizontalStrut(5)); rangeField = new JTextField(6); rangeField.setText(getDefaultRange()); rangeField.setName(RANGE_FIELD); delayDevPanel.add(rangeField); threadDelayPropsPanel.add(delayDevPanel); // AVG DELAY Box avgDelayPanel = Box.createHorizontalBox(); avgDelayPanel.add(new JLabel(getTimerDelayLabelKey()));//$NON-NLS-1$ avgDelayPanel.add(Box.createHorizontalStrut(5)); delayField = new JTextField(6); delayField.setText(getDefaultDelay()); delayField.setName(DELAY_FIELD); avgDelayPanel.add(delayField); threadDelayPropsPanel.add(avgDelayPanel); threadDelayPropsPanel.setMaximumSize(new Dimension(threadDelayPropsPanel.getMaximumSize().width, threadDelayPropsPanel.getPreferredSize().height)); add(threadDelayPropsPanel); } /** * {@inheritDoc} */ @Override public void clearGui() { rangeField.setText(getDefaultRange()); delayField.setText(getDefaultDelay()); super.clearGui(); } /** * {@inheritDoc} */ abstract public String getLabelResource(); /** * Create implementation of RandomTimer * @return {@link RandomTimer} */ protected abstract RandomTimer createRandomTimer(); /** * @return String timer delay label key */ abstract protected String getTimerDelayLabelKey(); /** * @return String timer range label key */ abstract protected String getTimerRangeLabelKey(); /** * @return String default delay value */ abstract protected String getDefaultDelay(); /** * @return String default range value */ abstract protected String getDefaultRange(); }apache-jmeter-2.8/src/components/org/apache/jmeter/timers/gui/ConstantTimerGui.java0000644000175000017500000000741712032647217030100 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers.gui; import javax.swing.Box; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.timers.ConstantTimer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; /** * The GUI for ConstantTimer. * */ public class ConstantTimerGui extends AbstractTimerGui { private static final long serialVersionUID = 240L; /** * The default value for the delay. */ private static final String DEFAULT_DELAY = "300"; private static final String DELAY_FIELD = "Delay Field"; private JTextField delayField; /** * No-arg constructor. */ public ConstantTimerGui() { init(); } /** * Handle an error. * * @param e * the Exception that was thrown. * @param thrower * the JComponent that threw the Exception. */ public static void error(Exception e, JComponent thrower) { JOptionPane.showMessageDialog(thrower, e, "Error", JOptionPane.ERROR_MESSAGE); } public String getLabelResource() { return "constant_timer_title"; // $NON-NLS-1$ } /** * Create the test element underlying this GUI component. * * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { ConstantTimer timer = new ConstantTimer(); modifyTestElement(timer); return timer; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement timer) { this.configureTestElement(timer); ((ConstantTimer) timer).setDelay(delayField.getText()); } /** * Configure this GUI component from the underlying TestElement. * * @see org.apache.jmeter.gui.JMeterGUIComponent#configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); delayField.setText(((ConstantTimer) el).getDelay()); } /** * Initialize this component. */ private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); Box delayPanel = Box.createHorizontalBox(); JLabel delayLabel = new JLabel(JMeterUtils.getResString("constant_timer_delay"));//$NON-NLS-1$ delayPanel.add(delayLabel); delayField = new JTextField(6); delayField.setText(DEFAULT_DELAY); delayField.setName(DELAY_FIELD); delayPanel.add(delayField); add(delayPanel); } /** * {@inheritDoc} */ @Override public void clearGui() { delayField.setText(DEFAULT_DELAY); super.clearGui(); } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/gui/UniformRandomTimerGui.java0000644000175000017500000000425112032647217031060 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers.gui; import org.apache.jmeter.timers.RandomTimer; import org.apache.jmeter.timers.UniformRandomTimer; import org.apache.jmeter.util.JMeterUtils; /** * Implementation of a uniform random timer. * */ public class UniformRandomTimerGui extends AbstractRandomTimerGui { private static final long serialVersionUID = 240L; private static final String DEFAULT_DELAY = "0"; // $NON-NLS-1$ private static final String DEFAULT_RANGE = "100.0";// $NON-NLS-1$ /** * No-arg constructor. */ public UniformRandomTimerGui() { super(); } /** * {@inheritDoc} */ @Override public String getLabelResource() { return "uniform_timer_title";//$NON-NLS-1$ } /** * {@inheritDoc} */ @Override protected RandomTimer createRandomTimer() { return new UniformRandomTimer(); } /** * {@inheritDoc} */ @Override protected String getTimerDelayLabelKey() { return JMeterUtils.getResString("uniform_timer_delay"); } /** * {@inheritDoc} */ @Override protected String getTimerRangeLabelKey() { return JMeterUtils.getResString("uniform_timer_range"); } /** * {@inheritDoc} */ @Override protected String getDefaultDelay() { return DEFAULT_DELAY; } /** * {@inheritDoc} */ @Override protected String getDefaultRange() { return DEFAULT_RANGE; } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerResources_fr.properties0000644000175000017500000000224612032647217031622 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Compteur de synchronisation groupSize.displayName=Nombre d'utilisateurs simul\u00E9s \u00E0 grouper groupSize.shortDescription=D\u00E9fini combien d'utilisateurs simul\u00E9s d\u00E9clenchent la lib\u00E9ration synchronis\u00E9e du bloc (d\u00E9faut \: la valeur '0' signifie tous les utilisateurs) grouping.displayName=Regroupement apache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java0000644000175000017500000002033112032647217030727 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This class implements a constant throughput timer. A Constant Throughtput * Timer paces the samplers under its influence so that the total number of * samples per unit of time approaches a given constant as much as possible. * * There are two different ways of pacing the requests: * - delay each thread according to when it last ran * - delay each thread according to when any thread last ran */ public class ConstantThroughputTimer extends AbstractTestElement implements Timer, TestStateListener, TestBean { private static final long serialVersionUID = 3; private static class ThroughputInfo{ final Object MUTEX = new Object(); long lastScheduledTime = 0; } private static final Logger log = LoggingManager.getLoggerForClass(); private static final double MILLISEC_PER_MIN = 60000.0; /** * Target time for the start of the next request. The delay provided by the * timer will be calculated so that the next request happens at this time. */ private long previousTime = 0; private String calcMode; // String representing the mode // (Locale-specific) private int modeInt; // mode as an integer /** * Desired throughput, in samples per minute. */ private double throughput; //For calculating throughput across all threads private static final ThroughputInfo allThreadsInfo = new ThroughputInfo(); //For holding the ThrougputInfo objects for all ThreadGroups. Keyed by AbstractThreadGroup objects private static final ConcurrentMap threadGroupsInfoMap = new ConcurrentHashMap(); /** * Constructor for a non-configured ConstantThroughputTimer. */ public ConstantThroughputTimer() { } /** * Sets the desired throughput. * * @param throughput * Desired sampling rate, in samples per minute. */ public void setThroughput(double throughput) { this.throughput = throughput; } /** * Gets the configured desired throughput. * * @return the rate at which samples should occur, in samples per minute. */ public double getThroughput() { return throughput; } public String getCalcMode() { return calcMode; } // Needed by test code int getCalcModeInt() { return modeInt; } public void setCalcMode(String mode) { this.calcMode = mode; // TODO find better way to get modeInt this.modeInt = ConstantThroughputTimerBeanInfo.getCalcModeAsInt(calcMode); } /** * Retrieve the delay to use during test execution. * * @see org.apache.jmeter.timers.Timer#delay() */ public long delay() { long currentTime = System.currentTimeMillis(); /* * If previous time is zero, then target will be in the past. * This is what we want, so first sample is run without a delay. */ long currentTarget = previousTime + calculateDelay(); if (currentTime > currentTarget) { // We're behind schedule -- try to catch up: previousTime = currentTime; return 0; } previousTime = currentTarget; return currentTarget - currentTime; } /** * @param currentTime * @return new Target time */ // TODO - is this used? (apart from test code) protected long calculateCurrentTarget(long currentTime) { return currentTime + calculateDelay(); } // Calculate the delay based on the mode private long calculateDelay() { long delay = 0; // N.B. we fetch the throughput each time, as it may vary during a test double msPerRequest = (MILLISEC_PER_MIN / getThroughput()); switch (modeInt) { case 1: // Total number of threads delay = (long) (JMeterContextService.getNumberOfThreads() * msPerRequest); break; case 2: // Active threads in this group delay = (long) (JMeterContextService.getContext().getThreadGroup().getNumberOfThreads() * msPerRequest); break; case 3: // All threads - alternate calculation delay = calculateSharedDelay(allThreadsInfo,(long) msPerRequest); break; case 4: //All threads in this group - alternate calculation final org.apache.jmeter.threads.AbstractThreadGroup group = JMeterContextService.getContext().getThreadGroup(); ThroughputInfo groupInfo = threadGroupsInfoMap.get(group); if (groupInfo == null) { groupInfo = new ThroughputInfo(); ThroughputInfo previous = threadGroupsInfoMap.putIfAbsent(group, groupInfo); if (previous != null) { // We did not replace the entry groupInfo = previous; // so use the existing one } } delay = calculateSharedDelay(groupInfo,(long) msPerRequest); break; default: // e.g. 0 delay = (long) msPerRequest; // i.e. * 1 break; } return delay; } private long calculateSharedDelay(ThroughputInfo info, long milliSecPerRequest) { final long now = System.currentTimeMillis(); final long calculatedDelay; //Synchronize on the info object's MUTEX to ensure //Multiple threads don't update the scheduled time simultaneously synchronized (info.MUTEX) { final long nextRequstTime = info.lastScheduledTime + milliSecPerRequest; info.lastScheduledTime = Math.max(now, nextRequstTime); calculatedDelay = info.lastScheduledTime - now; } return Math.max(calculatedDelay, 0); } private void reset() { synchronized (allThreadsInfo.MUTEX) { allThreadsInfo.lastScheduledTime = 0; } threadGroupsInfoMap.clear(); // no need to sync as one per instance previousTime = 0; } /** * Provide a description of this timer class. * * TODO: Is this ever used? I can't remember where. Remove if it isn't -- * TODO: or obtain text from bean's displayName or shortDescription. * * @return the description of this timer class. */ @Override public String toString() { return JMeterUtils.getResString("constant_throughput_timer_memo"); //$NON-NLS-1$ } /** * Get the timer ready to compute delays for a new test. *

        * {@inheritDoc} */ public void testStarted() { log.debug("Test started - reset throughput calculation."); reset(); } /** * {@inheritDoc} */ public void testEnded() { //NOOP } /** * {@inheritDoc} */ public void testStarted(String host) { testStarted(); } /** * {@inheritDoc} */ public void testEnded(String host) { //NOOP } }././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_pt_BR.pro0000644000175000017500000000350212032647217033570 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. calcMode.1=este usu\u00E1rio virtual (thread) somente calcMode.2=todos usu\u00E1rios virtuais (threads) ativos calcMode.3=todos usu\u00E1rios virtuais ativos no grupo de usu\u00E1rios corrente calcMode.4=todos usu\u00E1rios virtuais ativos (compartilhado) calcMode.5=todos usu\u00E1rios virtuais no grupo de usu\u00E1rios atual (compartillhado) calcMode.displayName=Calcular Vaz\u00E3o baseada em calcMode.shortDescription=O Temporizador de Vaz\u00E3o Constante era usado para atrasar cada usu\u00E1rio virtual como se ele fosse o \u00FAnico usu\u00E1rio virtual no teste. Agora, ele calcula o atraso levando em considera\u00E7\u00E3o o n\u00FAmero de usu\u00E1rios virtuais ativos no teste ou no grupo de usu\u00E1rios. delay.displayName=Atraso antes de cada testador afetado displayName=Temporizador de Vaz\u00E3o Constante throughput.displayName=Vaz\u00E3o alvo (em amostras por minuto) throughput.shortDescription=N\u00FAmero m\u00E1ximo de amostras que voc\u00EA quer obter por minuto, por usu\u00E1rio virtual, de todos os testadores afetados. apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerBeanInfo.java0000644000175000017500000000240612032647217027365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; public class SyncTimerBeanInfo extends BeanInfoSupport { public SyncTimerBeanInfo() { super(SyncTimer.class); createPropertyGroup("grouping", new String[] { "groupSize" }); PropertyDescriptor p = property("groupSize"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Integer.valueOf(0)); } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/RandomTimer.java0000644000175000017500000000401012032647217026260 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; import java.util.Random; import org.apache.jmeter.testelement.property.DoubleProperty; import org.apache.jmeter.testelement.property.StringProperty; /** * This class implements a random timer with its own panel and fields for value * update and user interaction. Since this class does not define the delay() * method, is abstract and must be extended to provide full functionality. * */ public abstract class RandomTimer extends ConstantTimer implements Timer, Serializable { private static final long serialVersionUID = 240L; public static final String RANGE = "RandomTimer.range"; protected final Random random; /** * No-arg constructor. */ public RandomTimer() { this.random = new Random(); } /** * Set the range value. */ @Override public void setRange(double range) { setProperty(new DoubleProperty(RANGE, range)); } public void setRange(String range) { setProperty(new StringProperty(RANGE, range)); } /** * Get the range value. * * @return double */ @Override public double getRange() { return this.getPropertyAsDouble(RANGE); } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimer.java0000644000175000017500000001236312032647217025766 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import java.io.Serializable; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.threads.JMeterContextService; /** * The purpose of the SyncTimer is to block threads until X number of threads * have been blocked, and then they are all released at once. A SyncTimer can * thus create large instant loads at various points of the test plan. * */ public class SyncTimer extends AbstractTestElement implements Timer, Serializable, TestBean, TestStateListener, ThreadListener { /** * Wrapper to {@link CyclicBarrier} to allow lazy init of CyclicBarrier when SyncTimer is configured with 0 */ private static final class BarrierWrapper implements Cloneable { private CyclicBarrier barrier; /** * */ public BarrierWrapper() { this.barrier = null; } /** * @param parties Number of parties */ public BarrierWrapper(int parties) { this.barrier = new CyclicBarrier(parties); } /** * Synchronized is required to ensure CyclicBarrier is initialized only once per Thread Group * @param parties Number of parties */ public synchronized void setup(int parties) { if(this.barrier== null) { this.barrier = new CyclicBarrier(parties); } } /** * @see CyclicBarrier#await() * @return int * @throws InterruptedException * @throws BrokenBarrierException * @see java.util.concurrent.CyclicBarrier#await() */ public int await() throws InterruptedException, BrokenBarrierException { return barrier.await(); } /** * @see java.util.concurrent.CyclicBarrier#reset() */ public void reset() { barrier.reset(); } /** * @see java.lang.Object#clone() */ @Override protected Object clone() { BarrierWrapper barrierWrapper= null; try { barrierWrapper = (BarrierWrapper) super.clone(); barrierWrapper.barrier = this.barrier; } catch (CloneNotSupportedException e) { //Cannot happen } return barrierWrapper; } } private static final long serialVersionUID = 2; private transient BarrierWrapper barrier; private int groupSize; // Ensure transient object is created by the server private Object readResolve(){ createBarrier(); return this; } /** * @return Returns the numThreads. */ public int getGroupSize() { return groupSize; } /** * @param numThreads * The numThreads to set. */ public void setGroupSize(int numThreads) { this.groupSize = numThreads; } /** * {@inheritDoc} */ public long delay() { if(getGroupSize()>=0) { int arrival = 0; try { arrival = this.barrier.await(); } catch (InterruptedException e) { return 0; } catch (BrokenBarrierException e) { return 0; } finally { if(arrival == 0) { barrier.reset(); } } } return 0; } /** * We have to control the cloning process because we need some cross-thread * communication if our synctimers are to be able to determine when to block * and when to release. */ @Override public Object clone() { SyncTimer newTimer = (SyncTimer) super.clone(); newTimer.barrier = barrier; return newTimer; } /** * {@inheritDoc} */ public void testEnded() { this.testEnded(null); } /** * Reset timerCounter */ public void testEnded(String host) { createBarrier(); } /** * {@inheritDoc} */ public void testStarted() { testStarted(null); } /** * Reset timerCounter */ public void testStarted(String host) { createBarrier(); } /** * */ private void createBarrier() { if(getGroupSize() == 0) { // Lazy init this.barrier = new BarrierWrapper(); } else { this.barrier = new BarrierWrapper(getGroupSize()); } } public void threadStarted() { if(getGroupSize() == 0) { int numThreadsInGroup = JMeterContextService.getContext().getThreadGroup().getNumThreads(); // Unique Barrier creation ensured by synchronized setup this.barrier.setup(numThreadsInGroup); } } public void threadFinished() { // NOOP } }apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerResources_pt_BR.properties0000644000175000017500000000220412032647217032213 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Temporizador de sincroniza\u00E7\u00E3o groupSize.displayName=N\u00FAmero de Usu\u00E1rios Simulados por Grupo por groupSize.shortDescription=Define quantos usu\u00E1rios simulados ativam a libera\u00E7\u00E3o do bloco de sincroniza\u00E7\u00E3o (valor padr\u00E3o de '0' significa todos usu\u00E1rios) grouping.displayName=Agrupamento ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_fr.proper0000644000175000017500000000344712032647217033710 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. calcMode.1=cette unit\u00E9 seulement calcMode.2=toutes les unit\u00E9s actives calcMode.3=toutes les unit\u00E9s actives dans le groupe d'unit\u00E9s courant calcMode.4=toutes les unit\u00E9s actives (partag\u00E9) calcMode.5=toutes les unit\u00E9s actives dans le groupe d'unit\u00E9s courant (partag\u00E9) calcMode.displayName=Calculer le d\u00E9bit sur la base de calcMode.shortDescription=Compteur de temps utilis\u00E9 par le Compteur de d\u00E9bit constant pour d\u00E9caler chaque thread comme s'il \u00E9tait le seul dans le test. Maintenant, le d\u00E9lai est calcul\u00E9 en prenant en compte le nombre de threads actifs dans le test ou le groupe d'unit\u00E9s. delay.displayName=D\u00E9lai avant chaque \u00E9chantillon affect\u00E9 displayName=Compteur de d\u00E9bit constant throughput.displayName=D\u00E9bit cibl\u00E9 (en \u00E9chantillons par minute) throughput.shortDescription=Nombre maximum d'\u00E9chantillon \u00E0 obtenir par minute, par unit\u00E9, pour tous les \u00E9chantillons affect\u00E9s apache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerBeanInfo.java0000644000175000017500000000476112032647217032342 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.timers; import java.beans.PropertyDescriptor; import java.util.ResourceBundle; import org.apache.jmeter.testbeans.BeanInfoSupport; /** * BeanInfo for the ConstantThroughputTimer. * */ public class ConstantThroughputTimerBeanInfo extends BeanInfoSupport { private static final String[] tags = new String[5]; public ConstantThroughputTimerBeanInfo() { super(ConstantThroughputTimer.class); ResourceBundle rb = (ResourceBundle) getBeanDescriptor().getValue(RESOURCE_BUNDLE); // These must agree with the Timer resources tags[0] = rb.getString("calcMode.1"); //$NON-NLS-1$ tags[1] = rb.getString("calcMode.2"); //$NON-NLS-1$ tags[2] = rb.getString("calcMode.3"); //$NON-NLS-1$ tags[3] = rb.getString("calcMode.4"); //$NON-NLS-1$ tags[4] = rb.getString("calcMode.5"); //$NON-NLS-1$ createPropertyGroup("delay", //$NON-NLS-1$ new String[] { "throughput", //$NON-NLS-1$ "calcMode" }); //$NON-NLS-1$ PropertyDescriptor p = property("throughput"); //$NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Double.valueOf(0.0)); p = property("calcMode"); //$NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, tags[0]); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(TAGS, tags); } // TODO need to find better way to do this public static int getCalcModeAsInt(String mode) { for (int i = 0; i < tags.length; i++) { if (tags[i].equals(mode)) { return i; } } return -1; } }apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimerResources_de.properties0000644000175000017500000000257212032647217032526 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell Timer filename.displayName=Dateiname filename.shortDescription=BeanShell Script Datei (Vorrang vor Script) filenameGroup.displayName=Script Datei (Vorrang vor Script) parameterGroup.displayName=Parameter die der BeanShell \u00FCbergeben werden (String Parameters, String []bsh.args) parameters.displayName=Parameter parameters.shortDescription=Parameter die der BeanShell \u00FCbergeben werden (Datei oder Script) script.displayName=Script script.shortDescription=BeanShell Script zur Erzeugung der Pause scripting.displayName=Script (Variablen\: ctv vars props log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerResources_es.properties0000644000175000017500000000220512032647217031615 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Temporizador sincronizado groupSize.displayName=N\u00FAmero de Usuarios Simulados para agrupar groupSize.shortDescription=Defina cuantos usuarios simulados disparan la liberaci\u00F3n del bloque sincronizado (el valor por defecto '0' significa todos los usuarios) grouping.displayName=Agrupaci\u00F3n apache-jmeter-2.8/src/components/org/apache/jmeter/timers/SyncTimerResources_tr.properties0000644000175000017500000000237712032647217031645 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=E\u015Fzamanl\u0131 Zamanlay\u0131c\u0131 groupSize.displayName=Grup ba\u015F\u0131na d\u00FC\u015Fen sahte kullan\u0131c\u0131 say\u0131s\u0131 groupSize.shortDescription=E\u015F zamanl\u0131 blo\u011Fun sal\u0131verilmesini tetikleyen sahte kullan\u0131c\u0131 say\u0131s\u0131n\u0131 belirtin (\u00F6n tan\u0131ml\u0131 olarak '0' t\u00FCm kullan\u0131c\u0131lar anlam\u0131na gelmektedir) grouping.displayName=Gruplama apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BSFTimerResources.properties0000644000175000017500000000305712032647217030632 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BSF Timer scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of BSF language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate BSF language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_ja.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_ja.proper0000644000175000017500000000203412032647217033662 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=\u5B9A\u6570\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8\u30BF\u30A4\u30DE throughput.displayName=\u30BF\u30FC\u30B2\u30C3\u30C8\u30B9\u30EB\u30FC\u30D7\u30C3\u30C8(\u30B5\u30F3\u30D7\u30EB\u6570/\u5206) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimerResources_fr.properties0000644000175000017500000000314012032647217032535 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Compteur de temps BeanShell filename.displayName=Nom de fichier filename.shortDescription=Fichier script BeanShell (remplace le code script) filenameGroup.displayName=Fichier script (remplace le code script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au BeanShell (\=> String Parameters and String []bsh.args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au BeanShell (fichier ou script) resetGroup.displayName=Reinitialiser l'interpr\u00E9teur bsh avant chaque appel resetInterpreter.displayName=R\u00E9initialiser l'interpr\u00E9teur script.displayName=Script script.shortDescription=Script BeanShell pour g\u00E9n\u00E9rer le d\u00E9calage scripting.displayName=Script (variables\: ctx vars props log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BSFTimerResources_fr.properties0000644000175000017500000000322612032647217031317 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Compteur de temps BSF filename.displayName=Nom de fichier filename.shortDescription=Fichier script BSF (remplace le code script) filenameGroup.displayName=Fichier script (remplace le code script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script BSF (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au BSF (fichier ou script) script.displayName=Script script.shortDescription=Script dans le langage BSF cible scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage BSF, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script BSF (ex. beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/JSR223TimerResources_fr.properties0000644000175000017500000000320612032647217031570 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Compteur de temps JSR223 filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le code script) filenameGroup.displayName=Fichier script (remplace le code script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au script script.displayName=Script script.shortDescription=Script dans le langage JSR223 appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage JSR223, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. groovy, beanshell, jexl) ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_de.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/timers/ConstantThroughputTimerResources_de.proper0000644000175000017500000000302712032647217033663 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. calcMode.1=Nur dieser Thread calcMode.2=Alle aktiven Threads calcMode.3=Alle aktiven Threads in der aktuellen Thread-Gruppe calcMode.4=Alle aktiven Threads (Gemeinsam) calcMode.5=Alle aktiven Threads in der aktuellen Thread-Gruppe (gemeinsam) calcMode.displayName=Berechne Durchsatz basierend auf calcMode.shortDescription=Es war der einzige Thread im Test. Nun wird die Pause unter Ber\u00FCcksichtigung der aktiven Threads oder der Thread-Gruppe berechnet. delay.displayName=Pause bevor eine Probe genommen wird displayName=Konstanter Durchsatz-Timer (Zeitgeber) throughput.displayName=Gew\u00FCnschter Proben-Durchsatz (pro Minute) throughput.shortDescription=Maximale Anzahl an Proben die pro Minute und pro Thread von allen betroffenen Samplern apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimerResources.properties0000644000175000017500000000270412032647217032053 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell Timer filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=BeanShell script file (overrides script) parameterGroup.displayName=Parameters to be passed to BeanShell (=> String Parameters and String []bsh.args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to BeanShell (file or script) resetGroup.displayName=Reset bsh.Interpreter before each call resetInterpreter.displayName=Reset Interpreter script.displayName=Script script.shortDescription=Beanshell script to generate delay scripting.displayName=Script (variables: ctx vars props log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/timers/BeanShellTimer.java0000644000175000017500000000432612032647217026707 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; public class BeanShellTimer extends BeanShellTestElement implements Cloneable, Timer, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; // can be specified in jmeter.properties private static final String INIT_FILE = "beanshell.timer.init"; //$NON-NLS-1$ @Override protected String getInitFileProperty() { return INIT_FILE; } /** * {@inheritDoc} */ public long delay() { String ret="0"; final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { log.error("BeanShell not found"); return 0; } try { Object o = processFileOrScript(bshInterpreter); if (o != null) { ret=o.toString(); } } catch (JMeterException e) { log.warn("Problem in BeanShell script "+e); } try { return Long.decode(ret).longValue(); } catch (NumberFormatException e){ log.warn(e.getLocalizedMessage()); return 0; } } } apache-jmeter-2.8/src/components/org/apache/jmeter/timers/JSR223TimerBeanInfo.java0000644000175000017500000000201312032647217027330 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.timers; import org.apache.jmeter.util.JSR223BeanInfoSupport; public class JSR223TimerBeanInfo extends JSR223BeanInfoSupport { public JSR223TimerBeanInfo() { super(JSR223Timer.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/config/0000755000175000017500000000000012165514773023152 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSet.java0000644000175000017500000002047712032647217025721 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.io.IOException; import java.util.List; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.engine.util.NoConfigMerge; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterStopThreadException; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Read lines from a file and split int variables. * * The iterationStart() method is used to set up each set of values. * * By default, the same file is shared between all threads * (and other thread groups, if they use the same file name). * * The shareMode can be set to: *

          *
        • All threads - default, as described above
        • *
        • Current thread group
        • *
        • Current thread
        • *
        • Identifier - all threads sharing the same identifier
        • *
        * * The class uses the FileServer alias mechanism to provide the different share modes. * For all threads, the file alias is set to the file name. * Otherwise, a suffix is appended to the filename to make it unique within the required context. * For current thread group, the thread group identityHashcode is used; * for individual threads, the thread hashcode is used as the suffix. * Or the user can provide their own suffix, in which case the file is shared between all * threads with the same suffix. * */ public class CSVDataSet extends ConfigTestElement implements TestBean, LoopIterationListener, NoConfigMerge { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; private static final String EOFVALUE = // value to return at EOF JMeterUtils.getPropDefault("csvdataset.eofstring", ""); //$NON-NLS-1$ //$NON-NLS-2$ private transient String filename; private transient String fileEncoding; private transient String variableNames; private transient String delimiter; private transient boolean quoted; private transient boolean recycle = true; private transient boolean stopThread; private transient String[] vars; private transient String alias; private transient String shareMode; private boolean firstLineIsNames = false; private Object readResolve(){ recycle = true; return this; } /** * {@inheritDoc} */ public void iterationStart(LoopIterationEvent iterEvent) { FileServer server = FileServer.getFileServer(); final JMeterContext context = getThreadContext(); String delim = getDelimiter(); if (delim.equals("\\t")) { // $NON-NLS-1$ delim = "\t";// Make it easier to enter a Tab // $NON-NLS-1$ } else if (delim.length()==0){ log.warn("Empty delimiter converted to ','"); delim=","; } if (vars == null) { String _fileName = getFilename(); String mode = getShareMode(); int modeInt = CSVDataSetBeanInfo.getShareModeAsInt(mode); switch(modeInt){ case CSVDataSetBeanInfo.SHARE_ALL: alias = _fileName; break; case CSVDataSetBeanInfo.SHARE_GROUP: alias = _fileName+"@"+System.identityHashCode(context.getThreadGroup()); break; case CSVDataSetBeanInfo.SHARE_THREAD: alias = _fileName+"@"+System.identityHashCode(context.getThread()); break; default: alias = _fileName+"@"+mode; // user-specified key break; } final String names = getVariableNames(); if (names == null || names.length()==0) { String header = server.reserveFile(_fileName, getFileEncoding(), alias, true); try { vars = CSVSaveService.csvSplitString(header, delim.charAt(0)); firstLineIsNames = true; } catch (IOException e) { log.warn("Could not split CSV header line",e); } } else { server.reserveFile(_fileName, getFileEncoding(), alias); vars = JOrphanUtils.split(names, ","); // $NON-NLS-1$ } } // TODO: fetch this once as per vars above? JMeterVariables threadVars = context.getVariables(); String[] lineValues = {}; try { if (getQuotedData()) { lineValues = server.getParsedLine(alias, recycle, firstLineIsNames, delim.charAt(0)); } else { String line = server.readLine(alias, recycle, firstLineIsNames); lineValues = JOrphanUtils.split(line, delim, false); } for (int a = 0; a < vars.length && a < lineValues.length; a++) { threadVars.put(vars[a], lineValues[a]); } } catch (IOException e) { // treat the same as EOF log.error(e.toString()); } if (lineValues.length == 0) {// i.e. EOF if (getStopThread()) { throw new JMeterStopThreadException("End of file detected"); } for (int a = 0; a < vars.length ; a++) { threadVars.put(vars[a], EOFVALUE); } } } /** * @return Returns the filename. */ public String getFilename() { return filename; } /** * @param filename * The filename to set. */ public void setFilename(String filename) { this.filename = filename; } /** * @return Returns the file encoding. */ public String getFileEncoding() { return fileEncoding; } /** * @param fileEncoding * The fileEncoding to set. */ public void setFileEncoding(String fileEncoding) { this.fileEncoding = fileEncoding; } /** * @return Returns the variableNames. */ public String getVariableNames() { return variableNames; } /** * @param variableNames * The variableNames to set. */ public void setVariableNames(String variableNames) { this.variableNames = variableNames; } public String getDelimiter() { return delimiter; } public void setDelimiter(String delimiter) { this.delimiter = delimiter; } public boolean getQuotedData() { return quoted; } public void setQuotedData(boolean quoted) { this.quoted = quoted; } public boolean getRecycle() { return recycle; } public void setRecycle(boolean recycle) { this.recycle = recycle; } public boolean getStopThread() { return stopThread; } public void setStopThread(boolean value) { this.stopThread = value; } public String getShareMode() { return shareMode; } public void setShareMode(String value) { this.shareMode = value; } /** * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); result.add(getPropertyAsString("variableNames")); return result; } } apache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties0000644000175000017500000000305412032647217033172 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Random Variable # Groups variable.displayName=Output variable random.displayName=Configure the Random generator options.displayName=Options # fields minimumValue.displayName=Minimum Value minimumValue.shortDescription=Minimum Value maximumValue.displayName=Maximum Value maximumValue.shortDescription=Maximum Value variableName.displayName=Variable Name variableName.shortDescription=Variable Name outputFormat.displayName=Output Format outputFormat.shortDescription=Output Format, e.g. #### randomSeed.displayName=Seed for Random function randomSeed.shortDescription=Seed for Random function - long number (defaults to current time) perThread.displayName=Per Thread(User) ? perThread.shortDescription=Use independent random generators for each thread(user) ? apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetBeanInfo.java0000644000175000017500000001054412032647217027315 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.beans.PropertyDescriptor; import java.util.ResourceBundle; import org.apache.jmeter.testbeans.BeanInfoSupport; public class CSVDataSetBeanInfo extends BeanInfoSupport { // These names must agree case-wise with the variable and property names private static final String FILENAME = "filename"; //$NON-NLS-1$ private static final String FILE_ENCODING = "fileEncoding"; //$NON-NLS-1$ private static final String VARIABLE_NAMES = "variableNames"; //$NON-NLS-1$ private static final String DELIMITER = "delimiter"; //$NON-NLS-1$ private static final String RECYCLE = "recycle"; //$NON-NLS-1$ private static final String STOPTHREAD = "stopThread"; //$NON-NLS-1$ private static final String QUOTED_DATA = "quotedData"; //$NON-NLS-1$ private static final String SHAREMODE = "shareMode"; //$NON-NLS-1$ private static final String[] SHARE_TAGS = new String[3]; static final int SHARE_ALL = 0; static final int SHARE_GROUP = 1; static final int SHARE_THREAD = 2; public CSVDataSetBeanInfo() { super(CSVDataSet.class); ResourceBundle rb = (ResourceBundle) getBeanDescriptor().getValue(RESOURCE_BUNDLE); // These must agree with the resources SHARE_TAGS[SHARE_ALL] = rb.getString("shareMode.all"); //$NON-NLS-1$ SHARE_TAGS[SHARE_GROUP] = rb.getString("shareMode.group"); //$NON-NLS-1$ SHARE_TAGS[SHARE_THREAD] = rb.getString("shareMode.thread"); //$NON-NLS-1$ createPropertyGroup("csv_data", //$NON-NLS-1$ new String[] { FILENAME, FILE_ENCODING, VARIABLE_NAMES, DELIMITER, QUOTED_DATA, RECYCLE, STOPTHREAD, SHAREMODE }); PropertyDescriptor p = property(FILENAME); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); //$NON-NLS-1$ p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property(FILE_ENCODING); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); //$NON-NLS-1$ p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property(VARIABLE_NAMES); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); //$NON-NLS-1$ p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property(DELIMITER); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ","); //$NON-NLS-1$ p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property(QUOTED_DATA); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); p = property(RECYCLE); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p = property(STOPTHREAD); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); p = property(SHAREMODE); //$NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, SHARE_TAGS[0]); p.setValue(NOT_OTHER, Boolean.FALSE); p.setValue(NOT_EXPRESSION, Boolean.FALSE); p.setValue(TAGS, SHARE_TAGS); } // TODO need to find better way to do this public static int getShareModeAsInt(String mode) { if (mode == null || mode.length() == 0){ return SHARE_ALL; // default (e.g. if test plan does not have definition) } for (int i = 0; i < SHARE_TAGS.length; i++) { if (SHARE_TAGS[i].equals(mode)) { return i; } } return -1; } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_pt_BR.proper0000644000175000017500000000335212032647217033374 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Vari\u00E1vel Aleat\u00F3ria maximumValue.displayName=Valor M\u00E1ximo maximumValue.shortDescription=Valor M\u00E1ximo minimumValue.displayName=Valor M\u00EDnimo minimumValue.shortDescription=Valor M\u00EDnimo options.displayName=Op\u00E7\u00F5es outputFormat.displayName=Formato de sa\u00EDda outputFormat.shortDescription=Formato de sa\u00EDda, ex\: \#\#\#\# perThread.displayName=Por usu\u00E1rio virtual (thread)? perThread.shortDescription=Utilizar geradores aleat\u00F3rios independentes para cada usu\u00E1rio virtual (thread)? random.displayName=Configurar o gerador aleat\u00F3rio randomSeed.displayName=Semente para a fun\u00E7\u00E3o aleat\u00F3ria randomSeed.shortDescription=Semente para a fun\u00E7\u00E3o aleat\u00F3ria - n\u00FAmero do tipo long (valor padr\u00E3o para o tempo atual) variable.displayName=Vari\u00E1vel de sa\u00EDda variableName.displayName=Nome da Vari\u00E1vel variableName.shortDescription=Nome da Vari\u00E1vel apache-jmeter-2.8/src/components/org/apache/jmeter/config/KeystoreConfigBeanInfo.java0000644000175000017500000000412612032647217030346 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; /** * Keystore Configuration BeanInfo */ public class KeystoreConfigBeanInfo extends BeanInfoSupport { private static final String ALIASES_GROUP = "aliases"; private static final String ALIAS_END_INDEX = "endIndex"; private static final String ALIAS_START_INDEX = "startIndex"; private static final String PRELOAD = "preload"; /** * Constructor */ public KeystoreConfigBeanInfo() { super(KeystoreConfig.class); createPropertyGroup(ALIASES_GROUP, new String[] { PRELOAD, ALIAS_START_INDEX, ALIAS_END_INDEX }); PropertyDescriptor p = property(PRELOAD); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "true"); // $NON-NLS-1$ p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(TAGS, new String[]{"True", "False"}); // $NON-NLS-1$ $NON-NLS-2$ p = property(ALIAS_START_INDEX); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p = property(ALIAS_END_INDEX); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_fr.properties0000644000175000017500000000461212032647217031547 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! csv_data.displayName=Configuration de la source de donn\u00E9es CSV delimiter.displayName=D\u00E9limiteur (utiliser '\\t' pour la tabulation) delimiter.shortDescription=D\u00E9limiteur (utiliser '\\t' pour la tabulation) displayName=Source de donn\u00E9es CSV fileEncoding.displayName=Encodage du fichier fileEncoding.shortDescription=Encodage des caract\u00E8res utilis\u00E9s dans le fichier filename.displayName=Nom de fichier filename.shortDescription=Nom du fichier qui contient des donn\u00E9es CSV (chemin relatif ou absolu) quotedData.displayName=Autoriser les donn\u00E9es avec des quotes ? quotedData.shortDescription=Permettre aux valeurs des donn\u00E9es CSV d'\u00EAtre quot\u00E9es ? recycle.displayName=Recycler en fin de fichier (EOF) ? recycle.shortDescription=Voulez-vous que le fichier soit relu depuis son d\u00E9but apr\u00E8s avoir atteint la fin de fichier (EOF) ? shareMode.all=Toutes les unit\u00E9s shareMode.displayName=Mode de partage shareMode.group=Groupe d'unit\u00E9s courant shareMode.shortDescription=S\u00E9lectionner les unit\u00E9s partageant le m\u00EAme pointeur de fichier shareMode.thread=Unit\u00E9 courante stopThread.displayName=Arr\u00EAter l'unit\u00E9 \u00E0 la fin de fichier (EOF) ? stopThread.shortDescription=L'unit\u00E9 sera arr\u00EAt\u00E9e en atteignant la fin de fichier (EOF) (si Recycler est \u00E0 faux) ? variableNames.displayName=Noms des variables (s\u00E9par\u00E9s par des virgules) variableNames.shortDescription=Liste de vos variables dans l'ordre des colonnes de vos donn\u00E9es CSV. S\u00E9par\u00E9 par des virgules.\t apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_es.properties0000644000175000017500000000447712032647217031560 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! csv_data.displayName=Configura el Data Source de CSV delimiter.displayName=Delimitador (utilice '\\t' para poner un tabulador) delimiter.shortDescription=Introduzca el delimitador (utilice '\\t' para poner un tabulador) displayName=Configuraci\u00F3n del CSV Data Set fileEncoding.displayName=Codificaci\u00F3n del fichero fileEncoding.shortDescription=El conjunto de caracteres usado en el fichero filename.displayName=Nombre de Archivo filename.shortDescription=Nombre del archivo (dentro de su directorio de archivos) que mantiene los datos CVS quotedData.displayName=\u00BFPermitir datos entrecomillados? quotedData.shortDescription=\u00BFPermitir que valores de datos CSV sean entrecomillados? recycle.displayName=\u00BFReciclar en el fin de fichero (EOF)? recycle.shortDescription=\u00BFDeber\u00EDa el fichero ser rele\u00EDdo desde el comiendo cuando se alcance el final del fichero (EOF)? shareMode.all=Todos los hilos shareMode.displayName=Modo compartido shareMode.group=Actual grupo de hilos shareMode.shortDescription=Seleccionar que hilos comparten el mismo puntero a fichero shareMode.thread=Hilo actual stopThread.displayName=\u00BFPara el hilo al final del fichero (EOF)? stopThread.shortDescription=\u00BFDeber\u00EDa el hilo ser parado cuando se alcance el final del fichero(EOF) (Si 'Reciclar' es falso?) variableNames.displayName=Nombres de Variable (delimitados por coma) variableNames.shortDescription=Lista sus nombres de variable para ordenar las columnas en sus datos CSV.\nSeparados por comas. apache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java0000644000175000017500000000613012032647217031424 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.config; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; public class RandomVariableConfigBeanInfo extends BeanInfoSupport { // These group names must have .displayName properties private static final String VARIABLE_GROUP = "variable"; // $NON-NLS-1$ private static final String OPTIONS_GROUP = "options"; // $NON-NLS-1$ private static final String RANDOM_GROUP = "random"; // $NON-NLS-1$ // These variable names must have .displayName properties and agree with the getXXX()/setXXX() methods private static final String PER_THREAD = "perThread"; // $NON-NLS-1$ private static final String RANDOM_SEED = "randomSeed"; // $NON-NLS-1$ private static final String MAXIMUM_VALUE = "maximumValue"; // $NON-NLS-1$ private static final String MINIMUM_VALUE = "minimumValue"; // $NON-NLS-1$ private static final String OUTPUT_FORMAT = "outputFormat"; // $NON-NLS-1$ private static final String VARIABLE_NAME = "variableName"; // $NON-NLS-1$ public RandomVariableConfigBeanInfo() { super(RandomVariableConfig.class); PropertyDescriptor p; createPropertyGroup(VARIABLE_GROUP, new String[] { VARIABLE_NAME, OUTPUT_FORMAT, }); p = property(VARIABLE_NAME); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p = property(OUTPUT_FORMAT); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ createPropertyGroup(RANDOM_GROUP, new String[] { MINIMUM_VALUE, MAXIMUM_VALUE, RANDOM_SEED, }); p = property(MINIMUM_VALUE); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "1"); // $NON-NLS-1$ p = property(MAXIMUM_VALUE); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p = property(RANDOM_SEED); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ createPropertyGroup(OPTIONS_GROUP, new String[] { PER_THREAD, }); p = property(PER_THREAD); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); } } apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_pl.properties0000644000175000017500000000471612032647217031560 0ustar ebourgebourg#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. csv_data.displayName = Konfiguracja wczytywania plik\u00F3w CSV delimiter.displayName=Separator (np. '\\t' oznacza TABa) delimiter.shortDescription=Wpisz separator (np. '\\t' oznacza TABa) displayName=Konfiguracja plik\u00F3w CSV fileEncoding.displayName=Kodowanie pliku fileEncoding.shortDescription=Strona kodowa znak\u00F3w u\u017Cywana w pliku filename.displayName=Nazwa pliku filename.shortDescription=Nazwa pliku CSV (wzgl\u0119dna lub absolutna) quotedData.displayName=Zezwala\u0107 na dane "w cudzys\u0142owiach" ? quotedData.shortDescription=Zezwala\u0107 na "otaczanie danych" cudzys\u0142owami? recycle.displayName=Recycle on EOF ? recycle.shortDescription=Je\u015Bli zaczn\u0119 czyta\u0107 plik w \u015Brodku i dojd\u0119 do ko\u0144ca (EOF) to mam doczyta\u0107 brakuj\u0105c\u0105 cz\u0119\u015B\u0107 z pocz\u0105tku pliku?\r\n shareMode.all=Wszystkie w\u0105tki shareMode.displayName=Tryb wsp\u00F3\u0142dzielenia shareMode.group=Bie\u017C\u0105ca grupa w\u0105tk\u00F3w shareMode.shortDescription=Wybierz w\u0105tki, kt\u00F3re powinny dzieli\u0107 ten sam wska\u017Anik do pliku shareMode.thread=Bie\u017C\u0105cy w\u0105tek stopThread.displayName=Zatrzyma\u0107 w\u0105tek na EOF ? stopThread.shortDescription=Zatrzyma\u0107 w\u0105tek gdy dojdzie do ko\u0144ca pliku (EOF, je\u015Bli nie wybra\u0142e\u015B doczytywania brakuj\u0105cego fragmentu pliku z pocz\u0105tku)? variableNames.displayName=Nazwy zmiennych (oddzielane przecinkami) variableNames.shortDescription=Wpisz nazwy Twoich zmiennych, w odpowieniej kolejno\u015Bci, tak by pasowa\u0142y Ci do kolumn w pliku CSV. Nazwy oddzielaj przecinkami. apache-jmeter-2.8/src/components/org/apache/jmeter/config/KeystoreConfig.java0000644000175000017500000001072212032647217026743 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.config; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.SSLManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterStopTestException; import org.apache.log.Logger; /** * Configure Keystore */ public class KeystoreConfig extends ConfigTestElement implements TestBean, TestStateListener { private static final long serialVersionUID = -5781402012242794890L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String KEY_STORE_START_INDEX = "https.keyStoreStartIndex"; // $NON-NLS-1$ private static final String KEY_STORE_END_INDEX = "https.keyStoreEndIndex"; // $NON-NLS-1$ private String startIndex; private String endIndex; private String preload; public KeystoreConfig() { super(); } public void testEnded() { testEnded(null); } public void testEnded(String host) { log.info("Destroying Keystore"); SSLManager.getInstance().destroyKeystore(); } public void testStarted() { testStarted(null); } public void testStarted(String host) { String reuseSSLContext = JMeterUtils.getProperty("https.use.cached.ssl.context"); if(StringUtils.isEmpty(reuseSSLContext)||"true".equals(reuseSSLContext)) { log.warn("https.use.cached.ssl.context property must be set to false to ensure Multiple Certificates are used"); } int startIndexAsInt = JMeterUtils.getPropDefault(KEY_STORE_START_INDEX, 0); int endIndexAsInt = JMeterUtils.getPropDefault(KEY_STORE_END_INDEX, 0); if(!StringUtils.isEmpty(this.startIndex)) { try { startIndexAsInt = Integer.parseInt(this.startIndex); } catch(NumberFormatException e) { log.warn("Failed parsing startIndex :'"+this.startIndex+"', will default to:'"+startIndexAsInt+"', error message:"+ e.getMessage(), e); } } if(!StringUtils.isEmpty(this.endIndex)) { try { endIndexAsInt = Integer.parseInt(this.endIndex); } catch(NumberFormatException e) { log.warn("Failed parsing endIndex :'"+this.endIndex+"', will default to:'"+endIndexAsInt+"', error message:"+ e.getMessage(), e); } } if(startIndexAsInt>endIndexAsInt) { throw new JMeterStopTestException("Keystore Config error : Alias start index must be lower than Alias end index"); } log.info("Configuring Keystore with (preload:"+preload+", startIndex:"+ startIndexAsInt+", endIndex:"+endIndexAsInt+")"); SSLManager.getInstance().configureKeystore(Boolean.parseBoolean(preload), startIndexAsInt, endIndexAsInt); } /** * @return the endIndex */ public String getEndIndex() { return endIndex; } /** * @param endIndex the endIndex to set */ public void setEndIndex(String endIndex) { this.endIndex = endIndex; } /** * @return the startIndex */ public String getStartIndex() { return startIndex; } /** * @param startIndex the startIndex to set */ public void setStartIndex(String startIndex) { this.startIndex = startIndex; } /** * @return the preload */ public String getPreload() { return preload; } /** * @param preload the preload to set */ public void setPreload(String preload) { this.preload = preload; } } apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources.properties0000644000175000017500000000374012032647217031061 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=CSV Data Set Config csv_data.displayName=Configure the CSV Data Source filename.displayName=Filename filename.shortDescription=Name of the file that holds the cvs data (relative or absolute filename) fileEncoding.displayName=File encoding fileEncoding.shortDescription=The character set encoding used in the file variableNames.displayName=Variable Names (comma-delimited) variableNames.shortDescription=List your variable names in order to match the order of columns in your csv data. Separate by commas. delimiter.displayName=Delimiter (use '\\t' for tab) delimiter.shortDescription=Enter the delimiter ('\\t' for tab) quotedData.displayName=Allow quoted data? quotedData.shortDescription=Allow CSV data values to be quoted? recycle.displayName=Recycle on EOF ? recycle.shortDescription=Should the file be re-read from the start on reaching EOF ? stopThread.displayName=Stop thread on EOF ? stopThread.shortDescription=Should the thread be stopped on reaching EOF (if Recycle is false) ? shareMode.displayName=Sharing mode shareMode.shortDescription=Select which threads share the same file pointer shareMode.all=All threads shareMode.group=Current thread group shareMode.thread=Current thread apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_zh_TW.properties0000644000175000017500000000241212032647217032167 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! csv_data.displayName=\u8A2D\u5B9A CSV \u8CC7\u6599\u4F86\u6E90 displayName=CSV \u8CC7\u6599\u8A2D\u5B9A filename.displayName=\u6A94\u540D filename.shortDescription=\u5DF2\u63D0\u4F9B\u8DEF\u5F91\u4E2D CVS \u6A94\u540D variableNames.displayName=\u8B8A\u6578\u540D\u7A31(\u4EE5\u9017\u865F\u5206\u9694) variableNames.shortDescription=\u8207CSV\u6A94\u6848\u8CC7\u6599\u76F8\u5C0D\u61C9\u7684\u8B8A\u6578\u540D\u7A31, \u4EE5\u9017\u865F\u5206\u9694 apache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfig.java0000644000175000017500000001662112032647217030030 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.config; import java.text.DecimalFormat; import java.util.Random; import org.apache.commons.lang3.math.NumberUtils; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.engine.util.NoConfigMerge; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class RandomVariableConfig extends ConfigTestElement implements TestBean, LoopIterationListener, NoThreadClone, NoConfigMerge { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 233L; /* * N.B. this class is shared between threads (NoThreadClone) so all access to variables * needs to be protected by a lock (either sync. or volatile) to ensure safe publication. */ private String minimumValue; private String maximumValue; private String variableName; private String outputFormat; private String randomSeed; private boolean perThread; // This class is not cloned per thread, so this is shared private Random globalRandom = null; // Used for per-thread/user numbers // Cannot be static, as random numbers are not to be shared between instances private transient ThreadLocal perThreadRandom = initThreadLocal(); private ThreadLocal initThreadLocal() { return new ThreadLocal() { @Override protected Random initialValue() { init(); return new Random(getRandomSeedAsLong()); }}; } private int n; private long minimum; private Object readResolve(){ perThreadRandom = initThreadLocal(); return this; } /* * nextInt(n) returns values in the range [0,n), * so n must be set to max-min+1 */ private void init(){ final String minAsString = getMinimumValue(); minimum = NumberUtils.toLong(minAsString); final String maxAsString = getMaximumValue(); long maximum = NumberUtils.toLong(maxAsString); long rangeL=maximum-minimum+1; // This can overflow if (minimum >= maximum){ log.error("maximum("+maxAsString+") must be > minimum"+minAsString+")"); n=0;// This is used as an error indicator return; } if (rangeL > Integer.MAX_VALUE || rangeL <= 0){// check for overflow too log.warn("maximum("+maxAsString+") - minimum"+minAsString+") must be <="+Integer.MAX_VALUE); rangeL=Integer.MAX_VALUE; } n = (int)rangeL; } /** {@inheritDoc} */ public void iterationStart(LoopIterationEvent iterEvent) { Random randGen=null; if (getPerThread()){ randGen = perThreadRandom.get(); } else { synchronized(this){ if (globalRandom == null){ init(); globalRandom = new Random(getRandomSeedAsLong()); } randGen=globalRandom; } } if (n <=0){ return; } long nextRand = minimum + randGen.nextInt(n); // Cannot use getThreadContext() as we are not cloned per thread JMeterVariables variables = JMeterContextService.getContext().getVariables(); variables.put(getVariableName(), formatNumber(nextRand)); } // Use format to create number; if it fails, use the default private String formatNumber(long value){ String format = getOutputFormat(); if (format != null && format.length() > 0) { try { DecimalFormat myFormatter = new DecimalFormat(format); return myFormatter.format(value); } catch (NumberFormatException ignored) { log.warn("Exception formatting value:"+value + " at format:"+format+", using default"); } catch (IllegalArgumentException ignored) { log.warn("Exception formatting value:"+value + " at format:"+format+", using default"); } } return Long.toString(value); } /** * @return the minValue */ public synchronized String getMinimumValue() { return minimumValue; } /** * @param minValue the minValue to set */ public synchronized void setMinimumValue(String minValue) { this.minimumValue = minValue; } /** * @return the maxvalue */ public synchronized String getMaximumValue() { return maximumValue; } /** * @param maxvalue the maxvalue to set */ public synchronized void setMaximumValue(String maxvalue) { this.maximumValue = maxvalue; } /** * @return the variableName */ public synchronized String getVariableName() { return variableName; } /** * @param variableName the variableName to set */ public synchronized void setVariableName(String variableName) { this.variableName = variableName; } /** * @return the randomSeed */ public synchronized String getRandomSeed() { return randomSeed; } /** * @return the randomSeed as a long */ private synchronized long getRandomSeedAsLong() { long seed = 0; if (randomSeed.length()==0){ seed = System.currentTimeMillis(); } else { try { seed = Long.parseLong(randomSeed); } catch (NumberFormatException e) { seed = System.currentTimeMillis(); log.warn("Cannot parse seed "+e.getLocalizedMessage()); } } return seed; } /** * @param randomSeed the randomSeed to set */ public synchronized void setRandomSeed(String randomSeed) { this.randomSeed = randomSeed; } /** * @return the perThread */ public synchronized boolean getPerThread() { return perThread; } /** * @param perThread the perThread to set */ public synchronized void setPerThread(boolean perThread) { this.perThread = perThread; } /** * @return the outputFormat */ public synchronized String getOutputFormat() { return outputFormat; } /** * @param outputFormat the outputFormat to set */ public synchronized void setOutputFormat(String outputFormat) { this.outputFormat = outputFormat; } } apache-jmeter-2.8/src/components/org/apache/jmeter/config/KeystoreConfigResources.properties0000644000175000017500000000227412032647217032114 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Keystore Configuration # Groups aliases.displayName=Aliases selection configuration # fields preload.displayName=Preload preload.shortDescription=Preload Keystore before test startIndex.displayName=Alias Start index (0-based) startIndex.shortDescription=First index of Alias in Keystore endIndex.displayName=Alias End index (0-based) endIndex.shortDescription=Last index of Alias in Keystore apache-jmeter-2.8/src/components/org/apache/jmeter/config/KeystoreConfigResources_fr.properties0000644000175000017500000000267512032647217032610 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Configuration du coffre de cl\u00E9s (JKS) # Groups aliases.displayName=S\u00E9lection des alias # fields preload.displayName=Pr\u00E9chargement preload.shortDescription=Pr\u00E9chargement du coffre de cl\u00E9s (JKS) avant le d\u00E9marrage du test startIndex.displayName=Num\u00E9ro d'index premi\u00E8re cl\u00E9 (d\u00E9marre \u00E0 0) startIndex.shortDescription=Num\u00E9ro d'index du premier alias de cl\u00E9 dans le coffre de cl\u00E9s (JKS) endIndex.displayName=Num\u00E9ro d'index derni\u00E8re cl\u00E9 (d\u00E9marre \u00E0 0) endIndex.shortDescription=Num\u00E9ro d'index du dernier alias de cl\u00E9 dans le coffre de cl\u00E9s (JKS) apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_pt_BR.properties0000644000175000017500000000464412032647217032153 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. csv_data.displayName=Configurar fonte de dados CSV delimiter.displayName=Separador (usar '\\t' para tabula\u00E7\u00F5es) delimiter.shortDescription=Informe o separador ('\\t' para tabula\u00E7\u00F5es) displayName=Configura\u00E7\u00E3o dos dados CSV fileEncoding.displayName=Codifica\u00E7\u00E3o do arquivo (encoding) fileEncoding.shortDescription=O conjunto de caracteres (charset) usado no arquivo filename.displayName=Nome do arquivo filename.shortDescription=Nome do arquivo que cont\u00E9m os dados csv (nome do arquivo relativo ou absoluto) quotedData.displayName=Permitir dados com cita\u00E7\u00F5es? quotedData.shortDescription=Permitir que valores de dados CSV possuam cita\u00E7\u00F5es (aspas) recycle.displayName=Reciclar no final do arquivo (EOF)? recycle.shortDescription=Os dados do arquivo devem ser lidos novamente a partir do in\u00EDcio ao alcan\u00E7ar o fim do arquivo (EOF)? shareMode.all=Todos os usu\u00E1rios virtuais shareMode.displayName=Modo de compartilhamento shareMode.group=Grupo de usu\u00E1rios atual shareMode.shortDescription=Selecionar quais usu\u00E1rios virtuais compartilham o mesmo ponteiro para o arquivo shareMode.thread=Usu\u00E1rio virtual atual stopThread.displayName=Finalizar usu\u00E1rio virtual no final do arquivo? stopThread.shortDescription=O usu\u00E1rio virtual dever\u00E1 ser parado quando o fim do arquivo for alcan\u00E7ado (se Reciclar n\u00E3o est\u00E1 configurado)? variableNames.displayName=Nomes das vari\u00E1veis (separados por v\u00EDrgula) variableNames.shortDescription=Informar os nomes das vari\u00E1veis que representam as colunas na sua fonte de dados CSV. Separe por v\u00EDrgula. ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_es.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_es.propertie0000644000175000017500000000325512032647217033501 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Variable aleatoria maximumValue.displayName=Valor m\u00E1ximo maximumValue.shortDescription=Valor m\u00E1ximo minimumValue.displayName=Valor m\u00EDnimo minimumValue.shortDescription=Valor m\u00EDnimo options.displayName=Opciones outputFormat.displayName=Formato de salida outputFormat.shortDescription=Formato de salida, e.g. \#\#\#\# perThread.displayName=\u00BFPor hilo(Usuario)? perThread.shortDescription=\u00BFUsar generadores aleatorios independientes para cada hilo (usuario)? random.displayName=Configurar el generador aleatorio randomSeed.displayName=Semilla para la funci\u00F3n aleatoria randomSeed.shortDescription=Semilla para la funci\u00F3n aleatoria - n\u00FAmero long (por defecto para la hora actual) variable.displayName=Variable de salida variableName.displayName=Nombre de variable variableName.shortDescription=Nombre de variable ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_fr.propertie0000644000175000017500000000333112032647217033474 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Variable al\u00E9atoire maximumValue.displayName=Valeur maximum maximumValue.shortDescription=Valeur maximum minimumValue.displayName=Valeur minimum minimumValue.shortDescription=Valeur minimum options.displayName=Options outputFormat.displayName=Format de sortie outputFormat.shortDescription=Format de sortie, i.e. \#\#\#\# perThread.displayName=Par unit\u00E9 (utilisateur) ? perThread.shortDescription=Utiliser des g\u00E9n\u00E9rateurs al\u00E9atoires ind\u00E9pendants pour chaque unit\u00E9 (utilisateur) ? random.displayName=Param\u00E9trer le g\u00E9n\u00E9rateur al\u00E9atoire randomSeed.displayName=Sels pour la fonction al\u00E9atoire randomSeed.shortDescription=Sels pour la fonction al\u00E9atoire - chiffre long (par d\u00E9faut \u00E0 l'heure courante) variable.displayName=Variable de sortie variableName.displayName=Nom de variable variableName.shortDescription=Nom de variable apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_de.properties0000644000175000017500000000343712032647217031534 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. csv_data.displayName=Einstellungen der CSV Quellen delimiter.displayName=Trennzeichen ('\\t' f\u00FCr Tab) delimiter.shortDescription=Geben sie ein Trennzeichen ein ('\\t' f\u00FCr Tab) displayName=CSV Einstellungen fileEncoding.displayName=Zeichensatz der Datei fileEncoding.shortDescription=Der, in der Datei, benutzte Zeichensatz filename.displayName=Dateiname filename.shortDescription=Name der Datei, die die CSV Daten enth\u00E4lt (relativer oder absoluter Pfadname m\u00F6glich) recycle.displayName=Datei erneut einlesen? recycle.shortDescription=Soll die Datei nach dem erreichen des Dateiendes erneut eingelesen werden? stopThread.displayName=Thread stoppen? stopThread.shortDescription=Bei erreichen des Dateiende den Thread stoppen? variableNames.displayName=Variablenname (getrennt durch Komma) variableNames.shortDescription=Geben sie die Variablennamen, durch Komma getrennt, ein, die den Spalten ihrer CSV Datei entsprechen. Die Variablennamen m\u00FCssen der Reihenfolge der CVS Datei entsprechen\! apache-jmeter-2.8/src/components/org/apache/jmeter/config/CSVDataSetResources_tr.properties0000644000175000017500000000404612032647217031566 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! csv_data.displayName=CSV Veri Kayna\u011F\u0131n\u0131 Ayarla delimiter.displayName=S\u0131n\u0131rlay\u0131c\u0131 (tab i\u00E7in '\\t' kullan) delimiter.shortDescription=S\u0131n\u0131rlay\u0131c\u0131 gir (tab i\u00E7in '\\t') displayName=CSV Veri K\u00FCmesi Ayar\u0131 fileEncoding.displayName=Dosya Kodlamas\u0131 fileEncoding.shortDescription=Dosyada kullan\u0131lan karakter kodlamas\u0131 filename.displayName=Dosya ad\u0131 filename.shortDescription=cvs verisini tutan dosyan\u0131n ad\u0131 (g\u00F6reli veya tam dosya yolu) recycle.displayName=Dosya sonunda geri d\u00F6n\u00FC\u015F\u00FCm ? recycle.shortDescription=Dosya sonundan itibaren tekrar okunsun mu? stopThread.displayName=Dosya sonunda i\u015F par\u00E7ac\u0131\u011F\u0131n\u0131 durdur ? stopThread.shortDescription=\u0130\u015F par\u00E7ac\u0131c\u0131\u011F\u0131 dosya sonuna var\u0131ld\u0131\u011F\u0131nda durdurulsun mu (e\u011Fer geri d\u00F6n\u00FC\u015F\u00FCm etkin de\u011Filse) ? variableNames.displayName=De\u011Fi\u015Fken isimleri (virg\u00FClle ayr\u0131lm\u0131\u015F) variableNames.shortDescription=De\u011Fi\u015Fken isimlerini csv verisindeki kolon s\u0131ras\u0131yla \u00F6rt\u00FC\u015Fecek \u015Fekilde listele. Virg\u00FClle ay\u0131rarak. ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_pl.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/config/RandomVariableConfigResources_pl.propertie0000644000175000017500000000312112032647217033475 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Uwagi do tlumaczenia: mr0vek@o2.pl displayName=Random Variable # Groups variable.displayName=Output variable random.displayName=Configure the Random generator options.displayName=Options # fields minimumValue.displayName=Minimum Value minimumValue.shortDescription=Minimum Value maximumValue.displayName=Maximum Value maximumValue.shortDescription=Maximum Value variableName.displayName=Variable Name variableName.shortDescription=Variable Name outputFormat.displayName=Output Format outputFormat.shortDescription=Output Format, e.g. #### randomSeed.displayName=Seed for Random function randomSeed.shortDescription=Seed for Random function - long number (defaults to current time) perThread.displayName=Per Thread(User) ? perThread.shortDescription=Use independent random generators for each thread(user) ? apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/0000755000175000017500000000000012165514773024077 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/assertions/HTMLAssertion.java0000644000175000017500000003001012032647217027361 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; import java.io.StringWriter; import java.text.MessageFormat; import org.apache.commons.io.IOUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.LongProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.w3c.tidy.Node; import org.w3c.tidy.Tidy; /** * Assertion to validate the response of a Sample with Tidy. */ public class HTMLAssertion extends AbstractTestElement implements Serializable, Assertion { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); public static final String DEFAULT_DOCTYPE = "omit"; //$NON-NLS-1$ public static final String DOCTYPE_KEY = "html_assertion_doctype"; //$NON-NLS-1$ public static final String ERRORS_ONLY_KEY = "html_assertion_errorsonly"; //$NON-NLS-1$ public static final String ERROR_THRESHOLD_KEY = "html_assertion_error_threshold"; //$NON-NLS-1$ public static final String WARNING_THRESHOLD_KEY = "html_assertion_warning_threshold"; //$NON-NLS-1$ public static final String FORMAT_KEY = "html_assertion_format"; //$NON-NLS-1$ public static final String FILENAME_KEY = "html_assertion_filename"; //$NON-NLS-1$ /** * */ public HTMLAssertion() { log.debug("HTMLAssertion(): called"); } /** * Returns the result of the Assertion. If so an AssertionResult containing * a FailureMessage will be returned. Otherwise the returned AssertionResult * will reflect the success of the Sample. */ public AssertionResult getResult(SampleResult inResponse) { log.debug("HTMLAssertions.getResult() called"); // no error as default AssertionResult result = new AssertionResult(getName()); if (inResponse.getResponseData().length == 0) { return result.setResultForNull(); } result.setFailure(false); // create parser Tidy tidy = null; try { if (log.isDebugEnabled()){ log.debug("HTMLAssertions.getResult(): Setup tidy ..."); log.debug("doctype: " + getDoctype()); log.debug("errors only: " + isErrorsOnly()); log.debug("error threshold: " + getErrorThreshold()); log.debug("warning threshold: " + getWarningThreshold()); log.debug("html mode: " + isHTML()); log.debug("xhtml mode: " + isXHTML()); log.debug("xml mode: " + isXML()); } tidy = new Tidy(); tidy.setInputEncoding("UTF8"); tidy.setOutputEncoding("UTF8"); tidy.setQuiet(false); tidy.setShowWarnings(true); tidy.setOnlyErrors(isErrorsOnly()); tidy.setDocType(getDoctype()); if (isXHTML()) { tidy.setXHTML(true); } else if (isXML()) { tidy.setXmlTags(true); } tidy.setErrfile(getFilename()); if (log.isDebugEnabled()) { log.debug("err file: " + getFilename()); log.debug("getParser : tidy parser created - " + tidy); log.debug("HTMLAssertions.getResult(): Tidy instance created!"); } } catch (Exception e) {//TODO replace with proper Exception log.error("Unable to instantiate tidy parser", e); result.setFailure(true); result.setFailureMessage("Unable to instantiate tidy parser"); // return with an error return result; } /* * Run tidy. */ try { log.debug("HTMLAssertions.getResult(): start parsing with tidy ..."); StringWriter errbuf = new StringWriter(); tidy.setErrout(new PrintWriter(errbuf)); // Node node = tidy.parseDOM(new // ByteArrayInputStream(response.getResponseData()), null); ByteArrayOutputStream os = new ByteArrayOutputStream(); log.debug("Start : parse"); Node node = tidy.parse(new ByteArrayInputStream(inResponse.getResponseData()), os); if (log.isDebugEnabled()) { log.debug("node : " + node); log.debug("End : parse"); log.debug("HTMLAssertions.getResult(): parsing with tidy done!"); log.debug("Output: " + os.toString()); } // write output to file writeOutput(errbuf.toString()); // evaluate result if ((tidy.getParseErrors() > getErrorThreshold()) || (!isErrorsOnly() && (tidy.getParseWarnings() > getWarningThreshold()))) { if (log.isDebugEnabled()) { log.debug("HTMLAssertions.getResult(): errors/warnings detected:"); log.debug(errbuf.toString()); } result.setFailure(true); result.setFailureMessage(MessageFormat.format("Tidy Parser errors: " + tidy.getParseErrors() + " (allowed " + getErrorThreshold() + ") " + "Tidy Parser warnings: " + tidy.getParseWarnings() + " (allowed " + getWarningThreshold() + ")", new Object[0])); // return with an error } else if ((tidy.getParseErrors() > 0) || (tidy.getParseWarnings() > 0)) { // return with no error log.debug("HTMLAssertions.getResult(): there were errors/warnings but threshold to high"); result.setFailure(false); } else { // return with no error log.debug("HTMLAssertions.getResult(): no errors/warnings detected:"); result.setFailure(false); } } catch (Exception e) {//TODO replace with proper Exception // return with an error log.warn("Cannot parse result content", e); result.setFailure(true); result.setFailureMessage(e.getMessage()); } return result; } /** * Writes the output of tidy to file. * * @param inOutput */ private void writeOutput(String inOutput) { String lFilename = getFilename(); // check if filename defined if ((lFilename != null) && (!"".equals(lFilename.trim()))) { FileWriter lOutputWriter = null; try { // open file lOutputWriter = new FileWriter(lFilename, false); // write to file lOutputWriter.write(inOutput); // flush lOutputWriter.flush(); if (log.isDebugEnabled()) { log.debug("writeOutput() -> output successfully written to file " + lFilename); } } catch (IOException ex) { log.warn("writeOutput() -> could not write output to file " + lFilename, ex); } finally { // close file IOUtils.closeQuietly(lOutputWriter); } } } /** * Gets the doctype * * @return the documemt type */ public String getDoctype() { return getPropertyAsString(DOCTYPE_KEY); } /** * Check if errors will be reported only * * @return boolean - report errors only? */ public boolean isErrorsOnly() { return getPropertyAsBoolean(ERRORS_ONLY_KEY); } /** * Gets the threshold setting for errors * * @return long error threshold */ public long getErrorThreshold() { return getPropertyAsLong(ERROR_THRESHOLD_KEY); } /** * Gets the threshold setting for warnings * * @return long warning threshold */ public long getWarningThreshold() { return getPropertyAsLong(WARNING_THRESHOLD_KEY); } /** * Sets the doctype setting * * @param inDoctype */ public void setDoctype(String inDoctype) { if ((inDoctype == null) || (inDoctype.trim().equals(""))) { setProperty(new StringProperty(DOCTYPE_KEY, DEFAULT_DOCTYPE)); } else { setProperty(new StringProperty(DOCTYPE_KEY, inDoctype)); } } /** * Sets if errors shoud be tracked only * * @param inErrorsOnly */ public void setErrorsOnly(boolean inErrorsOnly) { setProperty(new BooleanProperty(ERRORS_ONLY_KEY, inErrorsOnly)); } /** * Sets the threshold on error level * * @param inErrorThreshold */ public void setErrorThreshold(long inErrorThreshold) { if (inErrorThreshold < 0L) { throw new IllegalArgumentException(JMeterUtils.getResString("argument_must_not_be_negative")); //$NON-NLS-1$ } if (inErrorThreshold == Long.MAX_VALUE) { setProperty(new LongProperty(ERROR_THRESHOLD_KEY, 0)); } else { setProperty(new LongProperty(ERROR_THRESHOLD_KEY, inErrorThreshold)); } } /** * Sets the threshold on warning level * * @param inWarningThreshold */ public void setWarningThreshold(long inWarningThreshold) { if (inWarningThreshold < 0L) { throw new IllegalArgumentException(JMeterUtils.getResString("argument_must_not_be_negative")); //$NON-NLS-1$ } if (inWarningThreshold == Long.MAX_VALUE) { setProperty(new LongProperty(WARNING_THRESHOLD_KEY, 0)); } else { setProperty(new LongProperty(WARNING_THRESHOLD_KEY, inWarningThreshold)); } } /** * Enables html validation mode */ public void setHTML() { setProperty(new LongProperty(FORMAT_KEY, 0)); } /** * Check if html validation mode is set * * @return boolean */ public boolean isHTML() { return getPropertyAsLong(FORMAT_KEY) == 0; } /** * Enables xhtml validation mode */ public void setXHTML() { setProperty(new LongProperty(FORMAT_KEY, 1)); } /** * Check if xhtml validation mode is set * * @return boolean */ public boolean isXHTML() { return getPropertyAsLong(FORMAT_KEY) == 1; } /** * Enables xml validation mode */ public void setXML() { setProperty(new LongProperty(FORMAT_KEY, 2)); } /** * Check if xml validation mode is set * * @return boolean */ public boolean isXML() { return getPropertyAsLong(FORMAT_KEY) == 2; } /** * Sets the name of the file where tidy writes the output to * * @return name of file */ public String getFilename() { return getPropertyAsString(FILENAME_KEY); } /** * Sets the name of the tidy output file * * @param inName */ public void setFilename(String inName) { setProperty(FILENAME_KEY, inName); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/CompareAssertionResources.properties0000644000175000017500000000260312032647217033360 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Compare Assertion compareChoices.displayName=Select Comparison Operators compareContent.displayName=Compare Content compareContent.shortDescription=Verify that all Samplers within the Controller return the same data compareTime.displayName=Compare Time compareTime.shortDescription=Verify that all Samplers' return times are within a given number of milliseconds comparison_filters.displayName=Comparison Filters stringsToSkip.displayName=Regular Expression Substitutions stringsToSkip.shortDescription=Regular expressions to match elements of response data to be substituted when comparing apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BeanShellAssertion.java0000644000175000017500000001213512032647217030462 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * An Assertion which understands BeanShell * */ public class BeanShellAssertion extends BeanShellTestElement implements Assertion { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 3; public static final String FILENAME = "BeanShellAssertion.filename"; //$NON-NLS-1$ public static final String SCRIPT = "BeanShellAssertion.query"; //$NON-NLS-1$ public static final String PARAMETERS = "BeanShellAssertion.parameters"; //$NON-NLS-1$ public static final String RESET_INTERPRETER = "BeanShellAssertion.resetInterpreter"; //$NON-NLS-1$ // can be specified in jmeter.properties public static final String INIT_FILE = "beanshell.assertion.init"; //$NON-NLS-1$ @Override protected String getInitFileProperty() { return INIT_FILE; } @Override public String getScript() { return getPropertyAsString(SCRIPT); } @Override public String getFilename() { return getPropertyAsString(FILENAME); } @Override public String getParameters() { return getPropertyAsString(PARAMETERS); } @Override public boolean isResetInterpreter() { return getPropertyAsBoolean(RESET_INTERPRETER); } /** * {@inheritDoc} */ public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { result.setFailure(true); result.setError(true); result.setFailureMessage("BeanShell Interpreter not found"); return result; } try { // Add SamplerData for consistency with BeanShell Sampler bshInterpreter.set("SampleResult", response); //$NON-NLS-1$ bshInterpreter.set("Response", response); //$NON-NLS-1$ bshInterpreter.set("ResponseData", response.getResponseData());//$NON-NLS-1$ bshInterpreter.set("ResponseCode", response.getResponseCode());//$NON-NLS-1$ bshInterpreter.set("ResponseMessage", response.getResponseMessage());//$NON-NLS-1$ bshInterpreter.set("ResponseHeaders", response.getResponseHeaders());//$NON-NLS-1$ bshInterpreter.set("RequestHeaders", response.getRequestHeaders());//$NON-NLS-1$ bshInterpreter.set("SampleLabel", response.getSampleLabel());//$NON-NLS-1$ bshInterpreter.set("SamplerData", response.getSamplerData());//$NON-NLS-1$ bshInterpreter.set("Successful", response.isSuccessful());//$NON-NLS-1$ // The following are used to set the Result details on return from // the script: bshInterpreter.set("FailureMessage", "");//$NON-NLS-1$ //$NON-NLS-2$ bshInterpreter.set("Failure", false);//$NON-NLS-1$ processFileOrScript(bshInterpreter); result.setFailureMessage(bshInterpreter.get("FailureMessage").toString());//$NON-NLS-1$ result.setFailure(Boolean.parseBoolean(bshInterpreter.get("Failure") //$NON-NLS-1$ .toString())); result.setError(false); } /* * To avoid class loading problems when the BSH jar is missing, we don't * try to catch this error separately catch (bsh.EvalError ex) { * log.debug("",ex); result.setError(true); * result.setFailureMessage(ex.toString()); } */ // but we do trap this error to make tests work better catch (NoClassDefFoundError ex) { log.error("BeanShell Jar missing? " + ex.toString()); result.setError(true); result.setFailureMessage("BeanShell Jar missing? " + ex.toString()); response.setStopThread(true); // No point continuing } catch (Exception ex) // Mainly for bsh.EvalError { result.setError(true); result.setFailureMessage(ex.toString()); log.warn(ex.toString()); } return result; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/XMLSchemaAssertion.java0000644000175000017500000001564512032647217030417 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.IOException; import java.io.Serializable; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; // See Bug 34383 /** * XMLSchemaAssertion.java Validate response against an XML Schema author Dave Maung * */ public class XMLSchemaAssertion extends AbstractTestElement implements Serializable, Assertion { private static final long serialVersionUID = 233L; public static final String FILE_NAME_IS_REQUIRED = "FileName is required"; public static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; public static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; public static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource"; private static final Logger log = LoggingManager.getLoggerForClass(); public static final String XSD_FILENAME_KEY = "xmlschema_assertion_filename"; /** * getResult * */ public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); // Note: initialised with error = failure = false String resultData = response.getResponseDataAsString(); if (resultData.length() == 0) { return result.setResultForNull(); } String xsdFileName = getXsdFileName(); if (log.isDebugEnabled()) { log.debug("xmlString: " + resultData); log.debug("xsdFileName: " + xsdFileName); } if (xsdFileName == null || xsdFileName.length() == 0) { result.setResultForFailure(FILE_NAME_IS_REQUIRED); } else { setSchemaResult(result, resultData, xsdFileName); } return result; } public void setXsdFileName(String xmlSchemaFileName) throws IllegalArgumentException { setProperty(XSD_FILENAME_KEY, xmlSchemaFileName); } public String getXsdFileName() { return getPropertyAsString(XSD_FILENAME_KEY); } /** * set Schema result * * @param result * @param xmlStr * @param xsdFileName */ private void setSchemaResult(AssertionResult result, String xmlStr, String xsdFileName) { try { // boolean toReturn = true; // Document doc = null; DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance(); parserFactory.setValidating(true); parserFactory.setNamespaceAware(true); parserFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); parserFactory.setAttribute(JAXP_SCHEMA_SOURCE, xsdFileName); // create a parser: DocumentBuilder parser = parserFactory.newDocumentBuilder(); parser.setErrorHandler(new SAXErrorHandler(result)); // doc = parser.parse(new InputSource(new StringReader(xmlStr))); // if everything went fine then xml schema validation is valid } catch (SAXParseException e) { // Only set message if error not yet flagged if (!result.isError() && !result.isFailure()) { result.setError(true); result.setFailureMessage(errorDetails(e)); } } catch (SAXException e) { log.warn(e.toString()); result.setResultForFailure(e.getMessage()); } catch (IOException e) { log.warn("IO error", e); result.setResultForFailure(e.getMessage()); } catch (ParserConfigurationException e) { log.warn("Problem with Parser Config", e); result.setResultForFailure(e.getMessage()); } } // Helper method to construct SAX error details private static String errorDetails(SAXParseException spe) { StringBuilder str = new StringBuilder(80); int i; i = spe.getLineNumber(); if (i != -1) { str.append("line="); str.append(i); str.append(" col="); str.append(spe.getColumnNumber()); str.append(" "); } str.append(spe.getLocalizedMessage()); return str.toString(); } /** * SAXErrorHandler class */ private static class SAXErrorHandler implements ErrorHandler { private final AssertionResult result; public SAXErrorHandler(AssertionResult result) { this.result = result; } /* * Can be caused by: - failure to read XSD file - xml does not match XSD */ public void error(SAXParseException exception) throws SAXParseException { String msg = "error: " + errorDetails(exception); log.debug(msg); result.setFailureMessage(msg); result.setError(true); throw exception; } /* * Can be caused by: - premature end of file - non-whitespace content * after trailer */ public void fatalError(SAXParseException exception) throws SAXParseException { String msg = "fatal: " + errorDetails(exception); log.debug(msg); result.setFailureMessage(msg); result.setError(true); throw exception; } /* * Not clear what can cause this ? conflicting versions perhaps */ public void warning(SAXParseException exception) throws SAXParseException { String msg = "warning: " + errorDetails(exception); log.debug(msg); result.setFailureMessage(msg); // result.setError(true); // TODO is this the correct strategy? // throw exception; // allow assertion to pass } } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/JSR223AssertionResources_fr.properties0000644000175000017500000000326212032647217033350 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Assertion JSR223 filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage JSR223 appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage JSR223, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props SampleResult (avant prev) AssertionResult sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/assertions/CompareAssertionResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/assertions/CompareAssertionResources_fr.propertie0000644000175000017500000000304712032647217033667 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. compareChoices.displayName=Type de comparaison compareContent.displayName=Contenu compareContent.shortDescription=V\u00E9rifie que tous les \u00E9chantillons fils d'un contr\u00F4leur retournent les m\u00EAmes donn\u00E9es compareTime.displayName=Temps de r\u00E9ponse (ms) compareTime.shortDescription=V\u00E9rifie que tous les \u00E9chantillons fils d'un contr\u00F4leur sont retourn\u00E9s dans un nombre donn\u00E9 de millisecondes comparison_filters.displayName=Filtres de comparaison displayName=Assertion Comparaison stringsToSkip.displayName=Substitutions par expressions r\u00E9guli\u00E8res stringsToSkip.shortDescription=Expressions r\u00E9guli\u00E8res pour substituer des \u00E9l\u00E9ments dans les donn\u00E9es de r\u00E9ponses avant la comparaison apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/SizeAssertion.java0000644000175000017500000002062612032647217027543 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.Serializable; import java.text.MessageFormat; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractScopedAssertion; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.util.JMeterUtils; //@see org.apache.jmeter.assertions.SizeAssertionTest for unit tests /** * Checks if the results of a Sample matches a particular size. * */ public class SizeAssertion extends AbstractScopedAssertion implements Serializable, Assertion { private static final long serialVersionUID = 241L; // * Static int to signify the type of logical comparitor to assert public static final int EQUAL = 1; public static final int NOTEQUAL = 2; public static final int GREATERTHAN = 3; public static final int LESSTHAN = 4; public static final int GREATERTHANEQUAL = 5; public static final int LESSTHANEQUAL = 6; /** Key for storing assertion-informations in the jmx-file. */ private static final String SIZE_KEY = "SizeAssertion.size"; // $NON-NLS-1$ private static final String OPERATOR_KEY = "SizeAssertion.operator"; // $NON-NLS-1$ private static final String TEST_FIELD = "Assertion.test_field"; // $NON-NLS-1$ private static final String RESPONSE_NETWORK_SIZE = "SizeAssertion.response_network_size"; // $NON-NLS-1$ private static final String RESPONSE_HEADERS = "SizeAssertion.response_headers"; // $NON-NLS-1$ private static final String RESPONSE_BODY = "SizeAssertion.response_data"; // $NON-NLS-1$ private static final String RESPONSE_CODE = "SizeAssertion.response_code"; // $NON-NLS-1$ private static final String RESPONSE_MESSAGE = "SizeAssertion.response_message"; // $NON-NLS-1$ /** * Returns the result of the Assertion. * Here it checks the Sample responseData length. */ public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); result.setFailure(false); long resultSize=0; if (isScopeVariable()){ String variableName = getVariableName(); String value = getThreadContext().getVariables().get(variableName); try { resultSize = Integer.parseInt(value); } catch (NumberFormatException e) { result.setFailure(true); result.setFailureMessage("Error parsing variable name: "+variableName+" value: "+value); return result; } } else if (isTestFieldResponseHeaders()) { resultSize = response.getHeadersSize(); } else if (isTestFieldResponseBody()) { resultSize = response.getBodySize(); } else if (isTestFieldResponseCode()) { resultSize = response.getResponseCode().length(); } else if (isTestFieldResponseMessage()) { resultSize = response.getResponseMessage().length(); } else { resultSize = response.getBytes(); } // is the Sample the correct size? final String msg = compareSize(resultSize); if (msg.length() > 0) { result.setFailure(true); Object[] arguments = { Long.valueOf(resultSize), msg, Long.valueOf(getAllowedSize()) }; String message = MessageFormat.format(JMeterUtils.getResString("size_assertion_failure"), arguments); //$NON-NLS-1$ result.setFailureMessage(message); } return result; } /** * Returns the size in bytes to be asserted. */ public String getAllowedSize() { return getPropertyAsString(SIZE_KEY); } /*************************************************************************** * set the Operator **************************************************************************/ public void setCompOper(int operator) { setProperty(new IntegerProperty(OPERATOR_KEY, operator)); } /** * Returns the operator to be asserted. EQUAL = 1, NOTEQUAL = 2 GREATERTHAN = * 3,LESSTHAN = 4,GREATERTHANEQUAL = 5,LESSTHANEQUAL = 6 */ public int getCompOper() { return getPropertyAsInt(OPERATOR_KEY); } /** * Set the size that shall be asserted. * * @param size a number of bytes. */ public void setAllowedSize(String size) { setProperty(SIZE_KEY, size); } public void setAllowedSize(long size) { setProperty(SIZE_KEY, Long.toString(size)); } /** * Compares the the size of a return result to the set allowed size using a * logical comparator set in setLogicalComparator(). * * Possible values are: equal, not equal, greater than, less than, greater * than eqaul, less than equal, . * */ private String compareSize(long resultSize) { String comparatorErrorMessage; long allowedSize = Long.parseLong(getAllowedSize()); boolean result = false; int comp = getCompOper(); switch (comp) { case EQUAL: result = (resultSize == allowedSize); comparatorErrorMessage = JMeterUtils.getResString("size_assertion_comparator_error_equal"); //$NON-NLS-1$ break; case NOTEQUAL: result = (resultSize != allowedSize); comparatorErrorMessage = JMeterUtils.getResString("size_assertion_comparator_error_notequal"); //$NON-NLS-1$ break; case GREATERTHAN: result = (resultSize > allowedSize); comparatorErrorMessage = JMeterUtils.getResString("size_assertion_comparator_error_greater"); //$NON-NLS-1$ break; case LESSTHAN: result = (resultSize < allowedSize); comparatorErrorMessage = JMeterUtils.getResString("size_assertion_comparator_error_less"); //$NON-NLS-1$ break; case GREATERTHANEQUAL: result = (resultSize >= allowedSize); comparatorErrorMessage = JMeterUtils.getResString("size_assertion_comparator_error_greaterequal"); //$NON-NLS-1$ break; case LESSTHANEQUAL: result = (resultSize <= allowedSize); comparatorErrorMessage = JMeterUtils.getResString("size_assertion_comparator_error_lessequal"); //$NON-NLS-1$ break; default: result = false; comparatorErrorMessage = "ERROR - invalid condition"; break; } return result ? "" : comparatorErrorMessage; } private void setTestField(String testField) { setProperty(TEST_FIELD, testField); } public void setTestFieldNetworkSize(){ setTestField(RESPONSE_NETWORK_SIZE); } public void setTestFieldResponseHeaders(){ setTestField(RESPONSE_HEADERS); } public void setTestFieldResponseBody(){ setTestField(RESPONSE_BODY); } public void setTestFieldResponseCode(){ setTestField(RESPONSE_CODE); } public void setTestFieldResponseMessage(){ setTestField(RESPONSE_MESSAGE); } public String getTestField() { return getPropertyAsString(TEST_FIELD); } public boolean isTestFieldNetworkSize(){ return RESPONSE_NETWORK_SIZE.equals(getTestField()); } public boolean isTestFieldResponseHeaders(){ return RESPONSE_HEADERS.equals(getTestField()); } public boolean isTestFieldResponseBody(){ return RESPONSE_BODY.equals(getTestField()); } public boolean isTestFieldResponseCode(){ return RESPONSE_CODE.equals(getTestField()); } public boolean isTestFieldResponseMessage(){ return RESPONSE_MESSAGE.equals(getTestField()); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/XPathAssertion.java0000644000175000017500000002063712032647217027657 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.Serializable; import javax.xml.parsers.ParserConfigurationException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.TidyException; import org.apache.jmeter.util.XPathUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.w3c.dom.Document; import org.xml.sax.SAXException; /** * Checks if the result is a well-formed XML content and whether it matches an * XPath * */ public class XPathAssertion extends AbstractTestElement implements Serializable, Assertion { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; //+ JMX file attributes private static final String XPATH_KEY = "XPath.xpath"; // $NON-NLS-1$ private static final String WHITESPACE_KEY = "XPath.whitespace"; // $NON-NLS-1$ private static final String VALIDATE_KEY = "XPath.validate"; // $NON-NLS-1$ private static final String TOLERANT_KEY = "XPath.tolerant"; // $NON-NLS-1$ private static final String NEGATE_KEY = "XPath.negate"; // $NON-NLS-1$ private static final String NAMESPACE_KEY = "XPath.namespace"; // $NON-NLS-1$ private static final String QUIET_KEY = "XPath.quiet"; // $NON-NLS-1$ private static final String REPORT_ERRORS_KEY = "XPath.report_errors"; // $NON-NLS-1$ private static final String SHOW_WARNINGS_KEY = "XPath.show_warnings"; // $NON-NLS-1$ private static final String DOWNLOAD_DTDS = "XPath.download_dtds"; // $NON-NLS-1$ //- JMX file attributes public static final String DEFAULT_XPATH = "/"; /** * Returns the result of the Assertion. Checks if the result is well-formed * XML, and that the XPath expression is matched (or not, as the case may * be) */ public AssertionResult getResult(SampleResult response) { // no error as default AssertionResult result = new AssertionResult(getName()); byte[] responseData = response.getResponseData(); if (responseData.length == 0) { return result.setResultForNull(); } result.setFailure(false); result.setFailureMessage(""); if (log.isDebugEnabled()) { log.debug(new StringBuilder("Validation is set to ").append(isValidating()).toString()); log.debug(new StringBuilder("Whitespace is set to ").append(isWhitespace()).toString()); log.debug(new StringBuilder("Tolerant is set to ").append(isTolerant()).toString()); } Document doc = null; boolean isXML = JOrphanUtils.isXML(responseData); try { doc = XPathUtil.makeDocument(new ByteArrayInputStream(responseData), isValidating(), isWhitespace(), isNamespace(), isTolerant(), isQuiet(), showWarnings() , reportErrors(), isXML , isDownloadDTDs()); } catch (SAXException e) { log.debug("Caught sax exception: " + e); result.setError(true); result.setFailureMessage(new StringBuilder("SAXException: ").append(e.getMessage()).toString()); return result; } catch (IOException e) { log.warn("Cannot parse result content", e); result.setError(true); result.setFailureMessage(new StringBuilder("IOException: ").append(e.getMessage()).toString()); return result; } catch (ParserConfigurationException e) { log.warn("Cannot parse result content", e); result.setError(true); result.setFailureMessage(new StringBuilder("ParserConfigurationException: ").append(e.getMessage()) .toString()); return result; } catch (TidyException e) { result.setError(true); result.setFailureMessage(e.getMessage()); return result; } if (doc == null || doc.getDocumentElement() == null) { result.setError(true); result.setFailureMessage("Document is null, probably not parsable"); return result; } XPathUtil.computeAssertionResult(result, doc, getXPathString(), isNegated()); return result; } /** * Get The XPath String that will be used in matching the document * * @return String xpath String */ public String getXPathString() { return getPropertyAsString(XPATH_KEY, DEFAULT_XPATH); } /** * Set the XPath String this will be used as an xpath * * @param xpath * String */ public void setXPathString(String xpath) { setProperty(new StringProperty(XPATH_KEY, xpath)); } /** * Set whether to ignore element whitespace * * @param whitespace */ public void setWhitespace(boolean whitespace) { setProperty(new BooleanProperty(WHITESPACE_KEY, whitespace)); } /** * Set use validation * * @param validate */ public void setValidating(boolean validate) { setProperty(new BooleanProperty(VALIDATE_KEY, validate)); } /** * Set whether this is namespace aware * * @param namespace */ public void setNamespace(boolean namespace) { setProperty(new BooleanProperty(NAMESPACE_KEY, namespace)); } /** * Set tolerant mode if required * * @param tolerant * true/false */ public void setTolerant(boolean tolerant) { setProperty(new BooleanProperty(TOLERANT_KEY, tolerant)); } public void setNegated(boolean negate) { setProperty(new BooleanProperty(NEGATE_KEY, negate)); } /** * Is this whitepsace ignored. * * @return boolean */ public boolean isWhitespace() { return getPropertyAsBoolean(WHITESPACE_KEY, false); } /** * Is this validating * * @return boolean */ public boolean isValidating() { return getPropertyAsBoolean(VALIDATE_KEY, false); } /** * Is this namespace aware? * * @return boolean */ public boolean isNamespace() { return getPropertyAsBoolean(NAMESPACE_KEY, false); } /** * Is this using tolerant mode? * * @return boolean */ public boolean isTolerant() { return getPropertyAsBoolean(TOLERANT_KEY, false); } /** * Negate the XPath test, that is return true if something is not found. * * @return boolean negated */ public boolean isNegated() { return getPropertyAsBoolean(NEGATE_KEY, false); } public void setReportErrors(boolean val) { setProperty(REPORT_ERRORS_KEY, val, false); } public boolean reportErrors() { return getPropertyAsBoolean(REPORT_ERRORS_KEY, false); } public void setShowWarnings(boolean val) { setProperty(SHOW_WARNINGS_KEY, val, false); } public boolean showWarnings() { return getPropertyAsBoolean(SHOW_WARNINGS_KEY, false); } public void setQuiet(boolean val) { setProperty(QUIET_KEY, val, true); } public boolean isQuiet() { return getPropertyAsBoolean(QUIET_KEY, true); } public void setDownloadDTDs(boolean val) { setProperty(DOWNLOAD_DTDS, val, false); } public boolean isDownloadDTDs() { return getPropertyAsBoolean(DOWNLOAD_DTDS, false); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/CompareAssertionBeanInfo.java0000644000175000017500000000506312032647217031617 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.beans.PropertyDescriptor; import java.util.ArrayList; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.TableEditor; import org.apache.jmeter.util.JMeterUtils; public class CompareAssertionBeanInfo extends BeanInfoSupport { public CompareAssertionBeanInfo() { super(CompareAssertion.class); createPropertyGroup("compareChoices", new String[] { "compareContent", "compareTime" }); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ createPropertyGroup("comparison_filters", new String[]{"stringsToSkip"}); //$NON-NLS-1$ $NON-NLS-2$ PropertyDescriptor p = property("compareContent"); //$NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p = property("compareTime"); //$NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Long.valueOf(-1)); p.setValue(NOT_EXPRESSION, Boolean.FALSE); p = property("stringsToSkip"); //$NON-NLS-1$ p.setPropertyEditorClass(TableEditor.class); p.setValue(TableEditor.CLASSNAME,SubstitutionElement.class.getName()); p.setValue(TableEditor.HEADERS,new String[]{ JMeterUtils.getResString("comparison_regex_string"), //$NON-NLS-1$ JMeterUtils.getResString("comparison_regex_substitution")}); //$NON-NLS-1$ p.setValue(TableEditor.OBJECT_PROPERTIES, // These are the names of the get/set methods new String[]{SubstitutionElement.REGEX, SubstitutionElement.SUBSTITUTE}); p.setValue(NOT_UNDEFINED,Boolean.TRUE); p.setValue(DEFAULT,new ArrayList()); p.setValue(MULTILINE,Boolean.TRUE); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BSFAssertionResources_fr.properties0000644000175000017500000000324312032647217033074 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Assertion BSF filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script en langage BSF appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom de langage BSF, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props SampleResult (aka prev) AssertionResult sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/JSR223Assertion.java0000644000175000017500000000435112032647217027513 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.assertions; import java.io.IOException; import javax.script.Bindings; import javax.script.ScriptEngine; import javax.script.ScriptException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.JSR223TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JSR223Assertion extends JSR223TestElement implements Cloneable, Assertion, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 234L; public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); try { ScriptEngine scriptEngine = getScriptEngine(); Bindings bindings = scriptEngine.createBindings(); bindings.put("SampleResult", response); bindings.put("AssertionResult", result); processFileOrScript(scriptEngine, bindings); result.setError(false); } catch (IOException e) { log.warn("Problem in JSR223 script ", e); result.setError(true); result.setFailureMessage(e.toString()); } catch (ScriptException e) { log.warn("Problem in JSR223 script ", e); result.setError(true); result.setFailureMessage(e.toString()); } return result; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/SubstitutionElement.java0000644000175000017500000000321312032647217030760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import org.apache.jmeter.testelement.AbstractTestElement; public class SubstitutionElement extends AbstractTestElement { private static final long serialVersionUID = 1; // These constants are used both for the JMX file and for the setters/getters public static final String REGEX = "regex"; // $NON-NLS-1$ public static final String SUBSTITUTE = "substitute"; // $NON-NLS-1$ public SubstitutionElement() { super(); } public String getRegex() { return getProperty(REGEX).getStringValue(); } public void setRegex(String regex) { setProperty(REGEX,regex); } public String getSubstitute() { return getProperty(SUBSTITUTE).getStringValue(); } public void setSubstitute(String sub) { setProperty(SUBSTITUTE,sub); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BSFAssertionResources_pt_BR.properties0000644000175000017500000000322412032647217033472 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Asser\u00E7\u00E3o BSF filename.displayName=Nome do Arquivo filename.shortDescription=Arquivo de script (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao script (\=> String Parameters e String []args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao arquivo ou script script.displayName=Script script.shortDescription=Script na linguagem BSF apropriada scriptLanguage.displayName=Linguagem scriptLanguage.shortDescription=Nome da linguagem BSF, ex\: beanshell, javascript, jexl scripting.displayName=Script (vari\u00E1veis\: ctx vars props SampleResult (aka prev) AssertionResult sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Linguagem do script (ex\: beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/MD5HexAssertion.java0000644000175000017500000000750012032647217027657 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * MD5HexAssertion class creates an MD5 checksum from the response
        * and matches it with the MD5 hex provided. * The assertion will fail when the expected hex is different from the
        * one calculated from the response OR when the expected hex is left empty. * */ package org.apache.jmeter.assertions; import java.io.Serializable; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.MessageFormat; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class MD5HexAssertion extends AbstractTestElement implements Serializable, Assertion { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); /** Key for storing assertion-informations in the jmx-file. */ private static final String MD5HEX_KEY = "MD5HexAssertion.size"; /* * @param response @return */ public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); result.setFailure(false); byte[] resultData = response.getResponseData(); if (resultData.length == 0) { result.setError(false); result.setFailure(true); result.setFailureMessage("Response was null"); return result; } // no point in checking if we don't have anything to compare against if (getAllowedMD5Hex().equals("")) { result.setError(false); result.setFailure(true); result.setFailureMessage("MD5Hex to test against is empty"); return result; } String md5Result = baMD5Hex(resultData); // String md5Result = DigestUtils.md5Hex(resultData); if (!md5Result.equalsIgnoreCase(getAllowedMD5Hex())) { result.setFailure(true); Object[] arguments = { md5Result, getAllowedMD5Hex() }; String message = MessageFormat.format(JMeterUtils.getResString("md5hex_assertion_failure"), arguments); // $NON-NLS-1$ result.setFailureMessage(message); } return result; } public void setAllowedMD5Hex(String hex) { setProperty(new StringProperty(MD5HexAssertion.MD5HEX_KEY, hex)); } public String getAllowedMD5Hex() { return getPropertyAsString(MD5HexAssertion.MD5HEX_KEY); } // package protected so can be accessed by test class static String baMD5Hex(byte ba[]) { byte[] md5Result = {}; try { MessageDigest md; md = MessageDigest.getInstance("MD5"); md5Result = md.digest(ba); } catch (NoSuchAlgorithmException e) { log.error("", e); } return JOrphanUtils.baToHexString(md5Result); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/XMLAssertion.java0000644000175000017500000000700712032647217027267 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.IOException; import java.io.Serializable; import java.io.StringReader; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; /** * Checks if the result is a well-formed XML content using jdom * */ public class XMLAssertion extends AbstractTestElement implements Serializable, Assertion { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final char NEW_LINE = '\n'; // $NON-NLS-1$ // one builder for all requests in a thread private static final ThreadLocal myBuilder = new ThreadLocal() { @Override protected SAXBuilder initialValue() { return new SAXBuilder(); } }; /** * Returns the result of the Assertion. Here it checks wether the Sample * took to long to be considered successful. If so an AssertionResult * containing a FailureMessage will be returned. Otherwise the returned * AssertionResult will reflect the success of the Sample. */ public AssertionResult getResult(SampleResult response) { // no error as default AssertionResult result = new AssertionResult(getName()); byte[] responseData = response.getResponseData(); if (responseData.length == 0) { return result.setResultForNull(); } result.setFailure(false); // the result data String resultData = new String(getResultBody(responseData)); // TODO - charset? SAXBuilder builder = myBuilder.get(); try { builder.build(new StringReader(resultData)); } catch (JDOMException e) { log.debug("Cannot parse result content", e); // may well happen result.setFailure(true); result.setFailureMessage(e.getMessage()); } catch (IOException e) { log.error("Cannot read result content", e); // should never happen result.setError(true); result.setFailureMessage(e.getMessage()); } return result; } /** * Return the body of the http return. */ private byte[] getResultBody(byte[] resultData) { for (int i = 0; i < (resultData.length - 1); i++) { if (resultData[i] == NEW_LINE && resultData[i + 1] == NEW_LINE) { return JOrphanUtils.getByteArraySlice(resultData, (i + 2), resultData.length - 1); } } return resultData; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/0000755000175000017500000000000012165514773024663 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/MD5HexAssertionGUI.java0000644000175000017500000000660512032647217031015 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** * GUI class supporting the MD5Hex assertion functionality. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.assertions.MD5HexAssertion; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class MD5HexAssertionGUI extends AbstractAssertionGui { private static final long serialVersionUID = 240L; private JTextField md5HexInput; public MD5HexAssertionGUI() { init(); } private void init() { setLayout(new BorderLayout(0, 10)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); // USER_INPUT HorizontalPanel md5HexPanel = new HorizontalPanel(); md5HexPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("md5hex_assertion_md5hex_test"))); // $NON-NLS-1$ md5HexPanel.add(new JLabel(JMeterUtils.getResString("md5hex_assertion_label"))); //$NON-NLS-1$ md5HexInput = new JTextField(25); // md5HexInput.addFocusListener(this); md5HexPanel.add(md5HexInput); mainPanel.add(md5HexPanel, BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } @Override public void configure(TestElement el) { super.configure(el); MD5HexAssertion assertion = (MD5HexAssertion) el; this.md5HexInput.setText(String.valueOf(assertion.getAllowedMD5Hex())); } public String getLabelResource() { return "md5hex_assertion_title"; // $NON-NLS-1$ } /* * @return */ public TestElement createTestElement() { MD5HexAssertion el = new MD5HexAssertion(); modifyTestElement(el); return el; } /* * @param element */ public void modifyTestElement(TestElement element) { configureTestElement(element); String md5HexString = this.md5HexInput.getText(); // initialize to empty string, this will fail the assertion if (md5HexString == null || md5HexString.length() == 0) { md5HexString = ""; } ((MD5HexAssertion) element).setAllowedMD5Hex(md5HexString); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); md5HexInput.setText(""); //$NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/XPathPanel.java0000644000175000017500000001375512032647217027536 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.XPathUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; public class XPathPanel extends JPanel { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private JCheckBox negated; private JTextField xpath; private JButton checkXPath; /** * */ public XPathPanel() { super(); init(); } private void init() { Box hbox = Box.createHorizontalBox(); hbox.add(Box.createHorizontalGlue()); hbox.add(getXPathTextField()); hbox.add(Box.createHorizontalGlue()); hbox.add(getCheckXPathButton()); Box vbox = Box.createVerticalBox(); vbox.add(hbox); vbox.add(Box.createVerticalGlue()); vbox.add(getNegatedCheckBox()); add(vbox); setDefaultValues(); } public void setDefaultValues() { setXPath("/"); //$NON-NLS-1$ setNegated(false); } /** * Get the XPath String * * @return String */ public String getXPath() { return this.xpath.getText(); } /** * Set the string that will be used in the xpath evaluation * * @param xpath */ public void setXPath(String xpath) { this.xpath.setText(xpath); } /** * Does this negate the xpath results * * @return boolean */ public boolean isNegated() { return this.negated.isSelected(); } /** * Set this to true, if you want success when the xpath does not match. * * @param negated */ public void setNegated(boolean negated) { this.negated.setSelected(negated); } /** * Negated chechbox * * @return JCheckBox */ public JCheckBox getNegatedCheckBox() { if (negated == null) { negated = new JCheckBox(JMeterUtils.getResString("xpath_assertion_negate"), false); //$NON-NLS-1$ } return negated; } /** * Check XPath button * * @return JButton */ public JButton getCheckXPathButton() { if (checkXPath == null) { checkXPath = new JButton(JMeterUtils.getResString("xpath_assertion_button")); //$NON-NLS-1$ checkXPath.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { validXPath(xpath.getText(), true); } }); } return checkXPath; } public JTextField getXPathTextField() { if (xpath == null) { xpath = new JTextField(50); } return xpath; } /** * @return Returns the showNegate. */ public boolean isShowNegated() { return this.getNegatedCheckBox().isVisible(); } /** * @param showNegate * The showNegate to set. */ public void setShowNegated(boolean showNegate) { getNegatedCheckBox().setVisible(showNegate); } /** * Test whether an XPath is valid. It seems the Xalan has no easy way to * check, so this creates a dummy test document, then tries to evaluate the xpath against it. * * @param xpathString * XPath String to validate * @param showDialog * weather to show a dialog * @return returns true if valid, valse otherwise. */ public static boolean validXPath(String xpathString, boolean showDialog) { String ret = null; boolean success = true; Document testDoc = null; try { testDoc = XPathUtil.makeDocumentBuilder(false, false, false, false).newDocument(); Element el = testDoc.createElement("root"); //$NON-NLS-1$ testDoc.appendChild(el); XPathUtil.validateXPath(testDoc, xpathString); } catch (IllegalArgumentException e) { log.warn(e.getLocalizedMessage()); success = false; ret = e.getLocalizedMessage(); } catch (ParserConfigurationException e) { success = false; ret = e.getLocalizedMessage(); } catch (TransformerException e) { success = false; ret = e.getLocalizedMessage(); } if (showDialog) { JOptionPane.showMessageDialog(null, (success) ? JMeterUtils.getResString("xpath_assertion_valid") : ret, //$NON-NLS-1$ (success) ? JMeterUtils.getResString("xpath_assertion_valid") : JMeterUtils //$NON-NLS-1$ .getResString("xpath_assertion_failed"), (success) ? JOptionPane.INFORMATION_MESSAGE //$NON-NLS-1$ : JOptionPane.ERROR_MESSAGE); } return success; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/SizeAssertionGui.java0000644000175000017500000002407012032647217030771 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import org.apache.jmeter.assertions.SizeAssertion; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; /** * GUI for {@link SizeAssertion} */ public class SizeAssertionGui extends AbstractAssertionGui implements ActionListener { private static final long serialVersionUID = 241L; /** Radio button indicating that the body response should be tested. */ private JRadioButton responseBodyButton; /** Radio button indicating that the network response size should be tested. */ private JRadioButton responseNetworkButton; /** Radio button indicating that the responseMessage should be tested. */ private JRadioButton responseMessageButton; /** Radio button indicating that the responseCode should be tested. */ private JRadioButton responseCodeButton; /** Radio button indicating that the headers should be tested. */ private JRadioButton responseHeadersButton; private JTextField size; private JRadioButton equalButton, notequalButton, greaterthanButton, lessthanButton, greaterthanequalButton, lessthanequalButton; private int execState; // store the operator public SizeAssertionGui() { init(); } public String getLabelResource() { return "size_assertion_title"; //$NON-NLS-1$ } public TestElement createTestElement() { SizeAssertion el = new SizeAssertion(); modifyTestElement(el); return el; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { configureTestElement(el); SizeAssertion assertion = (SizeAssertion) el; if (responseHeadersButton.isSelected()) { assertion.setTestFieldResponseHeaders(); } else if (responseBodyButton.isSelected()) { assertion.setTestFieldResponseBody(); } else if (responseCodeButton.isSelected()) { assertion.setTestFieldResponseCode(); } else if (responseMessageButton.isSelected()) { assertion.setTestFieldResponseMessage(); } else { assertion.setTestFieldNetworkSize(); } assertion.setAllowedSize(size.getText()); assertion.setCompOper(getState()); saveScopeSettings(assertion); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); responseNetworkButton.setSelected(true); // default responseHeadersButton.setSelected(false); responseBodyButton.setSelected(false); responseCodeButton.setSelected(false); responseMessageButton.setSelected(false); size.setText(""); //$NON-NLS-1$ equalButton.setSelected(true); notequalButton.setSelected(false); greaterthanButton.setSelected(false); lessthanButton.setSelected(false); greaterthanequalButton.setSelected(false); lessthanequalButton.setSelected(false); execState = SizeAssertion.EQUAL; } @Override public void configure(TestElement el) { super.configure(el); SizeAssertion assertion = (SizeAssertion) el; size.setText(assertion.getAllowedSize()); setState(assertion.getCompOper()); showScopeSettings(assertion, true); if (assertion.isTestFieldResponseHeaders()) { responseHeadersButton.setSelected(true); } else if (assertion.isTestFieldResponseBody()) { responseBodyButton.setSelected(true); } else if (assertion.isTestFieldResponseCode()) { responseCodeButton.setSelected(true); } else if (assertion.isTestFieldResponseMessage()) { responseMessageButton.setSelected(true); } else { responseNetworkButton.setSelected(true); } } /** * Set the state of the radio Button */ public void setState(int state) { if (state == SizeAssertion.EQUAL) { equalButton.setSelected(true); execState = state; } else if (state == SizeAssertion.NOTEQUAL) { notequalButton.setSelected(true); execState = state; } else if (state == SizeAssertion.GREATERTHAN) { greaterthanButton.setSelected(true); execState = state; } else if (state == SizeAssertion.LESSTHAN) { lessthanButton.setSelected(true); execState = state; } else if (state == SizeAssertion.GREATERTHANEQUAL) { greaterthanequalButton.setSelected(true); execState = state; } else if (state == SizeAssertion.LESSTHANEQUAL) { lessthanequalButton.setSelected(true); execState = state; } } /** * Get the state of the radio Button */ public int getState() { return execState; } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); add(createScopePanel(true)); add(createFieldPanel()); // USER_INPUT JPanel sizePanel = new JPanel(); sizePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("size_assertion_size_test"))); //$NON-NLS-1$ sizePanel.add(new JLabel(JMeterUtils.getResString("size_assertion_label"))); //$NON-NLS-1$ size = new JTextField(12); sizePanel.add(size); sizePanel.add(createComparatorButtonPanel()); add(sizePanel); } /** * Create a panel allowing the user to choose which response field should be * tested. * * @return a new panel for selecting the response field */ private JPanel createFieldPanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("assertion_resp_size_field"))); //$NON-NLS-1$ responseNetworkButton = new JRadioButton(JMeterUtils.getResString("assertion_network_size")); //$NON-NLS-1$ responseHeadersButton = new JRadioButton(JMeterUtils.getResString("assertion_headers")); //$NON-NLS-1$ responseBodyButton = new JRadioButton(JMeterUtils.getResString("assertion_body_resp")); //$NON-NLS-1$ responseCodeButton = new JRadioButton(JMeterUtils.getResString("assertion_code_resp")); //$NON-NLS-1$ responseMessageButton = new JRadioButton(JMeterUtils.getResString("assertion_message_resp")); //$NON-NLS-1$ ButtonGroup group = new ButtonGroup(); group.add(responseNetworkButton); group.add(responseHeadersButton); group.add(responseBodyButton); group.add(responseCodeButton); group.add(responseMessageButton); panel.add(responseNetworkButton); panel.add(responseHeadersButton); panel.add(responseBodyButton); panel.add(responseCodeButton); panel.add(responseMessageButton); responseNetworkButton.setSelected(true); return panel; } private Box createComparatorButtonPanel() { ButtonGroup group = new ButtonGroup(); equalButton = createComparatorButton("=", SizeAssertion.EQUAL, group); //$NON-NLS-1$ notequalButton = createComparatorButton("!=", SizeAssertion.NOTEQUAL, group); //$NON-NLS-1$ greaterthanButton = createComparatorButton(">", SizeAssertion.GREATERTHAN, group); //$NON-NLS-1$ lessthanButton = createComparatorButton("<", SizeAssertion.LESSTHAN, group); //$NON-NLS-1$ greaterthanequalButton = createComparatorButton(">=", SizeAssertion.GREATERTHANEQUAL, group); //$NON-NLS-1$ lessthanequalButton = createComparatorButton("<=", SizeAssertion.LESSTHANEQUAL, group); //$NON-NLS-1$ equalButton.setSelected(true); execState = Integer.parseInt(equalButton.getActionCommand()); // Put the check boxes in a column in a panel Box checkPanel = Box.createVerticalBox(); JLabel compareLabel = new JLabel(JMeterUtils.getResString("size_assertion_comparator_label")); //$NON-NLS-1$ checkPanel.add(compareLabel); checkPanel.add(equalButton); checkPanel.add(notequalButton); checkPanel.add(greaterthanButton); checkPanel.add(lessthanButton); checkPanel.add(greaterthanequalButton); checkPanel.add(lessthanequalButton); return checkPanel; } private JRadioButton createComparatorButton(String name, int value, ButtonGroup group) { JRadioButton button = new JRadioButton(name); button.setActionCommand(String.valueOf(value)); button.addActionListener(this); group.add(button); return button; } public void actionPerformed(ActionEvent e) { int comparator = Integer.parseInt(e.getActionCommand()); execState = comparator; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/DurationAssertionGui.java0000644000175000017500000000747612032647217031657 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.assertions.DurationAssertion; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * GUI for {@link DurationAssertion} */ public class DurationAssertionGui extends AbstractAssertionGui { private static final long serialVersionUID = 240L; private JTextField duration; public DurationAssertionGui() { init(); } public String getLabelResource() { return "duration_assertion_title"; // $NON-NLS-1$ } public String getDurationAttributesTitle() { return JMeterUtils.getResString("duration_assertion_duration_test"); // $NON-NLS-1$ } public TestElement createTestElement() { DurationAssertion el = new DurationAssertion(); modifyTestElement(el); return el; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { configureTestElement(el); if (el instanceof DurationAssertion) { DurationAssertion assertion = (DurationAssertion) el; assertion.setProperty(DurationAssertion.DURATION_KEY,duration.getText()); saveScopeSettings(assertion); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); duration.setText(""); //$NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); if (el instanceof DurationAssertion){ DurationAssertion da = (DurationAssertion) el; duration.setText(da.getPropertyAsString(DurationAssertion.DURATION_KEY)); showScopeSettings(da); } } private void init() { setLayout(new BorderLayout(0, 10)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new VerticalPanel(); mainPanel.add(createScopePanel()); // USER_INPUT VerticalPanel durationPanel = new VerticalPanel(); durationPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), getDurationAttributesTitle())); JPanel labelPanel = new JPanel(new BorderLayout(5, 0)); JLabel durationLabel = new JLabel(JMeterUtils.getResString("duration_assertion_label")); // $NON-NLS-1$ labelPanel.add(durationLabel, BorderLayout.WEST); duration = new JTextField(); labelPanel.add(duration, BorderLayout.CENTER); durationLabel.setLabelFor(duration); durationPanel.add(labelPanel); mainPanel.add(durationPanel); add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/XMLAssertionGui.java0000644000175000017500000000376712032647217030531 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import org.apache.jmeter.assertions.XMLAssertion; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.gui.layout.VerticalLayout; public class XMLAssertionGui extends AbstractAssertionGui { private static final long serialVersionUID = 240L; /** * The constructor. */ public XMLAssertionGui() { init(); } /** * Returns the label to be shown within the JTree-Component. */ public String getLabelResource() { return "xml_assertion_title"; // $NON-NLS-1$ } public TestElement createTestElement() { XMLAssertion el = new XMLAssertion(); modifyTestElement(el); return el; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { configureTestElement(el); } /** * Inits the GUI. */ private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/SMIMEAssertionGui.java0000644000175000017500000002216012032647217030727 0ustar ebourgebourg /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.assertions.SMIMEAssertionTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class SMIMEAssertionGui extends AbstractAssertionGui { private static final long serialVersionUID = 1L; private final JCheckBox verifySignature = new JCheckBox(JMeterUtils.getResString("smime_assertion_verify_signature")); // $NON-NLS-1$ private final JCheckBox notSigned = new JCheckBox(JMeterUtils.getResString("smime_assertion_not_signed")); // $NON-NLS-1$ private final JRadioButton signerNoCheck = new JRadioButton(JMeterUtils.getResString("smime_assertion_signer_no_check")); // $NON-NLS-1$ private final JRadioButton signerCheckConstraints = new JRadioButton(JMeterUtils.getResString("smime_assertion_signer_constraints")); // $NON-NLS-1$ private final JRadioButton signerCheckByFile = new JRadioButton(JMeterUtils.getResString("smime_assertion_signer_by_file")); // $NON-NLS-1$ private final JTextField signerDnField = new JTextField(50); private final JTextField signerSerialNumberField = new JTextField(25); private final JTextField signerEmailField = new JTextField(25); private final JTextField issuerDnField = new JTextField(50); private final JTextField signerCertFile = new JTextField(25); private final JTextField messagePositionTf = new JTextField(25); public SMIMEAssertionGui() { init(); } public String getLabelResource() { return "smime_assertion_title"; } /** * {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); issuerDnField.setText(""); messagePositionTf.setText(""); notSigned.setSelected(false); signerCertFile.setText(""); signerCheckByFile.setSelected(false); signerCheckConstraints.setSelected(false); signerDnField.setText(""); signerEmailField.setText(""); signerNoCheck.setSelected(false); signerSerialNumberField.setText(""); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createSignaturePanel()); box.add(createSignerPanel()); box.add(createMessagePositionPanel()); add(box, BorderLayout.NORTH); } private JPanel createSignaturePanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils .getResString("smime_assertion_signature"))); // $NON-NLS-1$ notSigned.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { verifySignature.setEnabled(!notSigned.isSelected()); } }); panel.add(verifySignature); panel.add(notSigned); return panel; } private JPanel createSignerPanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils .getResString("smime_assertion_signer"))); // $NON-NLS-1$ panel.setLayout(new VerticalLayout(5, VerticalLayout.LEFT)); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(signerNoCheck); buttonGroup.add(signerCheckConstraints); buttonGroup.add(signerCheckByFile); panel.add(signerNoCheck); panel.add(signerCheckConstraints); signerCheckConstraints.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { signerDnField.setEnabled(signerCheckConstraints.isSelected()); signerSerialNumberField.setEnabled(signerCheckConstraints.isSelected()); signerEmailField.setEnabled(signerCheckConstraints.isSelected()); issuerDnField.setEnabled(signerCheckConstraints.isSelected()); } }); Box box = Box.createHorizontalBox(); box.add(new JLabel(JMeterUtils.getResString("smime_assertion_signer_dn"))); // $NON-NLS-1$ box.add(Box.createHorizontalStrut(5)); box.add(signerDnField); panel.add(box); box = Box.createHorizontalBox(); box.add(new JLabel(JMeterUtils.getResString("smime_assertion_signer_email"))); // $NON-NLS-1$ box.add(Box.createHorizontalStrut(5)); box.add(signerEmailField); panel.add(box); box = Box.createHorizontalBox(); box.add(new JLabel(JMeterUtils.getResString("smime_assertion_issuer_dn"))); // $NON-NLS-1$ box.add(Box.createHorizontalStrut(5)); box.add(issuerDnField); panel.add(box); box = Box.createHorizontalBox(); box.add(new JLabel(JMeterUtils.getResString("smime_assertion_signer_serial"))); // $NON-NLS-1$ box.add(Box.createHorizontalStrut(5)); box.add(signerSerialNumberField); panel.add(box); // panel.add(signerCheckByFile); signerCheckByFile.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { signerCertFile.setEnabled(signerCheckByFile.isSelected()); } }); box = Box.createHorizontalBox(); box.add(signerCheckByFile); box.add(Box.createHorizontalStrut(5)); box.add(signerCertFile); panel.add(box); return panel; } private JPanel createMessagePositionPanel(){ JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils .getResString("smime_assertion_message_position"))); // $NON-NLS-1$ panel.add(messagePositionTf); return panel; } @Override public void configure(TestElement el) { super.configure(el); SMIMEAssertionTestElement smimeAssertion = (SMIMEAssertionTestElement) el; verifySignature.setSelected(smimeAssertion.isVerifySignature()); notSigned.setSelected(smimeAssertion.isNotSigned()); if (smimeAssertion.isSignerNoCheck()) { signerNoCheck.setSelected(true); } if (smimeAssertion.isSignerCheckConstraints()) { signerCheckConstraints.setSelected(true); } if (smimeAssertion.isSignerCheckByFile()) { signerCheckByFile.setSelected(true); } issuerDnField.setText(smimeAssertion.getIssuerDn()); signerDnField.setText(smimeAssertion.getSignerDn()); signerSerialNumberField.setText(smimeAssertion.getSignerSerial()); signerEmailField.setText(smimeAssertion.getSignerEmail()); signerCertFile.setText(smimeAssertion.getSignerCertFile()); messagePositionTf.setText(smimeAssertion.getSpecificMessagePosition()); } public void modifyTestElement(TestElement el) { configureTestElement(el); SMIMEAssertionTestElement smimeAssertion = (SMIMEAssertionTestElement) el; smimeAssertion.setVerifySignature(verifySignature.isSelected()); smimeAssertion.setNotSigned(notSigned.isSelected()); smimeAssertion.setIssuerDn(issuerDnField.getText()); smimeAssertion.setSignerDn(signerDnField.getText()); smimeAssertion.setSignerSerial(signerSerialNumberField.getText()); smimeAssertion.setSignerEmail(signerEmailField.getText()); smimeAssertion.setSignerCertFile(signerCertFile.getText()); smimeAssertion.setSignerNoCheck(signerNoCheck.isSelected()); smimeAssertion.setSignerCheckConstraints(signerCheckConstraints.isSelected()); smimeAssertion.setSignerCheckByFile(signerCheckByFile.isSelected()); smimeAssertion.setSpecificMessagePosition(messagePositionTf.getText()); } public TestElement createTestElement() { SMIMEAssertionTestElement smimeAssertion = new SMIMEAssertionTestElement(); modifyTestElement(smimeAssertion); return smimeAssertion; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/BeanShellAssertionGui.java0000644000175000017500000001415612032647217031720 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.jmeter.assertions.BeanShellAssertion; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.util.JMeterUtils; public class BeanShellAssertionGui extends AbstractAssertionGui { private static final long serialVersionUID = 240L; private JCheckBox resetInterpreter;// reset the bsh.Interpreter before each execution private JTextField filename;// script file name (if present) private JTextField parameters;// parameters to pass to script file (or script) private JTextArea scriptField;// script area public BeanShellAssertionGui() { init(); } @Override public void configure(TestElement element) { scriptField.setText(element.getPropertyAsString(BeanShellAssertion.SCRIPT)); filename.setText(element.getPropertyAsString(BeanShellAssertion.FILENAME)); parameters.setText(element.getPropertyAsString(BeanShellAssertion.PARAMETERS)); resetInterpreter.setSelected(element.getPropertyAsBoolean(BeanShellAssertion.RESET_INTERPRETER)); super.configure(element); } public TestElement createTestElement() { BeanShellAssertion sampler = new BeanShellAssertion(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement te) { te.clear(); this.configureTestElement(te); te.setProperty(BeanShellAssertion.SCRIPT, scriptField.getText()); te.setProperty(BeanShellAssertion.FILENAME, filename.getText()); te.setProperty(BeanShellAssertion.PARAMETERS, parameters.getText()); te.setProperty(new BooleanProperty(BeanShellAssertion.RESET_INTERPRETER, resetInterpreter.isSelected())); } public String getLabelResource() { return "bsh_assertion_title"; // $NON-NLS-1$ } private JPanel createFilenamePanel()// TODO ought to be a FileChooser ... { JLabel label = new JLabel(JMeterUtils.getResString("bsh_script_file")); //$NON-NLS-1$ filename = new JTextField(10); filename.setName(BeanShellAssertion.FILENAME); label.setLabelFor(filename); JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); filenamePanel.add(label, BorderLayout.WEST); filenamePanel.add(filename, BorderLayout.CENTER); return filenamePanel; } private JPanel createResetPanel() { resetInterpreter = new JCheckBox(JMeterUtils.getResString("bsh_script_reset_interpreter")); // $NON-NLS-1$ resetInterpreter.setName(BeanShellAssertion.PARAMETERS); JPanel resetInterpreterPanel = new JPanel(new BorderLayout()); resetInterpreterPanel.add(resetInterpreter, BorderLayout.WEST); return resetInterpreterPanel; } private JPanel createParameterPanel() { JLabel label = new JLabel(JMeterUtils.getResString("bsh_script_parameters")); //$NON-NLS-1$ parameters = new JTextField(10); parameters.setName(BeanShellAssertion.PARAMETERS); label.setLabelFor(parameters); JPanel parameterPanel = new JPanel(new BorderLayout(5, 0)); parameterPanel.add(label, BorderLayout.WEST); parameterPanel.add(parameters, BorderLayout.CENTER); return parameterPanel; } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createResetPanel()); box.add(createParameterPanel()); box.add(createFilenamePanel()); add(box, BorderLayout.NORTH); JPanel panel = createScriptPanel(); add(panel, BorderLayout.CENTER); // Don't let the input field shrink too much add(Box.createVerticalStrut(panel.getPreferredSize().height), BorderLayout.WEST); } private JPanel createScriptPanel() { scriptField = new JTextArea(); scriptField.setRows(4); scriptField.setLineWrap(true); scriptField.setWrapStyleWord(true); JLabel label = new JLabel(JMeterUtils.getResString("bsh_assertion_script")); //$NON-NLS-1$ label.setLabelFor(scriptField); JPanel panel = new JPanel(new BorderLayout()); panel.add(label, BorderLayout.NORTH); panel.add(new JScrollPane(scriptField), BorderLayout.CENTER); JTextArea explain = new JTextArea(JMeterUtils.getResString("bsh_assertion_script_variables")); //$NON-NLS-1$ explain.setLineWrap(true); explain.setEditable(false); explain.setBackground(this.getBackground()); panel.add(explain, BorderLayout.SOUTH); return panel; } @Override public void clearGui() { super.clearGui(); filename.setText(""); // $NON-NLS-1$ parameters.setText(""); // $NON-NLS-1$ scriptField.setText(""); // $NON-NLS-1$ resetInterpreter.setSelected(false); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/XMLSchemaAssertionGUI.java0000644000175000017500000001033412032647217031536 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; // import javax.swing.event.ChangeEvent; import org.apache.jmeter.assertions.XMLSchemaAssertion; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; // See Bug 34383 /** * XMLSchemaAssertionGUI.java author Dave Maung * */ public class XMLSchemaAssertionGUI extends AbstractAssertionGui { // class attributes private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private JTextField xmlSchema; /** * The constructor. */ public XMLSchemaAssertionGUI() { init(); } /** * Returns the label to be shown within the JTree-Component. */ public String getLabelResource() { return "xmlschema_assertion_title"; //$NON-NLS-1$ } /** * create Test Element */ public TestElement createTestElement() { log.debug("XMLSchemaAssertionGui.createTestElement() called"); XMLSchemaAssertion el = new XMLSchemaAssertion(); modifyTestElement(el); return el; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement inElement) { log.debug("XMLSchemaAssertionGui.modifyTestElement() called"); configureTestElement(inElement); ((XMLSchemaAssertion) inElement).setXsdFileName(xmlSchema.getText()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); xmlSchema.setText(""); //$NON-NLS-1$ } /** * Configures the GUI from the associated test element. * * @param el - * the test element (should be XMLSchemaAssertion) */ @Override public void configure(TestElement el) { super.configure(el); XMLSchemaAssertion assertion = (XMLSchemaAssertion) el; xmlSchema.setText(assertion.getXsdFileName()); } /** * Inits the GUI. */ private void init() { setLayout(new BorderLayout(0, 10)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); // USER_INPUT VerticalPanel assertionPanel = new VerticalPanel(); assertionPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "XML Schema")); // doctype HorizontalPanel xmlSchemaPanel = new HorizontalPanel(); xmlSchemaPanel.add(new JLabel(JMeterUtils.getResString("xmlschema_assertion_label"))); //$NON-NLS-1$ xmlSchema = new JTextField(26); xmlSchemaPanel.add(xmlSchema); assertionPanel.add(xmlSchemaPanel); mainPanel.add(assertionPanel, BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } // public void stateChanged(ChangeEvent e) { // log.debug("XMLSchemaAssertionGui.stateChanged() called"); // } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/AssertionGui.java0000644000175000017500000003414212032647217030137 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JTable; import org.apache.jmeter.assertions.ResponseAssertion; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.PowerTableModel; import org.apache.jmeter.gui.util.TextAreaCellRenderer; import org.apache.jmeter.gui.util.TextAreaTableCellEditor; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; /** * GUI interface for a {@link ResponseAssertion}. * */ public class AssertionGui extends AbstractAssertionGui { private static final long serialVersionUID = 240L; /** The name of the table column in the list of patterns. */ private static final String COL_RESOURCE_NAME = "assertion_patterns_to_test"; //$NON-NLS-1$ /** Radio button indicating that the text response should be tested. */ private JRadioButton responseStringButton; /** Radio button indicating that the URL should be tested. */ private JRadioButton urlButton; /** Radio button indicating that the responseMessage should be tested. */ private JRadioButton responseMessageButton; /** Radio button indicating that the responseCode should be tested. */ private JRadioButton responseCodeButton; /** Radio button indicating that the headers should be tested. */ private JRadioButton responseHeadersButton; /** * Checkbox to indicate whether the response should be forced successful * before testing. This is intended for use when checking the status code or * status message. */ private JCheckBox assumeSuccess; /** * Radio button indicating to test if the field contains one of the * patterns. */ private JRadioButton containsBox; /** * Radio button indicating to test if the field matches one of the patterns. */ private JRadioButton matchesBox; /** * Radio button indicating if the field equals the string. */ private JRadioButton equalsBox; /** * Radio button indicating if the field contains the string. */ private JRadioButton substringBox; /** * Checkbox indicating to test that the field does NOT contain/match the * patterns. */ private JCheckBox notBox; /** A table of patterns to test against. */ private JTable stringTable; /** Button to delete a pattern. */ private JButton deletePattern; /** Table model for the pattern table. */ private PowerTableModel tableModel; /** * Create a new AssertionGui panel. */ public AssertionGui() { init(); } public String getLabelResource() { return "assertion_title"; // $NON-NLS-1$ } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { ResponseAssertion el = new ResponseAssertion(); modifyTestElement(el); return el; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { configureTestElement(el); if (el instanceof ResponseAssertion) { ResponseAssertion ra = (ResponseAssertion) el; saveScopeSettings(ra); ra.clearTestStrings(); String[] testStrings = tableModel.getData().getColumn(COL_RESOURCE_NAME); for (int i = 0; i < testStrings.length; i++) { ra.addTestString(testStrings[i]); } if (responseStringButton.isSelected()) { ra.setTestFieldResponseData(); } else if (responseCodeButton.isSelected()) { ra.setTestFieldResponseCode(); } else if (responseMessageButton.isSelected()) { ra.setTestFieldResponseMessage(); } else if (responseHeadersButton.isSelected()) { ra.setTestFieldResponseHeaders(); } else { // Assume URL ra.setTestFieldURL(); } ra.setAssumeSuccess(assumeSuccess.isSelected()); if (containsBox.isSelected()) { ra.setToContainsType(); } else if (equalsBox.isSelected()) { ra.setToEqualsType(); } else if (substringBox.isSelected()) { ra.setToSubstringType(); } else { ra.setToMatchType(); } if (notBox.isSelected()) { ra.setToNotType(); } else { ra.unsetNotType(); } } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); tableModel.clearData(); responseStringButton.setSelected(true); urlButton.setSelected(false); responseCodeButton.setSelected(false); responseMessageButton.setSelected(false); responseHeadersButton.setSelected(false); assumeSuccess.setSelected(false); containsBox.setSelected(true); notBox.setSelected(false); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param el * the TestElement to configure */ @Override public void configure(TestElement el) { super.configure(el); ResponseAssertion model = (ResponseAssertion) el; showScopeSettings(model, true); if (model.isContainsType()) { containsBox.setSelected(true); } else if (model.isEqualsType()) { equalsBox.setSelected(true); } else if (model.isSubstringType()) { substringBox.setSelected(true); } else { matchesBox.setSelected(true); } notBox.setSelected(model.isNotType()); if (model.isTestFieldResponseData()) { responseStringButton.setSelected(true); } else if (model.isTestFieldResponseCode()) { responseCodeButton.setSelected(true); } else if (model.isTestFieldResponseMessage()) { responseMessageButton.setSelected(true); } else if (model.isTestFieldResponseHeaders()) { responseHeadersButton.setSelected(true); } else // Assume it is the URL { urlButton.setSelected(true); } assumeSuccess.setSelected(model.getAssumeSuccess()); tableModel.clearData(); PropertyIterator tests = model.getTestStrings().iterator(); while (tests.hasNext()) { tableModel.addRow(new Object[] { tests.next().getStringValue() }); } if (model.getTestStrings().size() == 0) { deletePattern.setEnabled(false); } else { deletePattern.setEnabled(true); } tableModel.fireTableDataChanged(); } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout()); Box box = Box.createVerticalBox(); setBorder(makeBorder()); box.add(makeTitlePanel()); box.add(createScopePanel(true)); box.add(createFieldPanel()); box.add(createTypePanel()); add(box, BorderLayout.NORTH); add(createStringPanel(), BorderLayout.CENTER); } /** * Create a panel allowing the user to choose which response field should be * tested. * * @return a new panel for selecting the response field */ private JPanel createFieldPanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("assertion_resp_field"))); //$NON-NLS-1$ responseStringButton = new JRadioButton(JMeterUtils.getResString("assertion_text_resp")); //$NON-NLS-1$ urlButton = new JRadioButton(JMeterUtils.getResString("assertion_url_samp")); //$NON-NLS-1$ responseCodeButton = new JRadioButton(JMeterUtils.getResString("assertion_code_resp")); //$NON-NLS-1$ responseMessageButton = new JRadioButton(JMeterUtils.getResString("assertion_message_resp")); //$NON-NLS-1$ responseHeadersButton = new JRadioButton(JMeterUtils.getResString("assertion_headers")); //$NON-NLS-1$ ButtonGroup group = new ButtonGroup(); group.add(responseStringButton); group.add(urlButton); group.add(responseCodeButton); group.add(responseMessageButton); group.add(responseHeadersButton); panel.add(responseStringButton); panel.add(urlButton); panel.add(responseCodeButton); panel.add(responseMessageButton); panel.add(responseHeadersButton); responseStringButton.setSelected(true); assumeSuccess = new JCheckBox(JMeterUtils.getResString("assertion_assume_success")); //$NON-NLS-1$ panel.add(assumeSuccess); return panel; } /** * Create a panel allowing the user to choose what type of test should be * performed. * * @return a new panel for selecting the type of assertion test */ private JPanel createTypePanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("assertion_pattern_match_rules"))); //$NON-NLS-1$ ButtonGroup group = new ButtonGroup(); containsBox = new JRadioButton(JMeterUtils.getResString("assertion_contains")); //$NON-NLS-1$ group.add(containsBox); containsBox.setSelected(true); panel.add(containsBox); matchesBox = new JRadioButton(JMeterUtils.getResString("assertion_matches")); //$NON-NLS-1$ group.add(matchesBox); panel.add(matchesBox); equalsBox = new JRadioButton(JMeterUtils.getResString("assertion_equals")); //$NON-NLS-1$ group.add(equalsBox); panel.add(equalsBox); substringBox = new JRadioButton(JMeterUtils.getResString("assertion_substring")); //$NON-NLS-1$ group.add(substringBox); panel.add(substringBox); notBox = new JCheckBox(JMeterUtils.getResString("assertion_not")); //$NON-NLS-1$ panel.add(notBox); return panel; } /** * Create a panel allowing the user to supply a list of string patterns to * test against. * * @return a new panel for adding string patterns */ private JPanel createStringPanel() { tableModel = new PowerTableModel(new String[] { COL_RESOURCE_NAME }, new Class[] { String.class }); stringTable = new JTable(tableModel); stringTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); TextAreaCellRenderer renderer = new TextAreaCellRenderer(); stringTable.setRowHeight(renderer.getPreferredHeight()); stringTable.setDefaultRenderer(String.class, renderer); stringTable.setDefaultEditor(String.class, new TextAreaTableCellEditor()); stringTable.setPreferredScrollableViewportSize(new Dimension(100, 70)); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("assertion_patterns_to_test"))); //$NON-NLS-1$ panel.add(new JScrollPane(stringTable), BorderLayout.CENTER); panel.add(createButtonPanel(), BorderLayout.SOUTH); return panel; } /** * Create a panel with buttons to add and delete string patterns. * * @return the new panel with add and delete buttons */ private JPanel createButtonPanel() { JButton addPattern = new JButton(JMeterUtils.getResString("add")); //$NON-NLS-1$ addPattern.addActionListener(new AddPatternListener()); deletePattern = new JButton(JMeterUtils.getResString("delete")); //$NON-NLS-1$ deletePattern.addActionListener(new ClearPatternsListener()); deletePattern.setEnabled(false); JPanel buttonPanel = new JPanel(); buttonPanel.add(addPattern); buttonPanel.add(deletePattern); return buttonPanel; } /** * An ActionListener for deleting a pattern. * */ private class ClearPatternsListener implements ActionListener { public void actionPerformed(ActionEvent e) { int index = stringTable.getSelectedRow(); if (index > -1) { stringTable.getCellEditor(index, stringTable.getSelectedColumn()).cancelCellEditing(); tableModel.removeRow(index); tableModel.fireTableDataChanged(); } if (stringTable.getModel().getRowCount() == 0) { deletePattern.setEnabled(false); } } } /** * An ActionListener for adding a pattern. * */ private class AddPatternListener implements ActionListener { public void actionPerformed(ActionEvent e) { tableModel.addNewRow(); deletePattern.setEnabled(true); tableModel.fireTableDataChanged(); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/HTMLAssertionGui.java0000644000175000017500000003051312032647217030622 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import org.apache.jmeter.assertions.HTMLAssertion; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * GUI for HTMLAssertion */ public class HTMLAssertionGui extends AbstractAssertionGui implements KeyListener, ActionListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 1L; // Names for the fields private static final String WARNING_THRESHOLD_FIELD = "warningThresholdField"; // $NON-NLS-1$ private static final String ERROR_THRESHOLD_FIELD = "errorThresholdField"; // $NON-NLS-1$ // instance attributes private JTextField errorThresholdField = null; private JTextField warningThresholdField = null; private JCheckBox errorsOnly = null; private JComboBox docTypeBox = null; private JRadioButton htmlRadioButton = null; private JRadioButton xhtmlRadioButton = null; private JRadioButton xmlRadioButton = null; private FilePanel filePanel = null; /** * The constructor. */ public HTMLAssertionGui() { init(); } /** * Returns the label to be shown within the JTree-Component. */ public String getLabelResource() { return "html_assertion_title"; // $NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { HTMLAssertion el = new HTMLAssertion(); modifyTestElement(el); return el; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement inElement) { log.debug("HTMLAssertionGui.modifyTestElement() called"); configureTestElement(inElement); String errorThresholdString = errorThresholdField.getText(); long errorThreshold = 0; try { errorThreshold = Long.parseLong(errorThresholdString); } catch (NumberFormatException e) { errorThreshold = 0; } ((HTMLAssertion) inElement).setErrorThreshold(errorThreshold); String warningThresholdString = warningThresholdField.getText(); long warningThreshold = 0; try { warningThreshold = Long.parseLong(warningThresholdString); } catch (NumberFormatException e) { warningThreshold = 0; } ((HTMLAssertion) inElement).setWarningThreshold(warningThreshold); String docTypeString = docTypeBox.getSelectedItem().toString(); ((HTMLAssertion) inElement).setDoctype(docTypeString); boolean trackErrorsOnly = errorsOnly.isSelected(); ((HTMLAssertion) inElement).setErrorsOnly(trackErrorsOnly); if (htmlRadioButton.isSelected()) { ((HTMLAssertion) inElement).setHTML(); } else if (xhtmlRadioButton.isSelected()) { ((HTMLAssertion) inElement).setXHTML(); } else { ((HTMLAssertion) inElement).setXML(); } ((HTMLAssertion) inElement).setFilename(filePanel.getFilename()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); docTypeBox.setSelectedIndex(0); htmlRadioButton.setSelected(true); xhtmlRadioButton.setSelected(false); xmlRadioButton.setSelected(false); errorThresholdField.setText("0"); //$NON-NLS-1$ warningThresholdField.setText("0"); //$NON-NLS-1$ filePanel.setFilename(""); //$NON-NLS-1$ errorsOnly.setSelected(false); } /** * Configures the associated test element. * * @param inElement */ @Override public void configure(TestElement inElement) { super.configure(inElement); HTMLAssertion lAssertion = (HTMLAssertion) inElement; errorThresholdField.setText(String.valueOf(lAssertion.getErrorThreshold())); warningThresholdField.setText(String.valueOf(lAssertion.getWarningThreshold())); errorsOnly.setSelected(lAssertion.isErrorsOnly()); docTypeBox.setSelectedItem(lAssertion.getDoctype()); if (lAssertion.isHTML()) { htmlRadioButton.setSelected(true); } else if (lAssertion.isXHTML()) { xhtmlRadioButton.setSelected(true); } else { xmlRadioButton.setSelected(true); } if (lAssertion.isErrorsOnly()) { warningThresholdField.setEnabled(false); warningThresholdField.setEditable(false); } else { warningThresholdField.setEnabled(true); warningThresholdField.setEditable(true); } filePanel.setFilename(lAssertion.getFilename()); } /** * Inits the GUI. */ private void init() { setLayout(new BorderLayout(0, 10)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); // USER_INPUT VerticalPanel assertionPanel = new VerticalPanel(); assertionPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Tidy Settings")); // doctype HorizontalPanel docTypePanel = new HorizontalPanel(); docTypeBox = new JComboBox(new Object[] { "omit", "auto", "strict", "loose" }); // docTypePanel.add(new // JLabel(JMeterUtils.getResString("duration_assertion_label"))); //$NON-NLS-1$ docTypePanel.add(new JLabel("Doctype:")); docTypePanel.add(docTypeBox); assertionPanel.add(docTypePanel); // format (HMTL, XHTML, XML) VerticalPanel formatPanel = new VerticalPanel(); formatPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Format")); htmlRadioButton = new JRadioButton("HTML", true); //$NON-NLS-1$ xhtmlRadioButton = new JRadioButton("XHTML", false); //$NON-NLS-1$ xmlRadioButton = new JRadioButton("XML", false); //$NON-NLS-1$ ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(htmlRadioButton); buttonGroup.add(xhtmlRadioButton); buttonGroup.add(xmlRadioButton); formatPanel.add(htmlRadioButton); formatPanel.add(xhtmlRadioButton); formatPanel.add(xmlRadioButton); assertionPanel.add(formatPanel); // errors only errorsOnly = new JCheckBox("Errors only", false); errorsOnly.addActionListener(this); assertionPanel.add(errorsOnly); // thresholds HorizontalPanel thresholdPanel = new HorizontalPanel(); thresholdPanel.add(new JLabel("Error threshold:")); errorThresholdField = new JTextField("0", 5); // $NON-NLS-1$ errorThresholdField.setName(ERROR_THRESHOLD_FIELD); errorThresholdField.addKeyListener(this); thresholdPanel.add(errorThresholdField); thresholdPanel.add(new JLabel("Warning threshold:")); warningThresholdField = new JTextField("0", 5); // $NON-NLS-1$ warningThresholdField.setName(WARNING_THRESHOLD_FIELD); warningThresholdField.addKeyListener(this); thresholdPanel.add(warningThresholdField); assertionPanel.add(thresholdPanel); // file panel filePanel = new FilePanel(JMeterUtils.getResString("html_assertion_file"), ".txt"); //$NON-NLS-1$ //$NON-NLS-2$ assertionPanel.add(filePanel); mainPanel.add(assertionPanel, BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } /** * This method is called if one of the threshold field looses the focus * * @param inEvent */ public void focusLost(FocusEvent inEvent) { log.debug("HTMLAssertionGui.focusLost() called"); String errorThresholdString = errorThresholdField.getText(); if (errorThresholdString != null) { boolean isInvalid = false; try { long errorThreshold = Long.parseLong(errorThresholdString); if (errorThreshold < 0) { isInvalid = true; } } catch (NumberFormatException ex) { isInvalid = true; } if (isInvalid) { log.warn("HTMLAssertionGui: Error threshold Not a valid number!"); JOptionPane.showMessageDialog(null, "Threshold for errors is invalid", "Error", JOptionPane.ERROR_MESSAGE); } } String warningThresholdString = warningThresholdField.getText(); if (warningThresholdString != null) { boolean isInvalid = false; try { long warningThreshold = Long.parseLong(warningThresholdString); if (warningThreshold < 0) { isInvalid = true; } } catch (NumberFormatException ex) { isInvalid = true; } if (isInvalid) { log.warn("HTMLAssertionGui: Error threshold Not a valid number!"); JOptionPane.showMessageDialog(null, "Threshold for warnings is invalid", "Error", JOptionPane.ERROR_MESSAGE); } } } /** * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent) */ public void focusGained(FocusEvent e) { // NOOP } /** * This method is called from erros-only checkbox * * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ public void actionPerformed(ActionEvent e) { if (errorsOnly.isSelected()) { warningThresholdField.setEnabled(false); warningThresholdField.setEditable(false); } else { warningThresholdField.setEnabled(true); warningThresholdField.setEditable(true); } } public void keyPressed(KeyEvent e) { // NOOP } public void keyReleased(KeyEvent e) { String fieldName = e.getComponent().getName(); if (fieldName.equals(WARNING_THRESHOLD_FIELD)) { validateInteger(warningThresholdField); } if (fieldName.equals(ERROR_THRESHOLD_FIELD)) { validateInteger(errorThresholdField); } } private void validateInteger(JTextField field){ try { Integer.parseInt(field.getText()); } catch (NumberFormatException nfe) { int length = field.getText().length(); if (length > 0) { JOptionPane.showMessageDialog(this, "Only digits allowed", "Invalid data", JOptionPane.WARNING_MESSAGE); // Drop the last character: field.setText(field.getText().substring(0, length-1)); } } } public void keyTyped(KeyEvent e) { // NOOP } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/XPathAssertionGui.java0000644000175000017500000000727512032647217031113 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JPanel; import org.apache.jmeter.assertions.XPathAssertion; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class XPathAssertionGui extends AbstractAssertionGui { private static final long serialVersionUID = 240L; private XPathPanel xpath; private XMLConfPanel xml; public XPathAssertionGui() { init(); } /** * Returns the label to be shown within the JTree-Component. */ public String getLabelResource() { return "xpath_assertion_title"; //$NON-NLS-1$ } /** * Create test element */ public TestElement createTestElement() { XPathAssertion el = new XPathAssertion(); modifyTestElement(el); return el; } public String getXPathAttributesTitle() { return JMeterUtils.getResString("xpath_assertion_test"); //$NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); XPathAssertion assertion = (XPathAssertion) el; xpath.setXPath(assertion.getXPathString()); xpath.setNegated(assertion.isNegated()); xml.configure(assertion); } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); // USER_INPUT JPanel sizePanel = new JPanel(new BorderLayout()); sizePanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10)); sizePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), getXPathAttributesTitle())); xpath = new XPathPanel(); sizePanel.add(xpath); xml = new XMLConfPanel(); xml.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("xpath_assertion_option"))); //$NON-NLS-1$ add(xml); add(sizePanel); } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { super.configureTestElement(el); if (el instanceof XPathAssertion) { XPathAssertion assertion = (XPathAssertion) el; assertion.setNegated(xpath.isNegated()); assertion.setXPathString(xpath.getXPath()); xml.modifyTestElement(assertion); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); xpath.setXPath("/"); //$NON-NLS-1$ xpath.setNegated(false); xml.setDefaultValues(); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/gui/XMLConfPanel.java0000644000175000017500000001463112032647217027752 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JPanel; import org.apache.jmeter.assertions.XPathAssertion; import org.apache.jmeter.extractor.XPathExtractor; import org.apache.jmeter.util.JMeterUtils; public class XMLConfPanel extends JPanel { private static final long serialVersionUID = 240L; private JCheckBox validate, tolerant, whitespace, namespace; private JCheckBox quiet; // Should Tidy be quiet? private JCheckBox reportErrors; // Report Tidy errors as Assertion failure? private JCheckBox showWarnings; // Show Tidy warnings ? private JCheckBox downloadDTDs; // Should we download external DTDs? /** * */ public XMLConfPanel() { super(); init(); } private void init() { quiet = new JCheckBox(JMeterUtils.getResString("xpath_tidy_quiet"),true);//$NON-NLS-1$ reportErrors = new JCheckBox(JMeterUtils.getResString("xpath_tidy_report_errors"),true);//$NON-NLS-1$ showWarnings = new JCheckBox(JMeterUtils.getResString("xpath_tidy_show_warnings"),true);//$NON-NLS-1$ namespace = new JCheckBox(JMeterUtils.getResString("xml_namespace_button")); //$NON-NLS-1$ whitespace = new JCheckBox(JMeterUtils.getResString("xml_whitespace_button")); //$NON-NLS-1$ validate = new JCheckBox(JMeterUtils.getResString("xml_validate_button")); //$NON-NLS-1$ tolerant = new JCheckBox(JMeterUtils.getResString("xml_tolerant_button")); //$NON-NLS-1$ tolerant.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { tolerant(); } }); downloadDTDs = new JCheckBox(JMeterUtils.getResString("xml_download_dtds")); //$NON-NLS-1$ Box tidyOptions = Box.createHorizontalBox(); tidyOptions.setBorder(BorderFactory.createEtchedBorder()); tidyOptions.add(tolerant); tidyOptions.add(quiet); tidyOptions.add(reportErrors); tidyOptions.add(showWarnings); Box untidyOptions = Box.createHorizontalBox(); untidyOptions.setBorder(BorderFactory.createEtchedBorder()); untidyOptions.add(namespace); untidyOptions.add(validate); untidyOptions.add(whitespace); untidyOptions.add(downloadDTDs); Box options = Box.createVerticalBox(); options.add(tidyOptions); options.add(untidyOptions); add(options); setDefaultValues(); } public void setDefaultValues() { whitespace.setSelected(false); validate.setSelected(false); tolerant.setSelected(false); namespace.setSelected(false); quiet.setSelected(true); reportErrors.setSelected(false); showWarnings.setSelected(false); downloadDTDs.setSelected(false); tolerant(); } // Process tolerant settings private void tolerant() { final boolean isTolerant = tolerant.isSelected(); // Non-Tidy options validate.setEnabled(!isTolerant); whitespace.setEnabled(!isTolerant); namespace.setEnabled(!isTolerant); downloadDTDs.setEnabled(!isTolerant); // Tidy options quiet.setEnabled(isTolerant); reportErrors.setEnabled(isTolerant); showWarnings.setEnabled(isTolerant); } // Called by XPathAssertionGui public void modifyTestElement(XPathAssertion assertion) { assertion.setValidating(validate.isSelected()); assertion.setWhitespace(whitespace.isSelected()); assertion.setTolerant(tolerant.isSelected()); assertion.setNamespace(namespace.isSelected()); assertion.setShowWarnings(showWarnings.isSelected()); assertion.setReportErrors(reportErrors.isSelected()); assertion.setQuiet(quiet.isSelected()); assertion.setDownloadDTDs(downloadDTDs.isSelected()); } // Called by XPathExtractorGui public void modifyTestElement(XPathExtractor assertion) { assertion.setValidating(validate.isSelected()); assertion.setWhitespace(whitespace.isSelected()); assertion.setTolerant(tolerant.isSelected()); assertion.setNameSpace(namespace.isSelected()); assertion.setShowWarnings(showWarnings.isSelected()); assertion.setReportErrors(reportErrors.isSelected()); assertion.setQuiet(quiet.isSelected()); assertion.setDownloadDTDs(downloadDTDs.isSelected()); } // Called by XPathAssertionGui public void configure(XPathAssertion assertion) { whitespace.setSelected(assertion.isWhitespace()); validate.setSelected(assertion.isValidating()); tolerant.setSelected(assertion.isTolerant()); namespace.setSelected(assertion.isNamespace()); quiet.setSelected(assertion.isQuiet()); showWarnings.setSelected(assertion.showWarnings()); reportErrors.setSelected(assertion.reportErrors()); downloadDTDs.setSelected(assertion.isDownloadDTDs()); tolerant(); } // Called by XPathExtractorGui public void configure(XPathExtractor assertion) { whitespace.setSelected(assertion.isWhitespace()); validate.setSelected(assertion.isValidating()); tolerant.setSelected(assertion.isTolerant()); namespace.setSelected(assertion.useNameSpace()); quiet.setSelected(assertion.isQuiet()); showWarnings.setSelected(assertion.showWarnings()); reportErrors.setSelected(assertion.reportErrors()); downloadDTDs.setSelected(assertion.isDownloadDTDs()); tolerant(); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/SMIMEAssertionTestElement.java0000644000175000017500000001273112032647217031653 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.Serializable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.util.JMeterUtils; public class SMIMEAssertionTestElement extends AbstractTestElement implements Serializable, Assertion { private static final long serialVersionUID = 1L; //+JMX file attributes - do not change values! private static final String VERIFY_SIGNATURE_KEY = "SMIMEAssert.verifySignature"; // $NON-NLS-1$ private static final String NOT_SIGNED_KEY = "SMIMEAssert.notSigned"; // $NON-NLS-1$ private static final String SIGNER_NO_CHECK_KEY = "SMIMEAssert.signerNoCheck"; // $NON-NLS-1$ private static final String SIGNER_CHECK_BY_FILE_KEY = "SMIMEAssert.signerCheckByFile"; // $NON-NLS-1$ private static final String SIGNER_CERT_FILE_KEY = "SMIMEAssert.signerCertFile"; // $NON-NLS-1$ private static final String SINGER_CHECK_CONSTRAINTS_KEY = "SMIMEAssert.signerCheckConstraints"; // $NON-NLS-1$ private static final String SIGNER_SERIAL_KEY = "SMIMEAssert.signerSerial"; // $NON-NLS-1$ private static final String SIGNER_EMAIL_KEY = "SMIMEAssert.signerEmail"; // $NON-NLS-1$ private static final String SIGNER_DN_KEY = "SMIMEAssert.signerDn"; // $NON-NLS-1$ private static final String ISSUER_DN_KEY = "SMIMEAssert.issuerDn"; // $NON-NLS-1$ private static final String MESSAGE_POSITION = "SMIMEAssert.messagePosition"; // $NON-NLS-1$ //-JMX file attributes public SMIMEAssertionTestElement() { super(); } public AssertionResult getResult(SampleResult response) { try { return SMIMEAssertion.getResult(this, response, getName()); } catch (NoClassDefFoundError e) { AssertionResult assertionResult = new AssertionResult(getName()); assertionResult.setError(true); assertionResult.setResultForFailure(JMeterUtils .getResString("bouncy_castle_unavailable_message")); return assertionResult; } } public boolean isVerifySignature() { return getPropertyAsBoolean(VERIFY_SIGNATURE_KEY); } public void setVerifySignature(boolean verifySignature) { setProperty(VERIFY_SIGNATURE_KEY, verifySignature); } public String getIssuerDn() { return getPropertyAsString(ISSUER_DN_KEY); } public void setIssuerDn(String issuertDn) { setProperty(ISSUER_DN_KEY, issuertDn); } public boolean isSignerCheckByFile() { return getPropertyAsBoolean(SIGNER_CHECK_BY_FILE_KEY); } public void setSignerCheckByFile(boolean signerCheckByFile) { setProperty(SIGNER_CHECK_BY_FILE_KEY, signerCheckByFile); } public boolean isSignerCheckConstraints() { return getPropertyAsBoolean(SINGER_CHECK_CONSTRAINTS_KEY); } public void setSignerCheckConstraints(boolean signerCheckConstraints) { setProperty(SINGER_CHECK_CONSTRAINTS_KEY, signerCheckConstraints); } public boolean isSignerNoCheck() { return getPropertyAsBoolean(SIGNER_NO_CHECK_KEY); } public void setSignerNoCheck(boolean signerNoCheck) { setProperty(SIGNER_NO_CHECK_KEY, signerNoCheck); } public String getSignerCertFile() { return getPropertyAsString(SIGNER_CERT_FILE_KEY); } public void setSignerCertFile(String signerCertFile) { setProperty(SIGNER_CERT_FILE_KEY, signerCertFile); } public String getSignerDn() { return getPropertyAsString(SIGNER_DN_KEY); } public void setSignerDn(String signerDn) { setProperty(SIGNER_DN_KEY, signerDn); } public String getSignerSerial() { return getPropertyAsString(SIGNER_SERIAL_KEY); } public void setSignerSerial(String signerSerial) { setProperty(SIGNER_SERIAL_KEY, signerSerial); } public String getSignerEmail() { return getPropertyAsString(SIGNER_EMAIL_KEY); } public void setSignerEmail(String signerEmail) { setProperty(SIGNER_EMAIL_KEY, signerEmail); } public boolean isNotSigned() { return getPropertyAsBoolean(NOT_SIGNED_KEY); } public void setNotSigned(boolean notSigned) { setProperty(NOT_SIGNED_KEY, notSigned); } public String getSpecificMessagePosition() { return getPropertyAsString(MESSAGE_POSITION); } public int getSpecificMessagePositionAsInt() { return getPropertyAsInt(MESSAGE_POSITION, 0); } public void setSpecificMessagePosition(String position) { setProperty(MESSAGE_POSITION, position); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/JSR223AssertionResources.properties0000644000175000017500000000314112032647217032655 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JSR223 Assertion scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of JSR223 language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props SampleResult (aka prev) AssertionResult sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate BSF language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/DurationAssertion.java0000644000175000017500000000546012032647217030415 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.Serializable; import java.text.MessageFormat; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractScopedAssertion; import org.apache.jmeter.util.JMeterUtils; /** * Checks if an Sample is sampled within a specified time-frame. If the duration * is larger than the timeframe the Assertion is considered a failure. * */ public class DurationAssertion extends AbstractScopedAssertion implements Serializable, Assertion { private static final long serialVersionUID = 240L; /** Key for storing assertion-informations in the jmx-file. */ public static final String DURATION_KEY = "DurationAssertion.duration"; // $NON-NLS-1$ /** * Returns the result of the Assertion. Here it checks wether the Sample * took to long to be considered successful. If so an AssertionResult * containing a FailureMessage will be returned. Otherwise the returned * AssertionResult will reflect the success of the Sample. */ public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); result.setFailure(false); long duration=getAllowedDuration(); if (duration > 0) { long responseTime=response.getTime(); // has the Sample lasted too long? if ( responseTime > duration) { result.setFailure(true); Object[] arguments = { Long.valueOf(responseTime), Long.valueOf(duration) }; String message = MessageFormat.format( JMeterUtils.getResString("duration_assertion_failure") // $NON-NLS-1$ , arguments); result.setFailureMessage(message); } } return result; } /** * Returns the duration to be asserted. A duration of 0 indicates this * assertion is to be ignored. */ private long getAllowedDuration() { return getPropertyAsLong(DURATION_KEY); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/JSR223AssertionBeanInfo.java0000644000175000017500000000203312032647217031110 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.assertions; import org.apache.jmeter.util.JSR223BeanInfoSupport; public class JSR223AssertionBeanInfo extends JSR223BeanInfoSupport { public JSR223AssertionBeanInfo() { super(JSR223Assertion.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/SMIMEAssertion.java0000644000175000017500000003546712032647217027514 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.security.GeneralSecurityException; import java.security.Security; import java.security.cert.CertStore; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Properties; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.security.auth.x500.X500Principal; import org.apache.commons.io.IOUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.bouncycastle.asn1.x509.GeneralName; import org.bouncycastle.asn1.x509.X509Name; import org.bouncycastle.cms.CMSException; import org.bouncycastle.cms.SignerInformation; import org.bouncycastle.cms.SignerInformationStore; import org.bouncycastle.jce.PrincipalUtil; import org.bouncycastle.jce.X509Principal; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.mail.smime.SMIMEException; import org.bouncycastle.mail.smime.SMIMESignedParser; import org.bouncycastle.x509.extension.X509ExtensionUtil; /** * Helper class which isolates the BouncyCastle code. */ class SMIMEAssertion { // Use the name of the test element, otherwise cannot enable/disable debug from the GUI private static final Logger log = LoggingManager.getLoggerForShortName(SMIMEAssertionTestElement.class.getName()); SMIMEAssertion() { super(); } public static AssertionResult getResult(SMIMEAssertionTestElement testElement, SampleResult response, String name) { checkForBouncycastle(); AssertionResult res = new AssertionResult(name); try { MimeMessage msg = null; final int msgPos = testElement.getSpecificMessagePositionAsInt(); if (msgPos < 0){ // means counting from end SampleResult subResults[] = response.getSubResults(); final int pos = subResults.length + msgPos; log.debug("Getting message number: "+pos+" of "+subResults.length); msg = getMessageFromResponse(response,pos); } else { log.debug("Getting message number: "+msgPos); msg = getMessageFromResponse(response, msgPos); } SMIMESignedParser s = null; if (log.isDebugEnabled()) { log.debug("Content-type: "+msg.getContentType()); } if (msg.isMimeType("multipart/signed")) { // $NON-NLS-1$ MimeMultipart multipart = (MimeMultipart) msg.getContent(); s = new SMIMESignedParser(multipart); } else if (msg.isMimeType("application/pkcs7-mime") // $NON-NLS-1$ || msg.isMimeType("application/x-pkcs7-mime")) { // $NON-NLS-1$ s = new SMIMESignedParser(msg); } if (null != s) { log.debug("Found signature"); if (testElement.isNotSigned()) { res.setFailure(true); res.setFailureMessage("Mime message is signed"); } else if (testElement.isVerifySignature() || !testElement.isSignerNoCheck()) { res = verifySignature(testElement, s, name); } } else { log.debug("Did not find signature"); if (!testElement.isNotSigned()) { res.setFailure(true); res.setFailureMessage("Mime message is not signed"); } } } catch (MessagingException e) { String msg = "Cannot parse mime msg: " + e.getMessage(); log.warn(msg, e); res.setFailure(true); res.setFailureMessage(msg); } catch (CMSException e) { res.setFailure(true); res.setFailureMessage("Error reading the signature: " + e.getMessage()); } catch (SMIMEException e) { res.setFailure(true); res .setFailureMessage("Cannot extract signed body part from signature: " + e.getMessage()); } catch (IOException e) { // should never happen log.error("Cannot read mime message content: " + e.getMessage(), e); res.setError(true); res.setFailureMessage(e.getMessage()); } return res; } private static AssertionResult verifySignature(SMIMEAssertionTestElement testElement, SMIMESignedParser s, String name) throws CMSException { AssertionResult res = new AssertionResult(name); try { CertStore certs = s.getCertificatesAndCRLs("Collection", "BC"); // $NON-NLS-1$ // $NON-NLS-2$ SignerInformationStore signers = s.getSignerInfos(); Iterator signerIt = signers.getSigners().iterator(); if (signerIt.hasNext()) { SignerInformation signer = (SignerInformation) signerIt.next(); Iterator certIt = certs.getCertificates(signer.getSID()).iterator(); if (certIt.hasNext()) { // the signer certificate X509Certificate cert = (X509Certificate) certIt.next(); if (testElement.isVerifySignature()) { if (!signer.verify(cert.getPublicKey(), "BC")) { // $NON-NLS-1$ res.setFailure(true); res.setFailureMessage("Signature is invalid"); } } if (testElement.isSignerCheckConstraints()) { StringBuilder failureMessage = new StringBuilder(); String serial = testElement.getSignerSerial(); if (!JOrphanUtils.isBlank(serial)) { BigInteger serialNbr = readSerialNumber(serial); if (!serialNbr.equals(cert.getSerialNumber())) { res.setFailure(true); failureMessage .append("Serial number ") .append(serialNbr) .append(" does not match serial from signer certificate: ") .append(cert.getSerialNumber()).append("\n"); } } String email = testElement.getSignerEmail(); if (!JOrphanUtils.isBlank(email)) { List emailfromCert = getEmailFromCert(cert); if (!emailfromCert.contains(email)) { res.setFailure(true); failureMessage .append("Email address \"") .append(email) .append("\" not present in signer certificate\n"); } } String subject = testElement.getSignerDn(); if (subject.length() > 0) { final X500Principal certPrincipal = cert.getSubjectX500Principal(); log.debug(certPrincipal.getName(X500Principal.CANONICAL)); X500Principal principal = new X500Principal(subject); log.debug(principal.getName(X500Principal.CANONICAL)); if (!principal.equals(certPrincipal)) { res.setFailure(true); failureMessage .append("Distinguished name of signer certificate does not match \"") .append(subject).append("\"\n"); } } String issuer = testElement.getIssuerDn(); if (issuer.length() > 0) { final X500Principal issuerX500Principal = cert.getIssuerX500Principal(); log.debug(issuerX500Principal.getName(X500Principal.CANONICAL)); X500Principal principal = new X500Principal(issuer); log.debug(principal.getName(X500Principal.CANONICAL)); if (!principal.equals(issuerX500Principal)) { res.setFailure(true); failureMessage .append("Issuer distinguished name of signer certificate does not match \"") .append(subject).append("\"\n"); } } if (failureMessage.length() > 0) { res.setFailureMessage(failureMessage.toString()); } } if (testElement.isSignerCheckByFile()) { CertificateFactory cf = CertificateFactory .getInstance("X.509"); X509Certificate certFromFile; InputStream inStream = null; try { inStream = new BufferedInputStream(new FileInputStream(testElement.getSignerCertFile())); certFromFile = (X509Certificate) cf.generateCertificate(inStream); } finally { IOUtils.closeQuietly(inStream); } if (!certFromFile.equals(cert)) { res.setFailure(true); res.setFailureMessage("Signer certificate does not match certificate " + testElement.getSignerCertFile()); } } } else { res.setFailure(true); res.setFailureMessage("No signer certificate found in signature"); } } // TODO support multiple signers if (signerIt.hasNext()) { log.warn("SMIME message contains multiple signers! Checking multiple signers is not supported."); } } catch (GeneralSecurityException e) { log.error(e.getMessage(), e); res.setError(true); res.setFailureMessage(e.getMessage()); } catch (FileNotFoundException e) { res.setFailure(true); res.setFailureMessage("certificate file not found: " + e.getMessage()); } return res; } /** * extracts a MIME message from the SampleResult */ private static MimeMessage getMessageFromResponse(SampleResult response, int messageNumber) throws MessagingException { SampleResult subResults[] = response.getSubResults(); if (messageNumber >= subResults.length || messageNumber < 0) { throw new MessagingException("Message number not present in results: "+messageNumber); } final SampleResult sampleResult = subResults[messageNumber]; if (log.isDebugEnabled()) { log.debug("Bytes: "+sampleResult.getBytes()+" CT: "+sampleResult.getContentType()); } byte[] data = sampleResult.getResponseData(); Session session = Session.getDefaultInstance(new Properties()); MimeMessage msg = new MimeMessage(session, new ByteArrayInputStream(data)); log.debug("msg.getSize() = " + msg.getSize()); return msg; } /** * Convert the value of serialString into a BigInteger. Strings * starting with 0x or 0X are parsed as hex numbers, otherwise as decimal * number. * * @param serialString * the String representation of the serial Number * @return */ private static BigInteger readSerialNumber(String serialString) { if (serialString.startsWith("0x") || serialString.startsWith("0X")) { // $NON-NLS-1$ // $NON-NLS-2$ return new BigInteger(serialString.substring(2), 16); } return new BigInteger(serialString); } /** * Extract email addresses from a certificate * * @param cert * @return a List of all email addresses found * @throws CertificateException */ private static List getEmailFromCert(X509Certificate cert) throws CertificateException { List res = new ArrayList(); X509Principal subject = PrincipalUtil.getSubjectX509Principal(cert); Iterator addressIt = subject.getValues(X509Name.EmailAddress).iterator(); while (addressIt.hasNext()) { String address = (String) addressIt.next(); res.add(address); } Iterator subjectAltNamesIt = X509ExtensionUtil.getSubjectAlternativeNames(cert).iterator(); while (subjectAltNamesIt.hasNext()) { List altName = (List) subjectAltNamesIt.next(); int type = ((Integer) altName.get(0)).intValue(); if (type == GeneralName.rfc822Name) { String address = (String) altName.get(1); res.add(address); } } return res; } /** * Check if the Bouncycastle jce provider is installed and dynamically load * it, if needed; * */ private static void checkForBouncycastle() { if (null == Security.getProvider("BC")) { // $NON-NLS-1$ Security.addProvider(new BouncyCastleProvider()); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BSFAssertionResources_pl.properties0000644000175000017500000000321212032647217033074 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Uwagi co do tlumaczenia: mr0vek@o2.pl displayName=Asercje BSF filename.displayName=Nazwa pliku filename.shortDescription=Plik ze skryptem (zast\u0119puje skrypt) filenameGroup.displayName=Plik ze skryptem (zast\u0119puje skrypt) parameterGroup.displayName=Parametry dla skryptu (=> String Parameters and String []args) parameters.displayName=Parametry parameters.shortDescription=Parametry do przekazania do pliku lub skryptu script.displayName=Skrypt script.shortDescription=Skrypt w j\u0119zyku zgodnym z BSF scriptLanguage.displayName=J\u0119zyk scriptLanguage.shortDescription=Nazwa j\u0119zyka BSF, np. beanshell, javascript, jexl scripting.displayName=Skrypt (zmienne: ctx vars props SampleResult (aka prev) AssertionResult sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=J\u0119zyk skryptu (np. beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BSFAssertion.java0000644000175000017500000000412512032647217027237 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.assertions; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BSFTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class BSFAssertion extends BSFTestElement implements Cloneable, Assertion, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 234L; public AssertionResult getResult(SampleResult response) { AssertionResult result = new AssertionResult(getName()); BSFManager mgr =null; try { mgr = getManager(); mgr.declareBean("SampleResult", response, SampleResult.class); mgr.declareBean("AssertionResult", result, AssertionResult.class); processFileOrScript(mgr); result.setError(false); } catch (BSFException e) { log.warn("Problem in BSF script "+e); result.setFailure(true); result.setError(true); result.setFailureMessage(e.toString()); } finally { if(mgr != null) { mgr.terminate(); } } return result; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BSFAssertionBeanInfo.java0000644000175000017500000000201412032647217030634 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.assertions; import org.apache.jmeter.util.BSFBeanInfoSupport; public class BSFAssertionBeanInfo extends BSFBeanInfoSupport { public BSFAssertionBeanInfo() { super(BSFAssertion.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/ResponseAssertion.java0000644000175000017500000004360012032647217030424 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.Serializable; import java.net.URL; import java.util.ArrayList; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractScopedAssertion; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; // @see org.apache.jmeter.assertions.ResponseAssertionTest for unit tests /** * Test element to handle Response Assertions, @see AssertionGui */ public class ResponseAssertion extends AbstractScopedAssertion implements Serializable, Assertion { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final String TEST_FIELD = "Assertion.test_field"; // $NON-NLS-1$ // Values for TEST_FIELD // N.B. we cannot change the text value as it is in test plans private static final String SAMPLE_URL = "Assertion.sample_label"; // $NON-NLS-1$ private static final String RESPONSE_DATA = "Assertion.response_data"; // $NON-NLS-1$ private static final String RESPONSE_CODE = "Assertion.response_code"; // $NON-NLS-1$ private static final String RESPONSE_MESSAGE = "Assertion.response_message"; // $NON-NLS-1$ private static final String RESPONSE_HEADERS = "Assertion.response_headers"; // $NON-NLS-1$ private static final String ASSUME_SUCCESS = "Assertion.assume_success"; // $NON-NLS-1$ private static final String TEST_STRINGS = "Asserion.test_strings"; // $NON-NLS-1$ private static final String TEST_TYPE = "Assertion.test_type"; // $NON-NLS-1$ /* * Mask values for TEST_TYPE TODO: remove either MATCH or CONTAINS - they * are mutually exckusive */ private static final int MATCH = 1 << 0; private static final int CONTAINS = 1 << 1; private static final int NOT = 1 << 2; private static final int EQUALS = 1 << 3; private static final int SUBSTRING = 1 << 4; // Mask should contain all types (but not NOT) private static final int TYPE_MASK = CONTAINS | EQUALS | MATCH | SUBSTRING; private static final int EQUALS_SECTION_DIFF_LEN = JMeterUtils.getPropDefault("assertion.equals_section_diff_len", 100); /** Signifies truncated text in diff display. */ private static final String EQUALS_DIFF_TRUNC = "..."; private static final String RECEIVED_STR = "****** received : "; private static final String COMPARISON_STR = "****** comparison: "; private static final String DIFF_DELTA_START = JMeterUtils.getPropDefault("assertion.equals_diff_delta_start", "[[["); private static final String DIFF_DELTA_END = JMeterUtils.getPropDefault("assertion.equals_diff_delta_end", "]]]"); public ResponseAssertion() { setProperty(new CollectionProperty(TEST_STRINGS, new ArrayList())); } @Override public void clear() { super.clear(); setProperty(new CollectionProperty(TEST_STRINGS, new ArrayList())); } private void setTestField(String testField) { setProperty(TEST_FIELD, testField); } public void setTestFieldURL(){ setTestField(SAMPLE_URL); } public void setTestFieldResponseCode(){ setTestField(RESPONSE_CODE); } public void setTestFieldResponseData(){ setTestField(RESPONSE_DATA); } public void setTestFieldResponseMessage(){ setTestField(RESPONSE_MESSAGE); } public void setTestFieldResponseHeaders(){ setTestField(RESPONSE_HEADERS); } public boolean isTestFieldURL(){ return SAMPLE_URL.equals(getTestField()); } public boolean isTestFieldResponseCode(){ return RESPONSE_CODE.equals(getTestField()); } public boolean isTestFieldResponseData(){ return RESPONSE_DATA.equals(getTestField()); } public boolean isTestFieldResponseMessage(){ return RESPONSE_MESSAGE.equals(getTestField()); } public boolean isTestFieldResponseHeaders(){ return RESPONSE_HEADERS.equals(getTestField()); } private void setTestType(int testType) { setProperty(new IntegerProperty(TEST_TYPE, testType)); } private void setTestTypeMasked(int testType) { int value = getTestType() & ~(TYPE_MASK) | testType; setProperty(new IntegerProperty(TEST_TYPE, value)); } public void addTestString(String testString) { getTestStrings().addProperty(new StringProperty(String.valueOf(testString.hashCode()), testString)); } public void clearTestStrings() { getTestStrings().clear(); } public AssertionResult getResult(SampleResult response) { AssertionResult result; // None of the other Assertions check the response status, so remove // this check // for the time being, at least... // if (!response.isSuccessful()) // { // result = new AssertionResult(); // result.setError(true); // byte [] ba = response.getResponseData(); // result.setFailureMessage( // ba == null ? "Unknown Error (responseData is empty)" : new String(ba) // ); // return result; // } result = evaluateResponse(response); return result; } /*************************************************************************** * !ToDoo (Method description) * * @return !ToDo (Return description) **************************************************************************/ public String getTestField() { return getPropertyAsString(TEST_FIELD); } /*************************************************************************** * !ToDoo (Method description) * * @return !ToDo (Return description) **************************************************************************/ public int getTestType() { JMeterProperty type = getProperty(TEST_TYPE); if (type instanceof NullProperty) { return CONTAINS; } return type.getIntValue(); } /*************************************************************************** * !ToDoo (Method description) * * @return !ToDo (Return description) **************************************************************************/ public CollectionProperty getTestStrings() { return (CollectionProperty) getProperty(TEST_STRINGS); } public boolean isEqualsType() { return (getTestType() & EQUALS) != 0; } public boolean isSubstringType() { return (getTestType() & SUBSTRING) != 0; } public boolean isContainsType() { return (getTestType() & CONTAINS) != 0; } public boolean isMatchType() { return (getTestType() & MATCH) != 0; } public boolean isNotType() { return (getTestType() & NOT) != 0; } public void setToContainsType() { setTestTypeMasked(CONTAINS); } public void setToMatchType() { setTestTypeMasked(MATCH); } public void setToEqualsType() { setTestTypeMasked(EQUALS); } public void setToSubstringType() { setTestTypeMasked(SUBSTRING); } public void setToNotType() { setTestType((getTestType() | NOT)); } public void unsetNotType() { setTestType(getTestType() & ~NOT); } public boolean getAssumeSuccess() { return getPropertyAsBoolean(ASSUME_SUCCESS, false); } public void setAssumeSuccess(boolean b) { setProperty(ASSUME_SUCCESS, b); } /** * Make sure the response satisfies the specified assertion requirements. * * @param response * an instance of SampleResult * @return an instance of AssertionResult */ private AssertionResult evaluateResponse(SampleResult response) { boolean pass = true; boolean notTest = (NOT & getTestType()) > 0; AssertionResult result = new AssertionResult(getName()); String toCheck = ""; // The string to check (Url or data) if (getAssumeSuccess()) { response.setSuccessful(true);// Allow testing of failure codes } // What are we testing against? if (isScopeVariable()){ toCheck = getThreadContext().getVariables().get(getVariableName()); } else if (isTestFieldResponseData()) { toCheck = response.getResponseDataAsString(); // (bug25052) } else if (isTestFieldResponseCode()) { toCheck = response.getResponseCode(); } else if (isTestFieldResponseMessage()) { toCheck = response.getResponseMessage(); } else if (isTestFieldResponseHeaders()) { toCheck = response.getResponseHeaders(); } else { // Assume it is the URL toCheck = ""; final URL url = response.getURL(); if (url != null){ toCheck = url.toString(); } } result.setFailure(false); result.setError(false); if (toCheck.length() == 0) { if (notTest) { return result; } return result.setResultForNull(); } boolean contains = isContainsType(); // do it once outside loop boolean equals = isEqualsType(); boolean substring = isSubstringType(); boolean matches = isMatchType(); boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled){ log.debug("Type:" + (contains?"Contains":"Match") + (notTest? "(not)": "")); } try { // Get the Matcher for this thread Perl5Matcher localMatcher = JMeterUtils.getMatcher(); PropertyIterator iter = getTestStrings().iterator(); while (iter.hasNext()) { String stringPattern = iter.next().getStringValue(); Pattern pattern = null; if (contains || matches) { pattern = JMeterUtils.getPatternCache().getPattern(stringPattern, Perl5Compiler.READ_ONLY_MASK); } boolean found; if (contains) { found = localMatcher.contains(toCheck, pattern); } else if (equals) { found = toCheck.equals(stringPattern); } else if (substring) { found = toCheck.indexOf(stringPattern) != -1; } else { found = localMatcher.matches(toCheck, pattern); } pass = notTest ? !found : found; if (!pass) { if (debugEnabled){log.debug("Failed: "+stringPattern);} result.setFailure(true); result.setFailureMessage(getFailText(stringPattern,toCheck)); break; } if (debugEnabled){log.debug("Passed: "+stringPattern);} } } catch (MalformedCachePatternException e) { result.setError(true); result.setFailure(false); result.setFailureMessage("Bad test configuration " + e); } return result; } /** * Generate the failure reason from the TestType * * @param stringPattern * @return the message for the assertion report */ // TODO strings should be resources private String getFailText(String stringPattern, String toCheck) { StringBuilder sb = new StringBuilder(200); sb.append("Test failed: "); if (isScopeVariable()){ sb.append("variable(").append(getVariableName()).append(')'); } else if (isTestFieldResponseData()) { sb.append("text"); } else if (isTestFieldResponseCode()) { sb.append("code"); } else if (isTestFieldResponseMessage()) { sb.append("message"); } else if (isTestFieldResponseHeaders()) { sb.append("headers"); } else // Assume it is the URL { sb.append("URL"); } switch (getTestType()) { case CONTAINS: case SUBSTRING: sb.append(" expected to contain "); break; case NOT | CONTAINS: case NOT | SUBSTRING: sb.append(" expected not to contain "); break; case MATCH: sb.append(" expected to match "); break; case NOT | MATCH: sb.append(" expected not to match "); break; case EQUALS: sb.append(" expected to equal "); break; case NOT | EQUALS: sb.append(" expected not to equal "); break; default:// should never happen... sb.append(" expected something using "); } sb.append("/"); if (isEqualsType()){ sb.append(equalsComparisonText(toCheck, stringPattern)); } else { sb.append(stringPattern); } sb.append("/"); return sb.toString(); } private static String trunc(final boolean right, final String str) { if (str.length() <= EQUALS_SECTION_DIFF_LEN) { return str; } else if (right) { return str.substring(0, EQUALS_SECTION_DIFF_LEN) + EQUALS_DIFF_TRUNC; } else { return EQUALS_DIFF_TRUNC + str.substring(str.length() - EQUALS_SECTION_DIFF_LEN, str.length()); } } /** * Returns some helpful logging text to determine where equality between two strings * is broken, with one pointer working from the front of the strings and another working * backwards from the end. * * @param received String received from sampler. * @param comparison String specified for "equals" response assertion. * @return Two lines of text separated by newlines, and then forward and backward pointers * denoting first position of difference. */ private static StringBuilder equalsComparisonText(final String received, final String comparison) { int firstDiff; int lastRecDiff = -1; int lastCompDiff = -1; final int recLength = received.length(); final int compLength = comparison.length(); final int minLength = Math.min(recLength, compLength); final String startingEqSeq; String recDeltaSeq = ""; String compDeltaSeq = ""; String endingEqSeq = ""; final StringBuilder text = new StringBuilder(Math.max(recLength, compLength) * 2); for (firstDiff = 0; firstDiff < minLength; firstDiff++) { if (received.charAt(firstDiff) != comparison.charAt(firstDiff)){ break; } } if (firstDiff == 0) { startingEqSeq = ""; } else { startingEqSeq = trunc(false, received.substring(0, firstDiff)); } lastRecDiff = recLength - 1; lastCompDiff = compLength - 1; while ((lastRecDiff > firstDiff) && (lastCompDiff > firstDiff) && received.charAt(lastRecDiff) == comparison.charAt(lastCompDiff)) { lastRecDiff--; lastCompDiff--; } endingEqSeq = trunc(true, received.substring(lastRecDiff + 1, recLength)); if (endingEqSeq.length() == 0) { recDeltaSeq = trunc(true, received.substring(firstDiff, recLength)); compDeltaSeq = trunc(true, comparison.substring(firstDiff, compLength)); } else { recDeltaSeq = trunc(true, received.substring(firstDiff, lastRecDiff + 1)); compDeltaSeq = trunc(true, comparison.substring(firstDiff, lastCompDiff + 1)); } final StringBuilder pad = new StringBuilder(Math.abs(recDeltaSeq.length() - compDeltaSeq.length())); for (int i = 0; i < pad.capacity(); i++){ pad.append(' '); } if (recDeltaSeq.length() > compDeltaSeq.length()){ compDeltaSeq += pad.toString(); } else { recDeltaSeq += pad.toString(); } text.append("\n\n"); text.append(RECEIVED_STR); text.append(startingEqSeq); text.append(DIFF_DELTA_START); text.append(recDeltaSeq); text.append(DIFF_DELTA_END); text.append(endingEqSeq); text.append("\n\n"); text.append(COMPARISON_STR); text.append(startingEqSeq); text.append(DIFF_DELTA_START); text.append(compDeltaSeq); text.append(DIFF_DELTA_END); text.append(endingEqSeq); text.append("\n\n"); return text; } } apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/package.html0000644000175000017500000000226012032647217026351 0ustar ebourgebourg Assertions

        Assertions

        Methods to be implemented

        getResult(SampleResult)

        Calling sequence

        When the test plan is prepared for running, one instance of the class is created for each occurrence of an assertion in each thread.

        Assertions are called from the same thread as the sampler

        apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/BSFAssertionResources.properties0000644000175000017500000000313312032647217032403 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BSF Assertion scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of BSF language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props SampleResult (aka prev) AssertionResult sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate BSF language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/assertions/CompareAssertion.java0000644000175000017500000001646212032647217030222 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.assertions; import java.io.Serializable; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.oro.text.regex.StringSubstitution; import org.apache.oro.text.regex.Util; public class CompareAssertion extends AbstractTestElement implements Assertion, TestBean, Serializable, LoopIterationListener { private static final long serialVersionUID = 240L; private transient List responses; private transient final StringSubstitution emptySub = new StringSubstitution(""); //$NON-NLS-1$ private boolean compareContent = true; private long compareTime = -1; private Collection stringsToSkip; public CompareAssertion() { super(); } public AssertionResult getResult(SampleResult response) { responses.add(response); if (responses.size() > 1) { CompareAssertionResult result = new CompareAssertionResult(getName()); compareContent(result); compareTime(result); return result; } else { return new AssertionResult(getName()); } } private void compareTime(CompareAssertionResult result) { if (compareTime >= 0) { long prevTime = -1; SampleResult prevResult = null; boolean success = true; StringBuilder buf = new StringBuilder(); for(SampleResult sResult : responses) { long currentTime = sResult.getTime(); if (prevTime != -1) { success = Math.abs(prevTime - currentTime) <= compareTime; prevResult = sResult; } if (!success) { result.setFailure(true); buf.setLength(0); appendResultDetails(buf, prevResult); buf.append(JMeterUtils.getResString("comparison_response_time")).append(prevTime); result.addToBaseResult(buf.toString()); buf.setLength(0); appendResultDetails(buf, sResult); buf.append(JMeterUtils.getResString("comparison_response_time")).append(currentTime); result.addToSecondaryResult(buf.toString()); result.setFailureMessage( JMeterUtils.getResString("comparison_differ_time")+ //$NON-NLS-1$ compareTime+ JMeterUtils.getResString("comparison_unit")); //$NON-NLS-1$ break; } prevResult = sResult; prevTime = currentTime; } } } private void compareContent(CompareAssertionResult result) { if (compareContent) { String prevContent = null; SampleResult prevResult = null; boolean success = true; StringBuilder buf = new StringBuilder(); for (SampleResult sResult : responses) { String currentContent = sResult.getResponseDataAsString(); currentContent = filterString(currentContent); if (prevContent != null) { success = prevContent.equals(currentContent); } if (!success) { result.setFailure(true); buf.setLength(0); appendResultDetails(buf, prevResult); buf.append(prevContent); result.addToBaseResult(buf.toString()); buf.setLength(0); appendResultDetails(buf, sResult); buf.append(currentContent); result.addToSecondaryResult(buf.toString()); result.setFailureMessage(JMeterUtils.getResString("comparison_differ_content")); //$NON-NLS-1$ break; } prevResult = sResult; prevContent = currentContent; } } } private void appendResultDetails(StringBuilder buf, SampleResult result) { final String samplerData = result.getSamplerData(); if (samplerData != null){ buf.append(samplerData.trim()); } buf.append("\n"); //$NON-NLS-1$ final String requestHeaders = result.getRequestHeaders(); if (requestHeaders != null){ buf.append(requestHeaders); } buf.append("\n\n"); //$NON-NLS-1$ } private String filterString(String content) { if (stringsToSkip == null || stringsToSkip.size() == 0) { return content; } else { for (SubstitutionElement regex : stringsToSkip) { emptySub.setSubstitution(regex.getSubstitute()); content = Util.substitute(JMeterUtils.getMatcher(), JMeterUtils.getPatternCache().getPattern(regex.getRegex()), emptySub, content, Util.SUBSTITUTE_ALL); } } return content; } public void iterationStart(LoopIterationEvent iterEvent) { responses = new LinkedList(); } public void iterationEnd(LoopIterationEvent iterEvent) { responses = null; } /** * @return Returns the compareContent. */ public boolean isCompareContent() { return compareContent; } /** * @param compareContent * The compareContent to set. */ public void setCompareContent(boolean compareContent) { this.compareContent = compareContent; } /** * @return Returns the compareTime. */ public long getCompareTime() { return compareTime; } /** * @param compareTime * The compareTime to set. */ public void setCompareTime(long compareTime) { this.compareTime = compareTime; } /** * @return Returns the stringsToSkip. */ public Collection getStringsToSkip() { return stringsToSkip; } /** * @param stringsToSkip * The stringsToSkip to set. */ public void setStringsToSkip(Collection stringsToSkip) { this.stringsToSkip = stringsToSkip; } } apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/0000755000175000017500000000000012165514773023350 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/sampler/TestAction.java0000644000175000017500000001301412032647217026260 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.sampler; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Dummy Sampler used to pause or stop a thread or the test; * intended for use in Conditional Controllers. * */ public class TestAction extends AbstractSampler implements Interruptible { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); // Actions public static final int STOP = 0; public static final int PAUSE = 1; public static final int STOP_NOW = 2; public static final int RESTART_NEXT_LOOP = 3; // Action targets public static final int THREAD = 0; // public static final int THREAD_GROUP = 1; public static final int TEST = 2; // Identifiers private static final String TARGET = "ActionProcessor.target"; //$NON-NLS-1$ private static final String ACTION = "ActionProcessor.action"; //$NON-NLS-1$ private static final String DURATION = "ActionProcessor.duration"; //$NON-NLS-1$ private volatile transient Thread pauseThread; public TestAction() { super(); } /** * {@inheritDoc} */ public SampleResult sample(Entry e) { JMeterContext context = JMeterContextService.getContext(); int target = getTarget(); int action = getAction(); if (action == PAUSE) { pause(getDurationAsString()); } else if (action == STOP || action == STOP_NOW || action == RESTART_NEXT_LOOP) { if (target == THREAD) { if(action == STOP || action == STOP_NOW) { log.info("Stopping current thread"); context.getThread().stop(); } else { log.info("Restarting next loop"); context.setRestartNextLoop(true); } // //Not yet implemented // } else if (target==THREAD_GROUP) { } else if (target == TEST) { if (action == STOP_NOW) { log.info("Stopping all threads now"); context.getEngine().stopTest(); } else { log.info("Stopping all threads"); context.getEngine().askThreadsToStop(); } } } return null; // This means no sample is saved } private void pause(String mili_s) { int milis; try { milis=Integer.parseInt(mili_s); } catch (NumberFormatException e){ log.warn("Could not create number from "+mili_s); milis=0; } try { pauseThread = Thread.currentThread(); Thread.sleep(milis); } catch (InterruptedException e) { // NOOP } finally { pauseThread = null; } } public void setTarget(int target) { setProperty(new IntegerProperty(TARGET, target)); } public int getTarget() { return getPropertyAsInt(TARGET); } public void setAction(int action) { setProperty(new IntegerProperty(ACTION, action)); } public int getAction() { return getPropertyAsInt(ACTION); } public void setDuration(String duration) { setProperty(new StringProperty(DURATION, duration)); } public String getDurationAsString() { return getPropertyAsString(DURATION); } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } public boolean interrupt() { Thread thrd = pauseThread; // take copy so cannot get NPE if (thrd!= null) { thrd.interrupt(); return true; } return false; } }apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSamplerResources_pt_BR.properties0000644000175000017500000000232012032647217033007 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayJMeterProperties.displayName=Propriedades do JMeter displayJMeterProperties.shortDescription=Exibir propriedades do JMeter? displayJMeterVariables.displayName=Vari\u00E1veis do JMeter displayJMeterVariables.shortDescription=Exibir vari\u00E1veis do JMeter? displayName=Debug testador displaySystemProperties.displayName=Propriedades do sistema displaySystemProperties.shortDescription=Exibir propriedades do sistema? apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSamplerResources_de.properties0000644000175000017500000000236212032647217032377 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayJMeterProperties.displayName=JMeter Eigenschaften displayJMeterProperties.shortDescription=Sollen die JMeter Eigenschaften angezeigt werden? displayJMeterVariables.displayName=JMeter Variablen displayJMeterVariables.shortDescription=Sollen die JMeter Variablen angezeigt werden displayName=Debug Sampler displaySystemProperties.displayName=System Eigenschaften displaySystemProperties.shortDescription=Sollen die System Eigenschaften angezeigt werden apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSamplerResources.properties0000644000175000017500000000225612032647217031731 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Debug Sampler displayJMeterVariables.displayName=JMeter variables displayJMeterProperties.displayName=JMeter properties displaySystemProperties.displayName=System properties displayJMeterVariables.shortDescription=Display JMeter variables ? displayJMeterProperties.shortDescription=Display JMeter properties ? displaySystemProperties.shortDescription=Display System properties ?apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/gui/0000755000175000017500000000000012165514773024134 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/sampler/gui/TestActionGui.java0000644000175000017500000002172612032647217027522 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.sampler.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.ButtonGroup; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.sampler.TestAction; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class TestActionGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; // Gui components private JComboBox targetBox; // private ButtonGroup actionButtons; private JRadioButton pauseButton; private JRadioButton stopButton; private JRadioButton stopNowButton; private JRadioButton restartNextLoopButton; private JTextField durationField; // State variables private int target; private int action; private String durationString; // String in the panel // Do not make these static, otherwise language changes don't work private final String targetLabel = JMeterUtils.getResString("test_action_target"); // $NON-NLS-1$ private final String threadTarget = JMeterUtils.getResString("test_action_target_thread"); // $NON-NLS-1$ private final String testTarget = JMeterUtils.getResString("test_action_target_test"); // $NON-NLS-1$ private final String actionLabel = JMeterUtils.getResString("test_action_action"); // $NON-NLS-1$ private final String pauseAction = JMeterUtils.getResString("test_action_pause"); // $NON-NLS-1$ private final String stopAction = JMeterUtils.getResString("test_action_stop"); // $NON-NLS-1$ private final String stopNowAction = JMeterUtils.getResString("test_action_stop_now"); // $NON-NLS-1$ private final String restartNextLoopAction = JMeterUtils.getResString("test_action_restart_next_loop"); // $NON-NLS-1$ private final String durationLabel = JMeterUtils.getResString("test_action_duration"); // $NON-NLS-1$ public TestActionGui() { super(); target = TestAction.THREAD; action = TestAction.PAUSE; durationString = ""; // $NON-NLS-1$ init(); } public String getLabelResource() { return "test_action_title"; // $NON-NLS-1$ } @Override public void configure(TestElement element) { super.configure(element); TestAction ta = (TestAction) element; target = ta.getTarget(); if (target == TestAction.THREAD) { targetBox.setSelectedItem(threadTarget); } else { targetBox.setSelectedItem(testTarget); } action = ta.getAction(); if (action == TestAction.PAUSE) { pauseButton.setSelected(true); } else if (action == TestAction.STOP_NOW) { stopNowButton.setSelected(true); } else if(action == TestAction.STOP ){ stopButton.setSelected(true); } else { restartNextLoopButton.setSelected(true); } durationString = ta.getDurationAsString(); durationField.setText(durationString); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { TestAction ta = new TestAction(); modifyTestElement(ta); return ta; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { super.configureTestElement(element); TestAction ta = (TestAction) element; ta.setAction(action); ta.setTarget(target); ta.setDuration(durationString); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); targetBox.setSelectedIndex(0); durationString = ""; //$NON-NLS-1$ durationField.setText(""); //$NON-NLS-1$ pauseButton.setSelected(true); action = TestAction.PAUSE; target = TestAction.THREAD; } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); // Target HorizontalPanel targetPanel = new HorizontalPanel(); targetPanel.add(new JLabel(targetLabel)); DefaultComboBoxModel targetModel = new DefaultComboBoxModel(); targetModel.addElement(threadTarget); targetModel.addElement(testTarget); targetBox = new JComboBox(targetModel); targetBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (((String) targetBox.getSelectedItem()).equals(threadTarget)) { target = TestAction.THREAD; } else { target = TestAction.TEST; } } }); targetPanel.add(targetBox); add(targetPanel); // Action HorizontalPanel actionPanel = new HorizontalPanel(); ButtonGroup actionButtons = new ButtonGroup(); pauseButton = new JRadioButton(pauseAction, true); pauseButton.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (pauseButton.isSelected()) { action = TestAction.PAUSE; durationField.setEnabled(true); targetBox.setEnabled(true); } } }); stopButton = new JRadioButton(stopAction, false); stopButton.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (stopButton.isSelected()) { action = TestAction.STOP; durationField.setEnabled(false); targetBox.setEnabled(true); } } }); stopNowButton = new JRadioButton(stopNowAction, false); stopNowButton.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (stopNowButton.isSelected()) { action = TestAction.STOP_NOW; durationField.setEnabled(false); targetBox.setEnabled(true); } } }); restartNextLoopButton = new JRadioButton(restartNextLoopAction, false); restartNextLoopButton.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (restartNextLoopButton.isSelected()) { action = TestAction.RESTART_NEXT_LOOP; durationField.setEnabled(false); targetBox.setSelectedIndex(TestAction.THREAD); targetBox.setEnabled(false); } } }); actionButtons.add(pauseButton); actionButtons.add(stopButton); actionButtons.add(stopNowButton); actionButtons.add(restartNextLoopButton); actionPanel.add(new JLabel(actionLabel)); actionPanel.add(pauseButton); actionPanel.add(stopButton); actionPanel.add(stopNowButton); actionPanel.add(restartNextLoopButton); add(actionPanel); // Duration HorizontalPanel durationPanel = new HorizontalPanel(); durationField = new JTextField(15); durationField.setText(""); durationField.addFocusListener(new FocusListener() { public void focusLost(FocusEvent e) { durationString = durationField.getText(); } public void focusGained(FocusEvent e) { } }); durationPanel.add(new JLabel(durationLabel)); durationPanel.add(durationField); add(durationPanel); } } apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSamplerResources_fr.properties0000644000175000017500000000244612032647217032421 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayJMeterProperties.displayName=Propri\u00E9t\u00E9s JMeter displayJMeterProperties.shortDescription=Afficher les propri\u00E9t\u00E9s JMeter ? displayJMeterVariables.displayName=Variables JMeter displayJMeterVariables.shortDescription=Afficher les variables JMeter ? displayName=Echantillon D\u00E9bogage displaySystemProperties.displayName=Propri\u00E9t\u00E9s Syst\u00E8me displaySystemProperties.shortDescription=Afficher les propri\u00E9t\u00E9s syst\u00E8mes ? apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSamplerResources_tr.properties0000644000175000017500000000245012032647217032432 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayJMeterProperties.displayName=JMeter ayarlar\u0131 displayJMeterProperties.shortDescription=JMeter ayarlar\u0131n\u0131 g\u00F6ster ? displayJMeterVariables.displayName=JMeter de\u011Fi\u015Fkenleri displayJMeterVariables.shortDescription=JMeter de\u011Fi\u015Fkenlerini g\u00F6ster ? displayName=Ay\u0131klama \u00D6rnekleyicisi displaySystemProperties.displayName=Sistem ayarlar\u0131 displaySystemProperties.shortDescription=Sistem ayarlar\u0131n\u0131 g\u00F6ster ? apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSampler.java0000644000175000017500000001171412032647217026562 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.sampler; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.JMeterUtils; /** * The Debug Sampler can be used to "sample" JMeter variables, JMeter properties and System Properties. * */ public class DebugSampler extends AbstractSampler implements TestBean { private static final long serialVersionUID = 232L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private boolean displayJMeterVariables; private boolean displayJMeterProperties; private boolean displaySystemProperties; public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.sampleStart(); StringBuilder sb = new StringBuilder(100); StringBuilder rd = new StringBuilder(20); // for request Data if (isDisplayJMeterVariables()){ rd.append("JMeterVariables\n"); sb.append("JMeterVariables:\n"); formatSet(sb, JMeterContextService.getContext().getVariables().entrySet()); sb.append("\n"); } if (isDisplayJMeterProperties()){ rd.append("JMeterProperties\n"); sb.append("JMeterProperties:\n"); formatSet(sb, JMeterUtils.getJMeterProperties().entrySet()); sb.append("\n"); } if (isDisplaySystemProperties()){ rd.append("SystemProperties\n"); sb.append("SystemProperties:\n"); formatSet(sb, System.getProperties().entrySet()); sb.append("\n"); } res.setResponseData(sb.toString(), null); res.setDataType(SampleResult.TEXT); res.setSamplerData(rd.toString()); res.setResponseOK(); res.sampleEnd(); return res; } private void formatSet(StringBuilder sb, @SuppressWarnings("rawtypes") Set s) { @SuppressWarnings("unchecked") ArrayList> al = new ArrayList>(s); Collections.sort(al, new Comparator>(){ public int compare(Map.Entry o1, Map.Entry o2) { String m1,m2; m1=(String)o1.getKey(); m2=(String)o2.getKey(); return m1.compareTo(m2); } }); for(Map.Entry me : al){ sb.append(me.getKey()); sb.append("="); sb.append(me.getValue()); sb.append("\n"); } } public boolean isDisplayJMeterVariables() { return displayJMeterVariables; } public void setDisplayJMeterVariables(boolean displayJMeterVariables) { this.displayJMeterVariables = displayJMeterVariables; } public boolean isDisplayJMeterProperties() { return displayJMeterProperties; } public void setDisplayJMeterProperties(boolean displayJMeterPropterties) { this.displayJMeterProperties = displayJMeterPropterties; } public boolean isDisplaySystemProperties() { return displaySystemProperties; } public void setDisplaySystemProperties(boolean displaySystemProperties) { this.displaySystemProperties = displaySystemProperties; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/components/org/apache/jmeter/sampler/DebugSamplerBeanInfo.java0000644000175000017500000000342512032647217030164 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.sampler; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; public class DebugSamplerBeanInfo extends BeanInfoSupport { public DebugSamplerBeanInfo() { super(DebugSampler.class); PropertyDescriptor p; p = property("displayJMeterVariables"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p = property("displayJMeterProperties"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); p = property("displaySystemProperties"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); } } apache-jmeter-2.8/src/components/org/apache/jmeter/reporters/0000755000175000017500000000000012165514773023732 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/reporters/MailerModel.java0000644000175000017500000004205112032647217026762 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.StringTokenizer; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The model for a MailerVisualizer. * */ public class MailerModel extends AbstractTestElement implements Serializable { public static enum MailAuthType { SSL, TLS, NONE; } private static final long serialVersionUID = 270L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String MAIL_SMTP_HOST = "mail.smtp.host"; //$NON-NLS-1$ private static final String MAIL_SMTP_PORT = "mail.smtp.port"; //$NON-NLS-1$ private static final String MAIL_SMTP_AUTH = "mail.smtp.auth"; //$NON-NLS-1$ private static final String MAIL_SMTP_SOCKETFACTORY_CLASS = "mail.smtp.socketFactory.class"; //$NON-NLS-1$ private static final String MAIL_SMTP_STARTTLS = "mail.smtp.starttls.enable"; //$NON-NLS-1$ private long failureCount = 0; private long successCount = 0; private boolean failureMsgSent = false; private boolean siteDown = false; private boolean successMsgSent = false; private static final String FROM_KEY = "MailerModel.fromAddress"; //$NON-NLS-1$ private static final String TO_KEY = "MailerModel.addressie"; //$NON-NLS-1$ private static final String HOST_KEY = "MailerModel.smtpHost"; //$NON-NLS-1$ private static final String PORT_KEY = "MailerModel.smtpPort"; //$NON-NLS-1$ private static final String SUCCESS_SUBJECT = "MailerModel.successSubject"; //$NON-NLS-1$ private static final String FAILURE_SUBJECT = "MailerModel.failureSubject"; //$NON-NLS-1$ private static final String FAILURE_LIMIT_KEY = "MailerModel.failureLimit"; //$NON-NLS-1$ private static final String SUCCESS_LIMIT_KEY = "MailerModel.successLimit"; //$NON-NLS-1$ private static final String LOGIN = "MailerModel.login"; //$NON-NLS-1$ private static final String PASSWORD = "MailerModel.password"; //$NON-NLS-1$ private static final String MAIL_AUTH_TYPE = "MailerModel.authType"; //$NON-NLS-1$ private static final String DEFAULT_LIMIT = "2"; //$NON-NLS-1$ private static final String DEFAULT_SMTP_PORT = "25"; private static final String DEFAULT_PASSWORD_VALUE = ""; //$NON-NLS-1$ private static final String DEFAULT_MAIL_AUTH_TYPE_VALUE = MailAuthType.NONE.toString(); //$NON-NLS-1$ private static final String DEFAULT_LOGIN_VALUE = ""; //$NON-NLS-1$ /** The listener for changes. */ private transient ChangeListener changeListener; /** * Constructs a MailerModel. */ public MailerModel() { super(); setProperty(SUCCESS_LIMIT_KEY, JMeterUtils.getPropDefault("mailer.successlimit", DEFAULT_LIMIT)); //$NON-NLS-1$ setProperty(FAILURE_LIMIT_KEY, JMeterUtils.getPropDefault("mailer.failurelimit", DEFAULT_LIMIT)); //$NON-NLS-1$ } public void addChangeListener(ChangeListener list) { changeListener = list; } /** {@inheritDoc} */ @Override public Object clone() { MailerModel m = (MailerModel) super.clone(); m.changeListener = changeListener; return m; } public void notifyChangeListeners() { if (changeListener != null) { changeListener.stateChanged(new ChangeEvent(this)); } } /** * Gets a List of String-objects. Each String is one mail-address of the * addresses-String set by setToAddress(str). The addresses * must be seperated by commas. Only String-objects containing a "@" are * added to the returned List. * * @return a List of String-objects wherein each String represents a * mail-address. */ public List getAddressList() { String addressees = getToAddress(); List addressList = new ArrayList(); if (addressees != null) { StringTokenizer next = new StringTokenizer(addressees, ","); //$NON-NLS-1$ while (next.hasMoreTokens()) { String theToken = next.nextToken().trim(); if (theToken.indexOf('@') > 0) { //$NON-NLS-1$ addressList.add(theToken); } else { log.warn("Ignored unexpected e-mail address: "+theToken); } } } return addressList; } /** * Adds a SampleResult for display in the Visualizer. * * @param sample * the SampleResult encapsulating informations about the last * sample. */ public void add(SampleResult sample) { add(sample, false); } /** * Adds a SampleResult. If SampleResult represents a change concerning the * failure/success of the sampling a message might be sent to the addressies * according to the settings of successCount and * failureCount. * * @param sample * the SampleResult encapsulating information about the last * sample. * @param sendMails whether or not to send e-mails */ public synchronized void add(SampleResult sample, boolean sendMails) { // -1 is the code for a failed sample. // if (!sample.isSuccessful()) { failureCount++; successCount = 0; } else { successCount++; } if (sendMails && (failureCount > getFailureLimit()) && !siteDown && !failureMsgSent) { // Send the mail ... List addressList = getAddressList(); if (addressList.size() != 0) { try { sendMail(getFromAddress(), addressList, getFailureSubject(), "URL Failed: " + sample.getSampleLabel(), getSmtpHost(), getSmtpPort(), getLogin(), getPassword(), getMailAuthType(), false); } catch (Exception e) { log.error("Problem sending mail: "+e); } siteDown = true; failureMsgSent = true; successCount = 0; successMsgSent = false; } } if (sendMails && siteDown && (sample.getTime() != -1) && !successMsgSent) { // Send the mail ... if (successCount > getSuccessLimit()) { List addressList = getAddressList(); try { sendMail(getFromAddress(), addressList, getSuccessSubject(), "URL Restarted: " + sample.getSampleLabel(), getSmtpHost(), getSmtpPort(), getLogin(), getPassword(), getMailAuthType(), false); } catch (Exception e) { log.error("Problem sending mail", e); } siteDown = false; successMsgSent = true; failureCount = 0; failureMsgSent = false; } } if (successMsgSent && failureMsgSent) { clear(); } notifyChangeListeners(); } /** * Resets the state of this object to its default. But: This method does not * reset any mail-specific attributes (like sender, mail-subject...) since * they are independent of the sampling. */ @Override public synchronized void clear() {// TODO: should this be clearData()? failureCount = 0; successCount = 0; siteDown = false; successMsgSent = false; failureMsgSent = false; notifyChangeListeners(); } /** * Returns a String-representation of this object. Returns always * "E-Mail-Notification". Might be enhanced in future versions to return * some kind of String-representation of the mail-parameters (like sender, * addressies, smtpHost...). * * @return A String-representation of this object. */ @Override public String toString() { return "E-Mail Notification"; } /** * Sends a mail with the given parameters using SMTP. * * @param from * the sender of the mail as shown in the mail-client. * @param vEmails * all receivers of the mail. The receivers are seperated by * commas. * @param subject * the subject of the mail. * @param attText * the message-body. * @param smtpHost * the smtp-server used to send the mail. * @throws MessagingException * @throws AddressException */ public void sendMail(String from, List vEmails, String subject, String attText, String smtpHost) throws AddressException, MessagingException { sendMail(from, vEmails, subject, attText, smtpHost, DEFAULT_SMTP_PORT, null, null, null, false); } /** * Sends a mail with the given parameters using SMTP. * * @param from * the sender of the mail as shown in the mail-client. * @param vEmails * all receivers of the mail. The receivers are seperated by * commas. * @param subject * the subject of the mail. * @param attText * the message-body. * @param smtpHost * the smtp-server used to send the mail. * @param smtpPort the smtp-server port used to send the mail. * @param user the login used to authenticate * @param password the password used to authenticate * @param mailAuthType {@link MailAuthType} Security policy * @throws AddressException If mail address is wrong * @throws MessagingException If building MimeMessage fails */ public void sendMail(String from, List vEmails, String subject, String attText, String smtpHost, String smtpPort, final String user, final String password, MailAuthType mailAuthType, boolean debug) throws AddressException, MessagingException{ InternetAddress[] address = new InternetAddress[vEmails.size()]; for (int k = 0; k < vEmails.size(); k++) { address[k] = new InternetAddress(vEmails.get(k)); } // create some properties and get the default Session Properties props = new Properties(); props.put(MAIL_SMTP_HOST, smtpHost); props.put(MAIL_SMTP_PORT, smtpPort); // property values are strings Authenticator authenticator = null; if(mailAuthType != MailAuthType.NONE) { props.put(MAIL_SMTP_AUTH, "true"); switch (mailAuthType) { case SSL: props.put(MAIL_SMTP_SOCKETFACTORY_CLASS, "javax.net.ssl.SSLSocketFactory"); break; case TLS: props.put(MAIL_SMTP_STARTTLS, "true"); break; default: break; } } if(!StringUtils.isEmpty(user)) { authenticator = new javax.mail.Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }; } Session session = Session.getInstance(props, authenticator); session.setDebug(debug); // create a message Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject(subject); msg.setText(attText); Transport.send(msg); } /** * Send a Test Mail to check configuration * @throws AddressException If mail address is wrong * @throws MessagingException If building MimeMessage fails */ public synchronized void sendTestMail() throws AddressException, MessagingException { String to = getToAddress(); String from = getFromAddress(); String subject = "Testing mail-addresses"; String smtpHost = getSmtpHost(); String attText = "JMeter-Testmail" + "\n" + "To: " + to + "\n" + "From: " + from + "\n" + "Via: " + smtpHost + "\n" + "Fail Subject: " + getFailureSubject() + "\n" + "Success Subject: " + getSuccessSubject(); log.info(attText); sendMail(from, getAddressList(), subject, attText, smtpHost, getSmtpPort(), getLogin(), getPassword(), getMailAuthType(), true); log.info("Test mail sent successfully!!"); } // //////////////////////////////////////////////////////////// // // setter/getter - JavaDoc-Comments not needed... // // //////////////////////////////////////////////////////////// public void setToAddress(String str) { setProperty(TO_KEY, str); } public void setFromAddress(String str) { setProperty(FROM_KEY, str); } public void setSmtpHost(String str) { setProperty(HOST_KEY, str); } public void setSmtpPort(String value) { if(StringUtils.isEmpty(value)) { value = DEFAULT_SMTP_PORT; } setProperty(PORT_KEY, value, DEFAULT_SMTP_PORT); } public void setLogin(String login) { setProperty(LOGIN, login, DEFAULT_LOGIN_VALUE); } public void setPassword(String password) { setProperty(PASSWORD, password, DEFAULT_PASSWORD_VALUE); } public void setMailAuthType(String value) { setProperty(MAIL_AUTH_TYPE, value, DEFAULT_MAIL_AUTH_TYPE_VALUE); } public void setFailureSubject(String str) { setProperty(FAILURE_SUBJECT, str); } public void setSuccessSubject(String str) { setProperty(SUCCESS_SUBJECT, str); } public void setSuccessLimit(String limit) { setProperty(SUCCESS_LIMIT_KEY, limit); } // private void setSuccessCount(long count) // { // this.successCount = count; // } public void setFailureLimit(String limit) { setProperty(FAILURE_LIMIT_KEY, limit); } // private void setFailureCount(long count) // { // this.failureCount = count; // } public String getToAddress() { return getPropertyAsString(TO_KEY); } public String getFromAddress() { return getPropertyAsString(FROM_KEY); } public String getSmtpHost() { return getPropertyAsString(HOST_KEY); } public String getSmtpPort() { return getPropertyAsString(PORT_KEY, DEFAULT_SMTP_PORT); } public String getFailureSubject() { return getPropertyAsString(FAILURE_SUBJECT); } public String getSuccessSubject() { return getPropertyAsString(SUCCESS_SUBJECT); } public long getSuccessLimit() { return getPropertyAsLong(SUCCESS_LIMIT_KEY); } public long getSuccessCount() { return successCount; } public long getFailureLimit() { return getPropertyAsLong(FAILURE_LIMIT_KEY); } public long getFailureCount() { return this.failureCount; } public String getLogin() { return getPropertyAsString(LOGIN, DEFAULT_LOGIN_VALUE); } public String getPassword() { return getPropertyAsString(PASSWORD, DEFAULT_PASSWORD_VALUE); } public MailAuthType getMailAuthType() { String authType = getPropertyAsString(MAIL_AUTH_TYPE, DEFAULT_MAIL_AUTH_TYPE_VALUE); return MailAuthType.valueOf(authType); } }apache-jmeter-2.8/src/components/org/apache/jmeter/reporters/MailerResultCollector.java0000644000175000017500000000360712032647217031053 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.reporters; import java.io.Serializable; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.testelement.property.TestElementProperty; public class MailerResultCollector extends ResultCollector implements Serializable { private static final long serialVersionUID = 240L; public static final String MAILER_MODEL = "MailerResultCollector.mailer_model"; //$NON-NLS-1$ public MailerResultCollector() { super(); setProperty(new TestElementProperty(MAILER_MODEL, new MailerModel())); } /** {@inheritDoc} */ @Override public void clear() { super.clear(); setProperty(new TestElementProperty(MAILER_MODEL, new MailerModel())); } /** {@inheritDoc} */ @Override public void sampleOccurred(SampleEvent e) { super.sampleOccurred(e); // sends the result to the visualiser getMailerModel().add(e.getResult(), true); // updates the model used for sending e-mails } public MailerModel getMailerModel() { return (MailerModel) getProperty(MAILER_MODEL).getObjectValue(); } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/0000755000175000017500000000000012165514773023666 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/JSR223PreProcessorResources.properties0000644000175000017500000000307712032647217033133 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JSR223 PreProcessor scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of JSR223 language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate JSR223 language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorBeanInfo.java0000644000175000017500000000206212032647217032330 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.modifiers; import org.apache.jmeter.util.BeanShellBeanInfoSupport; public class BeanShellPreProcessorBeanInfo extends BeanShellBeanInfoSupport { public BeanShellPreProcessorBeanInfo() { super(BeanShellPreProcessor.class); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_tr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_tr.prope0000644000175000017500000000272712032647217033542 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=BeanShell \u00D6n \u0130\u015Flemcisi filename.displayName=Dosya Ad\u0131 filename.shortDescription=BeanShell betik dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) filenameGroup.displayName=Betik dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) parameterGroup.displayName=BeanShell'e ge\u00E7ilecek parametreler (\=> Dizgi (string) parametreler ve String [] bsh.args) parameters.displayName=Parametreler parameters.shortDescription=BeanShell'e ge\u00E7ilecek parametreler (dosya ya da betik) script.shortDescription=Beanshell beti\u011Fi scripting.displayName=Betik (de\u011Fi\u015Fkenler\: ctx vars props prev sampler log) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_de.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_de.prope0000644000175000017500000000257412032647217033505 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell Pre-Prozessor filename.displayName=Dateiname filename.shortDescription=BeanShell Script Datei (Vorrang vor Script) filenameGroup.displayName=Script Datei (Vorrang vor Script) parameterGroup.displayName=Parameter die der BeanShell \u00FCbergeben werden (String Parameters, String []bsh.args) parameters.displayName=Parameter parameters.shortDescription=Parameter die der BeanShell \u00FCbergeben werden (Datei oder Script) script.displayName=BeanShell Script script.shortDescription=BeanShell Script scripting.displayName=Script (Variablen\: ctx vars props prev sampler log) apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/JSR223PreProcessorBeanInfo.java0000644000175000017500000000204212032647217031356 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.modifiers; import org.apache.jmeter.util.JSR223BeanInfoSupport; public class JSR223PreProcessorBeanInfo extends JSR223BeanInfoSupport { public JSR223PreProcessorBeanInfo() { super(JSR223PreProcessor.class); } }././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_pt_BR.pr0000644000175000017500000000300712032647217033407 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Pr\u00E9-Processador BeanShell filename.displayName=Nome do Arquivo filename.shortDescription=Arquivo de script do BeanShell (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao BeanShell (\=> String Parameters e String []bsh.args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao BeanShell (arquivo ou script) resetGroup.displayName=Reiniciar bsh.Interpreter antes de cada chamada resetInterpreter.displayName=Reiniciar interpretador script.displayName=\ script.shortDescription=Script Beanshell scripting.displayName=Script (var\u00E1veis\: ctx vars props prev sampler log) apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BSFPreProcessorBeanInfo.java0000644000175000017500000000202412032647217031103 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.modifiers; import org.apache.jmeter.util.BSFBeanInfoSupport; public class BSFPreProcessorBeanInfo extends BSFBeanInfoSupport { public BSFPreProcessorBeanInfo() { super(BSFPreProcessor.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/UserParameters.java0000644000175000017500000001576712032647217027504 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.modifiers; import java.io.Serializable; import java.util.Collection; import java.util.LinkedList; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class UserParameters extends AbstractTestElement implements Serializable, PreProcessor, LoopIterationListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 233L; public static final String NAMES = "UserParameters.names";// $NON-NLS-1$ public static final String THREAD_VALUES = "UserParameters.thread_values";// $NON-NLS-1$ public static final String PER_ITERATION = "UserParameters.per_iteration";// $NON-NLS-1$ /* * Although the lock appears to be an instance lock, in fact the lock is * shared between all threads in a thread group, but different thread groups * have different locks - see the clone() method below * * The lock ensures that all the variables are processed together, which is * important for functions such as __CSVRead and _StringFromFile. */ private transient Object lock = new Object(); private Object readResolve(){ // Lock object must exist lock = new Object(); return this; } public CollectionProperty getNames() { return (CollectionProperty) getProperty(NAMES); } public CollectionProperty getThreadLists() { return (CollectionProperty) getProperty(THREAD_VALUES); } /** * The list of names of the variables to hold values. This list must come in * the same order as the sub lists that are given to * {@link #setThreadLists(Collection)}. */ public void setNames(Collection list) { setProperty(new CollectionProperty(NAMES, list)); } /** * The list of names of the variables to hold values. This list must come in * the same order as the sub lists that are given to * {@link #setThreadLists(CollectionProperty)}. */ public void setNames(CollectionProperty list) { setProperty(list); } /** * The thread list is a list of lists. Each list within the parent list is a * collection of values for a simulated user. As many different sets of * values can be supplied in this fashion to cause JMeter to set different * values to variables for different test threads. */ public void setThreadLists(Collection threadLists) { setProperty(new CollectionProperty(THREAD_VALUES, threadLists)); } /** * The thread list is a list of lists. Each list within the parent list is a * collection of values for a simulated user. As many different sets of * values can be supplied in this fashion to cause JMeter to set different * values to variables for different test threads. */ public void setThreadLists(CollectionProperty threadLists) { setProperty(threadLists); } private CollectionProperty getValues() { CollectionProperty threadValues = (CollectionProperty) getProperty(THREAD_VALUES); if (threadValues.size() > 0) { return (CollectionProperty) threadValues.get(getThreadContext().getThreadNum() % threadValues.size()); } return new CollectionProperty("noname", new LinkedList()); } public boolean isPerIteration() { return getPropertyAsBoolean(PER_ITERATION); } public void setPerIteration(boolean perIter) { setProperty(new BooleanProperty(PER_ITERATION, perIter)); } public void process() { if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName() + " process " + isPerIteration());//$NON-NLS-1$ } if (!isPerIteration()) { setValues(); } } private void setValues() { synchronized (lock) { if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName() + " Running up named: " + getName());//$NON-NLS-1$ } PropertyIterator namesIter = getNames().iterator(); PropertyIterator valueIter = getValues().iterator(); JMeterVariables jmvars = getThreadContext().getVariables(); while (namesIter.hasNext() && valueIter.hasNext()) { String name = namesIter.next().getStringValue(); String value = valueIter.next().getStringValue(); if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName() + " saving variable: " + name + "=" + value);//$NON-NLS-1$ } jmvars.put(name, value); } } } /** * @see LoopIterationListener#iterationStart(LoopIterationEvent) */ public void iterationStart(LoopIterationEvent event) { if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName() + " iteration start " + isPerIteration());//$NON-NLS-1$ } if (isPerIteration()) { setValues(); } } /* * (non-Javadoc) A new instance is created for each thread group, and the * clone() method is then called to create copies for each thread in a * thread group. This means that the lock object is common to a thread * group; separate thread groups have separate locks. If this is not * intended, the lock object could be made static. * * @see java.lang.Object#clone() */ @Override public Object clone() { UserParameters up = (UserParameters) super.clone(); up.lock = lock; // ensure that clones share the same lock object return up; } /** * {@inheritDoc} */ @Override protected void mergeIn(TestElement element) { // super.mergeIn(element); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources_fr.prope0000644000175000017500000000303412032647217033514 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Pr\u00E9-Processeur BeanShell filename.displayName=Nom de fichier filename.shortDescription=Fichier script BeanShell (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au BeanShell (\=> String Parameters and String []bsh.args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au BeanShell (fichier ou script) resetGroup.displayName=R\u00E9initialiser l'interpr\u00E9teur bsh avant chaque appel resetInterpreter.displayName=R\u00E9initialiser l'interpr\u00E9teur script.displayName=Script script.shortDescription=Script BeanShell scripting.displayName=Script (variables \: ctx vars props prev sampler log)apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BSFPreProcessor.java0000644000175000017500000000332012032647217027501 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.modifiers; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BSFTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class BSFPreProcessor extends BSFTestElement implements Cloneable, PreProcessor, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; public void process(){ BSFManager mgr =null; try { mgr = getManager(); if (mgr == null) { return; } processFileOrScript(mgr); } catch (BSFException e) { log.warn("Problem in BSF script "+e); } finally { if (mgr != null) { mgr.terminate(); } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/gui/0000755000175000017500000000000012165514773024452 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/gui/UserParametersGui.java0000644000175000017500000003573012032647216030724 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.modifiers.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FontMetrics; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.PowerTableModel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.modifiers.UserParameters; import org.apache.jmeter.processor.gui.AbstractPreProcessorGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class UserParametersGui extends AbstractPreProcessorGui { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String NAME_COL_RESOURCE = "name"; // $NON-NLS-1$ private static final String USER_COL_RESOURCE = "user"; // $NON-NLS-1$ private static final String UNDERSCORE = "_"; // $NON-NLS-1$ private JTable paramTable; private PowerTableModel tableModel; private int numUserColumns = 1; private JButton addParameterButton, addUserButton, deleteRowButton, deleteColumnButton; private JCheckBox perIterationCheck; private JPanel paramPanel; public UserParametersGui() { super(); init(); } public String getLabelResource() { return "user_parameters_title"; // $NON-NLS-1$ } @Override public void configure(TestElement el) { initTableModel(); paramTable.setModel(tableModel); UserParameters params = (UserParameters) el; CollectionProperty names = params.getNames(); CollectionProperty threadValues = params.getThreadLists(); tableModel.setColumnData(0, (List) names.getObjectValue()); PropertyIterator iter = threadValues.iterator(); if (iter.hasNext()) { tableModel.setColumnData(1, (List) iter.next().getObjectValue()); } int count = 2; while (iter.hasNext()) { String colName = getUserColName(count); tableModel.addNewColumn(colName, String.class); tableModel.setColumnData(count, (List) iter.next().getObjectValue()); count++; } setColumnWidths(); perIterationCheck.setSelected(params.isPerIteration()); super.configure(el); } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { UserParameters params = new UserParameters(); modifyTestElement(params); return params; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement params) { GuiUtils.stopTableEditing(paramTable); UserParameters userParams = ((UserParameters) params); userParams.setNames(new CollectionProperty(UserParameters.NAMES, tableModel.getColumnData(NAME_COL_RESOURCE))); CollectionProperty threadLists = new CollectionProperty(UserParameters.THREAD_VALUES, new ArrayList()); log.debug("making threadlists from gui"); for (int col = 1; col < tableModel.getColumnCount(); col++) { threadLists.addItem(tableModel.getColumnData(getUserColName(col))); if (log.isDebugEnabled()) { log.debug("Adding column to threadlist: " + tableModel.getColumnData(getUserColName(col))); log.debug("Threadlists now = " + threadLists); } } if (log.isDebugEnabled()) { log.debug("In the end, threadlists = " + threadLists); } userParams.setThreadLists(threadLists); userParams.setPerIteration(perIterationCheck.isSelected()); super.configureTestElement(params); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); initTableModel(); paramTable.setModel(tableModel); HeaderAsPropertyRenderer defaultRenderer = new HeaderAsPropertyRenderer(){ private static final long serialVersionUID = 240L; @Override protected String getText(Object value, int row, int column) { if (column >= 1){ // Don't process the NAME column String val = value.toString(); if (val.startsWith(USER_COL_RESOURCE+UNDERSCORE)){ return JMeterUtils.getResString(USER_COL_RESOURCE)+val.substring(val.indexOf(UNDERSCORE)); } } return super.getText(value, row, column); } }; paramTable.getTableHeader().setDefaultRenderer(defaultRenderer); perIterationCheck.setSelected(false); } private String getUserColName(int user){ return USER_COL_RESOURCE+UNDERSCORE+user; } private void init() { setBorder(makeBorder()); setLayout(new BorderLayout()); JPanel vertPanel = new VerticalPanel(); vertPanel.add(makeTitlePanel()); perIterationCheck = new JCheckBox(JMeterUtils.getResString("update_per_iter"), true); // $NON-NLS-1$ Box perIterationPanel = Box.createHorizontalBox(); perIterationPanel.add(perIterationCheck); perIterationPanel.add(Box.createHorizontalGlue()); vertPanel.add(perIterationPanel); add(vertPanel, BorderLayout.NORTH); add(makeParameterPanel(), BorderLayout.CENTER); } private JPanel makeParameterPanel() { JLabel tableLabel = new JLabel(JMeterUtils.getResString("user_parameters_table")); // $NON-NLS-1$ initTableModel(); paramTable = new JTable(tableModel); // paramTable.setRowSelectionAllowed(true); // paramTable.setColumnSelectionAllowed(true); paramTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); paramTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); // paramTable.setCellSelectionEnabled(true); // paramTable.setPreferredScrollableViewportSize(new Dimension(100, // 70)); paramPanel = new JPanel(new BorderLayout()); paramPanel.add(tableLabel, BorderLayout.NORTH); JScrollPane scroll = new JScrollPane(paramTable); scroll.setPreferredSize(scroll.getMinimumSize()); paramPanel.add(scroll, BorderLayout.CENTER); paramPanel.add(makeButtonPanel(), BorderLayout.SOUTH); return paramPanel; } protected void initTableModel() { tableModel = new PowerTableModel(new String[] { NAME_COL_RESOURCE, // $NON-NLS-1$ getUserColName(numUserColumns) }, new Class[] { String.class, String.class }); } private JPanel makeButtonPanel() { JPanel buttonPanel = new JPanel(); buttonPanel.setLayout(new GridLayout(2, 2)); addParameterButton = new JButton(JMeterUtils.getResString("add_parameter")); // $NON-NLS-1$ addUserButton = new JButton(JMeterUtils.getResString("add_user")); // $NON-NLS-1$ deleteRowButton = new JButton(JMeterUtils.getResString("delete_parameter")); // $NON-NLS-1$ deleteColumnButton = new JButton(JMeterUtils.getResString("delete_user")); // $NON-NLS-1$ buttonPanel.add(addParameterButton); buttonPanel.add(deleteRowButton); buttonPanel.add(addUserButton); buttonPanel.add(deleteColumnButton); addParameterButton.addActionListener(new AddParamAction()); addUserButton.addActionListener(new AddUserAction()); deleteRowButton.addActionListener(new DeleteRowAction()); deleteColumnButton.addActionListener(new DeleteColumnAction()); return buttonPanel; } /** * Set Column size */ private void setColumnWidths() { int margin = 10; int minwidth = 150; JTableHeader tableHeader = paramTable.getTableHeader(); FontMetrics headerFontMetrics = tableHeader.getFontMetrics(tableHeader.getFont()); for (int i = 0; i < tableModel.getColumnCount(); i++) { int headerWidth = headerFontMetrics.stringWidth(paramTable.getColumnName(i)); int maxWidth = getMaximalRequiredColumnWidth(i, headerWidth); paramTable.getColumnModel().getColumn(i).setPreferredWidth(Math.max(maxWidth + margin, minwidth)); } } /** * Compute max width between width of the largest column at columnIndex and headerWidth * @param columnIndex Column index * @param headerWidth Header width based on Font */ private int getMaximalRequiredColumnWidth(int columnIndex, int headerWidth) { int maxWidth = headerWidth; TableColumn column = paramTable.getColumnModel().getColumn(columnIndex); TableCellRenderer cellRenderer = column.getCellRenderer(); if(cellRenderer == null) { cellRenderer = new DefaultTableCellRenderer(); } for(int row = 0; row < paramTable.getModel().getRowCount(); row++) { Component rendererComponent = cellRenderer.getTableCellRendererComponent(paramTable, paramTable.getModel().getValueAt(row, columnIndex), false, false, row, columnIndex); double valueWidth = rendererComponent.getPreferredSize().getWidth(); maxWidth = (int) Math.max(maxWidth, valueWidth); } return maxWidth; } private class AddParamAction implements ActionListener { public void actionPerformed(ActionEvent e) { GuiUtils.stopTableEditing(paramTable); tableModel.addNewRow(); tableModel.fireTableDataChanged(); // Enable DELETE (which may already be enabled, but it won't hurt) deleteRowButton.setEnabled(true); // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; paramTable.setRowSelectionInterval(rowToSelect, rowToSelect); } } private class AddUserAction implements ActionListener { public void actionPerformed(ActionEvent e) { GuiUtils.stopTableEditing(paramTable); tableModel.addNewColumn(getUserColName(tableModel.getColumnCount()), String.class); tableModel.fireTableDataChanged(); setColumnWidths(); // Enable DELETE (which may already be enabled, but it won't hurt) deleteColumnButton.setEnabled(true); // Highlight (select) the appropriate row. int colToSelect = tableModel.getColumnCount() - 1; paramTable.setColumnSelectionInterval(colToSelect, colToSelect); } } private class DeleteRowAction implements ActionListener { public void actionPerformed(ActionEvent e) { if (paramTable.isEditing()) { TableCellEditor cellEditor = paramTable.getCellEditor(paramTable.getEditingRow(), paramTable .getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = paramTable.getSelectedRow(); if (rowSelected >= 0) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { deleteRowButton.setEnabled(false); } // Table still contains one or more rows, so highlight (select) // the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } paramTable.setRowSelectionInterval(rowToSelect, rowToSelect); } } } } private class DeleteColumnAction implements ActionListener { public void actionPerformed(ActionEvent e) { if (paramTable.isEditing()) { TableCellEditor cellEditor = paramTable.getCellEditor(paramTable.getEditingRow(), paramTable .getEditingColumn()); cellEditor.cancelCellEditing(); } int colSelected = paramTable.getSelectedColumn(); if (colSelected == 0 || colSelected == 1) { JOptionPane.showMessageDialog(null, JMeterUtils.getResString("column_delete_disallowed"), // $NON-NLS-1$ "Error", JOptionPane.ERROR_MESSAGE); return; } if (colSelected >= 0) { tableModel.removeColumn(colSelected); tableModel.fireTableDataChanged(); // Disable DELETE if there are no rows in the table to delete. if (tableModel.getColumnCount() == 0) { deleteColumnButton.setEnabled(false); } // Table still contains one or more rows, so highlight (select) // the appropriate one. else { if (colSelected >= tableModel.getColumnCount()) { colSelected = colSelected - 1; } paramTable.setColumnSelectionInterval(colSelected, colSelected); } setColumnWidths(); } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/gui/CounterConfigGui.java0000644000175000017500000001317612032647216030527 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.modifiers.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.modifiers.CounterConfig; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.gui.layout.VerticalLayout; public class CounterConfigGui extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = 240L; private JLabeledTextField startField; private JLabeledTextField incrField; private JLabeledTextField endField; private JLabeledTextField varNameField; private JLabeledTextField formatField; private JCheckBox resetCounterOnEachThreadGroupIteration; private JCheckBox perUserField; public CounterConfigGui() { super(); init(); } public String getLabelResource() { return "counter_config_title";//$NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { CounterConfig config = new CounterConfig(); modifyTestElement(config); return config; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement c) { if (c instanceof CounterConfig) { CounterConfig config = (CounterConfig) c; config.setStart(startField.getText()); // Bug 22820 if (endField.getText().length() > 0) { config.setEnd(endField.getText()); } config.setIncrement(incrField.getText()); config.setVarName(varNameField.getText()); config.setFormat(formatField.getText()); config.setIsPerUser(perUserField.isSelected()); config.setResetOnThreadGroupIteration(resetCounterOnEachThreadGroupIteration.isEnabled() && resetCounterOnEachThreadGroupIteration.isSelected()); } super.configureTestElement(c); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); startField.setText(""); //$NON-NLS-1$ incrField.setText(""); //$NON-NLS-1$ endField.setText(""); //$NON-NLS-1$ varNameField.setText(""); //$NON-NLS-1$ formatField.setText(""); //$NON-NLS-1$ perUserField.setSelected(false); resetCounterOnEachThreadGroupIteration.setEnabled(false); } @Override public void configure(TestElement element) { super.configure(element); CounterConfig config = (CounterConfig) element; startField.setText(config.getStartAsString()); endField.setText(config.getEndAsString()); incrField.setText(config.getIncrementAsString()); formatField.setText(config.getFormat()); varNameField.setText(config.getVarName()); perUserField.setSelected(config.isPerUser()); if(config.isPerUser()) { resetCounterOnEachThreadGroupIteration.setEnabled(true); resetCounterOnEachThreadGroupIteration.setSelected(config.isResetOnThreadGroupIteration()); } else { resetCounterOnEachThreadGroupIteration.setEnabled(false); } } private void init() { setBorder(makeBorder()); setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); startField = new JLabeledTextField(JMeterUtils.getResString("start"));//$NON-NLS-1$ incrField = new JLabeledTextField(JMeterUtils.getResString("increment"));//$NON-NLS-1$ endField = new JLabeledTextField(JMeterUtils.getResString("max"));//$NON-NLS-1$ varNameField = new JLabeledTextField(JMeterUtils.getResString("var_name"));//$NON-NLS-1$ formatField = new JLabeledTextField(JMeterUtils.getResString("format"));//$NON-NLS-1$ perUserField = new JCheckBox(JMeterUtils.getResString("counter_per_user"));//$NON-NLS-1$ resetCounterOnEachThreadGroupIteration = new JCheckBox(JMeterUtils.getResString("counter_reset_per_tg_iteration"));//$NON-NLS-1$ add(makeTitlePanel()); add(startField); add(incrField); add(endField); add(formatField); add(varNameField); add(perUserField); add(resetCounterOnEachThreadGroupIteration); perUserField.addActionListener(this); } /** * Disable/Enable resetCounterOnEachThreadGroupIteration when perUserField is disabled / enabled */ public void actionPerformed(ActionEvent e) { if(e.getSource() == perUserField) { resetCounterOnEachThreadGroupIteration.setEnabled(perUserField.isSelected()); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BSFPreProcessorResources.properties0000644000175000017500000000306612032647217032656 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BSF PreProcessor scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of BSF language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate BSF language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BSFPreProcessorResources_fr.properties0000644000175000017500000000321012032647217033334 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Pr\u00E9-Processeur BSF filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage BSF appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage BSF, ex. beanshell, javascript, jexl scripting.displayName=Script (variables\: ctx vars props sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BSFPreProcessorResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BSFPreProcessorResources_pt_BR.properti0000644000175000017500000000315612032647217033414 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Pr\u00E9-Processador BSF filename.displayName=Nome do Arquivo filename.shortDescription=Arquivo de script (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao script (\=> String Parameters e String []args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao arquivo ou script script.displayName=Script script.shortDescription=Script na linguagem BSF apropriada scriptLanguage.displayName=Linguagem scriptLanguage.shortDescription=Nome da linguagem BSF, ex\: beanshell, javascript, jexl scripting.displayName=Script (vari\u00E1veis\: ctx vars props sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Linguagem de script (ex\: beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessorResources.properti0000644000175000017500000000270012032647217033543 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell PreProcessor filename.displayName=File Name filename.shortDescription=BeanShell script file (overrides script) filenameGroup.displayName=Script file (overrides script) parameterGroup.displayName=Parameters to be passed to BeanShell (=> String Parameters and String []bsh.args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to BeanShell (file or script) resetGroup.displayName=Reset bsh.Interpreter before each call resetInterpreter.displayName=Reset Interpreter script.displayName=Script script.shortDescription=Beanshell script scripting.displayName=Script (variables: ctx vars props prev sampler log)apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/BeanShellPreProcessor.java0000644000175000017500000000456212032647217030735 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.modifiers; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; public class BeanShellPreProcessor extends BeanShellTestElement implements Cloneable, PreProcessor, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; // can be specified in jmeter.properties private static final String INIT_FILE = "beanshell.preprocessor.init"; //$NON-NLS-1$ @Override protected String getInitFileProperty() { return INIT_FILE; } public void process(){ final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { log.error("BeanShell not found"); return; } JMeterContext jmctx = JMeterContextService.getContext(); Sampler sam = jmctx.getCurrentSampler(); try { // Add variables for access to context and variables bshInterpreter.set("sampler", sam);//$NON-NLS-1$ processFileOrScript(bshInterpreter); } catch (JMeterException e) { log.warn("Problem in BeanShell script "+e); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/JSR223PreProcessor.java0000644000175000017500000000333112032647217027756 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.modifiers; import java.io.IOException; import javax.script.ScriptEngine; import javax.script.ScriptException; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.JSR223TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JSR223PreProcessor extends JSR223TestElement implements Cloneable, PreProcessor, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; public void process() { try { ScriptEngine scriptEngine = getScriptEngine(); processFileOrScript(scriptEngine, null); } catch (ScriptException e) { log.warn("Problem in JSR223 script ", e); } catch (IOException e) { log.warn("Problem in JSR223 script ", e); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/CounterConfig.java0000644000175000017500000001734412032647217027300 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.modifiers; import java.io.Serializable; import java.text.DecimalFormat; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.engine.util.NoThreadClone; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.LongProperty; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Provides a counter per-thread(user) or per-thread group. */ public class CounterConfig extends AbstractTestElement implements Serializable, LoopIterationListener, NoThreadClone { private static final long serialVersionUID = 233L; private static final String START = "CounterConfig.start"; // $NON-NLS-1$ private static final String END = "CounterConfig.end"; // $NON-NLS-1$ private static final String INCREMENT = "CounterConfig.incr"; // $NON-NLS-1$ private static final String FORMAT = "CounterConfig.format"; // $NON-NLS-1$ private static final String PER_USER = "CounterConfig.per_user"; // $NON-NLS-1$ private static final String VAR_NAME = "CounterConfig.name"; // $NON-NLS-1$ private static final String RESET_ON_THREAD_GROUP_ITERATION = "CounterConfig.reset_on_tg_iteration"; // $NON-NLS-1$ private static final boolean RESET_ON_THREAD_GROUP_ITERATION_DEFAULT = false; // This class is not cloned per thread, so this is shared //@GuardedBy("this") private long globalCounter = Long.MIN_VALUE; // Used for per-thread/user numbers private transient ThreadLocal perTheadNumber; // Used for per-thread/user storage of increment in Thread Group Main loop private transient ThreadLocal perTheadLastIterationNumber; private static final Logger log = LoggingManager.getLoggerForClass(); private void init() { perTheadNumber = new ThreadLocal() { @Override protected Long initialValue() { return Long.valueOf(getStart()); } }; perTheadLastIterationNumber = new ThreadLocal() { @Override protected Long initialValue() { return Long.valueOf(1); } }; } public CounterConfig() { super(); init(); } private Object readResolve(){ init(); return this; } /** * @see LoopIterationListener#iterationStart(LoopIterationEvent) */ public void iterationStart(LoopIterationEvent event) { // Cannot use getThreadContext() as not cloned per thread JMeterVariables variables = JMeterContextService.getContext().getVariables(); long start = getStart(); long end = getEnd(); long increment = getIncrement(); if (!isPerUser()) { synchronized (this) { if (globalCounter == Long.MIN_VALUE || globalCounter > end) { globalCounter = start; } variables.put(getVarName(), formatNumber(globalCounter)); globalCounter += increment; } } else { long current = perTheadNumber.get().longValue(); if(isResetOnThreadGroupIteration()) { int iteration = variables.getIteration(); Long lastIterationNumber = perTheadLastIterationNumber.get(); if(iteration != lastIterationNumber.longValue()) { // reset current = getStart(); } perTheadLastIterationNumber.set(Long.valueOf(iteration)); } variables.put(getVarName(), formatNumber(current)); current += increment; if (current > end) { current = start; } perTheadNumber.set(Long.valueOf(current)); } } // Use format to create number; if it fails, use the default private String formatNumber(long value){ String format = getFormat(); if (format != null && format.length() > 0) { try { DecimalFormat myFormatter = new DecimalFormat(format); return myFormatter.format(value); } catch (NumberFormatException ignored) { log.warn("Error formating "+value + " at format:"+format+", using default"); } catch (IllegalArgumentException ignored) { log.warn("Error formating "+value + " at format:"+format+", using default"); } } return Long.toString(value); } public void setStart(long start) { setProperty(new LongProperty(START, start)); } public void setStart(String start) { setProperty(START, start); } public long getStart() { return getPropertyAsLong(START); } public String getStartAsString() { return getPropertyAsString(START); } public void setEnd(long end) { setProperty(new LongProperty(END, end)); } public void setEnd(String end) { setProperty(END, end); } /** * @param value boolean indicating if counter must be reset on Thread Group Iteration */ public void setResetOnThreadGroupIteration(boolean value) { setProperty(RESET_ON_THREAD_GROUP_ITERATION, value, RESET_ON_THREAD_GROUP_ITERATION_DEFAULT); } /** * @return true if counter must be reset on Thread Group Iteration */ public boolean isResetOnThreadGroupIteration() { return getPropertyAsBoolean(RESET_ON_THREAD_GROUP_ITERATION, RESET_ON_THREAD_GROUP_ITERATION_DEFAULT); } /** * * @return counter upper limit (default Long.MAX_VALUE) */ public long getEnd() { long propertyAsLong = getPropertyAsLong(END); if (propertyAsLong == 0 && "".equals(getProperty(END).getStringValue())) { propertyAsLong = Long.MAX_VALUE; } return propertyAsLong; } public String getEndAsString(){ return getPropertyAsString(END); } public void setIncrement(long inc) { setProperty(new LongProperty(INCREMENT, inc)); } public void setIncrement(String incr) { setProperty(INCREMENT, incr); } public long getIncrement() { return getPropertyAsLong(INCREMENT); } public String getIncrementAsString() { return getPropertyAsString(INCREMENT); } public void setIsPerUser(boolean isPer) { setProperty(new BooleanProperty(PER_USER, isPer)); } public boolean isPerUser() { return getPropertyAsBoolean(PER_USER); } public void setVarName(String name) { setProperty(VAR_NAME, name); } public String getVarName() { return getPropertyAsString(VAR_NAME); } public void setFormat(String format) { setProperty(FORMAT, format); } public String getFormat() { return getPropertyAsString(FORMAT); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/JSR223PreProcessorResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/modifiers/JSR223PreProcessorResources_fr.properti0000644000175000017500000000322212032647217033262 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Pr\u00E9-Processeur JSR223 filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage JSR223 appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage JSR223, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/0000755000175000017500000000000012165514773023720 5ustar ebourgebourg././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_pt_BR.prope0000644000175000017500000000254612032647217033544 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayJMeterProperties.displayName=Propriedades do JMeter displayJMeterProperties.shortDescription=Exibir propriedades do JMeter? displayJMeterVariables.displayName=Vari\u00E1veis do JMeter displayJMeterVariables.shortDescription=Exibir vari\u00E1veis do JMeter? displayName=Debug P\u00F3s-Processador displaySamplerProperties.displayName=Propriedades do testador? displaySamplerProperties.shortDescription=Exibir propriedades do testador? displaySystemProperties.displayName=Propriedades do sistema displaySystemProperties.shortDescription=Exibir propriedades do sistema? apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources.properties0000644000175000017500000000246412032647217033524 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayJMeterProperties.displayName=JMeter properties displayJMeterProperties.shortDescription=Display JMeter properties ? displayJMeterVariables.displayName=JMeter variables displayJMeterVariables.shortDescription=Display JMeter variables ? displayName=Debug PostProcessor displaySamplerProperties.displayName=Sampler properties displaySamplerProperties.shortDescription=Display Sampler properties ? displaySystemProperties.displayName=System properties displaySystemProperties.shortDescription=Display System properties ? apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessorResources_pl.properties0000644000175000017500000000323612032647217033601 0ustar ebourgebourg#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Post procesor BSF filename.displayName=Nazwa pliku filename.shortDescription=Plik ze skryptem (zast\u0119puje skrypt) filenameGroup.displayName=Plik ze skryptem (zast\u0119puje skrypt) parameterGroup.displayName=Parametry do przekazania do skryptu (=> String Parameters and String []args) parameters.displayName=Parametry parameters.shortDescription=Parametry do przekazania do pliku lub skryptu script.displayName=Skrypt script.shortDescription=Skrypt w jednym z j\u0119zyk\u00F3w BSF scriptLanguage.displayName=J\u0119zyk scriptLanguage.shortDescription=Nazwa j\u0119zyka BSF, np. beanshell, javascript, jexl scripting.displayName=Skrypt (zmienne: ctx vars props prev sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=J\u0119zyk skrytpu (np. beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessorBeanInfo.java0000644000175000017500000000202712032647217031337 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import org.apache.jmeter.util.BSFBeanInfoSupport; public class BSFPostProcessorBeanInfo extends BSFBeanInfoSupport { public BSFPostProcessorBeanInfo() { super(BSFPostProcessor.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorBeanInfo.java0000644000175000017500000000403012032647217031747 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; public class DebugPostProcessorBeanInfo extends BeanInfoSupport { public DebugPostProcessorBeanInfo() { super(DebugPostProcessor.class); PropertyDescriptor p; p = property("displaySamplerProperties"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p = property("displayJMeterVariables"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p = property("displayJMeterProperties"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); p = property("displaySystemProperties"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/JSR223PostProcessorResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/JSR223PostProcessorResources_fr.propert0000644000175000017500000000322312032647217033343 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Post-Processeur JSR223 filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage JSR223 appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage JSR223, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props prev sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_pl.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_pl.prop0000644000175000017500000000311412032647217033603 0ustar ebourgebourg#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Uwagi co do tlumaczenia: mr0vek@o2.pl displayName=Post-procesor BeanShell filename.displayName=Nazwa pliku filename.shortDescription=Plik ze skryptem BeanShell (zast\u0119puje skrypt) filenameGroup.displayName=Plik ze skryptem (zast\u0119puje skrypt) parameterGroup.displayName=Parametry dla BeanShella (=> String Parameters and String []bsh.args) parameters.displayName=Parametry parameters.shortDescription=Parametry dla BeanShell (pliku lub skryptu) resetGroup.displayName=Resetuj interpreter bsh przed ka\u017Cdym wywo\u0142aniem resetInterpreter.displayName=Resetuj interpreter script.displayName=Skrypt BeanShell script.shortDescription=Skrypt Beanshell scripting.displayName=Skrypt (zmienne: ctx vars props prev data log) apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/XPathExtractor.java0000644000175000017500000003223212032647217027476 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractScopedTestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.TidyException; import org.apache.jmeter.util.XPathUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.w3c.dom.Document; import org.xml.sax.SAXException; //@see org.apache.jmeter.extractor.TestXPathExtractor for unit tests /** * Extracts text from (X)HTML response using XPath query language * Example XPath queries: *
        *
        /html/head/title
        *
        extracts Title from HTML response
        *
        //form[@name='countryForm']//select[@name='country']/option[text()='Czech Republic'])/@value *
        extracts value attribute of option element that match text 'Czech Republic' * inside of select element with name attribute 'country' inside of * form with name attribute 'countryForm'
        *
        //head
        *
        extracts the XML fragment for head node.
        *
        //head/text()
        *
        extracts the text content for head node.
        *
        */ /* This file is inspired by RegexExtractor. * author Henryk Paluch * of Gitus a.s. * * See Bugzilla: 37183 */ public class XPathExtractor extends AbstractScopedTestElement implements PostProcessor, Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final String MATCH_NR = "matchNr"; // $NON-NLS-1$ //+ JMX file attributes private static final String XPATH_QUERY = "XPathExtractor.xpathQuery"; // $NON-NLS-1$ private static final String REFNAME = "XPathExtractor.refname"; // $NON-NLS-1$ private static final String DEFAULT = "XPathExtractor.default"; // $NON-NLS-1$ private static final String TOLERANT = "XPathExtractor.tolerant"; // $NON-NLS-1$ private static final String NAMESPACE = "XPathExtractor.namespace"; // $NON-NLS-1$ private static final String QUIET = "XPathExtractor.quiet"; // $NON-NLS-1$ private static final String REPORT_ERRORS = "XPathExtractor.report_errors"; // $NON-NLS-1$ private static final String SHOW_WARNINGS = "XPathExtractor.show_warnings"; // $NON-NLS-1$ private static final String DOWNLOAD_DTDS = "XPathExtractor.download_dtds"; // $NON-NLS-1$ private static final String WHITESPACE = "XPathExtractor.whitespace"; // $NON-NLS-1$ private static final String VALIDATE = "XPathExtractor.validate"; // $NON-NLS-1$ private static final String FRAGMENT = "XPathExtractor.fragment"; // $NON-NLS-1$ //- JMX file attributes private String concat(String s1,String s2){ return new StringBuilder(s1).append("_").append(s2).toString(); // $NON-NLS-1$ } private String concat(String s1, int i){ return new StringBuilder(s1).append("_").append(i).toString(); // $NON-NLS-1$ } /** * Do the job - extract value from (X)HTML response using XPath Query. * Return value as variable defined by REFNAME. Returns DEFAULT value * if not found. */ public void process() { JMeterContext context = getThreadContext(); final SampleResult previousResult = context.getPreviousResult(); if (previousResult == null){ return; } JMeterVariables vars = context.getVariables(); String refName = getRefName(); vars.put(refName, getDefaultValue()); final String matchNR = concat(refName,MATCH_NR); int prevCount=0; // number of previous matches try { prevCount=Integer.parseInt(vars.get(matchNR)); } catch (NumberFormatException e) { // ignored } vars.put(matchNR, "0"); // In case parse fails // $NON-NLS-1$ vars.remove(concat(refName,"1")); // In case parse fails // $NON-NLS-1$ List matches = new ArrayList(); try{ if (isScopeVariable()){ String inputString=vars.get(getVariableName()); Document d = parseResponse(inputString); getValuesForXPath(d,getXPathQuery(),matches); } else { List samples = getSampleList(previousResult); for (SampleResult res : samples) { Document d = parseResponse(res.getResponseDataAsString()); getValuesForXPath(d,getXPathQuery(),matches); } } final int matchCount = matches.size(); vars.put(matchNR, String.valueOf(matchCount)); if (matchCount > 0){ String value = matches.get(0); if (value != null) { vars.put(refName, value); } for(int i=0; i < matchCount; i++){ value = matches.get(i); if (value != null) { vars.put(concat(refName,i+1),matches.get(i)); } } } vars.remove(concat(refName,matchCount+1)); // Just in case // Clear any other remaining variables for(int i=matchCount+2; i <= prevCount; i++) { vars.remove(concat(refName,i)); } }catch(IOException e){// e.g. DTD not reachable final String errorMessage = "IOException on ("+getXPathQuery()+")"; log.error(errorMessage,e); AssertionResult ass = new AssertionResult(getName()); ass.setError(true); ass.setFailureMessage(new StringBuilder("IOException: ").append(e.getLocalizedMessage()).toString()); previousResult.addAssertionResult(ass); previousResult.setSuccessful(false); } catch (ParserConfigurationException e) {// Should not happen final String errrorMessage = "ParserConfigurationException while processing ("+getXPathQuery()+")"; log.error(errrorMessage,e); throw new JMeterError(errrorMessage,e); } catch (SAXException e) {// Can happen for bad input document log.warn("SAXException while processing ("+getXPathQuery()+") "+e.getLocalizedMessage()); addAssertionFailure(previousResult, e, false); // Should this also fail the sample? } catch (TransformerException e) {// Can happen for incorrect XPath expression log.warn("TransformerException while processing ("+getXPathQuery()+") "+e.getLocalizedMessage()); addAssertionFailure(previousResult, e, false); } catch (TidyException e) { // Will already have been logged by XPathUtil addAssertionFailure(previousResult, e, true); // fail the sample } } private void addAssertionFailure(final SampleResult previousResult, final Throwable thrown, final boolean setFailed) { AssertionResult ass = new AssertionResult(thrown.getClass().getSimpleName()); // $NON-NLS-1$ ass.setFailure(true); ass.setFailureMessage(thrown.getLocalizedMessage()+"\nSee log file for further details."); previousResult.addAssertionResult(ass); if (setFailed){ previousResult.setSuccessful(false); } } /*============= object properties ================*/ public void setXPathQuery(String val){ setProperty(XPATH_QUERY,val); } public String getXPathQuery(){ return getPropertyAsString(XPATH_QUERY); } public void setRefName(String refName) { setProperty(REFNAME, refName); } public String getRefName() { return getPropertyAsString(REFNAME); } public void setDefaultValue(String val) { setProperty(DEFAULT, val); } public String getDefaultValue() { return getPropertyAsString(DEFAULT); } public void setTolerant(boolean val) { setProperty(new BooleanProperty(TOLERANT, val)); } public boolean isTolerant() { return getPropertyAsBoolean(TOLERANT); } public void setNameSpace(boolean val) { setProperty(new BooleanProperty(NAMESPACE, val)); } public boolean useNameSpace() { return getPropertyAsBoolean(NAMESPACE); } public void setReportErrors(boolean val) { setProperty(REPORT_ERRORS, val, false); } public boolean reportErrors() { return getPropertyAsBoolean(REPORT_ERRORS, false); } public void setShowWarnings(boolean val) { setProperty(SHOW_WARNINGS, val, false); } public boolean showWarnings() { return getPropertyAsBoolean(SHOW_WARNINGS, false); } public void setQuiet(boolean val) { setProperty(QUIET, val, true); } public boolean isQuiet() { return getPropertyAsBoolean(QUIET, true); } /** * Should we return fragment as text, rather than text of fragment? * @return true if we should return fragment rather than text */ public boolean getFragment() { return getPropertyAsBoolean(FRAGMENT, false); } /** * Should we return fragment as text, rather than text of fragment? * @param selected true to return fragment. */ public void setFragment(boolean selected) { setProperty(FRAGMENT, selected, false); } /*================= internal business =================*/ /** * Converts (X)HTML response to DOM object Tree. * This version cares of charset of response. * @param unicodeData * @return * */ private Document parseResponse(String unicodeData) throws UnsupportedEncodingException, IOException, ParserConfigurationException,SAXException,TidyException { //TODO: validate contentType for reasonable types? // NOTE: responseData encoding is server specific // Therefore we do byte -> unicode -> byte conversion // to ensure UTF-8 encoding as required by XPathUtil // convert unicode String -> UTF-8 bytes byte[] utf8data = unicodeData.getBytes("UTF-8"); // $NON-NLS-1$ ByteArrayInputStream in = new ByteArrayInputStream(utf8data); boolean isXML = JOrphanUtils.isXML(utf8data); // this method assumes UTF-8 input data return XPathUtil.makeDocument(in,false,false,useNameSpace(),isTolerant(),isQuiet(),showWarnings(),reportErrors() ,isXML, isDownloadDTDs()); } /** * Extract value from Document d by XPath query. * @param d the document * @param query the query to execute * @param matchStrings list of matched strings (may include nulls) * * @throws TransformerException */ private void getValuesForXPath(Document d,String query, List matchStrings) throws TransformerException { XPathUtil.putValuesForXPathInList(d, query, matchStrings, getFragment()); } public void setWhitespace(boolean selected) { setProperty(WHITESPACE, selected, false); } public boolean isWhitespace() { return getPropertyAsBoolean(WHITESPACE, false); } public void setValidating(boolean selected) { setProperty(VALIDATE, selected); } public boolean isValidating() { return getPropertyAsBoolean(VALIDATE, false); } public void setDownloadDTDs(boolean selected) { setProperty(DOWNLOAD_DTDS, selected, false); } public boolean isDownloadDTDs() { return getPropertyAsBoolean(DOWNLOAD_DTDS, false); } /** * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); result.add(getRefName()); result.add(getDefaultValue()); result.add(getXPathQuery()); return result; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_pt_BR.p0000644000175000017500000000300512032647217033454 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=P\u00F3s-Processador BeanShell filename.displayName=Nome do Arquivo filename.shortDescription=Arquivo de script do BeanShell (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao BeanShell (\=> String Parameters e String []bsh.args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao BeanShell (arquivo ou script) resetGroup.displayName=Reiniciar bsh.Interpreter antes de cada chamada resetInterpreter.displayName=Reiniciar Interpretador script.displayName=\ script.shortDescription=Script BeanShell scripting.displayName=Script (vari\u00E1veis\: ctx vars props prev data log) apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessorResources_fr.properties0000644000175000017500000000313412032647217033572 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Post-Processeur BSF filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage BSF appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage BSF, ex. beanshell, javascript, jexl scripting.displayName=Script (variables\: ctx vars props prev sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessorResources.properties0000644000175000017500000000307412032647217033106 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BSF PostProcessor scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of BSF language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props prev sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate BSF language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessor.java0000644000175000017500000000477112032647217031170 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; public class BeanShellPostProcessor extends BeanShellTestElement implements Cloneable, PostProcessor, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; // can be specified in jmeter.properties private static final String INIT_FILE = "beanshell.postprocessor.init"; //$NON-NLS-1$ @Override protected String getInitFileProperty() { return INIT_FILE; } public void process() { JMeterContext jmctx = JMeterContextService.getContext(); SampleResult prev = jmctx.getPreviousResult(); if (prev == null) { return; // TODO - should we skip processing here? } final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { log.error("BeanShell not found"); return; } try { // Add variables for access to context and variables bshInterpreter.set("data", prev.getResponseData());//$NON-NLS-1$ processFileOrScript(bshInterpreter); } catch (JMeterException e) { log.warn("Problem in BeanShell script "+e); } } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_de.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_de.prop0000644000175000017500000000254412032647217033566 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. filename.displayName=Dateiname filename.shortDescription=BeanShell Script Datei (Vorrang vor Script) filenameGroup.displayName=Script Datei (Vorrang vor Script) parameterGroup.displayName=Parameter die der BeanShell \u00FCbergeben werden sollen ("String parameter, String []bsh.args") parameters.displayName=Parameter parameters.shortDescription=Parameter die der BeanShell \u00FCbergeben werden sollen (Datei oder Script) script.displayName=BeanShell Script script.shortDescription=BeanShell Script scripting.displayName=Script (Variablen\: ctx vars props prev data log) apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessor.java0000644000175000017500000001261312032647217030353 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Map; import java.util.HashMap; import java.util.Set; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.util.JMeterUtils; /** * Debugging Post-Processor: creates a subSample containing the variables defined in the previous sampler. */ public class DebugPostProcessor extends AbstractTestElement implements PostProcessor, TestBean { private static final long serialVersionUID = 260L; private boolean displaySamplerProperties; private boolean displayJMeterVariables; private boolean displayJMeterProperties; private boolean displaySystemProperties; public void process(){ StringBuilder sb = new StringBuilder(100); StringBuilder rd = new StringBuilder(20); // for request Data SampleResult sr = new SampleResult(); sr.setSampleLabel(getName()); sr.sampleStart(); JMeterContext threadContext = getThreadContext(); if (isDisplaySamplerProperties()){ rd.append("SamplerProperties\n"); sb.append("SamplerProperties:\n"); formatPropertyIterator(sb, threadContext.getCurrentSampler().propertyIterator()); sb.append("\n"); } if (isDisplayJMeterVariables()){ rd.append("JMeterVariables\n"); sb.append("JMeterVariables:\n"); formatSet(sb, threadContext.getVariables().entrySet()); sb.append("\n"); } if (isDisplayJMeterProperties()){ rd.append("JMeterProperties\n"); sb.append("JMeterProperties:\n"); formatSet(sb, JMeterUtils.getJMeterProperties().entrySet()); sb.append("\n"); } if (isDisplaySystemProperties()){ rd.append("SystemProperties\n"); sb.append("SystemProperties:\n"); formatSet(sb, System.getProperties().entrySet()); sb.append("\n"); } sr.setResponseData(sb.toString(), null); sr.setDataType(SampleResult.TEXT); sr.setSamplerData(rd.toString()); sr.setResponseOK(); sr.sampleEnd(); threadContext.getPreviousResult().addSubResult(sr); } private void formatPropertyIterator(StringBuilder sb, PropertyIterator iter) { Map map = new HashMap(); while (iter.hasNext()) { JMeterProperty item = iter.next(); map.put(item.getName(), item.getStringValue()); } formatSet(sb, map.entrySet()); } private void formatSet(StringBuilder sb, @SuppressWarnings("rawtypes") Set s) { @SuppressWarnings("unchecked") ArrayList> al = new ArrayList>(s); Collections.sort(al, new Comparator>(){ public int compare(Map.Entry o1, Map.Entry o2) { String m1,m2; m1=(String)o1.getKey(); m2=(String)o2.getKey(); return m1.compareTo(m2); } }); for(Map.Entry me : al){ sb.append(me.getKey()); sb.append("="); sb.append(me.getValue()); sb.append("\n"); } } public boolean isDisplayJMeterVariables() { return displayJMeterVariables; } public void setDisplayJMeterVariables(boolean displayJMeterVariables) { this.displayJMeterVariables = displayJMeterVariables; } public boolean isDisplayJMeterProperties() { return displayJMeterProperties; } public void setDisplayJMeterProperties(boolean displayJMeterPropterties) { this.displayJMeterProperties = displayJMeterPropterties; } public boolean isDisplaySamplerProperties() { return displaySamplerProperties; } public void setDisplaySamplerProperties(boolean displaySamplerProperties) { this.displaySamplerProperties = displaySamplerProperties; } public boolean isDisplaySystemProperties() { return displaySystemProperties; } public void setDisplaySystemProperties(boolean displaySystemProperties) { this.displaySystemProperties = displaySystemProperties; } } apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/gui/0000755000175000017500000000000012165514773024504 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/gui/RegexExtractorGui.java0000644000175000017500000002067712032647217030767 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor.gui; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JRadioButton; import org.apache.jmeter.extractor.RegexExtractor; import org.apache.jmeter.processor.gui.AbstractPostProcessorGui; import org.apache.jmeter.testelement.AbstractScopedTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; /** * Regular Expression Extractor Post-Processor GUI */ public class RegexExtractorGui extends AbstractPostProcessorGui { private static final long serialVersionUID = 240L; private JLabeledTextField regexField; private JLabeledTextField templateField; private JLabeledTextField defaultField; private JLabeledTextField matchNumberField; private JLabeledTextField refNameField; private JRadioButton useBody; private JRadioButton useUnescapedBody; private JRadioButton useHeaders; private JRadioButton useURL; private JRadioButton useCode; private JRadioButton useMessage; private ButtonGroup group; public RegexExtractorGui() { super(); init(); } public String getLabelResource() { return "regex_extractor_title"; //$NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); if (el instanceof RegexExtractor){ RegexExtractor re = (RegexExtractor) el; showScopeSettings(re, true); useHeaders.setSelected(re.useHeaders()); useBody.setSelected(re.useBody()); useUnescapedBody.setSelected(re.useUnescapedBody()); useURL.setSelected(re.useUrl()); useCode.setSelected(re.useCode()); useMessage.setSelected(re.useMessage()); regexField.setText(re.getRegex()); templateField.setText(re.getTemplate()); defaultField.setText(re.getDefaultValue()); matchNumberField.setText(re.getMatchNumberAsString()); refNameField.setText(re.getRefName()); } } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { AbstractScopedTestElement extractor = new RegexExtractor(); modifyTestElement(extractor); return extractor; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement extractor) { super.configureTestElement(extractor); if (extractor instanceof RegexExtractor) { RegexExtractor regex = (RegexExtractor) extractor; saveScopeSettings(regex); regex.setUseField(group.getSelection().getActionCommand()); regex.setRefName(refNameField.getText()); regex.setRegex(regexField.getText()); regex.setTemplate(templateField.getText()); regex.setDefaultValue(defaultField.getText()); regex.setMatchNumber(matchNumberField.getText()); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); useBody.setSelected(true); regexField.setText(""); //$NON-NLS-1$ templateField.setText(""); //$NON-NLS-1$ defaultField.setText(""); //$NON-NLS-1$ refNameField.setText(""); //$NON-NLS-1$ matchNumberField.setText(""); //$NON-NLS-1$ } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createScopePanel(true)); box.add(makeSourcePanel()); add(box, BorderLayout.NORTH); add(makeParameterPanel(), BorderLayout.CENTER); } private JPanel makeSourcePanel() { JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("regex_source"))); //$NON-NLS-1$ useBody = new JRadioButton(JMeterUtils.getResString("regex_src_body")); //$NON-NLS-1$ useUnescapedBody = new JRadioButton(JMeterUtils.getResString("regex_src_body_unescaped")); //$NON-NLS-1$ useHeaders = new JRadioButton(JMeterUtils.getResString("regex_src_hdrs")); //$NON-NLS-1$ useURL = new JRadioButton(JMeterUtils.getResString("regex_src_url")); //$NON-NLS-1$ useCode = new JRadioButton(JMeterUtils.getResString("assertion_code_resp")); //$NON-NLS-1$ useMessage = new JRadioButton(JMeterUtils.getResString("assertion_message_resp")); //$NON-NLS-1$ group = new ButtonGroup(); group.add(useBody); group.add(useUnescapedBody); group.add(useHeaders); group.add(useURL); group.add(useCode); group.add(useMessage); panel.add(useBody); panel.add(useUnescapedBody); panel.add(useHeaders); panel.add(useURL); panel.add(useCode); panel.add(useMessage); useBody.setSelected(true); // So we know which button is selected useBody.setActionCommand(RegexExtractor.USE_BODY); useUnescapedBody.setActionCommand(RegexExtractor.USE_BODY_UNESCAPED); useHeaders.setActionCommand(RegexExtractor.USE_HDRS); useURL.setActionCommand(RegexExtractor.USE_URL); useCode.setActionCommand(RegexExtractor.USE_CODE); useMessage.setActionCommand(RegexExtractor.USE_MESSAGE); return panel; } private JPanel makeParameterPanel() { regexField = new JLabeledTextField(JMeterUtils.getResString("regex_field")); //$NON-NLS-1$ templateField = new JLabeledTextField(JMeterUtils.getResString("template_field")); //$NON-NLS-1$ defaultField = new JLabeledTextField(JMeterUtils.getResString("default_value_field")); //$NON-NLS-1$ refNameField = new JLabeledTextField(JMeterUtils.getResString("ref_name_field")); //$NON-NLS-1$ matchNumberField = new JLabeledTextField(JMeterUtils.getResString("match_num_field")); //$NON-NLS-1$ JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); initConstraints(gbc); addField(panel, refNameField, gbc); resetContraints(gbc); addField(panel, regexField, gbc); resetContraints(gbc); addField(panel, templateField, gbc); resetContraints(gbc); addField(panel, matchNumberField, gbc); resetContraints(gbc); gbc.weighty = 1; addField(panel, defaultField, gbc); return panel; } private void addField(JPanel panel, JLabeledTextField field, GridBagConstraints gbc) { List item = field.getComponentList(); panel.add(item.get(0), gbc.clone()); gbc.gridx++; gbc.weightx = 1; gbc.fill=GridBagConstraints.HORIZONTAL; panel.add(item.get(1), gbc.clone()); } // Next line private void resetContraints(GridBagConstraints gbc) { gbc.gridx = 0; gbc.gridy++; gbc.weightx = 0; gbc.fill=GridBagConstraints.NONE; } private void initConstraints(GridBagConstraints gbc) { gbc.anchor = GridBagConstraints.NORTHWEST; gbc.fill = GridBagConstraints.NONE; gbc.gridheight = 1; gbc.gridwidth = 1; gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0; gbc.weighty = 0; } } apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/gui/XPathExtractorGui.java0000644000175000017500000001323012032647217030724 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor.gui; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JPanel; import org.apache.jmeter.assertions.gui.XMLConfPanel; import org.apache.jmeter.extractor.XPathExtractor; import org.apache.jmeter.processor.gui.AbstractPostProcessorGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; /** * GUI for XPathExtractor class. */ /* This file is inspired by RegexExtractor. * See Bugzilla: 37183 */ public class XPathExtractorGui extends AbstractPostProcessorGui { private static final long serialVersionUID = 240L; private final JLabeledTextField defaultField = new JLabeledTextField(JMeterUtils.getResString("default_value_field"));//$NON-NLS-1$ private final JLabeledTextField xpathQueryField = new JLabeledTextField(JMeterUtils.getResString("xpath_extractor_query"));//$NON-NLS-1$ private final JLabeledTextField refNameField = new JLabeledTextField(JMeterUtils.getResString("ref_name_field"));//$NON-NLS-1$ // Should we return fragment as text, rather than text of fragment? private final JCheckBox getFragment = new JCheckBox(JMeterUtils.getResString("xpath_extractor_fragment"));//$NON-NLS-1$ private final XMLConfPanel xml = new XMLConfPanel(); public String getLabelResource() { return "xpath_extractor_title"; //$NON-NLS-1$ } public XPathExtractorGui(){ super(); init(); } @Override public void configure(TestElement el) { super.configure(el); XPathExtractor xpe = (XPathExtractor) el; showScopeSettings(xpe,true); xpathQueryField.setText(xpe.getXPathQuery()); defaultField.setText(xpe.getDefaultValue()); refNameField.setText(xpe.getRefName()); getFragment.setSelected(xpe.getFragment()); xml.configure(xpe); } public TestElement createTestElement() { XPathExtractor extractor = new XPathExtractor(); modifyTestElement(extractor); return extractor; } public void modifyTestElement(TestElement extractor) { super.configureTestElement(extractor); if ( extractor instanceof XPathExtractor){ XPathExtractor xpath = (XPathExtractor)extractor; saveScopeSettings(xpath); xpath.setDefaultValue(defaultField.getText()); xpath.setRefName(refNameField.getText()); xpath.setXPathQuery(xpathQueryField.getText()); xpath.setFragment(getFragment.isSelected()); xml.modifyTestElement(xpath); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); xpathQueryField.setText(""); // $NON-NLS-1$ defaultField.setText(""); // $NON-NLS-1$ refNameField.setText(""); // $NON-NLS-1$ xml.setDefaultValues(); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createScopePanel(true)); xml.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("xpath_assertion_option"))); //$NON-NLS-1$ box.add(xml); box.add(getFragment); box.add(makeParameterPanel()); add(box, BorderLayout.NORTH); } private JPanel makeParameterPanel() { JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); initConstraints(gbc); addField(panel, refNameField, gbc); resetContraints(gbc); addField(panel, xpathQueryField, gbc); resetContraints(gbc); gbc.weighty = 1; addField(panel, defaultField, gbc); return panel; } private void addField(JPanel panel, JLabeledTextField field, GridBagConstraints gbc) { List item = field.getComponentList(); panel.add(item.get(0), gbc.clone()); gbc.gridx++; gbc.weightx = 1; gbc.fill=GridBagConstraints.HORIZONTAL; panel.add(item.get(1), gbc.clone()); } private void resetContraints(GridBagConstraints gbc) { gbc.gridx = 0; gbc.gridy++; gbc.weightx = 0; gbc.fill=GridBagConstraints.NONE; } private void initConstraints(GridBagConstraints gbc) { gbc.anchor = GridBagConstraints.NORTHWEST; gbc.fill = GridBagConstraints.NONE; gbc.gridheight = 1; gbc.gridwidth = 1; gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0; gbc.weighty = 0; } }././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_tr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_tr.properti0000644000175000017500000000272312032647217033677 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayJMeterProperties.displayName=JMeter ayarlar\u0131 displayJMeterProperties.shortDescription=JMeter ayarlar\u0131n\u0131 g\u00F6ster ? displayJMeterVariables.displayName=JMeter de\u011Fi\u015Fkenleri displayJMeterVariables.shortDescription=JMeter de\u011Fi\u015Fkenlerini g\u00F6ster ? displayName=Ay\u0131klama Son \u0130\u015Flemcisi displaySamplerProperties.displayName=\u00D6rnekleyicisi ayarlar\u0131 displaySamplerProperties.shortDescription=\u00D6rnekleyicisi ayarlar\u0131n\u0131 g\u00F6ster ? displaySystemProperties.displayName=Sistem ayarlar\u0131 displaySystemProperties.shortDescription=Sistem ayarlar\u0131n\u0131 g\u00F6ster ? apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/JSR223PostProcessorResources.properties0000644000175000017500000000310512032647217033354 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JSR223 PostProcessor scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of JSR223 language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props prev sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate JSR223 language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/JSR223PostProcessorBeanInfo.java0000644000175000017500000000204612032647217031613 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import org.apache.jmeter.util.JSR223BeanInfoSupport; public class JSR223PostProcessorBeanInfo extends JSR223BeanInfoSupport { public JSR223PostProcessorBeanInfo() { super(JSR223PostProcessor.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessor.java0000644000175000017500000000325212032647217027736 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BSFTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class BSFPostProcessor extends BSFTestElement implements Cloneable, PostProcessor, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; public void process(){ BSFManager mgr =null; try { mgr = getManager(); processFileOrScript(mgr); } catch (BSFException e) { log.warn("Problem in BSF script "+e); } finally { if (mgr != null) { mgr.terminate(); } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorBeanInfo.java0000644000175000017500000000206512032647217032564 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import org.apache.jmeter.util.BeanShellBeanInfoSupport; public class BeanShellPostProcessorBeanInfo extends BeanShellBeanInfoSupport { public BeanShellPostProcessorBeanInfo() { super(BeanShellPostProcessor.class); } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_tr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_tr.prop0000644000175000017500000000271612032647217033624 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=BeanShell Son \u0130\u015Flemcisi filename.displayName=Dosya Ad\u0131 filename.shortDescription=BeanShell beti\u011Fi dosyas\u0131 (bu beti\u011Fin \u00FCzerine yazar) filenameGroup.displayName=Betik dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) parameterGroup.displayName=BeanShell'e ge\u00E7ilecek parametreler (\=> Dizgi(String) Parametreler ve String []bsh.args) parameters.displayName=Parametreler parameters.shortDescription=BeanShell'e ge\u00E7ilecek parametreler (dosya ya da betik) script.shortDescription=BeanShell beti\u011Fi scripting.displayName=Betik (de\u011Fi\u015Fkenler\: ctx vars props prev data log) ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources.propert0000644000175000017500000000267612032647217033637 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell PostProcessor filename.displayName=File Name filename.shortDescription=BeanShell script file (overrides script) filenameGroup.displayName=Script file (overrides script) parameterGroup.displayName=Parameters to be passed to BeanShell (=> String Parameters and String []bsh.args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to BeanShell (file or script) resetGroup.displayName=Reset bsh.Interpreter before each call resetInterpreter.displayName=Reset Interpreter script.displayName=Script script.shortDescription=Beanshell script scripting.displayName=Script (variables: ctx vars props prev data log)././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessorResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BSFPostProcessorResources_pt_BR.propert0000644000175000017500000000320712032647217033471 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=P\u00F3s-Processador BeanShell filename.displayName=Nome do Arquivo filename.shortDescription=Arquivo de script (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao BeanShell (\=> String Parameters e String []bsh.args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao arquivo ou script BeanShell script.displayName=Script script.shortDescription=Script na linguagem BSF apropriada scriptLanguage.displayName=Linguagem scriptLanguage.shortDescription=Nome da linguagem BSF, ex\: beanshell, javascript, jexl scripting.displayName=Script (vari\u00E1veis\: ctx vars props prev data log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Linguagem do script (ex\: beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/JSR223PostProcessor.java0000644000175000017500000000333412032647217030212 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.extractor; import java.io.IOException; import javax.script.ScriptEngine; import javax.script.ScriptException; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.JSR223TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JSR223PostProcessor extends JSR223TestElement implements Cloneable, PostProcessor, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; public void process() { try { ScriptEngine scriptEngine = getScriptEngine(); processFileOrScript(scriptEngine, null); } catch (ScriptException e) { log.warn("Problem in JSR223 script ", e); } catch (IOException e) { log.warn("Problem in JSR223 script ", e); } } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/BeanShellPostProcessorResources_fr.prop0000644000175000017500000000307612032647217033606 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Post-Processeur BeanShell filename.displayName=Nom de fichier filename.shortDescription=Fichier script BeanShell (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au BeanShell (\=> String Parameters and String []bsh.args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au BeanShell (fichier ou script) resetGroup.displayName=R\u00E9initialiser l'interpr\u00E9teur BeanShell avant chaque appel resetInterpreter.displayName=R\u00E9initialiser l'interpr\u00E9teur script.displayName=Script script.shortDescription=Script BeanShell scripting.displayName=Script (variables\: ctx vars props prev data log)././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_de.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_de.properti0000644000175000017500000000262012032647217033636 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayJMeterProperties.displayName=JMeter Eigenschaften displayJMeterProperties.shortDescription=Sollen die JMeter Eigenschaften angezeigt werden? displayJMeterVariables.displayName=JMeter Variablen displayJMeterVariables.shortDescription=Sollen die JMeter Variablen angezeigt werden displayName=Debug Post-Prozessor displaySamplerProperties.displayName=Sampler Eigenschaften displaySamplerProperties.shortDescription=Sollen die Sampler Eigenschaften angezeigt werden displaySystemProperties.displayName=System Eigenschaften displaySystemProperties.shortDescription=Sollen die System Eigenschaften angezeigt werden ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/extractor/DebugPostProcessorResources_fr.properti0000644000175000017500000000270712032647217033663 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayJMeterProperties.displayName=Propri\u00E9t\u00E9s JMeter displayJMeterProperties.shortDescription=Afficher les propri\u00E9t\u00E9s JMeter ? displayJMeterVariables.displayName=Variables JMeter displayJMeterVariables.shortDescription=Afficher les variables JMeter ? displayName=Post-Processeur D\u00E9bogage displaySamplerProperties.displayName=Propri\u00E9t\u00E9s Echantillon displaySamplerProperties.shortDescription=Afficher les propri\u00E9t\u00E9s Echantillon ? displaySystemProperties.displayName=Propri\u00E9t\u00E9s Syst\u00E8me displaySystemProperties.shortDescription=Afficher les propri\u00E9t\u00E9s syst\u00E8mes ? apache-jmeter-2.8/src/components/org/apache/jmeter/extractor/RegexExtractor.java0000644000175000017500000004200012032647217027516 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.extractor; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.AbstractScopedTestElement; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcher; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; // @see org.apache.jmeter.extractor.TestRegexExtractor for unit tests public class RegexExtractor extends AbstractScopedTestElement implements PostProcessor, Serializable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); // What to match against. N.B. do not change the string value or test plans will break! private static final String MATCH_AGAINST = "RegexExtractor.useHeaders"; // $NON-NLS-1$ /* * Permissible values: * true - match against headers * false or absent - match against body (this was the original default) * URL - match against URL * These are passed to the setUseField() method * * Do not change these values! */ public static final String USE_HDRS = "true"; // $NON-NLS-1$ public static final String USE_BODY = "false"; // $NON-NLS-1$ public static final String USE_BODY_UNESCAPED = "unescaped"; // $NON-NLS-1$ public static final String USE_URL = "URL"; // $NON-NLS-1$ public static final String USE_CODE = "code"; // $NON-NLS-1$ public static final String USE_MESSAGE = "message"; // $NON-NLS-1$ private static final String REGEX = "RegexExtractor.regex"; // $NON-NLS-1$ private static final String REFNAME = "RegexExtractor.refname"; // $NON-NLS-1$ private static final String MATCH_NUMBER = "RegexExtractor.match_number"; // $NON-NLS-1$ private static final String DEFAULT = "RegexExtractor.default"; // $NON-NLS-1$ private static final String TEMPLATE = "RegexExtractor.template"; // $NON-NLS-1$ private static final String REF_MATCH_NR = "_matchNr"; // $NON-NLS-1$ private static final String UNDERSCORE = "_"; // $NON-NLS-1$ private transient List template; /** * Parses the response data using regular expressions and saving the results * into variables for use later in the test. * * @see org.apache.jmeter.processor.PostProcessor#process() */ public void process() { initTemplate(); JMeterContext context = getThreadContext(); SampleResult previousResult = context.getPreviousResult(); if (previousResult == null) { return; } log.debug("RegexExtractor processing result"); // Fetch some variables JMeterVariables vars = context.getVariables(); String refName = getRefName(); int matchNumber = getMatchNumber(); final String defaultValue = getDefaultValue(); if (defaultValue.length() > 0){// Only replace default if it is provided vars.put(refName, defaultValue); } String regex = getRegex(); try { List matches = processMatches(regex, previousResult, matchNumber, vars); int prevCount = 0; String prevString = vars.get(refName + REF_MATCH_NR); if (prevString != null) { vars.remove(refName + REF_MATCH_NR);// ensure old value is not left defined try { prevCount = Integer.parseInt(prevString); } catch (NumberFormatException e1) { log.warn("Could not parse "+prevString+" "+e1); } } int matchCount=0;// Number of refName_n variable sets to keep try { MatchResult match; if (matchNumber >= 0) {// Original match behaviour match = getCorrectMatch(matches, matchNumber); if (match != null) { vars.put(refName, generateResult(match)); saveGroups(vars, refName, match); } else { // refname has already been set to the default (if present) removeGroups(vars, refName); } } else // < 0 means we save all the matches { removeGroups(vars, refName); // remove any single matches matchCount = matches.size(); vars.put(refName + REF_MATCH_NR, Integer.toString(matchCount));// Save the count for (int i = 1; i <= matchCount; i++) { match = getCorrectMatch(matches, i); if (match != null) { final String refName_n = new StringBuilder(refName).append(UNDERSCORE).append(i).toString(); vars.put(refName_n, generateResult(match)); saveGroups(vars, refName_n, match); } } } // Remove any left-over variables for (int i = matchCount + 1; i <= prevCount; i++) { final String refName_n = new StringBuilder(refName).append(UNDERSCORE).append(i).toString(); vars.remove(refName_n); removeGroups(vars, refName_n); } } catch (RuntimeException e) { log.warn("Error while generating result"); } } catch (MalformedCachePatternException e) { log.warn("Error in pattern: " + regex); } } private String getInputString(SampleResult result) { String inputString = useUrl() ? result.getUrlAsString() // Bug 39707 : useHeaders() ? result.getResponseHeaders() : useCode() ? result.getResponseCode() // Bug 43451 : useMessage() ? result.getResponseMessage() // Bug 43451 : useUnescapedBody() ? StringEscapeUtils.unescapeHtml4(result.getResponseDataAsString()) : result.getResponseDataAsString() // Bug 36898 ; if (log.isDebugEnabled()) { log.debug("Input = " + inputString); } return inputString; } private List processMatches(String regex, SampleResult result, int matchNumber, JMeterVariables vars) { if (log.isDebugEnabled()) { log.debug("Regex = " + regex); } Perl5Matcher matcher = JMeterUtils.getMatcher(); Pattern pattern = JMeterUtils.getPatternCache().getPattern(regex, Perl5Compiler.READ_ONLY_MASK); List matches = new ArrayList(); int found = 0; if (isScopeVariable()){ String inputString=vars.get(getVariableName()); matchStrings(matchNumber, matcher, pattern, matches, found, inputString); } else { List sampleList = getSampleList(result); for (SampleResult sr : sampleList) { String inputString = getInputString(sr); found = matchStrings(matchNumber, matcher, pattern, matches, found, inputString); if (matchNumber > 0 && found == matchNumber){// no need to process further break; } } } return matches; } private int matchStrings(int matchNumber, Perl5Matcher matcher, Pattern pattern, List matches, int found, String inputString) { PatternMatcherInput input = new PatternMatcherInput(inputString); while (matchNumber <=0 || found != matchNumber) { if (matcher.contains(input, pattern)) { log.debug("RegexExtractor: Match found!"); matches.add(matcher.getMatch()); found++; } else { break; } } return found; } /** * Creates the variables:
        * basename_gn, where n=0...# of groups
        * basename_g = number of groups (apart from g0) */ private void saveGroups(JMeterVariables vars, String basename, MatchResult match) { StringBuilder buf = new StringBuilder(); buf.append(basename); buf.append("_g"); // $NON-NLS-1$ int pfxlen=buf.length(); String prevString=vars.get(buf.toString()); int previous=0; if (prevString!=null){ try { previous=Integer.parseInt(prevString); } catch (NumberFormatException e) { log.warn("Could not parse "+prevString+" "+e); } } //Note: match.groups() includes group 0 final int groups = match.groups(); for (int x = 0; x < groups; x++) { buf.append(x); vars.put(buf.toString(), match.group(x)); buf.setLength(pfxlen); } vars.put(buf.toString(), Integer.toString(groups-1)); for (int i = groups; i <= previous; i++){ buf.append(i); vars.remove(buf.toString());// remove the remaining _gn vars buf.setLength(pfxlen); } } /** * Removes the variables:
        * basename_gn, where n=0...# of groups
        * basename_g = number of groups (apart from g0) */ private void removeGroups(JMeterVariables vars, String basename) { StringBuilder buf = new StringBuilder(); buf.append(basename); buf.append("_g"); // $NON-NLS-1$ int pfxlen=buf.length(); // How many groups are there? int groups; try { groups=Integer.parseInt(vars.get(buf.toString())); } catch (NumberFormatException e) { groups=0; } vars.remove(buf.toString());// Remove the group count for (int i = 0; i <= groups; i++) { buf.append(i); vars.remove(buf.toString());// remove the g0,g1...gn vars buf.setLength(pfxlen); } } private String generateResult(MatchResult match) { StringBuilder result = new StringBuilder(); for (Object obj : template) { if (log.isDebugEnabled()) { log.debug("RegexExtractor: Template piece " + obj + " (" + obj.getClass().getSimpleName() + ")"); } if (obj instanceof Integer) { result.append(match.group(((Integer) obj).intValue())); } else { result.append(obj); } } if (log.isDebugEnabled()) { log.debug("Regex Extractor result = " + result.toString()); } return result.toString(); } private void initTemplate() { if (template != null) { return; } // Contains Strings and Integers List combined = new ArrayList(); String rawTemplate = getTemplate(); PatternMatcher matcher = JMeterUtils.getMatcher(); Pattern templatePattern = JMeterUtils.getPatternCache().getPattern("\\$(\\d+)\\$" // $NON-NLS-1$ , Perl5Compiler.READ_ONLY_MASK & Perl5Compiler.SINGLELINE_MASK); if (log.isDebugEnabled()) { log.debug("Pattern = " + templatePattern.getPattern()); log.debug("template = " + rawTemplate); } int beginOffset = 0; MatchResult currentResult; PatternMatcherInput pinput = new PatternMatcherInput(rawTemplate); while(matcher.contains(pinput, templatePattern)) { currentResult = matcher.getMatch(); final int beginMatch = currentResult.beginOffset(0); if (beginMatch > beginOffset) { // string is not empty combined.add(rawTemplate.substring(beginOffset, beginMatch)); } combined.add(Integer.valueOf(currentResult.group(1)));// add match as Integer beginOffset = currentResult.endOffset(0); } if (beginOffset < rawTemplate.length()) { // trailing string is not empty combined.add(rawTemplate.substring(beginOffset, rawTemplate.length())); } if (log.isDebugEnabled()){ log.debug("Template item count: "+combined.size()); for(Object o : combined){ log.debug(o.getClass().getSimpleName()+" '"+o.toString()+"'"); } } template = combined; } /** * Grab the appropriate result from the list. * * @param matches * list of matches * @param entry * the entry number in the list * @return MatchResult */ private MatchResult getCorrectMatch(List matches, int entry) { int matchSize = matches.size(); if (matchSize <= 0 || entry > matchSize){ return null; } if (entry == 0) // Random match { return matches.get(JMeterUtils.getRandomInt(matchSize)); } return matches.get(entry - 1); } public void setRegex(String regex) { setProperty(REGEX, regex); } public String getRegex() { return getPropertyAsString(REGEX); } public void setRefName(String refName) { setProperty(REFNAME, refName); } public String getRefName() { return getPropertyAsString(REFNAME); } /** * Set which Match to use. This can be any positive number, indicating the * exact match to use, or 0, which is interpreted as meaning random. * * @param matchNumber */ public void setMatchNumber(int matchNumber) { setProperty(new IntegerProperty(MATCH_NUMBER, matchNumber)); } public void setMatchNumber(String matchNumber) { setProperty(MATCH_NUMBER, matchNumber); } public int getMatchNumber() { return getPropertyAsInt(MATCH_NUMBER); } public String getMatchNumberAsString() { return getPropertyAsString(MATCH_NUMBER); } /** * Sets the value of the variable if no matches are found * * @param defaultValue */ public void setDefaultValue(String defaultValue) { setProperty(DEFAULT, defaultValue); } public String getDefaultValue() { return getPropertyAsString(DEFAULT); } public void setTemplate(String template) { setProperty(TEMPLATE, template); } public String getTemplate() { return getPropertyAsString(TEMPLATE); } public boolean useHeaders() { return USE_HDRS.equalsIgnoreCase( getPropertyAsString(MATCH_AGAINST)); } // Allow for property not yet being set (probably only applies to Test cases) public boolean useBody() { String prop = getPropertyAsString(MATCH_AGAINST); return prop.length()==0 || USE_BODY.equalsIgnoreCase(prop);// $NON-NLS-1$ } public boolean useUnescapedBody() { String prop = getPropertyAsString(MATCH_AGAINST); return USE_BODY_UNESCAPED.equalsIgnoreCase(prop);// $NON-NLS-1$ } public boolean useUrl() { String prop = getPropertyAsString(MATCH_AGAINST); return USE_URL.equalsIgnoreCase(prop); } public boolean useCode() { String prop = getPropertyAsString(MATCH_AGAINST); return USE_CODE.equalsIgnoreCase(prop); } public boolean useMessage() { String prop = getPropertyAsString(MATCH_AGAINST); return USE_MESSAGE.equalsIgnoreCase(prop); } public void setUseField(String actionCommand) { setProperty(MATCH_AGAINST,actionCommand); } /** * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); result.add(getRefName()); result.add(getDefaultValue()); result.add(getRegex()); return result; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/0000755000175000017500000000000012165514773024265 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BSFListenerResources_fr.properties0000644000175000017500000000325212032647216033077 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=R\u00E9cepteur BSF filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage BSF appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage BSF, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props sampleResult (aka prev) sampleEvent sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_tr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_tr.propert0000644000175000017500000000274512032647216033645 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=BeanShell Alg\u0131lay\u0131c\u0131 filename.displayName=Dosya Ad\u0131 filename.shortDescription=BeanShell betik dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) filenameGroup.displayName=Betik dosyas\u0131 (buradaki beti\u011Fin \u00FCzerine yazar) parameterGroup.displayName=BeanShell'e ge\u00E7ilecek parametreler (\=> Dizgi (String) Parametreler ve String []bsh.args) parameters.displayName=Parametreler parameters.shortDescription=BeanShell'e ge\u00E7ilecek parametreler (dosya ya da betik) script.shortDescription=Beanshell beti\u011Fi scripting.displayName=Betik (de\u011Fi\u015Fkenler\: ctx vars props sampleEvent sampleResult log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java0000644000175000017500000007654412032647216031730 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ /** * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.SaveGraphics; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jmeter.visualizers.utils.Colors; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class RespTimeGraphVisualizer extends AbstractVisualizer implements ActionListener, Clearable { private static final long serialVersionUID = 280L; private static final Logger log = LoggingManager.getLoggerForClass(); private final Font FONT_SMALL = new Font("SansSerif", Font.PLAIN, 10); /** * Lock used to protect list update */ private final transient Object lock = new Object(); /** * Lock used to protect refresh interval */ private final transient Object lockInterval = new Object(); private static final String Y_AXIS_LABEL = JMeterUtils.getResString("aggregate_graph_response_time");//$NON-NLS-1$ private static final String Y_AXIS_TITLE = JMeterUtils.getResString("aggregate_graph_ms"); //$NON-NLS-1$ private RespTimeGraphChart graphPanel = null; private final JTabbedPane tabbedGraph = new JTabbedPane(SwingConstants.TOP); private boolean saveGraphToFile = false; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGTH = 300; private static final int INTERVAL_DEFAULT = 10000; // in milli-seconds // TODO: properties? private int intervalValue = INTERVAL_DEFAULT; private final JLabeledTextField intervalField = new JLabeledTextField(JMeterUtils.getResString("graph_resp_time_interval_label"), 7); //$NON-NLS-1$ private final JButton intervalButton = new JButton(JMeterUtils.getResString("graph_resp_time_interval_reload")); // $NON-NLS-1$ private final JButton displayButton = new JButton(JMeterUtils.getResString("aggregate_graph_display")); //$NON-NLS-1$ private final JButton saveGraph = new JButton(JMeterUtils.getResString("aggregate_graph_save")); //$NON-NLS-1$ private final JCheckBox samplerSelection = new JCheckBox(JMeterUtils.getResString("graph_resp_time_series_selection"), false); //$NON-NLS-1$ private final JTextField samplerMatchLabel = new JTextField(); private final JButton applyFilterBtn = new JButton(JMeterUtils.getResString("graph_apply_filter")); // $NON-NLS-1$ private final JCheckBox caseChkBox = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_case"), false); // $NON-NLS-1$ private final JCheckBox regexpChkBox = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_regexp"), true); // $NON-NLS-1$ private final JComboBox titleFontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray()); private final JComboBox titleFontSizeList = new JComboBox(StatGraphProperties.fontSize); private final JComboBox titleFontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray()); private final JComboBox fontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray()); private final JComboBox fontSizeList = new JComboBox(StatGraphProperties.fontSize); private final JComboBox fontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray()); private final JComboBox legendPlacementList = new JComboBox(StatGraphProperties.getPlacementNameMap().keySet().toArray()); private final JComboBox pointShapeLine = new JComboBox(StatGraphProperties.getPointShapeMap().keySet().toArray()); private final JComboBox strokeWidthList = new JComboBox(StatGraphProperties.strokeWidth); private final JCheckBox numberShowGrouping = new JCheckBox(JMeterUtils.getResString("aggregate_graph_number_grouping"), true); // Default checked // $NON-NLS-1$ private final JButton syncWithName = new JButton(JMeterUtils.getResString("aggregate_graph_sync_with_name")); //$NON-NLS-1$ private final JLabeledTextField graphTitle = new JLabeledTextField(JMeterUtils.getResString("graph_resp_time_title_label")); //$NON-NLS-1$ private final JLabeledTextField xAxisTimeFormat = new JLabeledTextField(JMeterUtils.getResString("graph_resp_time_xaxis_time_format"), 10); //$NON-NLS-1$ $NON-NLS-2$ private final JLabeledTextField maxValueYAxisLabel = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_yaxis_max_value"), 8); //$NON-NLS-1$ /** * checkbox for use dynamic graph size */ private final JCheckBox dynamicGraphSize = new JCheckBox(JMeterUtils.getResString("aggregate_graph_dynamic_size")); // $NON-NLS-1$ private final JLabeledTextField graphWidth = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_width"), 6); //$NON-NLS-1$ private final JLabeledTextField graphHeight = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_height"), 6); //$NON-NLS-1$ private int minStartTime = Integer.MAX_VALUE; private int maxStartTime = Integer.MIN_VALUE; /** * We want to retain insertion order, so LinkedHashMap is necessary */ private final Map seriesNames = new LinkedHashMap(); /** * We want to retain insertion order, so LinkedHashMap is necessary */ private final Map> pList = new LinkedHashMap>(); private int durationTest = 0; private int colorIdx = 0; private Pattern pattern = null; private transient Matcher matcher = null; private final List listColors = Colors.getColors(); private final List internalList = new ArrayList(); // internal list of all results public RespTimeGraphVisualizer() { init(); } public void add(final SampleResult sampleResult) { final String sampleLabel = sampleResult.getSampleLabel(); // Make a internal list of all results to allow reload data with filter or interval synchronized (lockInterval) { internalList.add(new RespTimeGraphDataBean(sampleResult.getStartTime(), sampleResult.getTime(), sampleLabel)); } // Sampler selection if (samplerSelection.isSelected() && pattern != null) { matcher = pattern.matcher(sampleLabel); } if ((matcher == null) || (matcher.find())) { final long startTimeMS = sampleResult.getStartTime(); final int startTimeInterval = (int) startTimeMS / intervalValue; JMeterUtils.runSafe(new Runnable() { public void run() { synchronized (lock) { // Use for x-axis scale if (startTimeInterval < minStartTime) { minStartTime = startTimeInterval; } else if (startTimeInterval > maxStartTime) { maxStartTime = startTimeInterval; } // Generate x-axis label and associated color if (!seriesNames.containsKey(sampleLabel)) { seriesNames.put(sampleLabel, new RespTimeGraphLineBean(sampleLabel, listColors.get(colorIdx++))); // reset colors index if (colorIdx >= listColors.size()) { colorIdx = 0; } } // List of value by sampler Map subList = pList.get(sampleLabel); if (subList != null) { long respTime = sampleResult.getTime(); Long value = subList.get(Integer.valueOf(startTimeInterval)); if (value!=null) { respTime = (value.longValue() + respTime) / 2; } subList.put(Integer.valueOf(startTimeInterval), Long.valueOf(respTime)); } else { // We want to retain insertion order, so LinkedHashMap is necessary Map newSubList = new LinkedHashMap(); newSubList.put(Integer.valueOf(startTimeInterval), Long.valueOf(sampleResult.getTime())); pList.put(sampleLabel, newSubList); } } } }); } } public void makeGraph() { Dimension size = graphPanel.getSize(); // canvas size int width = (int) size.getWidth(); int height = (int) size.getHeight(); if (!dynamicGraphSize.isSelected()) { String wstr = graphWidth.getText(); String hstr = graphHeight.getText(); if (wstr.length() != 0) { width = Integer.parseInt(wstr); } if (hstr.length() != 0) { height = Integer.parseInt(hstr); } } String yAxisStr = maxValueYAxisLabel.getText(); int maxYAxisScale = yAxisStr.length() == 0 ? 0 : Integer.parseInt(yAxisStr); graphPanel.setData(this.getData()); graphPanel.setTitle(graphTitle.getText()); graphPanel.setMaxYAxisScale(maxYAxisScale); graphPanel.setYAxisLabels(Y_AXIS_LABEL); graphPanel.setYAxisTitle(Y_AXIS_TITLE); graphPanel.setXAxisLabels(getXAxisLabels()); graphPanel.setLegendLabels(getLegendLabels()); graphPanel.setColor(getLinesColors()); graphPanel.setShowGrouping(numberShowGrouping.isSelected()); graphPanel.setLegendPlacement(StatGraphProperties.getPlacementNameMap() .get(legendPlacementList.getSelectedItem()).intValue()); graphPanel.setPointShape(StatGraphProperties.getPointShapeMap().get(pointShapeLine.getSelectedItem())); graphPanel.setStrokeWidth(Float.parseFloat((String) strokeWidthList.getSelectedItem())); graphPanel.setTitleFont(new Font(StatGraphProperties.getFontNameMap().get(titleFontNameList.getSelectedItem()), StatGraphProperties.getFontStyleMap().get(titleFontStyleList.getSelectedItem()).intValue(), Integer.parseInt((String) titleFontSizeList.getSelectedItem()))); graphPanel.setLegendFont(new Font(StatGraphProperties.getFontNameMap().get(fontNameList.getSelectedItem()), StatGraphProperties.getFontStyleMap().get(fontStyleList.getSelectedItem()).intValue(), Integer.parseInt((String) fontSizeList.getSelectedItem()))); graphPanel.setHeight(height); graphPanel.setWidth(width); // Draw the graph graphPanel.repaint(); } /** * Generate the data for the jChart API * @return array of array of data to draw */ public double[][] getData() { int size = pList.size(); int max = durationTest; double[][] data = new double[size][max]; double nanLast = 0; double nanBegin = 0; List nanList = new ArrayList(); int s = 0; for (Map subList : pList.values()) { int idx = 0; while (idx < durationTest) { int keyShift = minStartTime + idx; Long value = subList.get(Integer.valueOf(keyShift)); if (value != null) { nanLast = value.doubleValue(); data[s][idx] = nanLast; // Calculate intermediate values (if needed) int nlsize = nanList.size(); if (nlsize > 0) { double valPrev = nanBegin; for (int cnt = 0; cnt < nlsize; cnt++) { int pos = idx - (nlsize - cnt); if (pos < 0) { pos = 0; } valPrev = (valPrev + ((nanLast - nanBegin) / (nlsize + 2))); data[s][pos] = valPrev; } nanList.clear(); } } else { nanList.add(Double.valueOf(Double.NaN)); nanBegin = nanLast; data[s][idx] = Double.NaN; } // log.debug("data["+s+"]["+idx+"]: " + data[s][idx]); idx++; } s++; } return data; } public String getLabelResource() { return "graph_resp_time_title"; // $NON-NLS-1$ } public void clearData() { synchronized (lock) { internalList.clear(); seriesNames.clear(); pList.clear(); minStartTime = Integer.MAX_VALUE; maxStartTime = Integer.MIN_VALUE; durationTest = 0; colorIdx = 0; } } /** * Initialize the GUI. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new JPanel(); Border margin = new EmptyBorder(10, 10, 5, 10); Border margin2 = new EmptyBorder(10, 10, 5, 10); mainPanel.setBorder(margin); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.add(makeTitlePanel()); JPanel settingsPane = new VerticalPanel(); settingsPane.setBorder(margin2); graphPanel = new RespTimeGraphChart(); graphPanel.setPreferredSize(new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGTH)); settingsPane.add(createGraphActionsPane()); settingsPane.add(createGraphSettingsPane()); settingsPane.add(createGraphTitlePane()); settingsPane.add(createLinePane()); settingsPane.add(createGraphDimensionPane()); JPanel axisPane = new JPanel(new BorderLayout()); axisPane.add(createGraphXAxisPane(), BorderLayout.WEST); axisPane.add(createGraphYAxisPane(), BorderLayout.CENTER); settingsPane.add(axisPane); settingsPane.add(createLegendPane()); tabbedGraph.addTab(JMeterUtils.getResString("aggregate_graph_tab_settings"), settingsPane); //$NON-NLS-1$ tabbedGraph.addTab(JMeterUtils.getResString("aggregate_graph_tab_graph"), graphPanel); //$NON-NLS-1$ // If clic on the Graph tab, make the graph (without apply interval or filter) ChangeListener changeListener = new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { JTabbedPane srcTab = (JTabbedPane) changeEvent.getSource(); int index = srcTab.getSelectedIndex(); if (srcTab.getTitleAt(index).equals(JMeterUtils.getResString("aggregate_graph_tab_graph"))) { //$NON-NLS-1$ actionMakeGraph(); } } }; tabbedGraph.addChangeListener(changeListener); this.add(mainPanel, BorderLayout.NORTH); this.add(tabbedGraph, BorderLayout.CENTER); } public void actionPerformed(ActionEvent event) { boolean forceReloadData = false; final Object eventSource = event.getSource(); if (eventSource == displayButton) { actionMakeGraph(); } else if (eventSource == saveGraph) { saveGraphToFile = true; try { ActionRouter.getInstance().getAction( ActionNames.SAVE_GRAPHICS,SaveGraphics.class.getName()).doAction( new ActionEvent(this,1,ActionNames.SAVE_GRAPHICS)); } catch (Exception e) { log.error(e.getMessage()); } } else if (eventSource == syncWithName) { graphTitle.setText(namePanel.getName()); } else if (eventSource == dynamicGraphSize) { // if use dynamic graph size is checked, we disable the dimension fields if (dynamicGraphSize.isSelected()) { graphWidth.setEnabled(false); graphHeight.setEnabled(false); } else { graphWidth.setEnabled(true); graphHeight.setEnabled(true); } } else if (eventSource == samplerSelection) { if (samplerSelection.isSelected()) { samplerMatchLabel.setEnabled(true); applyFilterBtn.setEnabled(true); caseChkBox.setEnabled(true); regexpChkBox.setEnabled(true); } else { samplerMatchLabel.setEnabled(false); applyFilterBtn.setEnabled(false); caseChkBox.setEnabled(false); regexpChkBox.setEnabled(false); // Force reload data forceReloadData = true; } } // Not 'else if' because forceReloadData if (eventSource == applyFilterBtn || eventSource == intervalButton || forceReloadData) { if (eventSource == intervalButton) { intervalValue = Integer.parseInt(intervalField.getText()); } if (eventSource == applyFilterBtn && samplerSelection.isSelected() && samplerMatchLabel.getText() != null && samplerMatchLabel.getText().length() > 0) { pattern = createPattern(samplerMatchLabel.getText()); } else if (forceReloadData) { pattern = null; matcher = null; } if (getFile() != null && getFile().length() > 0) { // Reload data from file clearData(); FilePanel filePanel = (FilePanel) getFilePanel(); filePanel.actionPerformed(event); } else { // Reload data form internal list of results if (internalList.size() >= 2) { synchronized (lockInterval) { List tempList = new ArrayList(); tempList.addAll(internalList); this.clearData(); for (RespTimeGraphDataBean data : tempList) { SampleResult sr = new SampleResult(data.getStartTime(), data.getTime()); sr.setSampleLabel(data.getSamplerLabel()); this.add(sr); } } } } } } private void actionMakeGraph() { String msgErr = null; // Calculate the test duration. Needs to xAxis Labels and getData. durationTest = maxStartTime - minStartTime; if (seriesNames.size() <= 0) { msgErr = JMeterUtils.getResString("aggregate_graph_no_values_to_graph"); // $NON-NLS-1$ } else if (durationTest < 1) { msgErr = JMeterUtils.getResString("graph_resp_time_not_enough_data"); // $NON-NLS-1$ } if (msgErr == null) { makeGraph(); tabbedGraph.setSelectedIndex(1); } else { JOptionPane.showMessageDialog(null, msgErr, msgErr, JOptionPane.WARNING_MESSAGE); } } @Override public JComponent getPrintableComponent() { if (saveGraphToFile == true) { saveGraphToFile = false; graphPanel.setBounds(graphPanel.getLocation().x,graphPanel.getLocation().y, graphPanel.width,graphPanel.height); return graphPanel; } return this; } private JPanel createGraphActionsPane() { JPanel buttonPanel = new JPanel(new BorderLayout()); JPanel displayPane = new JPanel(); displayPane.add(displayButton); displayButton.addActionListener(this); buttonPanel.add(displayPane, BorderLayout.WEST); JPanel savePane = new JPanel(); savePane.add(saveGraph); saveGraph.addActionListener(this); syncWithName.addActionListener(this); buttonPanel.add(savePane, BorderLayout.EAST); return buttonPanel; } public String[] getXAxisLabels() { SimpleDateFormat formatter = new SimpleDateFormat(xAxisTimeFormat.getText()); //$NON-NLS-1$ String[] xAxisLabels = new String[durationTest]; for (int j = 0; j < durationTest; j++) { xAxisLabels[j] = formatter.format(new Date((minStartTime + j) * intervalValue)); } return xAxisLabels; } private String[] getLegendLabels() { String[] legends = new String[seriesNames.size()]; int i = 0; for (Map.Entry entry : seriesNames.entrySet()) { RespTimeGraphLineBean val = entry.getValue(); legends[i] = val.getLabel(); i++; } return legends; } private Color[] getLinesColors() { Color[] linesColors = new Color[seriesNames.size()]; int i = 0; for (Map.Entry entry : seriesNames.entrySet()) { RespTimeGraphLineBean val = entry.getValue(); linesColors[i] = val.getLineColor(); i++; } return linesColors; } private JPanel createGraphSettingsPane() { JPanel settingsPane = new JPanel(new BorderLayout()); settingsPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("graph_resp_time_settings_pane"))); // $NON-NLS-1$ JPanel intervalPane = new JPanel(); intervalPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); intervalField.setText(String.valueOf(INTERVAL_DEFAULT)); intervalPane.add(intervalField); // Button intervalButton.setFont(FONT_SMALL); intervalButton.addActionListener(this); intervalPane.add(intervalButton); settingsPane.add(intervalPane, BorderLayout.NORTH); settingsPane.add(createGraphSelectionSubPane(), BorderLayout.SOUTH); return settingsPane; } private JPanel createGraphSelectionSubPane() { // Search field JPanel searchPanel = new JPanel(); searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS)); searchPanel.setBorder(BorderFactory.createEmptyBorder(3, 0, 3, 0)); searchPanel.add(samplerSelection); samplerMatchLabel.setEnabled(false); applyFilterBtn.setEnabled(false); caseChkBox.setEnabled(false); regexpChkBox.setEnabled(false); samplerSelection.addActionListener(this); searchPanel.add(samplerMatchLabel); searchPanel.add(Box.createRigidArea(new Dimension(5,0))); // Button applyFilterBtn.setFont(FONT_SMALL); applyFilterBtn.addActionListener(this); searchPanel.add(applyFilterBtn); // checkboxes caseChkBox.setFont(FONT_SMALL); searchPanel.add(caseChkBox); regexpChkBox.setFont(FONT_SMALL); searchPanel.add(regexpChkBox); return searchPanel; } private JPanel createGraphTitlePane() { JPanel titleNamePane = new JPanel(new BorderLayout()); syncWithName.setFont(FONT_SMALL); titleNamePane.add(graphTitle, BorderLayout.CENTER); titleNamePane.add(syncWithName, BorderLayout.EAST); JPanel titleStylePane = new JPanel(); titleStylePane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 5)); titleStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_font"), //$NON-NLS-1$ titleFontNameList)); titleFontNameList.setSelectedIndex(0); // default: sans serif titleStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$ titleFontSizeList)); titleFontSizeList.setSelectedItem(StatGraphProperties.fontSize[6]); // default: 16 titleStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$ titleFontStyleList)); titleFontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.bold")); // default: bold JPanel titlePane = new JPanel(new BorderLayout()); titlePane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_title_group"))); // $NON-NLS-1$ titlePane.add(titleNamePane, BorderLayout.NORTH); titlePane.add(titleStylePane, BorderLayout.SOUTH); return titlePane; } private JPanel createLinePane() { JPanel lineStylePane = new JPanel(); lineStylePane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); lineStylePane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("graph_resp_time_settings_line"))); // $NON-NLS-1$ lineStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("graph_resp_time_stroke_width"), //$NON-NLS-1$ strokeWidthList)); strokeWidthList.setSelectedItem(StatGraphProperties.strokeWidth[4]); // default: 3.0f lineStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("graph_resp_time_shape_label"), //$NON-NLS-1$ pointShapeLine)); pointShapeLine.setSelectedIndex(0); // default: circle return lineStylePane; } private JPanel createGraphDimensionPane() { JPanel dimensionPane = new JPanel(); dimensionPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); dimensionPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_dimension"))); // $NON-NLS-1$ dimensionPane.add(dynamicGraphSize); dynamicGraphSize.setSelected(true); // default option graphWidth.setEnabled(false); graphHeight.setEnabled(false); dynamicGraphSize.addActionListener(this); dimensionPane.add(Box.createRigidArea(new Dimension(10,0))); dimensionPane.add(graphWidth); dimensionPane.add(Box.createRigidArea(new Dimension(5,0))); dimensionPane.add(graphHeight); return dimensionPane; } /** * Create pane for X Axis options * @return X Axis pane */ private JPanel createGraphXAxisPane() { JPanel xAxisPane = new JPanel(); xAxisPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); xAxisPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_xaxis_group"))); // $NON-NLS-1$ xAxisTimeFormat.setText("HH:mm:ss"); // $NON-NLS-1$ xAxisPane.add(xAxisTimeFormat); return xAxisPane; } /** * Create pane for Y Axis options * @return Y Axis pane */ private JPanel createGraphYAxisPane() { JPanel yAxisPane = new JPanel(); yAxisPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); yAxisPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_yaxis_group"))); // $NON-NLS-1$ yAxisPane.add(maxValueYAxisLabel); yAxisPane.add(numberShowGrouping); return yAxisPane; } /** * Create pane for legend settings * @return Legend pane */ private JPanel createLegendPane() { JPanel legendPanel = new JPanel(); legendPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); legendPanel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_legend"))); // $NON-NLS-1$ legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_legend_placement"), //$NON-NLS-1$ legendPlacementList)); legendPlacementList.setSelectedItem(JMeterUtils.getResString("aggregate_graph_legend.placement.bottom")); // default: bottom legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_font"), //$NON-NLS-1$ fontNameList)); fontNameList.setSelectedIndex(0); // default: sans serif legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$ fontSizeList)); fontSizeList.setSelectedItem(StatGraphProperties.fontSize[2]); // default: 10 legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$ fontStyleList)); fontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.normal")); // default: normal return legendPanel; } /** * @param textToFind * @return pattern ready to search */ private Pattern createPattern(String textToFind) { String textToFindQ = Pattern.quote(textToFind); if (regexpChkBox.isSelected()) { textToFindQ = textToFind; } Pattern pattern = null; try { if (caseChkBox.isSelected()) { pattern = Pattern.compile(textToFindQ); } else { pattern = Pattern.compile(textToFindQ, Pattern.CASE_INSENSITIVE); } } catch (PatternSyntaxException pse) { return null; } return pattern; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RenderAsHTML.java0000644000175000017500000001227512032647216027317 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import javax.swing.JEditorPane; import javax.swing.text.ComponentView; import javax.swing.text.Document; import javax.swing.text.EditorKit; import javax.swing.text.Element; import javax.swing.text.StyleConstants; import javax.swing.text.View; import javax.swing.text.ViewFactory; import javax.swing.text.html.HTML; import javax.swing.text.html.HTMLEditorKit; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; public class RenderAsHTML extends SamplerResultTab implements ResultRenderer { private static final String TEXT_HTML = "text/html"; // $NON-NLS-1$ // Keep copies of the two editors needed private static final EditorKit customisedEditor = new LocalHTMLEditorKit(); private static final EditorKit defaultHtmlEditor = JEditorPane.createEditorKitForContentType(TEXT_HTML); /** {@inheritDoc} */ public void renderResult(SampleResult sampleResult) { // get the text response and image icon // to determine which is NOT null String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); showRenderedResponse(response, sampleResult); } protected void showRenderedResponse(String response, SampleResult res) { showRenderedResponse(response, res, false); } protected void showRenderedResponse(String response, SampleResult res, boolean embedded) { if (response == null) { results.setText(""); return; } int htmlIndex = response.indexOf(" // $NON-NLS-1$ // Look for a case variation if (htmlIndex < 0) { htmlIndex = response.indexOf(" See * http://issues.apache.org/bugzilla/show_bug.cgi?id=23315 * * Is this due to a bug in Java? */ results.getDocument().putProperty("IgnoreCharsetDirective", Boolean.TRUE); // $NON-NLS-1$ results.setText(html); results.setCaretPosition(0); resultsScrollPane.setViewportView(results); } private static class LocalHTMLEditorKit extends HTMLEditorKit { private static final long serialVersionUID = -3399554318202905392L; private static final ViewFactory defaultFactory = new LocalHTMLFactory(); @Override public ViewFactory getViewFactory() { return defaultFactory; } private static class LocalHTMLFactory extends javax.swing.text.html.HTMLEditorKit.HTMLFactory { /* * Provide dummy implementations to suppress download and display of * related resources: - FRAMEs - IMAGEs TODO create better dummy * displays TODO suppress LINK somehow */ @Override public View create(Element elem) { Object o = elem.getAttributes().getAttribute(StyleConstants.NameAttribute); if (o instanceof HTML.Tag) { HTML.Tag kind = (HTML.Tag) o; if (kind == HTML.Tag.FRAME) { return new ComponentView(elem); } else if (kind == HTML.Tag.IMG) { return new ComponentView(elem); } } return super.create(elem); } } } /** {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("view_results_render_html"); // $NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/AssertionVisualizer.java0000644000175000017500000001015212032647216031144 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; public class AssertionVisualizer extends AbstractVisualizer implements Clearable { private static final long serialVersionUID = 240L; private JTextArea textArea; public AssertionVisualizer() { init(); setName(getStaticLabel()); } public String getLabelResource() { return "assertion_visualizer_title"; // $NON-NLS-1$ } public void add(SampleResult sample) { final StringBuilder sb = new StringBuilder(100); sb.append(sample.getSampleLabel()); sb.append(getAssertionResult(sample)); sb.append("\n"); // $NON-NLS-1$ JMeterUtils.runSafe(new Runnable() { public void run() { synchronized (textArea) { textArea.append(sb.toString()); textArea.setCaretPosition(textArea.getText().length()); } } }); } public void clearData() { textArea.setText(""); // $NON-NLS-1$ } private String getAssertionResult(SampleResult res) { if (res != null) { StringBuilder display = new StringBuilder(); AssertionResult assertionResults[] = res.getAssertionResults(); for (int i = 0; i < assertionResults.length; i++) { AssertionResult item = assertionResults[i]; if (item.isFailure() || item.isError()) { display.append("\n\t"); // $NON-NLS-1$ display.append(item.getName() != null ? item.getName() + " : " : "");// $NON-NLS-1$ display.append(item.getFailureMessage()); } } return display.toString(); } return ""; } private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL Border margin = new EmptyBorder(10, 10, 5, 10); this.setBorder(margin); // NAME this.add(makeTitlePanel(), BorderLayout.NORTH); // TEXTAREA LABEL JLabel textAreaLabel = new JLabel(JMeterUtils.getResString("assertion_textarea_label")); // $NON-NLS-1$ Box mainPanel = Box.createVerticalBox(); mainPanel.add(textAreaLabel); // TEXTAREA textArea = new JTextArea(); textArea.setEditable(false); textArea.setLineWrap(false); JScrollPane areaScrollPane = new JScrollPane(textArea); areaScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); areaScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); areaScrollPane.setPreferredSize(new Dimension(mainPanel.getWidth(),mainPanel.getHeight())); mainPanel.add(areaScrollPane); this.add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/SplineVisualizer.java0000644000175000017500000002472512032647216030442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Image; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.gui.layout.VerticalLayout; /** * This class implements a statistical analyser that takes samples to process a * Spline interpolated curve. Currently, it tries to look mostly like the * GraphVisualizer. * */ public class SplineVisualizer extends AbstractVisualizer implements ImageVisualizer, GraphListener { private static final long serialVersionUID = 240L; private static final String SUFFIX_MS = " ms"; //$NON-NLS-1$ protected final Color BACKGROUND_COLOR = getBackground(); protected final Color MINIMUM_COLOR = new Color(0F, 0.5F, 0F); protected final Color MAXIMUM_COLOR = new Color(0.9F, 0F, 0F); protected final Color AVERAGE_COLOR = new Color(0F, 0F, 0.75F); protected final Color INCOMING_COLOR = Color.black; protected final int NUMBERS_TO_DISPLAY = 4; protected final boolean FILL_UP_WITH_ZEROS = false; private transient SplineGraph graph = null; private JLabel minimumLabel = null; private JLabel maximumLabel = null; private JLabel averageLabel = null; private JLabel incomingLabel = null; private JLabel minimumNumberLabel = null; private JLabel maximumNumberLabel = null; private JLabel averageNumberLabel = null; private JLabel incomingNumberLabel = null; private transient SplineModel model; public SplineVisualizer() { super(); model = new SplineModel(); graph = new SplineGraph(); this.model.setListener(this); setGUI(); } public void add(final SampleResult res) { JMeterUtils.runSafe(new Runnable() { public void run() { model.add(res); } }); } public String getLabelResource() { return "spline_visualizer_title"; //$NON-NLS-1$ } public void updateGui(Sample s) { updateGui(); } public void clearData() { model.clearData(); } private void setGUI() { Color backColor = BACKGROUND_COLOR; this.setBackground(backColor); this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new JPanel(); Border margin = new EmptyBorder(10, 10, 5, 10); mainPanel.setBorder(margin); mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); // NAME mainPanel.add(makeTitlePanel()); maximumLabel = new JLabel(JMeterUtils.getResString("spline_visualizer_maximum")); //$NON-NLS-1$ maximumLabel.setForeground(MAXIMUM_COLOR); maximumLabel.setBackground(backColor); averageLabel = new JLabel(JMeterUtils.getResString("spline_visualizer_average")); //$NON-NLS-1$ averageLabel.setForeground(AVERAGE_COLOR); averageLabel.setBackground(backColor); incomingLabel = new JLabel(JMeterUtils.getResString("spline_visualizer_incoming")); //$NON-NLS-1$ incomingLabel.setForeground(INCOMING_COLOR); incomingLabel.setBackground(backColor); minimumLabel = new JLabel(JMeterUtils.getResString("spline_visualizer_minimum")); //$NON-NLS-1$ minimumLabel.setForeground(MINIMUM_COLOR); minimumLabel.setBackground(backColor); maximumNumberLabel = new JLabel("0 ms"); //$NON-NLS-1$ maximumNumberLabel.setHorizontalAlignment(SwingConstants.RIGHT); maximumNumberLabel.setForeground(MAXIMUM_COLOR); maximumNumberLabel.setBackground(backColor); averageNumberLabel = new JLabel("0 ms"); //$NON-NLS-1$ averageNumberLabel.setHorizontalAlignment(SwingConstants.RIGHT); averageNumberLabel.setForeground(AVERAGE_COLOR); averageNumberLabel.setBackground(backColor); incomingNumberLabel = new JLabel("0 ms"); //$NON-NLS-1$ incomingNumberLabel.setHorizontalAlignment(SwingConstants.RIGHT); incomingNumberLabel.setForeground(INCOMING_COLOR); incomingNumberLabel.setBackground(backColor); minimumNumberLabel = new JLabel("0 ms"); //$NON-NLS-1$ minimumNumberLabel.setHorizontalAlignment(SwingConstants.RIGHT); minimumNumberLabel.setForeground(MINIMUM_COLOR); minimumNumberLabel.setBackground(backColor); // description Panel JPanel labelPanel = new JPanel(); labelPanel.setLayout(new GridLayout(0, 1)); labelPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); labelPanel.setBackground(backColor); labelPanel.add(maximumLabel); labelPanel.add(averageLabel); if (model.SHOW_INCOMING_SAMPLES) { labelPanel.add(incomingLabel); } labelPanel.add(minimumLabel); // number Panel JPanel numberPanel = new JPanel(); numberPanel.setLayout(new GridLayout(0, 1)); numberPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); numberPanel.setBackground(backColor); numberPanel.add(maximumNumberLabel); numberPanel.add(averageNumberLabel); if (model.SHOW_INCOMING_SAMPLES) { numberPanel.add(incomingNumberLabel); } numberPanel.add(minimumNumberLabel); // information display Panel JPanel infoPanel = new JPanel(); infoPanel.setLayout(new BorderLayout()); infoPanel.add(labelPanel, BorderLayout.CENTER); infoPanel.add(numberPanel, BorderLayout.EAST); this.add(mainPanel, BorderLayout.NORTH); this.add(infoPanel, BorderLayout.WEST); this.add(graph, BorderLayout.CENTER); // everyone is free to swing on its side :) // add(infoPanel, BorderLayout.EAST); } public void updateGui() { repaint(); synchronized (this) { setMinimum(model.getMinimum()); setMaximum(model.getMaximum()); setAverage(model.getAverage()); setIncoming(model.getCurrent()); } } @Override public String toString() { return "Show the samples analysis as a Spline curve"; } private String formatMeasureToDisplay(long measure) { String numberString = String.valueOf(measure); if (FILL_UP_WITH_ZEROS) { for (int i = numberString.length(); i < NUMBERS_TO_DISPLAY; i++) { numberString = "0" + numberString; //$NON-NLS-1$ } } return numberString; } private void setMinimum(long n) { String text = this.formatMeasureToDisplay(n) + SUFFIX_MS; this.minimumNumberLabel.setText(text); } private void setMaximum(long n) { String text = this.formatMeasureToDisplay(n) + SUFFIX_MS; this.maximumNumberLabel.setText(text); } private void setAverage(long n) { String text = this.formatMeasureToDisplay(n) + SUFFIX_MS; this.averageNumberLabel.setText(text); } private void setIncoming(long n) { String text = this.formatMeasureToDisplay(n) + SUFFIX_MS; this.incomingNumberLabel.setText(text); } public JPanel getControlPanel() {// TODO - is this needed? return this; } public Image getImage() { Image result = graph.createImage(graph.getWidth(), graph.getHeight()); graph.paintComponent(result.getGraphics()); return result; } /** * Component showing a Spline curve. * */ public class SplineGraph extends JComponent { private static final long serialVersionUID = 240L; private final Color WAITING_COLOR = Color.darkGray; private int lastWidth = -1; private int lastHeight = -1; private int[] plot = null; public SplineGraph() { } /** * Clear the Spline graph and get ready for the next wave. */ public void clear() { lastWidth = -1; lastHeight = -1; plot = null; this.repaint(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); Dimension dimension = this.getSize(); int width = dimension.width; int height = dimension.height; if (model.getDataCurve() == null) { g.setColor(this.getBackground()); g.fillRect(0, 0, width, height); g.setColor(WAITING_COLOR); g.drawString(JMeterUtils.getResString("spline_visualizer_waitingmessage"), //$NON-NLS-1$ (width - 120) / 2, height - (height - 12) / 2); return; } // boolean resized = true; if (width == lastWidth && height == lastHeight) { // dimension of the SplineGraph is the same // resized = false; } else { // dimension changed // resized = true; lastWidth = width; lastHeight = height; } this.plot = model.getDataCurve().getPlots(width, height); // rounds! int n = plot.length; int curY = plot[0]; for (int i = 1; i < n; i++) { g.setColor(Color.black); g.drawLine(i - 1, height - curY - 1, i, height - plot[i] - 1); curY = plot[i]; } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RespTimeGraphDataBean.java0000644000175000017500000000402612032647216031214 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; public class RespTimeGraphDataBean { private long startTime; private long time; private String samplerLabel; /** * @param startTime * @param time * @param samplerLabel */ public RespTimeGraphDataBean(long startTime, long time, String samplerLabel) { super(); this.startTime = startTime; this.time = time; this.samplerLabel = samplerLabel; } /** * @return the startTime */ public long getStartTime() { return startTime; } /** * @param startTime the startTime to set */ public void setStartTime(long startTime) { this.startTime = startTime; } /** * @return the time */ public long getTime() { return time; } /** * @param time the time to set */ public void setTime(long time) { this.time = time; } /** * @return the samplerLabel */ public String getSamplerLabel() { return samplerLabel; } /** * @param samplerLabel the samplerLabel to set */ public void setSamplerLabel(String samplerLabel) { this.samplerLabel = samplerLabel; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BSFListenerResources_pt_BR.properties0000644000175000017500000000322112032647216033472 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Ouvinte BSF filename.displayName=Nome do arquivo filename.shortDescription=Arquivo de script (substitui o script) filenameGroup.displayName=Arquivo de script (substitui o script) parameterGroup.displayName=Par\u00E2metros a serem passados ao script (\=> String Parameters e String []args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros que ser\u00E3o passados ao arquivo ou script script.displayName=Script script.shortDescription=Script na linguagem BSF apropriada scriptLanguage.displayName=Linguagem scriptLanguage.shortDescription=Nome da linguagem BSF, ex\: beanshell, javascript, jexl scripting.displayName=Scripts (vari\u00E1veis\: ctx vars props sampleResult (aka prev) sampleEvent sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Linguagem de script (ex\: beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/TableVisualizer.java0000644000175000017500000003140312032647216030226 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.text.Format; import java.text.SimpleDateFormat; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.table.TableCellRenderer; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.Calculator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.gui.RendererUtils; import org.apache.jorphan.gui.RightAlignRenderer; import org.apache.jorphan.gui.layout.VerticalLayout; import org.apache.jorphan.reflect.Functor; /** * This class implements a statistical analyser that calculates both the average * and the standard deviation of the sampling process. The samples are displayed * in a JTable, and the statistics are displayed at the bottom of the table. * * created March 10, 2002 * */ public class TableVisualizer extends AbstractVisualizer implements Clearable { private static final long serialVersionUID = 240L; // Note: the resource string won't respond to locale-changes, // however this does not matter as it is only used when pasting to the clipboard private static final ImageIcon imageSuccess = JMeterUtils.getImage( JMeterUtils.getPropDefault("viewResultsTree.success", //$NON-NLS-1$ "icon_success_sml.gif"), //$NON-NLS-1$ JMeterUtils.getResString("table_visualizer_success")); //$NON-NLS-1$ private static final ImageIcon imageFailure = JMeterUtils.getImage( JMeterUtils.getPropDefault("viewResultsTree.failure", //$NON-NLS-1$ "icon_warning_sml.gif"), //$NON-NLS-1$ JMeterUtils.getResString("table_visualizer_warning")); //$NON-NLS-1$ private static final String[] COLUMNS = new String[] { "table_visualizer_sample_num", // $NON-NLS-1$ "table_visualizer_start_time", // $NON-NLS-1$ "table_visualizer_thread_name", // $NON-NLS-1$ "sampler_label", // $NON-NLS-1$ "table_visualizer_sample_time", // $NON-NLS-1$ "table_visualizer_status", // $NON-NLS-1$ "table_visualizer_bytes", // $NON-NLS-1$ "table_visualizer_latency"}; // $NON-NLS-1$ private ObjectTableModel model = null; private JTable table = null; private JTextField dataField = null; private JTextField averageField = null; private JTextField deviationField = null; private JTextField noSamplesField = null; private JScrollPane tableScrollPanel = null; private JCheckBox autoscroll = null; private JCheckBox childSamples = null; private transient Calculator calc = new Calculator(); private Format format = new SimpleDateFormat("HH:mm:ss.SSS"); //$NON-NLS-1$ // Column renderers private static final TableCellRenderer[] RENDERERS = new TableCellRenderer[]{ new RightAlignRenderer(), // Sample number (string) new RightAlignRenderer(), // Start Time null, // Thread Name null, // Label null, // Sample Time null, // Status null, // Bytes }; /** * Constructor for the TableVisualizer object. */ public TableVisualizer() { super(); model = new ObjectTableModel(COLUMNS, TableSample.class, // The object used for each row new Functor[] { new Functor("getSampleNumberString"), // $NON-NLS-1$ new Functor("getStartTimeFormatted", // $NON-NLS-1$ new Object[]{format}), new Functor("getThreadName"), // $NON-NLS-1$ new Functor("getLabel"), // $NON-NLS-1$ new Functor("getElapsed"), // $NON-NLS-1$ new SampleSuccessFunctor("isSuccess"), // $NON-NLS-1$ new Functor("getBytes"), // $NON-NLS-1$ new Functor("getLatency") }, // $NON-NLS-1$ new Functor[] { null, null, null, null, null, null, null, null }, new Class[] { String.class, String.class, String.class, String.class, Long.class, ImageIcon.class, Long.class, Long.class }); init(); } public static boolean testFunctors(){ TableVisualizer instance = new TableVisualizer(); return instance.model.checkFunctors(null,instance.getClass()); } public String getLabelResource() { return "view_results_in_table"; // $NON-NLS-1$ } protected synchronized void updateTextFields(SampleResult res) { noSamplesField.setText(Long.toString(calc.getCount())); dataField.setText(Long.toString(res.getTime()/res.getSampleCount())); averageField.setText(Long.toString((long) calc.getMean())); deviationField.setText(Long.toString((long) calc.getStandardDeviation())); } public void add(final SampleResult res) { JMeterUtils.runSafe(new Runnable() { public void run() { if (childSamples.isSelected()) { SampleResult[] subResults = res.getSubResults(); if (subResults.length > 0) { for (SampleResult sr : subResults) { add(sr); } return; } } synchronized (calc) { calc.addSample(res); int count = calc.getCount(); TableSample newS = new TableSample( count, res.getSampleCount(), res.getStartTime(), res.getThreadName(), res.getSampleLabel(), res.getTime(), res.isSuccessful(), res.getBytes(), res.getLatency()); model.addRow(newS); } updateTextFields(res); if (autoscroll.isSelected()) { table.scrollRectToVisible(table.getCellRect(table.getRowCount() - 1, 0, true)); } } }); } public synchronized void clearData() { model.clearData(); calc.clear(); noSamplesField.setText("0"); // $NON-NLS-1$ dataField.setText("0"); // $NON-NLS-1$ averageField.setText("0"); // $NON-NLS-1$ deviationField.setText("0"); // $NON-NLS-1$ repaint(); } @Override public String toString() { return "Show the samples in a table"; } private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new JPanel(); Border margin = new EmptyBorder(10, 10, 5, 10); mainPanel.setBorder(margin); mainPanel.setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); // NAME mainPanel.add(makeTitlePanel()); // Set up the table itself table = new JTable(model); table.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); // table.getTableHeader().setReorderingAllowed(false); RendererUtils.applyRenderers(table, RENDERERS); tableScrollPanel = new JScrollPane(table); tableScrollPanel.setViewportBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); autoscroll = new JCheckBox(JMeterUtils.getResString("view_results_autoscroll")); //$NON-NLS-1$ childSamples = new JCheckBox(JMeterUtils.getResString("view_results_childsamples")); //$NON-NLS-1$ // Set up footer of table which displays numerics of the graphs JPanel dataPanel = new JPanel(); JLabel dataLabel = new JLabel(JMeterUtils.getResString("graph_results_latest_sample")); // $NON-NLS-1$ dataLabel.setForeground(Color.black); dataField = new JTextField(5); dataField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); dataField.setEditable(false); dataField.setForeground(Color.black); dataField.setBackground(getBackground()); dataPanel.add(dataLabel); dataPanel.add(dataField); JPanel averagePanel = new JPanel(); JLabel averageLabel = new JLabel(JMeterUtils.getResString("graph_results_average")); // $NON-NLS-1$ averageLabel.setForeground(Color.blue); averageField = new JTextField(5); averageField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); averageField.setEditable(false); averageField.setForeground(Color.blue); averageField.setBackground(getBackground()); averagePanel.add(averageLabel); averagePanel.add(averageField); JPanel deviationPanel = new JPanel(); JLabel deviationLabel = new JLabel(JMeterUtils.getResString("graph_results_deviation")); // $NON-NLS-1$ deviationLabel.setForeground(Color.red); deviationField = new JTextField(5); deviationField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); deviationField.setEditable(false); deviationField.setForeground(Color.red); deviationField.setBackground(getBackground()); deviationPanel.add(deviationLabel); deviationPanel.add(deviationField); JPanel noSamplesPanel = new JPanel(); JLabel noSamplesLabel = new JLabel(JMeterUtils.getResString("graph_results_no_samples")); // $NON-NLS-1$ noSamplesField = new JTextField(8); noSamplesField.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); noSamplesField.setEditable(false); noSamplesField.setForeground(Color.black); noSamplesField.setBackground(getBackground()); noSamplesPanel.add(noSamplesLabel); noSamplesPanel.add(noSamplesField); JPanel tableInfoPanel = new JPanel(); tableInfoPanel.setLayout(new FlowLayout()); tableInfoPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); tableInfoPanel.add(noSamplesPanel); tableInfoPanel.add(dataPanel); tableInfoPanel.add(averagePanel); tableInfoPanel.add(deviationPanel); JPanel tableControlsPanel = new JPanel(new BorderLayout()); tableControlsPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); JPanel jp = new HorizontalPanel(); jp.add(autoscroll); jp.add(childSamples); tableControlsPanel.add(jp, BorderLayout.WEST); tableControlsPanel.add(tableInfoPanel, BorderLayout.CENTER); // Set up the table with footer JPanel tablePanel = new JPanel(); tablePanel.setLayout(new BorderLayout()); tablePanel.add(tableScrollPanel, BorderLayout.CENTER); tablePanel.add(tableControlsPanel, BorderLayout.SOUTH); // Add the main panel and the graph this.add(mainPanel, BorderLayout.NORTH); this.add(tablePanel, BorderLayout.CENTER); } public static class SampleSuccessFunctor extends Functor { public SampleSuccessFunctor(String methodName) { super(methodName); } @Override public Object invoke(Object p_invokee) { Boolean success = (Boolean)super.invoke(p_invokee); if(success != null) { if(success.booleanValue()) { return imageSuccess; } else { return imageFailure; } } else { return null; } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListener.java0000644000175000017500000000547212032647216030473 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; public class BeanShellListener extends BeanShellTestElement implements Cloneable, SampleListener, TestBean, Visualizer, UnsharedComponent { // N.B. Needs to implement Visualizer so that TestBeanGUI can find the correct GUI class // TODO - remove UnsharedComponent ? Probably does not make sense for a TestBean. private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 4; // can be specified in jmeter.properties private static final String INIT_FILE = "beanshell.listener.init"; //$NON-NLS-1$ @Override protected String getInitFileProperty() { return INIT_FILE; } public void sampleOccurred(SampleEvent se) { final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { log.error("BeanShell not found"); return; } SampleResult samp=se.getResult(); try { bshInterpreter.set("sampleEvent", se);//$NON-NLS-1$ bshInterpreter.set("sampleResult", samp);//$NON-NLS-1$ processFileOrScript(bshInterpreter); } catch (JMeterException e) { log.warn("Problem in BeanShell script "+e); } } public void sampleStarted(SampleEvent e) { // NOOP } public void sampleStopped(SampleEvent e) { // NOOP } public void add(SampleResult sample) { // NOOP } public boolean isStats() { // Needed by Visualizer interface return false; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RequestViewRaw.java0000644000175000017500000000714412032647216030063 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with this * work for additional information regarding copyright ownership. The ASF * licenses this file to You under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JTextArea; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; /** * (historical) Panel to view request data * */ public class RequestViewRaw implements RequestView { // Used by Request Panel static final String KEY_LABEL = "view_results_table_request_tab_raw"; //$NON-NLS-1$ private JTextArea sampleDataField; private JPanel paneRaw; /** request pane content */ /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#init() */ public void init() { paneRaw = new JPanel(new BorderLayout(0, 5)); sampleDataField = new JTextArea(); sampleDataField.setEditable(false); sampleDataField.setLineWrap(true); sampleDataField.setWrapStyleWord(true); paneRaw.add(GuiUtils.makeScrollPane(sampleDataField)); } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#clearData() */ public void clearData() { sampleDataField.setText(""); //$NON-NLS-1$ } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#setSamplerResult(java.lang.Object) */ public void setSamplerResult(Object objectResult) { if (objectResult instanceof SampleResult) { SampleResult sampleResult = (SampleResult) objectResult; String rh = sampleResult.getRequestHeaders(); StringBuilder sb = new StringBuilder(); String sd = sampleResult.getSamplerData(); if (sd != null) { sb.append(sd); sb.append("\n"); //$NON-NLS-1$ } // Don't display Request headers label if rh is null or empty if (rh != null && rh.length() > 0) { sb.append(JMeterUtils.getResString("view_results_request_headers")); //$NON-NLS-1$ sb.append("\n"); //$NON-NLS-1$ sb.append(rh); sb.append("\n"); //$NON-NLS-1$ } if (sb.length() > 0) { sampleDataField.setText(sb.toString()); } else { // add a message when no request data (ex. Java request) sampleDataField.setText(JMeterUtils .getResString("view_results_table_request_raw_nodata")); //$NON-NLS-1$ } } } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#getPanel() */ public JPanel getPanel() { return paneRaw; } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#getLabel() */ public String getLabel() { return JMeterUtils.getResString(KEY_LABEL); } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/GraphVisualizer.java0000644000175000017500000004201412032647216030240 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.text.NumberFormat; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ScrollPaneConstants; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.jmeter.gui.util.JMeterColor; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; /** * This class implements a statistical analyser that calculates both the average * and the standard deviation of the sampling process and outputs them as * autoscaling plots. * * Created February 8, 2001 * */ public class GraphVisualizer extends AbstractVisualizer implements ImageVisualizer, ItemListener, Clearable { private static final long serialVersionUID = 240L; private static final String ZERO = "0"; //$NON-NLS-1$ private final NumberFormat nf = NumberFormat.getInstance(); // OK, because used in synchronised method private final CachingStatCalculator model; private JTextField maxYField = null; private JTextField minYField = null; private JTextField noSamplesField = null; private final String minute = JMeterUtils.getResString("minute"); // $NON-NLS-1$ private final Graph graph; private JCheckBox data; private JCheckBox average; private JCheckBox deviation; private JCheckBox throughput; private JCheckBox median; private JTextField dataField; private JTextField averageField; private JTextField deviationField; private JTextField throughputField; private JTextField medianField; /** * Constructor for the GraphVisualizer object. */ public GraphVisualizer() { model = new CachingStatCalculator("Graph"); graph = new Graph(model); init(); } /** * Gets the Image attribute of the GraphVisualizer object. * * @return the Image value */ public Image getImage() { Image result = graph.createImage(graph.getWidth(), graph.getHeight()); graph.paintComponent(result.getGraphics()); return result; } public synchronized void updateGui(Sample s) { // We have received one more sample graph.updateGui(s); noSamplesField.setText(Long.toString(s.getCount())); dataField.setText(Long.toString(s.getData())); averageField.setText(Long.toString(s.getAverage())); deviationField.setText(Long.toString(s.getDeviation())); throughputField.setText(nf.format(60 * s.getThroughput()) + "/" + minute); // $NON-NLS-1$ medianField.setText(Long.toString(s.getMedian())); updateYAxis(); } public void add(final SampleResult res) { JMeterUtils.runSafe(new Runnable() { public void run() { updateGui(model.addSample(res)); } }); } public String getLabelResource() { return "graph_results_title"; // $NON-NLS-1$ } public void itemStateChanged(ItemEvent e) { if (e.getItem() == data) { this.graph.enableData(e.getStateChange() == ItemEvent.SELECTED); } else if (e.getItem() == average) { this.graph.enableAverage(e.getStateChange() == ItemEvent.SELECTED); } else if (e.getItem() == deviation) { this.graph.enableDeviation(e.getStateChange() == ItemEvent.SELECTED); } else if (e.getItem() == throughput) { this.graph.enableThroughput(e.getStateChange() == ItemEvent.SELECTED); } else if (e.getItem() == median) { this.graph.enableMedian(e.getStateChange() == ItemEvent.SELECTED); } this.graph.repaint(); } public void clearData() { graph.clearData(); model.clear(); dataField.setText(ZERO); averageField.setText(ZERO); deviationField.setText(ZERO); throughputField.setText("0/" + minute); //$NON-NLS-1$ medianField.setText(ZERO); noSamplesField.setText(ZERO); updateYAxis(); repaint(); } @Override public String toString() { return "Show the samples analysis as dot plots"; } /** * Update the max and min value of the Y axis. */ private void updateYAxis() { maxYField.setText(Long.toString(graph.getGraphMax())); minYField.setText(ZERO); } /** * Initialize the GUI. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL Border margin = new EmptyBorder(10, 10, 5, 10); this.setBorder(margin); // Set up the graph with header, footer, Y axis and graph display JPanel graphPanel = new JPanel(new BorderLayout()); graphPanel.add(createYAxis(), BorderLayout.WEST); graphPanel.add(createChoosePanel(), BorderLayout.NORTH); graphPanel.add(createGraphPanel(), BorderLayout.CENTER); graphPanel.add(createGraphInfoPanel(), BorderLayout.SOUTH); // Add the main panel and the graph this.add(makeTitlePanel(), BorderLayout.NORTH); this.add(graphPanel, BorderLayout.CENTER); } // Methods used in creating the GUI /** * Creates the panel containing the graph's Y axis labels. * * @return the Y axis panel */ private JPanel createYAxis() { JPanel graphYAxisPanel = new JPanel(); graphYAxisPanel.setLayout(new BorderLayout()); maxYField = createYAxisField(5); minYField = createYAxisField(3); graphYAxisPanel.add(createYAxisPanel("graph_results_ms", maxYField), BorderLayout.NORTH); // $NON-NLS-1$ graphYAxisPanel.add(createYAxisPanel("graph_results_ms", minYField), BorderLayout.SOUTH); // $NON-NLS-1$ return graphYAxisPanel; } /** * Creates a text field to be used for the value of a Y axis label. These * fields hold the minimum and maximum values for the graph. The units are * kept in a separate label outside of this field. * * @param length * the number of characters which the field will use to calculate * its preferred width. This should be set to the maximum number * of digits that are expected to be necessary to hold the label * value. * * @see #createYAxisPanel(String, JTextField) * * @return a text field configured to be used in the Y axis */ private JTextField createYAxisField(int length) { JTextField field = new JTextField(length); field.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); field.setEditable(false); field.setForeground(Color.black); field.setBackground(getBackground()); field.setHorizontalAlignment(SwingConstants.RIGHT); return field; } /** * Creates a panel for an entire Y axis label. This includes the dynamic * value as well as the unit label. * * @param labelResourceName * the name of the label resource. This is used to look up the * label text using {@link JMeterUtils#getResString(String)}. * * @return a panel containing both the dynamic and static parts of a Y axis * label */ private JPanel createYAxisPanel(String labelResourceName, JTextField field) { JPanel panel = new JPanel(new FlowLayout()); JLabel label = new JLabel(JMeterUtils.getResString(labelResourceName)); panel.add(field); panel.add(label); return panel; } /** * Creates a panel which allows the user to choose which graphs to display. * This panel consists of a check box for each type of graph (current * sample, average, deviation, and throughput). * * @return a panel allowing the user to choose which graphs to display */ private JPanel createChoosePanel() { JPanel chooseGraphsPanel = new JPanel(); chooseGraphsPanel.setLayout(new FlowLayout()); JLabel selectGraphsLabel = new JLabel(JMeterUtils.getResString("graph_choose_graphs")); //$NON-NLS-1$ data = createChooseCheckBox("graph_results_data", Color.black); // $NON-NLS-1$ average = createChooseCheckBox("graph_results_average", Color.blue); // $NON-NLS-1$ deviation = createChooseCheckBox("graph_results_deviation", Color.red); // $NON-NLS-1$ throughput = createChooseCheckBox("graph_results_throughput", JMeterColor.dark_green); // $NON-NLS-1$ median = createChooseCheckBox("graph_results_median", JMeterColor.purple); // $NON-NLS-1$ chooseGraphsPanel.add(selectGraphsLabel); chooseGraphsPanel.add(data); chooseGraphsPanel.add(average); chooseGraphsPanel.add(median); chooseGraphsPanel.add(deviation); chooseGraphsPanel.add(throughput); return chooseGraphsPanel; } /** * Creates a check box configured to be used to in the choose panel allowing * the user to select whether or not a particular kind of graph data will be * displayed. * * @param labelResourceName * the name of the label resource. This is used to look up the * label text using {@link JMeterUtils#getResString(String)}. * @param color * the color used for the checkbox text. By convention this is * the same color that is used to draw the graph and for the * corresponding info field. * * @return a checkbox allowing the user to select whether or not a kind of * graph data will be displayed */ private JCheckBox createChooseCheckBox(String labelResourceName, Color color) { JCheckBox checkBox = new JCheckBox(JMeterUtils.getResString(labelResourceName)); checkBox.setSelected(true); checkBox.addItemListener(this); checkBox.setForeground(color); return checkBox; } /** * Creates a scroll pane containing the actual graph of the results. * * @return a scroll pane containing the graph */ private Component createGraphPanel() { JScrollPane graphScrollPanel = makeScrollPane(graph, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); graphScrollPanel.setViewportBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); graphScrollPanel.setPreferredSize(graphScrollPanel.getMinimumSize()); return graphScrollPanel; } /** * Creates a panel which numerically displays the current graph values. * * @return a panel showing the current graph values */ private Box createGraphInfoPanel() { Box graphInfoPanel = Box.createHorizontalBox(); noSamplesField = createInfoField(Color.black, 6); dataField = createInfoField(Color.black, 5); averageField = createInfoField(Color.blue, 5); deviationField = createInfoField(Color.red, 5); throughputField = createInfoField(JMeterColor.dark_green, 15); medianField = createInfoField(JMeterColor.purple, 5); graphInfoPanel.add(createInfoColumn(createInfoLabel("graph_results_no_samples", noSamplesField), // $NON-NLS-1$ noSamplesField, createInfoLabel("graph_results_deviation", deviationField), deviationField)); // $NON-NLS-1$ graphInfoPanel.add(Box.createHorizontalGlue()); graphInfoPanel.add(createInfoColumn(createInfoLabel("graph_results_latest_sample", dataField), dataField, // $NON-NLS-1$ createInfoLabel("graph_results_throughput", throughputField), throughputField)); // $NON-NLS-1$ graphInfoPanel.add(Box.createHorizontalGlue()); graphInfoPanel.add(createInfoColumn(createInfoLabel("graph_results_average", averageField), averageField, // $NON-NLS-1$ createInfoLabel("graph_results_median", medianField), medianField)); // $NON-NLS-1$ graphInfoPanel.add(Box.createHorizontalGlue()); return graphInfoPanel; } /** * Creates one of the fields used to display the graph's current values. * * @param color * the color used to draw the value. By convention this is the * same color that is used to draw the graph for this value and * in the choose panel. * @param length * the number of digits which the field should be able to display * * @return a text field configured to display one of the current graph * values */ private JTextField createInfoField(Color color, int length) { JTextField field = new JTextField(length); field.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); field.setEditable(false); field.setForeground(color); field.setBackground(getBackground()); // The text field should expand horizontally, but have // a fixed height field.setMaximumSize(new Dimension(field.getMaximumSize().width, field.getPreferredSize().height)); return field; } /** * Creates a label for one of the fields used to display the graph's current * values. Neither the label created by this method or the * field passed as a parameter is added to the GUI here. * * @param labelResourceName * the name of the label resource. This is used to look up the * label text using {@link JMeterUtils#getResString(String)}. * @param field * the field this label is being created for. */ private JLabel createInfoLabel(String labelResourceName, JTextField field) { JLabel label = new JLabel(JMeterUtils.getResString(labelResourceName)); label.setForeground(field.getForeground()); label.setLabelFor(field); return label; } /** * Creates a panel containing two pairs of labels and fields for displaying * the current graph values. This method exists to help with laying out the * fields in columns. If one or more components are null then these * components will be represented by blank space. * * @param label1 * the label for the first field. This label will be placed in * the upper left section of the panel. If this parameter is * null, this section of the panel will be left blank. * @param field1 * the field corresponding to the first label. This field will be * placed in the upper right section of the panel. If this * parameter is null, this section of the panel will be left * blank. * @param label2 * the label for the second field. This label will be placed in * the lower left section of the panel. If this parameter is * null, this section of the panel will be left blank. * @param field2 * the field corresponding to the second label. This field will * be placed in the lower right section of the panel. If this * parameter is null, this section of the panel will be left * blank. */ private Box createInfoColumn(JLabel label1, JTextField field1, JLabel label2, JTextField field2) { // This column actually consists of a row with two sub-columns // The first column contains the labels, and the second // column contains the fields. Box row = Box.createHorizontalBox(); Box col = Box.createVerticalBox(); col.add(label1 != null ? label1 : Box.createVerticalGlue()); col.add(label2 != null ? label2 : Box.createVerticalGlue()); row.add(col); row.add(Box.createHorizontalStrut(5)); col = Box.createVerticalBox(); col.add(field1 != null ? field1 : Box.createVerticalGlue()); col.add(field2 != null ? field2 : Box.createVerticalGlue()); row.add(col); row.add(Box.createHorizontalStrut(5)); return row; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RespTimeGraphLineBean.java0000644000175000017500000000322512032647216031232 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Color; public class RespTimeGraphLineBean { private String label; private Color lineColor; /** * @param label * @param lineColor */ public RespTimeGraphLineBean(String label, Color lineColor) { super(); this.label = label; this.lineColor = lineColor; } /** * @return the label */ public String getLabel() { return label; } /** * @param label the label to set */ public void setLabel(String label) { this.label = label; } /** * @return the lineColor */ public Color getLineColor() { return lineColor; } /** * @param lineColor the lineColor to set */ public void setLineColor(Color lineColor) { this.lineColor = lineColor; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/AxisGraph.java0000644000175000017500000003204012032647216027005 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.LayoutManager; import java.awt.Paint; import java.math.BigDecimal; import javax.swing.JPanel; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.jCharts.axisChart.AxisChart; import org.jCharts.axisChart.customRenderers.axisValue.renderers.ValueLabelPosition; import org.jCharts.axisChart.customRenderers.axisValue.renderers.ValueLabelRenderer; import org.jCharts.chartData.AxisChartDataSet; import org.jCharts.chartData.ChartDataException; import org.jCharts.chartData.DataSeries; import org.jCharts.properties.AxisProperties; import org.jCharts.properties.ChartProperties; import org.jCharts.properties.ClusteredBarChartProperties; import org.jCharts.properties.DataAxisProperties; import org.jCharts.properties.LabelAxisProperties; import org.jCharts.properties.LegendAreaProperties; import org.jCharts.properties.LegendProperties; import org.jCharts.properties.PropertyException; import org.jCharts.properties.util.ChartFont; import org.jCharts.types.ChartType; /** * * Axis graph is used by StatGraphVisualizer, which generates bar graphs * from the statistical data. */ public class AxisGraph extends JPanel { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String ELLIPSIS = "..."; //$NON-NLS-1$ private static final int ELLIPSIS_LEN = ELLIPSIS.length(); protected double[][] data = null; protected String title; protected String xAxisTitle; protected String yAxisTitle; protected String yAxisLabel; protected int maxLength; protected String[] xAxisLabels; protected int width, height; protected String[] legendLabels = { JMeterUtils.getResString("aggregate_graph_legend") }; protected int maxYAxisScale; protected Font titleFont; protected Font legendFont; protected Font valueFont = new Font("SansSerif", Font.PLAIN, 8); protected Color[] color = { Color.YELLOW }; protected Color foreColor = Color.BLACK; protected boolean outlinesBarFlag = false; protected boolean showGrouping = true; protected boolean valueOrientation = true; protected int legendPlacement = LegendAreaProperties.BOTTOM; /** * */ public AxisGraph() { super(); } /** * @param layout */ public AxisGraph(LayoutManager layout) { super(layout); } /** * @param layout * @param isDoubleBuffered */ public AxisGraph(LayoutManager layout, boolean isDoubleBuffered) { super(layout, isDoubleBuffered); } /** * Expects null array when no data not empty array * @param data */ public void setData(double[][] data) { this.data = data; } public void setTitle(String title) { this.title = title; } public void setMaxLength(int maxLength) { this.maxLength = maxLength; } public void setXAxisTitle(String title) { this.xAxisTitle = title; } public void setYAxisTitle(String title) { this.yAxisTitle = title; } /** * Expects null array when no labels not empty array * @param labels */ public void setXAxisLabels(String[] labels) { this.xAxisLabels = labels; } public void setYAxisLabels(String label) { this.yAxisLabel = label; } public void setLegendLabels(String[] labels) { this.legendLabels = labels; } public void setWidth(int w) { this.width = w; } public void setHeight(int h) { this.height = h; } /** * @return the maxYAxisScale */ public int getMaxYAxisScale() { return maxYAxisScale; } /** * @param maxYAxisScale the maxYAxisScale to set */ public void setMaxYAxisScale(int maxYAxisScale) { this.maxYAxisScale = maxYAxisScale; } /** * @return the color */ public Color[] getColor() { return color; } /** * @param color the color to set */ public void setColor(Color[] color) { this.color = color; } /** * @return the foreColor */ public Color getForeColor() { return foreColor; } /** * @param foreColor the foreColor to set */ public void setForeColor(Color foreColor) { this.foreColor = foreColor; } /** * @return the titleFont */ public Font getTitleFont() { return titleFont; } /** * @param titleFont the titleFont to set */ public void setTitleFont(Font titleFont) { this.titleFont = titleFont; } /** * @return the legendFont */ public Font getLegendFont() { return legendFont; } /** * @param legendFont the legendFont to set */ public void setLegendFont(Font legendFont) { this.legendFont = legendFont; } /** * @return the valueFont */ public Font getValueFont() { return valueFont; } /** * @param valueFont the valueFont to set */ public void setValueFont(Font valueFont) { this.valueFont = valueFont; } /** * @return the legendPlacement */ public int getLegendPlacement() { return legendPlacement; } /** * @param legendPlacement the legendPlacement to set */ public void setLegendPlacement(int legendPlacement) { this.legendPlacement = legendPlacement; } /** * @return the outlinesBarFlag */ public boolean isOutlinesBarFlag() { return outlinesBarFlag; } /** * @param outlinesBarFlag the outlinesBarFlag to set */ public void setOutlinesBarFlag(boolean outlinesBarFlag) { this.outlinesBarFlag = outlinesBarFlag; } /** * @return the valueOrientation */ public boolean isValueOrientation() { return valueOrientation; } /** * @param valueOrientation the valueOrientation to set */ public void setValueOrientation(boolean valueOrientation) { this.valueOrientation = valueOrientation; } /** * @return the showGrouping */ public boolean isShowGrouping() { return showGrouping; } /** * @param showGrouping the showGrouping to set */ public void setShowGrouping(boolean showGrouping) { this.showGrouping = showGrouping; } @Override public void paintComponent(Graphics graphics) { if (data != null && this.title != null && this.xAxisLabels != null && this.yAxisLabel != null && this.yAxisTitle != null) { drawSample(this.title, this.maxLength, this.xAxisLabels, this.yAxisTitle, this.legendLabels, this.data, this.width, this.height, this.color, this.legendFont, graphics); } } private double findMax(double _data[][]) { double max = 0; max = _data[0][0]; for (int i = 0; i < _data.length; i++) { for (int j = 0; j < _data[i].length; j++) { if (_data[i][j] > max) { max = _data[i][j]; } } } return max; } private String squeeze (String input, int _maxLength){ if (input.length()>_maxLength){ return input.substring(0,_maxLength-ELLIPSIS_LEN)+ELLIPSIS; } return input; } private void drawSample(String _title, int _maxLength, String[] _xAxisLabels, String _yAxisTitle, String[] _legendLabels, double[][] _data, int _width, int _height, Color[] _color, Font legendFont, Graphics g) { double max = maxYAxisScale > 0 ? maxYAxisScale : findMax(_data); // define max scale y axis try { /** These controls are already done in StatGraphVisualizer if (_width == 0) { _width = 450; } if (_height == 0) { _height = 250; } **/ if (_maxLength < 3) { _maxLength = 3; } // if the "Title of Graph" is empty, we can assume some default if (_title.length() == 0 ) { _title = JMeterUtils.getResString("aggregate_graph_title"); //$NON-NLS-1$ } // if the labels are too long, they'll be "squeezed" to make the chart viewable. for (int i = 0; i < _xAxisLabels.length; i++) { String label = _xAxisLabels[i]; _xAxisLabels[i]=squeeze(label, _maxLength); } this.setPreferredSize(new Dimension(_width,_height)); DataSeries dataSeries = new DataSeries( _xAxisLabels, null, _yAxisTitle, _title ); // replace _xAxisTitle to null (don't display x axis title) ClusteredBarChartProperties clusteredBarChartProperties= new ClusteredBarChartProperties(); clusteredBarChartProperties.setShowOutlinesFlag(outlinesBarFlag); ValueLabelRenderer valueLabelRenderer = new ValueLabelRenderer(false, false, showGrouping, 0); valueLabelRenderer.setValueLabelPosition(ValueLabelPosition.AT_TOP); valueLabelRenderer.setValueChartFont(new ChartFont(valueFont, foreColor)); valueLabelRenderer.useVerticalLabels(valueOrientation); clusteredBarChartProperties.addPostRenderEventListener(valueLabelRenderer); Paint[] paints = new Paint[_color.length]; System.arraycopy(_color, 0, paints, 0, paints.length); AxisChartDataSet axisChartDataSet = new AxisChartDataSet( _data, _legendLabels, paints, ChartType.BAR_CLUSTERED, clusteredBarChartProperties ); dataSeries.addIAxisPlotDataSet( axisChartDataSet ); ChartProperties chartProperties= new ChartProperties(); LabelAxisProperties xaxis = new LabelAxisProperties(); DataAxisProperties yaxis = new DataAxisProperties(); yaxis.setUseCommas(showGrouping); if (legendFont != null) { yaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20))); yaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20))); xaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20))); xaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20))); } if (titleFont != null) { chartProperties.setTitleFont(new ChartFont(titleFont, new Color(0))); } // Y Axis try { BigDecimal round = new BigDecimal(max / 1000d); round = round.setScale(0, BigDecimal.ROUND_UP); double topValue = round.doubleValue() * 1000; yaxis.setUserDefinedScale(0, 500); yaxis.setNumItems((int) (topValue / 500)+1); yaxis.setShowGridLines(1); } catch (PropertyException e) { log.warn("",e); } AxisProperties axisProperties= new AxisProperties(xaxis, yaxis); axisProperties.setXAxisLabelsAreVertical(true); LegendProperties legendProperties= new LegendProperties(); legendProperties.setBorderStroke(null); legendProperties.setPlacement(legendPlacement); legendProperties.setIconBorderPaint(Color.WHITE); if (legendPlacement == LegendAreaProperties.RIGHT || legendPlacement == LegendAreaProperties.LEFT) { legendProperties.setNumColumns(1); } if (legendFont != null) { legendProperties.setFont(legendFont); //new Font("SansSerif", Font.PLAIN, 10) } AxisChart axisChart = new AxisChart( dataSeries, chartProperties, axisProperties, legendProperties, _width, _height ); axisChart.setGraphics2D((Graphics2D) g); axisChart.render(); } catch (ChartDataException e) { log.warn("",e); } catch (PropertyException e) { log.warn("",e); } } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_fr.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_fr.propert0000644000175000017500000000311512032647216033617 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=R\u00E9cepteur BeanShell filename.displayName=Nom de fichier filename.shortDescription=Fichier script BeanShell (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au BeanShell (\=> String Parameters and String []bsh.args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au BeanShell (fichier ou script) resetGroup.displayName=R\u00E9initialiser l'interpr\u00E9teur BSH avant chaque appel resetInterpreter.displayName=R\u00E9initialiser l'interpr\u00E9teur script.displayName=Script script.shortDescription=Script BeanShell scripting.displayName=Script (variables \: ctx vars props sampleEvent sampleResult log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/TreeNodeRenderer.java0000644000175000017500000000466412032647216030326 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.Color; import java.awt.Component; import javax.swing.ImageIcon; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; /** * Tree cell renderer used by ComparisonVisualizer. */ public class TreeNodeRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = 240L; // Same ViewResultsTree private static final ImageIcon imageSuccess = JMeterUtils.getImage( JMeterUtils.getPropDefault("viewResultsTree.success", //$NON-NLS-1$ "icon_success_sml.gif")); //$NON-NLS-1$ private static final ImageIcon imageFailure = JMeterUtils.getImage( JMeterUtils.getPropDefault("viewResultsTree.failure", //$NON-NLS-1$ "icon_warning_sml.gif")); //$NON-NLS-1$ public TreeNodeRenderer() { super(); } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean focus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, focus); Object obj = ((DefaultMutableTreeNode) value).getUserObject(); if(obj instanceof SampleResult) { if (!((SampleResult) obj).isSuccessful()) { this.setForeground(Color.red); this.setIcon(imageFailure); } else { this.setIcon(imageSuccess); } } return this; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java0000644000175000017500000004421612032647216030416 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.reporters.MailerModel; import org.apache.jmeter.reporters.MailerResultCollector; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /* * TODO : - Create a subpanel for other visualizers - connect to the properties. - * Get the specific URL that is failing. - add a seperate interface to collect * the thrown failure messages. - - suggestions ;-) */ /** * This class implements a visualizer that mails a message when an error occurs. * */ public class MailerVisualizer extends AbstractVisualizer implements ActionListener, Clearable, ChangeListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private JButton testerButton; private JTextField addressField; private JTextField fromField; private JTextField smtpHostField; private JTextField smtpPortField; private JTextField failureSubjectField; private JTextField successSubjectField; private JTextField failureField; private JTextField failureLimitField; private JTextField successLimitField; private JTextField smtpLoginField; private JTextField smtpPasswordField; private JComboBox authTypeCombo; /** * Constructs the MailerVisualizer and initializes its GUI. */ public MailerVisualizer() { super(); setModel(new MailerResultCollector()); // initialize GUI. initGui(); } public JPanel getControlPanel() { return this; } /** * Clears any stored sampling-informations. */ public synchronized void clearData() { if (getModel() != null) { MailerModel model = ((MailerResultCollector) getModel()).getMailerModel(); model.clear(); updateVisualizer(model); } } public void add(final SampleResult res) { if (getModel() != null) { JMeterUtils.runSafe(new Runnable() { public void run() { MailerModel model = ((MailerResultCollector) getModel()).getMailerModel(); // method called by add is synchronized model.add(res);//this is a different model from the one used by the result collector updateVisualizer(model); } }); } } @Override public String toString() { return JMeterUtils.getResString("mailer_string"); // $NON-NLS-1$ } /** * Initializes the GUI. Lays out components and adds them to the container. */ private void initGui() { this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new VerticalPanel(); Border margin = new EmptyBorder(5, 10, 5, 10); this.setBorder(margin); mainPanel.add(makeTitlePanel()); JPanel attributePane = new VerticalPanel(); attributePane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("mailer_title_settings"))); // $NON-NLS-1$ // Settings panes attributePane.add(createMailingSettings()); attributePane.add(createSmtpSettings()); // Test mail button JPanel testerPanel = new JPanel(new BorderLayout()); testerButton = new JButton(JMeterUtils.getResString("mailer_test_mail")); // $NON-NLS-1$ testerButton.addActionListener(this); testerButton.setEnabled(true); testerPanel.add(testerButton, BorderLayout.EAST); attributePane.add(testerPanel); mainPanel.add(attributePane); mainPanel.add(Box.createRigidArea(new Dimension(0,5))); // Failures count JPanel mailerPanel = new JPanel(new BorderLayout()); mailerPanel.add(new JLabel(JMeterUtils.getResString("mailer_failures")), BorderLayout.WEST); // $NON-NLS-1$ failureField = new JTextField(6); failureField.setEditable(false); mailerPanel.add(failureField, BorderLayout.CENTER); mainPanel.add(mailerPanel); this.add(mainPanel, BorderLayout.CENTER); } private JPanel createMailingSettings() { JPanel settingsPane = new JPanel(new BorderLayout()); settingsPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("mailer_title_message"))); // $NON-NLS-1$ JPanel headerPane = new JPanel(new BorderLayout()); headerPane.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0)); JPanel fromPane = new JPanel(new BorderLayout()); fromPane.add(new JLabel(JMeterUtils.getResString("mailer_from")), BorderLayout.WEST); // $NON-NLS-1$ fromField = new JTextField(25); fromField.setEditable(true); fromPane.add(fromField, BorderLayout.CENTER); fromPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.EAST); headerPane.add(fromPane, BorderLayout.WEST); JPanel addressPane = new JPanel(new BorderLayout()); addressPane.add(new JLabel(JMeterUtils.getResString("mailer_addressees")), BorderLayout.WEST); // $NON-NLS-1$ addressField = new JTextField(10); addressField.setEditable(true); addressPane.add(addressField, BorderLayout.CENTER); headerPane.add(addressPane, BorderLayout.CENTER); JPanel successPane = new JPanel(new BorderLayout()); successPane.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0)); JPanel succesSubjectPane = new JPanel(new BorderLayout()); succesSubjectPane.add(new JLabel(JMeterUtils.getResString("mailer_success_subject")), BorderLayout.WEST); // $NON-NLS-1$ successSubjectField = new JTextField(10); successSubjectField.setEditable(true); succesSubjectPane.add(successSubjectField, BorderLayout.CENTER); succesSubjectPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.EAST); successPane.add(succesSubjectPane, BorderLayout.CENTER); JPanel successLimitPane = new JPanel(new BorderLayout()); successLimitPane.add(new JLabel(JMeterUtils.getResString("mailer_success_limit")), BorderLayout.WEST); // $NON-NLS-1$ successLimitField = new JTextField("2", 5); // $NON-NLS-1$ successLimitField.setEditable(true); successLimitPane.add(successLimitField, BorderLayout.CENTER); successPane.add(successLimitPane, BorderLayout.EAST); JPanel failurePane = new JPanel(new BorderLayout()); failurePane.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0)); JPanel failureSubjectPane = new JPanel(new BorderLayout()); failureSubjectPane.add(new JLabel(JMeterUtils.getResString("mailer_failure_subject")), BorderLayout.WEST); // $NON-NLS-1$ failureSubjectField = new JTextField(10); failureSubjectField.setEditable(true); failureSubjectPane.add(failureSubjectField, BorderLayout.CENTER); failureSubjectPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.EAST); failurePane.add(failureSubjectPane, BorderLayout.CENTER); JPanel failureLimitPane = new JPanel(new BorderLayout()); failureLimitPane.add(new JLabel(JMeterUtils.getResString("mailer_failure_limit")), BorderLayout.WEST); // $NON-NLS-1$ failureLimitField = new JTextField("2", 5); // $NON-NLS-1$ failureLimitField.setEditable(true); failureLimitPane.add(failureLimitField, BorderLayout.CENTER); failurePane.add(failureLimitPane, BorderLayout.EAST); settingsPane.add(headerPane, BorderLayout.NORTH); settingsPane.add(successPane, BorderLayout.CENTER); settingsPane.add(failurePane, BorderLayout.SOUTH); return settingsPane; } private JPanel createSmtpSettings() { JPanel settingsPane = new JPanel(new BorderLayout()); settingsPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("mailer_title_smtpserver"))); // $NON-NLS-1$ JPanel hostPane = new JPanel(new BorderLayout()); hostPane.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0)); JPanel smtpHostPane = new JPanel(new BorderLayout()); smtpHostPane.add(new JLabel(JMeterUtils.getResString("mailer_host")), BorderLayout.WEST); // $NON-NLS-1$ smtpHostField = new JTextField(10); smtpHostField.setEditable(true); smtpHostPane.add(smtpHostField, BorderLayout.CENTER); smtpHostPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.EAST); hostPane.add(smtpHostPane, BorderLayout.CENTER); JPanel smtpPortPane = new JPanel(new BorderLayout()); smtpPortPane.add(new JLabel(JMeterUtils.getResString("mailer_port")), BorderLayout.WEST); // $NON-NLS-1$ smtpPortField = new JTextField(10); smtpPortField.setEditable(true); smtpPortPane.add(smtpPortField, BorderLayout.CENTER); hostPane.add(smtpPortPane, BorderLayout.EAST); JPanel authPane = new JPanel(new BorderLayout()); hostPane.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0)); JPanel smtpLoginPane = new JPanel(new BorderLayout()); smtpLoginPane.add(new JLabel(JMeterUtils.getResString("mailer_login")), BorderLayout.WEST); // $NON-NLS-1$ smtpLoginField = new JTextField(10); smtpLoginField.setEditable(true); smtpLoginPane.add(smtpLoginField, BorderLayout.CENTER); smtpLoginPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.EAST); authPane.add(smtpLoginPane, BorderLayout.CENTER); JPanel smtpPasswordPane = new JPanel(new BorderLayout()); smtpPasswordPane.add(new JLabel(JMeterUtils.getResString("mailer_password")), BorderLayout.WEST); // $NON-NLS-1$ smtpPasswordField = new JPasswordField(10); smtpPasswordField.setEditable(true); smtpPasswordPane.add(smtpPasswordField, BorderLayout.CENTER); smtpPasswordPane.add(Box.createRigidArea(new Dimension(5,0)), BorderLayout.EAST); authPane.add(smtpPasswordPane, BorderLayout.EAST); JPanel authTypePane = new JPanel(new BorderLayout()); authTypePane.add(new JLabel(JMeterUtils.getResString("mailer_connection_security")), BorderLayout.WEST); authTypeCombo = new JComboBox(new Object[] { MailerModel.MailAuthType.NONE.toString(), MailerModel.MailAuthType.SSL.toString(), MailerModel.MailAuthType.TLS.toString()}); authTypeCombo.setFont(new Font("SansSerif", Font.PLAIN, 10)); // $NON-NLS-1$ authTypePane.add(authTypeCombo, BorderLayout.CENTER); JPanel credPane = new JPanel(new BorderLayout()); credPane.add(authPane, BorderLayout.CENTER); credPane.add(authTypePane, BorderLayout.EAST); settingsPane.add(hostPane, BorderLayout.NORTH); settingsPane.add(credPane, BorderLayout.CENTER); return settingsPane; } public String getLabelResource() { return "mailer_visualizer_title"; //$NON-NLS-1$ } /** * Returns a String for the title of the attributes-panel as set up in the * properties-file using the lookup-constant "mailer_attributes_panel". * * @return The title of the component. */ public String getAttributesTitle() { return JMeterUtils.getResString("mailer_attributes_panel"); //$NON-NLS-1$ } // //////////////////////////////////////////////////////////// // // Implementation of the ActionListener-Interface. // // //////////////////////////////////////////////////////////// /** * Reacts on an ActionEvent (like pressing a button). * * @param e * The ActionEvent with information about the event and its * source. */ public void actionPerformed(ActionEvent e) { if (e.getSource() == testerButton) { ResultCollector testElement = getModel(); modifyTestElement(testElement); try { MailerModel model = ((MailerResultCollector) testElement).getMailerModel(); model.sendTestMail(); displayMessage(JMeterUtils.getResString("mail_sent"), false); //$NON-NLS-1$ } catch (AddressException ex) { log.error("Invalid mail address ", ex); displayMessage(JMeterUtils.getResString("invalid_mail_address") //$NON-NLS-1$ + "\n" + ex.getMessage(), true); //$NON-NLS-1$ } catch (MessagingException ex) { log.error("Couldn't send mail...", ex); displayMessage(JMeterUtils.getResString("invalid_mail") //$NON-NLS-1$ + "\n" + ex.getMessage(), true); //$NON-NLS-1$ } } } // //////////////////////////////////////////////////////////// // // Methods used to store and retrieve the MailerVisualizer. // // //////////////////////////////////////////////////////////// /** * Restores MailerVisualizer. */ @Override public void configure(TestElement el) { super.configure(el); updateVisualizer(((MailerResultCollector) el).getMailerModel()); } /** * Makes MailerVisualizer storable. */ @Override public TestElement createTestElement() { ResultCollector model = getModel(); if (model == null) { model = new MailerResultCollector(); setModel(model); } modifyTestElement(model); return model; } /** * {@inheritDoc} */ @Override public void modifyTestElement(TestElement c) { super.modifyTestElement(c); MailerModel mailerModel = ((MailerResultCollector) c).getMailerModel(); mailerModel.setFailureLimit(failureLimitField.getText()); mailerModel.setFailureSubject(failureSubjectField.getText()); mailerModel.setFromAddress(fromField.getText()); mailerModel.setSmtpHost(smtpHostField.getText()); mailerModel.setSmtpPort(smtpPortField.getText()); mailerModel.setLogin(smtpLoginField.getText()); mailerModel.setPassword(smtpPasswordField.getText()); mailerModel.setMailAuthType( authTypeCombo.getSelectedItem().toString()); mailerModel.setSuccessLimit(successLimitField.getText()); mailerModel.setSuccessSubject(successSubjectField.getText()); mailerModel.setToAddress(addressField.getText()); } // //////////////////////////////////////////////////////////// // // Methods to implement the ModelListener. // // //////////////////////////////////////////////////////////// /** * Notifies this Visualizer about model-changes. Causes the Visualizer to * query the model about its new state. */ private void updateVisualizer(MailerModel model) { addressField.setText(model.getToAddress()); fromField.setText(model.getFromAddress()); smtpHostField.setText(model.getSmtpHost()); smtpPortField.setText(model.getSmtpPort()); smtpLoginField.setText(model.getLogin()); smtpPasswordField.setText(model.getPassword()); authTypeCombo.setSelectedItem(model.getMailAuthType().toString()); successSubjectField.setText(model.getSuccessSubject()); failureSubjectField.setText(model.getFailureSubject()); failureLimitField.setText(String.valueOf(model.getFailureLimit())); failureField.setText(String.valueOf(model.getFailureCount())); successLimitField.setText(String.valueOf(model.getSuccessLimit())); repaint(); } /** * Shows a message using a DialogBox. */ private void displayMessage(String message, boolean isError) { int type = 0; if (isError) { type = JOptionPane.ERROR_MESSAGE; } else { type = JOptionPane.INFORMATION_MESSAGE; } JOptionPane.showMessageDialog(null, message, isError ? JMeterUtils.getResString("mailer_msg_title_error") : JMeterUtils.getResString("mailer_msg_title_information"), type); } /** * {@inheritDoc} */ @Override public void stateChanged(ChangeEvent e) { if (e.getSource() instanceof MailerModel) { MailerModel testModel = (MailerModel) e.getSource(); updateVisualizer(testModel); } else { super.stateChanged(e); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BarGraph.java0000644000175000017500000000416212032647216026611 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Color; import javax.swing.JCheckBox; import org.apache.jmeter.util.JMeterUtils; public class BarGraph { private String label; private JCheckBox chkBox; private Color backColor; /** * @param resString * @param checked * @param backColor */ public BarGraph(String resString, boolean checked, Color backColor) { super(); this.label = JMeterUtils.getResString(resString); this.chkBox = new JCheckBox(this.label, checked); this.backColor = backColor; } /** * @return the label */ public String getLabel() { return label; } /** * @param label the label to set */ public void setLabel(String label) { this.label = label; } /** * @return the chkBox */ public JCheckBox getChkBox() { return chkBox; } /** * @param chkBox the chkBox to set */ public void setChkBox(JCheckBox chkBox) { this.chkBox = chkBox; } /** * @return the backColor */ public Color getBackColor() { return backColor; } /** * @param backColor the backColor to set */ public void setBackColor(Color backColor) { this.backColor = backColor; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/SummaryReport.java0000644000175000017500000002417312032647216027760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.table.TableCellRenderer; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.Calculator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.gui.NumberRenderer; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.gui.RateRenderer; import org.apache.jorphan.gui.RendererUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Simpler (lower memory) version of Aggregate Report (StatVisualizer). * Excludes the Median and 90% columns, which are expensive in memory terms */ public class SummaryReport extends AbstractVisualizer implements Clearable, ActionListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String USE_GROUP_NAME = "useGroupName"; //$NON-NLS-1$ private static final String SAVE_HEADERS = "saveHeaders"; //$NON-NLS-1$ private static final String[] COLUMNS = { "sampler_label", //$NON-NLS-1$ "aggregate_report_count", //$NON-NLS-1$ "average", //$NON-NLS-1$ "aggregate_report_min", //$NON-NLS-1$ "aggregate_report_max", //$NON-NLS-1$ "aggregate_report_stddev", //$NON-NLS-1$ "aggregate_report_error%", //$NON-NLS-1$ "aggregate_report_rate", //$NON-NLS-1$ "aggregate_report_bandwidth", //$NON-NLS-1$ "average_bytes", //$NON-NLS-1$ }; private final String TOTAL_ROW_LABEL = JMeterUtils.getResString("aggregate_report_total_label"); //$NON-NLS-1$ private JTable myJTable; private JScrollPane myScrollPane; private final JButton saveTable = new JButton(JMeterUtils.getResString("aggregate_graph_save_table")); //$NON-NLS-1$ private final JCheckBox saveHeaders = // should header be saved with the data? new JCheckBox(JMeterUtils.getResString("aggregate_graph_save_table_header"),true); //$NON-NLS-1$ private final JCheckBox useGroupName = new JCheckBox(JMeterUtils.getResString("aggregate_graph_use_group_name")); //$NON-NLS-1$ private transient ObjectTableModel model; /** * Lock used to protect tableRows update + model update */ private final transient Object lock = new Object(); private final Map tableRows = new ConcurrentHashMap(); // Column renderers private static final TableCellRenderer[] RENDERERS = new TableCellRenderer[]{ null, // Label null, // count null, // Mean null, // Min null, // Max new NumberRenderer("#0.00"), // Std Dev. new NumberRenderer("#0.00%"), // Error %age new RateRenderer("#.0"), // Throughpur new NumberRenderer("#0.00"), // kB/sec new NumberRenderer("#.0"), // avg. pageSize }; public SummaryReport() { super(); model = new ObjectTableModel(COLUMNS, Calculator.class,// All rows have this class new Functor[] { new Functor("getLabel"), //$NON-NLS-1$ new Functor("getCount"), //$NON-NLS-1$ new Functor("getMeanAsNumber"), //$NON-NLS-1$ new Functor("getMin"), //$NON-NLS-1$ new Functor("getMax"), //$NON-NLS-1$ new Functor("getStandardDeviation"), //$NON-NLS-1$ new Functor("getErrorPercentage"), //$NON-NLS-1$ new Functor("getRate"), //$NON-NLS-1$ new Functor("getKBPerSecond"), //$NON-NLS-1$ new Functor("getAvgPageBytes"), //$NON-NLS-1$ }, new Functor[] { null, null, null, null, null, null, null, null , null, null }, new Class[] { String.class, Long.class, Long.class, Long.class, Long.class, String.class, String.class, String.class, String.class, String.class }); clearData(); init(); } /** @deprecated - only for use in testing */ @Deprecated public static boolean testFunctors(){ SummaryReport instance = new SummaryReport(); return instance.model.checkFunctors(null,instance.getClass()); } public String getLabelResource() { return "summary_report"; //$NON-NLS-1$ } public void add(final SampleResult res) { final String sampleLabel = res.getSampleLabel(useGroupName.isSelected()); JMeterUtils.runSafe(new Runnable() { public void run() { Calculator row = null; synchronized (lock) { row = tableRows.get(sampleLabel); if (row == null) { row = new Calculator(sampleLabel); tableRows.put(row.getLabel(), row); model.insertRow(row, model.getRowCount() - 1); } } /* * Synch is needed because multiple threads can update the counts. */ synchronized(row) { row.addSample(res); } Calculator tot = tableRows.get(TOTAL_ROW_LABEL); synchronized(tot) { tot.addSample(res); } model.fireTableDataChanged(); } }); } /** * Clears this visualizer and its model, and forces a repaint of the table. */ public void clearData() { //Synch is needed because a clear can occur while add occurs synchronized (lock) { model.clearData(); tableRows.clear(); tableRows.put(TOTAL_ROW_LABEL, new Calculator(TOTAL_ROW_LABEL)); model.addRow(tableRows.get(TOTAL_ROW_LABEL)); } } /** * Main visualizer setup. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new JPanel(); Border margin = new EmptyBorder(10, 10, 5, 10); mainPanel.setBorder(margin); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.add(makeTitlePanel()); myJTable = new JTable(model); myJTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); myJTable.setPreferredScrollableViewportSize(new Dimension(500, 70)); RendererUtils.applyRenderers(myJTable, RENDERERS); myScrollPane = new JScrollPane(myJTable); this.add(mainPanel, BorderLayout.NORTH); this.add(myScrollPane, BorderLayout.CENTER); saveTable.addActionListener(this); JPanel opts = new JPanel(); opts.add(useGroupName, BorderLayout.WEST); opts.add(saveTable, BorderLayout.CENTER); opts.add(saveHeaders, BorderLayout.EAST); this.add(opts,BorderLayout.SOUTH); } @Override public void modifyTestElement(TestElement c) { super.modifyTestElement(c); c.setProperty(USE_GROUP_NAME, useGroupName.isSelected(), false); c.setProperty(SAVE_HEADERS, saveHeaders.isSelected(), true); } @Override public void configure(TestElement el) { super.configure(el); useGroupName.setSelected(el.getPropertyAsBoolean(USE_GROUP_NAME, false)); saveHeaders.setSelected(el.getPropertyAsBoolean(SAVE_HEADERS, true)); } public void actionPerformed(ActionEvent ev) { if (ev.getSource() == saveTable) { JFileChooser chooser = FileDialoger.promptToSaveFile("summary.csv");//$NON-NLS-1$ if (chooser == null) { return; } FileWriter writer = null; try { writer = new FileWriter(chooser.getSelectedFile()); CSVSaveService.saveCSVStats(model,writer, saveHeaders.isSelected()); } catch (FileNotFoundException e) { log.warn(e.getMessage()); } catch (IOException e) { log.warn(e.getMessage()); } finally { JOrphanUtils.closeQuietly(writer); } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/AccumListener.java0000644000175000017500000000162512032647216027662 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; public interface AccumListener { void updateGui(RunningSample s); } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/JSR223ListenerResources_fr.properties0000644000175000017500000000326612032647216033357 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=R\u00E9cepteur JSR 223 filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage JSR223 appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage JSR223, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props sampleResult (avant prev) sampleEvent sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RenderAsText.java0000644000175000017500000000322512032647216027472 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; public class RenderAsText extends SamplerResultTab implements ResultRenderer { /** {@inheritDoc} */ public void renderResult(SampleResult sampleResult) { String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); showTextResponse(response); } private void showTextResponse(String response) { results.setContentType("text/plain"); // $NON-NLS-1$ results.setText(response == null ? "" : response); // $NON-NLS-1$ results.setCaretPosition(0); resultsScrollPane.setViewportView(results); } /** {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("view_results_render_text"); // $NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/SimpleDataWriter.java0000644000175000017500000000440012032647216030336 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; /******************************************************************************* * This listener can record results to a file but not to the UI. It is meant to * provide an efficient means of recording data by eliminating GUI overhead. * ******************************************************************************/ public class SimpleDataWriter extends AbstractVisualizer { private static final long serialVersionUID = 240L; /*************************************************************************** * Create the SimpleDataWriter. **************************************************************************/ public SimpleDataWriter() { init(); setName(getStaticLabel()); } public String getLabelResource() { return "simple_data_writer_title"; // $NON-NLS-1$ } /** * Initialize the component in the UI */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } /** * Does nothing, but required by interface. */ public void clearData() { } /** * Does nothing, but required by interface. * * @param sample * ignored */ public void add(SampleResult sample) { } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/ComparisonVisualizer.java0000644000175000017500000001433112032647216031312 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.assertions.CompareAssertionResult; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; public class ComparisonVisualizer extends AbstractVisualizer implements Clearable { private static final long serialVersionUID = 240L; private JTree resultsTree; private DefaultTreeModel treeModel; private DefaultMutableTreeNode root; private JTextPane base, secondary; public ComparisonVisualizer() { super(); init(); } public void add(final SampleResult sample) { JMeterUtils.runSafe(new Runnable() { public void run() { DefaultMutableTreeNode currNode = new DefaultMutableTreeNode(sample); treeModel.insertNodeInto(currNode, root, root.getChildCount()); if (root.getChildCount() == 1) { resultsTree.expandPath(new TreePath(root)); } } }); } public String getLabelResource() { return "comparison_visualizer_title"; //$NON-NLS-1$ } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); split.add(getTreePanel()); split.add(getSideBySidePanel()); add(split, BorderLayout.CENTER); } private JComponent getSideBySidePanel() { JPanel main = new JPanel(new GridLayout(1, 2)); JScrollPane base = new JScrollPane(getBaseTextPane()); base.setPreferredSize(base.getMinimumSize()); JScrollPane secondary = new JScrollPane(getSecondaryTextPane()); secondary.setPreferredSize(secondary.getMinimumSize()); main.add(base); main.add(secondary); main.setPreferredSize(main.getMinimumSize()); return main; } private JTextPane getBaseTextPane() { base = new JTextPane(); base.setEditable(false); base.setBackground(getBackground()); return base; } private JTextPane getSecondaryTextPane() { secondary = new JTextPane(); secondary.setEditable(false); return secondary; } private JComponent getTreePanel() { root = new DefaultMutableTreeNode("Root"); //$NON-NLS-1$ treeModel = new DefaultTreeModel(root); resultsTree = new JTree(treeModel); resultsTree.setCellRenderer(new TreeNodeRenderer()); resultsTree.setCellRenderer(new TreeNodeRenderer()); resultsTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); resultsTree.addTreeSelectionListener(new Selector()); resultsTree.setRootVisible(false); resultsTree.setShowsRootHandles(true); JScrollPane treePane = new JScrollPane(resultsTree); treePane.setPreferredSize(new Dimension(150, 50)); JPanel panel = new JPanel(new GridLayout(1, 1)); panel.add(treePane); return panel; } private class Selector implements TreeSelectionListener { /** * {@inheritDoc} */ public void valueChanged(TreeSelectionEvent e) { try { DefaultMutableTreeNode node = (DefaultMutableTreeNode) resultsTree.getLastSelectedPathComponent(); SampleResult sr = (SampleResult) node.getUserObject(); AssertionResult[] results = sr.getAssertionResults(); CompareAssertionResult result = null; for (AssertionResult r : results) { if (r instanceof CompareAssertionResult) { result = (CompareAssertionResult) r; break; } } if (result == null) { result = new CompareAssertionResult(getName()); } base.setText(result.getBaseResult()); secondary.setText(result.getSecondaryResult()); } catch (Exception err) { base.setText(JMeterUtils.getResString("comparison_invalid_node") + err); //$NON-NLS-1$ secondary.setText(JMeterUtils.getResString("comparison_invalid_node") + err); //$NON-NLS-1$ } base.setCaretPosition(0); secondary.setCaretPosition(0); } } public void clearData() { while (root.getChildCount() > 0) { // the child to be removed will always be 0 'cos as the nodes are // removed the nth node will become (n-1)th treeModel.removeNodeFromParent((DefaultMutableTreeNode) root.getChildAt(0)); base.setText(""); //$NON-NLS-1$ secondary.setText(""); //$NON-NLS-1$ } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/LineGraph.java0000644000175000017500000002060312032647216026772 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.LayoutManager; import java.awt.Paint; import java.awt.Shape; import java.awt.Stroke; import javax.swing.JPanel; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.jCharts.axisChart.AxisChart; import org.jCharts.chartData.AxisChartDataSet; import org.jCharts.chartData.DataSeries; import org.jCharts.properties.AxisProperties; import org.jCharts.properties.ChartProperties; import org.jCharts.properties.DataAxisProperties; import org.jCharts.properties.LegendProperties; import org.jCharts.properties.LineChartProperties; import org.jCharts.properties.PointChartProperties; import org.jCharts.types.ChartType; /** * * Axis graph is used by StatGraphVisualizer, which generates bar graphs * from the statistical data. */ public class LineGraph extends JPanel { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); protected double[][] data = null; protected String title, xAxisTitle, yAxisTitle; protected String[] xAxisLabels, yAxisLabel; protected int width, height; private static final Shape[] SHAPE_ARRAY = {PointChartProperties.SHAPE_CIRCLE, PointChartProperties.SHAPE_DIAMOND,PointChartProperties.SHAPE_SQUARE, PointChartProperties.SHAPE_TRIANGLE}; /** * 12 basic colors for line graphs. If we need more colors than this, * we can add more. Though more than 12 lines per graph will look * rather busy and be hard to read. */ private static final Paint[] PAINT_ARRAY = {Color.black, Color.blue,Color.green,Color.magenta,Color.orange, Color.red,Color.yellow,Color.darkGray,Color.gray,Color.lightGray, Color.pink,Color.cyan}; protected int shape_counter = 0; protected int paint_counter = -1; /** * */ public LineGraph() { super(); } /** * @param layout */ public LineGraph(LayoutManager layout) { super(layout); } /** * @param layout * @param isDoubleBuffered */ public LineGraph(LayoutManager layout, boolean isDoubleBuffered) { super(layout, isDoubleBuffered); } public void setData(double[][] data) { this.data = data; } public void setTitle(String title) { this.title = title; } public void setXAxisTitle(String title) { this.xAxisTitle = title; } public void setYAxisTitle(String title) { this.yAxisTitle = title; } public void setXAxisLabels(String[] labels) { this.xAxisLabels = labels; } public void setYAxisLabels(String[] label) { this.yAxisLabel = label; } public void setWidth(int w) { this.width = w; } public void setHeight(int h) { this.height = h; } @Override public void paintComponent(Graphics g) { // reset the paint counter this.paint_counter = -1; if (data != null && this.title != null && this.xAxisLabels != null && this.xAxisTitle != null && this.yAxisLabel != null && this.yAxisTitle != null) { drawSample(this.title,this.xAxisLabels,this.xAxisTitle, this.yAxisTitle,this.data,this.width,this.height,g); } } private void drawSample(String _title, String[] _xAxisLabels, String _xAxisTitle, String _yAxisTitle, double[][] _data, int _width, int _height, Graphics g) { try { if (_width == 0) { _width = 450; } if (_height == 0) { _height = 250; } this.setPreferredSize(new Dimension(_width,_height)); DataSeries dataSeries = new DataSeries( _xAxisLabels, _xAxisTitle, _yAxisTitle, _title ); String[] legendLabels= yAxisLabel; Paint[] paints = this.createPaint(_data.length); Shape[] shapes = createShapes(_data.length); Stroke[] lstrokes = createStrokes(_data.length); LineChartProperties lineChartProperties= new LineChartProperties(lstrokes,shapes); AxisChartDataSet axisChartDataSet= new AxisChartDataSet( _data, legendLabels, paints, ChartType.LINE, lineChartProperties ); dataSeries.addIAxisPlotDataSet( axisChartDataSet ); ChartProperties chartProperties = new ChartProperties(); AxisProperties axisProperties = new AxisProperties(); // show the grid lines, to turn it off, set it to zero axisProperties.getYAxisProperties().setShowGridLines(1); axisProperties.setXAxisLabelsAreVertical(true); // set the Y Axis to round DataAxisProperties daxp = (DataAxisProperties)axisProperties.getYAxisProperties(); daxp.setRoundToNearest(1); LegendProperties legendProperties = new LegendProperties(); AxisChart axisChart = new AxisChart( dataSeries, chartProperties, axisProperties, legendProperties, _width, _height ); axisChart.setGraphics2D((Graphics2D) g); axisChart.render(); } catch (Exception e) { log.error(e.getMessage()); } } /** * Since we only have 4 shapes, the method will start with the * first shape and keep cycling through the shapes in order. * @param count * @return the first n shapes */ public Shape[] createShapes(int count) { Shape[] shapes = new Shape[count]; for (int idx=0; idx < count; idx++) { shapes[idx] = nextShape(); } return shapes; } /** * Return the next shape * @return the next shape */ public Shape nextShape() { this.shape_counter++; if (shape_counter >= (SHAPE_ARRAY.length - 1)) { shape_counter = 0; } return SHAPE_ARRAY[shape_counter]; } /** * * @param count * @return the first count strokes */ public Stroke[] createStrokes(int count) { Stroke[] str = new Stroke[count]; for (int idx=0; idx < count; idx++) { str[idx] = nextStroke(); } return str; } /** * method always return a new BasicStroke with 1.0f weight * @return a new BasicStroke with 1.0f weight */ public Stroke nextStroke() { return new BasicStroke(1.0f); } /** * return an array of Paint with different colors. The current * implementation will cycle through 12 colors if a line graph * has more than 12 entries * @param count * @return an array of Paint with different colors */ public Paint[] createPaint(int count) { Paint[] pts = new Paint[count]; for (int idx=0; idx < count; idx++) { pts[idx] = nextPaint(); } return pts; } /** * The method will return the next paint color in the PAINT_ARRAY. * Rather than return a random color, we want it to always go through * the same sequence. This way, the same charts will always use the * same color and make it easier to compare side by side. * @return the next paint color in the PAINT_ARRAY */ public Paint nextPaint() { this.paint_counter++; if (this.paint_counter == (PAINT_ARRAY.length - 1)) { this.paint_counter = 0; } return PAINT_ARRAY[this.paint_counter]; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/ResultRenderer.java0000644000175000017500000000273712032647216030076 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ /** * */ package org.apache.jmeter.visualizers; import java.awt.Color; import javax.swing.JTabbedPane; import org.apache.jmeter.samplers.SampleResult; /** * Interface to results render */ public interface ResultRenderer { void clearData(); void init(); void setupTabPane(); void setLastSelectedTab(int index); void setRightSide(JTabbedPane rightSide); void setSamplerResult(Object userObject); void renderResult(SampleResult sampleResult); void renderImage(SampleResult sampleResult); /** * * @return the string to be displayed by the ComboBox */ String toString(); void setBackgroundColor(Color backGround); } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources.properties0000644000175000017500000000271612032647216033637 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell Listener filename.displayName=File Name filename.shortDescription=BeanShell script file (overrides script) filenameGroup.displayName=Script file (overrides script) parameterGroup.displayName=Parameters to be passed to BeanShell (=> String Parameters and String []bsh.args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to BeanShell (file or script) resetGroup.displayName=Reset bsh.Interpreter before each call resetInterpreter.displayName=Reset Interpreter script.displayName=Script script.shortDescription=Beanshell script scripting.displayName=Script (variables: ctx vars props sampleEvent sampleResult log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BSFListenerResources.properties0000644000175000017500000000312612032647216032410 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BSF Listener scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of BSF language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props sampleResult (aka prev) sampleEvent sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate BSF language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/Graph.java0000644000175000017500000001646412032647216026174 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Rectangle; import java.util.Iterator; import java.util.List; import javax.swing.JComponent; import javax.swing.Scrollable; import javax.swing.SwingUtilities; import org.apache.jmeter.gui.util.JMeterColor; import org.apache.jmeter.samplers.Clearable; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Implements a simple graph for displaying performance results. * */ public class Graph extends JComponent implements Scrollable, Clearable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private boolean wantData = true; private boolean wantAverage = true; private boolean wantDeviation = true; private boolean wantThroughput = true; private boolean wantMedian = true; private CachingStatCalculator model; private static final int width = 2000; private long graphMax = 1; private double throughputMax = 1; /** * Constructor for the Graph object. */ public Graph() { this.setPreferredSize(new Dimension(width, 100)); } /** * Constructor for the Graph object. */ public Graph(CachingStatCalculator model) { this(); this.model = model; } /** * Gets the PreferredScrollableViewportSize attribute of the Graph object. * * @return the PreferredScrollableViewportSize value */ public Dimension getPreferredScrollableViewportSize() { return this.getPreferredSize(); // return new Dimension(width, 400); } /** * Gets the ScrollableUnitIncrement attribute of the Graph object. * * @return the ScrollableUnitIncrement value */ public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { return 5; } /** * Gets the ScrollableBlockIncrement attribute of the Graph object. * * @return the ScrollableBlockIncrement value */ public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { return (int) (visibleRect.width * .9); } /** * Gets the ScrollableTracksViewportWidth attribute of the Graph object. * * @return the ScrollableTracksViewportWidth value */ public boolean getScrollableTracksViewportWidth() { return false; } /** * Gets the ScrollableTracksViewportHeight attribute of the Graph object. * * @return the ScrollableTracksViewportHeight value */ public boolean getScrollableTracksViewportHeight() { return true; } /** * Clears this graph. */ public void clearData() { graphMax = 1; throughputMax = 1; } public void enableData(boolean value) { this.wantData = value; } public void enableAverage(boolean value) { this.wantAverage = value; } public void enableMedian(boolean value) { this.wantMedian = value; } public void enableDeviation(boolean value) { this.wantDeviation = value; } public void enableThroughput(boolean value) { this.wantThroughput = value; } public void updateGui(final Sample oneSample) { long h = model.getPercentPoint((float) 0.90).longValue(); boolean repaint = false; if ((oneSample.getCount() % 20 == 0 || oneSample.getCount() < 20) && h > (graphMax * 1.2) || graphMax > (h * 1.2)) { if (h >= 1) { graphMax = h; } else { graphMax = 1; } repaint = true; } if (model.getMaxThroughput() > throughputMax) { throughputMax = model.getMaxThroughput() * 1.3; repaint = true; } if (repaint) { repaint(); return; } final long xPos = model.getCount(); SwingUtilities.invokeLater(new Runnable() { public void run() { Graphics g = getGraphics(); if (g != null) { drawSample(xPos, oneSample, g); } } }); } /** {@inheritDoc}} */ @Override public void paintComponent(Graphics g) { super.paintComponent(g); List samples = model.getSamples(); synchronized (samples ) { Iterator e = samples.iterator(); for (int i = 0; e.hasNext(); i++) { Sample s = e.next(); drawSample(i, s, g); } } } private void drawSample(long x, Sample oneSample, Graphics g) { // int width = getWidth(); int height = getHeight(); log.debug("Drawing a sample at " + x); int adjustedWidth = (int)(x % width); // will always be within range of an int: as must be < width if (wantData) { int data = (int) (oneSample.getData() * height / graphMax); if (oneSample.isSuccess()) { g.setColor(Color.black); } else { g.setColor(Color.YELLOW); } g.drawLine(adjustedWidth, height - data, adjustedWidth, height - data - 1); if (log.isDebugEnabled()) { log.debug("Drawing coords = " + adjustedWidth + "," + (height - data)); } } if (wantAverage) { int average = (int) (oneSample.getAverage() * height / graphMax); g.setColor(Color.blue); g.drawLine(adjustedWidth, height - average, adjustedWidth, (height - average - 1)); } if (wantMedian) { int median = (int) (oneSample.getMedian() * height / graphMax); g.setColor(JMeterColor.purple); g.drawLine(adjustedWidth, height - median, adjustedWidth, (height - median - 1)); } if (wantDeviation) { int deviation = (int) (oneSample.getDeviation() * height / graphMax); g.setColor(Color.red); g.drawLine(adjustedWidth, height - deviation, adjustedWidth, (height - deviation - 1)); } if (wantThroughput) { int throughput = (int) (oneSample.getThroughput() * height / throughputMax); g.setColor(JMeterColor.dark_green); g.drawLine(adjustedWidth, height - throughput, adjustedWidth, (height - throughput - 1)); } } /** * @return Returns the graphMax. */ public long getGraphMax() { return graphMax; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/utils/0000755000175000017500000000000012165514773025425 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/utils/colors.properties0000644000175000017500000000247612032647216031045 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Color order. Keys separate by comma. order=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 # R,G,B code 1=7,4,56 2=220,20,60 3=0,139,69 4=255,193,37 5=139,0,139 6=91,91,91 7=255,106,106 8=205,91,69 9=0,205,205 10=176,23,31 11=0,178,238 12=139,139,0 13=238,0,238 14=3,168,158 15=139,54,38 16=143,188,143 17=184,184,184 18=113,198,113 19=255,105,180 20=135,206,255 21=124,252,0 22=79,148,205 23=10,10,10 24=139,131,120 25=64,224,208 26=198,113,113 27=255,0,255 28=205,104,137 29=192,255,62 30=197,193,170apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/utils/Colors.java0000644000175000017500000000715012032647216027524 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers.utils; import java.awt.Color; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.swing.JOptionPane; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class Colors { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String ENTRY_SEP = ","; //$NON-NLS-1$ private static final String ORDER_PROP_NAME = "order"; //$NON-NLS-1$ protected static final String DEFAULT_COLORS_PROPERTY_FILE = "org/apache/jmeter/visualizers/utils/colors.properties"; //$NON-NLS-1$ protected static final String USER_DEFINED_COLORS_PROPERTY_FILE = "jmeter.colors"; //$NON-NLS-1$ private static final String COLORS_ORDER = "jmeter.order"; /** * Parse icon set file. * @return List of icons/action definition */ public static List getColors() { Properties defaultProps = JMeterUtils.loadProperties(DEFAULT_COLORS_PROPERTY_FILE); if (defaultProps == null) { JOptionPane.showMessageDialog(null, JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JOptionPane.WARNING_MESSAGE); return null; } Properties p; String userProp = JMeterUtils.getProperty(USER_DEFINED_COLORS_PROPERTY_FILE); if (userProp != null){ p = JMeterUtils.loadProperties(userProp, defaultProps); } else { p=defaultProps; } String order = JMeterUtils.getPropDefault(COLORS_ORDER, p.getProperty(ORDER_PROP_NAME)); if (order == null) { log.warn("Could not find order list"); JOptionPane.showMessageDialog(null, JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JMeterUtils.getResString("toolbar_icon_set_not_found"), // $NON-NLS-1$ JOptionPane.WARNING_MESSAGE); return null; } String[] oList = order.split(ENTRY_SEP); List listColors = new ArrayList(); for (String key : oList) { String trimmed = key.trim(); String property = p.getProperty(trimmed); try { String[] lcol = property.split(ENTRY_SEP); Color itb = new Color(Integer.parseInt(lcol[0]), Integer.parseInt(lcol[1]), Integer.parseInt(lcol[2])); listColors.add(itb); } catch (java.lang.Exception e) { log.warn("Error in colors.properties, current property=" + property); // $NON-NLS-1$ } } return listColors; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RequestView.java0000644000175000017500000000310412032647216027401 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import javax.swing.JPanel; /** * Interface for request panel in View Results Tree * All classes which implements this interface is display * on bottom tab in request panel * */ public interface RequestView { /** * Init the panel */ void init(); /** * Clear all data in panel */ void clearData(); /** * Put the result bean to display in panel * @param userObject result to display */ void setSamplerResult(Object userObject); /** * Get the panel * @return the panel viewer */ JPanel getPanel(); /** * Get the label. Use as name for bottom tab * @return the label's panel */ String getLabel(); // return label } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/DistributionGraph.java0000644000175000017500000001623512032647216030570 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Rectangle; import java.util.Arrays; import java.util.Collection; import javax.swing.JComponent; import javax.swing.Scrollable; import org.apache.jmeter.samplers.Clearable; // import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.math.NumberComparator; /** * New graph for drawing distribution graph of the results. It is intended as a * way to view the data after the stress has been performed. Although it can be * used at runtime, it is not recommended, since it is rather intensive. The * graph will draw a red line at 90% and an orange line at 50%. I like * distribution graphs because they allow me to see how the data clumps. In * general, the data will tend to clump in predictable ways when the application * is well designed and implemented. Data that generates erratic graphs are * generally not desirable. * */ public class DistributionGraph extends JComponent implements Scrollable, Clearable { private static final long serialVersionUID = 240L; private SamplingStatCalculator model; private static final int xborder = 30; /** * Constructor for the Graph object. */ public DistributionGraph() { init(); } /** * Constructor for the Graph object. */ public DistributionGraph(SamplingStatCalculator model) { this(); setModel(model); } private void init() {// called from ctor, so must not be overridable repaint(); } /** * Gets the ScrollableTracksViewportWidth attribute of the Graph object. * * @return the ScrollableTracksViewportWidth value */ public boolean getScrollableTracksViewportWidth() { return true; } /** * Gets the ScrollableTracksViewportHeight attribute of the Graph object. * * @return the ScrollableTracksViewportHeight value */ public boolean getScrollableTracksViewportHeight() { return true; } /** * Sets the Model attribute of the Graph object. */ private void setModel(Object model) { this.model = (SamplingStatCalculator) model; repaint(); } /** * Gets the PreferredScrollableViewportSize attribute of the Graph object. * * @return the PreferredScrollableViewportSize value */ public Dimension getPreferredScrollableViewportSize() { return this.getPreferredSize(); } /** * Gets the ScrollableUnitIncrement attribute of the Graph object. * * @return the ScrollableUnitIncrement value */ public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) { return 5; } /** * Gets the ScrollableBlockIncrement attribute of the Graph object. * * @return the ScrollableBlockIncrement value */ public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) { return (int) (visibleRect.width * .9); } /** * Clears this graph. */ public void clearData() { model.clear(); } /** * Method is responsible for calling drawSample and updating the graph. */ @Override public void paintComponent(Graphics g) { super.paintComponent(g); final SamplingStatCalculator m = this.model; synchronized (m) { drawSample(m, g); } } private void drawSample(SamplingStatCalculator p_model, Graphics g) { int width = getWidth(); double height = getHeight() - 1.0; // first lets draw the grid for (int y = 0; y < 4; y++) { int q1 = (int) (height - (height * 0.25 * y)); g.setColor(Color.lightGray); g.drawLine(xborder, q1, width, q1); g.setColor(Color.black); g.drawString(String.valueOf((25 * y) + "%"), 0, q1); } g.setColor(Color.black); // draw the X axis g.drawLine(xborder, (int) height, width, (int) height); // draw the Y axis g.drawLine(xborder, 0, xborder, (int) height); // the test plan has to have more than 200 samples // for it to generate half way decent distribution // graph. the larger the sample, the better the // results. if (p_model != null && p_model.getCount() > 50) { // now draw the bar chart Number ninety = p_model.getPercentPoint(0.90); Number fifty = p_model.getPercentPoint(0.50); long total = p_model.getCount(); Collection values = p_model.getDistribution().values(); Number[][] objval = values.toArray(new Number[values.size()][]); // we sort the objects Arrays.sort(objval, new NumberComparator()); int len = objval.length; for (int count = 0; count < len; count++) { // calculate the height Number[] num = objval[count]; double iper = (double) num[1].intValue() / (double) total; double iheight = height * iper; // if the height is less than one, we set it // to one pixel if (iheight < 1) { iheight = 1.0; } int ix = (count * 4) + xborder + 5; int dheight = (int) (height - iheight); g.setColor(Color.blue); g.drawLine(ix - 1, (int) height, ix - 1, dheight); g.drawLine(ix, (int) height, ix, dheight); g.setColor(Color.black); // draw a red line for 90% point if (num[0].longValue() == ninety.longValue()) { g.setColor(Color.red); g.drawLine(ix, (int) height, ix, 55); g.drawLine(ix, 35, ix, 0); g.drawString("90%", ix - 30, 20); g.drawString(String.valueOf(num[0].longValue()), ix + 8, 20); } // draw an orange line for 50% point if (num[0].longValue() == fifty.longValue()) { g.setColor(Color.orange); g.drawLine(ix, (int) height, ix, 30); g.drawString("50%", ix - 30, 50); g.drawString(String.valueOf(num[0].longValue()), ix + 8, 50); } } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/ModelListener.java0000644000175000017500000000236712032647216027676 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; /** * The Interface to be implemented by any class that wants to be notified by * model which makes use of this callback-Interface. * */ public interface ModelListener { /** * Informs the Visualizer that the model has changed. */ void updateVisualizer(); /** * Informs the Visualizer that a message should be displayed. */ void displayMessage(String messageString, boolean isError); } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BSFListenerBeanInfo.java0000644000175000017500000000201212032647216030635 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.util.BSFBeanInfoSupport; public class BSFListenerBeanInfo extends BSFBeanInfoSupport { public BSFListenerBeanInfo() { super(BSFListener.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/Spline3.java0000644000175000017500000003471512032647216026447 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /* * TODO : - implement ImageProducer interface - suggestions ;-) */ /** * This class implements the representation of an interpolated Spline curve. *

        * The curve described by such an object interpolates an arbitrary number of * fixed points called nodes. The distance between two nodes should * currently be constant. This is about to change in a later version but it can * last a while as it's not really needed. Nevertheless, if you need the * feature, just write me * a note and I'll write it asap. *

        * The interpolated Spline curve can't be described by an polynomial analytic * equation, the degree of which would be as high as the number of nodes, which * would cause extreme oscillations of the curve on the edges. *

        * The solution is to split the curve accross a lot of little intervals : * an interval starts at one node and ends at the next one. Then, the * interpolation is done on each interval, according to the following conditions : *

          *
        1. the interpolated curve is degree 3 : it's a cubic curve ; *
        2. the interpolated curve contains the two points delimiting the interval. * This condition obviously implies the curve is continuous ; *
        3. the interpolated curve has a smooth slope : the curvature has to be the * same on the left and the right sides of each node ; *
        4. the curvature of the global curve is 0 at both edges. *
        * Every part of the global curve is represented by a cubic (degree-3) * polynomial, the coefficients of which have to be computed in order to meet * the above conditions. *

        * This leads to a n-unknow n-equation system to resolve. One can resolve an * equation system by several manners ; this class uses the Jacobi iterative * method, particularly well adapted to this situation, as the diagonal of the * system matrix is strong compared to the other elements. This implies the * algorithm always converges ! This is not the case of the Gauss-Seidel * algorithm, which is quite faster (it uses intermediate results of each * iteration to speed up the convergence) but it doesn't converge in all the * cases or it converges to a wrong value. This is not acceptable and that's why * the Jacobi method is safer. Anyway, the gain of speed is about a factor of 3 * but, for a 100x100 system, it means 10 ms instead of 30 ms, which is a pretty * good reason not to explore the question any further :) *

        * Here is a little piece of code showing how to use this class : * *

         // ... float[] nodes = {3F, 2F, 4F, 1F, 2.5F, 5F, 3F}; Spline3 curve =
         * new Spline3(nodes); // ... public void paint(Graphics g) { int[] plot =
         * curve.getPlots(); for (int i = 1; i < n; i++) { g.drawLine(i - 1, plot[i -
         * 1], i, plot[i]); } } // ...
         *
         * 
        * */ public class Spline3 { private static final Logger log = LoggingManager.getLoggerForClass(); protected float[][] _coefficients; protected float[][] _A; protected float[] _B; protected float[] _r; protected float[] _rS; protected int _m; // number of nodes protected int _n; // number of non extreme nodes (_m-2) static final protected float DEFAULT_PRECISION = (float) 1E-1; static final protected int DEFAULT_MAX_ITERATIONS = 100; protected float _minPrecision = DEFAULT_PRECISION; protected int _maxIterations = DEFAULT_MAX_ITERATIONS; /** * Creates a new Spline curve by calculating the coefficients of each part * of the curve, i.e. by resolving the equation system implied by the * interpolation condition on every interval. * * @param r * an array of float containing the vertical coordinates of the * nodes to interpolate ; the vertical coordinates start at 0 and * are equidistant with a step of 1. */ public Spline3(float[] r) { int n = r.length; // the number of nodes is defined by the length of r this._m = n; // grab the nodes this._r = new float[n]; System.arraycopy(r, 0, _r, 0, _r.length); // the number of non extreme nodes is the number of intervals // minus 1, i.e. the length of r minus 2 this._n = n - 2; // computes interpolation coefficients try { long startTime = System.currentTimeMillis(); this.interpolation(); if (log.isDebugEnabled()) { long endTime = System.currentTimeMillis(); long elapsedTime = endTime - startTime; if (log.isDebugEnabled()) { log.debug("New Spline curve interpolated in "); log.debug(elapsedTime + " ms"); } } } catch (Exception e) { log.error("Error when interpolating : ", e); } } /** * Computes the coefficients of the Spline interpolated curve, on each * interval. The matrix system to resolve is AX=B */ protected void interpolation() { // creation of the interpolation structure _rS = new float[_m]; _B = new float[_n]; _A = new float[_n][_n]; _coefficients = new float[_n + 1][4]; // local variables int i = 0, j = 0; // initialize system structures (just to be safe) for (i = 0; i < _n; i++) { _B[i] = 0; for (j = 0; j < _n; j++) { _A[i][j] = 0; } for (j = 0; j < 4; j++) { _coefficients[i][j] = 0; } } for (i = 0; i < _n; i++) { _rS[i] = 0; } // initialize the diagonal of the system matrix (A) to 4 for (i = 0; i < _n; i++) { _A[i][i] = 4; } // initialize the two minor diagonals of A to 1 for (i = 1; i < _n; i++) { _A[i][i - 1] = 1; _A[i - 1][i] = 1; } // initialize B for (i = 0; i < _n; i++) { _B[i] = 6 * (_r[i + 2] - 2 * _r[i + 1] + _r[i]); } // Jacobi system resolving this.jacobi(); // results are stored in _rS // computes the coefficients (di, ci, bi, ai) from the results for (i = 0; i < _n + 1; i++) { // di (degree 0) _coefficients[i][0] = _r[i]; // ci (degree 1) _coefficients[i][1] = _r[i + 1] - _r[i] - (_rS[i + 1] + 2 * _rS[i]) / 6; // bi (degree 2) _coefficients[i][2] = _rS[i] / 2; // ai (degree 3) _coefficients[i][3] = (_rS[i + 1] - _rS[i]) / 6; } } /** * Resolves the equation system by a Jacobi algorithm. The use of the slower * Jacobi algorithm instead of Gauss-Seidel is choosen here because Jacobi * is assured of to be convergent for this particular equation system, as * the system matrix has a strong diagonal. */ protected void jacobi() { // local variables int i = 0, j = 0, iterations = 0; // intermediate arrays float[] newX = new float[_n]; float[] oldX = new float[_n]; // Jacobi convergence test if (!converge()) { if (log.isDebugEnabled()) { log.debug("Warning : equation system resolving is unstable"); } } // init newX and oldX arrays to 0 for (i = 0; i < _n; i++) { newX[i] = 0; oldX[i] = 0; } // main iteration while ((this.precision(oldX, newX) > this._minPrecision) && (iterations < this._maxIterations)) { System.arraycopy(oldX, 0, newX, 0, _n); for (i = 0; i < _n; i++) { newX[i] = _B[i]; for (j = 0; j < i; j++) { newX[i] = newX[i] - (_A[i][j] * oldX[j]); } for (j = i + 1; j < _n; j++) { newX[i] = newX[i] - (_A[i][j] * oldX[j]); } newX[i] = newX[i] / _A[i][i]; } iterations++; } if (this.precision(oldX, newX) < this._minPrecision) { if (log.isDebugEnabled()) { log.debug("Minimal precision ("); log.debug(this._minPrecision + ") reached after "); log.debug(iterations + " iterations"); } } else if (iterations > this._maxIterations) { if (log.isDebugEnabled()) { log.debug("Maximal number of iterations ("); log.debug(this._maxIterations + ") reached"); log.debug("Warning : precision is only "); log.debug("" + this.precision(oldX, newX)); log.debug(", divergence is possible"); } } System.arraycopy(newX, 0, _rS, 1, _n); } /** * Test if the Jacobi resolution of the equation system converges. It's OK * if A has a strong diagonal. */ protected boolean converge() { boolean converge = true; int i = 0, j = 0; float lineSum = 0F; for (i = 0; i < _n; i++) { if (converge) { lineSum = 0; for (j = 0; j < _n; j++) { lineSum = lineSum + Math.abs(_A[i][j]); } lineSum = lineSum - Math.abs(_A[i][i]); if (lineSum > Math.abs(_A[i][i])) { converge = false; } } } return converge; } /** * Computes the current precision reached. */ protected float precision(float[] oldX, float[] newX) { float N = 0F, D = 0F, erreur = 0F; int i = 0; for (i = 0; i < _n; i++) { N = N + Math.abs(newX[i] - oldX[i]); D = D + Math.abs(newX[i]); } if (D != 0F) { erreur = N / D; } else { erreur = Float.MAX_VALUE; } return erreur; } /** * Computes a (vertical) Y-axis value of the global curve. * * @param t * abscissa * @return computed ordinate */ public float value(float t) { int i = 0, splineNumber = 0; float abscissa = 0F, result = 0F; // verify t belongs to the curve (range [0, _m-1]) if ((t < 0) || (t > (_m - 1))) { if (log.isDebugEnabled()) { log.debug("Warning : abscissa " + t + " out of bounds [0, " + (_m - 1) + "]"); } // silent error, consider the curve is constant outside its range if (t < 0) { t = 0; } else { t = _m - 1; } } // seek the good interval for t and get the piece of curve on it splineNumber = (int) Math.floor(t); if (t == (_m - 1)) { // the upper limit of the curve range belongs by definition // to the last interval splineNumber--; } // computes the value of the curve at the pecified abscissa // and relative to the beginning of the right piece of Spline curve abscissa = t - splineNumber; // the polynomial calculation is done by the (fast) Euler method for (i = 0; i < 4; i++) { result = result * abscissa; result = result + _coefficients[splineNumber][3 - i]; } return result; } /** * Manual check of the curve at the interpolated points. */ public void debugCheck() { int i = 0; for (i = 0; i < _m; i++) { log.info("Point " + i + " : "); log.info(_r[i] + " =? " + value(i)); } } /** * Computes drawable plots from the curve for a given draw space. The values * returned are drawable vertically and from the bottom of a Panel. * * @param width * width within the plots have to be computed * @param height * height within the plots are expected to be drawed * @return drawable plots within the limits defined, in an array of int (as * many int as the value of the width parameter) */ public int[] getPlots(int width, int height) { int[] plot = new int[width]; // computes auto-scaling and absolute plots float[] y = new float[width]; float max = java.lang.Integer.MIN_VALUE; float min = java.lang.Integer.MAX_VALUE; for (int i = 0; i < width; i++) { y[i] = value(((float) i) * (_m - 1) / width); if (y[i] < min) { min = y[i]; } if (y[i] > max) { max = y[i]; } } if (min < 0) { min = 0; // shouldn't draw negative values } // computes relative auto-scaled plots to fit in the specified area for (int i = 0; i < width; i++) { plot[i] = Math.round(((y[i] - min) * (height - 1)) / (max - min)); } return plot; } public void setPrecision(float precision) { this._minPrecision = precision; } public float getPrecision() { return this._minPrecision; } public void setToDefaultPrecision() { this._minPrecision = DEFAULT_PRECISION; } public float getDefaultPrecision() { return DEFAULT_PRECISION; } public void setMaxIterations(int iterations) { this._maxIterations = iterations; } public int getMaxIterations() { return this._maxIterations; } public void setToDefaultMaxIterations() { this._maxIterations = DEFAULT_MAX_ITERATIONS; } public int getDefaultMaxIterations() { return DEFAULT_MAX_ITERATIONS; } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_de.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_de.propert0000644000175000017500000000257512032647216033611 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BeanShell Listener (Lauscher) filename.displayName=Dateiname filename.shortDescription=BeanShell Script Datei (Vorrang vor Script) filenameGroup.displayName=Script Datei (Vorrang vor Script) parameterGroup.displayName=Parameter die der BeanShell \u00FCbergeben werden sollen (String Parameters, String []bsh.args) parameters.displayName=Parameter parameters.shortDescription=Parameter die der BeanShell \u00FCbergeben werden sollen (Datei oder Script) script.shortDescription=BeanShell Script scripting.displayName=Script (Variablen\: ctx vars props sampleEvent sampleResult log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/PropertyControlGui.java0000644000175000017500000002033112032647216030751 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; //import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; //import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.ListSelectionModel; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; public class PropertyControlGui extends AbstractConfigGui implements ActionListener, UnsharedComponent { private static final long serialVersionUID = 1L; private static final String COLUMN_NAMES_0 = "name"; // $NON-NLS-1$ private static final String COLUMN_NAMES_1 = "value"; // $NON-NLS-1$ // TODO: add and delete not currently supported private static final String ADD = "add"; // $NON-NLS-1$ private static final String DELETE = "delete"; // $NON-NLS-1$ private static final String SYSTEM = "system"; // $NON-NLS-1$ private static final String JMETER = "jmeter"; // $NON-NLS-1$ private final JCheckBox systemButton = new JCheckBox("System"); private final JCheckBox jmeterButton = new JCheckBox("JMeter"); private final JLabel tableLabel = new JLabel("Properties"); /** The table containing the list of arguments. */ private transient JTable table; /** The model for the arguments table. */ protected transient ObjectTableModel tableModel; // /** A button for adding new arguments to the table. */ // private JButton add; // // /** A button for removing arguments from the table. */ // private JButton delete; public PropertyControlGui() { super(); init(); } public String getLabelResource() { return "property_visualiser_title"; // $NON-NLS-1$ } @Override public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.NON_TEST_ELEMENTS }); } public void actionPerformed(ActionEvent action) { String command = action.getActionCommand(); if (ADD.equals(command)){ return; } if (DELETE.equals(command)){ return; } if (SYSTEM.equals(command)){ setUpData(); return; } if (JMETER.equals(command)){ setUpData(); return; } } public TestElement createTestElement() { TestElement el = new ConfigTestElement(); modifyTestElement(el); return el; } @Override public void configure(TestElement element) { super.configure(element); setUpData(); } private void setUpData(){ tableModel.clearData(); Properties p=null; if (systemButton.isSelected()){ p = System.getProperties(); } if (jmeterButton.isSelected()) { p = JMeterUtils.getJMeterProperties(); } if (p == null) { return; } Set> s = p.entrySet(); ArrayList> al = new ArrayList>(s); Collections.sort(al, new Comparator>(){ public int compare(Map.Entry o1, Map.Entry o2) { String m1,m2; m1=(String)o1.getKey(); m2=(String)o2.getKey(); return m1.compareTo(m2); } }); Iterator> i = al.iterator(); while(i.hasNext()){ tableModel.addRow(i.next()); } } public void modifyTestElement(TestElement element) { configureTestElement(element); } private Component makeMainPanel() { initializeTableModel(); table = new JTable(tableModel); table.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); return makeScrollPane(table); } /** * Create a panel containing the title label for the table. * * @return a panel containing the title label */ private Component makeLabelPanel() { JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); ButtonGroup bg = new ButtonGroup(); bg.add(systemButton); bg.add(jmeterButton); jmeterButton.setSelected(true); systemButton.setActionCommand(SYSTEM); jmeterButton.setActionCommand(JMETER); systemButton.addActionListener(this); jmeterButton.addActionListener(this); labelPanel.add(systemButton); labelPanel.add(jmeterButton); labelPanel.add(tableLabel); return labelPanel; } // /** // * Create a panel containing the add and delete buttons. // * // * @return a GUI panel containing the buttons // */ // private JPanel makeButtonPanel() {// Not currently used // add = new JButton(JMeterUtils.getResString("add")); // $NON-NLS-1$ // add.setActionCommand(ADD); // add.setEnabled(true); // // delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ // delete.setActionCommand(DELETE); // // JPanel buttonPanel = new JPanel(); // buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10)); // add.addActionListener(this); // delete.addActionListener(this); // buttonPanel.add(add); // buttonPanel.add(delete); // return buttonPanel; // } /** * Initialize the components and layout of this component. */ private void init() { JPanel p = this; setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); p = new JPanel(); p.setLayout(new BorderLayout()); p.add(makeLabelPanel(), BorderLayout.NORTH); p.add(makeMainPanel(), BorderLayout.CENTER); // Force a minimum table height of 70 pixels p.add(Box.createVerticalStrut(70), BorderLayout.WEST); //p.add(makeButtonPanel(), BorderLayout.SOUTH); add(p, BorderLayout.CENTER); table.revalidate(); } private void initializeTableModel() { tableModel = new ObjectTableModel(new String[] { COLUMN_NAMES_0, COLUMN_NAMES_1 }, new Functor[] { new Functor(Map.Entry.class, "getKey"), // $NON-NLS-1$ new Functor(Map.Entry.class, "getValue") }, // $NON-NLS-1$ new Functor[] { null, //new Functor("setName"), // $NON-NLS-1$ new Functor(Map.Entry.class,"setValue", new Class[] { Object.class }) // $NON-NLS-1$ }, new Class[] { String.class, String.class }); } }apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java0000644000175000017500000002324712032647216031077 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.swing.AbstractAction; import javax.swing.ActionMap; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultHighlighter; import javax.swing.text.Document; import javax.swing.text.Highlighter; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class SearchTextExtension implements ActionListener, DocumentListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String SEARCH_TEXT_COMMAND = "search_text"; // $NON-NLS-1$ private static volatile int LAST_POSITION_DEFAULT = 0; private int lastPosition = LAST_POSITION_DEFAULT; private static final Color HILIT_COLOR = Color.LIGHT_GRAY; private Highlighter selection; private Highlighter.HighlightPainter painter; private JLabel label; private JButton findButton; private JTextField textToFindField; private JCheckBox caseChkBox; private JCheckBox regexpChkBox; private String lastTextTofind; private boolean newSearch = false; private JEditorPane results; private JPanel searchPanel; public void init(JPanel resultsPane) { } public void setResults(JEditorPane results) { if (this.results != null) { newSearch = true; resetTextToFind(); } this.results = results; // prepare highlighter to show text find with search command selection = new DefaultHighlighter(); painter = new DefaultHighlighter.DefaultHighlightPainter(HILIT_COLOR); results.setHighlighter(selection); } /** * Launch find text engine on response text */ private void executeAndShowTextFind() { String textToFind = textToFindField.getText(); if (results != null && results.getText().length() > 0 && textToFind.length() > 0) { // new search? if (lastTextTofind != null && !lastTextTofind.equals(textToFind)) { lastPosition = LAST_POSITION_DEFAULT; } if (log.isDebugEnabled()) { log.debug("lastPosition=" + lastPosition); } Matcher matcher = null; try { Pattern pattern = createPattern(textToFind); Document contentDoc = results.getDocument(); String body = contentDoc.getText(lastPosition, (contentDoc.getLength() - lastPosition)); matcher = pattern.matcher(body); if ((matcher != null) && (matcher.find())) { selection.removeAllHighlights(); selection.addHighlight(lastPosition + matcher.start(), lastPosition + matcher.end(), painter); results.setCaretPosition(lastPosition + matcher.end()); // save search position lastPosition = lastPosition + matcher.end(); findButton.setText(JMeterUtils .getResString("search_text_button_next"));// $NON-NLS-1$ lastTextTofind = textToFind; newSearch = true; } else { // Display not found message and reset search JOptionPane.showMessageDialog(null, JMeterUtils .getResString("search_text_msg_not_found"),// $NON-NLS-1$ JMeterUtils.getResString("search_text_title_not_found"), // $NON-NLS-1$ JOptionPane.INFORMATION_MESSAGE); lastPosition = LAST_POSITION_DEFAULT; findButton.setText(JMeterUtils .getResString("search_text_button_find"));// $NON-NLS-1$ results.setCaretPosition(0); } } catch (BadLocationException ble) { log.error("Location exception in text find", ble);// $NON-NLS-1$ } } } /** * Create the text find task pane * * @return Text find task pane */ private JPanel createSearchTextPanel() { Font font = new Font("SansSerif", Font.PLAIN, 10); // Search field searchPanel = new JPanel(); searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS)); searchPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); label = new JLabel(JMeterUtils.getResString("search_text_field")); // $NON-NLS-1$ label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); searchPanel.add(label); textToFindField = new JTextField(); // $NON-NLS-1$ searchPanel.add(textToFindField); searchPanel.add(Box.createRigidArea(new Dimension(5,0))); // add listener to intercept texttofind changes and reset search textToFindField.getDocument().addDocumentListener(this); // Buttons findButton = new JButton(JMeterUtils .getResString("search_text_button_find")); // $NON-NLS-1$ findButton.setFont(font); findButton.setActionCommand(SEARCH_TEXT_COMMAND); findButton.addActionListener(this); searchPanel.add(findButton); // checkboxes caseChkBox = new JCheckBox(JMeterUtils .getResString("search_text_chkbox_case"), false); // $NON-NLS-1$ caseChkBox.setFont(font); searchPanel.add(caseChkBox); regexpChkBox = new JCheckBox(JMeterUtils .getResString("search_text_chkbox_regexp"), false); // $NON-NLS-1$ regexpChkBox.setFont(font); searchPanel.add(regexpChkBox); // when Enter is pressed, search start InputMap im = textToFindField .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStrokes.ENTER, SEARCH_TEXT_COMMAND); ActionMap am = textToFindField.getActionMap(); am.put(SEARCH_TEXT_COMMAND, new EnterAction()); // default not visible searchPanel.setVisible(true); return searchPanel; } JPanel createSearchTextExtensionPane() { JPanel pane = new JPanel(); pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS)); pane.add(createSearchTextPanel()); return pane; } /** * Display the response as text or as rendered HTML. Change the text on the * button appropriate to the current display. * * @param e * the ActionEvent being processed */ public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); // Search text in response data if (SEARCH_TEXT_COMMAND.equals(command)) { executeAndShowTextFind(); } } private class EnterAction extends AbstractAction { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent ev) { executeAndShowTextFind(); } } // DocumentListener method public void changedUpdate(DocumentEvent e) { // do nothing } // DocumentListener method public void insertUpdate(DocumentEvent e) { resetTextToFind(); } // DocumentListener method public void removeUpdate(DocumentEvent e) { resetTextToFind(); } void resetTextToFind() { if (newSearch) { log.debug("reset pass"); // Reset search lastPosition = LAST_POSITION_DEFAULT; lastTextTofind = null; findButton.setText(JMeterUtils .getResString("search_text_button_find"));// $NON-NLS-1$ selection.removeAllHighlights(); results.setCaretPosition(0); newSearch = false; } } private Pattern createPattern(String textToFind) { // desactivate or not specials regexp char String textToFindQ = Pattern.quote(textToFind); if (regexpChkBox.isSelected()) { textToFindQ = textToFind; } Pattern pattern = null; if (caseChkBox.isSelected()) { pattern = Pattern.compile(textToFindQ); } else { pattern = Pattern.compile(textToFindQ, Pattern.CASE_INSENSITIVE); } return pattern; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/SplineModel.java0000644000175000017500000000732312032647216027340 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; public class SplineModel implements Clearable { public static final int DEFAULT_NUMBER_OF_NODES = 10; public static final int DEFAULT_REFRESH_PERIOD = 1; protected final boolean SHOW_INCOMING_SAMPLES = true; // These are not currently updated protected int numberOfNodes = DEFAULT_NUMBER_OF_NODES; protected int refreshPeriod = DEFAULT_REFRESH_PERIOD; /** Current Spline curve. */ //@GuardedBy("this") private Spline3 dataCurve = null; final CachingStatCalculator samples; //@GuardedBy("this") private GraphListener listener; //@GuardedBy("this") private String name; public SplineModel() { samples = new CachingStatCalculator("Spline"); } public synchronized void setListener(GraphListener vis) { listener = vis; } public synchronized void setName(String newName) { name = newName; } public boolean isEditable() { return true; } public synchronized Spline3 getDataCurve() { return dataCurve; } public long getMinimum() { return samples.getMin().longValue(); } public long getMaximum() { return samples.getMax().longValue(); } public long getAverage() { return (long) samples.getMean(); } public long getCurrent() { return samples.getCurrentSample().getData(); } public long getSample(int i) { return samples.getSample(i).getData(); } public long getNumberOfCollectedSamples() { return samples.getCount(); } public synchronized String getName() { return name; } public void uncompile() { clearData(); } public synchronized void clearData() { // this.graph.clear(); samples.clear(); this.dataCurve = null; if (listener != null) { listener.updateGui(); } } public synchronized void add(SampleResult sampleResult) { samples.addSample(sampleResult); long n = samples.getCount(); if ((n % (numberOfNodes * refreshPeriod)) == 0) { float[] floatNode = new float[numberOfNodes]; // NOTUSED: long[] longSample = getSamples(); // load each node long loadFactor = n / numberOfNodes; for (int i = 0; i < numberOfNodes; i++) { for (int j = 0; j < loadFactor; j++) { floatNode[i] += samples.getSample((int) ((i * loadFactor) + j)).getData(); } floatNode[i] = floatNode[i] / loadFactor; } // compute the new Spline curve dataCurve = new Spline3(floatNode); if (listener != null) { listener.updateGui(); } } else {// do nothing, wait for the next pile to complete } } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/StatGraphVisualizer.java0000644000175000017500000011216412032647216031100 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.table.TableCellRenderer; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.ActionRouter; import org.apache.jmeter.gui.action.SaveGraphics; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.gui.NumberRenderer; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.gui.RateRenderer; import org.apache.jorphan.gui.RendererUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Aggregrate Table-Based Reporting Visualizer for JMeter. Props to the people * who've done the other visualizers ahead of me (Stefano Mazzocchi), who I * borrowed code from to start me off (and much code may still exist). Thank * you! * */ public class StatGraphVisualizer extends AbstractVisualizer implements Clearable, ActionListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private final String[] COLUMNS = { JMeterUtils.getResString("sampler_label"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_count"), //$NON-NLS-1$ JMeterUtils.getResString("average"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_median"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_90%_line"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_min"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_max"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_error%"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_rate"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_bandwidth") }; //$NON-NLS-1$ private final String[] GRAPH_COLUMNS = {JMeterUtils.getResString("average"),//$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_median"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_90%_line"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_min"), //$NON-NLS-1$ JMeterUtils.getResString("aggregate_report_max")}; //$NON-NLS-1$ private final String TOTAL_ROW_LABEL = JMeterUtils.getResString("aggregate_report_total_label"); //$NON-NLS-1$ private Font FONT_SMALL = new Font("SansSerif", Font.PLAIN, 10); private JTable myJTable; private JScrollPane myScrollPane; private transient ObjectTableModel model; /** * Lock used to protect tableRows update + model update */ private final transient Object lock = new Object(); private final Map tableRows = new ConcurrentHashMap(); private AxisGraph graphPanel = null; private JPanel settingsPane = null; private JSplitPane spane = null; //NOT USED protected double[][] data = null; private JTabbedPane tabbedGraph = new JTabbedPane(SwingConstants.TOP); private JButton displayButton = new JButton(JMeterUtils.getResString("aggregate_graph_display")); //$NON-NLS-1$ private JButton saveGraph = new JButton(JMeterUtils.getResString("aggregate_graph_save")); //$NON-NLS-1$ private JButton saveTable = new JButton(JMeterUtils.getResString("aggregate_graph_save_table")); //$NON-NLS-1$ private JButton chooseForeColor = new JButton(JMeterUtils.getResString("aggregate_graph_choose_foreground_color")); //$NON-NLS-1$ private JButton syncWithName = new JButton(JMeterUtils.getResString("aggregate_graph_sync_with_name")); //$NON-NLS-1$ private JCheckBox saveHeaders = // should header be saved with the data? new JCheckBox(JMeterUtils.getResString("aggregate_graph_save_table_header")); //$NON-NLS-1$ private JLabeledTextField graphTitle = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_user_title")); //$NON-NLS-1$ private JLabeledTextField maxLengthXAxisLabel = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_max_length_xaxis_label"), 8);//$NON-NLS-1$ private JLabeledTextField maxValueYAxisLabel = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_yaxis_max_value"), 8);//$NON-NLS-1$ /** * checkbox for use dynamic graph size */ private JCheckBox dynamicGraphSize = new JCheckBox(JMeterUtils.getResString("aggregate_graph_dynamic_size")); // $NON-NLS-1$ private JLabeledTextField graphWidth = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_width"), 6); //$NON-NLS-1$ private JLabeledTextField graphHeight = new JLabeledTextField(JMeterUtils.getResString("aggregate_graph_height"), 6); //$NON-NLS-1$ private String yAxisLabel = JMeterUtils.getResString("aggregate_graph_response_time");//$NON-NLS-1$ private String yAxisTitle = JMeterUtils.getResString("aggregate_graph_ms"); //$NON-NLS-1$ private boolean saveGraphToFile = false; private int defaultWidth = 400; private int defaultHeight = 300; private JComboBox columnsList = new JComboBox(GRAPH_COLUMNS); private List eltList = new ArrayList(); private JCheckBox columnSelection = new JCheckBox(JMeterUtils.getResString("aggregate_graph_column_selection"), false); //$NON-NLS-1$ private JTextField columnMatchLabel = new JTextField(); private JButton applyFilterBtn = new JButton(JMeterUtils.getResString("graph_apply_filter")); // $NON-NLS-1$ private JCheckBox caseChkBox = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_case"), false); // $NON-NLS-1$ private JCheckBox regexpChkBox = new JCheckBox(JMeterUtils.getResString("search_text_chkbox_regexp"), true); // $NON-NLS-1$ private JComboBox titleFontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray()); private JComboBox titleFontSizeList = new JComboBox(StatGraphProperties.fontSize); private JComboBox titleFontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray()); private JComboBox valueFontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray()); private JComboBox valueFontSizeList = new JComboBox(StatGraphProperties.fontSize); private JComboBox valueFontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray()); private JComboBox fontNameList = new JComboBox(StatGraphProperties.getFontNameMap().keySet().toArray()); private JComboBox fontSizeList = new JComboBox(StatGraphProperties.fontSize); private JComboBox fontStyleList = new JComboBox(StatGraphProperties.getFontStyleMap().keySet().toArray()); private JComboBox legendPlacementList = new JComboBox(StatGraphProperties.getPlacementNameMap().keySet().toArray()); private JCheckBox drawOutlinesBar = new JCheckBox(JMeterUtils.getResString("aggregate_graph_draw_outlines"), true); // Default checked // $NON-NLS-1$ private JCheckBox numberShowGrouping = new JCheckBox(JMeterUtils.getResString("aggregate_graph_number_grouping"), true); // Default checked // $NON-NLS-1$ private JCheckBox valueLabelsVertical = new JCheckBox(JMeterUtils.getResString("aggregate_graph_value_labels_vertical"), true); // Default checked // $NON-NLS-1$ private Color colorBarGraph = Color.YELLOW; private Color colorForeGraph = Color.BLACK; private int nbColToGraph = 1; private Pattern pattern = null; private transient Matcher matcher = null; public StatGraphVisualizer() { super(); model = new ObjectTableModel(COLUMNS, SamplingStatCalculator.class, new Functor[] { new Functor("getLabel"), //$NON-NLS-1$ new Functor("getCount"), //$NON-NLS-1$ new Functor("getMeanAsNumber"), //$NON-NLS-1$ new Functor("getMedian"), //$NON-NLS-1$ new Functor("getPercentPoint", //$NON-NLS-1$ new Object[] { new Float(.900) }), new Functor("getMin"), //$NON-NLS-1$ new Functor("getMax"), //$NON-NLS-1$ new Functor("getErrorPercentage"), //$NON-NLS-1$ new Functor("getRate"), //$NON-NLS-1$ new Functor("getKBPerSecond") }, //$NON-NLS-1$ new Functor[] { null, null, null, null, null, null, null, null, null, null }, new Class[] { String.class, Long.class, Long.class, Long.class, Long.class, Long.class, Long.class, String.class, String.class, String.class }); eltList.add(new BarGraph("average", true, new Color(202, 0, 0))); eltList.add(new BarGraph("aggregate_report_median", false, new Color(49, 49, 181))); eltList.add(new BarGraph("aggregate_report_90%_line", false, new Color(42, 121, 42))); eltList.add(new BarGraph("aggregate_report_min", false, Color.LIGHT_GRAY)); eltList.add(new BarGraph("aggregate_report_max", false, Color.DARK_GRAY)); clearData(); init(); } // Column renderers private static final TableCellRenderer[] RENDERERS = new TableCellRenderer[]{ null, // Label null, // count null, // Mean null, // median null, // 90% null, // Min null, // Max new NumberRenderer("#0.00%"), // Error %age new RateRenderer("#.0"), // Throughpur new NumberRenderer("#.0"), // pageSize }; public static boolean testFunctors(){ StatGraphVisualizer instance = new StatGraphVisualizer(); return instance.model.checkFunctors(null,instance.getClass()); } public String getLabelResource() { return "aggregate_graph_title"; //$NON-NLS-1$ } public void add(final SampleResult res) { final String sampleLabel = res.getSampleLabel(); // Sampler selection if (columnSelection.isSelected() && pattern != null) { matcher = pattern.matcher(sampleLabel); } if ((matcher == null) || (matcher.find())) { JMeterUtils.runSafe(new Runnable() { public void run() { SamplingStatCalculator row = null; synchronized (lock) { row = tableRows.get(sampleLabel); if (row == null) { row = new SamplingStatCalculator(sampleLabel); tableRows.put(row.getLabel(), row); model.insertRow(row, model.getRowCount() - 1); } } row.addSample(res); tableRows.get(TOTAL_ROW_LABEL).addSample(res); model.fireTableDataChanged(); } }); } } /** * Clears this visualizer and its model, and forces a repaint of the table. */ public void clearData() { synchronized (lock) { model.clearData(); tableRows.clear(); tableRows.put(TOTAL_ROW_LABEL, new SamplingStatCalculator(TOTAL_ROW_LABEL)); model.addRow(tableRows.get(TOTAL_ROW_LABEL)); } } /** * Main visualizer setup. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new JPanel(); Border margin = new EmptyBorder(10, 10, 5, 10); Border margin2 = new EmptyBorder(10, 10, 5, 10); mainPanel.setBorder(margin); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.add(makeTitlePanel()); myJTable = new JTable(model); myJTable.setPreferredScrollableViewportSize(new Dimension(500, 80)); RendererUtils.applyRenderers(myJTable, RENDERERS); myScrollPane = new JScrollPane(myJTable); settingsPane = new VerticalPanel(); settingsPane.setBorder(margin2); graphPanel = new AxisGraph(); graphPanel.setPreferredSize(new Dimension(defaultWidth, defaultHeight)); settingsPane.add(createGraphActionsPane()); settingsPane.add(createGraphColumnPane()); settingsPane.add(createGraphTitlePane()); settingsPane.add(createGraphDimensionPane()); JPanel axisPane = new JPanel(new BorderLayout()); axisPane.add(createGraphXAxisPane(), BorderLayout.WEST); axisPane.add(createGraphYAxisPane(), BorderLayout.CENTER); settingsPane.add(axisPane); settingsPane.add(createLegendPane()); tabbedGraph.addTab(JMeterUtils.getResString("aggregate_graph_tab_settings"), settingsPane); //$NON-NLS-1$ tabbedGraph.addTab(JMeterUtils.getResString("aggregate_graph_tab_graph"), graphPanel); //$NON-NLS-1$ // If clic on the Graph tab, make the graph (without apply interval or filter) ChangeListener changeListener = new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { JTabbedPane srcTab = (JTabbedPane) changeEvent.getSource(); int index = srcTab.getSelectedIndex(); if (srcTab.getTitleAt(index).equals(JMeterUtils.getResString("aggregate_graph_tab_graph"))) { //$NON-NLS-1$ actionMakeGraph(); } } }; tabbedGraph.addChangeListener(changeListener); spane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); spane.setLeftComponent(myScrollPane); spane.setRightComponent(tabbedGraph); spane.setResizeWeight(.2); spane.setBorder(null); // see bug jdk 4131528 spane.setContinuousLayout(true); this.add(mainPanel, BorderLayout.NORTH); this.add(spane, BorderLayout.CENTER); } public void makeGraph() { nbColToGraph = getNbColumns(); Dimension size = graphPanel.getSize(); String lstr = maxLengthXAxisLabel.getText(); // canvas size int width = (int) size.getWidth(); int height = (int) size.getHeight(); if (!dynamicGraphSize.isSelected()) { String wstr = graphWidth.getText(); String hstr = graphHeight.getText(); if (wstr.length() != 0) { width = Integer.parseInt(wstr); } if (hstr.length() != 0) { height = Integer.parseInt(hstr); } } if (lstr.length() == 0) { lstr = "20";//$NON-NLS-1$ } int maxLength = Integer.parseInt(lstr); String yAxisStr = maxValueYAxisLabel.getText(); int maxYAxisScale = yAxisStr.length() == 0 ? 0 : Integer.parseInt(yAxisStr); graphPanel.setData(this.getData()); graphPanel.setTitle(graphTitle.getText()); graphPanel.setMaxLength(maxLength); graphPanel.setMaxYAxisScale(maxYAxisScale); graphPanel.setXAxisLabels(getAxisLabels()); graphPanel.setXAxisTitle((String) columnsList.getSelectedItem()); graphPanel.setYAxisLabels(this.yAxisLabel); graphPanel.setYAxisTitle(this.yAxisTitle); graphPanel.setLegendLabels(getLegendLabels()); graphPanel.setColor(getBackColors()); graphPanel.setForeColor(colorForeGraph); graphPanel.setOutlinesBarFlag(drawOutlinesBar.isSelected()); graphPanel.setShowGrouping(numberShowGrouping.isSelected()); graphPanel.setValueOrientation(valueLabelsVertical.isSelected()); graphPanel.setLegendPlacement(StatGraphProperties.getPlacementNameMap() .get(legendPlacementList.getSelectedItem()).intValue()); graphPanel.setTitleFont(new Font(StatGraphProperties.getFontNameMap().get(titleFontNameList.getSelectedItem()), StatGraphProperties.getFontStyleMap().get(titleFontStyleList.getSelectedItem()).intValue(), Integer.parseInt((String) titleFontSizeList.getSelectedItem()))); graphPanel.setLegendFont(new Font(StatGraphProperties.getFontNameMap().get(fontNameList.getSelectedItem()), StatGraphProperties.getFontStyleMap().get(fontStyleList.getSelectedItem()).intValue(), Integer.parseInt((String) fontSizeList.getSelectedItem()))); graphPanel.setValueFont(new Font(StatGraphProperties.getFontNameMap().get(valueFontNameList.getSelectedItem()), StatGraphProperties.getFontStyleMap().get(valueFontStyleList.getSelectedItem()).intValue(), Integer.parseInt((String) valueFontSizeList.getSelectedItem()))); graphPanel.setHeight(height); graphPanel.setWidth(width); spane.repaint(); } public double[][] getData() { if (model.getRowCount() > 1) { int count = model.getRowCount() -1; int size = nbColToGraph; double[][] data = new double[size][count]; int s = 0; int cpt = 0; for (BarGraph bar : eltList) { if (bar.getChkBox().isSelected()) { int col = model.findColumn((String) columnsList.getItemAt(cpt)); for (int idx=0; idx < count; idx++) { data[s][idx] = ((Number)model.getValueAt(idx,col)).doubleValue(); } s++; } cpt++; } return data; } // API expects null, not empty array return null; } public String[] getAxisLabels() { if (model.getRowCount() > 1) { int count = model.getRowCount() -1; String[] labels = new String[count]; for (int idx=0; idx < count; idx++) { labels[idx] = (String)model.getValueAt(idx,0); } return labels; } // API expects null, not empty array return null; } private String[] getLegendLabels() { String[] legends = new String[nbColToGraph]; int i = 0; for (BarGraph bar : eltList) { if (bar.getChkBox().isSelected()) { legends[i] = bar.getLabel(); i++; } } return legends; } private Color[] getBackColors() { Color[] backColors = new Color[nbColToGraph]; int i = 0; for (BarGraph bar : eltList) { if (bar.getChkBox().isSelected()) { backColors[i] = bar.getBackColor(); i++; } } return backColors; } private int getNbColumns() { int i = 0; for (BarGraph bar : eltList) { if (bar.getChkBox().isSelected()) { i++; } } return i; } /** * We use this method to get the data, since we are using * ObjectTableModel, so the calling getDataVector doesn't * work as expected. * @return the data from the model */ public List> getAllTableData() { List> data = new ArrayList>(); if (model.getRowCount() > 0) { for (int rw=0; rw < model.getRowCount(); rw++) { int cols = model.getColumnCount(); List column = new ArrayList(); data.add(column); for (int idx=0; idx < cols; idx++) { Object val = model.getValueAt(rw,idx); column.add(val); } } } return data; } public void actionPerformed(ActionEvent event) { boolean forceReloadData = false; final Object eventSource = event.getSource(); if (eventSource == displayButton) { actionMakeGraph(); } else if (eventSource == saveGraph) { saveGraphToFile = true; try { ActionRouter.getInstance().getAction( ActionNames.SAVE_GRAPHICS,SaveGraphics.class.getName()).doAction( new ActionEvent(this,1,ActionNames.SAVE_GRAPHICS)); } catch (Exception e) { log.error(e.getMessage()); } } else if (eventSource == saveTable) { JFileChooser chooser = FileDialoger.promptToSaveFile("statistics.csv"); //$NON-NLS-1$ if (chooser == null) { return; } FileWriter writer = null; try { writer = new FileWriter(chooser.getSelectedFile()); // TODO Charset ? CSVSaveService.saveCSVStats(getAllTableData(),writer,saveHeaders.isSelected() ? COLUMNS : null); } catch (FileNotFoundException e) { log.warn(e.getMessage()); } catch (IOException e) { log.warn(e.getMessage()); } finally { JOrphanUtils.closeQuietly(writer); } } else if (eventSource == chooseForeColor) { Color color = JColorChooser.showDialog( null, JMeterUtils.getResString("aggregate_graph_choose_color"), //$NON-NLS-1$ colorBarGraph); if (color != null) { colorForeGraph = color; } } else if (eventSource == syncWithName) { graphTitle.setText(namePanel.getName()); } else if (eventSource == dynamicGraphSize) { // if use dynamic graph size is checked, we disable the dimension fields if (dynamicGraphSize.isSelected()) { graphWidth.setEnabled(false); graphHeight.setEnabled(false); } else { graphWidth.setEnabled(true); graphHeight.setEnabled(true); } } else if (eventSource == columnSelection) { if (columnSelection.isSelected()) { columnMatchLabel.setEnabled(true); applyFilterBtn.setEnabled(true); caseChkBox.setEnabled(true); regexpChkBox.setEnabled(true); } else { columnMatchLabel.setEnabled(false); applyFilterBtn.setEnabled(false); caseChkBox.setEnabled(false); regexpChkBox.setEnabled(false); // Force reload data forceReloadData = true; } } // Not 'else if' because forceReloadData if (eventSource == applyFilterBtn || forceReloadData) { if (columnSelection.isSelected() && columnMatchLabel.getText() != null && columnMatchLabel.getText().length() > 0) { pattern = createPattern(columnMatchLabel.getText()); } else if (forceReloadData) { pattern = null; matcher = null; } if (getFile() != null && getFile().length() > 0) { clearData(); FilePanel filePanel = (FilePanel) getFilePanel(); filePanel.actionPerformed(event); } } else if (eventSource instanceof JButton) { // Changing color for column JButton btn = ((JButton) eventSource); if (btn.getName() != null) { try { BarGraph bar = eltList.get(Integer.parseInt(btn.getName())); Color color = JColorChooser.showDialog(null, bar.getLabel(), bar.getBackColor()); if (color != null) { bar.setBackColor(color); btn.setBackground(bar.getBackColor()); } } catch (NumberFormatException nfe) { } // nothing to do } } } private void actionMakeGraph() { if (model.getRowCount() > 1) { makeGraph(); tabbedGraph.setSelectedIndex(1); } else { JOptionPane.showMessageDialog(null, JMeterUtils .getResString("aggregate_graph_no_values_to_graph"), // $NON-NLS-1$ JMeterUtils.getResString("aggregate_graph_no_values_to_graph"), // $NON-NLS-1$ JOptionPane.WARNING_MESSAGE); } } @Override public JComponent getPrintableComponent() { if (saveGraphToFile == true) { saveGraphToFile = false; graphPanel.setBounds(graphPanel.getLocation().x,graphPanel.getLocation().y, graphPanel.width,graphPanel.height); return graphPanel; } return this; } private JPanel createGraphActionsPane() { JPanel buttonPanel = new JPanel(new BorderLayout()); JPanel displayPane = new JPanel(); displayPane.add(displayButton); displayButton.addActionListener(this); buttonPanel.add(displayPane, BorderLayout.WEST); JPanel savePane = new JPanel(); savePane.add(saveGraph); savePane.add(saveTable); savePane.add(saveHeaders); saveGraph.addActionListener(this); saveTable.addActionListener(this); syncWithName.addActionListener(this); buttonPanel.add(savePane, BorderLayout.EAST); return buttonPanel; } private JPanel createGraphColumnPane() { JPanel colPanel = new JPanel(); colPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("aggregate_graph_columns_to_display")); //$NON-NLS-1$ colPanel.add(label); for (BarGraph bar : eltList) { colPanel.add(bar.getChkBox()); colPanel.add(createColorBarButton(bar, eltList.indexOf(bar))); } colPanel.add(Box.createRigidArea(new Dimension(5,0))); chooseForeColor.setFont(FONT_SMALL); colPanel.add(chooseForeColor); chooseForeColor.addActionListener(this); JPanel optionsPanel = new JPanel(); optionsPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); optionsPanel.add(createGraphFontValuePane()); optionsPanel.add(drawOutlinesBar); optionsPanel.add(numberShowGrouping); optionsPanel.add(valueLabelsVertical); JPanel barPane = new JPanel(new BorderLayout()); barPane.add(colPanel, BorderLayout.NORTH); barPane.add(Box.createRigidArea(new Dimension(0,3)), BorderLayout.CENTER); barPane.add(optionsPanel, BorderLayout.SOUTH); JPanel columnPane = new JPanel(new BorderLayout()); columnPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_column_settings"))); // $NON-NLS-1$ columnPane.add(barPane, BorderLayout.NORTH); columnPane.add(Box.createRigidArea(new Dimension(0,3)), BorderLayout.CENTER); columnPane.add(createGraphSelectionSubPane(), BorderLayout.SOUTH); return columnPane; } private JButton createColorBarButton(BarGraph barGraph, int index) { // Button JButton colorBtn = new JButton(); colorBtn.setName(String.valueOf(index)); colorBtn.setFont(FONT_SMALL); colorBtn.addActionListener(this); colorBtn.setBackground(barGraph.getBackColor()); return colorBtn; } private JPanel createGraphSelectionSubPane() { Font font = new Font("SansSerif", Font.PLAIN, 10); // Search field JPanel searchPanel = new JPanel(); searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS)); searchPanel.setBorder(BorderFactory.createEmptyBorder(3, 0, 3, 0)); searchPanel.add(columnSelection); columnMatchLabel.setEnabled(false); applyFilterBtn.setEnabled(false); caseChkBox.setEnabled(false); regexpChkBox.setEnabled(false); columnSelection.addActionListener(this); searchPanel.add(columnMatchLabel); searchPanel.add(Box.createRigidArea(new Dimension(5,0))); // Button applyFilterBtn.setFont(font); applyFilterBtn.addActionListener(this); searchPanel.add(applyFilterBtn); // checkboxes caseChkBox.setFont(font); searchPanel.add(caseChkBox); regexpChkBox.setFont(font); searchPanel.add(regexpChkBox); return searchPanel; } private JPanel createGraphTitlePane() { JPanel titleNamePane = new JPanel(new BorderLayout()); syncWithName.setFont(new Font("SansSerif", Font.PLAIN, 10)); titleNamePane.add(graphTitle, BorderLayout.CENTER); titleNamePane.add(syncWithName, BorderLayout.EAST); JPanel titleStylePane = new JPanel(); titleStylePane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 5)); titleStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_font"), //$NON-NLS-1$ titleFontNameList)); titleFontNameList.setSelectedIndex(0); // default: sans serif titleStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$ titleFontSizeList)); titleFontSizeList.setSelectedItem(StatGraphProperties.fontSize[6]); // default: 16 titleStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$ titleFontStyleList)); titleFontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.bold")); // default: bold JPanel titlePane = new JPanel(new BorderLayout()); titlePane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_title_group"))); // $NON-NLS-1$ titlePane.add(titleNamePane, BorderLayout.NORTH); titlePane.add(titleStylePane, BorderLayout.SOUTH); return titlePane; } private JPanel createGraphFontValuePane() { JPanel fontValueStylePane = new JPanel(); fontValueStylePane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); fontValueStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_value_font"), //$NON-NLS-1$ valueFontNameList)); valueFontNameList.setSelectedIndex(0); // default: sans serif fontValueStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$ valueFontSizeList)); valueFontSizeList.setSelectedItem(StatGraphProperties.fontSize[2]); // default: 10 fontValueStylePane.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$ valueFontStyleList)); valueFontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.normal")); // default: normal //$NON-NLS-1$ return fontValueStylePane; } private JPanel createGraphDimensionPane() { JPanel dimensionPane = new JPanel(); dimensionPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); dimensionPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_dimension"))); // $NON-NLS-1$ dimensionPane.add(dynamicGraphSize); dynamicGraphSize.setSelected(true); // default option graphWidth.setEnabled(false); graphHeight.setEnabled(false); dynamicGraphSize.addActionListener(this); dimensionPane.add(Box.createRigidArea(new Dimension(10,0))); dimensionPane.add(graphWidth); dimensionPane.add(Box.createRigidArea(new Dimension(5,0))); dimensionPane.add(graphHeight); return dimensionPane; } /** * Create pane for X Axis options * @return X Axis pane */ private JPanel createGraphXAxisPane() { JPanel xAxisPane = new JPanel(); xAxisPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); xAxisPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_xaxis_group"))); // $NON-NLS-1$ xAxisPane.add(maxLengthXAxisLabel); return xAxisPane; } /** * Create pane for Y Axis options * @return Y Axis pane */ private JPanel createGraphYAxisPane() { JPanel yAxisPane = new JPanel(); yAxisPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); yAxisPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_yaxis_group"))); // $NON-NLS-1$ yAxisPane.add(maxValueYAxisLabel); return yAxisPane; } /** * Create pane for legend settings * @return Legend pane */ private JPanel createLegendPane() { JPanel legendPanel = new JPanel(); legendPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); legendPanel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("aggregate_graph_legend"))); // $NON-NLS-1$ legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_legend_placement"), //$NON-NLS-1$ legendPlacementList)); legendPlacementList.setSelectedItem(JMeterUtils.getResString("aggregate_graph_legend.placement.bottom")); // default: bottom legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_font"), //$NON-NLS-1$ fontNameList)); fontNameList.setSelectedIndex(0); // default: sans serif legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_size"), //$NON-NLS-1$ fontSizeList)); fontSizeList.setSelectedItem(StatGraphProperties.fontSize[2]); // default: 10 legendPanel.add(GuiUtils.createLabelCombo(JMeterUtils.getResString("aggregate_graph_style"), //$NON-NLS-1$ fontStyleList)); fontStyleList.setSelectedItem(JMeterUtils.getResString("fontstyle.normal")); // default: normal return legendPanel; } /** * @param textToFind * @return pattern ready to search */ private Pattern createPattern(String textToFind) { String textToFindQ = Pattern.quote(textToFind); if (regexpChkBox.isSelected()) { textToFindQ = textToFind; } Pattern pattern = null; try { if (caseChkBox.isSelected()) { pattern = Pattern.compile(textToFindQ); } else { pattern = Pattern.compile(textToFindQ, Pattern.CASE_INSENSITIVE); } } catch (PatternSyntaxException pse) { return null; } return pattern; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RenderAsHTMLWithEmbedded.java0000644000175000017500000000262112032647216031557 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; public class RenderAsHTMLWithEmbedded extends RenderAsHTML implements ResultRenderer { /** {@inheritDoc} */ @Override protected void showRenderedResponse(String response, SampleResult res) { // enable embedded html resources showRenderedResponse(response, res, true); } /** {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("view_results_render_html_embedded"); // $NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/XMLDefaultMutableTreeNode.java0000644000175000017500000001434512032647216032034 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import javax.swing.tree.DefaultMutableTreeNode; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.w3c.dom.Attr; import org.w3c.dom.CDATASection; import org.w3c.dom.Comment; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; /** * A extended class of DefaultMutableTreeNode except that it also attached XML * node and convert XML document into DefaultMutableTreeNode. * */ public class XMLDefaultMutableTreeNode extends DefaultMutableTreeNode { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); // private static final int LIMIT_STR_SIZE = 100; // private boolean isRoot; private transient Node xmlNode; /** * @deprecated only for use by test code */ @Deprecated public XMLDefaultMutableTreeNode(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } public XMLDefaultMutableTreeNode(Node root) throws SAXException { super(root.getNodeName()); initAttributeNode(root, this); initRoot(root); } public XMLDefaultMutableTreeNode(String name, Node xmlNode) { super(name); this.xmlNode = xmlNode; } /** * init root * * @param root * @throws SAXException */ private void initRoot(Node xmlRoot) throws SAXException { NodeList childNodes = xmlRoot.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); initNode(childNode, this); } } /** * init node * * @param node * @param mTreeNode * @throws SAXException */ private void initNode(Node node, XMLDefaultMutableTreeNode mTreeNode) throws SAXException { switch (node.getNodeType()) { case Node.ELEMENT_NODE: initElementNode(node, mTreeNode); break; case Node.TEXT_NODE: initTextNode((Text) node, mTreeNode); break; case Node.CDATA_SECTION_NODE: initCDATASectionNode((CDATASection) node, mTreeNode); break; case Node.COMMENT_NODE: initCommentNode((Comment) node, mTreeNode); break; default: // if other node type, we will just skip it break; } } /** * init element node * * @param node * @param mTreeNode * @throws SAXException */ private void initElementNode(Node node, DefaultMutableTreeNode mTreeNode) throws SAXException { String nodeName = node.getNodeName(); NodeList childNodes = node.getChildNodes(); XMLDefaultMutableTreeNode childTreeNode = new XMLDefaultMutableTreeNode(nodeName, node); mTreeNode.add(childTreeNode); initAttributeNode(node, childTreeNode); for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); initNode(childNode, childTreeNode); } } /** * init attribute node * * @param node * @param mTreeNode * @throws SAXException */ private void initAttributeNode(Node node, DefaultMutableTreeNode mTreeNode) throws SAXException { NamedNodeMap nm = node.getAttributes(); for (int i = 0; i < nm.getLength(); i++) { Attr nmNode = (Attr) nm.item(i); String value = nmNode.getName() + " = \"" + nmNode.getValue() + "\""; // $NON-NLS-1$ $NON-NLS-2$ XMLDefaultMutableTreeNode attributeNode = new XMLDefaultMutableTreeNode(value, nmNode); mTreeNode.add(attributeNode); } } /** * init comment Node * * @param node * @param mTreeNode * @throws SAXException */ private void initCommentNode(Comment node, DefaultMutableTreeNode mTreeNode) throws SAXException { String data = node.getData(); if (data != null && data.length() > 0) { String value = ""; // $NON-NLS-1$ $NON-NLS-2$ XMLDefaultMutableTreeNode commentNode = new XMLDefaultMutableTreeNode(value, node); mTreeNode.add(commentNode); } } /** * init CDATASection Node * * @param node * @param mTreeNode * @throws SAXException */ private void initCDATASectionNode(CDATASection node, DefaultMutableTreeNode mTreeNode) throws SAXException { String data = node.getData(); if (data != null && data.length() > 0) { String value = ""; // $NON-NLS-1$ $NON-NLS-2$ XMLDefaultMutableTreeNode commentNode = new XMLDefaultMutableTreeNode(value, node); mTreeNode.add(commentNode); } } /** * init the TextNode * * @param node * @param mTreeNode * @throws SAXException */ private void initTextNode(Text node, DefaultMutableTreeNode mTreeNode) throws SAXException { String text = node.getNodeValue().trim(); if (text != null && text.length() > 0) { XMLDefaultMutableTreeNode textNode = new XMLDefaultMutableTreeNode(text, node); mTreeNode.add(textNode); } } /** * get the xml node * * @return the XML node */ public Node getXMLNode() { return xmlNode; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/JSR223ListenerBeanInfo.java0000644000175000017500000000203112032647216031111 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.util.JSR223BeanInfoSupport; public class JSR223ListenerBeanInfo extends JSR223BeanInfoSupport { public JSR223ListenerBeanInfo() { super(JSR223Listener.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/JSR223Listener.java0000644000175000017500000000461212032647216027516 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.io.IOException; import javax.script.Bindings; import javax.script.ScriptEngine; import javax.script.ScriptException; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.JSR223TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JSR223Listener extends JSR223TestElement implements Cloneable, SampleListener, TestBean, Visualizer { // N.B. Needs to implement Visualizer so that TestBeanGUI can find the correct GUI class private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 234L; public void sampleOccurred(SampleEvent event) { try { ScriptEngine scriptEngine = getScriptEngine(); Bindings bindings = scriptEngine.createBindings(); bindings.put("sampleEvent", event); bindings.put("sampleResult", event.getResult()); processFileOrScript(scriptEngine, bindings); } catch (ScriptException e) { log.warn("Problem in JSR223 script ", e); } catch (IOException e) { log.warn("Problem in JSR223 script ", e); } } public void sampleStarted(SampleEvent e) { // NOOP } public void sampleStopped(SampleEvent e) { // NOOP } public void add(SampleResult sample) { // NOOP } public boolean isStats() { return false; } } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_pt_BR.propertiesapache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerResources_pt_BR.prop0000644000175000017500000000301212032647216033477 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Ouvinte BeanShell filename.displayName=Nome do arquivo filename.shortDescription=Arquivo de script do BeanShell (substitui script) filenameGroup.displayName=Arquivo de script (substitui script) parameterGroup.displayName=Par\u00E2metros a serem passados ao BeanShell (\=> String Parameters e String []bsh.args) parameters.displayName=Par\u00E2metros parameters.shortDescription=Par\u00E2metros a serem passados ao BeanShell (arquivo ou script) resetGroup.displayName=Reiniciar bsh.Interpreter antes de cada chamada resetInterpreter.displayName=Reiniciar Interpretador script.displayName= script.shortDescription=Script BeanShell scripting.displayName=Script (vari\u00E1veis\: ctx vars props sampleEvent sampleResult log prev) apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RespTimeGraphChart.java0000644000175000017500000002646612032647216030632 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.LayoutManager; import java.awt.Paint; import java.awt.Shape; import java.awt.Stroke; import java.math.BigDecimal; import javax.swing.JPanel; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.jCharts.axisChart.AxisChart; import org.jCharts.chartData.AxisChartDataSet; import org.jCharts.chartData.ChartDataException; import org.jCharts.chartData.DataSeries; import org.jCharts.properties.AxisProperties; import org.jCharts.properties.ChartProperties; import org.jCharts.properties.DataAxisProperties; import org.jCharts.properties.LabelAxisProperties; import org.jCharts.properties.LegendAreaProperties; import org.jCharts.properties.LegendProperties; import org.jCharts.properties.LineChartProperties; import org.jCharts.properties.PointChartProperties; import org.jCharts.properties.PropertyException; import org.jCharts.properties.util.ChartFont; import org.jCharts.types.ChartType; public class RespTimeGraphChart extends JPanel { private static final long serialVersionUID = 280L; private static final Logger log = LoggingManager.getLoggerForClass(); protected double[][] data; protected String title; protected String xAxisTitle; protected String yAxisTitle; protected String yAxisLabel; protected String[] xAxisLabels; protected int width; protected int height; protected String[] legendLabels = { JMeterUtils.getResString("aggregate_graph_legend") }; protected int maxYAxisScale; protected Font titleFont; protected Font legendFont; protected Color[] color; protected boolean showGrouping = true; protected int legendPlacement = LegendAreaProperties.BOTTOM; protected Shape pointShape = PointChartProperties.SHAPE_CIRCLE; protected float strokeWidth = 3.5f; /** * */ public RespTimeGraphChart() { super(); } /** * @param layout */ public RespTimeGraphChart(LayoutManager layout) { super(layout); } /** * @param layout * @param isDoubleBuffered */ public RespTimeGraphChart(LayoutManager layout, boolean isDoubleBuffered) { super(layout, isDoubleBuffered); } public void setData(double[][] data) { this.data = data; } public void setTitle(String title) { this.title = title; } public void setXAxisTitle(String title) { this.xAxisTitle = title; } public void setYAxisTitle(String title) { this.yAxisTitle = title; } public void setXAxisLabels(String[] labels) { this.xAxisLabels = labels; } public void setYAxisLabels(String label) { this.yAxisLabel = label; } public void setLegendLabels(String[] labels) { this.legendLabels = labels; } public void setWidth(int w) { this.width = w; } public void setHeight(int h) { this.height = h; } /** * @return the maxYAxisScale */ public int getMaxYAxisScale() { return maxYAxisScale; } /** * @param maxYAxisScale the maxYAxisScale to set */ public void setMaxYAxisScale(int maxYAxisScale) { this.maxYAxisScale = maxYAxisScale; } /** * @return the color */ public Color[] getColor() { return color; } /** * @param color the color to set */ public void setColor(Color[] color) { this.color = color; } /** * @return the titleFont */ public Font getTitleFont() { return titleFont; } /** * @param titleFont the titleFont to set */ public void setTitleFont(Font titleFont) { this.titleFont = titleFont; } /** * @return the legendFont */ public Font getLegendFont() { return legendFont; } /** * @param legendFont the legendFont to set */ public void setLegendFont(Font legendFont) { this.legendFont = legendFont; } /** * @return the legendPlacement */ public int getLegendPlacement() { return legendPlacement; } /** * @param legendPlacement the legendPlacement to set */ public void setLegendPlacement(int legendPlacement) { this.legendPlacement = legendPlacement; } /** * @return the pointShape */ public Shape getPointShape() { return pointShape; } /** * @param pointShape the pointShape to set */ public void setPointShape(Shape pointShape) { this.pointShape = pointShape; } /** * @return the strokeWidth */ public float getStrokeWidth() { return strokeWidth; } /** * @param strokeWidth the strokeWidth to set */ public void setStrokeWidth(float strokeWidth) { this.strokeWidth = strokeWidth; } /** * @return the showGrouping */ public boolean isShowGrouping() { return showGrouping; } /** * @param showGrouping the showGrouping to set */ public void setShowGrouping(boolean showGrouping) { this.showGrouping = showGrouping; } private void drawSample(String _title, String[] _xAxisLabels, String _yAxisTitle, String[] _legendLabels, double[][] _data, int _width, int _height, Color[] _color, Font legendFont, Graphics g) { double max = maxYAxisScale > 0 ? maxYAxisScale : findMax(_data); // define max scale y axis try { // if the title graph is empty, we can assume some default if (_title.length() == 0 ) { _title = JMeterUtils.getResString("graph_resp_time_title"); //$NON-NLS-1$ } this.setPreferredSize(new Dimension(_width,_height)); DataSeries dataSeries = new DataSeries( _xAxisLabels, null, _yAxisTitle, _title ); // replace _xAxisTitle to null (don't display x axis title) // Stroke and shape line settings Stroke[] strokes = new Stroke[_legendLabels.length]; for (int i = 0; i < _legendLabels.length; i++) { strokes[i] = new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 5f); } Shape[] shapes = new Shape[_legendLabels.length]; for (int i = 0; i < _legendLabels.length; i++) { shapes[i] = pointShape; } LineChartProperties lineChartProperties= new LineChartProperties(strokes, shapes); // Lines colors Paint[] paints = new Paint[_color.length]; System.arraycopy(_color, 0, paints, 0, _color.length); // Define chart type (line) AxisChartDataSet axisChartDataSet = new AxisChartDataSet( _data, _legendLabels, paints, ChartType.LINE, lineChartProperties ); dataSeries.addIAxisPlotDataSet(axisChartDataSet); ChartProperties chartProperties= new ChartProperties(); LabelAxisProperties xaxis = new LabelAxisProperties(); DataAxisProperties yaxis = new DataAxisProperties(); yaxis.setUseCommas(showGrouping); if (legendFont != null) { yaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20))); yaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20))); xaxis.setAxisTitleChartFont(new ChartFont(legendFont, new Color(20))); xaxis.setScaleChartFont(new ChartFont(legendFont, new Color(20))); } if (titleFont != null) { chartProperties.setTitleFont(new ChartFont(titleFont, new Color(0))); } // Y Axis ruler try { BigDecimal round = new BigDecimal(max / 1000d); round = round.setScale(0, BigDecimal.ROUND_UP); double topValue = round.doubleValue() * 1000; yaxis.setUserDefinedScale(0, 500); yaxis.setNumItems((int) (topValue / 500)+1); yaxis.setShowGridLines(1); } catch (PropertyException e) { log.warn("",e); } AxisProperties axisProperties= new AxisProperties(xaxis, yaxis); axisProperties.setXAxisLabelsAreVertical(true); LegendProperties legendProperties= new LegendProperties(); legendProperties.setBorderStroke(null); legendProperties.setPlacement(legendPlacement); legendProperties.setIconBorderPaint(Color.WHITE); legendProperties.setIconBorderStroke(new BasicStroke(0f, BasicStroke.CAP_SQUARE, BasicStroke.CAP_SQUARE)); // Manage legend placement legendProperties.setNumColumns(LegendAreaProperties.COLUMNS_FIT_TO_IMAGE); if (legendPlacement == LegendAreaProperties.RIGHT || legendPlacement == LegendAreaProperties.LEFT) { legendProperties.setNumColumns(1); } if (legendFont != null) { legendProperties.setFont(legendFont); } AxisChart axisChart = new AxisChart( dataSeries, chartProperties, axisProperties, legendProperties, _width, _height ); axisChart.setGraphics2D((Graphics2D) g); axisChart.render(); } catch (ChartDataException e) { log.warn("", e); } catch (PropertyException e) { log.warn("", e); } } @Override public void paintComponent(Graphics graphics) { if (data != null && this.title != null && this.xAxisLabels != null && this.yAxisLabel != null && this.yAxisTitle != null) { drawSample(this.title, this.xAxisLabels, this.yAxisTitle, this.legendLabels, this.data, this.width, this.height, this.color, this.legendFont, graphics); } } /** * Find max in datas * @param datas array of positive or NaN doubles * @return double */ private double findMax(double datas[][]) { double max = 0; for (int i = 0; i < datas.length; i++) { for (int j = 0; j < datas[i].length; j++) { final double value = datas[i][j]; if ((!Double.isNaN(value)) && (value > max)) { max = value; } } } return max; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/JSR223ListenerResources.properties0000644000175000017500000000314112032647216032660 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JSR223 Listener scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of JSR 223 language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props sampleResult (aka prev) sampleEvent sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate JSR 223 language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/GraphListener.java0000644000175000017500000000164412032647216027674 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; public interface GraphListener { void updateGui(Sample s); void updateGui(); } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/DistributionGraphVisualizer.java0000644000175000017500000001651512032647216032647 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Image; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.BevelBorder; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; /** * This class implements the visualizer for displaying the distribution graph. * Distribution graphs are useful for standard benchmarks and viewing the * distribution of data points. Results tend to clump together. * * Created May 25, 2004 */ public class DistributionGraphVisualizer extends AbstractVisualizer implements ImageVisualizer, GraphListener, Clearable { private static final long serialVersionUID = 240L; private final SamplingStatCalculator model; private JPanel graphPanel = null; private final DistributionGraph graph; private JTextField noteField; private static final int DELAY = 10; private int counter = 0; /** * Constructor for the GraphVisualizer object. */ public DistributionGraphVisualizer() { model = new SamplingStatCalculator("Distribution"); graph = new DistributionGraph(model); graph.setBackground(Color.white); init(); } /** * Gets the Image attribute of the GraphVisualizer object. * * @return the Image value */ public Image getImage() { Image result = graph.createImage(graph.getWidth(), graph.getHeight()); graph.paintComponent(result.getGraphics()); return result; } public synchronized void updateGui() { if (graph.getWidth() < 10) { graph.setPreferredSize(new Dimension(getWidth() - 40, getHeight() - 160)); } graphPanel.updateUI(); graph.repaint(); } public synchronized void updateGui(Sample s) { // We have received one more sample if (DELAY == counter) { updateGui(); counter = 0; } else { counter++; } } public void add(final SampleResult res) { JMeterUtils.runSafe(new Runnable() { public void run() { // made currentSample volatile model.addSample(res); updateGui(model.getCurrentSample()); } }); } public String getLabelResource() { return "distribution_graph_title"; // $NON-NLS-1$ } public synchronized void clearData() { this.graph.clearData(); model.clear(); repaint(); } @Override public String toString() { return "Show the samples in a distribution graph"; } /** * Initialize the GUI. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL Border margin = new EmptyBorder(10, 10, 5, 10); this.setBorder(margin); // Set up the graph with header, footer, Y axis and graph display JPanel lgraphPanel = new JPanel(new BorderLayout()); lgraphPanel.add(createGraphPanel(), BorderLayout.CENTER); lgraphPanel.add(createGraphInfoPanel(), BorderLayout.SOUTH); // Add the main panel and the graph this.add(makeTitlePanel(), BorderLayout.NORTH); this.add(lgraphPanel, BorderLayout.CENTER); } // Methods used in creating the GUI /** * Creates a scroll pane containing the actual graph of the results. * * @return a scroll pane containing the graph */ private Component createGraphPanel() { graphPanel = new JPanel(); graphPanel.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, Color.lightGray, Color.darkGray)); graphPanel.add(graph); graphPanel.setBackground(Color.white); return graphPanel; } // /** // * Creates one of the fields used to display the graph's current // * values. // * // * @param color the color used to draw the value. By convention // * this is the same color that is used to draw the // * graph for this value and in the choose panel. // * @param length the number of digits which the field should be // * able to display // * // * @return a text field configured to display one of the // * current graph values // */ // private JTextField createInfoField(Color color, int length) // { // JTextField field = new JTextField(length); // field.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); // field.setEditable(false); // field.setForeground(color); // field.setBackground(getBackground()); // // // The text field should expand horizontally, but have // // a fixed height // field.setMaximumSize(new Dimension( // field.getMaximumSize().width, // field.getPreferredSize().height)); // return field; // } /** * Creates a label for one of the fields used to display the graph's current * values. Neither the label created by this method or the * field passed as a parameter is added to the GUI here. * * @param labelResourceName * the name of the label resource. This is used to look up the * label text using {@link JMeterUtils#getResString(String)}. * @param field * the field this label is being created for. */ private JLabel createInfoLabel(String labelResourceName, JTextField field) { JLabel label = new JLabel(JMeterUtils.getResString(labelResourceName)); label.setForeground(field.getForeground()); label.setLabelFor(field); return label; } /** * Creates the information Panel at the bottom * * @return */ private Box createGraphInfoPanel() { Box graphInfoPanel = Box.createHorizontalBox(); this.noteField = new JTextField(); graphInfoPanel.add(this.createInfoLabel("distribution_note1", this.noteField)); // $NON-NLS-1$ return graphInfoPanel; } /** * Method implements Printable, which is suppose to return the correct * internal component. The Action class can then print or save the graphics * to a file. */ @Override public JComponent getPrintableComponent() { return this.graphPanel; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RenderAsXML.java0000644000175000017500000002060612032647216027210 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Component; import java.awt.GridLayout; import java.io.ByteArrayInputStream; import java.io.StringWriter; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.ToolTipManager; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeSelectionModel; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.XPathUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.tidy.Tidy; import org.xml.sax.SAXException; public class RenderAsXML extends SamplerResultTab implements ResultRenderer { private static final Logger log = LoggingManager.getLoggerForClass(); private static final byte[] XML_PFX = {'<','?','x','m','l',' '};//" 0) { showErrorMessageDialog(sw.toString(), "Tidy: " + tidy.getParseErrors() + " errors, " + tidy.getParseWarnings() + " warnings", JOptionPane.WARNING_MESSAGE); } JPanel domTreePanel = new DOMTreePanel(document); resultsScrollPane.setViewportView(domTreePanel); } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.SamplerResultTab#clearData() */ @Override public void clearData() { super.clearData(); resultsScrollPane.setViewportView(null); // clear result tab on Ctrl-E } /* * * A Dom tree panel for to display response as tree view author Dave Maung * TODO implement to find any nodes in the tree using TreePath. * */ private static class DOMTreePanel extends JPanel { private static final long serialVersionUID = 6871690021183779153L; private JTree domJTree; public DOMTreePanel(org.w3c.dom.Document document) { super(new GridLayout(1, 0)); try { Node firstElement = getFirstElement(document); DefaultMutableTreeNode top = new XMLDefaultMutableTreeNode(firstElement); domJTree = new JTree(top); domJTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); domJTree.setShowsRootHandles(true); JScrollPane domJScrollPane = new JScrollPane(domJTree); domJTree.setAutoscrolls(true); this.add(domJScrollPane); ToolTipManager.sharedInstance().registerComponent(domJTree); domJTree.setCellRenderer(new DomTreeRenderer()); } catch (SAXException e) { log.warn("Error trying to parse document", e); } } /** * Skip all DTD nodes, all prolog nodes. They dont support in tree view * We let user to insert them however in DOMTreeView, we dont display it * * @param root * @return */ private Node getFirstElement(Node parent) { NodeList childNodes = parent.getChildNodes(); Node toReturn = parent; // Must return a valid node, or may generate an NPE for (int i = 0; i < childNodes.getLength(); i++) { Node childNode = childNodes.item(i); toReturn = childNode; if (childNode.getNodeType() == Node.ELEMENT_NODE){ break; } } return toReturn; } /** * This class is to view as tooltext. This is very useful, when the * contents has long string and does not fit in the view. it will also * automatically wrap line for each 100 characters since tool tip * support html. author Dave Maung */ private static class DomTreeRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = 240210061375790195L; @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean phasFocus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, phasFocus); DefaultMutableTreeNode valueTreeNode = (DefaultMutableTreeNode) value; setToolTipText(getHTML(valueTreeNode.toString(), "
        ", 100)); // $NON-NLS-1$ return this; } /** * get the html * * @param str * @param separator * @param maxChar * @return */ private String getHTML(String str, String separator, int maxChar) { StringBuilder strBuf = new StringBuilder(""); // $NON-NLS-1$ char[] chars = str.toCharArray(); for (int i = 0; i < chars.length; i++) { if (i % maxChar == 0 && i != 0) { strBuf.append(separator); } strBuf.append(encode(chars[i])); } strBuf.append(""); // $NON-NLS-1$ return strBuf.toString(); } private String encode(char c) { String toReturn = String.valueOf(c); switch (c) { case '<': // $NON-NLS-1$ toReturn = "<"; // $NON-NLS-1$ break; case '>': // $NON-NLS-1$ toReturn = ">"; // $NON-NLS-1$ break; case '\'': // $NON-NLS-1$ toReturn = "'"; // $NON-NLS-1$ break; case '\"': // $NON-NLS-1$ toReturn = """; // $NON-NLS-1$ break; default: // ignored break; } return toReturn; } } } private static void showErrorMessageDialog(String message, String title, int messageType) { JOptionPane.showMessageDialog(null, message, title, messageType); } /** {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("view_results_render_xml"); // $NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BeanShellListenerBeanInfo.java0000644000175000017500000000205012032647216032062 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import org.apache.jmeter.util.BeanShellBeanInfoSupport; public class BeanShellListenerBeanInfo extends BeanShellBeanInfoSupport { public BeanShellListenerBeanInfo() { super(BeanShellListener.class); } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/StatVisualizer.java0000644000175000017500000003153212032647216030115 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.table.TableCellRenderer; //import javax.swing.table.AbstractTableModel; //import javax.swing.table.TableModel; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.gui.NumberRenderer; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.gui.RateRenderer; import org.apache.jorphan.gui.RendererUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Aggregrate Table-Based Reporting Visualizer for JMeter. Props to the people * who've done the other visualizers ahead of me (Stefano Mazzocchi), who I * borrowed code from to start me off (and much code may still exist). Thank * you! * */ public class StatVisualizer extends AbstractVisualizer implements Clearable, ActionListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String USE_GROUP_NAME = "useGroupName"; //$NON-NLS-1$ private static final String SAVE_HEADERS = "saveHeaders"; //$NON-NLS-1$ private static final String[] COLUMNS = { "sampler_label", //$NON-NLS-1$ "aggregate_report_count", //$NON-NLS-1$ "average", //$NON-NLS-1$ "aggregate_report_median", //$NON-NLS-1$ "aggregate_report_90%_line", //$NON-NLS-1$ "aggregate_report_min", //$NON-NLS-1$ "aggregate_report_max", //$NON-NLS-1$ "aggregate_report_error%", //$NON-NLS-1$ "aggregate_report_rate", //$NON-NLS-1$ "aggregate_report_bandwidth" }; //$NON-NLS-1$ private final String TOTAL_ROW_LABEL = JMeterUtils.getResString("aggregate_report_total_label"); //$NON-NLS-1$ private JTable myJTable; private JScrollPane myScrollPane; private final JButton saveTable = new JButton(JMeterUtils.getResString("aggregate_graph_save_table")); //$NON-NLS-1$ private final JCheckBox saveHeaders = // should header be saved with the data? new JCheckBox(JMeterUtils.getResString("aggregate_graph_save_table_header"),true); //$NON-NLS-1$ private final JCheckBox useGroupName = new JCheckBox(JMeterUtils.getResString("aggregate_graph_use_group_name")); //$NON-NLS-1$ private transient ObjectTableModel model; /** * Lock used to protect tableRows update + model update */ private final transient Object lock = new Object(); private final Map tableRows = new ConcurrentHashMap(); public StatVisualizer() { super(); model = new ObjectTableModel(COLUMNS, SamplingStatCalculator.class, new Functor[] { new Functor("getLabel"), //$NON-NLS-1$ new Functor("getCount"), //$NON-NLS-1$ new Functor("getMeanAsNumber"), //$NON-NLS-1$ new Functor("getMedian"), //$NON-NLS-1$ new Functor("getPercentPoint", //$NON-NLS-1$ new Object[] { new Float(.900) }), new Functor("getMin"), //$NON-NLS-1$ new Functor("getMax"), //$NON-NLS-1$ new Functor("getErrorPercentage"), //$NON-NLS-1$ new Functor("getRate"), //$NON-NLS-1$ new Functor("getKBPerSecond") //$NON-NLS-1$ }, new Functor[] { null, null, null, null, null, null, null, null, null, null }, new Class[] { String.class, Long.class, Long.class, Long.class, Long.class, Long.class, Long.class, String.class, String.class, String.class }); clearData(); init(); } // Column renderers private static final TableCellRenderer[] RENDERERS = new TableCellRenderer[]{ null, // Label null, // count null, // Mean null, // median null, // 90% null, // Min null, // Max new NumberRenderer("#0.00%"), // Error %age //$NON-NLS-1$ new RateRenderer("#.0"), // Throughput //$NON-NLS-1$ new NumberRenderer("#.0"), // pageSize //$NON-NLS-1$ }; /** @deprecated - only for use in testing */ @Deprecated public static boolean testFunctors(){ StatVisualizer instance = new StatVisualizer(); return instance.model.checkFunctors(null,instance.getClass()); } public String getLabelResource() { return "aggregate_report"; //$NON-NLS-1$ } public void add(final SampleResult res) { JMeterUtils.runSafe(new Runnable() { public void run() { SamplingStatCalculator row = null; final String sampleLabel = res.getSampleLabel(useGroupName.isSelected()); synchronized (lock) { row = tableRows.get(sampleLabel); if (row == null) { row = new SamplingStatCalculator(sampleLabel); tableRows.put(row.getLabel(), row); model.insertRow(row, model.getRowCount() - 1); } } /* * Synch is needed because multiple threads can update the counts. */ synchronized(row) { row.addSample(res); } SamplingStatCalculator tot = tableRows.get(TOTAL_ROW_LABEL); synchronized(tot) { tot.addSample(res); } model.fireTableDataChanged(); } }); } /** * Clears this visualizer and its model, and forces a repaint of the table. */ public void clearData() { synchronized (lock) { model.clearData(); tableRows.clear(); tableRows.put(TOTAL_ROW_LABEL, new SamplingStatCalculator(TOTAL_ROW_LABEL)); model.addRow(tableRows.get(TOTAL_ROW_LABEL)); } } /** * Main visualizer setup. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL JPanel mainPanel = new JPanel(); Border margin = new EmptyBorder(10, 10, 5, 10); mainPanel.setBorder(margin); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.add(makeTitlePanel()); // SortFilterModel mySortedModel = // new SortFilterModel(myStatTableModel); myJTable = new JTable(model); myJTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); myJTable.setPreferredScrollableViewportSize(new Dimension(500, 70)); RendererUtils.applyRenderers(myJTable, RENDERERS); myScrollPane = new JScrollPane(myJTable); this.add(mainPanel, BorderLayout.NORTH); this.add(myScrollPane, BorderLayout.CENTER); saveTable.addActionListener(this); JPanel opts = new JPanel(); opts.add(useGroupName, BorderLayout.WEST); opts.add(saveTable, BorderLayout.CENTER); opts.add(saveHeaders, BorderLayout.EAST); this.add(opts,BorderLayout.SOUTH); } @Override public void modifyTestElement(TestElement c) { super.modifyTestElement(c); c.setProperty(USE_GROUP_NAME, useGroupName.isSelected(), false); c.setProperty(SAVE_HEADERS, saveHeaders.isSelected(), true); } @Override public void configure(TestElement el) { super.configure(el); useGroupName.setSelected(el.getPropertyAsBoolean(USE_GROUP_NAME, false)); saveHeaders.setSelected(el.getPropertyAsBoolean(SAVE_HEADERS, true)); } public void actionPerformed(ActionEvent ev) { if (ev.getSource() == saveTable) { JFileChooser chooser = FileDialoger.promptToSaveFile("aggregate.csv");//$NON-NLS-1$ if (chooser == null) { return; } FileWriter writer = null; try { writer = new FileWriter(chooser.getSelectedFile()); // TODO Charset ? CSVSaveService.saveCSVStats(model,writer, saveHeaders.isSelected()); } catch (FileNotFoundException e) { log.warn(e.getMessage()); } catch (IOException e) { log.warn(e.getMessage()); } finally { JOrphanUtils.closeQuietly(writer); } } } } /** * Pulled this mainly out of a Core Java book to implement a sorted table - * haven't implemented this yet, it needs some non-trivial work done to it to * support our dynamically-sizing TableModel for this visualizer. * */ //class SortFilterModel extends AbstractTableModel { // private TableModel model; // // private int sortColumn; // // private Row[] rows; // // public SortFilterModel(TableModel m) { // model = m; // rows = new Row[model.getRowCount()]; // for (int i = 0; i < rows.length; i++) { // rows[i] = new Row(); // rows[i].index = i; // } // } // // public SortFilterModel() { // } // // public void setValueAt(Object aValue, int r, int c) { // model.setValueAt(aValue, rows[r].index, c); // } // // public Object getValueAt(int r, int c) { // return model.getValueAt(rows[r].index, c); // } // // public boolean isCellEditable(int r, int c) { // return model.isCellEditable(rows[r].index, c); // } // // public int getRowCount() { // return model.getRowCount(); // } // // public int getColumnCount() { // return model.getColumnCount(); // } // // public String getColumnName(int c) { // return model.getColumnName(c); // } // // public Class getColumnClass(int c) { // return model.getColumnClass(c); // } // // public void sort(int c) { // sortColumn = c; // Arrays.sort(rows); // fireTableDataChanged(); // } // // public void addMouseListener(final JTable table) { // table.getTableHeader().addMouseListener(new MouseAdapter() { // public void mouseClicked(MouseEvent event) { // if (event.getClickCount() < 2) { // return; // } // int tableColumn = table.columnAtPoint(event.getPoint()); // int modelColumn = table.convertColumnIndexToModel(tableColumn); // // sort(modelColumn); // } // }); // } // // private class Row implements Comparable { // public int index; // // public int compareTo(Object other) { // Row otherRow = (Row) other; // Object a = model.getValueAt(index, sortColumn); // Object b = model.getValueAt(otherRow.index, sortColumn); // // if (a instanceof Comparable) { // return ((Comparable) a).compareTo(b); // } else { // return index - otherRow.index; // } // } // } //} // class SortFilterModel apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RenderAsJSON.java0000644000175000017500000001101312032647216027311 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; public class RenderAsJSON extends SamplerResultTab implements ResultRenderer { private static final String ESC_CHAR_REGEX = "\\\\[\"\\\\/bfnrt]|\\\\u[0-9A-Fa-f]{4}"; // $NON-NLS-1$ private static final String NORMAL_CHARACTER_REGEX = "[^\"\\\\]"; // $NON-NLS-1$ private static final String STRING_REGEX = "\"(" + ESC_CHAR_REGEX + "|" + NORMAL_CHARACTER_REGEX + ")*\""; // $NON-NLS-1$ // This 'other value' regex is deliberately weak, even accepting an empty string, to be useful when reporting malformed data. private static final String OTHER_VALUE_REGEX = "[^\\{\\[\\]\\}\\,]*"; // $NON-NLS-1$ private static final String VALUE_OR_PAIR_REGEX = "((" + STRING_REGEX + "\\s*:)?\\s*(" + STRING_REGEX + "|" + OTHER_VALUE_REGEX + ")\\s*,?\\s*)"; // $NON-NLS-1$ private static final Pattern VALUE_OR_PAIR_PATTERN = Pattern.compile(VALUE_OR_PAIR_REGEX); /** {@inheritDoc} */ public void renderResult(SampleResult sampleResult) { String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); showRenderJSONResponse(response); } private void showRenderJSONResponse(String response) { results.setContentType("text/plain"); // $NON-NLS-1$ results.setText(response == null ? "" : prettyJSON(response)); results.setCaretPosition(0); resultsScrollPane.setViewportView(results); } // It might be useful also to make this available in the 'Request' tab, for // when posting JSON. private static String prettyJSON(String json) { StringBuilder pretty = new StringBuilder(json.length() * 2); // Educated guess final String tab = ": "; // $NON-NLS-1$ StringBuilder index = new StringBuilder(); String nl = ""; // $NON-NLS-1$ Matcher valueOrPair = VALUE_OR_PAIR_PATTERN.matcher(json); boolean misparse = false; for (int i = 0; i < json.length(); ) { final char currentChar = json.charAt(i); if ((currentChar == '{') || (currentChar == '[')) { pretty.append(nl).append(index).append(currentChar); i++; index.append(tab); misparse = false; } else if ((currentChar == '}') || (currentChar == ']')) { if (index.length() > 0) { index.delete(0, tab.length()); } pretty.append(nl).append(index).append(currentChar); i++; int j = i; while ((j < json.length()) && Character.isWhitespace(json.charAt(j))) { j++; } if ((j < json.length()) && (json.charAt(j) == ',')) { pretty.append(","); // $NON-NLS-1$ i=j+1; } misparse = false; } else if (valueOrPair.find(i) && valueOrPair.group().length() > 0) { pretty.append(nl).append(index).append(valueOrPair.group()); i=valueOrPair.end(); misparse = false; } else { if (!misparse) { pretty.append(nl).append("- Parse failed from:"); } pretty.append(currentChar); i++; misparse = true; } nl = "\n"; // $NON-NLS-1$ } return pretty.toString(); } /** {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("view_results_render_json"); // $NON-NLS-1$ } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/StatGraphProperties.java0000644000175000017500000000722112032647216031074 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Font; import java.awt.Shape; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import org.apache.jmeter.util.JMeterUtils; import org.jCharts.properties.LegendAreaProperties; import org.jCharts.properties.PointChartProperties; public class StatGraphProperties { public static final String[] fontSize = { "8", "9", "10", "11", "12", "14", "16", "18", "20", "24", "28", "32"}; public static final String[] strokeWidth = { "1.0f", "1.5f", "2.0f", "2.5f", "3.0f", "3.5f", "4.0f", "4.5f", "5.0f", "5.5f", "6.0f", "6.5f"}; public static Map getFontNameMap() { Map fontNameMap = new HashMap(2); fontNameMap.put(JMeterUtils.getResString("font.sansserif"), "SansSerif"); fontNameMap.put(JMeterUtils.getResString("font.serif"), "Serif"); return fontNameMap; } @SuppressWarnings("boxing") public static Map getFontStyleMap() { Map fontStyleMap = new HashMap(3); fontStyleMap.put(JMeterUtils.getResString("fontstyle.normal"), Font.PLAIN); fontStyleMap.put(JMeterUtils.getResString("fontstyle.bold"), Font.BOLD); fontStyleMap.put(JMeterUtils.getResString("fontstyle.italic"), Font.ITALIC); return fontStyleMap; } @SuppressWarnings("boxing") public static Map getPlacementNameMap() { Map placementNameMap = new HashMap(4); placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.bottom"), LegendAreaProperties.BOTTOM); placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.right"), LegendAreaProperties.RIGHT); placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.left"), LegendAreaProperties.LEFT); placementNameMap.put(JMeterUtils.getResString("aggregate_graph_legend.placement.top"), LegendAreaProperties.TOP); return placementNameMap; } public static Map getPointShapeMap() { // We want to retain insertion order, so LinkedHashMap is necessary Map pointShapeMap = new LinkedHashMap(5); pointShapeMap.put(JMeterUtils.getResString("graph_pointshape_circle"), PointChartProperties.SHAPE_CIRCLE); pointShapeMap.put(JMeterUtils.getResString("graph_pointshape_diamond"), PointChartProperties.SHAPE_DIAMOND); pointShapeMap.put(JMeterUtils.getResString("graph_pointshape_square"), PointChartProperties.SHAPE_SQUARE); pointShapeMap.put(JMeterUtils.getResString("graph_pointshape_triangle"), PointChartProperties.SHAPE_TRIANGLE); pointShapeMap.put(JMeterUtils.getResString("graph_pointshape_none"), null); return pointShapeMap; } }apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RenderAsRegexp.java0000644000175000017500000002011312032647216027773 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ /** * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import java.util.List; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JTextArea; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.oro.text.PatternCacheLRU; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; /** * Implement ResultsRender for Regexp tester */ public class RenderAsRegexp implements ResultRenderer, ActionListener { private static final String REGEXP_TESTER_COMMAND = "regexp_tester"; // $NON-NLS-1$ private JPanel regexpPane; private JTextArea regexpDataField; private JLabeledTextField regexpField; private JTextArea regexpResultField; private JTabbedPane rightSide; private SampleResult sampleResult = null; /** {@inheritDoc} */ public void clearData() { this.regexpDataField.setText(""); // $NON-NLS-1$ // don't set empty to keep regexp // regexpField.setText(""); // $NON-NLS-1$ this.regexpResultField.setText(""); // $NON-NLS-1$ } /** {@inheritDoc} */ public void init() { // Create the panels for the regexp tab regexpPane = createRegexpPanel(); } /** * Display the response as text or as rendered HTML. Change the text on the * button appropriate to the current display. * * @param e the ActionEvent being processed */ public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if ((sampleResult != null) && (REGEXP_TESTER_COMMAND.equals(command))) { String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); executeAndShowRegexpTester(response); } } /** * Launch regexp engine to parse a input text * @param textToParse */ private void executeAndShowRegexpTester(String textToParse) { if (textToParse != null && textToParse.length() > 0 && this.regexpField.getText().length() > 0) { this.regexpResultField.setText(process(textToParse)); this.regexpResultField.setCaretPosition(0); // go to first line } } private String process(String textToParse) { Perl5Matcher matcher = new Perl5Matcher(); PatternMatcherInput input = new PatternMatcherInput(textToParse); PatternCacheLRU pcLRU = new PatternCacheLRU(); Pattern pattern = pcLRU.getPattern(regexpField.getText(), Perl5Compiler.READ_ONLY_MASK); List matches = new LinkedList(); while (matcher.contains(input, pattern)) { matches.add(matcher.getMatch()); } // Construct a multi-line string with all matches StringBuilder sb = new StringBuilder(); final int size = matches.size(); sb.append("Match count: ").append(size).append("\n"); for (int j = 0; j < size; j++) { MatchResult mr = matches.get(j); final int groups = mr.groups(); for (int i = 0; i < groups; i++) { sb.append("Match[").append(j+1).append("][").append(i).append("]=").append(mr.group(i)).append("\n"); } } return sb.toString(); } /** {@inheritDoc} */ public void renderResult(SampleResult sampleResult) { clearData(); String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult); regexpDataField.setText(response); regexpDataField.setCaretPosition(0); } /** {@inheritDoc} */ public void setupTabPane() { // Add regexp tester pane if (rightSide.indexOfTab(JMeterUtils.getResString("regexp_tester_title")) < 0) { // $NON-NLS-1$ rightSide.addTab(JMeterUtils.getResString("regexp_tester_title"), regexpPane); // $NON-NLS-1$ } clearData(); } /** * @return RegExp Tester panel */ private JPanel createRegexpPanel() { regexpDataField = new JTextArea(); regexpDataField.setEditable(false); regexpDataField.setLineWrap(true); regexpDataField.setWrapStyleWord(true); JScrollPane regexpDataPane = GuiUtils.makeScrollPane(regexpDataField); regexpDataPane.setMinimumSize(new Dimension(0, 200)); JPanel pane = new JPanel(new BorderLayout(0, 5)); JSplitPane mainSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, regexpDataPane, createRegexpTasksPanel()); mainSplit.setDividerLocation(300); pane.add(mainSplit, BorderLayout.CENTER); return pane; } /** * Create the Regexp task pane * * @return Regexp task pane */ private JPanel createRegexpTasksPanel() { JPanel regexpActionPanel = new JPanel(); regexpActionPanel.setLayout(new BoxLayout(regexpActionPanel, BoxLayout.X_AXIS)); Border margin = new EmptyBorder(5, 5, 0, 5); regexpActionPanel.setBorder(margin); regexpField = new JLabeledTextField(JMeterUtils.getResString("regexp_tester_field")); // $NON-NLS-1$ regexpActionPanel.add(regexpField, BorderLayout.WEST); JButton regexpTester = new JButton(JMeterUtils.getResString("regexp_tester_button_test")); // $NON-NLS-1$ regexpTester.setActionCommand(REGEXP_TESTER_COMMAND); regexpTester.addActionListener(this); regexpActionPanel.add(regexpTester, BorderLayout.EAST); regexpResultField = new JTextArea(); regexpResultField.setEditable(false); regexpResultField.setLineWrap(true); regexpResultField.setWrapStyleWord(true); JPanel regexpTasksPanel = new JPanel(new BorderLayout(0, 5)); regexpTasksPanel.add(regexpActionPanel, BorderLayout.NORTH); regexpTasksPanel.add(GuiUtils.makeScrollPane(regexpResultField), BorderLayout.CENTER); return regexpTasksPanel; } /** {@inheritDoc} */ public synchronized void setRightSide(JTabbedPane side) { rightSide = side; } /** {@inheritDoc} */ public synchronized void setSamplerResult(Object userObject) { if (userObject instanceof SampleResult) { sampleResult = (SampleResult) userObject; } } /** {@inheritDoc} */ public void setLastSelectedTab(int index) { // nothing to do } /** {@inheritDoc} */ @Override public String toString() { return JMeterUtils.getResString("regexp_tester_title"); // $NON-NLS-1$ } /** {@inheritDoc} */ public void renderImage(SampleResult sampleResult) { clearData(); regexpDataField.setText(JMeterUtils.getResString("regexp_render_no_text")); // $NON-NLS-1$ } /** {@inheritDoc} */ public void setBackgroundColor(Color backGround) { } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java0000644000175000017500000003671612032647216032332 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ /** * */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.IOException; import java.util.Collections; import java.util.List; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Base for ViewResults * */ public class ViewResultsFullVisualizer extends AbstractVisualizer implements ActionListener, TreeSelectionListener, Clearable, ItemListener { private static final long serialVersionUID = 7338676747296593842L; private static final Logger log = LoggingManager.getLoggerForClass(); public static final Color SERVER_ERROR_COLOR = Color.red; public static final Color CLIENT_ERROR_COLOR = Color.blue; public static final Color REDIRECT_COLOR = Color.green; private JSplitPane mainSplit; private DefaultMutableTreeNode root; private DefaultTreeModel treeModel; private JTree jTree; private Component leftSide; private JTabbedPane rightSide; private JComboBox selectRenderPanel; private int selectedTab; protected static final String COMBO_CHANGE_COMMAND = "change_combo"; // $NON-NLS-1$ private static final ImageIcon imageSuccess = JMeterUtils.getImage( JMeterUtils.getPropDefault("viewResultsTree.success", //$NON-NLS-1$ "icon_success_sml.gif")); //$NON-NLS-1$ private static final ImageIcon imageFailure = JMeterUtils.getImage( JMeterUtils.getPropDefault("viewResultsTree.failure", //$NON-NLS-1$ "icon_warning_sml.gif")); //$NON-NLS-1$ // Maximum size that we will display private static final int MAX_DISPLAY_SIZE = JMeterUtils.getPropDefault("view.results.tree.max_size", 200 * 1024); // $NON-NLS-1$ private ResultRenderer resultsRender = null; private TreeSelectionEvent lastSelectionEvent; private JCheckBox autoScrollCB; /** * Constructor */ public ViewResultsFullVisualizer() { super(); init(); } /** {@inheritDoc} */ public void add(final SampleResult sample) { JMeterUtils.runSafe(new Runnable() { public void run() { updateGui(sample); } }); } /** * Update the visualizer with new data. */ private synchronized void updateGui(SampleResult res) { // Add sample DefaultMutableTreeNode currNode = new DefaultMutableTreeNode(res); treeModel.insertNodeInto(currNode, root, root.getChildCount()); addSubResults(currNode, res); // Add any assertion that failed as children of the sample node AssertionResult assertionResults[] = res.getAssertionResults(); int assertionIndex = currNode.getChildCount(); for (int j = 0; j < assertionResults.length; j++) { AssertionResult item = assertionResults[j]; if (item.isFailure() || item.isError()) { DefaultMutableTreeNode assertionNode = new DefaultMutableTreeNode(item); treeModel.insertNodeInto(assertionNode, currNode, assertionIndex++); } } if (root.getChildCount() == 1) { jTree.expandPath(new TreePath(root)); } if (autoScrollCB.isSelected() && root.getChildCount() > 1) { jTree.scrollPathToVisible(new TreePath(new Object[] { root, treeModel.getChild(root, root.getChildCount() - 1) })); } } private void addSubResults(DefaultMutableTreeNode currNode, SampleResult res) { SampleResult[] subResults = res.getSubResults(); int leafIndex = 0; for (int i = 0; i < subResults.length; i++) { SampleResult child = subResults[i]; if (log.isDebugEnabled()) { log.debug("updateGui1 : child sample result - " + child); } DefaultMutableTreeNode leafNode = new DefaultMutableTreeNode(child); treeModel.insertNodeInto(leafNode, currNode, leafIndex++); addSubResults(leafNode, child); // Add any assertion that failed as children of the sample node AssertionResult assertionResults[] = child.getAssertionResults(); int assertionIndex = leafNode.getChildCount(); for (int j = 0; j < assertionResults.length; j++) { AssertionResult item = assertionResults[j]; if (item.isFailure() || item.isError()) { DefaultMutableTreeNode assertionNode = new DefaultMutableTreeNode(item); treeModel.insertNodeInto(assertionNode, leafNode, assertionIndex++); } } } } /** {@inheritDoc} */ public synchronized void clearData() { while (root.getChildCount() > 0) { // the child to be removed will always be 0 'cos as the nodes are // removed the nth node will become (n-1)th treeModel.removeNodeFromParent((DefaultMutableTreeNode) root.getChildAt(0)); } resultsRender.clearData(); } /** {@inheritDoc} */ public String getLabelResource() { return "view_results_tree_title"; // $NON-NLS-1$ } /** * Initialize this visualizer */ protected void init() { log.debug("init() - pass"); setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); leftSide = createLeftPanel(); // Prepare the common tab rightSide = new JTabbedPane(); // Create the split pane mainSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftSide, rightSide); add(mainSplit, BorderLayout.CENTER); // init right side with first render resultsRender.setRightSide(rightSide); resultsRender.init(); } /** {@inheritDoc} */ public void valueChanged(TreeSelectionEvent e) { lastSelectionEvent = e; DefaultMutableTreeNode node = null; synchronized (this) { node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent(); } if (node != null) { // to restore last tab used if (rightSide.getTabCount() > selectedTab) { resultsRender.setLastSelectedTab(rightSide.getSelectedIndex()); } Object userObject = node.getUserObject(); resultsRender.setSamplerResult(userObject); resultsRender.setupTabPane(); // Processes Assertions // display a SampleResult if (userObject instanceof SampleResult) { SampleResult sampleResult = (SampleResult) userObject; if ((SampleResult.TEXT).equals(sampleResult.getDataType())){ resultsRender.renderResult(sampleResult); } else { byte[] responseBytes = sampleResult.getResponseData(); if (responseBytes != null) { resultsRender.renderImage(sampleResult); } } } } } private synchronized Component createLeftPanel() { SampleResult rootSampleResult = new SampleResult(); rootSampleResult.setSampleLabel("Root"); rootSampleResult.setSuccessful(true); root = new DefaultMutableTreeNode(rootSampleResult); treeModel = new DefaultTreeModel(root); jTree = new JTree(treeModel); jTree.setCellRenderer(new ResultsNodeRenderer()); jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); jTree.addTreeSelectionListener(this); jTree.setRootVisible(false); jTree.setShowsRootHandles(true); JScrollPane treePane = new JScrollPane(jTree); treePane.setPreferredSize(new Dimension(200, 300)); VerticalPanel leftPane = new VerticalPanel(); leftPane.add(treePane, BorderLayout.CENTER); VerticalPanel leftDownPane = new VerticalPanel(); leftDownPane.add(createComboRender(), BorderLayout.NORTH); autoScrollCB = new JCheckBox(JMeterUtils.getResString("view_results_autoscroll")); autoScrollCB.setSelected(false); autoScrollCB.addItemListener(this); leftDownPane.add(autoScrollCB, BorderLayout.SOUTH); leftPane.add(leftDownPane, BorderLayout.SOUTH); return leftPane; } /** * Create the drop-down list to changer render * @return List of all render (implement ResultsRender) */ private Component createComboRender() { ComboBoxModel nodesModel = new DefaultComboBoxModel(); // drop-down list for renderer selectRenderPanel = new JComboBox(nodesModel); selectRenderPanel.setActionCommand(COMBO_CHANGE_COMMAND); selectRenderPanel.addActionListener(this); // if no results render in jmeter.properties, load Standard (default) List classesToAdd = Collections.emptyList(); try { classesToAdd = JMeterUtils.findClassesThatExtend(ResultRenderer.class); } catch (IOException e1) { // ignored } String textRenderer = JMeterUtils.getResString("view_results_render_text"); // $NON-NLS-1$ Object textObject = null; for (String clazz : classesToAdd) { try { // Instantiate render classes final ResultRenderer renderer = (ResultRenderer) Class.forName(clazz).newInstance(); if (textRenderer.equals(renderer.toString())){ textObject=renderer; } renderer.setBackgroundColor(getBackground()); selectRenderPanel.addItem(renderer); } catch (Exception e) { log.warn("Error in load result render:" + clazz, e); } } nodesModel.setSelectedItem(textObject); // preset to "Text" option return selectRenderPanel; } /** {@inheritDoc} */ public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if (COMBO_CHANGE_COMMAND.equals(command)) { JComboBox jcb = (JComboBox) event.getSource(); if (jcb != null) { resultsRender = (ResultRenderer) jcb.getSelectedItem(); if (rightSide != null) { // to restore last selected tab (better user-friendly) selectedTab = rightSide.getSelectedIndex(); // Remove old right side mainSplit.remove(rightSide); // create and add a new right side rightSide = new JTabbedPane(); mainSplit.add(rightSide); resultsRender.setRightSide(rightSide); resultsRender.setLastSelectedTab(selectedTab); log.debug("selectedTab=" + selectedTab); resultsRender.init(); // To display current sampler result before change this.valueChanged(lastSelectionEvent); } } } } public static String getResponseAsString(SampleResult res) { String response = null; if ((SampleResult.TEXT).equals(res.getDataType())) { // Showing large strings can be VERY costly, so we will avoid // doing so if the response // data is larger than 200K. TODO: instead, we could delay doing // the result.setText // call until the user chooses the "Response data" tab. Plus we // could warn the user // if this happens and revert the choice if he doesn't confirm // he's ready to wait. int len = res.getResponseData().length; if (MAX_DISPLAY_SIZE > 0 && len > MAX_DISPLAY_SIZE) { StringBuilder builder = new StringBuilder(MAX_DISPLAY_SIZE+100); builder.append(JMeterUtils.getResString("view_results_response_too_large_message")) //$NON-NLS-1$ .append(len).append(" > Max: ").append(MAX_DISPLAY_SIZE) .append(", ").append(JMeterUtils.getResString("view_results_response_partial_message")) .append("\n").append(res.getResponseDataAsString().substring(0, MAX_DISPLAY_SIZE)).append("\n..."); response = builder.toString(); } else { response = res.getResponseDataAsString(); } } return response; } private static class ResultsNodeRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = 4159626601097711565L; @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean focus) { super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, focus); boolean failure = true; Object userObject = ((DefaultMutableTreeNode) value).getUserObject(); if (userObject instanceof SampleResult) { failure = !(((SampleResult) userObject).isSuccessful()); } else if (userObject instanceof AssertionResult) { AssertionResult assertion = (AssertionResult) userObject; failure = assertion.isError() || assertion.isFailure(); } // Set the status for the node if (failure) { this.setForeground(Color.red); this.setIcon(imageFailure); } else { this.setIcon(imageSuccess); } return this; } } /** * Handler for Checkbox */ public void itemStateChanged(ItemEvent e) { // NOOP state is held by component } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/BSFListener.java0000644000175000017500000000471712032647216027251 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.visualizers; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.util.BSFTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class BSFListener extends BSFTestElement implements Cloneable, SampleListener, TestBean, Visualizer { // N.B. Needs to implement Visualizer so that TestBeanGUI can find the correct GUI class private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 234L; public void sampleOccurred(SampleEvent event) { BSFManager mgr =null; try { mgr = getManager(); if (mgr == null) { log.error("Problem creating BSF manager"); return; } mgr.declareBean("sampleEvent", event, SampleEvent.class); SampleResult result = event.getResult(); mgr.declareBean("sampleResult", result, SampleResult.class); processFileOrScript(mgr); } catch (BSFException e) { log.warn("Problem in BSF script "+e); } finally { if (mgr != null) { mgr.terminate(); } } } public void sampleStarted(SampleEvent e) { // NOOP } public void sampleStopped(SampleEvent e) { // NOOP } public void add(SampleResult sample) { // NOOP } public boolean isStats() { return false; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/RequestPanel.java0000644000175000017500000000760712032647216027542 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with this * work for additional information regarding copyright ownership. The ASF * licenses this file to You under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.io.IOException; import java.util.Collections; import java.util.LinkedList; import java.util.List; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingConstants; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Manipulate all classes which implements request view panel interface * and return a super panel with a bottom tab list of this classes * */ public class RequestPanel { private static final Logger log = LoggingManager.getLoggerForClass(); private final LinkedList listRequestView; private final JPanel panel; /** * Find and instanciate all class that extend RequestView * and Create Request Panel */ public RequestPanel() { listRequestView = new LinkedList(); List classesToAdd = Collections. emptyList(); try { classesToAdd = JMeterUtils.findClassesThatExtend(RequestView.class); } catch (IOException e1) { // ignored } String rawTab = JMeterUtils.getResString(RequestViewRaw.KEY_LABEL); // $NON-NLS-1$ Object rawObject = null; for (String clazz : classesToAdd) { try { // Instantiate requestview classes final RequestView requestView = (RequestView) Class.forName(clazz).newInstance(); if (rawTab.equals(requestView.getLabel())) { rawObject = requestView; // use later } else { listRequestView.add(requestView); } } catch (Exception e) { log.warn("Error in load result render:" + clazz, e); // $NON-NLS-1$ } } // place raw tab in first position (first tab) if (rawObject != null) { listRequestView.addFirst((RequestView) rawObject); } // Prepare the Request tabbed pane JTabbedPane tabbedRequest = new JTabbedPane(SwingConstants.BOTTOM); for (RequestView requestView : listRequestView) { requestView.init(); tabbedRequest.addTab(requestView.getLabel(), requestView.getPanel()); } // Hint to background color on bottom tabs (grey, not blue) panel = new JPanel(new BorderLayout()); panel.add(tabbedRequest); } /** * Clear data in all request view */ public void clearData() { for (RequestView requestView : listRequestView) { requestView.clearData(); } } /** * Put SamplerResult in all request view * * @param samplerResult */ public void setSamplerResult(SampleResult samplerResult) { for (RequestView requestView : listRequestView) { requestView.setSamplerResult(samplerResult); } } /** * @return a tabbed panel for view request */ public JPanel getPanel() { return panel; } } apache-jmeter-2.8/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java0000644000175000017500000005754212032647216030366 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map.Entry; import java.util.Set; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.JTextPane; import javax.swing.SwingConstants; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.text.BadLocationException; import javax.swing.text.Style; import javax.swing.text.StyleConstants; import javax.swing.text.StyledDocument; import org.apache.jmeter.assertions.AssertionResult; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.TextBoxDialoger.TextBoxDoubleClick; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.gui.RendererUtils; import org.apache.jorphan.reflect.Functor; /** * Right side in View Results Tree * */ public abstract class SamplerResultTab implements ResultRenderer { // N.B. these are not multi-threaded, so don't make it static private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); // ISO format $NON-NLS-1$ private static final String NL = "\n"; // $NON-NLS-1$ public static final Color SERVER_ERROR_COLOR = Color.red; public static final Color CLIENT_ERROR_COLOR = Color.blue; public static final Color REDIRECT_COLOR = Color.green; protected static final String TEXT_COMMAND = "text"; // $NON-NLS-1$ protected static final String REQUEST_VIEW_COMMAND = "change_request_view"; // $NON-NLS-1$ private static final String STYLE_SERVER_ERROR = "ServerError"; // $NON-NLS-1$ private static final String STYLE_CLIENT_ERROR = "ClientError"; // $NON-NLS-1$ private static final String STYLE_REDIRECT = "Redirect"; // $NON-NLS-1$ private JTextPane stats; private JPanel resultsPane; /** Response Data pane */ protected JScrollPane resultsScrollPane; /** Contains results; contained in resultsPane */ protected JEditorPane results; /** Response Data shown here */ private JLabel imageLabel; private RequestPanel requestPanel; /** request pane content */ protected JTabbedPane rightSide; /** holds the tabbed panes */ private int lastSelectedTab; private Object userObject = null; // Could be SampleResult or AssertionResult private SampleResult sampleResult = null; private AssertionResult assertionResult = null; protected SearchTextExtension searchTextExtension; private JPanel searchPanel = null; protected boolean activateSearchExtension = true; // most current subclasses can process text private Color backGround; private static final String[] COLUMNS_RESULT = new String[] { " ", // one space for blank header // $NON-NLS-1$ " " }; // one space for blank header // $NON-NLS-1$ private static final String[] COLUMNS_HEADERS = new String[] { "view_results_table_headers_key", // $NON-NLS-1$ "view_results_table_headers_value" }; // $NON-NLS-1$ private static final String[] COLUMNS_FIELDS = new String[] { "view_results_table_fields_key", // $NON-NLS-1$ "view_results_table_fields_value" }; // $NON-NLS-1$ private ObjectTableModel resultModel = null; private ObjectTableModel resHeadersModel = null; private ObjectTableModel resFieldsModel = null; private JTable tableResult = null; private JTable tableResHeaders = null; private JTable tableResFields = null; private JTabbedPane tabbedResult = null; private JScrollPane paneRaw = null; private JSplitPane paneParsed = null; // to save last select tab (raw/parsed) private int lastResultTabIndex= 0; // Result column renderers private static final TableCellRenderer[] RENDERERS_RESULT = new TableCellRenderer[] { null, // Key null, // Value }; // Response headers column renderers private static final TableCellRenderer[] RENDERERS_HEADERS = new TableCellRenderer[] { null, // Key null, // Value }; // Response fields column renderers private static final TableCellRenderer[] RENDERERS_FIELDS = new TableCellRenderer[] { null, // Key null, // Value }; public SamplerResultTab() { // create tables resultModel = new ObjectTableModel(COLUMNS_RESULT, RowResult.class, // The object used for each row new Functor[] { new Functor("getKey"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { null, null }, new Class[] { String.class, String.class }, false); resHeadersModel = new ObjectTableModel(COLUMNS_HEADERS, RowResult.class, // The object used for each row new Functor[] { new Functor("getKey"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { null, null }, new Class[] { String.class, String.class }, false); resFieldsModel = new ObjectTableModel(COLUMNS_FIELDS, RowResult.class, // The object used for each row new Functor[] { new Functor("getKey"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { null, null }, new Class[] { String.class, String.class }, false); } public void clearData() { results.setText("");// Response Data // $NON-NLS-1$ requestPanel.clearData();// Request Data // $NON-NLS-1$ stats.setText(""); // Sampler result // $NON-NLS-1$ resultModel.clearData(); resHeadersModel.clearData(); resFieldsModel.clearData(); } public void init() { rightSide.addTab(JMeterUtils.getResString("view_results_tab_sampler"), createResponseMetadataPanel()); // $NON-NLS-1$ // Create the panels for the other tabs requestPanel = new RequestPanel(); resultsPane = createResponseDataPanel(); } @SuppressWarnings("boxing") public void setupTabPane() { // Clear all data before display a new this.clearData(); StyledDocument statsDoc = stats.getStyledDocument(); try { if (userObject instanceof SampleResult) { sampleResult = (SampleResult) userObject; // We are displaying a SampleResult setupTabPaneForSampleResult(); requestPanel.setSamplerResult(sampleResult); final String samplerClass = sampleResult.getClass().getName(); String typeResult = samplerClass.substring(1 + samplerClass.lastIndexOf('.')); StringBuilder statsBuff = new StringBuilder(200); statsBuff.append(JMeterUtils.getResString("view_results_thread_name")).append(sampleResult.getThreadName()).append(NL); //$NON-NLS-1$ String startTime = dateFormat.format(new Date(sampleResult.getStartTime())); statsBuff.append(JMeterUtils.getResString("view_results_sample_start")).append(startTime).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_load_time")).append(sampleResult.getTime()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_latency")).append(sampleResult.getLatency()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_size_in_bytes")).append(sampleResult.getBytes()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_size_headers_in_bytes")).append(sampleResult.getHeadersSize()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_size_body_in_bytes")).append(sampleResult.getBodySize()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_sample_count")).append(sampleResult.getSampleCount()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_error_count")).append(sampleResult.getErrorCount()).append(NL); //$NON-NLS-1$ statsDoc.insertString(statsDoc.getLength(), statsBuff.toString(), null); statsBuff.setLength(0); // reset for reuse String responseCode = sampleResult.getResponseCode(); int responseLevel = 0; if (responseCode != null) { try { responseLevel = Integer.parseInt(responseCode) / 100; } catch (NumberFormatException numberFormatException) { // no need to change the foreground color } } Style style = null; switch (responseLevel) { case 3: style = statsDoc.getStyle(STYLE_REDIRECT); break; case 4: style = statsDoc.getStyle(STYLE_CLIENT_ERROR); break; case 5: style = statsDoc.getStyle(STYLE_SERVER_ERROR); break; default: // quieten Findbugs break; // default - do nothing } statsBuff.append(JMeterUtils.getResString("view_results_response_code")).append(responseCode).append(NL); //$NON-NLS-1$ statsDoc.insertString(statsDoc.getLength(), statsBuff.toString(), style); statsBuff.setLength(0); // reset for reuse // response message label String responseMsgStr = sampleResult.getResponseMessage(); statsBuff.append(JMeterUtils.getResString("view_results_response_message")).append(responseMsgStr).append(NL); //$NON-NLS-1$ statsBuff.append(NL); statsBuff.append(JMeterUtils.getResString("view_results_response_headers")).append(NL); //$NON-NLS-1$ statsBuff.append(sampleResult.getResponseHeaders()).append(NL); statsBuff.append(NL); statsBuff.append(typeResult + " "+ JMeterUtils.getResString("view_results_fields")).append(NL); //$NON-NLS-1$ $NON-NLS-2$ statsBuff.append("ContentType: ").append(sampleResult.getContentType()).append(NL); //$NON-NLS-1$ statsBuff.append("DataEncoding: ").append(sampleResult.getDataEncodingNoDefault()).append(NL); //$NON-NLS-1$ statsDoc.insertString(statsDoc.getLength(), statsBuff.toString(), null); statsBuff = null; // Done // Tabbed results: fill table resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_thread_name"), sampleResult.getThreadName())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_sample_start"), startTime)); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_load_time"), sampleResult.getTime())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_latency"), sampleResult.getLatency())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_in_bytes"), sampleResult.getBytes())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_headers_in_bytes"), sampleResult.getHeadersSize())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_size_body_in_bytes"), sampleResult.getBodySize())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_sample_count"), sampleResult.getSampleCount())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_error_count"), sampleResult.getErrorCount())); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_response_code"), responseCode)); //$NON-NLS-1$ resultModel.addRow(new RowResult(JMeterUtils.getParsedLabel("view_results_response_message"), responseMsgStr)); //$NON-NLS-1$ // Parsed response headers LinkedHashMap lhm = JMeterUtils.parseHeaders(sampleResult.getResponseHeaders()); Set> keySet = lhm.entrySet(); for (Entry entry : keySet) { resHeadersModel.addRow(new RowResult(entry.getKey(), entry.getValue())); } // Fields table resFieldsModel.addRow(new RowResult("Type Result ", typeResult)); //$NON-NLS-1$ //not sure needs I18N? resFieldsModel.addRow(new RowResult("ContentType", sampleResult.getContentType())); //$NON-NLS-1$ resFieldsModel.addRow(new RowResult("DataEncoding", sampleResult.getDataEncodingNoDefault())); //$NON-NLS-1$ // Reset search if (activateSearchExtension) { searchTextExtension.resetTextToFind(); } } else if (userObject instanceof AssertionResult) { assertionResult = (AssertionResult) userObject; // We are displaying an AssertionResult setupTabPaneForAssertionResult(); StringBuilder statsBuff = new StringBuilder(100); statsBuff.append(JMeterUtils.getResString("view_results_assertion_error")).append(assertionResult.isError()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_assertion_failure")).append(assertionResult.isFailure()).append(NL); //$NON-NLS-1$ statsBuff.append(JMeterUtils.getResString("view_results_assertion_failure_message")).append(assertionResult.getFailureMessage()).append(NL); //$NON-NLS-1$ statsDoc.insertString(statsDoc.getLength(), statsBuff.toString(), null); } } catch (BadLocationException exc) { stats.setText(exc.getLocalizedMessage()); } } private void setupTabPaneForSampleResult() { // restore tabbed pane parsed if needed if (tabbedResult.getTabCount() < 2) { tabbedResult.insertTab(JMeterUtils.getResString("view_results_table_result_tab_parsed"), null, paneParsed, null, 1); //$NON-NLS-1$ tabbedResult.setSelectedIndex(lastResultTabIndex); // select last tab } // Set the title for the first tab rightSide.setTitleAt(0, JMeterUtils.getResString("view_results_tab_sampler")); //$NON-NLS-1$ // Add the other tabs if not present if(rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_request")) < 0) { // $NON-NLS-1$ rightSide.addTab(JMeterUtils.getResString("view_results_tab_request"), requestPanel.getPanel()); // $NON-NLS-1$ } if(rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_response")) < 0) { // $NON-NLS-1$ rightSide.addTab(JMeterUtils.getResString("view_results_tab_response"), resultsPane); // $NON-NLS-1$ } // restore last selected tab if (lastSelectedTab < rightSide.getTabCount()) { rightSide.setSelectedIndex(lastSelectedTab); } } private void setupTabPaneForAssertionResult() { // Remove the other (parsed) tab if present if (tabbedResult.getTabCount() >= 2) { lastResultTabIndex = tabbedResult.getSelectedIndex(); int parsedTabIndex = tabbedResult.indexOfTab(JMeterUtils.getResString("view_results_table_result_tab_parsed")); // $NON-NLS-1$ if(parsedTabIndex >= 0) { tabbedResult.removeTabAt(parsedTabIndex); } } // Set the title for the first tab rightSide.setTitleAt(0, JMeterUtils.getResString("view_results_tab_assertion")); //$NON-NLS-1$ // Remove the other tabs if present int requestTabIndex = rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_request")); // $NON-NLS-1$ if(requestTabIndex >= 0) { rightSide.removeTabAt(requestTabIndex); } int responseTabIndex = rightSide.indexOfTab(JMeterUtils.getResString("view_results_tab_response")); // $NON-NLS-1$ if(responseTabIndex >= 0) { rightSide.removeTabAt(responseTabIndex); } } private Component createResponseMetadataPanel() { stats = new JTextPane(); stats.setEditable(false); stats.setBackground(backGround); // Add styles to use for different types of status messages StyledDocument doc = (StyledDocument) stats.getDocument(); Style style = doc.addStyle(STYLE_REDIRECT, null); StyleConstants.setForeground(style, REDIRECT_COLOR); style = doc.addStyle(STYLE_CLIENT_ERROR, null); StyleConstants.setForeground(style, CLIENT_ERROR_COLOR); style = doc.addStyle(STYLE_SERVER_ERROR, null); StyleConstants.setForeground(style, SERVER_ERROR_COLOR); paneRaw = GuiUtils.makeScrollPane(stats); paneRaw.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); // Set up the 1st table Result with empty headers tableResult = new JTable(resultModel); tableResult.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell")); // $NON-NLS-1$ tableResult.addMouseListener(new TextBoxDoubleClick(tableResult)); setFirstColumnPreferredSize(tableResult); RendererUtils.applyRenderers(tableResult, RENDERERS_RESULT); // Set up the 2nd table tableResHeaders = new JTable(resHeadersModel); tableResHeaders.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell")); // $NON-NLS-1$ tableResHeaders.addMouseListener(new TextBoxDoubleClick(tableResHeaders)); setFirstColumnPreferredSize(tableResHeaders); tableResHeaders.getTableHeader().setDefaultRenderer( new HeaderAsPropertyRenderer()); RendererUtils.applyRenderers(tableResHeaders, RENDERERS_HEADERS); // Set up the 3rd table tableResFields = new JTable(resFieldsModel); tableResFields.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell")); // $NON-NLS-1$ tableResFields.addMouseListener(new TextBoxDoubleClick(tableResFields)); setFirstColumnPreferredSize(tableResFields); tableResFields.getTableHeader().setDefaultRenderer( new HeaderAsPropertyRenderer()); RendererUtils.applyRenderers(tableResFields, RENDERERS_FIELDS); // Prepare the Results tabbed pane tabbedResult = new JTabbedPane(SwingConstants.BOTTOM); // Create the split pane JSplitPane topSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, GuiUtils.makeScrollPane(tableResHeaders), GuiUtils.makeScrollPane(tableResFields)); topSplit.setOneTouchExpandable(true); topSplit.setResizeWeight(0.80); // set split ratio topSplit.setBorder(null); // see bug jdk 4131528 paneParsed = new JSplitPane(JSplitPane.VERTICAL_SPLIT, GuiUtils.makeScrollPane(tableResult), topSplit); paneParsed.setOneTouchExpandable(true); paneParsed.setResizeWeight(0.40); // set split ratio paneParsed.setBorder(null); // see bug jdk 4131528 // setup bottom tabs, first Raw, second Parsed tabbedResult.addTab(JMeterUtils.getResString("view_results_table_result_tab_raw"), paneRaw); //$NON-NLS-1$ tabbedResult.addTab(JMeterUtils.getResString("view_results_table_result_tab_parsed"), paneParsed); //$NON-NLS-1$ // Hint to background color on bottom tabs (grey, not blue) JPanel panel = new JPanel(new BorderLayout()); panel.add(tabbedResult); return panel; } private JPanel createResponseDataPanel() { results = new JEditorPane(); results.setEditable(false); resultsScrollPane = GuiUtils.makeScrollPane(results); imageLabel = new JLabel(); JPanel panel = new JPanel(new BorderLayout()); panel.add(resultsScrollPane, BorderLayout.CENTER); if (activateSearchExtension) { // Add search text extension searchTextExtension = new SearchTextExtension(); searchTextExtension.init(panel); searchPanel = searchTextExtension.createSearchTextExtensionPane(); searchTextExtension.setResults(results); searchPanel.setVisible(true); panel.add(searchPanel, BorderLayout.PAGE_END); } return panel; } private void showImage(Icon image) { imageLabel.setIcon(image); resultsScrollPane.setViewportView(imageLabel); } public synchronized void setSamplerResult(Object sample) { userObject = sample; } public synchronized void setRightSide(JTabbedPane side) { rightSide = side; } public void setLastSelectedTab(int index) { lastSelectedTab = index; } public void renderImage(SampleResult sampleResult) { byte[] responseBytes = sampleResult.getResponseData(); if (responseBytes != null) { showImage(new ImageIcon(responseBytes)); //TODO implement other non-text types } } public void setBackgroundColor(Color backGround){ this.backGround = backGround; } private void setFirstColumnPreferredSize(JTable table) { TableColumn column = table.getColumnModel().getColumn(0); column.setMaxWidth(300); column.setPreferredWidth(180); } /** * For model table */ public static class RowResult { private String key; private Object value; public RowResult(String key, Object value) { this.key = key; this.value = value; } /** * @return the key */ public synchronized String getKey() { return key; } /** * @param key * the key to set */ public synchronized void setKey(String key) { this.key = key; } /** * @return the value */ public synchronized Object getValue() { return value; } /** * @param value * the value to set */ public synchronized void setValue(Object value) { this.value = value; } } }apache-jmeter-2.8/src/components/org/apache/jmeter/control/0000755000175000017500000000000012165514773023365 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/control/ForeachController.java0000644000175000017500000001310012032647216027626 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ForeachController extends GenericController implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final String INPUTVAL = "ForeachController.inputVal";// $NON-NLS-1$ private static final String RETURNVAL = "ForeachController.returnVal";// $NON-NLS-1$ private static final String USE_SEPARATOR = "ForeachController.useSeparator";// $NON-NLS-1$ private int loopCount = 0; private static final String DEFAULT_SEPARATOR = "_";// $NON-NLS-1$ public ForeachController() { } public void setInputVal(String inputValue) { setProperty(new StringProperty(INPUTVAL, inputValue)); } private String getInputVal() { getProperty(INPUTVAL).recoverRunningVersion(null); return getInputValString(); } public String getInputValString() { return getPropertyAsString(INPUTVAL); } public void setReturnVal(String inputValue) { setProperty(new StringProperty(RETURNVAL, inputValue)); } private String getReturnVal() { getProperty(RETURNVAL).recoverRunningVersion(null); return getReturnValString(); } public String getReturnValString() { return getPropertyAsString(RETURNVAL); } private String getSeparator() { return getUseSeparator() ? DEFAULT_SEPARATOR : "";// $NON-NLS-1$ } public void setUseSeparator(boolean b) { setProperty(new BooleanProperty(USE_SEPARATOR, b)); } public boolean getUseSeparator() { return getPropertyAsBoolean(USE_SEPARATOR, true); } /** * {@inheritDoc} */ @Override public boolean isDone() { JMeterContext context = getThreadContext(); String inputVariable = getInputVal() + getSeparator() + (loopCount + 1); final JMeterVariables variables = context.getVariables(); final Object currentVariable = variables.getObject(inputVariable); if (currentVariable != null) { variables.putObject(getReturnVal(), currentVariable); if (log.isDebugEnabled()) { log.debug("ForEach resultstring isDone=" + variables.get(getReturnVal())); } return false; } return super.isDone(); } private boolean endOfArguments() { JMeterContext context = getThreadContext(); String inputVariable = getInputVal() + getSeparator() + (loopCount + 1); if (context.getVariables().getObject(inputVariable) != null) { log.debug("ForEach resultstring eofArgs= false"); return false; } log.debug("ForEach resultstring eofArgs= true"); return true; } // Prevent entry if nothing to do @Override public Sampler next() { if (emptyList()) { reInitialize(); resetLoopCount(); return null; } return super.next(); } /** * Check if there are any matching entries * * @return whether any entries in the list */ private boolean emptyList() { JMeterContext context = getThreadContext(); String inputVariable = getInputVal() + getSeparator() + "1";// $NON-NLS-1$ if (context.getVariables().getObject(inputVariable) != null) { return false; } if (log.isDebugEnabled()) { log.debug("No entries found - null first entry: " + inputVariable); } return true; } /** * {@inheritDoc} */ @Override protected Sampler nextIsNull() throws NextIsNullException { reInitialize(); if (endOfArguments()) { // setDone(true); resetLoopCount(); return null; } return next(); } protected void incrementLoopCount() { loopCount++; } protected void resetLoopCount() { loopCount = 0; } /** * {@inheritDoc} */ @Override protected int getIterCount() { return loopCount + 1; } /** * {@inheritDoc} */ @Override protected void reInitialize() { setFirst(true); resetCurrent(); incrementLoopCount(); recoverRunningVersion(); } /** * {@inheritDoc} */ @Override public void triggerEndOfLoop() { super.triggerEndOfLoop(); resetLoopCount(); } }apache-jmeter-2.8/src/components/org/apache/jmeter/control/IncludeController.java0000644000175000017500000001702212032647216027651 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import java.util.LinkedList; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class IncludeController extends GenericController implements ReplaceableController { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final String INCLUDE_PATH = "IncludeController.includepath"; //$NON-NLS-1$ private static final String prefix = JMeterUtils.getPropDefault( "includecontroller.prefix", //$NON-NLS-1$ ""); //$NON-NLS-1$ private HashTree subtree = null; private TestElement sub = null; /** * No-arg constructor * * @see java.lang.Object#Object() */ public IncludeController() { super(); } @Override public Object clone() { // TODO - fix so that this is only called once per test, instead of at every clone // Perhaps save previous filename, and only load if it has changed? this.resolveReplacementSubTree(null); IncludeController clone = (IncludeController) super.clone(); clone.setIncludePath(this.getIncludePath()); if (this.subtree != null) { if (this.subtree.keySet().size() == 1) { Iterator itr = this.subtree.keySet().iterator(); while (itr.hasNext()) { this.sub = (TestElement) itr.next(); } } clone.subtree = (HashTree)this.subtree.clone(); clone.sub = this.sub==null ? null : (TestElement) this.sub.clone(); } return clone; } /** * In the event an user wants to include an external JMX test plan * the GUI would call this. * @param jmxfile */ public void setIncludePath(String jmxfile) { this.setProperty(INCLUDE_PATH,jmxfile); } /** * return the JMX file path. * @return the JMX file path */ public String getIncludePath() { return this.getPropertyAsString(INCLUDE_PATH); } /** * The way ReplaceableController works is clone is called first, * followed by replace(HashTree) and finally getReplacement(). */ public HashTree getReplacementSubTree() { return subtree; } public TestElement getReplacementElement() { return sub; } public void resolveReplacementSubTree(JMeterTreeNode context) { this.subtree = this.loadIncludedElements(); } /** * load the included elements using SaveService */ protected HashTree loadIncludedElements() { // only try to load the JMX test plan if there is one final String includePath = getIncludePath(); InputStream reader = null; HashTree tree = null; if (includePath != null && includePath.length() > 0) { try { String fileName=prefix+includePath; File file = new File(fileName); final String absolutePath = file.getAbsolutePath(); log.info("loadIncludedElements -- try to load included module: "+absolutePath); if(!file.exists() && !file.isAbsolute()){ log.info("loadIncludedElements -failed for: "+absolutePath); file = new File(FileServer.getFileServer().getBaseDir(), includePath); log.info("loadIncludedElements -Attempting to read it from: "+absolutePath); if(!file.exists()){ log.error("loadIncludedElements -failed for: "+absolutePath); throw new IOException("loadIncludedElements -failed for: "+absolutePath); } } reader = new FileInputStream(file); tree = SaveService.loadTree(reader); // filter the tree for a TestFragment. tree = getProperBranch(tree); removeDisabledItems(tree); return tree; } catch (NoClassDefFoundError ex) // Allow for missing optional jars { String msg = ex.getMessage(); if (msg == null) { msg = "Missing jar file - see log for details"; } log.warn("Missing jar file", ex); JMeterUtils.reportErrorToUser(msg); } catch (FileNotFoundException ex) { String msg = ex.getMessage(); JMeterUtils.reportErrorToUser(msg); log.warn(msg); } catch (Exception ex) { String msg = ex.getMessage(); if (msg == null) { msg = "Unexpected error - see log for details"; } JMeterUtils.reportErrorToUser(msg); log.warn("Unexpected error", ex); } finally{ JOrphanUtils.closeQuietly(reader); } } return tree; } private HashTree getProperBranch(HashTree tree) { Iterator iter = new LinkedList(tree.list()).iterator(); while (iter.hasNext()) { TestElement item = (TestElement) iter.next(); //if we found a TestPlan, then we are on our way to the TestFragment if (item instanceof TestPlan) { return getProperBranch(tree.getTree(item)); } if (item instanceof TestFragmentController) { return tree.getTree(item); } } //return the tree since we didn't find a TestFragment. This will mimic the //old behavior to import an exact node. return tree; } private void removeDisabledItems(HashTree tree) { Iterator iter = new LinkedList(tree.list()).iterator(); while (iter.hasNext()) { TestElement item = (TestElement) iter.next(); if (!item.isEnabled()) { //log.info("Removing "+item.toString()); tree.remove(item); } else { //log.info("Keeping "+item.toString()); removeDisabledItems(tree.getTree(item));// Recursive call } } } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/0000755000175000017500000000000012165514773024151 5ustar ebourgebourgapache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/ModuleControllerGui.java0000644000175000017500000002120112032647216030736 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.FlowLayout; import java.util.Collection; import java.util.Iterator; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JPopupMenu; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.ModuleController; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; /** * ModuleController Gui. * */ public class ModuleControllerGui extends AbstractControllerGui // implements UnsharedComponent { private static final long serialVersionUID = 240L; private JMeterTreeNode selected = null; private final JComboBox nodes; private final DefaultComboBoxModel nodesModel; private final JLabel warningLabel; /** * Initializes the gui panel for the ModuleController instance. */ public ModuleControllerGui() { nodesModel = new DefaultComboBoxModel(); nodes = new JComboBox(nodesModel); warningLabel = new JLabel(""); // $NON-NLS-1$ init(); } /** {@inheritDoc}} */ public String getLabelResource() { return "module_controller_title"; // $NON-NLS-1$ } /** {@inheritDoc}} */ @Override public void configure(TestElement el) { super.configure(el); ModuleController controller = (ModuleController) el; this.selected = controller.getSelectedNode(); if (selected == null && controller.getNodePath() != null) { warningLabel.setText(JMeterUtils.getResString("module_controller_warning") // $NON-NLS-1$ + renderPath(controller.getNodePath())); } else { warningLabel.setText(""); // $NON-NLS-1$ } reinitialize(); } private String renderPath(Collection path) { Iterator iter = path.iterator(); StringBuilder buf = new StringBuilder(); boolean first = true; while (iter.hasNext()) { if (first) { first = false; iter.next(); continue; } buf.append(iter.next()); if (iter.hasNext()) { buf.append(" > "); // $NON-NLS-1$ } } return buf.toString(); } /** {@inheritDoc}} */ public TestElement createTestElement() { ModuleController mc = new ModuleController(); configureTestElement(mc); if (selected != null) { mc.setSelectedNode(selected); } return mc; } /** {@inheritDoc}} */ public void modifyTestElement(TestElement element) { configureTestElement(element); TreeNodeWrapper tnw = (TreeNodeWrapper) nodesModel.getSelectedItem(); if (tnw != null && tnw.getTreeNode() != null) { selected = tnw.getTreeNode(); if (selected != null) { ((ModuleController) element).setSelectedNode(selected); } } } /** {@inheritDoc}} */ @Override public void clearGui() { super.clearGui(); nodes.setSelectedIndex(-1); selected = null; } /** {@inheritDoc}} */ @Override public JPopupMenu createPopupMenu() { JPopupMenu menu = new JPopupMenu(); JMenu addMenu = MenuFactory.makeMenus( new String[] { MenuFactory.CONFIG_ELEMENTS, MenuFactory.ASSERTIONS, MenuFactory.TIMERS, MenuFactory.LISTENERS, }, JMeterUtils.getResString("add"), // $NON-NLS-1$ ActionNames.ADD); menu.add(addMenu); MenuFactory.addEditMenu(menu, true); MenuFactory.addFileMenu(menu); return menu; } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); // DROP-DOWN MENU JPanel modulesPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 5)); JLabel nodesLabel = new JLabel(JMeterUtils.getResString("module_controller_module_to_run")); // $NON-NLS-1$ modulesPanel.add(nodesLabel); nodesLabel.setLabelFor(nodes); reinitialize(); modulesPanel.add(nodes); modulesPanel.add(warningLabel); add(modulesPanel); } private void reinitialize() { TreeNodeWrapper current; nodesModel.removeAllElements(); GuiPackage gp = GuiPackage.getInstance(); JMeterTreeNode root; if (gp != null) { root = (JMeterTreeNode) GuiPackage.getInstance().getTreeModel().getRoot(); buildNodesModel(root, "", 0); // $NON-NLS-1$ } if (selected != null) { for (int i = 0; i < nodesModel.getSize(); i++) { current = (TreeNodeWrapper) nodesModel.getElementAt(i); if (current.getTreeNode() != null && current.getTreeNode().equals(selected)) { nodesModel.setSelectedItem(current); break; } } } } private void buildNodesModel(JMeterTreeNode node, String parent_name, int level) { if (level == 0 && (parent_name == null || parent_name.length() == 0)) { nodesModel.addElement(new TreeNodeWrapper(null, "")); // $NON-NLS-1$ } String seperator = " > "; // $NON-NLS-1$ if (node != null) { StringBuilder name = new StringBuilder(); for (int i = 0; i < node.getChildCount(); i++) { name.setLength(0); JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i); TestElement te = cur.getTestElement(); if (te instanceof AbstractThreadGroup) { name.append(parent_name); name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), level); } else if (te instanceof Controller && !(te instanceof ModuleController)) { name.append(spaces(level)); name.append(parent_name); name.append(cur.getName()); TreeNodeWrapper tnw = new TreeNodeWrapper(cur, name.toString()); nodesModel.addElement(tnw); name.setLength(0); name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), level + 1); } else if (te instanceof TestPlan || te instanceof WorkBench) { name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), 0); } } } } private String spaces(int level) { int multi = 4; StringBuilder spaces = new StringBuilder(level * multi); for (int i = 0; i < level * multi; i++) { spaces.append(" "); // $NON-NLS-1$ } return spaces.toString(); } } class TreeNodeWrapper { private final JMeterTreeNode tn; private final String label; public TreeNodeWrapper(JMeterTreeNode tn, String label) { this.tn = tn; this.label = label; } public JMeterTreeNode getTreeNode() { return tn; } /** {@inheritDoc}} */ @Override public String toString() { return label; } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/RandomControlGui.java0000644000175000017500000000545112032647216030237 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import javax.swing.JCheckBox; import org.apache.jmeter.control.InterleaveControl; import org.apache.jmeter.control.RandomController; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class RandomControlGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; private JCheckBox style; public RandomControlGui() { init(); } public TestElement createTestElement() { RandomController ic = new RandomController(); modifyTestElement(ic); return ic; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement ic) { configureTestElement(ic); if (style.isSelected()) { ((RandomController) ic).setStyle(InterleaveControl.IGNORE_SUB_CONTROLLERS); } else { ((RandomController) ic).setStyle(InterleaveControl.USE_SUB_CONTROLLERS); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); style.setSelected(false); } @Override public void configure(TestElement el) { super.configure(el); if (((RandomController) el).getStyle() == InterleaveControl.IGNORE_SUB_CONTROLLERS) { style.setSelected(true); } else { style.setSelected(false); } } public String getLabelResource() { return "random_control_title"; // $NON-NLS-1$ } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); style = new JCheckBox(JMeterUtils.getResString("ignore_subcontrollers")); // $NON-NLS-1$ add(style); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/OnceOnlyControllerGui.java0000644000175000017500000000356512032647216031254 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import org.apache.jmeter.control.OnceOnlyController; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.gui.layout.VerticalLayout; public class OnceOnlyControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; public OnceOnlyControllerGui() { init(); } public TestElement createTestElement() { OnceOnlyController oc = new OnceOnlyController(); modifyTestElement(oc); return oc; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement oc) { configureTestElement(oc); } public String getLabelResource() { return "once_only_controller_title"; // $NON-NLS-1$ } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/RandomOrderControllerGui.java0000644000175000017500000000310112032647216031724 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.control.gui; import org.apache.jmeter.control.RandomOrderController; import org.apache.jmeter.testelement.TestElement; /** * GUI for RandomOrderController. * */ public class RandomOrderControllerGui extends LogicControllerGui { private static final long serialVersionUID = 240L; @Override public String getLabelResource() { return "random_order_control_title"; // $NON-NLS-1$ } /** * {@inheritDoc} */ @Override public TestElement createTestElement() { RandomOrderController ic = new RandomOrderController(); modifyTestElement(ic); return ic; } /** * {@inheritDoc} */ @Override public void modifyTestElement(TestElement ic) { configureTestElement(ic); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/ThroughputControllerGui.java0000644000175000017500000001406012032647216031667 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.DefaultComboBoxModel; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.ThroughputController; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class ThroughputControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; private JComboBox styleBox; private int style; private JTextField throughput; private JCheckBox perthread; private boolean isPerThread = true; // These must not be static, otherwise Language change does not work private final String BYNUMBER_LABEL = JMeterUtils.getResString("throughput_control_bynumber_label"); // $NON-NLS-1$ private final String BYPERCENT_LABEL = JMeterUtils.getResString("throughput_control_bypercent_label"); // $NON-NLS-1$ private final String THROUGHPUT_LABEL = JMeterUtils.getResString("throughput_control_tplabel"); // $NON-NLS-1$ private final String PERTHREAD_LABEL = JMeterUtils.getResString("throughput_control_perthread_label"); // $NON-NLS-1$ public ThroughputControllerGui() { init(); } public TestElement createTestElement() { ThroughputController tc = new ThroughputController(); modifyTestElement(tc); return tc; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement tc) { configureTestElement(tc); ((ThroughputController) tc).setStyle(style); ((ThroughputController) tc).setPerThread(isPerThread); if (style == ThroughputController.BYNUMBER) { try { ((ThroughputController) tc).setMaxThroughput(Integer.parseInt(throughput.getText().trim())); } catch (NumberFormatException e) { // In case we are converting back from floating point, drop the decimal fraction ((ThroughputController) tc).setMaxThroughput(throughput.getText().trim().split("\\.")[0]); // $NON-NLS-1$ } } else { try { ((ThroughputController) tc).setPercentThroughput(Float.parseFloat(throughput.getText().trim())); } catch (NumberFormatException e) { ((ThroughputController) tc).setPercentThroughput(throughput.getText()); } } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); styleBox.setSelectedIndex(0); throughput.setText("1"); // $NON-NLS-1$ perthread.setSelected(true); } @Override public void configure(TestElement el) { super.configure(el); if (((ThroughputController) el).getStyle() == ThroughputController.BYNUMBER) { styleBox.getModel().setSelectedItem(BYNUMBER_LABEL); throughput.setText(((ThroughputController) el).getMaxThroughput()); } else { styleBox.setSelectedItem(BYPERCENT_LABEL); throughput.setText(((ThroughputController) el).getPercentThroughput()); } perthread.setSelected(((ThroughputController) el).isPerThread()); } public String getLabelResource() { return "throughput_control_title"; // $NON-NLS-1$ } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); DefaultComboBoxModel styleModel = new DefaultComboBoxModel(); styleModel.addElement(BYNUMBER_LABEL); styleModel.addElement(BYPERCENT_LABEL); styleBox = new JComboBox(styleModel); styleBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (((String) styleBox.getSelectedItem()).equals(BYNUMBER_LABEL)) { style = ThroughputController.BYNUMBER; } else { style = ThroughputController.BYPERCENT; } } }); add(styleBox); // TYPE FIELD JPanel tpPanel = new JPanel(); JLabel tpLabel = new JLabel(THROUGHPUT_LABEL); tpPanel.add(tpLabel); // TEXT FIELD throughput = new JTextField(5); tpPanel.add(throughput); throughput.setText("1"); // $NON-NLS-1$ // throughput.addActionListener(this); tpPanel.add(throughput); add(tpPanel); // PERTHREAD FIELD perthread = new JCheckBox(PERTHREAD_LABEL, isPerThread); perthread.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { isPerThread = true; } else { isPerThread = false; } } }); add(perthread); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/IncludeControllerGui.java0000644000175000017500000000660712032647216031111 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import javax.swing.JMenu; import javax.swing.JPopupMenu; import org.apache.jmeter.control.IncludeController; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class IncludeControllerGui extends AbstractControllerGui // implements UnsharedComponent { private static final long serialVersionUID = 240L; private final FilePanel includePanel = new FilePanel(JMeterUtils.getResString("include_path"), ".jmx"); //$NON-NLS-1$ //$NON-NLS-2$ /** * Initializes the gui panel for the ModuleController instance. */ public IncludeControllerGui() { init(); } public String getLabelResource() { return "include_controller";//$NON-NLS-1$ } /** * {@inheritDoc} */ @Override public void configure(TestElement el) { super.configure(el); IncludeController controller = (IncludeController) el; this.includePanel.setFilename(controller.getIncludePath()); } /** * {@inheritDoc} */ public TestElement createTestElement() { IncludeController mc = new IncludeController(); configureTestElement(mc); return mc; } /** * {@inheritDoc} */ public void modifyTestElement(TestElement element) { configureTestElement(element); IncludeController controller = (IncludeController)element; controller.setIncludePath(this.includePanel.getFilename()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); includePanel.clearGui(); } @Override public JPopupMenu createPopupMenu() { JPopupMenu menu = new JPopupMenu(); JMenu addMenu = MenuFactory.makeMenus(new String[] { MenuFactory.CONFIG_ELEMENTS, MenuFactory.ASSERTIONS, MenuFactory.TIMERS, MenuFactory.LISTENERS, }, JMeterUtils.getResString("add"), // $NON-NLS-1$ ActionNames.ADD); menu.add(addMenu); MenuFactory.addEditMenu(menu, true); MenuFactory.addFileMenu(menu); return menu; } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); add(includePanel); } }apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/SwitchControllerGui.java0000644000175000017500000000611312032647216030757 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.SwitchController; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class SwitchControllerGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; private static final String SWITCH_LABEL = "switch_controller_label"; // $NON-NLS-1$ private JTextField switchValue; public SwitchControllerGui() { init(); } public TestElement createTestElement() { SwitchController ic = new SwitchController(); modifyTestElement(ic); return ic; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement ic) { configureTestElement(ic); ((SwitchController) ic).setSelection(switchValue.getText()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); switchValue.setText(""); // $NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); switchValue.setText(((SwitchController) el).getSelection()); } public String getLabelResource() { return "switch_controller_title"; // $NON-NLS-1$ } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(createSwitchPanel(), BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } private JPanel createSwitchPanel() { JPanel switchPanel = new JPanel(new BorderLayout(5, 0)); JLabel selectionLabel = new JLabel(JMeterUtils.getResString(SWITCH_LABEL)); switchValue = new JTextField(""); // $NON-NLS-1$ selectionLabel.setLabelFor(switchValue); switchPanel.add(selectionLabel, BorderLayout.WEST); switchPanel.add(switchValue, BorderLayout.CENTER); return switchPanel; } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/InterleaveControlGui.java0000644000175000017500000000541012032647216031110 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import javax.swing.JCheckBox; import org.apache.jmeter.control.InterleaveControl; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; public class InterleaveControlGui extends AbstractControllerGui { private static final long serialVersionUID = 240L; private JCheckBox style; public InterleaveControlGui() { init(); } @Override public void configure(TestElement el) { super.configure(el); if (((InterleaveControl) el).getStyle() == InterleaveControl.IGNORE_SUB_CONTROLLERS) { style.setSelected(true); } else { style.setSelected(false); } } public TestElement createTestElement() { InterleaveControl ic = new InterleaveControl(); modifyTestElement(ic); return ic; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement ic) { configureTestElement(ic); if (style.isSelected()) { ((InterleaveControl) ic).setStyle(InterleaveControl.IGNORE_SUB_CONTROLLERS); } else { ((InterleaveControl) ic).setStyle(InterleaveControl.USE_SUB_CONTROLLERS); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); style.setSelected(false); } public String getLabelResource() { return "interleave_control_title"; // $NON-NLS-1$ } private void init() { setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP)); setBorder(makeBorder()); add(makeTitlePanel()); style = new JCheckBox(JMeterUtils.getResString("ignore_subcontrollers")); // $NON-NLS-1$ add(style); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/gui/ForeachControlPanel.java0000644000175000017500000001707412032647216030705 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.BorderLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.ForeachController; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * The user interface for a foreach controller which specifies that its * subcomponents should be executed some number of times in a loop. This * component can be used standalone or embedded into some other component. */ public class ForeachControlPanel extends AbstractControllerGui { private static final long serialVersionUID = 240L; /** * A field allowing the user to specify the input variable the controller * should loop. */ private JTextField inputVal; /** * A field allowing the user to specify output variable the controller * should return. */ private JTextField returnVal; // Should we add the "_" separator? private JCheckBox useSeparator; /** * Boolean indicating whether or not this component should display its name. * If true, this is a standalone component. If false, this component is * intended to be used as a subpanel for another component. */ private boolean displayName = true; /** The name of the infinite checkbox component. */ private static final String INPUTVAL = "Input Field"; // $NON-NLS-1$ /** The name of the loops field component. */ private static final String RETURNVAL = "Return Field"; // $NON-NLS-1$ /** * Create a new LoopControlPanel as a standalone component. */ public ForeachControlPanel() { this(true); } /** * Create a new LoopControlPanel as either a standalone or an embedded * component. * * @param displayName * indicates whether or not this component should display its * name. If true, this is a standalone component. If false, this * component is intended to be used as a subpanel for another * component. */ public ForeachControlPanel(boolean displayName) { this.displayName = displayName; init(); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); inputVal.setText(((ForeachController) element).getInputValString()); returnVal.setText(((ForeachController) element).getReturnValString()); useSeparator.setSelected(((ForeachController) element).getUseSeparator()); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { ForeachController lc = new ForeachController(); modifyTestElement(lc); return lc; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement lc) { configureTestElement(lc); if (lc instanceof ForeachController) { if (inputVal.getText().length() > 0) { ((ForeachController) lc).setInputVal(inputVal.getText()); } else { ((ForeachController) lc).setInputVal(""); // $NON-NLS-1$ } if (returnVal.getText().length() > 0) { ((ForeachController) lc).setReturnVal(returnVal.getText()); } else { ((ForeachController) lc).setReturnVal(""); // $NON-NLS-1$ } ((ForeachController) lc).setUseSeparator(useSeparator.isSelected()); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); inputVal.setText(""); // $NON-NLS-1$ returnVal.setText(""); // $NON-NLS-1$ useSeparator.setSelected(true); } public String getLabelResource() { return "foreach_controller_title"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout for this component. */ private void init() { // The Loop Controller panel can be displayed standalone or inside // another panel. For standalone, we want to display the TITLE, NAME, // etc. (everything). However, if we want to display it within another // panel, we just display the Loop Count fields (not the TITLE and // NAME). // Standalone if (displayName) { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(createLoopCountPanel(), BorderLayout.NORTH); add(mainPanel, BorderLayout.CENTER); } else { // Embedded setLayout(new BorderLayout()); add(createLoopCountPanel(), BorderLayout.NORTH); } } /** * Create a GUI panel containing the components related to the number of * loops which should be executed. * * @return a GUI panel containing the loop count components */ private JPanel createLoopCountPanel() { // JPanel loopPanel = new JPanel(new BorderLayout(5, 0)); VerticalPanel loopPanel = new VerticalPanel(); // LOOP LABEL JLabel inputValLabel = new JLabel(JMeterUtils.getResString("foreach_input")); // $NON-NLS-1$ JLabel returnValLabel = new JLabel(JMeterUtils.getResString("foreach_output")); // $NON-NLS-1$ // TEXT FIELD JPanel inputValSubPanel = new JPanel(new BorderLayout(5, 0)); inputVal = new JTextField("", 5); // $NON-NLS-1$ inputVal.setName(INPUTVAL); inputValLabel.setLabelFor(inputVal); inputValSubPanel.add(inputValLabel, BorderLayout.WEST); inputValSubPanel.add(inputVal, BorderLayout.CENTER); // TEXT FIELD JPanel returnValSubPanel = new JPanel(new BorderLayout(5, 0)); returnVal = new JTextField("", 5); // $NON-NLS-1$ returnVal.setName(RETURNVAL); returnValLabel.setLabelFor(returnVal); returnValSubPanel.add(returnValLabel, BorderLayout.WEST); returnValSubPanel.add(returnVal, BorderLayout.CENTER); // Checkbox useSeparator = new JCheckBox(JMeterUtils.getResString("foreach_use_separator"), true); // $NON-NLS-1$ loopPanel.add(inputValSubPanel); loopPanel.add(returnValSubPanel); loopPanel.add(useSeparator); return loopPanel; } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/ModuleController.java0000644000175000017500000001574212032647216027522 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import javax.swing.tree.TreeNode; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.ListedHashTree; /** * The goal of ModuleController is to add modularity to JMeter. The general idea * is that web applications consist of small units of functionality (i.e. Logon, * Create Account, Logoff...) which consist of requests that implement the * functionality. These small units of functionality can be stored in * SimpleControllers as modules that can be linked together quickly to form * tests. ModuleController facilitates this by acting as a pointer to any * controller that sits under the WorkBench. The controller and it's subelements * will be substituted in place of the ModuleController at runtime. Config * elements can be attached to the ModuleController to alter the functionality * (which user logs in, which account is created, etc.) of the module. * */ public class ModuleController extends GenericController implements ReplaceableController { private static final long serialVersionUID = 240L; private static final String NODE_PATH = "ModuleController.node_path";// $NON-NLS-1$ private JMeterTreeNode selectedNode = null; /** * No-arg constructor * * @see java.lang.Object#Object() */ public ModuleController() { super(); } @Override public Object clone() { ModuleController clone = (ModuleController) super.clone(); if (selectedNode == null) { this.restoreSelected(); } clone.selectedNode = selectedNode; // TODO ?? (JMeterTreeNode) selectedNode.clone(); return clone; } /** * Sets the (@link JMeterTreeNode) which represents the controller which * this object is pointing to. Used for building the test case upon * execution. * * @param tn * JMeterTreeNode * @see org.apache.jmeter.gui.tree.JMeterTreeNode */ public void setSelectedNode(JMeterTreeNode tn) { selectedNode = tn; setNodePath(); } /** * Gets the (@link JMeterTreeNode) for the Controller * * @return JMeterTreeNode */ public JMeterTreeNode getSelectedNode() { if (selectedNode == null){ restoreSelected(); } return selectedNode; } private void setNodePath() { List nodePath = new ArrayList(); if (selectedNode != null) { TreeNode[] path = selectedNode.getPath(); for (int i = 0; i < path.length; i++) { nodePath.add(((JMeterTreeNode) path[i]).getName()); } // nodePath.add(selectedNode.getName()); } setProperty(new CollectionProperty(NODE_PATH, nodePath)); } public List getNodePath() { JMeterProperty prop = getProperty(NODE_PATH); if (!(prop instanceof NullProperty)) { return (List) ((CollectionProperty) prop).getObjectValue(); } return null; } private void restoreSelected() { GuiPackage gp = GuiPackage.getInstance(); if (gp != null) { JMeterTreeNode root = (JMeterTreeNode) gp.getTreeModel().getRoot(); resolveReplacementSubTree(root); } } /** * Compute the replacement tree. * @param context */ public void resolveReplacementSubTree(JMeterTreeNode context) { if (selectedNode == null) { List nodePathList = getNodePath(); if (nodePathList != null && nodePathList.size() > 0) { traverse(context, nodePathList, 1); } } } private void traverse(JMeterTreeNode node, List nodePath, int level) { if (node != null && nodePath.size() > level) { for (int i = 0; i < node.getChildCount(); i++) { JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i); if (cur.getName().equals(nodePath.get(level).toString())) { if (nodePath.size() == (level + 1)) { selectedNode = cur; } traverse(cur, nodePath, level + 1); } } } } /** * Copies the controller's subelements into the execution tree * */ public HashTree getReplacementSubTree() { HashTree tree = new ListedHashTree(); if (selectedNode != null) { if (!selectedNode.isEnabled()) { selectedNode = cloneTreeNode(selectedNode); selectedNode.setEnabled(true); } HashTree subtree = tree.add(selectedNode); createSubTree(subtree, selectedNode); } return tree; } private void createSubTree(HashTree tree, JMeterTreeNode node) { Enumeration e = node.children(); while (e.hasMoreElements()) { JMeterTreeNode subNode = e.nextElement(); tree.add(subNode); createSubTree(tree.getTree(subNode), subNode); } } private static JMeterTreeNode cloneTreeNode(JMeterTreeNode node) { JMeterTreeNode treeNode = (JMeterTreeNode) node.clone(); treeNode.setUserObject(((TestElement) node.getUserObject()).clone()); cloneChildren(treeNode, node); return treeNode; } private static void cloneChildren(JMeterTreeNode to, JMeterTreeNode from) { Enumeration enumr = from.children(); while (enumr.hasMoreElements()) { JMeterTreeNode child = enumr.nextElement(); JMeterTreeNode childClone = (JMeterTreeNode) child.clone(); childClone.setUserObject(((TestElement) child.getUserObject()).clone()); to.add(childClone); cloneChildren((JMeterTreeNode) to.getLastChild(), child); } } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/RandomController.java0000644000175000017500000000323212032647216027504 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import java.util.Random; public class RandomController extends InterleaveControl implements Serializable { private static final long serialVersionUID = 240L; private static final Random RAND = new Random(); public RandomController() { } /** * @see org.apache.jmeter.control.GenericController#resetCurrent() */ @Override protected void resetCurrent() { if (getSubControllers().size() > 0) { current = RAND.nextInt(this.getSubControllers().size()); } else { current = 0; } } /** * @see org.apache.jmeter.control.GenericController#incrementCurrent() */ @Override protected void incrementCurrent() { super.incrementCurrent(); current = RAND.nextInt(this.getSubControllers().size()); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/ThroughputController.java0000644000175000017500000002070612032647216030442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.FloatProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This class represents a controller that can control the number of times that * it is executed, either by the total number of times the user wants the * controller executed (BYNUMBER) or by the percentage of time it is called * (BYPERCENT) * * The current implementation executes the first N samples (BYNUMBER) * or the last N% of samples (BYPERCENT). */ public class ThroughputController extends GenericController implements Serializable, LoopIterationListener, TestStateListener { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); public static final int BYNUMBER = 0; public static final int BYPERCENT = 1; private static final String STYLE = "ThroughputController.style";// $NON-NLS-1$ private static final String PERTHREAD = "ThroughputController.perThread";// $NON-NLS-1$ private static final String MAXTHROUGHPUT = "ThroughputController.maxThroughput";// $NON-NLS-1$ private static final String PERCENTTHROUGHPUT = "ThroughputController.percentThroughput";// $NON-NLS-1$ private static class MutableInteger{ private int integer; MutableInteger(int value){ integer=value; } int incr(){ return ++integer; } public int intValue() { return integer; } } // These items are shared between threads in a group by the clone() method // They are initialised by testStarted() so don't need to be serialised private transient MutableInteger globalNumExecutions; private transient MutableInteger globalIteration; private String counterLock = ""; // ensure counts are updated correctly // Need to use something that is serializable, so Object is no use /** * Number of iterations on which we've chosen to deliver samplers. */ private int numExecutions = 0; /** * Index of the current iteration. 0-based. */ private int iteration = -1; /** * Whether to deliver samplers on this iteration. */ private boolean runThisTime; public ThroughputController() { setStyle(BYNUMBER); setPerThread(true); setMaxThroughput(1); setPercentThroughput(100); runThisTime = false; } public void setStyle(int style) { setProperty(new IntegerProperty(STYLE, style)); } public int getStyle() { return getPropertyAsInt(STYLE); } public void setPerThread(boolean perThread) { setProperty(new BooleanProperty(PERTHREAD, perThread)); } public boolean isPerThread() { return getPropertyAsBoolean(PERTHREAD); } public void setMaxThroughput(int maxThroughput) { setProperty(new IntegerProperty(MAXTHROUGHPUT, maxThroughput)); } public void setMaxThroughput(String maxThroughput) { setProperty(new StringProperty(MAXTHROUGHPUT, maxThroughput)); } public String getMaxThroughput() { return getPropertyAsString(MAXTHROUGHPUT); } protected int getMaxThroughputAsInt() { JMeterProperty prop = getProperty(MAXTHROUGHPUT); int retVal = 1; if (prop instanceof IntegerProperty) { retVal = ((IntegerProperty) prop).getIntValue(); } else { try { retVal = Integer.parseInt(prop.getStringValue()); } catch (NumberFormatException e) { log.warn("Error parsing "+prop.getStringValue(),e); } } return retVal; } public void setPercentThroughput(float percentThroughput) { setProperty(new FloatProperty(PERCENTTHROUGHPUT, percentThroughput)); } public void setPercentThroughput(String percentThroughput) { setProperty(new StringProperty(PERCENTTHROUGHPUT, percentThroughput)); } public String getPercentThroughput() { return getPropertyAsString(PERCENTTHROUGHPUT); } protected float getPercentThroughputAsFloat() { JMeterProperty prop = getProperty(PERCENTTHROUGHPUT); float retVal = 100; if (prop instanceof FloatProperty) { retVal = ((FloatProperty) prop).getFloatValue(); } else { try { retVal = Float.parseFloat(prop.getStringValue()); } catch (NumberFormatException e) { log.warn("Error parsing "+prop.getStringValue(),e); } } return retVal; } private int getExecutions() { if (!isPerThread()) { synchronized (counterLock) { return globalNumExecutions.intValue(); } } return numExecutions; } /** * @see org.apache.jmeter.control.Controller#next() */ @Override public Sampler next() { if (runThisTime) { return super.next(); } return null; } /** * Decide whether to return any samplers on this iteration. */ private boolean decide(int executions, int iterations) { if (getStyle() == BYNUMBER) { return executions < getMaxThroughputAsInt(); } return (100.0 * executions + 50.0) / (iterations + 1) < getPercentThroughputAsFloat(); } /** * @see org.apache.jmeter.control.Controller#isDone() */ @Override public boolean isDone() { if (subControllersAndSamplers.size() == 0) { return true; } else if (getStyle() == BYNUMBER && getExecutions() >= getMaxThroughputAsInt() && current >= getSubControllers().size()) { return true; } else { return false; } } @Override public Object clone() { ThroughputController clone = (ThroughputController) super.clone(); clone.numExecutions = numExecutions; clone.iteration = iteration; clone.runThisTime = false; // Ensure global counters and lock are shared across threads in the group clone.globalIteration = globalIteration; clone.globalNumExecutions = globalNumExecutions; clone.counterLock = counterLock; return clone; } public void iterationStart(LoopIterationEvent iterEvent) { if (!isPerThread()) { synchronized (counterLock) { globalIteration.incr(); runThisTime = decide(globalNumExecutions.intValue(), globalIteration.intValue()); if (runThisTime) { globalNumExecutions.incr(); } } } else { iteration++; runThisTime = decide(numExecutions, iteration); if (runThisTime) { numExecutions++; } } } public void testStarted() { synchronized (counterLock) { globalNumExecutions = new MutableInteger(0); globalIteration = new MutableInteger(-1); } } public void testStarted(String host) { testStarted(); } public void testEnded() { // NOOP } public void testEnded(String host) { // NOOP } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/RandomOrderController.java0000644000175000017500000000536712032647216030513 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.control; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.jmeter.testelement.TestElement; /** * A controller that runs its children each at most once, but in a random order. * */ public class RandomOrderController extends GenericController implements Serializable { private static final long serialVersionUID = 240L; /** * Create a new RandomOrderController. */ public RandomOrderController() { } /** * @see GenericController#initialize() */ @Override public void initialize() { super.initialize(); this.reorder(); } /** * @see GenericController#reInitialize() */ @Override protected void reInitialize() { super.reInitialize(); this.reorder(); } /** * Replace the subControllersAndSamplers list with a reordered ArrayList. */ private void reorder() { int numElements = this.subControllersAndSamplers.size(); // Create a new list containing numElements null elements. List reordered = new ArrayList(this.subControllersAndSamplers.size()); for (int i = 0; i < numElements; i++) { reordered.add(null); } // Insert the subControllersAndSamplers into random list positions. for (Iterator i = this.subControllersAndSamplers.iterator(); i.hasNext();) { int idx = (int) Math.floor(Math.random() * reordered.size()); while (true) { if (idx == numElements) { idx = 0; } if (reordered.get(idx) == null) { reordered.set(idx, i.next()); break; } idx++; } } // Replace subControllersAndSamplers with reordered copy. this.subControllersAndSamplers = reordered; } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/InterleaveControl.java0000644000175000017500000001130412032647216027656 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.IntegerProperty; public class InterleaveControl extends GenericController implements Serializable { private static final long serialVersionUID = 233L; private static final String STYLE = "InterleaveControl.style";// $NON-NLS-1$ public static final int IGNORE_SUB_CONTROLLERS = 0; public static final int USE_SUB_CONTROLLERS = 1; private boolean skipNext; private transient TestElement searchStart = null; private boolean currentReturnedAtLeastOne; private boolean stillSame = true; /*************************************************************************** * Constructor for the InterleaveControl object **************************************************************************/ public InterleaveControl() { } /** * {@inheritDoc} */ @Override public void reInitialize() { setFirst(true); currentReturnedAtLeastOne = false; searchStart = null; stillSame = true; skipNext = false; incrementIterCount(); recoverRunningVersion(); } public void setStyle(int style) { setProperty(new IntegerProperty(STYLE, style)); } public int getStyle() { return getPropertyAsInt(STYLE); } /** * {@inheritDoc} */ @Override public Sampler next() { if (isSkipNext()) { reInitialize(); return null; } return super.next(); } /** * {@inheritDoc} */ @Override protected Sampler nextIsAController(Controller controller) throws NextIsNullException { Sampler sampler = controller.next(); if (sampler == null) { currentReturnedNull(controller); return next(); } currentReturnedAtLeastOne = true; if (getStyle() == IGNORE_SUB_CONTROLLERS) { incrementCurrent(); skipNext = true; } else { searchStart = null; } return sampler; } /** * {@inheritDoc} */ @Override protected Sampler nextIsASampler(Sampler element) throws NextIsNullException { skipNext = true; incrementCurrent(); return element; } /** * If the current is null, reset and continue searching. The searchStart * attribute will break us off when we start a repeat. *

        * {@inheritDoc} */ @Override protected Sampler nextIsNull() { resetCurrent(); return next(); } /** * {@inheritDoc} */ @Override protected void setCurrentElement(TestElement currentElement) throws NextIsNullException { // Set the position when next is first called, and don't overwrite // until reInitialize is called. if (searchStart == null) { searchStart = currentElement; } else if (searchStart == currentElement && !stillSame) { // We've gone through the whole list and are now back at the start // point of our search. reInitialize(); throw new NextIsNullException(); } } /** * {@inheritDoc} */ @Override protected void currentReturnedNull(Controller c) { if (c.isDone()) { removeCurrentElement(); } else if (getStyle() == USE_SUB_CONTROLLERS) { incrementCurrent(); } } protected boolean isSkipNext() { return skipNext; } protected void setSkipNext(boolean skipNext) { this.skipNext = skipNext; } /** * {@inheritDoc} */ @Override protected void incrementCurrent() { if (currentReturnedAtLeastOne) { skipNext = true; } stillSame = false; super.incrementCurrent(); } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/OnceOnlyController.java0000644000175000017500000000362012032647216030013 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.engine.event.LoopIterationListener; import org.apache.jmeter.samplers.Sampler; /** * Controller to run its children once per cycle. */ public class OnceOnlyController extends GenericController implements Serializable, LoopIterationListener { private static final long serialVersionUID = 240L; /** * Constructor for the OnceOnlyController object. */ public OnceOnlyController() { } /** * @see LoopIterationListener#iterationStart(LoopIterationEvent) */ public void iterationStart(LoopIterationEvent event) { int numIteration = 1; // Bug 39509: iteration to 0 for all controller which not LoopController (and TG) if (!(event.getSource() instanceof LoopController)) { numIteration = 0; } if (event.getIteration() == numIteration) { reInitialize(); } } @Override protected Sampler nextIsNull() throws NextIsNullException { return null; } } apache-jmeter-2.8/src/components/org/apache/jmeter/control/SwitchController.java0000644000175000017500000001001312032647216027520 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control; import java.io.Serializable; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.StringProperty; // For unit tests @see TestSwitchController /** *

        * Implements a controller which selects at most one of its children * based on the condition value, which may be a number or a string. *

        *

        * For numeric input, the controller processes the appropriate child, * where the numbering starts from 0. * If the number is out of range, then the first (0th) child is selected. * If the condition is the empty string, then it is assumed to be 0. *

        *

        * For non-empty non-numeric input, the child is selected by name. * This may be the name of the controller or a sampler. * If the string does not match any of the names, then the controller * with the name "default" (any case) is processed. * If there is no default entry, then unlike the numeric case, * no child is selected. *

        */ public class SwitchController extends GenericController implements Serializable { private static final long serialVersionUID = 240L; // Package access for use by Test code static final String SWITCH_VALUE = "SwitchController.value"; //$NON-NLS-1$ public SwitchController() { super(); } @Override public Sampler next() { if (isFirst()) { // Set the selection once per iteration current = getSelectionAsInt(); } return super.next(); } /** * incrementCurrent is called when the current child (whether sampler or controller) * has been processed. *

        * Setting it to int.max marks the controller as having processed all its * children. Thus the controller processes one child per iteration. *

        * {@inheritDoc} */ @Override protected void incrementCurrent() { current=Integer.MAX_VALUE; } public void setSelection(String inputValue) { setProperty(new StringProperty(SWITCH_VALUE, inputValue)); } /* * Returns the selection value as a int, * with the value set to zero if it is out of range. */ private int getSelectionAsInt() { int ret; getProperty(SWITCH_VALUE).recoverRunningVersion(null); String sel = getSelection(); try { ret = Integer.parseInt(sel); if (ret < 0 || ret >= getSubControllers().size()) { ret = 0; } } catch (NumberFormatException e) { if (sel.length()==0) { ret = 0; } else { ret = scanControllerNames(sel); } } return ret; } private int scanControllerNames(String sel){ int i = 0; int default_pos = Integer.MAX_VALUE; for(TestElement el : getSubControllers()) { String name=el.getName(); if (name.equals(sel)) { return i; } if (name.equalsIgnoreCase("default")) { //$NON-NLS-1$ default_pos = i; } i++; } return default_pos; } public String getSelection() { return getPropertyAsString(SWITCH_VALUE); } } apache-jmeter-2.8/src/jorphan/0000755000175000017500000000000012032647214015651 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/0000755000175000017500000000000012032647214016440 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/0000755000175000017500000000000012032647214017661 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/0000755000175000017500000000000012032647214021322 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/0000755000175000017500000000000012165514773022311 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/JMeterStopTestException.java0000644000175000017500000000236512032647214027723 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; /** * This Exception is for use by functions etc to signal a Stop Test condition * where there is no access to the normal stop method * * @version $Revision: 905024 $ */ public class JMeterStopTestException extends RuntimeException { private static final long serialVersionUID = 240L; public JMeterStopTestException() { super(); } public JMeterStopTestException(String s) { super(s); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/XMLBuffer.java0000644000175000017500000000644312032647214024743 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; import org.apache.commons.collections.ArrayStack; // @see org.apache.jorphan.util.TestXMLBuffer for unit tests /** * Provides XML string building methods. * Not synchronised. * */ public class XMLBuffer{ private final StringBuilder sb = new StringBuilder(); // the string so far private final ArrayStack tags = new ArrayStack(); // opened tags public XMLBuffer(){ } private void startTag(String t){ sb.append("<"); sb.append(t); sb.append(">"); } private void endTag(String t){ sb.append(""); sb.append("\n"); } private void emptyTag(String t){ sb.append("<"); sb.append(t); sb.append("/>"); sb.append("\n"); } /** * Open a tag; save on stack. * * @param tagname * @return this */ public XMLBuffer openTag(String tagname){ tags.push(tagname); startTag(tagname); return this; } /** * Close top tag from stack. * * @param tagname * * @return this * * @throws IllegalArgumentException if the tag names do not match */ public XMLBuffer closeTag(String tagname){ String tag = (String) tags.pop(); if (!tag.equals(tagname)) { throw new IllegalArgumentException("Trying to close tag: "+tagname+" ; should be "+tag); } endTag(tag); return this; } /** * Add a complete tag with content. * * @param tagname * @param content * @return this */ public XMLBuffer tag(String tagname, String content){ if (content.length() == 0) { emptyTag(tagname); } else { startTag(tagname); sb.append(content); endTag(tagname); } return this; } /** * Add a complete tag with content. * * @param tagname * @param content * @return this */ public XMLBuffer tag(String tagname,StringBuilder content){ if (content.length() == 0) { emptyTag(tagname); } else { startTag(tagname); sb.append(content); endTag(tagname); } return this; } /** * Convert the buffer to a string, closing any open tags */ @Override public String toString(){ while(!tags.isEmpty()){ endTag((String)tags.pop()); } return sb.toString(); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/Converter.java0000644000175000017500000003012312032647214025110 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; import java.io.File; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.StringTokenizer; /** * Converter utilities for TestBeans */ public class Converter { /** * Convert the given value object to an object of the given type * * @param value * @param toType * @return Object */ public static Object convert(Object value, Class toType) { if (value == null) { value = ""; // TODO should we allow null for non-primitive types? } else if (toType.isAssignableFrom(value.getClass())) { return value; } else if (toType.equals(float.class) || toType.equals(Float.class)) { return Float.valueOf(getFloat(value)); } else if (toType.equals(double.class) || toType.equals(Double.class)) { return Double.valueOf(getDouble(value)); } else if (toType.equals(String.class)) { return getString(value); } else if (toType.equals(int.class) || toType.equals(Integer.class)) { return Integer.valueOf(getInt(value)); } else if (toType.equals(char.class) || toType.equals(Character.class)) { return Character.valueOf(getChar(value)); } else if (toType.equals(long.class) || toType.equals(Long.class)) { return Long.valueOf(getLong(value)); } else if (toType.equals(boolean.class) || toType.equals(Boolean.class)) { return Boolean.valueOf(getBoolean(value)); } else if (toType.equals(java.util.Date.class)) { return getDate(value); } else if (toType.equals(Calendar.class)) { return getCalendar(value); } else if (toType.equals(File.class)) { return getFile(value); } else if (toType.equals(Class.class)) { try { return Class.forName(value.toString()); } catch (Exception e) { // don't do anything } } return value; } /** * Converts the given object to a calendar object. Defaults to the current * date if the given object can't be converted. * * @param date * @return Calendar */ public static Calendar getCalendar(Object date, Calendar defaultValue) { Calendar cal = new GregorianCalendar(); if (date instanceof java.util.Date) { cal.setTime((java.util.Date) date); return cal; } else if (date != null) { DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT); java.util.Date d = null; try { d = formatter.parse(date.toString()); } catch (ParseException e) { formatter = DateFormat.getDateInstance(DateFormat.MEDIUM); try { d = formatter.parse((String) date); } catch (ParseException e1) { formatter = DateFormat.getDateInstance(DateFormat.LONG); try { d = formatter.parse((String) date); } catch (ParseException e2) { formatter = DateFormat.getDateInstance(DateFormat.FULL); try { d = formatter.parse((String) date); } catch (ParseException e3) { return defaultValue; } } } } cal.setTime(d); } else { cal = defaultValue; } return cal; } public static Calendar getCalendar(Object o) { return getCalendar(o, new GregorianCalendar()); } public static Date getDate(Object date) { return getDate(date, Calendar.getInstance().getTime()); } public static Date getDate(Object date, Date defaultValue) { Date val = null; if (date instanceof java.util.Date) { return (Date) date; } else if (date != null) { DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT); // java.util.Date d = null; try { val = formatter.parse(date.toString()); } catch (ParseException e) { formatter = DateFormat.getDateInstance(DateFormat.MEDIUM); try { val = formatter.parse((String) date); } catch (ParseException e1) { formatter = DateFormat.getDateInstance(DateFormat.LONG); try { val = formatter.parse((String) date); } catch (ParseException e2) { formatter = DateFormat.getDateInstance(DateFormat.FULL); try { val = formatter.parse((String) date); } catch (ParseException e3) { return defaultValue; } } } } } else { return defaultValue; } return val; } public static float getFloat(Object o, float defaultValue) { try { if (o == null) { return defaultValue; } if (o instanceof Number) { return ((Number) o).floatValue(); } return Float.parseFloat(o.toString()); } catch (NumberFormatException e) { return defaultValue; } } public static float getFloat(Object o) { return getFloat(o, 0); } public static double getDouble(Object o, double defaultValue) { try { if (o == null) { return defaultValue; } if (o instanceof Number) { return ((Number) o).doubleValue(); } return Double.parseDouble(o.toString()); } catch (NumberFormatException e) { return defaultValue; } } public static double getDouble(Object o) { return getDouble(o, 0); } public static boolean getBoolean(Object o) { return getBoolean(o, false); } public static boolean getBoolean(Object o, boolean defaultValue) { if (o == null) { return defaultValue; } else if (o instanceof Boolean) { return ((Boolean) o).booleanValue(); } return Boolean.parseBoolean(o.toString()); } /** * Convert object to integer, return defaultValue if object is not * convertible or is null. * * @param o * @param defaultValue * @return int */ public static int getInt(Object o, int defaultValue) { try { if (o == null) { return defaultValue; } if (o instanceof Number) { return ((Number) o).intValue(); } return Integer.parseInt(o.toString()); } catch (NumberFormatException e) { return defaultValue; } } public static char getChar(Object o) { return getChar(o, ' '); } public static char getChar(Object o, char defaultValue) { try { if (o == null) { return defaultValue; } if (o instanceof Character) { return ((Character) o).charValue(); } else if (o instanceof Byte) { return (char) ((Byte) o).byteValue(); } else if (o instanceof Integer) { return (char) ((Integer) o).intValue(); } else { String s = o.toString(); if (s.length() > 0) { return o.toString().charAt(0); } return defaultValue; } } catch (Exception e) { return defaultValue; } } /** * Converts object to an integer, defaults to 0 if object is not convertible * or is null. * * @param o * @return int */ public static int getInt(Object o) { return getInt(o, 0); } /** * Converts object to a long, return defaultValue if object is not * convertible or is null. * * @param o * @param defaultValue * @return long */ public static long getLong(Object o, long defaultValue) { try { if (o == null) { return defaultValue; } if (o instanceof Number) { return ((Number) o).longValue(); } return Long.parseLong(o.toString()); } catch (NumberFormatException e) { return defaultValue; } } /** * Converts object to a long, defaults to 0 if object is not convertible or * is null * * @param o * @return long */ public static long getLong(Object o) { return getLong(o, 0); } public static String formatDate(Date date, String pattern) { if (date == null) { return ""; } SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(date); } public static String formatDate(java.sql.Date date, String pattern) { if (date == null) { return ""; } SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(date); } public static String formatDate(String date, String pattern) { return formatDate(getCalendar(date, null), pattern); } public static String formatDate(Calendar date, String pattern) { return formatCalendar(date, pattern); } public static String formatCalendar(Calendar date, String pattern) { if (date == null) { return ""; } SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(date.getTime()); } /** * Converts object to a String, return defaultValue if object is null. * * @param o * @param defaultValue * @return String */ public static String getString(Object o, String defaultValue) { if (o == null) { return defaultValue; } return o.toString(); } public static String insertLineBreaks(String v, String insertion) { if (v == null) { return ""; } StringBuilder replacement = new StringBuilder(); StringTokenizer tokens = new StringTokenizer(v, "\n", true); while (tokens.hasMoreTokens()) { String token = tokens.nextToken(); if (token.compareTo("\n") == 0) { replacement.append(insertion); } else { replacement.append(token); } } return replacement.toString(); } /** * Converts object to a String, defaults to empty string if object is null. * * @param o * @return String */ public static String getString(Object o) { return getString(o, ""); } public static File getFile(Object o){ if (o instanceof File) { return (File) o; } if (o instanceof String) { return new File((String) o); } throw new IllegalArgumentException("Expected String or file, actual "+o.getClass().getName()); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/JMeterError.java0000644000175000017500000000256412032647214025351 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; /** * The rationale for this class was originally to support chained Errors in JDK 1.3 * However, the class is now used in its own right. * * @version $Revision: 905024 $ */ public class JMeterError extends Error { private static final long serialVersionUID = 240L; public JMeterError() { super(); } public JMeterError(String s) { super(s); } public JMeterError(Throwable cause) { super(cause); } public JMeterError(String message, Throwable cause) { super(message, cause); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/JMeterStopTestNowException.java0000644000175000017500000000240212032647214030377 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; /** * This Exception is for use by functions etc to signal a Stop Test Now condition * where there is no access to the normal stop method * * @version $Revision: 905024 $ */ public class JMeterStopTestNowException extends RuntimeException { private static final long serialVersionUID = 240L; public JMeterStopTestNowException() { super(); } public JMeterStopTestNowException(String s) { super(s); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/JMeterException.java0000644000175000017500000000261712032647214026215 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; /** * The rationale for this class was originally to support chained Exceptions in JDK 1.3 * However, the class is now used in its own right. * * @version $Revision: 905024 $ */ public class JMeterException extends Exception { private static final long serialVersionUID = 240L; public JMeterException() { super(); } public JMeterException(String s) { super(s); } public JMeterException(Throwable cause) { super(cause); } public JMeterException(String message, Throwable cause) { super(message, cause); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/HeapDumper.java0000644000175000017500000001751712032647214025207 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; import java.io.File; import java.lang.management.ManagementFactory; import java.text.SimpleDateFormat; import java.util.Date; import javax.management.InstanceNotFoundException; import javax.management.MBeanException; import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.RuntimeMBeanException; /** * Class allowing access to Sun's heapDump method (Java 1.6+). * Uses Reflection so that the code compiles on Java 1.5. * The code will only work on Sun Java 1.6+. */ public class HeapDumper { // SingletonHolder idiom for lazy initialisation private static class DumperHolder { private static final HeapDumper DUMPER = new HeapDumper(); } private static HeapDumper getInstance(){ return DumperHolder.DUMPER; } // This is the name of the HotSpot Diagnostic platform MBean (Sun Java 1.6) // See: http://download.oracle.com/javase/6/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html private static final String HOTSPOT_BEAN_NAME = "com.sun.management:type=HotSpotDiagnostic"; // These are needed for invoking the method private final MBeanServer server; private final ObjectName hotspotDiagnosticBean; // If we could not find the method, store the exception here private final Exception exception; // Only invoked by IODH class private HeapDumper() { server = ManagementFactory.getPlatformMBeanServer(); // get the platform beans ObjectName on = null; Exception ex = null; try { on = new ObjectName(HOTSPOT_BEAN_NAME); // should never fail server.getObjectInstance(on); // See if we can actually find the object } catch (MalformedObjectNameException e) { // Should never happen throw new AssertionError("Could not establish the HotSpotDiagnostic Bean Name: "+e); } catch (InstanceNotFoundException e) { ex = e; on = null; // Prevent useless dump attempts } exception = ex; hotspotDiagnosticBean = on; } /** * Initialise the dumper, and report if there is a problem. * This is optional, as the dump methods will initialise if necessary. * * @throws Exception if there is a problem finding the heapDump MXBean */ public static void init() throws Exception { Exception e =getInstance().exception; if (e != null) { throw e; } } /** * Dumps the heap to the outputFile file in the same format as the hprof heap dump. *

        * Calls the dumpHeap() method of the HotSpotDiagnostic MXBean, if available. *

        * See * * HotSpotDiagnosticMXBean * * @param fileName name of the heap dump file. Must be creatable, i.e. must not exist. * @param live if true, dump only the live objects * @throws Exception if the MXBean cannot be found, or if there is a problem during invocation */ public static void dumpHeap(String fileName, boolean live) throws Exception{ getInstance().dumpHeap0(fileName, live); } /** * Dumps live objects from the heap to the outputFile file in the same format as the hprof heap dump. *

        * @see #dumpHeap(String, boolean) * @param fileName name of the heap dump file. Must be creatable, i.e. must not exist. * @throws Exception if the MXBean cannot be found, or if there is a problem during invocation */ public static void dumpHeap(String fileName) throws Exception{ dumpHeap(fileName, true); } /** * Dumps live objects from the heap to the outputFile file in the same format as the hprof heap dump. *

        * Creates the dump using the file name: dump_yyyyMMdd_hhmmss_SSS.hprof * The dump is created in the current directory. *

        * @see #dumpHeap(boolean) * @return the name of the dump file that was created * @throws IOException * @throws Exception if the MXBean cannot be found, or if there is a problem during invocation */ public static String dumpHeap() throws Exception{ return dumpHeap(true); } /** * Dumps objects from the heap to the outputFile file in the same format as the hprof heap dump. *

        * Creates the dump using the file name: dump_yyyyMMdd_hhmmss_SSS.hprof * The dump is created in the current directory. *

        * @see #dumpHeap(String, boolean) * @param live true id only live objects are to be dumped. * * @return the name of the dump file that was created * @throws IOException * @throws Exception if the MXBean cannot be found, or if there is a problem during invocation */ public static String dumpHeap(boolean live) throws Exception { return dumpHeap(new File("."), live); } /** * Dumps objects from the heap to the outputFile file in the same format as the hprof heap dump. * The dump is created in the specified directory. *

        * Creates the dump using the file name: dump_yyyyMMdd_hhmmss_SSS.hprof *

        * @see #dumpHeap(String, boolean) * @param basedir File object for the target base directory. * @param live true id only live objects are to be dumped. * * @return the name of the dump file that was created * @throws IOException * @throws Exception if the MXBean cannot be found, or if there is a problem during invocation */ public static String dumpHeap(File basedir, boolean live) throws Exception { SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyyMMdd_hhmmss_SSS"); String stamp = timestampFormat.format(new Date()); File temp = new File(basedir,"dump_"+stamp+".hprof"); final String path = temp.getPath(); dumpHeap(path, live); return path; } /** * Perform the dump using the dumpHeap method. * * @param fileName the file to use * @param live true to dump only live objects * @throws Exception if the MXBean cannot be found, or if there is a problem during invocation */ private void dumpHeap0(String fileName, boolean live) throws Exception { try { if (exception == null) { server.invoke(hotspotDiagnosticBean, "dumpHeap", new Object[]{fileName, Boolean.valueOf(live)}, new String[]{"java.lang.String", "boolean"}); } else { throw exception; } } catch (RuntimeMBeanException e) { Throwable f = e.getCause(); if (f instanceof Exception){ throw (Exception )f; } throw e; } catch (MBeanException e) { Throwable f = e.getCause(); if (f instanceof Exception){ throw (Exception )f; } throw e; } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java0000644000175000017500000004152312032647214025531 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import org.apache.commons.lang3.StringUtils; /** * This class contains frequently-used static utility methods. * */ // @see TestJorphanUtils for unit tests public final class JOrphanUtils { /** * Private constructor to prevent instantiation. */ private JOrphanUtils() { } /** * This is _almost_ equivalent to the String.split method in JDK 1.4. It is * here to enable us to support earlier JDKs. * * Note that unlike JDK1.4 split(), it optionally ignores leading split Characters, * and the splitChar parameter is not a Regular expression * *

        * This piece of code used to be part of JMeterUtils, but was moved here * because some JOrphan classes use it too. * * @param splittee * String to be split * @param splitChar * Character(s) to split the string on, these are treated as a single unit * @param truncate * Should adjacent and leading/trailing splitChars be removed? * * @return Array of all the tokens; empty if the input string is null or the splitChar is null * * @see #split(String, String, String) * */ public static String[] split(String splittee, String splitChar,boolean truncate) { if (splittee == null || splitChar == null) { return new String[0]; } final String EMPTY_ELEMENT = ""; int spot; final int splitLength = splitChar.length(); final String adjacentSplit = splitChar + splitChar; final int adjacentSplitLength = adjacentSplit.length(); if(truncate) { while ((spot = splittee.indexOf(adjacentSplit)) != -1) { splittee = splittee.substring(0, spot + splitLength) + splittee.substring(spot + adjacentSplitLength, splittee.length()); } if(splittee.startsWith(splitChar)) { splittee = splittee.substring(splitLength); } if(splittee.endsWith(splitChar)) { // Remove trailing splitter splittee = splittee.substring(0,splittee.length()-splitLength); } } List returns = new ArrayList(); final int length = splittee.length(); // This is the new length int start = 0; spot = 0; while (start < length && (spot = splittee.indexOf(splitChar, start)) > -1) { if (spot > 0) { returns.add(splittee.substring(start, spot)); } else { returns.add(EMPTY_ELEMENT); } start = spot + splitLength; } if (start < length) { returns.add(splittee.substring(start)); } else if (spot == length - splitLength){// Found splitChar at end of line returns.add(EMPTY_ELEMENT); } return returns.toArray(new String[returns.size()]); } public static String[] split(String splittee,String splitChar) { return split(splittee,splitChar,true); } /** * Takes a String and a tokenizer character string, and returns a new array of * strings of the string split by the tokenizer character(s). * * Trailing delimiters are significant (unless the default = null) * * @param splittee * String to be split. * @param delims * Delimiter character(s) to split the string on * @param def * Default value to place between two split chars that have * nothing between them. If null, then ignore omitted elements. * * @return Array of all the tokens. * * @throws NullPointerException if splittee or delims are null * * @see #split(String, String, boolean) * @see #split(String, String) * * This is a rewritten version of JMeterUtils.split() */ public static String[] split(String splittee, String delims, String def) { StringTokenizer tokens = new StringTokenizer(splittee,delims,def!=null); boolean lastWasDelim=false; List strList=new ArrayList(); while (tokens.hasMoreTokens()) { String tok=tokens.nextToken(); if ( tok.length()==1 // we have a single character; could be a token && delims.indexOf(tok)!=-1) // it is a token { if (lastWasDelim) {// we saw a delimiter last time strList.add(def);// so add the default } lastWasDelim=true; } else { lastWasDelim=false; strList.add(tok); } } if (lastWasDelim) { strList.add(def); } return strList.toArray(new String[strList.size()]); } private static final String SPACES = " "; private static final int SPACES_LEN = SPACES.length(); /** * Right aligns some text in a StringBuilder N.B. modifies the input buffer * * @param in * StringBuilder containing some text * @param len * output length desired * @return input StringBuilder, with leading spaces */ public static StringBuilder rightAlign(StringBuilder in, int len) { int pfx = len - in.length(); if (pfx <= 0) { return in; } if (pfx > SPACES_LEN) { pfx = SPACES_LEN; } in.insert(0, SPACES.substring(0, pfx)); return in; } /** * Left aligns some text in a StringBuilder N.B. modifies the input buffer * * @param in * StringBuilder containing some text * @param len * output length desired * @return input StringBuilder, with trailing spaces */ public static StringBuilder leftAlign(StringBuilder in, int len) { int sfx = len - in.length(); if (sfx <= 0) { return in; } if (sfx > SPACES_LEN) { sfx = SPACES_LEN; } in.append(SPACES.substring(0, sfx)); return in; } /** * Convert a boolean to its upper case string representation. * Equivalent to Boolean.valueOf(boolean).toString().toUpperCase(). * * @param value * boolean to convert * @return "TRUE" or "FALSE" */ public static String booleanToSTRING(boolean value) { return value ? "TRUE" : "FALSE"; } /** * Simple-minded String.replace() for JDK1.3 Should probably be recoded... * * @param source * input string * @param search * string to look for (no regular expressions) * @param replace * string to replace the search string * @return the output string */ public static String replaceFirst(String source, String search, String replace) { int start = source.indexOf(search); int len = search.length(); if (start == -1) { return source; } if (start == 0) { return replace + source.substring(len); } return source.substring(0, start) + replace + source.substring(start + len); } /** * Version of String.replaceAll() for JDK1.3 * See below for another version which replaces strings rather than chars * * @param source * input string * @param search * char to look for (no regular expressions) * @param replace * string to replace the search string * @return the output string */ public static String replaceAllChars(String source, char search, String replace) { char[] chars = source.toCharArray(); StringBuilder sb = new StringBuilder(source.length()+20); for(char c : chars){ if (c == search){ sb.append(replace); } else { sb.append(c); } } return sb.toString(); } /** * Replace all patterns in a String * * @see String#replaceAll(String regex,String replacement) - JDK1.4 only * * @param input - string to be transformed * @param pattern - pattern to replace * @param sub - replacement * @return the updated string */ public static String substitute(final String input, final String pattern, final String sub) { StringBuilder ret = new StringBuilder(input.length()); int start = 0; int index = -1; final int length = pattern.length(); while ((index = input.indexOf(pattern, start)) >= start) { ret.append(input.substring(start, index)); ret.append(sub); start = index + length; } ret.append(input.substring(start)); return ret.toString(); } /** * Trim a string by the tokens provided. * * @param input string to trim * @param delims list of delimiters * @return input trimmed at the first delimiter */ public static String trim(final String input, final String delims){ StringTokenizer tokens = new StringTokenizer(input,delims); return tokens.hasMoreTokens() ? tokens.nextToken() : ""; } /** * Returns a slice of a byte array. * * TODO - add bounds checking? * * @param array - * input array * @param begin - * start of slice * @param end - * end of slice * @return slice from the input array */ public static byte[] getByteArraySlice(byte[] array, int begin, int end) { byte[] slice = new byte[(end - begin + 1)]; System.arraycopy(array, begin, slice, 0, slice.length); return slice; } // N.B. Commons IO IOUtils has equivalent methods; these were added before IO was included // TODO - perhaps deprecate these in favour of Commons IO? /** * Close a Closeable with no error thrown * @param cl - Closeable (may be null) */ public static void closeQuietly(Closeable cl){ try { if (cl != null) { cl.close(); } } catch (IOException ignored) { // NOOP } } /** * close a Socket with no error thrown * @param sock - Socket (may be null) */ public static void closeQuietly(Socket sock){ try { if (sock!= null) { sock.close(); } } catch (IOException ignored) { // NOOP } } /** * close a Socket with no error thrown * @param sock - ServerSocket (may be null) */ public static void closeQuietly(ServerSocket sock){ try { if (sock!= null) { sock.close(); } } catch (IOException ignored) { // NOOP } } /** * Check if a byte array starts with the given byte array. * * @see String#startsWith(String, int) * * @param target array to scan * @param search array to search for * @param offset starting offset (>=0) * @return true if the search array matches the target at the current offset */ public static boolean startsWith(byte [] target, byte [] search, int offset){ final int targetLength = target.length; final int searchLength = search.length; if (offset < 0 || searchLength > targetLength+offset){ return false; } for(int i=0;i < searchLength; i++){ if (target[i+offset] != search[i]){ return false; } } return true; } private static final byte[] XML_PFX = {'<','?','x','m','l'};// "> 4); byte lower = (byte) (ba[i] & 0x0f); hb[2*i]=toHexChar(upper); hb[2*i+1]=toHexChar(lower); } return hb; } private static byte toHexChar(byte in){ if (in < 10) { return (byte) (in+'0'); } return (byte) ((in-10)+'a'); } /** * Read as much as possible into buffer. * * @param is the stream to read from * @param buffer output buffer * @param offset offset into buffer * @param length number of bytes to read * * @return the number of bytes actually read * @throws IOException */ public static int read(InputStream is, byte[] buffer, int offset, int length) throws IOException { int remaining = length; while ( remaining > 0 ) { int location = ( length - remaining ); int count = is.read( buffer, location, remaining ); if ( -1 == count ) { // EOF break; } remaining -= count; } return length - remaining; } /** * Display currently running threads on system.out * This may be expensive to run. * Mainly designed for use at the end of a non-GUI test to check for threads that might prevent the JVM from exitting. * * @param includeDaemons whether to include daemon threads or not. */ public static void displayThreads(boolean includeDaemons) { Map m = Thread.getAllStackTraces(); String lineSeparator = System.getProperty("line.separator"); StringBuilder builder = new StringBuilder(); for(Map.Entry e : m.entrySet()) { boolean daemon = e.getKey().isDaemon(); if (includeDaemons || !daemon){ builder.setLength(0); StackTraceElement[] ste = e.getValue(); for (StackTraceElement stackTraceElement : ste) { int lineNumber = stackTraceElement.getLineNumber(); builder.append(stackTraceElement.getClassName()+"#"+stackTraceElement.getMethodName()+ (lineNumber >=0 ? " at line:"+ stackTraceElement.getLineNumber() : "")+lineSeparator); } System.out.println(e.getKey().toString()+((daemon ? " (daemon)" : ""))+", stackTrace:"+ builder.toString()); } } } /** * Returns null if input is empty, null or contains spaces * @param input String * @return String */ public static String nullifyIfEmptyTrimmed(final String input) { if (input == null) { return null; } String trimmed = input.trim(); if (trimmed.length() == 0) { return null; } return trimmed; } /** * Check that value is empty (""), null or whitespace only. * @param value Value * @return true if the String is not empty (""), not null and not whitespace only. */ public static boolean isBlank(final String value) { return StringUtils.isBlank(value); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/util/JMeterStopThreadException.java0000644000175000017500000000270012032647214030204 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.util; /** * This Exception is for use by functions etc to signal a Stop Thread condition * where there is no access to the normal stop method * * @version $Revision: 1380579 $ */ public class JMeterStopThreadException extends RuntimeException { private static final long serialVersionUID = 240L; public JMeterStopThreadException() { super(); } public JMeterStopThreadException(String s) { super(s); } public JMeterStopThreadException(String message, Throwable cause) { super(message, cause); } public JMeterStopThreadException(Throwable cause) { super(cause); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/0000755000175000017500000000000012165514773023652 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/ListedHashTree.java0000644000175000017500000001621112032647214027354 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Set; import org.apache.jorphan.util.JMeterError; /** * ListedHashTree is a different implementation of the {@link HashTree} * collection class. In the ListedHashTree, the order in which values are added * is preserved (not to be confused with {@link SortedHashTree}, which sorts * the order of the values using the compare() function). Any listing of nodes * or iteration through the list of nodes of a ListedHashTree will be given in * the order in which the nodes were added to the tree. * * @see HashTree */ public class ListedHashTree extends HashTree implements Serializable, Cloneable { private static final long serialVersionUID = 240L; private final List order; public ListedHashTree() { super(); order = new LinkedList(); } public ListedHashTree(Object key) { this(); data.put(key, new ListedHashTree()); order.add(key); } public ListedHashTree(Collection keys) { this(); for (Object temp : keys) { data.put(temp, new ListedHashTree()); order.add(temp); } } public ListedHashTree(Object[] keys) { this(); for (int x = 0; x < keys.length; x++) { data.put(keys[x], new ListedHashTree()); order.add(keys[x]); } } /** {@inheritDoc} */ @Override public Object clone() { ListedHashTree newTree = new ListedHashTree(); cloneTree(newTree); return newTree; } /** {@inheritDoc} */ @Override public void set(Object key, Object value) { if (!data.containsKey(key)) { order.add(key); } super.set(key, value); } /** {@inheritDoc} */ @Override public void set(Object key, HashTree t) { if (!data.containsKey(key)) { order.add(key); } super.set(key, t); } /** {@inheritDoc} */ @Override public void set(Object key, Object[] values) { if (!data.containsKey(key)) { order.add(key); } super.set(key, values); } /** {@inheritDoc} */ @Override public void set(Object key, Collection values) { if (!data.containsKey(key)) { order.add(key); } super.set(key, values); } /** {@inheritDoc} */ @Override public void replace(Object currentKey, Object newKey) { HashTree tree = getTree(currentKey); data.remove(currentKey); data.put(newKey, tree); // find order.indexOf(currentKey) using == rather than equals() // there may be multiple entries which compare equals (Bug 50898) // This will be slightly slower than the built-in method, // but replace() is not used frequently. int entry=-1; for (int i=0; i < order.size(); i++) { Object ent = order.get(i); if (ent == currentKey) { entry = i; break; } } if (entry == -1) { throw new JMeterError("Impossible state, data key not present in order: "+currentKey.getClass()); } order.set(entry, newKey); } /** {@inheritDoc} */ @Override public HashTree createNewTree() { return new ListedHashTree(); } /** {@inheritDoc} */ @Override public HashTree createNewTree(Object key) { return new ListedHashTree(key); } /** {@inheritDoc} */ @Override public HashTree createNewTree(Collection values) { return new ListedHashTree(values); } /** {@inheritDoc} */ @Override public HashTree add(Object key) { if (!data.containsKey(key)) { HashTree newTree = createNewTree(); data.put(key, newTree); order.add(key); return newTree; } return getTree(key); } /** {@inheritDoc} */ @Override public Collection list() { return order; } /** {@inheritDoc} */ @Override public HashTree remove(Object key) { order.remove(key); return data.remove(key); } /** {@inheritDoc} */ @Override public Object[] getArray() { return order.toArray(); } /** {@inheritDoc} */ // Make sure the hashCode depends on the order as well @Override public int hashCode() { int hc = 17; hc = hc * 37 + (order == null ? 0 : order.hashCode()); hc = hc * 37 + super.hashCode(); return hc; } /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (!(o instanceof ListedHashTree)) { return false; } ListedHashTree lht = (ListedHashTree) o; return (super.equals(lht) && order.equals(lht.order)); // boolean flag = true; // if (o instanceof ListedHashTree) // { // ListedHashTree oo = (ListedHashTree) o; // Iterator it = order.iterator(); // Iterator it2 = oo.order.iterator(); // if (size() != oo.size()) // { // flag = false; // } // while (it.hasNext() && it2.hasNext() && flag) // { // if (!it.next().equals(it2.next())) // { // flag = false; // } // } // if (flag) // { // it = order.iterator(); // while (it.hasNext() && flag) // { // Object temp = it.next(); // flag = get(temp).equals(oo.get(temp)); // } // } // } // else // { // flag = false; // } // return flag; } /** {@inheritDoc} */ @Override public Set keySet() { return data.keySet(); } /** {@inheritDoc} */ @Override public int size() { return data.size(); } private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); } private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); } /** {@inheritDoc} */ @Override public void clear() { super.clear(); order.clear(); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/HashTree.java0000644000175000017500000010365312032647214026216 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * This class is used to create a tree structure of objects. Each element in the * tree is also a key to the next node down in the tree. It provides many ways * to add objects and branches, as well as many ways to retrieve. *

        * HashTree implements the Map interface for convenience reasons. The main * difference between a Map and a HashTree is that the HashTree organizes the * data into a recursive tree structure, and provides the means to manipulate * that structure. *

        * Of special interest is the {@link #traverse(HashTreeTraverser)} method, which * provides an expedient way to traverse any HashTree by implementing the * {@link HashTreeTraverser} interface in order to perform some operation on the * tree, or to extract information from the tree. * * @see HashTreeTraverser * @see SearchByClass */ public class HashTree implements Serializable, Map, Cloneable { private static final long serialVersionUID = 240L; // private static final Logger log = LoggingManager.getLoggerForClass(); // Used for the RuntimeException to short-circuit the traversal private static final String FOUND = "found"; // $NON-NLS-1$ // N.B. The keys can be either JMeterTreeNode or TestElement protected final Map data; /** * Creates an empty new HashTree. */ public HashTree() { data = new HashMap(); } /** * Allow subclasses to provide their own Map. */ protected HashTree(Map _map) { data = _map; } /** * Creates a new HashTree and adds the given object as a top-level node. * * @param key */ public HashTree(Object key) { data = new HashMap(); data.put(key, new HashTree()); } /** * The Map given must also be a HashTree, otherwise an * UnsupportedOperationException is thrown. If it is a HashTree, this is * like calling the add(HashTree) method. * * @see #add(HashTree) * @see java.util.Map#putAll(Map) */ public void putAll(Map map) { if (map instanceof HashTree) { this.add((HashTree) map); } else { throw new UnsupportedOperationException("can only putAll other HashTree objects"); } } /** * Exists to satisfy the Map interface. * * @see java.util.Map#entrySet() */ public Set> entrySet() { return data.entrySet(); } /** * Implemented as required by the Map interface, but is not very useful * here. All 'values' in a HashTree are HashTree's themselves. * * @param value * Object to be tested as a value. * @return True if the HashTree contains the value, false otherwise. * @see java.util.Map#containsValue(Object) */ public boolean containsValue(Object value) { return data.containsValue(value); } /** * This is the same as calling HashTree.add(key,value). * * @param key * to use * @param value * to store against key * @see java.util.Map#put(Object, Object) */ public HashTree put(Object key, HashTree value) { HashTree previous = data.get(key); add(key, value); return previous; } /** * Clears the HashTree of all contents. * * @see java.util.Map#clear() */ public void clear() { data.clear(); } /** * Returns a collection of all the sub-trees of the current tree. * * @see java.util.Map#values() */ public Collection values() { return data.values(); } /** * Adds a key as a node at the current level and then adds the given * HashTree to that new node. * * @param key * key to create in this tree * @param subTree * sub tree to add to the node created for the first argument. */ public void add(Object key, HashTree subTree) { add(key); getTree(key).add(subTree); } /** * Adds all the nodes and branches of the given tree to this tree. Is like * merging two trees. Duplicates are ignored. * * @param newTree */ public void add(HashTree newTree) { for (Object item : newTree.list()) { add(item); getTree(item).add(newTree.getTree(item)); } } /** * Creates a new HashTree and adds all the objects in the given collection * as top-level nodes in the tree. * * @param keys * a collection of objects to be added to the created HashTree. */ public HashTree(Collection keys) { data = new HashMap(); for (Object o : keys) { data.put(o, new HashTree()); } } /** * Creates a new HashTree and adds all the objects in the given array as * top-level nodes in the tree. */ public HashTree(Object[] keys) { data = new HashMap(); for (int x = 0; x < keys.length; x++) { data.put(keys[x], new HashTree()); } } /** * If the HashTree contains the given object as a key at the top level, then * a true result is returned, otherwise false. * * @param o * Object to be tested as a key. * @return True if the HashTree contains the key, false otherwise. * @see java.util.Map#containsKey(Object) */ public boolean containsKey(Object o) { return data.containsKey(o); } /** * If the HashTree is empty, true is returned, false otherwise. * * @return True if HashTree is empty, false otherwise. */ public boolean isEmpty() { return data.isEmpty(); } /** * Sets a key and it's value in the HashTree. It actually sets up a key, and * then creates a node for the key and sets the value to the new node, as a * key. Any previous nodes that existed under the given key are lost. * * @param key * key to be set up * @param value * value to be set up as a key in the secondary node */ public void set(Object key, Object value) { data.put(key, createNewTree(value)); } /** * Sets a key into the current tree and assigns it a HashTree as its * subtree. Any previous entries under the given key are removed. * * @param key * key to be set up * @param t * HashTree that the key maps to */ public void set(Object key, HashTree t) { data.put(key, t); } /** * Sets a key and its values in the HashTree. It sets up a key in the * current node, and then creates a node for that key, and sets all the * values in the array as keys in the new node. Any keys previously held * under the given key are lost. * * @param key * Key to be set up * @param values * Array of objects to be added as keys in the secondary node */ public void set(Object key, Object[] values) { data.put(key, createNewTree(Arrays.asList(values))); } /** * Sets a key and its values in the HashTree. It sets up a key in the * current node, and then creates a node for that key, and set all the * values in the array as keys in the new node. Any keys previously held * under the given key are removed. * * @param key * key to be set up * @param values * Collection of objects to be added as keys in the secondary * node */ public void set(Object key, Collection values) { data.put(key, createNewTree(values)); } /** * Sets a series of keys into the HashTree. It sets up the first object in * the key array as a key in the current node, recurses into the next * HashTree node through that key and adds the second object in the array. * Continues recursing in this manner until the end of the first array is * reached, at which point all the values of the second array are set as * keys to the bottom-most node. All previous keys of that bottom-most node * are removed. * * @param treePath * array of keys to put into HashTree * @param values * array of values to be added as keys to bottom-most node */ public void set(Object[] treePath, Object[] values) { if (treePath != null && values != null) { set(Arrays.asList(treePath), Arrays.asList(values)); } } /** * Sets a series of keys into the HashTree. It sets up the first object in * the key array as a key in the current node, recurses into the next * HashTree node through that key and adds the second object in the array. * Continues recursing in this manner until the end of the first array is * reached, at which point all the values of the Collection of values are * set as keys to the bottom-most node. Any keys previously held by the * bottom-most node are lost. * * @param treePath * array of keys to put into HashTree * @param values * Collection of values to be added as keys to bottom-most node */ public void set(Object[] treePath, Collection values) { if (treePath != null) { set(Arrays.asList(treePath), values); } } /** * Sets a series of keys into the HashTree. It sets up the first object in * the key list as a key in the current node, recurses into the next * HashTree node through that key and adds the second object in the list. * Continues recursing in this manner until the end of the first list is * reached, at which point all the values of the array of values are set as * keys to the bottom-most node. Any previously existing keys of that bottom * node are removed. * * @param treePath * collection of keys to put into HashTree * @param values * array of values to be added as keys to bottom-most node */ public void set(Collection treePath, Object[] values) { HashTree tree = addTreePath(treePath); tree.set(Arrays.asList(values)); } /** * Sets the nodes of the current tree to be the objects of the given * collection. Any nodes previously in the tree are removed. * * @param values * Collection of objects to set as nodes. */ public void set(Collection values) { clear(); this.add(values); } /** * Sets a series of keys into the HashTree. It sets up the first object in * the key list as a key in the current node, recurses into the next * HashTree node through that key and adds the second object in the list. * Continues recursing in this manner until the end of the first list is * reached, at which point all the values of the Collection of values are * set as keys to the bottom-most node. Any previously existing keys of that * bottom node are lost. * * @param treePath * list of keys to put into HashTree * @param values * collection of values to be added as keys to bottom-most node */ public void set(Collection treePath, Collection values) { HashTree tree = addTreePath(treePath); tree.set(values); } /** * Adds an key into the HashTree at the current level. * * @param key * key to be added to HashTree */ public HashTree add(Object key) { if (!data.containsKey(key)) { HashTree newTree = createNewTree(); data.put(key, newTree); return newTree; } return getTree(key); } /** * Adds all the given objects as nodes at the current level. * * @param keys * Array of Keys to be added to HashTree. */ public void add(Object[] keys) { for (int x = 0; x < keys.length; x++) { add(keys[x]); } } /** * Adds a bunch of keys into the HashTree at the current level. * * @param keys * Collection of Keys to be added to HashTree. */ public void add(Collection keys) { for (Object o : keys) { add(o); } } /** * Adds a key and it's value in the HashTree. The first argument becomes a * node at the current level, and the second argument becomes a node of it. * * @param key * key to be added * @param value * value to be added as a key in the secondary node */ public HashTree add(Object key, Object value) { add(key); return getTree(key).add(value); } /** * Adds a key and it's values in the HashTree. The first argument becomes a * node at the current level, and adds all the values in the array to the * new node. * * @param key * key to be added * @param values * array of objects to be added as keys in the secondary node */ public void add(Object key, Object[] values) { add(key); getTree(key).add(values); } /** * Adds a key as a node at the current level and then adds all the objects * in the second argument as nodes of the new node. * * @param key * key to be added * @param values * Collection of objects to be added as keys in the secondary * node */ public void add(Object key, Collection values) { add(key); getTree(key).add(values); } /** * Adds a series of nodes into the HashTree using the given path. The first * argument is an array that represents a path to a specific node in the * tree. If the path doesn't already exist, it is created (the objects are * added along the way). At the path, all the objects in the second argument * are added as nodes. * * @param treePath * an array of objects representing a path * @param values * array of values to be added as keys to bottom-most node */ public void add(Object[] treePath, Object[] values) { if (treePath != null) { add(Arrays.asList(treePath), Arrays.asList(values)); } } /** * Adds a series of nodes into the HashTree using the given path. The first * argument is an array that represents a path to a specific node in the * tree. If the path doesn't already exist, it is created (the objects are * added along the way). At the path, all the objects in the second argument * are added as nodes. * * @param treePath * an array of objects representing a path * @param values * collection of values to be added as keys to bottom-most node */ public void add(Object[] treePath, Collection values) { if (treePath != null) { add(Arrays.asList(treePath), values); } } public HashTree add(Object[] treePath, Object value) { return add(Arrays.asList(treePath), value); } /** * Adds a series of nodes into the HashTree using the given path. The first * argument is a List that represents a path to a specific node in the tree. * If the path doesn't already exist, it is created (the objects are added * along the way). At the path, all the objects in the second argument are * added as nodes. * * @param treePath * a list of objects representing a path * @param values * array of values to be added as keys to bottom-most node */ public void add(Collection treePath, Object[] values) { HashTree tree = addTreePath(treePath); tree.add(Arrays.asList(values)); } /** * Adds a series of nodes into the HashTree using the given path. The first * argument is a List that represents a path to a specific node in the tree. * If the path doesn't already exist, it is created (the objects are added * along the way). At the path, the object in the second argument is added * as a node. * * @param treePath * a list of objects representing a path * @param value * Object to add as a node to bottom-most node */ public HashTree add(Collection treePath, Object value) { HashTree tree = addTreePath(treePath); return tree.add(value); } /** * Adds a series of nodes into the HashTree using the given path. The first * argument is a SortedSet that represents a path to a specific node in the * tree. If the path doesn't already exist, it is created (the objects are * added along the way). At the path, all the objects in the second argument * are added as nodes. * * @param treePath * a SortedSet of objects representing a path * @param values * Collection of values to be added as keys to bottom-most node */ public void add(Collection treePath, Collection values) { HashTree tree = addTreePath(treePath); tree.add(values); } protected HashTree addTreePath(Collection treePath) { HashTree tree = this; for (Object temp : treePath) { tree.add(temp); tree = tree.getTree(temp); } return tree; } /** * Gets the HashTree mapped to the given key. * * @param key * Key used to find appropriate HashTree() */ public HashTree getTree(Object key) { return data.get(key); } /** * Returns the HashTree object associated with the given key. Same as * calling {@link #getTree(Object)}. * * @see java.util.Map#get(Object) */ public HashTree get(Object key) { return getTree(key); } /** * Gets the HashTree object mapped to the last key in the array by recursing * through the HashTree structure one key at a time. * * @param treePath * array of keys. * @return HashTree at the end of the recursion. */ public HashTree getTree(Object[] treePath) { if (treePath != null) { return getTree(Arrays.asList(treePath)); } return this; } /** * Create a clone of this HashTree. This is not a deep clone (ie, the * contents of the tree are not cloned). * */ @Override public Object clone() { HashTree newTree = new HashTree(); cloneTree(newTree); return newTree; } protected void cloneTree(HashTree newTree) { for (Object key : list()) { newTree.set(key, (HashTree) getTree(key).clone()); } } /** * Creates a new tree. This method exists to allow inheriting classes to * generate the appropriate types of nodes. For instance, when a node is * added, it's value is a HashTree. Rather than directly calling the * HashTree() constructor, the createNewTree() method is called. Inheriting * classes should override these methods and create the appropriate subclass * of HashTree. * * @return HashTree */ protected HashTree createNewTree() { return new HashTree(); } /** * Creates a new tree. This method exists to allow inheriting classes to * generate the appropriate types of nodes. For instance, when a node is * added, it's value is a HashTree. Rather than directly calling the * HashTree() constructor, the createNewTree() method is called. Inheriting * classes should override these methods and create the appropriate subclass * of HashTree. * * @return HashTree */ protected HashTree createNewTree(Object key) { return new HashTree(key); } /** * Creates a new tree. This method exists to allow inheriting classes to * generate the appropriate types of nodes. For instance, when a node is * added, it's value is a HashTree. Rather than directly calling the * HashTree() constructor, the createNewTree() method is called. Inheriting * classes should override these methods and create the appropriate subclass * of HashTree. * * @return HashTree */ protected HashTree createNewTree(Collection values) { return new HashTree(values); } /** * Gets the HashTree object mapped to the last key in the SortedSet by * recursing through the HashTree structure one key at a time. * * @param treePath * Collection of keys * @return HashTree at the end of the recursion */ public HashTree getTree(Collection treePath) { return getTreePath(treePath); } /** * Gets a Collection of all keys in the current HashTree node. If the * HashTree represented a file system, this would be like getting a * collection of all the files in the current folder. * * @return Set of all keys in this HashTree */ public Collection list() { return data.keySet(); } /** * Gets a Set of all keys in the HashTree mapped to the given key of the * current HashTree object (in other words, one level down. If the HashTree * represented a file system, this would like getting a list of all files in * a sub-directory (of the current directory) specified by the key argument. * * @param key * key used to find HashTree to get list of * @return Set of all keys in found HashTree. */ public Collection list(Object key) { HashTree temp = data.get(key); if (temp != null) { return temp.list(); } return new HashTree().list(); } /** * Removes the entire branch specified by the given key. * * @see java.util.Map#remove(Object) */ public HashTree remove(Object key) { return data.remove(key); } /** * Recurses down into the HashTree stucture using each subsequent key in the * array of keys, and returns the Set of keys of the HashTree object at the * end of the recursion. If the HashTree represented a file system, this * would be like getting a list of all the files in a directory specified by * the treePath, relative from the current directory. * * @param treePath * Array of keys used to recurse into HashTree structure * @return Set of all keys found in end HashTree */ public Collection list(Object[] treePath) { // TODO not used? if (treePath != null) { return list(Arrays.asList(treePath)); } return list(); } /** * Recurses down into the HashTree stucture using each subsequent key in the * List of keys, and returns the Set of keys of the HashTree object at the * end of the recursion. If the HashTree represented a file system, this * would be like getting a list of all the files in a directory specified by * the treePath, relative from the current directory. * * @param treePath * List of keys used to recurse into HashTree structure * @return Set of all keys found in end HashTree */ public Collection list(Collection treePath) { HashTree tree = getTreePath(treePath); if (tree != null) { return tree.list(); } return new HashTree().list(); } /** * Finds the given current key, and replaces it with the given new key. Any * tree structure found under the original key is moved to the new key. */ public void replace(Object currentKey, Object newKey) { HashTree tree = getTree(currentKey); data.remove(currentKey); data.put(newKey, tree); } /** * Gets an array of all keys in the current HashTree node. If the HashTree * represented a file system, this would be like getting an array of all the * files in the current folder. * * @return array of all keys in this HashTree. */ public Object[] getArray() { return data.keySet().toArray(); } /** * Gets an array of all keys in the HashTree mapped to the given key of the * current HashTree object (in other words, one level down). If the HashTree * represented a file system, this would like getting a list of all files in * a sub-directory (of the current directory) specified by the key argument. * * @param key * key used to find HashTree to get list of * @return array of all keys in found HashTree */ public Object[] getArray(Object key) { HashTree t = getTree(key); if (t != null) { return t.getArray(); } return null; } /** * Recurses down into the HashTree stucture using each subsequent key in the * array of keys, and returns an array of keys of the HashTree object at the * end of the recursion. If the HashTree represented a file system, this * would be like getting a list of all the files in a directory specified by * the treePath, relative from the current directory. * * @param treePath * array of keys used to recurse into HashTree structure * @return array of all keys found in end HashTree */ public Object[] getArray(Object[] treePath) { if (treePath != null) { return getArray(Arrays.asList(treePath)); } return getArray(); } /** * Recurses down into the HashTree stucture using each subsequent key in the * treePath argument, and returns an array of keys of the HashTree object at * the end of the recursion. If the HashTree represented a file system, this * would be like getting a list of all the files in a directory specified by * the treePath, relative from the current directory. * * @param treePath * list of keys used to recurse into HashTree structure * @return array of all keys found in end HashTree */ public Object[] getArray(Collection treePath) { HashTree tree = getTreePath(treePath); return (tree != null) ? tree.getArray() : null; } protected HashTree getTreePath(Collection treePath) { HashTree tree = this; Iterator iter = treePath.iterator(); while (iter.hasNext()) { if (tree == null) { return null; } Object temp = iter.next(); tree = tree.getTree(temp); } return tree; } /** * Returns a hashcode for this HashTree. * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return data.hashCode() * 7; } /** * Compares all objects in the tree and verifies that the two trees contain * the same objects at the same tree levels. Returns true if they do, false * otherwise. * * @param o * Object to be compared against * @see java.lang.Object#equals(Object) */ @Override public boolean equals(Object o) { if (!(o instanceof HashTree)) { return false; } HashTree oo = (HashTree) o; if (oo.size() != this.size()) { return false; } return data.equals(oo.data); // boolean flag = true; // if (o instanceof HashTree) // { // HashTree oo = (HashTree) o; // Iterator it = data.keySet().iterator(); // while (it.hasNext()) // { // if (!oo.containsKey(it.next())) // { // flag = false; // break; // } // } // if (flag) // { // it = data.keySet().iterator(); // while (it.hasNext()) // { // Object temp = it.next(); // flag = get(temp).equals(oo.get(temp)); // if (!flag) // { // break; // } // } // } // } // else // { // flag = false; // } // return flag; } /** * Returns a Set of all the keys in the top-level of this HashTree. * * @see java.util.Map#keySet() */ public Set keySet() { return data.keySet(); } /** * Searches the HashTree structure for the given key. If it finds the key, * it returns the HashTree mapped to the key. If it finds nothing, it * returns null. * * @param key * Key to search for * @return HashTree mapped to key, if found, otherwise null */ public HashTree search(Object key) {// TODO does not appear to be used HashTree result = getTree(key); if (result != null) { return result; } TreeSearcher searcher = new TreeSearcher(key); try { traverse(searcher); } catch (RuntimeException e) { if (!e.getMessage().equals(FOUND)){ throw e; } // do nothing - means object is found } return searcher.getResult(); } /** * Method readObject. */ private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); } private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); } /** * Returns the number of top-level entries in the HashTree. * * @see java.util.Map#size() */ public int size() { return data.size(); } /** * Allows any implementation of the HashTreeTraverser interface to easily * traverse (depth-first) all the nodes of the HashTree. The Traverser * implementation will be given notification of each node visited. * * @see HashTreeTraverser */ public void traverse(HashTreeTraverser visitor) { for (Object item : list()) { visitor.addNode(item, getTree(item)); getTree(item).traverseInto(visitor); } } /** * The recursive method that accomplishes the tree-traversal and performs * the callbacks to the HashTreeTraverser. */ private void traverseInto(HashTreeTraverser visitor) { if (list().size() == 0) { visitor.processPath(); } else { for (Object item : list()) { final HashTree treeItem = getTree(item); visitor.addNode(item, treeItem); treeItem.traverseInto(visitor); } } visitor.subtractNode(); } /** * Generate a printable representation of the tree. * * @return a representation of the tree */ @Override public String toString() { ConvertToString converter = new ConvertToString(); try { traverse(converter); } catch (Exception e) { // Just in case converter.reportError(e); } return converter.toString(); } private static class TreeSearcher implements HashTreeTraverser { private final Object target; private HashTree result; public TreeSearcher(Object t) { target = t; } public HashTree getResult() { return result; } /** {@inheritDoc} */ public void addNode(Object node, HashTree subTree) { result = subTree.getTree(target); if (result != null) { // short circuit traversal when found throw new RuntimeException(FOUND); } } /** {@inheritDoc} */ public void processPath() { // Not used } /** {@inheritDoc} */ public void subtractNode() { // Not used } } private static class ConvertToString implements HashTreeTraverser { private final StringBuilder string = new StringBuilder(getClass().getName() + "{"); private final StringBuilder spaces = new StringBuilder(); private int depth = 0; public void addNode(Object key, HashTree subTree) { depth++; string.append("\n").append(getSpaces()).append(key); string.append(" {"); } public void subtractNode() { string.append("\n" + getSpaces() + "}"); depth--; } public void processPath() { } @Override public String toString() { string.append("\n}"); return string.toString(); } void reportError(Throwable t){ string.append("Error: ").append(t.toString()); } private String getSpaces() { if (spaces.length() < depth * 2) { while (spaces.length() < depth * 2) { spaces.append(" "); } } else if (spaces.length() > depth * 2) { spaces.setLength(depth * 2); } return spaces.toString(); } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/SortedHashTree.java0000644000175000017500000000700012032647214027364 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; import java.io.Serializable; import java.util.Collection; import java.util.Comparator; import java.util.TreeMap; /** * SortedHashTree is a different implementation of the {@link HashTree} * collection class. In the SortedHashTree, the ordering of values in the tree * is made explicit via the compare() function of objects added to the tree. * This works in exactly the same fashion as it does for a SortedSet. * * @see HashTree * @see HashTreeTraverser * * TODO does not appear to be used currently */ public class SortedHashTree extends HashTree implements Serializable { private static final long serialVersionUID = 233L; public SortedHashTree() { super(new TreeMap()); // equivalent to new TreeMap((Comparator)null); } // non-null Comparators don't appear to be used at present public SortedHashTree(Comparator comper) { super(new TreeMap(comper)); } public SortedHashTree(Object key) { this(); data.put(key, new SortedHashTree()); } public SortedHashTree(Object key, Comparator comper) { this(comper); data.put(key, new SortedHashTree(comper)); } public SortedHashTree(Collection keys) { this(); for (Object key : keys) { data.put(key, new SortedHashTree()); } } public SortedHashTree(Collection keys, Comparator comper) { this(comper); for (Object key : keys) { data.put(key, new SortedHashTree(comper)); } } public SortedHashTree(Object[] keys) { this(); for (int x = 0; x < keys.length; x++) { data.put(keys[x], new SortedHashTree()); } } public SortedHashTree(Object[] keys, Comparator comper) { this(comper); for (int x = 0; x < keys.length; x++) { data.put(keys[x], new SortedHashTree(comper)); } } /** {@inheritDoc} */ @Override protected HashTree createNewTree() { Comparator comparator = ((TreeMap)data).comparator(); return new SortedHashTree(comparator); } /** {@inheritDoc} */ @Override protected HashTree createNewTree(Object key) { Comparator comparator = ((TreeMap) data).comparator(); return new SortedHashTree(key, comparator); } /** {@inheritDoc} */ @Override protected HashTree createNewTree(Collection values) { Comparator comparator = ((TreeMap)data).comparator(); return new SortedHashTree(values, comparator); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/HashTreeTraverser.java0000644000175000017500000000617612032647214030116 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; /** * By implementing this interface, a class can easily traverse a HashTree * object, and be notified via callbacks of certain events. There are three such * events: *
          *
        1. When a node is first encountered, the traverser's * {@link #addNode(Object,HashTree)} method is called. It is handed the object * at that node, and the entire sub-tree of the node.
        2. *
        3. When a leaf node is encountered, the traverser is notified that a full * path has been finished via the {@link #processPath()} method. It is the * traversing class's responsibility to know the path that has just finished * (this can be done by keeping a simple stack of all added nodes).
        4. *
        5. When a node is retraced, the traverser's {@link #subtractNode()} is * called. Again, it is the traverser's responsibility to know which node has * been retraced.
        6. *
        * To summarize, as the traversal goes down a tree path, nodes are added. When * the end of the path is reached, the {@link #processPath()} call is sent. As * the traversal backs up, nodes are subtracted. *

        * The traversal is a depth-first traversal. * * @see HashTree * @see SearchByClass * * @version $Revision: 1377072 $ */ public interface HashTreeTraverser { /** * The tree traverses itself depth-first, calling addNode for each object it * encounters as it goes. This is a callback method, and should not be * called except by a HashTree during traversal. * * @param node * the node currently encountered * @param subTree * the HashTree under the node encountered */ void addNode(Object node, HashTree subTree); /** * Indicates traversal has moved up a step, and the visitor should remove * the top node from its stack structure. This is a callback method, and * should not be called except by a HashTree during traversal. */ void subtractNode(); /** * Process path is called when a leaf is reached. If a visitor wishes to * generate Lists of path elements to each leaf, it should keep a Stack data * structure of nodes passed to it with addNode, and removing top items for * every {@link #subtractNode()} call. This is a callback method, and should * not be called except by a HashTree during traversal. */ void processPath(); }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/Data.java0000644000175000017500000005025312032647214025361 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; import java.io.Serializable; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Use this class to store database-like data. This class uses rows and columns * to organize its data. It has some convenience methods that allow fast loading * and retrieval of the data into and out of string arrays. It is also handy for * reading CSV files. * * WARNING: the class assumes that column names are unique, but does not enforce this. * */ public class Data implements Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private final Map> data; private List header; // saves current position in data List private int currentPos, size; /** * Constructor - takes no arguments. */ public Data() { header = new ArrayList(); data = new HashMap>(); currentPos = -1; size = currentPos + 1; } /** * Replaces the given header name with a new header name. * * @param oldHeader * Old header name. * @param newHeader * New header name. */ public void replaceHeader(String oldHeader, String newHeader) { List tempList; int index = header.indexOf(oldHeader); header.set(index, newHeader); tempList = data.remove(oldHeader); data.put(newHeader, tempList); } /** * Adds the rows of the given Data object to this Data object. * * @param d * data object to be appended to this one */ public void append(Data d) { boolean valid = true; String[] headers = getHeaders(); String[] dHeaders = d.getHeaders(); if (headers.length != dHeaders.length) { valid = false; } else { for (int count = 0; count < dHeaders.length; count++) { if (!header.contains(dHeaders[count])) { valid = false; } } } if (valid) { currentPos = size; d.reset(); while (d.next()) { for (int count = 0; count < headers.length; count++) { addColumnValue(headers[count], d.getColumnValue(headers[count])); } } } } /** * Get the number of the current row. * * @return integer representing the current row */ public int getCurrentPos() { return currentPos; } /** * Removes the current row. */ public void removeRow() { List tempList; Iterator it = data.keySet().iterator(); log.debug("removing row, size = " + size); if (currentPos > -1 && currentPos < size) { log.debug("got to here"); while (it.hasNext()) { tempList = data.get(it.next()); tempList.remove(currentPos); } if (currentPos > 0) { currentPos--; } size--; } } public void removeRow(int index) { log.debug("Removing row: " + index); if (index < size) { setCurrentPos(index); log.debug("Setting currentpos to " + index); removeRow(); } } public void addRow() { String[] headers = getHeaders(); List tempList = new ArrayList(); for (int i = 0; i < headers.length; i++) { if ((tempList = data.get(header.get(i))) == null) { tempList = new ArrayList(); data.put(headers[i], tempList); } tempList.add(""); } size = tempList.size(); setCurrentPos(size - 1); } /** * Sets the current pos. If value sent to method is not a valid number, the * current position is set to one higher than the maximum. * * @param r * position to set to. */ public void setCurrentPos(int r) { currentPos = r; } /** * Sorts the data using a given row as the sorting criteria. A boolean value * indicates whether to sort ascending or descending. * * @param column * name of column to use as sorting criteria. * @param asc * boolean value indicating whether to sort ascending or * descending. True for asc, false for desc. Currently this * feature is not enabled and all sorts are asc. */ public void sort(String column, boolean asc) { sortData(column, 0, size); } private void swapRows(int row1, int row2) { List temp; Object o; Iterator it = data.keySet().iterator(); while (it.hasNext()) { temp = data.get(it.next()); o = temp.get(row1); temp.set(row1, temp.get(row2)); temp.set(row2, o); } } /** * Private method that implements the quicksort algorithm to sort the rows * of the Data object. * * @param column * name of column to use as sorting criteria. * @param start * starting index (for quicksort algorithm). * @param end * ending index (for quicksort algorithm). */ private void sortData(String column, int start, int end) { int x = start, y = end - 1; String basis = ((List) data.get(column)).get((x + y) / 2).toString(); if (x == y) { return; } while (x <= y) { while (x < end && ((List) data.get(column)).get(x).toString().compareTo(basis) < 0) { x++; } while (y >= (start - 1) && ((List) data.get(column)).get(y).toString().compareTo(basis) > 0) { y--; } if (x <= y) { swapRows(x, y); x++; y--; } } if (x == y) { x++; } y = end - x; if (x > 0) { sortData(column, start, x); } if (y > 0) { sortData(column, x, end); } } /** * Gets the number of rows in the Data object. * * @return number of rows in Data object. */ public int size() { return size; } // end method /** * Adds a value into the Data set at the current row, using a column name to * find the column in which to insert the new value. * * @param column * the name of the column to set. * @param value * value to set into column. */ public void addColumnValue(String column, Object value) { List tempList; if ((tempList = data.get(column)) == null) { tempList = new ArrayList(); data.put(column, tempList); } int s = tempList.size(); if (currentPos == -1) { currentPos = size; } if (currentPos >= size) { size = currentPos + 1; } while (currentPos > s) { s++; tempList.add(null); } if (currentPos == s) { tempList.add(value); } else { tempList.set(currentPos, value); } } /** * Returns the row number where a certain value is. * * @param column * column to be searched for value. * @param value * object in Search of. * @return row # where value exists. */ public int findValue(String column, Object value) { return data.get(column).indexOf(value); } /** * Sets the value in the Data set at the current row, using a column name to * find the column in which to insert the new value. * * @param column * the name of the column to set. * @param value * value to set into column. */ public void setColumnValue(String column, Object value) { List tempList; if ((tempList = data.get(column)) == null) { tempList = new ArrayList(); data.put(column, tempList); } if (currentPos == -1) { currentPos = 0; } if (currentPos >= size) { size++; tempList.add(value); } else if (currentPos >= tempList.size()) { tempList.add(value); } else { tempList.set(currentPos, value); } } /** * Checks to see if a column exists in the Data object. * * @param column * Name of column header to check for. * @return True or False depending on whether the column exists. */ public boolean hasHeader(String column) { return data.containsKey(column); } /** * Sets the current position of the Data set to the next row. * * @return True if there is another row. False if there are no more rows. */ public boolean next() { return (++currentPos < size); } /** * Gets a Data object from a ResultSet. * * @param rs * ResultSet passed in from a database query * @return a Data object * @throws java.sql.SQLException */ public static Data getDataFromResultSet(ResultSet rs) throws SQLException { ResultSetMetaData meta = rs.getMetaData(); Data data = new Data(); int numColumns = meta.getColumnCount(); String[] dbCols = new String[numColumns]; for (int i = 0; i < numColumns; i++) { dbCols[i] = meta.getColumnName(i + 1); data.addHeader(dbCols[i]); } while (rs.next()) { data.next(); for (int i = 0; i < numColumns; i++) { Object o = rs.getObject(i + 1); if (o instanceof byte[]) { o = new String((byte[]) o); // TODO - charset? } data.addColumnValue(dbCols[i], o); } } return data; } /** * Sets the current position of the Data set to the previous row. * * @return True if there is another row. False if there are no more rows. */ public boolean previous() { return (--currentPos >= 0); } /** * Resets the current position of the data set to just before the first * element. */ public void reset() { currentPos = -1; } /** * Gets the value in the current row of the given column. * * @param column * name of the column. * @return an Object which holds the value of the column. */ public Object getColumnValue(String column) { try { if (currentPos < size) { return ((List) data.get(column)).get(currentPos); } else { return null; } } catch (Exception e) { return null; } } /** * Gets the value in the current row of the given column. * * @param column * index of the column (starts at 0). * @return an Object which holds the value of the column. */ public Object getColumnValue(int column) { String columnName = header.get(column); try { if (currentPos < size) { return ((List) data.get(columnName)).get(currentPos); } else { return null; } } catch (Exception e) { return null; } } public Object getColumnValue(int column, int row) { setCurrentPos(row); return getColumnValue(column); } public void removeColumn(int col) { String columnName = header.get(col); data.remove(columnName); header.remove(columnName); } /** * Sets the headers for the data set. Each header represents a column of * data. Each row's data can be gotten with the column header name, which * will always be a string. * * @param h * array of strings representing the column headers. * these must be distinct - duplicates will cause incorrect behaviour */ public void setHeaders(String[] h) { int x = 0; header = new ArrayList(h.length); for (x = 0; x < h.length; x++) { header.add(h[x]); data.put(h[x], new ArrayList()); } } /** * Returns a String array of the column headers. * * @return array of strings of the column headers. */ public String[] getHeaders() { String[] r = new String[header.size()]; if (r.length > 0) { r = header.toArray(r); } return r; } public int getHeaderCount(){ return header.size(); } /** * This method will retrieve every entry in a certain column. It returns an * array of Objects from the column. * * @param columnName * name of the column. * @return array of Objects representing the data. */ public List getColumnAsObjectArray(String columnName) { return data.get(columnName); } /** * This method will retrieve every entry in a certain column. It returns an * array of strings from the column. Even if the data are not strings, they * will be returned as strings in this method. * * @param columnName * name of the column. * @return array of Strings representing the data. */ public String[] getColumn(String columnName) { String[] returnValue; List temp = data.get(columnName); if (temp != null) { returnValue = new String[temp.size()]; int index = 0; for (Object o : temp) { if (o != null) { if (o instanceof String) { returnValue[index++] = (String) o; } else { returnValue[index++] = o.toString(); } } } } else { returnValue = new String[0]; } return returnValue; } /** * Use this method to set the entire data set. It takes an array of strings. * It uses the first row as the headers, and the next rows as the data * elements. Delimiter represents the delimiting character(s) that separate * each item in a data row. * * @param contents * array of strings, the first element is a list of the column * headers, the next elements each represent a single row of * data. * @param delimiter * the delimiter character that separates columns within the * string array. */ public void setData(String[] contents, String delimiter) { setHeaders(JOrphanUtils.split(contents[0], delimiter)); int x = 1; while (x < contents.length) { setLine(JOrphanUtils.split(contents[x++], delimiter)); } } /* * Deletes a header from the Data object. Takes the column name as input. It * will delete the entire column. * * public void deleteHeader(String s) { * } */ /** * Sets the data for every row in the column. */ public void setColumnData(String colName, Object value) { List list = this.getColumnAsObjectArray(colName); while (list.size() < size()) { list.add(value); } } public void setColumnData(int col, List data) { reset(); Iterator iter = data.iterator(); String columnName = header.get(col); while (iter.hasNext()) { next(); setColumnValue(columnName, iter.next()); } } /** * Adds a header name to the Data object. * * @param s * name of header. */ public void addHeader(String s) { header.add(s); data.put(s, new ArrayList(Math.max(size(), 100))); } /** * Sets a row of data using an array of strings as input. Each value in the * array represents a column's value in that row. Assumes the order will be * the same order in which the headers were added to the data set. * * @param line * array of strings representing column values. */ public void setLine(String[] line) { List tempList; String[] h = getHeaders(); for (int count = 0; count < h.length; count++) { tempList = data.get(h[count]); if (count < line.length && line[count].length() > 0) { tempList.add(line[count]); } else { tempList.add("N/A"); } } size++; } /** * Sets a row of data using an array of strings as input. Each value in the * array represents a column's value in that row. Assumes the order will be * the same order in which the headers were added to the data set. * * @param line * array of strings representing column values. * @param deflt * default value to be placed in data if line is not as long as * headers. */ public void setLine(String[] line, String deflt) { List tempList; String[] h = getHeaders(); for (int count = 0; count < h.length; count++) { tempList = data.get(h[count]); if (count < line.length && line[count].length() > 0) { tempList.add(line[count]); } else { tempList.add(deflt); } } size++; } /** * Returns all the data in the Data set as an array of strings. Each array * gives a row of data, each column separated by tabs. * * @return array of strings. */ public String[] getDataAsText() { StringBuilder temp = new StringBuilder(""); String[] line = new String[size + 1]; String[] elements = getHeaders(); for (int count = 0; count < elements.length; count++) { temp.append(elements[count]); if (count + 1 < elements.length) { temp.append("\t"); } } line[0] = temp.toString(); reset(); int index = 1; temp = new StringBuilder(); while (next()) { temp.setLength(0); for (int count = 0; count < elements.length; count++) { temp.append(getColumnValue(count)); if (count + 1 < elements.length) { temp.append("\t"); } } line[index++] = temp.toString(); } return line; } @Override public String toString() { String[] contents = getDataAsText(); StringBuilder sb = new StringBuilder(); boolean first = true; for (int x = 0; x < contents.length; x++) { if (!first) { sb.append("\n"); } else { first = false; } sb.append(contents[x]); } return sb.toString(); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/collections/SearchByClass.java0000644000175000017500000000673312032647214027202 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.collections; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; /** * Useful for finding all nodes in the tree that represent objects of a * particular type. For instance, if your tree contains all strings, and a few * StringBuilder objects, you can use the SearchByClass traverser to find all the * StringBuilder objects in your tree. *

        * Usage is simple. Given a {@link HashTree} object "tree", and a SearchByClass * object: * *

         * HashTree tree = new HashTree();
         * // ... tree gets filled with objects
         * SearchByClass searcher = new SearchByClass(StringBuilder.class);
         * tree.traverse(searcher);
         * Iterator iter = searcher.getSearchResults().iterator();
         * while (iter.hasNext()) {
         *  StringBuilder foundNode = (StringBuilder) iter.next();
         *  HashTree subTreeOfFoundNode = searcher.getSubTree(foundNode);
         *  //  .... do something with node and subTree...
         * }
         * 
        * * @see HashTree * @see HashTreeTraverser * * @version $Revision: 882000 $ */ public class SearchByClass implements HashTreeTraverser { private final List objectsOfClass = new LinkedList(); private final Map subTrees = new HashMap(); private final Class searchClass; /** * Creates an instance of SearchByClass, and sets the Class to be searched * for. * * @param searchClass */ public SearchByClass(Class searchClass) { this.searchClass = searchClass; } /** * After traversing the HashTree, call this method to get a collection of * the nodes that were found. * * @return Collection All found nodes of the requested type */ public Collection getSearchResults() { // TODO specify collection type without breaking callers return objectsOfClass; } /** * Given a specific found node, this method will return the sub tree of that * node. * * @param root * the node for which the sub tree is requested * @return HashTree */ public HashTree getSubTree(Object root) { return subTrees.get(root); } /** {@inheritDoc} */ @SuppressWarnings("unchecked") public void addNode(Object node, HashTree subTree) { if (searchClass.isAssignableFrom(node.getClass())) { objectsOfClass.add((T) node); ListedHashTree tree = new ListedHashTree(node); tree.set(node, subTree); subTrees.put(node, tree); } } /** {@inheritDoc} */ public void subtractNode() { } /** {@inheritDoc} */ public void processPath() { } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/test/0000755000175000017500000000000012165514773022313 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/test/UnitTestManager.java0000644000175000017500000000303112032647214026213 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.test; /** * Implement this interface to work with the AllTests class. This interface * allows AllTests to pass a configuration file to your application before * running the junit unit tests. *

        * N.B. This interface must be in the main src/ tree (not test/) because it is * implemented by JMeterUtils *

        * see JUnit class: org.apache.jorphan.test.AllTests */ public interface UnitTestManager { /** * Your implementation will be handed the filename that was provided to * AllTests as a configuration file. It can hold whatever properties you * need to configure your system prior to the unit tests running. * * @param filename */ void initializeProperties(String filename); } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/0000755000175000017500000000000012165514773022120 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/layout/0000755000175000017500000000000012165514773023435 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/layout/VerticalLayout.java0000644000175000017500000001756612032647214027254 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui.layout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Insets; import java.awt.LayoutManager; import java.io.Serializable; /** * A vertical layout manager similar to java.awt.FlowLayout. Like FlowLayout * components do not expand to fill available space except when the horizontal * alignment is BOTH in which case components are stretched * horizontally. Unlike FlowLayout, components will not wrap to form another * column if there isn't enough space vertically. VerticalLayout can optionally * anchor components to the top or bottom of the display area or center them * between the top and bottom. Revision date 04 April 1999 * * @version $Revision: 1375327 $ */ public class VerticalLayout implements LayoutManager, Serializable { private static final long serialVersionUID = 240L; /** * The horizontal alignment constant that designates centering. Also used to * designate center anchoring. */ public static final int CENTER = 0; /** * The horizontal alignment constant that designates right justification. */ public static final int RIGHT = 1; /** * The horizontal alignment constant that designates left justification. */ public static final int LEFT = 2; /** * The horizontal alignment constant that designates stretching the * component horizontally. */ public static final int BOTH = 3; /** * The anchoring constant that designates anchoring to the top of the * display area. */ public static final int TOP = 1; /** * The anchoring constant that designates anchoring to the bottom of the * display area. */ public static final int BOTTOM = 2; /** The vertical vgap between components...defaults to 5. */ private int vgap; /** LEFT, RIGHT, CENTER or BOTH...how the components are justified. */ private int alignment; /** * TOP, BOTTOM or CENTER ...where are the components positioned in an * overlarge space. */ private int anchor; // Constructors /** * Constructs an instance of VerticalLayout with a vertical vgap of 5 * pixels, horizontal centering and anchored to the top of the display area. */ public VerticalLayout() { this(5, CENTER, TOP); } /** * Constructs a VerticalLayout instance with horizontal centering, anchored * to the top with the specified vgap. * * @param vgap * an int value indicating the vertical seperation of the * components */ public VerticalLayout(int vgap) { this(vgap, CENTER, TOP); } /** * Constructs a VerticalLayout instance anchored to the top with the * specified vgap and horizontal alignment. * * @param vgap * an int value indicating the vertical seperation of the * components * @param alignment * an int value which is one of RIGHT, LEFT, * CENTER, BOTH * for the horizontal alignment. */ public VerticalLayout(int vgap, int alignment) { this(vgap, alignment, TOP); } /** * Constructs a VerticalLayout instance with the specified vgap, horizontal * alignment and anchoring * * @param vgap * an int value indicating the vertical seperation of the * components * @param alignment * an int value which is one of RIGHT, LEFT, CENTER, * BOTH * for the horizontal alignment. * @param anchor * an int value which is one of TOP, BOTTOM, * CENTER * indicating where the components are to appear if the display * area exceeds the minimum necessary. */ public VerticalLayout(int vgap, int alignment, int anchor) { this.vgap = vgap; this.alignment = alignment; this.anchor = anchor; } /** * Lays out the container. */ public void layoutContainer(Container parent) { Insets insets = parent.getInsets(); // NOTUSED Dimension dim = layoutSize(parent, false); synchronized (parent.getTreeLock()) { int n = parent.getComponentCount(); Dimension pd = parent.getSize(); int y = 0; // work out the total size for (int i = 0; i < n; i++) { Component c = parent.getComponent(i); Dimension d = c.getPreferredSize(); y += d.height + vgap; } y -= vgap; // otherwise there's a vgap too many // Work out the anchor paint if (anchor == TOP) { y = insets.top; } else if (anchor == CENTER) { y = (pd.height - y) / 2; } else { y = pd.height - y - insets.bottom; } // do layout for (int i = 0; i < n; i++) { Component c = parent.getComponent(i); Dimension d = c.getPreferredSize(); int x = insets.left; int wid = d.width; if (alignment == CENTER) { x = (pd.width - d.width) / 2; } else if (alignment == RIGHT) { x = pd.width - d.width - insets.right; } else if (alignment == BOTH) { wid = pd.width - insets.left - insets.right; } c.setBounds(x, y, wid, d.height); y += d.height + vgap; } } } public Dimension minimumLayoutSize(Container parent) { return layoutSize(parent, true); } public Dimension preferredLayoutSize(Container parent) { return layoutSize(parent, false); } /** * Not used by this class. */ public void addLayoutComponent(String name, Component comp) { } /** * Not used by this class. */ public void removeLayoutComponent(Component comp) { } @Override public String toString() { return getClass().getName() + "[vgap=" + vgap + " align=" + alignment + " anchor=" + anchor + "]"; } private Dimension layoutSize(Container parent, boolean minimum) { Dimension dim = new Dimension(0, 0); Dimension d; synchronized (parent.getTreeLock()) { int n = parent.getComponentCount(); for (int i = 0; i < n; i++) { Component c = parent.getComponent(i); if (c.isVisible()) { d = minimum ? c.getMinimumSize() : c.getPreferredSize(); dim.width = Math.max(dim.width, d.width); dim.height += d.height; if (i > 0) { dim.height += vgap; } } } } Insets insets = parent.getInsets(); dim.width += insets.left + insets.right; dim.height += insets.top + insets.bottom + vgap + vgap; return dim; } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java0000644000175000017500000002416312032647214026116 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import javax.swing.event.TableModelEvent; import javax.swing.table.DefaultTableModel; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.log.Logger; /** * The ObjectTableModel is a TableModel whose rows are objects; * columns are defined as Functors on the object. */ public class ObjectTableModel extends DefaultTableModel { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private transient ArrayList objects = new ArrayList(); private transient List headers = new ArrayList(); private transient ArrayList> classes = new ArrayList>(); private transient ArrayList readFunctors = new ArrayList(); private transient ArrayList writeFunctors = new ArrayList(); private transient Class objectClass = null; // if provided private transient boolean cellEditable = true; /** * The ObjectTableModel is a TableModel whose rows are objects; * columns are defined as Functors on the object. * * @param headers - Column names * @param _objClass - Object class that will be used * @param readFunctors - used to get the values * @param writeFunctors - used to set the values * @param editorClasses - class for each column */ public ObjectTableModel(String[] headers, Class _objClass, Functor[] readFunctors, Functor[] writeFunctors, Class[] editorClasses) { this(headers, readFunctors, writeFunctors, editorClasses); this.objectClass=_objClass; } /** * The ObjectTableModel is a TableModel whose rows are objects; * columns are defined as Functors on the object. * * @param headers - Column names * @param _objClass - Object class that will be used * @param readFunctors - used to get the values * @param writeFunctors - used to set the values * @param editorClasses - class for each column * @param cellEditable - if cell must editable (false to allow double click on cell) */ public ObjectTableModel(String[] headers, Class _objClass, Functor[] readFunctors, Functor[] writeFunctors, Class[] editorClasses, boolean cellEditable) { this(headers, readFunctors, writeFunctors, editorClasses); this.objectClass=_objClass; this.cellEditable = cellEditable; } /** * The ObjectTableModel is a TableModel whose rows are objects; * columns are defined as Functors on the object. * * @param headers - Column names * @param readFunctors - used to get the values * @param writeFunctors - used to set the values * @param editorClasses - class for each column */ public ObjectTableModel(String[] headers, Functor[] readFunctors, Functor[] writeFunctors, Class[] editorClasses) { this.headers.addAll(Arrays.asList(headers)); this.classes.addAll(Arrays.asList(editorClasses)); this.readFunctors = new ArrayList(Arrays.asList(readFunctors)); this.writeFunctors = new ArrayList(Arrays.asList(writeFunctors)); int numHeaders = headers.length; int numClasses = classes.size(); if (numClasses != numHeaders){ log.warn("Header count="+numHeaders+" but classes count="+numClasses); } // Functor count = 0 is handled specially int numWrite = writeFunctors.length; if (numWrite > 0 && numWrite != numHeaders){ log.warn("Header count="+numHeaders+" but writeFunctor count="+numWrite); } int numRead = readFunctors.length; if (numRead > 0 && numRead != numHeaders){ log.warn("Header count="+numHeaders+" but readFunctor count="+numRead); } } private Object readResolve() { objects = new ArrayList(); headers = new ArrayList(); classes = new ArrayList>(); readFunctors = new ArrayList(); writeFunctors = new ArrayList(); return this; } public Iterator iterator() { return objects.iterator(); } public void clearData() { int size = getRowCount(); objects.clear(); super.fireTableRowsDeleted(0, size); } public void addRow(Object value) { log.debug("Adding row value: " + value); if (objectClass != null) { final Class valueClass = value.getClass(); if (!objectClass.isAssignableFrom(valueClass)){ throw new IllegalArgumentException("Trying to add class: "+valueClass.getName() +"; expecting class: "+objectClass.getName()); } } objects.add(value); super.fireTableRowsInserted(objects.size() - 1, objects.size()); } public void insertRow(Object value, int index) { objects.add(index, value); super.fireTableRowsInserted(index, index + 1); } /** {@inheritDoc} */ @Override public int getColumnCount() { return headers.size(); } /** {@inheritDoc} */ @Override public String getColumnName(int col) { return headers.get(col); } /** {@inheritDoc} */ @Override public int getRowCount() { if (objects == null) { return 0; } return objects.size(); } /** {@inheritDoc} */ @Override public Object getValueAt(int row, int col) { log.debug("Getting row value"); Object value = objects.get(row); if(headers.size() == 1 && col >= readFunctors.size()) { return value; } Functor getMethod = readFunctors.get(col); if (getMethod != null && value != null) { return getMethod.invoke(value); } return null; } /** {@inheritDoc} */ @Override public boolean isCellEditable(int arg0, int arg1) { return cellEditable; } /** {@inheritDoc} */ @Override public void moveRow(int start, int end, int to) { List subList = new ArrayList(objects.subList(start, end)); for (int x = end - 1; x >= start; x--) { objects.remove(x); } objects.addAll(to, subList); super.fireTableChanged(new TableModelEvent(this)); } /** {@inheritDoc} */ @Override public void removeRow(int row) { objects.remove(row); super.fireTableRowsDeleted(row, row); } /** {@inheritDoc} */ @Override public void setValueAt(Object cellValue, int row, int col) { if (row < objects.size()) { Object value = objects.get(row); if (col < writeFunctors.size()) { Functor setMethod = writeFunctors.get(col); if (setMethod != null) { setMethod.invoke(value, new Object[] { cellValue }); super.fireTableDataChanged(); } } else if(headers.size() == 1) { objects.set(row,cellValue); } } } /** {@inheritDoc} */ @Override public Class getColumnClass(int arg0) { return classes.get(arg0); } /** * Check all registered functors. *

        * ** only for use in unit test code ** *

        * * @param _value - an instance of the table model row data item * (if null, use the class passed to the constructor). * * @param caller - class of caller. * * @return false if at least one Functor cannot be found. */ @SuppressWarnings("deprecation") public boolean checkFunctors(Object _value, Class caller){ Object value; if (_value == null && objectClass != null) { try { value = objectClass.newInstance(); } catch (InstantiationException e) { log.error("Cannot create instance of class "+objectClass.getName(),e); return false; } catch (IllegalAccessException e) { log.error("Cannot create instance of class "+objectClass.getName(),e); return false; } } else { value = _value; } boolean status = true; for(int i=0;i rows) { // used by TableEditor clearData(); for(Object val : rows) { addRow(val); } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/ComponentUtil.java0000644000175000017500000000663312032647214025561 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.awt.Component; import java.awt.Dimension; /** * This class is a Util for awt Component and could be used to place them in * center of an other. * * @version $Revision: 674365 $ */ public final class ComponentUtil { /** * Use this static method if you want to center and set its position * compared to the size of the current users screen size. Valid percent is * between +-(0-100) minus is treated as plus, bigger than 100 is always set * to 100. * * @param component * the component you want to center and set size on * @param percentOfScreen * the percent of the current screensize you want the component * to be */ public static void centerComponentInWindow(Component component, int percentOfScreen) { if (percentOfScreen < 0) { centerComponentInWindow(component, -percentOfScreen); return; } if (percentOfScreen > 100) { centerComponentInWindow(component, 100); return; } double percent = percentOfScreen / 100.d; Dimension dimension = component.getToolkit().getScreenSize(); component.setSize((int) (dimension.getWidth() * percent), (int) (dimension.getHeight() * percent)); centerComponentInWindow(component); } /** * Use this static method if you want to center a component in Window. * * @param component * the component you want to center in window */ public static void centerComponentInWindow(Component component) { Dimension dimension = component.getToolkit().getScreenSize(); component.setLocation((int) ((dimension.getWidth() - component.getWidth()) / 2), (int) ((dimension.getHeight() - component.getHeight()) / 2)); component.validate(); component.repaint(); } /** * Use this static method if you want to center a component over another * component. * * @param parent * the component you want to use to place it on * @param toBeCentered * the component you want to center */ public static void centerComponentInComponent(Component parent, Component toBeCentered) { toBeCentered.setLocation(parent.getX() + (parent.getWidth() - toBeCentered.getWidth()) / 2, parent.getY() + (parent.getHeight() - toBeCentered.getHeight()) / 2); toBeCentered.validate(); toBeCentered.repaint(); } /** * Private constructor to prevent instantiation. */ private ComponentUtil() { } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/JLabeledField.java0000644000175000017500000000226112032647214025360 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.util.List; import javax.swing.JComponent; import javax.swing.event.ChangeListener; /** * @version $Revision: 1377072 $ */ public interface JLabeledField { String getText(); void setText(String text); void setLabel(String pLabel); void addChangeListener(ChangeListener pChangeListener); List getComponentList(); }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/TreeTableModel.java0000644000175000017500000000341312032647214025602 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import javax.swing.table.TableModel; /** * * This is a basic interface for TreeTableModel that extends TableModel. * It's pretty minimal and isn't as full featured at other implementations. */ public interface TreeTableModel extends TableModel { /** * The method is similar to getValueAt(int,int). Instead of int, * the row is an object. * @param node * @param col * @return the value at the column */ Object getValueAt(Object node, int col); /** * the method is similar to isCellEditable(int,int). Instead of int, * the row is an object. * @param node * @param col * @return if cell is editable */ boolean isCellEditable(Object node, int col); /** * the method is similar to isCellEditable(int,int). Instead of int, * the row is an object. * @param val * @param node * @param column */ void setValueAt(Object val, Object node, int column); } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/AbstractTreeTableModel.java0000644000175000017500000001300612032647214027265 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.swing.event.TableModelListener; import javax.swing.event.EventListenerList; import javax.swing.table.DefaultTableModel; import javax.swing.tree.TreeNode; import org.apache.jorphan.reflect.Functor; public abstract class AbstractTreeTableModel extends DefaultTableModel implements TreeTableModel { private static final long serialVersionUID = 240L; protected final TreeNode rootNode; protected final EventListenerList listener = new EventListenerList(); protected transient final List objects = new ArrayList(); protected transient final List headers = new ArrayList(); protected transient final List> classes = new ArrayList>(); protected transient final List readFunctors; protected transient final List writeFunctors; public AbstractTreeTableModel(TreeNode root) { this.rootNode = root; readFunctors = new ArrayList(); writeFunctors = new ArrayList(); } public AbstractTreeTableModel(String[] headers, Functor[] readFunctors, Functor[] writeFunctors, Class[] editorClasses) { this.rootNode = null; this.headers.addAll(Arrays.asList(headers)); this.classes.addAll(Arrays.asList(editorClasses)); this.readFunctors = new ArrayList(Arrays.asList(readFunctors)); this.writeFunctors = new ArrayList(Arrays.asList(writeFunctors)); } /** * The root node for the TreeTable * @return the root node */ public Object getRootNode() { return this.rootNode; } /** * {@inheritDoc} */ public Object getValueAt(Object node, int col) { return null; } /** * {@inheritDoc} */ public boolean isCellEditable(Object node, int col) { return false; } /** * {@inheritDoc} */ public void setValueAt(Object val, Object node, int column) { } /** * The implementation is exactly the same as ObjectTableModel.getColumnCount. *

        * {@inheritDoc} */ @Override public int getColumnCount() { return headers.size(); } /** * The implementation is exactly the same as ObjectTableModel.getRowCount. *

        * {@inheritDoc} */ @Override public int getRowCount() { if (objects == null) { return 0; } return objects.size(); } /** * By default the abstract class returns true. It is up to subclasses * to override the implementation. *

        * {@inheritDoc} */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } /** * {@inheritDoc} */ @Override public Class getColumnClass(int arg0) { return classes.get(arg0); } /** * Subclasses need to implement the logic for the method and * return the value at the specific cell. *

        * {@inheritDoc} */ @Override public Object getValueAt(int rowIndex, int columnIndex) { return null; } /** * {@inheritDoc} */ @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } /** * {@inheritDoc} */ @Override public String getColumnName(int columnIndex) { return headers.get(columnIndex); } public int getChildCount(Object parent) { return 0; } public Object getChild(Object parent, int index) { return null; } /** * the implementation checks if the Object is a treenode. If it is, * it returns isLeaf(), otherwise it returns false. * @param node * @return whether object is a leaf node or not */ public boolean isLeaf(Object node) { if (node instanceof TreeNode) { return ((TreeNode)node).isLeaf(); } else { return false; } } /** * {@inheritDoc} */ @Override public void addTableModelListener(TableModelListener l) { this.listener.add(TableModelListener.class,l); } /** * {@inheritDoc} */ @Override public void removeTableModelListener(TableModelListener l) { this.listener.remove(TableModelListener.class,l); } public void nodeStructureChanged(TreeNode node) { } public void fireTreeNodesChanged(TreeNode source, Object[] path, int[] indexes, Object[] children) { } public void clearData() { int size = getRowCount(); objects.clear(); super.fireTableRowsDeleted(0, size); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/JLabeledTextArea.java0000644000175000017500000001745112032647214026061 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.awt.BorderLayout; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.text.BadLocationException; import javax.swing.text.Document; /** * A Helper component that wraps a JTextField with a label into a JPanel (this). * This component also has an efficient event handling mechanism for handling * the text changing in the Text Field. The registered change listeners are only * called when the text has changed. * */ public class JLabeledTextArea extends JPanel implements JLabeledField, FocusListener { private static final long serialVersionUID = 240L; private JLabel mLabel; private JTextArea mTextArea; // Maybe move to vector if MT problems occur private final ArrayList mChangeListeners = new ArrayList(3); // A temporary cache for the focus listener private String oldValue = ""; /** * Default constructor, The label and the Text field are left empty. */ public JLabeledTextArea() { this("", null); } /** * Constructs a new component with the label displaying the passed text. * * @param label * The text to display in the label. */ public JLabeledTextArea(String label) { this(label, null); } /** * Constructs a new component with the label displaying the passed text. * * @param pLabel * The text to display in the label. * @param docModel the document for the text area */ public JLabeledTextArea(String pLabel, Document docModel) { super(); mLabel = new JLabel(pLabel); init(); if (docModel != null) { mTextArea.setDocument(docModel); } } /** * Get the label {@link JLabel} followed by the text field @link {@link JTextArea}. */ public List getComponentList() { List comps = new LinkedList(); comps.add(mLabel); comps.add(mTextArea); return comps; } public void setDocumentModel(Document docModel) { mTextArea.setDocument(docModel); } /** * Initialises all of the components on this panel. */ private void init() { setLayout(new BorderLayout()); mTextArea = new JTextArea(); mTextArea.setRows(4); mTextArea.setLineWrap(true); mTextArea.setWrapStyleWord(true); // Register the handler for focus listening. This handler will // only notify the registered when the text changes from when // the focus is gained to when it is lost. mTextArea.addFocusListener(this); // Add the sub components this.add(mLabel, BorderLayout.NORTH); this.add(new JScrollPane(mTextArea), BorderLayout.CENTER); } /** * Callback method when the focus to the Text Field component is lost. * * @param pFocusEvent * The focus event that occured. */ public void focusLost(FocusEvent pFocusEvent) { // Compare if the value has changed, since we received focus. if (!oldValue.equals(mTextArea.getText())) { notifyChangeListeners(); } } /** * Catch what the value was when focus was gained. */ public void focusGained(FocusEvent pFocusEvent) { oldValue = mTextArea.getText(); } /** * Set the text displayed in the label. * * @param pLabel * The new label text. */ public void setLabel(String pLabel) { mLabel.setText(pLabel); } /** * Set the text displayed in the Text Field. * * @param pText * The new text to display in the text field. */ public void setText(String pText) { mTextArea.setText(pText); } /** * Returns the text in the Text Field. * * @return The text in the Text Field. */ public String getText() { return mTextArea.getText(); } /** * Returns the text of the label. * * @return The text of the label. */ public String getLabel() { return mLabel.getText(); } /** {@inheritDoc} */ @Override public void setEnabled(boolean enable) { super.setEnabled(enable); mTextArea.setEnabled(enable); } /** * Registers the text to display in a tool tip. * The text displays when the cursor lingers over the component. * @param text the string to display; if the text is null, * the tool tip is turned off for this component */ @Override public void setToolTipText(String text) { mTextArea.setToolTipText(text); } /** * Returns the tooltip string that has been set with setToolTipText * @return the text of the tool tip */ @Override public String getToolTipText() { return mTextArea.getToolTipText(); } /** * Adds a change listener, that will be notified when the text in the text * field is changed. The ChangeEvent that will be passed to registered * listeners will contain this object as the source, allowing the new text * to be extracted using the {@link #getText() getText} method. * * @param pChangeListener * The listener to add */ public void addChangeListener(ChangeListener pChangeListener) { mChangeListeners.add(pChangeListener); } /** * Removes a change listener. * * @param pChangeListener * The change listener to remove. */ public void removeChangeListener(ChangeListener pChangeListener) { mChangeListeners.remove(pChangeListener); } /** * Notify all registered change listeners that the text in the text field * has changed. */ private void notifyChangeListeners() { ChangeEvent ce = new ChangeEvent(this); for (int index = 0; index < mChangeListeners.size(); index++) { mChangeListeners.get(index).stateChanged(ce); } } public String[] getTextLines() { int numLines = mTextArea.getLineCount(); String[] lines = new String[numLines]; for(int i = 0; i < numLines; i++) { try { int start = mTextArea.getLineStartOffset(i); int end = mTextArea.getLineEndOffset(i); // treats last line specially if (i == numLines-1) { // Last line end++; // Allow for missing terminator } lines[i]=mTextArea.getText(start, end-start-1); } catch (BadLocationException e) { // should not happen throw new IllegalStateException("Could not read line "+i,e); } } return lines; } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/GuiUtils.java0000644000175000017500000000740512032647214024524 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.awt.Component; import java.awt.FlowLayout; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.border.EmptyBorder; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; public final class GuiUtils { /** * Create a scroll panel that sets its preferred size to its minimum size. * Explicitly for scroll panes that live inside other scroll panes, or * within containers that stretch components to fill the area they exist in. * Use this for any component you would put in a scroll pane (such as * TextAreas, tables, JLists, etc). It is here for convenience and to avoid * duplicate code. JMeter displays best if you follow this custom. * * @param comp * the component which should be placed inside the scroll pane * @return a JScrollPane containing the specified component */ public static JScrollPane makeScrollPane(Component comp) { JScrollPane pane = new JScrollPane(comp); pane.setPreferredSize(pane.getMinimumSize()); return pane; } /** * Fix the size of a column according to the header text. * * @param column to be resized * @param table containing the column */ public static void fixSize(TableColumn column, JTable table) { TableCellRenderer rndr; rndr = column.getHeaderRenderer(); if (rndr == null){ rndr = table.getTableHeader().getDefaultRenderer(); } Component c = rndr.getTableCellRendererComponent( table, column.getHeaderValue(), false, false, -1, column.getModelIndex()); int width = c.getPreferredSize().width+10; column.setMaxWidth(width); column.setPreferredWidth(width); column.setResizable(false); } /** * Create a GUI component JLabel + JComboBox with a left and right margin (5px) * @param label * @param comboBox * @return the JComponent (margin+JLabel+margin+JComboBox) */ public static JComponent createLabelCombo(String label, JComboBox comboBox) { JPanel labelCombo = new JPanel(); labelCombo.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); JLabel caption = new JLabel(label); caption.setBorder(new EmptyBorder(0, 5, 0, 5)); labelCombo.add(caption); labelCombo.add(comboBox); return labelCombo; } /** * Stop any editing that is currently being done on the table. This will * save any changes that have already been made. */ public static void stopTableEditing(JTable table) { if (table.isEditing()) { TableCellEditor cellEditor = table.getCellEditor(table.getEditingRow(), table.getEditingColumn()); cellEditor.stopCellEditing(); } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/JTreeTable.java0000644000175000017500000000333612032647214024737 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.util.Vector; import javax.swing.JTable; public class JTreeTable extends JTable { private static final long serialVersionUID = 240L; /** * The default implementation will use DefaultTreeTableModel */ public JTreeTable() { super(new DefaultTreeTableModel()); } /** * @param numRows * @param numColumns */ public JTreeTable(int numRows, int numColumns) { super(numRows, numColumns); } /** * @param dm */ public JTreeTable(TreeTableModel dm) { super(dm); } /** * @param rowData * @param columnNames */ public JTreeTable(Object[][] rowData, Object[] columnNames) { super(rowData, columnNames); } /** * @param rowData * @param columnNames */ public JTreeTable(Vector rowData, Vector columnNames) { super(rowData, columnNames); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/RendererUtils.java0000644000175000017500000000271512032647214025545 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; /** * Utility class for Renderers */ public final class RendererUtils { private RendererUtils(){ // uninstantiable } public static void applyRenderers(final JTable table, final TableCellRenderer [] renderers){ final TableColumnModel columnModel = table.getColumnModel(); for(int i = 0; i < renderers.length; i++){ final TableCellRenderer rend = renderers[i]; if (rend != null) { columnModel.getColumn(i).setCellRenderer(rend); } } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/JLabeledPasswordField.java0000644000175000017500000000271512032647214027107 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import javax.swing.JPasswordField; import javax.swing.JTextField; /** * @version $Revision: 905024 $ */ public class JLabeledPasswordField extends JLabeledTextField { private static final long serialVersionUID = 240L; public JLabeledPasswordField() { super(); } /** * Constructs a new component with the label displaying the passed text. * * @param pLabel * The text to in the label. */ public JLabeledPasswordField(String pLabel) { super(pLabel); } @Override protected JTextField createTextField(int size) { return new JPasswordField(size); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/JLabeledTextField.java0000644000175000017500000001606212032647214026231 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * A Helper component that wraps a JTextField with a label into a JPanel (this). * This component also has an efficient event handling mechanism for handling * the text changing in the Text Field. The registered change listeners are only * called when the text has changed. * * @version $Revision: 1174303 $ */ public class JLabeledTextField extends JPanel implements JLabeledField, FocusListener { private static final long serialVersionUID = 240L; private JLabel mLabel; private JTextField mTextField; // Maybe move to vector if MT problems occur private final ArrayList mChangeListeners = new ArrayList(3); // A temporary cache for the focus listener private String oldValue = ""; /** * Default constructor, The label and the Text field are left empty. */ public JLabeledTextField() { this("", 20); } /** * Constructs a new component with the label displaying the passed text. * * @param pLabel * The text to in the label. */ public JLabeledTextField(String pLabel) { this(pLabel, 20); } public JLabeledTextField(String pLabel, int size) { super(); mTextField = createTextField(size); mLabel = new JLabel(pLabel); mLabel.setLabelFor(mTextField); init(); } public JLabeledTextField(String pLabel, Color bk) { super(); mTextField = createTextField(20); mLabel = new JLabel(pLabel); mLabel.setBackground(bk); mLabel.setLabelFor(mTextField); this.setBackground(bk); init(); } /** * Get the label {@link JLabel} followed by the text field @link {@link JTextField}. */ public List getComponentList() { List comps = new LinkedList(); comps.add(mLabel); comps.add(mTextField); return comps; } /** {@inheritDoc} */ @Override public void setEnabled(boolean enable) { super.setEnabled(enable); mTextField.setEnabled(enable); } protected JTextField createTextField(int size) { return new JTextField(size); } /** * Initialises all of the components on this panel. */ private void init() { setLayout(new BorderLayout(5, 0)); // Register the handler for focus listening. This handler will // only notify the registered when the text changes from when // the focus is gained to when it is lost. mTextField.addFocusListener(this); // Add the sub components add(mLabel, BorderLayout.WEST); add(mTextField, BorderLayout.CENTER); } /** * Callback method when the focus to the Text Field component is lost. * * @param pFocusEvent * The focus event that occured. */ public void focusLost(FocusEvent pFocusEvent) { // Compare if the value has changed, since we received focus. if (!oldValue.equals(mTextField.getText())) { notifyChangeListeners(); } } /** * Catch what the value was when focus was gained. */ public void focusGained(FocusEvent pFocusEvent) { oldValue = mTextField.getText(); } /** * Set the text displayed in the label. * * @param pLabel * The new label text. */ public void setLabel(String pLabel) { mLabel.setText(pLabel); } /** * Set the text displayed in the Text Field. * * @param pText * The new text to display in the text field. */ public void setText(String pText) { mTextField.setText(pText); } /** * Returns the text in the Text Field. * * @return The text in the Text Field. */ public String getText() { return mTextField.getText(); } /** * Returns the text of the label. * * @return The text of the label. */ public String getLabel() { return mLabel.getText(); } /** * Registers the text to display in a tool tip. * The text displays when the cursor lingers over the component. * @param text the string to display; if the text is null, * the tool tip is turned off for this component */ @Override public void setToolTipText(String text) { mLabel.setToolTipText(text); mTextField.setToolTipText(text); } /** * Returns the tooltip string that has been set with setToolTipText * @return the text of the tool tip */ @Override public String getToolTipText() { if (mTextField == null){ // Necessary to avoid NPE when testing serialisation return null; } return mTextField.getToolTipText(); } /** * Adds a change listener, that will be notified when the text in the text * field is changed. The ChangeEvent that will be passed to registered * listeners will contain this object as the source, allowing the new text * to be extracted using the {@link #getText() getText} method. * * @param pChangeListener * The listener to add */ public void addChangeListener(ChangeListener pChangeListener) { mChangeListeners.add(pChangeListener); } /** * Removes a change listener. * * @param pChangeListener * The change listener to remove. */ public void removeChangeListener(ChangeListener pChangeListener) { mChangeListeners.remove(pChangeListener); } /** * Notify all registered change listeners that the text in the text field * has changed. */ protected void notifyChangeListeners() { ChangeEvent ce = new ChangeEvent(this); for (int index = 0; index < mChangeListeners.size(); index++) { mChangeListeners.get(index).stateChanged(ce); } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/NumberRenderer.java0000644000175000017500000000320212032647214025665 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer; /** * Renders numbers in a JTable with a specified format */ public class NumberRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 240L; protected final NumberFormat formatter; public NumberRenderer() { super(); formatter = NumberFormat.getInstance(); setHorizontalAlignment(SwingConstants.RIGHT); } public NumberRenderer(String format) { super(); formatter = new DecimalFormat(format); setHorizontalAlignment(SwingConstants.RIGHT); } @Override public void setValue(Object value) { setText((value == null) ? "" : formatter.format(value)); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/DefaultTreeTableModel.java0000644000175000017500000000313412032647214027107 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; import org.apache.jorphan.reflect.Functor; public class DefaultTreeTableModel extends AbstractTreeTableModel { private static final long serialVersionUID = 240L; public DefaultTreeTableModel() { this(new DefaultMutableTreeNode()); } /** * @param root */ public DefaultTreeTableModel(TreeNode root) { super(root); } /** * @param headers * @param readFunctors * @param writeFunctors * @param editorClasses */ public DefaultTreeTableModel(String[] headers, Functor[] readFunctors, Functor[] writeFunctors, Class[] editorClasses) { super(headers, readFunctors, writeFunctors, editorClasses); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/JLabeledChoice.java0000644000175000017500000002160612032647214025533 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class JLabeledChoice extends JPanel implements JLabeledField { private static final long serialVersionUID = 240L; private final JLabel mLabel = new JLabel(); private final JComboBox choiceList; // Maybe move to vector if MT problems occur private final ArrayList mChangeListeners = new ArrayList(3); private JButton delete, add; /** * Default constructor, The label and the Text field are left empty. */ public JLabeledChoice() { super(); choiceList = new JComboBox(); init(); } public JLabeledChoice(String pLabel, boolean editable) { super(); choiceList = new JComboBox(); mLabel.setText(pLabel); choiceList.setEditable(editable); init(); } /** * Constructs a non-edittable combo-box with the label displaying the passed text. * * @param pLabel - the text to display in the label. * @param items - the items to display in the Combo box */ public JLabeledChoice(String pLabel, String[] items) { this(pLabel, items, false); } /** * Constructs a combo-box with the label displaying the passed text. * * @param pLabel - the text to display in the label. * @param items - the items to display in the Combo box * @param editable - if true, then Add and Delete buttons are created. * */ public JLabeledChoice(String pLabel, String[] items, boolean editable) { super(); mLabel.setText(pLabel); choiceList = new JComboBox(items); choiceList.setEditable(editable); init(); } /** * Get the label {@link JLabel} followed by the combo-box @link {@link JComboBox}. */ public List getComponentList() { List comps = new LinkedList(); comps.add(mLabel); comps.add(choiceList); return comps; } public void setEditable(boolean editable) { choiceList.setEditable(editable); } public void addValue(String item) { choiceList.addItem(item); } public void setValues(String[] items) { choiceList.removeAllItems(); for (int i = 0; i < items.length; i++) { choiceList.addItem(items[i]); } } /** * Initialises all of the components on this panel. */ private void init() { /* * if(choiceList.isEditable()) { choiceList.addActionListener(new * ComboListener()); } */ // Register the handler for focus listening. This handler will // only notify the registered when the text changes from when // the focus is gained to when it is lost. choiceList.addItemListener(new ItemListener() { /** * Callback method when the focus to the Text Field component is * lost. * * @param e * The focus event that occured. */ public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { notifyChangeListeners(); } } }); // Add the sub components this.add(mLabel); this.add(choiceList); if (choiceList.isEditable()) { add = new JButton("Add"); add.setMargin(new Insets(1, 1, 1, 1)); add.addActionListener(new AddListener()); this.add(add); delete = new JButton("Del"); delete.setMargin(new Insets(1, 1, 1, 1)); delete.addActionListener(new DeleteListener()); this.add(delete); } } /** * Set the text displayed in the label. * * @param pLabel * The new label text. */ public void setLabel(String pLabel) { mLabel.setText(pLabel); } /** * Set the text displayed in the Text Field. * * @param pText * The new text to display in the text field. */ public void setText(String pText) { choiceList.setSelectedItem(pText); } public void setSelectedIndex(int index){ choiceList.setSelectedIndex(index); } /** * Returns the text in the Text Field. * * @return The text in the Text Field. Never returns null. */ public String getText() { Object item = choiceList.getSelectedItem(); if (item == null) { return ""; } else { return (String) item; } } public int getSelectedIndex(){ return choiceList.getSelectedIndex(); } public Object[] getSelectedItems() { return choiceList.getSelectedObjects(); } public String[] getItems() { String[] items = new String[choiceList.getItemCount()]; for (int i = 0; i < items.length; i++) { items[i] = (String) choiceList.getItemAt(i); } return items; } /** * Returns the text of the label. * * @return The text of the label. */ public String getLabel() { return mLabel.getText(); } /** * Registers the text to display in a tool tip. * The text displays when the cursor lingers over the component. * @param text the string to display; if the text is null, * the tool tip is turned off for this component */ @Override public void setToolTipText(String text) { choiceList.setToolTipText(text); } /** * Returns the tooltip string that has been set with setToolTipText * @return the text of the tool tip */ @Override public String getToolTipText() { if (choiceList == null){ // Necessary to avoid NPE when testing serialisation return null; } return choiceList.getToolTipText(); } /** * Adds a change listener, that will be notified when the text in the text * field is changed. The ChangeEvent that will be passed to registered * listeners will contain this object as the source, allowing the new text * to be extracted using the {@link #getText() getText} method. * * @param pChangeListener * The listener to add */ public void addChangeListener(ChangeListener pChangeListener) { mChangeListeners.add(pChangeListener); } /** * Removes a change listener. * * @param pChangeListener * The change listener to remove. */ public void removeChangeListener(ChangeListener pChangeListener) { mChangeListeners.remove(pChangeListener); } /** * Notify all registered change listeners that the text in the text field * has changed. */ private void notifyChangeListeners() { ChangeEvent ce = new ChangeEvent(this); for (int index = 0; index < mChangeListeners.size(); index++) { mChangeListeners.get(index).stateChanged(ce); } } private class AddListener implements ActionListener { public void actionPerformed(ActionEvent e) { Object item = choiceList.getSelectedItem(); int index = choiceList.getSelectedIndex(); if (!item.equals(choiceList.getItemAt(index))) { choiceList.addItem(item); } choiceList.setSelectedItem(item); notifyChangeListeners(); } } private class DeleteListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (choiceList.getItemCount() > 1) { choiceList.removeItemAt(choiceList.getSelectedIndex()); notifyChangeListeners(); } } } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/RateRenderer.java0000644000175000017500000000362712032647214025343 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; /** * Renders a rate in a JTable. * * The output is in units appropriate to its dimension: *

        * The number is represented in one of: * - requests/second * - requests/minute * - requests/hour. *

        * Examples: "34.2/sec" "0.1/sec" "43.0/hour" "15.9/min" */ public class RateRenderer extends NumberRenderer{ private static final long serialVersionUID = 240L; public RateRenderer(String format) { super(format); } @Override public void setValue(Object value) { if (!(value instanceof Double)) { setText("#N/A"); // TODO: should this just call super()? return; } double rate = ((Double) value).doubleValue(); if (rate == Double.MAX_VALUE){ setText("#N/A"); // TODO: should this just call super()? return; } String unit = "sec"; if (rate < 1.0) { rate *= 60.0; unit = "min"; } if (rate < 1.0) { rate *= 60.0; unit = "hour"; } setText(formatter.format(rate) + "/" + unit); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/gui/RightAlignRenderer.java0000644000175000017500000000227212032647214026473 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.gui; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer; /** * Renders items in a JTable right-aligned */ public class RightAlignRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 240L; public RightAlignRenderer() { super(); setHorizontalAlignment(SwingConstants.RIGHT); } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/math/0000755000175000017500000000000012165514773022265 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/math/StatCalculatorLong.java0000644000175000017500000000357112032647214026671 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.math; /** * StatCalculator for Long values */ public class StatCalculatorLong extends StatCalculator { public StatCalculatorLong() { super(Long.valueOf(0L), Long.valueOf(Long.MIN_VALUE), Long.valueOf(Long.MAX_VALUE)); } /** * Add a single value (normally elapsed time) * * @param val the value to add, which should correspond with a single sample */ public void addValue(long val){ super.addValue(Long.valueOf(val)); } /** * Update the calculator with the value for an aggregated sample. * * @param val the aggregate value, normally the elapsed time * @param sampleCount the number of samples contributing to the aggregate value */ public void addValue(long val, int sampleCount){ super.addValue(Long.valueOf(val), sampleCount); } @Override protected Long divide(Long val, int n) { return Long.valueOf(val.longValue() / n); } @Override protected Long divide(Long val, long n) { return Long.valueOf(val.longValue() / n); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/math/StatCalculator.java0000644000175000017500000002021712032647214026045 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.math; import java.util.ConcurrentModificationException; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import org.apache.commons.lang3.mutable.MutableLong; /** * This class serves as a way to calculate the median, max, min etc. of a list of values. * It is not threadsafe. * */ public abstract class StatCalculator> { // key is the type to collect (usually long), value = count of entries private final Map valuesMap = new TreeMap(); // We use a TreeMap because we need the entries to be sorted // Running values, updated for each sample private double sum = 0; private double sumOfSquares = 0; private double mean = 0; private double deviation = 0; private long count = 0; private T min; private T max; private long bytes = 0; private final T ZERO; private final T MAX_VALUE; // e.g. Long.MAX_VALUE private final T MIN_VALUE; // e.g. Long.MIN_VALUE /** * This constructor is used to set up particular values for the generic class instance. * * @param zero - value to return for Median and PercentPoint if there are no values * @param min - value to return for minimum if there are no values * @param max - value to return for maximum if there are no values */ public StatCalculator(final T zero, final T min, final T max) { super(); ZERO = zero; MAX_VALUE = max; MIN_VALUE = min; this.min = MAX_VALUE; this.max = MIN_VALUE; } public void clear() { valuesMap.clear(); sum = 0; sumOfSquares = 0; mean = 0; deviation = 0; count = 0; bytes = 0; max = MIN_VALUE; min = MAX_VALUE; } public void addBytes(long newValue) { bytes += newValue; } public void addAll(StatCalculator calc) { for(Entry ent : calc.valuesMap.entrySet()) { addEachValue(ent.getKey(), ent.getValue().longValue()); } } public T getMedian() { return getPercentPoint(0.5); } public long getTotalBytes() { return bytes; } /** * Get the value which %percent% of the values are less than. This works * just like median (where median represents the 50% point). A typical * desire is to see the 90% point - the value that 90% of the data points * are below, the remaining 10% are above. * * @param percent * @return number of values less than the percentage */ public T getPercentPoint(float percent) { return getPercentPoint((double) percent); } /** * Get the value which %percent% of the values are less than. This works * just like median (where median represents the 50% point). A typical * desire is to see the 90% point - the value that 90% of the data points * are below, the remaining 10% are above. * * @param percent * @return the value which %percent% of the values are less than */ public T getPercentPoint(double percent) { if (count <= 0) { return ZERO; } if (percent >= 1.0) { return getMax(); } // use Math.round () instead of simple (long) to provide correct value rounding long target = Math.round (count * percent); try { for (Entry val : valuesMap.entrySet()) { target -= val.getValue().longValue(); if (target <= 0){ return val.getKey(); } } } catch (ConcurrentModificationException ignored) { // ignored. May happen occasionally, but no harm done if so. } return ZERO; // TODO should this be getMin()? } /** * Returns the distribution of the values in the list. * * @return map containing either Integer or Long keys; entries are a Number array containing the key and the [Integer] count. * TODO - why is the key value also stored in the entry array? See Bug 53825 */ public Map getDistribution() { Map items = new HashMap(); for (Entry entry : valuesMap.entrySet()) { Number[] dis = new Number[2]; dis[0] = entry.getKey(); dis[1] = entry.getValue(); items.put(entry.getKey(), dis); } return items; } public double getMean() { return mean; } public double getStandardDeviation() { return deviation; } public T getMin() { return min; } public T getMax() { return max; } public long getCount() { return count; } public double getSum() { return sum; } protected abstract T divide(T val, int n); protected abstract T divide(T val, long n); /** * Update the calculator with the values for a set of samples. * * @param val the common value, normally the elapsed time * @param sampleCount the number of samples with the same value */ void addEachValue(T val, long sampleCount) { count += sampleCount; double currentVal = val.doubleValue(); sum += currentVal * sampleCount; // For n same values in sum of square is equal to n*val^2 sumOfSquares += currentVal * currentVal * sampleCount; updateValueCount(val, sampleCount); calculateDerivedValues(val); } /** * Update the calculator with the value for an aggregated sample. * * @param val the aggregate value, normally the elapsed time * @param sampleCount the number of samples contributing to the aggregate value */ public void addValue(T val, long sampleCount) { count += sampleCount; double currentVal = val.doubleValue(); sum += currentVal; T actualValue = val; if (sampleCount > 1){ // For n values in an aggregate sample the average value = (val/n) // So need to add n * (val/n) * (val/n) = val * val / n sumOfSquares += currentVal * currentVal / sampleCount; actualValue = divide(val, sampleCount); } else { // no need to divide by 1 sumOfSquares += currentVal * currentVal; } updateValueCount(actualValue, sampleCount); calculateDerivedValues(actualValue); } private void calculateDerivedValues(T actualValue) { mean = sum / count; deviation = Math.sqrt((sumOfSquares / count) - (mean * mean)); if (actualValue.compareTo(max) > 0){ max=actualValue; } if (actualValue.compareTo(min) < 0){ min=actualValue; } } /** * Add a single value (normally elapsed time) * * @param val the value to add, which should correspond with a single sample * @see #addValue(Number, long) */ public void addValue(T val) { addValue(val, 1L); } private void updateValueCount(T actualValue, long sampleCount) { MutableLong count = valuesMap.get(actualValue); if (count != null) { count.add(sampleCount); } else { // insert new value valuesMap.put(actualValue, new MutableLong(sampleCount)); } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/math/NumberComparator.java0000644000175000017500000000260312032647214026377 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 25, 2004 */ package org.apache.jorphan.math; import java.io.Serializable; import java.util.Comparator; public class NumberComparator implements Comparator, Serializable { private static final long serialVersionUID = 1L; public NumberComparator() { super(); } /** {@inheritDoc} */ public int compare(Number[] n1, Number[] n2) { if (n1[0].longValue() < n2[0].longValue()) { return -1; } else if (n1[0].longValue() == n2[0].longValue()) { return 0; } else { return 1; } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/math/StatCalculatorInteger.java0000644000175000017500000000337112032647214027365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.math; /** * StatCalculator for Integer values */ public class StatCalculatorInteger extends StatCalculator { public StatCalculatorInteger() { super(Integer.valueOf(0), Integer.valueOf(Integer.MIN_VALUE), Integer.valueOf(Integer.MAX_VALUE)); } public void addValue(int val){ super.addValue(Integer.valueOf(val)); } /** * Update the calculator with the value for an aggregated sample. * * @param val the aggregate value * @param sampleCount the number of samples contributing to the aggregate value */ public void addValue(int val, int sampleCount){ super.addValue(Integer.valueOf(val), sampleCount); } @Override protected Integer divide(Integer val, int n) { return Integer.valueOf(val.intValue() / n); } @Override protected Integer divide(Integer val, long n) { return Integer.valueOf((int) (val.intValue() / n)); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/io/0000755000175000017500000000000012165514773021743 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/io/TextFile.java0000644000175000017500000001343312032647214024324 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.io; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Utility class to handle text files as a single lump of text. *

        * Note this is just as memory-inefficient as handling a text file can be. Use * with restraint. * * @version $Revision: 1380390 $ */ public class TextFile extends File { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); /** * File encoding. null means use the platform's default. */ private String encoding = null; /** * Create a TextFile object to handle the named file with the given * encoding. * * @param filename * File to be read & written through this object. * @param encoding * Encoding to be used when reading & writing this file. */ public TextFile(File filename, String encoding) { super(filename.toString()); setEncoding(encoding); } /** * Create a TextFile object to handle the named file with the platform * default encoding. * * @param filename * File to be read & written through this object. */ public TextFile(File filename) { super(filename.toString()); } /** * Create a TextFile object to handle the named file with the platform * default encoding. * * @param filename * Name of the file to be read & written through this object. */ public TextFile(String filename) { super(filename); } /** * Create a TextFile object to handle the named file with the given * encoding. * * @param filename * Name of the file to be read & written through this object. * @param encoding * Encoding to be used when reading & writing this file. */ public TextFile(String filename, String encoding) { super(filename); setEncoding(encoding); } /** * Create the file with the given string as content -- or replace it's * content with the given string if the file already existed. * * @param body * New content for the file. */ public void setText(String body) { Writer writer = null; try { if (encoding == null) { writer = new FileWriter(this); } else { writer = new OutputStreamWriter(new FileOutputStream(this), encoding); } writer.write(body); writer.flush(); } catch (IOException ioe) { log.error("", ioe); } finally { JOrphanUtils.closeQuietly(writer); } } /** * Read the whole file content and return it as a string. * * @return the content of the file */ public String getText() { String lineEnd = System.getProperty("line.separator"); //$NON-NLS-1$ StringBuilder sb = new StringBuilder(); Reader reader = null; BufferedReader br = null; try { if (encoding == null) { reader = new FileReader(this); } else { reader = new InputStreamReader(new FileInputStream(this), encoding); } br = new BufferedReader(reader); String line = "NOTNULL"; //$NON-NLS-1$ while (line != null) { line = br.readLine(); if (line != null) { sb.append(line + lineEnd); } } } catch (IOException ioe) { log.error("", ioe); //$NON-NLS-1$ } finally { JOrphanUtils.closeQuietly(br); // closes reader as well } return sb.toString(); } /** * @return Encoding being used to read & write this file. */ public String getEncoding() { return encoding; } /** * @param string * Encoding to be used to read & write this file. */ public void setEncoding(String string) { encoding = string; } /** * {@inheritDoc} */ @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((encoding == null) ? 0 : encoding.hashCode()); return result; } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } if (!(obj instanceof TextFile)) { return false; } TextFile other = (TextFile) obj; if (encoding == null) { return other.encoding == null; } return encoding.equals(other.encoding); } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/reflect/0000755000175000017500000000000012165514773022760 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/reflect/ClassFinder.java0000644000175000017500000005511512032647214026015 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.reflect; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.StringTokenizer; import java.util.TreeSet; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * This class finds classes that extend one of a set of parent classes * */ public final class ClassFinder { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String DOT_JAR = ".jar"; // $NON-NLS-1$ private static final String DOT_CLASS = ".class"; // $NON-NLS-1$ private static final int DOT_CLASS_LEN = DOT_CLASS.length(); // static only private ClassFinder() { } /** * Filter updates to TreeSet by only storing classes * that extend one of the parent classes * * */ private static class FilterTreeSet extends TreeSet{ private static final long serialVersionUID = 234L; private final Class[] parents; // parent classes to check private final boolean inner; // are inner classes OK? // hack to reduce the need to load every class in non-GUI mode, which only needs functions // TODO perhaps use BCEL to scan class files instead? private final String contains; // class name should contain this string private final String notContains; // class name should not contain this string private final transient ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); // Potentially expensive; do it once FilterTreeSet(Class []parents, boolean inner, String contains, String notContains){ super(); this.parents=parents; this.inner=inner; this.contains=contains; this.notContains=notContains; } /** * Override the superclass so we only add classnames that * meet the criteria. * * @param s - classname (must be a String) * @return true if it is a new entry * * @see java.util.TreeSet#add(java.lang.Object) */ @Override public boolean add(String s){ if (contains(s)) { return false;// No need to check it again } if (contains!=null && s.indexOf(contains) == -1){ return false; // It does not contain a required string } if (notContains!=null && s.indexOf(notContains) != -1){ return false; // It contains a banned string } if ((s.indexOf('$') == -1) || inner) { // $NON-NLS-1$ if (isChildOf(parents,s, contextClassLoader)) { return super.add(s); } } return false; } } private static class AnnoFilterTreeSet extends TreeSet{ private static final long serialVersionUID = 240L; private final boolean inner; // are inner classes OK? private final Class[] annotations; // annotation classes to check private final transient ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); // Potentially expensive; do it once AnnoFilterTreeSet(Class []annotations, boolean inner){ super(); this.annotations = annotations; this.inner=inner; } /** * Override the superclass so we only add classnames that * meet the criteria. * * @param s - classname (must be a String) * @return true if it is a new entry * * @see java.util.TreeSet#add(java.lang.Object) */ @Override public boolean add(String s){ if (contains(s)) { return false;// No need to check it again } if ((s.indexOf('$') == -1) || inner) { // $NON-NLS-1$ if (hasAnnotationOnMethod(annotations,s, contextClassLoader)) { return super.add(s); } } return false; } } /** * Convenience method for * {@link #findClassesThatExtend(String[], Class[], boolean)} * with the option to include inner classes in the search set to false. * * @return List of Strings containing discovered class names. */ public static List findClassesThatExtend(String[] paths, Class[] superClasses) throws IOException { return findClassesThatExtend(paths, superClasses, false); } // For each directory in the search path, add all the jars found there private static String[] addJarsInPath(String[] paths) { Set fullList = new HashSet(); for (int i = 0; i < paths.length; i++) { final String path = paths[i]; fullList.add(path); // Keep the unexpanded path // TODO - allow directories to end with .jar by removing this check? if (!path.endsWith(DOT_JAR)) { File dir = new File(path); if (dir.exists() && dir.isDirectory()) { String[] jars = dir.list(new FilenameFilter() { public boolean accept(File f, String name) { return name.endsWith(DOT_JAR); } }); for (int x = 0; x < jars.length; x++) { fullList.add(jars[x]); } } } } return fullList.toArray(new String[fullList.size()]); } /** * Find classes in the provided path(s)/jar(s) that extend the class(es). * @param strPathsOrJars - pathnames or jarfiles to search for classes * @param superClasses - required parent class(es) * @param innerClasses - should we include inner classes? * * @return List containing discovered classes */ public static List findClassesThatExtend(String[] strPathsOrJars, final Class[] superClasses, final boolean innerClasses) throws IOException { return findClassesThatExtend(strPathsOrJars,superClasses,innerClasses,null,null); } /** * Find classes in the provided path(s)/jar(s) that extend the class(es). * @param strPathsOrJars - pathnames or jarfiles to search for classes * @param superClasses - required parent class(es) * @param innerClasses - should we include inner classes? * @param contains - classname should contain this string * @param notContains - classname should not contain this string * * @return List containing discovered classes */ public static List findClassesThatExtend(String[] strPathsOrJars, final Class[] superClasses, final boolean innerClasses, String contains, String notContains) throws IOException { return findClassesThatExtend(strPathsOrJars, superClasses, innerClasses, contains, notContains, false); } /** * Find classes in the provided path(s)/jar(s) that extend the class(es). * @param strPathsOrJars - pathnames or jarfiles to search for classes * @param annotations - required annotations * @param innerClasses - should we include inner classes? * * @return List containing discovered classes */ public static List findAnnotatedClasses(String[] strPathsOrJars, final Class[] annotations, final boolean innerClasses) throws IOException { return findClassesThatExtend(strPathsOrJars, annotations, innerClasses, null, null, true); } /** * Find classes in the provided path(s)/jar(s) that extend the class(es). * Inner classes are not searched. * * @param strPathsOrJars - pathnames or jarfiles to search for classes * @param annotations - required annotations * * @return List containing discovered classes */ public static List findAnnotatedClasses(String[] strPathsOrJars, final Class[] annotations) throws IOException { return findClassesThatExtend(strPathsOrJars, annotations, false, null, null, true); } /** * Find classes in the provided path(s)/jar(s) that extend the class(es). * @param searchPathsOrJars - pathnames or jarfiles to search for classes * @param classNames - required parent class(es) or annotations * @param innerClasses - should we include inner classes? * @param contains - classname should contain this string * @param notContains - classname should not contain this string * @param annotations - true if classnames are annotations * * @return List containing discovered classes */ public static List findClassesThatExtend(String[] searchPathsOrJars, final Class[] classNames, final boolean innerClasses, String contains, String notContains, boolean annotations) throws IOException { if (log.isDebugEnabled()) { log.debug("searchPathsOrJars : " + Arrays.toString(searchPathsOrJars)); log.debug("superclass : " + Arrays.toString(classNames)); log.debug("innerClasses : " + innerClasses + " annotations: " + annotations); log.debug("contains: " + contains + " notContains: " + notContains); } // Find all jars in the search path String[] strPathsOrJars = addJarsInPath(searchPathsOrJars); for (int k = 0; k < strPathsOrJars.length; k++) { strPathsOrJars[k] = fixPathEntry(strPathsOrJars[k]); } // Now eliminate any classpath entries that do not "match" the search List listPaths = getClasspathMatches(strPathsOrJars); if (log.isDebugEnabled()) { for (String path : listPaths) { log.debug("listPaths : " + path); } } @SuppressWarnings("unchecked") // Should only be called with classes that extend annotations final Class[] annoclassNames = (Class[]) classNames; Set listClasses = annotations ? new AnnoFilterTreeSet(annoclassNames, innerClasses) : new FilterTreeSet(classNames, innerClasses, contains, notContains); // first get all the classes findClassesInPaths(listPaths, listClasses); if (log.isDebugEnabled()) { log.debug("listClasses.size()="+listClasses.size()); for (String clazz : listClasses) { log.debug("listClasses : " + clazz); } } // // Now keep only the required classes // Set subClassList = findAllSubclasses(superClasses, listClasses, innerClasses); // if (log.isDebugEnabled()) { // log.debug("subClassList.size()="+subClassList.size()); // Iterator tIter = subClassList.iterator(); // while (tIter.hasNext()) { // log.debug("subClassList : " + tIter.next()); // } // } return new ArrayList(listClasses);//subClassList); } /* * Returns the classpath entries that match the search list of jars and paths */ private static List getClasspathMatches(String[] strPathsOrJars) { final String javaClassPath = System.getProperty("java.class.path"); // $NON-NLS-1$ StringTokenizer stPaths = new StringTokenizer(javaClassPath, System.getProperty("path.separator")); // $NON-NLS-1$ if (log.isDebugEnabled()) { log.debug("Classpath = " + javaClassPath); for (int i = 0; i < strPathsOrJars.length; i++) { log.debug("strPathsOrJars[" + i + "] : " + strPathsOrJars[i]); } } // find all jar files or paths that end with strPathOrJar ArrayList listPaths = new ArrayList(); String strPath = null; while (stPaths.hasMoreTokens()) { strPath = fixPathEntry(stPaths.nextToken()); if (strPathsOrJars == null) { log.debug("Adding: " + strPath); listPaths.add(strPath); } else { boolean found = false; for (int i = 0; i < strPathsOrJars.length; i++) { if (strPath.endsWith(strPathsOrJars[i])) { found = true; log.debug("Adding " + strPath + " found at " + i); listPaths.add(strPath); break;// no need to look further } } if (!found) { log.debug("Did not find: " + strPath); } } } return listPaths; } /** * Fix a path: * - replace "." by current directory * - trim any trailing spaces * - replace \ by / * - replace // by / * - remove all trailing / */ private static String fixPathEntry(String path){ if (path == null ) { return null; } if (path.equals(".")) { // $NON-NLS-1$ return System.getProperty("user.dir"); // $NON-NLS-1$ } path = path.trim().replace('\\', '/'); // $NON-NLS-1$ // $NON-NLS-2$ path = JOrphanUtils.substitute(path, "//", "/"); // $NON-NLS-1$// $NON-NLS-2$ while (path.endsWith("/")) { // $NON-NLS-1$ path = path.substring(0, path.length() - 1); } return path; } /* * NOTUSED * Determine if the class implements the interface. * * @param theClass * the class to check * @param theInterface * the interface to look for * @return boolean true if it implements * * private static boolean classImplementsInterface( Class theClass, Class * theInterface) { HashMap mapInterfaces = new HashMap(); String strKey = * null; // pass in the map by reference since the method is recursive * getAllInterfaces(theClass, mapInterfaces); Iterator iterInterfaces = * mapInterfaces.keySet().iterator(); while (iterInterfaces.hasNext()) { * strKey = (String) iterInterfaces.next(); if (mapInterfaces.get(strKey) == * theInterface) { return true; } } return false; } */ /* * Finds all classes that extend the classes in the listSuperClasses * ArrayList, searching in the listAllClasses ArrayList. * * @param superClasses * the base classes to find subclasses for * @param listAllClasses * the collection of classes to search in * @param innerClasses * indicate whether to include inner classes in the search * @return ArrayList of the subclasses */ // private static Set findAllSubclasses(Class []superClasses, Set listAllClasses, boolean innerClasses) { // Set listSubClasses = new TreeSet(); // for (int i=0; i< superClasses.length; i++) { // findAllSubclassesOneClass(superClasses[i], listAllClasses, listSubClasses, innerClasses); // } // return listSubClasses; // } /* * Finds all classes that extend the class, searching in the listAllClasses * ArrayList. * * @param theClass * the parent class * @param listAllClasses * the collection of classes to search in * @param listSubClasses * the collection of discovered subclasses * @param innerClasses * indicates whether inners classes should be included in the * search */ // private static void findAllSubclassesOneClass(Class theClass, Set listAllClasses, Set listSubClasses, // boolean innerClasses) { // Iterator iterClasses = listAllClasses.iterator(); // while (iterClasses.hasNext()) { // String strClassName = (String) iterClasses.next(); // // only check classes if they are not inner classes // // or we intend to check for inner classes // if ((strClassName.indexOf("$") == -1) || innerClasses) { // $NON-NLS-1$ // // might throw an exception, assume this is ignorable // try { // Class c = Class.forName(strClassName, false, Thread.currentThread().getContextClassLoader()); // // if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers())) { // if(theClass.isAssignableFrom(c)){ // listSubClasses.add(strClassName); // } // } // } catch (Throwable ignored) { // log.debug(ignored.getLocalizedMessage()); // } // } // } // } /** * * @param parentClasses list of classes to check for * @param strClassName name of class to be checked * @param innerClasses should we allow inner classes? * @param contextClassLoader the classloader to use * @return true if the class is a non-abstract, non-interface instance of at least one of the parent classes */ private static boolean isChildOf(Class [] parentClasses, String strClassName, ClassLoader contextClassLoader){ // might throw an exception, assume this is ignorable try { Class c = Class.forName(strClassName, false, contextClassLoader); if (!c.isInterface() && !Modifier.isAbstract(c.getModifiers())) { for (int i=0; i< parentClasses.length; i++) { if(parentClasses[i].isAssignableFrom(c)){ return true; } } } } catch (UnsupportedClassVersionError ignored) { log.debug(ignored.getLocalizedMessage()); } catch (NoClassDefFoundError ignored) { log.debug(ignored.getLocalizedMessage()); } catch (ClassNotFoundException ignored) { log.debug(ignored.getLocalizedMessage()); } return false; } private static boolean hasAnnotationOnMethod(Class[] annotations, String classInQuestion, ClassLoader contextClassLoader ){ try{ Class c = Class.forName(classInQuestion, false, contextClassLoader); for(Method method : c.getMethods()) { for(Class annotation : annotations) { if(method.isAnnotationPresent(annotation)) { return true; } } } } catch (NoClassDefFoundError ignored) { log.debug(ignored.getLocalizedMessage()); } catch (ClassNotFoundException ignored) { log.debug(ignored.getLocalizedMessage()); } return false; } /* * Converts a class file from the text stored in a Jar file to a version * that can be used in Class.forName(). * * @param strClassName * the class name from a Jar file * @return String the Java-style dotted version of the name */ private static String fixClassName(String strClassName) { strClassName = strClassName.replace('\\', '.'); // $NON-NLS-1$ // $NON-NLS-2$ strClassName = strClassName.replace('/', '.'); // $NON-NLS-1$ // $NON-NLS-2$ // remove ".class" strClassName = strClassName.substring(0, strClassName.length() - DOT_CLASS_LEN); return strClassName; } private static void findClassesInOnePath(String strPath, Set listClasses) throws IOException { File file = new File(strPath); if (file.isDirectory()) { findClassesInPathsDir(strPath, file, listClasses); } else if (file.exists()) { ZipFile zipFile = null; try { zipFile = new ZipFile(file); Enumeration entries = zipFile.entries(); while (entries.hasMoreElements()) { String strEntry = entries.nextElement().toString(); if (strEntry.endsWith(DOT_CLASS)) { listClasses.add(fixClassName(strEntry)); } } } catch (IOException e) { log.warn("Can not open the jar " + strPath + " " + e.getLocalizedMessage(),e); } finally { if(zipFile != null) { try {zipFile.close();} catch (Exception e) {} } } } } private static void findClassesInPaths(List listPaths, Set listClasses) throws IOException { for (String path : listPaths) { findClassesInOnePath(path, listClasses); } } private static void findClassesInPathsDir(String strPathElement, File dir, Set listClasses) throws IOException { String[] list = dir.list(); for (int i = 0; i < list.length; i++) { File file = new File(dir, list[i]); if (file.isDirectory()) { // Recursive call findClassesInPathsDir(strPathElement, file, listClasses); } else if (list[i].endsWith(DOT_CLASS) && file.exists() && (file.length() != 0)) { final String path = file.getPath(); listClasses.add(path.substring(strPathElement.length() + 1, path.lastIndexOf('.')) // $NON-NLS-1$ .replace(File.separator.charAt(0), '.')); // $NON-NLS-1$ } } } }apache-jmeter-2.8/src/jorphan/org/apache/jorphan/reflect/ClassTools.java0000644000175000017500000001135212032647214025701 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.apache.commons.lang3.ClassUtils; import org.apache.jorphan.util.JMeterException; /** * Utility methods for handling dynamic access to classes. */ public class ClassTools { /** * Call no-args constructor for a class. * * @param className * @return an instance of the class * @throws JMeterException if class cannot be created */ public static Object construct(String className) throws JMeterException { Object instance = null; try { instance = ClassUtils.getClass(className).newInstance(); } catch (ClassNotFoundException e) { throw new JMeterException(e); } catch (InstantiationException e) { throw new JMeterException(e); } catch (IllegalAccessException e) { throw new JMeterException(e); } return instance; } /** * Call a class constructor with an integer parameter * @param className * @param parameter (integer) * @return an instance of the class * @throws JMeterException if class cannot be created */ public static Object construct(String className, int parameter) throws JMeterException { Object instance = null; try { Class clazz = ClassUtils.getClass(className); clazz.getConstructor(new Class [] {Integer.TYPE}); instance = ClassUtils.getClass(className).newInstance(); } catch (ClassNotFoundException e) { throw new JMeterException(e); } catch (InstantiationException e) { throw new JMeterException(e); } catch (IllegalAccessException e) { throw new JMeterException(e); } catch (SecurityException e) { throw new JMeterException(e); } catch (NoSuchMethodException e) { throw new JMeterException(e); } return instance; } /** * Call a class constructor with an String parameter * @param className * @param parameter (String) * @return an instance of the class * @throws JMeterException if class cannot be created */ public static Object construct(String className, String parameter) throws JMeterException { Object instance = null; try { Class clazz = Class.forName(className); Constructor constructor = clazz.getConstructor(String.class); instance = constructor.newInstance(parameter); } catch (ClassNotFoundException e) { throw new JMeterException(e); } catch (InstantiationException e) { throw new JMeterException(e); } catch (IllegalAccessException e) { throw new JMeterException(e); } catch (NoSuchMethodException e) { throw new JMeterException(e); } catch (IllegalArgumentException e) { throw new JMeterException(e); } catch (InvocationTargetException e) { throw new JMeterException(e); } return instance; } /** * Invoke a public method on a class instance * * @param instance * @param methodName * @throws SecurityException * @throws IllegalArgumentException * @throws JMeterException */ public static void invoke(Object instance, String methodName) throws SecurityException, IllegalArgumentException, JMeterException { Method m; try { m = ClassUtils.getPublicMethod(instance.getClass(), methodName, new Class [] {}); m.invoke(instance, (Object [])null); } catch (NoSuchMethodException e) { throw new JMeterException(e); } catch (IllegalAccessException e) { throw new JMeterException(e); } catch (InvocationTargetException e) { throw new JMeterException(e); } } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/reflect/Functor.java0000644000175000017500000004016712032647214025241 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jorphan.reflect; import java.lang.reflect.Method; import java.util.Arrays; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterError; import org.apache.log.Logger; /** * Implements function call-backs. * * Functors may be defined for instance objects or classes. * * The method is created on first use, which allows the invokee (class or instance) * to be omitted from the constructor. * * The class name takes precedence over the instance. * * If a functor is created with a particular instance, then that is used for all future calls; * if an object is provided, it is ignored. * This allows easy override of the table model behaviour. * * If an argument list is provided in the constructor, then that is ignored in subsequent invoke() calls. * * Usage: * f = new Functor("methodName") * o = f.invoke(object) - OR - * o = f.invoke(object,params) * * f2 = new Functor(object,"methodName"); * o = f2.invoke() - OR - * o = f2.invoke(params) * * f3 = new Functor(class,"methodName"); * o = f3.invoke(object) - will be ignored * o = f3.invoke() - OR - * o = f3.invoke(params) * o = f3.invoke(object,params) - object will be ignored * */ public class Functor { private static final Logger log = LoggingManager.getLoggerForClass(); /* * If non-null, then any object provided to invoke() is ignored. */ private final Object invokee; /* * Class to be used to create the Method. * Will be non-null if either Class or Object was provided during construction. * * Can be used instead of invokee, e.g. when using interfaces. */ private final Class clazz; // Methondname must always be provided. private final String methodName; /* * If non-null, then any argument list passed to invoke() will be ignored. */ private Object[] args; /* * Argument types used to create the method. * May be provided explicitly, or derived from the constructor argument list. */ private final Class[] types; /* * This depends on the class or invokee and either args or types; * it is set once by doCreateMethod(), which must be the only method to access it. */ private Method methodToInvoke; Functor(){ throw new IllegalArgumentException("Must provide at least one argument"); } /** * Create a functor with the invokee and a method name. * * The invokee will be used in all future invoke calls. * * @param _invokee object on which to invoke the method * @param _methodName method name */ public Functor(Object _invokee, String _methodName) { this(null, _invokee, _methodName, null, null); } /** * Create a functor from class and method name. * This is useful for methods defined in interfaces. * * The actual invokee must be provided in all invoke() calls, * and must be an instance of the class. * * @param _clazz class to be used * @param _methodName method name */ public Functor(Class _clazz, String _methodName) { this(_clazz, null, _methodName, null, null); } /** * Create a functor with the invokee, method name, and argument class types. * * The invokee will be ignored in any invoke() calls. * * @param _invokee object on which to invoke the method * @param _methodName method name * @param _types */ public Functor(Object _invokee, String _methodName, Class[] _types) { this(null, _invokee, _methodName, null, _types); } /** * Create a functor with the class, method name, and argument class types. * * Subsequent invoke() calls must provide the appropriate ivokee object. * * @param _clazz the class in which to find the method * @param _methodName method name * @param _types */ public Functor(Class _clazz, String _methodName, Class[] _types) { this(_clazz, null, _methodName, null, _types); } /** * Create a functor with just the method name. * * The invokee and any parameters must be provided in all invoke() calls. * * @param _methodName method name */ public Functor(String _methodName) { this(null, null, _methodName, null, null); } /** * Create a functor with the method name and argument class types. * * The invokee must be provided in all invoke() calls * * @param _methodName method name * @param _types parameter types */ public Functor(String _methodName, Class[] _types) { this(null, null, _methodName, null, _types); } /** * Create a functor with an invokee, method name, and argument values. * * The invokee will be ignored in any invoke() calls. * * @param _invokee object on which to invoke the method * @param _methodName method name * @param _args arguments to be passed to the method */ public Functor(Object _invokee, String _methodName, Object[] _args) { this(null, _invokee, _methodName, _args, null); } /** * Create a functor from method name and arguments. * * The class will be determined from the first invoke call. * All invoke calls must include a target object; * which must be of the same type as the initial invokee. * * @param _methodName method name * @param _args */ public Functor(String _methodName, Object[] _args) { this(null, null, _methodName, _args, null); } /** * Create a functor from various different combinations of parameters. * * @param _clazz class containing the method * @param _invokee invokee to use for the method call * @param _methodName the method name (required) * @param _args arguments to be used * @param _types types of arguments to be used * * @throws IllegalArgumentException if: * - methodName is null * - both class and invokee are specified * - both arguments and types are specified */ private Functor(Class _clazz, Object _invokee, String _methodName, Object[] _args, Class[] _types) { if (_methodName == null){ throw new IllegalArgumentException("Methodname must not be null"); } if (_clazz != null && _invokee != null){ throw new IllegalArgumentException("Cannot provide both Class and Object"); } if (_args != null && _types != null){ throw new IllegalArgumentException("Cannot provide both arguments and argument types"); } // If class not provided, default to invokee class, else null this.clazz = _clazz != null ? _clazz : (_invokee != null ? _invokee.getClass() : null); this.invokee = _invokee; this.methodName = _methodName; this.args = _args; // If types not provided, default to argument types, else null this.types = _types != null ? _types : (_args != null ? _getTypes(_args) : null); } ////////////////////////////////////////// /* * Low level invocation routine. * * Should only be called after any defaults have been applied. * */ private Object doInvoke(Class _class, Object _invokee, Object[] _args) { Class[] argTypes = getTypes(_args); try { Method method = doCreateMethod(_class , argTypes); if (method == null){ final String message = "Can't find method " +_class.getName()+"#"+methodName+typesToString(argTypes); log.error(message, new Throwable()); throw new JMeterError(message); } return method.invoke(_invokee, _args); } catch (Exception e) { final String message = "Trouble functing: " +_class.getName() +"."+methodName+"(...) : " +" invokee: "+_invokee +" "+e.getMessage(); log.warn(message, e); throw new JMeterError(message,e); } } /** * Invoke a Functor, which must have been created with either a class name or object. * * @return the object if any */ public Object invoke() { if (invokee == null) { throw new IllegalStateException("Cannot call invoke() - invokee not known"); } // If invokee was provided, then clazz has been set up return doInvoke(clazz, invokee, getArgs()); } /** * Invoke the method on a given object. * * @param p_invokee - provides the object to call; ignored if the class or object were provided to the constructor * @return the value */ public Object invoke(Object p_invokee) { return invoke(p_invokee, getArgs()); } /** * Invoke the method with the provided parameters. * * The invokee must have been provided in the constructor. * * @param p_args parameters for the method * @return the value */ public Object invoke(Object[] p_args) { if (invokee == null){ throw new IllegalStateException("Invokee was not provided in constructor"); } // If invokee was provided, then clazz has been set up return doInvoke(clazz, invokee, args != null? args : p_args); } /** * Invoke the method on the invokee with the provided parameters. * * The invokee must agree with the class (if any) provided at construction time. * * If the invokee was provided at construction time, then this invokee will be ignored. * If actual arguments were provided at construction time, then arguments will be ignored. * */ public Object invoke(Object p_invokee, Object[] p_args) { return doInvoke(clazz != null ? clazz : p_invokee.getClass(), // Use constructor class if present invokee != null ? invokee : p_invokee, // use invokee if provided args != null? args : p_args);// use argumenrs if provided } /* * Low-level (recursive) routine to define the method - if not already defined. * Synchronized to protect access to methodToInvoke. */ private synchronized Method doCreateMethod(Class p_class, Class[] p_types) { if (log.isDebugEnabled()){ log.debug("doCreateMethod() using "+this.toString() +"class=" + p_class.getName() + " types: " + Arrays.asList(p_types)); } if (methodToInvoke == null) { try { methodToInvoke = p_class.getMethod(methodName, p_types); } catch (Exception e) { for (int i = 0; i < p_types.length; i++) { Class primitive = getPrimitive(p_types[i]); if (primitive != null) { methodToInvoke = doCreateMethod(p_class, getNewArray(i, primitive, p_types)); if (methodToInvoke != null) { return methodToInvoke; } } Class[] interfaces = p_types[i].getInterfaces(); for (int j = 0; j < interfaces.length; j++) { methodToInvoke = doCreateMethod(p_class,getNewArray(i, interfaces[j], p_types)); if (methodToInvoke != null) { return methodToInvoke; } } Class parent = p_types[i].getSuperclass(); if (parent != null) { methodToInvoke = doCreateMethod(p_class,getNewArray(i, parent, p_types)); if (methodToInvoke != null) { return methodToInvoke; } } } } } return methodToInvoke; } /** * Check if a read Functor method is valid. * * @deprecated ** for use by Unit test code only ** * * @return true if method exists */ @Deprecated public boolean checkMethod(Object _invokee){ Method m = null; try { m = doCreateMethod(_invokee.getClass(), getTypes(args)); } catch (Exception e){ // ignored } return null != m; } /** * Check if a write Functor method is valid. * * @deprecated ** for use by Unit test code only ** * * @return true if method exists */ @Deprecated public boolean checkMethod(Object _invokee, Class c){ Method m = null; try { m = doCreateMethod(_invokee.getClass(), new Class[]{c}); } catch (Exception e){ // ignored } return null != m; } @Override public String toString(){ StringBuilder sb = new StringBuilder(100); if (clazz != null){ sb.append(clazz.getName()); } if (invokee != null){ sb.append("@"); sb.append(System.identityHashCode(invokee)); } sb.append("."); sb.append(methodName); typesToString(sb,types); return sb.toString(); } private void typesToString(StringBuilder sb,Class[] _types) { sb.append("("); if (_types != null){ for(int i=0; i < _types.length; i++){ if (i>0) { sb.append(","); } sb.append(_types[i].getName()); } } sb.append(")"); } private String typesToString(Class[] argTypes) { StringBuilder sb = new StringBuilder(); typesToString(sb,argTypes); return sb.toString(); } private Class getPrimitive(Class t) { if (t==null) { return null; } if (t.equals(Integer.class)) { return int.class; } else if (t.equals(Long.class)) { return long.class; } else if (t.equals(Double.class)) { return double.class; } else if (t.equals(Float.class)) { return float.class; } else if (t.equals(Byte.class)) { return byte.class; } else if (t.equals(Boolean.class)) { return boolean.class; } else if (t.equals(Short.class)) { return short.class; } else if (t.equals(Character.class)) { return char.class; } return null; } private Class[] getNewArray(int i, Class replacement, Class[] orig) { Class[] newArray = new Class[orig.length]; for (int j = 0; j < newArray.length; j++) { if (j == i) { newArray[j] = replacement; } else { newArray[j] = orig[j]; } } return newArray; } private Class[] getTypes(Object[] _args) { if (types == null) { return _getTypes(_args); } return types; } private static Class[] _getTypes(Object[] _args) { Class[] _types; if (_args != null) { _types = new Class[_args.length]; for (int i = 0; i < _args.length; i++) { _types[i] = _args[i].getClass(); } } else { _types = new Class[0]; } return _types; } private Object[] getArgs() { if (args == null) { args = new Object[0]; } return args; } } apache-jmeter-2.8/src/jorphan/org/apache/jorphan/logging/0000755000175000017500000000000012165514773022762 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/jorphan/logging/LoggingManager.java0000644000175000017500000003321512032647214026500 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jorphan.logging; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.Properties; import org.apache.avalon.excalibur.logger.LogKitLoggerManager; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; import org.apache.avalon.framework.context.Context; import org.apache.avalon.framework.context.ContextException; import org.apache.avalon.framework.context.DefaultContext; import org.apache.log.Hierarchy; import org.apache.log.LogTarget; import org.apache.log.Logger; import org.apache.log.Priority; import org.apache.log.format.PatternFormatter; import org.apache.log.output.NullOutputLogTarget; import org.apache.log.output.io.WriterTarget; import org.xml.sax.SAXException; /** * Manages JMeter logging */ public final class LoggingManager { // N.B time pattern is passed to java.text.SimpleDateFormat /* * Predefined format patterns, selected by the property log_format_type (see * jmeter.properties) The new-line is added later */ public static final String DEFAULT_PATTERN = "%{time:yyyy/MM/dd HH:mm:ss} %5.5{priority} - " //$NON_NLS-1$ + "%{category}: %{message} %{throwable}"; //$NON_NLS-1$ private static final String PATTERN_THREAD_PREFIX = "%{time:yyyy/MM/dd HH:mm:ss} %5.5{priority} " //$NON_NLS-1$ + "%20{thread} %{category}: %{message} %{throwable}"; //$NON_NLS-1$ private static final String PATTERN_THREAD_SUFFIX = "%{time:yyyy/MM/dd HH:mm:ss} %5.5{priority} " //$NON_NLS-1$ + "%{category}[%{thread}]: %{message} %{throwable}"; //$NON_NLS-1$ // Needs to be volatile as may be referenced from multiple threads // TODO see if this can be made final somehow private static volatile PatternFormatter format = null; /** Used to hold the default logging target. */ //@GuardedBy("this") private static LogTarget target = new NullOutputLogTarget(); // Hack to detect when System.out has been set as the target, to avoid closing it private static volatile boolean isTargetSystemOut = false;// Is the target System.out? private static volatile boolean isWriterSystemOut = false;// Is the Writer System.out? public static final String LOG_FILE = "log_file"; //$NON_NLS-1$ public static final String LOG_PRIORITY = "log_level"; //$NON_NLS-1$ private LoggingManager() { // non-instantiable - static methods only } /** * Initialise the logging system from the Jmeter properties. Logkit loggers * inherit from their parents. * * Normally the jmeter properties file defines a single log file, so set * this as the default from "log_file", default "jmeter.log" The default * priority is set from "log_level", with a default of INFO * */ public static void initializeLogging(Properties properties) { setFormat(properties); // Set the top-level defaults setTarget(makeWriter(properties.getProperty(LOG_FILE, "jmeter.log"), LOG_FILE)); //$NON_NLS-1$ setPriority(properties.getProperty(LOG_PRIORITY, "INFO")); setLoggingLevels(properties); // now set the individual categories (if any) setConfig(properties);// Further configuration } private static void setFormat(Properties properties) { String pattern = DEFAULT_PATTERN; String type = properties.getProperty("log_format_type", ""); //$NON_NLS-1$ if (type.length() == 0) { pattern = properties.getProperty("log_format", DEFAULT_PATTERN); //$NON_NLS-1$ } else { if (type.equalsIgnoreCase("thread_suffix")) { //$NON_NLS-1$ pattern = PATTERN_THREAD_SUFFIX; } else if (type.equalsIgnoreCase("thread_prefix")) { //$NON_NLS-1$ pattern = PATTERN_THREAD_PREFIX; } else { pattern = DEFAULT_PATTERN; } } format = new PatternFormatter(pattern + "\n"); //$NON_NLS-1$ } private static void setConfig(Properties p) { String cfg = p.getProperty("log_config"); //$NON_NLS-1$ if (cfg == null) { return; } // Make sure same hierarchy is used Hierarchy hier = Hierarchy.getDefaultHierarchy(); LogKitLoggerManager manager = new LogKitLoggerManager(null, hier, null, null); DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); try { Configuration c = builder.buildFromFile(cfg); Context ctx = new DefaultContext(); manager.contextualize(ctx); manager.configure(c); } catch (IllegalArgumentException e) { // This happens if the default log-target id-ref specifies a non-existent target System.out.println("Error processing logging config " + cfg); System.out.println(e.toString()); } catch (NullPointerException e) { // This can happen if a log-target id-ref specifies a non-existent target System.out.println("Error processing logging config " + cfg); System.out.println("Perhaps a log target is missing?"); } catch (ConfigurationException e) { System.out.println("Error processing logging config " + cfg); System.out.println(e.toString()); } catch (SAXException e) { System.out.println("Error processing logging config " + cfg); System.out.println(e.toString()); } catch (IOException e) { System.out.println("Error processing logging config " + cfg); System.out.println(e.toString()); } catch (ContextException e) { System.out.println("Error processing logging config " + cfg); System.out.println(e.toString()); } } /* * Helper method to ensure that format is initialised if initializeLogging() * has not yet been called. */ private static PatternFormatter getFormat() { if (format == null) { format = new PatternFormatter(DEFAULT_PATTERN + "\n"); //$NON_NLS-1$ } return format; } /* * Helper method to handle log target creation. If there is an error * creating the file, then it uses System.out. */ private static Writer makeWriter(String logFile, String propName) { // If the name contains at least one set of paired single-quotes, reformat using DateFormat final int length = logFile.split("'",-1).length; if (length > 1 && length %2 == 1){ try { SimpleDateFormat df = new SimpleDateFormat(logFile); logFile = df.format(new Date()); } catch (Exception ignored) { } } Writer wt; isWriterSystemOut = false; try { wt = new FileWriter(logFile); } catch (Exception e) { System.out.println(propName + "=" + logFile + " " + e.toString()); System.out.println("[" + propName + "-> System.out]"); isWriterSystemOut = true; wt = new PrintWriter(System.out); } return wt; } /** * Handle LOG_PRIORITY.category=priority and LOG_FILE.category=file_name * properties. If the prefix is detected, then remove it to get the * category. */ public static void setLoggingLevels(Properties appProperties) { Iterator props = appProperties.keySet().iterator(); while (props.hasNext()) { String prop = (String) props.next(); if (prop.startsWith(LOG_PRIORITY + ".")) //$NON_NLS-1$ // don't match the empty category { String category = prop.substring(LOG_PRIORITY.length() + 1); setPriority(appProperties.getProperty(prop), category); } if (prop.startsWith(LOG_FILE + ".")) { //$NON_NLS-1$ String category = prop.substring(LOG_FILE.length() + 1); String file = appProperties.getProperty(prop); setTarget(new WriterTarget(makeWriter(file, prop), getFormat()), category); } } } private static final String PACKAGE_PREFIX = "org.apache."; //$NON_NLS-1$ /** * Removes the standard prefix, i.e. "org.apache.". * * @param name from which to remove the prefix * @return the name with the prefix removed */ public static String removePrefix(String name){ if (name.startsWith(PACKAGE_PREFIX)) { // remove the package prefix name = name.substring(PACKAGE_PREFIX.length()); } return name; } /** * Get the Logger for a class - no argument needed because the calling class * name is derived automatically from the call stack. * * @return Logger */ public static Logger getLoggerForClass() { String className = new Exception().getStackTrace()[1].getClassName(); return Hierarchy.getDefaultHierarchy().getLoggerFor(removePrefix(className)); } /** * Get the Logger for a class. * * @param category - the full name of the logger category * * @return Logger */ public static Logger getLoggerFor(String category) { return Hierarchy.getDefaultHierarchy().getLoggerFor(category); } /** * Get the Logger for a class. * * @param category - the full name of the logger category, this will have the prefix removed. * * @return Logger */ public static Logger getLoggerForShortName(String category) { return Hierarchy.getDefaultHierarchy().getLoggerFor(removePrefix(category)); } /** * Set the logging priority for a category. * * @param priority - string containing the priority name, e.g. "INFO", "WARN", "DEBUG", "FATAL_ERROR" * @param category - string containing the category */ public static void setPriority(String priority, String category) { setPriority(Priority.getPriorityForName(priority), category); } /** * Set the logging priority for a category. * * @param priority - priority, e.g. DEBUG, INFO * @param fullName - e.g. org.apache.jmeter.etc, will have the prefix removed. */ public static void setPriorityFullName(String priority, String fullName) { setPriority(Priority.getPriorityForName(priority), removePrefix(fullName)); } /** * Set the logging priority for a category. * * @param priority - e.g. Priority.DEBUG * @param category - string containing the category */ public static void setPriority(Priority priority, String category) { Hierarchy.getDefaultHierarchy().getLoggerFor(category).setPriority(priority); } public static void setPriority(String p) { setPriority(Priority.getPriorityForName(p)); } /** * Set the default logging priority. * * @param priority e.g. Priority.DEBUG */ public static void setPriority(Priority priority) { Hierarchy.getDefaultHierarchy().setDefaultPriority(priority); } /** * Set the logging target for a category. * * @param target the LogTarget * @param category the category name */ public static void setTarget(LogTarget target, String category) { Logger logger = Hierarchy.getDefaultHierarchy().getLoggerFor(category); logger.setLogTargets(new LogTarget[] { target }); } /** * Sets the default log target from the parameter. The existing target is * first closed if necessary. * * @param targetFile * (Writer) */ private static synchronized void setTarget(Writer targetFile) { if (target == null) { target = getTarget(targetFile, getFormat()); isTargetSystemOut = isWriterSystemOut; } else { if (!isTargetSystemOut && target instanceof WriterTarget) { ((WriterTarget) target).close(); } target = getTarget(targetFile, getFormat()); isTargetSystemOut = isWriterSystemOut; } Hierarchy.getDefaultHierarchy().setDefaultLogTarget(target); } private static LogTarget getTarget(Writer targetFile, PatternFormatter fmt) { return new WriterTarget(targetFile, fmt); } /** * Add logTargets to root logger * FIXME What's the clean way to add a LogTarget afterwards ? * @param logTargets LogTarget array */ public static void addLogTargetToRootLogger(LogTarget[] logTargets) { LogTarget[] newLogTargets = new LogTarget[logTargets.length+1]; System.arraycopy(logTargets, 0, newLogTargets, 1, logTargets.length); newLogTargets[0] = target; Hierarchy.getDefaultHierarchy().getRootLogger().setLogTargets(newLogTargets); } }apache-jmeter-2.8/src/jorphan/org/apache/commons/0000755000175000017500000000000012032647214021334 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/commons/jexl/0000755000175000017500000000000012032647214022276 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/commons/jexl/bsf/0000755000175000017500000000000012165514773023062 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/commons/jexl/bsf/JexlEngine.java0000644000175000017500000001151212032647214025743 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with this * work for additional information regarding copyright ownership. The ASF * licenses this file to You under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package org.apache.commons.jexl.bsf; import java.io.File; import java.lang.reflect.Method; import java.net.URL; import java.util.Vector; import org.apache.bsf.BSFDeclaredBean; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.bsf.util.BSFEngineImpl; import org.apache.commons.jexl.JexlContext; import org.apache.commons.jexl.JexlHelper; import org.apache.commons.jexl.Script; import org.apache.commons.jexl.ScriptFactory; //import org.apache.jorphan.logging.LoggingManager; //import org.apache.log.Logger; // See JIRA: JEXL-39 /** * BSFEngine for Commons JEXL. */ public class JexlEngine extends BSFEngineImpl { // private static final Logger log = LoggingManager.getLoggerForClass(); private JexlContext jc; /** {@inheritDoc} */ @SuppressWarnings("unchecked") // super-class does not use generics @Override public void initialize(BSFManager mgr, String lang, @SuppressWarnings("rawtypes") Vector declaredBeans) // super-class does not use generics throws BSFException { super.initialize(mgr, lang, declaredBeans); jc = JexlHelper.createContext(); for (int i = 0; i < declaredBeans.size(); i++) { BSFDeclaredBean bean = (BSFDeclaredBean) declaredBeans.elementAt(i); jc.getVars().put(bean.name, bean.bean); } } /** {@inheritDoc} */ @Override public void terminate() { if (jc != null) { jc.getVars().clear(); jc = null; } } /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public void declareBean(BSFDeclaredBean bean) throws BSFException { jc.getVars().put(bean.name, bean.bean); } /** {@inheritDoc} */ @Override public void undeclareBean(BSFDeclaredBean bean) throws BSFException { jc.getVars().remove(bean.name); } /** {@inheritDoc} */ public Object eval(String fileName, int lineNo, int colNo, Object expr) throws BSFException { if (expr == null) { return null; } try { Script jExpr = null; if (expr instanceof File) { jExpr = ScriptFactory.createScript((File) expr); } else if (expr instanceof URL) { jExpr = ScriptFactory.createScript((URL) expr); } else { jExpr = ScriptFactory.createScript((String) expr); } return jExpr.execute(jc); } catch (Exception e) { throw new BSFException(BSFException.REASON_OTHER_ERROR, e.getMessage(), e); } } /** {@inheritDoc} */ @Override public void exec(String fileName, int lineNo, int colNo, Object script) throws BSFException { if (script == null) { return; } try { Script jExpr = null; if (script instanceof File) { jExpr = ScriptFactory.createScript((File) script); } else if (script instanceof URL) { jExpr = ScriptFactory.createScript((URL) script); } else { jExpr = ScriptFactory.createScript((String) script); } jExpr.execute(jc); } catch (Exception e) { throw new BSFException(BSFException.REASON_OTHER_ERROR, e.getMessage(), e); } } /** {@inheritDoc} */ @Override public void iexec(String fileName, int lineNo, int colNo, Object script) throws BSFException { exec(fileName, lineNo, colNo, script); } /** {@inheritDoc} */ public Object call(Object object, String name, Object[] args) throws BSFException { try { Class[] types = new Class[args.length]; for (int i = 0; i < args.length; i++) { types[i] = args[i].getClass(); } Method m = object.getClass().getMethod(name, types); return m.invoke(object, args); } catch (Exception e) { throw new BSFException(BSFException.REASON_OTHER_ERROR, e.getMessage(), e); } } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/0000755000175000017500000000000012032647214022103 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/0000755000175000017500000000000012165514773023375 5ustar ebourgebourgapache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/Token.java0000644000175000017500000000347412032647215025317 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli /** * Token handles tokenizing the CLI arguments * */ class Token { /** Type for a separator token */ public static final int TOKEN_SEPARATOR = 0; /** Type for a text token */ public static final int TOKEN_STRING = 1; private final int m_type; private final String m_value; /** * New Token object with a type and value */ Token(final int type, final String value) { m_type = type; m_value = value; } /** * Get the value of the token */ final String getValue() { return m_value; } /** * Get the type of the token */ final int getType() { return m_type; } /** * Convert to a string */ @Override public final String toString() { final StringBuilder sb = new StringBuilder(); sb.append(m_type); sb.append(":"); sb.append(m_value); return sb.toString(); } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/AbstractParserControl.java0000644000175000017500000000267412032647215030521 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli /** * Class to inherit from so when in future when new controls are added clients * will no have to implement them. * * @see ParserControl */ public abstract class AbstractParserControl implements ParserControl { /** * By default always continue parsing by returning false. * * @param lastOptionCode * the code of last option parsed * @return return true to halt, false to continue parsing * @see ParserControl#isFinished(int) */ public boolean isFinished(int lastOptionCode) { return false; } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/CLOption.java0000644000175000017500000001141612032647215025721 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli import java.util.Arrays; /** * Basic class describing an instance of option. * */ public final class CLOption { /** * Value of {@link CLOptionDescriptor#getId} when the option is a text argument. */ public static final int TEXT_ARGUMENT = 0; /** * Default descriptor. Required, since code assumes that getDescriptor will * never return null. */ private static final CLOptionDescriptor TEXT_ARGUMENT_DESCRIPTOR = new CLOptionDescriptor(null, CLOptionDescriptor.ARGUMENT_OPTIONAL, TEXT_ARGUMENT, null); private String[] m_arguments; private CLOptionDescriptor m_descriptor = TEXT_ARGUMENT_DESCRIPTOR; /** * Retrieve argument to option if it takes arguments. * * @return the (first) argument */ public final String getArgument() { return getArgument(0); } /** * Retrieve indexed argument to option if it takes arguments. * * @param index * The argument index, from 0 to {@link #getArgumentCount()}-1. * @return the argument */ public final String getArgument(final int index) { if (null == m_arguments || index < 0 || index >= m_arguments.length) { return null; } else { return m_arguments[index]; } } public final CLOptionDescriptor getDescriptor() { return m_descriptor; } /** * Constructor taking an descriptor * * @param descriptor * the descriptor iff null, will default to a "text argument" * descriptor. */ public CLOption(final CLOptionDescriptor descriptor) { if (descriptor != null) { m_descriptor = descriptor; } } /** * Constructor taking argument for option. * * @param argument * the argument */ public CLOption(final String argument) { this((CLOptionDescriptor) null); addArgument(argument); } /** * Mutator of Argument property. * * @param argument * the argument */ public final void addArgument(final String argument) { if (null == m_arguments) { m_arguments = new String[] { argument }; } else { final String[] arguments = new String[m_arguments.length + 1]; System.arraycopy(m_arguments, 0, arguments, 0, m_arguments.length); arguments[m_arguments.length] = argument; m_arguments = arguments; } } /** * Get number of arguments. * * @return the number of arguments */ public final int getArgumentCount() { if (null == m_arguments) { return 0; } else { return m_arguments.length; } } /** * Convert to String. * * @return the string value */ @Override public final String toString() { final StringBuilder sb = new StringBuilder(); sb.append("["); final char id = (char) m_descriptor.getId(); if (id == TEXT_ARGUMENT) { sb.append("TEXT "); } else { sb.append("Option "); sb.append(id); } if (null != m_arguments) { sb.append(", "); sb.append(Arrays.asList(m_arguments)); } sb.append(" ]"); return sb.toString(); } /* * Convert to a shorter String for test purposes * * @return the string value */ final String toShortString() { final StringBuilder sb = new StringBuilder(); final char id = (char) m_descriptor.getId(); if (id != TEXT_ARGUMENT) { sb.append("-"); sb.append(id); } if (null != m_arguments) { if (id != TEXT_ARGUMENT) { sb.append("="); } sb.append(Arrays.asList(m_arguments)); } return sb.toString(); } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/CLArgsParser.java0000644000175000017500000005346212032647215026531 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli import java.text.ParseException; import java.util.Hashtable; import java.util.Vector; /** * Parser for command line arguments. * * This parses command lines according to the standard (?) of GNU utilities. * * Note: This is still used in 1.1 libraries so do not add 1.2+ dependencies. * * Note that CLArgs uses a backing hashtable for the options index and so * duplicate arguments are only returned by getArguments(). * * @see ParserControl * @see CLOption * @see CLOptionDescriptor */ public final class CLArgsParser { // cached character == Integer.MAX_VALUE when invalid private static final int INVALID = Integer.MAX_VALUE; private static final int STATE_NORMAL = 0; private static final int STATE_REQUIRE_2ARGS = 1; private static final int STATE_REQUIRE_ARG = 2; private static final int STATE_OPTIONAL_ARG = 3; private static final int STATE_NO_OPTIONS = 4; private static final int STATE_OPTION_MODE = 5; // Values for creating tokens private static final int TOKEN_SEPARATOR = 0; private static final int TOKEN_STRING = 1; private static final char[] ARG_SEPARATORS = new char[] { (char) 0, '=' }; private static final char[] NULL_SEPARATORS = new char[] { (char) 0 }; private final CLOptionDescriptor[] m_optionDescriptors; private final Vector m_options; // Key is String or Integer private Hashtable m_optionIndex; private final ParserControl m_control; private String m_errorMessage; private String[] m_unparsedArgs = new String[] {}; // variables used while parsing options. private char m_ch; private String[] m_args; private boolean m_isLong; private int m_argIndex; private int m_stringIndex; private int m_stringLength; private int m_lastChar = INVALID; private int m_lastOptionId; private CLOption m_option; private int m_state = STATE_NORMAL; /** * Retrieve an array of arguments that have not been parsed due to the * parser halting. * * @return an array of unparsed args */ public final String[] getUnparsedArgs() { return m_unparsedArgs; } /** * Retrieve a list of options that were parsed from command list. * * @return the list of options */ public final Vector getArguments() { // System.out.println( "Arguments: " + m_options ); return m_options; } /** * Retrieve the {@link CLOption} with specified id, or null * if no command line option is found. * * @param id * the command line option id * @return the {@link CLOption} with the specified id, or null * if no CLOption is found. * @see CLOption */ public final CLOption getArgumentById(final int id) { return m_optionIndex.get(Integer.valueOf(id)); } /** * Retrieve the {@link CLOption} with specified name, or null * if no command line option is found. * * @param name * the command line option name * @return the {@link CLOption} with the specified name, or * null if no CLOption is found. * @see CLOption */ public final CLOption getArgumentByName(final String name) { return m_optionIndex.get(name); } /** * Get Descriptor for option id. * * @param id * the id * @return the descriptor */ private final CLOptionDescriptor getDescriptorFor(final int id) { for (int i = 0; i < m_optionDescriptors.length; i++) { if (m_optionDescriptors[i].getId() == id) { return m_optionDescriptors[i]; } } return null; } /** * Retrieve a descriptor by name. * * @param name * the name * @return the descriptor */ private final CLOptionDescriptor getDescriptorFor(final String name) { for (int i = 0; i < m_optionDescriptors.length; i++) { if (m_optionDescriptors[i].getName().equals(name)) { return m_optionDescriptors[i]; } } return null; } /** * Retrieve an error message that occured during parsing if one existed. * * @return the error string */ public final String getErrorString() { // System.out.println( "ErrorString: " + m_errorMessage ); return m_errorMessage; } /** * Require state to be placed in for option. * * @param descriptor * the Option Descriptor * @return the state */ private final int getStateFor(final CLOptionDescriptor descriptor) { final int flags = descriptor.getFlags(); if ((flags & CLOptionDescriptor.ARGUMENTS_REQUIRED_2) == CLOptionDescriptor.ARGUMENTS_REQUIRED_2) { return STATE_REQUIRE_2ARGS; } else if ((flags & CLOptionDescriptor.ARGUMENT_REQUIRED) == CLOptionDescriptor.ARGUMENT_REQUIRED) { return STATE_REQUIRE_ARG; } else if ((flags & CLOptionDescriptor.ARGUMENT_OPTIONAL) == CLOptionDescriptor.ARGUMENT_OPTIONAL) { return STATE_OPTIONAL_ARG; } else { return STATE_NORMAL; } } /** * Create a parser that can deal with options and parses certain args. * * @param args * the args, typically that passed to the * public static void main(String[] args) method. * @param optionDescriptors * the option descriptors * @param control * the parser control used determine behaviour of parser */ public CLArgsParser(final String[] args, final CLOptionDescriptor[] optionDescriptors, final ParserControl control) { m_optionDescriptors = optionDescriptors; m_control = control; m_options = new Vector(); m_args = args; try { parse(); checkIncompatibilities(m_options); buildOptionIndex(); } catch (final ParseException pe) { m_errorMessage = pe.getMessage(); } // System.out.println( "Built : " + m_options ); // System.out.println( "From : " + Arrays.asList( args ) ); } /** * Check for duplicates of an option. It is an error to have duplicates * unless appropriate flags is set in descriptor. * * @param arguments * the arguments */ private final void checkIncompatibilities(final Vector arguments) throws ParseException { final int size = arguments.size(); for (int i = 0; i < size; i++) { final CLOption option = arguments.elementAt(i); final int id = option.getDescriptor().getId(); final CLOptionDescriptor descriptor = getDescriptorFor(id); // this occurs when id == 0 and user has not supplied a descriptor // for arguments if (null == descriptor) { continue; } final int[] incompatible = descriptor.getIncompatible(); checkIncompatible(arguments, incompatible, i); } } private final void checkIncompatible(final Vector arguments, final int[] incompatible, final int original) throws ParseException { final int size = arguments.size(); for (int i = 0; i < size; i++) { if (original == i) { continue; } final CLOption option = arguments.elementAt(i); final int id = option.getDescriptor().getId(); for (int j = 0; j < incompatible.length; j++) { if (id == incompatible[j]) { final CLOption originalOption = arguments.elementAt(original); final int originalId = originalOption.getDescriptor().getId(); String message = null; if (id == originalId) { message = "Duplicate options for " + describeDualOption(originalId) + " found."; } else { message = "Incompatible options -" + describeDualOption(id) + " and " + describeDualOption(originalId) + " found."; } throw new ParseException(message, 0); } } } } private final String describeDualOption(final int id) { final CLOptionDescriptor descriptor = getDescriptorFor(id); if (null == descriptor) { return ""; } else { final StringBuilder sb = new StringBuilder(); boolean hasCharOption = false; if (Character.isLetter((char) id)) { sb.append('-'); sb.append((char) id); hasCharOption = true; } final String longOption = descriptor.getName(); if (null != longOption) { if (hasCharOption) { sb.append('/'); } sb.append("--"); sb.append(longOption); } return sb.toString(); } } /** * Create a parser that deals with options and parses certain args. * * @param args * the args * @param optionDescriptors * the option descriptors */ public CLArgsParser(final String[] args, final CLOptionDescriptor[] optionDescriptors) { this(args, optionDescriptors, null); } /** * Create a string array that is subset of input array. The sub-array should * start at array entry indicated by index. That array element should only * include characters from charIndex onwards. * * @param array * the original array * @param index * the cut-point in array * @param charIndex * the cut-point in element of array * @return the result array */ private final String[] subArray(final String[] array, final int index, final int charIndex) { final int remaining = array.length - index; final String[] result = new String[remaining]; if (remaining > 1) { System.arraycopy(array, index + 1, result, 1, remaining - 1); } result[0] = array[index].substring(charIndex - 1); return result; } /** * Actually parse arguments */ private final void parse() throws ParseException { if (0 == m_args.length) { return; } m_stringLength = m_args[m_argIndex].length(); while (true) { m_ch = peekAtChar(); if (m_argIndex >= m_args.length) { break; } if (null != m_control && m_control.isFinished(m_lastOptionId)) { // this may need mangling due to peeks m_unparsedArgs = subArray(m_args, m_argIndex, m_stringIndex); return; } if (STATE_OPTION_MODE == m_state) { // if get to an arg barrier then return to normal mode // else continue accumulating options if (0 == m_ch) { getChar(); // strip the null m_state = STATE_NORMAL; } else { parseShortOption(); } } else if (STATE_NORMAL == m_state) { parseNormal(); } else if (STATE_NO_OPTIONS == m_state) { // should never get to here when stringIndex != 0 addOption(new CLOption(m_args[m_argIndex++])); } else { parseArguments(); } } // Reached end of input arguments - perform final processing if (m_option != null) { if (STATE_OPTIONAL_ARG == m_state) { m_options.addElement(m_option); } else if (STATE_REQUIRE_ARG == m_state) { final CLOptionDescriptor descriptor = getDescriptorFor(m_option.getDescriptor().getId()); final String message = "Missing argument to option " + getOptionDescription(descriptor); throw new ParseException(message, 0); } else if (STATE_REQUIRE_2ARGS == m_state) { if (1 == m_option.getArgumentCount()) { m_option.addArgument(""); m_options.addElement(m_option); } else { final CLOptionDescriptor descriptor = getDescriptorFor(m_option.getDescriptor().getId()); final String message = "Missing argument to option " + getOptionDescription(descriptor); throw new ParseException(message, 0); } } else { throw new ParseException("IllegalState " + m_state + ": " + m_option, 0); } } } private final String getOptionDescription(final CLOptionDescriptor descriptor) { if (m_isLong) { return "--" + descriptor.getName(); } else { return "-" + (char) descriptor.getId(); } } private final char peekAtChar() { if (INVALID == m_lastChar) { m_lastChar = readChar(); } return (char) m_lastChar; } private final char getChar() { if (INVALID != m_lastChar) { final char result = (char) m_lastChar; m_lastChar = INVALID; return result; } else { return readChar(); } } private final char readChar() { if (m_stringIndex >= m_stringLength) { m_argIndex++; m_stringIndex = 0; if (m_argIndex < m_args.length) { m_stringLength = m_args[m_argIndex].length(); } else { m_stringLength = 0; } return 0; } if (m_argIndex >= m_args.length) { return 0; } return m_args[m_argIndex].charAt(m_stringIndex++); } private char m_tokesep; // Keep track of token separator private final Token nextToken(final char[] separators) { m_ch = getChar(); if (isSeparator(m_ch, separators)) { m_tokesep=m_ch; m_ch = getChar(); return new Token(TOKEN_SEPARATOR, null); } final StringBuilder sb = new StringBuilder(); do { sb.append(m_ch); m_ch = getChar(); } while (!isSeparator(m_ch, separators)); m_tokesep=m_ch; return new Token(TOKEN_STRING, sb.toString()); } private final boolean isSeparator(final char ch, final char[] separators) { for (int i = 0; i < separators.length; i++) { if (ch == separators[i]) { return true; } } return false; } private final void addOption(final CLOption option) { m_options.addElement(option); m_lastOptionId = option.getDescriptor().getId(); m_option = null; } private final void parseOption(final CLOptionDescriptor descriptor, final String optionString) throws ParseException { if (null == descriptor) { throw new ParseException("Unknown option " + optionString, 0); } m_state = getStateFor(descriptor); m_option = new CLOption(descriptor); if (STATE_NORMAL == m_state) { addOption(m_option); } } private final void parseShortOption() throws ParseException { m_ch = getChar(); final CLOptionDescriptor descriptor = getDescriptorFor(m_ch); m_isLong = false; parseOption(descriptor, "-" + m_ch); if (STATE_NORMAL == m_state) { m_state = STATE_OPTION_MODE; } } private final void parseArguments() throws ParseException { if (STATE_REQUIRE_ARG == m_state) { if ('=' == m_ch || 0 == m_ch) { getChar(); } final Token token = nextToken(NULL_SEPARATORS); m_option.addArgument(token.getValue()); addOption(m_option); m_state = STATE_NORMAL; } else if (STATE_OPTIONAL_ARG == m_state) { if ('-' == m_ch || 0 == m_ch) { getChar(); // consume stray character addOption(m_option); m_state = STATE_NORMAL; return; } if (m_isLong && '=' != m_tokesep){ // Long optional arg must have = as separator addOption(m_option); m_state = STATE_NORMAL; return; } if ('=' == m_ch) { getChar(); } final Token token = nextToken(NULL_SEPARATORS); m_option.addArgument(token.getValue()); addOption(m_option); m_state = STATE_NORMAL; } else if (STATE_REQUIRE_2ARGS == m_state) { if (0 == m_option.getArgumentCount()) { /* * Fix bug: -D arg1=arg2 was causing parse error; however * --define arg1=arg2 is OK This seems to be because the parser * skips the terminator for the long options, but was not doing * so for the short options. */ if (!m_isLong) { if (0 == peekAtChar()) { getChar(); } } final Token token = nextToken(ARG_SEPARATORS); if (TOKEN_SEPARATOR == token.getType()) { final CLOptionDescriptor descriptor = getDescriptorFor(m_option.getDescriptor().getId()); final String message = "Unable to parse first argument for option " + getOptionDescription(descriptor); throw new ParseException(message, 0); } else { m_option.addArgument(token.getValue()); } // Are we about to start a new option? if (0 == m_ch && '-' == peekAtChar()) { // Yes, so the second argument is missing m_option.addArgument(""); m_options.addElement(m_option); m_state = STATE_NORMAL; } } else // 2nd argument { final StringBuilder sb = new StringBuilder(); m_ch = getChar(); while (!isSeparator(m_ch, NULL_SEPARATORS)) { sb.append(m_ch); m_ch = getChar(); } final String argument = sb.toString(); // System.out.println( "Arguement:" + argument ); m_option.addArgument(argument); addOption(m_option); m_option = null; m_state = STATE_NORMAL; } } } /** * Parse Options from Normal mode. */ private final void parseNormal() throws ParseException { if ('-' != m_ch) { // Parse the arguments that are not options final String argument = nextToken(NULL_SEPARATORS).getValue(); addOption(new CLOption(argument)); m_state = STATE_NORMAL; } else { getChar(); // strip the - if (0 == peekAtChar()) { throw new ParseException("Malformed option -", 0); } else { m_ch = peekAtChar(); // if it is a short option then parse it else ... if ('-' != m_ch) { parseShortOption(); } else { getChar(); // strip the - // -- sequence .. it can either mean a change of state // to STATE_NO_OPTIONS or else a long option if (0 == peekAtChar()) { getChar(); m_state = STATE_NO_OPTIONS; } else { // its a long option final String optionName = nextToken(ARG_SEPARATORS).getValue(); final CLOptionDescriptor descriptor = getDescriptorFor(optionName); m_isLong = true; parseOption(descriptor, "--" + optionName); } } } } } /** * Build the m_optionIndex lookup map for the parsed options. */ private final void buildOptionIndex() { final int size = m_options.size(); m_optionIndex = new Hashtable(size * 2); for (int i = 0; i < size; i++) { final CLOption option = m_options.get(i); final CLOptionDescriptor optionDescriptor = getDescriptorFor(option.getDescriptor().getId()); m_optionIndex.put(Integer.valueOf(option.getDescriptor().getId()), option); if (null != optionDescriptor && null != optionDescriptor.getName()) { m_optionIndex.put(optionDescriptor.getName(), option); } } } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/CLOptionDescriptor.java0000644000175000017500000001315712032647215027764 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli /** * Basic class describing an type of option. Typically, one creates a static * array of CLOptionDescriptors, and passes it to * {@link CLArgsParser#CLArgsParser(String[], CLOptionDescriptor[])}. * * @see CLArgsParser * @see CLUtil */ public final class CLOptionDescriptor { /** Flag to say that one argument is required */ public static final int ARGUMENT_REQUIRED = 1 << 1; /** Flag to say that the argument is optional */ public static final int ARGUMENT_OPTIONAL = 1 << 2; /** Flag to say this option does not take arguments */ public static final int ARGUMENT_DISALLOWED = 1 << 3; /** Flag to say this option requires 2 arguments */ public static final int ARGUMENTS_REQUIRED_2 = 1 << 4; /** Flag to say this option may be repeated on the command line */ public static final int DUPLICATES_ALLOWED = 1 << 5; private final int m_id; private final int m_flags; private final String m_name; private final String m_description; private final int[] m_incompatible; /** * Constructor. * * @param name * the name/long option * @param flags * the flags * @param id * the id/character option * @param description * description of option usage */ public CLOptionDescriptor(final String name, final int flags, final int id, final String description) { checkFlags(flags); m_id = id; m_name = name; m_flags = flags; m_description = description; m_incompatible = ((flags & DUPLICATES_ALLOWED) != 0) ? new int[0] : new int[] { id }; } /** * Constructor. * * @param name * the name/long option * @param flags * the flags * @param id * the id/character option * @param description * description of option usage * @param incompatible * descriptors for incompatible options */ public CLOptionDescriptor(final String name, final int flags, final int id, final String description, final CLOptionDescriptor[] incompatible) { checkFlags(flags); m_id = id; m_name = name; m_flags = flags; m_description = description; m_incompatible = new int[incompatible.length]; for (int i = 0; i < incompatible.length; i++) { m_incompatible[i] = incompatible[i].getId(); } } private void checkFlags(final int flags) { int modeCount = 0; if ((ARGUMENT_REQUIRED & flags) == ARGUMENT_REQUIRED) { modeCount++; } if ((ARGUMENT_OPTIONAL & flags) == ARGUMENT_OPTIONAL) { modeCount++; } if ((ARGUMENT_DISALLOWED & flags) == ARGUMENT_DISALLOWED) { modeCount++; } if ((ARGUMENTS_REQUIRED_2 & flags) == ARGUMENTS_REQUIRED_2) { modeCount++; } if (0 == modeCount) { final String message = "No mode specified for option " + this; throw new IllegalStateException(message); } else if (1 != modeCount) { final String message = "Multiple modes specified for option " + this; throw new IllegalStateException(message); } } /** * Get the array of incompatible option ids. * * @return the array of incompatible option ids */ protected final int[] getIncompatible() { return m_incompatible; } /** * Retrieve textual description. * * @return the description */ public final String getDescription() { return m_description; } /** * Retrieve flags about option. Flags include details such as whether it * allows parameters etc. * * @return the flags */ public final int getFlags() { return m_flags; } /** * Retrieve the id for option. The id is also the character if using single * character options. * * @return the id */ public final int getId() { return m_id; } /** * Retrieve name of option which is also text for long option. * * @return name/long option */ public final String getName() { return m_name; } /** * Convert to String. * * @return the converted value to string. */ @Override public final String toString() { final StringBuilder sb = new StringBuilder(); sb.append("[OptionDescriptor "); sb.append(m_name); sb.append(", "); sb.append(m_id); sb.append(", "); sb.append(m_flags); sb.append(", "); sb.append(m_description); sb.append(" ]"); return sb.toString(); } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/package.html0000644000175000017500000001725012032647215025652 0ustar ebourgebourg Package Documentation for org.apache.commons.cli.avalon Package Utility code for parsing command-line options.

        These classes were originally in the Avalon project in the package org.apache.avalon.excalibur.cli

        Introduction

        The utilities in org.apache.commons.cli.avalon assist you in parsing command line options during startup time. It allows you to associate a short option and a long option to the same command, and then test for it in a switch statement.

        Usage Example

        import java.util.List;
        
        import org.apache.commons.cli.avalon.CLArgsParser;
        import org.apache.commons.cli.avalon.CLOption;
        import org.apache.commons.cli.avalon.CLOptionDescriptor;
        import org.apache.commons.cli.avalon.CLUtil;
        
        /**
        * Demonstrates the excalibur command-line parsing utility.
        *
        */
        public class CLDemo {
            // Define our short one-letter option identifiers.
            protected static final int HELP_OPT = 'h';
            protected static final int VERSION_OPT = 'v';
            protected static final int MSG_OPT = 'm';
        
            /**
             *  Define the understood options. Each CLOptionDescriptor contains:
             * - The "long" version of the option. Eg, "help" means that "--help" will
             * be recognised.
             * - The option flags, governing the option's argument(s).
             * - The "short" version of the option. Eg, 'h' means that "-h" will be
             * recognised.
             * - A description of the option.
             */
            protected static final CLOptionDescriptor [] options = new CLOptionDescriptor [] {
                new CLOptionDescriptor("help",
                        CLOptionDescriptor.ARGUMENT_DISALLOWED,
                        HELP_OPT,
                        "print this message and exit"),
                new CLOptionDescriptor("version",
                        CLOptionDescriptor.ARGUMENT_DISALLOWED,
                        VERSION_OPT,
                        "print the version information and exit"),
                new CLOptionDescriptor("msg",
                        CLOptionDescriptor.ARGUMENT_REQUIRED,
                        MSG_OPT,
                        "the message to print"),
            };
        
            public static void main(String args[]) {
                // Parse the arguments
                CLArgsParser parser = new CLArgsParser(args, options);
        
                if( null != parser.getErrorString() ) {
                   System.err.println( "Error: " + parser.getErrorString() );
                   return;
                }
        
                // Get a list of parsed options
                List clOptions = parser.getArguments();
                int size = clOptions.size();
        
                for (int i = 0; i < size; i++) {
                    CLOption option = (CLOption) clOptions.get(i);
        
                    switch (option.getId()) {
                        case CLOption.TEXT_ARGUMENT:
                            System.out.println("Unknown arg: "+option.getArgument());
                            break;
        
                        case HELP_OPT:
                            printUsage();
                            break;
        
                        case VERSION_OPT:
                            printVersion();
                            break;
        
        
                        case MSG_OPT:
                            System.out.println(option.getArgument());
                            break;
                    }
                }
            }
        
            private static void printVersion() {
                System.out.println("1.0");
                System.exit(0);
            }
        
            private static void printUsage() {
                String lSep = System.getProperty("line.separator");
                StringBuffer msg = new StringBuffer();
                msg.append("------------------------------------------------------------------------ ").append(lSep);
                msg.append("Excalibur command-line arg parser demo").append(lSep);
                msg.append("Usage: java "+CLDemo.class.getName()+" [options]").append(lSep).append(lSep);
                msg.append("Options: ").append(lSep);
                msg.append(CLUtil.describeOptions(CLDemo.options).toString());
                System.out.println(msg.toString());
                System.exit(0);
            }
        }
        

        Parsing Rules

        The command line is parsed according to the following rules. There are two forms of options in this package, the Long form and the Short form. The long form of an option is preceded by the '--' characters while the short form is preceded by a single '-'. Some example options would be; "--an-option", "-a", "--day", "-s -f -a".

        In the tradition of UNIX programs, the short form of an option can occur immediately after another short form option. So if 'a', 'b' and 'c' are short forms of options that take no parameters then the following command lines are equivalent: "-abc", "-a -bc", "-a -b -c", "-ab -c", etc.

        Options can also accept arguments if specified. You can specify that an option requires an argument in which the text immediately following the option will be considered to be an argument to the option. So if 'a' was an option that required an argument then the following would be equivalent; "-abc", "-a bc" (namely the option 'a' with argument 'bc').

        Options can also specify optional arguments. In this case if there is any text immediately following the option character then it is considered an argument. Otherwise, the option has no arguments. For example if 'a' was an option that required an optional argument then "-abc" is an option 'a' with argument "bc" while "-a bc" is an option 'a' with no argument, followed by the text "bc".

        It is also possible to place an '=' sign between the option and its argument. So if we assume that a is an option that requires an argument then the following are equivalent; "-a=bc" and "-abc".

        In the case of a long option with an optional argument, the '=' sign is required. For example. --optarg=1, not --optarg 1.

        In some cases it is also necessary to disable command line parsing so that you can pass a text argument to the program that starts with a '-' character. To do this insert the sequence '--' onto the command line with no text immediately following it. This will disable processing for the rest of the command line. The '--' characters will not be passed to the user program. For instance the line "-- -b" would result in the program being passed the text "-b" (ie. not as an option).

        apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/CLUtil.java0000644000175000017500000000743112032647215025370 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli /** * CLUtil offers basic utility operations for use both internal and external to * package. * * @see CLOptionDescriptor */ public final class CLUtil { private static final int MAX_DESCRIPTION_COLUMN_LENGTH = 60; /** * Private Constructor so that no instance can ever be created. * */ private CLUtil() { } /** * Format options into StringBuilder and return. This is typically used to * print "Usage" text in response to a "--help" or invalid option. * * @param options * the option descriptors * @return the formatted description/help for options */ public static final StringBuilder describeOptions(final CLOptionDescriptor[] options) { final String lSep = System.getProperty("line.separator"); final StringBuilder sb = new StringBuilder(); for (int i = 0; i < options.length; i++) { final char ch = (char) options[i].getId(); final String name = options[i].getName(); String description = options[i].getDescription(); int flags = options[i].getFlags(); boolean argumentOptional = ((flags & CLOptionDescriptor.ARGUMENT_OPTIONAL) == CLOptionDescriptor.ARGUMENT_OPTIONAL); boolean argumentRequired = ((flags & CLOptionDescriptor.ARGUMENT_REQUIRED) == CLOptionDescriptor.ARGUMENT_REQUIRED); boolean twoArgumentsRequired = ((flags & CLOptionDescriptor.ARGUMENTS_REQUIRED_2) == CLOptionDescriptor.ARGUMENTS_REQUIRED_2); boolean needComma = false; if (twoArgumentsRequired) { argumentRequired = true; } sb.append('\t'); if (Character.isLetter(ch)) { sb.append("-"); sb.append(ch); needComma = true; } if (null != name) { if (needComma) { sb.append(", "); } sb.append("--"); sb.append(name); } if (argumentOptional) { sb.append(" []"); } if (argumentRequired) { sb.append(" "); } if (twoArgumentsRequired) { sb.append("="); } sb.append(lSep); if (null != description) { while (description.length() > MAX_DESCRIPTION_COLUMN_LENGTH) { final String descriptionPart = description.substring(0, MAX_DESCRIPTION_COLUMN_LENGTH); description = description.substring(MAX_DESCRIPTION_COLUMN_LENGTH); sb.append("\t\t"); sb.append(descriptionPart); sb.append(lSep); } sb.append("\t\t"); sb.append(description); sb.append(lSep); } } return sb; } } apache-jmeter-2.8/src/jorphan/org/apache/commons/cli/avalon/ParserControl.java0000644000175000017500000000251112032647215027023 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.cli.avalon; // Renamed from org.apache.avalon.excalibur.cli /** * ParserControl is used to control particular behaviour of the parser. * * @see AbstractParserControl */ public interface ParserControl { /** * Called by the parser to determine whether it should stop after last * option parsed. * * @param lastOptionCode * the code of last option parsed * @return return true to halt, false to continue parsing */ boolean isFinished(int lastOptionCode); } apache-jmeter-2.8/src/monitor/0000755000175000017500000000000012032647217015702 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/0000755000175000017500000000000012032647217020067 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/0000755000175000017500000000000012032647217020656 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/apache/0000755000175000017500000000000012032647217022077 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/apache/jmeter/0000755000175000017500000000000012032647217023365 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/apache/jmeter/monitor/0000755000175000017500000000000012032647217025054 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/apache/jmeter/monitor/util/0000755000175000017500000000000012165514773026040 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/apache/jmeter/monitor/util/MemoryBenchmark.java0000644000175000017500000001300412032647217031755 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.util; import java.util.List; import java.util.LinkedList; import org.apache.jmeter.monitor.model.Connector; import org.apache.jmeter.monitor.model.Jvm; import org.apache.jmeter.monitor.model.Memory; import org.apache.jmeter.monitor.model.ObjectFactory; import org.apache.jmeter.monitor.model.RequestInfo; import org.apache.jmeter.monitor.model.Status; import org.apache.jmeter.monitor.model.ThreadInfo; import org.apache.jmeter.monitor.model.Worker; import org.apache.jmeter.monitor.model.Workers; import org.apache.jmeter.visualizers.MonitorModel; import org.apache.jmeter.visualizers.MonitorStats; /** * * @version $Revision: 984221 $ */ public class MemoryBenchmark { @SuppressWarnings({ "unchecked", "rawtypes" }) public static void main(String[] args) { if (args.length == 1) { int objects = 10000; if (args[0] != null) { objects = Integer.parseInt(args[0]); } List objs = new LinkedList(); ObjectFactory of = ObjectFactory.getInstance(); long bfree = Runtime.getRuntime().freeMemory(); long btotal = Runtime.getRuntime().totalMemory(); long bmax = Runtime.getRuntime().maxMemory(); System.out.println("Before we create objects:"); System.out.println("------------------------------"); System.out.println("free: " + bfree); System.out.println("total: " + btotal); System.out.println("max: " + bmax); for (int idx = 0; idx < objects; idx++) { Connector cnn = of.createConnector(); Workers wkrs = of.createWorkers(); for (int idz = 0; idz < 26; idz++) { Worker wk0 = of.createWorker(); wk0.setCurrentQueryString("/manager/status"); wk0.setCurrentUri("http://localhost/manager/status"); wk0.setMethod("GET"); wk0.setProtocol("http"); wk0.setRemoteAddr("?"); wk0.setRequestBytesReceived(132); wk0.setRequestBytesSent(18532); wk0.setStage("K"); wk0.setVirtualHost("?"); wkrs.getWorker().add(wk0); } cnn.setWorkers(wkrs); RequestInfo rqinfo = of.createRequestInfo(); rqinfo.setBytesReceived(0); rqinfo.setBytesSent(434374); rqinfo.setErrorCount(10); rqinfo.setMaxTime(850); rqinfo.setProcessingTime(2634); rqinfo.setRequestCount(1002); cnn.setRequestInfo(rqinfo); ThreadInfo thinfo = of.createThreadInfo(); thinfo.setCurrentThreadCount(50); thinfo.setCurrentThreadsBusy(12); thinfo.setMaxSpareThreads(50); thinfo.setMaxThreads(150); thinfo.setMinSpareThreads(10); cnn.setThreadInfo(thinfo); Jvm vm = of.createJvm(); Memory mem = of.createMemory(); mem.setFree(77280); mem.setTotal(134210000); mem.setMax(134217728); vm.setMemory(mem); Status st = of.createStatus(); st.setJvm(vm); st.getConnector().add(cnn); MonitorStats mstats = new MonitorStats(Stats.calculateStatus(st), Stats.calculateLoad(st), 0, Stats .calculateMemoryLoad(st), Stats.calculateThreadLoad(st), "localhost", "8080", "http", System .currentTimeMillis()); MonitorModel monmodel = new MonitorModel(mstats); objs.add(monmodel); } long afree = Runtime.getRuntime().freeMemory(); long atotal = Runtime.getRuntime().totalMemory(); long amax = Runtime.getRuntime().maxMemory(); long delta = ((atotal - afree) - (btotal - bfree)); System.out.println("After we create objects:"); System.out.println("------------------------------"); System.out.println("free: " + afree); System.out.println("total: " + atotal); System.out.println("max: " + amax); System.out.println("------------------------------"); System.out.println("delta: " + (delta / 1024) + " kilobytes"); System.out.println("delta: " + (delta / 1024 / 1024) + " megabytes"); System.out.println("number of objects: " + objects); System.out.println("potential number of servers: " + (objects / 1000)); } else { System.out.println("Please provide the number of objects"); } } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/monitor/util/Stats.java0000644000175000017500000001535312032647217030001 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.util; import org.apache.jmeter.monitor.model.Connector; import org.apache.jmeter.monitor.model.Status; /** * * Description: *

        * Stats is responsible for calculating the load and health of a given server. * It uses tomcat's status servlet results. A schema was generated for the XML * output and JAXB was used to generate classes. *

        * The equations are: *

        * memory weight = (int)(50 * (free/max))
        * thread weight = (int)(50 * (current/max)) *

        * The load factors are stored in the properties files. Simply change the values * in the properties to change how load is calculated. The defaults values are * memory (50) and threads (50). The sum of the factors must equal 100. */ public class Stats { public static final int DEAD = 0; public static final int ACTIVE = 2; public static final int WARNING = 1; public static final int HEALTHY = 3; public static final int DEFAULT_MEMORY_FACTOR = 50; public static final int DEFAULT_THREAD_FACTOR = 50; public static final double HEALTHY_PER = 0.00; public static final double ACTIVE_PER = 0.25; public static final double WARNING_PER = 0.67; /** * The method is responsible for taking a status object and calculating an * int value from 1 to 100. We use a combination of free memory and free * threads. The current factor is 50/50. *

        * * @param stat * @return calculated load value */ public static int calculateLoad(Status stat) { if (stat != null) { // equation for calculating the weight // w = (int)(33 * (used/max)) long totMem = stat.getJvm().getMemory().getTotal(); long freeMem = stat.getJvm().getMemory().getFree(); long usedMem = totMem - freeMem; double memdiv = (double) usedMem / (double) totMem; double memWeight = DEFAULT_MEMORY_FACTOR * memdiv; // changed the logic for BEA Weblogic in the case a // user uses Tomcat's status servlet without any // modifications. Weblogic will return nothing for // the connector, therefore we need to check the size // of the list. Peter 12.22.04 double threadWeight = 0; if (stat.getConnector().size() > 0) { Connector cntr = fetchConnector(stat); int maxThread = cntr.getThreadInfo().getMaxThreads(); int curThread = cntr.getThreadInfo().getCurrentThreadsBusy(); double thdiv = (double) curThread / (double) maxThread; threadWeight = DEFAULT_THREAD_FACTOR * thdiv; } return (int) (memWeight + threadWeight); } else { return 0; } } /** * Method should calculate if the server is: dead, active, warning or * healthy. We do this by looking at the current busy threads. *

          *
        1. free > spare is healthy *
        2. free < spare is active *
        3. busy threads > 75% is warning *
        4. none of the above is dead *
        * * @param stat * @return integer representing the status */ public static int calculateStatus(Status stat) { if (stat != null && stat.getConnector().size() > 0) { Connector cntr = fetchConnector(stat); int max = cntr.getThreadInfo().getMaxThreads(); int current = cntr.getThreadInfo().getCurrentThreadsBusy(); // int spare = cntr.getThreadInfo().getMaxSpareThreads(); double per = (double) current / (double) max; if (per > WARNING_PER) { return WARNING; } else if (per >= ACTIVE_PER && per <= WARNING_PER) { return ACTIVE; } else if (per < ACTIVE_PER && per >= HEALTHY_PER) { return HEALTHY; } else { return DEAD; } } else { return DEAD; } } /** * Method will calculate the memory load: used / max = load. The load value * is an integer between 1 and 100. It is the percent memory used. Changed * this to be more like other system monitors. Peter Lin 2-11-05 * * @param stat * @return memory load */ public static int calculateMemoryLoad(Status stat) { double load = 0; if (stat != null) { double total = stat.getJvm().getMemory().getTotal(); double free = stat.getJvm().getMemory().getFree(); double used = total - free; load = (used / total); } return (int) (load * 100); } /** * Method will calculate the thread load: busy / max = load. The value is an * integer between 1 and 100. It is the percent busy. * * @param stat * @return thread load */ public static int calculateThreadLoad(Status stat) { int load = 0; if (stat != null && stat.getConnector().size() > 0) { Connector cntr = fetchConnector(stat); double max = cntr.getThreadInfo().getMaxThreads(); double current = cntr.getThreadInfo().getCurrentThreadsBusy(); load = (int) ((current / max) * 100); } return load; } /** * Method to get connector to use for calculate server status * * @param stat * @return connector */ private static Connector fetchConnector(Status stat) { Connector cntr = null; String connectorPrefix = stat.getConnectorPrefix(); if (connectorPrefix != null && connectorPrefix.length() > 0) { // loop to fetch desired connector for (int i = 0; i < stat.getConnector().size(); i++) { cntr = stat.getConnector().get(i); if (cntr.getName().startsWith(connectorPrefix)) { return cntr; } } } // default : get first connector cntr = stat.getConnector().get(0); return cntr; } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/0000755000175000017500000000000012165514773025754 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorModel.java0000644000175000017500000000664212032647217031230 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.jmeter.samplers.Clearable; public class MonitorModel implements Clearable, Serializable, Cloneable { private static final long serialVersionUID = 240L; private MonitorStats current = new MonitorStats(0, 0, 0, 0, 0, "", "", "", System.currentTimeMillis()); /** * */ public MonitorModel() { super(); } public MonitorModel(MonitorStats stat) { this.current = stat; } public int getHealth() { return this.current.getHealth(); } public int getLoad() { return this.current.getLoad(); } public int getCpuload() { return this.current.getCpuLoad(); } public int getMemload() { return this.current.getMemLoad(); } public int getThreadload() { return this.current.getThreadLoad(); } public String getHost() { return this.current.getHost(); } public String getPort() { return this.current.getPort(); } public String getProtocol() { return this.current.getProtocol(); } public long getTimestamp() { return this.current.getTimeStamp(); } public String getURL() { return this.current.getURL(); } /** * Method will return a formatted date using SimpleDateFormat. * * @return String */ public String getTimestampString() { Date date = new Date(this.current.getTimeStamp()); SimpleDateFormat ft = new SimpleDateFormat(); return ft.format(date); } /** * Method is used by DefaultMutableTreeNode to get the label for the node. */ @Override public String toString() { return getURL(); } /** * clear will create a new MonitorStats object. */ public void clearData() { current = new MonitorStats(0, 0, 0, 0, 0, "", "", "", System.currentTimeMillis()); } /** * a clone method is provided for convienance. In some cases, it may be * desirable to clone the object. */ @Override public Object clone() { return new MonitorModel(cloneMonitorStats()); } /** * a clone method to clone the stats * * @return new instance of the class */ public MonitorStats cloneMonitorStats() { return new MonitorStats(current.getHealth(), current.getLoad(), current.getCpuLoad(), current.getMemLoad(), current.getThreadLoad(), current.getHost(), current.getPort(), current.getProtocol(), current .getTimeStamp()); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorPerformancePanel.java0000644000175000017500000002547312032647217033414 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.util.HashMap; import java.util.Map; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeSelectionModel; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; public class MonitorPerformancePanel extends JSplitPane implements TreeSelectionListener, MonitorListener, Clearable { private static final long serialVersionUID = 240L; private JScrollPane TREEPANE; private JPanel GRAPHPANEL; private JTree SERVERTREE; private DefaultTreeModel TREEMODEL; private final MonitorGraph GRAPH; private DefaultMutableTreeNode ROOTNODE; private final Map SERVERMAP; private final MonitorAccumModel MODEL; private SampleResult ROOTSAMPLE; // Don't make these static, otherwise language change does not work private final String LEGEND_HEALTH = JMeterUtils.getResString("monitor_legend_health"); //$NON-NLS-1$ private final String LEGEND_LOAD = JMeterUtils.getResString("monitor_legend_load"); //$NON-NLS-1$ private final String LEGEND_MEM = JMeterUtils.getResString("monitor_legend_memory_per"); //$NON-NLS-1$ private final String LEGEND_THREAD = JMeterUtils.getResString("monitor_legend_thread_per"); //$NON-NLS-1$ private final ImageIcon LEGEND_HEALTH_ICON = JMeterUtils.getImage("monitor-green-legend.gif"); //$NON-NLS-1$ private final ImageIcon LEGEND_LOAD_ICON = JMeterUtils.getImage("monitor-blue-legend.gif"); //$NON-NLS-1$ private final ImageIcon LEGEND_MEM_ICON = JMeterUtils.getImage("monitor-orange-legend.gif"); //$NON-NLS-1$ private final ImageIcon LEGEND_THREAD_ICON = JMeterUtils.getImage("monitor-red-legend.gif"); //$NON-NLS-1$ private final String GRID_LABEL_TOP = JMeterUtils.getResString("monitor_label_left_top"); //$NON-NLS-1$ private final String GRID_LABEL_MIDDLE = JMeterUtils.getResString("monitor_label_left_middle"); //$NON-NLS-1$ private final String GRID_LABEL_BOTTOM = JMeterUtils.getResString("monitor_label_left_bottom"); //$NON-NLS-1$ private final String GRID_LABEL_HEALTHY = JMeterUtils.getResString("monitor_label_right_healthy"); //$NON-NLS-1$ // private final String GRID_LABEL_ACTIVE = JMeterUtils.getResString("monitor_label_right_active"); //$NON-NLS-1$ // private final String GRID_LABEL_WARNING = JMeterUtils.getResString("monitor_label_right_warning"); //$NON-NLS-1$ private final String GRID_LABEL_DEAD = JMeterUtils.getResString("monitor_label_right_dead"); //$NON-NLS-1$ private final String PERF_TITLE = JMeterUtils.getResString("monitor_performance_title"); //$NON-NLS-1$ private final String SERVER_TITLE = JMeterUtils.getResString("monitor_performance_servers"); //$NON-NLS-1$ private Font plaintext = new Font("plain", Font.TRUETYPE_FONT, 10); //$NON-NLS-1$ /** * * @deprecated Only for use in unit testing */ @Deprecated public MonitorPerformancePanel() { // log.warn("Only for use in unit testing"); SERVERMAP = null; MODEL = null; GRAPH = null; } /** * */ public MonitorPerformancePanel(MonitorAccumModel model, MonitorGraph graph) { super(); this.SERVERMAP = new HashMap(); this.MODEL = model; this.MODEL.addListener(this); this.GRAPH = graph; init(); } /** * init() will create all the necessary swing panels, labels and icons for * the performance panel. */ private void init() {// called from ctor, so must not be overridable ROOTSAMPLE = new SampleResult(); ROOTSAMPLE.setSampleLabel(SERVER_TITLE); ROOTSAMPLE.setSuccessful(true); ROOTNODE = new DefaultMutableTreeNode(ROOTSAMPLE); TREEMODEL = new DefaultTreeModel(ROOTNODE); SERVERTREE = new JTree(TREEMODEL); SERVERTREE.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); SERVERTREE.addTreeSelectionListener(this); SERVERTREE.setShowsRootHandles(true); TREEPANE = new JScrollPane(SERVERTREE); TREEPANE.setPreferredSize(new Dimension(150, 200)); this.add(TREEPANE, JSplitPane.LEFT); this.setDividerLocation(0.18); JPanel right = new JPanel(); right.setLayout(new BorderLayout()); JLabel title = new JLabel(" " + PERF_TITLE); title.setPreferredSize(new Dimension(200, 40)); GRAPHPANEL = new JPanel(); GRAPHPANEL.setLayout(new BorderLayout()); GRAPHPANEL.setMaximumSize(new Dimension(MODEL.getBufferSize(), MODEL.getBufferSize())); GRAPHPANEL.setBackground(Color.white); GRAPHPANEL.add(GRAPH, BorderLayout.CENTER); right.add(GRAPHPANEL, BorderLayout.CENTER); right.add(title, BorderLayout.NORTH); right.add(createLegend(), BorderLayout.SOUTH); right.add(createLeftGridLabels(), BorderLayout.WEST); right.add(createRightGridLabels(), BorderLayout.EAST); this.add(right, JSplitPane.RIGHT); } /** * Method will create the legends at the bottom of the performance tab * explaining the meaning of each line. * * @return JPanel */ private JPanel createLegend() { Dimension lsize = new Dimension(130, 18); JPanel legend = new JPanel(); legend.setLayout(new FlowLayout()); JLabel load = new JLabel(LEGEND_LOAD); load.setFont(plaintext); load.setPreferredSize(lsize); load.setIcon(LEGEND_LOAD_ICON); legend.add(load); JLabel mem = new JLabel(LEGEND_MEM); mem.setFont(plaintext); mem.setPreferredSize(lsize); mem.setIcon(LEGEND_MEM_ICON); legend.add(mem); JLabel thd = new JLabel(LEGEND_THREAD); thd.setFont(plaintext); thd.setPreferredSize(lsize); thd.setIcon(LEGEND_THREAD_ICON); legend.add(thd); JLabel health = new JLabel(LEGEND_HEALTH); health.setFont(plaintext); health.setPreferredSize(lsize); health.setIcon(LEGEND_HEALTH_ICON); legend.add(health); return legend; } /** * Method is responsible for creating the left grid labels. * * @return JPanel */ private JPanel createLeftGridLabels() { Dimension lsize = new Dimension(33, 20); JPanel labels = new JPanel(); labels.setLayout(new BorderLayout()); JLabel top = new JLabel(" " + GRID_LABEL_TOP); top.setFont(plaintext); top.setPreferredSize(lsize); labels.add(top, BorderLayout.NORTH); JLabel mid = new JLabel(" " + GRID_LABEL_MIDDLE); mid.setFont(plaintext); mid.setPreferredSize(lsize); labels.add(mid, BorderLayout.CENTER); JLabel bottom = new JLabel(" " + GRID_LABEL_BOTTOM); bottom.setFont(plaintext); bottom.setPreferredSize(lsize); labels.add(bottom, BorderLayout.SOUTH); return labels; } /** * Method is responsible for creating the grid labels on the right for * "healthy" and "dead" * * @return JPanel */ private JPanel createRightGridLabels() { JPanel labels = new JPanel(); labels.setLayout(new BorderLayout()); labels.setPreferredSize(new Dimension(40, GRAPHPANEL.getWidth() - 100)); Dimension lsize = new Dimension(40, 20); JLabel h = new JLabel(GRID_LABEL_HEALTHY); h.setFont(plaintext); h.setPreferredSize(lsize); labels.add(h, BorderLayout.NORTH); JLabel d = new JLabel(GRID_LABEL_DEAD); d.setFont(plaintext); d.setPreferredSize(lsize); labels.add(d, BorderLayout.SOUTH); return labels; } /** * MonitorAccumModel will call this method to notify the component data has * changed. */ public synchronized void addSample(MonitorModel model) { if (!SERVERMAP.containsKey(model.getURL())) { DefaultMutableTreeNode newnode = new DefaultMutableTreeNode(model); newnode.setAllowsChildren(false); SERVERMAP.put(model.getURL(), newnode); ROOTNODE.add(newnode); this.TREEPANE.updateUI(); } DefaultMutableTreeNode node = (DefaultMutableTreeNode) SERVERTREE.getLastSelectedPathComponent(); if (node != null) { Object usrobj = node.getUserObject(); if (usrobj instanceof MonitorModel) { GRAPH.updateGui((MonitorModel) usrobj); } } } /** * When the user selects a different node in the tree, we get the selected * node. From the node, we get the UserObject used to create the treenode in * the constructor. */ public void valueChanged(TreeSelectionEvent e) { // we check to see if the lastSelectedPath is null // after we clear, it would return null if (SERVERTREE.getLastSelectedPathComponent() != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) SERVERTREE.getLastSelectedPathComponent(); Object usrobj = node.getUserObject(); if (usrobj instanceof MonitorModel) { MonitorModel mo = (MonitorModel) usrobj; GRAPH.updateGui(mo); this.updateUI(); } TREEPANE.updateUI(); } } /** * clear will remove all child nodes from the ROOTNODE, clear the HashMap, * update the graph and jpanel for the server tree. */ public void clearData() { this.SERVERMAP.clear(); ROOTNODE.removeAllChildren(); SERVERTREE.updateUI(); GRAPH.clearData(); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/ServerPanel.java0000644000175000017500000001416412032647217031044 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.JLabel; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.monitor.util.Stats; /** * The purpose of ServerPanel is to display an unique server and its current * status. The server label consist of the protocol, host and port. For example, * a system with multiple Tomcat's running on different ports would be different * ServerPanel. */ public class ServerPanel extends JPanel implements MonitorGuiListener { private static final long serialVersionUID = 240L; private JLabel serverField; private JLabel timestampField; /** * Preference size for the health icon */ private final Dimension prefsize = new Dimension(25, 75); private JLabel healthIcon; private JLabel loadIcon; /** * Health Icons */ private static final ImageIcon HEALTHY = JMeterUtils.getImage("monitor-healthy.gif"); private static final ImageIcon ACTIVE = JMeterUtils.getImage("monitor-active.gif"); private static final ImageIcon WARNING = JMeterUtils.getImage("monitor-warning.gif"); private static final ImageIcon DEAD = JMeterUtils.getImage("monitor-dead.gif"); /** * Load Icons */ private static final ImageIcon LOAD_0 = JMeterUtils.getImage("monitor-load-0.gif"); private static final ImageIcon LOAD_1 = JMeterUtils.getImage("monitor-load-1.gif"); private static final ImageIcon LOAD_2 = JMeterUtils.getImage("monitor-load-2.gif"); private static final ImageIcon LOAD_3 = JMeterUtils.getImage("monitor-load-3.gif"); private static final ImageIcon LOAD_4 = JMeterUtils.getImage("monitor-load-4.gif"); private static final ImageIcon LOAD_5 = JMeterUtils.getImage("monitor-load-5.gif"); private static final ImageIcon LOAD_6 = JMeterUtils.getImage("monitor-load-6.gif"); private static final ImageIcon LOAD_7 = JMeterUtils.getImage("monitor-load-7.gif"); private static final ImageIcon LOAD_8 = JMeterUtils.getImage("monitor-load-8.gif"); private static final ImageIcon LOAD_9 = JMeterUtils.getImage("monitor-load-9.gif"); private static final ImageIcon LOAD_10 = JMeterUtils.getImage("monitor-load-10.gif"); // private MonitorModel DATA; /** * */ public ServerPanel(MonitorModel model) { super(); // DATA = model; init(model); } /** * * @deprecated Only for use in unit testing */ @Deprecated public ServerPanel() { // log.warn("Only for use in unit testing"); } /** * Init will create the JLabel widgets for the host, health, load and * timestamp. * * @param model */ private void init(MonitorModel model) { this.setLayout(new FlowLayout()); serverField = new JLabel(model.getURL()); this.add(serverField); healthIcon = new JLabel(getHealthyImageIcon(model.getHealth())); healthIcon.setPreferredSize(prefsize); this.add(healthIcon); loadIcon = new JLabel(getLoadImageIcon(model.getLoad())); this.add(loadIcon); timestampField = new JLabel(model.getTimestampString()); this.add(timestampField); } /** * Static method for getting the right ImageIcon for the health. * * @param health * @return image for the status */ private static ImageIcon getHealthyImageIcon(int health) { ImageIcon i = null; switch (health) { case Stats.HEALTHY: i = HEALTHY; break; case Stats.ACTIVE: i = ACTIVE; break; case Stats.WARNING: i = WARNING; break; case Stats.DEAD: i = DEAD; break; } return i; } /** * Static method looks up the right ImageIcon from the load value. * * @param load * @return image for the load */ private static ImageIcon getLoadImageIcon(int load) { if (load == 0) { return LOAD_0; } else if (load > 0 && load <= 10) { return LOAD_1; } else if (load > 10 && load <= 20) { return LOAD_2; } else if (load > 20 && load <= 30) { return LOAD_3; } else if (load > 30 && load <= 40) { return LOAD_4; } else if (load > 40 && load <= 50) { return LOAD_5; } else if (load > 50 && load <= 60) { return LOAD_6; } else if (load > 60 && load <= 70) { return LOAD_7; } else if (load > 70 && load <= 80) { return LOAD_8; } else if (load > 80 && load <= 90) { return LOAD_9; } else { return LOAD_10; } } /** * Method will update the ServerPanel's health, load, and timestamp. For * efficiency, it uses the static method to lookup the images. */ public void updateGui(MonitorModel stat) { // this.DATA = null; // this.DATA = stat; loadIcon.setIcon(getLoadImageIcon(stat.getLoad())); healthIcon.setIcon(getHealthyImageIcon(stat.getHealth())); timestampField.setText(stat.getTimestampString()); this.updateGui(); } /** * update the gui */ public void updateGui() { this.repaint(); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorGuiListener.java0000644000175000017500000000165712032647217032423 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; public interface MonitorGuiListener { void updateGui(MonitorModel event); void updateGui(); } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorHealthVisualizer.java0000644000175000017500000001366512032647217033456 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Graphics; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.Image; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractVisualizer; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * For performance reasons, I am using tabs for the visualizers. Since a * visualizer is heavy weight, I don not want to have two separate result * collectors rather the same information. Instead, I would rather have the * visualizer be the container for the data and simply pass the data to child * JComponents. In the future, we may want to add email alerts as a third tab. */ public class MonitorHealthVisualizer extends AbstractVisualizer implements ImageVisualizer, ItemListener, GraphListener, Clearable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String CONNECTOR_PREFIX = "connector.prefix"; // $NON-NLS-1$ private static final String CONNECTOR_PREFIX_DEFAULT = ""; // $NON-NLS-1$ private static final String BUFFER = "monitor.buffer.size"; // $NON-NLS-1$ private MonitorTabPane tabPane; private MonitorHealthPanel healthPane; private MonitorPerformancePanel perfPane; private MonitorAccumModel model; private MonitorGraph graph; private JLabeledTextField prefixField; /** * Constructor for the GraphVisualizer object. */ public MonitorHealthVisualizer() { this.isStats = true; initModel(); init(); } @Override public void configure(TestElement el) { super.configure(el); prefixField.setText(el.getPropertyAsString(CONNECTOR_PREFIX, CONNECTOR_PREFIX_DEFAULT)); model.setPrefix(prefixField.getText()); } @Override public void modifyTestElement(TestElement c) { super.modifyTestElement(c); c.setProperty(CONNECTOR_PREFIX,prefixField.getText(),CONNECTOR_PREFIX_DEFAULT); model.setPrefix(prefixField.getText()); } private void initModel() { model = new MonitorAccumModel(); graph = new MonitorGraph(model); model.setBufferSize(JMeterUtils.getPropDefault(BUFFER, 800)); } public String getLabelResource() { return "monitor_health_title"; // $NON-NLS-1$ } /** * Because of the unique requirements of a monitor We have to handle the * results differently than normal GUI components. A monitor should be able * to run for a very long time without eating up all the memory. */ public void add(SampleResult res) { model.addSample(res); try { collector.recordStats(this.model.getLastSample().cloneMonitorStats()); } catch (Exception e) { // for now just swallow the exception log.debug("StatsModel was null", e); } } public Image getImage() { Image result = graph.createImage(this.getWidth(), this.getHeight()); Graphics image = result.getGraphics(); graph.paintComponent(image); return result; } public void itemStateChanged(ItemEvent e) { } public synchronized void updateGui() { this.repaint(); } public synchronized void updateGui(Sample s) { this.repaint(); } /** * Initialize the GUI. */ private void init() { this.setLayout(new BorderLayout()); // MAIN PANEL Border margin = new EmptyBorder(10, 10, 5, 10); this.setBorder(margin); // Add the main panel and the graph this.add(this.makeTitlePanel(), BorderLayout.NORTH); this.createTabs(); prefixField = new JLabeledTextField(JMeterUtils.getResString("monitor_label_prefix")); // $NON-NLS-1$ add(prefixField, BorderLayout.SOUTH); } private void createTabs() { tabPane = new MonitorTabPane(); createHealthPane(tabPane); createPerformancePane(tabPane); this.add(tabPane, BorderLayout.CENTER); } /** * Create the JPanel * * @param pane */ private void createHealthPane(MonitorTabPane pane) { healthPane = new MonitorHealthPanel(model); pane.addTab(JMeterUtils.getResString("monitor_health_tab_title"), healthPane); // $NON-NLS-1$ } /** * Create the JSplitPane for the performance history * * @param pane */ private void createPerformancePane(MonitorTabPane pane) { perfPane = new MonitorPerformancePanel(model, graph); pane.addTab(JMeterUtils.getResString("monitor_performance_tab_title"), perfPane); // $NON-NLS-1$ } /** * Clears the MonitorAccumModel. */ public void clearData() { this.model.clearData(); this.healthPane.clearData(); this.perfPane.clearData(); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorGraph.java0000644000175000017500000001443312032647217031226 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.Color; import java.awt.Graphics; import java.util.Iterator; import java.util.List; import javax.swing.JComponent; import org.apache.jmeter.samplers.Clearable; /** * MonitorGraph will draw the performance history of a given server. It displays * 4 lines: *

        */ public class MonitorGraph extends JComponent implements MonitorGuiListener, Clearable { private static final long serialVersionUID = 240L; private final MonitorAccumModel model; private MonitorModel current; private boolean drawHealth = true; private boolean drawLoad = true; private boolean drawMemory = true; private boolean drawThread = true; // TODO field always true, what for ? private final boolean drawYgrid = true; // TODO field always true, what for ? private final boolean drawXgrid = true; /** * Needed for Serialization tests. * @deprecated Only for use in unit testing */ @Deprecated public MonitorGraph() { // log.warn("Only for use in unit testing"); model = null; } public MonitorGraph(MonitorAccumModel model) { this.model = model; repaint(); } public void setHealth(boolean health) { this.drawHealth = health; } public void setLoad(boolean load) { this.drawLoad = load; } public void setMem(boolean mem) { this.drawMemory = mem; } public void setThread(boolean thread) { this.drawThread = thread; } /** * The method will first check to see if the graph is visible. If it is, it * will repaint the graph. */ public void updateGui(final MonitorModel model) { if (this.isShowing()) { this.current = model; repaint(); } } /** * painComponent is responsible for drawing the actual graph. This is * because of how screen works. Tried to use clipping, but I don't * understand it well enough to get the desired effect. */ @Override public void paintComponent(Graphics g) { super.paintComponent(g); if (this.current != null) { synchronized (model) { List samples = model.getAllSamples(this.current.getURL()); int size = samples.size(); synchronized (samples) { Iterator e; if (size > getWidth()) { e = samples.listIterator(size - getWidth()); } else { e = samples.iterator(); } MonitorModel last = null; for (int i = 0; e.hasNext(); i++) { MonitorModel s = e.next(); if (last == null) { last = s; } drawSample(i, s, g, last); last = s; } } } } } /** * updateGui() will call repaint */ public void updateGui() { repaint(); } /** * clear will repaint the graph */ public void clearData() { paintComponent(getGraphics()); this.repaint(); } private void drawSample(int x, MonitorModel model, Graphics g, MonitorModel last) { double width = getWidth(); double height = getHeight() - 10.0; int xaxis = (int) (width * (x / width)); int lastx = (int) (width * ((x - 1) / width)); // draw grid only when x is 1. If we didn't // the grid line would draw over the data // lines making it look bad. if (drawYgrid && x == 1) { int q1 = (int) (height * 0.25); int q2 = (int) (height * 0.50); int q3 = (int) (height * 0.75); g.setColor(Color.lightGray); g.drawLine(0, q1, getWidth(), q1); g.drawLine(0, q2, getWidth(), q2); g.drawLine(0, q3, getWidth(), q3); } if (drawXgrid && x == 1) { int x1 = (int) (width * 0.25); int x2 = (int) (width * 0.50); int x3 = (int) (width * 0.75); g.drawLine(x1, 0, x1, getHeight()); g.drawLine(x2, 0, x2, getHeight()); g.drawLine(x3, 0, x3, getHeight()); g.drawLine(getWidth(), 0, getWidth(), getHeight()); } if (drawHealth) { int hly = (int) (height - (height * (model.getHealth() / 3.0))); int lasty = (int) (height - (height * (last.getHealth() / 3.0))); g.setColor(Color.green); g.drawLine(lastx, lasty, xaxis, hly); } if (drawLoad) { int ldy = (int) (height - (height * (model.getLoad() / 100.0))); int lastldy = (int) (height - (height * (last.getLoad() / 100.0))); g.setColor(Color.blue); g.drawLine(lastx, lastldy, xaxis, ldy); } if (drawMemory) { int mmy = (int) (height - (height * (model.getMemload() / 100.0))); int lastmmy = (int) (height - (height * (last.getMemload() / 100.0))); g.setColor(Color.orange); g.drawLine(lastx, lastmmy, xaxis, mmy); } if (drawThread) { int thy = (int) (height - (height * (model.getThreadload() / 100.0))); int lastthy = (int) (height - (height * (last.getThreadload() / 100.0))); g.setColor(Color.red); g.drawLine(lastx, lastthy, xaxis, thy); } } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorHealthPanel.java0000644000175000017500000001206212032647217032346 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.util.HashMap; import java.util.Map; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.util.JMeterUtils; /** * The health panel is responsible for showing the health of the servers. It * only uses the most current information to show the status. */ public class MonitorHealthPanel extends JPanel implements MonitorListener, Clearable { private static final long serialVersionUID = 240L; private final Map serverPanelMap = new HashMap(); private JPanel servers = null; private final MonitorAccumModel model; private JScrollPane serverScrollPane = null; // NOTUSED Font plainText = new Font("plain", Font.PLAIN, 9); // These must not be static, otherwise Language change does not work private final String INFO_H = JMeterUtils.getResString("monitor_equation_healthy"); //$NON-NLS-1$ private final String INFO_A = JMeterUtils.getResString("monitor_equation_active"); //$NON-NLS-1$ private final String INFO_W = JMeterUtils.getResString("monitor_equation_warning"); //$NON-NLS-1$ private final String INFO_D = JMeterUtils.getResString("monitor_equation_dead"); //$NON-NLS-1$ private final String INFO_LOAD = JMeterUtils.getResString("monitor_equation_load"); //$NON-NLS-1$ /** * * @deprecated Only for use in unit testing */ @Deprecated public MonitorHealthPanel() { // log.warn("Only for use in unit testing"); model = null; } /** * */ public MonitorHealthPanel(MonitorAccumModel model) { this.model = model; this.model.addListener(this); init(); } /** * init is responsible for creating the necessary legends and information * for the health panel. */ private void init() {// called from ctor, so must not be overridable this.setLayout(new BorderLayout()); ImageIcon legend = JMeterUtils.getImage("monitor-legend.gif"); // I18N: Contains fixed English text ... JLabel label = new JLabel(legend); label.setPreferredSize(new Dimension(550, 25)); this.add(label, BorderLayout.NORTH); this.servers = new JPanel(); this.servers.setLayout(new BoxLayout(servers, BoxLayout.Y_AXIS)); this.servers.setAlignmentX(Component.LEFT_ALIGNMENT); serverScrollPane = new JScrollPane(this.servers); serverScrollPane.setPreferredSize(new Dimension(300, 300)); this.add(serverScrollPane, BorderLayout.CENTER); // the equations String eqstring1 = " " + INFO_H + " | " + INFO_A; String eqstring2 = " " + INFO_W + " | " + INFO_D; String eqstring3 = " " + INFO_LOAD; JLabel eqs = new JLabel(); eqs.setLayout(new BorderLayout()); eqs.setPreferredSize(new Dimension(500, 60)); eqs.add(new JLabel(eqstring1), BorderLayout.NORTH); eqs.add(new JLabel(eqstring2), BorderLayout.CENTER); eqs.add(new JLabel(eqstring3), BorderLayout.SOUTH); this.add(eqs, BorderLayout.SOUTH); } /** * * @param model */ public void addSample(MonitorModel model) { if (serverPanelMap.containsKey(model.getURL())) { ServerPanel pane = null; if (serverPanelMap.get(model.getURL()) != null) { pane = serverPanelMap.get((model.getURL())); } else { pane = new ServerPanel(model); serverPanelMap.put(model.getURL(), pane); } pane.updateGui(model); } else { ServerPanel newpane = new ServerPanel(model); serverPanelMap.put(model.getURL(), newpane); this.servers.add(newpane); newpane.updateGui(model); } this.servers.updateUI(); } /** * clear will clear the hashmap, remove all ServerPanels from the servers * pane, and update the ui. */ public void clearData() { this.serverPanelMap.clear(); this.servers.removeAll(); this.servers.updateUI(); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorListener.java0000644000175000017500000000162512032647217031751 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; public interface MonitorListener { void addSample(MonitorModel model); } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorAccumModel.java0000644000175000017500000001737312032647217032204 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.io.Serializable; import java.net.URL; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.monitor.model.ObjectFactory; import org.apache.jmeter.monitor.model.Status; import org.apache.jmeter.monitor.util.Stats; import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; public class MonitorAccumModel implements Clearable, Serializable { private static final long serialVersionUID = 240L; private final Map> serverListMap; /** * we use this to set the current monitorModel so that we can save the stats * to the resultcolllector. */ private MonitorModel current; private final List listeners; /** * By default, we set the default to 800 */ private int defaultBufferSize = 800; // optional connector name prefix private String connectorPrefix = null; /** * */ public MonitorAccumModel() { serverListMap = new HashMap>(); listeners = new LinkedList(); } public int getBufferSize() { return defaultBufferSize; } public void setBufferSize(int buffer) { defaultBufferSize = buffer; } public void setPrefix(String prefix) { connectorPrefix = prefix; } /** * Added this method we that we can save the calculated stats. * * @return current sample */ public MonitorModel getLastSample() { return this.current; } /** * Method will look up the server in the map. The MonitorModel will be added * to an existing list, or a new one will be created. * * @param model */ public void addSample(MonitorModel model) { this.current = model; if (serverListMap.containsKey(model.getURL())) { List newlist = updateArray(model, serverListMap.get(model.getURL())); serverListMap.put(model.getURL(), newlist); } else { List samples = Collections.synchronizedList(new LinkedList()); samples.add(model); serverListMap.put(model.getURL(), samples); } } /** * We want to keep only 240 entries for each server, so we handle the object * array ourselves. * * @param model */ private List updateArray(MonitorModel model, List list) { if (list.size() < defaultBufferSize) { list.add(model); } else { list.add(model); list.remove(0); } return list; } /** * Get all MonitorModels matching the URL. * * @param url * @return list */ public List getAllSamples(String url) { if (!serverListMap.containsKey(url)) { return Collections.synchronizedList(new LinkedList()); } else { return serverListMap.get(url); } } /** * Get the MonitorModel matching the url. * * @param url * @return list */ public MonitorModel getSample(String url) { if (serverListMap.containsKey(url)) { return serverListMap.get(url).get(0); } else { return null; } } /** * Method will try to parse the response data. If the request was a monitor * request, but the response was incomplete, bad or the server refused the * connection, we will set the server's health to "dead". If the request was * not a monitor sample, the method will ignore it. * * @param sample */ public void addSample(SampleResult sample) { URL surl = null; if (sample instanceof HTTPSampleResult) { surl = ((HTTPSampleResult) sample).getURL(); // String rescontent = new String(sample.getResponseData()); if (sample.isResponseCodeOK() && ((HTTPSampleResult) sample).isMonitor()) { ObjectFactory of = ObjectFactory.getInstance(); Status st = of.parseBytes(sample.getResponseData()); st.setConnectorPrefix(connectorPrefix); if (surl != null) {// surl can be null if read from a file MonitorStats stat = new MonitorStats(Stats.calculateStatus(st), Stats.calculateLoad(st), 0, Stats .calculateMemoryLoad(st), Stats.calculateThreadLoad(st), surl.getHost(), String.valueOf(surl .getPort()), surl.getProtocol(), System.currentTimeMillis()); MonitorModel mo = new MonitorModel(stat); this.addSample(mo); notifyListeners(mo); } // This part of code throws NullPointerException // Don't think Monitor results can be loaded from files // see https://issues.apache.org/bugzilla/show_bug.cgi?id=51810 // else { // noResponse(surl); // } } else if (((HTTPSampleResult) sample).isMonitor()) { noResponse(surl); } } } /** * If there is no response from the server, we create a new MonitorStats * object with the current timestamp and health "dead". * * @param url */ public void noResponse(URL url) { notifyListeners(createNewMonitorModel(url)); } /** * Method will return a new MonitorModel object with the given URL. This is * used when the server fails to respond fully, or is dead. * * @param url * @return new MonitorModel */ public MonitorModel createNewMonitorModel(URL url) { MonitorStats stat = new MonitorStats(Stats.DEAD, 0, 0, 0, 0, url.getHost(), String.valueOf(url.getPort()), url .getProtocol(), System.currentTimeMillis()); return new MonitorModel(stat); } /** * Clears everything except the listener. Do not clear the listeners. If we * clear listeners, subsequent "run" will not notify the gui of data * changes. */ public void clearData() { for (List modelList : this.serverListMap.values()) { modelList.clear(); } this.serverListMap.clear(); } /** * notify the listeners with the MonitorModel object. * * @param model */ public void notifyListeners(MonitorModel model) { for (int idx = 0; idx < listeners.size(); idx++) { MonitorListener ml = listeners.get(idx); ml.addSample(model); } } /** * Add a listener. When samples are added, the class will notify the * listener of the change. * * @param listener */ public void addListener(MonitorListener listener) { listeners.add(listener); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorStats.java0000644000175000017500000001102412032647217031254 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; /* * TODO - convert this into an immutable class using plain variables * The current implementation is quite inefficient, as it stores everything * in properties. * * This will require changes to ResultCollector.recordStats() * and SaveService.saveTestElement() which are both currently only used by Monitor classes */ public class MonitorStats extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; private static final String HEALTH = "stats.health"; private static final String LOAD = "stats.load"; private static final String CPULOAD = "stats.cpuload"; private static final String MEMLOAD = "stats.memload"; private static final String THREADLOAD = "stats.threadload"; private static final String HOST = "stats.host"; private static final String PORT = "stats.port"; private static final String PROTOCOL = "stats.protocol"; private static final String TIMESTAMP = "stats.timestamp"; /** * */ public MonitorStats() { super(); } /** * Default constructor * * @param health * @param load * @param cpuload * @param memload * @param threadload * @param host * @param port * @param protocol * @param time */ public MonitorStats(int health, int load, int cpuload, int memload, int threadload, String host, String port, String protocol, long time) { this.setHealth(health); this.setLoad(load); this.setCpuLoad(cpuload); this.setMemLoad(memload); this.setThreadLoad(threadload); this.setHost(host); this.setPort(port); this.setProtocol(protocol); this.setTimeStamp(time); } /** * For convienance, this method returns the protocol, host and port as a * URL. * * @return protocol://host:port */ public String getURL() { return this.getProtocol() + "://" + this.getHost() + ":" + this.getPort(); } public void setHealth(int health) { this.setProperty(HEALTH, String.valueOf(health)); } public void setLoad(int load) { this.setProperty(LOAD, String.valueOf(load)); } public void setCpuLoad(int load) { this.setProperty(CPULOAD, String.valueOf(load)); } public void setMemLoad(int load) { this.setProperty(MEMLOAD, String.valueOf(load)); } public void setThreadLoad(int load) { this.setProperty(THREADLOAD, String.valueOf(load)); } public void setHost(String host) { this.setProperty(HOST, host); } public void setPort(String port) { this.setProperty(PORT, port); } public void setProtocol(String protocol) { this.setProperty(PROTOCOL, protocol); } public void setTimeStamp(long time) { this.setProperty(TIMESTAMP, String.valueOf(time)); } public int getHealth() { return this.getPropertyAsInt(HEALTH); } public int getLoad() { return this.getPropertyAsInt(LOAD); } public int getCpuLoad() { return this.getPropertyAsInt(CPULOAD); } public int getMemLoad() { return this.getPropertyAsInt(MEMLOAD); } public int getThreadLoad() { return this.getPropertyAsInt(THREADLOAD); } public String getHost() { return this.getPropertyAsString(HOST); } public String getPort() { return this.getPropertyAsString(PORT); } public String getProtocol() { return this.getPropertyAsString(PROTOCOL); } public long getTimeStamp() { return this.getPropertyAsLong(TIMESTAMP); } } apache-jmeter-2.8/src/monitor/components/org/apache/jmeter/visualizers/MonitorTabPane.java0000644000175000017500000000204612032647217031474 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.visualizers; import javax.swing.JTabbedPane; public class MonitorTabPane extends JTabbedPane { private static final long serialVersionUID = 240L; /** * */ public MonitorTabPane() { super(TOP); } } apache-jmeter-2.8/src/monitor/model/0000755000175000017500000000000012032647217017002 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/0000755000175000017500000000000012032647217017571 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/apache/0000755000175000017500000000000012032647217021012 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/apache/jmeter/0000755000175000017500000000000012032647217022300 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/0000755000175000017500000000000012032647217023767 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/0000755000175000017500000000000012165514773025076 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/ThreadInfo.java0000644000175000017500000000237512032647217027764 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * @version $Revision: 674365 $ */ public interface ThreadInfo { int getMaxSpareThreads(); void setMaxSpareThreads(int value); int getMinSpareThreads(); void setMinSpareThreads(int value); int getMaxThreads(); void setMaxThreads(int value); int getCurrentThreadsBusy(); void setCurrentThreadsBusy(int value); int getCurrentThreadCount(); void setCurrentThreadCount(int value); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/JvmImpl.java0000644000175000017500000000230512032647217027310 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * * @version $Revision: 810036 $ */ public class JvmImpl implements Jvm { private Memory memory = null; /** * */ public JvmImpl() { super(); } /** {@inheritDoc} */ public Memory getMemory() { return this.memory; } /** {@inheritDoc} */ public void setMemory(Memory mem) { this.memory = mem; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/WorkerImpl.java0000644000175000017500000000577312032647217030041 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * */ public class WorkerImpl implements Worker { private int requestProcessingTime = 0; private long requestBytesSent = 0; private long requestBytesReceived = 0; private String currentQueryString = null; private String remoteAddr = null; private String currentUri = null; private String method = null; private String protocol = null; private String stage = null; private String virtualHost = null; /** * */ public WorkerImpl() { super(); } public int getRequestProcessingTime() { return this.requestProcessingTime; } public void setRequestProcessingTime(int value) { this.requestProcessingTime = value; } public long getRequestBytesSent() { return this.requestBytesSent; } public void setRequestBytesSent(long value) { this.requestBytesSent = value; } public String getCurrentQueryString() { return this.currentQueryString; } public void setCurrentQueryString(String value) { this.currentQueryString = value; } public String getRemoteAddr() { return this.remoteAddr; } public void setRemoteAddr(String value) { this.remoteAddr = value; } public String getCurrentUri() { return this.currentUri; } public void setCurrentUri(String value) { this.currentUri = value; } public String getStage() { return this.stage; } public void setStage(String value) { this.stage = value; } public String getVirtualHost() { return this.virtualHost; } public void setVirtualHost(String value) { this.virtualHost = value; } public String getProtocol() { return this.protocol; } public void setProtocol(String value) { this.protocol = value; } public long getRequestBytesReceived() { return this.requestBytesReceived; } public void setRequestBytesReceived(long value) { this.requestBytesReceived = value; } public String getMethod() { return this.method; } public void setMethod(String value) { this.method = value; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/Workers.java0000644000175000017500000000171012032647217027365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; import java.util.List; /** * @version $Revision: 805173 $ */ public interface Workers { List getWorker(); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/MemoryImpl.java0000644000175000017500000000271712032647217030033 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * * @version $Revision: 674365 $ */ public class MemoryImpl implements Memory { private long max = 0; private long free = 0; private long total = 0; /** * */ public MemoryImpl() { super(); } public long getMax() { return this.max; } public void setMax(long value) { this.max = value; } public long getFree() { return this.free; } public void setFree(long value) { this.free = value; } public long getTotal() { return this.total; } public void setTotal(long value) { this.total = value; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/Worker.java0000644000175000017500000000313412032647217027204 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * @version $Revision: 1377071 $ */ public interface Worker { int getRequestProcessingTime(); void setRequestProcessingTime(int value); long getRequestBytesSent(); void setRequestBytesSent(long value); String getCurrentQueryString(); void setCurrentQueryString(String value); String getRemoteAddr(); void setRemoteAddr(String value); String getCurrentUri(); void setCurrentUri(String value); String getStage(); void setStage(String value); String getVirtualHost(); void setVirtualHost(String value); String getProtocol(); void setProtocol(String value); long getRequestBytesReceived(); void setRequestBytesReceived(long value); String getMethod(); void setMethod(String value); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/StatusImpl.java0000644000175000017500000000334212032647217030041 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; import java.util.LinkedList; import java.util.List; /** * * @version $Revision: 1295112 $ */ public class StatusImpl implements Status { private Jvm jvm = null; private String connectorPrefix = null; private final List connectors; /** * */ public StatusImpl() { super(); connectors = new LinkedList(); } /** {@inheritDoc} */ public Jvm getJvm() { return jvm; } /** {@inheritDoc} */ public void setJvm(Jvm vm) { this.jvm = vm; } /** {@inheritDoc} */ public List getConnector() { return this.connectors; } public void addConnector(Connector conn) { this.connectors.add(conn); } public void setConnectorPrefix(String prefix) { connectorPrefix = prefix; } public String getConnectorPrefix(){ return connectorPrefix; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/Status.java0000644000175000017500000000210612032647217027214 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; import java.util.List; public interface Status { Jvm getJvm(); void setJvm(Jvm vm); List getConnector(); void addConnector(Connector conn); void setConnectorPrefix(String prefix); String getConnectorPrefix(); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/Jvm.java0000644000175000017500000000163512032647217026473 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; public interface Jvm { Memory getMemory(); void setMemory(Memory mem); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/Memory.java0000644000175000017500000000211412032647217027200 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Created on Mar 12, 2004 */ package org.apache.jmeter.monitor.model; /** * @version $Revision: 674365 $ */ public interface Memory { long getMax(); void setMax(long value); long getFree(); void setFree(long value); long getTotal(); void setTotal(long value); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/ObjectFactory.java0000644000175000017500000000521112032647217030467 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; // For unit tests, @see TestObjectFactory import org.apache.jmeter.monitor.parser.Parser; import org.apache.jmeter.monitor.parser.ParserImpl; import org.apache.jmeter.samplers.SampleResult; /** * ObjectFactory is a simple factory class which creates new instances of * objects. It also provides convienant method to parse XML status results. */ public class ObjectFactory { private static class ObjectFactoryHolder { static final ObjectFactory FACTORY = new ObjectFactory(); } private final Parser PARSER; /** * */ protected ObjectFactory() { super(); PARSER = new MonitorParser(this); } public static ObjectFactory getInstance() { return ObjectFactoryHolder.FACTORY; } public Status parseBytes(byte[] bytes) { return PARSER.parseBytes(bytes); } public Status parseString(String content) { return PARSER.parseString(content); } public Status parseSampleResult(SampleResult result) { return PARSER.parseSampleResult(result); } public Status createStatus() { return new StatusImpl(); } public Connector createConnector() { return new ConnectorImpl(); } public Jvm createJvm() { return new JvmImpl(); } public Memory createMemory() { return new MemoryImpl(); } public RequestInfo createRequestInfo() { return new RequestInfoImpl(); } public ThreadInfo createThreadInfo() { return new ThreadInfoImpl(); } public Worker createWorker() { return new WorkerImpl(); } public Workers createWorkers() { return new WorkersImpl(); } protected static class MonitorParser extends ParserImpl { public MonitorParser(ObjectFactory factory) { super(factory); } } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/WorkersImpl.java0000644000175000017500000000241312032647217030210 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; import java.util.LinkedList; import java.util.List; /** * * @version $Revision: 805173 $ */ public class WorkersImpl implements Workers { private final List worker; /** * */ public WorkersImpl() { super(); worker = new LinkedList(); } public List getWorker() { return worker; } public void addWorker(Worker value) { this.worker.add(value); } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/ConnectorImpl.java0000644000175000017500000000341312032647217030507 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * * @version $Revision: 674365 $ */ public class ConnectorImpl implements Connector { private ThreadInfo threadinfo = null; private RequestInfo requestinfo = null; private Workers workers = null; private String name = null; /** * */ public ConnectorImpl() { super(); } public ThreadInfo getThreadInfo() { return this.threadinfo; } public void setThreadInfo(ThreadInfo value) { this.threadinfo = value; } public RequestInfo getRequestInfo() { return this.requestinfo; } public void setRequestInfo(RequestInfo value) { this.requestinfo = value; } public Workers getWorkers() { return this.workers; } public void setWorkers(Workers value) { this.workers = value; } public String getName() { return this.name; } public void setName(String value) { this.name = value; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/RequestInfoImpl.java0000644000175000017500000000420312032647217031017 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * * @version $Revision: 674365 $ */ public class RequestInfoImpl implements RequestInfo { private long bytesReceived = 0; private long bytesSent = 0; private long requestCount = 0; private long errorCount = 0; private int maxTime = 0; private int processingTime = 0; /** * */ public RequestInfoImpl() { super(); } public long getBytesReceived() { return this.bytesReceived; } public void setBytesReceived(long value) { this.bytesReceived = value; } public long getBytesSent() { return this.bytesSent; } public void setBytesSent(long value) { this.bytesSent = value; } public long getRequestCount() { return requestCount; } public void setRequestCount(long value) { this.requestCount = value; } public long getErrorCount() { return this.errorCount; } public void setErrorCount(long value) { this.errorCount = value; } public int getMaxTime() { return this.maxTime; } public void setMaxTime(int value) { this.maxTime = value; } public int getProcessingTime() { return this.processingTime; } public void setProcessingTime(int value) { this.processingTime = value; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/ThreadInfoImpl.java0000644000175000017500000000404612032647217030603 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * * @version $Revision: 674365 $ */ public class ThreadInfoImpl implements ThreadInfo { private int maxSpareThreads = 0; private int minSpareThreads = 0; private int maxThreads = 0; private int currentThreadCount = 0; private int currentThreadsBusy = 0; /** * */ public ThreadInfoImpl() { super(); } public int getMaxSpareThreads() { return this.maxSpareThreads; } public void setMaxSpareThreads(int value) { this.maxSpareThreads = value; } public int getMinSpareThreads() { return this.minSpareThreads; } public void setMinSpareThreads(int value) { this.minSpareThreads = value; } public int getMaxThreads() { return this.maxThreads; } public void setMaxThreads(int value) { this.maxThreads = value; } public int getCurrentThreadsBusy() { return this.currentThreadsBusy; } public void setCurrentThreadsBusy(int value) { this.currentThreadsBusy = value; } public int getCurrentThreadCount() { return this.currentThreadCount; } public void setCurrentThreadCount(int value) { this.currentThreadCount = value; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/RequestInfo.java0000644000175000017500000000243212032647217030177 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; /** * @version $Revision: 674365 $ */ public interface RequestInfo { long getBytesReceived(); void setBytesReceived(long value); long getBytesSent(); void setBytesSent(long value); long getRequestCount(); void setRequestCount(long value); long getErrorCount(); void setErrorCount(long value); int getMaxTime(); void setMaxTime(int value); int getProcessingTime(); void setProcessingTime(int value); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/model/Connector.java0000644000175000017500000000217512032647217027671 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.model; public interface Connector { ThreadInfo getThreadInfo(); void setThreadInfo(ThreadInfo value); RequestInfo getRequestInfo(); void setRequestInfo(RequestInfo value); Workers getWorkers(); void setWorkers(Workers value); String getName(); void setName(String value); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/parser/0000755000175000017500000000000012165514773025272 5ustar ebourgebourgapache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/parser/MonitorHandler.java0000644000175000017500000003476412032647217031071 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.parser; // import java.util.List; import java.util.Stack; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import org.apache.jmeter.monitor.model.ObjectFactory; import org.apache.jmeter.monitor.model.Connector; import org.apache.jmeter.monitor.model.Jvm; import org.apache.jmeter.monitor.model.Memory; import org.apache.jmeter.monitor.model.RequestInfo; import org.apache.jmeter.monitor.model.Status; import org.apache.jmeter.monitor.model.ThreadInfo; import org.apache.jmeter.monitor.model.Worker; import org.apache.jmeter.monitor.model.Workers; import org.apache.jmeter.monitor.model.WorkersImpl; public class MonitorHandler extends DefaultHandler { // private boolean startDoc = false; // private boolean endDoc = false; private final ObjectFactory factory; private Stack stacktree; private Status status; private Jvm jvm; private Memory memory; private Connector connector; private ThreadInfo threadinfo; private RequestInfo requestinfo; private Worker worker; private Workers workers; // private List workerslist; /** * */ public MonitorHandler(ObjectFactory factory) { super(); this.factory = factory; } @Override public void startDocument() throws SAXException { // this.startDoc = true; // Reset all work variables so reusing the instance starts afresh. this.stacktree = new Stack(); this.status = null; this.jvm = null; this.memory = null; this.connector = null; this.threadinfo = null; this.requestinfo = null; this.worker = null; this.workers = null; } /** {@inheritDoc} */ @Override public void endDocument() throws SAXException { // this.startDoc = false; // this.endDoc = true; } /** * Receive notification of the start of an element. * *

        * By default, do nothing. Application writers may override this method in a * subclass to take specific actions at the start of each element (such as * allocating a new tree node or writing output to a file). *

        * * @param uri * @param localName * The element type name. * @param qName * @param attributes * The specified or defaulted attributes. * @exception org.xml.sax.SAXException * Any SAX exception, possibly wrapping another exception. * @see org.xml.sax.ContentHandler#startElement */ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equals(Constants.STATUS)) { status = factory.createStatus(); stacktree.push(status); } else if (qName.equals(Constants.JVM)) { jvm = factory.createJvm(); if (stacktree.peek() instanceof Status) { status.setJvm(jvm); stacktree.push(jvm); } } else if (qName.equals(Constants.MEMORY)) { memory = factory.createMemory(); if (stacktree.peek() instanceof Jvm) { stacktree.push(memory); if (attributes != null) { for (int idx = 0; idx < attributes.getLength(); idx++) { String attr = attributes.getQName(idx); if (attr.equals(Constants.MEMORY_FREE)) { memory.setFree(parseLong(attributes.getValue(idx))); } else if (attr.equals(Constants.MEMORY_TOTAL)) { memory.setTotal(parseLong(attributes.getValue(idx))); } else if (attr.equals(Constants.MEMORY_MAX)) { memory.setMax(parseLong(attributes.getValue(idx))); } } } jvm.setMemory(memory); } } else if (qName.equals(Constants.CONNECTOR)) { connector = factory.createConnector(); if (stacktree.peek() instanceof Status || stacktree.peek() instanceof Connector) { status.addConnector(connector); stacktree.push(connector); if (attributes != null) { for (int idx = 0; idx < attributes.getLength(); idx++) { String attr = attributes.getQName(idx); if (attr.equals(Constants.ATTRIBUTE_NAME)) { connector.setName(attributes.getValue(idx)); } } } } } else if (qName.equals(Constants.THREADINFO)) { threadinfo = factory.createThreadInfo(); if (stacktree.peek() instanceof Connector) { stacktree.push(threadinfo); connector.setThreadInfo(threadinfo); if (attributes != null) { for (int idx = 0; idx < attributes.getLength(); idx++) { String attr = attributes.getQName(idx); if (attr.equals(Constants.MAXTHREADS)) { threadinfo.setMaxThreads(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.MINSPARETHREADS)) { threadinfo.setMinSpareThreads(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.MAXSPARETHREADS)) { threadinfo.setMaxSpareThreads(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.CURRENTTHREADCOUNT)) { threadinfo.setCurrentThreadCount(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.CURRENTBUSYTHREADS)) { threadinfo.setCurrentThreadsBusy(parseInt(attributes.getValue(idx))); } } } } } else if (qName.equals(Constants.REQUESTINFO)) { requestinfo = factory.createRequestInfo(); if (stacktree.peek() instanceof Connector) { stacktree.push(requestinfo); connector.setRequestInfo(requestinfo); if (attributes != null) { for (int idx = 0; idx < attributes.getLength(); idx++) { String attr = attributes.getQName(idx); if (attr.equals(Constants.MAXTIME)) { requestinfo.setMaxTime(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.PROCESSINGTIME)) { requestinfo.setProcessingTime(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.REQUESTCOUNT)) { requestinfo.setRequestCount(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.ERRORCOUNT)) { requestinfo.setErrorCount(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.BYTESRECEIVED)) { requestinfo.setBytesReceived(parseLong(attributes.getValue(idx))); } else if (attr.equals(Constants.BYTESSENT)) { requestinfo.setBytesSent(parseLong(attributes.getValue(idx))); } } } } } else if (qName.equals(Constants.WORKERS)) { workers = factory.createWorkers(); if (stacktree.peek() instanceof Connector) { connector.setWorkers(workers); stacktree.push(workers); } } else if (qName.equals(Constants.WORKER)) { worker = factory.createWorker(); if (stacktree.peek() instanceof Workers || stacktree.peek() instanceof Worker) { stacktree.push(worker); ((WorkersImpl) workers).addWorker(worker); if (attributes != null) { for (int idx = 0; idx < attributes.getLength(); idx++) { String attr = attributes.getQName(idx); if (attr.equals(Constants.STAGE)) { worker.setStage(attributes.getValue(idx)); } else if (attr.equals(Constants.REQUESTPROCESSINGTIME)) { worker.setRequestProcessingTime(parseInt(attributes.getValue(idx))); } else if (attr.equals(Constants.REQUESTBYTESSENT)) { worker.setRequestBytesSent(parseLong(attributes.getValue(idx))); } else if (attr.equals(Constants.REQUESTBYTESRECEIVED)) { worker.setRequestBytesReceived(parseLong(attributes.getValue(idx))); } else if (attr.equals(Constants.REMOTEADDR)) { worker.setRemoteAddr(attributes.getValue(idx)); } else if (attr.equals(Constants.VIRTUALHOST)) { worker.setVirtualHost(attributes.getValue(idx)); } else if (attr.equals(Constants.METHOD)) { worker.setMethod(attributes.getValue(idx)); } else if (attr.equals(Constants.CURRENTURI)) { worker.setCurrentUri(attributes.getValue(idx)); } else if (attr.equals(Constants.CURRENTQUERYSTRING)) { worker.setCurrentQueryString(attributes.getValue(idx)); } else if (attr.equals(Constants.PROTOCOL)) { worker.setProtocol(attributes.getValue(idx)); } } } } } } /** * Receive notification of the end of an element. * *

        * By default, do nothing. Application writers may override this method in a * subclass to take specific actions at the end of each element (such as * finalising a tree node or writing output to a file). *

        * * @param uri * @param localName * The element type name. * @param qName * The specified or defaulted attributes. * @exception org.xml.sax.SAXException * Any SAX exception, possibly wrapping another exception. * @see org.xml.sax.ContentHandler#endElement */ @Override public void endElement(String uri, String localName, String qName) throws SAXException { if (qName.equals(Constants.STATUS)) { if (stacktree.peek() instanceof Status) { stacktree.pop(); } } else if (qName.equals(Constants.JVM)) { if (stacktree.peek() instanceof Jvm) { stacktree.pop(); } } else if (qName.equals(Constants.MEMORY)) { if (stacktree.peek() instanceof Memory) { stacktree.pop(); } } else if (qName.equals(Constants.CONNECTOR)) { if (stacktree.peek() instanceof Connector || stacktree.peek() instanceof Connector) { stacktree.pop(); } } else if (qName.equals(Constants.THREADINFO)) { if (stacktree.peek() instanceof ThreadInfo) { stacktree.pop(); } } else if (qName.equals(Constants.REQUESTINFO)) { if (stacktree.peek() instanceof RequestInfo) { stacktree.pop(); } } else if (qName.equals(Constants.WORKERS)) { if (stacktree.peek() instanceof Workers) { stacktree.pop(); } } else if (qName.equals(Constants.WORKER)) { if (stacktree.peek() instanceof Worker || stacktree.peek() instanceof Worker) { stacktree.pop(); } } } /** * Receive notification of character data inside an element. * *

        * By default, do nothing. Application writers may override this method to * take specific actions for each chunk of character data (such as adding * the data to a node or buffer, or printing it to a file). *

        * * @param ch * The characters. * @param start * The start position in the character array. * @param length * The number of characters to use from the character array. * @exception org.xml.sax.SAXException * Any SAX exception, possibly wrapping another exception. * @see org.xml.sax.ContentHandler#characters */ @Override public void characters(char ch[], int start, int length) throws SAXException { } /** * Convienance method for parsing long. If the string was not a number, the * method returns zero. * * @param data * @return the value as a long */ public long parseLong(String data) { long val = 0; if (data.length() > 0) { try { val = Long.parseLong(data); } catch (NumberFormatException e) { val = 0; } } return val; } /** * Convienance method for parsing integers. * * @param data * @return the value as an integer */ public int parseInt(String data) { int val = 0; if (data.length() > 0) { try { val = Integer.parseInt(data); } catch (NumberFormatException e) { val = 0; } } return val; } /** * method returns the status object. * * @return the status */ public Status getContents() { return this.status; } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/parser/ParserImpl.java0000644000175000017500000000754212032647217030214 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.parser; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.StringReader; import org.xml.sax.SAXException; import org.xml.sax.InputSource; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.apache.jmeter.monitor.model.ObjectFactory; import org.apache.jmeter.monitor.model.Status; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public abstract class ParserImpl implements Parser { private static final Logger log = LoggingManager.getLoggerForClass(); private final SAXParser PARSER; private final MonitorHandler DOCHANDLER; private final ObjectFactory FACTORY; /** * */ public ParserImpl(ObjectFactory factory) { super(); this.FACTORY = factory; SAXParser parser = null; MonitorHandler handler = null; try { SAXParserFactory parserFactory = SAXParserFactory.newInstance(); parser = parserFactory.newSAXParser(); handler = new MonitorHandler(this.FACTORY); } catch (SAXException e) { log.error("Failed to create the parser",e); } catch (ParserConfigurationException e) { log.error("Failed to create the parser",e); } PARSER = parser; DOCHANDLER = handler; } /** * parse byte array and return Status object * * @param bytes * @return Status */ public Status parseBytes(byte[] bytes) { try { InputSource is = new InputSource(); is.setByteStream(new ByteArrayInputStream(bytes)); PARSER.parse(is, DOCHANDLER); return DOCHANDLER.getContents(); } catch (SAXException e) { log.error("Failed to parse the bytes",e); // let bad input fail silently return DOCHANDLER.getContents(); } catch (IOException e) { // Should never happen log.error("Failed to read the bytes",e); // let bad input fail silently return DOCHANDLER.getContents(); } } /** * @param content * @return Status */ public Status parseString(String content) { try { InputSource is = new InputSource(); is.setCharacterStream(new StringReader(content)); PARSER.parse(is, DOCHANDLER); return DOCHANDLER.getContents(); } catch (SAXException e) { log.error("Failed to parse the String",e); // let bad input fail silently return DOCHANDLER.getContents(); } catch (IOException e) { // Should never happen log.error("Failed to read the String",e); // let bad input fail silently return DOCHANDLER.getContents(); } } /** * @param result * @return Status */ public Status parseSampleResult(SampleResult result) { return parseBytes(result.getResponseData()); } } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/parser/Parser.java0000644000175000017500000000211112032647217027355 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.parser; import org.apache.jmeter.monitor.model.Status; import org.apache.jmeter.samplers.SampleResult; public interface Parser { Status parseBytes(byte[] bytes); Status parseString(String content); Status parseSampleResult(SampleResult result); } apache-jmeter-2.8/src/monitor/model/org/apache/jmeter/monitor/parser/Constants.java0000644000175000017500000000561712032647217030113 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.monitor.parser; /** * Constants for the custom DocumentHandler. * * @version $Revision: 674365 $ */ public class Constants { public static final String STATUS = "status"; public static final String JVM = "jvm"; public static final String CONNECTOR = "connector"; public static final String MEMORY = "memory"; public static final String THREADINFO = "threadInfo"; public static final String REQUESTINFO = "requestInfo"; public static final String WORKER = "worker"; public static final String WORKERS = "workers"; public static final String MEMORY_FREE = "free"; public static final String MEMORY_TOTAL = "total"; public static final String MEMORY_MAX = "max"; public static final String ATTRIBUTE_NAME = "name"; public static final String MAXTHREADS = "maxThreads"; public static final String MINSPARETHREADS = "minSpareThreads"; public static final String MAXSPARETHREADS = "maxSpareThreads"; public static final String CURRENTTHREADCOUNT = "currentThreadCount"; public static final String CURRENTBUSYTHREADS = "currentThreadsBusy"; public static final String MAXTIME = "maxTime="; public static final String PROCESSINGTIME = "processingTime="; public static final String REQUESTCOUNT = "requestCount"; public static final String ERRORCOUNT = "errorCount="; public static final String BYTESRECEIVED = "bytesReceived"; public static final String BYTESSENT = "bytesSent"; public static final String STAGE = "stage"; public static final String REQUESTPROCESSINGTIME = "requestProcessingTime="; public static final String REQUESTBYTESSENT = "requestBytesSent"; public static final String REQUESTBYTESRECEIVED = "requestBytesReceived"; public static final String REMOTEADDR = "remoteAddr"; public static final String VIRTUALHOST = "virtualHost"; public static final String METHOD = "method"; public static final String CURRENTURI = "currentUri"; public static final String CURRENTQUERYSTRING = "currentQueryString"; public static final String PROTOCOL = "protocol"; } apache-jmeter-2.8/src/reports/0000755000175000017500000000000012032647222015705 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/0000755000175000017500000000000012032647222016474 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/0000755000175000017500000000000012032647222017715 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/0000755000175000017500000000000012165514773021216 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/JMeterReport.java0000644000175000017500000004242112032647222024433 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Enumeration; import java.util.List; import java.util.Properties; import org.apache.commons.cli.avalon.CLArgsParser; import org.apache.commons.cli.avalon.CLOption; import org.apache.commons.cli.avalon.CLOptionDescriptor; import org.apache.commons.cli.avalon.CLUtil; import org.apache.commons.io.IOUtils; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.control.gui.ReportGui; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.plugin.JMeterPlugin; import org.apache.jmeter.plugin.PluginManager; import org.apache.jmeter.report.gui.ReportPageGui; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.report.gui.action.ReportCheckDirty; import org.apache.jmeter.report.gui.action.ReportLoad; import org.apache.jmeter.report.gui.tree.ReportTreeListener; import org.apache.jmeter.report.gui.tree.ReportTreeModel; import org.apache.jmeter.report.writers.gui.HTMLReportWriterGui; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.gui.AbstractListenerGui; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * * JMeterReport is the main class for the reporting component. For now, * the plan is to make the reporting component a separate GUI, which * can run in GUI or console mode. The purpose of the GUI is to design * reports, which can then be run. One of the primary goals of the * reporting component is to make it so the reports can be run in an * automated process. * The report GUI is different than the main JMeter GUI in several ways. *
          *
        • the gui is not multi-threaded
        • *
        • the gui uses different components
        • *
        • the gui is focused on designing reports from the jtl logs * generated during a test run
        • *
        * The class follows the same design as JMeter.java. This should keep * things consistent and make it easier to maintain. */ public class JMeterReport implements JMeterPlugin { private static final Logger log = LoggingManager.getLoggerForClass(); private static final int PROPFILE_OPT = 'p'; private static final int PROPFILE2_OPT = 'q'; // Bug 33920 - additional // prop files private static final int TESTFILE_OPT = 't'; private static final int LOGFILE_OPT = 'l'; private static final int NONGUI_OPT = 'n'; private static final int HELP_OPT = 'h'; private static final int VERSION_OPT = 'v'; private static final int SERVER_OPT = 's'; private static final int JMETER_PROPERTY = 'J'; private static final int SYSTEM_PROPERTY = 'D'; private static final int LOGLEVEL = 'L'; private static final int REMOTE_OPT = 'r'; private static final int JMETER_HOME_OPT = 'd'; private static final CLOptionDescriptor[] options = new CLOptionDescriptor[] { new CLOptionDescriptor("help", CLOptionDescriptor.ARGUMENT_DISALLOWED, HELP_OPT, "print usage information and exit"), new CLOptionDescriptor("version", CLOptionDescriptor.ARGUMENT_DISALLOWED, VERSION_OPT, "print the version information and exit"), new CLOptionDescriptor("propfile", CLOptionDescriptor.ARGUMENT_REQUIRED, PROPFILE_OPT, "the jmeter property file to use"), new CLOptionDescriptor("addprop", CLOptionDescriptor.ARGUMENT_REQUIRED | CLOptionDescriptor.DUPLICATES_ALLOWED, // Bug 33920 - // allow // multiple // props PROPFILE2_OPT, "additional property file(s)"), new CLOptionDescriptor("testfile", CLOptionDescriptor.ARGUMENT_REQUIRED, TESTFILE_OPT, "the jmeter test(.jmx) file to run"), new CLOptionDescriptor("logfile", CLOptionDescriptor.ARGUMENT_REQUIRED, LOGFILE_OPT, "the file to log samples to"), new CLOptionDescriptor("nongui", CLOptionDescriptor.ARGUMENT_DISALLOWED, NONGUI_OPT, "run JMeter in nongui mode"), new CLOptionDescriptor("server", CLOptionDescriptor.ARGUMENT_DISALLOWED, SERVER_OPT, "run the JMeter server"), new CLOptionDescriptor("jmeterproperty", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, JMETER_PROPERTY, "Define additional JMeter properties"), new CLOptionDescriptor("systemproperty", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, SYSTEM_PROPERTY, "Define additional JMeter properties"), new CLOptionDescriptor("loglevel", CLOptionDescriptor.DUPLICATES_ALLOWED | CLOptionDescriptor.ARGUMENTS_REQUIRED_2, LOGLEVEL, "Define loglevel: [category=]level e.g. jorphan=INFO or " + "jmeter.util=DEBUG"), new CLOptionDescriptor("runremote", CLOptionDescriptor.ARGUMENT_DISALLOWED, REMOTE_OPT, "Start remote servers from non-gui mode"), new CLOptionDescriptor("homedir", CLOptionDescriptor.ARGUMENT_REQUIRED, JMETER_HOME_OPT, "the jmeter home directory to use"), }; /** * */ public JMeterReport() { super(); } /** * The default icons for the report GUI. */ private static final String[][] DEFAULT_ICONS = { { AbstractListenerGui.class.getName(), "org/apache/jmeter/images/meter.png" }, { AbstractConfigGui.class.getName(), "org/apache/jmeter/images/testtubes.png" }, { HTMLReportWriterGui.class.getName(), "org/apache/jmeter/images/new/pencil.png" }, { ReportPageGui.class.getName(), "org/apache/jmeter/images/new/scroll.png" }, { ReportGui.class.getName(), "org/apache/jmeter/images/new/book.png" } }; /** {@inheritDoc} */ public String[][] getIconMappings() { String iconProp = JMeterUtils.getPropDefault("jmeter.icons", "org/apache/jmeter/images/icon.properties"); Properties p = JMeterUtils.loadProperties(iconProp); if (p == null) { log.info(iconProp + " not found - using default icon set"); return DEFAULT_ICONS; } log.info("Loaded icon properties from " + iconProp); String[][] iconlist = new String[p.size()][3]; Enumeration pe = p.keys(); int i = 0; while (pe.hasMoreElements()) { String key = (String) pe.nextElement(); String icons[] = JOrphanUtils.split(p.getProperty(key), " "); iconlist[i][0] = key; iconlist[i][1] = icons[0]; if (icons.length > 1){ iconlist[i][2] = icons[1]; } i++; } return iconlist; } /** {@inheritDoc} */ public String[][] getResourceBundles() { return new String[0][]; } public void startNonGui(CLOption testFile, CLOption logFile){ System.setProperty(JMeter.JMETER_NON_GUI, "true"); PluginManager.install(this, false); } public void startGui(CLOption testFile) { PluginManager.install(this, true); ReportTreeModel treeModel = new ReportTreeModel(); ReportTreeListener treeLis = new ReportTreeListener(treeModel); treeLis.setActionHandler(ReportActionRouter.getInstance()); ReportGuiPackage.getInstance(treeLis, treeModel); org.apache.jmeter.gui.ReportMainFrame main = new org.apache.jmeter.gui.ReportMainFrame( treeModel, treeLis); ComponentUtil.centerComponentInWindow(main, 80); main.setVisible(true); ReportActionRouter.getInstance().actionPerformed(new ActionEvent(main, 1, ReportCheckDirty.ADD_ALL)); if (testFile != null) { FileInputStream reader = null; try { File f = new File(testFile.getArgument()); log.info("Loading file: " + f); reader = new FileInputStream(f); HashTree tree = SaveService.loadTree(reader); ReportGuiPackage.getInstance().setReportPlanFile(f.getAbsolutePath()); new ReportLoad().insertLoadedTree(1, tree); } catch (Exception e) { log.error("Failure loading test file", e); JMeterUtils.reportErrorToUser(e.toString()); } finally{ JOrphanUtils.closeQuietly(reader); } } } // private void run(String testFile, String logFile, boolean remoteStart) { // FileInputStream reader = null; // try { // File f = new File(testFile); // if (!f.exists() || !f.isFile()) { // System.out.println("Could not open " + testFile); // return; // } // FileServer.getFileServer().setBasedir(f.getAbsolutePath()); // // reader = new FileInputStream(f); // log.info("Loading file: " + f); // // HashTree tree = SaveService.loadTree(reader); // // // Remove the disabled items // // For GUI runs this is done in Start.java // convertSubTree(tree); // // if (logFile != null) { // ResultCollector logger = new ResultCollector(); // logger.setFilename(logFile); // tree.add(tree.getArray()[0], logger); // } // String summariserName = JMeterUtils.getPropDefault( // "summariser.name", "");//$NON-NLS-1$ // if (summariserName.length() > 0) { // log.info("Creating summariser <" + summariserName + ">"); // System.out.println("Creating summariser <" + summariserName + ">"); // Summariser summer = new Summariser(summariserName); // tree.add(tree.getArray()[0], summer); // } // tree.add(tree.getArray()[0], new ListenToTest(parent)); // System.out.println("Created the tree successfully"); // /** // JMeterEngine engine = null; // if (!remoteStart) { // engine = new StandardJMeterEngine(); // engine.configure(tree); // System.out.println("Starting the test"); // engine.runTest(); // } else { // String remote_hosts_string = JMeterUtils.getPropDefault( // "remote_hosts", "127.0.0.1"); // java.util.StringTokenizer st = new java.util.StringTokenizer( // remote_hosts_string, ","); // List engines = new LinkedList(); // while (st.hasMoreElements()) { // String el = (String) st.nextElement(); // System.out.println("Configuring remote engine for " + el); // // engines.add(doRemoteInit(el.trim(), tree)); // } // System.out.println("Starting remote engines"); // Iterator iter = engines.iterator(); // while (iter.hasNext()) { // engine = (JMeterEngine) iter.next(); // engine.runTest(); // } // System.out.println("Remote engines have been started"); // } // **/ // } catch (Exception e) { // System.out.println("Error in NonGUIDriver " + e.toString()); // log.error("", e); // } // finally{ // JOrphanUtils.closeQuietly(reader); // } // } /** * * @param args */ public void start(String[] args) { CLArgsParser parser = new CLArgsParser(args, options); if (null != parser.getErrorString()) { System.err.println("Error: " + parser.getErrorString()); System.out.println("Usage"); System.out.println(CLUtil.describeOptions(options).toString()); return; } try { initializeProperties(parser); log.info("Version " + JMeterUtils.getJMeterVersion()); log.info("java.version=" + System.getProperty("java.version")); log.info(JMeterUtils.getJMeterCopyright()); if (parser.getArgumentById(VERSION_OPT) != null) { System.out.println(JMeterUtils.getJMeterCopyright()); System.out.println("Version " + JMeterUtils.getJMeterVersion()); } else if (parser.getArgumentById(HELP_OPT) != null) { System.out.println(JMeterUtils.getResourceFileAsText("org/apache/jmeter/help.txt")); } else if (parser.getArgumentById(NONGUI_OPT) == null) { startGui(parser.getArgumentById(TESTFILE_OPT)); } else { startNonGui(parser.getArgumentById(TESTFILE_OPT), parser.getArgumentById(LOGFILE_OPT)); } } catch (Exception e) { e.printStackTrace(); System.out.println("An error occurred: " + e.getMessage()); System.exit(-1); } } private void initializeProperties(CLArgsParser parser) { if (parser.getArgumentById(PROPFILE_OPT) != null) { JMeterUtils.getProperties(parser.getArgumentById(PROPFILE_OPT).getArgument()); } else { JMeterUtils.getProperties(NewDriver.getJMeterDir() + File.separator + "bin" + File.separator + "jmeter.properties"); } // Bug 33845 - allow direct override of Home dir if (parser.getArgumentById(JMETER_HOME_OPT) == null) { JMeterUtils.setJMeterHome(NewDriver.getJMeterDir()); } else { JMeterUtils.setJMeterHome(parser.getArgumentById(JMETER_HOME_OPT).getArgument()); } // Process command line property definitions (can occur multiple times) Properties jmeterProps = JMeterUtils.getJMeterProperties(); List clOptions = parser.getArguments(); int size = clOptions.size(); for (int i = 0; i < size; i++) { CLOption option = clOptions.get(i); String name = option.getArgument(0); String value = option.getArgument(1); switch (option.getDescriptor().getId()) { case PROPFILE2_OPT: // Bug 33920 - allow multiple props File f = new File(name); FileInputStream inStream = null; try { inStream = new FileInputStream(f); jmeterProps.load(inStream); } catch (FileNotFoundException e) { log.warn("Can't find additional property file: " + name, e); } catch (IOException e) { log.warn("Error loading additional property file: " + name, e); } finally { IOUtils.closeQuietly(inStream); } break; case SYSTEM_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting System property: " + name + "=" + value); System.getProperties().setProperty(name, value); } else { // Reset it log.warn("Removing System property: " + name); System.getProperties().remove(name); } break; case JMETER_PROPERTY: if (value.length() > 0) { // Set it log.info("Setting JMeter property: " + name + "=" + value); jmeterProps.setProperty(name, value); } else { // Reset it log.warn("Removing JMeter property: " + name); jmeterProps.remove(name); } break; case LOGLEVEL: if (value.length() > 0) { // Set category log.info("LogLevel: " + name + "=" + value); LoggingManager.setPriority(value, name); } else { // Set root level log.warn("LogLevel: " + name); LoggingManager.setPriority(name); } break; default: // ignored break; } } } }apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/0000755000175000017500000000000012165514773022002 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/0000755000175000017500000000000012165514773022757 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/DirectoryPanel.java0000644000175000017500000000775112032647222026545 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.util.JMeterUtils; public class DirectoryPanel extends HorizontalPanel implements ActionListener { private static final long serialVersionUID = 240L; private static final String ACTION_BROWSE = "browse"; // $NON-NSL-1$ private final JTextField filename = new JTextField(20); private final JButton browse = new JButton(JMeterUtils.getResString("browse")); private final List listeners = new LinkedList(); private final String title; private final Color background; /** * Constructor for the FilePanel object. */ public DirectoryPanel() { this("", null); } public DirectoryPanel(String title) { this(title, null); } public DirectoryPanel(String title, Color bk) { this.title = title; this.background = bk; init(); } /** * Constructor for the FilePanel object. */ public DirectoryPanel(ChangeListener l, String title) { this(title); listeners.add(l); } public void addChangeListener(ChangeListener l) { listeners.add(l); } private void init() { setBackground(this.background); setBorder(BorderFactory.createTitledBorder(title)); add(Box.createHorizontalStrut(5)); add(filename); add(Box.createHorizontalStrut(5)); filename.addActionListener(this); add(browse); browse.setActionCommand(ACTION_BROWSE); browse.addActionListener(this); } /** * If the gui needs to enable/disable the FilePanel, call the method. * * @param enable */ public void enableFile(boolean enable) { browse.setEnabled(enable); filename.setEnabled(enable); } /** * Gets the filename attribute of the FilePanel object. * * @return the filename value */ public String getFilename() { return filename.getText(); } /** * Sets the filename attribute of the FilePanel object. * * @param f * the new filename value */ public void setFilename(String f) { filename.setText(f); } private void fireFileChanged() { Iterator iter = listeners.iterator(); while (iter.hasNext()) { iter.next().stateChanged(new ChangeEvent(this)); } } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(ACTION_BROWSE)) { JFileChooser chooser = DirectoryDialoger.promptToOpenFile(); if (chooser.getSelectedFile() != null) { filename.setText(chooser.getSelectedFile().getPath()); fireFileChanged(); } } else { fireFileChanged(); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/ReportMenuFactory.java0000644000175000017500000003247112032647222027246 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.io.IOException; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import javax.swing.MenuElement; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.gui.TestBeanGUI; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.Printable; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public final class ReportMenuFactory { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String TIMERS = "menu_timer"; public static final String CONTROLLERS = "menu_logic_controller"; public static final String CONFIG_ELEMENTS = "menu_config_element"; public static final String POST_PROCESSORS = "menu_post_processors"; public static final String PRE_PROCESSORS = "menu_pre_processors"; public static final String NON_TEST_ELEMENTS = "menu_non_test_elements"; public static final String LISTENERS = "menu_listener"; public static final String REPORT_PAGE = "menu_report_page"; public static final String TABLES = "menu_tables"; private static final Map> menuMap = new HashMap>(); private static final Set elementsToSkip = new HashSet(); // MENU_ADD_xxx - controls which items are in the ADD menu // MENU_PARENT_xxx - controls which items are in the Insert Parent menu private static final String[] MENU_ADD_CONTROLLER = new String[] { ReportMenuFactory.CONTROLLERS, ReportMenuFactory.CONFIG_ELEMENTS, ReportMenuFactory.TIMERS, ReportMenuFactory.LISTENERS, ReportMenuFactory.PRE_PROCESSORS, ReportMenuFactory.POST_PROCESSORS }; private static final String[] MENU_PARENT_CONTROLLER = new String[] { ReportMenuFactory.CONTROLLERS }; private static List controllers, configElements, listeners, nonTestElements, postProcessors, preProcessors, reportPage, tables; static { try { String[] classesToSkip = JOrphanUtils.split(JMeterUtils.getPropDefault("not_in_menu", ""), ","); for (int i = 0; i < classesToSkip.length; i++) { elementsToSkip.add(classesToSkip[i].trim()); } initializeMenus(); } catch (Exception e) { log.error("", e); } } /** * Private constructor to prevent instantiation. */ private ReportMenuFactory() { } public static void addEditMenu(JPopupMenu menu, boolean removable) { addSeparator(menu); if (removable) { menu.add(makeMenuItem(JMeterUtils.getResString("remove"), "Remove", "remove", KeyStrokes.REMOVE)); } menu.add(makeMenuItem(JMeterUtils.getResString("cut"), "Cut", "Cut", KeyStrokes.CUT)); menu.add(makeMenuItem(JMeterUtils.getResString("copy"), "Copy", "Copy", KeyStrokes.COPY)); menu.add(makeMenuItem(JMeterUtils.getResString("paste"), "Paste", "Paste", KeyStrokes.PASTE)); menu.add(makeMenuItem(JMeterUtils.getResString("paste_insert"), "Paste Insert", "Paste Insert")); } public static void addFileMenu(JPopupMenu menu) { addSeparator(menu); menu.add(makeMenuItem(JMeterUtils.getResString("open"), "Open", "open")); menu.add(makeMenuItem(JMeterUtils.getResString("save_as"), "Save As", "save_as")); JMenuItem savePicture = makeMenuItem(JMeterUtils.getResString("save_as_image"), "Save Image", "save_graphics", KeyStrokes.SAVE_GRAPHICS); menu.add(savePicture); if (!(ReportGuiPackage.getInstance().getCurrentGui() instanceof Printable)) { savePicture.setEnabled(false); } JMenuItem disabled = makeMenuItem(JMeterUtils.getResString("disable"), "Disable", "disable"); JMenuItem enabled = makeMenuItem(JMeterUtils.getResString("enable"), "Enable", "enable"); boolean isEnabled = ReportGuiPackage.getInstance().getTreeListener().getCurrentNode().isEnabled(); if (isEnabled) { disabled.setEnabled(true); enabled.setEnabled(false); } else { disabled.setEnabled(false); enabled.setEnabled(true); } menu.add(enabled); menu.add(disabled); addSeparator(menu); menu.add(makeMenuItem(JMeterUtils.getResString("help"), "Help", "help")); } public static JMenu makeMenus(String[] categories, String label, String actionCommand) { JMenu addMenu = new JMenu(label); for (int i = 0; i < categories.length; i++) { addMenu.add(makeMenu(categories[i], actionCommand)); } return addMenu; } public static JPopupMenu getDefaultControllerMenu() { JPopupMenu pop = new JPopupMenu(); pop.add(MenuFactory.makeMenus(MENU_ADD_CONTROLLER, JMeterUtils.getResString("add"),// $NON-NLS-1$ ActionNames.ADD)); pop.add(makeMenus(MENU_PARENT_CONTROLLER, JMeterUtils.getResString("insert_parent"),// $NON-NLS-1$ ActionNames.ADD_PARENT)); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultConfigElementMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultVisualizerMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultTimerMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultAssertionMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JPopupMenu getDefaultExtractorMenu() { JPopupMenu pop = new JPopupMenu(); MenuFactory.addEditMenu(pop, true); MenuFactory.addFileMenu(pop); return pop; } public static JMenu makeMenu(String category, String actionCommand) { return makeMenu(menuMap.get(category), actionCommand, JMeterUtils.getResString(category)); } public static JMenu makeMenu(Collection menuInfo, String actionCommand, String menuName) { Iterator iter = menuInfo.iterator(); JMenu menu = new JMenu(menuName); while (iter.hasNext()) { MenuInfo info = iter.next(); menu.add(makeMenuItem(info.getLabel(), info.getClassName(), actionCommand)); } return menu; } public static void setEnabled(JMenu menu) { if (menu.getSubElements().length == 0) { menu.setEnabled(false); } } public static JMenuItem makeMenuItem(String label, String name, String actionCommand) { JMenuItem newMenuChoice = new JMenuItem(label); newMenuChoice.setName(name); newMenuChoice.addActionListener(ReportActionRouter.getInstance()); if (actionCommand != null) { newMenuChoice.setActionCommand(actionCommand); } return newMenuChoice; } public static JMenuItem makeMenuItem(String label, String name, String actionCommand, KeyStroke accel) { JMenuItem item = makeMenuItem(label, name, actionCommand); item.setAccelerator(accel); return item; } private static void initializeMenus() { try { List guiClasses = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { JMeterGUIComponent.class, TestBean.class }); controllers = new LinkedList(); configElements = new LinkedList(); listeners = new LinkedList(); postProcessors = new LinkedList(); preProcessors = new LinkedList(); tables = new LinkedList(); reportPage = new LinkedList(); nonTestElements = new LinkedList(); menuMap.put(CONFIG_ELEMENTS, configElements); menuMap.put(CONTROLLERS, controllers); menuMap.put(LISTENERS, listeners); menuMap.put(NON_TEST_ELEMENTS, nonTestElements); menuMap.put(POST_PROCESSORS, postProcessors); menuMap.put(PRE_PROCESSORS, preProcessors); menuMap.put(REPORT_PAGE, reportPage); menuMap.put(TABLES, tables); Collections.sort(guiClasses); Iterator iter = guiClasses.iterator(); while (iter.hasNext()) { String name = iter.next(); /* * JMeterTreeNode and TestBeanGUI are special GUI classes, and * aren't intended to be added to menus * * TODO: find a better way of checking this */ if (name.endsWith("JMeterTreeNode") || name.endsWith("TestBeanGUI")) { continue;// Don't try to instantiate these } JMeterGUIComponent item; try { Class c = Class.forName(name); if (TestBean.class.isAssignableFrom(c)) { item = new TestBeanGUI(c); } else { item = (JMeterGUIComponent) c.newInstance(); } } catch (NoClassDefFoundError e) { log.warn("Missing jar? Could not create " + name + ". " + e); continue; } catch (Exception e) { log.warn("Could not instantiate " + name, e); continue; } if (elementsToSkip.contains(name) || elementsToSkip.contains(item.getStaticLabel())) { log.info("Skipping " + name); continue; } else { elementsToSkip.add(name); } Collection categories = item.getMenuCategories(); if (categories == null) { log.debug(name + " participates in no menus."); continue; } if (categories.contains(POST_PROCESSORS)) { postProcessors.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(PRE_PROCESSORS)) { preProcessors.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(CONTROLLERS)) { controllers.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(NON_TEST_ELEMENTS)) { nonTestElements.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(LISTENERS)) { listeners.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(CONFIG_ELEMENTS)) { configElements.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(TABLES)) { tables.add(new MenuInfo(item.getStaticLabel(), name)); } if (categories.contains(REPORT_PAGE)) { reportPage.add(new MenuInfo(item.getStaticLabel(), name)); } } } catch (IOException e) { log.error("", e); } } private static void addSeparator(JPopupMenu menu) { MenuElement[] elements = menu.getSubElements(); if ((elements.length > 0) && !(elements[elements.length - 1] instanceof JPopupMenu.Separator)) { menu.addSeparator(); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/ReportFilePanel.java0000644000175000017500000001006512032647222026644 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.util.JMeterUtils; public class ReportFilePanel extends HorizontalPanel implements ActionListener { private static final long serialVersionUID = 240L; private final JTextField filename = new JTextField(20); private final JLabel label = new JLabel(JMeterUtils.getResString("file_visualizer_filename")); private final JButton browse = new JButton(JMeterUtils.getResString("browse")); private final List listeners = new LinkedList(); private final String title; private final String filetype; /** * Constructor for the FilePanel object. */ public ReportFilePanel() { this(""); } public ReportFilePanel(String title) { this(title, null); } public ReportFilePanel(String title, String filetype) { this.title = title; this.filetype = filetype; init(); } /** * Constructor for the FilePanel object. */ public ReportFilePanel(ChangeListener l, String title) { this(title); listeners.add(l); } public void addChangeListener(ChangeListener l) { listeners.add(l); } private void init() { setBorder(BorderFactory.createTitledBorder(title)); add(label); add(Box.createHorizontalStrut(5)); add(filename); add(Box.createHorizontalStrut(5)); filename.addActionListener(this); add(browse); browse.setActionCommand("browse"); browse.addActionListener(this); } /** * If the gui needs to enable/disable the FilePanel, call the method. * * @param enable */ public void enableFile(boolean enable) { browse.setEnabled(enable); filename.setEnabled(enable); } /** * Gets the filename attribute of the FilePanel object. * * @return the filename value */ public String getFilename() { return filename.getText(); } /** * Sets the filename attribute of the FilePanel object. * * @param f * the new filename value */ public void setFilename(String f) { filename.setText(f); } private void fireFileChanged() { Iterator iter = listeners.iterator(); while (iter.hasNext()) { iter.next().stateChanged(new ChangeEvent(this)); } } /** {@inheritDoc} */ public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("browse")) { JFileChooser chooser = ReportFileDialoger.promptToOpenFile(new String[] { filetype }); if (chooser != null && chooser.getSelectedFile() != null) { filename.setText(chooser.getSelectedFile().getPath()); fireFileChanged(); } } else { fireFileChanged(); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/DirectoryDialoger.java0000644000175000017500000000375312032647222027232 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.io.File; import javax.swing.JFileChooser; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.util.JMeterUtils; public final class DirectoryDialoger { /** * The last directory visited by the user while choosing Files. */ private static String lastJFCDirectory = null; private static final JFileChooser jfc = new JFileChooser(); /** * Prevent instantiation of utility class. */ private DirectoryDialoger() { } public static JFileChooser promptToOpenFile() { if (lastJFCDirectory == null) { String start = System.getProperty("user.dir", ""); if (!start.equals("")) { jfc.setCurrentDirectory(new File(start)); } } jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int retVal = jfc.showDialog(ReportGuiPackage.getInstance().getMainFrame(), JMeterUtils.getResString("report_select")); lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); if (retVal == JFileChooser.APPROVE_OPTION) { return jfc; } else { return null; } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/ReportMenuBar.java0000644000175000017500000004373312032647222026346 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.awt.Component; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.MenuElement; import javax.swing.UIManager; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.KeyStrokes; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jmeter.util.SSLManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * This is a version of the MenuBar for the reporting tool. I started * with the existing jmeter menubar. */ public class ReportMenuBar extends JMenuBar implements LocaleChangeListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private JMenu fileMenu; private JMenuItem file_save_as; private JMenuItem file_load; private JMenuItem file_merge; private JMenuItem file_exit; private JMenuItem file_close; private JMenu editMenu; private JMenu edit_add; private JMenu runMenu; private JMenuItem run_start; private JMenu remote_start; private JMenuItem remote_start_all; private final Collection remote_engine_start; private JMenuItem run_stop; private JMenuItem run_shut; // all the others could be private too? private JMenu remote_stop; private JMenuItem remote_stop_all; private final Collection remote_engine_stop; private JMenuItem run_clear; private JMenuItem run_clearAll; // JMenu reportMenu; // JMenuItem analyze; private JMenu optionsMenu; private JMenu lafMenu; private JMenuItem sslManager; private JMenu helpMenu; private JMenuItem help_about; private String[] remoteHosts; private JMenu remote_exit; private JMenuItem remote_exit_all; private final Collection remote_engine_exit; public ReportMenuBar() { remote_engine_start = new LinkedList(); remote_engine_stop = new LinkedList(); remote_engine_exit = new LinkedList(); remoteHosts = JOrphanUtils.split(JMeterUtils.getPropDefault("remote_hosts", ""), ","); if (remoteHosts.length == 1 && remoteHosts[0].equals("")) { remoteHosts = new String[0]; } this.getRemoteItems(); createMenuBar(); } public void setFileSaveEnabled(boolean enabled) { file_save_as.setEnabled(enabled); } public void setFileLoadEnabled(boolean enabled) { if (file_load != null) { file_load.setEnabled(enabled); } if (file_merge != null) { file_merge.setEnabled(enabled); } } public void setEditEnabled(boolean enabled) { if (editMenu != null) { editMenu.setEnabled(enabled); } } public void setEditAddMenu(JMenu menu) { // If the Add menu already exists, remove it. if (edit_add != null) { editMenu.remove(edit_add); } // Insert the Add menu as the first menu item in the Edit menu. edit_add = menu; editMenu.insert(edit_add, 0); } public void setEditMenu(JPopupMenu menu) { if (menu != null) { editMenu.removeAll(); Component[] comps = menu.getComponents(); for (int i = 0; i < comps.length; i++) { editMenu.add(comps[i]); } editMenu.setEnabled(true); } else { // editMenu.setEnabled(false); } } public void setEditAddEnabled(boolean enabled) { // There was a NPE being thrown without the null check here.. JKB if (edit_add != null) { edit_add.setEnabled(enabled); } // If we are enabling the Edit-->Add menu item, then we also need to // enable the Edit menu. The Edit menu may already be enabled, but // there's no harm it trying to enable it again. setEditEnabled(enabled); } public void setEditRemoveEnabled(boolean enabled) { // If we are enabling the Edit-->Remove menu item, then we also need to // enable the Edit menu. The Edit menu may already be enabled, but // there's no harm it trying to enable it again. if (enabled) { setEditEnabled(true); } else { // If we are disabling the Edit-->Remove menu item and the // Edit-->Add menu item is disabled, then we also need to disable // the Edit menu. // The Java Look and Feel Guidelines say to disable a menu if all // menu items are disabled. if (!edit_add.isEnabled()) { editMenu.setEnabled(false); } } } /** * Creates the MenuBar for this application. I believe in my heart that this * should be defined in a file somewhere, but that is for later. */ public void createMenuBar() { makeFileMenu(); makeEditMenu(); makeRunMenu(); makeOptionsMenu(); makeHelpMenu(); this.add(fileMenu); this.add(editMenu); this.add(runMenu); this.add(optionsMenu); this.add(helpMenu); } private void makeHelpMenu() { // HELP MENU helpMenu = new JMenu(JMeterUtils.getResString("help")); helpMenu.setMnemonic('H'); JMenuItem contextHelp = new JMenuItem(JMeterUtils.getResString("help"), 'H'); contextHelp.setActionCommand("help"); contextHelp.setAccelerator(KeyStrokes.HELP); contextHelp.addActionListener(ReportActionRouter.getInstance()); help_about = new JMenuItem(JMeterUtils.getResString("about"), 'A'); help_about.setActionCommand("about"); help_about.addActionListener(ReportActionRouter.getInstance()); helpMenu.add(contextHelp); helpMenu.add(help_about); } private void makeOptionsMenu() { // OPTIONS MENU optionsMenu = new JMenu(JMeterUtils.getResString("option")); JMenuItem functionHelper = new JMenuItem(JMeterUtils.getResString("function_dialog_menu_item"), 'F'); functionHelper.addActionListener(ReportActionRouter.getInstance()); functionHelper.setActionCommand("functions"); functionHelper.setAccelerator(KeyStrokes.FUNCTIONS); lafMenu = new JMenu(JMeterUtils.getResString("appearance")); UIManager.LookAndFeelInfo lafs[] = UIManager.getInstalledLookAndFeels(); for (int i = 0; i < lafs.length; ++i) { JMenuItem laf = new JMenuItem(lafs[i].getName()); laf.addActionListener(ReportActionRouter.getInstance()); laf.setActionCommand("laf:" + lafs[i].getClassName()); lafMenu.setMnemonic('L'); lafMenu.add(laf); } optionsMenu.setMnemonic('O'); optionsMenu.add(functionHelper); optionsMenu.add(lafMenu); if (SSLManager.isSSLSupported()) { sslManager = new JMenuItem(JMeterUtils.getResString("sslManager")); sslManager.addActionListener(ReportActionRouter.getInstance()); sslManager.setActionCommand("sslManager"); sslManager.setMnemonic('S'); sslManager.setAccelerator(KeyStrokes.SSL_MANAGER); optionsMenu.add(sslManager); } optionsMenu.add(makeLanguageMenu()); } // TODO fetch list of languages from a file? // N.B. Changes to language list need to be reflected in // resources/PackageTest.java private JMenu makeLanguageMenu() { return JMeterMenuBar.makeLanguageMenu(); } /* * Strings used to set up and process actions in this menu The strings need * to agree with the those in the Action routines */ public static final String ACTION_SHUTDOWN = "shutdown"; public static final String ACTION_STOP = "stop"; public static final String ACTION_START = "start"; private void makeRunMenu() { // RUN MENU runMenu = new JMenu(JMeterUtils.getResString("run")); runMenu.setMnemonic('R'); run_start = new JMenuItem(JMeterUtils.getResString("start"), 'S'); run_start.setAccelerator(KeyStrokes.ACTION_START); run_start.addActionListener(ReportActionRouter.getInstance()); run_start.setActionCommand(ACTION_START); run_stop = new JMenuItem(JMeterUtils.getResString("stop"), 'T'); run_stop.setAccelerator(KeyStrokes.ACTION_STOP); run_stop.setEnabled(false); run_stop.addActionListener(ReportActionRouter.getInstance()); run_stop.setActionCommand(ACTION_STOP); run_shut = new JMenuItem(JMeterUtils.getResString("shutdown"), 'Y'); run_shut.setAccelerator(KeyStrokes.ACTION_SHUTDOWN); run_shut.setEnabled(false); run_shut.addActionListener(ReportActionRouter.getInstance()); run_shut.setActionCommand(ACTION_SHUTDOWN); run_clear = new JMenuItem(JMeterUtils.getResString("clear"), 'C'); run_clear.addActionListener(ReportActionRouter.getInstance()); run_clear.setActionCommand(ActionNames.CLEAR); run_clearAll = new JMenuItem(JMeterUtils.getResString("clear_all"), 'a'); run_clearAll.addActionListener(ReportActionRouter.getInstance()); run_clearAll.setActionCommand(ActionNames.CLEAR_ALL); run_clearAll.setAccelerator(KeyStrokes.CLEAR_ALL); runMenu.add(run_start); if (remote_start != null) { runMenu.add(remote_start); } remote_start_all = new JMenuItem(JMeterUtils.getResString("remote_start_all"), 'Z'); remote_start_all.setName("remote_start_all"); remote_start_all.setAccelerator(KeyStrokes.REMOTE_START_ALL); remote_start_all.addActionListener(ReportActionRouter.getInstance()); remote_start_all.setActionCommand("remote_start_all"); runMenu.add(remote_start_all); runMenu.add(run_stop); runMenu.add(run_shut); if (remote_stop != null) { runMenu.add(remote_stop); } remote_stop_all = new JMenuItem(JMeterUtils.getResString("remote_stop_all"), 'X'); remote_stop_all.setAccelerator(KeyStrokes.REMOTE_STOP_ALL); remote_stop_all.addActionListener(ReportActionRouter.getInstance()); remote_stop_all.setActionCommand("remote_stop_all"); runMenu.add(remote_stop_all); if (remote_exit != null) { runMenu.add(remote_exit); } remote_exit_all = new JMenuItem(JMeterUtils.getResString("remote_exit_all")); remote_exit_all.addActionListener(ReportActionRouter.getInstance()); remote_exit_all.setActionCommand("remote_exit_all"); runMenu.add(remote_exit_all); runMenu.addSeparator(); runMenu.add(run_clear); runMenu.add(run_clearAll); } private void makeEditMenu() { // EDIT MENU editMenu = new JMenu(JMeterUtils.getResString("edit")); // From the Java Look and Feel Guidelines: If all items in a menu // are disabled, then disable the menu. Makes sense. editMenu.setEnabled(false); } private void makeFileMenu() { // FILE MENU fileMenu = new JMenu(JMeterUtils.getResString("file")); fileMenu.setMnemonic('F'); JMenuItem file_save = new JMenuItem(JMeterUtils.getResString("save"), 'S'); file_save.setAccelerator(KeyStrokes.SAVE); file_save.setActionCommand("save"); file_save.addActionListener(ReportActionRouter.getInstance()); file_save.setEnabled(true); file_save_as = new JMenuItem(JMeterUtils.getResString("save_all_as"), 'A'); file_save_as.setAccelerator(KeyStrokes.SAVE_ALL_AS); file_save_as.setActionCommand("save_all_as"); file_save_as.addActionListener(ReportActionRouter.getInstance()); file_save_as.setEnabled(true); file_load = new JMenuItem(JMeterUtils.getResString("menu_open"), 'O'); file_load.setAccelerator(KeyStrokes.OPEN); file_load.addActionListener(ReportActionRouter.getInstance()); // Set default SAVE menu item to disabled since the default node that // is selected is ROOT, which does not allow items to be inserted. file_load.setEnabled(false); file_load.setActionCommand("open"); file_close = new JMenuItem(JMeterUtils.getResString("menu_close"), 'C'); file_close.setAccelerator(KeyStrokes.CLOSE); file_close.setActionCommand("close"); file_close.addActionListener(ReportActionRouter.getInstance()); file_exit = new JMenuItem(JMeterUtils.getResString("exit"), 'X'); file_exit.setAccelerator(KeyStrokes.EXIT); file_exit.setActionCommand("exit"); file_exit.addActionListener(ReportActionRouter.getInstance()); file_merge = new JMenuItem(JMeterUtils.getResString("menu_merge"), 'M'); // file_merge.setAccelerator( // KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK)); file_merge.addActionListener(ReportActionRouter.getInstance()); // Set default SAVE menu item to disabled since the default node that // is selected is ROOT, which does not allow items to be inserted. file_merge.setEnabled(false); file_merge.setActionCommand("merge"); fileMenu.add(file_close); fileMenu.add(file_load); fileMenu.add(file_merge); fileMenu.add(file_save); fileMenu.add(file_save_as); fileMenu.addSeparator(); fileMenu.add(file_exit); } public void setRunning(boolean running, String host) { log.info("setRunning(" + running + "," + host + ")"); Iterator iter = remote_engine_start.iterator(); Iterator iter2 = remote_engine_stop.iterator(); Iterator iter3 = remote_engine_exit.iterator(); while (iter.hasNext() && iter2.hasNext() && iter3.hasNext()) { JMenuItem start = iter.next(); JMenuItem stop = iter2.next(); JMenuItem exit = iter3.next(); if (start.getText().equals(host)) { log.info("Found start host: " + start.getText()); start.setEnabled(!running); } if (stop.getText().equals(host)) { log.info("Found stop host: " + stop.getText()); stop.setEnabled(running); } if (exit.getText().equals(host)) { log.info("Found exit host: " + exit.getText()); exit.setEnabled(true); } } } @Override public void setEnabled(boolean enable) { run_start.setEnabled(!enable); run_stop.setEnabled(enable); run_shut.setEnabled(enable); } private void getRemoteItems() { if (remoteHosts.length > 0) { remote_start = new JMenu(JMeterUtils.getResString("remote_start")); remote_stop = new JMenu(JMeterUtils.getResString("remote_stop")); remote_exit = new JMenu(JMeterUtils.getResString("remote_exit")); for (int i = 0; i < remoteHosts.length; i++) { remoteHosts[i] = remoteHosts[i].trim(); JMenuItem item = new JMenuItem(remoteHosts[i]); item.setActionCommand("remote_start"); item.setName(remoteHosts[i]); item.addActionListener(ReportActionRouter.getInstance()); remote_engine_start.add(item); remote_start.add(item); item = new JMenuItem(remoteHosts[i]); item.setActionCommand("remote_stop"); item.setName(remoteHosts[i]); item.addActionListener(ReportActionRouter.getInstance()); item.setEnabled(false); remote_engine_stop.add(item); remote_stop.add(item); item = new JMenuItem(remoteHosts[i]); item.setActionCommand("remote_exit"); item.setName(remoteHosts[i]); item.addActionListener(ReportActionRouter.getInstance()); item.setEnabled(false); remote_engine_exit.add(item); remote_exit.add(item); } } } /** * Processes a locale change notification. Changes the texts in all menus to * the new language. */ public void localeChanged(LocaleChangeEvent event) { updateMenuElement(fileMenu); updateMenuElement(editMenu); updateMenuElement(runMenu); updateMenuElement(optionsMenu); updateMenuElement(helpMenu); } /** * Refreshes all texts in the menu and all submenus to a new locale. */ private void updateMenuElement(MenuElement menu) { Component component = menu.getComponent(); if (component.getName() != null) { ((JMenuItem) component).setText(JMeterUtils.getResString(component.getName())); } MenuElement[] subelements = menu.getSubElements(); for (int i = 0; i < subelements.length; i++) { updateMenuElement(subelements[i]); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/util/ReportFileDialoger.java0000644000175000017500000001171012032647222027331 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui.util; import java.io.File; import javax.swing.JFileChooser; import javax.swing.filechooser.FileFilter; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.JMeterFileFilter; public final class ReportFileDialoger { /** * The last directory visited by the user while choosing Files. */ private static String lastJFCDirectory = null; private static JFileChooser jfc = new JFileChooser(); /** * Prevent instantiation of utility class. */ private ReportFileDialoger() { } /** * Prompts the user to choose a file from their filesystems for our own * devious uses. This method maintains the last directory the user visited * before dismissing the dialog. This does NOT imply they actually chose a * file from that directory, only that they closed the dialog there. It is * the caller's responsibility to check to see if the selected file is * non-null. * * @return the JFileChooser that interacted with the user, after they are * finished using it (accept or otherwise). */ public static JFileChooser promptToOpenFile(String[] exts) { // JFileChooser jfc = null; if (lastJFCDirectory == null) { String start = System.getProperty("user.dir", ""); if (!start.equals("")) { jfc.setCurrentDirectory(new File(start)); } } clearFileFilters(); jfc.addChoosableFileFilter(new JMeterFileFilter(exts)); int retVal = jfc.showOpenDialog(ReportGuiPackage.getInstance().getMainFrame()); lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); if (retVal == JFileChooser.APPROVE_OPTION) { return jfc; } else { return null; } } private static void clearFileFilters() { FileFilter[] filters = jfc.getChoosableFileFilters(); for (int x = 0; x < filters.length; x++) { jfc.removeChoosableFileFilter(filters[x]); } } public static JFileChooser promptToOpenFile() { return promptToOpenFile(new String[0]); } /** * Prompts the user to choose a file from their filesystems for our own * devious uses. This method maintains the last directory the user visited * before dismissing the dialog. This does NOT imply they actually chose a * file from that directory, only that they closed the dialog there. It is * the caller's responsibility to check to see if the selected file is * non-null. * * @return the JFileChooser that interacted with the user, after they are * finished using it (accept or otherwise). * @see #promptToOpenFile() */ public static JFileChooser promptToSaveFile(String filename) { return promptToSaveFile(filename, null); } /** * Get a JFileChooser with a new FileFilter. * * @param filename * @param extensions * @return JFileChooser */ public static JFileChooser promptToSaveFile(String filename, String[] extensions) { if (lastJFCDirectory == null) { String start = System.getProperty("user.dir", ""); if (!start.equals("")) { jfc = new JFileChooser(new File(start)); } lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); } String ext = ".jmx"; if (filename != null) { jfc.setSelectedFile(new File(lastJFCDirectory, filename)); int i = -1; if ((i = filename.lastIndexOf('.')) > -1) { ext = filename.substring(i); } } clearFileFilters(); if (extensions != null) { jfc.addChoosableFileFilter(new JMeterFileFilter(extensions)); } else { jfc.addChoosableFileFilter(new JMeterFileFilter(new String[] { ext })); } int retVal = jfc.showSaveDialog(ReportGuiPackage.getInstance().getMainFrame()); lastJFCDirectory = jfc.getCurrentDirectory().getAbsolutePath(); if (retVal == JFileChooser.APPROVE_OPTION) { return jfc; } else { return null; } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/ReportGuiPackage.java0000644000175000017500000005300612032647222026032 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.Component; import java.awt.event.MouseEvent; import java.beans.Introspector; import java.util.HashMap; import java.util.Map; import javax.swing.JPopupMenu; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.report.engine.ValueReplacer; import org.apache.jmeter.report.gui.tree.ReportTreeListener; import org.apache.jmeter.report.gui.tree.ReportTreeModel; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.gui.TestBeanGUI; import org.apache.jmeter.testelement.ReportPlan; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.LocaleChangeEvent; import org.apache.jmeter.util.LocaleChangeListener; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * ReportGuiPackage is based on GuiPackage, but with changes for * the reporting tool. Because of how the gui components work, it * was safer to just make a new class, rather than braking existing * JMeter gui code. * */ public final class ReportGuiPackage implements LocaleChangeListener { /** Logging. */ private static final Logger log = LoggingManager.getLoggerForClass(); private static final Object LOCK = new Object(); /** Singleton instance. */ private static volatile ReportGuiPackage guiPack; /** * Flag indicating whether or not parts of the tree have changed since they * were last saved. */ private boolean dirty = false; /** * Map from TestElement to JMeterGUIComponent, mapping the nodes in the tree * to their corresponding GUI components. */ private Map nodesToGui = new HashMap(); /** * Map from Class to JMeterGUIComponent, mapping the Class of a GUI * component to an instance of that component. */ private Map, JMeterGUIComponent> guis = new HashMap, JMeterGUIComponent>(); /** * Map from Class to TestBeanGUI, mapping the Class of a TestBean to an * instance of TestBeanGUI to be used to edit such components. */ private Map, JMeterGUIComponent> testBeanGUIs = new HashMap, JMeterGUIComponent>(); /** The currently selected node in the tree. */ private ReportTreeNode currentNode = null; private boolean currentNodeUpdated = false; /** The model for JMeter's test tree. */ private ReportTreeModel treeModel; /** The listener for JMeter's test tree. */ private ReportTreeListener treeListener; /** The main JMeter frame. */ private ReportMainFrame mainFrame; /** * Private constructor to permit instantiation only from within this class. * Use {@link #getInstance()} to retrieve a singleton instance. */ private ReportGuiPackage() { JMeterUtils.addLocaleChangeListener(this); } /** * Retrieve the singleton GuiPackage instance. * * @return the GuiPackage instance */ public static ReportGuiPackage getInstance() { if (guiPack == null){ log.error("ReportGuiPackage is null"); } return guiPack; } /** * When GuiPackage is requested for the first time, it should be given * handles to JMeter's Tree Listener and TreeModel. * * @param listener * the TreeListener for JMeter's test tree * @param treeModel * the model for JMeter's test tree * * @return GuiPackage */ public static ReportGuiPackage getInstance(ReportTreeListener listener, ReportTreeModel treeModel) { if (guiPack == null) { synchronized (LOCK) { if(guiPack== null) { guiPack = new ReportGuiPackage(); guiPack.setTreeListener(listener); guiPack.setTreeModel(treeModel); } } } return guiPack; } /** * Get a JMeterGUIComponent for the specified test element. If the GUI has * already been created, that instance will be returned. Otherwise, if a GUI * component of the same type has been created, and the component is not * marked as an {@link UnsharedComponent}, that shared component will be * returned. Otherwise, a new instance of the component will be created. The * TestElement's GUI_CLASS property will be used to determine the * appropriate type of GUI component to use. * * @param node * the test element which this GUI is being created for * * @return the GUI component corresponding to the specified test element */ public JMeterGUIComponent getGui(TestElement node) { String testClassName = node.getPropertyAsString(TestElement.TEST_CLASS); String guiClassName = node.getPropertyAsString(TestElement.GUI_CLASS); try { Class testClass; if (testClassName.equals("")) { testClass = node.getClass(); } else { testClass = Class.forName(testClassName); } Class guiClass = null; if (!guiClassName.equals("")) { guiClass = Class.forName(guiClassName); } return getGui(node, guiClass, testClass); } catch (ClassNotFoundException e) { log.error("Could not get GUI for " + node, e); return null; } } /** * Get a JMeterGUIComponent for the specified test element. If the GUI has * already been created, that instance will be returned. Otherwise, if a GUI * component of the same type has been created, and the component is not * marked as an {@link UnsharedComponent}, that shared component will be * returned. Otherwise, a new instance of the component will be created. * * @param node * the test element which this GUI is being created for * @param guiClass * the fully qualifed class name of the GUI component which will * be created if it doesn't already exist * @param testClass * the fully qualifed class name of the test elements which have * to be edited by the returned GUI component * * @return the GUI component corresponding to the specified test element */ public JMeterGUIComponent getGui(TestElement node, Class guiClass, Class testClass) { try { JMeterGUIComponent comp = nodesToGui.get(node); if (comp == null) { comp = getGuiFromCache(guiClass, testClass); nodesToGui.put(node, comp); } log.debug("Gui retrieved = " + comp); return comp; } catch (Exception e) { log.error("Problem retrieving gui", e); return null; } } /** * Remove a test element from the tree. This removes the reference to any * associated GUI component. * * @param node * the test element being removed */ public void removeNode(TestElement node) { nodesToGui.remove(node); } /** * Convenience method for grabbing the gui for the current node. * * @return the GUI component associated with the currently selected node */ public JMeterGUIComponent getCurrentGui() { try { updateCurrentNode(); TestElement curNode = treeListener.getCurrentNode().getTestElement(); JMeterGUIComponent comp = getGui(curNode); comp.clearGui(); log.debug("Updating gui to new node"); comp.configure(curNode); currentNodeUpdated = false; return comp; } catch (Exception e) { log.error("Problem retrieving gui", e); return null; } } /** * Find the JMeterTreeNode for a certain TestElement object. * * @param userObject * the test element to search for * @return the tree node associated with the test element */ public ReportTreeNode getNodeOf(TestElement userObject) { return treeModel.getNodeOf(userObject); } /** * Create a TestElement corresponding to the specified GUI class. * * @param guiClass * the fully qualified class name of the GUI component or a * TestBean class for TestBeanGUIs. * @param testClass * the fully qualified class name of the test elements edited by * this GUI component. * @return the test element corresponding to the specified GUI class. */ public TestElement createTestElement(Class guiClass, Class testClass) { try { JMeterGUIComponent comp = getGuiFromCache(guiClass, testClass); comp.clearGui(); TestElement node = comp.createTestElement(); nodesToGui.put(node, comp); return node; } catch (Exception e) { log.error("Problem retrieving gui", e); return null; } } /** * Create a TestElement for a GUI or TestBean class. *

        * This is a utility method to help actions do with one single String * parameter. * * @param objClass * the fully qualified class name of the GUI component or of the * TestBean subclass for which a TestBeanGUI is wanted. * @return the test element corresponding to the specified GUI class. */ public TestElement createTestElement(String objClass) { JMeterGUIComponent comp; Class c; try { c = Class.forName(objClass); if (TestBean.class.isAssignableFrom(c)) { comp = getGuiFromCache(TestBeanGUI.class, c); } else { comp = getGuiFromCache(c, null); } comp.clearGui(); TestElement node = comp.createTestElement(); nodesToGui.put(node, comp); return node; } catch (NoClassDefFoundError e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Probably a missing // jar } catch (ClassNotFoundException e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Programming error: // bail out. } catch (InstantiationException e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Programming error: // bail out. } catch (IllegalAccessException e) { log.error("Problem retrieving gui for " + objClass, e); throw new RuntimeException(e.toString(), e); // Programming error: // bail out. } } /** * Get an instance of the specified JMeterGUIComponent class. If an instance * of the GUI class has previously been created and it is not marked as an * {@link UnsharedComponent}, that shared instance will be returned. * Otherwise, a new instance of the component will be created, and shared * components will be cached for future retrieval. * * @param guiClass * the fully qualified class name of the GUI component. This * class must implement JMeterGUIComponent. * @param testClass * the fully qualified class name of the test elements edited by * this GUI component. This class must implement TestElement. * @return an instance of the specified class * * @throws InstantiationException * if an instance of the object cannot be created * @throws IllegalAccessException * if access rights do not allow the default constructor to be * called * @throws ClassNotFoundException * if the specified GUI class cannot be found */ private JMeterGUIComponent getGuiFromCache(Class guiClass, Class testClass) throws InstantiationException, IllegalAccessException { JMeterGUIComponent comp; if (guiClass == TestBeanGUI.class) { comp = testBeanGUIs.get(testClass); if (comp == null) { comp = new TestBeanGUI(testClass); testBeanGUIs.put(testClass, comp); } } else { comp = guis.get(guiClass); if (comp == null) { comp = (JMeterGUIComponent) guiClass.newInstance(); if (!(comp instanceof UnsharedComponent)) { guis.put(guiClass, comp); } } } return comp; } /** * Update the GUI for the currently selected node. The GUI component is * configured to reflect the settings in the current tree node. * */ public void updateCurrentGui() { updateCurrentNode(); currentNode = treeListener.getCurrentNode(); TestElement element = currentNode.getTestElement(); JMeterGUIComponent comp = getGui(element); comp.configure(element); currentNodeUpdated = false; } /** * This method should be called in order for GuiPackage to change the * current node. This will save any changes made to the earlier node before * choosing the new node. */ public void updateCurrentNode() { try { if (currentNode != null && !currentNodeUpdated) { log.debug("Updating current node " + currentNode.getName()); JMeterGUIComponent comp = getGui(currentNode.getTestElement()); TestElement el = currentNode.getTestElement(); comp.modifyTestElement(el); } if (currentNode != treeListener.getCurrentNode()) { currentNodeUpdated = true; } currentNode = treeListener.getCurrentNode(); } catch (Exception e) { log.error("Problem retrieving gui", e); } } public ReportTreeNode getCurrentNode() { return treeListener.getCurrentNode(); } public TestElement getCurrentElement() { return getCurrentNode().getTestElement(); } /** * The dirty property is a flag that indicates whether there are parts of * JMeter's test tree that the user has not saved since last modification. * Various (@link Command actions) set this property when components are * modified/created/saved. * * @param dirty * the new value of the dirty flag */ public void setDirty(boolean dirty) { this.dirty = dirty; } /** * Retrieves the state of the 'dirty' property, a flag that indicates if * there are test tree components that have been modified since they were * last saved. * * @return true if some tree components have been modified since they were * last saved, false otherwise */ public boolean isDirty() { return dirty; } /** * Add a subtree to the currently selected node. * * @param subTree * the subtree to add. * * @return the resulting subtree starting with the currently selected node * * @throws IllegalUserActionException * if a subtree cannot be added to the currently selected node */ public HashTree addSubTree(HashTree subTree) throws IllegalUserActionException { return treeModel.addSubTree(subTree, treeListener.getCurrentNode()); } /** * Get the currently selected subtree. * * @return the subtree of the currently selected node */ public HashTree getCurrentSubTree() { return treeModel.getCurrentSubTree(treeListener.getCurrentNode()); } /** * Get the model for JMeter's test tree. * * @return the JMeter tree model */ public ReportTreeModel getTreeModel() { return treeModel; } /** * Set the model for JMeter's test tree. * * @param newTreeModel * the new JMeter tree model */ public void setTreeModel(ReportTreeModel newTreeModel) { treeModel = newTreeModel; } /** * Get a ValueReplacer for the test tree. * * @return a ValueReplacer configured for the test tree */ public ValueReplacer getReplacer() { return new ValueReplacer((ReportPlan) ((ReportTreeNode) getTreeModel().getReportPlan().getArray()[0]) .getTestElement()); } /** * Set the main JMeter frame. * * @param newMainFrame * the new JMeter main frame */ public void setMainFrame(ReportMainFrame newMainFrame) { this.mainFrame = newMainFrame; } /** * Get the main JMeter frame. * * @return the main JMeter frame */ public ReportMainFrame getMainFrame() { return this.mainFrame; } /** * Set the listener for JMeter's test tree. * * @param newTreeListener * the new JMeter test tree listener */ public void setTreeListener(ReportTreeListener newTreeListener) { treeListener = newTreeListener; } /** * Get the listener for JMeter's test tree. * * @return the JMeter test tree listener */ public ReportTreeListener getTreeListener() { return treeListener; } /** * Display the specified popup menu with the source component and location * from the specified mouse event. * * @param e * the mouse event causing this popup to be displayed * @param popup * the popup menu to display */ public void displayPopUp(MouseEvent e, JPopupMenu popup) { displayPopUp((Component) e.getSource(), e, popup); } /** * Display the specified popup menu at the location specified by a mouse * event with the specified source component. * * @param invoker * the source component * @param e * the mouse event causing this popup to be displayed * @param popup * the popup menu to display */ public void displayPopUp(Component invoker, MouseEvent e, JPopupMenu popup) { if (popup != null) { log.debug("Showing pop up for " + invoker + " at x,y = " + e.getX() + "," + e.getY()); popup.pack(); popup.show(invoker, e.getX(), e.getY()); popup.setVisible(true); popup.requestFocus(); } } /* * (non-Javadoc) * * @see org.apache.jmeter.util.LocaleChangeListener#localeChanged(org.apache.jmeter.util.LocaleChangeEvent) */ public void localeChanged(LocaleChangeEvent event) { // FIrst make sure we save the content of the current GUI (since we // will flush it away): updateCurrentNode(); // Forget about all GUIs we've created so far: we'll need to re-created // them all! guis = new HashMap, JMeterGUIComponent>(); nodesToGui = new HashMap(); testBeanGUIs = new HashMap, JMeterGUIComponent>(); // BeanInfo objects also contain locale-sensitive data -- flush them // away: Introspector.flushCaches(); // Now put the current GUI in place. [This code was copied from the // EditCommand action -- we can't just trigger the action because that // would populate the current node with the contents of the new GUI -- // which is empty.] ReportMainFrame mf = getMainFrame(); // Fetch once if (mf == null) // Probably caused by unit testing on headless system { log.warn("Mainframe is null"); } else { mf.setMainPanel((javax.swing.JComponent) getCurrentGui()); mf.setEditMenu(getTreeListener().getCurrentNode().createPopupMenu()); } } private String reportPlanFile; /** * Sets the filepath of the current test plan. It's shown in the main frame * title and used on saving. * * @param f */ public void setReportPlanFile(String f) { reportPlanFile = f; ReportGuiPackage.getInstance().getMainFrame().setExtendedFrameTitle(reportPlanFile); try { FileServer.getFileServer().setBasedir(reportPlanFile); } catch (IllegalStateException e1) { log.error("Failure setting file server's base dir", e1); } } public String getReportPlanFile() { return reportPlanFile; } }apache-jmeter-2.8/src/reports/org/apache/jmeter/gui/ReportMainFrame.java0000644000175000017500000003176412032647222025700 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTree; import javax.swing.MenuElement; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeModel; import org.apache.jmeter.gui.util.ReportMenuBar; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.report.gui.tree.ReportCellRenderer; import org.apache.jmeter.report.gui.tree.ReportTreeListener; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * ReportMainFrame is based on MainFrame. it uses the same basic structure, * but with changes for the report gui. * */ public class ReportMainFrame extends JFrame { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); // The default title for the Menu bar private static final String DEFAULT_TITLE = "Apache JMeter ("+JMeterUtils.getJMeterVersion()+")"; // $NON-NLS-1$ $NON-NLS-2$ /** The menu bar. */ protected ReportMenuBar menuBar; /** The main panel where components display their GUIs. */ protected JScrollPane mainPanel; /** The panel where the test tree is shown. */ protected JScrollPane treePanel; /** The test tree. */ protected JTree tree; /** An image which is displayed when a test is running. */ //private ImageIcon runningIcon = JMeterUtils.getImage("thread.enabled.gif"); /** An image which is displayed when a test is not currently running. */ private final ImageIcon stoppedIcon = JMeterUtils.getImage("thread.disabled.gif");// $NON-NLS-1$ /** The x coordinate of the last location where a component was dragged. */ private int previousDragXLocation = 0; /** The y coordinate of the last location where a component was dragged. */ private int previousDragYLocation = 0; /** The button used to display the running/stopped image. */ private JButton runningIndicator; /** The set of currently running hosts. */ //private Set hosts = new HashSet(); /** A message dialog shown while JMeter threads are stopping. */ private JDialog stoppingMessage; /** * @deprecated only for use by test code */ @Deprecated public ReportMainFrame(){ log.warn("Constructor only intended for use in testing"); // $NON-NLS-1$ } /** * Create a new JMeter frame. * * @param treeModel * the model for the test tree * @param treeListener * the listener for the test tree */ public ReportMainFrame(TreeModel treeModel, ReportTreeListener treeListener) { runningIndicator = new JButton(stoppedIcon); runningIndicator.setMargin(new Insets(0, 0, 0, 0)); runningIndicator.setBorder(BorderFactory.createEmptyBorder()); this.tree = this.makeTree(treeModel,treeListener); ReportGuiPackage.getInstance().setMainFrame(this); init(); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); } // MenuBar related methods // TODO: Do we really need to have all these menubar methods duplicated // here? Perhaps we can make the menu bar accessible through GuiPackage? /** * Specify whether or not the File|Load menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setFileLoadEnabled(boolean enabled) { menuBar.setFileLoadEnabled(enabled); } /** * Specify whether or not the File|Save menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setFileSaveEnabled(boolean enabled) { menuBar.setFileSaveEnabled(enabled); } /** * Set the menu that should be used for the Edit menu. * * @param menu * the new Edit menu */ public void setEditMenu(JPopupMenu menu) { menuBar.setEditMenu(menu); } /** * Specify whether or not the Edit menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setEditEnabled(boolean enabled) { menuBar.setEditEnabled(enabled); } /** * Set the menu that should be used for the Edit|Add menu. * * @param menu * the new Edit|Add menu */ public void setEditAddMenu(JMenu menu) { menuBar.setEditAddMenu(menu); } /** * Specify whether or not the Edit|Add menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setEditAddEnabled(boolean enabled) { menuBar.setEditAddEnabled(enabled); } /** * Specify whether or not the Edit|Remove menu item should be enabled. * * @param enabled * true if the menu item should be enabled, false otherwise */ public void setEditRemoveEnabled(boolean enabled) { menuBar.setEditRemoveEnabled(enabled); } /** * Close the currently selected menu. */ public void closeMenu() { if (menuBar.isSelected()) { MenuElement[] menuElement = menuBar.getSubElements(); if (menuElement != null) { for (int i = 0; i < menuElement.length; i++) { JMenu menu = (JMenu) menuElement[i]; if (menu.isSelected()) { menu.setPopupMenuVisible(false); menu.setSelected(false); break; } } } } } /** * Show a dialog indicating that JMeter threads are stopping on a particular * host. * * @param host * the host where JMeter threads are stopping */ public void showStoppingMessage(String host) { stoppingMessage = new JDialog(this, JMeterUtils.getResString("stopping_test_title"), true);// $NON-NLS-1$ JLabel stopLabel = new JLabel(JMeterUtils.getResString("stopping_test") + ": " + host);// $NON-NLS-1$ stopLabel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); stoppingMessage.getContentPane().add(stopLabel); stoppingMessage.pack(); ComponentUtil.centerComponentInComponent(this, stoppingMessage); SwingUtilities.invokeLater(new Runnable() { public void run() { if (stoppingMessage != null) { stoppingMessage.setVisible(true); } } }); } public void setMainPanel(JComponent comp) { mainPanel.setViewportView(comp); } public JTree getTree() { return this.tree; } /** * Create the GUI components and layout. */ private void init() {// called from ctor, so must not be overridable menuBar = new ReportMenuBar(); setJMenuBar(menuBar); JPanel all = new JPanel(new BorderLayout()); all.add(createToolBar(), BorderLayout.NORTH); JSplitPane treeAndMain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); treePanel = createTreePanel(); treeAndMain.setLeftComponent(treePanel); mainPanel = createMainPanel(); treeAndMain.setRightComponent(mainPanel); treeAndMain.setResizeWeight(.2); treeAndMain.setContinuousLayout(true); all.add(treeAndMain, BorderLayout.CENTER); getContentPane().add(all); tree.setSelectionRow(1); addWindowListener(new WindowHappenings()); setTitle(DEFAULT_TITLE); setIconImage(JMeterUtils.getImage("jmeter.jpg").getImage());// $NON-NLS-1$ } public void setExtendedFrameTitle(String fname) { // file New operation may set to null, so just return app name if (fname == null) { setTitle(DEFAULT_TITLE); return; } // allow for windows / chars in filename String temp = fname.replace('\\', '/'); // $NON-NLS-1$ // $NON-NLS-2$ String simpleName = temp.substring(temp.lastIndexOf('/') + 1);// $NON-NLS-1$ setTitle(simpleName + " (" + fname + ") - " + DEFAULT_TITLE); // $NON-NLS-1$ // $NON-NLS-2$ } /** * Create the JMeter tool bar pane containing the running indicator. * * @return a panel containing the running indicator */ protected Component createToolBar() { Box toolPanel = new Box(BoxLayout.X_AXIS); toolPanel.add(Box.createRigidArea(new Dimension(10, 15))); toolPanel.add(Box.createGlue()); toolPanel.add(runningIndicator); return toolPanel; } /** * Create the panel where the GUI representation of the test tree is * displayed. The tree should already be created before calling this method. * * @return a scroll pane containing the test tree GUI */ protected JScrollPane createTreePanel() { JScrollPane treeP = new JScrollPane(tree); treeP.setMinimumSize(new Dimension(100, 0)); return treeP; } /** * Create the main panel where components can display their GUIs. * * @return the main scroll pane */ protected JScrollPane createMainPanel() { return new JScrollPane(); } /** * Create and initialize the GUI representation of the test tree. * * @param treeModel * the test tree model * @param treeListener * the test tree listener * * @return the initialized test tree GUI */ private JTree makeTree(TreeModel treeModel, ReportTreeListener treeListener) { JTree treevar = new JTree(treeModel); treevar.setCellRenderer(getCellRenderer()); treevar.setRootVisible(false); treevar.setShowsRootHandles(true); treeListener.setJTree(treevar); treevar.addTreeSelectionListener(treeListener); treevar.addMouseListener(treeListener); treevar.addMouseMotionListener(treeListener); treevar.addKeyListener(treeListener); return treevar; } /** * Create the tree cell renderer used to draw the nodes in the test tree. * * @return a renderer to draw the test tree nodes */ protected TreeCellRenderer getCellRenderer() { DefaultTreeCellRenderer rend = new ReportCellRenderer(); rend.setFont(new Font("Dialog", Font.PLAIN, 11)); return rend; } public void drawDraggedComponent(Component dragIcon, int x, int y) { Dimension size = dragIcon.getPreferredSize(); treePanel.paintImmediately(previousDragXLocation, previousDragYLocation, size.width, size.height); this.getLayeredPane().setLayer(dragIcon, 400); SwingUtilities.paintComponent(treePanel.getGraphics(), dragIcon, treePanel, x, y, size.width, size.height); previousDragXLocation = x; previousDragYLocation = y; } /** * A window adapter used to detect when the main JMeter frame is being * closed. */ protected static class WindowHappenings extends WindowAdapter { /** * Called when the main JMeter frame is being closed. Sends a * notification so that JMeter can react appropriately. * * @param event * the WindowEvent to handle */ @Override public void windowClosing(WindowEvent event) { ReportActionRouter.getInstance().actionPerformed(new ActionEvent(this, event.getID(), "exit")); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/0000755000175000017500000000000012165514773023547 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/BarChart.java0000644000175000017500000000752512032647222026076 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.awt.Dimension; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.JComponent; import org.apache.jmeter.report.DataSet; import org.apache.jmeter.visualizers.AxisGraph; import org.apache.jmeter.visualizers.SamplingStatCalculator; /** * The class is reponsible for returning * */ public class BarChart extends AbstractChart { private static final long serialVersionUID = 240L; public static final String REPORT_BAR_CHART_URL = "ReportChart.bar.chart.url"; public BarChart() { super(); } public String getURL() { return getPropertyAsString(REPORT_BAR_CHART_URL); } public void setURL(String url) { setProperty(REPORT_BAR_CHART_URL,url); } /** * Convert the data from SamplingStatCalculator to double array of array * @param data * @return data values */ public double[][] convertToDouble(List data) { double[][] dataset = new double[1][data.size()]; //Iterator itr = data.iterator(); for (int idx=0; idx < data.size(); idx++) { SamplingStatCalculator stat = data.get(idx); dataset[0][idx] = getValue(stat); } return dataset; } @Override public JComponent renderChart(List data) { ArrayList dset = new ArrayList(); ArrayList xlabels = new ArrayList(); Iterator itr = data.iterator(); while (itr.hasNext()) { DataSet item = itr.next(); SamplingStatCalculator ss = item.getStatistics(this.getURL()); if (ss != null) { // we add the entry dset.add(ss); if ( getXLabel().equals(X_DATA_FILENAME_LABEL) ) { xlabels.add(item.getDataSourceName()); } else { xlabels.add(item.getMonthDayYearDate()); } } } double[][] dbset = convertToDouble(dset); return renderGraphics(dbset, xlabels.toArray(new String[xlabels.size()])); } public JComponent renderGraphics(double[][] data, String[] xAxisLabels) { AxisGraph panel = new AxisGraph(); panel.setTitle(this.getTitle()); panel.setData(data); panel.setXAxisLabels(xAxisLabels); panel.setYAxisLabels(this.getYLabel()); panel.setXAxisTitle(this.getFormattedXAxis()); panel.setYAxisTitle(this.getYAxis()); // we should make this configurable eventually int width = getWidth(); int height = getHeight(); panel.setPreferredSize(new Dimension(width,height)); panel.setSize(new Dimension(width,height)); panel.setWidth(width); panel.setHeight(width); setBufferedImage(new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB)); panel.paintComponent(this.getBufferedImage().createGraphics()); return panel; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/ReportPlan.java0000644000175000017500000001510112032647222026463 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.IOException; import java.io.Serializable; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportPlan extends AbstractTestElement implements Serializable, TestStateListener { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); public static final String REPORT_PAGE = "ReportPlan.report_page"; public static final String USER_DEFINED_VARIABLES = "ReportPlan.user_defined_variables"; public static final String REPORT_COMMENTS = "ReportPlan.comments"; public static final String BASEDIR = "ReportPlan.basedir"; private transient List reportPages = new LinkedList(); private transient List configs = new LinkedList(); private static final List itemsCanAdd = new LinkedList(); //private static ReportPlan plan; // There's only 1 test plan, so can cache the mode here private static volatile boolean functionalMode = false; static { itemsCanAdd.add(JMeterUtils.getResString("report_page")); } public ReportPlan() { this(JMeterUtils.getResString("report_plan")); } public ReportPlan(String name) { setName(name); setProperty(new CollectionProperty(REPORT_PAGE, reportPages)); } public void setUserDefinedVariables(Arguments vars) { setProperty(new TestElementProperty(USER_DEFINED_VARIABLES, vars)); } public String getBasedir() { return getPropertyAsString(BASEDIR); } public void setBasedir(String b) { setProperty(BASEDIR, b); } public Map getUserDefinedVariables() { Arguments args = getVariables(); return args.getArgumentsAsMap(); } private Arguments getVariables() { Arguments args = (Arguments) getProperty(USER_DEFINED_VARIABLES).getObjectValue(); if (args == null) { args = new Arguments(); setUserDefinedVariables(args); } return args; } /** * Gets the static copy of the functional mode * * @return mode */ public static boolean getFunctionalMode() { return functionalMode; } public void addParameter(String name, String value) { getVariables().addArgument(name, value); } // FIXME Wrong code that create different constructor for static field depending on caller // public static ReportPlan createReportPlan(String name) { // if (plan == null) { // if (name == null) { // plan = new ReportPlan(); // } else { // plan = new ReportPlan(name); // } // plan.setProperty(new StringProperty(TestElement.GUI_CLASS, "org.apache.jmeter.control.gui.ReportGui")); // } // return plan; // } @Override public void addTestElement(TestElement tg) { super.addTestElement(tg); if (tg instanceof AbstractThreadGroup && !isRunningVersion()) { addReportPage((AbstractThreadGroup) tg); } } public void addJMeterComponent(TestElement child) { if (child instanceof AbstractThreadGroup) { addReportPage((AbstractThreadGroup) child); } } /** * Gets the ThreadGroups attribute of the TestPlan object. * * @return the ThreadGroups value */ public Collection getReportPages() { return reportPages; } /** * Adds a feature to the ConfigElement attribute of the TestPlan object. * * @param c * the feature to be added to the ConfigElement attribute */ public void addConfigElement(ConfigElement c) { configs.add(c); } /** * Adds a feature to the AbstractThreadGroup attribute of the TestPlan object. * * @param group * the feature to be added to the AbstractThreadGroup attribute */ public void addReportPage(AbstractThreadGroup group) { reportPages.add(group); } /* * (non-Javadoc) * * @see org.apache.jmeter.testelement.TestStateListener#testEnded() */ public void testEnded() { try { FileServer.getFileServer().closeFiles(); } catch (IOException e) { log.error("Problem closing files at end of test", e); } } /* * (non-Javadoc) * * @see org.apache.jmeter.testelement.TestStateListener#testEnded(java.lang.String) */ public void testEnded(String host) { testEnded(); } /* * (non-Javadoc) * * @see org.apache.jmeter.testelement.TestStateListener#testStarted() */ public void testStarted() { if (getBasedir() != null && getBasedir().length() > 0) { try { FileServer.getFileServer().setBasedir(FileServer.getFileServer().getBaseDir() + getBasedir()); } catch (IllegalStateException e) { log.error("Failed to set file server base dir with " + getBasedir(), e); } } } /* * (non-Javadoc) * * @see org.apache.jmeter.testelement.TestStateListener#testStarted(java.lang.String) */ public void testStarted(String host) { testStarted(); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/AbstractChart.java0000644000175000017500000001740012032647222027126 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.awt.image.BufferedImage; import java.util.List; import javax.swing.JComponent; import org.apache.jmeter.report.DataSet; import org.apache.jmeter.report.ReportChart; import org.apache.jmeter.visualizers.SamplingStatCalculator; import org.apache.jorphan.util.JOrphanUtils; /** * The general idea of the chart graphs information for a table. * A chart can only be generated from a specific table, though more * than one chart can be generated from a single table. * */ public abstract class AbstractChart extends AbstractTestElement implements ReportChart { private static final long serialVersionUID = 240L; public static final String REPORT_CHART_X_AXIS = "ReportChart.chart.x.axis"; public static final String REPORT_CHART_Y_AXIS = "ReportChart.chart.y.axis"; public static final String REPORT_CHART_X_LABEL = "ReportChart.chart.x.label"; public static final String REPORT_CHART_Y_LABEL = "ReportChart.chart.y.label"; public static final String REPORT_CHART_TITLE = "ReportChart.chart.title"; public static final String REPORT_CHART_CAPTION = "ReportChart.chart.caption"; public static final String REPORT_CHART_WIDTH = "ReportChart.chart.width"; public static final String REPORT_CHART_HEIGHT = "ReportChart.chart.height"; public static final int DEFAULT_WIDTH = 350; public static final int DEFAULT_HEIGHT = 350; public static final String X_DATA_FILENAME_LABEL = "Filename"; public static final String X_DATA_DATE_LABEL = "Date"; public static final String[] X_LABELS = { X_DATA_FILENAME_LABEL, X_DATA_DATE_LABEL }; protected BufferedImage image = null; public AbstractChart() { super(); } public String getXAxis() { return getPropertyAsString(REPORT_CHART_X_AXIS); } public String getFormattedXAxis() { String text = getXAxis(); if (text.indexOf('.') > -1) { text = text.substring(text.indexOf('.') + 1); text = JOrphanUtils.replaceAllChars(text,'_'," "); } return text; } public void setXAxis(String field) { setProperty(REPORT_CHART_X_AXIS,field); } public String getYAxis() { return getPropertyAsString(REPORT_CHART_Y_AXIS); } public void setYAxis(String scale) { setProperty(REPORT_CHART_Y_AXIS,scale); } public String getXLabel() { return getPropertyAsString(REPORT_CHART_X_LABEL); } /** * The X data labels should be either the filename, date or some * other series of values * @param label */ public void setXLabel(String label) { setProperty(REPORT_CHART_X_LABEL,label); } public String getYLabel() { return getPropertyAsString(REPORT_CHART_Y_LABEL); } public void setYLabel(String label) { setProperty(REPORT_CHART_Y_LABEL,label); } /** * The title is a the name for the chart. A page link will * be generated using the title. The title will also be * used for a page index. * @return chart title */ public String getTitle() { return getPropertyAsString(REPORT_CHART_TITLE); } /** * The title is a the name for the chart. A page link will * be generated using the title. The title will also be * used for a page index. * @param title */ public void setTitle(String title) { setProperty(REPORT_CHART_TITLE,title); } /** * The caption is a description for the chart explaining * what the chart means. * @return caption */ public String getCaption() { return getPropertyAsString(REPORT_CHART_CAPTION); } /** * The caption is a description for the chart explaining * what the chart means. * @param caption */ public void setCaption(String caption) { setProperty(REPORT_CHART_CAPTION,caption); } /** * if no width is set, the default is returned * @return width */ public int getWidth() { int w = getPropertyAsInt(REPORT_CHART_WIDTH); if (w <= 0) { return DEFAULT_WIDTH; } else { return w; } } /** * set the width of the graph * @param width */ public void setWidth(String width) { setProperty(REPORT_CHART_WIDTH,String.valueOf(width)); } /** * if the height is not set, the default is returned * @return height */ public int getHeight() { int h = getPropertyAsInt(REPORT_CHART_HEIGHT); if (h <= 0) { return DEFAULT_HEIGHT; } else { return h; } } /** * set the height of the graph * @param height */ public void setHeight(String height) { setProperty(REPORT_CHART_HEIGHT,String.valueOf(height)); } /** * Subclasses will need to implement the method by doing the following: * 1. get the x and y axis * 2. filter the table data * 3. pass the data to the chart library * 4. return the generated chart */ public abstract JComponent renderChart(List data); /** * this makes it easy to get the bufferedImage * @return image */ public BufferedImage getBufferedImage() { return this.image; } /** * in case an user wants set the bufferdImage * @param img */ public void setBufferedImage(BufferedImage img) { this.image = img; } /** * convienance method for getting the selected value. Rather than use * Method.invoke(Object,Object[]), it's simpler to just check which * column is selected and call the method directly. * @param stat * @return value */ public double getValue(SamplingStatCalculator stat) { if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_50_PERCENT)) { return stat.getPercentPoint(.50).doubleValue(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_90_PERCENT)){ return stat.getPercentPoint(.90).doubleValue(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_ERROR_RATE)) { return stat.getErrorPercentage(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MAX)) { return stat.getMax().doubleValue(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MEAN)) { return stat.getMean(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MEDIAN)) { return stat.getMedian().doubleValue(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_MIN)) { return stat.getMin().doubleValue(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_RESPONSE_RATE)) { return stat.getRate(); } else if (this.getXAxis().equals(AbstractTable.REPORT_TABLE_TRANSFER_RATE)) { // return the pagesize divided by 1024 to get kilobytes return stat.getKBPerSecond(); } else { return Double.NaN; } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/Table.java0000644000175000017500000000245312032647222025432 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.util.List; public class Table extends AbstractTable { private static final long serialVersionUID = 240L; public Table() { super(); } /** * for now the method isn't implemented. I still need to decide how * it should be implemented. */ @SuppressWarnings("rawtypes") // TODO fix this when there is a real implementation @Override public String[][] getTableData(List data) { return new String[0][0]; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/AbstractTable.java0000644000175000017500000001147512032647222027122 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.util.List; import org.apache.jmeter.report.ReportTable; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * AbstractTable is the base Element for different kinds of report tables. * */ public abstract class AbstractTable extends AbstractTestElement implements ReportTable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); public static final String REPORT_TABLE_MEAN = "ReportTable.Mean"; public static final String REPORT_TABLE_MEDIAN = "ReportTable.Median"; public static final String REPORT_TABLE_MAX = "ReportTable.Max"; public static final String REPORT_TABLE_MIN = "ReportTable.Min"; public static final String REPORT_TABLE_RESPONSE_RATE = "ReportTable.Response_rate"; public static final String REPORT_TABLE_TRANSFER_RATE = "ReportTable.Transfer_rate"; public static final String REPORT_TABLE_50_PERCENT = "ReportTable.50_percent"; public static final String REPORT_TABLE_90_PERCENT = "ReportTable.90_percent"; public static final String REPORT_TABLE_ERROR_RATE = "ReportTable.Error.rate"; public static final String[] items = { REPORT_TABLE_MEAN, REPORT_TABLE_MEDIAN, REPORT_TABLE_MAX, REPORT_TABLE_MIN, REPORT_TABLE_RESPONSE_RATE, REPORT_TABLE_TRANSFER_RATE, REPORT_TABLE_50_PERCENT, REPORT_TABLE_90_PERCENT, REPORT_TABLE_ERROR_RATE }; public static final String REPORT_TABLE_TOTAL = "ReportTable.total"; public static final String REPORT_TABLE_URL = "ReportTable.url"; public static final String[] xitems = { REPORT_TABLE_TOTAL, REPORT_TABLE_URL }; public AbstractTable() { super(); } public boolean getMean() { return getPropertyAsBoolean(REPORT_TABLE_MEAN); } public void setMean(String set) { setProperty(REPORT_TABLE_MEAN,set); } public boolean getMedian() { return getPropertyAsBoolean(REPORT_TABLE_MEDIAN); } public void setMedian(String set) { setProperty(REPORT_TABLE_MEDIAN,set); } public boolean getMax() { return getPropertyAsBoolean(REPORT_TABLE_MAX); } public void setMax(String set) { setProperty(REPORT_TABLE_MAX,set); } public boolean getMin() { return getPropertyAsBoolean(REPORT_TABLE_MIN); } public void setMin(String set) { setProperty(REPORT_TABLE_MIN,set); } public boolean getResponseRate() { return getPropertyAsBoolean(REPORT_TABLE_RESPONSE_RATE); } public void setResponseRate(String set) { setProperty(REPORT_TABLE_RESPONSE_RATE,set); } public boolean getTransferRate() { return getPropertyAsBoolean(REPORT_TABLE_TRANSFER_RATE); } public void setTransferRate(String set) { setProperty(REPORT_TABLE_TRANSFER_RATE,set); } public boolean get50Percent() { return getPropertyAsBoolean(REPORT_TABLE_50_PERCENT); } public void set50Percent(String set) { setProperty(REPORT_TABLE_50_PERCENT,set); } public boolean get90Percent() { return getPropertyAsBoolean(REPORT_TABLE_90_PERCENT); } public void set90Percent(String set) { setProperty(REPORT_TABLE_90_PERCENT,set); } public boolean getErrorRate() { return getPropertyAsBoolean(REPORT_TABLE_ERROR_RATE); } public void setErrorRate(String set) { setProperty(REPORT_TABLE_ERROR_RATE,set); } @Override public void addTestElement(TestElement el) { if (el != null) { super.addTestElement(el); log.info("TestElement: " + el.getClass().getName()); } } /** * method isn't implemented and is left abstract. Subclasses * need to filter the data in the list and return statistics. * The statistics should be like the aggregate listener. */ @SuppressWarnings("rawtypes") // TODO fix this when there is a real implementation public abstract String[][] getTableData(List data); } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/ReportPage.java0000644000175000017500000000573312032647222026457 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; //import org.apache.jorphan.logging.LoggingManager; //import org.apache.log.Logger; /** * ReportPage * */ public class ReportPage extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; // private static final Logger log = LoggingManager.getLoggerForClass(); public static final String REPORT_PAGE_TITLE = "ReportPage.title"; public static final String REPORT_PAGE_INDEX = "ReportPage.index"; public static final String REPORT_PAGE_CSS = "ReportPage.css"; public static final String REPORT_PAGE_HEADER = "ReportPage.header"; public static final String REPORT_PAGE_FOOTER = "ReportPage.footer"; public static final String REPORT_PAGE_INTRO = "ReportPage.intro"; /** * No-arg constructor. */ public ReportPage() { } public static ReportPage createReportPage(String name) { ReportPage page = new ReportPage(); return page; } public String getTitle() { return getPropertyAsString(REPORT_PAGE_TITLE); } public void setTitle(String title) { setProperty(REPORT_PAGE_TITLE,title); } public boolean getIndex() { return getPropertyAsBoolean(REPORT_PAGE_INDEX); } public void setIndex(String makeIndex) { setProperty(REPORT_PAGE_INDEX,makeIndex); } public String getCSS() { return getPropertyAsString(REPORT_PAGE_CSS); } public void setCSS(String css) { setProperty(REPORT_PAGE_CSS,css); } public String getHeaderURL() { return getPropertyAsString(REPORT_PAGE_HEADER); } public void setHeaderURL(String url) { setProperty(REPORT_PAGE_HEADER,url); } public String getFooterURL() { return getPropertyAsString(REPORT_PAGE_FOOTER); } public void setFooterURL(String url) { setProperty(REPORT_PAGE_FOOTER,url); } public String getIntroduction() { return getPropertyAsString(REPORT_PAGE_INTRO); } public void setIntroduction(String intro) { setProperty(REPORT_PAGE_INTRO,intro); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/LineChart.java0000644000175000017500000001224612032647222026255 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.awt.BasicStroke; import java.awt.Dimension; import java.awt.Shape; import java.awt.Stroke; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.JComponent; import org.apache.jmeter.report.DataSet; import org.apache.jmeter.visualizers.LineGraph; import org.apache.jmeter.visualizers.SamplingStatCalculator; import org.jCharts.properties.PointChartProperties; public class LineChart extends AbstractChart { private static final long serialVersionUID = 240L; private static final String URL_DELIM = ","; //$NON-NLS-1$ private static final String REPORT_CHART_URLS = "ReportChart.chart.urls"; //$NON-NLS-1$ private static final Shape[] SHAPE_ARRAY = {PointChartProperties.SHAPE_CIRCLE, PointChartProperties.SHAPE_DIAMOND,PointChartProperties.SHAPE_SQUARE, PointChartProperties.SHAPE_TRIANGLE}; private int shape_counter = 0; public LineChart() { super(); } public String getURLs() { return getPropertyAsString(REPORT_CHART_URLS); } public void setURLs(String urls) { setProperty(REPORT_CHART_URLS,urls); } private double[][] convertToDouble(List data) { String[] urls = this.getURLs().split(URL_DELIM); double[][] dataset = new double[urls.length][data.size()]; for (int idx=0; idx < urls.length; idx++) { for (int idz=0; idz < data.size(); idz++) { DataSet dset = data.get(idz); SamplingStatCalculator ss = dset.getStatistics(urls[idx]); dataset[idx][idz] = getValue(ss); } } return dataset; } @Override public JComponent renderChart(List dataset) { ArrayList dset = new ArrayList(); ArrayList xlabels = new ArrayList(); Iterator itr = dataset.iterator(); while (itr.hasNext()) { DataSet item = itr.next(); if (item != null) { // we add the entry dset.add(item); if ( getXLabel().equals(X_DATA_FILENAME_LABEL) ) { xlabels.add(item.getDataSourceName()); } else { xlabels.add(item.getMonthDayYearDate()); } } } double[][] dbset = convertToDouble(dset); return renderGraphics(dbset, xlabels.toArray(new String[xlabels.size()])); } public JComponent renderGraphics(double[][] data, String[] xAxisLabels) { LineGraph panel = new LineGraph(); panel.setTitle(this.getTitle()); panel.setData(data); panel.setXAxisLabels(xAxisLabels); panel.setYAxisLabels(this.getURLs().split(URL_DELIM)); panel.setXAxisTitle(this.getFormattedXAxis()); panel.setYAxisTitle(this.getYAxis()); // we should make this configurable eventually int _width = getWidth(); int _height = getHeight(); panel.setPreferredSize(new Dimension(_width,_height)); panel.setSize(new Dimension(_width,_height)); panel.setWidth(_width); panel.setHeight(_width); setBufferedImage(new BufferedImage(_width,_height,BufferedImage.TYPE_INT_RGB)); panel.paintComponent(this.getBufferedImage().createGraphics()); return panel; } /** * Since we only have 4 shapes, the method will start with the * first shape and keep cycling through the shapes in order. * @param count * @return array of shapes */ public Shape[] createShapes(int count) { Shape[] shapes = new Shape[count]; for (int idx=0; idx < count; idx++) { shapes[idx] = nextShape(); } return shapes; } /** * Return the next shape * @return the shape */ public Shape nextShape() { if (shape_counter >= (SHAPE_ARRAY.length - 1)) { shape_counter = 0; } return SHAPE_ARRAY[shape_counter]; } /** * * @param count * @return array of strokes */ public Stroke[] createStrokes(int count) { Stroke[] str = new Stroke[count]; for (int idx=0; idx < count; idx++) { str[idx] = nextStroke(); } return str; } public Stroke nextStroke() { return new BasicStroke(1.5f); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/testelement/JTLData.java0000644000175000017500000001533612032647222025632 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.testelement; import java.io.File; import java.io.Serializable; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import org.apache.jmeter.report.DataSet; import org.apache.jmeter.reporters.ResultCollector; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.visualizers.SamplingStatCalculator; /** * * The purpose of TableData is to contain the results of a single .jtl file. * It is equivalent to what the AggregateListener table. A HashMap is used * to store the data. The URL is the key and the value is SamplingStatCalculator */ public class JTLData implements Serializable, DataSet { private static final long serialVersionUID = 240L; private final HashMap data = new HashMap(); private String jtl_file = null; private long startTimestamp = 0; private long endTimestamp = 0; private transient File inputFile = null; /** * */ public JTLData() { super(); } /** * Return a Set of the URLs * @return set of URLs */ public Set getURLs() { return this.data.keySet(); } /** * Return a Set of the values * @return values */ public Set getStats() { return (Set) this.data.values(); } /** * The purpose of the method is to make it convienant to pass a list * of the URLs and return a list of the SamplingStatCalculators. If * no URLs match, the list is empty. * TODO - this method seems to be wrong - it does not agree with the Javadoc * The SamplingStatCalculators will be returned in the same sequence * as the url list. * @param urls * @return array list of non-null entries (may be empty) */ @SuppressWarnings({ "rawtypes", "unchecked" }) // Method is broken anyway public List getStats(List urls) { ArrayList items = new ArrayList(); Iterator itr = urls.iterator(); if (itr.hasNext()) { SamplingStatCalculator row = (SamplingStatCalculator)itr.next(); if (row != null) { items.add(row); } } return items; } public void setDataSource(String absolutePath) { this.jtl_file = absolutePath; } public String getDataSource() { return this.jtl_file; } public String getDataSourceName() { if (inputFile == null) { inputFile = new File(getDataSource()); } return inputFile.getName().substring(0,inputFile.getName().length() - 4); } public void setStartTimestamp(long stamp) { this.startTimestamp = stamp; } public long getStartTimestamp() { return this.startTimestamp; } public void setEndTimestamp(long stamp) { this.endTimestamp = stamp; } public long getEndTimestamp() { return this.endTimestamp; } /** * The date we use for the result is the start timestamp. The * reasoning is that a test may run for a long time, but it * is most likely scheduled to run using CRON on unix or * scheduled task in windows. * @return start time */ public Date getDate() { return new Date(this.startTimestamp); } public String getMonthDayDate() { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(this.startTimestamp); return String.valueOf(cal.get(Calendar.MONTH)) + " - " + String.valueOf(cal.get(Calendar.DAY_OF_MONTH)); } public String getMonthDayYearDate() { Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(this.startTimestamp); return String.valueOf(cal.get(Calendar.MONTH)) + " - " + String.valueOf(cal.get(Calendar.DAY_OF_MONTH)) + " - " + String.valueOf(cal.get(Calendar.YEAR)); } /** * The method will SamplingStatCalculator for the given URL. If the URL * doesn't exist, the method returns null. * @param url * @return data for this URL */ public SamplingStatCalculator getStatistics(String url) { if (this.data.containsKey(url)) { return this.data.get(url); } else { return null; } } /** * The implementation loads a single .jtl file and cleans up the * ResultCollector. */ public void loadData() { if (this.getDataSource() != null) { ResultCollector rc = new ResultCollector(); rc.setFilename(this.getDataSource()); rc.setListener(this); rc.loadExistingFile(); // we clean up the ResultCollector to make sure there's // no slow leaks rc.clear(); rc.setListener(null); } } /** * the implementation will set the start timestamp if the HashMap * is empty. otherwise it will set the end timestamp using the * end time */ public void add(SampleResult sample) { if (data.size() == 0) { this.startTimestamp = sample.getStartTime(); } else { this.endTimestamp = sample.getEndTime(); } // now add the samples to the HashMap String url = sample.getSampleLabel(); if (url == null) { url = sample.getURL().toString(); } SamplingStatCalculator row = data.get(url); if (row == null) { row = new SamplingStatCalculator(url); // just like the aggregate listener, we use the sample label to represent // a row. in this case, we use it as a key. this.data.put(url,row); } row.addSample(sample); } /** * By default, the method always returns true. Subclasses can over * ride the implementation. */ public boolean isStats() { return true; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/0000755000175000017500000000000012165514773022531 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/0000755000175000017500000000000012165514773024230 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/DefaultReportSummary.java0000644000175000017500000000434612032647222031225 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; import java.util.ArrayList; import java.util.Iterator; /** * The default implementation of ReportSummary just contains the stats * and basic information. It doesn't contain the actual report. In the * future we may want to implement a version with all the details to * display in a Swing GUI. */ public class DefaultReportSummary implements ReportSummary { private final ArrayList pages = new ArrayList(); /** * */ public DefaultReportSummary() { super(); } /** * Add a PageSummary to the report */ public void addPageSummary(PageSummary summary) { this.pages.add(summary); } /** * current implementation simply iterates over the Page summaries * and adds the times. */ public long getElapsedTime() { long elpasedTime = 0; Iterator itr = this.pages.iterator(); while (itr.hasNext()) { elpasedTime += itr.next().getElapsedTime(); } return elpasedTime; } /** * The current implementation calls ArrayList.toArray(Object[]) */ public PageSummary[] getPagesSummaries() { PageSummary[] ps = new PageSummary[this.pages.size()]; return this.pages.toArray(ps); } /** * remove a PageSummary */ public void removePageSummary(PageSummary summary) { this.pages.remove(summary); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/HTMLReportWriter.java0000644000175000017500000000246112032647222030220 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; import org.apache.jmeter.testelement.TestElement; /** * HTMLReportWriter is a basic report writer that produces HTML pages. * It contains all the necessary helper method to write out the report. * */ public class HTMLReportWriter extends AbstractReportWriter { private static final long serialVersionUID = 240L; public HTMLReportWriter() { super(); } @Override public ReportSummary writeReport(TestElement element) { return null; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/ReportWriter.java0000644000175000017500000000233712032647222027535 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; import org.apache.jmeter.testelement.TestElement; /** * * ReportWriter defines the basic operations of a report writer. A report * plan may have multiple report writers. it might be nice to have a pdf * writer in the future. */ public interface ReportWriter { ReportSummary writeReport(TestElement element); String getTargetDirectory(); void setTargetDirectory(String directory); } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/PageSummary.java0000644000175000017500000000270412032647222027315 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; /** * PageSummary defines the summary of a report page and the runtime * information for debugging and logging purposes. It's a good idea * to return summary so that automated process can start the report * and a summary of how the reports ran. */ public interface PageSummary extends Cloneable { long getElapsedTime(); long getEndTimeStamp(); String getFileName(); String getPageTitle(); long getStartTimeStamp(); boolean isSuccessful(); void pageStarted(); void pageEnded(); void setFileName(String file); void setPageTitle(String title); void setSuccessful(boolean success); } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/gui/0000755000175000017500000000000012165514773025014 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/gui/HTMLReportWriterGui.java0000644000175000017500000000645712032647222031462 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers.gui; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JPanel; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.util.ReportFilePanel; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.report.gui.AbstractReportGui; import org.apache.jmeter.report.writers.HTMLReportWriter; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class HTMLReportWriterGui extends AbstractReportGui { private static final long serialVersionUID = 240L; private ReportFilePanel outputDirectory = new ReportFilePanel( JMeterUtils.getResString("report_output_directory"), "*"); public HTMLReportWriterGui() { super(); init(); } @Override public String getLabelResource() { return "report_writer_html"; } @Override public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); ReportMenuFactory.addFileMenu(pop); ReportMenuFactory.addEditMenu(pop,true); return pop; } /** * init creates the necessary gui stuff. */ private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); setBackground(Color.white); JPanel pane = new JPanel(); pane.setLayout(new BorderLayout(10,10)); pane.setBackground(Color.white); pane.add(this.getNamePanel(),BorderLayout.NORTH); outputDirectory.setBackground(Color.white); pane.add(outputDirectory,BorderLayout.SOUTH); add(pane,BorderLayout.NORTH); } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { HTMLReportWriter element = new HTMLReportWriter(); modifyTestElement(element); return element; } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(org.apache.jmeter.testelement.TestElement) */ public void modifyTestElement(TestElement element) { this.configureTestElement(element); HTMLReportWriter wr = (HTMLReportWriter)element; wr.setTargetDirectory(outputDirectory.getFilename()); } @Override public void configure(TestElement element) { super.configure(element); HTMLReportWriter wr = (HTMLReportWriter)element; outputDirectory.setFilename(wr.getTargetDirectory()); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/DefaultPageSummary.java0000644000175000017500000000553312032647222030625 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; /** * This is a basic implementation of PageSummary interface. */ public class DefaultPageSummary implements PageSummary { private long START = 0; private long END = 0; private String title; private String fileName; private boolean success; /** * */ public DefaultPageSummary() { super(); } /** * Returns the elapsed time in milliseconds */ public long getElapsedTime() { return END - START; } public long getEndTimeStamp() { return END; } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#getFileName() */ public String getFileName() { return fileName; } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#getPageTitle() */ public String getPageTitle() { return title; } public long getStartTimeStamp() { return START; } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#isSuccessful() */ public boolean isSuccessful() { return success; } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#pageStarted() */ public void pageStarted() { START = System.currentTimeMillis(); } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#pageEnded() */ public void pageEnded() { END = System.currentTimeMillis(); } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#setFileName(java.lang.String) */ public void setFileName(String file) { this.fileName = file; } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#setPageTitle(java.lang.String) */ public void setPageTitle(String title) { this.title = title; } /* (non-Javadoc) * @see org.apache.jmeter.report.writers.PageSummary#setSuccessful(boolean) */ public void setSuccessful(boolean success) { this.success = success; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/ReportSummary.java0000644000175000017500000000336612032647222027721 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; /** * * The purpose of ReportSummary is to provide a detailed description of the * reports generated, how long it took and where the generated files are * located. */ public interface ReportSummary extends Cloneable { /** * Add a page summary to the report summary * @param summary */ void addPageSummary(PageSummary summary); /** * This should be the elapsed time to run all the reports. Classes * implementing it should simply add up the elapsed time for each * report page. * @return elapsed time */ long getElapsedTime(); /** * The method should return a list of the pages generated for the * report and whether it succeeded or not * @return page summary array */ PageSummary[] getPagesSummaries(); /** * Remove a page summary from the report summary. * @param summary */ void removePageSummary(PageSummary summary); } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/writers/AbstractReportWriter.java0000644000175000017500000000656612032647222031231 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.writers; import java.io.File; import java.util.Calendar; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; /** * The abstract report writer provides the common implementation for subclasses * to reuse. */ public abstract class AbstractReportWriter extends AbstractTestElement implements ReportWriter { private static final long serialVersionUID = 240L; public static final String TARGET_DIRECTORY = "ReportWriter.target.directory"; /** * */ public AbstractReportWriter() { super(); } /** * Subclasses need to implement this method and provide the necessary * logic to produce a ReportSummary object and write the report */ public abstract ReportSummary writeReport(TestElement element); /** * The method simply returns the target directory and doesn't * validate it. the abstract class expects some other class will * validate the target directory. */ public String getTargetDirectory() { return getPropertyAsString(TARGET_DIRECTORY); } /** * Set the target directory where the report should be saved */ public void setTargetDirectory(String directory) { setProperty(TARGET_DIRECTORY,directory); } public void makeDirectory() { File output = new File(getTargetDirectory()); if (!output.exists() || !output.isDirectory()) { if(!output.mkdir()) { throw new IllegalStateException("Could not create directory:"+output.getAbsolutePath()); } } } /** * if the target output directory already exists, archive it */ public void archiveDirectory() { File output = new File(getTargetDirectory()); if (output.exists() && output.isDirectory()) { // if the directory already exists and is a directory, // we just renamed to "archive.date" if(!output.renameTo(new File("archive." + getDayString()))) { throw new IllegalStateException("Could not rename directory:"+output.getAbsolutePath()+ " to archive." + getDayString()); } } } /** * return the day in YYYYMMDD format * @return the date */ public String getDayString() { Calendar today = Calendar.getInstance(); String year = String.valueOf(today.get(Calendar.YEAR)); String month = String.valueOf(today.get(Calendar.MONTH)); String day = String.valueOf(today.get(Calendar.DATE)); return year + month + day; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/0000755000175000017500000000000012165514773023315 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/ReportPageGui.java0000644000175000017500000001232312032647222026663 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JCheckBox; import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.ReportPage; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextArea; import org.apache.jorphan.gui.JLabeledTextField; public class ReportPageGui extends AbstractReportGui { private static final long serialVersionUID = 240L; private JLabeledTextField pageTitle = new JLabeledTextField(JMeterUtils.getResString("report_page_title")); private JCheckBox makeIndex = new JCheckBox(JMeterUtils.getResString("report_page_index")); private JLabeledTextField cssURL = new JLabeledTextField(JMeterUtils.getResString("report_page_style_url")); private JLabeledTextField headerURL = new JLabeledTextField(JMeterUtils.getResString("report_page_header")); private JLabeledTextField footerURL = new JLabeledTextField(JMeterUtils.getResString("report_page_footer")); private JLabeledTextArea introduction = new JLabeledTextArea(JMeterUtils.getResString("report_page_intro")); /** * */ public ReportPageGui() { init(); } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); setBackground(Color.white); JPanel pane = new JPanel(); pane.setLayout(new BorderLayout(10,10)); pane.setBackground(Color.white); pane.add(this.getNamePanel(),BorderLayout.NORTH); VerticalPanel options = new VerticalPanel(Color.white); pageTitle.setBackground(Color.white); makeIndex.setBackground(Color.white); cssURL.setBackground(Color.white); headerURL.setBackground(Color.white); footerURL.setBackground(Color.white); introduction.setBackground(Color.white); options.add(pageTitle); options.add(makeIndex); options.add(cssURL); options.add(headerURL); options.add(footerURL); options.add(introduction); add(pane,BorderLayout.NORTH); add(options,BorderLayout.CENTER); } @Override public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); JMenu addMenu = new JMenu(JMeterUtils.getResString("Add")); addMenu.add(ReportMenuFactory.makeMenuItem(new TableGui().getStaticLabel(), TableGui.class.getName(), "Add")); addMenu.add(ReportMenuFactory.makeMenuItem(new BarChartGui().getStaticLabel(), BarChartGui.class.getName(), "Add")); addMenu.add(ReportMenuFactory.makeMenuItem(new LineGraphGui().getStaticLabel(), LineGraphGui.class.getName(), "Add")); pop.add(addMenu); ReportMenuFactory.addFileMenu(pop); ReportMenuFactory.addEditMenu(pop,true); return pop; } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { ReportPage element = new ReportPage(); modifyTestElement(element); return element; } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(org.apache.jmeter.testelement.TestElement) */ public void modifyTestElement(TestElement element) { super.configureTestElement(element); ReportPage page = (ReportPage)element; page.setCSS(cssURL.getText()); page.setFooterURL(footerURL.getText()); page.setHeaderURL(headerURL.getText()); page.setIndex(String.valueOf(makeIndex.isSelected())); page.setIntroduction(introduction.getText()); page.setTitle(pageTitle.getText()); } @Override public void configure(TestElement element) { super.configure(element); ReportPage page = (ReportPage)element; cssURL.setText(page.getCSS()); footerURL.setText(page.getFooterURL()); headerURL.setText(page.getHeaderURL()); makeIndex.setSelected(page.getIndex()); introduction.setText(page.getIntroduction()); pageTitle.setText(page.getTitle()); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/TableGui.java0000644000175000017500000001340712032647222025646 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.Table; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class TableGui extends AbstractReportGui implements ChangeListener { private static final long serialVersionUID = 240L; private JCheckBox meanCheck = new JCheckBox(JMeterUtils.getResString("average")); private JCheckBox medianCheck = new JCheckBox(JMeterUtils.getResString("graph_results_median")); private JCheckBox maxCheck = new JCheckBox(JMeterUtils.getResString("aggregate_report_max")); private JCheckBox minCheck = new JCheckBox(JMeterUtils.getResString("aggregate_report_min")); private JCheckBox responseRateCheck = new JCheckBox(JMeterUtils.getResString("aggregate_report_rate")); private JCheckBox transferRateCheck = new JCheckBox(JMeterUtils.getResString("aggregate_report_bandwidth")); private JCheckBox fiftypercentCheck = new JCheckBox(JMeterUtils.getResString("monitor_label_left_middle")); private JCheckBox nintypercentCheck = new JCheckBox(JMeterUtils.getResString("aggregate_report_90")); private JCheckBox errorRateCheck = new JCheckBox(JMeterUtils.getResString("aggregate_report_error")); public TableGui() { super(); init(); } @Override public String getLabelResource() { return "report_table"; } /** * Initialize the components and layout of this component. */ private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); setBackground(Color.white); JPanel pane = new JPanel(); pane.setLayout(new BorderLayout(10,10)); pane.setBackground(Color.white); pane.add(this.getNamePanel(),BorderLayout.NORTH); meanCheck.addChangeListener(this); VerticalPanel options = new VerticalPanel(Color.white); meanCheck.setBackground(Color.white); medianCheck.setBackground(Color.white); maxCheck.setBackground(Color.white); minCheck.setBackground(Color.white); responseRateCheck.setBackground(Color.white); transferRateCheck.setBackground(Color.white); fiftypercentCheck.setBackground(Color.white); nintypercentCheck.setBackground(Color.white); errorRateCheck.setBackground(Color.white); options.add(meanCheck); options.add(medianCheck); options.add(maxCheck); options.add(minCheck); options.add(responseRateCheck); options.add(transferRateCheck); options.add(fiftypercentCheck); options.add(nintypercentCheck); options.add(errorRateCheck); add(pane,BorderLayout.NORTH); add(options,BorderLayout.CENTER); } @Override public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); ReportMenuFactory.addFileMenu(pop); ReportMenuFactory.addEditMenu(pop,true); return pop; } public TestElement createTestElement() { Table element = new Table(); modifyTestElement(element); return element; } public void modifyTestElement(TestElement element) { this.configureTestElement(element); Table tb = (Table)element; tb.set50Percent(String.valueOf(fiftypercentCheck.isSelected())); tb.set90Percent(String.valueOf(nintypercentCheck.isSelected())); tb.setErrorRate(String.valueOf(errorRateCheck.isSelected())); tb.setMax(String.valueOf(maxCheck.isSelected())); tb.setMean(String.valueOf(meanCheck.isSelected())); tb.setMedian(String.valueOf(medianCheck.isSelected())); tb.setMin(String.valueOf(minCheck.isSelected())); tb.setResponseRate(String.valueOf(responseRateCheck.isSelected())); tb.setTransferRate(String.valueOf(transferRateCheck.isSelected())); } @Override public void configure(TestElement element) { super.configure(element); Table tb = (Table)element; meanCheck.setSelected(tb.getMean()); medianCheck.setSelected(tb.getMedian()); maxCheck.setSelected(tb.getMax()); minCheck.setSelected(tb.getMin()); fiftypercentCheck.setSelected(tb.get50Percent()); nintypercentCheck.setSelected(tb.get90Percent()); errorRateCheck.setSelected(tb.getErrorRate()); responseRateCheck.setSelected(tb.getResponseRate()); transferRateCheck.setSelected(tb.getTransferRate()); } public void stateChanged(ChangeEvent e) { modifyTestElement(ReportGuiPackage.getInstance().getCurrentElement()); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/tree/0000755000175000017500000000000012165514773024254 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeListener.java0000644000175000017500000002363212032647222030713 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.tree; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JTree; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import org.apache.jmeter.control.gui.ReportGui; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.ReportMainFrame; import org.apache.jmeter.report.gui.action.ReportDragNDrop; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportTreeListener implements TreeSelectionListener, MouseListener, KeyListener, MouseMotionListener { private static final Logger log = LoggingManager.getLoggerForClass(); // Container endWindow; // JPopupMenu pop; private TreePath currentPath; private ActionListener actionHandler; private ReportTreeModel model; private JTree tree; private boolean dragging = false; private ReportTreeNode[] draggedNodes; private JLabel dragIcon = new JLabel(JMeterUtils.getImage("leafnode.gif")); /** * Constructor for the JMeterTreeListener object. */ public ReportTreeListener(ReportTreeModel model) { this.model = model; dragIcon.validate(); dragIcon.setVisible(true); } public ReportTreeListener() { dragIcon.validate(); dragIcon.setVisible(true); } public void setModel(ReportTreeModel m) { model = m; } /** * Sets the ActionHandler attribute of the JMeterTreeListener object. * * @param ah * the new ActionHandler value */ public void setActionHandler(ActionListener ah) { actionHandler = ah; } /** * Sets the JTree attribute of the JMeterTreeListener object. * * @param tree * the new JTree value */ public void setJTree(JTree tree) { this.tree = tree; } /** * Sets the EndWindow attribute of the JMeterTreeListener object. * * @param window * the new EndWindow value */ public void setEndWindow(Container window) { // endWindow = window; } /** * Gets the JTree attribute of the JMeterTreeListener object. * * @return tree the current JTree value. */ public JTree getJTree() { return tree; } /** * Gets the CurrentNode attribute of the JMeterTreeListener object. * * @return the CurrentNode value */ public ReportTreeNode getCurrentNode() { if (currentPath != null) { if (currentPath.getLastPathComponent() != null) { return (ReportTreeNode) currentPath.getLastPathComponent(); } else { return (ReportTreeNode) currentPath.getParentPath().getLastPathComponent(); } } else { return (ReportTreeNode) model.getRoot(); } } public ReportTreeNode[] getSelectedNodes() { TreePath[] paths = tree.getSelectionPaths(); if (paths == null) { return new ReportTreeNode[] { getCurrentNode() }; } ReportTreeNode[] nodes = new ReportTreeNode[paths.length]; for (int i = 0; i < paths.length; i++) { nodes[i] = (ReportTreeNode) paths[i].getLastPathComponent(); } return nodes; } public TreePath removedSelectedNode() { currentPath = currentPath.getParentPath(); return currentPath; } public void valueChanged(TreeSelectionEvent e) { log.debug("value changed, updating currentPath"); currentPath = e.getNewLeadSelectionPath(); actionHandler.actionPerformed(new ActionEvent(this, 3333, "edit")); } public void mouseClicked(MouseEvent ev) { } public void mouseReleased(MouseEvent e) { if (dragging && isValidDragAction(draggedNodes, getCurrentNode())) { dragging = false; JPopupMenu dragNdrop = new JPopupMenu(); JMenuItem item = new JMenuItem(JMeterUtils.getResString("Insert Before")); item.addActionListener(actionHandler); item.setActionCommand(ReportDragNDrop.INSERT_BEFORE); dragNdrop.add(item); item = new JMenuItem(JMeterUtils.getResString("Insert After")); item.addActionListener(actionHandler); item.setActionCommand(ReportDragNDrop.INSERT_AFTER); dragNdrop.add(item); item = new JMenuItem(JMeterUtils.getResString("Add as Child")); item.addActionListener(actionHandler); item.setActionCommand(ReportDragNDrop.ADD); dragNdrop.add(item); dragNdrop.addSeparator(); item = new JMenuItem(JMeterUtils.getResString("Cancel")); dragNdrop.add(item); displayPopUp(e, dragNdrop); } else { ReportGuiPackage.getInstance().getMainFrame().repaint(); } dragging = false; } public ReportTreeNode[] getDraggedNodes() { return draggedNodes; } /** * Tests if the node is being dragged into one of it's own sub-nodes, or * into itself. */ private boolean isValidDragAction(ReportTreeNode[] source, ReportTreeNode dest) { boolean isValid = true; TreeNode[] path = dest.getPath(); for (int i = 0; i < path.length; i++) { if (contains(source, path[i])) { isValid = false; } } return isValid; } public void mouseEntered(MouseEvent e) { } private void changeSelectionIfDragging(MouseEvent e) { if (dragging) { ReportGuiPackage.getInstance().getMainFrame().drawDraggedComponent(dragIcon, e.getX(), e.getY()); if (tree.getPathForLocation(e.getX(), e.getY()) != null) { currentPath = tree.getPathForLocation(e.getX(), e.getY()); if (!contains(draggedNodes, getCurrentNode())) { tree.setSelectionPath(currentPath); } } } } private boolean contains(Object[] container, Object item) { for (int i = 0; i < container.length; i++) { if (container[i] == item) { return true; } } return false; } public void mousePressed(MouseEvent e) { // Get the Main Frame. ReportMainFrame mainFrame = ReportGuiPackage.getInstance().getMainFrame(); // Close any Main Menu that is open mainFrame.closeMenu(); int selRow = tree.getRowForLocation(e.getX(), e.getY()); if (tree.getPathForLocation(e.getX(), e.getY()) != null) { log.debug("mouse pressed, updating currentPath"); currentPath = tree.getPathForLocation(e.getX(), e.getY()); } if (selRow != -1) { // updateMainMenu(((JMeterGUIComponent) // getCurrentNode().getUserObject()).createPopupMenu()); if (isRightClick(e)) { if (tree.getSelectionCount() < 2) { tree.setSelectionPath(currentPath); } if (getCurrentNode() != null) { log.debug("About to display pop-up"); displayPopUp(e); } } } } public void mouseDragged(MouseEvent e) { if (!dragging) { dragging = true; draggedNodes = getSelectedNodes(); if (draggedNodes[0].getUserObject() instanceof ReportGui) { dragging = false; } } changeSelectionIfDragging(e); } public void mouseMoved(MouseEvent e) { } public void mouseExited(MouseEvent ev) { } public void keyPressed(KeyEvent e) { } public void keyReleased(KeyEvent e) { } public void keyTyped(KeyEvent e) { } private boolean isRightClick(MouseEvent e) { return e.isPopupTrigger() || (InputEvent.BUTTON2_MASK & e.getModifiers()) > 0 || (InputEvent.BUTTON3_MASK == e.getModifiers()); } /* * NOTUSED private void updateMainMenu(JPopupMenu menu) { try { MainFrame * mainFrame = GuiPackage.getInstance().getMainFrame(); * mainFrame.setEditMenu(menu); } catch (NullPointerException e) { * log.error("Null pointer: JMeterTreeListener.updateMenuItem()", e); * log.error("", e); } } */ private void displayPopUp(MouseEvent e) { JPopupMenu pop = getCurrentNode().createPopupMenu(); ReportGuiPackage.getInstance().displayPopUp(e, pop); } private void displayPopUp(MouseEvent e, JPopupMenu popup) { log.warn("Shouldn't be here"); if (popup != null) { popup.pack(); popup.show(tree, e.getX(), e.getY()); popup.setVisible(true); popup.requestFocus(); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeNode.java0000644000175000017500000001311112032647222030002 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.tree; import java.awt.Image; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.util.Collection; import javax.swing.ImageIcon; import javax.swing.JPopupMenu; import javax.swing.tree.DefaultMutableTreeNode; import org.apache.jmeter.gui.GUIFactory; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.tree.NamedTreeNode; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportTreeNode extends DefaultMutableTreeNode implements NamedTreeNode { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private final ReportTreeModel treeModel; // boolean enabled = true; public ReportTreeNode() {// Allow serializable test to work // TODO: is the serializable test necessary now that JMeterTreeNode is // no longer a GUI component? this(null, null); } public ReportTreeNode(TestElement userObj, ReportTreeModel treeModel) { super(userObj); this.treeModel = treeModel; } public boolean isEnabled() { return ((AbstractTestElement) getTestElement()) .getPropertyAsBoolean(TestElement.ENABLED); } public void setEnabled(boolean enabled) { getTestElement().setProperty( new BooleanProperty(TestElement.ENABLED, enabled)); treeModel.nodeChanged(this); } public ImageIcon getIcon() { return getIcon(true); } public ImageIcon getIcon(boolean enabled) { try { if (getTestElement() instanceof TestBean) { try { Image img = Introspector.getBeanInfo( getTestElement().getClass()).getIcon( BeanInfo.ICON_COLOR_16x16); // If icon has not been defined, then use GUI_CLASS property if (img == null) {// Object clazz = Introspector.getBeanInfo( getTestElement().getClass()) .getBeanDescriptor().getValue( TestElement.GUI_CLASS); if (clazz == null) { log.error("Can't obtain GUI class for " + getTestElement().getClass().getName()); return null; } return GUIFactory.getIcon( Class.forName((String) clazz), enabled); } return new ImageIcon(img); } catch (IntrospectionException e1) { log.error("Can't obtain icon", e1); throw new org.apache.jorphan.util.JMeterError(e1); } } else { return GUIFactory.getIcon(Class.forName(getTestElement() .getPropertyAsString(TestElement.GUI_CLASS)), enabled); } } catch (ClassNotFoundException e) { log.warn("Can't get icon for class " + getTestElement(), e); return null; } } public Collection getMenuCategories() { try { return ReportGuiPackage.getInstance().getGui(getTestElement()) .getMenuCategories(); } catch (Exception e) { log.error("Can't get popup menu for gui", e); return null; } } public JPopupMenu createPopupMenu() { try { return ReportGuiPackage.getInstance().getGui(getTestElement()) .createPopupMenu(); } catch (Exception e) { log.error("Can't get popup menu for gui", e); return null; } } public TestElement getTestElement() { return (TestElement) getUserObject(); } public String getStaticLabel() { return ReportGuiPackage.getInstance().getGui((TestElement) getUserObject()) .getStaticLabel(); } public String getDocAnchor() { return ReportGuiPackage.getInstance().getGui((TestElement) getUserObject()) .getDocAnchor(); } /** {@inheritDoc} */ public void setName(String name) { ((TestElement) getUserObject()).setName(name); } /** {@inheritDoc} */ public String getName() { return ((TestElement) getUserObject()).getName(); } /** {@inheritDoc} */ public void nameChanged() { treeModel.nodeChanged(this); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/tree/ReportCellRenderer.java0000644000175000017500000000417012032647222030650 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.tree; import java.awt.Component; import javax.swing.ImageIcon; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; public class ReportCellRenderer extends DefaultTreeCellRenderer { private static final long serialVersionUID = 240L; public ReportCellRenderer() { } @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean p_hasFocus) { super.getTreeCellRendererComponent(tree, ((ReportTreeNode) value).getName(), sel, expanded, leaf, row, p_hasFocus); boolean enabled = ((ReportTreeNode) value).isEnabled(); ImageIcon ic = ((ReportTreeNode) value).getIcon(enabled); if (ic != null) { if (enabled) { setIcon(ic); } else { setDisabledIcon(ic); } } else { if (!enabled)// i.e. no disabled icon found { // Must therefore set the enabled icon so there is at least some // icon ic = ((ReportTreeNode) value).getIcon(); if (ic != null) { setIcon(ic); } } } this.setEnabled(enabled); return this; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/tree/ReportTreeModel.java0000644000175000017500000001550412032647222030165 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.tree; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javax.swing.tree.DefaultTreeModel; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.control.gui.ReportGui; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.ReportPlan; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.ListedHashTree; public class ReportTreeModel extends DefaultTreeModel { private static final long serialVersionUID = 240L; public ReportTreeModel() { super(new ReportTreeNode(new ReportGui().createTestElement(), null)); initTree(); } /** * Returns a list of tree nodes that hold objects of the given class type. * If none are found, an empty list is returned. */ public List getNodesOfType(Class type) { List nodeList = new LinkedList(); traverseAndFind(type, (ReportTreeNode) this.getRoot(), nodeList); return nodeList; } /** * Get the node for a given TestElement object. */ public ReportTreeNode getNodeOf(TestElement userObject) { return traverseAndFind(userObject, (ReportTreeNode) getRoot()); } /** * Adds the sub tree at the given node. Returns a boolean indicating whether * the added sub tree was a full test plan. */ public HashTree addSubTree(HashTree subTree, ReportTreeNode current) throws IllegalUserActionException { Iterator iter = subTree.list().iterator(); while (iter.hasNext()) { TestElement item = (TestElement) iter.next(); if (item instanceof ReportPlan) { current = (ReportTreeNode) ((ReportTreeNode) getRoot()) .getChildAt(0); ((TestElement) current.getUserObject()).addTestElement(item); ((ReportPlan) current.getUserObject()).setName(item.getName()); addSubTree(subTree.getTree(item), current); } else { if (subTree.getTree(item) != null) { addSubTree(subTree.getTree(item), addComponent(item, current)); } } } return getCurrentSubTree(current); } public ReportTreeNode addComponent(TestElement component, ReportTreeNode node) throws IllegalUserActionException { if (node.getUserObject() instanceof AbstractConfigGui) { throw new IllegalUserActionException( "This node cannot hold sub-elements"); } ReportGuiPackage.getInstance().updateCurrentNode(); JMeterGUIComponent guicomp = ReportGuiPackage.getInstance().getGui(component); guicomp.configure(component); guicomp.modifyTestElement(component); ReportGuiPackage.getInstance().getCurrentGui(); // put the gui object back // to the way it was. ReportTreeNode newNode = new ReportTreeNode(component, this); // This check the state of the TestElement and if returns false it // disable the loaded node try { if (component.getProperty(TestElement.ENABLED) instanceof NullProperty || component.getPropertyAsBoolean(TestElement.ENABLED)) { newNode.setEnabled(true); } else { newNode.setEnabled(false); } } catch (Exception e) { newNode.setEnabled(true); } this.insertNodeInto(newNode, node, node.getChildCount()); return newNode; } public void removeNodeFromParent(ReportTreeNode node) { if (!(node.getUserObject() instanceof ReportPlan)) { super.removeNodeFromParent(node); } } private void traverseAndFind(Class type, ReportTreeNode node, List nodeList) { if (type.isInstance(node.getUserObject())) { nodeList.add(node); } @SuppressWarnings("unchecked") // OK Enumeration enumNode = node.children(); while (enumNode.hasMoreElements()) { ReportTreeNode child = enumNode.nextElement(); traverseAndFind(type, child, nodeList); } } private ReportTreeNode traverseAndFind(TestElement userObject, ReportTreeNode node) { if (userObject == node.getUserObject()) { return node; } @SuppressWarnings("unchecked") // OK Enumeration enumNode = node.children(); while (enumNode.hasMoreElements()) { ReportTreeNode child = enumNode.nextElement(); ReportTreeNode result = traverseAndFind(userObject, child); if (result != null) { return result; } } return null; } public HashTree getCurrentSubTree(ReportTreeNode node) { ListedHashTree hashTree = new ListedHashTree(node); @SuppressWarnings("unchecked") // OK Enumeration enumNode = node.children(); while (enumNode.hasMoreElements()) { ReportTreeNode child = enumNode.nextElement(); hashTree.add(node, getCurrentSubTree(child)); } return hashTree; } public HashTree getReportPlan() { return getCurrentSubTree((ReportTreeNode) ((ReportTreeNode) this .getRoot()).getChildAt(0)); } public void clearTestPlan() { super.removeNodeFromParent((ReportTreeNode) getChild(getRoot(), 0)); initTree(); } private void initTree() { TestElement rp = new ReportGui().createTestElement(); this.insertNodeInto(new ReportTreeNode(rp, this), (ReportTreeNode) getRoot(), 0); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/BarChartGui.java0000644000175000017500000001246012032647222026303 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui; import javax.swing.border.EmptyBorder; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.AbstractChart; import org.apache.jmeter.testelement.AbstractTable; import org.apache.jmeter.testelement.BarChart; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.JLabeledTextField; public class BarChartGui extends AbstractReportGui { private static final long serialVersionUID = 240L; private JLabeledChoice xAxisLabel = new JLabeledChoice(); private JLabeledTextField yAxisLabel = new JLabeledTextField(JMeterUtils.getResString("report_chart_y_axis_label")); private JLabeledTextField caption = new JLabeledTextField(JMeterUtils.getResString("report_chart_caption"), Color.white); private JLabeledTextField url = new JLabeledTextField(JMeterUtils.getResString("report_bar_graph_url"), Color.white); private JLabeledChoice yItems = new JLabeledChoice(); private JLabeledChoice xItems = new JLabeledChoice(); public BarChartGui() { super(); init(); } @Override public String getLabelResource() { return "report_bar_chart"; } @Override public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); ReportMenuFactory.addFileMenu(pop); ReportMenuFactory.addEditMenu(pop,true); return pop; } private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); setBackground(Color.white); JPanel pane = new JPanel(); pane.setLayout(new BorderLayout(10,10)); pane.setBackground(Color.white); pane.add(this.getNamePanel(),BorderLayout.NORTH); VerticalPanel options = new VerticalPanel(Color.white); xAxisLabel.setBackground(Color.white); yAxisLabel.setBackground(Color.white); JLabel xLabel = new JLabel(JMeterUtils.getResString("report_chart_x_axis")); HorizontalPanel xpanel = new HorizontalPanel(Color.white); xLabel.setBorder(new EmptyBorder(5,2,5,2)); xItems.setBackground(Color.white); xItems.setValues(AbstractTable.xitems); xpanel.add(xLabel); xpanel.add(xItems); options.add(xpanel); JLabel xALabel = new JLabel(JMeterUtils.getResString("report_chart_x_axis_label")); HorizontalPanel xApanel = new HorizontalPanel(Color.white); xALabel.setBorder(new EmptyBorder(5,2,5,2)); xAxisLabel.setBackground(Color.white); xAxisLabel.setValues(AbstractChart.X_LABELS); xApanel.add(xALabel); xApanel.add(xAxisLabel); options.add(xApanel); JLabel yLabel = new JLabel(JMeterUtils.getResString("report_chart_y_axis")); HorizontalPanel ypanel = new HorizontalPanel(Color.white); yLabel.setBorder(new EmptyBorder(5,2,5,2)); yItems.setBackground(Color.white); yItems.setValues(AbstractTable.items); ypanel.add(yLabel); ypanel.add(yItems); options.add(ypanel); options.add(yAxisLabel); options.add(caption); options.add(url); add(pane,BorderLayout.NORTH); add(options,BorderLayout.CENTER); } public TestElement createTestElement() { BarChart element = new BarChart(); modifyTestElement(element); return element; } public void modifyTestElement(TestElement element) { this.configureTestElement(element); BarChart bc = (BarChart)element; bc.setXAxis(xItems.getText()); bc.setYAxis(yItems.getText()); bc.setXLabel(xAxisLabel.getText()); bc.setYLabel(yAxisLabel.getText()); bc.setCaption(caption.getText()); bc.setURL(url.getText()); } @Override public void configure(TestElement element) { super.configure(element); BarChart bc = (BarChart)element; xItems.setText(bc.getXAxis()); yItems.setText(bc.getYAxis()); xAxisLabel.setText(bc.getXLabel()); yAxisLabel.setText(bc.getYLabel()); caption.setText(bc.getCaption()); url.setText(bc.getURL()); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/LineGraphGui.java0000644000175000017500000001242312032647222026465 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.border.EmptyBorder; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.AbstractTable; import org.apache.jmeter.testelement.AbstractChart; import org.apache.jmeter.testelement.LineChart; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.JLabeledTextField; public class LineGraphGui extends AbstractReportGui { private static final long serialVersionUID = 240L; private JLabeledChoice xAxisLabel = new JLabeledChoice(); private JLabeledTextField yAxisLabel = new JLabeledTextField(JMeterUtils.getResString("report_chart_y_axis_label")); private JLabeledTextField caption = new JLabeledTextField(JMeterUtils.getResString("report_chart_caption"), Color.white); private JLabeledTextField urls = new JLabeledTextField(JMeterUtils.getResString("report_line_graph_urls"), Color.white); private JLabeledChoice yItems = new JLabeledChoice(); private JLabeledChoice xItems = new JLabeledChoice(); public LineGraphGui() { super(); init(); } @Override public String getLabelResource() { return "report_line_graph"; } @Override public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); ReportMenuFactory.addFileMenu(pop); ReportMenuFactory.addEditMenu(pop,true); return pop; } private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); setBackground(Color.white); JPanel pane = new JPanel(); pane.setLayout(new BorderLayout(10,10)); pane.setBackground(Color.white); pane.add(this.getNamePanel(),BorderLayout.NORTH); VerticalPanel options = new VerticalPanel(Color.white); yAxisLabel.setBackground(Color.white); JLabel xLabel = new JLabel(JMeterUtils.getResString("report_chart_x_axis")); HorizontalPanel xpanel = new HorizontalPanel(Color.white); xLabel.setBorder(new EmptyBorder(5,2,5,2)); xItems.setBackground(Color.white); xItems.setValues(AbstractTable.xitems); xpanel.add(xLabel); xpanel.add(xItems); options.add(xpanel); JLabel xALabel = new JLabel(JMeterUtils.getResString("report_chart_x_axis_label")); HorizontalPanel xApanel = new HorizontalPanel(Color.white); xALabel.setBorder(new EmptyBorder(5,2,5,2)); xAxisLabel.setBackground(Color.white); xAxisLabel.setValues(AbstractChart.X_LABELS); xApanel.add(xALabel); xApanel.add(xAxisLabel); options.add(xApanel); JLabel yLabel = new JLabel(JMeterUtils.getResString("report_chart_y_axis")); HorizontalPanel ypanel = new HorizontalPanel(Color.white); yLabel.setBorder(new EmptyBorder(5,2,5,2)); yItems.setBackground(Color.white); yItems.setValues(AbstractTable.items); ypanel.add(yLabel); ypanel.add(yItems); options.add(ypanel); options.add(yAxisLabel); options.add(caption); options.add(urls); add(pane,BorderLayout.NORTH); add(options,BorderLayout.CENTER); } public TestElement createTestElement() { LineChart element = new LineChart(); modifyTestElement(element); return element; } public void modifyTestElement(TestElement element) { this.configureTestElement(element); LineChart bc = (LineChart)element; bc.setXAxis(xItems.getText()); bc.setYAxis(yItems.getText()); bc.setXLabel(xAxisLabel.getText()); bc.setYLabel(yAxisLabel.getText()); bc.setCaption(caption.getText()); bc.setURLs(urls.getText()); } @Override public void configure(TestElement element) { super.configure(element); LineChart bc = (LineChart)element; xItems.setText(bc.getXAxis()); yItems.setText(bc.getYAxis()); xAxisLabel.setText(bc.getXLabel()); yAxisLabel.setText(bc.getYLabel()); caption.setText(bc.getCaption()); urls.setText(bc.getURLs()); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/0000755000175000017500000000000012165514773024572 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportCopy.java0000644000175000017500000000756112032647222027541 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.Enumeration; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.AbstractAction; import org.apache.jmeter.report.gui.tree.ReportTreeListener; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.testelement.TestElement; public class ReportCopy extends AbstractAction { private static ReportTreeNode copiedNode = null; private static ReportTreeNode copiedNodes[] = null; private static final String COPY = "Copy"; private static final HashSet commands = new HashSet(); static { commands.add(COPY); } /* * @see org.apache.jmeter.report.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent e) { ReportTreeListener treeListener = ReportGuiPackage.getInstance() .getTreeListener(); ReportTreeNode[] nodes = treeListener.getSelectedNodes(); setCopiedNodes(nodes); } public static ReportTreeNode[] getCopiedNodes() { for (int i = 0; i < copiedNodes.length; i++) { if (copiedNodes[i] == null) { return null; } } return cloneTreeNodes(copiedNodes); } public static ReportTreeNode getCopiedNode() { if (copiedNode == null) { return null; } return cloneTreeNode(copiedNode); } public static void setCopiedNode(ReportTreeNode node) { copiedNode = cloneTreeNode(node); } public static ReportTreeNode cloneTreeNode(ReportTreeNode node) { ReportTreeNode treeNode = (ReportTreeNode) node.clone(); treeNode.setUserObject(((TestElement) node.getUserObject()).clone()); cloneChildren(treeNode, node); return treeNode; } public static void setCopiedNodes(ReportTreeNode nodes[]) { copiedNodes = new ReportTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { copiedNodes[i] = cloneTreeNode(nodes[i]); } } public static ReportTreeNode[] cloneTreeNodes(ReportTreeNode nodes[]) { ReportTreeNode treeNodes[] = new ReportTreeNode[nodes.length]; for (int i = 0; i < nodes.length; i++) { treeNodes[i] = cloneTreeNode(nodes[i]); } return treeNodes; } private static void cloneChildren(ReportTreeNode to, ReportTreeNode from) { @SuppressWarnings("unchecked") // OK Enumeration enumFrom = from.children(); while (enumFrom.hasMoreElements()) { ReportTreeNode child = enumFrom.nextElement(); ReportTreeNode childClone = (ReportTreeNode) child.clone(); childClone.setUserObject(((TestElement) child.getUserObject()) .clone()); to.add(childClone); cloneChildren((ReportTreeNode) to.getLastChild(), child); } } }apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportEditCommand.java0000644000175000017500000000424312032647222031005 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.NamePanel; public class ReportEditCommand implements Command { private static final Set commands = new HashSet(); static { commands.add("edit"); } public ReportEditCommand() { } public void doAction(ActionEvent e) { ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); guiPackage.getMainFrame().setMainPanel((javax.swing.JComponent) guiPackage.getCurrentGui()); guiPackage.getMainFrame().setEditMenu(guiPackage.getTreeListener().getCurrentNode().createPopupMenu()); // TODO: I believe the following code (to the end of the method) is // obsolete, // since NamePanel no longer seems to be the GUI for any component: if (!(guiPackage.getCurrentGui() instanceof NamePanel)) { guiPackage.getMainFrame().setFileLoadEnabled(true); guiPackage.getMainFrame().setFileSaveEnabled(true); } else { guiPackage.getMainFrame().setFileLoadEnabled(false); guiPackage.getMainFrame().setFileSaveEnabled(false); } } public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportAddToTree.java0000644000175000017500000000566312032647222030443 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.swing.JComponent; import javax.swing.tree.TreePath; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportAddToTree implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private Map allJMeterComponentCommands; public ReportAddToTree() { allJMeterComponentCommands = new HashMap(); allJMeterComponentCommands.put("Add", "Add"); } /** * Gets the Set of actions this Command class responds to. * * @return the ActionNames value */ public Set getActionNames() { return allJMeterComponentCommands.keySet(); } /** * Adds the specified class to the current node of the tree. */ public void doAction(ActionEvent e) { try { TestElement node = ReportGuiPackage.getInstance() .createTestElement(((JComponent) e.getSource()).getName()); addObjectToTree(node); } catch (Exception err) { log.error("", err); } } protected void addObjectToTree(TestElement el) { ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); ReportTreeNode node = new ReportTreeNode(el, guiPackage.getTreeModel()); guiPackage.getTreeModel().insertNodeInto(node, guiPackage.getTreeListener().getCurrentNode(), guiPackage.getTreeListener().getCurrentNode().getChildCount()); TestElement curNode = (TestElement)guiPackage.getTreeListener().getCurrentNode().getUserObject(); if (curNode != null) { curNode.addTestElement(el); guiPackage.getMainFrame().getTree().setSelectionPath( new TreePath(node.getPath())); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportCut.java0000644000175000017500000000375312032647222027361 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.AbstractAction; import org.apache.jmeter.report.gui.tree.ReportTreeNode; public class ReportCut extends AbstractAction { public static final String CUT = "Cut";//$NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(CUT); } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { ReportGuiPackage guiPack = ReportGuiPackage.getInstance(); ReportTreeNode[] currentNodes = guiPack.getTreeListener().getSelectedNodes(); ReportCopy.setCopiedNodes(currentNodes); for (int i = 0; i < currentNodes.length; i++) { guiPack.getTreeModel().removeNodeFromParent(currentNodes[i]); } guiPack.getMainFrame().repaint(); } }apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportExitCommand.java0000644000175000017500000000566512032647222031042 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.report.gui.action.ReportSave; import org.apache.jmeter.util.JMeterUtils; public class ReportExitCommand implements Command { public static final String EXIT = "exit"; private static final Set commands = new HashSet(); static { commands.add(EXIT); } /** * Constructor for the ExitCommand object */ public ReportExitCommand() { } /** * Gets the ActionNames attribute of the ExitCommand object * * @return The ActionNames value */ public Set getActionNames() { return commands; } /** * Description of the Method * * @param e * Description of Parameter */ public void doAction(ActionEvent e) { ReportActionRouter.getInstance().doActionNow( new ActionEvent(e.getSource(), e.getID(), ReportCheckDirty.CHECK_DIRTY)); if (ReportGuiPackage.getInstance().isDirty()) { int chosenOption = JOptionPane.showConfirmDialog(ReportGuiPackage .getInstance().getMainFrame(), JMeterUtils .getResString("cancel_exit_to_save"), JMeterUtils .getResString("Save?"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (chosenOption == JOptionPane.NO_OPTION) { System.exit(0); } else if (chosenOption == JOptionPane.YES_OPTION) { ReportActionRouter.getInstance().doActionNow( new ActionEvent(e.getSource(), e.getID(), ReportSave.SAVE_ALL_AS)); if (!ReportGuiPackage.getInstance().isDirty()) { System.exit(0); } } } else { System.exit(0); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportEnableComponent.java0000644000175000017500000000505512032647222031674 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportEnableComponent implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String ENABLE = "enable"; public static final String DISABLE = "disable"; private static final Set commands = new HashSet(); static { commands.add(ENABLE); commands.add(DISABLE); } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { ReportTreeNode[] nodes = ReportGuiPackage.getInstance().getTreeListener().getSelectedNodes(); if (e.getActionCommand().equals(ENABLE)) { log.debug("enabling currently selected gui objects"); enableComponents(nodes, true); } else if (e.getActionCommand().equals(DISABLE)) { log.debug("disabling currently selected gui objects"); enableComponents(nodes, false); } } private void enableComponents(ReportTreeNode[] nodes, boolean enable) { ReportGuiPackage pack = ReportGuiPackage.getInstance(); for (int i = 0; i < nodes.length; i++) { nodes[i].setEnabled(enable); pack.getGui(nodes[i].getTestElement()).setEnabled(enable); } } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportHelp.java0000644000175000017500000001023112032647222027503 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.HashSet; import java.util.Set; import javax.swing.JDialog; import javax.swing.JScrollPane; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.swing.HtmlPane; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.gui.action.Command; import org.apache.jorphan.gui.ComponentUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportHelp implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String HELP = "help"; private static final Set commands = new HashSet(); public static final String HELP_DOCS = "file:///" + JMeterUtils.getJMeterHome() + "/printable_docs/usermanual/"; public static final String HELP_PAGE = HELP_DOCS + "component_reference.html"; public static final String HELP_FUNCTIONS = HELP_DOCS + "functions.html"; private static JDialog helpWindow; private static HtmlPane helpDoc; private static JScrollPane scroller; private static String currentPage; static { commands.add(HELP); helpDoc = new HtmlPane(); scroller = new JScrollPane(helpDoc); helpDoc.setEditable(false); try { helpDoc.setPage(HELP_PAGE); currentPage = HELP_PAGE; } catch (IOException err) { String msg = "Couldn't load help file " + err.toString(); log.error(msg); currentPage = "";// Avoid NPE in resetPage() } } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { if (helpWindow == null) { helpWindow = new JDialog(new Frame(),// independent frame to // allow it to be overlaid // by the main frame JMeterUtils.getResString("help"),//$NON-NLS-1$ false); helpWindow.getContentPane().setLayout(new GridLayout(1, 1)); ComponentUtil.centerComponentInWindow(helpWindow, 60); } helpWindow.getContentPane().removeAll(); helpWindow.getContentPane().add(scroller); helpWindow.setVisible(true); if (e.getSource() instanceof String[]) { String[] source = (String[]) e.getSource(); resetPage(source[0]); helpDoc.scrollToReference(source[1]); } else { resetPage(HELP_PAGE); helpDoc.scrollToReference(ReportGuiPackage.getInstance().getTreeListener().getCurrentNode().getDocAnchor()); } } private void resetPage(String source) { if (!currentPage.equals(source)) { try { helpDoc.setPage(source); currentPage = source; } catch (IOException err) { log.error(err.toString()); JMeterUtils.reportErrorToUser("Problem loading a help page - see log for details"); currentPage = ""; } } } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportLoad.java0000644000175000017500000001221412032647222027475 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.HashSet; import java.util.Set; import javax.swing.JFileChooser; import javax.swing.tree.TreePath; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.gui.util.ReportFileDialoger; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.ReportPlan; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class ReportLoad implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add("open"); commands.add("merge"); } public ReportLoad() { super(); } public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { boolean merging = e.getActionCommand().equals("merge"); if (!merging) { ReportActionRouter.getInstance().doActionNow( new ActionEvent(e.getSource(), e.getID(), "close")); } JFileChooser chooser = ReportFileDialoger .promptToOpenFile(new String[] { ".jmr" }); if (chooser == null) { return; } boolean isTestPlan = false; InputStream reader = null; File f = null; try { f = chooser.getSelectedFile(); if (f != null) { if (merging) { log.info("Merging file: " + f); } else { log.info("Loading file: " + f); FileServer.getFileServer().setBaseForScript(f); } reader = new FileInputStream(f); HashTree tree = SaveService.loadTree(reader); isTestPlan = insertLoadedTree(e.getID(), tree); } } catch (NoClassDefFoundError ex) // Allow for missing optional jars { String msg = ex.getMessage(); if (msg == null) { msg = "Missing jar file - see log for details"; log.warn("Missing jar file", ex); } JMeterUtils.reportErrorToUser(msg); } catch (Exception ex) { String msg = ex.getMessage(); if (msg == null) { msg = "Unexpected error - see log for details"; log.warn("Unexpected error", ex); } JMeterUtils.reportErrorToUser(msg); } finally { JOrphanUtils.closeQuietly(reader); ReportGuiPackage.getInstance().updateCurrentGui(); ReportGuiPackage.getInstance().getMainFrame().repaint(); } // don't change name if merging if (!merging && isTestPlan && f != null) { ReportGuiPackage.getInstance().setReportPlanFile(f.getAbsolutePath()); } } /** * Returns a boolean indicating whether the loaded tree was a full test plan */ public boolean insertLoadedTree(int id, HashTree tree) throws Exception, IllegalUserActionException { // convertTree(tree); if (tree == null) { throw new Exception("Error in TestPlan - see log file"); } boolean isTestPlan = tree.getArray()[0] instanceof ReportPlan; HashTree newTree = ReportGuiPackage.getInstance().addSubTree(tree); ReportGuiPackage.getInstance().updateCurrentGui(); ReportGuiPackage.getInstance().getMainFrame().getTree() .setSelectionPath( new TreePath(((ReportTreeNode) newTree.getArray()[0]) .getPath())); tree = ReportGuiPackage.getInstance().getCurrentSubTree(); ReportActionRouter.getInstance().actionPerformed( new ActionEvent(tree.get(tree.getArray()[tree.size() - 1]), id, ReportCheckDirty.SUB_TREE_LOADED)); return isTestPlan; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportActionRouter.java0000644000175000017500000002701412032647222031240 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.SwingUtilities; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.log.Logger; public final class ReportActionRouter implements ActionListener { private Map> commands = new HashMap>(); private static volatile ReportActionRouter router; private static final Logger log = LoggingManager.getLoggerForClass(); private static final Object LOCK = new Object(); private Map> preActionListeners = new HashMap>(); private Map> postActionListeners = new HashMap>(); private ReportActionRouter() { } public void actionPerformed(final ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { performAction(e); } }); } private void performAction(final ActionEvent e) { try { ReportGuiPackage.getInstance().updateCurrentNode(); Set commandObjects = commands.get(e.getActionCommand()); Iterator iter = commandObjects.iterator(); while (iter.hasNext()) { try { Command c = iter.next(); preActionPerformed(c.getClass(), e); c.doAction(e); postActionPerformed(c.getClass(), e); } catch (IllegalUserActionException err) { JMeterUtils.reportErrorToUser(err.toString()); } catch (Exception err) { log.error("", err); } } } catch (NullPointerException er) { log.error("performAction(" + e.getActionCommand() + ") " + e.toString() + " caused", er); JMeterUtils.reportErrorToUser("Sorry, this feature (" + e.getActionCommand() + ") not yet implemented"); } } /** * To execute an action immediately in the current thread. * * @param e * the action to execute */ public void doActionNow(ActionEvent e) { performAction(e); } public Set getAction(String actionName) { Set set = new HashSet(); Set commandObjects = commands.get(actionName); Iterator iter = commandObjects.iterator(); while (iter.hasNext()) { try { set.add(iter.next()); } catch (Exception err) { log.error("", err); } } return set; } public Command getAction(String actionName, Class actionClass) { Set commandObjects = commands.get(actionName); Iterator iter = commandObjects.iterator(); while (iter.hasNext()) { try { Command com = iter.next(); if (com.getClass().equals(actionClass)) { return com; } } catch (Exception err) { log.error("", err); } } return null; } public Command getAction(String actionName, String className) { Set commandObjects = commands.get(actionName); Iterator iter = commandObjects.iterator(); while (iter.hasNext()) { try { Command com = iter.next(); if (com.getClass().getName().equals(className)) { return com; } } catch (Exception err) { log.error("", err); } } return null; } /** * Allows an ActionListener to receive notification of a command being * executed prior to the actual execution of the command. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.report.gui.action.Command. * @param listener * the ActionListener to receive the notifications */ public void addPreActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = preActionListeners.get(action.getName()); if (set == null) { set = new HashSet(); } set.add(listener); preActionListeners.put(action.getName(), set); } } /** * Allows an ActionListener to be removed from receiving notifications of a * command being executed prior to the actual execution of the command. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.report.gui.action.Command. * @param listener * the ActionListener to receive the notifications */ public void removePreActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = preActionListeners.get(action.getName()); if (set != null) { set.remove(listener); preActionListeners.put(action.getName(), set); } } } /** * Allows an ActionListener to receive notification of a command being * executed after the command has executed. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.report.gui.action.Command. * @param listener */ public void addPostActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = postActionListeners.get(action.getName()); if (set == null) { set = new HashSet(); } set.add(listener); postActionListeners.put(action.getName(), set); } } /** * Allows an ActionListener to be removed from receiving notifications of a * command being executed after the command has executed. * * @param action * the Class of the command for which the listener will * notifications for. Class must extend * org.apache.jmeter.report.gui.action.Command. * @param listener */ public void removePostActionListener(Class action, ActionListener listener) { if (action != null) { HashSet set = postActionListeners.get(action.getName()); if (set != null) { set.remove(listener); postActionListeners.put(action.getName(), set); } } } protected void preActionPerformed(Class action, ActionEvent e) { if (action != null) { HashSet listenerSet = preActionListeners.get(action.getName()); if (listenerSet != null && listenerSet.size() > 0) { Object[] listeners = listenerSet.toArray(); for (int i = 0; i < listeners.length; i++) { ((ActionListener) listeners[i]).actionPerformed(e); } } } } protected void postActionPerformed(Class action, ActionEvent e) { if (action != null) { HashSet listenerSet = postActionListeners.get(action.getName()); if (listenerSet != null && listenerSet.size() > 0) { Object[] listeners = listenerSet.toArray(); for (int i = 0; i < listeners.length; i++) { ((ActionListener) listeners[i]).actionPerformed(e); } } } } private void populateCommandMap() { log.info("populateCommandMap called"); List listClasses; Command command; Iterator iterClasses; Class commandClass; try { listClasses = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { Class .forName("org.apache.jmeter.gui.action.Command") }); commands = new HashMap>(listClasses.size()); if (listClasses.size() == 0) { log.warn("!!!!!Uh-oh, didn't find any action handlers!!!!!"); } iterClasses = listClasses.iterator(); while (iterClasses.hasNext()) { String strClassName = iterClasses.next(); if (strClassName.startsWith("org.apache.jmeter.report.gui.action")) { // log.info("classname:: " + strClassName); commandClass = Class.forName(strClassName); if (!Modifier.isAbstract(commandClass.getModifiers())) { command = (Command) commandClass.newInstance(); Iterator iter = command.getActionNames().iterator(); while (iter.hasNext()) { String commandName = iter.next(); Set commandObjects = commands.get(commandName); if (commandObjects == null) { commandObjects = new HashSet(); commands.put(commandName, commandObjects); } commandObjects.add(command); } } } } } catch (HeadlessException e){ log.warn(e.toString()); } catch (Exception e) { log.error("exception finding action handlers", e); } } /** * Gets the Instance attribute of the ActionRouter class * * @return The Instance value */ public static ReportActionRouter getInstance() { if (router == null) { synchronized (LOCK) { if(router == null) { router = new ReportActionRouter(); router.populateCommandMap(); } } } return router; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportSaveGraphics.java0000644000175000017500000001071212032647222031176 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JComponent; import javax.swing.JFileChooser; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.util.ReportFileDialoger; import org.apache.jmeter.save.SaveGraphicsService; import org.apache.jmeter.visualizers.Printable; //import org.apache.jorphan.logging.LoggingManager; //import org.apache.log.Logger; /** * SaveGraphics action is meant to be a generic reusable Action. The class will * use GUIPackage to get the current gui. Once it does, it checks to see if the * element implements Printable interface. If it does, it call getPrintable() to * get the JComponent. By default, it will use SaveGraphicsService to save a PNG * file if no extension is provided. If either .png or .tif is in the filename, * it will call SaveGraphicsService to save in the format. */ public class ReportSaveGraphics implements Command { //transient private static final Logger log = LoggingManager.getLoggerForClass(); public static final String SAVE_GRAPHICS = "save_graphics"; // $NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(SAVE_GRAPHICS); } private static final String[] extensions = { SaveGraphicsService.TIFF_EXTENSION, SaveGraphicsService.PNG_EXTENSION }; /** * Constructor for the Save object. */ public ReportSaveGraphics() { } /** * Gets the ActionNames attribute of the Save object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) throws IllegalUserActionException { JMeterGUIComponent component = null; JComponent comp = null; if (!commands.contains(e.getActionCommand())) { throw new IllegalUserActionException("Invalid user command:" + e.getActionCommand()); } if (e.getActionCommand().equals(SAVE_GRAPHICS)) { component = ReportGuiPackage.getInstance().getCurrentGui(); // get the JComponent from the visualizer if (component instanceof Printable) { comp = ((Printable) component).getPrintableComponent(); String filename; JFileChooser chooser = ReportFileDialoger.promptToSaveFile(ReportGuiPackage.getInstance().getTreeListener() .getCurrentNode().getName(), extensions); if (chooser == null) { return; } // Get the string given from the choose and check // the file extension. filename = chooser.getSelectedFile().getAbsolutePath(); if (filename != null) { SaveGraphicsService save = new SaveGraphicsService(); String ext = filename.substring(filename.length() - 4); String name = filename.substring(0, filename.length() - 4); if (ext.equals(SaveGraphicsService.PNG_EXTENSION)) { save.saveJComponent(name, SaveGraphicsService.PNG, comp); } else if (ext.equals(SaveGraphicsService.TIFF_EXTENSION)) { save.saveJComponent(name, SaveGraphicsService.TIFF, comp); } else { save.saveJComponent(filename, SaveGraphicsService.PNG, comp); } } } } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/AbstractAction.java0000644000175000017500000000424112032647222030324 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Parent class for implementing Menu item commands */ public abstract class AbstractAction implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); /** * @see Command#doAction(ActionEvent) */ public void doAction(ActionEvent e) { } /** * @see Command#getActionNames() */ abstract public Set getActionNames(); /** * @param e */ protected void popupShouldSave(ActionEvent e) { log.debug("popupShouldSave"); if (ReportGuiPackage.getInstance().getReportPlanFile() == null) { if (JOptionPane.showConfirmDialog(ReportGuiPackage.getInstance().getMainFrame(), JMeterUtils .getResString("should_save"), JMeterUtils.getResString("warning"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { ReportActionRouter.getInstance().doActionNow(new ActionEvent(e.getSource(), e.getID(), ReportSave.SAVE)); } } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportDragNDrop.java0000644000175000017500000001230112032647222030433 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.control.Controller; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.AbstractAction; import org.apache.jmeter.report.gui.tree.ReportTreeListener; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; public class ReportDragNDrop extends AbstractAction { public static final String ADD = "drag_n_drop.add";//$NON-NLS-1$ public static final String INSERT_BEFORE = "drag_n_drop.insert_before";//$NON-NLS-1$ public static final String INSERT_AFTER = "drag_n_drop.insert_after";//$NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(ADD); commands.add(INSERT_BEFORE); commands.add(INSERT_AFTER); } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { String action = e.getActionCommand(); ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); ReportTreeNode[] draggedNodes = guiPackage.getTreeListener().getDraggedNodes(); ReportTreeListener treeListener = guiPackage.getTreeListener(); ReportTreeNode currentNode = treeListener.getCurrentNode(); ReportTreeNode parentNode = (ReportTreeNode) currentNode.getParent(); TestElement te = currentNode.getTestElement(); if (te instanceof TestPlan || te instanceof WorkBench) { parentNode = null; // So elements can only be added as children } // System.out.println(action+" "+te.getClass().getName()); if (ADD.equals(action) && canAddTo(currentNode)) { removeNodesFromParents(draggedNodes); for (int i = 0; i < draggedNodes.length; i++) { ReportGuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], currentNode, currentNode.getChildCount()); } } else if (INSERT_BEFORE.equals(action) && canAddTo(parentNode)) { removeNodesFromParents(draggedNodes); for (int i = 0; i < draggedNodes.length; i++) { @SuppressWarnings("null") int index = parentNode.getIndex(currentNode); // can't be null - this is checked by canAddTo ReportGuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], parentNode, index); } } else if (INSERT_AFTER.equals(action) && canAddTo(parentNode)) { removeNodesFromParents(draggedNodes); for (int i = 0; i < draggedNodes.length; i++) { @SuppressWarnings("null") int index = parentNode.getIndex(currentNode) + 1; // can't be null - this is checked by canAddTo ReportGuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], parentNode, index); } } ReportGuiPackage.getInstance().getMainFrame().repaint(); } /** * Determine whether or not dragged nodes can be added to this parent. Also * used by Paste TODO tighten rules TODO move to MenuFactory? * * @param parentNode * @return whether it is OK to add the dragged nodes to this parent */ static boolean canAddTo(ReportTreeNode parentNode) { if (null == parentNode) { return false; } TestElement te = parentNode.getTestElement(); // System.out.println("Add to: "+te.getClass().getName()); if (te instanceof Controller) { return true; } if (te instanceof Sampler) { return true; } if (te instanceof WorkBench) { return true; } if (te instanceof TestPlan) { return true; } return false; } protected void removeNodesFromParents(ReportTreeNode[] nodes) { for (int i = 0; i < nodes.length; i++) { ReportGuiPackage.getInstance().getTreeModel().removeNodeFromParent(nodes[i]); } } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportRemove.java0000644000175000017500000000567612032647222030071 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import javax.swing.tree.TreePath; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.ReportCheckDirty; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.testelement.TestElement; public class ReportRemove implements Command { private static final Set commands = new HashSet(); static { commands.add("remove"); } /** * Constructor for the Remove object */ public ReportRemove() { } /** * Gets the ActionNames attribute of the Remove object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) { ReportActionRouter.getInstance().actionPerformed( new ActionEvent(e.getSource(), e.getID(), ReportCheckDirty.REMOVE)); ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); ReportTreeNode[] nodes = guiPackage.getTreeListener() .getSelectedNodes(); TreePath newTreePath = // Save parent node for later guiPackage.getTreeListener().removedSelectedNode(); for (int i = nodes.length - 1; i >= 0; i--) { removeNode(nodes[i]); } guiPackage.getTreeListener().getJTree().setSelectionPath(newTreePath); guiPackage.updateCurrentGui(); } public static void removeNode(ReportTreeNode node) { TestElement testElement = node.getTestElement(); if (testElement.canRemove()) { ReportGuiPackage.getInstance().getTreeModel().removeNodeFromParent( node); ReportGuiPackage.getInstance().removeNode(testElement); } else { String message = testElement.getClass().getName() + " is busy"; JOptionPane.showMessageDialog(null, message, "Cannot remove item", JOptionPane.ERROR_MESSAGE); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportClose.java0000644000175000017500000000577112032647222027675 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import javax.swing.JOptionPane; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.ActionNames; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.util.JMeterUtils; /** * This command clears the existing test plan, allowing the creation of a New * test plan. * */ public class ReportClose implements Command { private static final Set commands = new HashSet(); static { commands.add("close"); } /** * Constructor for the Close object. */ public ReportClose() { } /** * Gets the ActionNames attribute of the Close object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } /** * This method performs the actual command processing. * * @param e * the generic UI action event */ public void doAction(ActionEvent e) { ReportActionRouter.getInstance().doActionNow( new ActionEvent(e.getSource(), e.getID(), ReportCheckDirty.CHECK_DIRTY)); ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); if (guiPackage.isDirty()) { if (JOptionPane.showConfirmDialog(ReportGuiPackage.getInstance() .getMainFrame(), JMeterUtils .getResString("cancel_new_to_save"), JMeterUtils .getResString("Save?"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { ReportActionRouter.getInstance().doActionNow( new ActionEvent(e.getSource(), e.getID(), ActionNames.SAVE)); } } guiPackage.getTreeModel().clearTestPlan(); guiPackage.getTreeListener().getJTree().setSelectionRow(1); // Clear the name of the test plan file ReportGuiPackage.getInstance().setReportPlanFile(null); ReportActionRouter.getInstance().actionPerformed( new ActionEvent(e.getSource(), e.getID(), ActionNames.ADD_ALL)); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportAddParent.java0000644000175000017500000000573412032647222030471 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.Component; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportAddParent implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add("Add Parent"); } public ReportAddParent() { } public void doAction(ActionEvent e) { String name = ((Component) e.getSource()).getName(); try { TestElement controller = ReportGuiPackage.getInstance() .createTestElement(name); addParentToTree(controller); } catch (Exception err) { log.error("", err); } } public Set getActionNames() { return commands; } protected void addParentToTree(TestElement newParent) { ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); ReportTreeNode newNode = new ReportTreeNode(newParent, guiPackage .getTreeModel()); ReportTreeNode currentNode = guiPackage.getTreeListener() .getCurrentNode(); ReportTreeNode parentNode = (ReportTreeNode) currentNode.getParent(); int index = parentNode.getIndex(currentNode); guiPackage.getTreeModel().insertNodeInto(newNode, parentNode, index); ReportTreeNode[] nodes = guiPackage.getTreeListener() .getSelectedNodes(); for (int i = 0; i < nodes.length; i++) { moveNode(guiPackage, nodes[i], newNode); } } private void moveNode(ReportGuiPackage guiPackage, ReportTreeNode node, ReportTreeNode newParentNode) { guiPackage.getTreeModel().removeNodeFromParent(node); guiPackage.getTreeModel().insertNodeInto(node, newParentNode, newParentNode.getChildCount()); } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportSave.java0000644000175000017500000001137112032647222027517 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.io.FileOutputStream; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Set; import javax.swing.JFileChooser; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.gui.action.Command; import org.apache.jmeter.gui.util.ReportFileDialoger; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.save.SaveService; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class ReportSave implements Command { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String SAVE_ALL_AS = "save_all_as"; public static final String SAVE_AS = "save_as"; public static final String SAVE = "save"; // NOTUSED private String chosenFile; private static final Set commands = new HashSet(); static { commands.add(SAVE_AS); commands.add(SAVE_ALL_AS); commands.add(SAVE); } /** * Constructor for the Save object. */ public ReportSave() { } /** * Gets the ActionNames attribute of the Save object. * * @return the ActionNames value */ public Set getActionNames() { return commands; } public void doAction(ActionEvent e) throws IllegalUserActionException { HashTree subTree = null; if (!commands.contains(e.getActionCommand())) { throw new IllegalUserActionException("Invalid user command:" + e.getActionCommand()); } if (e.getActionCommand().equals(SAVE_AS)) { subTree = ReportGuiPackage.getInstance().getCurrentSubTree(); } else { subTree = ReportGuiPackage.getInstance().getTreeModel().getReportPlan(); } String updateFile = ReportGuiPackage.getInstance().getReportPlanFile(); if (!SAVE.equals(e.getActionCommand()) || updateFile == null) { JFileChooser chooser = ReportFileDialoger.promptToSaveFile(ReportGuiPackage.getInstance().getTreeListener() .getCurrentNode().getName() + ".jmr"); if (chooser == null) { return; } updateFile = chooser.getSelectedFile().getAbsolutePath(); if (!e.getActionCommand().equals(SAVE_AS)) { ReportGuiPackage.getInstance().setReportPlanFile(updateFile); } } // TODO: doesn't putting this here mark the tree as // saved even though a failure may occur later? ReportActionRouter.getInstance().doActionNow(new ActionEvent(subTree, e.getID(), ReportCheckDirty.SUB_TREE_SAVED)); try { convertSubTree(subTree); } catch (Exception err) { } FileOutputStream ostream = null; try { ostream = new FileOutputStream(updateFile); SaveService.saveTree(subTree, ostream); log.info("saveTree"); } catch (Exception ex) { ReportGuiPackage.getInstance().setReportPlanFile(null); log.error("", ex); throw new IllegalUserActionException("Couldn't save test plan to file: " + updateFile); } finally { JOrphanUtils.closeQuietly(ostream); } } private void convertSubTree(HashTree tree) { Iterator iter = new LinkedList(tree.list()).iterator(); while (iter.hasNext()) { ReportTreeNode item = (ReportTreeNode) iter.next(); convertSubTree(tree.getTree(item)); TestElement testElement = item.getTestElement(); tree.replace(item, testElement); } } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportLookAndFeelCommand.java0000644000175000017500000000177112032647222032246 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import org.apache.jmeter.gui.action.LookAndFeelCommand; public class ReportLookAndFeelCommand extends LookAndFeelCommand { // same code as for default JMeter class } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportCheckDirty.java0000644000175000017500000001344412032647222030655 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.AbstractAction; import org.apache.jmeter.report.gui.action.ReportActionRouter; import org.apache.jmeter.report.gui.action.ReportExitCommand; import org.apache.jmeter.report.gui.tree.ReportTreeNode; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.collections.HashTree; import org.apache.jorphan.collections.HashTreeTraverser; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ReportCheckDirty extends AbstractAction implements HashTreeTraverser, ActionListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static Map previousGuiItems; public static final String CHECK_DIRTY = "check_dirty"; public static final String SUB_TREE_SAVED = "sub_tree_saved"; public static final String SUB_TREE_LOADED = "sub_tree_loaded"; public static final String ADD_ALL = "add_all"; // Not implemented: public static final String SAVE = "save_as"; // Not implemented: public static final String SAVE_ALL = "save_all"; // Not implemented: public static final String SAVE_TO_PREVIOUS = "save"; public static final String REMOVE = "check_remove"; boolean checkMode = false; boolean removeMode = false; boolean dirty = false; private static final Set commands = new HashSet(); static { commands.add(CHECK_DIRTY); commands.add(SUB_TREE_SAVED); commands.add(SUB_TREE_LOADED); commands.add(ADD_ALL); commands.add(REMOVE); } public ReportCheckDirty() { previousGuiItems = new HashMap(); ReportActionRouter.getInstance().addPreActionListener(ReportExitCommand.class, this); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(ReportExitCommand.EXIT)) { doAction(e); } } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(SUB_TREE_SAVED)) { HashTree subTree = (HashTree) e.getSource(); subTree.traverse(this); } else if (action.equals(SUB_TREE_LOADED)) { ListedHashTree addTree = (ListedHashTree) e.getSource(); addTree.traverse(this); } else if (action.equals(ADD_ALL)) { previousGuiItems.clear(); ReportGuiPackage.getInstance().getTreeModel().getReportPlan().traverse(this); } else if (action.equals(REMOVE)) { ReportGuiPackage guiPackage = ReportGuiPackage.getInstance(); ReportTreeNode[] nodes = guiPackage.getTreeListener().getSelectedNodes(); removeMode = true; for (int i = nodes.length - 1; i >= 0; i--) { guiPackage.getTreeModel().getCurrentSubTree(nodes[i]).traverse(this); } removeMode = false; } checkMode = true; dirty = false; HashTree wholeTree = ReportGuiPackage.getInstance().getTreeModel().getReportPlan(); wholeTree.traverse(this); ReportGuiPackage.getInstance().setDirty(dirty); checkMode = false; } /** * The tree traverses itself depth-first, calling processNode for each * object it encounters as it goes. */ public void addNode(Object node, HashTree subTree) { log.debug("Node is class:" + node.getClass()); ReportTreeNode treeNode = (ReportTreeNode) node; if (checkMode) { if (previousGuiItems.containsKey(treeNode)) { if (!previousGuiItems.get(treeNode).equals(treeNode.getTestElement())) { dirty = true; } } else { dirty = true; } } else if (removeMode) { previousGuiItems.remove(treeNode); } else { previousGuiItems.put(treeNode, (TestElement) treeNode.getTestElement().clone()); } } /** * Indicates traversal has moved up a step, and the visitor should remove * the top node from it's stack structure. */ public void subtractNode() { } /** * Process path is called when a leaf is reached. If a visitor wishes to * generate Lists of path elements to each leaf, it should keep a Stack data * structure of nodes passed to it with addNode, and removing top items for * every subtractNode() call. */ public void processPath() { } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportPaste.java0000644000175000017500000000462012032647222027674 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.ReportGuiPackage; import org.apache.jmeter.report.gui.action.AbstractAction; import org.apache.jmeter.report.gui.tree.ReportTreeListener; import org.apache.jmeter.report.gui.tree.ReportTreeNode; /** * Places a copied JMeterTreeNode under the selected node. * */ public class ReportPaste extends AbstractAction { public static final String PASTE = "Paste"; //$NON-NLS-1$ private static final Set commands = new HashSet(); static { commands.add(PASTE); } /** * @see org.apache.jmeter.gui.action.Command#getActionNames() */ @Override public Set getActionNames() { return commands; } /** * @see org.apache.jmeter.gui.action.Command#doAction(ActionEvent) */ @Override public void doAction(ActionEvent e) { ReportTreeNode draggedNodes[] = ReportCopy.getCopiedNodes(); ReportTreeListener treeListener = ReportGuiPackage.getInstance().getTreeListener(); ReportTreeNode currentNode = treeListener.getCurrentNode(); if (ReportDragNDrop.canAddTo(currentNode)) { for (int i = 0; i < draggedNodes.length; i++) { if (draggedNodes[i] != null) { ReportGuiPackage.getInstance().getTreeModel().insertNodeInto(draggedNodes[i], currentNode, currentNode.getChildCount()); } } } ReportGuiPackage.getInstance().getMainFrame().repaint(); } }apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/action/ReportStart.java0000644000175000017500000000742512032647222027723 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui.action; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.gui.action.ActionNames; /** * FIXME BROKEN CODE */ public class ReportStart extends AbstractAction { //private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set commands = new HashSet(); static { commands.add(ActionNames.ACTION_START); commands.add(ActionNames.ACTION_STOP); commands.add(ActionNames.ACTION_SHUTDOWN); } // FIXME Due to startEngine being commented engine will always be null //private StandardJMeterEngine engine; /** * Constructor for the Start object. */ public ReportStart() { } /** * Gets the ActionNames attribute of the Start object. * * @return the ActionNames value */ @Override public Set getActionNames() { return commands; } @Override public void doAction(ActionEvent e) { if (e.getActionCommand().equals(ActionNames.ACTION_START)) { popupShouldSave(e); startEngine(); // } else if (e.getActionCommand().equals(ActionNames.ACTION_STOP)) { // FIXME engine is always null // if (engine != null) { // ReportGuiPackage.getInstance().getMainFrame().showStoppingMessage(""); // engine.stopTest(); // engine = null; // } // } else if (e.getActionCommand().equals(ActionNames.ACTION_SHUTDOWN)) { // FIXME engine is always null // if (engine != null) { // ReportGuiPackage.getInstance().getMainFrame().showStoppingMessage(""); // engine.askThreadsToStop(); // engine = null; // } } } protected void startEngine() { /** * this will need to be changed ReportGuiPackage gui = ReportGuiPackage.getInstance(); engine = new StandardJMeterEngine(); HashTree testTree = gui.getTreeModel().getTestPlan(); convertSubTree(testTree); DisabledComponentRemover remover = new DisabledComponentRemover(testTree); testTree.traverse(remover); testTree.add(testTree.getArray()[0], gui.getMainFrame()); log.debug("test plan before cloning is running version: " + ((TestPlan) testTree.getArray()[0]).isRunningVersion()); TreeCloner cloner = new TreeCloner(false); testTree.traverse(cloner); engine.configure(cloner.getClonedTree()); try { engine.runTest(); } catch (JMeterEngineException e) { JOptionPane.showMessageDialog(gui.getMainFrame(), e.getMessage(), JMeterUtils .getResString("Error Occurred"), JOptionPane.ERROR_MESSAGE); } log.debug("test plan after cloning and running test is running version: " + ((TestPlan) testTree.getArray()[0]).isRunningVersion()); */ } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/gui/AbstractReportGui.java0000644000175000017500000000744612032647222027564 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.gui; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Font; import java.util.Arrays; import java.util.Collection; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JPopupMenu; import org.apache.jmeter.gui.AbstractJMeterGuiComponent; import org.apache.jmeter.gui.NamePanel; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * * This is the abstract base for report gui's */ public abstract class AbstractReportGui extends AbstractJMeterGuiComponent { private static final long serialVersionUID = 240L; /** * */ public AbstractReportGui() { this.namePanel = new NamePanel(); this.namePanel.setBackground(Color.white); setName(getStaticLabel()); } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#getLabelResource() */ public String getLabelResource() { return "report_page"; } @Override public void configureTestElement(TestElement element) { super.configureTestElement(element); } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#createPopupMenu() */ public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); JMenu addMenu = new JMenu(JMeterUtils.getResString("Add")); addMenu.add(ReportMenuFactory.makeMenu(ReportMenuFactory.CONFIG_ELEMENTS, "Add")); addMenu.add(ReportMenuFactory.makeMenu(ReportMenuFactory.PRE_PROCESSORS, "Add")); addMenu.add(ReportMenuFactory.makeMenu(ReportMenuFactory.POST_PROCESSORS, "Add")); pop.add(addMenu); ReportMenuFactory.addFileMenu(pop); return pop; } /* (non-Javadoc) * @see org.apache.jmeter.gui.JMeterGUIComponent#getMenuCategories() */ public Collection getMenuCategories() { return Arrays.asList(new String[] { ReportMenuFactory.TABLES }); } /** * This implementaion differs a bit from the normal jmeter gui. it uses * a white background instead of the default grey. * @return a panel containing the component title and name panel */ @Override protected Container makeTitlePanel() { VerticalPanel titlePanel = new VerticalPanel(); titlePanel.setBackground(Color.white); titlePanel.add(createTitleLabel()); titlePanel.add(getNamePanel()); return titlePanel; } /** * This implementaion differs a bit from the normal jmeter gui. it uses * a white background instead of the default grey. */ @Override protected Component createTitleLabel() { JLabel titleLabel = new JLabel(getStaticLabel()); Font curFont = titleLabel.getFont(); titleLabel.setFont(curFont.deriveFont((float) curFont.getSize() + 4)); titleLabel.setBackground(Color.white); return titleLabel; } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/DataSet.java0000644000175000017500000000737612032647222024723 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report; import java.util.Date; import java.util.List; import java.util.Set; import org.apache.jmeter.visualizers.SamplingStatCalculator; import org.apache.jmeter.visualizers.Visualizer; /** * * DataSet extends Visualizer so that it can be used with ResultCollector. * Classes implementing the interface should create a new instance of * ResultCollector and call setListener(Visualizer) passing itself. * When the ResultCollector.loadExistingFile is called, it will pass * the SampleResults. */ public interface DataSet extends Visualizer { /** * Depending on the implementation, the datasouce could be a file * or a RDBMS. It's up to the implementing class to decide. * @param datasource */ void setDataSource(String datasource); /** * Return the datasource. For files, it should be the absolute path. * For databases, it should be the datasource name created in jmeter. */ String getDataSource(); /** * In some cases, we may want to return a string that isn't the full * datasource string or something different. For example, we may * want to return just the filename and not the absolutePath of * a JTL file. */ String getDataSourceName(); /** * Set the timestamp using the first result from the datasource * @param stamp */ void setStartTimestamp(long stamp); /** * return the timestamp in millisecond format. */ long getStartTimestamp(); /** * Set the timestamp using the last result from the datasource * @param stamp */ void setEndTimestamp(long stamp); /** * return the timestamp in millisecond format. */ long getEndTimestamp(); /** * Return the Date object using the start timestamp */ Date getDate(); /** * convienance method for getting the date in mmdd format */ String getMonthDayDate(); /** * convienant method for getting the date in yyyymmdd format */ String getMonthDayYearDate(); /** * Classes implementing the method should return the URL's in the * DataSet. It is up to the class to return Strings or URL. */ Set getURLs(); /** * Classes implementing the method should return instance of * SamplingStatCalculator. * @return the set of statistics */ Set getStats(); /** * Return the SamplingStatCalculator for a specific URL. * @param url */ SamplingStatCalculator getStatistics(String url); /** * Convenience method for getting all the SamplingStatCalculators for * a given URL. * @param urls */ List getStats(@SuppressWarnings("rawtypes") // Method is broken anyway List urls); /** * Classes implementing the method should load the data from * the target location. It doesn't necessarily have to be a * file. It could be from a database. */ void loadData(); } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/engine/0000755000175000017500000000000012165514773023776 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/report/engine/StandardReportEngine.java0000644000175000017500000000400712032647222030711 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.engine; import java.io.Serializable; import org.apache.jmeter.engine.JMeterEngineException; import org.apache.jorphan.collections.HashTree; public class StandardReportEngine implements Runnable, Serializable, ReportEngine { private static final long serialVersionUID = 240L; /** * */ public StandardReportEngine() { super(); } /* (non-Javadoc) * @see java.lang.Runnable#run() */ public void run() { } /* (non-Javadoc) * @see org.apache.jmeter.report.engine.ReportEngine#configure(org.apache.jorphan.collections.HashTree) */ public void configure(HashTree testPlan) { } /* (non-Javadoc) * @see org.apache.jmeter.report.engine.ReportEngine#runReport() */ public void runReport() throws JMeterEngineException { } /* (non-Javadoc) * @see org.apache.jmeter.report.engine.ReportEngine#stopReport() */ public void stopReport() { } /* (non-Javadoc) * @see org.apache.jmeter.report.engine.ReportEngine#reset() */ public void reset() { } /* (non-Javadoc) * @see org.apache.jmeter.report.engine.ReportEngine#exit() */ public void exit() { } } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/engine/ReportEngine.java0000644000175000017500000000226412032647222027233 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.engine; import org.apache.jmeter.engine.JMeterEngineException; import org.apache.jorphan.collections.HashTree; /** * * ReportEngine is the base interface for report engines */ public interface ReportEngine { void configure(HashTree testPlan); void runReport() throws JMeterEngineException; void stopReport(); void reset(); void exit(); } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/engine/ValueReplacer.java0000644000175000017500000001227012032647222027362 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report.engine; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.testelement.ReportPlan; import org.apache.jmeter.testelement.TestElement; public class ValueReplacer { // private static final Logger log = LoggingManager.getLoggerForClass(); private Map variables = new HashMap(); public ValueReplacer() { } public ValueReplacer(ReportPlan tp) { setUserDefinedVariables(tp.getUserDefinedVariables()); } public void setUserDefinedVariables(Map variables) { this.variables = variables; } /** * @throws InvalidVariableException not thrown currently */ public void replaceValues(TestElement el) throws InvalidVariableException { /** Collection newProps = replaceValues(el.propertyIterator(), new ReplaceStringWithFunctions(masterFunction, variables)); setProperties(el, newProps); **/ } // private void setProperties(TestElement el, Collection newProps) { // Iterator iter = newProps.iterator(); // el.clear(); // while (iter.hasNext()) { // el.setProperty((JMeterProperty) iter.next()); // } // } /** * @throws InvalidVariableException not thrown currently */ public void reverseReplace(TestElement el) throws InvalidVariableException { /** Collection newProps = replaceValues(el.propertyIterator(), new ReplaceFunctionsWithStrings(masterFunction, variables)); setProperties(el, newProps); **/ } /** * @throws InvalidVariableException not thrown currently */ public void reverseReplace(TestElement el, boolean regexMatch) throws InvalidVariableException { /** Collection newProps = replaceValues(el.propertyIterator(), new ReplaceFunctionsWithStrings(masterFunction, variables, regexMatch)); setProperties(el, newProps); **/ } /** * @throws InvalidVariableException not thrown currently */ public void undoReverseReplace(TestElement el) throws InvalidVariableException { /** Collection newProps = replaceValues(el.propertyIterator(), new UndoVariableReplacement(masterFunction, variables)); setProperties(el, newProps); **/ } public void addVariable(String name, String value) { variables.put(name, value); } /** * Add all the given variables to this replacer's variables map. * * @param vars * A map of variable name-value pairs (String-to-String). */ public void addVariables(Map vars) { variables.putAll(vars); } /** private Collection replaceValues(PropertyIterator iter, ValueTransformer transform) throws InvalidVariableException { List props = new LinkedList(); while (iter.hasNext()) { JMeterProperty val = iter.next(); if (log.isDebugEnabled()) { log.debug("About to replace in property of type: " + val.getClass() + ": " + val); } if (val instanceof StringProperty) { // Must not convert TestElement.gui_class etc if (!val.getName().equals(TestElement.GUI_CLASS) && !val.getName().equals(TestElement.TEST_CLASS)) { val = transform.transformValue(val); if (log.isDebugEnabled()) { log.debug("Replacement result: " + val); } } } else if (val instanceof MultiProperty) { MultiProperty multiVal = (MultiProperty) val; Collection newValues = replaceValues(multiVal.iterator(), transform); multiVal.clear(); Iterator propIter = newValues.iterator(); while (propIter.hasNext()) { multiVal.addProperty((JMeterProperty) propIter.next()); } if (log.isDebugEnabled()) { log.debug("Replacement result: " + multiVal); } } else { if (log.isDebugEnabled()) { log.debug("Won't replace " + val); } } props.add(val); } return props; } **/ } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/ReportChart.java0000644000175000017500000000225312032647222025620 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report; import java.util.List; import javax.swing.JComponent; public interface ReportChart { /** * The method takes a list of the DataSet items. It is up to the chart * class to extract the data and use it to render a graphic. * @param data list of DataSet * @return the component */ JComponent renderChart(List data); } apache-jmeter-2.8/src/reports/org/apache/jmeter/report/ReportTable.java0000644000175000017500000000202312032647222025601 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.report; import java.util.List; public interface ReportTable { String[][] getTableData(@SuppressWarnings("rawtypes") // TODO fix this when there is a real implementation List data); } apache-jmeter-2.8/src/reports/org/apache/jmeter/control/0000755000175000017500000000000012032647222022663 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/control/gui/0000755000175000017500000000000012165514773023462 5ustar ebourgebourgapache-jmeter-2.8/src/reports/org/apache/jmeter/control/gui/ReportGui.java0000644000175000017500000001472412032647222026242 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.control.gui; import java.awt.Color; import java.awt.BorderLayout; import java.awt.Container; import java.util.Collection; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JTextField; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.DirectoryPanel; import org.apache.jmeter.gui.util.ReportMenuFactory; import org.apache.jmeter.report.gui.AbstractReportGui; import org.apache.jmeter.report.gui.ReportPageGui; import org.apache.jmeter.report.writers.gui.HTMLReportWriterGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.ReportPlan; import org.apache.jmeter.util.JMeterUtils; /** * JMeter GUI component representing the test plan which will be executed when * the test is run. * * @version $Revision: 1381362 $ */ public class ReportGui extends AbstractReportGui { private static final long serialVersionUID = 240L; /** A panel to contain comments on the test plan. */ private JTextField commentPanel; private final DirectoryPanel baseDir = new DirectoryPanel(JMeterUtils.getResString("report_base_directory"), Color.white); /** A panel allowing the user to define variables. */ private ArgumentsPanel argsPanel; /** * Create a new TestPlanGui. */ public ReportGui() { init(); } /** * Need to update this to make the context popupmenu correct * @return a JPopupMenu appropriate for the component. */ @Override public JPopupMenu createPopupMenu() { JPopupMenu pop = new JPopupMenu(); JMenu addMenu = new JMenu(JMeterUtils.getResString("Add")); addMenu.add(ReportMenuFactory.makeMenuItem(new ReportPageGui().getStaticLabel(), ReportPageGui.class.getName(), "Add")); addMenu.add(ReportMenuFactory.makeMenuItem(new HTMLReportWriterGui().getStaticLabel(), HTMLReportWriterGui.class.getName(), "Add")); addMenu.add(ReportMenuFactory.makeMenu(ReportMenuFactory.CONFIG_ELEMENTS, "Add")); pop.add(addMenu); ReportMenuFactory.addFileMenu(pop); ReportMenuFactory.addEditMenu(pop,true); return pop; } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { ReportPlan tp = new ReportPlan(); modifyTestElement(tp); return tp; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement plan) { super.configureTestElement(plan); if (plan instanceof ReportPlan) { ReportPlan rp = (ReportPlan) plan; rp.setUserDefinedVariables((Arguments) argsPanel.createTestElement()); rp.setProperty(ReportPlan.REPORT_COMMENTS, commentPanel.getText()); rp.setBasedir(baseDir.getFilename()); } } @Override public String getLabelResource() { return "report_plan"; } /** * This is the list of menu categories this gui component will be available * under. This implementation returns null, since the TestPlan appears at * the top level of the tree and cannot be added elsewhere. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ @Override public Collection getMenuCategories() { return null; } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param el * the TestElement to configure */ @Override public void configure(TestElement el) { super.configure(el); if (el.getProperty(ReportPlan.USER_DEFINED_VARIABLES) != null) { argsPanel.configure((Arguments) el.getProperty(ReportPlan.USER_DEFINED_VARIABLES).getObjectValue()); } commentPanel.setText(el.getPropertyAsString(ReportPlan.REPORT_COMMENTS)); baseDir.setFilename(el.getPropertyAsString(ReportPlan.BASEDIR)); } /** * Create a panel allowing the user to define variables for the test. * * @return a panel for user-defined variables */ private JPanel createVariablePanel() { argsPanel = new ArgumentsPanel(JMeterUtils.getResString("user_defined_variables"), Color.white); return argsPanel; } private Container createCommentPanel() { JPanel panel = new JPanel(); panel.setBackground(Color.white); panel.setLayout(new BorderLayout(10, 10)); Container title = makeTitlePanel(); commentPanel = new JTextField(); commentPanel.setBackground(Color.white); JLabel label = new JLabel(JMeterUtils.getResString("testplan_comments")); label.setBackground(Color.white); label.setLabelFor(commentPanel); title.add(label); title.add(commentPanel); panel.add(title,BorderLayout.NORTH); panel.add(baseDir,BorderLayout.CENTER); return panel; } /** * Initialize the components and layout of this component. */ private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(10, 10)); setBorder(makeBorder()); setBackground(Color.white); add(createCommentPanel(), BorderLayout.NORTH); add(createVariablePanel(), BorderLayout.CENTER); } } apache-jmeter-2.8/src/i18nedit.properties0000644000175000017500000000223212032647222017751 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #I18NEdit settings for project # Do not change the default; it must remain as "en" locale.default=en locales=de es fr ja no pl pt_BR zh_CN zh_TW main.name=jakarta-jmeter # Do not change the sourcelocale unless you are sure what you are doing personal.User.sourcelocale=en # Change the target locale as needed personal.User.targetlocale=xx personal.User.workmode=directedapache-jmeter-2.8/src/examples/0000755000175000017500000000000012032647221016024 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/0000755000175000017500000000000012032647221016613 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/0000755000175000017500000000000012032647221020034 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/0000755000175000017500000000000012032647221021322 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/0000755000175000017500000000000012032647221023140 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/0000755000175000017500000000000012032647221025130 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/0000755000175000017500000000000012165514773026661 5ustar ebourgebourg././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_es.propertiesapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_es.pr0000644000175000017500000000161112032647221033246 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Ejemplo2 myStringProperty.displayName=Una Cadena ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources.propertiesapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources.prope0000644000175000017500000000154212032647221033266 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Example2 myStringProperty.displayName=A String././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_tr.propertiesapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_tr.pr0000644000175000017500000000161312032647221033266 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=\u00D6rnek2 myStringProperty.displayName=Bir Metin ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_pt_BR.propertiesapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_pt_BR0000644000175000017500000000157512032647221033236 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Exemplo 2 myStringProperty.displayName=Uma String (cadeia de caracteres) apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2.java0000644000175000017500000000433512032647221031172 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.examples.testbeans.example2; import java.util.Locale; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; /** * This TestBean is just an example about how to write testbeans. The intent is * to demonstrate usage of the TestBean features to podential TestBean * developers. Note that only the class's introspector view matters: the methods * do nothing -- nothing useful, in any case. */ public class Example2 extends AbstractSampler implements TestBean { private static final long serialVersionUID = 240L; public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.setSamplerData(myStringProperty); res.sampleStart(); // Do something ... res.setResponseData(myStringProperty.toLowerCase(Locale.ENGLISH), null); res.setDataType(SampleResult.TEXT); res.sampleEnd(); res.setSuccessful(true); return res; } private String myStringProperty; // A TestBean is a Java Bean. Just define some properties and they will // automagically show up in the GUI. // A String property: public void setMyStringProperty(String s) { myStringProperty=s; } public String getMyStringProperty() { return myStringProperty; } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_zh_TW.propertiesapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2Resources_zh_TW0000644000175000017500000000162112032647221033253 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=\u7BC4\u4F8B 2 myStringProperty.displayName=\u5B57\u4E32 apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example2/Example2BeanInfo.java0000644000175000017500000000203712032647221032571 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.examples.testbeans.example2; import org.apache.jmeter.testbeans.BeanInfoSupport; public class Example2BeanInfo extends BeanInfoSupport { public Example2BeanInfo() { super(Example2.class); // ... } } apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example3/0000755000175000017500000000000012165514773026662 5ustar ebourgebourg././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example3/Example3Resources.propertiesapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example3/Example3Resources.prope0000644000175000017500000000147412032647221033274 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Example3apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example3/Example3BeanInfo.java0000644000175000017500000000354012032647221032573 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.examples.testbeans.example3; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.TypeEditor; public class Example3BeanInfo extends BeanInfoSupport { private PropertyDescriptor getprop(String name) { return property(name); } private PropertyDescriptor getprop(String name, Object deflt) { PropertyDescriptor p = property(name); p.setValue(DEFAULT, deflt); p.setValue(NOT_UNDEFINED, Boolean.TRUE); return p; } public Example3BeanInfo() { super(Example3.class); getprop("mybool"); getprop("myBoolean1"); getprop("myBoolean2", "True"); getprop("myInt", "77"); getprop("myInteger1"); getprop("myInteger2", Integer.valueOf(123)); getprop("mylong", "99"); getprop("myLong1"); getprop("myLong2", Long.valueOf(456)); getprop("myString1"); getprop("myString2","abcd"); property("myFile2", TypeEditor.FileEditor); } } apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example3/Example3.java0000644000175000017500000001070512032647221031172 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.examples.testbeans.example3; import java.io.File; import java.lang.reflect.Field; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; /** * This TestBean is just an example of the use of different TestBean types. */ public class Example3 extends AbstractSampler implements TestBean { private static final long serialVersionUID = 240L; private boolean mybool; private Boolean myBoolean1, myBoolean2; private int myInt; private Integer myInteger1, myInteger2; private long mylong; private Long myLong1, myLong2; private String myString1, myString2; private File myFile1; private String myFile2; public SampleResult sample(Entry ignored) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.sampleStart(); StringBuilder bld = new StringBuilder(); for (Field field : this.getClass().getDeclaredFields()) { try { String name = field.getName(); if (name.startsWith("my")) { Object value = field.get(this); bld.append(name).append('='); bld.append(value); bld.append(" ("); bld.append(field.getType().getCanonicalName()); bld.append(")\n"); } } catch (IllegalAccessException e) { bld.append(e.toString()); } } res.setResponseData(bld.toString(), null); res.setDataType(SampleResult.TEXT); res.sampleEnd(); res.setSuccessful(true); return res; } public boolean isMybool() { return mybool; } public void setMybool(boolean mybool) { this.mybool = mybool; } public Boolean getMyBoolean1() { return myBoolean1; } public void setMyBoolean1(Boolean myBoolean1) { this.myBoolean1 = myBoolean1; } public Boolean getMyBoolean2() { return myBoolean2; } public void setMyBoolean2(Boolean myBoolean2) { this.myBoolean2 = myBoolean2; } public int getMyInt() { return myInt; } public void setMyInt(int myInt) { this.myInt = myInt; } public Integer getMyInteger1() { return myInteger1; } public void setMyInteger1(Integer myInteger1) { this.myInteger1 = myInteger1; } public Integer getMyInteger2() { return myInteger2; } public void setMyInteger2(Integer myInteger2) { this.myInteger2 = myInteger2; } public long getMylong() { return mylong; } public void setMylong(long mylong) { this.mylong = mylong; } public Long getMyLong1() { return myLong1; } public void setMyLong1(Long myLong1) { this.myLong1 = myLong1; } public Long getMyLong2() { return myLong2; } public void setMyLong2(Long myLong2) { this.myLong2 = myLong2; } public String getMyString1() { return myString1; } public void setMyString1(String myString1) { this.myString1 = myString1; } public String getMyString2() { return myString2; } public void setMyString2(String myString2) { this.myString2 = myString2; } public File getMyFile1() { return myFile1; } public void setMyFile1(File myFile) { this.myFile1 = myFile; } public String getMyFile2() { return myFile2; } public void setMyFile2(String myFile) { this.myFile2 = myFile; } } apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example1/0000755000175000017500000000000012165514773026660 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/testbeans/example1/Example1.java0000644000175000017500000000415012032647221031163 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.examples.testbeans.example1; import java.util.Locale; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; /** * This TestBean is just an example about how to write testbeans. The intent is * to demonstrate usage of the TestBean features to podential TestBean * developers. Note that only the class's introspector view matters: the methods * do nothing -- nothing useful, in any case. */ public class Example1 extends AbstractSampler implements TestBean { private static final long serialVersionUID = 240L; public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.setSamplerData(myStringProperty); res.sampleStart(); // Do something ... res.setResponseData(myStringProperty.toUpperCase(Locale.ENGLISH), null); res.setDataType(SampleResult.TEXT); res.sampleEnd(); res.setSuccessful(true); return res; } private String myStringProperty; // A String property: public void setMyStringProperty(String s) { myStringProperty=s; } public String getMyStringProperty() { return myStringProperty; } } apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/sampler/0000755000175000017500000000000012165514773024617 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/sampler/ExampleSampler.java0000644000175000017500000000741512032647221030374 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.examples.sampler; import java.util.concurrent.atomic.AtomicInteger; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Example Sampler (non-Bean version) * * JMeter creates an instance of a sampler class for every occurrence of the * element in every thread. [some additional copies may be created before the * test run starts] * * Thus each sampler is guaranteed to be called by a single thread - there is no * need to synchronize access to instance variables. * * However, access to class fields must be synchronized. * * @version $Revision: 1380563 $ */ public class ExampleSampler extends AbstractSampler { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); // The name of the property used to hold our data public static final String DATA = "ExampleSampler.data"; //$NON-NLS-1$ private static AtomicInteger classCount = new AtomicInteger(0); // keep track of classes created // (for instructional purposes only!) public ExampleSampler() { classCount.incrementAndGet(); trace("ExampleSampler()"); } /** * {@inheritDoc} */ public SampleResult sample(Entry e) { trace("sample()"); SampleResult res = new SampleResult(); boolean isOK = false; // Did sample succeed? String data = getData(); // Sampler data String response = null; res.setSampleLabel(getTitle()); /* * Perform the sampling */ res.sampleStart(); // Start timing try { // Do something here ... response = Thread.currentThread().getName(); /* * Set up the sample result details */ res.setSamplerData(data); res.setResponseData(response, null); res.setDataType(SampleResult.TEXT); res.setResponseCodeOK(); res.setResponseMessage("OK");// $NON-NLS-1$ isOK = true; } catch (Exception ex) { log.debug("", ex); res.setResponseCode("500");// $NON-NLS-1$ res.setResponseMessage(ex.toString()); } res.sampleEnd(); // End timimg res.setSuccessful(isOK); return res; } /** * @return a string for the sampleResult Title */ private String getTitle() { return this.getName(); } /** * @return the data for the sample */ public String getData() { return getPropertyAsString(DATA); } /* * Helper method */ private void trace(String s) { String tl = getTitle(); String tn = Thread.currentThread().getName(); String th = this.toString(); log.debug(tn + " (" + classCount.get() + ") " + tl + " " + s + " " + th); } }apache-jmeter-2.8/src/examples/org/apache/jmeter/examples/sampler/gui/0000755000175000017500000000000012165514773025403 5ustar ebourgebourgapache-jmeter-2.8/src/examples/org/apache/jmeter/examples/sampler/gui/ExampleSamplerGui.java0000644000175000017500000000674312032647221031630 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Example Sampler GUI (non-beans version) */ package org.apache.jmeter.examples.sampler.gui; import java.awt.BorderLayout; import java.awt.Component; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import org.apache.jmeter.examples.sampler.ExampleSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * Example Sampler (non-Bean version) * * This class is responsible for ensuring that the Sampler data is kept in step * with the GUI. * * The GUI class is not invoked in non-GUI mode, so it should not perform any * additional setup that a test would need at run-time * */ public class ExampleSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private JTextArea data; public ExampleSamplerGui() { init(); } /** * {@inheritDoc} */ public String getLabelResource() { return "example_title"; // $NON-NLS-1$ } /** * {@inheritDoc} */ @Override public void configure(TestElement element) { data.setText(element.getPropertyAsString(ExampleSampler.DATA)); super.configure(element); } /** * {@inheritDoc} */ public TestElement createTestElement() { ExampleSampler sampler = new ExampleSampler(); modifyTestElement(sampler); return sampler; } /** * {@inheritDoc} */ public void modifyTestElement(TestElement te) { te.clear(); configureTestElement(te); te.setProperty(ExampleSampler.DATA, data.getText()); } /* * Helper method to set up the GUI screen */ private void init() { // Standard setup setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); // Add the standard title // Specific setup add(createDataPanel(), BorderLayout.CENTER); } /* * Create a data input text field * * @return the panel for entering the data */ private Component createDataPanel() { JLabel label = new JLabel(JMeterUtils.getResString("example_data")); //$NON-NLS-1$ data = new JTextArea(); data.setName(ExampleSampler.DATA); label.setLabelFor(data); JPanel dataPanel = new JPanel(new BorderLayout(5, 0)); dataPanel.add(label, BorderLayout.WEST); dataPanel.add(data, BorderLayout.CENTER); return dataPanel; } /** * {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); data.setText(""); // $NON-NLS-1$ } }apache-jmeter-2.8/src/protocol/0000755000175000017500000000000012032647216016053 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/0000755000175000017500000000000012032647216016641 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/0000755000175000017500000000000012032647216017430 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/0000755000175000017500000000000012032647216020651 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/0000755000175000017500000000000012032647216022137 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024000 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/0000755000175000017500000000000012032647216024566 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/config/0000755000175000017500000000000012032647216026033 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/config/gui/0000755000175000017500000000000012165514773026627 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/config/gui/TCPConfigGui.java0000644000175000017500000001635212032647216031712 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.tcp.config.gui; import java.awt.BorderLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.ServerPanel; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.tcp.sampler.TCPSampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; public class TCPConfigGui extends AbstractConfigGui { private static final long serialVersionUID = 240L; private ServerPanel serverPanel; private JLabeledTextField classname; private JCheckBox reUseConnection; // NOTUSED yet private JTextField filename; private JCheckBox setNoDelay; private JTextArea requestData; private boolean displayName = true; public TCPConfigGui() { this(true); } public TCPConfigGui(boolean displayName) { this.displayName = displayName; init(); } public String getLabelResource() { return "tcp_config_title"; // $NON-NLS-1$ } @Override public void configure(TestElement element) { super.configure(element); // N.B. this will be a config element, so we cannot use the getXXX() methods classname.setText(element.getPropertyAsString(TCPSampler.CLASSNAME)); serverPanel.setServer(element.getPropertyAsString(TCPSampler.SERVER)); // Default to original behaviour, i.e. re-use connection reUseConnection.setSelected(element.getPropertyAsBoolean(TCPSampler.RE_USE_CONNECTION,true)); serverPanel.setPort(element.getPropertyAsString(TCPSampler.PORT)); // filename.setText(element.getPropertyAsString(TCPSampler.FILENAME)); serverPanel.setResponseTimeout(element.getPropertyAsString(TCPSampler.TIMEOUT)); serverPanel.setConnectTimeout(element.getPropertyAsString(TCPSampler.TIMEOUT_CONNECT)); setNoDelay.setSelected(element.getPropertyAsBoolean(TCPSampler.NODELAY)); requestData.setText(element.getPropertyAsString(TCPSampler.REQUEST)); } public TestElement createTestElement() { ConfigTestElement element = new ConfigTestElement(); modifyTestElement(element); return element; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { configureTestElement(element); // N.B. this will be a config element, so we cannot use the setXXX() methods element.setProperty(TCPSampler.CLASSNAME, classname.getText(), ""); element.setProperty(TCPSampler.SERVER, serverPanel.getServer()); element.setProperty(TCPSampler.RE_USE_CONNECTION, reUseConnection.isSelected()); element.setProperty(TCPSampler.PORT, serverPanel.getPort()); // element.setProperty(TCPSampler.FILENAME, filename.getText()); element.setProperty(TCPSampler.NODELAY, setNoDelay.isSelected()); element.setProperty(TCPSampler.TIMEOUT, serverPanel.getResponseTimeout()); element.setProperty(TCPSampler.TIMEOUT_CONNECT, serverPanel.getConnectTimeout(),""); element.setProperty(TCPSampler.REQUEST, requestData.getText()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); serverPanel.clear(); classname.setText(""); //$NON-NLS-1$ requestData.setText(""); //$NON-NLS-1$ reUseConnection.setSelected(true); setNoDelay.setSelected(false); } private JPanel createNoDelayPanel() { JLabel label = new JLabel(JMeterUtils.getResString("tcp_nodelay")); // $NON-NLS-1$ setNoDelay = new JCheckBox(); label.setLabelFor(setNoDelay); JPanel nodelayPanel = new JPanel(new BorderLayout(5, 0)); nodelayPanel.add(label, BorderLayout.WEST); nodelayPanel.add(setNoDelay, BorderLayout.CENTER); return nodelayPanel; } private JPanel createClosePortPanel() { JLabel label = new JLabel(JMeterUtils.getResString("reuseconnection")); //$NON-NLS-1$ reUseConnection = new JCheckBox("", true); label.setLabelFor(reUseConnection); JPanel closePortPanel = new JPanel(new BorderLayout(5, 0)); closePortPanel.add(label, BorderLayout.WEST); closePortPanel.add(reUseConnection, BorderLayout.CENTER); return closePortPanel; } private JPanel createRequestPanel() { JLabel reqLabel = new JLabel(JMeterUtils.getResString("tcp_request_data")); // $NON-NLS-1$ requestData = new JTextArea(3, 0); requestData.setLineWrap(true); reqLabel.setLabelFor(requestData); JPanel reqDataPanel = new JPanel(new BorderLayout(5, 0)); reqDataPanel.add(reqLabel, BorderLayout.WEST); reqDataPanel.add(requestData, BorderLayout.CENTER); return reqDataPanel; } // private JPanel createFilenamePanel()//Not used yet // { // // JLabel label = new JLabel(JMeterUtils.getResString("file_to_retrieve")); // $NON-NLS-1$ // // filename = new JTextField(10); // filename.setName(FILENAME); // label.setLabelFor(filename); // // JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); // filenamePanel.add(label, BorderLayout.WEST); // filenamePanel.add(filename, BorderLayout.CENTER); // return filenamePanel; // } private void init() { setLayout(new BorderLayout(0, 5)); serverPanel = new ServerPanel(); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } VerticalPanel mainPanel = new VerticalPanel(); classname = new JLabeledTextField(JMeterUtils.getResString("tcp_classname")); mainPanel.add(classname); mainPanel.add(serverPanel); HorizontalPanel optionsPanel = new HorizontalPanel(); optionsPanel.add(createClosePortPanel()); optionsPanel.add(createNoDelayPanel()); mainPanel.add(optionsPanel); mainPanel.add(createRequestPanel()); // mainPanel.add(createFilenamePanel()); add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/0000755000175000017500000000000012165514773026241 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImpl.java0000644000175000017500000001155012032647216032652 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * TCP Sampler Client implementation which reads and writes binary data. * * Input/Output strings are passed as hex-encoded binary strings. * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.io.IOUtils; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * TCPClient implementation. * Reads data until the defined EOM byte is reached. * If there is no EOM byte defined, then reads until * the end of the stream is reached. * The EOM byte is defined by the property "tcp.BinaryTCPClient.eomByte". * * Input data is assumed to be in hex, and is converted to binary */ public class BinaryTCPClientImpl extends AbstractTCPClient { private static final Logger log = LoggingManager.getLoggerForClass(); private static final int eomInt = JMeterUtils.getPropDefault("tcp.BinaryTCPClient.eomByte", 1000); // $NON_NLS-1$ public BinaryTCPClientImpl() { super(); setEolByte(eomInt); if (useEolByte) { log.info("Using eomByte=" + eolByte); } } /** * Convert hex string to binary byte array. * * @param hexEncodedBinary - hex-encoded binary string * @return Byte array containing binary representation of input hex-encoded string * @throws IllegalArgumentException if string is not an even number of hex digits */ public static final byte[] hexStringToByteArray(String hexEncodedBinary) { if (hexEncodedBinary.length() % 2 == 0) { char[] sc = hexEncodedBinary.toCharArray(); byte[] ba = new byte[sc.length / 2]; for (int i = 0; i < ba.length; i++) { int nibble0 = Character.digit(sc[i * 2], 16); int nibble1 = Character.digit(sc[i * 2 + 1], 16); if (nibble0 == -1 || nibble1 == -1){ throw new IllegalArgumentException( "Hex-encoded binary string contains an invalid hex digit in '"+sc[i * 2]+sc[i * 2 + 1]+"'"); } ba[i] = (byte) ((nibble0 << 4) | (nibble1)); } return ba; } else { throw new IllegalArgumentException( "Hex-encoded binary string contains an uneven no. of digits"); } } /** * Input (hex) string is converted to binary and written to the output stream. * @param os output stream * @param hexEncodedBinary hex-encoded binary */ public void write(OutputStream os, String hexEncodedBinary) throws IOException{ os.write(hexStringToByteArray(hexEncodedBinary)); os.flush(); if(log.isDebugEnabled()) { log.debug("Wrote: " + hexEncodedBinary); } } /** * {@inheritDoc} */ public void write(OutputStream os, InputStream is) { throw new UnsupportedOperationException( "Method not supported for Length-Prefixed data."); } /** * Reads data until the defined EOM byte is reached. * If there is no EOM byte defined, then reads until * the end of the stream is reached. * Response data is converted to hex-encoded binary * @return hex-encoded binary string * @throws ReadException */ public String read(InputStream is) throws ReadException { ByteArrayOutputStream w = new ByteArrayOutputStream(); try { byte[] buffer = new byte[4096]; int x = 0; while ((x = is.read(buffer)) > -1) { w.write(buffer, 0, x); if (useEolByte && (buffer[x - 1] == eolByte)) { break; } } IOUtils.closeQuietly(w); // For completeness final String hexString = JOrphanUtils.baToHexString(w.toByteArray()); if(log.isDebugEnabled()) { log.debug("Read: " + w.size() + "\n" + hexString); } return hexString; } catch (IOException e) { throw new ReadException("", e, JOrphanUtils.baToHexString(w.toByteArray())); } } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/LengthPrefixedBinaryTCPClientImpl.javaapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/LengthPrefixedBinaryTCPCli0000644000175000017500000000722212032647216033233 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * TCP Sampler Client implementation which reads and writes length-prefixed binary data. * * Input/Output strings are passed as hex-encoded binary strings. * * 2-Byte or 4-Byte length prefixes are supported. * * Length prefix is binary of length specified by property "tcp.length.prefix.length". * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Implements binary length-prefixed binary data. * This is used in ISO8583 for example. */ public class LengthPrefixedBinaryTCPClientImpl extends TCPClientDecorator { private static final Logger log = LoggingManager.getLoggerForClass(); private final int lengthPrefixLen = JMeterUtils.getPropDefault("tcp.binarylength.prefix.length", 2); // $NON-NLS-1$ public LengthPrefixedBinaryTCPClientImpl() { super(new BinaryTCPClientImpl()); tcpClient.setEolByte(Byte.MAX_VALUE+1); } /** * {@inheritDoc} */ public void write(OutputStream os, String s) throws IOException{ os.write(intToByteArray(s.length()/2,lengthPrefixLen)); if(log.isDebugEnabled()) { log.debug("Wrote: " + s.length()/2 + " bytes"); } this.tcpClient.write(os, s); } /** * {@inheritDoc} */ public void write(OutputStream os, InputStream is) throws IOException { this.tcpClient.write(os, is); } /** * {@inheritDoc} */ public String read(InputStream is) throws ReadException{ byte[] msg = new byte[0]; int msgLen = 0; byte[] lengthBuffer = new byte[lengthPrefixLen]; try { if (is.read(lengthBuffer, 0, lengthPrefixLen) == lengthPrefixLen) { msgLen = byteArrayToInt(lengthBuffer); msg = new byte[msgLen]; int bytes = JOrphanUtils.read(is, msg, 0, msgLen); if (bytes < msgLen) { log.warn("Incomplete message read, expected: "+msgLen+" got: "+bytes); } } String buffer = JOrphanUtils.baToHexString(msg); if(log.isDebugEnabled()) { log.debug("Read: " + msgLen + "\n" + buffer); } return buffer; } catch(IOException e) { throw new ReadException("", e, JOrphanUtils.baToHexString(msg)); } } /** * Not useful, as the byte is never used. *

        * {@inheritDoc} */ @Override public byte getEolByte() { return tcpClient.getEolByte(); } /** * {@inheritDoc} */ @Override public void setEolByte(int eolInt) { throw new UnsupportedOperationException("Cannot set eomByte for prefixed messages"); } } apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClientDecorator.java0000644000175000017500000000606512032647216032533 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * TCP Sampler Client decorator to permit wrapping base client implementations with length prefixes. * For example, character data or binary data with character length or binary length * */ package org.apache.jmeter.protocol.tcp.sampler; public abstract class TCPClientDecorator extends AbstractTCPClient { protected final TCPClient tcpClient; // the data implementation public TCPClientDecorator(TCPClient tcpClient) { this.tcpClient = tcpClient; } /** * Convert int to byte array. * * @param value * - int to be converted * @param len * - length of required byte array * @return Byte array representation of input value * @throws IllegalArgumentException if not length 2 or 4 or outside range of a short int. */ public static byte[] intToByteArray(int value, int len) { if (len == 2 || len == 4) { if (len == 2 && (value < Short.MIN_VALUE || value > Short.MAX_VALUE)) { throw new IllegalArgumentException("Value outside range for signed short int."); } else { byte[] b = new byte[len]; for (int i = 0; i < len; i++) { int offset = (b.length - 1 - i) * 8; b[i] = (byte) ((value >>> offset) & 0xFF); } return b; } } else { throw new IllegalArgumentException( "Length must be specified as either 2 or 4."); } } /** * Convert byte array to int. * * @param b * - Byte array to be converted * @return Integer value of input byte array * @throws IllegalArgumentException if ba is null or not length 2 or 4 */ public static int byteArrayToInt(byte[] b) { if (b != null && (b.length == 2 || b.length == 4)) { // Preserve sign on first byte int value = b[0] << ((b.length - 1) * 8); for (int i = 1; i < b.length; i++) { int offset = (b.length - 1 - i) * 8; value += (b[i] & 0xFF) << offset; } return value; } else { throw new IllegalArgumentException( "Byte array is null or invalid length."); } } } apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPSampler.java0000644000175000017500000004440312032647216031053 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * A sampler which understands Tcp requests. * */ public class TCPSampler extends AbstractSampler implements ThreadListener, Interruptible { private static final long serialVersionUID = 280L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.LoginConfigGui", "org.apache.jmeter.protocol.tcp.config.gui.TCPConfigGui", "org.apache.jmeter.config.gui.SimpleConfigGui"})); //++ JMX file constants - do not change public static final String SERVER = "TCPSampler.server"; //$NON-NLS-1$ public static final String PORT = "TCPSampler.port"; //$NON-NLS-1$ public static final String FILENAME = "TCPSampler.filename"; //$NON-NLS-1$ public static final String CLASSNAME = "TCPSampler.classname";//$NON-NLS-1$ public static final String NODELAY = "TCPSampler.nodelay"; //$NON-NLS-1$ public static final String TIMEOUT = "TCPSampler.timeout"; //$NON-NLS-1$ public static final String TIMEOUT_CONNECT = "TCPSampler.ctimeout"; //$NON-NLS-1$ public static final String REQUEST = "TCPSampler.request"; //$NON-NLS-1$ public static final String RE_USE_CONNECTION = "TCPSampler.reUseConnection"; //$NON-NLS-1$ //-- JMX file constants - do not change private static final String TCPKEY = "TCP"; //$NON-NLS-1$ key for HashMap private static final String ERRKEY = "ERR"; //$NON-NLS-1$ key for HashMap // If set, this is the regex that is used to extract the status from the // response // NOT implemented yet private static final String STATUS_REGEX = // JMeterUtils.getPropDefault("tcp.status.regex",""); // Otherwise, the response is scanned for these strings private static final String STATUS_PREFIX = JMeterUtils.getPropDefault("tcp.status.prefix", ""); //$NON-NLS-1$ private static final String STATUS_SUFFIX = JMeterUtils.getPropDefault("tcp.status.suffix", ""); //$NON-NLS-1$ private static final String STATUS_PROPERTIES = JMeterUtils.getPropDefault("tcp.status.properties", ""); //$NON-NLS-1$ private static final Properties statusProps = new Properties(); private static final boolean haveStatusProps; static { boolean hsp = false; log.debug("Status prefix=" + STATUS_PREFIX); //$NON-NLS-1$ log.debug("Status suffix=" + STATUS_SUFFIX); //$NON-NLS-1$ log.debug("Status properties=" + STATUS_PROPERTIES); //$NON-NLS-1$ if (STATUS_PROPERTIES.length() > 0) { File f = new File(STATUS_PROPERTIES); FileInputStream fis = null; try { fis = new FileInputStream(f); statusProps.load(fis); log.debug("Successfully loaded properties"); //$NON-NLS-1$ hsp = true; } catch (FileNotFoundException e) { log.debug("Property file not found"); //$NON-NLS-1$ } catch (IOException e) { log.debug("Property file error " + e.toString()); //$NON-NLS-1$ } finally { JOrphanUtils.closeQuietly(fis); } } haveStatusProps = hsp; } /** the cache of TCP Connections */ // KEY = TCPKEY or ERRKEY, Entry= Socket or String private static final ThreadLocal> tp = new ThreadLocal>() { @Override protected Map initialValue() { return new HashMap(); } }; private transient TCPClient protocolHandler; private transient boolean firstSample; // Are we processing the first sample? private transient volatile Socket currentSocket; // used for handling interrupt public TCPSampler() { log.debug("Created " + this); //$NON-NLS-1$ } private String getError() { Map cp = tp.get(); return (String) cp.get(ERRKEY); } private Socket getSocket(String socketKey) { Map cp = tp.get(); Socket con = null; if (isReUseConnection()) { con = (Socket) cp.get(socketKey); if (con != null) { log.debug(this + " Reusing connection " + con); //$NON-NLS-1$ } } if (con == null) { // Not in cache, so create new one and cache it try { closeSocket(socketKey); // Bug 44910 - close previous socket (if any) SocketAddress sockaddr = new InetSocketAddress(getServer(), getPort()); con = new Socket(); con.connect(sockaddr, getConnectTimeout()); if(log.isDebugEnabled()) { log.debug("Created new connection " + con); //$NON-NLS-1$ } cp.put(socketKey, con); } catch (UnknownHostException e) { log.warn("Unknown host for " + getLabel(), e);//$NON-NLS-1$ cp.put(ERRKEY, e.toString()); return null; } catch (IOException e) { log.warn("Could not create socket for " + getLabel(), e); //$NON-NLS-1$ cp.put(ERRKEY, e.toString()); return null; } } // (re-)Define connection params - Bug 50977 try { con.setSoTimeout(getTimeout()); con.setTcpNoDelay(getNoDelay()); if(log.isDebugEnabled()) { log.debug(this + " Timeout " + getTimeout() + " NoDelay " + getNoDelay()); //$NON-NLS-1$ } } catch (SocketException se) { log.warn("Could not set timeout or nodelay for " + getLabel(), se); //$NON-NLS-1$ cp.put(ERRKEY, se.toString()); } return con; } /** * @return String socket key in cache Map */ private final String getSocketKey() { return TCPKEY+"#"+getServer()+"#"+getPort()+"#"+getUsername()+"#"+getPassword(); } public String getUsername() { return getPropertyAsString(ConfigTestElement.USERNAME); } public String getPassword() { return getPropertyAsString(ConfigTestElement.PASSWORD); } public void setServer(String newServer) { this.setProperty(SERVER, newServer); } public String getServer() { return getPropertyAsString(SERVER); } public void setReUseConnection(String reuse) { this.setProperty(RE_USE_CONNECTION, reuse); } public boolean isReUseConnection() { return getPropertyAsBoolean(RE_USE_CONNECTION); } public void setPort(String newFilename) { this.setProperty(PORT, newFilename); } public int getPort() { return getPropertyAsInt(PORT); } public void setFilename(String newFilename) { this.setProperty(FILENAME, newFilename); } public String getFilename() { return getPropertyAsString(FILENAME); } public void setRequestData(String newRequestData) { this.setProperty(REQUEST, newRequestData); } public String getRequestData() { return getPropertyAsString(REQUEST); } public void setTimeout(String newTimeout) { this.setProperty(TIMEOUT, newTimeout); } public int getTimeout() { return getPropertyAsInt(TIMEOUT); } public void setConnectTimeout(String newTimeout) { this.setProperty(TIMEOUT_CONNECT, newTimeout, ""); } public int getConnectTimeout() { return getPropertyAsInt(TIMEOUT_CONNECT, 0); } public void setNoDelay(String newNoDelay) { this.setProperty(NODELAY, newNoDelay); } public boolean getNoDelay() { return getPropertyAsBoolean(NODELAY); } public void setClassname(String classname) { this.setProperty(CLASSNAME, classname, ""); //$NON-NLS-1$ } public String getClassname() { String clazz = getPropertyAsString(CLASSNAME,""); if (clazz==null || clazz.length()==0){ clazz = JMeterUtils.getPropDefault("tcp.handler", "TCPClientImpl"); //$NON-NLS-1$ $NON-NLS-2$ } return clazz; } /** * Returns a formatted string label describing this sampler Example output: * Tcp://Tcp.nowhere.com/pub/README.txt * * @return a formatted string label describing this sampler */ public String getLabel() { return ("tcp://" + this.getServer() + ":" + this.getPort());//$NON-NLS-1$ $NON-NLS-2$ } private static final String protoPrefix = "org.apache.jmeter.protocol.tcp.sampler."; //$NON-NLS-1$ private Class getClass(String className) { Class c = null; try { c = Class.forName(className, false, Thread.currentThread().getContextClassLoader()); } catch (ClassNotFoundException e) { try { c = Class.forName(protoPrefix + className, false, Thread.currentThread().getContextClassLoader()); } catch (ClassNotFoundException e1) { log.error("Could not find protocol class '" + className+"'"); //$NON-NLS-1$ } } return c; } private TCPClient getProtocol() { TCPClient TCPClient = null; Class javaClass = getClass(getClassname()); if (javaClass == null){ return null; } try { TCPClient = (TCPClient) javaClass.newInstance(); if (log.isDebugEnabled()) { log.debug(this + "Created: " + getClassname() + "@" + Integer.toHexString(TCPClient.hashCode())); //$NON-NLS-1$ } } catch (Exception e) { log.error(this + " Exception creating: " + getClassname(), e); //$NON-NLS-1$ } return TCPClient; } public SampleResult sample(Entry e)// Entry tends to be ignored ... { if (firstSample) { // Do stuff we cannot do as part of threadStarted() initSampling(); firstSample=false; } String socketKey = getSocketKey(); log.debug(getLabel() + " " + getFilename() + " " + getUsername() + " " + getPassword()); SampleResult res = new SampleResult(); boolean isSuccessful = false; res.setSampleLabel(getName());// Use the test element name for the label res.setSamplerData("Host: " + getServer() + " Port: " + getPort()); //$NON-NLS-1$ $NON-NLS-2$ res.sampleStart(); try { Socket sock = getSocket(socketKey); if (sock == null) { res.setResponseCode("500"); //$NON-NLS-1$ res.setResponseMessage(getError()); } else if (protocolHandler == null){ res.setResponseCode("500"); //$NON-NLS-1$ res.setResponseMessage("Protocol handler not found"); } else { currentSocket = sock; InputStream is = sock.getInputStream(); OutputStream os = sock.getOutputStream(); String req = getRequestData(); // TODO handle filenames res.setSamplerData(req); protocolHandler.write(os, req); String in = protocolHandler.read(is); isSuccessful = setupSampleResult(res, in, null, protocolHandler.getCharset()); } } catch (ReadException ex) { log.error("", ex); isSuccessful=setupSampleResult(res, ex.getPartialResponse(), ex,protocolHandler.getCharset()); closeSocket(socketKey); } catch (Exception ex) { log.error("", ex); isSuccessful=setupSampleResult(res, "", ex, protocolHandler.getCharset()); closeSocket(socketKey); } finally { currentSocket = null; // Calculate response time res.sampleEnd(); // Set if we were successful or not res.setSuccessful(isSuccessful); if (!isReUseConnection()) { closeSocket(socketKey); } } return res; } /** * Fills SampleResult object * @param sampleResult {@link SampleResult} * @param readResponse Response read until error occured * @param exception Source exception * @param encoding sample encoding * @return boolean if sample is considered as successful */ private boolean setupSampleResult(SampleResult sampleResult, String readResponse, Exception exception, String encoding) { sampleResult.setResponseData(readResponse, encoding); sampleResult.setDataType(SampleResult.TEXT); if(exception==null) { sampleResult.setResponseCodeOK(); sampleResult.setResponseMessage("OK"); //$NON-NLS-1$ } else { sampleResult.setResponseCode("500"); //$NON-NLS-1$ sampleResult.setResponseMessage(exception.toString()); //$NON-NLS-1$ } boolean isSuccessful = exception == null; // Reset the status code if the message contains one if (!StringUtils.isEmpty(readResponse) && STATUS_PREFIX.length() > 0) { int i = readResponse.indexOf(STATUS_PREFIX); int j = readResponse.indexOf(STATUS_SUFFIX, i + STATUS_PREFIX.length()); if (i != -1 && j > i) { String rc = readResponse.substring(i + STATUS_PREFIX.length(), j); sampleResult.setResponseCode(rc); isSuccessful = isSuccessful && checkResponseCode(rc); if (haveStatusProps) { sampleResult.setResponseMessage(statusProps.getProperty(rc, "Status code not found in properties")); //$NON-NLS-1$ } else { sampleResult.setResponseMessage("No status property file"); } } else { sampleResult.setResponseCode("999"); //$NON-NLS-1$ sampleResult.setResponseMessage("Status value not found"); isSuccessful = false; } } return isSuccessful; } /** * @param rc response code * @return whether this represents success or not */ private boolean checkResponseCode(String rc) { if (rc.compareTo("400") >= 0 && rc.compareTo("499") <= 0) { //$NON-NLS-1$ $NON-NLS-2$ return false; } if (rc.compareTo("500") >= 0 && rc.compareTo("599") <= 0) { //$NON-NLS-1$ $NON-NLS-2$ return false; } return true; } public void threadStarted() { log.debug("Thread Started"); //$NON-NLS-1$ firstSample = true; } // Cannot do this as part of threadStarted() because the Config elements have not been processed. private void initSampling(){ protocolHandler = getProtocol(); log.debug("Using Protocol Handler: " + //$NON-NLS-1$ (protocolHandler == null ? "NONE" : protocolHandler.getClass().getName())); //$NON-NLS-1$ if (protocolHandler != null){ protocolHandler.setupTest(); } } /** * Close socket of current sampler */ private void closeSocket(String socketKey) { Map cp = tp.get(); Socket con = (Socket) cp.remove(socketKey); if (con != null) { log.debug(this + " Closing connection " + con); //$NON-NLS-1$ try { con.close(); } catch (IOException e) { log.warn("Error closing socket "+e); //$NON-NLS-1$ } } } /** * {@inheritDoc} */ public void threadFinished() { log.debug("Thread Finished"); //$NON-NLS-1$ tearDown(); if (protocolHandler != null){ protocolHandler.teardownTest(); } } /** * Closes all connections, clears Map and remove thread local Map */ private void tearDown() { Map cp = tp.get(); for (Map.Entry element : cp.entrySet()) { if(element.getKey().startsWith(TCPKEY)) { try { ((Socket)element.getValue()).close(); } catch (IOException e) { // NOOP } } } cp.clear(); tp.remove(); } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } public boolean interrupt() { Socket sock = currentSocket; // fetch in case gets nulled later if (sock != null) { try { sock.close(); } catch (IOException e) { // ignored } return true; } return false; } } apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClient.java0000644000175000017500000000475512032647216030674 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on 24-Sep-2003 * * Interface for generic TCP protocol handler * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Interface required by TCPSampler for TCPClient implementations. */ public interface TCPClient { /** * Versions of JMeter after 2.3.2 invoke this method when the thread starts. */ void setupTest(); /** * Versions of JMeter after 2.3.2 invoke this method when the thread ends. */ void teardownTest(); /** * * @param os - * OutputStream for socket * @param is - * InputStream to be written to Socket */ void write(OutputStream os, InputStream is) throws IOException; /** * * @param os - * OutputStream for socket * @param s - * String to write */ void write(OutputStream os, String s) throws IOException; /** * * @param is - * InputStream for socket * @return String read from socket * @throws ReadException exception that can contain partial response (Response until error occured) */ String read(InputStream is) throws ReadException; /** * Get the end-of-line/end-of-message byte. * @return Returns the eolByte. */ byte getEolByte(); /** * Get the charset. * @return Returns the charset. */ String getCharset(); /** * Set the end-of-line/end-of-message byte. * If the value is out of range of a byte, then it is to be ignored. * * @param eolInt * The value to set */ void setEolByte(int eolInt); }apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/TCPClientImpl.java0000644000175000017500000000725112032647216031510 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Basic TCP Sampler Client class * * Can be used to test the TCP Sampler against an HTTP server * * The protocol handler class name is defined by the property tcp.handler * */ package org.apache.jmeter.protocol.tcp.sampler; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.Charset; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Sample TCPClient implementation. * Reads data until the defined EOL byte is reached. * If there is no EOL byte defined, then reads until * the end of the stream is reached. * The EOL byte is defined by the property "tcp.eolByte". */ public class TCPClientImpl extends AbstractTCPClient { private static final Logger log = LoggingManager.getLoggerForClass(); private int eolInt = JMeterUtils.getPropDefault("tcp.eolByte", 1000); // $NON-NLS-1$ private String charset = JMeterUtils.getPropDefault("tcp.charset", Charset.defaultCharset().name()); // $NON-NLS-1$ // default is not in range of a byte public TCPClientImpl() { super(); setEolByte(eolInt); if (useEolByte) { log.info("Using eolByte=" + eolByte); } setCharset(charset); String configuredCharset = JMeterUtils.getProperty("tcp.charset"); if(StringUtils.isEmpty(configuredCharset)) { log.info("Using platform default charset:"+charset); } else { log.info("Using charset:"+configuredCharset); } } /** * {@inheritDoc} */ public void write(OutputStream os, String s) throws IOException{ os.write(s.getBytes(charset)); os.flush(); if(log.isDebugEnabled()) { log.debug("Wrote: " + s); } } /** * {@inheritDoc} */ public void write(OutputStream os, InputStream is) throws IOException{ byte buff[]=new byte[512]; while(is.read(buff) > 0){ os.write(buff); os.flush(); } } /** * Reads data until the defined EOL byte is reached. * If there is no EOL byte defined, then reads until * the end of the stream is reached. */ public String read(InputStream is) throws ReadException{ ByteArrayOutputStream w = new ByteArrayOutputStream(); try { byte[] buffer = new byte[4096]; int x = 0; while ((x = is.read(buffer)) > -1) { w.write(buffer, 0, x); if (useEolByte && (buffer[x - 1] == eolByte)) { break; } } // do we need to close byte array (or flush it?) if(log.isDebugEnabled()) { log.debug("Read: " + w.size() + "\n" + w.toString()); } return w.toString(charset); } catch (IOException e) { throw new ReadException("", e, w.toString()); } } } apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/AbstractTCPClient.java0000644000175000017500000000350012032647216032343 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.tcp.sampler; /** * Basic implementation of TCPClient interface. */ public abstract class AbstractTCPClient implements TCPClient { private String charset; protected byte eolByte; protected boolean useEolByte = false; /** * {@inheritDoc} */ public byte getEolByte() { return eolByte; } /** * {@inheritDoc} */ public void setEolByte(int eolInt) { if (eolInt >= Byte.MIN_VALUE && eolInt <= Byte.MAX_VALUE) { this.eolByte = (byte) eolInt; useEolByte = true; } else { useEolByte = false; } } /** * {@inheritDoc} */ public void setupTest() { } /** * {@inheritDoc} */ public void teardownTest() { } /** * @return the charset */ public String getCharset() { return charset; } /** * @param charset the charset to set */ public void setCharset(String charset) { this.charset = charset; } } apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/ReadException.java0000644000175000017500000000321412032647216031626 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.tcp.sampler; /** * Exception that contains partial response (Text read until exception occured) */ public class ReadException extends Exception { private static final long serialVersionUID = -2770054697780959330L; private final String partialResponse; /** * @deprecated For use by test code only (serialisation tests) */ @Deprecated public ReadException() { this(null, null, null); } /** * Constructor * @param message Message * @param cause Source cause * @param partialResponse Text read until error occured */ public ReadException(String message, Throwable cause, String partialResponse) { super(message, cause); this.partialResponse = partialResponse; } /** * @return the partialResponse Text read until error occured */ public String getPartialResponse() { return partialResponse; } }apache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/control/0000755000175000017500000000000012032647216026246 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/control/gui/0000755000175000017500000000000012165514773027042 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/tcp/org/apache/jmeter/protocol/tcp/control/gui/TCPSamplerGui.java0000644000175000017500000000620412032647216032316 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.tcp.control.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import org.apache.jmeter.config.gui.LoginConfigGui; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.tcp.config.gui.TCPConfigGui; import org.apache.jmeter.protocol.tcp.sampler.TCPSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class TCPSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private LoginConfigGui loginPanel; private TCPConfigGui tcpDefaultPanel; public TCPSamplerGui() { init(); } @Override public void configure(TestElement element) { super.configure(element); loginPanel.configure(element); tcpDefaultPanel.configure(element); } public TestElement createTestElement() { TCPSampler sampler = new TCPSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement sampler) { sampler.clear(); sampler.addTestElement(tcpDefaultPanel.createTestElement()); sampler.addTestElement(loginPanel.createTestElement()); this.configureTestElement(sampler); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); tcpDefaultPanel.clearGui(); loginPanel.clearGui(); } public String getLabelResource() { return "tcp_sample_title"; // $NON-NLS-1$ } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); VerticalPanel mainPanel = new VerticalPanel(); tcpDefaultPanel = new TCPConfigGui(false); mainPanel.add(tcpDefaultPanel); loginPanel = new LoginConfigGui(false); loginPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("login_config"))); // $NON-NLS-1$ mainPanel.add(loginPanel); add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/protocol/mail/0000755000175000017500000000000012032647216016775 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/0000755000175000017500000000000012032647216017564 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/0000755000175000017500000000000012032647216021005 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/0000755000175000017500000000000012032647216022273 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024134 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/0000755000175000017500000000000012032647216025117 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/0000755000175000017500000000000012165514773026572 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/0000755000175000017500000000000012165514773027356 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpSamplerGui.java0000644000175000017500000001757012032647216033137 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.gui; import java.awt.BorderLayout; import java.awt.Component; import org.apache.jmeter.protocol.smtp.sampler.SmtpSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; /** * Class to build superstructure-gui for SMTP-panel, sets/gets value for a JMeter's testElement-object (i.e. also for save/load-purposes). * This class extends AbstractSamplerGui, therefor most implemented methods are defined by JMeter's structure. */ public class SmtpSamplerGui extends AbstractSamplerGui { /** * */ private static final long serialVersionUID = 1L; private SmtpPanel smtpPanel; /** * Creates new SmtpSamplerGui, standard constructer. Calls init(); */ public SmtpSamplerGui() { init(); } /** * Method to be implemented by interface, overwritten by getStaticLabel(). Method has to be implemented by interface * @return Null-String * @see org.apache.jmeter.gui.JMeterGUIComponent#getLabelResource() */ public String getLabelResource() { return "smtp_sampler_title"; } /** * Copy the data from the test element to the GUI, method has to be implemented by interface * @param element Test-element to be used as data-input * @see org.apache.jmeter.gui.AbstractJMeterGuiComponent#configure(org.apache.jmeter.testelement.TestElement) */ @Override public void configure(TestElement element) { if (smtpPanel == null){ smtpPanel = new SmtpPanel(); } smtpPanel.setServer(element.getPropertyAsString(SmtpSampler.SERVER)); smtpPanel.setPort(element.getPropertyAsString(SmtpSampler.SERVER_PORT)); smtpPanel.setMailFrom(element.getPropertyAsString(SmtpSampler.MAIL_FROM)); smtpPanel.setMailReplyTo(element.getPropertyAsString(SmtpSampler.MAIL_REPLYTO)); smtpPanel.setReceiverTo(element.getPropertyAsString(SmtpSampler.RECEIVER_TO)); smtpPanel.setReceiverCC(element.getPropertyAsString(SmtpSampler.RECEIVER_CC)); smtpPanel.setReceiverBCC(element.getPropertyAsString(SmtpSampler.RECEIVER_BCC)); smtpPanel.setBody(element.getPropertyAsString(SmtpSampler.MESSAGE)); smtpPanel.setPlainBody(element.getPropertyAsBoolean(SmtpSampler.PLAIN_BODY)); smtpPanel.setSubject(element.getPropertyAsString(SmtpSampler.SUBJECT)); smtpPanel.setSuppressSubject(element.getPropertyAsBoolean(SmtpSampler.SUPPRESS_SUBJECT)); smtpPanel.setIncludeTimestamp(element.getPropertyAsBoolean(SmtpSampler.INCLUDE_TIMESTAMP)); JMeterProperty headers = element.getProperty(SmtpSampler.HEADER_FIELDS); if (headers instanceof CollectionProperty) { // Might be NullProperty smtpPanel.setHeaderFields((CollectionProperty)headers); } else { smtpPanel.setHeaderFields(new CollectionProperty()); } smtpPanel.setAttachments(element.getPropertyAsString(SmtpSampler.ATTACH_FILE)); smtpPanel.setUseEmlMessage(element.getPropertyAsBoolean(SmtpSampler.USE_EML)); smtpPanel.setEmlMessage(element.getPropertyAsString(SmtpSampler.EML_MESSAGE_TO_SEND)); SecuritySettingsPanel secPanel = smtpPanel.getSecuritySettingsPanel(); secPanel.configure(element); smtpPanel.setUseAuth(element.getPropertyAsBoolean(SmtpSampler.USE_AUTH)); smtpPanel.setUsername(element.getPropertyAsString(SmtpSampler.USERNAME)); smtpPanel.setPassword(element.getPropertyAsString(SmtpSampler.PASSWORD)); smtpPanel.setMessageSizeStatistic(element.getPropertyAsBoolean(SmtpSampler.MESSAGE_SIZE_STATS)); smtpPanel.setEnableDebug(element.getPropertyAsBoolean(SmtpSampler.ENABLE_DEBUG)); super.configure(element); } /** * Creates a new TestElement and set up its data * @return Test-element for JMeter * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { SmtpSampler sampler = new SmtpSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components * @param te TestElement for JMeter * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(org.apache.jmeter.testelement.TestElement) */ public void modifyTestElement(TestElement te) { te.clear(); super.configureTestElement(te); te.setProperty(SmtpSampler.SERVER, smtpPanel.getServer()); te.setProperty(SmtpSampler.SERVER_PORT, smtpPanel.getPort()); te.setProperty(SmtpSampler.MAIL_FROM, smtpPanel.getMailFrom()); te.setProperty(SmtpSampler.MAIL_REPLYTO, smtpPanel.getMailReplyTo()); te.setProperty(SmtpSampler.RECEIVER_TO, smtpPanel.getReceiverTo()); te.setProperty(SmtpSampler.RECEIVER_CC, smtpPanel.getReceiverCC()); te.setProperty(SmtpSampler.RECEIVER_BCC, smtpPanel.getReceiverBCC()); te.setProperty(SmtpSampler.SUBJECT, smtpPanel.getSubject()); te.setProperty(SmtpSampler.SUPPRESS_SUBJECT, Boolean.toString(smtpPanel.isSuppressSubject())); te.setProperty(SmtpSampler.INCLUDE_TIMESTAMP, Boolean.toString(smtpPanel.isIncludeTimestamp())); te.setProperty(SmtpSampler.MESSAGE, smtpPanel.getBody()); te.setProperty(SmtpSampler.PLAIN_BODY, Boolean.toString(smtpPanel.isPlainBody())); te.setProperty(SmtpSampler.ATTACH_FILE, smtpPanel.getAttachments()); SecuritySettingsPanel secPanel = smtpPanel.getSecuritySettingsPanel(); secPanel.modifyTestElement(te); te.setProperty(SmtpSampler.USE_EML, smtpPanel.isUseEmlMessage()); te.setProperty(SmtpSampler.EML_MESSAGE_TO_SEND, smtpPanel.getEmlMessage()); te.setProperty(SmtpSampler.USE_AUTH, Boolean.toString(smtpPanel.isUseAuth())); te.setProperty(SmtpSampler.PASSWORD, smtpPanel.getPassword()); te.setProperty(SmtpSampler.USERNAME, smtpPanel.getUsername()); te.setProperty(SmtpSampler.MESSAGE_SIZE_STATS, Boolean.toString(smtpPanel.isMessageSizeStatistics())); te.setProperty(SmtpSampler.ENABLE_DEBUG, Boolean.toString(smtpPanel.isEnableDebug())); te.setProperty(smtpPanel.getHeaderFields()); } /** * Helper method to set up the GUI screen */ private void init() { // Standard setup setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); // Add the standard title add(makeDataPanel(), BorderLayout.CENTER); } /** * {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); if (smtpPanel != null) { smtpPanel.clear(); } } /** * Creates a sampler-gui-object, singleton-method * @return Panel for entering the data */ private Component makeDataPanel() { if (smtpPanel == null) smtpPanel = new SmtpPanel(); return smtpPanel; } }././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SecuritySettingsPanel.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SecuritySettingsPane0000644000175000017500000003571012032647216033433 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.gui; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class SecuritySettingsPanel extends JPanel{ private static final long serialVersionUID = 1L; //++JMX attribute names - do not change the values! // These were moved from SMTPSampler, which is why the prefix is still SMTSampler public static final String USE_SSL = "SMTPSampler.useSSL"; // $NON-NLS-1$ public static final String USE_STARTTLS = "SMTPSampler.useStartTLS"; // $NON-NLS-1$ public static final String SSL_TRUST_ALL_CERTS = "SMTPSampler.trustAllCerts"; // $NON-NLS-1$ public static final String ENFORCE_STARTTLS = "SMTPSampler.enforceStartTLS"; // $NON-NLS-1$ public static final String USE_LOCAL_TRUSTSTORE = "SMTPSampler.useLocalTrustStore"; // $NON-NLS-1$ public static final String TRUSTSTORE_TO_USE = "SMTPSampler.trustStoreToUse"; // $NON-NLS-1$ //--JMX attribute names private ButtonGroup bgSecuritySettings; private JRadioButton rbUseNone; private JRadioButton rbUseSSL; private JRadioButton rbUseStartTLS; private JCheckBox cbTrustAllCerts; private JCheckBox cbEnforceStartTLS; private JCheckBox cbUseLocalTrustStore; private JLabel jlTrustStoreToUse; private JTextField tfTrustStoreToUse; public SecuritySettingsPanel() { super(); init(); } public void init(){ this.setLayout(new GridBagLayout()); this.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("smtp_security_settings"))); // $NON-NLS-1$ GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.weightx = 0.5; rbUseNone = new JRadioButton(JMeterUtils.getResString("smtp_usenone")); // $NON-NLS-1$ rbUseSSL = new JRadioButton(JMeterUtils.getResString("smtp_usessl")); // $NON-NLS-1$ rbUseStartTLS = new JRadioButton(JMeterUtils.getResString("smtp_usestarttls")); // $NON-NLS-1$ cbTrustAllCerts = new JCheckBox(JMeterUtils.getResString("smtp_trustall")); // $NON-NLS-1$ cbEnforceStartTLS = new JCheckBox(JMeterUtils.getResString("smtp_enforcestarttls")); // $NON-NLS-1$ cbUseLocalTrustStore = new JCheckBox(JMeterUtils.getResString("smtp_usetruststore")); // $NON-NLS-1$ jlTrustStoreToUse = new JLabel(JMeterUtils.getResString("smtp_truststore")); // $NON-NLS-1$ tfTrustStoreToUse = new JTextField(20); rbUseNone.setSelected(true); bgSecuritySettings = new ButtonGroup(); bgSecuritySettings.add(rbUseNone); bgSecuritySettings.add(rbUseSSL); bgSecuritySettings.add(rbUseStartTLS); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; this.add(rbUseNone, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; this.add(rbUseSSL, gridBagConstraints); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; this.add(rbUseStartTLS, gridBagConstraints); rbUseNone.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent evt) { rbSecuritySettingsItemStateChanged(evt); } }); rbUseSSL.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent evt) { rbSecuritySettingsItemStateChanged(evt); } }); rbUseStartTLS.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent evt) { rbSecuritySettingsItemStateChanged(evt); } }); cbTrustAllCerts.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbTrustAllCerts.setMargin(new java.awt.Insets(0, 0, 0, 0)); cbTrustAllCerts.setEnabled(false); cbTrustAllCerts.setToolTipText(JMeterUtils.getResString("smtp_trustall_tooltip")); // $NON-NLS-1$ cbTrustAllCerts.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { cbTrustAllCertsActionPerformed(evt); } }); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; this.add(cbTrustAllCerts, gridBagConstraints); cbEnforceStartTLS.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbEnforceStartTLS.setMargin(new java.awt.Insets(0, 0, 0, 0)); cbEnforceStartTLS.setEnabled(false); cbEnforceStartTLS.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { cbEnforceStartTLSActionPerformed(evt); } }); cbEnforceStartTLS.setToolTipText(JMeterUtils.getResString("smtp_enforcestarttls_tooltip")); // $NON-NLS-1$ gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; this.add(cbEnforceStartTLS, gridBagConstraints); cbUseLocalTrustStore.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbUseLocalTrustStore.setMargin(new java.awt.Insets(0, 0, 0, 0)); cbUseLocalTrustStore.setEnabled(false); cbUseLocalTrustStore.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { cbUseLocalTrustStoreActionPerformed(evt); } }); cbUseLocalTrustStore.setToolTipText(JMeterUtils.getResString("smtp_usetruststore_tooltip")); // $NON-NLS-1$ gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; this.add(cbUseLocalTrustStore, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 1; jlTrustStoreToUse.setToolTipText(JMeterUtils.getResString("smtp_truststore_tooltip")); this.add(jlTrustStoreToUse, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; tfTrustStoreToUse.setToolTipText(JMeterUtils.getResString("smtp_truststore_tooltip")); this.add(tfTrustStoreToUse, gridBagConstraints); } /** * ActionPerformed-method for checkbox "useLocalTrustStore" * * @param evt * ActionEvent to be handled */ private void cbUseLocalTrustStoreActionPerformed( ActionEvent evt) { final boolean selected = cbUseLocalTrustStore.isSelected(); tfTrustStoreToUse.setEditable(selected); // must follow the checkbox setting if (selected) { cbTrustAllCerts.setSelected(false); // not compatible } } /** * ActionPerformed-method for checkbox "cbTrustAllCerts" * * @param evt * ActionEvent to be handled */ private void cbTrustAllCertsActionPerformed( ActionEvent evt) { final boolean selected = cbTrustAllCerts.isSelected(); if (selected) { cbUseLocalTrustStore.setSelected(false); // not compatible tfTrustStoreToUse.setEditable(false); // must follow the checkbox setting } } /** * ActionPerformed-method for checkbox "enforceStartTLS", empty method * header * * @param evt * ActionEvent to be handled */ private void cbEnforceStartTLSActionPerformed(ActionEvent evt) { } /** * ItemStateChanged-method for radiobutton "securitySettings" * * @param evt * ItemEvent to be handled */ private void rbSecuritySettingsItemStateChanged(ItemEvent evt) { final Object source = evt.getSource(); if (source == rbUseNone) { cbTrustAllCerts.setEnabled(false); cbTrustAllCerts.setSelected(false); cbEnforceStartTLS.setEnabled(false); cbEnforceStartTLS.setSelected(false); cbUseLocalTrustStore.setSelected(false); cbUseLocalTrustStore.setEnabled(false); tfTrustStoreToUse.setEditable(false); } else if (source == rbUseSSL) { cbTrustAllCerts.setEnabled(true); cbEnforceStartTLS.setEnabled(false); cbEnforceStartTLS.setSelected(false); cbUseLocalTrustStore.setEnabled(true); tfTrustStoreToUse.setEditable(false); } else if (source == rbUseStartTLS) { cbTrustAllCerts.setEnabled(true); cbTrustAllCerts.setSelected(false); cbEnforceStartTLS.setEnabled(true); cbUseLocalTrustStore.setEnabled(true); cbUseLocalTrustStore.setSelected(false); tfTrustStoreToUse.setEditable(false); } } /** * Returns if SSL is used to secure the SMTP-connection (checkbox) * * @return true if SSL is used to secure the SMTP-connection */ public boolean isUseSSL() { return rbUseSSL.isSelected(); } /** * Sets SSL to be used to secure the SMTP-connection (checkbox) * * @param useSSL * Use SSL to secure the connection */ public void setUseSSL(boolean useSSL) { rbUseSSL.setSelected(useSSL); } /** * Returns if StartTLS is used to secure the connection (checkbox) * * @return true if StartTLS is used to secure the connection */ public boolean isUseStartTLS() { return rbUseStartTLS.isSelected(); } /** * Sets StartTLS to be used to secure the SMTP-connection (checkbox) * * @param useStartTLS * Use StartTLS to secure the connection */ public void setUseStartTLS(boolean useStartTLS) { rbUseStartTLS.setSelected(useStartTLS); } /** * Returns if StartTLS is enforced (normally, SMTP uses plain * SMTP-connection as fallback if "250-STARTTLS" isn't sent from the * mailserver) (checkbox) * * @return true if StartTLS is enforced */ public boolean isEnforceStartTLS() { return cbEnforceStartTLS.isSelected(); } /** * Enforces StartTLS to secure the SMTP-connection (checkbox) * * @param enforceStartTLS * Enforce the use of StartTLS to secure the connection * @see #isEnforceStartTLS() */ public void setEnforceStartTLS(boolean enforceStartTLS) { cbEnforceStartTLS.setSelected(enforceStartTLS); } /** * Returns if local (pre-installed) truststore is used to avoid * SSL-connection-exceptions (checkbox) * * @return true if a local truststore is used */ public boolean isUseLocalTrustStore() { return cbUseLocalTrustStore.isSelected(); } /** * Set the use of a local (pre-installed) truststore to avoid * SSL-connection-exceptions (checkbox) * * @param useLocalTrustStore * Use local keystore */ public void setUseLocalTrustStore(boolean useLocalTrustStore) { cbUseLocalTrustStore.setSelected(useLocalTrustStore); tfTrustStoreToUse.setEditable(useLocalTrustStore); // ensure correctly set on initial display } /** * Returns the path to the local (pre-installed) truststore to be used to * avoid SSL-connection-exceptions * * @return Path to local truststore */ public String getTrustStoreToUse() { return tfTrustStoreToUse.getText(); } /** * Set the path to local (pre-installed) truststore to be used to avoid * SSL-connection-exceptions * * @param trustStoreToUse * Path to local truststore */ public void setTrustStoreToUse(String trustStoreToUse) { tfTrustStoreToUse.setText(trustStoreToUse); } public void setUseNoSecurity(boolean selected) { rbUseNone.setSelected(selected); } /** * Returns if all certificates are blindly trusted (using according * SocketFactory) (checkbox) * * @return true if all certificates are blindly trusted */ public boolean isTrustAllCerts() { return cbTrustAllCerts.isSelected(); } /** * Enforces JMeter to trust all certificates, no matter what CA is issuer * (checkbox) * * @param trustAllCerts * Trust all certificates * @see #isTrustAllCerts() */ public void setTrustAllCerts(boolean trustAllCerts) { cbTrustAllCerts.setSelected(trustAllCerts); } public void clear() { tfTrustStoreToUse.setText(""); rbUseNone.setSelected(true); } public void configure(TestElement element) { setUseSSL(element.getPropertyAsBoolean(USE_SSL)); setUseStartTLS(element.getPropertyAsBoolean(USE_STARTTLS)); if(!element.getPropertyAsBoolean(USE_STARTTLS) && !element.getPropertyAsBoolean(USE_SSL)){ setUseNoSecurity(true); } setTrustAllCerts(element.getPropertyAsBoolean(SSL_TRUST_ALL_CERTS)); setEnforceStartTLS(element.getPropertyAsBoolean(ENFORCE_STARTTLS)); setUseLocalTrustStore(element.getPropertyAsBoolean(USE_LOCAL_TRUSTSTORE)); setTrustStoreToUse(element.getPropertyAsString(TRUSTSTORE_TO_USE)); } public void modifyTestElement(TestElement te) { te.setProperty(USE_SSL, Boolean.toString(isUseSSL())); te.setProperty(USE_STARTTLS, Boolean.toString(isUseStartTLS())); te.setProperty(SSL_TRUST_ALL_CERTS, Boolean.toString(isTrustAllCerts())); te.setProperty(ENFORCE_STARTTLS, Boolean.toString(isEnforceStartTLS())); te.setProperty(USE_LOCAL_TRUSTSTORE, Boolean.toString(isUseLocalTrustStore())); te.setProperty(TRUSTSTORE_TO_USE, getTrustStoreToUse()); } } apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpPanel.java0000644000175000017500000011115612032647216032121 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.gui; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.config.Argument; import org.apache.jmeter.protocol.smtp.sampler.SmtpSampler; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; /** * Class to build gui-components for SMTP-sampler. Getter-methods serve the * input-data to the sampler-object, which provides them to the * SendMailCommand-object. */ public class SmtpPanel extends JPanel { private static final long serialVersionUID = 1L; // local vars private JTextField tfMailFrom; private JTextField tfMailReplyTo; private JButton browseButton; private JButton emlBrowseButton; private JCheckBox cbUseAuth; private JTextField tfMailServer; private JTextField tfMailServerPort; private JTextField tfMailTo; private JTextField tfMailToCC; private JTextField tfMailToBCC; private JTextField tfAttachment; private JTextField tfEmlMessage; private JTextArea taMessage; private JCheckBox cbPlainBody; private JLabel jlAddressFrom; private JLabel jlAddressReplyTo; private JLabel jlAddressTo; private JLabel jlAddressToCC; private JLabel jlAddressToBCC; private JLabel jlMailServerPort; private JLabel jlMailServer; private JLabel jlAttachFile; private JLabel jlDutPortStandard; private JLabel jlPassword; private JLabel jlSubject; private JLabel jlUsername; private JLabel jlMessage; private JFileChooser attachmentFileChooser; private JFileChooser emlFileChooser; private JTextField tfAuthPassword; private JTextField tfAuthUsername; private JTextField tfSubject; private JCheckBox cbSuppressSubject; private JCheckBox cbIncludeTimestamp; private JCheckBox cbMessageSizeStats; private JCheckBox cbEnableDebug; private JCheckBox cbUseEmlMessage; private JPanel headerFieldsPanel; private JButton addHeaderFieldButton; private JLabel headerFieldName; private JLabel headerFieldValue; private Map headerFields = new HashMap(); private Map removeButtons = new HashMap(); private int headerGridY = 0; private SecuritySettingsPanel securitySettingsPanel; /** * Creates new form SmtpPanel, standard constructer. Calls * initComponents();. */ public SmtpPanel() { initComponents(); } /** * Returns sender-address for e-mail from textfield * * @return Sender */ public String getMailFrom() { return tfMailFrom.getText(); } /** * Returns receiver in field "to" from textfield * * @return Receiver "to" */ public String getReceiverTo() { return tfMailTo.getText(); } /** * Returns receiver in field "cc" from textfield * * @return Receiver "cc" */ public String getReceiverCC() { return tfMailToCC.getText(); } /** * Returns receiver in field "bcc" from textfield * * @return Receiver "bcc" */ public String getReceiverBCC() { return tfMailToBCC.getText(); } /** * Returns message body, i.e. main-mime-part of message (from textfield) * * @return Message body */ public String getBody() { return taMessage.getText(); } /** * Sets message body, i.e. main-mime-part of message in textfield * * @param messageBodyText * Message body */ public void setBody(String messageBodyText) { taMessage.setText(messageBodyText); } /** * Sets sender-address of e-mail in textfield * * @param mailFrom * Sender */ public void setMailFrom(String mailFrom) { tfMailFrom.setText(mailFrom); } /** * Sets receiver in textfield "to" * * @param mailTo * Receiver "to" */ public void setReceiverTo(String mailTo) { tfMailTo.setText(mailTo); } /** * Sets receiver in textfield "cc" * * @param mailToCC * Receiver "cc" */ public void setReceiverCC(String mailToCC) { tfMailToCC.setText(mailToCC); } /** * Sets receiver in textfield "bcc" * * @param mailToBCC * Receiver "bcc" */ public void setReceiverBCC(String mailToBCC) { tfMailToBCC.setText(mailToBCC); } /** * Returns path of file(s) to be attached in e-mail from textfield * * @return File to attach */ public String getAttachments() { return tfAttachment.getText(); } /** * Sets path of file to be attached in e-mail in textfield * * @param attachments * File to attach */ public void setAttachments(String attachments) { tfAttachment.setText(attachments); } /** * Returns port of mail-server (standard 25 for SMTP/SMTP with StartTLS, 465 * for SSL) from textfield * * @return Mail-server port */ public String getPort() { return tfMailServerPort.getText(); } /** * Sets port of mail-server * * @param port * Mail-server port */ public void setPort(String port) { tfMailServerPort.setText(port); } /** * Returns mail-server to be used to send message (from textfield) * * @return FQDN or IP of mail-server */ public String getServer() { return tfMailServer.getText(); } /** * Sets mail-server to be used to send message in textfield * * @param server * FQDN or IP of mail-server */ public void setServer(String server) { tfMailServer.setText(server); } /** * Returns subject of the e-mail from textfield * * @return Subject of e-mail */ public String getSubject() { return tfSubject.getText(); } /** * Sets subject of the e-mail in textfield * * @param subject * Subject of e-mail */ public void setSubject(String subject) { tfSubject.setText(subject); } /** * Returns true if subject header should be suppressed * * @return true if subject header should be suppressed */ public boolean isSuppressSubject() { return cbSuppressSubject.isSelected(); } /** * Sets the property that defines if the subject header should be suppressed * * @param emptySubject * */ public void setSuppressSubject(boolean emptySubject) { cbSuppressSubject.setSelected(emptySubject); } /** * Returns true if message body should be plain (i.e. not multipart/mixed) * * @return true if using plain message body (i.e. not multipart/mixed) */ public boolean isPlainBody() { return cbPlainBody.isSelected(); } /** * Sets the property that defines if the body should be plain (i.e. not multipart/mixed) * * @param plainBody whether to use a plain body (i.e. not multipart/mixed) */ public void setPlainBody(boolean plainBody) { cbPlainBody.setSelected(plainBody); } /** * Returns if mail-server needs authentication (checkbox) * * @return true if authentication is used */ public boolean isUseAuth() { return cbUseAuth.isSelected(); } /** * Set whether mail server needs auth. * * @param selected */ public void setUseAuth(boolean selected){ cbUseAuth.setSelected(selected); tfAuthPassword.setEditable(selected); // ensure correctly set on initial display tfAuthUsername.setEditable(selected); // ensure correctly set on initial display } public boolean isEnableDebug() { return cbEnableDebug.isSelected(); } public void setEnableDebug(boolean selected){ cbEnableDebug.setSelected(selected); } /** * Returns if an .eml-message is sent instead of the content of message-text * area * * @return true if .eml is sent, false if text area content is sent in * e-mail */ public boolean isUseEmlMessage() { return cbUseEmlMessage.isSelected(); } /** * Set the use of an .eml-message instead of the content of message-text * area * * @param useEmlMessage * Use eml message */ public void setUseEmlMessage(boolean useEmlMessage) { cbUseEmlMessage.setSelected(useEmlMessage); } /** * Returns path to eml message to be sent * * @return path to eml message to be sent */ public String getEmlMessage() { return tfEmlMessage.getText(); } /** * Set path to eml message to be sent * * @param emlMessage * path to eml message to be sent */ public void setEmlMessage(String emlMessage) { tfEmlMessage.setText(emlMessage); } /** * Returns if current timestamp is included in the subject (checkbox) * * @return true if current timestamp is included in subject */ public boolean isIncludeTimestamp() { return cbIncludeTimestamp.isSelected(); } /** * Set timestamp to be included in the message-subject (checkbox) * * @param includeTimestamp * Should timestamp be included in subject? */ public void setIncludeTimestamp(boolean includeTimestamp) { cbIncludeTimestamp.setSelected(includeTimestamp); } /** * Returns if message size statistics are processed. Output of processing * will be included in sample result. (checkbox) * * @return True if message size will be calculated */ public boolean isMessageSizeStatistics() { return cbMessageSizeStats.isSelected(); } /** * Set message size to be calculated and included in sample result * (checkbox) * * @param val * Schould message size be calculated? */ public void setMessageSizeStatistic(boolean val) { cbMessageSizeStats.setSelected(val); } public String getPassword() { return tfAuthPassword.getText(); } public void setPassword(String authPassword) { tfAuthPassword.setText(authPassword); } public String getUsername() { return tfAuthUsername.getText(); } public void setUsername(String username) { tfAuthUsername.setText(username); } public CollectionProperty getHeaderFields() { CollectionProperty result = new CollectionProperty(); result.setName(SmtpSampler.HEADER_FIELDS); for (Iterator iterator = headerFields.keySet().iterator(); iterator.hasNext();) { JTextField headerName = iterator.next(); String name = headerName.getText(); String value = headerFields.get(headerName).getText(); Argument argument = new Argument(name, value); result.addItem(argument); } return result; } public void setHeaderFields(CollectionProperty fields) { clearHeaderFields(); for (int i = 0; i < fields.size(); i++) { Argument argument = (Argument)((TestElementProperty)fields.get(i)).getObjectValue(); String name = argument.getName(); JButton removeButton = addHeaderActionPerformed(null); JTextField nameTF = removeButtons.get(removeButton); nameTF.setText(name); JTextField valueTF = headerFields.get(nameTF); valueTF.setText(argument.getValue()); } validate(); } public String getMailReplyTo() { return tfMailReplyTo.getText(); } public void setMailReplyTo(String replyTo) { tfMailReplyTo.setText(replyTo); } /** * Main method of class, builds all gui-components for SMTP-sampler. */ private void initComponents() { GridBagConstraints gridBagConstraints, gridBagConstraintsMain; jlAddressReplyTo = new JLabel(JMeterUtils.getResString("smtp_replyto")); // $NON-NLS-1$ jlAddressFrom = new JLabel(JMeterUtils.getResString("smtp_from")); // $NON-NLS-1$ jlAddressTo = new JLabel(JMeterUtils.getResString("smtp_to")); // $NON-NLS-1$ jlAddressToCC = new JLabel(JMeterUtils.getResString("smtp_cc")); // $NON-NLS-1$ jlAddressToBCC = new JLabel(JMeterUtils.getResString("smtp_bcc")); // $NON-NLS-1$ jlMailServerPort = new JLabel(JMeterUtils.getResString("smtp_server_port")); // $NON-NLS-1$ jlMailServer = new JLabel(JMeterUtils.getResString("smtp_server")); // $NON-NLS-1$ jlAttachFile = new JLabel(JMeterUtils.getResString("smtp_attach_file")); // $NON-NLS-1$ jlDutPortStandard = new JLabel(JMeterUtils.getResString("smtp_default_port")); // $NON-NLS-1$ jlUsername = new JLabel(JMeterUtils.getResString("smtp_username")); // $NON-NLS-1$ jlPassword = new JLabel(JMeterUtils.getResString("smtp_password")); // $NON-NLS-1$ jlSubject = new JLabel(JMeterUtils.getResString("smtp_subject")); // $NON-NLS-1$ jlMessage = new JLabel(JMeterUtils.getResString("smtp_message")); // $NON-NLS-1$ tfMailServer = new JTextField(30); tfMailServerPort = new JTextField(6); tfMailFrom = new JTextField(25); tfMailReplyTo = new JTextField(25); tfMailTo = new JTextField(25); tfMailToCC = new JTextField(25); tfMailToBCC = new JTextField(25); tfAuthUsername = new JTextField(20); tfAuthPassword = new JPasswordField(20); tfSubject = new JTextField(20); tfAttachment = new JTextField(30); tfEmlMessage = new JTextField(30); taMessage = new JTextArea(5, 20); cbPlainBody = new JCheckBox(JMeterUtils.getResString("smtp_plainbody")); // $NON-NLS-1$ cbSuppressSubject = new JCheckBox(JMeterUtils.getResString("smtp_suppresssubj")); // $NON-NLS-1$ cbSuppressSubject.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent evt) { emptySubjectActionPerformed(evt); } }); cbUseAuth = new JCheckBox(JMeterUtils.getResString("smtp_useauth")); // $NON-NLS-1$ cbIncludeTimestamp = new JCheckBox(JMeterUtils.getResString("smtp_timestamp")); // $NON-NLS-1$ cbMessageSizeStats = new JCheckBox(JMeterUtils.getResString("smtp_messagesize")); // $NON-NLS-1$ cbEnableDebug = new JCheckBox(JMeterUtils.getResString("smtp_enabledebug")); // $NON-NLS-1$ cbUseEmlMessage = new JCheckBox(JMeterUtils.getResString("smtp_eml")); // $NON-NLS-1$ attachmentFileChooser = new JFileChooser(); emlFileChooser = new JFileChooser(); browseButton = new JButton(JMeterUtils.getResString("browse")); // $NON-NLS-1$ emlBrowseButton = new JButton(JMeterUtils.getResString("browse")); // $NON-NLS-1$ attachmentFileChooser .addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { attachmentFolderFileChooserActionPerformed(evt); } }); emlFileChooser.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { emlFileChooserActionPerformed(evt); } }); setLayout(new GridBagLayout()); gridBagConstraintsMain = new GridBagConstraints(); gridBagConstraintsMain.fill = GridBagConstraints.HORIZONTAL; gridBagConstraintsMain.anchor = GridBagConstraints.WEST; gridBagConstraintsMain.weightx = 0.5; gridBagConstraints = new GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.fill = GridBagConstraints.NONE; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.weightx = 0.5; /* * Server Settings */ JPanel panelServerSettings = new JPanel(new GridBagLayout()); panelServerSettings.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("smtp_server_settings"))); // $NON-NLS-1$ gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; panelServerSettings.add(jlMailServer, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; panelServerSettings.add(tfMailServer, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; panelServerSettings.add(jlMailServerPort, gridBagConstraints); JPanel panelServerPortSettings = new JPanel(new GridBagLayout()); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; panelServerPortSettings.add(tfMailServerPort, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; panelServerPortSettings.add(jlDutPortStandard, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; panelServerSettings.add(panelServerPortSettings, gridBagConstraints); gridBagConstraintsMain.gridx = 0; gridBagConstraintsMain.gridy = 0; add(panelServerSettings, gridBagConstraintsMain); /* * E-Mail Settings */ JPanel panelMailSettings = new JPanel(new GridBagLayout()); panelMailSettings.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("smtp_mail_settings"))); // $NON-NLS-1$ gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; panelMailSettings.add(jlAddressFrom, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; panelMailSettings.add(tfMailFrom, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; panelMailSettings.add(jlAddressTo, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; panelMailSettings.add(tfMailTo, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; panelMailSettings.add(jlAddressToCC, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 2; panelMailSettings.add(tfMailToCC, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; panelMailSettings.add(jlAddressToBCC, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; panelMailSettings.add(tfMailToBCC, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; panelMailSettings.add(jlAddressReplyTo, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; panelMailSettings.add(tfMailReplyTo, gridBagConstraints); gridBagConstraintsMain.gridx = 0; gridBagConstraintsMain.gridy = 1; add(panelMailSettings, gridBagConstraintsMain); /* * Auth Settings */ JPanel panelAuthSettings = new JPanel(new GridBagLayout()); panelAuthSettings.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("smtp_auth_settings"))); // $NON-NLS-1$ cbUseAuth.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbUseAuth.setMargin(new java.awt.Insets(0, 0, 0, 0)); cbUseAuth.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { cbUseAuthActionPerformed(evt); } }); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; panelAuthSettings.add(cbUseAuth, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 1; gridBagConstraints.weightx = 0; panelAuthSettings.add(jlUsername, gridBagConstraints); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.weightx = 0.5; panelAuthSettings.add(tfAuthUsername, gridBagConstraints); tfAuthUsername.setEditable(false); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 1; gridBagConstraints.weightx = 0; panelAuthSettings.add(jlPassword, gridBagConstraints); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.weightx = 0.5; panelAuthSettings.add(tfAuthPassword, gridBagConstraints); tfAuthPassword.setEditable(false); gridBagConstraintsMain.gridx = 0; gridBagConstraintsMain.gridy = 2; add(panelAuthSettings, gridBagConstraintsMain); /* * Security Settings */ securitySettingsPanel = new SecuritySettingsPanel(); gridBagConstraintsMain.gridx = 0; gridBagConstraintsMain.gridy = 3; add(securitySettingsPanel, gridBagConstraintsMain); /* * (non-Javadoc) Message Settings */ JPanel panelMessageSettings = new JPanel(new GridBagLayout()); panelMessageSettings.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("smtp_message_settings"))); // $NON-NLS-1$ gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; panelMessageSettings.add(jlSubject, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; panelMessageSettings.add(tfSubject, gridBagConstraints); cbSuppressSubject.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbSuppressSubject.setMargin(new java.awt.Insets(0, 0, 0, 0)); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 0; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(cbSuppressSubject, gridBagConstraints); cbIncludeTimestamp.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbIncludeTimestamp.setMargin(new java.awt.Insets(0, 0, 0, 0)); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 1; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(cbIncludeTimestamp, gridBagConstraints); /* * Add the header panel */ addHeaderFieldButton = new JButton(JMeterUtils.getResString("smtp_header_add")); addHeaderFieldButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { addHeaderActionPerformed(evt); } }); headerFieldName = new JLabel(JMeterUtils.getResString("smtp_header_name")); headerFieldValue = new JLabel(JMeterUtils.getResString("smtp_header_value")); headerFieldsPanel = new JPanel(new GridBagLayout()); headerFieldName.setVisible(false); headerFieldValue.setVisible(false); headerGridY=0; gridBagConstraints.gridx = 0; gridBagConstraints.gridy = headerGridY++; headerFieldsPanel.add(addHeaderFieldButton, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = headerGridY; headerFieldsPanel.add(headerFieldName, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = headerGridY++; headerFieldsPanel.add(headerFieldValue, gridBagConstraints); gridBagConstraintsMain.gridx = 1; gridBagConstraintsMain.gridy = 2; panelMessageSettings.add(headerFieldsPanel, gridBagConstraintsMain); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; panelMessageSettings.add(jlMessage, gridBagConstraints); taMessage.setBorder(BorderFactory.createBevelBorder(1)); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.fill = GridBagConstraints.BOTH; panelMessageSettings.add(taMessage, gridBagConstraints); cbPlainBody.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbPlainBody.setMargin(new java.awt.Insets(0, 0, 0, 0)); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 3; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(cbPlainBody, gridBagConstraints); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(jlAttachFile, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; panelMessageSettings.add(tfAttachment, gridBagConstraints); tfAttachment.setToolTipText(JMeterUtils.getResString("smtp_attach_file_tooltip")); // $NON-NLS-1$ browseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { browseButtonActionPerformed(evt); } }); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 4; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(browseButton, gridBagConstraints); cbUseEmlMessage.setSelected(false); cbUseEmlMessage.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { cbUseEmlMessageActionPerformed(evt); } }); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 5; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(cbUseEmlMessage, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 5; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; tfEmlMessage.setEnabled(false); panelMessageSettings.add(tfEmlMessage, gridBagConstraints); emlBrowseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { emlBrowseButtonActionPerformed(evt); } }); emlBrowseButton.setEnabled(false); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 5; gridBagConstraints.fill = GridBagConstraints.NONE; panelMessageSettings.add(emlBrowseButton, gridBagConstraints); gridBagConstraintsMain.gridx = 0; gridBagConstraintsMain.gridy = 6; add(panelMessageSettings, gridBagConstraintsMain); /* * Additional Settings */ JPanel panelAdditionalSettings = new JPanel(new GridBagLayout()); panelAdditionalSettings.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("smtp_additional_settings"))); // $NON-NLS-1$ cbMessageSizeStats.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); cbMessageSizeStats.setMargin(new java.awt.Insets(0, 0, 0, 0)); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; panelAdditionalSettings.add(cbMessageSizeStats, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 0; panelAdditionalSettings.add(cbEnableDebug, gridBagConstraints); gridBagConstraintsMain.gridx = 0; gridBagConstraintsMain.gridy = 7; add(panelAdditionalSettings, gridBagConstraintsMain); } /** * ActionPerformed-method for checkbox "useAuth" * * @param evt * ActionEvent to be handled */ private void cbUseAuthActionPerformed(ActionEvent evt) { tfAuthUsername.setEditable(cbUseAuth.isSelected()); tfAuthPassword.setEditable(cbUseAuth.isSelected()); } /** * ActionPerformed-method for filechoser "attachmentFileChoser", creates * FileChoser-Object * * @param evt * ActionEvent to be handled */ private void attachmentFolderFileChooserActionPerformed(ActionEvent evt) { File chosen = attachmentFileChooser.getSelectedFile(); if (chosen == null){ return; } final String attachments = tfAttachment.getText().trim(); if (null != attachments && attachments.length() > 0) { tfAttachment.setText(attachments + SmtpSampler.FILENAME_SEPARATOR + chosen.getAbsolutePath()); } else { tfAttachment.setText(chosen.getAbsolutePath()); } } /** * ActionPerformed-method for button "browseButton", opens FileDialog-Object * * @param evt * ActionEvent to be handled */ private void browseButtonActionPerformed(ActionEvent evt) { attachmentFileChooser.showOpenDialog(this); } private void cbUseEmlMessageActionPerformed(ActionEvent evt) { if (cbUseEmlMessage.isSelected()) { tfEmlMessage.setEnabled(true); emlBrowseButton.setEnabled(true); /*tfMailFrom.setEnabled(false); tfMailTo.setEnabled(false); tfMailToCC.setEnabled(false); tfMailToBCC.setEnabled(false); tfSubject.setEnabled(false);*/ taMessage.setEnabled(false); tfAttachment.setEnabled(false); browseButton.setEnabled(false); } else { tfEmlMessage.setEnabled(false); emlBrowseButton.setEnabled(false); /*tfMailFrom.setEnabled(true); tfMailTo.setEnabled(true); tfMailToCC.setEnabled(true); tfMailToBCC.setEnabled(true); tfSubject.setEnabled(true);*/ taMessage.setEnabled(true); tfAttachment.setEnabled(true); browseButton.setEnabled(true); } } /** * ActionPerformed-method for filechoser "emlFileChoser", creates * FileChoser-Object * * @param evt * ActionEvent to be handled */ private void emlFileChooserActionPerformed(ActionEvent evt) { tfEmlMessage.setText(emlFileChooser.getSelectedFile().getAbsolutePath()); } /** * ActionPerformed-method for button "emlButton", opens FileDialog-Object * * @param evt * ActionEvent to be handled */ private void emlBrowseButtonActionPerformed(ActionEvent evt) { emlFileChooser.showOpenDialog(this); } /** * Reset all the Gui fields. */ public void clear() { cbIncludeTimestamp.setSelected(false); cbMessageSizeStats.setSelected(false); cbEnableDebug.setSelected(false); cbUseEmlMessage.setSelected(false); cbUseAuth.setSelected(false); taMessage.setText(""); tfAttachment.setText(""); tfAuthPassword.setText(""); tfAuthUsername.setText(""); tfEmlMessage.setText(""); tfMailFrom.setText(""); tfMailReplyTo.setText(""); tfMailServer.setText(""); tfMailServerPort.setText(""); tfMailTo.setText(""); tfMailToBCC.setText(""); tfMailToCC.setText(""); tfSubject.setText(""); cbPlainBody.setSelected(false); cbSuppressSubject.setSelected(false); securitySettingsPanel.clear(); clearHeaderFields(); validate(); } private void clearHeaderFields() { headerFieldName.setVisible(false); headerFieldValue.setVisible(false); for (Iterator iterator = removeButtons.keySet().iterator(); iterator.hasNext();) { JButton removeButton = iterator.next(); JTextField headerName = removeButtons.get(removeButton); JTextField headerValue = headerFields.get(headerName); headerFieldsPanel.remove(headerName); if (headerValue != null){ // Can be null (not sure why) headerFieldsPanel.remove(headerValue); } headerFieldsPanel.remove(removeButton); headerFields.remove(headerName); iterator.remove(); } } private JButton addHeaderActionPerformed(ActionEvent evt){ if(headerFields.size() == 0){ headerFieldName.setVisible(true); headerFieldValue.setVisible(true); } JTextField nameTF = new JTextField(); JTextField valueTF = new JTextField(); JButton removeButton = new JButton(JMeterUtils.getResString("smtp_header_remove")); headerFields.put(nameTF, valueTF); removeButtons.put(removeButton, nameTF); removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { removeHeaderActionPerformed(evt); } }); GridBagConstraints gridBagConstraints = new GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.weightx = 0.5; gridBagConstraints.anchor = GridBagConstraints.WEST; gridBagConstraints.gridx = 0; gridBagConstraints.gridy = headerGridY; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; headerFieldsPanel.add(nameTF, gridBagConstraints); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = headerGridY; gridBagConstraints.fill = GridBagConstraints.HORIZONTAL; headerFieldsPanel.add(valueTF, gridBagConstraints); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = headerGridY++; gridBagConstraints.fill = GridBagConstraints.NONE; headerFieldsPanel.add(removeButton, gridBagConstraints); validate(); return removeButton; } public SecuritySettingsPanel getSecuritySettingsPanel() { return securitySettingsPanel; } public void setSecuritySettingsPanel(SecuritySettingsPanel securitySettingsPanel) { this.securitySettingsPanel = securitySettingsPanel; } private void removeHeaderActionPerformed(ActionEvent evt){ final Object source = evt.getSource(); if(source != null && source instanceof JButton){ if(headerFields.size() == 1){ headerFieldName.setVisible(false); headerFieldValue.setVisible(false); } JTextField nameTF = removeButtons.get(source); JTextField valueTF = headerFields.get(nameTF); headerFields.remove(nameTF); headerFieldsPanel.remove(nameTF); headerFieldsPanel.remove(valueTF); headerFieldsPanel.remove((JButton)source); validate(); } } private void emptySubjectActionPerformed(ChangeEvent evt) { final Object source = evt.getSource(); if(source != null && source instanceof JCheckBox){ if(cbSuppressSubject.isSelected()){ tfSubject.setEnabled(false); cbIncludeTimestamp.setEnabled(false); }else{ tfSubject.setEnabled(true); cbIncludeTimestamp.setEnabled(true); } } } }apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java0000644000175000017500000004265312032647216031706 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.mail.AuthenticationFailedException; import javax.mail.BodyPart; import javax.mail.Header; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.internet.AddressException; import javax.mail.internet.ContentType; import javax.mail.internet.InternetAddress; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.protocol.smtp.sampler.gui.SecuritySettingsPanel; import org.apache.jmeter.protocol.smtp.sampler.protocol.SendMailCommand; import org.apache.jmeter.protocol.smtp.sampler.tools.CounterOutputStream; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Sampler-Class for JMeter - builds, starts and interprets the results of the * sampler. Has to implement some standard-methods for JMeter in order to be * integrated in the framework. All getter/setter methods just deliver/set * values from/to the sampler, not from/to the message-object. Therefore, all * these methods are also present in class SendMailCommand. */ public class SmtpSampler extends AbstractSampler { private static final long serialVersionUID = 1L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private static final Logger log = LoggingManager.getLoggerForClass(); //+JMX file attribute names - do not change any values! public static final String SERVER = "SMTPSampler.server"; // $NON-NLS-1$ public static final String SERVER_PORT = "SMTPSampler.serverPort"; // $NON-NLS-1$ public static final String USE_AUTH = "SMTPSampler.useAuth"; // $NON-NLS-1$ public static final String USERNAME = "SMTPSampler.username"; // $NON-NLS-1$ public static final String PASSWORD = "SMTPSampler.password"; // $NON-NLS-1$ public static final String MAIL_FROM = "SMTPSampler.mailFrom"; // $NON-NLS-1$ public static final String MAIL_REPLYTO = "SMTPSampler.replyTo"; // $NON-NLS-1$ public static final String RECEIVER_TO = "SMTPSampler.receiverTo"; // $NON-NLS-1$ public static final String RECEIVER_CC = "SMTPSampler.receiverCC"; // $NON-NLS-1$ public static final String RECEIVER_BCC = "SMTPSampler.receiverBCC"; // $NON-NLS-1$ public static final String SUBJECT = "SMTPSampler.subject"; // $NON-NLS-1$ public static final String SUPPRESS_SUBJECT = "SMTPSampler.suppressSubject"; // $NON-NLS-1$ public static final String MESSAGE = "SMTPSampler.message"; // $NON-NLS-1$ public static final String PLAIN_BODY = "SMTPSampler.plainBody"; // $NON-NLS-1$ public static final String INCLUDE_TIMESTAMP = "SMTPSampler.include_timestamp"; // $NON-NLS-1$ public static final String ATTACH_FILE = "SMTPSampler.attachFile"; // $NON-NLS-1$ public static final String MESSAGE_SIZE_STATS = "SMTPSampler.messageSizeStatistics"; // $NON-NLS-1$ public static final String HEADER_FIELDS = "SMTPSampler.headerFields"; // $NON-NLS-1$ public static final String USE_EML = "SMTPSampler.use_eml"; // $NON-NLS-1$ public static final String EML_MESSAGE_TO_SEND = "SMTPSampler.emlMessageToSend"; // $NON-NLS-1$ public static final String ENABLE_DEBUG = "SMTPSampler.enableDebug"; // $NON-NLS-1$ // Used to separate attachment file names in JMX fields - do not change! public static final String FILENAME_SEPARATOR = ";"; //-JMX file attribute names public SmtpSampler() { } /** * Performs the sample, and returns the result * * @param e * Standard-method-header from JMeter * @return sampleresult Result of the sample * @see org.apache.jmeter.samplers.Sampler#sample(org.apache.jmeter.samplers.Entry) */ public SampleResult sample(Entry e) { Message message = null; SampleResult res = new SampleResult(); res.setSampleLabel(getName()); boolean isOK = false; // Did sample succeed? SendMailCommand instance = new SendMailCommand(); instance.setSmtpServer(getPropertyAsString(SmtpSampler.SERVER)); instance.setSmtpPort(getPropertyAsString(SmtpSampler.SERVER_PORT)); instance.setUseSSL(getPropertyAsBoolean(SecuritySettingsPanel.USE_SSL)); instance.setUseStartTLS(getPropertyAsBoolean(SecuritySettingsPanel.USE_STARTTLS)); instance.setTrustAllCerts(getPropertyAsBoolean(SecuritySettingsPanel.SSL_TRUST_ALL_CERTS)); instance.setEnforceStartTLS(getPropertyAsBoolean(SecuritySettingsPanel.ENFORCE_STARTTLS)); instance.setUseAuthentication(getPropertyAsBoolean(USE_AUTH)); instance.setUsername(getPropertyAsString(USERNAME)); instance.setPassword(getPropertyAsString(PASSWORD)); instance.setUseLocalTrustStore(getPropertyAsBoolean(SecuritySettingsPanel.USE_LOCAL_TRUSTSTORE)); instance.setTrustStoreToUse(getPropertyAsString(SecuritySettingsPanel.TRUSTSTORE_TO_USE)); instance.setEmlMessage(getPropertyAsString(EML_MESSAGE_TO_SEND)); instance.setUseEmlMessage(getPropertyAsBoolean(USE_EML)); instance.setEnableDebug(getPropertyAsBoolean(ENABLE_DEBUG)); if (getPropertyAsString(MAIL_FROM).matches(".*@.*")) { instance.setSender(getPropertyAsString(MAIL_FROM)); } final String receiverTo = getPropertyAsString(SmtpSampler.RECEIVER_TO).trim(); final String receiverCC = getPropertyAsString(SmtpSampler.RECEIVER_CC).trim(); final String receiverBcc = getPropertyAsString(SmtpSampler.RECEIVER_BCC).trim(); final String replyTo = getPropertyAsString(SmtpSampler.MAIL_REPLYTO).trim(); try { // Process address lists instance.setReceiverTo(getPropNameAsAddresses(receiverTo)); instance.setReceiverCC(getPropNameAsAddresses(receiverCC)); instance.setReceiverBCC(getPropNameAsAddresses(receiverBcc)); instance.setReplyTo(getPropNameAsAddresses(replyTo)); if(getPropertyAsBoolean(SUPPRESS_SUBJECT)){ instance.setSubject(null); }else{ String subject = getPropertyAsString(SUBJECT); if (getPropertyAsBoolean(INCLUDE_TIMESTAMP)){ StringBuilder sb = new StringBuilder(subject); sb.append(" <<< current timestamp: "); sb.append(new Date().getTime()); sb.append(" >>>"); subject = sb.toString(); } instance.setSubject(subject); } if (!getPropertyAsBoolean(USE_EML)) { // part is only needed if we // don't send an .eml-file instance.setMailBody(getPropertyAsString(MESSAGE)); instance.setPlainBody(getPropertyAsBoolean(PLAIN_BODY)); final String filesToAttach = getPropertyAsString(ATTACH_FILE); if (!filesToAttach.equals("")) { String[] attachments = filesToAttach.split(FILENAME_SEPARATOR); for (String attachment : attachments) { File file = new File(attachment); if(!file.isAbsolute() && !file.exists()){ log.debug("loading file with relative path: " +attachment); file = new File(FileServer.getFileServer().getBaseDir(), attachment); log.debug("file path set to: "+attachment); } instance.addAttachment(file); } } } // needed for measuring sending time instance.setSynchronousMode(true); instance.setHeaderFields((CollectionProperty)getProperty(SmtpSampler.HEADER_FIELDS)); message = instance.prepareMessage(); if (getPropertyAsBoolean(MESSAGE_SIZE_STATS)) { // calculate message size CounterOutputStream cs = new CounterOutputStream(); message.writeTo(cs); res.setBytes(cs.getCount()); } else { res.setBytes(-1); } } catch (Exception ex) { log.warn("Error while preparing message", ex); res.setResponseCode("500"); res.setResponseMessage(ex.toString()); return res; } // Set up the sample result details res.setDataType(SampleResult.TEXT); try { res.setRequestHeaders(getRequestHeaders(message)); res.setSamplerData(getSamplerData(message)); } catch (MessagingException e1) { res.setSamplerData("Error occurred trying to save request info: "+e1); log.warn("Error occurred trying to save request info",e1); } catch (IOException e1) { res.setSamplerData("Error occurred trying to save request info: "+e1); log.warn("Error occurred trying to save request info",e1); } // Perform the sampling res.sampleStart(); try { instance.execute(message); res.setResponseCodeOK(); /* * TODO if(instance.getSMTPStatusCode == 250) * res.setResponseMessage("Message successfully sent!"); else * res.setResponseMessage(instance.getSMTPStatusCodeIncludingMessage); */ res.setResponseMessage("Message successfully sent!\n" + instance.getServerResponse()); isOK = true; } // username / password incorrect catch (AuthenticationFailedException afex) { log.warn("", afex); res.setResponseCode("500"); res.setResponseMessage("AuthenticationFailedException: authentication failed - wrong username / password!\n" + afex); // SSL not supported, startTLS not supported, other messagingException } catch (MessagingException mex) { log.warn("",mex); res.setResponseCode("500"); if (mex.getMessage().matches(".*Could not connect to SMTP host.*465.*") && mex.getCause().getMessage().matches(".*Connection timed out.*")) { res.setResponseMessage("MessagingException: Probably, SSL is not supported by the SMTP-Server!\n" + mex); } else if (mex.getMessage().matches(".*StartTLS failed.*")) { res.setResponseMessage("MessagingException: StartTLS not supported by server or initializing failed!\n" + mex); } else if (mex.getMessage().matches(".*send command to.*") && mex.getCause().getMessage().matches( ".*unable to find valid certification path to requested target.*")) { res.setResponseMessage("MessagingException: Server certificate not trusted - perhaps you have to restart JMeter!\n" + mex); } else { res.setResponseMessage("Other MessagingException: " + mex.toString()); } } catch (Exception ex) { // general exception log.warn("",ex); res.setResponseCode("500"); if (null != ex.getMessage() && ex.getMessage().matches("Failed to build truststore")) { res.setResponseMessage("Failed to build truststore - did not try to send mail!"); } else { res.setResponseMessage("Other Exception: " + ex.toString()); } } res.sampleEnd(); try { // process the sampler result InputStream is = message.getInputStream(); StringBuilder sb = new StringBuilder(); byte[] buf = new byte[1024]; int read = is.read(buf); while (read > 0) { sb.append(new String(buf, 0, read)); // TODO - charset? read = is.read(buf); } // TODO - charset? res.setResponseData(sb.toString().getBytes()); // TODO this should really be request data, but there is none } catch (IOException ex) { log.warn("",ex); } catch (MessagingException ex) { log.warn("",ex); } res.setSuccessful(isOK); return res; } private String getRequestHeaders(Message message) throws MessagingException { StringBuilder sb = new StringBuilder(); @SuppressWarnings("unchecked") // getAllHeaders() is not yet genericised Enumeration

        headers = message.getAllHeaders(); // throws ME writeHeaders(headers, sb); return sb.toString(); } private String getSamplerData(Message message) throws MessagingException, IOException { StringBuilder sb = new StringBuilder(); Object content = message.getContent(); // throws ME if (content instanceof Multipart) { Multipart multipart = (Multipart) content; String contentType = multipart.getContentType(); ContentType ct = new ContentType(contentType); String boundary=ct.getParameter("boundary"); for (int i = 0; i < multipart.getCount(); i++) { // throws ME sb.append("--"); sb.append(boundary); sb.append("\n"); BodyPart bodyPart = multipart.getBodyPart(i); // throws ME writeBodyPart(sb, bodyPart); // throws IOE, ME } sb.append("--"); sb.append(boundary); sb.append("--"); sb.append("\n"); } else if(content instanceof BodyPart){ BodyPart bodyPart = (BodyPart) content; writeBodyPart(sb, bodyPart); // throws IOE, ME } else if (content instanceof String){ sb.append(content); } else { sb.append("Content has class: "+content.getClass().getCanonicalName()); } return sb.toString(); } private void writeHeaders(Enumeration
        headers, StringBuilder sb) { while (headers.hasMoreElements()) { Header header = headers.nextElement(); sb.append(header.getName()); sb.append(": "); sb.append(header.getValue()); sb.append("\n"); } } private void writeBodyPart(StringBuilder sb, BodyPart bodyPart) throws MessagingException, IOException { @SuppressWarnings("unchecked") // API not yet generic Enumeration
        allHeaders = bodyPart.getAllHeaders(); // throws ME writeHeaders(allHeaders, sb); String disposition = bodyPart.getDisposition(); // throws ME sb.append("\n"); if (Part.ATTACHMENT.equals(disposition)) { sb.append(""); } else { sb.append(bodyPart.getContent()); // throws IOE, ME } sb.append("\n"); } /** * Get the list of addresses or null. * Null is treated differently from an empty list. * @param propValue addresses separated by ";" * @return the list or null if the input was the empty string * @throws AddressException */ private List getPropNameAsAddresses(String propValue) throws AddressException{ if (propValue.length() > 0){ // we have at least one potential address List addresses = new ArrayList(); for (String address : propValue.split(";")){ addresses.add(new InternetAddress(address.trim())); } return addresses; } else { return null; } } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } }apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/tools/0000755000175000017500000000000012165514773027732 5ustar ebourgebourg././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/tools/CounterOutputStream.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/tools/CounterOutputStrea0000644000175000017500000000301012032647216033476 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.tools; import java.io.OutputStream; /** * Utility-class to calculate message size. */ public class CounterOutputStream extends OutputStream { int count = 0; /** * {@inheritDoc} */ @Override public void close() {} /** * {@inheritDoc} */ @Override public void flush() {} /** * {@inheritDoc} */ @Override public void write(byte[] b, int off, int len) { count += len; } /** * {@inheritDoc} */ @Override public void write(int b) { count++; } /** * Returns message size * @return Message size */ public int getCount() { return count; } } apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/0000755000175000017500000000000012165514773030433 5ustar ebourgebourg././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand0000644000175000017500000005632612032647216033355 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.protocol; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import org.apache.commons.io.IOUtils; import org.apache.jmeter.config.Argument; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This class performs all tasks necessary to send a message (build message, * prepare connection, send message). Provides getter-/setter-methods for an * SmtpSampler-object to configure transport and message settings. The * send-mail-command itself is started by the SmtpSampler-object. */ public class SendMailCommand { // local vars private static final Logger logger = LoggingManager.getLoggerForClass(); // Use the actual class so the name must be correct. private static final String TRUST_ALL_SOCKET_FACTORY = TrustAllSSLSocketFactory.class.getName(); private boolean useSSL = false; private boolean useStartTLS = false; private boolean trustAllCerts = false; private boolean enforceStartTLS = false; private boolean sendEmlMessage = false; private boolean enableDebug; private String smtpServer; private String smtpPort; private String sender; private List replyTo; private String emlMessage; private List receiverTo; private List receiverCC; private List receiverBCC; private CollectionProperty headerFields; private String subject = ""; private boolean useAuthentication = false; private String username; private String password; private boolean useLocalTrustStore; private String trustStoreToUse; private List attachments; private String mailBody; // case we are measuring real time of spedition private boolean synchronousMode; private Session session; private StringBuilder serverResponse = new StringBuilder(); // TODO this is not populated currently /** send plain body, i.e. not multipart/mixed */ private boolean plainBody; /** * Standard-Constructor */ public SendMailCommand() { headerFields = new CollectionProperty(); attachments = new ArrayList(); } /** * Prepares message prior to be sent via execute()-method, i.e. sets * properties such as protocol, authentication, etc. * * @return Message-object to be sent to execute()-method * @throws MessagingException * @throws IOException */ public Message prepareMessage() throws MessagingException, IOException { Properties props = new Properties(); String protocol = getProtocol(); // set properties using JAF props.setProperty("mail." + protocol + ".host", smtpServer); props.setProperty("mail." + protocol + ".port", getPort()); props.setProperty("mail." + protocol + ".auth", Boolean.toString(useAuthentication)); if (enableDebug) { props.setProperty("mail.debug","true"); } if (useStartTLS) { props.setProperty("mail.smtp.starttls.enable", "true"); if (enforceStartTLS){ // Requires JavaMail 1.4.2+ props.setProperty("mail.smtp.starttls.require", "true"); } } if (trustAllCerts) { if (useSSL) { props.setProperty("mail.smtps.ssl.socketFactory.class", TRUST_ALL_SOCKET_FACTORY); props.setProperty("mail.smtps.ssl.socketFactory.fallback", "false"); } else if (useStartTLS) { props.setProperty("mail.smtp.ssl.socketFactory.class", TRUST_ALL_SOCKET_FACTORY); props.setProperty("mail.smtp.ssl.socketFactory.fallback", "false"); } } else if (useLocalTrustStore){ File truststore = new File(trustStoreToUse); logger.info("load local truststore - try to load truststore from: "+truststore.getAbsolutePath()); if(!truststore.exists()){ logger.info("load local truststore -Failed to load truststore from: "+truststore.getAbsolutePath()); truststore = new File(FileServer.getFileServer().getBaseDir(), trustStoreToUse); logger.info("load local truststore -Attempting to read truststore from: "+truststore.getAbsolutePath()); if(!truststore.exists()){ logger.info("load local truststore -Failed to load truststore from: "+truststore.getAbsolutePath() + ". Local truststore not available, aborting execution."); throw new IOException("Local truststore file not found. Also not available under : " + truststore.getAbsolutePath()); } } if (useSSL) { // Requires JavaMail 1.4.2+ props.put("mail.smtps.ssl.socketFactory", new LocalTrustStoreSSLSocketFactory(truststore)); props.put("mail.smtps.ssl.socketFactory.fallback", "false"); } else if (useStartTLS) { // Requires JavaMail 1.4.2+ props.put("mail.smtp.ssl.socketFactory", new LocalTrustStoreSSLSocketFactory(truststore)); props.put("mail.smtp.ssl.socketFactory.fallback", "false"); } } session = Session.getInstance(props, null); Message message; if (sendEmlMessage) { message = new MimeMessage(session, new BufferedInputStream(new FileInputStream(emlMessage))); } else { message = new MimeMessage(session); // handle body and attachments Multipart multipart = new MimeMultipart(); final int attachmentCount = attachments.size(); if (plainBody && (attachmentCount == 0 || (mailBody.length() == 0 && attachmentCount == 1))) { if (attachmentCount == 1) { // i.e. mailBody is empty File first = attachments.get(0); InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(first)); message.setText(IOUtils.toString(is)); } finally { IOUtils.closeQuietly(is); } } else { message.setText(mailBody); } } else { BodyPart body = new MimeBodyPart(); body.setText(mailBody); multipart.addBodyPart(body); for (File f : attachments) { BodyPart attach = new MimeBodyPart(); attach.setFileName(f.getName()); attach.setDataHandler(new DataHandler(new FileDataSource(f.getAbsolutePath()))); multipart.addBodyPart(attach); } message.setContent(multipart); } } // set from field and subject if (null != sender) { message.setFrom(new InternetAddress(sender)); } if (null != replyTo) { InternetAddress[] to = new InternetAddress[replyTo.size()]; message.setReplyTo(replyTo.toArray(to)); } message.setSubject(subject); if (receiverTo != null) { InternetAddress[] to = new InternetAddress[receiverTo.size()]; receiverTo.toArray(to); message.setRecipients(Message.RecipientType.TO, to); } if (receiverCC != null) { InternetAddress[] cc = new InternetAddress[receiverCC.size()]; receiverCC.toArray(cc); message.setRecipients(Message.RecipientType.CC, cc); } if (receiverBCC != null) { InternetAddress[] bcc = new InternetAddress[receiverBCC.size()]; receiverBCC.toArray(bcc); message.setRecipients(Message.RecipientType.BCC, bcc); } for (int i = 0; i < headerFields.size(); i++) { Argument argument = (Argument)((TestElementProperty)headerFields.get(i)).getObjectValue(); message.setHeader(argument.getName(), argument.getValue()); } message.saveChanges(); return message; } /** * Sends message to mailserver, waiting for delivery if using synchronous mode. * * @param message * Message prior prepared by prepareMessage() * @throws MessagingException * @throws IOException * @throws InterruptedException */ public void execute(Message message) throws MessagingException, IOException, InterruptedException { Transport tr = session.getTransport(getProtocol()); SynchronousTransportListener listener = null; if (synchronousMode) { listener = new SynchronousTransportListener(); tr.addTransportListener(listener); } if (useAuthentication) { tr.connect(smtpServer, username, password); } else { tr.connect(); } tr.sendMessage(message, message.getAllRecipients()); if (synchronousMode) { listener.attend(); // listener cannot be null here } tr.close(); logger.debug("transport closed"); logger.debug("message sent"); return; } /** * Processes prepareMessage() and execute() * * @throws Exception */ public void execute() throws Exception { execute(prepareMessage()); } /** * Returns FQDN or IP of SMTP-server to be used to send message - standard * getter * * @return FQDN or IP of SMTP-server */ public String getSmtpServer() { return smtpServer; } /** * Sets FQDN or IP of SMTP-server to be used to send message - to be called * by SmtpSampler-object * * @param smtpServer * FQDN or IP of SMTP-server */ public void setSmtpServer(String smtpServer) { this.smtpServer = smtpServer; } /** * Returns sender-address for current message - standard getter * * @return sender-address */ public String getSender() { return sender; } /** * Sets the sender-address for the current message - to be called by * SmtpSampler-object * * @param sender * Sender-address for current message */ public void setSender(String sender) { this.sender = sender; } /** * Returns subject for current message - standard getter * * @return Subject of current message */ public String getSubject() { return subject; } /** * Sets subject for current message - called by SmtpSampler-object * * @param subject * Subject for message of current message - may be null */ public void setSubject(String subject) { this.subject = subject; } /** * Returns username to authenticate at the mailserver - standard getter * * @return Username for mailserver */ public String getUsername() { return username; } /** * Sets username to authenticate at the mailserver - to be called by * SmtpSampler-object * * @param username * Username for mailserver */ public void setUsername(String username) { this.username = username; } /** * Returns password to authenticate at the mailserver - standard getter * * @return Password for mailserver */ public String getPassword() { return password; } /** * Sets password to authenticate at the mailserver - to be called by * SmtpSampler-object * * @param password * Password for mailserver */ public void setPassword(String password) { this.password = password; } /** * Sets receivers of current message ("to") - to be called by * SmtpSampler-object * * @param receiverTo * List of receivers */ public void setReceiverTo(List receiverTo) { this.receiverTo = receiverTo; } /** * Returns receivers of current message ("cc") - standard * getter * * @return List of receivers */ public List getReceiverCC() { return receiverCC; } /** * Sets receivers of current message ("cc") - to be called by * SmtpSampler-object * * @param receiverCC * List of receivers */ public void setReceiverCC(List receiverCC) { this.receiverCC = receiverCC; } /** * Returns receivers of current message ("bcc") - standard * getter * * @return List of receivers */ public List getReceiverBCC() { return receiverBCC; } /** * Sets receivers of current message ("bcc") - to be called by * SmtpSampler-object * * @param receiverBCC * List of receivers */ public void setReceiverBCC(List receiverBCC) { this.receiverBCC = receiverBCC; } /** * Returns if authentication is used to access the mailserver - standard * getter * * @return True if authentication is used to access mailserver */ public boolean isUseAuthentication() { return useAuthentication; } /** * Sets if authentication should be used to access the mailserver - to be * called by SmtpSampler-object * * @param useAuthentication * Should authentication be used to access mailserver? */ public void setUseAuthentication(boolean useAuthentication) { this.useAuthentication = useAuthentication; } /** * Returns if SSL is used to send message - standard getter * * @return True if SSL is used to transmit message */ public boolean getUseSSL() { return useSSL; } /** * Sets SSL to secure the delivery channel for the message - to be called by * SmtpSampler-object * * @param useSSL * Should StartTLS be used to secure SMTP-connection? */ public void setUseSSL(boolean useSSL) { this.useSSL = useSSL; } /** * Returns if StartTLS is used to transmit message - standard getter * * @return True if StartTLS is used to transmit message */ public boolean getUseStartTLS() { return useStartTLS; } /** * Sets StartTLS to secure the delivery channel for the message - to be * called by SmtpSampler-object * * @param useStartTLS * Should StartTLS be used to secure SMTP-connection? */ public void setUseStartTLS(boolean useStartTLS) { this.useStartTLS = useStartTLS; } /** * Returns port to be used for SMTP-connection (standard 25 or 465) - * standard getter * * @return Port to be used for SMTP-connection */ public String getSmtpPort() { return smtpPort; } /** * Sets port to be used for SMTP-connection (standard 25 or 465) - to be * called by SmtpSampler-object * * @param smtpPort * Port to be used for SMTP-connection */ public void setSmtpPort(String smtpPort) { this.smtpPort = smtpPort; } /** * Returns if sampler should trust all certificates - standard getter * * @return True if all Certificates are trusted */ public boolean isTrustAllCerts() { return trustAllCerts; } /** * Determines if SMTP-sampler should trust all certificates, no matter what * CA - to be called by SmtpSampler-object * * @param trustAllCerts * Should all certificates be trusted? */ public void setTrustAllCerts(boolean trustAllCerts) { this.trustAllCerts = trustAllCerts; } /** * Instructs object to enforce StartTLS and not to fallback to plain * SMTP-connection - to be called by SmtpSampler-object * * @param enforceStartTLS * Should StartTLS be enforced? */ public void setEnforceStartTLS(boolean enforceStartTLS) { this.enforceStartTLS = enforceStartTLS; } /** * Returns if StartTLS is enforced to secure the connection, i.e. no * fallback is used (plain SMTP) - standard getter * * @return True if StartTLS is enforced */ public boolean isEnforceStartTLS() { return enforceStartTLS; } /** * Returns headers for current message - standard getter * * @return CollectionProperty of headers for current message */ public CollectionProperty getHeaders() { return headerFields; } /** * Sets headers for current message * * @param headerFields * CollectionProperty of headers for current message */ public void setHeaderFields(CollectionProperty headerFields) { this.headerFields = headerFields; } /** * Adds a header-part to current HashMap of headers - to be called by * SmtpSampler-object * * @param headerName * Key for current header * @param headerValue * Value for current header */ public void addHeader(String headerName, String headerValue) { if (this.headerFields == null){ this.headerFields = new CollectionProperty(); } Argument argument = new Argument(headerName, headerValue); this.headerFields.addItem(argument); } /** * Deletes all current headers in HashMap */ public void clearHeaders() { if (this.headerFields == null){ this.headerFields = new CollectionProperty(); }else{ this.headerFields.clear(); } } /** * Returns all attachment for current message - standard getter * * @return List of attachments for current message */ public List getAttachments() { return attachments; } /** * Adds attachments to current message * * @param attachments * List of files to be added as attachments to current message */ public void setAttachments(List attachments) { this.attachments = attachments; } /** * Adds an attachment to current message - to be called by * SmtpSampler-object * * @param attachment * File-object to be added as attachment to current message */ public void addAttachment(File attachment) { this.attachments.add(attachment); } /** * Clear all attachments for current message */ public void clearAttachments() { this.attachments.clear(); } /** * Returns if synchronous-mode is used for current message (i.e. time for * delivery, ... is measured) - standard getter * * @return True if synchronous-mode is used */ public boolean isSynchronousMode() { return synchronousMode; } /** * Sets the use of synchronous-mode (i.e. time for delivery, ... is * measured) - to be called by SmtpSampler-object * * @param synchronousMode * Should synchronous-mode be used? */ public void setSynchronousMode(boolean synchronousMode) { this.synchronousMode = synchronousMode; } /** * Returns which protocol should be used to transport message (smtps for * SSL-secured connections or smtp for plain SMTP / StartTLS) * * @return Protocol that is used to transport message */ private String getProtocol() { return (useSSL) ? "smtps" : "smtp"; } /** * Returns port to be used for SMTP-connection - returns the * default port for the protocol if no port has been supplied. * * @return Port to be used for SMTP-connection */ private String getPort() { String port = smtpPort.trim(); if (port.length() > 0) { // OK, it has been supplied return port; } if (useSSL){ return "465"; } if (useStartTLS) { return "587"; } return "25"; } /** * Assigns the object to use a local truststore for SSL / StartTLS - to be * called by SmtpSampler-object * * @param useLocalTrustStore * Should a local truststore be used? */ public void setUseLocalTrustStore(boolean useLocalTrustStore) { this.useLocalTrustStore = useLocalTrustStore; } /** * Sets the path to the local truststore to be used for SSL / StartTLS - to * be called by SmtpSampler-object * * @param trustStoreToUse * Path to local truststore */ public void setTrustStoreToUse(String trustStoreToUse) { this.trustStoreToUse = trustStoreToUse; } public void setUseEmlMessage(boolean sendEmlMessage) { this.sendEmlMessage = sendEmlMessage; } /** * Sets eml-message to be sent * * @param emlMessage * path to eml-message */ public void setEmlMessage(String emlMessage) { this.emlMessage = emlMessage; } /** * Set the mail body. * * @param body */ public void setMailBody(String body){ mailBody = body; } /** * Set whether to send a plain body (i.e. not multipart/mixed) * * @param plainBody true if sending a plain body (i.e. not multipart/mixed) */ public void setPlainBody(boolean plainBody){ this.plainBody = plainBody; } public String getServerResponse() { return this.serverResponse.toString(); } public void setEnableDebug(boolean selected) { enableDebug = selected; } public void setReplyTo(List replyTo) { this.replyTo = replyTo; } }././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SynchronousTransportListener.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SynchronousTran0000644000175000017500000000520712032647216033531 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.protocol; import javax.mail.event.TransportAdapter; import javax.mail.event.TransportEvent; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; // this comes out of logkit.jar and not // commons-logger /** * This class implements a listener for SMTP events and a monitor for all * threads sending mail. The main purpose is to synchronize the send action with * the end of communication with remote smtp server, so that sending time can be * measured. */ public class SynchronousTransportListener extends TransportAdapter { private static final Logger logger = LoggingManager.getLoggerForClass(); private boolean finished = false; private final Object LOCK = new Object(); /** * Creates a new instance of SynchronousTransportListener */ public SynchronousTransportListener() { } /** * {@inheritDoc} */ @Override public void messageDelivered(TransportEvent e) { logger.debug("Message delivered"); finish(); } /** * {@inheritDoc} */ @Override public void messageNotDelivered(TransportEvent e) { logger.debug("Message not delivered"); finish(); } /** * {@inheritDoc} */ @Override public void messagePartiallyDelivered(TransportEvent e) { logger.debug("Message partially delivered"); finish(); } /** * Synchronized-method * * @throws InterruptedException */ public void attend() throws InterruptedException { synchronized(LOCK) { while (!finished) { LOCK.wait(); } } } /** * Synchronized-method */ public void finish() { finished = true; synchronized(LOCK) { LOCK.notify(); } } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/LocalTrustStoreSSLSocketFactory.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/LocalTrustStore0000644000175000017500000000767012032647216033471 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.protocol; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.Socket; import java.security.KeyStore; import java.security.SecureRandom; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import org.apache.commons.io.IOUtils; /** * This class implements an SSLSocketFactory which supports a local truststore. */ public class LocalTrustStoreSSLSocketFactory extends SSLSocketFactory { private final SSLSocketFactory factory; public LocalTrustStoreSSLSocketFactory(File truststore){ SSLContext sslcontext = null; try { KeyStore ks = KeyStore.getInstance("JKS"); // $NON-NLS-1$ InputStream stream = null; try { stream = new BufferedInputStream(new FileInputStream(truststore)); ks.load(stream, null); } finally { IOUtils.closeQuietly(stream); } TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(ks); TrustManager[] trustmanagers = tmf.getTrustManagers(); sslcontext = SSLContext.getInstance("TLS"); // $NON-NLS-1$ sslcontext.init( null, trustmanagers, new SecureRandom()); } catch (Exception e) { throw new RuntimeException("Could not create the SSL context",e); } factory = sslcontext.getSocketFactory(); } /** * {@inheritDoc} */ @Override public Socket createSocket( Socket socket, String s, int i, boolean flag) throws IOException { return factory.createSocket( socket, s, i, flag); } /** * {@inheritDoc} */ @Override public Socket createSocket( InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException { return factory.createSocket( inaddr, i, inaddr1, j); } /** * {@inheritDoc} */ @Override public Socket createSocket( InetAddress inaddr, int i) throws IOException { return factory.createSocket( inaddr, i); } /** * {@inheritDoc} */ @Override public Socket createSocket( String s, int i, InetAddress inaddr, int j) throws IOException { return factory.createSocket( s, i, inaddr, j); } /** * {@inheritDoc} */ @Override public Socket createSocket( String s, int i) throws IOException { return factory.createSocket( s, i); } /** * {@inheritDoc} */ @Override public Socket createSocket() throws IOException { return factory.createSocket(); } /** * {@inheritDoc} */ @Override public String[] getDefaultCipherSuites() { return factory.getSupportedCipherSuites(); } /** * {@inheritDoc} */ @Override public String[] getSupportedCipherSuites() { return factory.getSupportedCipherSuites(); } }././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/TrustAllSSLSocketFactory.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/TrustAllSSLSock0000644000175000017500000001043712032647216033327 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.smtp.sampler.protocol; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.security.cert.X509Certificate; import javax.net.SocketFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; /** * This class can be used as a SocketFactory with SSL-connections. * Its purpose is to ensure that all certificates - no matter from which CA - are accepted to secure the SSL-connection. */ public class TrustAllSSLSocketFactory extends SSLSocketFactory { private final SSLSocketFactory factory; // Empty arrays are immutable private static final X509Certificate[] EMPTY_X509Certificate = new X509Certificate[0]; /** * Standard constructor */ public TrustAllSSLSocketFactory(){ SSLContext sslcontext = null; try { sslcontext = SSLContext.getInstance("TLS"); // $NON-NLS-1$ sslcontext.init( null, new TrustManager[]{ new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return EMPTY_X509Certificate; } public void checkClientTrusted( X509Certificate[] certs, String authType) { } public void checkServerTrusted( X509Certificate[] certs, String authType) { } } }, new java.security.SecureRandom()); } catch (Exception e) { throw new RuntimeException("Could not create the SSL context",e); } factory = sslcontext.getSocketFactory(); } /** * Factory method * @return New TrustAllSSLSocketFactory */ public static synchronized SocketFactory getDefault() { return new TrustAllSSLSocketFactory(); } /** * {@inheritDoc} */ @Override public Socket createSocket( Socket socket, String s, int i, boolean flag) throws IOException { return factory.createSocket( socket, s, i, flag); } /** * {@inheritDoc} */ @Override public Socket createSocket( InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException { return factory.createSocket( inaddr, i, inaddr1, j); } /** * {@inheritDoc} */ @Override public Socket createSocket( InetAddress inaddr, int i) throws IOException { return factory.createSocket( inaddr, i); } /** * {@inheritDoc} */ @Override public Socket createSocket( String s, int i, InetAddress inaddr, int j) throws IOException { return factory.createSocket( s, i, inaddr, j); } /** * {@inheritDoc} */ @Override public Socket createSocket( String s, int i) throws IOException { return factory.createSocket( s, i); } /** * {@inheritDoc} */ @Override public Socket createSocket() throws IOException { return factory.createSocket(); } /** * {@inheritDoc} */ @Override public String[] getDefaultCipherSuites() { return factory.getSupportedCipherSuites(); } /** * {@inheritDoc} */ @Override public String[] getSupportedCipherSuites() { return factory.getSupportedCipherSuites(); } }apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/0000755000175000017500000000000012032647216025056 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/0000755000175000017500000000000012165514773026531 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java0000644000175000017500000005162112032647216032722 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.mail.sampler; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.Enumeration; import java.util.HashSet; import java.util.Properties; import java.util.Set; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Header; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import org.apache.commons.io.IOUtils; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.protocol.smtp.sampler.gui.SecuritySettingsPanel; import org.apache.jmeter.protocol.smtp.sampler.protocol.LocalTrustStoreSSLSocketFactory; import org.apache.jmeter.protocol.smtp.sampler.protocol.TrustAllSSLSocketFactory; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Sampler that can read from POP3 and IMAP mail servers */ public class MailReaderSampler extends AbstractSampler implements Interruptible { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); //+ JMX attributes - do not change the values private static final String SERVER_TYPE = "host_type"; // $NON-NLS-1$ private static final String SERVER = "host"; // $NON-NLS-1$ private static final String PORT = "port"; // $NON-NLS-1$ private static final String USERNAME = "username"; // $NON-NLS-1$ private static final String PASSWORD = "password"; // $NON-NLS-1$ private static final String FOLDER = "folder"; // $NON-NLS-1$ private static final String DELETE = "delete"; // $NON-NLS-1$ private static final String NUM_MESSAGES = "num_messages"; // $NON-NLS-1$ private static final String NEW_LINE = "\n"; // $NON-NLS-1$ private static final String STORE_MIME_MESSAGE = "storeMimeMessage"; //- private static final String RFC_822_DEFAULT_ENCODING = "iso-8859-1"; // RFC 822 uses ascii per default public static final String DEFAULT_PROTOCOL = "pop3"; // $NON-NLS-1$ // Use the actual class so the name must be correct. private static final String TRUST_ALL_SOCKET_FACTORY = TrustAllSSLSocketFactory.class.getName(); public boolean isUseLocalTrustStore() { return getPropertyAsBoolean(SecuritySettingsPanel.USE_LOCAL_TRUSTSTORE); } public String getTrustStoreToUse() { return getPropertyAsString(SecuritySettingsPanel.TRUSTSTORE_TO_USE); } public boolean isUseSSL() { return getPropertyAsBoolean(SecuritySettingsPanel.USE_SSL); } public boolean isUseStartTLS() { return getPropertyAsBoolean(SecuritySettingsPanel.USE_STARTTLS); } public boolean isTrustAllCerts() { return getPropertyAsBoolean(SecuritySettingsPanel.SSL_TRUST_ALL_CERTS); } public boolean isEnforceStartTLS() { return getPropertyAsBoolean(SecuritySettingsPanel.ENFORCE_STARTTLS); } public static final int ALL_MESSAGES = -1; // special value private volatile boolean busy; public MailReaderSampler() { setServerType(DEFAULT_PROTOCOL); setFolder("INBOX"); // $NON-NLS-1$ setNumMessages(ALL_MESSAGES); setDeleteMessages(false); } /** * {@inheritDoc} */ public SampleResult sample(Entry e) { SampleResult parent = new SampleResult(); boolean isOK = false; // Did sample succeed? boolean deleteMessages = getDeleteMessages(); parent.setSampleLabel(getName()); String samplerString = toString(); parent.setSamplerData(samplerString); /* * Perform the sampling */ parent.sampleStart(); // Start timing try { // Create empty properties Properties props = new Properties(); if (isUseStartTLS()) { props.setProperty("mail.pop3s.starttls.enable", "true"); if (isEnforceStartTLS()){ // Requires JavaMail 1.4.2+ props.setProperty("mail.pop3s.starttls.require", "true"); } } if (isTrustAllCerts()) { if (isUseSSL()) { props.setProperty("mail.pop3s.ssl.socketFactory.class", TRUST_ALL_SOCKET_FACTORY); props.setProperty("mail.pop3s.ssl.socketFactory.fallback", "false"); } else if (isUseStartTLS()) { props.setProperty("mail.pop3s.ssl.socketFactory.class", TRUST_ALL_SOCKET_FACTORY); props.setProperty("mail.pop3s.ssl.socketFactory.fallback", "false"); } } else if (isUseLocalTrustStore()){ File truststore = new File(getTrustStoreToUse()); log.info("load local truststore - try to load truststore from: "+truststore.getAbsolutePath()); if(!truststore.exists()){ log.info("load local truststore -Failed to load truststore from: "+truststore.getAbsolutePath()); truststore = new File(FileServer.getFileServer().getBaseDir(), getTrustStoreToUse()); log.info("load local truststore -Attempting to read truststore from: "+truststore.getAbsolutePath()); if(!truststore.exists()){ log.info("load local truststore -Failed to load truststore from: "+truststore.getAbsolutePath() + ". Local truststore not available, aborting execution."); throw new IOException("Local truststore file not found. Also not available under : " + truststore.getAbsolutePath()); } } if (isUseSSL()) { // Requires JavaMail 1.4.2+ props.put("mail.pop3s.ssl.socketFactory", new LocalTrustStoreSSLSocketFactory(truststore)); props.put("mail.pop3s.ssl.socketFactory.fallback", "false"); } else if (isUseStartTLS()) { // Requires JavaMail 1.4.2+ props.put("mail.pop3s.ssl.socketFactory", new LocalTrustStoreSSLSocketFactory(truststore)); props.put("mail.pop3s.ssl.socketFactory.fallback", "false"); } } // Get session Session session = Session.getInstance(props, null); // Get the store Store store = session.getStore(getServerType()); store.connect(getServer(), getPortAsInt(), getUserName(), getPassword()); // Get folder Folder folder = store.getFolder(getFolder()); if (deleteMessages) { folder.open(Folder.READ_WRITE); } else { folder.open(Folder.READ_ONLY); } // Get directory Message messages[] = folder.getMessages(); StringBuilder pdata = new StringBuilder(); pdata.append(messages.length); pdata.append(" messages found\n"); parent.setResponseData(pdata.toString(),null); parent.setDataType(SampleResult.TEXT); parent.setContentType("text/plain"); // $NON-NLS-1$ int n = getNumMessages(); if (n == ALL_MESSAGES || n > messages.length) { n = messages.length; } parent.setSampleCount(n); // TODO is this sensible? busy = true; for (int i = 0; busy && i < n; i++) { StringBuilder cdata = new StringBuilder(); SampleResult child = new SampleResult(); child.sampleStart(); Message message = messages[i]; cdata.append("Message "); // $NON-NLS-1$ cdata.append(message.getMessageNumber()); child.setSampleLabel(cdata.toString()); child.setSamplerData(cdata.toString()); cdata.setLength(0); final String contentType = message.getContentType(); child.setContentType(contentType);// Store the content-type child.setDataEncoding(RFC_822_DEFAULT_ENCODING); // RFC 822 uses ascii per default child.setEncodingAndType(contentType);// Parse the content-type if (isStoreMimeMessage()) { // Don't save headers - they are already in the raw message ByteArrayOutputStream bout = new ByteArrayOutputStream(); message.writeTo(bout); child.setResponseData(bout.toByteArray()); // Save raw message child.setDataType(SampleResult.TEXT); } else { @SuppressWarnings("unchecked") // Javadoc for the API says this is OK Enumeration
        hdrs = message.getAllHeaders(); while(hdrs.hasMoreElements()){ Header hdr = hdrs.nextElement(); String value = hdr.getValue(); try { value = MimeUtility.decodeText(value); } catch (UnsupportedEncodingException uce) { // ignored } cdata.append(hdr.getName()).append(": ").append(value).append("\n"); } child.setResponseHeaders(cdata.toString()); cdata.setLength(0); appendMessageData(child, message); } if (deleteMessages) { message.setFlag(Flags.Flag.DELETED, true); } child.setResponseOK(); if (child.getEndTime()==0){// Avoid double-call if addSubResult was called. child.sampleEnd(); } parent.addSubResult(child); } // Close connection folder.close(true); store.close(); parent.setResponseCodeOK(); parent.setResponseMessageOK(); isOK = true; } catch (NoClassDefFoundError ex) { log.debug("",ex);// No need to log normally, as we set the status parent.setResponseCode("500"); // $NON-NLS-1$ parent.setResponseMessage(ex.toString()); } catch (MessagingException ex) { log.debug("", ex);// No need to log normally, as we set the status parent.setResponseCode("500"); // $NON-NLS-1$ parent.setResponseMessage(ex.toString() + "\n" + samplerString); // $NON-NLS-1$ } catch (IOException ex) { log.debug("", ex);// No need to log normally, as we set the status parent.setResponseCode("500"); // $NON-NLS-1$ parent.setResponseMessage(ex.toString()); } finally { busy = false; } if (parent.getEndTime()==0){// not been set by any child samples parent.sampleEnd(); } parent.setSuccessful(isOK); return parent; } private void appendMessageData(SampleResult child, Message message) throws MessagingException, IOException { StringBuilder cdata = new StringBuilder(); cdata.append("Date: "); // $NON-NLS-1$ cdata.append(message.getSentDate());// TODO - use a different format here? cdata.append(NEW_LINE); cdata.append("To: "); // $NON-NLS-1$ Address[] recips = message.getAllRecipients(); // may be null for (int j = 0; recips != null && j < recips.length; j++) { cdata.append(recips[j].toString()); if (j < recips.length - 1) { cdata.append("; "); // $NON-NLS-1$ } } cdata.append(NEW_LINE); cdata.append("From: "); // $NON-NLS-1$ Address[] from = message.getFrom(); // may be null for (int j = 0; from != null && j < from.length; j++) { cdata.append(from[j].toString()); if (j < from.length - 1) { cdata.append("; "); // $NON-NLS-1$ } } cdata.append(NEW_LINE); cdata.append("Subject: "); // $NON-NLS-1$ cdata.append(message.getSubject()); cdata.append(NEW_LINE); cdata.append(NEW_LINE); Object content = message.getContent(); if (content instanceof MimeMultipart) { appendMultiPart(child, cdata, (MimeMultipart) content); } else if (content instanceof InputStream){ child.setResponseData(IOUtils.toByteArray((InputStream) content)); } else { cdata.append(content); child.setResponseData(cdata.toString(),child.getDataEncodingNoDefault()); } } private void appendMultiPart(SampleResult child, StringBuilder cdata, MimeMultipart mmp) throws MessagingException, IOException { String preamble = mmp.getPreamble(); if (preamble != null ){ cdata.append(preamble); } child.setResponseData(cdata.toString(),child.getDataEncodingNoDefault()); int count = mmp.getCount(); for (int j=0; j 0){ sb.append(name); sb.append("@"); } sb.append(getServer()); int port=getPortAsInt(); if (port != -1){ sb.append(":").append(port); } sb.append("/"); sb.append(getFolder()); sb.append("["); sb.append(getNumMessages()); sb.append("]"); return sb.toString(); } /** * {@inheritDoc} */ public boolean interrupt() { boolean wasbusy = busy; busy = false; return wasbusy; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileMessage.java0000644000175000017500000000225612032647216032360 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.mail.sampler; import java.io.InputStream; import javax.mail.Folder; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; public class MailFileMessage extends MimeMessage { protected MailFileMessage(Folder folder, InputStream in, int number) throws MessagingException { super(folder, in, number); } } apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/0000755000175000017500000000000012165514773027315 5ustar ebourgebourg././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.javaapache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui0000644000175000017500000002515112032647216033232 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.mail.sampler.gui; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.mail.sampler.MailReaderSampler; import org.apache.jmeter.protocol.smtp.sampler.gui.SecuritySettingsPanel; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class MailReaderSamplerGui extends AbstractSamplerGui implements ActionListener, FocusListener { private static final long serialVersionUID = 240L; // Gui Components private JTextField serverTypeBox; private JTextField serverBox; private JTextField portBox; private JTextField usernameBox; private JTextField passwordBox; private JTextField folderBox; private JLabel folderLabel; private JRadioButton allMessagesButton; private JRadioButton someMessagesButton; private JTextField someMessagesField; private JCheckBox deleteBox; private JCheckBox storeMimeMessageBox; // Labels - don't make these static, else language change will not work private final String ServerTypeLabel = JMeterUtils.getResString("mail_reader_server_type");// $NON-NLS-1$ private final String ServerLabel = JMeterUtils.getResString("mail_reader_server");// $NON-NLS-1$ private final String PortLabel = JMeterUtils.getResString("mail_reader_port");// $NON-NLS-1$ private final String AccountLabel = JMeterUtils.getResString("mail_reader_account");// $NON-NLS-1$ private final String PasswordLabel = JMeterUtils.getResString("mail_reader_password");// $NON-NLS-1$ private final String NumMessagesLabel = JMeterUtils.getResString("mail_reader_num_messages");// $NON-NLS-1$ private final String AllMessagesLabel = JMeterUtils.getResString("mail_reader_all_messages");// $NON-NLS-1$ private final String DeleteLabel = JMeterUtils.getResString("mail_reader_delete");// $NON-NLS-1$ private final String FolderLabel = JMeterUtils.getResString("mail_reader_folder");// $NON-NLS-1$ private final String STOREMIME = JMeterUtils.getResString("mail_reader_storemime");// $NON-NLS-1$ private static final String INBOX = "INBOX"; // $NON-NLS-1$ private SecuritySettingsPanel securitySettingsPanel; public MailReaderSamplerGui() { init(); initGui(); } public String getLabelResource() { return "mail_reader_title"; // $NON-NLS-1$ } /** * {@inheritDoc} */ @Override public void configure(TestElement element) { MailReaderSampler mrs = (MailReaderSampler) element; serverTypeBox.setText(mrs.getServerType()); folderBox.setText(mrs.getFolder()); serverBox.setText(mrs.getServer()); portBox.setText(mrs.getPort()); usernameBox.setText(mrs.getUserName()); passwordBox.setText(mrs.getPassword()); if (mrs.getNumMessages() == MailReaderSampler.ALL_MESSAGES) { allMessagesButton.setSelected(true); someMessagesField.setText("0"); // $NON-NLS-1$ } else { someMessagesButton.setSelected(true); someMessagesField.setText(mrs.getNumMessagesString()); } deleteBox.setSelected(mrs.getDeleteMessages()); storeMimeMessageBox.setSelected(mrs.isStoreMimeMessage()); securitySettingsPanel.configure(element); super.configure(element); } /** * {@inheritDoc} */ public TestElement createTestElement() { MailReaderSampler sampler = new MailReaderSampler(); modifyTestElement(sampler); return sampler; } /** * {@inheritDoc} */ public void modifyTestElement(TestElement te) { te.clear(); configureTestElement(te); MailReaderSampler mrs = (MailReaderSampler) te; mrs.setServerType(serverTypeBox.getText()); mrs.setFolder(folderBox.getText()); mrs.setServer(serverBox.getText()); mrs.setPort(portBox.getText()); mrs.setUserName(usernameBox.getText()); mrs.setPassword(passwordBox.getText()); if (allMessagesButton.isSelected()) { mrs.setNumMessages(MailReaderSampler.ALL_MESSAGES); } else { mrs.setNumMessages(someMessagesField.getText()); } mrs.setDeleteMessages(deleteBox.isSelected()); mrs.setStoreMimeMessage(storeMimeMessageBox.isSelected()); securitySettingsPanel.modifyTestElement(te); } /* * Helper method to set up the GUI screen */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); JPanel settingsPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = getConstraints(); serverTypeBox = new JTextField(20); serverTypeBox.addActionListener(this); serverTypeBox.addFocusListener(this); addField(settingsPanel, ServerTypeLabel, serverTypeBox, gbc); serverBox = new JTextField(20); addField(settingsPanel, ServerLabel, serverBox, gbc); portBox = new JTextField(20); addField(settingsPanel, PortLabel, portBox, gbc); usernameBox = new JTextField(20); addField(settingsPanel, AccountLabel, usernameBox, gbc); passwordBox = new JPasswordField(20); addField(settingsPanel, PasswordLabel, passwordBox, gbc); folderLabel = new JLabel(FolderLabel); folderBox = new JTextField(INBOX, 20); addField(settingsPanel, folderLabel, folderBox, gbc); HorizontalPanel numMessagesPanel = new HorizontalPanel(); numMessagesPanel.add(new JLabel(NumMessagesLabel)); ButtonGroup nmbg = new ButtonGroup(); allMessagesButton = new JRadioButton(AllMessagesLabel); allMessagesButton.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (allMessagesButton.isSelected()) { someMessagesField.setEnabled(false); } } }); someMessagesButton = new JRadioButton(); someMessagesButton.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (someMessagesButton.isSelected()) { someMessagesField.setEnabled(true); } } }); nmbg.add(allMessagesButton); nmbg.add(someMessagesButton); someMessagesField = new JTextField(5); allMessagesButton.setSelected(true); numMessagesPanel.add(allMessagesButton); numMessagesPanel.add(someMessagesButton); numMessagesPanel.add(someMessagesField); deleteBox = new JCheckBox(DeleteLabel); storeMimeMessageBox = new JCheckBox(STOREMIME); securitySettingsPanel = new SecuritySettingsPanel(); JPanel settings = new VerticalPanel(); settings.add(Box.createVerticalStrut(5)); settings.add(settingsPanel); settings.add(numMessagesPanel); settings.add(deleteBox); settings.add(storeMimeMessageBox); settings.add(securitySettingsPanel); add(makeTitlePanel(), BorderLayout.NORTH); add(settings, BorderLayout.CENTER); } private void addField(JPanel panel, JLabel label, JComponent field, GridBagConstraints gbc) { gbc.fill=GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.LINE_END; panel.add(label, gbc); gbc.gridx++; gbc.weightx = 1; gbc.fill=GridBagConstraints.HORIZONTAL; gbc.anchor = GridBagConstraints.LINE_START; panel.add(field, gbc); nextLine(gbc); } private void addField(JPanel panel, String text, JComponent field, GridBagConstraints gbc) { addField(panel, new JLabel(text), field, gbc); } private void nextLine(GridBagConstraints gbc) { gbc.gridx = 0; gbc.gridy++; gbc.weightx = 0; } private GridBagConstraints getConstraints() { GridBagConstraints gbc = new GridBagConstraints(); gbc.gridheight = 1; gbc.gridwidth = 1; gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0; gbc.weighty = 0; return gbc; } @Override public void clearGui() { super.clearGui(); initGui(); } private void initGui() { allMessagesButton.setSelected(true); deleteBox.setSelected(false); storeMimeMessageBox.setSelected(false); folderBox.setText(INBOX); serverTypeBox.setText(MailReaderSampler.DEFAULT_PROTOCOL); passwordBox.setText("");// $NON-NLS-1$ serverBox.setText("");// $NON-NLS-1$ portBox.setText("");// $NON-NLS-1$ usernameBox.setText("");// $NON-NLS-1$ } public void actionPerformed(ActionEvent e) { final String item = serverTypeBox.getText(); if (item.equals("pop3")||item.equals("pop3s")) { folderLabel.setEnabled(false); folderBox.setText(INBOX); folderBox.setEnabled(false); } else { folderLabel.setEnabled(true); folderBox.setEnabled(true); } } public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { actionPerformed(null); } } apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileFolder.java0000644000175000017500000001225012032647216032202 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.mail.sampler; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FilenameFilter; import java.io.InputStream; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Store; import javax.mail.URLName; import org.apache.commons.io.IOUtils; public class MailFileFolder extends Folder { private static final String FILENAME_FORMAT = "%d.msg"; private static final String FILENAME_REGEX = "\\d+\\.msg"; private boolean isOpen; private final File folderPath;// Parent folder (or single message file) private final boolean isFile; private static final FilenameFilter FILENAME_FILTER = new FilenameFilter(){ public boolean accept(File dir, String name) { return name.matches(FILENAME_REGEX); } }; public MailFileFolder(Store store, String path) { super(store); String base = store.getURLName().getHost(); // == ServerName from mail sampler File parentFolder = new File(base); isFile = parentFolder.isFile(); if (isFile){ folderPath = new File(base); } else { folderPath = new File(base,path); } } public MailFileFolder(Store store, URLName path) { this(store, path.getFile()); } @Override public void appendMessages(Message[] messages) throws MessagingException { throw new MessagingException("Not supported"); } @Override public void close(boolean expunge) throws MessagingException { this.store.close(); isOpen = false; } @Override public boolean create(int type) throws MessagingException { return false; } @Override public boolean delete(boolean recurse) throws MessagingException { return false; } @Override public boolean exists() throws MessagingException { return true; } @Override public Message[] expunge() throws MessagingException { return new Message[0]; } @Override public Folder getFolder(String name) throws MessagingException { return this; } @Override public String getFullName() { return this.toString(); } @Override public Message getMessage(int index) throws MessagingException { File f; if (isFile) { f = folderPath; } else { f = new File(folderPath,String.format(FILENAME_FORMAT, Integer.valueOf(index))); } try { InputStream fis = new BufferedInputStream(new FileInputStream(f)); try { Message m = new MailFileMessage(this, fis, index); return m; } finally { IOUtils.closeQuietly(fis); } } catch (FileNotFoundException e) { throw new MessagingException("Cannot open folder: "+e.getMessage()); } } @Override public int getMessageCount() throws MessagingException { if (!isOpen) return -1; if (isFile) return 1; File[] listFiles = folderPath.listFiles(FILENAME_FILTER); return listFiles != null ? listFiles.length : 0; } @Override public String getName() { return this.toString(); } @Override public Folder getParent() throws MessagingException { return null; } @Override public Flags getPermanentFlags() { return null; } @Override public char getSeparator() throws MessagingException { return '/'; } @Override public int getType() throws MessagingException { return HOLDS_MESSAGES; } @Override public boolean hasNewMessages() throws MessagingException { return false; } @Override public boolean isOpen() { return isOpen; } @Override public Folder[] list(String pattern) throws MessagingException { return new Folder[]{this}; } @Override public void open(int mode) throws MessagingException { if (mode != READ_ONLY) { throw new MessagingException("Implementation only supports read-only access"); } this.mode = mode; isOpen = true; } @Override public boolean renameTo(Folder newName) throws MessagingException { return false; } } apache-jmeter-2.8/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailFileStore.java0000644000175000017500000000354712032647216032074 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.mail.sampler; import java.io.File; import javax.mail.Folder; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.URLName; public class MailFileStore extends Store { public MailFileStore(Session s, URLName u){ super(s,u); } @Override protected boolean protocolConnect(String host, int port, String user, String password) throws MessagingException { File base = new File(host); if (base.isDirectory() || base.isFile()) { return true; } throw new MessagingException("Host must be a valid directory or file"); } @Override public Folder getDefaultFolder() throws MessagingException { return new MailFileFolder(this,""); } @Override public Folder getFolder(String path) throws MessagingException { return new MailFileFolder(this, path); } @Override public Folder getFolder(URLName path) throws MessagingException { return new MailFileFolder(this, path); } } apache-jmeter-2.8/src/protocol/mail/META-INF/0000755000175000017500000000000012165514773020145 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/mail/META-INF/javamail.providers0000644000175000017500000000163212032647216023662 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # protocol=file; type=store; class=org.apache.jmeter.protocol.mail.sampler.MailFileStore; vendor=ASFapache-jmeter-2.8/src/protocol/http/0000755000175000017500000000000012032647215017031 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/0000755000175000017500000000000012032647215017620 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/0000755000175000017500000000000012032647215021041 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/0000755000175000017500000000000012032647215022327 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/0000755000175000017500000000000012032647215024170 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/0000755000175000017500000000000012032647215025147 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/0000755000175000017500000000000012165514773026425 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/0000755000175000017500000000000012165514773027211 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/HttpDefaultsGui.java0000644000175000017500000002013712032647215033122 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.config.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; public class HttpDefaultsGui extends AbstractConfigGui { private static final long serialVersionUID = 240L; private JCheckBox imageParser; private JCheckBox concurrentDwn; private JTextField concurrentPool; private UrlConfigGui urlConfig; private JLabeledTextField embeddedRE; // regular expression used to match against embedded resource URLs public HttpDefaultsGui() { super(); init(); } public String getLabelResource() { return "url_config_title"; // $NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { ConfigTestElement config = new ConfigTestElement(); modifyTestElement(config); return config; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement config) { ConfigTestElement cfg = (ConfigTestElement ) config; ConfigTestElement el = (ConfigTestElement) urlConfig.createTestElement(); cfg.clear(); // need to clear because the cfg.addConfigElement(el); super.configureTestElement(config); if (imageParser.isSelected()) { config.setProperty(new BooleanProperty(HTTPSamplerBase.IMAGE_PARSER, true)); enableConcurrentDwn(true); if(!StringUtils.isEmpty(embeddedRE.getText())) { config.setProperty(new StringProperty(HTTPSamplerBase.EMBEDDED_URL_RE, embeddedRE.getText())); } else { config.removeProperty(HTTPSamplerBase.EMBEDDED_URL_RE); } } else { config.removeProperty(HTTPSamplerBase.IMAGE_PARSER); config.removeProperty(HTTPSamplerBase.EMBEDDED_URL_RE); enableConcurrentDwn(false); } if (concurrentDwn.isSelected()) { config.setProperty(new BooleanProperty(HTTPSamplerBase.CONCURRENT_DWN, true)); } else { // The default is false, so we can remove the property to simplify JMX files // This also allows HTTPDefaults to work for this checkbox config.removeProperty(HTTPSamplerBase.CONCURRENT_DWN); } if(!StringUtils.isEmpty(concurrentPool.getText())) { config.setProperty(new StringProperty(HTTPSamplerBase.CONCURRENT_POOL, concurrentPool.getText())); } else { config.setProperty(new StringProperty(HTTPSamplerBase.CONCURRENT_POOL, String.valueOf(HTTPSamplerBase.CONCURRENT_POOL_SIZE))); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); urlConfig.clear(); imageParser.setSelected(false); concurrentDwn.setSelected(false); concurrentPool.setText(String.valueOf(HTTPSamplerBase.CONCURRENT_POOL_SIZE)); embeddedRE.setText(""); // $NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); urlConfig.configure(el); imageParser.setSelected(((AbstractTestElement) el).getPropertyAsBoolean(HTTPSamplerBase.IMAGE_PARSER)); concurrentDwn.setSelected(((AbstractTestElement) el).getPropertyAsBoolean(HTTPSamplerBase.CONCURRENT_DWN)); concurrentPool.setText(((AbstractTestElement) el).getPropertyAsString(HTTPSamplerBase.CONCURRENT_POOL)); embeddedRE.setText(((AbstractTestElement) el).getPropertyAsString(HTTPSamplerBase.EMBEDDED_URL_RE, "")); } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); urlConfig = new UrlConfigGui(false, true, false); add(urlConfig, BorderLayout.CENTER); // OPTIONAL TASKS final JPanel optionalTasksPanel = new VerticalPanel(); optionalTasksPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("optional_tasks"))); // $NON-NLS-1$ final JPanel checkBoxPanel = new HorizontalPanel(); imageParser = new JCheckBox(JMeterUtils.getResString("web_testing_retrieve_images")); // $NON-NLS-1$ checkBoxPanel.add(imageParser); imageParser.addItemListener(new ItemListener() { public void itemStateChanged(final ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { enableConcurrentDwn(true); } else { enableConcurrentDwn(false); } } }); // Concurrent resources download concurrentDwn = new JCheckBox(JMeterUtils.getResString("web_testing_concurrent_download")); // $NON-NLS-1$ concurrentDwn.addItemListener(new ItemListener() { public void itemStateChanged(final ItemEvent e) { if (imageParser.isSelected() && e.getStateChange() == ItemEvent.SELECTED) { concurrentPool.setEnabled(true); } else { concurrentPool.setEnabled(false); } } }); concurrentPool = new JTextField(2); // 2 columns size concurrentPool.setMaximumSize(new Dimension(30,20)); checkBoxPanel.add(concurrentDwn); checkBoxPanel.add(concurrentPool); optionalTasksPanel.add(checkBoxPanel); // Embedded URL match regex embeddedRE = new JLabeledTextField(JMeterUtils.getResString("web_testing_embedded_url_pattern"),30); // $NON-NLS-1$ optionalTasksPanel.add(embeddedRE); add(optionalTasksPanel, BorderLayout.SOUTH); } @Override public Dimension getPreferredSize() { return getMinimumSize(); } private void enableConcurrentDwn(final boolean enable) { if (enable) { concurrentDwn.setEnabled(true); embeddedRE.setEnabled(true); if (concurrentDwn.isSelected()) { concurrentPool.setEnabled(true); } } else { concurrentDwn.setEnabled(false); concurrentPool.setEnabled(false); embeddedRE.setEnabled(false); } } public void itemStateChanged(final ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { enableConcurrentDwn(true); } else { enableConcurrentDwn(false); } } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/MultipartUrlConfigGui0000644000175000017500000000661212032647215033367 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.config.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JPanel; import org.apache.jmeter.protocol.http.gui.HTTPFileArgsPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class MultipartUrlConfigGui extends UrlConfigGui { private static final long serialVersionUID = 240L; /** * Files panel that holds file informations to be uploaded by * http request. */ private HTTPFileArgsPanel filesPanel; // used by HttpTestSampleGui public MultipartUrlConfigGui() { super(); init(); } // not currently used public MultipartUrlConfigGui(boolean showSamplerFields) { super(showSamplerFields); init(); } public MultipartUrlConfigGui(boolean showSamplerFields, boolean showImplementation) { super(showSamplerFields, showImplementation, true); init(); } @Override public void modifyTestElement(TestElement sampler) { super.modifyTestElement(sampler); filesPanel.modifyTestElement(sampler); } @Override public void configure(TestElement el) { super.configure(el); filesPanel.configure(el); } private void init() {// called from ctor, so must not be overridable this.setLayout(new BorderLayout()); // WEB REQUEST PANEL JPanel webRequestPanel = new JPanel(); webRequestPanel.setLayout(new BorderLayout()); webRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("web_request"))); // $NON-NLS-1$ JPanel northPanel = new JPanel(); northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS)); northPanel.add(getProtocolAndMethodPanel()); northPanel.add(getPathPanel()); webRequestPanel.add(northPanel, BorderLayout.NORTH); webRequestPanel.add(getParameterPanel(), BorderLayout.CENTER); webRequestPanel.add(getHTTPFileArgsPanel(), BorderLayout.SOUTH); this.add(getWebServerTimeoutPanel(), BorderLayout.NORTH); this.add(webRequestPanel, BorderLayout.CENTER); this.add(getProxyServerPanel(), BorderLayout.SOUTH); } private JPanel getHTTPFileArgsPanel() { filesPanel = new HTTPFileArgsPanel(JMeterUtils.getResString("send_file")); // $NON-NLS-1$ return filesPanel; } /** * {@inheritDoc} */ @Override public void clear() { super.clear(); filesPanel.clear(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/gui/UrlConfigGui.java0000644000175000017500000007204012032647215032403 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.config.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.http.gui.HTTPArgumentsPanel; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.JLabeledTextArea; /** * Basic URL / HTTP Request configuration: * - host and port * - connect and response timeouts * - path, method, encoding, parameters * - redirects & keepalive */ public class UrlConfigGui extends JPanel implements ChangeListener { private static final long serialVersionUID = 240L; private static final int TAB_PARAMETERS = 0; private static final int TAB_RAW_BODY = 1; private HTTPArgumentsPanel argsPanel; private JTextField domain; private JTextField port; private JTextField proxyHost; private JTextField proxyPort; private JTextField proxyUser; private JPasswordField proxyPass; private JTextField connectTimeOut; private JTextField responseTimeOut; private JTextField protocol; private JTextField contentEncoding; private JTextField path; private JCheckBox followRedirects; private JCheckBox autoRedirects; private JCheckBox useKeepAlive; private JCheckBox useMultipartForPost; private JCheckBox useBrowserCompatibleMultipartMode; private JLabeledChoice method; private JLabeledChoice httpImplementation; private final boolean notConfigOnly; // set this false to suppress some items for use in HTTP Request defaults private final boolean showImplementation; // Set false for AJP // Raw POST Body private JLabeledTextArea postBodyContent; // Tabbed pane that contains parameters and raw body private ValidationTabbedPane postContentTabbedPane; private boolean showRawBodyPane; public UrlConfigGui() { this(true); } /** * @param showSamplerFields */ public UrlConfigGui(boolean showSamplerFields) { this(showSamplerFields, true, true); } /** * @param showSamplerFields * @param showImplementation Show HTTP Implementation * @param showRawBodyPane */ public UrlConfigGui(boolean showSamplerFields, boolean showImplementation, boolean showRawBodyPane) { notConfigOnly=showSamplerFields; this.showImplementation = showImplementation; this.showRawBodyPane = showRawBodyPane; init(); } public void clear() { domain.setText(""); // $NON-NLS-1$ if (notConfigOnly){ followRedirects.setSelected(true); autoRedirects.setSelected(false); method.setText(HTTPSamplerBase.DEFAULT_METHOD); useKeepAlive.setSelected(true); useMultipartForPost.setSelected(false); useBrowserCompatibleMultipartMode.setSelected(HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT); } if (showImplementation) { httpImplementation.setText(""); // $NON-NLS-1$ } path.setText(""); // $NON-NLS-1$ port.setText(""); // $NON-NLS-1$ proxyHost.setText(""); // $NON-NLS-1$ proxyPort.setText(""); // $NON-NLS-1$ proxyUser.setText(""); // $NON-NLS-1$ proxyPass.setText(""); // $NON-NLS-1$ connectTimeOut.setText(""); // $NON-NLS-1$ responseTimeOut.setText(""); // $NON-NLS-1$ protocol.setText(""); // $NON-NLS-1$ contentEncoding.setText(""); // $NON-NLS-1$ argsPanel.clear(); if(showRawBodyPane) { postBodyContent.setText("");// $NON-NLS-1$ } postContentTabbedPane.setSelectedIndex(TAB_PARAMETERS, false); } public TestElement createTestElement() { ConfigTestElement element = new ConfigTestElement(); element.setName(this.getName()); element.setProperty(TestElement.GUI_CLASS, this.getClass().getName()); element.setProperty(TestElement.TEST_CLASS, element.getClass().getName()); modifyTestElement(element); return element; } /** * Save the GUI values in the sampler. * * @param element */ public void modifyTestElement(TestElement element) { boolean useRaw = postContentTabbedPane.getSelectedIndex()==TAB_RAW_BODY; Arguments args; if(useRaw) { args = new Arguments(); String text = postBodyContent.getText(); /* * Textfield uses \n (LF) to delimit lines; we need to send CRLF. * Rather than change the way that arguments are processed by the * samplers for raw data, it is easier to fix the data. * On retrival, CRLF is converted back to LF for storage in the text field. * See */ HTTPArgument arg = new HTTPArgument("", text.replaceAll("\n","\r\n"), false); arg.setAlwaysEncoded(false); args.addArgument(arg); } else { args = (Arguments) argsPanel.createTestElement(); HTTPArgument.convertArgumentsToHTTP(args); } element.setProperty(HTTPSamplerBase.POST_BODY_RAW, useRaw, HTTPSamplerBase.POST_BODY_RAW_DEFAULT); element.setProperty(new TestElementProperty(HTTPSamplerBase.ARGUMENTS, args)); element.setProperty(HTTPSamplerBase.DOMAIN, domain.getText()); element.setProperty(HTTPSamplerBase.PORT, port.getText()); element.setProperty(HTTPSamplerBase.PROXYHOST, proxyHost.getText(),""); element.setProperty(HTTPSamplerBase.PROXYPORT, proxyPort.getText(),""); element.setProperty(HTTPSamplerBase.PROXYUSER, proxyUser.getText(),""); element.setProperty(HTTPSamplerBase.PROXYPASS, String.valueOf(proxyPass.getPassword()),""); element.setProperty(HTTPSamplerBase.CONNECT_TIMEOUT, connectTimeOut.getText()); element.setProperty(HTTPSamplerBase.RESPONSE_TIMEOUT, responseTimeOut.getText()); element.setProperty(HTTPSamplerBase.PROTOCOL, protocol.getText()); element.setProperty(HTTPSamplerBase.CONTENT_ENCODING, contentEncoding.getText()); element.setProperty(HTTPSamplerBase.PATH, path.getText()); if (notConfigOnly){ element.setProperty(HTTPSamplerBase.METHOD, method.getText()); element.setProperty(new BooleanProperty(HTTPSamplerBase.FOLLOW_REDIRECTS, followRedirects.isSelected())); element.setProperty(new BooleanProperty(HTTPSamplerBase.AUTO_REDIRECTS, autoRedirects.isSelected())); element.setProperty(new BooleanProperty(HTTPSamplerBase.USE_KEEPALIVE, useKeepAlive.isSelected())); element.setProperty(new BooleanProperty(HTTPSamplerBase.DO_MULTIPART_POST, useMultipartForPost.isSelected())); element.setProperty(HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART, useBrowserCompatibleMultipartMode.isSelected(),HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT); } if (showImplementation) { element.setProperty(HTTPSamplerBase.IMPLEMENTATION, httpImplementation.getText(),""); } } // FIXME FACTOR WITH HTTPHC4Impl, HTTPHC3Impl // Just append all the parameter values, and use that as the post body /** * Compute Post body from arguments * @param arguments {@link Arguments} * @return {@link String} */ private static final String computePostBody(Arguments arguments) { return computePostBody(arguments, false); } /** * Compute Post body from arguments * @param arguments {@link Arguments} * @param crlfToLF whether to convert CRLF to LF * @return {@link String} */ private static final String computePostBody(Arguments arguments, boolean crlfToLF) { StringBuilder postBody = new StringBuilder(); PropertyIterator args = arguments.iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); String value = arg.getValue(); if (crlfToLF) { value=value.replaceAll("\r\n", "\n"); // See modifyTestElement } postBody.append(value); } return postBody.toString(); } /** * Set the text, etc. in the UI. * * @param el * contains the data to be displayed */ public void configure(TestElement el) { setName(el.getName()); Arguments arguments = (Arguments) el.getProperty(HTTPSamplerBase.ARGUMENTS).getObjectValue(); boolean useRaw = el.getPropertyAsBoolean(HTTPSamplerBase.POST_BODY_RAW, HTTPSamplerBase.POST_BODY_RAW_DEFAULT); if(useRaw) { String postBody = computePostBody(arguments, true); // Convert CRLF to CR, see modifyTestElement postBodyContent.setText(postBody); postContentTabbedPane.setSelectedIndex(TAB_RAW_BODY, false); } else { argsPanel.configure(arguments); postContentTabbedPane.setSelectedIndex(TAB_PARAMETERS, false); } domain.setText(el.getPropertyAsString(HTTPSamplerBase.DOMAIN)); String portString = el.getPropertyAsString(HTTPSamplerBase.PORT); // Only display the port number if it is meaningfully specified if (portString.equals(HTTPSamplerBase.UNSPECIFIED_PORT_AS_STRING)) { port.setText(""); // $NON-NLS-1$ } else { port.setText(portString); } proxyHost.setText(el.getPropertyAsString(HTTPSamplerBase.PROXYHOST)); proxyPort.setText(el.getPropertyAsString(HTTPSamplerBase.PROXYPORT)); proxyUser.setText(el.getPropertyAsString(HTTPSamplerBase.PROXYUSER)); proxyPass.setText(el.getPropertyAsString(HTTPSamplerBase.PROXYPASS)); connectTimeOut.setText(el.getPropertyAsString(HTTPSamplerBase.CONNECT_TIMEOUT)); responseTimeOut.setText(el.getPropertyAsString(HTTPSamplerBase.RESPONSE_TIMEOUT)); protocol.setText(el.getPropertyAsString(HTTPSamplerBase.PROTOCOL)); contentEncoding.setText(el.getPropertyAsString(HTTPSamplerBase.CONTENT_ENCODING)); path.setText(el.getPropertyAsString(HTTPSamplerBase.PATH)); if (notConfigOnly){ method.setText(el.getPropertyAsString(HTTPSamplerBase.METHOD)); followRedirects.setSelected(el.getPropertyAsBoolean(HTTPSamplerBase.FOLLOW_REDIRECTS)); autoRedirects.setSelected(el.getPropertyAsBoolean(HTTPSamplerBase.AUTO_REDIRECTS)); useKeepAlive.setSelected(el.getPropertyAsBoolean(HTTPSamplerBase.USE_KEEPALIVE)); useMultipartForPost.setSelected(el.getPropertyAsBoolean(HTTPSamplerBase.DO_MULTIPART_POST)); useBrowserCompatibleMultipartMode.setSelected(el.getPropertyAsBoolean( HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART, HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT)); } if (showImplementation) { httpImplementation.setText(el.getPropertyAsString(HTTPSamplerBase.IMPLEMENTATION)); } } private void init() {// called from ctor, so must not be overridable this.setLayout(new BorderLayout()); // WEB REQUEST PANEL JPanel webRequestPanel = new JPanel(); webRequestPanel.setLayout(new BorderLayout()); webRequestPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("web_request"))); // $NON-NLS-1$ JPanel northPanel = new JPanel(); northPanel.setLayout(new BoxLayout(northPanel, BoxLayout.Y_AXIS)); northPanel.add(getProtocolAndMethodPanel()); northPanel.add(getPathPanel()); webRequestPanel.add(northPanel, BorderLayout.NORTH); webRequestPanel.add(getParameterPanel(), BorderLayout.CENTER); this.add(getWebServerTimeoutPanel(), BorderLayout.NORTH); this.add(webRequestPanel, BorderLayout.CENTER); this.add(getProxyServerPanel(), BorderLayout.SOUTH); } /** * Create a panel containing the webserver (domain+port) and timeouts (connect+request). * * @return the panel */ protected final JPanel getWebServerTimeoutPanel() { // WEB SERVER PANEL JPanel webServerPanel = new HorizontalPanel(); webServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("web_server"))); // $NON-NLS-1$ final JPanel domainPanel = getDomainPanel(); final JPanel portPanel = getPortPanel(); webServerPanel.add(domainPanel, BorderLayout.CENTER); webServerPanel.add(portPanel, BorderLayout.EAST); JPanel timeOut = new HorizontalPanel(); timeOut.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("web_server_timeout_title"))); // $NON-NLS-1$ final JPanel connPanel = getConnectTimeOutPanel(); final JPanel reqPanel = getResponseTimeOutPanel(); timeOut.add(connPanel); timeOut.add(reqPanel); JPanel webServerTimeoutPanel = new VerticalPanel(); webServerTimeoutPanel.add(webServerPanel, BorderLayout.CENTER); webServerTimeoutPanel.add(timeOut, BorderLayout.EAST); JPanel bigPanel = new VerticalPanel(); bigPanel.add(webServerTimeoutPanel); return bigPanel; } /** * Create a panel containing the proxy server details * * @return the panel */ protected final JPanel getProxyServerPanel(){ JPanel proxyServer = new HorizontalPanel(); proxyServer.add(getProxyHostPanel(), BorderLayout.CENTER); proxyServer.add(getProxyPortPanel(), BorderLayout.EAST); JPanel proxyLogin = new HorizontalPanel(); proxyLogin.add(getProxyUserPanel()); proxyLogin.add(getProxyPassPanel()); JPanel proxyServerPanel = new HorizontalPanel(); proxyServerPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("web_proxy_server_title"))); // $NON-NLS-1$ proxyServerPanel.add(proxyServer, BorderLayout.CENTER); proxyServerPanel.add(proxyLogin, BorderLayout.EAST); return proxyServerPanel; } private JPanel getPortPanel() { port = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_port")); // $NON-NLS-1$ label.setLabelFor(port); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(port, BorderLayout.CENTER); return panel; } private JPanel getProxyPortPanel() { proxyPort = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_port")); // $NON-NLS-1$ label.setLabelFor(proxyPort); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(proxyPort, BorderLayout.CENTER); return panel; } private JPanel getConnectTimeOutPanel() { connectTimeOut = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_timeout_connect")); // $NON-NLS-1$ label.setLabelFor(connectTimeOut); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(connectTimeOut, BorderLayout.CENTER); return panel; } private JPanel getResponseTimeOutPanel() { responseTimeOut = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_timeout_response")); // $NON-NLS-1$ label.setLabelFor(responseTimeOut); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(responseTimeOut, BorderLayout.CENTER); return panel; } private JPanel getDomainPanel() { domain = new JTextField(20); JLabel label = new JLabel(JMeterUtils.getResString("web_server_domain")); // $NON-NLS-1$ label.setLabelFor(domain); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(domain, BorderLayout.CENTER); return panel; } private JPanel getProxyHostPanel() { proxyHost = new JTextField(20); JLabel label = new JLabel(JMeterUtils.getResString("web_server_domain")); // $NON-NLS-1$ label.setLabelFor(proxyHost); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(proxyHost, BorderLayout.CENTER); return panel; } private JPanel getProxyUserPanel() { proxyUser = new JTextField(5); JLabel label = new JLabel(JMeterUtils.getResString("username")); // $NON-NLS-1$ label.setLabelFor(proxyUser); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(proxyUser, BorderLayout.CENTER); return panel; } private JPanel getProxyPassPanel() { proxyPass = new JPasswordField(5); JLabel label = new JLabel(JMeterUtils.getResString("password")); // $NON-NLS-1$ label.setLabelFor(proxyPass); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(proxyPass, BorderLayout.CENTER); return panel; } /** * This method defines the Panel for the HTTP path, 'Follow Redirects' * 'Use KeepAlive', and 'Use multipart for HTTP POST' elements. * * @return JPanel The Panel for the path, 'Follow Redirects' and 'Use * KeepAlive' elements. */ protected Component getPathPanel() { path = new JTextField(15); JLabel label = new JLabel(JMeterUtils.getResString("path")); //$NON-NLS-1$ label.setLabelFor(path); if (notConfigOnly){ followRedirects = new JCheckBox(JMeterUtils.getResString("follow_redirects")); // $NON-NLS-1$ followRedirects.setSelected(true); followRedirects.addChangeListener(this); autoRedirects = new JCheckBox(JMeterUtils.getResString("follow_redirects_auto")); //$NON-NLS-1$ autoRedirects.addChangeListener(this); autoRedirects.setSelected(false);// Default changed in 2.3 and again in 2.4 useKeepAlive = new JCheckBox(JMeterUtils.getResString("use_keepalive")); // $NON-NLS-1$ useKeepAlive.setSelected(true); useMultipartForPost = new JCheckBox(JMeterUtils.getResString("use_multipart_for_http_post")); // $NON-NLS-1$ useMultipartForPost.setSelected(false); useBrowserCompatibleMultipartMode = new JCheckBox(JMeterUtils.getResString("use_multipart_mode_browser")); // $NON-NLS-1$ useBrowserCompatibleMultipartMode.setSelected(HTTPSamplerBase.BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT); } JPanel pathPanel = new JPanel(new BorderLayout(5, 0)); pathPanel.add(label, BorderLayout.WEST); pathPanel.add(path, BorderLayout.CENTER); pathPanel.setMinimumSize(pathPanel.getPreferredSize()); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(pathPanel); if (notConfigOnly){ JPanel optionPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); optionPanel.add(autoRedirects); optionPanel.add(followRedirects); optionPanel.add(useKeepAlive); optionPanel.add(useMultipartForPost); optionPanel.add(useBrowserCompatibleMultipartMode); optionPanel.setMinimumSize(optionPanel.getPreferredSize()); panel.add(optionPanel); } return panel; } protected JPanel getProtocolAndMethodPanel() { // Implementation if (showImplementation) { httpImplementation = new JLabeledChoice(JMeterUtils.getResString("http_implementation"), // $NON-NLS-1$ HTTPSamplerFactory.getImplementations()); httpImplementation.addValue(""); } // PROTOCOL protocol = new JTextField(4); JLabel protocolLabel = new JLabel(JMeterUtils.getResString("protocol")); // $NON-NLS-1$ protocolLabel.setLabelFor(protocol); // CONTENT_ENCODING contentEncoding = new JTextField(10); JLabel contentEncodingLabel = new JLabel(JMeterUtils.getResString("content_encoding")); // $NON-NLS-1$ contentEncodingLabel.setLabelFor(contentEncoding); if (notConfigOnly){ method = new JLabeledChoice(JMeterUtils.getResString("method"), // $NON-NLS-1$ HTTPSamplerBase.getValidMethodsAsArray()); } JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); if (showImplementation) { panel.add(httpImplementation); } panel.add(protocolLabel); panel.add(protocol); panel.add(Box.createHorizontalStrut(5)); if (notConfigOnly){ panel.add(method); } panel.setMinimumSize(panel.getPreferredSize()); panel.add(Box.createHorizontalStrut(5)); panel.add(contentEncodingLabel); panel.add(contentEncoding); panel.setMinimumSize(panel.getPreferredSize()); return panel; } protected JTabbedPane getParameterPanel() { postContentTabbedPane = new ValidationTabbedPane(); argsPanel = new HTTPArgumentsPanel(); postContentTabbedPane.add(JMeterUtils.getResString("post_as_parameters"), argsPanel);// $NON-NLS-1$ if(showRawBodyPane) { postBodyContent = new JLabeledTextArea(JMeterUtils.getResString("post_body_raw"));// $NON-NLS-1$ postContentTabbedPane.add(JMeterUtils.getResString("post_body"), postBodyContent);// $NON-NLS-1$ } return postContentTabbedPane; } /** * */ class ValidationTabbedPane extends JTabbedPane{ /** * */ private static final long serialVersionUID = 7014311238367882880L; /* (non-Javadoc) * @see javax.swing.JTabbedPane#setSelectedIndex(int) */ @Override public void setSelectedIndex(int index) { setSelectedIndex(index, true); } /** * Apply some check rules if check is true */ public void setSelectedIndex(int index, boolean check) { int oldSelectedIndex = getSelectedIndex(); if(!check || oldSelectedIndex==-1) { super.setSelectedIndex(index); } else if(index != this.getSelectedIndex()) { if(noData(getSelectedIndex())) { // If there is no data, then switching between Parameters and Raw should be // allowed with no further user interaction. argsPanel.clear(); postBodyContent.setText(""); super.setSelectedIndex(index); } else { if(oldSelectedIndex == TAB_RAW_BODY) { // If RAW data and Parameters match we allow switching if(postBodyContent.getText().equals(computePostBody((Arguments)argsPanel.createTestElement()).trim())) { super.setSelectedIndex(index); } else { // If there is data in the Raw panel, then the user should be // prevented from switching (that would be easy to track). JOptionPane.showConfirmDialog(this, JMeterUtils.getResString("web_cannot_switch_tab"), // $NON-NLS-1$ JMeterUtils.getResString("warning"), // $NON-NLS-1$ JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); return; } } else { // If the Parameter data can be converted (i.e. no names), we // warn the user that the Parameter data will be lost. if(canConvertParameters()) { Object[] options = { JMeterUtils.getResString("confirm"), JMeterUtils.getResString("cancel")}; int n = JOptionPane.showOptionDialog(this, JMeterUtils.getResString("web_parameters_lost_message"), JMeterUtils.getResString("warning"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); if(n == JOptionPane.YES_OPTION) { convertParametersToRaw(); super.setSelectedIndex(index); } else{ return; } } else { // If the Parameter data cannot be converted to Raw, then the user should be // prevented from doing so raise an error dialog JOptionPane.showConfirmDialog(this, JMeterUtils.getResString("web_cannot_convert_parameters_to_raw"), // $NON-NLS-1$ JMeterUtils.getResString("warning"), // $NON-NLS-1$ JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); return; } } } } } } // autoRedirects and followRedirects cannot both be selected public void stateChanged(ChangeEvent e) { if (e.getSource() == autoRedirects){ if (autoRedirects.isSelected()) { followRedirects.setSelected(false); } } if (e.getSource() == followRedirects){ if (followRedirects.isSelected()) { autoRedirects.setSelected(false); } } } /** * Convert Parameters to Raw Body */ void convertParametersToRaw() { postBodyContent.setText(computePostBody((Arguments)argsPanel.createTestElement())); } /** * * @return true if no argument has a name */ boolean canConvertParameters() { Arguments arguments = (Arguments)argsPanel.createTestElement(); for (int i = 0; i < arguments.getArgumentCount(); i++) { if(!StringUtils.isEmpty(arguments.getArgument(i).getName())) { return false; } } return true; } /** * @return true if neither Parameters tab nor Raw Body tab contain data */ boolean noData(int oldSelectedIndex) { if(oldSelectedIndex == TAB_RAW_BODY) { return StringUtils.isEmpty(postBodyContent.getText().trim()); } else { Arguments element = (Arguments)argsPanel.createTestElement(); return StringUtils.isEmpty(computePostBody(element)); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/config/MultipartUrlConfig.java0000644000175000017500000001610712032647215033056 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.config; import java.io.Serializable; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPFileArgs; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.util.JOrphanUtils; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; /** * Configuration element which handles HTTP Parameters and files to be uploaded */ public class MultipartUrlConfig implements Serializable { private static final long serialVersionUID = 240L; private final String boundary; private final Arguments args; /** * HTTPFileArgs list to be uploaded with http request. */ private final HTTPFileArgs files; /** * @deprecated only for use by unit tests */ @Deprecated public MultipartUrlConfig(){ this(null); } // called by HttpRequestHdr public MultipartUrlConfig(String boundary) { args = new Arguments(); files = new HTTPFileArgs(); this.boundary = boundary; } public String getBoundary() { return boundary; } public Arguments getArguments() { return args; } public void addArgument(String name, String value) { Arguments myArgs = this.getArguments(); myArgs.addArgument(new HTTPArgument(name, value)); } public void addArgument(String name, String value, String metadata) { Arguments myArgs = this.getArguments(); myArgs.addArgument(new HTTPArgument(name, value, metadata)); } public HTTPFileArgs getHTTPFileArgs() { return files; } // NOT USED // /** // * @deprecated values in a multipart/form-data are not urlencoded, // * so it does not make sense to add a value as a encoded value // */ // public void addEncodedArgument(String name, String value) { // Arguments myArgs = getArguments(); // HTTPArgument arg = new HTTPArgument(name, value, true); // if (arg.getName().equals(arg.getEncodedName()) && arg.getValue().equals(arg.getEncodedValue())) { // arg.setAlwaysEncoded(false); // } // myArgs.addArgument(arg); // } /** * Add a value that is not URL encoded, and make sure it * appears in the GUI that it will not be encoded when * the request is sent. * * @param name * @param value */ private void addNonEncodedArgument(String name, String value) { Arguments myArgs = getArguments(); // The value is not encoded HTTPArgument arg = new HTTPArgument(name, value, false); // Let the GUI show that it will not be encoded arg.setAlwaysEncoded(false); myArgs.addArgument(arg); } /** * This method allows a proxy server to send over the raw text from a * browser's output stream to be parsed and stored correctly into the * UrlConfig object. */ public void parseArguments(String queryString) { String[] parts = JOrphanUtils.split(queryString, "--" + getBoundary()); //$NON-NLS-1$ for (int i = 0; i < parts.length; i++) { String contentDisposition = getHeaderValue("Content-disposition", parts[i]); //$NON-NLS-1$ String contentType = getHeaderValue("Content-type", parts[i]); //$NON-NLS-1$ // Check if it is form data if (contentDisposition != null && contentDisposition.indexOf("form-data") > -1) { //$NON-NLS-1$ // Get the form field name final String namePrefix = "name=\""; //$NON-NLS-1$ int index = contentDisposition.indexOf(namePrefix) + namePrefix.length(); String name = contentDisposition.substring(index, contentDisposition.indexOf('\"', index)); //$NON-NLS-1$ // Check if it is a file being uploaded final String filenamePrefix = "filename=\""; //$NON-NLS-1$ if (contentDisposition.indexOf(filenamePrefix) > -1) { // Get the filename index = contentDisposition.indexOf(filenamePrefix) + filenamePrefix.length(); String path = contentDisposition.substring(index, contentDisposition.indexOf('\"', index)); //$NON-NLS-1$ if(path != null && path.length() > 0) { // Set the values retrieved for the file upload files.addHTTPFileArg(path, name, contentType); } } else { // Find the first empty line of the multipart, it signals end of headers for multipart // Agents are supposed to terminate lines in CRLF: final String CRLF = "\r\n"; final String CRLFCRLF = "\r\n\r\n"; // Code also allows for LF only (not sure why - perhaps because the test code uses it?) final String LF = "\n"; final String LFLF = "\n\n"; int indexEmptyCrLfCrLfLinePos = parts[i].indexOf(CRLFCRLF); //$NON-NLS-1$ int indexEmptyLfLfLinePos = parts[i].indexOf(LFLF); //$NON-NLS-1$ String value = null; if(indexEmptyCrLfCrLfLinePos > -1) {// CRLF blank line found value = parts[i].substring(indexEmptyCrLfCrLfLinePos+CRLFCRLF.length(),parts[i].lastIndexOf(CRLF)); } else if(indexEmptyLfLfLinePos > -1) { // LF blank line found value = parts[i].substring(indexEmptyLfLfLinePos+LFLF.length(),parts[i].lastIndexOf(LF)); } this.addNonEncodedArgument(name, value); } } } } private String getHeaderValue(String headerName, String multiPart) { String regularExpression = headerName + "\\s*:\\s*(.*)$"; //$NON-NLS-1$ Perl5Matcher localMatcher = JMeterUtils.getMatcher(); Pattern pattern = JMeterUtils.getPattern(regularExpression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.MULTILINE_MASK); if(localMatcher.contains(multiPart, pattern)) { return localMatcher.getMatch().group(1).trim(); } else { return null; } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/0000755000175000017500000000000012165514773026341 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/SamplerCreatorFactory.java0000644000175000017500000000766112032647215033460 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.log.Logger; /** * {@link SamplerCreator} factory */ public class SamplerCreatorFactory { private static final Logger log = LoggingManager.getLoggerForClass(); private static final SamplerCreator DEFAULT_SAMPLER_CREATOR = new DefaultSamplerCreator(); private Map samplerCreatorMap = new HashMap(); /** * */ public SamplerCreatorFactory() { init(); } /** * Initialize factory from classpath */ private void init() { try { List listClasses = ClassFinder.findClassesThatExtend( JMeterUtils.getSearchPaths(), new Class[] {SamplerCreator.class }); for (String strClassName : listClasses) { try { if(log.isDebugEnabled()) { log.debug("Loading class: "+ strClassName); } Class commandClass = Class.forName(strClassName); if (!Modifier.isAbstract(commandClass.getModifiers())) { if(log.isDebugEnabled()) { log.debug("Instantiating: "+ commandClass.getName()); } SamplerCreator creator = (SamplerCreator) commandClass.newInstance(); String[] contentTypes = creator.getManagedContentTypes(); for (String contentType : contentTypes) { if(log.isDebugEnabled()) { log.debug("Registering samplerCreator "+commandClass.getName()+" for content type:"+contentType); } samplerCreatorMap.put(contentType, creator); } } } catch (Exception e) { log.error("Exception registering "+SamplerCreator.class.getName() + " with implementation:"+strClassName, e); } } } catch (Exception e) { log.error("Exception finding implementations of "+SamplerCreator.class, e); } } /** * Gets {@link SamplerCreator} for content type, if none is found returns {@link DefaultSamplerCreator} * @param request {@link HttpRequestHdr} * @param pageEncodings Map pageEncodings * @param formEncodings Map formEncodings * @return SamplerCreator */ public SamplerCreator getSamplerCreator(HttpRequestHdr request, Map pageEncodings, Map formEncodings) { SamplerCreator creator = samplerCreatorMap.get(request.getContentType()); if(creator == null) { return DEFAULT_SAMPLER_CREATOR; } return creator; } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/DefaultSamplerCreator.java0000644000175000017500000003433012032647215033426 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.protocol.http.config.MultipartUrlConfig; import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory; import org.apache.jmeter.protocol.http.sampler.PostWriter; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Default implementation that handles classical HTTP textual + Multipart requests */ public class DefaultSamplerCreator extends AbstractSamplerCreator { private static final Logger log = LoggingManager.getLoggerForClass(); /** * */ public DefaultSamplerCreator() { } /** * @see org.apache.jmeter.protocol.http.proxy.SamplerCreator#getManagedContentTypes() */ public String[] getManagedContentTypes() { return new String[0]; } /** * * @see org.apache.jmeter.protocol.http.proxy.SamplerCreator#createSampler(org.apache.jmeter.protocol.http.proxy.HttpRequestHdr, java.util.Map, java.util.Map) */ public HTTPSamplerBase createSampler(HttpRequestHdr request, Map pageEncodings, Map formEncodings) { // Instantiate the sampler HTTPSamplerBase sampler = HTTPSamplerFactory.newInstance(request.getHttpSamplerName()); sampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName()); // Defaults sampler.setFollowRedirects(false); sampler.setUseKeepAlive(true); if (log.isDebugEnabled()) { log.debug("getSampler: sampler path = " + sampler.getPath()); } return sampler; } /** * @see org.apache.jmeter.protocol.http.proxy.SamplerCreator#populateSampler(org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase, org.apache.jmeter.protocol.http.proxy.HttpRequestHdr, java.util.Map, java.util.Map) */ public final void populateSampler(HTTPSamplerBase sampler, HttpRequestHdr request, Map pageEncodings, Map formEncodings) throws Exception{ computeFromHeader(sampler, request, pageEncodings, formEncodings); computeFromPostBody(sampler, request); if (log.isDebugEnabled()) { log.debug("sampler path = " + sampler.getPath()); } } /** * Compute sampler informations from Request Header * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} * @param pageEncodings Map * @param formEncodings Map * @throws Exception */ protected void computeFromHeader(HTTPSamplerBase sampler, HttpRequestHdr request, Map pageEncodings, Map formEncodings) throws Exception { computeDomain(sampler, request); computeMethod(sampler, request); computePort(sampler, request); computeProtocol(sampler, request); computeContentEncoding(sampler, request, pageEncodings, formEncodings); computePath(sampler, request); computeSamplerName(sampler, request); } /** * Compute sampler informations from Request Header * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} * @throws Exception */ protected void computeFromPostBody(HTTPSamplerBase sampler, HttpRequestHdr request) throws Exception { // If it was a HTTP GET request, then all parameters in the URL // has been handled by the sampler.setPath above, so we just need // to do parse the rest of the request if it is not a GET request if((!HTTPConstants.CONNECT.equals(request.getMethod())) && (!HTTPConstants.GET.equals(request.getMethod()))) { // Check if it was a multipart http post request final String contentType = request.getContentType(); MultipartUrlConfig urlConfig = request.getMultipartConfig(contentType); String contentEncoding = sampler.getContentEncoding(); // Get the post data using the content encoding of the request String postData = null; if (log.isDebugEnabled()) { if(!StringUtils.isEmpty(contentEncoding)) { log.debug("Using encoding " + contentEncoding + " for request body"); } else { log.debug("No encoding found, using JRE default encoding for request body"); } } if (!StringUtils.isEmpty(contentEncoding)) { postData = new String(request.getRawPostData(), contentEncoding); } else { // Use default encoding postData = new String(request.getRawPostData(), PostWriter.ENCODING); } if (urlConfig != null) { urlConfig.parseArguments(postData); // Tell the sampler to do a multipart post sampler.setDoMultipartPost(true); // Remove the header for content-type and content-length, since // those values will most likely be incorrect when the sampler // performs the multipart request, because the boundary string // will change request.getHeaderManager().removeHeaderNamed(HttpRequestHdr.CONTENT_TYPE); request.getHeaderManager().removeHeaderNamed(HttpRequestHdr.CONTENT_LENGTH); // Set the form data sampler.setArguments(urlConfig.getArguments()); // Set the file uploads sampler.setHTTPFiles(urlConfig.getHTTPFileArgs().asArray()); // used when postData is pure xml (eg. an xml-rpc call) or for PUT } else if (postData.trim().startsWith(" 0) { if (isBinaryContent(contentType)) { try { File tempDir = new File(getBinaryDirectory()); File out = File.createTempFile(request.getMethod(), getBinaryFileSuffix(), tempDir); FileUtils.writeByteArrayToFile(out,request.getRawPostData()); HTTPFileArg [] files = {new HTTPFileArg(out.getPath(),"",contentType)}; sampler.setHTTPFiles(files); } catch (IOException e) { log.warn("Could not create binary file: "+e); } } else { // Just put the whole postbody as the value of a parameter sampler.addNonEncodedArgument("", postData, ""); //used when postData is pure xml (ex. an xml-rpc call) } } } } /** * Compute sampler name * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} */ protected void computeSamplerName(HTTPSamplerBase sampler, HttpRequestHdr request) { if (!HTTPConstants.CONNECT.equals(request.getMethod()) && isNumberRequests()) { incrementRequestNumber(); sampler.setName(getRequestNumber() + " " + sampler.getPath()); } else { sampler.setName(sampler.getPath()); } } /** * Set path on sampler * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} */ protected void computePath(HTTPSamplerBase sampler, HttpRequestHdr request) { if(sampler.getContentEncoding() != null) { sampler.setPath(request.getPath(), sampler.getContentEncoding()); } else { // Although the spec says UTF-8 should be used for encoding URL parameters, // most browser use ISO-8859-1 for default if encoding is not known. // We use null for contentEncoding, then the url parameters will be added // with the value in the URL, and the "encode?" flag set to false sampler.setPath(request.getPath(), null); } if (log.isDebugEnabled()) { log.debug("Proxy: setting path: " + sampler.getPath()); } } /** * Compute content encoding * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} * @param pageEncodings Map * @param formEncodings Map * @throws MalformedURLException */ protected void computeContentEncoding(HTTPSamplerBase sampler, HttpRequestHdr request, Map pageEncodings, Map formEncodings) throws MalformedURLException { URL pageUrl = null; if(sampler.isProtocolDefaultPort()) { pageUrl = new URL(sampler.getProtocol(), sampler.getDomain(), request.getPath()); } else { pageUrl = new URL(sampler.getProtocol(), sampler.getDomain(), sampler.getPort(), request.getPath()); } String urlWithoutQuery = request.getUrlWithoutQuery(pageUrl); String contentEncoding = computeContentEncoding(request, pageEncodings, formEncodings, urlWithoutQuery); // Set the content encoding if(!StringUtils.isEmpty(contentEncoding)) { sampler.setContentEncoding(contentEncoding); } } /** * Computes content encoding from request and if not found uses pageEncoding * and formEncoding to see if URL was previously computed with a content type * @param request {@link HttpRequestHdr} * @param pageEncodings Map * @param formEncodings Map * @return String content encoding */ protected String computeContentEncoding(HttpRequestHdr request, Map pageEncodings, Map formEncodings, String urlWithoutQuery) { // Check if the request itself tells us what the encoding is String contentEncoding = null; String requestContentEncoding = ConversionUtils.getEncodingFromContentType( request.getContentType()); if(requestContentEncoding != null) { contentEncoding = requestContentEncoding; } else { // Check if we know the encoding of the page if (pageEncodings != null) { synchronized (pageEncodings) { contentEncoding = pageEncodings.get(urlWithoutQuery); } } // Check if we know the encoding of the form if (formEncodings != null) { synchronized (formEncodings) { String formEncoding = formEncodings.get(urlWithoutQuery); // Form encoding has priority over page encoding if (formEncoding != null) { contentEncoding = formEncoding; } } } } return contentEncoding; } /** * Set protocol on sampler * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} */ protected void computeProtocol(HTTPSamplerBase sampler, HttpRequestHdr request) { sampler.setProtocol(request.getProtocol(sampler)); } /** * Set Port on sampler * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} */ protected void computePort(HTTPSamplerBase sampler, HttpRequestHdr request) { sampler.setPort(request.serverPort()); if (log.isDebugEnabled()) { log.debug("Proxy: setting port: " + sampler.getPort()); } } /** * Set method on sampler * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} */ protected void computeMethod(HTTPSamplerBase sampler, HttpRequestHdr request) { sampler.setMethod(request.getMethod()); log.debug("Proxy: setting method: " + sampler.getMethod()); } /** * Set domain on sampler * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} */ protected void computeDomain(HTTPSamplerBase sampler, HttpRequestHdr request) { sampler.setDomain(request.serverName()); if (log.isDebugEnabled()) { log.debug("Proxy: setting server: " + sampler.getDomain()); } } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/0000755000175000017500000000000012165514773027125 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java0000644000175000017500000010157612032647215033120 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; import java.net.BindException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.gui.LogicControllerGui; import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.gui.util.PowerTableModel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.http.proxy.ProxyControl; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class ProxyControlGui extends LogicControllerGui implements JMeterGUIComponent, ActionListener, ItemListener, KeyListener, UnsharedComponent { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; private JTextField portField; /** * Used to indicate that HTTP request headers should be captured. The * default is to capture the HTTP request headers, which are specific to * particular browser settings. */ private JCheckBox httpHeaders; /** * Whether to group requests together based on inactivity separation periods -- * and how to handle such grouping afterwards. */ private JComboBox groupingMode; /** * Add an Assertion to the first sample of each set */ private JCheckBox addAssertions; /** * Set/clear the Use Keep-Alive box on the samplers (default is true) */ private JCheckBox useKeepAlive; /* * Use regexes to match the source data */ private JCheckBox regexMatch; /** * The list of sampler type names to choose from */ private JComboBox samplerTypeName; /** * Set/clear the Redirect automatically box on the samplers (default is false) */ private JCheckBox samplerRedirectAutomatically; /** * Set/clear the Follow-redirects box on the samplers (default is true) */ private JCheckBox samplerFollowRedirects; /** * Set/clear the Download images box on the samplers (default is false) */ private JCheckBox samplerDownloadImages; /** * Regular expression to include results based on content type */ private JTextField contentTypeInclude; /** * Regular expression to exclude results based on content type */ private JTextField contentTypeExclude; /** * List of available target controllers */ private JComboBox targetNodes; private DefaultComboBoxModel targetNodesModel; private ProxyControl model; private JTable excludeTable; private PowerTableModel excludeModel; private JTable includeTable; private PowerTableModel includeModel; private static final String CHANGE_TARGET = "change_target"; // $NON-NLS-1$ private JButton stop, start, restart; //+ action names private static final String STOP = "stop"; // $NON-NLS-1$ private static final String START = "start"; // $NON-NLS-1$ private static final String RESTART = "restart"; // $NON-NLS-1$ // This is applied to fields that should cause a restart when changed private static final String ENABLE_RESTART = "enable_restart"; // $NON-NLS-1$ private static final String ADD_INCLUDE = "add_include"; // $NON-NLS-1$ private static final String ADD_EXCLUDE = "add_exclude"; // $NON-NLS-1$ private static final String DELETE_INCLUDE = "delete_include"; // $NON-NLS-1$ private static final String DELETE_EXCLUDE = "delete_exclude"; // $NON-NLS-1$ private static final String ADD_TO_INCLUDE_FROM_CLIPBOARD = "include_clipboard"; // $NON-NLS-1$ private static final String ADD_TO_EXCLUDE_FROM_CLIPBOARD = "exclude_clipboard"; // $NON-NLS-1$ //- action names // Resource names for column headers private static final String INCLUDE_COL = "patterns_to_include"; // $NON-NLS-1$ private static final String EXCLUDE_COL = "patterns_to_exclude"; // $NON-NLS-1$ // Used by itemListener private static final String PORTFIELD = "portField"; // $NON-NLS-1$ public ProxyControlGui() { super(); log.debug("Creating ProxyControlGui"); init(); } /** {@inheritDoc} */ @Override public TestElement createTestElement() { model = makeProxyControl(); log.debug("creating/configuring model = " + model); modifyTestElement(model); return model; } protected ProxyControl makeProxyControl() { ProxyControl local = new ProxyControl(); return local; } /** {@inheritDoc} */ @Override public void modifyTestElement(TestElement el) { GuiUtils.stopTableEditing(excludeTable); GuiUtils.stopTableEditing(includeTable); configureTestElement(el); if (el instanceof ProxyControl) { model = (ProxyControl) el; model.setPort(portField.getText()); setIncludeListInProxyControl(model); setExcludeListInProxyControl(model); model.setCaptureHttpHeaders(httpHeaders.isSelected()); model.setGroupingMode(groupingMode.getSelectedIndex()); model.setAssertions(addAssertions.isSelected()); model.setSamplerTypeName(HTTPSamplerFactory.getImplementations()[samplerTypeName.getSelectedIndex()]); model.setSamplerRedirectAutomatically(samplerRedirectAutomatically.isSelected()); model.setSamplerFollowRedirects(samplerFollowRedirects.isSelected()); model.setUseKeepAlive(useKeepAlive.isSelected()); model.setSamplerDownloadImages(samplerDownloadImages.isSelected()); model.setRegexMatch(regexMatch.isSelected()); model.setContentTypeInclude(contentTypeInclude.getText()); model.setContentTypeExclude(contentTypeExclude.getText()); TreeNodeWrapper nw = (TreeNodeWrapper) targetNodes.getSelectedItem(); if (nw == null) { model.setTarget(null); } else { model.setTarget(nw.getTreeNode()); } } } protected void setIncludeListInProxyControl(ProxyControl element) { List includeList = getDataList(includeModel, INCLUDE_COL); element.setIncludeList(includeList); } protected void setExcludeListInProxyControl(ProxyControl element) { List excludeList = getDataList(excludeModel, EXCLUDE_COL); element.setExcludeList(excludeList); } private List getDataList(PowerTableModel p_model, String colName) { String[] dataArray = p_model.getData().getColumn(colName); List list = new LinkedList(); for (int i = 0; i < dataArray.length; i++) { list.add(dataArray[i]); } return list; } /** {@inheritDoc} */ @Override public String getLabelResource() { return "proxy_title"; // $NON-NLS-1$ } /** {@inheritDoc} */ @Override public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.NON_TEST_ELEMENTS }); } /** {@inheritDoc} */ @Override public void configure(TestElement element) { log.debug("Configuring gui with " + element); super.configure(element); model = (ProxyControl) element; portField.setText(model.getPortString()); httpHeaders.setSelected(model.getCaptureHttpHeaders()); groupingMode.setSelectedIndex(model.getGroupingMode()); addAssertions.setSelected(model.getAssertions()); samplerTypeName.setSelectedItem(model.getSamplerTypeName()); samplerRedirectAutomatically.setSelected(model.getSamplerRedirectAutomatically()); samplerFollowRedirects.setSelected(model.getSamplerFollowRedirects()); useKeepAlive.setSelected(model.getUseKeepalive()); samplerDownloadImages.setSelected(model.getSamplerDownloadImages()); regexMatch.setSelected(model.getRegexMatch()); contentTypeInclude.setText(model.getContentTypeInclude()); contentTypeExclude.setText(model.getContentTypeExclude()); reinitializeTargetCombo();// Set up list of potential targets and // enable listener populateTable(includeModel, model.getIncludePatterns().iterator()); populateTable(excludeModel, model.getExcludePatterns().iterator()); repaint(); } private void populateTable(PowerTableModel p_model, PropertyIterator iter) { p_model.clearData(); while (iter.hasNext()) { p_model.addRow(new Object[] { iter.next().getStringValue() }); } p_model.fireTableDataChanged(); } /* * Handles groupingMode. actionPerfomed is not suitable, as that seems to be * activated whenever the Proxy is selected in the Test Plan * Also handles samplerTypeName */ /** {@inheritDoc} */ public void itemStateChanged(ItemEvent e) { // System.err.println(e.paramString()); enableRestart(); } /** {@inheritDoc} */ public void actionPerformed(ActionEvent action) { String command = action.getActionCommand(); // System.err.println(action.paramString()+" "+command+ " // "+action.getModifiers()); if (command.equals(STOP)) { model.stopProxy(); stop.setEnabled(false); start.setEnabled(true); restart.setEnabled(false); } else if (command.equals(START)) { startProxy(); } else if (command.equals(RESTART)) { model.stopProxy(); startProxy(); } else if (command.equals(ENABLE_RESTART)){ enableRestart(); } else if (command.equals(ADD_EXCLUDE)) { excludeModel.addNewRow(); excludeModel.fireTableDataChanged(); enableRestart(); } else if (command.equals(ADD_INCLUDE)) { includeModel.addNewRow(); includeModel.fireTableDataChanged(); enableRestart(); } else if (command.equals(DELETE_EXCLUDE)) { excludeModel.removeRow(excludeTable.getSelectedRow()); excludeModel.fireTableDataChanged(); enableRestart(); } else if (command.equals(DELETE_INCLUDE)) { includeModel.removeRow(includeTable.getSelectedRow()); includeModel.fireTableDataChanged(); enableRestart(); } else if (command.equals(CHANGE_TARGET)) { log.debug("Change target " + targetNodes.getSelectedItem()); log.debug("In model " + model); TreeNodeWrapper nw = (TreeNodeWrapper) targetNodes.getSelectedItem(); model.setTarget(nw.getTreeNode()); enableRestart(); } else if (command.equals(ADD_TO_INCLUDE_FROM_CLIPBOARD)) { addFromClipboard(includeTable); includeModel.fireTableDataChanged(); enableRestart(); } else if (command.equals(ADD_TO_EXCLUDE_FROM_CLIPBOARD)) { addFromClipboard(excludeTable); excludeModel.fireTableDataChanged(); enableRestart(); } } /** * Add values from the clipboard to table * @param table {@link JTable} */ protected void addFromClipboard(JTable table) { GuiUtils.stopTableEditing(table); int rowCount = table.getRowCount(); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable trans = clipboard.getContents(null); DataFlavor[] flavourList = trans.getTransferDataFlavors(); PowerTableModel model = null; Collection flavours = new ArrayList(flavourList.length); if (Collections.addAll(flavours, flavourList) && flavours.contains(DataFlavor.stringFlavor)) { try { String clipboardContent = (String) trans.getTransferData(DataFlavor.stringFlavor); String[] clipboardLines = clipboardContent.split("\n"); for (String clipboardLine : clipboardLines) { model = (PowerTableModel) table.getModel(); model.addRow(new Object[] {clipboardLine}); } } catch (IOException ioe) { JOptionPane.showMessageDialog(this, "Could not add read arguments from clipboard:\n" + ioe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE); } catch (UnsupportedFlavorException ufe) { JOptionPane.showMessageDialog(this, "Could not add retrieve " + DataFlavor.stringFlavor.getHumanPresentableName() + " from clipboard" + ufe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE); } if (table.getRowCount() > rowCount) { if(model != null) { // Highlight (select) the appropriate rows. int rowToSelect = model.getRowCount() - 1; table.setRowSelectionInterval(rowCount, rowToSelect); } } } } private void startProxy() { ValueReplacer replacer = GuiPackage.getInstance().getReplacer(); modifyTestElement(model); try { replacer.replaceValues(model); model.startProxy(); start.setEnabled(false); stop.setEnabled(true); restart.setEnabled(false); } catch (InvalidVariableException e) { JOptionPane.showMessageDialog(this, JMeterUtils.getResString("invalid_variables"), // $NON-NLS-1$ "Error", JOptionPane.ERROR_MESSAGE); } catch (BindException e) { JOptionPane.showMessageDialog(this, JMeterUtils.getResString("proxy_daemon_bind_error"), // $NON-NLS-1$ "Error", JOptionPane.ERROR_MESSAGE); } catch (IOException e) { JOptionPane.showMessageDialog(this, JMeterUtils.getResString("proxy_daemon_error"), // $NON-NLS-1$ "Error", JOptionPane.ERROR_MESSAGE); } } private void enableRestart() { if (stop.isEnabled()) { // System.err.println("Enable Restart"); restart.setEnabled(true); } } /** {@inheritDoc} */ public void keyPressed(KeyEvent e) { } /** {@inheritDoc} */ public void keyTyped(KeyEvent e) { } /** {@inheritDoc} */ public void keyReleased(KeyEvent e) { String fieldName = e.getComponent().getName(); if (fieldName.equals(PORTFIELD)) { try { Integer.parseInt(portField.getText()); } catch (NumberFormatException nfe) { int length = portField.getText().length(); if (length > 0) { JOptionPane.showMessageDialog(this, "Only digits allowed", "Invalid data", JOptionPane.WARNING_MESSAGE); // Drop the last character: portField.setText(portField.getText().substring(0, length-1)); } } enableRestart(); } else if (fieldName.equals(ENABLE_RESTART)){ enableRestart(); } } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); Box myBox = Box.createVerticalBox(); myBox.add(createPortPanel()); myBox.add(Box.createVerticalStrut(5)); myBox.add(createTestPlanContentPanel()); myBox.add(Box.createVerticalStrut(5)); myBox.add(createHTTPSamplerPanel()); myBox.add(Box.createVerticalStrut(5)); myBox.add(createContentTypePanel()); myBox.add(Box.createVerticalStrut(5)); mainPanel.add(myBox, BorderLayout.NORTH); Box includeExcludePanel = Box.createVerticalBox(); includeExcludePanel.add(createIncludePanel()); includeExcludePanel.add(createExcludePanel()); mainPanel.add(includeExcludePanel, BorderLayout.CENTER); mainPanel.add(createControls(), BorderLayout.SOUTH); add(mainPanel, BorderLayout.CENTER); } private JPanel createControls() { start = new JButton(JMeterUtils.getResString("start")); // $NON-NLS-1$ start.addActionListener(this); start.setActionCommand(START); start.setEnabled(true); stop = new JButton(JMeterUtils.getResString("stop")); // $NON-NLS-1$ stop.addActionListener(this); stop.setActionCommand(STOP); stop.setEnabled(false); restart = new JButton(JMeterUtils.getResString("restart")); // $NON-NLS-1$ restart.addActionListener(this); restart.setActionCommand(RESTART); restart.setEnabled(false); JPanel panel = new JPanel(); panel.add(start); panel.add(stop); panel.add(restart); return panel; } private JPanel createPortPanel() { portField = new JTextField(ProxyControl.DEFAULT_PORT_S, 5); portField.setName(PORTFIELD); portField.addKeyListener(this); JLabel label = new JLabel(JMeterUtils.getResString("port")); // $NON-NLS-1$ label.setLabelFor(portField); JPanel gPane = new JPanel(new BorderLayout()); gPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("proxy_general_settings"))); // $NON-NLS-1$ HorizontalPanel panel = new HorizontalPanel(); panel.add(label); panel.add(portField); gPane.add(panel, BorderLayout.WEST); gPane.add(Box.createHorizontalStrut(10)); return gPane; } private JPanel createTestPlanContentPanel() { httpHeaders = new JCheckBox(JMeterUtils.getResString("proxy_headers")); // $NON-NLS-1$ httpHeaders.setSelected(true); // maintain original default httpHeaders.addActionListener(this); httpHeaders.setActionCommand(ENABLE_RESTART); addAssertions = new JCheckBox(JMeterUtils.getResString("proxy_assertions")); // $NON-NLS-1$ addAssertions.setSelected(false); addAssertions.addActionListener(this); addAssertions.setActionCommand(ENABLE_RESTART); regexMatch = new JCheckBox(JMeterUtils.getResString("proxy_regex")); // $NON-NLS-1$ regexMatch.setSelected(false); regexMatch.addActionListener(this); regexMatch.setActionCommand(ENABLE_RESTART); VerticalPanel mainPanel = new VerticalPanel(); mainPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("proxy_test_plan_content"))); // $NON-NLS-1$ HorizontalPanel nodeCreationPanel = new HorizontalPanel(); nodeCreationPanel.add(httpHeaders); nodeCreationPanel.add(addAssertions); nodeCreationPanel.add(regexMatch); HorizontalPanel targetPanel = new HorizontalPanel(); targetPanel.add(createTargetPanel()); targetPanel.add(createGroupingPanel()); mainPanel.add(targetPanel); mainPanel.add(nodeCreationPanel); return mainPanel; } private JPanel createHTTPSamplerPanel() { DefaultComboBoxModel m = new DefaultComboBoxModel(); for (String s : HTTPSamplerFactory.getImplementations()){ m.addElement(s); } samplerTypeName = new JComboBox(m); samplerTypeName.setSelectedItem(HTTPSamplerFactory.DEFAULT_CLASSNAME); samplerTypeName.addItemListener(this); JLabel label2 = new JLabel(JMeterUtils.getResString("proxy_sampler_type")); // $NON-NLS-1$ label2.setLabelFor(samplerTypeName); samplerRedirectAutomatically = new JCheckBox(JMeterUtils.getResString("follow_redirects_auto")); // $NON-NLS-1$ samplerRedirectAutomatically.setSelected(false); samplerRedirectAutomatically.addActionListener(this); samplerRedirectAutomatically.setActionCommand(ENABLE_RESTART); samplerFollowRedirects = new JCheckBox(JMeterUtils.getResString("follow_redirects")); // $NON-NLS-1$ samplerFollowRedirects.setSelected(true); samplerFollowRedirects.addActionListener(this); samplerFollowRedirects.setActionCommand(ENABLE_RESTART); useKeepAlive = new JCheckBox(JMeterUtils.getResString("use_keepalive")); // $NON-NLS-1$ useKeepAlive.setSelected(true); useKeepAlive.addActionListener(this); useKeepAlive.setActionCommand(ENABLE_RESTART); samplerDownloadImages = new JCheckBox(JMeterUtils.getResString("web_testing_retrieve_images")); // $NON-NLS-1$ samplerDownloadImages.setSelected(false); samplerDownloadImages.addActionListener(this); samplerDownloadImages.setActionCommand(ENABLE_RESTART); HorizontalPanel panel = new HorizontalPanel(); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("proxy_sampler_settings"))); // $NON-NLS-1$ panel.add(label2); panel.add(samplerTypeName); panel.add(samplerRedirectAutomatically); panel.add(samplerFollowRedirects); panel.add(useKeepAlive); panel.add(samplerDownloadImages); return panel; } private JPanel createTargetPanel() { targetNodesModel = new DefaultComboBoxModel(); targetNodes = new JComboBox(targetNodesModel); targetNodes.setActionCommand(CHANGE_TARGET); // Action listener will be added later JLabel label = new JLabel(JMeterUtils.getResString("proxy_target")); // $NON-NLS-1$ label.setLabelFor(targetNodes); HorizontalPanel panel = new HorizontalPanel(); panel.add(label); panel.add(targetNodes); return panel; } private JPanel createGroupingPanel() { DefaultComboBoxModel m = new DefaultComboBoxModel(); // Note: position of these elements in the menu *must* match the // corresponding ProxyControl.GROUPING_* values. m.addElement(JMeterUtils.getResString("grouping_no_groups")); // $NON-NLS-1$ m.addElement(JMeterUtils.getResString("grouping_add_separators")); // $NON-NLS-1$ m.addElement(JMeterUtils.getResString("grouping_in_controllers")); // $NON-NLS-1$ m.addElement(JMeterUtils.getResString("grouping_store_first_only")); // $NON-NLS-1$ m.addElement(JMeterUtils.getResString("grouping_in_transaction_controllers")); // $NON-NLS-1$ groupingMode = new JComboBox(m); groupingMode.setSelectedIndex(0); groupingMode.addItemListener(this); JLabel label2 = new JLabel(JMeterUtils.getResString("grouping_mode")); // $NON-NLS-1$ label2.setLabelFor(groupingMode); HorizontalPanel panel = new HorizontalPanel(); panel.add(label2); panel.add(groupingMode); return panel; } private JPanel createContentTypePanel() { contentTypeInclude = new JTextField(35); contentTypeInclude.addKeyListener(this); contentTypeInclude.setName(ENABLE_RESTART); JLabel labelInclude = new JLabel(JMeterUtils.getResString("proxy_content_type_include")); // $NON-NLS-1$ labelInclude.setLabelFor(contentTypeInclude); // Default value contentTypeInclude.setText(JMeterUtils.getProperty("proxy.content_type_include")); // $NON-NLS-1$ contentTypeExclude = new JTextField(35); contentTypeExclude.addKeyListener(this); contentTypeExclude.setName(ENABLE_RESTART); JLabel labelExclude = new JLabel(JMeterUtils.getResString("proxy_content_type_exclude")); // $NON-NLS-1$ labelExclude.setLabelFor(contentTypeExclude); // Default value contentTypeExclude.setText(JMeterUtils.getProperty("proxy.content_type_exclude")); // $NON-NLS-1$ HorizontalPanel panel = new HorizontalPanel(); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("proxy_content_type_filter"))); // $NON-NLS-1$ panel.add(labelInclude); panel.add(contentTypeInclude); panel.add(labelExclude); panel.add(contentTypeExclude); return panel; } private JPanel createIncludePanel() { includeModel = new PowerTableModel(new String[] { INCLUDE_COL }, new Class[] { String.class }); includeTable = new JTable(includeModel); includeTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); includeTable.setPreferredScrollableViewportSize(new Dimension(100, 30)); JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("patterns_to_include"))); // $NON-NLS-1$ panel.add(new JScrollPane(includeTable), BorderLayout.CENTER); panel.add(createTableButtonPanel(ADD_INCLUDE, DELETE_INCLUDE, ADD_TO_INCLUDE_FROM_CLIPBOARD), BorderLayout.SOUTH); return panel; } private JPanel createExcludePanel() { excludeModel = new PowerTableModel(new String[] { EXCLUDE_COL }, new Class[] { String.class }); excludeTable = new JTable(excludeModel); excludeTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); excludeTable.setPreferredScrollableViewportSize(new Dimension(100, 30)); JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("patterns_to_exclude"))); // $NON-NLS-1$ panel.add(new JScrollPane(excludeTable), BorderLayout.CENTER); panel.add(createTableButtonPanel(ADD_EXCLUDE, DELETE_EXCLUDE, ADD_TO_EXCLUDE_FROM_CLIPBOARD), BorderLayout.SOUTH); return panel; } private JPanel createTableButtonPanel(String addCommand, String deleteCommand, String copyFromClipboard) { JPanel buttonPanel = new JPanel(); JButton addButton = new JButton(JMeterUtils.getResString("add")); // $NON-NLS-1$ addButton.setActionCommand(addCommand); addButton.addActionListener(this); buttonPanel.add(addButton); JButton deleteButton = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ deleteButton.setActionCommand(deleteCommand); deleteButton.addActionListener(this); buttonPanel.add(deleteButton); /** A button for adding new excludes/includes to the table from the clipboard. */ JButton addFromClipboard = new JButton(JMeterUtils.getResString("add_from_clipboard")); // $NON-NLS-1$ addFromClipboard.setActionCommand(copyFromClipboard); addFromClipboard.addActionListener(this); buttonPanel.add(addFromClipboard); return buttonPanel; } private void reinitializeTargetCombo() { log.debug("Reinitializing target combo"); // Stop action notifications while we shuffle this around: targetNodes.removeActionListener(this); targetNodesModel.removeAllElements(); GuiPackage gp = GuiPackage.getInstance(); JMeterTreeNode root; if (gp != null) { root = (JMeterTreeNode) GuiPackage.getInstance().getTreeModel().getRoot(); targetNodesModel .addElement(new TreeNodeWrapper(null, JMeterUtils.getResString("use_recording_controller"))); // $NON-NLS-1$ buildNodesModel(root, "", 0); } TreeNodeWrapper choice = null; for (int i = 0; i < targetNodesModel.getSize(); i++) { choice = (TreeNodeWrapper) targetNodesModel.getElementAt(i); log.debug("Selecting item " + choice + " for model " + model + " in " + this); if (choice.getTreeNode() == model.getTarget()) // .equals caused // NPE { break; } } // Reinstate action notifications: targetNodes.addActionListener(this); // Set the current value: targetNodesModel.setSelectedItem(choice); log.debug("Reinitialization complete"); } private void buildNodesModel(JMeterTreeNode node, String parent_name, int level) { String seperator = " > "; if (node != null) { for (int i = 0; i < node.getChildCount(); i++) { StringBuilder name = new StringBuilder(); JMeterTreeNode cur = (JMeterTreeNode) node.getChildAt(i); TestElement te = cur.getTestElement(); /* * Will never be true. Probably intended to use * org.apache.jmeter.threads.ThreadGroup rather than * java.lang.ThreadGroup However, that does not work correctly; * whereas treating it as a Controller does. if (te instanceof * ThreadGroup) { name.append(parent_name); * name.append(cur.getName()); name.append(seperator); * buildNodesModel(cur, name.toString(), level); } else */ if (te instanceof Controller) { name.append(spaces(level)); name.append(parent_name); name.append(cur.getName()); TreeNodeWrapper tnw = new TreeNodeWrapper(cur, name.toString()); targetNodesModel.addElement(tnw); name = new StringBuilder(); name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), level + 1); } else if (te instanceof TestPlan || te instanceof WorkBench) { name.append(cur.getName()); name.append(seperator); buildNodesModel(cur, name.toString(), 0); } // Ignore everything else } } } private String spaces(int level) { int multi = 4; StringBuilder spaces = new StringBuilder(level * multi); for (int i = 0; i < level * multi; i++) { spaces.append(" "); // $NON-NLS-1$ } return spaces.toString(); } } class TreeNodeWrapper { private final JMeterTreeNode tn; private final String label; public TreeNodeWrapper(JMeterTreeNode tn, String label) { this.tn = tn; this.label = label; } public JMeterTreeNode getTreeNode() { return tn; } /** {@inheritDoc} */ @Override public String toString() { return label; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/FormCharSetFinder.java0000644000175000017500000001205012032647215032476 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.util.Map; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.jmeter.protocol.http.parser.HTMLParseException; import org.htmlparser.Node; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.tags.CompositeTag; import org.htmlparser.tags.FormTag; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.ParserException; /** * A parser for html, to find the form tags, and their accept-charset value */ // made public see Bug 49976 public class FormCharSetFinder { private static final Logger log = LoggingManager.getLoggerForClass(); static { log.info("Using htmlparser version: "+Parser.getVersion()); } public FormCharSetFinder() { super(); } /** * Add form action urls and their corresponding encodings for all forms on the page * * @param html the html to parse for form encodings * @param formEncodings the Map where form encodings should be added * @param pageEncoding the encoding used for the whole page * @throws HTMLParseException */ public void addFormActionsAndCharSet(String html, Map formEncodings, String pageEncoding) throws HTMLParseException { if (log.isDebugEnabled()) { log.debug("Parsing html of: " + html); } Parser htmlParser = null; try { htmlParser = new Parser(); htmlParser.setInputHTML(html); } catch (Exception e) { throw new HTMLParseException(e); } // Now parse the DOM tree try { // we start to iterate through the elements parseNodes(htmlParser.elements(), formEncodings, pageEncoding); log.debug("End : parseNodes"); } catch (ParserException e) { throw new HTMLParseException(e); } } /** * Recursively parse all nodes to pick up all form encodings * * @param e the nodes to be parsed * @param formEncodings the Map where we should add form encodings found * @param pageEncoding the encoding used for the page where the nodes are present */ private void parseNodes(final NodeIterator e, Map formEncodings, String pageEncoding) throws HTMLParseException, ParserException { while(e.hasMoreNodes()) { Node node = e.nextNode(); // a url is always in a Tag. if (!(node instanceof Tag)) { continue; } Tag tag = (Tag) node; // Only check form tags if (tag instanceof FormTag) { // Find the action / form url String action = tag.getAttribute("action"); String acceptCharSet = tag.getAttribute("accept-charset"); if(action != null && action.length() > 0) { // We use the page encoding where the form resides, as the // default encoding for the form String formCharSet = pageEncoding; // Check if we found an accept-charset attribute on the form if(acceptCharSet != null) { String[] charSets = JOrphanUtils.split(acceptCharSet, ","); // Just use the first one of the possible many charsets if(charSets.length > 0) { formCharSet = charSets[0].trim(); if(formCharSet.length() == 0) { formCharSet = null; } } } if(formCharSet != null) { synchronized (formEncodings) { formEncodings.put(action, formCharSet); } } } } // second, if the tag was a composite tag, // recursively parse its children. if (tag instanceof CompositeTag) { CompositeTag composite = (CompositeTag) tag; parseNodes(composite.elements(), formEncodings, pageEncoding); } } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java0000644000175000017500000011705412032647215031665 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import org.apache.jmeter.assertions.ResponseAssertion; import org.apache.jmeter.assertions.gui.AssertionGui; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.control.GenericController; import org.apache.jmeter.control.TransactionController; import org.apache.jmeter.control.gui.LogicControllerGui; import org.apache.jmeter.control.gui.TransactionControllerGui; import org.apache.jmeter.engine.util.ValueReplacer; import org.apache.jmeter.exceptions.IllegalUserActionException; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.gui.tree.JMeterTreeModel; import org.apache.jmeter.gui.tree.JMeterTreeNode; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.control.RecordingController; import org.apache.jmeter.protocol.http.gui.HeaderPanel; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory; import org.apache.jmeter.samplers.SampleEvent; import org.apache.jmeter.samplers.SampleListener; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.TestPlan; import org.apache.jmeter.testelement.WorkBench; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.AbstractThreadGroup; import org.apache.jmeter.timers.Timer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; //For unit tests, @see TestProxyControl /** * Class handles storing of generated samples, etc */ public class ProxyControl extends GenericController { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final String ASSERTION_GUI = AssertionGui.class.getName(); private static final String TRANSACTION_CONTROLLER_GUI = TransactionControllerGui.class.getName(); private static final String LOGIC_CONTROLLER_GUI = LogicControllerGui.class.getName(); private static final String HEADER_PANEL = HeaderPanel.class.getName(); private transient Daemon server; public static final int DEFAULT_PORT = 8080; // and as a string public static final String DEFAULT_PORT_S = Integer.toString(DEFAULT_PORT);// Used by GUI //+ JMX file attributes private static final String PORT = "ProxyControlGui.port"; // $NON-NLS-1$ private static final String EXCLUDE_LIST = "ProxyControlGui.exclude_list"; // $NON-NLS-1$ private static final String INCLUDE_LIST = "ProxyControlGui.include_list"; // $NON-NLS-1$ private static final String CAPTURE_HTTP_HEADERS = "ProxyControlGui.capture_http_headers"; // $NON-NLS-1$ private static final String ADD_ASSERTIONS = "ProxyControlGui.add_assertion"; // $NON-NLS-1$ private static final String GROUPING_MODE = "ProxyControlGui.grouping_mode"; // $NON-NLS-1$ private static final String SAMPLER_TYPE_NAME = "ProxyControlGui.sampler_type_name"; // $NON-NLS-1$ private static final String SAMPLER_REDIRECT_AUTOMATICALLY = "ProxyControlGui.sampler_redirect_automatically"; // $NON-NLS-1$ private static final String SAMPLER_FOLLOW_REDIRECTS = "ProxyControlGui.sampler_follow_redirects"; // $NON-NLS-1$ private static final String USE_KEEPALIVE = "ProxyControlGui.use_keepalive"; // $NON-NLS-1$ private static final String SAMPLER_DOWNLOAD_IMAGES = "ProxyControlGui.sampler_download_images"; // $NON-NLS-1$ private static final String REGEX_MATCH = "ProxyControlGui.regex_match"; // $NON-NLS-1$ private static final String CONTENT_TYPE_EXCLUDE = "ProxyControlGui.content_type_exclude"; // $NON-NLS-1$ private static final String CONTENT_TYPE_INCLUDE = "ProxyControlGui.content_type_include"; // $NON-NLS-1$ //- JMX file attributes // Must agree with the order of entries in the drop-down // created in ProxyControlGui.createGroupingPanel() //private static final int GROUPING_NO_GROUPS = 0; private static final int GROUPING_ADD_SEPARATORS = 1; private static final int GROUPING_IN_SIMPLE_CONTROLLERS = 2; private static final int GROUPING_STORE_FIRST_ONLY = 3; private static final int GROUPING_IN_TRANSACTION_CONTROLLERS = 4; // Original numeric order (we now use strings) private static final String SAMPLER_TYPE_HTTP_SAMPLER_JAVA = "0"; private static final String SAMPLER_TYPE_HTTP_SAMPLER_HC3_1 = "1"; private static final String SAMPLER_TYPE_HTTP_SAMPLER_HC4 = "2"; private long lastTime = 0;// When was the last sample seen? private static final long sampleGap = JMeterUtils.getPropDefault("proxy.pause", 1000); // $NON-NLS-1$ // Detect if user has pressed a new link private AtomicBoolean addAssertions = new AtomicBoolean(false); private AtomicInteger groupingMode = new AtomicInteger(0); private AtomicBoolean samplerRedirectAutomatically = new AtomicBoolean(false); private AtomicBoolean samplerFollowRedirects = new AtomicBoolean(false); private AtomicBoolean useKeepAlive = new AtomicBoolean(false); private AtomicBoolean samplerDownloadImages = new AtomicBoolean(false); private AtomicBoolean regexMatch = new AtomicBoolean(false);// Should we match using regexes? /** * Tree node where the samples should be stored. *

        * This property is not persistent. */ private JMeterTreeNode target; public ProxyControl() { setPort(DEFAULT_PORT); setExcludeList(new HashSet()); setIncludeList(new HashSet()); setCaptureHttpHeaders(true); // maintain original behaviour } public void setPort(int port) { this.setProperty(new IntegerProperty(PORT, port)); } public void setPort(String port) { setProperty(PORT, port); } public void setCaptureHttpHeaders(boolean capture) { setProperty(new BooleanProperty(CAPTURE_HTTP_HEADERS, capture)); } public void setGroupingMode(int grouping) { this.groupingMode.set(grouping); setProperty(new IntegerProperty(GROUPING_MODE, grouping)); } public void setAssertions(boolean b) { addAssertions.set(b); setProperty(new BooleanProperty(ADD_ASSERTIONS, b)); } @Deprecated public void setSamplerTypeName(int samplerTypeName) { setProperty(new IntegerProperty(SAMPLER_TYPE_NAME, samplerTypeName)); } public void setSamplerTypeName(String samplerTypeName) { setProperty(new StringProperty(SAMPLER_TYPE_NAME, samplerTypeName)); } public void setSamplerRedirectAutomatically(boolean b) { samplerRedirectAutomatically.set(b); setProperty(new BooleanProperty(SAMPLER_REDIRECT_AUTOMATICALLY, b)); } public void setSamplerFollowRedirects(boolean b) { samplerFollowRedirects.set(b); setProperty(new BooleanProperty(SAMPLER_FOLLOW_REDIRECTS, b)); } /** * @param b */ public void setUseKeepAlive(boolean b) { useKeepAlive.set(b); setProperty(new BooleanProperty(USE_KEEPALIVE, b)); } public void setSamplerDownloadImages(boolean b) { samplerDownloadImages.set(b); setProperty(new BooleanProperty(SAMPLER_DOWNLOAD_IMAGES, b)); } public void setIncludeList(Collection list) { setProperty(new CollectionProperty(INCLUDE_LIST, new HashSet(list))); } public void setExcludeList(Collection list) { setProperty(new CollectionProperty(EXCLUDE_LIST, new HashSet(list))); } /** * @param b */ public void setRegexMatch(boolean b) { regexMatch.set(b); setProperty(new BooleanProperty(REGEX_MATCH, b)); } public void setContentTypeExclude(String contentTypeExclude) { setProperty(new StringProperty(CONTENT_TYPE_EXCLUDE, contentTypeExclude)); } public void setContentTypeInclude(String contentTypeInclude) { setProperty(new StringProperty(CONTENT_TYPE_INCLUDE, contentTypeInclude)); } public boolean getAssertions() { return getPropertyAsBoolean(ADD_ASSERTIONS); } public int getGroupingMode() { return getPropertyAsInt(GROUPING_MODE); } public int getPort() { return getPropertyAsInt(PORT); } public String getPortString() { return getPropertyAsString(PORT); } public int getDefaultPort() { return DEFAULT_PORT; } public boolean getCaptureHttpHeaders() { return getPropertyAsBoolean(CAPTURE_HTTP_HEADERS); } public String getSamplerTypeName() { // Convert the old numeric types - just in case someone wants to reload the workbench String type = getPropertyAsString(SAMPLER_TYPE_NAME); if (SAMPLER_TYPE_HTTP_SAMPLER_JAVA.equals(type)){ type = HTTPSamplerFactory.IMPL_JAVA; } else if (SAMPLER_TYPE_HTTP_SAMPLER_HC3_1.equals(type)){ type = HTTPSamplerFactory.IMPL_HTTP_CLIENT3_1; } else if (SAMPLER_TYPE_HTTP_SAMPLER_HC4.equals(type)){ type = HTTPSamplerFactory.IMPL_HTTP_CLIENT4; } return type; } public boolean getSamplerRedirectAutomatically() { return getPropertyAsBoolean(SAMPLER_REDIRECT_AUTOMATICALLY, false); } public boolean getSamplerFollowRedirects() { return getPropertyAsBoolean(SAMPLER_FOLLOW_REDIRECTS, true); } public boolean getUseKeepalive() { return getPropertyAsBoolean(USE_KEEPALIVE, true); } public boolean getSamplerDownloadImages() { return getPropertyAsBoolean(SAMPLER_DOWNLOAD_IMAGES, false); } public boolean getRegexMatch() { return getPropertyAsBoolean(REGEX_MATCH, false); } public String getContentTypeExclude() { return getPropertyAsString(CONTENT_TYPE_EXCLUDE); } public String getContentTypeInclude() { return getPropertyAsString(CONTENT_TYPE_INCLUDE); } public void addConfigElement(ConfigElement config) { // NOOP } public void startProxy() throws IOException { notifyTestListenersOfStart(); try { server = new Daemon(getPort(), this); server.start(); GuiPackage.getInstance().register(server); } catch (IOException e) { log.error("Could not create Proxy daemon", e); throw e; } } public void addExcludedPattern(String pattern) { getExcludePatterns().addItem(pattern); } public CollectionProperty getExcludePatterns() { return (CollectionProperty) getProperty(EXCLUDE_LIST); } public void addIncludedPattern(String pattern) { getIncludePatterns().addItem(pattern); } public CollectionProperty getIncludePatterns() { return (CollectionProperty) getProperty(INCLUDE_LIST); } public void clearExcludedPatterns() { getExcludePatterns().clear(); } public void clearIncludedPatterns() { getIncludePatterns().clear(); } /** * @return the target controller node */ public JMeterTreeNode getTarget() { return target; } /** * Sets the target node where the samples generated by the proxy have to be * stored. */ public void setTarget(JMeterTreeNode target) { this.target = target; } /** * Receives the recorded sampler from the proxy server for placing in the * test tree. param serverResponse to be added to allow saving of the * server's response while recording. A future consideration. */ public synchronized void deliverSampler(final HTTPSamplerBase sampler, final TestElement[] subConfigs, final SampleResult result) { if (filterContentType(result) && filterUrl(sampler)) { JMeterTreeNode myTarget = findTargetControllerNode(); @SuppressWarnings("unchecked") // OK, because find only returns correct element types Collection defaultConfigurations = (Collection) findApplicableElements(myTarget, ConfigTestElement.class, false); @SuppressWarnings("unchecked") // OK, because find only returns correct element types Collection userDefinedVariables = (Collection) findApplicableElements(myTarget, Arguments.class, true); removeValuesFromSampler(sampler, defaultConfigurations); replaceValues(sampler, subConfigs, userDefinedVariables); sampler.setAutoRedirects(samplerRedirectAutomatically.get()); sampler.setFollowRedirects(samplerFollowRedirects.get()); sampler.setUseKeepAlive(useKeepAlive.get()); sampler.setImageParser(samplerDownloadImages.get()); placeSampler(sampler, subConfigs, myTarget); } else { if(log.isDebugEnabled()) { log.debug("Sample excluded based on url or content-type: " + result.getUrlAsString() + " - " + result.getContentType()); } result.setSampleLabel("["+result.getSampleLabel()+"]"); } // SampleEvent is not passed JMeterVariables, because they don't make sense for Proxy Recording notifySampleListeners(new SampleEvent(result, "WorkBench")); // TODO - is this the correct threadgroup name? } public void stopProxy() { if (server != null) { server.stopServer(); GuiPackage.getInstance().unregister(server); try { server.join(1000); // wait for server to stop } catch (InterruptedException e) { //NOOP } notifyTestListenersOfEnd(); server = null; } } // Package protected to allow test case access boolean filterUrl(HTTPSamplerBase sampler) { String domain = sampler.getDomain(); if (domain == null || domain.length() == 0) { return false; } String url = generateMatchUrl(sampler); CollectionProperty includePatterns = getIncludePatterns(); if (includePatterns.size() > 0) { if (!matchesPatterns(url, includePatterns)) { return false; } } CollectionProperty excludePatterns = getExcludePatterns(); if (excludePatterns.size() > 0) { if (matchesPatterns(url, excludePatterns)) { return false; } } return true; } // Package protected to allow test case access /** * Filter the response based on the content type. * If no include nor exclude filter is specified, the result will be included * * @param result the sample result to check, true means result will be kept */ boolean filterContentType(SampleResult result) { String includeExp = getContentTypeInclude(); String excludeExp = getContentTypeExclude(); // If no expressions are specified, we let the sample pass if((includeExp == null || includeExp.length() == 0) && (excludeExp == null || excludeExp.length() == 0) ) { return true; } // Check that we have a content type String sampleContentType = result.getContentType(); if(sampleContentType == null || sampleContentType.length() == 0) { if(log.isDebugEnabled()) { log.debug("No Content-type found for : " + result.getUrlAsString()); } return true; } if(log.isDebugEnabled()) { log.debug("Content-type to filter : " + sampleContentType); } // Check if the include pattern is matched boolean matched = testPattern(includeExp, sampleContentType, true); if(!matched) { return false; } // Check if the exclude pattern is matched matched = testPattern(excludeExp, sampleContentType, false); if(!matched) { return false; } return true; } /** * Returns true if matching pattern was different from expectedToMatch * @param expression Expression to match * @param sampleContentType * @return boolean true if Matching expression */ private final boolean testPattern(String expression, String sampleContentType, boolean expectedToMatch) { if(expression != null && expression.length() > 0) { if(log.isDebugEnabled()) { log.debug("Testing Expression : " + expression + " on sampleContentType:"+sampleContentType+", expected to match:"+expectedToMatch); } Pattern pattern = null; try { pattern = JMeterUtils.getPatternCache().getPattern(expression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.SINGLELINE_MASK); if(JMeterUtils.getMatcher().contains(sampleContentType, pattern) != expectedToMatch) { return false; } } catch (MalformedCachePatternException e) { log.warn("Skipped invalid content pattern: " + expression, e); } } return true; } /** * Helper method to add a Response Assertion * Called from AWT Event thread */ private void addAssertion(JMeterTreeModel model, JMeterTreeNode node) throws IllegalUserActionException { ResponseAssertion ra = new ResponseAssertion(); ra.setProperty(TestElement.GUI_CLASS, ASSERTION_GUI); ra.setName(JMeterUtils.getResString("assertion_title")); // $NON-NLS-1$ ra.setTestFieldResponseData(); model.addComponent(ra, node); } /** * Helper method to add a Divider * Called from Application Thread that needs to update GUI (JMeterTreeModel) */ private void addDivider(final JMeterTreeModel model, final JMeterTreeNode node) { final GenericController sc = new GenericController(); sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI); sc.setName("-------------------"); // $NON-NLS-1$ JMeterUtils.runSafe(new Runnable() { public void run() { try { model.addComponent(sc, node); } catch (IllegalUserActionException e) { log.error("Program error", e); throw new Error(e); } } }); } /** * Helper method to add a Simple Controller to contain the samplers. * Called from Application Thread that needs to update GUI (JMeterTreeModel) * @param model * Test component tree model * @param node * Node in the tree where we will add the Controller * @param name * A name for the Controller * @throws InvocationTargetException * @throws InterruptedException */ private void addSimpleController(final JMeterTreeModel model, final JMeterTreeNode node, String name) throws InterruptedException, InvocationTargetException { final GenericController sc = new GenericController(); sc.setProperty(TestElement.GUI_CLASS, LOGIC_CONTROLLER_GUI); sc.setName(name); JMeterUtils.runSafe(new Runnable() { public void run() { try { model.addComponent(sc, node); } catch (IllegalUserActionException e) { log.error("Program error", e); throw new Error(e); } } }); } /** * Helper method to add a Transaction Controller to contain the samplers. * Called from Application Thread that needs to update GUI (JMeterTreeModel) * @param model * Test component tree model * @param node * Node in the tree where we will add the Controller * @param name * A name for the Controller * @throws InvocationTargetException * @throws InterruptedException */ private void addTransactionController(final JMeterTreeModel model, final JMeterTreeNode node, String name) throws InterruptedException, InvocationTargetException { final TransactionController sc = new TransactionController(); sc.setProperty(TestElement.GUI_CLASS, TRANSACTION_CONTROLLER_GUI); sc.setName(name); JMeterUtils.runSafe(new Runnable() { public void run() { try { model.addComponent(sc, node); } catch (IllegalUserActionException e) { log.error("Program error", e); throw new Error(e); } } }); } /** * Helpler method to replicate any timers found within the Proxy Controller * into the provided sampler, while replacing any occurences of string _T_ * in the timer's configuration with the provided deltaT. * Called from AWT Event thread * @param model * Test component tree model * @param node * Sampler node in where we will add the timers * @param deltaT * Time interval from the previous request */ private void addTimers(JMeterTreeModel model, JMeterTreeNode node, long deltaT) { TestPlan variables = new TestPlan(); variables.addParameter("T", Long.toString(deltaT)); // $NON-NLS-1$ ValueReplacer replacer = new ValueReplacer(variables); JMeterTreeNode mySelf = model.getNodeOf(this); Enumeration children = mySelf.children(); while (children.hasMoreElements()) { JMeterTreeNode templateNode = children.nextElement(); if (templateNode.isEnabled()) { TestElement template = templateNode.getTestElement(); if (template instanceof Timer) { TestElement timer = (TestElement) template.clone(); try { replacer.undoReverseReplace(timer); model.addComponent(timer, node); } catch (InvalidVariableException e) { // Not 100% sure, but I believe this can't happen, so // I'll log and throw an error: log.error("Program error", e); throw new Error(e); } catch (IllegalUserActionException e) { // Not 100% sure, but I believe this can't happen, so // I'll log and throw an error: log.error("Program error", e); throw new Error(e); } } } } } /** * Finds the first enabled node of a given type in the tree. * * @param type * class of the node to be found * * @return the first node of the given type in the test component tree, or * null if none was found. */ private JMeterTreeNode findFirstNodeOfType(Class type) { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); List nodes = treeModel.getNodesOfType(type); for (JMeterTreeNode node : nodes) { if (node.isEnabled()) { return node; } } return null; } /** * Finds the controller where samplers have to be stored, that is: *

          *
        • The controller specified by the target property. *
        • If none was specified, the first RecordingController in the tree. *
        • If none is found, the first AbstractThreadGroup in the tree. *
        • If none is found, the Workspace. *
        * * @return the tree node for the controller where the proxy must store the * generated samplers. */ private JMeterTreeNode findTargetControllerNode() { JMeterTreeNode myTarget = getTarget(); if (myTarget != null) { return myTarget; } myTarget = findFirstNodeOfType(RecordingController.class); if (myTarget != null) { return myTarget; } myTarget = findFirstNodeOfType(AbstractThreadGroup.class); if (myTarget != null) { return myTarget; } myTarget = findFirstNodeOfType(WorkBench.class); if (myTarget != null) { return myTarget; } log.error("Program error: proxy recording target not found."); return null; } /** * Finds all configuration objects of the given class applicable to the * recorded samplers, that is: *
          *
        • All such elements directly within the HTTP Proxy Server (these have * the highest priority). *
        • All such elements directly within the target controller (higher * priority) or directly within any containing controller (lower priority), * including the Test Plan itself (lowest priority). *
        * * @param myTarget * tree node for the recording target controller. * @param myClass * Class of the elements to be found. * @param ascending * true if returned elements should be ordered in ascending * priority, false if they should be in descending priority. * * @return a collection of applicable objects of the given class. */ // TODO - could be converted to generic class? private Collection findApplicableElements(JMeterTreeNode myTarget, Class myClass, boolean ascending) { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); LinkedList elements = new LinkedList(); // Look for elements directly within the HTTP proxy: Enumeration kids = treeModel.getNodeOf(this).children(); while (kids.hasMoreElements()) { JMeterTreeNode subNode = (JMeterTreeNode) kids.nextElement(); if (subNode.isEnabled()) { TestElement element = (TestElement) subNode.getUserObject(); if (myClass.isInstance(element)) { if (ascending) { elements.addFirst(element); } else { elements.add(element); } } } } // Look for arguments elements in the target controller or higher up: for (JMeterTreeNode controller = myTarget; controller != null; controller = (JMeterTreeNode) controller .getParent()) { kids = controller.children(); while (kids.hasMoreElements()) { JMeterTreeNode subNode = (JMeterTreeNode) kids.nextElement(); if (subNode.isEnabled()) { TestElement element = (TestElement) subNode.getUserObject(); if (myClass.isInstance(element)) { log.debug("Applicable: " + element.getName()); if (ascending) { elements.addFirst(element); } else { elements.add(element); } } // Special case for the TestPlan's Arguments sub-element: if (element instanceof TestPlan) { TestPlan tp = (TestPlan) element; Arguments args = tp.getArguments(); if (myClass.isInstance(args)) { if (ascending) { elements.addFirst(args); } else { elements.add(args); } } } } } } return elements; } private void placeSampler(final HTTPSamplerBase sampler, final TestElement[] subConfigs, JMeterTreeNode myTarget) { try { final JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); boolean firstInBatch = false; long now = System.currentTimeMillis(); long deltaT = now - lastTime; int cachedGroupingMode = groupingMode.get(); if (deltaT > sampleGap) { if (!myTarget.isLeaf() && cachedGroupingMode == GROUPING_ADD_SEPARATORS) { addDivider(treeModel, myTarget); } if (cachedGroupingMode == GROUPING_IN_SIMPLE_CONTROLLERS) { addSimpleController(treeModel, myTarget, sampler.getName()); } if (cachedGroupingMode == GROUPING_IN_TRANSACTION_CONTROLLERS) { addTransactionController(treeModel, myTarget, sampler.getName()); } firstInBatch = true;// Remember this was first in its batch } if (lastTime == 0) { deltaT = 0; // Decent value for timers } lastTime = now; if (cachedGroupingMode == GROUPING_STORE_FIRST_ONLY) { if (!firstInBatch) { return; // Huh! don't store this one! } // If we're not storing subsequent samplers, we'll need the // first sampler to do all the work...: sampler.setFollowRedirects(true); sampler.setImageParser(true); } if (cachedGroupingMode == GROUPING_IN_SIMPLE_CONTROLLERS || cachedGroupingMode == GROUPING_IN_TRANSACTION_CONTROLLERS) { // Find the last controller in the target to store the // sampler there: for (int i = myTarget.getChildCount() - 1; i >= 0; i--) { JMeterTreeNode c = (JMeterTreeNode) myTarget.getChildAt(i); if (c.getTestElement() instanceof GenericController) { myTarget = c; break; } } } final long deltaTFinal = deltaT; final boolean firstInBatchFinal = firstInBatch; final JMeterTreeNode myTargetFinal = myTarget; JMeterUtils.runSafe(new Runnable() { public void run() { try { final JMeterTreeNode newNode = treeModel.addComponent(sampler, myTargetFinal); if (firstInBatchFinal) { if (addAssertions.get()) { addAssertion(treeModel, newNode); } addTimers(treeModel, newNode, deltaTFinal); } for (int i = 0; subConfigs != null && i < subConfigs.length; i++) { if (subConfigs[i] instanceof HeaderManager) { final TestElement headerManager = subConfigs[i]; headerManager.setProperty(TestElement.GUI_CLASS, HEADER_PANEL); treeModel.addComponent(headerManager, newNode); } } } catch (IllegalUserActionException e) { JMeterUtils.reportErrorToUser(e.getMessage()); } } }); } catch (Exception e) { JMeterUtils.reportErrorToUser(e.getMessage()); } } /** * Remove from the sampler all values which match the one provided by the * first configuration in the given collection which provides a value for * that property. * * @param sampler * Sampler to remove values from. * @param configurations * ConfigTestElements in descending priority. */ private void removeValuesFromSampler(HTTPSamplerBase sampler, Collection configurations) { for (PropertyIterator props = sampler.propertyIterator(); props.hasNext();) { JMeterProperty prop = props.next(); String name = prop.getName(); String value = prop.getStringValue(); // There's a few properties which are excluded from this processing: if (name.equals(TestElement.ENABLED) || name.equals(TestElement.GUI_CLASS) || name.equals(TestElement.NAME) || name.equals(TestElement.TEST_CLASS)) { continue; // go on with next property. } for (Iterator configs = configurations.iterator(); configs.hasNext();) { ConfigTestElement config = configs.next(); String configValue = config.getPropertyAsString(name); if (configValue != null && configValue.length() > 0) { if (configValue.equals(value)) { sampler.setProperty(name, ""); // $NON-NLS-1$ } // Property was found in a config element. Whether or not // it matched the value in the sampler, we're done with // this property -- don't look at lower-priority configs: break; } } } } private String generateMatchUrl(HTTPSamplerBase sampler) { StringBuilder buf = new StringBuilder(sampler.getDomain()); buf.append(':'); // $NON-NLS-1$ buf.append(sampler.getPort()); buf.append(sampler.getPath()); if (sampler.getQueryString().length() > 0) { buf.append('?'); // $NON-NLS-1$ buf.append(sampler.getQueryString()); } return buf.toString(); } private boolean matchesPatterns(String url, CollectionProperty patterns) { PropertyIterator iter = patterns.iterator(); while (iter.hasNext()) { String item = iter.next().getStringValue(); Pattern pattern = null; try { pattern = JMeterUtils.getPatternCache().getPattern(item, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.SINGLELINE_MASK); if (JMeterUtils.getMatcher().matches(url, pattern)) { return true; } } catch (MalformedCachePatternException e) { log.warn("Skipped invalid pattern: " + item, e); } } return false; } /** * Scan all test elements passed in for values matching the value of any of * the variables in any of the variable-holding elements in the collection. * * @param sampler * A TestElement to replace values on * @param configs * More TestElements to replace values on * @param variables * Collection of Arguments to use to do the replacement, ordered * by ascending priority. */ private void replaceValues(TestElement sampler, TestElement[] configs, Collection variables) { // Build the replacer from all the variables in the collection: ValueReplacer replacer = new ValueReplacer(); for (Iterator vars = variables.iterator(); vars.hasNext();) { final Map map = vars.next().getArgumentsAsMap(); for (Iterator vals = map.values().iterator(); vals.hasNext();){ final Object next = vals.next(); if ("".equals(next)) {// Drop any empty values (Bug 45199) vals.remove(); } } replacer.addVariables(map); } try { boolean cachedRegexpMatch = regexMatch.get(); replacer.reverseReplace(sampler, cachedRegexpMatch); for (int i = 0; i < configs.length; i++) { if (configs[i] != null) { replacer.reverseReplace(configs[i], cachedRegexpMatch); } } } catch (InvalidVariableException e) { log.warn("Invalid variables included for replacement into recorded " + "sample", e); } } /** * This will notify sample listeners directly within the Proxy of the * sampling that just occured -- so that we have a means to record the * server's responses as we go. * * @param event * sampling event to be delivered */ private void notifySampleListeners(SampleEvent event) { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); JMeterTreeNode myNode = treeModel.getNodeOf(this); Enumeration kids = myNode.children(); while (kids.hasMoreElements()) { JMeterTreeNode subNode = kids.nextElement(); if (subNode.isEnabled()) { TestElement testElement = subNode.getTestElement(); if (testElement instanceof SampleListener) { ((SampleListener) testElement).sampleOccurred(event); } } } } /** * This will notify test listeners directly within the Proxy that the 'test' * (here meaning the proxy recording) has started. */ private void notifyTestListenersOfStart() { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); JMeterTreeNode myNode = treeModel.getNodeOf(this); Enumeration kids = myNode.children(); while (kids.hasMoreElements()) { JMeterTreeNode subNode = kids.nextElement(); if (subNode.isEnabled()) { TestElement testElement = subNode.getTestElement(); if (testElement instanceof TestStateListener) { ((TestStateListener) testElement).testStarted(); } } } } /** * This will notify test listeners directly within the Proxy that the 'test' * (here meaning the proxy recording) has ended. */ private void notifyTestListenersOfEnd() { JMeterTreeModel treeModel = GuiPackage.getInstance().getTreeModel(); JMeterTreeNode myNode = treeModel.getNodeOf(this); Enumeration kids = myNode.children(); while (kids.hasMoreElements()) { JMeterTreeNode subNode = kids.nextElement(); if (subNode.isEnabled()) { TestElement testElement = subNode.getTestElement(); if (testElement instanceof TestStateListener) { // TL - TE ((TestStateListener) testElement).testEnded(); } } } } @Override public boolean canRemove() { return null == server; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java0000644000175000017500000003224112032647215032123 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; import org.apache.commons.lang3.CharUtils; import org.apache.jmeter.protocol.http.config.MultipartUrlConfig; import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.gui.HeaderPanel; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; //For unit tests, @see TestHttpRequestHdr /** * The headers of the client HTTP request. * */ public class HttpRequestHdr { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String HTTP = "http"; // $NON-NLS-1$ private static final String HTTPS = "https"; // $NON-NLS-1$ private static final String PROXY_CONNECTION = "proxy-connection"; // $NON-NLS-1$ public static final String CONTENT_TYPE = "content-type"; // $NON-NLS-1$ public static final String CONTENT_LENGTH = "content-length"; // $NON-NLS-1$ /** * Http Request method, uppercased, e.g. GET or POST. */ private String method = ""; // $NON-NLS-1$ /** CONNECT url. */ private String paramHttps = ""; // $NON-NLS-1$ /** * The requested url. The universal resource locator that hopefully uniquely * describes the object or service the client is requesting. */ private String url = ""; // $NON-NLS-1$ /** * Version of http being used. Such as HTTP/1.0. */ private String version = ""; // NOTREAD // $NON-NLS-1$ private byte[] rawPostData; private final Map headers = new HashMap(); private final String httpSamplerName; private HeaderManager headerManager; public HttpRequestHdr() { this.httpSamplerName = ""; // $NON-NLS-1$ } /** * @param httpSamplerName the http sampler name */ public HttpRequestHdr(String httpSamplerName) { this.httpSamplerName = httpSamplerName; } /** * Parses a http header from a stream. * * @param in * the stream to parse. * @return array of bytes from client. */ public byte[] parse(InputStream in) throws IOException { boolean inHeaders = true; int readLength = 0; int dataLength = 0; boolean firstLine = true; ByteArrayOutputStream clientRequest = new ByteArrayOutputStream(); ByteArrayOutputStream line = new ByteArrayOutputStream(); int x; while ((inHeaders || readLength < dataLength) && ((x = in.read()) != -1)) { line.write(x); clientRequest.write(x); if (firstLine && !CharUtils.isAscii((char) x)){// includes \n throw new IllegalArgumentException("Only ASCII supported in headers (perhaps SSL was used?)"); } if (inHeaders && (byte) x == (byte) '\n') { // $NON-NLS-1$ if (line.size() < 3) { inHeaders = false; firstLine = false; // cannot be first line either } if (firstLine) { parseFirstLine(line.toString()); firstLine = false; } else { // parse other header lines, looking for Content-Length final int contentLen = parseLine(line.toString()); if (contentLen > 0) { dataLength = contentLen; // Save the last valid content length one } } if (log.isDebugEnabled()){ log.debug("Client Request Line: " + line.toString()); } line.reset(); } else if (!inHeaders) { readLength++; } } // Keep the raw post data rawPostData = line.toByteArray(); if (log.isDebugEnabled()){ log.debug("rawPostData in default JRE encoding: " + new String(rawPostData)); // TODO - charset? log.debug("Request: " + clientRequest.toString()); } return clientRequest.toByteArray(); } private void parseFirstLine(String firstLine) { if (log.isDebugEnabled()) { log.debug("browser request: " + firstLine); } StringTokenizer tz = new StringTokenizer(firstLine); method = getToken(tz).toUpperCase(java.util.Locale.ENGLISH); url = getToken(tz); version = getToken(tz); if (log.isDebugEnabled()) { log.debug("parser input: " + firstLine); log.debug("parsed method: " + method); log.debug("parsed url: " + url); log.debug("parsed version:" + version); } // SSL connection if (getMethod().startsWith(HTTPConstants.CONNECT)) { paramHttps = url; } if (url.startsWith("/")) { url = HTTPS + "://" + paramHttps + url; // $NON-NLS-1$ } log.debug("First Line: " + url); } /* * Split line into name/value pairs and store in headers if relevant * If name = "content-length", then return value as int, else return 0 */ private int parseLine(String nextLine) { int colon = nextLine.indexOf(':'); if (colon <= 0){ return 0; // Nothing to do } String name = nextLine.substring(0, colon).trim(); String value = nextLine.substring(colon+1).trim(); headers.put(name.toLowerCase(java.util.Locale.ENGLISH), new Header(name, value)); if (name.equalsIgnoreCase(CONTENT_LENGTH)) { return Integer.parseInt(value); } return 0; } private HeaderManager createHeaderManager() { HeaderManager manager = new HeaderManager(); for (String key : headers.keySet()) { if (!key.equals(PROXY_CONNECTION) && !key.equals(CONTENT_LENGTH) && !key.equalsIgnoreCase(HTTPConstants.HEADER_CONNECTION)) { manager.add(headers.get(key)); } } manager.setName(JMeterUtils.getResString("header_manager_title")); // $NON-NLS-1$ manager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName()); manager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName()); return manager; } public HeaderManager getHeaderManager() { if(headerManager == null) { headerManager = createHeaderManager(); } return headerManager; } public String getContentType() { Header contentTypeHeader = headers.get(CONTENT_TYPE); if (contentTypeHeader != null) { return contentTypeHeader.getValue(); } return null; } private boolean isMultipart(String contentType) { if (contentType != null && contentType.startsWith(HTTPConstants.MULTIPART_FORM_DATA)) { return true; } return false; } public MultipartUrlConfig getMultipartConfig(String contentType) { if(isMultipart(contentType)) { // Get the boundary string for the multiparts from the content type String boundaryString = contentType.substring(contentType.toLowerCase(java.util.Locale.ENGLISH).indexOf("boundary=") + "boundary=".length()); return new MultipartUrlConfig(boundaryString); } return null; } // // Parsing Methods // /** * Find the //server.name from an url. * * @return server's internet name */ public String serverName() { // chop to "server.name:x/thing" String str = url; int i = str.indexOf("//"); // $NON-NLS-1$ if (i > 0) { str = str.substring(i + 2); } // chop to server.name:xx i = str.indexOf('/'); // $NON-NLS-1$ if (0 < i) { str = str.substring(0, i); } // chop to server.name i = str.lastIndexOf(':'); // $NON-NLS-1$ if (0 < i) { str = str.substring(0, i); } // Handle IPv6 urls if(str.startsWith("[")&& str.endsWith("]")) { return str.substring(1, str.length()-1); } return str; } // TODO replace repeated substr() above and below with more efficient method. /** * Find the :PORT from http://server.ect:PORT/some/file.xxx * * @return server's port (or UNSPECIFIED if not found) */ public int serverPort() { String str = url; // chop to "server.name:x/thing" int i = str.indexOf("//"); if (i > 0) { str = str.substring(i + 2); } // chop to server.name:xx i = str.indexOf('/'); if (0 < i) { str = str.substring(0, i); } // chop to server.name i = str.lastIndexOf(':'); if (0 < i) { return Integer.parseInt(str.substring(i + 1).trim()); } return HTTPSamplerBase.UNSPECIFIED_PORT; } /** * Find the /some/file.xxxx from http://server.ect:PORT/some/file.xxx * * @return the path */ public String getPath() { String str = url; int i = str.indexOf("//"); if (i > 0) { str = str.substring(i + 2); } i = str.indexOf('/'); if (i < 0) { return ""; } return str.substring(i); } /** * Returns the url string extracted from the first line of the client request. * * @return the url */ public String getUrl(){ return url; } /** * Returns the method string extracted from the first line of the client request. * * @return the method (will always be upper case) */ public String getMethod(){ return method; } /** * Returns the next token in a string. * * @param tk * String that is partially tokenized. * @return The remainder */ private String getToken(StringTokenizer tk) { if (tk.hasMoreTokens()) { return tk.nextToken(); } return "";// $NON-NLS-1$ } // /** // * Returns the remainder of a tokenized string. // * // * @param tk // * String that is partially tokenized. // * @return The remainder // */ // private String getRemainder(StringTokenizer tk) { // StringBuilder strBuff = new StringBuilder(); // if (tk.hasMoreTokens()) { // strBuff.append(tk.nextToken()); // } // while (tk.hasMoreTokens()) { // strBuff.append(" "); // $NON-NLS-1$ // strBuff.append(tk.nextToken()); // } // return strBuff.toString(); // } public String getUrlWithoutQuery(URL _url) { String fullUrl = _url.toString(); String urlWithoutQuery = fullUrl; String query = _url.getQuery(); if(query != null) { // Get rid of the query and the ? urlWithoutQuery = urlWithoutQuery.substring(0, urlWithoutQuery.length() - query.length() - 1); } return urlWithoutQuery; } /** * @return the httpSamplerName */ public String getHttpSamplerName() { return httpSamplerName; } /** * @return byte[] Raw post data */ public byte[] getRawPostData() { return rawPostData; } /** * @param sampler {@link HTTPSamplerBase} * @return String Protocol (http or https) */ public String getProtocol(HTTPSamplerBase sampler) { if (url.indexOf("//") > -1) { String protocol = url.substring(0, url.indexOf(':')); if (log.isDebugEnabled()) { log.debug("Proxy: setting protocol to : " + protocol); } return protocol; } else if (sampler.getPort() == HTTPConstants.DEFAULT_HTTPS_PORT) { if (log.isDebugEnabled()) { log.debug("Proxy: setting protocol to https"); } return HTTPS; } else { if (log.isDebugEnabled()) { log.debug("Proxy setting default protocol to: http"); } return HTTP; } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Daemon.java0000644000175000017500000001267212032647215030406 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.io.IOException; import java.io.InterruptedIOException; import java.net.ServerSocket; import java.net.Socket; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.apache.jmeter.gui.Stoppable; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Web daemon thread. Creates main socket on port 8080 and listens on it * forever. For each client request, creates a proxy thread to handle the * request. * */ public class Daemon extends Thread implements Stoppable { private static final Logger log = LoggingManager.getLoggerForClass(); /** * The time (in milliseconds) to wait when accepting a client connection. * The accept will be retried until the Daemon is told to stop. So this * interval is the longest time that the Daemon will have to wait after * being told to stop. */ private static final int ACCEPT_TIMEOUT = 1000; /** The port to listen on. */ private final int daemonPort; private final ServerSocket mainSocket; /** True if the Daemon is currently running. */ private volatile boolean running; /** The target which will receive the generated JMeter test components. */ private final ProxyControl target; /** * The proxy class which will be used to handle individual requests. This * class must be the {@link Proxy} class or a subclass. */ private final Class proxyClass; /** * Create a new Daemon with the specified port and target. * * @param port * the port to listen on. * @param target * the target which will receive the generated JMeter test * components. * @throws IOException */ public Daemon(int port, ProxyControl target) throws IOException { this(port, target, Proxy.class); } /** * Create a new Daemon with the specified port and target, using the * specified class to handle individual requests. * * @param port * the port to listen on. * @param target * the target which will receive the generated JMeter test * components. * @param proxyClass * the proxy class to use to handle individual requests. This * class must be the {@link Proxy} class or a subclass. * @throws IOException */ public Daemon(int port, ProxyControl target, Class proxyClass) throws IOException { super("HTTP Proxy Daemon"); this.target = target; this.daemonPort = port; this.proxyClass = proxyClass; log.info("Creating Daemon Socket on port: " + daemonPort); mainSocket = new ServerSocket(daemonPort); mainSocket.setSoTimeout(ACCEPT_TIMEOUT); } /** * Listen on the daemon port and handle incoming requests. This method will * not exit until {@link #stopServer()} is called or an error occurs. */ @Override public void run() { running = true; log.info("Proxy up and running!"); // Maps to contain page and form encodings // TODO - do these really need to be shared between all Proxy instances? Map pageEncodings = Collections.synchronizedMap(new HashMap()); Map formEncodings = Collections.synchronizedMap(new HashMap()); try { while (running) { try { // Listen on main socket Socket clientSocket = mainSocket.accept(); if (running) { // Pass request to new proxy thread Proxy thd = proxyClass.newInstance(); thd.configure(clientSocket, target, pageEncodings, formEncodings); thd.start(); } } catch (InterruptedIOException e) { continue; // Timeout occurred. Ignore, and keep looping until we're // told to stop running. } } log.info("Proxy Server stopped"); } catch (Exception e) { log.warn("Proxy Server stopped", e); } finally { JOrphanUtils.closeQuietly(mainSocket); } // Clear maps pageEncodings = null; formEncodings = null; } /** * Stop the proxy daemon. The daemon may not stop immediately. * * see #ACCEPT_TIMEOUT */ public void stopServer() { running = false; } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/AbstractSamplerCreator.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/AbstractSamplerCreator.jav0000644000175000017500000000724412032647215033450 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.util.HashSet; import java.util.Set; import java.util.StringTokenizer; import org.apache.jmeter.util.JMeterUtils; /** * Base class for SamplerCreator */ public abstract class AbstractSamplerCreator implements SamplerCreator { protected static final String HTTP = "http"; // $NON-NLS-1$ protected static final String HTTPS = "https"; // $NON-NLS-1$ /** Filetype to be used for the temporary binary files*/ private static final String binaryFileSuffix = JMeterUtils.getPropDefault("proxy.binary.filesuffix",// $NON-NLS-1$ ".binary"); // $NON-NLS-1$ /** Which content-types will be treated as binary (exact match) */ private static final Set binaryContentTypes = new HashSet(); /** Where to store the temporary binary files */ private static final String binaryDirectory = JMeterUtils.getPropDefault("proxy.binary.directory",// $NON-NLS-1$ System.getProperty("user.dir")); // $NON-NLS-1$ proxy.binary.filetype=binary static { String binaries = JMeterUtils.getPropDefault("proxy.binary.types", // $NON-NLS-1$ "application/x-amf,application/x-java-serialized-object"); // $NON-NLS-1$ if (binaries.length() > 0){ StringTokenizer s = new StringTokenizer(binaries,"|, ");// $NON-NLS-1$ while (s.hasMoreTokens()){ binaryContentTypes.add(s.nextToken()); } } } /* * Optionally number the requests */ private static final boolean numberRequests = JMeterUtils.getPropDefault("proxy.number.requests", false); // $NON-NLS-1$ private static volatile int requestNumber = 0;// running number /** * */ /** * */ public AbstractSamplerCreator() { super(); } /** * @return int request number */ protected static int getRequestNumber() { return requestNumber; } /** * Increment request number */ protected static void incrementRequestNumber() { requestNumber++; } /** * @return boolean is numbering requests is required */ protected static boolean isNumberRequests() { return numberRequests; } /** * @param contentType String content type * @return true if contentType is part of binary declared types */ protected boolean isBinaryContent(String contentType) { if (contentType == null) { return false; } return binaryContentTypes.contains(contentType); } /** * @return String binary file suffix */ protected String getBinaryFileSuffix() { return binaryFileSuffix; } /** * @return String binary directory */ protected String getBinaryDirectory() { return binaryDirectory; } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/Proxy.java0000644000175000017500000005351312032647215030323 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.URL; import java.net.UnknownHostException; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.util.HashMap; import java.util.Map; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLSocketFactory; import org.apache.commons.io.IOUtils; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.parser.HTMLParseException; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Thread to handle one client request. Gets the request from the client and * passes it on to the server, then sends the response back to the client. * Information about the request and response is stored so it can be used in a * JMeter test plan. * */ public class Proxy extends Thread { private static final Logger log = LoggingManager.getLoggerForClass(); private static final byte[] CRLF_BYTES = { 0x0d, 0x0a }; private static final String CRLF_STRING = "\r\n"; private static final String NEW_LINE = "\n"; // $NON-NLS-1$ private static final String[] headersToRemove; // Allow list of headers to be overridden private static final String PROXY_HEADERS_REMOVE = "proxy.headers.remove"; // $NON-NLS-1$ private static final String PROXY_HEADERS_REMOVE_DEFAULT = "If-Modified-Since,If-None-Match,Host"; // $NON-NLS-1$ private static final String PROXY_HEADERS_REMOVE_SEPARATOR = ","; // $NON-NLS-1$ // for ssl connection private static final String KEYSTORE_TYPE = JMeterUtils.getPropDefault("proxy.cert.type", "JKS"); // $NON-NLS-1$ $NON-NLS-2$ private static final String KEYMANAGERFACTORY = JMeterUtils.getPropDefault("proxy.cert.factory", "SunX509"); // $NON-NLS-1$ $NON-NLS-2$ private static final String SSLCONTEXT_PROTOCOL = JMeterUtils.getPropDefault("proxy.ssl.protocol", "SSLv3"); // $NON-NLS-1$ $NON-NLS-2$ // HashMap to save ssl connection between Jmeter proxy and browser private static final HashMap hashHost = new HashMap(); // Proxy configuration SSL private static final String CERT_DIRECTORY = JMeterUtils.getPropDefault("proxy.cert.directory", JMeterUtils.getJMeterBinDir()); // $NON-NLS-1$ private static final String CERT_FILE_DEFAULT = "proxyserver.jks";// $NON-NLS-1$ private static final String CERT_FILE = JMeterUtils.getPropDefault("proxy.cert.file", CERT_FILE_DEFAULT); // $NON-NLS-1$ private static final char[] KEYSTORE_PASSWORD = JMeterUtils.getPropDefault("proxy.cert.keystorepass", "password").toCharArray(); // $NON-NLS-1$ $NON-NLS-2$ private static final char[] KEY_PASSWORD = JMeterUtils.getPropDefault("proxy.cert.keypassword","password").toCharArray(); // $NON-NLS-1$ $NON-NLS-2$ private static final SamplerCreatorFactory factory = new SamplerCreatorFactory(); // Use with SSL connection private OutputStream outStreamClient = null; static { String removeList = JMeterUtils.getPropDefault(PROXY_HEADERS_REMOVE,PROXY_HEADERS_REMOVE_DEFAULT); headersToRemove = JOrphanUtils.split(removeList,PROXY_HEADERS_REMOVE_SEPARATOR); log.info("Proxy will remove the headers: "+removeList); } /** Socket to client. */ private Socket clientSocket = null; /** Target to receive the generated sampler. */ private ProxyControl target; /** Whether or not to capture the HTTP headers. */ private boolean captureHttpHeaders; /** Reference to Deamon's Map of url string to page character encoding of that page */ private Map pageEncodings; /** Reference to Deamon's Map of url string to character encoding for the form */ private Map formEncodings; /** * Default constructor - used by newInstance call in Daemon */ public Proxy() { } /** * Configure the Proxy. * Intended to be called directly after construction. * Should not be called after it has been passed to a new thread, * otherwise the variables may not be published correctly. * * @param _clientSocket * the socket connection to the client * @param _target * the ProxyControl which will receive the generated sampler * @param _pageEncodings * reference to the Map of Deamon, with mappings from page urls to encoding used * @param formEncodingsEncodings * reference to the Map of Deamon, with mappings from form action urls to encoding used */ void configure(Socket _clientSocket, ProxyControl _target, Map _pageEncodings, Map _formEncodings) { this.target = _target; this.clientSocket = _clientSocket; this.captureHttpHeaders = _target.getCaptureHttpHeaders(); this.pageEncodings = _pageEncodings; this.formEncodings = _formEncodings; } /** * Main processing method for the Proxy object */ @Override public void run() { // Check which HTTPSampler class we should use String httpSamplerName = target.getSamplerTypeName(); HttpRequestHdr request = new HttpRequestHdr(httpSamplerName); SampleResult result = null; HeaderManager headers = null; HTTPSamplerBase sampler = null; try { // Now, parse only first line request.parse(new BufferedInputStream(clientSocket.getInputStream())); outStreamClient = clientSocket.getOutputStream(); if ((request.getMethod().startsWith(HTTPConstants.CONNECT)) && (outStreamClient != null)) { log.debug("Method CONNECT => SSL"); // write a OK reponse to browser, to engage SSL exchange outStreamClient.write(("HTTP/1.0 200 OK\r\n\r\n").getBytes(SampleResult.DEFAULT_HTTP_ENCODING)); // $NON-NLS-1$ outStreamClient.flush(); // With ssl request, url is host:port (without https:// or path) String[] param = request.getUrl().split(":"); // $NON-NLS-1$ if (param.length == 2) { log.debug("Start to negotiate SSL connection, host: " + param[0]); clientSocket = startSSL(clientSocket, param[0]); } else { log.warn("In SSL request, unable to find host and port in CONNECT request"); } // Re-parse (now it's the http request over SSL) request.parse(new BufferedInputStream(clientSocket.getInputStream())); } SamplerCreator samplerCreator = factory.getSamplerCreator(request, pageEncodings, formEncodings); sampler = samplerCreator.createSampler(request, pageEncodings, formEncodings); samplerCreator.populateSampler(sampler, request, pageEncodings, formEncodings); /* * Create a Header Manager to ensure that the browsers headers are * captured and sent to the server */ headers = request.getHeaderManager(); sampler.setHeaderManager(headers); sampler.threadStarted(); // Needed for HTTPSampler2 result = sampler.sample(); // Find the page encoding and possibly encodings for forms in the page // in the response from the web server String pageEncoding = addPageEncoding(result); addFormEncodings(result, pageEncoding); writeToClient(result, new BufferedOutputStream(clientSocket.getOutputStream())); } catch (UnknownHostException uhe) { log.warn("Server Not Found.", uhe); writeErrorToClient(HttpReplyHdr.formServerNotFound()); result = generateErrorResult(result, uhe); // Generate result (if nec.) and populate it } catch (IllegalArgumentException e) { log.error("Not implemented (probably used https)", e); writeErrorToClient(HttpReplyHdr.formNotImplemented("Probably used https instead of http. " + "To record https requests, see " + "HTTP Proxy Server documentation")); result = generateErrorResult(result, e); // Generate result (if nec.) and populate it } catch (IOException ioe) { log.error("Problem with SSL certificate? Ensure browser is set to accept the JMeter proxy cert: "+ioe.getLocalizedMessage(), ioe); // won't work: writeErrorToClient(HttpReplyHdr.formInternalError()); if (result == null) { result = new SampleResult(); result.setSampleLabel("Sample failed"); } result.setResponseMessage(ioe.getMessage()+ "\n**ensure browser is set to accept the JMeter proxy certificate**"); } catch (Exception e) { log.error("Exception when processing sample", e); writeErrorToClient(HttpReplyHdr.formInternalError()); result = generateErrorResult(result, e); // Generate result (if nec.) and populate it } finally { boolean samplerAvailable = sampler != null; if (log.isDebugEnabled()) { if(samplerAvailable) { log.debug("Will deliver sample " + sampler.getName()); } } /* * We don't want to store any cookies in the generated test plan */ if (headers != null) { headers.removeHeaderNamed(HTTPConstants.HEADER_COOKIE);// Always remove cookies headers.removeHeaderNamed(HTTPConstants.HEADER_AUTHORIZATION);// Always remove authorization // Remove additional headers for(String hdr : headersToRemove){ headers.removeHeaderNamed(hdr); } } if(samplerAvailable) { target.deliverSampler(sampler, new TestElement[] { captureHttpHeaders ? headers : null }, result); } try { clientSocket.close(); } catch (Exception e) { log.error("", e); } if(samplerAvailable) { sampler.threadFinished(); // Needed for HTTPSampler2 } } } /** * Get SSL connection from hashmap, creating it if necessary. * * @param host * @return a ssl socket factory * @throws IOException */ private SSLSocketFactory getSSLSocketFactory(String host) throws IOException { synchronized (hashHost) { if (hashHost.containsKey(host)) { log.debug("Good, already in map, host=" + host); return hashHost.get(host); } InputStream in = getCertificate(); Exception except = null; if (in != null) { KeyStore ks = null; KeyManagerFactory kmf = null; SSLContext sslcontext = null; try { ks = KeyStore.getInstance(KEYSTORE_TYPE); ks.load(in, KEYSTORE_PASSWORD); kmf = KeyManagerFactory.getInstance(KEYMANAGERFACTORY); kmf.init(ks, KEY_PASSWORD); sslcontext = SSLContext.getInstance(SSLCONTEXT_PROTOCOL); sslcontext.init(kmf.getKeyManagers(), null, null); SSLSocketFactory sslFactory = sslcontext.getSocketFactory(); hashHost.put(host, sslFactory); log.info("KeyStore for SSL loaded OK and put host in map ("+host+")"); return sslFactory; } catch (NoSuchAlgorithmException e) { except=e; } catch (KeyManagementException e) { except=e; } catch (KeyStoreException e) { except=e; } catch (UnrecoverableKeyException e) { except=e; } catch (CertificateException e) { except=e; } finally { if (except != null){ log.error("Problem with SSL certificate",except); } IOUtils.closeQuietly(in); } } else { throw new IOException("Unable to read keystore"); } return null; } } /** * Negotiate a SSL connection. * * @param sock socket in * @param host * @return a new client socket over ssl * @throws Exception if negotiation failed */ private Socket startSSL(Socket sock, String host) throws IOException { SSLSocketFactory sslFactory = getSSLSocketFactory(host); SSLSocket secureSocket; if (sslFactory != null) { try { secureSocket = (SSLSocket) sslFactory.createSocket(sock, sock.getInetAddress().getHostName(), sock.getPort(), true); secureSocket.setUseClientMode(false); if (log.isDebugEnabled()){ log.debug("SSL transaction ok with cipher: " + secureSocket.getSession().getCipherSuite()); } return secureSocket; } catch (IOException e) { log.error("Error in SSL socket negotiation: ", e); throw e; } } else { log.warn("Unable to negotiate SSL transaction, no keystore?"); throw new IOException("Unable to negotiate SSL transaction, no keystore?"); } } /** * Open the local certificate file. * * @return stream to key cert; null if there was a problem opening it */ private InputStream getCertificate() { File certFile = new File(CERT_DIRECTORY, CERT_FILE); InputStream in = null; final String certPath = certFile.getAbsolutePath(); if (certFile.exists() && certFile.canRead()) { try { in = new BufferedInputStream(new FileInputStream(certFile)); log.info("Opened Keystore file: "+certPath); } catch (FileNotFoundException e) { log.error("No server cert file found: "+certPath, e); } } else { log.error("No server cert file found: "+certPath); } return in; } private static SampleResult generateErrorResult(SampleResult result, Exception e) { if (result == null) { result = new SampleResult(); result.setSampleLabel("Sample failed"); } result.setResponseMessage(e.getMessage()); return result; } /** * Write output to the output stream, then flush and close the stream. * * @param inBytes * the bytes to write * @param out * the output stream to write to * @param forcedHTTPS if we changed the protocol to https * @throws IOException * if an IOException occurs while writing */ private void writeToClient(SampleResult res, OutputStream out) throws IOException { try { String responseHeaders = messageResponseHeaders(res); out.write(responseHeaders.getBytes(SampleResult.DEFAULT_HTTP_ENCODING)); out.write(CRLF_BYTES); out.write(res.getResponseData()); out.flush(); log.debug("Done writing to client"); } catch (IOException e) { log.error("", e); throw e; } finally { try { out.close(); } catch (Exception ex) { log.warn("Error while closing socket", ex); } } } /** * In the event the content was gzipped and unpacked, the content-encoding * header must be removed and the content-length header should be corrected. * * The Transfer-Encoding header is also removed. * If the protocol was changed to HTTPS then change any Location header back to http * @param res - response * * @return updated headers to be sent to client */ private String messageResponseHeaders(SampleResult res) { String headers = res.getResponseHeaders(); String [] headerLines=headers.split(NEW_LINE, 0); // drop empty trailing content int contentLengthIndex=-1; boolean fixContentLength = false; for (int i=0;i=0){// Fix the content length headerLines[contentLengthIndex]=HTTPConstants.HEADER_CONTENT_LENGTH+": "+res.getResponseData().length; } StringBuilder sb = new StringBuilder(headers.length()); for (int i=0;i * @param formEncodings Map * @return {@link HTTPSamplerBase} */ HTTPSamplerBase createSampler(HttpRequestHdr request, Map pageEncodings, Map formEncodings); /** * Populate sampler from request * @param sampler {@link HTTPSamplerBase} * @param request {@link HttpRequestHdr} * @param pageEncodings Map * @param formEncodings Map * @throws Exception */ void populateSampler(HTTPSamplerBase sampler, HttpRequestHdr request, Map pageEncodings, Map formEncodings) throws Exception; } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpReplyHdr.java0000644000175000017500000002074212032647215031571 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.proxy; /** * Utility class to generate HTTP responses of various types. * * @version $Revision: 915405 $ */ public final class HttpReplyHdr { /** String representing a carriage-return/line-feed pair. */ private static final String CR = "\r\n"; /** A HTTP protocol version string. */ private static final String HTTP_PROTOCOL = "HTTP/1.0"; /** The HTTP server name. */ private static final String HTTP_SERVER = "Java Proxy Server"; /** * Don't allow instantiation of this utility class. */ private HttpReplyHdr() { } /** * Forms a http ok reply header * * @param contentType * the mime-type of the content * @param contentLength * the length of the content * @return a string with the header in it */ public static String formOk(String contentType, long contentLength) { StringBuilder out = new StringBuilder(); out.append(HTTP_PROTOCOL).append(" 200 Ok").append(CR); out.append("Server: ").append(HTTP_SERVER).append(CR); out.append("MIME-version: 1.0").append(CR); if (0 < contentType.length()) { out.append("Content-Type: ").append(contentType).append(CR); } else { out.append("Content-Type: text/html").append(CR); } if (0 != contentLength) { out.append("Content-Length: ").append(contentLength).append(CR); } out.append(CR); return out.toString(); } /** * private! builds an http document describing a headers reason. * * @param error * Error name. * @param description * Errors description. * @return A string with the HTML description body */ private static String formErrorBody(String error, String description) { StringBuilder out = new StringBuilder(); // Generate Error Body out.append(""); out.append(error); out.append(""); out.append("

        ").append(error).append("

        \n"); out.append("

        "); out.append(description); out.append(""); return out.toString(); } /** * builds an http document describing an error. * * @param error * Error name. * @param description * Errors description. * @return A string with the HTML description body */ private static String formError(String error, String description) { /* * A HTTP RESPONSE HEADER LOOKS ALOT LIKE: * * HTTP/1.0 200 OK Date: Wednesday, 02-Feb-94 23:04:12 GMT Server: * NCSA/1.1 MIME-version: 1.0 Last-modified: Monday, 15-Nov-93 23:33:16 * GMT Content-Type: text/html Content-Length: 2345 \r\n */ String body = formErrorBody(error, description); StringBuilder header = new StringBuilder(); header.append(HTTP_PROTOCOL).append(" ").append(error).append(CR); header.append("Server: ").append(HTTP_SERVER).append(CR); header.append("MIME-version: 1.0").append(CR); header.append("Content-Type: text/html").append(CR); header.append("Content-Length: ").append(body.length()).append(CR); header.append(CR); header.append(body); return header.toString(); } /** * Indicates a new file was created. * * @return The header in a string; */ public static String formCreated() { return formError("201 Created", "Object was created"); } /** * Indicates the document was accepted. * * @return The header in a string; */ public static String formAccepted() { return formError("202 Accepted", "Object checked in"); } /** * Indicates only a partial responce was sent. * * @return The header in a string; */ public static String formPartial() { return formError("203 Partial", "Only partail document available"); } /** * Indicates a requested URL has moved to a new address or name. * * @return The header in a string; */ public static String formMoved() { // 300 codes tell client to do actions return formError("301 Moved", "File has moved"); } /** * Never seen this used. * * @return The header in a string; */ public static String formFound() { return formError("302 Found", "Object was found"); } /** * The requested method is not implemented by the server. * * @return The header in a string; */ public static String formMethod() { return formError("303 Method unseported", "Method unseported"); } /** * Indicates remote copy of the requested object is current. * * @return The header in a string; */ public static String formNotModified() { return formError("304 Not modified", "Use local copy"); } /** * Client not otherized for the request. * * @return The header in a string; */ public static String formUnautorized() { return formError("401 Unathorized", "Unathorized use of this service"); } /** * Payment is required for service. * * @return The header in a string; */ public static String formPaymentNeeded() { return formError("402 Payment required", "Payment is required"); } /** * Client if forbidden to get the request service. * * @return The header in a string; */ public static String formForbidden() { return formError("403 Forbidden", "You need permission for this service"); } /** * The requested object was not found. * * @return The header in a string; */ public static String formNotFound() { return formError("404 Not_found", "Requested object was not found"); } /** * The server had a problem and could not fulfill the request. * * @return The header in a string; */ public static String formInternalError() { return formError("500 Internal server error", "Server broke"); } /** * Server does not do the requested feature. * * @return The header in a string; */ public static String formNotImplemented() { return formError("501 Method not implemented", "Service not implemented"); } /** * Server does not do the requested feature. * * @param reason detailed information for causing the failure * @return The header in a string; */ public static String formNotImplemented(String reason) { return formError("501 Method not implemented", "Service not implemented. " + reason); } /** * Server is overloaded, client should try again latter. * * @return The header in a string; */ public static String formOverloaded() { return formError("502 Server overloaded", "Try again latter"); } /** * Indicates the request took to long. * * @return The header in a string; */ public static String formTimeout() { return formError("503 Gateway timeout", "The connection timed out"); } /** * Indicates the client's proxies could not locate a server. * * @return The header in a string; */ public static String formServerNotFound() { return formError("503 Gateway timeout", "The requested server was not found"); } /** * Indicates the client is not allowed to access the object. * * @return The header in a string; */ public static String formNotAllowed() { return formError("403 Access Denied", "Access is not allowed"); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/0000755000175000017500000000000012165514773026135 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/DOMPool.java0000644000175000017500000000545112032647215030245 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.util.Collections; import java.util.Map; import org.apache.commons.collections.map.LRUMap; import org.apache.jmeter.util.JMeterUtils; import org.w3c.dom.Document; /** * The purpose of this class is to cache the DOM Documents in memory and by-pass * parsing. For old systems or laptops, it's not practical to parse the XML * documents every time. Therefore using a memory cache can reduce the CPU * usage. *

        * For now this is a simple version to test the feasibility of caching. If it * works, this class will be replaced with an Apache commons or something * equivalent. If I was familiar with Apache Commons Pool, I would probably use * it, but since I don't know the API, it is quicker for Proof of Concept to * just write a dumb one. If the number documents in the pool exceed several * hundred, it will take a long time for the lookup. *

        * Created on: Jun 17, 2003
        * */ public final class DOMPool { /** * The cache is created with an initial size of 50. Running a webservice * test on an old system will likely run into memory or CPU problems long * before the HashMap is an issue. */ @SuppressWarnings("unchecked") // LRUMap does not support generics currently private static final Map MEMCACHE = Collections.synchronizedMap( new LRUMap(JMeterUtils.getPropDefault("soap.document_cache", 50))); /** * Return a document. * * @param key * @return Document */ public static Document getDocument(Object key) { return MEMCACHE.get(key); } /** * Add an object to the cache. * * @param key * @param data */ public static void putDocument(Object key, Document data) { MEMCACHE.put(key, data); } /** * Private constructor to prevent instantiation. */ private DOMPool() { } /** * Clear cache */ public static void clear() { MEMCACHE.clear(); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHttpClientSocketFactory.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHttpClientSocketFactory0000644000175000017500000000466512032647215033506 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import org.apache.commons.httpclient.ConnectTimeoutException; import org.apache.commons.httpclient.params.HttpConnectionParams; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; import org.apache.jmeter.util.SlowSocket; /** * Commons HttpClient protocol factory to generate "slow" sockets for emulating dial-up modems */ public class SlowHttpClientSocketFactory implements ProtocolSocketFactory { private final int CPS; // Characters per second to emulate /** * * @param cps - characters per second */ public SlowHttpClientSocketFactory(final int cps) { super(); CPS = cps; } public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException { return new SlowSocket(CPS,host,port,clientHost,clientPort); } public Socket createSocket(String host, int port) throws IOException, UnknownHostException { return new SlowSocket(CPS,host,port); } public Socket createSocket(String host, int port, InetAddress localAddress, int localPort, HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException { int timeout = params.getConnectionTimeout(); if (timeout == 0) { return new SlowSocket(CPS,host,port,localAddress,localPort); } else { return new SlowSocket(CPS,host,port,localAddress,localPort, timeout); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/ConversionUtils.java0000644000175000017500000001677712032647215032157 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.jorphan.util.JOrphanUtils; // @see TestHTTPUtils for unit tests /** * General purpose conversion utilities related to HTTP/HTML */ public class ConversionUtils { private static final String CHARSET_EQ = "charset="; // $NON-NLS-1$ private static final int CHARSET_EQ_LEN = CHARSET_EQ.length(); private static final String SLASHDOTDOT = "/.."; private static final String DOTDOT = ".."; private static final String SLASH = "/"; private static final String COLONSLASHSLASH = "://"; /** * Extract the encoding (charset) from the Content-Type, * e.g. "text/html; charset=utf-8". * * @param contentType * @return the charset encoding - or null, if none was found or the charset is not supported */ public static String getEncodingFromContentType(String contentType){ String charSet = null; if (contentType != null) { int charSetStartPos = contentType.toLowerCase(java.util.Locale.ENGLISH).indexOf(CHARSET_EQ); if (charSetStartPos >= 0) { charSet = contentType.substring(charSetStartPos + CHARSET_EQ_LEN); if (charSet != null) { // Remove quotes from charset name charSet = JOrphanUtils.replaceAllChars(charSet, '"', ""); charSet = charSet.trim(); if (charSet.length() > 0) { // See Bug 44784 int semi = charSet.indexOf(';'); if (semi == 0){ return null; } if (semi != -1) { charSet = charSet.substring(0,semi); } if (!Charset.isSupported(charSet)){ return null; } return charSet; } return null; } } } return charSet; } /** * Generate a relative URL, allowing for extraneous leading "../" segments. * The Java {@link URL#URL(URL, String)} constructor does not remove these. * * @param baseURL * @param location relative location, possibly with extraneous leading "../" * @return URL with extraneous ../ removed * @throws MalformedURLException */ public static URL makeRelativeURL(URL baseURL, String location) throws MalformedURLException{ URL initial = new URL(baseURL,location); // skip expensive processing if it cannot apply if (!location.startsWith("../")){// $NON-NLS-1$ return initial; } String path = initial.getPath(); // Match /../[../] etc. Pattern p = Pattern.compile("^/((?:\\.\\./)+)"); // $NON-NLS-1$ Matcher m = p.matcher(path); if (m.lookingAt()){ String prefix = m.group(1); // get ../ or ../../ etc. if (location.startsWith(prefix)){ return new URL(baseURL, location.substring(prefix.length())); } } return initial; } /** * collapses absolute or relative URLs containing '/..' converting * http://host/path1/../path2 to http://host/path2 or /one/two/../three to * /one/three * * @param url * @return collapsed URL */ public static String removeSlashDotDot(String url) { if (url == null || (url = url.trim()).length() < 4 || !url.contains(SLASHDOTDOT)) { return url; } /** * http://auth@host:port/path1/path2/path3/?query#anchor */ // get to 'path' part of the URL, preserving schema, auth, host if // present // find index of path start int dotSlashSlashIndex = url.indexOf(COLONSLASHSLASH); final int pathStartIndex; if (dotSlashSlashIndex >= 0) { // absolute URL pathStartIndex = url.indexOf(SLASH, dotSlashSlashIndex + COLONSLASHSLASH.length()); } else { // document or context-relative URL like: // '/path/to' // OR '../path/to' // OR '/path/to/../path/' pathStartIndex = 0; } // find path endIndex int pathEndIndex = url.length(); int questionMarkIdx = url.indexOf('?'); if (questionMarkIdx > 0) { pathEndIndex = questionMarkIdx; } else { int anchorIdx = url.indexOf('#'); if (anchorIdx > 0) { pathEndIndex = anchorIdx; } } // path is between idx='pathStartIndex' (inclusive) and // idx='pathEndIndex' (exclusive) String currentPath = url.substring(pathStartIndex, pathEndIndex); final boolean startsWithSlash = currentPath.startsWith(SLASH); final boolean endsWithSlash = currentPath.endsWith(SLASH); StringTokenizer st = new StringTokenizer(currentPath, SLASH); List tokens = new ArrayList(); while (st.hasMoreTokens()) { tokens.add(st.nextToken()); } for (int i = 0; i < tokens.size(); i++) { if (i < tokens.size() - 1) { final String thisToken = tokens.get(i); // Verify for a ".." component at next iteration if (thisToken.length() > 0 && !thisToken.equals(DOTDOT) && tokens.get(i + 1).equals(DOTDOT)) { tokens.remove(i); tokens.remove(i); i = i - 2; if (i < -1) { i = -1; } } } } StringBuilder newPath = new StringBuilder(); if (startsWithSlash) { newPath.append(SLASH); } for (int i = 0; i < tokens.size(); i++) { newPath.append(tokens.get(i)); // append '/' if this isn't the last token or it is but the original // path terminated w/ a '/' boolean appendSlash = i < (tokens.size() - 1) ? true : endsWithSlash; if (appendSlash) { newPath.append(SLASH); } } // install new path StringBuilder s = new StringBuilder(url); s.replace(pathStartIndex, pathEndIndex, newPath.toString()); return s.toString(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/LoopbackHTTPSocket.java0000644000175000017500000000615512032647215032401 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import org.apache.jmeter.samplers.SampleResult; /* * Socket that reads back from the output */ public class LoopbackHTTPSocket extends Socket { // get access to buffer static class LoopbackOutputStream extends ByteArrayOutputStream{ byte [] getBuffer() { return buf; } } // wrap read() methods to track output buffer static class LoopBackInputStream extends ByteArrayInputStream{ private LoopbackOutputStream os; @Override public synchronized int read() { buf=os.getBuffer(); // make sure buffer details count=buf.length; // track the output return super.read(); } @Override public synchronized int read(byte[] b, int off, int len) { buf=os.getBuffer(); count=buf.length; return super.read(b, off, len); } public LoopBackInputStream(LoopbackOutputStream _os) { super(_os.getBuffer()); os=_os; } } private final LoopbackOutputStream os; private LoopbackHTTPSocket() throws IOException{ os=new LoopbackOutputStream(); // Preload the output so that can be read back as HTTP os.write("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n".getBytes(SampleResult.DEFAULT_HTTP_ENCODING)); } public LoopbackHTTPSocket(String host, int port, InetAddress localAddress, int localPort, int timeout) throws IOException { this(); } public LoopbackHTTPSocket(String host, int port, InetAddress localAddr, int localPort) throws IOException { this(); } public LoopbackHTTPSocket(String host, int port) throws UnknownHostException, IOException { this(); } // Override so we can intercept the stream @Override public OutputStream getOutputStream() throws IOException { return os; } // Override so we can intercept the stream @Override public InputStream getInputStream() throws IOException { return new LoopBackInputStream(os); } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPResultConverter.java0000644000175000017500000001142712032647215032642 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 14, 2004 * */ package org.apache.jmeter.protocol.http.util; import java.net.URL; import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult; import org.apache.jmeter.samplers.SampleSaveConfiguration; import org.apache.jmeter.save.converters.SampleResultConverter; import com.thoughtworks.xstream.mapper.Mapper; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; /** * Class for XStream conversion of HTTPResult * */ public class HTTPResultConverter extends SampleResultConverter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1381737 $"; //$NON-NLS-1$ } /** * @param arg0 */ public HTTPResultConverter(Mapper arg0) { super(arg0); } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not support types return HTTPSampleResult.class.equals(arg0); } /** {@inheritDoc} */ @Override public void marshal(Object obj, HierarchicalStreamWriter writer, MarshallingContext context) { HTTPSampleResult res = (HTTPSampleResult) obj; SampleSaveConfiguration save = res.getSaveConfig(); setAttributes(writer, context, res, save); saveAssertions(writer, context, res, save); saveSubResults(writer, context, res, save); saveResponseHeaders(writer, context, res, save); saveRequestHeaders(writer, context, res, save); saveResponseData(writer, context, res, save); saveSamplerData(writer, context, res, save); } private void saveSamplerData(HierarchicalStreamWriter writer, MarshallingContext context, HTTPSampleResult res, SampleSaveConfiguration save) { if (save.saveSamplerData(res)) { writeString(writer, TAG_COOKIES, res.getCookies()); writeString(writer, TAG_METHOD, res.getHTTPMethod()); writeString(writer, TAG_QUERY_STRING, res.getQueryString()); writeString(writer, TAG_REDIRECT_LOCATION, res.getRedirectLocation()); } if (save.saveUrl()) { writeItem(res.getURL(), context, writer); } } /** {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { HTTPSampleResult res = (HTTPSampleResult) createCollection(context.getRequiredType()); retrieveAttributes(reader, context, res); while (reader.hasMoreChildren()) { reader.moveDown(); Object subItem = readItem(reader, context, res); if (!retrieveItem(reader, context, res, subItem)) { retrieveHTTPItem(reader, res, subItem); } reader.moveUp(); } // If we have a file, but no data, then read the file String resultFileName = res.getResultFileName(); if (resultFileName.length()>0 && res.getResponseData().length == 0) { readFile(resultFileName,res); } return res; } private void retrieveHTTPItem(HierarchicalStreamReader reader, HTTPSampleResult res, Object subItem) { if (subItem instanceof URL) { res.setURL((URL) subItem); } else { String nodeName = reader.getNodeName(); if (nodeName.equals(TAG_COOKIES)) { res.setCookies((String) subItem); } else if (nodeName.equals(TAG_METHOD)) { res.setHTTPMethod((String) subItem); } else if (nodeName.equals(TAG_QUERY_STRING)) { res.setQueryString((String) subItem); } else if (nodeName.equals(TAG_REDIRECT_LOCATION)) { res.setRedirectLocation((String) subItem); } } } }././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HC4TrustAllSSLSocketFactory0000644000175000017500000000742212032647215033210 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLSocket; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.conn.ssl.TrustStrategy; import org.apache.http.params.HttpParams; import org.apache.jmeter.util.HttpSSLProtocolSocketFactory; import org.apache.jmeter.util.JsseSSLManager; /** * Apache HttpClient protocol factory to generate SSL sockets */ public class HC4TrustAllSSLSocketFactory extends SSLSocketFactory { private static final TrustStrategy TRUSTALL = new TrustStrategy(){ public boolean isTrusted(X509Certificate[] chain, String authType) { return true; } }; private javax.net.ssl.SSLSocketFactory factory; /** * Create an SSL factory which trusts all certificates and hosts. * {@link SSLSocketFactory#SSLSocketFactory(TrustStrategy, org.apache.http.conn.ssl.X509HostnameVerifier)} * @throws GeneralSecurityException if there's a problem setting up the security */ public HC4TrustAllSSLSocketFactory() throws GeneralSecurityException { this(new HttpSSLProtocolSocketFactory((JsseSSLManager)JsseSSLManager.getInstance())); } /** * Create an SSL factory which trusts all certificates and hosts. * {@link SSLSocketFactory#SSLSocketFactory(TrustStrategy, org.apache.http.conn.ssl.X509HostnameVerifier)} * @param factory javax.net.ssl.SSLSocketFactory * @throws GeneralSecurityException if there's a problem setting up the security */ protected HC4TrustAllSSLSocketFactory(javax.net.ssl.SSLSocketFactory factory) throws GeneralSecurityException { super(TRUSTALL, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); this.factory = new HttpSSLProtocolSocketFactory((JsseSSLManager)JsseSSLManager.getInstance()); } /* (non-Javadoc) * @see org.apache.http.conn.ssl.SSLSocketFactory#createSocket(org.apache.http.params.HttpParams) */ @Override public Socket createSocket(HttpParams params) throws IOException { return factory.createSocket(); } /* (non-Javadoc) * @see org.apache.http.conn.ssl.SSLSocketFactory#createSocket() */ @Override public Socket createSocket() throws IOException { return factory.createSocket(); } /* (non-Javadoc) * @see org.apache.http.conn.ssl.SSLSocketFactory#createLayeredSocket(java.net.Socket, java.lang.String, int, boolean) */ @Override public Socket createLayeredSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { SSLSocket sslSocket = (SSLSocket) this.factory.createSocket( socket, host, port, autoClose ); ALLOW_ALL_HOSTNAME_VERIFIER.verify(host, sslSocket); return sslSocket; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPFileArg.java0000644000175000017500000001342512032647215031005 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.StringProperty; /** * Class representing a file parameter for http upload. * Consists of a http parameter name/file path pair with (optional) mimetype. * * Also provides temporary storage for the headers which are sent with files. * */ public class HTTPFileArg extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; /** Name used to store the file's path. */ private static final String FILEPATH = "File.path"; /** Name used to store the file's paramname. */ private static final String PARAMNAME = "File.paramname"; /** Name used to store the file's mimetype. */ private static final String MIMETYPE = "File.mimetype"; /** temporary storage area for the body header. */ private String header; /** * Constructor for an empty HTTPFileArg object */ public HTTPFileArg() { } /** * Constructor for the HTTPFileArg object with given path. */ public HTTPFileArg(String path) { this(path, "", ""); } /** * Constructor for the HTTPFileArg object with full information. */ public HTTPFileArg(String path, String paramname, String mimetype) { if (path == null || paramname == null || mimetype == null){ throw new IllegalArgumentException("Parameters must not be null"); } setPath(path); setParamName(paramname); setMimeType(mimetype); } /** * Constructor for the HTTPFileArg object with full information, * using existing properties */ public HTTPFileArg(JMeterProperty path, JMeterProperty paramname, JMeterProperty mimetype) { if (path == null || paramname == null || mimetype == null){ throw new IllegalArgumentException("Parameters must not be null"); } setProperty(FILEPATH, path); setProperty(MIMETYPE, mimetype); setProperty(PARAMNAME, paramname); } private void setProperty(String name, JMeterProperty prop) { JMeterProperty jmp = prop.clone(); jmp.setName(name); setProperty(jmp); } /** * Copy Constructor. */ public HTTPFileArg(HTTPFileArg file) { this(file.getPath(), file.getParamName(), file.getMimeType()); } /** * Set the http parameter name of the File. * * @param newParamName * the new http parameter name */ public void setParamName(String newParamName) { setProperty(new StringProperty(PARAMNAME, newParamName)); } /** * Get the http parameter name of the File. * * @return the http parameter name */ public String getParamName() { return getPropertyAsString(PARAMNAME); } /** * Set the mimetype of the File. * * @param newMimeType * the new mimetype */ public void setMimeType(String newMimeType) { setProperty(new StringProperty(MIMETYPE, newMimeType)); } /** * Get the mimetype of the File. * * @return the http parameter mimetype */ public String getMimeType() { return getPropertyAsString(MIMETYPE); } /** * Set the path of the File. * * @param newPath * the new path */ public void setPath(String newPath) { setProperty(new StringProperty(FILEPATH, newPath)); } /** * Get the path of the File. * * @return the file's path */ public String getPath() { return getPropertyAsString(FILEPATH); } /** * Sets the body header for the HTTPFileArg object. Header * contains path, parameter name and mime type information. * This is only intended for use by methods which need to store information * temporarily whilst creating the HTTP body. * * @param newHeader * the new Header value */ public void setHeader(String newHeader) { header = newHeader; } /** * Gets the saved body header for the HTTPFileArg object. */ public String getHeader() { return header; } /** * returns path, param name, mime type information of * HTTPFileArg object. * * @return the string demonstration of HTTPFileArg object in this * format: * "path:''|param:''|mimetype:''" */ @Override public String toString() { return "path:'" + getPath() + "'|param:'" + getParamName() + "'|mimetype:'" + getMimeType() + "'"; } /** * Check if the entry is not empty. * @return true if Path, name or mimetype fields are not the empty string */ public boolean isNotEmpty() { return getPath().length() > 0 || getParamName().length() > 0 || getMimeType().length() > 0; // TODO should we allow mimetype only? } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/0000755000175000017500000000000012165514773030100 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/NVPair.java0000644000175000017500000000347512032647215032102 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; /** * Description:
        *
        * * @version $Revision: 674365 $ */ public class NVPair { protected String NAME = ""; protected String VALUE = ""; public NVPair() { } /** * The constructor takes a name and value which represent HTTP request * parameters. * * @param name * @param value */ public NVPair(String name, String value) { this.NAME = name; this.VALUE = value; } /** * Set the name * * @param name */ public void setName(String name) { this.NAME = name; } /** * Set the value * * @param value */ public void setValue(String value) { this.VALUE = value; } /** * Return the name * * @return name */ public String getName() { return this.NAME; } /** * Return the value * * @return value */ public String getValue() { return this.VALUE; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/LogFilter.java0000644000175000017500000003470212032647215032627 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import java.io.Serializable; import java.util.ArrayList; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; // For JUnit tests, @see TestLogFilter /** * Description:
        *
        * LogFilter is a basic implementation of Filter interface. This implementation * will keep a record of the filtered strings to avoid repeating the process * unnecessarily. *

        * The current implementation supports replacing the file extension. The reason * for supporting this is from first hand experience porting an existing website * to Tomcat + JSP. Later on we may want to provide the ability to replace the * whole filename. If the need materializes, we can add it later. *

        * Example of how to use it is provided in the main method. An example is * provided below. *

        * *

         * testf = new LogFilter();
         * String[] incl = { "hello.html", "index.html", "/index.jsp" };
         * String[] thefiles = { "/test/hello.jsp", "/test/one/hello.html", "hello.jsp", "hello.htm", "/test/open.jsp",
         *      "/test/open.html", "/index.jsp", "/index.jhtml", "newindex.jsp", "oldindex.jsp", "oldindex1.jsp",
         *      "oldindex2.jsp", "oldindex3.jsp", "oldindex4.jsp", "oldindex5.jsp", "oldindex6.jsp", "/test/index.htm" };
         * testf.excludeFiles(incl);
         * System.out.println(" ------------ exclude test -------------");
         * for (int idx = 0; idx < thefiles.length; idx++) {
         *  boolean fl = testf.isFiltered(thefiles[idx]);
         *  String line = testf.filter(thefiles[idx]);
         *  if (line != null) {
         *     System.out.println("the file: " + line);
         *  }
         * }
         * 
        * * As a general note. Both isFiltered and filter() have to be called. Calling * either one will not produce the desired result. isFiltered(string) will tell * you if a string should be filtered. The second step is to filter the string, * which will return null if it is filtered and replace any part of the string * that should be replaced. *

        * */ public class LogFilter implements Filter, Serializable { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); /** protected members used by class to filter * */ protected boolean CHANGEEXT = false; protected String OLDEXT = null; protected String NEWEXT = null; protected String[] INCFILE = null; protected String[] EXCFILE = null; protected boolean FILEFILTER = false; protected boolean USEFILE = true; protected String[] INCPTRN = null; protected String[] EXCPTRN = null; protected boolean PTRNFILTER = false; protected ArrayList EXCPATTERNS = new ArrayList(); protected ArrayList INCPATTERNS = new ArrayList(); protected String NEWFILE = null; /** * The default constructor is empty */ public LogFilter() { super(); } /** * The method will replace the file extension with the new one. You can * either provide the extension without the period ".", or with. The method * will check for period and add it if it isn't present. * * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#setReplaceExtension(java.lang.String, * java.lang.String) */ public void setReplaceExtension(String oldext, String newext) { if (oldext != null && newext != null) { this.CHANGEEXT = true; if (oldext.indexOf('.') < 0 && newext.indexOf('.') < 0) { this.OLDEXT = "." + oldext; this.NEWEXT = "." + newext; } else { this.OLDEXT = oldext; this.NEWEXT = newext; } } } /** * Give the filter a list of files to include * * @param filenames * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#includeFiles(java.lang.String[]) */ public void includeFiles(String[] filenames) { if (filenames != null && filenames.length > 0) { INCFILE = filenames; this.FILEFILTER = true; } } /** * Give the filter a list of files to exclude * * @param filenames * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#excludeFiles(java.lang.String[]) */ public void excludeFiles(String[] filenames) { if (filenames != null && filenames.length > 0) { EXCFILE = filenames; this.FILEFILTER = true; } } /** * Give the filter a set of regular expressions to filter with for * inclusion. This method hasn't been fully implemented and test yet. The * implementation is not complete. * * @param regexp * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#includePattern(String[]) */ public void includePattern(String[] regexp) { if (regexp != null && regexp.length > 0) { INCPTRN = regexp; this.PTRNFILTER = true; // now we create the compiled pattern and // add it to the arraylist for (int idx = 0; idx < INCPTRN.length; idx++) { this.INCPATTERNS.add(this.createPattern(INCPTRN[idx])); } } } /** * Give the filter a set of regular expressions to filter with for * exclusion. This method hasn't been fully implemented and test yet. The * implementation is not complete. * * @param regexp * * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#excludePattern(String[]) */ public void excludePattern(String[] regexp) { if (regexp != null && regexp.length > 0) { EXCPTRN = regexp; this.PTRNFILTER = true; // now we create the compiled pattern and // add it to the arraylist for (int idx = 0; idx < EXCPTRN.length; idx++) { this.EXCPATTERNS.add(this.createPattern(EXCPTRN[idx])); } } } /** * In the case of log filtering the important thing is whether the log entry * should be used. Therefore, the method will only return true if the entry * should be used. Since the interface defines both inclusion and exclusion, * that means by default inclusion filtering assumes all entries are * excluded unless it matches. In the case of exlusion filtering, it assumes * all entries are included unless it matches, which means it should be * excluded. * * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#isFiltered(String, TestElement) * @param path * @return boolean */ public boolean isFiltered(String path,TestElement el) { // we do a quick check to see if any // filters are set. If not we just // return false to be efficient. if (this.FILEFILTER || this.PTRNFILTER || this.CHANGEEXT) { if (this.FILEFILTER) { return filterFile(path); } else if (this.PTRNFILTER) { return filterPattern(path); } else { return false; } } else { return false; } } /** * Filter the file. The implementation performs the exclusion first before * the inclusion. This means if a file name is in both string arrays, the * exclusion will take priority. Depending on how users expect this to work, * we may want to change the priority so that inclusion is performed first * and exclusion second. Another possible alternative is to perform both * inclusion and exclusion. Doing so would make the most sense if the method * throws an exception and tells the user the same filename is in both the * include and exclude array. * * @param file * @return boolean */ protected boolean filterFile(String file) { // double check this logic make sure it // makes sense if (this.EXCFILE != null) { return excFile(file); } else if (this.INCFILE != null) { return !incFile(file); } return false; } /** * Method implements the logic for filtering file name inclusion. The method * iterates through the array and uses indexOf. Once it finds a match, it * won't bother with the rest of the filenames in the array. * * @param text * @return boolean include */ public boolean incFile(String text) { // inclusion filter assumes most of // the files are not wanted, therefore // usefile is set to false unless it // matches. this.USEFILE = false; for (int idx = 0; idx < this.INCFILE.length; idx++) { if (text.indexOf(this.INCFILE[idx]) > -1) { this.USEFILE = true; break; } } return this.USEFILE; } /** * Method implements the logic for filtering file name exclusion. The method * iterates through the array and uses indexOf. Once it finds a match, it * won't bother with the rest of the filenames in the array. * * @param text * @return boolean exclude */ public boolean excFile(String text) { // exclusion filter assumes most of // the files are used, therefore // usefile is set to true, unless // it matches. this.USEFILE = true; boolean exc = false; for (int idx = 0; idx < this.EXCFILE.length; idx++) { if (text.indexOf(this.EXCFILE[idx]) > -1) { exc = true; this.USEFILE = false; break; } } return exc; } /** * The current implemenation assumes the user has checked the regular * expressions so that they don't cancel each other. The basic assumption is * the method will return true if the text should be filtered. If not, it * will return false, which means it should not be filtered. * * @param text * @return boolean */ protected boolean filterPattern(String text) { if (this.INCPTRN != null) { return !incPattern(text); } else if (this.EXCPTRN != null) { return excPattern(text); } return false; } /** * By default, the method assumes the entry is not included, unless it * matches. In that case, it will return true. * * @param text * @return true if text is included */ protected boolean incPattern(String text) { this.USEFILE = false; for (int idx = 0; idx < this.INCPATTERNS.size(); idx++) { if (JMeterUtils.getMatcher().contains(text, this.INCPATTERNS.get(idx))) { this.USEFILE = true; break; } } return this.USEFILE; } /** * The method assumes by default the text is not excluded. If the text * matches the pattern, it will then return true. * * @param text * @return true if text is excluded */ protected boolean excPattern(String text) { this.USEFILE = true; boolean exc = false; for (int idx = 0; idx < this.EXCPATTERNS.size(); idx++) { if (JMeterUtils.getMatcher().contains(text, this.EXCPATTERNS.get(idx))) { exc = true; this.USEFILE = false; break; } } return exc; } /** * Method uses indexOf to replace the old extension with the new extesion. * It might be good to use regular expression, but for now this is a simple * method. The method isn't designed to replace multiple instances of the * text, since that isn't how file extensions work. If the string contains * more than one instance of the old extension, only the first instance will * be replaced. * * @param text * @return boolean */ public boolean replaceExtension(String text) { int pt = text.indexOf(this.OLDEXT); if (pt > -1) { int extsize = this.OLDEXT.length(); this.NEWFILE = text.substring(0, pt) + this.NEWEXT + text.substring(pt + extsize); return true; } else { return false; } } /** * The current implementation checks the boolean if the text should be used * or not. isFilter( string) has to be called first. * * @see org.apache.jmeter.protocol.http.util.accesslog.Filter#filter(java.lang.String) */ public String filter(String text) { if (this.CHANGEEXT) { if (replaceExtension(text)) { return this.NEWFILE; } else { return text; } } else if (this.USEFILE) { return text; } else { return null; } } /** * create a new pattern object from the string. * * @param pattern * @return Pattern */ public Pattern createPattern(String pattern) { try { return JMeterUtils.getPatternCache().getPattern(pattern, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.SINGLELINE_MASK); } catch (MalformedCachePatternException exception) { log.error("Problem with pattern: "+pattern,exception); return null; } } /** * {@inheritDoc} */ public void reset() { } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/LogParser.java0000644000175000017500000000513112032647215032630 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import org.apache.jmeter.testelement.TestElement; /** * Description:
        *
        * LogParser is the base interface for classes implementing concrete parse * logic. For an example of how to use the interface, look at the Tomcat access * log parser. *

        * The original log parser was written in 2 hours to parse access logs. Since * then, the design and implementation has been rewritten from scratch several * times to make it more generic and extensible. The first version was hard * coded and written over the weekend. *

        * * @version $Revision: 1377070 $ */ public interface LogParser { /** * close the any streams or readers. */ void close(); /** * the method will parse the given number of lines. Pass "-1" to parse the * entire file. If the end of the file is reached without parsing a line, a * 0 is returned. If the method is subsequently called again, it will * restart parsing at the beginning. * * @param count * @return int */ int parseAndConfigure(int count, TestElement el); /** * We allow for filters, so that users can simply point to an Access log * without having to clean it up. This makes it significantly easier and * reduces the amount of work. Plus I'm lazy, so going through a log file to * clean it up is a bit tedious. One example of this is using the filter to * exclude any log entry that has a 505 response code. * * @param filter */ void setFilter(Filter filter); /** * The method is provided to make it easy to dynamically create new classes * using Class.newInstance(). Then the access log file is set using this * method. * * @param source */ void setSourceFile(String source); } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/StandardGenerator.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/StandardGenerator0000644000175000017500000001323612032647215033426 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStream; import java.io.Serializable; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Description:
        *
        * StandardGenerator will be the default generator used to pre-process logs. It * uses JMeter classes to generate the .jmx file. The first version of the * utility only generated the HTTP requests as XML, but it required users to * copy and paste it into a blank jmx file. Doing that way isn't flexible and * would require changes to keep the format in sync. *

        * This version is a completely new class with a totally different * implementation, since generating the XML is no longer handled by the * generator. The generator is only responsible for handling the parsed results * and passing it to the appropriate JMeter class. *

        * Notes:
        * the class needs to first create a thread group and add it to the HashTree. * Then the samplers should be added to the thread group. Listeners shouldn't be * added and should be left up to the user. One option is to provide parameters, * so the user can pass the desired listener to the tool. *

        * */ public class StandardGenerator implements Generator, Serializable { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); protected HTTPSamplerBase SAMPLE = null; protected transient FileWriter WRITER = null; protected transient OutputStream OUTPUT = null; protected String FILENAME = null; protected File FILE = null; // NOT USED transient protected ThreadGroup THREADGROUP = null; // Anyway, was this supposed to be the class from java.lang, or // jmeter.threads? /** * The constructor is used by GUI and samplers to generate request objects. */ public StandardGenerator() { super(); init(); } /** * * @param file */ public StandardGenerator(String file) { FILENAME = file; init(); } /** * initialize the generator. It should create the following objects. *

        *

          *
        1. ListedHashTree
        2. *
        3. ThreadGroup
        4. *
        5. File object
        6. *
        7. Writer
        8. *
        */ private void init() {// called from ctor, so must not be overridable generateRequest(); } /** * Create the FileWriter to save the JMX file. */ protected void initStream() { try { this.OUTPUT = new FileOutputStream(FILE); } catch (IOException exception) { log.error(exception.getMessage()); } } /** * {@inheritDoc} */ public void close() { JOrphanUtils.closeQuietly(OUTPUT); JOrphanUtils.closeQuietly(WRITER); } /** * {@inheritDoc} */ public void setHost(String host) { SAMPLE.setDomain(host); } /** * {@inheritDoc} */ public void setLabel(String label) { } /** * {@inheritDoc} */ public void setMethod(String post_get) { SAMPLE.setMethod(post_get); } /** * {@inheritDoc} */ public void setParams(NVPair[] params) { for (int idx = 0; idx < params.length; idx++) { SAMPLE.addArgument(params[idx].getName(), params[idx].getValue()); } } /** * {@inheritDoc} */ public void setPath(String path) { SAMPLE.setPath(path); } /** * {@inheritDoc} */ public void setPort(int port) { SAMPLE.setPort(port); } /** * {@inheritDoc} */ public void setQueryString(String querystring) { SAMPLE.parseArguments(querystring); } /** * {@inheritDoc} */ public void setSourceLogs(String sourcefile) { } /** * {@inheritDoc} */ public void setTarget(Object target) { } /** * {@inheritDoc} */ public Object generateRequest() { SAMPLE = HTTPSamplerFactory.newInstance(); return SAMPLE; } /** * save must be called to write the jmx file, otherwise it will not be * saved. */ public void save() { // no implementation at this time, since // we bypass the idea of having a console // tool to generate test plans. Instead // I decided to have a sampler that uses // the generator and parser directly } /** * Reset the HTTPSampler to make sure it is a new instance. *

        * {@inheritDoc} */ public void reset() { SAMPLE = null; generateRequest(); } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/SessionFilter.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/SessionFilter.jav0000644000175000017500000001355012032647215033366 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 21, 2004 */ package org.apache.jmeter.protocol.http.util.accesslog; import java.io.Serializable; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.sampler.HTTPSampler; import org.apache.jmeter.testelement.TestCloneable; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; /** * Provides Session Filtering for the AccessLog Sampler. * */ public class SessionFilter implements Filter, Serializable, TestCloneable,ThreadListener { private static final long serialVersionUID = 232L; private static final Logger log = LoggingManager.getLoggerForClass(); /** * These objects are static across multiple threads in a test, via clone() * method. */ protected Map cookieManagers; protected Set managersInUse; protected CookieManager lastUsed; /* * (non-Javadoc) * * @see org.apache.jmeter.protocol.http.util.accesslog.LogFilter#excPattern(java.lang.String) */ protected boolean hasExcPattern(String text) { return false; } protected String getIpAddress(String logLine) { Pattern incIp = JMeterUtils.getPatternCache().getPattern("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}", Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.SINGLELINE_MASK); Perl5Matcher matcher = JMeterUtils.getMatcher(); matcher.contains(logLine, incIp); return matcher.getMatch().group(0); } /** * {@inheritDoc} */ public void reset() { cookieManagers.clear(); } /** * {@inheritDoc} */ @Override public Object clone() { if(cookieManagers == null) { cookieManagers = new ConcurrentHashMap(); } if(managersInUse == null) { managersInUse = Collections.synchronizedSet(new HashSet()); } SessionFilter f = new SessionFilter(); f.cookieManagers = cookieManagers; f.managersInUse = managersInUse; return f; } /** * */ public SessionFilter() { } /** * {@inheritDoc} */ public void excludeFiles(String[] filenames) { } /** * {@inheritDoc} */ public void excludePattern(String[] regexp) { } /** * {@inheritDoc} */ public String filter(String text) { return text; } /** * {@inheritDoc} */ public void includeFiles(String[] filenames) { } /** * {@inheritDoc} */ public void includePattern(String[] regexp) { } /** * {@inheritDoc} */ public boolean isFiltered(String path,TestElement sampler) { String ipAddr = getIpAddress(path); CookieManager cm = getCookieManager(ipAddr); ((HTTPSampler)sampler).setCookieManager(cm); return false; } protected CookieManager getCookieManager(String ipAddr) { CookieManager cm = null; // First have to release the cookie we were using so other // threads stuck in wait can move on synchronized(managersInUse) { if(lastUsed != null) { managersInUse.remove(lastUsed); managersInUse.notify(); } } // let notified threads move on and get lock on managersInUse if(lastUsed != null) { Thread.yield(); } // here is the core routine to find appropriate cookie manager and // check it's not being used. If used, wait until whoever's using it gives // it up synchronized(managersInUse) { cm = cookieManagers.get(ipAddr); if(cm == null) { cm = new CookieManager(); cm.testStarted(); cookieManagers.put(ipAddr,cm); } while(managersInUse.contains(cm)) { try { managersInUse.wait(); } catch (InterruptedException e) { log.info("SessionFilter wait interrupted"); } } managersInUse.add(cm); lastUsed = cm; } return cm; } /** * {@inheritDoc} */ public void setReplaceExtension(String oldextension, String newextension) { } /** * {@inheritDoc} */ public void threadFinished() { synchronized(managersInUse) { managersInUse.remove(lastUsed); managersInUse.notify(); } } /** * {@inheritDoc} */ public void threadStarted() { } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/OrderPreservingLogParser.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/OrderPreservingLo0000644000175000017500000000301012032647215033417 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import org.apache.jmeter.testelement.TestElement; public class OrderPreservingLogParser extends SharedTCLogParser { public OrderPreservingLogParser() { super(); } public OrderPreservingLogParser(String source) { super(source); } /** * parse a set number of lines from the access log. Keep in mind the number * of lines parsed will depend the filter and number of lines in the log. * The method returns the actual lines parsed. * * @param count * @return lines parsed */ @Override public synchronized int parseAndConfigure(int count, TestElement el) { return this.parse(el, count); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/Generator.java0000644000175000017500000000773012032647215032667 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; /** * Description:
        *
        * Generator is a base interface that defines the minimum methods needed to * implement a concrete generator. The reason for creating this interface is * eventually JMeter could use the logs directly rather than pre- process the * logs into a JMeter .jmx file. In situations where a test plan simulates load * from production logs, it is more efficient for JMeter to use the logs * directly. *

        * From first hand experience, loading a test plan with 10K or more Requests * requires a lot of memory. It's important to keep in mind this type of testing * is closer to functional and regression testing than the typical stress tests. * Typically, this kind of testing is most useful for search sites that get a * large number of requests per day, but the request parameters vary * dramatically. E-commerce sites typically have limited inventory, therefore it * is better to design test plans that use data from the database. *

        * * @version $Revision: 1377070 $ */ public interface Generator { /** * close the generator */ void close(); /** * The host is the name of the server. * * @param host */ void setHost(String host); /** * This is the label for the request, which is used in the logs and results. * * @param label */ void setLabel(String label); /** * The method is the HTTP request method. It's normally POST or GET. * * @param post_get */ void setMethod(String post_get); /** * Set the request parameters * * @param params */ void setParams(NVPair[] params); /** * The path is the web page you want to test. * * @param path */ void setPath(String path); /** * The default port for HTTP is 80, but not all servers run on that port. * * @param port - * port number */ void setPort(int port); /** * Set the querystring for the request if the method is GET. * * @param querystring */ void setQueryString(String querystring); /** * The source logs is the location where the access log resides. * * @param sourcefile */ void setSourceLogs(String sourcefile); /** * The target can be either a java.io.File or a Sampler. We make it generic, * so that later on we can use these classes directly from a HTTPSampler. * * @param target */ void setTarget(Object target); /** * The method is responsible for calling the necessary methods to generate a * valid request. If the generator is used to pre-process access logs, the * method wouldn't return anything. If the generator is used by a control * element, it should return the correct Sampler class with the required * fields set. */ Object generateRequest(); /** * If the generator is converting the logs to a .jmx file, save should be * called. */ void save(); /** * The purpose of the reset is so Samplers can explicitly call reset to * create a new instance of HTTPSampler. * */ void reset(); } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/TCLogParser.java0000644000175000017500000004371612032647215033072 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import java.util.zip.GZIPInputStream; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; // For JUnit tests, @see TestTCLogParser /** * Description:
        *
        * Currently the parser only handles GET/POST requests. It's easy enough to add * support for other request methods by changing checkMethod. The is a complete * rewrite of a tool I wrote for myself earlier. The older algorithm was basic * and did not provide the same level of flexibility I want, so I wrote a new * one using a totally new algorithm. This implementation reads one line at a * time using BufferedReader. When it gets to the end of the file and the * sampler needs to get more requests, the parser will re-initialize the * BufferedReader. The implementation uses StringTokenizer to create tokens. *

        * The parse algorithm is the following: *

        *

          *
        1. cleans the entry by looking for backslash "\" *
        2. looks to see if GET or POST is in the line *
        3. tokenizes using quotes " *
        4. finds the token with the request method *
        5. gets the string of the token and tokenizes it using space *
        6. finds the first token beginning with slash character *
        7. tokenizes the string using question mark "?" *
        8. get the path from the first token *
        9. returns the second token and checks it for parameters *
        10. tokenizes the string using ampersand "&" *
        11. parses each token to name/value pairs *
        *

        * Extending this class is fairly simple. Most access logs use the same format * starting from the request method. Therefore, changing the implementation of * cleanURL(string) method should be sufficient to support new log formats. * Tomcat uses common log format, so any webserver that uses the format should * work with this parser. Servers that are known to use non standard formats are * IIS and Netscape. *

        * */ public class TCLogParser implements LogParser { protected static final Logger log = LoggingManager.getLoggerForClass(); public static final String GET = "GET"; public static final String POST = "POST"; public static final String HEAD = "HEAD"; /** protected members * */ protected String RMETHOD = null; /** * The path to the access log file */ protected String URL_PATH = null; protected boolean useFILE = true; protected File SOURCE = null; protected String FILENAME = null; protected BufferedReader READER = null; /** * Handles to supporting classes */ protected Filter FILTER = null; /** * by default, we probably should decode the parameter values */ protected boolean decode = true; // TODO downcase UPPER case non-final variables /** * */ public TCLogParser() { super(); } /** * @param source */ public TCLogParser(String source) { setSourceFile(source); } /** * by default decode is set to true. if the parameters shouldn't be * decoded, call the method with false * @param decodeparams */ public void setDecodeParameterValues(boolean decodeparams) { this.decode = decodeparams; } /** * decode the parameter values is to true by default * @return if paramter values should be decoded */ public boolean decodeParameterValue() { return this.decode; } /** * Calls this method to set whether or not to use the path in the log. We * may want to provide the ability to filter the log file later on. By * default, the parser uses the file in the log. * * @param file */ public void setUseParsedFile(boolean file) { this.useFILE = file; } /** * Use the filter to include/exclude files in the access logs. This is * provided as a convienance and reduce the need to spend hours cleaning up * log files. * * @param filter */ public void setFilter(Filter filter) { FILTER = filter; } /** * Sets the source file. * * @param source */ public void setSourceFile(String source) { this.FILENAME = source; } /** * parse the entire file. * * @return boolean success/failure */ public int parse(TestElement el, int parseCount) { if (this.SOURCE == null) { this.SOURCE = new File(this.FILENAME); } try { if (this.READER == null) { this.READER = getReader(this.SOURCE); } return parse(this.READER, el, parseCount); } catch (Exception exception) { log.error("Problem creating samples", exception); } return -1;// indicate that an error occured } private static BufferedReader getReader(File file) throws IOException { if (! isGZIP(file)) { return new BufferedReader(new FileReader(file)); } GZIPInputStream in = new GZIPInputStream(new FileInputStream(file)); return new BufferedReader(new InputStreamReader(in)); } private static boolean isGZIP(File file) throws IOException { FileInputStream in = new FileInputStream(file); try { return in.read() == (GZIPInputStream.GZIP_MAGIC & 0xFF) && in.read() == (GZIPInputStream.GZIP_MAGIC >> 8); } finally { in.close(); } } /** * parse a set number of lines from the access log. Keep in mind the number * of lines parsed will depend the filter and number of lines in the log. * The method returns the actual number of lines parsed. * * @param count * @return lines parsed */ public int parseAndConfigure(int count, TestElement el) { return this.parse(el, count); } /** * The method is responsible for reading each line, and breaking out of the * while loop if a set number of lines is given. * * @param breader */ protected int parse(BufferedReader breader, TestElement el, int parseCount) { int actualCount = 0; String line = null; try { // read one line at a time using // BufferedReader line = breader.readLine(); while (line != null) { if (line.length() > 0) { actualCount += this.parseLine(line, el); } // we check the count to see if we have exceeded // the number of lines to parse. There's no way // to know where to stop in the file. Therefore // we use break to escape the while loop when // we've reached the count. if (parseCount != -1 && actualCount >= parseCount) { break; } line = breader.readLine(); } if (line == null) { breader.close(); this.READER = null; // this.READER = new BufferedReader(new // FileReader(this.SOURCE)); // parse(this.READER,el); } } catch (IOException ioe) { log.error("Error reading log file", ioe); } return actualCount; } /** * parseLine calls the other parse methods to parse the given text. * * @param line */ protected int parseLine(String line, TestElement el) { int count = 0; // we clean the line to get // rid of extra stuff String cleanedLine = this.cleanURL(line); log.debug("parsing line: " + line); // now we set request method el.setProperty(HTTPSamplerBase.METHOD, RMETHOD); if (FILTER != null) { log.debug("filter is not null"); if (!FILTER.isFiltered(line,el)) { log.debug("line was not filtered"); // increment the current count count++; // we filter the line first, before we try // to separate the URL into file and // parameters. line = FILTER.filter(cleanedLine); if (line != null) { createUrl(line, el); } } else { log.debug("Line was filtered"); } } else { log.debug("filter was null"); // increment the current count count++; // in the case when the filter is not set, we // parse all the lines createUrl(cleanedLine, el); } return count; } /** * @param line */ private void createUrl(String line, TestElement el) { String paramString = null; // check the URL for "?" symbol paramString = this.stripFile(line, el); if (paramString != null) { this.checkParamFormat(line); // now that we have stripped the file, we can parse the parameters this.convertStringToJMRequest(paramString, el); } } /** * The method cleans the URL using the following algorithm. *

          *
        1. check for double quotes *
        2. check the request method *
        3. tokenize using double quotes *
        4. find first token containing request method *
        5. tokenize string using space *
        6. find first token that begins with "/" *
        * Example Tomcat log entry: *

        * 127.0.0.1 - - [08/Jan/2003:07:03:54 -0500] "GET /addrbook/ HTTP/1.1" 200 * 1981 *

        * * @param entry * @return cleaned url */ public String cleanURL(String entry) { String url = entry; // if the string contains atleast one double // quote and checkMethod is true, go ahead // and tokenize the string. if (entry.indexOf('"') > -1 && checkMethod(entry)) { StringTokenizer tokens = null; // we tokenize using double quotes. this means // for tomcat we should have 3 tokens if there // isn't any additional information in the logs tokens = this.tokenize(entry, "\""); while (tokens.hasMoreTokens()) { String toke = tokens.nextToken(); // if checkMethod on the token is true // we tokenzie it using space and escape // the while loop. Only the first matching // token will be used if (checkMethod(toke)) { StringTokenizer token2 = this.tokenize(toke, " "); while (token2.hasMoreTokens()) { String t = (String) token2.nextElement(); if (t.equalsIgnoreCase(GET)) { RMETHOD = GET; } else if (t.equalsIgnoreCase(POST)) { RMETHOD = POST; } else if (t.equalsIgnoreCase(HEAD)) { RMETHOD = HEAD; } // there should only be one token // that starts with slash character if (t.startsWith("/")) { url = t; break; } } break; } } return url; } // we return the original string return url; } /** * The method checks for POST and GET methods currently. The other methods * aren't supported yet. * * @param text * @return if method is supported */ public boolean checkMethod(String text) { if (text.indexOf("GET") > -1) { this.RMETHOD = GET; return true; } else if (text.indexOf("POST") > -1) { this.RMETHOD = POST; return true; } else if (text.indexOf("HEAD") > -1) { this.RMETHOD = HEAD; return true; } else { return false; } } /** * Tokenize the URL into two tokens. If the URL has more than one "?", the * parse may fail. Only the first two tokens are used. The first token is * automatically parsed and set at URL_PATH. * * @param url * @return String parameters */ public String stripFile(String url, TestElement el) { if (url.indexOf('?') > -1) { StringTokenizer tokens = this.tokenize(url, "?"); this.URL_PATH = tokens.nextToken(); el.setProperty(HTTPSamplerBase.PATH, URL_PATH); return tokens.hasMoreTokens() ? tokens.nextToken() : null; } el.setProperty(HTTPSamplerBase.PATH, url); return null; } /** * Checks the string to make sure it has /path/file?name=value format. If * the string doesn't have "?", it will return false. * * @param url * @return boolean */ public boolean checkURL(String url) { if (url.indexOf('?') > -1) { return true; } return false; } /** * Checks the string to see if it contains "&" and "=". If it does, return * true, so that it can be parsed. * * @param text * @return boolean */ public boolean checkParamFormat(String text) { if (text.indexOf('&') > -1 && text.indexOf('=') > -1) { return true; } return false; } /** * Convert a single line into XML * * @param text */ public void convertStringToJMRequest(String text, TestElement el) { ((HTTPSamplerBase) el).parseArguments(text); } /** * Parse the string parameters into NVPair[] array. Once they are parsed, it * is returned. The method uses parseOneParameter(string) to convert each * pair. * * @param stringparams */ public NVPair[] convertStringtoNVPair(String stringparams) { List vparams = this.parseParameters(stringparams); NVPair[] nvparams = new NVPair[vparams.size()]; // convert the Parameters for (int idx = 0; idx < nvparams.length; idx++) { nvparams[idx] = this.parseOneParameter(vparams.get(idx)); } return nvparams; } /** * Method expects name and value to be separated by an equal sign "=". The * method uses StringTokenizer to make a NVPair object. If there happens to * be more than one "=" sign, the others are ignored. The chance of a string * containing more than one is unlikely and would not conform to HTTP spec. * I should double check the protocol spec to make sure this is accurate. * * @param parameter * to be parsed * @return NVPair */ protected NVPair parseOneParameter(String parameter) { String name = ""; // avoid possible NPE when trimming the name String value = null; try { StringTokenizer param = this.tokenize(parameter, "="); name = param.nextToken(); value = param.nextToken(); } catch (Exception e) { // do nothing. it's naive, but since // the utility is meant to parse access // logs the formatting should be correct } if (value == null) { value = ""; } else { if (decode) { try { value = URLDecoder.decode(value,"UTF-8"); } catch (UnsupportedEncodingException e) { log.warn(e.getMessage()); } } } return new NVPair(name.trim(), value.trim()); } /** * Method uses StringTokenizer to convert the string into single pairs. The * string should conform to HTTP protocol spec, which means the name/value * pairs are separated by the ampersand symbol "&". Some one could write the * querystrings by hand, but that would be round about and go against the * purpose of this utility. * * @param parameters * @return List */ protected List parseParameters(String parameters) { List parsedParams = new ArrayList(); StringTokenizer paramtokens = this.tokenize(parameters, "&"); while (paramtokens.hasMoreElements()) { parsedParams.add(paramtokens.nextToken()); } return parsedParams; } /** * Parses the line using java.util.StringTokenizer. * * @param line * line to be parsed * @param delim * delimiter * @return StringTokenizer */ public StringTokenizer tokenize(String line, String delim) { return new StringTokenizer(line, delim); } public void close() { try { this.READER.close(); this.READER = null; this.SOURCE = null; } catch (IOException e) { // do nothing } } }././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/SharedTCLogParser.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/SharedTCLogParser0000644000175000017500000000704012032647215033267 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import java.io.IOException; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestCloneable; import org.apache.jmeter.testelement.TestElement; public class SharedTCLogParser extends TCLogParser implements TestCloneable { public SharedTCLogParser() { super(); } public SharedTCLogParser(String source) { super(source); } /** * {@inheritDoc} */ @Override public Object clone() { SharedTCLogParser parser = new SharedTCLogParser(); parser.FILENAME = FILENAME; parser.FILTER = FILTER; return parser; } /** * {@inheritDoc} */ @Override public int parse(TestElement el, int parseCount) { FileServer fileServer = FileServer.getFileServer(); fileServer.reserveFile(FILENAME); try { return parse(fileServer, el, parseCount); } catch (Exception exception) { log.error("Problem creating samples", exception); } return -1;// indicate that an error occured } /** * The method is responsible for reading each line, and breaking out of the * while loop if a set number of lines is given. * * @param breader */ protected int parse(FileServer breader, TestElement el, int parseCount) { int actualCount = 0; String line = null; try { // read one line at a time using // BufferedReader line = breader.readLine(FILENAME); while (line != null) { if (line.length() > 0) { actualCount += this.parseLine(line, el); } // we check the count to see if we have exceeded // the number of lines to parse. There's no way // to know where to stop in the file. Therefore // we use break to escape the while loop when // we've reached the count. if (parseCount != -1 && actualCount >= parseCount) { break; } line = breader.readLine(FILENAME); } if (line == null) { breader.closeFile(FILENAME); // this.READER = new BufferedReader(new // FileReader(this.SOURCE)); // parse(this.READER,el); } } catch (IOException ioe) { log.error("Error reading log file", ioe); } return actualCount; } /** * {@inheritDoc} */ @Override public void close() { try { FileServer.getFileServer().closeFile(FILENAME); } catch (IOException e) { // do nothing } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/accesslog/Filter.java0000644000175000017500000000633112032647215032162 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util.accesslog; import org.apache.jmeter.testelement.TestElement; /** * Description:
        *
        * Filter interface is designed to make it easier to use Access Logs for JMeter * test plans. Normally, a person would have to clean a log file manually and * create the JMeter requests. The access log parse utility uses the filter to * include/exclude files by either file name or regular expression pattern. *

        * It will also be used by HttpSamplers that use access logs. Using access logs * is intended as a way to simulate production traffic. For functional testing, * it is better to use the standard functional testing tools in JMeter. Using * access logs can also reduce the amount of memory needed to run large test * plans.
        * * @version $Revision: 1377070 $ */ public interface Filter { /** * @param oldextension * @param newextension */ void setReplaceExtension(String oldextension, String newextension); /** * Include all files in the array. * * @param filenames */ void includeFiles(String[] filenames); /** * Exclude all files in the array * * @param filenames */ void excludeFiles(String[] filenames); /** * Include any log entry that contains the following regular expression * pattern. * * @param regexp */ void includePattern(String[] regexp); /** * Exclude any log entry that contains the following regular expression * pattern. * * @param regexp */ void excludePattern(String[] regexp); /** * Log parser will call this method to see if a particular entry should be * filtered or not. * * @param path * @return boolean */ boolean isFiltered(String path,TestElement sampler); /** * In case the user wants to replace the file extension, log parsers should * call this method. This is useful for regression test plans. If a website * is migrating from one platform to another and the file extension changes, * the filter provides an easy way to do it without spending a lot of time. * * @param text * @return String */ String filter(String text); /** * Tell the filter when the parsing has reached the end of the log file and * is about to begin again. Gives the filter a chance to adjust it's values, * if needed. * */ void reset(); } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SSLSocketFactory.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SSLSocketFactory.jav0000644000175000017500000000312312032647215033133 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.security.GeneralSecurityException; import org.apache.jmeter.util.HttpSSLProtocolSocketFactory; import org.apache.jmeter.util.JsseSSLManager; /** * Apache HttpClient protocol factory to generate "slow" SSL sockets for emulating dial-up modems */ public class SlowHC4SSLSocketFactory extends HC4TrustAllSSLSocketFactory { /** * Create a factory * @param cps - characters per second, must be > 0 * @throws GeneralSecurityException if there's a problem setting up the security * @throws IllegalArgumentException if cps ≤ 0 */ public SlowHC4SSLSocketFactory(final int cps) throws GeneralSecurityException { super(new HttpSSLProtocolSocketFactory((JsseSSLManager)JsseSSLManager.getInstance(), cps)); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/WSDLHelper.java0000644000175000017500000003410712032647215030705 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * For now I use DOM for WSDLHelper, but it would be more efficient to use JAXB * to generate an object model for WSDL and use it to perform serialization and * deserialization. It also makes it easier to traverse the WSDL to get * necessary information. *

        * Created on: Jun 3, 2003
        * */ public class WSDLHelper { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String WSDL_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/"; //$NON-NLS-1$ private static final String SOAP11_BINDING_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/soap/"; //$NON-NLS-1$ private static final String SOAP12_BINDING_NAMESPACE = "http://schemas.xmlsoap.org/wsdl/soap12/"; //$NON-NLS-1$ private static int GET_WDSL_TIMEOUT = 5000; // timeout to retrieve wsdl when server not response /** * -------------------------------------------- The members used by the * class to do its work -------------------------------------------- */ private URL WSDLURL = null; private URLConnection CONN = null; private Document WSDLDOC = null; private String SOAPBINDING = null; private URL bindingURL = null; private Object[] SOAPOPS = null; private final Map ACTIONS = new HashMap(); private final AuthManager AUTH; /** * Default constructor takes a string URL */ public WSDLHelper(String url) throws MalformedURLException { this(url, null); } public WSDLHelper(String url, AuthManager auth) throws MalformedURLException { WSDLURL = new URL(url); this.AUTH = auth; } /** * Returns the URL * * @return the URL */ public URL getURL() { return this.WSDLURL; } /** * Return the protocol from the URL. this is needed, so that HTTPS works * as expected. */ public String getProtocol() { return this.bindingURL.getProtocol(); } /** * Return the host in the WSDL binding address */ public String getBindingHost() { return this.bindingURL.getHost(); } /** * Return the path in the WSDL for the binding address */ public String getBindingPath() { return this.bindingURL.getPath(); } /** * Return the port for the binding address */ public int getBindingPort() { return this.bindingURL.getPort(); } /** * Returns the binding point for the webservice. Right now it naively * assumes there's only one binding point with numerous soap operations. * * @return String */ public String getBinding() { try { NodeList services = this.WSDLDOC.getElementsByTagNameNS(WSDL_NAMESPACE, "service"); // the document should only have one service node // if it doesn't it may not work! Element node = (Element) services.item(0); NodeList ports = node.getElementsByTagNameNS(WSDL_NAMESPACE, "port"); if(ports.getLength()>0) { Element pnode = (Element) ports.item(0); // NOTUSED String portname = pnode.getAttribute("name"); // used to check binding, but now it doesn't. it was // failing when wsdl did not using binding as expected NodeList servlist = pnode.getElementsByTagNameNS(SOAP11_BINDING_NAMESPACE, "address"); // check soap12 if (servlist.getLength() == 0) { servlist = pnode.getElementsByTagNameNS(SOAP12_BINDING_NAMESPACE, "address"); } Element addr = (Element) servlist.item(0); this.SOAPBINDING = addr.getAttribute("location"); this.bindingURL = new URL(this.SOAPBINDING); return this.SOAPBINDING; } else { return null; } } catch (Exception exception) { log.warn("Exception calling getBinding:"+exception.getMessage(),exception); return null; } } /** * Method is used internally to connect to the URL. It's protected; * therefore external classes should use parse to get the resource at the * given location. * * @throws IOException */ protected void connect() throws IOException { CONN = WSDLURL.openConnection(); CONN.setConnectTimeout(GET_WDSL_TIMEOUT); CONN.setReadTimeout(GET_WDSL_TIMEOUT); // in the rare case the WSDL is protected and requires // authentication, use the AuthManager to set the // authorization. Basic and Digest authorization are // pretty weak and don't provide real security. if (CONN instanceof HttpURLConnection && this.AUTH != null && this.AUTH.getAuthHeaderForURL(this.WSDLURL) != null) { CONN.setRequestProperty("Authorization", this.AUTH.getAuthHeaderForURL(this.WSDLURL)); } } /** * We try to close the connection to make sure it doesn't hang around. */ protected void close() { try { if (CONN != null) { CONN.getInputStream().close(); } } catch (IOException ignored) { // do nothing } } /** * Method is used internally to parse the InputStream and build the document * using javax.xml.parser API. */ protected void buildDocument() throws ParserConfigurationException, IOException, SAXException { DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); dbfactory.setNamespaceAware(true); DocumentBuilder docbuild = dbfactory.newDocumentBuilder(); WSDLDOC = docbuild.parse(CONN.getInputStream()); } /** * Call this method to retrieve the WSDL. This method must be called, * otherwise a connection to the URL won't be made and the stream won't be * parsed. */ public void parse() throws WSDLException { try { this.connect(); this.buildDocument(); SOAPOPS = this.getOperations(); } catch (IOException exception) { throw (new WSDLException(exception)); } catch (SAXException exception) { throw (new WSDLException(exception)); } catch (ParserConfigurationException exception) { throw (new WSDLException(exception)); } finally { this.close(); } } /** * Get a list of the web methods as a string array. */ public String[] getWebMethods() { for (int idx = 0; idx < SOAPOPS.length; idx++) { // get the node Node act = (Node) SOAPOPS[idx]; // get the soap:operation NodeList opers = ((Element) act).getElementsByTagNameNS(SOAP11_BINDING_NAMESPACE, "operation"); if (opers.getLength() == 0) { opers = ((Element) act).getElementsByTagNameNS(SOAP12_BINDING_NAMESPACE, "operation"); } // there should only be one soap:operation node per operation Element op = (Element) opers.item(0); String value; if (op != null) { value = op.getAttribute("soapAction"); } else { value = ""; } String key = ((Element) act).getAttribute("name"); this.ACTIONS.put(key, value); } Set keys = this.ACTIONS.keySet(); String[] stringmeth = new String[keys.size()]; Object[] stringKeys = keys.toArray(); System.arraycopy(stringKeys, 0, stringmeth, 0, keys.size()); return stringmeth; } /** * Return the soap action matching the operation name. */ public String getSoapAction(String key) { return this.ACTIONS.get(key); } /** * Get the wsdl document. */ public Document getWSDLDocument() { return WSDLDOC; } /** * Method will look at the binding nodes and see if the first child is a * soap:binding. If it is, it adds it to an array. * * @return Node[] */ public Object[] getSOAPBindings() { ArrayList list = new ArrayList(); NodeList bindings = WSDLDOC.getElementsByTagNameNS(WSDL_NAMESPACE,"binding"); for (int idx = 0; idx < bindings.getLength(); idx++) { Element nd = (Element) bindings.item(idx); NodeList slist = nd.getElementsByTagNameNS(SOAP11_BINDING_NAMESPACE,"binding"); if(slist.getLength()==0) { slist = nd.getElementsByTagNameNS(SOAP12_BINDING_NAMESPACE,"binding"); } if (slist.getLength() > 0) { nd.getAttribute("name"); list.add(nd); } } if (list.size() > 0) { return list.toArray(); } return new Object[0]; } /** * Look at the bindings with soap operations and get the soap operations. * Since WSDL may describe multiple bindings and each binding may have * multiple soap operations, we iterate through the binding nodes with a * first child that is a soap binding. If a WSDL doesn't use the same * formatting convention, it is possible we may not get a list of all the * soap operations. If that is the case, getSOAPBindings() will need to be * changed. I should double check the WSDL spec to see what the official * requirement is. Another option is to get all operation nodes and check to * see if the first child is a soap:operation. The benefit of not getting * all operation nodes is WSDL could contain duplicate operations that are * not SOAP methods. If there are a large number of methods and half of them * are HTTP operations, getting all operations could slow things down. * * @return Node[] */ public Object[] getOperations() { Object[] res = this.getSOAPBindings(); ArrayList ops = new ArrayList(); // first we iterate through the bindings for (int idx = 0; idx < res.length; idx++) { Element one = (Element) res[idx]; NodeList opnodes = one.getElementsByTagNameNS(WSDL_NAMESPACE, "operation"); // now we iterate through the operations for (int idz = 0; idz < opnodes.getLength(); idz++) { // if the first child is soap:operation // we add it to the array Element child = (Element) opnodes.item(idz); int numberOfSoapOperationNodes = child.getElementsByTagNameNS(SOAP11_BINDING_NAMESPACE, "operation").getLength() + child.getElementsByTagNameNS(SOAP12_BINDING_NAMESPACE, "operation").getLength(); if (numberOfSoapOperationNodes>0) { ops.add(child); } } } return ops.toArray(); } /** * return the "wsdl method name" from a soap action * @param soapAction the soap action * @return the associated "wsdl method name" or null if not found */ public String getSoapActionName(String soapAction) { for (Map.Entry entry : ACTIONS.entrySet()) { if (entry.getValue().equals(soapAction)) { return entry.getKey(); } } return null; } /** * Simple test for the class uses bidbuy.wsdl from Apache's soap driver * examples. * * @param args */ public static void main(String[] args) { try { WSDLHelper help = // new WSDLHelper("http://localhost/WSTest/WSTest.asmx?WSDL"); // new WSDLHelper("http://localhost/AxisWSDL.xml"); //new WSDLHelper("http://localhost:8080/WSMyUpper.wsdl"); //new WSDLHelper("http://localhost:8080/test.wsdl"); new WSDLHelper("http://localhost:8080/ServiceGateway.wsdl"); // new WSDLHelper("http://services.bio.ifi.lmu.de:1046/prothesaurus/services/BiologicalNameService?wsdl"); long start = System.currentTimeMillis(); help.parse(); String[] methods = help.getWebMethods(); System.out.println("el: " + (System.currentTimeMillis() - start)); for (int idx = 0; idx < methods.length; idx++) { System.out.println("method name: " + methods[idx]); } System.out.println("service url: " + help.getBinding()); System.out.println("protocol: " + help.getProtocol()); System.out.println("port=" + help.getURL().getPort()); } catch (Exception exception) { System.out.println("main method catch:"); exception.printStackTrace(); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/SlowHC4SocketFactory.java0000644000175000017500000000323412032647215032715 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.net.Socket; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.params.HttpParams; import org.apache.jmeter.util.SlowSocket; /** * Apache HttpClient protocol factory to generate "slow" sockets for emulating dial-up modems */ public class SlowHC4SocketFactory extends PlainSocketFactory { private final int CPS; // Characters per second to emulate /** * Create a factory * @param cps - characters per second */ public SlowHC4SocketFactory(final int cps) { super(); CPS = cps; } // Override all the super-class Socket methods. @Override public Socket createSocket(final HttpParams params) { return new SlowSocket(CPS); } @Override public Socket createSocket() { return new SlowSocket(CPS); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/LoopbackHttpClientSocketFactory.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/LoopbackHttpClientSocketFac0000644000175000017500000000715412032647215033372 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.net.URL; import java.net.URLConnection; import java.net.URLStreamHandler; import java.net.URLStreamHandlerFactory; import java.net.UnknownHostException; import org.apache.commons.httpclient.ConnectTimeoutException; import org.apache.commons.httpclient.params.HttpConnectionParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; /** * Commons HttpClient protocol factory to generate Loopback HTTP sockets */ public class LoopbackHttpClientSocketFactory implements ProtocolSocketFactory { public LoopbackHttpClientSocketFactory() { super(); } public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException { return new LoopbackHTTPSocket(host,port,clientHost,clientPort); } public Socket createSocket(String host, int port) throws IOException, UnknownHostException { return new LoopbackHTTPSocket(host,port); } public Socket createSocket(String host, int port, InetAddress localAddress, int localPort, HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException { int timeout = params.getConnectionTimeout(); if (timeout == 0) { return new LoopbackHTTPSocket(host,port,localAddress,localPort); } else { return new LoopbackHTTPSocket(host,port,localAddress,localPort, timeout); } } /** * Convenience method to set up the necessary HttpClient protocol and URL handler. * * Only works for HttpClient, because it's not possible (or at least very difficult) * to provide a different socket factory for the HttpURLConnection class. */ public static void setup(){ final String LOOPBACK = "loopback"; // $NON-NLS-1$ // This ensures tha HttpClient knows about the protocol Protocol.registerProtocol(LOOPBACK, new Protocol(LOOPBACK,new LoopbackHttpClientSocketFactory(),1)); // Now allow the URL handling to work. URLStreamHandlerFactory ushf = new URLStreamHandlerFactory(){ public URLStreamHandler createURLStreamHandler(String protocol) { if (protocol.equalsIgnoreCase(LOOPBACK)){ return new URLStreamHandler(){ @Override protected URLConnection openConnection(URL u) throws IOException { return null;// not needed for HttpClient } }; } return null; } }; java.net.URL.setURLStreamHandlerFactory(ushf); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPConstantsInterface.java0000644000175000017500000000624312032647215033271 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; /** * Constants used in HTTP, mainly header names. */ public interface HTTPConstantsInterface { int DEFAULT_HTTPS_PORT = 443; String DEFAULT_HTTPS_PORT_STRING = "443"; // $NON-NLS-1$ int DEFAULT_HTTP_PORT = 80; String DEFAULT_HTTP_PORT_STRING = "80"; // $NON-NLS-1$ String PROTOCOL_HTTP = "http"; // $NON-NLS-1$ String PROTOCOL_HTTPS = "https"; // $NON-NLS-1$ String HEAD = "HEAD"; // $NON-NLS-1$ String POST = "POST"; // $NON-NLS-1$ String PUT = "PUT"; // $NON-NLS-1$ String GET = "GET"; // $NON-NLS-1$ String OPTIONS = "OPTIONS"; // $NON-NLS-1$ String TRACE = "TRACE"; // $NON-NLS-1$ String DELETE = "DELETE"; // $NON-NLS-1$ String PATCH = "PATCH"; // $NON-NLS-1$ String CONNECT = "CONNECT"; // $NON-NLS-1$ String HEADER_AUTHORIZATION = "Authorization"; // $NON-NLS-1$ String HEADER_COOKIE = "Cookie"; // $NON-NLS-1$ String HEADER_CONNECTION = "Connection"; // $NON-NLS-1$ String CONNECTION_CLOSE = "close"; // $NON-NLS-1$ String KEEP_ALIVE = "keep-alive"; // $NON-NLS-1$ // e.g. "Transfer-Encoding: chunked", which is processed automatically by the underlying protocol String TRANSFER_ENCODING = "transfer-encoding"; // $NON-NLS-1$ String HEADER_CONTENT_ENCODING = "content-encoding"; // $NON-NLS-1$ String HTTP_1_1 = "HTTP/1.1"; // $NON-NLS-1$ String HEADER_SET_COOKIE = "set-cookie"; // $NON-NLS-1$ String ENCODING_GZIP = "gzip"; // $NON-NLS-1$ String HEADER_CONTENT_DISPOSITION = "Content-Disposition"; // $NON-NLS-1$ String HEADER_CONTENT_TYPE = "Content-Type"; // $NON-NLS-1$ String HEADER_CONTENT_LENGTH = "Content-Length"; // $NON-NLS-1$ String HEADER_HOST = "Host"; // $NON-NLS-1$ String HEADER_LOCATION = "Location"; // $NON-NLS-1$ String APPLICATION_X_WWW_FORM_URLENCODED = "application/x-www-form-urlencoded"; // $NON-NLS-1$ String MULTIPART_FORM_DATA = "multipart/form-data"; // $NON-NLS-1$ // For handling caching String IF_NONE_MATCH = "If-None-Match"; // $NON-NLS-1$ String IF_MODIFIED_SINCE = "If-Modified-Since"; // $NON-NLS-1$ String ETAG = "Etag"; // $NON-NLS-1$ String LAST_MODIFIED = "Last-Modified"; // $NON-NLS-1$ String EXPIRES = "Expires"; // $NON-NLS-1$ String CACHE_CONTROL = "Cache-Control"; //e.g. public, max-age=259200 String DATE = "Date"; //e.g. Date Header of response } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/EncoderCache.java0000644000175000017500000000524712032647215031302 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import org.apache.oro.util.Cache; import org.apache.oro.util.CacheLRU; public class EncoderCache { /** The encoding which should be usd for URLs, according to HTTP specification */ public static final String URL_ARGUMENT_ENCODING = "UTF-8"; private Cache cache; public EncoderCache(int cacheSize) { cache = new CacheLRU(cacheSize); } /** * Get the specified value URL encoded using UTF-8 encoding * * @param k the value to encode * @return the value URL encoded using UTF-8 */ public String getEncoded(String k) { try { return getEncoded(k, URL_ARGUMENT_ENCODING); } catch (UnsupportedEncodingException e) { // This can't happen (how should utf8 not be supported!?!), // so just throw an Error: throw new Error("Should not happen: " + e.toString()); } } /** * Get the specified value URL encoded using the specified encoding * * @param k the value to encode * @param contentEncoding the encoding to use when URL encoding * @return the value URL encoded using the specified encoding * @throws UnsupportedEncodingException if the specified encoding is not supported */ public String getEncoded(String k, String contentEncoding) throws UnsupportedEncodingException { String cacheKey = k + contentEncoding; // Check if we have it in the cache Object encodedValue = cache.getElement(cacheKey); if (encodedValue != null) { return (String) encodedValue; } // Perform the encoding encodedValue = URLEncoder.encode(k, contentEncoding); // Add to cache cache.addElement(cacheKey, encodedValue); return (String) encodedValue; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/WSDLException.java0000644000175000017500000000242112032647215031416 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; /** * Created on: Jun 3, 2003
        * */ public class WSDLException extends Exception { private static final long serialVersionUID = 240L; public WSDLException() { super(); } /** * @param message */ public WSDLException(String message) { super(message); } /** * @param exception */ public WSDLException(Exception exception) { super(exception.getMessage()); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPConstants.java0000644000175000017500000000210612032647215031442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; /** * Constants used in HTTP, mainly header names. * This is a class suitable for extending * or for accessing individual constants without needing to import them all. */ public class HTTPConstants implements HTTPConstantsInterface { } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/Base64Encoder.java0000644000175000017500000000623512032647215031321 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; /** * This class provides an implementation of Base64 encoding without relying on * the the sun.* packages. * * @version $Revision: 1380893 $ */ public final class Base64Encoder { private static final char[] pem_array = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 }; private static final char eq = 61; /** * Private constructor to prevent instantiation. */ private Base64Encoder() { } public static String encode(String s) { return encode(s.getBytes()); // TODO - charset? } public static String encode(byte[] bs) { StringBuilder out = new StringBuilder(); int bl = bs.length; for (int i = 0; i < bl; i += 3) { out.append(encodeAtom(bs, i, (bl - i))); } return out.toString(); } public static String encodeAtom(byte[] b, int strt, int left) { StringBuilder out = new StringBuilder(); if (left == 1) { byte b1 = b[strt]; int k = 0; out.append(String.valueOf(pem_array[b1 >>> 2 & 63])); out.append(String.valueOf(pem_array[(b1 << 4 & 48) + (k >>> 4 & 15)])); out.append(String.valueOf(eq)); out.append(String.valueOf(eq)); return out.toString(); } if (left == 2) { byte b2 = b[strt]; byte b4 = b[strt + 1]; int l = 0; out.append(String.valueOf(pem_array[b2 >>> 2 & 63])); out.append(String.valueOf(pem_array[(b2 << 4 & 48) + (b4 >>> 4 & 15)])); out.append(String.valueOf(pem_array[(b4 << 2 & 60) + (l >>> 6 & 3)])); out.append(String.valueOf(eq)); return out.toString(); } byte b3 = b[strt]; byte b5 = b[strt + 1]; byte b6 = b[strt + 2]; out.append(String.valueOf(pem_array[b3 >>> 2 & 63])); out.append(String.valueOf(pem_array[(b3 << 4 & 48) + (b5 >>> 4 & 15)])); out.append(String.valueOf(pem_array[(b5 << 2 & 60) + (b6 >>> 6 & 3)])); out.append(String.valueOf(pem_array[b6 & 63])); return out.toString(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/util/HTTPFileArgs.java0000644000175000017500000001521512032647215031167 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.util; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; /** * A set of HTTPFileArg objects. * */ public class HTTPFileArgs extends ConfigTestElement implements Serializable { private static final long serialVersionUID = 240L; /** The name of the property used to store the files. */ private static final String HTTP_FILE_ARGS = "HTTPFileArgs.files"; //$NON-NLS-1$ /** * Create a new HTTPFileArgs object with no files. */ public HTTPFileArgs() { setProperty(new CollectionProperty(HTTP_FILE_ARGS, new ArrayList())); } /** * Get the files. * * @return the files */ public CollectionProperty getHTTPFileArgsCollection() { return (CollectionProperty) getProperty(HTTP_FILE_ARGS); } /** * Clear the files. */ @Override public void clear() { super.clear(); setProperty(new CollectionProperty(HTTP_FILE_ARGS, new ArrayList())); } /** * Set the list of files. Any existing files will be lost. * * @param files the new files */ public void setHTTPFileArgs(List files) { setProperty(new CollectionProperty(HTTP_FILE_ARGS, files)); } /** * Add a new file with the given path. * * @param path * the path of the file */ public void addHTTPFileArg(String path) { addHTTPFileArg(new HTTPFileArg(path)); } /** * Add a new file. * * @param file * the new file */ public void addHTTPFileArg(HTTPFileArg file) { TestElementProperty newHTTPFileArg = new TestElementProperty(file.getPath(), file); if (isRunningVersion()) { this.setTemporary(newHTTPFileArg); } getHTTPFileArgsCollection().addItem(newHTTPFileArg); } /** * adds a new File to the HTTPFileArgs list to be uploaded with http * request. * * @param path file full path. * @param param http parameter name. * @param mime mime type of file. */ public void addHTTPFileArg(String path, String param, String mime) { addHTTPFileArg(new HTTPFileArg(path, param, mime)); } /** * Get a PropertyIterator of the files. * * @return an iteration of the files */ public PropertyIterator iterator() { return getHTTPFileArgsCollection().iterator(); } /** * Get the current arguments as an array. * * @return an array of file arguments */ public HTTPFileArg[] asArray(){ CollectionProperty props = getHTTPFileArgsCollection(); final int size = props.size(); HTTPFileArg[] args = new HTTPFileArg[size]; for(int i=0; i newArguments = new LinkedList(); PropertyIterator iter = args.getArguments().iterator(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); if (!(arg instanceof HTTPArgument)) { newArguments.add(new HTTPArgument(arg)); } else { newArguments.add(arg); } } args.removeAllArguments(); args.setArguments(newArguments); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/0000755000175000017500000000000012165514773025744 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/HeaderPanel.java0000644000175000017500000002663212032647215030757 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellEditor; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Allows the user to specify if she needs HTTP header services, and give * parameters for this service. * */ public class HeaderPanel extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String ADD_COMMAND = "Add"; // $NON-NLS-1$ private static final String DELETE_COMMAND = "Delete"; // $NON-NLS-1$ private static final String LOAD_COMMAND = "Load"; // $NON-NLS-1$ private static final String SAVE_COMMAND = "Save"; // $NON-NLS-1$ private InnerTableModel tableModel; private HeaderManager headerManager; private JTable headerTable; private JButton addButton; private JButton deleteButton; private JButton loadButton; private JButton saveButton; public HeaderPanel() { headerManager = new HeaderManager(); tableModel = new InnerTableModel(headerManager); init(); } public TestElement createTestElement() { configureTestElement(headerManager); return (TestElement) headerManager.clone(); } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { GuiUtils.stopTableEditing(headerTable); el.clear(); el.addTestElement(headerManager); configureTestElement(el); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); tableModel.clearData(); deleteButton.setEnabled(false); saveButton.setEnabled(false); } @Override public void configure(TestElement el) { headerManager.clear(); super.configure(el); headerManager.addTestElement(el); boolean hasRows = tableModel.getRowCount() > 0; deleteButton.setEnabled(hasRows); saveButton.setEnabled(hasRows); } public String getLabelResource() { return "header_manager_title"; // $NON-NLS-1$ } private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); add(createHeaderTablePanel(), BorderLayout.CENTER); } public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(DELETE_COMMAND)) { if (tableModel.getRowCount() > 0) { // If a table cell is being edited, we must cancel the editing // before deleting the row. if (headerTable.isEditing()) { TableCellEditor cellEditor = headerTable.getCellEditor(headerTable.getEditingRow(), headerTable.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = headerTable.getSelectedRow(); if (rowSelected != -1) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable the DELETE and SAVE buttons if no rows remaining // after delete if (tableModel.getRowCount() == 0) { deleteButton.setEnabled(false); saveButton.setEnabled(false); } // Table still contains one or more rows, so highlight // (select) the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } headerTable.setRowSelectionInterval(rowToSelect, rowToSelect); } } } } else if (action.equals(ADD_COMMAND)) { // If a table cell is being edited, we should accept the current // value and stop the editing before adding a new row. GuiUtils.stopTableEditing(headerTable); tableModel.addNewRow(); tableModel.fireTableDataChanged(); // Enable the DELETE and SAVE buttons if they are currently // disabled. if (!deleteButton.isEnabled()) { deleteButton.setEnabled(true); } if (!saveButton.isEnabled()) { saveButton.setEnabled(true); } // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; headerTable.setRowSelectionInterval(rowToSelect, rowToSelect); } else if (action.equals(LOAD_COMMAND)) { try { final JFileChooser chooser = FileDialoger.promptToOpenFile(); if (chooser != null) { headerManager.addFile(chooser.getSelectedFile().getAbsolutePath()); tableModel.fireTableDataChanged(); if (tableModel.getRowCount() > 0) { deleteButton.setEnabled(true); saveButton.setEnabled(true); } } } catch (IOException ex) { log.error("Could not load headers", ex); } } else if (action.equals(SAVE_COMMAND)) { try { final JFileChooser chooser = FileDialoger.promptToSaveFile(null); if (chooser != null) { headerManager.save(chooser.getSelectedFile().getAbsolutePath()); } } catch (IOException ex) { log.error("Could not save headers", ex); } } } public JPanel createHeaderTablePanel() { // create the JTable that holds header per row headerTable = new JTable(tableModel); headerTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); headerTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); headerTable.setPreferredScrollableViewportSize(new Dimension(100, 70)); JPanel panel = new JPanel(new BorderLayout(0, 5)); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("headers_stored"))); // $NON-NLS-1$ panel.add(new JScrollPane(headerTable), BorderLayout.CENTER); panel.add(createButtonPanel(), BorderLayout.SOUTH); return panel; } private JButton createButton(String resName, char mnemonic, String command, boolean enabled) { JButton button = new JButton(JMeterUtils.getResString(resName)); button.setMnemonic(mnemonic); button.setActionCommand(command); button.setEnabled(enabled); button.addActionListener(this); return button; } private JPanel createButtonPanel() { boolean tableEmpty = (tableModel.getRowCount() == 0); addButton = createButton("add", 'A', ADD_COMMAND, true); // $NON-NLS-1$ deleteButton = createButton("delete", 'D', DELETE_COMMAND, !tableEmpty); // $NON-NLS-1$ loadButton = createButton("load", 'L', LOAD_COMMAND, true); // $NON-NLS-1$ saveButton = createButton("save", 'S', SAVE_COMMAND, !tableEmpty); // $NON-NLS-1$ JPanel buttonPanel = new JPanel(); buttonPanel.add(addButton); buttonPanel.add(deleteButton); buttonPanel.add(loadButton); buttonPanel.add(saveButton); return buttonPanel; } private static class InnerTableModel extends AbstractTableModel { private static final long serialVersionUID = 240L; private HeaderManager manager; public InnerTableModel(HeaderManager man) { manager = man; } public void clearData() { manager.clear(); fireTableDataChanged(); } public void removeRow(int row) { manager.remove(row); } public void addNewRow() { manager.add(); } @Override public boolean isCellEditable(int row, int column) { // all table cells are editable return true; } @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } public int getRowCount() { return manager.getHeaders().size(); } /** * Required by table model interface. */ public int getColumnCount() { return manager.getColumnCount(); } /** * Required by table model interface. */ @Override public String getColumnName(int column) { return manager.getColumnName(column); } /** * Required by table model interface. */ public Object getValueAt(int row, int column) { Header head = manager.getHeader(row); if (column == 0) { return head.getName(); } else if (column == 1) { return head.getValue(); } return null; } /** * Required by table model interface. */ @Override public void setValueAt(Object value, int row, int column) { Header header = manager.getHeader(row); if (column == 0) { header.setName((String) value); } else if (column == 1) { header.setValue((String) value); } } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/AuthPanel.java0000644000175000017500000003357312032647215030472 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Handles input for determining if authentication services are required for a * Sampler. It also understands how to get AuthManagers for the files that the * user selects. */ public class AuthPanel extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = -9214884465261470761L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String ADD_COMMAND = "Add"; //$NON-NLS-1$ private static final String DELETE_COMMAND = "Delete"; //$NON-NLS-1$ private static final String LOAD_COMMAND = "Load"; //$NON-NLS-1$ private static final String SAVE_COMMAND = "Save"; //$NON-NLS-1$ private InnerTableModel tableModel; /** * A table to show the authentication information. */ private JTable authTable; private JButton addButton; private JButton deleteButton; private JButton loadButton; private JButton saveButton; /** * Default Constructor. */ public AuthPanel() { tableModel = new InnerTableModel(); init(); } public TestElement createTestElement() { AuthManager authMan = tableModel.manager; configureTestElement(authMan); return (TestElement) authMan.clone(); } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement el) { GuiUtils.stopTableEditing(authTable); el.clear(); el.addTestElement((TestElement) tableModel.manager.clone()); configureTestElement(el); } /** * Implements JMeterGUIComponent.clear */ @Override public void clearGui() { super.clearGui(); tableModel.clearData(); deleteButton.setEnabled(false); saveButton.setEnabled(false); } @Override public void configure(TestElement el) { super.configure(el); tableModel.manager.clear(); tableModel.manager.addTestElement((AuthManager) el.clone()); if (tableModel.getRowCount() != 0) { deleteButton.setEnabled(true); saveButton.setEnabled(true); } } public String getLabelResource() { return "auth_manager_title"; //$NON-NLS-1$ } /** * Shows the main authentication panel for this object. */ private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); add(createAuthTablePanel(), BorderLayout.CENTER); } public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(DELETE_COMMAND)) { if (tableModel.getRowCount() > 0) { // If a table cell is being edited, we must cancel the editing // before deleting the row. if (authTable.isEditing()) { TableCellEditor cellEditor = authTable.getCellEditor(authTable.getEditingRow(), authTable .getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = authTable.getSelectedRow(); if (rowSelected != -1) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable the DELETE and SAVE buttons if no rows remaining // after delete. if (tableModel.getRowCount() == 0) { deleteButton.setEnabled(false); saveButton.setEnabled(false); } // Table still contains one or more rows, so highlight // (select) the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } authTable.setRowSelectionInterval(rowToSelect, rowToSelect); } } } } else if (action.equals(ADD_COMMAND)) { // If a table cell is being edited, we should accept the current // value and stop the editing before adding a new row. GuiUtils.stopTableEditing(authTable); tableModel.addNewRow(); tableModel.fireTableDataChanged(); // Enable the DELETE and SAVE buttons if they are currently // disabled. if (!deleteButton.isEnabled()) { deleteButton.setEnabled(true); } if (!saveButton.isEnabled()) { saveButton.setEnabled(true); } // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; authTable.setRowSelectionInterval(rowToSelect, rowToSelect); } else if (action.equals(LOAD_COMMAND)) { try { final String [] _txt={".txt"}; //$NON-NLS-1$ final JFileChooser dialog = FileDialoger.promptToOpenFile(_txt); if (dialog != null) { tableModel.manager.addFile(dialog.getSelectedFile().getAbsolutePath()); tableModel.fireTableDataChanged(); if (tableModel.getRowCount() > 0) { deleteButton.setEnabled(true); saveButton.setEnabled(true); } } } catch (IOException ex) { log.error("", ex); } } else if (action.equals(SAVE_COMMAND)) { try { final JFileChooser chooser = FileDialoger.promptToSaveFile("auth.txt"); //$NON-NLS-1$ if (chooser != null) { tableModel.manager.save(chooser.getSelectedFile().getAbsolutePath()); } } catch (IOException ex) { log.error("", ex); } } } public JPanel createAuthTablePanel() { // create the JTable that holds auth per row authTable = new JTable(tableModel); authTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); authTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); authTable.setPreferredScrollableViewportSize(new Dimension(100, 70)); TableColumn passwordColumn = authTable.getColumnModel().getColumn(AuthManager.COL_PASSWORD); passwordColumn.setCellRenderer(new PasswordCellRenderer()); JPanel panel = new JPanel(new BorderLayout(0, 5)); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("auths_stored"))); //$NON-NLS-1$ panel.add(new JScrollPane(authTable)); panel.add(createButtonPanel(), BorderLayout.SOUTH); return panel; } private JButton createButton(String resName, char mnemonic, String command, boolean enabled) { JButton button = new JButton(JMeterUtils.getResString(resName)); button.setMnemonic(mnemonic); button.setActionCommand(command); button.setEnabled(enabled); button.addActionListener(this); return button; } private JPanel createButtonPanel() { boolean tableEmpty = (tableModel.getRowCount() == 0); addButton = createButton("add", 'A', ADD_COMMAND, true); //$NON-NLS-1$ deleteButton = createButton("delete", 'D', DELETE_COMMAND, !tableEmpty); //$NON-NLS-1$ loadButton = createButton("load", 'L', LOAD_COMMAND, true); //$NON-NLS-1$ saveButton = createButton("save", 'S', SAVE_COMMAND, !tableEmpty); //$NON-NLS-1$ // Button Panel JPanel buttonPanel = new JPanel(); buttonPanel.add(addButton); buttonPanel.add(deleteButton); buttonPanel.add(loadButton); buttonPanel.add(saveButton); return buttonPanel; } private static class InnerTableModel extends AbstractTableModel { private static final long serialVersionUID = 4638155137475747946L; final AuthManager manager; public InnerTableModel() { manager = new AuthManager(); } public void clearData() { manager.clear(); fireTableDataChanged(); } public void removeRow(int row) { manager.remove(row); } public void addNewRow() { manager.addAuth(); } @Override public boolean isCellEditable(int row, int column) { // all table cells are editable return true; } @Override public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } /** * Required by table model interface. */ public int getRowCount() { return manager.getAuthObjects().size(); } /** * Required by table model interface. */ public int getColumnCount() { return manager.getColumnCount(); } /** * Required by table model interface. */ @Override public String getColumnName(int column) { return manager.getColumnName(column); } /** * Required by table model interface. */ public Object getValueAt(int row, int column) { Authorization auth = manager.getAuthObjectAt(row); switch (column){ case AuthManager.COL_URL: return auth.getURL(); case AuthManager.COL_USERNAME: return auth.getUser(); case AuthManager.COL_PASSWORD: return auth.getPass(); case AuthManager.COL_DOMAIN: return auth.getDomain(); case AuthManager.COL_REALM: return auth.getRealm(); default: return null; } } @Override public void setValueAt(Object value, int row, int column) { Authorization auth = manager.getAuthObjectAt(row); log.debug("Setting auth value: " + value); switch (column){ case AuthManager.COL_URL: auth.setURL((String) value); break; case AuthManager.COL_USERNAME: auth.setUser((String) value); break; case AuthManager.COL_PASSWORD: auth.setPass((String) value); break; case AuthManager.COL_DOMAIN: auth.setDomain((String) value); break; case AuthManager.COL_REALM: auth.setRealm((String) value); break; default: break; } } } private static class PasswordCellRenderer extends JPasswordField implements TableCellRenderer { private static final long serialVersionUID = 5169856333827579927L; private Border myBorder; public PasswordCellRenderer() { super(); myBorder = new EmptyBorder(1, 2, 1, 2); setOpaque(true); setBorder(myBorder); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText((String) value); setBackground(isSelected && !hasFocus ? table.getSelectionBackground() : table.getBackground()); setForeground(isSelected && !hasFocus ? table.getSelectionForeground() : table.getForeground()); setFont(table.getFont()); return this; } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPArgumentsPanel.java0000644000175000017500000001211512032647215032223 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.gui; import java.util.Iterator; import javax.swing.JTable; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; /** * A GUI panel allowing the user to enter HTTP Parameters. * These have names and values, as well as check-boxes to determine whether or not to * include the "=" sign in the output and whether or not to encode the output. */ public class HTTPArgumentsPanel extends ArgumentsPanel { private static final long serialVersionUID = 240L; private static final String ENCODE_OR_NOT = "encode?"; //$NON-NLS-1$ private static final String INCLUDE_EQUALS = "include_equals"; //$NON-NLS-1$ @Override protected void initializeTableModel() { tableModel = new ObjectTableModel(new String[] { ArgumentsPanel.COLUMN_RESOURCE_NAMES_0, ArgumentsPanel.COLUMN_RESOURCE_NAMES_1, ENCODE_OR_NOT, INCLUDE_EQUALS }, HTTPArgument.class, new Functor[] { new Functor("getName"), //$NON-NLS-1$ new Functor("getValue"), //$NON-NLS-1$ new Functor("isAlwaysEncoded"), //$NON-NLS-1$ new Functor("isUseEquals") }, //$NON-NLS-1$ new Functor[] { new Functor("setName"), //$NON-NLS-1$ new Functor("setValue"), //$NON-NLS-1$ new Functor("setAlwaysEncoded"), //$NON-NLS-1$ new Functor("setUseEquals") }, //$NON-NLS-1$ new Class[] {String.class, String.class, Boolean.class, Boolean.class }); } public static boolean testFunctors(){ HTTPArgumentsPanel instance = new HTTPArgumentsPanel(); instance.initializeTableModel(); return instance.tableModel.checkFunctors(null,instance.getClass()); } @Override protected void sizeColumns(JTable table) { GuiUtils.fixSize(table.getColumn(INCLUDE_EQUALS), table); GuiUtils.fixSize(table.getColumn(ENCODE_OR_NOT), table); } @Override protected HTTPArgument makeNewArgument() { HTTPArgument arg = new HTTPArgument("", ""); arg.setAlwaysEncoded(false); arg.setUseEquals(true); return arg; } public HTTPArgumentsPanel() { super(JMeterUtils.getResString("paramtable")); //$NON-NLS-1$ } @Override public TestElement createTestElement() { Arguments args = getUnclonedParameters(); this.configureTestElement(args); return (TestElement) args.clone(); } /** * Convert the argument panel contents to an {@link Arguments} collection. * * @return a collection of {@link HTTPArgument} entries */ public Arguments getParameters() { Arguments args = getUnclonedParameters(); return (Arguments) args.clone(); } private Arguments getUnclonedParameters() { stopTableEditing(); @SuppressWarnings("unchecked") // only contains Argument (or HTTPArgument) Iterator modelData = (Iterator) tableModel.iterator(); Arguments args = new Arguments(); while (modelData.hasNext()) { HTTPArgument arg = modelData.next(); args.addArgument(arg); } return args; } @Override public void configure(TestElement el) { super.configure(el); if (el instanceof Arguments) { tableModel.clearData(); HTTPArgument.convertArgumentsToHTTP((Arguments) el); PropertyIterator iter = ((Arguments) el).getArguments().iterator(); while (iter.hasNext()) { HTTPArgument arg = (HTTPArgument) iter.next().getObjectValue(); tableModel.addRow(arg); } } checkDeleteStatus(); } protected boolean isMetaDataNormal(HTTPArgument arg) { return arg.getMetaData() == null || arg.getMetaData().equals("=") || (arg.getValue() != null && arg.getValue().length() > 0); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/CacheManagerGui.java0000644000175000017500000001111412032647215031537 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.gui; import java.awt.BorderLayout; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.layout.VerticalLayout; /** * The GUI for the HTTP Cache Manager * */ public class CacheManagerGui extends AbstractConfigGui { private static final long serialVersionUID = 240L; private JCheckBox clearEachIteration; private JCheckBox useExpires; private JTextField maxCacheSize; /** * Create a new LoginConfigGui as a standalone component. */ public CacheManagerGui() { init(); } public String getLabelResource() { return "cache_manager_title"; // $NON-NLS-1$ } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); final CacheManager cacheManager = (CacheManager)element; clearEachIteration.setSelected(cacheManager.getClearEachIteration()); useExpires.setSelected(cacheManager.getUseExpires()); maxCacheSize.setText(Integer.toString(cacheManager.getMaxSize())); } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { CacheManager element = new CacheManager(); modifyTestElement(element); return element; } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { configureTestElement(element); final CacheManager cacheManager = (CacheManager)element; cacheManager.setClearEachIteration(clearEachIteration.isSelected()); cacheManager.setUseExpires(useExpires.isSelected()); try { cacheManager.setMaxSize(Integer.parseInt(maxCacheSize.getText())); } catch (NumberFormatException e) { // NOOP } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); clearEachIteration.setSelected(false); useExpires.setSelected(false); maxCacheSize.setText(""); //$NON-NLS-1$ } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); clearEachIteration = new JCheckBox(JMeterUtils.getResString("clear_cache_per_iter"), false); useExpires = new JCheckBox(JMeterUtils.getResString("use_expires"), false); JPanel northPanel = new JPanel(); northPanel.setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); northPanel.add(makeTitlePanel()); northPanel.add(clearEachIteration); northPanel.add(useExpires); JLabel label = new JLabel(JMeterUtils.getResString("cache_manager_size")); //$NON-NLS-1$ maxCacheSize = new JTextField(20); maxCacheSize.setName(CacheManager.MAX_SIZE); label.setLabelFor(maxCacheSize); JPanel maxCacheSizePanel = new JPanel(new BorderLayout(5, 0)); maxCacheSizePanel.add(label, BorderLayout.WEST); maxCacheSizePanel.add(maxCacheSize, BorderLayout.CENTER); northPanel.add(maxCacheSizePanel); add(northPanel, BorderLayout.NORTH); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/HTTPFileArgsPanel.java0000644000175000017500000003267712032647215031771 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.Iterator; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.TableCellEditor; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; /* * Note: this class is currently only suitable for use with HTTSamplerBase. * If it is required for other classes, then the appropriate configure() and modifyTestElement() * method code needs to be written. */ /** * A GUI panel allowing the user to enter file information for http upload. * Used by MultipartUrlConfigGui for use in HTTP Samplers. */ public class HTTPFileArgsPanel extends JPanel implements ActionListener { private static final long serialVersionUID = 240L; /** The title label for this component. */ private JLabel tableLabel; /** The table containing the list of files. */ private transient JTable table; /** The model for the files table. */ private transient ObjectTableModel tableModel; // only contains HTTPFileArg elements /** A button for adding new files to the table. */ private JButton add; /** A button for browsing file system to set path of selected row in table. */ private JButton browse; /** A button for removing files from the table. */ private JButton delete; /** Command for adding a row to the table. */ private static final String ADD = "add"; // $NON-NLS-1$ /** Command for browsing filesystem to set path of selected row in table. */ private static final String BROWSE = "browse"; // $NON-NLS-1$ /** Command for removing a row from the table. */ private static final String DELETE = "delete"; // $NON-NLS-1$ private static final String FILEPATH = "send_file_filename_label"; // $NON-NLS-1$ /** The parameter name column title of file table. */ private static final String PARAMNAME = "send_file_param_name_label"; //$NON-NLS-1$ /** The mime type column title of file table. */ private static final String MIMETYPE = "send_file_mime_label"; //$NON-NLS-1$ public HTTPFileArgsPanel() { this(""); // required for unit tests } /** * Create a new HTTPFileArgsPanel as an embedded component, using the * specified title. * * @param label * the title for the component. */ public HTTPFileArgsPanel(String label) { tableLabel = new JLabel(label); init(); } /** * Initialize the table model used for the http files table. */ private void initializeTableModel() { tableModel = new ObjectTableModel(new String[] { FILEPATH, PARAMNAME, MIMETYPE}, HTTPFileArg.class, new Functor[] { new Functor("getPath"), //$NON-NLS-1$ new Functor("getParamName"), //$NON-NLS-1$ new Functor("getMimeType")}, //$NON-NLS-1$ new Functor[] { new Functor("setPath"), //$NON-NLS-1$ new Functor("setParamName"), //$NON-NLS-1$ new Functor("setMimeType")}, //$NON-NLS-1$ new Class[] {String.class, String.class, String.class}); } public static boolean testFunctors(){ HTTPFileArgsPanel instance = new HTTPFileArgsPanel(""); //$NON-NLS-1$ instance.initializeTableModel(); return instance.tableModel.checkFunctors(null,instance.getClass()); } /** * Resize the table columns to appropriate widths. * * @param table * the table to resize columns for */ private void sizeColumns(JTable table) { GuiUtils.fixSize(table.getColumn(PARAMNAME), table); GuiUtils.fixSize(table.getColumn(MIMETYPE), table); } /** * Save the GUI data in the HTTPSamplerBase element. * * @param testElement */ public void modifyTestElement(TestElement testElement) { GuiUtils.stopTableEditing(table); if (testElement instanceof HTTPSamplerBase) { HTTPSamplerBase base = (HTTPSamplerBase) testElement; int rows = tableModel.getRowCount(); @SuppressWarnings("unchecked") // we only put HTTPFileArgs in it Iterator modelData = (Iterator) tableModel.iterator(); HTTPFileArg[] files = new HTTPFileArg[rows]; int row=0; while (modelData.hasNext()) { HTTPFileArg file = modelData.next(); files[row++]=file; } base.setHTTPFiles(files); } } /** * A newly created component can be initialized with the contents of a * HTTPSamplerBase object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param testElement the HTTPSamplerBase to be used to configure the GUI */ public void configure(TestElement testElement) { if (testElement instanceof HTTPSamplerBase) { HTTPSamplerBase base = (HTTPSamplerBase) testElement; tableModel.clearData(); for(HTTPFileArg file : base.getHTTPFiles()){ tableModel.addRow(file); } checkDeleteAndBrowseStatus(); } } /** * Enable or disable the delete button depending on whether or not there is * a row to be deleted. */ private void checkDeleteAndBrowseStatus() { // Disable DELETE and BROWSE buttons if there are no rows in // the table to delete. if (tableModel.getRowCount() == 0) { browse.setEnabled(false); delete.setEnabled(false); } else { browse.setEnabled(true); delete.setEnabled(true); } } /** * Clear all rows from the table. */ public void clear() { GuiUtils.stopTableEditing(table); tableModel.clearData(); } /** * Invoked when an action occurs. This implementation supports the add and * delete buttons. * * @param e * the event that has occurred */ public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(ADD)) { addFile(""); //$NON-NLS-1$ } runCommandOnSelectedFile(action); } /** * runs specified command on currently selected file. * * @param command specifies which process will be done on selected * file. it's coming from action command currently catched by * action listener. * * @see runCommandOnRow */ private void runCommandOnSelectedFile(String command) { // If a table cell is being edited, we must cancel the editing before // deleting the row if (table.isEditing()) { TableCellEditor cellEditor = table.getCellEditor(table.getEditingRow(), table.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = table.getSelectedRow(); if (rowSelected >= 0) { runCommandOnRow(command, rowSelected); tableModel.fireTableDataChanged(); // Disable DELETE and BROWSE if there are no rows in the table to delete. checkDeleteAndBrowseStatus(); // Table still contains one or more rows, so highlight (select) // the appropriate one. if (tableModel.getRowCount() != 0) { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } table.setRowSelectionInterval(rowToSelect, rowToSelect); } } } /** * runs specified command on currently selected table row. * * @param command specifies which process will be done on selected * file. it's coming from action command currently catched by * action listener. * * @param rowSelected index of selected row. */ private void runCommandOnRow(String command, int rowSelected) { if (DELETE.equals(command)) { tableModel.removeRow(rowSelected); } else if (BROWSE.equals(command)) { String path = browseAndGetFilePath(); tableModel.setValueAt(path, rowSelected, 0); } } /** * Add a new file row to the table. */ private void addFile(String path) { // If a table cell is being edited, we should accept the current value // and stop the editing before adding a new row. GuiUtils.stopTableEditing(table); tableModel.addRow(new HTTPFileArg(path)); // Enable DELETE (which may already be enabled, but it won't hurt) delete.setEnabled(true); browse.setEnabled(true); // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; table.setRowSelectionInterval(rowToSelect, rowToSelect); } /** * opens a dialog box to choose a file and returns selected file's * path. * * @return a new File object */ private String browseAndGetFilePath() { String path = ""; //$NON-NLS-1$ JFileChooser chooser = FileDialoger.promptToOpenFile(); if (chooser != null) { File file = chooser.getSelectedFile(); if (file != null) { path = file.getPath(); } } return path; } /** * Stop any editing that is currently being done on the table. This will * save any changes that have already been made. */ protected void stopTableEditing() { GuiUtils.stopTableEditing(table); } /** * Create the main GUI panel which contains the file table. * * @return the main GUI panel */ private Component makeMainPanel() { initializeTableModel(); table = new JTable(tableModel); table.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); return makeScrollPane(table); } /** * Create a panel containing the title label for the table. * * @return a panel containing the title label */ private Component makeLabelPanel() { JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); labelPanel.add(tableLabel); return labelPanel; } /** * Create a panel containing the add and delete buttons. * * @return a GUI panel containing the buttons */ private JPanel makeButtonPanel() { add = new JButton(JMeterUtils.getResString("add")); // $NON-NLS-1$ add.setActionCommand(ADD); add.setEnabled(true); browse = new JButton(JMeterUtils.getResString("browse")); // $NON-NLS-1$ browse.setActionCommand(BROWSE); delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$ delete.setActionCommand(DELETE); checkDeleteAndBrowseStatus(); JPanel buttonPanel = new JPanel(); buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10)); add.addActionListener(this); browse.addActionListener(this); delete.addActionListener(this); buttonPanel.add(add); buttonPanel.add(browse); buttonPanel.add(delete); return buttonPanel; } /** * Initialize the components and layout of this component. */ private void init() { JPanel p = this; p.setLayout(new BorderLayout()); p.add(makeLabelPanel(), BorderLayout.NORTH); p.add(makeMainPanel(), BorderLayout.CENTER); // Force a minimum table height of 70 pixels p.add(Box.createVerticalStrut(70), BorderLayout.WEST); p.add(makeButtonPanel(), BorderLayout.SOUTH); table.revalidate(); sizeColumns(table); } private JScrollPane makeScrollPane(Component comp) { JScrollPane pane = new JScrollPane(comp); pane.setPreferredSize(pane.getMinimumSize()); return pane; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/gui/CookiePanel.java0000644000175000017500000003710712032647215030777 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.List; import javax.swing.BorderFactory; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.TableCellEditor; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.util.FileDialoger; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.PowerTableModel; import org.apache.jmeter.protocol.http.control.Cookie; import org.apache.jmeter.protocol.http.control.CookieHandler; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.HC3CookieHandler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.layout.VerticalLayout; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This is the GUI for Cookie Manager * * Allows the user to specify if she needs cookie services, and give parameters * for this service. * */ public class CookiePanel extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); //++ Action command names private static final String ADD_COMMAND = "Add"; //$NON-NLS-1$ private static final String DELETE_COMMAND = "Delete"; //$NON-NLS-1$ private static final String LOAD_COMMAND = "Load"; //$NON-NLS-1$ private static final String SAVE_COMMAND = "Save"; //$NON-NLS-1$ private static final String HANDLER_COMMAND = "Handler"; // $NON-NLS-1$ //-- private JTable cookieTable; private PowerTableModel tableModel; private JCheckBox clearEachIteration; private JComboBox selectHandlerPanel; private HashMap handlerMap = new HashMap(); private static final String[] COLUMN_RESOURCE_NAMES = { ("name"), //$NON-NLS-1$ ("value"), //$NON-NLS-1$ ("domain"), //$NON-NLS-1$ ("path"), //$NON-NLS-1$ ("secure"), //$NON-NLS-1$ // removed expiration because it's just an annoyance for static cookies }; private static final Class[] columnClasses = { String.class, String.class, String.class, String.class, Boolean.class, }; private JButton addButton; private JButton deleteButton; private JButton loadButton; private JButton saveButton; /** * List of cookie policies. * * These are used both for the display, and for setting the policy */ private final String[] policies = new String[] { "default", "compatibility", "rfc2109", "rfc2965", "ignorecookies", "netscape" }; private JLabeledChoice policy; /** * Default constructor. */ public CookiePanel() { init(); } public String getLabelResource() { return "cookie_manager_title"; //$NON-NLS-1$ } public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(DELETE_COMMAND)) { if (tableModel.getRowCount() > 0) { // If a table cell is being edited, we must cancel the editing // before deleting the row. if (cookieTable.isEditing()) { TableCellEditor cellEditor = cookieTable.getCellEditor(cookieTable.getEditingRow(), cookieTable.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = cookieTable.getSelectedRow(); if (rowSelected != -1) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable the DELETE and SAVE buttons if no rows remaining // after delete. if (tableModel.getRowCount() == 0) { deleteButton.setEnabled(false); saveButton.setEnabled(false); } // Table still contains one or more rows, so highlight // (select) the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect); } } } } else if (action.equals(ADD_COMMAND)) { // If a table cell is being edited, we should accept the current // value and stop the editing before adding a new row. GuiUtils.stopTableEditing(cookieTable); tableModel.addNewRow(); tableModel.fireTableDataChanged(); // Enable the DELETE and SAVE buttons if they are currently // disabled. if (!deleteButton.isEnabled()) { deleteButton.setEnabled(true); } if (!saveButton.isEnabled()) { saveButton.setEnabled(true); } // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; cookieTable.setRowSelectionInterval(rowToSelect, rowToSelect); } else if (action.equals(LOAD_COMMAND)) { try { final String [] _txt={".txt"}; //$NON-NLS-1$ final JFileChooser chooser = FileDialoger.promptToOpenFile(_txt); if (chooser != null) { CookieManager manager = new CookieManager(); manager.addFile(chooser.getSelectedFile().getAbsolutePath()); for (int i = 0; i < manager.getCookieCount() ; i++){ addCookieToTable(manager.get(i)); } tableModel.fireTableDataChanged(); if (tableModel.getRowCount() > 0) { deleteButton.setEnabled(true); saveButton.setEnabled(true); } } } catch (IOException ex) { log.error("", ex); } } else if (action.equals(SAVE_COMMAND)) { try { final JFileChooser chooser = FileDialoger.promptToSaveFile("cookies.txt"); //$NON-NLS-1$ if (chooser != null) { ((CookieManager) createTestElement()).save(chooser.getSelectedFile().getAbsolutePath()); } } catch (IOException ex) { log.error("", ex); } } } private void addCookieToTable(Cookie cookie) { tableModel.addRow(new Object[] { cookie.getName(), cookie.getValue(), cookie.getDomain(), cookie.getPath(), Boolean.valueOf(cookie.getSecure()) }); } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement cm) { GuiUtils.stopTableEditing(cookieTable); cm.clear(); configureTestElement(cm); if (cm instanceof CookieManager) { CookieManager cookieManager = (CookieManager) cm; for (int i = 0; i < tableModel.getRowCount(); i++) { Cookie cookie = createCookie(tableModel.getRowData(i)); cookieManager.add(cookie); } cookieManager.setClearEachIteration(clearEachIteration.isSelected()); cookieManager.setCookiePolicy(policy.getText()); cookieManager.setImplementation(handlerMap.get(selectHandlerPanel.getSelectedItem())); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); tableModel.clearData(); clearEachIteration.setSelected(false); policy.setText(CookieManager.DEFAULT_POLICY); selectHandlerPanel.setSelectedItem(CookieManager.DEFAULT_IMPLEMENTATION .substring(CookieManager.DEFAULT_IMPLEMENTATION.lastIndexOf('.') + 1)); deleteButton.setEnabled(false); saveButton.setEnabled(false); } private Cookie createCookie(Object[] rowData) { Cookie cookie = new Cookie( (String) rowData[0], (String) rowData[1], (String) rowData[2], (String) rowData[3], ((Boolean) rowData[4]).booleanValue(), 0); // Non-expiring return cookie; } private void populateTable(CookieManager manager) { tableModel.clearData(); PropertyIterator iter = manager.getCookies().iterator(); while (iter.hasNext()) { addCookieToTable((Cookie) iter.next().getObjectValue()); } } public TestElement createTestElement() { CookieManager cookieManager = new CookieManager(); modifyTestElement(cookieManager); return cookieManager; } @Override public void configure(TestElement el) { super.configure(el); CookieManager cookieManager = (CookieManager) el; populateTable(cookieManager); clearEachIteration.setSelected((cookieManager).getClearEachIteration()); policy.setText(cookieManager.getPolicy()); String fullImpl = cookieManager.getImplementation(); selectHandlerPanel.setSelectedItem(fullImpl.substring(fullImpl.lastIndexOf('.') + 1)); } /** * Shows the main cookie configuration panel. */ private void init() { tableModel = new PowerTableModel(COLUMN_RESOURCE_NAMES, columnClasses); clearEachIteration = new JCheckBox(JMeterUtils.getResString("clear_cookies_per_iter"), false); //$NON-NLS-1$ policy = new JLabeledChoice( JMeterUtils.getResString("cookie_manager_policy"), //$NON-NLS-1$ policies); policy.setText(CookieManager.DEFAULT_POLICY); setLayout(new BorderLayout()); setBorder(makeBorder()); JPanel northPanel = new JPanel(); northPanel.setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); northPanel.add(makeTitlePanel()); JPanel optionsPane = new JPanel(); optionsPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("cookie_options"))); // $NON-NLS-1$ optionsPane.setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); optionsPane.add(clearEachIteration); JPanel policyTypePane = new JPanel(); policyTypePane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); policyTypePane.add(policy); policyTypePane.add(GuiUtils.createLabelCombo( JMeterUtils.getResString("cookie_implementation_choose"), createComboHandler())); // $NON-NLS-1$ optionsPane.add(policyTypePane); northPanel.add(optionsPane); add(northPanel, BorderLayout.NORTH); add(createCookieTablePanel(), BorderLayout.CENTER); } public JPanel createCookieTablePanel() { // create the JTable that holds one cookie per row cookieTable = new JTable(tableModel); cookieTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); cookieTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); cookieTable.setPreferredScrollableViewportSize(new Dimension(100, 70)); JPanel buttonPanel = createButtonPanel(); JPanel panel = new JPanel(new BorderLayout(0, 5)); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("cookies_stored"))); //$NON-NLS-1$ panel.add(new JScrollPane(cookieTable), BorderLayout.CENTER); panel.add(buttonPanel, BorderLayout.SOUTH); return panel; } private JButton createButton(String resName, char mnemonic, String command, boolean enabled) { JButton button = new JButton(JMeterUtils.getResString(resName)); button.setMnemonic(mnemonic); button.setActionCommand(command); button.setEnabled(enabled); button.addActionListener(this); return button; } private JPanel createButtonPanel() { boolean tableEmpty = (tableModel.getRowCount() == 0); addButton = createButton("add", 'A', ADD_COMMAND, true); //$NON-NLS-1$ deleteButton = createButton("delete", 'D', DELETE_COMMAND, !tableEmpty); //$NON-NLS-1$ loadButton = createButton("load", 'L', LOAD_COMMAND, true); //$NON-NLS-1$ saveButton = createButton("save", 'S', SAVE_COMMAND, !tableEmpty); //$NON-NLS-1$ JPanel buttonPanel = new JPanel(); buttonPanel.add(addButton); buttonPanel.add(deleteButton); buttonPanel.add(loadButton); buttonPanel.add(saveButton); return buttonPanel; } /** * Create the drop-down list to changer render * @return List of all render (implement ResultsRender) */ private JComboBox createComboHandler() { ComboBoxModel nodesModel = new DefaultComboBoxModel(); // drop-down list for renderer selectHandlerPanel = new JComboBox(nodesModel); selectHandlerPanel.setActionCommand(HANDLER_COMMAND); selectHandlerPanel.addActionListener(this); // if no results render in jmeter.properties, load Standard (default) List classesToAdd = Collections.emptyList(); try { classesToAdd = JMeterUtils.findClassesThatExtend(CookieHandler.class); } catch (IOException e1) { // ignored } String tmpName = null; for (String clazz : classesToAdd) { String shortClazz = clazz.substring(clazz.lastIndexOf('.') + 1); if (HC3CookieHandler.class.getName().equals(clazz)) { tmpName = shortClazz; } selectHandlerPanel.addItem(shortClazz); handlerMap.put(shortClazz, clazz); } nodesModel.setSelectedItem(tmpName); // preset to default impl return selectHandlerPanel; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/0000755000175000017500000000000012165514773026623 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java0000644000175000017500000001751012032647215032546 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.util.HTTPConstantsInterface; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; /** * Base class for HTTP implementations used by the HTTPSamplerProxy sampler. */ public abstract class HTTPAbstractImpl implements Interruptible, HTTPConstantsInterface { protected final HTTPSamplerBase testElement; protected HTTPAbstractImpl(HTTPSamplerBase testElement){ this.testElement = testElement; } protected abstract HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth); // Allows HTTPSamplerProxy to call threadFinished; subclasses can override if necessary protected void threadFinished() { } // Provide access to HTTPSamplerBase methods /** * Invokes {@link HTTPSamplerBase#errorResult(Throwable, HTTPSampleResult)} */ protected HTTPSampleResult errorResult(Throwable t, HTTPSampleResult res) { return testElement.errorResult(t, res); } /** * Invokes {@link HTTPSamplerBase#getArguments()} */ protected Arguments getArguments() { return testElement.getArguments(); } /** * Invokes {@link HTTPSamplerBase#getAuthManager()} */ protected AuthManager getAuthManager() { return testElement.getAuthManager(); } /** * Invokes {@link HTTPSamplerBase#getAutoRedirects()} */ protected boolean getAutoRedirects() { return testElement.getAutoRedirects(); } /** * Invokes {@link HTTPSamplerBase#getCacheManager()} */ protected CacheManager getCacheManager() { return testElement.getCacheManager(); } /** * Invokes {@link HTTPSamplerBase#getConnectTimeout()} */ protected int getConnectTimeout() { return testElement.getConnectTimeout(); } /** * Invokes {@link HTTPSamplerBase#getContentEncoding()} * @return the encoding of the content, i.e. its charset name */ protected String getContentEncoding() { return testElement.getContentEncoding(); } /** * Invokes {@link HTTPSamplerBase#getCookieManager()} */ protected CookieManager getCookieManager() { return testElement.getCookieManager(); } /** * Invokes {@link HTTPSamplerBase#getHeaderManager()} */ protected HeaderManager getHeaderManager() { return testElement.getHeaderManager(); } /** * Invokes {@link HTTPSamplerBase#getHTTPFiles()} */ protected HTTPFileArg[] getHTTPFiles() { return testElement.getHTTPFiles(); } /** * Invokes {@link HTTPSamplerBase#getIpSource()} */ protected String getIpSource() { return testElement.getIpSource(); } /** * Invokes {@link HTTPSamplerBase#getProxyHost()} */ protected String getProxyHost() { return testElement.getProxyHost(); } /** * Invokes {@link HTTPSamplerBase#getProxyPass()} */ protected String getProxyPass() { return testElement.getProxyPass(); } /** * Invokes {@link HTTPSamplerBase#getProxyPortInt()} */ protected int getProxyPortInt() { return testElement.getProxyPortInt(); } /** * Invokes {@link HTTPSamplerBase#getProxyUser()} */ protected String getProxyUser() { return testElement.getProxyUser(); } /** * Invokes {@link HTTPSamplerBase#getResponseTimeout()} */ protected int getResponseTimeout() { return testElement.getResponseTimeout(); } /** * Determine whether to send a file as the entire body of an * entity enclosing request such as POST, PUT or PATCH. * * Invokes {@link HTTPSamplerBase#getSendFileAsPostBody()} */ protected boolean getSendFileAsPostBody() { return testElement.getSendFileAsPostBody(); } /** * Determine whether to send concatenated parameters as the entire body of an * entity enclosing request such as POST, PUT or PATCH. * * Invokes {@link HTTPSamplerBase#getSendParameterValuesAsPostBody()} */ protected boolean getSendParameterValuesAsPostBody() { return testElement.getSendParameterValuesAsPostBody(); } /** * Invokes {@link HTTPSamplerBase#getUseKeepAlive()} */ protected boolean getUseKeepAlive() { return testElement.getUseKeepAlive(); } /** * Invokes {@link HTTPSamplerBase#getUseMultipartForPost()} */ protected boolean getUseMultipartForPost() { return testElement.getUseMultipartForPost(); } /** * Invokes {@link HTTPSamplerBase#getDoBrowserCompatibleMultipart()} */ protected boolean getDoBrowserCompatibleMultipart() { return testElement.getDoBrowserCompatibleMultipart(); } /** * Invokes {@link HTTPSamplerBase#hasArguments()} */ protected boolean hasArguments() { return testElement.hasArguments(); } /** * Invokes {@link HTTPSamplerBase#isMonitor()} */ protected boolean isMonitor() { return testElement.isMonitor(); } /** * Invokes {@link HTTPSamplerBase#isSuccessCode(int)} */ protected boolean isSuccessCode(int errorLevel) { return testElement.isSuccessCode(errorLevel); } /** * Invokes {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, int)} */ protected byte[] readResponse(SampleResult res, InputStream instream, int responseContentLength) throws IOException { return testElement.readResponse(res, instream, responseContentLength); } /** * Invokes {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, int)} */ protected byte[] readResponse(SampleResult res, BufferedInputStream in, int contentLength) throws IOException { return testElement.readResponse(res, in, contentLength); } /** * Invokes {@link HTTPSamplerBase#resultProcessing(boolean, int, HTTPSampleResult)} */ protected HTTPSampleResult resultProcessing(boolean areFollowingRedirect, int frameDepth, HTTPSampleResult res) { return testElement.resultProcessing(areFollowingRedirect, frameDepth, res); } /** * Invokes {@link HTTPSamplerBase#setUseKeepAlive(boolean)} */ protected void setUseKeepAlive(boolean b) { testElement.setUseKeepAlive(b); } /** * Called by testIterationStart if the SSL Context was reset. * * This implementation does nothing. */ protected void notifySSLContextWasReset() { // NOOP } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java0000644000175000017500000021672512032647215032370 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.protocol.http.control.Cookie; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.parser.HTMLParseException; import org.apache.jmeter.protocol.http.parser.HTMLParser; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jmeter.protocol.http.util.EncoderCache; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPConstantsInterface; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.protocol.http.util.HTTPFileArgs; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestIterationListener; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.IntegerProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.JsseSSLManager; import org.apache.jmeter.util.SSLManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Matcher; /** * Common constants and methods for HTTP samplers * */ public abstract class HTTPSamplerBase extends AbstractSampler implements TestStateListener, TestIterationListener, ThreadListener, HTTPConstantsInterface { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.LoginConfigGui", "org.apache.jmeter.protocol.http.config.gui.HttpDefaultsGui", "org.apache.jmeter.config.gui.SimpleConfigGui", "org.apache.jmeter.protocol.http.gui.HeaderPanel", "org.apache.jmeter.protocol.http.gui.AuthPanel", "org.apache.jmeter.protocol.http.gui.CacheManagerGui", "org.apache.jmeter.protocol.http.gui.CookiePanel"})); //+ JMX names - do not change public static final String ARGUMENTS = "HTTPsampler.Arguments"; // $NON-NLS-1$ public static final String AUTH_MANAGER = "HTTPSampler.auth_manager"; // $NON-NLS-1$ public static final String COOKIE_MANAGER = "HTTPSampler.cookie_manager"; // $NON-NLS-1$ public static final String CACHE_MANAGER = "HTTPSampler.cache_manager"; // $NON-NLS-1$ public static final String HEADER_MANAGER = "HTTPSampler.header_manager"; // $NON-NLS-1$ public static final String DOMAIN = "HTTPSampler.domain"; // $NON-NLS-1$ public static final String PORT = "HTTPSampler.port"; // $NON-NLS-1$ public static final String PROXYHOST = "HTTPSampler.proxyHost"; // $NON-NLS-1$ public static final String PROXYPORT = "HTTPSampler.proxyPort"; // $NON-NLS-1$ public static final String PROXYUSER = "HTTPSampler.proxyUser"; // $NON-NLS-1$ public static final String PROXYPASS = "HTTPSampler.proxyPass"; // $NON-NLS-1$ public static final String CONNECT_TIMEOUT = "HTTPSampler.connect_timeout"; // $NON-NLS-1$ public static final String RESPONSE_TIMEOUT = "HTTPSampler.response_timeout"; // $NON-NLS-1$ public static final String METHOD = "HTTPSampler.method"; // $NON-NLS-1$ /** This is the encoding used for the content, i.e. the charset name, not the header "Content-Encoding" */ public static final String CONTENT_ENCODING = "HTTPSampler.contentEncoding"; // $NON-NLS-1$ public static final String IMPLEMENTATION = "HTTPSampler.implementation"; // $NON-NLS-1$ public static final String PATH = "HTTPSampler.path"; // $NON-NLS-1$ public static final String FOLLOW_REDIRECTS = "HTTPSampler.follow_redirects"; // $NON-NLS-1$ public static final String AUTO_REDIRECTS = "HTTPSampler.auto_redirects"; // $NON-NLS-1$ public static final String PROTOCOL = "HTTPSampler.protocol"; // $NON-NLS-1$ static final String PROTOCOL_FILE = "file"; // $NON-NLS-1$ private static final String DEFAULT_PROTOCOL = HTTPConstants.PROTOCOL_HTTP; public static final String URL = "HTTPSampler.URL"; // $NON-NLS-1$ /** * IP source to use - does not apply to Java HTTP implementation currently */ public static final String IP_SOURCE = "HTTPSampler.ipSource"; // $NON-NLS-1$ public static final String USE_KEEPALIVE = "HTTPSampler.use_keepalive"; // $NON-NLS-1$ public static final String DO_MULTIPART_POST = "HTTPSampler.DO_MULTIPART_POST"; // $NON-NLS-1$ public static final String BROWSER_COMPATIBLE_MULTIPART = "HTTPSampler.BROWSER_COMPATIBLE_MULTIPART"; // $NON-NLS-1$ public static final String CONCURRENT_DWN = "HTTPSampler.concurrentDwn"; // $NON-NLS-1$ public static final String CONCURRENT_POOL = "HTTPSampler.concurrentPool"; // $NON-NLS-1$ private static final String CONCURRENT_POOL_DEFAULT = "4"; // default for concurrent pool (do not change) //- JMX names public static final boolean BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT = false; // The default setting to be used (i.e. historic) private static final long KEEPALIVETIME = 0; // for Thread Pool for resources but no need to use a special value? private static final long AWAIT_TERMINATION_TIMEOUT = JMeterUtils.getPropDefault("httpsampler.await_termination_timeout", 60); // $NON-NLS-1$ // default value: 60 secs private static final boolean IGNORE_FAILED_EMBEDDED_RESOURCES = JMeterUtils.getPropDefault("httpsampler.ignore_failed_embedded_resources", false); // $NON-NLS-1$ // default value: false public static final int CONCURRENT_POOL_SIZE = 4; // Default concurrent pool size for download embedded resources public static final String DEFAULT_METHOD = HTTPConstants.GET; // $NON-NLS-1$ // Supported methods: private static final String [] METHODS = { DEFAULT_METHOD, // i.e. GET HTTPConstants.POST, HTTPConstants.HEAD, HTTPConstants.PUT, HTTPConstants.OPTIONS, HTTPConstants.TRACE, HTTPConstants.DELETE, HTTPConstants.PATCH, }; private static final List METHODLIST = Collections.unmodifiableList(Arrays.asList(METHODS)); // @see mergeFileProperties // Must be private, as the file list needs special handling private static final String FILE_ARGS = "HTTPsampler.Files"; // $NON-NLS-1$ // MIMETYPE is kept for backward compatibility with old test plans private static final String MIMETYPE = "HTTPSampler.mimetype"; // $NON-NLS-1$ // FILE_NAME is kept for backward compatibility with old test plans private static final String FILE_NAME = "HTTPSampler.FILE_NAME"; // $NON-NLS-1$ /* Shown as Parameter Name on the GUI */ // FILE_FIELD is kept for backward compatibility with old test plans private static final String FILE_FIELD = "HTTPSampler.FILE_FIELD"; // $NON-NLS-1$ public static final String CONTENT_TYPE = "HTTPSampler.CONTENT_TYPE"; // $NON-NLS-1$ // IMAGE_PARSER now really means EMBEDDED_PARSER public static final String IMAGE_PARSER = "HTTPSampler.image_parser"; // $NON-NLS-1$ // Embedded URLs must match this RE (if provided) public static final String EMBEDDED_URL_RE = "HTTPSampler.embedded_url_re"; // $NON-NLS-1$ public static final String MONITOR = "HTTPSampler.monitor"; // $NON-NLS-1$ // Store MD5 hash instead of storing response private static final String MD5 = "HTTPSampler.md5"; // $NON-NLS-1$ /** A number to indicate that the port has not been set. */ public static final int UNSPECIFIED_PORT = 0; public static final String UNSPECIFIED_PORT_AS_STRING = "0"; // $NON-NLS-1$ // TODO - change to use URL version? Will this affect test plans? /** If the port is not present in a URL, getPort() returns -1 */ public static final int URL_UNSPECIFIED_PORT = -1; public static final String URL_UNSPECIFIED_PORT_AS_STRING = "-1"; // $NON-NLS-1$ protected static final String NON_HTTP_RESPONSE_CODE = "Non HTTP response code"; protected static final String NON_HTTP_RESPONSE_MESSAGE = "Non HTTP response message"; public static final String POST_BODY_RAW = "HTTPSampler.postBodyRaw"; // TODO - belongs elsewhere public static final boolean POST_BODY_RAW_DEFAULT = false; private static final String ARG_VAL_SEP = "="; // $NON-NLS-1$ private static final String QRY_SEP = "&"; // $NON-NLS-1$ private static final String QRY_PFX = "?"; // $NON-NLS-1$ protected static final int MAX_REDIRECTS = JMeterUtils.getPropDefault("httpsampler.max_redirects", 5); // $NON-NLS-1$ protected static final int MAX_FRAME_DEPTH = JMeterUtils.getPropDefault("httpsampler.max_frame_depth", 5); // $NON-NLS-1$ // Derive the mapping of content types to parsers private static final Map parsersForType = new HashMap(); // Not synch, but it is not modified after creation private static final String RESPONSE_PARSERS= // list of parsers JMeterUtils.getProperty("HTTPResponse.parsers");//$NON-NLS-1$ // Control reuse of cached SSL Context in subsequent iterations private static final boolean USE_CACHED_SSL_CONTEXT = JMeterUtils.getPropDefault("https.use.cached.ssl.context", true);//$NON-NLS-1$ static{ String []parsers = JOrphanUtils.split(RESPONSE_PARSERS, " " , true);// returns empty array for null for (int i=0;i 0) && (files[0].getParamName().length() == 0); } /** * Determine if none of the parameters have a name, and if that * is the case, it means that the parameter values should be sent * as the entity body * * @return true if none of the parameters have a name specified */ public boolean getSendParameterValuesAsPostBody() { if(getPostBodyRaw()) { return true; } else { boolean noArgumentsHasName = true; PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); if(arg.getName() != null && arg.getName().length() > 0) { noArgumentsHasName = false; break; } } return noArgumentsHasName; } } /** * Determine if we should use multipart/form-data or * application/x-www-form-urlencoded for the post * * @return true if multipart/form-data should be used and method is POST */ public boolean getUseMultipartForPost(){ // We use multipart if we have been told so, or files are present // and the files should not be send as the post body HTTPFileArg[] files = getHTTPFiles(); if(HTTPConstants.POST.equals(getMethod()) && (getDoMultipartPost() || (files.length > 0 && !getSendFileAsPostBody()))) { return true; } return false; } public void setProtocol(String value) { setProperty(PROTOCOL, value.toLowerCase(java.util.Locale.ENGLISH)); } /** * Gets the protocol, with default. * * @return the protocol */ public String getProtocol() { String protocol = getPropertyAsString(PROTOCOL); if (protocol == null || protocol.length() == 0 ) { return DEFAULT_PROTOCOL; } return protocol; } /** * Sets the Path attribute of the UrlConfig object Also calls parseArguments * to extract and store any query arguments * * @param path * The new Path value */ public void setPath(String path) { // We know that URL arguments should always be encoded in UTF-8 according to spec setPath(path, EncoderCache.URL_ARGUMENT_ENCODING); } /** * Sets the PATH property; also calls {@link #parseArguments(String, String)} * to extract and store any query arguments if the request is a GET or DELETE. * * @param path * The new Path value * @param contentEncoding * The encoding used for the querystring parameter values */ public void setPath(String path, String contentEncoding) { if (HTTPConstants.GET.equals(getMethod()) || HTTPConstants.DELETE.equals(getMethod())) { int index = path.indexOf(QRY_PFX); if (index > -1) { setProperty(PATH, path.substring(0, index)); // Parse the arguments in querystring, assuming specified encoding for values parseArguments(path.substring(index + 1), contentEncoding); } else { setProperty(PATH, path); } } else { setProperty(PATH, path); } } public String getPath() { String p = getPropertyAsString(PATH); return encodeSpaces(p); } public void setFollowRedirects(boolean value) { setProperty(new BooleanProperty(FOLLOW_REDIRECTS, value)); } public boolean getFollowRedirects() { return getPropertyAsBoolean(FOLLOW_REDIRECTS); } public void setAutoRedirects(boolean value) { setProperty(new BooleanProperty(AUTO_REDIRECTS, value)); } public boolean getAutoRedirects() { return getPropertyAsBoolean(AUTO_REDIRECTS); } public void setMethod(String value) { setProperty(METHOD, value); } public String getMethod() { return getPropertyAsString(METHOD); } /** * Sets the value of the encoding to be used for the content. * * @param charsetName the name of the encoding to be used */ public void setContentEncoding(String charsetName) { setProperty(CONTENT_ENCODING, charsetName); } /** * * @return the encoding of the content, i.e. its charset name */ public String getContentEncoding() { return getPropertyAsString(CONTENT_ENCODING); } public void setUseKeepAlive(boolean value) { setProperty(new BooleanProperty(USE_KEEPALIVE, value)); } public boolean getUseKeepAlive() { return getPropertyAsBoolean(USE_KEEPALIVE); } public void setDoMultipartPost(boolean value) { setProperty(new BooleanProperty(DO_MULTIPART_POST, value)); } public boolean getDoMultipartPost() { return getPropertyAsBoolean(DO_MULTIPART_POST, false); } public void setDoBrowserCompatibleMultipart(boolean value) { setProperty(BROWSER_COMPATIBLE_MULTIPART, value, BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT); } public boolean getDoBrowserCompatibleMultipart() { return getPropertyAsBoolean(BROWSER_COMPATIBLE_MULTIPART, BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT); } public void setMonitor(String value) { this.setProperty(MONITOR, value); } public void setMonitor(boolean truth) { this.setProperty(MONITOR, truth); } public String getMonitor() { return this.getPropertyAsString(MONITOR); } public boolean isMonitor() { return this.getPropertyAsBoolean(MONITOR); } public void setImplementation(String value) { this.setProperty(IMPLEMENTATION, value); } public String getImplementation() { return this.getPropertyAsString(IMPLEMENTATION); } public boolean useMD5() { return this.getPropertyAsBoolean(MD5, false); } public void setMD5(boolean truth) { this.setProperty(MD5, truth, false); } /** * Add an argument which has already been encoded */ public void addEncodedArgument(String name, String value) { this.addEncodedArgument(name, value, ARG_VAL_SEP); } /** * Creates an HTTPArgument and adds it to the current set {@link #getArguments()} of arguments. * * @param name - the parameter name * @param value - the parameter value * @param metaData - normally just '=' * @param contentEncoding - the encoding, may be null */ public void addEncodedArgument(String name, String value, String metaData, String contentEncoding) { if (log.isDebugEnabled()){ log.debug("adding argument: name: " + name + " value: " + value + " metaData: " + metaData + " contentEncoding: " + contentEncoding); } HTTPArgument arg = null; final boolean nonEmptyEncoding = !StringUtils.isEmpty(contentEncoding); if(nonEmptyEncoding) { arg = new HTTPArgument(name, value, metaData, true, contentEncoding); } else { arg = new HTTPArgument(name, value, metaData, true); } // Check if there are any difference between name and value and their encoded name and value String valueEncoded = null; if(nonEmptyEncoding) { try { valueEncoded = arg.getEncodedValue(contentEncoding); } catch (UnsupportedEncodingException e) { log.warn("Unable to get encoded value using encoding " + contentEncoding); valueEncoded = arg.getEncodedValue(); } } else { valueEncoded = arg.getEncodedValue(); } // If there is no difference, we mark it as not needing encoding if (arg.getName().equals(arg.getEncodedName()) && arg.getValue().equals(valueEncoded)) { arg.setAlwaysEncoded(false); } this.getArguments().addArgument(arg); } public void addEncodedArgument(String name, String value, String metaData) { this.addEncodedArgument(name, value, metaData, null); } public void addNonEncodedArgument(String name, String value, String metadata) { HTTPArgument arg = new HTTPArgument(name, value, metadata, false); arg.setAlwaysEncoded(false); this.getArguments().addArgument(arg); } public void addArgument(String name, String value) { this.getArguments().addArgument(new HTTPArgument(name, value)); } public void addArgument(String name, String value, String metadata) { this.getArguments().addArgument(new HTTPArgument(name, value, metadata)); } public boolean hasArguments() { return getArguments().getArgumentCount() > 0; } @Override public void addTestElement(TestElement el) { if (el instanceof CookieManager) { setCookieManager((CookieManager) el); } else if (el instanceof CacheManager) { setCacheManager((CacheManager) el); } else if (el instanceof HeaderManager) { setHeaderManager((HeaderManager) el); } else if (el instanceof AuthManager) { setAuthManager((AuthManager) el); } else { super.addTestElement(el); } } /** * {@inheritDoc} *

        * Clears the Header Manager property so subsequent loops don't keep merging more elements */ @Override public void clearTestElementChildren(){ removeProperty(HEADER_MANAGER); } public void setPort(int value) { setProperty(new IntegerProperty(PORT, value)); } /** * Get the port number for a URL, applying defaults if necessary. * (Called by CookieManager.) * @param protocol from {@link URL#getProtocol()} * @param port number from {@link URL#getPort()} * @return the default port for the protocol */ public static int getDefaultPort(String protocol,int port){ if (port==URL_UNSPECIFIED_PORT){ return protocol.equalsIgnoreCase(HTTPConstants.PROTOCOL_HTTP) ? HTTPConstants.DEFAULT_HTTP_PORT : protocol.equalsIgnoreCase(HTTPConstants.PROTOCOL_HTTPS) ? HTTPConstants.DEFAULT_HTTPS_PORT : port; } return port; } /** * Get the port number from the port string, allowing for trailing blanks. * * @return port number or UNSPECIFIED_PORT (== 0) */ public int getPortIfSpecified() { String port_s = getPropertyAsString(PORT, UNSPECIFIED_PORT_AS_STRING); try { return Integer.parseInt(port_s.trim()); } catch (NumberFormatException e) { return UNSPECIFIED_PORT; } } /** * Tell whether the default port for the specified protocol is used * * @return true if the default port number for the protocol is used, false otherwise */ public boolean isProtocolDefaultPort() { final int port = getPortIfSpecified(); final String protocol = getProtocol(); if (port == UNSPECIFIED_PORT || (HTTPConstants.PROTOCOL_HTTP.equalsIgnoreCase(protocol) && port == HTTPConstants.DEFAULT_HTTP_PORT) || (HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(protocol) && port == HTTPConstants.DEFAULT_HTTPS_PORT)) { return true; } return false; } /** * Get the port; apply the default for the protocol if necessary. * * @return the port number, with default applied if required. */ public int getPort() { final int port = getPortIfSpecified(); if (port == UNSPECIFIED_PORT) { String prot = getProtocol(); if (HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(prot)) { return HTTPConstants.DEFAULT_HTTPS_PORT; } if (!HTTPConstants.PROTOCOL_HTTP.equalsIgnoreCase(prot)) { log.warn("Unexpected protocol: "+prot); // TODO - should this return something else? } return HTTPConstants.DEFAULT_HTTP_PORT; } return port; } public void setDomain(String value) { setProperty(DOMAIN, value); } public String getDomain() { return getPropertyAsString(DOMAIN); } public void setConnectTimeout(String value) { setProperty(CONNECT_TIMEOUT, value, ""); } public int getConnectTimeout() { return getPropertyAsInt(CONNECT_TIMEOUT, 0); } public void setResponseTimeout(String value) { setProperty(RESPONSE_TIMEOUT, value, ""); } public int getResponseTimeout() { return getPropertyAsInt(RESPONSE_TIMEOUT, 0); } public String getProxyHost() { return getPropertyAsString(PROXYHOST); } public int getProxyPortInt() { return getPropertyAsInt(PROXYPORT, 0); } public String getProxyUser() { return getPropertyAsString(PROXYUSER); } public String getProxyPass() { return getPropertyAsString(PROXYPASS); } public void setArguments(Arguments value) { setProperty(new TestElementProperty(ARGUMENTS, value)); } public Arguments getArguments() { return (Arguments) getProperty(ARGUMENTS).getObjectValue(); } /** * @param value Boolean that indicates body will be sent as is */ public void setPostBodyRaw(boolean value) { setProperty(POST_BODY_RAW, value, POST_BODY_RAW_DEFAULT); } /** * @return boolean that indicates body will be sent as is */ public boolean getPostBodyRaw() { return getPropertyAsBoolean(POST_BODY_RAW, POST_BODY_RAW_DEFAULT); } public void setAuthManager(AuthManager value) { AuthManager mgr = getAuthManager(); if (mgr != null) { log.warn("Existing AuthManager " + mgr.getName() + " superseded by " + value.getName()); } setProperty(new TestElementProperty(AUTH_MANAGER, value)); } public AuthManager getAuthManager() { return (AuthManager) getProperty(AUTH_MANAGER).getObjectValue(); } public void setHeaderManager(HeaderManager value) { HeaderManager mgr = getHeaderManager(); if (mgr != null) { value = mgr.merge(value, true); if (log.isDebugEnabled()) { log.debug("Existing HeaderManager '" + mgr.getName() + "' merged with '" + value.getName() + "'"); for (int i=0; i < value.getHeaders().size(); i++) { log.debug(" " + value.getHeader(i).getName() + "=" + value.getHeader(i).getValue()); } } } setProperty(new TestElementProperty(HEADER_MANAGER, value)); } public HeaderManager getHeaderManager() { return (HeaderManager) getProperty(HEADER_MANAGER).getObjectValue(); } public void setCookieManager(CookieManager value) { CookieManager mgr = getCookieManager(); if (mgr != null) { log.warn("Existing CookieManager " + mgr.getName() + " superseded by " + value.getName()); } setProperty(new TestElementProperty(COOKIE_MANAGER, value)); } public CookieManager getCookieManager() { return (CookieManager) getProperty(COOKIE_MANAGER).getObjectValue(); } public void setCacheManager(CacheManager value) { CacheManager mgr = getCacheManager(); if (mgr != null) { log.warn("Existing CacheManager " + mgr.getName() + " superseded by " + value.getName()); } setProperty(new TestElementProperty(CACHE_MANAGER, value)); } public CacheManager getCacheManager() { return (CacheManager) getProperty(CACHE_MANAGER).getObjectValue(); } public boolean isImageParser() { return getPropertyAsBoolean(IMAGE_PARSER, false); } public void setImageParser(boolean parseImages) { setProperty(IMAGE_PARSER, parseImages, false); } /** * Get the regular expression URLs must match. * * @return regular expression (or empty) string */ public String getEmbeddedUrlRE() { return getPropertyAsString(EMBEDDED_URL_RE,""); } public void setEmbeddedUrlRE(String regex) { setProperty(new StringProperty(EMBEDDED_URL_RE, regex)); } /** * Populates the provided HTTPSampleResult with details from the Exception. * Does not create a new instance, so should not be used directly to add a subsample. * * @param e * Exception representing the error. * @param res * SampleResult to be modified * @return the modified sampling result containing details of the Exception. */ protected HTTPSampleResult errorResult(Throwable e, HTTPSampleResult res) { res.setSampleLabel("Error: " + res.getSampleLabel()); res.setDataType(SampleResult.TEXT); ByteArrayOutputStream text = new ByteArrayOutputStream(200); e.printStackTrace(new PrintStream(text)); res.setResponseData(text.toByteArray()); res.setResponseCode(NON_HTTP_RESPONSE_CODE+": "+e.getClass().getName()); res.setResponseMessage(NON_HTTP_RESPONSE_MESSAGE+": "+e.getMessage()); res.setSuccessful(false); res.setMonitor(this.isMonitor()); return res; } private static final String HTTP_PREFIX = HTTPConstants.PROTOCOL_HTTP+"://"; // $NON-NLS-1$ private static final String HTTPS_PREFIX = HTTPConstants.PROTOCOL_HTTPS+"://"; // $NON-NLS-1$ // Bug 51939 private static final boolean SEPARATE_CONTAINER = JMeterUtils.getPropDefault("httpsampler.separate.container", true); // $NON-NLS-1$ /** * Get the URL, built from its component parts. * *

        * As a special case, if the path starts with "http[s]://", * then the path is assumed to be the entire URL. *

        * * @return The URL to be requested by this sampler. * @throws MalformedURLException */ public URL getUrl() throws MalformedURLException { StringBuilder pathAndQuery = new StringBuilder(100); String path = this.getPath(); // Hack to allow entire URL to be provided in host field if (path.startsWith(HTTP_PREFIX) || path.startsWith(HTTPS_PREFIX)){ return new URL(path); } String domain = getDomain(); String protocol = getProtocol(); if (PROTOCOL_FILE.equalsIgnoreCase(protocol)) { domain=null; // allow use of relative file URLs } else { // HTTP URLs must be absolute, allow file to be relative if (!path.startsWith("/")){ // $NON-NLS-1$ pathAndQuery.append("/"); // $NON-NLS-1$ } } pathAndQuery.append(path); // Add the query string if it is a HTTP GET or DELETE request if(HTTPConstants.GET.equals(getMethod()) || HTTPConstants.DELETE.equals(getMethod())) { // Get the query string encoded in specified encoding // If no encoding is specified by user, we will get it // encoded in UTF-8, which is what the HTTP spec says String queryString = getQueryString(getContentEncoding()); if(queryString.length() > 0) { if (path.indexOf(QRY_PFX) > -1) {// Already contains a prefix pathAndQuery.append(QRY_SEP); } else { pathAndQuery.append(QRY_PFX); } pathAndQuery.append(queryString); } } // If default port for protocol is used, we do not include port in URL if(isProtocolDefaultPort()) { return new URL(protocol, domain, pathAndQuery.toString()); } return new URL(protocol, domain, getPort(), pathAndQuery.toString()); } /** * Gets the QueryString attribute of the UrlConfig object, using * UTF-8 to encode the URL * * @return the QueryString value */ public String getQueryString() { // We use the encoding which should be used according to the HTTP spec, which is UTF-8 return getQueryString(EncoderCache.URL_ARGUMENT_ENCODING); } /** * Gets the QueryString attribute of the UrlConfig object, using the * specified encoding to encode the parameter values put into the URL * * @param contentEncoding the encoding to use for encoding parameter values * @return the QueryString value */ public String getQueryString(String contentEncoding) { // Check if the sampler has a specified content encoding if(JOrphanUtils.isBlank(contentEncoding)) { // We use the encoding which should be used according to the HTTP spec, which is UTF-8 contentEncoding = EncoderCache.URL_ARGUMENT_ENCODING; } StringBuilder buf = new StringBuilder(); PropertyIterator iter = getArguments().iterator(); boolean first = true; while (iter.hasNext()) { HTTPArgument item = null; /* * N.B. Revision 323346 introduced the ClassCast check, but then used iter.next() * to fetch the item to be cast, thus skipping the element that did not cast. * Reverted to work more like the original code, but with the check in place. * Added a warning message so can track whether it is necessary */ Object objectValue = iter.next().getObjectValue(); try { item = (HTTPArgument) objectValue; } catch (ClassCastException e) { log.warn("Unexpected argument type: "+objectValue.getClass().getName()); item = new HTTPArgument((Argument) objectValue); } final String encodedName = item.getEncodedName(); if (encodedName.length() == 0) { continue; // Skip parameters with a blank name (allows use of optional variables in parameter lists) } if (!first) { buf.append(QRY_SEP); } else { first = false; } buf.append(encodedName); if (item.getMetaData() == null) { buf.append(ARG_VAL_SEP); } else { buf.append(item.getMetaData()); } // Encode the parameter value in the specified content encoding try { buf.append(item.getEncodedValue(contentEncoding)); } catch(UnsupportedEncodingException e) { log.warn("Unable to encode parameter in encoding " + contentEncoding + ", parameter value not included in query string"); } } return buf.toString(); } // Mark Walsh 2002-08-03, modified to also parse a parameter name value // string, where string contains only the parameter name and no equal sign. /** * This method allows a proxy server to send over the raw text from a * browser's output stream to be parsed and stored correctly into the * UrlConfig object. * * For each name found, addArgument() is called * * @param queryString - * the query string, might be the post body of a http post request. * @param contentEncoding - * the content encoding of the query string; * if non-null then it is used to decode the */ public void parseArguments(String queryString, String contentEncoding) { String[] args = JOrphanUtils.split(queryString, QRY_SEP); for (int i = 0; i < args.length; i++) { // need to handle four cases: // - string contains name=value // - string contains name= // - string contains name // - empty string String metaData; // records the existance of an equal sign String name; String value; int length = args[i].length(); int endOfNameIndex = args[i].indexOf(ARG_VAL_SEP); if (endOfNameIndex != -1) {// is there a separator? // case of name=value, name= metaData = ARG_VAL_SEP; name = args[i].substring(0, endOfNameIndex); value = args[i].substring(endOfNameIndex + 1, length); } else { metaData = ""; name=args[i]; value=""; } if (name.length() > 0) { // If we know the encoding, we can decode the argument value, // to make it easier to read for the user if(!StringUtils.isEmpty(contentEncoding)) { addEncodedArgument(name, value, metaData, contentEncoding); } else { // If we do not know the encoding, we just use the encoded value // The browser has already done the encoding, so save the values as is addNonEncodedArgument(name, value, metaData); } } } } public void parseArguments(String queryString) { // We do not know the content encoding of the query string parseArguments(queryString, null); } @Override public String toString() { try { StringBuilder stringBuffer = new StringBuilder(); stringBuffer.append(this.getUrl().toString()); // Append body if it is a post or put if(HTTPConstants.POST.equals(getMethod()) || HTTPConstants.PUT.equals(getMethod())) { stringBuffer.append("\nQuery Data: "); stringBuffer.append(getQueryString()); } return stringBuffer.toString(); } catch (MalformedURLException e) { return ""; } } /** * Do a sampling and return its results. * * @param e * Entry to be sampled * @return results of the sampling */ public SampleResult sample(Entry e) { return sample(); } /** * Perform a sample, and return the results * * @return results of the sampling */ public SampleResult sample() { SampleResult res = null; try { res = sample(getUrl(), getMethod(), false, 0); res.setSampleLabel(getName()); return res; } catch (Exception e) { return errorResult(e, new HTTPSampleResult()); } } /** * Samples the URL passed in and stores the result in * HTTPSampleResult, following redirects and downloading * page resources as appropriate. *

        * When getting a redirect target, redirects are not followed and resources * are not downloaded. The caller will take care of this. * * @param u * URL to sample * @param method * HTTP method: GET, POST,... * @param areFollowingRedirect * whether we're getting a redirect target * @param depth * Depth of this target in the frame structure. Used only to * prevent infinite recursion. * @return results of the sampling */ protected abstract HTTPSampleResult sample(URL u, String method, boolean areFollowingRedirect, int depth); /** * Download the resources of an HTML page. * * @param res * result of the initial request - must contain an HTML response * @param container * for storing the results, if any * @param frameDepth * Depth of this target in the frame structure. Used only to * prevent infinite recursion. * @return res if no resources exist, otherwise the "Container" result with one subsample per request issued */ protected HTTPSampleResult downloadPageResources(HTTPSampleResult res, HTTPSampleResult container, int frameDepth) { Iterator urls = null; try { final byte[] responseData = res.getResponseData(); if (responseData.length > 0){ // Bug 39205 String parserName = getParserClass(res); if(parserName != null) { final HTMLParser parser = parserName.length() > 0 ? // we have a name HTMLParser.getParser(parserName) : HTMLParser.getParser(); // we don't; use the default parser urls = parser.getEmbeddedResourceURLs(responseData, res.getURL(), res.getDataEncodingWithDefault()); } } } catch (HTMLParseException e) { // Don't break the world just because this failed: res.addSubResult(errorResult(e, new HTTPSampleResult(res))); setParentSampleSuccess(res, false); } // Iterate through the URLs and download each image: if (urls != null && urls.hasNext()) { if (container == null) { // TODO needed here because currently done on sample completion in JMeterThread, // but that only catches top-level samples. res.setThreadName(Thread.currentThread().getName()); container = new HTTPSampleResult(res); container.addRawSubResult(res); } res = container; // Get the URL matcher String re=getEmbeddedUrlRE(); Perl5Matcher localMatcher = null; Pattern pattern = null; if (re.length()>0){ try { pattern = JMeterUtils.getPattern(re); localMatcher = JMeterUtils.getMatcher();// don't fetch unless pattern compiles } catch (MalformedCachePatternException e) { log.warn("Ignoring embedded URL match string: "+e.getMessage()); } } // For concurrent get resources final List> liste = new ArrayList>(); while (urls.hasNext()) { Object binURL = urls.next(); // See catch clause below try { URL url = (URL) binURL; if (url == null) { log.warn("Null URL detected (should not happen)"); } else { String urlstr = url.toString(); String urlStrEnc=encodeSpaces(urlstr); if (!urlstr.equals(urlStrEnc)){// There were some spaces in the URL try { url = new URL(urlStrEnc); } catch (MalformedURLException e) { res.addSubResult(errorResult(new Exception(urlStrEnc + " is not a correct URI"), new HTTPSampleResult(res))); setParentSampleSuccess(res, false); continue; } } // I don't think localMatcher can be null here, but check just in case if (pattern != null && localMatcher != null && !localMatcher.matches(urlStrEnc, pattern)) { continue; // we have a pattern and the URL does not match, so skip it } if (isConcurrentDwn()) { // if concurrent download emb. resources, add to a list for async gets later liste.add(new ASyncSample(url, HTTPConstants.GET, false, frameDepth + 1, getCookieManager(), this)); } else { // default: serial download embedded resources HTTPSampleResult binRes = sample(url, HTTPConstants.GET, false, frameDepth + 1); res.addSubResult(binRes); setParentSampleSuccess(res, res.isSuccessful() && binRes.isSuccessful()); } } } catch (ClassCastException e) { // TODO can this happen? res.addSubResult(errorResult(new Exception(binURL + " is not a correct URI"), new HTTPSampleResult(res))); setParentSampleSuccess(res, false); continue; } } // IF for download concurrent embedded resources if (isConcurrentDwn()) { int poolSize = CONCURRENT_POOL_SIZE; // init with default value try { poolSize = Integer.parseInt(getConcurrentPool()); } catch (NumberFormatException nfe) { log.warn("Concurrent download resources selected, "// $NON-NLS-1$ + "but pool size value is bad. Use default value");// $NON-NLS-1$ } // Thread pool Executor to get resources // use a LinkedBlockingQueue, note: max pool size doesn't effect final ThreadPoolExecutor exec = new ThreadPoolExecutor( poolSize, poolSize, KEEPALIVETIME, TimeUnit.SECONDS, new LinkedBlockingQueue(), new ThreadFactory() { public Thread newThread(final Runnable r) { Thread t = new CleanerThread(new Runnable() { public void run() { try { r.run(); } finally { ((CleanerThread)Thread.currentThread()).notifyThreadEnd(); } } }); return t; } }); boolean tasksCompleted = false; try { // sample all resources with threadpool final List> retExec = exec.invokeAll(liste); // call normal shutdown (wait ending all tasks) exec.shutdown(); // put a timeout if tasks couldn't terminate exec.awaitTermination(AWAIT_TERMINATION_TIMEOUT, TimeUnit.SECONDS); CookieManager cookieManager = getCookieManager(); // add result to main sampleResult for (Future future : retExec) { AsynSamplerResultHolder binRes; try { binRes = future.get(1, TimeUnit.MILLISECONDS); if(cookieManager != null) { CollectionProperty cookies = binRes.getCookies(); PropertyIterator iter = cookies.iterator(); while (iter.hasNext()) { Cookie cookie = (Cookie) iter.next().getObjectValue(); cookieManager.add(cookie) ; } } res.addSubResult(binRes.getResult()); setParentSampleSuccess(res, res.isSuccessful() && binRes.getResult().isSuccessful()); } catch (TimeoutException e) { errorResult(e, res); } } tasksCompleted = exec.awaitTermination(1, TimeUnit.MILLISECONDS); // did all the tasks finish? } catch (InterruptedException ie) { log.warn("Interruped fetching embedded resources", ie); // $NON-NLS-1$ } catch (ExecutionException ee) { log.warn("Execution issue when fetching embedded resources", ee); // $NON-NLS-1$ } finally { if (!tasksCompleted) { exec.shutdownNow(); // kill any remaining tasks } } } } return res; } /** * Set parent successful attribute based on IGNORE_FAILED_EMBEDDED_RESOURCES parameter * @param res {@link HTTPSampleResult} * @param initialValue boolean */ private void setParentSampleSuccess(HTTPSampleResult res, boolean initialValue) { if(!IGNORE_FAILED_EMBEDDED_RESOURCES) { res.setSuccessful(initialValue); } } /* * @param res HTTPSampleResult to check * @return parser class name (may be "") or null if entry does not exist */ private String getParserClass(HTTPSampleResult res) { final String ct = res.getMediaType(); return parsersForType.get(ct); } // TODO: make static? protected String encodeSpaces(String path) { return JOrphanUtils.replaceAllChars(path, ' ', "%20"); // $NON-NLS-1$ } /** * {@inheritDoc} */ public void testEnded() { } /** * {@inheritDoc} */ public void testEnded(String host) { testEnded(); } /** * {@inheritDoc} */ public void testIterationStart(LoopIterationEvent event) { if (!USE_CACHED_SSL_CONTEXT) { JsseSSLManager sslMgr = (JsseSSLManager) SSLManager.getInstance(); sslMgr.resetContext(); notifySSLContextWasReset(); } } /** * Called by testIterationStart if the SSL Context was reset. * * This implementation does nothing. */ protected void notifySSLContextWasReset() { // NOOP } /** * {@inheritDoc} */ public void testStarted() { } /** * {@inheritDoc} */ public void testStarted(String host) { testStarted(); } /** * {@inheritDoc} */ @Override public Object clone() { HTTPSamplerBase base = (HTTPSamplerBase) super.clone(); return base; } /** * Iteratively download the redirect targets of a redirect response. *

        * The returned result will contain one subsample for each request issued, * including the original one that was passed in. It will be an * HTTPSampleResult that should mostly look as if the final destination of * the redirect chain had been obtained in a single shot. * * @param res * result of the initial request - must be a redirect response * @param frameDepth * Depth of this target in the frame structure. Used only to * prevent infinite recursion. * @return "Container" result with one subsample per request issued */ protected HTTPSampleResult followRedirects(HTTPSampleResult res, int frameDepth) { HTTPSampleResult totalRes = new HTTPSampleResult(res); totalRes.addRawSubResult(res); HTTPSampleResult lastRes = res; int redirect; for (redirect = 0; redirect < MAX_REDIRECTS; redirect++) { boolean invalidRedirectUrl = false; // Browsers seem to tolerate Location headers with spaces, // replacing them automatically with %20. We want to emulate // this behaviour. String location = lastRes.getRedirectLocation(); if (REMOVESLASHDOTDOT) { location = ConversionUtils.removeSlashDotDot(location); } location = encodeSpaces(location); try { lastRes = sample(ConversionUtils.makeRelativeURL(lastRes.getURL(), location), HTTPConstants.GET, true, frameDepth); } catch (MalformedURLException e) { errorResult(e, lastRes); // The redirect URL we got was not a valid URL invalidRedirectUrl = true; } if (lastRes.getSubResults() != null && lastRes.getSubResults().length > 0) { SampleResult[] subs = lastRes.getSubResults(); for (int i = 0; i < subs.length; i++) { totalRes.addSubResult(subs[i]); } } else { // Only add sample if it is a sample of valid url redirect, i.e. that // we have actually sampled the URL if(!invalidRedirectUrl) { totalRes.addSubResult(lastRes); } } if (!lastRes.isRedirect()) { break; } } if (redirect >= MAX_REDIRECTS) { lastRes = errorResult(new IOException("Exceeeded maximum number of redirects: " + MAX_REDIRECTS), new HTTPSampleResult(lastRes)); totalRes.addSubResult(lastRes); } // Now populate the any totalRes fields that need to // come from lastRes: totalRes.setSampleLabel(totalRes.getSampleLabel() + "->" + lastRes.getSampleLabel()); // The following three can be discussed: should they be from the // first request or from the final one? I chose to do it this way // because that's what browsers do: they show the final URL of the // redirect chain in the location field. totalRes.setURL(lastRes.getURL()); totalRes.setHTTPMethod(lastRes.getHTTPMethod()); totalRes.setQueryString(lastRes.getQueryString()); totalRes.setRequestHeaders(lastRes.getRequestHeaders()); totalRes.setResponseData(lastRes.getResponseData()); totalRes.setResponseCode(lastRes.getResponseCode()); totalRes.setSuccessful(lastRes.isSuccessful()); totalRes.setResponseMessage(lastRes.getResponseMessage()); totalRes.setDataType(lastRes.getDataType()); totalRes.setResponseHeaders(lastRes.getResponseHeaders()); totalRes.setContentType(lastRes.getContentType()); totalRes.setDataEncoding(lastRes.getDataEncodingNoDefault()); return totalRes; } /** * Follow redirects and download page resources if appropriate. this works, * but the container stuff here is what's doing it. followRedirects() is * actually doing the work to make sure we have only one container to make * this work more naturally, I think this method - sample() - needs to take * an HTTPSamplerResult container parameter instead of a * boolean:areFollowingRedirect. * * @param areFollowingRedirect * @param frameDepth * @param res * @return the sample result */ protected HTTPSampleResult resultProcessing(boolean areFollowingRedirect, int frameDepth, HTTPSampleResult res) { boolean wasRedirected = false; if (!areFollowingRedirect) { if (res.isRedirect()) { log.debug("Location set to - " + res.getRedirectLocation()); if (getFollowRedirects()) { res = followRedirects(res, frameDepth); areFollowingRedirect = true; wasRedirected = true; } } } if (isImageParser() && (SampleResult.TEXT).equals(res.getDataType()) && res.isSuccessful()) { if (frameDepth > MAX_FRAME_DEPTH) { res.addSubResult(errorResult(new Exception("Maximum frame/iframe nesting depth exceeded."), new HTTPSampleResult(res))); } else { // Only download page resources if we were not redirected. // If we were redirected, the page resources have already been // downloaded for the sample made for the redirected url // otherwise, use null so the container is created if necessary unless // the flag is false, in which case revert to broken 2.1 behaviour // Bug 51939 - https://issues.apache.org/bugzilla/show_bug.cgi?id=51939 if(!wasRedirected) { HTTPSampleResult container = (HTTPSampleResult) ( areFollowingRedirect ? res.getParent() : SEPARATE_CONTAINER ? null : res); res = downloadPageResources(res, container, frameDepth); } } } return res; } /** * Determine if the HTTP status code is successful or not * i.e. in range 200 to 399 inclusive * * @return whether in range 200-399 or not */ protected boolean isSuccessCode(int code){ return (code >= 200 && code <= 399); } protected static String encodeBackSlashes(String value) { StringBuilder newValue = new StringBuilder(); for (int i = 0; i < value.length(); i++) { char charAt = value.charAt(i); if (charAt == '\\') { // $NON-NLS-1$ newValue.append("\\\\"); // $NON-NLS-1$ } else { newValue.append(charAt); } } return newValue.toString(); } /* * Method to set files list to be uploaded. * * @param value * HTTPFileArgs object that stores file list to be uploaded. */ private void setHTTPFileArgs(HTTPFileArgs value) { if (value.getHTTPFileArgCount() > 0){ setProperty(new TestElementProperty(FILE_ARGS, value)); } else { removeProperty(FILE_ARGS); // no point saving an empty list } } /* * Method to get files list to be uploaded. */ private HTTPFileArgs getHTTPFileArgs() { return (HTTPFileArgs) getProperty(FILE_ARGS).getObjectValue(); } /** * Get the collection of files as a list. * The list is built up from the filename/filefield/mimetype properties, * plus any additional entries saved in the FILE_ARGS property. * * If there are no valid file entries, then an empty list is returned. * * @return an array of file arguments (never null) */ public HTTPFileArg[] getHTTPFiles() { final HTTPFileArgs fileArgs = getHTTPFileArgs(); return fileArgs == null ? new HTTPFileArg[] {} : fileArgs.asArray(); } public int getHTTPFileCount(){ return getHTTPFiles().length; } /** * Saves the list of files. * The first file is saved in the Filename/field/mimetype properties. * Any additional files are saved in the FILE_ARGS array. * * @param files list of files to save */ public void setHTTPFiles(HTTPFileArg[] files) { HTTPFileArgs fileArgs = new HTTPFileArgs(); // Weed out the empty files if (files.length > 0) { for(int i=0; i < files.length; i++){ HTTPFileArg file = files[i]; if (file.isNotEmpty()){ fileArgs.addHTTPFileArg(file); } } } setHTTPFileArgs(fileArgs); } public static String[] getValidMethodsAsArray(){ return METHODLIST.toArray(new String[METHODLIST.size()]); } public static boolean isSecure(String protocol){ return HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(protocol); } public static boolean isSecure(URL url){ return isSecure(url.getProtocol()); } // Implement these here, to avoid re-implementing for sub-classes // (previously these were implemented in all TestElements) public void threadStarted(){ } public void threadFinished(){ } /** * Read response from the input stream, converting to MD5 digest if the useMD5 property is set. * * For the MD5 case, the result byte count is set to the size of the original response. * * Closes the inputStream * * @param sampleResult * @param in input stream * @param length expected input length or zero * @return the response or the MD5 of the response * @throws IOException */ public byte[] readResponse(SampleResult sampleResult, InputStream in, int length) throws IOException { try { byte[] readBuffer = new byte[8192]; // 8kB is the (max) size to have the latency ('the first packet') int bufferSize=32;// Enough for MD5 MessageDigest md=null; boolean asMD5 = useMD5(); if (asMD5) { try { md = MessageDigest.getInstance("MD5"); //$NON-NLS-1$ } catch (NoSuchAlgorithmException e) { log.error("Should not happen - could not find MD5 digest", e); asMD5=false; } } else { if (length <= 0) {// may also happen if long value > int.max bufferSize = 4 * 1024; } else { bufferSize = length; } } ByteArrayOutputStream w = new ByteArrayOutputStream(bufferSize); int bytesRead = 0; int totalBytes = 0; boolean first = true; while ((bytesRead = in.read(readBuffer)) > -1) { if (first) { sampleResult.latencyEnd(); first = false; } if (asMD5 && md != null) { md.update(readBuffer, 0 , bytesRead); totalBytes += bytesRead; } else { w.write(readBuffer, 0, bytesRead); } } if (first){ // Bug 46838 - if there was no data, still need to set latency sampleResult.latencyEnd(); } in.close(); w.flush(); if (asMD5 && md != null) { byte[] md5Result = md.digest(); w.write(JOrphanUtils.baToHexBytes(md5Result)); sampleResult.setBytes(totalBytes); } w.close(); return w.toByteArray(); } finally { IOUtils.closeQuietly(in); } } /** * JMeter 2.3.1 and earlier only had fields for one file on the GUI: * - FILE_NAME * - FILE_FIELD * - MIMETYPE * These were stored in their own individual properties. * * Version 2.3.3 introduced a list of files, each with their own path, name and mimetype. * * In order to maintain backwards compatibility of test plans, the 3 original properties * were retained; additional file entries are stored in an HTTPFileArgs class. * The HTTPFileArgs class was only present if there is more than 1 file; this means that * such test plans are backward compatible. * * Versions after 2.3.4 dispense with the original set of 3 properties. * Test plans that use them are converted to use a single HTTPFileArgs list. * * @see HTTPSamplerBaseConverter */ void mergeFileProperties() { JMeterProperty fileName = getProperty(FILE_NAME); JMeterProperty paramName = getProperty(FILE_FIELD); JMeterProperty mimeType = getProperty(MIMETYPE); HTTPFileArg oldStyleFile = new HTTPFileArg(fileName, paramName, mimeType); HTTPFileArgs fileArgs = getHTTPFileArgs(); HTTPFileArgs allFileArgs = new HTTPFileArgs(); if(oldStyleFile.isNotEmpty()) { // OK, we have an old-style file definition allFileArgs.addHTTPFileArg(oldStyleFile); // save it // Now deal with any additional file arguments if(fileArgs != null) { HTTPFileArg[] infiles = fileArgs.asArray(); for (int i = 0; i < infiles.length; i++){ allFileArgs.addHTTPFileArg(infiles[i]); } } } else { if(fileArgs != null) { // for new test plans that don't have FILE/PARAM/MIME properties allFileArgs = fileArgs; } } // Updated the property lists setHTTPFileArgs(allFileArgs); removeProperty(FILE_FIELD); removeProperty(FILE_NAME); removeProperty(MIMETYPE); } /** * set IP source to use - does not apply to Java HTTP implementation currently */ public void setIpSource(String value) { setProperty(IP_SOURCE, value, ""); } /** * get IP source to use - does not apply to Java HTTP implementation currently */ public String getIpSource() { return getPropertyAsString(IP_SOURCE,""); } /** * Return if used a concurrent thread pool to get embedded resources. * * @return true if used */ public boolean isConcurrentDwn() { return getPropertyAsBoolean(CONCURRENT_DWN, false); } public void setConcurrentDwn(boolean concurrentDwn) { setProperty(CONCURRENT_DWN, concurrentDwn, false); } /** * Get the pool size for concurrent thread pool to get embedded resources. * * @return the pool size */ public String getConcurrentPool() { return getPropertyAsString(CONCURRENT_POOL,CONCURRENT_POOL_DEFAULT); } public void setConcurrentPool(String poolSize) { setProperty(CONCURRENT_POOL, poolSize, CONCURRENT_POOL_DEFAULT); } /** * Callable class to sample asynchronously resources embedded * */ private static class ASyncSample implements Callable { final private URL url; final private String method; final private boolean areFollowingRedirect; final private int depth; private final HTTPSamplerBase sampler; private final JMeterContext jmeterContextOfParentThread; ASyncSample(URL url, String method, boolean areFollowingRedirect, int depth, CookieManager cookieManager, HTTPSamplerBase base){ this.url = url; this.method = method; this.areFollowingRedirect = areFollowingRedirect; this.depth = depth; this.sampler = (HTTPSamplerBase) base.clone(); // We don't want to use CacheManager clone but the parent one, and CacheManager is Thread Safe CacheManager cacheManager = base.getCacheManager(); if (cacheManager != null) { this.sampler.setCacheManager(cacheManager); } if(cookieManager != null) { CookieManager clonedCookieManager = (CookieManager) cookieManager.clone(); this.sampler.setCookieManager(clonedCookieManager); } this.jmeterContextOfParentThread = JMeterContextService.getContext(); } public AsynSamplerResultHolder call() { JMeterContextService.replaceContext(jmeterContextOfParentThread); ((CleanerThread) Thread.currentThread()).registerSamplerForEndNotification(sampler); HTTPSampleResult httpSampleResult = sampler.sample(url, method, areFollowingRedirect, depth); if(sampler.getCookieManager() != null) { CollectionProperty cookies = sampler.getCookieManager().getCookies(); return new AsynSamplerResultHolder(httpSampleResult, cookies); } else { return new AsynSamplerResultHolder(httpSampleResult, new CollectionProperty()); } } } /** * Custom thread implementation that * */ private static class CleanerThread extends Thread { private final List samplersToNotify = new ArrayList(); /** * @param runnable Runnable */ public CleanerThread(Runnable runnable) { super(runnable); } /** * Notify of thread end */ public void notifyThreadEnd() { for (HTTPSamplerBase samplerBase : samplersToNotify) { samplerBase.threadFinished(); } samplersToNotify.clear(); } /** * Register sampler to be notify at end of thread * @param sampler {@link HTTPSamplerBase} */ public void registerSamplerForEndNotification(HTTPSamplerBase sampler) { this.samplersToNotify.add(sampler); } } /** * Holder of AsynSampler result */ private static class AsynSamplerResultHolder { private final HTTPSampleResult result; private final CollectionProperty cookies; /** * @param result * @param cookies */ public AsynSamplerResultHolder(HTTPSampleResult result, CollectionProperty cookies) { super(); this.result = result; this.cookies = cookies; } /** * @return the result */ public HTTPSampleResult getResult() { return result; } /** * @return the cookies */ public CollectionProperty getCookies() { return cookies; } } /** * We search in URL and arguments * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); result.add(getUrl().toExternalForm()); Arguments arguments = getArguments(); if(arguments != null) { for (int i = 0; i < arguments.getArgumentCount(); i++) { Argument argument = arguments.getArgument(i); result.add(argument.getName()); result.add(argument.getValue()); } } return result; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/WebServiceSampler.java0000644000175000017500000005722012032647215033045 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import javax.xml.parsers.DocumentBuilder; import org.apache.commons.io.IOUtils; import org.apache.jmeter.JMeter; import org.apache.jmeter.gui.JMeterFileFilter; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.protocol.http.util.DOMPool; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.io.TextFile; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.soap.Envelope; import org.apache.soap.SOAPException; import org.apache.soap.messaging.Message; import org.apache.soap.rpc.SOAPContext; import org.apache.soap.transport.http.SOAPHTTPConnection; import org.apache.soap.util.xml.XMLParserUtils; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * Sampler to handle Web Service requests. It uses Apache SOAP drivers to * perform the XML generation, connection, SOAP encoding and other SOAP * functions. *

        * Created on: Jun 26, 2003 * */ public class WebServiceSampler extends HTTPSamplerBase { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; //+ JMX file attribut names - do not change! private static final String XML_DATA = "HTTPSamper.xml_data"; //$NON-NLS-1$ private static final String SOAP_ACTION = "Soap.Action"; //$NON-NLS-1$ private static final String XML_DATA_FILE = "WebServiceSampler.xml_data_file"; //$NON-NLS-1$ private static final String XML_PATH_LOC = "WebServiceSampler.xml_path_loc"; //$NON-NLS-1$ private static final String MEMORY_CACHE = "WebServiceSampler.memory_cache"; //$NON-NLS-1$ private static final String MAINTAIN_SESSION = "WebServiceSampler.maintain_session"; //$NON-NLS-1$ private static final String READ_RESPONSE = "WebServiceSampler.read_response"; //$NON-NLS-1$ private static final String USE_PROXY = "WebServiceSampler.use_proxy"; //$NON-NLS-1$ private static final String PROXY_HOST = "WebServiceSampler.proxy_host"; //$NON-NLS-1$ private static final String PROXY_PORT = "WebServiceSampler.proxy_port"; //$NON-NLS-1$ private static final String WSDL_URL = "WebserviceSampler.wsdl_url"; //$NON-NLS-1$ private static final String TIMEOUT = "WebserviceSampler.timeout"; //$NON-NLS-1$ //- JMX file attribut names - do not change! private static final String PROXY_USER = JMeterUtils.getPropDefault(JMeter.HTTP_PROXY_USER,""); // $NON-NLS-1$ private static final String PROXY_PASS = JMeterUtils.getPropDefault(JMeter.HTTP_PROXY_PASS,""); // $NON-NLS-1$ private static final String ENCODING = "UTF-8"; // $NON-NLS-1$ TODO should this be a variable? public static final boolean MAINTAIN_SESSION_DEFAULT = true; /* * Random class for generating random numbers. */ private final Random RANDOM = new Random(); private String fileContents = null; /** * Set the path where XML messages are stored for random selection. */ public void setXmlPathLoc(String path) { setProperty(XML_PATH_LOC, path); } /** * Get the path where XML messages are stored. this is the directory where * JMeter will randomly select a file. */ public String getXmlPathLoc() { return getPropertyAsString(XML_PATH_LOC); } /** * it's kinda obvious, but we state it anyways. Set the xml file with a * string path. * * @param filename */ public void setXmlFile(String filename) { setProperty(XML_DATA_FILE, filename); } /** * Get the file location of the xml file. * * @return String file path. */ public String getXmlFile() { return getPropertyAsString(XML_DATA_FILE); } /** * Method is used internally to check if a random file should be used for * the message. Messages must be valid. This is one way to load test with * different messages. The limitation of this approach is parsing XML takes * CPU resources, so it could affect JMeter GUI responsiveness. * * @return String filename */ protected String getRandomFileName() { if (this.getXmlPathLoc() != null) { File src = new File(this.getXmlPathLoc()); if (src.isDirectory() && src.list() != null) { File [] fileList = src.listFiles(new JMeterFileFilter(new String[] { ".xml" }, false)); File one = fileList[RANDOM.nextInt(fileList.length)]; // return the absolutePath of the file return one.getAbsolutePath(); } return getXmlFile(); } return getXmlFile(); } /** * Set the XML data. * * @param data */ public void setXmlData(String data) { setProperty(XML_DATA, data); } /** * Get the XML data as a string. * * @return String data */ public String getXmlData() { return getPropertyAsString(XML_DATA); } /** * Set the soap action which should be in the form of an URN. * * @param data */ public void setSoapAction(String data) { setProperty(SOAP_ACTION, data); } /** * Return the soap action string. * * @return String soap action */ public String getSoapAction() { return getPropertyAsString(SOAP_ACTION); } /** * Set the maintain session option. * * @param maintainSession */ public void setMaintainSession(boolean maintainSession) { setProperty(MAINTAIN_SESSION, maintainSession, MAINTAIN_SESSION_DEFAULT); } /** * Get the maintain session option. * * @return boolean cache */ public boolean getMaintainSession() { return getPropertyAsBoolean(MAINTAIN_SESSION, MAINTAIN_SESSION_DEFAULT); } /** * Set the memory cache. * * @param cache */ public void setMemoryCache(boolean cache) { setProperty(MEMORY_CACHE, String.valueOf(cache)); } /** * Get the memory cache. * * @return boolean cache */ public boolean getMemoryCache() { return getPropertyAsBoolean(MEMORY_CACHE); } /** * Set whether the sampler should read the response or not. * * @param read */ public void setReadResponse(boolean read) { setProperty(READ_RESPONSE, String.valueOf(read)); } /** * Return whether or not to read the response. * * @return boolean */ public boolean getReadResponse() { return this.getPropertyAsBoolean(READ_RESPONSE); } /** * Set whether or not to use a proxy * * @param proxy */ public void setUseProxy(boolean proxy) { setProperty(USE_PROXY, String.valueOf(proxy)); } /** * Return whether or not to use proxy * * @return true if should use proxy */ public boolean getUseProxy() { return this.getPropertyAsBoolean(USE_PROXY); } /** * Set the proxy hostname * * @param host */ public void setProxyHost(String host) { setProperty(PROXY_HOST, host); } /** * Return the proxy hostname * * @return the proxy hostname */ @Override public String getProxyHost() { this.checkProxy(); return this.getPropertyAsString(PROXY_HOST); } /** * Set the proxy port * * @param port */ public void setProxyPort(String port) { setProperty(PROXY_PORT, port); } /** * Return the proxy port * * @return the proxy port */ public int getProxyPort() { this.checkProxy(); return this.getPropertyAsInt(PROXY_PORT); } /** * * @param url */ public void setWsdlURL(String url) { this.setProperty(WSDL_URL, url); } /** * method returns the WSDL URL * * @return the WSDL URL */ public String getWsdlURL() { return getPropertyAsString(WSDL_URL); } /* * The method will check to see if JMeter was started in NonGui mode. If it * was, it will try to pick up the proxy host and port values if they were * passed to JMeter.java. */ private void checkProxy() { if (JMeter.isNonGUI()) { this.setUseProxy(true); // we check to see if the proxy host and port are set String port = this.getPropertyAsString(PROXY_PORT); String host = this.getPropertyAsString(PROXY_HOST); if (host == null || host.length() == 0) { // it's not set, lets check if the user passed // proxy host and port from command line host = System.getProperty("http.proxyHost"); if (host != null) { this.setProxyHost(host); } } if (port == null || port.length() == 0) { // it's not set, lets check if the user passed // proxy host and port from command line port = System.getProperty("http.proxyPort"); if (port != null) { this.setProxyPort(port); } } } } /* * This method uses Apache soap util to create the proper DOM elements. * * @return Element */ private org.w3c.dom.Element createDocument() throws SAXException, IOException { Document doc = null; String next = this.getRandomFileName();//get filename or "" /* Note that the filename is also used as a key to the pool (if used) ** Documents provided in the testplan are not currently pooled, as they may change * between samples. */ if (next.length() > 0 && getMemoryCache()) { doc = DOMPool.getDocument(next); if (doc == null){ doc = openDocument(next); if (doc != null) {// we created the document DOMPool.putDocument(next, doc); } } } else { // Must be local content - or not using pool doc = openDocument(next); } if (doc == null) { return null; } return doc.getDocumentElement(); } /** * Open the file and create a Document. * * @param file - input filename or empty if using data from tesplan * @return Document * @throws IOException * @throws SAXException */ private Document openDocument(String file) throws SAXException, IOException { /* * Consider using Apache commons pool to create a pool of document * builders or make sure XMLParserUtils creates builders efficiently. */ DocumentBuilder XDB = XMLParserUtils.getXMLDocBuilder(); XDB.setErrorHandler(null);//Suppress messages to stdout Document doc = null; // if either a file or path location is given, // get the file object. if (file.length() > 0) {// we have a file if (this.getReadResponse()) { TextFile tfile = new TextFile(file); fileContents = tfile.getText(); } InputStream fileInputStream = null; try { fileInputStream = new BufferedInputStream(new FileInputStream(file)); doc = XDB.parse(fileInputStream); } finally { JOrphanUtils.closeQuietly(fileInputStream); } } else {// must be a "here" document fileContents = getXmlData(); if (fileContents != null && fileContents.length() > 0) { doc = XDB.parse(new InputSource(new StringReader(fileContents))); } else { log.warn("No post data provided!"); } } return doc; } /* * Required to satisfy HTTPSamplerBase Should not be called, as we override * sample() */ @Override protected HTTPSampleResult sample(URL u, String s, boolean b, int i) { throw new RuntimeException("Not implemented - should not be called"); } /** * Sample the URL using Apache SOAP driver. Implementation note for myself * and those that are curious. Current logic marks the end after the * response has been read. If read response is set to false, the buffered * reader will read, but do nothing with it. Essentially, the stream from * the server goes into the ether. */ @Override public SampleResult sample() { SampleResult result = new SampleResult(); result.setSuccessful(false); // Assume it will fail result.setResponseCode("000"); // ditto $NON-NLS-1$ result.setSampleLabel(getName()); try { result.setURL(this.getUrl()); org.w3c.dom.Element rdoc = createDocument(); if (rdoc == null) { throw new SOAPException("Could not create document", null); } // set the response defaults result.setDataEncoding(ENCODING); result.setContentType("text/xml"); // $NON-NLS-1$ result.setDataType(SampleResult.TEXT); result.setSamplerData(fileContents);// WARNING - could be large Envelope msgEnv = Envelope.unmarshall(rdoc); // create a new message Message msg = new Message(); result.sampleStart(); SOAPHTTPConnection spconn = null; // if a blank HeaderManager exists, try to // get the SOAPHTTPConnection. After the first // request, there should be a connection object // stored with the cookie header info. if (this.getHeaderManager() != null && this.getHeaderManager().getSOAPHeader() != null) { spconn = (SOAPHTTPConnection) this.getHeaderManager().getSOAPHeader(); } else { spconn = new SOAPHTTPConnection(); } spconn.setTimeout(getTimeoutAsInt()); // set the auth. thanks to KiYun Roe for contributing the patch // I cleaned up the patch slightly. 5-26-05 if (getAuthManager() != null) { if (getAuthManager().getAuthForURL(getUrl()) != null) { AuthManager authmanager = getAuthManager(); Authorization auth = authmanager.getAuthForURL(getUrl()); spconn.setUserName(auth.getUser()); spconn.setPassword(auth.getPass()); } else { log.warn("the URL for the auth was null." + " Username and password not set"); } } // check the proxy String phost = ""; int pport = 0; // if use proxy is set, we try to pick up the // proxy host and port from either the text // fields or from JMeterUtil if they were passed // from command line if (this.getUseProxy()) { if (this.getProxyHost().length() > 0 && this.getProxyPort() > 0) { phost = this.getProxyHost(); pport = this.getProxyPort(); } else { if (System.getProperty("http.proxyHost") != null || System.getProperty("http.proxyPort") != null) { phost = System.getProperty("http.proxyHost"); pport = Integer.parseInt(System.getProperty("http.proxyPort")); } } // if for some reason the host is blank and the port is // zero, the sampler will fail silently if (phost.length() > 0 && pport > 0) { spconn.setProxyHost(phost); spconn.setProxyPort(pport); if (PROXY_USER.length()>0 && PROXY_PASS.length()>0){ spconn.setProxyUserName(PROXY_USER); spconn.setProxyPassword(PROXY_PASS); } } } spconn.setMaintainSession(getMaintainSession()); msg.setSOAPTransport(spconn); msg.send(this.getUrl(), this.getSoapAction(), msgEnv); @SuppressWarnings("unchecked") // API uses raw types final Map headers = spconn.getHeaders(); result.setResponseHeaders(convertSoapHeaders(headers)); if (this.getHeaderManager() != null) { this.getHeaderManager().setSOAPHeader(spconn); } BufferedReader br = null; if (spconn.receive() != null) { br = spconn.receive(); SOAPContext sc = spconn.getResponseSOAPContext(); // Set details from the actual response // Needs to be done before response can be stored final String contentType = sc.getContentType(); result.setContentType(contentType); result.setEncodingAndType(contentType); int length=0; if (getReadResponse()) { StringWriter sw = new StringWriter(); length=IOUtils.copy(br, sw); result.sampleEnd(); result.setResponseData(sw.toString().getBytes(result.getDataEncodingWithDefault())); } else { // by not reading the response // for real, it improves the // performance on slow clients length=br.read(); result.sampleEnd(); result.setResponseData(JMeterUtils.getResString("read_response_message"), null); //$NON-NLS-1$ } // It is not possible to access the actual HTTP response code, so we assume no data means failure if (length > 0){ result.setSuccessful(true); result.setResponseCodeOK(); result.setResponseMessageOK(); } else { result.setSuccessful(false); result.setResponseCode("999"); result.setResponseMessage("Empty response"); } } else { result.sampleEnd(); result.setSuccessful(false); final String contentType = spconn.getResponseSOAPContext().getContentType(); result.setContentType(contentType); result.setEncodingAndType(contentType); result.setResponseData(spconn.getResponseSOAPContext().toString().getBytes(result.getDataEncodingWithDefault())); } if (br != null) { br.close(); } // reponse code doesn't really apply, since // the soap driver doesn't provide a // response code } catch (IllegalArgumentException exception){ String message = exception.getMessage(); log.warn(message); result.setResponseMessage(message); } catch (SAXException exception) { log.warn(exception.toString()); result.setResponseMessage(exception.getMessage()); } catch (SOAPException exception) { log.warn(exception.toString()); result.setResponseMessage(exception.getMessage()); } catch (MalformedURLException exception) { String message = exception.getMessage(); log.warn(message); result.setResponseMessage(message); } catch (IOException exception) { String message = exception.getMessage(); log.warn(message); result.setResponseMessage(message); } catch (NoClassDefFoundError error){ log.error("Missing class: ",error); result.setResponseMessage(error.toString()); } catch (Exception exception) { if ("javax.mail.MessagingException".equals(exception.getClass().getName())){ log.warn(exception.toString()); result.setResponseMessage(exception.getMessage()); } else { log.error("Problem processing the SOAP request", exception); result.setResponseMessage(exception.toString()); } } finally { // Make sure the sample start time and sample end time are recorded // in order not to confuse the statistics calculation methods: if // an error occurs and an exception is thrown it is possible that // the result.sampleStart() or result.sampleEnd() won't be called if (result.getStartTime() == 0) { result.sampleStart(); } if (result.getEndTime() == 0) { result.sampleEnd(); } } return result; } /** * We override this to prevent the wrong encoding and provide no * implementation. We want to reuse the other parts of HTTPSampler, but not * the connection. The connection is handled by the Apache SOAP driver. */ @Override public void addEncodedArgument(String name, String value, String metaData) { } public String convertSoapHeaders(Map ht) { StringBuilder buf = new StringBuilder(); for (Entry entry : ht.entrySet()) { buf.append(entry.getKey()).append("=").append(entry.getValue()).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$ } return buf.toString(); } // /** // * Process headerLines // * @param en enumeration of Strings // * @return String containing the lines // */ // private String convertSoapHeaders(Enumeration en) { // StringBuilder buf = new StringBuilder(100); // while (en.hasMoreElements()) { // buf.append(en.nextElement()).append("\n"); //$NON-NLS-1$ // } // return buf.toString(); // } public String getTimeout() { return getPropertyAsString(TIMEOUT); } public int getTimeoutAsInt() { return getPropertyAsInt(TIMEOUT); } public void setTimeout(String text) { setProperty(TIMEOUT, text); } /* (non-Javadoc) * @see org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase#testEnded() */ @Override public void testEnded() { DOMPool.clear(); } /* (non-Javadoc) * @see org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase#testEnded(java.lang.String) */ @Override public void testEnded(String host) { testEnded(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/PostWriter.java0000644000175000017500000004630612032647215031610 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLConnection; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jorphan.util.JOrphanUtils; /** * Class for setting the necessary headers for a POST request, and sending the * body of the POST. */ public class PostWriter { private static final String DASH_DASH = "--"; // $NON-NLS-1$ private static final byte[] DASH_DASH_BYTES = {'-', '-'}; /** The bounday string between multiparts */ protected static final String BOUNDARY = "---------------------------7d159c1302d0y0"; // $NON-NLS-1$ private static final byte[] CRLF = { 0x0d, 0x0A }; public static final String ENCODING = "ISO-8859-1"; // $NON-NLS-1$ /** The form data that is going to be sent as url encoded */ protected byte[] formDataUrlEncoded; /** The form data that is going to be sent in post body */ protected byte[] formDataPostBody; /** The boundary string for multipart */ private final String boundary; /** * Constructor for PostWriter. * Uses the PostWriter.BOUNDARY as the boundary string * */ public PostWriter() { this(BOUNDARY); } /** * Constructor for PostWriter * * @param boundary the boundary string to use as marker between multipart parts */ public PostWriter(String boundary) { this.boundary = boundary; } /** * Send POST data from Entry to the open connection. * * @return the post body sent. Actual file content is not returned, it * is just shown as a placeholder text "actual file content" */ public String sendPostData(URLConnection connection, HTTPSamplerBase sampler) throws IOException { // Buffer to hold the post body, except file content StringBuilder postedBody = new StringBuilder(1000); HTTPFileArg files[] = sampler.getHTTPFiles(); String contentEncoding = sampler.getContentEncoding(); if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = ENCODING; } // Check if we should do a multipart/form-data or an // application/x-www-form-urlencoded post request if(sampler.getUseMultipartForPost()) { OutputStream out = connection.getOutputStream(); // Write the form data post body, which we have constructed // in the setHeaders. This contains the multipart start divider // and any form data, i.e. arguments out.write(formDataPostBody); // Retrieve the formatted data using the same encoding used to create it postedBody.append(new String(formDataPostBody, contentEncoding)); // Add any files for (int i=0; i < files.length; i++) { HTTPFileArg file = files[i]; // First write the start multipart file byte[] header = file.getHeader().getBytes(); // TODO - charset? out.write(header); // Retrieve the formatted data using the same encoding used to create it postedBody.append(new String(header)); // TODO - charset? // Write the actual file content writeFileToStream(file.getPath(), out); // We just add placeholder text for file content postedBody.append(""); // $NON-NLS-1$ // Write the end of multipart file byte[] fileMultipartEndDivider = getFileMultipartEndDivider(); out.write(fileMultipartEndDivider); // Retrieve the formatted data using the same encoding used to create it postedBody.append(new String(fileMultipartEndDivider, ENCODING)); if(i + 1 < files.length) { out.write(CRLF); postedBody.append(new String(CRLF, SampleResult.DEFAULT_HTTP_ENCODING)); } } // Write end of multipart byte[] multipartEndDivider = getMultipartEndDivider(); out.write(multipartEndDivider); postedBody.append(new String(multipartEndDivider, ENCODING)); out.flush(); out.close(); } else { // If there are no arguments, we can send a file as the body of the request if(sampler.getArguments() != null && !sampler.hasArguments() && sampler.getSendFileAsPostBody()) { OutputStream out = connection.getOutputStream(); // we're sure that there is at least one file because of // getSendFileAsPostBody method's return value. HTTPFileArg file = files[0]; writeFileToStream(file.getPath(), out); out.flush(); out.close(); // We just add placeholder text for file content postedBody.append(""); // $NON-NLS-1$ } else if (formDataUrlEncoded != null){ // may be null for PUT // In an application/x-www-form-urlencoded request, we only support // parameters, no file upload is allowed OutputStream out = connection.getOutputStream(); out.write(formDataUrlEncoded); out.flush(); out.close(); postedBody.append(new String(formDataUrlEncoded, contentEncoding)); } } return postedBody.toString(); } public void setHeaders(URLConnection connection, HTTPSamplerBase sampler) throws IOException { // Get the encoding to use for the request String contentEncoding = sampler.getContentEncoding(); if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = ENCODING; } long contentLength = 0L; HTTPFileArg files[] = sampler.getHTTPFiles(); // Check if we should do a multipart/form-data or an // application/x-www-form-urlencoded post request if(sampler.getUseMultipartForPost()) { // Set the content type connection.setRequestProperty( HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.MULTIPART_FORM_DATA + "; boundary=" + getBoundary()); // $NON-NLS-1$ // Write the form section ByteArrayOutputStream bos = new ByteArrayOutputStream(); // First the multipart start divider bos.write(getMultipartDivider()); // Add any parameters PropertyIterator args = sampler.getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); String parameterName = arg.getName(); if (arg.isSkippable(parameterName)){ continue; } // End the previous multipart bos.write(CRLF); // Write multipart for parameter writeFormMultipart(bos, parameterName, arg.getValue(), contentEncoding, sampler.getDoBrowserCompatibleMultipart()); } // If there are any files, we need to end the previous multipart if(files.length > 0) { // End the previous multipart bos.write(CRLF); } bos.flush(); // Keep the content, will be sent later formDataPostBody = bos.toByteArray(); bos.close(); contentLength = formDataPostBody.length; // Now we just construct any multipart for the files // We only construct the file multipart start, we do not write // the actual file content for (int i=0; i < files.length; i++) { HTTPFileArg file = files[i]; // Write multipart for file bos = new ByteArrayOutputStream(); writeStartFileMultipart(bos, file.getPath(), file.getParamName(), file.getMimeType()); bos.flush(); String header = bos.toString(contentEncoding);// TODO is this correct? // If this is not the first file we can't write its header now // for simplicity we always save it, even if there is only one file file.setHeader(header); bos.close(); contentLength += header.length(); // Add also the length of the file content File uploadFile = new File(file.getPath()); contentLength += uploadFile.length(); // And the end of the file multipart contentLength += getFileMultipartEndDivider().length; if(i+1 < files.length) { contentLength += CRLF.length; } } // Add the end of multipart contentLength += getMultipartEndDivider().length; // Set the content length connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_LENGTH, Long.toString(contentLength)); // Make the connection ready for sending post data connection.setDoOutput(true); connection.setDoInput(true); } else { // Check if the header manager had a content type header // This allows the user to specify his own content-type for a POST request String contentTypeHeader = connection.getRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE); boolean hasContentTypeHeader = contentTypeHeader != null && contentTypeHeader.length() > 0; // If there are no arguments, we can send a file as the body of the request if(sampler.getArguments() != null && sampler.getArguments().getArgumentCount() == 0 && sampler.getSendFileAsPostBody()) { // we're sure that there is one file because of // getSendFileAsPostBody method's return value. HTTPFileArg file = files[0]; if(!hasContentTypeHeader) { // Allow the mimetype of the file to control the content type if(file.getMimeType() != null && file.getMimeType().length() > 0) { connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } // Create the content length we are going to write File inputFile = new File(file.getPath()); contentLength = inputFile.length(); } else { // We create the post body content now, so we know the size ByteArrayOutputStream bos = new ByteArrayOutputStream(); // If none of the arguments have a name specified, we // just send all the values as the post body String postBody = null; if(!sampler.getSendParameterValuesAsPostBody()) { // Set the content type if(!hasContentTypeHeader) { connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } // It is a normal post request, with parameter names and values postBody = sampler.getQueryString(contentEncoding); } else { // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters // TODO: needs a multiple file upload scenerio if(!hasContentTypeHeader) { HTTPFileArg file = files.length > 0? files[0] : null; if(file != null && file.getMimeType() != null && file.getMimeType().length() > 0) { connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { // TODO: is this the correct default? connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } // Just append all the parameter values, and use that as the post body StringBuilder postBodyBuffer = new StringBuilder(); PropertyIterator args = sampler.getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); postBodyBuffer.append(arg.getEncodedValue(contentEncoding)); } postBody = postBodyBuffer.toString(); } bos.write(postBody.getBytes(contentEncoding)); bos.flush(); bos.close(); // Keep the content, will be sent later formDataUrlEncoded = bos.toByteArray(); contentLength = bos.toByteArray().length; } // Set the content length connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_LENGTH, Long.toString(contentLength)); // Make the connection ready for sending post data connection.setDoOutput(true); } } /** * Get the boundary string, used to separate multiparts * * @return the boundary string */ protected String getBoundary() { return boundary; } /** * Get the bytes used to separate multiparts * Encoded using ENCODING * * @return the bytes used to separate multiparts * @throws IOException */ private byte[] getMultipartDivider() throws IOException { return (DASH_DASH + getBoundary()).getBytes(ENCODING); } /** * Get the bytes used to end a file multipart * Encoded using ENCODING * * @return the bytes used to end a file multipart * @throws IOException */ private byte[] getFileMultipartEndDivider() throws IOException{ byte[] ending = getMultipartDivider(); byte[] completeEnding = new byte[ending.length + CRLF.length]; System.arraycopy(CRLF, 0, completeEnding, 0, CRLF.length); System.arraycopy(ending, 0, completeEnding, CRLF.length, ending.length); return completeEnding; } /** * Get the bytes used to end the multipart request * * @return the bytes used to end the multipart request */ private byte[] getMultipartEndDivider(){ byte[] ending = DASH_DASH_BYTES; byte[] completeEnding = new byte[ending.length + CRLF.length]; System.arraycopy(ending, 0, completeEnding, 0, ending.length); System.arraycopy(CRLF, 0, completeEnding, ending.length, CRLF.length); return completeEnding; } /** * Write the start of a file multipart, up to the point where the * actual file content should be written */ private void writeStartFileMultipart(OutputStream out, String filename, String nameField, String mimetype) throws IOException { write(out, "Content-Disposition: form-data; name=\""); // $NON-NLS-1$ write(out, nameField); write(out, "\"; filename=\"");// $NON-NLS-1$ write(out, new File(filename).getName()); writeln(out, "\""); // $NON-NLS-1$ writeln(out, "Content-Type: " + mimetype); // $NON-NLS-1$ writeln(out, "Content-Transfer-Encoding: binary"); // $NON-NLS-1$ out.write(CRLF); } /** * Write the content of a file to the output stream * * @param filename the filename of the file to write to the stream * @param out the stream to write to * @throws IOException */ private static void writeFileToStream(String filename, OutputStream out) throws IOException { byte[] buf = new byte[1024]; // 1k - the previous 100k made no sense (there's tons of buffers // elsewhere in the chain) and it caused OOM when many concurrent // uploads were being done. Could be fixed by increasing the evacuation // ratio in bin/jmeter[.bat], but this is better. InputStream in = new BufferedInputStream(new FileInputStream(filename)); int read; boolean noException = false; try { while ((read = in.read(buf)) > 0) { out.write(buf, 0, read); } noException = true; } finally { if(!noException) { // Exception in progress JOrphanUtils.closeQuietly(in); } else { in.close(); } } } /** * Writes form data in multipart format. */ private void writeFormMultipart(OutputStream out, String name, String value, String charSet, boolean browserCompatibleMultipart) throws IOException { writeln(out, "Content-Disposition: form-data; name=\"" + name + "\""); // $NON-NLS-1$ // $NON-NLS-2$ if (!browserCompatibleMultipart){ writeln(out, "Content-Type: text/plain; charset=" + charSet); // $NON-NLS-1$ writeln(out, "Content-Transfer-Encoding: 8bit"); // $NON-NLS-1$ } out.write(CRLF); out.write(value.getBytes(charSet)); out.write(CRLF); // Write boundary end marker out.write(getMultipartDivider()); } private void write(OutputStream out, String value) throws UnsupportedEncodingException, IOException { out.write(value.getBytes(ENCODING)); } private void writeln(OutputStream out, String value) throws UnsupportedEncodingException, IOException { out.write(value.getBytes(ENCODING)); out.write(CRLF); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerProxy.java0000644000175000017500000000573712032647215032636 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.net.URL; import org.apache.jmeter.samplers.Interruptible; /** * Proxy class that dispatches to the appropriate HTTP sampler. *

        * This class is stored in the test plan, and holds all the configuration settings. * The actual implementation is created at run-time, and is passed a reference to this class * so it can get access to all the settings stored by HTTPSamplerProxy. */ public final class HTTPSamplerProxy extends HTTPSamplerBase implements Interruptible { private static final long serialVersionUID = 1L; private transient HTTPAbstractImpl impl; public HTTPSamplerProxy(){ super(); } /** * Convenience method used to initialise the implementation. * * @param impl the implementation to use. */ public HTTPSamplerProxy(String impl){ super(); setImplementation(impl); } /** {@inheritDoc} */ @Override protected HTTPSampleResult sample(URL u, String method, boolean areFollowingRedirect, int depth) { if (impl == null) { // Not called from multiple threads, so this is OK try { impl = HTTPSamplerFactory.getImplementation(getImplementation(), this); } catch (Exception ex) { return errorResult(ex, new HTTPSampleResult()); } } return impl.sample(u, method, areFollowingRedirect, depth); } // N.B. It's not possible to forward threadStarted() to the implementation class. // This is because Config items are not processed until later, and HTTPDefaults may define the implementation @Override public void threadFinished(){ if (impl != null){ impl.threadFinished(); // Forward to sampler } } public boolean interrupt() { if (impl != null) { return impl.interrupt(); // Forward to sampler } return false; } /** * {@inheritDoc} * This implementation forwards to the implementation class. */ @Override protected void notifySSLContextWasReset() { if (impl != null) { impl.notifySSLContextWasReset(); } } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResources.propertiesapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResource0000644000175000017500000000317212032647215033437 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=Access Log Sampler plugins.displayName=Plugin Classes accesslogfile.displayName=Log File Location defaults.displayName=Default Test Values logFile.displayName=Log File logFile.shortDescription=Location of log file to parse for requests parserClassName.displayName=Parser parserClassName.shortDescription=Choose a parser implementation to parser your log file. filterClassName.displayName=Filter (Optional) filterClassName.shortDescription=Choose a filter implementation to filter your log file entries (optional). domain.displayName=Server domain.shortDescription=Host name of the server to test against portString.displayName=Port portString.shortDescription=Port Number to test against imageParsing.displayName=Parse Images imageParsing.shortDescription=If turned on, JMeter will download images and resources contained in each web page././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResources_zh_TW.propertiesapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResource0000644000175000017500000000355412032647215033443 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! accesslogfile.displayName=\u6B77\u7A0B\u6A94\u4F4D\u7F6E defaults.displayName=\u9810\u8A2D\u6E2C\u8A66\u503C displayName=\u5B58\u53D6\u8A18\u9304\u53D6\u6A23 domain.displayName=\u4F3A\u670D\u5668 domain.shortDescription=\u88AB\u6E2C\u8A66\u4E3B\u6A5F\u540D\u7A31 filterClassName.displayName=\u904E\u6FFE\u5668(\u9078\u64C7\u6027) filterClassName.shortDescription=\u4F7F\u7528\u81EA\u8A02\u904E\u6FFE\u5668\u5C0D\u8A18\u9304\u6A94\u9032\u884C\u904E\u6FFE(\u9078\u64C7\u6027) imageParsing.displayName=\u5256\u6790\u5716\u5F62 imageParsing.shortDescription=\u5982\u679C\u555F\u52D5, JMeter \u6703\u4E0B\u8F09\u6240\u6709\u5716\u5F62\u548C\u76F8\u95DC\u8CC7\u6E90 logFile.displayName=\u8A18\u9304\u6A94 logFile.shortDescription=\u88AB\u5256\u6790\u7684\u8A18\u9304\u6A94\u4F4D\u7F6E parserClassName.displayName=\u5256\u6790\u5668 parserClassName.shortDescription=\u9078\u64C7\u81EA\u5DF1\u5BE6\u4F5C\u7684\u5256\u6790\u5668 plugins.displayName=\u63D2\u4EF6 Classes portString.displayName=\u7AEF\u53E3 portString.shortDescription=\u88AB\u6E2C\u8A66\u7AEF\u53E3 ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerBeanInfo.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerBeanInfo0000644000175000017500000001024212032647215033325 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 24, 2004 * */ package org.apache.jmeter.protocol.http.sampler; import java.beans.PropertyDescriptor; import java.io.IOException; import java.util.List; import org.apache.jmeter.protocol.http.util.accesslog.Filter; import org.apache.jmeter.protocol.http.util.accesslog.LogParser; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.FileEditor; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassFinder; import org.apache.log.Logger; public class AccessLogSamplerBeanInfo extends BeanInfoSupport { private static final Logger log = LoggingManager.getLoggerForClass(); public AccessLogSamplerBeanInfo() { super(AccessLogSampler.class); log.debug("Entered access log sampler bean info"); try { createPropertyGroup("defaults", // $NON-NLS-1$ new String[] { "domain", "portString", "imageParsing" });// $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ createPropertyGroup("plugins", // $NON-NLS-1$ new String[] { "parserClassName", "filterClassName" }); // $NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ createPropertyGroup("accesslogfile", // $NON-NLS-1$ new String[] { "logFile" }); // $NON-NLS-1$ PropertyDescriptor p; p = property("parserClassName"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, AccessLogSampler.DEFAULT_CLASS); p.setValue(NOT_OTHER, Boolean.TRUE); p.setValue(NOT_EXPRESSION, Boolean.TRUE); final List logParserClasses = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { LogParser.class }); if (log.isDebugEnabled()) { log.debug("found parsers: " + logParserClasses); } p.setValue(TAGS, logParserClasses.toArray(new String[logParserClasses.size()])); p = property("filterClassName"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.FALSE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p.setValue(NOT_EXPRESSION, Boolean.TRUE); List classes = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { Filter.class }, false); p.setValue(TAGS, classes.toArray(new String[classes.size()])); p = property("logFile"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setPropertyEditorClass(FileEditor.class); p = property("domain"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("portString"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); // $NON-NLS-1$ p = property("imageParsing"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.FALSE); p.setValue(NOT_OTHER, Boolean.TRUE); } catch (IOException e) { log.warn("couldn't find classes and set up properties", e); throw new RuntimeException("Could not find classes with class finder", e); } log.debug("Got to end of access log samper bean info init"); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java0000644000175000017500000014701212032647215031362 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.URI; import java.net.URL; import java.net.URLDecoder; import java.nio.charset.Charset; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.http.Header; import org.apache.http.HttpConnection; import org.apache.http.HttpConnectionMetrics; import org.apache.http.HttpEntity; import org.apache.http.HttpException; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpRequestInterceptor; import org.apache.http.HttpResponse; import org.apache.http.HttpResponseInterceptor; import org.apache.http.NameValuePair; import org.apache.http.StatusLine; import org.apache.http.auth.AuthScope; import org.apache.http.auth.NTCredentials; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.HttpClient; import org.apache.http.client.HttpRequestRetryHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpOptions; import org.apache.http.client.methods.HttpPatch; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.methods.HttpTrace; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.params.ClientPNames; import org.apache.http.client.params.CookiePolicy; import org.apache.http.client.protocol.ResponseContentEncoding; import org.apache.http.conn.params.ConnRoutePNames; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.entity.ContentType; import org.apache.http.entity.FileEntity; import org.apache.http.entity.StringEntity; import org.apache.http.entity.mime.FormBodyPart; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.AbstractHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.RequestWrapper; import org.apache.http.message.BasicNameValuePair; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.DefaultedHttpParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.ExecutionContext; import org.apache.http.protocol.HTTP; import org.apache.http.protocol.HttpContext; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.util.EncoderCache; import org.apache.jmeter.protocol.http.util.HC4TrustAllSSLSocketFactory; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.protocol.http.util.SlowHC4SSLSocketFactory; import org.apache.jmeter.protocol.http.util.SlowHC4SocketFactory; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * HTTP Sampler using Apache HttpClient 4.x. * */ public class HTTPHC4Impl extends HTTPHCAbstractImpl { private static final Logger log = LoggingManager.getLoggerForClass(); /** retry count to be used (default 1); 0 = disable retries */ private static final int RETRY_COUNT = JMeterUtils.getPropDefault("httpclient4.retrycount", 1); private static final String CONTEXT_METRICS = "jmeter_metrics"; // TODO hack, to be removed later private static final HttpResponseInterceptor METRICS_SAVER = new HttpResponseInterceptor(){ public void process(HttpResponse response, HttpContext context) throws HttpException, IOException { HttpConnection conn = (HttpConnection) context.getAttribute(ExecutionContext.HTTP_CONNECTION); HttpConnectionMetrics metrics = conn.getMetrics(); context.setAttribute(CONTEXT_METRICS, metrics); } }; private static final HttpRequestInterceptor METRICS_RESETTER = new HttpRequestInterceptor() { public void process(HttpRequest request, HttpContext context) throws HttpException, IOException { HttpConnection conn = (HttpConnection) context.getAttribute(ExecutionContext.HTTP_CONNECTION); HttpConnectionMetrics metrics = conn.getMetrics(); metrics.reset(); } }; private static final ThreadLocal> HTTPCLIENTS = new ThreadLocal>(){ @Override protected Map initialValue() { return new HashMap(); } }; // Scheme used for slow HTTP sockets. Cannot be set as a default, because must be set on an HttpClient instance. private static final Scheme SLOW_HTTP; // We always want to override the HTTPS scheme, because we want to trust all certificates and hosts private static final Scheme HTTPS_SCHEME; /* * Create a set of default parameters from the ones initially created. * This allows the defaults to be overridden if necessary from the properties file. */ private static final HttpParams DEFAULT_HTTP_PARAMS; static { log.info("HTTP request retry count = "+RETRY_COUNT); // TODO use new setDefaultHttpParams(HttpParams params) static method when 4.1 is available final DefaultHttpClient dhc = new DefaultHttpClient(); DEFAULT_HTTP_PARAMS = dhc.getParams(); // Get the default params dhc.getConnectionManager().shutdown(); // Tidy up // Process Apache HttpClient parameters file String file=JMeterUtils.getProperty("hc.parameters.file"); // $NON-NLS-1$ if (file != null) { HttpClientDefaultParameters.load(file, DEFAULT_HTTP_PARAMS); } // Set up HTTP scheme override if necessary if (CPS_HTTP > 0) { log.info("Setting up HTTP SlowProtocol, cps="+CPS_HTTP); SLOW_HTTP = new Scheme(HTTPConstants.PROTOCOL_HTTP, HTTPConstants.DEFAULT_HTTP_PORT, new SlowHC4SocketFactory(CPS_HTTP)); } else { SLOW_HTTP = null; } // We always want to override the HTTPS scheme Scheme https = null; if (CPS_HTTPS > 0) { log.info("Setting up HTTPS SlowProtocol, cps="+CPS_HTTPS); try { https = new Scheme(HTTPConstants.PROTOCOL_HTTPS, HTTPConstants.DEFAULT_HTTPS_PORT, new SlowHC4SSLSocketFactory(CPS_HTTPS)); } catch (GeneralSecurityException e) { log.warn("Failed to initialise SLOW_HTTPS scheme, cps="+CPS_HTTPS, e); } } else { log.info("Setting up HTTPS TrustAll scheme"); try { https = new Scheme(HTTPConstants.PROTOCOL_HTTPS, HTTPConstants.DEFAULT_HTTPS_PORT, new HC4TrustAllSSLSocketFactory()); } catch (GeneralSecurityException e) { log.warn("Failed to initialise HTTPS TrustAll scheme", e); } } HTTPS_SCHEME = https; if (localAddress != null){ DEFAULT_HTTP_PARAMS.setParameter(ConnRoutePNames.LOCAL_ADDRESS, localAddress); } } private volatile HttpUriRequest currentRequest; // Accessed from multiple threads protected HTTPHC4Impl(HTTPSamplerBase testElement) { super(testElement); } @Override protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth) { HTTPSampleResult res = new HTTPSampleResult(); res.setMonitor(isMonitor()); res.setSampleLabel(url.toString()); // May be replaced later res.setHTTPMethod(method); res.setURL(url); HttpClient httpClient = setupClient(url); HttpRequestBase httpRequest = null; try { URI uri = url.toURI(); if (method.equals(HTTPConstants.POST)) { httpRequest = new HttpPost(uri); } else if (method.equals(HTTPConstants.PUT)) { httpRequest = new HttpPut(uri); } else if (method.equals(HTTPConstants.HEAD)) { httpRequest = new HttpHead(uri); } else if (method.equals(HTTPConstants.TRACE)) { httpRequest = new HttpTrace(uri); } else if (method.equals(HTTPConstants.OPTIONS)) { httpRequest = new HttpOptions(uri); } else if (method.equals(HTTPConstants.DELETE)) { httpRequest = new HttpDelete(uri); } else if (method.equals(HTTPConstants.GET)) { httpRequest = new HttpGet(uri); } else if (method.equals(HTTPConstants.PATCH)) { httpRequest = new HttpPatch(uri); } else { throw new IllegalArgumentException("Unexpected method: "+method); } setupRequest(url, httpRequest, res); // can throw IOException } catch (Exception e) { res.sampleStart(); res.sampleEnd(); errorResult(e, res); return res; } HttpContext localContext = new BasicHttpContext(); res.sampleStart(); final CacheManager cacheManager = getCacheManager(); if (cacheManager != null && HTTPConstants.GET.equalsIgnoreCase(method)) { if (cacheManager.inCache(url)) { res.sampleEnd(); res.setResponseNoContent(); res.setSuccessful(true); return res; } } try { currentRequest = httpRequest; // Handle the various methods if (method.equals(HTTPConstants.POST)) { String postBody = sendPostData((HttpPost)httpRequest); res.setQueryString(postBody); } else if (method.equals(HTTPConstants.PUT) || method.equals(HTTPConstants.PATCH)) { String entityBody = sendEntityData(( HttpEntityEnclosingRequestBase)httpRequest); res.setQueryString(entityBody); } HttpResponse httpResponse = httpClient.execute(httpRequest, localContext); // perform the sample // Needs to be done after execute to pick up all the headers res.setRequestHeaders(getConnectionHeaders((HttpRequest) localContext.getAttribute(ExecutionContext.HTTP_REQUEST))); Header contentType = httpResponse.getLastHeader(HTTPConstants.HEADER_CONTENT_TYPE); if (contentType != null){ String ct = contentType.getValue(); res.setContentType(ct); res.setEncodingAndType(ct); } HttpEntity entity = httpResponse.getEntity(); if (entity != null) { InputStream instream = entity.getContent(); res.setResponseData(readResponse(res, instream, (int) entity.getContentLength())); } res.sampleEnd(); // Done with the sampling proper. currentRequest = null; // Now collect the results into the HTTPSampleResult: StatusLine statusLine = httpResponse.getStatusLine(); int statusCode = statusLine.getStatusCode(); res.setResponseCode(Integer.toString(statusCode)); res.setResponseMessage(statusLine.getReasonPhrase()); res.setSuccessful(isSuccessCode(statusCode)); res.setResponseHeaders(getResponseHeaders(httpResponse)); if (res.isRedirect()) { final Header headerLocation = httpResponse.getLastHeader(HTTPConstants.HEADER_LOCATION); if (headerLocation == null) { // HTTP protocol violation, but avoids NPE throw new IllegalArgumentException("Missing location header"); } res.setRedirectLocation(headerLocation.getValue()); } // record some sizes to allow HTTPSampleResult.getBytes() with different options HttpConnectionMetrics metrics = (HttpConnectionMetrics) localContext.getAttribute(CONTEXT_METRICS); long headerBytes = res.getResponseHeaders().length() // condensed length (without \r) + httpResponse.getAllHeaders().length // Add \r for each header + 1 // Add \r for initial header + 2; // final \r\n before data long totalBytes = metrics.getReceivedBytesCount(); res.setHeadersSize((int) headerBytes); res.setBodySize((int)(totalBytes - headerBytes)); if (log.isDebugEnabled()) { log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " Content-Length=" + res.getBodySize() + " Total=" + (res.getHeadersSize() + res.getBodySize())); } // If we redirected automatically, the URL may have changed if (getAutoRedirects()){ HttpUriRequest req = (HttpUriRequest) localContext.getAttribute(ExecutionContext.HTTP_REQUEST); HttpHost target = (HttpHost) localContext.getAttribute(ExecutionContext.HTTP_TARGET_HOST); URI redirectURI = req.getURI(); if (redirectURI.isAbsolute()){ res.setURL(redirectURI.toURL()); } else { res.setURL(new URL(new URL(target.toURI()),redirectURI.toString())); } } // Store any cookies received in the cookie manager: saveConnectionCookies(httpResponse, res.getURL(), getCookieManager()); // Save cache information if (cacheManager != null){ cacheManager.saveDetails(httpResponse, res); } // Follow redirects and download page resources if appropriate: res = resultProcessing(areFollowingRedirect, frameDepth, res); } catch (IOException e) { res.sampleEnd(); errorResult(e, res); return res; } catch (RuntimeException e) { res.sampleEnd(); errorResult(e, res); return res; } finally { currentRequest = null; } return res; } /** * Holder class for all fields that define an HttpClient instance; * used as the key to the ThreadLocal map of HttpClient instances. */ private static final class HttpClientKey { private final String target; // protocol://[user:pass@]host:[port] private final boolean hasProxy; private final String proxyHost; private final int proxyPort; private final String proxyUser; private final String proxyPass; private final int hashCode; // Always create hash because we will always need it public HttpClientKey(URL url, boolean b, String proxyHost, int proxyPort, String proxyUser, String proxyPass) { // N.B. need to separate protocol from authority otherwise http://server would match https://erver // could use separate fields, but simpler to combine them this.target = url.getProtocol()+"://"+url.getAuthority(); this.hasProxy = b; this.proxyHost = proxyHost; this.proxyPort = proxyPort; this.proxyUser = proxyUser; this.proxyPass = proxyPass; this.hashCode = getHash(); } private int getHash() { int hash = 17; hash = hash*31 + (hasProxy ? 1 : 0); if (hasProxy) { hash = hash*31 + getHash(proxyHost); hash = hash*31 + proxyPort; hash = hash*31 + getHash(proxyUser); hash = hash*31 + getHash(proxyPass); } hash = hash*31 + target.hashCode(); return hash; } // Allow for null strings private int getHash(String s) { return s == null ? 0 : s.hashCode(); } @Override public boolean equals (Object obj){ if (this == obj) { return true; } if (!(obj instanceof HttpClientKey)) { return false; } HttpClientKey other = (HttpClientKey) obj; if (this.hasProxy) { // otherwise proxy String fields may be null return this.hasProxy == other.hasProxy && this.proxyPort == other.proxyPort && this.proxyHost.equals(other.proxyHost) && this.proxyUser.equals(other.proxyUser) && this.proxyPass.equals(other.proxyPass) && this.target.equals(other.target); } // No proxy, so don't check proxy fields return this.hasProxy == other.hasProxy && this.target.equals(other.target); } @Override public int hashCode(){ return hashCode; } } private HttpClient setupClient(URL url) { Map map = HTTPCLIENTS.get(); final String host = url.getHost(); final String proxyHost = getProxyHost(); final int proxyPort = getProxyPortInt(); boolean useStaticProxy = isStaticProxy(host); boolean useDynamicProxy = isDynamicProxy(proxyHost, proxyPort); // Lookup key - must agree with all the values used to create the HttpClient. HttpClientKey key = new HttpClientKey(url, (useStaticProxy || useDynamicProxy), useDynamicProxy ? proxyHost : PROXY_HOST, useDynamicProxy ? proxyPort : PROXY_PORT, useDynamicProxy ? getProxyUser() : PROXY_USER, useDynamicProxy ? getProxyPass() : PROXY_PASS); HttpClient httpClient = map.get(key); if (httpClient == null){ // One-time init for this client HttpParams clientParams = new DefaultedHttpParams(new BasicHttpParams(), DEFAULT_HTTP_PARAMS); httpClient = new DefaultHttpClient(clientParams){ @Override protected HttpRequestRetryHandler createHttpRequestRetryHandler() { return new DefaultHttpRequestRetryHandler(RETRY_COUNT, false) { // TODO HACK to fix https://issues.apache.org/jira/browse/HTTPCLIENT-1120 // can hopefully be removed when 4.1.3 or 4.2 are released @Override public boolean retryRequest(IOException ex, int count, HttpContext ctx) { Object request = ctx.getAttribute(ExecutionContext.HTTP_REQUEST); if(request instanceof HttpUriRequest){ if (request instanceof RequestWrapper) { request = ((RequestWrapper) request).getOriginal(); } if(((HttpUriRequest)request).isAborted()){ log.warn("Workround for HTTPCLIENT-1120 request retry: "+ex); return false; } } /* * When connect fails due to abort, the request is not in the context. * Tried adding the request - with a new key - to the local context in the sample() method, * but the request was not flagged as aborted, so that did not help. * So we check for any specific exception that is triggered. */ if ( (ex instanceof java.net.BindException && ex.getMessage().contains("Address already in use: connect")) || ex.getMessage().contains("Request aborted") // plain IOException ) { /* * The above messages may be generated by aborted connects. * If either occurs in other situations, retrying is unlikely to help, * so preventing retry should not cause a problem. */ log.warn("Workround for HTTPCLIENT-1120 connect retry: "+ex); return false; } return super.retryRequest(ex, count, ctx); } // end of hack }; // set retry count } }; ((AbstractHttpClient) httpClient).addResponseInterceptor(new ResponseContentEncoding()); ((AbstractHttpClient) httpClient).addResponseInterceptor(METRICS_SAVER); // HACK ((AbstractHttpClient) httpClient).addRequestInterceptor(METRICS_RESETTER); // Override the defualt schemes as necessary SchemeRegistry schemeRegistry = httpClient.getConnectionManager().getSchemeRegistry(); if (SLOW_HTTP != null){ schemeRegistry.register(SLOW_HTTP); } if (HTTPS_SCHEME != null){ schemeRegistry.register(HTTPS_SCHEME); } // Set up proxy details if (useDynamicProxy){ HttpHost proxy = new HttpHost(proxyHost, proxyPort); clientParams.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); String proxyUser = getProxyUser(); if (proxyUser.length() > 0) { ((AbstractHttpClient) httpClient).getCredentialsProvider().setCredentials( new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(proxyUser, getProxyPass())); } } else if (useStaticProxy) { HttpHost proxy = new HttpHost(PROXY_HOST, PROXY_PORT); clientParams.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); if (PROXY_USER.length() > 0) { ((AbstractHttpClient) httpClient).getCredentialsProvider().setCredentials( new AuthScope(PROXY_HOST, PROXY_PORT), new UsernamePasswordCredentials(PROXY_USER, PROXY_PASS)); } } // Bug 52126 - we do our own cookie handling clientParams.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.IGNORE_COOKIES); if (log.isDebugEnabled()) { log.debug("Created new HttpClient: @"+System.identityHashCode(httpClient)); } map.put(key, httpClient); // save the agent for next time round } else { if (log.isDebugEnabled()) { log.debug("Reusing the HttpClient: @"+System.identityHashCode(httpClient)); } } // TODO - should this be done when the client is created? // If so, then the details need to be added as part of HttpClientKey setConnectionAuthorization(httpClient, url, getAuthManager()); return httpClient; } private void setupRequest(URL url, HttpRequestBase httpRequest, HTTPSampleResult res) throws IOException { HttpParams requestParams = httpRequest.getParams(); // Set up the local address if one exists final String ipSource = getIpSource(); if (ipSource.length() > 0) {// Use special field ip source address (for pseudo 'ip spoofing') InetAddress inetAddr = InetAddress.getByName(ipSource); requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, inetAddr); } else if (localAddress != null){ requestParams.setParameter(ConnRoutePNames.LOCAL_ADDRESS, localAddress); } else { // reset in case was set previously requestParams.removeParameter(ConnRoutePNames.LOCAL_ADDRESS); } int rto = getResponseTimeout(); if (rto > 0){ requestParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, rto); } int cto = getConnectTimeout(); if (cto > 0){ requestParams.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, cto); } requestParams.setBooleanParameter(ClientPNames.HANDLE_REDIRECTS, getAutoRedirects()); // a well-behaved browser is supposed to send 'Connection: close' // with the last request to an HTTP server. Instead, most browsers // leave it to the server to close the connection after their // timeout period. Leave it to the JMeter user to decide. if (getUseKeepAlive()) { httpRequest.setHeader(HTTPConstants.HEADER_CONNECTION, HTTPConstants.KEEP_ALIVE); } else { httpRequest.setHeader(HTTPConstants.HEADER_CONNECTION, HTTPConstants.CONNECTION_CLOSE); } setConnectionHeaders(httpRequest, url, getHeaderManager(), getCacheManager()); String cookies = setConnectionCookie(httpRequest, url, getCookieManager()); if (res != null) { res.setCookies(cookies); } } /** * Set any default request headers to include * * @param request the HttpRequest to be used */ protected void setDefaultRequestHeaders(HttpRequest request) { // Method left empty here, but allows subclasses to override } /** * Gets the ResponseHeaders * * @param response * containing the headers * @return string containing the headers, one per line */ private String getResponseHeaders(HttpResponse response) { StringBuilder headerBuf = new StringBuilder(); Header[] rh = response.getAllHeaders(); headerBuf.append(response.getStatusLine());// header[0] is not the status line... headerBuf.append("\n"); // $NON-NLS-1$ for (int i = 0; i < rh.length; i++) { headerBuf.append(rh[i].getName()); headerBuf.append(": "); // $NON-NLS-1$ headerBuf.append(rh[i].getValue()); headerBuf.append("\n"); // $NON-NLS-1$ } return headerBuf.toString(); } /** * Extracts all the required cookies for that particular URL request and * sets them in the HttpMethod passed in. * * @param request HttpRequest for the request * @param url URL of the request * @param cookieManager the CookieManager containing all the cookies * @return a String containing the cookie details (for the response) * May be null */ private String setConnectionCookie(HttpRequest request, URL url, CookieManager cookieManager) { String cookieHeader = null; if (cookieManager != null) { cookieHeader = cookieManager.getCookieHeaderForURL(url); if (cookieHeader != null) { request.setHeader(HTTPConstants.HEADER_COOKIE, cookieHeader); } } return cookieHeader; } /** * Extracts all the required non-cookie headers for that particular URL request and * sets them in the HttpMethod passed in * * @param request * HttpRequest which represents the request * @param url * URL of the URL request * @param headerManager * the HeaderManager containing all the cookies * for this UrlConfig * @param cacheManager the CacheManager (may be null) */ private void setConnectionHeaders(HttpRequestBase request, URL url, HeaderManager headerManager, CacheManager cacheManager) { if (headerManager != null) { CollectionProperty headers = headerManager.getHeaders(); if (headers != null) { PropertyIterator i = headers.iterator(); while (i.hasNext()) { org.apache.jmeter.protocol.http.control.Header header = (org.apache.jmeter.protocol.http.control.Header) i.next().getObjectValue(); String n = header.getName(); // Don't allow override of Content-Length // TODO - what other headers are not allowed? if (! HTTPConstants.HEADER_CONTENT_LENGTH.equalsIgnoreCase(n)){ String v = header.getValue(); if (HTTPConstants.HEADER_HOST.equalsIgnoreCase(n)) { int port = url.getPort(); v = v.replaceFirst(":\\d+$",""); // remove any port specification // $NON-NLS-1$ $NON-NLS-2$ if (port != -1) { if (port == url.getDefaultPort()) { port = -1; // no need to specify the port if it is the default } } request.getParams().setParameter(ClientPNames.VIRTUAL_HOST, new HttpHost(v, port)); } else { request.addHeader(n, v); } } } } } if (cacheManager != null){ cacheManager.setHeaders(url, request); } } /** * Get all the request headers for the HttpMethod * * @param method * HttpMethod which represents the request * @return the headers as a string */ private String getConnectionHeaders(HttpRequest method) { // Get all the request headers StringBuilder hdrs = new StringBuilder(100); Header[] requestHeaders = method.getAllHeaders(); for(int i = 0; i < requestHeaders.length; i++) { // Exclude the COOKIE header, since cookie is reported separately in the sample if(!HTTPConstants.HEADER_COOKIE.equalsIgnoreCase(requestHeaders[i].getName())) { hdrs.append(requestHeaders[i].getName()); hdrs.append(": "); // $NON-NLS-1$ hdrs.append(requestHeaders[i].getValue()); hdrs.append("\n"); // $NON-NLS-1$ } } return hdrs.toString(); } private void setConnectionAuthorization(HttpClient client, URL url, AuthManager authManager) { CredentialsProvider credentialsProvider = ((AbstractHttpClient) client).getCredentialsProvider(); if (authManager != null) { Authorization auth = authManager.getAuthForURL(url); if (auth != null) { String username = auth.getUser(); String realm = auth.getRealm(); String domain = auth.getDomain(); if (log.isDebugEnabled()){ log.debug(username + " > D="+domain+" R="+realm); } credentialsProvider.setCredentials( new AuthScope(url.getHost(), url.getPort(), realm.length()==0 ? null : realm), new NTCredentials(username, auth.getPass(), localHost, domain)); } else { credentialsProvider.clear(); } } else { credentialsProvider.clear(); } } // Helper class so we can generate request data without dumping entire file contents private static class ViewableFileBody extends FileBody { private boolean hideFileData; public ViewableFileBody(File file, String mimeType) { super(file, mimeType); hideFileData = false; } @Override public void writeTo(final OutputStream out) throws IOException { if (hideFileData) { out.write("".getBytes());// encoding does not really matter here } else { super.writeTo(out); } } } // TODO needs cleaning up private String sendPostData(HttpPost post) throws IOException { // Buffer to hold the post body, except file content StringBuilder postedBody = new StringBuilder(1000); HTTPFileArg files[] = getHTTPFiles(); final String contentEncoding = getContentEncodingOrNull(); final boolean haveContentEncoding = contentEncoding != null; // Check if we should do a multipart/form-data or an // application/x-www-form-urlencoded post request if(getUseMultipartForPost()) { // If a content encoding is specified, we use that as the // encoding of any parameter values Charset charset = null; if(haveContentEncoding) { charset = Charset.forName(contentEncoding); } // Write the request to our own stream MultipartEntity multiPart = new MultipartEntity( getDoBrowserCompatibleMultipart() ? HttpMultipartMode.BROWSER_COMPATIBLE : HttpMultipartMode.STRICT, null, charset); // Create the parts // Add any parameters PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); String parameterName = arg.getName(); if (arg.isSkippable(parameterName)){ continue; } FormBodyPart formPart; StringBody stringBody = new StringBody(arg.getValue(), charset); formPart = new FormBodyPart(arg.getName(), stringBody); multiPart.addPart(formPart); } // Add any files // Cannot retrieve parts once added to the MultiPartEntity, so have to save them here. ViewableFileBody[] fileBodies = new ViewableFileBody[files.length]; for (int i=0; i < files.length; i++) { HTTPFileArg file = files[i]; fileBodies[i] = new ViewableFileBody(new File(file.getPath()), file.getMimeType()); multiPart.addPart(file.getParamName(),fileBodies[i]); } post.setEntity(multiPart); if (multiPart.isRepeatable()){ ByteArrayOutputStream bos = new ByteArrayOutputStream(); for(ViewableFileBody fileBody : fileBodies){ fileBody.hideFileData = true; } multiPart.writeTo(bos); for(ViewableFileBody fileBody : fileBodies){ fileBody.hideFileData = false; } bos.flush(); // We get the posted bytes using the encoding used to create it postedBody.append(new String(bos.toByteArray(), contentEncoding == null ? "US-ASCII" // $NON-NLS-1$ this is the default used by HttpClient : contentEncoding)); bos.close(); } else { postedBody.append(""); // $NON-NLS-1$ } // // Set the content type TODO - needed? // String multiPartContentType = multiPart.getContentType().getValue(); // post.setHeader(HEADER_CONTENT_TYPE, multiPartContentType); } else { // not multipart // Check if the header manager had a content type header // This allows the user to specify his own content-type for a POST request Header contentTypeHeader = post.getFirstHeader(HTTPConstants.HEADER_CONTENT_TYPE); boolean hasContentTypeHeader = contentTypeHeader != null && contentTypeHeader.getValue() != null && contentTypeHeader.getValue().length() > 0; // If there are no arguments, we can send a file as the body of the request // TODO: needs a multiple file upload scenerio if(!hasArguments() && getSendFileAsPostBody()) { // If getSendFileAsPostBody returned true, it's sure that file is not null HTTPFileArg file = files[0]; if(!hasContentTypeHeader) { // Allow the mimetype of the file to control the content type if(file.getMimeType() != null && file.getMimeType().length() > 0) { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } FileEntity fileRequestEntity = new FileEntity(new File(file.getPath()),(ContentType) null);// TODO is null correct? post.setEntity(fileRequestEntity); // We just add placeholder text for file content postedBody.append(""); } else { // In a post request which is not multipart, we only support // parameters, no file upload is allowed // If a content encoding is specified, we set it as http parameter, so that // the post body will be encoded in the specified content encoding if(haveContentEncoding) { post.getParams().setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET, contentEncoding); } // If none of the arguments have a name specified, we // just send all the values as the post body if(getSendParameterValuesAsPostBody()) { // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters // TODO: needs a multiple file upload scenerio if(!hasContentTypeHeader) { HTTPFileArg file = files.length > 0? files[0] : null; if(file != null && file.getMimeType() != null && file.getMimeType().length() > 0) { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { // TODO - is this the correct default? post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } // Just append all the parameter values, and use that as the post body StringBuilder postBody = new StringBuilder(); PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); // Note: if "Encoded?" is not selected, arg.getEncodedValue is equivalent to arg.getValue if (haveContentEncoding) { postBody.append(arg.getEncodedValue(contentEncoding)); } else { postBody.append(arg.getEncodedValue()); } } // Let StringEntity perform the encoding StringEntity requestEntity = new StringEntity(postBody.toString(), contentEncoding); post.setEntity(requestEntity); postedBody.append(postBody.toString()); } else { // It is a normal post request, with parameter names and values // Set the content type if(!hasContentTypeHeader) { post.setHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } // Add the parameters PropertyIterator args = getArguments().iterator(); List nvps = new ArrayList (); String urlContentEncoding = contentEncoding; if(urlContentEncoding == null || urlContentEncoding.length() == 0) { // Use the default encoding for urls urlContentEncoding = EncoderCache.URL_ARGUMENT_ENCODING; } while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); // The HTTPClient always urlencodes both name and value, // so if the argument is already encoded, we have to decode // it before adding it to the post request String parameterName = arg.getName(); if (arg.isSkippable(parameterName)){ continue; } String parameterValue = arg.getValue(); if(!arg.isAlwaysEncoded()) { // The value is already encoded by the user // Must decode the value now, so that when the // httpclient encodes it, we end up with the same value // as the user had entered. parameterName = URLDecoder.decode(parameterName, urlContentEncoding); parameterValue = URLDecoder.decode(parameterValue, urlContentEncoding); } // Add the parameter, httpclient will urlencode it nvps.add(new BasicNameValuePair(parameterName, parameterValue)); } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(nvps, urlContentEncoding); post.setEntity(entity); if (entity.isRepeatable()){ ByteArrayOutputStream bos = new ByteArrayOutputStream(); post.getEntity().writeTo(bos); bos.flush(); // We get the posted bytes using the encoding used to create it if (contentEncoding != null) { postedBody.append(new String(bos.toByteArray(), contentEncoding)); } else { postedBody.append(new String(bos.toByteArray(), SampleResult.DEFAULT_HTTP_ENCODING)); } bos.close(); } else { postedBody.append(""); } } } } return postedBody.toString(); } // TODO merge put and post methods as far as possible. // e.g. post checks for multipart form/files, and if not, invokes sendData(HttpEntityEnclosingRequestBase) /** * Creates the entity data to be sent. *

        * If there is a file entry with a non-empty MIME type we use that to * set the request Content-Type header, otherwise we default to whatever * header is present from a Header Manager. *

        * If the content charset {@link #getContentEncoding()} is null or empty * we use the HC4 default provided by {@link HTTP.DEF_CONTENT_CHARSET} which is * ISO-8859-1. * * @param entity to be processed, e.g. PUT or PATCH * @return the entity content, may be empty * @throws UnsupportedEncodingException for invalid charset name * @throws IOException cannot really occur for ByteArrayOutputStream methods */ private String sendEntityData( HttpEntityEnclosingRequestBase entity) throws IOException { // Buffer to hold the entity body StringBuilder entityBody = new StringBuilder(1000); boolean hasEntityBody = false; final HTTPFileArg files[] = getHTTPFiles(); // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters final HTTPFileArg file = files.length > 0? files[0] : null; String contentTypeValue = null; if(file != null && file.getMimeType() != null && file.getMimeType().length() > 0) { contentTypeValue = file.getMimeType(); entity.setHeader(HEADER_CONTENT_TYPE, contentTypeValue); // we provide the MIME type here } // Check for local contentEncoding (charset) override; fall back to default for content body // we do this here rather so we can use the same charset to retrieve the data final String charset = getContentEncoding(HTTP.DEF_CONTENT_CHARSET.name()); // Only create this if we are overriding whatever default there may be // If there are no arguments, we can send a file as the body of the request if(!hasArguments() && getSendFileAsPostBody()) { hasEntityBody = true; // If getSendFileAsPostBody returned true, it's sure that file is not null FileEntity fileRequestEntity = new FileEntity(new File(files[0].getPath())); // no need for content-type here entity.setEntity(fileRequestEntity); } // If none of the arguments have a name specified, we // just send all the values as the entity body else if(getSendParameterValuesAsPostBody()) { hasEntityBody = true; // Just append all the parameter values, and use that as the entity body StringBuilder entityBodyContent = new StringBuilder(); PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); // Note: if "Encoded?" is not selected, arg.getEncodedValue is equivalent to arg.getValue if (charset!= null) { entityBodyContent.append(arg.getEncodedValue(charset)); } else { entityBodyContent.append(arg.getEncodedValue()); } } StringEntity requestEntity = new StringEntity(entityBodyContent.toString(), charset); entity.setEntity(requestEntity); } // Check if we have any content to send for body if(hasEntityBody) { // If the request entity is repeatable, we can send it first to // our own stream, so we can return it final HttpEntity entityEntry = entity.getEntity(); if(entityEntry.isRepeatable()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); entityEntry.writeTo(bos); bos.flush(); // We get the posted bytes using the charset that was used to create them entityBody.append(new String(bos.toByteArray(), charset)); bos.close(); } else { // this probably cannot happen entityBody.append(""); } } return entityBody.toString(); // may be the empty string } /** * * @return the value of {@link #getContentEncoding()}; forced to null if empty */ private String getContentEncodingOrNull() { return getContentEncoding(null); } /** * @param dflt the default to be used * @return the value of {@link #getContentEncoding()}; default if null or empty */ private String getContentEncoding(String dflt) { String ce = getContentEncoding(); if (isNullOrEmptyTrimmed(ce)) { return dflt; } else { return ce; } } /** * If contentEncoding is not set by user, then Platform encoding will be used to convert to String * @param putParams {@link HttpParams} * @return String charset */ protected String getCharsetWithDefault(HttpParams putParams) { String charset =(String) putParams.getParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET); if(StringUtils.isEmpty(charset)) { charset = Charset.defaultCharset().name(); } return charset; } private void saveConnectionCookies(HttpResponse method, URL u, CookieManager cookieManager) { if (cookieManager != null) { Header[] hdrs = method.getHeaders(HTTPConstants.HEADER_SET_COOKIE); for (Header hdr : hdrs) { cookieManager.addCookieFromHeader(hdr.getValue(),u); } } } @Override public void threadFinished() { log.debug("Thread Finished"); closeThreadLocalConnections(); } /** * */ private void closeThreadLocalConnections() { // Does not need to be synchronised, as all access is from same thread Map map = HTTPCLIENTS.get(); if ( map != null ) { for ( HttpClient cl : map.values() ) { ((AbstractHttpClient) cl).clearRequestInterceptors(); ((AbstractHttpClient) cl).clearResponseInterceptors(); cl.getConnectionManager().shutdown(); } map.clear(); } } public boolean interrupt() { HttpUriRequest request = currentRequest; if (request != null) { currentRequest = null; // don't try twice try { request.abort(); } catch (UnsupportedOperationException e) { log.warn("Could not abort pending request", e); } } return request != null; } /** {@inheritDoc} */ @Override protected void notifySSLContextWasReset() { log.debug("closeThreadLocalConnections called"); closeThreadLocalConnections(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/PutWriter.java0000644000175000017500000001145512032647215031430 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.net.URLConnection; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.testelement.property.PropertyIterator; /** * Class for setting the necessary headers for a PUT request, and sending the * body of the PUT. */ public class PutWriter extends PostWriter { /** * Constructor for PutWriter. */ public PutWriter() { // Put request does not use multipart, so no need for boundary super(null); } @Override public void setHeaders(URLConnection connection, HTTPSamplerBase sampler) throws IOException { // Get the encoding to use for the request String contentEncoding = sampler.getContentEncoding(); if(contentEncoding == null || contentEncoding.length() == 0) { contentEncoding = ENCODING; } long contentLength = 0L; boolean hasPutBody = false; // Check if the header manager had a content type header // This allows the user to specify his own content-type for a PUT request String contentTypeHeader = connection.getRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE); boolean hasContentTypeHeader = contentTypeHeader != null && contentTypeHeader.length() > 0; HTTPFileArg files[] = sampler.getHTTPFiles(); // If there are no arguments, we can send a file as the body of the request if(sampler.getArguments() != null && sampler.getArguments().getArgumentCount() == 0 && sampler.getSendFileAsPostBody()) { // If getSendFileAsPostBody returned true, it's sure that file is not null HTTPFileArg file = files[0]; hasPutBody = true; if(!hasContentTypeHeader) { // Allow the mimetype of the file to control the content type if(file.getMimeType().length() > 0) { connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } } // Create the content length we are going to write File inputFile = new File(file.getPath()); contentLength = inputFile.length(); } else if(sampler.getSendParameterValuesAsPostBody()) { hasPutBody = true; // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters if(!hasContentTypeHeader && files.length == 1 && files[0].getMimeType().length() > 0) { connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_TYPE, files[0].getMimeType()); } // We create the post body content now, so we know the size ByteArrayOutputStream bos = new ByteArrayOutputStream(); // Just append all the parameter values, and use that as the put body StringBuilder putBodyBuffer = new StringBuilder(); PropertyIterator args = sampler.getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); putBodyBuffer.append(arg.getEncodedValue(contentEncoding)); } bos.write(putBodyBuffer.toString().getBytes(contentEncoding)); bos.flush(); bos.close(); // Keep the content, will be sent later formDataUrlEncoded = bos.toByteArray(); contentLength = bos.toByteArray().length; } if(hasPutBody) { // Set the content length connection.setRequestProperty(HTTPConstants.HEADER_CONTENT_LENGTH, Long.toString(contentLength)); // Make the connection ready for sending post data connection.setDoOutput(true); } } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HttpClientDefaultParameters.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HttpClientDefaultParamet0000644000175000017500000001357212032647215033442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.jmeter.protocol.http.sampler; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Properties; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /* * Utility class to set up default HttpClient parameters from a file. * * Supports both Commons HttpClient and Apache HttpClient. * */ public class HttpClientDefaultParameters { private static final Logger log = LoggingManager.getLoggerForClass(); // Non-instantiable private HttpClientDefaultParameters(){ } // Helper class (callback) for applying parameter definitions private static abstract class GenericHttpParams { public abstract void setParameter(String name, Object value); public abstract void setVersion(String name, String value) throws Exception; } /** * Loads a property file and converts parameters as necessary. * * @param file the file to load * @param params Commons HttpClient parameter instance */ public static void load(String file, final org.apache.commons.httpclient.params.HttpParams params){ load(file, new GenericHttpParams (){ @Override public void setParameter(String name, Object value) { params.setParameter(name, value); } @Override public void setVersion(String name, String value) throws Exception { params.setParameter(name, org.apache.commons.httpclient.HttpVersion.parse("HTTP/"+value)); } } ); } /** * Loads a property file and converts parameters as necessary. * * @param file the file to load * @param params Apache HttpClient parameter instance */ public static void load(String file, final org.apache.http.params.HttpParams params){ load(file, new GenericHttpParams (){ @Override public void setParameter(String name, Object value) { params.setParameter(name, value); } @Override public void setVersion(String name, String value) { String parts[] = value.split("\\."); if (parts.length != 2){ throw new IllegalArgumentException("Version must have form m.n"); } params.setParameter(name, new org.apache.http.HttpVersion( Integer.parseInt(parts[0]), Integer.parseInt(parts[1]))); } } ); } private static void load(String file, GenericHttpParams params){ log.info("Reading httpclient parameters from "+file); File f = new File(file); InputStream is = null; Properties props = new Properties(); try { is = new FileInputStream(f); props.load(is); for (Map.Entry me : props.entrySet()){ String key = (String) me.getKey(); String value = (String)me.getValue(); int typeSep = key.indexOf('$'); // $NON-NLS-1$ try { if (typeSep > 0){ String type = key.substring(typeSep+1);// get past separator String name=key.substring(0,typeSep); log.info("Defining "+name+ " as "+value+" ("+type+")"); if (type.equals("Integer")){ params.setParameter(name, Integer.valueOf(value)); } else if (type.equals("Long")){ params.setParameter(name, Long.valueOf(value)); } else if (type.equals("Boolean")){ params.setParameter(name, Boolean.valueOf(value)); } else if (type.equals("HttpVersion")){ // Commons HttpClient only params.setVersion(name, value); } else { log.warn("Unexpected type: "+type+" for name "+name); } } else { log.info("Defining "+key+ " as "+value); params.setParameter(key, value); } } catch (Exception e) { log.error("Error in property: "+key+"="+value+" "+e.toString()); } } } catch (FileNotFoundException e) { log.error("Problem loading properties "+e.toString()); } catch (IOException e) { log.error("Problem loading properties "+e.toString()); } finally { JOrphanUtils.closeQuietly(is); } } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBaseConverter.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBaseConverter0000644000175000017500000000514112032647215033324 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on Sep 14, 2004 * */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.save.converters.TestElementConverter; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.mapper.Mapper; /** * Class for XStream conversion of HTTPResult * */ public class HTTPSamplerBaseConverter extends TestElementConverter { /** * Returns the converter version; used to check for possible * incompatibilities */ public static String getVersion() { return "$Revision: 1040356 $"; //$NON-NLS-1$ } public HTTPSamplerBaseConverter(Mapper arg0) { super(arg0); } /** {@inheritDoc} */ @Override public boolean canConvert(@SuppressWarnings("rawtypes") Class arg0) { // superclass does not support types return HTTPSamplerBase.class.isAssignableFrom(arg0); } /** * Override TestElementConverter; convert HTTPSamplerBase to merge * the two means of providing file names into a single list. * * {@inheritDoc} */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { final HTTPSamplerBase httpSampler = (HTTPSamplerBase) super.unmarshal(reader, context); // Help convert existing JMX files which use HTTPSampler[2] nodes String nodeName = reader.getNodeName(); if (nodeName.equals(HTTPSamplerFactory.HTTP_SAMPLER_JAVA)){ httpSampler.setImplementation(HTTPSamplerFactory.IMPL_JAVA); } if (nodeName.equals(HTTPSamplerFactory.HTTP_SAMPLER_APACHE)){ httpSampler.setImplementation(HTTPSamplerFactory.IMPL_HTTP_CLIENT3_1); } httpSampler.mergeFileProperties(); return httpSampler; } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler2.java0000644000175000017500000000551312032647215031646 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.sampler; import java.io.IOException; import java.net.URL; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpMethodBase; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.samplers.Interruptible; /** * A sampler which understands all the parts necessary to read statistics about * HTTP requests, including cookies and authentication. * This sampler uses HttpClient 3.1. * */ public class HTTPSampler2 extends HTTPSamplerBase implements Interruptible { private static final long serialVersionUID = 240L; private final transient HTTPHC3Impl hc; public HTTPSampler2(){ hc = new HTTPHC3Impl(this); } public boolean interrupt() { return hc.interrupt(); } @Override protected HTTPSampleResult sample(URL u, String method, boolean areFollowingRedirect, int depth) { return hc.sample(u, method, areFollowingRedirect, depth); } // Methods needed by subclasses to get access to the implementation protected HttpClient setupConnection(URL url, HttpMethodBase httpMethod, HTTPSampleResult res) throws IOException { return hc.setupConnection(url, httpMethod, res); } protected void saveConnectionCookies(HttpMethod httpMethod, URL url, CookieManager cookieManager) { hc.saveConnectionCookies(httpMethod, url, cookieManager); } protected String getResponseHeaders(HttpMethod httpMethod) { return hc.getResponseHeaders(httpMethod); } protected String getConnectionHeaders(HttpMethod httpMethod) { return hc.getConnectionHeaders(httpMethod); } protected void setSavedClient(HttpClient savedClient) { hc.savedClient = savedClient; } /** * {@inheritDoc} * This implementation forwards to the implementation class. */ @Override protected void notifySSLContextWasReset() { hc.notifySSLContextWasReset(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHCAbstractImpl.java0000644000175000017500000001370212032647215032760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.StringTokenizer; import org.apache.jmeter.JMeter; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Common parent class for HttpClient implementations. * * Includes system property settings that are handled internally by the Java HTTP implementation, * but which need to be explicitly configured in HttpClient implementations. */ public abstract class HTTPHCAbstractImpl extends HTTPAbstractImpl { private static final Logger log = LoggingManager.getLoggerForClass(); protected static final String PROXY_HOST = System.getProperty("http.proxyHost",""); protected static final String NONPROXY_HOSTS = System.getProperty("http.nonProxyHosts",""); protected static final int PROXY_PORT = Integer.parseInt(System.getProperty("http.proxyPort","0")); protected static final boolean PROXY_DEFINED = PROXY_HOST.length() > 0 && PROXY_PORT > 0; protected static final String PROXY_USER = JMeterUtils.getPropDefault(JMeter.HTTP_PROXY_USER,""); protected static final String PROXY_PASS = JMeterUtils.getPropDefault(JMeter.HTTP_PROXY_PASS,""); protected static final String PROXY_DOMAIN = JMeterUtils.getPropDefault("http.proxyDomain",""); protected static final InetAddress localAddress; protected static final String localHost; protected static final Set nonProxyHostFull = new HashSet(); protected static final List nonProxyHostSuffix = new ArrayList(); protected static final int nonProxyHostSuffixSize; protected static final int CPS_HTTP = JMeterUtils.getPropDefault("httpclient.socket.http.cps", 0); protected static final int CPS_HTTPS = JMeterUtils.getPropDefault("httpclient.socket.https.cps", 0); protected static final boolean USE_LOOPBACK = JMeterUtils.getPropDefault("httpclient.loopback", false); protected static final String HTTP_VERSION = JMeterUtils.getPropDefault("httpclient.version", "1.1"); // -1 means not defined protected static final int SO_TIMEOUT = JMeterUtils.getPropDefault("httpclient.timeout", -1); static { if (NONPROXY_HOSTS.length() > 0){ StringTokenizer s = new StringTokenizer(NONPROXY_HOSTS,"|");// $NON-NLS-1$ while (s.hasMoreTokens()){ String t = s.nextToken(); if (t.indexOf('*') ==0){// e.g. *.apache.org // $NON-NLS-1$ nonProxyHostSuffix.add(t.substring(1)); } else { nonProxyHostFull.add(t);// e.g. www.apache.org } } } nonProxyHostSuffixSize=nonProxyHostSuffix.size(); InetAddress inet=null; String localHostOrIP = JMeterUtils.getPropDefault("httpclient.localaddress",""); // $NON-NLS-1$ if (localHostOrIP.length() > 0){ try { inet = InetAddress.getByName(localHostOrIP); log.info("Using localAddress "+inet.getHostAddress()); } catch (UnknownHostException e) { log.warn(e.getLocalizedMessage()); } } else { try { InetAddress addr = InetAddress.getLocalHost(); // Get hostname localHostOrIP = addr.getHostName(); } catch (UnknownHostException e) { log.warn("Cannot determine localhost name, and httpclient.localaddress was not specified"); } } localAddress = inet; localHost = localHostOrIP; log.info("Local host = "+localHost); } protected HTTPHCAbstractImpl(HTTPSamplerBase testElement) { super(testElement); } protected static boolean isNonProxy(String host){ return nonProxyHostFull.contains(host) || isPartialMatch(host); } protected static boolean isPartialMatch(String host) { for (int i=0;i 0); } /** * Is a static proxy defined? * * @param host to check against non-proxy hosts * @return {@code true} iff a static proxy has been defined. */ protected static boolean isStaticProxy(String host){ return PROXY_DEFINED && !isNonProxy(host); } /** * @param value String value to test * @return true if value is null or empty trimmed */ protected static boolean isNullOrEmptyTrimmed(String value) { return JOrphanUtils.isBlank(value); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java0000644000175000017500000014264212032647215031365 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.sampler; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.zip.GZIPInputStream; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpConnectionManager; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.HttpMethodBase; import org.apache.commons.httpclient.HttpState; import org.apache.commons.httpclient.HttpVersion; import org.apache.commons.httpclient.NTCredentials; import org.apache.commons.httpclient.ProtocolException; import org.apache.commons.httpclient.SimpleHttpConnectionManager; import org.apache.commons.httpclient.auth.AuthScope; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.methods.DeleteMethod; import org.apache.commons.httpclient.methods.EntityEnclosingMethod; import org.apache.commons.httpclient.methods.FileRequestEntity; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.HeadMethod; import org.apache.commons.httpclient.methods.OptionsMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.PutMethod; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.commons.httpclient.methods.TraceMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.methods.multipart.PartBase; import org.apache.commons.httpclient.methods.multipart.StringPart; import org.apache.commons.httpclient.params.DefaultHttpParams; import org.apache.commons.httpclient.params.HttpClientParams; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.httpclient.params.HttpParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.io.input.CountingInputStream; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.util.EncoderCache; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.HTTPFileArg; import org.apache.jmeter.protocol.http.util.LoopbackHttpClientSocketFactory; import org.apache.jmeter.protocol.http.util.SlowHttpClientSocketFactory; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.SSLManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * HTTP sampler using Apache (Jakarta) Commons HttpClient 3.1. */ public class HTTPHC3Impl extends HTTPHCAbstractImpl { private static final Logger log = LoggingManager.getLoggerForClass(); /** retry count to be used (default 1); 0 = disable retries */ private static final int RETRY_COUNT = JMeterUtils.getPropDefault("httpclient3.retrycount", 1); private static final String HTTP_AUTHENTICATION_PREEMPTIVE = "http.authentication.preemptive"; // $NON-NLS-1$ private static final boolean canSetPreEmptive; // OK to set pre-emptive auth? private static final ThreadLocal> httpClients = new ThreadLocal>(){ @Override protected Map initialValue() { return new HashMap(); } }; // Needs to be accessible by HTTPSampler2 volatile HttpClient savedClient; static { log.info("HTTP request retry count = "+RETRY_COUNT); if (CPS_HTTP > 0) { log.info("Setting up HTTP SlowProtocol, cps="+CPS_HTTP); Protocol.registerProtocol(HTTPConstants.PROTOCOL_HTTP, new Protocol(HTTPConstants.PROTOCOL_HTTP,new SlowHttpClientSocketFactory(CPS_HTTP),HTTPConstants.DEFAULT_HTTP_PORT)); } // Now done in JsseSSLManager (which needs to register the protocol) // cps = // JMeterUtils.getPropDefault("httpclient.socket.https.cps", 0); // $NON-NLS-1$ // // if (cps > 0) { // log.info("Setting up HTTPS SlowProtocol, cps="+cps); // Protocol.registerProtocol(PROTOCOL_HTTPS, // new Protocol(PROTOCOL_HTTPS,new SlowHttpClientSocketFactory(cps),DEFAULT_HTTPS_PORT)); // } // Set default parameters as needed HttpParams params = DefaultHttpParams.getDefaultParams(); // Process Commons HttpClient parameters file String file=JMeterUtils.getProperty("httpclient.parameters.file"); // $NON-NLS-1$ if (file != null) { HttpClientDefaultParameters.load(file, params); } // If the pre-emptive parameter is undefined, then we can set it as needed // otherwise we should do what the user requested. canSetPreEmptive = params.getParameter(HTTP_AUTHENTICATION_PREEMPTIVE) == null; // Handle old-style JMeter properties try { params.setParameter(HttpMethodParams.PROTOCOL_VERSION, HttpVersion.parse("HTTP/"+HTTP_VERSION)); } catch (ProtocolException e) { log.warn("Problem setting protocol version "+e.getLocalizedMessage()); } if (SO_TIMEOUT >= 0){ params.setIntParameter(HttpMethodParams.SO_TIMEOUT, SO_TIMEOUT); } // This must be done last, as must not be overridden params.setParameter(HttpMethodParams.COOKIE_POLICY,CookiePolicy.IGNORE_COOKIES); // We do our own cookie handling if (USE_LOOPBACK){ LoopbackHttpClientSocketFactory.setup(); } } protected HTTPHC3Impl(HTTPSamplerBase base) { super(base); } /** * Samples the URL passed in and stores the result in * HTTPSampleResult, following redirects and downloading * page resources as appropriate. *

        * When getting a redirect target, redirects are not followed and resources * are not downloaded. The caller will take care of this. * * @param url * URL to sample * @param method * HTTP method: GET, POST,... * @param areFollowingRedirect * whether we're getting a redirect target * @param frameDepth * Depth of this target in the frame structure. Used only to * prevent infinite recursion. * @return results of the sampling */ @Override protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth) { String urlStr = url.toString(); log.debug("Start : sample " + urlStr); log.debug("method " + method); HttpMethodBase httpMethod = null; HTTPSampleResult res = new HTTPSampleResult(); res.setMonitor(isMonitor()); res.setSampleLabel(urlStr); // May be replaced later res.setHTTPMethod(method); res.setURL(url); res.sampleStart(); // Count the retries as well in the time try { // May generate IllegalArgumentException if (method.equals(HTTPConstants.POST)) { httpMethod = new PostMethod(urlStr); } else if (method.equals(HTTPConstants.PUT)){ httpMethod = new PutMethod(urlStr); } else if (method.equals(HTTPConstants.HEAD)){ httpMethod = new HeadMethod(urlStr); } else if (method.equals(HTTPConstants.TRACE)){ httpMethod = new TraceMethod(urlStr); } else if (method.equals(HTTPConstants.OPTIONS)){ httpMethod = new OptionsMethod(urlStr); } else if (method.equals(HTTPConstants.DELETE)){ httpMethod = new DeleteMethod(urlStr); } else if (method.equals(HTTPConstants.GET)){ httpMethod = new GetMethod(urlStr); } else if (method.equals(HTTPConstants.PATCH)){ httpMethod = new EntityEnclosingMethod(urlStr) { @Override public String getName() { // HC3.1 does not have the method return "PATCH"; } }; } else { throw new IllegalArgumentException("Unexpected method: "+method); } final CacheManager cacheManager = getCacheManager(); if (cacheManager != null && HTTPConstants.GET.equalsIgnoreCase(method)) { if (cacheManager.inCache(url)) { res.sampleEnd(); res.setResponseNoContent(); res.setSuccessful(true); return res; } } // Set any default request headers setDefaultRequestHeaders(httpMethod); // Setup connection HttpClient client = setupConnection(url, httpMethod, res); savedClient = client; // Handle the various methods if (method.equals(HTTPConstants.POST)) { String postBody = sendPostData((PostMethod)httpMethod); res.setQueryString(postBody); } else if (method.equals(HTTPConstants.PUT) || method.equals(HTTPConstants.PATCH)) { String putBody = sendEntityData((EntityEnclosingMethod) httpMethod); res.setQueryString(putBody); } int statusCode = client.executeMethod(httpMethod); // Needs to be done after execute to pick up all the headers res.setRequestHeaders(getConnectionHeaders(httpMethod)); // Request sent. Now get the response: InputStream instream = httpMethod.getResponseBodyAsStream(); if (instream != null) {// will be null for HEAD instream = new CountingInputStream(instream); try { Header responseHeader = httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_ENCODING); if (responseHeader!= null && HTTPConstants.ENCODING_GZIP.equals(responseHeader.getValue())) { InputStream tmpInput = new GZIPInputStream(instream); // tmp inputstream needs to have a good counting res.setResponseData(readResponse(res, tmpInput, (int) httpMethod.getResponseContentLength())); } else { res.setResponseData(readResponse(res, instream, (int) httpMethod.getResponseContentLength())); } } finally { JOrphanUtils.closeQuietly(instream); } } res.sampleEnd(); // Done with the sampling proper. // Now collect the results into the HTTPSampleResult: res.setSampleLabel(httpMethod.getURI().toString()); // Pick up Actual path (after redirects) res.setResponseCode(Integer.toString(statusCode)); res.setSuccessful(isSuccessCode(statusCode)); res.setResponseMessage(httpMethod.getStatusText()); String ct = null; Header h = httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE); if (h != null)// Can be missing, e.g. on redirect { ct = h.getValue(); res.setContentType(ct);// e.g. text/html; charset=ISO-8859-1 res.setEncodingAndType(ct); } res.setResponseHeaders(getResponseHeaders(httpMethod)); if (res.isRedirect()) { final Header headerLocation = httpMethod.getResponseHeader(HTTPConstants.HEADER_LOCATION); if (headerLocation == null) { // HTTP protocol violation, but avoids NPE throw new IllegalArgumentException("Missing location header"); } res.setRedirectLocation(headerLocation.getValue()); } // record some sizes to allow HTTPSampleResult.getBytes() with different options if (instream != null) { res.setBodySize(((CountingInputStream) instream).getCount()); } res.setHeadersSize(calculateHeadersSize(httpMethod)); if (log.isDebugEnabled()) { log.debug("Response headersSize=" + res.getHeadersSize() + " bodySize=" + res.getBodySize() + " Total=" + (res.getHeadersSize() + res.getBodySize())); } // If we redirected automatically, the URL may have changed if (getAutoRedirects()){ res.setURL(new URL(httpMethod.getURI().toString())); } // Store any cookies received in the cookie manager: saveConnectionCookies(httpMethod, res.getURL(), getCookieManager()); // Save cache information if (cacheManager != null){ cacheManager.saveDetails(httpMethod, res); } // Follow redirects and download page resources if appropriate: res = resultProcessing(areFollowingRedirect, frameDepth, res); log.debug("End : sample"); return res; } catch (IllegalArgumentException e) { // e.g. some kinds of invalid URL res.sampleEnd(); errorResult(e, res); return res; } catch (IOException e) { res.sampleEnd(); errorResult(e, res); return res; } finally { savedClient = null; if (httpMethod != null) { httpMethod.releaseConnection(); } } } /** * Calculate response headers size * * @return the size response headers (in bytes) */ private static int calculateHeadersSize(HttpMethodBase httpMethod) { int headerSize = httpMethod.getStatusLine().toString().length()+2; // add a \r\n Header[] rh = httpMethod.getResponseHeaders(); for (int i = 0; i < rh.length; i++) { headerSize += rh[i].toString().length(); // already include the \r\n } headerSize += 2; // last \r\n before response data return headerSize; } /** * Returns an HttpConnection fully ready to attempt * connection. This means it sets the request method (GET or POST), headers, * cookies, and authorization for the URL request. *

        * The request infos are saved into the sample result if one is provided. * * @param u * URL of the URL request * @param httpMethod * GET/PUT/HEAD etc * @param res * sample result to save request infos to * @return HttpConnection ready for .connect * @exception IOException * if an I/O Exception occurs */ protected HttpClient setupConnection(URL u, HttpMethodBase httpMethod, HTTPSampleResult res) throws IOException { String urlStr = u.toString(); org.apache.commons.httpclient.URI uri = new org.apache.commons.httpclient.URI(urlStr,false); String schema = uri.getScheme(); if ((schema == null) || (schema.length()==0)) { schema = HTTPConstants.PROTOCOL_HTTP; } if (HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(schema)){ SSLManager.getInstance(); // ensure the manager is initialised // we don't currently need to do anything further, as this sets the default https protocol } Protocol protocol = Protocol.getProtocol(schema); String host = uri.getHost(); int port = uri.getPort(); /* * We use the HostConfiguration as the key to retrieve the HttpClient, * so need to ensure that any items used in its equals/hashcode methods are * not changed after use, i.e.: * host, port, protocol, localAddress, proxy * */ HostConfiguration hc = new HostConfiguration(); hc.setHost(host, port, protocol); // All needed to ensure re-usablility // Set up the local address if one exists if (localAddress != null){ hc.setLocalAddress(localAddress); } else { final String ipSource = getIpSource(); if (ipSource.length() > 0) {// Use special field ip source address (for pseudo 'ip spoofing') InetAddress inetAddr = InetAddress.getByName(ipSource); hc.setLocalAddress(inetAddr); } } final String proxyHost = getProxyHost(); final int proxyPort = getProxyPortInt(); boolean useStaticProxy = isStaticProxy(host); boolean useDynamicProxy = isDynamicProxy(proxyHost, proxyPort); if (useDynamicProxy){ hc.setProxy(proxyHost, proxyPort); useStaticProxy = false; // Dynamic proxy overrules static proxy } else if (useStaticProxy) { if (log.isDebugEnabled()){ log.debug("Setting proxy: "+PROXY_HOST+":"+PROXY_PORT); } hc.setProxy(PROXY_HOST, PROXY_PORT); } Map map = httpClients.get(); // N.B. HostConfiguration.equals() includes proxy settings in the compare. HttpClient httpClient = map.get(hc); if ( httpClient == null ) { httpClient = new HttpClient(new SimpleHttpConnectionManager()); httpClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(RETRY_COUNT, false)); if (log.isDebugEnabled()) { log.debug("Created new HttpClient: @"+System.identityHashCode(httpClient)); } httpClient.setHostConfiguration(hc); map.put(hc, httpClient); } else { if (log.isDebugEnabled()) { log.debug("Reusing the HttpClient: @"+System.identityHashCode(httpClient)); } } // Set up any required Proxy credentials if (useDynamicProxy){ String user = getProxyUser(); if (user.length() > 0){ httpClient.getState().setProxyCredentials( new AuthScope(proxyHost,proxyPort,null,AuthScope.ANY_SCHEME), new NTCredentials(user,getProxyPass(),localHost,PROXY_DOMAIN) ); } else { httpClient.getState().clearProxyCredentials(); } } else { if (useStaticProxy) { if (PROXY_USER.length() > 0){ httpClient.getState().setProxyCredentials( new AuthScope(PROXY_HOST,PROXY_PORT,null,AuthScope.ANY_SCHEME), new NTCredentials(PROXY_USER,PROXY_PASS,localHost,PROXY_DOMAIN) ); } } else { httpClient.getState().clearProxyCredentials(); } } int rto = getResponseTimeout(); if (rto > 0){ httpMethod.getParams().setSoTimeout(rto); } int cto = getConnectTimeout(); if (cto > 0){ httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(cto); } // Allow HttpClient to handle the redirects: httpMethod.setFollowRedirects(getAutoRedirects()); // a well-behaved browser is supposed to send 'Connection: close' // with the last request to an HTTP server. Instead, most browsers // leave it to the server to close the connection after their // timeout period. Leave it to the JMeter user to decide. if (getUseKeepAlive()) { httpMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION, HTTPConstants.KEEP_ALIVE); } else { httpMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION, HTTPConstants.CONNECTION_CLOSE); } setConnectionHeaders(httpMethod, u, getHeaderManager(), getCacheManager()); String cookies = setConnectionCookie(httpMethod, u, getCookieManager()); setConnectionAuthorization(httpClient, u, getAuthManager()); if (res != null) { res.setCookies(cookies); } return httpClient; } /** * Set any default request headers to include * * @param httpMethod the HttpMethod used for the request */ protected void setDefaultRequestHeaders(HttpMethod httpMethod) { // Method left empty here, but allows subclasses to override } /** * Gets the ResponseHeaders * * @param method the method used to perform the request * @return string containing the headers, one per line */ protected String getResponseHeaders(HttpMethod method) { StringBuilder headerBuf = new StringBuilder(); org.apache.commons.httpclient.Header rh[] = method.getResponseHeaders(); headerBuf.append(method.getStatusLine());// header[0] is not the status line... headerBuf.append("\n"); // $NON-NLS-1$ for (int i = 0; i < rh.length; i++) { String key = rh[i].getName(); headerBuf.append(key); headerBuf.append(": "); // $NON-NLS-1$ headerBuf.append(rh[i].getValue()); headerBuf.append("\n"); // $NON-NLS-1$ } return headerBuf.toString(); } /** * Extracts all the required cookies for that particular URL request and * sets them in the HttpMethod passed in. * * @param method HttpMethod for the request * @param u URL of the request * @param cookieManager the CookieManager containing all the cookies * @return a String containing the cookie details (for the response) * May be null */ private String setConnectionCookie(HttpMethod method, URL u, CookieManager cookieManager) { String cookieHeader = null; if (cookieManager != null) { cookieHeader = cookieManager.getCookieHeaderForURL(u); if (cookieHeader != null) { method.setRequestHeader(HTTPConstants.HEADER_COOKIE, cookieHeader); } } return cookieHeader; } /** * Extracts all the required non-cookie headers for that particular URL request and * sets them in the HttpMethod passed in * * @param method * HttpMethod which represents the request * @param u * URL of the URL request * @param headerManager * the HeaderManager containing all the cookies * for this UrlConfig * @param cacheManager the CacheManager (may be null) */ private void setConnectionHeaders(HttpMethod method, URL u, HeaderManager headerManager, CacheManager cacheManager) { // Set all the headers from the HeaderManager if (headerManager != null) { CollectionProperty headers = headerManager.getHeaders(); if (headers != null) { PropertyIterator i = headers.iterator(); while (i.hasNext()) { org.apache.jmeter.protocol.http.control.Header header = (org.apache.jmeter.protocol.http.control.Header) i.next().getObjectValue(); String n = header.getName(); // Don't allow override of Content-Length // This helps with SoapSampler hack too // TODO - what other headers are not allowed? if (! HTTPConstants.HEADER_CONTENT_LENGTH.equalsIgnoreCase(n)){ String v = header.getValue(); if (HTTPConstants.HEADER_HOST.equalsIgnoreCase(n)) { v = v.replaceFirst(":\\d+$",""); // remove any port specification // $NON-NLS-1$ $NON-NLS-2$ method.getParams().setVirtualHost(v); } else { method.addRequestHeader(n, v); } } } } } if (cacheManager != null){ cacheManager.setHeaders(u, method); } } /** * Get all the request headers for the HttpMethod * * @param method * HttpMethod which represents the request * @return the headers as a string */ protected String getConnectionHeaders(HttpMethod method) { // Get all the request headers StringBuilder hdrs = new StringBuilder(100); Header[] requestHeaders = method.getRequestHeaders(); for(int i = 0; i < requestHeaders.length; i++) { // Exclude the COOKIE header, since cookie is reported separately in the sample if(!HTTPConstants.HEADER_COOKIE.equalsIgnoreCase(requestHeaders[i].getName())) { hdrs.append(requestHeaders[i].getName()); hdrs.append(": "); // $NON-NLS-1$ hdrs.append(requestHeaders[i].getValue()); hdrs.append("\n"); // $NON-NLS-1$ } } return hdrs.toString(); } /** * Extracts all the required authorization for that particular URL request * and sets it in the HttpMethod passed in. * * @param client the HttpClient object * * @param u * URL of the URL request * @param authManager * the AuthManager containing all the authorisations for * this UrlConfig */ private void setConnectionAuthorization(HttpClient client, URL u, AuthManager authManager) { HttpState state = client.getState(); if (authManager != null) { HttpClientParams params = client.getParams(); Authorization auth = authManager.getAuthForURL(u); if (auth != null) { String username = auth.getUser(); String realm = auth.getRealm(); String domain = auth.getDomain(); if (log.isDebugEnabled()){ log.debug(username + " > D="+ username + " D="+domain+" R="+realm); } state.setCredentials( new AuthScope(u.getHost(),u.getPort(), realm.length()==0 ? null : realm //"" is not the same as no realm ,AuthScope.ANY_SCHEME), // NT Includes other types of Credentials new NTCredentials( username, auth.getPass(), localHost, domain )); // We have credentials - should we set pre-emptive authentication? if (canSetPreEmptive){ log.debug("Setting Pre-emptive authentication"); params.setAuthenticationPreemptive(true); } } else { state.clearCredentials(); if (canSetPreEmptive){ params.setAuthenticationPreemptive(false); } } } else { state.clearCredentials(); } } /* * Send POST data from Entry to the open connection. * * @param connection * URLConnection where POST data should be sent * @return a String show what was posted. Will not contain actual file upload content * @exception IOException * if an I/O exception occurs */ private String sendPostData(PostMethod post) throws IOException { // Buffer to hold the post body, except file content StringBuilder postedBody = new StringBuilder(1000); HTTPFileArg files[] = getHTTPFiles(); // Check if we should do a multipart/form-data or an // application/x-www-form-urlencoded post request if(getUseMultipartForPost()) { // If a content encoding is specified, we use that as the // encoding of any parameter values String contentEncoding = getContentEncoding(); if(isNullOrEmptyTrimmed(contentEncoding)) { contentEncoding = null; } final boolean browserCompatible = getDoBrowserCompatibleMultipart(); // We don't know how many entries will be skipped ArrayList partlist = new ArrayList(); // Create the parts // Add any parameters PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); String parameterName = arg.getName(); if (arg.isSkippable(parameterName)){ continue; } StringPart part = new StringPart(arg.getName(), arg.getValue(), contentEncoding); if (browserCompatible) { part.setTransferEncoding(null); part.setContentType(null); } partlist.add(part); } // Add any files for (int i=0; i < files.length; i++) { HTTPFileArg file = files[i]; File inputFile = new File(file.getPath()); // We do not know the char set of the file to be uploaded, so we set it to null ViewableFilePart filePart = new ViewableFilePart(file.getParamName(), inputFile, file.getMimeType(), null); filePart.setCharSet(null); // We do not know what the char set of the file is partlist.add(filePart); } // Set the multipart for the post int partNo = partlist.size(); Part[] parts = partlist.toArray(new Part[partNo]); MultipartRequestEntity multiPart = new MultipartRequestEntity(parts, post.getParams()); post.setRequestEntity(multiPart); // Set the content type String multiPartContentType = multiPart.getContentType(); post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, multiPartContentType); // If the Multipart is repeatable, we can send it first to // our own stream, without the actual file content, so we can return it if(multiPart.isRepeatable()) { // For all the file multiparts, we must tell it to not include // the actual file content for(int i = 0; i < partNo; i++) { if(parts[i] instanceof ViewableFilePart) { ((ViewableFilePart) parts[i]).setHideFileData(true); // .sendMultipartWithoutFileContent(bos); } } // Write the request to our own stream ByteArrayOutputStream bos = new ByteArrayOutputStream(); multiPart.writeRequest(bos); bos.flush(); // We get the posted bytes using the encoding used to create it postedBody.append(new String(bos.toByteArray(), contentEncoding == null ? "US-ASCII" // $NON-NLS-1$ this is the default used by HttpClient : contentEncoding)); bos.close(); // For all the file multiparts, we must revert the hiding of // the actual file content for(int i = 0; i < partNo; i++) { if(parts[i] instanceof ViewableFilePart) { ((ViewableFilePart) parts[i]).setHideFileData(false); } } } else { postedBody.append(""); // $NON-NLS-1$ } } else { // Check if the header manager had a content type header // This allows the user to specify his own content-type for a POST request Header contentTypeHeader = post.getRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE); boolean hasContentTypeHeader = contentTypeHeader != null && contentTypeHeader.getValue() != null && contentTypeHeader.getValue().length() > 0; // If there are no arguments, we can send a file as the body of the request // TODO: needs a multiple file upload scenerio if(!hasArguments() && getSendFileAsPostBody()) { // If getSendFileAsPostBody returned true, it's sure that file is not null HTTPFileArg file = files[0]; if(!hasContentTypeHeader) { // Allow the mimetype of the file to control the content type if(file.getMimeType() != null && file.getMimeType().length() > 0) { post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } FileRequestEntity fileRequestEntity = new FileRequestEntity(new File(file.getPath()),null); post.setRequestEntity(fileRequestEntity); // We just add placeholder text for file content postedBody.append(""); } else { // In a post request which is not multipart, we only support // parameters, no file upload is allowed // If a content encoding is specified, we set it as http parameter, so that // the post body will be encoded in the specified content encoding String contentEncoding = getContentEncoding(); boolean haveContentEncoding = false; if(isNullOrEmptyTrimmed(contentEncoding)) { contentEncoding=null; } else { post.getParams().setContentCharset(contentEncoding); haveContentEncoding = true; } // If none of the arguments have a name specified, we // just send all the values as the post body if(getSendParameterValuesAsPostBody()) { // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters // TODO: needs a multiple file upload scenerio if(!hasContentTypeHeader) { HTTPFileArg file = files.length > 0? files[0] : null; if(file != null && file.getMimeType() != null && file.getMimeType().length() > 0) { post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } else { // TODO - is this the correct default? post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } } // Just append all the parameter values, and use that as the post body StringBuilder postBody = new StringBuilder(); PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); String value; if (haveContentEncoding){ value = arg.getEncodedValue(contentEncoding); } else { value = arg.getEncodedValue(); } postBody.append(value); } StringRequestEntity requestEntity = new StringRequestEntity(postBody.toString(), post.getRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE).getValue(), contentEncoding); post.setRequestEntity(requestEntity); } else { // It is a normal post request, with parameter names and values // Set the content type if(!hasContentTypeHeader) { post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); } // Add the parameters PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); // The HTTPClient always urlencodes both name and value, // so if the argument is already encoded, we have to decode // it before adding it to the post request String parameterName = arg.getName(); if (arg.isSkippable(parameterName)){ continue; } String parameterValue = arg.getValue(); if(!arg.isAlwaysEncoded()) { // The value is already encoded by the user // Must decode the value now, so that when the // httpclient encodes it, we end up with the same value // as the user had entered. String urlContentEncoding = contentEncoding; if(urlContentEncoding == null || urlContentEncoding.length() == 0) { // Use the default encoding for urls urlContentEncoding = EncoderCache.URL_ARGUMENT_ENCODING; } parameterName = URLDecoder.decode(parameterName, urlContentEncoding); parameterValue = URLDecoder.decode(parameterValue, urlContentEncoding); } // Add the parameter, httpclient will urlencode it post.addParameter(parameterName, parameterValue); } /* // // Alternative implementation, to make sure that HTTPSampler and HTTPSampler2 // // sends the same post body. // // // Only include the content char set in the content-type header if it is not // // an APPLICATION_X_WWW_FORM_URLENCODED content type // String contentCharSet = null; // if(!post.getRequestHeader(HEADER_CONTENT_TYPE).getValue().equals(APPLICATION_X_WWW_FORM_URLENCODED)) { // contentCharSet = post.getRequestCharSet(); // } // StringRequestEntity requestEntity = new StringRequestEntity(getQueryString(contentEncoding), post.getRequestHeader(HEADER_CONTENT_TYPE).getValue(), contentCharSet); // post.setRequestEntity(requestEntity); */ } // If the request entity is repeatable, we can send it first to // our own stream, so we can return it if(post.getRequestEntity().isRepeatable()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); post.getRequestEntity().writeRequest(bos); bos.flush(); // We get the posted bytes using the encoding used to create it postedBody.append(new String(bos.toByteArray(),post.getRequestCharSet())); bos.close(); } else { postedBody.append(""); } } } // Set the content length post.setRequestHeader(HTTPConstants.HEADER_CONTENT_LENGTH, Long.toString(post.getRequestEntity().getContentLength())); return postedBody.toString(); } /** * Set up the PUT/PATCH data */ private String sendEntityData(EntityEnclosingMethod put) throws IOException { // Buffer to hold the put body, except file content StringBuilder putBody = new StringBuilder(1000); boolean hasPutBody = false; // Check if the header manager had a content type header // This allows the user to specify his own content-type for a POST request Header contentTypeHeader = put.getRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE); boolean hasContentTypeHeader = contentTypeHeader != null && contentTypeHeader.getValue() != null && contentTypeHeader.getValue().length() > 0; HTTPFileArg files[] = getHTTPFiles(); // If there are no arguments, we can send a file as the body of the request if(!hasArguments() && getSendFileAsPostBody()) { hasPutBody = true; // If getSendFileAsPostBody returned true, it's sure that file is not null FileRequestEntity fileRequestEntity = new FileRequestEntity(new File(files[0].getPath()),null); put.setRequestEntity(fileRequestEntity); } // If none of the arguments have a name specified, we // just send all the values as the put body else if(getSendParameterValuesAsPostBody()) { hasPutBody = true; // If a content encoding is specified, we set it as http parameter, so that // the post body will be encoded in the specified content encoding String contentEncoding = getContentEncoding(); boolean haveContentEncoding = false; if(isNullOrEmptyTrimmed(contentEncoding)) { contentEncoding = null; } else { put.getParams().setContentCharset(contentEncoding); haveContentEncoding = true; } // Just append all the parameter values, and use that as the post body StringBuilder putBodyContent = new StringBuilder(); PropertyIterator args = getArguments().iterator(); while (args.hasNext()) { HTTPArgument arg = (HTTPArgument) args.next().getObjectValue(); String value = null; if (haveContentEncoding){ value = arg.getEncodedValue(contentEncoding); } else { value = arg.getEncodedValue(); } putBodyContent.append(value); } String contentTypeValue = null; if(hasContentTypeHeader) { contentTypeValue = put.getRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE).getValue(); } StringRequestEntity requestEntity = new StringRequestEntity(putBodyContent.toString(), contentTypeValue, put.getRequestCharSet()); put.setRequestEntity(requestEntity); } // Check if we have any content to send for body if(hasPutBody) { // If the request entity is repeatable, we can send it first to // our own stream, so we can return it if(put.getRequestEntity().isRepeatable()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); put.getRequestEntity().writeRequest(bos); bos.flush(); // We get the posted bytes using the charset that was used to create them putBody.append(new String(bos.toByteArray(),put.getRequestCharSet())); bos.close(); } else { putBody.append(""); } if(!hasContentTypeHeader) { // Allow the mimetype of the file to control the content type // This is not obvious in GUI if you are not uploading any files, // but just sending the content of nameless parameters // TODO: needs a multiple file upload scenerio HTTPFileArg file = files.length > 0? files[0] : null; if(file != null && file.getMimeType() != null && file.getMimeType().length() > 0) { put.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, file.getMimeType()); } } // Set the content length put.setRequestHeader(HTTPConstants.HEADER_CONTENT_LENGTH, Long.toString(put.getRequestEntity().getContentLength())); } return putBody.toString(); } /** * Class extending FilePart, so that we can send placeholder text * instead of the actual file content */ private static class ViewableFilePart extends FilePart { private boolean hideFileData; public ViewableFilePart(String name, File file, String contentType, String charset) throws FileNotFoundException { super(name, file, contentType, charset); this.hideFileData = false; } public void setHideFileData(boolean hideFileData) { this.hideFileData = hideFileData; } @Override protected void sendData(OutputStream out) throws IOException { // Check if we should send only placeholder text for the // file content, or the real file content if(hideFileData) { out.write("".getBytes());// encoding does not really matter here } else { super.sendData(out); } } } /** * From the HttpMethod, store all the "set-cookie" key-pair * values in the cookieManager of the UrlConfig. * * @param method * HttpMethod which represents the request * @param u * URL of the URL request * @param cookieManager * the CookieManager containing all the cookies */ protected void saveConnectionCookies(HttpMethod method, URL u, CookieManager cookieManager) { if (cookieManager != null) { Header hdr[] = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE); for (int i = 0; i < hdr.length; i++) { cookieManager.addCookieFromHeader(hdr[i].getValue(),u); } } } @Override public void threadFinished() { log.debug("Thread Finished"); closeThreadLocalConnections(); } /** * */ private void closeThreadLocalConnections() { // Does not need to be synchronised, as all access is from same thread Map map = httpClients.get(); if ( map != null ) { for (HttpClient cl : map.values()) { // Can cause NPE in HttpClient 3.1 //((SimpleHttpConnectionManager)cl.getHttpConnectionManager()).shutdown();// Closes the connection // Revert to original method: cl.getHttpConnectionManager().closeIdleConnections(-1000);// Closes the connection } map.clear(); } } /** {@inheritDoc} */ public boolean interrupt() { HttpClient client = savedClient; if (client != null) { savedClient = null; // TODO - not sure this is the best method final HttpConnectionManager httpConnectionManager = client.getHttpConnectionManager(); if (httpConnectionManager instanceof SimpleHttpConnectionManager) {// Should be true ((SimpleHttpConnectionManager)httpConnectionManager).shutdown(); } } return client != null; } /** * {@inheritDoc} * This implementation closes all local connections. */ @Override protected void notifySSLContextWasReset() { log.debug("freeThreadConnections called"); closeThreadLocalConnections(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampleResult.java0000644000175000017500000001505012032647215032576 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.net.HttpURLConnection; import java.net.URL; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; /** * This is a specialisation of the SampleResult class for the HTTP protocol. * */ public class HTTPSampleResult extends SampleResult { private static final long serialVersionUID = 240L; private String cookies = ""; // never null private String method; /** * The raw value of the Location: header; may be null. * This is supposed to be an absolute URL: * RFC2616 sec14.30 * but is often relative. */ private String redirectLocation; private String queryString = ""; // never null private static final String HTTP_NO_CONTENT_CODE = Integer.toString(HttpURLConnection.HTTP_NO_CONTENT); private static final String HTTP_NO_CONTENT_MSG = "No Content"; // $NON-NLS-1$ public HTTPSampleResult() { super(); } public HTTPSampleResult(long elapsed) { super(elapsed, true); } /** * Construct a 'parent' result for an already-existing result, essentially * cloning it * * @param res * existing sample result */ public HTTPSampleResult(HTTPSampleResult res) { super(res); method=res.method; cookies=res.cookies; queryString=res.queryString; redirectLocation=res.redirectLocation; } public void setHTTPMethod(String method) { this.method = method; } public String getHTTPMethod() { return method; } public void setRedirectLocation(String redirectLocation) { this.redirectLocation = redirectLocation; } public String getRedirectLocation() { return redirectLocation; } /** * Determine whether this result is a redirect. * * @return true iif res is an HTTP redirect response */ public boolean isRedirect() { final String[] REDIRECT_CODES = { "301", "302", "303" }; // NOT 304! String code = getResponseCode(); for (int i = 0; i < REDIRECT_CODES.length; i++) { if (REDIRECT_CODES[i].equals(code)) { return true; } } return false; } /** * Overrides version in Sampler data to provide more details *

        * {@inheritDoc} */ @Override public String getSamplerData() { StringBuilder sb = new StringBuilder(); sb.append(method); URL u = super.getURL(); if (u != null) { sb.append(' '); sb.append(u.toString()); sb.append("\n"); // Include request body if it is a post or put or patch if (HTTPConstants.POST.equals(method) || HTTPConstants.PUT.equals(method) || HTTPConstants.PATCH.equals(method)) { sb.append("\n"+method+" data:\n"); sb.append(queryString); sb.append("\n"); } if (cookies.length()>0){ sb.append("\nCookie Data:\n"); sb.append(cookies); } else { sb.append("\n[no cookies]"); } sb.append("\n"); } final String sampData = super.getSamplerData(); if (sampData != null){ sb.append(sampData); } return sb.toString(); } /** * @return cookies as a string */ public String getCookies() { return cookies; } /** * @param string * representing the cookies */ public void setCookies(String string) { if (string == null) { cookies="";// $NON-NLS-1$ } else { cookies = string; } } /** * Fetch the query string * * @return the query string */ public String getQueryString() { return queryString; } /** * Save the query string * * @param string * the query string */ public void setQueryString(String string) { if (string == null ) { queryString="";// $NON-NLS-1$ } else { queryString = string; } } /** * Overrides the method from SampleResult - so the encoding can be extracted from * the Meta content-type if necessary. * * Updates the dataEncoding field if the content-type is found. * * @return the dataEncoding value as a String */ @Override public String getDataEncodingWithDefault() { if (getDataEncodingNoDefault() == null && getContentType().startsWith("text/html")){ // $NON-NLS-1$ byte[] bytes=getResponseData(); // get the start of the file // TODO - charset? String prefix = new String(bytes,0,Math.min(bytes.length, 2000)).toLowerCase(java.util.Locale.ENGLISH); // Extract the content-type if present final String METATAG = " 0) { channel.setSoTimeout(timeout); } localAddress = channel.getLocalAddress().getHostAddress(); localName = channel.getLocalAddress().getHostName(); lastHost = host; lastPort = port; } res.setURL(url); res.setHTTPMethod(method); outpos = 4; setByte((byte)2); if(method.equals(HTTPConstants.POST)) { setByte((byte)4); } else { setByte((byte)2); } if(JMeterUtils.getPropDefault("httpclient.version","1.1").equals("1.0")) {//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ setString("HTTP/1.0");//$NON-NLS-1$ } else { setString(HTTPConstants.HTTP_1_1); } setString(url.getPath()); setString(localAddress); setString(localName); setString(host); setInt(url.getDefaultPort()); setByte(HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(scheme) ? (byte)1 : (byte)0); setInt(getHeaderSize(method, url)); String hdr = setConnectionHeaders(url, host, method); res.setRequestHeaders(hdr); res.setCookies(setConnectionCookies(url, getCookieManager())); String query = url.getQuery(); if (query != null) { setByte((byte)0x05); // Marker for query string attribute setString(query); } setByte((byte)0xff); // More general attributes not supported } private int getHeaderSize(String method, URL url) { HeaderManager headers = getHeaderManager(); CookieManager cookies = getCookieManager(); AuthManager auth = getAuthManager(); int hsz = 1; // Host always if(method.equals(HTTPConstants.POST)) { HTTPFileArg[] hfa = getHTTPFiles(); if(hfa.length > 0) { hsz += 3; } else { hsz += 2; } } if(headers != null) { hsz += headers.size(); } if(cookies != null) { hsz += cookies.getCookieCount(); } if(auth != null) { String authHeader = auth.getAuthHeaderForURL(url); if(authHeader != null) { ++hsz; } } return hsz; } private String setConnectionHeaders(URL url, String host, String method) throws IOException { HeaderManager headers = getHeaderManager(); AuthManager auth = getAuthManager(); StringBuilder hbuf = new StringBuilder(); // Allow Headers to override Host setting hbuf.append("Host").append(COLON_SPACE).append(host).append(NEWLINE);//$NON-NLS-1$ setInt(0xA00b); //Host setString(host); if(headers != null) { CollectionProperty coll = headers.getHeaders(); PropertyIterator i = coll.iterator(); while(i.hasNext()) { Header header = (Header)i.next().getObjectValue(); String n = header.getName(); String v = header.getValue(); hbuf.append(n).append(COLON_SPACE).append(v).append(NEWLINE); int hc = translateHeader(n); if(hc > 0) { setInt(hc+AJP_HEADER_BASE); } else { setString(n); } setString(v); } } if(method.equals(HTTPConstants.POST)) { int cl = -1; HTTPFileArg[] hfa = getHTTPFiles(); if(hfa.length > 0) { HTTPFileArg fa = hfa[0]; String fn = fa.getName(); File input = new File(fn); cl = (int)input.length(); body = new BufferedInputStream(new FileInputStream(input)); setString(HTTPConstants.HEADER_CONTENT_DISPOSITION); setString("form-data; name=\""+encode(fa.getParamName())+ "\"; filename=\"" + encode(fn) +"\""); //$NON-NLS-1$ //$NON-NLS-2$ String mt = fa.getMimeType(); hbuf.append(HTTPConstants.HEADER_CONTENT_TYPE).append(COLON_SPACE).append(mt).append(NEWLINE); setInt(0xA007); // content-type setString(mt); } else { hbuf.append(HTTPConstants.HEADER_CONTENT_TYPE).append(COLON_SPACE).append(HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED).append(NEWLINE); setInt(0xA007); // content-type setString(HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED); StringBuilder sb = new StringBuilder(); boolean first = true; PropertyIterator args = getArguments().iterator(); while(args.hasNext()) { JMeterProperty arg = args.next(); if(first) { first = false; } else { sb.append('&'); } sb.append(arg.getStringValue()); } stringBody = sb.toString(); byte [] sbody = stringBody.getBytes(); // TODO - charset? cl = sbody.length; body = new ByteArrayInputStream(sbody); } hbuf.append(HTTPConstants.HEADER_CONTENT_LENGTH).append(COLON_SPACE).append(String.valueOf(cl)).append(NEWLINE); setInt(0xA008); // Content-length setString(String.valueOf(cl)); } if(auth != null) { String authHeader = auth.getAuthHeaderForURL(url); if(authHeader != null) { setInt(0xA005); // Authorization setString(authHeader); hbuf.append(HTTPConstants.HEADER_AUTHORIZATION).append(COLON_SPACE).append(authHeader).append(NEWLINE); } } return hbuf.toString(); } private String encode(String value) { StringBuilder newValue = new StringBuilder(); char[] chars = value.toCharArray(); for (int i = 0; i < chars.length; i++) { if (chars[i] == '\\')//$NON-NLS-1$ { newValue.append("\\\\");//$NON-NLS-1$ } else { newValue.append(chars[i]); } } return newValue.toString(); } private String setConnectionCookies(URL url, CookieManager cookies) { String cookieHeader = null; if(cookies != null) { cookieHeader = cookies.getCookieHeaderForURL(url); CollectionProperty coll = cookies.getCookies(); PropertyIterator i = coll.iterator(); while(i.hasNext()) { Cookie cookie = (Cookie)(i.next().getObjectValue()); setInt(0xA009); // Cookie setString(cookie.getName()+"="+cookie.getValue());//$NON-NLS-1$ } } return cookieHeader; } private int translateHeader(String n) { for(int i=0; i < headerTransArray.length; i++) { if(headerTransArray[i].equalsIgnoreCase(n)) { return i+1; } } return -1; } private void setByte(byte b) { outbuf[outpos++] = b; } private void setInt(int n) { outbuf[outpos++] = (byte)((n >> 8)&0xff); outbuf[outpos++] = (byte) (n&0xff); } private void setString(String s) { if( s == null ) { setInt(0xFFFF); } else { int len = s.length(); setInt(len); for(int i=0; i < len; i++) { setByte((byte)s.charAt(i)); } setByte((byte)0); } } private void send() throws IOException { OutputStream os = channel.getOutputStream(); int len = outpos; outpos = 0; setInt(0x1234); setInt(len-4); os.write(outbuf, 0, len); } private void execute(String method, HTTPSampleResult res) throws IOException { send(); if(method.equals(HTTPConstants.POST)) { res.setQueryString(stringBody); sendPostBody(); } handshake(res); } private void handshake(HTTPSampleResult res) throws IOException { responseData.reset(); int msg = getMessage(); while(msg != 5) { if(msg == 3) { int len = getInt(); responseData.write(inbuf, inpos, len); } else if(msg == 4) { parseHeaders(res); } else if(msg == 6) { setNextBodyChunk(); send(); } msg = getMessage(); } } private void sendPostBody() throws IOException { setNextBodyChunk(); send(); } private void setNextBodyChunk() throws IOException { int len = body.available(); if(len < 0) { len = 0; } else if(len > MAX_SEND_SIZE) { len = MAX_SEND_SIZE; } outpos = 4; int nr = 0; if(len > 0) { nr = body.read(outbuf, outpos+2, len); } setInt(nr); outpos += nr; } private void parseHeaders(HTTPSampleResult res) throws IOException { int status = getInt(); res.setResponseCode(Integer.toString(status)); res.setSuccessful(200 <= status && status <= 399); String msg = getString(); res.setResponseMessage(msg); int nh = getInt(); StringBuilder sb = new StringBuilder(); sb.append(HTTPConstants.HTTP_1_1 ).append(status).append(" ").append(msg).append(NEWLINE);//$NON-NLS-1$//$NON-NLS-2$ for(int i=0; i < nh; i++) { String name; int thn = peekInt(); if((thn & 0xff00) == AJP_HEADER_BASE) { name = headerTransArray[(thn&0xff)-1]; getInt(); // we need to use up the int now } else { name = getString(); } String value = getString(); if(HTTPConstants.HEADER_CONTENT_TYPE.equalsIgnoreCase(name)) { res.setContentType(value); res.setEncodingAndType(value); } else if(HTTPConstants.HEADER_SET_COOKIE.equalsIgnoreCase(name)) { CookieManager cookies = getCookieManager(); if(cookies != null) { cookies.addCookieFromHeader(value, res.getURL()); } } sb.append(name).append(COLON_SPACE).append(value).append(NEWLINE); } res.setResponseHeaders(sb.toString()); } private int getMessage() throws IOException { InputStream is = channel.getInputStream(); inpos = 0; int nr = is.read(inbuf, inpos, 4); if(nr != 4) { channel.close(); channel = null; throw new IOException("Connection Closed: "+nr); } //int mark = getInt(); int len = getInt(); int toRead = len; int cpos = inpos; while(toRead > 0) { nr = is.read(inbuf, cpos, toRead); cpos += nr; toRead -= nr; } return getByte(); } private byte getByte() { return inbuf[inpos++]; } private int getInt() { int res = (inbuf[inpos++]<<8)&0xff00; res += inbuf[inpos++]&0xff; return res; } private int peekInt() { int res = (inbuf[inpos]<<8)&0xff00; res += inbuf[inpos+1]&0xff; return res; } private String getString() throws IOException { int len = getInt(); String s = new String(inbuf, inpos, len, "iso-8859-1");//$NON-NLS-1$ inpos+= len+1; return s; } public boolean interrupt() { Socket chan = activeChannel; if (chan != null) { activeChannel = null; try { chan.close(); } catch (Exception e) { // Ignored } } return chan != null; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSampler.java0000644000175000017500000002640512032647215032653 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.util.accesslog.Filter; import org.apache.jmeter.protocol.http.util.accesslog.LogParser; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestCloneable; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; /** * Description:
        *
        * AccessLogSampler is responsible for a couple of things: *

        *

          *
        • creating instances of Generator *
        • creating instances of Parser *
        • triggering popup windows *
        • calling Generator.generateRequest() *
        • checking to make sure the classes are valid *
        • making sure a class can be instantiated *
        * The intent of this sampler is it uses the generator and parser to create a * HTTPSampler when it is needed. It does not contain logic about how to parse * the logs. It also doesn't care how Generator is implemented, as long as it * implements the interface. This means a person could simply implement a dummy * parser to generate random parameters and the generator consumes the results. * This wasn't the original intent of the sampler. I originaly wanted to write * this sampler, so that I can take production logs to simulate production * traffic in a test environment. Doing so is desirable to study odd or unusual * behavior. It's also good to compare a new system against an existing system * to get near apples- to-apples comparison. I've been asked if benchmarks are * really fair comparisons just about every single time, so this helps me * accomplish that task. *

        * Some bugs only appear under production traffic, so it is useful to generate * traffic using production logs. This way, JMeter can record when problems * occur and provide a way to match the server logs. *

        * Created on: Jun 26, 2003 * */ public class AccessLogSampler extends HTTPSampler implements TestBean,ThreadListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; // Remember to change this when the class changes ... public static final String DEFAULT_CLASS = "org.apache.jmeter.protocol.http.util.accesslog.TCLogParser"; // $NON-NLS-1$ /** private members used by class * */ private transient LogParser PARSER = null; // NOTUSED private Class PARSERCLASS = null; private String logFile, parserClassName, filterClassName; private transient Filter filter; private int count = 0; private boolean started = false; /** * Set the path where XML messages are stored for random selection. */ public void setLogFile(String path) { logFile = path; } /** * Get the path where XML messages are stored. this is the directory where * JMeter will randomly select a file. */ public String getLogFile() { return logFile; } /** * it's kinda obvious, but we state it anyways. Set the xml file with a * string path. * * @param classname - * parser class name */ public void setParserClassName(String classname) { parserClassName = classname; } /** * Get the file location of the xml file. * * @return String file path. */ public String getParserClassName() { return parserClassName; } /** * sample gets a new HTTPSampler from the generator and calls it's sample() * method. */ public SampleResult sampleWithParser() { initFilter(); instantiateParser(); SampleResult res = null; try { if (PARSER == null) { throw new JMeterException("No Parser available"); } /* * samp.setDomain(this.getDomain()); samp.setPort(this.getPort()); */ // we call parse with 1 to get only one. // this also means if we change the implementation // to use 2, it would use every other entry and // so on. Not that it is really useful, but a // person could use it that way if they have a // huge gigabyte log file and they only want to // use a quarter of the entries. int thisCount = PARSER.parseAndConfigure(1, this); if (thisCount < 0) // Was there an error? { return errorResult(new Error("Problem parsing the log file"), new HTTPSampleResult()); } if (thisCount == 0) { if (count == 0 || filter == null) { log.info("Stopping current thread"); JMeterContextService.getContext().getThread().stop(); } if (filter != null) { filter.reset(); } CookieManager cm = getCookieManager(); if (cm != null) { cm.clear(); } count = 0; return errorResult(new Error("No entries found"), new HTTPSampleResult()); } count = thisCount; res = sample(); res.setSampleLabel(toString()); } catch (Exception e) { log.warn("Sampling failure", e); return errorResult(e, new HTTPSampleResult()); } return res; } /** * sample(Entry e) simply calls sample(). * * @param e - * ignored * @return the new sample */ @Override public SampleResult sample(Entry e) { return sampleWithParser(); } /** * Method will instantiate the log parser based on the class in the text * field. This was done to make it easier for people to plugin their own log * parser and use different log parser. */ public void instantiateParser() { if (PARSER == null) { try { if (this.getParserClassName() != null && this.getParserClassName().length() > 0) { if (this.getLogFile() != null && this.getLogFile().length() > 0) { PARSER = (LogParser) Class.forName(getParserClassName()).newInstance(); PARSER.setSourceFile(this.getLogFile()); PARSER.setFilter(filter); } else { log.error("No log file specified"); } } } catch (InstantiationException e) { log.error("", e); } catch (IllegalAccessException e) { log.error("", e); } catch (ClassNotFoundException e) { log.error("", e); } } } /** * @return Returns the filterClassName. */ public String getFilterClassName() { return filterClassName; } /** * @param filterClassName * The filterClassName to set. */ public void setFilterClassName(String filterClassName) { this.filterClassName = filterClassName; } /** * @return Returns the domain. */ @Override public String getDomain() { // N.B. Must be in this class for the TestBean code to work return super.getDomain(); } /** * @param domain * The domain to set. */ @Override public void setDomain(String domain) { // N.B. Must be in this class for the TestBean code to work super.setDomain(domain); } /** * @return Returns the imageParsing. */ public boolean isImageParsing() { return super.isImageParser(); } /** * @param imageParsing * The imageParsing to set. */ public void setImageParsing(boolean imageParsing) { super.setImageParser(imageParsing); } /** * @return Returns the port. */ public String getPortString() { return super.getPropertyAsString(HTTPSamplerBase.PORT); } /** * @param port * The port to set. */ public void setPortString(String port) { super.setProperty(HTTPSamplerBase.PORT, port); } /** * */ public AccessLogSampler() { super(); } protected void initFilter() { if (filter == null && filterClassName != null && filterClassName.length() > 0) { try { filter = (Filter) Class.forName(filterClassName).newInstance(); } catch (Exception e) { log.warn("Couldn't instantiate filter '" + filterClassName + "'", e); } } } /** * {@inheritDoc} */ @Override public Object clone() { AccessLogSampler s = (AccessLogSampler) super.clone(); if (started) { if (filterClassName != null && filterClassName.length() > 0) { try { if (TestCloneable.class.isAssignableFrom(Class.forName(filterClassName))) { initFilter(); s.filter = (Filter) ((TestCloneable) filter).clone(); } if(TestCloneable.class.isAssignableFrom(Class.forName(parserClassName))) { instantiateParser(); s.PARSER = (LogParser)((TestCloneable)PARSER).clone(); if(filter != null) { s.PARSER.setFilter(s.filter); } } } catch (Exception e) { log.warn("Could not clone cloneable filter", e); } } } return s; } /** * {@inheritDoc} */ @Override public void testEnded() { if (PARSER != null) { PARSER.close(); } filter = null; started = false; super.testEnded(); } /** * {@inheritDoc} */ @Override public void testStarted() { started = true; super.testStarted(); } /** * {@inheritDoc} */ @Override public void threadFinished() { if(PARSER instanceof ThreadListener) { ((ThreadListener)PARSER).threadFinished(); } if(filter instanceof ThreadListener) { ((ThreadListener)filter).threadFinished(); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java0000644000175000017500000000314612032647215031564 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.samplers.Interruptible; /** * A sampler which understands all the parts necessary to read statistics about * HTTP requests, including cookies and authentication. * This sampler uses the default Java HTTP implementation */ public class HTTPSampler extends HTTPSamplerBase implements Interruptible { private static final long serialVersionUID = 241L; private final transient HTTPJavaImpl hc; public HTTPSampler(){ hc = new HTTPJavaImpl(this); } public boolean interrupt() { return hc.interrupt(); } @Override protected HTTPSampleResult sample(java.net.URL u, String method, boolean areFollowingRedirect, int depth) { return hc.sample(u, method, areFollowingRedirect, depth); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerFactory.java0000644000175000017500000001022412032647215033107 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.util.JOrphanUtils; /** * Factory to return the appropriate HTTPSampler for use with classes that need * an HTTPSampler; also creates the implementations for use with HTTPSamplerProxy. * */ public final class HTTPSamplerFactory { // N.B. These values are used in jmeter.properties (jmeter.httpsampler) - do not change // They can alse be used as the implementation name /** Use the the default Java HTTP implementation */ public static final String HTTP_SAMPLER_JAVA = "HTTPSampler"; //$NON-NLS-1$ /** Use Apache HTTPClient HTTP implementation */ public static final String HTTP_SAMPLER_APACHE = "HTTPSampler2"; //$NON-NLS-1$ //+ JMX implementation attribute values (also displayed in GUI) - do not change public static final String IMPL_HTTP_CLIENT4 = "HttpClient4"; // $NON-NLS-1$ public static final String IMPL_HTTP_CLIENT3_1 = "HttpClient3.1"; // $NON-NLS-1$ public static final String IMPL_JAVA = "Java"; // $NON-NLS-1$ //- JMX public static final String DEFAULT_CLASSNAME = JMeterUtils.getPropDefault("jmeter.httpsampler", IMPL_HTTP_CLIENT4); //$NON-NLS-1$ private HTTPSamplerFactory() { // Not intended to be instantiated } /** * Create a new instance of the default sampler * * @return instance of default sampler */ public static HTTPSamplerBase newInstance() { return newInstance(DEFAULT_CLASSNAME); } /** * Create a new instance of the required sampler type * * @param alias HTTP_SAMPLER or HTTP_SAMPLER_APACHE or IMPL_HTTP_CLIENT3_1 or IMPL_HTTP_CLIENT4 * @return the appropriate sampler * @throws UnsupportedOperationException if alias is not recognised */ public static HTTPSamplerBase newInstance(String alias) { if (alias ==null || alias.length() == 0) { alias = DEFAULT_CLASSNAME; } if (alias.equals(HTTP_SAMPLER_JAVA) || alias.equals(IMPL_JAVA)) { return new HTTPSamplerProxy(IMPL_JAVA); } if (alias.equals(HTTP_SAMPLER_APACHE) || alias.equals(IMPL_HTTP_CLIENT3_1)) { return new HTTPSamplerProxy(IMPL_HTTP_CLIENT3_1); } if (alias.equals(IMPL_HTTP_CLIENT4)) { return new HTTPSamplerProxy(IMPL_HTTP_CLIENT4); } throw new IllegalArgumentException("Unknown sampler type: '" + alias+"'"); } public static String[] getImplementations(){ return new String[]{IMPL_HTTP_CLIENT4,IMPL_HTTP_CLIENT3_1,IMPL_JAVA}; } public static HTTPAbstractImpl getImplementation(String impl, HTTPSamplerBase base){ if (HTTPSamplerBase.PROTOCOL_FILE.equals(base.getProtocol())) { return new HTTPFileImpl(base); } if (JOrphanUtils.isBlank(impl)){ impl = DEFAULT_CLASSNAME; } if (IMPL_JAVA.equals(impl) || HTTP_SAMPLER_JAVA.equals(impl)) { return new HTTPJavaImpl(base); } else if (IMPL_HTTP_CLIENT3_1.equals(impl) || HTTP_SAMPLER_APACHE.equals(impl)) { return new HTTPHC3Impl(base); } else if (IMPL_HTTP_CLIENT4.equals(impl)) { return new HTTPHC4Impl(base); } else { throw new IllegalArgumentException("Unknown implementation type: '"+impl+"'"); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPFileImpl.java0000644000175000017500000000555412032647215031667 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.apache.commons.io.IOUtils; import org.apache.jmeter.protocol.http.util.HTTPConstants; /** * HTTP Sampler which can read from file: URLs */ public class HTTPFileImpl extends HTTPAbstractImpl { protected HTTPFileImpl(HTTPSamplerBase base) { super(base); } public boolean interrupt() { return false; } @Override protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth) { HTTPSampleResult res = new HTTPSampleResult(); res.setHTTPMethod(HTTPConstants.GET); // Dummy res.setURL(url); res.setSampleLabel(url.toString()); InputStream is = null; res.sampleStart(); try { byte[] responseData; URLConnection conn = url.openConnection(); is = conn.getInputStream(); responseData = IOUtils.toByteArray(is); res.sampleEnd(); res.setResponseData(responseData); res.setResponseCodeOK(); res.setResponseMessageOK(); res.setSuccessful(true); StringBuilder ctb=new StringBuilder("text/html"); // $NON-NLS-1$ // TODO can this be obtained from the file somehow? String contentEncoding = getContentEncoding(); if (contentEncoding.length() > 0) { ctb.append("; charset="); // $NON-NLS-1$ ctb.append(contentEncoding); } String ct = ctb.toString(); res.setContentType(ct); res.setEncodingAndType(ct); res = resultProcessing(areFollowingRedirect, frameDepth, res); return res; } catch (FileNotFoundException e) { return errorResult(e, res); } catch (IOException e) { return errorResult(e, res); } finally { IOUtils.closeQuietly(is); } } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResources_pt_BR.propertiesapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResource0000644000175000017500000000345412032647215033442 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. accesslogfile.displayName=Localiza\u00E7\u00E3o do Arquivo de Log defaults.displayName=Valores Padr\u00F5es de Teste displayName=Testador de Log de Acesso domain.displayName=Servidor domain.shortDescription=Nome do servidor que ir\u00E1 ser testado filterClassName.displayName=Filtro (Opcional) filterClassName.shortDescription=Escolha uma implementa\u00E7\u00E3o de filtro para filtrar as entradas do arquivo de log (opcional) imageParsing.displayName=Processar Imagens imageParsing.shortDescription=Se configurado, JMeter ir\u00E1 baixar imagens e recursos contidos em cada p\u00E1gina web. logFile.displayName=Arquivo de Log logFile.shortDescription=Localiza\u00E7\u00E3o do arquivo de log a ser processado pelas requisi\u00E7\u00F5es parserClassName.displayName=Processador parserClassName.shortDescription=Escolha uma implementa\u00E7\u00E3o de processador para processar seu arquivo de log. plugins.displayName=Classes do Plugin portString.displayName=Porta portString.shortDescription=N\u00FAmero da porta a ser testada apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java0000644000175000017500000006302712032647215031670 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.sampler; import java.io.BufferedInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.BindException; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.Proxy; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; import java.util.zip.GZIPInputStream; import org.apache.commons.io.input.CountingInputStream; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.control.Authorization; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.util.SSLManager; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A sampler which understands all the parts necessary to read statistics about * HTTP requests, including cookies and authentication. * */ public class HTTPJavaImpl extends HTTPAbstractImpl { private static final boolean OBEY_CONTENT_LENGTH = JMeterUtils.getPropDefault("httpsampler.obey_contentlength", false); // $NON-NLS-1$ private static final Logger log = LoggingManager.getLoggerForClass(); private static final int MAX_CONN_RETRIES = JMeterUtils.getPropDefault("http.java.sampler.retries" // $NON-NLS-1$ ,10); // Maximum connection retries static { log.info("Maximum connection retries = "+MAX_CONN_RETRIES); // $NON-NLS-1$ // Temporary copies, so can set the final ones } private static final byte[] NULL_BA = new byte[0];// can share these /** Handles writing of a post or put request */ private transient PostWriter postOrPutWriter; private volatile HttpURLConnection savedConn; protected HTTPJavaImpl(HTTPSamplerBase base) { super(base); } /** * Set request headers in preparation to opening a connection. * * @param conn * URLConnection to set headers on * @exception IOException * if an I/O exception occurs */ protected void setPostHeaders(URLConnection conn) throws IOException { postOrPutWriter = new PostWriter(); postOrPutWriter.setHeaders(conn, testElement); } private void setPutHeaders(URLConnection conn) throws IOException { postOrPutWriter = new PutWriter(); postOrPutWriter.setHeaders(conn, testElement); } /** * Send POST data from Entry to the open connection. * This also handles sending data for PUT requests * * @param connection * URLConnection where POST data should be sent * @return a String show what was posted. Will not contain actual file upload content * @exception IOException * if an I/O exception occurs */ protected String sendPostData(URLConnection connection) throws IOException { return postOrPutWriter.sendPostData(connection, testElement); } private String sendPutData(URLConnection connection) throws IOException { return postOrPutWriter.sendPostData(connection, testElement); } /** * Returns an HttpURLConnection fully ready to attempt * connection. This means it sets the request method (GET or POST), headers, * cookies, and authorization for the URL request. *

        * The request infos are saved into the sample result if one is provided. * * @param u * URL of the URL request * @param method * GET, POST etc * @param res * sample result to save request infos to * @return HttpURLConnection ready for .connect * @exception IOException * if an I/O Exception occurs */ protected HttpURLConnection setupConnection(URL u, String method, HTTPSampleResult res) throws IOException { SSLManager sslmgr = null; if (HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(u.getProtocol())) { try { sslmgr=SSLManager.getInstance(); // N.B. this needs to be done before opening the connection } catch (Exception e) { log.warn("Problem creating the SSLManager: ", e); } } final HttpURLConnection conn; final String proxyHost = getProxyHost(); final int proxyPort = getProxyPortInt(); if (proxyHost.length() > 0 && proxyPort > 0){ Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)); //TODO - how to define proxy authentication for a single connection? // It's not clear if this is possible // String user = getProxyUser(); // if (user.length() > 0){ // Authenticator auth = new ProxyAuthenticator(user, getProxyPass()); // } conn = (HttpURLConnection) u.openConnection(proxy); } else { conn = (HttpURLConnection) u.openConnection(); } // Update follow redirects setting just for this connection conn.setInstanceFollowRedirects(getAutoRedirects()); int cto = getConnectTimeout(); if (cto > 0){ conn.setConnectTimeout(cto); } int rto = getResponseTimeout(); if (rto > 0){ conn.setReadTimeout(rto); } if (HTTPConstants.PROTOCOL_HTTPS.equalsIgnoreCase(u.getProtocol())) { try { if (null != sslmgr){ sslmgr.setContext(conn); // N.B. must be done after opening connection } } catch (Exception e) { log.warn("Problem setting the SSLManager for the connection: ", e); } } // a well-bahaved browser is supposed to send 'Connection: close' // with the last request to an HTTP server. Instead, most browsers // leave it to the server to close the connection after their // timeout period. Leave it to the JMeter user to decide. if (getUseKeepAlive()) { conn.setRequestProperty(HTTPConstants.HEADER_CONNECTION, HTTPConstants.KEEP_ALIVE); } else { conn.setRequestProperty(HTTPConstants.HEADER_CONNECTION, HTTPConstants.CONNECTION_CLOSE); } conn.setRequestMethod(method); setConnectionHeaders(conn, u, getHeaderManager(), getCacheManager()); String cookies = setConnectionCookie(conn, u, getCookieManager()); setConnectionAuthorization(conn, u, getAuthManager()); if (method.equals(HTTPConstants.POST)) { setPostHeaders(conn); } else if (method.equals(HTTPConstants.PUT)) { setPutHeaders(conn); } if (res != null) { res.setRequestHeaders(getConnectionHeaders(conn)); res.setCookies(cookies); } return conn; } /** * Reads the response from the URL connection. * * @param conn * URL from which to read response * @return response content * @exception IOException * if an I/O exception occurs */ protected byte[] readResponse(HttpURLConnection conn, SampleResult res) throws IOException { BufferedInputStream in; final int contentLength = conn.getContentLength(); if ((contentLength == 0) && OBEY_CONTENT_LENGTH) { log.info("Content-Length: 0, not reading http-body"); res.setResponseHeaders(getResponseHeaders(conn)); res.latencyEnd(); return NULL_BA; } // works OK even if ContentEncoding is null boolean gzipped = HTTPConstants.ENCODING_GZIP.equals(conn.getContentEncoding()); InputStream instream = null; try { instream = new CountingInputStream(conn.getInputStream()); if (gzipped) { in = new BufferedInputStream(new GZIPInputStream(instream)); } else { in = new BufferedInputStream(instream); } } catch (IOException e) { if (! (e.getCause() instanceof FileNotFoundException)) { log.error("readResponse: "+e.toString()); Throwable cause = e.getCause(); if (cause != null){ log.error("Cause: "+cause); if(cause instanceof Error) { throw (Error)cause; } } } // Normal InputStream is not available InputStream errorStream = conn.getErrorStream(); if (errorStream == null) { log.info("Error Response Code: "+conn.getResponseCode()+", Server sent no Errorpage"); res.setResponseHeaders(getResponseHeaders(conn)); res.latencyEnd(); return NULL_BA; } log.info("Error Response Code: "+conn.getResponseCode()); if (gzipped) { in = new BufferedInputStream(new GZIPInputStream(errorStream)); } else { in = new BufferedInputStream(errorStream); } } catch (Exception e) { log.error("readResponse: "+e.toString()); Throwable cause = e.getCause(); if (cause != null){ log.error("Cause: "+cause); if(cause instanceof Error) { throw (Error)cause; } } in = new BufferedInputStream(conn.getErrorStream()); } // N.B. this closes 'in' byte[] responseData = readResponse(res, in, contentLength); if (instream != null) { res.setBodySize(((CountingInputStream) instream).getCount()); instream.close(); } return responseData; } /** * Gets the ResponseHeaders from the URLConnection * * @param conn * connection from which the headers are read * @return string containing the headers, one per line */ protected String getResponseHeaders(HttpURLConnection conn) { StringBuilder headerBuf = new StringBuilder(); headerBuf.append(conn.getHeaderField(0));// Leave header as is // headerBuf.append(conn.getHeaderField(0).substring(0, 8)); // headerBuf.append(" "); // headerBuf.append(conn.getResponseCode()); // headerBuf.append(" "); // headerBuf.append(conn.getResponseMessage()); headerBuf.append("\n"); //$NON-NLS-1$ String hfk; for (int i = 1; (hfk=conn.getHeaderFieldKey(i)) != null; i++) { headerBuf.append(hfk); headerBuf.append(": "); // $NON-NLS-1$ headerBuf.append(conn.getHeaderField(i)); headerBuf.append("\n"); // $NON-NLS-1$ } return headerBuf.toString(); } /** * Extracts all the required cookies for that particular URL request and * sets them in the HttpURLConnection passed in. * * @param conn * HttpUrlConnection which represents the URL * request * @param u * URL of the URL request * @param cookieManager * the CookieManager containing all the cookies * for this UrlConfig */ private String setConnectionCookie(HttpURLConnection conn, URL u, CookieManager cookieManager) { String cookieHeader = null; if (cookieManager != null) { cookieHeader = cookieManager.getCookieHeaderForURL(u); if (cookieHeader != null) { conn.setRequestProperty(HTTPConstants.HEADER_COOKIE, cookieHeader); } } return cookieHeader; } /** * Extracts all the required headers for that particular URL request and * sets them in the HttpURLConnection passed in * * @param conn * HttpUrlConnection which represents the URL * request * @param u * URL of the URL request * @param headerManager * the HeaderManager containing all the cookies * for this UrlConfig * @param cacheManager the CacheManager (may be null) */ private void setConnectionHeaders(HttpURLConnection conn, URL u, HeaderManager headerManager, CacheManager cacheManager) { // Add all the headers from the HeaderManager if (headerManager != null) { CollectionProperty headers = headerManager.getHeaders(); if (headers != null) { PropertyIterator i = headers.iterator(); while (i.hasNext()) { Header header = (Header) i.next().getObjectValue(); String n = header.getName(); String v = header.getValue(); conn.addRequestProperty(n, v); } } } if (cacheManager != null){ cacheManager.setHeaders(conn, u); } } /** * Get all the headers for the HttpURLConnection passed in * * @param conn * HttpUrlConnection which represents the URL * request * @return the headers as a string */ private String getConnectionHeaders(HttpURLConnection conn) { // Get all the request properties, which are the headers set on the connection StringBuilder hdrs = new StringBuilder(100); Map> requestHeaders = conn.getRequestProperties(); for(Map.Entry> entry : requestHeaders.entrySet()) { String headerKey=entry.getKey(); // Exclude the COOKIE header, since cookie is reported separately in the sample if(!HTTPConstants.HEADER_COOKIE.equalsIgnoreCase(headerKey)) { // value is a List of Strings for (String value : entry.getValue()){ hdrs.append(headerKey); hdrs.append(": "); // $NON-NLS-1$ hdrs.append(value); hdrs.append("\n"); // $NON-NLS-1$ } } } return hdrs.toString(); } /** * Extracts all the required authorization for that particular URL request * and sets it in the HttpURLConnection passed in. * * @param conn * HttpUrlConnection which represents the URL * request * @param u * URL of the URL request * @param authManager * the AuthManager containing all the cookies for * this UrlConfig */ private void setConnectionAuthorization(HttpURLConnection conn, URL u, AuthManager authManager) { if (authManager != null) { Authorization auth = authManager.getAuthForURL(u); if (auth != null) { conn.setRequestProperty(HTTPConstants.HEADER_AUTHORIZATION, auth.toBasicHeader()); } } } /** * Samples the URL passed in and stores the result in * HTTPSampleResult, following redirects and downloading * page resources as appropriate. *

        * When getting a redirect target, redirects are not followed and resources * are not downloaded. The caller will take care of this. * * @param url * URL to sample * @param method * HTTP method: GET, POST,... * @param areFollowingRedirect * whether we're getting a redirect target * @param frameDepth * Depth of this target in the frame structure. Used only to * prevent infinite recursion. * @return results of the sampling */ @Override protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth) { HttpURLConnection conn = null; String urlStr = url.toString(); log.debug("Start : sample " + urlStr); HTTPSampleResult res = new HTTPSampleResult(); res.setMonitor(isMonitor()); res.setSampleLabel(urlStr); res.setURL(url); res.setHTTPMethod(method); res.sampleStart(); // Count the retries as well in the time // Check cache for an entry with an Expires header in the future final CacheManager cacheManager = getCacheManager(); if (cacheManager != null && HTTPConstants.GET.equalsIgnoreCase(method)) { if (cacheManager.inCache(url)) { res.sampleEnd(); res.setResponseNoContent(); res.setSuccessful(true); return res; } } try { // Sampling proper - establish the connection and read the response: // Repeatedly try to connect: int retry; // Start with 0 so tries at least once, and retries at most MAX_CONN_RETRIES times for (retry = 0; retry <= MAX_CONN_RETRIES; retry++) { try { conn = setupConnection(url, method, res); // Attempt the connection: savedConn = conn; conn.connect(); break; } catch (BindException e) { if (retry >= MAX_CONN_RETRIES) { log.error("Can't connect after "+retry+" retries, "+e); throw e; } log.debug("Bind exception, try again"); if (conn!=null) { savedConn = null; // we don't want interrupt to try disconnection again conn.disconnect(); } setUseKeepAlive(false); continue; // try again } catch (IOException e) { log.debug("Connection failed, giving up"); throw e; } } if (retry > MAX_CONN_RETRIES) { // This should never happen, but... throw new BindException(); } // Nice, we've got a connection. Finish sending the request: if (method.equals(HTTPConstants.POST)) { String postBody = sendPostData(conn); res.setQueryString(postBody); } else if (method.equals(HTTPConstants.PUT)) { String putBody = sendPutData(conn); res.setQueryString(putBody); } // Request sent. Now get the response: byte[] responseData = readResponse(conn, res); res.sampleEnd(); // Done with the sampling proper. // Now collect the results into the HTTPSampleResult: res.setResponseData(responseData); @SuppressWarnings("null") // Cannot be null here int errorLevel = conn.getResponseCode(); String respMsg = conn.getResponseMessage(); String hdr=conn.getHeaderField(0); if (hdr == null) { hdr="(null)"; // $NON-NLS-1$ } if (errorLevel == -1){// Bug 38902 - sometimes -1 seems to be returned unnecessarily if (respMsg != null) {// Bug 41902 - NPE try { errorLevel = Integer.parseInt(respMsg.substring(0, 3)); log.warn("ResponseCode==-1; parsed "+respMsg+ " as "+errorLevel); } catch (NumberFormatException e) { log.warn("ResponseCode==-1; could not parse "+respMsg+" hdr: "+hdr); } } else { respMsg=hdr; // for result log.warn("ResponseCode==-1 & null ResponseMessage. Header(0)= "+hdr); } } if (errorLevel == -1) { res.setResponseCode("(null)"); // $NON-NLS-1$ } else { res.setResponseCode(Integer.toString(errorLevel)); } res.setSuccessful(isSuccessCode(errorLevel)); if (respMsg == null) {// has been seen in a redirect respMsg=hdr; // use header (if possible) if no message found } res.setResponseMessage(respMsg); String ct = conn.getContentType(); if (ct != null){ res.setContentType(ct);// e.g. text/html; charset=ISO-8859-1 res.setEncodingAndType(ct); } String responseHeaders = getResponseHeaders(conn); res.setResponseHeaders(responseHeaders); if (res.isRedirect()) { res.setRedirectLocation(conn.getHeaderField(HTTPConstants.HEADER_LOCATION)); } // record headers size to allow HTTPSampleResult.getBytes() with different options res.setHeadersSize(responseHeaders.replaceAll("\n", "\r\n") // $NON-NLS-1$ $NON-NLS-2$ .length() + 2); // add 2 for a '\r\n' at end of headers (before data) if (log.isDebugEnabled()) { log.debug("Response headersSize=" + res.getHeadersSize() + " bodySize=" + res.getBodySize() + " Total=" + (res.getHeadersSize() + res.getBodySize())); } // If we redirected automatically, the URL may have changed if (getAutoRedirects()){ res.setURL(conn.getURL()); } // Store any cookies received in the cookie manager: saveConnectionCookies(conn, url, getCookieManager()); // Save cache information if (cacheManager != null){ cacheManager.saveDetails(conn, res); } res = resultProcessing(areFollowingRedirect, frameDepth, res); log.debug("End : sample"); return res; } catch (IOException e) { res.sampleEnd(); savedConn = null; // we don't want interrupt to try disconnection again // We don't want to continue using this connection, even if KeepAlive is set if (conn != null) { // May not exist conn.disconnect(); } conn=null; // Don't process again return errorResult(e, res); } finally { // calling disconnect doesn't close the connection immediately, // but indicates we're through with it. The JVM should close // it when necessary. savedConn = null; // we don't want interrupt to try disconnection again disconnect(conn); // Disconnect unless using KeepAlive } } protected void disconnect(HttpURLConnection conn) { if (conn != null) { String connection = conn.getHeaderField(HTTPConstants.HEADER_CONNECTION); String protocol = conn.getHeaderField(0); if ((connection == null && (protocol == null || !protocol.startsWith(HTTPConstants.HTTP_1_1))) || (connection != null && connection.equalsIgnoreCase(HTTPConstants.CONNECTION_CLOSE))) { conn.disconnect(); } // TODO ? perhaps note connection so it can be disconnected at end of test? } } /** * From the HttpURLConnection, store all the "set-cookie" * key-pair values in the cookieManager of the UrlConfig. * * @param conn * HttpUrlConnection which represents the URL * request * @param u * URL of the URL request * @param cookieManager * the CookieManager containing all the cookies * for this UrlConfig */ private void saveConnectionCookies(HttpURLConnection conn, URL u, CookieManager cookieManager) { if (cookieManager != null) { for (int i = 1; conn.getHeaderFieldKey(i) != null; i++) { if (conn.getHeaderFieldKey(i).equalsIgnoreCase(HTTPConstants.HEADER_SET_COOKIE)) { cookieManager.addCookieFromHeader(conn.getHeaderField(i), u); } } } } /** {@inheritDoc} */ public boolean interrupt() { HttpURLConnection conn = savedConn; if (conn != null) { savedConn = null; conn.disconnect(); } return conn != null; } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBaseBeanInfo.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBaseBeanInfo.0000644000175000017500000000227312032647215033117 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 24, 2004 */ package org.apache.jmeter.protocol.http.sampler; import org.apache.jmeter.testelement.AbstractTestElementBeanInfo; /** * This class does not appear to be used. * However, without it, there are test errors for the AccessLog Sampler: * unable to find property autoRedirects.displayName. * */ public class HTTPSamplerBaseBeanInfo extends AbstractTestElementBeanInfo { } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResources_es.propertiesapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResource0000644000175000017500000000347612032647215033446 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! accesslogfile.displayName=Ubicaci\u00F3n del Archivo de Log defaults.displayName=Valores por defecto para Prueba displayName=Muestreador de Acceso a Log domain.displayName=Servidor domain.shortDescription=Nombre del servidor contra el que probar filterClassName.displayName=Filtro (Opcional) filterClassName.shortDescription=Escoja una implementaci\u00F3n de filtro para filtrar sus entradas en el archivo de log (opcional) imageParsing.displayName=Parsear Im\u00E1genes imageParsing.shortDescription=Si lo selecciona, JMeter descargar\u00E1 las im\u00E1genes y recursos contenidos en cada p\u00E1gina web logFile.displayName=Archivo de Log logFile.shortDescription=Ubicaci\u00F3n del archivo de log para parsear peticiones parserClassName.displayName=Parser parserClassName.shortDescription=Seleccione una implementaci\u00F3n de parser para parsear su archivo de log plugins.displayName=Classes desplegables portString.displayName=Puerto portString.shortDescription=N\u00FAmero de puerto contra el que probar ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResources_tr.propertiesapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResource0000644000175000017500000000373712032647215033446 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! accesslogfile.displayName=Log Dosyas\u0131 Yeri defaults.displayName=\u00D6ntan\u0131ml\u0131 Test De\u011Ferleri displayName=Log \u00D6rnekleyicisine Eri\u015Fim domain.displayName=Sunucu domain.shortDescription=Test edilecek sunucunun makine ismi filterClassName.displayName=Filtre (\u0130ste\u011Fe ba\u011Fl\u0131) filterClassName.shortDescription=Log dosyas\u0131 girdilerini filtrelemek i\u00E7in filtre uygulamas\u0131 se\u00E7 (iste\u011Fe ba\u011Fl\u0131) imageParsing.displayName=Resimleri Ayr\u0131\u015Ft\u0131r imageParsing.shortDescription=E\u011Fer a\u00E7\u0131ksa, JMeter web sayfas\u0131ndaki resimleri ve kaynaklar\u0131 indirecektir logFile.displayName=Log Dosyas\u0131 logFile.shortDescription=\u0130stekler i\u00E7in ayr\u0131\u015Ft\u0131r\u0131lacak log dosyas\u0131n\u0131n yeri parserClassName.displayName=Ayr\u0131\u015Ft\u0131r\u0131c\u0131 parserClassName.shortDescription=Log dosyas\u0131n\u0131 ayr\u0131\u015Ft\u0131rmak i\u00E7in bir ayr\u0131\u015Ft\u0131r\u0131c\u0131 uygulamas\u0131 kullan. plugins.displayName=Eklenti S\u0131n\u0131flar\u0131 portString.displayName=Port portString.shortDescription=Test edilecek Port Numaras\u0131 apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/sampler/SoapSampler.java0000644000175000017500000003305612032647215031712 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.sampler; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.zip.GZIPInputStream; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.io.IOUtils; import org.apache.jmeter.protocol.http.control.CacheManager; import org.apache.jmeter.protocol.http.control.Header; import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Commons HTTPClient based soap sampler */ public class SoapSampler extends HTTPSampler2 implements Interruptible { // Implemented by parent class private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; public static final String XML_DATA = "HTTPSamper.xml_data"; //$NON-NLS-1$ public static final String URL_DATA = "SoapSampler.URL_DATA"; //$NON-NLS-1$ public static final String SOAP_ACTION = "SoapSampler.SOAP_ACTION"; //$NON-NLS-1$ public static final String SEND_SOAP_ACTION = "SoapSampler.SEND_SOAP_ACTION"; //$NON-NLS-1$ public static final String XML_DATA_FILE = "SoapSampler.xml_data_file"; //$NON-NLS-1$ private static final String DOUBLE_QUOTE = "\""; //$NON-NLS-1$ private static final String SOAPACTION = "SOAPAction"; //$NON-NLS-1$ private static final String ENCODING = "utf-8"; //$NON-NLS-1$ TODO should this be variable? private static final String DEFAULT_CONTENT_TYPE = "text/xml"; //$NON-NLS-1$ public void setXmlData(String data) { setProperty(XML_DATA, data); } public String getXmlData() { return getPropertyAsString(XML_DATA); } /** * it's kinda obvious, but we state it anyways. Set the xml file with a * string path. * * @param filename */ public void setXmlFile(String filename) { setProperty(XML_DATA_FILE, filename); } /** * Get the file location of the xml file. * * @return String file path. */ public String getXmlFile() { return getPropertyAsString(XML_DATA_FILE); } public String getURLData() { return getPropertyAsString(URL_DATA); } public void setURLData(String url) { setProperty(URL_DATA, url); } public String getSOAPAction() { return getPropertyAsString(SOAP_ACTION); } public String getSOAPActionQuoted() { String action = getSOAPAction(); StringBuilder sb = new StringBuilder(action.length()+2); sb.append(DOUBLE_QUOTE); sb.append(action); sb.append(DOUBLE_QUOTE); return sb.toString(); } public void setSOAPAction(String action) { setProperty(SOAP_ACTION, action); } public boolean getSendSOAPAction() { return getPropertyAsBoolean(SEND_SOAP_ACTION); } public void setSendSOAPAction(boolean action) { setProperty(SEND_SOAP_ACTION, String.valueOf(action)); } protected int setPostHeaders(PostMethod post) { int length=0;// Take length from file if (getHeaderManager() != null) { // headerManager was set, so let's set the connection // to use it. HeaderManager mngr = getHeaderManager(); int headerSize = mngr.size(); for (int idx = 0; idx < headerSize; idx++) { Header hd = mngr.getHeader(idx); if (HTTPConstants.HEADER_CONTENT_LENGTH.equalsIgnoreCase(hd.getName())) {// Use this to override file length length = Integer.parseInt(hd.getValue()); } // All the other headers are set up by HTTPSampler2.setupConnection() } } else { // otherwise we use "text/xml" as the default post.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE, DEFAULT_CONTENT_TYPE); //$NON-NLS-1$ } if (getSendSOAPAction()) { post.setRequestHeader(SOAPACTION, getSOAPActionQuoted()); } return length; } /** * Send POST data from Entry to the open connection. * * @param post * @throws IOException if an I/O exception occurs */ private String sendPostData(PostMethod post, final int length) { // Buffer to hold the post body, except file content StringBuilder postedBody = new StringBuilder(1000); final String xmlFile = getXmlFile(); if (xmlFile != null && xmlFile.length() > 0) { File xmlFileAsFile = new File(xmlFile); if(!(xmlFileAsFile.exists() && xmlFileAsFile.canRead())) { throw new IllegalArgumentException(JMeterUtils.getResString("soap_sampler_file_invalid") // $NON-NLS-1$ + xmlFileAsFile.getAbsolutePath()); } // We just add placeholder text for file content postedBody.append("Filename: ").append(xmlFile).append("\n"); postedBody.append(""); post.setRequestEntity(new RequestEntity() { public boolean isRepeatable() { return true; } public void writeRequest(OutputStream out) throws IOException { InputStream in = null; try{ in = new BufferedInputStream(new FileInputStream(xmlFile)); IOUtils.copy(in, out); out.flush(); } finally { IOUtils.closeQuietly(in); } } public long getContentLength() { switch(length){ case -1: return -1; case 0: // No header provided return new File(xmlFile).length(); default: return length; } } public String getContentType() { // TODO do we need to add a charset for the file contents? return DEFAULT_CONTENT_TYPE; // $NON-NLS-1$ } }); } else { postedBody.append(getXmlData()); post.setRequestEntity(new RequestEntity() { public boolean isRepeatable() { return true; } public void writeRequest(OutputStream out) throws IOException { // charset must agree with content-type below IOUtils.write(getXmlData(), out, ENCODING); // $NON-NLS-1$ out.flush(); } public long getContentLength() { try { return getXmlData().getBytes(ENCODING).length; // so we don't generate chunked encoding } catch (UnsupportedEncodingException e) { log.warn(e.getLocalizedMessage()); return -1; // will use chunked encoding } } public String getContentType() { return DEFAULT_CONTENT_TYPE+"; charset="+ENCODING; // $NON-NLS-1$ } }); } return postedBody.toString(); } @Override protected HTTPSampleResult sample(URL url, String method, boolean areFollowingRedirect, int frameDepth) { String urlStr = url.toString(); log.debug("Start : sample " + urlStr); PostMethod httpMethod; httpMethod = new PostMethod(urlStr); HTTPSampleResult res = new HTTPSampleResult(); res.setMonitor(false); res.setSampleLabel(urlStr); // May be replaced later res.setHTTPMethod(HTTPConstants.POST); res.setURL(url); res.sampleStart(); // Count the retries as well in the time HttpClient client = null; InputStream instream = null; try { int content_len = setPostHeaders(httpMethod); client = setupConnection(url, httpMethod, res); setSavedClient(client); res.setQueryString(sendPostData(httpMethod,content_len)); int statusCode = client.executeMethod(httpMethod); // Some headers are set by executeMethod() res.setRequestHeaders(getConnectionHeaders(httpMethod)); // Request sent. Now get the response: instream = httpMethod.getResponseBodyAsStream(); if (instream != null) {// will be null for HEAD org.apache.commons.httpclient.Header responseHeader = httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_ENCODING); if (responseHeader != null && HTTPConstants.ENCODING_GZIP.equals(responseHeader.getValue())) { instream = new GZIPInputStream(instream); } //int contentLength = httpMethod.getResponseContentLength();Not visible ... //TODO size ouststream according to actual content length ByteArrayOutputStream outstream = new ByteArrayOutputStream(4 * 1024); //contentLength > 0 ? contentLength : DEFAULT_INITIAL_BUFFER_SIZE); byte[] buffer = new byte[4096]; int len; boolean first = true;// first response while ((len = instream.read(buffer)) > 0) { if (first) { // save the latency res.latencyEnd(); first = false; } outstream.write(buffer, 0, len); } res.setResponseData(outstream.toByteArray()); outstream.close(); } res.sampleEnd(); // Done with the sampling proper. // Now collect the results into the HTTPSampleResult: res.setSampleLabel(httpMethod.getURI().toString()); // Pick up Actual path (after redirects) res.setResponseCode(Integer.toString(statusCode)); res.setSuccessful(isSuccessCode(statusCode)); res.setResponseMessage(httpMethod.getStatusText()); // Set up the defaults (may be overridden below) res.setDataEncoding(ENCODING); res.setContentType(DEFAULT_CONTENT_TYPE); String ct = null; org.apache.commons.httpclient.Header h = httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE); if (h != null)// Can be missing, e.g. on redirect { ct = h.getValue(); res.setContentType(ct);// e.g. text/html; charset=ISO-8859-1 res.setEncodingAndType(ct); } res.setResponseHeaders(getResponseHeaders(httpMethod)); if (res.isRedirect()) { res.setRedirectLocation(httpMethod.getResponseHeader(HTTPConstants.HEADER_LOCATION).getValue()); } // If we redirected automatically, the URL may have changed if (getAutoRedirects()) { res.setURL(new URL(httpMethod.getURI().toString())); } // Store any cookies received in the cookie manager: saveConnectionCookies(httpMethod, res.getURL(), getCookieManager()); // Save cache information final CacheManager cacheManager = getCacheManager(); if (cacheManager != null){ cacheManager.saveDetails(httpMethod, res); } // Follow redirects and download page resources if appropriate: res = resultProcessing(areFollowingRedirect, frameDepth, res); log.debug("End : sample"); httpMethod.releaseConnection(); return res; } catch (IllegalArgumentException e)// e.g. some kinds of invalid URL { res.sampleEnd(); errorResult(e, res); return res; } catch (IOException e) { res.sampleEnd(); errorResult(e, res); return res; } finally { JOrphanUtils.closeQuietly(instream); setSavedClient(null); httpMethod.releaseConnection(); } } @Override public URL getUrl() throws MalformedURLException { return new URL(getURLData()); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/0000755000175000017500000000000012165514773026756 5ustar ebourgebourg././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/URLRewritingModifier.ja0000644000175000017500000002241012032647215033274 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.Serializable; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPArgument; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.util.JMeterUtils; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; //For unit tests, @see TestURLRewritingModifier public class URLRewritingModifier extends AbstractTestElement implements Serializable, PreProcessor { private static final long serialVersionUID = 233L; private static final String SEMI_COLON = ";"; // $NON-NLS-1$ private transient Pattern pathExtensionEqualsQuestionmarkRegexp; private transient Pattern pathExtensionEqualsNoQuestionmarkRegexp; private transient Pattern parameterRegexp; private transient Pattern pathExtensionNoEqualsQuestionmarkRegexp; private transient Pattern pathExtensionNoEqualsNoQuestionmarkRegexp; // transient Perl5Compiler compiler = new Perl5Compiler(); private static final String ARGUMENT_NAME = "argument_name"; // $NON-NLS-1$ private static final String PATH_EXTENSION = "path_extension"; // $NON-NLS-1$ private static final String PATH_EXTENSION_NO_EQUALS = "path_extension_no_equals"; // $NON-NLS-1$ private static final String PATH_EXTENSION_NO_QUESTIONMARK = "path_extension_no_questionmark"; // $NON-NLS-1$ private static final String SHOULD_CACHE = "cache_value"; // $NON-NLS-1$ // PreProcessors are cloned per-thread, so this will be saved per-thread private transient String savedValue = ""; // $NON-NLS-1$ public void process() { JMeterContext ctx = getThreadContext(); Sampler sampler = ctx.getCurrentSampler(); if (!(sampler instanceof HTTPSamplerBase)) {// Ignore non-HTTP samplers return; } SampleResult responseText = ctx.getPreviousResult(); if (responseText == null) { return; } initRegex(getArgumentName()); String text = responseText.getResponseDataAsString(); Perl5Matcher matcher = JMeterUtils.getMatcher(); String value = ""; if (isPathExtension() && isPathExtensionNoEquals() && isPathExtensionNoQuestionmark()) { if (matcher.contains(text, pathExtensionNoEqualsNoQuestionmarkRegexp)) { MatchResult result = matcher.getMatch(); value = result.group(1); } } else if (isPathExtension() && isPathExtensionNoEquals()) // && !isPathExtensionNoQuestionmark() { if (matcher.contains(text, pathExtensionNoEqualsQuestionmarkRegexp)) { MatchResult result = matcher.getMatch(); value = result.group(1); } } else if (isPathExtension() && isPathExtensionNoQuestionmark()) // && !isPathExtensionNoEquals() { if (matcher.contains(text, pathExtensionEqualsNoQuestionmarkRegexp)) { MatchResult result = matcher.getMatch(); value = result.group(1); } } else if (isPathExtension()) // && !isPathExtensionNoEquals() && !isPathExtensionNoQuestionmark() { if (matcher.contains(text, pathExtensionEqualsQuestionmarkRegexp)) { MatchResult result = matcher.getMatch(); value = result.group(1); } } else // if ! isPathExtension() { if (matcher.contains(text, parameterRegexp)) { MatchResult result = matcher.getMatch(); for (int i = 1; i < result.groups(); i++) { value = result.group(i); if (value != null) { break; } } } } // Bug 15025 - save session value across samplers if (shouldCache()){ if (value == null || value.length() == 0) { value = savedValue; } else { savedValue = value; } } modify((HTTPSamplerBase) sampler, value); } private void modify(HTTPSamplerBase sampler, String value) { if (isPathExtension()) { if (isPathExtensionNoEquals()) { sampler.setPath(sampler.getPath() + SEMI_COLON + getArgumentName() + value); // $NON-NLS-1$ } else { sampler.setPath(sampler.getPath() + SEMI_COLON + getArgumentName() + "=" + value); // $NON-NLS-1$ // $NON-NLS-2$ } } else { sampler.getArguments().removeArgument(getArgumentName()); sampler.getArguments().addArgument(new HTTPArgument(getArgumentName(), value, true)); } } public void setArgumentName(String argName) { setProperty(ARGUMENT_NAME, argName); } private void initRegex(String argName) { String quotedArg = Perl5Compiler.quotemeta(argName);// Don't get tripped up by RE chars in the arg name pathExtensionEqualsQuestionmarkRegexp = JMeterUtils.getPatternCache().getPattern( SEMI_COLON + quotedArg + "=([^\"'<>&\\s;]*)", // $NON-NLS-1$ Perl5Compiler.MULTILINE_MASK | Perl5Compiler.READ_ONLY_MASK); pathExtensionEqualsNoQuestionmarkRegexp = JMeterUtils.getPatternCache().getPattern( SEMI_COLON + quotedArg + "=([^\"'<>&\\s;?]*)", // $NON-NLS-1$ Perl5Compiler.MULTILINE_MASK | Perl5Compiler.READ_ONLY_MASK); pathExtensionNoEqualsQuestionmarkRegexp = JMeterUtils.getPatternCache().getPattern( SEMI_COLON + quotedArg + "([^\"'<>&\\s;]*)", // $NON-NLS-1$ Perl5Compiler.MULTILINE_MASK | Perl5Compiler.READ_ONLY_MASK); pathExtensionNoEqualsNoQuestionmarkRegexp = JMeterUtils.getPatternCache().getPattern( SEMI_COLON + quotedArg + "([^\"'<>&\\s;?]*)", // $NON-NLS-1$ Perl5Compiler.MULTILINE_MASK | Perl5Compiler.READ_ONLY_MASK); parameterRegexp = JMeterUtils.getPatternCache().getPattern( // ;sessionid=value "[;\\?&]" + quotedArg + "=([^\"'<>&\\s;\\\\]*)" + // $NON-NLS-1$ // name="sessionid" value="value" "|\\s[Nn][Aa][Mm][Ee]\\s*=\\s*[\"']" + quotedArg + "[\"']" + "[^>]*" // $NON-NLS-1$ + "\\s[vV][Aa][Ll][Uu][Ee]\\s*=\\s*[\"']" // $NON-NLS-1$ + "([^\"']*)" + "[\"']" // $NON-NLS-1$ // value="value" name="sessionid" + "|\\s[vV][Aa][Ll][Uu][Ee]\\s*=\\s*[\"']" // $NON-NLS-1$ + "([^\"']*)" + "[\"']" + "[^>]*" // $NON-NLS-1$ // $NON-NLS-2$ // $NON-NLS-3$ + "\\s[Nn][Aa][Mm][Ee]\\s*=\\s*[\"']" // $NON-NLS-1$ + quotedArg + "[\"']", // $NON-NLS-1$ Perl5Compiler.MULTILINE_MASK | Perl5Compiler.READ_ONLY_MASK); // NOTE: the handling of simple- vs. double-quotes could be formally // more accurate, but I can't imagine a session id containing // either, so we should be OK. The whole set of expressions is a // quick hack anyway, so who cares. } public String getArgumentName() { return getPropertyAsString(ARGUMENT_NAME); } public void setPathExtension(boolean pathExt) { setProperty(new BooleanProperty(PATH_EXTENSION, pathExt)); } public void setPathExtensionNoEquals(boolean pathExtNoEquals) { setProperty(new BooleanProperty(PATH_EXTENSION_NO_EQUALS, pathExtNoEquals)); } public void setPathExtensionNoQuestionmark(boolean pathExtNoQuestionmark) { setProperty(new BooleanProperty(PATH_EXTENSION_NO_QUESTIONMARK, pathExtNoQuestionmark)); } public void setShouldCache(boolean b) { setProperty(new BooleanProperty(SHOULD_CACHE, b)); } public boolean isPathExtension() { return getPropertyAsBoolean(PATH_EXTENSION); } public boolean isPathExtensionNoEquals() { return getPropertyAsBoolean(PATH_EXTENSION_NO_EQUALS); } public boolean isPathExtensionNoQuestionmark() { return getPropertyAsBoolean(PATH_EXTENSION_NO_QUESTIONMARK); } public boolean shouldCache() { return getPropertyAsBoolean(SHOULD_CACHE,true); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/ParamMask.java0000644000175000017500000001676012032647215031476 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.LongProperty; /** * This object defines with what a parameter has its value replaced, and the * policies for how that value changes. Used in {@link ParamModifier}. * * @version $Revision: 905028 $ */ public class ParamMask extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; private String PREFIX = "ParamModifier.prefix"; private String FIELD_NAME = "ParamModifier.field_name"; private String UPPER_BOUND = "ParamModifier.upper_bound"; private String LOWER_BOUND = "ParamModifier.lower_bound"; private String INCREMENT = "ParamModifier.increment"; private String SUFFIX = "ParamModifier.suffix"; private long _value = 0; /** * Default constructor. */ public ParamMask() { setFieldName(""); setPrefix(""); setLowerBound(0); setUpperBound(0); setIncrement(0); setSuffix(""); } /** * Sets the prefix for the long value. The prefix, the value * and the suffix are concatenated to give the parameter value. This allows * a wider range of posibilities for the parameter values. * * @param prefix * a string to prefix to the parameter value */ public void setPrefix(String prefix) { setProperty(PREFIX, prefix); } /** * Set the current value of the long portion of the parameter * value to replace. This is usually not used, as the method * {@link #resetValue} is used to define a policy for the starting value. * * @param val the new parameter value */ public void setValue(long val) { _value = val; } public void setFieldName(String fieldName) { setProperty(FIELD_NAME, fieldName); } /** * Sets the lowest possible value that the long portion of * the parameter value may be. * * @param val * the new lowest possible parameter value */ public void setLowerBound(long val) { setProperty(new LongProperty(LOWER_BOUND, val)); } /** * Sets the highest possible value that the long portion of * the parameter value may be. * * @param val * the new highest possible parameter value */ public void setUpperBound(long val) { setProperty(new LongProperty(UPPER_BOUND, val)); } /** * Sets the number by which the parameter value is incremented between * loops. * * @param incr * the new increment for the parameter value */ public void setIncrement(long incr) { setProperty(new LongProperty(INCREMENT, incr)); } /** * Sets the suffix for the long value. The prefix, the value * and the suffix are concatenated to give the parameter value. This allows * a wider range of posibilities for the parameter values. * * @param suffix * a string to suffix to the parameter value */ public void setSuffix(String suffix) { setProperty(SUFFIX, suffix); } /** * Accessor method to return the String that will be prefixed * to the long value. * * @return the parameter value prefix */ public String getPrefix() { return getPropertyAsString(PREFIX); } /** * Accessor method, returns the lowest possible value that the * long portion of the parameter value may be. * * @return the lower bound of the possible values */ public long getLowerBound() { return getPropertyAsLong(LOWER_BOUND); } /** * Accessor method, returns the highest possible value that the * long portion of the parameter value may be. * * @return the higher bound of the possible values */ public long getUpperBound() { return getPropertyAsLong(UPPER_BOUND); } /** * Accessor method, returns the number by which the parameter value is * incremented between loops. * * @return the increment */ public long getIncrement() { return getPropertyAsLong(INCREMENT); } /** * Accessor method to return the String that will be suffixed * to the long value. * * @return the parameter value suffix */ public String getSuffix() { return getPropertyAsString(SUFFIX); } /* * ----------------------------------------------------------------------- * Methods * ----------------------------------------------------------------------- */ /** * Returns the current value, prefixed and suffixed, as a string, then * increments it. If the incremented value is above the upper bound, the * value is reset to the lower bound.
        *

        * This method determines the policy of what happens when an upper bound is * reached/surpassed. * * @return a String representing the current * long value */ public String getNextValue() { // return the current value (don't forget the prefix!) String retval = getPrefix() + Long.toString(_value) + getSuffix(); // increment the value _value += getIncrement(); if (_value > getUpperBound()) { _value = getLowerBound(); } return retval; } /** * This method determines the policy of what value to start (and re-start) * at. */ public void resetValue() { _value = getLowerBound(); } public String getFieldName() { return getPropertyAsString(FIELD_NAME); } /** * For debugging purposes. * * @return a String representing the object */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("-------------------------------\n"); sb.append("Dumping ParamMask Object\n"); sb.append("-------------------------------\n"); sb.append("Name = " + getFieldName() + "\n"); sb.append("Prefix = " + getPrefix() + "\n"); sb.append("Current Value = " + _value + "\n"); sb.append("Lower Bound = " + getLowerBound() + "\n"); sb.append("Upper Bound = " + getUpperBound() + "\n"); sb.append("Increment = " + getIncrement() + "\n"); sb.append("Suffix = " + getSuffix() + "\n"); sb.append("-------------------------------\n"); return sb.toString(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/0000755000175000017500000000000012165514773027542 5ustar ebourgebourg././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/AnchorModifierGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/AnchorModifierGui.j0000644000175000017500000000365412032647215033252 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier.gui; import java.awt.BorderLayout; import org.apache.jmeter.processor.gui.AbstractPreProcessorGui; import org.apache.jmeter.protocol.http.modifier.AnchorModifier; import org.apache.jmeter.testelement.TestElement; public class AnchorModifierGui extends AbstractPreProcessorGui { private static final long serialVersionUID = 240L; public AnchorModifierGui() { init(); } public String getLabelResource() { return "anchor_modifier_title"; //$NON-NLS-1$ } public TestElement createTestElement() { AnchorModifier modifier = new AnchorModifier(); modifyTestElement(modifier); return modifier; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement modifier) { configureTestElement(modifier); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/ParamModifierGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/ParamModifierGui.ja0000644000175000017500000001776312032647215033247 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.processor.gui.AbstractPreProcessorGui; import org.apache.jmeter.protocol.http.modifier.ParamMask; import org.apache.jmeter.protocol.http.modifier.ParamModifier; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; /** * A swing panel to allow UI with the ParamModifier class. * * Created Jan 18, 2002 * */ public class ParamModifierGui extends AbstractPreProcessorGui implements FocusListener { private static final long serialVersionUID = 240L; /* * These are used as GUI item names; * LOWERBOUND, UPPERBOUND and INCREMENT are used in the focusLost() method */ private static final String NAME = "name"; private static final String PREFIX = "prefix"; private static final String LOWERBOUND = "lowerBound"; private static final String UPPERBOUND = "upperBound"; private static final String INCREMENT = "increment"; private static final String SUFFIX = "suffix"; private static final String ZERO = "0"; //$NON-NLS-1$ private JTextField _fieldName; private JTextField _prefix; private JTextField _lowerBound; private JTextField _upperBound; private JTextField _increment; private JTextField _suffix; public ParamModifierGui() { init(); } public String getLabelResource() { return "html_parameter_mask"; //$NON-NLS-1$ } @Override public void configure(TestElement el) { super.configure(el); ParamModifier model = (ParamModifier) el; updateGui(model); } public TestElement createTestElement() { ParamModifier modifier = new ParamModifier(); modifyTestElement(modifier); return modifier; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement m) { configureTestElement(m); if (m instanceof ParamModifier) { ParamModifier modifier = (ParamModifier) m; ParamMask mask = modifier.getMask(); mask.setFieldName(_fieldName.getText()); mask.setPrefix(_prefix.getText()); mask.setLowerBound(Long.parseLong(_lowerBound.getText())); mask.setIncrement(Long.parseLong(_increment.getText())); mask.setUpperBound(Long.parseLong(_upperBound.getText())); mask.setSuffix(_suffix.getText()); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); _fieldName.setText(""); //$NON-NLS-1$ _prefix.setText(""); //$NON-NLS-1$ _lowerBound.setText(ZERO); _upperBound.setText("10"); //$NON-NLS-1$ _increment.setText("1"); //$NON-NLS-1$ _suffix.setText(""); //$NON-NLS-1$ } public void focusGained(FocusEvent evt) { } public void focusLost(FocusEvent evt) { String name = ((Component) evt.getSource()).getName(); if (evt.isTemporary()) { return; } else if (name.equals(LOWERBOUND)) { checkTextField(evt, ZERO); } else if (name.equals(UPPERBOUND)) { checkTextField(evt, ZERO); } else if (name.equals(INCREMENT)) { checkTextField(evt, ZERO); } } private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); add(getParameterMaskPanel(), BorderLayout.CENTER); // this.updateUI(); } private void updateGui(ParamModifier model) { _fieldName.setText(model.getMask().getFieldName()); _prefix.setText(model.getMask().getPrefix()); _lowerBound.setText(Long.toString(model.getMask().getLowerBound())); _upperBound.setText(Long.toString(model.getMask().getUpperBound())); _increment.setText(Long.toString(model.getMask().getIncrement())); _suffix.setText(model.getMask().getSuffix()); } private JPanel createLabeledField(String labelResName, JTextField field) { JLabel label = new JLabel(JMeterUtils.getResString(labelResName)); label.setLabelFor(field); JPanel panel = new JPanel(new BorderLayout()); panel.add(label, BorderLayout.NORTH); panel.add(field, BorderLayout.CENTER); return panel; } private JPanel getParameterMaskPanel() { HorizontalPanel panel = new HorizontalPanel(10, Component.TOP_ALIGNMENT); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("html_parameter_mask"))); //$NON-NLS-1$ _fieldName = new JTextField(10); _fieldName.setName(NAME); panel.add(createLabeledField("name", _fieldName)); //$NON-NLS-1$ resource name _prefix = new JTextField(5); _prefix.setName(PREFIX); panel.add(createLabeledField("id_prefix", _prefix)); //$NON-NLS-1$ resource name _lowerBound = new JTextField(ZERO, 5); _lowerBound.addFocusListener(this); _lowerBound.setName(LOWERBOUND); panel.add(createLabeledField("lower_bound", _lowerBound)); //$NON-NLS-1$ resource name _upperBound = new JTextField("10", 5); _upperBound.addFocusListener(this); _upperBound.setName(UPPERBOUND); panel.add(createLabeledField("upper_bound", _upperBound)); //$NON-NLS-1$ resource name _increment = new JTextField("1", 3); _increment.addFocusListener(this); _increment.setName(INCREMENT); panel.add(createLabeledField("increment", _increment)); //$NON-NLS-1$ resource name _suffix = new JTextField(5); _suffix.setName(SUFFIX); panel.add(createLabeledField("id_suffix", _suffix)); //$NON-NLS-1$ resource name JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(panel, BorderLayout.NORTH); return mainPanel; } /** * Used to validate a text field that requires a long input. * Returns the long if valid, else creates a pop-up error * message and throws a NumberFormatException. * * @return the number entered in the text field */ private long checkTextField(FocusEvent evt, String defaultValue) { JTextField temp = (JTextField) evt.getSource(); // boolean pass = true; long longVal = 0; try { longVal = Long.parseLong(temp.getText()); } catch (NumberFormatException err) { JOptionPane.showMessageDialog(this, "This field must have a long value!", "Value Required", JOptionPane.ERROR_MESSAGE); temp.setText(defaultValue); temp.requestFocus(); } return longVal; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/URLRewritingModifierGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/gui/URLRewritingModifie0000644000175000017500000001103712032647215033310 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier.gui; import java.awt.BorderLayout; import javax.swing.JCheckBox; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.processor.gui.AbstractPreProcessorGui; import org.apache.jmeter.protocol.http.modifier.URLRewritingModifier; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; public class URLRewritingModifierGui extends AbstractPreProcessorGui { private static final long serialVersionUID = 240L; private JLabeledTextField argumentName; private JCheckBox pathExt; private JCheckBox pathExtNoEquals; private JCheckBox pathExtNoQuestionmark; private JCheckBox shouldCache; public String getLabelResource() { return "http_url_rewriting_modifier_title"; // $NON-NLS-1$ } public URLRewritingModifierGui() { init(); } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); VerticalPanel mainPanel = new VerticalPanel(); argumentName = new JLabeledTextField(JMeterUtils.getResString("session_argument_name"), 10); // $NON-NLS-1$ mainPanel.add(argumentName); pathExt = new JCheckBox(JMeterUtils.getResString("path_extension_choice")); // $NON-NLS-1$ mainPanel.add(pathExt); pathExtNoEquals = new JCheckBox(JMeterUtils.getResString("path_extension_dont_use_equals")); // $NON-NLS-1$ mainPanel.add(pathExtNoEquals); pathExtNoQuestionmark = new JCheckBox(JMeterUtils.getResString("path_extension_dont_use_questionmark")); // $NON-NLS-1$ mainPanel.add(pathExtNoQuestionmark); shouldCache = new JCheckBox(JMeterUtils.getResString("cache_session_id")); // $NON-NLS-1$ shouldCache.setSelected(true); mainPanel.add(shouldCache); add(mainPanel, BorderLayout.CENTER); } /** * {@inheritDoc} */ public TestElement createTestElement() { URLRewritingModifier modifier = new URLRewritingModifier(); modifyTestElement(modifier); return modifier; } /** * Modifies a given TestElement to mirror the data in the gui components. *

        * {@inheritDoc} */ public void modifyTestElement(TestElement modifier) { this.configureTestElement(modifier); URLRewritingModifier rewritingModifier = ((URLRewritingModifier) modifier); rewritingModifier.setArgumentName(argumentName.getText()); rewritingModifier.setPathExtension(pathExt.isSelected()); rewritingModifier.setPathExtensionNoEquals(pathExtNoEquals.isSelected()); rewritingModifier.setPathExtensionNoQuestionmark(pathExtNoQuestionmark.isSelected()); rewritingModifier.setShouldCache((shouldCache.isSelected())); } /** * {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); argumentName.setText(""); //$NON-NLS-1$ pathExt.setSelected(false); pathExtNoEquals.setSelected(false); pathExtNoQuestionmark.setSelected(false); shouldCache.setSelected(false); } /** * {@inheritDoc} */ @Override public void configure(TestElement el) { URLRewritingModifier rewritingModifier = ((URLRewritingModifier) el); argumentName.setText(rewritingModifier.getArgumentName()); pathExt.setSelected(rewritingModifier.isPathExtension()); pathExtNoEquals.setSelected(rewritingModifier.isPathExtensionNoEquals()); pathExtNoQuestionmark.setSelected(rewritingModifier.isPathExtensionNoQuestionmark()); shouldCache.setSelected(rewritingModifier.shouldCache()); super.configure(el); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserSequence.java0000644000175000017500000000614212032647215032222 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.Serializable; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This module controls the Sequence in which user details are returned. This * module uses round robin allocation of users. * * @version $Revision: 810036 $ */ public class UserSequence implements Serializable { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); // ------------------------------------------- // Constants and Data Members // ------------------------------------------- private List> allUsers; private transient Iterator> indexOfUsers; // ------------------------------------------- // Constructors // ------------------------------------------- public UserSequence() { } /** * Load all user and parameter data into the sequence module. *

        * ie a Set of Mapped "parameter names and parameter values" for each user * to be loaded into the sequencer. */ public UserSequence(List> allUsers) { this.allUsers = allUsers; // initalise pointer to first user indexOfUsers = allUsers.iterator(); } // ------------------------------------------- // Methods // ------------------------------------------- /** * Returns the parameter data for the next user in the sequence * * @return a Map object of parameter names and matching parameter values for * the next user */ public synchronized Map getNextUserMods() { // Use round robin allocation of user details if (!indexOfUsers.hasNext()) { indexOfUsers = allUsers.iterator(); } Map user; if (indexOfUsers.hasNext()) { user = indexOfUsers.next(); log.debug("UserSequence.getNextuserMods(): current parameters will be " + "changed to: " + user); } else { // no entries in all users, therefore create an empty Map object user = new HashMap(); } return user; } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserParameterXMLParser.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserParameterXMLParser.0000644000175000017500000000476412032647215033276 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.IOException; import java.util.List; import java.util.Map; import org.apache.jmeter.util.JMeterUtils; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; /** * Parse an XML file to obtain parameter name and value information for all * users defined in the XML file. * * This test element is deprecated. Test plans should use User Parameters instead. * @deprecated */ @Deprecated public class UserParameterXMLParser { /** * Parse all user parameter data defined in XML file. * * @param xmlURI * name of the XML to load users parameter data * @return all users name value pairs obtained from XML file */ public List> getXMLParameters(String xmlURI) throws SAXException, IOException { // create instances needed for parsing XMLReader reader = JMeterUtils.getXMLParser(); // XMLReaderFactory.createXMLReader(vendorParseClass); UserParameterXMLContentHandler threadParametersContentHandler = new UserParameterXMLContentHandler(); UserParameterXMLErrorHandler parameterErrorHandler = new UserParameterXMLErrorHandler(); // register content handler reader.setContentHandler(threadParametersContentHandler); // register error handler reader.setErrorHandler(parameterErrorHandler); // Request validation reader.setFeature("http://xml.org/sax/features/validation", true); // $NON-NLS-1$ // parse InputSource inputSource = new InputSource(xmlURI); reader.parse(inputSource); return threadParametersContentHandler.getParsedParameters(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/ParamModifier.java0000644000175000017500000001222212032647215032326 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.Serializable; import org.apache.jmeter.config.Argument; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; /** * This modifier will replace any single http sampler's url parameter value with * a value from a given range - thereby "masking" the value set in the http * sampler. The parameter names must match exactly, and the parameter value must * be preset to "*" to diferentiate between duplicate parameter names. *

        * For example, if you set up the modifier with a lower bound of 1, an upper * bound of 10, and an increment of 2, and run the loop 12 times, the parameter * will have the following values (one per loop): 1, 3, 5, 7, 9, 1, 3, 5, 7, 9, * 1, 3 *

        * The {@link ParamMask} object contains most of the logic for stepping through * this loop. You can make large modifications to this modifier's behaviour by * changing one or two method implementations there. * * @see ParamMask * @version $Revision: 1376300 $ */ public class ParamModifier extends AbstractTestElement implements TestStateListener, PreProcessor, Serializable { private static final long serialVersionUID = 240L; /* * ------------------------------------------------------------------------ * Fields * ------------------------------------------------------------------------ */ /** * The key used to find the ParamMask object in the HashMap. */ private static final String MASK = "ParamModifier.mask"; /* * ------------------------------------------------------------------------ * Constructors * ------------------------------------------------------------------------ */ /** * Default constructor. */ public ParamModifier() { setProperty(new TestElementProperty(MASK, new ParamMask())); } public ParamMask getMask() { return (ParamMask) getProperty(MASK).getObjectValue(); } public void testStarted() { getMask().resetValue(); } public void testStarted(String host) { getMask().resetValue(); } public void testEnded() { } public void testEnded(String host) { } /* * ------------------------------------------------------------------------ * Methods implemented from interface org.apache.jmeter.config.Modifier * ------------------------------------------------------------------------ */ /** * Modifies an entry object to replace the value of any url parameter that * matches a defined mask. * */ public void process() { Sampler sam = getThreadContext().getCurrentSampler(); HTTPSamplerBase sampler = null; if (!(sam instanceof HTTPSamplerBase)) { return; } else { sampler = (HTTPSamplerBase) sam; } boolean modified = false; PropertyIterator iter = sampler.getArguments().iterator(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); modified = modifyArgument(arg); if (modified) { break; } } } /* * ------------------------------------------------------------------------ * Methods * ------------------------------------------------------------------------ */ /** * Helper method for {@link #modifyEntry} Replaces a parameter's value if * the parameter name matches the mask name and the value is a '*'. * * @param arg * an {@link Argument} representing a http parameter * @return trueif the value was replaced */ private boolean modifyArgument(Argument arg) { // if a mask for this argument exists if (arg.getName().equals(getMask().getFieldName())) { // values to be masked must be set in the WebApp to "*" if ("*".equals(arg.getValue())) { arg.setValue(getMask().getNextValue()); return true; } } return false; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java0000644000175000017500000002335612032647215032512 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.Serializable; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Random; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.protocol.http.parser.HtmlParsingUtils; import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.threads.JMeterContext; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; // For Unit tests, @see TestAnchorModifier public class AnchorModifier extends AbstractTestElement implements PreProcessor, Serializable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final Random rand = new Random(); public AnchorModifier() { } /** * Modifies an Entry object based on HTML response text. */ public void process() { JMeterContext context = getThreadContext(); Sampler sam = context.getCurrentSampler(); SampleResult res = context.getPreviousResult(); HTTPSamplerBase sampler = null; HTTPSampleResult result = null; if (res == null || !(sam instanceof HTTPSamplerBase) || !(res instanceof HTTPSampleResult)) { log.info("Can't apply HTML Link Parser when the previous" + " sampler run is not an HTTP Request."); return; } else { sampler = (HTTPSamplerBase) sam; result = (HTTPSampleResult) res; } List potentialLinks = new ArrayList(); String responseText = ""; // $NON-NLS-1$ responseText = result.getResponseDataAsString(); Document html; int index = responseText.indexOf('<'); // $NON-NLS-1$ if (index == -1) { index = 0; } if (log.isDebugEnabled()) { log.debug("Check for matches against: "+sampler.toString()); } html = (Document) HtmlParsingUtils.getDOM(responseText.substring(index)); addAnchorUrls(html, result, sampler, potentialLinks); addFormUrls(html, result, sampler, potentialLinks); addFramesetUrls(html, result, sampler, potentialLinks); if (potentialLinks.size() > 0) { HTTPSamplerBase url = potentialLinks.get(rand.nextInt(potentialLinks.size())); if (log.isDebugEnabled()) { log.debug("Selected: "+url.toString()); } sampler.setDomain(url.getDomain()); sampler.setPath(url.getPath()); if (url.getMethod().equals(HTTPConstants.POST)) { PropertyIterator iter = sampler.getArguments().iterator(); while (iter.hasNext()) { Argument arg = (Argument) iter.next().getObjectValue(); modifyArgument(arg, url.getArguments()); } } else { sampler.setArguments(url.getArguments()); // config.parseArguments(url.getQueryString()); } sampler.setProtocol(url.getProtocol()); return; } else { log.debug("No matches found"); } return; } private void modifyArgument(Argument arg, Arguments args) { if (log.isDebugEnabled()) { log.debug("Modifying argument: " + arg); } List possibleReplacements = new ArrayList(); PropertyIterator iter = args.iterator(); Argument replacementArg; while (iter.hasNext()) { replacementArg = (Argument) iter.next().getObjectValue(); try { if (HtmlParsingUtils.isArgumentMatched(replacementArg, arg)) { possibleReplacements.add(replacementArg); } } catch (Exception ex) { log.error("Problem adding Argument", ex); } } if (possibleReplacements.size() > 0) { replacementArg = possibleReplacements.get(rand.nextInt(possibleReplacements.size())); arg.setName(replacementArg.getName()); arg.setValue(replacementArg.getValue()); if (log.isDebugEnabled()) { log.debug("Just set argument to values: " + arg.getName() + " = " + arg.getValue()); } args.removeArgument(replacementArg); } } public void addConfigElement(ConfigElement config) { } private void addFormUrls(Document html, HTTPSampleResult result, HTTPSamplerBase config, List potentialLinks) { NodeList rootList = html.getChildNodes(); List urls = new LinkedList(); for (int x = 0; x < rootList.getLength(); x++) { urls.addAll(HtmlParsingUtils.createURLFromForm(rootList.item(x), result.getURL())); } for (HTTPSamplerBase newUrl : urls) { newUrl.setMethod(HTTPConstants.POST); if (log.isDebugEnabled()) { log.debug("Potential Form match: " + newUrl.toString()); } if (HtmlParsingUtils.isAnchorMatched(newUrl, config)) { log.debug("Matched!"); potentialLinks.add(newUrl); } } } private void addAnchorUrls(Document html, HTTPSampleResult result, HTTPSamplerBase config, List potentialLinks) { String base = ""; NodeList baseList = html.getElementsByTagName("base"); // $NON-NLS-1$ if (baseList.getLength() > 0) { base = baseList.item(0).getAttributes().getNamedItem("href").getNodeValue(); // $NON-NLS-1$ } NodeList nodeList = html.getElementsByTagName("a"); // $NON-NLS-1$ for (int i = 0; i < nodeList.getLength(); i++) { Node tempNode = nodeList.item(i); NamedNodeMap nnm = tempNode.getAttributes(); Node namedItem = nnm.getNamedItem("href"); // $NON-NLS-1$ if (namedItem == null) { continue; } String hrefStr = namedItem.getNodeValue(); if (hrefStr.startsWith("javascript:")) { // $NON-NLS-1$ continue; // No point trying these } try { HTTPSamplerBase newUrl = HtmlParsingUtils.createUrlFromAnchor(hrefStr, ConversionUtils.makeRelativeURL(result.getURL(), base)); newUrl.setMethod(HTTPConstants.GET); if (log.isDebugEnabled()) { log.debug("Potential match: " + newUrl); } if (HtmlParsingUtils.isAnchorMatched(newUrl, config)) { log.debug("Matched!"); potentialLinks.add(newUrl); } } catch (MalformedURLException e) { log.warn("Bad URL "+e); } } } private void addFramesetUrls(Document html, HTTPSampleResult result, HTTPSamplerBase config, List potentialLinks) { String base = ""; NodeList baseList = html.getElementsByTagName("base"); // $NON-NLS-1$ if (baseList.getLength() > 0) { base = baseList.item(0).getAttributes().getNamedItem("href") // $NON-NLS-1$ .getNodeValue(); } NodeList nodeList = html.getElementsByTagName("frame"); // $NON-NLS-1$ for (int i = 0; i < nodeList.getLength(); i++) { Node tempNode = nodeList.item(i); NamedNodeMap nnm = tempNode.getAttributes(); Node namedItem = nnm.getNamedItem("src"); // $NON-NLS-1$ if (namedItem == null) { continue; } String hrefStr = namedItem.getNodeValue(); try { HTTPSamplerBase newUrl = HtmlParsingUtils.createUrlFromAnchor( hrefStr, ConversionUtils.makeRelativeURL(result.getURL(), base)); newUrl.setMethod(HTTPConstants.GET); if (log.isDebugEnabled()) { log.debug("Potential match: " + newUrl); } if (HtmlParsingUtils.isAnchorMatched(newUrl, config)) { log.debug("Matched!"); potentialLinks.add(newUrl); } } catch (MalformedURLException e) { log.warn("Bad URL "+e); } } } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserParameterXMLContentHandler.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserParameterXMLContent0000644000175000017500000001074412032647215033371 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import java.io.CharArrayWriter; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; /** * The handler used to read in XML parameter data. * * @version $Revision: 810036 $ */ public class UserParameterXMLContentHandler implements ContentHandler { // ------------------------------------------- // Constants and Data Members // ------------------------------------------- // Note UserParameterXML accesses this variable // to obtain the Set data via method getParsedParameters() private List> userThreads = new LinkedList>(); private String paramname = ""; private String paramvalue = ""; private Map nameValuePair = new HashMap(); /** Buffer for collecting data from the "characters" SAX event. */ private CharArrayWriter contents = new CharArrayWriter(); // ------------------------------------------- // Methods // ------------------------------------------- /*------------------------------------------------------------------------- * Methods implemented from org.xml.sax.ContentHandler *----------------------------------------------------------------------- */ public void setDocumentLocator(Locator locator) { } public void startDocument() throws SAXException { } public void endDocument() throws SAXException { } public void startPrefixMapping(String prefix, String uri) throws SAXException { } public void endPrefixMapping(String prefix) throws SAXException { } public void startElement(String namespaceURL, String localName, String qName, Attributes atts) throws SAXException { contents.reset(); // haven't got to reset paramname & paramvalue // but did it to keep the code looking correct if (qName.equals("parameter")) { paramname = ""; paramvalue = ""; } // must create a new object, // or else end up with a set full of the same Map object if (qName.equals("thread")) { nameValuePair = new HashMap(); } } public void endElement(String namespaceURI, String localName, String qName) throws SAXException { if (qName.equals("paramname")) { paramname = contents.toString(); } if (qName.equals("paramvalue")) { paramvalue = contents.toString(); } if (qName.equals("parameter")) { nameValuePair.put(paramname, paramvalue); } if (qName.equals("thread")) { userThreads.add(nameValuePair); } } public void characters(char ch[], int start, int length) throws SAXException { contents.write(ch, start, length); } public void ignorableWhitespace(char ch[], int start, int length) throws SAXException { } public void processingInstruction(String target, String date) throws SAXException { } public void skippedEntity(String name) throws SAXException { } /*------------------------------------------------------------------------- * Methods (used by UserParameterXML to get XML parameters from XML file) *----------------------------------------------------------------------- */ /** * results of parsing all user parameter data defined in XML file. * * @return all users name value pairs obtained from XML file */ public List> getParsedParameters() { return userThreads; } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserParameterXMLErrorHandler.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/modifier/UserParameterXMLErrorHa0000644000175000017500000000434412032647215033320 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.modifier; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** * XML Parseing errors for XML parameters file are handled here. * */ public class UserParameterXMLErrorHandler implements ErrorHandler { private static final Logger log = LoggingManager.getLoggerForClass(); public void warning(SAXParseException exception) throws SAXException { log.warn("**Parsing Warning**\n" + " line: " + exception.getLineNumber() + "\n" + " URI: :" + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); throw new SAXException("Warning encountered"); } public void error(SAXParseException exception) throws SAXException { log.error("**Parsing Warning**\n" + " line: " + exception.getLineNumber() + "\n" + " URI: :" + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); throw new SAXException("Error encountered"); } public void fatalError(SAXParseException exception) throws SAXException { log.error("**Parsing Warning**\n" + " line: " + exception.getLineNumber() + "\n" + " URI: :" + exception.getSystemId() + "\n" + " Message: " + exception.getMessage()); throw new SAXException("Fatal Error encountered"); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/0000755000175000017500000000000012165514773026454 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/URLCollection.java0000644000175000017500000000743312032647215031773 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.net.MalformedURLException; import java.net.URL; import java.util.Collection; import java.util.Iterator; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.jmeter.protocol.http.util.ConversionUtils; /** * Collection class designed for handling URLs * * Before a URL is added to the collection, it is wrapped in a URLString class. * The iterator unwraps the URL before return. * * N.B. Designed for use by HTMLParser, so is not a full implementation - e.g. * does not support remove() * */ public class URLCollection { private final Collection coll; /** * Creates a new URLCollection from an existing Collection * */ public URLCollection(Collection c) { coll = c; } /** * Adds the URL to the Collection, first wrapping it in the URLString class * * @param u * URL to add * @return boolean condition returned by the add() method of the underlying * collection */ public boolean add(URL u) { return coll.add(new URLString(u)); } /* * Adds the string to the Collection, first wrapping it in the URLString * class * * @param s string to add @return boolean condition returned by the add() * method of the underlying collection */ private boolean add(String s) { return coll.add(new URLString(s)); } /** * Convenience method for adding URLs to the collection If the url parameter * is null or empty, nothing is done * * @param url * String, may be null or empty * @param baseUrl * @return boolean condition returned by the add() method of the underlying * collection */ public boolean addURL(String url, URL baseUrl) { if (url == null || url.length() == 0) { return false; } //url.replace('+',' '); url=StringEscapeUtils.unescapeXml(url); boolean b = false; try { b = this.add(ConversionUtils.makeRelativeURL(baseUrl, url)); } catch (MalformedURLException mfue) { // TODO log a warning message? b = this.add(url);// Add the string if cannot create the URL } return b; } public Iterator iterator() { return new UrlIterator(coll.iterator()); } /* * Private iterator used to unwrap the URL from the URLString class * */ private static class UrlIterator implements Iterator { private final Iterator iter; UrlIterator(Iterator i) { iter = i; } public boolean hasNext() { return iter.hasNext(); } /* * Unwraps the URLString class to return the URL */ public URL next() { return iter.next().getURL(); } public void remove() { throw new UnsupportedOperationException(); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/RegexpHTMLParser.java0000644000175000017500000001650312032647215032407 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.Iterator; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; // NOTE: Also looked at using Java 1.4 regexp instead of ORO. The change was // trivial. Performance did not improve -- at least not significantly. // Finally decided for ORO following advise from Stefan Bodewig (message // to jmeter-dev dated 25 Nov 2003 8:52 CET) [Jordi] import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; /** * HtmlParser implementation using regular expressions. *

        * This class will find RLs specified in the following ways (where url * represents the RL being found: *

        * *

        * This class will take into account the following construct: *

          *
        • <base href=url> *
        * *

        * But not the following: *

          *
        • < ... codebase=url ... > *
        * */ class RegexpHTMLParser extends HTMLParser { private static final Logger log = LoggingManager.getLoggerForClass(); /** * Regexp fragment matching a tag attribute's value (including the equals * sign and any spaces before it). Note it matches unquoted values, which to * my understanding, are not conformant to any of the HTML specifications, * but are still quite common in the web and all browsers seem to understand * them. */ private static final String VALUE = "\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|([^\"'\\s>\\\\][^\\s>]*)(?=[\\s>]))"; // Note there's 3 capturing groups per value /** * Regexp fragment matching the separation between two tag attributes. */ private static final String SEP = "\\s(?:[^>]*\\s)?"; /** * Regular expression used against the HTML code to find the URIs of images, * etc.: */ private static final String REGEXP = "<(?:" + "!--.*?-->" + "|BASE" + SEP + "HREF" + VALUE + "|(?:IMG|SCRIPT|FRAME|IFRAME|BGSOUND)" + SEP + "SRC" + VALUE + "|APPLET" + SEP + "CODE(?:BASE)?" + VALUE + "|(?:EMBED|OBJECT)" + SEP + "(?:SRC|CODEBASE)" + VALUE + "|(?:BODY|TABLE|TR|TD)" + SEP + "BACKGROUND" + VALUE + "|[^<]+?STYLE\\s*=['\"].*?URL\\(\\s*['\"](.+?)['\"]\\s*\\)" + "|INPUT(?:" + SEP + "(?:SRC" + VALUE + "|TYPE\\s*=\\s*(?:\"image\"|'image'|image(?=[\\s>])))){2,}" + "|LINK(?:" + SEP + "(?:HREF" + VALUE + "|REL\\s*=\\s*(?:\"stylesheet\"|'stylesheet'|stylesheet(?=[\\s>])))){2,}" + ")"; // Number of capturing groups possibly containing Base HREFs: private static final int NUM_BASE_GROUPS = 3; /** * Thread-local input: */ private static final ThreadLocal localInput = new ThreadLocal() { @Override protected PatternMatcherInput initialValue() { return new PatternMatcherInput(new char[0]); } }; /** * {@inheritDoc} */ @Override protected boolean isReusable() { return true; } /** * Make sure to compile the regular expression upon instantiation: */ protected RegexpHTMLParser() { super(); } /** * {@inheritDoc} * @throws HTMLParseException */ @Override public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection urls, String encoding) throws HTMLParseException { try { Perl5Matcher matcher = JMeterUtils.getMatcher(); PatternMatcherInput input = localInput.get(); // TODO: find a way to avoid the cost of creating a String here -- // probably a new PatternMatcherInput working on a byte[] would do // better. input.setInput(new String(html, encoding)); Pattern pattern=JMeterUtils.getPatternCache().getPattern( REGEXP, Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.SINGLELINE_MASK | Perl5Compiler.READ_ONLY_MASK); while (matcher.contains(input, pattern)) { MatchResult match = matcher.getMatch(); String s; if (log.isDebugEnabled()) { log.debug("match groups " + match.groups() + " " + match.toString()); } // Check for a BASE HREF: for (int g = 1; g <= NUM_BASE_GROUPS && g <= match.groups(); g++) { s = match.group(g); if (s != null) { if (log.isDebugEnabled()) { log.debug("new baseUrl: " + s + " - " + baseUrl.toString()); } try { baseUrl = ConversionUtils.makeRelativeURL(baseUrl, s); } catch (MalformedURLException e) { // Doesn't even look like a URL? // Maybe it isn't: Ignore the exception. if (log.isDebugEnabled()) { log.debug("Can't build base URL from RL " + s + " in page " + baseUrl, e); } } } } for (int g = NUM_BASE_GROUPS + 1; g <= match.groups(); g++) { s = match.group(g); if (s != null) { if (log.isDebugEnabled()) { log.debug("group " + g + " - " + match.group(g)); } urls.addURL(s, baseUrl); } } } return urls.iterator(); } catch (UnsupportedEncodingException e) { throw new HTMLParseException(e.getMessage(), e); } catch (MalformedCachePatternException e) { throw new HTMLParseException(e.getMessage(), e); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParseException.java0000644000175000017500000000274012032647215032727 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; /** * Exception class for use with HTMLParser classes. * The main rationale for the class * was to support chained Exceptions in JDK 1.3, * however it is now used in its own right. * * @version $Revision: 905028 $ */ public class HTMLParseException extends Exception { private static final long serialVersionUID = 240L; public HTMLParseException() { super(); } public HTMLParseException(String message) { super(message); } public HTMLParseException(Throwable cause) { super(cause); } public HTMLParseException(String message, Throwable cause) { super(message, cause); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParseError.java0000644000175000017500000000270012032647215032056 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; /** * Error class for use with HTMLParser classes. * The main rationale for the class * was to support chained Errors in JDK 1.3, * however it is now used in its own right. * * @version $Revision: 905028 $ */ public class HTMLParseError extends Error { private static final long serialVersionUID = 240L; public HTMLParseError() { super(); } public HTMLParseError(String message) { super(message); } public HTMLParseError(Throwable cause) { super(cause); } public HTMLParseError(String message, Throwable cause) { super(message, cause); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/HTMLParser.java0000644000175000017500000002103312032647215031226 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.net.URL; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * HtmlParsers can parse HTML content to obtain URLs. * */ public abstract class HTMLParser { private static final Logger log = LoggingManager.getLoggerForClass(); protected static final String ATT_BACKGROUND = "background";// $NON-NLS-1$ protected static final String ATT_HREF = "href";// $NON-NLS-1$ protected static final String ATT_REL = "rel";// $NON-NLS-1$ protected static final String ATT_SRC = "src";// $NON-NLS-1$ protected static final String ATT_STYLE = "style";// $NON-NLS-1$ protected static final String ATT_TYPE = "type";// $NON-NLS-1$ protected static final String ATT_IS_IMAGE = "image";// $NON-NLS-1$ protected static final String TAG_APPLET = "applet";// $NON-NLS-1$ protected static final String TAG_BASE = "base";// $NON-NLS-1$ protected static final String TAG_BGSOUND = "bgsound";// $NON-NLS-1$ protected static final String TAG_EMBED = "embed";// $NON-NLS-1$ protected static final String TAG_FRAME = "frame";// $NON-NLS-1$ protected static final String TAG_IFRAME = "iframe";// $NON-NLS-1$ protected static final String TAG_IMAGE = "img";// $NON-NLS-1$ protected static final String TAG_INPUT = "input";// $NON-NLS-1$ protected static final String TAG_LINK = "link";// $NON-NLS-1$ protected static final String TAG_SCRIPT = "script";// $NON-NLS-1$ protected static final String STYLESHEET = "stylesheet";// $NON-NLS-1$ // Cache of parsers - parsers must be re-usable private static final Map parsers = new ConcurrentHashMap(3); public static final String PARSER_CLASSNAME = "htmlParser.className"; // $NON-NLS-1$ public static final String DEFAULT_PARSER = "org.apache.jmeter.protocol.http.parser.HtmlParserHTMLParser"; // $NON-NLS-1$ /** * Protected constructor to prevent instantiation except from within * subclasses. */ protected HTMLParser() { } public static final HTMLParser getParser() { return getParser(JMeterUtils.getPropDefault(PARSER_CLASSNAME, DEFAULT_PARSER)); } public static final HTMLParser getParser(String htmlParserClassName) { // Is there a cached parser? HTMLParser pars = parsers.get(htmlParserClassName); if (pars != null) { log.debug("Fetched " + htmlParserClassName); return pars; } try { Object clazz = Class.forName(htmlParserClassName).newInstance(); if (clazz instanceof HTMLParser) { pars = (HTMLParser) clazz; } else { throw new HTMLParseError(new ClassCastException(htmlParserClassName)); } } catch (InstantiationException e) { throw new HTMLParseError(e); } catch (IllegalAccessException e) { throw new HTMLParseError(e); } catch (ClassNotFoundException e) { throw new HTMLParseError(e); } log.info("Created " + htmlParserClassName); if (pars.isReusable()) { parsers.put(htmlParserClassName, pars);// cache the parser } return pars; } /** * Get the URLs for all the resources that a browser would automatically * download following the download of the HTML content, that is: images, * stylesheets, javascript files, applets, etc... *

        * URLs should not appear twice in the returned iterator. *

        * Malformed URLs can be reported to the caller by having the Iterator * return the corresponding RL String. Overall problems parsing the html * should be reported by throwing an HTMLParseException. * * @param html * HTML code * @param baseUrl * Base URL from which the HTML code was obtained * @param encoding Charset * @return an Iterator for the resource URLs */ public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, String encoding) throws HTMLParseException { // The Set is used to ignore duplicated binary files. // Using a LinkedHashSet to avoid unnecessary overhead in iterating // the elements in the set later on. As a side-effect, this will keep // them roughly in order, which should be a better model of browser // behaviour. Collection col = new LinkedHashSet(); return getEmbeddedResourceURLs(html, baseUrl, new URLCollection(col),encoding); // An additional note on using HashSets to store URLs: I just // discovered that obtaining the hashCode of a java.net.URL implies // a domain-name resolution process. This means significant delays // can occur, even more so if the domain name is not resolvable. // Whether this can be a problem in practical situations I can't tell, // but // thought I'd keep a note just in case... // BTW, note that using a List and removing duplicates via scan // would not help, since URL.equals requires name resolution too. // The above problem has now been addressed with the URLString and // URLCollection classes. } /** * Get the URLs for all the resources that a browser would automatically * download following the download of the HTML content, that is: images, * stylesheets, javascript files, applets, etc... *

        * All URLs should be added to the Collection. *

        * Malformed URLs can be reported to the caller by having the Iterator * return the corresponding RL String. Overall problems parsing the html * should be reported by throwing an HTMLParseException. * * N.B. The Iterator returns URLs, but the Collection will contain objects * of class URLString. * * @param html * HTML code * @param baseUrl * Base URL from which the HTML code was obtained * @param coll * URLCollection * @param encoding Charset * @return an Iterator for the resource URLs */ public abstract Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection coll, String encoding) throws HTMLParseException; /** * Get the URLs for all the resources that a browser would automatically * download following the download of the HTML content, that is: images, * stylesheets, javascript files, applets, etc... * * N.B. The Iterator returns URLs, but the Collection will contain objects * of class URLString. * * @param html * HTML code * @param baseUrl * Base URL from which the HTML code was obtained * @param coll * Collection - will contain URLString objects, not URLs * @param encoding Charset * @return an Iterator for the resource URLs */ public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, Collection coll, String encoding) throws HTMLParseException { return getEmbeddedResourceURLs(html, baseUrl, new URLCollection(coll), encoding); } /** * Parsers should over-ride this method if the parser class is re-usable, in * which case the class will be cached for the next getParser() call. * * @return true if the Parser is reusable */ protected boolean isReusable() { return false; } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/URLString.java0000644000175000017500000000460712032647215031146 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.net.URL; /** * Helper class to allow URLs to be stored in Collections without incurring the * cost of the hostname lookup performed by the URL methods equals() and * hashCode() URL is a final class, so cannot be extended ... * * @version $Revision: 804543 $ */ public class URLString implements Comparable { private final URL url; private final String urlAsString; private final int hashCode; public URLString(URL u) { url = u; urlAsString = u.toExternalForm(); /* * TODO improve string version to better match browser behaviour? e.g. * do browsers regard http://host/ and http://Host:80/ as the same? If * so, it would be better to reflect this in the string */ hashCode = urlAsString.hashCode(); } /* * Parsers can return the URL as a string if it does not parse properly */ public URLString(String s) { url = null; urlAsString = s; hashCode = urlAsString.hashCode(); } /** {@inheritDoc} */ @Override public String toString() { return urlAsString; } public URL getURL() { return url; } /** {@inheritDoc} */ public int compareTo(URLString o) { return urlAsString.compareTo(o.toString()); } /** {@inheritDoc} */ @Override public boolean equals(Object o) { return (o instanceof URLString && urlAsString.equals(o.toString())); } /** {@inheritDoc} */ @Override public int hashCode() { return hashCode; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParserHTMLParser.java0000644000175000017500000001561212032647215033236 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.net.MalformedURLException; import java.net.URL; import java.util.Iterator; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.htmlparser.Node; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.tags.AppletTag; import org.htmlparser.tags.BaseHrefTag; import org.htmlparser.tags.BodyTag; import org.htmlparser.tags.CompositeTag; import org.htmlparser.tags.FrameTag; import org.htmlparser.tags.ImageTag; import org.htmlparser.tags.InputTag; import org.htmlparser.tags.ScriptTag; import org.htmlparser.util.NodeIterator; import org.htmlparser.util.ParserException; /** * HtmlParser implementation using SourceForge's HtmlParser. * */ class HtmlParserHTMLParser extends HTMLParser { private static final Logger log = LoggingManager.getLoggerForClass(); static{ org.htmlparser.scanners.ScriptScanner.STRICT = false; // Try to ensure that more javascript code is processed OK ... } protected HtmlParserHTMLParser() { super(); log.info("Using htmlparser version: "+Parser.getVersion()); } @Override protected boolean isReusable() { return true; } /** * {@inheritDoc} */ @Override public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection urls, String encoding) throws HTMLParseException { if (log.isDebugEnabled()) { log.debug("Parsing html of: " + baseUrl); } Parser htmlParser = null; try { String contents = new String(html,encoding); htmlParser = new Parser(); htmlParser.setInputHTML(contents); } catch (Exception e) { throw new HTMLParseException(e); } // Now parse the DOM tree try { // we start to iterate through the elements parseNodes(htmlParser.elements(), new URLPointer(baseUrl), urls); log.debug("End : parseNodes"); } catch (ParserException e) { throw new HTMLParseException(e); } return urls.iterator(); } /* * A dummy class to pass the pointer of URL. */ private static class URLPointer { private URLPointer(URL newUrl) { url = newUrl; } private URL url; } /** * Recursively parse all nodes to pick up all URL s. * @see e the nodes to be parsed * @see baseUrl Base URL from which the HTML code was obtained * @see urls URLCollection */ private void parseNodes(final NodeIterator e, final URLPointer baseUrl, final URLCollection urls) throws HTMLParseException, ParserException { while(e.hasMoreNodes()) { Node node = e.nextNode(); // a url is always in a Tag. if (!(node instanceof Tag)) { continue; } Tag tag = (Tag) node; String tagname=tag.getTagName(); String binUrlStr = null; // first we check to see if body tag has a // background set if (tag instanceof BodyTag) { binUrlStr = tag.getAttribute(ATT_BACKGROUND); } else if (tag instanceof BaseHrefTag) { BaseHrefTag baseHref = (BaseHrefTag) tag; String baseref = baseHref.getBaseUrl(); try { if (!baseref.equals(""))// Bugzilla 30713 { baseUrl.url = ConversionUtils.makeRelativeURL(baseUrl.url, baseHref.getBaseUrl()); } } catch (MalformedURLException e1) { throw new HTMLParseException(e1); } } else if (tag instanceof ImageTag) { ImageTag image = (ImageTag) tag; binUrlStr = image.getImageURL(); } else if (tag instanceof AppletTag) { // look for applets // This will only work with an Applet .class file. // Ideally, this should be upgraded to work with Objects (IE) // and archives (.jar and .zip) files as well. AppletTag applet = (AppletTag) tag; binUrlStr = applet.getAppletClass(); } else if (tag instanceof InputTag) { // we check the input tag type for image if (ATT_IS_IMAGE.equalsIgnoreCase(tag.getAttribute(ATT_TYPE))) { // then we need to download the binary binUrlStr = tag.getAttribute(ATT_SRC); } } else if (tag instanceof ScriptTag) { binUrlStr = tag.getAttribute(ATT_SRC); // Bug 51750 } else if (tag instanceof FrameTag || tagname.equalsIgnoreCase(TAG_IFRAME)) { binUrlStr = tag.getAttribute(ATT_SRC); } else if (tagname.equalsIgnoreCase(TAG_EMBED) || tagname.equalsIgnoreCase(TAG_BGSOUND)){ binUrlStr = tag.getAttribute(ATT_SRC); } else if (tagname.equalsIgnoreCase(TAG_LINK)) { // Putting the string first means it works even if the attribute is null if (STYLESHEET.equalsIgnoreCase(tag.getAttribute(ATT_REL))) { binUrlStr = tag.getAttribute(ATT_HREF); } } else { binUrlStr = tag.getAttribute(ATT_BACKGROUND); } if (binUrlStr != null) { urls.addURL(binUrlStr, baseUrl.url); } // Now look for URLs in the STYLE attribute String styleTagStr = tag.getAttribute(ATT_STYLE); if(styleTagStr != null) { HtmlParsingUtils.extractStyleURLs(baseUrl.url, urls, styleTagStr); } // second, if the tag was a composite tag, // recursively parse its children. if (tag instanceof CompositeTag) { CompositeTag composite = (CompositeTag) tag; parseNodes(composite.elements(), baseUrl, urls); } } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/HtmlParsingUtils.java0000644000175000017500000003577112032647215032574 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.io.ByteArrayInputStream; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLDecoder; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerFactory; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.PatternCacheLRU; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.tidy.Tidy; // For Junit tests @see TestHtmlParsingUtils public final class HtmlParsingUtils { private static final Logger log = LoggingManager.getLoggerForClass(); /** * Private constructor to prevent instantiation. */ private HtmlParsingUtils() { } /** * Check if anchor matches by checking against: * - protocol * - domain * - path * - parameter names * * @param newLink target to match * @param config pattern to match against * * @return true if target URL matches pattern URL */ public static boolean isAnchorMatched(HTTPSamplerBase newLink, HTTPSamplerBase config) { String query = null; try { query = URLDecoder.decode(newLink.getQueryString(), "UTF-8"); // $NON-NLS-1$ } catch (UnsupportedEncodingException e) { // UTF-8 unsupported? You must be joking! log.error("UTF-8 encoding not supported!"); throw new Error("Should not happen: " + e.toString(), e); } final Arguments arguments = config.getArguments(); final Perl5Matcher matcher = JMeterUtils.getMatcher(); final PatternCacheLRU patternCache = JMeterUtils.getPatternCache(); if (!isEqualOrMatches(newLink.getProtocol(), config.getProtocol(), matcher, patternCache)){ return false; } final String domain = config.getDomain(); if (domain != null && domain.length() > 0) { if (!isEqualOrMatches(newLink.getDomain(), domain, matcher, patternCache)){ return false; } } final String path = config.getPath(); if (!newLink.getPath().equals(path) && !matcher.matches(newLink.getPath(), patternCache.getPattern("[/]*" + path, // $NON-NLS-1$ Perl5Compiler.READ_ONLY_MASK))) { return false; } PropertyIterator iter = arguments.iterator(); while (iter.hasNext()) { Argument item = (Argument) iter.next().getObjectValue(); final String name = item.getName(); if (query.indexOf(name + "=") == -1) { // $NON-NLS-1$ if (!(matcher.contains(query, patternCache.getPattern(name, Perl5Compiler.READ_ONLY_MASK)))) { return false; } } } return true; } /** * Arguments match if the input name matches the corresponding pattern name * and the input value matches the pattern value, where the matching is done * first using String equals, and then Regular Expression matching if the equals test fails. * * @param arg - input Argument * @param patternArg - pattern to match against * @return true if both name and value match */ public static boolean isArgumentMatched(Argument arg, Argument patternArg) { final Perl5Matcher matcher = JMeterUtils.getMatcher(); final PatternCacheLRU patternCache = JMeterUtils.getPatternCache(); return isEqualOrMatches(arg.getName(), patternArg.getName(), matcher, patternCache) && isEqualOrMatches(arg.getValue(), patternArg.getValue(), matcher, patternCache); } /** * Match the input argument against the pattern using String.equals() or pattern matching if that fails. * * @param arg input string * @param pat pattern string * @param matcher Perl5Matcher * @param cache PatternCache * * @return true if input matches the pattern */ public static boolean isEqualOrMatches(String arg, String pat, Perl5Matcher matcher, PatternCacheLRU cache){ return arg.equals(pat) || matcher.matches(arg,cache.getPattern(pat,Perl5Compiler.READ_ONLY_MASK)); } /** * Match the input argument against the pattern using String.equals() or pattern matching if that fails * using case-insenssitive matching. * * @param arg input string * @param pat pattern string * @param matcher Perl5Matcher * @param cache PatternCache * * @return true if input matches the pattern */ public static boolean isEqualOrMatchesCaseBlind(String arg, String pat, Perl5Matcher matcher, PatternCacheLRU cache){ return arg.equalsIgnoreCase(pat) || matcher.matches(arg,cache.getPattern(pat,Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK)); } /** * Match the input argument against the pattern using String.equals() or pattern matching if that fails * using case-insensitive matching. * * @param arg input string * @param pat pattern string * * @return true if input matches the pattern */ public static boolean isEqualOrMatches(String arg, String pat){ return isEqualOrMatches(arg, pat, JMeterUtils.getMatcher(), JMeterUtils.getPatternCache()); } /** * Match the input argument against the pattern using String.equals() or pattern matching if that fails * using case-insensitive matching. * * @param arg input string * @param pat pattern string * * @return true if input matches the pattern */ public static boolean isEqualOrMatchesCaseBlind(String arg, String pat){ return isEqualOrMatchesCaseBlind(arg, pat, JMeterUtils.getMatcher(), JMeterUtils.getPatternCache()); } /** * Returns tidy as HTML parser. * * @return a tidy HTML parser */ public static Tidy getParser() { log.debug("Start : getParser1"); Tidy tidy = new Tidy(); tidy.setInputEncoding("UTF8"); tidy.setOutputEncoding("UTF8"); tidy.setQuiet(true); tidy.setShowWarnings(false); if (log.isDebugEnabled()) { log.debug("getParser1 : tidy parser created - " + tidy); } log.debug("End : getParser1"); return tidy; } /** * Returns a node representing a whole xml given an xml document. * * @param text * an xml document * @return a node representing a whole xml */ public static Node getDOM(String text) { log.debug("Start : getDOM1"); try { Node node = getParser().parseDOM(new ByteArrayInputStream(text.getBytes("UTF-8")), null);// $NON-NLS-1$ if (log.isDebugEnabled()) { log.debug("node : " + node); } log.debug("End : getDOM1"); return node; } catch (UnsupportedEncodingException e) { log.error("getDOM1 : Unsupported encoding exception - " + e); log.debug("End : getDOM1"); throw new RuntimeException("UTF-8 encoding failed", e); } } public static Document createEmptyDoc() { return Tidy.createEmptyDocument(); } /** * Create a new Sampler based on an HREF string plus a contextual URL * object. Given that an HREF string might be of three possible forms, some * processing is required. */ public static HTTPSamplerBase createUrlFromAnchor(String parsedUrlString, URL context) throws MalformedURLException { if (log.isDebugEnabled()) { log.debug("Creating URL from Anchor: " + parsedUrlString + ", base: " + context); } URL url = ConversionUtils.makeRelativeURL(context, parsedUrlString); HTTPSamplerBase sampler =HTTPSamplerFactory.newInstance(); sampler.setDomain(url.getHost()); sampler.setProtocol(url.getProtocol()); sampler.setPort(url.getPort()); sampler.setPath(url.getPath()); sampler.parseArguments(url.getQuery()); return sampler; } public static List createURLFromForm(Node doc, URL context) { String selectName = null; LinkedList urlConfigs = new LinkedList(); recurseForm(doc, urlConfigs, context, selectName, false); /* * NamedNodeMap atts = formNode.getAttributes(); * if(atts.getNamedItem("action") == null) { throw new * MalformedURLException(); } String action = * atts.getNamedItem("action").getNodeValue(); UrlConfig url = * createUrlFromAnchor(action, context); recurseForm(doc, url, * selectName,true,formStart); */ return urlConfigs; } // N.B. Since the tags are extracted from an HTML Form, any values must already have been encoded private static boolean recurseForm(Node tempNode, LinkedList urlConfigs, URL context, String selectName, boolean inForm) { NamedNodeMap nodeAtts = tempNode.getAttributes(); String tag = tempNode.getNodeName(); try { if (inForm) { HTTPSamplerBase url = urlConfigs.getLast(); if (tag.equalsIgnoreCase("form")) { // $NON-NLS-1$ try { urlConfigs.add(createFormUrlConfig(tempNode, context)); } catch (MalformedURLException e) { inForm = false; } } else if (tag.equalsIgnoreCase("input")) { // $NON-NLS-1$ url.addEncodedArgument(getAttributeValue(nodeAtts, "name"), // $NON-NLS-1$ getAttributeValue(nodeAtts, "value")); // $NON-NLS-1$ } else if (tag.equalsIgnoreCase("textarea")) { // $NON-NLS-1$ try { url.addEncodedArgument(getAttributeValue(nodeAtts, "name"), // $NON-NLS-1$ tempNode.getFirstChild().getNodeValue()); } catch (NullPointerException e) { url.addArgument(getAttributeValue(nodeAtts, "name"), ""); // $NON-NLS-1$ } } else if (tag.equalsIgnoreCase("select")) { // $NON-NLS-1$ selectName = getAttributeValue(nodeAtts, "name"); // $NON-NLS-1$ } else if (tag.equalsIgnoreCase("option")) { // $NON-NLS-1$ String value = getAttributeValue(nodeAtts, "value"); // $NON-NLS-1$ if (value == null) { try { value = tempNode.getFirstChild().getNodeValue(); } catch (NullPointerException e) { value = ""; // $NON-NLS-1$ } } url.addEncodedArgument(selectName, value); } } else if (tag.equalsIgnoreCase("form")) { // $NON-NLS-1$ try { urlConfigs.add(createFormUrlConfig(tempNode, context)); inForm = true; } catch (MalformedURLException e) { inForm = false; } } } catch (Exception ex) { log.warn("Some bad HTML " + printNode(tempNode), ex); } NodeList childNodes = tempNode.getChildNodes(); for (int x = 0; x < childNodes.getLength(); x++) { inForm = recurseForm(childNodes.item(x), urlConfigs, context, selectName, inForm); } return inForm; } private static String getAttributeValue(NamedNodeMap att, String attName) { try { return att.getNamedItem(attName).getNodeValue(); } catch (Exception ex) { return ""; // $NON-NLS-1$ } } private static String printNode(Node node) { StringBuilder buf = new StringBuilder(); buf.append("<"); // $NON-NLS-1$ buf.append(node.getNodeName()); NamedNodeMap atts = node.getAttributes(); for (int x = 0; x < atts.getLength(); x++) { buf.append(" "); // $NON-NLS-1$ buf.append(atts.item(x).getNodeName()); buf.append("=\""); // $NON-NLS-1$ buf.append(atts.item(x).getNodeValue()); buf.append("\""); // $NON-NLS-1$ } buf.append(">"); // $NON-NLS-1$ return buf.toString(); } private static HTTPSamplerBase createFormUrlConfig(Node tempNode, URL context) throws MalformedURLException { NamedNodeMap atts = tempNode.getAttributes(); if (atts.getNamedItem("action") == null) { // $NON-NLS-1$ throw new MalformedURLException(); } String action = atts.getNamedItem("action").getNodeValue(); // $NON-NLS-1$ return createUrlFromAnchor(action, context); } public static void extractStyleURLs(final URL baseUrl, final URLCollection urls, String styleTagStr) { Perl5Matcher matcher = JMeterUtils.getMatcher(); Pattern pattern = JMeterUtils.getPatternCache().getPattern( "URL\\(\\s*('|\")(.*)('|\")\\s*\\)", // $NON-NLS-1$ Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.SINGLELINE_MASK | Perl5Compiler.READ_ONLY_MASK); PatternMatcherInput input = null; input = new PatternMatcherInput(styleTagStr); while (matcher.contains(input, pattern)) { MatchResult match = matcher.getMatch(); // The value is in the second group String styleUrl = match.group(2); urls.addURL(styleUrl, baseUrl); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/parser/JTidyHTMLParser.java0000644000175000017500000001614312032647215032200 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.parser; import java.io.ByteArrayInputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Iterator; import org.apache.jmeter.protocol.http.util.ConversionUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.tidy.Tidy; import org.xml.sax.SAXException; /** * HtmlParser implementation using JTidy. * */ class JTidyHTMLParser extends HTMLParser { private static final Logger log = LoggingManager.getLoggerForClass(); protected JTidyHTMLParser() { super(); } @Override protected boolean isReusable() { return true; } /** * {@inheritDoc} */ @Override public Iterator getEmbeddedResourceURLs(byte[] html, URL baseUrl, URLCollection urls, String encoding) throws HTMLParseException { Document dom = null; try { dom = (Document) getDOM(html, encoding); } catch (SAXException se) { throw new HTMLParseException(se); } // Now parse the DOM tree scanNodes(dom, urls, baseUrl); return urls.iterator(); } /** * Scan nodes recursively, looking for embedded resources * * @param node - * initial node * @param urls - * container for URLs * @param baseUrl - * used to create absolute URLs * * @return new base URL */ private URL scanNodes(Node node, URLCollection urls, URL baseUrl) throws HTMLParseException { if (node == null) { return baseUrl; } String name = node.getNodeName(); int type = node.getNodeType(); switch (type) { case Node.DOCUMENT_NODE: scanNodes(((Document) node).getDocumentElement(), urls, baseUrl); break; case Node.ELEMENT_NODE: NamedNodeMap attrs = node.getAttributes(); if (name.equalsIgnoreCase(TAG_BASE)) { String tmp = getValue(attrs, ATT_HREF); if (tmp != null) { try { baseUrl = ConversionUtils.makeRelativeURL(baseUrl, tmp); } catch (MalformedURLException e) { throw new HTMLParseException(e); } } break; } if (name.equalsIgnoreCase(TAG_IMAGE) || name.equalsIgnoreCase(TAG_EMBED)) { urls.addURL(getValue(attrs, ATT_SRC), baseUrl); break; } if (name.equalsIgnoreCase(TAG_APPLET)) { urls.addURL(getValue(attrs, "code"), baseUrl); break; } if (name.equalsIgnoreCase(TAG_INPUT)) { String src = getValue(attrs, ATT_SRC); String typ = getValue(attrs, ATT_TYPE); if ((src != null) && (typ.equalsIgnoreCase(ATT_IS_IMAGE))) { urls.addURL(src, baseUrl); } break; } if (name.equalsIgnoreCase(TAG_LINK) && getValue(attrs, ATT_REL).equalsIgnoreCase(STYLESHEET)) { urls.addURL(getValue(attrs, ATT_HREF), baseUrl); break; } if (name.equalsIgnoreCase(TAG_SCRIPT)) { urls.addURL(getValue(attrs, ATT_SRC), baseUrl); break; } if (name.equalsIgnoreCase(TAG_FRAME)) { urls.addURL(getValue(attrs, ATT_SRC), baseUrl); break; } if (name.equalsIgnoreCase(TAG_IFRAME)) { urls.addURL(getValue(attrs, ATT_SRC), baseUrl); break; } String back = getValue(attrs, ATT_BACKGROUND); if (back != null) { urls.addURL(back, baseUrl); } if (name.equalsIgnoreCase(TAG_BGSOUND)) { urls.addURL(getValue(attrs, ATT_SRC), baseUrl); break; } String style = getValue(attrs, ATT_STYLE); if (style != null) { HtmlParsingUtils.extractStyleURLs(baseUrl, urls, style); } NodeList children = node.getChildNodes(); if (children != null) { int len = children.getLength(); for (int i = 0; i < len; i++) { baseUrl = scanNodes(children.item(i), urls, baseUrl); } } break; // case Node.TEXT_NODE: // break; default: // ignored break; } return baseUrl; } /* * Helper method to get an attribute value, if it exists @param attrs list * of attributs @param attname attribute name @return */ private String getValue(NamedNodeMap attrs, String attname) { String v = null; Node n = attrs.getNamedItem(attname); if (n != null) { v = n.getNodeValue(); } return v; } /** * Returns tidy as HTML parser. * * @return a tidy HTML parser */ private static Tidy getTidyParser(String encoding) { log.debug("Start : getParser"); Tidy tidy = new Tidy(); tidy.setInputEncoding(encoding); tidy.setOutputEncoding("UTF8"); tidy.setQuiet(true); tidy.setShowWarnings(false); if (log.isDebugEnabled()) { log.debug("getParser : tidy parser created - " + tidy); } log.debug("End : getParser"); return tidy; } /** * Returns a node representing a whole xml given an xml document. * * @param text * an xml document (as a byte array) * @return a node representing a whole xml * * @throws SAXException * indicates an error parsing the xml document */ private static Node getDOM(byte[] text, String encoding) throws SAXException { log.debug("Start : getDOM"); Node node = getTidyParser(encoding).parseDOM(new ByteArrayInputStream(text), null); if (log.isDebugEnabled()) { log.debug("node : " + node); } log.debug("End : getDOM"); return node; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/visualizers/0000755000175000017500000000000012165514773027540 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/visualizers/RequestViewHTTP.java0000644000175000017500000003374312032647215033367 0ustar ebourgebourg/* o * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with this * work for additional information regarding copyright ownership. The ASF * licenses this file to You under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.visualizers; import java.awt.BorderLayout; import java.awt.Component; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLDecoder; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.gui.util.TextBoxDialoger.TextBoxDoubleClick; import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.RequestView; import org.apache.jmeter.visualizers.SamplerResultTab.RowResult; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.gui.RendererUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.Functor; import org.apache.log.Logger; /** * Specializer panel to view a HTTP request parsed * */ public class RequestViewHTTP implements RequestView { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String KEY_LABEL = "view_results_table_request_tab_http"; //$NON-NLS-1$ private static final String CHARSET_DECODE = "ISO-8859-1"; //$NON-NLS-1$ private static final String PARAM_CONCATENATE = "&"; //$NON-NLS-1$ private JPanel paneParsed; private ObjectTableModel requestModel = null; private ObjectTableModel paramsModel = null; private ObjectTableModel headersModel = null; private static final String[] COLUMNS_REQUEST = new String[] { " ", // one space for blank header // $NON-NLS-1$ " " }; // one space for blank header // $NON-NLS-1$ private static final String[] COLUMNS_PARAMS = new String[] { "view_results_table_request_params_key", // $NON-NLS-1$ "view_results_table_request_params_value" }; // $NON-NLS-1$ private static final String[] COLUMNS_HEADERS = new String[] { "view_results_table_request_headers_key", // $NON-NLS-1$ "view_results_table_request_headers_value" }; // $NON-NLS-1$ private JTable tableRequest = null; private JTable tableParams = null; private JTable tableHeaders = null; // Request headers column renderers private static final TableCellRenderer[] RENDERERS_REQUEST = new TableCellRenderer[] { null, // Key null, // Value }; // Request headers column renderers private static final TableCellRenderer[] RENDERERS_PARAMS = new TableCellRenderer[] { null, // Key null, // Value }; // Request headers column renderers private static final TableCellRenderer[] RENDERERS_HEADERS = new TableCellRenderer[] { null, // Key null, // Value }; /** * Pane to view HTTP request sample in view results tree */ public RequestViewHTTP() { requestModel = new ObjectTableModel(COLUMNS_REQUEST, RowResult.class, // The object used for each row new Functor[] { new Functor("getKey"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { null, null }, new Class[] { String.class, String.class }, false); paramsModel = new ObjectTableModel(COLUMNS_PARAMS, RowResult.class, // The object used for each row new Functor[] { new Functor("getKey"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { null, null }, new Class[] { String.class, String.class }, false); headersModel = new ObjectTableModel(COLUMNS_HEADERS, RowResult.class, // The object used for each row new Functor[] { new Functor("getKey"), // $NON-NLS-1$ new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { null, null }, new Class[] { String.class, String.class }, false); } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#init() */ public void init() { paneParsed = new JPanel(new BorderLayout(0, 5)); paneParsed.add(createRequestPane()); } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#clearData() */ public void clearData() { requestModel.clearData(); paramsModel.clearData(); headersModel.clearData(); // clear results table before filling } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#setSamplerResult(java.lang.Object) */ public void setSamplerResult(Object objectResult) { if (objectResult instanceof HTTPSampleResult) { HTTPSampleResult sampleResult = (HTTPSampleResult) objectResult; // Display with same order HTTP protocol requestModel.addRow(new RowResult( JMeterUtils.getResString("view_results_table_request_http_method"), //$NON-NLS-1$ sampleResult.getHTTPMethod())); URL hUrl = sampleResult.getURL(); if (hUrl != null){ // can be null - e.g. if URL was invalid requestModel.addRow(new RowResult(JMeterUtils .getResString("view_results_table_request_http_protocol"), //$NON-NLS-1$ hUrl.getProtocol())); requestModel.addRow(new RowResult( JMeterUtils.getResString("view_results_table_request_http_host"), //$NON-NLS-1$ hUrl.getHost())); int port = hUrl.getPort() == -1 ? hUrl.getDefaultPort() : hUrl.getPort(); requestModel.addRow(new RowResult( JMeterUtils.getResString("view_results_table_request_http_port"), //$NON-NLS-1$ Integer.valueOf(port))); requestModel.addRow(new RowResult( JMeterUtils.getResString("view_results_table_request_http_path"), //$NON-NLS-1$ hUrl.getPath())); String queryGet = hUrl.getQuery() == null ? "" : hUrl.getQuery(); //$NON-NLS-1$ // Concatenate query post if exists String queryPost = sampleResult.getQueryString(); if (queryPost != null && queryPost.length() > 0) { if (queryGet.length() > 0) { queryGet += PARAM_CONCATENATE; } queryGet += queryPost; } queryGet = RequestViewHTTP.decodeQuery(queryGet); if (queryGet != null) { Set> keys = RequestViewHTTP.getQueryMap(queryGet).entrySet(); for (Entry entry : keys) { paramsModel.addRow(new RowResult(entry.getKey(),entry.getValue())); } } } // Display cookie in headers table (same location on http protocol) String cookie = sampleResult.getCookies(); if (cookie != null && cookie.length() > 0) { headersModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_table_request_http_cookie"), //$NON-NLS-1$ sampleResult.getCookies())); } // Parsed request headers LinkedHashMap lhm = JMeterUtils.parseHeaders(sampleResult.getRequestHeaders()); for (Iterator> iterator = lhm.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = iterator.next(); headersModel.addRow(new RowResult(entry.getKey(), entry.getValue())); } } else { // add a message when no http sample requestModel.addRow(new RowResult("", //$NON-NLS-1$ JMeterUtils.getResString("view_results_table_request_http_nohttp"))); //$NON-NLS-1$ } } /** * @param query * @return Map params and Svalue */ //TODO: move to utils class (JMeterUtils?) public static Map getQueryMap(String query) { Map map = new HashMap(); if (query.trim().startsWith(" 2 ) {// detected invalid syntax (Bug 52491) // Return as for SOAP above map.clear(); map.put(" ", query); //blank name // $NON-NLS-1$ return map; } String name = null; if (paramSplit.length > 0) { name = paramSplit[0]; } String value = ""; // empty init // $NON-NLS-1$ if (paramSplit.length > 1) { value = paramSplit[1]; } map.put(name, value); } return map; } /** * Decode a query string * * @param query * to decode * @return a decode query string */ public static String decodeQuery(String query) { if (query != null && query.length() > 0) { try { query = URLDecoder.decode(query, CHARSET_DECODE); // better ISO-8859-1 than UTF-8 } catch(IllegalArgumentException e) { log.warn("Error decoding query, maybe your request parameters should be encoded:" + query, e); return null; } catch (UnsupportedEncodingException uee) { log.warn("Error decoding query, maybe your request parameters should be encoded:" + query, uee); return null; } return query; } return null; } public JPanel getPanel() { return paneParsed; } /** * Create a pane with three tables (request, params, headers) * * @return Pane to display request data */ private Component createRequestPane() { // Set up the 1st table Result with empty headers tableRequest = new JTable(requestModel); tableRequest.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell")); // $NON-NLS-1$ tableRequest.addMouseListener(new TextBoxDoubleClick(tableRequest)); setFirstColumnPreferredSize(tableRequest); RendererUtils.applyRenderers(tableRequest, RENDERERS_REQUEST); // Set up the 2nd table tableParams = new JTable(paramsModel); tableParams.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell")); // $NON-NLS-1$ tableParams.addMouseListener(new TextBoxDoubleClick(tableParams)); setFirstColumnPreferredSize(tableParams); tableParams.getTableHeader().setDefaultRenderer( new HeaderAsPropertyRenderer()); RendererUtils.applyRenderers(tableParams, RENDERERS_PARAMS); // Set up the 3rd table tableHeaders = new JTable(headersModel); tableHeaders.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell")); // $NON-NLS-1$ tableHeaders.addMouseListener(new TextBoxDoubleClick(tableHeaders)); setFirstColumnPreferredSize(tableHeaders); tableHeaders.getTableHeader().setDefaultRenderer( new HeaderAsPropertyRenderer()); RendererUtils.applyRenderers(tableHeaders, RENDERERS_HEADERS); // Create the split pane JSplitPane topSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, GuiUtils.makeScrollPane(tableParams), GuiUtils.makeScrollPane(tableHeaders)); topSplit.setOneTouchExpandable(true); topSplit.setResizeWeight(0.50); // set split ratio topSplit.setBorder(null); // see bug jdk 4131528 JSplitPane paneParsed = new JSplitPane(JSplitPane.VERTICAL_SPLIT, GuiUtils.makeScrollPane(tableRequest), topSplit); paneParsed.setOneTouchExpandable(true); paneParsed.setResizeWeight(0.25); // set split ratio (only 5 lines to display) paneParsed.setBorder(null); // see bug jdk 4131528 // Hint to background color on bottom tabs (grey, not blue) JPanel panel = new JPanel(new BorderLayout()); panel.add(paneParsed); return panel; } private void setFirstColumnPreferredSize(JTable table) { TableColumn column = table.getColumnModel().getColumn(0); column.setMaxWidth(300); column.setPreferredWidth(160); } /* (non-Javadoc) * @see org.apache.jmeter.visualizers.request.RequestView#getLabel() */ public String getLabel() { return JMeterUtils.getResString(KEY_LABEL); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/0000755000175000017500000000000012165514773026640 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/Cookie.java0000644000175000017500000001553512032647215030714 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.Serializable; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.LongProperty; import org.apache.jorphan.util.JOrphanUtils; /** * This class is a Cookie encapsulator. * */ public class Cookie extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; private static final String TAB = "\t"; private static final String VALUE = "Cookie.value"; //$NON-NLS-1$ private static final String DOMAIN = "Cookie.domain"; //$NON-NLS-1$ private static final String EXPIRES = "Cookie.expires"; //$NON-NLS-1$ private static final String SECURE = "Cookie.secure"; //$NON-NLS-1$ private static final String PATH = "Cookie.path"; //$NON-NLS-1$ private static final String PATH_SPECIFIED = "Cookie.path_specified"; //$NON-NLS-1$ private static final String DOMAIN_SPECIFIED = "Cookie.domain_specified"; //$NON-NLS-1$ private static final String VERSION = "Cookie.version"; //$NON-NLS-1$ private static final int DEFAULT_VERSION = 1; /** * create the coookie */ public Cookie() { this("","","","",false,0,false,false); } /** * create the coookie * * @param expires - this is in seconds * */ public Cookie(String name, String value, String domain, String path, boolean secure, long expires) { this(name,value,domain,path,secure,expires,true,true); } /** * create the coookie * * @param expires - this is in seconds * @param hasPath - was the path explicitly specified? * @param hasDomain - was the domain explicitly specified? * */ public Cookie(String name, String value, String domain, String path, boolean secure, long expires, boolean hasPath, boolean hasDomain) { this(name, value, domain, path, secure, expires, hasPath, hasDomain, DEFAULT_VERSION); } /** * Create a JMeter Cookie. * * @param name * @param value * @param domain * @param path * @param secure * @param expires - this is in seconds * @param hasPath - was the path explicitly specified? * @param hasDomain - was the domain explicitly specified? * @param version - cookie spec. version */ public Cookie(String name, String value, String domain, String path, boolean secure, long expires, boolean hasPath, boolean hasDomain, int version) { this.setName(name); this.setValue(value); this.setDomain(domain); this.setPath(path); this.setSecure(secure); this.setExpires(expires); this.setPathSpecified(hasPath); this.setDomainSpecified(hasDomain); this.setVersion(version); } public void addConfigElement(ConfigElement config) { } /** * get the value for this object. */ public String getValue() { return getPropertyAsString(VALUE); } /** * set the value for this object. */ public void setValue(String value) { this.setProperty(VALUE, value); } /** * get the domain for this object. */ public String getDomain() { return getPropertyAsString(DOMAIN); } /** * set the domain for this object. */ public void setDomain(String domain) { setProperty(DOMAIN, domain); } /** * get the expiry time for the cookie * * @return Expiry time in seconds since the Java epoch */ public long getExpires() { return getPropertyAsLong(EXPIRES); } /** * get the expiry time for the cookie * * @return Expiry time in milli-seconds since the Java epoch, * i.e. same as System.currentTimeMillis() */ public long getExpiresMillis() { return getPropertyAsLong(EXPIRES)*1000; } /** * set the expiry time for the cookie * @param expires - expiry time in seconds since the Java epoch */ public void setExpires(long expires) { setProperty(new LongProperty(EXPIRES, expires)); } /** * get the secure for this object. */ public boolean getSecure() { return getPropertyAsBoolean(SECURE); } /** * set the secure for this object. */ public void setSecure(boolean secure) { setProperty(new BooleanProperty(SECURE, secure)); } /** * get the path for this object. */ public String getPath() { return getPropertyAsString(PATH); } /** * set the path for this object. */ public void setPath(String path) { setProperty(PATH, path); } public void setPathSpecified(boolean b) { setProperty(PATH_SPECIFIED, b); } public boolean isPathSpecified(){ return getPropertyAsBoolean(PATH_SPECIFIED); } public void setDomainSpecified(boolean b) { setProperty(DOMAIN_SPECIFIED, b); } public boolean isDomainSpecified(){ return getPropertyAsBoolean(DOMAIN_SPECIFIED); } /** * creates a string representation of this cookie */ @Override public String toString() { StringBuilder sb=new StringBuilder(80); sb.append(getDomain()); // flag - if all machines within a given domain can access the variable. //(from http://www.cookiecentral.com/faq/ 3.5) sb.append(TAB).append("TRUE"); sb.append(TAB).append(getPath()); sb.append(TAB).append(JOrphanUtils.booleanToSTRING(getSecure())); sb.append(TAB).append(getExpires()); sb.append(TAB).append(getName()); sb.append(TAB).append(getValue()); return sb.toString(); } /** * @return the version */ public int getVersion() { return getPropertyAsInt(VERSION, DEFAULT_VERSION); } /** * @param version the version to set */ public void setVersion(int version) { setProperty(VERSION, version, DEFAULT_VERSION); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/HeaderManager.java0000644000175000017500000002251612032647215032163 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.IOUtils; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jorphan.util.JOrphanUtils; /** * This class provides an interface to headers file to pass HTTP headers along * with a request. * * @version $Revision: 1380327 $ */ public class HeaderManager extends ConfigTestElement implements Serializable { private static final long serialVersionUID = 240L; public static final String HEADERS = "HeaderManager.headers";// $NON-NLS-1$ private static final String[] COLUMN_RESOURCE_NAMES = { "name", // $NON-NLS-1$ "value" // $NON-NLS-1$ }; private static final int COLUMN_COUNT = COLUMN_RESOURCE_NAMES.length; /** * Apache SOAP driver does not provide an easy way to get and set the cookie * or HTTP header. Therefore it is necessary to store the SOAPHTTPConnection * object and reuse it. */ private Object SOAPHeader = null; public HeaderManager() { setProperty(new CollectionProperty(HEADERS, new ArrayList())); } /** {@inheritDoc} */ @Override public void clear() { super.clear(); setProperty(new CollectionProperty(HEADERS, new ArrayList())); } /** * Get the collection of JMeterProperty entries representing the headers. * * @return the header collection property */ public CollectionProperty getHeaders() { return (CollectionProperty) getProperty(HEADERS); } public int getColumnCount() { return COLUMN_COUNT; } public String getColumnName(int column) { return COLUMN_RESOURCE_NAMES[column]; } public Class getColumnClass(int column) { return COLUMN_RESOURCE_NAMES[column].getClass(); } public Header getHeader(int row) { return (Header) getHeaders().get(row).getObjectValue(); } /** * Save the header data to a file. */ public void save(String headFile) throws IOException { File file = new File(headFile); if (!file.isAbsolute()) { file = new File(System.getProperty("user.dir")// $NON-NLS-1$ + File.separator + headFile); } PrintWriter writer = new PrintWriter(new FileWriter(file)); // TODO Charset ? writer.println("# JMeter generated Header file");// $NON-NLS-1$ final CollectionProperty hdrs = getHeaders(); for (int i = 0; i < hdrs.size(); i++) { final JMeterProperty hdr = hdrs.get(i); Header head = (Header) hdr.getObjectValue(); writer.println(head.toString()); } writer.flush(); writer.close(); } /** * Add header data from a file. */ public void addFile(String headerFile) throws IOException { File file = new File(headerFile); if (!file.isAbsolute()) { file = new File(System.getProperty("user.dir")// $NON-NLS-1$ + File.separator + headerFile); } if (!file.canRead()) { throw new IOException("The file you specified cannot be read."); } BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(file)); // TODO Charset ? String line; while ((line = reader.readLine()) != null) { try { if (line.startsWith("#") || JOrphanUtils.isBlank(line)) {// $NON-NLS-1$ continue; } String[] st = JOrphanUtils.split(line, "\t", " ");// $NON-NLS-1$ $NON-NLS-2$ int name = 0; int value = 1; Header header = new Header(st[name], st[value]); getHeaders().addItem(header); } catch (Exception e) { throw new IOException("Error parsing header line\n\t'" + line + "'\n\t" + e); } } } finally { IOUtils.closeQuietly(reader); } } /** * Add a header. */ public void add(Header h) { getHeaders().addItem(h); } /** * Add an empty header. */ public void add() { getHeaders().addItem(new Header()); } /** * Remove a header. */ public void remove(int index) { getHeaders().remove(index); } /** * Return the number of headers. */ public int size() { return getHeaders().size(); } /** * Return the header at index i. */ public Header get(int i) { return (Header) getHeaders().get(i).getObjectValue(); } /** * Remove from Headers the header named name * @param name header name */ public void removeHeaderNamed(String name) { List removeIndices = new ArrayList(); for (int i = getHeaders().size() - 1; i >= 0; i--) { Header header = (Header) getHeaders().get(i).getObjectValue(); if (header == null) { continue; } if (header.getName().equalsIgnoreCase(name)) { removeIndices.add(Integer.valueOf(i)); } } for (Integer indice : removeIndices) { getHeaders().remove(indice.intValue()); } } /** * Added support for SOAP related header stuff. 1-29-04 Peter Lin * * @return the SOAP header Object */ public Object getSOAPHeader() { return this.SOAPHeader; } /** * Set the SOAPHeader with the SOAPHTTPConnection object. We may or may not * want to rename this to setHeaderObject(Object). Concievably, other * samplers may need this kind of functionality. 1-29-04 Peter Lin * * @param header */ public void setSOAPHeader(Object header) { this.SOAPHeader = header; } /** * Merge the attributes with a another HeaderManager's attributes. * @param element The object to be merged with * @param preferLocalValues When both objects have a value for the * same attribute, this flag determines which value is preferresd. */ public HeaderManager merge(TestElement element, boolean preferLocalValues) { if (!(element instanceof HeaderManager)) { throw new IllegalArgumentException("Cannot merge type:" + this.getClass().getName() + " with type:" + element.getClass().getName()); } // start off with a merged object as a copy of the local object HeaderManager merged = (HeaderManager)this.clone(); HeaderManager other = (HeaderManager)element; // iterate thru each of the other headers for (int i = 0; i < other.getHeaders().size(); i++) { Header otherHeader = other.get(i); boolean found = false; // find the same property in the local headers for (int j = 0; j < merged.getHeaders().size(); j++) { Header mergedHeader = merged.get(j); if (mergedHeader.getName().equalsIgnoreCase(otherHeader.getName())) { // we have a match found = true; if (!preferLocalValues) { // prefer values from the other object if ( (otherHeader.getValue() == null) || (otherHeader.getValue().length() == 0) ) { // the other object has an empty value, so remove this value from the merged object merged.remove(j); } else { // use the other object's value mergedHeader.setValue(otherHeader.getValue()); } } // break out of the inner loop break; } } if (!found) { // the other object has a new value to be added to the merged merged.add(otherHeader); } } // finally, merge the names so it's clear they've been merged merged.setName(merged.getName() + ":" + other.getName()); return merged; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/HC3CookieHandler.java0000644000175000017500000001654112032647215032506 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.net.URL; import java.util.Date; import org.apache.commons.httpclient.cookie.CookiePolicy; import org.apache.commons.httpclient.cookie.CookieSpec; import org.apache.commons.httpclient.cookie.MalformedCookieException; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * HTTPClient 3.1 implementation */ public class HC3CookieHandler implements CookieHandler { private static final Logger log = LoggingManager.getLoggerForClass(); private final transient CookieSpec cookieSpec; /** * */ public HC3CookieHandler(String policy) { super(); this.cookieSpec = CookiePolicy.getCookieSpec(policy); } /** * Create an HttpClient cookie from a JMeter cookie */ private org.apache.commons.httpclient.Cookie makeCookie(Cookie jmc){ long exp = jmc.getExpiresMillis(); org.apache.commons.httpclient.Cookie ret= new org.apache.commons.httpclient.Cookie( jmc.getDomain(), jmc.getName(), jmc.getValue(), jmc.getPath(), exp > 0 ? new Date(exp) : null, // use null for no expiry jmc.getSecure() ); ret.setPathAttributeSpecified(jmc.isPathSpecified()); ret.setDomainAttributeSpecified(jmc.isDomainSpecified()); ret.setVersion(jmc.getVersion()); return ret; } /** * Get array of valid HttpClient cookies for the URL * * @param url the target URL * @return array of HttpClient cookies * */ org.apache.commons.httpclient.Cookie[] getCookiesForUrl( CollectionProperty cookiesCP, URL url, boolean allowVariableCookie){ org.apache.commons.httpclient.Cookie cookies[]= new org.apache.commons.httpclient.Cookie[cookiesCP.size()]; int i=0; for (PropertyIterator iter = cookiesCP.iterator(); iter.hasNext();) { Cookie jmcookie = (Cookie) iter.next().getObjectValue(); // Set to running version, to allow function evaluation for the cookie values (bug 28715) if (allowVariableCookie) { jmcookie.setRunningVersion(true); } cookies[i++] = makeCookie(jmcookie); if (allowVariableCookie) { jmcookie.setRunningVersion(false); } } String host = url.getHost(); String protocol = url.getProtocol(); int port= HTTPSamplerBase.getDefaultPort(protocol,url.getPort()); String path = url.getPath(); boolean secure = HTTPSamplerBase.isSecure(protocol); return cookieSpec.match(host, port, path, secure, cookies); } /** * Find cookies applicable to the given URL and build the Cookie header from * them. * * @param url * URL of the request to which the returned header will be added. * @return the value string for the cookie header (goes after "Cookie: "). */ public String getCookieHeaderForURL( CollectionProperty cookiesCP, URL url, boolean allowVariableCookie) { org.apache.commons.httpclient.Cookie[] c = getCookiesForUrl(cookiesCP, url, allowVariableCookie); int count = c.length; boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled){ log.debug("Found "+count+" cookies for "+url.toExternalForm()); } if (count <=0){ return null; } String hdr=cookieSpec.formatCookieHeader(c).getValue(); if (debugEnabled){ log.debug("Cookie: "+hdr); } return hdr; } /** * {@inheritDoc} */ public void addCookieFromHeader(CookieManager cookieManager, boolean checkCookies,String cookieHeader, URL url){ boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled) { log.debug("Received Cookie: " + cookieHeader + " From: " + url.toExternalForm()); } String protocol = url.getProtocol(); String host = url.getHost(); int port= HTTPSamplerBase.getDefaultPort(protocol,url.getPort()); String path = url.getPath(); boolean isSecure=HTTPSamplerBase.isSecure(protocol); org.apache.commons.httpclient.Cookie[] cookies= null; try { cookies = cookieSpec.parse(host, port, path, isSecure, cookieHeader); } catch (MalformedCookieException e) { log.warn(cookieHeader+e.getLocalizedMessage()); } catch (IllegalArgumentException e) { log.warn(cookieHeader+e.getLocalizedMessage()); } if (cookies == null) { return; } for(org.apache.commons.httpclient.Cookie cookie : cookies){ try { if (checkCookies) { cookieSpec.validate(host, port, path, isSecure, cookie); } Date expiryDate = cookie.getExpiryDate(); long exp = 0; if (expiryDate!= null) { exp=expiryDate.getTime(); } Cookie newCookie = new Cookie( cookie.getName(), cookie.getValue(), cookie.getDomain(), cookie.getPath(), cookie.getSecure(), exp / 1000, cookie.isPathAttributeSpecified(), cookie.isDomainAttributeSpecified() ); // Store session cookies as well as unexpired ones if (exp == 0 || exp >= System.currentTimeMillis()) { newCookie.setVersion(cookie.getVersion()); cookieManager.add(newCookie); // Has its own debug log; removes matching cookies } else { cookieManager.removeMatchingCookies(newCookie); if (debugEnabled){ log.debug("Dropping expired Cookie: "+newCookie.toString()); } } } catch (MalformedCookieException e) { // This means the cookie was wrong for the URL log.warn("Not storing invalid cookie: <"+cookieHeader+"> for URL "+url+" ("+e.getLocalizedMessage()+")"); } catch (IllegalArgumentException e) { log.warn(cookieHeader+e.getLocalizedMessage()); } } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/Header.java0000644000175000017500000000474712032647215030676 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.Serializable; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.testelement.AbstractTestElement; /** * This class is an HTTP Header encapsulator. * */ public class Header extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; private static final String HNAME = "Header.name"; //$NON-NLS-1$ // See TestElementPropertyConverter private static final String VALUE = "Header.value"; //$NON-NLS-1$ /** * Create the header. */ public Header() { this.setName(""); this.setValue(""); } /** * Create the coookie. */ public Header(String name, String value) { this.setName(name); this.setValue(value); } public void addConfigElement(ConfigElement config) { } public boolean expectsModification() { return false; } /** * Get the name for this object. */ @Override public String getName() { return getPropertyAsString(HNAME); } /** * Set the name for this object. */ @Override public void setName(String name) { this.setProperty(HNAME, name); } /** * Get the value for this object. */ public String getValue() { return getPropertyAsString(VALUE); } /** * Set the value for this object. */ public void setValue(String value) { this.setProperty(VALUE, value); } /** * Creates a string representation of this header. */ @Override public String toString() { return getName() + "\t" + getValue(); //$NON-NLS-1$ } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java0000644000175000017500000004004112032647215031767 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // For unit tests @see TestCookieManager package org.apache.jmeter.protocol.http.control; import java.io.Serializable; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.Collections; import java.util.Date; import java.util.Map; import org.apache.commons.collections.map.LRUMap; import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.URIException; import org.apache.commons.httpclient.util.DateParseException; import org.apache.commons.httpclient.util.DateUtil; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpRequestBase; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestIterationListener; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Handles HTTP Caching */ public class CacheManager extends ConfigTestElement implements TestStateListener, TestIterationListener, Serializable { private static final long serialVersionUID = 234L; private static final Logger log = LoggingManager.getLoggerForClass(); //+ JMX attributes, do not change values public static final String CLEAR = "clearEachIteration"; // $NON-NLS-1$ public static final String USE_EXPIRES = "useExpires"; // $NON-NLS-1$ public static final String MAX_SIZE = "maxSize"; // $NON-NLS-1$ //- private transient InheritableThreadLocal> threadCache; private transient boolean useExpires; // Cached value private static final int DEFAULT_MAX_SIZE = 5000; private static final long ONE_YEAR_MS = 365*86400*1000; public CacheManager() { setProperty(new BooleanProperty(CLEAR, false)); setProperty(new BooleanProperty(USE_EXPIRES, false)); clearCache(); useExpires = false; } /* * Holder for storing cache details. * Perhaps add original response later? */ // package-protected to allow access by unit-test cases static class CacheEntry{ private final String lastModified; private final String etag; private final Date expires; public CacheEntry(String lastModified, Date expires, String etag){ this.lastModified = lastModified; this.etag = etag; this.expires = expires; } public String getLastModified() { return lastModified; } public String getEtag() { return etag; } @Override public String toString(){ return lastModified+" "+etag; } public Date getExpires() { return expires; } } /** * Save the Last-Modified, Etag, and Expires headers if the result is cacheable. * Version for Java implementation. * @param conn connection * @param res result */ public void saveDetails(URLConnection conn, SampleResult res){ if (isCacheable(res)){ String lastModified = conn.getHeaderField(HTTPConstants.LAST_MODIFIED); String expires = conn.getHeaderField(HTTPConstants.EXPIRES); String etag = conn.getHeaderField(HTTPConstants.ETAG); String url = conn.getURL().toString(); String cacheControl = conn.getHeaderField(HTTPConstants.CACHE_CONTROL); String date = conn.getHeaderField(HTTPConstants.DATE); setCache(lastModified, cacheControl, expires, etag, url, date); } } /** * Save the Last-Modified, Etag, and Expires headers if the result is cacheable. * Version for Commons HttpClient implementation. * @param method * @param res result */ public void saveDetails(HttpMethod method, SampleResult res) throws URIException{ if (isCacheable(res)){ String lastModified = getHeader(method ,HTTPConstants.LAST_MODIFIED); String expires = getHeader(method ,HTTPConstants.EXPIRES); String etag = getHeader(method ,HTTPConstants.ETAG); String url = method.getURI().toString(); String cacheControl = getHeader(method, HTTPConstants.CACHE_CONTROL); String date = getHeader(method, HTTPConstants.DATE); setCache(lastModified, cacheControl, expires, etag, url, date); } } /** * Save the Last-Modified, Etag, and Expires headers if the result is cacheable. * Version for Apache HttpClient implementation. * @param method * @param res result */ public void saveDetails(HttpResponse method, SampleResult res) { if (isCacheable(res)){ String lastModified = getHeader(method ,HTTPConstants.LAST_MODIFIED); String expires = getHeader(method ,HTTPConstants.EXPIRES); String etag = getHeader(method ,HTTPConstants.ETAG); String cacheControl = getHeader(method, HTTPConstants.CACHE_CONTROL); String date = getHeader(method, HTTPConstants.DATE); setCache(lastModified, cacheControl, expires, etag, res.getUrlAsString(), date); // TODO correct URL? } } // helper method to save the cache entry private void setCache(String lastModified, String cacheControl, String expires, String etag, String url, String date) { if (log.isDebugEnabled()){ log.debug("setCache(" + lastModified + "," + cacheControl + "," + expires + "," + etag + "," + url + "," + date + ")"); } Date expiresDate = null; // i.e. not using Expires if (useExpires) {// Check that we are processing Expires/CacheControl final String MAX_AGE = "max-age="; if (expires != null) { try { expiresDate = DateUtil.parseDate(expires); } catch (DateParseException e) { if (log.isDebugEnabled()){ log.debug("Unable to parse Expires: '"+expires+"' "+e); } expiresDate = new Date(0L); // invalid dates must be treated as expired } } // if no-cache is present, ensure that expiresDate remains null, which forces revalidation if(cacheControl != null && !cacheControl.contains("no-cache")) { // the max-age directive overrides the Expires header, if(cacheControl.contains(MAX_AGE)) { long maxAgeInSecs = Long.parseLong( cacheControl.substring(cacheControl.indexOf(MAX_AGE)+MAX_AGE.length()) .split("[, ]")[0] // Bug 51932 - allow for optional trailing attributes ); expiresDate=new Date(System.currentTimeMillis()+maxAgeInSecs*1000); } else if(expires==null) { // No max-age && No expires if(!StringUtils.isEmpty(lastModified) && !StringUtils.isEmpty(date)) { try { Date responseDate = DateUtil.parseDate( date ); Date lastModifiedAsDate = DateUtil.parseDate( lastModified ); // see https://developer.mozilla.org/en/HTTP_Caching_FAQ // see http://www.ietf.org/rfc/rfc2616.txt#13.2.4 expiresDate=new Date(System.currentTimeMillis() +Math.round((responseDate.getTime()-lastModifiedAsDate.getTime())*0.1)); } catch(DateParseException e) { // date or lastModified may be null or in bad format if(log.isWarnEnabled()) { log.warn("Failed computing expiration date with following info:" +lastModified + "," + cacheControl + "," + expires + "," + etag + "," + url + "," + date); } // TODO Can't see anything in SPEC expiresDate = new Date(System.currentTimeMillis()+ONE_YEAR_MS); } } else { // TODO Can't see anything in SPEC expiresDate = new Date(System.currentTimeMillis()+ONE_YEAR_MS); } } // else expiresDate computed in (expires!=null) condition is used } } getCache().put(url, new CacheEntry(lastModified, expiresDate, etag)); } // Helper method to deal with missing headers - Commons HttpClient private String getHeader(HttpMethod method, String name){ org.apache.commons.httpclient.Header hdr = method.getResponseHeader(name); return hdr != null ? hdr.getValue() : null; } // Apache HttpClient private String getHeader(HttpResponse method, String name) { org.apache.http.Header hdr = method.getLastHeader(name); return hdr != null ? hdr.getValue() : null; } /* * Is the sample result OK to cache? * i.e is it in the 2xx range? */ private boolean isCacheable(SampleResult res){ final String responseCode = res.getResponseCode(); return "200".compareTo(responseCode) <= 0 // $NON-NLS-1$ && "299".compareTo(responseCode) >= 0; // $NON-NLS-1$ } /** * Check the cache, and if there is a match, set the headers:
        * If-Modified-Since
        * If-None-Match
        * Commons HttpClient version * @param url URL to look up in cache * @param method where to set the headers */ public void setHeaders(URL url, HttpMethod method) { CacheEntry entry = getCache().get(url.toString()); if (log.isDebugEnabled()){ log.debug(method.getName()+"(OACH) "+url.toString()+" "+entry); } if (entry != null){ final String lastModified = entry.getLastModified(); if (lastModified != null){ method.setRequestHeader(HTTPConstants.IF_MODIFIED_SINCE, lastModified); } final String etag = entry.getEtag(); if (etag != null){ method.setRequestHeader(HTTPConstants.IF_NONE_MATCH, etag); } } } /** * Check the cache, and if there is a match, set the headers:
        * If-Modified-Since
        * If-None-Match
        * Apache HttpClient version. * @param url URL to look up in cache * @param request where to set the headers */ public void setHeaders(URL url, HttpRequestBase request) { CacheEntry entry = getCache().get(url.toString()); if (log.isDebugEnabled()){ log.debug(request.getMethod()+"(OAH) "+url.toString()+" "+entry); } if (entry != null){ final String lastModified = entry.getLastModified(); if (lastModified != null){ request.setHeader(HTTPConstants.IF_MODIFIED_SINCE, lastModified); } final String etag = entry.getEtag(); if (etag != null){ request.setHeader(HTTPConstants.IF_NONE_MATCH, etag); } } } /** * Check the cache, and if there is a match, set the headers:
        * If-Modified-Since
        * If-None-Match
        * @param url URL to look up in cache * @param conn where to set the headers */ public void setHeaders(HttpURLConnection conn, URL url) { CacheEntry entry = getCache().get(url.toString()); if (log.isDebugEnabled()){ log.debug(conn.getRequestMethod()+"(Java) "+url.toString()+" "+entry); } if (entry != null){ final String lastModified = entry.getLastModified(); if (lastModified != null){ conn.addRequestProperty(HTTPConstants.IF_MODIFIED_SINCE, lastModified); } final String etag = entry.getEtag(); if (etag != null){ conn.addRequestProperty(HTTPConstants.IF_NONE_MATCH, etag); } } } /** * Check the cache, if the entry has an expires header and the entry has not expired, return true
        * @param url URL to look up in cache */ public boolean inCache(URL url) { CacheEntry entry = getCache().get(url.toString()); if (log.isDebugEnabled()){ log.debug("inCache "+url.toString()+" "+entry); } if (entry != null){ final Date expiresDate = entry.getExpires(); if (expiresDate != null) { if (expiresDate.after(new Date())) { if (log.isDebugEnabled()){ log.debug("Expires= " + expiresDate + " (Valid)"); } return true; } else { if (log.isDebugEnabled()){ log.debug("Expires= " + expiresDate + " (Expired)"); } } } } return false; } private Map getCache(){ return threadCache.get(); } public boolean getClearEachIteration() { return getPropertyAsBoolean(CLEAR); } public void setClearEachIteration(boolean clear) { setProperty(new BooleanProperty(CLEAR, clear)); } public boolean getUseExpires() { return getPropertyAsBoolean(USE_EXPIRES); } public void setUseExpires(boolean expires) { setProperty(new BooleanProperty(USE_EXPIRES, expires)); } /** * @return int cache max size */ public int getMaxSize() { return getPropertyAsInt(MAX_SIZE, DEFAULT_MAX_SIZE); } /** * @param size int cache max size */ public void setMaxSize(int size) { setProperty(MAX_SIZE, size, DEFAULT_MAX_SIZE); } @Override public void clear(){ super.clear(); clearCache(); } private void clearCache() { log.debug("Clear cache"); threadCache = new InheritableThreadLocal>(){ @Override protected Map initialValue(){ // Bug 51942 - this map may be used from multiple threads @SuppressWarnings("unchecked") // LRUMap is not generic currently Map map = new LRUMap(getMaxSize()); return Collections.synchronizedMap(map); } }; } public void testStarted() { } public void testEnded() { } public void testStarted(String host) { } public void testEnded(String host) { } public void testIterationStart(LoopIterationEvent event) { if (getClearEachIteration()) { clearCache(); } useExpires=getUseExpires(); // cache the value } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/HttpMirrorThread.java0000644000175000017500000002303212032647215032734 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.Socket; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Perl5Matcher; /** * Thread to handle one client request. Gets the request from the client and * sends the response back to the client. */ public class HttpMirrorThread implements Runnable { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String ISO_8859_1 = "ISO-8859-1"; //$NON-NLS-1$ private static final byte[] CRLF = { 0x0d, 0x0a }; /** Socket to client. */ private final Socket clientSocket; public HttpMirrorThread(Socket _clientSocket) { this.clientSocket=_clientSocket; } /** * Main processing method for the HttpMirror object */ public void run() { log.debug("Starting thread"); BufferedInputStream in = null; BufferedOutputStream out = null; try { in = new BufferedInputStream(clientSocket.getInputStream()); // Read the header part, we will be looking for a content-length // header, so we know how much we should read. // We assume headers are in ISO_8859_1 // If we do not find such a header, we will just have to read until // we have to block to read more, until we support chunked transfer int contentLength = -1; boolean isChunked = false; byte[] buffer = new byte[1024]; StringBuilder headers = new StringBuilder(); int length = 0; int positionOfBody = 0; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while(positionOfBody <= 0 && ((length = in.read(buffer)) != -1)) { log.debug("Write body"); baos.write(buffer, 0, length); // echo back headers.append(new String(buffer, 0, length, ISO_8859_1)); // Check if we have read all the headers positionOfBody = getPositionOfBody(headers.toString()); } baos.close(); final String headerString = headers.toString(); log.debug("Write headers"); out = new BufferedOutputStream(clientSocket.getOutputStream()); // The headers are written using ISO_8859_1 encoding out.write("HTTP/1.0 200 OK".getBytes(ISO_8859_1)); //$NON-NLS-1$ out.write(CRLF); out.write("Content-Type: text/plain".getBytes(ISO_8859_1)); //$NON-NLS-1$ out.write(CRLF); // Look for special Cookie request String cookieHeaderValue = getRequestHeaderValue(headerString, "X-SetCookie"); //$NON-NLS-1$ if (cookieHeaderValue != null) { out.write("Set-Cookie: ".getBytes(ISO_8859_1)); out.write(cookieHeaderValue.getBytes(ISO_8859_1)); out.write(CRLF); } out.write(CRLF); out.flush(); out.write(baos.toByteArray()); // Check if we have found a content-length header String contentLengthHeaderValue = getRequestHeaderValue(headerString, "Content-Length"); //$NON-NLS-1$ if(contentLengthHeaderValue != null) { contentLength = Integer.parseInt(contentLengthHeaderValue); } // Look for special Sleep request String sleepHeaderValue = getRequestHeaderValue(headerString, "X-Sleep"); //$NON-NLS-1$ if(sleepHeaderValue != null) { Thread.sleep(Integer.parseInt(sleepHeaderValue)); } String transferEncodingHeaderValue = getRequestHeaderValue(headerString, "Transfer-Encoding"); //$NON-NLS-1$ if(transferEncodingHeaderValue != null) { isChunked = transferEncodingHeaderValue.equalsIgnoreCase("chunked"); //$NON-NLS-1$ // We only support chunked transfer encoding if(!isChunked) { log.error("Transfer-Encoding header set, the value is not supported : " + transferEncodingHeaderValue); } } // If we know the content length, we can allow the reading of // the request to block until more data arrives. // If it is chunked transfer, we cannot allow the reading to // block, because we do not know when to stop reading, because // the chunked transfer is not properly supported yet length = 0; if(contentLength > 0) { // Check how much of the body we have already read as part of reading // the headers // We subtract two bytes for the crlf divider between header and body int totalReadBytes = headerString.length() - positionOfBody - 2; // We know when to stop reading, so we can allow the read method to block log.debug("Reading, "+totalReadBytes+" < " +contentLength); while((totalReadBytes < contentLength) && ((length = in.read(buffer)) != -1)) { log.debug("Read bytes: "+length); out.write(buffer, 0, length); totalReadBytes += length; log.debug("totalReadBytes: "+totalReadBytes); } } else if (isChunked) { // It is chunked transfer encoding, which we do not really support yet. // So we just read without blocking, because we do not know when to // stop reading, so we cannot block // TODO propery implement support for chunked transfer, i.e. to // know when we have read the whole request, and therefore allow // the reading to block log.debug("Chunked"); while(in.available() > 0 && ((length = in.read(buffer)) != -1)) { out.write(buffer, 0, length); } } else { // The reqest has no body, or it has a transfer encoding we do not support. // In either case, we read any data available log.debug("Other"); while(in.available() > 0 && ((length = in.read(buffer)) != -1)) { log.debug("Read bytes: "+length); out.write(buffer, 0, length); } } log.debug("Flush"); out.flush(); } catch (IOException e) { log.error("", e); } catch (InterruptedException e) { log.error("", e); } finally { JOrphanUtils.closeQuietly(out); JOrphanUtils.closeQuietly(in); JOrphanUtils.closeQuietly(clientSocket); } log.debug("End of Thread"); } private static String getRequestHeaderValue(String requestHeaders, String headerName) { Perl5Matcher localMatcher = JMeterUtils.getMatcher(); // We use multi-line mask so can prefix the line with ^ String expression = "^" + headerName + ":\\s+([^\\r\\n]+)"; // $NON-NLS-1$ $NON-NLS-2$ Pattern pattern = JMeterUtils.getPattern(expression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.MULTILINE_MASK); if(localMatcher.contains(requestHeaders, pattern)) { // The value is in the first group, group 0 is the whole match // System.out.println("Found:'"+localMatcher.getMatch().group(1)+"'"); // System.out.println("in: '"+localMatcher.getMatch().group(0)+"'"); return localMatcher.getMatch().group(1); } else { return null; } } private static int getPositionOfBody(String stringToCheck) { Perl5Matcher localMatcher = JMeterUtils.getMatcher(); // The headers and body are divided by a blank line (the \r is to allow for the CR before LF) String regularExpression = "^\\r$"; // $NON-NLS-1$ Pattern pattern = JMeterUtils.getPattern(regularExpression, Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.CASE_INSENSITIVE_MASK | Perl5Compiler.MULTILINE_MASK); PatternMatcherInput input = new PatternMatcherInput(stringToCheck); if(localMatcher.contains(input, pattern)) { MatchResult match = localMatcher.getMatch(); return match.beginOffset(0); } // No divider was found return -1; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/0000755000175000017500000000000012165514773027424 5ustar ebourgebourg././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/RecordController.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/RecordController.jav0000644000175000017500000000265612032647215033410 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control.gui; import org.apache.jmeter.control.gui.LogicControllerGui; import org.apache.jmeter.protocol.http.control.RecordingController; import org.apache.jmeter.testelement.TestElement; public class RecordController extends LogicControllerGui { private static final long serialVersionUID = 240L; @Override public String getLabelResource() { return "record_controller_title"; // $NON-NLS-1$ } @Override public TestElement createTestElement() { RecordingController con = new RecordingController(); this.configureTestElement(con); return con; } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/WebServiceSamplerGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/WebServiceSamplerGui0000644000175000017500000005134012032647215033370 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; import org.apache.commons.lang3.ArrayUtils; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.protocol.http.control.AuthManager; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.WebServiceSampler; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.protocol.http.util.WSDLHelper; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.gui.layout.VerticalLayout; /** * This is the GUI for the webservice samplers. It extends AbstractSamplerGui * and is modeled after the SOAP sampler GUI. I've added instructional notes to * the GUI for instructional purposes. XML parsing is pretty heavy weight, * therefore the notes address those situations.
        * Created on: Jun 26, 2003 * */ public class WebServiceSamplerGui extends AbstractSamplerGui implements java.awt.event.ActionListener { private static final long serialVersionUID = 240L; private final JLabeledTextField domain = new JLabeledTextField(JMeterUtils.getResString("web_server_domain")); // $NON-NLS-1$ private final JLabeledTextField protocol = new JLabeledTextField(JMeterUtils.getResString("protocol"), 4); // $NON-NLS-1$ private final JLabeledTextField port = new JLabeledTextField(JMeterUtils.getResString("web_server_port"), 4); // $NON-NLS-1$ private final JLabeledTextField path = new JLabeledTextField(JMeterUtils.getResString("path")); // $NON-NLS-1$ private final JLabeledTextField soapAction = new JLabeledTextField(JMeterUtils.getResString("webservice_soap_action")); // $NON-NLS-1$ /** * checkbox for Session maintenance. */ private JCheckBox maintainSession = new JCheckBox(JMeterUtils.getResString("webservice_maintain_session"), true); // $NON-NLS-1$ private JTextArea soapXml; private final JLabeledTextField wsdlField = new JLabeledTextField(JMeterUtils.getResString("wsdl_url")); // $NON-NLS-1$ private final JButton wsdlButton = new JButton(JMeterUtils.getResString("load_wsdl")); // $NON-NLS-1$ private final JButton selectButton = new JButton(JMeterUtils.getResString("configure_wsdl")); // $NON-NLS-1$ private JLabeledChoice wsdlMethods = null; private transient WSDLHelper HELPER = null; private final FilePanel soapXmlFile = new FilePanel(JMeterUtils.getResString("get_xml_from_file"), ".xml"); // $NON-NLS-1$ private final JLabeledTextField randomXmlFile = new JLabeledTextField(JMeterUtils.getResString("get_xml_from_random")); // $NON-NLS-1$ private final JLabeledTextField connectTimeout = new JLabeledTextField(JMeterUtils.getResString("webservice_timeout"), 4); // $NON-NLS-1$ /** * checkbox for memory cache. */ private JCheckBox memCache = new JCheckBox(JMeterUtils.getResString("memory_cache"), true); // $NON-NLS-1$ /** * checkbox for reading the response */ private JCheckBox readResponse = new JCheckBox(JMeterUtils.getResString("read_soap_response")); // $NON-NLS-1$ /** * checkbox for use proxy */ private JCheckBox useProxy = new JCheckBox(JMeterUtils.getResString("webservice_use_proxy")); // $NON-NLS-1$ /** * text field for the proxy host */ private JTextField proxyHost; /** * text field for the proxy port */ private JTextField proxyPort; /** * Text note about read response and its usage. */ private String readToolTip = JMeterUtils.getResString("read_response_note") // $NON-NLS-1$ + " " // $NON-NLS-1$ + JMeterUtils.getResString("read_response_note2") // $NON-NLS-1$ + " " // $NON-NLS-1$ + JMeterUtils.getResString("read_response_note3"); // $NON-NLS-1$ /** * Text note for proxy */ private String proxyToolTip = JMeterUtils.getResString("webservice_proxy_note") // $NON-NLS-1$ + " " // $NON-NLS-1$ + JMeterUtils.getResString("webservice_proxy_note2") // $NON-NLS-1$ + " " // $NON-NLS-1$ + JMeterUtils.getResString("webservice_proxy_note3"); // $NON-NLS-1$ public WebServiceSamplerGui() { init(); } public String getLabelResource() { return "webservice_sampler_title"; // $NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { WebServiceSampler sampler = new WebServiceSampler(); this.configureTestElement(sampler); this.modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement s) { WebServiceSampler sampler = (WebServiceSampler) s; this.configureTestElement(sampler); sampler.setDomain(domain.getText()); sampler.setProperty(HTTPSamplerBase.PORT,port.getText()); sampler.setProtocol(protocol.getText()); sampler.setPath(path.getText()); sampler.setWsdlURL(wsdlField.getText()); sampler.setMethod(HTTPConstants.POST); sampler.setSoapAction(soapAction.getText()); sampler.setMaintainSession(maintainSession.isSelected()); sampler.setXmlData(soapXml.getText()); sampler.setXmlFile(soapXmlFile.getFilename()); sampler.setXmlPathLoc(randomXmlFile.getText()); sampler.setTimeout(connectTimeout.getText()); sampler.setMemoryCache(memCache.isSelected()); sampler.setReadResponse(readResponse.isSelected()); sampler.setUseProxy(useProxy.isSelected()); sampler.setProxyHost(proxyHost.getText()); sampler.setProxyPort(proxyPort.getText()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); wsdlMethods.setValues(new String[0]); domain.setText(""); //$NON-NLS-1$ protocol.setText(""); //$NON-NLS-1$ port.setText(""); //$NON-NLS-1$ path.setText(""); //$NON-NLS-1$ soapAction.setText(""); //$NON-NLS-1$ maintainSession.setSelected(WebServiceSampler.MAINTAIN_SESSION_DEFAULT); soapXml.setText(""); //$NON-NLS-1$ wsdlField.setText(""); //$NON-NLS-1$ randomXmlFile.setText(""); //$NON-NLS-1$ connectTimeout.setText(""); //$NON-NLS-1$ proxyHost.setText(""); //$NON-NLS-1$ proxyPort.setText(""); //$NON-NLS-1$ memCache.setSelected(true); readResponse.setSelected(false); useProxy.setSelected(false); soapXmlFile.setFilename(""); //$NON-NLS-1$ } /** * init() adds soapAction to the mainPanel. The class reuses logic from * SOAPSampler, since it is common. */ private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); // MAIN PANEL JPanel mainPanel = new JPanel(); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); mainPanel.add(createTopPanel(), BorderLayout.NORTH); mainPanel.add(createMessagePanel(), BorderLayout.CENTER); mainPanel.add(createBottomPanel(), BorderLayout.SOUTH); this.add(mainPanel); } private final JPanel createTopPanel() { JPanel topPanel = new JPanel(); topPanel.setLayout(new VerticalLayout(5, VerticalLayout.BOTH)); JPanel wsdlHelper = new JPanel(); wsdlHelper.setLayout(new BoxLayout(wsdlHelper, BoxLayout.Y_AXIS)); wsdlHelper.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("webservice_configuration_wizard"))); // $NON-NLS-1$ // Button for browsing webservice wsdl JPanel wsdlEntry = new JPanel(); wsdlEntry.setLayout(new BoxLayout(wsdlEntry, BoxLayout.X_AXIS)); Border margin = new EmptyBorder(0, 5, 0, 5); wsdlEntry.setBorder(margin); wsdlHelper.add(wsdlEntry); wsdlEntry.add(wsdlField); wsdlEntry.add(wsdlButton); wsdlButton.addActionListener(this); // Web Methods JPanel listPanel = new JPanel(); listPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); JLabel selectLabel = new JLabel(JMeterUtils.getResString("webservice_methods")); // $NON-NLS-1$ wsdlMethods = new JLabeledChoice(); wsdlHelper.add(listPanel); listPanel.add(selectLabel); listPanel.add(wsdlMethods); listPanel.add(selectButton); selectButton.addActionListener(this); topPanel.add(wsdlHelper); JPanel urlPane = new JPanel(); urlPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); urlPane.add(protocol); urlPane.add(Box.createRigidArea(new Dimension(5,0))); urlPane.add(domain); urlPane.add(Box.createRigidArea(new Dimension(5,0))); urlPane.add(port); urlPane.add(Box.createRigidArea(new Dimension(5,0))); urlPane.add(connectTimeout); topPanel.add(urlPane); topPanel.add(createParametersPanel()); return topPanel; } private final JPanel createParametersPanel() { JPanel paramsPanel = new JPanel(); paramsPanel.setLayout(new BoxLayout(paramsPanel, BoxLayout.X_AXIS)); paramsPanel.add(path); paramsPanel.add(Box.createHorizontalGlue()); paramsPanel.add(soapAction); paramsPanel.add(Box.createHorizontalGlue()); paramsPanel.add(maintainSession); return paramsPanel; } private final JPanel createMessagePanel() { JPanel msgPanel = new JPanel(); msgPanel.setLayout(new BorderLayout(5, 0)); msgPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("webservice_message_soap"))); // $NON-NLS-1$ JPanel soapXmlPane = new JPanel(); soapXmlPane.setLayout(new BorderLayout(5, 0)); soapXmlPane.setBorder(BorderFactory.createTitledBorder( JMeterUtils.getResString("soap_data_title"))); // $NON-NLS-1$ soapXmlPane.setPreferredSize(new Dimension(4, 4)); // Permit dynamic resize of TextArea soapXml = new JTextArea(); soapXml.setLineWrap(true); soapXml.setWrapStyleWord(true); soapXml.setTabSize(4); // improve xml display soapXmlPane.add(new JScrollPane(soapXml), BorderLayout.CENTER); msgPanel.add(soapXmlPane, BorderLayout.CENTER); JPanel southPane = new JPanel(); southPane.setLayout(new BoxLayout(southPane, BoxLayout.Y_AXIS)); southPane.add(soapXmlFile); JPanel randomXmlPane = new JPanel(); randomXmlPane.setLayout(new BorderLayout(5, 0)); randomXmlPane.setBorder(BorderFactory.createTitledBorder( JMeterUtils.getResString("webservice_get_xml_from_random_title"))); // $NON-NLS-1$ randomXmlPane.add(randomXmlFile, BorderLayout.CENTER); southPane.add(randomXmlPane); msgPanel.add(southPane, BorderLayout.SOUTH); return msgPanel; } private final JPanel createBottomPanel() { JPanel optionPane = new JPanel(); optionPane.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("option"))); // $NON-NLS-1$ optionPane.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); JPanel ckboxPane = new HorizontalPanel(); ckboxPane.add(memCache, BorderLayout.WEST); ckboxPane.add(readResponse, BorderLayout.CENTER); readResponse.setToolTipText(readToolTip); optionPane.add(ckboxPane); // add the proxy elements optionPane.add(getProxyServerPanel()); return optionPane; } /** * Create a panel containing the proxy server details * * @return the panel */ private final JPanel getProxyServerPanel(){ JPanel proxyServer = new JPanel(); proxyServer.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); proxyServer.add(useProxy); useProxy.addActionListener(this); useProxy.setToolTipText(proxyToolTip); proxyServer.add(Box.createRigidArea(new Dimension(5,0))); proxyServer.add(getProxyHostPanel()); proxyServer.add(Box.createRigidArea(new Dimension(5,0))); proxyServer.add(getProxyPortPanel()); return proxyServer; } private JPanel getProxyHostPanel() { proxyHost = new JTextField(12); JLabel label = new JLabel(JMeterUtils.getResString("web_server_domain")); // $NON-NLS-1$ label.setLabelFor(proxyHost); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(proxyHost, BorderLayout.CENTER); return panel; } private JPanel getProxyPortPanel() { proxyPort = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_port")); // $NON-NLS-1$ label.setLabelFor(proxyPort); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(proxyPort, BorderLayout.CENTER); return panel; } /** * the implementation loads the URL and the soap action for the request. */ @Override public void configure(TestElement el) { super.configure(el); WebServiceSampler sampler = (WebServiceSampler) el; wsdlField.setText(sampler.getWsdlURL()); final String wsdlText = wsdlField.getText(); if (wsdlText != null && wsdlText.length() > 0) { fillWsdlMethods(wsdlField.getText(), true, sampler.getSoapAction()); } protocol.setText(sampler.getProtocol()); domain.setText(sampler.getDomain()); port.setText(sampler.getPropertyAsString(HTTPSamplerBase.PORT)); path.setText(sampler.getPath()); soapAction.setText(sampler.getSoapAction()); maintainSession.setSelected(sampler.getMaintainSession()); soapXml.setText(sampler.getXmlData()); soapXml.setCaretPosition(0); // go to 1st line soapXmlFile.setFilename(sampler.getXmlFile()); randomXmlFile.setText(sampler.getXmlPathLoc()); connectTimeout.setText(sampler.getTimeout()); memCache.setSelected(sampler.getMemoryCache()); readResponse.setSelected(sampler.getReadResponse()); useProxy.setSelected(sampler.getUseProxy()); if (sampler.getProxyHost().length() == 0) { proxyHost.setEnabled(false); } else { proxyHost.setText(sampler.getProxyHost()); } if (sampler.getProxyPort() == 0) { proxyPort.setEnabled(false); } else { proxyPort.setText(String.valueOf(sampler.getProxyPort())); } } /** * configure the sampler from the WSDL. If the WSDL did not include service * node, it will use the original URL minus the querystring. That may not be * correct, so we should probably add a note. For Microsoft webservices it * will work, since that's how IIS works. */ public void configureFromWSDL() { if (HELPER != null) { if(HELPER.getBinding() != null) { this.protocol.setText(HELPER.getProtocol()); this.domain.setText(HELPER.getBindingHost()); if (HELPER.getBindingPort() > 0) { this.port.setText(String.valueOf(HELPER.getBindingPort())); } else { this.port.setText("80"); // $NON-NLS-1$ } this.path.setText(HELPER.getBindingPath()); } this.soapAction.setText(HELPER.getSoapAction(this.wsdlMethods.getText())); } } /** * The method uses WSDLHelper to get the information from the WSDL. Since * the logic for getting the description is isolated to this method, we can * easily replace it with a different WSDL driver later on. * * @param url * @param silent * @return array of web methods */ public String[] browseWSDL(String url, boolean silent) { try { // We get the AuthManager and pass it to the WSDLHelper // once the sampler is updated to Axis, all of this stuff // should not be necessary. Now I just need to find the // time and motivation to do it. WebServiceSampler sampler = (WebServiceSampler) this.createTestElement(); AuthManager manager = sampler.getAuthManager(); HELPER = new WSDLHelper(url, manager); HELPER.parse(); return HELPER.getWebMethods(); } catch (Exception exception) { if (!silent) { JOptionPane.showConfirmDialog(this, JMeterUtils.getResString("wsdl_helper_error") // $NON-NLS-1$ +"\n"+exception, // $NON-NLS-1$ JMeterUtils.getResString("warning"), // $NON-NLS-1$ JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); } return ArrayUtils.EMPTY_STRING_ARRAY; } } /** * method from ActionListener * * @param event * that occurred */ public void actionPerformed(ActionEvent event) { final Object eventSource = event.getSource(); if (eventSource == selectButton) { this.configureFromWSDL(); } else if (eventSource == useProxy) { // if use proxy is checked, we enable // the text fields for the host and port boolean use = useProxy.isSelected(); if (use) { proxyHost.setEnabled(true); proxyPort.setEnabled(true); } else { proxyHost.setEnabled(false); proxyPort.setEnabled(false); } } else if (eventSource == wsdlButton){ final String wsdlText = wsdlField.getText(); if (wsdlText != null && wsdlText.length() > 0) { fillWsdlMethods(wsdlText, false, null); } else { JOptionPane.showConfirmDialog(this, JMeterUtils.getResString("wsdl_url_error"), // $NON-NLS-1$ JMeterUtils.getResString("warning"), // $NON-NLS-1$ JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE); } } } /** * @param wsdlText * @param silent * @param soapAction */ private void fillWsdlMethods(final String wsdlText, boolean silent, String soapAction) { String[] wsdlData = browseWSDL(wsdlText, silent); if (wsdlData != null) { wsdlMethods.setValues(wsdlData); if (HELPER != null && soapAction != null) { String selected = HELPER.getSoapActionName(soapAction); if (selected != null) { wsdlMethods.setText(selected); } } wsdlMethods.repaint(); } } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpTestSampleGui.ja0000644000175000017500000002065112032647215033321 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.http.config.gui.MultipartUrlConfigGui; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; //For unit tests, @see TestHttpTestSampleGui /** * HTTP Sampler GUI * */ public class HttpTestSampleGui extends AbstractSamplerGui implements ItemListener { private static final long serialVersionUID = 240L; private MultipartUrlConfigGui urlConfigGui; private JCheckBox getImages; private JCheckBox concurrentDwn; private JTextField concurrentPool; private JCheckBox isMon; private JCheckBox useMD5; private JLabeledTextField embeddedRE; // regular expression used to match against embedded resource URLs private JLabeledTextField sourceIpAddr; // does not apply to Java implementation private final boolean isAJP; public HttpTestSampleGui() { isAJP = false; init(); } // For use by AJP protected HttpTestSampleGui(boolean ajp) { isAJP = ajp; init(); } /** * {@inheritDoc} */ @Override public void configure(TestElement element) { super.configure(element); final HTTPSamplerBase samplerBase = (HTTPSamplerBase) element; urlConfigGui.configure(element); getImages.setSelected(samplerBase.isImageParser()); concurrentDwn.setSelected(samplerBase.isConcurrentDwn()); concurrentPool.setText(samplerBase.getConcurrentPool()); isMon.setSelected(samplerBase.isMonitor()); useMD5.setSelected(samplerBase.useMD5()); embeddedRE.setText(samplerBase.getEmbeddedUrlRE()); if (!isAJP) { sourceIpAddr.setText(samplerBase.getIpSource()); } } /** * {@inheritDoc} */ public TestElement createTestElement() { HTTPSamplerBase sampler = new HTTPSamplerProxy(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. *

        * {@inheritDoc} */ public void modifyTestElement(TestElement sampler) { sampler.clear(); urlConfigGui.modifyTestElement(sampler); final HTTPSamplerBase samplerBase = (HTTPSamplerBase) sampler; samplerBase.setImageParser(getImages.isSelected()); enableConcurrentDwn(getImages.isSelected()); samplerBase.setConcurrentDwn(concurrentDwn.isSelected()); samplerBase.setConcurrentPool(concurrentPool.getText()); samplerBase.setMonitor(isMon.isSelected()); samplerBase.setMD5(useMD5.isSelected()); samplerBase.setEmbeddedUrlRE(embeddedRE.getText()); if (!isAJP) { samplerBase.setIpSource(sourceIpAddr.getText()); } this.configureTestElement(sampler); } /** * {@inheritDoc} */ public String getLabelResource() { return "web_testing_title"; // $NON-NLS-1$ } private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); // URL CONFIG urlConfigGui = new MultipartUrlConfigGui(true, !isAJP); add(urlConfigGui, BorderLayout.CENTER); // OPTIONAL TASKS add(createOptionalTasksPanel(), BorderLayout.SOUTH); } protected JPanel createOptionalTasksPanel() { // OPTIONAL TASKS final JPanel optionalTasksPanel = new VerticalPanel(); optionalTasksPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils .getResString("optional_tasks"))); // $NON-NLS-1$ final JPanel checkBoxPanel = new HorizontalPanel(); // RETRIEVE IMAGES getImages = new JCheckBox(JMeterUtils.getResString("web_testing_retrieve_images")); // $NON-NLS-1$ // add a listener to activate or not concurrent dwn. getImages.addItemListener(new ItemListener() { public void itemStateChanged(final ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { enableConcurrentDwn(true); } else { enableConcurrentDwn(false); } } }); // Download concurrent resources concurrentDwn = new JCheckBox(JMeterUtils.getResString("web_testing_concurrent_download")); // $NON-NLS-1$ concurrentDwn.addItemListener(new ItemListener() { public void itemStateChanged(final ItemEvent e) { if (getImages.isSelected() && e.getStateChange() == ItemEvent.SELECTED) { concurrentPool.setEnabled(true); } else { concurrentPool.setEnabled(false); } } }); concurrentPool = new JTextField(2); // 2 column size concurrentPool.setMaximumSize(new Dimension(30,20)); // Is monitor isMon = new JCheckBox(JMeterUtils.getResString("monitor_is_title")); // $NON-NLS-1$ // Use MD5 useMD5 = new JCheckBox(JMeterUtils.getResString("response_save_as_md5")); // $NON-NLS-1$ checkBoxPanel.add(getImages); checkBoxPanel.add(concurrentDwn); checkBoxPanel.add(concurrentPool); checkBoxPanel.add(isMon); checkBoxPanel.add(useMD5); optionalTasksPanel.add(checkBoxPanel); // Embedded URL match regex embeddedRE = new JLabeledTextField(JMeterUtils.getResString("web_testing_embedded_url_pattern"),30); // $NON-NLS-1$ optionalTasksPanel.add(embeddedRE, BorderLayout.CENTER); if (!isAJP) { // Add a new field source ip address (for HC implementations only) sourceIpAddr = new JLabeledTextField(JMeterUtils.getResString("web_testing2_source_ip")); // $NON-NLS-1$ optionalTasksPanel.add(sourceIpAddr, BorderLayout.EAST); } return optionalTasksPanel; } /** * {@inheritDoc} */ @Override public Dimension getPreferredSize() { return getMinimumSize(); } /** * {@inheritDoc} */ @Override public void clearGui() { super.clearGui(); getImages.setSelected(false); concurrentDwn.setSelected(false); concurrentPool.setText(String.valueOf(HTTPSamplerBase.CONCURRENT_POOL_SIZE)); enableConcurrentDwn(false); isMon.setSelected(false); useMD5.setSelected(false); urlConfigGui.clear(); embeddedRE.setText(""); // $NON-NLS-1$ if (!isAJP) { sourceIpAddr.setText(""); // $NON-NLS-1$ } } private void enableConcurrentDwn(boolean enable) { if (enable) { concurrentDwn.setEnabled(true); if (concurrentDwn.isSelected()) { concurrentPool.setEnabled(true); } } else { concurrentDwn.setEnabled(false); concurrentPool.setEnabled(false); } } public void itemStateChanged(ItemEvent event) { if (event.getStateChange() == ItemEvent.SELECTED) { enableConcurrentDwn(true); } else { enableConcurrentDwn(false); } } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/AjpSamplerGui.java0000644000175000017500000000344112032647215032763 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.control.gui; import org.apache.jmeter.protocol.http.control.gui.HttpTestSampleGui; import org.apache.jmeter.protocol.http.sampler.AjpSampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class AjpSamplerGui extends HttpTestSampleGui { private static final long serialVersionUID = 240L; public AjpSamplerGui() { super(true); } @Override public TestElement createTestElement() { AjpSampler sampler = new AjpSampler(); modifyTestElement(sampler); return sampler; } // Use this instead of getLabelResource() otherwise getDocAnchor() below does not work @Override public String getStaticLabel() { return JMeterUtils.getResString("ajp_sampler_title"); // $NON-NLS-1$ } @Override public String getDocAnchor() {// reuse documentation return super.getStaticLabel().replace(' ', '_'); //$NON-NLS-1$ //$NON-NLS-2$ } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpMirrorControlGui.javaapache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/HttpMirrorControlGui0000644000175000017500000001606512032647215033466 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; import java.util.Collection; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.apache.jmeter.control.gui.LogicControllerGui; import org.apache.jmeter.gui.JMeterGUIComponent; import org.apache.jmeter.gui.UnsharedComponent; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.MenuFactory; import org.apache.jmeter.protocol.http.control.HttpMirrorControl; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class HttpMirrorControlGui extends LogicControllerGui implements JMeterGUIComponent, ActionListener, UnsharedComponent { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private JTextField portField; private JTextField maxPoolSizeField; private JTextField maxQueueSizeField; private JButton stop, start; private static final String ACTION_STOP = "stop"; // $NON-NLS-1$ private static final String ACTION_START = "start"; // $NON-NLS-1$ private HttpMirrorControl mirrorController; public HttpMirrorControlGui() { super(); log.debug("Creating HttpMirrorControlGui"); init(); } @Override public TestElement createTestElement() { mirrorController = new HttpMirrorControl(); log.debug("creating/configuring model = " + mirrorController); modifyTestElement(mirrorController); return mirrorController; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ @Override public void modifyTestElement(TestElement el) { configureTestElement(el); if (el instanceof HttpMirrorControl) { mirrorController = (HttpMirrorControl) el; mirrorController.setPort(portField.getText()); mirrorController.setMaxPoolSize(maxPoolSizeField.getText()); mirrorController.setMaxQueueSize(maxQueueSizeField.getText()); } } @Override public String getLabelResource() { return "httpmirror_title"; // $NON-NLS-1$ } @Override public Collection getMenuCategories() { return Arrays.asList(new String[] { MenuFactory.NON_TEST_ELEMENTS }); } @Override public void configure(TestElement element) { log.debug("Configuring gui with " + element); super.configure(element); mirrorController = (HttpMirrorControl) element; portField.setText(mirrorController.getPortString()); maxPoolSizeField.setText(mirrorController.getMaxPoolSizeAsString()); maxQueueSizeField.setText(mirrorController.getMaxQueueSizeAsString()); repaint(); } public void actionPerformed(ActionEvent action) { String command = action.getActionCommand(); if (command.equals(ACTION_STOP)) { mirrorController.stopHttpMirror(); stop.setEnabled(false); start.setEnabled(true); } else if (command.equals(ACTION_START)) { modifyTestElement(mirrorController); mirrorController.startHttpMirror(); start.setEnabled(false); stop.setEnabled(true); } } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new BorderLayout()); Box myBox = Box.createVerticalBox(); myBox.add(createPortPanel()); mainPanel.add(myBox, BorderLayout.NORTH); mainPanel.add(createControls(), BorderLayout.CENTER); add(mainPanel, BorderLayout.CENTER); } private JPanel createControls() { start = new JButton(JMeterUtils.getResString("start")); // $NON-NLS-1$ start.addActionListener(this); start.setActionCommand(ACTION_START); start.setEnabled(true); stop = new JButton(JMeterUtils.getResString("stop")); // $NON-NLS-1$ stop.addActionListener(this); stop.setActionCommand(ACTION_STOP); stop.setEnabled(false); JPanel panel = new JPanel(); panel.add(start); panel.add(stop); return panel; } private JPanel createPortPanel() { portField = new JTextField(HttpMirrorControl.DEFAULT_PORT_S, 8); portField.setName(HttpMirrorControl.PORT); JLabel label = new JLabel(JMeterUtils.getResString("port")); // $NON-NLS-1$ label.setLabelFor(portField); maxPoolSizeField = new JTextField(Integer.toString(HttpMirrorControl.DEFAULT_MAX_POOL_SIZE), 8); maxPoolSizeField.setName(HttpMirrorControl.MAX_POOL_SIZE); JLabel mpsLabel = new JLabel(JMeterUtils.getResString("httpmirror_max_pool_size")); // $NON-NLS-1$ mpsLabel.setLabelFor(maxPoolSizeField); maxQueueSizeField = new JTextField(Integer.toString(HttpMirrorControl.DEFAULT_MAX_QUEUE_SIZE), 8); maxQueueSizeField.setName(HttpMirrorControl.MAX_QUEUE_SIZE); JLabel mqsLabel = new JLabel(JMeterUtils.getResString("httpmirror_max_queue_size")); // $NON-NLS-1$ mqsLabel.setLabelFor(maxQueueSizeField); HorizontalPanel panel = new HorizontalPanel(); panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("httpmirror_settings"))); // $NON-NLS-1$ panel.add(label); panel.add(portField); panel.add(mpsLabel); panel.add(maxPoolSizeField); panel.add(mqsLabel); panel.add(maxQueueSizeField); panel.add(Box.createHorizontalStrut(10)); return panel; } @Override public void clearGui(){ super.clearGui(); portField.setText(HttpMirrorControl.DEFAULT_PORT_S); maxPoolSizeField.setText(Integer.toString(HttpMirrorControl.DEFAULT_MAX_POOL_SIZE)); } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/gui/SoapSamplerGui.java0000644000175000017500000001335612032647215033161 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import javax.swing.JPanel; import org.apache.jmeter.protocol.http.sampler.SoapSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jorphan.gui.JLabeledTextArea; import org.apache.jorphan.gui.JLabeledTextField; public class SoapSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private JLabeledTextField urlField; private JLabeledTextField soapAction; private JCheckBox sendSoapAction; private JCheckBox useKeepAlive; private JLabeledTextArea soapXml; private FilePanel soapXmlFile = new FilePanel(); public SoapSamplerGui() { init(); } public String getLabelResource() { return "soap_sampler_title"; //$NON-NLS-1$ } /** * {@inheritDoc} */ public TestElement createTestElement() { SoapSampler sampler = new SoapSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement s) { this.configureTestElement(s); if (s instanceof SoapSampler) { SoapSampler sampler = (SoapSampler) s; sampler.setURLData(urlField.getText()); sampler.setXmlData(soapXml.getText()); sampler.setXmlFile(soapXmlFile.getFilename()); sampler.setSOAPAction(soapAction.getText()); sampler.setSendSOAPAction(sendSoapAction.isSelected()); sampler.setUseKeepAlive(useKeepAlive.isSelected()); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); urlField.setText(""); //$NON-NLS-1$ soapAction.setText(""); //$NON-NLS-1$ soapXml.setText(""); //$NON-NLS-1$ sendSoapAction.setSelected(true); soapXmlFile.setFilename(""); //$NON-NLS-1$ useKeepAlive.setSelected(false); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); urlField = new JLabeledTextField(JMeterUtils.getResString("url"), 10); //$NON-NLS-1$ soapXml = new JLabeledTextArea(JMeterUtils.getResString("soap_data_title")); //$NON-NLS-1$ soapAction = new JLabeledTextField("", 10); //$NON-NLS-1$ sendSoapAction = new JCheckBox(JMeterUtils.getResString("soap_send_action"), true); //$NON-NLS-1$ useKeepAlive = new JCheckBox(JMeterUtils.getResString("use_keepalive")); // $NON-NLS-1$ JPanel mainPanel = new JPanel(new BorderLayout()); JPanel soapActionPanel = new JPanel(); soapActionPanel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 2; c.gridx = 0; c.gridy = 0; c.weightx = 1; soapActionPanel.add(urlField, c); c.fill = GridBagConstraints.NONE; c.gridwidth = 1; c.gridy = 1; c.weightx = 0; soapActionPanel.add(sendSoapAction, c); c.gridx = 1; c.fill = GridBagConstraints.HORIZONTAL; c.weightx = 1; soapActionPanel.add(soapAction, c); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 2; c.gridy = 2; c.gridx = 0; soapActionPanel.add(useKeepAlive, c); mainPanel.add(soapActionPanel, BorderLayout.NORTH); mainPanel.add(soapXml, BorderLayout.CENTER); mainPanel.add(soapXmlFile, BorderLayout.SOUTH); sendSoapAction.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { soapAction.setEnabled(sendSoapAction.isSelected()); } }); add(mainPanel, BorderLayout.CENTER); } /** * {@inheritDoc} */ @Override public void configure(TestElement el) { super.configure(el); SoapSampler sampler = (SoapSampler) el; urlField.setText(sampler.getURLData()); sendSoapAction.setSelected(sampler.getSendSOAPAction()); soapAction.setText(sampler.getSOAPAction()); soapXml.setText(sampler.getXmlData()); soapXmlFile.setFilename(sampler.getXmlFile()); useKeepAlive.setSelected(sampler.getUseKeepAlive()); } /** * {@inheritDoc} */ @Override public Dimension getPreferredSize() { return getMinimumSize(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java0000644000175000017500000003404212032647215032201 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // For unit tests @see TestCookieManager package org.apache.jmeter.protocol.http.control; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; import java.net.URL; import java.util.ArrayList; import org.apache.http.client.params.CookiePolicy; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.event.LoopIterationEvent; import org.apache.jmeter.testelement.TestIterationListener; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.reflect.ClassTools; import org.apache.jorphan.util.JMeterException; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * This class provides an interface to the netscape cookies file to pass cookies * along with a request. * * Now uses Commons HttpClient parsing and matching code (since 2.1.2) * */ public class CookieManager extends ConfigTestElement implements TestStateListener, TestIterationListener, Serializable { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); //++ JMX tag values private static final String CLEAR = "CookieManager.clearEachIteration";// $NON-NLS-1$ private static final String COOKIES = "CookieManager.cookies";// $NON-NLS-1$ private static final String POLICY = "CookieManager.policy"; //$NON-NLS-1$ private static final String IMPLEMENTATION = "CookieManager.implementation"; //$NON-NLS-1$ //-- JMX tag values private static final String TAB = "\t"; //$NON-NLS-1$ // See bug 33796 private static final boolean DELETE_NULL_COOKIES = JMeterUtils.getPropDefault("CookieManager.delete_null_cookies", true);// $NON-NLS-1$ // See bug 28715 // Package protected for tests static final boolean ALLOW_VARIABLE_COOKIES = JMeterUtils.getPropDefault("CookieManager.allow_variable_cookies", true);// $NON-NLS-1$ private static final String COOKIE_NAME_PREFIX = JMeterUtils.getPropDefault("CookieManager.name.prefix", "COOKIE_").trim();// $NON-NLS-1$ $NON-NLS-2$ private static final boolean SAVE_COOKIES = JMeterUtils.getPropDefault("CookieManager.save.cookies", false);// $NON-NLS-1$ private static final boolean CHECK_COOKIES = JMeterUtils.getPropDefault("CookieManager.check.cookies", true);// $NON-NLS-1$ static { log.info("Settings:" + " Delete null: " + DELETE_NULL_COOKIES + " Check: " + CHECK_COOKIES + " Allow variable: " + ALLOW_VARIABLE_COOKIES + " Save: " + SAVE_COOKIES + " Prefix: " + COOKIE_NAME_PREFIX ); } private transient CookieHandler cookieHandler; private transient CollectionProperty initialCookies; public static final String DEFAULT_POLICY = CookiePolicy.BROWSER_COMPATIBILITY; public static final String DEFAULT_IMPLEMENTATION = HC3CookieHandler.class.getName(); public CookieManager() { clearCookies(); // Ensure that there is always a collection available } // ensure that the initial cookies are copied to the per-thread instances /** {@inheritDoc} */ @Override public Object clone(){ CookieManager clone = (CookieManager) super.clone(); clone.initialCookies = initialCookies; clone.cookieHandler = cookieHandler; return clone; } public String getPolicy() { return getPropertyAsString(POLICY, DEFAULT_POLICY); } public void setCookiePolicy(String policy){ setProperty(POLICY, policy, DEFAULT_POLICY); } public CollectionProperty getCookies() { return (CollectionProperty) getProperty(COOKIES); } public int getCookieCount() {// Used by GUI return getCookies().size(); } public boolean getClearEachIteration() { return getPropertyAsBoolean(CLEAR); } public void setClearEachIteration(boolean clear) { setProperty(new BooleanProperty(CLEAR, clear)); } public String getImplementation() { return getPropertyAsString(IMPLEMENTATION, DEFAULT_IMPLEMENTATION); } public void setImplementation(String implementation){ setProperty(IMPLEMENTATION, implementation, DEFAULT_IMPLEMENTATION); } /** * Save the static cookie data to a file. * Cookies are only taken from the GUI - runtime cookies are not included. */ public void save(String authFile) throws IOException { File file = new File(authFile); if (!file.isAbsolute()) { file = new File(System.getProperty("user.dir") // $NON-NLS-1$ + File.separator + authFile); } PrintWriter writer = new PrintWriter(new FileWriter(file)); // TODO Charset ? writer.println("# JMeter generated Cookie file");// $NON-NLS-1$ PropertyIterator cookies = getCookies().iterator(); long now = System.currentTimeMillis(); while (cookies.hasNext()) { Cookie cook = (Cookie) cookies.next().getObjectValue(); final long expiresMillis = cook.getExpiresMillis(); if (expiresMillis == 0 || expiresMillis > now) { // only save unexpired cookies writer.println(cookieToString(cook)); } } writer.flush(); writer.close(); } /** * Add cookie data from a file. */ public void addFile(String cookieFile) throws IOException { File file = new File(cookieFile); if (!file.isAbsolute()) { file = new File(System.getProperty("user.dir") // $NON-NLS-1$ + File.separator + cookieFile); } BufferedReader reader = null; if (file.canRead()) { reader = new BufferedReader(new FileReader(file)); // TODO Charset ? } else { throw new IOException("The file you specified cannot be read."); } // N.B. this must agree with the save() and cookieToString() methods String line; try { final CollectionProperty cookies = getCookies(); while ((line = reader.readLine()) != null) { try { if (line.startsWith("#") || JOrphanUtils.isBlank(line)) {//$NON-NLS-1$ continue; } String[] st = JOrphanUtils.split(line, TAB, false); final int _domain = 0; //final int _ignored = 1; final int _path = 2; final int _secure = 3; final int _expires = 4; final int _name = 5; final int _value = 6; final int _fields = 7; if (st.length!=_fields) { throw new IOException("Expected "+_fields+" fields, found "+st.length+" in "+line); } if (st[_path].length()==0) { st[_path] = "/"; //$NON-NLS-1$ } boolean secure = Boolean.parseBoolean(st[_secure]); long expires = Long.parseLong(st[_expires]); if (expires==Long.MAX_VALUE) { expires=0; } //long max was used to represent a non-expiring cookie, but that caused problems Cookie cookie = new Cookie(st[_name], st[_value], st[_domain], st[_path], secure, expires); cookies.addItem(cookie); } catch (NumberFormatException e) { throw new IOException("Error parsing cookie line\n\t'" + line + "'\n\t" + e); } } } finally { reader.close(); } } private String cookieToString(Cookie c){ StringBuilder sb=new StringBuilder(80); sb.append(c.getDomain()); //flag - if all machines within a given domain can access the variable. //(from http://www.cookiecentral.com/faq/ 3.5) sb.append(TAB).append("TRUE"); sb.append(TAB).append(c.getPath()); sb.append(TAB).append(JOrphanUtils.booleanToSTRING(c.getSecure())); sb.append(TAB).append(c.getExpires()); sb.append(TAB).append(c.getName()); sb.append(TAB).append(c.getValue()); return sb.toString(); } /** {@inheritDoc} */ @Override public void recoverRunningVersion() { // do nothing, the cookie manager has to accept changes. } /** {@inheritDoc} */ @Override public void setRunningVersion(boolean running) { // do nothing, the cookie manager has to accept changes. } /** * Add a cookie. */ public void add(Cookie c) { String cv = c.getValue(); String cn = c.getName(); removeMatchingCookies(c); // Can't have two matching cookies if (DELETE_NULL_COOKIES && (null == cv || cv.length()==0)) { if (log.isDebugEnabled()) { log.debug("Dropping cookie with null value " + c.toString()); } } else { if (log.isDebugEnabled()) { log.debug("Add cookie to store " + c.toString()); } getCookies().addItem(c); if (SAVE_COOKIES) { JMeterContext context = getThreadContext(); if (context.isSamplingStarted()) { context.getVariables().put(COOKIE_NAME_PREFIX+cn, cv); } } } } /** {@inheritDoc} */ @Override public void clear(){ super.clear(); clearCookies(); // ensure data is set up OK initially } /* * Remove all the cookies. */ private void clearCookies() { log.debug("Clear all cookies from store"); setProperty(new CollectionProperty(COOKIES, new ArrayList())); } /** * Remove a cookie. */ public void remove(int index) {// TODO not used by GUI getCookies().remove(index); } /** * Return the cookie at index i. */ public Cookie get(int i) {// Only used by GUI return (Cookie) getCookies().get(i).getObjectValue(); } /** * Find cookies applicable to the given URL and build the Cookie header from * them. * * @param url * URL of the request to which the returned header will be added. * @return the value string for the cookie header (goes after "Cookie: "). */ public String getCookieHeaderForURL(URL url) { return cookieHandler.getCookieHeaderForURL(getCookies(), url, ALLOW_VARIABLE_COOKIES); } public void addCookieFromHeader(String cookieHeader, URL url){ cookieHandler.addCookieFromHeader(this, CHECK_COOKIES, cookieHeader, url); } /** * Check if cookies match, i.e. name, path and domain are equal. *
        * TODO - should we compare secure too? * @param a * @param b * @return true if cookies match */ private boolean match(Cookie a, Cookie b){ return a.getName().equals(b.getName()) && a.getPath().equals(b.getPath()) && a.getDomain().equals(b.getDomain()); } void removeMatchingCookies(Cookie newCookie){ // Scan for any matching cookies PropertyIterator iter = getCookies().iterator(); while (iter.hasNext()) { Cookie cookie = (Cookie) iter.next().getObjectValue(); if (cookie == null) {// TODO is this possible? continue; } if (match(cookie,newCookie)) { if (log.isDebugEnabled()) { log.debug("New Cookie = " + newCookie.toString() + " removing matching Cookie " + cookie.toString()); } iter.remove(); } } } /** {@inheritDoc} */ public void testStarted() { initialCookies = getCookies(); try { cookieHandler = (CookieHandler) ClassTools.construct(getImplementation(), getPolicy()); } catch (JMeterException e) { log.error("Unable to load or invoke class: " + getImplementation(), e); } if (log.isDebugEnabled()){ log.debug("Policy: "+getPolicy()+" Clear: "+getClearEachIteration()); } } /** {@inheritDoc} */ public void testEnded() { } /** {@inheritDoc} */ public void testStarted(String host) { testStarted(); } /** {@inheritDoc} */ public void testEnded(String host) { } /** {@inheritDoc} */ public void testIterationStart(LoopIterationEvent event) { if (getClearEachIteration()) { log.debug("Initialise cookies from pre-defined list"); // No need to call clear setProperty(initialCookies.clone()); } } /** * Package protected for tests * @return the cookieHandler */ CookieHandler getCookieHandler() { return cookieHandler; } }apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/Authorization.java0000644000175000017500000000635112032647215032337 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.Serializable; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.protocol.http.util.Base64Encoder; import org.apache.jmeter.testelement.AbstractTestElement; /** * This class is an Authorization encapsulator. * */ public class Authorization extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; private static final String URL = "Authorization.url"; // $NON-NLS-1$ private static final String USERNAME = "Authorization.username"; // $NON-NLS-1$ private static final String PASSWORD = "Authorization.password"; // $NON-NLS-1$ private static final String DOMAIN = "Authorization.domain"; // $NON-NLS-1$ private static final String REALM = "Authorization.realm"; // $NON-NLS-1$ private static final String TAB = "\t"; // $NON-NLS-1$ /** * create the authorization */ Authorization(String url, String user, String pass, String domain, String realm) { setURL(url); setUser(user); setPass(pass); setDomain(domain); setRealm(realm); } public boolean expectsModification() { return false; } public Authorization() { this("","","","",""); } public void addConfigElement(ConfigElement config) { } public String getURL() { return getPropertyAsString(URL); } public void setURL(String url) { setProperty(URL, url); } public String getUser() { return getPropertyAsString(USERNAME); } public void setUser(String user) { setProperty(USERNAME, user); } public String getPass() { return getPropertyAsString(PASSWORD); } public void setPass(String pass) { setProperty(PASSWORD, pass); } public String getDomain() { return getPropertyAsString(DOMAIN); } public void setDomain(String domain) { setProperty(DOMAIN, domain); } public String getRealm() { return getPropertyAsString(REALM); } public void setRealm(String realm) { setProperty(REALM, realm); } // Used for saving entries to a file @Override public String toString() { return getURL() + TAB + getUser() + TAB + getPass() + TAB + getDomain() + TAB + getRealm(); } public String toBasicHeader(){ return "Basic " + Base64Encoder.encode(getUser() + ":" + getPass()); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieHandler.java0000644000175000017500000000354412032647215032207 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.net.URL; import org.apache.jmeter.testelement.property.CollectionProperty; /** * Interface to be implemented by CookieHandler */ public interface CookieHandler { /** * Add cookie to CookieManager from cookieHeader and URL * @param cookieManager CookieManager on which cookies are added * @param checkCookies boolean to indicate if cookies must be validated against spec * @param cookieHeader String cookie Header * @param url URL */ void addCookieFromHeader(CookieManager cookieManager, boolean checkCookies, String cookieHeader, URL url); /** * Find cookies applicable to the given URL and build the Cookie header from * them. * @param cookiesCP {@link CollectionProperty} of {@link Cookie} * @param url * URL of the request to which the returned header will be added. * @return the value string for the cookie header (goes after "Cookie: "). */ String getCookieHeaderForURL(CollectionProperty cookiesCP, URL url, boolean allowVariableCookie); } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/HttpMirrorServer.java0000644000175000017500000001372112032647215032777 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.InterruptedIOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.apache.jmeter.gui.Stoppable; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * Server daemon thread. * Creates main socket and listens on it. * For each client request, creates a thread to handle the request. * */ public class HttpMirrorServer extends Thread implements Stoppable { private static final Logger log = LoggingManager.getLoggerForClass(); /** * The time (in milliseconds) to wait when accepting a client connection. * The accept will be retried until the Daemon is told to stop. So this * interval is the longest time that the Daemon will have to wait after * being told to stop. */ private static final int ACCEPT_TIMEOUT = 1000; private static final long KEEP_ALIVE_TIME = 10; /** The port to listen on. */ private final int daemonPort; /** True if the Daemon is currently running. */ private volatile boolean running; // Saves the error if one occurs private volatile Exception except; /** * Max Executor Pool size */ private int maxThreadPoolSize; /** * Max Queue size */ private int maxQueueSize; /** * Create a new Daemon with the specified port and target. * * @param port * the port to listen on. */ public HttpMirrorServer(int port) { this(port, HttpMirrorControl.DEFAULT_MAX_POOL_SIZE, HttpMirrorControl.DEFAULT_MAX_QUEUE_SIZE); } /** * Create a new Daemon with the specified port and target. * * @param port * the port to listen on. * @param maxThreadPoolSize Max Thread pool size * @param maxQueueSize Max Queue size */ public HttpMirrorServer(int port, int maxThreadPoolSize, int maxQueueSize) { super("HttpMirrorServer"); this.daemonPort = port; this.maxThreadPoolSize = maxThreadPoolSize; this.maxQueueSize = maxQueueSize; } /** * Listen on the daemon port and handle incoming requests. This method will * not exit until {@link #stopServer()} is called or an error occurs. */ @Override public void run() { except = null; running = true; ServerSocket mainSocket = null; ThreadPoolExecutor threadPoolExecutor = null; if(maxThreadPoolSize>0) { final ArrayBlockingQueue queue = new ArrayBlockingQueue( maxQueueSize); threadPoolExecutor = new ThreadPoolExecutor( maxThreadPoolSize/2, maxThreadPoolSize, KEEP_ALIVE_TIME, TimeUnit.SECONDS, queue); threadPoolExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy()); } try { log.info("Creating HttpMirror ... on port " + daemonPort); mainSocket = new ServerSocket(daemonPort); mainSocket.setSoTimeout(ACCEPT_TIMEOUT); log.info("HttpMirror up and running!"); while (running) { try { // Listen on main socket Socket clientSocket = mainSocket.accept(); if (running) { // Pass request to new thread if(threadPoolExecutor != null) { threadPoolExecutor.execute(new HttpMirrorThread(clientSocket)); } else { Thread thd = new Thread(new HttpMirrorThread(clientSocket)); log.debug("Starting new Mirror thread"); thd.start(); } } else { log.warn("Server not running"); JOrphanUtils.closeQuietly(clientSocket); } } catch (InterruptedIOException e) { // Timeout occurred. Ignore, and keep looping until we're // told to stop running. } } log.info("HttpMirror Server stopped"); } catch (Exception e) { except = e; log.warn("HttpMirror Server stopped", e); } finally { if(threadPoolExecutor != null) { threadPoolExecutor.shutdownNow(); } JOrphanUtils.closeQuietly(mainSocket); } } public void stopServer() { running = false; } public Exception getException(){ return except; } public static void main(String args[]){ int port = HttpMirrorControl.DEFAULT_PORT; if (args.length > 0){ port = Integer.parseInt(args[0]); } LoggingManager.setPriority("INFO"); // default level LoggingManager.setLoggingLevels(System.getProperties() ); // allow override by system properties HttpMirrorServer serv = new HttpMirrorServer(port); serv.start(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/RecordingController.java0000644000175000017500000000200312032647215033445 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import org.apache.jmeter.control.GenericController; public class RecordingController extends GenericController { private static final long serialVersionUID = 240L; } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java0000644000175000017500000002131012032647215032475 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. * * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.http.control; import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.Header; import org.apache.http.client.params.CookiePolicy; import org.apache.http.cookie.CookieOrigin; import org.apache.http.cookie.CookieSpec; import org.apache.http.cookie.CookieSpecRegistry; import org.apache.http.cookie.MalformedCookieException; import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.impl.cookie.BestMatchSpecFactory; import org.apache.http.impl.cookie.BrowserCompatSpecFactory; import org.apache.http.impl.cookie.IgnoreSpecFactory; import org.apache.http.impl.cookie.NetscapeDraftSpecFactory; import org.apache.http.impl.cookie.RFC2109SpecFactory; import org.apache.http.impl.cookie.RFC2965SpecFactory; import org.apache.http.message.BasicHeader; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class HC4CookieHandler implements CookieHandler { private static final Logger log = LoggingManager.getLoggerForClass(); private final transient CookieSpec cookieSpec; private static CookieSpecRegistry registry = new CookieSpecRegistry(); static { registry.register(CookiePolicy.BEST_MATCH, new BestMatchSpecFactory()); registry.register(CookiePolicy.BROWSER_COMPATIBILITY, new BrowserCompatSpecFactory()); registry.register(CookiePolicy.RFC_2109, new RFC2109SpecFactory()); registry.register(CookiePolicy.RFC_2965, new RFC2965SpecFactory()); registry.register(CookiePolicy.IGNORE_COOKIES, new IgnoreSpecFactory()); registry.register(CookiePolicy.NETSCAPE, new NetscapeDraftSpecFactory()); } public HC4CookieHandler(String policy) { super(); if (policy.equals(org.apache.commons.httpclient.cookie.CookiePolicy.DEFAULT)) { // tweak diff HC3 vs HC4 policy = CookiePolicy.BEST_MATCH; } this.cookieSpec = registry.getCookieSpec(policy); } public void addCookieFromHeader(CookieManager cookieManager, boolean checkCookies, String cookieHeader, URL url) { boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled) { log.debug("Received Cookie: " + cookieHeader + " From: " + url.toExternalForm()); } String protocol = url.getProtocol(); String host = url.getHost(); int port= HTTPSamplerBase.getDefaultPort(protocol,url.getPort()); String path = url.getPath(); boolean isSecure=HTTPSamplerBase.isSecure(protocol); List cookies = null; CookieOrigin cookieOrigin = new CookieOrigin(host, port, path, isSecure); BasicHeader basicHeader = new BasicHeader(HTTPConstants.HEADER_SET_COOKIE, cookieHeader); try { cookies = cookieSpec.parse(basicHeader, cookieOrigin); } catch (MalformedCookieException e) { log.error("Unable to add the cookie", e); } if (cookies == null) { return; } for (org.apache.http.cookie.Cookie cookie : cookies) { try { if (checkCookies) { cookieSpec.validate(cookie, cookieOrigin); } Date expiryDate = cookie.getExpiryDate(); long exp = 0; if (expiryDate!= null) { exp=expiryDate.getTime(); } Cookie newCookie = new Cookie( cookie.getName(), cookie.getValue(), cookie.getDomain(), cookie.getPath(), cookie.isSecure(), exp / 1000 ); // Store session cookies as well as unexpired ones if (exp == 0 || exp >= System.currentTimeMillis()) { newCookie.setVersion(cookie.getVersion()); cookieManager.add(newCookie); // Has its own debug log; removes matching cookies } else { cookieManager.removeMatchingCookies(newCookie); if (debugEnabled){ log.info("Dropping expired Cookie: "+newCookie.toString()); } } } catch (MalformedCookieException e) { // This means the cookie was wrong for the URL log.warn("Not storing invalid cookie: <"+cookieHeader+"> for URL "+url+" ("+e.getLocalizedMessage()+")"); } catch (IllegalArgumentException e) { log.warn(cookieHeader+e.getLocalizedMessage()); } } } public String getCookieHeaderForURL(CollectionProperty cookiesCP, URL url, boolean allowVariableCookie) { List c = getCookiesForUrl(cookiesCP, url, allowVariableCookie); boolean debugEnabled = log.isDebugEnabled(); if (debugEnabled){ log.debug("Found "+c.size()+" cookies for "+url.toExternalForm()); } if (c.size() <= 0) { return null; } List
        lstHdr = cookieSpec.formatCookies(c); StringBuilder sbHdr = new StringBuilder(); for (Header header : lstHdr) { sbHdr.append(header.getValue()); } return sbHdr.toString(); } /** * Get array of valid HttpClient cookies for the URL * * @param url the target URL * @return array of HttpClient cookies * */ List getCookiesForUrl( CollectionProperty cookiesCP, URL url, boolean allowVariableCookie) { List cookies = new ArrayList(); for (PropertyIterator iter = cookiesCP.iterator(); iter.hasNext();) { Cookie jmcookie = (Cookie) iter.next().getObjectValue(); // Set to running version, to allow function evaluation for the cookie values (bug 28715) if (allowVariableCookie) { jmcookie.setRunningVersion(true); } cookies.add(makeCookie(jmcookie)); if (allowVariableCookie) { jmcookie.setRunningVersion(false); } } String host = url.getHost(); String protocol = url.getProtocol(); int port = HTTPSamplerBase.getDefaultPort(protocol, url.getPort()); String path = url.getPath(); boolean secure = HTTPSamplerBase.isSecure(protocol); CookieOrigin cookieOrigin = new CookieOrigin(host, port, path, secure); List cookiesValid = new ArrayList(); for (org.apache.http.cookie.Cookie cookie : cookies) { if (cookieSpec.match(cookie, cookieOrigin)) { cookiesValid.add(cookie); } } return cookiesValid; } /** * Create an HttpClient cookie from a JMeter cookie */ private org.apache.http.cookie.Cookie makeCookie(Cookie jmc) { long exp = jmc.getExpiresMillis(); BasicClientCookie ret = new BasicClientCookie(jmc.getName(), jmc.getValue()); ret.setDomain(jmc.getDomain()); ret.setPath(jmc.getPath()); ret.setExpiryDate(exp > 0 ? new Date(exp) : null); // use null for no expiry ret.setSecure(jmc.getSecure()); ret.setVersion(jmc.getVersion()); return ret; } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/HttpMirrorControl.java0000644000175000017500000001051412032647215033146 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import org.apache.jmeter.gui.GuiPackage; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.IntegerProperty; //For unit tests, @see TestHttpMirrorControl /** * Test element that implements the Workbench HTTP Mirror function */ public class HttpMirrorControl extends AbstractTestElement { private static final long serialVersionUID = 233L; private transient HttpMirrorServer server; // Used by HttpMirrorServer static final int DEFAULT_PORT = 8081; // and as a string public static final String DEFAULT_PORT_S = Integer.toString(DEFAULT_PORT);// Used by GUI public static final String PORT = "HttpMirrorControlGui.port"; // $NON-NLS-1$ public static final String MAX_POOL_SIZE = "HttpMirrorControlGui.maxPoolSize"; // $NON-NLS-1$ public static final String MAX_QUEUE_SIZE = "HttpMirrorControlGui.maxQueueSize"; // $NON-NLS-1$ public static final int DEFAULT_MAX_POOL_SIZE = 0; public static final int DEFAULT_MAX_QUEUE_SIZE = 25; public HttpMirrorControl() { initPort(DEFAULT_PORT); } public HttpMirrorControl(int port) { initPort(port); } private void initPort(int port){ setProperty(new IntegerProperty(PORT, port)); } public void setPort(int port) { initPort(port); } public void setPort(String port) { setProperty(PORT, port); } public int getPort() { return getPropertyAsInt(PORT); } public String getPortString() { return getPropertyAsString(PORT); } /** * @return Max Thread Pool size */ public String getMaxPoolSizeAsString() { return getPropertyAsString(MAX_POOL_SIZE); } /** * @return Max Thread Pool size */ private int getMaxPoolSize() { return getPropertyAsInt(MAX_POOL_SIZE, DEFAULT_MAX_POOL_SIZE); } /** * @param maxPoolSize Max Thread Pool size */ public void setMaxPoolSize(String maxPoolSize) { setProperty(MAX_POOL_SIZE, maxPoolSize); } /** * @return Max Queue size */ public String getMaxQueueSizeAsString() { return getPropertyAsString(MAX_QUEUE_SIZE); } /** * @return Max Queue size */ private int getMaxQueueSize() { return getPropertyAsInt(MAX_QUEUE_SIZE, DEFAULT_MAX_QUEUE_SIZE); } /** * @param maxQueueSize Max Queue size */ public void setMaxQueueSize(String maxQueueSize) { setProperty(MAX_QUEUE_SIZE, maxQueueSize); } public int getDefaultPort() { return DEFAULT_PORT; } public void startHttpMirror() { server = new HttpMirrorServer(getPort(), getMaxPoolSize(), getMaxQueueSize()); server.start(); GuiPackage instance = GuiPackage.getInstance(); if (instance != null) { instance.register(server); } } public void stopHttpMirror() { if (server != null) { server.stopServer(); GuiPackage instance = GuiPackage.getInstance(); if (instance != null) { instance.unregister(server); } try { server.join(1000); // wait for server to stop } catch (InterruptedException e) { } server = null; } } @Override public boolean canRemove() { return null == server; } public boolean isServerAlive(){ return server != null && server.isAlive(); } } apache-jmeter-2.8/src/protocol/http/org/apache/jmeter/protocol/http/control/AuthManager.java0000644000175000017500000002373512032647215031700 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.http.control; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.NoSuchElementException; import java.util.StringTokenizer; import org.apache.commons.io.IOUtils; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.protocol.http.util.HTTPConstants; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; // For Unit tests, @see TestAuthManager /** * This class provides a way to provide Authorization in jmeter requests. The * format of the authorization file is: URL user pass where URL is an HTTP URL, * user a username to use and pass the appropriate password. * */ public class AuthManager extends ConfigTestElement implements Serializable { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String AUTH_LIST = "AuthManager.auth_list"; //$NON-NLS-1$ private static final String[] COLUMN_RESOURCE_NAMES = { "auth_base_url", //$NON-NLS-1$ "username", //$NON-NLS-1$ "password", //$NON-NLS-1$ "domain", //$NON-NLS-1$ "realm", //$NON-NLS-1$ }; // Column numbers - must agree with order above public static final int COL_URL = 0; public static final int COL_USERNAME = 1; public static final int COL_PASSWORD = 2; public static final int COL_DOMAIN = 3; public static final int COL_REALM = 4; private static final int COLUMN_COUNT = COLUMN_RESOURCE_NAMES.length; /** * Default Constructor. */ public AuthManager() { setProperty(new CollectionProperty(AUTH_LIST, new ArrayList())); } /** {@inheritDoc} */ @Override public void clear() { super.clear(); setProperty(new CollectionProperty(AUTH_LIST, new ArrayList())); } /** * Update an authentication record. */ public void set(int index, String url, String user, String pass, String domain, String realm) { Authorization auth = new Authorization(url, user, pass, domain, realm); if (index >= 0) { getAuthObjects().set(index, new TestElementProperty(auth.getName(), auth)); } else { getAuthObjects().addItem(auth); } } public CollectionProperty getAuthObjects() { return (CollectionProperty) getProperty(AUTH_LIST); } public int getColumnCount() { return COLUMN_COUNT; } public String getColumnName(int column) { return COLUMN_RESOURCE_NAMES[column]; } public Class getColumnClass(int column) { return COLUMN_RESOURCE_NAMES[column].getClass(); } public Authorization getAuthObjectAt(int row) { return (Authorization) getAuthObjects().get(row).getObjectValue(); } public boolean isEditable() { return true; } /** * Return the record at index i */ public Authorization get(int i) { return (Authorization) getAuthObjects().get(i).getObjectValue(); } public String getAuthHeaderForURL(URL url) { Authorization auth = getAuthForURL(url); if (auth == null) { return null; } return auth.toBasicHeader(); } public Authorization getAuthForURL(URL url) { if (!isSupportedProtocol(url)) { return null; } // TODO: replace all this url2 mess with a proper method // "areEquivalent(url1, url2)" that // would also ignore case in protocol and host names, etc. -- use that // method in the CookieManager too. URL url2 = null; try { if (url.getPort() == -1) { // Obtain another URL with an explicit port: int port = url.getProtocol().equalsIgnoreCase("http") ? 80 : 443; // only http and https are supported url2 = new URL(url.getProtocol(), url.getHost(), port, url.getPath()); } else if ((url.getPort() == 80 && url.getProtocol().equalsIgnoreCase("http")) || (url.getPort() == 443 && url.getProtocol().equalsIgnoreCase("https"))) { url2 = new URL(url.getProtocol(), url.getHost(), url.getPath()); } } catch (MalformedURLException e) { log.error("Internal error!", e); // this should never happen // anyway, we'll continue with url2 set to null. } String s1 = url.toString(); String s2 = null; if (url2 != null) { s2 = url2.toString(); } log.debug("Target URL strings to match against: "+s1+" and "+s2); // TODO should really return most specific (i.e. longest) match. for (PropertyIterator iter = getAuthObjects().iterator(); iter.hasNext();) { Authorization auth = (Authorization) iter.next().getObjectValue(); String uRL = auth.getURL(); log.debug("Checking match against auth'n entry: "+uRL); if (s1.startsWith(uRL) || s2 != null && s2.startsWith(uRL)) { log.debug("Matched"); return auth; } log.debug("Did not match"); } return null; } /** {@inheritDoc} */ @Override public void addConfigElement(ConfigElement config) { } public void addAuth(Authorization auth) { getAuthObjects().addItem(auth); } public void addAuth() { getAuthObjects().addItem(new Authorization()); } /** {@inheritDoc} */ @Override public boolean expectsModification() { return false; } /** * Save the authentication data to a file. */ public void save(String authFile) throws IOException { File file = new File(authFile); if (!file.isAbsolute()) { file = new File(System.getProperty("user.dir"),authFile); } PrintWriter writer = new PrintWriter(new FileWriter(file)); writer.println("# JMeter generated Authorization file"); for (int i = 0; i < getAuthObjects().size(); i++) { Authorization auth = (Authorization) getAuthObjects().get(i).getObjectValue(); writer.println(auth.toString()); } writer.flush(); writer.close(); } /** * Add authentication data from a file. */ public void addFile(String authFile) throws IOException { File file = new File(authFile); if (!file.isAbsolute()) { file = new File(System.getProperty("user.dir") + File.separator + authFile); } if (!file.canRead()) { throw new IOException("The file you specified cannot be read."); } BufferedReader reader = null; boolean ok = true; try { reader = new BufferedReader(new FileReader(file)); String line; while ((line = reader.readLine()) != null) { try { if (line.startsWith("#") || JOrphanUtils.isBlank(line)) { //$NON-NLS-1$ continue; } StringTokenizer st = new StringTokenizer(line, "\t"); //$NON-NLS-1$ String url = st.nextToken(); String user = st.nextToken(); String pass = st.nextToken(); String domain = ""; String realm = ""; if (st.hasMoreTokens()){// Allow for old format file without the extra columnns domain = st.nextToken(); realm = st.nextToken(); } Authorization auth = new Authorization(url, user, pass,domain,realm); getAuthObjects().addItem(auth); } catch (NoSuchElementException e) { log.error("Error parsing auth line: '" + line + "'"); ok = false; } } } finally { IOUtils.closeQuietly(reader); } if (!ok){ JMeterUtils.reportErrorToUser("One or more errors found when reading the Auth file - see the log file"); } } /** * Remove an authentication record. */ public void remove(int index) { getAuthObjects().remove(index); } /** * Return the number of records. */ public int getAuthCount() { return getAuthObjects().size(); } // Needs to be package protected for Unit test static boolean isSupportedProtocol(URL url) { String protocol = url.getProtocol().toLowerCase(java.util.Locale.ENGLISH); return protocol.equals(HTTPConstants.PROTOCOL_HTTP) || protocol.equals(HTTPConstants.PROTOCOL_HTTPS); } } apache-jmeter-2.8/src/protocol/jdbc/0000755000175000017500000000000012032647216016755 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jdbc/org/0000755000175000017500000000000012032647216017544 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jdbc/org/apache/0000755000175000017500000000000012032647216020765 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/0000755000175000017500000000000012032647216022253 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024114 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/0000755000175000017500000000000012165514773025026 5ustar ebourgebourg././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/JDBCTestElementBeanInfoSupport.javaapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/JDBCTestElementBeanInfoSupport.j0000644000175000017500000000637712032647216033061 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jdbc; import java.beans.PropertyDescriptor; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.TextAreaEditor; public abstract class JDBCTestElementBeanInfoSupport extends BeanInfoSupport { /** * */ public JDBCTestElementBeanInfoSupport(Class beanClass) { super(beanClass); createPropertyGroup("varName", // $NON-NLS-1$ new String[]{"dataSource" }); // $NON-NLS-1$ createPropertyGroup("sql", // $NON-NLS-1$ new String[] { "queryType", // $NON-NLS-1$ "query", // $NON-NLS-1$ "queryArguments", // $NON-NLS-1$ "queryArgumentsTypes", // $NON-NLS-1$ "variableNames", // $NON-NLS-1$ "resultVariable", // $NON-NLS-1$ }); PropertyDescriptor p = property("dataSource"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("queryArguments"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("queryArgumentsTypes"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("variableNames"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("resultVariable"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("queryType"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, AbstractJDBCTestElement.SELECT); p.setValue(NOT_OTHER,Boolean.TRUE); p.setValue(TAGS,new String[]{ AbstractJDBCTestElement.SELECT, AbstractJDBCTestElement.UPDATE, AbstractJDBCTestElement.CALLABLE, AbstractJDBCTestElement.PREPARED_SELECT, AbstractJDBCTestElement.PREPARED_UPDATE, AbstractJDBCTestElement.COMMIT, AbstractJDBCTestElement.ROLLBACK, AbstractJDBCTestElement.AUTOCOMMIT_FALSE, AbstractJDBCTestElement.AUTOCOMMIT_TRUE, }); p = property("query"); // $NON-NLS-1$ p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p.setPropertyEditorClass(TextAreaEditor.class); } } apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/0000755000175000017500000000000012165514773026273 5ustar ebourgebourg././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_zh_TW.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResource0000644000175000017500000000610712032647216033266 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! autocommit.displayName=\u81EA\u52D5 Commit autocommit.shortDescription=\u662F\u5426\u8981\u81EA\u52D5Commit SQL checkQuery.displayName=\u9A57\u8B49\u67E5\u8A62 checkQuery.shortDescription=\u7576KeepAlive\u70BA\u771F\u6642,\u7528\u4F86\u6AA2\u67E5\u9023\u7DDA\u662F\u5426\u4ECD\u6B63\u5E38 connectionAge.displayName=\u6700\u9577\u9023\u7DDA\u6642\u9593(\u5FAE\u79D2) connectionAge.shortDescription=\u8A2D\u5B9A\u9023\u7DDA\u6700\u9577\u53EF\u9592\u7F6E\u591A\u5C11\u5FAE\u79D2 dataSource.displayName=\u8B8A\u6578\u540D\u7A31 dataSource.shortDescription=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u8B8A\u6578\u540D\u7A31 database.displayName=\u8CC7\u6599\u5EAB\u9023\u7DDA\u8A2D\u5B9A dbUrl.displayName=\u8CC7\u6599\u5EAB URL dbUrl.shortDescription=\u8CC7\u6599\u5EAB\u5B8C\u6574 URL, \u542B JDBC \u654D\u8FF0\u90E8\u4EFD displayName=JDBC \u9023\u7DDA\u8A2D\u5B9A driver.displayName=JDBC \u9A45\u52D5\u7A0B\u5F0F driver.shortDescription=JDBC \u5B8C\u6574 class \u540D\u7A31(\u9808\u5728 JMeter \u7684 CLASSPATH \u4E2D) keep-alive.displayName=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u9032\u884C\u9023\u7DDA\u9A57\u8B49 keepAlive.displayName=\u4FDD\u6301\u9023\u7DDA keepAlive.shortDescription=\u9023\u7DDA\u6C60\u662F\u5426\u8981\u9A57\u8B49\u9023\u7DDA, \u5982\u679C\u4E0D\u8981, \u6700\u9577\u9023\u7DDA\u6642\u9593(\u5FAE\u79D2)\u548C\u9023\u7DDA\u9A57\u8B49\u5169\u500B\u8A2D\u5B9A\u90FD\u6703\u88AB\u5FFD\u7565 password.displayName=\u5BC6\u78BC password.shortDescription=\u8CC7\u6599\u5EAB\u9023\u7DDA\u5BC6\u78BC pool.displayName=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u8A2D\u5B9A poolMax.displayName=\u6700\u5927\u9023\u7DDA\u6578 poolMax.shortDescription=\u9023\u7DDA\u6C60\u4E00\u6B21\u6700\u591A\u958B\u5E7E\u500B\u9023\u7DDA timeout.displayName=\u9023\u7DDA\u6C60 TimeOut timeout.shortDescription=\u7B49\u5F85\u53D6\u5F97\u9023\u7DDA\u7684\u6700\u9577\u6642\u9593, \u8D85\u904E\u5C31 exception trimInterval.displayName=\u9592\u7F6E\u6E05\u9664\u6642\u9694(\u5FAE\u79D2) trimInterval.shortDescription=\u8D85\u904E\u9592\u7F6E\u6E05\u9664\u6642\u9694(\u5FAE\u79D2),\u9023\u7DDA\u6C60\u81EA\u52D5\u79FB\u9664\u8A72\u9023\u7DDA username.displayName=\u4F7F\u7528\u8005 username.shortDescription=\u9023\u7DDA\u4F7F\u7528\u8005 varName.displayName=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u8B8A\u6578\u540D\u7A31 ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_tr.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResource0000644000175000017500000000674712032647216033300 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! autocommit.displayName=An\u0131nda \u0130\u015Flem autocommit.shortDescription=Sorgular\u0131n an\u0131nda olarak i\u015Flenip i\u015Flenmeyece\u011Fi. checkQuery.displayName=Do\u011Frulama Sorgusu checkQuery.shortDescription=Ba\u011Flant\u0131n\u0131n hala \u00E7al\u0131\u015F\u0131p \u00E7al\u0131\u015Fmad\u0131\u011F\u0131n\u0131 kontrol eden sorgu. Sadece "Canl\u0131Tut" se\u00E7ili ise ge\u00E7erlidir. connectionAge.displayName=Maksimum Ba\u011Flant\u0131 Ya\u015F\u0131 (ms) connectionAge.shortDescription=Bo\u015Ftaki ba\u011Flant\u0131n\u0131n kopar\u0131lmadan korunaca\u011F\u0131 maksimum milisaniye say\u0131s\u0131 dataSource.displayName=De\u011Fi\u015Fken \u0130smi dataSource.shortDescription=Havuzun ba\u011Flanaca\u011F\u0131 JMeter de\u011Fi\u015Fkeninin ismi. database.displayName=Veritaban\u0131 Ba\u011Flant\u0131s\u0131 Ayar\u0131 dbUrl.displayName=Veritaban\u0131 Adresi (URL) dbUrl.shortDescription=Veritaban\u0131 i\u00E7in tam adres (URL), jdbc protokolu k\u0131s\u0131mlar\u0131 dahil displayName=JDBC Ba\u011Flant\u0131 Ayarlar\u0131 driver.displayName=JDBC S\u00FCr\u00FCc\u00FC s\u0131n\u0131f\u0131 driver.shortDescription=Kullan\u0131lacak JDBC s\u00FCr\u00FCc\u00FCs\u00FCn\u00FCn tam paket ve s\u0131n\u0131f ismi\n(JMeter s\u0131n\u0131f yolunda(classpath) yer almal\u0131) keep-alive.displayName=Havuzla ba\u011Flant\u0131 Do\u011Frulamas\u0131 keepAlive.displayName=Canl\u0131-Tut keepAlive.shortDescription=Havuzun ba\u011Flant\u0131 do\u011Frulamas\u0131 yap\u0131p yapmayaca\u011F\u0131. "no" ise, Ba\u011Flant\u0131 Ya\u015F\u0131 ve Ba\u011Flant\u0131 Do\u011Frulamas\u0131 yoksay\u0131lacak. password.displayName=\u015Eifre password.shortDescription=Veritaban\u0131na ba\u011Flan\u0131l\u0131rken kullan\u0131lacak \u015Fifre pool.displayName=Ba\u011Flant\u0131 Havuzu Ayar\u0131 poolMax.displayName=Maksimum Ba\u011Flant\u0131 Say\u0131s\u0131 poolMax.shortDescription=Havuzun ayn\u0131 zamanda a\u00E7aca\u011F\u0131 maksimum ba\u011Flant\u0131 say\u0131s\u0131 timeout.displayName=Havuz Zaman A\u015F\u0131m\u0131 timeout.shortDescription=Havuz bir ba\u011Flant\u0131 uygun hale gelinceye kadar t\u00FCm istekleri engeller. Bu hata d\u00F6nmeden \u00F6nceki maksimum engelleme zaman\u0131d\u0131r. trimInterval.displayName=Bo\u015Ftaki Toparlama Ara\u015F\u0131\u011F\u0131 (ms) trimInterval.shortDescription=Havuz d\u00FCzenli aral\u0131klarla bo\u015Ftaki fazladan ba\u011Flant\u0131lar\u0131 kald\u0131r\u0131r. username.displayName=Kullan\u0131c\u0131 ismi username.shortDescription=Veritaban\u0131na ba\u011Flan\u0131l\u0131rken kullan\u0131lacak kullan\u0131c\u0131 ismi varName.displayName=Havuzla \u0130li\u015Fkilendirilecek De\u011Fi\u015Fkenin \u0130smi ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_pt_BR.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResource0000644000175000017500000000634512032647216033272 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! autocommit.displayName=Commit autom\u00E1tico autocommit.shortDescription=Se a consulta deve realizar commit autom\u00E1tico checkQuery.displayName=Consulta de Valida\u00E7\u00E3o checkQuery.shortDescription=Consulta utilizada para verificar se a conex\u00E3o ainda est\u00E1 ativa. Relevante apenas se Manter Ativa est\u00E1 configurado. connectionAge.displayName=Tempo m\u00E1ximo de conex\u00E3o (ms) connectionAge.shortDescription=Tempo m\u00E1ximo (em milissegundos) que uma conex\u00E3o n\u00E3o utilizada \u00E9 mantida antes de ser descartada. dataSource.displayName=Nome da Vari\u00E1vel dataSource.shortDescription=Nome da vari\u00E1vel do JMeter que referencia o grupo de conex\u00F5es. database.displayName=Configura\u00E7\u00E3o da Conex\u00E3o com o Banco de Dados dbUrl.displayName=URL do banco de dados dbUrl.shortDescription=URL completa do banco de dados, incluindo partes do protocolo jdbc. displayName=Configura\u00E7\u00E3o da Conex\u00E3o JDBC driver.displayName=Classe do Driver JDBC driver.shortDescription=Pacote completo e nome da classe do driver JDBC a ser utilizado (Necessita estar no classpath) keep-alive.displayName=Valida\u00E7\u00E3o da Conex\u00E3o pelo Grupo de Conex\u00F5es keepAlive.displayName=Manter Ativa keepAlive.shortDescription=Se o grupo de conex\u00E3o deve validar conex\u00F5es. Se n\u00E3o, Tempo da Conex\u00E3o e Consulta de Valida\u00E7\u00E3o s\u00E3o ignorados. password.displayName=Senha password.shortDescription=Senha usada para conex\u00E3o com o banco de dados pool.displayName=Configura\u00E7\u00E3o do Grupo de Conex\u00F5es poolMax.displayName=Limite de Conex\u00F5es poolMax.shortDescription=N\u00FAmero m\u00E1ximo de conex\u00F5es que o grupo de conex\u00F5es ir\u00E1 criar ao mesmo tempo. timeout.displayName=Timeout do grupo de conex\u00F5es timeout.shortDescription=O grupo de conex\u00F5es bloqueia requisi\u00E7\u00F5es de conex\u00F5es at\u00E9 que uma conex\u00E3o esteja dispon\u00EDvel. Este \u00E9 o tempo de bloqueio m\u00E1ximo antes que uma exce\u00E7\u00E3o seja retornada. trimInterval.displayName=Intervalo de limpeza de conex\u00F5es ociosas (ms) trimInterval.shortDescription=O grupo de conex\u00F5es remove conex\u00F5es ociosas em intervalos regulares. username.displayName=Nome do usu\u00E1rio username.shortDescription=Nome do usu\u00E1rio usado na conex\u00E3o com o banco de dados. varName.displayName=Nome da Vari\u00E1vel que Referencia o Grupo de Conex\u00F5es apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java0000644000175000017500000004121512032647216032475 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.jdbc.config; import java.sql.Connection; import java.sql.SQLException; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.apache.avalon.excalibur.datasource.DataSourceComponent; import org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataSource; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; import org.apache.avalon.framework.configuration.DefaultConfiguration; import org.apache.avalon.framework.logger.LogKitLogger; import org.apache.jmeter.config.ConfigElement; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testbeans.TestBeanHelper; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; public class DataSourceElement extends AbstractTestElement implements ConfigElement, TestStateListener, TestBean { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 233L; private transient String dataSource, driver, dbUrl, username, password, checkQuery, poolMax, connectionAge, timeout, trimInterval,transactionIsolation; private transient boolean keepAlive, autocommit; /* * The datasource is set up by testStarted and cleared by testEnded. * These are called from different threads, so access must be synchronized. * The same instance is called in each case. */ private transient ResourceLimitingJdbcDataSource excaliburSource; // Keep a record of the pre-thread pools so that they can be disposed of at the end of a test private transient Set perThreadPoolSet; public DataSourceElement() { } public void testEnded() { synchronized (this) { if (excaliburSource != null) { excaliburSource.dispose(); } excaliburSource = null; } if (perThreadPoolSet != null) {// in case for(ResourceLimitingJdbcDataSource dsc : perThreadPoolSet){ log.debug("Disposing pool: "+dsc.getInstrumentableName()+" @"+System.identityHashCode(dsc)); dsc.dispose(); } perThreadPoolSet=null; } } public void testEnded(String host) { testEnded(); } @SuppressWarnings("deprecation") // call to TestBeanHelper.prepare() is intentional public void testStarted() { this.setRunningVersion(true); TestBeanHelper.prepare(this); JMeterVariables variables = getThreadContext().getVariables(); String poolName = getDataSource(); if(JOrphanUtils.isBlank(poolName)) { throw new IllegalArgumentException("Variable Name must not be empty for element:"+getName()); } else if (variables.getObject(poolName) != null) { log.error("JDBC data source already defined for: "+poolName); } else { String maxPool = getPoolMax(); perThreadPoolSet = Collections.synchronizedSet(new HashSet()); if (maxPool.equals("0")){ // i.e. if we want per thread pooling variables.putObject(poolName, new DataSourceComponentImpl()); // pool will be created later } else { ResourceLimitingJdbcDataSource src=initPool(maxPool); synchronized(this){ excaliburSource = src; variables.putObject(poolName, new DataSourceComponentImpl(excaliburSource)); } } } } public void testStarted(String host) { testStarted(); } @Override public Object clone() { DataSourceElement el = (DataSourceElement) super.clone(); synchronized (this) { el.excaliburSource = excaliburSource; el.perThreadPoolSet = perThreadPoolSet; } return el; } /* * Utility routine to get the connection from the pool. * Purpose: * - allows JDBCSampler to be entirely independent of the pooling classes * - allows the pool storage mechanism to be changed if necessary */ public static Connection getConnection(String poolName) throws SQLException{ Object poolObject = JMeterContextService.getContext().getVariables().getObject(poolName); if (poolObject == null) { throw new SQLException("No pool found named: '" + poolName + "', ensure Variable Name matches Variable Name of JDBC Connection Configuration"); } else { if(poolObject instanceof DataSourceComponent) { DataSourceComponent pool = (DataSourceComponent) poolObject; return pool.getConnection(); } else { String errorMsg = "Found object stored under variable:'"+poolName +"' with class:"+poolObject.getClass().getName()+" and value: '"+poolObject+" but it's not a DataSourceComponent, check you're not already using this name as another variable"; log.error(errorMsg); throw new SQLException(errorMsg); } } } /* * Set up the DataSource - maxPool is a parameter, so the same code can * also be used for setting up the per-thread pools. */ private ResourceLimitingJdbcDataSource initPool(String maxPool) { ResourceLimitingJdbcDataSource source = null; source = new ResourceLimitingJdbcDataSource(); DefaultConfiguration config = new DefaultConfiguration("rl-jdbc"); // $NON-NLS-1$ if (log.isDebugEnabled()) { StringBuilder sb = new StringBuilder(40); sb.append("MaxPool: "); sb.append(maxPool); sb.append(" Timeout: "); sb.append(getTimeout()); sb.append(" TrimInt: "); sb.append(getTrimInterval()); sb.append(" Auto-Commit: "); sb.append(isAutocommit()); log.debug(sb.toString()); } DefaultConfiguration poolController = new DefaultConfiguration("pool-controller"); // $NON-NLS-1$ poolController.setAttribute("max", maxPool); // $NON-NLS-1$ poolController.setAttribute("max-strict", "true"); // $NON-NLS-1$ $NON-NLS-2$ poolController.setAttribute("blocking", "true"); // $NON-NLS-1$ $NON-NLS-2$ poolController.setAttribute("timeout", getTimeout()); // $NON-NLS-1$ poolController.setAttribute("trim-interval", getTrimInterval()); // $NON-NLS-1$ config.addChild(poolController); DefaultConfiguration autoCommit = new DefaultConfiguration("auto-commit"); // $NON-NLS-1$ autoCommit.setValue(String.valueOf(isAutocommit())); config.addChild(autoCommit); if (log.isDebugEnabled()) { StringBuilder sb = new StringBuilder(40); sb.append("KeepAlive: "); sb.append(isKeepAlive()); sb.append(" Age: "); sb.append(getConnectionAge()); sb.append(" CheckQuery: "); sb.append(getCheckQuery()); log.debug(sb.toString()); } DefaultConfiguration cfgKeepAlive = new DefaultConfiguration("keep-alive"); // $NON-NLS-1$ cfgKeepAlive.setAttribute("disable", String.valueOf(!isKeepAlive())); // $NON-NLS-1$ cfgKeepAlive.setAttribute("age", getConnectionAge()); // $NON-NLS-1$ cfgKeepAlive.setValue(getCheckQuery()); poolController.addChild(cfgKeepAlive); String _username = getUsername(); if (log.isDebugEnabled()) { StringBuilder sb = new StringBuilder(40); sb.append("Driver: "); sb.append(getDriver()); sb.append(" DbUrl: "); sb.append(getDbUrl()); sb.append(" User: "); sb.append(_username); log.debug(sb.toString()); } DefaultConfiguration cfgDriver = new DefaultConfiguration("driver"); // $NON-NLS-1$ cfgDriver.setValue(getDriver()); config.addChild(cfgDriver); DefaultConfiguration cfgDbUrl = new DefaultConfiguration("dburl"); // $NON-NLS-1$ cfgDbUrl.setValue(getDbUrl()); config.addChild(cfgDbUrl); if (_username.length() > 0){ DefaultConfiguration cfgUsername = new DefaultConfiguration("user"); // $NON-NLS-1$ cfgUsername.setValue(_username); config.addChild(cfgUsername); DefaultConfiguration cfgPassword = new DefaultConfiguration("password"); // $NON-NLS-1$ cfgPassword.setValue(getPassword()); config.addChild(cfgPassword); } // log is required to ensure errors are available source.enableLogging(new LogKitLogger(log)); try { source.configure(config); source.setInstrumentableName(getDataSource()); } catch (ConfigurationException e) { log.error("Could not configure datasource for pool: "+getDataSource(),e); } return source; } // used to hold per-thread singleton connection pools private static final ThreadLocal> perThreadPoolMap = new ThreadLocal>(){ @Override protected Map initialValue() { return new HashMap(); } }; /* * Wrapper class to allow getConnection() to be implemented for both shared * and per-thread pools. * */ private class DataSourceComponentImpl implements DataSourceComponent{ private final ResourceLimitingJdbcDataSource sharedDSC; DataSourceComponentImpl(){ sharedDSC=null; } DataSourceComponentImpl(ResourceLimitingJdbcDataSource p_dsc){ sharedDSC=p_dsc; } public Connection getConnection() throws SQLException { Connection conn = null; ResourceLimitingJdbcDataSource dsc = null; if (sharedDSC != null){ // i.e. shared pool dsc = sharedDSC; } else { Map poolMap = perThreadPoolMap.get(); dsc = poolMap.get(getDataSource()); if (dsc == null){ dsc = initPool("1"); poolMap.put(getDataSource(),dsc); log.debug("Storing pool: "+dsc.getInstrumentableName()+" @"+System.identityHashCode(dsc)); perThreadPoolSet.add(dsc); } } if (dsc != null) { conn=dsc.getConnection(); int transactionIsolation = DataSourceElementBeanInfo.getTransactionIsolationMode(getTransactionIsolation()); if (transactionIsolation >= 0 && conn.getTransactionIsolation() != transactionIsolation) { try { // make sure setting the new isolation mode is done in an auto committed transaction conn.setTransactionIsolation(transactionIsolation); log.debug("Setting transaction isolation: " + transactionIsolation + " @" + System.identityHashCode(dsc)); } catch (SQLException ex) { log.error("Could not set transaction isolation: " + transactionIsolation + " @" + System.identityHashCode(dsc)); } } } return conn; } public void configure(Configuration arg0) throws ConfigurationException { } } public void addConfigElement(ConfigElement config) { } public boolean expectsModification() { return false; } /** * @return Returns the checkQuery. */ public String getCheckQuery() { return checkQuery; } /** * @param checkQuery * The checkQuery to set. */ public void setCheckQuery(String checkQuery) { this.checkQuery = checkQuery; } /** * @return Returns the connectionAge. */ public String getConnectionAge() { return connectionAge; } /** * @param connectionAge * The connectionAge to set. */ public void setConnectionAge(String connectionAge) { this.connectionAge = connectionAge; } /** * @return Returns the poolname. */ public String getDataSource() { return dataSource; } /** * @param dataSource * The poolname to set. */ public void setDataSource(String dataSource) { this.dataSource = dataSource; } /** * @return Returns the dbUrl. */ public String getDbUrl() { return dbUrl; } /** * @param dbUrl * The dbUrl to set. */ public void setDbUrl(String dbUrl) { this.dbUrl = dbUrl; } /** * @return Returns the driver. */ public String getDriver() { return driver; } /** * @param driver * The driver to set. */ public void setDriver(String driver) { this.driver = driver; } /** * @return Returns the password. */ public String getPassword() { return password; } /** * @param password * The password to set. */ public void setPassword(String password) { this.password = password; } /** * @return Returns the poolMax. */ public String getPoolMax() { return poolMax; } /** * @param poolMax * The poolMax to set. */ public void setPoolMax(String poolMax) { this.poolMax = poolMax; } /** * @return Returns the timeout. */ public String getTimeout() { return timeout; } /** * @param timeout * The timeout to set. */ public void setTimeout(String timeout) { this.timeout = timeout; } /** * @return Returns the trimInterval. */ public String getTrimInterval() { return trimInterval; } /** * @param trimInterval * The trimInterval to set. */ public void setTrimInterval(String trimInterval) { this.trimInterval = trimInterval; } /** * @return Returns the username. */ public String getUsername() { return username; } /** * @param username * The username to set. */ public void setUsername(String username) { this.username = username; } /** * @return Returns the autocommit. */ public boolean isAutocommit() { return autocommit; } /** * @param autocommit * The autocommit to set. */ public void setAutocommit(boolean autocommit) { this.autocommit = autocommit; } /** * @return Returns the keepAlive. */ public boolean isKeepAlive() { return keepAlive; } /** * @param keepAlive * The keepAlive to set. */ public void setKeepAlive(boolean keepAlive) { this.keepAlive = keepAlive; } /** * @return the transaction isolation level */ public String getTransactionIsolation() { return transactionIsolation; } /** * @param transactionIsolation The transaction isolation level to set. NULL to * use the default of the driver. */ public void setTransactionIsolation(String transactionIsolation) { this.transactionIsolation = transactionIsolation; } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResource0000644000175000017500000000664012032647216033270 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! autocommit.displayName=Validation automatique (auto commit) autocommit.shortDescription=D\u00E9fini si les requ\u00EAtes doivent \u00EAtre valid\u00E9es automatiquement. checkQuery.displayName=Requ\u00EAte de validation checkQuery.shortDescription=Une requ\u00EAte \u00E0 utiliser pour valider que la connexion fonctionne. Utilis\u00E9 seulement si le param\u00E9tre connexion persistante (keep-alive) est activ\u00E9 (true). connectionAge.displayName=Dur\u00E9e de vie maximum d'une connexion (ms) connectionAge.shortDescription=Nombre maximum en millisecondes pendant lequel une connexion disponible est gard\u00E9e avant d'\u00EAtre ferm\u00E9e. dataSource.displayName=Nom de liaison dataSource.shortDescription=Nom de la variable JMeter sur laquelle le pool sera li\u00E9. database.displayName=Configuration de connexion \u00E0 la base de donn\u00E9es dbUrl.displayName=URL de la base de donn\u00E9es dbUrl.shortDescription=URL compl\u00E8te pour acc\u00E9der \u00E0 la base de donn\u00E9es, incluant la partie jdbc du protocole displayName=Configuration de connexion JDBC driver.displayName=Classe du pilote JDBC driver.shortDescription=Nom (paquet+classe) complet du pilote JDBC \u00E0 utiliser. (Doit \u00EAtre dans le classpath de JMeter) keep-alive.displayName=Validation des connexions par le pool keepAlive.displayName=Connexions persistantes (keep-alive) keepAlive.shortDescription=Est-ce que le pool doit valider les connexions. Sinon, la dur\u00E9e de vie des connexions et des validations de requ\u00EAtes sont ignor\u00E9es. password.displayName=Mot de passe password.shortDescription=Mot de passe \u00E0 utiliser pour se connecter \u00E0 la base de donn\u00E9es pool.displayName=Configuration du pool de connexions poolMax.displayName=Nombre maximum de connexions poolMax.shortDescription=Nombre maximum de connexions que le pool peut ouvrir en m\u00EAme temps timeout.displayName=Expiration du pool (ms) timeout.shortDescription=D\u00E9lai d'attente maximum pour obtenir une connexion du pool si ce dernier n'a plus de connexion disponible. A l'expiration, une exception est retourn\u00E9e. trimInterval.displayName=Intervalle de nettoyage des connexions disponibles (ms) trimInterval.shortDescription=Le pool supprime les connexions disponibles suppl\u00E9mentaires \u00E0 intervalle r\u00E9gulier username.displayName=Identifiant username.shortDescription=L'identifiant \u00E0 utiliser pour la connexion \u00E0 la base de donn\u00E9es varName.displayName=Nom de liaison du pool transactionIsolation.displayName=Isolation de la Transaction transactionIsolation.shortDescription=Niveau d'isolation de la transaction././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_es.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResource0000644000175000017500000000576412032647216033276 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! autocommit.displayName=Auto Commit autocommit.shortDescription=Queries con auto-commit checkQuery.displayName=Query de Validaci\u00F3n checkQuery.shortDescription=Una query utilizada para validar que una conexi\u00F3n funciona. S\u00F3lo es relevante si Keep Alive est\u00E1 a true. connectionAge.displayName=Edad m\u00E1xima de las Conexiones (ms) connectionAge.shortDescription=N\u00FAmero m\u00E1ximo de milisegundos que una conexi\u00F3n se mantiene inactiva antes de descartarla. dataSource.displayName=Nombre de Variable dataSource.shortDescription=Nombre de la variable JMeter a la que se enlazar\u00E1 el pool. database.displayName=Configuraci\u00F3n de la Conexi\u00F3n a Base de Datos dbUrl.displayName=URL de la Base de Datos dbUrl.shortDescription=URL completa de la Base de Datos, incluyendo las partes del protocolo jdbc displayName=Configuraci\u00F3n de la Conexi\u00F3n JDBC driver.displayName=Clase del Driver JDBC driver.shortDescription=Nombre completo (con paquete) de la clase del driver JDBC a utilizar (Debe estar en el classpath de JMeter) keep-alive.displayName=Validaci\u00F3n de Conexi\u00F3n por Pool keepAlive.displayName=Keep-Alive keepAlive.shortDescription=Validaci\u00F3n de conexiones. Si se indica que no, la Edad de Conexi\u00F3n y la Valicadi\u00F3n de Query son ignorados. password.displayName=Password password.shortDescription=Password utilizados para conectar a la base de datos pool.displayName=Configuraci\u00F3n del Pool de Conexiones poolMax.displayName=N\u00FAmero M\u00E1ximo de Conexiones poolMax.shortDescription=N\u00FAmero m\u00E1ximo de conexiones del pool que se abrir\u00E1n a la vez timeout.displayName=Timeout del Pool timeout.shortDescription=El pool bloquea peticiones de conexi\u00F3n hasta que una conexi\u00F3n est\u00E1 disponible. Este es el tiempo m\u00E1ximo de bloqueo antes de que una excepci\u00F3n es devuelta. trimInterval.displayName=Intervalo de Limpieza por Inactividad (ms) trimInterval.shortDescription=El pool elimina conexiones inactivas a intervalos regulares username.displayName=Nombre de Usuario username.shortDescription=Nombre de Usuario a utilizar al conectar a la base de datos varName.displayName=Nombre Variable Enlazado al Pool ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.javaapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo0000644000175000017500000001206412032647216033157 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ /* * Created on May 15, 2004 */ package org.apache.jmeter.protocol.jdbc.config; import java.beans.PropertyDescriptor; import java.sql.Connection; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.testbeans.BeanInfoSupport; import org.apache.jmeter.testbeans.gui.TypeEditor; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class DataSourceElementBeanInfo extends BeanInfoSupport { private static final Logger log = LoggingManager.getLoggerForClass(); private static Map TRANSACTION_ISOLATION_MAP = new HashMap(5); static { // Will use default isolation TRANSACTION_ISOLATION_MAP.put("DEFAULT", Integer.valueOf(-1)); TRANSACTION_ISOLATION_MAP.put("TRANSACTION_NONE", Integer.valueOf(Connection.TRANSACTION_NONE)); TRANSACTION_ISOLATION_MAP.put("TRANSACTION_READ_COMMITTED", Integer.valueOf(Connection.TRANSACTION_READ_COMMITTED)); TRANSACTION_ISOLATION_MAP.put("TRANSACTION_READ_UNCOMMITTED", Integer.valueOf(Connection.TRANSACTION_READ_UNCOMMITTED)); TRANSACTION_ISOLATION_MAP.put("TRANSACTION_REPEATABLE_READ", Integer.valueOf(Connection.TRANSACTION_REPEATABLE_READ)); TRANSACTION_ISOLATION_MAP.put("TRANSACTION_SERIALIZABLE", Integer.valueOf(Connection.TRANSACTION_SERIALIZABLE)); } public DataSourceElementBeanInfo() { super(DataSourceElement.class); createPropertyGroup("varName", new String[] { "dataSource" }); createPropertyGroup("pool", new String[] { "poolMax", "timeout", "trimInterval", "autocommit", "transactionIsolation" }); createPropertyGroup("keep-alive", new String[] { "keepAlive", "connectionAge", "checkQuery" }); createPropertyGroup("database", new String[] { "dbUrl", "driver", "username", "password" }); PropertyDescriptor p = property("dataSource"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("poolMax"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "10"); p = property("timeout"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "10000"); p = property("trimInterval"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "60000"); p = property("autocommit"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p = property("transactionIsolation"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "DEFAULT"); p.setValue(NOT_EXPRESSION, Boolean.TRUE); Set modesSet = TRANSACTION_ISOLATION_MAP.keySet(); String[] modes = modesSet.toArray(new String[modesSet.size()]); p.setValue(TAGS, modes); p = property("keepAlive"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); p = property("connectionAge"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "5000"); p = property("checkQuery"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, "Select 1"); p = property("dbUrl"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("driver"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("username"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); p = property("password", TypeEditor.PasswordEditor); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, ""); } /** * @param tag * @return int value for String */ public static int getTransactionIsolationMode(String tag) { if (!StringUtils.isEmpty(tag)) { Integer isolationMode = TRANSACTION_ISOLATION_MAP.get(tag); if (isolationMode == null) { try { return Integer.parseInt(tag); } catch (NumberFormatException e) { log.warn("Illegal transaction isolation configuration '" + tag + "'"); } } } return -1; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResource0000644000175000017500000000536612032647216033274 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JDBC Connection Configuration pool.displayName=Connection Pool Configuration varName.displayName=Variable Name Bound to Pool keep-alive.displayName=Connection Validation by Pool database.displayName=Database Connection Configuration autocommit.displayName=Auto Commit autocommit.shortDescription=Whether queries should be auto committed. poolMax.displayName=Max Number of Connections poolMax.shortDescription=Maximum number of connections the pool will open at one time connectionAge.displayName=Max Connection age (ms) connectionAge.shortDescription=Maximum number of milliseconds an idle connection is kept before discarding driver.displayName=JDBC Driver class driver.shortDescription=Full package and class name of the JDBC driver to be used (Must be in JMeter's classpath) dbUrl.displayName=Database URL dbUrl.shortDescription=Full URL for the database, including jdbc protocol parts username.displayName=Username username.shortDescription=Username to use in connecting to database password.displayName=Password password.shortDescription=Password used to connect to database checkQuery.displayName=Validation Query checkQuery.shortDescription=A query used to validate a connection still works. Only relevant if Keep Alive is true. dataSource.displayName=Variable Name dataSource.shortDescription=Name of the JMeter variable that the pool will be bound to. timeout.displayName=Pool Timeout timeout.shortDescription=The pool blocks requests for connection until a connection is available. This is the maximum blocking time before an exception is returned. trimInterval.displayName=Idle Cleanup Interval (ms) trimInterval.shortDescription=The pool removes extra idle connections at regular intervals keepAlive.displayName=Keep-Alive keepAlive.shortDescription=Whether the pool should validate connections. If no, Connection Age and Validation Query are ignored. transactionIsolation.displayName=Transaction Isolation transactionIsolation.shortDescription=Transaction Isolation Levelapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/0000755000175000017500000000000012165514773026471 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSampler.java0000644000175000017500000001030312032647216031347 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jdbc.sampler; import java.sql.Connection; import java.sql.SQLException; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.util.ConfigMergabilityIndicator; import org.apache.jmeter.protocol.jdbc.AbstractJDBCTestElement; import org.apache.jmeter.protocol.jdbc.config.DataSourceElement; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * A sampler which understands JDBC database requests. * */ public class JDBCSampler extends AbstractJDBCTestElement implements Sampler, TestBean, ConfigMergabilityIndicator { private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private static final long serialVersionUID = 234L; private static final Logger log = LoggingManager.getLoggerForClass(); /** * Creates a JDBCSampler. */ public JDBCSampler() { } public SampleResult sample(Entry e) { log.debug("sampling jdbc"); SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.setSamplerData(toString()); res.setDataType(SampleResult.TEXT); res.setContentType("text/plain"); // $NON-NLS-1$ res.setDataEncoding(ENCODING); // Assume we will be successful res.setSuccessful(true); res.setResponseMessageOK(); res.setResponseCodeOK(); res.sampleStart(); Connection conn = null; try { if(JOrphanUtils.isBlank(getDataSource())) { throw new IllegalArgumentException("Variable Name must not be null in "+getName()); } try { conn = DataSourceElement.getConnection(getDataSource()); } finally { res.latencyEnd(); // use latency to measure connection time } res.setResponseHeaders(conn.toString()); res.setResponseData(execute(conn)); } catch (SQLException ex) { final String errCode = Integer.toString(ex.getErrorCode()); res.setResponseMessage(ex.toString()); res.setResponseCode(ex.getSQLState()+ " " +errCode); res.setResponseData(ex.getMessage().getBytes()); res.setSuccessful(false); } catch (Exception ex) { res.setResponseMessage(ex.toString()); res.setResponseCode("000"); res.setResponseData(ex.getMessage().getBytes()); res.setSuccessful(false); } finally { close(conn); } // TODO: process warnings? Set Code and Message to success? res.sampleEnd(); return res; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_es.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_es.0000644000175000017500000000311012032647216033065 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! dataSource.displayName=Nombre de Variable dataSource.shortDescription=Nombre de la variable JMeter a la cual est\u00E1 ligado el pool de conexiones displayName=Petici\u00F3n JDBC query.displayName=Query query.shortDescription=Query SQL a enviar a la base de datos queryType.displayName=Solo Query queryType.shortDescription=is true, se lanzar\u00E1 como una query y no como un update/inser. Si no, se lanza como update. sql.displayName=Query SQL varName.displayName=Nombre de Variable Ligada al Pool queryArguments.displayName=Argumentos queryArguments.shortDescription=los valores de los argumentos separados por comas queryArgumentsTypes.displayName=Tipos de los argumentos queryArgumentsTypes.shortDescription=los valores de los argumentos separados por comas ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_zh_TW.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_zh_0000644000175000017500000000232712032647216033171 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! dataSource.displayName=\u8B8A\u6578\u540D\u7A31 dataSource.shortDescription=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u8B8A\u6578\u540D\u7A31 displayName=JDBC \u8981\u6C42 query.displayName=\u67E5\u8A62 query.shortDescription=\u50B3\u9001\u7D66\u8CC7\u6599\u5EAB\u7684 SQL \u654D\u8FF0 sql.displayName=SQL \u654D\u8FF0 varName.displayName=\u8CC7\u6599\u5EAB\u9023\u7DDA\u6C60\u8B8A\u6578\u540D\u7A31 ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources.pro0000644000175000017500000000352312032647216033127 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JDBC Request varName.displayName=Variable Name Bound to Pool sql.displayName=SQL Query query.displayName=Query query.shortDescription=SQL Query to send to database queryType.displayName=Query Type queryType.shortDescription=Determines if the SQL statement should be run as a select statement or an update statement. dataSource.displayName=Variable Name dataSource.shortDescription=Name of the JMeter variable that the connection pool is bound to. queryArguments.displayName=Parameter values queryArguments.shortDescription=SQL parameter values (comma separated) queryArgumentsTypes.displayName=Parameter types queryArgumentsTypes.shortDescription=JDBC Type names from java.sql.Types. VARCHAR, INTEGER, etc. (comma separated) variableNames.displayName=Variable names variableNames.shortDescription=Output variable names for each column (comma separated) resultVariable.displayName=Result variable name resultVariable.shortDescription=Name of the JMeter variable that stores the result set objects in a list of maps for looking up results by column name. ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_fr.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_fr.0000644000175000017500000000414512032647216033076 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! dataSource.displayName=Nom de liaison dataSource.shortDescription=Nom de la variable JMeter qui sera li\u00E9e au pool de connexion displayName=Requ\u00EAte JDBC query.displayName=Requ\u00EAte query.shortDescription=Requ\u00EAte SQL \u00E0 envoyer \u00E0 la base de donn\u00E9es queryArguments.displayName=Valeurs des param\u00E8tres queryArguments.shortDescription=Valeurs des param\u00E8tres SQL queryArgumentsTypes.displayName=Types des param\u00E8tres queryArgumentsTypes.shortDescription=Noms des types JDBC depuis java.sql.Types. Ex. VARCHAR, INTEGER, etc. (s\u00E9par\u00E9s par des virgules) queryType.displayName=Type de requ\u00EAte queryType.shortDescription=D\u00E9termine si l'instruction SQL doit \u00EAtre ex\u00E9cut\u00E9e comme une commande SELECT ou une commande UPDATE. resultVariable.displayName=Nom de la variable des R\u00E9sultats resultVariable.shortDescription=Nom de la variable JMeter qui stocke les r\u00E9sultats sous forme d'objets dans une liste de type 'maps' permettant la recherche des r\u00E9sultats par nom de colonne. sql.displayName=Requ\u00EAte SQL varName.displayName=Nom de liaison avec le pool variableNames.displayName=Noms des variables variableNames.shortDescription=Noms des variables en sortie pour chaque colonne (s\u00E9par\u00E9s par des virgules) ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_pt_BR.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_pt_0000644000175000017500000000357312032647216033177 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. dataSource.displayName=Nome da Vari\u00E1vel dataSource.shortDescription=Nome da vari\u00E1vel do JMeter que referencia o grupo de conex\u00F5es. displayName=Requisi\u00E7\u00E3o JDBC query.displayName=Consulta query.shortDescription=Consulta SQL que ser\u00E1 enviada ao banco de dados queryArguments.displayName=Valores dos par\u00E2metros queryArguments.shortDescription=Valores dos par\u00E2metros do SQL (separados por v\u00EDrgula) queryArgumentsTypes.displayName=Tipos dos par\u00E2metros queryArgumentsTypes.shortDescription=Nomes dos tipos do JDBC de java.sql.Types. VARCHAR, INTEGER, etc. (separados por v\u00EDrgula) queryType.displayName=Tipo da Consulta queryType.shortDescription=Determina se a instru\u00E7\u00E3o SQL dever\u00E1 ser executada como uma instru\u00E7\u00E3o de consulta ou de atualiza\u00E7\u00E3o. sql.displayName=Consulta SQL varName.displayName=Nome da vari\u00E1vel que referencia o grupo de conex\u00F5es. variableNames.displayName=Nomes das vari\u00E1veis variableNames.shortDescription=Nomes das vari\u00E1veis de sa\u00EDda para cada coluna (separado por v\u00EDrgula) ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_tr.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources_tr.0000644000175000017500000000324412032647216033113 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! dataSource.displayName=De\u011Fi\u015Fken \u0130smi dataSource.shortDescription=Ba\u011Flant\u0131 havuzunun ili\u015Fkilendirilece\u011Fi JMeter de\u011Fi\u015Fkeninin ismi. displayName=JDBC \u0130ste\u011Fi query.displayName=Sorgu query.shortDescription=Veritaban\u0131na g\u00F6nderilecek SQL sorgusu queryArguments.displayName=Parametre de\u011Ferleri queryArguments.shortDescription=SQL parametresi de\u011Ferleri queryArgumentsTypes.displayName=Parametre tipleri queryArgumentsTypes.shortDescription=java.sql.Types'tan JDBC Tip isimleri. VARCHAR, INTEGER, gibi. queryType.displayName=Sorgu Tipi queryType.shortDescription=SQL ifadesinin select veya update ifadesi olarak \u00E7al\u0131\u015Ft\u0131r\u0131laca\u011F\u0131n\u0131 belirler. sql.displayName=SQL Sorgusu varName.displayName=Havuzla ili\u015Fkilendirilecek De\u011Fi\u015Fkenin \u0130smi apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerBeanInfo.java0000644000175000017500000000216312032647216032756 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 16, 2004 * */ package org.apache.jmeter.protocol.jdbc.sampler; import org.apache.jmeter.protocol.jdbc.JDBCTestElementBeanInfoSupport; public class JDBCSamplerBeanInfo extends JDBCTestElementBeanInfoSupport { /** * */ public JDBCSamplerBeanInfo() { super(JDBCSampler.class); } } apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java0000644000175000017500000005616012032647216032231 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jdbc; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.Field; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.save.CSVSaveService; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A base class for all JDBC test elements handling the basics of a SQL request. * */ public abstract class AbstractJDBCTestElement extends AbstractTestElement implements TestStateListener{ private static final long serialVersionUID = 235L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final String COMMA = ","; // $NON-NLS-1$ private static final char COMMA_CHAR = ','; private static final String UNDERSCORE = "_"; // $NON-NLS-1$ // This value is used for both the connection (perConnCache) and statement (preparedStatementMap) caches. // TODO - do they have to be the same size? private static final int MAX_ENTRIES = JMeterUtils.getPropDefault("jdbcsampler.cachesize",200); // $NON-NLS-1$ // String used to indicate a null value private static final String NULL_MARKER = JMeterUtils.getPropDefault("jdbcsampler.nullmarker","]NULL["); // $NON-NLS-1$ private static final String INOUT = "INOUT"; // $NON-NLS-1$ private static final String OUT = "OUT"; // $NON-NLS-1$ // TODO - should the encoding be configurable? protected static final String ENCODING = "UTF-8"; // $NON-NLS-1$ // key: name (lowercase) from java.sql.Types; entry: corresponding int value private static final Map mapJdbcNameToInt; // read-only after class init static { // based on e291. Getting the Name of a JDBC Type from javaalmanac.com // http://javaalmanac.com/egs/java.sql/JdbcInt2Str.html mapJdbcNameToInt = new HashMap(); //Get all fields in java.sql.Types and store the corresponding int values Field[] fields = java.sql.Types.class.getFields(); for (int i=0; i> perConnCache = Collections.synchronizedMap(new LinkedHashMap>(MAX_ENTRIES){ private static final long serialVersionUID = 1L; @Override protected boolean removeEldestEntry(Map.Entry> arg0) { if (size() > MAX_ENTRIES) { final Map value = arg0.getValue(); closeAllStatements(value.values()); return true; } return false; } }); /** * Creates a JDBCSampler. */ protected AbstractJDBCTestElement() { } /** * Execute the test element. * * @param conn a {@link SampleResult} in case the test should sample; null if only execution is requested * @throws UnsupportedOperationException if the user provided incorrect query type */ protected byte[] execute(Connection conn) throws SQLException, UnsupportedEncodingException, IOException, UnsupportedOperationException { log.debug("executing jdbc"); Statement stmt = null; try { // Based on query return value, get results String _queryType = getQueryType(); if (SELECT.equals(_queryType)) { stmt = conn.createStatement(); ResultSet rs = null; try { rs = stmt.executeQuery(getQuery()); return getStringFromResultSet(rs).getBytes(ENCODING); } finally { close(rs); } } else if (CALLABLE.equals(_queryType)) { CallableStatement cstmt = getCallableStatement(conn); int out[]=setArguments(cstmt); // A CallableStatement can return more than 1 ResultSets // plus a number of update counts. boolean hasResultSet = cstmt.execute(); String sb = resultSetsToString(cstmt,hasResultSet, out); return sb.getBytes(ENCODING); } else if (UPDATE.equals(_queryType)) { stmt = conn.createStatement(); stmt.executeUpdate(getQuery()); int updateCount = stmt.getUpdateCount(); String results = updateCount + " updates"; return results.getBytes(ENCODING); } else if (PREPARED_SELECT.equals(_queryType)) { PreparedStatement pstmt = getPreparedStatement(conn); setArguments(pstmt); ResultSet rs = null; try { rs = pstmt.executeQuery(); return getStringFromResultSet(rs).getBytes(ENCODING); } finally { close(rs); } } else if (PREPARED_UPDATE.equals(_queryType)) { PreparedStatement pstmt = getPreparedStatement(conn); setArguments(pstmt); pstmt.executeUpdate(); String sb = resultSetsToString(pstmt,false,null); return sb.getBytes(ENCODING); } else if (ROLLBACK.equals(_queryType)){ conn.rollback(); return ROLLBACK.getBytes(ENCODING); } else if (COMMIT.equals(_queryType)){ conn.commit(); return COMMIT.getBytes(ENCODING); } else if (AUTOCOMMIT_FALSE.equals(_queryType)){ conn.setAutoCommit(false); return AUTOCOMMIT_FALSE.getBytes(ENCODING); } else if (AUTOCOMMIT_TRUE.equals(_queryType)){ conn.setAutoCommit(true); return AUTOCOMMIT_TRUE.getBytes(ENCODING); } else { // User provided incorrect query type throw new UnsupportedOperationException("Unexpected query type: "+_queryType); } } finally { close(stmt); } } private String resultSetsToString(PreparedStatement pstmt, boolean result, int[] out) throws SQLException, UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); int updateCount = 0; if (!result) { updateCount = pstmt.getUpdateCount(); } do { if (result) { ResultSet rs = null; try { rs = pstmt.getResultSet(); sb.append(getStringFromResultSet(rs)).append("\n"); // $NON-NLS-1$ } finally { close(rs); } } else { sb.append(updateCount).append(" updates.\n"); } result = pstmt.getMoreResults(); if (!result) { updateCount = pstmt.getUpdateCount(); } } while (result || (updateCount != -1)); if (out!=null && pstmt instanceof CallableStatement){ ArrayList outputValues = new ArrayList(); CallableStatement cs = (CallableStatement) pstmt; sb.append("Output variables by position:\n"); for(int i=0; i < out.length; i++){ if (out[i]!=java.sql.Types.NULL){ Object o = cs.getObject(i+1); outputValues.add(o); sb.append("["); sb.append(i+1); sb.append("] "); sb.append(o); sb.append("\n"); } } String varnames[] = getVariableNames().split(COMMA); if(varnames.length > 0) { JMeterVariables jmvars = getThreadContext().getVariables(); for(int i = 0; i < varnames.length && i < outputValues.size(); i++) { String name = varnames[i].trim(); if (name.length()>0){ // Save the value in the variable if present Object o = outputValues.get(i); jmvars.put(name, o == null ? null : o.toString()); } } } } return sb.toString(); } private int[] setArguments(PreparedStatement pstmt) throws SQLException, IOException { if (getQueryArguments().trim().length()==0) { return new int[]{}; } String[] arguments = CSVSaveService.csvSplitString(getQueryArguments(), COMMA_CHAR); String[] argumentsTypes = getQueryArgumentsTypes().split(COMMA); if (arguments.length != argumentsTypes.length) { throw new SQLException("number of arguments ("+arguments.length+") and number of types ("+argumentsTypes.length+") are not equal"); } int[] outputs= new int[arguments.length]; for (int i = 0; i < arguments.length; i++) { String argument = arguments[i]; String argumentType = argumentsTypes[i]; String[] arg = argumentType.split(" "); String inputOutput=""; if (arg.length > 1) { argumentType = arg[1]; inputOutput=arg[0]; } int targetSqlType = getJdbcType(argumentType); try { if (!OUT.equalsIgnoreCase(inputOutput)){ if (argument.equals(NULL_MARKER)){ pstmt.setNull(i+1, targetSqlType); } else { pstmt.setObject(i+1, argument, targetSqlType); } } if (OUT.equalsIgnoreCase(inputOutput)||INOUT.equalsIgnoreCase(inputOutput)) { CallableStatement cs = (CallableStatement) pstmt; cs.registerOutParameter(i+1, targetSqlType); outputs[i]=targetSqlType; } else { outputs[i]=java.sql.Types.NULL; // can't have an output parameter type null } } catch (NullPointerException e) { // thrown by Derby JDBC (at least) if there are no "?" markers in statement throw new SQLException("Could not set argument no: "+(i+1)+" - missing parameter marker?"); } } return outputs; } private static int getJdbcType(String jdbcType) throws SQLException { Integer entry = mapJdbcNameToInt.get(jdbcType.toLowerCase(java.util.Locale.ENGLISH)); if (entry == null) { try { entry = Integer.decode(jdbcType); } catch (NumberFormatException e) { throw new SQLException("Invalid data type: "+jdbcType); } } return (entry).intValue(); } private CallableStatement getCallableStatement(Connection conn) throws SQLException { return (CallableStatement) getPreparedStatement(conn,true); } private PreparedStatement getPreparedStatement(Connection conn) throws SQLException { return getPreparedStatement(conn,false); } private PreparedStatement getPreparedStatement(Connection conn, boolean callable) throws SQLException { Map preparedStatementMap = perConnCache.get(conn); if (null == preparedStatementMap ) { // MRU PreparedStatements cache. preparedStatementMap = Collections.synchronizedMap(new LinkedHashMap(MAX_ENTRIES) { private static final long serialVersionUID = 240L; @Override protected boolean removeEldestEntry(Map.Entry arg0) { final int theSize = size(); if (theSize > MAX_ENTRIES) { Object value = arg0.getValue(); if (value instanceof PreparedStatement) { PreparedStatement pstmt = (PreparedStatement) value; close(pstmt); } return true; } return false; } }); perConnCache.put(conn, preparedStatementMap); } PreparedStatement pstmt = preparedStatementMap.get(getQuery()); if (null == pstmt) { if (callable) { pstmt = conn.prepareCall(getQuery()); } else { pstmt = conn.prepareStatement(getQuery()); } preparedStatementMap.put(getQuery(), pstmt); } pstmt.clearParameters(); return pstmt; } private static void closeAllStatements(Collection collection) { for (PreparedStatement pstmt : collection) { close(pstmt); } } /** * Gets a Data object from a ResultSet. * * @param rs * ResultSet passed in from a database query * @return a Data object * @throws java.sql.SQLException * @throws UnsupportedEncodingException */ private String getStringFromResultSet(ResultSet rs) throws SQLException, UnsupportedEncodingException { ResultSetMetaData meta = rs.getMetaData(); StringBuilder sb = new StringBuilder(); int numColumns = meta.getColumnCount(); for (int i = 1; i <= numColumns; i++) { sb.append(meta.getColumnName(i)); if (i==numColumns){ sb.append('\n'); } else { sb.append('\t'); } } JMeterVariables jmvars = getThreadContext().getVariables(); String varnames[] = getVariableNames().split(COMMA); String resultVariable = getResultVariable().trim(); List > results = null; if(resultVariable.length() > 0) { results = new ArrayList >(); jmvars.putObject(resultVariable, results); } int j = 0; while (rs.next()) { Map row = null; j++; for (int i = 1; i <= numColumns; i++) { Object o = rs.getObject(i); if(results != null) { if(row == null) { row = new HashMap(numColumns); results.add(row); } row.put(meta.getColumnName(i), o); } if (o instanceof byte[]) { o = new String((byte[]) o, ENCODING); } sb.append(o); if (i==numColumns){ sb.append('\n'); } else { sb.append('\t'); } if (i <= varnames.length) { // i starts at 1 String name = varnames[i - 1].trim(); if (name.length()>0){ // Save the value in the variable if present jmvars.put(name+UNDERSCORE+j, o == null ? null : o.toString()); } } } } // Remove any additional values from previous sample for(int i=0; i < varnames.length; i++){ String name = varnames[i].trim(); if (name.length()>0 && jmvars != null){ final String varCount = name+"_#"; // $NON-NLS-1$ // Get the previous count String prevCount = jmvars.get(varCount); if (prevCount != null){ int prev = Integer.parseInt(prevCount); for (int n=j+1; n <= prev; n++ ){ jmvars.remove(name+UNDERSCORE+n); } } jmvars.put(varCount, Integer.toString(j)); // save the current count } } return sb.toString(); } public static void close(Connection c) { try { if (c != null) { c.close(); } } catch (SQLException e) { log.warn("Error closing Connection", e); } } public static void close(Statement s) { try { if (s != null) { s.close(); } } catch (SQLException e) { log.warn("Error closing Statement " + s.toString(), e); } } public static void close(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { log.warn("Error closing ResultSet", e); } } public String getQuery() { return query; } @Override public String toString() { StringBuilder sb = new StringBuilder(80); sb.append("["); // $NON-NLS-1$ sb.append(getQueryType()); sb.append("] "); // $NON-NLS-1$ sb.append(getQuery()); sb.append("\n"); sb.append(getQueryArguments()); sb.append("\n"); sb.append(getQueryArgumentsTypes()); return sb.toString(); } /** * @param query * The query to set. */ public void setQuery(String query) { this.query = query; } /** * @return Returns the dataSource. */ public String getDataSource() { return dataSource; } /** * @param dataSource * The dataSource to set. */ public void setDataSource(String dataSource) { this.dataSource = dataSource; } /** * @return Returns the queryType. */ public String getQueryType() { return queryType; } /** * @param queryType The queryType to set. */ public void setQueryType(String queryType) { this.queryType = queryType; } public String getQueryArguments() { return queryArguments; } public void setQueryArguments(String queryArguments) { this.queryArguments = queryArguments; } public String getQueryArgumentsTypes() { return queryArgumentsTypes; } public void setQueryArgumentsTypes(String queryArgumentsType) { this.queryArgumentsTypes = queryArgumentsType; } /** * @return the variableNames */ public String getVariableNames() { return variableNames; } /** * @param variableNames the variableNames to set */ public void setVariableNames(String variableNames) { this.variableNames = variableNames; } /** * @return the resultVariable */ public String getResultVariable() { return resultVariable ; } /** * @param resultVariable the variable name in which results will be stored */ public void setResultVariable(String resultVariable) { this.resultVariable = resultVariable; } /** * {@inheritDoc}} */ @Override public List getSearchableTokens() throws Exception { List result = super.getSearchableTokens(); Set properties = new HashSet(); properties.addAll(Arrays.asList(new String[]{ "dataSource", "query", "queryArguments", "queryArgumentsTypes", "queryType", "resultVariable", "variableNames" })); addPropertiesValues(result, properties); return result; } /** * {@inheritDoc} * @see org.apache.jmeter.testelement.TestStateListener#testStarted() */ public void testStarted() { testStarted(""); } /** * {@inheritDoc} * @see org.apache.jmeter.testelement.TestStateListener#testStarted(java.lang.String) */ public void testStarted(String host) { cleanCache(); } /** * {@inheritDoc} * @see org.apache.jmeter.testelement.TestStateListener#testEnded() */ public void testEnded() { testEnded(""); } /** * {@inheritDoc} * @see org.apache.jmeter.testelement.TestStateListener#testEnded(java.lang.String) */ public void testEnded(String host) { cleanCache(); } /** * Clean cache of PreparedStatements */ private static final void cleanCache() { for (Map element : perConnCache.values()) { closeAllStatements(element.values()); } perConnCache.clear(); } }apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/0000755000175000017500000000000012165514773027045 5ustar ebourgebourg././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorResources.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorResou0000644000175000017500000000353112032647216033250 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JDBC PostProcessor varName.displayName=Variable Name Bound to Pool sql.displayName=SQL Query query.displayName=Query query.shortDescription=SQL Query to send to database queryType.displayName=Query Type queryType.shortDescription=Determines if the SQL statement should be run as a select statement or an update statement. dataSource.displayName=Variable Name dataSource.shortDescription=Name of the JMeter variable that the connection pool is bound to. queryArguments.displayName=Parameter values queryArguments.shortDescription=SQL parameter values (comma separated) queryArgumentsTypes.displayName=Parameter types queryArgumentsTypes.shortDescription=JDBC Type names from java.sql.Types. VARCHAR, INTEGER, etc. (comma separated) variableNames.displayName=Variable names variableNames.shortDescription=Output variable names for each column (comma separated) resultVariable.displayName=Result variable name resultVariable.shortDescription=Name of the JMeter variable that stores the result set objects in a list of maps for looking up results by column name. ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessorResources.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessorResour0000644000175000017500000000353012032647216033232 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JDBC PreProcessor varName.displayName=Variable Name Bound to Pool sql.displayName=SQL Query query.displayName=Query query.shortDescription=SQL Query to send to database queryType.displayName=Query Type queryType.shortDescription=Determines if the SQL statement should be run as a select statement or an update statement. dataSource.displayName=Variable Name dataSource.shortDescription=Name of the JMeter variable that the connection pool is bound to. queryArguments.displayName=Parameter values queryArguments.shortDescription=SQL parameter values (comma separated) queryArgumentsTypes.displayName=Parameter types queryArgumentsTypes.shortDescription=JDBC Type names from java.sql.Types. VARCHAR, INTEGER, etc. (comma separated) variableNames.displayName=Variable names variableNames.shortDescription=Output variable names for each column (comma separated) resultVariable.displayName=Result variable name resultVariable.shortDescription=Name of the JMeter variable that stores the result set objects in a list of maps for looking up results by column name. apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessor.java0000644000175000017500000000232212032647216033147 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jdbc.processor; import org.apache.jmeter.processor.PostProcessor; import org.apache.jmeter.testbeans.TestBean; /** * Post processor handling JDBC Requests */ public class JDBCPostProcessor extends AbstractJDBCProcessor implements TestBean, PostProcessor { private static final long serialVersionUID = 1L; @Override public void process() { super.process(); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/AbstractJDBCProcessor.javaapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/AbstractJDBCProcessor.0000644000175000017500000000442512032647216033131 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jdbc.processor; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import org.apache.jmeter.protocol.jdbc.AbstractJDBCTestElement; import org.apache.jmeter.protocol.jdbc.config.DataSourceElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; /** * As pre- and post-processors essentially do the same this class provides the implementation. */ public abstract class AbstractJDBCProcessor extends AbstractJDBCTestElement { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; /** * Calls the JDBC code to be executed. */ protected void process() { Connection conn = null; if(JOrphanUtils.isBlank(getDataSource())) { throw new IllegalArgumentException("Variable Name must not be null in "+getName()); } try { conn = DataSourceElement.getConnection(getDataSource()); execute(conn); } catch (SQLException ex) { log.warn("SQL Problem in "+ getName() + ": " + ex.toString()); } catch (IOException ex) { log.warn("IO Problem in "+ getName() + ": " + ex.toString()); } catch (UnsupportedOperationException ex) { log.warn("Execution Problem in "+ getName() + ": " + ex.toString()); } finally { close(conn); } } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorBeanInfo.javaapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorBeanI0000644000175000017500000000220712032647216033130 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 16, 2004 * */ package org.apache.jmeter.protocol.jdbc.processor; import org.apache.jmeter.protocol.jdbc.JDBCTestElementBeanInfoSupport; public class JDBCPostProcessorBeanInfo extends JDBCTestElementBeanInfoSupport { /** * */ public JDBCPostProcessorBeanInfo() { super(JDBCPostProcessor.class); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessorResources_fr.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessorResour0000644000175000017500000000415412032647216033235 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! dataSource.displayName=Nom de liaison dataSource.shortDescription=Nom de la variable JMeter qui sera li\u00E9e au pool de connexion displayName=Pr\u00E9-Processeur JDBC query.displayName=Requ\u00EAte query.shortDescription=Requ\u00EAte SQL \u00E0 envoyer \u00E0 la base de donn\u00E9es queryArguments.displayName=Valeurs des param\u00E8tres queryArguments.shortDescription=Valeurs des param\u00E8tres SQL queryArgumentsTypes.displayName=Types des param\u00E8tres queryArgumentsTypes.shortDescription=Noms des types JDBC depuis java.sql.Types. Ex. VARCHAR, INTEGER, etc. (s\u00E9par\u00E9s par des virgules) queryType.displayName=Type de requ\u00EAte queryType.shortDescription=D\u00E9termine si l'instruction SQL doit \u00EAtre ex\u00E9cut\u00E9e comme une commande SELECT ou une commande UPDATE. resultVariable.displayName=Nom de la variable des R\u00E9sultats resultVariable.shortDescription=Nom de la variable JMeter qui stocke les r\u00E9sultats sous forme d'objets dans une liste de type 'maps' permettant la recherche des r\u00E9sultats par nom de colonne. sql.displayName=Requ\u00EAte SQL varName.displayName=Nom de liaison avec le pool variableNames.displayName=Noms des variables variableNames.shortDescription=Noms des variables en sortie pour chaque colonne (s\u00E9par\u00E9s par des virgules) ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorResources_fr.propertiesapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorResou0000644000175000017500000000415012032647216033246 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! dataSource.displayName=Nom de liaison dataSource.shortDescription=Nom de la variable JMeter qui sera li\u00E9e au pool de connexion displayName=Post-Processeur JDBC query.displayName=Requ\u00EAte query.shortDescription=Requ\u00EAte SQL \u00E0 envoyer \u00E0 la base de donn\u00E9es queryArguments.displayName=Valeurs des param\u00E8tres queryArguments.shortDescription=Valeurs des param\u00E8tres SQL queryArgumentsTypes.displayName=Types des param\u00E8tres queryArgumentsTypes.shortDescription=Noms des types JDBC depuis java.sql.Types. Ex. VARCHAR, INTEGER, etc. (s\u00E9par\u00E9s par des virgules) queryType.displayName=Type de requ\u00EAte queryType.shortDescription=D\u00E9termine si l'instruction SQL doit \u00EAtre ex\u00E9cut\u00E9e comme une commande SELECT ou une commande UPDATE. resultVariable.displayName=Nom de la variable des R\u00E9sultats resultVariable.shortDescription=Nom de la variable JMeter qui stocke les r\u00E9sultats sous forme d'objets dans une liste de type 'maps' permettant la recherche des r\u00E9sultats par nom de colonne. sql.displayName=Requ\u00EAte SQL varName.displayName=Nom de liaison avec le pool variableNames.displayName=Noms des variables variableNames.shortDescription=Noms des variables en sortie pour chaque colonne (s\u00E9par\u00E9s par des virgules) apache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessor.java0000644000175000017500000000231512032647216032752 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jdbc.processor; import org.apache.jmeter.processor.PreProcessor; import org.apache.jmeter.testbeans.TestBean; /** * Preprocessor handling JDBC Requests */ public class JDBCPreProcessor extends AbstractJDBCProcessor implements TestBean, PreProcessor { private static final long serialVersionUID = 1L; @Override public void process() { super.process(); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessorBeanInfo.javaapache-jmeter-2.8/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/processor/JDBCPreProcessorBeanIn0000644000175000017500000000220412032647216033104 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /* * Created on May 16, 2004 * */ package org.apache.jmeter.protocol.jdbc.processor; import org.apache.jmeter.protocol.jdbc.JDBCTestElementBeanInfoSupport; public class JDBCPreProcessorBeanInfo extends JDBCTestElementBeanInfoSupport { /** * */ public JDBCPreProcessorBeanInfo() { super(JDBCPreProcessor.class); } } apache-jmeter-2.8/src/protocol/native/0000755000175000017500000000000012032647216017341 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/0000755000175000017500000000000012032647216020130 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/apache/0000755000175000017500000000000012032647216021351 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/apache/jmeter/0000755000175000017500000000000012032647216022637 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024500 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/system/0000755000175000017500000000000012165514773026034 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/system/SystemSampler.java0000644000175000017500000002505012032647216031501 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.system; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A sampler for executing a System function. */ public class SystemSampler extends AbstractSampler { private static final long serialVersionUID = 1; // + JMX names, do not change their values public static final String COMMAND = "SystemSampler.command"; public static final String DIRECTORY = "SystemSampler.directory"; public static final String ARGUMENTS = "SystemSampler.arguments"; public static final String ENVIRONMENT = "SystemSampler.environment"; public static final String CHECK_RETURN_CODE = "SystemSampler.checkReturnCode"; public static final String EXPECTED_RETURN_CODE = "SystemSampler.expectedReturnCode"; private static final String STDOUT = "SystemSampler.stdout"; private static final String STDERR = "SystemSampler.stderr"; private static final String STDIN = "SystemSampler.stdin"; // - JMX names /** * Logging */ private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); public static final int DEFAULT_RETURN_CODE = 0; /** * Create a SystemSampler. */ public SystemSampler() { super(); } /** * Performs a test sample. * * @param entry * the Entry for this sample * @return test SampleResult */ public SampleResult sample(Entry entry) { SampleResult results = new SampleResult(); results.setDataType(SampleResult.TEXT); try { String command = getCommand(); Arguments args = getArguments(); Arguments environment = getEnvironmentVariables(); boolean checkReturnCode = getCheckReturnCode(); int expectedReturnCode = getExpectedReturnCode(); List cmds = new ArrayList(args.getArgumentCount()+1); StringBuilder cmdLine = new StringBuilder((null == command) ? "" : command); cmds.add(command); for (int i=0;i env = new HashMap(); for (int i=0;i env; private Map executionEnvironment; private final String stdin; private final String stdout; private final String stderr; /** * @param env Environment variables appended to environment * @param directory File working directory */ public NativeCommand(File directory, Map env) { this(directory, env, null, null, null); } /** * * @param env Environment variables appended to environment * @param directory File working directory * @param stdin File name that will contain data to be input to process * @param stdout File name that will contain out stream * @param stderr File name that will contain err stream */ public NativeCommand(File directory, Map env, String stdin, String stdout, String stderr) { super(); this.directory = directory; this.env = env; this.stdin = JOrphanUtils.nullifyIfEmptyTrimmed(stdin); this.stdout = JOrphanUtils.nullifyIfEmptyTrimmed(stdout); this.stderr = JOrphanUtils.nullifyIfEmptyTrimmed(stderr); } /** * @param arguments List * @return return code * @throws InterruptedException * @throws IOException */ public int run(List arguments) throws InterruptedException, IOException { Process proc = null; try { ProcessBuilder procBuild = new ProcessBuilder(arguments); procBuild.environment().putAll(env); this.executionEnvironment = Collections.unmodifiableMap(procBuild.environment()); procBuild.directory(directory); if (stderr == null || stderr.equals(stdout)) { // we're not redirecting stderr separately procBuild.redirectErrorStream(true); } proc = procBuild.start(); StreamCopier swerr = null; if (!procBuild.redirectErrorStream()) { // stderr has separate output file swerr = new StreamCopier(proc.getErrorStream(), new FileOutputStream(stderr)); swerr.start(); } StreamCopier swout = null; if (stdout != null) { swout = new StreamCopier(proc.getInputStream(), new FileOutputStream(stdout)); swout.start(); } else { outputGobbler = new StreamGobbler(proc.getInputStream()); outputGobbler.start(); } StreamCopier swin = null; if (stdin != null) { swin = new StreamCopier(new FileInputStream(stdin), proc.getOutputStream()); swin.start(); } int exitVal = proc.waitFor(); if (outputGobbler != null) { outputGobbler.join(); } if (swout != null) { swout.join(); } if (swerr != null) { swerr.join(); } if (swin != null) { swin.interrupt(); // the copying thread won't generally detect EOF swin.join(); } return exitVal; } finally { if(proc != null) { try { proc.destroy(); } catch (Exception ignored) { // Ignored } } } } /** * @return Out/Err stream contents */ public String getOutResult() { if(outputGobbler != null) { return outputGobbler.getResult(); } else { return ""; } } /** * @return the executionEnvironment */ public Map getExecutionEnvironment() { return executionEnvironment; } }apache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/system/gui/0000755000175000017500000000000012165514773026620 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/system/gui/SystemSamplerGui.java0000644000175000017500000002325212032647216032734 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.system.gui; import java.awt.BorderLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JPanel; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.FilePanelEntry; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.system.SystemSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledTextField; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; /** * GUI for {@link SystemSampler} */ public class SystemSamplerGui extends AbstractSamplerGui implements ItemListener { /** * */ private static final long serialVersionUID = -2413845772703695934L; private JCheckBox checkReturnCode; private JLabeledTextField desiredReturnCode; private final FilePanelEntry stdin = new FilePanelEntry(JMeterUtils.getResString("system_sampler_stdin")); // $NON-NLS-1$ private final FilePanelEntry stdout = new FilePanelEntry(JMeterUtils.getResString("system_sampler_stdout")); // $NON-NLS-1$ private final FilePanelEntry stderr = new FilePanelEntry(JMeterUtils.getResString("system_sampler_stderr")); // $NON-NLS-1$ private JLabeledTextField directory; private JLabeledTextField command; private ArgumentsPanel argsPanel; private ArgumentsPanel envPanel; /** * Constructor for JavaTestSamplerGui */ public SystemSamplerGui() { super(); init(); } public String getLabelResource() { return "system_sampler_title"; // $NON-NLS-1$ } @Override public String getStaticLabel() { return JMeterUtils.getResString(getLabelResource()); } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); add(makeCommandPanel(), BorderLayout.CENTER); JPanel streamsCodePane = new JPanel(new BorderLayout()); streamsCodePane.add(makeStreamsPanel(), BorderLayout.NORTH); streamsCodePane.add(makeReturnCodePanel(), BorderLayout.SOUTH); add(streamsCodePane, BorderLayout.SOUTH); } /* Implements JMeterGuiComponent.createTestElement() */ public TestElement createTestElement() { SystemSampler sampler = new SystemSampler(); modifyTestElement(sampler); return sampler; } public void modifyTestElement(TestElement sampler) { super.configureTestElement(sampler); SystemSampler systemSampler = (SystemSampler)sampler; systemSampler.setCheckReturnCode(checkReturnCode.isSelected()); if(checkReturnCode.isSelected()) { if(!StringUtils.isEmpty(desiredReturnCode.getText())) { systemSampler.setExpectedReturnCode(Integer.parseInt(desiredReturnCode.getText())); } else { systemSampler.setExpectedReturnCode(SystemSampler.DEFAULT_RETURN_CODE); } } else { systemSampler.setExpectedReturnCode(SystemSampler.DEFAULT_RETURN_CODE); } systemSampler.setCommand(command.getText()); systemSampler.setArguments((Arguments)argsPanel.createTestElement()); systemSampler.setEnvironmentVariables((Arguments)envPanel.createTestElement()); systemSampler.setDirectory(directory.getText()); systemSampler.setStdin(stdin.getFilename()); systemSampler.setStdout(stdout.getFilename()); systemSampler.setStderr(stderr.getFilename()); } /* Overrides AbstractJMeterGuiComponent.configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); SystemSampler systemSampler = (SystemSampler) el; checkReturnCode.setSelected(systemSampler.getCheckReturnCode()); desiredReturnCode.setText(Integer.toString(systemSampler.getExpectedReturnCode())); desiredReturnCode.setEnabled(checkReturnCode.isSelected()); command.setText(systemSampler.getCommand()); argsPanel.configure(systemSampler.getArguments()); envPanel.configure(systemSampler.getEnvironmentVariables()); directory.setText(systemSampler.getDirectory()); stdin.setFilename(systemSampler.getStdin()); stdout.setFilename(systemSampler.getStdout()); stderr.setFilename(systemSampler.getStderr()); } /** * @return JPanel return code config */ private JPanel makeReturnCodePanel() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); panel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("return_code_config_box_title"))); // $NON-NLS-1$ checkReturnCode = new JCheckBox(JMeterUtils.getResString("check_return_code_title")); // $NON-NLS-1$ checkReturnCode.addItemListener(this); desiredReturnCode = new JLabeledTextField(JMeterUtils.getResString("expected_return_code_title")); // $NON-NLS-1$ desiredReturnCode.setSize(desiredReturnCode.getSize().height, 30); panel.add(checkReturnCode); panel.add(Box.createHorizontalStrut(5)); panel.add(desiredReturnCode); checkReturnCode.setSelected(true); return panel; } /** * @return JPanel Command + directory */ private JPanel makeCommandPanel() { JPanel cmdPanel = new JPanel(); cmdPanel.setLayout(new BoxLayout(cmdPanel, BoxLayout.X_AXIS)); JPanel cmdWkDirPane = new JPanel(new BorderLayout()); command = new JLabeledTextField(JMeterUtils.getResString("command_field_title")); // $NON-NLS-1$ cmdWkDirPane.add(command, BorderLayout.CENTER); directory = new JLabeledTextField(JMeterUtils.getResString("directory_field_title")); // $NON-NLS-1$ cmdWkDirPane.add(directory, BorderLayout.EAST); cmdPanel.add(cmdWkDirPane); JPanel panel = new VerticalPanel(); panel.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("command_config_box_title"))); // $NON-NLS-1$ panel.add(cmdPanel, BorderLayout.NORTH); panel.add(makeArgumentsPanel(), BorderLayout.CENTER); panel.add(makeEnvironmentPanel(), BorderLayout.SOUTH); return panel; } /** * @return JPanel Arguments Panel */ private JPanel makeArgumentsPanel() { argsPanel = new ArgumentsPanel(JMeterUtils.getResString("arguments_panel_title"), null, true, false , // $NON-NLS-1$ new ObjectTableModel(new String[] { ArgumentsPanel.COLUMN_RESOURCE_NAMES_1 }, Argument.class, new Functor[] { new Functor("getValue") }, // $NON-NLS-1$ new Functor[] { new Functor("setValue") }, // $NON-NLS-1$ new Class[] {String.class })); return argsPanel; } /** * @return JPanel Environment Panel */ private JPanel makeEnvironmentPanel() { envPanel = new ArgumentsPanel(JMeterUtils.getResString("environment_panel_title")); // $NON-NLS-1$ return envPanel; } /** * @return JPanel Streams Panel */ private JPanel makeStreamsPanel() { JPanel stdPane = new JPanel(new BorderLayout()); stdPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), JMeterUtils.getResString("command_config_std_streams_title"))); // $NON-NLS-1$ stdPane.add(stdin, BorderLayout.NORTH); stdPane.add(stdout, BorderLayout.CENTER); stdPane.add(stderr, BorderLayout.SOUTH); return stdPane; } /** * @see org.apache.jmeter.gui.AbstractJMeterGuiComponent#clearGui() */ @Override public void clearGui() { super.clearGui(); directory.setText(""); // $NON-NLS-1$ command.setText(""); // $NON-NLS-1$ argsPanel.clearGui(); envPanel.clearGui(); desiredReturnCode.setText(""); // $NON-NLS-1$ checkReturnCode.setSelected(false); desiredReturnCode.setEnabled(false); stdin.clearGui(); stdout.clearGui(); stderr.clearGui(); } public void itemStateChanged(ItemEvent e) { if(e.getSource()==checkReturnCode) { desiredReturnCode.setEnabled(e.getStateChange() == ItemEvent.SELECTED); } } }apache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/system/StreamCopier.java0000644000175000017500000000360712032647216031272 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.system; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.io.IOUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Thread that copies a stream in the background; closes both input and output streams. * @since 2.8 */ class StreamCopier extends Thread { private static final Logger log = LoggingManager.getLoggerForClass(); private final InputStream is; private final OutputStream os; /** * @param is {@link InputStream} * @param is {@link OutputStream} * @throws IOException */ StreamCopier(InputStream is, OutputStream os) throws IOException { this.is = is; this.os = os; } /** * @see java.lang.Thread#run() */ @Override public void run() { try { IOUtils.copyLarge(is, os); os.close(); is.close(); } catch (IOException e) { log.warn("Error writing stream", e); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(os); } } } apache-jmeter-2.8/src/protocol/native/org/apache/jmeter/protocol/system/StreamGobbler.java0000644000175000017500000000361112032647216031420 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.system; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.jorphan.util.JOrphanUtils; /** * Thread that eats Output and Error Stream to avoid Deadlock on Windows Machines * Inspired from: * http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html */ class StreamGobbler extends Thread { private final InputStream is; private final StringBuilder buffer = new StringBuilder(); /** * @param is {@link InputStream} */ StreamGobbler(InputStream is) { this.is = is; } /** * @see java.lang.Thread#run() */ @Override public void run() { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(is)); String line = null; while ((line = br.readLine()) != null) { buffer.append(line); buffer.append("\r\n"); } } catch (IOException e) { buffer.append(e.getMessage()); } finally { JOrphanUtils.closeQuietly(br); } } /** * @return Output */ public String getResult() { return buffer.toString(); } } apache-jmeter-2.8/src/protocol/ftp/0000755000175000017500000000000012032647216016644 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/0000755000175000017500000000000012032647216017433 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/0000755000175000017500000000000012032647216020654 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/0000755000175000017500000000000012032647216022142 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024003 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/0000755000175000017500000000000012032647216024574 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/config/0000755000175000017500000000000012032647216026041 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/config/gui/0000755000175000017500000000000012165514773026635 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/config/gui/FtpConfigGui.java0000644000175000017500000002056012032647216032017 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ftp.config.gui; import java.awt.BorderLayout; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.ftp.sampler.FTPSampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class FtpConfigGui extends AbstractConfigGui { private static final long serialVersionUID = 240L; private JTextField server; private JTextField port; private JTextField remoteFile; private JTextField localFile; private JTextArea inputData; private JCheckBox binaryMode; private JCheckBox saveResponseData; private boolean displayName = true; private JRadioButton getBox; private JRadioButton putBox; public FtpConfigGui() { this(true); } public FtpConfigGui(boolean displayName) { this.displayName = displayName; init(); } public String getLabelResource() { return "ftp_sample_title"; // $NON-NLS-1$ } @Override public void configure(TestElement element) { super.configure(element); // TODO - should this be done for embedded usage? // Note: the element is a ConfigTestElement when used standalone, so we cannot use FTPSampler access methods server.setText(element.getPropertyAsString(FTPSampler.SERVER)); port.setText(element.getPropertyAsString(FTPSampler.PORT)); remoteFile.setText(element.getPropertyAsString(FTPSampler.REMOTE_FILENAME)); localFile.setText(element.getPropertyAsString(FTPSampler.LOCAL_FILENAME)); inputData.setText(element.getPropertyAsString(FTPSampler.INPUT_DATA)); binaryMode.setSelected(element.getPropertyAsBoolean(FTPSampler.BINARY_MODE, false)); saveResponseData.setSelected(element.getPropertyAsBoolean(FTPSampler.SAVE_RESPONSE, false)); final boolean uploading = element.getPropertyAsBoolean(FTPSampler.UPLOAD_FILE,false); if (uploading){ putBox.setSelected(true); } else { getBox.setSelected(true); } } public TestElement createTestElement() { ConfigTestElement element = new ConfigTestElement(); modifyTestElement(element); return element; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { configureTestElement(element); // Note: the element is a ConfigTestElement, so cannot use FTPSampler access methods element.setProperty(FTPSampler.SERVER,server.getText()); element.setProperty(FTPSampler.PORT,port.getText()); element.setProperty(FTPSampler.REMOTE_FILENAME,remoteFile.getText()); element.setProperty(FTPSampler.LOCAL_FILENAME,localFile.getText()); element.setProperty(FTPSampler.INPUT_DATA,inputData.getText()); element.setProperty(FTPSampler.BINARY_MODE,binaryMode.isSelected()); element.setProperty(FTPSampler.SAVE_RESPONSE, saveResponseData.isSelected()); element.setProperty(FTPSampler.UPLOAD_FILE,putBox.isSelected()); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); server.setText(""); //$NON-NLS-1$ port.setText(""); //$NON-NLS-1$ remoteFile.setText(""); //$NON-NLS-1$ localFile.setText(""); //$NON-NLS-1$ inputData.setText(""); //$NON-NLS-1$ binaryMode.setSelected(false); saveResponseData.setSelected(false); getBox.setSelected(true); putBox.setSelected(false); } private JPanel createServerPanel() { JLabel label = new JLabel(JMeterUtils.getResString("server")); //$NON-NLS-1$ server = new JTextField(10); label.setLabelFor(server); JPanel serverPanel = new JPanel(new BorderLayout(5, 0)); serverPanel.add(label, BorderLayout.WEST); serverPanel.add(server, BorderLayout.CENTER); return serverPanel; } private JPanel getPortPanel() { port = new JTextField(4); JLabel label = new JLabel(JMeterUtils.getResString("web_server_port")); // $NON-NLS-1$ label.setLabelFor(port); JPanel panel = new JPanel(new BorderLayout(5, 0)); panel.add(label, BorderLayout.WEST); panel.add(port, BorderLayout.CENTER); return panel; } private JPanel createLocalFilenamePanel() { JLabel label = new JLabel(JMeterUtils.getResString("ftp_local_file")); //$NON-NLS-1$ localFile = new JTextField(10); label.setLabelFor(localFile); JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); filenamePanel.add(label, BorderLayout.WEST); filenamePanel.add(localFile, BorderLayout.CENTER); return filenamePanel; } private JPanel createLocalFileContentsPanel() { JLabel label = new JLabel(JMeterUtils.getResString("ftp_local_file_contents")); //$NON-NLS-1$ inputData = new JTextArea(); label.setLabelFor(inputData); JPanel contentsPanel = new JPanel(new BorderLayout(5, 0)); contentsPanel.add(label, BorderLayout.WEST); contentsPanel.add(inputData, BorderLayout.CENTER); return contentsPanel; } private JPanel createRemoteFilenamePanel() { JLabel label = new JLabel(JMeterUtils.getResString("ftp_remote_file")); //$NON-NLS-1$ remoteFile = new JTextField(10); label.setLabelFor(remoteFile); JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); filenamePanel.add(label, BorderLayout.WEST); filenamePanel.add(remoteFile, BorderLayout.CENTER); return filenamePanel; } private JPanel createOptionsPanel(){ ButtonGroup group = new ButtonGroup(); getBox = new JRadioButton(JMeterUtils.getResString("ftp_get")); //$NON-NLS-1$ group.add(getBox); getBox.setSelected(true); putBox = new JRadioButton(JMeterUtils.getResString("ftp_put")); //$NON-NLS-1$ group.add(putBox); binaryMode = new JCheckBox(JMeterUtils.getResString("ftp_binary_mode")); //$NON-NLS-1$ saveResponseData = new JCheckBox(JMeterUtils.getResString("ftp_save_response_data")); //$NON-NLS-1$ JPanel optionsPanel = new HorizontalPanel(); optionsPanel.add(getBox); optionsPanel.add(putBox); optionsPanel.add(binaryMode); optionsPanel.add(saveResponseData); return optionsPanel; } private void init() { setLayout(new BorderLayout(0, 5)); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } // MAIN PANEL VerticalPanel mainPanel = new VerticalPanel(); JPanel serverPanel = new HorizontalPanel(); serverPanel.add(createServerPanel(), BorderLayout.CENTER); serverPanel.add(getPortPanel(), BorderLayout.EAST); mainPanel.add(serverPanel); mainPanel.add(createRemoteFilenamePanel()); mainPanel.add(createLocalFilenamePanel()); mainPanel.add(createLocalFileContentsPanel()); mainPanel.add(createOptionsPanel()); add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/0000755000175000017500000000000012165514773026247 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/sampler/FTPSampler.java0000644000175000017500000002727412032647216031073 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ftp.sampler; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.NullOutputStream; import org.apache.commons.io.output.TeeOutputStream; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A sampler which understands FTP file requests. * */ public class FTPSampler extends AbstractSampler implements Interruptible { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.LoginConfigGui", "org.apache.jmeter.protocol.ftp.config.gui.FtpConfigGui", "org.apache.jmeter.config.gui.SimpleConfigGui"})); public static final String SERVER = "FTPSampler.server"; // $NON-NLS-1$ public static final String PORT = "FTPSampler.port"; // $NON-NLS-1$ // N.B. Originally there was only one filename, and only get(RETR) was supported // To maintain backwards compatibility, the property name needs to remain the same public static final String REMOTE_FILENAME = "FTPSampler.filename"; // $NON-NLS-1$ public static final String LOCAL_FILENAME = "FTPSampler.localfilename"; // $NON-NLS-1$ public static final String INPUT_DATA = "FTPSampler.inputdata"; // $NON-NLS-1$ // Use binary mode file transfer? public static final String BINARY_MODE = "FTPSampler.binarymode"; // $NON-NLS-1$ // Are we uploading? public static final String UPLOAD_FILE = "FTPSampler.upload"; // $NON-NLS-1$ // Should the file data be saved in the response? public static final String SAVE_RESPONSE = "FTPSampler.saveresponse"; // $NON-NLS-1$ private transient volatile FTPClient savedClient; // used for interrupting the sampler public FTPSampler() { } public String getUsername() { return getPropertyAsString(ConfigTestElement.USERNAME); } public String getPassword() { return getPropertyAsString(ConfigTestElement.PASSWORD); } public void setServer(String newServer) { this.setProperty(SERVER, newServer); } public String getServer() { return getPropertyAsString(SERVER); } public void setPort(String newPort) { this.setProperty(PORT, newPort, ""); // $NON-NLS-1$ } public String getPort() { return getPropertyAsString(PORT, ""); // $NON-NLS-1$ } public int getPortAsInt() { return getPropertyAsInt(PORT, 0); } public String getRemoteFilename() { return getPropertyAsString(REMOTE_FILENAME); } public String getLocalFilename() { return getPropertyAsString(LOCAL_FILENAME); } private String getLocalFileContents() { return getPropertyAsString(INPUT_DATA); } public boolean isBinaryMode(){ return getPropertyAsBoolean(BINARY_MODE,false); } public boolean isSaveResponse(){ return getPropertyAsBoolean(SAVE_RESPONSE,false); } public boolean isUpload(){ return getPropertyAsBoolean(UPLOAD_FILE,false); } /** * Returns a formatted string label describing this sampler Example output: * ftp://ftp.nowhere.com/pub/README.txt * * @return a formatted string label describing this sampler */ public String getLabel() { StringBuilder sb = new StringBuilder(); sb.append("ftp://");// $NON-NLS-1$ sb.append(getServer()); String port = getPort(); if (port.length() > 0){ sb.append(':'); sb.append(port); } sb.append("/");// $NON-NLS-1$ sb.append(getRemoteFilename()); sb.append(isBinaryMode() ? " (Binary) " : " (Ascii) ");// $NON-NLS-1$ $NON-NLS-2$ sb.append(isUpload() ? " <- " : " -> "); // $NON-NLS-1$ $NON-NLS-2$ sb.append(getLocalFilename()); return sb.toString(); } public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); res.setSuccessful(false); // Assume failure String remote = getRemoteFilename(); String local = getLocalFilename(); boolean binaryTransfer = isBinaryMode(); res.setSampleLabel(getName()); final String label = getLabel(); res.setSamplerData(label); try { res.setURL(new URL(label)); } catch (MalformedURLException e1) { log.warn("Cannot set URL: "+e1.getLocalizedMessage()); } InputStream input = null; OutputStream output = null; res.sampleStart(); FTPClient ftp = new FTPClient(); try { savedClient = ftp; final int port = getPortAsInt(); if (port > 0){ ftp.connect(getServer(),port); } else { ftp.connect(getServer()); } res.latencyEnd(); int reply = ftp.getReplyCode(); if (FTPReply.isPositiveCompletion(reply)) { if (ftp.login( getUsername(), getPassword())){ if (binaryTransfer) { ftp.setFileType(FTP.BINARY_FILE_TYPE); } ftp.enterLocalPassiveMode();// should probably come from the setup dialog boolean ftpOK=false; if (isUpload()) { String contents=getLocalFileContents(); if (contents.length() > 0){ byte bytes[] = contents.getBytes(); // TODO - charset? input = new ByteArrayInputStream(bytes); res.setBytes(bytes.length); } else { File infile = new File(local); res.setBytes((int)infile.length()); input = new BufferedInputStream(new FileInputStream(infile)); } ftpOK = ftp.storeFile(remote, input); } else { final boolean saveResponse = isSaveResponse(); ByteArrayOutputStream baos=null; // No need to close this OutputStream target=null; // No need to close this if (saveResponse){ baos = new ByteArrayOutputStream(); target=baos; } if (local.length()>0){ output=new FileOutputStream(local); if (target==null) { target=output; } else { target = new TeeOutputStream(output,baos); } } if (target == null){ target=new NullOutputStream(); } input = ftp.retrieveFileStream(remote); if (input == null){// Could not access file or other error res.setResponseCode(Integer.toString(ftp.getReplyCode())); res.setResponseMessage(ftp.getReplyString()); } else { long bytes = IOUtils.copy(input,target); ftpOK = bytes > 0; if (saveResponse && baos != null){ res.setResponseData(baos.toByteArray()); if (!binaryTransfer) { res.setDataType(SampleResult.TEXT); } } else { res.setBytes((int) bytes); } } } if (ftpOK) { res.setResponseCodeOK(); res.setResponseMessageOK(); res.setSuccessful(true); } else { res.setResponseCode(Integer.toString(ftp.getReplyCode())); res.setResponseMessage(ftp.getReplyString()); } } else { res.setResponseCode(Integer.toString(ftp.getReplyCode())); res.setResponseMessage(ftp.getReplyString()); } } else { res.setResponseCode("501"); // TODO res.setResponseMessage("Could not connect"); //res.setResponseCode(Integer.toString(ftp.getReplyCode())); res.setResponseMessage(ftp.getReplyString()); } } catch (IOException ex) { res.setResponseCode("000"); // TODO res.setResponseMessage(ex.toString()); } finally { savedClient = null; if (ftp.isConnected()) { try { ftp.logout(); } catch (IOException ignored) { } try { ftp.disconnect(); } catch (IOException ignored) { } } IOUtils.closeQuietly(input); IOUtils.closeQuietly(output); } res.sampleEnd(); return res; } /** {@inheritDoc} */ public boolean interrupt() { FTPClient client = savedClient; if (client != null) { savedClient = null; try { client.abort(); } catch (IOException ignored) { } try { client.disconnect(); } catch (IOException ignored) { } } return client != null; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/control/0000755000175000017500000000000012032647216026254 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/control/gui/0000755000175000017500000000000012165514773027050 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ftp/org/apache/jmeter/protocol/ftp/control/gui/FtpTestSamplerGui.java0000644000175000017500000000615312032647216033272 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ftp.control.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import org.apache.jmeter.config.gui.LoginConfigGui; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.ftp.config.gui.FtpConfigGui; import org.apache.jmeter.protocol.ftp.sampler.FTPSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class FtpTestSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private LoginConfigGui loginPanel; private FtpConfigGui ftpDefaultPanel; public FtpTestSamplerGui() { init(); } @Override public void configure(TestElement element) { super.configure(element); loginPanel.configure(element); ftpDefaultPanel.configure(element); } public TestElement createTestElement() { FTPSampler sampler = new FTPSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement sampler) { sampler.clear(); ftpDefaultPanel.modifyTestElement(sampler); loginPanel.modifyTestElement(sampler); this.configureTestElement(sampler); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); ftpDefaultPanel.clearGui(); loginPanel.clearGui(); } public String getLabelResource() { return "ftp_testing_title"; // $NON-NLS-1$ } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); VerticalPanel mainPanel = new VerticalPanel(); ftpDefaultPanel = new FtpConfigGui(false); mainPanel.add(ftpDefaultPanel); loginPanel = new LoginConfigGui(false); loginPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("login_config"))); // $NON-NLS-1$ mainPanel.add(loginPanel); add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/protocol/jms/0000755000175000017500000000000012032647216016644 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/0000755000175000017500000000000012032647216017433 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/0000755000175000017500000000000012032647216020654 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/0000755000175000017500000000000012032647216022142 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024003 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/0000755000175000017500000000000012165514773024604 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/0000755000175000017500000000000012165514773026247 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/Receiver.java0000644000175000017500000001251412032647216030651 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.sampler; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.Session; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.protocol.jms.Utils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Receiver of pseudo-synchronous reply messages. * */ public final class Receiver implements Runnable { private static final Logger log = LoggingManager.getLoggerForClass(); private volatile boolean active; private final Session session; private final MessageConsumer consumer; private final Connection conn; private final boolean useResMsgIdAsCorrelId; /** * Constructor * @param factory * @param receiveQueue Receive Queue * @param principal Username * @param credentials Password * @param useResMsgIdAsCorrelId * @param jmsSelector JMS Selector * @throws JMSException */ private Receiver(ConnectionFactory factory, Destination receiveQueue, String principal, String credentials, boolean useResMsgIdAsCorrelId, String jmsSelector) throws JMSException { if (null != principal && null != credentials) { log.info("creating receiver WITH authorisation credentials. UseResMsgId="+useResMsgIdAsCorrelId); conn = factory.createConnection(principal, credentials); }else{ log.info("creating receiver without authorisation credentials. UseResMsgId="+useResMsgIdAsCorrelId); conn = factory.createConnection(); } session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); if(log.isDebugEnabled()) { log.debug("Receiver - ctor. Creating consumer with JMS Selector:"+jmsSelector); } if(StringUtils.isEmpty(jmsSelector)) { consumer = session.createConsumer(receiveQueue); } else { consumer = session.createConsumer(receiveQueue, jmsSelector); } this.useResMsgIdAsCorrelId = useResMsgIdAsCorrelId; log.debug("Receiver - ctor. Starting connection now"); conn.start(); log.info("Receiver - ctor. Connection to messaging system established"); } /** * Create a receiver to process responses. * * @param factory * @param receiveQueue * @param principal * @param credentials * @param useResMsgIdAsCorrelId true if should use JMSMessageId, false if should use JMSCorrelationId * @param jmsSelector JMS selector * @return the Receiver which will process the responses * @throws JMSException */ public static Receiver createReceiver(ConnectionFactory factory, Destination receiveQueue, String principal, String credentials, boolean useResMsgIdAsCorrelId, String jmsSelector) throws JMSException { Receiver receiver = new Receiver(factory, receiveQueue, principal, credentials, useResMsgIdAsCorrelId, jmsSelector); Thread thread = new Thread(receiver, Thread.currentThread().getName()+"-JMS-Receiver"); thread.start(); return receiver; } public void run() { active = true; Message reply; while (active) { reply = null; try { reply = consumer.receive(5000); if (reply != null) { String messageKey; final MessageAdmin admin = MessageAdmin.getAdmin(); if (useResMsgIdAsCorrelId){ messageKey = reply.getJMSMessageID(); synchronized (admin) {// synchronize with FixedQueueExecutor admin.putReply(messageKey, reply); } } else { messageKey = reply.getJMSCorrelationID(); if (messageKey == null) {// JMSMessageID cannot be null log.warn("Received message with correlation id null. Discarding message ..."); } else { admin.putReply(messageKey, reply); } } } } catch (JMSException e1) { log.error("Error handling receive",e1); } } Utils.close(consumer, log); Utils.close(session, log); Utils.close(conn, log); } public void deactivate() { active = false; } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/QueueExecutor.java0000644000175000017500000000261212032647216031706 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.sampler; import javax.jms.JMSException; import javax.jms.Message; /** * Executor for (pseudo) synchronous communication.
        * Created on: October 28, 2004 * * @version $Revision: 1377070 $ */ public interface QueueExecutor { /** * Sends and receives a message. * * @param request * the message to send * @return the received message or null * @throws JMSException * in case of an exception from the messaging system */ Message sendAndReceive(Message request) throws JMSException; }././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/TemporaryQueueExecutor.javaapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/TemporaryQueueExecutor.jav0000644000175000017500000000353112032647216033451 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.sampler; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Queue; import javax.jms.QueueRequestor; import javax.jms.QueueSession; /** * Request/reply executor with a temporary reply queue.
        * * Used by JMS Sampler (Point to Point) * * Created on: October 28, 2004 * * @version $Revision: 908219 $ */ public class TemporaryQueueExecutor implements QueueExecutor { /** The sender and receiver. */ private final QueueRequestor requestor; /** * Constructor. * * @param session * the session to use to send the message * @param destination * the queue to send the message on * @throws JMSException */ public TemporaryQueueExecutor(QueueSession session, Queue destination) throws JMSException { requestor = new QueueRequestor(session, destination); } /** * {@inheritDoc} */ public Message sendAndReceive(Message request) throws JMSException { return requestor.request(request); } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java0000644000175000017500000004033112032647216032532 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.jms.sampler; import java.util.Enumeration; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.TextMessage; import javax.naming.NamingException; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.protocol.jms.Utils; import org.apache.jmeter.protocol.jms.client.InitialContextFactory; import org.apache.jmeter.protocol.jms.client.ReceiveSubscriber; import org.apache.jmeter.protocol.jms.control.gui.JMSSubscriberGui; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This class implements the JMS Subscriber sampler. * It supports both receive and onMessage strategies via the ReceiveSubscriber class. * */ // TODO: do we need to implement any kind of connection pooling? // If so, which connections should be shared? // Should threads share connections to the same destination? // What about cross-thread sharing? // Note: originally the code did use the ClientPool to "share" subscribers, however since the // key was "this" and each sampler is unique - nothing was actually shared. public class SubscriberSampler extends BaseJMSSampler implements Interruptible, ThreadListener, TestStateListener { private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); // Default wait (ms) for a message if timeouts are not enabled // This is the maximum time the sampler can be blocked. private static final long DEFAULT_WAIT = 500L; // No need to synch/ - only used by sampler and ClientPool (which does its own synch) private transient ReceiveSubscriber SUBSCRIBER = null; private transient volatile boolean interrupted = false; private transient long timeout; private transient boolean useReceive; // This will be null if initialization succeeds. private transient Exception exceptionDuringInit; // If true, start/stop subscriber for each sample private transient boolean stopBetweenSamples; // Don't change the string, as it is used in JMX files private static final String CLIENT_CHOICE = "jms.client_choice"; // $NON-NLS-1$ private static final String TIMEOUT = "jms.timeout"; // $NON-NLS-1$ private static final String TIMEOUT_DEFAULT = ""; // $NON-NLS-1$ private static final String DURABLE_SUBSCRIPTION_ID = "jms.durableSubscriptionId"; // $NON-NLS-1$ private static final String CLIENT_ID = "jms.clientId"; // $NON-NLS-1$ private static final String JMS_SELECTOR = "jms.selector"; // $NON-NLS-1$ private static final String DURABLE_SUBSCRIPTION_ID_DEFAULT = ""; private static final String CLIENT_ID_DEFAULT = ""; // $NON-NLS-1$ private static final String JMS_SELECTOR_DEFAULT = ""; // $NON-NLS-1$ private static final String STOP_BETWEEN = "jms.stop_between_samples"; // $NON-NLS-1$ private static final String SEPARATOR = "jms.separator"; // $NON-NLS-1$ private static final String SEPARATOR_DEFAULT = ""; // $NON-NLS-1$ private transient boolean START_ON_SAMPLE = false; private transient String separator; public SubscriberSampler() { super(); } /** * Create the OnMessageSubscriber client and set the sampler as the message * listener. * @throws JMSException * @throws NamingException * */ private void initListenerClient() throws JMSException, NamingException { SUBSCRIBER = new ReceiveSubscriber(0, getUseJNDIPropertiesAsBoolean(), getJNDIInitialContextFactory(), getProviderUrl(), getConnectionFactory(), getDestination(), getDurableSubscriptionId(), getClientId(), getJmsSelector(), isUseAuth(), getUsername(), getPassword()); setupSeparator(); log.debug("SubscriberSampler.initListenerClient called"); } /** * Create the ReceiveSubscriber client for the sampler. * @throws NamingException * @throws JMSException */ private void initReceiveClient() throws NamingException, JMSException { SUBSCRIBER = new ReceiveSubscriber(getUseJNDIPropertiesAsBoolean(), getJNDIInitialContextFactory(), getProviderUrl(), getConnectionFactory(), getDestination(), getDurableSubscriptionId(), getClientId(), getJmsSelector(), isUseAuth(), getUsername(), getPassword()); setupSeparator(); log.debug("SubscriberSampler.initReceiveClient called"); } /** * sample method will check which client it should use and call the * appropriate client specific sample method. * * @return the appropriate sample result */ // TODO - should we call start() and stop()? @Override public SampleResult sample() { // run threadStarted only if Destination setup on each sample if (!isDestinationStatic()) { threadStarted(true); } SampleResult result = new SampleResult(); result.setDataType(SampleResult.TEXT); result.setSampleLabel(getName()); result.sampleStart(); if (exceptionDuringInit != null) { result.sampleEnd(); result.setSuccessful(false); result.setResponseCode("000"); result.setResponseMessage(exceptionDuringInit.toString()); return result; } if (stopBetweenSamples){ // If so, we need to start collection here try { SUBSCRIBER.start(); } catch (JMSException e) { log.warn("Problem starting subscriber", e); } } StringBuilder buffer = new StringBuilder(); StringBuilder propBuffer = new StringBuilder(); int loop = getIterationCount(); int read = 0; long until = 0L; long now = System.currentTimeMillis(); if (timeout > 0) { until = timeout + now; } while (!interrupted && (until == 0 || now < until) && read < loop) { Message msg; try { msg = SUBSCRIBER.getMessage(calculateWait(until, now)); if (msg != null){ read++; extractContent(buffer, propBuffer, msg, (read == loop)); } } catch (JMSException e) { log.warn("Error "+e.toString()); } now = System.currentTimeMillis(); } result.sampleEnd(); result.setResponseMessage(read + " samples messages received"); if (getReadResponseAsBoolean()) { result.setResponseData(buffer.toString().getBytes()); // TODO - charset? } else { result.setBytes(buffer.toString().getBytes().length); // TODO - charset? } result.setResponseHeaders(propBuffer.toString()); if (read == 0) { result.setResponseCode("404"); // Not found result.setSuccessful(false); } else { // TODO set different status if not enough messages found? result.setResponseCodeOK(); result.setSuccessful(true); } result.setResponseMessage(read + " message(s) received successfully"); result.setSamplerData(loop + " messages expected"); result.setSampleCount(read); if (stopBetweenSamples){ try { SUBSCRIBER.stop(); } catch (JMSException e) { log.warn("Problem stopping subscriber", e); } } // run threadFinished only if Destination setup on each sample (stop Listen queue) if (!isDestinationStatic()) { threadFinished(true); } return result; } /** * Calculate the wait time, will never be more than DEFAULT_WAIT. * * @param until target end time or 0 if timeouts not active * @param now current time * @return wait time */ private long calculateWait(long until, long now) { if (until == 0) return DEFAULT_WAIT; // Timeouts not active long wait = until - now; // How much left return wait > DEFAULT_WAIT ? DEFAULT_WAIT : wait; } private void extractContent(StringBuilder buffer, StringBuilder propBuffer, Message msg, boolean isLast) { if (msg != null) { try { if (msg instanceof TextMessage){ buffer.append(((TextMessage) msg).getText()); } else if (msg instanceof MapMessage){ MapMessage mapm = (MapMessage) msg; @SuppressWarnings("unchecked") // MapNames are Strings Enumeration enumb = mapm.getMapNames(); while(enumb.hasMoreElements()){ String name = enumb.nextElement(); Object obj = mapm.getObject(name); buffer.append(name); buffer.append(","); buffer.append(obj.getClass().getCanonicalName()); buffer.append(","); buffer.append(obj); buffer.append("\n"); } } Utils.messageProperties(propBuffer, msg); if(!isLast && !StringUtils.isEmpty(separator)) { propBuffer.append(separator); buffer.append(separator); } } catch (JMSException e) { log.error(e.getMessage()); } } } /** * Initialise the thread-local variables. *
        * {@inheritDoc} */ public void threadStarted() { // Disabled thread start if listen on sample choice if (isDestinationStatic() || START_ON_SAMPLE) { timeout = getTimeoutAsLong(); interrupted = false; exceptionDuringInit = null; useReceive = getClientChoice().equals(JMSSubscriberGui.RECEIVE_RSC); stopBetweenSamples = isStopBetweenSamples(); if (useReceive) { try { initReceiveClient(); if (!stopBetweenSamples){ // Don't start yet if stop between samples SUBSCRIBER.start(); } } catch (NamingException e) { exceptionDuringInit = e; } catch (JMSException e) { exceptionDuringInit = e; } } else { try { initListenerClient(); if (!stopBetweenSamples){ // Don't start yet if stop between samples SUBSCRIBER.start(); } } catch (JMSException e) { exceptionDuringInit = e; } catch (NamingException e) { exceptionDuringInit = e; } } if (exceptionDuringInit != null){ log.error("Could not initialise client",exceptionDuringInit); } } } public void threadStarted(boolean wts) { if (wts) { START_ON_SAMPLE = true; // listen on sample } threadStarted(); } /** * Close subscriber. *
        * {@inheritDoc} */ public void threadFinished() { if (SUBSCRIBER != null){ // Can be null if init fails SUBSCRIBER.close(); } } public void threadFinished(boolean wts) { if (wts) { START_ON_SAMPLE = false; // listen on sample } threadFinished(); } /** * Handle an interrupt of the test. */ public boolean interrupt() { boolean oldvalue = interrupted; interrupted = true; // so we break the loops in SampleWithListener and SampleWithReceive return !oldvalue; } // ----------- get/set methods ------------------- // /** * Set the client choice. There are two options: ReceiveSusbscriber and * OnMessageSubscriber. */ public void setClientChoice(String choice) { setProperty(CLIENT_CHOICE, choice); } /** * Return the client choice. * * @return the client choice, either RECEIVE_RSC or ON_MESSAGE_RSC */ public String getClientChoice() { String choice = getPropertyAsString(CLIENT_CHOICE); // Convert the old test plan entry (which is the language dependent string) to the resource name if (choice.equals(RECEIVE_STR)){ choice = JMSSubscriberGui.RECEIVE_RSC; } else if (!choice.equals(JMSSubscriberGui.RECEIVE_RSC)){ choice = JMSSubscriberGui.ON_MESSAGE_RSC; } return choice; } public String getTimeout(){ return getPropertyAsString(TIMEOUT, TIMEOUT_DEFAULT); } public long getTimeoutAsLong(){ return getPropertyAsLong(TIMEOUT, 0L); } public void setTimeout(String timeout){ setProperty(TIMEOUT, timeout, TIMEOUT_DEFAULT); } public String getDurableSubscriptionId(){ return getPropertyAsString(DURABLE_SUBSCRIPTION_ID); } /** * @return JMS Client ID */ public String getClientId() { return getPropertyAsString(CLIENT_ID, CLIENT_ID_DEFAULT); } /** * @return JMS selector */ public String getJmsSelector() { return getPropertyAsString(JMS_SELECTOR, JMS_SELECTOR_DEFAULT); } public void setDurableSubscriptionId(String durableSubscriptionId){ setProperty(DURABLE_SUBSCRIPTION_ID, durableSubscriptionId, DURABLE_SUBSCRIPTION_ID_DEFAULT); } /** * @param clientId JMS CLient id */ public void setClientID(String clientId) { setProperty(CLIENT_ID, clientId, CLIENT_ID_DEFAULT); } /** * @param jmsSelector JMS Selector */ public void setJmsSelector(String jmsSelector) { setProperty(JMS_SELECTOR, jmsSelector, JMS_SELECTOR_DEFAULT); } /** * @return Separator for sampler results */ public String getSeparator() { return getPropertyAsString(SEPARATOR, SEPARATOR_DEFAULT); } /** * Separator for sampler results * @param text */ public void setSeparator(String text) { setProperty(SEPARATOR, text, SEPARATOR_DEFAULT); } // This was the old value that was checked for private static final String RECEIVE_STR = JMeterUtils.getResString(JMSSubscriberGui.RECEIVE_RSC); // $NON-NLS-1$ public boolean isStopBetweenSamples() { return getPropertyAsBoolean(STOP_BETWEEN, false); } public void setStopBetweenSamples(boolean selected) { setProperty(STOP_BETWEEN, selected, false); } /** * {@inheritDoc} */ public void testEnded() { InitialContextFactory.close(); } /** * {@inheritDoc} */ public void testEnded(String host) { testEnded(); } /** * {@inheritDoc} */ public void testStarted() { testStarted(""); } /** * {@inheritDoc} */ public void testStarted(String host) { // NOOP } /** * */ private void setupSeparator() { separator = getSeparator(); separator = separator.replace("\\t", "\t"); separator = separator.replace("\\n", "\n"); separator = separator.replace("\\r", "\r"); } }apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java0000644000175000017500000002546612032647216031667 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.jms.sampler; import java.util.Date; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; /** * * BaseJMSSampler is an abstract class which provides implementation for common * properties. Rather than duplicate the code, it's contained in the base class. */ public abstract class BaseJMSSampler extends AbstractSampler { private static final long serialVersionUID = 240L; //++ These are JMX file attribute names and must not be changed private static final String JNDI_INITIAL_CONTEXT_FAC = "jms.initial_context_factory"; // $NON-NLS-1$ private static final String PROVIDER_URL = "jms.provider_url"; // $NON-NLS-1$ private static final String CONN_FACTORY = "jms.connection_factory"; // $NON-NLS-1$ // N.B. Cannot change value, as that is used in JMX files private static final String DEST = "jms.topic"; // $NON-NLS-1$ private static final String PRINCIPAL = "jms.security_principle"; // $NON-NLS-1$ private static final String CREDENTIALS = "jms.security_credentials"; // $NON-NLS-1$ private static final String ITERATIONS = "jms.iterations"; // $NON-NLS-1$ private static final String USE_AUTH = "jms.authenticate"; // $NON-NLS-1$ private static final String USE_PROPERTIES_FILE = "jms.jndi_properties"; // $NON-NLS-1$ private static final String READ_RESPONSE = "jms.read_response"; // $NON-NLS-1$ // Is Destination setup static? else dynamic private static final String DESTINATION_STATIC = "jms.destination_static"; // $NON-NLS-1$ private static final boolean DESTINATION_STATIC_DEFAULT = true; // default to maintain compatibility //-- End of JMX file attribute names // See BUG 45460. We need to keep the resource in order to interpret existing files private static final String REQUIRED = JMeterUtils.getResString("jms_auth_required"); // $NON-NLS-1$ public BaseJMSSampler() { } /** * {@inheritDoc} */ public SampleResult sample(Entry e) { return this.sample(); } public abstract SampleResult sample(); // ------------- get/set properties ----------------------// /** * set the initial context factory * * @param icf */ public void setJNDIIntialContextFactory(String icf) { setProperty(JNDI_INITIAL_CONTEXT_FAC, icf); } /** * method returns the initial context factory for jndi initial context * lookup. * * @return the initial context factory */ public String getJNDIInitialContextFactory() { return getPropertyAsString(JNDI_INITIAL_CONTEXT_FAC); } /** * set the provider user for jndi * * @param url the provider URL */ public void setProviderUrl(String url) { setProperty(PROVIDER_URL, url); } /** * method returns the provider url for jndi to connect to * * @return the provider URL */ public String getProviderUrl() { return getPropertyAsString(PROVIDER_URL); } /** * set the connection factory for * * @param factory */ public void setConnectionFactory(String factory) { setProperty(CONN_FACTORY, factory); } /** * return the connection factory parameter used to lookup the connection * factory from the JMS server * * @return the connection factory */ public String getConnectionFactory() { return getPropertyAsString(CONN_FACTORY); } /** * set the destination (topic or queue name) * * @param dest the destination */ public void setDestination(String dest) { setProperty(DEST, dest); } /** * return the destination (topic or queue name) * * @return the destination */ public String getDestination() { return getPropertyAsString(DEST); } /** * set the username to login into the jms server if needed * * @param user */ public void setUsername(String user) { setProperty(PRINCIPAL, user); } /** * return the username used to login to the jms server * * @return the username used to login to the jms server */ public String getUsername() { return getPropertyAsString(PRINCIPAL); } /** * Set the password to login to the jms server * * @param pwd */ public void setPassword(String pwd) { setProperty(CREDENTIALS, pwd); } /** * return the password used to login to the jms server * * @return the password used to login to the jms server */ public String getPassword() { return getPropertyAsString(CREDENTIALS); } /** * set the number of iterations the sampler should aggregate * * @param count */ public void setIterations(String count) { setProperty(ITERATIONS, count); } /** * get the iterations as string * * @return the number of iterations */ public String getIterations() { return getPropertyAsString(ITERATIONS); } /** * return the number of iterations as int instead of string * * @return the number of iterations as int instead of string */ public int getIterationCount() { return getPropertyAsInt(ITERATIONS); } /** * Set whether authentication is required for JNDI * * @param useAuth */ public void setUseAuth(boolean useAuth) { setProperty(USE_AUTH, useAuth); } /** * return whether jndi requires authentication * * @return whether jndi requires authentication */ public boolean isUseAuth() { final String useAuth = getPropertyAsString(USE_AUTH); return useAuth.equalsIgnoreCase("true") || useAuth.equals(REQUIRED); // $NON-NLS-1$ } /** * set whether the sampler should read the response or not * * @param read whether the sampler should read the response or not */ public void setReadResponse(String read) { setProperty(READ_RESPONSE, read); } /** * return whether the sampler should read the response * * @return whether the sampler should read the response */ public String getReadResponse() { return getPropertyAsString(READ_RESPONSE); } /** * return whether the sampler should read the response as a boolean value * * @return whether the sampler should read the response as a boolean value */ public boolean getReadResponseAsBoolean() { return getPropertyAsBoolean(READ_RESPONSE); } /** * if the sampler should use jndi.properties file, call the method with true * * @param properties */ public void setUseJNDIProperties(String properties) { setProperty(USE_PROPERTIES_FILE, properties); } /** * return whether the sampler should use properties file instead of UI * parameters. * * @return whether the sampler should use properties file instead of UI parameters. */ public String getUseJNDIProperties() { return getPropertyAsString(USE_PROPERTIES_FILE); } /** * return the properties as boolean true/false. * * @return whether the sampler should use properties file instead of UI parameters. */ public boolean getUseJNDIPropertiesAsBoolean() { return getPropertyAsBoolean(USE_PROPERTIES_FILE); } /** * if the sampler should use a static destination, call the method with true * * @param isStatic */ public void setDestinationStatic(boolean isStatic) { setProperty(DESTINATION_STATIC, isStatic, DESTINATION_STATIC_DEFAULT); } /** * return whether the sampler should use a static destination. * * @return whether the sampler should use a static destination. */ public boolean isDestinationStatic(){ return getPropertyAsBoolean(DESTINATION_STATIC, DESTINATION_STATIC_DEFAULT); } /** * Returns a String with the JMS Message Header values. * * @param message JMS Message * @return String with message header values. */ public static String getMessageHeaders(Message message) { final StringBuilder response = new StringBuilder(256); try { response.append("JMS Message Header Attributes:"); response.append("\n Correlation ID: "); response.append(message.getJMSCorrelationID()); response.append("\n Delivery Mode: "); if (message.getJMSDeliveryMode() == DeliveryMode.PERSISTENT) { response.append("PERSISTANT"); } else { response.append("NON-PERSISTANT"); } final Destination destination = message.getJMSDestination(); response.append("\n Destination: "); response.append((destination == null ? null : destination .toString())); response.append("\n Expiration: "); response.append(new Date(message.getJMSExpiration())); response.append("\n Message ID: "); response.append(message.getJMSMessageID()); response.append("\n Priority: "); response.append(message.getJMSPriority()); response.append("\n Redelivered: "); response.append(message.getJMSRedelivered()); final Destination replyTo = message.getJMSReplyTo(); response.append("\n Reply to: "); response.append((replyTo == null ? null : replyTo.toString())); response.append("\n Timestamp: "); response.append(new Date(message.getJMSTimestamp())); response.append("\n Type: "); response.append(message.getJMSType()); response.append("\n\n"); } catch (JMSException e) { e.printStackTrace(); } return new String(response); } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/FixedQueueExecutor.java0000644000175000017500000000763012032647216032673 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.sampler; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Request/reply executor with a fixed reply queue.
        * * Used by JMS Sampler (Point to Point) * * Created on: October 28, 2004 * */ public class FixedQueueExecutor implements QueueExecutor { private static final Logger log = LoggingManager.getLoggerForClass(); /** Sender. */ private final MessageProducer producer; /** Timeout used for waiting on message. */ private final int timeout; private final boolean useReqMsgIdAsCorrelId; /** * Constructor. * * @param producer * the queue to send the message on * @param timeout * timeout to use for the return message * @param useReqMsgIdAsCorrelId * whether to use the request message id as the correlation id */ public FixedQueueExecutor(MessageProducer producer, int timeout, boolean useReqMsgIdAsCorrelId) { this.producer = producer; this.timeout = timeout; this.useReqMsgIdAsCorrelId = useReqMsgIdAsCorrelId; } /** * {@inheritDoc} */ public Message sendAndReceive(Message request) throws JMSException { String id = request.getJMSCorrelationID(); if(id == null && !useReqMsgIdAsCorrelId){ throw new IllegalArgumentException("Correlation id is null. Set the JMSCorrelationID header."); } final CountDownLatch countDownLatch = new CountDownLatch(1); final MessageAdmin admin = MessageAdmin.getAdmin(); if(useReqMsgIdAsCorrelId) {// msgId not available until after send() is called // Note: there is only one admin object which is shared between all threads synchronized (admin) {// interlock with Receiver producer.send(request); id=request.getJMSMessageID(); admin.putRequest(id, request, countDownLatch); } } else { admin.putRequest(id, request, countDownLatch); producer.send(request); } try { if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName()+" will wait for reply " + id + " started on " + System.currentTimeMillis()); } // This used to be request.wait(timeout_ms), where 0 means forever // However 0 means return immediately for the latch if (timeout == 0){ countDownLatch.await(); // } else { countDownLatch.await(timeout, TimeUnit.MILLISECONDS); } if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName()+" done waiting for " + id + " on "+request+" ended on " + System.currentTimeMillis()); } } catch (InterruptedException e) { log.warn("Interrupt exception caught", e); } return admin.get(id); } }apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java0000644000175000017500000004063512032647216032373 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.jms.sampler; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import javax.jms.JMSException; import javax.jms.Message; import javax.naming.NamingException; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.jms.Utils; import org.apache.jmeter.protocol.jms.client.ClientPool; import org.apache.jmeter.protocol.jms.client.InitialContextFactory; import org.apache.jmeter.protocol.jms.client.Publisher; import org.apache.jmeter.protocol.jms.control.gui.JMSPublisherGui; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.services.FileServer; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.io.TextFile; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import com.thoughtworks.xstream.XStream; /** * This class implements the JMS Publisher sampler. */ public class PublisherSampler extends BaseJMSSampler implements TestStateListener { private static final long serialVersionUID = 233L; private static final Logger log = LoggingManager.getLoggerForClass(); //++ These are JMX file names and must not be changed private static final String INPUT_FILE = "jms.input_file"; //$NON-NLS-1$ private static final String RANDOM_PATH = "jms.random_path"; //$NON-NLS-1$ private static final String TEXT_MSG = "jms.text_message"; //$NON-NLS-1$ private static final String CONFIG_CHOICE = "jms.config_choice"; //$NON-NLS-1$ private static final String MESSAGE_CHOICE = "jms.config_msg_type"; //$NON-NLS-1$ private static final String NON_PERSISTENT_DELIVERY = "jms.non_persistent"; //$NON-NLS-1$ private static final String JMS_PROPERTIES = "jms.jmsProperties"; // $NON-NLS-1$ //-- // Does not need to be synch. because it is only accessed from the sampler thread // The ClientPool does access it in a different thread, but ClientPool is fully synch. private transient Publisher publisher = null; private static final FileServer FSERVER = FileServer.getFileServer(); // Cache for file. Only used by sample() in a single thread private String file_contents = null; // Cache for object-message, only used when parsing from a file because in text-area // property replacement might have been used private Serializable object_msg_file_contents = null; public PublisherSampler() { } /** * the implementation calls testStarted() without any parameters. */ public void testStarted(String test) { testStarted(); } /** * the implementation calls testEnded() without any parameters. */ public void testEnded(String host) { testEnded(); } /** * endTest cleans up the client */ public void testEnded() { log.debug("PublisherSampler.testEnded called"); ClientPool.clearClient(); InitialContextFactory.close(); } public void testStarted() { } /** * initialize the Publisher client. * @throws JMSException * @throws NamingException * */ private void initClient() throws JMSException, NamingException { publisher = new Publisher(getUseJNDIPropertiesAsBoolean(), getJNDIInitialContextFactory(), getProviderUrl(), getConnectionFactory(), getDestination(), isUseAuth(), getUsername(), getPassword(), isDestinationStatic(), getUseNonPersistentDelivery()); ClientPool.addClient(publisher); log.debug("PublisherSampler.initClient called"); } /** * The implementation will publish n messages within a for loop. Once n * messages are published, it sets the attributes of SampleResult. * * @return the populated sample result */ @Override public SampleResult sample() { SampleResult result = new SampleResult(); result.setSampleLabel(getName()); result.setSuccessful(false); // Assume it will fail result.setResponseCode("000"); // ditto $NON-NLS-1$ if (publisher == null) { try { initClient(); } catch (JMSException e) { result.setResponseMessage(e.toString()); return result; } catch (NamingException e) { result.setResponseMessage(e.toString()); return result; } } StringBuilder buffer = new StringBuilder(); StringBuilder propBuffer = new StringBuilder(); int loop = getIterationCount(); result.sampleStart(); String type = getMessageChoice(); try { for (int idx = 0; idx < loop; idx++) { if (JMSPublisherGui.TEXT_MSG_RSC.equals(type)){ String tmsg = getMessageContent(); Message msg = publisher.publish(tmsg, getDestination(), getJMSProperties().getArgumentsAsMap()); buffer.append(tmsg); Utils.messageProperties(propBuffer, msg); } else if (JMSPublisherGui.MAP_MSG_RSC.equals(type)){ Map m = getMapContent(); Message msg = publisher.publish(m, getDestination(), getJMSProperties().getArgumentsAsMap()); Utils.messageProperties(propBuffer, msg); } else if (JMSPublisherGui.OBJECT_MSG_RSC.equals(type)){ Serializable omsg = getObjectContent(); Message msg = publisher.publish(omsg, getDestination(), getJMSProperties().getArgumentsAsMap()); Utils.messageProperties(propBuffer, msg); } else { throw new JMSException(type+ " is not recognised"); } } result.setResponseCodeOK(); result.setResponseMessage(loop + " messages published"); result.setSuccessful(true); result.setSamplerData(buffer.toString()); result.setSampleCount(loop); result.setRequestHeaders(propBuffer.toString()); } catch (Exception e) { result.setResponseMessage(e.toString()); } finally { result.sampleEnd(); } return result; } private Map getMapContent() throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException { Map m = new HashMap(); String text = getMessageContent(); String[] lines = text.split("\n"); for (String line : lines){ String[] parts = line.split(",",3); if (parts.length != 3) { throw new IllegalArgumentException("line must have 3 parts: "+line); } String name = parts[0]; String type = parts[1]; if (!type.contains(".")){// Allow shorthand names type = "java.lang."+type; } String value = parts[2]; Object obj; if (type.equals("java.lang.String")){ obj = value; } else { Class clazz = Class.forName(type); Method method = clazz.getMethod("valueOf", new Class[]{String.class}); obj = method.invoke(clazz, value); } m.put(name, obj); } return m; } /** * Method will check the setting and get the contents for the message. * * @return the contents for the message */ private String getMessageContent() { if (getConfigChoice().equals(JMSPublisherGui.USE_FILE_RSC)) { // in the case the test uses a file, we set it locally and // prevent loading the file repeatedly if (file_contents == null) { file_contents = getFileContent(getInputFile()); } return file_contents; } else if (getConfigChoice().equals(JMSPublisherGui.USE_RANDOM_RSC)) { // Maybe we should consider creating a global cache for the // random files to make JMeter more efficient. String fname = FSERVER.getRandomFile(getRandomPath(), new String[] { ".txt", ".obj" }) .getAbsolutePath(); return getFileContent(fname); } else { return getTextMessage(); } } /** * The implementation uses TextFile to load the contents of the file and * returns a string. * * @param path * @return the contents of the file */ public String getFileContent(String path) { TextFile tf = new TextFile(path); return tf.getText(); } /** * This method will load the contents for the JMS Object Message. * The contents are either loaded from file (might be cached), random file * or from the GUI text-area. * * @return Serialized object as loaded from the specified input file */ private Serializable getObjectContent() { if (getConfigChoice().equals(JMSPublisherGui.USE_FILE_RSC)) { // in the case the test uses a file, we set it locally and // prevent loading the file repeatedly if (object_msg_file_contents == null) { object_msg_file_contents = getFileObjectContent(getInputFile()); } return object_msg_file_contents; } else if (getConfigChoice().equals(JMSPublisherGui.USE_RANDOM_RSC)) { // Maybe we should consider creating a global cache for the // random files to make JMeter more efficient. final String fname = FSERVER.getRandomFile(getRandomPath(), new String[] {".txt", ".obj"}) .getAbsolutePath(); return getFileObjectContent(fname); } else { final String xmlMessage = getTextMessage(); return transformXmlToObjectMessage(xmlMessage); } } /** * Try to load an object from a provided file, so that it can be used as body * for a JMS message. * An {@link IllegalStateException} will be thrown if loading the object fails. * * @param path Path to the file that will be serialized * @return Serialized object instance */ private static Serializable getFileObjectContent(final String path) { Serializable readObject = null; InputStream inputStream = null; try { inputStream = new BufferedInputStream(new FileInputStream(path)); XStream xstream = new XStream(); readObject = (Serializable) xstream.fromXML(inputStream, readObject); } catch (Exception e) { log.error(e.getLocalizedMessage(), e); throw new IllegalStateException("Unable to load object instance from file", e); } finally { JOrphanUtils.closeQuietly(inputStream); } return readObject; } /** * Try to load an object via XStream from XML text, so that it can be used as body * for a JMS message. * An {@link IllegalStateException} will be thrown if transforming the XML to an object fails. * * @param xmlMessage String containing XML text as input for the transformation * @return Serialized object instance */ private static Serializable transformXmlToObjectMessage(final String xmlMessage) { Serializable readObject = null; try { XStream xstream = new XStream(); readObject = (Serializable) xstream.fromXML(xmlMessage, readObject); } catch (Exception e) { log.error(e.getLocalizedMessage(), e); throw new IllegalStateException("Unable to load object instance from text", e); } return readObject; } // ------------- get/set properties ----------------------// /** * set the source of the message * * @param choice */ public void setConfigChoice(String choice) { setProperty(CONFIG_CHOICE, choice); } // These static variables are only used to convert existing files private static final String USE_FILE_LOCALNAME = JMeterUtils.getResString(JMSPublisherGui.USE_FILE_RSC); private static final String USE_RANDOM_LOCALNAME = JMeterUtils.getResString(JMSPublisherGui.USE_RANDOM_RSC); /** * return the source of the message * Converts from old JMX files which used the local language string */ public String getConfigChoice() { // Allow for the old JMX file which used the local language string String config = getPropertyAsString(CONFIG_CHOICE); if (config.equals(USE_FILE_LOCALNAME) || config.equals(JMSPublisherGui.USE_FILE_RSC)){ return JMSPublisherGui.USE_FILE_RSC; } if (config.equals(USE_RANDOM_LOCALNAME) || config.equals(JMSPublisherGui.USE_RANDOM_RSC)){ return JMSPublisherGui.USE_RANDOM_RSC; } return config; // will be the 3rd option, which is not checked specifically } /** * set the type of the message * * @param choice */ public void setMessageChoice(String choice) { setProperty(MESSAGE_CHOICE, choice); } /** * return the type of the message (Text, Object, Map) * */ public String getMessageChoice() { return getPropertyAsString(MESSAGE_CHOICE); } /** * set the input file for the publisher * * @param file */ public void setInputFile(String file) { setProperty(INPUT_FILE, file); } /** * return the path of the input file * */ public String getInputFile() { return getPropertyAsString(INPUT_FILE); } /** * set the random path for the messages * * @param path */ public void setRandomPath(String path) { setProperty(RANDOM_PATH, path); } /** * return the random path for messages * */ public String getRandomPath() { return getPropertyAsString(RANDOM_PATH); } /** * set the text for the message * * @param message */ public void setTextMessage(String message) { setProperty(TEXT_MSG, message); } /** * return the text for the message * */ public String getTextMessage() { return getPropertyAsString(TEXT_MSG); } /** * @param value boolean use NON_PERSISTENT */ public void setUseNonPersistentDelivery(boolean value) { setProperty(NON_PERSISTENT_DELIVERY, value, false); } /** * @return true if NON_PERSISTENT delivery must be used */ public boolean getUseNonPersistentDelivery() { return getPropertyAsBoolean(NON_PERSISTENT_DELIVERY, false); } public void setArguments(Arguments args) { setProperty(new TestElementProperty(JMS_PROPERTIES, args)); } public Arguments getArguments(String name) { return (Arguments) getProperty(name).getObjectValue(); } /** * @return Arguments JMS Properties */ public Arguments getJMSProperties() { Arguments arguments = getArguments(JMS_PROPERTIES); if(arguments == null) { arguments = new Arguments(); setArguments(arguments); } return arguments; } /** * @param args Arguments JMS Properties */ public void setJMSProperties(Arguments args) { setProperty(new TestElementProperty(JMS_PROPERTIES, args)); } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java0000644000175000017500000004376712032647216031100 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.protocol.jms.sampler; import java.util.Date; import java.util.Enumeration; import java.util.Hashtable; import java.util.Map; import javax.jms.DeliveryMode; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.jms.QueueSender; import javax.jms.QueueSession; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.jms.Utils; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.ThreadListener; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This class implements the JMS Point-to-Point sampler * */ public class JMSSampler extends AbstractSampler implements ThreadListener { private static final Logger LOGGER = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 233L; private static final int DEFAULT_TIMEOUT = 2000; private static final String DEFAULT_TIMEOUT_STRING = Integer.toString(DEFAULT_TIMEOUT); //++ These are JMX names, and must not be changed private static final String JNDI_INITIAL_CONTEXT_FACTORY = "JMSSampler.initialContextFactory"; // $NON-NLS-1$ private static final String JNDI_CONTEXT_PROVIDER_URL = "JMSSampler.contextProviderUrl"; // $NON-NLS-1$ private static final String JNDI_PROPERTIES = "JMSSampler.jndiProperties"; // $NON-NLS-1$ private static final String TIMEOUT = "JMSSampler.timeout"; // $NON-NLS-1$ private static final String JMS_SELECTOR = "JMSSampler.jmsSelector"; // $NON-NLS-1$ private static final String JMS_SELECTOR_DEFAULT = ""; // $NON-NLS-1$ private static final String IS_ONE_WAY = "JMSSampler.isFireAndForget"; // $NON-NLS-1$ private static final String JMS_PROPERTIES = "arguments"; // $NON-NLS-1$ private static final String RECEIVE_QUEUE = "JMSSampler.ReceiveQueue"; // $NON-NLS-1$ private static final String XML_DATA = "HTTPSamper.xml_data"; // $NON-NLS-1$ private static final String SEND_QUEUE = "JMSSampler.SendQueue"; // $NON-NLS-1$ private static final String QUEUE_CONNECTION_FACTORY_JNDI = "JMSSampler.queueconnectionfactory"; // $NON-NLS-1$ private static final String IS_NON_PERSISTENT = "JMSSampler.isNonPersistent"; // $NON-NLS-1$ private static final String USE_REQ_MSGID_AS_CORRELID = "JMSSampler.useReqMsgIdAsCorrelId"; // $NON-NLS-1$ private static final String USE_RES_MSGID_AS_CORRELID = "JMSSampler.useResMsgIdAsCorrelId"; // $NON-NLS-1$ private static final boolean USE_RES_MSGID_AS_CORRELID_DEFAULT = false; // Default to be applied //-- // Should we use java.naming.security.[principal|credentials] to create the QueueConnection? private static final boolean USE_SECURITY_PROPERTIES = JMeterUtils.getPropDefault("JMSSampler.useSecurity.properties", true); // $NON-NLS-1$ // // Member variables // /** Queue for receiving messages (if applicable). */ private transient Queue receiveQueue; /** The session with the queueing system. */ private transient QueueSession session; /** Connection to the queueing system. */ private transient QueueConnection connection; /** The executor for (pseudo) synchronous communication. */ private transient QueueExecutor executor; /** Producer of the messages. */ private transient QueueSender producer; private transient Receiver receiverThread = null; private transient Throwable thrown = null; /** * {@inheritDoc} */ public SampleResult sample(Entry entry) { SampleResult res = new SampleResult(); res.setSampleLabel(getName()); res.setSamplerData(getContent()); res.setSuccessful(false); // Assume failure res.setDataType(SampleResult.TEXT); res.sampleStart(); try { TextMessage msg = createMessage(); if (isOneway()) { producer.send(msg); res.setRequestHeaders(Utils.messageProperties(msg)); res.setResponseOK(); res.setResponseData("Oneway request has no response data", null); } else { if (!useTemporyQueue()) { msg.setJMSReplyTo(receiveQueue); } Message replyMsg = executor.sendAndReceive(msg); res.setRequestHeaders(Utils.messageProperties(msg)); if (replyMsg == null) { res.setResponseMessage("No reply message received"); } else { if (replyMsg instanceof TextMessage) { res.setResponseData(((TextMessage) replyMsg).getText(), null); } else { res.setResponseData(replyMsg.toString(), null); } res.setResponseHeaders(Utils.messageProperties(replyMsg)); res.setResponseOK(); } } } catch (Exception e) { LOGGER.warn(e.getLocalizedMessage(), e); if (thrown != null){ res.setResponseMessage(thrown.toString()); } else { res.setResponseMessage(e.getLocalizedMessage()); } } res.sampleEnd(); return res; } private TextMessage createMessage() throws JMSException { if (session == null) { throw new IllegalStateException("Session may not be null while creating message"); } TextMessage msg = session.createTextMessage(); msg.setText(getContent()); addJMSProperties(msg); return msg; } private void addJMSProperties(TextMessage msg) throws JMSException { Map map = getArguments(JMSSampler.JMS_PROPERTIES).getArgumentsAsMap(); Utils.addJMSProperties(msg, map); } public Arguments getJMSProperties() { return getArguments(JMSSampler.JMS_PROPERTIES); } public void setJMSProperties(Arguments args) { setProperty(new TestElementProperty(JMSSampler.JMS_PROPERTIES, args)); } public Arguments getJNDIProperties() { return getArguments(JMSSampler.JNDI_PROPERTIES); } public void setJNDIProperties(Arguments args) { setProperty(new TestElementProperty(JMSSampler.JNDI_PROPERTIES, args)); } public String getQueueConnectionFactory() { return getPropertyAsString(QUEUE_CONNECTION_FACTORY_JNDI); } public void setQueueConnectionFactory(String qcf) { setProperty(QUEUE_CONNECTION_FACTORY_JNDI, qcf); } public String getSendQueue() { return getPropertyAsString(SEND_QUEUE); } public void setSendQueue(String name) { setProperty(SEND_QUEUE, name); } public String getReceiveQueue() { return getPropertyAsString(RECEIVE_QUEUE); } public void setReceiveQueue(String name) { setProperty(RECEIVE_QUEUE, name); } public String getContent() { return getPropertyAsString(XML_DATA); } public void setContent(String content) { setProperty(XML_DATA, content); } public boolean isOneway() { return getPropertyAsBoolean(IS_ONE_WAY); } public boolean isNonPersistent() { return getPropertyAsBoolean(IS_NON_PERSISTENT); } /** * Which request field to use for correlation? * * @return true if correlation should use the request JMSMessageID rather than JMSCorrelationID */ public boolean isUseReqMsgIdAsCorrelId() { return getPropertyAsBoolean(USE_REQ_MSGID_AS_CORRELID); } /** * Which response field to use for correlation? * * @return true if correlation should use the response JMSMessageID rather than JMSCorrelationID */ public boolean isUseResMsgIdAsCorrelId() { return getPropertyAsBoolean(USE_RES_MSGID_AS_CORRELID, USE_RES_MSGID_AS_CORRELID_DEFAULT); } public String getInitialContextFactory() { return getPropertyAsString(JMSSampler.JNDI_INITIAL_CONTEXT_FACTORY); } public String getContextProvider() { return getPropertyAsString(JMSSampler.JNDI_CONTEXT_PROVIDER_URL); } public void setIsOneway(boolean isOneway) { setProperty(new BooleanProperty(IS_ONE_WAY, isOneway)); } public void setNonPersistent(boolean value) { setProperty(new BooleanProperty(IS_NON_PERSISTENT, value)); } public void setUseReqMsgIdAsCorrelId(boolean value) { setProperty(new BooleanProperty(USE_REQ_MSGID_AS_CORRELID, value)); } public void setUseResMsgIdAsCorrelId(boolean value) { setProperty(USE_RES_MSGID_AS_CORRELID, value, USE_RES_MSGID_AS_CORRELID_DEFAULT); } @Override public String toString() { return getQueueConnectionFactory() + ", queue: " + getSendQueue(); } public void threadStarted() { logThreadStart(); Context context = null; thrown = null; try { context = getInitialContext(); Object obj = context.lookup(getQueueConnectionFactory()); if (!(obj instanceof QueueConnectionFactory)) { String msg = "QueueConnectionFactory expected, but got " + obj.getClass().getName(); LOGGER.fatalError(msg); throw new IllegalStateException(msg); } QueueConnectionFactory factory = (QueueConnectionFactory) obj; Queue sendQueue = (Queue) context.lookup(getSendQueue()); if (!useTemporyQueue()) { receiveQueue = (Queue) context.lookup(getReceiveQueue()); receiverThread = Receiver.createReceiver(factory, receiveQueue, getPrincipal(context), getCredentials(context) , isUseResMsgIdAsCorrelId(), getJMSSelector()); } String principal = null; String credentials = null; if (USE_SECURITY_PROPERTIES){ principal = getPrincipal(context); credentials = getCredentials(context); } if (principal != null && credentials != null) { connection = factory.createQueueConnection(principal, credentials); } else { connection = factory.createQueueConnection(); } session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Session created"); } if (getPropertyAsBoolean(IS_ONE_WAY)) { producer = session.createSender(sendQueue); if (isNonPersistent()) { producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); } } else { if (useTemporyQueue()) { executor = new TemporaryQueueExecutor(session, sendQueue); } else { producer = session.createSender(sendQueue); if (isNonPersistent()) { producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); } executor = new FixedQueueExecutor(producer, getTimeoutAsInt(), isUseReqMsgIdAsCorrelId()); } } if (LOGGER.isDebugEnabled()) { LOGGER.debug("Starting connection"); } connection.start(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Connection started"); } } catch (Exception e) { thrown = e; LOGGER.error(e.getLocalizedMessage(), e); } catch (NoClassDefFoundError e) { thrown = e; LOGGER.error(e.getLocalizedMessage(), e); } finally { if (context != null) { try { context.close(); } catch (NamingException ignored) { // ignore } } } } private Context getInitialContext() throws NamingException { Hashtable table = new Hashtable(); if (getInitialContextFactory() != null && getInitialContextFactory().trim().length() > 0) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Using InitialContext [" + getInitialContextFactory() + "]"); } table.put(Context.INITIAL_CONTEXT_FACTORY, getInitialContextFactory()); } if (getContextProvider() != null && getContextProvider().trim().length() > 0) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Using Provider [" + getContextProvider() + "]"); } table.put(Context.PROVIDER_URL, getContextProvider()); } Map map = getArguments(JMSSampler.JNDI_PROPERTIES).getArgumentsAsMap(); if (LOGGER.isDebugEnabled()) { if (map.isEmpty()) { LOGGER.debug("Empty JNDI properties"); } else { LOGGER.debug("Number of JNDI properties: " + map.size()); } } for (Map.Entry me : map.entrySet()) { table.put(me.getKey(), me.getValue()); } Context context = new InitialContext(table); if (LOGGER.isDebugEnabled()) { printEnvironment(context); } return context; } private void printEnvironment(Context context) throws NamingException { Hashtable env = context.getEnvironment(); LOGGER.debug("Initial Context Properties"); @SuppressWarnings("unchecked") Enumeration keys = (Enumeration) env.keys(); while (keys.hasMoreElements()) { String key = keys.nextElement(); LOGGER.debug(key + "=" + env.get(key)); } } private void logThreadStart() { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Thread started " + new Date()); LOGGER.debug("JMSSampler: [" + Thread.currentThread().getName() + "], hashCode=[" + hashCode() + "]"); LOGGER.debug("QCF: [" + getQueueConnectionFactory() + "], sendQueue=[" + getSendQueue() + "]"); LOGGER.debug("Timeout = " + getTimeout() + "]"); LOGGER.debug("Use temporary queue =" + useTemporyQueue() + "]"); LOGGER.debug("Reply queue =" + getReceiveQueue() + "]"); } } private int getTimeoutAsInt() { if (getPropertyAsInt(TIMEOUT) < 1) { return DEFAULT_TIMEOUT; } return getPropertyAsInt(TIMEOUT); } public String getTimeout() { return getPropertyAsString(TIMEOUT, DEFAULT_TIMEOUT_STRING); } /** * {@inheritDoc} */ public void threadFinished() { LOGGER.debug("Thread ended " + new Date()); Utils.close(session, LOGGER); Utils.close(connection, LOGGER); if (receiverThread != null) { receiverThread.deactivate(); } } private boolean useTemporyQueue() { String recvQueue = getReceiveQueue(); return recvQueue == null || recvQueue.trim().length() == 0; } public void setArguments(Arguments args) { setProperty(new TestElementProperty(JMSSampler.JMS_PROPERTIES, args)); } public Arguments getArguments(String name) { return (Arguments) getProperty(name).getObjectValue(); } public void setTimeout(String s) { setProperty(JMSSampler.TIMEOUT, s); } /** * @return String JMS Selector */ public String getJMSSelector() { return getPropertyAsString(JMSSampler.JMS_SELECTOR, JMS_SELECTOR_DEFAULT); } /** * @param selector String selector */ public void setJMSSelector(String selector) { setProperty(JMSSampler.JMS_SELECTOR, selector, JMS_SELECTOR_DEFAULT); } /** * @param string */ public void setInitialContextFactory(String string) { setProperty(JNDI_INITIAL_CONTEXT_FACTORY, string); } /** * @param string */ public void setContextProvider(String string) { setProperty(JNDI_CONTEXT_PROVIDER_URL, string); } /** * get the principal from the context property java.naming.security.principal * * @param context * @return * @throws NamingException */ private String getPrincipal(Context context) throws NamingException{ Hashtable env = context.getEnvironment(); return (String) env.get("java.naming.security.principal"); // $NON-NLS-1$ } /** * get the credentials from the context property java.naming.security.credentials * * @param context * @return * @throws NamingException */ private String getCredentials(Context context) throws NamingException{ Hashtable env = context.getEnvironment(); return (String) env.get("java.naming.security.credentials"); // $NON-NLS-1$ } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/MessageAdmin.java0000644000175000017500000000741112032647216031442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.sampler; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import javax.jms.Message; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Administration of messages. * */ public class MessageAdmin { private static final MessageAdmin SINGLETON = new MessageAdmin(); private final Map table = new ConcurrentHashMap(); private static final Logger log = LoggingManager.getLoggerForClass(); private MessageAdmin() { } public static MessageAdmin getAdmin() { return SINGLETON; } /** * @param request */ public void putRequest(String id, Message request, CountDownLatch latch) { if (log.isDebugEnabled()) { log.debug("REQ_ID [" + id + "]"); } table.put(id, new PlaceHolder(request, latch)); } public void putReply(String id, Message reply) { PlaceHolder holder = table.get(id); if (log.isDebugEnabled()) { log.debug("RPL_ID [" + id + "] for holder " + holder); } if (holder != null) { holder.setReply(reply); CountDownLatch latch = holder.getLatch(); if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName()+" releasing latch : " + latch); } latch.countDown(); if (log.isDebugEnabled()) { log.debug(Thread.currentThread().getName()+" released latch : " + latch); } } else { if (log.isDebugEnabled()) { log.debug("Failed to match reply: " + reply); } } } /** * Get the reply message. * * @param id * the id of the message * @return the received message or null */ public Message get(String id) { PlaceHolder holder = table.remove(id); if (log.isDebugEnabled()) { log.debug("GET_ID [" + id + "] for " + holder); } if (holder == null || !holder.hasReply()) { log.debug("Message with " + id + " not found."); } return holder==null ? null : (Message) holder.getReply(); } } class PlaceHolder { private final CountDownLatch latch; private final Object request; private Object reply; PlaceHolder(Object original, CountDownLatch latch) { this.request = original; this.latch = latch; } void setReply(Object reply) { this.reply = reply; } public Object getReply() { return reply; } public Object getRequest() { return request; } boolean hasReply() { return reply != null; } @Override public String toString() { return "request=" + request + ", reply=" + reply; } /** * @return the latch */ public CountDownLatch getLatch() { return latch; } }apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/client/0000755000175000017500000000000012165514773026062 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/client/Publisher.java0000644000175000017500000002222612032647216030656 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.client; import java.io.Closeable; import java.io.Serializable; import java.util.Map; import java.util.Map.Entry; import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.TextMessage; import javax.naming.Context; import javax.naming.NamingException; import org.apache.jmeter.protocol.jms.Utils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class Publisher implements Closeable { private static final Logger log = LoggingManager.getLoggerForClass(); private final Connection connection; private final Session session; private final MessageProducer producer; private final Context ctx; private final boolean staticDest; /** * Create a publisher using either the jndi.properties file or the provided parameters. * Uses a static destination and persistent messages(for backward compatibility) * * @param useProps true if a jndi.properties file is to be used * @param initialContextFactory the (ignored if useProps is true) * @param providerUrl (ignored if useProps is true) * @param connfactory * @param destinationName * @param useAuth (ignored if useProps is true) * @param securityPrincipal (ignored if useProps is true) * @param securityCredentials (ignored if useProps is true) * @throws JMSException if the context could not be initialised, or there was some other error * @throws NamingException */ public Publisher(boolean useProps, String initialContextFactory, String providerUrl, String connfactory, String destinationName, boolean useAuth, String securityPrincipal, String securityCredentials) throws JMSException, NamingException { this(useProps, initialContextFactory, providerUrl, connfactory, destinationName, useAuth, securityPrincipal, securityCredentials, true, false); } /** * Create a publisher using either the jndi.properties file or the provided parameters. * Uses a static destination (for backward compatibility) * * @param useProps true if a jndi.properties file is to be used * @param initialContextFactory the (ignored if useProps is true) * @param providerUrl (ignored if useProps is true) * @param connfactory * @param destinationName * @param useAuth (ignored if useProps is true) * @param securityPrincipal (ignored if useProps is true) * @param securityCredentials (ignored if useProps is true) * @param useNonPersistentMessages Flag Delivery Mode as Non persistent if true * @throws JMSException if the context could not be initialised, or there was some other error * @throws NamingException */ public Publisher(boolean useProps, String initialContextFactory, String providerUrl, String connfactory, String destinationName, boolean useAuth, String securityPrincipal, String securityCredentials, boolean useNonPersistentMessages) throws JMSException, NamingException { this(useProps, initialContextFactory, providerUrl, connfactory, destinationName, useAuth, securityPrincipal, securityCredentials, true, useNonPersistentMessages); } /** * Create a publisher using either the jndi.properties file or the provided parameters * @param useProps true if a jndi.properties file is to be used * @param initialContextFactory the (ignored if useProps is true) * @param providerUrl (ignored if useProps is true) * @param connfactory * @param destinationName * @param useAuth (ignored if useProps is true) * @param securityPrincipal (ignored if useProps is true) * @param securityCredentials (ignored if useProps is true) * @param staticDestination true is the destination is not to change between loops * @param useNonPersistentMessages Flag Delivery Mode as Non persistent if true * @throws JMSException if the context could not be initialised, or there was some other error * @throws NamingException */ public Publisher(boolean useProps, String initialContextFactory, String providerUrl, String connfactory, String destinationName, boolean useAuth, String securityPrincipal, String securityCredentials, boolean staticDestination, boolean useNonPersistentMessages) throws JMSException, NamingException { super(); boolean initSuccess = false; try{ ctx = InitialContextFactory.getContext(useProps, initialContextFactory, providerUrl, useAuth, securityPrincipal, securityCredentials); connection = Utils.getConnection(ctx, connfactory); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); staticDest = staticDestination; if (staticDest) { Destination dest = Utils.lookupDestination(ctx, destinationName); producer = session.createProducer(dest); } else { producer = session.createProducer(null); } if(useNonPersistentMessages) { producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); } initSuccess = true; } finally { if(!initSuccess) { close(); } } } public TextMessage publish(String text) throws JMSException, NamingException { return publish(text, null, null); } public TextMessage publish(String text, String destinationName) throws JMSException, NamingException { return publish(text, destinationName, null); } public TextMessage publish(String text, String destinationName, Map properties) throws JMSException, NamingException { TextMessage msg = session.createTextMessage(text); Utils.addJMSProperties(msg, properties); if (staticDest || destinationName == null) { producer.send(msg); } else { Destination dest = Utils.lookupDestination(ctx, destinationName); producer.send(dest, msg); } return msg; } public ObjectMessage publish(Serializable contents) throws JMSException, NamingException { return publish(contents, null); } public ObjectMessage publish(Serializable contents, String destinationName) throws JMSException, NamingException { return publish(contents, destinationName, null); } public ObjectMessage publish(Serializable contents, String destinationName, Map properties) throws JMSException, NamingException { ObjectMessage msg = session.createObjectMessage(contents); Utils.addJMSProperties(msg, properties); if (staticDest || destinationName == null) { producer.send(msg); } else { Destination dest = Utils.lookupDestination(ctx, destinationName); producer.send(dest, msg); } return msg; } public MapMessage publish(Map map) throws JMSException, NamingException { return publish(map, null, null); } public MapMessage publish(Map map, String destinationName) throws JMSException, NamingException { return publish(map, destinationName, null); } public MapMessage publish(Map map, String destinationName, Map properties) throws JMSException, NamingException { MapMessage msg = session.createMapMessage(); Utils.addJMSProperties(msg, properties); for (Entry me : map.entrySet()) { msg.setObject(me.getKey(), me.getValue()); } if (staticDest || destinationName == null) { producer.send(msg); } else { Destination dest = Utils.lookupDestination(ctx, destinationName); producer.send(dest, msg); } return msg; } /** * Close will close the session */ public void close() { Utils.close(producer, log); Utils.close(session, log); Utils.close(connection, log); } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java0000644000175000017500000002655312032647216032336 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.client; import java.io.Closeable; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.Session; import javax.jms.Topic; import javax.naming.Context; import javax.naming.NamingException; import org.apache.jmeter.protocol.jms.Utils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Generic MessageConsumer class, which has two possible strategies. *
          *
        • Use MessageConsumer.receive(timeout) to fetch messages.
        • *
        • Use MessageListener.onMessage() to cache messages in a local queue.
        • *
        * In both cases, the {@link #getMessage(long)} method is used to return the next message, * either directly using receive(timeout) or from the queue using poll(timeout). */ public class ReceiveSubscriber implements Closeable, MessageListener { private static final Logger log = LoggingManager.getLoggerForClass(); private final Connection connection; private final Session session; private final MessageConsumer subscriber; /* * We use a LinkedBlockingQueue (rather than a ConcurrentLinkedQueue) because it has a * poll-with-wait method that avoids the need to use a polling loop. */ private final LinkedBlockingQueue queue; /** * Constructor takes the necessary JNDI related parameters to create a * connection and prepare to begin receiving messages. *
        * The caller must then invoke {@link #start()} to enable message reception. * * @param useProps if true, use jndi.properties instead of * initialContextFactory, providerUrl, securityPrincipal, securityCredentials * @param initialContextFactory * @param providerUrl * @param connfactory * @param destinationName * @param durableSubscriptionId * @param clientId * @param jmsSelector Message Selector * @param useAuth * @param securityPrincipal * @param securityCredentials * @throws JMSException if could not create context or other problem occurred. * @throws NamingException */ public ReceiveSubscriber(boolean useProps, String initialContextFactory, String providerUrl, String connfactory, String destinationName, String durableSubscriptionId, String clientId, String jmsSelector, boolean useAuth, String securityPrincipal, String securityCredentials) throws NamingException, JMSException { this(0, useProps, initialContextFactory, providerUrl, connfactory, destinationName, durableSubscriptionId, clientId, jmsSelector, useAuth, securityPrincipal, securityCredentials, false); } /** * Constructor takes the necessary JNDI related parameters to create a * connection and create an onMessageListener to prepare to begin receiving messages. *
        * The caller must then invoke {@link #start()} to enable message reception. * * @param queueSize maximum queue size <=0 == no limit * @param useProps if true, use jndi.properties instead of * initialContextFactory, providerUrl, securityPrincipal, securityCredentials * @param initialContextFactory * @param providerUrl * @param connfactory * @param destinationName * @param durableSubscriptionId * @param clientId * @param jmsSelector Message Selector * @param useAuth * @param securityPrincipal * @param securityCredentials * @throws JMSException if could not create context or other problem occurred. * @throws NamingException */ public ReceiveSubscriber(int queueSize, boolean useProps, String initialContextFactory, String providerUrl, String connfactory, String destinationName, String durableSubscriptionId, String clientId, String jmsSelector, boolean useAuth, String securityPrincipal, String securityCredentials) throws NamingException, JMSException { this(queueSize, useProps, initialContextFactory, providerUrl, connfactory, destinationName, durableSubscriptionId, clientId, jmsSelector, useAuth, securityPrincipal, securityCredentials, true); } /** * Constructor takes the necessary JNDI related parameters to create a * connection and create an onMessageListener to prepare to begin receiving messages. *
        * The caller must then invoke {@link #start()} to enable message reception. * * @param queueSize maximum queue size <=0 == no limit * @param useProps if true, use jndi.properties instead of * initialContextFactory, providerUrl, securityPrincipal, securityCredentials * @param initialContextFactory * @param providerUrl * @param connfactory * @param destinationName * @param durableSubscriptionId * @param clientId * @param jmsSelector Message Selector * @param useAuth * @param securityPrincipal * @param securityCredentials * @param useMessageListener if true create an onMessageListener to prepare to begin receiving messages, otherwise queue will be null * @throws JMSException if could not create context or other problem occurred. * @throws NamingException */ private ReceiveSubscriber(int queueSize, boolean useProps, String initialContextFactory, String providerUrl, String connfactory, String destinationName, String durableSubscriptionId, String clientId, String jmsSelector, boolean useAuth, String securityPrincipal, String securityCredentials, boolean useMessageListener) throws NamingException, JMSException { boolean initSuccess = false; try{ Context ctx = InitialContextFactory.getContext(useProps, initialContextFactory, providerUrl, useAuth, securityPrincipal, securityCredentials); connection = Utils.getConnection(ctx, connfactory); if(!isEmpty(clientId)) { connection.setClientID(clientId); } session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination dest = Utils.lookupDestination(ctx, destinationName); subscriber = createSubscriber(session, dest, durableSubscriptionId, jmsSelector); if(useMessageListener) { if (queueSize <=0) { queue = new LinkedBlockingQueue(); } else { queue = new LinkedBlockingQueue(queueSize); } subscriber.setMessageListener(this); } else { queue = null; } log.debug(" complete"); initSuccess = true; } finally { if(!initSuccess) { close(); } } } /** * Return a simple MessageConsumer or a TopicSubscriber (as a durable subscription) * @param session * JMS session * @param destination * JMS destination, can be either topic or queue * @param durableSubscriptionId * If neither empty nor null, this means that a durable * subscription will be used * @param jmsSelector JMS Selector * @return * @throws JMSException */ private MessageConsumer createSubscriber(Session session, Destination destination, String durableSubscriptionId, String jmsSelector) throws JMSException { if (isEmpty(durableSubscriptionId)) { if(isEmpty(jmsSelector)) { return session.createConsumer(destination); } else { return session.createConsumer(destination, jmsSelector); } } else { if(isEmpty(jmsSelector)) { return session.createDurableSubscriber((Topic) destination, durableSubscriptionId); } else { return session.createDurableSubscriber((Topic) destination, durableSubscriptionId, jmsSelector, false); } } } /** * Calls Connection.start() to begin receiving inbound messages. * @throws JMSException */ public void start() throws JMSException { log.debug("start()"); connection.start(); } /** * Calls Connection.stop() to stop receiving inbound messages. * @throws JMSException */ public void stop() throws JMSException { log.debug("stop()"); connection.stop(); } /** * Get the next message or null. * Never blocks for longer than the specified timeout. * * @param timeout in milliseconds * @return the next message or null * * @throws JMSException */ public Message getMessage(long timeout) throws JMSException { Message message = null; if (queue != null) { // Using onMessage Listener try { if (timeout < 10) { // Allow for short/negative times message = queue.poll(); } else { message = queue.poll(timeout, TimeUnit.MILLISECONDS); } } catch (InterruptedException e) { // Ignored } return message; } if (timeout < 10) { // Allow for short/negative times message = subscriber.receiveNoWait(); } else { message = subscriber.receive(timeout); } return message; } /** * close() will stop the connection first. * Then it closes the subscriber, session and connection. */ public void close() { // called from threadFinished() thread log.debug("close()"); try { if(connection != null) { connection.stop(); } } catch (JMSException e) { log.error(e.getMessage()); } Utils.close(subscriber, log); Utils.close(session, log); Utils.close(connection, log); } /** * {@inheritDoc} */ public void onMessage(Message message) { if (!queue.offer(message)){ log.warn("Could not add message to queue"); } } /** * Checks whether string is empty * * @param s1 * @return True if input is null, an empty string, * or a white space-only string */ private boolean isEmpty(String s1) { return (s1 == null || s1.trim().equals("")); } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/client/InitialContextFactory.java0000644000175000017500000001455612032647216033216 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.client; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.commons.lang3.StringUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * InitialContextFactory is responsible for getting an instance of the initial context. */ public class InitialContextFactory { private static final ConcurrentHashMap MAP = new ConcurrentHashMap(); private static final Logger log = LoggingManager.getLoggerForClass(); /** * Look up the context from the local cache, creating it if necessary. * * @param initialContextFactory used to set the property {@link Context#INITIAL_CONTEXT_FACTORY} * @param providerUrl used to set the property {@link Context#PROVIDER_URL} * @param useAuth set true if security is to be used. * @param securityPrincipal used to set the property {@link Context#SECURITY_PRINCIPAL} * @param securityCredentials used to set the property {@link Context#SECURITY_CREDENTIALS} * @return the context, never null * @throws NamingException */ public static Context lookupContext(String initialContextFactory, String providerUrl, boolean useAuth, String securityPrincipal, String securityCredentials) throws NamingException { String cacheKey = createKey(Thread.currentThread().getId(),initialContextFactory ,providerUrl, securityPrincipal, securityCredentials); Context ctx = MAP.get(cacheKey); if (ctx == null) { Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory); props.setProperty(Context.PROVIDER_URL, providerUrl); if (useAuth && securityPrincipal != null && securityCredentials != null && securityPrincipal.length() > 0 && securityCredentials.length() > 0) { props.setProperty(Context.SECURITY_PRINCIPAL, securityPrincipal); props.setProperty(Context.SECURITY_CREDENTIALS, securityCredentials); log.info("authentication properties set"); } try { ctx = new InitialContext(props); } catch (NoClassDefFoundError e){ throw new NamingException(e.toString()); } catch (Exception e) { throw new NamingException(e.toString()); } // we want to return the context that is actually in the map // if it's the first put we will have a null result Context oldCtx = MAP.putIfAbsent(cacheKey, ctx); if(oldCtx != null) { // There was an object in map, destroy the temporary and return one in map (oldCtx) try { ctx.close(); } catch (Exception e) { // NOOP } ctx = oldCtx; } // else No object in Map, ctx is the one } return ctx; } /** * Create cache key * @param threadId Thread Id * @param initialContextFactory * @param providerUrl * @param securityPrincipal * @param securityCredentials * @return */ private static String createKey( long threadId, String initialContextFactory, String providerUrl, String securityPrincipal, String securityCredentials) { StringBuilder builder = new StringBuilder(); builder.append(threadId); builder.append("#"); builder.append(initialContextFactory); builder.append("#"); builder.append(providerUrl); builder.append("#"); if(!StringUtils.isEmpty(securityPrincipal)) { builder.append(securityPrincipal); builder.append("#"); } if(!StringUtils.isEmpty(securityCredentials)) { builder.append(securityCredentials); } return builder.toString(); } /** * Initialize the JNDI initial context * * @param useProps if true, create a new InitialContext; otherwise use the other parameters to call * {@link #lookupContext(String, String, boolean, String, String)} * @param initialContextFactory * @param providerUrl * @param useAuth * @param securityPrincipal * @param securityCredentials * @return the context, never null * @throws NamingException */ public static Context getContext(boolean useProps, String initialContextFactory, String providerUrl, boolean useAuth, String securityPrincipal, String securityCredentials) throws NamingException { if (useProps) { try { return new InitialContext(); } catch (NoClassDefFoundError e){ throw new NamingException(e.toString()); } catch (Exception e) { throw new NamingException(e.toString()); } } else { return lookupContext(initialContextFactory, providerUrl, useAuth, securityPrincipal, securityCredentials); } } /** * clear all the InitialContext objects. */ public static void close() { for (Context ctx : MAP.values()) { try { ctx.close(); } catch (NamingException e) { log.error(e.getMessage()); } } MAP.clear(); log.info("InitialContextFactory.close() called and Context instances cleaned up"); } }apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ClientPool.java0000644000175000017500000000561312032647216030772 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.protocol.jms.client; import java.io.Closeable; import java.io.IOException; import java.util.ArrayList; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * * ClientPool holds the client instances in an ArrayList. The main purpose of * this is to make it easier to clean up all the instances at the end of a test. * If we didn't do this, threads might become zombie. * * N.B. This class needs to be fully synchronized as it is called from sample threads * and the thread that runs testEnded() methods. */ public class ClientPool { //GuardedBy("this") private static final ArrayList clients = new ArrayList(); //GuardedBy("this") private static final Map client_map = new ConcurrentHashMap(); /** * Add a ReceiveClient to the ClientPool. This is so that we can make sure * to close all clients and make sure all threads are destroyed. * * @param client */ public static synchronized void addClient(Closeable client) { clients.add(client); } /** * Clear all the clients created by either Publish or Subscribe sampler. We * need to do this to make sure all the threads creatd during the test are * destroyed and cleaned up. In some cases, the client provided by the * manufacturer of the JMS server may have bugs and some threads may become * zombie. In those cases, it is not the responsibility of JMeter for those * bugs. */ public static synchronized void clearClient() { for (Closeable client : clients) { try { client.close(); } catch (IOException e) { // Ignored } client = null; } clients.clear(); client_map.clear(); } // TODO Method with 0 reference, really useful ? public static void put(Object key, Object client) { client_map.put(key, client); } // TODO Method with 0 reference, really useful ? public static Object get(Object key) { return client_map.get(key); } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/Utils.java0000644000175000017500000001561412032647216026546 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms; import java.util.Enumeration; import java.util.Map; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; import javax.jms.Session; import javax.naming.Context; import javax.naming.NamingException; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Utility methods for JMS protocol. * WARNING - the API for this class is likely to change! */ public final class Utils { private static final Logger log = LoggingManager.getLoggerForClass(); public static void close(MessageConsumer closeable, Logger log){ if (closeable != null){ try { closeable.close(); } catch (JMSException e) { log.error("Error during close: ", e); } } } public static void close(Session closeable, Logger log) { if (closeable != null){ try { closeable.close(); } catch (JMSException e) { log.error("Error during close: ", e); } } } public static void close(Connection closeable, Logger log) { if (closeable != null){ try { closeable.close(); } catch (JMSException e) { log.error("Error during close: ", e); } } } public static void close(MessageProducer closeable, Logger log) { if (closeable != null){ try { closeable.close(); } catch (JMSException e) { log.error("Error during close: ", e); } } } public static String messageProperties(Message msg){ return messageProperties(new StringBuilder(), msg).toString(); } public static StringBuilder messageProperties(StringBuilder sb, Message msg){ requestHeaders(sb, msg); sb.append("Properties:\n"); Enumeration rme; try { rme = msg.getPropertyNames(); while(rme.hasMoreElements()){ String name=(String) rme.nextElement(); sb.append(name).append('\t'); String value=msg.getStringProperty(name); sb.append(value).append('\n'); } } catch (JMSException e) { sb.append("\nError: "+e.toString()); } return sb; } public static StringBuilder requestHeaders(StringBuilder sb, Message msg){ try { sb.append("JMSCorrelationId ").append(msg.getJMSCorrelationID()).append('\n'); sb.append("JMSMessageId ").append(msg.getJMSMessageID()).append('\n'); sb.append("JMSTimestamp ").append(msg.getJMSTimestamp()).append('\n'); sb.append("JMSType ").append(msg.getJMSType()).append('\n'); sb.append("JMSExpiration ").append(msg.getJMSExpiration()).append('\n'); sb.append("JMSPriority ").append(msg.getJMSPriority()).append('\n'); sb.append("JMSDestination ").append(msg.getJMSDestination()).append('\n'); } catch (JMSException e) { sb.append("\nError: "+e.toString()); } return sb; } /** * Method will lookup a given destination (topic/queue) using JNDI. * * @param context * @param name the destination name * @return the destination, never null * @throws NamingException if the name cannot be found as a Destination */ public static Destination lookupDestination(Context context, String name) throws NamingException { Object o = context.lookup(name); if (o instanceof Destination){ return (Destination) o; } throw new NamingException("Found: "+name+"; expected Destination, but was: "+o.getClass().getName()); } /** * Obtain the queue connection from the context and factory name. * * @param ctx * @param factoryName * @return the queue connection * @throws JMSException * @throws NamingException */ public static Connection getConnection(Context ctx, String factoryName) throws JMSException, NamingException { Object objfac = null; try { objfac = ctx.lookup(factoryName); } catch (NoClassDefFoundError e) { throw new NamingException("Lookup failed: "+e.toString()); } if (objfac instanceof javax.jms.ConnectionFactory) { @SuppressWarnings("unchecked") // The environment is supposed to use String keys only Map env = (Map)ctx.getEnvironment(); if(env.containsKey(Context.SECURITY_PRINCIPAL)) { String username = (String)env.get(Context.SECURITY_PRINCIPAL); String password = (String)env.get(Context.SECURITY_CREDENTIALS); return ((javax.jms.ConnectionFactory) objfac).createConnection(username, password); } else { return ((javax.jms.ConnectionFactory) objfac).createConnection(); } } throw new NamingException("Expected javax.jms.ConnectionFactory, found "+objfac.getClass().getName()); } /** * Set JMS Properties to msg * @param msg Message * @param map Map * @throws JMSException */ public static void addJMSProperties(Message msg, Map map) throws JMSException { if(map == null) { return; } for (Map.Entry me : map.entrySet()) { String name = me.getKey(); String value = me.getValue(); if (log.isDebugEnabled()) { log.debug("Adding property [" + name + "=" + value + "]"); } // WebsphereMQ does not allow corr. id. to be set using setStringProperty() if("JMSCorrelationID".equalsIgnoreCase(name)) { // $NON-NLS-1$ msg.setJMSCorrelationID(value); } else { msg.setStringProperty(name, value); } } } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/control/0000755000175000017500000000000012032647216026254 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/0000755000175000017500000000000012165514773027050 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSubscriberGui.java0000644000175000017500000002657112032647216033040 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.control.gui; import java.awt.BorderLayout; import javax.naming.Context; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.gui.util.JLabeledRadioI18N; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.jms.sampler.SubscriberSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledPasswordField; import org.apache.jorphan.gui.JLabeledTextField; /** * This is the GUI for JMS Subscriber
        * */ public class JMSSubscriberGui extends AbstractSamplerGui implements ChangeListener { private static final long serialVersionUID = 240L; private final JCheckBox useProperties = new JCheckBox(JMeterUtils.getResString("jms_use_properties_file"), false); // $NON-NLS-1$ private final JLabeledTextField jndiICF = new JLabeledTextField(JMeterUtils.getResString("jms_initial_context_factory")); // $NON-NLS-1$ private final JLabeledTextField urlField = new JLabeledTextField(JMeterUtils.getResString("jms_provider_url")); // $NON-NLS-1$ private final JLabeledTextField jndiConnFac = new JLabeledTextField(JMeterUtils.getResString("jms_connection_factory")); // $NON-NLS-1$ private final JLabeledTextField jmsDestination = new JLabeledTextField(JMeterUtils.getResString("jms_topic")); // $NON-NLS-1$ private final JLabeledTextField jmsDurableSubscriptionId = new JLabeledTextField(JMeterUtils.getResString("jms_durable_subscription_id")); // $NON-NLS-1$ private final JLabeledTextField jmsClientId = new JLabeledTextField(JMeterUtils.getResString("jms_client_id")); // $NON-NLS-1$ private final JLabeledTextField jmsSelector = new JLabeledTextField(JMeterUtils.getResString("jms_selector")); // $NON-NLS-1$ private final JLabeledTextField jmsUser = new JLabeledTextField(JMeterUtils.getResString("jms_user")); // $NON-NLS-1$ private final JLabeledTextField jmsPwd = new JLabeledPasswordField(JMeterUtils.getResString("jms_pwd")); // $NON-NLS-1$ private final JLabeledTextField iterations = new JLabeledTextField(JMeterUtils.getResString("jms_itertions")); // $NON-NLS-1$ private final JCheckBox useAuth = new JCheckBox(JMeterUtils.getResString("jms_use_auth"), false); //$NON-NLS-1$ private final JCheckBox readResponse = new JCheckBox(JMeterUtils.getResString("jms_read_response"), true); // $NON-NLS-1$ private final JLabeledTextField timeout = new JLabeledTextField(JMeterUtils.getResString("jms_timeout")); //$NON-NLS-1$ private final JLabeledTextField separator = new JLabeledTextField(JMeterUtils.getResString("jms_separator")); //$NON-NLS-1$ //++ Do not change these strings; they are used in JMX files to record the button settings public static final String RECEIVE_RSC = "jms_subscriber_receive"; // $NON-NLS-1$ public static final String ON_MESSAGE_RSC = "jms_subscriber_on_message"; // $NON-NLS-1$ //-- // Button group resources private static final String[] CLIENT_ITEMS = { RECEIVE_RSC, ON_MESSAGE_RSC }; private final JLabeledRadioI18N clientChoice = new JLabeledRadioI18N("jms_client_type", CLIENT_ITEMS, RECEIVE_RSC); // $NON-NLS-1$ private final JCheckBox stopBetweenSamples = new JCheckBox(JMeterUtils.getResString("jms_stop_between_samples"), true); // $NON-NLS-1$ // These are the names of properties used to define the labels private static final String DEST_SETUP_STATIC = "jms_dest_setup_static"; // $NON-NLS-1$ private static final String DEST_SETUP_DYNAMIC = "jms_dest_setup_dynamic"; // $NON-NLS-1$ // Button group resources private static final String[] DEST_SETUP_ITEMS = { DEST_SETUP_STATIC, DEST_SETUP_DYNAMIC }; private final JLabeledRadioI18N destSetup = new JLabeledRadioI18N("jms_dest_setup", DEST_SETUP_ITEMS, DEST_SETUP_STATIC); // $NON-NLS-1$ public JMSSubscriberGui() { init(); } public String getLabelResource() { return "jms_subscriber_title"; // $NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { SubscriberSampler sampler = new SubscriberSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement s) { SubscriberSampler sampler = (SubscriberSampler) s; this.configureTestElement(sampler); sampler.setUseJNDIProperties(String.valueOf(useProperties.isSelected())); sampler.setJNDIIntialContextFactory(jndiICF.getText()); sampler.setProviderUrl(urlField.getText()); sampler.setConnectionFactory(jndiConnFac.getText()); sampler.setDestination(jmsDestination.getText()); sampler.setDurableSubscriptionId(jmsDurableSubscriptionId.getText()); sampler.setClientID(jmsClientId.getText()); sampler.setJmsSelector(jmsSelector.getText()); sampler.setUsername(jmsUser.getText()); sampler.setPassword(jmsPwd.getText()); sampler.setUseAuth(useAuth.isSelected()); sampler.setIterations(iterations.getText()); sampler.setReadResponse(String.valueOf(readResponse.isSelected())); sampler.setClientChoice(clientChoice.getText()); sampler.setStopBetweenSamples(stopBetweenSamples.isSelected()); sampler.setTimeout(timeout.getText()); sampler.setDestinationStatic(destSetup.getText().equals(DEST_SETUP_STATIC)); sampler.setSeparator(separator.getText()); } /** * init() adds jndiICF to the mainPanel. The class reuses logic from * SOAPSampler, since it is common. */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new VerticalPanel(); add(mainPanel, BorderLayout.CENTER); jndiICF.setToolTipText(Context.INITIAL_CONTEXT_FACTORY); urlField.setToolTipText(Context.PROVIDER_URL); jmsUser.setToolTipText(Context.SECURITY_PRINCIPAL); jmsPwd.setToolTipText(Context.SECURITY_CREDENTIALS); mainPanel.add(useProperties); mainPanel.add(jndiICF); mainPanel.add(urlField); mainPanel.add(jndiConnFac); mainPanel.add(createDestinationPane()); mainPanel.add(jmsDurableSubscriptionId); mainPanel.add(jmsClientId); mainPanel.add(jmsSelector); mainPanel.add(useAuth); mainPanel.add(jmsUser); mainPanel.add(jmsPwd); mainPanel.add(iterations); mainPanel.add(readResponse); mainPanel.add(timeout); JPanel choice = new HorizontalPanel(); choice.add(clientChoice); choice.add(stopBetweenSamples); mainPanel.add(choice); mainPanel.add(separator); useProperties.addChangeListener(this); useAuth.addChangeListener(this); } /** * the implementation loads the URL and the soap action for the request. */ @Override public void configure(TestElement el) { super.configure(el); SubscriberSampler sampler = (SubscriberSampler) el; useProperties.setSelected(sampler.getUseJNDIPropertiesAsBoolean()); jndiICF.setText(sampler.getJNDIInitialContextFactory()); urlField.setText(sampler.getProviderUrl()); jndiConnFac.setText(sampler.getConnectionFactory()); jmsDestination.setText(sampler.getDestination()); jmsDurableSubscriptionId.setText(sampler.getDurableSubscriptionId()); jmsClientId.setText(sampler.getClientId()); jmsSelector.setText(sampler.getJmsSelector()); jmsUser.setText(sampler.getUsername()); jmsPwd.setText(sampler.getPassword()); iterations.setText(sampler.getIterations()); useAuth.setSelected(sampler.isUseAuth()); jmsUser.setEnabled(useAuth.isSelected()); jmsPwd.setEnabled(useAuth.isSelected()); readResponse.setSelected(sampler.getReadResponseAsBoolean()); clientChoice.setText(sampler.getClientChoice()); stopBetweenSamples.setSelected(sampler.isStopBetweenSamples()); timeout.setText(sampler.getTimeout()); separator.setText(sampler.getSeparator()); destSetup.setText(sampler.isDestinationStatic() ? DEST_SETUP_STATIC : DEST_SETUP_DYNAMIC); } @Override public void clearGui(){ super.clearGui(); useProperties.setSelected(false); // $NON-NLS-1$ jndiICF.setText(""); // $NON-NLS-1$ urlField.setText(""); // $NON-NLS-1$ jndiConnFac.setText(""); // $NON-NLS-1$ jmsDestination.setText(""); // $NON-NLS-1$ jmsDurableSubscriptionId.setText(""); // $NON-NLS-1$ jmsClientId.setText(""); // $NON-NLS-1$ jmsSelector.setText(""); // $NON-NLS-1$ jmsUser.setText(""); // $NON-NLS-1$ jmsPwd.setText(""); // $NON-NLS-1$ iterations.setText("1"); // $NON-NLS-1$ timeout.setText(""); // $NON-NLS-1$ separator.setText(""); // $NON-NLS-1$ useAuth.setSelected(false); jmsUser.setEnabled(false); jmsPwd.setEnabled(false); readResponse.setSelected(true); clientChoice.setText(RECEIVE_RSC); stopBetweenSamples.setSelected(false); destSetup.setText(DEST_SETUP_STATIC); } /** * When the state of a widget changes, it will notify the gui. the method * then enables or disables certain parameters. */ public void stateChanged(ChangeEvent event) { if (event.getSource() == useProperties) { jndiICF.setEnabled(!useProperties.isSelected()); urlField.setEnabled(!useProperties.isSelected()); } else if (event.getSource() == useAuth) { jmsUser.setEnabled(useAuth.isSelected()); jmsPwd.setEnabled(useAuth.isSelected()); } } private JPanel createDestinationPane() { JPanel pane = new JPanel(new BorderLayout(3, 0)); pane.add(jmsDestination, BorderLayout.CENTER); destSetup.setLayout(new BoxLayout(destSetup, BoxLayout.X_AXIS)); pane.add(destSetup, BorderLayout.EAST); return pane; } }apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSPublisherGui.java0000644000175000017500000003302312032647216032660 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.control.gui; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.JLabeledRadioI18N; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.jms.sampler.PublisherSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledPasswordField; import org.apache.jorphan.gui.JLabeledTextArea; import org.apache.jorphan.gui.JLabeledTextField; /** * This is the GUI for JMS Publisher
        * Created on: October 13, 2003 * */ public class JMSPublisherGui extends AbstractSamplerGui implements ChangeListener { private static final long serialVersionUID = 240L; private static final String ALL_FILES = "*.*"; //$NON-NLS-1$ //++ These names are used in the JMX files, and must not be changed /** Take source from the named file */ public static final String USE_FILE_RSC = "jms_use_file"; //$NON-NLS-1$ /** Take source from a random file */ public static final String USE_RANDOM_RSC = "jms_use_random_file"; //$NON-NLS-1$ /** Take source from the text area */ private static final String USE_TEXT_RSC = "jms_use_text"; //$NON-NLS-1$ /** Create a TextMessage */ public static final String TEXT_MSG_RSC = "jms_text_message"; //$NON-NLS-1$ /** Create a MapMessage */ public static final String MAP_MSG_RSC = "jms_map_message"; //$NON-NLS-1$ /** Create an ObjectMessage */ public static final String OBJECT_MSG_RSC = "jms_object_message"; //$NON-NLS-1$ //-- End of names used in JMX files // Button group resources private static final String[] CONFIG_ITEMS = { USE_FILE_RSC, USE_RANDOM_RSC, USE_TEXT_RSC }; private static final String[] MSGTYPES_ITEMS = { TEXT_MSG_RSC, MAP_MSG_RSC, OBJECT_MSG_RSC }; private final JCheckBox useProperties = new JCheckBox(JMeterUtils.getResString("jms_use_properties_file"), false); //$NON-NLS-1$ private final JLabeledRadioI18N configChoice = new JLabeledRadioI18N("jms_config", CONFIG_ITEMS, USE_TEXT_RSC); //$NON-NLS-1$ private final JLabeledTextField jndiICF = new JLabeledTextField(JMeterUtils.getResString("jms_initial_context_factory")); //$NON-NLS-1$ private final JLabeledTextField urlField = new JLabeledTextField(JMeterUtils.getResString("jms_provider_url")); //$NON-NLS-1$ private final JLabeledTextField jndiConnFac = new JLabeledTextField(JMeterUtils.getResString("jms_connection_factory")); //$NON-NLS-1$ private final JLabeledTextField jmsDestination = new JLabeledTextField(JMeterUtils.getResString("jms_topic")); //$NON-NLS-1$ private final JCheckBox useAuth = new JCheckBox(JMeterUtils.getResString("jms_use_auth"), false); //$NON-NLS-1$ private final JLabeledTextField jmsUser = new JLabeledTextField(JMeterUtils.getResString("jms_user")); //$NON-NLS-1$ private final JLabeledTextField jmsPwd = new JLabeledPasswordField(JMeterUtils.getResString("jms_pwd")); //$NON-NLS-1$ private final JLabeledTextField iterations = new JLabeledTextField(JMeterUtils.getResString("jms_itertions")); //$NON-NLS-1$ private final FilePanel messageFile = new FilePanel(JMeterUtils.getResString("jms_file"), ALL_FILES); //$NON-NLS-1$ private final FilePanel randomFile = new FilePanel(JMeterUtils.getResString("jms_random_file"), ALL_FILES); //$NON-NLS-1$ private final JLabeledTextArea textMessage = new JLabeledTextArea(JMeterUtils.getResString("jms_text_message")); private final JLabeledRadioI18N msgChoice = new JLabeledRadioI18N("jms_message_type", MSGTYPES_ITEMS, TEXT_MSG_RSC); //$NON-NLS-1$ private JCheckBox useNonPersistentDelivery; // These are the names of properties used to define the labels private static final String DEST_SETUP_STATIC = "jms_dest_setup_static"; // $NON-NLS-1$ private static final String DEST_SETUP_DYNAMIC = "jms_dest_setup_dynamic"; // $NON-NLS-1$ // Button group resources private static final String[] DEST_SETUP_ITEMS = { DEST_SETUP_STATIC, DEST_SETUP_DYNAMIC }; private final JLabeledRadioI18N destSetup = new JLabeledRadioI18N("jms_dest_setup", DEST_SETUP_ITEMS, DEST_SETUP_STATIC); // $NON-NLS-1$ private ArgumentsPanel jmsPropertiesPanel; public JMSPublisherGui() { init(); } /** * the name of the property for the JMSPublisherGui is jms_publisher. */ public String getLabelResource() { return "jms_publisher"; //$NON-NLS-1$ } /** * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement() */ public TestElement createTestElement() { PublisherSampler sampler = new PublisherSampler(); setupSamplerProperties(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement s) { PublisherSampler sampler = (PublisherSampler) s; setupSamplerProperties(sampler); sampler.setDestinationStatic(destSetup.getText().equals(DEST_SETUP_STATIC)); } /** * Initialize the provided {@link PublisherSampler} with all the values as configured in the GUI. * * @param sampler {@link PublisherSampler} instance */ private void setupSamplerProperties(final PublisherSampler sampler) { this.configureTestElement(sampler); sampler.setUseJNDIProperties(String.valueOf(useProperties.isSelected())); sampler.setJNDIIntialContextFactory(jndiICF.getText()); sampler.setProviderUrl(urlField.getText()); sampler.setConnectionFactory(jndiConnFac.getText()); sampler.setDestination(jmsDestination.getText()); sampler.setUsername(jmsUser.getText()); sampler.setPassword(jmsPwd.getText()); sampler.setTextMessage(textMessage.getText()); sampler.setInputFile(messageFile.getFilename()); sampler.setRandomPath(randomFile.getFilename()); sampler.setConfigChoice(configChoice.getText()); sampler.setMessageChoice(msgChoice.getText()); sampler.setIterations(iterations.getText()); sampler.setUseAuth(useAuth.isSelected()); sampler.setUseNonPersistentDelivery(useNonPersistentDelivery.isSelected()); Arguments args = (Arguments) jmsPropertiesPanel.createTestElement(); sampler.setJMSProperties(args); } /** * init() adds jndiICF to the mainPanel. The class reuses logic from * SOAPSampler, since it is common. */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel mainPanel = new VerticalPanel(); add(mainPanel, BorderLayout.CENTER); mainPanel.add(useProperties); mainPanel.add(jndiICF); mainPanel.add(urlField); mainPanel.add(jndiConnFac); mainPanel.add(createDestinationPane()); mainPanel.add(createAuthPane()); mainPanel.add(iterations); jmsPropertiesPanel = new ArgumentsPanel(JMeterUtils.getResString("jms_props")); //$NON-NLS-1$ mainPanel.add(jmsPropertiesPanel); configChoice.setLayout(new BoxLayout(configChoice, BoxLayout.X_AXIS)); mainPanel.add(configChoice); msgChoice.setLayout(new BoxLayout(msgChoice, BoxLayout.X_AXIS)); mainPanel.add(msgChoice); mainPanel.add(messageFile); mainPanel.add(randomFile); mainPanel.add(textMessage); Dimension pref = new Dimension(400, 150); textMessage.setPreferredSize(pref); useProperties.addChangeListener(this); useAuth.addChangeListener(this); configChoice.addChangeListener(this); msgChoice.addChangeListener(this); } @Override public void clearGui(){ super.clearGui(); useProperties.setSelected(false); jndiICF.setText(""); // $NON-NLS-1$ urlField.setText(""); // $NON-NLS-1$ jndiConnFac.setText(""); // $NON-NLS-1$ jmsDestination.setText(""); // $NON-NLS-1$ jmsUser.setText(""); // $NON-NLS-1$ jmsPwd.setText(""); // $NON-NLS-1$ textMessage.setText(""); // $NON-NLS-1$ messageFile.setFilename(""); // $NON-NLS-1$ randomFile.setFilename(""); // $NON-NLS-1$ msgChoice.setText(""); // $NON-NLS-1$ configChoice.setText(USE_TEXT_RSC); updateConfig(USE_TEXT_RSC); iterations.setText("1"); // $NON-NLS-1$ useAuth.setSelected(false); jmsUser.setEnabled(false); jmsPwd.setEnabled(false); destSetup.setText(DEST_SETUP_STATIC); useNonPersistentDelivery.setSelected(false); jmsPropertiesPanel.clear(); } /** * the implementation loads the URL and the soap action for the request. */ @Override public void configure(TestElement el) { super.configure(el); PublisherSampler sampler = (PublisherSampler) el; useProperties.setSelected(sampler.getUseJNDIPropertiesAsBoolean()); jndiICF.setText(sampler.getJNDIInitialContextFactory()); urlField.setText(sampler.getProviderUrl()); jndiConnFac.setText(sampler.getConnectionFactory()); jmsDestination.setText(sampler.getDestination()); jmsUser.setText(sampler.getUsername()); jmsPwd.setText(sampler.getPassword()); textMessage.setText(sampler.getTextMessage()); messageFile.setFilename(sampler.getInputFile()); randomFile.setFilename(sampler.getRandomPath()); configChoice.setText(sampler.getConfigChoice()); msgChoice.setText(sampler.getMessageChoice()); updateConfig(sampler.getConfigChoice()); iterations.setText(sampler.getIterations()); useAuth.setSelected(sampler.isUseAuth()); jmsUser.setEnabled(useAuth.isSelected()); jmsPwd.setEnabled(useAuth.isSelected()); destSetup.setText(sampler.isDestinationStatic() ? DEST_SETUP_STATIC : DEST_SETUP_DYNAMIC); useNonPersistentDelivery.setSelected(sampler.getUseNonPersistentDelivery()); jmsPropertiesPanel.configure(sampler.getJMSProperties()); } /** * When a widget state changes, it will notify this class so we can * enable/disable the correct items. */ public void stateChanged(ChangeEvent event) { if (event.getSource() == configChoice) { updateConfig(configChoice.getText()); } else if (event.getSource() == useProperties) { jndiICF.setEnabled(!useProperties.isSelected()); urlField.setEnabled(!useProperties.isSelected()); } else if (event.getSource() == useAuth) { jmsUser.setEnabled(useAuth.isSelected()); jmsPwd.setEnabled(useAuth.isSelected()); } } /** * Update config contains the actual logic for enabling or disabling text * message, file or random path. * * @param command */ private void updateConfig(String command) { if (command.equals(USE_TEXT_RSC)) { textMessage.setEnabled(true); messageFile.enableFile(false); randomFile.enableFile(false); } else if (command.equals(USE_RANDOM_RSC)) { textMessage.setEnabled(false); messageFile.enableFile(false); randomFile.enableFile(true); } else { textMessage.setEnabled(false); messageFile.enableFile(true); randomFile.enableFile(false); } } /** * @return JPanel that contains destination infos */ private JPanel createDestinationPane() { JPanel pane = new JPanel(new BorderLayout(3, 0)); pane.add(jmsDestination, BorderLayout.WEST); destSetup.setLayout(new BoxLayout(destSetup, BoxLayout.X_AXIS)); pane.add(destSetup, BorderLayout.CENTER); useNonPersistentDelivery = new JCheckBox(JMeterUtils.getResString("jms_use_non_persistent_delivery"),false); //$NON-NLS-1$ pane.add(useNonPersistentDelivery, BorderLayout.EAST); return pane; } /** * @return JPanel Panel with checkbox to choose auth , user and password */ private JPanel createAuthPane() { JPanel pane = new JPanel(); pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS)); pane.add(useAuth); pane.add(Box.createHorizontalStrut(10)); pane.add(jmsUser); pane.add(Box.createHorizontalStrut(10)); pane.add(jmsPwd); return pane; } } apache-jmeter-2.8/src/protocol/jms/org/apache/jmeter/protocol/jms/control/gui/JMSSamplerGui.java0000644000175000017500000002661212032647216032334 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.jms.control.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JPanel; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.protocol.jms.sampler.JMSSampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jorphan.gui.JLabeledChoice; import org.apache.jorphan.gui.JLabeledTextArea; import org.apache.jorphan.gui.JLabeledTextField; /** * Configuration screen for Java Messaging Point-to-Point requests.
        * Created on: October 28, 2004 * */ public class JMSSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private JLabeledTextField queueConnectionFactory = new JLabeledTextField( JMeterUtils.getResString("jms_queue_connection_factory")); //$NON-NLS-1$ private JLabeledTextField sendQueue = new JLabeledTextField(JMeterUtils.getResString("jms_send_queue")); //$NON-NLS-1$ private JLabeledTextField receiveQueue = new JLabeledTextField(JMeterUtils.getResString("jms_receive_queue")); //$NON-NLS-1$ private JLabeledTextField timeout = new JLabeledTextField(JMeterUtils.getResString("jms_timeout")); //$NON-NLS-1$ private JLabeledTextField jmsSelector = new JLabeledTextField(JMeterUtils.getResString("jms_selector")); //$NON-NLS-1$ private JLabeledTextArea soapXml = new JLabeledTextArea(JMeterUtils.getResString("jms_msg_content")); //$NON-NLS-1$ private JLabeledTextField initialContextFactory = new JLabeledTextField( JMeterUtils.getResString("jms_initial_context_factory")); //$NON-NLS-1$ private JLabeledTextField providerUrl = new JLabeledTextField(JMeterUtils.getResString("jms_provider_url")); //$NON-NLS-1$ private String[] labels = new String[] { JMeterUtils.getResString("jms_request"), //$NON-NLS-1$ JMeterUtils.getResString("jms_requestreply") }; //$NON-NLS-1$ private JLabeledChoice oneWay = new JLabeledChoice(JMeterUtils.getResString("jms_communication_style"), labels); //$NON-NLS-1$ private ArgumentsPanel jmsPropertiesPanel; private ArgumentsPanel jndiPropertiesPanel; private JCheckBox useNonPersistentDelivery; private JCheckBox useReqMsgIdAsCorrelId; private JCheckBox useResMsgIdAsCorrelId; public JMSSamplerGui() { init(); } /** * Clears all fields. */ @Override public void clearGui() {// renamed from clear super.clearGui(); queueConnectionFactory.setText(""); // $NON-NLS-1$ sendQueue.setText(""); // $NON-NLS-1$ receiveQueue.setText(""); // $NON-NLS-1$ ((JComboBox) oneWay.getComponentList().get(1)).setSelectedItem(JMeterUtils.getResString("jms_request")); //$NON-NLS-1$ timeout.setText(""); // $NON-NLS-1$ jmsSelector.setText(""); // $NON-NLS-1$ soapXml.setText(""); // $NON-NLS-1$ initialContextFactory.setText(""); // $NON-NLS-1$ providerUrl.setText(""); // $NON-NLS-1$ jmsPropertiesPanel.clear(); jndiPropertiesPanel.clear(); } public TestElement createTestElement() { JMSSampler sampler = new JMSSampler(); this.configureTestElement(sampler); transfer(sampler); return sampler; } private void transfer(JMSSampler element) { element.setQueueConnectionFactory(queueConnectionFactory.getText()); element.setSendQueue(sendQueue.getText()); element.setReceiveQueue(receiveQueue.getText()); boolean isOneway = oneWay.getText().equals(JMeterUtils.getResString("jms_request")); //$NON-NLS-1$ element.setIsOneway(isOneway); element.setNonPersistent(useNonPersistentDelivery.isSelected()); element.setUseReqMsgIdAsCorrelId(useReqMsgIdAsCorrelId.isSelected()); element.setUseResMsgIdAsCorrelId(useResMsgIdAsCorrelId.isSelected()); element.setTimeout(timeout.getText()); element.setJMSSelector(jmsSelector.getText()); element.setContent(soapXml.getText()); element.setInitialContextFactory(initialContextFactory.getText()); element.setContextProvider(providerUrl.getText()); Arguments jndiArgs = (Arguments) jndiPropertiesPanel.createTestElement(); element.setJNDIProperties(jndiArgs); Arguments args = (Arguments) jmsPropertiesPanel.createTestElement(); element.setJMSProperties(args); } /** * * @param element */ public void modifyTestElement(TestElement element) { this.configureTestElement(element); if (!(element instanceof JMSSampler)) return; JMSSampler sampler = (JMSSampler) element; transfer(sampler); } @Override public void configure(TestElement el) { super.configure(el); if (!(el instanceof JMSSampler)) return; JMSSampler sampler = (JMSSampler) el; queueConnectionFactory.setText(sampler.getQueueConnectionFactory()); sendQueue.setText(sampler.getSendQueue()); receiveQueue.setText(sampler.getReceiveQueue()); JComboBox box = (JComboBox) oneWay.getComponentList().get(1); String selected = null; if (sampler.isOneway()) { selected = JMeterUtils.getResString("jms_request"); //$NON-NLS-1$ } else { selected = JMeterUtils.getResString("jms_requestreply"); //$NON-NLS-1$ } box.setSelectedItem(selected); useNonPersistentDelivery.setSelected(sampler.isNonPersistent()); useReqMsgIdAsCorrelId.setSelected(sampler.isUseReqMsgIdAsCorrelId()); useResMsgIdAsCorrelId.setSelected(sampler.isUseResMsgIdAsCorrelId()); timeout.setText(sampler.getTimeout()); jmsSelector.setText(sampler.getJMSSelector()); soapXml.setText(sampler.getContent()); initialContextFactory.setText(sampler.getInitialContextFactory()); providerUrl.setText(sampler.getContextProvider()); jmsPropertiesPanel.configure(sampler.getJMSProperties()); // (TestElement) // el.getProperty(JMSSampler.JMS_PROPERTIES).getObjectValue()); jndiPropertiesPanel.configure(sampler.getJNDIProperties()); // (TestElement) // el.getProperty(JMSSampler.JNDI_PROPERTIES).getObjectValue()); } /** * Initializes the configuration screen. * */ private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); JPanel jmsQueueingPanel = new JPanel(new BorderLayout()); jmsQueueingPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("jms_queueing"))); //$NON-NLS-1$ JPanel qcfPanel = new JPanel(new BorderLayout(5, 0)); qcfPanel.add(queueConnectionFactory, BorderLayout.CENTER); jmsQueueingPanel.add(qcfPanel, BorderLayout.NORTH); JPanel sendQueuePanel = new JPanel(new BorderLayout(5, 0)); sendQueuePanel.add(sendQueue); jmsQueueingPanel.add(sendQueuePanel, BorderLayout.CENTER); JPanel receiveQueuePanel = new JPanel(new BorderLayout(5, 0)); receiveQueuePanel.add(jmsSelector,BorderLayout.EAST); receiveQueuePanel.add(receiveQueue,BorderLayout.WEST); jmsQueueingPanel.add(receiveQueuePanel, BorderLayout.SOUTH); JPanel messagePanel = new JPanel(new BorderLayout()); messagePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("jms_message_title"))); //$NON-NLS-1$ JPanel correlationPanel = new HorizontalPanel(); correlationPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("jms_correlation_title"))); //$NON-NLS-1$ useReqMsgIdAsCorrelId = new JCheckBox(JMeterUtils.getResString("jms_use_req_msgid_as_correlid"),false); //$NON-NLS-1$ useResMsgIdAsCorrelId = new JCheckBox(JMeterUtils.getResString("jms_use_res_msgid_as_correlid"),false); //$NON-NLS-1$ correlationPanel.add(useReqMsgIdAsCorrelId); correlationPanel.add(useResMsgIdAsCorrelId); JPanel messageNorthPanel = new JPanel(new BorderLayout()); JPanel onewayPanel = new HorizontalPanel(); onewayPanel.add(oneWay); onewayPanel.add(correlationPanel); messageNorthPanel.add(onewayPanel, BorderLayout.NORTH); useNonPersistentDelivery = new JCheckBox(JMeterUtils.getResString("jms_use_non_persistent_delivery"),false); //$NON-NLS-1$ JPanel timeoutPanel = new HorizontalPanel(); timeoutPanel.add(timeout); timeoutPanel.add(useNonPersistentDelivery); messageNorthPanel.add(timeoutPanel, BorderLayout.SOUTH); messagePanel.add(messageNorthPanel, BorderLayout.NORTH); JPanel soapXmlPanel = new JPanel(new BorderLayout()); soapXmlPanel.add(soapXml); messagePanel.add(soapXmlPanel, BorderLayout.CENTER); jmsPropertiesPanel = new ArgumentsPanel(JMeterUtils.getResString("jms_props")); //$NON-NLS-1$ messagePanel.add(jmsPropertiesPanel, BorderLayout.SOUTH); Box mainPanel = Box.createVerticalBox(); add(mainPanel, BorderLayout.CENTER); mainPanel.add(jmsQueueingPanel, BorderLayout.NORTH); mainPanel.add(messagePanel, BorderLayout.CENTER); JPanel jndiPanel = createJNDIPanel(); mainPanel.add(jndiPanel, BorderLayout.SOUTH); } /** * Creates the panel for the JNDI configuration. * * @return the JNDI Panel */ private JPanel createJNDIPanel() { JPanel jndiPanel = new JPanel(new BorderLayout()); jndiPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), JMeterUtils.getResString("jms_jndi_props"))); //$NON-NLS-1$ JPanel contextPanel = new JPanel(new BorderLayout(10, 0)); contextPanel.add(initialContextFactory); jndiPanel.add(contextPanel, BorderLayout.NORTH); JPanel providerPanel = new JPanel(new BorderLayout(10, 0)); providerPanel.add(providerUrl); jndiPanel.add(providerPanel, BorderLayout.SOUTH); jndiPropertiesPanel = new ArgumentsPanel(JMeterUtils.getResString("jms_jndi_props")); //$NON-NLS-1$ jndiPanel.add(jndiPropertiesPanel); return jndiPanel; } public String getLabelResource() { return "jms_point_to_point"; //$NON-NLS-1$ // TODO - probably wrong } }apache-jmeter-2.8/src/protocol/java/0000755000175000017500000000000012032647216016774 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/0000755000175000017500000000000012032647216017563 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/0000755000175000017500000000000012032647216021004 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/0000755000175000017500000000000012032647216022272 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024133 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/0000755000175000017500000000000012032647216025054 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/config/0000755000175000017500000000000012165514773026331 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/config/gui/0000755000175000017500000000000012165514773027115 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/config/gui/JavaConfigGui.java0000644000175000017500000002217312032647216032431 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.config.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.HorizontalPanel; import org.apache.jmeter.protocol.java.config.JavaConfig; import org.apache.jmeter.protocol.java.sampler.JavaSampler; import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.reflect.ClassFinder; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The JavaConfigGui class provides the user interface for the * {@link JavaConfig} object. * */ public class JavaConfigGui extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = 240L; /** Logging */ private static final Logger log = LoggingManager.getLoggerForClass(); /** A combo box allowing the user to choose a test class. */ private JComboBox classnameCombo; /** * Indicates whether or not the name of this component should be displayed * as part of the GUI. If true, this is a standalone component. If false, it * is embedded in some other component. */ private boolean displayName = true; /** A panel allowing the user to set arguments for this test. */ private ArgumentsPanel argsPanel; /** * Create a new JavaConfigGui as a standalone component. */ public JavaConfigGui() { this(true); } /** * Create a new JavaConfigGui as either a standalone or an embedded * component. * * @param displayNameField * tells whether the component name should be displayed with the * GUI. If true, this is a standalone component. If false, this * component is embedded in some other component. */ public JavaConfigGui(boolean displayNameField) { this.displayName = displayNameField; init(); } /** {@inheritDoc} */ public String getLabelResource() { return "java_request_defaults"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout. */ private void init() {// called from ctor, so must not be overridable setLayout(new BorderLayout(0, 5)); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } JPanel classnameRequestPanel = new JPanel(new BorderLayout(0, 5)); classnameRequestPanel.add(createClassnamePanel(), BorderLayout.NORTH); classnameRequestPanel.add(createParameterPanel(), BorderLayout.CENTER); add(classnameRequestPanel, BorderLayout.CENTER); } /** * Create a panel with GUI components allowing the user to select a test * class. * * @return a panel containing the relevant components */ private JPanel createClassnamePanel() { List possibleClasses = new ArrayList(); try { // Find all the classes which implement the JavaSamplerClient // interface. possibleClasses = ClassFinder.findClassesThatExtend(JMeterUtils.getSearchPaths(), new Class[] { JavaSamplerClient.class }); // Remove the JavaConfig class from the list since it only // implements the interface for error conditions. possibleClasses.remove(JavaSampler.class.getName() + "$ErrorSamplerClient"); } catch (Exception e) { log.debug("Exception getting interfaces.", e); } JLabel label = new JLabel(JMeterUtils.getResString("protocol_java_classname")); // $NON-NLS-1$ classnameCombo = new JComboBox(possibleClasses.toArray()); classnameCombo.addActionListener(this); classnameCombo.setEditable(false); label.setLabelFor(classnameCombo); HorizontalPanel panel = new HorizontalPanel(); panel.add(label); panel.add(classnameCombo); return panel; } /** * Handle action events for this component. This method currently handles * events for the classname combo box. * * @param evt * the ActionEvent to be handled */ public void actionPerformed(ActionEvent evt) { if (evt.getSource() == classnameCombo) { String className = ((String) classnameCombo.getSelectedItem()).trim(); try { JavaSamplerClient client = (JavaSamplerClient) Class.forName(className, true, Thread.currentThread().getContextClassLoader()).newInstance(); Arguments currArgs = new Arguments(); argsPanel.modifyTestElement(currArgs); Map currArgsMap = currArgs.getArgumentsAsMap(); Arguments newArgs = new Arguments(); Arguments testParams = null; try { testParams = client.getDefaultParameters(); } catch (AbstractMethodError e) { log.warn("JavaSamplerClient doesn't implement " + "getDefaultParameters. Default parameters won't " + "be shown. Please update your client class: " + className); } if (testParams != null) { PropertyIterator i = testParams.getArguments().iterator(); while (i.hasNext()) { Argument arg = (Argument) i.next().getObjectValue(); String name = arg.getName(); String value = arg.getValue(); // If a user has set parameters in one test, and then // selects a different test which supports the same // parameters, those parameters should have the same // values that they did in the original test. if (currArgsMap.containsKey(name)) { String newVal = currArgsMap.get(name); if (newVal != null && newVal.length() > 0) { value = newVal; } } newArgs.addArgument(name, value); } } argsPanel.configure(newArgs); } catch (Exception e) { log.error("Error getting argument list for " + className, e); } } } /** * Create a panel containing components allowing the user to provide * arguments to be passed to the test class instance. * * @return a panel containing the relevant components */ private JPanel createParameterPanel() { argsPanel = new ArgumentsPanel(JMeterUtils.getResString("paramtable")); // $NON-NLS-1$ return argsPanel; } /** {@inheritDoc} */ @Override public void configure(TestElement config) { super.configure(config); argsPanel.configure((Arguments) config.getProperty(JavaSampler.ARGUMENTS).getObjectValue()); classnameCombo.setSelectedItem(config.getPropertyAsString(JavaSampler.CLASSNAME)); } /** {@inheritDoc} */ public TestElement createTestElement() { JavaConfig config = new JavaConfig(); modifyTestElement(config); return config; } /** {@inheritDoc} */ public void modifyTestElement(TestElement config) { configureTestElement(config); ((JavaConfig) config).setArguments((Arguments) argsPanel.createTestElement()); ((JavaConfig) config).setClassname(String.valueOf(classnameCombo.getSelectedItem())); } /* (non-Javadoc) * @see org.apache.jmeter.gui.AbstractJMeterGuiComponent#clearGui() */ @Override public void clearGui() { super.clearGui(); this.displayName = true; argsPanel.clearGui(); classnameCombo.setSelectedIndex(0); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/config/JavaConfig.java0000644000175000017500000001033212032647216031172 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.config; import java.io.Serializable; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.protocol.java.sampler.JavaSampler; import org.apache.jmeter.testelement.property.TestElementProperty; /** * The JavaConfig class contains the configuration data necessary * for the Java protocol. This data is used to configure a * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerClient} instance to * perform performance test samples. * * @version $Revision: 905028 $ */ public class JavaConfig extends ConfigTestElement implements Serializable { private static final long serialVersionUID = 240L; /** * Constructor for the JavaConfig object */ public JavaConfig() { setArguments(new Arguments()); } /** * Sets the class name attribute of the JavaConfig object. This is the class * name of the * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerClient} * implementation which will be used to execute the test. * * @param classname * the new classname value */ public void setClassname(String classname) { setProperty(JavaSampler.CLASSNAME, classname); } /** * Gets the class name attribute of the JavaConfig object. This is the class * name of the * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerClient} * implementation which will be used to execute the test. * * @return the classname value */ public String getClassname() { return getPropertyAsString(JavaSampler.CLASSNAME); } /** * Adds an argument to the list of arguments for this JavaConfig object. The * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerClient} * implementation can access these arguments through the * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerContext}. * * @param name * the name of the argument to be added * @param value * the value of the argument to be added */ public void addArgument(String name, String value) { Arguments args = this.getArguments(); args.addArgument(name, value); } /** * Removes all of the arguments associated with this JavaConfig object. */ public void removeArguments() { setProperty(new TestElementProperty(JavaSampler.ARGUMENTS, new Arguments())); } /** * Set all of the arguments for this JavaConfig object. This will replace * any previously added arguments. The * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerClient} * implementation can access these arguments through the * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerContext}. * * @param args * the new arguments */ public void setArguments(Arguments args) { setProperty(new TestElementProperty(JavaSampler.ARGUMENTS, args)); } /** * Gets the arguments for this JavaConfig object. The * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerClient} * implementation can access these arguments through the * {@link org.apache.jmeter.protocol.java.sampler.JavaSamplerContext}. * * @return the arguments */ public Arguments getArguments() { return (Arguments) getProperty(JavaSampler.ARGUMENTS).getObjectValue(); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/test/0000755000175000017500000000000012165514773026043 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java0000644000175000017500000001751612032647216030620 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.test; import java.io.Serializable; import java.util.Iterator; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The SleepTest class is a simple example class for a JMeter * Java protocol client. The class implements the JavaSamplerClient * interface. *

        * During each sample, this client will sleep for some amount of time. The * amount of time to sleep is determined from the two parameters SleepTime and * SleepMask using the formula: * *

         * totalSleepTime = SleepTime + (System.currentTimeMillis() % SleepMask)
         * 
        * * Thus, the SleepMask provides a way to add a random component to the sleep * time. * * @version $Revision: 1378304 $ */ public class SleepTest extends AbstractJavaSamplerClient implements Serializable { private static final Logger LOG = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; /** * The default value of the SleepTime parameter, in milliseconds. */ public static final long DEFAULT_SLEEP_TIME = 1000; /** * The default value of the SleepMask parameter. */ public static final long DEFAULT_SLEEP_MASK = 0x3ff; /** * The base number of milliseconds to sleep during each sample. */ private long sleepTime; /** * A mask to be applied to the current time in order to add a random * component to the sleep time. */ private long sleepMask; /** * Default constructor for SleepTest. * * The Java Sampler uses the default constructor to instantiate an instance * of the client class. */ public SleepTest() { LOG.debug(whoAmI() + "\tConstruct"); } /** * Do any initialization required by this client. In this case, * initialization consists of getting the values of the SleepTime and * SleepMask parameters. It is generally recommended to do any * initialization such as getting parameter values in the setupTest method * rather than the runTest method in order to add as little overhead as * possible to the test. * * @param context * the context to run with. This provides access to * initialization parameters. */ @Override public void setupTest(JavaSamplerContext context) { if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\tsetupTest()"); listParameters(context); } sleepTime = context.getLongParameter("SleepTime", DEFAULT_SLEEP_TIME); sleepMask = context.getLongParameter("SleepMask", DEFAULT_SLEEP_MASK); } /** * Perform a single sample. In this case, this method will simply sleep for * some amount of time. Perform a single sample for each iteration. This * method returns a SampleResult object. * SampleResult has many fields which can be used. At a * minimum, the test should use SampleResult.sampleStart and * SampleResult.sampleEndto set the time that the test * required to execute. It is also a good idea to set the sampleLabel and * the successful flag. * * @see org.apache.jmeter.samplers.SampleResult#sampleStart() * @see org.apache.jmeter.samplers.SampleResult#sampleEnd() * @see org.apache.jmeter.samplers.SampleResult#setSuccessful(boolean) * @see org.apache.jmeter.samplers.SampleResult#setSampleLabel(String) * * @param context * the context to run with. This provides access to * initialization parameters. * * @return a SampleResult giving the results of this sample. */ public SampleResult runTest(JavaSamplerContext context) { SampleResult results = new SampleResult(); try { // Record sample start time. results.sampleStart(); long sleep = sleepTime; // Only do the calculation if it is needed if (sleepTime > 0 && sleepMask > 0) { long start = System.currentTimeMillis(); // Generate a random-ish offset value using the current time. sleep = sleepTime + (start % sleepMask); } results.setSampleLabel("Sleep Test: time = " + sleep); // Execute the sample. In this case sleep for the // specified time. Thread.sleep(sleep); results.setSuccessful(true); } catch (InterruptedException e) { LOG.warn("SleepTest: interrupted."); results.setSuccessful(true); } catch (Exception e) { LOG.error("SleepTest: error during sample", e); results.setSuccessful(false); } finally { results.sampleEnd(); } if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime()); listParameters(context); } return results; } /** * Provide a list of parameters which this test supports. Any parameter * names and associated values returned by this method will appear in the * GUI by default so the user doesn't have to remember the exact names. The * user can add other parameters which are not listed here. If this method * returns null then no parameters will be listed. If the value for some * parameter is null then that parameter will be listed in the GUI with an * empty value. * * @return a specification of the parameters used by this test which should * be listed in the GUI, or null if no parameters should be listed. */ @Override public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("SleepTime", String.valueOf(DEFAULT_SLEEP_TIME)); params.addArgument("SleepMask", "0x" + (Long.toHexString(DEFAULT_SLEEP_MASK)).toUpperCase(java.util.Locale.ENGLISH)); return params; } /** * Dump a list of the parameters in this context to the debug log. * * @param context * the context which contains the initialization parameters. */ private void listParameters(JavaSamplerContext context) { Iterator argsIt = context.getParameterNamesIterator(); while (argsIt.hasNext()) { String name = argsIt.next(); LOG.debug(name + "=" + context.getParameter(name)); } } /** * Generate a String identifier of this test for debugging purposes. * * @return a String identifier for this test instance */ private String whoAmI() { StringBuilder sb = new StringBuilder(); sb.append(Thread.currentThread().toString()); sb.append("@"); sb.append(Integer.toHexString(hashCode())); return sb.toString(); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java0000644000175000017500000003116012032647216030420 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.test; import java.io.Serializable; import java.util.Iterator; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The JavaTest class is a simple sampler which is intended for * use when developing test plans. The sampler generates results internally, so * does not need access to any external resources such as web, ftp or LDAP * servers. In addition, because the exact values of most of the SampleResult * can be directly set, it is possible to easily test most Assertions that use * the sample results. * *

        * During each sample, this client will sleep for some amount of time. The * amount of time to sleep is determined from the two parameters Sleep_Time and * Sleep_Mask using the formula: * *

         * totalSleepTime = Sleep_Time + (System.currentTimeMillis() % Sleep_Mask)
         * 
        * * Thus, the Sleep_Mask provides a way to add a random component to the sleep * time. *

        * The sampler is able to define the precise values of: * *

         *
         *  - responseCode
         *  - responseMessage
         *  - Label
         *  - success/fail status
         *
         * 
        * * The elapsed time and end-time cannot be directly controlled. *

        * Note: this class was derived from {@link SleepTest}. * */ public class JavaTest extends AbstractJavaSamplerClient implements Serializable { private static final Logger LOG = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; /** The base number of milliseconds to sleep during each sample. */ private long sleepTime; /** The default value of the SleepTime parameter, in milliseconds. */ public static final long DEFAULT_SLEEP_TIME = 100; /** The name used to store the SleepTime parameter. */ private static final String SLEEP_NAME = "Sleep_Time"; /** * A mask to be applied to the current time in order to add a semi-random * component to the sleep time. */ private long sleepMask; /** The default value of the SleepMask parameter. */ public static final long DEFAULT_SLEEP_MASK = 0xff; /** Formatted string representation of the default SleepMask. */ private static final String DEFAULT_MASK_STRING = "0x" + (Long.toHexString(DEFAULT_SLEEP_MASK)).toUpperCase(java.util.Locale.ENGLISH); /** The name used to store the SleepMask parameter. */ private static final String MASK_NAME = "Sleep_Mask"; /** The label to store in the sample result. */ private String label; /** The default value of the Label parameter. */ // private static final String LABEL_DEFAULT = "JavaTest"; /** The name used to store the Label parameter. */ private static final String LABEL_NAME = "Label"; /** The response message to store in the sample result. */ private String responseMessage; /** The default value of the ResponseMessage parameter. */ private static final String RESPONSE_MESSAGE_DEFAULT = ""; /** The name used to store the ResponseMessage parameter. */ private static final String RESPONSE_MESSAGE_NAME = "ResponseMessage"; /** The response code to be stored in the sample result. */ private String responseCode; /** The default value of the ResponseCode parameter. */ private static final String RESPONSE_CODE_DEFAULT = ""; /** The name used to store the ResponseCode parameter. */ private static final String RESPONSE_CODE_NAME = "ResponseCode"; /** The sampler data (shown as Request Data in the Tree display). */ private String samplerData; /** The default value of the SamplerData parameter. */ private static final String SAMPLER_DATA_DEFAULT = ""; /** The name used to store the SamplerData parameter. */ private static final String SAMPLER_DATA_NAME = "SamplerData"; /** Holds the result data (shown as Response Data in the Tree display). */ private String resultData; /** The default value of the ResultData parameter. */ private static final String RESULT_DATA_DEFAULT = ""; /** The name used to store the ResultData parameter. */ private static final String RESULT_DATA_NAME = "ResultData"; /** The success status to be stored in the sample result. */ private boolean success; /** The default value of the Success Status parameter. */ private static final String SUCCESS_DEFAULT = "OK"; /** The name used to store the Success Status parameter. */ private static final String SUCCESS_NAME = "Status"; /** * Default constructor for JavaTest. * * The Java Sampler uses the default constructor to instantiate an instance * of the client class. */ public JavaTest() { LOG.debug(whoAmI() + "\tConstruct"); } /* * Utility method to set up all the values */ private void setupValues(JavaSamplerContext context) { sleepTime = context.getLongParameter(SLEEP_NAME, DEFAULT_SLEEP_TIME); sleepMask = context.getLongParameter(MASK_NAME, DEFAULT_SLEEP_MASK); responseMessage = context.getParameter(RESPONSE_MESSAGE_NAME, RESPONSE_MESSAGE_DEFAULT); responseCode = context.getParameter(RESPONSE_CODE_NAME, RESPONSE_CODE_DEFAULT); success = context.getParameter(SUCCESS_NAME, SUCCESS_DEFAULT).equalsIgnoreCase("OK"); label = context.getParameter(LABEL_NAME, ""); if (label.length() == 0) { label = context.getParameter(TestElement.NAME); // default to name of element } samplerData = context.getParameter(SAMPLER_DATA_NAME, SAMPLER_DATA_DEFAULT); resultData = context.getParameter(RESULT_DATA_NAME, RESULT_DATA_DEFAULT); } /** * Do any initialization required by this client. * * There is none, as it is done in runTest() in order to be able to vary the * data for each sample. * * @param context * the context to run with. This provides access to * initialization parameters. */ @Override public void setupTest(JavaSamplerContext context) { if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\tsetupTest()"); listParameters(context); } } /** * Provide a list of parameters which this test supports. Any parameter * names and associated values returned by this method will appear in the * GUI by default so the user doesn't have to remember the exact names. The * user can add other parameters which are not listed here. If this method * returns null then no parameters will be listed. If the value for some * parameter is null then that parameter will be listed in the GUI with an * empty value. * * @return a specification of the parameters used by this test which should * be listed in the GUI, or null if no parameters should be listed. */ @Override public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument(SLEEP_NAME, String.valueOf(DEFAULT_SLEEP_TIME)); params.addArgument(MASK_NAME, DEFAULT_MASK_STRING); params.addArgument(LABEL_NAME, ""); params.addArgument(RESPONSE_CODE_NAME, RESPONSE_CODE_DEFAULT); params.addArgument(RESPONSE_MESSAGE_NAME, RESPONSE_MESSAGE_DEFAULT); params.addArgument(SUCCESS_NAME, SUCCESS_DEFAULT); params.addArgument(SAMPLER_DATA_NAME, SAMPLER_DATA_DEFAULT); params.addArgument(RESULT_DATA_NAME, SAMPLER_DATA_DEFAULT); return params; } /** * Perform a single sample.
        * In this case, this method will simply sleep for some amount of time. * * This method returns a SampleResult object. * *

             *
             *  The following fields are always set:
             *  - responseCode (default "")
             *  - responseMessage (default "")
             *  - label (set from LABEL_NAME parameter if it exists, else element name)
             *  - success (default true)
             *
             * 
        * * The following fields are set from the user-defined parameters, if * supplied: * *
             * -samplerData - responseData
             * 
        * * @see org.apache.jmeter.samplers.SampleResult#sampleStart() * @see org.apache.jmeter.samplers.SampleResult#sampleEnd() * @see org.apache.jmeter.samplers.SampleResult#setSuccessful(boolean) * @see org.apache.jmeter.samplers.SampleResult#setSampleLabel(String) * @see org.apache.jmeter.samplers.SampleResult#setResponseCode(String) * @see org.apache.jmeter.samplers.SampleResult#setResponseMessage(String) * @see org.apache.jmeter.samplers.SampleResult#setResponseData(byte []) * @see org.apache.jmeter.samplers.SampleResult#setDataType(String) * * @param context * the context to run with. This provides access to * initialization parameters. * * @return a SampleResult giving the results of this sample. */ public SampleResult runTest(JavaSamplerContext context) { setupValues(context); SampleResult results = new SampleResult(); results.setResponseCode(responseCode); results.setResponseMessage(responseMessage); results.setSampleLabel(label); if (samplerData != null && samplerData.length() > 0) { results.setSamplerData(samplerData); } if (resultData != null && resultData.length() > 0) { results.setResponseData(resultData, null); results.setDataType(SampleResult.TEXT); } // Record sample start time. results.sampleStart(); long sleep = sleepTime; if (sleepTime > 0 && sleepMask > 0) { // / Only do the calculation if // it is needed long start = System.currentTimeMillis(); // Generate a random-ish offset value using the current time. sleep = sleepTime + (start % sleepMask); } try { // Execute the sample. In this case sleep for the // specified time, if any if (sleep > 0) { Thread.sleep(sleep); } results.setSuccessful(success); } catch (InterruptedException e) { LOG.warn("JavaTest: interrupted."); results.setSuccessful(true); } catch (Exception e) { LOG.error("JavaTest: error during sample", e); results.setSuccessful(false); } finally { // Record end time and populate the results. results.sampleEnd(); } if (LOG.isDebugEnabled()) { LOG.debug(whoAmI() + "\trunTest()" + "\tTime:\t" + results.getTime()); listParameters(context); } return results; } /** * Dump a list of the parameters in this context to the debug log. * Should only be called if debug is enabled. * * @param context * the context which contains the initialization parameters. */ private void listParameters(JavaSamplerContext context) { Iterator argsIt = context.getParameterNamesIterator(); while (argsIt.hasNext()) { String name = argsIt.next(); LOG.debug(name + "=" + context.getParameter(name)); } } /** * Generate a String identifier of this test for debugging purposes. * * @return a String identifier for this test instance */ private String whoAmI() { StringBuilder sb = new StringBuilder(); sb.append(Thread.currentThread().toString()); sb.append("@"); sb.append(Integer.toHexString(hashCode())); return sb.toString(); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/0000755000175000017500000000000012165514773026527 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSamplerClient.java0000644000175000017500000001307612032647216032735 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.samplers.SampleResult; /** * This interface defines the interactions between the JavaSampler and external * Java programs which can be executed by JMeter. Any Java class which wants to * be executed as a JMeter test must implement this interface (either directly * or indirectly through AbstractJavaSamplerClient). *

        * JMeter will create one instance of a JavaSamplerClient implementation for * each user/thread in the test. Additional instances may be created for * internal use by JMeter (for example, to find out what parameters are * supported by the client). *

        * When the test is started, setupTest() will be called on each thread's * JavaSamplerClient instance to initialize the client. Then runTest() will be * called for each iteration of the test. Finally, teardownTest() will be called * to allow the client to do any necessary clean-up. *

        * The JMeter JavaSampler GUI allows a list of parameters to be defined for the * test. These are passed to the various test methods through the * {@link JavaSamplerContext}. A list of default parameters can be defined * through the getDefaultParameters() method. These parameters and any default * values associated with them will be shown in the GUI. Users can add other * parameters as well. *

        * When possible, Java tests should extend {@link AbstractJavaSamplerClient * AbstractJavaSamplerClient} rather than implementing JavaSamplerClient * directly. This should protect your tests from future changes to the * interface. While it may be necessary to make changes to the JavaSamplerClient * interface from time to time (therefore requiring changes to any * implementations of this interface), we intend to make this abstract class * provide reasonable default implementations of any new methods so that * subclasses do not necessarily need to be updated for new versions. * Implementing JavaSamplerClient directly will continue to be supported for * cases where extending this class is not possible (for example, when the * client class is already a subclass of some other class). *

        * See {@link org.apache.jmeter.protocol.java.test.SleepTest} for an example of * how to implement this interface. * * @version $Revision: 674365 $ */ public interface JavaSamplerClient { /** * Do any initialization required by this client. It is generally * recommended to do any initialization such as getting parameter values in * the setupTest method rather than the runTest method in order to add as * little overhead as possible to the test. * * @param context * the context to run with. This provides access to * initialization parameters. */ void setupTest(JavaSamplerContext context); /** * Perform a single sample for each iteration. This method returns a * SampleResult object. SampleResult has many * fields which can be used. At a minimum, the test should use * SampleResult.sampleStart and * SampleResult.sampleEndto set the time that the test * required to execute. It is also a good idea to set the sampleLabel and * the successful flag. * * @see org.apache.jmeter.samplers.SampleResult#sampleStart() * @see org.apache.jmeter.samplers.SampleResult#sampleEnd() * @see org.apache.jmeter.samplers.SampleResult#setSuccessful(boolean) * @see org.apache.jmeter.samplers.SampleResult#setSampleLabel(String) * * @param context * the context to run with. This provides access to * initialization parameters. * * @return a SampleResult giving the results of this sample. */ SampleResult runTest(JavaSamplerContext context); /** * Do any clean-up required by this test at the end of a test run. * * @param context * the context to run with. This provides access to * initialization parameters. */ void teardownTest(JavaSamplerContext context); /** * Provide a list of parameters which this test supports. Any parameter * names and associated values returned by this method will appear in the * GUI by default so the user doesn't have to remember the exact names. The * user can add other parameters which are not listed here. If this method * returns null then no parameters will be listed. If the value for some * parameter is null then that parameter will be listed in the GUI with an * empty value. * * @return a specification of the parameters used by this test which should * be listed in the GUI, or null if no parameters should be listed. */ Arguments getDefaultParameters(); } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerBeanInfo.javaapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerBeanInfo.ja0000644000175000017500000000203312032647216032644 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import org.apache.jmeter.util.BSFBeanInfoSupport; public class JSR223SamplerBeanInfo extends BSFBeanInfoSupport { public JSR223SamplerBeanInfo() { super(JSR223Sampler.class); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSamplerContext.java0000644000175000017500000002045212032647216033137 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import java.util.Iterator; import java.util.Map; import org.apache.jmeter.config.Arguments; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * JavaSamplerContext is used to provide context information to a * JavaSamplerClient implementation. This currently consists of the * initialization parameters which were specified in the GUI. Additional data * may be accessible through JavaSamplerContext in the future. * * @version $Revision: 901937 $ */ public class JavaSamplerContext { /* * Implementation notes: * * All of the methods in this class are currently read-only. If update * methods are included in the future, they should be defined so that a * single instance of JavaSamplerContext can be associated with each thread. * Therefore, no synchronization should be needed. The same instance should * be used for the call to setupTest, all calls to runTest, and the call to * teardownTest. */ /** Logging */ private static final Logger log = LoggingManager.getLoggerForClass(); /** * Map containing the initialization parameters for the JavaSamplerClient. */ private final Map params; /** * Create a new JavaSampler with the specified initialization parameters. * * @param args * the initialization parameters. */ public JavaSamplerContext(Arguments args) { this.params = args.getArgumentsAsMap(); } /** * Determine whether or not a value has been specified for the parameter * with this name. * * @param name * the name of the parameter to test * @return true if the parameter value has been specified, false otherwise. */ public boolean containsParameter(String name) { return params.containsKey(name); } /** * Get an iterator of the parameter names. Each entry in the Iterator is a * String. * * @return an Iterator of Strings listing the names of the parameters which * have been specified for this test. */ public Iterator getParameterNamesIterator() { return params.keySet().iterator(); } /** * Get the value of a specific parameter as a String, or null if the value * was not specified. * * @param name * the name of the parameter whose value should be retrieved * @return the value of the parameter, or null if the value was not * specified */ public String getParameter(String name) { return getParameter(name, null); } /** * Get the value of a specified parameter as a String, or return the * specified default value if the value was not specified. * * @param name * the name of the parameter whose value should be retrieved * @param defaultValue * the default value to return if the value of this parameter was * not specified * @return the value of the parameter, or the default value if the parameter * was not specified */ public String getParameter(String name, String defaultValue) { if (params == null || !params.containsKey(name)) { return defaultValue; } return params.get(name); } /** * Get the value of a specified parameter as an integer. An exception will * be thrown if the parameter is not specified or if it is not an integer. * The value may be specified in decimal, hexadecimal, or octal, as defined * by Integer.decode(). * * @param name * the name of the parameter whose value should be retrieved * @return the value of the parameter * * @throws NumberFormatException * if the parameter is not specified or is not an integer * * @see java.lang.Integer#decode(java.lang.String) */ public int getIntParameter(String name) throws NumberFormatException { if (params == null || !params.containsKey(name)) { throw new NumberFormatException("No value for parameter named '" + name + "'."); } return Integer.decode(params.get(name)).intValue(); } /** * Get the value of a specified parameter as an integer, or return the * specified default value if the value was not specified or is not an * integer. A warning will be logged if the value is not an integer. The * value may be specified in decimal, hexadecimal, or octal, as defined by * Integer.decode(). * * @param name * the name of the parameter whose value should be retrieved * @param defaultValue * the default value to return if the value of this parameter was * not specified * @return the value of the parameter, or the default value if the parameter * was not specified * * @see java.lang.Integer#decode(java.lang.String) */ public int getIntParameter(String name, int defaultValue) { if (params == null || !params.containsKey(name)) { return defaultValue; } try { return Integer.decode(params.get(name)).intValue(); } catch (NumberFormatException e) { log.warn("Value for parameter '" + name + "' not an integer: '" + params.get(name) + "'. Using default: '" + defaultValue + "'.", e); return defaultValue; } } /** * Get the value of a specified parameter as a long. An exception will be * thrown if the parameter is not specified or if it is not a long. The * value may be specified in decimal, hexadecimal, or octal, as defined by * Long.decode(). * * @param name * the name of the parameter whose value should be retrieved * @return the value of the parameter * * @throws NumberFormatException * if the parameter is not specified or is not a long * * @see Long#decode(String) */ public long getLongParameter(String name) throws NumberFormatException { if (params == null || !params.containsKey(name)) { throw new NumberFormatException("No value for parameter named '" + name + "'."); } return Long.decode(params.get(name)).longValue(); } /** * Get the value of a specified parameter as along, or return the specified * default value if the value was not specified or is not a long. A warning * will be logged if the value is not a long. The value may be specified in * decimal, hexadecimal, or octal, as defined by Long.decode(). * * @param name * the name of the parameter whose value should be retrieved * @param defaultValue * the default value to return if the value of this parameter was * not specified * @return the value of the parameter, or the default value if the parameter * was not specified * * @see Long#decode(String) */ public long getLongParameter(String name, long defaultValue) { if (params == null || !params.containsKey(name)) { return defaultValue; } try { return Long.decode(params.get(name)).longValue(); } catch (NumberFormatException e) { log.warn("Value for parameter '" + name + "' not a long: '" + params.get(name) + "'. Using default: '" + defaultValue + "'.", e); return defaultValue; } } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSampler.java0000644000175000017500000001313612032647216031324 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.bsf.BSFEngine; import org.apache.bsf.BSFException; import org.apache.bsf.BSFManager; import org.apache.commons.io.IOUtils; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.util.ConfigMergabilityIndicator; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.BSFTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A sampler which understands BSF * */ public class BSFSampler extends BSFTestElement implements Sampler, TestBean, ConfigMergabilityIndicator { private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private static final long serialVersionUID = 240L; private static final Logger log = LoggingManager.getLoggerForClass(); public BSFSampler() { super(); } /** * Returns a formatted string label describing this sampler * * @return a formatted string label describing this sampler */ public String getLabel() { return getName(); } public SampleResult sample(Entry e)// Entry tends to be ignored ... { final String label = getLabel(); final String request = getScript(); final String fileName = getFilename(); log.debug(label + " " + fileName); SampleResult res = new SampleResult(); res.setSampleLabel(label); InputStream is = null; BSFEngine bsfEngine = null; // There's little point saving the manager between invocations // as we need to reset most of the beans anyway BSFManager mgr = new BSFManager(); // TODO: find out how to retrieve these from the script // At present the script has to use SampleResult methods to set them. res.setResponseCode("200"); // $NON-NLS-1$ res.setResponseMessage("OK"); // $NON-NLS-1$ res.setSuccessful(true); res.setDataType(SampleResult.TEXT); // Default (can be overridden by the script) res.sampleStart(); try { initManager(mgr); mgr.declareBean("SampleResult", res, res.getClass()); // $NON-NLS-1$ // These are not useful yet, as have not found how to get updated values back //mgr.declareBean("ResponseCode", "200", String.class); // $NON-NLS-1$ //mgr.declareBean("ResponseMessage", "OK", String.class); // $NON-NLS-1$ //mgr.declareBean("IsSuccess", Boolean.TRUE, Boolean.class); // $NON-NLS-1$ // N.B. some engines (e.g. Javascript) cannot handle certain declareBean() calls // after the engine has been initialised, so create the engine last bsfEngine = mgr.loadScriptingEngine(getScriptLanguage()); Object bsfOut = null; if (fileName.length()>0) { res.setSamplerData("File: "+fileName); is = new BufferedInputStream(new FileInputStream(fileName)); bsfOut = bsfEngine.eval(fileName, 0, 0, IOUtils.toString(is)); } else { res.setSamplerData(request); bsfOut = bsfEngine.eval("script", 0, 0, request); } if (bsfOut != null) { res.setResponseData(bsfOut.toString(), null); } } catch (BSFException ex) { log.warn("BSF error", ex); res.setSuccessful(false); res.setResponseCode("500"); // $NON-NLS-1$ res.setResponseMessage(ex.toString()); } catch (Exception ex) {// Catch evaluation errors log.warn("Problem evaluating the script", ex); res.setSuccessful(false); res.setResponseCode("500"); // $NON-NLS-1$ res.setResponseMessage(ex.toString()); } finally { res.sampleEnd(); IOUtils.closeQuietly(is); // Will be done by mgr.terminate() anyway // if (bsfEngine != null) { // bsfEngine.terminate(); // } mgr.terminate(); } return res; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSamplerBeanInfo.java0000644000175000017500000000206012032647216032720 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ package org.apache.jmeter.protocol.java.sampler; import org.apache.jmeter.util.BSFBeanInfoSupport; /** * BSF Sampler Bean Info */ public class BSFSamplerBeanInfo extends BSFBeanInfoSupport { public BSFSamplerBeanInfo() { super(BSFSampler.class); } }././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerResources.propertiesapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerResources.p0000644000175000017500000000311112032647216033000 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=JSR223 Sampler scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of JSR 223 language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props SampleResult sampler log Label Filename Parameters args[] OUT) script.displayName=Script script.shortDescription=Script in the appropriate JSR 223 language parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script filenameGroup.displayName=Script file (overrides script) filename.displayName=File Name filename.shortDescription=Script file (overrides script)apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BeanShellSampler.java0000644000175000017500000001526312032647216032552 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.util.ConfigMergabilityIndicator; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.Interruptible; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.BeanShellTestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterException; import org.apache.log.Logger; /** * A sampler which understands BeanShell * */ public class BeanShellSampler extends BeanShellTestElement implements Sampler, Interruptible, ConfigMergabilityIndicator { private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 3; public static final String FILENAME = "BeanShellSampler.filename"; //$NON-NLS-1$ public static final String SCRIPT = "BeanShellSampler.query"; //$NON-NLS-1$ public static final String PARAMETERS = "BeanShellSampler.parameters"; //$NON-NLS-1$ public static final String INIT_FILE = "beanshell.sampler.init"; //$NON-NLS-1$ public static final String RESET_INTERPRETER = "BeanShellSampler.resetInterpreter"; //$NON-NLS-1$ private transient volatile BeanShellInterpreter savedBsh = null; @Override protected String getInitFileProperty() { return INIT_FILE; } @Override public String getScript() { return this.getPropertyAsString(SCRIPT); } @Override public String getFilename() { return getPropertyAsString(FILENAME); } @Override public String getParameters() { return getPropertyAsString(PARAMETERS); } @Override public boolean isResetInterpreter() { return getPropertyAsBoolean(RESET_INTERPRETER); } public SampleResult sample(Entry e)// Entry tends to be ignored ... { // log.info(getLabel()+" "+getFilename()); SampleResult res = new SampleResult(); boolean isSuccessful = false; res.setSampleLabel(getName()); res.sampleStart(); final BeanShellInterpreter bshInterpreter = getBeanShellInterpreter(); if (bshInterpreter == null) { res.sampleEnd(); res.setResponseCode("503");//$NON-NLS-1$ res.setResponseMessage("BeanShell Interpreter not found"); res.setSuccessful(false); return res; } try { String request = getScript(); String fileName = getFilename(); if (fileName.length() == 0) { res.setSamplerData(request); } else { res.setSamplerData(fileName); } bshInterpreter.set("SampleResult", res); //$NON-NLS-1$ // Set default values bshInterpreter.set("ResponseCode", "200"); //$NON-NLS-1$ bshInterpreter.set("ResponseMessage", "OK");//$NON-NLS-1$ bshInterpreter.set("IsSuccess", true);//$NON-NLS-1$ res.setDataType(SampleResult.TEXT); // assume text output - script can override if necessary savedBsh = bshInterpreter; Object bshOut = processFileOrScript(bshInterpreter); savedBsh = null; if (bshOut != null) {// Set response data String out = bshOut.toString(); res.setResponseData(out, null); } // script can also use setResponseData() so long as it returns null res.setResponseCode(bshInterpreter.get("ResponseCode").toString());//$NON-NLS-1$ res.setResponseMessage(bshInterpreter.get("ResponseMessage").toString());//$NON-NLS-1$ isSuccessful = Boolean.valueOf(bshInterpreter.get("IsSuccess") //$NON-NLS-1$ .toString()).booleanValue(); } /* * To avoid class loading problems when bsh,jar is missing, we don't try * to catch this error separately catch (bsh.EvalError ex) { * log.debug("",ex); res.setResponseCode("500");//$NON-NLS-1$ * res.setResponseMessage(ex.toString()); } */ // but we do trap this error to make tests work better catch (NoClassDefFoundError ex) { log.error("BeanShell Jar missing? " + ex.toString()); res.setResponseCode("501");//$NON-NLS-1$ res.setResponseMessage(ex.toString()); res.setStopThread(true); // No point continuing } catch (Exception ex) // Mainly for bsh.EvalError { log.warn(ex.toString()); res.setResponseCode("500");//$NON-NLS-1$ res.setResponseMessage(ex.toString()); } finally { savedBsh = null; } res.sampleEnd(); // Set if we were successful or not res.setSuccessful(isSuccessful); return res; } public boolean interrupt() { if (savedBsh != null) { try { savedBsh.evalNoLog("interrupt()"); // $NON-NLS-1$ } catch (JMeterException ignored) { log.debug(getClass().getName() + " : " + ignored.getLocalizedMessage()); // $NON-NLS-1$ } return true; } return false; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } }././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerResources_fr.propertiesapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerResources_f0000644000175000017500000000323012032647216033051 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Echantillon JSR223 filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage JSR223 appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage JSR223, ex. beanshell, javascript, jexl scripting.displayName=Script (variables \: ctx vars props SampleResult sampler log Label Filename Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.javaapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClien0000644000175000017500000000657612032647216033324 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import org.apache.jmeter.config.Arguments; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * An abstract implementation of the JavaSamplerClient interface. This * implementation provides default implementations of most of the methods in the * interface, as well as some convenience methods, in order to simplify * development of JavaSamplerClient implementations. *

        * See {@link org.apache.jmeter.protocol.java.test.SleepTest} for an example of * how to extend this class. *

        * While it may be necessary to make changes to the JavaSamplerClient interface * from time to time (therefore requiring changes to any implementations of this * interface), we intend to make this abstract class provide reasonable * implementations of any new methods so that subclasses do not necessarily need * to be updated for new versions. Therefore, when creating a new * JavaSamplerClient implementation, developers are encouraged to subclass this * abstract class rather than implementing the JavaSamplerClient interface * directly. Implementing JavaSamplerClient directly will continue to be * supported for cases where extending this class is not possible (for example, * when the client class is already a subclass of some other class). *

        * The runTest() method of JavaSamplerClient does not have a default * implementation here, so subclasses must define at least this method. It may * be useful to override other methods as well. * * @see JavaSamplerClient#runTest(JavaSamplerContext) * * @version $Revision: 674365 $ */ public abstract class AbstractJavaSamplerClient implements JavaSamplerClient { private static final Logger log = LoggingManager.getLoggerForClass(); /* Implements JavaSamplerClient.setupTest(JavaSamplerContext) */ public void setupTest(JavaSamplerContext context) { log.debug(getClass().getName() + ": setupTest"); } /* Implements JavaSamplerClient.teardownTest(JavaSamplerContext) */ public void teardownTest(JavaSamplerContext context) { log.debug(getClass().getName() + ": teardownTest"); } /* Implements JavaSamplerClient.getDefaultParameters() */ public Arguments getDefaultParameters() { return null; } /** * Get a Logger instance which can be used by subclasses to log information. * This is the same Logger which is used by the base JavaSampler classes * (jmeter.protocol.java). * * @return a Logger instance which can be used for logging */ protected Logger getLogger() { return log; } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java0000644000175000017500000002621512032647216031575 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A sampler for executing custom Java code in each sample. See * {@link JavaSamplerClient} and {@link AbstractJavaSamplerClient} for * information on writing Java code to be executed by this sampler. * */ public class JavaSampler extends AbstractSampler implements TestStateListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 232L; // Remember to change this when the class changes ... private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.protocol.java.config.gui.JavaConfigGui", "org.apache.jmeter.config.gui.SimpleConfigGui"})); /** * Set used to register instances which implement tearDownTest. * This is used so that the JavaSamplerClient can be notified when the test ends. */ private static final Set TEAR_DOWN_SET = new HashSet(); /** * Property key representing the classname of the JavaSamplerClient to user. */ public static final String CLASSNAME = "classname"; /** * Property key representing the arguments for the JavaSamplerClient. */ public static final String ARGUMENTS = "arguments"; /** * The JavaSamplerClient class used by this sampler. * Created by testStarted; copied to cloned instances. */ private Class javaClass; /** * If true, the JavaSamplerClient class implements tearDownTest. * Created by testStarted; copied to cloned instances. */ private boolean isToBeRegistered; /** * The JavaSamplerClient instance used by this sampler to actually perform * the sample. */ private transient JavaSamplerClient javaClient = null; /** * The JavaSamplerContext instance used by this sampler to hold information * related to the test run, such as the parameters specified for the sampler * client. */ private transient JavaSamplerContext context = null; /** * Create a JavaSampler. */ public JavaSampler() { setArguments(new Arguments()); } /* * Ensure that the required class variables are cloned, * as this is not currently done by the super-implementation. */ @Override public Object clone() { JavaSampler clone = (JavaSampler) super.clone(); clone.javaClass = this.javaClass; clone.isToBeRegistered = this.isToBeRegistered; return clone; } private void initClass() { String name = getClassname().trim(); try { javaClass = Class.forName(name, false, Thread.currentThread().getContextClassLoader()); Method method = javaClass.getMethod("teardownTest", new Class[]{JavaSamplerContext.class}); isToBeRegistered = !method.getDeclaringClass().equals(AbstractJavaSamplerClient.class); log.info("Created class: " + name + ". Uses tearDownTest: " + isToBeRegistered); } catch (Exception e) { log.error(whoAmI() + "\tException initialising: " + name, e); } } /** * Set the arguments (parameters) for the JavaSamplerClient to be executed * with. * * @param args * the new arguments. These replace any existing arguments. */ public void setArguments(Arguments args) { setProperty(new TestElementProperty(ARGUMENTS, args)); } /** * Get the arguments (parameters) for the JavaSamplerClient to be executed * with. * * @return the arguments */ public Arguments getArguments() { return (Arguments) getProperty(ARGUMENTS).getObjectValue(); } /** * Sets the Classname attribute of the JavaConfig object * * @param classname * the new Classname value */ public void setClassname(String classname) { setProperty(CLASSNAME, classname); } /** * Gets the Classname attribute of the JavaConfig object * * @return the Classname value */ public String getClassname() { return getPropertyAsString(CLASSNAME); } /** * Performs a test sample. * * The sample() method retrieves the reference to the Java * client and calls its runTest() method. * * @see JavaSamplerClient#runTest(JavaSamplerContext) * * @param entry * the Entry for this sample * @return test SampleResult */ public SampleResult sample(Entry entry) { Arguments args = getArguments(); args.addArgument(TestElement.NAME, getName()); // Allow Sampler access // to test element name context = new JavaSamplerContext(args); if (javaClient == null) { log.debug(whoAmI() + "\tCreating Java Client"); javaClient = createJavaClient(); javaClient.setupTest(context); } SampleResult result = javaClient.runTest(context); // Only set the default label if it has not been set if (result != null && result.getSampleLabel().length() == 0) { result.setSampleLabel(getName()); } return result; } /** * Returns reference to JavaSamplerClient. * * The createJavaClient() method uses reflection to create an * instance of the specified Java protocol client. If the class can not be * found, the method returns a reference to this object. * * @return JavaSamplerClient reference. */ private JavaSamplerClient createJavaClient() { if (javaClass == null) { // failed to initialise the class return new ErrorSamplerClient(); } JavaSamplerClient client; try { client = (JavaSamplerClient) javaClass.newInstance(); if (log.isDebugEnabled()) { log.debug(whoAmI() + "\tCreated:\t" + getClassname() + "@" + Integer.toHexString(client.hashCode())); } if(isToBeRegistered) { TEAR_DOWN_SET.add(this); } } catch (Exception e) { log.error(whoAmI() + "\tException creating: " + getClassname(), e); client = new ErrorSamplerClient(); } return client; } /** * Retrieves reference to JavaSamplerClient. * * Convience method used to check for null reference without actually * creating a JavaSamplerClient * * @return reference to JavaSamplerClient NOTUSED private JavaSamplerClient * retrieveJavaClient() { return javaClient; } */ /** * Generate a String identifier of this instance for debugging purposes. * * @return a String identifier for this sampler instance */ private String whoAmI() { StringBuilder sb = new StringBuilder(); sb.append(Thread.currentThread().getName()); sb.append("@"); sb.append(Integer.toHexString(hashCode())); sb.append("-"); sb.append(getName()); return sb.toString(); } // TestStateListener implementation /* Implements TestStateListener.testStarted() */ public void testStarted() { log.debug(whoAmI() + "\ttestStarted"); initClass(); } /* Implements TestStateListener.testStarted(String) */ public void testStarted(String host) { log.debug(whoAmI() + "\ttestStarted(" + host + ")"); initClass(); } /** * Method called at the end of the test. This is called only on one instance * of JavaSampler. This method will loop through all of the other * JavaSamplers which have been registered (automatically in the * constructor) and notify them that the test has ended, allowing the * JavaSamplerClients to cleanup. */ public void testEnded() { log.debug(whoAmI() + "\ttestEnded"); synchronized (TEAR_DOWN_SET) { for (JavaSampler javaSampler : TEAR_DOWN_SET) { JavaSamplerClient client = javaSampler.javaClient; if (client != null) { client.teardownTest(javaSampler.context); } } TEAR_DOWN_SET.clear(); } } /* Implements TestStateListener.testEnded(String) */ public void testEnded(String host) { testEnded(); } /** * A {@link JavaSamplerClient} implementation used for error handling. If an * error occurs while creating the real JavaSamplerClient object, it is * replaced with an instance of this class. Each time a sample occurs with * this class, the result is marked as a failure so the user can see that * the test failed. */ class ErrorSamplerClient extends AbstractJavaSamplerClient { /** * Return SampleResult with data on error. * * @see JavaSamplerClient#runTest(JavaSamplerContext) */ public SampleResult runTest(JavaSamplerContext p_context) { log.debug(whoAmI() + "\trunTest"); Thread.yield(); SampleResult results = new SampleResult(); results.setSuccessful(false); results.setResponseData(("Class not found: " + getClassname()), null); results.setSampleLabel("ERROR: " + getClassname()); return results; } } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JSR223Sampler.java0000644000175000017500000000732712032647216031604 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.sampler; import java.io.IOException; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import javax.script.Bindings; import javax.script.ScriptEngine; import javax.script.ScriptException; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.engine.util.ConfigMergabilityIndicator; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testbeans.TestBean; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JSR223TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; public class JSR223Sampler extends JSR223TestElement implements Cloneable, Sampler, TestBean, ConfigMergabilityIndicator { private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.SimpleConfigGui"})); private static final long serialVersionUID = 234L; private static final Logger log = LoggingManager.getLoggerForClass(); public SampleResult sample(Entry entry) { SampleResult result = new SampleResult(); result.setSampleLabel(getName()); final String filename = getFilename(); if (filename.length() > 0){ result.setSamplerData("File: "+filename); } else { result.setSamplerData(getScript()); } result.setDataType(SampleResult.TEXT); result.sampleStart(); try { ScriptEngine scriptEngine = getScriptEngine(); Bindings bindings = scriptEngine.createBindings(); bindings.put("SampleResult",result); Object ret = processFileOrScript(scriptEngine, bindings); result.setSuccessful(true); result.setResponseCodeOK(); result.setResponseMessageOK(); if (ret != null){ result.setResponseData(ret.toString(), null); } } catch (IOException e) { log.warn("Problem in JSR223 script "+e, e); result.setSuccessful(false); result.setResponseCode("500"); // $NON-NLS-1$ result.setResponseMessage(e.toString()); } catch (ScriptException e) { log.warn("Problem in JSR223 script "+e, e); result.setSuccessful(false); result.setResponseCode("500"); // $NON-NLS-1$ result.setResponseMessage(e.toString()); } result.sampleEnd(); return result; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSamplerResources_fr.propertiesapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSamplerResources_fr.p0000644000175000017500000000321512032647216033221 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #Stored by I18NEdit, may be edited! displayName=Echantillon BSF filename.displayName=Nom de fichier filename.shortDescription=Fichier script (remplace le script) filenameGroup.displayName=Fichier script (remplace le script) parameterGroup.displayName=Param\u00E8tres \u00E0 passer au script (\=> String Parameters and String []args) parameters.displayName=Param\u00E8tres parameters.shortDescription=Param\u00E8tres \u00E0 passer au fichier ou au script script.displayName=Script script.shortDescription=Script dans le langage BSF appropri\u00E9 scriptLanguage.displayName=Langage scriptLanguage.shortDescription=Nom du langage BSF, ex. beanshell, javascript, jexl scripting.displayName=Script (variables\: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) scriptingLanguage.displayName=Langage de script (ex. beanshell, javascript, jexl) ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSamplerResources.propertiesapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/sampler/BSFSamplerResources.prop0000644000175000017500000000310012032647216033244 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. displayName=BSF Sampler filename.displayName=File Name filename.shortDescription=Script file (overrides script) filenameGroup.displayName=Script file (overrides script) parameterGroup.displayName=Parameters to be passed to script (=> String Parameters and String []args) parameters.displayName=Parameters parameters.shortDescription=Parameters to be passed to the file or script script.displayName=Script script.shortDescription=Script in the appropriate BSF language scriptLanguage.displayName=Language scriptLanguage.shortDescription=Name of BSF language, e.g. beanshell, javascript, jexl scripting.displayName=Script (variables: ctx vars props SampleResult sampler log Label FileName Parameters args[] OUT) scriptingLanguage.displayName=Script language (e.g. beanshell, javascript, jexl) apache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/control/0000755000175000017500000000000012032647216026534 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/0000755000175000017500000000000012165514773027330 5ustar ebourgebourg././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/JavaTestSamplerGui.javaapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/JavaTestSamplerGui.j0000644000175000017500000000566212032647216033216 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.control.gui; import java.awt.BorderLayout; import org.apache.jmeter.protocol.java.config.JavaConfig; import org.apache.jmeter.protocol.java.config.gui.JavaConfigGui; import org.apache.jmeter.protocol.java.sampler.JavaSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; /** * The JavaTestSamplerGui class provides the user interface for * the {@link JavaSampler}. * */ public class JavaTestSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; /** Panel containing the configuration options. */ private JavaConfigGui javaPanel = null; /** * Constructor for JavaTestSamplerGui */ public JavaTestSamplerGui() { super(); init(); } public String getLabelResource() { return "java_request"; // $NON-NLS-1$ } /** * Initialize the GUI components and layout. */ private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); javaPanel = new JavaConfigGui(false); add(javaPanel, BorderLayout.CENTER); } /* Implements JMeterGuiComponent.createTestElement() */ public TestElement createTestElement() { JavaSampler sampler = new JavaSampler(); modifyTestElement(sampler); return sampler; } /* Implements JMeterGuiComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement sampler) { sampler.clear(); JavaConfig config = (JavaConfig) javaPanel.createTestElement(); configureTestElement(sampler); sampler.addTestElement(config); } /* Overrides AbstractJMeterGuiComponent.configure(TestElement) */ @Override public void configure(TestElement el) { super.configure(el); javaPanel.configure(el); } /* (non-Javadoc) * @see org.apache.jmeter.gui.AbstractJMeterGuiComponent#clearGui() */ @Override public void clearGui() { super.clearGui(); javaPanel.clearGui(); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BeanShellSamplerGui.javaapache-jmeter-2.8/src/protocol/java/org/apache/jmeter/protocol/java/control/gui/BeanShellSamplerGui.0000644000175000017500000001430312032647216033150 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.java.control.gui; import java.awt.BorderLayout; import javax.swing.Box; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import org.apache.jmeter.protocol.java.sampler.BeanShellSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.util.JMeterUtils; public class BeanShellSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private JCheckBox resetInterpreter;// reset the bsh.Interpreter before each execution private JTextField filename;// script file name (if present) private JTextField parameters;// parameters to pass to script file (or script) private JTextArea scriptField;// script area public BeanShellSamplerGui() { init(); } @Override public void configure(TestElement element) { scriptField.setText(element.getPropertyAsString(BeanShellSampler.SCRIPT)); filename.setText(element.getPropertyAsString(BeanShellSampler.FILENAME)); parameters.setText(element.getPropertyAsString(BeanShellSampler.PARAMETERS)); resetInterpreter.setSelected(element.getPropertyAsBoolean(BeanShellSampler.RESET_INTERPRETER)); super.configure(element); } public TestElement createTestElement() { BeanShellSampler sampler = new BeanShellSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement te) { te.clear(); this.configureTestElement(te); te.setProperty(BeanShellSampler.SCRIPT, scriptField.getText()); te.setProperty(BeanShellSampler.FILENAME, filename.getText()); te.setProperty(BeanShellSampler.PARAMETERS, parameters.getText()); te.setProperty(new BooleanProperty(BeanShellSampler.RESET_INTERPRETER, resetInterpreter.isSelected())); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); filename.setText(""); //$NON-NLS-1$ parameters.setText(""); //$NON-NLS-1$ scriptField.setText(""); //$NON-NLS-1$ resetInterpreter.setSelected(false); } public String getLabelResource() { return "bsh_sampler_title"; // $NON-NLS-1$ } private JPanel createFilenamePanel()// TODO ought to be a FileChooser ... { JLabel label = new JLabel(JMeterUtils.getResString("bsh_script_file")); // $NON-NLS-1$ filename = new JTextField(10); filename.setName(BeanShellSampler.FILENAME); label.setLabelFor(filename); JPanel filenamePanel = new JPanel(new BorderLayout(5, 0)); filenamePanel.add(label, BorderLayout.WEST); filenamePanel.add(filename, BorderLayout.CENTER); return filenamePanel; } private JPanel createParameterPanel() { JLabel label = new JLabel(JMeterUtils.getResString("bsh_script_parameters")); // $NON-NLS-1$ parameters = new JTextField(10); parameters.setName(BeanShellSampler.PARAMETERS); label.setLabelFor(parameters); JPanel parameterPanel = new JPanel(new BorderLayout(5, 0)); parameterPanel.add(label, BorderLayout.WEST); parameterPanel.add(parameters, BorderLayout.CENTER); return parameterPanel; } private JPanel createResetPanel() { resetInterpreter = new JCheckBox(JMeterUtils.getResString("bsh_script_reset_interpreter")); // $NON-NLS-1$ resetInterpreter.setName(BeanShellSampler.PARAMETERS); JPanel resetInterpreterPanel = new JPanel(new BorderLayout()); resetInterpreterPanel.add(resetInterpreter, BorderLayout.WEST); return resetInterpreterPanel; } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); Box box = Box.createVerticalBox(); box.add(makeTitlePanel()); box.add(createResetPanel()); box.add(createParameterPanel()); box.add(createFilenamePanel()); add(box, BorderLayout.NORTH); JPanel panel = createScriptPanel(); add(panel, BorderLayout.CENTER); // Don't let the input field shrink too much add(Box.createVerticalStrut(panel.getPreferredSize().height), BorderLayout.WEST); } private JPanel createScriptPanel() { scriptField = new JTextArea(); scriptField.setRows(4); scriptField.setLineWrap(true); scriptField.setWrapStyleWord(true); JLabel label = new JLabel(JMeterUtils.getResString("bsh_script")); // $NON-NLS-1$ label.setLabelFor(scriptField); JPanel panel = new JPanel(new BorderLayout()); panel.add(label, BorderLayout.NORTH); panel.add(new JScrollPane(scriptField), BorderLayout.CENTER); JTextArea explain = new JTextArea(JMeterUtils.getResString("bsh_script_variables")); //$NON-NLS-1$ explain.setLineWrap(true); explain.setEditable(false); explain.setBackground(this.getBackground()); panel.add(explain, BorderLayout.SOUTH); return panel; } } apache-jmeter-2.8/src/protocol/ldap/0000755000175000017500000000000012032647215016772 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/0000755000175000017500000000000012032647215017561 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/0000755000175000017500000000000012032647215021002 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/0000755000175000017500000000000012032647215022270 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/0000755000175000017500000000000012032647216024132 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/0000755000175000017500000000000012032647216025052 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/0000755000175000017500000000000012032647216026317 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/0000755000175000017500000000000012165514773027113 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArguments.java0000644000175000017500000001701012032647216032353 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.config.gui; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.config.ConfigTestElement; /** * A set of LDAPArgument objects. author Dolf Smits(Dolf.Smits@Siemens.com) * created Aug 09 2003 11:00 AM company Siemens Netherlands N.V.. * * Based on the work of: * * author Michael Stover author Mark Walsh */ public class LDAPArguments extends ConfigTestElement implements Serializable { private static final long serialVersionUID = 240L; /** The name of the property used to store the arguments. */ public static final String ARGUMENTS = "Arguments.arguments"; //$NON-NLS$ /** * Create a new Arguments object with no arguments. */ public LDAPArguments() { setProperty(new CollectionProperty(ARGUMENTS, new ArrayList())); } /** * Get the arguments. * * @return the arguments */ public CollectionProperty getArguments() { return (CollectionProperty) getProperty(ARGUMENTS); } /** * Clear the arguments. */ @Override public void clear() { super.clear(); setProperty(new CollectionProperty(ARGUMENTS, new ArrayList())); } /** * Set the list of arguments. Any existing arguments will be lost. * * @param arguments * the new arguments */ public void setArguments(List arguments) { setProperty(new CollectionProperty(ARGUMENTS, arguments)); } /** * Get the arguments as a Map. Each argument name is used as the key, and * its value as the value. * * @return a new Map with String keys and values containing the arguments */ public Map getArgumentsAsMap() { PropertyIterator iter = getArguments().iterator(); Map argMap = new HashMap(); while (iter.hasNext()) { LDAPArgument arg = (LDAPArgument) iter.next().getObjectValue(); argMap.put(arg.getName(), arg.getValue()); } return argMap; } /** * Add a new argument with the given name and value. * * @param name * the name of the argument * @param value * the value of the argument */ public void addArgument(String name, String value, String opcode) { addArgument(new LDAPArgument(name, value, opcode, null)); } /** * Add a new argument. * * @param arg * the new argument */ public void addArgument(LDAPArgument arg) { TestElementProperty newArg = new TestElementProperty(arg.getName(), arg); if (isRunningVersion()) { this.setTemporary(newArg); } getArguments().addItem(newArg); } /** * Add a new argument with the given name, value, and metadata. * * @param name * the name of the argument * @param value * the value of the argument * @param metadata * the metadata for the argument */ public void addArgument(String name, String value, String opcode, String metadata) { addArgument(new LDAPArgument(name, value, opcode, metadata)); } /** * Get a PropertyIterator of the arguments. * * @return an iteration of the arguments */ public PropertyIterator iterator() { return getArguments().iterator(); } /** * Create a string representation of the arguments. * * @return the string representation of the arguments */ @Override public String toString() { StringBuilder str = new StringBuilder(); PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { LDAPArgument arg = (LDAPArgument) iter.next().getObjectValue(); final String metaData = arg.getMetaData(); str.append(arg.getName()); if (metaData == null) { str.append("="); //$NON-NLS$ } else { str.append(metaData); } str.append(arg.getValue()); if (iter.hasNext()) { str.append("&"); //$NON-NLS$ } } return str.toString(); } /** * Remove the specified argument from the list. * * @param row * the index of the argument to remove */ public void removeArgument(int row) { if (row < getArguments().size()) { getArguments().remove(row); } } /** * Remove the specified argument from the list. * * @param arg * the argument to remove */ public void removeArgument(LDAPArgument arg) { PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { LDAPArgument item = (LDAPArgument) iter.next().getObjectValue(); if (arg.equals(item)) { iter.remove(); } } } /** * Remove the argument with the specified name. * * @param argName * the name of the argument to remove */ public void removeArgument(String argName) { PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { LDAPArgument arg = (LDAPArgument) iter.next().getObjectValue(); if (arg.getName().equals(argName)) { iter.remove(); } } } /** * Remove all arguments from the list. */ public void removeAllArguments() { getArguments().clear(); } /** * Add a new empty argument to the list. The new argument will have the * empty string as its name and value, and null metadata. */ public void addEmptyArgument() { addArgument(new LDAPArgument("", "", "", null)); } /** * Get the number of arguments in the list. * * @return the number of arguments */ public int getArgumentCount() { return getArguments().size(); } /** * Get a single argument. * * @param row * the index of the argument to return. * @return the argument at the specified index, or null if no argument * exists at that index. */ public LDAPArgument getArgument(int row) { LDAPArgument argument = null; if (row < getArguments().size()) { argument = (LDAPArgument) getArguments().get(row).getObjectValue(); } return argument; } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.javaapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgumentsPanel.ja0000644000175000017500000003052612032647216033013 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.config.gui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; import java.util.Iterator; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.table.TableCellEditor; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.GuiUtils; import org.apache.jorphan.gui.ObjectTableModel; import org.apache.jorphan.reflect.Functor; /** * A GUI panel allowing the user to enter name-value argument pairs. These * arguments (or parameters) are usually used to provide configuration values * for some other component. * */ public class LDAPArgumentsPanel extends AbstractConfigGui implements ActionListener { private static final long serialVersionUID = 240L; /** Logging. */ //private static final Logger log = LoggingManager.getLoggerForClass(); /** The title label for this component. */ private JLabel tableLabel; /** The table containing the list of arguments. */ private transient JTable table; /** The model for the arguments table. */ // needs to be accessible from test code transient ObjectTableModel tableModel; // Only contains LDAPArgument entries /** A button for removing arguments from the table. */ private JButton delete; /** Command for adding a row to the table. */ private static final String ADD = "add"; //$NON-NLS-1$ /** Command for removing a row from the table. */ private static final String DELETE = "delete"; //$NON-NLS-1$ private static final String[] COLUMN_NAMES = { "attribute", //$NON-NLS-1$ "value", //$NON-NLS-1$ "opcode", //$NON-NLS-1$ "metadata" }; //$NON-NLS-1$ /** * Create a new LDAPArgumentsPanel, using the default title. */ public LDAPArgumentsPanel() { this(JMeterUtils.getResString("paramtable")); //$NON-NLS-1$ } /** * Create a new LDAPArgumentsPanel, using the specified title. * * @param label * the title of the component */ public LDAPArgumentsPanel(String label) { tableLabel = new JLabel(label); init(); } /** * This is the list of menu categories this gui component will be available * under. The LDAPArgumentsPanel is not intended to be used as a standalone * component, so this inplementation returns null. * * @return a Collection of Strings, where each element is one of the * constants defined in MenuFactory */ @Override public Collection getMenuCategories() { return null; } public String getLabelResource() { return "ldapext_sample_title"; // $NON-NLS-1$ } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { LDAPArguments args = new LDAPArguments(); modifyTestElement(args); // TODO: Why do we clone the return value? This is the only reference // to it (right?) so we shouldn't need a separate copy. return (TestElement) args.clone(); } /* Implements JMeterGUIComponent.modifyTestElement(TestElement) */ public void modifyTestElement(TestElement args) { GuiUtils.stopTableEditing(table); LDAPArguments arguments = null; if (args instanceof LDAPArguments) { arguments = (LDAPArguments) args; arguments.clear(); @SuppressWarnings("unchecked") // Only contains LDAPArgument entries Iterator modelData = (Iterator) tableModel.iterator(); while (modelData.hasNext()) { LDAPArgument arg = modelData.next(); arg.setMetaData("="); arguments.addArgument(arg); } } this.configureTestElement(args); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param el * the TestElement to configure */ @Override public void configure(TestElement el) { super.configure(el); if (el instanceof LDAPArguments) { tableModel.clearData(); PropertyIterator iter = ((LDAPArguments) el).iterator(); while (iter.hasNext()) { LDAPArgument arg = (LDAPArgument) iter.next().getObjectValue(); tableModel.addRow(arg); } } checkDeleteStatus(); } /** * Enable or disable the delete button depending on whether or not there is * a row to be deleted. */ private void checkDeleteStatus() { // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { delete.setEnabled(false); } else { delete.setEnabled(true); } } /** * Clear all rows from the table. T.Elanjchezhiyan(chezhiyan@siptech.co.in) */ public void clear() { tableModel.clearData(); } /** * Invoked when an action occurs. This implementation supports the add and * delete buttons. * * @param e * the event that has occurred */ public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals(DELETE)) { deleteArgument(); } else if (action.equals(ADD)) { addArgument(); } } /** * Remove the currently selected argument from the table. */ private void deleteArgument() { // If a table cell is being edited, we must cancel the editing before // deleting the row if (table.isEditing()) { TableCellEditor cellEditor = table.getCellEditor(table.getEditingRow(), table.getEditingColumn()); cellEditor.cancelCellEditing(); } int rowSelected = table.getSelectedRow(); if (rowSelected >= 0) { tableModel.removeRow(rowSelected); tableModel.fireTableDataChanged(); // Disable DELETE if there are no rows in the table to delete. if (tableModel.getRowCount() == 0) { delete.setEnabled(false); } // Table still contains one or more rows, so highlight (select) // the appropriate one. else { int rowToSelect = rowSelected; if (rowSelected >= tableModel.getRowCount()) { rowToSelect = rowSelected - 1; } table.setRowSelectionInterval(rowToSelect, rowToSelect); } } } /** * Add a new argument row to the table. */ private void addArgument() { // If a table cell is being edited, we should accept the current value // and stop the editing before adding a new row. GuiUtils.stopTableEditing(table); tableModel.addRow(makeNewLDAPArgument()); // Enable DELETE (which may already be enabled, but it won't hurt) delete.setEnabled(true); // Highlight (select) the appropriate row. int rowToSelect = tableModel.getRowCount() - 1; table.setRowSelectionInterval(rowToSelect, rowToSelect); } /** * Create a new LDAPArgument object. * * @return a new LDAPArgument object */ private LDAPArgument makeNewLDAPArgument() { return new LDAPArgument("", "", ""); } /** * Initialize the table model used for the arguments table. */ private void initializeTableModel() { tableModel = new ObjectTableModel(new String[] { COLUMN_NAMES[0], COLUMN_NAMES[1], COLUMN_NAMES[2] }, LDAPArgument.class, new Functor[] { new Functor("getName"), new Functor("getValue"), new Functor("getOpcode") }, new Functor[] { new Functor("setName"), new Functor("setValue"), new Functor("setOpcode") }, new Class[] { String.class, String.class, String.class }); } public static boolean testFunctors(){ LDAPArgumentsPanel instance = new LDAPArgumentsPanel(); instance.initializeTableModel(); return instance.tableModel.checkFunctors(null,instance.getClass()); } /* * protected void initializeTableModel() { tableModel = new * ObjectTableModel( new String[] { ArgumentsPanel.COLUMN_NAMES_0, * ArgumentsPanel.COLUMN_NAMES_1, ENCODE_OR_NOT, INCLUDE_EQUALS }, new * Functor[] { new Functor("getName"), new Functor("getValue"), new * Functor("isAlwaysEncoded"), new Functor("isUseEquals") }, new Functor[] { * new Functor("setName"), new Functor("setValue"), new * Functor("setAlwaysEncoded"), new Functor("setUseEquals") }, new Class[] { * String.class, String.class, Boolean.class, Boolean.class }); } */ // /** // * Resize the table columns to appropriate widths. // * // * @param _table // * the table to resize columns for // */ // private void sizeColumns(JTable _table) { // } /** * Create the main GUI panel which contains the argument table. * * @return the main GUI panel */ private Component makeMainPanel() { initializeTableModel(); table = new JTable(tableModel); table.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer()); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); return makeScrollPane(table); } /** * Create a panel containing the title label for the table. * * @return a panel containing the title label */ private Component makeLabelPanel() { JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); labelPanel.add(tableLabel); return labelPanel; } /** * Create a panel containing the add and delete buttons. * * @return a GUI panel containing the buttons */ private JPanel makeButtonPanel() { /** A button for adding new arguments to the table. */ JButton add = new JButton(JMeterUtils.getResString("add")); //$NON-NLS-1$ add.setActionCommand(ADD); add.setEnabled(true); delete = new JButton(JMeterUtils.getResString("delete")); //$NON-NLS-1$ delete.setActionCommand(DELETE); checkDeleteStatus(); JPanel buttonPanel = new JPanel(); buttonPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10)); add.addActionListener(this); delete.addActionListener(this); buttonPanel.add(add); buttonPanel.add(delete); return buttonPanel; } /** * Initialize the components and layout of this component. */ private void init() { setLayout(new BorderLayout()); add(makeLabelPanel(), BorderLayout.NORTH); add(makeMainPanel(), BorderLayout.CENTER); // Force a minimum table height of 70 pixels add(Box.createVerticalStrut(70), BorderLayout.WEST); add(makeButtonPanel(), BorderLayout.SOUTH); table.revalidate(); //sizeColumns(table); } } apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LdapConfigGui.java0000644000175000017500000004212312032647216032423 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.config.gui; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.ldap.sampler.LDAPSampler; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; /** * This class LdapConfigGui is user interface gui for getting all the * configuration values from the user. * * Created Apr 29 2003 11:45 AM * */ public class LdapConfigGui extends AbstractConfigGui implements ItemListener { private static final long serialVersionUID = 240L; private JTextField rootdn = new JTextField(20); private JTextField searchbase = new JTextField(20); private JTextField searchfilter = new JTextField(20); private JTextField delete = new JTextField(20); private JTextField add = new JTextField(20); private JTextField modify = new JTextField(20); private JTextField servername = new JTextField(20); private JTextField port = new JTextField(20); private JCheckBox user_Defined = new JCheckBox(JMeterUtils.getResString("user_defined_test")); // $NON-NLS-1$ private JRadioButton addTest = new JRadioButton(JMeterUtils.getResString("add_test")); // $NON-NLS-1$ private JRadioButton modifyTest = new JRadioButton(JMeterUtils.getResString("modify_test")); // $NON-NLS-1$ private JRadioButton deleteTest = new JRadioButton(JMeterUtils.getResString("delete_test")); // $NON-NLS-1$ private JRadioButton searchTest = new JRadioButton(JMeterUtils.getResString("search_test")); // $NON-NLS-1$ private ButtonGroup bGroup = new ButtonGroup(); private boolean displayName = true; private ArgumentsPanel tableAddPanel = new ArgumentsPanel(JMeterUtils.getResString("add_test")); // $NON-NLS-1$ private ArgumentsPanel tableModifyPanel = new ArgumentsPanel(JMeterUtils.getResString("modify_test")); // $NON-NLS-1$ private JPanel cards; /** * Default constructor for LdapConfigGui. */ public LdapConfigGui() { this(true); } public String getLabelResource() { return "ldap_sample_title"; // $NON-NLS-1$ } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); servername.setText(element.getPropertyAsString(LDAPSampler.SERVERNAME)); port.setText(element.getPropertyAsString(LDAPSampler.PORT)); rootdn.setText(element.getPropertyAsString(LDAPSampler.ROOTDN)); CardLayout cl = (CardLayout) (cards.getLayout()); final String testType = element.getPropertyAsString(LDAPSampler.TEST); if (testType.equals(LDAPSampler.ADD)) { addTest.setSelected(true); add.setText(element.getPropertyAsString(LDAPSampler.BASE_ENTRY_DN)); tableAddPanel.configure((TestElement) element.getProperty(LDAPSampler.ARGUMENTS).getObjectValue()); cl.show(cards, "Add"); } else if (testType.equals(LDAPSampler.MODIFY)) { modifyTest.setSelected(true); modify.setText(element.getPropertyAsString(LDAPSampler.BASE_ENTRY_DN)); tableModifyPanel.configure((TestElement) element.getProperty(LDAPSampler.ARGUMENTS).getObjectValue()); cl.show(cards, "Modify"); } else if (testType.equals(LDAPSampler.DELETE)) { deleteTest.setSelected(true); delete.setText(element.getPropertyAsString(LDAPSampler.DELETE)); cl.show(cards, "Delete"); } else if (testType.equals(LDAPSampler.SEARCHBASE)) { searchTest.setSelected(true); searchbase.setText(element.getPropertyAsString(LDAPSampler.SEARCHBASE)); searchfilter.setText(element.getPropertyAsString(LDAPSampler.SEARCHFILTER)); cl.show(cards, "Search"); } if (element.getPropertyAsBoolean(LDAPSampler.USER_DEFINED)) { user_Defined.setSelected(true); } else { user_Defined.setSelected(false); cl.show(cards, ""); // $NON-NLS-1$ } } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { ConfigTestElement element = new ConfigTestElement(); modifyTestElement(element); return element; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { element.clear(); configureTestElement(element); element.setProperty(LDAPSampler.SERVERNAME, servername.getText()); element.setProperty(LDAPSampler.PORT, port.getText()); element.setProperty(LDAPSampler.ROOTDN, rootdn.getText()); element.setProperty(new BooleanProperty(LDAPSampler.USER_DEFINED, user_Defined.isSelected())); if (addTest.isSelected()) { element.setProperty(new StringProperty(LDAPSampler.TEST, LDAPSampler.ADD)); element.setProperty(new StringProperty(LDAPSampler.BASE_ENTRY_DN, add.getText())); element.setProperty(new TestElementProperty(LDAPSampler.ARGUMENTS, tableAddPanel.createTestElement())); } if (modifyTest.isSelected()) { element.setProperty(new StringProperty(LDAPSampler.TEST, LDAPSampler.MODIFY)); element.setProperty(new StringProperty(LDAPSampler.BASE_ENTRY_DN, modify.getText())); element.setProperty(new TestElementProperty(LDAPSampler.ARGUMENTS, tableModifyPanel.createTestElement())); } if (deleteTest.isSelected()) { element.setProperty(new StringProperty(LDAPSampler.TEST, LDAPSampler.DELETE)); element.setProperty(new StringProperty(LDAPSampler.DELETE, delete.getText())); } if (searchTest.isSelected()) { element.setProperty(new StringProperty(LDAPSampler.TEST, LDAPSampler.SEARCHBASE)); element.setProperty(new StringProperty(LDAPSampler.SEARCHBASE, searchbase.getText())); element.setProperty(new StringProperty(LDAPSampler.SEARCHFILTER, searchfilter.getText())); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); rootdn.setText(""); //$NON-NLS-1$ searchbase.setText(""); //$NON-NLS-1$ searchfilter.setText(""); //$NON-NLS-1$ delete.setText(""); //$NON-NLS-1$ add.setText(""); //$NON-NLS-1$ modify.setText(""); //$NON-NLS-1$ servername.setText(""); //$NON-NLS-1$ port.setText(""); //$NON-NLS-1$ user_Defined.setSelected(false); addTest.setSelected(true); modifyTest.setSelected(false); deleteTest.setSelected(false); searchTest.setSelected(false); } /** * This itemStateChanged listener for changing the card layout for based on\ * the test selected in the User defined test case. */ public void itemStateChanged(ItemEvent ie) { CardLayout cl = (CardLayout) (cards.getLayout()); if (user_Defined.isSelected()) { if (addTest.isSelected()) { cl.show(cards, "Add"); tableModifyPanel.clear(); modify.setText(""); // $NON-NLS-1$ searchbase.setText(""); // $NON-NLS-1$ searchfilter.setText(""); // $NON-NLS-1$ delete.setText(""); } else if (deleteTest.isSelected()) { cl.show(cards, "Delete"); tableModifyPanel.clear(); modify.setText(""); // $NON-NLS-1$ tableAddPanel.clear(); add.setText(""); // $NON-NLS-1$ searchbase.setText(""); // $NON-NLS-1$ searchfilter.setText(""); // $NON-NLS-1$ } else if (searchTest.isSelected()) { cl.show(cards, "Search"); delete.setText(""); // $NON-NLS-1$ tableModifyPanel.clear(); modify.setText(""); // $NON-NLS-1$ tableAddPanel.clear(); add.setText(""); // $NON-NLS-1$ } else if (modifyTest.isSelected()) { cl.show(cards, "Modify"); tableAddPanel.clear(); add.setText(""); // $NON-NLS-1$ searchbase.setText(""); // $NON-NLS-1$ searchfilter.setText(""); // $NON-NLS-1$ delete.setText(""); } else { cl.show(cards, ""); // $NON-NLS-1$ tableAddPanel.clear(); add.setText(""); // $NON-NLS-1$ tableModifyPanel.clear(); modify.setText(""); // $NON-NLS-1$ searchbase.setText(""); // $NON-NLS-1$ searchfilter.setText(""); // $NON-NLS-1$ delete.setText(""); // $NON-NLS-1$ } } else { cl.show(cards, ""); // $NON-NLS-1$ tableAddPanel.clear(); add.setText(""); // $NON-NLS-1$ tableModifyPanel.clear(); modify.setText(""); // $NON-NLS-1$ searchbase.setText(""); // $NON-NLS-1$ searchfilter.setText(""); // $NON-NLS-1$ delete.setText(""); // $NON-NLS-1$ } } public LdapConfigGui(boolean displayName) { this.displayName = displayName; init(); } /** * This will create the servername panel in the LdapConfigGui. */ private JPanel createServernamePanel() { JPanel serverPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("servername")); // $NON-NLS-1$ label.setLabelFor(servername); serverPanel.add(label, BorderLayout.WEST); serverPanel.add(servername, BorderLayout.CENTER); return serverPanel; } /** * This will create the port panel in the LdapConfigGui. */ private JPanel createPortPanel() { JPanel portPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("port")); // $NON-NLS-1$ label.setLabelFor(port); portPanel.add(label, BorderLayout.WEST); portPanel.add(port, BorderLayout.CENTER); return portPanel; } /** * This will create the Root distinguised name panel in the LdapConfigGui. */ private JPanel createRootdnPanel() { JPanel rootdnPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("dn")); // $NON-NLS-1$ label.setLabelFor(rootdn); rootdnPanel.add(label, BorderLayout.WEST); rootdnPanel.add(rootdn, BorderLayout.CENTER); return rootdnPanel; } /** * This will create the Search panel in the LdapConfigGui. */ private JPanel createSearchPanel() { VerticalPanel searchPanel = new VerticalPanel(); JPanel searchBPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("search_base")); // $NON-NLS-1$ label.setLabelFor(searchbase); searchBPanel.add(label, BorderLayout.WEST); searchBPanel.add(searchbase, BorderLayout.CENTER); JPanel searchFPanel = new JPanel(new BorderLayout(5, 0)); JLabel label2 = new JLabel(JMeterUtils.getResString("search_filter")); // $NON-NLS-1$ label2.setLabelFor(searchfilter); searchFPanel.add(label2, BorderLayout.WEST); searchFPanel.add(searchfilter, BorderLayout.CENTER); searchPanel.add(searchBPanel); searchPanel.add(searchFPanel); return searchPanel; } /** * This will create the Delete panel in the LdapConfigGui. */ private JPanel createDeletePanel() { VerticalPanel panel = new VerticalPanel(); JPanel deletePanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("delete")); // $NON-NLS-1$ label.setLabelFor(delete); deletePanel.add(label, BorderLayout.WEST); deletePanel.add(delete, BorderLayout.CENTER); panel.add(deletePanel); return panel; } /** * This will create the Add test panel in the LdapConfigGui. */ private JPanel createAddPanel() { JPanel addPanel = new JPanel(new BorderLayout(5, 0)); JPanel addInnerPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("entry_dn")); // $NON-NLS-1$ label.setLabelFor(add); addInnerPanel.add(label, BorderLayout.WEST); addInnerPanel.add(add, BorderLayout.CENTER); addPanel.add(addInnerPanel, BorderLayout.NORTH); addPanel.add(tableAddPanel, BorderLayout.CENTER); return addPanel; } /** * This will create the Modify panel in the LdapConfigGui. */ private JPanel createModifyPanel() { JPanel modifyPanel = new JPanel(new BorderLayout(5, 0)); JPanel modifyInnerPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("entry_dn")); // $NON-NLS-1$ label.setLabelFor(modify); modifyInnerPanel.add(label, BorderLayout.WEST); modifyInnerPanel.add(modify, BorderLayout.CENTER); modifyPanel.add(modifyInnerPanel, BorderLayout.NORTH); modifyPanel.add(tableModifyPanel, BorderLayout.CENTER); return modifyPanel; } /** * This will create the user defined test panel for create or modify or * delete or search based on the panel selected in the itemevent in the * LdapConfigGui. */ private JPanel testPanel() { cards = new JPanel(new CardLayout()); cards.add(new JPanel(), ""); cards.add(createAddPanel(), "Add"); cards.add(createModifyPanel(), "Modify"); cards.add(createDeletePanel(), "Delete"); cards.add(createSearchPanel(), "Search"); return cards; } /** * This will create the test panel in the LdapConfigGui. */ private JPanel createTestPanel() { JPanel testPanel = new JPanel(new BorderLayout()); testPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("test_configuration"))); // $NON-NLS-1$ testPanel.add(new JLabel(JMeterUtils.getResString("test"))); // $NON-NLS-1$ JPanel rowPanel = new JPanel(); rowPanel.add(addTest); bGroup.add(addTest); rowPanel.add(deleteTest); bGroup.add(deleteTest); rowPanel.add(searchTest); bGroup.add(searchTest); rowPanel.add(modifyTest); bGroup.add(modifyTest); testPanel.add(rowPanel, BorderLayout.NORTH); testPanel.add(user_Defined, BorderLayout.CENTER); return testPanel; } /** * This will initialise all the panel in the LdapConfigGui. */ private void init() { setLayout(new BorderLayout(0, 5)); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } VerticalPanel mainPanel = new VerticalPanel(); mainPanel.add(createServernamePanel()); mainPanel.add(createPortPanel()); mainPanel.add(createRootdnPanel()); mainPanel.add(createTestPanel()); mainPanel.add(testPanel()); add(mainPanel, BorderLayout.CENTER); user_Defined.addItemListener(this); addTest.addItemListener(this); modifyTest.addItemListener(this); deleteTest.addItemListener(this); searchTest.addItemListener(this); } } apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LDAPArgument.java0000644000175000017500000001165212032647216032176 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.config.gui; import java.io.Serializable; import org.apache.jmeter.testelement.AbstractTestElement; import org.apache.jmeter.testelement.property.StringProperty; /******************************************************************************* * * Class representing an argument. Each argument consists of a name/value and * opcode combination, as well as (optional) metadata. * * author Dolf Smits(Dolf.Smits@Siemens.com) created Aug 09 2003 11:00 AM * company Siemens Netherlands N.V.. * * Based on the work of: * * author Michael Stover author Mark Walsh */ public class LDAPArgument extends AbstractTestElement implements Serializable { private static final long serialVersionUID = 240L; // ** These constants are used in the JMX files, and so must not be changed ** /** Name used to store the argument's name. */ private static final String ARG_NAME = "Argument.name"; //$NON-NLS$ /** Name used to store the argument's value. */ private static final String VALUE = "Argument.value"; //$NON-NLS$ /** Name used to store the argument's value. */ private static final String OPCODE = "Argument.opcode"; //$NON-NLS$ /** Name used to store the argument's metadata. */ private static final String METADATA = "Argument.metadata"; //$NON-NLS$ /** * Create a new Argument without a name, value, or metadata. */ public LDAPArgument() { } /** * Create a new Argument with the specified name and value, and no metadata. * * @param name * the argument name * @param value * the argument value */ public LDAPArgument(String name, String value, String opcode) { setProperty(new StringProperty(ARG_NAME, name)); setProperty(new StringProperty(VALUE, value)); setProperty(new StringProperty(OPCODE, opcode)); } /** * Create a new Argument with the specified name, value, and metadata. * * @param name * the argument name * @param value * the argument value * @param metadata * the argument metadata */ public LDAPArgument(String name, String value, String opcode, String metadata) { setProperty(new StringProperty(ARG_NAME, name)); setProperty(new StringProperty(VALUE, value)); setProperty(new StringProperty(OPCODE, opcode)); setProperty(new StringProperty(METADATA, metadata)); } /** * Set the name of the Argument. * * @param newName * the new name */ @Override public void setName(String newName) { setProperty(new StringProperty(ARG_NAME, newName)); } /** * Get the name of the Argument. * * @return the attribute's name */ @Override public String getName() { return getPropertyAsString(ARG_NAME); } /** * Sets the value of the Argument. * * @param newValue * the new value */ public void setValue(String newValue) { setProperty(new StringProperty(VALUE, newValue)); } /** * Gets the value of the Argument object. * * @return the attribute's value */ public String getValue() { return getPropertyAsString(VALUE); } /** * Sets the opcode of the Argument. * * @param newOpcode * the new value */ public void setOpcode(String newOpcode) { setProperty(new StringProperty(OPCODE, newOpcode)); } /** * Gets the opcode of the Argument object. * * @return the attribute's value */ public String getOpcode() { return getPropertyAsString(OPCODE); } /** * Sets the Meta Data attribute of the Argument. * * @param newMetaData * the new metadata */ public void setMetaData(String newMetaData) { setProperty(new StringProperty(METADATA, newMetaData)); } /** * Gets the Meta Data attribute of the Argument. * * @return the MetaData value */ public String getMetaData() { return getPropertyAsString(METADATA); } } apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/config/gui/LdapExtConfigGui.java0000644000175000017500000007620112032647216033110 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.config.gui; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.JPasswordField; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.ldap.sampler.LDAPExtSampler; import org.apache.jmeter.protocol.ldap.config.gui.LDAPArgumentsPanel; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.gui.JLabeledChoice; /******************************************************************************* * author Dolf Smits(Dolf.Smits@Siemens.com) created Aug 09 2003 11:00 AM * company Siemens Netherlands N.V.. * * Based on the work of: author T.Elanjchezhiyan(chezhiyan@siptech.co.in) * created Apr 29 2003 11:00 AM company Sip Technologies and Exports Ltd. ******************************************************************************/ /******************************************************************************* * This class LdapConfigGui is user interface gui for getting all the * configuration value from the user ******************************************************************************/ public class LdapExtConfigGui extends AbstractConfigGui implements ItemListener { private static final long serialVersionUID = 240L; // private static final String ROOTDN = "rootDn"; // private static final String TEST = "tesT"; // private static String testValue="NNNN"; private JTextField rootdn = new JTextField(20); private JTextField searchbase = new JTextField(20); private JTextField searchfilter = new JTextField(20); private JTextField delete = new JTextField(20); private JTextField add = new JTextField(20); private JTextField modify = new JTextField(20); private JTextField servername = new JTextField(20); private JTextField port = new JTextField(20); /* * N.B. These entry indexes MUST agree with the SearchControls SCOPE_LEVELS, i.e. * * javax.naming.directory.SearchControls.OBJECT_SCOPE, ONELEVEL_SCOPE, SUBTREE_SCOPE * * These have the values 0,1,2 so can be used as indexes in the array * as well as the value for the search itself. * * N.B. Although the strings are used to set and get the options, language change * does not currently cause a problem, because that always saves the current settings first, * and then recreates all the GUI classes. */ private final String[] SCOPE_STRINGS = new String[]{ JMeterUtils.getResString("ldap_search_baseobject"),// $NON-NLS-1$ JMeterUtils.getResString("ldap_search_onelevel"),// $NON-NLS-1$ JMeterUtils.getResString("ldap_search_subtree"),// $NON-NLS-1$ }; // Names for the cards private static final String CARDS_DEFAULT = ""; // $NON-NLS-1$ private static final String CARDS_ADD = "Add"; // $NON-NLS-1$ private static final String CARDS_DELETE = "Delete"; // $NON-NLS-1$ private static final String CARDS_BIND = "Bind"; // $NON-NLS-1$ private static final String CARDS_RENAME = "Rename"; // $NON-NLS-1$ private static final String CARDS_COMPARE = "Compare"; // $NON-NLS-1$ private static final String CARDS_SEARCH = "Search"; // $NON-NLS-1$ private static final String CARDS_MODIFY = "Modify"; // $NON-NLS-1$ private JLabeledChoice scope = new JLabeledChoice(JMeterUtils.getResString("scope"), // $NON-NLS-1$ SCOPE_STRINGS); private JTextField countlim = new JTextField(20); private JTextField timelim = new JTextField(20); private JTextField attribs = new JTextField(20); private JCheckBox retobj = new JCheckBox(JMeterUtils.getResString("retobj")); // $NON-NLS-1$ private JCheckBox deref = new JCheckBox(JMeterUtils.getResString("deref")); // $NON-NLS-1$ private JTextField userdn = new JTextField(20); private JTextField userpw = new JPasswordField(20); private JTextField comparedn = new JTextField(20); private JTextField comparefilt = new JTextField(20); private JTextField modddn = new JTextField(20); private JTextField newdn = new JTextField(20); private JTextField connto = new JTextField(20); private JCheckBox parseflag = new JCheckBox(JMeterUtils.getResString("ldap_parse_results")); // $NON-NLS-1$ private JCheckBox secure = new JCheckBox(JMeterUtils.getResString("ldap_secure")); // $NON-NLS-1$ private JRadioButton addTest = new JRadioButton(JMeterUtils.getResString("addtest")); // $NON-NLS-1$ private JRadioButton modifyTest = new JRadioButton(JMeterUtils.getResString("modtest")); // $NON-NLS-1$ private JRadioButton deleteTest = new JRadioButton(JMeterUtils.getResString("deltest")); // $NON-NLS-1$ private JRadioButton searchTest = new JRadioButton(JMeterUtils.getResString("searchtest")); // $NON-NLS-1$ private JRadioButton bind = new JRadioButton(JMeterUtils.getResString("bind")); // $NON-NLS-1$ private JRadioButton rename = new JRadioButton(JMeterUtils.getResString("rename")); // $NON-NLS-1$ private JRadioButton unbind = new JRadioButton(JMeterUtils.getResString("unbind")); // $NON-NLS-1$ private JRadioButton sbind = new JRadioButton(JMeterUtils.getResString("sbind")); // $NON-NLS-1$ private JRadioButton compare = new JRadioButton(JMeterUtils.getResString("compare")); // $NON-NLS-1$ private ButtonGroup bGroup = new ButtonGroup(); private boolean displayName = true; private ArgumentsPanel tableAddPanel = new ArgumentsPanel(JMeterUtils.getResString("addtest")); // $NON-NLS-1$ private LDAPArgumentsPanel tableModifyPanel = new LDAPArgumentsPanel(JMeterUtils.getResString("modtest")); // $NON-NLS-1$ private JPanel cards; /*************************************************************************** * Default constructor for LdapConfigGui **************************************************************************/ public LdapExtConfigGui() { this(true); } /*************************************************************************** * !ToDo (Constructor description) * * @param displayName * !ToDo (Parameter description) **************************************************************************/ public LdapExtConfigGui(boolean displayName) { this.displayName = displayName; init(); } public String getLabelResource() { return "ldapext_sample_title"; // $NON-NLS-1$ } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); servername.setText(element.getPropertyAsString(LDAPExtSampler.SERVERNAME)); port.setText(element.getPropertyAsString(LDAPExtSampler.PORT)); rootdn.setText(element.getPropertyAsString(LDAPExtSampler.ROOTDN)); scope.setSelectedIndex(element.getPropertyAsInt(LDAPExtSampler.SCOPE)); countlim.setText(element.getPropertyAsString(LDAPExtSampler.COUNTLIM)); timelim.setText(element.getPropertyAsString(LDAPExtSampler.TIMELIM)); attribs.setText(element.getPropertyAsString(LDAPExtSampler.ATTRIBS)); retobj.setSelected(element.getPropertyAsBoolean(LDAPExtSampler.RETOBJ)); deref.setSelected(element.getPropertyAsBoolean(LDAPExtSampler.DEREF)); connto.setText(element.getPropertyAsString(LDAPExtSampler.CONNTO)); parseflag.setSelected(element.getPropertyAsBoolean(LDAPExtSampler.PARSEFLAG)); secure.setSelected(element.getPropertyAsBoolean(LDAPExtSampler.SECURE)); userpw.setText(element.getPropertyAsString(LDAPExtSampler.USERPW)); userdn.setText(element.getPropertyAsString(LDAPExtSampler.USERDN)); comparedn.setText(element.getPropertyAsString(LDAPExtSampler.COMPAREDN)); comparefilt.setText(element.getPropertyAsString(LDAPExtSampler.COMPAREFILT)); modddn.setText(element.getPropertyAsString(LDAPExtSampler.MODDDN)); newdn.setText(element.getPropertyAsString(LDAPExtSampler.NEWDN)); CardLayout cl = (CardLayout) (cards.getLayout()); final String testType = element.getPropertyAsString(LDAPExtSampler.TEST); if (testType.equals(LDAPExtSampler.UNBIND)) { unbind.setSelected(true); cl.show(cards, CARDS_DEFAULT); } else if (testType.equals(LDAPExtSampler.BIND)) { bind.setSelected(true); cl.show(cards, CARDS_BIND); } else if (testType.equals(LDAPExtSampler.SBIND)) { sbind.setSelected(true); cl.show(cards, CARDS_BIND); } else if (testType.equals(LDAPExtSampler.COMPARE)) { compare.setSelected(true); cl.show(cards, CARDS_COMPARE); } else if (testType.equals(LDAPExtSampler.ADD)) { addTest.setSelected(true); add.setText(element.getPropertyAsString(LDAPExtSampler.BASE_ENTRY_DN)); tableAddPanel.configure((TestElement) element.getProperty(LDAPExtSampler.ARGUMENTS).getObjectValue()); cl.show(cards, CARDS_ADD); } else if (testType.equals(LDAPExtSampler.MODIFY)) { modifyTest.setSelected(true); modify.setText(element.getPropertyAsString(LDAPExtSampler.BASE_ENTRY_DN)); tableModifyPanel .configure((TestElement) element.getProperty(LDAPExtSampler.LDAPARGUMENTS).getObjectValue()); cl.show(cards, CARDS_MODIFY); } else if (testType.equals(LDAPExtSampler.DELETE)) { deleteTest.setSelected(true); delete.setText(element.getPropertyAsString(LDAPExtSampler.DELETE)); cl.show(cards, CARDS_DELETE); } else if (testType.equals(LDAPExtSampler.RENAME)) { rename.setSelected(true); cl.show(cards, CARDS_RENAME); } else if (testType.equals(LDAPExtSampler.SEARCH)) { searchTest.setSelected(true); searchbase.setText(element.getPropertyAsString(LDAPExtSampler.SEARCHBASE)); searchfilter.setText(element.getPropertyAsString(LDAPExtSampler.SEARCHFILTER)); cl.show(cards, CARDS_SEARCH); } } /* Implements JMeterGUIComponent.createTestElement() */ public TestElement createTestElement() { ConfigTestElement element = new ConfigTestElement(); modifyTestElement(element); return element; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement element) { element.clear(); configureTestElement(element); element.setProperty(LDAPExtSampler.SERVERNAME, servername.getText()); element.setProperty(LDAPExtSampler.PORT, port.getText()); element.setProperty(LDAPExtSampler.ROOTDN, rootdn.getText()); element.setProperty(LDAPExtSampler.SCOPE,String.valueOf(scope.getSelectedIndex())); element.setProperty(LDAPExtSampler.COUNTLIM, countlim.getText()); element.setProperty(LDAPExtSampler.TIMELIM, timelim.getText()); element.setProperty(LDAPExtSampler.ATTRIBS, attribs.getText()); element.setProperty(LDAPExtSampler.RETOBJ,Boolean.toString(retobj.isSelected())); element.setProperty(LDAPExtSampler.DEREF,Boolean.toString(deref.isSelected())); element.setProperty(LDAPExtSampler.CONNTO, connto.getText()); element.setProperty(LDAPExtSampler.PARSEFLAG,Boolean.toString(parseflag.isSelected())); element.setProperty(LDAPExtSampler.SECURE,Boolean.toString(secure.isSelected())); element.setProperty(LDAPExtSampler.USERDN, userdn.getText()); element.setProperty(LDAPExtSampler.USERPW, userpw.getText()); element.setProperty(LDAPExtSampler.COMPAREDN, comparedn.getText()); element.setProperty(LDAPExtSampler.COMPAREFILT, comparefilt.getText()); element.setProperty(LDAPExtSampler.MODDDN, modddn.getText()); element.setProperty(LDAPExtSampler.NEWDN, newdn.getText()); if (addTest.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.ADD)); element.setProperty(new StringProperty(LDAPExtSampler.BASE_ENTRY_DN, add.getText())); element.setProperty(new TestElementProperty(LDAPExtSampler.ARGUMENTS, tableAddPanel.createTestElement())); } if (modifyTest.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.MODIFY)); element.setProperty(new StringProperty(LDAPExtSampler.BASE_ENTRY_DN, modify.getText())); element.setProperty(new TestElementProperty(LDAPExtSampler.LDAPARGUMENTS, tableModifyPanel .createTestElement())); } if (deleteTest.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.DELETE)); element.setProperty(new StringProperty(LDAPExtSampler.DELETE, delete.getText())); } if (searchTest.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.SEARCH)); element.setProperty(new StringProperty(LDAPExtSampler.SEARCHBASE, searchbase.getText())); element.setProperty(new StringProperty(LDAPExtSampler.SEARCHFILTER, searchfilter.getText())); } if (bind.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.BIND)); } if (sbind.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.SBIND)); } if (compare.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.COMPARE)); } if (rename.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.RENAME)); } if (unbind.isSelected()) { element.setProperty(new StringProperty(LDAPExtSampler.TEST, LDAPExtSampler.UNBIND)); } } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); rootdn.setText(""); //$NON-NLS-1$ searchbase.setText(""); //$NON-NLS-1$ searchfilter.setText(""); //$NON-NLS-1$ delete.setText(""); //$NON-NLS-1$ add.setText(""); //$NON-NLS-1$ modify.setText(""); //$NON-NLS-1$ servername.setText(""); //$NON-NLS-1$ port.setText(""); //$NON-NLS-1$ add.setText(""); //$NON-NLS-1$ scope.setSelectedIndex(SCOPE_STRINGS.length - 1); countlim.setText(""); //$NON-NLS-1$ timelim.setText(""); //$NON-NLS-1$ attribs.setText(""); //$NON-NLS-1$ userdn.setText(""); //$NON-NLS-1$ userpw.setText(""); //$NON-NLS-1$ comparedn.setText(""); //$NON-NLS-1$ comparefilt.setText(""); //$NON-NLS-1$ modddn.setText(""); //$NON-NLS-1$ newdn.setText(""); //$NON-NLS-1$ connto.setText(""); //$NON-NLS-1$ retobj.setSelected(false); deref.setSelected(false); parseflag.setSelected(false); secure.setSelected(false); addTest.setSelected(false); modifyTest.setSelected(false); deleteTest.setSelected(false); searchTest.setSelected(false); bind.setSelected(false); rename.setSelected(false); unbind.setSelected(false); sbind.setSelected(false); compare.setSelected(false); tableAddPanel.clear(); tableModifyPanel.clear(); } /*************************************************************************** * This itemStateChanged listener for changing the card layout for based on * the test selected in the User defined test case. **************************************************************************/ public void itemStateChanged(ItemEvent ie) { CardLayout cl = (CardLayout) (cards.getLayout()); if (addTest.isSelected()) { cl.show(cards, CARDS_ADD); } else if (deleteTest.isSelected()) { cl.show(cards, CARDS_DELETE); } else if (bind.isSelected()) { cl.show(cards, CARDS_BIND); } else if (sbind.isSelected()) { cl.show(cards, CARDS_BIND); } else if (rename.isSelected()) { cl.show(cards, CARDS_RENAME); } else if (compare.isSelected()) { cl.show(cards, CARDS_COMPARE); } else if (searchTest.isSelected()) { cl.show(cards, CARDS_SEARCH); } else if (modifyTest.isSelected()) { cl.show(cards, CARDS_MODIFY); } else { // e.g unbind cl.show(cards, CARDS_DEFAULT); } } /*************************************************************************** * This will create the servername panel in the LdapConfigGui **************************************************************************/ private JPanel createServernamePanel() { JPanel serverPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("servername")); // $NON-NLS-1$ label.setLabelFor(servername); serverPanel.add(label, BorderLayout.WEST); serverPanel.add(servername, BorderLayout.CENTER); return serverPanel; } /*************************************************************************** * This will create the port panel in the LdapConfigGui **************************************************************************/ private JPanel createPortPanel() { JPanel portPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("port")); // $NON-NLS-1$ label.setLabelFor(port); portPanel.add(label, BorderLayout.WEST); portPanel.add(port, BorderLayout.CENTER); return portPanel; } /*************************************************************************** * This will create the Root distinguised name panel in the LdapConfigGui **************************************************************************/ private JPanel createRootdnPanel() { JPanel rootdnPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("ddn")); // $NON-NLS-1$ label.setLabelFor(rootdn); rootdnPanel.add(label, BorderLayout.WEST); rootdnPanel.add(rootdn, BorderLayout.CENTER); return rootdnPanel; } /*************************************************************************** * This will create the bind/sbind panel in the LdapConfigGui **************************************************************************/ private JPanel createBindPanel() { VerticalPanel bindPanel = new VerticalPanel(); bindPanel.add(createServernamePanel()); bindPanel.add(createPortPanel()); bindPanel.add(createRootdnPanel()); JPanel BPanel = new JPanel(new BorderLayout(5, 0)); JLabel Blabel0 = new JLabel(JMeterUtils.getResString("userdn")); // $NON-NLS-1$ Blabel0.setLabelFor(userdn); BPanel.add(Blabel0, BorderLayout.WEST); BPanel.add(userdn, BorderLayout.CENTER); bindPanel.add(BPanel); JPanel B1Panel = new JPanel(new BorderLayout(5, 0)); JLabel Blabel1 = new JLabel(JMeterUtils.getResString("userpw")); // $NON-NLS-1$ Blabel1.setLabelFor(userpw); B1Panel.add(Blabel1, BorderLayout.WEST); B1Panel.add(userpw, BorderLayout.CENTER); bindPanel.add(B1Panel); JPanel B2Panel = new JPanel(new BorderLayout(5, 0)); JLabel Blabel2 = new JLabel(JMeterUtils.getResString("ldap_connto")); // $NON-NLS-1$ Blabel2.setLabelFor(connto); B2Panel.add(Blabel2, BorderLayout.WEST); B2Panel.add(connto, BorderLayout.CENTER); bindPanel.add(B2Panel); bindPanel.add(secure); return bindPanel; } /*************************************************************************** * This will create the bind panel in the LdapConfigGui **************************************************************************/ private JPanel createComparePanel() { VerticalPanel cbindPanel = new VerticalPanel(); JPanel cBPanel = new JPanel(new BorderLayout(5, 0)); JLabel cBlabel0 = new JLabel(JMeterUtils.getResString("entrydn")); // $NON-NLS-1$ cBlabel0.setLabelFor(comparedn); cBPanel.add(cBlabel0, BorderLayout.WEST); cBPanel.add(comparedn, BorderLayout.CENTER); cbindPanel.add(cBPanel); JPanel cBPanel1 = new JPanel(new BorderLayout(5, 0)); JLabel cBlabel1 = new JLabel(JMeterUtils.getResString("comparefilt")); // $NON-NLS-1$ cBlabel1.setLabelFor(comparefilt); cBPanel1.add(cBlabel1, BorderLayout.WEST); cBPanel1.add(comparefilt, BorderLayout.CENTER); cbindPanel.add(cBPanel1); return cbindPanel; } /*************************************************************************** * This will create the Search controls panel in the LdapConfigGui **************************************************************************/ private JPanel createSCPanel() { VerticalPanel SCPanel = new VerticalPanel(); SCPanel.add(scope); JPanel SC1Panel = new JPanel(new BorderLayout(5, 0)); JLabel label1 = new JLabel(JMeterUtils.getResString("countlim")); // $NON-NLS-1$ label1.setLabelFor(countlim); SC1Panel.add(label1, BorderLayout.WEST); SC1Panel.add(countlim, BorderLayout.CENTER); SCPanel.add(SC1Panel); JPanel SC2Panel = new JPanel(new BorderLayout(5, 0)); JLabel label2 = new JLabel(JMeterUtils.getResString("timelim")); // $NON-NLS-1$ label2.setLabelFor(timelim); SC2Panel.add(label2, BorderLayout.WEST); SC2Panel.add(timelim, BorderLayout.CENTER); SCPanel.add(SC2Panel); JPanel SC3Panel = new JPanel(new BorderLayout(5, 0)); JLabel label3 = new JLabel(JMeterUtils.getResString("attrs")); // $NON-NLS-1$ label3.setLabelFor(attribs); SC3Panel.add(label3, BorderLayout.WEST); SC3Panel.add(attribs, BorderLayout.CENTER); SCPanel.add(SC3Panel); SCPanel.add(retobj); SCPanel.add(deref); SCPanel.add(parseflag); return SCPanel; } /*************************************************************************** * This will create the Search panel in the LdapConfigGui **************************************************************************/ private JPanel createSearchPanel() { VerticalPanel searchPanel = new VerticalPanel(); JPanel searchBPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("searchbase")); // $NON-NLS-1$ label.setLabelFor(searchbase); searchBPanel.add(label, BorderLayout.WEST); searchBPanel.add(searchbase, BorderLayout.CENTER); JPanel searchFPanel = new JPanel(new BorderLayout(5, 0)); JLabel label20 = new JLabel(JMeterUtils.getResString("searchfilter")); // $NON-NLS-1$ label20.setLabelFor(searchfilter); searchFPanel.add(label20, BorderLayout.WEST); searchFPanel.add(searchfilter, BorderLayout.CENTER); searchPanel.add(searchBPanel); searchPanel.add(searchFPanel); searchPanel.add(createSCPanel()); return searchPanel; } /*************************************************************************** * This will create the Moddn panel in the LdapConfigGui **************************************************************************/ private JPanel createModdnPanel() { VerticalPanel modPanel = new VerticalPanel(); JPanel renamePanel = new JPanel(new BorderLayout(5, 0)); JLabel labelmod = new JLabel(JMeterUtils.getResString("modddn")); // $NON-NLS-1$ labelmod.setLabelFor(modddn); renamePanel.add(labelmod, BorderLayout.WEST); renamePanel.add(modddn, BorderLayout.CENTER); JPanel rename2Panel = new JPanel(new BorderLayout(5, 0)); JLabel labelmod2 = new JLabel(JMeterUtils.getResString("newdn")); // $NON-NLS-1$ labelmod2.setLabelFor(newdn); rename2Panel.add(labelmod2, BorderLayout.WEST); rename2Panel.add(newdn, BorderLayout.CENTER); modPanel.add(renamePanel); modPanel.add(rename2Panel); return modPanel; } /*************************************************************************** * This will create the Delete panel in the LdapConfigGui **************************************************************************/ private JPanel createDeletePanel() { VerticalPanel panel = new VerticalPanel(); JPanel deletePanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("delete")); // $NON-NLS-1$ label.setLabelFor(delete); deletePanel.add(label, BorderLayout.WEST); deletePanel.add(delete, BorderLayout.CENTER); panel.add(deletePanel); return panel; } /*************************************************************************** * This will create the Add test panel in the LdapConfigGui **************************************************************************/ private JPanel createAddPanel() { JPanel addPanel = new JPanel(new BorderLayout(5, 0)); JPanel addInnerPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("entrydn")); // $NON-NLS-1$ label.setLabelFor(add); addInnerPanel.add(label, BorderLayout.WEST); addInnerPanel.add(add, BorderLayout.CENTER); addPanel.add(addInnerPanel, BorderLayout.NORTH); addPanel.add(tableAddPanel, BorderLayout.CENTER); return addPanel; } /*************************************************************************** * This will create the Modify panel in the LdapConfigGui **************************************************************************/ private JPanel createModifyPanel() { JPanel modifyPanel = new JPanel(new BorderLayout(5, 0)); JPanel modifyInnerPanel = new JPanel(new BorderLayout(5, 0)); JLabel label = new JLabel(JMeterUtils.getResString("entrydn")); // $NON-NLS-1$ label.setLabelFor(modify); modifyInnerPanel.add(label, BorderLayout.WEST); modifyInnerPanel.add(modify, BorderLayout.CENTER); modifyPanel.add(modifyInnerPanel, BorderLayout.NORTH); modifyPanel.add(tableModifyPanel, BorderLayout.CENTER); return modifyPanel; } /*************************************************************************** * This will create the user defined test panel for create or modify or * delete or search based on the panel selected in the itemevent in the * LdapConfigGui **************************************************************************/ private JPanel testPanel() { cards = new JPanel(new CardLayout()); cards.add(new JPanel(), CARDS_DEFAULT); cards.add(createAddPanel(), CARDS_ADD); cards.add(createModifyPanel(), CARDS_MODIFY); cards.add(createModdnPanel(), CARDS_RENAME); cards.add(createDeletePanel(), CARDS_DELETE); cards.add(createSearchPanel(), CARDS_SEARCH); cards.add(createBindPanel(), CARDS_BIND); cards.add(createComparePanel(), CARDS_COMPARE); return cards; } /*************************************************************************** * This will create the test panel in the LdapConfigGui **************************************************************************/ private JPanel createTestPanel() { JPanel testPanel = new JPanel(new BorderLayout()); testPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("test_configuration"))); // $NON-NLS-1$ testPanel.add(new JLabel(JMeterUtils.getResString("testt"))); // $NON-NLS-1$ JPanel rowPanel = new JPanel(); JPanel row2Panel = new JPanel(); rowPanel.add(bind); bGroup.add(bind); rowPanel.add(unbind); bGroup.add(unbind); rowPanel.add(sbind); bGroup.add(sbind); rowPanel.add(rename); bGroup.add(rename); row2Panel.add(addTest); bGroup.add(addTest); row2Panel.add(deleteTest); bGroup.add(deleteTest); row2Panel.add(searchTest); bGroup.add(searchTest); row2Panel.add(compare); bGroup.add(compare); row2Panel.add(modifyTest); bGroup.add(modifyTest); testPanel.add(rowPanel, BorderLayout.NORTH); testPanel.add(row2Panel, BorderLayout.SOUTH); return testPanel; } /*************************************************************************** * This will initalise all the panel in the LdapConfigGui **************************************************************************/ private void init() { setLayout(new BorderLayout(0, 5)); if (displayName) { setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); } VerticalPanel mainPanel = new VerticalPanel(); mainPanel.add(createTestPanel()); mainPanel.add(testPanel()); add(mainPanel, BorderLayout.CENTER); // Take note of when buttong are changed so can change panel bind.addItemListener(this); sbind.addItemListener(this); unbind.addItemListener(this); compare.addItemListener(this); addTest.addItemListener(this); modifyTest.addItemListener(this); rename.addItemListener(this); deleteTest.addItemListener(this); searchTest.addItemListener(this); } } apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/sampler/0000755000175000017500000000000012165514773026525 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/sampler/LdapExtClient.java0000644000175000017500000002152612032647216032066 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.sampler; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.NamingEnumeration; import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.ModificationItem; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /******************************************************************************* * * author Dolf Smits(Dolf.Smits@Siemens.com) created Aug 09 2003 11:00 AM * company Siemens Netherlands N.V.. * * Based on the work of: author T.Elanjchezhiyan(chezhiyan@siptech.co.in) * created Apr 29 2003 11:00 AM company Sip Technologies and Exports Ltd. * ******************************************************************************/ /******************************************************************************* * Ldap Client class is main class to create ,modify, search and delete all the * LDAP functionality available ******************************************************************************/ public class LdapExtClient { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String CONTEXT_IS_NULL = "Context is null"; /** * Constructor for the LdapClient object */ public LdapExtClient() { } /** * connect to server * * @param host * Description of Parameter * @param username * Description of Parameter * @param password * Description of Parameter * @exception NamingException * Description of Exception */ public static DirContext connect(String host, String port, String rootdn, String username, String password, String connTimeOut, boolean secure) throws NamingException { DirContext dirContext; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // $NON-NLS-1$ StringBuilder sb = new StringBuilder(80); if (secure) { sb.append("ldaps://"); // $NON-NLS-1$ } else { sb.append("ldap://"); // $NON-NLS-1$ } sb.append(host); if (port.length()>0){ sb.append(":"); // $NON-NLS-1$ sb.append(port); } sb.append("/"); // $NON-NLS-1$ sb.append(rootdn); env.put(Context.PROVIDER_URL,sb.toString()); log.info("prov_url= " + env.get(Context.PROVIDER_URL)); // $NON-NLS-1$ if (connTimeOut.length()> 0) { env.put("com.sun.jndi.ldap.connect.timeout", connTimeOut); // $NON-NLS-1$ } env.put(Context.REFERRAL, "throw"); // $NON-NLS-1$ env.put("java.naming.batchsize", "0"); // $NON-NLS-1$ // $NON-NLS-2$ env.put(Context.SECURITY_CREDENTIALS, password); env.put(Context.SECURITY_PRINCIPAL, username); dirContext = new InitialDirContext(env); return dirContext; } /** * disconnect from the server */ public static void disconnect(DirContext dirContext) { if (dirContext == null) { log.info("Cannot disconnect null context"); return; } try { dirContext.close(); } catch (NamingException e) { log.warn("Ldap client disconnect - ", e); } } /*************************************************************************** * Filter the data in the ldap directory for the given search base * * @param searchBase * base where the search should start * @param searchFilter * filter filter this value from the base **************************************************************************/ public static NamingEnumeration searchTest(DirContext dirContext, String searchBase, String searchFilter, int scope, long countlim, int timelim, String[] attrs, boolean retobj, boolean deref) throws NamingException { if (dirContext == null) { throw new NamingException(CONTEXT_IS_NULL); } if (log.isDebugEnabled()){ log.debug( "searchBase=" + searchBase + " scope=" + scope + " countlim=" + countlim + " timelim=" + timelim + " attrs=" + JMeterUtils.unsplit(attrs,",") + " retobj=" + retobj + " deref=" + deref + " filter=" + searchFilter ); } SearchControls searchcontrols = null; searchcontrols = new SearchControls(scope, countlim, timelim, attrs, retobj, deref); return dirContext.search(searchBase, searchFilter, searchcontrols); } /*************************************************************************** * Filter the data in the ldap directory * * @param filter * filter this value from the base **************************************************************************/ public static NamingEnumeration compare(DirContext dirContext, String filter, String entrydn) throws NamingException { if (dirContext == null) { throw new NamingException(CONTEXT_IS_NULL); } SearchControls searchcontrols = new SearchControls(0, 1, 0, new String[0], false, false); return dirContext.search(entrydn, filter, searchcontrols); } /*************************************************************************** * ModDN the data in the ldap directory for the given search base * **************************************************************************/ public static void moddnOp(DirContext dirContext, String ddn, String newdn) throws NamingException { log.debug("ddn and newDn= " + ddn + "@@@@" + newdn); if (dirContext == null) { throw new NamingException(CONTEXT_IS_NULL); } dirContext.rename(ddn, newdn); } /*************************************************************************** * Modify the attribute in the ldap directory for the given string * * @param mods * add all the entry in to the ModificationItem * @param string * The string (dn) value **************************************************************************/ public static void modifyTest(DirContext dirContext, ModificationItem[] mods, String string) throws NamingException { if (dirContext == null) { throw new NamingException(CONTEXT_IS_NULL); } dirContext.modifyAttributes(string, mods); } /*************************************************************************** * Create the entry in the ldap directory for the given string * * @param attributes * add all the attributes and values from the attributes object * @param string * The string (dn) value **************************************************************************/ public static DirContext createTest(DirContext dirContext, Attributes attributes, String string) throws NamingException { if (dirContext == null) { throw new NamingException(CONTEXT_IS_NULL); } return dirContext.createSubcontext(string, attributes); } /*************************************************************************** * Delete the attribute from the ldap directory * * @param string * The string (dn) value **************************************************************************/ public static void deleteTest(DirContext dirContext, String string) throws NamingException { if (dirContext == null) { throw new NamingException(CONTEXT_IS_NULL); } dirContext.destroySubcontext(string); } } apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/sampler/LdapClient.java0000644000175000017500000001201312032647216031374 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.sampler; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.NamingException; // import javax.naming.directory.Attributes; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.ModificationItem; import javax.naming.directory.SearchControls; // import javax.naming.directory.SearchResult; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Ldap Client class is main class to create, modify, search and delete all the * LDAP functionality available. * */ public class LdapClient { private static final Logger log = LoggingManager.getLoggerForClass(); private DirContext dirContext = null; /** * Constructor for the LdapClient object. */ public LdapClient() { } /** * Connect to server. */ public void connect(String host, String port, String rootdn, String username, String password) throws NamingException { Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); //$NON-NLS-1$ env.put(Context.PROVIDER_URL, "ldap://" + host + ":" + port + "/" + rootdn); //$NON-NLS-1$ $NON-NLS-2$ $NON-NLS-3$ env.put(Context.REFERRAL, "throw"); //$NON-NLS-1$ env.put(Context.SECURITY_CREDENTIALS, password); env.put(Context.SECURITY_PRINCIPAL, username); dirContext = new InitialDirContext(env); } /** * Disconnect from the server. */ public void disconnect() { try { if (dirContext != null) { dirContext.close(); dirContext = null; } } catch (NamingException e) { log.error("Ldap client - ", e); } } /** * Filter the data in the ldap directory for the given search base. * * @param searchBase * where the search should start * @param searchFilter * filter this value from the base */ public boolean searchTest(String searchBase, String searchFilter) throws NamingException { // System.out.println("Base="+searchBase+" Filter="+searchFilter); SearchControls searchcontrols = new SearchControls(SearchControls.SUBTREE_SCOPE, 1L, // count limit 0, // time limit null,// attributes (null = all) false,// return object ? false);// dereference links? NamingEnumeration ne = dirContext.search(searchBase, searchFilter, searchcontrols); // System.out.println("Loop "+ne.toString()+" "+ne.hasMore()); // while (ne.hasMore()){ // Object tmp = ne.next(); // System.out.println(tmp.getClass().getName()); // SearchResult sr = (SearchResult) tmp; // Attributes at = sr.getAttributes(); // System.out.println(at.get("cn")); // } // System.out.println("Done "+ne.hasMore()); return ne.hasMore(); } /** * Modify the attribute in the ldap directory for the given string. * * @param mods * add all the entry in to the ModificationItem * @param string * the string (dn) value */ public void modifyTest(ModificationItem[] mods, String string) throws NamingException { dirContext.modifyAttributes(string, mods); } /** * Create the attribute in the ldap directory for the given string. * * @param basicattributes * add all the entry in to the basicattribute * @param string * the string (dn) value */ public void createTest(BasicAttributes basicattributes, String string) throws NamingException { // DirContext dc = //TODO perhaps return this? dirContext.createSubcontext(string, basicattributes); } /** * Delete the attribute from the ldap directory. * * @param string * the string (dn) value */ public void deleteTest(String string) throws NamingException { dirContext.destroySubcontext(string); } }apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/sampler/LDAPSampler.java0000644000175000017500000004152212032647216031430 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.sampler; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.ModificationItem; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.BooleanProperty; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Ldap Sampler class is main class for the LDAP test. This will control all the * test available in the LDAP Test. * */ public class LDAPSampler extends AbstractSampler { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.config.gui.LoginConfigGui", "org.apache.jmeter.protocol.ldap.config.gui.LdapConfigGui", "org.apache.jmeter.config.gui.SimpleConfigGui"})); public static final String SERVERNAME = "servername"; //$NON-NLS-1$ public static final String PORT = "port"; //$NON-NLS-1$ public static final String ROOTDN = "rootdn"; //$NON-NLS-1$ public static final String TEST = "test"; //$NON-NLS-1$ public static final String ADD = "add"; //$NON-NLS-1$ public static final String MODIFY = "modify"; //$NON-NLS-1$ public static final String DELETE = "delete"; //$NON-NLS-1$ public static final String SEARCHBASE = "search"; //$NON-NLS-1$ public static final String SEARCHFILTER = "searchfilter"; //$NON-NLS-1$ public static final String USER_DEFINED = "user_defined"; //$NON-NLS-1$ public static final String ARGUMENTS = "arguments"; //$NON-NLS-1$ public static final String BASE_ENTRY_DN = "base_entry_dn"; //$NON-NLS-1$ // For In build test case using this counter // create the new entry in the server private static volatile int counter = 0; private boolean searchFoundEntries;// TODO turn into parameter? public LDAPSampler() { } /** * Gets the username attribute of the LDAP object. * * @return the username */ public String getUsername() { return getPropertyAsString(ConfigTestElement.USERNAME); } /** * Gets the password attribute of the LDAP object. * * @return the password */ public String getPassword() { return getPropertyAsString(ConfigTestElement.PASSWORD); } /** * Sets the Servername attribute of the ServerConfig object. * * @param servername * the new servername value */ public void setServername(String servername) { setProperty(new StringProperty(SERVERNAME, servername)); } /** * Sets the Port attribute of the ServerConfig object. * * @param port * the new Port value */ public void setPort(String port) { setProperty(new StringProperty(PORT, port)); } /** * Gets the servername attribute of the LDAPSampler object. * * @return the Servername value */ public String getServername() { return getPropertyAsString(SERVERNAME); } /** * Gets the Port attribute of the LDAPSampler object. * * @return the Port value */ public String getPort() { return getPropertyAsString(PORT); } /** * Sets the Rootdn attribute of the LDAPSampler object. * * @param newRootdn * the new rootdn value */ public void setRootdn(String newRootdn) { this.setProperty(ROOTDN, newRootdn); } /** * Gets the Rootdn attribute of the LDAPSampler object. * * @return the Rootdn value */ public String getRootdn() { return getPropertyAsString(ROOTDN); } /** * Sets the Test attribute of the LdapConfig object. * * @param newTest * the new test value(Add,Modify,Delete and search) */ public void setTest(String newTest) { this.setProperty(TEST, newTest); } /** * Gets the test attribute of the LDAPSampler object. * * @return the test value (Add, Modify, Delete and search) */ public String getTest() { return getPropertyAsString(TEST); } /** * Sets the UserDefinedTest attribute of the LDAPSampler object. * * @param value * the new UserDefinedTest value */ public void setUserDefinedTest(boolean value) { setProperty(new BooleanProperty(USER_DEFINED, value)); } /** * Gets the UserDefinedTest attribute of the LDAPSampler object. * * @return the test value true or false. If true it will do the * UserDefinedTest else our own inbuild test case. */ public boolean getUserDefinedTest() { return getPropertyAsBoolean(USER_DEFINED); } /** * Sets the Base Entry DN attribute of the LDAPSampler object. * * @param newbaseentry * the new Base entry DN value */ public void setBaseEntryDN(String newbaseentry) { setProperty(new StringProperty(BASE_ENTRY_DN, newbaseentry)); } /** * Gets the BaseEntryDN attribute of the LDAPSampler object. * * @return the Base entry DN value */ public String getBaseEntryDN() { return getPropertyAsString(BASE_ENTRY_DN); } /** * Sets the Arguments attribute of the LdapConfig object. This will collect * values from the table for user defined test case. * * @param value * the arguments */ public void setArguments(Arguments value) { setProperty(new TestElementProperty(ARGUMENTS, value)); } /** * Gets the Arguments attribute of the LdapConfig object. * * @return the arguments. User defined test case. */ public Arguments getArguments() { return (Arguments) getProperty(ARGUMENTS).getObjectValue(); } /** * Collect all the value from the table (Arguments), using this create the * basicAttributes. This will create the Basic Attributes for the User * defined TestCase for Add Test. * * @return the BasicAttributes */ private BasicAttributes getUserAttributes() { BasicAttribute basicattribute = new BasicAttribute("objectclass"); //$NON-NLS-1$ basicattribute.add("top"); //$NON-NLS-1$ basicattribute.add("person"); //$NON-NLS-1$ basicattribute.add("organizationalPerson"); //$NON-NLS-1$ basicattribute.add("inetOrgPerson"); //$NON-NLS-1$ BasicAttributes attrs = new BasicAttributes(true); attrs.put(basicattribute); BasicAttribute attr; PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { Argument item = (Argument) iter.next().getObjectValue(); attr = getBasicAttribute(item.getName(), item.getValue()); attrs.put(attr); } return attrs; } /** * Collect all the value from the table (Arguments), using this create the * basicAttributes. This will create the Basic Attributes for the User * defined TestCase for Modify test. * * @return the BasicAttributes */ private ModificationItem[] getUserModAttributes() { ModificationItem[] mods = new ModificationItem[getArguments().getArguments().size()]; BasicAttribute attr; PropertyIterator iter = getArguments().iterator(); int count = 0; while (iter.hasNext()) { Argument item = (Argument) iter.next().getObjectValue(); attr = getBasicAttribute(item.getName(), item.getValue()); mods[count] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr); count = +1; } return mods; } /** * This will create the Basic Attributes for the Inbuilt TestCase for Modify * test. * * @return the BasicAttributes */ private ModificationItem[] getModificationItem() { ModificationItem[] mods = new ModificationItem[2]; // replace (update) attribute Attribute mod0 = new BasicAttribute("userpassword", "secret"); //$NON-NLS-1$ //$NON-NLS-2$ // add mobile phone number attribute Attribute mod1 = new BasicAttribute("mobile", "123-456-1234"); //$NON-NLS-1$ //$NON-NLS-2$ mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0); mods[1] = new ModificationItem(DirContext.ADD_ATTRIBUTE, mod1); return mods; } /** * This will create the Basic Attributes for the In build TestCase for Add * Test. * * @return the BasicAttributes */ private BasicAttributes getBasicAttributes() { BasicAttributes basicattributes = new BasicAttributes(); BasicAttribute basicattribute = new BasicAttribute("objectclass"); //$NON-NLS-1$ basicattribute.add("top"); //$NON-NLS-1$ basicattribute.add("person"); //$NON-NLS-1$ basicattribute.add("organizationalPerson"); //$NON-NLS-1$ basicattribute.add("inetOrgPerson"); //$NON-NLS-1$ basicattributes.put(basicattribute); String s1 = "User"; //$NON-NLS-1$ String s3 = "Test"; //$NON-NLS-1$ String s5 = "user"; //$NON-NLS-1$ String s6 = "test"; //$NON-NLS-1$ counter += 1; basicattributes.put(new BasicAttribute("givenname", s1)); //$NON-NLS-1$ basicattributes.put(new BasicAttribute("sn", s3)); //$NON-NLS-1$ basicattributes.put(new BasicAttribute("cn", "TestUser" + counter)); //$NON-NLS-1$ //$NON-NLS-2$ basicattributes.put(new BasicAttribute("uid", s5)); //$NON-NLS-1$ basicattributes.put(new BasicAttribute("userpassword", s6)); //$NON-NLS-1$ setProperty(new StringProperty(ADD, "cn=TestUser" + counter)); //$NON-NLS-1$ return basicattributes; } /** * This will create the Basic Attribute for the given name value pair. * * @return the BasicAttribute */ private BasicAttribute getBasicAttribute(String name, String value) { BasicAttribute attr = new BasicAttribute(name, value); return attr; } /** * Returns a formatted string label describing this sampler * * @return a formatted string label describing this sampler */ public String getLabel() { return ("ldap://" + this.getServername() + ":" + getPort() + "/" + this.getRootdn()); } /** * This will do the add test for the User defined TestCase as well as * inbuilt test case. * */ private void addTest(LdapClient ldap, SampleResult res) throws NamingException { if (getPropertyAsBoolean(USER_DEFINED)) { res.sampleStart(); ldap.createTest(getUserAttributes(), getPropertyAsString(BASE_ENTRY_DN)); res.sampleEnd(); } else { res.sampleStart(); ldap.createTest(getBasicAttributes(), getPropertyAsString(ADD)); res.sampleEnd(); ldap.deleteTest(getPropertyAsString(ADD)); } } /** * This will do the delete test for the User defined TestCase as well as * inbuilt test case. * */ private void deleteTest(LdapClient ldap, SampleResult res) throws NamingException { if (!getPropertyAsBoolean(USER_DEFINED)) { ldap.createTest(getBasicAttributes(), getPropertyAsString(ADD)); setProperty(new StringProperty(DELETE, getPropertyAsString(ADD))); } res.sampleStart(); ldap.deleteTest(getPropertyAsString(DELETE)); res.sampleEnd(); } /** * This will do the search test for the User defined TestCase as well as * inbuilt test case. * */ private void searchTest(LdapClient ldap, SampleResult res) throws NamingException { if (!getPropertyAsBoolean(USER_DEFINED)) { ldap.createTest(getBasicAttributes(), getPropertyAsString(ADD)); setProperty(new StringProperty(SEARCHBASE, getPropertyAsString(ADD))); setProperty(new StringProperty(SEARCHFILTER, getPropertyAsString(ADD))); } res.sampleStart(); searchFoundEntries = ldap.searchTest(getPropertyAsString(SEARCHBASE), getPropertyAsString(SEARCHFILTER)); res.sampleEnd(); if (!getPropertyAsBoolean(USER_DEFINED)) { ldap.deleteTest(getPropertyAsString(ADD)); } } /** * This will do the search test for the User defined TestCase as well as * inbuilt test case. * */ private void modifyTest(LdapClient ldap, SampleResult res) throws NamingException { if (getPropertyAsBoolean(USER_DEFINED)) { res.sampleStart(); ldap.modifyTest(getUserModAttributes(), getPropertyAsString(BASE_ENTRY_DN)); res.sampleEnd(); } else { ldap.createTest(getBasicAttributes(), getPropertyAsString(ADD)); setProperty(new StringProperty(MODIFY, getPropertyAsString(ADD))); res.sampleStart(); ldap.modifyTest(getModificationItem(), getPropertyAsString(MODIFY)); res.sampleEnd(); ldap.deleteTest(getPropertyAsString(ADD)); } } public SampleResult sample(Entry e) { SampleResult res = new SampleResult(); boolean isSuccessful = false; res.setSampleLabel(getName()); res.setSamplerData(getPropertyAsString(TEST));// TODO improve this LdapClient ldap = new LdapClient(); try { ldap.connect(getServername(), getPort(), getRootdn(), getUsername(), getPassword()); if (getPropertyAsString(TEST).equals(ADD)) { addTest(ldap, res); } else if (getPropertyAsString(TEST).equals(DELETE)) { deleteTest(ldap, res); } else if (getPropertyAsString(TEST).equals(MODIFY)) { modifyTest(ldap, res); } else if (getPropertyAsString(TEST).equals(SEARCHBASE)) { searchTest(ldap, res); } // TODO - needs more work ... if (getPropertyAsString(TEST).equals(SEARCHBASE) && !searchFoundEntries) { res.setResponseCode("201");// TODO is this a sensible number? //$NON-NLS-1$ res.setResponseMessage("OK - no results"); res.setResponseData("successful - no results", null); } else { res.setResponseCodeOK(); res.setResponseMessage("OK"); //$NON-NLS-1$ res.setResponseData("successful", null); } res.setDataType(SampleResult.TEXT); isSuccessful = true; } catch (Exception ex) { log.error("Ldap client - ", ex); // Could time this // res.sampleEnd(); // if sampleEnd() is not called, elapsed time will remain zero res.setResponseCode("500");// TODO distinguish errors better //$NON-NLS-1$ res.setResponseMessage(ex.toString()); isSuccessful = false; } finally { ldap.disconnect(); } // Set if we were successful or not res.setSuccessful(isSuccessful); return res; } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } }apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java0000644000175000017500000012467212032647216032121 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.sampler; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; import javax.naming.directory.BasicAttribute; import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.ModificationItem; import javax.naming.directory.SearchResult; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.jmeter.config.Argument; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.ConfigTestElement; import org.apache.jmeter.protocol.ldap.config.gui.LDAPArgument; import org.apache.jmeter.protocol.ldap.config.gui.LDAPArguments; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.testelement.property.PropertyIterator; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.testelement.property.TestElementProperty; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.XMLBuffer; import org.apache.log.Logger; /******************************************************************************* * Ldap Sampler class is main class for the LDAP test. This will control all the * test available in the LDAP Test. ******************************************************************************/ public class LDAPExtSampler extends AbstractSampler implements TestStateListener { private static final Logger log = LoggingManager.getLoggerForClass(); private static final long serialVersionUID = 240L; private static final Set APPLIABLE_CONFIG_CLASSES = new HashSet( Arrays.asList(new String[]{ "org.apache.jmeter.protocol.ldap.config.gui.LdapConfigGui", "org.apache.jmeter.protocol.ldap.config.gui.LdapExtConfigGui", "org.apache.jmeter.config.gui.SimpleConfigGui"})); /* * The following strings are used in the test plan, and the values must not be changed * if test plans are to be upwardly compatible. */ public static final String SERVERNAME = "servername"; // $NON-NLS-1$ public static final String PORT = "port"; // $NON-NLS-1$ public static final String SECURE = "secure"; // $NON-NLS-1$ public static final String ROOTDN = "rootdn"; // $NON-NLS-1$ public static final String TEST = "test"; // $NON-NLS-1$ // These are values for the TEST attribute above public static final String ADD = "add"; // $NON-NLS-1$ public static final String MODIFY = "modify"; // $NON-NLS-1$ public static final String BIND = "bind"; // $NON-NLS-1$ public static final String UNBIND = "unbind"; // $NON-NLS-1$ public static final String DELETE = "delete"; // $NON-NLS-1$ public static final String SEARCH = "search"; // $NON-NLS-1$ // end of TEST values public static final String SEARCHBASE = "search"; // $NON-NLS-1$ public static final String SEARCHFILTER = "searchfilter"; // $NON-NLS-1$ public static final String ARGUMENTS = "arguments"; // $NON-NLS-1$ public static final String LDAPARGUMENTS = "ldaparguments"; // $NON-NLS-1$ public static final String BASE_ENTRY_DN = "base_entry_dn"; // $NON-NLS-1$ public static final String SCOPE = "scope"; // $NON-NLS-1$ public static final String COUNTLIM = "countlimit"; // $NON-NLS-1$ public static final String TIMELIM = "timelimit"; // $NON-NLS-1$ public static final String ATTRIBS = "attributes"; // $NON-NLS-1$ public static final String RETOBJ = "return_object"; // $NON-NLS-1$ public static final String DEREF = "deref_aliases"; // $NON-NLS-1$ public static final String USERDN = "user_dn"; // $NON-NLS-1$ public static final String USERPW = "user_pw"; // $NON-NLS-1$ public static final String SBIND = "sbind"; // $NON-NLS-1$ public static final String COMPARE = "compare"; // $NON-NLS-1$ public static final String CONNTO = "connection_timeout"; // $NON-NLS-1$ public static final String COMPAREDN = "comparedn"; // $NON-NLS-1$ public static final String COMPAREFILT = "comparefilt"; // $NON-NLS-1$ public static final String PARSEFLAG = "parseflag"; // $NON-NLS-1$ public static final String RENAME = "rename"; // $NON-NLS-1$ public static final String MODDDN = "modddn"; // $NON-NLS-1$ public static final String NEWDN = "newdn"; // $NON-NLS-1$ private static final String SEMI_COLON = ";"; // $NON-NLS-1$ private static final ConcurrentHashMap ldapContexts = new ConcurrentHashMap(); private static final int MAX_SORTED_RESULTS = JMeterUtils.getPropDefault("ldapsampler.max_sorted_results", 1000); // $NON-NLS-1$ /*************************************************************************** * !ToDo (Constructor description) **************************************************************************/ public LDAPExtSampler() { } public void setConnTimeOut(String connto) { setProperty(new StringProperty(CONNTO, connto)); } public String getConnTimeOut() { return getPropertyAsString(CONNTO); } public void setSecure(String sec) { setProperty(new StringProperty(SECURE, sec)); } public boolean isSecure() { return getPropertyAsBoolean(SECURE); } public boolean isParseFlag() { return getPropertyAsBoolean(PARSEFLAG); } public void setParseFlag(String parseFlag) { setProperty(new StringProperty(PARSEFLAG, parseFlag)); } /*************************************************************************** * Gets the username attribute of the LDAP object * * @return The username **************************************************************************/ public String getUserDN() { return getPropertyAsString(USERDN); } /*************************************************************************** * Sets the username attribute of the LDAP object * **************************************************************************/ public void setUserDN(String newUserDN) { setProperty(new StringProperty(USERDN, newUserDN)); } /*************************************************************************** * Gets the password attribute of the LDAP object * * @return The password **************************************************************************/ public String getUserPw() { return getPropertyAsString(USERPW); } /*************************************************************************** * Sets the password attribute of the LDAP object * **************************************************************************/ public void setUserPw(String newUserPw) { setProperty(new StringProperty(USERPW, newUserPw)); } /*************************************************************************** * Sets the Servername attribute of the ServerConfig object * * @param servername * The new servername value **************************************************************************/ public void setServername(String servername) { setProperty(new StringProperty(SERVERNAME, servername)); } /*************************************************************************** * Sets the Port attribute of the ServerConfig object * * @param port * The new Port value **************************************************************************/ public void setPort(String port) { setProperty(new StringProperty(PORT, port)); } /*************************************************************************** * Gets the servername attribute of the LDAPSampler object * * @return The Servername value **************************************************************************/ public String getServername() { return getPropertyAsString(SERVERNAME); } /*************************************************************************** * Gets the Port attribute of the LDAPSampler object * * @return The Port value **************************************************************************/ public String getPort() { return getPropertyAsString(PORT); } /*************************************************************************** * Sets the Rootdn attribute of the LDAPSampler object * * @param newRootdn * The new rootdn value **************************************************************************/ public void setRootdn(String newRootdn) { this.setProperty(ROOTDN, newRootdn); } /*************************************************************************** * Gets the Rootdn attribute of the LDAPSampler object * * @return The Rootdn value **************************************************************************/ public String getRootdn() { return getPropertyAsString(ROOTDN); } /*************************************************************************** * Gets the search scope attribute of the LDAPSampler object * * @return The scope value **************************************************************************/ public String getScope() { return getPropertyAsString(SCOPE); } public int getScopeAsInt() { return getPropertyAsInt(SCOPE); } /*************************************************************************** * Sets the search scope attribute of the LDAPSampler object * * @param newScope * The new scope value **************************************************************************/ public void setScope(String newScope) { this.setProperty(SCOPE, newScope); } /*************************************************************************** * Gets the size limit attribute of the LDAPSampler object * * @return The size limit **************************************************************************/ public String getCountlim() { return getPropertyAsString(COUNTLIM); } public long getCountlimAsLong() { return getPropertyAsLong(COUNTLIM); } /*************************************************************************** * Sets the size limit attribute of the LDAPSampler object * * @param newClim * The new size limit value **************************************************************************/ public void setCountlim(String newClim) { this.setProperty(COUNTLIM, newClim); } /*************************************************************************** * Gets the time limit attribute of the LDAPSampler object * * @return The time limit **************************************************************************/ public String getTimelim() { return getPropertyAsString(TIMELIM); } public int getTimelimAsInt() { return getPropertyAsInt(TIMELIM); } /*************************************************************************** * Sets the time limit attribute of the LDAPSampler object * * @param newTlim * The new time limit value **************************************************************************/ public void setTimelim(String newTlim) { this.setProperty(TIMELIM, newTlim); } /*************************************************************************** * Gets the return objects attribute of the LDAPSampler object * * @return if the object(s) are to be returned **************************************************************************/ public boolean isRetobj() { return getPropertyAsBoolean(RETOBJ); } /*************************************************************************** * Sets the return objects attribute of the LDAPSampler object * **************************************************************************/ public void setRetobj(String newRobj) { this.setProperty(RETOBJ, newRobj); } /*************************************************************************** * Gets the deref attribute of the LDAPSampler object * * @return if dereferencing is required **************************************************************************/ public boolean isDeref() { return getPropertyAsBoolean(DEREF); } /*************************************************************************** * Sets the deref attribute of the LDAPSampler object * * @param newDref * The new deref value **************************************************************************/ public void setDeref(String newDref) { this.setProperty(DEREF, newDref); } /*************************************************************************** * Sets the Test attribute of the LdapConfig object * * @param newTest * The new test value(Add,Modify,Delete and search) **************************************************************************/ public void setTest(String newTest) { this.setProperty(TEST, newTest); } /*************************************************************************** * Gets the test attribute of the LDAPSampler object * * @return The test value (Add,Modify,Delete and search) **************************************************************************/ public String getTest() { return getPropertyAsString(TEST); } /*************************************************************************** * Sets the attributes of the LdapConfig object * * @param newAttrs * The new attributes value **************************************************************************/ public void setAttrs(String newAttrs) { this.setProperty(ATTRIBS, newAttrs); } /*************************************************************************** * Gets the attributes of the LDAPSampler object * * @return The attributes **************************************************************************/ public String getAttrs() { return getPropertyAsString(ATTRIBS); } /*************************************************************************** * Sets the Base Entry DN attribute of the LDAPSampler object * * @param newbaseentry * The new Base entry DN value **************************************************************************/ public void setBaseEntryDN(String newbaseentry) { setProperty(new StringProperty(BASE_ENTRY_DN, newbaseentry)); } /*************************************************************************** * Gets the BaseEntryDN attribute of the LDAPSampler object * * @return The Base entry DN value **************************************************************************/ public String getBaseEntryDN() { return getPropertyAsString(BASE_ENTRY_DN); } /*************************************************************************** * Sets the Arguments attribute of the LdapConfig object This will collect * values from the table for user defined test case * * @param value * The arguments **************************************************************************/ public void setArguments(Arguments value) { setProperty(new TestElementProperty(ARGUMENTS, value)); } /*************************************************************************** * Gets the Arguments attribute of the LdapConfig object * * @return The arguments user defined test case **************************************************************************/ public Arguments getArguments() { return (Arguments) getProperty(ARGUMENTS).getObjectValue(); } /*************************************************************************** * Sets the Arguments attribute of the LdapConfig object This will collect * values from the table for user defined test case * * @param value * The arguments **************************************************************************/ public void setLDAPArguments(LDAPArguments value) { setProperty(new TestElementProperty(LDAPARGUMENTS, value)); } /*************************************************************************** * Gets the LDAPArguments attribute of the LdapConfig object * * @return The LDAParguments user defined modify test case **************************************************************************/ public LDAPArguments getLDAPArguments() { return (LDAPArguments) getProperty(LDAPARGUMENTS).getObjectValue(); } /*************************************************************************** * Collect all the values from the table (Arguments), using this create the * Attributes, this will create the Attributes for the User * defined TestCase for Add Test * * @return The Attributes **************************************************************************/ private Attributes getUserAttributes() { Attributes attrs = new BasicAttributes(true); Attribute attr; PropertyIterator iter = getArguments().iterator(); while (iter.hasNext()) { Argument item = (Argument) iter.next().getObjectValue(); attr = attrs.get(item.getName()); if (attr == null) { attr = getBasicAttribute(item.getName(), item.getValue()); } else { attr.add(item.getValue()); } attrs.put(attr); } return attrs; } /*************************************************************************** * Collect all the value from the table (Arguments), using this create the * basicAttributes This will create the Basic Attributes for the User * defined TestCase for Modify test * * @return The BasicAttributes **************************************************************************/ private ModificationItem[] getUserModAttributes() { ModificationItem[] mods = new ModificationItem[getLDAPArguments().getArguments().size()]; BasicAttribute attr; PropertyIterator iter = getLDAPArguments().iterator(); int count = 0; while (iter.hasNext()) { LDAPArgument item = (LDAPArgument) iter.next().getObjectValue(); if ((item.getValue()).length()==0) { attr = new BasicAttribute(item.getName()); } else { attr = getBasicAttribute(item.getName(), item.getValue()); } final String opcode = item.getOpcode(); if ("add".equals(opcode)) { // $NON-NLS-1$ mods[count++] = new ModificationItem(DirContext.ADD_ATTRIBUTE, attr); } else if ("delete".equals(opcode) // $NON-NLS-1$ || "remove".equals(opcode)) { // $NON-NLS-1$ mods[count++] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, attr); } else if("replace".equals(opcode)) { // $NON-NLS-1$ mods[count++] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr); } else { log.warn("Invalid opCode: "+opcode); } } return mods; } /*************************************************************************** * Collect all the value from the table (Arguments), using this create the * Attributes This will create the Basic Attributes for the User defined * TestCase for search test * * @return The BasicAttributes **************************************************************************/ private String[] getRequestAttributes(String reqAttr) { int index; String[] mods; int count = 0; if (reqAttr.length() == 0) { return null; } if (!reqAttr.endsWith(SEMI_COLON)) { reqAttr = reqAttr + SEMI_COLON; } String attr = reqAttr; while (attr.length() > 0) { index = attr.indexOf(SEMI_COLON); count += 1; attr = attr.substring(index + 1); } if (count > 0) { mods = new String[count]; attr = reqAttr; count = 0; while (attr.length() > 0) { index = attr.indexOf(SEMI_COLON); mods[count] = attr.substring(0, index); count += 1; attr = attr.substring(index + 1); } } else { mods = null; } return mods; } /*************************************************************************** * This will create the Basic Attribute for the give name value pair * * @return The BasicAttribute **************************************************************************/ private BasicAttribute getBasicAttribute(String name, String value) { return new BasicAttribute(name, value); } /** * Returns a formatted string label describing this sampler Example output: * * @return a formatted string label describing this sampler */ public String getLabel() { return ("ldap://" + this.getServername() //$NON-NLS-1$ + ":" + getPort() //$NON-NLS-1$ + "/" + this.getRootdn()); //$NON-NLS-1$ } /*************************************************************************** * This will do the add test for the User defined TestCase * **************************************************************************/ private void addTest(DirContext dirContext, SampleResult res) throws NamingException { try { res.sampleStart(); DirContext ctx = LdapExtClient.createTest(dirContext, getUserAttributes(), getBaseEntryDN()); ctx.close(); // the createTest() method creates an extra context which needs to be closed } finally { res.sampleEnd(); } } /*************************************************************************** * This will do the delete test for the User defined TestCase * **************************************************************************/ private void deleteTest(DirContext dirContext, SampleResult res) throws NamingException { try { res.sampleStart(); LdapExtClient.deleteTest(dirContext, getPropertyAsString(DELETE)); } finally { res.sampleEnd(); } } /*************************************************************************** * This will do the modify test for the User defined TestCase * **************************************************************************/ private void modifyTest(DirContext dirContext, SampleResult res) throws NamingException { try { res.sampleStart(); LdapExtClient.modifyTest(dirContext, getUserModAttributes(), getBaseEntryDN()); } finally { res.sampleEnd(); } } /*************************************************************************** * This will do the bind for the User defined Thread, this bind is used for * the whole context * **************************************************************************/ private void bindOp(SampleResult res) throws NamingException { DirContext ctx = ldapContexts.remove(getThreadName()); if (ctx != null) { log.warn("Closing previous context for thread: " + getThreadName()); ctx.close(); } try { res.sampleStart(); ctx = LdapExtClient.connect(getServername(), getPort(), getRootdn(), getUserDN(), getUserPw(),getConnTimeOut(),isSecure()); } finally { res.sampleEnd(); } ldapContexts.put(getThreadName(), ctx); } /*************************************************************************** * This will do the bind and unbind for the User defined TestCase * **************************************************************************/ private void singleBindOp(SampleResult res) throws NamingException { try { res.sampleStart(); DirContext ctx = LdapExtClient.connect(getServername(), getPort(), getRootdn(), getUserDN(), getUserPw(),getConnTimeOut(),isSecure()); LdapExtClient.disconnect(ctx); } finally { res.sampleEnd(); } } /*************************************************************************** * This will do a moddn Opp for the User new DN defined * **************************************************************************/ private void renameTest(DirContext dirContext, SampleResult res) throws NamingException { try { res.sampleStart(); LdapExtClient.moddnOp(dirContext, getPropertyAsString(MODDDN), getPropertyAsString(NEWDN)); } finally { res.sampleEnd(); } } /*************************************************************************** * This will do the unbind for the User defined TestCase as well as inbuilt * test case * **************************************************************************/ private void unbindOp(DirContext dirContext, SampleResult res) { try { res.sampleStart(); LdapExtClient.disconnect(dirContext); } finally { res.sampleEnd(); } ldapContexts.remove(getThreadName()); log.info("context and LdapExtClients removed"); } /*************************************************************************** * !ToDo (Method description) * * @param e * !ToDo (Parameter description) * @return !ToDo (Return description) **************************************************************************/ public SampleResult sample(Entry e) { XMLBuffer xmlBuffer = new XMLBuffer(); xmlBuffer.openTag("ldapanswer"); // $NON-NLS-1$ SampleResult res = new SampleResult(); res.setResponseData("successfull", null); res.setResponseMessage("Success"); // $NON-NLS-1$ res.setResponseCode("0"); // $NON-NLS-1$ res.setContentType("text/xml");// $NON-NLS-1$ boolean isSuccessful = true; res.setSampleLabel(getName()); DirContext dirContext = ldapContexts.get(getThreadName()); try { xmlBuffer.openTag("operation"); // $NON-NLS-1$ final String testType = getTest(); xmlBuffer.tag("opertype", testType); // $NON-NLS-1$ log.debug("performing test: " + testType); if (testType.equals(UNBIND)) { res.setSamplerData("Unbind"); xmlBuffer.tag("baseobj",getRootdn()); // $NON-NLS-1$ xmlBuffer.tag("binddn",getUserDN()); // $NON-NLS-1$ unbindOp(dirContext, res); } else if (testType.equals(BIND)) { res.setSamplerData("Bind as "+getUserDN()); xmlBuffer.tag("baseobj",getRootdn()); // $NON-NLS-1$ xmlBuffer.tag("binddn",getUserDN()); // $NON-NLS-1$ xmlBuffer.tag("connectionTO",getConnTimeOut()); // $NON-NLS-1$ bindOp(res); } else if (testType.equals(SBIND)) { res.setSamplerData("SingleBind as "+getUserDN()); xmlBuffer.tag("baseobj",getRootdn()); // $NON-NLS-1$ xmlBuffer.tag("binddn",getUserDN()); // $NON-NLS-1$ xmlBuffer.tag("connectionTO",getConnTimeOut()); // $NON-NLS-1$ singleBindOp(res); } else if (testType.equals(COMPARE)) { res.setSamplerData("Compare "+getPropertyAsString(COMPAREFILT) + " " + getPropertyAsString(COMPAREDN)); xmlBuffer.tag("comparedn",getPropertyAsString(COMPAREDN)); // $NON-NLS-1$ xmlBuffer.tag("comparefilter",getPropertyAsString(COMPAREFILT)); // $NON-NLS-1$ NamingEnumeration cmp=null; try { res.sampleStart(); cmp = LdapExtClient.compare(dirContext, getPropertyAsString(COMPAREFILT), getPropertyAsString(COMPAREDN)); if (!cmp.hasMore()) { res.setResponseCode("5"); // $NON-NLS-1$ res.setResponseMessage("compareFalse"); isSuccessful = false; } } finally { res.sampleEnd(); if (cmp != null) { cmp.close(); } } } else if (testType.equals(ADD)) { res.setSamplerData("Add object " + getBaseEntryDN()); xmlBuffer.tag("attributes",getArguments().toString()); // $NON-NLS-1$ xmlBuffer.tag("dn",getBaseEntryDN()); // $NON-NLS-1$ addTest(dirContext, res); } else if (testType.equals(DELETE)) { res.setSamplerData("Delete object " + getBaseEntryDN()); xmlBuffer.tag("dn",getBaseEntryDN()); // $NON-NLS-1$ deleteTest(dirContext, res); } else if (testType.equals(MODIFY)) { res.setSamplerData("Modify object " + getBaseEntryDN()); xmlBuffer.tag("dn",getBaseEntryDN()); // $NON-NLS-1$ xmlBuffer.tag("attributes",getLDAPArguments().toString()); // $NON-NLS-1$ modifyTest(dirContext, res); } else if (testType.equals(RENAME)) { res.setSamplerData("ModDN object " + getPropertyAsString(MODDDN) + " to " + getPropertyAsString(NEWDN)); xmlBuffer.tag("dn",getPropertyAsString(MODDDN)); // $NON-NLS-1$ xmlBuffer.tag("newdn",getPropertyAsString(NEWDN)); // $NON-NLS-1$ renameTest(dirContext, res); } else if (testType.equals(SEARCH)) { final String scopeStr = getScope(); final int scope = getScopeAsInt(); final String searchFilter = getPropertyAsString(SEARCHFILTER); final String searchBase = getPropertyAsString(SEARCHBASE); final String timeLimit = getTimelim(); final String countLimit = getCountlim(); res.setSamplerData("Search with filter " + searchFilter); xmlBuffer.tag("searchfilter",searchFilter); // $NON-NLS-1$ xmlBuffer.tag("baseobj",getRootdn()); // $NON-NLS-1$ xmlBuffer.tag("searchbase",searchBase);// $NON-NLS-1$ xmlBuffer.tag("scope" , scopeStr); // $NON-NLS-1$ xmlBuffer.tag("countlimit",countLimit); // $NON-NLS-1$ xmlBuffer.tag("timelimit",timeLimit); // $NON-NLS-1$ NamingEnumeration srch=null; try { res.sampleStart(); srch = LdapExtClient.searchTest( dirContext, searchBase, searchFilter, scope, getCountlimAsLong(), getTimelimAsInt(), getRequestAttributes(getAttrs()), isRetobj(), isDeref()); if (isParseFlag()) { try { xmlBuffer.openTag("searchresults"); // $NON-NLS-1$ writeSearchResults(xmlBuffer, srch); } finally { xmlBuffer.closeTag("searchresults"); // $NON-NLS-1$ } } else { xmlBuffer.tag("searchresults", // $NON-NLS-1$ "hasElements="+srch.hasMoreElements()); // $NON-NLS-1$ } } finally { if (srch != null){ srch.close(); } res.sampleEnd(); } } } catch (NamingException ex) { //log.warn("DEBUG",ex); // e.g. javax.naming.SizeLimitExceededException: [LDAP: error code 4 - Sizelimit Exceeded]; remaining name '' // 123456789012345678901 // TODO: tidy this up String returnData = ex.toString(); final int indexOfLDAPErrCode = returnData.indexOf("LDAP: error code"); if (indexOfLDAPErrCode >= 0) { res.setResponseMessage(returnData.substring(indexOfLDAPErrCode + 21, returnData .indexOf(']'))); // $NON-NLS-1$ res.setResponseCode(returnData.substring(indexOfLDAPErrCode + 17, indexOfLDAPErrCode + 19)); } else { res.setResponseMessage(returnData); res.setResponseCode("800"); // $NON-NLS-1$ } isSuccessful = false; } finally { xmlBuffer.closeTag("operation"); // $NON-NLS-1$ xmlBuffer.tag("responsecode",res.getResponseCode()); // $NON-NLS-1$ xmlBuffer.tag("responsemessage",res.getResponseMessage()); // $NON-NLS-1$ res.setResponseData(xmlBuffer.toString(), null); res.setDataType(SampleResult.TEXT); res.setSuccessful(isSuccessful); } return res; } /* * Write out search results in a stable order (including order of all subelements which might * be reordered like attributes and their values) so that simple textual comparison can be done, * unless the number of results exceeds {@link #MAX_SORTED_RESULTS} in which case just stream * the results out without sorting. */ private void writeSearchResults(final XMLBuffer xmlb, final NamingEnumeration srch) throws NamingException { final ArrayList sortedResults = new ArrayList(MAX_SORTED_RESULTS); final String searchBase = getPropertyAsString(SEARCHBASE); final String rootDn = getRootdn(); // read all sortedResults into memory so we can guarantee ordering try { while (srch.hasMore() && (sortedResults.size() < MAX_SORTED_RESULTS)) { final SearchResult sr = srch.next(); // must be done prior to sorting normaliseSearchDN(sr, searchBase, rootDn); sortedResults.add(sr); } } finally { // show what we did manage to retrieve sortResults(sortedResults); for (Iterator it = sortedResults.iterator(); it.hasNext();) { final SearchResult sr = it.next(); writeSearchResult(sr, xmlb); } } while (srch.hasMore()) { // If there's anything left ... final SearchResult sr = srch.next(); normaliseSearchDN(sr, searchBase, rootDn); writeSearchResult(sr, xmlb); } } private void writeSearchResult(final SearchResult sr, final XMLBuffer xmlb) throws NamingException { final Attributes attrs = sr.getAttributes(); final int size = attrs.size(); final ArrayList sortedAttrs = new ArrayList(size); xmlb.openTag("searchresult"); // $NON-NLS-1$ xmlb.tag("dn", sr.getName()); // $NON-NLS-1$ xmlb.tag("returnedattr",Integer.toString(size)); // $NON-NLS-1$ xmlb.openTag("attributes"); // $NON-NLS-1$ try { for (NamingEnumeration en = attrs.getAll(); en.hasMore(); ) { final Attribute attr = en.next(); sortedAttrs.add(attr); } sortAttributes(sortedAttrs); for (Iterator ait = sortedAttrs.iterator(); ait.hasNext();) { final Attribute attr = ait.next(); StringBuilder sb = new StringBuilder(); if (attr.size() == 1) { sb.append(getWriteValue(attr.get())); } else { final ArrayList sortedVals = new ArrayList(attr.size()); boolean first = true; for (NamingEnumeration ven = attr.getAll(); ven.hasMore(); ) { final Object value = getWriteValue(ven.next()); sortedVals.add(value.toString()); } Collections.sort(sortedVals); for (Iterator vit = sortedVals.iterator(); vit.hasNext();) { final String value = vit.next(); if (first) { first = false; } else { sb.append(", "); // $NON-NLS-1$ } sb.append(value); } } xmlb.tag(attr.getID(),sb); } } finally { xmlb.closeTag("attributes"); // $NON-NLS-1$ xmlb.closeTag("searchresult"); // $NON-NLS-1$ } } private void sortAttributes(final List sortedAttrs) { Collections.sort(sortedAttrs, new Comparator() { public int compare(Attribute o1, Attribute o2) { String nm1 = o1.getID(); String nm2 = o2.getID(); return nm1.compareTo(nm2); } }); } private void sortResults(final List sortedResults) { Collections.sort(sortedResults, new Comparator() { private int compareToReverse(final String s1, final String s2) { int len1 = s1.length(); int len2 = s2.length(); int s1i = len1 - 1; int s2i = len2 - 1; for ( ; (s1i >= 0) && (s2i >= 0); s1i--, s2i--) { char c1 = s1.charAt(s1i); char c2 = s2.charAt(s2i); if (c1 != c2) { return c1 - c2; } } return len1 - len2; } public int compare(SearchResult o1, SearchResult o2) { String nm1 = o1.getName(); String nm2 = o2.getName(); if (nm1 == null) { nm1 = ""; } if (nm2 == null) { nm2 = ""; } return compareToReverse(nm1, nm2); } }); } private String normaliseSearchDN(final SearchResult sr, final String searchBase, final String rootDn) { String srName = sr.getName(); if (!srName.endsWith(searchBase)) { if (srName.length() > 0) { srName = srName + ','; } srName = srName + searchBase; } if ((rootDn.length() > 0) && !srName.endsWith(rootDn)) { if (srName.length() > 0) { srName = srName + ','; } srName = srName + rootDn; } sr.setName(srName); return srName; } private String getWriteValue(final Object value) { if (value instanceof String) { // assume it's senstive data return StringEscapeUtils.escapeXml((String)value); } if (value instanceof byte[]) { try { return StringEscapeUtils.escapeXml(new String((byte[])value, "UTF-8")); //$NON-NLS-1$ } catch (UnsupportedEncodingException e) { log.error("this can't happen: UTF-8 character encoding not supported", e); } } return StringEscapeUtils.escapeXml(value.toString()); } public void testStarted() { testStarted(""); // $NON-NLS-1$ } public void testEnded() { testEnded(""); // $NON-NLS-1$ } public void testStarted(String host) { // ignored } // Ensure any remaining contexts are closed public void testEnded(String host) { for (Map.Entry entry : ldapContexts.entrySet()) { DirContext dc = entry.getValue(); try { log.warn("Tidying old Context for thread: " + entry.getKey()); dc.close(); } catch (NamingException ignored) { // ignored } } ldapContexts.clear(); } /** * @see org.apache.jmeter.samplers.AbstractSampler#applies(org.apache.jmeter.config.ConfigTestElement) */ @Override public boolean applies(ConfigTestElement configElement) { String guiClass = configElement.getProperty(TestElement.GUI_CLASS).getStringValue(); return APPLIABLE_CONFIG_CLASSES.contains(guiClass); } } apache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/control/0000755000175000017500000000000012032647216026532 5ustar ebourgebourgapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/control/gui/0000755000175000017500000000000012165514773027326 5ustar ebourgebourg././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/control/gui/LdapExtTestSamplerGui.javaapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/control/gui/LdapExtTestSamplerGu0000644000175000017500000000725312032647216033271 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.control.gui; import java.awt.BorderLayout; import javax.swing.JPanel; import org.apache.jmeter.protocol.ldap.config.gui.LdapExtConfigGui; import org.apache.jmeter.protocol.ldap.sampler.LDAPExtSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; /******************************************************************************* * * author Dolf Smits(Dolf.Smits@Siemens.com) created Aug 09 2003 11:00 AM * company Siemens Netherlands N.V.. * * Based on the work of: author T.Elanjchezhiyan(chezhiyan@siptech.co.in) * created Apr 29 2003 11:00 AM company Sip Technologies and Exports Ltd. * ******************************************************************************/ public class LdapExtTestSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private LdapExtConfigGui ldapDefaultPanel; /*************************************************************************** * !ToDo (Constructor description) **************************************************************************/ public LdapExtTestSamplerGui() { init(); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); ldapDefaultPanel.configure(element); } public TestElement createTestElement() { LDAPExtSampler sampler = new LDAPExtSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement sampler) { sampler.clear(); ((LDAPExtSampler) sampler).addTestElement(ldapDefaultPanel.createTestElement()); this.configureTestElement(sampler); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); ldapDefaultPanel.clearGui(); } public String getLabelResource() { return "ldapext_testing_title"; // $NON-NLS-1$ } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(makeTitlePanel(), BorderLayout.NORTH); // MAIN PANEL JPanel mainPanel = new JPanel(new BorderLayout(0, 5)); ldapDefaultPanel = new LdapExtConfigGui(false); mainPanel.add(ldapDefaultPanel); add(mainPanel, BorderLayout.CENTER); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/control/gui/LdapTestSamplerGui.javaapache-jmeter-2.8/src/protocol/ldap/org/apache/jmeter/protocol/ldap/control/gui/LdapTestSamplerGui.j0000644000175000017500000000705612032647216033212 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.protocol.ldap.control.gui; import java.awt.BorderLayout; import javax.swing.BorderFactory; import org.apache.jmeter.config.gui.LoginConfigGui; import org.apache.jmeter.gui.util.VerticalPanel; import org.apache.jmeter.protocol.ldap.config.gui.LdapConfigGui; import org.apache.jmeter.protocol.ldap.sampler.LDAPSampler; import org.apache.jmeter.samplers.gui.AbstractSamplerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.util.JMeterUtils; public class LdapTestSamplerGui extends AbstractSamplerGui { private static final long serialVersionUID = 240L; private LoginConfigGui loginPanel; private LdapConfigGui ldapDefaultPanel; public LdapTestSamplerGui() { init(); } /** * A newly created component can be initialized with the contents of a Test * Element object by calling this method. The component is responsible for * querying the Test Element object for the relevant information to display * in its GUI. * * @param element * the TestElement to configure */ @Override public void configure(TestElement element) { super.configure(element); loginPanel.configure(element); ldapDefaultPanel.configure(element); } public TestElement createTestElement() { LDAPSampler sampler = new LDAPSampler(); modifyTestElement(sampler); return sampler; } /** * Modifies a given TestElement to mirror the data in the gui components. * * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement) */ public void modifyTestElement(TestElement sampler) { sampler.clear(); ((LDAPSampler) sampler).addTestElement(ldapDefaultPanel.createTestElement()); ((LDAPSampler) sampler).addTestElement(loginPanel.createTestElement()); this.configureTestElement(sampler); } /** * Implements JMeterGUIComponent.clearGui */ @Override public void clearGui() { super.clearGui(); ldapDefaultPanel.clearGui(); loginPanel.clearGui(); } public String getLabelResource() { return "ldap_testing_title"; // $NON-NLS-1$ } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); // MAIN PANEL VerticalPanel mainPanel = new VerticalPanel(); loginPanel = new LoginConfigGui(false); ldapDefaultPanel = new LdapConfigGui(false); loginPanel.setBorder(BorderFactory.createTitledBorder(JMeterUtils.getResString("login_config"))); // $NON-NLS-1$ add(makeTitlePanel(), BorderLayout.NORTH); mainPanel.add(loginPanel); mainPanel.add(ldapDefaultPanel); add(mainPanel, BorderLayout.CENTER); } } apache-jmeter-2.8/src/functions/0000755000175000017500000000000012032647221016216 5ustar ebourgebourgapache-jmeter-2.8/src/functions/org/0000755000175000017500000000000012032647221017005 5ustar ebourgebourgapache-jmeter-2.8/src/functions/org/apache/0000755000175000017500000000000012032647221020226 5ustar ebourgebourgapache-jmeter-2.8/src/functions/org/apache/jmeter/0000755000175000017500000000000012032647221021514 5ustar ebourgebourgapache-jmeter-2.8/src/functions/org/apache/jmeter/functions/0000755000175000017500000000000012165514773023540 5ustar ebourgebourgapache-jmeter-2.8/src/functions/org/apache/jmeter/functions/TestPlanName.java0000644000175000017500000000405512032647221026726 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.services.FileServer; /** * Returns Test Plan name * @since 2.6 */ public class TestPlanName extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__TestPlanName"; //$NON-NLS-1$ /** * No-arg constructor. */ public TestPlanName() { super(); } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { return FileServer.getFileServer().getScriptName(); } /** {@inheritDoc} */ @Override public void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 0); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/EvalFunction.java0000644000175000017500000000520612032647221026767 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; // @see PackageTest for unit tests import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to evaluate a string which may contain variable or function references. * * Parameter: string to be evaluated * * Returns: the evaluated value * @since 2.3.1 */ public class EvalFunction extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__eval"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 1; static { desc.add(JMeterUtils.getResString("eval_name_param")); //$NON-NLS-1$ } private Object[] values; public EvalFunction() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String parameter = ((CompoundVariable) values[0]).execute(); CompoundVariable cv = new CompoundVariable(parameter); return cv.execute(); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/SetProperty.java0000644000175000017500000000656612032647221026704 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to set a JMeter property * * Parameters: - property name - value * * Usage: * * Set the property value in the appropriate GUI by using the string: * ${__setProperty(propname,propvalue[,returnvalue?])} * * Returns: nothing or original value if the 3rd parameter is true * @since 2.1 */ public class SetProperty extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__setProperty"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 2; private static final int MAX_PARAMETER_COUNT = 3; static { desc.add(JMeterUtils.getResString("property_name_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("property_value_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("property_returnvalue_param")); //$NON-NLS-1$ } private Object[] values; public SetProperty() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String propertyName = ((CompoundVariable) values[0]).execute(); String propertyValue = ((CompoundVariable) values[1]).execute(); boolean returnValue = false;// should we return original value? if (values.length > 2) { returnValue = ((CompoundVariable) values[2]).execute().equalsIgnoreCase("true"); //$NON-NLS-1$ } if (returnValue) { // Only obtain and cast the return if needed return (String) JMeterUtils.setProperty(propertyName, propertyValue); } else { JMeterUtils.setProperty(propertyName, propertyValue); return ""; } } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/ThreadNumber.java0000644000175000017500000000375112032647221026755 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; /** * Function to return the current thread number. * @since 1.X */ public class ThreadNumber extends AbstractFunction { private static final String KEY = "__threadNum"; //$NON-NLS-1$ private static final List desc = new LinkedList(); /** {@inheritDoc} */ @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String threadName = Thread.currentThread().getName(); return threadName.substring(threadName.lastIndexOf('-') + 1); } /** {@inheritDoc} */ @Override public void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters,0,0); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/XPathWrapper.java0000644000175000017500000001126012032647221026754 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.xml.sax.SAXException; /** * This class wraps the XPathFileContainer for use across multiple threads. * * It maintains a list of nodelist containers, one for each file/xpath combination * */ public final class XPathWrapper { private static final Logger log = LoggingManager.getLoggerForClass(); /* * This Map serves two purposes: * - maps names to containers * - ensures only one container per file across all threads * The key is the concatenation of the file name and the XPath string */ //@GuardedBy("fileContainers") private static final Map fileContainers = new HashMap(); /* The cache of file packs - for faster local access */ private static final ThreadLocal> filePacks = new ThreadLocal>() { @Override protected Map initialValue() { return new HashMap(); } }; private XPathWrapper() {// Prevent separate instantiation super(); } private static XPathFileContainer open(String file, String xpathString) { String tname = Thread.currentThread().getName(); log.info(tname+": Opening " + file); XPathFileContainer frcc=null; try { frcc = new XPathFileContainer(file, xpathString); } catch (FileNotFoundException e) { log.warn(e.getLocalizedMessage()); } catch (IOException e) { log.warn(e.getLocalizedMessage()); } catch (ParserConfigurationException e) { log.warn(e.getLocalizedMessage()); } catch (SAXException e) { log.warn(e.getLocalizedMessage()); } catch (TransformerException e) { log.warn(e.getLocalizedMessage()); } return frcc; } /** * Not thread-safe - must be called from a synchronized method. * * @param file * @param xpathString * @return the next row from the file container */ public static String getXPathString(String file, String xpathString) { Map my = filePacks.get(); String key = file+xpathString; XPathFileContainer xpfc = my.get(key); if (xpfc == null) // We don't have a local copy { synchronized(fileContainers){ xpfc = fileContainers.get(key); if (xpfc == null) { // There's no global copy either xpfc=open(file, xpathString); } if (xpfc != null) { fileContainers.put(key, xpfc);// save the global copy } } // TODO improve the error handling if (xpfc == null) { log.error("XPathFileContainer is null!"); return ""; //$NON-NLS-1$ } my.put(key,xpfc); // save our local copy } if (xpfc.size()==0){ log.warn("XPathFileContainer has no nodes: "+file+" "+xpathString); return ""; //$NON-NLS-1$ } int currentRow = xpfc.nextRow(); log.debug("getting match number " + currentRow); return xpfc.getXPathString(currentRow); } public static void clearAll() { log.debug("clearAll()"); filePacks.get().clear(); String tname = Thread.currentThread().getName(); log.info(tname+": clearing container"); synchronized (fileContainers) { fileContainers.clear(); } } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/FileRowColContainer.java0000644000175000017500000001345112032647221030243 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * File data container for CSV (and similar delimited) files Data is accessible * via row and column number * */ public class FileRowColContainer { private static final Logger log = LoggingManager.getLoggerForClass(); private final List> fileData; // Lines in the file, split into columns private final String fileName; // name of the file public static final String DELIMITER = JMeterUtils.getPropDefault("csvread.delimiter", // $NON-NLS-1$ ","); // $NON-NLS-1$ /** Keeping track of which row is next to be read. */ private int nextRow; /** Delimiter for this file */ private final String delimiter; public FileRowColContainer(String file, String delim) throws IOException, FileNotFoundException { log.debug("FRCC(" + file + "," + delim + ")"); fileName = file; delimiter = delim; nextRow = 0; fileData = new ArrayList>(); load(); } public FileRowColContainer(String file) throws IOException, FileNotFoundException { log.debug("FRCC(" + file + ")[" + DELIMITER + "]"); fileName = file; delimiter = DELIMITER; nextRow = 0; fileData = new ArrayList>(); load(); } private void load() throws IOException, FileNotFoundException { BufferedReader myBread = null; try { FileReader fis = new FileReader(fileName); myBread = new BufferedReader(fis); String line = myBread.readLine(); /* * N.B. Stop reading the file if we get a blank line: This allows * for trailing comments in the file */ while (line != null && line.length() > 0) { fileData.add(splitLine(line, delimiter)); line = myBread.readLine(); } } catch (FileNotFoundException e) { fileData.clear(); log.warn(e.toString()); throw e; } catch (IOException e) { fileData.clear(); log.warn(e.toString()); throw e; } finally { if (myBread != null) { myBread.close(); } } } /** * Get the string for the column from the current row * * @param row * row number (from 0) * @param col * column number (from 0) * @return the string (empty if out of bounds) * @throws IndexOutOfBoundsException * if the column number is out of bounds */ public String getColumn(int row, int col) throws IndexOutOfBoundsException { String colData; colData = fileData.get(row).get(col); log.debug(fileName + "(" + row + "," + col + "): " + colData); return colData; } /** * Returns the next row to the caller, and updates it, allowing for wrap * round * * @return the first free (unread) row * */ public int nextRow() { int row = nextRow; nextRow++; if (nextRow >= fileData.size())// 0-based { nextRow = 0; } log.debug("Row: " + row); return row; } /** * Splits the line according to the specified delimiter * * @return an ArrayList of Strings containing one element for each value in * the line */ private static List splitLine(String theLine, String delim) { ArrayList result = new ArrayList(); StringTokenizer tokener = new StringTokenizer(theLine, delim, true); /* * the beginning of the line is a "delimiter" so that ,a,b,c returns "" * "a" "b" "c" */ boolean lastWasDelim = true; while (tokener.hasMoreTokens()) { String token = tokener.nextToken(); if (token.equals(delim)) { if (lastWasDelim) { // two delimiters in a row; add an empty String result.add(""); } lastWasDelim = true; } else { lastWasDelim = false; result.add(token); } } if (lastWasDelim) // Catch the trailing delimiter { result.add(""); // $NON-NLS-1$ } return result; } /** * @return the file name for this class */ public String getFileName() { return fileName; } /** * @return Returns the delimiter. */ final String getDelimiter() { return delimiter; } // Added to support external testing public int getSize(){ return fileData.size(); } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/EvalVarFunction.java0000644000175000017500000000614412032647221027442 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; // @see PackageTest for unit tests import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Function to evaluate a string which may contain variable or function references. * * Parameter: string to be evaluated * * Returns: the evaluated value * @since 2.3.1 */ public class EvalVarFunction extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__evalVar"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 1; static { desc.add(JMeterUtils.getResString("evalvar_name_param")); //$NON-NLS-1$ } private Object[] values; public EvalVarFunction() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String variableName = ((CompoundVariable) values[0]).execute(); final JMeterVariables vars = getVariables(); if (vars == null){ log.error("Variables have not yet been defined"); return "**ERROR - see log file**"; } String variableValue = vars.get(variableName); CompoundVariable cv = new CompoundVariable(variableValue); return cv.execute(); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/Random.java0000644000175000017500000000641012032647221025610 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; /** * Provides a Random function which returns a random long integer between a min * (first argument) and a max (second argument). * @since 1.9 */ public class Random extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__Random"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("minimum_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("maximum_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private CompoundVariable varName, minimum, maximum; /** * No-arg constructor. */ public Random() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { long min = Long.parseLong(minimum.execute().trim()); long max = Long.parseLong(maximum.execute().trim()); long rand = min + (long) (Math.random() * (max - min + 1)); String randString = Long.toString(rand); if (varName != null) { JMeterVariables vars = getVariables(); final String varTrim = varName.execute().trim(); if (vars != null && varTrim.length() > 0){// vars will be null on TestPlan vars.put(varTrim, randString); } } return randString; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 2, 3); Object[] values = parameters.toArray(); minimum = (CompoundVariable) values[0]; maximum = (CompoundVariable) values[1]; if (values.length>2){ varName = (CompoundVariable) values[2]; } else { varName = null; } } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/Variable.java0000644000175000017500000000521412032647221026116 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to get a JMeter Variable * * Parameters: * - variable name * * Returns: * - the variable value, but if not found * - the variable name itself * @since 2.3RC3 */ public class Variable extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__V"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 1; static { desc.add(JMeterUtils.getResString("variable_name_param")); //$NON-NLS-1$ } private Object[] values; public Variable() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String variableName = ((CompoundVariable) values[0]).execute(); String variableValue = getVariables().get(variableName); return variableValue == null? variableName : variableValue; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/LongSum.java0000644000175000017500000000663212032647221025762 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Provides a longSum function that adds two or more long values. * @see IntSum * @since 2.3.2 */ public class LongSum extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__longSum"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("longsum_param_1")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("longsum_param_2")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private Object[] values; /** * No-arg constructor. */ public LongSum() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { JMeterVariables vars = getVariables(); long sum = 0; String varName = ((CompoundVariable) values[values.length - 1]).execute().trim(); for (int i = 0; i < values.length - 1; i++) { sum += Long.parseLong(((CompoundVariable) values[i]).execute()); } try { // Has chances to be a var sum += Long.parseLong(varName); varName = null; // there is no variable name } catch(NumberFormatException ignored) { // varName keeps its value and sum has not taken // into account non numeric or overflowing number } String totalString = Long.toString(sum); if (vars != null && varName != null && varName.length() > 0){// vars will be null on TestPlan vars.put(varName, totalString); } return totalString; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkMinParameterCount(parameters, 2); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/FileWrapper.java0000644000175000017500000001502612032647221026613 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * This class wraps the FileRowColContainer for use across multiple threads. * * It does this by maintaining a list of open files, keyed by file name (or * alias, if used). A list of open files is also maintained for each thread, * together with the current line number. * */ public final class FileWrapper { private static final Logger log = LoggingManager.getLoggerForClass(); private static final int NO_LINE = -1; private static volatile String defaultFile = ""; // for omitted file names //$NON-NLS-1$ /* * This Map serves two purposes: * - maps file names to containers * - ensures only one container per file across all threads */ private static final Map fileContainers = new HashMap(); /* The cache of file packs - used to improve thread access */ private static final ThreadLocal> filePacks = new ThreadLocal>() { @Override protected Map initialValue() { return new HashMap(); } }; private final FileRowColContainer container; private int currentRow; /* * Only needed locally */ private FileWrapper(FileRowColContainer fdc) { super(); container = fdc; currentRow = -1; } private static String checkDefault(String file) { if (file.length() == 0) { if (fileContainers.size() == 1 && defaultFile.length() > 0) { log.warn("Using default: " + defaultFile); file = defaultFile; } else { log.error("Cannot determine default file name"); } } return file; } /* * called by CSVRead(file,alias) */ public static synchronized void open(String file, String alias) { log.info("Opening " + file + " as " + alias); file = checkDefault(file); if (alias.length() == 0) { log.error("Alias cannot be empty"); return; } Map m = filePacks.get(); if (m.get(alias) == null) { FileRowColContainer frcc; try { frcc = getFile(file, alias); log.info("Stored " + file + " as " + alias); m.put(alias, new FileWrapper(frcc)); } catch (FileNotFoundException e) { // Already logged } catch (IOException e) { // Already logged } } } private static FileRowColContainer getFile(String file, String alias) throws FileNotFoundException, IOException { FileRowColContainer frcc; if ((frcc = fileContainers.get(alias)) == null) { frcc = new FileRowColContainer(file); fileContainers.put(alias, frcc); log.info("Saved " + file + " as " + alias + " delimiter=<" + frcc.getDelimiter() + ">"); if (defaultFile.length() == 0) { defaultFile = file;// Save in case needed later } } return frcc; } /* * Called by CSVRead(x,next) - sets the row to nil so the next row will be * picked up the next time round * */ public static void endRow(String file) { file = checkDefault(file); Map my = filePacks.get(); FileWrapper fw = my.get(file); if (fw == null) { log.warn("endRow(): no entry for " + file); } else { fw.endRow(); } } private void endRow() { if (currentRow == NO_LINE) { log.warn("endRow() called twice in succession"); } currentRow = NO_LINE; } public static String getColumn(String file, int col) { Map my = filePacks.get(); FileWrapper fw = my.get(file); if (fw == null) // First call { if (file.startsWith("*")) { //$NON-NLS-1$ log.warn("Cannot perform initial open using alias " + file); } else { file = checkDefault(file); log.info("Attaching " + file); open(file, file); fw = my.get(file); } // TODO improve the error handling if (fw == null) { return ""; //$NON-NLS-1$ } } return fw.getColumn(col); } private String getColumn(int col) { if (currentRow == NO_LINE) { currentRow = container.nextRow(); } return container.getColumn(currentRow, col); } /** * Gets the current row number (mainly for error reporting) * * @param file * @return the current row number for this thread */ public static int getCurrentRow(String file) { Map my = filePacks.get(); FileWrapper fw = my.get(file); if (fw == null) // Not yet open { return -1; } return fw.currentRow; } /** * */ public static void clearAll() { log.debug("clearAll()"); Map my = filePacks.get(); for (Iterator> i = my.entrySet().iterator(); i.hasNext();) { Map.Entry fw = i.next(); log.info("Removing " + fw.toString()); i.remove(); } fileContainers.clear(); defaultFile = ""; //$NON-NLS-1$ } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/Property.java0000644000175000017500000000704212032647221026216 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; /** * Function to get a JMeter property, and optionally store it * * Parameters: * - property name * - variable name (optional) * - default value (optional) * * Returns: * - the property value, but if not found: * - the default value, but if not defined: * - the property name itself * @since 2.0 */ public class Property extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__property"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 3; static { desc.add(JMeterUtils.getResString("property_name_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("property_default_param")); //$NON-NLS-1$ } private Object[] values; public Property() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String propertyName = ((CompoundVariable) values[0]).execute(); String propertyDefault = propertyName; if (values.length > 2) { // We have a 3rd parameter propertyDefault = ((CompoundVariable) values[2]).execute(); } String propertyValue = JMeterUtils.getPropDefault(propertyName, propertyDefault); if (values.length > 1) { String variableName = ((CompoundVariable) values[1]).execute(); if (variableName.length() > 0) {// Allow for empty name final JMeterVariables variables = getVariables(); if (variables != null) { variables.put(variableName, propertyValue); } } } return propertyValue; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/SplitFunction.java0000644000175000017500000001033212032647221027167 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; // @see org.apache.jmeter.functions.PackageTest for unit tests /** * Function to split a string into variables *

        * Parameters: *

          *
        • String to split
        • *
        • Variable name prefix
        • *
        • String to split on (optional, default is comma)
        • *
        *

        *

        * Returns: the input string *

        * Also sets the variables: *
          *
        • VARNAME - the input string
        • *
        • VARNAME_n - number of fields found
        • *
        • VARNAME_1..n - fields
        • *
        * @since 2.0.2 */ public class SplitFunction extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__split";// $NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 2; private static final int MAX_PARAMETER_COUNT = 3; static { desc.add(JMeterUtils.getResString("split_function_string")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("split_function_separator"));//$NON-NLS-1$ } private Object[] values; public SplitFunction() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { JMeterVariables vars = getVariables(); String stringToSplit = ((CompoundVariable) values[0]).execute(); String varNamePrefix = ((CompoundVariable) values[1]).execute().trim(); String splitString = ","; if (values.length > 2) { // Split string provided splitString = ((CompoundVariable) values[2]).execute(); } if (log.isDebugEnabled()){ log.debug("Split "+stringToSplit+ " using "+ splitString+ " into "+varNamePrefix); } String parts[] = JOrphanUtils.split(stringToSplit, splitString, "?");// $NON-NLS-1$ vars.put(varNamePrefix, stringToSplit); vars.put(varNamePrefix + "_n", Integer.toString(parts.length));// $NON-NLS-1$ for (int i = 1; i <= parts.length; i++) { if (log.isDebugEnabled()){ log.debug(parts[i-1]); } vars.put(varNamePrefix + "_" + i, parts[i - 1]);// $NON-NLS-1$ } vars.remove(varNamePrefix + "_" + (parts.length+1)); return stringToSplit; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/LogFunction.java0000644000175000017500000001341612032647221026623 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.log.Priority; /** *

        * Function to log a message. *

        * *

        * Parameters: *

          *
        • string value
        • *
        • log level (optional; defaults to INFO; or DEBUG if unrecognised; or can use OUT or ERR)
        • *
        • throwable message (optional)
        • *
        • comment (optional)
        • *
        *

        * Returns: - the input string * @since 2.2 */ public class LogFunction extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__log"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 4; static { desc.add(JMeterUtils.getResString("log_function_string_ret")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("log_function_level")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("log_function_throwable")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("log_function_comment")); //$NON-NLS-1$ } private static final String DEFAULT_PRIORITY = "INFO"; //$NON-NLS-1$ private static final String DEFAULT_SEPARATOR = " : "; //$NON-NLS-1$ private Object[] values; public LogFunction() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String stringToLog = ((CompoundVariable) values[0]).execute(); String priorityString; if (values.length > 1) { // We have a default priorityString = ((CompoundVariable) values[1]).execute(); if (priorityString.length() == 0) { priorityString = DEFAULT_PRIORITY; } } else { priorityString = DEFAULT_PRIORITY; } Throwable t = null; if (values.length > 2) { // Throwable wanted String value = ((CompoundVariable) values[2]).execute(); if (value.length() > 0) { t = new Throwable(value); } } String comment = ""; if (values.length > 3) { // Comment wanted comment = ((CompoundVariable) values[3]).execute(); } logDetails(log, stringToLog, priorityString, t, comment); return stringToLog; } // Common output function private static void printDetails(java.io.PrintStream ps, String s, Throwable t, String c) { String tn = Thread.currentThread().getName(); StringBuilder sb = new StringBuilder(80); sb.append("Log: "); sb.append(tn); if (c.length()>0){ sb.append(" "); sb.append(c); } else { sb.append(DEFAULT_SEPARATOR); } sb.append(s); if (t != null) { sb.append(" "); ps.print(sb.toString()); t.printStackTrace(ps); } else { ps.println(sb.toString()); } } // Routine to perform the output (also used by __logn() function) static void logDetails(Logger l, String s, String prio, Throwable t, String c) { if (prio.equalsIgnoreCase("OUT")) //$NON-NLS-1 { printDetails(System.out, s, t, c); } else if (prio.equalsIgnoreCase("ERR")) //$NON-NLS-1 { printDetails(System.err, s, t, c); } else { // N.B. if the string is not recognised, DEBUG is assumed Priority p = Priority.getPriorityForName(prio); if (log.isPriorityEnabled(p)) {// Thread method is potentially expensive String tn = Thread.currentThread().getName(); StringBuilder sb = new StringBuilder(40); sb.append(tn); if (c.length()>0){ sb.append(" "); sb.append(c); } else { sb.append(DEFAULT_SEPARATOR); } sb.append(s); log.log(p, sb.toString(), t); } } } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/MachineIP.java0000644000175000017500000000237012032647221026166 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import org.apache.jmeter.util.JMeterUtils; /** * Return Machine IP * @since 2.6 */ public class MachineIP extends AbstractHostIPName { private static final String KEY = "__machineIP"; //$NON-NLS-1$ public MachineIP() { } @Override protected String compute() { return JMeterUtils.getLocalHostIP(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/LogFunction2.java0000644000175000017500000000725612032647221026712 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** *

        * Function to log a message. *

        * *

        * Parameters: *

          *
        • string value
        • *
        • log level (optional; defaults to INFO; or DEBUG if unrecognised; or can use OUT or ERR)
        • *
        • throwable message (optional)
        • *
        *

        * Returns: - Empty String (so can be used where return value would be a nuisance) * @since 2.2 */ public class LogFunction2 extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__logn"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 3; static { desc.add(JMeterUtils.getResString("log_function_string")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("log_function_level")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("log_function_throwable")); //$NON-NLS-1$ } private static final String DEFAULT_PRIORITY = "INFO"; //$NON-NLS-1$ private Object[] values; public LogFunction2() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String stringToLog = ((CompoundVariable) values[0]).execute(); String priorityString; if (values.length > 1) { // We have a default priorityString = ((CompoundVariable) values[1]).execute(); if (priorityString.length() == 0) { priorityString = DEFAULT_PRIORITY; } } else { priorityString = DEFAULT_PRIORITY; } Throwable t = null; if (values.length > 2) { // Throwable wanted t = new Throwable(((CompoundVariable) values[2]).execute()); } LogFunction.logDetails(log, stringToLog, priorityString, t, ""); return ""; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/TimeFunction.java0000644000175000017500000001122612032647221026775 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; // See org.apache.jmeter.functions.TestTimeFunction for unit tests /** * __time() function - returns the current time in milliseconds * @since 2.2 */ public class TimeFunction extends AbstractFunction { private static final String KEY = "__time"; // $NON-NLS-1$ private static final List desc = new LinkedList(); // Only modified in class init private static final Map aliases = new HashMap(); static { desc.add(JMeterUtils.getResString("time_format")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ aliases.put("YMD", //$NON-NLS-1$ JMeterUtils.getPropDefault("time.YMD", //$NON-NLS-1$ "yyyyMMdd")); //$NON-NLS-1$ aliases.put("HMS", //$NON-NLS-1$ JMeterUtils.getPropDefault("time.HMS", //$NON-NLS-1$ "HHmmss")); //$NON-NLS-1$ aliases.put("YMDHMS", //$NON-NLS-1$ JMeterUtils.getPropDefault("time.YMDHMS", //$NON-NLS-1$ "yyyyMMdd-HHmmss")); //$NON-NLS-1$ aliases.put("USER1", //$NON-NLS-1$ JMeterUtils.getPropDefault("time.USER1","")); //$NON-NLS-1$ aliases.put("USER2", //$NON-NLS-1$ JMeterUtils.getPropDefault("time.USER2","")); //$NON-NLS-1$ } // Ensure that these are set, even if no paramters are provided private String format = ""; //$NON-NLS-1$ private String variable = ""; //$NON-NLS-1$ public TimeFunction(){ super(); } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String datetime; if (format.length() == 0){// Default to milliseconds datetime = Long.toString(System.currentTimeMillis()); } else { // Resolve any aliases String fmt = aliases.get(format); if (fmt == null) { fmt = format;// Not found } if (fmt.matches("/\\d+")) { // divisor is a positive number long div = Long.parseLong(fmt.substring(1)); // should never case NFE datetime = Long.toString((System.currentTimeMillis() / div)); } else { SimpleDateFormat df = new SimpleDateFormat(fmt);// Not synchronised, so can't be shared datetime = df.format(new Date()); } } if (variable.length() > 0) { JMeterVariables vars = getVariables(); if (vars != null){// vars will be null on TestPlan vars.put(variable, datetime); } } return datetime; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 0, 2); Object []values = parameters.toArray(); int count = values.length; if (count > 0) { format = ((CompoundVariable) values[0]).execute(); } if (count > 1) { variable = ((CompoundVariable)values[1]).execute().trim(); } } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/XPathFileContainer.java0000644000175000017500000001036712032647221030065 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import org.apache.jmeter.util.XPathUtil; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JOrphanUtils; import org.apache.log.Logger; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; //@see org.apache.jmeter.functions.PackageTest for unit tests /** * File data container for XML files Data is accessible via XPath * */ public class XPathFileContainer { private static final Logger log = LoggingManager.getLoggerForClass(); private final NodeList nodeList; private final String fileName; // name of the file private final String xpath; /** Keeping track of which row is next to be read. */ private int nextRow;// probably does not need to be synch (always accessed through ThreadLocal?) int getNextRow(){// give access to Test code return nextRow; } public XPathFileContainer(String file, String xpath) throws FileNotFoundException, IOException, ParserConfigurationException, SAXException, TransformerException { if(log.isDebugEnabled()) { log.debug("XPath(" + file + ") xpath " + xpath); } fileName = file; this.xpath = xpath; nextRow = 0; nodeList=load(); } private NodeList load() throws IOException, FileNotFoundException, ParserConfigurationException, SAXException, TransformerException { InputStream fis = null; NodeList nl = null; try { DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); fis = new BufferedInputStream(new FileInputStream(fileName)); nl = XPathUtil.selectNodeList(builder.parse(fis), xpath); if(log.isDebugEnabled()) { log.debug("found " + nl.getLength()); } } catch (FileNotFoundException e) { log.warn(e.toString()); throw e; } catch (IOException e) { log.warn(e.toString()); throw e; } catch (ParserConfigurationException e) { log.warn(e.toString()); throw e; } catch (SAXException e) { log.warn(e.toString()); throw e; } catch (TransformerException e) { log.warn(e.toString()); throw e; } finally { JOrphanUtils.closeQuietly(fis); } return nl; } public String getXPathString(int num) { return nodeList.item(num).getNodeValue(); } /** * Returns the next row to the caller, and updates it, allowing for wrap * round * * @return the first free (unread) row * */ public int nextRow() { int row = nextRow; nextRow++; if (nextRow >= size())// 0-based { nextRow = 0; } log.debug(new StringBuilder("Row: ").append(row).toString()); return row; } public int size() { return (nodeList == null) ? -1 : nodeList.getLength(); } /** * @return the file name for this class */ public String getFileName() { return fileName; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/AbstractHostIPName.java0000644000175000017500000000527712032647221030035 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; abstract class AbstractHostIPName extends AbstractFunction { private static final List desc = new LinkedList(); static { // desc.add("Use fully qualified host name: TRUE/FALSE (Default FALSE)"); desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private Object[] values; public AbstractHostIPName() { } /** {@inheritDoc} */ @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { /* * boolean fullHostName = false; if (((CompoundFunction) values[0]) * .execute() .toLowerCase() .equals("true")) { fullHostName = true; } */ String value = compute(); if (values.length >= 1){// we have a variable name JMeterVariables vars = getVariables(); if (vars != null) {// May be null if function is used on TestPlan String varName = ((CompoundVariable) values[0]).execute().trim(); if (varName.length() > 0) { vars.put(varName, value); } } } return value; } abstract protected String compute(); /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 0, 1); values = parameters.toArray(); } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/Jexl2Function.java0000644000175000017500000001077112032647221027067 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.jexl2.Expression; import org.apache.commons.jexl2.JexlContext; import org.apache.commons.jexl2.JexlEngine; import org.apache.commons.jexl2.MapContext; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A function which understands Commons JEXL2 * @since 2.6 */ // For unit tests, see TestJexlFunction public class Jexl2Function extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String KEY = "__jexl2"; //$NON-NLS-1$ private static final List desc = new LinkedList(); // TODO should the engine be static? private static final JexlEngine jexl = new JexlEngine(); static { jexl.setCache(512); jexl.setLenient(false); jexl.setSilent(false); } static { desc.add(JMeterUtils.getResString("jexl_expression")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt"));// $NON-NLS1$ } private Object[] values; /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String str = ""; //$NON-NLS-1$ CompoundVariable var = (CompoundVariable) values[0]; String exp = var.execute(); String varName = ""; //$NON-NLS-1$ if (values.length > 1) { varName = ((CompoundVariable) values[1]).execute().trim(); } JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); try { JexlContext jc = new MapContext(); jc.set("log", log); //$NON-NLS-1$ jc.set("ctx", jmctx); //$NON-NLS-1$ jc.set("vars", vars); //$NON-NLS-1$ jc.set("props", JMeterUtils.getJMeterProperties()); //$NON-NLS-1$ // Previously mis-spelt as theadName jc.set("threadName", Thread.currentThread().getName()); //$NON-NLS-1$ jc.set("sampler", currentSampler); //$NON-NLS-1$ (may be null) jc.set("sampleResult", previousResult); //$NON-NLS-1$ (may be null) jc.set("OUT", System.out);//$NON-NLS-1$ // Now evaluate the script, getting the result Expression e = jexl.createExpression( exp ); Object o = e.evaluate(jc); if (o != null) { str = o.toString(); } if (vars != null && varName.length() > 0) {// vars will be null on TestPlan vars.put(varName, str); } } catch (Exception e) { log.error("An error occurred while evaluating the expression \"" + exp + "\"\n",e); } return str; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1, 2); values = parameters.toArray(); } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/MachineName.java0000644000175000017500000000240212032647221026532 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import org.apache.jmeter.util.JMeterUtils; /** * Return Machine Host * @since 1.X */ public class MachineName extends AbstractHostIPName { private static final String KEY = "__machineName"; //$NON-NLS-1$ public MachineName() { } @Override protected String compute() { return JMeterUtils.getLocalHostName(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/UnEscape.java0000644000175000017500000000475512032647221026105 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to unescape any Java literals found in the String. * For example, it will turn a sequence of '\' and 'n' into a newline character, * unless the '\' is preceded by another '\'. * * @see StringEscapeUtils#unescapeJava(String) * @since 2.3.3 */ public class UnEscape extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__unescape"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("unescape_string")); //$NON-NLS-1$ } private Object[] values; public UnEscape() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String rawString = ((CompoundVariable) values[0]).execute(); return StringEscapeUtils.unescapeJava(rawString); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/CharFunction.java0000644000175000017500000000545212032647221026760 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Function to generate chars from a list of decimal or hex values * @since 2.3.3 */ public class CharFunction extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__char"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("char_value")); //$NON-NLS-1$ } private Object[] values; public CharFunction() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { StringBuilder sb = new StringBuilder(values.length); for (int i=0; i < values.length; i++){ String numberString = ((CompoundVariable) values[i]).execute().trim(); try { long value=Long.decode(numberString).longValue(); char ch = (char) value; sb.append(ch); } catch (NumberFormatException e){ log.warn("Could not parse "+numberString+" : "+e); } } return sb.toString(); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkMinParameterCount(parameters, 1); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/XPath.java0000644000175000017500000001015212032647221025412 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; // @see org.apache.jmeter.functions.PackageTest for unit tests /** * The function represented by this class allows data to be read from XML files. * Syntax is similar to the CVSRead function. The function allows the test to * line-thru the nodes in the XML file - one node per each test. E.g. inserting * the following in the test scripts : * * ${_XPath(c:/BOF/abcd.xml,/xpath/)} // match the (first) node * ${_XPath(c:/BOF/abcd.xml,/xpath/)} // Go to next match of '/xpath/' expression * * NOTE: A single instance of each different file/expression combination * is opened and used for all threads. * @since 2.0.3 */ public class XPath extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); // static { // LoggingManager.setPriority("DEBUG","jmeter"); // LoggingManager.setTarget(new java.io.PrintWriter(System.out)); // } private static final String KEY = "__XPath"; // Function name //$NON-NLS-1$ private static final List desc = new LinkedList(); private Object[] values; // Parameter list static { desc.add(JMeterUtils.getResString("xpath_file_file_name")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("xpath_expression")); //$NON-NLS-1$ } public XPath() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String myValue = ""; //$NON-NLS-1$ String fileName = ((CompoundVariable) values[0]).execute(); String xpathString = ((CompoundVariable) values[1]).execute(); if (log.isDebugEnabled()){ log.debug("execute (" + fileName + " " + xpathString + ") "); } myValue = XPathWrapper.getXPathString(fileName, xpathString); if (log.isDebugEnabled()){ log.debug("execute value: " + myValue); } return myValue; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { log.debug("setParameter - Collection.size=" + parameters.size()); values = parameters.toArray(); if (log.isDebugEnabled()) { for (int i = 0; i < parameters.size(); i++) { log.debug("i:" + ((CompoundVariable) values[i]).execute()); } } checkParameterCount(parameters, 2); /* * Need to reset the containers for repeated runs; about the only way * for functions to detect that a run is starting seems to be the * setParameters() call. */ XPathWrapper.clearAll();// TODO only clear the relevant entry - if possible... } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/UnEscapeHtml.java0000644000175000017500000000546312032647221026727 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to unescape a string containing entity escapes * to a string containing the actual Unicode characters corresponding to the escapes. * Supports HTML 4.0 entities. *

        * For example, the string "&lt;Fran&ccedil;ais&gt;" will become "<Français>" *

        *

        * If an entity is unrecognized, it is left alone, and inserted verbatim into the result string. * e.g. "&gt;&zzzz;x" will become ">&zzzz;x". *

        * @see org.apache.commons.lang3.StringEscapeUtils#unescapeHtml4(String) * @since 2.3.3 */ public class UnEscapeHtml extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__unescapeHtml"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("unescape_html_string")); //$NON-NLS-1$ } private Object[] values; public UnEscapeHtml() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String escapedString = ((CompoundVariable) values[0]).execute(); return StringEscapeUtils.unescapeHtml4(escapedString); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/BeanShell.java0000644000175000017500000001151212032647221026224 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.BeanShellInterpreter; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A function which understands BeanShell * @since 1.X */ public class BeanShell extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__BeanShell"; //$NON-NLS-1$ public static final String INIT_FILE = "beanshell.function.init"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("bsh_function_expression"));// $NON-NLS1$ desc.add(JMeterUtils.getResString("function_name_paropt"));// $NON-NLS1$ } private Object[] values; private BeanShellInterpreter bshInterpreter = null; public BeanShell() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { if (bshInterpreter == null) // did we find BeanShell? { throw new InvalidVariableException("BeanShell not found"); } JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); String script = ((CompoundVariable) values[0]).execute(); String varName = ""; //$NON-NLS-1$ if (values.length > 1) { varName = ((CompoundVariable) values[1]).execute().trim(); } String resultStr = ""; //$NON-NLS-1$ log.debug("Script=" + script); try { // Pass in some variables if (currentSampler != null) { bshInterpreter.set("Sampler", currentSampler); //$NON-NLS-1$ } if (previousResult != null) { bshInterpreter.set("SampleResult", previousResult); //$NON-NLS-1$ } // Allow access to context and variables directly bshInterpreter.set("ctx", jmctx); //$NON-NLS-1$ bshInterpreter.set("vars", vars); //$NON-NLS-1$ bshInterpreter.set("props", JMeterUtils.getJMeterProperties()); //$NON-NLS-1$ bshInterpreter.set("threadName", Thread.currentThread().getName()); //$NON-NLS-1$ // Execute the script Object bshOut = bshInterpreter.eval(script); if (bshOut != null) { resultStr = bshOut.toString(); } if (vars != null && varName.length() > 0) {// vars will be null on TestPlan vars.put(varName, resultStr); } } catch (Exception ex) // Mainly for bsh.EvalError { log.warn("Error running BSH script", ex); } log.debug("Output=" + resultStr); return resultStr; } /* * Helper method for use by scripts * */ public void log_info(String s) { log.info(s); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1, 2); values = parameters.toArray(); try { bshInterpreter = new BeanShellInterpreter(JMeterUtils.getProperty(INIT_FILE), log); } catch (ClassNotFoundException e) { throw new InvalidVariableException("BeanShell not found", e); } } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/StringFromFile.java0000644000175000017500000002742212032647221027270 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.text.DecimalFormat; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.testelement.TestStateListener; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterStopThreadException; import org.apache.log.Logger; /** * StringFromFile Function to read a String from a text file. * * Parameters: * - file name * - variable name (optional - defaults to StringFromFile_) * * Returns: * - the next line from the file * - or **ERR** if an error occurs * - value is also saved in the variable for later re-use. * * Ensure that different variable names are used for each call to the function * * * Notes: *
          *
        • JMeter instantiates a single copy of each function for every reference in the test plan
        • *
        • Function instances are shared between threads.
        • *
        • Each StringFromFile instance reads the file independently. The output variable can be used to save the * value for later use in the same thread.
        • *
        • The file name is resolved at file (re-)open time; the file is initially opened on first execution (which could be any thread)
        • *
        • the output variable name is resolved every time the function is invoked
        • *
        * Because function instances are shared, it does not make sense to use the thread number as part of the file name. * @since 1.9 */ public class StringFromFile extends AbstractFunction implements TestStateListener { private static final Logger log = LoggingManager.getLoggerForClass(); // Only modified by static block so no need to synchronize subsequent read-only access private static final List desc = new LinkedList(); private static final String KEY = "__StringFromFile";//$NON-NLS-1$ static final String ERR_IND = "**ERR**";//$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("string_from_file_file_name"));//$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt"));//$NON-NLS-1$ desc.add(JMeterUtils.getResString("string_from_file_seq_start"));//$NON-NLS-1$ desc.add(JMeterUtils.getResString("string_from_file_seq_final"));//$NON-NLS-1$ } private static final int MIN_PARAM_COUNT = 1; private static final int PARAM_NAME = 2; private static final int PARAM_START = 3; private static final int PARAM_END = 4; private static final int MAX_PARAM_COUNT = 4; private static final int COUNT_UNUSED = -2; // @GuardedBy("this") private Object[] values; // @GuardedBy("this") private BufferedReader myBread = null; // Buffered reader // @GuardedBy("this") private boolean firstTime = false; // should we try to open the file? // @GuardedBy("this") private String fileName; // needed for error messages // @GuardedBy("this") private int myStart = COUNT_UNUSED; // @GuardedBy("this") private int myCurrent = COUNT_UNUSED; // @GuardedBy("this") private int myEnd = COUNT_UNUSED; public StringFromFile() { if (log.isDebugEnabled()) { log.debug("++++++++ Construct " + this); } } /** * Close file and log */ private synchronized void closeFile() { if (myBread == null) { return; } String tn = Thread.currentThread().getName(); log.info(tn + " closing file " + fileName);//$NON-NLS-1$ try { myBread.close(); } catch (IOException e) { log.error("closeFile() error: " + e.toString(), e);//$NON-NLS-1$ } } private synchronized void openFile() { String tn = Thread.currentThread().getName(); fileName = ((CompoundVariable) values[0]).execute(); String start = ""; if (values.length >= PARAM_START) { start = ((CompoundVariable) values[PARAM_START - 1]).execute(); try { // Low chances to be non numeric, we parse myStart = Integer.parseInt(start); } catch(NumberFormatException e) { myStart = COUNT_UNUSED;// Don't process invalid numbers log.warn("Exception parsing "+start + " as int, value will not be considered as Start Number sequence"); } } // Have we used myCurrent yet? // Set to 1 if start number is missing (to allow for end without start) if (myCurrent == COUNT_UNUSED) { myCurrent = myStart == COUNT_UNUSED ? 1 : myStart; } if (values.length >= PARAM_END) { String tmp = ((CompoundVariable) values[PARAM_END - 1]).execute(); try { // Low chances to be non numeric, we parse myEnd = Integer.parseInt(tmp); } catch(NumberFormatException e) { myEnd = COUNT_UNUSED;// Don't process invalid numbers (including "") log.warn("Exception parsing "+tmp + " as int, value will not be considered as End Number sequence"); } } if (values.length >= PARAM_START) { log.info(tn + " Start = " + myStart + " Current = " + myCurrent + " End = " + myEnd);//$NON-NLS-1$ if (myEnd != COUNT_UNUSED) { if (myCurrent > myEnd) { log.info(tn + " No more files to process, " + myCurrent + " > " + myEnd);//$NON-NLS-1$ myBread = null; return; } } /* * DecimalFormat adds the number to the end of the format if there * are no formatting characters, so we need a way to prevent this * from messing up the file name. * */ if (myStart != COUNT_UNUSED) // Only try to format if there is a // number { log.info(tn + " using format " + fileName); try { DecimalFormat myFormatter = new DecimalFormat(fileName); fileName = myFormatter.format(myCurrent); } catch (NumberFormatException e) { log.warn("Bad file name format ", e); } } myCurrent++;// for next time } log.info(tn + " opening file " + fileName);//$NON-NLS-1$ try { myBread = new BufferedReader(new FileReader(fileName)); } catch (Exception e) { log.error("openFile() error: " + e.toString());//$NON-NLS-1$ myBread = null; } } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String myValue = ERR_IND; String myName = "StringFromFile_";//$NON-NLS-1$ if (values.length >= PARAM_NAME) { myName = ((CompoundVariable) values[PARAM_NAME - 1]).execute().trim(); } /* * To avoid re-opening the file repeatedly after an error, only try to * open it in the first execute() call (It may be re=opened at EOF, but * that will cause at most one failure.) */ if (firstTime) { openFile(); firstTime = false; } if (null != myBread) { // Did we open the file? try { String line = myBread.readLine(); if (line == null) { // EOF, re-open file String tn = Thread.currentThread().getName(); log.info(tn + " EOF on file " + fileName);//$NON-NLS-1$ closeFile(); openFile(); if (myBread != null) { line = myBread.readLine(); } else { line = ERR_IND; if (myEnd != COUNT_UNUSED) {// Are we processing a file // sequence? log.info(tn + " Detected end of sequence."); throw new JMeterStopThreadException("End of sequence"); } } } myValue = line; } catch (IOException e) { String tn = Thread.currentThread().getName(); log.error(tn + " error reading file " + e.toString());//$NON-NLS-1$ } } else { // File was not opened successfully if (myEnd != COUNT_UNUSED) {// Are we processing a file sequence? String tn = Thread.currentThread().getName(); log.info(tn + " Detected end of sequence."); throw new JMeterStopThreadException("End of sequence"); } } if (myName.length() > 0) { JMeterVariables vars = getVariables(); if (vars != null) {// Can be null if called from Config item testEnded() method vars.put(myName, myValue); } } if (log.isDebugEnabled()) { String tn = Thread.currentThread().getName(); log.debug(tn + " name:" //$NON-NLS-1$ + myName + " value:" + myValue);//$NON-NLS-1$ } return myValue; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { log.debug(this + "::StringFromFile.setParameters()");//$NON-NLS-1$ checkParameterCount(parameters, MIN_PARAM_COUNT, MAX_PARAM_COUNT); values = parameters.toArray(); StringBuilder sb = new StringBuilder(40); sb.append("setParameters(");//$NON-NLS-1$ for (int i = 0; i < values.length; i++) { if (i > 0) { sb.append(","); } sb.append(((CompoundVariable) values[i]).getRawParameters()); } sb.append(")");//$NON-NLS-1$ log.info(sb.toString()); // N.B. setParameters is called before the test proper is started, // and thus variables are not interpreted at this point // So defer the file open until later to allow variable file names to be // used. firstTime = true; } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } /** {@inheritDoc} */ public void testStarted() { // } /** {@inheritDoc} */ public void testStarted(String host) { // } /** {@inheritDoc} */ public void testEnded() { this.testEnded(""); //$NON-NLS-1$ } /** {@inheritDoc} */ public void testEnded(String host) { closeFile(); } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/IterationCounter.java0000644000175000017500000000723012032647221027667 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; /** * Counter that can be referenced anywhere in the Thread Group. It can be configured per User (Thread Local) * or globally. * @since 1.X */ public class IterationCounter extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__counter"; //$NON-NLS-1$ private ThreadLocal perThreadInt; private Object[] variables; private int globalCounter;//MAXINT = 2,147,483,647 private void init(){ synchronized(this){ globalCounter=0; } perThreadInt = new ThreadLocal(){ @Override protected Integer initialValue() { return Integer.valueOf(0); } }; } static { desc.add(JMeterUtils.getResString("iteration_counter_arg_1")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } public IterationCounter() { init(); } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { globalCounter++; JMeterVariables vars = getVariables(); boolean perThread = Boolean.parseBoolean(((CompoundVariable) variables[0]).execute()); String varName = ""; //$NON-NLS-1$ if (variables.length >=2) {// Ensure variable has been provided varName = ((CompoundVariable) variables[1]).execute().trim(); } String counterString = ""; //$NON-NLS-1$ if (perThread) { int threadCounter; threadCounter = perThreadInt.get().intValue() + 1; perThreadInt.set(Integer.valueOf(threadCounter)); counterString = String.valueOf(threadCounter); } else { counterString = String.valueOf(globalCounter); } // vars will be null on Test Plan if (vars != null && varName.length() > 0) { vars.put(varName, counterString); } return counterString; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1, 2); variables = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/Property2.java0000644000175000017500000000670112032647221026301 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** * Function to get a JMeter property, or a default. Does not offer the option to * store the value, as it is just as easy to refetch it. This is a * specialisation of the __property() function to make it simpler to use for * ThreadGroup GUI etc. The name is also shorter. * * Parameters: - property name - default value (optional; defaults to "1") * * Usage: * * Define the property in jmeter.properties, or on the command-line: java ... * -Jpropname=value * * Retrieve the value in the appropriate GUI by using the string: * ${__P(propname)} $(__P(propname,default)} * * Returns: - the property value, but if not found - the default value, but if * not present - "1" (suitable for use in ThreadGroup GUI) * @since 2.0 */ public class Property2 extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__P"; //$NON-NLS-1$ // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 1; private static final int MAX_PARAMETER_COUNT = 2; static { desc.add(JMeterUtils.getResString("property_name_param")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("property_default_param")); //$NON-NLS-1$ } private Object[] values; public Property2() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String propertyName = ((CompoundVariable) values[0]).execute(); String propertyDefault = "1"; //$NON-NLS-1$ if (values.length > 1) { // We have a default propertyDefault = ((CompoundVariable) values[1]).execute(); } String propertyValue = JMeterUtils.getPropDefault(propertyName, propertyDefault); return propertyValue; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/RegexFunction.java0000644000175000017500000002526712032647221027163 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Random; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.apache.oro.text.MalformedCachePatternException; import org.apache.oro.text.regex.MatchResult; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternMatcher; import org.apache.oro.text.regex.PatternMatcherInput; import org.apache.oro.text.regex.Perl5Compiler; import org.apache.oro.text.regex.Util; /** * Implements regular expression parsing of sample results and variables * @since 1.X */ // @see TestRegexFunction for unit tests public class RegexFunction extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); public static final String ALL = "ALL"; //$NON-NLS-1$ public static final String RAND = "RAND"; //$NON-NLS-1$ public static final String KEY = "__regexFunction"; //$NON-NLS-1$ private Object[] values;// Parameters are stored here private static final Random rand = new Random(); private static final List desc = new LinkedList(); private static final String TEMPLATE_PATTERN = "\\$(\\d+)\\$"; //$NON-NLS-1$ /** initialised to the regex \$(\d+)\$ */ private final Pattern templatePattern; // Number of parameters expected - used to reject invalid calls private static final int MIN_PARAMETER_COUNT = 2; private static final int MAX_PARAMETER_COUNT = 7; static { desc.add(JMeterUtils.getResString("regexfunc_param_1"));// regex //$NON-NLS-1$ desc.add(JMeterUtils.getResString("regexfunc_param_2"));// template //$NON-NLS-1$ desc.add(JMeterUtils.getResString("regexfunc_param_3"));// which match //$NON-NLS-1$ desc.add(JMeterUtils.getResString("regexfunc_param_4"));// between text //$NON-NLS-1$ desc.add(JMeterUtils.getResString("regexfunc_param_5"));// default text //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); // output variable name //$NON-NLS-1$ desc.add(JMeterUtils.getResString("regexfunc_param_7"));// input variable //$NON-NLS-1$ } public RegexFunction() { templatePattern = JMeterUtils.getPatternCache().getPattern(TEMPLATE_PATTERN, Perl5Compiler.READ_ONLY_MASK); } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String valueIndex = ""; //$NON-NLS-1$ String defaultValue = ""; //$NON-NLS-1$ String between = ""; //$NON-NLS-1$ String name = ""; //$NON-NLS-1$ String inputVariable = ""; //$NON-NLS-1$ Pattern searchPattern; Object[] tmplt; try { searchPattern = JMeterUtils.getPatternCache().getPattern(((CompoundVariable) values[0]).execute(), Perl5Compiler.READ_ONLY_MASK); tmplt = generateTemplate(((CompoundVariable) values[1]).execute()); if (values.length > 2) { valueIndex = ((CompoundVariable) values[2]).execute(); } if (valueIndex.length() == 0) { valueIndex = "1"; //$NON-NLS-1$ } if (values.length > 3) { between = ((CompoundVariable) values[3]).execute(); } if (values.length > 4) { String dv = ((CompoundVariable) values[4]).execute(); if (dv.length() != 0) { defaultValue = dv; } } if (values.length > 5) { name = ((CompoundVariable) values[5]).execute(); } if (values.length > 6) { inputVariable = ((CompoundVariable) values[6]).execute(); } } catch (MalformedCachePatternException e) { log.error("Malformed cache pattern:"+values[0], e); throw new InvalidVariableException("Malformed cache pattern:"+values[0], e); } // Relatively expensive operation, so do it once JMeterVariables vars = getVariables(); if (vars == null){// Can happen if called during test closedown return defaultValue; } if (name.length() > 0) { vars.put(name, defaultValue); } String textToMatch=null; if (inputVariable.length() > 0){ textToMatch=vars.get(inputVariable); } else if (previousResult != null){ textToMatch = previousResult.getResponseDataAsString(); } if (textToMatch == null || textToMatch.length() == 0) { return defaultValue; } List collectAllMatches = new ArrayList(); try { PatternMatcher matcher = JMeterUtils.getMatcher(); PatternMatcherInput input = new PatternMatcherInput(textToMatch); while (matcher.contains(input, searchPattern)) { MatchResult match = matcher.getMatch(); collectAllMatches.add(match); } } finally { if (name.length() > 0){ vars.put(name + "_matchNr", Integer.toString(collectAllMatches.size())); //$NON-NLS-1$ } } if (collectAllMatches.size() == 0) { return defaultValue; } if (valueIndex.equals(ALL)) { StringBuilder value = new StringBuilder(); Iterator it = collectAllMatches.iterator(); boolean first = true; while (it.hasNext()) { if (!first) { value.append(between); } else { first = false; } value.append(generateResult(it.next(), name, tmplt, vars)); } return value.toString(); } else if (valueIndex.equals(RAND)) { MatchResult result = collectAllMatches.get(rand.nextInt(collectAllMatches.size())); return generateResult(result, name, tmplt, vars); } else { try { int index = Integer.parseInt(valueIndex) - 1; MatchResult result = collectAllMatches.get(index); return generateResult(result, name, tmplt, vars); } catch (NumberFormatException e) { float ratio = Float.parseFloat(valueIndex); MatchResult result = collectAllMatches .get((int) (collectAllMatches.size() * ratio + .5) - 1); return generateResult(result, name, tmplt, vars); } catch (IndexOutOfBoundsException e) { return defaultValue; } } } private void saveGroups(MatchResult result, String namep, JMeterVariables vars) { if (result != null) { for (int x = 0; x < result.groups(); x++) { vars.put(namep + "_g" + x, result.group(x)); //$NON-NLS-1$ } } } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } private String generateResult(MatchResult match, String namep, Object[] template, JMeterVariables vars) { saveGroups(match, namep, vars); StringBuilder result = new StringBuilder(); for (int a = 0; a < template.length; a++) { if (template[a] instanceof String) { result.append(template[a]); } else { result.append(match.group(((Integer) template[a]).intValue())); } } if (namep.length() > 0){ vars.put(namep, result.toString()); } return result.toString(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAMETER_COUNT, MAX_PARAMETER_COUNT); values = parameters.toArray(); } private Object[] generateTemplate(String rawTemplate) { List pieces = new ArrayList(); // String or Integer List combined = new LinkedList(); PatternMatcher matcher = JMeterUtils.getMatcher(); Util.split(pieces, matcher, templatePattern, rawTemplate); PatternMatcherInput input = new PatternMatcherInput(rawTemplate); boolean startsWith = isFirstElementGroup(rawTemplate); if (startsWith) { pieces.remove(0);// Remove initial empty entry } Iterator iter = pieces.iterator(); while (iter.hasNext()) { boolean matchExists = matcher.contains(input, templatePattern); if (startsWith) { if (matchExists) { combined.add(Integer.valueOf(matcher.getMatch().group(1))); } combined.add(iter.next()); } else { combined.add(iter.next()); if (matchExists) { combined.add(Integer.valueOf(matcher.getMatch().group(1))); } } } if (matcher.contains(input, templatePattern)) { combined.add(Integer.valueOf(matcher.getMatch().group(1))); } return combined.toArray(); } private boolean isFirstElementGroup(String rawData) { Pattern pattern = JMeterUtils.getPatternCache().getPattern("^\\$\\d+\\$", //$NON-NLS-1$ Perl5Compiler.READ_ONLY_MASK); return JMeterUtils.getMatcher().contains(rawData, pattern); } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/IntSum.java0000644000175000017500000000662112032647221025613 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Provides an intSum function that adds two or more integer values. * * @see LongSum * @since 1.8.1 */ public class IntSum extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__intSum"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("intsum_param_1")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("intsum_param_2")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private Object[] values; /** * No-arg constructor. */ public IntSum() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { JMeterVariables vars = getVariables(); int sum = 0; String varName = ((CompoundVariable) values[values.length - 1]).execute(); for (int i = 0; i < values.length - 1; i++) { sum += Integer.parseInt(((CompoundVariable) values[i]).execute()); } try { // Has chances to be a var sum += Integer.parseInt(varName); varName = null; // there is no variable name } catch(NumberFormatException ignored) { // varName keeps its value and sum has not taken // into account non numeric or overflowing number } String totalString = Integer.toString(sum); if (vars != null && varName != null){// vars will be null on TestPlan vars.put(varName.trim(), totalString); } return totalString; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkMinParameterCount(parameters, 2); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/SamplerName.java0000644000175000017500000000570212032647221026577 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; /** * Function to return the name of the current sampler. * @since 2.5 */ public class SamplerName extends AbstractFunction { private static final String KEY = "__samplerName"; //$NON-NLS-1$ private static final List desc = new LinkedList(); static { // desc.add("Use fully qualified host name: TRUE/FALSE (Default FALSE)"); desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private Object[] values; // TODO Should this method be synchronized ? all other function execute are /** {@inheritDoc} */ @Override public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { // return JMeterContextService.getContext().getCurrentSampler().getName(); String name = ""; if (currentSampler != null) { // will be null if function is used on TestPlan name = currentSampler.getName(); } if (values.length > 0){ JMeterVariables vars = getVariables(); if (vars != null) {// May be null if function is used on TestPlan String varName = ((CompoundVariable) values[0]).execute().trim(); if (varName.length() > 0) { vars.put(varName, name); } } } return name; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 0, 1); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/FileToString.java0000644000175000017500000001103112032647221026734 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.io.FileUtils; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.jorphan.util.JMeterStopThreadException; import org.apache.log.Logger; /** * FileToString Function to read a complete file into a String. * * Parameters: * - file name * - file encoding (optional) * - variable name (optional) * * Returns: * - the whole text from a file * - or **ERR** if an error occurs * - value is also optionally saved in the variable for later re-use. * @since 2.4 */ public class FileToString extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__FileToString";//$NON-NLS-1$ static final String ERR_IND = "**ERR**";//$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("string_from_file_file_name"));//$NON-NLS-1$ desc.add(JMeterUtils.getResString("string_from_file_encoding"));//$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt"));//$NON-NLS-1$ } private static final int MIN_PARAM_COUNT = 1; private static final int MAX_PARAM_COUNT = 3; private static final int ENCODING = 2; private static final int PARAM_NAME = 3; private Object[] values; public FileToString() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String fileName = ((CompoundVariable) values[0]).execute(); String encoding = null;//means platform default if (values.length >= ENCODING) { encoding = ((CompoundVariable) values[ENCODING - 1]).execute().trim(); if (encoding.length() <= 0) { // empty encoding, return to platorm default encoding = null; } } String myName = "";//$NON-NLS-1$ if (values.length >= PARAM_NAME) { myName = ((CompoundVariable) values[PARAM_NAME - 1]).execute().trim(); } String myValue = ERR_IND; try { myValue = FileUtils.readFileToString(new File(fileName), encoding); } catch (IOException e) { log.warn("Could not read file: "+fileName+" "+e.getMessage(), e); throw new JMeterStopThreadException("End of sequence", e); } if (myName.length() > 0) { JMeterVariables vars = getVariables(); if (vars != null) {// Can be null if called from Config item testEnded() method vars.put(myName, myValue); } } if (log.isDebugEnabled()) { String tn = Thread.currentThread().getName(); log.debug(tn + " name:" //$NON-NLS-1$ + myName + " value:" + myValue);//$NON-NLS-1$ } return myValue; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAM_COUNT, MAX_PARAM_COUNT); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/EscapeHtml.java0000644000175000017500000000541112032647221026415 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.lang3.StringEscapeUtils; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; /** *

        Function which escapes the characters in a String using HTML entities.

        * *

        * For example: *

        *

        "bread" & "butter"

        * becomes: *

        * &quot;bread&quot; &amp; &quot;butter&quot;. *

        * *

        Supports all known HTML 4.0 entities. * Note that the commonly used apostrophe escape character (&apos;) * is not a legal entity and so is not supported).

        * * @see StringEscapeUtils#escapeHtml4(String) (Commons Lang) * @since 2.3.3 */ public class EscapeHtml extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__escapeHtml"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("escape_html_string")); //$NON-NLS-1$ } private Object[] values; public EscapeHtml() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String rawString = ((CompoundVariable) values[0]).execute(); return StringEscapeUtils.escapeHtml4(rawString); } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/CSVRead.java0000644000175000017500000001327012032647221025621 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * The function represented by this class allows data to be read from CSV files. * Syntax is similar to StringFromFile function. The function allows the test to * line-thru the data in the CSV file - one line per each test. E.g. inserting * the following in the test scripts : * * ${_CSVRead(c:/BOF/abcd.csv,0)} // read (first) line of 'c:/BOF/abcd.csv' , * return the 1st column ( represented by the '0'), * ${_CSVRead(c:/BOF/abcd.csv,1)} // read (first) line of 'c:/BOF/abcd.csv' , * return the 2nd column ( represented by the '1'), * ${_CSVRead(c:/BOF/abcd.csv,next())} // Go to next line of 'c:/BOF/abcd.csv' * * NOTE: A single instance of each different file is opened and used for all * threads. * * To open the same file twice, use the alias function: __CSVRead(abc.csv,*ONE); * __CSVRead(abc.csv,*TWO); * * __CSVRead(*ONE,1); etc * @since 1.9 */ public class CSVRead extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String KEY = "__CSVRead"; // Function name //$NON-NLS-1$ private static final List desc = new LinkedList(); private Object[] values; // Parameter list static { desc.add(JMeterUtils.getResString("csvread_file_file_name")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("column_number")); //$NON-NLS-1$ } public CSVRead() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String myValue = ""; //$NON-NLS-1$ String fileName = ((org.apache.jmeter.engine.util.CompoundVariable) values[0]).execute(); String columnOrNext = ((org.apache.jmeter.engine.util.CompoundVariable) values[1]).execute(); log.debug("execute (" + fileName + " , " + columnOrNext + ") "); // Process __CSVRead(filename,*ALIAS) if (columnOrNext.startsWith("*")) { //$NON-NLS-1$ FileWrapper.open(fileName, columnOrNext); /* * All done, so return */ return ""; //$NON-NLS-1$ } // if argument is 'next' - go to the next line if (columnOrNext.equals("next()") || columnOrNext.equals("next")) { //$NON-NLS-1$ //$NON-NLS-2$ FileWrapper.endRow(fileName); /* * All done now ,so return the empty string - this allows the caller * to append __CSVRead(file,next) to the last instance of * __CSVRead(file,col) * * N.B. It is important not to read any further lines at this point, * otherwise the wrong line can be retrieved when using multiple * threads. */ return ""; //$NON-NLS-1$ } try { int columnIndex = Integer.parseInt(columnOrNext); // what column // is wanted? myValue = FileWrapper.getColumn(fileName, columnIndex); } catch (NumberFormatException e) { log.warn(Thread.currentThread().getName() + " - can't parse column number: " + columnOrNext + " " + e.toString()); } catch (IndexOutOfBoundsException e) { log.warn(Thread.currentThread().getName() + " - invalid column number: " + columnOrNext + " at row " + FileWrapper.getCurrentRow(fileName) + " " + e.toString()); } log.debug("execute value: " + myValue); return myValue; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { log.debug("setParameter - Collection.size=" + parameters.size()); values = parameters.toArray(); if (log.isDebugEnabled()) { for (int i = 0; i < parameters.size(); i++) { log.debug("i:" + ((CompoundVariable) values[i]).execute()); } } checkParameterCount(parameters, 2); /* * Need to reset the containers for repeated runs; about the only way * for functions to detect that a run is starting seems to be the * setParameters() call. */ FileWrapper.clearAll();// TODO only clear the relevant entry - if possible... } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/JavaScript.java0000644000175000017500000001053412032647221026440 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.mozilla.javascript.Context; import org.mozilla.javascript.RhinoException; import org.mozilla.javascript.Scriptable; /** * javaScript function implementation that executes a piece of JavaScript (not Java!) code and returns its value * @since 1.9 */ public class JavaScript extends AbstractFunction { private static final List desc = new LinkedList(); private static final String KEY = "__javaScript"; //$NON-NLS-1$ private static final Logger log = LoggingManager.getLoggerForClass(); static { desc.add(JMeterUtils.getResString("javascript_expression"));//$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private Object[] values; public JavaScript() { } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); String script = ((CompoundVariable) values[0]).execute(); // Allow variable to be omitted String varName = values.length < 2 ? null : ((CompoundVariable) values[1]).execute().trim(); String resultStr = ""; Context cx = Context.enter(); try { Scriptable scope = cx.initStandardObjects(null); // Set up some objects for the script to play with scope.put("log", scope, log); //$NON-NLS-1$ scope.put("ctx", scope, jmctx); //$NON-NLS-1$ scope.put("vars", scope, vars); //$NON-NLS-1$ scope.put("props", scope, JMeterUtils.getJMeterProperties()); //$NON-NLS-1$ // Previously mis-spelt as theadName scope.put("threadName", scope, Thread.currentThread().getName()); //$NON-NLS-1$ scope.put("sampler", scope, currentSampler); //$NON-NLS-1$ scope.put("sampleResult", scope, previousResult); //$NON-NLS-1$ Object result = cx.evaluateString(scope, script, "", 1, null); //$NON-NLS-1$ resultStr = Context.toString(result); if (varName != null && vars != null) {// vars can be null if run from TestPlan vars.put(varName, resultStr); } } catch (RhinoException e) { log.error("Error processing Javascript: [" + script + "]\n", e); throw new InvalidVariableException("Error processing Javascript: [" + script + "]", e); } finally { Context.exit(); } return resultStr; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1, 2); values = parameters.toArray(); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } } apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/package.html0000644000175000017500000000301112032647221026000 0ustar ebourgebourg

        Functions

        Methods to be implemented

        setParameters(Collection)

        execute(prevResult,currentSampler) Note that either or both of the parameters may be null.

        Calling sequence

        When the test plan is prepared for running, one instance of the class is created for each occurrence of a function call. The setParameters() method is then called on each instance. Once the test is running, the execute method can be called by any thread, and is therefore synchronized. This is unlike most of (all?) the JMeter test elements, which are created for each thread. Any context that needs to be maintained for a thread must be done using ThreadLocal or similar. apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/JexlFunction.java0000644000175000017500000001074012032647221027001 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.apache.commons.jexl.JexlContext; import org.apache.commons.jexl.JexlHelper; import org.apache.commons.jexl.Script; import org.apache.commons.jexl.ScriptFactory; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterContext; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * A function which understands Commons JEXL * @since 2.2 */ // For unit tests, see TestJexlFunction public class JexlFunction extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final String KEY = "__jexl"; //$NON-NLS-1$ private static final List desc = new LinkedList(); static { desc.add(JMeterUtils.getResString("jexl_expression")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt"));// $NON-NLS1$ } private Object[] values; /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { String str = ""; //$NON-NLS-1$ CompoundVariable var = (CompoundVariable) values[0]; String exp = var.execute(); String varName = ""; //$NON-NLS-1$ if (values.length > 1) { varName = ((CompoundVariable) values[1]).execute().trim(); } JMeterContext jmctx = JMeterContextService.getContext(); JMeterVariables vars = jmctx.getVariables(); try { Script script = ScriptFactory.createScript(exp); JexlContext jc = JexlHelper.createContext(); @SuppressWarnings("unchecked") final Map jexlVars = jc.getVars(); jexlVars.put("log", log); //$NON-NLS-1$ jexlVars.put("ctx", jmctx); //$NON-NLS-1$ jexlVars.put("vars", vars); //$NON-NLS-1$ jexlVars.put("props", JMeterUtils.getJMeterProperties()); //$NON-NLS-1$ // Previously mis-spelt as theadName jexlVars.put("threadName", Thread.currentThread().getName()); //$NON-NLS-1$ jexlVars.put("sampler", currentSampler); //$NON-NLS-1$ (may be null) jexlVars.put("sampleResult", previousResult); //$NON-NLS-1$ (may be null) jexlVars.put("OUT", System.out);//$NON-NLS-1$ // Now evaluate the script, getting the result Object o = script.execute(jc); if (o != null) { str = o.toString(); } if (vars != null && varName.length() > 0) {// vars will be null on TestPlan vars.put(varName, str); } } catch (Exception e) { log.error("An error occurred while evaluating the expression \"" + exp + "\"\n",e); } return str; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, 1, 2); values = parameters.toArray(); } }apache-jmeter-2.8/src/functions/org/apache/jmeter/functions/RandomString.java0000644000175000017500000001031512032647221026776 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.jmeter.functions; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jmeter.threads.JMeterVariables; import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; /** * Provides a RandomString function which returns a random String of length (first argument) * using characters (second argument) * @since 2.6 */ public class RandomString extends AbstractFunction { private static final Logger log = LoggingManager.getLoggerForClass(); private static final List desc = new LinkedList(); private static final String KEY = "__RandomString"; //$NON-NLS-1$ static { desc.add(JMeterUtils.getResString("random_string_length")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("random_string_chars_to_use")); //$NON-NLS-1$ desc.add(JMeterUtils.getResString("function_name_paropt")); //$NON-NLS-1$ } private CompoundVariable[] values; private static final int MAX_PARAM_COUNT = 3; private static final int MIN_PARAM_COUNT = 1; private static final int CHARS = 2; private static final int PARAM_NAME = 3; /** * No-arg constructor. */ public RandomString() { super(); } /** {@inheritDoc} */ @Override public synchronized String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException { int length = Integer.parseInt(values[0].execute()); String charsToUse = null;//means no restriction if (values.length >= CHARS) { charsToUse = (values[CHARS - 1]).execute().trim(); if (charsToUse.length() <= 0) { // empty chars, return to null charsToUse = null; } } String myName = "";//$NON-NLS-1$ if (values.length >= PARAM_NAME) { myName = (values[PARAM_NAME - 1]).execute().trim(); } String myValue = null; if(StringUtils.isEmpty(charsToUse)) { myValue = RandomStringUtils.random(length); } else { myValue = RandomStringUtils.random(length, charsToUse); } if (myName.length() > 0) { JMeterVariables vars = getVariables(); if (vars != null) {// Can be null if called from Config item testEnded() method vars.put(myName, myValue); } } if (log.isDebugEnabled()) { String tn = Thread.currentThread().getName(); log.debug(tn + " name:" //$NON-NLS-1$ + myName + " value:" + myValue);//$NON-NLS-1$ } return myValue; } /** {@inheritDoc} */ @Override public synchronized void setParameters(Collection parameters) throws InvalidVariableException { checkParameterCount(parameters, MIN_PARAM_COUNT, MAX_PARAM_COUNT); values = parameters.toArray(new CompoundVariable[parameters.size()]); } /** {@inheritDoc} */ @Override public String getReferenceKey() { return KEY; } /** {@inheritDoc} */ public List getArgumentDesc() { return desc; } }apache-jmeter-2.8/build.properties0000644000175000017500000003437012032647263016651 0ustar ebourgebourg# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # **** External jars (not built as part of JMeter) and needed for build/release **** # N.B. # When updating this file, please also update the versions in # - res/maven/ApacheJMeter_parent.pom # - eclipse.classpath # - xdocs/changes.xml # # Also, please update the lib/ directory ignore list # [Please don't use wild-card versions, because that makes it harder to detect obsolete jars] # property name conventions: # # xxx.jar - name of the jar as used in JMeter # # The following properties are used to download the jars if necessary. # # xxx.loc - example location where the jar or zip can be found (omit trailing /) # xxx.md5 - MD5 hash of the jar (used to check downloads) # # xxx.zip - name of zip file (if the jar is not available as an independent download) # xxx.ent - the jar entry name in Zip file # Note that all the jars (apart from velocity and the Geronimo API jars) # are contained in the JMeter binary release. maven2.repo = http://repo2.maven.org/maven2 apache-bsf.version = 2.4.0 apache-bsf.jar = bsf-${apache-bsf.version}.jar apache-bsf.loc = ${maven2.repo}/bsf/bsf/${apache-bsf.version} apache-bsf.md5 = 16e82d858c648962fb5c959f21959039 apache-jsr223-api.version = 3.1 apache-jsr223-api.jar = bsf-api-${apache-jsr223-api.version}.jar apache-jsr223-api.loc = ${maven2.repo}/org/apache/bsf/bsf-api/${apache-jsr223-api.version} apache-jsr223-api.md5 = 147c6cb39f889f640036f096f8a4bf59 avalon-framework.version = 4.1.4 avalon-framework.jar = avalon-framework-${avalon-framework.version}.jar avalon-framework.loc = ${maven2.repo}/avalon-framework/avalon-framework/${avalon-framework.version} avalon-framework.md5 = 2C5306A09B22BD06A78343C0B55D021F beanshell.version = 2.0b5 beanshell.jar = bsh-${beanshell.version}.jar beanshell.loc = ${maven2.repo}/org/beanshell/bsh/${beanshell.version} beanshell.md5 = 02F72336919D06A8491E82346E10B4D5 # Bouncy Castle jars (compile and test only - not distributed) bcmail.version = 1.45 bcmail.jar = bcmail-jdk15-${bcmail.version}.jar bcmail.loc = ${maven2.repo}/org/bouncycastle/bcmail-jdk15/${bcmail.version} bcmail.md5 = 13321fc7eff7bcada7b4fedfb592025c bcprov.version = 1.45 bcprov.jar = bcprov-jdk15-${bcprov.version}.jar bcprov.loc = ${maven2.repo}/org/bouncycastle/bcprov-jdk15/${bcprov.version} bcprov.md5 = 2062f8e3d15748443ea60a94b266371c commons-codec.version = 1.6 commons-codec.jar = commons-codec-${commons-codec.version}.jar commons-codec.loc = ${maven2.repo}/commons-codec/commons-codec/${commons-codec.version} commons-codec.md5 = 5970f54883b4831b24b97f1125ba27e6 commons-collections.version = 3.2.1 commons-collections.jar = commons-collections-${commons-collections.version}.jar commons-collections.loc = ${maven2.repo}/commons-collections/commons-collections/${commons-collections.version} commons-collections.md5 = 13BC641AFD7FD95E09B260F69C1E4C91 commons-httpclient.version = 3.1 commons-httpclient.jar = commons-httpclient-${commons-httpclient.version}.jar commons-httpclient.loc = ${maven2.repo}/commons-httpclient/commons-httpclient/${commons-httpclient.version} commons-httpclient.md5 = 8AD8C9229EF2D59AB9F59F7050E846A5 commons-io.version = 2.2 commons-io.jar = commons-io-${commons-io.version}.jar commons-io.loc = ${maven2.repo}/commons-io/commons-io/${commons-io.version} commons-io.md5 = 6ad49e3e16c2342e9ee9599ce04775e6 commons-jexl.version = 1.1 commons-jexl.jar = commons-jexl-${commons-jexl.version}.jar commons-jexl.loc = ${maven2.repo}/commons-jexl/commons-jexl/${commons-jexl.version} commons-jexl.md5 = 3F7735D20FCE1DBE05F62FF7A7B178DC commons-jexl2.version = 2.1.1 commons-jexl2.jar = commons-jexl-${commons-jexl2.version}.jar commons-jexl2.loc = ${maven2.repo}/org/apache/commons/commons-jexl/${commons-jexl2.version} commons-jexl2.md5 = 4ad8f5c161dd3a50e190334555675db9 commons-lang.version = 2.6 commons-lang.jar = commons-lang-${commons-lang.version}.jar commons-lang.loc = ${maven2.repo}/commons-lang/commons-lang/${commons-lang.version} commons-lang.md5 = 4d5c1693079575b362edf41500630bbd commons-lang3.version = 3.1 commons-lang3.jar = commons-lang3-${commons-lang3.version}.jar commons-lang3.loc = ${maven2.repo}/org/apache/commons/commons-lang3/${commons-lang3.version} commons-lang3.md5 = 71b48e6b3e1b1dc73fe705604b9c7584 commons-logging.version = 1.1.1 commons-logging.jar = commons-logging-${commons-logging.version}.jar commons-logging.loc = ${maven2.repo}/commons-logging/commons-logging/${commons-logging.version} # Checksum from binary release and Maven differ, but contents of jar are identical #commons-logging.md5 = E2C390FE739B2550A218262B28F290CE commons-logging.md5 = ed448347fc0104034aa14c8189bf37de commons-net.version = 3.1 commons-net.jar = commons-net-${commons-net.version}.jar commons-net.loc = ${maven2.repo}/commons-net/commons-net/${commons-net.version} commons-net.md5 = 23c94d51e72f341fb412d6a015e16313 excalibur-datasource.version = 1.1.1 excalibur-datasource.jar = excalibur-datasource-${excalibur-datasource.version}.jar excalibur-datasource.loc = ${maven2.repo}/excalibur-datasource/excalibur-datasource/${excalibur-datasource.version} excalibur-datasource.md5 = 59A9EDFF1005D70DFA638CF3A4D3AD6D excalibur-instrument.version = 1.0 excalibur-instrument.jar = excalibur-instrument-${excalibur-instrument.version}.jar excalibur-instrument.loc = ${maven2.repo}/excalibur-instrument/excalibur-instrument/${excalibur-instrument.version} excalibur-instrument.md5 = 81BF95737C97A46836EA5F21F7C82719 excalibur-logger.version = 1.1 excalibur-logger.jar = excalibur-logger-${excalibur-logger.version}.jar excalibur-logger.loc = ${maven2.repo}/excalibur-logger/excalibur-logger/${excalibur-logger.version} excalibur-logger.md5 = E8246C546B7B0CAFD65947E9B80BB884 excalibur-pool.version = 1.2 excalibur-pool.jar = excalibur-pool-${excalibur-pool.version}.jar excalibur-pool.loc = ${maven2.repo}/excalibur-pool/excalibur-pool/${excalibur-pool.version} excalibur-pool.md5 = 0AF05C8811A2912D62D6E189799FD518 # Common file containing both htmlparser and htmllexer jars htmlparser.version = 2.1 htmllexer.loc = ${maven2.repo}/org/htmlparser/htmllexer/${htmlparser.version} htmllexer.jar = htmllexer-${htmlparser.version}.jar htmllexer.md5 = 1cb7184766a0c52f4d98d671bb08be19 htmlparser.loc = ${maven2.repo}/org/htmlparser/htmlparser/${htmlparser.version} htmlparser.jar = htmlparser-${htmlparser.version}.jar htmlparser.md5 = aa05b921026c228f92ef8b4a13c26f8d # Apache HttpClient 4.x httpclient.version = 4.2.1 # httpclient.jar = httpclient-${httpclient.version}.jar httpclient.loc = ${maven2.repo}/org/apache/httpcomponents/httpclient/${httpclient.version} httpclient.md5 = 54b09b6e45ff3e2adf0409aa6e652a8d # Required for HttpClient httpmime.jar = httpmime-${httpclient.version}.jar httpmime.loc = ${maven2.repo}/org/apache/httpcomponents/httpmime/${httpclient.version} httpmime.md5 = debbb029073ed28c3a69530cb8e14ef5 # Required for HttpClient httpcore.version = 4.2.2 httpcore.jar = httpcore-${httpcore.version}.jar httpcore.loc = ${maven2.repo}/org/apache/httpcomponents/httpcore/${httpcore.version} httpcore.md5 = 23019b3f95c2c39097c2fce3944bd503 jakarta-oro.version = 2.0.8 jakarta-oro.jar = oro-${jakarta-oro.version}.jar jakarta-oro.loc = ${maven2.repo}/oro/oro/${jakarta-oro.version} jakarta-oro.md5 = 42E940D5D2D822F4DC04C65053E630AB jcharts.version = 0.7.5 jcharts.jar = jcharts-${jcharts.version}.jar jcharts.loc = ${maven2.repo}/jcharts/jcharts/${jcharts.version} jcharts.md5 = 13927D8077C991E7EBCD8CB284746A7A jdom.version = 1.1.2 jdom.jar = jdom-${jdom.version}.jar jdom.loc = ${maven2.repo}/org/jdom/jdom/${jdom.version} jdom.md5 = 742bb15c2eda90dff56e3d82cf40cd13 js_rhino.version = 1.7R3 js_rhino.jar = rhino-${js_rhino.version}.jar js_rhino.loc = ${maven2.repo}/org/mozilla/rhino/${js_rhino.version} js_rhino.md5 = 9dbdb24663f20db43a2c29467c13a204 junit.version = 4.10 junit.jar = junit-${junit.version}.jar junit.loc = ${maven2.repo}/junit/junit/${junit.version} junit.md5 = 68380001b88006ebe49be50cef5bb23a logkit.version = 2.0 logkit.jar = logkit-${logkit.version}.jar logkit.loc = ${maven2.repo}/logkit/logkit/${logkit.version} logkit.md5 = 8D82A3E91AAE216D0A2A40B837A232FF soap.version = 2.3.1 soap.jar = soap-${soap.version}.jar soap.loc = ${maven2.repo}/soap/soap/${soap.version} soap.md5 = AA1845E01FEE94FE4A63BBCAA55AD486 tidy.version = r938 tidy.jar = jtidy-${tidy.version}.jar tidy.loc = ${maven2.repo}/net/sf/jtidy/jtidy/${tidy.version} tidy.md5 = 6A9121561B8F98C0A8FB9B6E57F50E6B # XStream can be found at: http://xstream.codehaus.org/ xstream.version = 1.4.2 xstream.jar = xstream-${xstream.version}.jar xstream.loc = ${maven2.repo}/com/thoughtworks/xstream/xstream/${xstream.version} xstream.md5 = 23947B036DD0D9CD23CB2F388C373181 # XMLPull is required by XStream 1.4.x xmlpull.version = 1.1.3.1 xmlpull.jar = xmlpull-${xmlpull.version}.jar xmlpull.loc = ${maven2.repo}/xmlpull/xmlpull/${xmlpull.version} xmlpull.md5 = cc57dacc720eca721a50e78934b822d2 xpp3.version = 1.1.4c xpp3.jar = xpp3_min-${xpp3.version}.jar xpp3.loc = ${maven2.repo}/xpp3/xpp3_min/${xpp3.version} xpp3.md5 = DCD95BCB84B09897B2B66D4684C040DA # Xalan can be found at: http://xml.apache.org/xalan-j/ xalan.version = 2.7.1 xalan.jar = xalan-${xalan.version}.jar xalan.loc = ${maven2.repo}/xalan/xalan/${xalan.version} xalan.md5 = D43AAD24F2C143B675292CCFEF487F9C serializer.version = 2.7.1 serializer.jar = serializer-${serializer.version}.jar serializer.loc = ${maven2.repo}/xalan/serializer/${serializer.version} # Checksum from binary release and Maven differ, but contents of jar are identical (apart from non-essential comment) #serializer.md5 = F0FA654C1EA1186E9A5BD56E48E0D4A3 serializer.md5 = a6b64dfe58229bdd810263fa0cc54cff # Xerces can be found at: http://xerces.apache.org/xerces2-j/ xerces.version = 2.9.1 xerces.jar = xercesImpl-${xerces.version}.jar xerces.loc = ${maven2.repo}/xerces/xercesImpl/${xerces.version} # Checksum from binary release and Maven differ, but contents of jar are identical (apart from EOLs in text files) #xerces.md5 = DA09B75B562CA9A8E9A535D2148BE8E4 xerces.md5 = f807f86d7d9db25edbfc782aca7ca2a9 xml-apis.version = 1.3.04 xml-apis.jar = xml-apis-${xml-apis.version}.jar xml-apis.loc = ${maven2.repo}/xml-apis/xml-apis/${xml-apis.version} xml-apis.md5 = 9AE9C29E4497FC35A3EADE1E6DD0BBEB # Codecs were previously provided by Batik xmlgraphics-commons.version = 1.3.1 xmlgraphics-commons.jar = xmlgraphics-commons-${xmlgraphics-commons.version}.jar xmlgraphics-commons.loc = ${maven2.repo}/org/apache/xmlgraphics/xmlgraphics-commons/${xmlgraphics-commons.version} xmlgraphics-commons.md5 = E63589601D939739349A50A029DAB120 # JavaMail jars (N.B. these are available under CDDL) activation.version = 1.1.1 activation.jar = activation-${activation.version}.jar activation.loc = ${maven2.repo}/javax/activation/activation/${activation.version} activation.md5 = 46a37512971d8eca81c3fcf245bf07d2 javamail.version = 1.4.4 javamail.jar = mail-${javamail.version}.jar javamail.loc = ${maven2.repo}/javax/mail/mail/${javamail.version} javamail.md5 = f30453ae9ee252c802d349009742065f # Geronimo JMS jar jms.version = 1.1.1 jms.jar = geronimo-jms_1.1_spec-${jms.version}.jar jms.loc = ${maven2.repo}/org/apache/geronimo/specs/geronimo-jms_1.1_spec/${jms.version} jms.md5 = d80ce71285696d36c1add1989b94f084 # The following jars are only needed for source distributions # They are used for building the documentation velocity.version = 1.7 velocity.jar = velocity-${velocity.version}.jar velocity.loc = ${maven2.repo}/org/apache/velocity/velocity/${velocity.version} velocity.md5 = 3692dd72f8367cb35fb6280dc2916725apache-jmeter-2.8/eclipse.readme0000644000175000017500000001003512032647263016227 0ustar ebourgebourg Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Eclipse settings ---------------- The following files should be excluded from build output: *.metaprops See Preferences/Java/Building/Output Folder/Filtered Resources Eclipse.classpath ----------------- [This has been tested with Eclipse 3.2. It may not work with other versions.] The file eclipse.classpath is intended as a starter .classpath file for building JMeter using Eclipse version 3. Make sure to execute the ant download_jars task to download and install the jars referred to in the classpath before creating the Eclipse project. Note that Eclipse does not handle RMI compilations, nor is it easy to use for creating jar files. However, it is easy to use Eclipse to run Ant. The following targets may prove useful: compile-rmi - compiles the RMI files that Eclipse ignores package-only - creates the jars package - compiles everything and then packages it run_gui - compiles, packages, and then start the JMeter GUI from the jars Invoking Ant targets inside Eclipse ---------------------------------- You can use the "Run As --> Ant Build" and select target, or you can use the "Windows->Show View->Ant View". Then select the "build.xml" file and drag and drop to the "Ant View". Now you can invoke targets by clicking on them. Note that if you invoke for example the "compile" target, and get error messages about " Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK " it just means that your Eclipse project is set up with JRE libraries instead of JDK libraries. The suggested fix is to add a JDK in "Window->Preferences->Java->Installed JREs". Then do a "Project->Properties" and select "Java Build Path" in the left pane, and then select the "Libraries" tab in the right pane. Scroll to the bottom, select the "JRE System Library", and click "Remove". Then click "Add library..." , select "JRE System Library", and then select the JDK. Now it should work when you invoke the "compile" target. Finishing the build using Ant ----------------------------- Find the build.xml file in the project, right click on it, and click "Run As --> Ant Build". Make sure you select the "package" target. This will compile any remaining classes (e.g. the RMI ones), and then create all the jars. Now refresh the project (you should add this to the Ant build properties) Launching from Eclipse ---------------------- You can use the Ant target run_gui to run the JMeter GUI, or you can follow the instructions below to add a Java Application launch, which will for example, allow you to use the debugger to run JMeter. These instructions assume you have configured Eclipse to use the classpath as suggested in eclipse.classpath, and have run "ant package" to compile the RMI classes and build the jars. Create a new Java Application launch configuration. On the Main tab, enter the following as the main class: org.apache.jmeter.NewDriver On the Arguments tab, in the Working Directory area, pick the radio button next to "Other" and enter the following in the text box: ${workspace_loc}/jmeterproject/bin where "jmeterproject" is the name of the JMeter project. [It would be nicer to use ${project_loc}/bin but unfortunately the Eclipse Debug view does not seem to preserve any of the project variables] apache-jmeter-2.8/extras/0000755000175000017500000000000012165514774014742 5ustar ebourgebourgapache-jmeter-2.8/extras/jmeter.fb0000644000175000017500000000251412032647262016533 0ustar ebourgebourg[Jar files] bin/apachejmeter.jar lib/ext/apachejmeter_components.jar lib/ext/apachejmeter_core.jar lib/ext/apachejmeter_ftp.jar lib/ext/apachejmeter_functions.jar lib/ext/apachejmeter_http.jar lib/ext/apachejmeter_java.jar lib/ext/apachejmeter_jdbc.jar lib/ext/apachejmeter_ldap.jar lib/ext/apachejmeter_mail.jar lib/ext/apachejmeter_monitors.jar lib/ext/apachejmeter_tcp.jar lib/jorphan.jar [Source dirs] src/components src/core src/examples src/functions src/htmlparser src/jorphan src/monitor/components src/monitor/model src/protocol/ftp src/protocol/html src/protocol/java src/protocol/jdbc src/protocol/ldap src/protocol/mail src/protocol/tcp [Aux classpath entries] lib/avalon-framework-4.1.4.jar lib/batik-awt-util.jar lib/commons-collections.jar lib/commons-httpclient-2.0.jar lib/commons-logging.jar lib/excalibur-compatibility-1.1.jar lib/excalibur-datasource-1.1.1.jar lib/excalibur-i18n-1.1.jar lib/excalibur-instrument-1.0.jar lib/excalibur-logger-1.1.jar lib/excalibur-pool-1.2.jar lib/htmlparser.jar lib/jakarta-oro-2.0.8.jar lib/jdom-b9.jar lib/js.jar lib/junit.jar lib/logkit-1.2.jar lib/soap.jar lib/tidy.jar lib/velocity-1.4-dev.jar lib/xalan.jar lib/xercesimpl.jar lib/xml-apis.jar lib/xpp3-1.1.3.4.d.jar lib/xstream-1.0.1.jar lib/opt/activation.jar lib/opt/bsf.jar lib/opt/bsh-2.0b1.jar lib/opt/mail.jar [Options] relative_paths=true apache-jmeter-2.8/extras/schematic.cmd0000644000175000017500000000204112032647262017354 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem Drop a JMX file on this script to create a schematic of the test plan as an HTML file cd /d %~dp0 set name=%~n1 if .%1 ==. set name=Test call ant -f schematic.xml -Dtest=%name% pauseapache-jmeter-2.8/extras/collapse.png0000644000175000017500000000166212032647262017247 0ustar ebourgebourg‰PNG  IHDRóÿasRGB®ÎébKGD´ jmúE pHYs  šœtIMEÜ !;)®»mùtEXtCommentLicensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.…E·-IDAT8ËcT+YöŸÀÄ@!5€ ° snvG¥I½t9õ\À8š†ƒ×qŸ¤Ì>ŒIEND®B`‚apache-jmeter-2.8/extras/ConvertHTTPSampler.txt0000644000175000017500000000067512032647262021147 0ustar ebourgebourg=== HTTPSampler to HTTPSampler2 convertion === If the testcase was created with an old version, load it into 2.1.1 and save it. Edit the testcase and replace the following: Old === ... New === ... apache-jmeter-2.8/extras/proxycert.cmd0000644000175000017500000000236512032647262017464 0ustar ebourgebourg@echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor license agreements. See the NOTICE file distributed with rem this work for additional information regarding copyright ownership. rem The ASF licenses this file to You under the Apache License, Version 2.0 rem (the "License"); you may not use this file except in compliance with rem the License. You may obtain a copy of the License at rem rem http://www.apache.org/licenses/LICENSE-2.0 rem rem Unless required by applicable law or agreed to in writing, software rem distributed under the License is distributed on an "AS IS" BASIS, rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. rem See the License for the specific language governing permissions and rem limitations under the License. rem Generate proxyserver certificate for JMeter set DNAME="cn=JMeter Proxy, ou=JMeter, o=Apache Software Foundation, c=US" rem generate the keystore with the certificate keytool -genkey -alias jmeter -keystore proxyserver.jks -keypass password -storepass password -validity 1825 -keyalg RSA -dname %DNAME% rem show the contents keytool -list -v -keystore proxyserver.jks -storepass password apache-jmeter-2.8/extras/remote.bsh0000644000175000017500000000260212032647262016723 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // remote.bsh // Sample remote file for use with bshclient // // Usage: // java -jar ../lib/bshclent.jar localhost 9000 ../extras/bsh.remote [arg1 arg2 ...] // Note: port 9000 is specified, but the jar actually uses 9001 (telnet) // print("remote.bsh starting"); if (args.length > 0){ print("Arguments:"); print(args); } printsysprop("user.home"); printsysprop("user.dir"); printprop("log_level.jmeter"); printprop("log_level.jorphan"); // loglevel("DEBUG","jmeter"); for(i=0;i<10;i++){ setprop("EXAMPLE",i.toString()); Thread.sleep(1000); } printprop("EXAMPLE"); print("remote.bsh ended");apache-jmeter-2.8/extras/printvars.bsh0000644000175000017500000000203712032647262017462 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // Sample script to print JMeter variables print(">>>>"); Iterator i = vars.getIterator(); while(i.hasNext()) { Map.Entry me = i.next(); if(String.class.equals(me.getValue().getClass())){ print(me); } } print("<<<<"); apache-jmeter-2.8/extras/Test.jmx0000644000175000017500000002120712032647262016373 0ustar ebourgebourg false false Sample test for demonstrating JMeter Ant build script and Schematic stylesheet 1143889321000 3 false 5 false 1143889321000 continue 1 1 1000 C false 1000000 = 100 Sleep_Time = 0xFF Sleep_Mask = Label = 200 ResponseCode = OK ResponseMessage = OK Status = Request SamplerData = Response C=${C} ResultData org.apache.jmeter.protocol.java.test.JavaTest 3 Assertion.response_data 6 false = 100 Sleep_Time = 0xFF Sleep_Mask = Label = 200 ResponseCode = OK ResponseMessage = OK Status = Request SamplerData = Response C=${C} Tn=${__threadNum} ResultData org.apache.jmeter.protocol.java.test.JavaTest apache-jmeter-2.8/extras/addons.txt0000644000175000017500000000215012032647262016741 0ustar ebourgebourgThis file describes how to create local additions to JMeter. Create a new directory for the sources: cd JMETER_HOME mkdir addons Copy addons.xml into JMETER_HOME To build the addons, run ant as follows: ant -buildfile=addons.xml This will compile the sources to build/addons/... If successful, it will also create the jar file: JMETER_HOME/lib/ext/ApacheJmeter_addons.jar As the filename of this jar is alphabetically earlier, any classes in it will be used in preference to existing JMeter classes. This allows the addons to be used to supply new functionality as well as overriding existing functionality, without needing to rebuild JMeter. Such addons are intended mainly to be used locally - for example if you have developed any new code that is only relevant to your organisation. It can also be useful for developing general purpose add-ons that are intended for general release. Once tested, these can be moved into one of the normal JMeter source directories. N.B. The build file assumes that JMeter has been built separately, as JMeter classes are resolved from jars in the lib and lib/ext directories. apache-jmeter-2.8/extras/convertjmx.fdl0000644000175000017500000000215212032647262017620 0ustar ebourgebourg! Licensed to the Apache Software Foundation (ASF) under one or more ! contributor license agreements. See the NOTICE file distributed with ! this work for additional information regarding copyright ownership. ! The ASF licenses this file to You under the Apache License, Version 2.0 ! (the "License"); you may not use this file except in compliance with ! the License. You may obtain a copy of the License at ! ! http://www.apache.org/licenses/LICENSE-2.0 ! ! Unless required by applicable law or agreed to in writing, software ! distributed under the License is distributed on an "AS IS" BASIS, ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ! See the License for the specific language governing permissions and ! limitations under the License. ! ! Convert JMX files so Java can read them on OpenVMS ! ================================================== ! ! This will be needed if the JMX is in VARIABLE format. ! ! Usage: ! CONVERT/FDL=CONVERTJMX input.jmx output.jmx ! ! RECORD CARRIAGE_CONTROL carriage_return FORMAT stream_lfapache-jmeter-2.8/extras/jmeter-results-report_21.xsl0000644000175000017500000002257712032647262022277 0ustar ebourgebourg <xsl:value-of select="$titleReport" />

        Date report: Designed for use with JMeter and Ant.

        Summary

        Failure
        # Samples Failures Success Rate Average Time Min Time Max Time

        Pages

        Failure
        URL # Samples Failures Success Rate Average Time Min Time Max Time

        Failure Detail

        Response Failure Message
        -
        NaN NaN
        apache-jmeter-2.8/extras/expand.png0000644000175000017500000000170012032647262016715 0ustar ebourgebourg‰PNG  IHDRóÿasRGB®ÎébKGD´ jmúE pHYs  šœtIMEÜ -·’F‚ùtEXtCommentLicensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.…E·;IDAT8ËcT+YöŸÀÄ@! ­7»#nvGe/‘£‘a@½t9\€-Ðmî±04½—‚“8‰b†IEND®B`‚apache-jmeter-2.8/extras/startup.bsh0000644000175000017500000000533712032647262017142 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ // // Sample BeanShell Server Startup file // // Use as follows: // -Jbeanshell.server.port=nnnn // -Jbeanshell.server.file=../extras/startup.bsh // // Defines various utility routines for properties and logging // // // Stop exit() from calling System.exit(); bsh.system.shutdownOnExit = false; print("Startup script running"); import org.apache.jmeter.util.JMeterUtils; import org.apache.jorphan.logging.LoggingManager; getprop(p){// get a JMeter property return JMeterUtils.getPropDefault(p,""); } setprop(p,v){// set a JMeter property print("Setting property '"+p+"' to '"+v+"'."); JMeterUtils.getJMeterProperties().setProperty(p, v); } printprop(p){// print a JMeter property print(p + " = " + getprop(p)); } loglevel(String priority, String category){ LoggingManager.setPriority(priority, category); } logdebug(String text){ loglevel("DEBUG",text); } loginfo(String text){ loglevel("INFO",text); } // Define routines to stop the test or a thread stopEngine(){// Stop the JMeter test print("Stop Engine called"); org.apache.jmeter.engine.StandardJMeterEngine.stopEngine(); } stopEngineNow(){// Stop the JMeter test now print("Stop Engine NOW called"); org.apache.jmeter.engine.StandardJMeterEngine.stopEngineNow(); } stopThread(t){// Stop a JMeter thread print("Stop Thread "+t+" called"); ok=org.apache.jmeter.engine.StandardJMeterEngine.stopThread(t); if (ok){print("Thread requested to stop");} else { print("Thread not found");} } stopThreadNow(t){// Stop a JMeter thread print("Stop Thread Now "+t+" called"); ok=org.apache.jmeter.engine.StandardJMeterEngine.stopThreadNow(t); if (ok){print("Thread stopped");} else { print("Thread not found");} } getsysprop(p){// get a system property return System.getProperty(p,""); } setsysprop(p,v){// set a system property print("Setting property '"+p+"' to '"+v+"'."); System.setProperty(p, v); } printsysprop(p){// print a system property print(p + " = " + getsysprop(p)); } print("Startup script completed");apache-jmeter-2.8/extras/jmeter-results-report.xsl0000644000175000017500000002170212032647262021762 0ustar ebourgebourg Load Test Results

        Load Test Results

        Designed for use with JMeter and Ant.

        Summary

        Failure
        Tests Failures Success Rate Average Time Min Time Max Time

        Pages

        Failure
        URL Tests Failures Success Rate Average Time Min Time Max Time

        Failure Detail

        Response Failure Message
        -
        NaN NaN
        apache-jmeter-2.8/extras/proxycert.sh0000644000175000017500000000230612032647262017326 0ustar ebourgebourg#!/bin/sh ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## Generate proxyserver certificate for JMeter DNAME="cn=JMeter Proxy, ou=JMeter, o=Apache Software Foundation, c=US" ## generate the keystore with the certificate keytool -genkey -alias jmeter -keystore proxyserver.jks -keypass password -storepass password -validity 1825 -keyalg RSA -dname ${DNAME} ## show the contents keytool -list -v -keystore proxyserver.jks -storepass password apache-jmeter-2.8/extras/execcode.bsh0000644000175000017500000000241612032647262017212 0ustar ebourgebourg/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ /** Start an external application using the Java Runtime exec() method. Display any output to the standard BeanShell output using print(). Return the process exit code. Note: does not display stderr. */ bsh.help.execcode = "usage: execcode( String arg )"; int execcode( String arg ) { this.proc = Runtime.getRuntime().exec(arg); this.din = new DataInputStream( proc.getInputStream() ); while( (line=din.readLine()) != null ) { print(line); } return this.proc.waitFor(); } apache-jmeter-2.8/extras/schematic.xsl0000644000175000017500000000757512032647262017440 0ustar ebourgebourg Test Plan Schematic


        Threads: Loops: Ramp up:

        :// : /

        Output: XML:

        ( SimpleController : )
        apache-jmeter-2.8/extras/addons.xml0000644000175000017500000000511112032647262016722 0ustar ebourgebourg apache-jmeter-2.8/extras/jmeter-results-detail-report.xsl0000644000175000017500000003141512032647262023224 0ustar ebourgebourg Load Test Results

        Load Test Results

        Designed for use with JMeter and Ant.

        Summary

        Failure
        Tests Failures Success Rate Average Time Min Time Max Time

        Pages

        Failure page_details_
        URL Tests Failures Success Rate Average Time Min Time Max Time
        # javascript:change('page_details_') expand/collapsepage_details__image
        Details for Page ""
        Thread Iteration Time Success
        ms

        Failure Detail

        Response Failure Message Response Data
        -
        NaN NaN
        apache-jmeter-2.8/extras/schematic.xml0000644000175000017500000000236412032647262017421 0ustar ebourgebourg To create the schematic report: ant -Dtest=script apache-jmeter-2.8/extras/build.xml0000644000175000017500000001337612032647262016565 0ustar ebourgebourg Sample build file for use with ant-jmeter.jar See http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php To run a test and create the output report: ant -Dtest=script To run a test only: ant -Dtest=script run To run report on existing test output ant -Dtest=script report The "script" parameter is the name of the script without the .jmx suffix. Additional options: -Dshow-data=y - include response data in Failure Details -Dtestpath=xyz - path to test file(s) (default user.dir). N.B. Ant interprets relative paths against the build file -Djmeter.home=.. - path to JMeter home directory (defaults to parent of this build file) -Dreport.title="My Report" - title for html report (default is 'Load Test Results') Deprecated: -Dformat=2.0 - use version 2.0 JTL files rather than 2.1 funcMode = ${funcMode} Report generated at ${report.datestamp} Cannot find all xalan and/or serialiser jars The XSLT formatting may not work correctly. Check you have xalan and serializer jars in ${lib.dir} apache-jmeter-2.8/extras/jmeter-results-detail-report_21.xsl0000644000175000017500000003206312032647262023526 0ustar ebourgebourg <xsl:value-of select="$titleReport" />

        Date report: Designed for use with JMeter and Ant.

        Summary

        Failure
        # Samples Failures Success Rate Average Time Min Time Max Time

        Pages

        Failure page_details_
        URL # Samples Failures Success Rate Average Time Min Time Max Time
        # javascript:change('page_details_') expand/collapsepage_details__image
        Details for Page ""
        Thread Iteration Time (milliseconds) Bytes Success

        Failure Detail

        Response Failure Message Response Data
        -
        NaN NaN
        apache-jmeter-2.8/fb-excludes.xml0000644000175000017500000000561312032647263016355 0ustar ebourgebourg --> apache-jmeter-2.8/build.xml0000644000175000017500000033727412032650352015257 0ustar ebourgebourg N.B. To build JMeter from a release you need both the binary and source archives, and these must be unpacked into the same directory structure. To download additional jars needed for building the code and documentation: ant download_jars To build JMeter from source: ant [install] To rebuild: ant clean install To update documentation ant docs-site ant docs-printable To build API documentation (Javadoc) ant docs-api To build all the docs ant docs-all To build all and package up the files for distribution ant distribution -Djmeter.version=vvvv [-Dsvn.revision=nnnnn] Add -Ddisable-svnCheck=true to disable svn check, if you build from src archive or offline Add -Ddisable-check-versions=true to disable matching current svn revision and JMeterVersion.java, if you want build your own custom JMeter package. To create a nightly build (separate bin/src/lib jars): ant nightly [-Dsvn.revision=nnnnn] To create tar and tgz of the web-site documentation (docs and api) ant site [ -Djmeter.version=vvvv ] For more info: ant -projecthelp To diagnose usage of deprecated APIs: ant -Ddeprecation=on clean compile jmeter.version = ${jmeter.version} display.version = ${display.version} implementation.version = ${implementation.version} svn.revision = ${svn.revision} jmeter.version = ${jmeter.version} display.version = ${display.version} implementation.version = ${implementation.version} eclipse.anakia = ${eclipse.anakia} AnakiaTask is not present, documentation will not be generated. Velocity version appears to be older than 1.5: the documentation may be generated with incorrect line endings. Cannot find all the required 3rd party libraries. If building from a release, you can get most of them from the binary archive. Use "ant download_jars" to download any missing jars. Converting work files to eol=${eoltype} in ${workdir} Creating JMeter distribution ${dist.name} ${svn.revision} Updating POM files to version ${jmeter.version} Copying jar files ready for signing Gump properties for this run jmeter.version = ${jmeter.version} gump.run = ${gump.run} date.projectfile = ${date.projectfile} version.projectfile = ${version.projectfile} Build file: version.build = ${version.build} Java properties: target.java.version = ${target.java.version} src.java.version = ${src.java.version} optimize = ${optimize} deprecation = ${deprecation} encoding = ${encoding} Updating overview to ${docversion} Fixing EOL Removing unnecessary </br> tags Copying files Fixing EOL Removing unnecessary </br> tags Copying files Error detected in server log file. See above. CSV Files are not identical. ${batchtest.inp}${file.separator}${batchtest.name}.csv ${batchtest.out}${file.separator}${batchtest.name}.csv XML Files are not identical. ${batchtest.inp}${file.separator}${batchtest.name}.xml ${batchtest.out}${file.separator}${batchtest.name}.xml ${batchtest.name} output files compared OK Error detected in log file. See above. gump.run = ${gump.run} java.awt.headless = ${java.awt.headless} test.headless = ${test.headless} user.dir = ${user.dir} basedir = ${basedir} test dir = ${build.test} test dir gump = ${build.test.gump} testsaveservice.saveout = ${testsaveservice.saveout} test.encoding = ${test.encoding} Checking ${jar} Bad Checksum: for ${file} expected ${md5} actual ${MD5}

    The Apache JMeter&trade; desktop application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.

    What can I do with it?

    Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.

    What does it do?

    Apache JMeter features include:

    • Can load and performance test many different server types:
      • Web - HTTP, HTTPS
      • SOAP
      • Database via JDBC
      • LDAP
      • JMS
      • Mail - SMTP(S), POP3(S) and IMAP(S)
      • Native commands or shell scripts
    • Complete portability and 100% Java purity.
    • Full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.
    • Careful GUI design allows faster operation and more precise timings.
    • Caching and offline analysis/replaying of test results.
    • Highly Extensible:
      • Pluggable Samplers allow unlimited testing capabilities.
      • Several load statistics may be choosen with pluggable timers.
      • Data analysis and visualization plugins allow great extensibility as well as personalization.
      • Functions can be used to provide dynamic input to a test or provide data manipulation.
      • Scriptable Samplers (BeanShell is fully supported; and there is a sampler which supports BSF-compatible languages)

    JMeter is not a browser

    JMeter is not a browser. As far as web-services and remote services are concerned, JMeter looks like a browser (or rather, multiple browsers); however JMeter does not perform all the actions supported by browsers. In particular, JMeter does not execute the Javascript found in HTML pages. Nor does it render the HTML pages as a browser does (it's possible to view the response as HTML etc, but the timings are not included in any samples, and only one sample in one thread is ever viewed at a time).

    How do I do it?

    Tutorials (PDF)

    Further Information About JMeter